summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/antykwa-math.lfg6
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/bonum-math.lfg16
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/cambria-math.lfg3
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/common-math-jmn.lfg8
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/common-math.lfg14
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/concrete-math.lfg6
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/dejavu-math.lfg6
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/ebgaramond-math.lfg3
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/erewhon-math.lfg14
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/euler-math.lfg3
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/generic-math.lfg5
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/gfsneohellenic-math.lfg6
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/iwona-math.lfg6
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/koeielettersot.lfg16
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/kpfonts-math.lfg5
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/kpfonts-text.lfg9
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/kurier-math.lfg3
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/libertinus-math.lfg21
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/lucida-math.lfg309
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/lucida-text.lfg69
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/lucida-typeone-math.lfg348
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/minion-math.lfg3
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/modern-math.lfg13
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/newcomputermodern-math.lfg396
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/pagella-math.lfg9
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/schola-math.lfg6
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/stixtwo-math.lfg50
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/termes-math.lfg8
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/type-imp-antykwa.mkiv2
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/type-imp-arsenal.mkiv33
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/type-imp-cambria.mkiv75
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/type-imp-concrete.mkiv4
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/type-imp-erewhon.mkiv5
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/type-imp-husayni.mkiv3
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/type-imp-koeielettersot.mkiv185
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/type-imp-kpfonts.mkiv100
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/type-imp-lato.mkiv27
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/type-imp-libertinus.mkiv6
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/type-imp-lucida-typeone.mkiv136
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/type-imp-lucida.mkiv108
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/type-imp-newcomputermodern.mkiv8
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/type-imp-plex.mkiv22
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/type-imp-stix.mkiv2
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/type-imp-uprightonly.mkiv55
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/type-imp-xcharter.mkiv5
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/xcharter-math.lfg3
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkiv/xits-math.lfg3
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkxl/notosans-math.lfg312
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkxl/type-imp-euler.mkxl8
-rw-r--r--Master/texmf-dist/tex/context/fonts/mkxl/type-imp-noto.mkxl74
-rw-r--r--Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.0.tex112
-rw-r--r--Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.1.2.tex112
-rw-r--r--Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.2.7.tex112
-rw-r--r--Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.4.6.tex112
-rw-r--r--Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex12
-rw-r--r--Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv-cs.tex2
-rw-r--r--Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv-def.tex2
-rw-r--r--Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv-pop.tex2
-rw-r--r--Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv.tex2
-rw-r--r--Master/texmf-dist/tex/context/third/markdown/t-markdown.tex163
-rw-r--r--Master/texmf-dist/tex/context/third/markdown/t-markdownthemewitiko_markdown_defaults.tex4
-rw-r--r--Master/texmf-dist/tex/context/third/memoize/t-memoizable.tex4
-rw-r--r--Master/texmf-dist/tex/context/third/memoize/t-memoize.tex99
-rw-r--r--Master/texmf-dist/tex/context/third/memoize/t-nomemoize.tex4
-rw-r--r--Master/texmf-dist/tex/context/third/pocketdiary/PocketDiary.mkiv4
-rw-r--r--Master/texmf-dist/tex/context/third/pocketdiary/t-pocketdiary.mkiv34
-rw-r--r--Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono-ExtraLight.fontspec8
-rw-r--r--Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono-Light.fontspec8
-rw-r--r--Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono-SemiLight.fontspec8
-rw-r--r--Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiacode-extralight.fontspec8
-rw-r--r--Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiacode-light.fontspec8
-rw-r--r--Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiacode-semilight.fontspec8
-rw-r--r--Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiacode.fontspec8
-rw-r--r--Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiamono-otf.sty29
-rw-r--r--Master/texmf-dist/tex/generic/babel-german/austrian.ldf2
-rw-r--r--Master/texmf-dist/tex/generic/babel-german/german.ldf2
-rw-r--r--Master/texmf-dist/tex/generic/babel-german/germanb.ldf2
-rw-r--r--Master/texmf-dist/tex/generic/babel-german/naustrian.ldf2
-rw-r--r--Master/texmf-dist/tex/generic/babel-german/ngerman.ldf2
-rw-r--r--Master/texmf-dist/tex/generic/babel-german/ngermanb.ldf29
-rw-r--r--Master/texmf-dist/tex/generic/babel-german/nswissgerman.ldf2
-rw-r--r--Master/texmf-dist/tex/generic/babel-german/swissgerman.ldf2
-rw-r--r--Master/texmf-dist/tex/generic/babel-italian/italian.ldf8
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua6
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua27
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-buddhist.tex2
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-chinese.tex2
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-coptic.tex2
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-ethiopic.tex2
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex4
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-islamic.tex2
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-persian.tex2
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua265
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua4
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-transforms.lua86
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.def338
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.sty811
-rw-r--r--Master/texmf-dist/tex/generic/babel/blplain.tex2
-rw-r--r--Master/texmf-dist/tex/generic/babel/bplain.tex2
-rw-r--r--Master/texmf-dist/tex/generic/babel/errbabel.def28
-rw-r--r--Master/texmf-dist/tex/generic/babel/hyphen.cfg10
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/arq/babel-algerianarabic.tex12
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/arq/babel-arq.ini140
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ckb/babel-ckb.ini36
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/cy/babel-cy.ini6
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/el/babel-el-polyton.ini6
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/el/babel-el.ini6
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/el/babel-greek.tex4
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/el/babel-polytonicgreek.tex4
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-BE.ini24
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-CA.ini16
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr.ini26
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/grc/babel-ancientgreek.tex4
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/grc/babel-grc.ini6
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/isv/babel-interslavic.tex12
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/isv/babel-isv.ini139
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ja/babel-ja.ini10
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/kmr/babel-kmr.ini2
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ku/babel-ku.ini212
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ku/babel-kurdish.tex12
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/lrc/babel-lrc.ini53
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/mzn/babel-mzn.ini47
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/oui/babel-olduighur.tex12
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/oui/babel-oui.ini122
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ps/babel-ps.ini40
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-HK.ini32
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-MO.ini32
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-SG.ini32
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans.ini32
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-HK.ini32
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-MO.ini32
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant.ini32
-rw-r--r--Master/texmf-dist/tex/generic/babel/luababel.def281
-rw-r--r--Master/texmf-dist/tex/generic/babel/nil.ldf4
-rw-r--r--Master/texmf-dist/tex/generic/babel/plain.def2
-rw-r--r--Master/texmf-dist/tex/generic/babel/switch.def2
-rw-r--r--Master/texmf-dist/tex/generic/babel/txtbabel.def2
-rw-r--r--Master/texmf-dist/tex/generic/babel/xebabel.def32
-rw-r--r--Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex8
-rw-r--r--Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex142
-rw-r--r--Master/texmf-dist/tex/generic/circuitikz/pgfcirccurrent.tex8
-rw-r--r--Master/texmf-dist/tex/generic/circuitikz/pgfcircflow.tex8
-rw-r--r--Master/texmf-dist/tex/generic/circuitikz/pgfcirclabel.tex8
-rw-r--r--Master/texmf-dist/tex/generic/circuitikz/pgfcircmonopoles.tex59
-rw-r--r--Master/texmf-dist/tex/generic/circuitikz/pgfcircmultipoles.tex8
-rw-r--r--Master/texmf-dist/tex/generic/circuitikz/pgfcircpath.tex8
-rw-r--r--Master/texmf-dist/tex/generic/circuitikz/pgfcircquadpoles.tex355
-rw-r--r--Master/texmf-dist/tex/generic/circuitikz/pgfcircshapes.tex8
-rw-r--r--Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex8
-rw-r--r--Master/texmf-dist/tex/generic/circuitikz/pgfcircutils.tex8
-rw-r--r--Master/texmf-dist/tex/generic/circuitikz/pgfcircvoltage.tex22
-rw-r--r--Master/texmf-dist/tex/generic/config/language.dat4
-rw-r--r--Master/texmf-dist/tex/generic/config/language.dat.lua19
-rw-r--r--Master/texmf-dist/tex/generic/config/language.def8
-rw-r--r--Master/texmf-dist/tex/generic/expkv-bundle/expkv-cs.tex45
-rw-r--r--Master/texmf-dist/tex/generic/expkv-bundle/expkv-def.tex77
-rw-r--r--Master/texmf-dist/tex/generic/expkv-bundle/expkv-pop.tex2
-rw-r--r--Master/texmf-dist/tex/generic/expkv-bundle/expkv.tex56
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-ec.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-il2.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-il3.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-l7x.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-lmc.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-lth.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-qx.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-t2a.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-t8m.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-af.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-as.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-be.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-bg.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-bn.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ca.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cop.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cs.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cu.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cy.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-da.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-de-1901.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-de-1996.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-de-ch-1901.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-el-monoton.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-el-polyton.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-en-gb.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-en-us.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-eo.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-es.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-et.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-eu.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fi-x-school.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fi.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fr.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fur.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ga.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-gl.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-grc.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-gu.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hi.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hr.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hsb.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hu.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hy.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ia.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-id.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-is.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-it.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ka.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-kmr.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-kn.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-la-x-classic.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-la-x-liturgic.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-la.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-lt.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-lv.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mk.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ml.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mn-cyrl-x-lmc.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mn-cyrl.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mr.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mul-ethi.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-nb.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-nl.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-nn.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-oc.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-or.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pa.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pi.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pl.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pms.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pt.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-rm.tex11
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ro.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ru.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sa.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sk.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sl.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sq.tex37
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sr-cyrl.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sr-latn.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sv.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ta.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-te.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-th.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-tk.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-tr.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-uk.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-zh-latn-pinyin.tex2
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/ptex/hyph-rm.ec.tex398
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/ptex/hyph-sq.ec.tex318
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/quote/hyph-quote-sq.tex6
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-af.tex22
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-ar.tex23
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-el-monoton.tex11
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-el-polyton.tex11
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-fa.tex25
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-gl.tex7
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-grc-x-ibycus.tex24
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-grc.tex11
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-ka.tex6
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-nl.tex6
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-rm.tex799
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-sq.tex108
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-uk.tex9
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/txt/hyph-rm.pat.txt192
-rw-r--r--Master/texmf-dist/tex/generic/hyph-utf8/patterns/txt/hyph-sq.pat.txt304
-rw-r--r--Master/texmf-dist/tex/generic/iftex/iftex.sty32
-rw-r--r--Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty2
-rw-r--r--Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex11
-rw-r--r--Master/texmf-dist/tex/generic/markdown/markdown.tex2021
-rw-r--r--Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_markdown_defaults.tex307
-rw-r--r--Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_tilde.tex52
-rw-r--r--Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex31
-rw-r--r--Master/texmf-dist/tex/generic/pst-optic/pst-optic.tex113
-rw-r--r--Master/texmf-dist/tex/generic/pstricks/pstricks.tex36
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/IEEEtran.4ht51
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/amsfonts.4ht7
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/amsmath.4ht51
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/bigfoot-hooks.4ht24
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/bigfoot.4ht25
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/caption.4ht14
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/chemfig.4ht13
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/colortbl-hooks.4ht52
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/colortbl.4ht35
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/fancyvrb.4ht14
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/french.4ht49
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/fvextra.4ht33
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/glossaries.4ht24
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/html-mml.4ht37
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/html4-math.4ht86
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/html4.4ht199
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/imakeidx.4ht8
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/info4ht.4ht117
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/latex.4ht119
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/lineno.4ht10
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/listings.4ht43
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/longtable.4ht29
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/lua-ul.4ht82
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/makecell.4ht33
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/manyfoot-hooks.4ht53
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/manyfoot.4ht25
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/mathjax-latex-4ht.4ht52
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/mathml.4ht94
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/memoir.4ht19
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/mempatch.4ht57
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/metalogo.4ht35
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/minted.4ht23
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/multind.4ht51
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/nicematrix.4ht28
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/piton.4ht39
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/qtree.4ht32
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/resizegather-hooks.4ht27
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/resizegather.4ht25
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/splitidx.4ht55
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/standalone.4ht29
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/stmaryrd.4ht25
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/svg.4ht8
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/tex4ht.4ht8
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/tex4ht.sty8
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/th4.4ht18
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/unicode.4ht242
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/usepackage.4ht8
-rw-r--r--Master/texmf-dist/tex/generic/tikzducks/t-tikzducks.mkiv4
-rw-r--r--Master/texmf-dist/tex/generic/tikzducks/tikzducks-generic.tex271
-rw-r--r--Master/texmf-dist/tex/generic/tikzducks/tikzducks-plain.tex4
-rw-r--r--Master/texmf-dist/tex/generic/tikzducks/tikzducks.sty8
-rw-r--r--Master/texmf-dist/tex/generic/tikzducks/tikzlibraryducks.code.tex2
-rw-r--r--Master/texmf-dist/tex/generic/tracklang/tracklang-region-codes.tex4
-rw-r--r--Master/texmf-dist/tex/generic/tracklang/tracklang-scripts.tex4
-rw-r--r--Master/texmf-dist/tex/generic/tracklang/tracklang.tex491
-rw-r--r--Master/texmf-dist/tex/generic/tuple/tuple.sty20
-rw-r--r--Master/texmf-dist/tex/generic/tuple/tuple.tex1157
-rw-r--r--Master/texmf-dist/tex/generic/unicode-data/BidiBrackets.txt8
-rw-r--r--Master/texmf-dist/tex/generic/unicode-data/BidiMirroring.txt15
-rw-r--r--Master/texmf-dist/tex/generic/unicode-data/CaseFolding.txt35
-rw-r--r--Master/texmf-dist/tex/generic/unicode-data/EastAsianWidth.txt115
-rw-r--r--Master/texmf-dist/tex/generic/unicode-data/GraphemeBreakProperty.txt96
-rw-r--r--Master/texmf-dist/tex/generic/unicode-data/LineBreak.txt170
-rw-r--r--Master/texmf-dist/tex/generic/unicode-data/PropList.txt147
-rw-r--r--Master/texmf-dist/tex/generic/unicode-data/ScriptExtensions.txt820
-rw-r--r--Master/texmf-dist/tex/generic/unicode-data/Scripts.txt153
-rw-r--r--Master/texmf-dist/tex/generic/unicode-data/SpecialCasing.txt22
-rw-r--r--Master/texmf-dist/tex/generic/unicode-data/UnicodeData.txt5203
-rw-r--r--Master/texmf-dist/tex/generic/unicode-data/WordBreakProperty.txt80
-rw-r--r--Master/texmf-dist/tex/generic/unicode-data/emoji-data.txt42
-rw-r--r--Master/texmf-dist/tex/generic/unicode-data/load-unicode-data.tex10
-rw-r--r--Master/texmf-dist/tex/generic/unicode-data/load-unicode-math-classes.tex4
-rw-r--r--Master/texmf-dist/tex/generic/unicode-data/load-unicode-xetex-classes.tex4
-rw-r--r--Master/texmf-dist/tex/generic/witharrows/witharrows.sty372
-rw-r--r--Master/texmf-dist/tex/generic/witharrows/witharrows.tex284
-rw-r--r--Master/texmf-dist/tex/generic/xcomment/xcomment.sty8
-rw-r--r--Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/doc.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/flafter.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fltrace.sty37
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fontenc.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fontmath.cfg2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fontmath.ltx2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fonttext.cfg2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fonttext.ltx17
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latex.ltx699
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latex209.def5
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latexrelease.sty640
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omlcmm.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omlcmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omlenc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omscmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omscmsy.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omsenc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omxcmex.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1enc.def3
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot4enc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/preload.cfg2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/shortvrb.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1enc.def3
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty1
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd3
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd3
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd3
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd3
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tuenc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ucmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ucmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ucmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx40
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex2400
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/expl3-generic.tex4
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/expl3.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/expl3.lua2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3debug.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3doc.cls38
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3docstrip.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88591.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885910.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885911.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885913.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885914.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885915.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885916.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88592.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88593.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88594.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88595.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88596.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88597.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88598.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88599.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx14
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx5
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx6
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx22
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty90
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx351
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx8
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty1147
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty246
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty158
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty10
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty20
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty8
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty16
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty32
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty8
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty8
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty65
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/.tex4
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/array.sty9
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/calc.sty5
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/longtable.sty6
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/multicol-2024-05-23.sty1144
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/multicol.sty256
-rw-r--r--Master/texmf-dist/tex/latex/abntexto/abntexto.cls62
-rw-r--r--Master/texmf-dist/tex/latex/acmart/acmart-tagged.cls62
-rw-r--r--Master/texmf-dist/tex/latex/acmart/acmart.cls62
-rw-r--r--Master/texmf-dist/tex/latex/acmart/acmauthoryear.bbx8
-rw-r--r--Master/texmf-dist/tex/latex/acmart/acmnumeric.bbx10
-rw-r--r--Master/texmf-dist/tex/latex/acronym/acronym.sty99
-rw-r--r--Master/texmf-dist/tex/latex/adforn/adforn.sty104
-rw-r--r--Master/texmf-dist/tex/latex/adforn/uornementsadf.fd78
-rw-r--r--Master/texmf-dist/tex/latex/adfsymbols/adfarrows.sty425
-rw-r--r--Master/texmf-dist/tex/latex/adfsymbols/adfbullets.sty95
-rw-r--r--Master/texmf-dist/tex/latex/adfsymbols/uarrowsadf.fd78
-rw-r--r--Master/texmf-dist/tex/latex/adfsymbols/ubulletsadf.fd78
-rw-r--r--Master/texmf-dist/tex/latex/afparticle/afparticle.cls297
-rw-r--r--Master/texmf-dist/tex/latex/algxpar/algxpar-brazilian.kw.tex6
-rw-r--r--Master/texmf-dist/tex/latex/algxpar/algxpar-english.kw.tex2
-rw-r--r--Master/texmf-dist/tex/latex/algxpar/algxpar-versionchanges.sty404
-rw-r--r--Master/texmf-dist/tex/latex/algxpar/algxpar.sty511
-rw-r--r--Master/texmf-dist/tex/latex/amsmath/amsmath.sty2
-rw-r--r--Master/texmf-dist/tex/latex/anima/anima.cls448
-rw-r--r--Master/texmf-dist/tex/latex/animate/animate.sty8
-rw-r--r--Master/texmf-dist/tex/latex/aomart/aom_orcid_logo.eps518
-rw-r--r--Master/texmf-dist/tex/latex/aomart/aom_orcid_logo.pdfbin0 -> 1704 bytes
-rw-r--r--Master/texmf-dist/tex/latex/aomart/aom_orcid_logo_bw.eps531
-rw-r--r--Master/texmf-dist/tex/latex/aomart/aom_orcid_logo_bw.pdfbin0 -> 1508 bytes
-rw-r--r--Master/texmf-dist/tex/latex/aomart/aomart.cls89
-rw-r--r--Master/texmf-dist/tex/latex/argumentation/argumentation.sty629
-rw-r--r--Master/texmf-dist/tex/latex/asmeconf/asmeconf.cls584
-rw-r--r--Master/texmf-dist/tex/latex/asmejour/asmejour.cls194
-rw-r--r--Master/texmf-dist/tex/latex/asypictureb/asypictureB.sty109
-rw-r--r--Master/texmf-dist/tex/latex/atableau/atableau.sty3394
-rw-r--r--Master/texmf-dist/tex/latex/atveryend/atveryend.sty683
-rw-r--r--Master/texmf-dist/tex/latex/bangorcsthesis/bangorcsthesis.cls8
-rw-r--r--Master/texmf-dist/tex/latex/base/alltt.sty4
-rw-r--r--Master/texmf-dist/tex/latex/base/ansinew.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/applemac.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/article.cls4
-rw-r--r--Master/texmf-dist/tex/latex/base/article.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/ascii.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/atbegshi-ltx.sty4
-rw-r--r--Master/texmf-dist/tex/latex/base/atveryend-ltx.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/bezier.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/bk10.clo4
-rw-r--r--Master/texmf-dist/tex/latex/base/bk11.clo4
-rw-r--r--Master/texmf-dist/tex/latex/base/bk12.clo4
-rw-r--r--Master/texmf-dist/tex/latex/base/book.cls4
-rw-r--r--Master/texmf-dist/tex/latex/base/book.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/checkencodingsubset.tex6
-rw-r--r--Master/texmf-dist/tex/latex/base/cp1250.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/cp1252.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/cp1257.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/cp437.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/cp437de.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/cp850.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/cp852.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/cp858.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/cp865.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/decmulti.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/doc.sty26
-rw-r--r--Master/texmf-dist/tex/latex/base/docstrip.tex2
-rw-r--r--Master/texmf-dist/tex/latex/base/exscale.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/fix-cm.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/fixltx2e.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/flafter.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/fleqn.clo2
-rw-r--r--Master/texmf-dist/tex/latex/base/fleqn.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/fltrace.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/fontenc.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/fontmath.cfg4
-rw-r--r--Master/texmf-dist/tex/latex/base/fontmath.ltx4
-rw-r--r--Master/texmf-dist/tex/latex/base/fonttext.cfg4
-rw-r--r--Master/texmf-dist/tex/latex/base/fonttext.ltx13
-rw-r--r--Master/texmf-dist/tex/latex/base/graphpap.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/hyphen.ltx2
-rw-r--r--Master/texmf-dist/tex/latex/base/idx.tex2
-rw-r--r--Master/texmf-dist/tex/latex/base/ifthen.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/inputenc.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/lablst.tex2
-rw-r--r--Master/texmf-dist/tex/latex/base/latex.ltx620
-rw-r--r--Master/texmf-dist/tex/latex/base/latex209.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/latexrelease.sty610
-rw-r--r--Master/texmf-dist/tex/latex/base/latexsym.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/latin1.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/latin10.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/latin2.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/latin3.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/latin4.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/latin5.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/latin9.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/lcyenc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/leqno.clo2
-rw-r--r--Master/texmf-dist/tex/latex/base/leqno.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/letter.cls4
-rw-r--r--Master/texmf-dist/tex/latex/base/letter.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/ltluatex.lua8
-rw-r--r--Master/texmf-dist/tex/latex/base/ltluatex.tex4
-rw-r--r--Master/texmf-dist/tex/latex/base/ltnews.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/ltxcheck.tex2
-rw-r--r--Master/texmf-dist/tex/latex/base/ltxdoc.cfg2
-rw-r--r--Master/texmf-dist/tex/latex/base/ltxdoc.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/ltxguide.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/ly1enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/macce.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/makeidx.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/minimal.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/newlfont.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/next.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/nfssfont.tex2
-rw-r--r--Master/texmf-dist/tex/latex/base/oldlfont.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/omlcmm.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/omlcmr.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/omlenc.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/omllcmm.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/omscmr.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/omscmsy.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/omsenc.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/omsenc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/omslcmsy.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/omxcmex.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/omxlcmex.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/openbib.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmdh.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmfib.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmfr.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmr.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmss.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmtt.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmvtt.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1enc.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1lcmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1lcmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot2enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot4enc.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/preload.cfg4
-rw-r--r--Master/texmf-dist/tex/latex/base/preload.ltx2
-rw-r--r--Master/texmf-dist/tex/latex/base/proc.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/proc.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/report.cls4
-rw-r--r--Master/texmf-dist/tex/latex/base/report.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/sfonts.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/shortvrb.sty4
-rw-r--r--Master/texmf-dist/tex/latex/base/showidx.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/size10.clo4
-rw-r--r--Master/texmf-dist/tex/latex/base/size11.clo4
-rw-r--r--Master/texmf-dist/tex/latex/base/size12.clo4
-rw-r--r--Master/texmf-dist/tex/latex/base/slides.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/slides.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/slides.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/structuredlog.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/syntonly.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmdh.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmfib.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmfr.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmr.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmss.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmtt.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmvtt.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/t1enc.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/t1enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/t1enc.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/t1lcmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/t1lcmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/t2aenc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/t2benc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/t2cenc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/testpage.tex2
-rw-r--r--Master/texmf-dist/tex/latex/base/textcomp-2018-08-11.sty3
-rw-r--r--Master/texmf-dist/tex/latex/base/textcomp.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/tracefnt.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/ts1cmr.fd5
-rw-r--r--Master/texmf-dist/tex/latex/base/ts1cmss.fd5
-rw-r--r--Master/texmf-dist/tex/latex/base/ts1cmtt.fd5
-rw-r--r--Master/texmf-dist/tex/latex/base/ts1cmvtt.fd5
-rw-r--r--Master/texmf-dist/tex/latex/base/ts1enc.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/ts1enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/tuenc.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/tulmdh.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/tulmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/tulmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/tulmssq.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/tulmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/tulmvtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ucmr.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ucmss.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ucmtt.fd4
-rw-r--r--Master/texmf-dist/tex/latex/base/ulasy.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ullasy.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/utf8-2018.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/utf8.def2
-rw-r--r--Master/texmf-dist/tex/latex/base/utf8enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/base/x2enc.dfu2
-rw-r--r--Master/texmf-dist/tex/latex/baskervald/baskervald.sty24
-rw-r--r--Master/texmf-dist/tex/latex/baskervaldadf/baskervald.sty70
-rw-r--r--Master/texmf-dist/tex/latex/baskervaldadf/t1ybv.fd (renamed from Master/texmf-dist/tex/latex/baskervald/t1ybv.fd)21
-rw-r--r--Master/texmf-dist/tex/latex/baskervaldadf/t1ybvw.fd (renamed from Master/texmf-dist/tex/latex/baskervald/t1ybvw.fd)21
-rw-r--r--Master/texmf-dist/tex/latex/baskervaldadf/ts1ybv.fd (renamed from Master/texmf-dist/tex/latex/baskervald/ts1ybv.fd)21
-rw-r--r--Master/texmf-dist/tex/latex/baskervaldadf/ts1ybvw.fd (renamed from Master/texmf-dist/tex/latex/baskervald/ts1ybvw.fd)21
-rw-r--r--Master/texmf-dist/tex/latex/baskervaldx/ly1minbaskervaldx.fd136
-rw-r--r--Master/texmf-dist/tex/latex/baskervaldx/ot1minbaskervaldx.fd132
-rw-r--r--Master/texmf-dist/tex/latex/baskervaldx/t1minbaskervaldx.fd135
-rw-r--r--Master/texmf-dist/tex/latex/baskervillef/ly1minbaskervillef.fd107
-rw-r--r--Master/texmf-dist/tex/latex/baskervillef/ot1minbaskervillef.fd107
-rw-r--r--Master/texmf-dist/tex/latex/baskervillef/t1minbaskervillef.fd107
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-gotham/beamercolorthemegotham.sty337
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-gotham/beamerfontthemegotham.sty582
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-gotham/beamerinnerthemegotham.sty1979
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-gotham/beamerouterthemegotham.sty2182
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-gotham/beamerthemegotham.sty136
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-light/beamertheme-light.sty123
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-light/beamerthemelight.sty113
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-mirage/beamerthemeMirage.sty166
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-rainbow/beamercolorthemerainbow.sty53
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamercolorthemeSimpleDarkBlue.sty59
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamerfontthemeSimpleDarkBlue.sty39
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamerinnerthemeSimpleDarkBlue.sty70
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamerthemeSimpleDarkBlue.sty35
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamercolorthemeSimplePlus.sty48
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamerfontthemeSimplePlus.sty40
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamerinnerthemeSimplePlus.sty98
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamerthemeSimplePlus.sty25
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-tcolorbox/beamerinnerthemetcolorbox.sty12
-rw-r--r--Master/texmf-dist/tex/latex/beamerthemecelestia/beamerthemeCelestia.sty1144
-rw-r--r--Master/texmf-dist/tex/latex/beamertools/beamertools.sty72
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/berenis.sty350
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ly1ybd.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ly1ybd0.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ly1ybd1.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ly1ybd2.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ly1ybd2j.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ly1ybd2jw.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ly1ybd2w.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ly1ybdj.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ly1ybdjw.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ly1ybdw.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/t1ybd.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/t1ybd0.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/t1ybd1.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/t1ybd2.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/t1ybd2j.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/t1ybdj.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ts1ybd.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ts1ybd0.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ts1ybd1.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ts1ybd2.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ts1ybd2j.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ts1ybd2jw.fd87
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ts1ybd2w.fd87
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ts1ybdj.fd64
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ts1ybdjw.fd87
-rw-r--r--Master/texmf-dist/tex/latex/berenisadf/ts1ybdw.fd87
-rw-r--r--Master/texmf-dist/tex/latex/bibcop/bibcop.sty4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-abnt/abnt-ibid.cbx15
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-abnt/abnt-numeric.bbx5
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-abnt/abnt.bbx1774
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-abnt/abnt.cbx70
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-abnt/brazilian-abnt.lbx23
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-abnt/english-abnt.lbx21
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-abnt/french-abnt.lbx202
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-abnt/german-abnt.lbx41
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-abnt/italian-abnt.lbx41
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-abnt/spanish-abnt.lbx22
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-accursius/accursius.bbx1833
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-accursius/accursius.cbx387
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-accursius/english-accursius.lbx119
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-accursius/french-accursius.lbx119
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-accursius/italian-accursius.lbx128
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-cse/biblatex-cse.bbx135
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-cse/biblatex-cse.cbx23
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-enc/enc.bbx191
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-enc/enc.cbx20
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhss.bbx1030
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhss.cbx294
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhssay.bbx995
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhssay.cbx347
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-css.bbx15
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.bbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.cbx3
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx26
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx135
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx20
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.bbx22
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-ieee/ieee-alphabetic.bbx7
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-ieee/ieee-alphabetic.cbx7
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-ieee/ieee-comp.cbx150
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-ieee/ieee.bbx8
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-ieee/ieee.cbx113
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-ieee/magyar-ieee.lbx3
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-lni/LNI-english.lbx5
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-lni/LNI.bbx24
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-software/software.bbx2
-rw-r--r--Master/texmf-dist/tex/latex/bithesis/bitbeamer.cls2
-rw-r--r--Master/texmf-dist/tex/latex/bithesis/bithesis.cls239
-rw-r--r--Master/texmf-dist/tex/latex/bithesis/bitreport.cls6
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/BMSTU-IU8.cls10
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-01-base.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-02-construction.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-03-numbering.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-04-section-numbering.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-05-figures.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-06-tables.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-07-footnotes.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-08-formulas.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-09-cites.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-10-titlepage.sty64
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-11-performers.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-12-abstract.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-13-contents.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-14-terms-and-definitions.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-15-list-of-abbreviations.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-16-references.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-17-appendices.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-18-extra.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-19-counters.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-20-listing.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-21-math.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-22-algorithms.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bookcover/bookcover.cls17
-rw-r--r--Master/texmf-dist/tex/latex/bookshelf/bookshelf-svgnam.tex313
-rw-r--r--Master/texmf-dist/tex/latex/bookshelf/bookshelf.cls334
-rw-r--r--Master/texmf-dist/tex/latex/bxcoloremoji/bxcoloremoji-names.def3635
-rw-r--r--Master/texmf-dist/tex/latex/bxcoloremoji/bxcoloremoji.sty2684
-rw-r--r--Master/texmf-dist/tex/latex/calculatoritems/calculatoritems.sty981
-rw-r--r--Master/texmf-dist/tex/latex/calxxxx-yyyy/calxxxx-yyyy-doc.tex14
-rw-r--r--Master/texmf-dist/tex/latex/calxxxx-yyyy/calxxxx-yyyy.tex24
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/cfr-lm.sty449
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clm.fd5
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clm2.fd5
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clm2d.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clm2dj.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clm2j.fd5
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clm2jqs.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clm2js.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clm2jt.fd5
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clm2jv.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clm2qs.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clm2s.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clm2t.fd5
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clm2v.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clmd.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clmdj.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clmj.fd5
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clmjqs.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clmjs.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clmjt.fd5
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clmjv.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clmqs.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clms.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clmt.fd5
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/t1clmv.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clm.fd9
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clm2.fd9
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clm2d.fd6
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clm2dj.fd6
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clm2j.fd9
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clm2jqs.fd6
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clm2js.fd6
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clm2jt.fd9
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clm2jv.fd6
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clm2qs.fd6
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clm2s.fd6
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clm2t.fd9
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clm2v.fd6
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clmd.fd6
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clmdj.fd6
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clmj.fd9
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clmjqs.fd6
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clmjs.fd6
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clmjt.fd9
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clmjv.fd6
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clmqs.fd6
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clms.fd6
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clmt.fd9
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/ts1clmv.fd6
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclm.fd5
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclm2.fd5
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclm2d.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclm2dj.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclm2j.fd5
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclm2jqs.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclm2js.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclm2jt.fd5
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclm2jv.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclm2qs.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclm2s.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclm2t.fd5
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclm2v.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclmd.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclmdj.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclmj.fd5
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclmjqs.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclmjs.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclmjt.fd5
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclmjv.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclmqs.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclms.fd2
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclmt.fd5
-rw-r--r--Master/texmf-dist/tex/latex/cfr-lm/uclmv.fd2
-rw-r--r--Master/texmf-dist/tex/latex/changelog/changelog.sty37
-rw-r--r--Master/texmf-dist/tex/latex/chess-problem-diagrams/diagram.sty86
-rw-r--r--Master/texmf-dist/tex/latex/chessboard/chessboard-keys-main.sty2
-rw-r--r--Master/texmf-dist/tex/latex/chessboard/chessboard-keys-pgf.sty2
-rw-r--r--Master/texmf-dist/tex/latex/chessboard/chessboard-pgf.sty9
-rw-r--r--Master/texmf-dist/tex/latex/chessboard/chessboard.sty10
-rw-r--r--Master/texmf-dist/tex/latex/chuushaku/chuushaku.sty59
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.4-body.tex8
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.4.sty8
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.6-body.tex8
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.6.sty8
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.7-body.tex8
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.7.sty8
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.8.3-body.tex8
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.8.3.sty8
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.3-body.tex8
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.3.sty8
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.6-body.tex8
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.6.sty8
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.0-body.tex112
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.0.sty8
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.1.2-body.tex112
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.1.2.sty8
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.2.7-body.tex112
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.2.7.sty8
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.4.6-body.tex112
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.4.6.sty8
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty12
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-bib.sty29
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-cite.sty34
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-compatible.sty132
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-data.sty2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-init.sty58
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/citation-style-language.sty39
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-af-ZA.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ar.xml15
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-bg-BG.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ca-AD.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-cs-CZ.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-cy-GB.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-da-DK.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-AT.xml68
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-CH.xml74
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-DE.xml60
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-el-GR.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-en-GB.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-en-US.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-es-CL.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-es-ES.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-es-MX.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-et-EE.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-eu.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fa-IR.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fi-FI.xml135
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fr-CA.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fr-FR.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-gl-ES.xml678
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-he-IL.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-hi-IN.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-hr-HR.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-hu-HU.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-id-ID.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-is-IS.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-it-IT.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ja-JP.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-km-KH.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ko-KR.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-la.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-lt-LT.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-lv-LV.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-mn-MN.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-nb-NO.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-nl-NL.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-nn-NO.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pa-PK.xml504
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pl-PL.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pt-BR.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pt-PT.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ro-RO.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ru-RU.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sk-SK.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sl-SI.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sr-RS.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sv-SE.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-th-TH.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-tr-TR.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-uk-UA.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-vi-VN.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-zh-CN.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-zh-TW.xml2
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/styles/apa.csl21
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/styles/modern-humanities-research-association.csl26
-rw-r--r--Master/texmf-dist/tex/latex/clicks/clicks.sty53
-rw-r--r--Master/texmf-dist/tex/latex/codehigh/codehigh.sty41
-rw-r--r--Master/texmf-dist/tex/latex/colorblind/colorblind.sty811
-rw-r--r--Master/texmf-dist/tex/latex/coloredbelts/coloredbelts.sty36
-rw-r--r--Master/texmf-dist/tex/latex/coloredbelts/judobelt-blue-brown.pdfbin0 -> 2582 bytes
-rw-r--r--Master/texmf-dist/tex/latex/coloredbelts/judobelt-blue-purple.pdfbin0 -> 2558 bytes
-rw-r--r--Master/texmf-dist/tex/latex/coloredbelts/judobelt-brown-black.pdfbin0 -> 2555 bytes
-rw-r--r--Master/texmf-dist/tex/latex/coloredbelts/judobelt-green-blue.pdfbin0 -> 2564 bytes
-rw-r--r--Master/texmf-dist/tex/latex/coloredbelts/judobelt-orange-green.pdfbin0 -> 2555 bytes
-rw-r--r--Master/texmf-dist/tex/latex/coloredbelts/judobelt-purple-brown.pdfbin0 -> 2559 bytes
-rw-r--r--Master/texmf-dist/tex/latex/coloredbelts/judobelt-white-yellow.pdfbin0 -> 2542 bytes
-rw-r--r--Master/texmf-dist/tex/latex/coloredbelts/judobelt-yellow-orange.pdfbin0 -> 2545 bytes
-rw-r--r--Master/texmf-dist/tex/latex/coloredtheorem/coloredtheorem.sty55
-rw-r--r--Master/texmf-dist/tex/latex/commalists-tools/commalists-tools.sty269
-rw-r--r--Master/texmf-dist/tex/latex/complexpolylongdiv/complexpolylongdiv.sty78
-rw-r--r--Master/texmf-dist/tex/latex/concmath-otf/concmath-otf.sty4
-rw-r--r--Master/texmf-dist/tex/latex/convert-jpfonts/convert-jpfonts.sty115
-rw-r--r--Master/texmf-dist/tex/latex/cora-macs/cora-macs.sty359
-rw-r--r--Master/texmf-dist/tex/latex/create-theorem/create-theorem-preset-names-cleveref.tex2
-rw-r--r--Master/texmf-dist/tex/latex/create-theorem/create-theorem.sty2
-rw-r--r--Master/texmf-dist/tex/latex/creationboites/CreationBoites.sty48
-rw-r--r--Master/texmf-dist/tex/latex/crimson/LY1Crimson-LF.fd130
-rw-r--r--Master/texmf-dist/tex/latex/crimson/LY1Crimson-OsF.fd103
-rw-r--r--Master/texmf-dist/tex/latex/crimson/LY1Crimson-TLF.fd114
-rw-r--r--Master/texmf-dist/tex/latex/crimson/LY1Crimson-TOsF.fd103
-rw-r--r--Master/texmf-dist/tex/latex/crimson/OT1Crimson-LF.fd130
-rw-r--r--Master/texmf-dist/tex/latex/crimson/OT1Crimson-OsF.fd103
-rw-r--r--Master/texmf-dist/tex/latex/crimson/OT1Crimson-TLF.fd132
-rw-r--r--Master/texmf-dist/tex/latex/crimson/OT1Crimson-TOsF.fd103
-rw-r--r--Master/texmf-dist/tex/latex/crimson/T1Crimson-LF.fd130
-rw-r--r--Master/texmf-dist/tex/latex/crimson/T1Crimson-OsF.fd103
-rw-r--r--Master/texmf-dist/tex/latex/crimson/T1Crimson-TLF.fd110
-rw-r--r--Master/texmf-dist/tex/latex/crimson/T1Crimson-TOsF.fd103
-rw-r--r--Master/texmf-dist/tex/latex/crimson/TS1Crimson-LF.fd106
-rw-r--r--Master/texmf-dist/tex/latex/crimson/TS1Crimson-OsF.fd79
-rw-r--r--Master/texmf-dist/tex/latex/crimson/TS1Crimson-TLF.fd88
-rw-r--r--Master/texmf-dist/tex/latex/crimson/TS1Crimson-TOsF.fd79
-rw-r--r--Master/texmf-dist/tex/latex/crimson/crimson.sty50
-rw-r--r--Master/texmf-dist/tex/latex/crossword/cwpuzzle.sty11
-rw-r--r--Master/texmf-dist/tex/latex/cs-techrep/cs-techrep.cls145
-rw-r--r--Master/texmf-dist/tex/latex/csthm/csthm.sty178
-rw-r--r--Master/texmf-dist/tex/latex/csvsimple/csvsimple-l3.sty36
-rw-r--r--Master/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.sty4
-rw-r--r--Master/texmf-dist/tex/latex/csvsimple/csvsimple.sty4
-rw-r--r--Master/texmf-dist/tex/latex/curve2e/curve2e-v161.sty85
-rw-r--r--Master/texmf-dist/tex/latex/curve2e/curve2e.sty446
-rw-r--r--Master/texmf-dist/tex/latex/customenvs/customenvs.sty628
-rw-r--r--Master/texmf-dist/tex/latex/dashrulex/dashrulex.sty34
-rw-r--r--Master/texmf-dist/tex/latex/dejavu-otf/dejavu-otf.sty79
-rw-r--r--Master/texmf-dist/tex/latex/delimset/delimset.sty43
-rw-r--r--Master/texmf-dist/tex/latex/dynkin-diagrams/dynkin-diagrams.sty27
-rw-r--r--Master/texmf-dist/tex/latex/easybook/easybase.sty855
-rw-r--r--Master/texmf-dist/tex/latex/easybook/easybook.cls21
-rw-r--r--Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg6
-rw-r--r--Master/texmf-dist/tex/latex/easyfloats/easyfloats.sty74
-rw-r--r--Master/texmf-dist/tex/latex/easyfloats/my_biblatex_data_model.dbx5
-rw-r--r--Master/texmf-dist/tex/latex/electrum/electrum.sty35
-rw-r--r--Master/texmf-dist/tex/latex/electrum/t1yes.fd91
-rw-r--r--Master/texmf-dist/tex/latex/electrum/t1yesj.fd91
-rw-r--r--Master/texmf-dist/tex/latex/electrum/t1yesjw.fd91
-rw-r--r--Master/texmf-dist/tex/latex/electrum/t1yesw.fd91
-rw-r--r--Master/texmf-dist/tex/latex/electrum/ts1yes.fd67
-rw-r--r--Master/texmf-dist/tex/latex/electrum/ts1yesj.fd67
-rw-r--r--Master/texmf-dist/tex/latex/electrum/ts1yesjw.fd67
-rw-r--r--Master/texmf-dist/tex/latex/electrum/ts1yesw.fd67
-rw-r--r--Master/texmf-dist/tex/latex/electrumadf/electrum.sty100
-rw-r--r--Master/texmf-dist/tex/latex/electrumadf/t1yes.fd103
-rw-r--r--Master/texmf-dist/tex/latex/electrumadf/t1yes0.fd (renamed from Master/texmf-dist/tex/latex/electrum/t1yes0.fd)35
-rw-r--r--Master/texmf-dist/tex/latex/electrumadf/t1yes1.fd (renamed from Master/texmf-dist/tex/latex/electrum/t1yes1.fd)35
-rw-r--r--Master/texmf-dist/tex/latex/electrumadf/t1yesj.fd103
-rw-r--r--Master/texmf-dist/tex/latex/electrumadf/t1yesjw.fd103
-rw-r--r--Master/texmf-dist/tex/latex/electrumadf/t1yesw.fd103
-rw-r--r--Master/texmf-dist/tex/latex/electrumadf/ts1yes.fd103
-rw-r--r--Master/texmf-dist/tex/latex/electrumadf/ts1yes0.fd (renamed from Master/texmf-dist/tex/latex/electrum/ts1yes0.fd)35
-rw-r--r--Master/texmf-dist/tex/latex/electrumadf/ts1yes1.fd (renamed from Master/texmf-dist/tex/latex/electrum/ts1yes1.fd)35
-rw-r--r--Master/texmf-dist/tex/latex/electrumadf/ts1yesj.fd103
-rw-r--r--Master/texmf-dist/tex/latex/electrumadf/ts1yesjw.fd103
-rw-r--r--Master/texmf-dist/tex/latex/electrumadf/ts1yesw.fd103
-rw-r--r--Master/texmf-dist/tex/latex/elsarticle/elsarticle.cls23
-rw-r--r--Master/texmf-dist/tex/latex/enumext/enumext.sty6285
-rw-r--r--Master/texmf-dist/tex/latex/enumitem/enumitem.sty65
-rw-r--r--Master/texmf-dist/tex/latex/enverb/enverb.sty8
-rw-r--r--Master/texmf-dist/tex/latex/eolang/eolang.sty6
-rw-r--r--Master/texmf-dist/tex/latex/euclidean-lattice/euclidean-lattice.sty235
-rw-r--r--Master/texmf-dist/tex/latex/exesheet/exesheet.cls2
-rw-r--r--Master/texmf-dist/tex/latex/exesheet/exesheet.sty32
-rw-r--r--Master/texmf-dist/tex/latex/exframe/exframe.sty289
-rw-r--r--Master/texmf-dist/tex/latex/expkv-bundle/expkv-cs.sty2
-rw-r--r--Master/texmf-dist/tex/latex/expkv-bundle/expkv-def.sty2
-rw-r--r--Master/texmf-dist/tex/latex/expkv-bundle/expkv-opt-2020-10-10.sty2
-rw-r--r--Master/texmf-dist/tex/latex/expkv-bundle/expkv-opt.sty36
-rw-r--r--Master/texmf-dist/tex/latex/expkv-bundle/expkv-pop.sty2
-rw-r--r--Master/texmf-dist/tex/latex/expkv-bundle/expkv.sty2
-rw-r--r--Master/texmf-dist/tex/latex/ezedits/ezedits.sty249
-rw-r--r--Master/texmf-dist/tex/latex/fancyhdr/extramarks-v4.sty135
-rw-r--r--Master/texmf-dist/tex/latex/fancyhdr/extramarks.sty107
-rw-r--r--Master/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty434
-rw-r--r--Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-blobs.code6
-rw-r--r--Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-dots.code2
-rw-r--r--Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-flat.code1
-rw-r--r--Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-swift.code2
-rw-r--r--Master/texmf-dist/tex/latex/fancyqr/fancyqr.sty136
-rw-r--r--Master/texmf-dist/tex/latex/ffcode/ffcode.sty55
-rw-r--r--Master/texmf-dist/tex/latex/fillpages/fillpages.sty211
-rw-r--r--Master/texmf-dist/tex/latex/firstaid/latex2e-first-aid-for-external-files.ltx24
-rw-r--r--Master/texmf-dist/tex/latex/fixltxhyph/fixltxhyph.sty51
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-portuges.def39
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fontscale/fontscale.sty723
-rw-r--r--Master/texmf-dist/tex/latex/fontsetup/fontsetup.sty78
-rw-r--r--Master/texmf-dist/tex/latex/fontsetup/fspdefault.tex2
-rw-r--r--Master/texmf-dist/tex/latex/fontsetup/fspolddefault.tex2
-rw-r--r--Master/texmf-dist/tex/latex/fontsetup/fspsansdefault.tex599
-rw-r--r--Master/texmf-dist/tex/latex/fontsize/fontsize.sty565
-rw-r--r--Master/texmf-dist/tex/latex/footmisc/footmisc.sty7
-rw-r--r--Master/texmf-dist/tex/latex/footnoterange/footnoterange.sty24
-rw-r--r--Master/texmf-dist/tex/latex/functional/functional.sty94
-rw-r--r--Master/texmf-dist/tex/latex/fvextra/fvextra.sty492
-rw-r--r--Master/texmf-dist/tex/latex/gb4e-next/gb4e-next.sty58
-rw-r--r--Master/texmf-dist/tex/latex/gelasiomath/t1mingelasio.fd1
-rw-r--r--Master/texmf-dist/tex/latex/gelasiomath/untxmia.fd139
-rw-r--r--Master/texmf-dist/tex/latex/genealogy-profiles/genealogy-profiles.sty463
-rw-r--r--Master/texmf-dist/tex/latex/gentium-otf/gentium-otf.sty132
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/gentium.sty16
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/gentiumbook.sty16
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/l7xgentium.fd90
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/l7xgentiumbook.fd87
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/lgrgentium.fd58
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/lgrgentiumbook.fd55
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/ly1gentium.fd90
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/ly1gentiumbook.fd87
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/ot1gentium.fd90
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/ot1gentiumbook.fd87
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/qxgentium.fd90
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/qxgentiumbook.fd87
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/t1gentium.fd90
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/t1gentiumbook.fd87
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/t2agentium.fd90
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/t2agentiumbook.fd87
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/t2bgentium.fd90
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/t2bgentiumbook.fd87
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/t2cgentium.fd90
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/t2cgentiumbook.fd87
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/t5gentium.fd90
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/t5gentiumbook.fd87
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/ts1gentium.fd58
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/ts1gentiumbook.fd55
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/x2gentium.fd90
-rw-r--r--Master/texmf-dist/tex/latex/gentium-tug/x2gentiumbook.fd87
-rw-r--r--Master/texmf-dist/tex/latex/glossaries-extra/example-glossaries-xr.tex2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-2021-11-22.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-abbrstyles.def28
-rw-r--r--Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-bib2gls-2021-11-22.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-bib2gls.sty43
-rw-r--r--Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods-2021-11-22.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty270
-rw-r--r--Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex-2021-11-22.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex.sty17
-rw-r--r--Master/texmf-dist/tex/latex/glossaries-extra/glossary-longextra-2021-11-22.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries-extra/glossary-longextra.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries-extra/glossary-table.sty4
-rw-r--r--Master/texmf-dist/tex/latex/glossaries-extra/glossary-topic-2021-11-22.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries-extra/glossary-topic.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/base/glossaries-babel.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/base/glossaries-compatible-207.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/base/glossaries-compatible-307.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/base/glossaries-polyglossia.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/base/glossaries-prefix.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/base/glossaries.sty339
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/expl/glossaries-accsupp.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2020-03-19.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2021-11-01.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2022-11-03.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2024-04-03.sty7759
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-accsupp-2020-03-19.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-accsupp-2021-11-01.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-babel-2020-03-19.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-babel-2021-11-01.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-207-2020-03-19.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-207-2021-11-01.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-307-2020-03-19.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-307-2021-11-01.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-polyglossia-2020-03-19.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-polyglossia-2021-11-01.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-prefix-2020-03-19.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-prefix-2021-11-01.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-hypernav-2020-03-19.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-hypernav-2021-11-01.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-hypernav-2022-11-03.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-inline-2020-03-19.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-inline-2021-11-01.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-list-2020-03-19.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-list-2021-11-01.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-long-2020-03-19.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-long-2021-11-01.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longbooktabs-2020-03-19.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longbooktabs-2021-11-01.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longragged-2020-03-19.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longragged-2021-11-01.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-mcols-2020-03-19.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-mcols-2021-11-01.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-super-2020-03-19.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-super-2021-11-01.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-superragged-2020-03-19.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-superragged-2021-11-01.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-tree-2020-03-19.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/rollback/glossary-tree-2021-11-01.sty2
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/styles/glossary-hypernav.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/styles/glossary-inline.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/styles/glossary-list.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/styles/glossary-long.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/styles/glossary-longbooktabs.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/styles/glossary-longragged.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/styles/glossary-mcols.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/styles/glossary-super.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/styles/glossary-superragged.sty6
-rw-r--r--Master/texmf-dist/tex/latex/glossaries/styles/glossary-tree.sty6
-rw-r--r--Master/texmf-dist/tex/latex/graphics/color.sty4
-rw-r--r--Master/texmf-dist/tex/latex/graphics/graphics.sty2
-rw-r--r--Master/texmf-dist/tex/latex/gratzer-color-scheme/Gratzer-Color-Scheme.sty55
-rw-r--r--Master/texmf-dist/tex/latex/hep-acronym/hep-acronym.sty79
-rw-r--r--Master/texmf-dist/tex/latex/hep-bibliography/hep-bibliography.dbx2
-rw-r--r--Master/texmf-dist/tex/latex/hep-bibliography/hep-bibliography.sty4
-rw-r--r--Master/texmf-dist/tex/latex/hep-float/hep-float.sty3
-rw-r--r--Master/texmf-dist/tex/latex/hep-font/hep-font.sty3
-rw-r--r--Master/texmf-dist/tex/latex/hep-graphic/hep-feynman.sty2
-rw-r--r--Master/texmf-dist/tex/latex/hep-graphic/hep-graphic.sty27
-rw-r--r--Master/texmf-dist/tex/latex/hep-graphic/hep-plot.sty38
-rw-r--r--Master/texmf-dist/tex/latex/hep-math-font/hep-math-font.sty476
-rw-r--r--Master/texmf-dist/tex/latex/hep-math/hep-math.sty29
-rw-r--r--Master/texmf-dist/tex/latex/hep-paper/hep-paper.sty8
-rw-r--r--Master/texmf-dist/tex/latex/hep-reference/hep-reference.sty2
-rw-r--r--Master/texmf-dist/tex/latex/hep-text/hep-text.sty4
-rw-r--r--Master/texmf-dist/tex/latex/hep-title/hep-title.sty2
-rw-r--r--Master/texmf-dist/tex/latex/hideanswer/hideanswer.sty6
-rw-r--r--Master/texmf-dist/tex/latex/highlightx/highlightx.sty27
-rw-r--r--Master/texmf-dist/tex/latex/homework/homework.cls35
-rw-r--r--Master/texmf-dist/tex/latex/href-ul/href-ul.sty3
-rw-r--r--Master/texmf-dist/tex/latex/hrefhide/hrefhide.sty41
-rw-r--r--Master/texmf-dist/tex/latex/huawei/huawei.cls210
-rw-r--r--Master/texmf-dist/tex/latex/hvfloat/hvfloat-0.inc26
-rw-r--r--Master/texmf-dist/tex/latex/hvfloat/hvfloat-1.inc3
-rw-r--r--Master/texmf-dist/tex/latex/hvfloat/hvfloat-2.inc23
-rw-r--r--Master/texmf-dist/tex/latex/hvfloat/hvfloat-3.inc47
-rw-r--r--Master/texmf-dist/tex/latex/hvfloat/hvfloat-4.inc211
-rw-r--r--Master/texmf-dist/tex/latex/hvfloat/hvfloat.sty51
-rw-r--r--Master/texmf-dist/tex/latex/hvindex/hvindex.sty29
-rw-r--r--Master/texmf-dist/tex/latex/hvlogos/hvlogos.sty3
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/hdvipdfm.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/hdvips.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/hdvipson.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/hdviwind.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/hluatex.def4
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/hpdftex.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/htex4ht.cfg2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/htex4ht.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/htexture.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/hvtex.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/hvtexhtm.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/hvtexmrk.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/hxetex.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/hyperref-patches.sty1
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/hyperref.sty142
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/hypertex.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/nohyperref.sty2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/pd1enc.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/pdfmark.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/psdextra.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/puarenc.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/puenc-extra.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/puenc.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/puvnenc.def2
-rw-r--r--Master/texmf-dist/tex/latex/hyperref/xr-hyper.sty2
-rw-r--r--Master/texmf-dist/tex/latex/iaria-lite/iaria-lite.cls55
-rw-r--r--Master/texmf-dist/tex/latex/iaria/iaria.cls134
-rw-r--r--Master/texmf-dist/tex/latex/iexec/iexec.sty12
-rw-r--r--Master/texmf-dist/tex/latex/inlinegraphicx/inlinegraphicx.sty48
-rw-r--r--Master/texmf-dist/tex/latex/isphysicalmath/isphysicalmath.sty1661
-rw-r--r--Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode-extralight.fontspec8
-rw-r--r--Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode-light.fontspec8
-rw-r--r--Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode-medium.fontspec8
-rw-r--r--Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode-thin.fontspec8
-rw-r--r--Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode.fontspec8
-rw-r--r--Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-extralight.fontspec8
-rw-r--r--Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-light.fontspec8
-rw-r--r--Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-medium.fontspec8
-rw-r--r--Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-otf.sty33
-rw-r--r--Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-thin.fontspec8
-rw-r--r--Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono.fontspec8
-rw-r--r--Master/texmf-dist/tex/latex/jlreq/jlreq.cls2
-rw-r--r--Master/texmf-dist/tex/latex/jpneduenumerate/jpneduenumerate.sty38
-rw-r--r--Master/texmf-dist/tex/latex/jpnedumathsymbols/jpnedumathsymbols.sty173
-rw-r--r--Master/texmf-dist/tex/latex/jslectureplanner/cologne.lps2
-rw-r--r--Master/texmf-dist/tex/latex/jslectureplanner/english.lps2
-rw-r--r--Master/texmf-dist/tex/latex/jslectureplanner/german-default.lps2
-rw-r--r--Master/texmf-dist/tex/latex/jslectureplanner/jslectureplanner.sty80
-rw-r--r--Master/texmf-dist/tex/latex/jslectureplanner/jsmembertable.sty12
-rw-r--r--Master/texmf-dist/tex/latex/jsonparse/jsonparse.sty1132
-rw-r--r--Master/texmf-dist/tex/latex/jupynotex/jupynotex.py331
-rw-r--r--Master/texmf-dist/tex/latex/jupynotex/jupynotex.sty18
-rw-r--r--Master/texmf-dist/tex/latex/jwjournal/jwjournal.cls6
-rw-r--r--Master/texmf-dist/tex/latex/kdpcover/kdpcover.cls114
-rw-r--r--Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-IEEEtran-support.tex15
-rw-r--r--Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-amsart-support.tex74
-rw-r--r--Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-amsbook-support.tex18
-rw-r--r--Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-amsproc-support.tex18
-rw-r--r--Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-beamer-support.tex395
-rw-r--r--Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-jlreq-support.tex34
-rw-r--r--Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-memoir-support.tex51
-rw-r--r--Master/texmf-dist/tex/latex/keytheorems/keytheorems.sty2025
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/DIN.lco26
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/DIN5008A.lco26
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/DIN5008B.lco26
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/DINmtext.lco26
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/KOMAold.lco28
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/KakuLL.lco28
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/NF.lco26
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/NipponEH.lco28
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/NipponEL.lco28
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/NipponLH.lco28
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/NipponLL.lco28
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/NipponRL.lco28
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/SN.lco26
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/SNleft.lco26
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/UScommercial9.lco26
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/UScommercial9DW.lco26
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/lscape.hak94
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scraddr.sty16
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrartcl.cls154
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrarticle.cls36
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrbase.sty48
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrbook.cls165
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrdate.sty52
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrdoc.cls354
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrextend.sty68
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrfontsizes.sty36
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrhack.sty218
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrjura.sty1086
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrkbase.sty42
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrlayer-notecolumn.sty6
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrlayer-scrpage.sty8
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrlayer.sty37
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrletter.cls36
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrletter.sty251
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrlfile-hook-3.34.sty2
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty2
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrlfile-patcholdlatex.sty2
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrlfile.sty2
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrlogo.sty2
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrlttr2.cls272
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrreport.cls36
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrreprt.cls165
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrsize10pt.clo26
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrsize11pt.clo26
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrsize12pt.clo26
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/scrtime.sty44
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/tocbasic.sty148
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/typearea.sty73
-rw-r--r--Master/texmf-dist/tex/latex/koma-script/visualize.lco28
-rw-r--r--Master/texmf-dist/tex/latex/kpfonts-otf/kpfonts-otf.sty4
-rw-r--r--Master/texmf-dist/tex/latex/kpfonts/kpfonts.sty4
-rw-r--r--Master/texmf-dist/tex/latex/l3build/regression-test.tex4
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex229
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.ltx2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3debug.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3doc.cls44
-rw-r--r--Master/texmf-dist/tex/latex/lastpage/lastpage.sty8
-rw-r--r--Master/texmf-dist/tex/latex/lastpage/lastpage209.sty6
-rw-r--r--Master/texmf-dist/tex/latex/lastpage/lastpage2e.sty12
-rw-r--r--Master/texmf-dist/tex/latex/lastpage/lastpageclassic.sty11
-rw-r--r--Master/texmf-dist/tex/latex/lastpage/lastpagemodern.sty163
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/bib-latex-lab-testphase.ltx2
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/block-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/documentmetadata-support.ltx14
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/firstaid-latex-lab-testphase.ltx5
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/float-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/graphic-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/latex-lab-amsmath.ltx6
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/latex-lab-footmisc.ltx4
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/latex-lab-footnotes.ltx34
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/latex-lab-kernel-changes.sty94
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/latex-lab-math.ltx522
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/latex-lab-mathtools.ltx10
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-bib.sty2
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-block.sty93
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-firstaid.sty249
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-float.sty158
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-graphic.sty10
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-marginpar.sty38
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-minipage.sty42
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-sec.sty32
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-table.sty230
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-text.sty8
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-toc.sty150
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/marginpar-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/minipage-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/sec-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/table-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/tabular-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/text-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex/latex-lab/toc-latex-lab-testphase.ltx4
-rw-r--r--Master/texmf-dist/tex/latex/latex2pydata/latex2pydata.sty88
-rw-r--r--Master/texmf-dist/tex/latex/latexbug/latexbug.sty9
-rw-r--r--Master/texmf-dist/tex/latex/lete-sans-math/lete-sans-math.sty8
-rw-r--r--Master/texmf-dist/tex/latex/letterswitharrows/letterswitharrows.sty89
-rw-r--r--Master/texmf-dist/tex/latex/lettrine/lettrine.sty52
-rw-r--r--Master/texmf-dist/tex/latex/libertine/LY1LinuxBiolinumO-LF.fd72
-rw-r--r--Master/texmf-dist/tex/latex/libertine/LY1LinuxBiolinumO-OsF.fd72
-rw-r--r--Master/texmf-dist/tex/latex/libertine/LY1LinuxBiolinumO-TLF.fd72
-rw-r--r--Master/texmf-dist/tex/latex/libertine/LY1LinuxBiolinumO-TOsF.fd71
-rw-r--r--Master/texmf-dist/tex/latex/libertine/LY1LinuxLibertineO-LF.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertine/LY1LinuxLibertineO-OsF.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertine/LY1LinuxLibertineO-TLF.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertine/LY1LinuxLibertineO-TOsF.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertine/OT1LinuxBiolinumO-LF.fd71
-rw-r--r--Master/texmf-dist/tex/latex/libertine/OT1LinuxBiolinumO-OsF.fd72
-rw-r--r--Master/texmf-dist/tex/latex/libertine/OT1LinuxBiolinumO-TLF.fd71
-rw-r--r--Master/texmf-dist/tex/latex/libertine/OT1LinuxBiolinumO-TOsF.fd71
-rw-r--r--Master/texmf-dist/tex/latex/libertine/OT1LinuxLibertineO-LF.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertine/OT1LinuxLibertineO-OsF.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertine/OT1LinuxLibertineO-TLF.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertine/OT1LinuxLibertineO-TOsF.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertine/T1LinuxBiolinumO-LF.fd71
-rw-r--r--Master/texmf-dist/tex/latex/libertine/T1LinuxBiolinumO-OsF.fd71
-rw-r--r--Master/texmf-dist/tex/latex/libertine/T1LinuxBiolinumO-TLF.fd71
-rw-r--r--Master/texmf-dist/tex/latex/libertine/T1LinuxBiolinumO-TOsF.fd71
-rw-r--r--Master/texmf-dist/tex/latex/libertine/T1LinuxLibertineO-LF.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertine/T1LinuxLibertineO-OsF.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertine/T1LinuxLibertineO-TLF.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertine/T1LinuxLibertineO-TOsF.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertine/TS1LinuxBiolinumO-LF.fd43
-rw-r--r--Master/texmf-dist/tex/latex/libertine/TS1LinuxBiolinumO-OsF.fd43
-rw-r--r--Master/texmf-dist/tex/latex/libertine/TS1LinuxBiolinumO-TLF.fd43
-rw-r--r--Master/texmf-dist/tex/latex/libertine/TS1LinuxBiolinumO-TOsF.fd43
-rw-r--r--Master/texmf-dist/tex/latex/libertine/TS1LinuxLibertineO-LF.fd47
-rw-r--r--Master/texmf-dist/tex/latex/libertine/TS1LinuxLibertineO-OsF.fd47
-rw-r--r--Master/texmf-dist/tex/latex/libertine/TS1LinuxLibertineO-TLF.fd47
-rw-r--r--Master/texmf-dist/tex/latex/libertine/TS1LinuxLibertineO-TOsF.fd47
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusMono-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-LF.fd110
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-OsF.fd100
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-Sup.fd28
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-TLF.fd112
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-TOsF.fd96
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-LF.fd144
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-OsF.fd160
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-Sup.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-TLF.fd160
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-TOsF.fd164
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-LF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-OsF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-Sup.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-TOsF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifInitials-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusMono-TLF.fd48
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-LF.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-OsF.fd110
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-Sup.fd44
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-TLF.fd72
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-TOsF.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-LF.fd170
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-OsF.fd174
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-Sup.fd76
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-TLF.fd144
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-TOsF.fd166
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-LF.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-OsF.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-Sup.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-TLF.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-TOsF.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifInitials-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusMono-TLF.fd48
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-LF.fd102
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-OsF.fd96
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-Sup.fd60
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-TLF.fd72
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-TOsF.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-LF.fd152
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-OsF.fd114
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-Sup.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-TLF.fd166
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-TOsF.fd160
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-LF.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-OsF.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-Sup.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-TLF.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-TOsF.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifInitials-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusMono-TLF.fd64
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-LF.fd110
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-OsF.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-Sup.fd42
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-TLF.fd106
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-TOsF.fd88
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-LF.fd158
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-OsF.fd174
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-Sup.fd28
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-TLF.fd114
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-TOsF.fd174
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-LF.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-OsF.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-Sup.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-TLF.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-TOsF.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifInitials-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusMono-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-LF.fd98
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-OsF.fd110
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-Sup.fd58
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-TLF.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-TOsF.fd106
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-LF.fd160
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-OsF.fd170
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-Sup.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-TLF.fd164
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-TOsF.fd160
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-LF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-OsF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-Sup.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-TOsF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifInitials-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusMono-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-LF.fd96
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-OsF.fd108
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-Sup.fd28
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-TLF.fd100
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-TOsF.fd76
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-LF.fd128
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-OsF.fd170
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-Sup.fd80
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-TLF.fd136
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-TOsF.fd172
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-LF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-OsF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-Sup.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-TOsF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifInitials-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusMono-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-LF.fd84
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-OsF.fd100
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-Sup.fd28
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-TLF.fd108
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-TOsF.fd102
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-LF.fd160
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-OsF.fd166
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-Sup.fd64
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-TLF.fd170
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-TOsF.fd170
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-LF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-OsF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-Sup.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-TOsF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifInitials-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusMono-TLF.fd64
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-LF.fd54
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-OsF.fd44
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-TLF.fd44
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-TOsF.fd48
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-LF.fd28
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-OsF.fd82
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-TLF.fd64
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-TOsF.fd44
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-LF.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-OsF.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-TLF.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-TOsF.fd4
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifInitials-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/libertinus-type1.sty9
-rw-r--r--Master/texmf-dist/tex/latex/libris/libris.sty69
-rw-r--r--Master/texmf-dist/tex/latex/libris/t1yly.fd33
-rw-r--r--Master/texmf-dist/tex/latex/libris/t1ylyw.fd33
-rw-r--r--Master/texmf-dist/tex/latex/libris/ts1yly.fd33
-rw-r--r--Master/texmf-dist/tex/latex/libris/ts1ylyw.fd33
-rw-r--r--Master/texmf-dist/tex/latex/lie-hasse/lie-hasse.sty84
-rw-r--r--Master/texmf-dist/tex/latex/liederbuch/liederbuch-babel.sty783
-rw-r--r--Master/texmf-dist/tex/latex/liederbuch/liederbuch-listofsongs.sty202
-rw-r--r--Master/texmf-dist/tex/latex/liederbuch/liederbuch.sty724
-rw-r--r--Master/texmf-dist/tex/latex/liederbuch/printliederbuch.sty105
-rw-r--r--Master/texmf-dist/tex/latex/linearregression/linearregression.sty120
-rw-r--r--Master/texmf-dist/tex/latex/lineno/edtable.sty4
-rw-r--r--Master/texmf-dist/tex/latex/lineno/fnlineno.sty2
-rw-r--r--Master/texmf-dist/tex/latex/lineno/lineno.sty141
-rw-r--r--Master/texmf-dist/tex/latex/lisp-on-tex/lisp-mod-l3regex.sty2
-rw-r--r--Master/texmf-dist/tex/latex/lisp-on-tex/lisp-string.sty6
-rw-r--r--Master/texmf-dist/tex/latex/listings/listings-acm.prf2
-rw-r--r--Master/texmf-dist/tex/latex/listings/listings-bash.prf2
-rw-r--r--Master/texmf-dist/tex/latex/listings/listings-fortran.prf2
-rw-r--r--Master/texmf-dist/tex/latex/listings/listings-hansl.prf2
-rw-r--r--Master/texmf-dist/tex/latex/listings/listings-lua.prf2
-rw-r--r--Master/texmf-dist/tex/latex/listings/listings-python.prf2
-rw-r--r--Master/texmf-dist/tex/latex/listings/listings-rexx.prf2
-rw-r--r--Master/texmf-dist/tex/latex/listings/listings.cfg2
-rw-r--r--Master/texmf-dist/tex/latex/listings/listings.sty46
-rw-r--r--Master/texmf-dist/tex/latex/listings/lstdoc.sty6
-rw-r--r--Master/texmf-dist/tex/latex/listings/lstlang1.sty2
-rw-r--r--Master/texmf-dist/tex/latex/listings/lstlang2.sty2
-rw-r--r--Master/texmf-dist/tex/latex/listings/lstlang3.sty2
-rw-r--r--Master/texmf-dist/tex/latex/listings/lstmisc.sty12
-rw-r--r--Master/texmf-dist/tex/latex/listparskip/listparskip.sty112
-rw-r--r--Master/texmf-dist/tex/latex/litebook/litebook.cls200
-rw-r--r--Master/texmf-dist/tex/latex/litesolution/litesolution.cls307
-rw-r--r--Master/texmf-dist/tex/latex/litetable/litetable.cls735
-rw-r--r--Master/texmf-dist/tex/latex/llncs/llncs.cls208
-rw-r--r--Master/texmf-dist/tex/latex/luatikz/luatikz.lua1999
-rw-r--r--Master/texmf-dist/tex/latex/luatikz/luatikz.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-2in1.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-2up.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-CJK.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-CJKutf8.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-DotArrow.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-SIunits.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-a4.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-a4wide.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-a5comb.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-abstract.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-academicons.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-accents.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-accessibility.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-accsupp.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-acro.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-acronym.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-addlines.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-adjmulticol.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-afterpage.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-algorithm2e.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-algorithmicx.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-alltt.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-amscdx.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-anonchap.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-anysize.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-appendix.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-apxproof.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ar.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-arabicfront.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-array.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-arydshln.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-asymptote.sty7
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-atbegshi.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile2.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-authblk.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-autobreak.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-autonum.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-awesomebox.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-axessibility.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-axodraw2.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-backnaur.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-backref.sty18
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-balance.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-bbding.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-beamerarticle.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-bibunits.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-bigdelim.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-bigfoot.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-bigstrut.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-bitpattern.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-blowup.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-bm.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-booklet.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-bookmark.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-booktabs.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-bophook.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-bounddvi.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage2e.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-braket.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-breakurl.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-breqn.sty15
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-bsheaders.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-bussproofs.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-bxpapersize.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-bytefield.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-cancel.sty23
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-canoniclayout.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-caption3.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-cases.sty7
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ccicons.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-centerlastline.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-centernot.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-changebar.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-changelayout.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-changepage.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-changes.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-chappg.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-chapterbib.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-chemfig.sty23
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-chemformula.sty21
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-chemgreek.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-chemmacros.sty23
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-chemnum.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-chkfloat.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-chngpage.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-cite.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-citeref.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-classicthesis.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-cleveref.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-clrdblpg.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-cmbright.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-cmdtrack.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-colonequals.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-color.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-colortbl.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-letters.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-newpxtxmath.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-nonunicode.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-overlaysymbols.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-siunitx.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-common-multimedia.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-continue.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-copyrightbox.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-crop.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ctable.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-cuted.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-cutwin.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-dblfloatfix.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-dblfnote.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-dcolumn.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-decimal.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-decorule.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-diagbox.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-dingbat.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-doipubmed.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-dotlessi.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-dprogress.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-draftcopy.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-draftfigure.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-draftwatermark.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-drftcite.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-easy-todo.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ebook.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-econometrics.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ed.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ellipsis.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-embrac.sty20
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-emptypage.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-endfloat.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-endheads.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-endnotes.sty41
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-engtlc.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-enotez.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-enumerate.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-enumitem.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-epigraph.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-epsf.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-epsfig.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf-base.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-eqlist.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-eqparbox.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-errata.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-eso-pic.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-esvect.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-etoc.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-eurosym.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-everypage.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-everyshi.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-extarrows.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-extramarks.sty7
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fancybox.sty8
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fancyhdr.sty18
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fancypar.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fancyref.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fancytabs.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fancyvrb.sty117
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fbox.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fewerfloatpages.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-figcaps.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-figsize.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fitbox.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fix2col.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fixmath.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fixme.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fixmetodonotes.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-flafter.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-flippdf.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-floatflt.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-floatpag.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-floatrow.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fltrace.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-flushend.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fnbreak.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fncychap.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fnlineno.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fnpara.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fnpos.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome.sty9
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome5-generic-helper.sty10
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome5-utex-helper.sty8
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome5.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fontaxes.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fontenc.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-footmisc.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-footnote.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-footnotebackref.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-footnotehyper.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-footnoterange.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-footnpag.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-foreign.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-forest.sty7
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fouridx.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fourier.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-framed.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-froufrou.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ftcap.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ftnright.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fullminipage.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fullpage.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fullwidth.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fvextra.sty174
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-fwlw.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-gensymb.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-gentombow.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-geometry.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ghsystem.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-gindex.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-gloss.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-glossaries.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-gmeometric.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-graphicx.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-grffile.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-grid-system.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-grid.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-gridset.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-hang.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-hanging.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-hepunits.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-hhline.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-hhtensor.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-hypbmsec.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-hypcap.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-hypdestopt.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-hypernat.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-hyperxmp.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-hyphenat.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-idxlayout.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ifoddpage.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-imakeidx.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-index.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-inputtrc.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-intopdf.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-isomath.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-isotope.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-jurabib.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-karnaugh-map.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-keyfloat.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-keystroke.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts-otf.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-layaureo.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-layout.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-layouts.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-leading.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-leftidx.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-letterspace.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-lettrine.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-libertinust1math.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-lineno.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-lips.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-lipsum.sty15
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty21
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-listliketab.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-lltjext.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-lltjp-siunitx.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-lltjp-tascmac.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-longtable.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-lpic.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-lscape.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ltablex.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ltcaption.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ltxgrid.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ltxtable.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-lua-check-hyphen.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-lua-visual-debug.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-luacolor.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-luamplib.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-luatexko.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-luatodonotes.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-luavlna.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-lyluatex.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-magaz.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-makeidx.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-manyfoot.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-marginal.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-marginfit.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-marginfix.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-marginnote.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-marvosym.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mathalpha.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mathastext.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mathcomp.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mathdesign.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mathdots.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mathfixs.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mathpazo.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mathptmx.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mathspec.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mathtools.sty38
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mattens.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-maybemath.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mcaption.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mdwmath.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-media9.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-memhfixc.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-menukeys.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-metalogo.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-metalogox.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mhchem.sty26
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-microtype.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-midfloat.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-midpage.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-minibox.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-minitoc.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-minted.sty199
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mismath.sty11
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mleftright.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-morefloats.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-moreverb.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-movie15.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mparhack.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-multibib.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-multicap.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-multicol.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-multicolrule.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-multimedia.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-multiobjective.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-multitoc.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-musicography.sty107
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-mwe.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-nameauth.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-nameref.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-natbib.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-nccfancyhdr.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-nccfoots.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-nccmath.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-needspace.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-newpxmath.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-newtxmath.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-newtxsf.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-nextpage.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-nfssext-cfr.sty4
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-nicefrac.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-niceframe.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-nicematrix.sty7
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-noitcrul.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-nolbreaks.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-nomencl.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-nonfloat.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-nonumonpart.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-nopageno.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-notes.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-notespages.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-nowidow.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ntheorem.sty11
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-octave.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-orcidlink.sty42
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-overpic.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pagegrid.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pagenote.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pagesel.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-paralist.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-parallel.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-parcolumns.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-parnotes.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-parskip.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-patch-komascript.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-patch-memoir.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pbalance.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pbox.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcol.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolfoot.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolmk.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolparallel.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolparcolumns.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcomment.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcrypt.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pdflscape.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pdfmarginpar.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pdfpages.sty7
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pdfprivacy.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pdfrender.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pdfsync.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pdftricks.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pdfx.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-perpage.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pfnote.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-phfqit.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-physics.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-physunits.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-picinpar.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pifont.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pinlabel.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-placeins.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-plarydshln.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-plext.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-plextarydshln.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-plextcolorbl.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-plimsoll.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-prelim2e.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-prettyref.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-preview.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-psfrag.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-psfragx.sty7
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pst-eps.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pstool.sty7
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pstricks.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pxatbegshi.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pxeveryshi.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pxfonts.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pxftnright.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-pxjahyper.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-quotchap.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-quoting.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ragged2e.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-realscripts.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-refcheck.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-register.sty7
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-relsize.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-repeatindex.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-repltext.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-resizegather.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-returntogrid.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-rlepsf.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-rmathbr.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-rmpage.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-romanbar.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-romanbarpagenumber.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-rotating.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-rotfloat.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-rviewport.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-savetrees.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-scalefnt.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-scalerel.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-schemata.sty7
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-scrextend.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-scrhack.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-scrlayer-notecolumn.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-scrlayer-scrpage.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-scrlayer.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-scrpage2.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-section.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-sectionbreak.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-sectsty.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-selectp.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-semantic-markup.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-seqsplit.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-setspace.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-shadethm.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-shadow.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-shapepar.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-showidx.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-showkeys.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-showlabels.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-showtags.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-shuffle.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-sidecap.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-sidenotes.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-simplebnf.sty7
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-siunitx-v2.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-siunitx.sty167
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-skmath.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-slantsc.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-slashed.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-soul.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-soulpos.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-soulutf8.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-splitbib.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-splitidx.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-srcltx.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-srctex.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-stabular.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-stackengine.sty17
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-stackrel.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-statex2.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-statistics.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-statmath.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-steinmetz.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-stfloats.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-struktex.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-subcaption.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-subfig.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-subfigure.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-subsupscripts.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-supertabular.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-svg.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-swfigure.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-sympytex.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-syntonly.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tabfigures.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tablefootnote.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tabls.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tabularx.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tabulary.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf-base.sty43
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf-mc-code-generic.sty18
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf-mc-code-lua.sty23
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf.sty4
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tascmac.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tcolorbox.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tensor.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-termcal.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-textarea.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-textcomp.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-textfit.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-textpos.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-theorem.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-thinsp.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-thm-listof.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-thm-restate.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-thmbox.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-thmtools.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-threadcol.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-threeparttable.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-threeparttablex.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-thumb.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-thumbs.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tikz-imagelabels.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tikz.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-titleps.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-titleref.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-titlesec.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-titletoc.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-titling.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tocbasic.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tocbibind.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tocdata.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tocenter.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tocloft.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tocstyle.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-todo.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-todonotes.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-topcapt.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-tram.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-transparent.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-trimclip.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-trivfloat.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-truncate.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-turnthepage.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-twoup.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-txfonts.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-txgreeks.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-typearea.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-typicons.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ulem.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-umoline.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-underscore.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-unicode-math.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-units.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-unitsdef.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-upgreek.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-upref.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-url.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-ushort.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-uspace.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-varioref.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-verse.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-versonotes.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-vertbars.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-vmargin.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-vowel.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-vpe.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-vwcol.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-wallpaper.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-watermark.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-widetable.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-widows-and-orphans.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-witharrows.sty19
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-wrapfig.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-wrapfig2.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xbmks.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xcolor.sty12
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xechangebar.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xellipsis.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xetexko.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xevlna.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xfakebold.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xfrac.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xltabular.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xltxtra.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xmpincl.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xpiano.sty5
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xpinyin.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xr-hyper.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xr.sty16
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xtab.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xunicode.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xurl.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-xy.sty7
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-zhlineskip.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-zwpagelayout.sty3
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp.sty446
-rw-r--r--Master/texmf-dist/tex/latex/mahjong/mahjong.sty88
-rw-r--r--Master/texmf-dist/tex/latex/markdown/markdown.sty235
-rw-r--r--Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_dot.sty69
-rw-r--r--Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty87
-rw-r--r--Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty809
-rw-r--r--Master/texmf-dist/tex/latex/mathalpha/mathalpha.sty35
-rw-r--r--Master/texmf-dist/tex/latex/mathastext/mathastext.sty384
-rw-r--r--Master/texmf-dist/tex/latex/mathfixs/mathfixs.sty229
-rw-r--r--Master/texmf-dist/tex/latex/mathtools/empheq.sty2
-rw-r--r--Master/texmf-dist/tex/latex/mathtools/mathtools.sty8
-rw-r--r--Master/texmf-dist/tex/latex/media9/media9.sty13
-rw-r--r--Master/texmf-dist/tex/latex/media9/pdfbase.sty21
-rw-r--r--Master/texmf-dist/tex/latex/memoize/memoizable.sty2
-rw-r--r--Master/texmf-dist/tex/latex/memoize/memoize-beamer.code.tex73
-rw-r--r--Master/texmf-dist/tex/latex/memoize/memoize-biblatex.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/memoize/memoize.sty150
-rw-r--r--Master/texmf-dist/tex/latex/memoize/nomemoize.sty2
-rw-r--r--Master/texmf-dist/tex/latex/metalogox/metalogox.sty10
-rw-r--r--Master/texmf-dist/tex/latex/miama/miama.sty2
-rw-r--r--Master/texmf-dist/tex/latex/microtype/letterspace.sty23
-rw-r--r--Master/texmf-dist/tex/latex/microtype/microtype-luatex.def144
-rw-r--r--Master/texmf-dist/tex/latex/microtype/microtype-pdftex.def86
-rw-r--r--Master/texmf-dist/tex/latex/microtype/microtype-show.sty2
-rw-r--r--Master/texmf-dist/tex/latex/microtype/microtype-xetex.def482
-rw-r--r--Master/texmf-dist/tex/latex/microtype/microtype.cfg12
-rw-r--r--Master/texmf-dist/tex/latex/microtype/microtype.lua19
-rw-r--r--Master/texmf-dist/tex/latex/microtype/microtype.sty253
-rw-r--r--Master/texmf-dist/tex/latex/minted/minted.sty2929
-rw-r--r--Master/texmf-dist/tex/latex/minted/minted2.sty1285
-rw-r--r--Master/texmf-dist/tex/latex/mitthesis/mitthesis.cls230
-rw-r--r--Master/texmf-dist/tex/latex/mlacls/mla.cls21
-rw-r--r--Master/texmf-dist/tex/latex/moloch/beamercolorthememoloch-highcontrast.sty45
-rw-r--r--Master/texmf-dist/tex/latex/moloch/beamercolorthememoloch-tomorrow.sty46
-rw-r--r--Master/texmf-dist/tex/latex/moloch/beamercolorthememoloch.sty8
-rw-r--r--Master/texmf-dist/tex/latex/moloch/beamerfontthememoloch.sty26
-rw-r--r--Master/texmf-dist/tex/latex/moloch/beamerinnerthememoloch.sty75
-rw-r--r--Master/texmf-dist/tex/latex/moloch/beamerouterthememoloch.sty13
-rw-r--r--Master/texmf-dist/tex/latex/moloch/beamerthememoloch.sty2
-rw-r--r--Master/texmf-dist/tex/latex/morefloats/morefloats.sty46
-rw-r--r--Master/texmf-dist/tex/latex/multirow/bigdelim.sty4
-rw-r--r--Master/texmf-dist/tex/latex/multirow/bigstrut.sty4
-rw-r--r--Master/texmf-dist/tex/latex/multirow/multirow.sty22
-rw-r--r--Master/texmf-dist/tex/latex/naive-ebnf/naive-ebnf.sty9
-rw-r--r--Master/texmf-dist/tex/latex/neoschool/neoschool.cls7311
-rw-r--r--Master/texmf-dist/tex/latex/newcomputermodern/newcomputermodern.sty10
-rw-r--r--Master/texmf-dist/tex/latex/newpx/newpx.sty16
-rw-r--r--Master/texmf-dist/tex/latex/newpx/newpxmath.sty90
-rw-r--r--Master/texmf-dist/tex/latex/newpx/newpxtext.sty34
-rw-r--r--Master/texmf-dist/tex/latex/newpx/t1zpllf.fd4
-rw-r--r--Master/texmf-dist/tex/latex/newtx/newtx.sty32
-rw-r--r--Master/texmf-dist/tex/latex/newtx/newtxmath.sty8
-rw-r--r--Master/texmf-dist/tex/latex/nfssext-cfr/nfssext-cfr-nfss.sty554
-rw-r--r--Master/texmf-dist/tex/latex/nfssext-cfr/nfssext-cfr-nnfss.sty721
-rw-r--r--Master/texmf-dist/tex/latex/nfssext-cfr/nfssext-cfr.sty822
-rw-r--r--Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty1893
-rw-r--r--Master/texmf-dist/tex/latex/njuthesis/njuthesis-doc.cls2
-rw-r--r--Master/texmf-dist/tex/latex/njuthesis/njuthesis-graduate.def2
-rw-r--r--Master/texmf-dist/tex/latex/njuthesis/njuthesis-postdoctoral.def2
-rw-r--r--Master/texmf-dist/tex/latex/njuthesis/njuthesis-undergraduate.def2
-rw-r--r--Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls25
-rw-r--r--Master/texmf-dist/tex/latex/nlctdoc/nlctdoc.cls4
-rw-r--r--Master/texmf-dist/tex/latex/nlctdoc/nlctuserguide.sty802
-rw-r--r--Master/texmf-dist/tex/latex/nodepthtext/nodepthtext.sty42
-rw-r--r--Master/texmf-dist/tex/latex/notebeamer/notebeamer.sty313
-rw-r--r--Master/texmf-dist/tex/latex/nstc-proposal/nstc-cm03.cls136
-rw-r--r--Master/texmf-dist/tex/latex/nstc-proposal/nstc-cm302.cls124
-rw-r--r--Master/texmf-dist/tex/latex/numbersets/numbersets.sty120
-rw-r--r--Master/texmf-dist/tex/latex/numerica-tables/numerica-tables.sty2184
-rw-r--r--Master/texmf-dist/tex/latex/ocgx2/ocgbase.sty21
-rw-r--r--Master/texmf-dist/tex/latex/ocgx2/ocgx2.sty251
-rw-r--r--Master/texmf-dist/tex/latex/osda/osda.sty401
-rw-r--r--Master/texmf-dist/tex/latex/pagecolor/pagecolor.sty54
-rw-r--r--Master/texmf-dist/tex/latex/pageslts/pageslts.sty1356
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Indication/PanneauRouteC24a.pdfbin0 -> 1345 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB1j.pdfbin0 -> 1506 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB30_30.pdfbin0 -> 4929 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b1.pdfbin0 -> 1761 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b2.pdfbin0 -> 3914 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b3.pdfbin0 -> 1919 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b4.pdfbin0 -> 1957 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b5.pdfbin0 -> 4093 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB49VL.pdfbin0 -> 4986 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50a.pdfbin0 -> 1642 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50b.pdfbin0 -> 3758 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50c.pdfbin0 -> 1797 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50d.pdfbin0 -> 2031 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50e.pdfbin0 -> 3932 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB51_30.pdfbin0 -> 4867 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB52.pdfbin0 -> 5184 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB53.pdfbin0 -> 5314 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB54.pdfbin0 -> 3128 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB55.pdfbin0 -> 3255 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB56.pdfbin0 -> 2954 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB57.pdfbin0 -> 2892 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB58.pdfbin0 -> 19271 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB59.pdfbin0 -> 11639 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/PanneauxRoute.sty15
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK14.pdfbin0 -> 1651 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK17.pdfbin0 -> 1724 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK2.pdfbin0 -> 1695 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK22.pdfbin0 -> 2921 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK3.pdfbin0 -> 1514 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK30.pdfbin0 -> 3705 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK31.pdfbin0 -> 1903 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK32.pdfbin0 -> 1719 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK4.pdfbin0 -> 2265 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK5.pdfbin0 -> 2191 bytes
-rw-r--r--Master/texmf-dist/tex/latex/paracol/paracol-2018-12-31.sty2894
-rw-r--r--Master/texmf-dist/tex/latex/paracol/paracol.sty62
-rw-r--r--Master/texmf-dist/tex/latex/pas-tableur/pas-tableur.sty91
-rw-r--r--Master/texmf-dist/tex/latex/passopt/passopt.sty2
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty4
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty4
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def36
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def3
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def5
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def6
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def11
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def11
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def3
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua1
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty14
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty2
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx247
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty2
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty2
-rw-r--r--Master/texmf-dist/tex/latex/pdfpages/pdfpages.sty166
-rw-r--r--Master/texmf-dist/tex/latex/pdfpages/ppdvipdfmx.def27
-rw-r--r--Master/texmf-dist/tex/latex/pdfpages/ppdvips.def18
-rw-r--r--Master/texmf-dist/tex/latex/pdfpages/ppluatex.def59
-rw-r--r--Master/texmf-dist/tex/latex/pdfpages/ppnull.def18
-rw-r--r--Master/texmf-dist/tex/latex/pdfpages/pppdftex.def59
-rw-r--r--Master/texmf-dist/tex/latex/pdfpages/ppvtex.def18
-rw-r--r--Master/texmf-dist/tex/latex/pdfpages/ppxetex.def49
-rw-r--r--Master/texmf-dist/tex/latex/perltex/perltex.sty21
-rw-r--r--Master/texmf-dist/tex/latex/pgfmath-xfp/pgfmath-xfp.sty6
-rw-r--r--Master/texmf-dist/tex/latex/pgfornament-han/beamerthemeHeavenlyClouds.sty26
-rw-r--r--Master/texmf-dist/tex/latex/pgfornament-han/beamerthemeTianQing.sty20
-rw-r--r--Master/texmf-dist/tex/latex/pgfornament-han/beamerthemeXiaoshan.sty5
-rw-r--r--Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty316
-rw-r--r--Master/texmf-dist/tex/latex/plex-otf/plex-otf.sty313
-rw-r--r--Master/texmf-dist/tex/latex/pmdraw/pmdraw.sty1047
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-acadian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-aeb.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-af.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-afb.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-afrikaans.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-albanian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-am.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-american.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-amharic.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-apd.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ar-IQ.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ar-JO.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ar-LB.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ar-MR.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ar-PS.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ar-SY.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ar-YE.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ar.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-arabic.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-armenian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-arq.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ary.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-arz.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ast.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-asturian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-australian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-austrian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ayl.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bahasa.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bahasai.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bahasam.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-basque.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-be-tarask.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-be.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-belarusian.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bengali.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bg.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bn.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bo.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bosnian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-br.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-brazil.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-british.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bs.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bulgarian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ca.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-canadian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-canadien.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-catalan.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-chinese.ldf72
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Arab.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Latn.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ckb.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-classiclatin.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-cop.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-coptic.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-cy.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-cz.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-czech.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-da.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-danish.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT-1901.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT-1996.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1901.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1996.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1901.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1996.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1901.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1996.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1901.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1996.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1901.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1996.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-divehi.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-dsb.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-dutch.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-dv.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ecclesiasticlatin.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-el-monoton.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-el-polyton.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-el.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-en-AU.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-en-CA.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-en-GB.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-en-NZ.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-en-US.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-en.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-eo.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-es-ES.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-es-MX.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-es.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-esperanto.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-estonian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-et.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-eu.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-fa.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-farsi.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-fi.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-finnish.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CA-u-sd-canb.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CA.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CH.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-fr-FR.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-fr.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-friulan.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-friulian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-fur.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ga.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-gaelic.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-galician.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-gd.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-georgian.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-germanb.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-gl.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-grc.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-greek.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-he.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-hi.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-hindi.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-hr.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-hsb.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-hu.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-hungarian.ldf8
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-hy.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ia.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-icelandic.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-id.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-interlingua.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-irish.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-is.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-it.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-italian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ja.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-japanese.ldf62
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ka.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-kannada.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-khmer.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-km.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Arab.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Latn.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-kmr.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-kn.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ko.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf11
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Arab.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Latn.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ku.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-kurdish.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-kurmanji.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-classic.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-ecclesia.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-medieval.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-la.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-lao.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-latex.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf3
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-latvian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-lo.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-lowersorbian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-lsorbian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-lt.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-lv.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-macedonian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-magyar.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-malay.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-malayalam.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-medievallatin.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-mk.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ml.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-mn.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-mongolian.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-mr.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-naustrian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-nb.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-newzealand.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ngerman.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-nko.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-norsk.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-norwegian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-nswissgerman.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-nynorsk.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-occitan.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-odia.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-or.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-pa.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-persian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-piedmontese.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-polish.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-polutonikogreek.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-portuges.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-portuguese.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-punjabi.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-romanian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-romansh.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf12
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-sami.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-samin.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf16
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-scottish.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-serbian.ldf12
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-serbianc.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-slovak.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-slovene.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-slovenian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-sorbian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-spanish.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-spanishmx.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-swedish.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-swissgerman.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-syriac.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-tamil.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-telugu.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-thai.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-tibetan.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-turkmen.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ug.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-uppersorbian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-urdu.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-usorbian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-uyghur.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-vietnamese.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-welsh.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-zh-CN.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-zh-TW.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/polyglossia-cjk-spacing.lua6
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/polyglossia-french.lua2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/polyglossia-latin.lua2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/polyglossia-punct.lua2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/polyglossia-sanskrit.lua2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/polyglossia-tibt.lua2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/polyglossia.lua2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty133
-rw-r--r--Master/texmf-dist/tex/latex/postnotes/postnotes.sty1929
-rw-r--r--Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-dark-mono.tex4
-rw-r--r--Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-dark.tex4
-rw-r--r--Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-light-mono.tex4
-rw-r--r--Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-light.tex4
-rw-r--r--Master/texmf-dist/tex/latex/ppt-slides/ppt-slides.sty9
-rw-r--r--Master/texmf-dist/tex/latex/ppt-slides/ppt-templates/ppt-9x6.tex4
-rw-r--r--Master/texmf-dist/tex/latex/principia/principia.sty76
-rw-r--r--Master/texmf-dist/tex/latex/prisma-flow-diagram/prisma-flow-diagram.sty55
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/ProfLycee-Light.sty389
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty336
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-bronze-cup.pdfbin0 -> 2781 bytes
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-bronze-medal-flat.pdfbin0 -> 1857 bytes
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-bronze-medal.pdfbin0 -> 154573 bytes
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-checked.pdfbin0 -> 1480 bytes
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-crossed.pdfbin0 -> 1484 bytes
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-gold-cup.pdfbin0 -> 2764 bytes
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-gold-medal-flat.pdfbin0 -> 1713 bytes
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-gold-medal.pdfbin0 -> 119155 bytes
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-mouse-center.pdfbin0 -> 8987 bytes
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-mouse-left.pdfbin0 -> 8987 bytes
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-mouse-right.pdfbin0 -> 8988 bytes
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-mouse.pdfbin0 -> 8348 bytes
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-notok.pdfbin0 -> 3347 bytes
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-ok.pdfbin0 -> 3291 bytes
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-silver-cup.pdfbin0 -> 2759 bytes
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-silver-medal-flat.pdfbin0 -> 1763 bytes
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-silver-medal.pdfbin0 -> 98514 bytes
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/proflycee-tools-analyse.tex2
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex152
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/proflycee-tools-cliparts.tex145
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/proflycee-tools-ecritures.tex67
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/proflycee-tools-minted.tex1
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/proflycee-tools-piton.tex23
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/proflycee-tools-probas.tex546
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/proflycee-tools-recreat.tex118
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/proflycee-tools-stats.tex101
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/proflycee-tools-trigo.tex25
-rw-r--r--Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty1874
-rw-r--r--Master/texmf-dist/tex/latex/profsio/ProfSio.sty44
-rw-r--r--Master/texmf-dist/tex/latex/projlib/ProjLib.sty2
-rw-r--r--Master/texmf-dist/tex/latex/projlib/projlib-author.sty2
-rw-r--r--Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty2
-rw-r--r--Master/texmf-dist/tex/latex/projlib/projlib-draft.sty2
-rw-r--r--Master/texmf-dist/tex/latex/projlib/projlib-font.sty2
-rw-r--r--Master/texmf-dist/tex/latex/projlib/projlib-language.sty8
-rw-r--r--Master/texmf-dist/tex/latex/projlib/projlib-logo.sty2
-rw-r--r--Master/texmf-dist/tex/latex/projlib/projlib-math.sty3
-rw-r--r--Master/texmf-dist/tex/latex/projlib/projlib-paper.sty2
-rw-r--r--Master/texmf-dist/tex/latex/projlib/projlib-text.sty2
-rw-r--r--Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty4
-rw-r--r--Master/texmf-dist/tex/latex/projlib/projlib-titlepage.sty2
-rw-r--r--Master/texmf-dist/tex/latex/prooftrees/prooftrees.sty73
-rw-r--r--Master/texmf-dist/tex/latex/randintlist/randintlist.sty248
-rw-r--r--Master/texmf-dist/tex/latex/rebuttal/rebuttal.sty467
-rw-r--r--Master/texmf-dist/tex/latex/regstats/regstats.sty7
-rw-r--r--Master/texmf-dist/tex/latex/reledmac/reledmac.sty3
-rw-r--r--Master/texmf-dist/tex/latex/reptheorem/reptheorem.sty33
-rw-r--r--Master/texmf-dist/tex/latex/romanbar/romanbar.sty135
-rw-r--r--Master/texmf-dist/tex/latex/romande/romande.sty21
-rw-r--r--Master/texmf-dist/tex/latex/romandeadf/romande.sty64
-rw-r--r--Master/texmf-dist/tex/latex/romandeadf/t1yrd.fd (renamed from Master/texmf-dist/tex/latex/romande/t1yrd.fd)35
-rw-r--r--Master/texmf-dist/tex/latex/romandeadf/t1yrda.fd (renamed from Master/texmf-dist/tex/latex/romande/t1yrda.fd)31
-rw-r--r--Master/texmf-dist/tex/latex/romandeadf/t1yrdaw.fd (renamed from Master/texmf-dist/tex/latex/romande/t1yrdaw.fd)25
-rw-r--r--Master/texmf-dist/tex/latex/romandeadf/t1yrdw.fd (renamed from Master/texmf-dist/tex/latex/romande/t1yrdw.fd)25
-rw-r--r--Master/texmf-dist/tex/latex/romandeadf/ts1yrd.fd (renamed from Master/texmf-dist/tex/latex/romande/ts1yrd.fd)31
-rw-r--r--Master/texmf-dist/tex/latex/romandeadf/ts1yrda.fd (renamed from Master/texmf-dist/tex/latex/romande/ts1yrda.fd)31
-rw-r--r--Master/texmf-dist/tex/latex/romandeadf/ts1yrdaw.fd (renamed from Master/texmf-dist/tex/latex/romande/ts1yrdaw.fd)25
-rw-r--r--Master/texmf-dist/tex/latex/romandeadf/ts1yrdw.fd (renamed from Master/texmf-dist/tex/latex/romande/ts1yrdw.fd)25
-rw-r--r--Master/texmf-dist/tex/latex/rpgicons/rpgicons-l3.sty383
-rw-r--r--Master/texmf-dist/tex/latex/rpgicons/rpgicons-pgf.sty216
-rw-r--r--Master/texmf-dist/tex/latex/rpgicons/rpgicons.sty18
-rw-r--r--Master/texmf-dist/tex/latex/rub-kunstgeschichte/rub-kunstgeschichte.cls175
-rw-r--r--Master/texmf-dist/tex/latex/runcode/runcode.sty21
-rw-r--r--Master/texmf-dist/tex/latex/sankey/sankey-doc-preamble.sty41
-rw-r--r--Master/texmf-dist/tex/latex/sankey/sankey.sty944
-rw-r--r--Master/texmf-dist/tex/latex/sankey/tikzlibrarydubins.code.tex9
-rw-r--r--Master/texmf-dist/tex/latex/sansmathfonts/omlcmssm.fd2
-rw-r--r--Master/texmf-dist/tex/latex/sansmathfonts/omscmsssy.fd2
-rw-r--r--Master/texmf-dist/tex/latex/sansmathfonts/omxcmssex.fd2
-rw-r--r--Master/texmf-dist/tex/latex/sansmathfonts/ot1cmsmf.fd16
-rw-r--r--Master/texmf-dist/tex/latex/sansmathfonts/ot1xcmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex/sansmathfonts/sansmathfonts.sty272
-rw-r--r--Master/texmf-dist/tex/latex/sansmathfonts/t1xcmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex/sansmathfonts/ucmsmf.fd16
-rw-r--r--Master/texmf-dist/tex/latex/sansmathfonts/ussesint.fd2
-rw-r--r--Master/texmf-dist/tex/latex/sansmathfonts/ussmsa.fd2
-rw-r--r--Master/texmf-dist/tex/latex/sansmathfonts/ussmsb.fd2
-rw-r--r--Master/texmf-dist/tex/latex/sansmathfonts/uxcmss.fd3
-rw-r--r--Master/texmf-dist/tex/latex/scaletextbullet/scaletextbullet.sty254
-rw-r--r--Master/texmf-dist/tex/latex/schooldocs/schooldocs.sty27
-rw-r--r--Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.cls8
-rw-r--r--Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.sty19
-rw-r--r--Master/texmf-dist/tex/latex/schwalbe-chess/swruler.sty4
-rw-r--r--Master/texmf-dist/tex/latex/scrhack/float.hak (renamed from Master/texmf-dist/tex/latex/koma-script/float.hak)73
-rw-r--r--Master/texmf-dist/tex/latex/scrhack/floatrow.hak (renamed from Master/texmf-dist/tex/latex/koma-script/floatrow.hak)73
-rw-r--r--Master/texmf-dist/tex/latex/scrhack/hyperref.hak (renamed from Master/texmf-dist/tex/latex/koma-script/hyperref.hak)73
-rw-r--r--Master/texmf-dist/tex/latex/scrhack/listings.hak (renamed from Master/texmf-dist/tex/latex/koma-script/listings.hak)73
-rw-r--r--Master/texmf-dist/tex/latex/scrhack/lscape.hak49
-rw-r--r--Master/texmf-dist/tex/latex/scrhack/nomencl.hak (renamed from Master/texmf-dist/tex/latex/koma-script/nomencl.hak)73
-rw-r--r--Master/texmf-dist/tex/latex/scrhack/setspace.hak (renamed from Master/texmf-dist/tex/latex/koma-script/setspace.hak)73
-rw-r--r--Master/texmf-dist/tex/latex/scrhack/standardsections.hak (renamed from Master/texmf-dist/tex/latex/koma-script/standardsections.hak)80
-rw-r--r--Master/texmf-dist/tex/latex/scripture/scripture.sty1911
-rw-r--r--Master/texmf-dist/tex/latex/scrlayer-fancyhdr/scrlayer-fancyhdr.sty97
-rw-r--r--Master/texmf-dist/tex/latex/se2thesis/se2colors.sty2
-rw-r--r--Master/texmf-dist/tex/latex/se2thesis/se2fonts.sty3
-rw-r--r--Master/texmf-dist/tex/latex/se2thesis/se2packages.sty2
-rw-r--r--Master/texmf-dist/tex/latex/se2thesis/se2thesis.cls11
-rw-r--r--Master/texmf-dist/tex/latex/se2thesis/se2translations-english.trsl2
-rw-r--r--Master/texmf-dist/tex/latex/se2thesis/se2translations-german.trsl2
-rw-r--r--Master/texmf-dist/tex/latex/setspaceenhanced/setspaceenhanced.sty37
-rw-r--r--Master/texmf-dist/tex/latex/sim-os-menus/sim-os-menus.sty180
-rw-r--r--Master/texmf-dist/tex/latex/simpleicons/simpleicons.sty2
-rw-r--r--Master/texmf-dist/tex/latex/simpleicons/simpleiconsglyphs-pdftex.tex6403
-rw-r--r--Master/texmf-dist/tex/latex/simpleicons/simpleiconsglyphs-xeluatex.tex6403
-rw-r--r--Master/texmf-dist/tex/latex/simpleicons/usimpleiconseight.fd2
-rw-r--r--Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfive.fd2
-rw-r--r--Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfour.fd2
-rw-r--r--Master/texmf-dist/tex/latex/simpleicons/usimpleiconsnine.fd2
-rw-r--r--Master/texmf-dist/tex/latex/simpleicons/usimpleiconsone.fd2
-rw-r--r--Master/texmf-dist/tex/latex/simpleicons/usimpleiconsoneone.fd2
-rw-r--r--Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonethree.fd2
-rw-r--r--Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonetwo.fd2
-rw-r--r--Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonezero.fd2
-rw-r--r--Master/texmf-dist/tex/latex/simpleicons/usimpleiconsseven.fd2
-rw-r--r--Master/texmf-dist/tex/latex/simpleicons/usimpleiconssix.fd2
-rw-r--r--Master/texmf-dist/tex/latex/simpleicons/usimpleiconsthree.fd2
-rw-r--r--Master/texmf-dist/tex/latex/simpleicons/usimpleiconstwo.fd2
-rw-r--r--Master/texmf-dist/tex/latex/siunitx/siunitx.sty657
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe-ja.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe-zh.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol-ja.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol-zh.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder-ja.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder-zh.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac-ja.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac-zh.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu-ja.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu-zh.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows-ja.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows-zh.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-cambria.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-libertinus.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-lm.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newcm.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newpx.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newtx.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-stixtwo.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-times.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-xits.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-cambria.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-libertinus.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-lm.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newcm.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newpx.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newtx.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-stixtwo.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-times.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-xits.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-de.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-en.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-ja.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-zh.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-de.def6
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-en.def6
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-ja.def6
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-zh.def6
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-de.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-en.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-ja.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-zh.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-de.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-en.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-ja.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-zh.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-de.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-en.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-ja.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-zh.def4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/sjtuarticle.cls4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/sjtureport.cls4
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/sjtuthesis.cls37
-rw-r--r--Master/texmf-dist/tex/latex/skdoc/skdoc.cls61
-rw-r--r--Master/texmf-dist/tex/latex/skeldoc/skeldoc.sty108
-rw-r--r--Master/texmf-dist/tex/latex/spbmark/spbmark.sty109
-rw-r--r--Master/texmf-dist/tex/latex/spelatex/spelatex.sty260
-rw-r--r--Master/texmf-dist/tex/latex/srdp-mathematik/srdp-mathematik.sty5
-rw-r--r--Master/texmf-dist/tex/latex/sshrc-insight/sshrc-insight.cls213
-rw-r--r--Master/texmf-dist/tex/latex/stickstoo/ly1minstickstootext.fd84
-rw-r--r--Master/texmf-dist/tex/latex/stickstoo/ot1minstickstootext.fd84
-rw-r--r--Master/texmf-dist/tex/latex/stickstoo/stickstootext.sty10
-rw-r--r--Master/texmf-dist/tex/latex/stickstoo/t1minstickstootext.fd90
-rw-r--r--Master/texmf-dist/tex/latex/stocksize/stocksize.sty70
-rw-r--r--Master/texmf-dist/tex/latex/suanpan-l3/suanpan-l3.sty47
-rw-r--r--Master/texmf-dist/tex/latex/suftesi/suftesi.cls35
-rw-r--r--Master/texmf-dist/tex/latex/sunpath/sunpath.sty161
-rw-r--r--Master/texmf-dist/tex/latex/tableof/tableof.sty27
-rw-r--r--Master/texmf-dist/tex/latex/tabularray-abnt/tabularray-abnt.sty485
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-base.sty19
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-generic.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-lua.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug.sty53
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-luatex.def8
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-generic.sty8
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-lua.sty4
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex-book.def4
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex.def4
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-mathml.def2
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf.def2
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf2.def2
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child-2.csv4
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child.csv2
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf.lua30
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty304
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdfdocu-patches.sty11
-rw-r--r--Master/texmf-dist/tex/latex/tangramtikz/TangramTikz.sty39
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbbreakable.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbdocumentation.code.tex27
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbexternal.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbfitting.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbhooks.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcblistings.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcblistingscore.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcblistingsutf8.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbmagazine.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbminted.code.tex8
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbposter.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbprocessing.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbraster.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbskins.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbskinsjigsaw.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbtheorems.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbvignette.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbxparse.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcolorbox.sty100
-rw-r--r--Master/texmf-dist/tex/latex/temporal-logic/temporal-logic.sty215
-rw-r--r--Master/texmf-dist/tex/latex/testhyphens/testhyphens.sty79
-rw-r--r--Master/texmf-dist/tex/latex/texfindpkg/texfindpkg.json.gzbin875626 -> 869123 bytes
-rw-r--r--Master/texmf-dist/tex/latex/thmlist/thmlist.sty63
-rw-r--r--Master/texmf-dist/tex/latex/tikz-bpmn/tikzlibrarybpmn.code.tex1031
-rw-r--r--Master/texmf-dist/tex/latex/tikz-decofonts/tikz-decofonts.sty976
-rw-r--r--Master/texmf-dist/tex/latex/tikz-triminos/tikz-triminos.sty179
-rw-r--r--Master/texmf-dist/tex/latex/tikz3d-fr/tikz3d-fr.sty259
-rw-r--r--Master/texmf-dist/tex/latex/tikzbricks/tikzbricks.sty115
-rw-r--r--Master/texmf-dist/tex/latex/tikzdotncross/tikzdotncross.sty89
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlibrarytikzlings.code.tex6
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-addons.sty395
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-anteaters.sty93
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-apes.sty401
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-bats.sty92
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-bears.sty122
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-bees.sty101
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-bugs.sty130
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-cats.sty100
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-chickens.sty106
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-coatis.sty193
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-elephants.sty103
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-hippos.sty123
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-koalas.sty84
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-list.sty4
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-marmots.sty112
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-meerkats.sty340
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-mice.sty72
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-moles.sty110
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-owls.sty52
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-pandas.sty78
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-penguins.sty70
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-pigs.sty112
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-rhinos.sty123
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-sheep.sty117
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-sloths.sty181
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-snowmen.sty101
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-squirrels.sty110
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings-wolves.sty74
-rw-r--r--Master/texmf-dist/tex/latex/tikzlings/tikzlings.sty8
-rw-r--r--Master/texmf-dist/tex/latex/tikzmarmots/tikzlibrarymarmots.code.tex2
-rw-r--r--Master/texmf-dist/tex/latex/tikzmarmots/tikzmarmots-v1.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tikzmarmots/tikzmarmots.sty4
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-bee.lib.tex64
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-christmas.lib.tex153
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-cloak.lib.tex78
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-devil.lib.tex90
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-emotions.lib.tex56
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-flags.lib.tex45
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-formal.lib.tex116
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-fun.lib.tex309
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-glasses.lib.tex105
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-hats.lib.tex173
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-horse.lib.tex229
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-magic.lib.tex14
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-medieval.lib.tex205
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-movement.lib.tex75
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-safe.lib.tex30
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-science-fiction.lib.tex190
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-shirts.lib.tex63
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-signs.lib.tex53
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-sport.lib.tex79
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-technology.lib.tex126
-rw-r--r--Master/texmf-dist/tex/latex/tikzpingus/tikzpingus.sty2470
-rw-r--r--Master/texmf-dist/tex/latex/tikzquads/tikzquads.sty27
-rw-r--r--Master/texmf-dist/tex/latex/tikzquests/tikzquests.sty53
-rw-r--r--Master/texmf-dist/tex/latex/timeop/timeop.sty280
-rw-r--r--Master/texmf-dist/tex/latex/titlesec/titleps.sty4
-rw-r--r--Master/texmf-dist/tex/latex/titlesec/titlesec.sty4
-rw-r--r--Master/texmf-dist/tex/latex/titlesec/titletoc.sty17
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz-elements.sty48
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_circle.lua328
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_class.lua4
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_ellipse.lua4
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_circles.lua153
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_intersections.lua259
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_lines.lua116
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_maths.lua35
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_matrices.lua4
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_points.lua43
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_regular.lua4
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_triangles.lua159
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_line.lua580
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_main.lua37
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_matrices.lua51
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_misc.lua86
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_parallelogram.lua4
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_point.lua161
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_quadrilateral.lua4
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_rectangle.lua66
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_regular.lua24
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_square.lua94
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_triangle.lua119
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_vector.lua4
-rw-r--r--Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty180
-rw-r--r--Master/texmf-dist/tex/latex/to-be-determined/to-be-determined.sty11
-rw-r--r--Master/texmf-dist/tex/latex/tools/.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tools/array.sty26
-rw-r--r--Master/texmf-dist/tex/latex/tools/longtable.sty60
-rw-r--r--Master/texmf-dist/tex/latex/tools/multicol.sty16
-rw-r--r--Master/texmf-dist/tex/latex/tools/thb.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tools/thc.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tools/thcb.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tools/theorem.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tools/thm.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tools/thmb.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tools/thp.sty2
-rw-r--r--Master/texmf-dist/tex/latex/toptesi/topcoman.sty77
-rw-r--r--Master/texmf-dist/tex/latex/toptesi/topfront.sty82
-rw-r--r--Master/texmf-dist/tex/latex/toptesi/toptesi-dottorale.sty81
-rw-r--r--Master/texmf-dist/tex/latex/toptesi/toptesi-magistrale.sty81
-rw-r--r--Master/texmf-dist/tex/latex/toptesi/toptesi-monografia.sty81
-rw-r--r--Master/texmf-dist/tex/latex/toptesi/toptesi-scudo.sty75
-rw-r--r--Master/texmf-dist/tex/latex/toptesi/toptesi-sss.sty80
-rw-r--r--Master/texmf-dist/tex/latex/toptesi/toptesi.cfg73
-rw-r--r--Master/texmf-dist/tex/latex/toptesi/toptesi.cls75
-rw-r--r--Master/texmf-dist/tex/latex/toptesi/toptesi.sty87
-rw-r--r--Master/texmf-dist/tex/latex/tracklang/tracklang-scripts.sty4
-rw-r--r--Master/texmf-dist/tex/latex/tracklang/tracklang.sty296
-rw-r--r--Master/texmf-dist/tex/latex/trivialpursuit/TrivialPursuit.sty857
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa.sty111
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa2008.sty132
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa.sty67
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa2008.sty61
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa.sty251
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2008.sty181
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2023.sty397
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa.sty351
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa2008.sty423
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa-mecheng.sty38
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa.sty94
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2008.sty56
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2023.sty55
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tuda-a0paper.clo54
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tuda-a1paper.clo54
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tuda-a2paper.clo54
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tuda-a3paper.clo54
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tuda-a4paper.clo54
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tuda-a5paper.clo54
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tuda-pgfplots.sty232
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudabeamer.cls366
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudacolors.def15
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudacolors.sty208
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls1554
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudafonts.sty153
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudaleaflet.cls687
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudaletter.cls988
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudalettersize10pt.clo54
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudamecheng.cfg19
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudaposter.cls892
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudapub.cls2322
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudarules.sty244
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudasciposter.cls1083
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudasize9pt.clo173
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudathesis.cfg1093
-rw-r--r--Master/texmf-dist/tex/latex/tugboat/ltugboat.cls54
-rw-r--r--Master/texmf-dist/tex/latex/tugboat/ltugboat.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tugboat/ltugcomn.sty22
-rw-r--r--Master/texmf-dist/tex/latex/tugboat/ltugproc.cls2
-rw-r--r--Master/texmf-dist/tex/latex/tugboat/ltugproc.sty2
-rw-r--r--Master/texmf-dist/tex/latex/turnthepage/turnpageetex.sty44
-rw-r--r--Master/texmf-dist/tex/latex/turnthepage/turnpagewoetex.sty71
-rw-r--r--Master/texmf-dist/tex/latex/turnthepage/turnthepage.sty26
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw.css.cls234
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-color.css.cls238
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark.css.cls238
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft.css.cls222
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-en.loc.cls19
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-es.loc.cls19
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-fr.loc.cls19
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-locale-main-english.cfg.sty17
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-locale-main-french.cfg.sty17
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc.cls1669
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc.sty1078
-rw-r--r--Master/texmf-dist/tex/latex/ucph-revy/ucph-revy.cls23
-rw-r--r--Master/texmf-dist/tex/latex/udiss/logos/udiss-logo-ukerala.pngbin0 -> 66033 bytes
-rw-r--r--Master/texmf-dist/tex/latex/udiss/udiss.cls1868
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty10
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-en.def2
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-ptBR.def2
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty10
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty10
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty10
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty10
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty10
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty10
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty10
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls10
-rw-r--r--Master/texmf-dist/tex/latex/unbtex/unbtex.cls753
-rw-r--r--Master/texmf-dist/tex/latex/undolabl/undolabl.sty95
-rw-r--r--Master/texmf-dist/tex/latex/univie-ling/univie-ling-expose.cls19
-rw-r--r--Master/texmf-dist/tex/latex/univie-ling/univie-ling-handout.cls19
-rw-r--r--Master/texmf-dist/tex/latex/univie-ling/univie-ling-paper.cls19
-rw-r--r--Master/texmf-dist/tex/latex/univie-ling/univie-ling-poster.cls2
-rw-r--r--Master/texmf-dist/tex/latex/univie-ling/univie-ling-thesis.cls113
-rw-r--r--Master/texmf-dist/tex/latex/univie-ling/univie-ling-wlg.cls30
-rw-r--r--Master/texmf-dist/tex/latex/univie-ling/univie-ling.bbx50
-rw-r--r--Master/texmf-dist/tex/latex/univie-ling/univie-ling.cbx2
-rw-r--r--Master/texmf-dist/tex/latex/updatemarks/updatemarks.sty17
-rw-r--r--Master/texmf-dist/tex/latex/useclass/useclass.sty3
-rw-r--r--Master/texmf-dist/tex/latex/venturis/t1yvt.fd97
-rw-r--r--Master/texmf-dist/tex/latex/venturis/t1yvtajw.fd86
-rw-r--r--Master/texmf-dist/tex/latex/venturis/t1yvtaw.fd86
-rw-r--r--Master/texmf-dist/tex/latex/venturis/t1yvtd.fd82
-rw-r--r--Master/texmf-dist/tex/latex/venturis/t1yvtj.fd86
-rw-r--r--Master/texmf-dist/tex/latex/venturis/t1yvtjw.fd86
-rw-r--r--Master/texmf-dist/tex/latex/venturis/t1yvtw.fd86
-rw-r--r--Master/texmf-dist/tex/latex/venturis/ts1yvt.fd97
-rw-r--r--Master/texmf-dist/tex/latex/venturis/ts1yvtajw.fd86
-rw-r--r--Master/texmf-dist/tex/latex/venturis/ts1yvtaw.fd86
-rw-r--r--Master/texmf-dist/tex/latex/venturis/ts1yvtd.fd78
-rw-r--r--Master/texmf-dist/tex/latex/venturis/ts1yvtj.fd86
-rw-r--r--Master/texmf-dist/tex/latex/venturis/ts1yvtjw.fd86
-rw-r--r--Master/texmf-dist/tex/latex/venturis/ts1yvtw.fd86
-rw-r--r--Master/texmf-dist/tex/latex/venturis2/t1yv2.fd84
-rw-r--r--Master/texmf-dist/tex/latex/venturis2/ts1yv2.fd84
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/t1yv1.fd163
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/t1yv1d.fd135
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/t1yv2.fd105
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/t1yv3.fd98
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/t1yvo.fd (renamed from Master/texmf-dist/tex/latex/venturisold/t1yvo.fd)27
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/t1yvoa.fd (renamed from Master/texmf-dist/tex/latex/venturisold/t1yvoa.fd)27
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/t1yvoad.fd46
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/t1yvod.fd46
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/t1yvt.fd116
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/t1yvtajw.fd103
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/t1yvtaw.fd103
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/t1yvtd.fd101
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/t1yvtj.fd103
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/t1yvtjw.fd103
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/t1yvtw.fd103
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/ts1yv1.fd163
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/ts1yv1d.fd135
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/ts1yv2.fd105
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/ts1yv3.fd98
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/ts1yvo.fd (renamed from Master/texmf-dist/tex/latex/venturisold/ts1yvo.fd)27
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/ts1yvoa.fd (renamed from Master/texmf-dist/tex/latex/venturisold/ts1yvoa.fd)27
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/ts1yvoad.fd46
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/ts1yvod.fd46
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/ts1yvt.fd116
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/ts1yvtajw.fd103
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/ts1yvtaw.fd103
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/ts1yvtd.fd97
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/ts1yvtj.fd103
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/ts1yvtjw.fd103
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/ts1yvtw.fd103
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/venturis.sty164
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/venturis2.sty121
-rw-r--r--Master/texmf-dist/tex/latex/venturisadf/venturisold.sty78
-rw-r--r--Master/texmf-dist/tex/latex/venturisold/t1yvoad.fd31
-rw-r--r--Master/texmf-dist/tex/latex/venturisold/t1yvod.fd31
-rw-r--r--Master/texmf-dist/tex/latex/venturisold/ts1yvoad.fd31
-rw-r--r--Master/texmf-dist/tex/latex/venturisold/ts1yvod.fd31
-rw-r--r--Master/texmf-dist/tex/latex/venturissans/t1yv1.fd134
-rw-r--r--Master/texmf-dist/tex/latex/venturissans/t1yv1d.fd106
-rw-r--r--Master/texmf-dist/tex/latex/venturissans/ts1yv1.fd134
-rw-r--r--Master/texmf-dist/tex/latex/venturissans/ts1yv1d.fd106
-rw-r--r--Master/texmf-dist/tex/latex/venturissans2/t1yv3.fd79
-rw-r--r--Master/texmf-dist/tex/latex/venturissans2/ts1yv3.fd79
-rw-r--r--Master/texmf-dist/tex/latex/verifiche/verifiche.sty73
-rw-r--r--Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.chit.code.tex741
-rw-r--r--Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.hex.code.tex370
-rw-r--r--Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.natoapp6c.code.tex414
-rw-r--r--Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.util.code.tex11
-rw-r--r--Master/texmf-dist/tex/latex/wargame/wargame.beach.pdfbin14443 -> 14443 bytes
-rw-r--r--Master/texmf-dist/tex/latex/wargame/wargame.city.pdfbin17802 -> 17802 bytes
-rw-r--r--Master/texmf-dist/tex/latex/wargame/wargame.fields.pdfbin0 -> 3397 bytes
-rw-r--r--Master/texmf-dist/tex/latex/wargame/wargame.light_woods.pdfbin14745 -> 14745 bytes
-rw-r--r--Master/texmf-dist/tex/latex/wargame/wargame.mountains.pdfbin14444 -> 14444 bytes
-rw-r--r--Master/texmf-dist/tex/latex/wargame/wargame.rough.pdfbin19733 -> 19733 bytes
-rw-r--r--Master/texmf-dist/tex/latex/wargame/wargame.speckle.pdfbin0 -> 20677 bytes
-rw-r--r--Master/texmf-dist/tex/latex/wargame/wargame.swamp.pdfbin5589 -> 5589 bytes
-rw-r--r--Master/texmf-dist/tex/latex/wargame/wargame.town.pdfbin6321 -> 6321 bytes
-rw-r--r--Master/texmf-dist/tex/latex/wargame/wargame.village.pdfbin4066 -> 4066 bytes
-rw-r--r--Master/texmf-dist/tex/latex/wargame/wargame.woods.pdfbin16470 -> 16470 bytes
-rw-r--r--Master/texmf-dist/tex/latex/wargame/wgexport.cls170
-rwxr-xr-xMaster/texmf-dist/tex/latex/wargame/wgexport.py1620
-rwxr-xr-xMaster/texmf-dist/tex/latex/wargame/wgmakenato.py756
-rw-r--r--Master/texmf-dist/tex/latex/warning/warning.sty18
-rw-r--r--Master/texmf-dist/tex/latex/whatsnote/litebook.cls26
-rw-r--r--Master/texmf-dist/tex/latex/whatsnote/litesolution.cls26
-rw-r--r--Master/texmf-dist/tex/latex/whatsnote/thmlist.sty27
-rw-r--r--Master/texmf-dist/tex/latex/whatsnote/whats-cover-module.code.tex107
-rw-r--r--Master/texmf-dist/tex/latex/whatsnote/whats-font-module.code.tex62
-rw-r--r--Master/texmf-dist/tex/latex/whatsnote/whats-layout-module.code.tex101
-rw-r--r--Master/texmf-dist/tex/latex/whatsnote/whats-theorem-module.code.tex101
-rw-r--r--Master/texmf-dist/tex/latex/whatsnote/whatsnote.cls107
-rw-r--r--Master/texmf-dist/tex/latex/writeongrid/WriteOnGrid.sty84
-rw-r--r--Master/texmf-dist/tex/latex/xcharter-math/xcharter-otf.sty4
-rw-r--r--Master/texmf-dist/tex/latex/xcolor/svgnam.def4
-rw-r--r--Master/texmf-dist/tex/latex/xcolor/x11nam.def4
-rw-r--r--Master/texmf-dist/tex/latex/xcolor/xcolor.sty23
-rw-r--r--Master/texmf-dist/tex/latex/xcomment/xcomment.sty (renamed from Master/texmf-dist/tex/generic/xcomment/xcomment.tex)16
-rw-r--r--Master/texmf-dist/tex/latex/xgreek/xelistings.sty2
-rw-r--r--Master/texmf-dist/tex/latex/xgreek/xgreek.sty34
-rw-r--r--Master/texmf-dist/tex/latex/xindex/xindex.sty2
-rw-r--r--Master/texmf-dist/tex/latex/xltabular/xltabular.sty91
-rw-r--r--Master/texmf-dist/tex/latex/yb-book/yb-book.cls165
-rw-r--r--Master/texmf-dist/tex/latex/yfonts-otf/yfonts-otf.sty9
-rw-r--r--Master/texmf-dist/tex/latex/ysabeau/ysabeau.sty33
-rw-r--r--Master/texmf-dist/tex/latex/zref-check/zref-check.sty26
-rw-r--r--Master/texmf-dist/tex/latex/zref-clever/zref-clever-german.lang224
-rw-r--r--Master/texmf-dist/tex/latex/zref-clever/zref-clever-russian.lang336
-rw-r--r--Master/texmf-dist/tex/latex/zref-clever/zref-clever-swedish.lang238
-rw-r--r--Master/texmf-dist/tex/latex/zref-clever/zref-clever.sty1201
-rw-r--r--Master/texmf-dist/tex/latex/zref-vario/zref-vario.sty28
-rw-r--r--Master/texmf-dist/tex/latex/zugferd/zugferd-invoice.sty40
-rw-r--r--Master/texmf-dist/tex/latex/zugferd/zugferd.sty464
-rwxr-xr-xMaster/texmf-dist/tex/lualatex/bezierplot/bezierplot.lua36
-rw-r--r--Master/texmf-dist/tex/lualatex/bezierplot/bezierplot.sty4
-rw-r--r--Master/texmf-dist/tex/lualatex/gitinfo-lua/gitinfo-lua.sty11
-rw-r--r--Master/texmf-dist/tex/lualatex/letgut/informations-gut.tex22
-rw-r--r--Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty51
-rw-r--r--Master/texmf-dist/tex/lualatex/letgut/letgut.cbx2
-rw-r--r--Master/texmf-dist/tex/lualatex/letgut/letgut.cls330
-rw-r--r--Master/texmf-dist/tex/lualatex/letgut/letgut.dbx2
-rw-r--r--Master/texmf-dist/tex/lualatex/letgut/letgut.lbx2
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-demo.sty4
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amsmath.sty32
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amstext.sty2
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-patches-array.sty45
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-patches-kernel.sty41
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-patches-lab-math.sty2
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-patches-mathtools.sty35
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-pdf-demo.sty2
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-pdf.sty22
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-structelemwriter.lua20
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-table.lua2
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-tex-annotate.lua13
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml.sty26
-rw-r--r--Master/texmf-dist/tex/lualatex/luatbls/luatbls.lua373
-rw-r--r--Master/texmf-dist/tex/lualatex/luatbls/luatbls.sty184
-rw-r--r--Master/texmf-dist/tex/lualatex/odsfile/odsfile.lua21
-rw-r--r--Master/texmf-dist/tex/lualatex/odsfile/odsfile.sty62
-rw-r--r--Master/texmf-dist/tex/lualatex/piton/piton.lua2299
-rw-r--r--Master/texmf-dist/tex/lualatex/piton/piton.sty499
-rw-r--r--Master/texmf-dist/tex/lualatex/plantuml/plantuml.lua9
-rw-r--r--Master/texmf-dist/tex/lualatex/plantuml/plantuml.sty18
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-AU.lua2
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua2
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-RU.lua2
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua14
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-baselib.lua2
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua2
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-no_uca.lua2
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-uca.lua13
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-danteedition.lua2
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua2
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua133
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-norsk.lua2
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua2
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-yannis.lua2
-rw-r--r--Master/texmf-dist/tex/luatex/addtoluatexpath/addtoluatexpath.sty92
-rw-r--r--Master/texmf-dist/tex/luatex/luakeys/luakeys-debug.sty2
-rw-r--r--Master/texmf-dist/tex/luatex/luakeys/luakeys.lua4
-rw-r--r--Master/texmf-dist/tex/luatex/luakeys/luakeys.sty2
-rw-r--r--Master/texmf-dist/tex/luatex/luamplib/luamplib.lua316
-rw-r--r--Master/texmf-dist/tex/luatex/luamplib/luamplib.sty518
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltj-adjust.lua34
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua6
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/luatexja-core.sty5
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/luatexja.sty2
-rw-r--r--Master/texmf-dist/tex/luatex/luaxml/luaxml-domobject.lua95
-rw-r--r--Master/texmf-dist/tex/luatex/luaxml/luaxml-encodings.lua1
-rw-r--r--Master/texmf-dist/tex/luatex/luaxml/luaxml-htmltemplates.lua144
-rw-r--r--Master/texmf-dist/tex/luatex/luaxml/luaxml-mod-html.lua14
-rw-r--r--Master/texmf-dist/tex/luatex/luaxml/luaxml-namedentities.lua4167
-rw-r--r--Master/texmf-dist/tex/luatex/luaxml/luaxml-sty.lua155
-rw-r--r--Master/texmf-dist/tex/luatex/luaxml/luaxml-transform.lua7
-rw-r--r--Master/texmf-dist/tex/luatex/luaxml/luaxml.sty142
-rw-r--r--Master/texmf-dist/tex/luatex/lutabulartools/lutabulartools.lua6
-rw-r--r--Master/texmf-dist/tex/luatex/lutabulartools/lutabulartools.sty15
-rw-r--r--Master/texmf-dist/tex/luatex/markdown/markdown-parser.lua178
-rw-r--r--Master/texmf-dist/tex/luatex/markdown/markdown-tinyyaml.lua882
-rw-r--r--Master/texmf-dist/tex/luatex/markdown/markdown-unicode-data.lua81
-rw-r--r--Master/texmf-dist/tex/luatex/markdown/markdown.lua10
-rw-r--r--Master/texmf-dist/tex/luatex/nodetree/nodetree-embed.sty4
-rw-r--r--Master/texmf-dist/tex/luatex/nodetree/nodetree.lua33
-rw-r--r--Master/texmf-dist/tex/luatex/nodetree/nodetree.sty4
-rw-r--r--Master/texmf-dist/tex/luatex/nodetree/nodetree.tex2
-rw-r--r--Master/texmf-dist/tex/luatex/penlight/penlight.lua355
-rw-r--r--Master/texmf-dist/tex/luatex/penlight/penlight.sty6
-rw-r--r--Master/texmf-dist/tex/luatex/penlightplus/penlightplus.lua690
-rw-r--r--Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty159
-rw-r--r--Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua-data.lua35143
-rw-r--r--Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua.lua1170
-rw-r--r--Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua.opm48
-rw-r--r--Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua.sty7
-rw-r--r--Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua.tex5
-rw-r--r--Master/texmf-dist/tex/optex/base/bib-iso690.opm10
-rw-r--r--Master/texmf-dist/tex/optex/base/cite-bib.opm4
-rw-r--r--Master/texmf-dist/tex/optex/base/colors.opm6
-rw-r--r--Master/texmf-dist/tex/optex/base/doc.opm8
-rw-r--r--Master/texmf-dist/tex/optex/base/f-baskervald.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/f-baskerville.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/f-erewhon.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/f-fbb.opm4
-rw-r--r--Master/texmf-dist/tex/optex/base/f-fraunces.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/f-heros.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/f-jost.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/f-kerkis.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/f-lido.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/f-lmfonts.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/f-neohellenic.opm23
-rw-r--r--Master/texmf-dist/tex/optex/base/f-newcm.opm11
-rw-r--r--Master/texmf-dist/tex/optex/base/f-oldstandard.opm4
-rw-r--r--Master/texmf-dist/tex/optex/base/f-plex.opm56
-rw-r--r--Master/texmf-dist/tex/optex/base/f-poltawski.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/f-raleway.opm32
-rw-r--r--Master/texmf-dist/tex/optex/base/f-technika.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/fams-ini.opm33
-rw-r--r--Master/texmf-dist/tex/optex/base/fonts-opmac.opm6
-rw-r--r--Master/texmf-dist/tex/optex/base/fonts-preload.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/fonts-resize.opm6
-rw-r--r--Master/texmf-dist/tex/optex/base/fonts-select.opm39
-rw-r--r--Master/texmf-dist/tex/optex/base/graphics.opm7
-rw-r--r--Master/texmf-dist/tex/optex/base/hisyntax-kt.opm (renamed from Master/texmf-dist/tex/optex/base/hisytnax-kt.opm)0
-rw-r--r--Master/texmf-dist/tex/optex/base/hyperlinks.opm4
-rw-r--r--Master/texmf-dist/tex/optex/base/if-macros.opm70
-rw-r--r--Master/texmf-dist/tex/optex/base/lang-data.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/lists.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/logos.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/makeindex.opm60
-rw-r--r--Master/texmf-dist/tex/optex/base/maketoc.opm6
-rw-r--r--Master/texmf-dist/tex/optex/base/margins.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/math-macros.opm15
-rw-r--r--Master/texmf-dist/tex/optex/base/math-preload.opm4
-rw-r--r--Master/texmf-dist/tex/optex/base/more-macros.opm64
-rw-r--r--Master/texmf-dist/tex/optex/base/multicolumns.opm55
-rw-r--r--Master/texmf-dist/tex/optex/base/optex-tricks.opm475
-rw-r--r--Master/texmf-dist/tex/optex/base/optex.ini2
-rw-r--r--Master/texmf-dist/tex/optex/base/optex.lua35
-rw-r--r--Master/texmf-dist/tex/optex/base/others.opm43
-rw-r--r--Master/texmf-dist/tex/optex/base/output.opm4
-rw-r--r--Master/texmf-dist/tex/optex/base/parameters.opm6
-rw-r--r--Master/texmf-dist/tex/optex/base/pdfuni-string.opm4
-rw-r--r--Master/texmf-dist/tex/optex/base/prefixed.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/ref-file.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/sections.opm12
-rw-r--r--Master/texmf-dist/tex/optex/base/slides.opm4
-rw-r--r--Master/texmf-dist/tex/optex/base/styles.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/table.opm30
-rw-r--r--Master/texmf-dist/tex/optex/base/uni-lcuc.opm4
-rw-r--r--Master/texmf-dist/tex/optex/base/unimath-codes.opm6
-rw-r--r--Master/texmf-dist/tex/optex/base/unimath-macros.opm6
-rw-r--r--Master/texmf-dist/tex/optex/base/usebib.opm12
-rw-r--r--Master/texmf-dist/tex/optex/base/verbatim.opm26
-rw-r--r--Master/texmf-dist/tex/optex/demo/op-slides.tex2
-rw-r--r--Master/texmf-dist/tex/optex/pkg/emoji.opm2
-rw-r--r--Master/texmf-dist/tex/optex/pkg/math.opm75
-rw-r--r--Master/texmf-dist/tex/optex/pkg/minim-pdf.opm2
-rw-r--r--Master/texmf-dist/tex/optex/pkg/minim.opm8
-rw-r--r--Master/texmf-dist/tex/optex/pkg/mte.opm4
-rw-r--r--Master/texmf-dist/tex/optex/pkg/qrcode.opm21
-rw-r--r--Master/texmf-dist/tex/optex/pkg/tikz.opm2
-rw-r--r--Master/texmf-dist/tex/optex/pkg/vlna.opm2
-rw-r--r--Master/texmf-dist/tex/plain/cweb/ctwimac.tex26
-rw-r--r--Master/texmf-dist/tex/plain/cweb/cwebacromac.tex31
-rw-r--r--Master/texmf-dist/tex/plain/cweb/cwebbin/pdfctwimac.tex59
-rw-r--r--Master/texmf-dist/tex/plain/cweb/cwebmac.tex17
-rw-r--r--Master/texmf-dist/tex/plain/memoize/memoizable.tex2
-rw-r--r--Master/texmf-dist/tex/plain/memoize/memoize.tex97
-rw-r--r--Master/texmf-dist/tex/plain/tugboat-plain/tugboat.cmn39
-rw-r--r--Master/texmf-dist/tex/plain/tugboat-plain/tugboat.sty47
-rw-r--r--Master/texmf-dist/tex/texinfo/texinfo.tex114
-rw-r--r--Master/texmf-dist/tex/xelatex/bhcexam/BHCexam.cls218
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/adjmulticol-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/algorithm2e-xetex-bidi.def18
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/amsart-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/amsbook-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/amsmath-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/amstext-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/amsthm-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/array-xetex-bidi.def57
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/article-xetex-bidi.def16
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/artikel1-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/artikel2-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/artikel3-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/arydshln-xetex-bidi.def10
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamer-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerbaseauxtemplates-xetex-bidi.def30
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerbaseboxes-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerbasecolor-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerbasecompatibility-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerbaseframecomponents-xetex-bidi.def17
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerbaseframesize-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerbaselocalstructure-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerbasemisc-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerbasenavigation-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerbaseoverlay-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemecircles-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemedefault-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemefocus-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemeinmargin-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerinnerthememetropolis-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerectangles-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerounded-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerouterthemedefault-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerouterthemefocus-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeinfolines-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerouterthememetropolis-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerouterthememiniframes-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeshadow-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesidebar-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothbars-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothtree-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesplit-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerouterthemetree-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerthemeHannover-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/beamerthemeSingapore-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/bidi-bibitem.pdfbin0 -> 2936 bytes
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/bidi-media9.sty4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/bidi-perpage.sty4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/bidi.sty374
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/bidi.tex41
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/bidi2in1.sty4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/bidicode.sty8
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/bidiftnxtra.sty4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/bidimoderncv.cls4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/bidipoem.sty4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/biditools.sty845
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/biditufte-book.cls4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/biditufte-handout.cls4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/bidituftefloat.sty8
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/bidituftegeneralstructure.sty4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/bidituftehyperref.sty4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/bidituftesidenote.sty4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/bidituftetitle.sty4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/bidituftetoc.sty4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/boek-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/boek3-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/book-xetex-bidi.def8
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/bookest-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/breqn-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/cals-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/caption-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/caption3-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/color-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/colortbl-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/combine-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/crop-xetex-bidi.def8
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/cuted-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/cutwin-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/cvthemebidicasual.sty4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/cvthemebidiclassic.sty4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/dblfnote-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/diagbox-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/draftwatermark-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/empheq-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/eso-pic-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/extarticle-xetex-bidi.def23
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/extbook-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/extletter-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/extrafootnotefeatures-xetex-bidi.def8
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/extreport-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/fancybox-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/fancyhdr-xetex-bidi.def24
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/fix2col-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/fleqn-xetex-bidi.def10
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/float-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/floatrow-xetex-bidi.def7
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/flowfram-xetex-bidi.def14
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/footnote-xetex-bidi.def7
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/footnotebackref-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/framed-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/ftnright-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/geometry-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/graphicx-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/hvfloat-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/hyperref-xetex-bidi.def53
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/imsproc-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/latex-xetex-bidi.def373
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/leqno-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/letter-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/lettrine-xetex-bidi.def136
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/lineno-xetex-bidi.def20
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/listings-xetex-bidi.def8
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/loadingorder-xetex-bidi.def336
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/longtable-xetex-bidi.def82
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/lscape-xetex-bidi.def7
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/mathtools-xetex-bidi.def7
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/mdframed-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/media9-xetex-bidi.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/latex-localise-messages-xepersian.def)13
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/memoir-xetex-bidi.def10
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/midfloat-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/minitoc-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/multicol-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/multienum-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/natbib-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/newfloat-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/nicematrix-xetex-bidi.def8
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/ntheorem-hyper-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/ntheorem-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/overpic-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/pdfbase-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/pdflscape-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/pdfpages-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/pgfcorescopes.code-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/pgfsys-xetex-bidi.def (renamed from Master/texmf-dist/tex/xelatex/bidi/pgfsys.code-xetex-bidi.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/picinpar-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/plain-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/pstricks-xetex-bidi.def53
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/quotchap-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/ragged2e-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/rapport1-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/rapport3-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/refrep-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/report-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/rotating-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/scrartcl-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/scrbook-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/scrreprt-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/sidecap-xetex-bidi.def32
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/soul-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/stabular-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/subfigure-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/tabls-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/tabularx-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/tabulary-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/tc-xetex-xetex-bidi.def (renamed from Master/texmf-dist/tex/xelatex/bidi/tc-xetex-bidi.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/tcolorbox-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/titlesec-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/titletoc-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/tocbasic-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/tocbibind-xetex-bidi.def13
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/tocloft-xetex-bidi.def7
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/tocstyle-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/todonotes-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/wrapfig-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/xcolor-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/bidi/xltxtra-xetex-bidi.def4
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/beamerthemehdu.sty167
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/hdubadge.pdfbin0 -> 42717 bytes
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/hdulogo.pdfbin0 -> 29096 bytes
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/hdumotto.pdfbin0 -> 21089 bytes
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-bc.config-module.code.tex193
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-hdu.l3doc-module.code.tex103
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-hdu.stationery-module.code.tex128
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-layout-module.code.tex159
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-pg.config-module.code.tex282
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-typeset-module.code.tex53
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/hduthesis.cls184
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/hdutitle.pdfbin0 -> 22109 bytes
-rw-r--r--Master/texmf-dist/tex/xelatex/langsci/langsci-affiliations.sty88
-rw-r--r--Master/texmf-dist/tex/xelatex/langsci/langsci-gb4e.sty22
-rw-r--r--Master/texmf-dist/tex/xelatex/langsci/langsci-optional.sty43
-rw-r--r--Master/texmf-dist/tex/xelatex/langsci/langsci-textipa.sty8
-rw-r--r--Master/texmf-dist/tex/xelatex/langsci/langsci-unified.bbx19
-rw-r--r--Master/texmf-dist/tex/xelatex/langsci/langsci-unified.cbx63
-rw-r--r--Master/texmf-dist/tex/xelatex/langsci/langscibook.cls67
-rw-r--r--Master/texmf-dist/tex/xelatex/xduts/xdufont.sty4
-rw-r--r--Master/texmf-dist/tex/xelatex/xduts/xdupgthesis.cls48
-rw-r--r--Master/texmf-dist/tex/xelatex/xduts/xduugthesis.cls20
-rw-r--r--Master/texmf-dist/tex/xelatex/xduts/xduugtp.cls4
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/algorithm-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/algorithm-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/amsart-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/imsproc-xepersian.def)13
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/amsbook-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/amsbook-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/appendix-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/appendix-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/article-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/article-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/artikel1-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/artikel1-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/artikel2-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/artikel2-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/artikel3-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/artikel3-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/backref-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/backref-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/beamer-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/beamer-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/beamerbasetranslator-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/beamerbasetranslator-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/boek-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/boek3-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/boek3-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/boek-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/book-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/extbook-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/bookest-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/report-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/breqn-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/breqn-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/color-localize-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/color-localise-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/enumerate-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/enumerate-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/enumitem-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/enumitem-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/extarticle-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/extarticle-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/extbook-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/book-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xetex-bidi-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/extreport-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/extreport-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/fancyref-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/fancyref-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/footnote-xetex-bidi-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/footnote-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/framed-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/framed-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/glossaries-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/glossaries-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/hyperref-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/hyperref-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/imsproc-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/amsart-xepersian.def)13
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/kashida-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/kashida-xepersian.def)56
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/latex-localize-commands-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/latex-localise-commands-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/latex-localize-environments-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/latex-localise-environments-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/latex-localize-messages-xetex-xepersian.def43
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/latex-localize-misc-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/latex-localise-misc-xepersian.def)32
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/listings-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/listings-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/loadingorder-xepersian.def81
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/localize-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/localise-xepersian.def)35
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/memoir-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/memoir-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/minitoc-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/minitoc-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/natbib-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/natbib-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/packages-localize-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/packages-localise-xepersian.def)29
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/rapport1-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/rapport3-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/rapport3-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/rapport1-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/refrep-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/bookest-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/report-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/refrep-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/scrbook-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/scrbook-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/soul-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/soul-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/tocloft-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/tocloft-xepersian.def)13
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/url-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/url-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/varioref-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/varioref-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-commands-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-commands-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-environments-xetex-xepersian.def (renamed from Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-environments-xepersian.def)12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls4
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathdigitspec.sty34
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty4
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty12
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty604
3505 files changed, 228114 insertions, 79418 deletions
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/antykwa-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/antykwa-math.lfg
index abdc20a7e79..b0f401d62e1 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/antykwa-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/antykwa-math.lfg
@@ -155,6 +155,9 @@ if common then
set = { "ignorekerndimensions" }
}, -- we have dp > ht fences
{
+ tweak = "wipecues",
+ },
+ {
tweak = "fixprimes",
factor = 1.0, -- accent base height
fake = 0.9, -- replace multiples with this width proportion
@@ -167,6 +170,9 @@ if common then
tweak = "addfourier",
},
{
+ tweak = "addcomposites",
+ },
+ {
tweak = "keepbases",
-- list = { 0x302 }
list = "default"
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/bonum-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/bonum-math.lfg
index c46e6c3494b..a92cdfb5275 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/bonum-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/bonum-math.lfg
@@ -41,27 +41,30 @@ return {
tweak = "addmirrors",
},
{
+ tweak = "addcomposites",
+ },
+ {
tweak = "replacealphabets",
list = {
{
source = { first = 0x003B1 }, -- upright alpha
- filename = "texgyrebonummath-companion.otf",
+ filename = "texgyrebonummathcompanion-regular.otf",
},
{
source = { first = 0x1D6FC }, -- italic alpha
- filename = "texgyrebonummath-companion.otf",
+ filename = "texgyrebonummathcompanion-regular.otf",
},
{
source = { first = 0x1D6C2 }, -- bold upright alpha
- filename = "texgyrebonummath-companion.otf",
+ filename = "texgyrebonummathcompanion-regular.otf",
},
{
source = { first = 0x1D736 }, -- bold italic alpha
- filename = "texgyrebonummath-companion.otf",
+ filename = "texgyrebonummathcompanion-regular.otf",
},
{
source = { first = 0x02980 }, -- triplebar
- filename = "TeXGyreBonumMath-Companion.otf",
+ filename = "texgyrebonummathcompanion-regular.otf",
},
},
},
@@ -81,6 +84,9 @@ return {
tweak = "checkaccents",
},
{
+ tweak = "wipecues",
+ },
+ {
-- We need to check these, are the tweaks necessary or not?
tweak = "dimensions",
list = {
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/cambria-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/cambria-math.lfg
index 04538443204..26c445aff53 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/cambria-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/cambria-math.lfg
@@ -23,6 +23,9 @@ return {
{
tweak = "addmirrors",
},
+ {
+ tweak = "addcomposites",
+ },
presets.scripttocalligraphic { },
presets.rsfstoscript { rscale = 0.97 },
presets.rsfsuprighttoscript { rscale = 0.97 },
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/common-math-jmn.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/common-math-jmn.lfg
index 1df814b2fda..a3a69ba48cb 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/common-math-jmn.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/common-math-jmn.lfg
@@ -180,11 +180,11 @@ return {
builders.extension(main,0x27F9,dfl,dfm,dar,ffactor,mfactor,lfactor)
builders.extension(main,0x27FA,dal,dfm,dar,ffactor,mfactor,lfactor)
- local tfactor = antykwa and -0.8 or -1.1 -- move up check MS
- local bfactor = antykwa and 0.1 or 0.2
+ -- local tfactor = antykwa and -0.8 or -1.1 -- move up check MS
+ -- local bfactor = antykwa and 0.1 or 0.2
-local tfactor = antykwa and -0.6 or -.6 -- move up check MS
-local bfactor = antykwa and 0.1 or 0.2
+ local tfactor = antykwa and -0.6 or -.6 -- move up check MS
+ local bfactor = antykwa and 0.1 or 0.2
local left = characters[0x27F5]
local right = characters[0x27F6]
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/common-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/common-math.lfg
index c7347413d7b..d491e7b8018 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/common-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/common-math.lfg
@@ -91,13 +91,13 @@ return {
{
source = "uppercasescript",
target = "uppercasescript",
- filename = "ralphsmithsformalscript-companion.otf",
+ filename = "ralphsmithsformalscriptcompanion-regular.otf",
rscale = parameters.rscale,
},
{
source = "uppercaseboldscript",
target = "uppercaseboldscript",
- filename = "ralphsmithsformalscript-companion.otf",
+ filename = "ralphsmithsformalscriptcompanion-regular.otf",
rscale = parameters.rscale,
},
},
@@ -111,14 +111,14 @@ return {
{
source = "uppercasescript",
target = "uppercasescript",
- filename = "ralphsmithsformalscript-companion.otf",
+ filename = "ralphsmithsformalscriptcompanion-regular.otf",
rscale = parameters.rscale,
feature = "ss01",
},
{
source = "uppercaseboldscript",
target = "uppercaseboldscript",
- filename = "ralphsmithsformalscript-companion.otf",
+ filename = "ralphsmithsformalscriptcompanion-regular.otf",
rscale = parameters.rscale,
feature = "ss01",
},
@@ -147,19 +147,19 @@ return {
{
source = "arabicmathematicalalphabeticsymbols",
target = "arabicmathematicalalphabeticsymbols",
- filename = "xitsmath-companion.otf",
+ filename = "xitsmathcompanion-regular.otf",
rscale = parameters.rscale,
},
{
source = "digitsarabicindic",
target = "digitsarabicindic",
- filename = "xitsmath-companion.otf",
+ filename = "xitsmathcompanion-regular.otf",
rscale = parameters.rscale,
},
{
source = "digitsextendedarabicindic",
target = "digitsextendedarabicindic",
- filename = "xitsmath-companion.otf",
+ filename = "xitsmathcompanion-regular.otf",
rscale = parameters.rscale,
},
},
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/concrete-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/concrete-math.lfg
index 7765c66b178..acad224b1e2 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/concrete-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/concrete-math.lfg
@@ -40,6 +40,9 @@ return {
presets.moveintegrals { factor = 1.5 },
presets.wipeitalics { },
{
+ tweak = "addcomposites",
+ },
+ {
tweak = "checkaccents",
},
{
@@ -88,6 +91,9 @@ return {
tweak = "flattenaccents",
},
{
+ tweak = "accentdimensions",
+ },
+ {
tweak = "radicaldegreeanchors",
list = {
["0x221A.parts.bottom"] = { location = "left", hfactor = .0, vfactor = 1.075 },
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/dejavu-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/dejavu-math.lfg
index 8e2a9b86695..fef5ba02ef8 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/dejavu-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/dejavu-math.lfg
@@ -42,6 +42,9 @@ return {
{
tweak = "addmirrors",
},
+ {
+ tweak = "addcomposites",
+ },
presets.scripttocalligraphic { },
presets.rsfstoscript { rscale = 1.02 },
presets.rsfsuprighttoscript { rscale = 1.02 },
@@ -62,6 +65,9 @@ return {
tweak = "checkaccents",
},
{
+ tweak = "wipecues",
+ },
+ {
tweak = "kerns",
list = {
[0x1D453] = { bottomright = -.2 },
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/ebgaramond-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/ebgaramond-math.lfg
index 85c27db7ffc..7124499eaf5 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/ebgaramond-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/ebgaramond-math.lfg
@@ -42,6 +42,9 @@ return {
{
tweak = "addmirrors",
},
+ {
+ tweak = "addcomposites",
+ },
presets.scripttocalligraphic { },
presets.rsfstoscript { rscale = 0.95 },
presets.rsfsuprighttoscript { rscale = 0.95 },
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/erewhon-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/erewhon-math.lfg
index 7e9001e2cba..c53b345ae77 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/erewhon-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/erewhon-math.lfg
@@ -38,11 +38,15 @@ return {
tweak = "addmirrors",
},
{
- tweak = "dimensions",
- list = {
- ["0x222B.variants.*"] = { axis = .15 },
- },
- },
+ tweak = "addcomposites",
+ },
+ -- {
+ -- tweak = "dimensions",
+ -- comment = "no longer needed",
+ -- list = {
+ -- ["0x222B.variants.*"] = { axis = .15 },
+ -- },
+ -- },
{
tweak = "fixintegrals",
},
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/euler-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/euler-math.lfg
index 58dbad767ea..6d29c062c30 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/euler-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/euler-math.lfg
@@ -78,6 +78,9 @@ return {
{
tweak = "addmirrors",
},
+ {
+ tweak = "addcomposites",
+ },
presets.scripttocalligraphic { },
presets.rsfstoscript { },
presets.rsfsuprighttoscript { },
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/generic-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/generic-math.lfg
index 2a55504da53..bbdd3be5457 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/generic-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/generic-math.lfg
@@ -16,8 +16,8 @@ return {
PrimeBaselineDropMax = "SuperscriptBaselineDropMax",
PrimeShiftUpCramped = "SuperscriptShiftUpCramped",
PrimeSpaceAfter = 0,
- PrimeWidthPercent = 50,
SpaceBeforeScript = "SpaceAfterScript",
+ SpaceBetweenScript = "SpaceAfterScript",
NoLimitSupFactor = 0,
NoLimitSubFactor = 0,
AccentTopShiftUp = 0,
@@ -51,6 +51,9 @@ return {
{
tweak = "simplifykerns",
},
+ {
+ tweak = "addcomposites",
+ },
presets.moveitalics {
correct = true
}, {
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/gfsneohellenic-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/gfsneohellenic-math.lfg
index 7525462e960..10d617d9bf7 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/gfsneohellenic-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/gfsneohellenic-math.lfg
@@ -44,6 +44,12 @@ return {
tweak = "checkaccents",
},
{
+ tweak = "wipecues",
+ },
+ {
+ tweak = "addcomposites",
+ },
+ {
tweak = "kerns",
list = {
["0x7D.parts.top"] = { topright = -0.25 }, -- right brace top
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/iwona-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/iwona-math.lfg
index 76131ad8ef7..e00e1b5ac1c 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/iwona-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/iwona-math.lfg
@@ -91,6 +91,9 @@ if common then
set = { "ignorekerndimensions" }
}, -- we have dp > ht fences
{
+ tweak = "wipecues",
+ },
+ {
tweak = "fixprimes",
factor = 1.0, -- accent base height
fake = 0.9, -- replace multiples with this width proportion
@@ -99,6 +102,9 @@ if common then
tweak = "addfourier",
},
{
+ tweak = "addcomposites",
+ },
+ {
tweak = "addequals",
force = true,
},
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/koeielettersot.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/koeielettersot.lfg
new file mode 100644
index 00000000000..74bf2dd4966
--- /dev/null
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/koeielettersot.lfg
@@ -0,0 +1,16 @@
+return {
+ name = "koeielettersot",
+ version = "1.00",
+ comment = "Goodies that complement koeielettersot",
+ author = "Hans Hagen",
+ copyright = "ConTeXt development team",
+ mathematics = {
+ rules = {
+ ["radical.extender"] = "radical.extender",
+ ["radical.end"] = "radical.end",
+ ["hrule.begin"] = "rule.begin",
+ ["hrule.extender"] = "rule.ex",
+ ["hrule.end"] = "rule.end",
+ }
+ }
+}
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/kpfonts-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/kpfonts-math.lfg
index 1286bcf7873..92ee2304e6f 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/kpfonts-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/kpfonts-math.lfg
@@ -28,7 +28,7 @@ return {
aftercopying = {
{
tweak = "version",
- expected = "Version 0.40",
+ expected = "Version 0.61",
},
{
tweak = "checkaccents",
@@ -66,6 +66,9 @@ return {
tweak = "addmirrors",
},
{
+ tweak = "addcomposites",
+ },
+ {
-- kpfonts have calligraphic at private slots
tweak = "replacealphabets",
list = {
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/kpfonts-text.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/kpfonts-text.lfg
index 6a14bec54f6..cad01c52dbf 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/kpfonts-text.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/kpfonts-text.lfg
@@ -9,7 +9,12 @@ return {
name = "kern", -- adds to kerns
type = "kern",
fonts = {
+ "KpRoman-Light",
"KpRoman-Regular",
+ "KpRoman-Semibold",
+ "KpRoman-Bold",
+ "KpSans-Regular",
+ "KpSans-Bold",
},
data = {
["f"] = {
@@ -24,8 +29,12 @@ return {
name = "kern", -- adds to kerns
type = "kern",
fonts = {
+ "KpRoman-LightItalic",
"KpRoman-Italic",
"KpRoman-SemiboldItalic",
+ "KpRoman-BoldItalic",
+ "KpSans-Italic",
+ "KpSans-BoldItalic",
},
data = {
["f"] = {
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/kurier-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/kurier-math.lfg
index 96154194ab3..bfec7305927 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/kurier-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/kurier-math.lfg
@@ -91,6 +91,9 @@ if common then
set = { "ignorekerndimensions" }
}, -- we have dp > ht fences
{
+ tweak = "wipecues",
+ },
+ {
tweak = "fixprimes",
factor = 1.0, -- accent base height
fake = 0.9, -- replace multiples with this width proportion
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/libertinus-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/libertinus-math.lfg
index e605ca6ff6f..78e7af2db5a 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/libertinus-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/libertinus-math.lfg
@@ -41,13 +41,7 @@ return {
{
tweak = "addmirrors",
},
- -- we have a weird middle integral piece
- {
- tweak = "dimensions",
- list = {
- [0x23AE] = { xoffset = -.19 },
- },
- },
+ -- We add extensiblesd when they are not there.
{
tweak = "fixintegrals",
},
@@ -92,6 +86,19 @@ return {
-- and then need to tweak the width (which is auto set because it was zero with a large
-- accent anchor offset). First we copy and fix.
{
+ tweak = "dimensions",
+ list = {
+ [0x302] = { width = 0 }, --hat
+ [0x303] = { width = 0 }, --tilde
+ -- The middle pice is shifted compared to the larger pieces.
+ -- And the integral stick out down left.
+ -- We fix the width and shift.
+ [0x2320] = { width = 1.2, xoffset = 0.191 },
+ [0x23AE] = { width = 1.2, }, -- bug
+ [0x2321] = { width = 1.2, xoffset = 0.191 },
+ },
+ },
+ {
tweak = "extendaccents",
},
{
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/lucida-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/lucida-math.lfg
new file mode 100644
index 00000000000..3669ef3768b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/lucida-math.lfg
@@ -0,0 +1,309 @@
+local common = fonts.goodies.load("common-math.lfg")
+local presets = common.mathematics.tweaks.presets
+
+local integral_variants = { bottomright = -0.20 }
+----- integral_top = { topright = 0.05 }
+local integral_bottom = { bottomright = -0.45 }
+
+return {
+ name = "lucida-opentype-math",
+ version = "1.00",
+ comment = "Goodies that complement lucida opentype.",
+ author = "Hans Hagen & Mikael Sundqvist",
+ copyright = "ConTeXt development team",
+ mathematics = {
+ parameters = {
+ FractionRuleThickness = 55,
+ -- AccentBaseDepth = 250,
+ FlattenedAccentBaseHeight = 710,-- slightly too large in the font
+ DelimiterPercent = 85,
+ DelimiterShortfall = 400,
+ DelimiterDisplayPercent = 90, -- MS
+ DelimiterDisplayShortfall = 400,
+ SuperscriptBottomMaxWithSubscript = 325,
+ PrimeShiftUp = "1.3*SuperscriptShiftUp",
+ PrimeShiftUpCramped = "1.3*SuperscriptShiftUp",
+ PrimeBaselineDropMax = "0.5*SuperscriptBaselineDropMax",
+ RadicalDisplayStyleVerticalGap = "RadicalVerticalGap", --172, 50
+-- RadicalKernBeforeExtensible = 100,
+-- RadicalKernAfterExtensible = 100,
+ },
+ scales = {
+ scriptxscale = 1025,
+ scriptyscale = 975,
+ scriptscriptxscale = 1050,
+ scriptscriptyscale = 950,
+ scriptweight = 20,
+ scriptscriptweight = 40,
+ },
+ tweaks = {
+ -- beforepassing = {
+ -- {
+ -- tweak = "scales",
+ -- scriptxscale = 1100,
+ -- scriptyscale = 900,
+ -- scriptscriptxscale = 1100,
+ -- scriptscriptyscale = 900,
+ -- },
+ -- },
+ aftercopying = {
+ {
+ tweak = "version",
+ expected = "Version 1.901",
+ },
+ {
+ tweak = "fixoldschool",
+ version = "Version 1.802",
+ },
+ {
+ tweak = "parameters",
+ feature = "boldmath",
+ list = {
+ RadicalRuleThickness = 60,
+ -- RadicalRuleThickness = "1.09*RadicalRuleThickness",
+ -- FractionRuleThickness = 65,
+ -- OverRuleThickness = 65,
+ -- UnderRuleThickness = 65,
+ }
+ },
+ {
+ tweak = "addmirrors",
+ },
+ presets.smalldigits { factor = 0.90 },
+ presets.scripttocalligraphic { },
+ presets.rsfstoscript { rscale = 1 },
+ presets.rsfsuprighttoscript { rscale = 1 },
+ presets.moderntocalligraphic { rscale = 1 },
+ presets.eulertocalligraphic { rscale = 1 },
+ presets.xitsarabic { rscale = 1.05 },
+ presets.fallbacks { },
+ presets.moveitalics { correct = true },
+ presets.moveitalics { correct = true, letters = true },
+ presets.moveintegrals { factor = 1.5 },
+ presets.wipeitalics { },
+ {
+ tweak = "replacealphabets",
+ filename = "lucidabrightot.otf",
+ keep = true,
+ list = {
+ { source = "latinsupplement" },
+ -- { source = "latinextendeda" },
+ -- { source = "latinextendedadditional" },
+ -- { source = "latinextendedb" },
+ -- { source = "latinextendedc" },
+ -- { source = "latinextendedd" },
+ -- { source = "latinextendede" },
+ -- { source = "latinextendedf" },
+ -- { source = "latinextendedg" },
+ },
+ },
+ {
+ tweak = "replacealphabets",
+ list = {
+ {
+ source = "uppercasescript",
+ target = "uppercasecalligraphic",
+ feature = "ss04",
+ },
+ {
+ source = "lowercasescript",
+ target = "lowercasecalligraphic",
+ feature = "ss04",
+ },
+ {
+ source = "uppercaseboldscript",
+ target = "uppercaseboldcalligraphic",
+ feature = "ss04",
+ },
+ -- No lowercase bold calligraphic/script in font
+ },
+ },
+ {
+ tweak = "dimensions",
+ version = "Version 1.802",
+ list = {
+ -- The < and > are slightly too small. We scale them by 867/795
+ ["0x003C"] = { scale = 1.09057, width = 1.09057, height = 1.09057 },
+ ["0x003E"] = { scale = 1.09057, width = 1.09057, height = 1.09057 },
+ },
+ },
+ {
+ tweak = "dimensions",
+ version = "Version 1.802",
+ list = {
+ -- these we fix here. Remove when we have new version of Lucida
+ ["0x23DC.parts.1"] = { xoffset = -0.075, height = 0.4, yoffset = -0.6 },
+ ["0x23DC.parts.2"] = { height = 0.4, yoffset = -0.6 },
+ ["0x23DC.parts.3"] = { xoffset = 0.075, height = 0.4, yoffset = -0.6 },
+ ["0x23DD.parts.1"] = { xoffset = -0.075, depth = 0.8, yoffset = 0.2 },
+ ["0x23DD.parts.2"] = { depth = 0.8, yoffset = 0.2 },
+ ["0x23DD.parts.3"] = { xoffset = 0.075, depth = 0.8, yoffset = 0.2 },
+ ["0x7C.variants.3"] = { squeeze = 0.90, height = 0.90, depth = 0.90 },
+ ["0x7C.variants.4"] = { squeeze = 0.80, height = 0.80, depth = 0.80 },
+ },
+ },
+ -- Accents are a mess. We migrate the extensibles from the combiners to the base accent
+ -- and then need to tweak the width (which is auto set because it was zero with a large
+ -- accent anchor offset). First we copy and fix.
+ {
+ tweak = "checkaccents",
+ },
+ {
+ tweak = "extendaccents",
+ },
+ {
+ tweak = "flattenaccents",
+ },
+ {
+ tweak = "fixaccents",
+ },
+{
+ tweak = "keepbases",
+ list = { 0x302 }
+},
+ {
+ tweak = "radicaldegreeanchors",
+ list = {
+ ["0x221A.variants.3"] = { location = "left", hfactor = 0, vfactor = .55 },
+ ["0x221A.variants.4"] = { location = "left", hfactor = 0, vfactor = .50 },
+ ["0x221A.parts.bottom"] = { location = "left", hfactor = 0, vfactor = .85 },
+ }
+ },
+ -- First we set the dimensions of the initial accent which started out as zero but we want
+ -- a proper width. Not in lucida
+ -- Then we deal with all offsets and heights in one go. So we treat the initial accent
+ -- as well as the variants here. Not in lucida.
+ -- We now copy these to the not wide slots so that we can set these to stretch as well,
+ -- if only because it is less confusing and more consistent.
+ {
+ tweak = "copyaccents",
+ },
+ -- So far for the accents.
+ {
+ tweak = "fixslashes",
+ },
+ {
+ tweak = "addbreve",
+ },
+ {
+ tweak = "kerns",
+ list = {
+ [0x002F] = { topleft = -0.2, bottomright = -0.2 },
+ ["0x007D.parts.top"] = { topright = -0.15 }, -- right brace top
+ ["0x007D.parts.bottom"] = { bottomright = -0.15 }, -- right brace bottom
+ ["0x007D.variants.*"] = { topright = -0.15, bottomright = -0.15 }, -- right brace variants
+ ["0x0029.parts.top"] = { topright = -0.25 }, -- right parenthesis top
+ ["0x0029.parts.bottom"] = { bottomright = -0.25 }, -- right parenthesis bottom
+ ["0x0029.variants.*"] = { topright = -0.2, bottomright = -0.2 }, -- right parenthesis variants
+ ["0x221A.parts.top"] = { topright = 0.2 }, -- right radical top
+ ["0x221A.parts.bottom"] = { bottomright = 0.2 }, -- right radical bottom
+ ["0x221A.variants.*"] = { topright = 0.2, bottomright = 0.2 }, -- right radical variants
+ [0x27E9] = { topright = -0.2, bottomright = -0.2 }, -- angle
+ ["0x27E9.variants.*"] = { topright = -0.3, bottomright = -0.3 },
+ [0x27EB] = { topright = -0.2, bottomright = -0.2 },
+ ["0x27EB.variants.*"] = { topright = -0.3, bottomright = -0.3 },
+ },
+ },
+ {
+ tweak = "fixprimes",
+ factor = 0.7, -- accent base height
+ fake = 0.65, -- replace multiples with this width proportion
+ },
+ {
+ tweak = "checkspacing",
+ },
+ {
+ tweak = "addscripts",
+ },
+ {
+ tweak = "accentdimensions",
+ },
+ {
+ tweak = "addrules",
+ },
+ {
+ tweak = "replacerules",
+ minus = {
+ leftoffset = .12,
+ rightoffset = .12,
+ },
+ fraction = {
+ height = .2,
+ yoffset = .825,
+ },
+ radical = {
+ height = .13,
+ yoffset = .825,
+ leftoffset = .124,
+ rightoffset = .124,
+ yscale = .940,
+ },
+radical = {
+ height = .140,
+ yoffset = .610,
+ yscale = .720,
+ leftoffset = .124,
+ rightoffset = .124,
+},
+ stacker = {
+ height = .2,
+ yoffset = .825,
+ },
+ },
+ {
+ tweak = "addactuarian",
+ },
+ {
+ tweak = "addfourier",
+ variant = 1,
+ },
+ {
+ tweak = "addprimed",
+ },
+ {
+ tweak = "addarrows",
+ left = 0.1,
+ right = 0.1,
+ slack = 0.20,
+ list = {
+ [0x21A9] = false,
+ [0x21AA] = false,
+ [0x2190] = false,
+ [0x2192] = false,
+ [0x219E] = false,
+ [0x21A0] = false,
+ }
+ },
+ -- fix a bug (todo: version)
+ {
+ tweak = "sortvariants",
+ list = { 0x23DE },
+ orientation = "horizontal",
+ },
+ -- this is the mkiv section
+ {
+ tweak = "emulatelmtx",
+ feature = "emulatelmtx",
+ comment = "this is for mkiv",
+ },
+ },
+ },
+ alternates = {
+ textitalic = { feature = 'ss01', value = 1, comment = "Mathematical Alternative Lowercase Italic" },
+ arrow = { feature = 'ss02', value = 1, comment = "Mathematical Alternative Smaller Arrows" },
+ operator = { feature = 'ss03', value = 1, comment = "Mathematical Alternative Smaller Operators" },
+ calligraphic = { feature = 'ss04', value = 1, comment = "Mathematical Alternative Calligraphic Characters" },
+ zero = { feature = 'ss05', value = 1, comment = "Mathematical Alternative Zero" },
+ multipledots = { feature = 'ss06', value = 1, comment = "Mathematical Alternative Multiple Dots" },
+ ldots = { feature = 'ss07', value = 1, comment = "Mathematical Alternative Ellipsis" },
+ },
+ bigslots = {
+ 1, 2, 3, 4
+ },
+ --
+ -- experimental fixes for mkiv:
+ --
+ dimensions = dimensions,
+ kerns = kerns,
+ },
+}
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/lucida-text.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/lucida-text.lfg
new file mode 100644
index 00000000000..cd32aee2b3c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/lucida-text.lfg
@@ -0,0 +1,69 @@
+return {
+ name = "lucida-text",
+ version = "1.00",
+ comment = "Goodies that complement lucida.",
+ author = "Mikael Sundqvist & Hans Hagen",
+ copyright = "ConTeXt development team",
+ extensions = {
+ {
+ name = "kern", -- adds to kerns
+ type = "kern",
+ fonts = {
+ "LucidaBrightOT",
+ },
+ data = {
+ ["f"] = {
+ [")"] = 70,
+ ["}"] = 70,
+ ["]"] = 70,
+ ["\\"] = 100,
+ },
+ }
+ },
+ {
+ name = "kern", -- adds to kerns
+ type = "kern",
+ fonts = {
+ "LucidaBrightOT-Demibold",
+ },
+ data = {
+ ["f"] = {
+ [")"] = 70,
+ ["}"] = 70,
+ ["]"] = 70,
+ ["\\"] = 100,
+ },
+ }
+ },
+ {
+ name = "kern",
+ type = "kern",
+ fonts = {
+ "LucidaBrightOT-Italic",
+ },
+ data = {
+ ["f"] = {
+ [")"] = 70,
+ ["}"] = 20,
+ ["]"] = 70,
+ ["\\"] = 100,
+ },
+ }
+ },
+ {
+ name = "kern",
+ type = "kern",
+ fonts = {
+ "LucidaBrightOT-DemiboldItalic",
+ },
+ data = {
+ ["f"] = {
+ [")"] = 70,
+ ["}"] = 40,
+ ["]"] = 70,
+ ["\\"] = 100,
+ },
+ }
+ },
+ }
+}
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/lucida-typeone-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/lucida-typeone-math.lfg
new file mode 100644
index 00000000000..82ba589cd48
--- /dev/null
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/lucida-typeone-math.lfg
@@ -0,0 +1,348 @@
+local mathencodings = fonts.encodings.math
+
+mathencodings["lbr-ma"] = {
+ [0x025CB] = 0x00, -- circle
+ [0x025CF] = 0x01, -- blackcircle
+ [0x025A1] = 0x02, -- square
+ [0x025A0] = 0x03, -- blacksquare
+ [0x025B3] = 0x04, -- triangleup
+ [0x025B2] = 0x05, -- blacktriangleup
+ [0x025BD] = 0x06, -- triangledown
+ [0x025BC] = 0x07, -- blacktriangledown
+ [0x02B28] = 0x08, -- lozenge
+ [0x02B27] = 0x09, -- blacklozenge
+ [0x02B29] = 0x0A, -- blackdiamond
+ [0x02571] = 0x0B, -- upright
+ [0x02572] = 0x0C, -- downright
+ [0x022E4] = 0x0D, -- squareimageofnoteq
+ [0x022E5] = 0x0E, -- squareoriginalofnoteq
+ [0x02A4F] = 0x0F, -- dblsquareunion
+ [0x02A4E] = 0x10, -- dblsquareintersection
+ [0x02A64] = 0x11, -- zdomainantirestriction
+ [0x02A65] = 0x12, -- zrangeantirestriction
+ [0x022EE] = 0x13, -- verticalellipsis
+ [0x022EF] = 0x14, -- ellipsis
+ [0x022F0] = 0x15, -- uprightellipsis
+ [0x022F1] = 0x16, -- downrightellipsis
+ [0x022D5] = 0x17, -- equalparallel
+
+ [0x0225B] = 0x1A, -- stareq
+ [0x00127] = 0x1B, -- hbar
+ [0x022F6] = 0x1C, -- barelementof
+ [0x02209] = 0x1D, -- notelementof
+ [0x022FD] = 0x1E, -- barcontains
+ [0x0220C] = 0x1F, -- notcontain
+ [0x02204] = 0x20, -- nexists
+ [0x02194] = 0x21, -- leftrightarrow
+ [0x02195] = 0x22, -- updownarrow
+ [0x0219E] = 0x23, -- leftleftarrow
+ [0x0219F] = 0x24, -- upuparrow
+ [0x021A0] = 0x25, -- rightrightarrow
+-- [0x00026] = 0x26, -- amperand
+ [0x021A1] = 0x27, -- downdownarrow
+ [0x021A2] = 0x28, -- leftarrowtail
+ [0x021A3] = 0x29, -- rightarrowtail
+ [0x021A4] = 0x2A, -- leftarrowbar
+ [0x021A6] = 0x2B, -- rightarrowbar
+ [0x021A5] = 0x2C, -- uparrowbar
+-- [0x02212] = 0x2D, -- minus
+-- [0x0002D] = 0x2D, -- minus
+ [0x021A7] = 0x2E, -- downarrowbar
+ [0x021E4] = 0x2F, -- barleftarrow
+ [0x021E5] = 0x30, -- barrightarrow
+
+ [0x021E0] = 0x38, -- dashleftarrow
+ [0x021E1] = 0x39, -- dashuparrow
+ [0x021E2] = 0x3A, -- dashrightarrow
+ [0x021E3] = 0x3B, -- dashdownarrow
+ [0x021A9] = 0x3C, -- hookleftarrow
+-- [0x0003D] = 0x3D, -- equalto
+ [0x021AA] = 0x3E, -- hookrightarrow
+ [0x021AB] = 0x3F, -- looparrowleft
+ [0x021AC] = 0x40, -- looparrowright
+ [0x1D538] = 0x41, -- A (blackboard A)
+ [0x1D539] = 0x42, -- B
+ [0x02102] = 0x43, -- C
+ [0x1D53B] = 0x44, -- D
+ [0x1D53C] = 0x45, -- E
+ [0x1D53D] = 0x46, -- F
+ [0x1D53E] = 0x47, -- G
+ [0x0210D] = 0x48, -- H
+ [0x1D540] = 0x49, -- I
+ [0x1D541] = 0x4A, -- J
+ [0x1D542] = 0x4B, -- K
+ [0x1D543] = 0x4C, -- L
+ [0x1D544] = 0x4D, -- M
+ [0x02115] = 0x4E, -- N
+ [0x1D546] = 0x4F, -- O
+ [0x02119] = 0x50, -- P
+ [0x0211A] = 0x51, -- Q
+ [0x0211D] = 0x52, -- R
+ [0x1D54A] = 0x53, -- S
+ [0x1D54B] = 0x54, -- T
+ [0x1D54C] = 0x55, -- U
+ [0x1D54D] = 0x56, -- V
+ [0x1D54E] = 0x57, -- W
+ [0x1D54F] = 0x58, -- X
+ [0x1D550] = 0x59, -- Y
+ [0x02124] = 0x5A, -- Z (blackboard Z)
+ [0x0231C] = 0x5B, -- ulcorner
+ [0x0231D] = 0x5C, -- urcorner
+ [0x0231E] = 0x5D, -- llcorner
+ [0x0231F] = 0x5E, -- lrcorner
+ [0x02225] = 0x5F, -- parallel, Vert, lVert, rVert, arrowvert
+ [0x021D5] = 0x60, -- Updownarrow
+ [0x021D4] = 0x61, -- Leftrightarrow
+ [0x021D6] = 0x62, -- Upleftarrow
+ [0x021D7] = 0x63, -- Uprightarrow
+ [0x021D9] = 0x64, -- Downleftarrow
+ [0x021D8] = 0x65, -- Downrightarrow
+ [0x021CD] = 0x66, -- nLeftarrow
+ [0x021CE] = 0x67, -- nLeftrightarrow
+ [0x021CF] = 0x68, -- nRightarrow
+-- [0x021CE] = 0x69, -- nLeftrightarrow -- what's the difference between this and 0x0067[0x021CE]
+ [0x021DA] = 0x6A, -- Lleftarrow
+ [0x1D55C] = 0x6B, -- k \Bbbk (blackboard k)
+ [0x021DB] = 0x6C, -- Rrightarrow
+ [0x021C4] = 0x6D, -- rlarrow
+ [0x021C6] = 0x6E, -- lrarrow
+ [0x021C5] = 0x6F, -- udarrow
+-- [0x021C5] = 0x70, -- duarrow
+ [0x021C7] = 0x71, -- llarrow
+ [0x021C8] = 0x72, -- uuarrow
+ [0x021C9] = 0x73, -- rrarrow
+ [0x021CA] = 0x74, -- ddarrow
+ [0x021BE] = 0x75, -- rupharpoon
+ [0x021BF] = 0x76, -- lupharpoon
+ [0x021C2] = 0x77, -- rdownharpoon
+ [0x021C3] = 0x78, -- ldownharpoon
+ [0x021CB] = 0x79, -- lrharpoon
+ [0x021CC] = 0x7A, -- rlharpoon
+ [0x021B0] = 0x7B, -- upthenleftarrow
+-- [0x00000] = 0x7C, -- part
+ [0x021B1] = 0x7D, -- upthenrightarrow
+-- [0x00000] = 0x7E, -- part
+ [0x02276] = 0x7F, -- ltgt
+ [0x021B2] = 0x81, -- downthenleftarrow
+ [0x021B3] = 0x82, -- downthenrightarrow
+ [0x02B0E] = 0x83, -- rightthendownarrow
+ [0x02B10] = 0x84, -- leftthendownarrow
+ [0x02B0F] = 0x85, -- rightthenuparrow
+ [0x02B11] = 0x86, -- leftthenuparrow
+ [0x021B6] = 0x87, -- leftarcarrow
+ [0x021B7] = 0x88, -- rightarcarrow
+ [0x0293D] = 0x89, -- leftarcarrowplus
+ [0x0293C] = 0x8A, -- rightarcarrowminus
+ [0x021BA] = 0x8B, -- anticlockwise
+ [0x021BB] = 0x8C, -- clockwise
+
+ [0x02260] = 0x94, -- noteq
+ [0x02262] = 0x95, -- notidentical
+ [0x02241] = 0x96, -- nottilde
+ [0x02244] = 0x97, -- notasymptoticallyequal
+ [0x02249] = 0x98, -- notalmostequal
+ [0x02247] = 0x99, -- notapproximatelyeq
+ [0x0226E] = 0x9A, -- nless
+ [0x0226F] = 0x9B, -- ngtr
+ [0x02270] = 0x9C, -- nleq
+ [0x02271] = 0x9D, -- ngeq
+ [0x022E6] = 0x9E, -- lnsim
+ [0x022E7] = 0x9F, -- gnsim
+ [0x02605] = 0xAB, -- black star
+ [0x02713] = 0xAC, -- check
+ [0x02277] = 0xC5, -- gtlt
+ [0x02284] = 0xC6, -- nsubsetof
+ [0x02285] = 0xC7, -- nsupsetof
+ [0x02288] = 0xC8, -- nsubseteq
+ [0x02289] = 0xC9, -- nsupseteq
+
+ [0x0228A] = 0xCC, -- subsetneq
+ [0x0228B] = 0xCD, -- supsetneq
+
+-- [0x0228A] = 0xD0, -- subsetneq
+-- [0x0228B] = 0xD1, -- supsetneq
+
+ [0x02270] = 0xD6, -- nleq
+ [0x02271] = 0xD7, -- ngeq
+
+ [0x02268] = 0xDC, -- lneqq
+ [0x02269] = 0xDD, -- gneqq
+
+ [0x022E6] = 0xE0, -- lnsim
+ [0x02219] = 0xE1, -- bullet
+ [0x022E7] = 0xE2, -- gnsim
+
+ [0x02280] = 0xE5, -- nprec
+ [0x02281] = 0xE6, -- nsucc
+
+ [0x022E8] = 0xEB, -- precnsim
+ [0x022E9] = 0xEC, -- succnsim
+
+ [0x022EA] = 0xEF, -- nnormalsub
+ [0x022EB] = 0xF0, -- ncontainnormalsub
+ [0x022EC] = 0xF1, -- nnormalsubeq
+ [0x022ED] = 0xF2, -- ncontainnormalsubeq
+
+ [0x02226] = 0xF7, -- nparallel
+ [0x022AC] = 0xF8, -- nvdash
+ [0x022AE] = 0xF9, -- nVdash
+ [0x022AD] = 0xFA, -- nvDash
+ [0x022AF] = 0xFB, -- nVDash
+}
+
+mathencodings["lbr-mb"] = {
+ [0x00393] = 0x00, -- Gamma
+ [0x00394] = 0x01, -- Delta
+ [0x00398] = 0x02, -- Theta
+ [0x0039B] = 0x03, -- Lambda
+ [0x0039E] = 0x04, -- Xi
+ [0x003A0] = 0x05, -- Pi
+ [0x003A3] = 0x06, -- Sigma
+ [0x003A5] = 0x07, -- Upsilon
+ [0x003A6] = 0x08, -- Phi
+ [0x003A8] = 0x09, -- Psi
+ [0x003A9] = 0x0A, -- Omega
+ [0x0210F] = 0x9D, -- hslash
+ [0x02127] = 0x92, -- mho
+ [0x02132] = 0x90, -- Finv
+ [0x02136] = 0x95, -- beth
+ [0x02137] = 0x96, -- gimel
+ [0x02138] = 0x97, -- daleth
+ [0x02141] = 0x91, -- Game
+ [0x02201] = 0x94, -- complement
+ [0x0226C] = 0xF2, -- between
+ [0x0227C] = 0xE4, -- preccurlyeq
+ [0x0227D] = 0xE5, -- succcurlyeq
+ [0x0229D] = 0xCC, -- circleddash
+ [0x022A8] = 0xD6, -- vDash
+ [0x022AA] = 0xD3, -- Vvdash
+ [0x022B8] = 0xC7, -- multimap
+ [0x022BB] = 0xD2, -- veebar
+ [0x022C7] = 0xF7, -- divideontimes
+ [0x022C9] = 0xCF, -- ltimes
+ [0x022CA] = 0xCE, -- rtimes
+ [0x022CB] = 0xD0, -- leftthreetimes
+ [0x022CC] = 0xD1, -- rightthreetimes
+ [0x022D6] = 0xDC, -- lessdot
+ [0x022D7] = 0xDD, -- gtrdot
+ [0x022D8] = 0xDE, -- lll
+ [0x022D9] = 0xDF, -- ggg
+ [0x022DA] = 0xE8, -- lesseqgtr
+ [0x022DB] = 0xE9, -- gtreqless
+ [0x022DE] = 0xE6, -- curlyeqprec
+ [0x022DF] = 0xE7, -- curlyeqsucc
+ [0x024C7] = 0xC9, -- circledR
+ [0x024C8] = 0xCA, -- circledS
+ [0x025B6] = 0xF1, -- blacktriangleright
+ [0x025B8] = 0xF0, -- blacktriangleleft
+ [0x02720] = 0xCB, -- maltese
+ [0x02A7D] = 0xE0, -- leqslant
+ [0x02A7E] = 0xE1, -- geqslant
+ [0x02A85] = 0xDA, -- lessapprox
+ [0x02A86] = 0xDB, -- gtrapprox
+ [0x02A8B] = 0xEA, -- lesseqqgtr
+ [0x02A8C] = 0xEB, -- gtreqqless
+ [0x02A95] = 0xE2, -- eqslantless
+ [0x02A96] = 0xE3, -- eqslantgtr
+ [0x02AB7] = 0xEC, -- precapprox
+ [0x02AB8] = 0xED, -- succapprox
+ [0x02AC5] = 0xEE, -- subseteqq
+ [0x02AC6] = 0xEF, -- supseteqq
+ [0x12035] = 0xC8, -- backprime
+ [0x1D718] = 0x9B, -- varkappa
+}
+
+
+mathencodings["lbr-sy"] = {
+
+ -- [0x022C5] = 0x01, -- cdot,
+
+ [0x0002B] = 0x82, -- plus
+ [0x0003D] = 0x83, -- equal
+
+ [0x021CB] = 0x8D, -- leftrightharpoons
+ [0x021CC] = 0x8E, -- rightleftharpoons
+ [0x02214] = 0x89, -- dotplus
+ [0x02220] = 0x8B, -- angle
+ [0x02221] = 0x8C, -- measuredangle
+ [0x02222] = 0x8D, -- sphericalangle
+ [0x02234] = 0x90, -- therefore
+ [0x02235] = 0x91, -- because
+ [0x0223D] = 0x24, -- backsim
+ [0x02242] = 0x99, -- eqsim
+ [0x02245] = 0x9B, -- cong
+ [0x0224A] = 0x9D, -- approxeq
+ [0x0224E] = 0xC7, -- Bumpeq
+ [0x02252] = 0xCB, -- fallingdotseq
+ [0x02253] = 0xCC, -- risingdotseq
+ [0x02256] = 0xCF, -- eqcirc
+ [0x02257] = 0xD0, -- circeq
+ [0x0225C] = 0xD5, -- triangleq
+ [0x02266] = 0xDA, -- leqq
+ [0x02267] = 0xDB, -- geqq
+ [0x02272] = 0xDC, -- lesssim
+ [0x02273] = 0xDD, -- gtrsim
+ [0x02276] = 0xDE, -- lessgtr
+ [0x02277] = 0xDF, -- gtrless
+ [0x0227E] = 0xE0, -- precsim
+ [0x0227F] = 0xE1, -- succsim
+ [0x0228F] = 0xE4, -- sqsubset
+ [0x02290] = 0xE5, -- sqsupset
+ [0x0229A] = 0xE6, -- circledcirc
+ [0x0229B] = 0xE7, -- circledast
+ [0x0229E] = 0xEA, -- boxplus
+ [0x0229F] = 0xEB, -- boxminus
+ [0x022A0] = 0xEC, -- boxtimes
+ [0x022A1] = 0xED, -- boxdot
+ [0x022A7] = 0xEE, -- models
+ [0x022A9] = 0xF0, -- Vdash
+ [0x022BC] = 0xF6, -- barwedge
+ [0x022CE] = 0x85, -- curlyvee
+ [0x022CF] = 0x84, -- curlywedge
+ [0x022D0] = 0xF8, -- Subset
+ [0x022D1] = 0xF9, -- Supset
+ [0x02300] = 0x53, -- varnothing
+ [0x025CA] = 0x05, -- lozenge
+}
+
+
+mathencodings["lbr-sy"] = table.merged(mathencodings["tex-sy"],mathencodings["lbr-sy"])
+
+mathencodings["lbr-fraktur"] = { }
+
+fonts.handlers.vf.math.setletters(mathencodings, "lbr-fraktur", 0x1D504, 0x1D51E)
+
+return {
+ name = "lucida-math",
+ version = "1.00",
+ comment = "Goodies that complement lucida math.",
+ author = "Aditya, Hans, Mojca with help from Zhichu Chen",
+ copyright = "ConTeXt development team",
+ mathematics = {
+ mapfiles = {
+ "lucida.map",
+ },
+ virtuals = {
+ ["lucida-math"] = {
+ { name = "file:lbr.afm", features = "virtualmath", main = true },
+ { name = "hlcrim.tfm", vector = "tex-mi", skewchar=0x7F },
+ { name = "hlcrim.tfm", vector = "tex-it", skewchar=0x7F },
+ { name = "hlcry.tfm", vector = "lbr-sy", skewchar=0x30, parameters = true },
+ { name = "hlcrv.tfm", vector = "tex-ex", extension = true },
+ { name = "hlcra.tfm", vector = "lbr-ma" },
+ { name = "hlcrm.tfm", vector = "lbr-mb" },
+ -- { name = "hlcrim.tfm", vector = "lbr-mb" }, -- LucidaNewMath-Italic <-> AltItalic
+ -- { name = "hlcdim.tfm", vector = "lbr-mb" }, -- LucidaNewMath-DemiItalic <-> AltDemiItalic
+ -- { name = "hlcrima.tfm", vector = "lbr-mb" }, -- LucidaNewMath-AltItalic <-> Italic
+ { name = "file:lbd.afm", vector = "tex-bf" },
+ { name = "file:lbdi.afm", vector = "tex-bi" } ,
+ { name = "file:lsr.afm", vector = "tex-ss" },
+ { name = "file:lstr.afm", vector = "tex-tt" },
+ { name = "file:lbl.afm", vector = "lbr-fraktur" }, -- more complete
+ },
+ },
+ variables = {
+ joinrelfactor = 4, -- default is 3
+ }
+ }
+}
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/minion-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/minion-math.lfg
index 535d5b88307..a8255ddff3d 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/minion-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/minion-math.lfg
@@ -45,6 +45,9 @@ return {
{
tweak = "addmirrors",
},
+ {
+ tweak = "addcomposites",
+ },
presets.rsfstoscript { rscale = 0.97 },
presets.rsfsuprighttoscript { rscale = 0.97 },
presets.moderntocalligraphic { rscale = 0.97 },
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/modern-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/modern-math.lfg
index 6f1ab45871a..6547c72d265 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/modern-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/modern-math.lfg
@@ -51,7 +51,7 @@ return {
list = {
{
-- source = { first = 0x02980 }, -- triplebar
- filename = "LatinModernMath-Companion.otf",
+ filename = "latinmodernmathcompanion-regular.otf",
feature = "ss01",
unicodes = {
0x00028, -- left parenthesis
@@ -70,7 +70,7 @@ return {
},
{
-- source = { first = 0x02980 }, -- triplebar
- filename = "LatinModernMath-Companion.otf",
+ filename = "latinmodernmathcompanion-regular.otf",
feature = "ss02",
unicodes = {
0x0007B, -- left brace
@@ -78,7 +78,7 @@ return {
},
},
{
- filename = "LatinModernMath-Companion.otf",
+ filename = "latinmodernmathcompanion-regular.otf",
feature = "ss03",
unicodes = {
0x0221A, -- radical
@@ -86,7 +86,7 @@ return {
},
{
-- source = { first = 0x02980 }, -- triplebar
- filename = "LatinModernMath-Companion.otf",
+ filename = "latinmodernmathcompanion-regular.otf",
unicodes = {
0x0002F, -- solidus
-- 0x00028, -- left parenthesis
@@ -118,6 +118,9 @@ return {
{
tweak = "addmirrors", --bidi
},
+ {
+ tweak = "addcomposites",
+ },
presets.scripttocalligraphic { },
presets.rsfstoscript { },
presets.rsfsuprighttoscript { },
@@ -134,7 +137,7 @@ return {
tweak = "checkaccents",
},
{
- tweak = "wipeweirdones",
+ tweak = "wipecues",
},
{
tweak = "dimensions",
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/newcomputermodern-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/newcomputermodern-math.lfg
index 6f253524648..720cd7c2826 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/newcomputermodern-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/newcomputermodern-math.lfg
@@ -111,9 +111,15 @@ return {
presets.wipeanchors { },
presets.wipeitalics { },
{
+ tweak = "addcomposites",
+ },
+ {
tweak = "checkaccents",
},
{
+ tweak = "wipecues",
+ },
+ {
tweak = "kerns",
list = {
[0x0002F] = { topleft = -0.2, bottomright = -0.2 }, -- solidus
@@ -187,199 +193,199 @@ return {
dimensions = dimensions,
kerns = kerns,
},
- filenames = {
- ["latinmodern-math-regular.otf"] = {
- "latinmodern-math.otf", -- the beta
- "lmmath-regular.otf",
- "latinmodernmath-regular.otf",
- "lmmath-regular.otf",
- "lmodernmath-regular.otf",
- "lmodern-math.otf",
- },
- },
- designsizes = {
- ["LMMathRoman-Regular"] = {
- ["4pt"] = "LMMath5-Regular@lmroman5-math",
- ["5pt"] = "LMMath5-Regular@lmroman5-math",
- ["6pt"] = "LMMath6-Regular@lmroman6-math",
- ["7pt"] = "LMMath7-Regular@lmroman7-math",
- ["8pt"] = "LMMath8-Regular@lmroman8-math",
- ["9pt"] = "LMMath9-Regular@lmroman9-math",
- ["10pt"] = "LMMath10-Regular@lmroman10-math",
- ["11pt"] = "LMMath10-Regular@lmroman10-math",
- ["12pt"] = "LMMath12-Regular@lmroman12-math",
- default = "LMMath10-Regular@lmroman10-math"
- },
- ["LMMathRoman-Bold"] = { -- not yet ready
- ["4pt"] = "LMMath5-Regular@lmroman5-math",
- ["5pt"] = "LMMath5-Regular@lmroman5-math",
- ["6pt"] = "LMMath6-Regular@lmroman6-math",
- ["7pt"] = "LMMath7-Regular@lmroman7-math",
- ["8pt"] = "LMMath8-Regular@lmroman8-math",
- ["9pt"] = "LMMath9-Regular@lmroman9-math",
- ["10pt"] = "LMMath10-Regular@lmroman10-math",
- ["11pt"] = "LMMath10-Regular@lmroman10-math",
- ["12pt"] = "LMMath12-Regular@lmroman12-math",
- default = "LMMath10-Regular@lmroman10-math"
- },
- ["LMRoman-Regular"] = {
- ["4pt"] = "file:lmroman5-regular",
- ["5pt"] = "file:lmroman5-regular",
- ["6pt"] = "file:lmroman6-regular",
- ["7pt"] = "file:lmroman7-regular",
- ["8pt"] = "file:lmroman8-regular",
- ["9pt"] = "file:lmroman9-regular",
- ["10pt"] = "file:lmroman10-regular",
- ["11pt"] = "file:lmroman10-regular",
- ["12pt"] = "file:lmroman12-regular",
- default = "file:lmroman10-regular",
- },
- ["LMRoman-Bold"] = {
- ["4pt"] = "file:lmroman5-bold",
- ["5pt"] = "file:lmroman5-bold",
- ["6pt"] = "file:lmroman6-bold",
- ["7pt"] = "file:lmroman7-bold",
- ["8pt"] = "file:lmroman8-bold",
- ["9pt"] = "file:lmroman9-bold",
- ["10pt"] = "file:lmroman10-bold",
- ["11pt"] = "file:lmroman10-bold",
- ["12pt"] = "file:lmroman12-bold",
- default = "file:lmroman10-bold",
- },
- ["LMRoman-Demi"] = {
- default = "file:lmromandemi10-regular",
- },
- ["LMRoman-Italic"] = {
- ["4pt"] = "file:lmroman7-italic",
- ["5pt"] = "file:lmroman7-italic",
- ["6pt"] = "file:lmroman7-italic",
- ["7pt"] = "file:lmroman7-italic",
- ["8pt"] = "file:lmroman8-italic",
- ["9pt"] = "file:lmroman9-italic",
- ["10pt"] = "file:lmroman10-italic",
- ["11pt"] = "file:lmroman10-italic",
- ["12pt"] = "file:lmroman12-italic",
- default = "file:lmroman10-italic",
- },
- ["LMRoman-Oblique"] = {
- ["4pt"] = "file:lmromanslant8-regular",
- ["5pt"] = "file:lmromanslant8-regular",
- ["6pt"] = "file:lmromanslant8-regular",
- ["7pt"] = "file:lmromanslant8-regular",
- ["8pt"] = "file:lmromanslant8-regular",
- ["9pt"] = "file:lmromanslant9-regular",
- ["10pt"] = "file:lmromanslant10-regular",
- ["11pt"] = "file:lmromanslant10-regular",
- ["12pt"] = "file:lmromanslant12-regular",
- default = "file:lmromanslant10-regular",
- },
- ["LMRoman-BoldItalic"] = {
- default = "file:lmroman10-bolditalic",
- },
- ["LMRoman-BoldOblique"] = {
- default = "file:lmromanslant10-bold",
- },
- ["LMRoman-DemiOblique"] = {
- default = "file:lmromandemi10-oblique",
- },
- ["LMRoman-CapsRegular"] = {
- default = "file:lmromancaps10-regular",
- },
- ["LMRoman-CapsOblique"] = {
- default = "file:lmromancaps10-oblique",
- },
- ["LMRoman-Dunhill"] = {
- default = "file:lmromandunh10-regular",
- },
- ["LMRoman-DunhillOblique"] = {
- default = "file:lmromandunh10-oblique",
- },
- ["LMRoman-Unslanted"] = {
- default = "file:lmromanunsl10-regular",
- },
- ["LMSans-Regular"] = {
- ["8pt"] = "file:lmsans8-regular",
- ["9pt"] = "file:lmsans9-regular",
- ["10pt"] = "file:lmsans10-regular",
- ["11pt"] = "file:lmsans10-regular",
- ["12pt"] = "file:lmsans12-regular",
- default = "file:lmsans10-regular",
- },
- ["LMSans-Oblique"] = {
- ["8pt"] = "file:lmsans8-oblique",
- ["9pt"] = "file:lmsans9-oblique",
- ["10pt"] = "file:lmsans10-oblique",
- ["11pt"] = "file:lmsans10-oblique",
- ["12pt"] = "file:lmsans12-oblique",
- default = "file:lmsans10-oblique",
- },
- ["LMSans-Bold"] = {
- default = "file:lmsans10-bold",
- },
- ["LMSans-BoldOblique"] = {
- default = "file:lmsans10-boldoblique",
- },
- ["LMSans-DemiCondensed"] = {
- default = "file:lmsansdemicond10-regular",
- },
- ["LMSans-DemiCondensedOblique"] = {
- default = "file:lmsansdemicond10-oblique",
- },
- ["LMTypewriter-Regular"] = {
- ["8pt"] = "file:lmmono8-regular",
- ["9pt"] = "file:lmmono9-regular",
- ["10pt"] = "file:lmmono10-regular",
- ["11pt"] = "file:lmmono10-regular",
- ["12pt"] = "file:lmmono12-regular",
- default = "file:lmmono10-regular",
- },
- ["LMTypewriter-Light"] = {
- default = "file:lmmonolt10-regular",
- },
- ["LMTypewriter-Dark"] = {
- default = "file:lmmonolt10-bold",
- },
- ["LMTypewriter-Italic"] = {
- default = "file:lmmono10-italic",
- },
- ["LMTypewriter-LightOblique"] = {
- default = "file:lmmonolt10-oblique",
- },
- ["LMTypewriter-Oblique"] = {
- default = "file:lmmonoslant10-regular",
- },
- ["LMTypewriter-DarkOblique"] = {
- default = "file:lmmonolt10-boldoblique",
- },
- ["LMTypewriter-LightCondensed"] = {
- default = "file:lmmonoltcond10-regular",
- },
- ["LMTypewriter-LightCondensedOblique"] = {
- default = "file:lmmonoltcond10-oblique",
- },
- ["LMTypewriterVarWd-Regular"] = {
- default = "file:lmmonoproplt10-regular",
- },
- ["LMTypewriterVarWd-Oblique"] = {
- default = "file:lmmonoproplt10-oblique",
- },
- ["LMTypewriterVarWd-Light"] = {
- default = "file:lmmonoprop10-regular",
- },
- ["LMTypewriterVarWd-LightOblique"] = {
- default = "file:lmmonoprop10-oblique",
- },
- ["LMTypewriterVarWd-Dark"] = {
- default = "file:lmmonoproplt10-bold",
- },
- ["LMTypewriterVarWd-DarkOblique"] = {
- default = "file:lmmonoproplt10-boldoblique",
- },
- ["LMTypewriter-CapsRegular"] = {
- default = "file:lmmonocaps10-regular",
- },
- ["LMTypewriter-CapsOblique"] = {
- default = "file:lmmonocaps10-oblique",
- },
- }
+-- filenames = {
+-- ["latinmodern-math-regular.otf"] = {
+-- "latinmodern-math.otf", -- the beta
+-- "lmmath-regular.otf",
+-- "latinmodernmath-regular.otf",
+-- "lmmath-regular.otf",
+-- "lmodernmath-regular.otf",
+-- "lmodern-math.otf",
+-- },
+-- },
+-- designsizes = {
+-- ["LMMathRoman-Regular"] = {
+-- ["4pt"] = "LMMath5-Regular@lmroman5-math",
+-- ["5pt"] = "LMMath5-Regular@lmroman5-math",
+-- ["6pt"] = "LMMath6-Regular@lmroman6-math",
+-- ["7pt"] = "LMMath7-Regular@lmroman7-math",
+-- ["8pt"] = "LMMath8-Regular@lmroman8-math",
+-- ["9pt"] = "LMMath9-Regular@lmroman9-math",
+-- ["10pt"] = "LMMath10-Regular@lmroman10-math",
+-- ["11pt"] = "LMMath10-Regular@lmroman10-math",
+-- ["12pt"] = "LMMath12-Regular@lmroman12-math",
+-- default = "LMMath10-Regular@lmroman10-math"
+-- },
+-- ["LMMathRoman-Bold"] = { -- not yet ready
+-- ["4pt"] = "LMMath5-Regular@lmroman5-math",
+-- ["5pt"] = "LMMath5-Regular@lmroman5-math",
+-- ["6pt"] = "LMMath6-Regular@lmroman6-math",
+-- ["7pt"] = "LMMath7-Regular@lmroman7-math",
+-- ["8pt"] = "LMMath8-Regular@lmroman8-math",
+-- ["9pt"] = "LMMath9-Regular@lmroman9-math",
+-- ["10pt"] = "LMMath10-Regular@lmroman10-math",
+-- ["11pt"] = "LMMath10-Regular@lmroman10-math",
+-- ["12pt"] = "LMMath12-Regular@lmroman12-math",
+-- default = "LMMath10-Regular@lmroman10-math"
+-- },
+-- ["LMRoman-Regular"] = {
+-- ["4pt"] = "file:lmroman5-regular",
+-- ["5pt"] = "file:lmroman5-regular",
+-- ["6pt"] = "file:lmroman6-regular",
+-- ["7pt"] = "file:lmroman7-regular",
+-- ["8pt"] = "file:lmroman8-regular",
+-- ["9pt"] = "file:lmroman9-regular",
+-- ["10pt"] = "file:lmroman10-regular",
+-- ["11pt"] = "file:lmroman10-regular",
+-- ["12pt"] = "file:lmroman12-regular",
+-- default = "file:lmroman10-regular",
+-- },
+-- ["LMRoman-Bold"] = {
+-- ["4pt"] = "file:lmroman5-bold",
+-- ["5pt"] = "file:lmroman5-bold",
+-- ["6pt"] = "file:lmroman6-bold",
+-- ["7pt"] = "file:lmroman7-bold",
+-- ["8pt"] = "file:lmroman8-bold",
+-- ["9pt"] = "file:lmroman9-bold",
+-- ["10pt"] = "file:lmroman10-bold",
+-- ["11pt"] = "file:lmroman10-bold",
+-- ["12pt"] = "file:lmroman12-bold",
+-- default = "file:lmroman10-bold",
+-- },
+-- ["LMRoman-Demi"] = {
+-- default = "file:lmromandemi10-regular",
+-- },
+-- ["LMRoman-Italic"] = {
+-- ["4pt"] = "file:lmroman7-italic",
+-- ["5pt"] = "file:lmroman7-italic",
+-- ["6pt"] = "file:lmroman7-italic",
+-- ["7pt"] = "file:lmroman7-italic",
+-- ["8pt"] = "file:lmroman8-italic",
+-- ["9pt"] = "file:lmroman9-italic",
+-- ["10pt"] = "file:lmroman10-italic",
+-- ["11pt"] = "file:lmroman10-italic",
+-- ["12pt"] = "file:lmroman12-italic",
+-- default = "file:lmroman10-italic",
+-- },
+-- ["LMRoman-Oblique"] = {
+-- ["4pt"] = "file:lmromanslant8-regular",
+-- ["5pt"] = "file:lmromanslant8-regular",
+-- ["6pt"] = "file:lmromanslant8-regular",
+-- ["7pt"] = "file:lmromanslant8-regular",
+-- ["8pt"] = "file:lmromanslant8-regular",
+-- ["9pt"] = "file:lmromanslant9-regular",
+-- ["10pt"] = "file:lmromanslant10-regular",
+-- ["11pt"] = "file:lmromanslant10-regular",
+-- ["12pt"] = "file:lmromanslant12-regular",
+-- default = "file:lmromanslant10-regular",
+-- },
+-- ["LMRoman-BoldItalic"] = {
+-- default = "file:lmroman10-bolditalic",
+-- },
+-- ["LMRoman-BoldOblique"] = {
+-- default = "file:lmromanslant10-bold",
+-- },
+-- ["LMRoman-DemiOblique"] = {
+-- default = "file:lmromandemi10-oblique",
+-- },
+-- ["LMRoman-CapsRegular"] = {
+-- default = "file:lmromancaps10-regular",
+-- },
+-- ["LMRoman-CapsOblique"] = {
+-- default = "file:lmromancaps10-oblique",
+-- },
+-- ["LMRoman-Dunhill"] = {
+-- default = "file:lmromandunh10-regular",
+-- },
+-- ["LMRoman-DunhillOblique"] = {
+-- default = "file:lmromandunh10-oblique",
+-- },
+-- ["LMRoman-Unslanted"] = {
+-- default = "file:lmromanunsl10-regular",
+-- },
+-- ["LMSans-Regular"] = {
+-- ["8pt"] = "file:lmsans8-regular",
+-- ["9pt"] = "file:lmsans9-regular",
+-- ["10pt"] = "file:lmsans10-regular",
+-- ["11pt"] = "file:lmsans10-regular",
+-- ["12pt"] = "file:lmsans12-regular",
+-- default = "file:lmsans10-regular",
+-- },
+-- ["LMSans-Oblique"] = {
+-- ["8pt"] = "file:lmsans8-oblique",
+-- ["9pt"] = "file:lmsans9-oblique",
+-- ["10pt"] = "file:lmsans10-oblique",
+-- ["11pt"] = "file:lmsans10-oblique",
+-- ["12pt"] = "file:lmsans12-oblique",
+-- default = "file:lmsans10-oblique",
+-- },
+-- ["LMSans-Bold"] = {
+-- default = "file:lmsans10-bold",
+-- },
+-- ["LMSans-BoldOblique"] = {
+-- default = "file:lmsans10-boldoblique",
+-- },
+-- ["LMSans-DemiCondensed"] = {
+-- default = "file:lmsansdemicond10-regular",
+-- },
+-- ["LMSans-DemiCondensedOblique"] = {
+-- default = "file:lmsansdemicond10-oblique",
+-- },
+-- ["LMTypewriter-Regular"] = {
+-- ["8pt"] = "file:lmmono8-regular",
+-- ["9pt"] = "file:lmmono9-regular",
+-- ["10pt"] = "file:lmmono10-regular",
+-- ["11pt"] = "file:lmmono10-regular",
+-- ["12pt"] = "file:lmmono12-regular",
+-- default = "file:lmmono10-regular",
+-- },
+-- ["LMTypewriter-Light"] = {
+-- default = "file:lmmonolt10-regular",
+-- },
+-- ["LMTypewriter-Dark"] = {
+-- default = "file:lmmonolt10-bold",
+-- },
+-- ["LMTypewriter-Italic"] = {
+-- default = "file:lmmono10-italic",
+-- },
+-- ["LMTypewriter-LightOblique"] = {
+-- default = "file:lmmonolt10-oblique",
+-- },
+-- ["LMTypewriter-Oblique"] = {
+-- default = "file:lmmonoslant10-regular",
+-- },
+-- ["LMTypewriter-DarkOblique"] = {
+-- default = "file:lmmonolt10-boldoblique",
+-- },
+-- ["LMTypewriter-LightCondensed"] = {
+-- default = "file:lmmonoltcond10-regular",
+-- },
+-- ["LMTypewriter-LightCondensedOblique"] = {
+-- default = "file:lmmonoltcond10-oblique",
+-- },
+-- ["LMTypewriterVarWd-Regular"] = {
+-- default = "file:lmmonoproplt10-regular",
+-- },
+-- ["LMTypewriterVarWd-Oblique"] = {
+-- default = "file:lmmonoproplt10-oblique",
+-- },
+-- ["LMTypewriterVarWd-Light"] = {
+-- default = "file:lmmonoprop10-regular",
+-- },
+-- ["LMTypewriterVarWd-LightOblique"] = {
+-- default = "file:lmmonoprop10-oblique",
+-- },
+-- ["LMTypewriterVarWd-Dark"] = {
+-- default = "file:lmmonoproplt10-bold",
+-- },
+-- ["LMTypewriterVarWd-DarkOblique"] = {
+-- default = "file:lmmonoproplt10-boldoblique",
+-- },
+-- ["LMTypewriter-CapsRegular"] = {
+-- default = "file:lmmonocaps10-regular",
+-- },
+-- ["LMTypewriter-CapsOblique"] = {
+-- default = "file:lmmonocaps10-oblique",
+-- },
+-- }
}
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/pagella-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/pagella-math.lfg
index 1de0cfa95ec..6448d9a9587 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/pagella-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/pagella-math.lfg
@@ -14,7 +14,7 @@ return {
mathematics = {
parameters = {
AccentTopShiftUp = 10,
- FlattenedAccentTopShiftUp = 10,
+ FlattenedAccentTopShiftUp = 20,
AccentBaseDepth = 80,
DelimiterPercent = 85,
DelimiterShortfall = 400,
@@ -79,6 +79,9 @@ return {
tweak = "addmirrors",
},
{
+ tweak = "addcomposites",
+ },
+ {
tweak = "fixoldschool",
feature = "euleroverpagella",
},
@@ -87,7 +90,7 @@ return {
list = {
{
source = { first = 0x02980 }, -- triplebar
- filename = "TeXGyrePagellaMath-Companion.otf",
+ filename = "texgyrepagellamathcompanion-regular.otf",
},
},
},
@@ -107,7 +110,7 @@ return {
tweak = "checkaccents",
},
{
- tweak = "wipeweirdones",
+ tweak = "wipecues",
},
{
tweak = "parameters",
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/schola-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/schola-math.lfg
index 5bca0e19b7c..c32685c0282 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/schola-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/schola-math.lfg
@@ -35,6 +35,9 @@ return {
{
tweak = "addmirrors",
},
+ {
+ tweak = "addcomposites",
+ },
presets.scripttocalligraphic { },
presets.rsfstoscript { },
presets.rsfsuprighttoscript { },
@@ -50,6 +53,9 @@ return {
tweak = "checkaccents",
},
{
+ tweak = "wipecues",
+ },
+ {
tweak = "kerns",
list = {
[0x002F] = { topleft = -0.2, bottomright = -0.2 },
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/stixtwo-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/stixtwo-math.lfg
index 811daffdbea..18f5d721aa7 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/stixtwo-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/stixtwo-math.lfg
@@ -49,19 +49,19 @@ return {
},
},
parameters = {
- AccentBaseDepth = 30,
- FlattenedAccentTopShiftUp = 0,
- RadicalKernAfterDegree = -500,
- DelimiterPercent = 85,
- DelimiterShortfall = 400,
- DelimiterDisplayPercent = 90,
- DelimiterDisplayShortfall = 400,
- DisplayOperatorMinHeight = 1800, -- 1800 in font
- PrimeShiftUp = "1.3*SuperscriptShiftUp",
- PrimeShiftUpCramped = "1.3*SuperscriptShiftUp",
- RadicalDisplayStyleVerticalGap = "RadicalVerticalGap", --170, 85
--- SuperscriptSnap = 1000,
--- SubscriptSnap = 500,
+ AccentBaseDepth = 30,
+ FlattenedAccentTopShiftUp = 0,
+ RadicalKernAfterDegree = -500,
+ DelimiterPercent = 85,
+ DelimiterShortfall = 400,
+ DelimiterDisplayPercent = 90,
+ DelimiterDisplayShortfall = 400,
+ DisplayOperatorMinHeight = 1800, -- 1800 in font
+ PrimeShiftUp = "1.3*SuperscriptShiftUp",
+ PrimeShiftUpCramped = "1.3*SuperscriptShiftUp",
+ RadicalDisplayStyleVerticalGap = "RadicalVerticalGap", --170, 85
+ -- SuperscriptSnap = 1000,
+ -- SubscriptSnap = 500,
},
tweaks = {
aftercopying = {
@@ -76,6 +76,9 @@ return {
{
tweak = "addmirrors",
},
+ {
+ tweak = "addcomposites",
+ },
-- MS: we need to check this, I moved it up
{
tweak = "replacealphabets",
@@ -91,6 +94,16 @@ return {
feature = "ss01",
},
{
+ source = "uppercaseboldscript",
+ target = "uppercaseboldcalligraphic",
+ unicode = "uppercasescriptbold",
+ },
+ {
+ source = "uppercaseboldscript",
+ target = "uppercaseboldscript",
+ feature = "ss01",
+ },
+ {
source = { first = 0xE17D, last = 0xE195 },
target = "uppercasesansgreek",
unicode = "uppercasegreeknormal",
@@ -112,7 +125,13 @@ return {
},
},
},
- --
+ {
+ tweak = "replacealphabets",
+ filename = "TeXGyrePagellaMath.otf",
+ list = {
+ { unicodes = { 0x007C, 0x2223, 0x2016, 0x2980, 0x007C } }, -- single single double triple
+ }
+ },
presets.scripttocalligraphic { },
presets.rsfstoscript { },
presets.rsfsuprighttoscript { },
@@ -127,6 +146,9 @@ return {
{
tweak = "checkaccents",
},
+ {
+ tweak = "wipecues",
+ },
-- Extensibles use .s1 (variant 1), so we cannot wipe all
{
tweak = "wipevariants",
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/termes-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/termes-math.lfg
index 5d25fe19740..3b8e66dd332 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/termes-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/termes-math.lfg
@@ -40,11 +40,14 @@ return {
tweak = "addmirrors",
},
{
+ tweak = "addcomposites",
+ },
+ {
tweak = "replacealphabets",
list = {
{
source = { first = 0x02980 }, -- triplebar
- filename = "TeXGyreTermesMath-Companion.otf",
+ filename = "texgyretermesmathcompanion-regular.otf",
},
},
},
@@ -63,6 +66,9 @@ return {
tweak = "checkaccents",
},
{
+ tweak = "wipecues",
+ },
+ {
tweak = "kerns",
list = {
[0x002F] = { topleft = -0.2, bottomright = -0.2 },
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-antykwa.mkiv b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-antykwa.mkiv
index 09431ca8426..406f3de0e20 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-antykwa.mkiv
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-antykwa.mkiv
@@ -17,7 +17,7 @@
\startsetups[\s!math:antykwa]
\setmathfenceparameter\c!alternative{1}%
- \setupmathradical[\c!leftmargin=.05mq,\c!mindepth=.05mx]%
+ \setupmathradical[\c!leftmargin=.05mq,\c!mindepth=.05mx]% mathquad mathex
\stopsetups
% cond => -cont as in iwona
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-arsenal.mkiv b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-arsenal.mkiv
new file mode 100644
index 00000000000..f04edfb6a43
--- /dev/null
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-arsenal.mkiv
@@ -0,0 +1,33 @@
+%D \module
+%D [ file=type-imp-ebgaramond,
+%D version=2013.06.22,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=EB Garamond,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\loadtypescriptfile[iwona]
+
+\starttypescriptcollection[arsenal]
+
+ \starttypescript [\s!sans] [arsenal]
+ \setups[font:fallback:sans]
+ \definefontsynonym [\s!Sans] [\s!file:arsenal-regular] [\s!features=\s!default]
+ \definefontsynonym [\s!SansItalic] [\s!file:arsenal-italic] [\s!features=\s!default]
+ \definefontsynonym [\s!SansBold] [\s!file:arsenal-bold] [\s!features=\s!default]
+ \definefontsynonym [\s!SansBoldItalic][\s!file:arsenal-bolditalic][\s!features=\s!default]
+ \stoptypescript
+
+ \starttypescript[arsenal]
+ \definetypeface [\typescriptone] [\s!ss] [\s!sans] [arsenal] [\s!default]
+ \definetypeface [\typescriptone] [\s!rm] [\s!sans] [arsenal] [\s!default]
+ \definetypeface [\typescriptone] [\s!tt] [\s!mono] [dejavu] [\s!default] [\s!rscale=0.9]
+ \definetypeface [\typescriptone] [\s!mm] [\s!math] [iwona-light] [\s!default] [\s!rscale=1.1]
+ \stoptypescript
+
+\stoptypescriptcollection
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-cambria.mkiv b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-cambria.mkiv
index 85f6766acdd..6db7e29dd97 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-cambria.mkiv
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-cambria.mkiv
@@ -17,82 +17,63 @@
\starttypescriptcollection[cambria]
- \pushglobalsetups
+ % \setupmathradical[\c!leftmargin=.05mq,\c!mindepth=.05mx]%
+ \pushglobalsetups
\startsetups[\s!math:cambria]
- \setupmathradical[\c!leftmargin=.05mq,\c!mindepth=.05mx]%
+ \setmathradicalparameter\c!leftmargin{.05mq}%
+ \setmathradicalparameter\c!mindepth {.05mx}%
\stopsetups
-
\popglobalsetups
- % microsoft: cambria.ttc cambriab.ttf cambriai.ttf cambriaz.ttf
+ % microsoft: cambria.ttc cambria.ttc cambriab.ttf cambriai.ttf cambriaz.ttf
% ascender : cambmath.ttf cambria.ttf cambriab.ttf cambriai.ttf cambriaz.ttf
\doifunknownfontfeature {cambria-math-bold} {\definefontfeature[cambria-math-bold][boldened]}
- \starttypescript [\s!math] [cambria,cambria-x,cambria-y,cambria-nt,cambria-m,cambria-a]
+ \starttypescript [\s!math] [cambria,cambria-nt]
\checkedmapfontsize[\typescripttwo][\s!script] [.73]
\checkedmapfontsize[\typescripttwo][\s!scriptscript][.60]
\stoptypescript
- \starttypescript [\s!math,\s!serif] [cambria,cambria-x,cambria-y,cambria-nt]
- % whatever matches
- \definefontsynonym [CambriaMath] [\s!name:cambriamath]
- \definefontsynonym [CambriaSerif] [\s!name:cambria]
+ \starttypescript [\s!math,\s!serif] [cambria,cambria-nt]
+ \doifelsefile{cambria.ttc} {
+ % microsoft cabria
+ \definefontsynonym [CambriaMath] [\s!file:cambria.ttc(Cambria Math)]
+ \definefontsynonym [CambriaSerif] [\s!file:cambria.ttc(Cambria)]
+ } {
+ % ascender cambria
+ \definefontsynonym [CambriaMath] [\s!file:cambmath.ttf]
+ \definefontsynonym [CambriaSerif] [\s!file:cambria.ttf]
+ }
+ \definefontsynonym [CambriaSerifBold] [\s!file:cambriab.ttf]
+ \definefontsynonym [CambriaSerifItalic] [\s!file:cambriai.ttf]
+ \definefontsynonym [CambriaSerifBoldItalic] [\s!file:cambriaz.ttf]
\stoptypescript
- \starttypescript [\s!math,\s!serif] [cambria-m]
- % microsoft cabria
- \definefontsynonym [CambriaMath] [\s!file:cambria.ttc(Cambria Math)]
- \definefontsynonym [CambriaSerif] [\s!file:cambria.ttc(Cambria)]
- \stoptypescript
- \starttypescript [\s!math,\s!serif] [cambria-a]
- % ascender cambria
- \definefontsynonym [CambriaMath] [\s!file:cambmath.ttf]
- \definefontsynonym [CambriaSerif] [\s!file:cambria.ttf]
- \stoptypescript
-
- % We load a goodies file that will apply a patch to the font. As a demonstration
- % we apply the patch when caching and when scaling which is why we also specify
- % the goodies file with the name.
- \starttypescript [\s!math] [cambria,cambria-m,cambria-a] [\s!name]
+ \starttypescript [\s!math] [cambria] [\s!name]
\loadfontgoodies[cambria-math]
\definefontsynonym [\s!MathRoman] [CambriaMath] [\s!features={\s!math\mathsizesuffix,cambria:mathextra,mathextra},\s!goodies=cambria-math]
\definefontsynonym [\s!MathRomanBold] [CambriaMath] [\s!features={\s!math\mathsizesuffix,cambria-math-bold,cambria:mathextra,mathextra},\s!goodies=cambria-math]
\stoptypescript
+
\starttypescript [\s!math] [cambria-nt] [\s!name]
\loadfontgoodies[cambria-math]
\definefontsynonym [\s!MathRoman] [CambriaMath] [\s!features={\s!math\mathsizesuffix,cambria:mathextra,mathextra}]
\definefontsynonym [\s!MathRomanBold] [CambriaMath] [\s!features={\s!math\mathsizesuffix,cambria-math-bold,cambria:mathextra,mathextra}]
\stoptypescript
- \starttypescript [\s!math] [cambria-x] [\s!name]
- \loadfontgoodies[cambria-math]
- \definefontsynonym [\s!MathRoman] [CambriaMath] [\s!features={\s!math,cambria:mathextra,mathextra},\s!goodies=cambria-math]
- \definefontsynonym [\s!MathRomanBold] [CambriaMath] [\s!features={\s!math,cambria-math-bold,cambria:mathextra,mathextra},\s!goodies=cambria-math]
- \stoptypescript
- \starttypescript [\s!math] [cambria-y] [\s!name]
- \loadfontgoodies[cambria-math]
- \definefontsynonym [\s!MathRoman] [CambriaMath] [\s!features={\s!math-nostack\mathsizesuffix,cambria:mathextra,mathextra},\s!goodies=cambria-math]
- \definefontsynonym [\s!MathRomanBold] [CambriaMath] [\s!features={\s!math-nostack\mathsizesuffix,cambria-math-bold,cambria:mathextra,mathextra},\s!goodies=cambria-math]
- \stoptypescript
- \starttypescript [\s!serif] [cambria,cambria-m,cambria-a,cambria-nt] [\s!name]
+ \starttypescript [\s!serif] [cambria,cambria-nt] [\s!name]
\setups[\s!font:\s!fallback:\s!serif]
- \definefontsynonym [\s!Serif] [CambriaSerif] [\s!features=\s!default,\s!goodies=cambria]
- \definefontsynonym [\s!SerifBold] [\s!name:cambriabold] [\s!features=\s!default,\s!goodies=cambria]
- \definefontsynonym [\s!SerifItalic] [\s!name:cambriaitalic] [\s!features=\s!default,\s!goodies=cambria]
- \definefontsynonym [\s!SerifBoldItalic] [\s!name:cambriabolditalic] [\s!features=\s!default,\s!goodies=cambria]
+ \definefontsynonym [\s!Serif] [CambriaSerif] [\s!features=\s!default,\s!goodies=cambria]
+ \definefontsynonym [\s!SerifBold] [CambriaSerifBold] [\s!features=\s!default,\s!goodies=cambria]
+ \definefontsynonym [\s!SerifItalic] [CambriaSerifItalic] [\s!features=\s!default,\s!goodies=cambria]
+ \definefontsynonym [\s!SerifBoldItalic] [CambriaSerifBoldItalic] [\s!features=\s!default,\s!goodies=cambria]
\stoptypescript
- \starttypescript [cambria,cambria-m,cambria-a]
- % any
- \definetypeface [cambria] [\s!rm] [\s!serif] [\typescriptone] [\s!default]
- \definetypeface [cambria] [\s!tt] [\s!mono] [dejavu] [\s!default]
- \definetypeface [cambria] [\s!mm] [\s!math] [\typescriptone] [\s!default]
- \stoptypescript
- \starttypescript [cambria-x,cambria-y,cambria-nt]
- % test x
+ \starttypescript [cambria,cambria-nt]
\definetypeface [\typescriptone] [\s!rm] [\s!serif] [cambria] [\s!default]
+ \definetypeface [\typescriptone] [\s!ss] [\s!sans] [dejavu] [\s!default]
\definetypeface [\typescriptone] [\s!tt] [\s!mono] [dejavu] [\s!default]
\definetypeface [\typescriptone] [\s!mm] [\s!math] [\typescriptone] [\s!default]
\stoptypescript
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-concrete.mkiv b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-concrete.mkiv
index c383a27fe6d..d85f342be2c 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-concrete.mkiv
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-concrete.mkiv
@@ -32,9 +32,9 @@
\starttypescript [\s!sans] [concrete]
\definefontsynonym [\s!Sans] [LMTypewriterVarWd-Regular] [\s!features={\s!default,concrete-text-bold}]
- \definefontsynonym [\s!SansItalic] [LMTypewriterVarWd-Dark] [\s!features={\s!default,concrete-text-bold}]
+ \definefontsynonym [\s!SansBold] [LMTypewriterVarWd-Dark] [\s!features={\s!default,concrete-text-bold}]
+ \definefontsynonym [\s!SansItalic] [LMTypewriterVarWd-Oblique] [\s!features={\s!default,concrete-text-bold}]
\definefontsynonym [\s!SansSlanted] [LMTypewriterVarWd-Oblique] [\s!features={\s!default,concrete-text-bold}]
- \definefontsynonym [\s!SansBold] [LMTypewriterVarWd-Oblique] [\s!features={\s!default,concrete-text-bold}]
\definefontsynonym [\s!SansBoldItalic] [LMTypewriterVarWd-DarkOblique] [\s!features={\s!default,concrete-text-bold}]
\definefontsynonym [\s!SansBoldSlanted] [LMTypewriterVarWd-DarkOblique] [\s!features={\s!default,concrete-text-bold}]
\stoptypescript
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-erewhon.mkiv b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-erewhon.mkiv
index 94921609aa7..63cad370aed 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-erewhon.mkiv
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-erewhon.mkiv
@@ -17,9 +17,12 @@
\starttypescriptcollection[erewhon]
+ % \setupmathradical[\c!leftmargin=.1mq,\c!mindepth=0.1mx]%
+
\pushglobalsetups
\startsetups[\s!math:erewhon]
- \setupmathradical[\c!leftmargin=.1mq,mindepth=0.1mx]%
+ \setmathradicalparameter\c!leftmargin{.1mq}%
+ \setmathradicalparameter\c!mindepth {.1mx}%
\stopsetups
\popglobalsetups
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-husayni.mkiv b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-husayni.mkiv
index 76cbf77db65..a551c7f8979 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-husayni.mkiv
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-husayni.mkiv
@@ -192,7 +192,8 @@
\starttypescript [husayni-default]
\definetypeface [husayni-default] [rm] [naskh] [husayni] [default] [fallbacks=husayni-latin]
\definetypeface [husayni-default] [tt] [mono] [modern] [default] [fallbacks=husayni-latin]
- \definetypeface [husayni-default] [mm] [math] [xitsbidi] [default]
+ % \definetypeface [husayni-default] [mm] [math] [xitsbidi] [default]
+ \definetypeface [husayni-default] [mm] [math] [stix] [default]
\stoptypescript
\stoptypescriptcollection
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-koeielettersot.mkiv b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-koeielettersot.mkiv
new file mode 100644
index 00000000000..605b3b3185d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-koeielettersot.mkiv
@@ -0,0 +1,185 @@
+%D \module
+%D [ file=type-cowotf,
+%D version=2016.09.16,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Cow Fonts (otf version),
+%D author={Taco Hoekwater \& Hans Hagen},
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D The cow fonts are a project of Duane Bibby, Hans Hagen and Taco
+%D Hoekwater.
+
+\unprotect
+
+\definefontfeature
+ [sheepdigits]
+ [mode=node,
+ script=latn,
+ ss01=yes]
+
+\definefontfeature
+ [mathsheepdigits]
+ [sheepdigits]
+ [mode=base]
+
+\definefontfeature
+ [cowslogos]
+ [mode=node,
+ script=latn,
+ ss02=yes,
+ dlig=yes]
+
+\definefontfeature
+ [cowsligatures]
+ [mode=node,
+ script=latn,
+ dlig=yes]
+
+\definefontfeature
+ [cowscolors]
+ [mode=node,
+ colr=yes,
+ ss02=yes,
+ dlig=yes]
+
+\definefontfeature
+ [cowsdefault]
+ [default]
+ [mode=node,
+ wipemath=no,
+ compose=yes]
+
+\definefontfeature
+ [sheepdefault]
+ [cowsdefault,sheepdigits]
+
+\definefontfeature
+ [cowscolored]
+ [cowsdefault,cowscolors]
+
+\definefontfeature
+ [sheepcolored]
+ [sheepdefault,cowscolors]
+
+\definefontfeature[sheepdefaultbold][sheepdefault][boldened]
+\definefontfeature[cowsdefaultbold] [cowsdefault] [boldened]
+
+\starttypescriptcollection[koeielettersot]
+
+ \loadfontgoodies[koeielettersot]
+
+ \starttypescript [\s!all] [cowsotf]
+ \definefontsynonym [Cows] [koeielettersot][\s!features=cowsdefault]
+ \definefontsynonym [CowsLogo] [koeielettersot][\s!features=cowslogos]
+ \definefontsynonym [CowsMathRoman][koeielettersot][\s!features=mathextra,\s!goodies=koeielettersot]
+ \stoptypescript
+
+ \starttypescript [\s!all] [koeielettersotf,sheepotf]
+ \definefontsynonym [Sheep] [koeielettersot][\s!features=sheepdefault]
+ \definefontsynonym [SheepBold] [koeielettersot][\s!features=sheepdefaultbold]
+ \definefontsynonym [SheepLogo] [koeielettersot][\s!features=cowslogos]
+ \definefontsynonym [SheepMathRoman][koeielettersot][\s!features={mathsheepdigits,mathextra},\s!goodies=koeielettersot]
+ \stoptypescript
+
+% \definefontsynonym[\s!MathRoman][file:texgyredejavu-math][\s!features={\s!math\mathsizesuffix,mathextra},\s!goodies=dejavu-math]
+
+ \starttypescript [\s!all] [coloredcowsotf]
+ \definefontsynonym [Cows] [koeielettersot][\s!features=cowscolored]
+ \definefontsynonym [CowsLogo] [koeielettersot][\s!features=cowslogos]
+ \definefontsynonym [CowsMathRoman][koeielettersot][\s!features=mathextra,\s!goodies=koeielettersot]
+ \stoptypescript
+
+ \starttypescript [\s!all] [coloredsheepotf]
+ \definefontsynonym [Sheep] [koeielettersot][\s!features=sheepcolored]
+ \definefontsynonym [SheepLogo] [koeielettersot][\s!features=cowslogos]
+ \definefontsynonym [SheepMathRoman][koeielettersot][\s!features={mathsheepdigits,mathextra},\s!goodies=koeielettersot]
+ \stoptypescript
+
+ \starttypescript [\s!serif] [cowsotf,coloredcowsotf]
+ \setups[\s!font:\s!fallback:\s!serif]
+ \definefontsynonym [\s!Serif] [Cows]
+ \definefontsynonym [\s!Serif Logo][CowsLogo]
+ \stoptypescript
+
+ \starttypescript [\s!serif] [koeielettersotf,sheepotf,coloredsheepotf]
+ \setups[\s!font:\s!fallback:\s!serif]
+ \definefontsynonym [\s!Serif] [Sheep]
+ \definefontsynonym [\s!SerifBold] [SheepBold]
+ \definefontsynonym [\s!Serif Logo][SheepLogo]
+ \stoptypescript
+
+ \starttypescript [\s!math] [cowsotf,coloredcowsotf]
+ \definefontsynonym [\s!MathRoman][CowsMathRoman]
+ \enablemathrules % uses \fontclass, for now this way
+ \stoptypescript
+
+ \starttypescript [\s!math] [koeielettersotf,sheepotf,coloredsheepotf]
+ \definefontsynonym [\s!MathRoman][SheepMathRoman]
+ \enablemathrules % uses \fontclass, for now this way
+ \stoptypescript
+
+ \starttypescript [koeieletters,cows,sheep,coloredcows,coloredsheep]
+ \definetypeface [\typescriptone][\s!rm][\s!serif][\typescriptone otf][\s!default]
+ \definetypeface [\typescriptone][\s!ss][\s!serif][\typescriptone otf][\s!default]
+ \definetypeface [\typescriptone][\s!mm][\s!math] [\typescriptone otf][\s!default]
+ \definetypeface [\typescriptone][\s!tt][\s!mono] [modern] [\s!default][\s!rscale=0.85]
+ \stoptypescript
+
+\stoptypescriptcollection
+
+\protect
+
+\continueifinputfile{type-imp-koeielettersot.mkiv}
+
+\starttext
+
+\setupbodyfont[cows]
+
+% \input tufte
+
+% \stoptext
+
+% \starttext
+
+\loadtypescriptfile[cowotf]
+
+\definecolor[cowred] [r=.50]
+\definecolor[cowgreen] [g=.50]
+\definecolor[cowblue] [b=.50]
+\definecolor[cowyellow][y=.25]
+
+\definefontcolorpalette[cows][cowgreen,cowyellow,cowblue,cowred]
+
+\startluacode
+ fonts.handlers.otf.registerpalette("cows", {
+ { g = .5 },
+ { r = .75, g = .75 },
+ { b = .5 },
+ { r = .5 },
+ })
+\stopluacode
+
+\adaptfontfeature[cowscolored] [colr=cows]
+
+\setupbodyfont[coloredcows,12pt]
+
+\input zapf
+
+\definefontsynonym
+ [CowsColored]
+ [koeielettersot]
+
+\showotfcomposition
+ {koeielettersot*default,cowscolors}
+ {1}
+ {context}
+
+\scale[width=\textwidth]{\getnamedglyphdirect{CowsColored*default,cowscolors}{contextlogo}}
+\scale[width=\textwidth]{\definedfont[CowsColored*default,cowscolors]context}
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-kpfonts.mkiv b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-kpfonts.mkiv
index bc7de3ae75a..d33c14cc0dc 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-kpfonts.mkiv
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-kpfonts.mkiv
@@ -15,84 +15,57 @@
\starttypescriptcollection[kpfonts-opentype]
- \doifunknownfontfeature {kp-sans-bold} {\definefontfeature[kp-sans-bold][boldened-15]}
-
- \starttypescript [\s!math] [kpfonts,kpfonts-nt,kpfonts-bold,kpfonts-light,kpfonts-sans]
- \checkedmapfontsize[\typescripttwo][\s!script] [.70]
- \checkedmapfontsize[\typescripttwo][\s!scriptscript][.55]
+ \starttypescript [\s!math] [kpfonts-light,kpfonts,kpfonts-sans,kpfonts-nt]
+ \checkedmapfontsize [\typescripttwo] [\s!script] [.70]
+ \checkedmapfontsize [\typescripttwo] [\s!scriptscript] [.55]
\stoptypescript
- \starttypescript [kpfonts,kpfonts-light,kpfonts-bold,kpfonts-sans,kpfonts-nt]
- \loadfontgoodies[kpfonts-math]
- \definetypeface [\typescriptone] [\s!rm] [\s!serif] [\typescriptone] [\s!default] [\s!features=\s!default]
- \definetypeface [\typescriptone] [\s!ss] [\s!sans] [\typescriptone] [\s!default] [\s!features=\s!default]
- \definetypeface [\typescriptone] [\s!tt] [\s!mono] [\typescriptone] [\s!default] [\s!features=\s!none]
- \definetypeface [\typescriptone] [\s!mm] [\s!math] [\typescriptone] [\s!default]
- % for the moment here:
- % \setupmathrendering[\typescriptone][\s!it=\s!italic]
- \quittypescriptscanning
+ \starttypescript [\s!math] [kpfonts-light]
+ \definefontsynonym [\s!MathRoman] [\s!file:KpMath-Light.otf] [\s!features={\s!math\mathsizesuffix,kpfonts:mathextra,mathextra},\s!goodies=kpfonts-math]
+ \definefontsynonym [\s!MathRomanBold] [\s!file:KpMath-Semibold.otf] [\s!features={\s!math\mathsizesuffix,kpfonts:mathextra,mathextra},\s!goodies=kpfonts-math]
\stoptypescript
- \starttypescript [\s!serif] [kpfonts,kpfonts-sans,kpfonts-nt]
- \definefontsynonym [\s!Serif] [\s!file:KpRoman-Regular.otf][\s!goodies=kpfonts-text]
- \definefontsynonym [\s!SerifBold] [\s!file:KpRoman-SemiBold.otf][\s!goodies=kpfonts-text]
- \definefontsynonym [\s!SerifItalic] [\s!file:KpRoman-Italic.otf][\s!goodies=kpfonts-text]
- \definefontsynonym [\s!SerifBoldItalic] [\s!file:KpRoman-SemiboldItalic.otf][\s!goodies=kpfonts-text]
- \definefontsynonym [\s!SerifSlanted] [\s!SerifItalic]
- \definefontsynonym [\s!SerifBoldSlanted] [\s!SerifBoldItalic]
+ \starttypescript [\s!math] [kpfonts]
+ \definefontsynonym [\s!MathRoman] [\s!file:KpMath-Regular.otf] [\s!features={\s!math\mathsizesuffix,kpfonts:mathextra,mathextra},\s!goodies=kpfonts-math]
+ \definefontsynonym [\s!MathRomanBold] [\s!file:KpMath-Bold.otf] [\s!features={\s!math\mathsizesuffix,kpfonts:mathextra,mathextra},\s!goodies=kpfonts-math]
\stoptypescript
- \starttypescript [\s!math] [kpfonts]
- \definefontsynonym [\s!MathRoman] [\s!file:KpMath-Regular.otf] [\s!features={\s!math\mathsizesuffix,kpfonts:mathextra,mathextra},\s!goodies=kpfonts-math]
- \definefontsynonym [\s!MathRomanBold] [\s!file:KpMath-Semibold.otf] [\s!features={\s!math\mathsizesuffix,kpfonts:mathextra,mathextra},\s!goodies=kpfonts-math]
+ \starttypescript [\s!math] [kpfonts-sans]
+ \definefontsynonym [\s!MathRoman] [\s!file:KpMath-Sans.otf] [\s!features={\s!math\mathsizesuffix,kpfonts:mathextra,mathextra},\s!goodies=kpfonts-math]
+ \definefontsynonym [\s!MathRomanBold] [\s!file:KpMath-SansBold.otf] [\s!features={\s!math\mathsizesuffix,kpfonts:mathextra,mathextra},\s!goodies=kpfonts-math]
\stoptypescript
\starttypescript [\s!math] [kpfonts-nt]
- \definefontsynonym [\s!MathRoman] [\s!file:KpMath-Regular.otf] [\s!features={\s!math\mathsizesuffix,kpfonts:mathextra,mathextra}]
- \definefontsynonym [\s!MathRomanBold] [\s!file:KpMath-Semibold.otf] [\s!features={\s!math\mathsizesuffix,kpfonts:mathextra,mathextra}]
+ \definefontsynonym [\s!MathRoman] [\s!file:KpMath-Regular.otf] [\s!features={\s!math\mathsizesuffix,kpfonts:mathextra,mathextra}]
+ \definefontsynonym [\s!MathRomanBold] [\s!file:KpMath-Bold.otf] [\s!features={\s!math\mathsizesuffix,kpfonts:mathextra,mathextra}]
\stoptypescript
- \starttypescript [\s!serif] [kpfonts-light]
- \definefontsynonym [\s!Serif] [\s!file:KpRoman-Light.otf]
- \definefontsynonym [\s!SerifBold] [\s!file:KpRoman-Regular.otf]
- \definefontsynonym [\s!SerifItalic] [\s!file:KpRoman-LightItalic.otf]
- \definefontsynonym [\s!SerifBoldItalic] [\s!file:KpRoman-Italic.otf]
- \definefontsynonym [\s!SerifSlanted] [\s!SerifItalic]
- \definefontsynonym [\s!SerifBoldSlanted] [\s!SerifBoldItalic]
- \stoptypescript
- \starttypescript [\s!math] [kpfonts-light]
- \definefontsynonym [\s!MathRoman] [\s!file:KpMath-Light.otf] [\s!features={\s!math\mathsizesuffix,kpfonts:mathextra,mathextra},\s!goodies=kpfonts-math]
- \definefontsynonym [\s!MathRomanBold] [\s!file:KpMath-Regular.otf] [\s!features={\s!math\mathsizesuffix,kpfonts:mathextra,mathextra},\s!goodies=kpfonts-math]
- \stoptypescript
-
- \starttypescript [\s!serif] [kpfonts-bold]
+ \starttypescript [\s!serif] [kpfonts-light]
\setups[\s!font:\s!fallback:\s!serif]
- \definefontsynonym [\s!Serif] [\s!file:KpRoman-SemiBold.otf]
- \definefontsynonym [\s!SerifBold] [\s!file:KpRoman-Bold.otf]
- \definefontsynonym [\s!SerifItalic] [\s!file:KpRoman-SemiboldItalic.otf]
- \definefontsynonym [\s!SerifBoldItalic] [\s!file:KpRoman-BoldItalic.otf]
+ \definefontsynonym [\s!Serif] [\s!file:KpRoman-Light.otf] [\s!goodies=kpfonts-text]
+ \definefontsynonym [\s!SerifBold] [\s!file:KpRoman-Semibold.otf] [\s!goodies=kpfonts-text]
+ \definefontsynonym [\s!SerifItalic] [\s!file:KpRoman-LightItalic.otf] [\s!goodies=kpfonts-text]
+ \definefontsynonym [\s!SerifBoldItalic] [\s!file:KpRoman-SemiboldItalic.otf] [\s!goodies=kpfonts-text]
\stoptypescript
- \starttypescript [\s!math] [kpfonts-bold]
- \definefontsynonym [\s!MathRoman] [\s!file:KpMath-SemiBold.otf] [\s!features={\s!math\mathsizesuffix,kpfonts:mathextra,mathextra},\s!goodies=kpfonts-math]
- \definefontsynonym [\s!MathRomanBold] [\s!file:KpMath-Bold.otf] [\s!features={\s!math\mathsizesuffix,kpfonts:mathextra,mathextra},\s!goodies=kpfonts-math]
+ \starttypescript [\s!serif] [kpfonts,kpfonts-sans,kpfonts-nt]
+ \setups[\s!font:\s!fallback:\s!serif]
+ \definefontsynonym [\s!Serif] [\s!file:KpRoman-Regular.otf] [\s!goodies=kpfonts-text]
+ \definefontsynonym [\s!SerifBold] [\s!file:KpRoman-Bold.otf] [\s!goodies=kpfonts-text]
+ \definefontsynonym [\s!SerifItalic] [\s!file:KpRoman-Italic.otf] [\s!goodies=kpfonts-text]
+ \definefontsynonym [\s!SerifBoldItalic] [\s!file:KpRoman-BoldItalic.otf] [\s!goodies=kpfonts-text]
\stoptypescript
- \starttypescript [\s!sans] [kpfonts,kpfonts-sans,kpfonts-light,kpfonts-bold,kpfonts-nt]
+ \starttypescript [\s!sans] [kpfonts-light,kpfonts,kpfonts-sans,kpfonts-nt]
\setups[\s!font:\s!fallback:\s!sans]
- \definefontsynonym [\s!Sans] [\s!file:KpSans-Regular.otf]
- \definefontsynonym [\s!SansBold] [\s!file:KpSans-Bold.otf]
- \definefontsynonym [\s!SansItalic] [\s!file:KpSans-Italic.otf]
- \definefontsynonym [\s!SansBoldItalic] [\s!file:KpSans-BoldItalic.otf]
+ \definefontsynonym [\s!Sans] [\s!file:KpSans-Regular.otf] [\s!goodies=kpfonts-text]
+ \definefontsynonym [\s!SansBold] [\s!file:KpSans-Bold.otf] [\s!goodies=kpfonts-text]
+ \definefontsynonym [\s!SansItalic] [\s!file:KpSans-Italic.otf] [\s!goodies=kpfonts-text]
+ \definefontsynonym [\s!SansBoldItalic] [\s!file:KpSans-BoldItalic.otf] [\s!goodies=kpfonts-text]
\stoptypescript
- \starttypescript [\s!math] [kpfonts-sans]
- \definefontsynonym [\s!MathRoman] [\s!file:KpMath-Sans.otf] [\s!features={\s!math\mathsizesuffix,kpfonts:mathextra,mathextra},\s!goodies=kpfonts-math]
- \definefontsynonym [\s!MathRomanBold] [\s!file:KpMath-Sans.otf] [\s!features={\s!math\mathsizesuffix,kp-sans-bold,kpfonts:mathextra,mathextra},\s!goodies=kpfonts-math]
- \stoptypescript
-
- \starttypescript [\s!mono] [kpfonts,kpfonts-sans,kpfonts-light,kpfonts-bold,kpfonts-nt]
+ \starttypescript [\s!mono] [kpfonts-light,kpfonts,kpfonts-sans,kpfonts-nt]
\setups[\s!font:\s!fallback:\s!mono]
\definefontsynonym [\s!Mono] [\s!file:KpMono-Regular.otf]
\definefontsynonym [\s!MonoBold] [\s!file:KpMono-Bold.otf]
@@ -100,6 +73,17 @@
\definefontsynonym [\s!MonoBoldItalic] [\s!file:KpMono-BoldItalic.otf]
\stoptypescript
+ \starttypescript [kpfonts-light,kpfonts,kpfonts-sans,kpfonts-nt]
+ \loadfontgoodies[kpfonts-math]
+ \definetypeface [\typescriptone] [\s!rm] [\s!serif] [\typescriptone] [\s!default] [\s!features=\s!default]
+ \definetypeface [\typescriptone] [\s!ss] [\s!sans] [\typescriptone] [\s!default] [\s!features=\s!default]
+ \definetypeface [\typescriptone] [\s!tt] [\s!mono] [\typescriptone] [\s!default] [\s!features=\s!none]
+ \definetypeface [\typescriptone] [\s!mm] [\s!math] [\typescriptone] [\s!default]
+ % for the moment here:
+ % \setupmathrendering[\typescriptone][\s!it=\s!italic]
+ \quittypescriptscanning
+ \stoptypescript
+
\stoptypescriptcollection
\endinput
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-lato.mkiv b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-lato.mkiv
index 359c2285f15..ee3808ce38b 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-lato.mkiv
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-lato.mkiv
@@ -30,12 +30,11 @@
% Lato-Thin.ttf
% Lato-ThinItalic.ttf
-\loadtypescriptfile[dejavu]
-\loadtypescriptfile[xits]
-
\starttypescriptcollection[lato]
- \starttypescript [\s!sans] [lato] [\s!name]
+ \doifunknownfontfeature {lato-math-bold} {\definefontfeature[lato-math-bold][boldened-10]}
+
+ \starttypescript [\s!sans] [lato,lato-nt] [\s!name]
\setups[\s!font:\s!fallback:\s!sans]
\definefontsynonym [\s!Sans] [\s!file:lato-regular] [\s!features=\s!default]
\definefontsynonym [\s!SansBold] [\s!file:lato-bold] [\s!features=\s!default]
@@ -99,11 +98,27 @@
\definefontsynonym [\s!SansBoldItalic] [\s!file:lato-semibolditalic] [\s!features=\s!default]
\stoptypescript
- \starttypescript[lato,lato-light,lato-dark,lato-black,lato-hairline,lato-thin,lato-medium,lato-semibold]
+ \starttypescript [\s!math] [lato,lato-nt]
+ \checkedmapfontsize[\typescripttwo][\s!script] [.70]
+ \checkedmapfontsize[\typescripttwo][\s!scriptscript][.55]
+ \stoptypescript
+
+ \starttypescript [\s!math] [lato] [\s!name]
+ \definefontsynonym [\s!MathRoman] [\s!file:LeteSansMath.otf][\s!features={\s!math\mathsizesuffix,lato:mathextra,mathextra},\s!goodies=lato-math]
+ \definefontsynonym [\s!MathRomanBold][\s!file:LeteSansMath.otf][\s!features={\s!math\mathsizesuffix,lato-math-bold,lato:mathextra,mathextra},\s!goodies=lato-math]
+ \stoptypescript
+
+ \starttypescript [\s!math] [lato-nt] [\s!name]
+ \definefontsynonym [\s!MathRoman] [\s!file:LeteSansMath.otf][\s!features={\s!math\mathsizesuffix,lato:mathextra,mathextra}]
+ \definefontsynonym [\s!MathRomanBold][\s!file:LeteSansMath.otf][\s!features={\s!math\mathsizesuffix,lato-math-bold,lato:mathextra,mathextra}]
+ \stoptypescript
+
+
+ \starttypescript[lato,lato-nt,lato-light,lato-dark,lato-black,lato-hairline,lato-thin,lato-medium,lato-semibold]
\definetypeface [\typescriptone] [\s!ss] [\s!sans] [\typescriptone] [\s!default]
\definetypeface [\typescriptone] [\s!rm] [\s!serif] [dejavu] [\s!default]
\definetypeface [\typescriptone] [\s!tt] [\s!mono] [dejavu] [\s!default]
- \definetypeface [\typescriptone] [\s!mm] [\s!math] [xits] [\s!default] [\s!rscale=1.2]
+ \definetypeface [\typescriptone] [\s!mm] [\s!math] [\typescriptone] [\s!default] %[\s!rscale=1.2]
\stoptypescript
\stoptypescriptcollection
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-libertinus.mkiv b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-libertinus.mkiv
index 36d2666f724..560a9152d32 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-libertinus.mkiv
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-libertinus.mkiv
@@ -24,10 +24,10 @@
\doifunknownfontfeature {libertinus-math-bold} {\definefontfeature[libertinus-math-bold][boldened]}
\starttypescript [\s!serif] [libertinus]
- \definefontsynonym [LibertinusSerif-Regular] [\s!file:libertinusserif-regular][\s!goodies=libertinus-text]
- \definefontsynonym [LibertinusSerif-Italic] [\s!file:libertinusserif-italic][\s!goodies=libertinus-text]
+ \definefontsynonym [LibertinusSerif-Regular] [\s!file:libertinusserif-regular] [\s!goodies=libertinus-text]
+ \definefontsynonym [LibertinusSerif-Italic] [\s!file:libertinusserif-italic] [\s!goodies=libertinus-text]
\definefontsynonym [LibertinusSerif-Slanted] [\s!file:libertinusserif-italic]
- \definefontsynonym [LibertinusSerif-Bold] [\s!file:libertinusserif-bold][\s!goodies=libertinus-text]
+ \definefontsynonym [LibertinusSerif-Bold] [\s!file:libertinusserif-bold] [\s!goodies=libertinus-text]
\definefontsynonym [LibertinusSerif-BoldItalic] [\s!file:libertinusserif-bolditalic][\s!goodies=libertinus-text]
\definefontsynonym [LibertinusSerif-BoldSlanted] [\s!file:libertinusserif-bolditalic]
\stoptypescript
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-lucida-typeone.mkiv b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-lucida-typeone.mkiv
new file mode 100644
index 00000000000..59d167a1bbf
--- /dev/null
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-lucida-typeone.mkiv
@@ -0,0 +1,136 @@
+%D \module
+%D [ file=type-imp-lucida-typeone,
+%D version=2010.06.21,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Lucida,
+%D author=Mojca Miklavec \& Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{fonts}{Lucida Type 1 support can be broken due to wrong files!}
+
+\starttypescriptcollection[lucida-typeone]
+
+ \starttypescript [\s!serif] [lucida]
+ \definefontsynonym [LucidaBright] [\s!name:LucidaBright]
+ \definefontsynonym [LucidaBright-Demi] [\s!name:LucidaBright-Demi]
+ \definefontsynonym [LucidaBright-Italic] [\s!name:LucidaBright-Italic]
+ \definefontsynonym [LucidaBright-DemiItalic] [\s!name:LucidaBright-DemiItalic]
+ \definefontsynonym [LucidaBright-Oblique] [\s!name:LucidaBright-Oblique]
+ \definefontsynonym [LucidaBrightSmallcaps] [\s!name:LucidaBrightSmallcaps]
+ \definefontsynonym [LucidaBrightSmallcaps-Demi] [\s!name:LucidaBrightSmallcaps-Demi]
+ \stoptypescript
+
+ \starttypescript [\s!sans] [lucida]
+ \definefontsynonym [LucidaSans] [\s!name:LucidaSans]
+ \definefontsynonym [LucidaSans-Demi] [\s!name:LucidaSans-Demi]
+ \definefontsynonym [LucidaSans-Bold] [\s!name:LucidaSans-Bold]
+ \definefontsynonym [LucidaSans-Italic] [\s!name:LucidaSans-Italic]
+ \definefontsynonym [LucidaSans-DemiItalic] [\s!name:LucidaSans-DemiItalic]
+ \definefontsynonym [LucidaSans-BoldItalic] [\s!name:LucidaSans-BoldItalic]
+ \stoptypescript
+
+ \starttypescript [\s!mono] [lucida]
+ \definefontsynonym [LucidaTypewriter] [\s!name:LucidaTypewriter]
+ \definefontsynonym [LucidaTypewriterBold] [\s!name:LucidaTypewriterBold]
+ \definefontsynonym [LucidaTypewriterOblique] [\s!name:LucidaTypewriterOblique]
+ \definefontsynonym [LucidaTypewriterBoldOblique] [\s!name:LucidaTypewriterBoldOblique]
+ \stoptypescript
+
+ \starttypescript [\s!mono] [lucida]
+ \definefontsynonym [LucidaSans-Typewriter] [\s!name:LucidaSans-Typewriter]
+ \definefontsynonym [LucidaSans-TypewriterBold] [\s!name:LucidaSans-TypewriterBold]
+ \definefontsynonym [LucidaSans-TypewriterOblique] [\s!name:LucidaSans-TypewriterOblique]
+ \definefontsynonym [LucidaSans-TypewriterBoldOblique] [\s!name:LucidaSans-TypewriterBoldOblique]
+ \stoptypescript
+
+ \starttypescript [calligraphy] [lucida]
+ \definefontsynonym [LucidaCalligraphy-Italic] [\s!name:LucidaCalligraphy-Italic]
+ \stoptypescript
+
+ \starttypescript [casual] [lucida]
+ \definefontsynonym [LucidaCasual] [\s!name:LucidaCasual]
+ \definefontsynonym [LucidaCasual-Italic] [\s!name:LucidaCasual-Italic]
+ \stoptypescript
+
+ \starttypescript [handwriting] [lucida]
+ \definefontsynonym [LucidaHandwriting-Italic] [\s!name:LucidaHandwriting-Italic]
+ \stoptypescript
+
+ \starttypescript [fax] [lucida]
+ \definefontsynonym [LucidaFax] [\s!name:LucidaFax]
+ \definefontsynonym [LucidaFax-Demi] [\s!name:LucidaFax-Demi]
+ \definefontsynonym [LucidaFax-Italic] [\s!name:LucidaFax-Italic]
+ \definefontsynonym [LucidaFax-DemiItalic] [\s!name:LucidaFax-DemiItalic]
+ \stoptypescript
+
+ \starttypescript [blackletter] [lucida]
+ \definefontsynonym [LucidaBlackletter] [\s!name:LucidaBlackletter]
+ \stoptypescript
+
+ \starttypescript [\s!math] [lucida]
+ \loadfontgoodies[lucida-typeone-math]
+ \definefontsynonym[\s!MathRoman][lucidamath@lucida-math]
+ \stoptypescript
+
+ \starttypescript [\s!serif] [lucida] [\s!name]
+ \definefontsynonym [\s!Serif] [LucidaBright]
+ \definefontsynonym [\s!SerifBold] [LucidaBright-Demi]
+ \definefontsynonym [\s!SerifItalic] [LucidaBright-Italic]
+ \definefontsynonym [\s!SerifBoldItalic] [LucidaBright-DemiItalic]
+ \definefontsynonym [\s!SerifSlanted] [LucidaBright-Oblique]
+ \definefontsynonym [\s!SerifBoldSlanted] [LucidaBright-DemiItalic]
+ \definefontsynonym [SerifCaps] [LucidaBrightSmallcaps]
+ \definefontsynonym [SerifBoldCaps] [LucidaBrightSmallcaps-Demi]
+ \stoptypescript
+
+ % Lucida Bright Sans
+
+ \starttypescript [\s!sans] [lucida] [\s!name]
+ \definefontsynonym [\s!Sans] [LucidaSans]
+ \definefontsynonym [\s!SansBold] [LucidaSans-Demi]
+ \definefontsynonym [\s!SansItalic] [LucidaSans-Italic]
+ \definefontsynonym [\s!SansBoldItalic] [LucidaSans-DemiItalic]
+ \definefontsynonym [\s!SansSlanted] [LucidaSans-Italic]
+ \definefontsynonym [\s!SansBoldSlanted] [LucidaSans-DemiItalic]
+ \definefontsynonym [SansCaps] [LucidaSans]
+ \stoptypescript
+
+ % Lucida Bright Sans Typewriter
+
+ \starttypescript [\s!mono] [lucida] [\s!name]
+ \definefontsynonym [\s!Mono] [LucidaSans-Typewriter]
+ \definefontsynonym [\s!MonoBold] [LucidaSans-TypewriterBold]
+ \definefontsynonym [\s!MonoItalic] [LucidaSans-TypewriterOblique]
+ \definefontsynonym [\s!MonoBoldItalic] [LucidaSans-TypewriterBoldOblique]
+ \definefontsynonym [\s!MonoSlanted] [LucidaSans-TypewriterOblique]
+ \definefontsynonym [\s!MonoBoldSlanted] [LucidaSans-TypewriterBoldOblique]
+ \definefontsynonym [MonoCaps] [LucidaSans-Typewriter]
+ \stoptypescript
+
+ % Lucida Calligraphy
+
+ \starttypescript [calligraphy] [lucida] [\s!name]
+ \definefontsynonym [Calligraphy] [LucidaCalligraphy-Italic]
+ \stoptypescript
+
+ % Lucida Handwriting
+
+ \starttypescript [handwriting] [lucida] [\s!name]
+ \definefontsynonym [Handwriting] [LucidaHandwriting-Italic]
+ \stoptypescript
+
+ \starttypescript [lucida]
+ \definetypeface [lucida] [\s!rm] [\s!serif] [lucida] [\s!default] [\s!features=\s!default]
+ \definetypeface [lucida] [\s!ss] [\s!sans] [lucida] [\s!default] [\s!features=\s!default]
+ \definetypeface [lucida] [\s!tt] [\s!mono] [lucida] [\s!default] [\s!features=\s!none]
+ \definetypeface [lucida] [\s!hw] [\s!handwriting] [lucida] [\s!default] [\s!features=\s!default]
+ \definetypeface [lucida] [\s!cg] [\s!calligraphy] [lucida] [\s!default] [\s!features=\s!default]
+ \definetypeface [lucida] [\s!mm] [\s!math] [lucida] [\s!default]
+ \stoptypescript
+
+\stoptypescriptcollection
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-lucida.mkiv b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-lucida.mkiv
new file mode 100644
index 00000000000..860b3c604e3
--- /dev/null
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-lucida.mkiv
@@ -0,0 +1,108 @@
+%D \module
+%D [ file=type-lucida-opentype,
+%D version=2011.05.18,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Lucida Nova Opentype,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% NOTA BENE: class features and goodies get expanded!
+
+\definefontfeature[mathlucida][copymathscripts=yes] % see lfg file
+
+% \definefontfeature[mathlucida][mathlucida][ss04=yes] % now we swap
+
+% \definefontfeature[mathlucida][ss03=yes]
+
+\starttypescriptcollection[lucida-opentype]
+
+ % \setupmathradical[\c!leftmargin=.05mq]% mathquad
+
+ \pushglobalsetups
+ \startsetups[\s!math:lucida]
+ \setmathradicalparameter\c!leftmargin{.05mq}% mathquad
+ \stopsetups
+ \popglobalsetups
+
+ \doifunknownfontfeature {lucida-math-bold} {\definefontfeature[lucida-math-bold][boldened][boldmath=yes]}
+
+ \starttypescript [lucida,lucidaot,lucidadk,lucidaot-nt,lucida-nt]
+% \loadfontgoodies[lucida-opentype-math]
+ \definetypeface [\typescriptone] [\s!rm] [\s!serif] [\typescriptone] [\s!default] [\s!features=\s!default]
+ \definetypeface [\typescriptone] [\s!ss] [\s!sans] [\typescriptone] [\s!default] [\s!features=\s!default]
+ \definetypeface [\typescriptone] [\s!tt] [\s!mono] [\typescriptone] [\s!default] [\s!features=\s!none]
+ \definetypeface [\typescriptone] [\s!hw] [\s!handwriting] [\typescriptone] [\s!default] [\s!features=\s!default]
+ \definetypeface [\typescriptone] [\s!cg] [\s!calligraphy] [\typescriptone] [\s!default] [\s!features=\s!default]
+ \definetypeface [\typescriptone] [\s!mm] [\s!math] [\typescriptone] [\s!default]
+ \quittypescriptscanning
+ \stoptypescript
+
+ \starttypescript [\s!serif] [lucida,lucidaot,lucidadk,lucidaot-nt,lucida-nt]
+ \definefontsynonym [\s!Serif] [\s!file:LucidaBrightOT.otf] [\s!goodies=lucida-text]
+ \definefontsynonym [\s!SerifBold] [\s!file:LucidaBrightOT-Demi.otf] [\s!goodies=lucida-text]
+ \definefontsynonym [\s!SerifItalic] [\s!file:LucidaBrightOT-Italic.otf] [\s!goodies=lucida-text]
+ \definefontsynonym [\s!SerifBoldItalic] [\s!file:LucidaBrightOT-DemiItalic.otf][\s!goodies=lucida-text]
+ \definefontsynonym [\s!SerifSlanted] [\s!SerifItalic]
+ \definefontsynonym [\s!SerifBoldSlanted] [\s!SerifBoldItalic]
+ \stoptypescript
+
+ \starttypescript [\s!sans] [lucida,lucidaot,lucidadk,lucidaot-nt,lucida-nt]
+ \definefontsynonym [\s!Sans] [\s!file:LucidaSansOT.otf]
+ \definefontsynonym [\s!SansBold] [\s!file:LucidaSansOT-Demi.otf]
+ \definefontsynonym [\s!SansItalic] [\s!file:LucidaSansOT-Italic.otf]
+ \definefontsynonym [\s!SansBoldItalic] [\s!file:LucidaSansOT-DemiItalic.otf]
+ \definefontsynonym [\s!SansSlanted] [\s!SansItalic]
+ \definefontsynonym [\s!SansBoldSlanted] [\s!SansBoldItalic]
+ \stoptypescript
+
+ \starttypescript [\s!mono] [lucida,lucidaot,lucidaot-nt,lucida-nt]
+ \definefontsynonym [\s!Mono] [\s!file:LucidaSansTypewriterOT.otf]
+ \definefontsynonym [\s!MonoBold] [\s!file:LucidaSansTypewriterOT-Bold.otf]
+ \definefontsynonym [\s!MonoItalic] [\s!file:LucidaSansTypewriterOT-Oblique.otf]
+ \definefontsynonym [\s!MonoBoldItalic] [\s!file:LucidaSansTypewriterOT-BoldOblique.otf]
+ \definefontsynonym [\s!MonoSlanted] [\s!MonoItalic]
+ \definefontsynonym [\s!MonoBoldSlanted] [\s!MonoBoldItalic]
+ \stoptypescript
+
+ \starttypescript [\s!mono] [lucidadk,lucidaot-nt,lucida-nt]
+ \definefontsynonym [\s!Mono] [\s!file:LucidaGrandeMonoDK.otf]
+ \definefontsynonym [\s!MonoBold] [\s!file:LucidaGrandeMonoDK-Bold.otf]
+ \definefontsynonym [\s!MonoItalic] [\s!file:LucidaGrandeMonoDK-Oblique.otf]
+ \definefontsynonym [\s!MonoBoldItalic] [\s!file:LucidaGrandeMonoDK-BoldOblique.otf]
+ \definefontsynonym [\s!MonoSlanted] [\s!MonoItalic]
+ \definefontsynonym [\s!MonoBoldSlanted] [\s!MonoBoldItalic]
+ \stoptypescript
+
+ \starttypescript [\s!math] [lucida,lucida-nt,lucidaot,lucidaot-nt,lucidadk]
+ \checkedmapfontsize[\typescripttwo][\s!script] [.70]
+ \checkedmapfontsize[\typescripttwo][\s!scriptscript][.50]
+ \stoptypescript
+
+ \starttypescript [\s!math] [lucida,lucidaot,lucidadk]
+ \definefontsynonym [\s!MathRoman] [\s!file:LucidaBrightMathOT.otf] [\s!features={\s!math\mathsizesuffix,mathlucida,lucida:mathextra,mathextra},\s!goodies=lucida-math]
+ % \definefontsynonym [\s!MathRomanBold] [\s!file:LucidaBrightMathOT-Demi.otf] [\s!features={\s!math\mathsizesuffix,mathlucida,mathextra},\s!goodies=lucida-math]
+ \definefontsynonym [\s!MathRomanBold] [\s!file:LucidaBrightMathOT.otf] [\s!features={\s!math\mathsizesuffix,lucida-math-bold,mathlucida,lucida:mathextra,mathextra},\s!goodies=lucida-math]
+ \stoptypescript
+
+ \starttypescript [\s!math] [lucidaot-nt,lucida-nt]
+ \definefontsynonym [\s!MathRoman] [\s!file:LucidaBrightMathOT.otf] [\s!features={\s!math\mathsizesuffix,mathlucida,lucida:mathextra,mathextra}]
+ % \definefontsynonym [\s!MathRomanBold] [\s!file:LucidaBrightMathOT-Demi.otf] [\s!features={\s!math\mathsizesuffix,mathlucida,mathextra}]
+ \definefontsynonym [\s!MathRomanBold] [\s!file:LucidaBrightMathOT.otf] [\s!features={\s!math\mathsizesuffix,lucida-math-bold,mathlucida,lucida:mathextra,mathextra}]
+ \stoptypescript
+
+ \starttypescript [\s!handwriting] [lucida,lucidaot,lucidadk,lucidaot-nt,lucida-nt]
+ \definefontsynonym [\s!Handwriting] [\s!file:LucidaHandwritingOT.otf]
+ \stoptypescript
+
+ \starttypescript [\s!calligraphy] [lucida,lucidaot,lucidadk,lucidaot-nt,lucida-nt]
+ \definefontsynonym [\s!Calligraphy] [\s!file:LucidaCalligraphyOT.otf]
+ \stoptypescript
+
+\stoptypescriptcollection
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-newcomputermodern.mkiv b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-newcomputermodern.mkiv
index b6bb26c7690..e4078c25cb6 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-newcomputermodern.mkiv
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-newcomputermodern.mkiv
@@ -49,8 +49,8 @@
\starttypescript [\s!math][newcomputermodern] [\s!name]
% \loadfontgoodies[newcomputermodern-math] ,\s!goodies=newcomputermodern-math
- \definefontsynonym[\s!MathRoman] [\s!file:newcmmath-regular][\s!features={\s!math\mathsizesuffix,mathextra},\s!goodies=newcomputermodern-math]
- \definefontsynonym[\s!MathRomanBold][\s!file:newcmmath-regular][\s!features={\s!math\mathsizesuffix,newcomputermodern-math-bold,mathextra},\s!goodies=newcomputermodern-math]
+ \definefontsynonym[\s!MathRoman] [\s!file:newcmmath-regular.otf][\s!features={\s!math\mathsizesuffix,newcm-mathextra,mathextra},\s!goodies=newcomputermodern-math]
+ \definefontsynonym[\s!MathRomanBold][\s!file:newcmmath-regular.otf][\s!features={\s!math\mathsizesuffix,newcomputermodern-math-bold,newcm-mathextra,mathextra},\s!goodies=newcomputermodern-math]
\stoptypescript
\starttypescript [\s!serif] [newcomputermodern-book] [\s!name]
@@ -79,8 +79,8 @@
\starttypescript [\s!math][newcomputermodern-book] [\s!name]
% \loadfontgoodies[newcomputermodern-math] ,\s!goodies=newcomputermodern-math
- \definefontsynonym[\s!MathRoman] [\s!file:newcmmath-book][\s!features={\s!math\mathsizesuffix,newcm-mathextra,mathextra},\s!goodies=newcomputermodern-math]
- \definefontsynonym[\s!MathRomanBold][\s!file:newcmmath-book][\s!features={\s!math\mathsizesuffix,newcm-mathextra,newcomputermodern-math-bold,mathextra},\s!goodies=newcomputermodern-math]
+ \definefontsynonym[\s!MathRoman] [\s!file:newcmmath-book.otf][\s!features={\s!math\mathsizesuffix,newcm-mathextra,mathextra},\s!goodies=newcomputermodern-math]
+ \definefontsynonym[\s!MathRomanBold][\s!file:newcmmath-book.otf][\s!features={\s!math\mathsizesuffix,newcomputermodern-math-bold,newcm-mathextra,mathextra},\s!goodies=newcomputermodern-math]
\stoptypescript
\starttypescript[newcomputermodern,newcomputermodern-book]
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-plex.mkiv b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-plex.mkiv
index 71f23028347..8c935451d42 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-plex.mkiv
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-plex.mkiv
@@ -87,8 +87,8 @@
\starttypescript [\s!sans,\s!serif,\s!mono] [plex-text] [\s!name]
\setups[\s!font:\s!fallback:\typescriptone]
- \edefinefontsynonym [\typescriptprefix{\typescriptone}] [\s!file:\typescriptprefix{n:plex\typescriptone}-text] [\s!features=\typescriptprefix{f:plex\typescriptone}]
- \edefinefontsynonym [\typescriptprefix{\typescriptone}\s!Italic] [\s!file:\typescriptprefix{n:plex\typescriptone}-textitalic] [\s!features=\typescriptprefix{f:plex\typescriptone}]
+ \edefinefontsynonym [\typescriptprefix{\typescriptone}] [\s!file:\typescriptprefix{n:plex\typescriptone}-text] [\s!features=\typescriptprefix{f:plex\typescriptone}]
+ \edefinefontsynonym [\typescriptprefix{\typescriptone}\s!Italic] [\s!file:\typescriptprefix{n:plex\typescriptone}-textitalic] [\s!features=\typescriptprefix{f:plex\typescriptone}]
\edefinefontsynonym [\typescriptprefix{\typescriptone}\s!Bold] [\s!file:\typescriptprefix{n:plex\typescriptone}-semibold] [\s!features=\typescriptprefix{f:plex\typescriptone}]
\edefinefontsynonym [\typescriptprefix{\typescriptone}\s!BoldItalic] [\s!file:\typescriptprefix{n:plex\typescriptone}-semibolditalic] [\s!features=\typescriptprefix{f:plex\typescriptone}]
\stoptypescript
@@ -130,13 +130,13 @@
\stoptypescript
\starttypescript [\s!math] [plex] [\s!name]
- \definefontsynonym [\s!MathRoman] [\s!file:IBMPlexMath.otf][\s!features={\s!math\mathsizesuffix,plex:mathextra,mathextra},\s!goodies=plex-math]
- \definefontsynonym [\s!MathRomanBold][\s!file:IBMPlexMath.otf][\s!features={\s!math\mathsizesuffix,plex-math-bold,plex:mathextra,mathextra},\s!goodies=plex-math]
+ \definefontsynonym [\s!MathRoman] [\s!file:IBMPlexMath-Regular.otf][\s!features={\s!math\mathsizesuffix,plex:mathextra,mathextra},\s!goodies=plex-math]
+ \definefontsynonym [\s!MathRomanBold][\s!file:IBMPlexMath-Regular.otf][\s!features={\s!math\mathsizesuffix,plex-math-bold,plex:mathextra,mathextra},\s!goodies=plex-math]
\stoptypescript
\starttypescript [\s!math] [plex-nt] [\s!name]
- \definefontsynonym [\s!MathRoman] [\s!file:IBMPlexMath.otf][\s!features={\s!math\mathsizesuffix,plex:mathextra,mathextra}]
- \definefontsynonym [\s!MathRomanBold][\s!file:IBMPlexMath.otf][\s!features={\s!math\mathsizesuffix,plex-math-bold,plex:mathextra,mathextra}]
+ \definefontsynonym [\s!MathRoman] [\s!file:IBMPlexMath-Regular.otf][\s!features={\s!math\mathsizesuffix,plex:mathextra,mathextra}]
+ \definefontsynonym [\s!MathRomanBold][\s!file:IBMPlexMath-Regular.otf][\s!features={\s!math\mathsizesuffix,plex-math-bold,plex:mathextra,mathextra}]
\stoptypescript
% done
@@ -145,7 +145,7 @@
\definetypeface [\typescriptone] [\s!rm] [\s!serif] [\typescriptone] [\s!default]
\definetypeface [\typescriptone] [\s!ss] [\s!sans] [\typescriptone] [\s!default]
\definetypeface [\typescriptone] [\s!tt] [\s!mono] [\typescriptone] [\s!default]
-\doifelsefileexists{IBMPlexMath.otf} {
+\doifelsefileexists{IBMPlexMath-Regular.otf} {
\definetypeface [\typescriptone] [\s!mm] [\s!math] [plex] [\s!default]
} {
\definetypeface [\typescriptone] [\s!mm] [\s!math] [bookman] [\s!default] [\s!rscale=1.03]
@@ -386,22 +386,14 @@
\definetypeface [\typescriptone] [\s!ss] [\s!sans] [\typescriptone] [\s!default]
\definetypeface [\typescriptone] [\s!rm] [\s!serif] [\typescriptone] [\s!default]
\definetypeface [\typescriptone] [\s!tt] [\s!mono] [\typescriptone] [\s!default]
-\doifelsefileexists{IBMPlexMath.otf} {
\definetypeface [\typescriptone] [\s!mm] [\s!math] [plex] [\s!default]
-} {
- \definetypeface [\typescriptone] [\s!mm] [\s!math] [bookman] [\s!default] [\s!rscale=1.03]
-}
\stoptypescript
\starttypescript[ibmplexnarrow,ibmplexnarrow-thin,ibmplexnarrow-extralight,ibmplexnarrow-light]
\definetypeface [\typescriptone] [\s!ss] [\s!sans] [\typescriptone] [\s!default]
\definetypeface [\typescriptone] [\s!rm] [\s!serif] [\typescriptone] [\s!default]
\definetypeface [\typescriptone] [\s!tt] [\s!mono] [\typescriptone] [\s!default]
-\doifelsefileexists{IBMPlexMath.otf} {
\definetypeface [\typescriptone] [\s!mm] [\s!math] [plex] [\s!default]
-} {
- \definetypeface [\typescriptone] [\s!mm] [\s!math] [bookman] [\s!default] [\s!rscale=1.03]
-}
\stoptypescript
\stoptypescriptcollection
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-stix.mkiv b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-stix.mkiv
index d1bad9a2e9a..72c61bf3a98 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-stix.mkiv
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-stix.mkiv
@@ -66,7 +66,7 @@
\starttypescript[stix,stixtwo,xits,stix-nt,stixtwo-nt]
\definetypeface [\typescriptone] [\s!rm] [\s!serif] [stixtwo] [\s!default]
- \definetypeface [\typescriptone] [\s!ss] [\s!serif] [stixtwo] [\s!default]
+ \definetypeface [\typescriptone] [\s!ss] [\s!sans] [dejavu] [\s!default] [\s!rscale=0.895]
\definetypeface [\typescriptone] [\s!tt] [\s!mono] [dejavu] [\s!default] [\s!rscale=0.895]
\stoptypescript
\starttypescript[stix,stixtwo,xits]
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-uprightonly.mkiv b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-uprightonly.mkiv
new file mode 100644
index 00000000000..f74c974503b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-uprightonly.mkiv
@@ -0,0 +1,55 @@
+%D \module
+%D [ file=type-imp-uprightonly,
+%D version=2024.08.24,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Upright Only,
+%D author=WOlfgang Schuster,
+%D date=\currentdate,
+%D copyright={\CONTEXT\ Development Team}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is, See mreadme.pdf for
+%C details.
+
+\unprotect % needed for test run
+
+\starttypescriptcollection[uprightonly]
+
+\starttypescript [\s!serif,\s!sans,\s!mono] [uprightonly]
+ \definefontsynonym [\typescriptprefix\typescriptone\s!Italic] [\typescriptprefix\typescriptone]
+ \definefontsynonym [\typescriptprefix\typescriptone\s!Slanted] [\typescriptprefix\typescriptone]
+ \definefontsynonym [\typescriptprefix\typescriptone\s!Bold] [\typescriptprefix\typescriptone]
+ \definefontsynonym [\typescriptprefix\typescriptone\s!BoldItalic] [\typescriptprefix\typescriptone]
+ \definefontsynonym [\typescriptprefix\typescriptone\s!BoldSlanted][\typescriptprefix\typescriptone]
+\stoptypescript
+
+\starttypescript [uprightonly]
+ \definetypeface [\typescriptone] [\s!rm] [\s!serif] [\typescriptone]
+ \definetypeface [\typescriptone] [\s!ss] [\s!sans] [\typescriptone]
+ \definetypeface [\typescriptone] [\s!tt] [\s!mono] [\typescriptone]
+ \definetypeface [\typescriptone] [\s!mm] [\s!math] [\globalfontclass]
+\stoptypescript
+
+\stoptypescriptcollection
+
+\protect
+
+\continueifinputfile{type-imp-uprightonly.mkiv}
+
+\usetypescriptfile[uprightonly]
+\setupbodyfont[pagella]
+
+\starttext
+
+\startbuffer
+xxx {\bf yyy} xxx {\it zzz} xxx \im{x = 1}
+\stopbuffer
+
+\getbuffer
+
+\start \switchtobodyfont[uprightonly]
+\getbuffer
+\stop
+
+\getbuffer
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-xcharter.mkiv b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-xcharter.mkiv
index 45070c40dbd..6c4a1e03f1d 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-xcharter.mkiv
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/type-imp-xcharter.mkiv
@@ -13,9 +13,12 @@
\starttypescriptcollection[xcharter]
+ % \setupmathradical[\c!leftmargin=.05mq,\c!mindepth=.1mx]%
+
\pushglobalsetups
\startsetups[\s!math:xcharter]
- \setupmathradical[\c!leftmargin=.05mq,mindepth=0.1mx]%
+ \setmathradicalparameter\c!leftmargin{.05mq}%
+ \setmathradicalparameter\c!mindepth {.1mx}%
\stopsetups
\popglobalsetups
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/xcharter-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/xcharter-math.lfg
index 7614a311350..f0abf106ec4 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/xcharter-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/xcharter-math.lfg
@@ -32,6 +32,9 @@ return {
{
tweak = "addmirrors",
},
+ {
+ tweak = "addcomposites",
+ },
presets.scripttocalligraphic { },
presets.rsfstoscript { },
presets.rsfsuprighttoscript { },
diff --git a/Master/texmf-dist/tex/context/fonts/mkiv/xits-math.lfg b/Master/texmf-dist/tex/context/fonts/mkiv/xits-math.lfg
index 1d7e22df61d..0744c23ed1d 100644
--- a/Master/texmf-dist/tex/context/fonts/mkiv/xits-math.lfg
+++ b/Master/texmf-dist/tex/context/fonts/mkiv/xits-math.lfg
@@ -95,6 +95,9 @@ return {
factor = 0.85,
},
{
+ tweak = "addcomposites",
+ },
+ {
tweak = "checkspacing",
},
{
diff --git a/Master/texmf-dist/tex/context/fonts/mkxl/notosans-math.lfg b/Master/texmf-dist/tex/context/fonts/mkxl/notosans-math.lfg
new file mode 100644
index 00000000000..9adfa6c170b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/fonts/mkxl/notosans-math.lfg
@@ -0,0 +1,312 @@
+local common = fonts.goodies.load("common-math.lfg")
+local presets = common.mathematics.tweaks.presets
+
+-- local integral_variants = { bottomright = -0.4 }
+-- ----- integral_top = { topright = 0.05 }
+-- local integral_bottom = { bottomright = -0.35 }
+
+return {
+ name = "stix-two-math",
+ version = "1.00",
+ comment = "Goodies that complement stix two opentype.",
+ author = "Hans Hagen & Mikael Sundqvist",
+ copyright = "ConTeXt development team",
+ mathematics = {
+ alternates = {
+-- lambdabar = { feature = 'cv01', value = 1, comment = "Mathematical Alternative Lambda Bar" },
+-- ramshorn = { feature = 'cv02', value = 1, comment = "Mathematical Alternative Rams Horn" },
+-- emptyset = { feature = 'cv03', value = 1, comment = "Mathematical Alternative Empty Set" },
+-- setminus = { feature = 'cv04', value = 1, comment = "Mathematical Alternative Setminus" },
+-- calligraphic = { feature = 'ss01', value = 1, comment = "Mathematical Alternative Calligraphic Characters" }, -- We do this differently
+-- italic = { feature = 'ss02', value = 1, comment = "Mathematical Alternative Lowercase Italic" },
+-- barred = { feature = 'ss03', value = 1, comment = "Mathematical Alternative Barred Characters" }, -- hbar, lambdabar etc
+-- primes = { feature = 'ss04', value = 1, comment = "Mathematical Alternative Primes" }, -- larger/lower primes, minute etc
+-- arrow = { feature = 'ss05', value = 1, comment = "Mathematical Alternative Smaller Arrows" },
+-- narrower = { feature = 'ss06', value = 1, comment = "Mathematical Alternative Narrower Elements" }, -- narrower/shorter element etc
+-- small = { feature = 'ss07', value = 1, comment = "Mathematical Alternative Smaller Operators" },
+-- upright = { feature = 'ss08', value = 1, comment = "Mathematical Alternative Upright Symbols" }, -- upright integrals etc.
+-- negated = { feature = 'ss09', value = 1, comment = "Mathematical Alternative Negated Symbols" },
+-- relation = { feature = 'ss10', value = 1, comment = "Mathematical Alternative Relations" },
+-- negatedset = { feature = 'ss11', value = 1, comment = "Mathematical Alternative Negated Set Symbols" },
+-- propfrown = { feature = 'ss12', value = 1, comment = "Mathematical Alternative Proportional and Frown" },
+-- negsine = { feature = 'ss13', value = 1, comment = "Mathematical Alternative Negated Sine Wave" },
+-- intprod = { feature = 'ss14', value = 1, comment = "Mathematical Alternative Interior Products" },
+-- capcup = { feature = 'ss15', value = 1, comment = "Mathematical Alternative Intersection and Union with serif" },
+-- circled = { feature = 'ss16', value = 1, comment = "Mathematical Alternative Circled Operators" },
+-- simvar = { feature = 'ss20', value = 1, comment = "Mathematical Alternative Similar and some more unrelated" },
+-- -- demo features:
+-- negated8774 = {
+-- feature = 'ss09',
+-- value = 1,
+-- comment = "Mathematical Alternative Negated 8774",
+-- list = { [8774] = true },
+-- },
+-- negated8775 = {
+-- feature = 'ss09',
+-- value = 1,
+-- comment = "Mathematical Alternative Negated 8775",
+-- list = { [8775] = true },
+-- },
+ },
+ parameters = {
+-- AccentBaseDepth = 30,
+-- FlattenedAccentTopShiftUp = 0,
+-- RadicalKernAfterDegree = -500,
+ DelimiterPercent = 90,
+ DelimiterShortfall = 400,
+ DelimiterDisplayPercent = 90,
+ DelimiterDisplayShortfall = 400,
+-- DisplayOperatorMinHeight = 1800, -- 1800 in font
+ PrimeShiftUp = "1.15*SuperscriptShiftUp",
+ PrimeShiftUpCramped = "1.15*SuperscriptShiftUp",
+-- RadicalDisplayStyleVerticalGap = "RadicalVerticalGap", --170, 85
+-- -- SuperscriptSnap = 1000,
+-- -- SubscriptSnap = 500,
+ },
+ tweaks = {
+ aftercopying = {
+ {
+ tweak = "version",
+ expected = "Version 2.12 b168",
+ },
+ {
+ tweak = "fixprimes",
+ factor = 0.9,
+ },
+ {
+ tweak = "addmirrors",
+ },
+ {
+ tweak = "addcomposites",
+ },
+ -- MS: we need to check this, I moved it up
+-- {
+-- tweak = "replacealphabets",
+-- list = {
+-- {
+-- source = "uppercasescript",
+-- target = "uppercasecalligraphic",
+-- unicode = "uppercasescript",
+-- },
+-- {
+-- source = "uppercasescript",
+-- target = "uppercasescript",
+-- feature = "ss01",
+-- },
+-- {
+-- source = "uppercaseboldscript",
+-- target = "uppercaseboldcalligraphic",
+-- unicode = "uppercasescriptbold",
+-- },
+-- {
+-- source = "uppercaseboldscript",
+-- target = "uppercaseboldscript",
+-- feature = "ss01",
+-- },
+-- {
+-- source = { first = 0xE17D, last = 0xE195 },
+-- target = "uppercasesansgreek",
+-- unicode = "uppercasegreeknormal",
+-- },
+-- {
+-- source = { first = 0xE196, last = 0xE1AE }, -- maybe last = E1B3
+-- target = "lowercasesansgreek",
+-- unicode = "lowercasegreeknormal",
+-- },
+-- {
+-- source = { first = 0xE1BF, last = 0xE1D7 },
+-- target = "uppercaseitalicsansgreek",
+-- unicode = "uppercasegreekitalic",
+-- },
+-- {
+-- source = { first = 0xE1D8, last = 0xE1F0 }, -- maybe last = E1F5
+-- target = "lowercaseitalicsansgreek",
+-- unicode = "lowercasegreekitalic",
+-- },
+-- },
+-- },
+-- {
+-- tweak = "replacealphabets",
+-- filename = "TeXGyrePagellaMath.otf",
+-- list = {
+-- { unicodes = { 0x007C, 0x2223, 0x2016, 0x2980, 0x007C } }, -- single single double triple
+-- }
+-- },
+ presets.scripttocalligraphic { },
+ presets.rsfstoscript { },
+ presets.rsfsuprighttoscript { },
+ presets.moderntocalligraphic { },
+ presets.eulertocalligraphic { },
+ presets.xitsarabic { rscale = 0.95 },
+ presets.fallbacks { },
+ presets.moveitalics { correct = true },
+ presets.moveitalics { correct = true, letters = true },
+ presets.moveintegrals { },
+ presets.wipeitalics { },
+ {
+ tweak = "checkaccents",
+ },
+ -- Extensibles use .s1 (variant 1), so we cannot wipe all
+-- {
+-- tweak = "wipevariants",
+-- list = {
+-- [0x20D6] = 3,
+-- [0x20D7] = 3,
+-- [0x20EE] = 3,
+-- [0x20EF] = 3,
+-- },
+-- },
+ {
+ tweak = "simplifykerns",
+ },
+-- {
+-- tweak = "kerns",
+-- list = {
+-- [0x002F] = { topleft = -0.2, bottomright = -0.2 },
+-- ["0x7D.parts.top"] = { topright = -0.15, }, -- right brace top
+-- ["0x7D.parts.bottom"] = { bottomright = -0.15 }, -- right brace bottom
+-- ["0x29.parts.top"] = { topright = -0.1, }, -- right parenthesis top
+-- ["0x29.parts.bottom"] = { bottomright = -0.1 }, -- right parenthesis bottom
+-- ["0x29.variants.*"] = { topright = -0.2, bottomright = -0.2 }, -- right parenthesis variants
+-- ["0x221A.parts.top"] = { topright = 0.2, }, -- right radical top
+-- ["0x221A.parts.bottom"] = { bottomright = 0.2 }, -- right radical bottom
+-- ["0x221A.variants.*"] = { topright = 0.2, bottomright = 0.2 }, -- right radical variants
+-- [0x27E9] = { topright = -0.1, bottomright = -0.1 }, -- angle
+-- ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+-- [0x27EB] = { topright = -0.1, bottomright = -0.1 },
+-- ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+-- --
+-- ["0x222B.parts.bottom"] = { bottomright = -0.30 }, -- int
+-- },
+-- },
+ -- Accents are a mess. We migrate the extensibles from the combiners to the base accent
+ -- and then need to tweak the width (which is auto set because it was zero with a large
+ -- accent anchor offset). First we copy and fix.
+ {
+ tweak = "extendaccents",
+ },
+-- {
+-- tweak = "radicaldegreeanchors",
+-- list = {
+-- [0x221A] = { location = "left", hfactor = 0.00, vfactor = 0.7 },
+-- ["0x221A.variants.*"] = { location = "left", hfactor = 0.00, vfactor = 0.55 },
+-- ["0x221A.variants.3"] = { location = "left", hfactor = 0.00, vfactor = .525 },
+-- ["0x221A.parts.bottom"] = { location = "left", hfactor = 0.05, vfactor = 1.00 },
+-- }
+-- },
+ {
+ tweak = "flattenaccents",
+ },
+ {
+ tweak = "fixaccents",
+ },
+-- -- First we set the dimensions of the initial accent which started out as zero but we want
+-- -- a proper width.
+-- -- {
+-- -- tweak = "dimensions",
+-- -- list = {
+-- -- [0x00302] = { width = 1.2, anchor = 1.10, xoffset = .05 }, -- widehat
+-- -- [0x00303] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widetilde
+-- -- [0x00306] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widebreve
+-- -- [0x0030C] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widecheck
+-- -- },
+-- -- },
+-- -- Then we deal with all offsets and heights in one go. So we treat the initial accent
+-- -- as well as the variants here.
+-- {
+-- tweak = "dimensions",
+-- list = {
+-- -- here we want to apply to all
+-- [0x020DB] = { yoffset = 0.025, height = .95, all = true }, -- widedddot : 0x20DB (self)
+-- },
+-- },
+ -- We now copy these to the not wide slots so that we can set these to stretch as well,
+ -- if only because it is less confusing and more consistent.
+ {
+ tweak = "copyaccents",
+ },
+ -- So far for the accents.
+ {
+ tweak = "checkspacing",
+ },
+ {
+ tweak = "addscripts",
+ },
+ {
+ tweak = "accentdimensions",
+ },
+ {
+ tweak = "addrules",
+ },
+ {
+ tweak = "addarrows",
+ },
+ {
+ tweak = "fixslashes",
+ },
+ {
+ tweak = "replacerules",
+-- minus = {
+-- height = .233,
+-- yoffset = .768,
+-- leftoffset = .08,
+-- rightoffset = .08,
+-- },
+-- fraction = {
+-- height = .233,
+-- yoffset = .768,
+-- },
+-- radical = {
+-- height = .233,
+-- yoffset = .768,
+-- leftoffset = .08,
+-- rightoffset = .08,
+-- },
+-- stacker = {
+-- height = .233,
+-- yoffset = .768,
+-- },
+ },
+ {
+ tweak = "addactuarian",
+ },
+ {
+ tweak = "addfourier",
+ variant = 1,
+ },
+ {
+ tweak = "addprimed",
+ },
+-- {
+-- tweak = "addparts",
+-- list = {
+-- [0x21F4] = {
+-- horizontal = true,
+-- template = 0x2192,
+-- sequence = {
+-- { glyph = "first", factor = 2 },
+-- { glyph = 0x2218 },
+-- { glyph = "first", factor = 2 },
+-- { glyph = "last" },
+-- }
+-- }
+-- }
+-- },
+-- {
+-- tweak = "addbars",
+-- advance = 0.3,
+-- check = true, -- only add triples
+-- },
+ -- this is the mkiv section
+-- {
+-- tweak = "emulatelmtx",
+-- feature = "emulatelmtx",
+-- comment = "this is for mkiv",
+-- },
+ },
+ },
+ bigslots = {
+ 1, 3, 5, 7
+ },
+ },
+}
diff --git a/Master/texmf-dist/tex/context/fonts/mkxl/type-imp-euler.mkxl b/Master/texmf-dist/tex/context/fonts/mkxl/type-imp-euler.mkxl
index a4d91a9958a..0298a546807 100644
--- a/Master/texmf-dist/tex/context/fonts/mkxl/type-imp-euler.mkxl
+++ b/Master/texmf-dist/tex/context/fonts/mkxl/type-imp-euler.mkxl
@@ -21,10 +21,10 @@
\definefontfeature[pagellaovereuler][pagellaovereuler=yes]
\definefontfeature[euleroverpagella][euleroverpagella=yes]
-\definefontfeature[eulerregular] [default][compose=yes]
-\definefontfeature[eulerbold] [default][compose=yes,weight=.3]
-\definefontfeature[euleritalic] [default][compose=yes,slant=.2]
-\definefontfeature[eulerbolditalic][default][compose=yes,slant=.2,weight=.3]
+\definefontfeature[eulerregular] [default][wipemath=no,compose=yes]
+\definefontfeature[eulerbold] [default][wipemath=no,compose=yes,weight=.3]
+\definefontfeature[euleritalic] [default][wipemath=no,compose=yes,slant=.2]
+\definefontfeature[eulerbolditalic][default][wipemath=no,compose=yes,slant=.2,weight=.3]
\starttypescriptcollection[pagella-eulernova]
diff --git a/Master/texmf-dist/tex/context/fonts/mkxl/type-imp-noto.mkxl b/Master/texmf-dist/tex/context/fonts/mkxl/type-imp-noto.mkxl
new file mode 100644
index 00000000000..e3cc71b7007
--- /dev/null
+++ b/Master/texmf-dist/tex/context/fonts/mkxl/type-imp-noto.mkxl
@@ -0,0 +1,74 @@
+%D \module
+%D [ file=type-imp-noto,
+%D version=2024.06.14,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Google Noto Fonts,
+%D author={Hans Hagen & Mikael Sundqvist},
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+
+%D This font is in development and we will cook up a proper goodie file when the
+%D time is ready for it. We also might need a companion font to deal with the serifs
+%D because after all we lost sans as distinctive shape and now need serif to act as
+%D such.
+%D
+%D In the past one could download a noto zip but in the meantime one is supposed to
+%D get the fonts from github.
+%D
+%D \starttyping
+%D local files = dir.glob([[<path to>/repositories/notofonts.github.io/fonts/**/full/otf/*.otf]])
+%D
+%D for i=1,#files do file.copy(files[i],file.basename(files[i])) end
+%D
+%D os.execute("mtxrun --generate")
+%D os.execute("mtxrun --script font --reload")
+%D \stoptyping
+
+\usetypescriptfile[dejavu]
+
+\starttypescriptcollection[notosans]
+
+ \doifunknownfontfeature {noto-math-bold} {\definefontfeature[noto-math-bold][boldened]}
+
+ \starttypescript [\s!serif] [noto] [\s!name]
+ \definefontsynonym [\s!Serif] [\s!file:NotoSerif-Regular] [\s!features=\s!default]
+ \definefontsynonym [\s!SerifItalic] [\s!file:NotoSerif-Italic] [\s!features=\s!default]
+ \definefontsynonym [\s!SerifBold] [\s!file:NotoSerif-Bold] [\s!features=\s!default]
+ \definefontsynonym [\s!SerifBoldItalic] [\s!file:NotoSerif-BoldItalic] [\s!features=\s!default]
+ \stoptypescript
+
+ \starttypescript [\s!sans] [noto] [\s!name]
+ \setups[\s!font:\s!fallback:\s!sans]
+ \definefontsynonym [\s!Sans] [\s!file:NotoSans-Regular] [\s!features=\s!default]
+ \definefontsynonym [\s!SansItalic] [\s!file:NotoSans-Italic] [\s!features=\s!default]
+ \definefontsynonym [\s!SansBold] [\s!file:NotoSans-SemiBold] [\s!features=\s!default]
+ \definefontsynonym [\s!SansBoldItalic][\s!file:NotoSans-SemiBoldItalic][\s!features=\s!default]
+ \stoptypescript
+
+ % \starttypescript [\s!mono] [noto] [\s!name]
+ % \setups[\s!font:\s!fallback:\s!mono]
+ % \definefontsynonym [\s!Mono] [\s!file:NotoMono-Regular] [\s!features=\s!none]
+ % \definefontsynonym [\s!MonoItalic] [\s!file:NotoMono-Italic] [\s!features=\s!none]
+ % \definefontsynonym [\s!MonoBold] [\s!file:NotoMono-SemiBold] [\s!features=\s!none]
+ % \definefontsynonym [\s!MonoBoldItalic][\s!file:NotoMono-SemiBoldItalic][\s!features=\s!none]
+ % \stoptypescript
+
+ \starttypescript [\s!math] [noto][\s!name]
+ \checkedmapfontsize[\typescripttwo][\s!script] [.70]
+ \checkedmapfontsize[\typescripttwo][\s!scriptscript][.55]
+ \stoptypescript
+
+ \starttypescript [\s!math] [noto][\s!name]
+ \definefontsynonym [\s!MathRoman] [\s!file:NotoSansMath-Regular.otf][\s!features={\s!math\mathsizesuffix,noto:mathextra,mathextra},\s!goodies=notosans-math]
+ \definefontsynonym [\s!MathRomanBold][\s!file:NotoSansMath-Regular.otf][\s!features={\s!math\mathsizesuffix,noto-math-bold,noto:mathextra,mathextra},\s!goodies=notosans-math]
+ \stoptypescript
+
+ \starttypescript [noto]
+ \definetypeface [\typescriptone] [\s!rm] [\s!serif] [\typescriptone] [\s!default]
+ \definetypeface [\typescriptone] [\s!ss] [\s!sans] [\typescriptone] [\s!default]
+ \definetypeface [\typescriptone] [\s!mm] [\s!math] [\typescriptone] [\s!default]
+ \definetypeface [\typescriptone] [\s!tt] [\s!mono] [dejavu] [\s!default] % todo rscale
+ \quittypescriptscanning
+ \stoptypescript
+
+\stoptypescriptcollection
diff --git a/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.0.tex b/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.0.tex
index 9f955a46548..45433f03e1a 100644
--- a/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.0.tex
+++ b/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.0.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -31,10 +31,10 @@
%%%%%%%%%%% Springe nach tex/pgfcirc.defines
%%%---------- open: tex/pgfcirc.defines.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -1993,10 +1993,10 @@
%%%---------- close: tex/pgfcirc.defines
%%%%%%%%%%% Springe nach tex/pgfcircutils
%%%---------- open: tex/pgfcircutils.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -2065,10 +2065,10 @@
%%%%%%%%%%% Springe nach tex/pgfcircshapes
%%%---------- open: tex/pgfcircshapes.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -2871,10 +2871,10 @@
%%%---------- close: tex/pgfcircshapes
%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
%%%---------- open: tex/pgfcircmonopoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -3887,10 +3887,10 @@
%%%---------- close: tex/pgfcircmonopoles
%%%%%%%%%%% Springe nach tex/pgfcircbipoles
%%%---------- open: tex/pgfcircbipoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -8991,10 +8991,10 @@
%%%---------- close: tex/pgfcircbipoles
%%%%%%%%%%% Springe nach tex/pgfcirctripoles
%%%---------- open: tex/pgfcirctripoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -14699,10 +14699,10 @@
%%%---------- close: tex/pgfcirctripoles
%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
%%%---------- open: tex/pgfcircquadpoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -15850,10 +15850,10 @@
%%%---------- close: tex/pgfcircquadpoles
%%%%%%%%%%% Springe nach tex/pgfcircmultipoles
%%%---------- open: tex/pgfcircmultipoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -17628,10 +17628,10 @@
%%%%%%%%%%% Springe nach tex/pgfcirclabel
%%%---------- open: tex/pgfcirclabel.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -17997,10 +17997,10 @@
%%%---------- close: tex/pgfcirclabel
%%%%%%%%%%% Springe nach tex/pgfcircvoltage
%%%---------- open: tex/pgfcircvoltage.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -18496,10 +18496,10 @@
%%%---------- close: tex/pgfcircvoltage
%%%%%%%%%%% Springe nach tex/pgfcirccurrent
%%%---------- open: tex/pgfcirccurrent.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -18711,10 +18711,10 @@
%%%---------- close: tex/pgfcirccurrent
%%%%%%%%%%% Springe nach tex/pgfcircflow
%%%---------- open: tex/pgfcircflow.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -19008,10 +19008,10 @@
%%%%%%%%%%% Springe nach tex/pgfcircpath
%%%---------- open: tex/pgfcircpath.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.1.2.tex b/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.1.2.tex
index ea2d3e5b14e..aedc4b598db 100644
--- a/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.1.2.tex
+++ b/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.1.2.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -32,10 +32,10 @@
%%%%%%%%%%% Springe nach tex/pgfcirc.defines
%%%---------- open: tex/pgfcirc.defines.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -2138,10 +2138,10 @@
%%%---------- close: tex/pgfcirc.defines
%%%%%%%%%%% Springe nach tex/pgfcircutils
%%%---------- open: tex/pgfcircutils.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -2224,10 +2224,10 @@
%%%%%%%%%%% Springe nach tex/pgfcircshapes
%%%---------- open: tex/pgfcircshapes.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -3030,10 +3030,10 @@
%%%---------- close: tex/pgfcircshapes
%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
%%%---------- open: tex/pgfcircmonopoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -4046,10 +4046,10 @@
%%%---------- close: tex/pgfcircmonopoles
%%%%%%%%%%% Springe nach tex/pgfcircbipoles
%%%---------- open: tex/pgfcircbipoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -9943,10 +9943,10 @@
%%%---------- close: tex/pgfcircbipoles
%%%%%%%%%%% Springe nach tex/pgfcirctripoles
%%%---------- open: tex/pgfcirctripoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -15850,10 +15850,10 @@
%%%---------- close: tex/pgfcirctripoles
%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
%%%---------- open: tex/pgfcircquadpoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -17137,10 +17137,10 @@
%%%---------- close: tex/pgfcircquadpoles
%%%%%%%%%%% Springe nach tex/pgfcircmultipoles
%%%---------- open: tex/pgfcircmultipoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -19831,10 +19831,10 @@
%%%%%%%%%%% Springe nach tex/pgfcirclabel
%%%---------- open: tex/pgfcirclabel.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -20200,10 +20200,10 @@
%%%---------- close: tex/pgfcirclabel
%%%%%%%%%%% Springe nach tex/pgfcircvoltage
%%%---------- open: tex/pgfcircvoltage.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -20749,10 +20749,10 @@
%%%---------- close: tex/pgfcircvoltage
%%%%%%%%%%% Springe nach tex/pgfcirccurrent
%%%---------- open: tex/pgfcirccurrent.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -20964,10 +20964,10 @@
%%%---------- close: tex/pgfcirccurrent
%%%%%%%%%%% Springe nach tex/pgfcircflow
%%%---------- open: tex/pgfcircflow.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -21261,10 +21261,10 @@
%%%%%%%%%%% Springe nach tex/pgfcircpath
%%%---------- open: tex/pgfcircpath.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.2.7.tex b/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.2.7.tex
index 52008ac9933..9def87d0ae8 100644
--- a/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.2.7.tex
+++ b/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.2.7.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -32,10 +32,10 @@
%%%%%%%%%%% Springe nach tex/pgfcirc.defines
%%%---------- open: tex/pgfcirc.defines.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -2353,10 +2353,10 @@
%%%---------- close: tex/pgfcirc.defines
%%%%%%%%%%% Springe nach tex/pgfcircutils
%%%---------- open: tex/pgfcircutils.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -2448,10 +2448,10 @@
%%%%%%%%%%% Springe nach tex/pgfcircshapes
%%%---------- open: tex/pgfcircshapes.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -3260,10 +3260,10 @@
%%%---------- close: tex/pgfcircshapes
%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
%%%---------- open: tex/pgfcircmonopoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -4362,10 +4362,10 @@
%%%---------- close: tex/pgfcircmonopoles
%%%%%%%%%%% Springe nach tex/pgfcircbipoles
%%%---------- open: tex/pgfcircbipoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -10525,10 +10525,10 @@
%%%---------- close: tex/pgfcircbipoles
%%%%%%%%%%% Springe nach tex/pgfcirctripoles
%%%---------- open: tex/pgfcirctripoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -16959,10 +16959,10 @@
%%%---------- close: tex/pgfcirctripoles
%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
%%%---------- open: tex/pgfcircquadpoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -18705,10 +18705,10 @@
%%%---------- close: tex/pgfcircquadpoles
%%%%%%%%%%% Springe nach tex/pgfcircmultipoles
%%%---------- open: tex/pgfcircmultipoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -21736,10 +21736,10 @@
%%%%%%%%%%% Springe nach tex/pgfcirclabel
%%%---------- open: tex/pgfcirclabel.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -22107,10 +22107,10 @@
%%%---------- close: tex/pgfcirclabel
%%%%%%%%%%% Springe nach tex/pgfcircvoltage
%%%---------- open: tex/pgfcircvoltage.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -22738,10 +22738,10 @@
%%%---------- close: tex/pgfcircvoltage
%%%%%%%%%%% Springe nach tex/pgfcirccurrent
%%%---------- open: tex/pgfcirccurrent.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -22968,10 +22968,10 @@
%%%---------- close: tex/pgfcirccurrent
%%%%%%%%%%% Springe nach tex/pgfcircflow
%%%---------- open: tex/pgfcircflow.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -23292,10 +23292,10 @@
%%%%%%%%%%% Springe nach tex/pgfcircpath
%%%---------- open: tex/pgfcircpath.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.4.6.tex b/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.4.6.tex
index 422784d674b..1ae3bf3d7dc 100644
--- a/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.4.6.tex
+++ b/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz-1.4.6.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -32,10 +32,10 @@
%%%%%%%%%%% Springe nach tex/pgfcirc.defines
%%%---------- open: tex/pgfcirc.defines.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -927,10 +927,10 @@
%%%---------- close: tex/pgfcirc.defines
%%%%%%%%%%% Springe nach tex/pgfcircutils
%%%---------- open: tex/pgfcircutils.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -1332,10 +1332,10 @@
%%%---------- close: tex/pgfcircutils
%%%%%%%%%%% Springe nach tex/pgfcircpath
%%%---------- open: tex/pgfcircpath.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -1697,10 +1697,10 @@
%%%%%%%%%%% Springe nach tex/pgfcircshapes
%%%---------- open: tex/pgfcircshapes.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -2519,10 +2519,10 @@
%%%---------- close: tex/pgfcircshapes
%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
%%%---------- open: tex/pgfcircmonopoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -3722,10 +3722,10 @@
%%%---------- close: tex/pgfcircmonopoles
%%%%%%%%%%% Springe nach tex/pgfcircbipoles
%%%---------- open: tex/pgfcircbipoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -9952,10 +9952,10 @@
%%%---------- close: tex/pgfcircbipoles
%%%%%%%%%%% Springe nach tex/pgfcirctripoles
%%%---------- open: tex/pgfcirctripoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -18520,10 +18520,10 @@
%%%---------- close: tex/pgfcirctripoles
%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
%%%---------- open: tex/pgfcircquadpoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -22281,10 +22281,10 @@
%%%---------- close: tex/pgfcircquadpoles
%%%%%%%%%%% Springe nach tex/pgfcircmultipoles
%%%---------- open: tex/pgfcircmultipoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -24442,10 +24442,10 @@
%%%%%%%%%%% Springe nach tex/pgfcirclabel
%%%---------- open: tex/pgfcirclabel.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -24844,10 +24844,10 @@
%%%---------- close: tex/pgfcirclabel
%%%%%%%%%%% Springe nach tex/pgfcircvoltage
%%%---------- open: tex/pgfcircvoltage.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -25554,10 +25554,10 @@
%%%---------- close: tex/pgfcircvoltage
%%%%%%%%%%% Springe nach tex/pgfcirccurrent
%%%---------- open: tex/pgfcirccurrent.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -25800,10 +25800,10 @@
%%%---------- close: tex/pgfcirccurrent
%%%%%%%%%%% Springe nach tex/pgfcircflow
%%%---------- open: tex/pgfcircflow.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex b/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex
index f85b8ab58b3..6f3c8c364f5 100644
--- a/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex
+++ b/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -16,8 +16,8 @@
\startmodule[circuitikz]
\usemodule[tikz]
-\def\pgfcircversion{1.7.0}
-\def\pgfcircversiondate{2024/08/03}
+\def\pgfcircversion{1.7.1}
+\def\pgfcircversiondate{2025/01/10}
\writestatus{loading}{\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion}
diff --git a/Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv-cs.tex b/Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv-cs.tex
index f4fcf8fdc0f..73aa33ef1c1 100644
--- a/Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv-cs.tex
+++ b/Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv-cs.tex
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-%% Copyright (C) 2020-2023 Jonathan P. Spratte
+%% Copyright (C) 2020-2024 Jonathan P. Spratte
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this license or
diff --git a/Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv-def.tex b/Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv-def.tex
index 5752a499295..2dd8f672f67 100644
--- a/Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv-def.tex
+++ b/Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv-def.tex
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-%% Copyright (C) 2020-2023 Jonathan P. Spratte
+%% Copyright (C) 2020-2024 Jonathan P. Spratte
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this license or
diff --git a/Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv-pop.tex b/Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv-pop.tex
index 4e66a908a9c..0309abd776b 100644
--- a/Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv-pop.tex
+++ b/Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv-pop.tex
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-%% Copyright (C) 2020-2023 Jonathan P. Spratte
+%% Copyright (C) 2020-2024 Jonathan P. Spratte
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this license or
diff --git a/Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv.tex b/Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv.tex
index 489f2df0159..b6acaf2e7e7 100644
--- a/Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv.tex
+++ b/Master/texmf-dist/tex/context/third/expkv-bundle/t-expkv.tex
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-%% Copyright (C) 2020-2023 Jonathan P. Spratte
+%% Copyright (C) 2020-2024 Jonathan P. Spratte
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this license or
diff --git a/Master/texmf-dist/tex/context/third/markdown/t-markdown.tex b/Master/texmf-dist/tex/context/third/markdown/t-markdown.tex
index 790807abc7c..67ca8d8d5c6 100644
--- a/Master/texmf-dist/tex/context/third/markdown/t-markdown.tex
+++ b/Master/texmf-dist/tex/context/third/markdown/t-markdown.tex
@@ -6,7 +6,7 @@
%%
%% markdown.dtx (with options: `context')
%%
-%% Copyright (C) 2016-2024 Vít Starý Novotný, Andrej Genčur
+%% Copyright (C) 2016-2025 Vít Starý Novotný, Andrej Genčur
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -43,7 +43,7 @@
%% The names of the source files used are shown above.
%%
\unprotect
-\ifx\ExplSyntaxOn\undefined
+\expandafter\ifx\csname ExplSyntaxOn\endcsname\relax
\input expl3-generic
\fi
\ExplSyntaxOn
@@ -66,7 +66,10 @@
\input markdown/markdown
\let\startmarkdown\relax
\let\stopmarkdown\relax
+\let\startyaml\relax
+\let\stopyaml\relax
\let\inputmarkdown\relax
+\let\inputyaml\relax
\ExplSyntaxOn
\cs_new:Npn
\setupmarkdown
@@ -75,6 +78,9 @@
\__markdown_setup:n
{ #1 }
}
+\cs_gset_eq:NN
+ \setupyaml
+ \setupmarkdown
\cs_new:Nn \__markdown_caseless:N
{
\regex_replace_all:nnN
@@ -94,6 +100,8 @@
\__markdown_define_renderers:
\__markdown_define_renderer_prototypes:
}
+\prop_new:N
+ \g__markdown_context_built_in_themes_prop
\ExplSyntaxOff
\def\markdownMakeOther{%
\count0=128\relax
@@ -112,6 +120,12 @@
\fi
\markdownInput{#2}%
\endgroup}%
+\long\def\inputyaml{%
+ \dosingleempty
+ \doinputyaml}%
+\long\def\doinputyaml[#1]#2{%
+ \doinputmarkdown
+ [jekyllData, expectJekyllData, ensureJekyllData, #1]{#2}}%
\startluacode
document.markdown_buffering = false
local function preserve_trailing_spaces(line)
@@ -132,36 +146,153 @@
|gdef|stopmarkdown{%
|ctxlua{document.markdown_buffering = false}%
|markdownEnd}%
+ |gdef|startyaml{%
+ |begingroup
+ |ctxlua{document.markdown_buffering = true}%
+ |setupyaml[jekyllData, expectJekyllData, ensureJekyllData]%
+ |markdownReadAndConvert{\stopyaml}%
+ {|stopyaml}}%
+ |gdef|stopyaml{%
+ |ctxlua{document.markdown_buffering = false}%
+ |yamlEnd}%
|endgroup
\ExplSyntaxOn
+\prop_new:N \g__markdown_context_loaded_themes_linenos_prop
+\prop_new:N \g__markdown_context_loaded_themes_versions_prop
\cs_gset:Nn
- \__markdown_load_theme:nn
+ \__markdown_load_theme:nnn
{
- \file_if_exist:nTF
- { t - markdown theme #2.tex }
+ \bool_if:nTF
+ {
+ \bool_lazy_or_p:nn
+ {
+ \prop_if_in_p:Nn
+ \g__markdown_context_built_in_themes_prop
+ { #1 }
+ }
+ {
+ \file_if_exist_p:n
+ { t - markdown theme #3.tex }
+ }
+ }
{
- \msg_info:nnn
- { markdown }
- { loading-context-theme }
+ \prop_get:NnNTF
+ \g__markdown_context_loaded_themes_linenos_prop
{ #1 }
- \usemodule
- [ t ]
- [ markdown theme #2 ]
+ \l_tmpa_tl
+ {
+ \prop_get:NnN
+ \g__markdown_context_loaded_themes_versions_prop
+ { #1 }
+ \l_tmpb_tl
+ \str_if_eq:nVTF
+ { #2 }
+ \l_tmpb_tl
+ {
+ \msg_warning:nnnVn
+ { markdown }
+ { repeatedly-loaded-context-theme }
+ { #1 }
+ \l_tmpa_tl
+ { #2 }
+ }
+ {
+ \msg_error:nnnnVV
+ { markdown }
+ { different-versions-of-context-theme }
+ { #1 }
+ { #2 }
+ \l_tmpb_tl
+ \l_tmpa_tl
+ }
+ }
+ {
+ \prop_gput:Nnx
+ \g__markdown_context_loaded_themes_linenos_prop
+ { #1 }
+ { \tex_the:D \tex_inputlineno:D } % noqa: W200
+ \prop_gput:Nnn
+ \g__markdown_context_loaded_themes_versions_prop
+ { #1 }
+ { #2 }
+ \prop_if_in:NnTF
+ \g__markdown_context_built_in_themes_prop
+ { #1 }
+ {
+ \msg_info:nnnn
+ { markdown }
+ { loading-built-in-context-theme }
+ { #1 }
+ { #2 }
+ \prop_item:Nn
+ \g__markdown_context_built_in_themes_prop
+ { #1 }
+ }
+ {
+ \msg_info:nnnn
+ { markdown }
+ { loading-context-theme }
+ { #1 }
+ { #2 }
+ \usemodule
+ [ t ]
+ [ markdown theme #3 ]
+ }
+ }
}
{
- \__markdown_plain_tex_load_theme:nn
+ \__markdown_plain_tex_load_theme:nnn
{ #1 }
{ #2 }
+ { #3 }
}
}
\msg_new:nnn
{ markdown }
+ { loading-built-in-context-theme }
+ { Loading~version~#2~of~built-in~ConTeXt~Markdown~theme~#1 }
+\msg_new:nnn
+ { markdown }
{ loading-context-theme }
- { Loading~ConTeXt~Markdown~theme~#1 }
+ { Loading~version~#2~of~ConTeXt~Markdown~theme~#1 }
+\msg_new:nnn
+ { markdown }
+ { repeatedly-loaded-context-theme }
+ {
+ Version~#3~of~ConTeXt~Markdown~theme~#1~was~previously~
+ loaded~on~line~#2,~not~loading~it~again
+ }
+\msg_new:nnn
+ { markdown }
+ { different-versions-of-context-theme }
+ {
+ Tried~to~load~version~#2~of~ConTeXt~Markdown~theme~#1~
+ but~version~#3~has~already~been~loaded~on~line~#4
+ }
+\str_if_eq:VVT
+ \c__markdown_top_layer_tl
+ \c__markdown_option_layer_context_tl
+ {
+ \use:c
+ { ExplSyntaxOff }
+ \__markdown_if_option:nF
+ { noDefaults }
+ {
+ \__markdown_if_option:nTF
+ { experimental }
+ {
+ \__markdown_setup:n
+ { theme = witiko/markdown/defaults@experimental }
+ }
+ {
+ \__markdown_setup:n
+ { theme = witiko/markdown/defaults }
+ }
+ }
+ \use:c
+ { ExplSyntaxOn }
+ }
\ExplSyntaxOff
-\markdownIfOption{noDefaults}{}{
- \setupmarkdown[theme=witiko/markdown/defaults]
-}
\stopmodule
\protect
\endinput
diff --git a/Master/texmf-dist/tex/context/third/markdown/t-markdownthemewitiko_markdown_defaults.tex b/Master/texmf-dist/tex/context/third/markdown/t-markdownthemewitiko_markdown_defaults.tex
index dde11e86ae3..6bad0deb7ba 100644
--- a/Master/texmf-dist/tex/context/third/markdown/t-markdownthemewitiko_markdown_defaults.tex
+++ b/Master/texmf-dist/tex/context/third/markdown/t-markdownthemewitiko_markdown_defaults.tex
@@ -6,7 +6,7 @@
%%
%% markdown.dtx (with options: `themes-witiko-markdown-defaults-ctx')
%%
-%% Copyright (C) 2016-2024 Vít Starý Novotný, Andrej Genčur
+%% Copyright (C) 2016-2025 Vít Starý Novotný, Andrej Genčur
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -143,7 +143,7 @@
\seq_pop_left:NN
\l_tmpa_seq
\l_tmpa_tl
- \typefile[\l_tmpa_tl][]{#1}
+ \typefile[ \l_tmpa_tl ][] {#1}
}
}
\ExplSyntaxOff
diff --git a/Master/texmf-dist/tex/context/third/memoize/t-memoizable.tex b/Master/texmf-dist/tex/context/third/memoize/t-memoizable.tex
index a5191dfade4..fe2bdd94691 100644
--- a/Master/texmf-dist/tex/context/third/memoize/t-memoizable.tex
+++ b/Master/texmf-dist/tex/context/third/memoize/t-memoizable.tex
@@ -26,11 +26,11 @@
%% (<texmf>/doc/generic/memoize/)FILES.
%D \module[
%D file=t-memoizable.tex,
-%D version=1.3.0,
+%D version=1.4.1,
%D title=Memoizable,
%D subtitle=A programmer's stub for Memoize,
%D author=Saso Zivanovic,
-%D date=2024-04-02,
+%D date=2024-12-02,
%D copyright=Saso Zivanovic,
%D license=LPPL,
%D ]
diff --git a/Master/texmf-dist/tex/context/third/memoize/t-memoize.tex b/Master/texmf-dist/tex/context/third/memoize/t-memoize.tex
index aac4dd734a4..19baab25b9d 100644
--- a/Master/texmf-dist/tex/context/third/memoize/t-memoize.tex
+++ b/Master/texmf-dist/tex/context/third/memoize/t-memoize.tex
@@ -26,11 +26,11 @@
%% (<texmf>/doc/generic/memoize/)FILES.
%D \module[
%D file=t-memoize.tex,
-%D version=1.3.0,
+%D version=1.4.1,
%D title=Memoize,
%D subtitle=Fast and flexible externalization,
%D author=Saso Zivanovic,
-%D date=2024-04-02,
+%D date=2024-12-02,
%D copyright=Saso Zivanovic,
%D license=LPPL,
%D ]
@@ -375,7 +375,10 @@
\ifmemoizing
\else
\ifmemoize
- \xdef\mmz@code@mdfivesum{\pdf@mdfivesum{\the\mmz@mdfive@source}}%
+ \xdef\mmz@code@mdfivesum{\pdf@mdfivesum{%
+ \normalexpanded{\the\mmzSalt}%
+ \the\mmz@mdfive@source
+ }}%
\mmz@trace@code@mdfive
\ifnum\mmz@mode=\mmz@mode@recompile\relax
\ifnum\pdf@draftmode=0
@@ -653,16 +656,34 @@
{}%
},
clear context/.value forbidden,
- meaning to context/.code={\forcsvlist\mmz@mtoc{#1}},
- csname meaning to context/.code={\mmz@mtoc@csname{#1}},
- key meaning to context/.code={%
+ meaning to context/.code={\mmz@Cos\forcsvlist\mmz@mtoc{#1}},
+ csname meaning to context/.code={\mmz@Cos\mmz@mtoc@csname{#1}},
+ key meaning to context/.code={\mmz@Cos
\forcsvlist\mmz@mtoc\mmz@mtoc@keycmd{#1}},
- key value to context/.code={\forcsvlist\mmz@mtoc@key{#1}},
- /handlers/.meaning to context/.code={\normalexpanded{%
+ key value to context/.code={\mmz@Cos\forcsvlist\mmz@mtoc@key{#1}},
+ /handlers/.meaning to context/.code={\mmz@Cos\normalexpanded{%
\noexpand\mmz@mtoc@csname{pgfk@\pgfkeyscurrentpath/.@cmd}}},
- /handlers/.value to context/.code={%
+ /handlers/.value to context/.code={\mmz@Cos
\normalexpanded{\noexpand\mmz@mtoc@csname{pgfk@\pgfkeyscurrentpath}}},
}
+\newtoks\mmzSalt
+\mmzset{
+ salt/.code=\expandafter\toksapp\expandafter\mmzSalt{#1,},
+ clear salt/.value forbidden,
+ clear salt/.code=\mmzSalt{},
+ meaning to salt/.code={\mmz@coS\forcsvlist\mmz@mtoc{#1}},
+ csname meaning to salt/.code={\mmz@coS\mmz@mtoc@csname{#1}},
+ key meaning to salt/.code={\mmz@coS
+ \forcsvlist\mmz@mtoc\mmz@mtoc@keycmd{#1}},
+ key value to salt/.code={\mmz@coS
+ \forcsvlist\mmz@mtoc@key{#1}},
+ /handlers/.meaning to salt/.code={\mmz@coS\normalexpanded{%
+ \noexpand\mmz@mtoc@csname{pgfk@\pgfkeyscurrentpath/.@cmd}}},
+ /handlers/.value to salt/.code={\mmz@coS
+ \normalexpanded{\noexpand\mmz@mtoc@csname{pgfk@\pgfkeyscurrentpath}}},
+}
+\def\mmz@Cos{\def\mmz@context@or@salt{context}}
+\def\mmz@coS{\def\mmz@context@or@salt{salt}}
\def\mmz@mtoc#1{%
\collargs@cs@cases{#1}%
{\mmz@mtoc@cmd{#1}}%
@@ -683,14 +704,17 @@
\expandafter\mmz@mtoc@csname\expandafter{\string#1}%
}
\def\mmz@mtoc@csname#1{%
- \pgfkeysvalueof{/mmz/context/.@cmd}%
- \detokenize{#1}={\expandafter\meaning\csname#1\endcsname}%
+ \pgfkeysvalueof{/mmz/\mmz@context@or@salt/.@cmd}%
+ \detokenize{#1}%
+ \ifcsname#1\endcsname
+ ={\expandafter\meaning\csname#1\endcsname}%
+ \fi
\pgfeov
}
\def\mmz@mtoc@key#1{\mmz@mtoc@csname{pgfk@#1}}
\def\mmz@mtoc@keycmd#1{\mmz@mtoc@csname{pgfk@#1/.@cmd}}
\def\mmz@mtoc@error@notcsorenv#1{%
- \PackageError{memoize}{'\detokenize{#1}' passed to key 'meaning to context'
+ \PackageError{memoize}{'\detokenize{#1}' passed to key 'meaning to \mmz@context@or@salt'
is neither a command nor an environment}{}%
}
\def\mmz@cmemo@path{\mmz@prefix\mmz@code@mdfivesum.memo}
@@ -784,6 +808,8 @@
\fi
\mmz@trace@resource{#1}%
\fi
+ \csxdef{mmz@resource@\the\mmz@seq}{\mmz@prefix@dir#1}%
+ \global\advance\mmz@seq1
}
\def\mmz@process@ccmemo{%
\mmz@trace@process@ccmemo
@@ -813,6 +839,7 @@
}%
\fi
}%
+ \global\mmz@seq=0
\IfFileExists{\mmz@ccmemo@path}{%
\ifmmz@direct@ccmemo@input
\input{\mmz@ccmemo@path}%
@@ -930,6 +957,7 @@
})
}%
}%
+ \mmz@shipout@unrotate
\hoffset\dimexpr\mmz@padding@left - \pdfhorigin\relax
\voffset\dimexpr\mmz@padding@top - \pdfvorigin\relax
\pdf@primitive\shipout\box\mmz@box
@@ -967,6 +995,19 @@
\mmzset{begindocument/.append code={%
\edef\mmz@inverse@mag{\expandafter\mmz@Pgf@geT\the\dimexpr 1000pt/\mag}%
}}
+\ifdef\XeTeXversion{%
+ \def\mmz@shipout@unrotate{}%
+}{%
+ \ifdef\luatexversion{%
+ \def\mmz@shipout@unrotate{%
+ \pdfvariable pageattr {/Rotate 0}%
+ }%
+ }{%
+ \def\mmz@shipout@unrotate{%
+ \pdfpageattr{/Rotate 0}%
+ }%
+ }%
+}
\let\mmzRegularPages\realpageno
\newcount\mmzExternPages
\mmzset{
@@ -978,14 +1019,18 @@
},
}
\newcount\mmzExtraPages
-\def\mmz@include@extern#1#2#3#4#5#6#7#8#9{%
- \mmz@seq=#1\relax
+\def\mmz@include@extern#1{%
+ \expandafter\expandafter\expandafter\mmz@include@extern@i
+ \expandafter\expandafter\expandafter{%
+ \csname mmz@resource@#1\endcsname}%
+}
+\def\mmz@include@extern@i#1#2#3#4#5#6#7#8#9{%
\setbox\mmz@box=#2{%
\setbox0=\hbox{%
\lower\dimexpr #5+#7\relax\hbox{%
\hskip -#6\relax
\setbox0=\hbox{%
- \mmz@insertpdfpage{\mmz@extern@path}{1}%
+ \mmz@insertpdfpage{#1}{1}%
}%
\unhbox0
}%
@@ -1408,6 +1453,20 @@
\pgfeov
\AdviceOriginal
}
+\def\mmz@unknown{}
+\mmzset{
+ .unknown/.code={%
+ \eappto\mmz@unknown{,\pgfkeyscurrentkey={#1}}%
+ },
+ begindocument/end/.append code={%
+ \pgfkeyslet{/mmz/.unknown/.@cmd}\undefined
+ \expandafter\pgfkeysalso\expandafter{\mmz@unknown}%
+ },
+}
+\def\mmz@makeatletter{%
+ \edef\mmz@restoreatcatcode{\catcode`\noexpand\@\the\catcode`\@\relax}%
+ \catcode`\@=11
+}
\def\mmz@if@package@loaded#1#2#3{%
\mmzset{%
begindocument/before/.append code={%
@@ -1431,14 +1490,12 @@
}%
\ifx\mmz@temp=0
\else
- \xtoksapp\mmzCCMemo{%
- \normalunexpanded{%
- \global\expandafter\advance\csname pgf@picture@serial@count\endcsname
- }%
- \mmz@temp
- }%
+ \xtoksapp\mmzCCMemo{\noexpand\mmzStepPgfPictureId{\mmz@temp}}%
\fi
}%
+ \def\mmzStepPgfPictureId##1{%
+ \global\advance\pgf@picture@serial@count##1\relax
+ }%
\mmzset{%
at begin memoization=\mmzPgfAtBeginMemoization,
at end memoization=\mmzPgfAtEndMemoization,
diff --git a/Master/texmf-dist/tex/context/third/memoize/t-nomemoize.tex b/Master/texmf-dist/tex/context/third/memoize/t-nomemoize.tex
index a476e26599a..ad568dd807b 100644
--- a/Master/texmf-dist/tex/context/third/memoize/t-nomemoize.tex
+++ b/Master/texmf-dist/tex/context/third/memoize/t-nomemoize.tex
@@ -26,11 +26,11 @@
%% (<texmf>/doc/generic/memoize/)FILES.
%D \module[
%D file=t-nomemoize.tex,
-%D version=1.3.0,
+%D version=1.4.1,
%D title=Memoize,
%D subtitle=A no-op stub for Memoize,
%D author=Saso Zivanovic,
-%D date=2024-04-02,
+%D date=2024-12-02,
%D copyright=Saso Zivanovic,
%D license=LPPL,
%D ]
diff --git a/Master/texmf-dist/tex/context/third/pocketdiary/PocketDiary.mkiv b/Master/texmf-dist/tex/context/third/pocketdiary/PocketDiary.mkiv
index fb2172fc6cb..9498200a493 100644
--- a/Master/texmf-dist/tex/context/third/pocketdiary/PocketDiary.mkiv
+++ b/Master/texmf-dist/tex/context/third/pocketdiary/PocketDiary.mkiv
@@ -1,5 +1,5 @@
%D \module
-%D [ file=t-pocketdiary.tex,
+%D [ file=t-pocketdiary.mkiv,
%D version=2023.04.15,
%D title=PocketDiary,
%D subtitle=User file for PocketDiary,,
@@ -113,7 +113,7 @@
%D Setup the document
\starttext
- \setuparranging[1*8] % this can be uncommented in t-pocketdiary.tex
+ \setuparranging[1*8] % this can be uncommented in t-pocketdiary.mkiv
\getbuffer[Pocketdiary]
\stoptext \ No newline at end of file
diff --git a/Master/texmf-dist/tex/context/third/pocketdiary/t-pocketdiary.mkiv b/Master/texmf-dist/tex/context/third/pocketdiary/t-pocketdiary.mkiv
index 4ca5f86989e..9bb83c4c79c 100644
--- a/Master/texmf-dist/tex/context/third/pocketdiary/t-pocketdiary.mkiv
+++ b/Master/texmf-dist/tex/context/third/pocketdiary/t-pocketdiary.mkiv
@@ -1,6 +1,6 @@
%D \module
%D [ file=t-pocketdiary,
-%D version="2023-04-15",
+%D version=2023-04-15,
%D title=PocketDiary \CONTEXT\ User Module,
%D subtitle=PocketDiary,
%D author=Willi Egger,
@@ -283,7 +283,7 @@
\setuplabeltext[nl][sun=Zo]
\setuplabeltext[nl][january=Januari]
-\setuplabeltext[nl][february=Febrari]
+\setuplabeltext[nl][february=Februari]
\setuplabeltext[nl][march=Maart]
\setuplabeltext[nl][april=April]
\setuplabeltext[nl][may=Mei]
@@ -555,7 +555,7 @@
%D In the templates a light gray color for (grid)lines is used. Separator
%D lines can have
%D an individual color too. We define the two colors with arbitrary values.
-%D These preset colors can be adjusted in the user file \type{PocketDiary.tex}.
+%D These preset colors can be adjusted in the user file \type{PocketDiary.mkiv}.
\definecolor[Grid][s=.75]
\definecolor[Separatorline][blue]
@@ -661,14 +661,14 @@
%D The return value of the moon phase calculation can be either a number,
%D representing the day number in the lunar month, or a command to put a
%D \METAFUN -graphic (New moon, growing moon, full moon, waning moon).
-%D These little graphics are stored in the file \type{moons-MP.tex}.
+%D These little graphics are stored in the file \type{moons-MP.mkiv}.
-\input moons-MP
+\input moons-MP.mkiv
%D In this file 4 overlays are defined which are used in a dedicated
%D \type{\framed[]{}} to typeset the pictograms.
%D
-%M \input ./Moonphase/moons-MP
+%M \input ./Moonphase/moons-MP.mkiv
%M \defineoverlay[waningmoon][\useMPgraphic{Moon::Waning_moon}]
%M \defineoverlay[growingmoon][\useMPgraphic{Moon::Growing_moon}]
%M \defineoverlay[newmoon][\useMPgraphic{Moon::Newmoon}]
@@ -711,13 +711,13 @@
%D
%D For sunrise, sunset and light hours exist three \METAFUN\ drawings.
%D These are included in the directory \type{Solar} in the file
-%D \type{sun-MP.tex}.
+%D \type{sun-MP.mkiv}.
-\input sun-MP
+\input sun-MP.mkiv
%D In this file 3 overlays are defined which can then be used as a
%D background in a dedicated framed environment.
-%M \input ./solar/sun-MP
+%M \input ./solar/sun-MP.mkiv
%M \defineoverlay[Sunrise][\useMPgraphic{Sun::Sunrise}]
%M \defineoverlay[Sunset][\useMPgraphic{Sun::Sunset}]
%M \defineoverlay[Light][\useMPgraphic{Sun::Light}]
@@ -995,7 +995,7 @@
\define[8]\Dayplan{\ctxlua{thirddata.diary.dayplan(#1,#2,#3,#4,#5,#6,#7,#8)}}
-%D The Dayplan-command with the collected parameters is placed in a buffer. This buffer is later called from the user-file \type{PocketDiary.tex} .
+%D The Dayplan-command with the collected parameters is placed in a buffer. This buffer is later called from the user-file \type{PocketDiary.mkiv} .
\startbuffer[Dayplan]
\Dayplan %Weekday,Week,Month,Year,lat,lon,timeoffset,continent
@@ -1029,7 +1029,7 @@
\define[8]\Weekendplan{\ctxlua{thirddata.diary.weekendplan(#1,#2,#3,#4,#5,#6,#7,#8)}}
-%D Again this command with the collected information of the 8 parameters is placed in a buffer which is called then from the user-file \type{PocketDiary.tex} .
+%D Again this command with the collected information of the 8 parameters is placed in a buffer which is called then from the user-file \type{PocketDiary.mkiv} .
\startbuffer[Weekendplan]
\Weekendplan %Weekday,Week,Month,Year,lat,lon,timeoffset,continent
@@ -1075,7 +1075,7 @@
\define[8]\Weekcurrentplan{\ctxlua{thirddata.diary.weekplan(#1,#2,#3,#4,#5,#6,#7,#8)}}
-%D And the command together with the gathered parameters is stored in a buffer, which will be used by the user-file \type{PocketDiary.tex} .
+%D And the command together with the gathered parameters is stored in a buffer, which will be used by the user-file \type{PocketDiary.mkiv} .
\startbuffer[Weekcurrentplan]
\Weekcurrentplan %Weekday,Week,Month,Year,lat,lon,timeoffset,continent
@@ -1135,7 +1135,7 @@
\define[2]\Monthcurrentplan{\ctxlua{thirddata.diary.monthcurrentplan(#1,#2)}}
%D The command is kept together with the gathered parameters in a buffer again.
-%D This will be called from the user-file \type{PocketDiary.tex} .
+%D This will be called from the user-file \type{PocketDiary.mkiv} .
\startbuffer[Monthcurrentplan]
\Monthcurrentplan
@@ -1168,7 +1168,7 @@
%D \stopplacefigure
%D The year table(s) are prepared as the week tables with a table-setup
%D sequence, a custom command which resides with the parameters assigned in a
-%D buffer, which will again be called from the user-file \type{PocketDiary.tex}
+%D buffer, which will again be called from the user-file \type{PocketDiary.mkiv}
\startsetups table:year
\setupTABLE[column]
@@ -1204,7 +1204,7 @@
\define[8]\Daybyday{\ctxlua{thirddata.diary.daybydayplan(#1,#2,#3,#4,#5,#6,#7,#8)}}
-%D A buffer contains the command just defined with the gathered information for the parameters. The buffer then is called from the user-file \type{PocketDiary.tex} .
+%D A buffer contains the command just defined with the gathered information for the parameters. The buffer then is called from the user-file \type{PocketDiary.mkiv} .
\startbuffer[Daybyday]
\Daybyday
@@ -1278,7 +1278,7 @@
\setupbackgrounds[text][text][background=]
\stopsetups
-%D All templates for these pages are contained in buffers in order to call them from the user-file \type{PocketDiary.tex}
+%D All templates for these pages are contained in buffers in order to call them from the user-file \type{PocketDiary.mkiv}
\startbuffer[Contact]
\setupheadertexts[{\bf \labeltext{contact}\hfill}]
@@ -1455,7 +1455,7 @@
%D
%D The arrangement of the 8 pages is not switched on in this file. For the
%D purpose of experimenting it is better to keep this command in the user file
-%D \type{\type{PocketDiary.tex} }
+%D \type{\type{PocketDiary.mkiv} }
%D
%D \stopsubject
diff --git a/Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono-ExtraLight.fontspec b/Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono-ExtraLight.fontspec
new file mode 100644
index 00000000000..f339d284c45
--- /dev/null
+++ b/Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono-ExtraLight.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[CascadiaMono-ExtraLight]
+ {Extension=.otf,
+ UprightFont=CascadiaCode-ExtraLight,
+ ItalicFont=CascadiaCode-ExtraLightItalic,
+ BoldFont=CascadiaCode-SemiLight,
+ BoldItalicFont=CascadiaCode-SemiLightItalic,
+ Contextuals=AlternateOff
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono-Light.fontspec b/Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono-Light.fontspec
index aeae5d23d94..f888cf357f9 100644
--- a/Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono-Light.fontspec
+++ b/Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono-Light.fontspec
@@ -1,8 +1,8 @@
\defaultfontfeatures[CascadiaMono-Light]
{Extension=.otf,
- UprightFont=CascadiaCode-SemiLight,
- ItalicFont=CascadiaCode-SemiLightItalic,
- BoldFont=CascadiaCode-SemiBold,
- BoldItalicFont=CascadiaCode-SemiBoldItalic,
+ UprightFont=CascadiaCode-Light,
+ ItalicFont=CascadiaCode-LightItalic,
+ BoldFont=CascadiaCode-Regular,
+ BoldItalicFont=CascadiaCode-Italic,
Contextuals=AlternateOff
} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono-SemiLight.fontspec b/Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono-SemiLight.fontspec
new file mode 100644
index 00000000000..c0da85c4e93
--- /dev/null
+++ b/Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono-SemiLight.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[CascadiaMono-SemiLight]
+ {Extension=.otf,
+ UprightFont=CascadiaCode-SemiLight,
+ ItalicFont=CascadiaCode-SemiLightItalic,
+ BoldFont=CascadiaCode-SemiBold,
+ BoldItalicFont=CascadiaCode-SemiBoldItalic,
+ Contextuals=AlternateOff
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiacode-extralight.fontspec b/Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiacode-extralight.fontspec
new file mode 100644
index 00000000000..5287e57c240
--- /dev/null
+++ b/Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiacode-extralight.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[cascadiacode-extralight]
+ {Extension=.otf,
+ UprightFont=CascadiaCode-ExtraLight,
+ ItalicFont=CascadiaCode-ExtraLightItalic,
+ BoldFont=CascadiaCode-SemiLight,
+ BoldItalicFont=CascadiaCode-SemiLightItalic,
+ Contextuals=Alternate
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiacode-light.fontspec b/Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiacode-light.fontspec
new file mode 100644
index 00000000000..c0b102c7f49
--- /dev/null
+++ b/Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiacode-light.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[cascadiacode-light]
+ {Extension=.otf,
+ UprightFont=CascadiaCode-Light,
+ ItalicFont=CascadiaCode-LightItalic,
+ BoldFont=CascadiaCode-Regular,
+ BoldItalicFont=CascadiaCode-Italic,
+ Contextuals=Alternate
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiacode-semilight.fontspec b/Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiacode-semilight.fontspec
new file mode 100644
index 00000000000..410377c8dab
--- /dev/null
+++ b/Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiacode-semilight.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[cascadiacode-semilight]
+ {Extension=.otf,
+ UprightFont=CascadiaCode-SemiLight,
+ ItalicFont=CascadiaCode-SemiLightItalic,
+ BoldFont=CascadiaCode-SemiBold,
+ BoldItalicFont=CascadiaCode-SemiBoldItalic,
+ Contextuals=Alternate
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiacode.fontspec b/Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiacode.fontspec
new file mode 100644
index 00000000000..bcd782a31ef
--- /dev/null
+++ b/Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiacode.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[cascadiacode]
+ {Extension=.otf,
+ UprightFont=CascadiaCode-Regular,
+ ItalicFont=CascadiaCode-Italic,
+ BoldFont=CascadiaCode-Bold,
+ BoldItalicFont=CascadiaCode-BoldItalic,
+ Contextuals=Alternate
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiamono-otf.sty b/Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiamono-otf.sty
new file mode 100644
index 00000000000..d6143aba30e
--- /dev/null
+++ b/Master/texmf-dist/tex/fonts/cascadiamono-otf/cascadiamono-otf.sty
@@ -0,0 +1,29 @@
+% cascadiamono-otf.sty
+% C. Pierquet 2025
+% This file is distributed under the terms of the LaTeX Project Public
+% License from CTAN archives in directory macros/latex/base/lppl.txt.
+% Either version 1.3 or, at your option, any later version.
+
+\ProvidesPackage{cascadiamono-otf}[2025/01/10 v0.3 Supports cascadiamono fonts for lualatex and xelatex.]
+
+\RequirePackage{xkeyval}
+
+\newcommand*{\CascadiaMono@scale}{MatchLowercase}
+\DeclareOptionX{scale}{\renewcommand*{\CascadiaMono@scale}{#1}}
+\ProcessOptionsX\relax
+
+\RequirePackage{fontspec}
+\defaultfontfeatures{
+ HyphenChar = None,
+ Scale = \CascadiaMono@scale}
+\newfontfamily\cascadiamono{CascadiaMono}
+\newfontfamily\cascadiamonosemilight{CascadiaMono-SemiLight}
+\newfontfamily\cascadiamonolight{CascadiaMono-Light}
+\newfontfamily\cascadiamonoextralight{CascadiaMono-ExtraLight}
+\newfontfamily\cascadiacode{cascadiacode}
+\newfontfamily\cascadiacodesemilight{cascadiacode-semilight}
+\newfontfamily\cascadiacodelight{cascadiacode-light}
+\newfontfamily\cascadiacodeextralight{cascadiacode-extralight}
+\defaultfontfeatures{}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/babel-german/austrian.ldf b/Master/texmf-dist/tex/generic/babel-german/austrian.ldf
index 709a403c57a..3e93098438e 100644
--- a/Master/texmf-dist/tex/generic/babel-german/austrian.ldf
+++ b/Master/texmf-dist/tex/generic/babel-german/austrian.ldf
@@ -34,7 +34,7 @@
%% via: https://github.com/jspitz/babel-german
%%
\ProvidesLanguage{austrian}
- [2024/01/19 v2.14 German support for babel (pre-1996 orthography)]
+ [2024/12/10 v2.15 German support for babel (pre-1996 orthography)]
\def\tmpa{germanb}
\let\SaveCurrentOption\CurrentOption
\ifx\CurrentOption\tmpa
diff --git a/Master/texmf-dist/tex/generic/babel-german/german.ldf b/Master/texmf-dist/tex/generic/babel-german/german.ldf
index a53b3f7c844..0805b114305 100644
--- a/Master/texmf-dist/tex/generic/babel-german/german.ldf
+++ b/Master/texmf-dist/tex/generic/babel-german/german.ldf
@@ -34,7 +34,7 @@
%% via: https://github.com/jspitz/babel-german
%%
\ProvidesLanguage{german}
- [2024/01/19 v2.14 German support for babel (pre-1996 orthography)]
+ [2024/12/10 v2.15 German support for babel (pre-1996 orthography)]
\def\tmpa{germanb}
\let\SaveCurrentOption\CurrentOption
\ifx\CurrentOption\tmpa
diff --git a/Master/texmf-dist/tex/generic/babel-german/germanb.ldf b/Master/texmf-dist/tex/generic/babel-german/germanb.ldf
index 9329345b446..a2385a4c89c 100644
--- a/Master/texmf-dist/tex/generic/babel-german/germanb.ldf
+++ b/Master/texmf-dist/tex/generic/babel-german/germanb.ldf
@@ -34,7 +34,7 @@
%% via: https://github.com/jspitz/babel-german
%%
\ProvidesLanguage{germanb}
- [2024/01/19 v2.14 German support for babel (pre-1996 orthography)]
+ [2024/12/10 v2.15 German support for babel (pre-1996 orthography)]
\def\tmpa{germanb}
\let\SaveCurrentOption\CurrentOption
\ifx\CurrentOption\tmpa
diff --git a/Master/texmf-dist/tex/generic/babel-german/naustrian.ldf b/Master/texmf-dist/tex/generic/babel-german/naustrian.ldf
index 40751d8137f..909d141338b 100644
--- a/Master/texmf-dist/tex/generic/babel-german/naustrian.ldf
+++ b/Master/texmf-dist/tex/generic/babel-german/naustrian.ldf
@@ -34,7 +34,7 @@
%% via: https://github.com/jspitz/babel-german
%%
\ProvidesLanguage{naustrian}
- [2024/01/19 v2.14 German support for babel (post-1996 orthography)]
+ [2024/12/10 v2.15 German support for babel (post-1996 orthography)]
\def\tmpa{ngermanb}
\ifx\CurrentOption\tmpa
\def\CurrentOption{ngerman}
diff --git a/Master/texmf-dist/tex/generic/babel-german/ngerman.ldf b/Master/texmf-dist/tex/generic/babel-german/ngerman.ldf
index be0607e64d7..5e7a3eca597 100644
--- a/Master/texmf-dist/tex/generic/babel-german/ngerman.ldf
+++ b/Master/texmf-dist/tex/generic/babel-german/ngerman.ldf
@@ -34,7 +34,7 @@
%% via: https://github.com/jspitz/babel-german
%%
\ProvidesLanguage{ngerman}
- [2024/01/19 v2.14 German support for babel (post-1996 orthography)]
+ [2024/12/10 v2.15 German support for babel (post-1996 orthography)]
\def\tmpa{ngermanb}
\ifx\CurrentOption\tmpa
\def\CurrentOption{ngerman}
diff --git a/Master/texmf-dist/tex/generic/babel-german/ngermanb.ldf b/Master/texmf-dist/tex/generic/babel-german/ngermanb.ldf
index 43994b571d9..b5a8619286b 100644
--- a/Master/texmf-dist/tex/generic/babel-german/ngermanb.ldf
+++ b/Master/texmf-dist/tex/generic/babel-german/ngermanb.ldf
@@ -34,7 +34,7 @@
%% via: https://github.com/jspitz/babel-german
%%
\ProvidesLanguage{ngermanb}
- [2024/01/19 v2.14 German support for babel (post-1996 orthography)]
+ [2024/12/10 v2.15 German support for babel (post-1996 orthography)]
\def\tmpa{ngermanb}
\ifx\CurrentOption\tmpa
\def\CurrentOption{ngerman}
@@ -136,15 +136,30 @@
\ifntoss\bbl@ntosstrue\else\bbl@ntossfalse\fi}
\fi
\newif\ifcapsz\capszfalse
+\newif\ifnocapsz\nocapszfalse
\newif\ifbbl@capsz\bbl@capszfalse
+\ifdefined\casing@ngerman
+ \let\save@casing@ngerman\casing@ngerman
+\else
+ \xdef\save@casing@naustrian{de}
+\fi
+\ifdefined\casing@naustrian
+ \let\save@casing@naustrian\casing@naustrian
+\else
+ \xdef\save@casing@naustrian{de}
+\fi
\ifx\bbl@mod@ngerman\@undefined\else
\@expandtwoargs\in@{,capsz,}{,\bbl@mod@ngerman,}
\ifin@
\capsztrue
\fi
+ \@expandtwoargs\in@{,nocapsz,}{,\bbl@mod@ngerman,}
+ \ifin@
+ \nocapsztrue
+ \fi
\addto\extrasngerman{%
\ifcapsz\bbl@capsztrue\bbl@csarg\xdef{casing@ngerman}{de-x-eszett}%
- \else\bbl@csarg\xdef{casing@ngerman}{de}\bbl@capszfalse\fi}
+ \else\ifnocapsz\bbl@csarg\xdef{casing@ngerman}{de}\fi\bbl@capszfalse\fi}
\fi
\newif\if@at@capsz\@at@capszfalse
\ifx\bbl@mod@naustrian\@undefined\else
@@ -152,9 +167,13 @@
\ifin@
\@at@capsztrue
\fi
+ \@expandtwoargs\in@{,nocapsz,}{,\bbl@mod@naustrian,}
+ \ifin@
+ \nocapsztrue
+ \fi
\addto\extrasnaustrian{%
\if@at@capsz\bbl@capsztrue\bbl@csarg\xdef{casing@naustrian}{de-x-eszett}%
- \else\bbl@csarg\xdef{casing@naustrian}{de}\bbl@capszfalse\fi}
+ \else\ifnocapsz\bbl@csarg\xdef{casing@naustrian}{de}\fi\bbl@capszfalse\fi}
\fi
\expandafter\addto\csname noextras\CurrentOption\endcsname{%
\bbl@deactivate{"}}
@@ -163,12 +182,12 @@
\fi
\ifx\CurrentOption\bbl@opt@ngerman
\ifbbl@capsz
- \addto\noextrasngerman{\bbl@capszfalse\bbl@csarg\xdef{casing@ngerman}{de}}
+ \addto\noextrasngerman{\bbl@capszfalse\bbl@csarg\xdef{casing@ngerman}{\save@casing@ngerman}}
\fi
\fi
\ifx\CurrentOption\bbl@opt@naustrian
\ifbbl@capsz
- \addto\noextrasnaustrian{\bbl@capszfalse\bbl@csarg\xdef{casing@naustrian}{de}}
+ \addto\noextrasnaustrian{\bbl@capszfalse\bbl@csarg\xdef{casing@naustrian}{\save@casing@naustrian}}
\fi
\fi
\expandafter\addto\csname extras\CurrentOption\endcsname{%
diff --git a/Master/texmf-dist/tex/generic/babel-german/nswissgerman.ldf b/Master/texmf-dist/tex/generic/babel-german/nswissgerman.ldf
index a8754bb1cfd..216c657174f 100644
--- a/Master/texmf-dist/tex/generic/babel-german/nswissgerman.ldf
+++ b/Master/texmf-dist/tex/generic/babel-german/nswissgerman.ldf
@@ -34,7 +34,7 @@
%% via: https://github.com/jspitz/babel-german
%%
\ProvidesLanguage{nswissgerman}
- [2024/01/19 v2.14 German support for babel (post-1996 orthography)]
+ [2024/12/10 v2.15 German support for babel (post-1996 orthography)]
\def\tmpa{ngermanb}
\ifx\CurrentOption\tmpa
\def\CurrentOption{ngerman}
diff --git a/Master/texmf-dist/tex/generic/babel-german/swissgerman.ldf b/Master/texmf-dist/tex/generic/babel-german/swissgerman.ldf
index e289a3710e3..1143a49e7fb 100644
--- a/Master/texmf-dist/tex/generic/babel-german/swissgerman.ldf
+++ b/Master/texmf-dist/tex/generic/babel-german/swissgerman.ldf
@@ -34,7 +34,7 @@
%% via: https://github.com/jspitz/babel-german
%%
\ProvidesLanguage{swissgerman}
- [2024/01/19 v2.14 German support for babel (pre-1996 orthography)]
+ [2024/12/10 v2.15 German support for babel (pre-1996 orthography)]
\def\tmpa{germanb}
\let\SaveCurrentOption\CurrentOption
\ifx\CurrentOption\tmpa
diff --git a/Master/texmf-dist/tex/generic/babel-italian/italian.ldf b/Master/texmf-dist/tex/generic/babel-italian/italian.ldf
index f9bd02c13b1..5cff95de4c7 100644
--- a/Master/texmf-dist/tex/generic/babel-italian/italian.ldf
+++ b/Master/texmf-dist/tex/generic/babel-italian/italian.ldf
@@ -12,7 +12,7 @@
%%
%% License information appended.
\ProvidesLanguage{italian}
- [2024/01/03 v.1.5.00 Italian support for the babel system]
+ [2024/10/10 v.1.5.01 Italian support for the babel system]
%%
%% Please report errors to: claudio dot beccari at gmail dot com
%%
@@ -195,7 +195,9 @@
}}
\DeclareMathSymbol{\virgoladecimale}{\mathord}{letters}{"3B}
\DeclareMathSymbol{\virgola}{\mathpunct}{letters}{"3B}
-{\catcode`,\active \gdef,{\futurelet\tempB\?}}
+
+{\catcode`,\active \protected\gdef,%
+ {\futurelet\tempB\it@tempcomma}}
\DeclareRobustCommand*\periodo[1]{\overline{#1}}
@@ -204,7 +206,7 @@
\if\@Cifra #1\relax\def\tempC{\virgoladecimale}%
\@break@tfor\fi}\tempC}
-\DeclareRobustCommand*\?{%
+\DeclareRobustCommand*\it@tempcomma{%
\ifx\tempB\@sptoken
\expandafter\@firstoftwo
\else
diff --git a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua
index 01e953123f3..371a4ce840c 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua
+++ b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua
@@ -7,7 +7,7 @@
-- babel.dtx (with options: `basic-r')
--
--
--- Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+-- Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
-- Copyright (C) 1989-2012 Johannes L. Braams and
-- any individual authors listed elsewhere in this file.
-- All rights reserved.
@@ -32,8 +32,6 @@
-- and covered by LPPL is defined by the unpacking scripts (with
-- extension |.ins|) which are part of the distribution.
--
-Babel = Babel or {}
-
Babel.bidi_enabled = true
require('babel-data-bidi.lua')
@@ -44,7 +42,7 @@ local ranges = Babel.ranges
local DIR = node.id("dir")
local function dir_mark(head, from, to, outer)
- dir = (outer == 'r') and 'TLT' or 'TRT' -- ie, reverse
+ dir = (outer == 'r') and 'TLT' or 'TRT' -- i.e., reverse
local d = node.new(DIR)
d.dir = '+' .. dir
node.insert_before(head, from, d)
diff --git a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua
index a903680a47f..81f88aa84be 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua
+++ b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua
@@ -7,7 +7,7 @@
-- babel.dtx (with options: `basic')
--
--
--- Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+-- Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
-- Copyright (C) 1989-2012 Johannes L. Braams and
-- any individual authors listed elsewhere in this file.
-- All rights reserved.
@@ -32,9 +32,7 @@
-- and covered by LPPL is defined by the unpacking scripts (with
-- extension |.ins|) which are part of the distribution.
--
-Babel = Babel or {}
-
--- eg, Babel.fontmap[1][<prefontid>]=<dirfontid>
+-- e.g., Babel.fontmap[1][<prefontid>]=<dirfontid>
Babel.fontmap = Babel.fontmap or {}
Babel.fontmap[0] = {} -- l
@@ -62,7 +60,7 @@ local GLYPH = node.id('glyph')
local function insert_implicit(head, state, outer)
local new_state = state
if state.sim and state.eim and state.sim ~= state.eim then
- dir = ((outer == 'r') and 'TLT' or 'TRT') -- ie, reverse
+ dir = ((outer == 'r') and 'TLT' or 'TRT') -- i.e., reverse
local d = node.new(DIR)
d.dir = '+' .. dir
node.insert_before(head, state.sim, d)
@@ -446,9 +444,7 @@ function Babel.bidi(head, ispar, hdir)
end
head = node.prev(head) or head
-
- -------------- FIX HYPERLINKS ----------------
-
+ --- FIXES ---
if has_hyperlink then
local flag, linking = 0, 0
for item in node.traverse(head) do
@@ -475,10 +471,23 @@ function Babel.bidi(head, ispar, hdir)
end
end
+ for item in node.traverse_id(10, head) do
+ local p = item
+ local flag = false
+ while p.prev and p.prev.id == 14 do
+ flag = true
+ p = p.prev
+ end
+ if flag then
+ node.insert_before(head, p, node.copy(item))
+ node.remove(head,item)
+ end
+ end
+
return head
end
-- Make sure anything is marked as 'bidi done' (including nodes inserted
--- after the babel algorithm).
+-- after the babel algorithm). 128 = 1000 0000.
function Babel.unset_atdir(head)
local ATDIR = Babel.attr_dir
for item in node.traverse(head) do
diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-buddhist.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-buddhist.tex
index 837d83ff400..533ab3eee1c 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-ca-buddhist.tex
+++ b/Master/texmf-dist/tex/generic/babel/babel-ca-buddhist.tex
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `ca-buddhist')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-chinese.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-chinese.tex
index cff847e02c4..be005c65e4d 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-ca-chinese.tex
+++ b/Master/texmf-dist/tex/generic/babel/babel-ca-chinese.tex
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `ca-chinese')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-coptic.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-coptic.tex
index 43d23a1479e..df61580aeb9 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-ca-coptic.tex
+++ b/Master/texmf-dist/tex/generic/babel/babel-ca-coptic.tex
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `ca-coptic')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-ethiopic.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-ethiopic.tex
index 95a8ef64656..4d1612ac82c 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-ca-ethiopic.tex
+++ b/Master/texmf-dist/tex/generic/babel/babel-ca-ethiopic.tex
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `ca-ethiopic')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex
index 88e7a997ba6..c0a2ad7ad86 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex
+++ b/Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `ca-hebrew')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
@@ -198,7 +198,7 @@
#2=\bbl@cntcommon}
\def\bbl@hebrdayspriormonths#1#2#3{%
{\countdef\tmpf= 14
- #3=\ifcase #1\relax
+ #3=\ifcase #1
0 \or
0 \or
30 \or
diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-islamic.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-islamic.tex
index 28c5dd9dc03..a2b0e493b33 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-ca-islamic.tex
+++ b/Master/texmf-dist/tex/generic/babel/babel-ca-islamic.tex
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `ca-islamic')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-persian.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-persian.tex
index f896cbeba63..64c7ec3cb08 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-ca-persian.tex
+++ b/Master/texmf-dist/tex/generic/babel/babel-ca-persian.tex
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `ca-persian')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
diff --git a/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua b/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua
index 65e251fa88d..35df97a572c 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua
+++ b/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua
@@ -7,7 +7,7 @@
-- babel.dtx (with options: `bididata')
--
--
--- Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+-- Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
-- Copyright (C) 1989-2012 Johannes L. Braams and
-- any individual authors listed elsewhere in this file.
-- All rights reserved.
@@ -34,8 +34,6 @@
--
-- Data from Unicode and ConTeXt
-Babel = Babel or {}
-
Babel.ranges = {
{0x0590, 0x05FF, 'r'},
{0x0600, 0x07BF, 'al'},
@@ -45,9 +43,15 @@ Babel.ranges = {
{0xFB1D, 0xFB4F, 'r'},
{0xFB50, 0xFDFF, 'al'},
{0xFE70, 0xFEFF, 'al'},
- {0x10800, 0x10C4F, 'r'},
- {0x1E800, 0x1E8DF, 'r'},
- {0x1E900, 0x1E95F, 'r'},
+ {0x10800, 0x10CFF, 'r'},
+ {0x10D00, 0x10D3F, 'al'},
+ {0x10D40, 0x10EBF, 'r'},
+ {0x10EC0, 0x10EFF, 'al'},
+ {0x10F00, 0x10F2F, 'r'},
+ {0x10F30, 0x10F6F, 'al'},
+ {0x10F70, 0x10FFF, 'r'},
+ {0x1E800, 0x1E95F, 'r'},
+ {0x1EE00, 0x1EEFF, 'al'},
{0x1F300, 0x1F9FF, 'on'}
}
@@ -4814,114 +4818,6 @@ Babel.characters = {
[0x10B3D]={d='on'},
[0x10B3E]={d='on'},
[0x10B3F]={d='on'},
- [0x10C80]={d='r'},
- [0x10C81]={d='r'},
- [0x10C82]={d='r'},
- [0x10C83]={d='r'},
- [0x10C84]={d='r'},
- [0x10C85]={d='r'},
- [0x10C86]={d='r'},
- [0x10C87]={d='r'},
- [0x10C88]={d='r'},
- [0x10C89]={d='r'},
- [0x10C8A]={d='r'},
- [0x10C8B]={d='r'},
- [0x10C8C]={d='r'},
- [0x10C8D]={d='r'},
- [0x10C8E]={d='r'},
- [0x10C8F]={d='r'},
- [0x10C90]={d='r'},
- [0x10C91]={d='r'},
- [0x10C92]={d='r'},
- [0x10C93]={d='r'},
- [0x10C94]={d='r'},
- [0x10C95]={d='r'},
- [0x10C96]={d='r'},
- [0x10C97]={d='r'},
- [0x10C98]={d='r'},
- [0x10C99]={d='r'},
- [0x10C9A]={d='r'},
- [0x10C9B]={d='r'},
- [0x10C9C]={d='r'},
- [0x10C9D]={d='r'},
- [0x10C9E]={d='r'},
- [0x10C9F]={d='r'},
- [0x10CA0]={d='r'},
- [0x10CA1]={d='r'},
- [0x10CA2]={d='r'},
- [0x10CA3]={d='r'},
- [0x10CA4]={d='r'},
- [0x10CA5]={d='r'},
- [0x10CA6]={d='r'},
- [0x10CA7]={d='r'},
- [0x10CA8]={d='r'},
- [0x10CA9]={d='r'},
- [0x10CAA]={d='r'},
- [0x10CAB]={d='r'},
- [0x10CAC]={d='r'},
- [0x10CAD]={d='r'},
- [0x10CAE]={d='r'},
- [0x10CAF]={d='r'},
- [0x10CB0]={d='r'},
- [0x10CB1]={d='r'},
- [0x10CB2]={d='r'},
- [0x10CC0]={d='r'},
- [0x10CC1]={d='r'},
- [0x10CC2]={d='r'},
- [0x10CC3]={d='r'},
- [0x10CC4]={d='r'},
- [0x10CC5]={d='r'},
- [0x10CC6]={d='r'},
- [0x10CC7]={d='r'},
- [0x10CC8]={d='r'},
- [0x10CC9]={d='r'},
- [0x10CCA]={d='r'},
- [0x10CCB]={d='r'},
- [0x10CCC]={d='r'},
- [0x10CCD]={d='r'},
- [0x10CCE]={d='r'},
- [0x10CCF]={d='r'},
- [0x10CD0]={d='r'},
- [0x10CD1]={d='r'},
- [0x10CD2]={d='r'},
- [0x10CD3]={d='r'},
- [0x10CD4]={d='r'},
- [0x10CD5]={d='r'},
- [0x10CD6]={d='r'},
- [0x10CD7]={d='r'},
- [0x10CD8]={d='r'},
- [0x10CD9]={d='r'},
- [0x10CDA]={d='r'},
- [0x10CDB]={d='r'},
- [0x10CDC]={d='r'},
- [0x10CDD]={d='r'},
- [0x10CDE]={d='r'},
- [0x10CDF]={d='r'},
- [0x10CE0]={d='r'},
- [0x10CE1]={d='r'},
- [0x10CE2]={d='r'},
- [0x10CE3]={d='r'},
- [0x10CE4]={d='r'},
- [0x10CE5]={d='r'},
- [0x10CE6]={d='r'},
- [0x10CE7]={d='r'},
- [0x10CE8]={d='r'},
- [0x10CE9]={d='r'},
- [0x10CEA]={d='r'},
- [0x10CEB]={d='r'},
- [0x10CEC]={d='r'},
- [0x10CED]={d='r'},
- [0x10CEE]={d='r'},
- [0x10CEF]={d='r'},
- [0x10CF0]={d='r'},
- [0x10CF1]={d='r'},
- [0x10CF2]={d='r'},
- [0x10CFA]={d='r'},
- [0x10CFB]={d='r'},
- [0x10CFC]={d='r'},
- [0x10CFD]={d='r'},
- [0x10CFE]={d='r'},
- [0x10CFF]={d='r'},
[0x10E60]={d='an'},
[0x10E61]={d='an'},
[0x10E62]={d='an'},
@@ -5628,147 +5524,6 @@ Babel.characters = {
[0x1E948]={d='nsm'},
[0x1E949]={d='nsm'},
[0x1E94A]={d='nsm'},
- [0x1EE00]={d='al'},
- [0x1EE01]={d='al'},
- [0x1EE02]={d='al'},
- [0x1EE03]={d='al'},
- [0x1EE05]={d='al'},
- [0x1EE06]={d='al'},
- [0x1EE07]={d='al'},
- [0x1EE08]={d='al'},
- [0x1EE09]={d='al'},
- [0x1EE0A]={d='al'},
- [0x1EE0B]={d='al'},
- [0x1EE0C]={d='al'},
- [0x1EE0D]={d='al'},
- [0x1EE0E]={d='al'},
- [0x1EE0F]={d='al'},
- [0x1EE10]={d='al'},
- [0x1EE11]={d='al'},
- [0x1EE12]={d='al'},
- [0x1EE13]={d='al'},
- [0x1EE14]={d='al'},
- [0x1EE15]={d='al'},
- [0x1EE16]={d='al'},
- [0x1EE17]={d='al'},
- [0x1EE18]={d='al'},
- [0x1EE19]={d='al'},
- [0x1EE1A]={d='al'},
- [0x1EE1B]={d='al'},
- [0x1EE1C]={d='al'},
- [0x1EE1D]={d='al'},
- [0x1EE1E]={d='al'},
- [0x1EE1F]={d='al'},
- [0x1EE21]={d='al'},
- [0x1EE22]={d='al'},
- [0x1EE24]={d='al'},
- [0x1EE27]={d='al'},
- [0x1EE29]={d='al'},
- [0x1EE2A]={d='al'},
- [0x1EE2B]={d='al'},
- [0x1EE2C]={d='al'},
- [0x1EE2D]={d='al'},
- [0x1EE2E]={d='al'},
- [0x1EE2F]={d='al'},
- [0x1EE30]={d='al'},
- [0x1EE31]={d='al'},
- [0x1EE32]={d='al'},
- [0x1EE34]={d='al'},
- [0x1EE35]={d='al'},
- [0x1EE36]={d='al'},
- [0x1EE37]={d='al'},
- [0x1EE39]={d='al'},
- [0x1EE3B]={d='al'},
- [0x1EE42]={d='al'},
- [0x1EE47]={d='al'},
- [0x1EE49]={d='al'},
- [0x1EE4B]={d='al'},
- [0x1EE4D]={d='al'},
- [0x1EE4E]={d='al'},
- [0x1EE4F]={d='al'},
- [0x1EE51]={d='al'},
- [0x1EE52]={d='al'},
- [0x1EE54]={d='al'},
- [0x1EE57]={d='al'},
- [0x1EE59]={d='al'},
- [0x1EE5B]={d='al'},
- [0x1EE5D]={d='al'},
- [0x1EE5F]={d='al'},
- [0x1EE61]={d='al'},
- [0x1EE62]={d='al'},
- [0x1EE64]={d='al'},
- [0x1EE67]={d='al'},
- [0x1EE68]={d='al'},
- [0x1EE69]={d='al'},
- [0x1EE6A]={d='al'},
- [0x1EE6C]={d='al'},
- [0x1EE6D]={d='al'},
- [0x1EE6E]={d='al'},
- [0x1EE6F]={d='al'},
- [0x1EE70]={d='al'},
- [0x1EE71]={d='al'},
- [0x1EE72]={d='al'},
- [0x1EE74]={d='al'},
- [0x1EE75]={d='al'},
- [0x1EE76]={d='al'},
- [0x1EE77]={d='al'},
- [0x1EE79]={d='al'},
- [0x1EE7A]={d='al'},
- [0x1EE7B]={d='al'},
- [0x1EE7C]={d='al'},
- [0x1EE7E]={d='al'},
- [0x1EE80]={d='al'},
- [0x1EE81]={d='al'},
- [0x1EE82]={d='al'},
- [0x1EE83]={d='al'},
- [0x1EE84]={d='al'},
- [0x1EE85]={d='al'},
- [0x1EE86]={d='al'},
- [0x1EE87]={d='al'},
- [0x1EE88]={d='al'},
- [0x1EE89]={d='al'},
- [0x1EE8B]={d='al'},
- [0x1EE8C]={d='al'},
- [0x1EE8D]={d='al'},
- [0x1EE8E]={d='al'},
- [0x1EE8F]={d='al'},
- [0x1EE90]={d='al'},
- [0x1EE91]={d='al'},
- [0x1EE92]={d='al'},
- [0x1EE93]={d='al'},
- [0x1EE94]={d='al'},
- [0x1EE95]={d='al'},
- [0x1EE96]={d='al'},
- [0x1EE97]={d='al'},
- [0x1EE98]={d='al'},
- [0x1EE99]={d='al'},
- [0x1EE9A]={d='al'},
- [0x1EE9B]={d='al'},
- [0x1EEA1]={d='al'},
- [0x1EEA2]={d='al'},
- [0x1EEA3]={d='al'},
- [0x1EEA5]={d='al'},
- [0x1EEA6]={d='al'},
- [0x1EEA7]={d='al'},
- [0x1EEA8]={d='al'},
- [0x1EEA9]={d='al'},
- [0x1EEAB]={d='al'},
- [0x1EEAC]={d='al'},
- [0x1EEAD]={d='al'},
- [0x1EEAE]={d='al'},
- [0x1EEAF]={d='al'},
- [0x1EEB0]={d='al'},
- [0x1EEB1]={d='al'},
- [0x1EEB2]={d='al'},
- [0x1EEB3]={d='al'},
- [0x1EEB4]={d='al'},
- [0x1EEB5]={d='al'},
- [0x1EEB6]={d='al'},
- [0x1EEB7]={d='al'},
- [0x1EEB8]={d='al'},
- [0x1EEB9]={d='al'},
- [0x1EEBA]={d='al'},
- [0x1EEBB]={d='al'},
[0x1EEF0]={d='on'},
[0x1EEF1]={d='on'},
[0x1F000]={d='on'},
diff --git a/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua b/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua
index f175090b6f5..7cf177f8d94 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua
+++ b/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua
@@ -7,7 +7,7 @@
-- babel.dtx (with options: `cjkdata')
--
--
--- Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+-- Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
-- Copyright (C) 1989-2012 Johannes L. Braams and
-- any individual authors listed elsewhere in this file.
-- All rights reserved.
@@ -32,8 +32,6 @@
-- and covered by LPPL is defined by the unpacking scripts (with
-- extension |.ins|) which are part of the distribution.
--
-Babel = Babel or {}
-
Babel.cjk_characters = {
[0x0021]={c='ex'},
[0x0022]={c='qu'},
diff --git a/Master/texmf-dist/tex/generic/babel/babel-transforms.lua b/Master/texmf-dist/tex/generic/babel/babel-transforms.lua
index db86cda98c0..678f30ff2cf 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-transforms.lua
+++ b/Master/texmf-dist/tex/generic/babel/babel-transforms.lua
@@ -7,7 +7,7 @@
-- babel.dtx (with options: `transforms')
--
--
--- Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+-- Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
-- Copyright (C) 1989-2012 Johannes L. Braams and
-- any individual authors listed elsewhere in this file.
-- All rights reserved.
@@ -37,29 +37,18 @@ Babel.linebreaking.replacements[0] = {} -- pre
Babel.linebreaking.replacements[1] = {} -- post
function Babel.tovalue(v)
- if type(v) == 'string' then
- return loadstring('return ' .. v)()
+ if type(v) == 'table' then
+ return Babel.locale_props[v[1]].vars[v[2]] or v[3]
else
return v
end
end
--- Discretionaries contain strings as nodes
-function Babel.str_to_nodes(fn, matches, base)
- local n, head, last
- if fn == nil then return nil end
- for s in string.utfvalues(fn(matches)) do
- if base.id == 7 then
- base = base.replace
- end
- n = node.copy(base)
- n.char = s
- if not head then
- head = n
- else
- last.next = n
- end
- last = n
+Babel.attr_hboxed = luatexbase.registernumber'bbl@attr@hboxed'
+
+function Babel.set_hboxed(head, gc)
+ for item in node.traverse(head) do
+ node.set_attribute(item, Babel.attr_hboxed, 1)
end
return head
end
@@ -96,7 +85,11 @@ Babel.fetch_subtext[0] = function(head)
if Babel.ignore_pre_char(item) then
word_string = word_string .. Babel.us_char
else
- word_string = word_string .. unicode.utf8.char(item.char)
+ if node.has_attribute(item, Babel.attr_hboxed) then
+ word_string = word_string .. Babel.us_char
+ else
+ word_string = word_string .. unicode.utf8.char(item.char)
+ end
end
word_nodes[#word_nodes+1] = item
else
@@ -104,7 +97,11 @@ Babel.fetch_subtext[0] = function(head)
end
elseif item.id == 12 and item.subtype == 13 then
- word_string = word_string .. ' '
+ if node.has_attribute(item, Babel.attr_hboxed) then
+ word_string = word_string .. Babel.us_char
+ else
+ word_string = word_string .. ' '
+ end
word_nodes[#word_nodes+1] = item
-- Ignore leading unrecognized nodes, too.
@@ -145,7 +142,11 @@ Babel.fetch_subtext[1] = function(head)
if item.lang == lang or lang == nil then
if (item.char ~= 124) and (item.char ~= 61) then -- not =, not |
lang = lang or item.lang
- word_string = word_string .. unicode.utf8.char(item.char)
+ if node.has_attribute(item, Babel.attr_hboxed) then
+ word_string = word_string .. Babel.us_char
+ else
+ word_string = word_string .. unicode.utf8.char(item.char)
+ end
word_nodes[#word_nodes+1] = item
end
else
@@ -153,11 +154,19 @@ Babel.fetch_subtext[1] = function(head)
end
elseif item.id == 7 and item.subtype == 2 then
- word_string = word_string .. '='
+ if node.has_attribute(item, Babel.attr_hboxed) then
+ word_string = word_string .. Babel.us_char
+ else
+ word_string = word_string .. '='
+ end
word_nodes[#word_nodes+1] = item
elseif item.id == 7 and item.subtype == 3 then
- word_string = word_string .. '|'
+ if node.has_attribute(item, Babel.attr_hboxed) then
+ word_string = word_string .. Babel.us_char
+ else
+ word_string = word_string .. '|'
+ end
word_nodes[#word_nodes+1] = item
-- (1) Go to next word if nothing was found, and (2) implicitly
@@ -194,6 +203,7 @@ Babel.us_char = string.char(31)
function Babel.hyphenate_replace(head, mode)
local u = unicode.utf8
local lbkr = Babel.linebreaking.replacements[mode]
+ local tovalue = Babel.tovalue
local word_head = head
@@ -397,9 +407,9 @@ function Babel.hyphenate_replace(head, mode)
d.replace = Babel.str_to_nodes(crep.no, matches, item_base)
d.attr = item_base.attr
if crep.pre == nil then -- TeXbook p96
- d.penalty = crep.penalty or tex.hyphenpenalty
+ d.penalty = tovalue(crep.penalty) or tex.hyphenpenalty
else
- d.penalty = crep.penalty or tex.exhyphenpenalty
+ d.penalty = tovalue(crep.penalty) or tex.exhyphenpenalty
end
placeholder = '|'
head, new = node.insert_before(head, item, d)
@@ -410,16 +420,16 @@ function Babel.hyphenate_replace(head, mode)
elseif crep and crep.penalty then
d = node.new(14, 0) -- (penalty, userpenalty)
d.attr = item_base.attr
- d.penalty = crep.penalty
+ d.penalty = tovalue(crep.penalty)
head, new = node.insert_before(head, item, d)
elseif crep and crep.space then
-- 655360 = 10 pt = 10 * 65536 sp
d = node.new(12, 13) -- (glue, spaceskip)
local quad = font.getfont(item_base.font).size or 655360
- node.setglue(d, crep.space[1] * quad,
- crep.space[2] * quad,
- crep.space[3] * quad)
+ node.setglue(d, tovalue(crep.space[1]) * quad,
+ tovalue(crep.space[2]) * quad,
+ tovalue(crep.space[3]) * quad)
if mode == 0 then
placeholder = ' '
end
@@ -429,18 +439,18 @@ function Babel.hyphenate_replace(head, mode)
-- 655360 = 10 pt = 10 * 65536 sp
d = node.new(2, 3) -- (rule, empty) = \no*rule
local quad = font.getfont(item_base.font).size or 655360
- d.width = crep.norule[1] * quad
- d.height = crep.norule[2] * quad
- d.depth = crep.norule[3] * quad
+ d.width = tovalue(crep.norule[1]) * quad
+ d.height = tovalue(crep.norule[2]) * quad
+ d.depth = tovalue(crep.norule[3]) * quad
head, new = node.insert_before(head, item, d)
elseif crep and crep.spacefactor then
d = node.new(12, 13) -- (glue, spaceskip)
local base_font = font.getfont(item_base.font)
node.setglue(d,
- crep.spacefactor[1] * base_font.parameters['space'],
- crep.spacefactor[2] * base_font.parameters['space_stretch'],
- crep.spacefactor[3] * base_font.parameters['space_shrink'])
+ tovalue(crep.spacefactor[1]) * base_font.parameters['space'],
+ tovalue(crep.spacefactor[2]) * base_font.parameters['space_stretch'],
+ tovalue(crep.spacefactor[3]) * base_font.parameters['space_shrink'])
if mode == 0 then
placeholder = ' '
end
@@ -453,7 +463,7 @@ function Babel.hyphenate_replace(head, mode)
d = node.new(13, 1) -- (kern, user)
local quad = font.getfont(item_base.font).size or 655360
d.attr = item_base.attr
- d.kern = crep.kern * quad
+ d.kern = tovalue(crep.kern) * quad
head, new = node.insert_before(head, item, d)
elseif crep and crep.node then
@@ -461,7 +471,7 @@ function Babel.hyphenate_replace(head, mode)
d.attr = item_base.attr
head, new = node.insert_before(head, item, d)
- end -- ie replacement cases
+ end -- i.e., replacement cases
-- Shared by disc, space(factor), kern, node and penalty.
if sc == 1 then
diff --git a/Master/texmf-dist/tex/generic/babel/babel.def b/Master/texmf-dist/tex/generic/babel/babel.def
index 8747b15ab21..3d4a4a0630b 100644
--- a/Master/texmf-dist/tex/generic/babel/babel.def
+++ b/Master/texmf-dist/tex/generic/babel/babel.def
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `core')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
@@ -39,8 +39,8 @@
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{babel.def}[2024/08/29 v24.9 Babel common definitions]
-\ifx\AtBeginDocument\@undefined % TODO. change test.
+\ProvidesFile{babel.def}[2025/01/25 v25.2 Babel common definitions]
+\ifx\AtBeginDocument\@undefined
\def\@empty{}
\def\loadlocalcfg#1{%
\openin0#1.cfg
@@ -595,8 +595,8 @@
\toks@\expandafter{\bbl@tempc#3}%
\expandafter\edef\csname extras\languagename\endcsname{\the\toks@}%
\fi}
-\def\bbl@version{24.9}
-\def\bbl@date{2024/08/29}
+\def\bbl@version{25.2}
+\def\bbl@date{2025/01/25}
\ifx\language\@undefined
\csname newcount\endcsname\language
\fi
@@ -717,14 +717,13 @@
\bbl@ifunset{bbl@id@@\languagename}%
{\count@\bbl@id@last\relax
\advance\count@\@ne
- \bbl@csarg\chardef{id@@\languagename}\count@
+ \global\bbl@csarg\chardef{id@@\languagename}\count@
\edef\bbl@id@last{\the\count@}%
\ifcase\bbl@engine\or
\directlua{
- Babel = Babel or {}
- Babel.locale_props = Babel.locale_props or {}
Babel.locale_props[\bbl@id@last] = {}
Babel.locale_props[\bbl@id@last].name = '\languagename'
+ Babel.locale_props[\bbl@id@last].vars = {}
}%
\fi}%
{}%
@@ -737,30 +736,8 @@
\let\endselectlanguage\relax
\def\BabelContentsFiles{toc,lof,lot}
\def\bbl@set@language#1{% from selectlanguage, pop@
- % The old buggy way. Preserved for compatibility.
- \edef\languagename{%
- \ifnum\escapechar=\expandafter`\string#1\@empty
- \else\string#1\@empty\fi}%
- \ifcat\relax\noexpand#1%
- \expandafter\ifx\csname date\languagename\endcsname\relax
- \edef\languagename{#1}%
- \let\localename\languagename
- \else
- \bbl@info{Using '\string\language' instead of 'language' is\\%
- deprecated. If what you want is to use a\\%
- macro containing the actual locale, make\\%
- sure it does not not match any language.\\%
- Reported}%
- \ifx\scantokens\@undefined
- \def\localename{??}%
- \else
- \scantokens\expandafter{\expandafter
- \def\expandafter\localename\expandafter{\languagename}}%
- \fi
- \fi
- \else
- \def\localename{#1}% This one has the correct catcodes
- \fi
+ % The old buggy way. Preserved for compatibility, but simplified
+ \edef\languagename{\expandafter\string#1\@empty}%
\select@language{\languagename}%
% write to auxs
\expandafter\ifx\csname date\languagename\endcsname\relax\else
@@ -775,18 +752,21 @@
\fi}
\let\bbl@restorelastskip\relax
\let\bbl@savelastskip\relax
-\newif\ifbbl@bcpallowed
-\bbl@bcpallowedfalse
-\def\select@language#1{% from set@, babel@aux
+\def\select@language#1{% from set@, babel@aux, babel@toc
\ifx\bbl@selectorname\@empty
\def\bbl@selectorname{select}%
- % set hymap
\fi
+ % set hymap
\ifnum\bbl@hymapsel=\@cclv\chardef\bbl@hymapsel4\relax\fi
- % set name
+ % set name (when coming from babel@aux)
\edef\languagename{#1}%
\bbl@fixname\languagename
- % TODO. name@map must be here?
+ % define \localename when coming from set@, with a trick
+ \ifx\scantokens\@undefined
+ \def\localename{??}%
+ \else
+ \bbl@exp{\\\scantokens{\def\\\localename{\languagename}\\\noexpand}\relax}%
+ \fi
\bbl@provide@locale
\bbl@iflanguage\languagename{%
\let\bbl@select@type\z@
@@ -794,7 +774,7 @@
\def\babel@aux#1#2{%
\select@language{#1}%
\bbl@foreach\BabelContentsFiles{% \relax -> don't assume vertical mode
- \@writefile{##1}{\babel@toc{#1}{#2}\relax}}}% TODO - plain?
+ \@writefile{##1}{\babel@toc{#1}{#2}\relax}}}%
\def\babel@toc#1#2{%
\select@language{#1}}
\newif\ifbbl@usedategroup
@@ -861,8 +841,14 @@
\bbl@xin@{/u}{/\bbl@tempa}%
\ifin@\else\bbl@xin@{/e}{/\bbl@tempa}\fi % elongated forms
\ifin@\else\bbl@xin@{/k}{/\bbl@tempa}\fi % only kashida
- \ifin@\else\bbl@xin@{/p}{/\bbl@tempa}\fi % padding (eg, Tibetan)
+ \ifin@\else\bbl@xin@{/p}{/\bbl@tempa}\fi % padding (e.g., Tibetan)
\ifin@\else\bbl@xin@{/v}{/\bbl@tempa}\fi % variable font
+ % hyphenation - save mins
+ \babel@savevariable\lefthyphenmin
+ \babel@savevariable\righthyphenmin
+ \ifnum\bbl@engine=\@ne
+ \babel@savevariable\hyphenationmin
+ \fi
\ifin@
% unhyphenated/kashida/elongated/padding = allow stretching
\language\l@unhyphenated
@@ -874,16 +860,18 @@
% other = select patterns
\bbl@patterns{#1}%
\fi
- % hyphenation - mins
- \babel@savevariable\lefthyphenmin
- \babel@savevariable\righthyphenmin
+ % hyphenation - set mins
\expandafter\ifx\csname #1hyphenmins\endcsname\relax
\set@hyphenmins\tw@\thr@@\relax
+ \@nameuse{bbl@hyphenmins@}%
\else
\expandafter\expandafter\expandafter\set@hyphenmins
\csname #1hyphenmins\endcsname\relax
\fi
- % reset selector name
+ \@nameuse{bbl@hyphenmins@}%
+ \@nameuse{bbl@hyphenmins@\languagename}%
+ \@nameuse{bbl@hyphenatmin@}%
+ \@nameuse{bbl@hyphenatmin@\languagename}%
\let\bbl@selectorname\@empty}
\long\def\otherlanguage#1{%
\def\bbl@selectorname{other}%
@@ -938,6 +926,7 @@
\bbl@usedategroupfalse
\fi
\bbl@fixname\languagename
+ \let\localename\languagename
% TODO. name@map here?
\bbl@provide@locale
\bbl@iflanguage\languagename{%
@@ -1056,13 +1045,91 @@
preloaded for \bbl@nulllanguage\space instead}}
\let\bbl@usehooks\@gobbletwo
\ifx\bbl@onlyswitch\@empty\endinput\fi
- % Here ended switch.def
+\bbl@trace{Defining babelensure}
+\newcommand\babelensure[2][]{%
+ \AddBabelHook{babel-ensure}{afterextras}{%
+ \ifcase\bbl@select@type
+ \bbl@cl{e}%
+ \fi}%
+ \begingroup
+ \let\bbl@ens@include\@empty
+ \let\bbl@ens@exclude\@empty
+ \def\bbl@ens@fontenc{\relax}%
+ \def\bbl@tempb##1{%
+ \ifx\@empty##1\else\noexpand##1\expandafter\bbl@tempb\fi}%
+ \edef\bbl@tempa{\bbl@tempb#1\@empty}%
+ \def\bbl@tempb##1=##2\@@{\@namedef{bbl@ens@##1}{##2}}%
+ \bbl@foreach\bbl@tempa{\bbl@tempb##1\@@}%
+ \def\bbl@tempc{\bbl@ensure}%
+ \expandafter\bbl@add\expandafter\bbl@tempc\expandafter{%
+ \expandafter{\bbl@ens@include}}%
+ \expandafter\bbl@add\expandafter\bbl@tempc\expandafter{%
+ \expandafter{\bbl@ens@exclude}}%
+ \toks@\expandafter{\bbl@tempc}%
+ \bbl@exp{%
+ \endgroup
+ \def\<bbl@e@#2>{\the\toks@{\bbl@ens@fontenc}}}}
+\def\bbl@ensure#1#2#3{% 1: include 2: exclude 3: fontenc
+ \def\bbl@tempb##1{% elt for (excluding) \bbl@captionslist list
+ \ifx##1\@undefined % 3.32 - Don't assume the macro exists
+ \edef##1{\noexpand\bbl@nocaption
+ {\bbl@stripslash##1}{\languagename\bbl@stripslash##1}}%
+ \fi
+ \ifx##1\@empty\else
+ \in@{##1}{#2}%
+ \ifin@\else
+ \bbl@ifunset{bbl@ensure@\languagename}%
+ {\bbl@exp{%
+ \\\DeclareRobustCommand\<bbl@ensure@\languagename>[1]{%
+ \\\foreignlanguage{\languagename}%
+ {\ifx\relax#3\else
+ \\\fontencoding{#3}\\\selectfont
+ \fi
+ ########1}}}}%
+ {}%
+ \toks@\expandafter{##1}%
+ \edef##1{%
+ \bbl@csarg\noexpand{ensure@\languagename}%
+ {\the\toks@}}%
+ \fi
+ \expandafter\bbl@tempb
+ \fi}%
+ \expandafter\bbl@tempb\bbl@captionslist\today\@empty
+ \def\bbl@tempa##1{% elt for include list
+ \ifx##1\@empty\else
+ \bbl@csarg\in@{ensure@\languagename\expandafter}\expandafter{##1}%
+ \ifin@\else
+ \bbl@tempb##1\@empty
+ \fi
+ \expandafter\bbl@tempa
+ \fi}%
+ \bbl@tempa#1\@empty}
+\def\bbl@captionslist{%
+ \prefacename\refname\abstractname\bibname\chaptername\appendixname
+ \contentsname\listfigurename\listtablename\indexname\figurename
+ \tablename\partname\enclname\ccname\headtoname\pagename\seename
+ \alsoname\proofname\glossaryname}
+\bbl@trace{Short tags}
+\newcommand\babeltags[1]{%
+ \edef\bbl@tempa{\zap@space#1 \@empty}%
+ \def\bbl@tempb##1=##2\@@{%
+ \edef\bbl@tempc{%
+ \noexpand\newcommand
+ \expandafter\noexpand\csname ##1\endcsname{%
+ \noexpand\protect
+ \expandafter\noexpand\csname otherlanguage*\endcsname{##2}}
+ \noexpand\newcommand
+ \expandafter\noexpand\csname text##1\endcsname{%
+ \noexpand\foreignlanguage{##2}}}
+ \bbl@tempc}%
+ \bbl@for\bbl@tempa\bbl@tempa{%
+ \expandafter\bbl@tempb\bbl@tempa\@@}}
+\bbl@trace{Compatibility with language.def}
\ifx\directlua\@undefined\else
\ifx\bbl@luapatterns\@undefined
\input luababel.def
\fi
\fi
-\bbl@trace{Compatibility with language.def}
\ifx\bbl@languages\@undefined
\ifx\directlua\@undefined
\openin1 = language.def % TODO. Remove hardcoded number
@@ -1095,28 +1162,6 @@
\xdef#1{\the\toks@}}%
\fi
\fi}
-\def\bbl@withactive#1#2{%
- \begingroup
- \lccode`~=`#2\relax
- \lowercase{\endgroup#1~}}
-\def\bbl@redefine#1{%
- \edef\bbl@tempa{\bbl@stripslash#1}%
- \expandafter\let\csname org@\bbl@tempa\endcsname#1%
- \expandafter\def\csname\bbl@tempa\endcsname}
-\@onlypreamble\bbl@redefine
-\def\bbl@redefine@long#1{%
- \edef\bbl@tempa{\bbl@stripslash#1}%
- \expandafter\let\csname org@\bbl@tempa\endcsname#1%
- \long\expandafter\def\csname\bbl@tempa\endcsname}
-\@onlypreamble\bbl@redefine@long
-\def\bbl@redefinerobust#1{%
- \edef\bbl@tempa{\bbl@stripslash#1}%
- \bbl@ifunset{\bbl@tempa\space}%
- {\expandafter\let\csname org@\bbl@tempa\endcsname#1%
- \bbl@exp{\def\\#1{\\\protect\<\bbl@tempa\space>}}}%
- {\bbl@exp{\let\<org@\bbl@tempa>\<\bbl@tempa\space>}}%
- \@namedef{\bbl@tempa\space}}
-\@onlypreamble\bbl@redefinerobust
\bbl@trace{Hooks}
\newcommand\AddBabelHook[3][]{%
\bbl@ifunset{bbl@hk@#2}{\EnableBabelHook{#2}}{}%
@@ -1150,70 +1195,8 @@
\def\bbl@tempa#1=#2\@@{\NewHook{babel/#1}}
\bbl@foreach\bbl@evargs{\bbl@tempa#1\@@}
\fi
-\bbl@trace{Defining babelensure}
-\newcommand\babelensure[2][]{%
- \AddBabelHook{babel-ensure}{afterextras}{%
- \ifcase\bbl@select@type
- \bbl@cl{e}%
- \fi}%
- \begingroup
- \let\bbl@ens@include\@empty
- \let\bbl@ens@exclude\@empty
- \def\bbl@ens@fontenc{\relax}%
- \def\bbl@tempb##1{%
- \ifx\@empty##1\else\noexpand##1\expandafter\bbl@tempb\fi}%
- \edef\bbl@tempa{\bbl@tempb#1\@empty}%
- \def\bbl@tempb##1=##2\@@{\@namedef{bbl@ens@##1}{##2}}%
- \bbl@foreach\bbl@tempa{\bbl@tempb##1\@@}%
- \def\bbl@tempc{\bbl@ensure}%
- \expandafter\bbl@add\expandafter\bbl@tempc\expandafter{%
- \expandafter{\bbl@ens@include}}%
- \expandafter\bbl@add\expandafter\bbl@tempc\expandafter{%
- \expandafter{\bbl@ens@exclude}}%
- \toks@\expandafter{\bbl@tempc}%
- \bbl@exp{%
- \endgroup
- \def\<bbl@e@#2>{\the\toks@{\bbl@ens@fontenc}}}}
-\def\bbl@ensure#1#2#3{% 1: include 2: exclude 3: fontenc
- \def\bbl@tempb##1{% elt for (excluding) \bbl@captionslist list
- \ifx##1\@undefined % 3.32 - Don't assume the macro exists
- \edef##1{\noexpand\bbl@nocaption
- {\bbl@stripslash##1}{\languagename\bbl@stripslash##1}}%
- \fi
- \ifx##1\@empty\else
- \in@{##1}{#2}%
- \ifin@\else
- \bbl@ifunset{bbl@ensure@\languagename}%
- {\bbl@exp{%
- \\\DeclareRobustCommand\<bbl@ensure@\languagename>[1]{%
- \\\foreignlanguage{\languagename}%
- {\ifx\relax#3\else
- \\\fontencoding{#3}\\\selectfont
- \fi
- ########1}}}}%
- {}%
- \toks@\expandafter{##1}%
- \edef##1{%
- \bbl@csarg\noexpand{ensure@\languagename}%
- {\the\toks@}}%
- \fi
- \expandafter\bbl@tempb
- \fi}%
- \expandafter\bbl@tempb\bbl@captionslist\today\@empty
- \def\bbl@tempa##1{% elt for include list
- \ifx##1\@empty\else
- \bbl@csarg\in@{ensure@\languagename\expandafter}\expandafter{##1}%
- \ifin@\else
- \bbl@tempb##1\@empty
- \fi
- \expandafter\bbl@tempa
- \fi}%
- \bbl@tempa#1\@empty}
-\def\bbl@captionslist{%
- \prefacename\refname\abstractname\bibname\chaptername\appendixname
- \contentsname\listfigurename\listtablename\indexname\figurename
- \tablename\partname\enclname\ccname\headtoname\pagename\seename
- \alsoname\proofname\glossaryname}
+\providecommand\PassOptionsToLocale[2]{%
+ \bbl@csarg\bbl@add@list{passto@#2}{#1}}
\bbl@trace{Macros for setting language files up}
\def\bbl@ldfinit{%
\let\bbl@screset\@empty
@@ -1246,7 +1229,7 @@
\catcode`\@=\atcatcode \let\atcatcode\relax
\catcode`\==\eqcatcode \let\eqcatcode\relax
\endinput}
-\def\bbl@afterldf#1{% TODO. Merge into the next macro? Unused elsewhere
+\def\bbl@afterldf#1{%
\bbl@afterlang
\let\bbl@afterlang\relax
\let\BabelModifiers\relax
@@ -1262,7 +1245,9 @@
\@onlypreamble\ldf@finish
\def\main@language#1{%
\def\bbl@main@language{#1}%
- \let\languagename\bbl@main@language % TODO. Set localename
+ \let\languagename\bbl@main@language
+ \let\localename\bbl@main@language
+ \let\mainlocalename\bbl@main@language
\bbl@id@assign
\bbl@patterns{\languagename}}
\def\bbl@beforestart{%
@@ -1286,7 +1271,7 @@
\global\let\babel@aux\@gobbletwo % Also as flag
\fi}
\ifcase\bbl@engine\or
- \AtBeginDocument{\pagedir\bodydir} % TODO - a better place
+ \AtBeginDocument{\pagedir\bodydir}
\fi
\def\select@language@x#1{%
\ifcase\bbl@select@type
@@ -1295,6 +1280,10 @@
\select@language{#1}%
\fi}
\bbl@trace{Shorhands}
+\def\bbl@withactive#1#2{%
+ \begingroup
+ \lccode`~=`#2\relax
+ \lowercase{\endgroup#1~}}
\def\bbl@add@special#1{% 1:a macro like \", \?, etc.
\bbl@add\dospecials{\do#1}% test @sanitize = \relax, for back. compat.
\bbl@ifunset{@sanitize}{}{\bbl@add\@sanitize{\@makeother#1}}%
@@ -1309,18 +1298,6 @@
\endgroup
\fi
\fi}
-\def\bbl@remove@special#1{%
- \begingroup
- \def\x##1##2{\ifnum`#1=`##2\noexpand\@empty
- \else\noexpand##1\noexpand##2\fi}%
- \def\do{\x\do}%
- \def\@makeother{\x\@makeother}%
- \edef\x{\endgroup
- \def\noexpand\dospecials{\dospecials}%
- \expandafter\ifx\csname @sanitize\endcsname\relax\else
- \def\noexpand\@sanitize{\@sanitize}%
- \fi}%
- \x}
\def\bbl@active@def#1#2#3#4{%
\@namedef{#3#1}{%
\expandafter\ifx\csname#2@sh@#1@\endcsname\relax
@@ -1423,7 +1400,7 @@
\bbl@afterfi\csname#1@sh@#2@sel\endcsname
\fi}
\begingroup
-\bbl@ifunset{ifincsname}% TODO. Ugly. Correct? Only Plain?
+\bbl@ifunset{ifincsname}%
{\gdef\active@prefix#1{%
\ifx\protect\@typeset@protect
\else
@@ -1464,7 +1441,6 @@
\csname bbl@normal@\string#1\endcsname}
\def\bbl@firstcs#1#2{\csname#1\endcsname}
\def\bbl@scndcs#1#2{\csname#2\endcsname}
-
\def\babel@texpdf#1#2#3#4{%
\ifx\texorpdfstring\@undefined
\textormath{#1}{#3}%
@@ -1505,7 +1481,7 @@
\expandafter\@firstoftwo
\fi}
\def\user@group{user}
-\def\language@group{english} % TODO. I don't like defaults
+\def\language@group{english}
\def\system@group{system}
\def\useshorthands{%
\@ifstar\bbl@usesh@s{\bbl@usesh@x{}}}
@@ -1720,6 +1696,24 @@
\def\babel@savevariable#1{%
\toks@\expandafter{\originalTeX #1=}%
\bbl@exp{\def\\\originalTeX{\the\toks@\the#1\relax}}}
+\def\bbl@redefine#1{%
+ \edef\bbl@tempa{\bbl@stripslash#1}%
+ \expandafter\let\csname org@\bbl@tempa\endcsname#1%
+ \expandafter\def\csname\bbl@tempa\endcsname}
+\@onlypreamble\bbl@redefine
+\def\bbl@redefine@long#1{%
+ \edef\bbl@tempa{\bbl@stripslash#1}%
+ \expandafter\let\csname org@\bbl@tempa\endcsname#1%
+ \long\expandafter\def\csname\bbl@tempa\endcsname}
+\@onlypreamble\bbl@redefine@long
+\def\bbl@redefinerobust#1{%
+ \edef\bbl@tempa{\bbl@stripslash#1}%
+ \bbl@ifunset{\bbl@tempa\space}%
+ {\expandafter\let\csname org@\bbl@tempa\endcsname#1%
+ \bbl@exp{\def\\#1{\\\protect\<\bbl@tempa\space>}}}%
+ {\bbl@exp{\let\<org@\bbl@tempa>\<\bbl@tempa\space>}}%
+ \@namedef{\bbl@tempa\space}}
+\@onlypreamble\bbl@redefinerobust
\def\bbl@frenchspacing{%
\ifnum\the\sfcode`\.=\@m
\let\bbl@nonfrenchspacing\relax
@@ -1756,21 +1750,6 @@
\fi}%
\bbl@fs@chars
\fi\fi\fi}
-\bbl@trace{Short tags}
-\def\babeltags#1{%
- \edef\bbl@tempa{\zap@space#1 \@empty}%
- \def\bbl@tempb##1=##2\@@{%
- \edef\bbl@tempc{%
- \noexpand\newcommand
- \expandafter\noexpand\csname ##1\endcsname{%
- \noexpand\protect
- \expandafter\noexpand\csname otherlanguage*\endcsname{##2}}
- \noexpand\newcommand
- \expandafter\noexpand\csname text##1\endcsname{%
- \noexpand\foreignlanguage{##2}}}
- \bbl@tempc}%
- \bbl@for\bbl@tempa\bbl@tempa{%
- \expandafter\bbl@tempb\bbl@tempa\@@}}
\bbl@trace{Hyphens}
\@onlypreamble\babelhyphenation
\AtEndOfPackage{%
@@ -1797,6 +1776,23 @@
{\csname bbl@hyphenation@\bbl@tempa\endcsname\space}%
#2}}}%
\fi}}
+\ifx\NewDocumentCommand\@undefined\else
+ \NewDocumentCommand\babelhyphenmins{sommo}{%
+ \IfNoValueTF{#2}%
+ {\protected@edef\bbl@hyphenmins@{\set@hyphenmins{#3}{#4}}%
+ \IfValueT{#5}{%
+ \protected@edef\bbl@hyphenatmin@{\hyphenationmin=#5\relax}}%
+ \IfBooleanT{#1}{%
+ \lefthyphenmin=#3\relax
+ \righthyphenmin=#4\relax
+ \IfValueT{#5}{\hyphenationmin=#5\relax}}}%
+ {\edef\bbl@tempb{\zap@space#2 \@empty}%
+ \bbl@for\bbl@tempa\bbl@tempb{%
+ \@namedef{bbl@hyphenmins@\bbl@tempa}{\set@hyphenmins{#3}{#4}}%
+ \IfValueT{#5}{%
+ \@namedef{bbl@hyphenatmin@\bbl@tempa}{\hyphenationmin=#5\relax}}}%
+ \IfBooleanT{#1}{\bbl@error{hyphenmins-args}{}{}{}}}}
+\fi
\def\bbl@allowhyphens{\ifvmode\else\nobreak\hskip\z@skip\fi}
\def\bbl@t@one{T1}
\def\allowhyphens{\ifx\cf@encoding\bbl@t@one\else\bbl@allowhyphens\fi}
@@ -1935,12 +1931,12 @@
\def\bbl@sctest{%
\bbl@xin@{,\bbl@opt@strings,}{,\bbl@sc@label,\bbl@sc@fontenc,}}%
\fi
- \ifx\bbl@opt@strings\@nnil % ie, no strings key -> defaults
- \else\ifx\bbl@opt@strings\relax % ie, strings=encoded
+ \ifx\bbl@opt@strings\@nnil % i.e., no strings key -> defaults
+ \else\ifx\bbl@opt@strings\relax % i.e., strings=encoded
\let\AfterBabelCommands\bbl@aftercmds
\let\SetString\bbl@setstring
\let\bbl@stringdef\bbl@encstring
- \else % ie, strings=value
+ \else % i.e., strings=value
\bbl@sctest
\ifin@
\let\AfterBabelCommands\bbl@aftercmds
@@ -1984,10 +1980,10 @@
\endgroup
\bbl@scafter}
\let\bbl@endcommands\EndBabelCommands
-\def\bbl@setstring#1#2{% eg, \prefacename{<string>}
+\def\bbl@setstring#1#2{% e.g., \prefacename{<string>}
\bbl@forlang\bbl@tempa{%
\edef\bbl@LC{\bbl@tempa\bbl@stripslash#1}%
- \bbl@ifunset{\bbl@LC}% eg, \germanchaptername
+ \bbl@ifunset{\bbl@LC}% e.g., \germanchaptername
{\bbl@exp{%
\global\\\bbl@add\<\bbl@G\bbl@tempa>{\\\bbl@scset\\#1\<\bbl@LC>}}}%
{}%
@@ -2029,7 +2025,7 @@
\bbl@xin@{,}{\bbl@language@opts}%
\chardef\bbl@opt@hyphenmap\ifin@4\else\@ne\fi
\fi}
-\newcommand\setlocalecaption{% TODO. Catch typos.
+\newcommand\setlocalecaption{%
\@ifstar\bbl@setcaption@s\bbl@setcaption@x}
\def\bbl@setcaption@x#1#2#3{% language caption-name string
\bbl@trim@def\bbl@tempa{#2}%
diff --git a/Master/texmf-dist/tex/generic/babel/babel.sty b/Master/texmf-dist/tex/generic/babel/babel.sty
index 2481d3788a0..ab1322d2a30 100644
--- a/Master/texmf-dist/tex/generic/babel/babel.sty
+++ b/Master/texmf-dist/tex/generic/babel/babel.sty
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `package')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
@@ -32,20 +32,24 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{babel}[2024/08/29 v24.9 The Babel package]
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{babel}%
+ [2025/01/25 v25.2
+ The multilingual framework for pdfLaTeX, LuaLaTeX and XeLaTeX]
\@ifpackagewith{babel}{debug}
{\providecommand\bbl@trace[1]{\message{^^J[ #1 ]}}%
\let\bbl@debug\@firstofone
\ifx\directlua\@undefined\else
- \directlua{ Babel = Babel or {}
+ \directlua{
+ Babel = Babel or {}
Babel.debug = true }%
\input{babel-debug.tex}%
\fi}
{\providecommand\bbl@trace[1]{}%
\let\bbl@debug\@gobble
\ifx\directlua\@undefined\else
- \directlua{ Babel = Babel or {}
+ \directlua{
+ Babel = Babel or {}
Babel.debug = false }%
\fi}
\def\bbl@error#1{% Implicit #2#3#4
@@ -307,7 +311,7 @@
#1\ifx\@empty#2\else,\bbl@afterfi\bbl@tempb#2\fi}%
\def\bbl@tempe#1=#2\@@{%
\bbl@csarg\edef{mod@#1}{\bbl@tempb#2}}
-\def\bbl@tempd#1.#2\@nnil{% TODO. Refactor lists?
+\def\bbl@tempd#1.#2\@nnil{%
\ifx\@empty#2%
\edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1}%
\else
@@ -316,7 +320,7 @@
\edef\bbl@tempc{%
\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1.\bbl@tempb#2}%
\else
- \in@{$modifiers$}{$#1$}% TODO. Allow spaces.
+ \in@{$modifiers$}{$#1$}%
\ifin@
\bbl@tempe#2\@@
\else
@@ -342,11 +346,9 @@
\DeclareOption{silent}{}
\DeclareOption{shorthands=off}{\bbl@tempa shorthands=\bbl@tempa}
\chardef\bbl@iniflag\z@
-\DeclareOption{provide=*}{\chardef\bbl@iniflag\@ne} % main -> +1
+\DeclareOption{provide=*}{\chardef\bbl@iniflag\@ne} % main = 1
\DeclareOption{provide+=*}{\chardef\bbl@iniflag\tw@} % second = 2
\DeclareOption{provide*=*}{\chardef\bbl@iniflag\thr@@} % second + main
-\let\bbl@autoload@options\@empty
-\DeclareOption{provide@=*}{\def\bbl@autoload@options{import}}
\newif\ifbbl@single
\DeclareOption{selectors=off}{\bbl@singletrue}
\DeclareOption{math=active}{}
@@ -406,7 +408,6 @@
\in@{,provide,}{,#1,}%
\ifin@
\def\bbl@opt@provide{#2}%
- \bbl@replace\bbl@opt@provide{;}{,}%
\fi}
\fi
\bbl@trace{Conditional loading of shorthands}
@@ -465,8 +466,8 @@
\expandafter\@secondoftwo
\fi}
\fi
-\def\bbl@version{24.9}
-\def\bbl@date{2024/08/29}
+\def\bbl@version{25.2}
+\def\bbl@date{2025/01/25}
\ifx\language\@undefined
\csname newcount\endcsname\language
\fi
@@ -546,34 +547,6 @@
\fi
\fi\fi}
\let\bbl@initoload\relax
-\def\bbl@provide@locale{%
- \ifx\babelprovide\@undefined
- \bbl@error{base-on-the-fly}{}{}{}%
- \fi
- \let\bbl@auxname\languagename % Still necessary. TODO
- \bbl@ifunset{bbl@bcp@map@\languagename}{}% Move uplevel??
- {\edef\languagename{\@nameuse{bbl@bcp@map@\languagename}}}%
- \ifbbl@bcpallowed
- \expandafter\ifx\csname date\languagename\endcsname\relax
- \expandafter
- \bbl@bcplookup\languagename-\@empty-\@empty-\@empty\@@
- \ifx\bbl@bcp\relax\else % Returned by \bbl@bcplookup
- \edef\languagename{\bbl@bcp@prefix\bbl@bcp}%
- \edef\localename{\bbl@bcp@prefix\bbl@bcp}%
- \expandafter\ifx\csname date\languagename\endcsname\relax
- \let\bbl@initoload\bbl@bcp
- \bbl@exp{\\\babelprovide[\bbl@autoload@bcpoptions]{\languagename}}%
- \let\bbl@initoload\relax
- \fi
- \bbl@csarg\xdef{bcp@map@\bbl@bcp}{\localename}%
- \fi
- \fi
- \fi
- \expandafter\ifx\csname date\languagename\endcsname\relax
- \IfFileExists{babel-\languagename.tex}%
- {\bbl@exp{\\\babelprovide[\bbl@autoload@options]{\languagename}}}%
- {}%
- \fi}
\def\iflanguage#1{%
\bbl@iflanguage{#1}{%
\ifnum\csname l@#1\endcsname=\language
@@ -615,14 +588,13 @@
\bbl@ifunset{bbl@id@@\languagename}%
{\count@\bbl@id@last\relax
\advance\count@\@ne
- \bbl@csarg\chardef{id@@\languagename}\count@
+ \global\bbl@csarg\chardef{id@@\languagename}\count@
\edef\bbl@id@last{\the\count@}%
\ifcase\bbl@engine\or
\directlua{
- Babel = Babel or {}
- Babel.locale_props = Babel.locale_props or {}
Babel.locale_props[\bbl@id@last] = {}
Babel.locale_props[\bbl@id@last].name = '\languagename'
+ Babel.locale_props[\bbl@id@last].vars = {}
}%
\fi}%
{}%
@@ -635,30 +607,8 @@
\let\endselectlanguage\relax
\def\BabelContentsFiles{toc,lof,lot}
\def\bbl@set@language#1{% from selectlanguage, pop@
- % The old buggy way. Preserved for compatibility.
- \edef\languagename{%
- \ifnum\escapechar=\expandafter`\string#1\@empty
- \else\string#1\@empty\fi}%
- \ifcat\relax\noexpand#1%
- \expandafter\ifx\csname date\languagename\endcsname\relax
- \edef\languagename{#1}%
- \let\localename\languagename
- \else
- \bbl@info{Using '\string\language' instead of 'language' is\\%
- deprecated. If what you want is to use a\\%
- macro containing the actual locale, make\\%
- sure it does not not match any language.\\%
- Reported}%
- \ifx\scantokens\@undefined
- \def\localename{??}%
- \else
- \scantokens\expandafter{\expandafter
- \def\expandafter\localename\expandafter{\languagename}}%
- \fi
- \fi
- \else
- \def\localename{#1}% This one has the correct catcodes
- \fi
+ % The old buggy way. Preserved for compatibility, but simplified
+ \edef\languagename{\expandafter\string#1\@empty}%
\select@language{\languagename}%
% write to auxs
\expandafter\ifx\csname date\languagename\endcsname\relax\else
@@ -673,18 +623,21 @@
\fi}
\let\bbl@restorelastskip\relax
\let\bbl@savelastskip\relax
-\newif\ifbbl@bcpallowed
-\bbl@bcpallowedfalse
-\def\select@language#1{% from set@, babel@aux
+\def\select@language#1{% from set@, babel@aux, babel@toc
\ifx\bbl@selectorname\@empty
\def\bbl@selectorname{select}%
- % set hymap
\fi
+ % set hymap
\ifnum\bbl@hymapsel=\@cclv\chardef\bbl@hymapsel4\relax\fi
- % set name
+ % set name (when coming from babel@aux)
\edef\languagename{#1}%
\bbl@fixname\languagename
- % TODO. name@map must be here?
+ % define \localename when coming from set@, with a trick
+ \ifx\scantokens\@undefined
+ \def\localename{??}%
+ \else
+ \bbl@exp{\\\scantokens{\def\\\localename{\languagename}\\\noexpand}\relax}%
+ \fi
\bbl@provide@locale
\bbl@iflanguage\languagename{%
\let\bbl@select@type\z@
@@ -692,7 +645,7 @@
\def\babel@aux#1#2{%
\select@language{#1}%
\bbl@foreach\BabelContentsFiles{% \relax -> don't assume vertical mode
- \@writefile{##1}{\babel@toc{#1}{#2}\relax}}}% TODO - plain?
+ \@writefile{##1}{\babel@toc{#1}{#2}\relax}}}%
\def\babel@toc#1#2{%
\select@language{#1}}
\newif\ifbbl@usedategroup
@@ -759,8 +712,14 @@
\bbl@xin@{/u}{/\bbl@tempa}%
\ifin@\else\bbl@xin@{/e}{/\bbl@tempa}\fi % elongated forms
\ifin@\else\bbl@xin@{/k}{/\bbl@tempa}\fi % only kashida
- \ifin@\else\bbl@xin@{/p}{/\bbl@tempa}\fi % padding (eg, Tibetan)
+ \ifin@\else\bbl@xin@{/p}{/\bbl@tempa}\fi % padding (e.g., Tibetan)
\ifin@\else\bbl@xin@{/v}{/\bbl@tempa}\fi % variable font
+ % hyphenation - save mins
+ \babel@savevariable\lefthyphenmin
+ \babel@savevariable\righthyphenmin
+ \ifnum\bbl@engine=\@ne
+ \babel@savevariable\hyphenationmin
+ \fi
\ifin@
% unhyphenated/kashida/elongated/padding = allow stretching
\language\l@unhyphenated
@@ -772,16 +731,18 @@
% other = select patterns
\bbl@patterns{#1}%
\fi
- % hyphenation - mins
- \babel@savevariable\lefthyphenmin
- \babel@savevariable\righthyphenmin
+ % hyphenation - set mins
\expandafter\ifx\csname #1hyphenmins\endcsname\relax
\set@hyphenmins\tw@\thr@@\relax
+ \@nameuse{bbl@hyphenmins@}%
\else
\expandafter\expandafter\expandafter\set@hyphenmins
\csname #1hyphenmins\endcsname\relax
\fi
- % reset selector name
+ \@nameuse{bbl@hyphenmins@}%
+ \@nameuse{bbl@hyphenmins@\languagename}%
+ \@nameuse{bbl@hyphenatmin@}%
+ \@nameuse{bbl@hyphenatmin@\languagename}%
\let\bbl@selectorname\@empty}
\long\def\otherlanguage#1{%
\def\bbl@selectorname{other}%
@@ -836,6 +797,7 @@
\bbl@usedategroupfalse
\fi
\bbl@fixname\languagename
+ \let\localename\languagename
% TODO. name@map here?
\bbl@provide@locale
\bbl@iflanguage\languagename{%
@@ -954,13 +916,91 @@
preloaded for \bbl@nulllanguage\space instead}}
\let\bbl@usehooks\@gobbletwo
\ifx\bbl@onlyswitch\@empty\endinput\fi
- % Here ended switch.def
+\bbl@trace{Defining babelensure}
+\newcommand\babelensure[2][]{%
+ \AddBabelHook{babel-ensure}{afterextras}{%
+ \ifcase\bbl@select@type
+ \bbl@cl{e}%
+ \fi}%
+ \begingroup
+ \let\bbl@ens@include\@empty
+ \let\bbl@ens@exclude\@empty
+ \def\bbl@ens@fontenc{\relax}%
+ \def\bbl@tempb##1{%
+ \ifx\@empty##1\else\noexpand##1\expandafter\bbl@tempb\fi}%
+ \edef\bbl@tempa{\bbl@tempb#1\@empty}%
+ \def\bbl@tempb##1=##2\@@{\@namedef{bbl@ens@##1}{##2}}%
+ \bbl@foreach\bbl@tempa{\bbl@tempb##1\@@}%
+ \def\bbl@tempc{\bbl@ensure}%
+ \expandafter\bbl@add\expandafter\bbl@tempc\expandafter{%
+ \expandafter{\bbl@ens@include}}%
+ \expandafter\bbl@add\expandafter\bbl@tempc\expandafter{%
+ \expandafter{\bbl@ens@exclude}}%
+ \toks@\expandafter{\bbl@tempc}%
+ \bbl@exp{%
+ \endgroup
+ \def\<bbl@e@#2>{\the\toks@{\bbl@ens@fontenc}}}}
+\def\bbl@ensure#1#2#3{% 1: include 2: exclude 3: fontenc
+ \def\bbl@tempb##1{% elt for (excluding) \bbl@captionslist list
+ \ifx##1\@undefined % 3.32 - Don't assume the macro exists
+ \edef##1{\noexpand\bbl@nocaption
+ {\bbl@stripslash##1}{\languagename\bbl@stripslash##1}}%
+ \fi
+ \ifx##1\@empty\else
+ \in@{##1}{#2}%
+ \ifin@\else
+ \bbl@ifunset{bbl@ensure@\languagename}%
+ {\bbl@exp{%
+ \\\DeclareRobustCommand\<bbl@ensure@\languagename>[1]{%
+ \\\foreignlanguage{\languagename}%
+ {\ifx\relax#3\else
+ \\\fontencoding{#3}\\\selectfont
+ \fi
+ ########1}}}}%
+ {}%
+ \toks@\expandafter{##1}%
+ \edef##1{%
+ \bbl@csarg\noexpand{ensure@\languagename}%
+ {\the\toks@}}%
+ \fi
+ \expandafter\bbl@tempb
+ \fi}%
+ \expandafter\bbl@tempb\bbl@captionslist\today\@empty
+ \def\bbl@tempa##1{% elt for include list
+ \ifx##1\@empty\else
+ \bbl@csarg\in@{ensure@\languagename\expandafter}\expandafter{##1}%
+ \ifin@\else
+ \bbl@tempb##1\@empty
+ \fi
+ \expandafter\bbl@tempa
+ \fi}%
+ \bbl@tempa#1\@empty}
+\def\bbl@captionslist{%
+ \prefacename\refname\abstractname\bibname\chaptername\appendixname
+ \contentsname\listfigurename\listtablename\indexname\figurename
+ \tablename\partname\enclname\ccname\headtoname\pagename\seename
+ \alsoname\proofname\glossaryname}
+\bbl@trace{Short tags}
+\newcommand\babeltags[1]{%
+ \edef\bbl@tempa{\zap@space#1 \@empty}%
+ \def\bbl@tempb##1=##2\@@{%
+ \edef\bbl@tempc{%
+ \noexpand\newcommand
+ \expandafter\noexpand\csname ##1\endcsname{%
+ \noexpand\protect
+ \expandafter\noexpand\csname otherlanguage*\endcsname{##2}}
+ \noexpand\newcommand
+ \expandafter\noexpand\csname text##1\endcsname{%
+ \noexpand\foreignlanguage{##2}}}
+ \bbl@tempc}%
+ \bbl@for\bbl@tempa\bbl@tempa{%
+ \expandafter\bbl@tempb\bbl@tempa\@@}}
+\bbl@trace{Compatibility with language.def}
\ifx\directlua\@undefined\else
\ifx\bbl@luapatterns\@undefined
\input luababel.def
\fi
\fi
-\bbl@trace{Compatibility with language.def}
\ifx\bbl@languages\@undefined
\ifx\directlua\@undefined
\openin1 = language.def % TODO. Remove hardcoded number
@@ -993,28 +1033,6 @@
\xdef#1{\the\toks@}}%
\fi
\fi}
-\def\bbl@withactive#1#2{%
- \begingroup
- \lccode`~=`#2\relax
- \lowercase{\endgroup#1~}}
-\def\bbl@redefine#1{%
- \edef\bbl@tempa{\bbl@stripslash#1}%
- \expandafter\let\csname org@\bbl@tempa\endcsname#1%
- \expandafter\def\csname\bbl@tempa\endcsname}
-\@onlypreamble\bbl@redefine
-\def\bbl@redefine@long#1{%
- \edef\bbl@tempa{\bbl@stripslash#1}%
- \expandafter\let\csname org@\bbl@tempa\endcsname#1%
- \long\expandafter\def\csname\bbl@tempa\endcsname}
-\@onlypreamble\bbl@redefine@long
-\def\bbl@redefinerobust#1{%
- \edef\bbl@tempa{\bbl@stripslash#1}%
- \bbl@ifunset{\bbl@tempa\space}%
- {\expandafter\let\csname org@\bbl@tempa\endcsname#1%
- \bbl@exp{\def\\#1{\\\protect\<\bbl@tempa\space>}}}%
- {\bbl@exp{\let\<org@\bbl@tempa>\<\bbl@tempa\space>}}%
- \@namedef{\bbl@tempa\space}}
-\@onlypreamble\bbl@redefinerobust
\bbl@trace{Hooks}
\newcommand\AddBabelHook[3][]{%
\bbl@ifunset{bbl@hk@#2}{\EnableBabelHook{#2}}{}%
@@ -1048,70 +1066,8 @@
\def\bbl@tempa#1=#2\@@{\NewHook{babel/#1}}
\bbl@foreach\bbl@evargs{\bbl@tempa#1\@@}
\fi
-\bbl@trace{Defining babelensure}
-\newcommand\babelensure[2][]{%
- \AddBabelHook{babel-ensure}{afterextras}{%
- \ifcase\bbl@select@type
- \bbl@cl{e}%
- \fi}%
- \begingroup
- \let\bbl@ens@include\@empty
- \let\bbl@ens@exclude\@empty
- \def\bbl@ens@fontenc{\relax}%
- \def\bbl@tempb##1{%
- \ifx\@empty##1\else\noexpand##1\expandafter\bbl@tempb\fi}%
- \edef\bbl@tempa{\bbl@tempb#1\@empty}%
- \def\bbl@tempb##1=##2\@@{\@namedef{bbl@ens@##1}{##2}}%
- \bbl@foreach\bbl@tempa{\bbl@tempb##1\@@}%
- \def\bbl@tempc{\bbl@ensure}%
- \expandafter\bbl@add\expandafter\bbl@tempc\expandafter{%
- \expandafter{\bbl@ens@include}}%
- \expandafter\bbl@add\expandafter\bbl@tempc\expandafter{%
- \expandafter{\bbl@ens@exclude}}%
- \toks@\expandafter{\bbl@tempc}%
- \bbl@exp{%
- \endgroup
- \def\<bbl@e@#2>{\the\toks@{\bbl@ens@fontenc}}}}
-\def\bbl@ensure#1#2#3{% 1: include 2: exclude 3: fontenc
- \def\bbl@tempb##1{% elt for (excluding) \bbl@captionslist list
- \ifx##1\@undefined % 3.32 - Don't assume the macro exists
- \edef##1{\noexpand\bbl@nocaption
- {\bbl@stripslash##1}{\languagename\bbl@stripslash##1}}%
- \fi
- \ifx##1\@empty\else
- \in@{##1}{#2}%
- \ifin@\else
- \bbl@ifunset{bbl@ensure@\languagename}%
- {\bbl@exp{%
- \\\DeclareRobustCommand\<bbl@ensure@\languagename>[1]{%
- \\\foreignlanguage{\languagename}%
- {\ifx\relax#3\else
- \\\fontencoding{#3}\\\selectfont
- \fi
- ########1}}}}%
- {}%
- \toks@\expandafter{##1}%
- \edef##1{%
- \bbl@csarg\noexpand{ensure@\languagename}%
- {\the\toks@}}%
- \fi
- \expandafter\bbl@tempb
- \fi}%
- \expandafter\bbl@tempb\bbl@captionslist\today\@empty
- \def\bbl@tempa##1{% elt for include list
- \ifx##1\@empty\else
- \bbl@csarg\in@{ensure@\languagename\expandafter}\expandafter{##1}%
- \ifin@\else
- \bbl@tempb##1\@empty
- \fi
- \expandafter\bbl@tempa
- \fi}%
- \bbl@tempa#1\@empty}
-\def\bbl@captionslist{%
- \prefacename\refname\abstractname\bibname\chaptername\appendixname
- \contentsname\listfigurename\listtablename\indexname\figurename
- \tablename\partname\enclname\ccname\headtoname\pagename\seename
- \alsoname\proofname\glossaryname}
+\providecommand\PassOptionsToLocale[2]{%
+ \bbl@csarg\bbl@add@list{passto@#2}{#1}}
\bbl@trace{Macros for setting language files up}
\def\bbl@ldfinit{%
\let\bbl@screset\@empty
@@ -1144,7 +1100,7 @@
\catcode`\@=\atcatcode \let\atcatcode\relax
\catcode`\==\eqcatcode \let\eqcatcode\relax
\endinput}
-\def\bbl@afterldf#1{% TODO. Merge into the next macro? Unused elsewhere
+\def\bbl@afterldf#1{%
\bbl@afterlang
\let\bbl@afterlang\relax
\let\BabelModifiers\relax
@@ -1160,7 +1116,9 @@
\@onlypreamble\ldf@finish
\def\main@language#1{%
\def\bbl@main@language{#1}%
- \let\languagename\bbl@main@language % TODO. Set localename
+ \let\languagename\bbl@main@language
+ \let\localename\bbl@main@language
+ \let\mainlocalename\bbl@main@language
\bbl@id@assign
\bbl@patterns{\languagename}}
\def\bbl@beforestart{%
@@ -1178,25 +1136,13 @@
\immediate\write\@mainaux{\string\@nameuse{bbl@beforestart}}%
\fi
\expandafter\selectlanguage\expandafter{\bbl@main@language}%
- \ifx\bbl@normalsf\@empty
- \ifnum\sfcode`\.=\@m
- \let\normalsfcodes\frenchspacing
- \else
- \let\normalsfcodes\nonfrenchspacing
- \fi
- \else
- \let\normalsfcodes\bbl@normalsf
- \fi
\ifbbl@single % must go after the line above.
\renewcommand\selectlanguage[1]{}%
\renewcommand\foreignlanguage[2]{#2}%
\global\let\babel@aux\@gobbletwo % Also as flag
\fi}
-\AddToHook{begindocument/before}{%
- \let\bbl@normalsf\normalsfcodes
- \let\normalsfcodes\relax} % Hack, to delay the setting
\ifcase\bbl@engine\or
- \AtBeginDocument{\pagedir\bodydir} % TODO - a better place
+ \AtBeginDocument{\pagedir\bodydir}
\fi
\def\select@language@x#1{%
\ifcase\bbl@select@type
@@ -1205,6 +1151,10 @@
\select@language{#1}%
\fi}
\bbl@trace{Shorhands}
+\def\bbl@withactive#1#2{%
+ \begingroup
+ \lccode`~=`#2\relax
+ \lowercase{\endgroup#1~}}
\def\bbl@add@special#1{% 1:a macro like \", \?, etc.
\bbl@add\dospecials{\do#1}% test @sanitize = \relax, for back. compat.
\bbl@ifunset{@sanitize}{}{\bbl@add\@sanitize{\@makeother#1}}%
@@ -1219,18 +1169,6 @@
\endgroup
\fi
\fi}
-\def\bbl@remove@special#1{%
- \begingroup
- \def\x##1##2{\ifnum`#1=`##2\noexpand\@empty
- \else\noexpand##1\noexpand##2\fi}%
- \def\do{\x\do}%
- \def\@makeother{\x\@makeother}%
- \edef\x{\endgroup
- \def\noexpand\dospecials{\dospecials}%
- \expandafter\ifx\csname @sanitize\endcsname\relax\else
- \def\noexpand\@sanitize{\@sanitize}%
- \fi}%
- \x}
\def\bbl@active@def#1#2#3#4{%
\@namedef{#3#1}{%
\expandafter\ifx\csname#2@sh@#1@\endcsname\relax
@@ -1333,7 +1271,7 @@
\bbl@afterfi\csname#1@sh@#2@sel\endcsname
\fi}
\begingroup
-\bbl@ifunset{ifincsname}% TODO. Ugly. Correct? Only Plain?
+\bbl@ifunset{ifincsname}%
{\gdef\active@prefix#1{%
\ifx\protect\@typeset@protect
\else
@@ -1374,7 +1312,6 @@
\csname bbl@normal@\string#1\endcsname}
\def\bbl@firstcs#1#2{\csname#1\endcsname}
\def\bbl@scndcs#1#2{\csname#2\endcsname}
-
\def\babel@texpdf#1#2#3#4{%
\ifx\texorpdfstring\@undefined
\textormath{#1}{#3}%
@@ -1415,7 +1352,7 @@
\expandafter\@firstoftwo
\fi}
\def\user@group{user}
-\def\language@group{english} % TODO. I don't like defaults
+\def\language@group{english}
\def\system@group{system}
\def\useshorthands{%
\@ifstar\bbl@usesh@s{\bbl@usesh@x{}}}
@@ -1630,6 +1567,24 @@
\def\babel@savevariable#1{%
\toks@\expandafter{\originalTeX #1=}%
\bbl@exp{\def\\\originalTeX{\the\toks@\the#1\relax}}}
+\def\bbl@redefine#1{%
+ \edef\bbl@tempa{\bbl@stripslash#1}%
+ \expandafter\let\csname org@\bbl@tempa\endcsname#1%
+ \expandafter\def\csname\bbl@tempa\endcsname}
+\@onlypreamble\bbl@redefine
+\def\bbl@redefine@long#1{%
+ \edef\bbl@tempa{\bbl@stripslash#1}%
+ \expandafter\let\csname org@\bbl@tempa\endcsname#1%
+ \long\expandafter\def\csname\bbl@tempa\endcsname}
+\@onlypreamble\bbl@redefine@long
+\def\bbl@redefinerobust#1{%
+ \edef\bbl@tempa{\bbl@stripslash#1}%
+ \bbl@ifunset{\bbl@tempa\space}%
+ {\expandafter\let\csname org@\bbl@tempa\endcsname#1%
+ \bbl@exp{\def\\#1{\\\protect\<\bbl@tempa\space>}}}%
+ {\bbl@exp{\let\<org@\bbl@tempa>\<\bbl@tempa\space>}}%
+ \@namedef{\bbl@tempa\space}}
+\@onlypreamble\bbl@redefinerobust
\def\bbl@frenchspacing{%
\ifnum\the\sfcode`\.=\@m
\let\bbl@nonfrenchspacing\relax
@@ -1666,21 +1621,6 @@
\fi}%
\bbl@fs@chars
\fi\fi\fi}
-\bbl@trace{Short tags}
-\def\babeltags#1{%
- \edef\bbl@tempa{\zap@space#1 \@empty}%
- \def\bbl@tempb##1=##2\@@{%
- \edef\bbl@tempc{%
- \noexpand\newcommand
- \expandafter\noexpand\csname ##1\endcsname{%
- \noexpand\protect
- \expandafter\noexpand\csname otherlanguage*\endcsname{##2}}
- \noexpand\newcommand
- \expandafter\noexpand\csname text##1\endcsname{%
- \noexpand\foreignlanguage{##2}}}
- \bbl@tempc}%
- \bbl@for\bbl@tempa\bbl@tempa{%
- \expandafter\bbl@tempb\bbl@tempa\@@}}
\bbl@trace{Hyphens}
\@onlypreamble\babelhyphenation
\AtEndOfPackage{%
@@ -1707,6 +1647,23 @@
{\csname bbl@hyphenation@\bbl@tempa\endcsname\space}%
#2}}}%
\fi}}
+\ifx\NewDocumentCommand\@undefined\else
+ \NewDocumentCommand\babelhyphenmins{sommo}{%
+ \IfNoValueTF{#2}%
+ {\protected@edef\bbl@hyphenmins@{\set@hyphenmins{#3}{#4}}%
+ \IfValueT{#5}{%
+ \protected@edef\bbl@hyphenatmin@{\hyphenationmin=#5\relax}}%
+ \IfBooleanT{#1}{%
+ \lefthyphenmin=#3\relax
+ \righthyphenmin=#4\relax
+ \IfValueT{#5}{\hyphenationmin=#5\relax}}}%
+ {\edef\bbl@tempb{\zap@space#2 \@empty}%
+ \bbl@for\bbl@tempa\bbl@tempb{%
+ \@namedef{bbl@hyphenmins@\bbl@tempa}{\set@hyphenmins{#3}{#4}}%
+ \IfValueT{#5}{%
+ \@namedef{bbl@hyphenatmin@\bbl@tempa}{\hyphenationmin=#5\relax}}}%
+ \IfBooleanT{#1}{\bbl@error{hyphenmins-args}{}{}{}}}}
+\fi
\def\bbl@allowhyphens{\ifvmode\else\nobreak\hskip\z@skip\fi}
\def\bbl@t@one{T1}
\def\allowhyphens{\ifx\cf@encoding\bbl@t@one\else\bbl@allowhyphens\fi}
@@ -1845,12 +1802,12 @@
\def\bbl@sctest{%
\bbl@xin@{,\bbl@opt@strings,}{,\bbl@sc@label,\bbl@sc@fontenc,}}%
\fi
- \ifx\bbl@opt@strings\@nnil % ie, no strings key -> defaults
- \else\ifx\bbl@opt@strings\relax % ie, strings=encoded
+ \ifx\bbl@opt@strings\@nnil % i.e., no strings key -> defaults
+ \else\ifx\bbl@opt@strings\relax % i.e., strings=encoded
\let\AfterBabelCommands\bbl@aftercmds
\let\SetString\bbl@setstring
\let\bbl@stringdef\bbl@encstring
- \else % ie, strings=value
+ \else % i.e., strings=value
\bbl@sctest
\ifin@
\let\AfterBabelCommands\bbl@aftercmds
@@ -1894,10 +1851,10 @@
\endgroup
\bbl@scafter}
\let\bbl@endcommands\EndBabelCommands
-\def\bbl@setstring#1#2{% eg, \prefacename{<string>}
+\def\bbl@setstring#1#2{% e.g., \prefacename{<string>}
\bbl@forlang\bbl@tempa{%
\edef\bbl@LC{\bbl@tempa\bbl@stripslash#1}%
- \bbl@ifunset{\bbl@LC}% eg, \germanchaptername
+ \bbl@ifunset{\bbl@LC}% e.g., \germanchaptername
{\bbl@exp{%
\global\\\bbl@add\<\bbl@G\bbl@tempa>{\\\bbl@scset\\#1\<\bbl@LC>}}}%
{}%
@@ -1939,7 +1896,7 @@
\bbl@xin@{,}{\bbl@language@opts}%
\chardef\bbl@opt@hyphenmap\ifin@4\else\@ne\fi
\fi}
-\newcommand\setlocalecaption{% TODO. Catch typos.
+\newcommand\setlocalecaption{%
\@ifstar\bbl@setcaption@s\bbl@setcaption@x}
\def\bbl@setcaption@x#1#2#3{% language caption-name string
\bbl@trim@def\bbl@tempa{#2}%
@@ -2172,39 +2129,6 @@
\fi
\bbl@trace{Bidi layout}
\providecommand\IfBabelLayout[3]{#3}%
-\newcommand\BabelPatchSection[1]{%
- \@ifundefined{#1}{}{%
- \bbl@exp{\let\<bbl@ss@#1>\<#1>}%
- \@namedef{#1}{%
- \@ifstar{\bbl@presec@s{#1}}%
- {\@dblarg{\bbl@presec@x{#1}}}}}}
-\def\bbl@presec@x#1[#2]#3{%
- \bbl@exp{%
- \\\select@language@x{\bbl@main@language}%
- \\\bbl@cs{sspre@#1}%
- \\\bbl@cs{ss@#1}%
- [\\\foreignlanguage{\languagename}{\unexpanded{#2}}]%
- {\\\foreignlanguage{\languagename}{\unexpanded{#3}}}%
- \\\select@language@x{\languagename}}}
-\def\bbl@presec@s#1#2{%
- \bbl@exp{%
- \\\select@language@x{\bbl@main@language}%
- \\\bbl@cs{sspre@#1}%
- \\\bbl@cs{ss@#1}*%
- {\\\foreignlanguage{\languagename}{\unexpanded{#2}}}%
- \\\select@language@x{\languagename}}}
-\IfBabelLayout{sectioning}%
- {\BabelPatchSection{part}%
- \BabelPatchSection{chapter}%
- \BabelPatchSection{section}%
- \BabelPatchSection{subsection}%
- \BabelPatchSection{subsubsection}%
- \BabelPatchSection{paragraph}%
- \BabelPatchSection{subparagraph}%
- \def\babel@toc#1{%
- \select@language@x{\bbl@main@language}}}{}
-\IfBabelLayout{captions}%
- {\BabelPatchSection{caption}}{}
\bbl@trace{Input engine specific macros}
\ifcase\bbl@engine
\input txtbabel.def
@@ -2232,7 +2156,7 @@
\bbl@vforeach{captions,date,import,main,script,language,%
hyphenrules,linebreaking,justification,mapfont,maparabic,%
mapdigits,intraspace,intrapenalty,onchar,transforms,alph,%
- Alph,labels,labels*,calendar,date,casing,interchar}%
+ Alph,labels,labels*,calendar,date,casing,interchar,@import}%
{\bbl@csarg\let{KVP@##1}\@nnil}%
\global\let\bbl@release@transforms\@empty
\global\let\bbl@release@casing\@empty
@@ -2241,7 +2165,10 @@
\global\let\bbl@extend@ini\@gobble
\global\let\bbl@included@inis\@empty
\gdef\bbl@key@list{;}%
- \bbl@forkv{#1}{%
+ \bbl@ifunset{bbl@passto@#2}%
+ {\def\bbl@tempa{#1}}%
+ {\bbl@exp{\def\\\bbl@tempa{\[bbl@passto@#2],\unexpanded{#1}}}}%
+ \expandafter\bbl@forkv\expandafter{\bbl@tempa}{%
\in@{/}{##1}% With /, (re)sets a value in the ini
\ifin@
\global\let\bbl@extend@ini\bbl@extend@ini@aux
@@ -2258,6 +2185,10 @@
\ifx\bbl@screset\@undefined
\bbl@ldfinit
\fi
+ % ==
+ \ifx\bbl@KVP@@import\@nnil\else \ifx\bbl@KVP@import\@nnil
+ \def\bbl@KVP@import{\@empty}%
+ \fi\fi
% == date (as option) ==
% \ifx\bbl@KVP@date\@nnil\else
% \fi
@@ -2287,7 +2218,7 @@
{}%
\let\bbl@KVP@date\@empty
\fi
- \let\bbl@KVP@captions@@\bbl@KVP@captions % TODO. A dirty hack
+ \let\bbl@KVP@captions@@\bbl@KVP@captions
\ifx\bbl@KVP@captions\@nnil
\let\bbl@KVP@captions\bbl@KVP@import
\fi
@@ -2347,122 +2278,12 @@
{\directlua{
Babel.set_chranges_b('\bbl@cl{sbcp}', '\bbl@cl{chrng}') }}%
\fi
- % == onchar ==
- \ifx\bbl@KVP@onchar\@nnil\else
- \bbl@luahyphenate
- \bbl@exp{%
- \\\AddToHook{env/document/before}{{\\\select@language{#2}{}}}}%
- \directlua{
- if Babel.locale_mapped == nil then
- Babel.locale_mapped = true
- Babel.linebreaking.add_before(Babel.locale_map, 1)
- Babel.loc_to_scr = {}
- Babel.chr_to_loc = Babel.chr_to_loc or {}
- end
- Babel.locale_props[\the\localeid].letters = false
- }%
- \bbl@xin@{ letters }{ \bbl@KVP@onchar\space}%
- \ifin@
- \directlua{
- Babel.locale_props[\the\localeid].letters = true
- }%
- \fi
- \bbl@xin@{ ids }{ \bbl@KVP@onchar\space}%
- \ifin@
- \ifx\bbl@starthyphens\@undefined % Needed if no explicit selection
- \AddBabelHook{babel-onchar}{beforestart}{{\bbl@starthyphens}}%
- \fi
- \bbl@exp{\\\bbl@add\\\bbl@starthyphens
- {\\\bbl@patterns@lua{\languagename}}}%
- % TODO - error/warning if no script
- \directlua{
- if Babel.script_blocks['\bbl@cl{sbcp}'] then
- Babel.loc_to_scr[\the\localeid] = Babel.script_blocks['\bbl@cl{sbcp}']
- Babel.locale_props[\the\localeid].lg = \the\@nameuse{l@\languagename}\space
- end
- }%
- \fi
- \bbl@xin@{ fonts }{ \bbl@KVP@onchar\space}%
- \ifin@
- \bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}%
- \bbl@ifunset{bbl@wdir@\languagename}{\bbl@provide@dirs{\languagename}}{}%
- \directlua{
- if Babel.script_blocks['\bbl@cl{sbcp}'] then
- Babel.loc_to_scr[\the\localeid] =
- Babel.script_blocks['\bbl@cl{sbcp}']
- end}%
- \ifx\bbl@mapselect\@undefined % TODO. almost the same as mapfont
- \AtBeginDocument{%
- \bbl@patchfont{{\bbl@mapselect}}%
- {\selectfont}}%
- \def\bbl@mapselect{%
- \let\bbl@mapselect\relax
- \edef\bbl@prefontid{\fontid\font}}%
- \def\bbl@mapdir##1{%
- \begingroup
- \setbox\z@\hbox{% Force text mode
- \def\languagename{##1}%
- \let\bbl@ifrestoring\@firstoftwo % To avoid font warning
- \bbl@switchfont
- \ifnum\fontid\font>\z@ % A hack, for the pgf nullfont hack
- \directlua{
- Babel.locale_props[\the\csname bbl@id@@##1\endcsname]%
- ['/\bbl@prefontid'] = \fontid\font\space}%
- \fi}%
- \endgroup}%
- \fi
- \bbl@exp{\\\bbl@add\\\bbl@mapselect{\\\bbl@mapdir{\languagename}}}%
- \fi
- % TODO - catch non-valid values
- \fi
- % == mapfont ==
- % For bidi texts, to switch the font based on direction
- \ifx\bbl@KVP@mapfont\@nnil\else
- \bbl@ifsamestring{\bbl@KVP@mapfont}{direction}{}%
- {\bbl@error{unknown-mapfont}{}{}{}}%
- \bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}%
- \bbl@ifunset{bbl@wdir@\languagename}{\bbl@provide@dirs{\languagename}}{}%
- \ifx\bbl@mapselect\@undefined % TODO. See onchar.
- \AtBeginDocument{%
- \bbl@patchfont{{\bbl@mapselect}}%
- {\selectfont}}%
- \def\bbl@mapselect{%
- \let\bbl@mapselect\relax
- \edef\bbl@prefontid{\fontid\font}}%
- \def\bbl@mapdir##1{%
- {\def\languagename{##1}%
- \let\bbl@ifrestoring\@firstoftwo % avoid font warning
- \bbl@switchfont
- \directlua{Babel.fontmap
- [\the\csname bbl@wdir@##1\endcsname]%
- [\bbl@prefontid]=\fontid\font}}}%
- \fi
- \bbl@exp{\\\bbl@add\\\bbl@mapselect{\\\bbl@mapdir{\languagename}}}%
- \fi
% == Line breaking: intraspace, intrapenalty ==
% For CJK, East Asian, Southeast Asian, if interspace in ini
\ifx\bbl@KVP@intraspace\@nnil\else % We can override the ini or set
\bbl@csarg\edef{intsp@#2}{\bbl@KVP@intraspace}%
\fi
\bbl@provide@intraspace
- % == Line breaking: CJK quotes == TODO -> @extras
- \ifcase\bbl@engine\or
- \bbl@xin@{/c}{/\bbl@cl{lnbrk}}%
- \ifin@
- \bbl@ifunset{bbl@quote@\languagename}{}%
- {\directlua{
- Babel.locale_props[\the\localeid].cjk_quotes = {}
- local cs = 'op'
- for c in string.utfvalues(%
- [[\csname bbl@quote@\languagename\endcsname]]) do
- if Babel.cjk_characters[c].c == 'qu' then
- Babel.locale_props[\the\localeid].cjk_quotes[c] = cs
- end
- cs = ( cs == 'op') and 'cl' or 'op'
- end
- }}%
- \fi
- \fi
% == Line breaking: justification ==
\ifx\bbl@KVP@justification\@nnil\else
\let\bbl@KVP@linebreaking\bbl@KVP@justification
@@ -2478,6 +2299,7 @@
\bbl@xin@{/e}{/\bbl@cl{lnbrk}}%
\ifin@\else\bbl@xin@{/k}{/\bbl@cl{lnbrk}}\fi
\ifin@\bbl@arabicjust\fi
+ % WIP
\bbl@xin@{/p}{/\bbl@cl{lnbrk}}%
\ifin@\AtBeginDocument{\@nameuse{bbl@tibetanjust}}\fi
% == Line breaking: hyphenate.other.(locale|script) ==
@@ -2516,7 +2338,7 @@
\ifx\bbl@latinarabic\@undefined
\expandafter\let\expandafter\@arabic
\csname bbl@counter@\languagename\endcsname
- \else % ie, if layout=counters, which redefines \@arabic
+ \else % i.e., if layout=counters, which redefines \@arabic
\expandafter\let\expandafter\bbl@latinarabic
\csname bbl@counter@\languagename\endcsname
\fi
@@ -2965,11 +2787,11 @@
\let\bbl@inikv@numbers\bbl@inikv
\def\bbl@maybextx{-\bbl@csarg\ifx{extx@\languagename}\@empty x-\fi}
\def\bbl@inikv@characters#1#2{%
- \bbl@ifsamestring{#1}{casing}% eg, casing = uV
+ \bbl@ifsamestring{#1}{casing}% e.g., casing = uV
{\bbl@exp{%
\\\g@addto@macro\\\bbl@release@casing{%
\\\bbl@casemapping{}{\languagename}{\unexpanded{#2}}}}}%
- {\in@{$casing.}{$#1}% eg, casing.Uv = uV
+ {\in@{$casing.}{$#1}% e.g., casing.Uv = uV
\ifin@
\lowercase{\def\bbl@tempb{#1}}%
\bbl@replace\bbl@tempb{casing.}{}%
@@ -3088,7 +2910,7 @@
\else
%
% The following code is still under study. You can test it and make
- % suggestions. Eg, enumerate.2 = ([enumi]).([enumii]). It's
+ % suggestions. E.g., enumerate.2 = ([enumi]).([enumii]). It's
% language dependent.
\in@{enumerate.}{#1}%
\ifin@
@@ -3168,7 +2990,7 @@
{\bbl@ld@calendar}\bbl@they\bbl@them\bbl@thed
\fi
\fi
- \@nameuse{bbl@precalendar}% Remove, eg, +, -civil (-ca-islamic)
+ \@nameuse{bbl@precalendar}% Remove, e.g., +, -civil (-ca-islamic)
\edef\bbl@calendar{% Used in \month..., too
\bbl@ld@calendar
\ifx\bbl@ld@variant\@empty\else
@@ -3196,17 +3018,32 @@
\ifx\bbl@savetoday\@empty
\bbl@exp{% TODO. Move to a better place.
\\\AfterBabelCommands{%
- \def\<\languagename date>{\\\protect\<\languagename date >}%
- \\\newcommand\<\languagename date >[4][]{%
- \\\bbl@usedategrouptrue
- \<bbl@ensure@\languagename>{%
- \\\localedate[####1]{####2}{####3}{####4}}}}%
+ \gdef\<\languagename date>{\\\protect\<\languagename date >}%
+ \gdef\<\languagename date >{\\\bbl@printdate{\languagename}}}%
\def\\\bbl@savetoday{%
\\\SetString\\\today{%
\<\languagename date>[convert]%
{\\\the\year}{\\\the\month}{\\\the\day}}}}%
\fi}%
{}}}
+\def\bbl@printdate#1{%
+ \@ifnextchar[{\bbl@printdate@i{#1}}{\bbl@printdate@i{#1}[]}}
+\def\bbl@printdate@i#1[#2]#3#4#5{%
+ \bbl@usedategrouptrue
+ \@nameuse{bbl@ensure@#1}{\localedate[#2]{#3}{#4}{#5}}}
+\AddToHook{begindocument/before}{%
+ \let\bbl@normalsf\normalsfcodes
+ \let\normalsfcodes\relax}
+\AtBeginDocument{%
+ \ifx\bbl@normalsf\@empty
+ \ifnum\sfcode`\.=\@m
+ \let\normalsfcodes\frenchspacing
+ \else
+ \let\normalsfcodes\nonfrenchspacing
+ \fi
+ \else
+ \let\normalsfcodes\bbl@normalsf
+ \fi}
\let\bbl@calendar\@empty
\newcommand\babelcalendar[2][\the\year-\the\month-\the\day]{%
\@nameuse{bbl@ca@#2}#1\@@}
@@ -3358,19 +3195,19 @@
{\bbl@input@texini{#1}}}
\def\bbl@setdigits#1#2#3#4#5{%
\bbl@exp{%
- \def\<\languagename digits>####1{% ie, \langdigits
+ \def\<\languagename digits>####1{% i.e., \langdigits
\<bbl@digits@\languagename>####1\\\@nil}%
\let\<bbl@cntr@digits@\languagename>\<\languagename digits>%
- \def\<\languagename counter>####1{% ie, \langcounter
+ \def\<\languagename counter>####1{% i.e., \langcounter
\\\expandafter\<bbl@counter@\languagename>%
\\\csname c@####1\endcsname}%
- \def\<bbl@counter@\languagename>####1{% ie, \bbl@counter@lang
+ \def\<bbl@counter@\languagename>####1{% i.e., \bbl@counter@lang
\\\expandafter\<bbl@digits@\languagename>%
\\\number####1\\\@nil}}%
\def\bbl@tempa##1##2##3##4##5{%
\bbl@exp{% Wow, quite a lot of hashes! :-(
\def\<bbl@digits@\languagename>########1{%
- \\\ifx########1\\\@nil % ie, \bbl@digits@lang
+ \\\ifx########1\\\@nil % i.e., \bbl@digits@lang
\\\else
\\\ifx0########1#1%
\\\else\\\ifx1########1#2%
@@ -3424,58 +3261,17 @@
{\bbl@cs{cntr@#1.F.\number#5#6#7#8@\languagename}}}
\def\bbl@alphnum@invalid#1{%
\bbl@error{alphabetic-too-large}{#1}{}{}}
-\def\bbl@localeinfo#1#2{%
- \bbl@ifunset{bbl@info@#2}{#1}%
- {\bbl@ifunset{bbl@\csname bbl@info@#2\endcsname @\languagename}{#1}%
- {\bbl@cs{\csname bbl@info@#2\endcsname @\languagename}}}}
-\newcommand\localeinfo[1]{%
- \ifx*#1\@empty % TODO. A bit hackish to make it expandable.
- \bbl@afterelse\bbl@localeinfo{}%
- \else
- \bbl@localeinfo
- {\bbl@error{no-ini-info}{}{}{}}%
- {#1}%
- \fi}
-\@namedef{bbl@info@tag.ini}{lini}
-\@namedef{bbl@info@name.english}{elname}
-\@namedef{bbl@info@name.opentype}{lname}
-\@namedef{bbl@info@tag.bcp47}{tbcp}
-\@namedef{bbl@info@language.tag.bcp47}{lbcp}
-\@namedef{bbl@info@tag.opentype}{lotf}
-\@namedef{bbl@info@script.name}{esname}
-\@namedef{bbl@info@script.name.opentype}{sname}
-\@namedef{bbl@info@script.tag.bcp47}{sbcp}
-\@namedef{bbl@info@script.tag.opentype}{sotf}
-\@namedef{bbl@info@region.tag.bcp47}{rbcp}
-\@namedef{bbl@info@variant.tag.bcp47}{vbcp}
-\@namedef{bbl@info@extension.t.tag.bcp47}{extt}
-\@namedef{bbl@info@extension.u.tag.bcp47}{extu}
-\@namedef{bbl@info@extension.x.tag.bcp47}{extx}
-\ifcase\bbl@engine % Converts utf8 to its code (expandable)
- \def\bbl@utftocode#1{\the\numexpr\decode@UTFviii#1\relax}
-\else
- \def\bbl@utftocode#1{\expandafter`\string#1}
-\fi
-\providecommand\BCPdata{}
-\ifx\renewcommand\@undefined\else % For plain. TODO. It’s a quick fix
- \renewcommand\BCPdata[1]{\bbl@bcpdata@i#1\@empty}
- \def\bbl@bcpdata@i#1#2#3#4#5#6\@empty{%
- \@nameuse{str_if_eq:nnTF}{#1#2#3#4#5}{main.}%
- {\bbl@bcpdata@ii{#6}\bbl@main@language}%
- {\bbl@bcpdata@ii{#1#2#3#4#5#6}\languagename}}%
- \def\bbl@bcpdata@ii#1#2{%
- \bbl@ifunset{bbl@info@#1.tag.bcp47}%
- {\bbl@error{unknown-ini-field}{#1}{}{}}%
- {\bbl@ifunset{bbl@\csname bbl@info@#1.tag.bcp47\endcsname @#2}{}%
- {\bbl@cs{\csname bbl@info@#1.tag.bcp47\endcsname @#2}}}}
-\fi
-\@namedef{bbl@info@casing.tag.bcp47}{casing}
\newcommand\BabelUppercaseMapping[3]{%
\DeclareUppercaseMapping[\@nameuse{bbl@casing@#1}]{#2}{#3}}
\newcommand\BabelTitlecaseMapping[3]{%
\DeclareTitlecaseMapping[\@nameuse{bbl@casing@#1}]{#2}{#3}}
\newcommand\BabelLowercaseMapping[3]{%
\DeclareLowercaseMapping[\@nameuse{bbl@casing@#1}]{#2}{#3}}
+\ifcase\bbl@engine % Converts utf8 to its code (expandable)
+ \def\bbl@utftocode#1{\the\numexpr\decode@UTFviii#1\relax}
+\else
+ \def\bbl@utftocode#1{\expandafter`\string#1}
+\fi
\def\bbl@casemapping#1#2#3{% 1:variant
\def\bbl@tempa##1 ##2{% Loop
\bbl@casemapping@i{##1}%
@@ -3494,7 +3290,7 @@
\fi
\expandafter\bbl@casemapping@ii\bbl@tempb\@@}
\def\bbl@casemapping@ii#1#2#3\@@{%
- \in@{#1#3}{<>}% ie, if <u>, <l>, <t>
+ \in@{#1#3}{<>}% i.e., if <u>, <l>, <t>
\ifin@
\edef\bbl@tempe{%
\if#2u1 \else\if#2l2 \else\if#2t3 \fi\fi\fi}%
@@ -3510,6 +3306,33 @@
\DeclareTitlecaseMapping[\bbl@templ]{\bbl@utftocode{#1}}{#2}%
\fi
\fi}
+\def\bbl@localeinfo#1#2{%
+ \bbl@ifunset{bbl@info@#2}{#1}%
+ {\bbl@ifunset{bbl@\csname bbl@info@#2\endcsname @\languagename}{#1}%
+ {\bbl@cs{\csname bbl@info@#2\endcsname @\languagename}}}}
+\newcommand\localeinfo[1]{%
+ \ifx*#1\@empty % TODO. A bit hackish to make it expandable.
+ \bbl@afterelse\bbl@localeinfo{}%
+ \else
+ \bbl@localeinfo
+ {\bbl@error{no-ini-info}{}{}{}}%
+ {#1}%
+ \fi}
+\@namedef{bbl@info@tag.ini}{lini}
+\@namedef{bbl@info@name.english}{elname}
+\@namedef{bbl@info@name.opentype}{lname}
+\@namedef{bbl@info@tag.bcp47}{tbcp}
+\@namedef{bbl@info@language.tag.bcp47}{lbcp}
+\@namedef{bbl@info@tag.opentype}{lotf}
+\@namedef{bbl@info@script.name}{esname}
+\@namedef{bbl@info@script.name.opentype}{sname}
+\@namedef{bbl@info@script.tag.bcp47}{sbcp}
+\@namedef{bbl@info@script.tag.opentype}{sotf}
+\@namedef{bbl@info@region.tag.bcp47}{rbcp}
+\@namedef{bbl@info@variant.tag.bcp47}{vbcp}
+\@namedef{bbl@info@extension.t.tag.bcp47}{extt}
+\@namedef{bbl@info@extension.u.tag.bcp47}{extu}
+\@namedef{bbl@info@extension.x.tag.bcp47}{extx}
\let\bbl@ensureinfo\@gobble
\newcommand\BabelEnsureInfo{%
\ifx\InputIfFileExists\@undefined\else
@@ -3546,6 +3369,52 @@
\def\bbl@elt##1##2##3{\typeout{##1/##2 = ##3}}%
\@nameuse{bbl@inidata@#1}%
\typeout{*******}}
+\newif\ifbbl@bcpallowed
+\bbl@bcpallowedfalse
+\def\bbl@autoload@options{import}
+\def\bbl@provide@locale{%
+ \ifx\babelprovide\@undefined
+ \bbl@error{base-on-the-fly}{}{}{}%
+ \fi
+ \let\bbl@auxname\languagename % Still necessary.
+ \bbl@ifunset{bbl@bcp@map@\languagename}{}% Move uplevel??
+ {\edef\languagename{\@nameuse{bbl@bcp@map@\languagename}}}%
+ \ifbbl@bcpallowed
+ \expandafter\ifx\csname date\languagename\endcsname\relax
+ \expandafter
+ \bbl@bcplookup\languagename-\@empty-\@empty-\@empty\@@
+ \ifx\bbl@bcp\relax\else % Returned by \bbl@bcplookup
+ \edef\languagename{\bbl@bcp@prefix\bbl@bcp}%
+ \edef\localename{\bbl@bcp@prefix\bbl@bcp}%
+ \expandafter\ifx\csname date\languagename\endcsname\relax
+ \let\bbl@initoload\bbl@bcp
+ \bbl@exp{\\\babelprovide[\bbl@autoload@bcpoptions]{\languagename}}%
+ \let\bbl@initoload\relax
+ \fi
+ \bbl@csarg\xdef{bcp@map@\bbl@bcp}{\localename}%
+ \fi
+ \fi
+ \fi
+ \expandafter\ifx\csname date\languagename\endcsname\relax
+ \IfFileExists{babel-\languagename.tex}%
+ {\bbl@exp{\\\babelprovide[\bbl@autoload@options]{\languagename}}}%
+ {}%
+ \fi}
+\providecommand\BCPdata{}
+\ifx\renewcommand\@undefined\else % For plain. TODO. It’s a quick fix
+ \renewcommand\BCPdata[1]{\bbl@bcpdata@i#1\@empty\@empty\@empty}
+ \def\bbl@bcpdata@i#1#2#3#4#5#6\@empty{%
+ \@nameuse{str_if_eq:nnTF}{#1#2#3#4#5}{main.}%
+ {\bbl@bcpdata@ii{#6}\bbl@main@language}%
+ {\bbl@bcpdata@ii{#1#2#3#4#5#6}\languagename}}%
+ \def\bbl@bcpdata@ii#1#2{%
+ \bbl@ifunset{bbl@info@#1.tag.bcp47}%
+ {\bbl@error{unknown-ini-field}{#1}{}{}}%
+ {\bbl@ifunset{bbl@\csname bbl@info@#1.tag.bcp47\endcsname @#2}{}%
+ {\bbl@cs{\csname bbl@info@#1.tag.bcp47\endcsname @#2}}}}
+\fi
+\@namedef{bbl@info@casing.tag.bcp47}{casing}
+\@namedef{bbl@info@tag.tag.bcp47}{tbcp} % For \BCPdata
\newcommand\babeladjust[1]{% TODO. Error handling.
\bbl@forkv{#1}{%
\bbl@ifunset{bbl@ADJ@##1@##2}%
@@ -3618,7 +3487,7 @@
\def\bbl@bcp@prefix{bcp47-}
\@namedef{bbl@ADJ@autoload.options}#1{%
\def\bbl@autoload@options{#1}}
-\let\bbl@autoload@bcpoptions\@empty
+\def\bbl@autoload@bcpoptions{import}
\@namedef{bbl@ADJ@autoload.bcp47.options}#1{%
\def\bbl@autoload@bcpoptions{#1}}
\newif\ifbbl@bcptoname
@@ -3669,7 +3538,7 @@
\@namedef{bbl@ADJ@select.encoding@off}{%
\let\bbl@encoding@select@off\@empty}
\bbl@trace{Cross referencing macros}
-\ifx\bbl@opt@safe\@empty\else % ie, if 'ref' and/or 'bib'
+\ifx\bbl@opt@safe\@empty\else % i.e., if 'ref' and/or 'bib'
\def\@newl@bel#1#2#3{%
{\@safe@activestrue
\bbl@ifunset{#1@#2}%
@@ -3760,6 +3629,39 @@
\let\org@bibcite\bibcite
\let\org@@bibitem\@bibitem
\fi
+\newcommand\BabelPatchSection[1]{%
+ \@ifundefined{#1}{}{%
+ \bbl@exp{\let\<bbl@ss@#1>\<#1>}%
+ \@namedef{#1}{%
+ \@ifstar{\bbl@presec@s{#1}}%
+ {\@dblarg{\bbl@presec@x{#1}}}}}}
+\def\bbl@presec@x#1[#2]#3{%
+ \bbl@exp{%
+ \\\select@language@x{\bbl@main@language}%
+ \\\bbl@cs{sspre@#1}%
+ \\\bbl@cs{ss@#1}%
+ [\\\foreignlanguage{\languagename}{\unexpanded{#2}}]%
+ {\\\foreignlanguage{\languagename}{\unexpanded{#3}}}%
+ \\\select@language@x{\languagename}}}
+\def\bbl@presec@s#1#2{%
+ \bbl@exp{%
+ \\\select@language@x{\bbl@main@language}%
+ \\\bbl@cs{sspre@#1}%
+ \\\bbl@cs{ss@#1}*%
+ {\\\foreignlanguage{\languagename}{\unexpanded{#2}}}%
+ \\\select@language@x{\languagename}}}
+\IfBabelLayout{sectioning}%
+ {\BabelPatchSection{part}%
+ \BabelPatchSection{chapter}%
+ \BabelPatchSection{section}%
+ \BabelPatchSection{subsection}%
+ \BabelPatchSection{subsubsection}%
+ \BabelPatchSection{paragraph}%
+ \BabelPatchSection{subparagraph}%
+ \def\babel@toc#1{%
+ \select@language@x{\bbl@main@language}}}{}
+\IfBabelLayout{captions}%
+ {\BabelPatchSection{caption}}{}
\bbl@trace{Marks}
\IfBabelLayout{sectioning}
{\ifx\bbl@opt@headfoot\@nnil
@@ -3982,19 +3884,27 @@
\fi}
\fi
\bbl@trace{Macros to switch the text direction}
+\def\bbl@alscripts{%
+ ,Arabic,Syriac,Thaana,Hanifi Rohingya,Hanifi,Sogdian,}
+\def\bbl@rscripts{%
+ Adlam,Avestan,Chorasmian,Cypriot,Elymaic,Garay,%
+ Hatran,Hebrew,Imperial Aramaic,Inscriptional Pahlavi,%
+ Inscriptional Parthian,Kharoshthi,Lydian,Mandaic,Manichaean,%
+ Mende Kikakui,Meroitic Cursive,Meroitic Hieroglyphs,Nabataean,%
+ Nko,Old Hungarian,Old North Arabian,Old Sogdian,%
+ Old South Arabian,Old Turkic,Old Uyghur,Palmyrene,Phoenician,%
+ Psalter Pahlavi,Samaritan,Yezidi,Mandaean,%
+ Meroitic,N'Ko,Orkhon,Todhri}
\def\bbl@provide@dirs#1{%
- \bbl@xin@{\csname bbl@sbcp@#1\endcsname}{,Arab,Syrc,Thaa,}%
+ \bbl@xin@{\csname bbl@sname@#1\endcsname}{\bbl@alscripts\bbl@rscripts}%
\ifin@
- \global\bbl@csarg\chardef{wdir@#1}\tw@
- \else
- \bbl@xin@{\csname bbl@sbcp@#1\endcsname}{%
- ,Armi,Avst,Cprt,Hatr,Hebr,Hung,Lydi,Mand,Mani,Merc,Mero,%
- Narb,Nbat,Nkoo,Orkh,Palm,Phli,Phlp,Phnx,Prti,Samr,Sarb,}%
+ \global\bbl@csarg\chardef{wdir@#1}\@ne
+ \bbl@xin@{\csname bbl@sname@#1\endcsname}{\bbl@alscripts}%
\ifin@
- \global\bbl@csarg\chardef{wdir@#1}\@ne
- \else
- \global\bbl@csarg\chardef{wdir@#1}\z@
+ \global\bbl@csarg\chardef{wdir@#1}\tw@
\fi
+ \else
+ \global\bbl@csarg\chardef{wdir@#1}\z@
\fi
\ifodd\bbl@engine
\bbl@csarg\ifcase{wdir@#1}%
@@ -4130,6 +4040,7 @@
\IfFileExists{\CurrentOption.ldf}%
{\bbl@load@language{\CurrentOption}}%
{#1\bbl@load@language{#2}#3}}
+\DeclareOption{friulian}{\bbl@try@load@lang{}{friulan}{}}
\DeclareOption{hebrew}{%
\ifcase\bbl@engine\or
\bbl@error{only-pdftex-lang}{hebrew}{luatex}{}%
@@ -4157,13 +4068,19 @@
*}}%
{\bbl@error{config-not-found}{}{}{}}%
\fi
+\def\bbl@tempf{,}
+\bbl@foreach\@raw@classoptionslist{%
+ \in@{=}{#1}%
+ \ifin@\else
+ \edef\bbl@tempf{\bbl@tempf\zap@space#1 \@empty,}%
+ \fi}
\ifx\bbl@opt@main\@nnil
\ifnum\bbl@iniflag>\z@ % if all ldf's: set implicitly, no main pass
\let\bbl@tempb\@empty
- \edef\bbl@tempa{\@classoptionslist,\bbl@language@opts}%
+ \edef\bbl@tempa{\bbl@tempf,\bbl@language@opts}%
\bbl@foreach\bbl@tempa{\edef\bbl@tempb{#1,\bbl@tempb}}%
\bbl@foreach\bbl@tempb{% \bbl@tempb is a reversed list
- \ifx\bbl@opt@main\@nnil % ie, if not yet assigned
+ \ifx\bbl@opt@main\@nnil % i.e., if not yet assigned
\ifodd\bbl@iniflag % = *=
\IfFileExists{babel-#1.tex}{\def\bbl@opt@main{#1}}{}%
\else % n +=
@@ -4174,7 +4091,7 @@
\else
\bbl@info{Main language set with 'main='. Except if you have\\%
problems, prefer the default mechanism for setting\\%
- the main language, ie, as the last declared.\\%
+ the main language, i.e., as the last declared.\\%
Reported}
\fi
\ifx\bbl@opt@main\@nnil\else
@@ -4191,11 +4108,11 @@
\else % + * (other = ini)
\DeclareOption{#1}{%
\bbl@ldfinit
- \babelprovide[import]{#1}%
+ \babelprovide[@import]{#1}% %%%%%
\bbl@afterldf{}}%
\fi
\fi}
-\bbl@foreach\@classoptionslist{%
+\bbl@foreach\bbl@tempf{%
\def\bbl@tempa{#1}%
\ifx\bbl@tempa\bbl@opt@main\else
\ifnum\bbl@iniflag<\tw@ % 0 ø (other = ldf)
@@ -4208,18 +4125,20 @@
\IfFileExists{babel-#1.tex}%
{\DeclareOption{#1}{%
\bbl@ldfinit
- \babelprovide[import]{#1}%
+ \babelprovide[@import]{#1}% %%%%%%
\bbl@afterldf{}}}%
{}%
\fi
\fi}
+\NewHook{babel/presets}
+\UseHook{babel/presets}
\def\AfterBabelLanguage#1{%
\bbl@ifsamestring\CurrentOption{#1}{\global\bbl@add\bbl@afterlang}{}}
\DeclareOption*{}
\ProcessOptions*
\bbl@trace{Option 'main'}
\ifx\bbl@opt@main\@nnil
- \edef\bbl@tempa{\@classoptionslist,\bbl@language@opts}
+ \edef\bbl@tempa{\bbl@tempf,\bbl@language@opts}
\let\bbl@tempc\@empty
\edef\bbl@templ{,\bbl@loaded,}
\edef\bbl@templ{\expandafter\strip@prefix\meaning\bbl@templ}
@@ -4243,7 +4162,9 @@
\bbl@ldfinit
\let\CurrentOption\bbl@opt@main
\bbl@exp{% \bbl@opt@provide = empty if *
- \\\babelprovide[\bbl@opt@provide,import,main]{\bbl@opt@main}}%
+ \\\babelprovide
+ [\bbl@opt@provide,@import,main]% %%%%%
+ {\bbl@opt@main}}%
\bbl@afterldf{}
\DeclareOption{\bbl@opt@main}{}
\else % case 0,2 (main is ldf)
diff --git a/Master/texmf-dist/tex/generic/babel/blplain.tex b/Master/texmf-dist/tex/generic/babel/blplain.tex
index e6a4076d6d1..a2c33d76ef7 100644
--- a/Master/texmf-dist/tex/generic/babel/blplain.tex
+++ b/Master/texmf-dist/tex/generic/babel/blplain.tex
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `blplain')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
diff --git a/Master/texmf-dist/tex/generic/babel/bplain.tex b/Master/texmf-dist/tex/generic/babel/bplain.tex
index 0483d7eb722..c9820aeaca9 100644
--- a/Master/texmf-dist/tex/generic/babel/bplain.tex
+++ b/Master/texmf-dist/tex/generic/babel/bplain.tex
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `bplain')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
diff --git a/Master/texmf-dist/tex/generic/babel/errbabel.def b/Master/texmf-dist/tex/generic/babel/errbabel.def
index 42289fe0f57..3d0106e31b1 100644
--- a/Master/texmf-dist/tex/generic/babel/errbabel.def
+++ b/Master/texmf-dist/tex/generic/babel/errbabel.def
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `errors')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
@@ -99,19 +99,19 @@
{This macro is available only in LuaLaTeX and XeLaTeX.}%
{Consider switching to these engines.}
\bbl@errmessage{only-lua}
- {This macro is available only in LuaLaTeX.}%
+ {This macro is available only in LuaLaTeX}%
{Consider switching to that engine.}
\bbl@errmessage{unknown-provide-key}
{Unknown key '#1' in \string\babelprovide}%
{See the manual for valid keys}%
\bbl@errmessage{unknown-mapfont}
{Option '\bbl@KVP@mapfont' unknown for\\%
- mapfont. Use 'direction'.}%
+ mapfont. Use 'direction'}%
{See the manual for details.}
\bbl@errmessage{no-ini-file}
{There is no ini file for the requested language\\%
(#1: \languagename). Perhaps you misspelled it or your\\%
- installation is not complete.}%
+ installation is not complete}%
{Fix the name or reinstall babel.}
\bbl@errmessage{digits-is-reserved}
{The counter name 'digits' is reserved for mapping\\%
@@ -119,7 +119,7 @@
{Use another name.}
\bbl@errmessage{limit-two-digits}
{Currently two-digit years are restricted to the\\
- range 0-9999.}%
+ range 0-9999}%
{There is little you can do. Sorry.}
\bbl@errmessage{alphabetic-too-large}
{Alphabetic numeral too large (#1)}%
@@ -131,20 +131,20 @@
{See the manual for details.}
\bbl@errmessage{unknown-ini-field}
{Unknown field '#1' in \string\BCPdata.\\%
- Perhaps you misspelled it.}%
+ Perhaps you misspelled it}%
{See the manual for details.}
\bbl@errmessage{unknown-locale-key}
{Unknown key for locale '#2':\\%
#3\\%
- \string#1 will be set to \relax}%
+ \string#1 will be set to \string\relax}%
{Perhaps you misspelled it.}%
\bbl@errmessage{adjust-only-vertical}
{Currently, #1 related features can be adjusted only\\%
- in the main vertical list.}%
+ in the main vertical list}%
{Maybe things change in the future, but this is what it is.}
\bbl@errmessage{layout-only-vertical}
{Currently, layout related features can be adjusted only\\%
- in vertical mode.}%
+ in vertical mode}%
{Maybe things change in the future, but this is what it is.}
\bbl@errmessage{bidi-only-lua}
{The bidi method 'basic' is available only in\\%
@@ -174,11 +174,11 @@
{See the manual for further info}
\bbl@errmessage{unknown-interchar}
{'#1' for '\languagename' cannot be enabled.\\%
- Maybe there is a typo.}%
+ Maybe there is a typo}%
{See the manual for further details.}
\bbl@errmessage{unknown-interchar-b}
{'#1' for '\languagename' cannot be disabled.\\%
- Maybe there is a typo.}%
+ Maybe there is a typo}%
{See the manual for further details.}
\bbl@errmessage{charproperty-only-vertical}
{\string\babelcharproperty\space can be used only in\\%
@@ -213,7 +213,11 @@
{The '#1' ldf style doesn't work with #2,\\%
but you can use the ini locale instead.\\%
Try adding 'provide=*' to the option list. You may\\%
- also want to set 'bidi=' to some value.}%
+ also want to set 'bidi=' to some value}%
+ {See the manual for further details.}
+\bbl@errmessage{hyphenmins-args}
+ {\string\babelhyphenmins\ accepts either the optional\\%
+ argument or the star, but not both at the same time}%
{See the manual for further details.}
\endinput
%%
diff --git a/Master/texmf-dist/tex/generic/babel/hyphen.cfg b/Master/texmf-dist/tex/generic/babel/hyphen.cfg
index 722fe372add..fcb60c0cc7b 100644
--- a/Master/texmf-dist/tex/generic/babel/hyphen.cfg
+++ b/Master/texmf-dist/tex/generic/babel/hyphen.cfg
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `patterns')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
@@ -37,10 +37,10 @@
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{hyphen.cfg}[2024/08/29 v24.9 Babel hyphens]
+\ProvidesFile{hyphen.cfg}[2025/01/25 v25.2 Babel hyphens]
\xdef\bbl@format{\jobname}
-\def\bbl@version{24.9}
-\def\bbl@date{2024/08/29}
+\def\bbl@version{25.2}
+\def\bbl@date{2025/01/25}
\ifx\AtBeginDocument\@undefined
\def\@empty{}
\fi
@@ -132,7 +132,7 @@
\righthyphenmin##2\relax}%
\def\selectlanguage{%
\errhelp{Selecting a language requires a package supporting it}%
- \errmessage{Not loaded}}%
+ \errmessage{No multilingual package has been loaded}}%
\let\foreignlanguage\selectlanguage
\let\otherlanguage\selectlanguage
\expandafter\let\csname otherlanguage*\endcsname\selectlanguage
diff --git a/Master/texmf-dist/tex/generic/babel/locale/arq/babel-algerianarabic.tex b/Master/texmf-dist/tex/generic/babel/locale/arq/babel-algerianarabic.tex
new file mode 100644
index 00000000000..a4a902c90a4
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/babel/locale/arq/babel-algerianarabic.tex
@@ -0,0 +1,12 @@
+% This file is part of babel. For further details see:
+% https://www.ctan.org/pkg/babel
+\ifx\BabelBeforeIni\undefined
+ \PackageError{babel}%
+ {This file is a component of babel and cannot\MessageBreak
+ be loaded directly. I'll stop immediately}%
+ {Just use babel as documented.}%
+ \stop
+\fi
+\BabelBeforeIni{arq}{%
+}
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/babel/locale/arq/babel-arq.ini b/Master/texmf-dist/tex/generic/babel/locale/arq/babel-arq.ini
new file mode 100644
index 00000000000..90414b07d6a
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/babel/locale/arq/babel-arq.ini
@@ -0,0 +1,140 @@
+; This file is part of babel. For further details see:
+; https://www.ctan.org/pkg/babel
+; Data has been collected mainly from the following sources:
+; * Common Locale Data Repository (license Unicode):
+; http://cldr.unicode.org/
+; http://unicode.org/copyright.html
+
+[identification]
+charset = utf8
+version = 0.1
+date = 2025-01-19
+name.local = اللهجة الجزائرية
+name.english = Algerian Arabic
+name.babel = algerianarabic
+tag.bcp47 = arq
+language.tag.bcp47 = arq
+tag.bcp47.likely = arq-Arab-DZ
+; see https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags
+tag.opentype =
+script.name = Arabic
+script.tag.bcp47 = Arab
+script.tag.opentype = arab
+level = 1
+encodings =
+derivate = no
+warning = This is a bare minimum locale for 'algerianarabic'.
+
+[captions]
+; xetex, luatex
+preface =
+ref =
+abstract =
+bib =
+chapter =
+appendix =
+contents =
+listfigure =
+listtable =
+index =
+figure =
+table =
+part =
+encl =
+cc =
+headto =
+page =
+see =
+also =
+proof =
+glossary =
+
+[captions.licr]
+; pdftex
+preface =
+ref =
+abstract =
+bib =
+chapter =
+appendix =
+contents =
+listfigure =
+listtable =
+index =
+figure =
+table =
+part =
+encl =
+cc =
+headto =
+page =
+see =
+also =
+proof =
+glossary =
+
+[date.gregorian]
+date.long = [d][ ][MMMM] [y]
+date.short = [y]-[MM]-[dd]
+months.wide.1 =
+months.wide.2 =
+months.wide.3 =
+months.wide.4 =
+months.wide.5 =
+months.wide.6 =
+months.wide.7 =
+months.wide.8 =
+months.wide.9 =
+months.wide.10 =
+months.wide.11 =
+months.wide.12 =
+
+[date.gregorian.licr]
+months.wide.1 =
+months.wide.2 =
+months.wide.3 =
+months.wide.4 =
+months.wide.5 =
+months.wide.6 =
+months.wide.7 =
+months.wide.8 =
+months.wide.9 =
+months.wide.10 =
+months.wide.11 =
+months.wide.12 =
+
+[time.gregorian]
+time.medium = [HH]:[mm]:[ss]
+time.short = [HH]:[mm]
+
+[typography]
+frenchspacing = yes
+hyphenrules =
+lefthyphenmin =
+righthyphenmin =
+hyphenchar =
+prehyphenchar =
+posthyphenchar =
+exhyphenchar =
+preexhyphenchar =
+postexhyphenchar =
+hyphenationmin =
+
+[characters]
+delimiters.quotes = ”“’‘
+auxiliary = [ـ\u200C\u200D\u200E\u200F پ چ ژ ڜ ڢ ڤ ڥ ٯ ڧ ڨ ک گ ی]
+exemplarCharacters = [\u064B \u064C \u064D \u064E \u064F \u0650 \u0651 \u0652 \u0670 ء أ ؤ إ ئ ا آ ب ة ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ى ي]
+index = [ا ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي]
+punctuation = [\\- ‐ ‑ – — ، ؛ \\: ! ؟ . … ' \" « » ( ) \\[ \\]]
+
+[numbers]
+defaultNumberingSystem = latn
+digits.native = ٠١٢٣٤٥٦٧٨٩
+minimumGroupingDigits = 1
+decimal = ,
+exponential = E
+group = .
+
+[counters]
+abjad = أ ب ج د ه‍ و ز ح ط ي ك ل م ن س ع ف ص ق ر ش ت ث خ ذ ض ظ غ
+maghrebi.abjad = أ ب ج د ه‍ و ز ح ط ي ك ل م ن ص ع ف ض ق ر س ت ث خ ذ ظ غ ش
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ckb/babel-ckb.ini b/Master/texmf-dist/tex/generic/babel/locale/ckb/babel-ckb.ini
index 627d3defb26..3fa852ac2b7 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ckb/babel-ckb.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ckb/babel-ckb.ini
@@ -12,11 +12,11 @@
[identification]
charset = utf8
-version = 1.7
-date = 2022-12-08
+version = 1.8
+date = 2024-12-08
name.local = کوردیی ناوەندی
name.english = Central Kurdish
-name.babel = sorani centralkurdish
+name.babel = centralkurdish sorani
name.polyglossia = kurdish
tag.bcp47 = ckb
language.tag.bcp47 = ckb
@@ -135,6 +135,36 @@ months.narrow.10 = خ
months.narrow.11 = ڕ
months.narrow.12 = ڕ
+[date.persian]
+date.long =
+months.wide.1 =
+months.wide.2 =
+months.wide.3 =
+months.wide.4 =
+months.wide.5 =
+months.wide.6 =
+months.wide.7 =
+months.wide.8 =
+months.wide.9 =
+months.wide.10 =
+months.wide.11 =
+months.wide.12 =
+
+[date.islamic]
+date.long =
+months.wide.1 =
+months.wide.2 =
+months.wide.3 =
+months.wide.4 =
+months.wide.5 =
+months.wide.6 =
+months.wide.7 =
+months.wide.8 =
+months.wide.9 =
+months.wide.10 =
+months.wide.11 =
+months.wide.12 =
+
[time.gregorian]
time.medium = [h]:[mm]:[ss] [a]
time.short = [h]:[mm] [a]
diff --git a/Master/texmf-dist/tex/generic/babel/locale/cy/babel-cy.ini b/Master/texmf-dist/tex/generic/babel/locale/cy/babel-cy.ini
index cf531ad9367..22be38bc8f3 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/cy/babel-cy.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/cy/babel-cy.ini
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.3
-date = 2022-07-02
+version = 1.4
+date = 2025-01-25
name.local = Cymraeg
name.english = Welsh
name.babel = welsh
@@ -61,7 +61,7 @@ listfigure = Rhestr\space Ddarluniau
listtable = Rhestr\space Dablau
index = Mynegai
figure = Darlun
-table = Taflen
+table = Tabl
part = Rhan
encl = amgae\"edig
cc = cop\"\i au
diff --git a/Master/texmf-dist/tex/generic/babel/locale/el/babel-el-polyton.ini b/Master/texmf-dist/tex/generic/babel/locale/el/babel-el-polyton.ini
index ddb4f370899..b8aae6be369 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/el/babel-el-polyton.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/el/babel-el-polyton.ini
@@ -4,8 +4,8 @@
[identification]
charset = utf8
-version = 1.1
-date = 2023-04-10
+version = 1.2
+date = 2024-10-14
name.local = Ἐλληνικά
; Name from https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
name.english = Polytonic Greek
@@ -196,7 +196,7 @@ upper.modern.S.321 = ʹ
lower.ancient.1 = α β γ δ ε ϛ ζ η θ
lower.ancient.2 = ι κ λ μ ν ξ ο π ϟ
lower.ancient.3 = ρ σ τ υ φ χ ψ ω ϡ
-lower.ancient.4 = ͵α ͵β ͵γ ͵δ ͵ε ͵Ϛ ͵ζ ͵η ͵θ
+lower.ancient.4 = ͵α ͵β ͵γ ͵δ ͵ε ͵ϛ ͵ζ ͵η ͵θ
lower.ancient.S.321 = ʹ
upper.ancient.1 = Α Β Γ Δ Ε Ϛ Ζ Η Θ
upper.ancient.2 = Ι Κ Λ Μ Ν Ξ Ο Π Ϟ
diff --git a/Master/texmf-dist/tex/generic/babel/locale/el/babel-el.ini b/Master/texmf-dist/tex/generic/babel/locale/el/babel-el.ini
index a84e306423c..c00b5308375 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/el/babel-el.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/el/babel-el.ini
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.10
-date = 2023-04-10
+version = 1.11
+date = 2024-10-14
name.local = Ελληνικά
name.english = Greek
name.babel = greek monotonicgreek
@@ -200,7 +200,7 @@ upper.modern.S.321 = ʹ
lower.ancient.1 = α β γ δ ε ϛ ζ η θ
lower.ancient.2 = ι κ λ μ ν ξ ο π ϟ
lower.ancient.3 = ρ σ τ υ φ χ ψ ω ϡ
-lower.ancient.4 = ͵α ͵β ͵γ ͵δ ͵ε ͵Ϛ ͵ζ ͵η ͵θ
+lower.ancient.4 = ͵α ͵β ͵γ ͵δ ͵ε ͵ϛ ͵ζ ͵η ͵θ
lower.ancient.S.321 = ʹ
upper.ancient.1 = Α Β Γ Δ Ε Ϛ Ζ Η Θ
upper.ancient.2 = Ι Κ Λ Μ Ν Ξ Ο Π Ϟ
diff --git a/Master/texmf-dist/tex/generic/babel/locale/el/babel-greek.tex b/Master/texmf-dist/tex/generic/babel/locale/el/babel-greek.tex
index 7cf89429810..f7ffd341e3b 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/el/babel-greek.tex
+++ b/Master/texmf-dist/tex/generic/babel/locale/el/babel-greek.tex
@@ -41,12 +41,12 @@
\def\greek@num@format#1#2#3#4#5#6#7#8{%
\BabelGreekNumeralMarker{%
\BabelGreekNumeralMyriads#1#2#3#4%
- \ifcase#5\or ͵α\or ͵β\or ͵γ\or ͵δ\or ͵ε\or ͵Ϛ\or ͵ζ\or ͵η\or ͵θ\fi
+ \ifcase#5\or ͵α\or ͵β\or ͵γ\or ͵δ\or ͵ε\or ͵ϛ\or ͵ζ\or ͵η\or ͵θ\fi
\ifnum#6#7#8=\z@\else
\BabelGreekNumeralMarkerEnd{%
\ifcase#6\or ρ\or σ\or τ\or υ\or φ\or χ\or ψ\or ω\or ϡ\fi
\ifcase#7\or ι\or κ\or λ\or μ\or ν\or ξ\or ο\or π\or ϟ\fi
- \ifcase#8\or α\or β\or γ\or δ\or ε\or Ϛ\or ζ\or η\or θ\fi}%
+ \ifcase#8\or α\or β\or γ\or δ\or ε\or ϛ\or ζ\or η\or θ\fi}%
\fi}}
\def\greek@invalid{%
diff --git a/Master/texmf-dist/tex/generic/babel/locale/el/babel-polytonicgreek.tex b/Master/texmf-dist/tex/generic/babel/locale/el/babel-polytonicgreek.tex
index 4f52408717c..707d02822f7 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/el/babel-polytonicgreek.tex
+++ b/Master/texmf-dist/tex/generic/babel/locale/el/babel-polytonicgreek.tex
@@ -41,12 +41,12 @@
\def\greek@num@format#1#2#3#4#5#6#7#8{%
\BabelGreekNumeralMarker{%
\BabelGreekNumeralMyriads#1#2#3#4%
- \ifcase#5\or ͵α\or ͵β\or ͵γ\or ͵δ\or ͵ε\or ͵Ϛ\or ͵ζ\or ͵η\or ͵θ\fi
+ \ifcase#5\or ͵α\or ͵β\or ͵γ\or ͵δ\or ͵ε\or ͵ϛ\or ͵ζ\or ͵η\or ͵θ\fi
\ifnum#6#7#8=\z@\else
\BabelGreekNumeralMarkerEnd{%
\ifcase#6\or ρ\or σ\or τ\or υ\or φ\or χ\or ψ\or ω\or ϡ\fi
\ifcase#7\or ι\or κ\or λ\or μ\or ν\or ξ\or ο\or π\or ϟ\fi
- \ifcase#8\or α\or β\or γ\or δ\or ε\or Ϛ\or ζ\or η\or θ\fi}%
+ \ifcase#8\or α\or β\or γ\or δ\or ε\or ϛ\or ζ\or η\or θ\fi}%
\fi}}
\def\greek@invalid{%
diff --git a/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-BE.ini b/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-BE.ini
index 7c72949c135..94254e5452c 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-BE.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-BE.ini
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.0
-date = 2024-01-03
+version = 1.2
+date = 2024-11-29
name.local = français
name.english = French
name.babel = french-belgium french-be
@@ -188,37 +188,37 @@ superscriptingExponent = ×
date.day = 1\textsuperscript{er} 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
[transforms.prehyphenation]
-punctuation.space.1.0 = { [^|{(}{[}{007B}] () [;!{?}] () }
+punctuation.space.1.0 = { [^|{(}{[}{007B}!{?}] () [;!{?}] () }
punctuation.space.1.1 = { insert, penalty = 10000 }
-punctuation.space.1.2 = { insert, spacefactor= .5 0 0, data = 1 }
+punctuation.space.1.2 = { insert, spacefactor= {high.natural|.5} {high.plus|0} {high.minus|0}, data = 1 }
punctuation.space.1.3 = {}
-punctuation.space.2.0 = { [^{(}{[}{007B}] () | [;!{?}] () }
+punctuation.space.2.0 = { [^{(}{[}{007B}!{?}] () | [;!{?}] () }
punctuation.space.2.1 = { insert, penalty = 10000 }
-punctuation.space.2.2 = { spacefactor= .5 0 0, data = 2 }
+punctuation.space.2.2 = { spacefactor= {high.natural|.5} {high.plus|0} {high.minus|0}, data = 2 }
punctuation.space.2.3 = {}
punctuation.space.3.0 = { [^|{(}{[}{007B} ] () : () }
punctuation.space.3.1 = { insert, penalty = 10000 }
-punctuation.space.3.2 = { insert, spacefactor= 1 1 1, data = 1 }
+punctuation.space.3.2 = { insert, spacefactor= {colon.natural|1} {colon.plus|1} {colon.minus|1}, data = 1 }
punctuation.space.3.3 = {}
punctuation.space.4.0 = { [^{(}{[}{007B} ] () |: () }
punctuation.space.4.1 = { insert, penalty = 10000 }
-punctuation.space.4.2 = { spacefactor= 1 1 1, data = 2 }
+punctuation.space.4.2 = { spacefactor= {colon.natural|1} {colon.plus|1} {colon.minus|1}, data = 2 }
punctuation.space.4.3 = {}
punctuation.space.5.0 = { [^|]()»() }
punctuation.space.5.1 = { insert, penalty = 10000 }
-punctuation.space.5.2 = { insert, spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.5.2 = { insert, spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
punctuation.space.5.3 = {}
punctuation.space.6.0 = { [^|]()|»() }
punctuation.space.6.1 = { insert, penalty = 10000 }
-punctuation.space.6.2 = { spacefactor= .8 .3 .8, data = 2 }
+punctuation.space.6.2 = { spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 2 }
punctuation.space.6.3 = {}
punctuation.space.7.0 = { «[^|] }
punctuation.space.7.1 = {}
punctuation.space.7.2 = { insert, penalty = 10000 }
-punctuation.space.7.3 = { insert, spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.7.3 = { insert, spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
punctuation.space.7.4 = {}
punctuation.space.8.0 = { «|[^|] }
punctuation.space.8.1 = {}
punctuation.space.8.2 = { insert, penalty = 10000 }
-punctuation.space.8.3 = { spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.8.3 = { spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
punctuation.space.8.4 = {}
diff --git a/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-CA.ini b/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-CA.ini
index 86116c3395a..2717612f514 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-CA.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-CA.ini
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.0
-date = 2024-01-03
+version = 1.1
+date = 2024-11-05
name.local = français canadien
name.english = Canadian French
name.babel = canadien french-canada french-ca canadianfrench
@@ -190,27 +190,27 @@ date.day = 1\textsuperscript{er} 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2
[transforms.prehyphenation]
punctuation.space.1.0 = { [^|{(}{[}{007B} ] () : () }
punctuation.space.1.1 = { insert, penalty = 10000 }
-punctuation.space.1.2 = { insert, spacefactor= 1 1 1, data = 1 }
+punctuation.space.1.2 = { insert, spacefactor= {colon.natural|1} {colon.plus|1} {colon.minus|1}, data = 1 }
punctuation.space.1.3 = {}
punctuation.space.2.0 = { [^{(}{[}{007B} ] () |: () }
punctuation.space.2.1 = { insert, penalty = 10000 }
-punctuation.space.2.2 = { spacefactor= 1 1 1, data = 2 }
+punctuation.space.2.2 = { spacefactor= {colon.natural|1} {colon.plus|1} {colon.minus|1}, data = 2 }
punctuation.space.2.3 = {}
punctuation.space.3.0 = { [^|]()»() }
punctuation.space.3.1 = { insert, penalty = 10000 }
-punctuation.space.3.2 = { insert, spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.3.2 = { insert, spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
punctuation.space.3.3 = {}
punctuation.space.4.0 = { [^|]()|»() }
punctuation.space.4.1 = { insert, penalty = 10000 }
-punctuation.space.4.2 = { spacefactor= .8 .3 .8, data = 2 }
+punctuation.space.4.2 = { spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 2 }
punctuation.space.4.3 = {}
punctuation.space.5.0 = { «[^|] }
punctuation.space.5.1 = {}
punctuation.space.5.2 = { insert, penalty = 10000 }
-punctuation.space.5.3 = { insert, spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.5.3 = { insert, spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
punctuation.space.5.4 = {}
punctuation.space.6.0 = { «|[^|] }
punctuation.space.6.1 = {}
punctuation.space.6.2 = { insert, penalty = 10000 }
-punctuation.space.6.3 = { spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.6.3 = { spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
punctuation.space.6.4 = {}
diff --git a/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr.ini b/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr.ini
index 5567074e9a1..b3611e80e0f 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr.ini
@@ -1,7 +1,7 @@
; This file is part of babel. For further details see:
; https://www.ctan.org/pkg/babel
; Data has been collected mainly from the following sources:
-; * babel language styles (license LPPL):
+; * babel language styles (license LPPL):€
; https://www.ctan.org/pkg/babel-contrib
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.0
-date = 2024-01-03
+version = 1.2
+date = 2024-11-29
name.local = français
name.english = French
name.babel = french
@@ -187,38 +187,38 @@ superscriptingExponent = ×
date.day = 1\textsuperscript{er} 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
[transforms.prehyphenation]
-punctuation.space.1.0 = { [^|{(}{[}{007B}] () [;!{?}] () }
+punctuation.space.1.0 = { [^|{(}{[}{007B}!{?}] () [;!{?}] () }
punctuation.space.1.1 = { insert, penalty = 10000 }
-punctuation.space.1.2 = { insert, spacefactor= .5 0 0, data = 1 }
+punctuation.space.1.2 = { insert, spacefactor= {high.natural|.5} {high.plus|0} {high.minus|0}, data = 1 }
punctuation.space.1.3 = {}
-punctuation.space.2.0 = { [^{(}{[}{007B}] () | [;!{?}] () }
+punctuation.space.2.0 = { [^{(}{[}{007B}!{?}] () | [;!{?}] () }
punctuation.space.2.1 = { insert, penalty = 10000 }
-punctuation.space.2.2 = { spacefactor= .5 0 0, data = 2 }
+punctuation.space.2.2 = { spacefactor= {high.natural|.5} {high.plus|0} {high.minus|0}, data = 2 }
punctuation.space.2.3 = {}
punctuation.space.3.0 = { [^|{(}{[}{007B} ] () : () }
punctuation.space.3.1 = { insert, penalty = 10000 }
-punctuation.space.3.2 = { insert, spacefactor= 1 1 1, data = 1 }
+punctuation.space.3.2 = { insert, spacefactor= {colon.natural|1} {colon.plus|1} {colon.minus|1}, data = 1 }
punctuation.space.3.3 = {}
punctuation.space.4.0 = { [^{(}{[}{007B} ] () |: () }
punctuation.space.4.1 = { insert, penalty = 10000 }
-punctuation.space.4.2 = { spacefactor= 1 1 1, data = 2 }
+punctuation.space.4.2 = { spacefactor= {colon.natural|1} {colon.plus|1} {colon.minus|1}, data = 2 }
punctuation.space.4.3 = {}
punctuation.space.5.0 = { [^|]()»() }
punctuation.space.5.1 = { insert, penalty = 10000 }
-punctuation.space.5.2 = { insert, spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.5.2 = { insert, spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
punctuation.space.5.3 = {}
punctuation.space.6.0 = { [^|]()|»() }
punctuation.space.6.1 = { insert, penalty = 10000 }
-punctuation.space.6.2 = { spacefactor= .8 .3 .8, data = 2 }
+punctuation.space.6.2 = { spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 2 }
punctuation.space.6.3 = {}
punctuation.space.7.0 = { «[^|] }
punctuation.space.7.1 = {}
punctuation.space.7.2 = { insert, penalty = 10000 }
-punctuation.space.7.3 = { insert, spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.7.3 = { insert, spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
punctuation.space.7.4 = {}
punctuation.space.8.0 = { «|[^|] }
punctuation.space.8.1 = {}
punctuation.space.8.2 = { insert, penalty = 10000 }
-punctuation.space.8.3 = { spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.8.3 = { spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
punctuation.space.8.4 = {}
diff --git a/Master/texmf-dist/tex/generic/babel/locale/grc/babel-ancientgreek.tex b/Master/texmf-dist/tex/generic/babel/locale/grc/babel-ancientgreek.tex
index 2425d655e5c..e8d56403660 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/grc/babel-ancientgreek.tex
+++ b/Master/texmf-dist/tex/generic/babel/locale/grc/babel-ancientgreek.tex
@@ -49,12 +49,12 @@
\def\greek@num@format#1#2#3#4#5#6#7#8{%
\BabelGreekNumeralMarker{%
\BabelGreekNumeralMyriads#1#2#3#4%
- \ifcase#5\or ͵α\or ͵β\or ͵γ\or ͵δ\or ͵ε\or ͵Ϛ\or ͵ζ\or ͵η\or ͵θ\fi
+ \ifcase#5\or ͵α\or ͵β\or ͵γ\or ͵δ\or ͵ε\or ͵ϛ\or ͵ζ\or ͵η\or ͵θ\fi
\ifnum#6#7#8=\z@\else
\BabelGreekNumeralMarkerEnd{%
\ifcase#6\or ρ\or σ\or τ\or υ\or φ\or χ\or ψ\or ω\or ϡ\fi
\ifcase#7\or ι\or κ\or λ\or μ\or ν\or ξ\or ο\or π\or ϟ\fi
- \ifcase#8\or α\or β\or γ\or δ\or ε\or Ϛ\or ζ\or η\or θ\fi}%
+ \ifcase#8\or α\or β\or γ\or δ\or ε\or ϛ\or ζ\or η\or θ\fi}%
\fi}}
\def\greek@invalid{%
diff --git a/Master/texmf-dist/tex/generic/babel/locale/grc/babel-grc.ini b/Master/texmf-dist/tex/generic/babel/locale/grc/babel-grc.ini
index d11485f64af..a62a6c008ea 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/grc/babel-grc.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/grc/babel-grc.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.8
-date = 2022-07-28
+version = 1.9
+date = 2024-10-14
name.local = Αρχαία ελληνικά
name.english = Ancient Greek
name.babel = ancientgreek
@@ -179,7 +179,7 @@ superscriptingExponent = ×
lower.ancient.1 = α β γ δ ε ϛ ζ η θ
lower.ancient.2 = ι κ λ μ ν ξ ο π ϟ
lower.ancient.3 = ρ σ τ υ φ χ ψ ω ϡ
-lower.ancient.4 = ͵α ͵β ͵γ ͵δ ͵ε ͵Ϛ ͵ζ ͵η ͵θ
+lower.ancient.4 = ͵α ͵β ͵γ ͵δ ͵ε ͵ϛ ͵ζ ͵η ͵θ
lower.ancient.S.321 = ʹ
upper.ancient.1 = Α Β Γ Δ Ε Ϛ Ζ Η Θ
upper.ancient.2 = Ι Κ Λ Μ Ν Ξ Ο Π Ϟ
diff --git a/Master/texmf-dist/tex/generic/babel/locale/isv/babel-interslavic.tex b/Master/texmf-dist/tex/generic/babel/locale/isv/babel-interslavic.tex
new file mode 100644
index 00000000000..95f382ed293
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/babel/locale/isv/babel-interslavic.tex
@@ -0,0 +1,12 @@
+% This file is part of babel. For further details see:
+% https://www.ctan.org/pkg/babel
+\ifx\BabelBeforeIni\undefined
+ \PackageError{babel}%
+ {This file is a component of babel and cannot\MessageBreak
+ be loaded directly. I'll stop immediately}%
+ {Just use babel as documented.}%
+ \stop
+\fi
+\BabelBeforeIni{isv}{%
+}
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/babel/locale/isv/babel-isv.ini b/Master/texmf-dist/tex/generic/babel/locale/isv/babel-isv.ini
new file mode 100644
index 00000000000..695ad5ed9b7
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/babel/locale/isv/babel-isv.ini
@@ -0,0 +1,139 @@
+; This file is part of babel. For further details see:
+; https://www.ctan.org/pkg/babel
+; Data has been collected mainly from the following sources:
+; * babel language styles (license LPPL):
+; https://www.ctan.org/pkg/babel-contrib
+; Data contributed by Adiee5
+
+
+[identification]
+charset = utf8
+version = 1.0
+date = 2024-12-18
+name.local = Medžuslovjansky
+name.english = Interslavic
+name.babel = interslavic
+tag.bcp47 = isv
+language.tag.bcp47 = isv
+tag.bcp47.likely =
+tag.opentype = ISV
+script.name = Latin
+script.tag.bcp47 = Latn
+script.tag.opentype = latn
+level = 1
+encodings = T1 OT1
+
+[captions]
+preface = Prědslovje
+ref = Literatura
+abstract = Rezjume
+bib = Bibliografija
+chapter = Glava
+appendix = Dodatok
+contents = Sodržanje
+listfigure = Spisok ilustracij
+listtable = Spisok tabel
+index = Indeks
+figure = Ilustracija
+table = Tabela
+part = Čest
+encl = Priloga
+cc = Kopije
+headto = Do
+page = Stranica
+see = uvidi
+also = uvidi takože
+proof = Dokaz
+glossary = Slovnik
+
+[captions.licr]
+preface = Pr\v edslovje
+ref = Literatura
+abstract = Rezjume
+bib = Bibliografija
+chapter = Glava
+appendix = Dodatok
+contents = Sodr\v zanje
+listfigure = Spisok ilustracij
+listtable = Spisok tabel
+index = Indeks
+figure = Ilustracija
+table = Tabela
+part = \v Cest
+encl = Priloga
+cc = Kopije
+headto = Do
+page = Stranica
+see = uvidi
+also = uvidi tako\v ze
+proof = Dokaz
+glossary = Slovnik
+
+[date.gregorian]
+date.long = [d][ ][MMMM] [y]
+months.wide.1 = januara
+months.wide.2 = fevruara
+months.wide.3 = marca
+months.wide.4 = aprilja
+months.wide.5 = maja
+months.wide.6 = junija
+months.wide.7 = julija
+months.wide.8 = avgusta
+months.wide.9 = septembra
+months.wide.10 = oktobra
+months.wide.11 = novembra
+months.wide.12 = dekembra
+
+[date.gregorian.licr]
+months.wide.1 = januara
+months.wide.2 = fevruara
+months.wide.3 = marca
+months.wide.4 = aprilja
+months.wide.5 = maja
+months.wide.6 = junija
+months.wide.7 = julija
+months.wide.8 = avgusta
+months.wide.9 = septembra
+months.wide.10 = oktobra
+months.wide.11 = novembra
+months.wide.12 = dekembra
+
+[time.gregorian]
+time.medium =
+time.short =
+
+[typography]
+frenchspacing = yes
+; Tentative setting:
+hyphenrules = czech
+lefthyphenmin =
+righthyphenmin =
+hyphenchar =
+prehyphenchar =
+posthyphenchar =
+exhyphenchar =
+preexhyphenchar =
+postexhyphenchar =
+hyphenationmin =
+
+[characters]
+delimiters.quotes =
+auxiliary =
+exemplarCharacters =
+index =
+punctuation =
+
+[numbers]
+defaultNumberingSystem =
+minimumGroupingDigits =
+decimal =
+exponential =
+group =
+infinity =
+list =
+minusSign =
+nan =
+perMille =
+percentSign =
+plusSign =
+superscriptingExponent =
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ja/babel-ja.ini b/Master/texmf-dist/tex/generic/babel/locale/ja/babel-ja.ini
index eab65831399..812f7673f3b 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ja/babel-ja.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ja/babel-ja.ini
@@ -10,8 +10,8 @@
[identification]
charset = utf8
-version = 1.12
-date = 2024-08-27
+version = 1.13
+date = 2024-11-29
name.local = 日本語
name.english = Japanese
name.babel = japanese
@@ -200,8 +200,10 @@ fullwidth.upper.alpha = A B C D E F G H I J K L M N
[transforms.prehyphenation]
linebreak.strict.1.0 = { [々ぁぃぅぇぉっゃゅょゎ゛-ゞァィゥェォッャュョヮヵヶゕゖㇰ-ㇿ・-ヾ・-ゥェ-ー゙] }
-linebreak.strict.1.1 = { insert, penalty = 10000, step = 1 }
-linebreak.strict.1.2 = {}
+linebreak.strict.1.1 = { insert, penalty = {small.penalty|10000}, step = 1 }
+; Don’t rely on internal names. Definitive names to be decided.
+linebreak.strict.1.2 = { insert, space = {small.natural|intraspace.b} {small.plus|intraspace.p} {small.minus|intraspace.m} }
+linebreak.strict.1.3 = {}
;
spacing.basic.1.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[([{〈《「『【〔〖〘〚“〝]() }
spacing.basic.1.1 = { insert, kern = -.5 }
diff --git a/Master/texmf-dist/tex/generic/babel/locale/kmr/babel-kmr.ini b/Master/texmf-dist/tex/generic/babel/locale/kmr/babel-kmr.ini
index 5e96b1494ac..6a413b48944 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/kmr/babel-kmr.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/kmr/babel-kmr.ini
@@ -13,7 +13,7 @@ version = 1.1
date = 2020-06-30
name.local = Kurmancî
name.english = Northern Kurdish
-name.babel = kurmanji northernkurdish
+name.babel = northernkurdish kurmanji
name.polyglossia = kurdish
tag.bcp47 = kmr
language.tag.bcp47 = kmr
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ku/babel-ku.ini b/Master/texmf-dist/tex/generic/babel/locale/ku/babel-ku.ini
new file mode 100644
index 00000000000..9bd0225fe7b
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/babel/locale/ku/babel-ku.ini
@@ -0,0 +1,212 @@
+; This file is part of babel. For further details see:
+; https://www.ctan.org/pkg/babel
+; Data has been collected mainly from the following sources:
+; * babel language styles (license LPPL):
+; https://www.ctan.org/pkg/babel-contrib
+; * Common Locale Data Repository (license Unicode):
+; http://cldr.unicode.org/
+; http://unicode.org/copyright.html
+
+[identification]
+charset = utf8
+version = 1.0
+date = 2024-12-06
+name.local = kurdî (kurmancî)
+name.english = Kurdish
+name.babel = kurdish kurmanji
+name.polyglossia = kurdish
+tag.bcp47 = ku
+language.tag.bcp47 = ku
+tag.opentype = KUR
+script.name = Latin
+script.tag.bcp47 = Latn
+script.tag.opentype = latn
+polyglossia.variant = kurmanji
+level = 1
+encodings =
+derivate = no
+
+[captions]
+preface = Peşgotin
+ref = Pirtuken bijartî
+abstract = Kurtebîr
+bib = Çavkanîya Pirtukan
+chapter = Serê
+appendix = Tebînîya
+contents = Navêrok
+listfigure = Hejmara Dimena
+listtable = Hejmara Kevalen
+index = Endeks
+figure = Dimenê
+table = Kevala
+part = Bêşa
+encl = Dumahik
+cc = Belavker
+headto = Ji bo
+page = Rûpelê
+see = binêra
+also = le vêya ji binêra
+proof = Delîl
+glossary = Çavkanîya lêkolînê
+
+[captions.licr]
+preface = Pe\c sgotin
+ref = Pirtuken\space bijart\^\i
+abstract = Kurteb\^\i r
+bib = \c Cavkan\^\i ya\space Pirtukan
+chapter = Ser\^e
+appendix = Teb\^\i n\^\i ya
+contents = Nav\^erok
+listfigure = Hejmara\space Dimena
+listtable = Hejmara\space Kevalen
+index = Endeks
+figure = Dimen\^e
+table = Kevala
+part = B\^e\c sa
+encl = Dumahik
+cc = Belavker
+headto = Ji\space bo
+page = R\^upel\^e
+see = bin\^era
+also = le\space v\^eya\space ji\space bin\^era
+proof = Del\^\i l
+glossary = \c Cavkan\^\i ya\space l\^ekol\^\i n\^e
+
+[date.gregorian]
+date.long = [d]ê [MMMM]a [y]an
+date.short = [dd].[MM].[y]
+months.wide.1 = rêbendan
+months.wide.2 = sibat
+months.wide.3 = adar
+months.wide.4 = nîsan
+months.wide.5 = gulan
+months.wide.6 = hezîran
+months.wide.7 = tîrmeh
+months.wide.8 = tebax
+months.wide.9 = îlon
+months.wide.10 = cotmeh
+months.wide.11 = mijdar
+months.wide.12 = berfanbar
+months.narrow.1 =
+months.narrow.2 =
+months.narrow.3 =
+months.narrow.4 =
+months.narrow.5 =
+months.narrow.6 =
+months.narrow.7 =
+months.narrow.8 =
+months.narrow.9 =
+months.narrow.10 =
+months.narrow.11 =
+months.narrow.12 =
+days.wide.mon = duşem
+days.wide.tue = sêşem
+days.wide.wed = çarşem
+days.wide.thu = pêncşem
+days.wide.fri = înî
+days.wide.sat = şemî
+days.wide.sun = yekşem
+days.abbreviated.mon = dşm
+days.abbreviated.tue = sşm
+days.abbreviated.wed = çşm
+days.abbreviated.thu = pşm
+days.abbreviated.fri =
+days.abbreviated.sat = şem
+days.abbreviated.sun = yşm
+days.narrow.mon =
+days.narrow.tue =
+days.narrow.wed =
+days.narrow.thu =
+days.narrow.fri =
+days.narrow.sat =
+days.narrow.sun =
+dayPeriods.abbreviated.am = BN
+dayPeriods.abbreviated.pm = PN
+dayPeriods.narrow.am = bn
+dayPeriods.narrow.pm = pn
+dayPeriods.wide.am =
+dayPeriods.wide.pm =
+
+[date.gregorian.licr]
+date.long = [d]\^e [MMMM]a [y]an
+months.wide.1 = r\^ebendan
+months.wide.2 = sibat
+months.wide.3 = adar
+months.wide.4 = n\^\i san
+months.wide.5 = gulan
+months.wide.6 = hez\^\i ran
+months.wide.7 = t\^\i rmeh
+months.wide.8 = tebax
+months.wide.9 = \^\i lon
+months.wide.10 = cotmeh
+months.wide.11 = mijdar
+months.wide.12 = berfanbar
+
+[date.persian]
+date.long =
+months.wide.1 =
+months.wide.2 =
+months.wide.3 =
+months.wide.4 =
+months.wide.5 =
+months.wide.6 =
+months.wide.7 =
+months.wide.8 =
+months.wide.9 =
+months.wide.10 =
+months.wide.11 =
+months.wide.12 =
+
+[date.islamic]
+date.long =
+months.wide.1 =
+months.wide.2 =
+months.wide.3 =
+months.wide.4 =
+months.wide.5 =
+months.wide.6 =
+months.wide.7 =
+months.wide.8 =
+months.wide.9 =
+months.wide.10 =
+months.wide.11 =
+months.wide.12 =
+
+[time.gregorian]
+time.medium = [h]:[mm]:[ss] [a]
+time.short = [h]:[mm] [a]
+
+[typography]
+frenchspacing = yes
+hyphenrules = kurmanji
+lefthyphenmin = 2
+righthyphenmin = 2
+hyphenchar =
+prehyphenchar =
+posthyphenchar =
+exhyphenchar =
+preexhyphenchar =
+postexhyphenchar =
+hyphenationmin =
+
+[characters]
+delimiters.quotes =
+auxiliary = [áàăâåäãā æ èĕëē é ìĭïī í ñ óòŏôøō œ ß ŭū úù ÿ]
+exemplarCharacters = [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]
+index = [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]
+punctuation = [\\- ‐‑ – — , ; \\: ! ? . … '‘’ \"“” ( ) \\[ \\] § @ * / \\& # † ‡ ′ ″]
+
+[numbers]
+defaultNumberingSystem = latn
+minimumGroupingDigits = 1
+decimal = ,
+exponential = E
+group = .
+infinity = ∞
+list = ;
+minusSign = -
+nan = NaN
+perMille = ‰
+percentSign = %
+plusSign = ‎+
+superscriptingExponent = ×
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ku/babel-kurdish.tex b/Master/texmf-dist/tex/generic/babel/locale/ku/babel-kurdish.tex
new file mode 100644
index 00000000000..e9f834bdc99
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/babel/locale/ku/babel-kurdish.tex
@@ -0,0 +1,12 @@
+% This file is part of babel. For further details see:
+% https://www.ctan.org/pkg/babel
+\ifx\BabelBeforeIni\undefined
+ \PackageError{babel}%
+ {This file is a component of babel and cannot\MessageBreak
+ be loaded directly. I'll stop immediately}%
+ {Just use babel as documented.}%
+ \stop
+\fi
+\BabelBeforeIni{ku}{%
+}
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/babel/locale/lrc/babel-lrc.ini b/Master/texmf-dist/tex/generic/babel/locale/lrc/babel-lrc.ini
index ea33f69050c..4c3dee3325e 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/lrc/babel-lrc.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/lrc/babel-lrc.ini
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.7
-date = 2022-12-08
+version = 1.8
+date = 2024-11-05
name.local = لۊری شومالی
name.english = Northern Luri
name.babel = northernluri
@@ -24,6 +24,7 @@ script.tag.opentype = arab
level = 1
encodings = LAE LFE
derivate = no
+warning = Persian and Islamic months are undefined.
[captions]
preface =
@@ -129,6 +130,48 @@ dayPeriods.narrow.pm = PM
dayPeriods.wide.am = AM
dayPeriods.wide.pm = PM
+[date.persian]
+date.long =
+months.wide.1 =
+months.wide.2 =
+months.wide.3 =
+months.wide.4 =
+months.wide.5 =
+months.wide.6 =
+months.wide.7 =
+months.wide.8 =
+months.wide.9 =
+months.wide.10 =
+months.wide.11 =
+months.wide.12 =
+months.narrow.1 =
+months.narrow.2 =
+months.narrow.3 =
+months.narrow.4 =
+months.narrow.5 =
+months.narrow.6 =
+months.narrow.7 =
+months.narrow.8 =
+months.narrow.9 =
+months.narrow.10 =
+months.narrow.11 =
+months.narrow.12 =
+
+[date.islamic]
+date.long =
+months.wide.1 =
+months.wide.2 =
+months.wide.3 =
+months.wide.4 =
+months.wide.5 =
+months.wide.6 =
+months.wide.7 =
+months.wide.8 =
+months.wide.9 =
+months.wide.10 =
+months.wide.11 =
+months.wide.12 =
+
[time.gregorian]
time.medium = [HH]:[mm]:[ss]
time.short = [HH]:[mm]
@@ -148,10 +191,10 @@ hyphenationmin =
[characters]
delimiters.quotes = “”‘’
-auxiliary = [\u200B\u200C\u200D\u200E\u200F \u064B \u064C \u064D \u064E \u064F \u0650 \u0651 \u0652 \u0654 إ ة ك ه ى ي]
-exemplarCharacters = [\u0659 \u065B آ أ ؤ ئ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ڤ ق ک گ ل م ن ھ ە و ۉ ۊ ی ؽ]
+auxiliary = [\u200B\u200C\u200D\u200E\u200F ً ٌ ٍ َ ُ ِ ّ ْ ٔ إ ة ك ه ى ي]
+exemplarCharacters = [ٙ ٛ آ أ ؤ ئ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ڤ ق ک گ ل م ن ھ ە و ۉ ۊ ی ؽ]
index = [آ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ھ و ی]
-punctuation = [\\- ‐ ‑ ، ٫ ٬ ؛ \\: ! ؟ . … ‹ › « » ( ) \\[ \\] * / \\\\]
+punctuation = [\\- ‐‑ ، ٫ ٬ ؛ \\: ! ؟ . … ‹ › « » ( ) \\[ \\] * / \\\\]
[numbers]
defaultNumberingSystem = arabext
diff --git a/Master/texmf-dist/tex/generic/babel/locale/mzn/babel-mzn.ini b/Master/texmf-dist/tex/generic/babel/locale/mzn/babel-mzn.ini
index 234c7a1774a..3826c393f15 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/mzn/babel-mzn.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/mzn/babel-mzn.ini
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.7
-date = 2022-12-08
+version = 1.8
+date = 2024-11-05
name.local = مازرونی
name.english = Mazanderani
name.babel = mazanderani
@@ -24,6 +24,7 @@ script.tag.opentype = arab
level = 1
encodings = LFE LAE
derivate = no
+warning = Persian and Islamic months are undefined.
[captions]
preface =
@@ -129,6 +130,48 @@ dayPeriods.narrow.pm = PM
dayPeriods.wide.am = AM
dayPeriods.wide.pm = PM
+[date.persian]
+date.long =
+months.wide.1 =
+months.wide.2 =
+months.wide.3 =
+months.wide.4 =
+months.wide.5 =
+months.wide.6 =
+months.wide.7 =
+months.wide.8 =
+months.wide.9 =
+months.wide.10 =
+months.wide.11 =
+months.wide.12 =
+months.narrow.1 =
+months.narrow.2 =
+months.narrow.3 =
+months.narrow.4 =
+months.narrow.5 =
+months.narrow.6 =
+months.narrow.7 =
+months.narrow.8 =
+months.narrow.9 =
+months.narrow.10 =
+months.narrow.11 =
+months.narrow.12 =
+
+[date.islamic]
+date.long =
+months.wide.1 =
+months.wide.2 =
+months.wide.3 =
+months.wide.4 =
+months.wide.5 =
+months.wide.6 =
+months.wide.7 =
+months.wide.8 =
+months.wide.9 =
+months.wide.10 =
+months.wide.11 =
+months.wide.12 =
+
[time.gregorian]
time.medium = [HH]:[mm]:[ss]
time.short = [HH]:[mm]
diff --git a/Master/texmf-dist/tex/generic/babel/locale/oui/babel-olduighur.tex b/Master/texmf-dist/tex/generic/babel/locale/oui/babel-olduighur.tex
new file mode 100644
index 00000000000..780714a77df
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/babel/locale/oui/babel-olduighur.tex
@@ -0,0 +1,12 @@
+% This file is part of babel. For further details see:
+% https://www.ctan.org/pkg/babel
+\ifx\BabelBeforeIni\undefined
+ \PackageError{babel}%
+ {This file is a component of babel and cannot\MessageBreak
+ be loaded directly. I'll stop immediately}%
+ {Just use babel as documented.}%
+ \stop
+\fi
+\BabelBeforeIni{oui}{%
+}
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/babel/locale/oui/babel-oui.ini b/Master/texmf-dist/tex/generic/babel/locale/oui/babel-oui.ini
new file mode 100644
index 00000000000..59b735b5cbe
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/babel/locale/oui/babel-oui.ini
@@ -0,0 +1,122 @@
+; This file is part of babel. For further details see:
+; https://www.ctan.org/pkg/babel
+; Data has been collected mainly from the following sources:
+; * Common Locale Data Repository (license Unicode):
+; http://cldr.unicode.org/
+; http://unicode.org/copyright.html
+
+[identification]
+charset = utf8
+version = 0.1
+date = 2025-01-19
+name.local =
+; As per BCP 47, the name is with i
+name.english = Old Uighur
+name.babel = olduighur
+tag.bcp47 = oui
+language.tag.bcp47 = oui
+tag.bcp47.likely = oui-Ougr-143
+tag.opentype = oui
+script.name = Old Uyghur
+script.tag.bcp47 = Ougr
+script.tag.opentype = ougr
+level = 1
+encodings =
+derivate = no
+warning = This is a bare minimum locale for 'olduighur'.
+
+[captions]
+; xetex, luatex
+preface =
+ref =
+abstract =
+bib =
+chapter =
+appendix =
+contents =
+listfigure =
+listtable =
+index =
+figure =
+table =
+part =
+encl =
+cc =
+headto =
+page =
+see =
+also =
+proof =
+
+[captions.licr]
+; pdftex
+preface =
+ref =
+abstract =
+bib =
+chapter =
+appendix =
+contents =
+listfigure =
+listtable =
+index =
+figure =
+table =
+part =
+encl =
+cc =
+headto =
+page =
+see =
+also =
+proof =
+
+[date.gregorian]
+date.long = [d][ ][MMMM] [y]
+date.short = [y]-[MM]-[dd]
+months.wide.1 =
+months.wide.2 =
+months.wide.3 =
+months.wide.4 =
+months.wide.5 =
+months.wide.6 =
+months.wide.7 =
+months.wide.8 =
+months.wide.9 =
+months.wide.10 =
+months.wide.11 =
+months.wide.12 =
+
+[date.gregorian.licr]
+months.wide.1 =
+months.wide.2 =
+months.wide.3 =
+months.wide.4 =
+months.wide.5 =
+months.wide.6 =
+months.wide.7 =
+months.wide.8 =
+months.wide.9 =
+months.wide.10 =
+months.wide.11 =
+months.wide.12 =
+
+[time.gregorian]
+time.medium = [HH]:[mm]:[ss]
+time.short = [HH]:[mm]
+
+[typography]
+frenchspacing = yes
+hyphenrules =
+lefthyphenmin =
+righthyphenmin =
+hyphenchar =
+prehyphenchar =
+posthyphenchar =
+exhyphenchar =
+preexhyphenchar =
+postexhyphenchar =
+hyphenationmin =
+
+[characters]
+ranges = 10F70..10FAF
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ps/babel-ps.ini b/Master/texmf-dist/tex/generic/babel/locale/ps/babel-ps.ini
index 67b0eaa5441..532b5cf943b 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ps/babel-ps.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ps/babel-ps.ini
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.7
-date = 2022-12-08
+version = 1.8
+date = 2024-10-24
name.local = پښتو
name.english = Pashto
name.babel = pashto
@@ -129,6 +129,36 @@ dayPeriods.narrow.pm = غ.و.
dayPeriods.wide.am = غ.م.
dayPeriods.wide.pm = غ.و.
+[date.persian]
+date.long = د [y] د [MMMM] [d]
+months.wide.1 = وری
+months.wide.2 = غویی
+months.wide.3 = غبرگولی
+months.wide.4 = چنگاښ
+months.wide.5 = زمری
+months.wide.6 = وږی
+months.wide.7 = تله
+months.wide.8 = لړم
+months.wide.9 = لیندۍ
+months.wide.10 = مرغومی
+months.wide.11 = سلواغه
+months.wide.12 = کب
+
+[date.islamic]
+date.long = د [y] د [MMMM] [d]
+months.wide.1 = محرم
+months.wide.2 = صفر
+months.wide.3 = ربيع
+months.wide.4 = ربيع II
+months.wide.5 = جماعه
+months.wide.6 = جماعه II
+months.wide.7 = رجب
+months.wide.8 = شعبان
+months.wide.9 = رمضان
+months.wide.10 = شوال
+months.wide.11 = ذي القعده
+months.wide.12 = ذي الحج
+
[time.gregorian]
time.medium = [H]:[mm]:[ss]
time.short = [H]:[mm]
@@ -148,9 +178,9 @@ hyphenationmin =
[characters]
delimiters.quotes = “”‘’
-auxiliary = [\u200C \u200D \u200E\u200F ے]
-exemplarCharacters = [\u064E \u0650 \u064F \u064B \u064D \u064C \u0651 \u0652 \u0654 \u0670 آ ا أ ء ب پ ت ټ ث ج ځ چ څ ح خ د ډ ذ ر ړ ز ژ ږ س ش ښ ص ض ط ظ ع غ ف ق ک ګ گ ل م ن ڼ ه ة و ؤ ی ي ې ۍ ئ]
-punctuation = [، ; \\: ! ۔ ' ‘ ( ) \\[ \\] \\{ \\} /]
+auxiliary = [\u200C\u200D\u200E\u200F ے]
+exemplarCharacters = [َ ِ ُ ً ٍ ٌ ّ ْ ٔ ٰ آ اأ ء ب پ ت ټ ث ج ځ چ څ ح خ د ډ ذ ر ړ ز ژ ږ س ش ښ ص ض ط ظ ع غ ف ق ک ګگ ل م ن ڼ هة وؤ یيېۍئ]
+punctuation = [، ; \\: ! ۔ '‘ ( ) \\[ \\] \\{ \\} /]
[numbers]
defaultNumberingSystem = arabext
diff --git a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-HK.ini b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-HK.ini
index 33c381bbb67..03bb7fb075f 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-HK.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-HK.ini
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.12
-date = 2023-10-24
+version = 1.13
+date = 2024-12-28
name.local = 简体中文
name.english = Simplified Chinese
name.opentype = Chinese Simplified
@@ -237,3 +237,31 @@ fullwidth.lower.alpha = a b c d e f g h i j k l m n
fullwidth.upper.alpha = 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
date.day = 初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十
+[transforms.prehyphenation]
+spacing.basic.1.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.1.1 = { insert, kern = -.5 }
+spacing.basic.1.2 = { insert, penalty = 0 }
+spacing.basic.1.3 = { insert, kern = .5 }
+spacing.basic.1.4 = { insert, norule = -.5 0 0 }
+spacing.basic.1.5 = {}
+spacing.basic.2.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[、。,.・:!?)]}〉》」』】〕〗〙〛”〞]() }
+spacing.basic.2.1 = { insert, kern= -.5, step = -1 }
+spacing.basic.2.2 = {}
+spacing.basic.3.0 = { [([{〈《「『【〔〖〘〚“〝] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.3.1 = { insert, kern = -.5, step =- 1 }
+spacing.basic.3.2 = {}
+;
+spacing.basic.4.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[{a}]() }
+spacing.basic.4.1 = { insert, kern = -.5, step = -1 }
+spacing.basic.4.2 = { insert, penalty = 0 }
+spacing.basic.4.3 = { insert, kern = .5 }
+spacing.basic.4.4 = {}
+spacing.basic.5.0 = { [{a}] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.5.1 = { insert, penalty = 0 }
+spacing.basic.5.2 = { insert, kern = .5 }
+spacing.basic.5.3 = { insert, norule = -.5 0 0 }
+spacing.basic.5.4 = {}
+spacing.basic.6.0 = { ^()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.6.1 = { insert, kern = -.5 }
+spacing.basic.6.2 = {}
+
diff --git a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-MO.ini b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-MO.ini
index 56067ebb86d..ecb56844074 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-MO.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-MO.ini
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.12
-date = 2023-10-24
+version = 1.13
+date = 2024-12-28
name.local = 简体中文
name.english = Simplified Chinese
name.opentype = Chinese Simplified
@@ -237,3 +237,31 @@ fullwidth.lower.alpha = a b c d e f g h i j k l m n
fullwidth.upper.alpha = 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
date.day = 初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十
+[transforms.prehyphenation]
+spacing.basic.1.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.1.1 = { insert, kern = -.5 }
+spacing.basic.1.2 = { insert, penalty = 0 }
+spacing.basic.1.3 = { insert, kern = .5 }
+spacing.basic.1.4 = { insert, norule = -.5 0 0 }
+spacing.basic.1.5 = {}
+spacing.basic.2.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[、。,.・:!?)]}〉》」』】〕〗〙〛”〞]() }
+spacing.basic.2.1 = { insert, kern= -.5, step = -1 }
+spacing.basic.2.2 = {}
+spacing.basic.3.0 = { [([{〈《「『【〔〖〘〚“〝] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.3.1 = { insert, kern = -.5, step =- 1 }
+spacing.basic.3.2 = {}
+;
+spacing.basic.4.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[{a}]() }
+spacing.basic.4.1 = { insert, kern = -.5, step = -1 }
+spacing.basic.4.2 = { insert, penalty = 0 }
+spacing.basic.4.3 = { insert, kern = .5 }
+spacing.basic.4.4 = {}
+spacing.basic.5.0 = { [{a}] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.5.1 = { insert, penalty = 0 }
+spacing.basic.5.2 = { insert, kern = .5 }
+spacing.basic.5.3 = { insert, norule = -.5 0 0 }
+spacing.basic.5.4 = {}
+spacing.basic.6.0 = { ^()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.6.1 = { insert, kern = -.5 }
+spacing.basic.6.2 = {}
+
diff --git a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-SG.ini b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-SG.ini
index c2b08b3ee47..dc26e9f0118 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-SG.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-SG.ini
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.12
-date = 2023-10-24
+version = 1.13
+date = 2024-12-28
name.local = 简体中文
name.english = Simplified Chinese
name.opentype = Chinese Simplified
@@ -237,4 +237,32 @@ fullwidth.lower.alpha = a b c d e f g h i j k l m n
fullwidth.upper.alpha = 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
date.day = 初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十
+[transforms.prehyphenation]
+spacing.basic.1.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.1.1 = { insert, kern = -.5 }
+spacing.basic.1.2 = { insert, penalty = 0 }
+spacing.basic.1.3 = { insert, kern = .5 }
+spacing.basic.1.4 = { insert, norule = -.5 0 0 }
+spacing.basic.1.5 = {}
+spacing.basic.2.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[、。,.・:!?)]}〉》」』】〕〗〙〛”〞]() }
+spacing.basic.2.1 = { insert, kern= -.5, step = -1 }
+spacing.basic.2.2 = {}
+spacing.basic.3.0 = { [([{〈《「『【〔〖〘〚“〝] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.3.1 = { insert, kern = -.5, step =- 1 }
+spacing.basic.3.2 = {}
+;
+spacing.basic.4.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[{a}]() }
+spacing.basic.4.1 = { insert, kern = -.5, step = -1 }
+spacing.basic.4.2 = { insert, penalty = 0 }
+spacing.basic.4.3 = { insert, kern = .5 }
+spacing.basic.4.4 = {}
+spacing.basic.5.0 = { [{a}] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.5.1 = { insert, penalty = 0 }
+spacing.basic.5.2 = { insert, kern = .5 }
+spacing.basic.5.3 = { insert, norule = -.5 0 0 }
+spacing.basic.5.4 = {}
+spacing.basic.6.0 = { ^()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.6.1 = { insert, kern = -.5 }
+spacing.basic.6.2 = {}
+
diff --git a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans.ini b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans.ini
index 8c7437a953d..ee0252dd60f 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.14
-date = 2023-10-24
+version = 1.15
+date = 2024-12-28
name.local = 简体中文
name.english = Simplified Chinese
name.opentype = Chinese Simplified
@@ -240,3 +240,31 @@ fullwidth.lower.alpha = a b c d e f g h i j k l m n
fullwidth.upper.alpha = 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
date.day = 初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十
+[transforms.prehyphenation]
+spacing.basic.1.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.1.1 = { insert, kern = -.5 }
+spacing.basic.1.2 = { insert, penalty = 0 }
+spacing.basic.1.3 = { insert, kern = .5 }
+spacing.basic.1.4 = { insert, norule = -.5 0 0 }
+spacing.basic.1.5 = {}
+spacing.basic.2.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[、。,.・:!?)]}〉》」』】〕〗〙〛”〞]() }
+spacing.basic.2.1 = { insert, kern= -.5, step = -1 }
+spacing.basic.2.2 = {}
+spacing.basic.3.0 = { [([{〈《「『【〔〖〘〚“〝] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.3.1 = { insert, kern = -.5, step =- 1 }
+spacing.basic.3.2 = {}
+;
+spacing.basic.4.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[{a}]() }
+spacing.basic.4.1 = { insert, kern = -.5, step = -1 }
+spacing.basic.4.2 = { insert, penalty = 0 }
+spacing.basic.4.3 = { insert, kern = .5 }
+spacing.basic.4.4 = {}
+spacing.basic.5.0 = { [{a}] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.5.1 = { insert, penalty = 0 }
+spacing.basic.5.2 = { insert, kern = .5 }
+spacing.basic.5.3 = { insert, norule = -.5 0 0 }
+spacing.basic.5.4 = {}
+spacing.basic.6.0 = { ^()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.6.1 = { insert, kern = -.5 }
+spacing.basic.6.2 = {}
+
diff --git a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-HK.ini b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-HK.ini
index 8fc0abab80a..4a531ac4e66 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-HK.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-HK.ini
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.12
-date = 2023-10-24
+version = 1.13
+date = 2024-12-28
name.local = 繁體中文
name.english = Traditional Chinese
name.opentype = Chinese Traditional
@@ -237,4 +237,32 @@ fullwidth.lower.alpha = a b c d e f g h i j k l m n
fullwidth.upper.alpha = 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
date.day = 初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十
+[transforms.prehyphenation]
+spacing.basic.1.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.1.1 = { insert, kern = -.5 }
+spacing.basic.1.2 = { insert, penalty = 0 }
+spacing.basic.1.3 = { insert, kern = .5 }
+spacing.basic.1.4 = { insert, norule = -.5 0 0 }
+spacing.basic.1.5 = {}
+spacing.basic.2.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[、。,.・:!?)]}〉》」』】〕〗〙〛”〞]() }
+spacing.basic.2.1 = { insert, kern= -.5, step = -1 }
+spacing.basic.2.2 = {}
+spacing.basic.3.0 = { [([{〈《「『【〔〖〘〚“〝] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.3.1 = { insert, kern = -.5, step =- 1 }
+spacing.basic.3.2 = {}
+;
+spacing.basic.4.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[{a}]() }
+spacing.basic.4.1 = { insert, kern = -.5, step = -1 }
+spacing.basic.4.2 = { insert, penalty = 0 }
+spacing.basic.4.3 = { insert, kern = .5 }
+spacing.basic.4.4 = {}
+spacing.basic.5.0 = { [{a}] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.5.1 = { insert, penalty = 0 }
+spacing.basic.5.2 = { insert, kern = .5 }
+spacing.basic.5.3 = { insert, norule = -.5 0 0 }
+spacing.basic.5.4 = {}
+spacing.basic.6.0 = { ^()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.6.1 = { insert, kern = -.5 }
+spacing.basic.6.2 = {}
+
diff --git a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-MO.ini b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-MO.ini
index 382daf0da07..7a05703f5cf 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-MO.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-MO.ini
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.12
-date = 2023-10-24
+version = 1.13
+date = 2024-12-28
name.local = 繁體中文
name.english = Traditional Chinese
name.opentype = Chinese Traditional
@@ -237,4 +237,32 @@ fullwidth.lower.alpha = a b c d e f g h i j k l m n
fullwidth.upper.alpha = 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
date.day = 初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十
+[transforms.prehyphenation]
+spacing.basic.1.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.1.1 = { insert, kern = -.5 }
+spacing.basic.1.2 = { insert, penalty = 0 }
+spacing.basic.1.3 = { insert, kern = .5 }
+spacing.basic.1.4 = { insert, norule = -.5 0 0 }
+spacing.basic.1.5 = {}
+spacing.basic.2.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[、。,.・:!?)]}〉》」』】〕〗〙〛”〞]() }
+spacing.basic.2.1 = { insert, kern= -.5, step = -1 }
+spacing.basic.2.2 = {}
+spacing.basic.3.0 = { [([{〈《「『【〔〖〘〚“〝] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.3.1 = { insert, kern = -.5, step =- 1 }
+spacing.basic.3.2 = {}
+;
+spacing.basic.4.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[{a}]() }
+spacing.basic.4.1 = { insert, kern = -.5, step = -1 }
+spacing.basic.4.2 = { insert, penalty = 0 }
+spacing.basic.4.3 = { insert, kern = .5 }
+spacing.basic.4.4 = {}
+spacing.basic.5.0 = { [{a}] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.5.1 = { insert, penalty = 0 }
+spacing.basic.5.2 = { insert, kern = .5 }
+spacing.basic.5.3 = { insert, norule = -.5 0 0 }
+spacing.basic.5.4 = {}
+spacing.basic.6.0 = { ^()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.6.1 = { insert, kern = -.5 }
+spacing.basic.6.2 = {}
+
diff --git a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant.ini b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant.ini
index 98eb7401c64..5b95fa08949 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.13
-date = 2023-10-24
+version = 1.14
+date = 2024-12-28
name.local = 繁體中文
name.english = Traditional Chinese
name.opentype = Chinese Traditional
@@ -242,4 +242,32 @@ fullwidth.lower.alpha = a b c d e f g h i j k l m n
fullwidth.upper.alpha = 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
date.day = 初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十
+[transforms.prehyphenation]
+spacing.basic.1.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.1.1 = { insert, kern = -.5 }
+spacing.basic.1.2 = { insert, penalty = 0 }
+spacing.basic.1.3 = { insert, kern = .5 }
+spacing.basic.1.4 = { insert, norule = -.5 0 0 }
+spacing.basic.1.5 = {}
+spacing.basic.2.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[、。,.・:!?)]}〉》」』】〕〗〙〛”〞]() }
+spacing.basic.2.1 = { insert, kern= -.5, step = -1 }
+spacing.basic.2.2 = {}
+spacing.basic.3.0 = { [([{〈《「『【〔〖〘〚“〝] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.3.1 = { insert, kern = -.5, step =- 1 }
+spacing.basic.3.2 = {}
+;
+spacing.basic.4.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[{a}]() }
+spacing.basic.4.1 = { insert, kern = -.5, step = -1 }
+spacing.basic.4.2 = { insert, penalty = 0 }
+spacing.basic.4.3 = { insert, kern = .5 }
+spacing.basic.4.4 = {}
+spacing.basic.5.0 = { [{a}] ()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.5.1 = { insert, penalty = 0 }
+spacing.basic.5.2 = { insert, kern = .5 }
+spacing.basic.5.3 = { insert, norule = -.5 0 0 }
+spacing.basic.5.4 = {}
+spacing.basic.6.0 = { ^()[([{〈《「『【〔〖〘〚“〝]() }
+spacing.basic.6.1 = { insert, kern = -.5 }
+spacing.basic.6.2 = {}
+
diff --git a/Master/texmf-dist/tex/generic/babel/luababel.def b/Master/texmf-dist/tex/generic/babel/luababel.def
index 22f8fdadd5d..34b0e699353 100644
--- a/Master/texmf-dist/tex/generic/babel/luababel.def
+++ b/Master/texmf-dist/tex/generic/babel/luababel.def
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `luatex')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
@@ -32,6 +32,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
+\directlua{ Babel = Babel or {} } % DL2
\ifx\AddBabelHook\@undefined % When plain.def, babel.sty starts
\bbl@trace{Read language.dat}
\ifx\bbl@readstream\@undefined
@@ -192,13 +193,13 @@
{\expandafter\expandafter\expandafter\bbl@tempb
\csname bbl@hyphendata@\the\language\endcsname}}
\endinput\fi
-\begingroup % TODO - to a lua file
+\begingroup % TODO - to a lua file % DL3
\catcode`\%=12
\catcode`\'=12
\catcode`\"=12
\catcode`\:=12
\directlua{
- Babel = Babel or {}
+ Babel.locale_props = Babel.locale_props or {}
function Babel.lua_error(e, a)
tex.print([[\noexpand\csname bbl@error\endcsname{]] ..
e .. '}{' .. (a or '') .. '}{}{}')
@@ -223,6 +224,40 @@
callback.register('process_input_buffer',Babel.callback)
end
end
+ function Babel.str_to_nodes(fn, matches, base)
+ local n, head, last
+ if fn == nil then return nil end
+ for s in string.utfvalues(fn(matches)) do
+ if base.id == 7 then
+ base = base.replace
+ end
+ n = node.copy(base)
+ n.char = s
+ if not head then
+ head = n
+ else
+ last.next = n
+ end
+ last = n
+ end
+ return head
+ end
+ Babel.linebreaking = Babel.linebreaking or {}
+ Babel.linebreaking.before = {}
+ Babel.linebreaking.after = {}
+ Babel.locale = {}
+ function Babel.linebreaking.add_before(func, pos)
+ tex.print([[\noexpand\csname bbl@luahyphenate\endcsname]])
+ if pos == nil then
+ table.insert(Babel.linebreaking.before, func)
+ else
+ table.insert(Babel.linebreaking.before, pos, func)
+ end
+ end
+ function Babel.linebreaking.add_after(func)
+ tex.print([[\noexpand\csname bbl@luahyphenate\endcsname]])
+ table.insert(Babel.linebreaking.after, func)
+ end
function Babel.addpatterns(pp, lg)
local lg = lang.new(lg)
local pats = lang.patterns(lg) or ''
@@ -289,13 +324,13 @@
str:find( [[\string\babelsublr]] ) then
str = str:gsub( [[\string\babelsublr%s*(%b{})]],
function(m) return m:sub(2,-2) end )
- end
- return str
-end
+ end
+ return str
+ end
}
\endgroup
\ifx\newattribute\@undefined\else % Test for plain
- \newattribute\bbl@attr@locale
+ \newattribute\bbl@attr@locale % DL4
\directlua{ Babel.attr_locale = luatexbase.registernumber'bbl@attr@locale' }
\AddBabelHook{luatex}{beforeextras}{%
\setattribute\bbl@attr@locale\localeid}
@@ -373,28 +408,8 @@ end
{\csname bbl@patterns@\bbl@tempa\endcsname\space}%
#2}}}%
\fi}}
-\directlua{
- Babel = Babel or {}
- Babel.linebreaking = Babel.linebreaking or {}
- Babel.linebreaking.before = {}
- Babel.linebreaking.after = {}
- Babel.locale = {} % Free to use, indexed by \localeid
- function Babel.linebreaking.add_before(func, pos)
- tex.print([[\noexpand\csname bbl@luahyphenate\endcsname]])
- if pos == nil then
- table.insert(Babel.linebreaking.before, func)
- else
- table.insert(Babel.linebreaking.before, pos, func)
- end
- end
- function Babel.linebreaking.add_after(func)
- tex.print([[\noexpand\csname bbl@luahyphenate\endcsname]])
- table.insert(Babel.linebreaking.after, func)
- end
-}
\def\bbl@intraspace#1 #2 #3\@@{%
\directlua{
- Babel = Babel or {}
Babel.intraspaces = Babel.intraspaces or {}
Babel.intraspaces['\csname bbl@sbcp@\languagename\endcsname'] = %
{b = #1, p = #2, m = #3}
@@ -403,7 +418,6 @@ end
}}
\def\bbl@intrapenalty#1\@@{%
\directlua{
- Babel = Babel or {}
Babel.intrapenalties = Babel.intrapenalties or {}
Babel.intrapenalties['\csname bbl@sbcp@\languagename\endcsname'] = #1
Babel.locale_props[\the\localeid].intrapenalty = #1
@@ -416,7 +430,6 @@ end
\gdef\bbl@seaintraspace{&
\let\bbl@seaintraspace\relax
\directlua{
- Babel = Babel or {}
Babel.sea_enabled = true
Babel.sea_ranges = Babel.sea_ranges or {}
function Babel.set_chranges (script, chrng)
@@ -439,7 +452,7 @@ end
quad = font.getfont(last_char.font).size
for lg, rg in pairs(sea_ranges) do
if last_char.char > rg[1] and last_char.char < rg[2] then
- lg = lg:sub(1, 4) &% Remove trailing number of, eg, Cyrl1
+ lg = lg:sub(1, 4) &% Remove trailing number of, e.g., Cyrl1
local intraspace = Babel.intraspaces[lg]
local intrapenalty = Babel.intrapenalties[lg]
local n
@@ -465,7 +478,6 @@ end
\gdef\bbl@cjkintraspace{%
\let\bbl@cjkintraspace\relax
\directlua{
- Babel = Babel or {}
require('babel-data-cjk.lua')
Babel.cjk_enabled = true
function Babel.cjk_linebreak(head)
@@ -549,6 +561,9 @@ end
func(head)
end
end
+ if Babel.set_hboxed then
+ Babel.set_hboxed(head)
+ end
if Babel.sea_enabled then
Babel.sea_disc_to_space(head)
end
@@ -564,7 +579,6 @@ end
\ifin@ % cjk
\bbl@cjkintraspace
\directlua{
- Babel = Babel or {}
Babel.locale_props = Babel.locale_props or {}
Babel.locale_props[\the\localeid].linebreak = 'c'
}%
@@ -576,7 +590,6 @@ end
\bbl@seaintraspace
\bbl@exp{\\\bbl@intraspace\bbl@cl{intsp}\\\@@}%
\directlua{
- Babel = Babel or {}
Babel.sea_ranges = Babel.sea_ranges or {}
Babel.set_chranges('\bbl@cl{sbcp}',
'\bbl@cl{chrng}')
@@ -840,24 +853,36 @@ end
}
\endgroup
\fi\fi % ends Arabic just block: \ifnum\bbl@bidimode>100...
+\def\bbl@scr@node@list{%
+ ,Armenian,Coptic,Cyrillic,Georgian,,Glagolitic,Gothic,%
+ ,Greek,Latin,Old Church Slavonic Cyrillic,}
+\ifnum\bbl@bidimode=102 % bidi-r
+ \bbl@add\bbl@scr@node@list{Arabic,Hebrew,Syriac}
+\fi
+\def\bbl@set@renderer{%
+ \bbl@xin@{\bbl@cl{sname}}{\bbl@scr@node@list}%
+ \ifin@
+ \let\bbl@unset@renderer\relax
+ \else
+ \bbl@exp{%
+ \def\\\bbl@unset@renderer{%
+ \def\<g__fontspec_default_fontopts_clist>{%
+ \[g__fontspec_default_fontopts_clist]}}%
+ \def\<g__fontspec_default_fontopts_clist>{%
+ Renderer=Harfbuzz,\[g__fontspec_default_fontopts_clist]}}%
+ \fi}
\bbl@trace{Font handling with fontspec}
\AddBabelHook{babel-fontspec}{afterextras}{\bbl@switchfont}
\AddBabelHook{babel-fontspec}{beforestart}{\bbl@ckeckstdfonts}
\DisableBabelHook{babel-fontspec}
\@onlypreamble\babelfont
\newcommand\babelfont[2][]{% 1=langs/scripts 2=fam
- \bbl@foreach{#1}{%
- \expandafter\ifx\csname date##1\endcsname\relax
- \IfFileExists{babel-##1.tex}%
- {\babelprovide{##1}}%
- {}%
- \fi}%
- \edef\bbl@tempa{#1}%
- \def\bbl@tempb{#2}% Used by \bbl@bblfont
\ifx\fontspec\@undefined
\usepackage{fontspec}%
\fi
\EnableBabelHook{babel-fontspec}%
+ \edef\bbl@tempa{#1}%
+ \def\bbl@tempb{#2}% Used by \bbl@bblfont
\bbl@bblfont}
\newcommand\bbl@bblfont[2][]{% 1=features 2=fontname, @font=rm|sf|tt
\bbl@ifunset{\bbl@tempb family}%
@@ -871,7 +896,7 @@ end
\let\<bbl@\bbl@tempb dflt@\languagename>\<bbl@\bbl@tempb dflt@>%
\\\bbl@font@set\<bbl@\bbl@tempb dflt@\languagename>%
\<\bbl@tempb default>\<\bbl@tempb family>}}%
- {\bbl@foreach\bbl@tempa{% ie bbl@rmdflt@lang / *scrt
+ {\bbl@foreach\bbl@tempa{% i.e., bbl@rmdflt@lang / *scrt
\bbl@csarg\def{\bbl@tempb dflt@##1}{<>{#1}{#2}}}}}%
\def\bbl@providefam#1{%
\bbl@exp{%
@@ -900,7 +925,7 @@ end
{}}%
\gdef\bbl@switchfont{%
\bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}%
- \bbl@exp{% eg Arabic -> arabic
+ \bbl@exp{% e.g., Arabic -> arabic
\lowercase{\edef\\\bbl@tempa{\bbl@cl{sname}}}}%
\bbl@foreach\bbl@font@fams{%
\bbl@ifunset{bbl@##1dflt@\languagename}% (1) language?
@@ -956,13 +981,13 @@ end
\endgroup}
\fi
\fi
-\def\bbl@font@set#1#2#3{% eg \bbl@rmdflt@lang \rmdefault \rmfamily
+\def\bbl@font@set#1#2#3{% e.g., \bbl@rmdflt@lang \rmdefault \rmfamily
\bbl@xin@{<>}{#1}%
\ifin@
\bbl@exp{\\\bbl@fontspec@set\\#1\expandafter\@gobbletwo#1\\#3}%
\fi
\bbl@exp{% 'Unprotected' macros return prev values
- \def\\#2{#1}% eg, \rmdefault{\bbl@rmdflt@lang}
+ \def\\#2{#1}% e.g., \rmdefault{\bbl@rmdflt@lang}
\\\bbl@ifsamestring{#2}{\f@family}%
{\\#3%
\\\bbl@ifsamestring{\f@series}{\bfdefault}{\\\bfseries}{}%
@@ -973,10 +998,11 @@ end
\edef\bbl@tempb{\bbl@stripslash#4/}% Catcodes hack (better pass it).
\bbl@exp{\\\bbl@replace\\\bbl@tempb{\bbl@stripslash\family/}{}}%
\let\bbl@mapselect\relax
- \let\bbl@temp@fam#4% eg, '\rmfamily', to be restored below
+ \let\bbl@temp@fam#4% e.g., '\rmfamily', to be restored below
\let#4\@empty % Make sure \renewfontfamily is valid
+ \bbl@set@renderer
\bbl@exp{%
- \let\\\bbl@temp@pfam\<\bbl@stripslash#4\space>% eg, '\rmfamily '
+ \let\\\bbl@temp@pfam\<\bbl@stripslash#4\space>% e.g., '\rmfamily '
\<keys_if_exist:nnF>{fontspec-opentype}{Script/\bbl@cl{sname}}%
{\\\newfontscript{\bbl@cl{sname}}{\bbl@cl{sotf}}}%
\<keys_if_exist:nnF>{fontspec-opentype}{Language/\bbl@cl{lname}}%
@@ -984,10 +1010,11 @@ end
\\\renewfontfamily\\#4%
[\bbl@cl{lsys},% xetex removes unknown features :-(
\ifcase\bbl@engine\or RawFeature={family=\bbl@tempb},\fi
- #2]}{#3}% ie \bbl@exp{..}{#3}
+ #2]}{#3}% i.e., \bbl@exp{..}{#3}
+ \bbl@unset@renderer
\begingroup
#4%
- \xdef#1{\f@family}% eg, \bbl@rmdflt@lang{FreeSerif(0)}
+ \xdef#1{\f@family}% e.g., \bbl@rmdflt@lang{FreeSerif(0)}
\endgroup % TODO. Find better tests:
\bbl@xin@{\string>\string s\string s\string u\string b\string*}%
{\expandafter\meaning\csname TU/#1/bx/sc\endcsname}%
@@ -1005,7 +1032,7 @@ end
\def\bbl@font@rst#1#2#3#4{%
\bbl@csarg\def{famrst@#4}{\bbl@font@set{#1}#2#3}}
\def\bbl@font@fams{rm,sf,tt}
-\directlua{
+\directlua{% DL6
Babel.script_blocks = {
['dflt'] = {},
['Arab'] = {{0x0600, 0x06FF}, {0x08A0, 0x08FF}, {0x0750, 0x077F},
@@ -1173,7 +1200,7 @@ end
Babel.chr_to_loc[\the\count@] =
\bbl@ifblank{#1}{-1000}{\the\bbl@cs{id@@#1}}\space
}}
-\directlua{
+\directlua{% DL7
Babel.nohyphenation = \the\l@nohyphenation
}
\begingroup
@@ -1201,23 +1228,34 @@ end
{\bbl@add@list\babeltempb{nil}}&%
{\directlua{
local rep = [=[##1]=]
+ local three_args = '%s*=%s*([%-%d%.%a{}|]+)%s+([%-%d%.%a{}|]+)%s+([%-%d%.%a{}|]+)'
+ &% Numeric passes directly: kern, penalty...
rep = rep:gsub('^%s*(remove)%s*$', 'remove = true')
rep = rep:gsub('^%s*(insert)%s*,', 'insert = true, ')
rep = rep:gsub('^%s*(after)%s*,', 'after = true, ')
rep = rep:gsub('(string)%s*=%s*([^%s,]*)', Babel.capture_func)
rep = rep:gsub('node%s*=%s*(%a+)%s*(%a*)', Babel.capture_node)
- rep = rep:gsub(&%
- '(norule)%s*=%s*([%-%d%.]+)%s+([%-%d%.]+)%s+([%-%d%.]+)',
- 'norule = {' .. '%2, %3, %4' .. '}')
+ rep = rep:gsub( '(norule)' .. three_args,
+ 'norule = {' .. '%2, %3, %4' .. '}')
if #1 == 0 or #1 == 2 then
- rep = rep:gsub(&%
- '(space)%s*=%s*([%-%d%.]+)%s+([%-%d%.]+)%s+([%-%d%.]+)',
+ rep = rep:gsub( '(space)' .. three_args,
'space = {' .. '%2, %3, %4' .. '}')
- rep = rep:gsub(&%
- '(spacefactor)%s*=%s*([%-%d%.]+)%s+([%-%d%.]+)%s+([%-%d%.]+)',
+ rep = rep:gsub( '(spacefactor)' .. three_args,
'spacefactor = {' .. '%2, %3, %4' .. '}')
rep = rep:gsub('(kashida)%s*=%s*([^%s,]*)', Babel.capture_kashida)
- else
+ &% Transform values
+ rep, n = rep:gsub( '{([%a%-%.]+)|([%a%_%.]+)}',
+ function(v,d)
+ return string.format (
+ '{\the\csname bbl@id@@#3\endcsname,"%s",%s}',
+ v,
+ load( 'return Babel.locale_props'..
+ '[\the\csname bbl@id@@#3\endcsname].' .. d)() )
+ end )
+ rep, n = rep:gsub( '{([%a%-%.]+)|([%-%d%.]+)}',
+ '{\the\csname bbl@id@@#3\endcsname,"%1",%2}')
+ end
+ if #1 == 1 then
rep = rep:gsub( '(no)%s*=%s*([^%s,]*)', Babel.capture_func)
rep = rep:gsub( '(pre)%s*=%s*([^%s,]*)', Babel.capture_func)
rep = rep:gsub( '(post)%s*=%s*([^%s,]*)', Babel.capture_func)
@@ -1343,23 +1381,31 @@ end
{\bbl@csarg\unsetattribute{ATR@#1@\languagename @}}}
\def\bbl@activateposthyphen{%
\let\bbl@activateposthyphen\relax
+ \ifx\bbl@attr@hboxed\@undefined
+ \newattribute\bbl@attr@hboxed
+ \fi
\directlua{
require('babel-transforms.lua')
Babel.linebreaking.add_after(Babel.post_hyphenate_replace)
}}
\def\bbl@activateprehyphen{%
\let\bbl@activateprehyphen\relax
+ \ifx\bbl@attr@hboxed\@undefined
+ \newattribute\bbl@attr@hboxed
+ \fi
\directlua{
require('babel-transforms.lua')
Babel.linebreaking.add_before(Babel.pre_hyphenate_replace)
}}
+\newcommand\SetTransformValue[3]{%
+ \directlua{
+ Babel.locale_props[\the\csname bbl@id@@#1\endcsname].vars["#2"] = #3
+ }}
\newcommand\localeprehyphenation[1]{%
\directlua{ Babel.string_prehyphenation([==[#1]==], \the\localeid) }}
\def\bbl@activate@preotf{%
\let\bbl@activate@preotf\relax % only once
\directlua{
- Babel = Babel or {}
- %
function Babel.pre_otfload_v(head)
if Babel.numbers and Babel.digits_mapped then
head = Babel.numbers(head)
@@ -1420,6 +1466,8 @@ end
tex.sprint('0')
elseif tex.#1dir == 'TRT' then
tex.sprint('1')
+ else
+ tex.sprint('0')
end}}
\def\bbl@setluadir#1#2#3{% 1=text/par.. 2=\textdir.. 3=0 lr/1 rl
\ifcase#3\relax
@@ -1625,6 +1673,115 @@ end
\fi\fi}
\fi
\def\bbl@provide@extra#1{%
+ % == onchar ==
+ \ifx\bbl@KVP@onchar\@nnil\else
+ \bbl@luahyphenate
+ \bbl@exp{%
+ \\\AddToHook{env/document/before}{{\\\select@language{#1}{}}}}%
+ \directlua{
+ if Babel.locale_mapped == nil then
+ Babel.locale_mapped = true
+ Babel.linebreaking.add_before(Babel.locale_map, 1)
+ Babel.loc_to_scr = {}
+ Babel.chr_to_loc = Babel.chr_to_loc or {}
+ end
+ Babel.locale_props[\the\localeid].letters = false
+ }%
+ \bbl@xin@{ letters }{ \bbl@KVP@onchar\space}%
+ \ifin@
+ \directlua{
+ Babel.locale_props[\the\localeid].letters = true
+ }%
+ \fi
+ \bbl@xin@{ ids }{ \bbl@KVP@onchar\space}%
+ \ifin@
+ \ifx\bbl@starthyphens\@undefined % Needed if no explicit selection
+ \AddBabelHook{babel-onchar}{beforestart}{{\bbl@starthyphens}}%
+ \fi
+ \bbl@exp{\\\bbl@add\\\bbl@starthyphens
+ {\\\bbl@patterns@lua{\languagename}}}%
+ \directlua{
+ if Babel.script_blocks['\bbl@cl{sbcp}'] then
+ Babel.loc_to_scr[\the\localeid] = Babel.script_blocks['\bbl@cl{sbcp}']
+ Babel.locale_props[\the\localeid].lg = \the\@nameuse{l@\languagename}\space
+ end
+ }%
+ \fi
+ \bbl@xin@{ fonts }{ \bbl@KVP@onchar\space}%
+ \ifin@
+ \bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}%
+ \bbl@ifunset{bbl@wdir@\languagename}{\bbl@provide@dirs{\languagename}}{}%
+ \directlua{
+ if Babel.script_blocks['\bbl@cl{sbcp}'] then
+ Babel.loc_to_scr[\the\localeid] =
+ Babel.script_blocks['\bbl@cl{sbcp}']
+ end}%
+ \ifx\bbl@mapselect\@undefined % TODO. almost the same as mapfont
+ \AtBeginDocument{%
+ \bbl@patchfont{{\bbl@mapselect}}%
+ {\selectfont}}%
+ \def\bbl@mapselect{%
+ \let\bbl@mapselect\relax
+ \edef\bbl@prefontid{\fontid\font}}%
+ \def\bbl@mapdir##1{%
+ \begingroup
+ \setbox\z@\hbox{% Force text mode
+ \def\languagename{##1}%
+ \let\bbl@ifrestoring\@firstoftwo % To avoid font warning
+ \bbl@switchfont
+ \ifnum\fontid\font>\z@ % A hack, for the pgf nullfont hack
+ \directlua{
+ Babel.locale_props[\the\csname bbl@id@@##1\endcsname]%
+ ['/\bbl@prefontid'] = \fontid\font\space}%
+ \fi}%
+ \endgroup}%
+ \fi
+ \bbl@exp{\\\bbl@add\\\bbl@mapselect{\\\bbl@mapdir{\languagename}}}%
+ \fi
+ % TODO - catch non-valid values
+ \fi
+ % == mapfont ==
+ % For bidi texts, to switch the font based on direction
+ \ifx\bbl@KVP@mapfont\@nnil\else
+ \bbl@ifsamestring{\bbl@KVP@mapfont}{direction}{}%
+ {\bbl@error{unknown-mapfont}{}{}{}}%
+ \bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}%
+ \bbl@ifunset{bbl@wdir@\languagename}{\bbl@provide@dirs{\languagename}}{}%
+ \ifx\bbl@mapselect\@undefined % TODO. See onchar.
+ \AtBeginDocument{%
+ \bbl@patchfont{{\bbl@mapselect}}%
+ {\selectfont}}%
+ \def\bbl@mapselect{%
+ \let\bbl@mapselect\relax
+ \edef\bbl@prefontid{\fontid\font}}%
+ \def\bbl@mapdir##1{%
+ {\def\languagename{##1}%
+ \let\bbl@ifrestoring\@firstoftwo % avoid font warning
+ \bbl@switchfont
+ \directlua{Babel.fontmap
+ [\the\csname bbl@wdir@##1\endcsname]%
+ [\bbl@prefontid]=\fontid\font}}}%
+ \fi
+ \bbl@exp{\\\bbl@add\\\bbl@mapselect{\\\bbl@mapdir{\languagename}}}%
+ \fi
+ % == Line breaking: CJK quotes ==
+ \ifcase\bbl@engine\or
+ \bbl@xin@{/c}{/\bbl@cl{lnbrk}}%
+ \ifin@
+ \bbl@ifunset{bbl@quote@\languagename}{}%
+ {\directlua{
+ Babel.locale_props[\the\localeid].cjk_quotes = {}
+ local cs = 'op'
+ for c in string.utfvalues(%
+ [[\csname bbl@quote@\languagename\endcsname]]) do
+ if Babel.cjk_characters[c].c == 'qu' then
+ Babel.locale_props[\the\localeid].cjk_quotes[c] = cs
+ end
+ cs = ( cs == 'op') and 'cl' or 'op'
+ end
+ }}%
+ \fi
+ \fi
% == Counters: mapdigits ==
% Native digits
\ifx\bbl@KVP@mapdigits\@nnil\else
@@ -1632,7 +1789,6 @@ end
{\RequirePackage{luatexbase}%
\bbl@activate@preotf
\directlua{
- Babel = Babel or {} %%% -> presets in luababel
Babel.digits_mapped = true
Babel.digits = Babel.digits or {}
Babel.digits[\the\localeid] =
@@ -1872,6 +2028,7 @@ end
\AddToHook{env/tikzpicture/begin}{\bbl@pictsetdir\tw@}%
\bbl@add\tikz@atbegin@node{\bbl@pictresetdir}%
\bbl@sreplace\tikz{\begingroup}{\begingroup\bbl@pictsetdir\tw@}%
+ \bbl@sreplace\tikzpicture{\begingroup}{\begingroup\bbl@pictsetdir\tw@}%
\fi
\ifx\tcolorbox\@undefined\else
\def\tcb@drawing@env@begin{%
diff --git a/Master/texmf-dist/tex/generic/babel/nil.ldf b/Master/texmf-dist/tex/generic/babel/nil.ldf
index e30e8f0b875..a42e59d81ce 100644
--- a/Master/texmf-dist/tex/generic/babel/nil.ldf
+++ b/Master/texmf-dist/tex/generic/babel/nil.ldf
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `nil')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
@@ -32,7 +32,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-\ProvidesLanguage{nil}[2024/08/29 v24.9 Nil language]
+\ProvidesLanguage{nil}[2025/01/25 v25.2 Nil language]
\LdfInit{nil}{datenil}
\ifx\l@nil\@undefined
\newlanguage\l@nil
diff --git a/Master/texmf-dist/tex/generic/babel/plain.def b/Master/texmf-dist/tex/generic/babel/plain.def
index 6624d517539..f278a21aaba 100644
--- a/Master/texmf-dist/tex/generic/babel/plain.def
+++ b/Master/texmf-dist/tex/generic/babel/plain.def
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `plain')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
diff --git a/Master/texmf-dist/tex/generic/babel/switch.def b/Master/texmf-dist/tex/generic/babel/switch.def
index e991164458d..ec58318b70b 100644
--- a/Master/texmf-dist/tex/generic/babel/switch.def
+++ b/Master/texmf-dist/tex/generic/babel/switch.def
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `kernel')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
diff --git a/Master/texmf-dist/tex/generic/babel/txtbabel.def b/Master/texmf-dist/tex/generic/babel/txtbabel.def
index 380fb2380c7..28f5fe332b0 100644
--- a/Master/texmf-dist/tex/generic/babel/txtbabel.def
+++ b/Master/texmf-dist/tex/generic/babel/txtbabel.def
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `texxet')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
diff --git a/Master/texmf-dist/tex/generic/babel/xebabel.def b/Master/texmf-dist/tex/generic/babel/xebabel.def
index ccb2f14b9fd..24559221338 100644
--- a/Master/texmf-dist/tex/generic/babel/xebabel.def
+++ b/Master/texmf-dist/tex/generic/babel/xebabel.def
@@ -7,7 +7,7 @@
%% babel.dtx (with options: `xetex')
%%
%%
-%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
@@ -93,24 +93,20 @@
\fi}%
\fi}
\ifx\DisableBabelHook\@undefined\endinput\fi %%%% TODO: why
+\let\bbl@set@renderer\relax
+\let\bbl@unset@renderer\relax
\bbl@trace{Font handling with fontspec}
\AddBabelHook{babel-fontspec}{afterextras}{\bbl@switchfont}
\AddBabelHook{babel-fontspec}{beforestart}{\bbl@ckeckstdfonts}
\DisableBabelHook{babel-fontspec}
\@onlypreamble\babelfont
\newcommand\babelfont[2][]{% 1=langs/scripts 2=fam
- \bbl@foreach{#1}{%
- \expandafter\ifx\csname date##1\endcsname\relax
- \IfFileExists{babel-##1.tex}%
- {\babelprovide{##1}}%
- {}%
- \fi}%
- \edef\bbl@tempa{#1}%
- \def\bbl@tempb{#2}% Used by \bbl@bblfont
\ifx\fontspec\@undefined
\usepackage{fontspec}%
\fi
\EnableBabelHook{babel-fontspec}%
+ \edef\bbl@tempa{#1}%
+ \def\bbl@tempb{#2}% Used by \bbl@bblfont
\bbl@bblfont}
\newcommand\bbl@bblfont[2][]{% 1=features 2=fontname, @font=rm|sf|tt
\bbl@ifunset{\bbl@tempb family}%
@@ -124,7 +120,7 @@
\let\<bbl@\bbl@tempb dflt@\languagename>\<bbl@\bbl@tempb dflt@>%
\\\bbl@font@set\<bbl@\bbl@tempb dflt@\languagename>%
\<\bbl@tempb default>\<\bbl@tempb family>}}%
- {\bbl@foreach\bbl@tempa{% ie bbl@rmdflt@lang / *scrt
+ {\bbl@foreach\bbl@tempa{% i.e., bbl@rmdflt@lang / *scrt
\bbl@csarg\def{\bbl@tempb dflt@##1}{<>{#1}{#2}}}}}%
\def\bbl@providefam#1{%
\bbl@exp{%
@@ -153,7 +149,7 @@
{}}%
\gdef\bbl@switchfont{%
\bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}%
- \bbl@exp{% eg Arabic -> arabic
+ \bbl@exp{% e.g., Arabic -> arabic
\lowercase{\edef\\\bbl@tempa{\bbl@cl{sname}}}}%
\bbl@foreach\bbl@font@fams{%
\bbl@ifunset{bbl@##1dflt@\languagename}% (1) language?
@@ -209,13 +205,13 @@
\endgroup}
\fi
\fi
-\def\bbl@font@set#1#2#3{% eg \bbl@rmdflt@lang \rmdefault \rmfamily
+\def\bbl@font@set#1#2#3{% e.g., \bbl@rmdflt@lang \rmdefault \rmfamily
\bbl@xin@{<>}{#1}%
\ifin@
\bbl@exp{\\\bbl@fontspec@set\\#1\expandafter\@gobbletwo#1\\#3}%
\fi
\bbl@exp{% 'Unprotected' macros return prev values
- \def\\#2{#1}% eg, \rmdefault{\bbl@rmdflt@lang}
+ \def\\#2{#1}% e.g., \rmdefault{\bbl@rmdflt@lang}
\\\bbl@ifsamestring{#2}{\f@family}%
{\\#3%
\\\bbl@ifsamestring{\f@series}{\bfdefault}{\\\bfseries}{}%
@@ -226,10 +222,11 @@
\edef\bbl@tempb{\bbl@stripslash#4/}% Catcodes hack (better pass it).
\bbl@exp{\\\bbl@replace\\\bbl@tempb{\bbl@stripslash\family/}{}}%
\let\bbl@mapselect\relax
- \let\bbl@temp@fam#4% eg, '\rmfamily', to be restored below
+ \let\bbl@temp@fam#4% e.g., '\rmfamily', to be restored below
\let#4\@empty % Make sure \renewfontfamily is valid
+ \bbl@set@renderer
\bbl@exp{%
- \let\\\bbl@temp@pfam\<\bbl@stripslash#4\space>% eg, '\rmfamily '
+ \let\\\bbl@temp@pfam\<\bbl@stripslash#4\space>% e.g., '\rmfamily '
\<keys_if_exist:nnF>{fontspec-opentype}{Script/\bbl@cl{sname}}%
{\\\newfontscript{\bbl@cl{sname}}{\bbl@cl{sotf}}}%
\<keys_if_exist:nnF>{fontspec-opentype}{Language/\bbl@cl{lname}}%
@@ -237,10 +234,11 @@
\\\renewfontfamily\\#4%
[\bbl@cl{lsys},% xetex removes unknown features :-(
\ifcase\bbl@engine\or RawFeature={family=\bbl@tempb},\fi
- #2]}{#3}% ie \bbl@exp{..}{#3}
+ #2]}{#3}% i.e., \bbl@exp{..}{#3}
+ \bbl@unset@renderer
\begingroup
#4%
- \xdef#1{\f@family}% eg, \bbl@rmdflt@lang{FreeSerif(0)}
+ \xdef#1{\f@family}% e.g., \bbl@rmdflt@lang{FreeSerif(0)}
\endgroup % TODO. Find better tests:
\bbl@xin@{\string>\string s\string s\string u\string b\string*}%
{\expandafter\meaning\csname TU/#1/bx/sc\endcsname}%
diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex
index cca735bf1e0..b932385e578 100644
--- a/Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex
+++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex
index b30e741458d..c1292d49690 100644
--- a/Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex
+++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -1966,6 +1966,9 @@
\ctikzset{bipoles/battery1/width/.initial=.3}
\ctikzset{bipoles/battery2/height/.initial=.6}
\ctikzset{bipoles/battery2/width/.initial=.3}
+\ctikzset{bipoles/solar/height/.initial=.6}
+\ctikzset{bipoles/solar/width/.initial=.3}
+
% noise sources
\ctikzset{bipoles/noise sources/fillcolor/.initial=gray!50}
@@ -2139,6 +2142,41 @@
\pgfusepath{draw}
}
+% Solar cell
+\pgfcircdeclarebipolescaled{batteries}
+{}
+{\ctikzvalof{bipoles/solar/height}}
+{solar}
+{\ctikzvalof{bipoles/solar/height}}
+{\ctikzvalof{bipoles/solar/width}}
+{
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
+ \pgfusepath{draw}
+
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \ifpgf@circ@fixbatteries
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{3\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \else
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
+ \pgfsetlinewidth{3\pgflinewidth}
+ \pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
+ \fi
+
+ \pgfusepath{draw}
+ \pgf@circ@draw@pdarrows
+}
+
%%%
%%% https://xkcd.com/2818/
%%% Also https://chat.stackexchange.com/transcript/message/64238058#64238058
@@ -3441,6 +3479,9 @@
\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true}
\pgfcirc@activate@bipole@opt{v}{batterytwo}{battery2}{battery2}{\circuitikzbasekey/bipole/is voltage=true,
\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true}
+\pgfcirc@activate@bipole@opt{v}{solarsource}{solar}{solar}{\circuitikzbasekey/bipole/is voltage=true,
+ \circuitikzbasekey/bipole/is voltageoutsideofsymbol=true}
+
%% Sources: voltage
\pgfcirc@activate@bipole@opt{v}{vsource}{vsource}{european voltage source}{%
@@ -3463,6 +3504,11 @@
\pgfcirc@style@to@style{controlled voltage source}{cvsource}
\pgfcirc@style@to@style{controlled voltage source}{controlled vsource}
\pgfcirc@style@to@style{controlled voltage source}{cV}
+%% fix the mess about not having the shortcut accessible in every mode...
+\pgfcirc@style@to@style{american voltage source}{vsourceAM}
+\pgfcirc@style@to@style{american controlled voltage source}{cvsourceAM}
+\pgfcirc@style@to@style{european voltage source}{vsourceEU}
+\pgfcirc@style@to@style{european controlled voltage source}{cvsourceEU}
\pgfcirc@activate@bipole@simple@opt{v}{esource}{%
\circuitikzbasekey/bipole/is voltage=true,
@@ -3558,6 +3604,11 @@
\pgfcirc@style@to@style{controlled current source}{cisource}
\pgfcirc@style@to@style{controlled current source}{controlled isource}
\pgfcirc@style@to@style{controlled current source}{cI}
+%% fix the mess about not having the shortcut accessible in every mode...
+\pgfcirc@style@to@style{american current source}{isourceAM}
+\pgfcirc@style@to@style{american controlled current source}{cisourceAM}
+\pgfcirc@style@to@style{european current source}{isourceEU}
+\pgfcirc@style@to@style{european controlled current source}{cisourceEU}
\pgfcirc@activate@bipole@opt{i}{isourcesin}{isourcesin}{sinusoidal current source}{%
\circuitikzbasekey/bipole/is current=true}
@@ -3684,6 +3735,13 @@
}}
%
+% Whiskers for ZZener and TVS
+%
+\newif\ifpgf@zz@straightwhisk
+\pgf@zz@straightwhiskfalse
+\ctikzset{diode straight whiskers/.code=\pgf@zz@straightwhisktrue}
+\ctikzset{diode sloped whiskers/.code=\pgf@zz@straightwhiskfalse}
+%
% Flipping arrows in LED and photodiodes
%
\newif\ifpgf@led@fliparrows
@@ -3777,10 +3835,15 @@
{
\pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
\pgf@circ@fulldiode@triangle@shift
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
+ \ifpgf@zz@straightwhisk
+ \edef\@@tmp{0.0}
+ \else
+ \edef\@@tmp{0.5}
+ \fi
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-\@@tmp\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
\pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-\@@tmp\pgf@circ@res@down}}
\pgfusepath{draw}
}
@@ -4062,10 +4125,15 @@
\pgfscope
\pgf@circ@basicdiodeshape
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-0.5\pgf@circ@res@up}}
+ \ifpgf@zz@straightwhisk
+ \edef\@@tmp{0.0}
+ \else
+ \edef\@@tmp{0.5}
+ \fi
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-1.8\pgf@circ@res@left}{\pgf@circ@res@down-\@@tmp\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@down}}
\pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@left}{\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right-0.2\pgf@circ@res@left}{\pgf@circ@res@up-\@@tmp\pgf@circ@res@down}}
\pgfusepath{draw}
\endpgfscope
}
@@ -4243,10 +4311,15 @@
\pgftransformxshift{\pgf@circ@res@left}
\pgf@circ@basicdiodeshape
\endpgfscope
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{1.3\pgf@circ@res@up}}
+ \ifpgf@zz@straightwhisk
+ \edef\@@tmp{1.0}
+ \else
+ \edef\@@tmp{1.3}
+ \fi
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{\@@tmp\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{1.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{\@@tmp\pgf@circ@res@down}}
\pgfusepath{draw}
\endpgfscope
}
@@ -4271,10 +4344,15 @@
\pgftransformxshift{\pgf@circ@res@left}
\pgf@circ@fulldiode@triangle@shift
\endpgfscope
- \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{1.3\pgf@circ@res@up}}
+ \ifpgf@zz@straightwhisk
+ \edef\@@tmp{1.0}
+ \else
+ \edef\@@tmp{1.3}
+ \fi
+ \pgfpathmoveto{\pgfpoint{0.4\pgf@circ@res@left}{\@@tmp\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{0pt}{\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{1.3\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.4\pgf@circ@res@right}{\@@tmp\pgf@circ@res@down}}
\pgfusepath{draw}
}
@@ -4752,6 +4830,8 @@
\pgfcirc@style@to@style{#1 agtobar}{aGTOb#2}
\pgfcirc@node@to@style{l}{emptytriac}{#1 triac}{\circuitikzbasekey/bipole/is strokedsymbol=true}
\pgfcirc@style@to@style{#1 triac}{Tr#2}
+ \pgfcirc@node@to@style{l}{emptytvsdiode}{#1 tvsdiode}{\circuitikzbasekey/bipole/is strokedsymbol=true}
+ \pgfcirc@style@to@style{#1 tvsdiode}{Tr#2}
}
\pgfcirc@tmp@generatestrokeddiodes{stroke}{-}
\def\pgfcircdiodestylemacro{\ifpgf@circuit@strokediode stroke \else\ifpgf@circuit@fulldiode full \else empty \fi\fi}
@@ -7066,9 +7146,10 @@
%
\ctikzset{bipoles/squid/height/.initial=.60}
\ctikzset{bipoles/squid/width/.initial=.60}
-\ctikzset{bipoles/barrier/height/.initial=.60}
-\ctikzset{bipoles/barrier/width/.initial=.60}
-\ctikzset{bipoles/openbarrier/gap/.initial=0.5}
+\ctikzset{bipoles/barrier/height/.initial=.21}
+\ctikzset{bipoles/barrier/width/.initial=.0}
+\ctikzset{bipoles/openbarrier/width/.initial=.3}
+\ctikzset{bipoles/openbarrier/gap/.initial=1}
\ctikzset{bipoles/thermocouple/height/.initial=.250}
\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
\ctikzset{bipoles/thermocouple/width/.initial=.140}
@@ -7343,46 +7424,39 @@
{\ctikzvalof{bipoles/barrier/height}}
{\ctikzvalof{bipoles/barrier/width}}
{
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@step}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
-
+ \pgfusepath{draw}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@down}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@up}{\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@down}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@up}{\pgf@circ@res@up}}
\pgfusepath{draw}
}
-%
% open version of the barrier symbol
% suggested by Radványi Patrik Tamás <patrikradvanyi@gmail.com>
-%
\pgfcircdeclarebipolescaled{misc}
{}
{\ctikzvalof{bipoles/barrier/height}}
{openbarrier}
{\ctikzvalof{bipoles/barrier/height}}
-{\ctikzvalof{bipoles/barrier/width}}
+{\ctikzvalof{bipoles/openbarrier/width}}
{
- % this is set with normal wire linewidth
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
\pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/openbarrier/gap}*\pgf@circ@res@left}{0pt}}
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{0pt}}
\pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/openbarrier/gap}*\pgf@circ@res@right}{0pt}}
\pgfusepath{draw}
-
- % do the cross part
\pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
-
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@up}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@down}}
- \pgfpathmoveto{\pgfpoint{0.35*\pgf@circ@res@left}{0.35*\pgf@circ@res@down}}
- \pgfpathlineto{\pgfpoint{0.35*\pgf@circ@res@right}{0.35*\pgf@circ@res@up}}
-
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@down}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@up}{\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@down}{\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@up}{\pgf@circ@res@up}}
\pgfusepath{draw}
}
+
%% Lamp
\pgfcircdeclarebipolescaled{misc}
{}
diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcirccurrent.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcirccurrent.tex
index e1843d5da8d..4d00670a543 100644
--- a/Master/texmf-dist/tex/generic/circuitikz/pgfcirccurrent.tex
+++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcirccurrent.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcircflow.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcircflow.tex
index 364c56a414f..b620979ec59 100644
--- a/Master/texmf-dist/tex/generic/circuitikz/pgfcircflow.tex
+++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcircflow.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcirclabel.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcirclabel.tex
index a81bfdc6c6b..09bae28f18c 100644
--- a/Master/texmf-dist/tex/generic/circuitikz/pgfcirclabel.tex
+++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcirclabel.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcircmonopoles.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcircmonopoles.tex
index 84fa6c6d1ec..77b6edc904c 100644
--- a/Master/texmf-dist/tex/generic/circuitikz/pgfcircmonopoles.tex
+++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcircmonopoles.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -49,6 +49,7 @@
\ctikzset{monopoles/dinantenna/width/.initial=.2}
\ctikzset{monopoles/dinantenna/height/.initial=.6}
\ctikzset{monopoles/waves/width/.initial=0.5}%
+\ctikzset{monopoles/harmonics/width/.initial=0.5}%
%>>>
%% Node shapes for grounds and power supply%<<<
@@ -617,6 +618,56 @@
}
}
+\pgfdeclareshape{harmonics}{
+ \savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
+ \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
+ \anchor{center}{\pgfpointorigin}
+ \savedanchor{\northeast}{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@circ@res@step=\ctikzvalof{monopoles/harmonics/width}\pgf@circ@scaled@Rlen
+ \pgf@x=\pgf@circ@res@step
+ \pgf@y=\pgf@circ@res@step
+ }
+ \anchor{text}{
+ \northeast
+ \pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
+ }
+ \anchor{top}{\northeast\pgf@x=0pt}
+ \anchor{right}{\northeast\pgf@y=0pt}
+ \anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
+ \anchor{bottom}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
+ \anchor{north}{\northeast\pgf@x=0pt}
+ \anchor{north east}{\northeast}
+ \anchor{east}{\northeast\pgf@y=0pt}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
+ \anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \pgf@circ@draw@component{
+ \pgf@circ@scaled@Rlen=\scaledRlen
+ \pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@scaled@Rlen
+ \pgf@circ@res@step=0.5\pgf@circ@res@step
+ \pgf@circ@setcolor
+ \pgfscope
+ % define a triangle for clipping the waves
+ \pgfpathmoveto{\pgfpoint{-2\pgf@circ@res@step}{0pt}}
+ \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{1\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{-1\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgfusepath{clip}
+ % ...and build the waves as clipped circles
+ \c@pgf@counta=32\pgf@circ@res@other=0.125\pgf@circ@res@step
+ \pgfmathloop%
+ \ifnum\c@pgf@counta>1
+ \pgfpathcircle{\pgfpoint{-2\pgf@circ@res@step}{0pt}}{\the\c@pgf@counta*\pgf@circ@res@other}
+ \advance\c@pgf@counta-1\relax%
+ \repeatpgfmathloop
+ \pgfusepath{draw}
+ \endpgfscope
+ }
+}
+
% the four types of antennas: simple, din, TX, RX. Notice that you can flip them...
%
\pgfdeclareshape{bareantenna}{
diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcircmultipoles.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcircmultipoles.tex
index e403a53fa62..5f98f3b91b7 100644
--- a/Master/texmf-dist/tex/generic/circuitikz/pgfcircmultipoles.tex
+++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcircmultipoles.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcircpath.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcircpath.tex
index cb95f54ef3e..7d94de49595 100644
--- a/Master/texmf-dist/tex/generic/circuitikz/pgfcircpath.tex
+++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcircpath.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcircquadpoles.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcircquadpoles.tex
index 2cc6e461aad..cca01b5bee0 100644
--- a/Master/texmf-dist/tex/generic/circuitikz/pgfcircquadpoles.tex
+++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcircquadpoles.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -544,6 +544,11 @@
\ctikzset{bipoles/lowpass/width/.initial=.7}
\ctikzset{bipoles/lowpass2/width/.initial=.7}
\ctikzset{bipoles/allpass/width/.initial=.7}
+\ctikzset{bipoles/vallpass/width/.initial=.7}
+\ctikzset{bipoles/bgenerator/width/.initial=.7}
+\ctikzset{bipoles/qgenerator/width/.initial=.7}
+\ctikzset{bipoles/cgenerator/width/.initial=.7}
+\ctikzset{bipoles/ngenerator/width/.initial=.7}
\ctikzset{bipoles/adc/width/.initial=.7}
\ctikzset{bipoles/dac/width/.initial=.7}
\ctikzset{bipoles/dsp/width/.initial=.7}
@@ -557,10 +562,26 @@
\ctikzset{bipoles/vtattenuator/width/.initial=.7}
\ctikzset{bipoles/phaseshifter/width/.initial=.7}
\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
+\ctikzset{bipoles/biast/width/.initial=.7}
+\ctikzset{bipoles/sinetable/width/.initial=.7}
+\ctikzset{bipoles/register/width/.initial=.7}
\ctikzset{bipoles/detector/width/.initial=.7}
\ctikzset{bipoles/saturation/width/.initial=.7}
\ctikzset{bipoles/sigmoid/width/.initial=.7}
\ctikzset{bipoles/allornothing/width/.initial=.7}
+
+\ctikzset{bipoles/camera/height/.initial=1.2}
+\ctikzset{bipoles/camera/depth/.initial=.3}
+\ctikzset{bipoles/camera/width/.initial=.4}
+\ctikzset{bipoles/tvset/width/.initial=0.6}
+\ctikzset{bipoles/tvset/height/.initial=.4}
+\ctikzset{bipoles/trx/width/.initial=1}
+\ctikzset{bipoles/trx/height/.initial=.4}
+\ctikzset{bipoles/swr/width/.initial=0.6}
+\ctikzset{bipoles/swr/height/.initial=.4}
+\ctikzset{bipoles/power/width/.initial=1}
+\ctikzset{bipoles/power/height/.initial=.4}
+
\ctikzset{tripoles/mixer/width/.initial=0.7}
\ctikzset{tripoles/adder/width/.initial=0.7}
\ctikzset{tripoles/circulator/width/.initial=.7}
@@ -719,6 +740,19 @@
\endpgfscope
}
%
+\def\pgfcirc@twoport@draw@narrowsine#1{% #1 -> y shift
+ \pgfscope
+ \pgfsetlinewidth{\pgfstartlinewidth}
+ \pgftransformyshift{#1\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{.125\pgf@circ@res@step}{0\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.125\pgf@circ@res@step}{.125\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.125\pgf@circ@res@step}{-.125\pgf@circ@res@step}}
+ \pgfpathsine{\pgfpoint{.125\pgf@circ@res@step}{-.125\pgf@circ@res@step}}
+ \pgfpathcosine{\pgfpoint{.125\pgf@circ@res@step}{.125\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \endpgfscope
+}
+%
\def\pgfcirc@twoport@draw@splitline{%
\pgfscope
\pgfcirc@twoport@maybedash
@@ -889,6 +923,90 @@
\pgfcirc@twoport@draw@sine{0.0}{0}
\pgfcirc@twoport@draw@sine{-0.5}{0}
}
+%% variable allpass filter
+\pgfcirc@define@twoports{blocks}
+{}
+{\ctikzvalof{bipoles/vallpass/width}}
+{vallpass}
+{\ctikzvalof{bipoles/vallpass/width}}
+{\ctikzvalof{bipoles/vallpass/width}}
+{
+ \pgfcirc@twoport@draw@sine{0.5}{0}
+ \pgfcirc@twoport@draw@sine{0.0}{0}
+ \pgfcirc@twoport@draw@sine{-0.5}{0}
+ \pgfcirc@set@arrows{tunable}{}{latex}
+ \pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
+ \pgfusepath{draw}
+}
+%% Block Generator
+\pgfcirc@define@twoports{blocks}
+{}
+{\ctikzvalof{bipoles/bgenerator/width}}
+{bgenerator}
+{\ctikzvalof{bipoles/bgenerator/width}}
+{\ctikzvalof{bipoles/bgenerator/width}}
+{
+ \pgfcirc@twoport@draw@narrowsine{0.25}
+ \pgfcirc@twoport@draw@narrowsine{0.0}
+ \pgfcirc@twoport@draw@narrowsine{-0.25}
+ \pgftext[x=0.45\pgf@circ@res@left]{\ctikzvalof{bipoles/twoport/text}}
+}
+%% Crystal Generator
+\pgfcirc@define@twoports{blocks}
+{}
+{\ctikzvalof{bipoles/qgenerator/width}}
+{qgenerator}
+{\ctikzvalof{bipoles/qgenerator/width}}
+{\ctikzvalof{bipoles/qgenerator/width}}
+{
+ \pgfcirc@twoport@draw@narrowsine{0.45}
+ \pgfcirc@twoport@draw@narrowsine{0.20}
+ \pgfcirc@twoport@draw@narrowsine{-0.05}
+ \pgftext[x=0.45\pgf@circ@res@left,y=0.25\pgf@circ@res@up]{\ctikzvalof{bipoles/twoport/text}}
+ \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{ 0.7\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathrectangle{\pgfpoint{-0.7\pgf@circ@res@step}{-0.7\pgf@circ@res@step}}
+ {\pgfpoint{1.4\pgf@circ@res@step}{0.2\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.7\pgf@circ@res@step}{-0.8\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{ 0.7\pgf@circ@res@step}{-0.8\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-0.7\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{ 0.7\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+%% Clock generator
+\pgfcirc@define@twoports{blocks}
+{}
+{\ctikzvalof{bipoles/cgenerator/width}}
+{cgenerator}
+{\ctikzvalof{bipoles/cgenerator/width}}
+{\ctikzvalof{bipoles/cgenerator/width}}
+{
+ \pgfpathmoveto{\pgfpoint{-0.70\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.42\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.42\pgf@circ@res@step}{+0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.14\pgf@circ@res@step}{+0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.14\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{+0.14\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{+0.14\pgf@circ@res@step}{+0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{+0.42\pgf@circ@res@step}{+0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{+0.42\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{+0.70\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+%% Generic generator
+\pgfcirc@define@twoports{blocks}
+{}
+{\ctikzvalof{bipoles/ngenerator/width}}
+{ngenerator}
+{\ctikzvalof{bipoles/ngenerator/width}}
+{\ctikzvalof{bipoles/ngenerator/width}}
+{
+ \pgfcirc@twoport@draw@sine{0.5}{0}
+ \pgftext[y=-0.35\pgf@circ@res@up]{\ctikzvalof{bipoles/twoport/text}}
+}
%% ADC
\pgfcirc@define@twoports{blocks}
{}
@@ -1056,6 +1174,89 @@
\pgf@circ@text@strokecolor
\pgftext[center,x=0,y=0]{\Large$\varphi$}
}
+%% BIAS-T
+\pgfcirc@define@twoports{blocks}
+{}
+{\ctikzvalof{bipoles/biast/width}}
+{biast}
+{\ctikzvalof{bipoles/biast/width}}
+{\ctikzvalof{bipoles/biast/width}}
+{
+ \pgfpathmoveto{\pgfpoint{-0.80\pgf@circ@res@step}{-0.50\pgf@circ@res@step}} % Line to Plate 1
+ \pgfpathlineto{\pgfpoint{-0.50\pgf@circ@res@step}{-0.50\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-0.50\pgf@circ@res@step}{-0.50\pgf@circ@res@step}} % Plate 1
+ \pgfpathlineto{\pgfpoint{-0.50\pgf@circ@res@step}{-0.20\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-0.50\pgf@circ@res@step}{-0.50\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.50\pgf@circ@res@step}{-0.80\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-0.30\pgf@circ@res@step}{-0.50\pgf@circ@res@step}} % Plate 1
+ \pgfpathlineto{\pgfpoint{-0.30\pgf@circ@res@step}{-0.20\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-0.30\pgf@circ@res@step}{-0.50\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.30\pgf@circ@res@step}{-0.80\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{-0.30\pgf@circ@res@step}{-0.50\pgf@circ@res@step}} % Line to Center
+ \pgfpathlineto{\pgfpoint{ 0.00\pgf@circ@res@step}{-0.50\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathcircle{\pgfpoint{ 0.00\pgf@circ@res@step}{-0.50\pgf@circ@res@step}}{0.075\pgf@circ@res@step}
+ \pgfusepath{fill}
+ \pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{-0.50\pgf@circ@res@step}} % Line to Right
+ \pgfpathlineto{\pgfpoint{ 0.80\pgf@circ@res@step}{-0.50\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{-0.50\pgf@circ@res@step}} % Line to Coils
+ \pgfpathlineto{\pgfpoint{ 0.00\pgf@circ@res@step}{-0.20\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{-0.20\pgf@circ@res@step}} % Arc1
+ \pgfpatharc{-90}{90}{0.09\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{-0.02\pgf@circ@res@step}} % Arc2
+ \pgfpatharc{-90}{90}{0.09\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{+0.16\pgf@circ@res@step}} % Arc3
+ \pgfpatharc{-90}{90}{0.09\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{+0.36\pgf@circ@res@step}} % Arc4
+ \pgfpatharc{-90}{90}{0.09\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{+0.52\pgf@circ@res@step}} % Line to Coils
+ \pgfpathlineto{\pgfpoint{ 0.00\pgf@circ@res@step}{+0.80\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+%% Sine table
+\pgfcirc@define@twoports{blocks}
+{}
+{\ctikzvalof{bipoles/sinetable/width}}
+{sinetable}
+{\ctikzvalof{bipoles/sinetable/width}}
+{\ctikzvalof{bipoles/sinetable/width}}
+{
+ \pgfcirc@twoport@draw@sine{0.0}{0}
+ \pgfcirc@set@arrows{tunable}{}{latex}
+ \pgfpathmoveto{\pgfpoint{-0.70\pgf@circ@res@step}{-0.70\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{+0.70\pgf@circ@res@step}{-0.70\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgfpathmoveto{\pgfpoint{-0.70\pgf@circ@res@step}{-0.70\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.70\pgf@circ@res@step}{+0.70\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+%% Register
+\pgfcirc@define@twoports{blocks}
+{
+ \savedanchor\northwest{
+ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
+ \pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@y=.5\pgf@y
+ \pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
+ \pgf@x=.5\pgf@x
+ }
+ \anchor{clk}{\northwest\pgf@y=0.5\pgf@y}
+}
+{\ctikzvalof{bipoles/register/width}}
+{register}
+{\ctikzvalof{bipoles/register/width}}
+{\ctikzvalof{bipoles/register/width}}
+{
+ \pgfpathmoveto{\pgfpoint{-1.00\pgf@circ@res@step}{+0.70\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.60\pgf@circ@res@step}{+0.50\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-1.00\pgf@circ@res@step}{+0.30\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ \pgf@circ@text@strokecolor
+ \pgftext[center,x=0,y=0]{\ctikzvalof{bipoles/twoport/text}}
+}
%% detector
\pgfcirc@define@twoports@norotate{blocks}
{}
@@ -1130,6 +1331,139 @@
\pgfpathlineto{\pgfpoint{0.55\pgf@circ@res@step}{.4\pgf@circ@res@step}}
\pgfusepath{draw}
}
+
+%% Camera:
+\pgfcircdeclarebipolescaled{misc}
+{}
+{\ctikzvalof{bipoles/camera/depth}}
+{camera}
+{\ctikzvalof{bipoles/camera/height}}
+{\ctikzvalof{bipoles/camera/width}}{
+ \pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.7\pgf@circ@res@up}}
+ {\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@left}{.7\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@left}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@right}{\pgf@circ@res@up}}
+ \pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{.7\pgf@circ@res@up}}
+ \pgfpathclose
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgf@circ@draworfill
+}
+
+% TV:
+\pgfcirc@define@twoports{blocks}
+{}
+{\ctikzvalof{bipoles/tvset/height}}
+{tvset}
+{\ctikzvalof{bipoles/tvset/height}}
+{\ctikzvalof{bipoles/tvset/width}}
+{
+ \pgfsetlinewidth{2\pgflinewidth} % double in size
+ % Legs
+ \pgfpathmoveto{\pgfpoint{+0.60\pgf@circ@res@step}{-1.10\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{+0.30\pgf@circ@res@step}{-0.70\pgf@circ@res@step}}
+ \pgfusepath{draw}
+ %
+ \pgfpathmoveto{\pgfpoint{-0.60\pgf@circ@res@step}{-1.10\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.30\pgf@circ@res@step}{-0.70\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
+% Transceiver (TRX)
+\pgfcirc@define@twoports{blocks}
+{
+ \anchor{plus}{\northeast \advance\pgf@y by -0.2\pgf@x\pgf@x=-\pgf@x}
+ \anchor{minus}{\northeast \advance\pgf@y by -0.2\pgf@x\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+}
+{\ctikzvalof{bipoles/trx/height}}
+{trx}
+{\ctikzvalof{bipoles/trx/height}}
+{\ctikzvalof{bipoles/trx/width}}
+{
+ % VFO-Wheel:
+ \pgfpathcircle{\pgfpoint{0.60\pgf@circ@res@step}{0.00\pgf@circ@res@step}}{0.25\pgf@circ@res@step}
+ \pgfpathcircle{\pgfpoint{0.68\pgf@circ@res@step}{0.10\pgf@circ@res@step}}{0.06\pgf@circ@res@step}
+ % Volume and Squelch:
+ \pgfpathcircle{\pgfpoint{-0.8\pgf@circ@res@step}{+0.15\pgf@circ@res@step}}{0.1\pgf@circ@res@step}
+ \pgfpathcircle{\pgfpoint{-0.8\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}{0.1\pgf@circ@res@step}
+ % Display:
+ \pgfpathrectangle{\pgfpoint{-0.55\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
+ {\pgfpoint{+0.75\pgf@circ@res@step}{+0.5\pgf@circ@res@step}}%
+ \pgfusepath{draw}
+}
+% Standing Wave Ratio (SWR) Meter
+\pgfcirc@define@twoports{blocks}
+{}
+{\ctikzvalof{bipoles/swr/height}}
+{swr}
+{\ctikzvalof{bipoles/swr/height}}
+{\ctikzvalof{bipoles/swr/width}}
+{
+ % Screen:
+ \pgfscope
+ \pgfsetstrokecolor{gray}\pgfsetdash{{1.5pt}{1pt}}{0pt}
+ \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
+ \pgfpatharc{160}{110}{1.1\pgf@circ@res@step}
+ \pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}
+ \pgfpatharc{-160}{-110}{-1.1\pgf@circ@res@step}
+ \pgfusepath{draw}
+ \endpgfscope
+ \pgfpathmoveto{\pgfpoint{-0.7\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{0.5\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0pt}{-0.4\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.7\pgf@circ@res@step}{-0.2\pgf@circ@res@step}}
+ \pgfpathclose
+ \pgfpathmoveto{\pgfpoint{-0.35\pgf@circ@res@step}{-0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@step}{0.3\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0.35\pgf@circ@res@step}{-0.3\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.3\pgf@circ@res@step}{0.3\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+% Power supply
+\pgfcirc@define@twoports{blocks}
+{
+ \anchor{u1}{\northeast \advance\pgf@y by -0.2\pgf@x\pgf@x=-\pgf@x}
+ \anchor{u2}{\northeast \advance\pgf@y by -0.2\pgf@x\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{plus}{\northeast \advance\pgf@y by -0.2\pgf@x \advance\pgf@x by -0.25\pgf@x}
+ \anchor{minus}{\northeast \advance\pgf@y by -0.2\pgf@x\pgf@y=-\pgf@y \advance\pgf@x by -0.25\pgf@x}
+}
+{\ctikzvalof{bipoles/power/height}}
+{power}
+{\ctikzvalof{bipoles/power/height}}
+{\ctikzvalof{bipoles/power/width}}
+{
+ % Plus:
+ \color{red}
+ \pgfsetstrokecolor{red}
+ \pgfpathcircle{\pgfpoint{0.75\pgf@circ@res@step}{0.20\pgf@circ@res@step}}{0.075\pgf@circ@res@step}%
+ \pgfusepath{fill}
+ \pgfpathmoveto{\pgfpoint{0.50\pgf@circ@res@step}{0.20\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.60\pgf@circ@res@step}{0.20\pgf@circ@res@step}}
+ \pgfpathmoveto{\pgfpoint{0.55\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.55\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
+ \pgfusepath{stroke}
+ % Minus:
+ \color{black}
+ \pgfsetstrokecolor{black}
+ \pgfpathcircle{\pgfpoint{0.75\pgf@circ@res@step}{-0.20\pgf@circ@res@step}}{0.075\pgf@circ@res@step}%
+ \pgfusepath{fill}
+ \pgfpathmoveto{\pgfpoint{0.50\pgf@circ@res@step}{-0.20\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{0.60\pgf@circ@res@step}{-0.20\pgf@circ@res@step}}
+ \pgfusepath{stroke}
+ % Displays:
+ \pgfpathrectangle{\pgfpoint{-0.5\pgf@circ@res@step}{0.00\pgf@circ@res@step}}{\pgfpoint{+0.4\pgf@circ@res@step}{+0.25\pgf@circ@res@step}}%
+ \pgfpathrectangle{\pgfpoint{-0.0\pgf@circ@res@step}{0.00\pgf@circ@res@step}}{\pgfpoint{+0.4\pgf@circ@res@step}{+0.25\pgf@circ@res@step}}%
+ % Poti:
+ \pgfpathcircle{\pgfpoint{-0.30\pgf@circ@res@step}{-0.20\pgf@circ@res@step}}{0.075\pgf@circ@res@step}%
+ \pgfusepath{draw}
+ % Switch:
+ \pgfpathrectangle{\pgfpoint{-0.9\pgf@circ@res@step}{0.00\pgf@circ@res@step}}{\pgfpoint{+0.15\pgf@circ@res@step}{+0.25\pgf@circ@res@step}}%
+ \pgfpathmoveto{\pgfpoint{-0.90\pgf@circ@res@step}{0.125\pgf@circ@res@step}}
+ \pgfpathlineto{\pgfpoint{-0.75\pgf@circ@res@step}{0.125\pgf@circ@res@step}}
+ \pgfusepath{draw}
+}
+
%% converters help function
%% definition for styling the DC symbols (GitHub issue #680)
\ctikzset{blocks dc in segments/.initial=1}
@@ -1574,6 +1908,11 @@
\pgfcirc@activate@bipole@simple{l}{lowpass}
\pgfcirc@activate@bipole@simple{l}{lowpass2}
\pgfcirc@activate@bipole@simple{l}{allpass}
+\pgfcirc@activate@bipole@simple{l}{vallpass}
+\pgfcirc@activate@bipole@simple{l}{bgenerator}
+\pgfcirc@activate@bipole@simple{l}{qgenerator}
+\pgfcirc@activate@bipole@simple{l}{cgenerator}
+\pgfcirc@activate@bipole@simple{l}{ngenerator}
\pgfcirc@activate@bipole@simple{l}{adc}
\pgfcirc@activate@bipole@simple{l}{dac}
\pgfcirc@activate@bipole@simple{l}{dsp}
@@ -1587,10 +1926,18 @@
\pgfcirc@activate@bipole@simple{l}{vtattenuator}
\pgfcirc@activate@bipole@simple{l}{phaseshifter}
\pgfcirc@activate@bipole@simple{l}{vphaseshifter}
+\pgfcirc@activate@bipole@simple{l}{biast}
+\pgfcirc@activate@bipole@simple{l}{sinetable}
+\pgfcirc@activate@bipole@simple{l}{register}
\pgfcirc@activate@bipole@simple{l}{detector}
\pgfcirc@activate@bipole@simple{l}{saturation}
\pgfcirc@activate@bipole@simple{l}{sigmoid}
\pgfcirc@activate@bipole@simple{l}{allornothing}
+\pgfcirc@activate@bipole@simple{l}{camera}
+\pgfcirc@activate@bipole@simple{l}{tvset}
+\pgfcirc@activate@bipole@simple{l}{trx}
+\pgfcirc@activate@bipole@simple{l}{swr}
+\pgfcirc@activate@bipole@simple{l}{power}
\pgfcirc@activate@bipole@simple{l}{fiber}
\pgfcirc@activate@bipole@simple{l}{sacdc}
\pgfcirc@activate@bipole@simple{l}{sdcac}
diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcircshapes.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcircshapes.tex
index f633ba1c5b0..b402557279e 100644
--- a/Master/texmf-dist/tex/generic/circuitikz/pgfcircshapes.tex
+++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcircshapes.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex
index d8d089dd92b..85995946f3f 100644
--- a/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex
+++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcircutils.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcircutils.tex
index 08535b7bc09..caf50139cdf 100644
--- a/Master/texmf-dist/tex/generic/circuitikz/pgfcircutils.tex
+++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcircutils.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcircvoltage.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcircvoltage.tex
index e041b3b5240..f797ce312b7 100644
--- a/Master/texmf-dist/tex/generic/circuitikz/pgfcircvoltage.tex
+++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcircvoltage.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -192,12 +192,14 @@
\pgfmathsetlength{\absvshift}{\absvshift+sign(\absvshift)*height{"Q"}} % with the current font.
\fi
% apply the same shift to open "straight" voltage as raised
- \ifpgf@circuit@bipole@voltage@straight
- \ifx\@@kind\@@open
- \def\pgf@circ@bipole@voltage@label@anchor{center}
- \pgfmathsetlength{\absvshift}{\absvshift+sign(\absvshift)*height{"Q"}} % with the current font.
- \fi
- \fi
+ % commented out due to https://github.com/circuitikz/circuitikz/issues/821
+ % but I'm not sure if it's correct
+ % \ifpgf@circuit@bipole@voltage@straight
+ % \ifx\@@kind\@@open
+ % \def\pgf@circ@bipole@voltage@label@anchor{center}
+ % \pgfmathsetlength{\absvshift}{\absvshift+sign(\absvshift)*height{"Q"}} % with the current font.
+ % \fi
+ % \fi
}
% %\pgf@circ@Rlen/\ctikzvalof{current arrow scale} is equal to the length of the currarrow
%absolute move, minimum space is length of arrowhead
diff --git a/Master/texmf-dist/tex/generic/config/language.dat b/Master/texmf-dist/tex/generic/config/language.dat
index 3d8c7c1ba76..82fffcb043e 100644
--- a/Master/texmf-dist/tex/generic/config/language.dat
+++ b/Master/texmf-dist/tex/generic/config/language.dat
@@ -1,4 +1,4 @@
-% Generated by /home/texlive/karl/Master/bin/x86_64-linux/tlmgr on Thu Feb 29 01:44:16 2024
+% Generated by /home/texlive/karl/Master/bin/x86_64-linux/tlmgr on Sat Jan 11 18:33:58 2025
% $Id: language.us 68317 2023-09-18 21:21:09Z karl $
% language.us (and the start of language.dat)
% - initial hyphenation patterns.
@@ -69,6 +69,8 @@ ngerman-x-2024-02-28 dehyphn-x-2024-02-28.tex
=ngerman-x-latest
% from hyphen-afrikaans:
afrikaans loadhyph-af.tex
+% from hyphen-albanian:
+albanian loadhyph-sq.tex
% from hyphen-ancientgreek:
ancientgreek loadhyph-grc.tex
ibycus ibyhyph.tex
diff --git a/Master/texmf-dist/tex/generic/config/language.dat.lua b/Master/texmf-dist/tex/generic/config/language.dat.lua
index 0aab21c3045..a3d1a7e7e1c 100644
--- a/Master/texmf-dist/tex/generic/config/language.dat.lua
+++ b/Master/texmf-dist/tex/generic/config/language.dat.lua
@@ -1,4 +1,4 @@
--- Generated by /home/texlive/karl/Master/bin/x86_64-linux/tlmgr on Thu Feb 29 01:44:24 2024
+-- Generated by /home/texlive/karl/Master/bin/x86_64-linux/tlmgr on Mon Jan 20 17:25:01 2025
-- $Id: language.us.lua 18737 2010-06-04 17:09:02Z karl $
--[[
language.us.dat (and the start of language.dat.lua), used by:
@@ -59,6 +59,15 @@ return {
patterns = 'hyph-af.pat.txt',
hyphenation = 'hyph-af.hyp.txt',
},
+-- from hyphen-albanian:
+ ['albanian'] = {
+ loader = 'loadhyph-sq.tex',
+ lefthyphenmin = 2,
+ righthyphenmin = 2,
+ synonyms = { },
+ patterns = 'hyph-sq.pat.txt',
+ hyphenation = '',
+ },
-- from hyphen-ancientgreek:
['ancientgreek'] = {
loader = 'loadhyph-grc.tex',
@@ -78,8 +87,8 @@ return {
-- from hyphen-arabic:
['arabic'] = {
loader = 'zerohyph.tex',
- lefthyphenmin = 2,
- righthyphenmin = 3,
+ lefthyphenmin = 0,
+ righthyphenmin = 0,
synonyms = { },
patterns = '',
},
@@ -238,8 +247,8 @@ return {
-- from hyphen-farsi:
['farsi'] = {
loader = 'zerohyph.tex',
- lefthyphenmin = 2,
- righthyphenmin = 3,
+ lefthyphenmin = 0,
+ righthyphenmin = 0,
synonyms = { 'persian' },
patterns = '',
},
diff --git a/Master/texmf-dist/tex/generic/config/language.def b/Master/texmf-dist/tex/generic/config/language.def
index 6a8a823de1c..2f4815b06cb 100644
--- a/Master/texmf-dist/tex/generic/config/language.def
+++ b/Master/texmf-dist/tex/generic/config/language.def
@@ -35,11 +35,13 @@
\addlanguage{ngerman-x-latest}{dehyphn-x-2024-02-28.tex}{}{2}{2}
% from hyphen-afrikaans:
\addlanguage{afrikaans}{loadhyph-af.tex}{}{1}{2}
+% from hyphen-albanian:
+\addlanguage{albanian}{loadhyph-sq.tex}{}{2}{2}
% from hyphen-ancientgreek:
\addlanguage{ancientgreek}{loadhyph-grc.tex}{}{1}{1}
\addlanguage{ibycus}{ibyhyph.tex}{}{2}{2}
% from hyphen-arabic:
-\addlanguage{arabic}{zerohyph.tex}{}{2}{3}
+\addlanguage{arabic}{zerohyph.tex}{}{0}{0}
% from hyphen-armenian:
\addlanguage{armenian}{loadhyph-hy.tex}{}{1}{2}
% from hyphen-basque:
@@ -78,8 +80,8 @@
\addlanguage{amharic}{loadhyph-mul-ethi.tex}{}{1}{1}
\addlanguage{geez}{loadhyph-mul-ethi.tex}{}{1}{1}
% from hyphen-farsi:
-\addlanguage{farsi}{zerohyph.tex}{}{2}{3}
-\addlanguage{persian}{zerohyph.tex}{}{2}{3}
+\addlanguage{farsi}{zerohyph.tex}{}{0}{0}
+\addlanguage{persian}{zerohyph.tex}{}{0}{0}
% from hyphen-finnish:
\addlanguage{finnish}{loadhyph-fi.tex}{}{2}{2}
\addlanguage{schoolfinnish}{loadhyph-fi-x-school.tex}{}{1}{1}
diff --git a/Master/texmf-dist/tex/generic/expkv-bundle/expkv-cs.tex b/Master/texmf-dist/tex/generic/expkv-bundle/expkv-cs.tex
index ef836dd7b57..e1a90e78dda 100644
--- a/Master/texmf-dist/tex/generic/expkv-bundle/expkv-cs.tex
+++ b/Master/texmf-dist/tex/generic/expkv-bundle/expkv-cs.tex
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-%% Copyright (C) 2020-2023 Jonathan P. Spratte
+%% Copyright (C) 2020-2024 Jonathan P. Spratte
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this license or
@@ -52,8 +52,8 @@
\else
\expandafter\endinput
\fi
-\def\ekvcVersion{1.3}
-\def\ekvcDate{2023-01-23}
+\def\ekvcVersion{1.4}
+\def\ekvcDate{2024-12-16}
\csname ekvc@tmp\endcsname
\expandafter\chardef\csname ekvc@tmp\endcsname=\catcode`\@
\catcode`\@=11
@@ -646,22 +646,26 @@
}
\def\ekvc@enum@name#1#2#3{ekvc#1(#2)#3}
\ekvpDefType{ekvc@setup@secondary}{enum}
- {\ekvpAssertTwoValues{#3}\ekvc@type@enum\ekvc@type@enum@{#1}#3}
+ {\ekvpAssertTwoValues{#3}\ekvc@type@enum{#1}#3}
\ekvpDefType{ekvc@setup@secondary}{choice}
- {\ekvpAssertTwoValues{#3}\ekvc@type@enum\ekvc@type@choice@{#1}#3}
-\protected\long\def\ekvc@type@enum#1#2#3%
+ {\ekvpAssertTwoValues{#3}\ekvc@type@choice{#1}#3}
+\protected\long\def\ekvc@type@enum@or@choice#1#2%
{%
- \ekvc@assert@defined{#3}%
+ \ekvc@assert@defined{#2}%
\ekvc@long\edef\ekvc@tmp##1%
{%
\ekv@unexpanded{\expandafter\ekvc@h@enum\detokenize}{##1}%
\ekv@unexpanded{\ekvc@stop}%
- {\ekvc@set}{#2}%
+ {\ekvc@set}{#1}%
}%
- \ekvlet\ekvc@set{#2}\ekvc@tmp
+ \ekvlet\ekvc@set{#1}\ekvc@tmp
+ }
+\protected\long\def\ekvc@type@enum#1#2%
+ {%
+ \ekvc@type@enum@or@choice{#1}{#2}%
\def\ekvc@tmp{0}%
\expandafter\ekvcsvloop\expandafter
- {\expandafter#1\csname\ekv@name\ekvc@set{#3}\endcsname{#2}}%
+ {\expandafter\ekvc@type@enum@\csname\ekv@name\ekvc@set{#2}\endcsname{#1}}%
}
\ekv@exparg{\protected\long\def\ekvc@type@enum@#1#2#3}%
{%
@@ -670,12 +674,29 @@
{\ekv@unexpanded{#1}{\ekvc@tmp}}%
\edef\ekvc@tmp{\the\numexpr\ekvc@tmp+1\relax}%
}
-\ekv@exparg{\protected\long\def\ekvc@type@choice@#1#2#3}%
+\protected\long\def\ekvc@type@choice#1#2%
+ {%
+ \ekvc@type@enum@or@choice{#1}{#2}%
+ \ekv@exparg
+ {%
+ \expandafter\ekvparse\expandafter
+ {%
+ \expandafter\ekvc@type@choice@k
+ \csname\ekv@name\ekvc@set{#2}\endcsname{#1}%
+ }%
+ }%
+ {%
+ \expandafter\ekvc@type@choice@p
+ \csname\ekv@name\ekvc@set{#2}\endcsname{#1}%
+ }%
+ }
+\ekv@exparg{\protected\long\def\ekvc@type@choice@p#1#2#3#4}%
{%
\expandafter\expandafter\expandafter\edef\expandafter
\csname\ekvc@enum@name\ekvc@set{#2}{\detokenize{#3}}\endcsname
- {\ekv@unexpanded{#1{#3}}}%
+ {\ekv@unexpanded{#1{#4}}}%
}
+\protected\long\def\ekvc@type@choice@k#1#2#3{\ekvc@type@choice@p#1{#2}{#3}{#3}}
\ekv@if@lastnamedcs
{%
\ekv@exparg{\def\ekvc@h@enum#1\ekvc@stop#2#3}%
diff --git a/Master/texmf-dist/tex/generic/expkv-bundle/expkv-def.tex b/Master/texmf-dist/tex/generic/expkv-bundle/expkv-def.tex
index 89ddadbf916..078f7ea0dac 100644
--- a/Master/texmf-dist/tex/generic/expkv-bundle/expkv-def.tex
+++ b/Master/texmf-dist/tex/generic/expkv-bundle/expkv-def.tex
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-%% Copyright (C) 2020-2023 Jonathan P. Spratte
+%% Copyright (C) 2020-2024 Jonathan P. Spratte
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this license or
@@ -52,8 +52,8 @@
\else
\expandafter\endinput
\fi
-\def\ekvdVersion{1.0}
-\def\ekvdDate{2023-01-23}
+\def\ekvdVersion{1.1}
+\def\ekvdDate{2024-12-16}
\csname ekvd@tmp\endcsname
\expandafter\chardef\csname ekvd@tmp\endcsname=\catcode`\@
\catcode`\@=11
@@ -456,6 +456,20 @@
}
\protected\long\def\ekvd@type@smeta@#1#2#3%
{\ekvd@prot\ekvd@long\ekv@expargtwice{\def\ekvd@tmp#3}{\ekvset{#1}{#2}}}
+\ekvd@def@type{alias}
+ {%
+ \ekvd@assert@arg
+ \ekvd@assert@not@protected
+ \ekvd@assert@not@long
+ \ekvd@assert@not@also
+ \ekvifdefined\ekvd@set{#3}{\ekvd@do@new{}{#1}}{}%
+ \ekvifdefinedNoVal\ekvd@set{#3}{\ekvd@do@new{NoVal}{#1}}{}%
+ \ekvpAssertTF
+ {\ekvifdefined\ekvd@set{#3}\@firstoftwo{\ekvifdefinedNoVal\ekvd@set{#3}}}%
+ {undefined key `#3'}%
+ \ekvifdefined\ekvd@set{#3}{\ekvletkv\ekvd@set{#1}\ekvd@set{#3}}{}%
+ \ekvifdefinedNoVal\ekvd@set{#3}{\ekvletkvNoVal\ekvd@set{#1}\ekvd@set{#3}}{}%
+ }
\protected\def\ekvd@type@choice#1%
{%
\ekvd@assert@not@long
@@ -542,6 +556,35 @@
{#1=\@firstofone{\ekvd@tmp} }%
\edef\ekvd@tmp{\the\numexpr\ekvd@tmp+1\relax}%
}
+\ekvd@def@type{choice-aliases}
+ {%
+ \ekvd@assert@arg
+ \ekvd@assert@not@protected
+ \ekvd@assert@not@long
+ \ekvd@assert@not@also
+ \ekvd@assert@already@choice{#1}%
+ \ekvparse\ekvd@err@missing@value{\ekvd@t@choicealias{#1}}{#3}%
+ }
+\protected\long\def\ekvd@t@choicealias#1#2#3%
+ {%
+ \ifx\ekvd@do@new\ekvd@assert@new
+ \ekv@fi@firstofone
+ \fi
+ \@gobble
+ {%
+ \ekv@ifdefined{\ekvd@choice@name\ekvd@set{#1}{#2}}%
+ {\ekvd@err@not@new@choice{#2}\ekv@gobbleto@stop}%
+ {}%
+ }%
+ \ekv@ifdefined{\ekvd@choice@name\ekvd@set{#1}{#3}}%
+ {%
+ \expandafter\let
+ \csname\ekvd@choice@name\ekvd@set{#1}{#2}\expandafter\endcsname
+ \csname\ekvd@choice@name\ekvd@set{#1}{#3}\endcsname
+ }%
+ {\ekvd@err@undefined@choice{#1}{#3}}%
+ \@gobble\ekv@stop
+ }
\ekvd@def@type{unknown-choice}
{%
\ekvd@do@new@for@name{\ekvd@unknown@choice@name\ekvd@set{#1}}%
@@ -770,9 +813,14 @@
}
\protected\def\ekvd@if@not@already@choice#1%
{%
- \expandafter\ekvd@if@not@already@choice@a
- \csname\ekv@name\ekvd@set{#1}\endcsname
- {}\ekvd@h@choice\ekvd@stop
+ \ekvifdefined\ekvd@set{#1}%
+ {%
+ \expandafter
+ \ekvd@if@not@already@choice@a
+ \csname\ekv@name\ekvd@set{#1}\endcsname
+ {}\ekvd@h@choice\ekvd@stop
+ }%
+ {\@firstofone}%
}
\protected\def\ekvd@if@not@already@choice@a
{%
@@ -782,6 +830,8 @@
{%
\ekv@ifempty{#2}\@firstofone\@gobble
}
+\long\def\ekvd@assert@already@choice#1%
+ {\ekvd@if@not@already@choice{#1}{\ekvd@err@not@choice\ekvpGobbleT}}
\long\def\ekvd@ifspace#1%
{%
\ekvd@ifspace@#1 \ekv@ifempty@B
@@ -813,7 +863,7 @@
{%
\ekvd@errm
{%
- Undefined noval key `\ekv@unexpanded{#1}' found while processing
+ Undefined NoVal key `\ekv@unexpanded{#1}' found while processing
`\ekvd@cur'%
}%
}
@@ -835,8 +885,19 @@
}
\protected\def\ekvd@err@not@new
{\ekvd@errm{The key for `\ekvd@cur' is already defined}}
-\protected\long\def\ekvd@err@misused@unknown
+\protected\def\ekvd@err@not@new@choice#1%
+ {\ekvd@errm{The choice `\detokenize{#1}' is already defined for `\ekvd@cur'}}
+\protected\def\ekvd@err@misused@unknown
{\ekvd@errm{Misuse of the unknown type found while processing `\ekvd@cur'}}
+\protected\long\def\ekvd@err@not@choice
+ {\ekvd@errm{The key for `\ekvd@cur' is not an existing choice key}}
+\protected\long\def\ekvd@err@missing@value#1%
+ {\ekvd@errm{Missing value for `#1' in `\ekvd@cur'}}
+\protected\long\def\ekvd@err@undefined@choice#1#2%
+ {%
+ \ekvd@errm
+ {Undefined choice `#2' for key `#1' found while processing `\ekvd@cur'}%
+ }
\def\ekvd@err@choice@invalid#1%
{%
\ekvd@err@choice@invalid@#1%
diff --git a/Master/texmf-dist/tex/generic/expkv-bundle/expkv-pop.tex b/Master/texmf-dist/tex/generic/expkv-bundle/expkv-pop.tex
index d0d77817d9a..163c72a30d9 100644
--- a/Master/texmf-dist/tex/generic/expkv-bundle/expkv-pop.tex
+++ b/Master/texmf-dist/tex/generic/expkv-bundle/expkv-pop.tex
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-%% Copyright (C) 2020-2023 Jonathan P. Spratte
+%% Copyright (C) 2020-2024 Jonathan P. Spratte
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this license or
diff --git a/Master/texmf-dist/tex/generic/expkv-bundle/expkv.tex b/Master/texmf-dist/tex/generic/expkv-bundle/expkv.tex
index 5e6488039b1..a5bfd2b79af 100644
--- a/Master/texmf-dist/tex/generic/expkv-bundle/expkv.tex
+++ b/Master/texmf-dist/tex/generic/expkv-bundle/expkv.tex
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-%% Copyright (C) 2020-2023 Jonathan P. Spratte
+%% Copyright (C) 2020-2024 Jonathan P. Spratte
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this license or
@@ -74,8 +74,8 @@
\expandafter\endinput
\fi
\fi
-\def\ekvVersion{2.0}
-\def\ekvDate{2023-01-23}
+\def\ekvVersion{2.1}
+\def\ekvDate{2024-12-26}
\csname ekv@tmp\endcsname
\expandafter\chardef\csname ekv@tmp\endcsname=\catcode`\@
\catcode`\@=11
@@ -123,6 +123,9 @@
\long\def\ekv@ifblank@\ekv@mark#1#2\ekv@stop{}
\long\def\ekv@ifblank@false\ekv@stop\@firstoftwo#1#2{#2}
\def\ekv@ifblank@gobbletrue\ekv@stop#1{}
+\long\def\ekv@ifatmostone#1%
+ {\ekv@ifatmostone@#1\ekv@stop\ekv@ifblank@false\ekv@stop\@firstoftwo}
+\long\def\ekv@ifatmostone@#1#2#3\ekv@stop{}
\ekv@if@lastnamedcs
{%
\long\def\ekv@ifdefined#1{\ifcsname#1\endcsname\ekv@ifdef@\fi\@secondoftwo}
@@ -228,14 +231,13 @@
{\ekv@csv@loop{#2}\ekv@mark}
\def\ekv@name@set#1{ekv#1(}
\long\def\ekv@name@key#1{#1)}
-\edef\ekv@name
+\long\ekv@expandedarg{\def\ekv@name#1#2}%
{%
\ekv@unexpanded\expandafter{\ekv@name@set{#1}}%
\ekv@unexpanded\expandafter{\ekv@name@key{\detokenize{#2}}}%
}
-\long\ekv@exparg{\def\ekv@name#1#2}{\ekv@name}
\def\ekv@undefined@set#1{! expkv Error: Set `#1' undefined.}
-\edef\ekv@checkvalid
+\protected\ekv@expandedarg{\def\ekv@checkvalid#1#2}%
{%
\ekv@unexpanded\expandafter{\ekv@ifempty{#1}}%
\ekv@unexpanded
@@ -256,7 +258,6 @@
}%
\ekv@unexpanded{\@gobble}%
}
-\ekv@exparg{\protected\def\ekv@checkvalid#1#2}{\ekv@checkvalid}%
\ekv@expargtwice{\long\def\ekvifdefined#1#2}%
{\expandafter\ekv@ifdefined\expandafter{\ekv@name{#1}{#2}}}
\ekv@expargtwice{\long\def\ekvifdefinedNoVal#1#2}%
@@ -1071,22 +1072,22 @@
\ekv@expansion@parse@pair@\@gobble{#2}%
}
\long\def\ekv@expansion@parse@pair@#1#2\@gobble#3{\ekv@unexpanded{#3{#1}{#2}}}
-\ekv@expargtwice{\protected\def\ekvsetdef#1#2}%
+\ekv@exparg{\protected\def\ekvsetdef#1#2}%
{%
\romannumeral
- \ekv@exparg{\ekv@zero\ekv@exparg{\def#1##1}}%
+ \ekv@exparg{\expandafter\ekv@zero\ekv@exparg{\def#1##1}}%
{\ekvset{#2}{##1}}%
}
-\ekv@expargtwice{\protected\def\ekvsetSneakeddef#1#2}%
+\ekv@exparg{\protected\def\ekvsetSneakeddef#1#2}%
{%
\romannumeral
- \ekv@exparg{\ekv@zero\ekv@exparg{\long\def#1##1##2}}%
+ \ekv@exparg{\expandafter\ekv@zero\ekv@exparg{\def#1##1##2}}%
{\ekvsetSneaked{#2}{##1}{##2}}%
}
-\ekv@expargtwice{\protected\def\ekvsetdefSneaked#1#2#3}%
+\ekv@exparg{\protected\long\def\ekvsetdefSneaked#1#2#3}%
{%
\romannumeral
- \ekv@exparg{\ekv@zero\ekv@exparg{\long\def#1##1}}%
+ \ekv@exparg{\expandafter\ekv@zero\ekv@exparg{\def#1##1}}%
{\ekvsetSneaked{#2}{#3}{##1}}%
}
\begingroup
@@ -1094,7 +1095,11 @@
\@firstofone{\endgroup
\def\ekv@alignsafe{\romannumeral\iffalse{\fi`^^@ }
}
-\def\ekv@endalignsafe{\ifnum`{=\ekv@zero}\fi}
+\begingroup
+\catcode`\^^@=1
+\@firstofone{\endgroup
+ \edef\ekv@endalignsafe{\ekv@unexpanded{\romannumeral`^^@\iffalse}\fi} }
+}
\begingroup
\def\ekvoptarg#1#2{%
\endgroup
@@ -1112,25 +1117,22 @@
#2%
\@firstofone{ ##2}{##3}%
}
-\long\def\ekv@optarg@b\ekv@mark[\ekv@mark\ifnum`##1\fi\@firstofone##2##3##4##5]%
+\@firstofone{\long\def\ekv@optarg@b
+ \ekv@mark[\ekv@mark\romannumeral`##1\fi} \@firstofone##2##3##4##5]%
{#2##2{##5}}
-\long\def\ekv@optargTF@b
- ##1\ekv@mark[\ekv@mark\ifnum`##2\fi\@firstofone##3##4##5]%
+\@firstofone{\long\def\ekv@optargTF@b
+ ##1\ekv@mark[\ekv@mark\romannumeral`##2\fi} \@firstofone##3##4##5]%
{#2 ##1{##5}}
}
\ekv@exparg
- {%
- \expandafter\ekv@strip\expandafter
- {\expandafter\ekv@mark\ekv@alignsafe}%
- \ekvoptarg
- }%
+ {\ekv@exparg\ekv@strip{\expandafter\ekv@mark\ekv@alignsafe}\ekvoptarg}%
\ekv@endalignsafe
\long\def\ekv@optarg@if#1\ekv@mark[\ekv@mark{}
\long\def\ekv@ifstar#1#2#3%
{%
- \if*\string#3%
- \ekv@fi@firstoftwo
- \fi
+ \ekv@ifatmostone{#3}%
+ {\if*\string#3\ekv@fi@firstoftwo\fi}%
+ {}%
\@secondoftwo
{#1}%
{#2{#3}}%
@@ -1223,7 +1225,7 @@
\ekv@exparg{\long\def\ekv@err@common@#1`#2' #3.#4#5}%
{\ekv@err{#4 `#5' in set `#2'}}
\ekv@exparg{\long\def\ekv@err@unknown#1#2}{\ekv@err@common{unknown key}{#1}}
-\ekv@exparg{\long\def\ekv@err@noarg#1#2}
+\ekv@exparg{\long\def\ekv@err@noarg#1#2}%
{\ekv@err@common{unwanted value for}{#1}}
\ekv@exparg{\long\def\ekv@err@reqval#1#2}%
{\ekv@err@common{missing value for}{#1}}
@@ -1232,7 +1234,7 @@
\ekv@exparg{\def\ekv@err@redirect@k@notfound#1#2\ekv@stop}%
{\ekv@err{no NoVal key `#1' in sets #2}}
\ekv@exparg{\def\ekv@err@undefined@expansion#1\fi}%
- {\expandafter\fi\ekv@err{Undefined expansion rule `#1'}}%
+ {\expandafter\fi\ekv@err{Undefined expansion rule `#1'}}
\ekv@exparg{\def\ekv@err@erroneous@variable#1}%
{\ekv@err{Erroneous variable `#1' used}}
\ekv@exparg{\def\ekv@err@key@no@reinsert}%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-ec.tex b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-ec.tex
index 13e4638d6d3..09fbb043077 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-ec.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-ec.tex
@@ -6,7 +6,7 @@
% This file is part of hyph-utf8 package and autogenerated.
% See http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-il2.tex b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-il2.tex
index 4b656a19c6e..db6552ed466 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-il2.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-il2.tex
@@ -6,7 +6,7 @@
% This file is part of hyph-utf8 package and autogenerated.
% See http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-il3.tex b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-il3.tex
index 83ced73df56..cde62eee382 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-il3.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-il3.tex
@@ -6,7 +6,7 @@
% This file is part of hyph-utf8 package and autogenerated.
% See http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-l7x.tex b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-l7x.tex
index 7d7cfede6f6..6406aae84e0 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-l7x.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-l7x.tex
@@ -6,7 +6,7 @@
% This file is part of hyph-utf8 package and autogenerated.
% See http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-lmc.tex b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-lmc.tex
index af1a2685c16..d8c04c9f02b 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-lmc.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-lmc.tex
@@ -6,7 +6,7 @@
% This file is part of hyph-utf8 package and autogenerated.
% See http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-lth.tex b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-lth.tex
index 702382ade85..db496e61238 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-lth.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-lth.tex
@@ -6,7 +6,7 @@
% This file is part of hyph-utf8 package and autogenerated.
% See http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-qx.tex b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-qx.tex
index d96a5d33bb9..dd0f98feb34 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-qx.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-qx.tex
@@ -6,7 +6,7 @@
% This file is part of hyph-utf8 package and autogenerated.
% See http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-t2a.tex b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-t2a.tex
index 1ab8d0fd6b1..bada2ddedcb 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-t2a.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-t2a.tex
@@ -6,7 +6,7 @@
% This file is part of hyph-utf8 package and autogenerated.
% See http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-t8m.tex b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-t8m.tex
index f37659ce830..433b017a682 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-t8m.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/conversions/conv-utf8-t8m.tex
@@ -6,7 +6,7 @@
% This file is part of hyph-utf8 package and autogenerated.
% See http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-af.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-af.tex
index b17b5dd287d..b80039c5edb 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-af.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-af.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-as.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-as.tex
index 0f4a5b7dcd4..8bb2e43c1b3 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-as.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-as.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-be.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-be.tex
index e46119f4501..48495017c10 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-be.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-be.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-bg.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-bg.tex
index 5db5d4b6910..438119867a1 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-bg.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-bg.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-bn.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-bn.tex
index 4d999993c19..0a98dcbbd06 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-bn.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-bn.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ca.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ca.tex
index 56235624de1..4114e40b820 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ca.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ca.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cop.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cop.tex
index e43026d893e..85afeb4cfaa 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cop.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cop.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cs.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cs.tex
index 4517ff755ca..fd04f0ca27a 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cs.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cs.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cu.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cu.tex
index d2a3b46681e..43453ba88e4 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cu.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cu.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cy.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cy.tex
index d908c0e1c25..cc664a49c7a 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cy.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-cy.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-da.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-da.tex
index 5fe6a25f567..4327e6e293a 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-da.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-da.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-de-1901.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-de-1901.tex
index 6ffc07b2322..0aed99f6574 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-de-1901.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-de-1901.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-de-1996.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-de-1996.tex
index 0ed889f4916..e9e0fa82491 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-de-1996.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-de-1996.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-de-ch-1901.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-de-ch-1901.tex
index fdb01e23488..c39409cb733 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-de-ch-1901.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-de-ch-1901.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-el-monoton.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-el-monoton.tex
index e8647ac6924..c3046b85e79 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-el-monoton.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-el-monoton.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-el-polyton.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-el-polyton.tex
index 9b610048130..62eae94df8f 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-el-polyton.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-el-polyton.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-en-gb.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-en-gb.tex
index 720d50c7450..58c40c8bcf1 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-en-gb.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-en-gb.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-en-us.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-en-us.tex
index 04b851911b4..b38eb0f17e4 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-en-us.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-en-us.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-eo.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-eo.tex
index 6d81d70d7c7..b1845f6aeef 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-eo.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-eo.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-es.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-es.tex
index 9c93dfb7546..24241dad5a6 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-es.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-es.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-et.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-et.tex
index b9871207915..a32c852adaf 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-et.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-et.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-eu.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-eu.tex
index de2ad95d268..e821dba23c6 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-eu.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-eu.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fi-x-school.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fi-x-school.tex
index 185ed98fd16..098dffba3ee 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fi-x-school.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fi-x-school.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fi.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fi.tex
index eb90a4653aa..254f0725708 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fi.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fi.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fr.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fr.tex
index 463f8a176ae..361f2de2b50 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fr.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fr.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fur.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fur.tex
index 2682c8aff65..bf53aa6a34d 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fur.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-fur.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ga.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ga.tex
index 37a553bd9c6..2ee9d83c700 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ga.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ga.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-gl.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-gl.tex
index c5abf7a6828..00d87cc83c9 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-gl.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-gl.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-grc.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-grc.tex
index 5a1a6a22718..af7142d42bd 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-grc.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-grc.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-gu.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-gu.tex
index 7ed92b440db..d34e0aa9cb1 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-gu.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-gu.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hi.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hi.tex
index bf116b97272..d77a9bc303a 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hi.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hi.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hr.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hr.tex
index a18ba96cd8d..04993c49d1f 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hr.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hr.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hsb.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hsb.tex
index 7696b5966c8..72aee916ab6 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hsb.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hsb.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hu.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hu.tex
index 0b8aec54ca3..97c1edd0f98 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hu.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hu.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hy.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hy.tex
index e5efc1fa0b9..c88c72b2d9b 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hy.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-hy.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ia.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ia.tex
index 5e3672b8564..cfe99f83b34 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ia.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ia.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-id.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-id.tex
index 34321ecf447..b7fd9578e52 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-id.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-id.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-is.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-is.tex
index 727e4639ea2..e8813d8b5fd 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-is.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-is.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-it.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-it.tex
index c9727e22749..01ab3749cb4 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-it.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-it.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ka.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ka.tex
index 04ca3313c3c..633ac5b4f45 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ka.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ka.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-kmr.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-kmr.tex
index 8093cb205a9..7952a6302b1 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-kmr.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-kmr.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-kn.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-kn.tex
index a9cb0bcf6fb..5d5e8796c0f 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-kn.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-kn.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-la-x-classic.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-la-x-classic.tex
index 2182f587be7..a64e5418e97 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-la-x-classic.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-la-x-classic.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-la-x-liturgic.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-la-x-liturgic.tex
index bdd1f2b3fea..af6d7caf6db 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-la-x-liturgic.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-la-x-liturgic.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-la.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-la.tex
index 49f91a7e1cd..76e02de87f8 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-la.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-la.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-lt.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-lt.tex
index 423c4adc0d2..c336e7b30de 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-lt.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-lt.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-lv.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-lv.tex
index dc81e63dea1..0390b1a742d 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-lv.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-lv.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mk.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mk.tex
index 11be3b030e6..8520f441b8a 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mk.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mk.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ml.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ml.tex
index 563f9b9bb1e..c7acb5c62cb 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ml.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ml.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mn-cyrl-x-lmc.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mn-cyrl-x-lmc.tex
index dcb9bf541d6..e4ccb343796 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mn-cyrl-x-lmc.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mn-cyrl-x-lmc.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mn-cyrl.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mn-cyrl.tex
index bce43041ec4..c915d6b2ac2 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mn-cyrl.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mn-cyrl.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mr.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mr.tex
index 56d1423a77a..e62e7e1d4ae 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mr.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mr.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mul-ethi.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mul-ethi.tex
index f20d8882c70..f8a564bb753 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mul-ethi.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-mul-ethi.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-nb.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-nb.tex
index c55de38eda5..7a466db0def 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-nb.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-nb.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-nl.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-nl.tex
index 06d02609c01..a1770913388 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-nl.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-nl.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-nn.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-nn.tex
index 47000c51cb4..28b71c919db 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-nn.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-nn.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-oc.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-oc.tex
index d8eef8ab69e..b4974baaf36 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-oc.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-oc.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-or.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-or.tex
index a16759f495a..06e42acb9e6 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-or.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-or.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pa.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pa.tex
index 41b81988805..b6629b48b5c 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pa.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pa.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pi.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pi.tex
index 45c56eed192..865d8020620 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pi.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pi.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pl.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pl.tex
index 01c5ae07855..494841ae424 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pl.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pl.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pms.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pms.tex
index abaeeee666f..7fbba784e2e 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pms.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pms.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pt.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pt.tex
index 4422db8e156..bcbe772adea 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pt.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-pt.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-rm.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-rm.tex
index c1de90eb7ce..3588ffc2180 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-rm.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-rm.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
@@ -13,7 +13,6 @@
% these lines may be moved to a separate file.
%
\begingroup
-\lccode`\'=`\'
% Test for pTeX
\ifx\kanjiskip\undefined
% Test for native UTF-8 (which gets only a single argument)
@@ -23,14 +22,14 @@
% Unicode-aware engine (such as XeTeX or LuaTeX) only sees a single (2-byte) argument
\message{UTF-8 Romansh hyphenation patterns}
\input hyph-rm.tex
- \input hyph-quote-rm.tex
\else
% 8-bit engine (such as TeX or pdfTeX)
- \message{ASCII Romansh hyphenation patterns}
+ \message{EC Romansh hyphenation patterns}
+ \input conv-utf8-ec.tex
\input hyph-rm.tex
\fi\else
% pTeX
- \message{ASCII Romansh hyphenation patterns}
- \input hyph-rm.tex
+ \message{EC Romansh hyphenation patterns}
+ \input hyph-rm.ec.tex
\fi
\endgroup
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ro.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ro.tex
index 73c3a473bb2..b71643968f6 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ro.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ro.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ru.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ru.tex
index c340b2e8eab..b53eeba7c29 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ru.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ru.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sa.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sa.tex
index 5ebff462ae0..62fa82a2355 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sa.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sa.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sk.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sk.tex
index 8f2d396e2d2..e9a6108575a 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sk.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sk.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sl.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sl.tex
index 9744070ebbc..a41989f9396 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sl.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sl.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sq.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sq.tex
new file mode 100644
index 00000000000..28662b986bf
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sq.tex
@@ -0,0 +1,37 @@
+% filename: loadhyph-sq.tex
+% language: albanian
+%
+% Loader for hyphenation patterns, generated by
+% source/generic/hyph-utf8/generate-pattern-loaders.rb
+% See also http://tug.org/tex-hyphen
+%
+% Copyright 2008-2025 TeX Users Group.
+% You may freely use, modify and/or distribute this file.
+% (But consider adapting the scripts if you need modifications.)
+%
+% Once it turns out that more than a simple definition is needed,
+% these lines may be moved to a separate file.
+%
+\begingroup
+\lccode`\'=`\'
+% Test for pTeX
+\ifx\kanjiskip\undefined
+% Test for native UTF-8 (which gets only a single argument)
+% That's Tau (as in Taco or ΤΕΧ, Tau-Epsilon-Chi), a 2-byte UTF-8 character
+\def\testengine#1#2!{\def\secondarg{#2}}\testengine Τ!\relax
+\ifx\secondarg\empty
+ % Unicode-aware engine (such as XeTeX or LuaTeX) only sees a single (2-byte) argument
+ \message{UTF-8 Albanian hyphenation patterns}
+ \input hyph-sq.tex
+ \input hyph-quote-sq.tex
+\else
+ % 8-bit engine (such as TeX or pdfTeX)
+ \message{EC Albanian hyphenation patterns}
+ \input conv-utf8-ec.tex
+ \input hyph-sq.tex
+\fi\else
+ % pTeX
+ \message{EC Albanian hyphenation patterns}
+ \input hyph-sq.ec.tex
+\fi
+\endgroup
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sr-cyrl.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sr-cyrl.tex
index b778cef4f77..daf9a934745 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sr-cyrl.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sr-cyrl.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sr-latn.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sr-latn.tex
index 73f1969ec76..d2d862f98f4 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sr-latn.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sr-latn.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sv.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sv.tex
index 1995112bbdf..84c4b379d11 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sv.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-sv.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ta.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ta.tex
index b9814a55a22..ab6c99105b2 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ta.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-ta.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-te.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-te.tex
index 47d2b6c6192..9381320d047 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-te.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-te.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-th.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-th.tex
index 35fe2926987..a9bf62a1898 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-th.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-th.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-tk.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-tk.tex
index 62470dcfa99..306cf82f0c2 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-tk.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-tk.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-tr.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-tr.tex
index 21ecabff952..5d3eb037aba 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-tr.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-tr.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-uk.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-uk.tex
index 528ef6eed4e..72e0f2b8f04 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-uk.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-uk.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-zh-latn-pinyin.tex b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-zh-latn-pinyin.tex
index 96f0c548f29..9bac42fd6ee 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-zh-latn-pinyin.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/loadhyph/loadhyph-zh-latn-pinyin.tex
@@ -5,7 +5,7 @@
% source/generic/hyph-utf8/generate-pattern-loaders.rb
% See also http://tug.org/tex-hyphen
%
-% Copyright 2008-2021 TeX Users Group.
+% Copyright 2008-2025 TeX Users Group.
% You may freely use, modify and/or distribute this file.
% (But consider adapting the scripts if you need modifications.)
%
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/ptex/hyph-rm.ec.tex b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/ptex/hyph-rm.ec.tex
new file mode 100644
index 00000000000..d9debed224e
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/ptex/hyph-rm.ec.tex
@@ -0,0 +1,398 @@
+% pTeX-friendly hyphenation patterns
+%
+% language: romansh (rm)
+% encoding: ec
+%
+% This file has been auto-generated from hyph-rm.tex
+% with a script [texmf]/scripts/generic/hyph-utf8/generate-ptex-patterns.rb
+% See the original file for details about author, licence etc.
+%
+\bgroup
+\lccode"F9="F9
+\patterns{
+.a3p2n
+.anti1
+.anti3m2n
+an3ti4er
+an3ti4era
+.bio1
+.ca4p3s
+.circu2m1
+.co2n3j
+.contro1
+.co1o2p
+.di2s3
+.di2s4ch3oc
+di3s4e3gnar
+.e2x1e
+.ex2tra3
+ex4em3pel
+ex4aim3pel
+.fran2k3
+.free3
+.li3p2sa
+.narco1
+.opto1
+.orto3p2
+.para1
+.plu2s3q
+.poli3p2
+.pre1
+.p2s
+.re1ac
+.re1i2scr
+.sha2re3
+.tran2s3ac
+.tran2s3c
+.tran2s3d
+.tran2s3l
+.tran2s3n
+.tran2s3p
+.tran2s3r
+.tran2s3t
+.su2b3j
+.su2b3lu
+.su2b3r
+.wa2g3n
+.wel2t1
+a1ie
+a1iu
+ame2gl1
+atg3na
+a1uo
+a1ya
+2at.
+e1iu
+e2w
+o1ia
+o1ie
+o1io
+o1iu
+1b
+2bb
+2bc
+2bd
+2bf
+2bm
+2bn
+2bp
+2bs
+2bt
+bu3n4ga
+2bv
+2b.
+1c
+2cb
+2c3c
+2cd
+2cf
+2ck
+2cm
+2cn
+2cq
+2cs
+2ct
+2cz
+2chh
+2chb
+ch2r
+2chn
+2c.
+.c2
+1d
+2db
+2dd
+2dg
+2dl
+2dm
+2dn
+2dp
+4ds.
+d2sch
+4dsch.
+2dt
+2dv
+2dw
+2d.
+.d2
+.esch3an.
+1f
+2fb
+2fg
+2fn
+2fs
+2ft
+2f.
+1g
+2gb
+2gd
+2gf
+2gg
+giu2v1na
+4gls.
+2gm
+4gns.
+2gp
+2gs
+2gt
+2gv
+2gw
+2gz
+2gh2t
+2g.
+1h
+2hb
+2hd
+2hh
+hi3p2n
+h2l
+2hm
+2hn
+2hr
+2hv
+2h.
+1j
+2j.
+4js.
+1k
+2kg
+2kf
+k2h
+2kk
+k2l
+2km
+k2r
+2ks
+2kt
+2k.
+1l
+2lb
+2lc
+2ld
+2l3f2
+2lg
+l2h
+l2j
+2lk
+2lm
+2ln
+2lp
+2lq
+2lr
+2ls
+2lt
+2lv
+2lw
+2lz
+2l.
+1m
+2mb
+2mc
+2mf
+2ml
+2mn
+2mp
+2mq
+2mr
+2ms
+2mt
+2mv
+2mw
+2m.
+1n
+2nb
+2nc
+2nd
+2nf
+2ng
+2nk
+2nl
+2nm
+2np
+2nq
+2nr
+2ns
+4ns.
+2n3sch
+4ch.
+4gl.
+4gn.
+4tg.
+4sch.
+4tsch.
+n2s3fer
+2nt
+2nv
+2nz
+n2g3n
+2nheit
+2n.
+on3li4ne
+.oz3an3de
+.oz1i2
+1p
+2pd
+per3su3n4ga
+l^^f9n4ga
+p2h
+4ph.
+2pn
+3p2ne
+2ps
+3p2sic
+2pt
+2pz
+2p.
+1q
+2qq
+2q.
+1r
+2rb
+2rc
+2rd
+2rf
+r2h
+2rg
+2rk
+2rl
+2rm
+2rn
+2rp
+2rq
+2rs
+2rt
+r2t2s3
+2rv
+2rx
+2rw
+2rz
+2r.
+1s2
+2schs.
+2shm
+2sh.
+2s3l
+2s3s
+s4s3m
+2s3p2n
+2st.
+2stb
+2stc
+2std
+2stf
+4stg.
+2stm
+2stn
+2stp
+2sts
+2stt
+2stv
+2sz
+4s.
+1t
+2tb
+2tc
+2td
+2tf
+4tgs.
+t2h
+t2l
+2tm
+2tn
+2tp
+t2s
+4tschs.
+4ts.
+t2t3s
+2tv
+2tw
+t2z
+2tzk
+tz2s
+2t.
+1v
+2vc
+2vs.
+2vv
+2v.
+1w
+w2h
+wa2r
+2w1y
+2w.
+1x
+2xb
+2xc
+2xf
+2xh
+2xm
+2xp
+4xs.
+2xt
+2xw
+2x.
+y1ou
+y1i
+1z
+2zb
+2zd
+2zl
+2zn
+2zp
+2zt
+2zs
+2zv
+2z.
+.z2
+2f3f
+2l3l
+2m3m
+2n3n
+2p3p
+2r3r
+2t3t
+2z3z
+s2c2h2
+3t4s4c4h2
+t2g
+g2n
+g2l
+c2h
+g2h
+b2l
+c2l
+f2l
+p2l
+b2r
+c2r
+d2r
+f2r
+g2r
+p2r
+t2r
+z2r
+s2c
+s2d
+s2p
+s2t
+s2t2g
+v2l
+v2r
+4sps.
+.pe4r3en3cun3ter.
+pro4s3ma
+.tran2s3f
+omi4s3du
+.giu3v4en3t4e4tg3na
+.cre4s3mar.
+4z3cha
+.vi4sch3na
+.mu4sch3na.
+.ou4vra.
+.pi4tsch3na
+.hi4gh5light.
+.po4d5cast.
+.we4l4l5ness.
+.ti4c4k4et.
+}
+\egroup
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/ptex/hyph-sq.ec.tex b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/ptex/hyph-sq.ec.tex
new file mode 100644
index 00000000000..373f9acb016
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/ptex/hyph-sq.ec.tex
@@ -0,0 +1,318 @@
+% pTeX-friendly hyphenation patterns
+%
+% language: albanian (sq)
+% encoding: ec
+%
+% This file has been auto-generated from hyph-sq.tex
+% with a script [texmf]/scripts/generic/hyph-utf8/generate-ptex-patterns.rb
+% See the original file for details about author, licence etc.
+%
+\bgroup
+\lccode"E7="E7
+\lccode"EB="EB
+\patterns{
+2'2
+.a1jo.
+a1a
+1b
+.b2
+2b.
+b2l
+2bsh
+1c
+.c2
+2c.
+2cj
+2cn
+2ct
+1^^e7
+.^^e72
+2^^e7.
+2^^e7s
+^^e72k
+1d
+d2h
+.d2
+2d.
+d2j
+2dn
+d2r
+2drr
+2dt
+d2shm
+2dh.
+2dhj2dht
+2dhsh
+2dh2j
+2dht
+dh2r
+e1a
+e3ll
+e1u
+^^eb1a
+1f
+.f2
+2f.
+f2l
+f2r
+2fs
+2ft
+3f2sh
+2f2t.
+1g
+.g2
+2g.
+g2j
+2gj.
+2gjv
+2gl
+2gm
+2gr
+2gt
+1h
+.h2
+2h.
+2hd
+2hj
+2hm
+2hn
+2ht
+2hrr
+i1a
+i1e
+i1u
+.i2k3i
+.i2k3j
+1j2
+.j2
+2j.
+2j3c2
+2j3d
+2j3m
+2j3p
+2j3r
+2j3t
+2j3v
+2j3s
+2jf.
+j4tp
+2jt.
+j3sh2m
+1k
+.k2
+2k.
+k2j
+2kl
+2km
+2kth.
+k2r
+2kt
+2ks
+2ksh
+1l
+.l2
+2l.
+2lb
+2l^^e7
+2lf
+2lj
+2lm
+2ln
+l3n2g
+2ls
+2lt
+l2l2
+4ll.
+2ll3s
+4ll3z
+2ll3k
+4ll3gj
+2ll3n
+2ll3t
+1m
+.m2
+2m.
+m2b
+mb2j
+mb2l
+mb2r
+m2j
+2m3n2d
+2mt
+2mr
+2m3sh2
+2m4sh.
+2m1v
+1n
+.n2
+2n.
+.ng2r
+2nc
+2nd
+n2dm
+n2dv
+n2d3sh
+2ng
+2nk
+2nsp
+2nsh
+n3sh2m
+2nt
+2nv
+2nx
+2nz
+n2j
+2njt
+2nj.
+2njv
+o1i
+1p
+.p2
+2p.
+p2j
+2pn
+2pt
+p2je.
+2ps
+p2r
+pa2s3her
+.pe2r3af
+.p^^eb2r3af
+1q
+.q2
+2q.
+2qj
+2qk
+2qm
+2qn
+2qt
+q2v
+1r
+.r2
+2r.
+2rt
+2rb2
+2r2b3r
+2rc
+2r^^e7
+2rd
+2rc2rd
+2rf
+2rg
+2rh
+.ri3n2d
+2rk
+2rl
+2rm
+2rn
+r2n3d2
+2rp
+2rq
+2rs
+2r3sh2m
+2rdh
+r2dht
+2r3dr
+2rj
+2rv
+2rz
+r2r
+.rr2
+2rr.
+2rrj
+2rrk
+2rrm
+2rrn
+2rrt
+2rrs
+1s
+.s2
+2s.
+2sh.
+2sb
+2sc
+2sd
+2sf
+2sg
+2sj
+2sk
+2sm
+2sn
+sn2k
+2sp
+2ssh
+2st
+st2r
+3s2je2ll
+sk2ll
+s2ve.
+s2h
+.sh4
+2shm
+3sh2mj
+2shj
+.sh2j
+sh2k
+2shk.
+sh2n
+shn4d
+sh2p
+.sh2q
+4sh3k2r
+2shq
+2sh3nj
+3sh4pj
+3sh4pr
+2shr
+2shs
+2sht
+.sh2t
+3sh2te.
+1t
+.t2
+4t.
+2tk
+t2j
+2tm
+2tn
+2tp
+2t3sh2m
+t2r
+2tv
+t2h
+.th2
+2th.
+2th^^e7
+2ths
+2thf
+2thm
+2tht
+u1ar.
+u1a
+u1e
+1v
+.v2
+2v.
+2vr
+v2j
+1x
+x2h
+.x2
+2x.
+y1
+1z
+.zb2r
+.z2
+2z.
+2zhd
+2zm
+2zn
+2zj
+2zs
+2zt
+2zv
+z3sh2m
+z2h
+.zh2
+}
+\egroup
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/quote/hyph-quote-sq.tex b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/quote/hyph-quote-sq.tex
new file mode 100644
index 00000000000..24bb149bc82
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/quote/hyph-quote-sq.tex
@@ -0,0 +1,6 @@
+\bgroup
+\lccode`\’=`\’
+\patterns{
+2’2
+}
+\egroup
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-af.tex b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-af.tex
index 1753ebc0a38..4fd2cf2d353 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-af.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-af.tex
@@ -16,9 +16,25 @@
% -
% email: hyphen (at) rekenaar (dot) net
% licence:
-% name: LPPL
-% version: 1.3
-% or_later: true
+% name: MIT
+% text: |-
+% 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.
% hyphenmins:
% generation:
% left: 1
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-ar.tex b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-ar.tex
new file mode 100644
index 00000000000..42fded70680
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-ar.tex
@@ -0,0 +1,23 @@
+% title: (No) Hyphenation patterns for Arabic
+% copyright: Copyright (C) Arthur Reutenauer 2018
+% notice: This file is part of the hyph-utf8 package.
+% See http://www.hyphenation.org/tex for more information.
+% language:
+% name: Arabic
+% tag: ar
+% version: 0
+% authors:
+% - Arthur Reutenauer
+% licence:
+% -
+% name: MIT
+% hyphenmins:
+% typesetting:
+% left:
+% right:
+% texlive:
+% babelname: arabic
+% use_old_loader: true
+% legacy_patterns: zerohyph.tex
+% message:
+% description: Prevent hyphenation in Arabic.
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-el-monoton.tex b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-el-monoton.tex
index 8b94446db15..29852f716ec 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-el-monoton.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-el-monoton.tex
@@ -9,10 +9,15 @@
% authors:
% -
% name: Dimitrios Filippou
-% contact: dimitrios.filippou (at) riotinto.com
+% contact: dimitrios.ap.filippou (at) gmail.com
% licence:
-% name: LPPL
-% url: https://latex-project.org/lppl/
+% - This file is available under any of the following licences:
+% -
+% name: LPPL
+% url: https://latex-project.org/lppl/
+% -
+% name: MIT
+% url: https://opensource.org/licenses/MIT
% hyphenmins:
% typesetting:
% left: 1
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-el-polyton.tex b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-el-polyton.tex
index 958811eb81e..0e6dc7fc277 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-el-polyton.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-el-polyton.tex
@@ -9,10 +9,15 @@
% authors:
% -
% name: Dimitrios Filippou
-% contact: dimitrios.filippou (at) riotinto.com
+% contact: dimitrios.ap.filippou (at) gmail.com
% licence:
-% name: LPPL
-% url: https://latex-project.org/lppl/
+% - This file is available under any of the following licences:
+% -
+% name: LPPL
+% url: https://latex-project.org/lppl/
+% -
+% name: MIT
+% url: https://opensource.org/licenses/MIT
% hyphenmins:
% typesetting:
% left: 1
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-fa.tex b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-fa.tex
new file mode 100644
index 00000000000..e49c2cab19e
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-fa.tex
@@ -0,0 +1,25 @@
+% title: (No) Hyphenation patterns for Persian
+% copyright: Copyright (C) Arthur Reutenauer 2018
+% notice: This file is part of the hyph-utf8 package.
+% See http://www.hyphenation.org/tex for more information.
+% language:
+% name: Persian
+% tag: fa
+% version: 0
+% authors:
+% - Arthur Reutenauer
+% licence:
+% -
+% name: MIT
+% hyphenmins:
+% typesetting:
+% left:
+% right:
+% texlive:
+% babelname: farsi
+% synonyms:
+% - persian
+% use_old_loader: true
+% legacy_patterns: zerohyph.tex
+% message:
+% description: Prevent hyphenation in Persian.
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-gl.tex b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-gl.tex
index ba73d05ff0d..02497715f6a 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-gl.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-gl.tex
@@ -15,11 +15,8 @@
% name: Javier A. Múgica
% contact: javier (at) digi21.eu
% licence:
-% name: LPPL
-% version: 1.3
-% status: maintained
-% maintainer: Javier A. Múgica
-% url: https://latex-project.org/lppl/lppl-1-3.html
+% name: Unlicence
+% url: https://unlicense.org/
% texlive:
% encoding: ec
% babelname: galician
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-grc-x-ibycus.tex b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-grc-x-ibycus.tex
new file mode 100644
index 00000000000..37db742df8d
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-grc-x-ibycus.tex
@@ -0,0 +1,24 @@
+% title: Hyphenation patterns for Ancient Greek in Ibycus encoding
+% copyright: Copyright (C) Peter Heslin
+% notice: This file is part of the hyph-utf8 package.
+% See http://www.hyphenation.org/tex for more information.
+% language:
+% name: Ancient Greek, Ibycus encoding
+% tag: grc-x-ibycus
+% version: 3.0
+% authors:
+% - name: Peter Heslin
+% licence:
+% -
+% name: LPPL
+% hyphenmins:
+% typesetting:
+% left: 2
+% right: 2
+% texlive:
+% babelname: ibycus
+% use_old_patterns_comment: true
+% use_old_loader: true
+% legacy_patterns: ibyhyph.tex
+% message: Ancient Greek hyphenation patterns for Ibycus encoding
+% package: ancient greek
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-grc.tex b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-grc.tex
index e18c58589c1..1e4ea93be85 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-grc.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-grc.tex
@@ -13,10 +13,15 @@
% authors:
% -
% name: Dimitrios Filippou
-% contact: dimitrios.filippou (at) riotinto.com
+% contact: dimitrios.ap.filippou (at) gmail.com
% licence:
-% name: LPPL
-% url: http://www.latex-project.org/lppl/
+% - This file is available under any of the following licences:
+% -
+% name: LPPL
+% url: http://www.latex-project.org/lppl/
+% -
+% name: MIT
+% url: https://opensource.org/licenses/MIT
% changes:
% -
% date: 2016-05-12
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-ka.tex b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-ka.tex
index a64e516599e..503d82b4796 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-ka.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-ka.tex
@@ -12,10 +12,8 @@
% name: Levan Shoshiashvili
% contact: shoshia (at) hotmail.com
% licence:
-% name: LPPL
-% version: 1.3
-% or_later: true
-% url: http://www.latex-project.org/lppl.txt
+% name: MIT
+% url: https://opensource.org/licenses/MIT
% hyphenmins:
% typesetting:
% left: 1
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-nl.tex b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-nl.tex
index d6ebb8782c1..ba9f63bb7f2 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-nl.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-nl.tex
@@ -7,10 +7,8 @@
% tag: nl
% version: 1.1 (November 1996)
% licence:
-% name: LPPL
-% version: 1
-% or_later: true
-% url: https://latex-project.org/lppl/
+% name: MIT
+% url: https://opensource.org/licenses/MIT
% authors:
% -
% name: Piet Tutelaers
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-rm.tex b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-rm.tex
index 669ebe21a8b..c7b2fa63f49 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-rm.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-rm.tex
@@ -1,15 +1,17 @@
% title: Hyphenation patterns for Romansh
-% copyright: Copyright (C) 2011 Claudio Beccari
+% copyright: Copyright (C) 2012 Claudio Beccari, 2024 far.ch
% notice: This file is part of the hyph-utf8 package.
% See http://www.hyphenation.org/tex for more information.
% language:
% name: Romansh
% tag: rm
-% version: 1.1 2012/04/10
+% version: 2.0 2024-10-29
% authors:
-% -
-% name: Claudio Beccari
+% - name: Claudio Beccari
% contact: claudio.beccari (at) gmail.com
+% -
+% name: Martin Cantieni, far.ch
+% contact: da@far.ch
% licence:
% - This file may be distributed under any of the following licences:
% -
@@ -41,7 +43,7 @@
% version: 1.3
% or_later: true
% status: maintained
-% maintainer: Claudio Beccari, e-mail claudio dot beccari at gmail dot com
+% maintainer: far.ch, da@far.ch
% hyphenmins:
% typesetting:
% left: 2
@@ -49,405 +51,402 @@
% changes:
% - 2012-01-14 - First release 1.0
% - 2012-04-10 - Version 1.1. Fix inconsistencies.
+% - 2024-10-29 - Version 2.0. Added and replaced lots of patterns, all Romansh idioms taken into account
% texlive:
-% encoding: ascii
+% encoding: ec
% babelname: romansh
% message: Romansh hyphenation patterns
% description: |-
-% Hyphenation patterns for Romansh in ASCII encoding.
-% They are supposed to comply with the rules indicated by the Lia
-% Rumantscha (Romansh language society).
+% Hyphenation patterns for Romansh.
+% All Romansh idioms and Rumantsch Grischun taken into account, developed
+% in collaboration with Fundaziun Medias Rumantschas (Romansh news agency)
+% and Lia Rumantscha (Romansh umbrella organisation).
% ==========================================
-% These hyphenation patterns for the Romansh language are supposed to comply
-% with the rules indicated by the Lia Rumantscha (Romansh language society).
-% They were initially obtained by merging the consonantic endings to the Italian
-% patterns and adding the necessary patterns for the special Romansch di-, try- and
-% tetra-graphs used in this language. The common Latin roots of both languages helped
-% a lot in this adaptation.
-% Digraphs: ch, gh, gl, gn, tg
-% Trigraphs: sch
-% Tetragraphs: tsch
-%
-% First part is identical to what is contained in hyph-quote-rm.tex
-% It must be repeated because that file is read only when creating format files
-% for UTF-8 aware engines (XeXeX, LuaTeX)
-%%
-\patterns{% some revision might be necessary to handle more vocalic elisions
-2'2
-2'.
-2b'
-2c'
-2ch'.
-2ch''
-2d'
-2f'
-2g'
-2h'
-2j'
-2k'
-2l'.
-2l''
-2m'
-2n'
-2p'
-2q'
-2r'
-4s'.
-4s''
-2sch'
-2schs'
-2sh'
-2st'
-4tsch'
-4tschs'
-2t'.
-2t''
-2v'.
-2v''
-2w'
-2x'
-2z'.
-2z''
-%%%%%%%%%%%%%%%%%%%%
-.a3p2n
-.anti1
-.anti3m2n
-.bio1
-.ca4p3s
-.circu2m1
-.co2n3j
-.contro1
-.co1o2p
-.di2s3
-.di2s4ch3oc
-.e2x1e
-.ex2tra3
-.fran2k3
-.free3
-.li3p2sa
-.narco1
-.opto1
-.orto3p2
-.para1
-.plu2s3q
-.poli3p2
-.pre1
-.p2s
-.re1ac
-.re1i2scr
-.sha2re3
-.tran2s3ac
-.tran2s3c
-.tran2s3d
-.tran2s3l
-.tran2s3n
-.tran2s3p
-.tran2s3r
-.tran2s3t
-.su2b3j
-.su2b3lu
-.su2b3r
-.wa2g3n
-.wel2t1
-a1ia
-a1ie
-a1io
-a1iu
-a1uo
-a1ya
-2at.
-e1iu
-e2w
-o1ia
-o1ie
-o1io
-o1iu
-1b
-2bb
-2bc
-2bd
-2bf
-2bm
-2bn
-2bp
-2bs
-2bt
-2bv
-b2l
-b2r
-2b.
-1c
-2cb
-2cc
-2cd
-2cf
-2ck
-2cm
-2cn
-2cq
-2cs
-2ct
-2cz
-2chh
-c2h
-2ch.
-2chb
-ch2r
-2chn
-c2l
-c2r
-2c.
-.c2
-1d
-2db
-2dd
-2dg
-2dl
-2dm
-2dn
-2dp
-d2r
-2ds
-2dt
-2dv
-2dw
-2d.
-.d2
-1f
-2fb
-2fg
-2ff
-2fn
-f2l
-f2r
-2fs
-2ft
-2f.
-1g
-2gb
-2gd
-2gf
-2gg
-g2h
-g2l
-2gm
-g2n
-2gp
-g2r
-2gs
-2gt
-2gv
-2gw
-2gz
-2gh2t
-2g.
-1h
-2hb
-2hd
-2hh
-hi3p2n
-h2l
-2hm
-2hn
-2hr
-2hv
-2h.
-1j
-2j.
-1k
-2kg
-2kf
-k2h
-2kk
-k2l
-2km
-k2r
-2ks
-2kt
-2k.
-1l
-2lb
-2lc
-2ld
-2l3f2
-2lg
-l2h
-l2j
-2lk
-2ll
-2lm
-2ln
-2lp
-2lq
-2lr
-2ls
-2lt
-2lv
-2lw
-2lz
-2l.
-1m
-2mb
-2mc
-2mf
-2ml
-2mm
-2mn
-2mp
-2mq
-2mr
-2ms
-2mt
-2mv
-2mw
-2m.
-1n
-2nb
-2nc
-2nd
-2nf
-2ng
-2nk
-2nl
-2nm
-2nn
-2np
-2nq
-2nr
-2ns
-2ns.
-2n3sch
-n4sch.
-n2s3fer
-2nt
-2nv
-2nz
-n2g3n
-2nheit
-2n.
-1p
-2pd
-p2h
-p2l
-2pn
-3p2ne
-2pp
-p2r
-2ps
-3p2sic
-2pt
-2pz
-2p.
-1q
-2qq
-2q.
-1r
-2rb
-2rc
-2rd
-2rf
-r2h
-2rg
-2rk
-2rl
-2rm
-2rn
-2rp
-2rq
-2rr
-2rs
-2rt
-r2t2s3
-2rv
-2rx
-2rw
-2rz
-2r.
-1s2
-sch2
-2sch.
-2schs.
-2shm
-2sh.
-2s3l
-2s3s
-s4s3m
-2s3p2n
-2st.
-2stb
-2stc
-2std
-2stf
-4stg.
-2stm
-2stn
-2stp
-2sts
-2stt
-2stv
-2sz
-4s.
-1t
-2tb
-2tc
-2td
-2tf
-t2g
-2tg.
-t2h
-t2l
-2tm
-2tn
-2tp
-t2r
-t2s
-3t2sch2
-4tsch.
-4tschs.
-2tt
-t2t3s
-2tv
-2tw
-t2z
-2tzk
-tz2s
-2t.
-1v
-2vc
-v2l
-v2r
-2vs.
-2vv
-2v.
-1w
-w2h
-wa2r
-2w1y
-2w.
-1x
-2xb
-2xc
-2xf
-2xh
-2xm
-2xp
-2xt
-2xw
-2x.
-y1ou
-y1i
-1z
-2zb
-2zd
-2zl
-2zn
-2zp
-2zr
-2zt
-2zs
-2zv
-2zz
-2z.
-.z2
+%
+\patterns{
+ .a3p2n
+ .anti1
+ .anti3m2n
+ an3ti4er
+ an3ti4era
+ .bio1
+ .ca4p3s
+ .circu2m1
+ .co2n3j
+ .contro1
+ .co1o2p
+ .di2s3
+ .di2s4ch3oc
+ di3s4e3gnar
+ .e2x1e
+ .ex2tra3
+ ex4em3pel
+ ex4aim3pel
+ .fran2k3
+ .free3
+ .li3p2sa
+ .narco1
+ .opto1
+ .orto3p2
+ .para1
+ .plu2s3q
+ .poli3p2
+ .pre1
+ .p2s
+ .re1ac
+ .re1i2scr
+ .sha2re3
+ .tran2s3ac
+ .tran2s3c
+ .tran2s3d
+ .tran2s3l
+ .tran2s3n
+ .tran2s3p
+ .tran2s3r
+ .tran2s3t
+ .su2b3j
+ .su2b3lu
+ .su2b3r
+ .wa2g3n
+ .wel2t1
+ a1ie
+ a1iu
+ ame2gl1
+ atg3na
+ a1uo
+ a1ya
+ 2at.
+ e1iu
+ e2w
+ o1ia
+ o1ie
+ o1io
+ o1iu
+ 1b
+ 2bb
+ 2bc
+ 2bd
+ 2bf
+ 2bm
+ 2bn
+ 2bp
+ 2bs
+ 2bt
+ bu3n4ga
+ 2bv
+ 2b.
+ 1c
+ 2cb
+ 2c3c
+ 2cd
+ 2cf
+ 2ck
+ 2cm
+ 2cn
+ 2cq
+ 2cs
+ 2ct
+ 2cz
+ 2chh
+ 2chb
+ ch2r
+ 2chn
+ 2c.
+ .c2
+ 1d
+ 2db
+ 2dd
+ 2dg
+ 2dl
+ 2dm
+ 2dn
+ 2dp
+ 4ds.
+ d2sch
+ 4dsch.
+ 2dt
+ 2dv
+ 2dw
+ 2d.
+ .d2
+ .esch3an.
+ 1f
+ 2fb
+ 2fg
+ 2fn
+ 2fs
+ 2ft
+ 2f.
+ 1g
+ 2gb
+ 2gd
+ 2gf
+ 2gg
+ giu2v1na
+ 4gls.
+ 2gm
+ 4gns.
+ 2gp
+ 2gs
+ 2gt
+ 2gv
+ 2gw
+ 2gz
+ 2gh2t
+ 2g.
+ 1h
+ 2hb
+ 2hd
+ 2hh
+ hi3p2n
+ h2l
+ 2hm
+ 2hn
+ 2hr
+ 2hv
+ 2h.
+ 1j
+ 2j.
+ 4js.
+ 1k
+ 2kg
+ 2kf
+ k2h
+ 2kk
+ k2l
+ 2km
+ k2r
+ 2ks
+ 2kt
+ 2k.
+ 1l
+ 2lb
+ 2lc
+ 2ld
+ 2l3f2
+ 2lg
+ l2h
+ l2j
+ 2lk
+ 2lm
+ 2ln
+ 2lp
+ 2lq
+ 2lr
+ 2ls
+ 2lt
+ 2lv
+ 2lw
+ 2lz
+ 2l.
+ 1m
+ 2mb
+ 2mc
+ 2mf
+ 2ml
+ 2mn
+ 2mp
+ 2mq
+ 2mr
+ 2ms
+ 2mt
+ 2mv
+ 2mw
+ 2m.
+ 1n
+ 2nb
+ 2nc
+ 2nd
+ 2nf
+ 2ng
+ 2nk
+ 2nl
+ 2nm
+ 2np
+ 2nq
+ 2nr
+ 2ns
+ 4ns.
+ 2n3sch
+ 4ch.
+ 4gl.
+ 4gn.
+ 4tg.
+ 4sch.
+ 4tsch.
+ n2s3fer
+ 2nt
+ 2nv
+ 2nz
+ n2g3n
+ 2nheit
+ 2n.
+ on3li4ne
+ .oz3an3de
+ .oz1i2
+ 1p
+ 2pd
+ per3su3n4ga
+ lùn4ga
+ p2h
+ 4ph.
+ 2pn
+ 3p2ne
+ 2ps
+ 3p2sic
+ 2pt
+ 2pz
+ 2p.
+ 1q
+ 2qq
+ 2q.
+ 1r
+ 2rb
+ 2rc
+ 2rd
+ 2rf
+ r2h
+ 2rg
+ 2rk
+ 2rl
+ 2rm
+ 2rn
+ 2rp
+ 2rq
+ 2rs
+ 2rt
+ r2t2s3
+ 2rv
+ 2rx
+ 2rw
+ 2rz
+ 2r.
+ 1s2
+ 2schs.
+ 2shm
+ 2sh.
+ 2s3l
+ 2s3s
+ s4s3m
+ 2s3p2n
+ 2st.
+ 2stb
+ 2stc
+ 2std
+ 2stf
+ 4stg.
+ 2stm
+ 2stn
+ 2stp
+ 2sts
+ 2stt
+ 2stv
+ 2sz
+ 4s.
+ 1t
+ 2tb
+ 2tc
+ 2td
+ 2tf
+ 4tgs.
+ t2h
+ t2l
+ 2tm
+ 2tn
+ 2tp
+ t2s
+ 4tschs.
+ 4ts.
+ t2t3s
+ 2tv
+ 2tw
+ t2z
+ 2tzk
+ tz2s
+ 2t.
+ 1v
+ 2vc
+ 2vs.
+ 2vv
+ 2v.
+ 1w
+ w2h
+ wa2r
+ 2w1y
+ 2w.
+ 1x
+ 2xb
+ 2xc
+ 2xf
+ 2xh
+ 2xm
+ 2xp
+ 4xs.
+ 2xt
+ 2xw
+ 2x.
+ y1ou
+ y1i
+ 1z
+ 2zb
+ 2zd
+ 2zl
+ 2zn
+ 2zp
+ 2zt
+ 2zs
+ 2zv
+ 2z.
+ .z2
+ 2f3f
+ 2l3l
+ 2m3m
+ 2n3n
+ 2p3p
+ 2r3r
+ 2t3t
+ 2z3z
+ s2c2h2
+ 3t4s4c4h2
+ t2g
+ g2n
+ g2l
+ c2h
+ g2h
+ b2l
+ c2l
+ f2l
+ p2l
+ b2r
+ c2r
+ d2r
+ f2r
+ g2r
+ p2r
+ t2r
+ z2r
+ s2c
+ s2d
+ s2p
+ s2t
+ s2t2g
+ v2l
+ v2r
+ 4sps.
+ .pe4r3en3cun3ter.
+ pro4s3ma
+ .tran2s3f
+ omi4s3du
+ .giu3v4en3t4e4tg3na
+ .cre4s3mar.
+ 4z3cha
+ .vi4sch3na
+ .mu4sch3na.
+ .ou4vra.
+ .pi4tsch3na
+ .hi4gh5light.
+ .po4d5cast.
+ .we4l4l5ness.
+ .ti4c4k4et.
} % Pattern end
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-sq.tex b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-sq.tex
new file mode 100644
index 00000000000..55fd81823e0
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-sq.tex
@@ -0,0 +1,108 @@
+% title: Hyphenation patterns for Albanian
+% notice: This file is part of the hyph-utf8 package.
+% See http://www.hyphenation.org/tex for more information.
+%
+% version: 2025-01-10
+%
+% changes:
+% - 2020-09-21: Initial version
+% - 2025-01-10: Removed duplicates
+%
+% authors:
+% -
+% name: Claudio Beccari
+% contact: claudio.beccari@gmail.com
+% -
+% name: Sabina Koliqi
+% contact: sabina.kolici@enaip.piemonte.it
+% -
+% name: Arthur Rosendahl
+% contact: arthur@rosendahl.io
+%
+% copyright: >
+% Copyright (C) 2020 Claudio Beccari, Sabina Koliqi
+% (C) 2025 Arthur Rosendahl
+%
+% licence:
+% name: MIT
+% url: http://opensource.org/licenses/mit-license.php
+% text: >
+% 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.
+%
+% language:
+% name: Albanian
+% tag: sq
+%
+% hyphenmins:
+% generation:
+% left: 1
+% right: 1
+% typesetting:
+% left: 2
+% right: 2
+%
+% texlive:
+% encoding: ec
+% babelname: albanian
+% message: Albanian hyphenation patterns
+% description: Hyphenation patterns for Albanian in UTF-8 and T1 encoding.
+%
+% =========================================================================
+%
+\message{Albanian Hyphenation Patterns }
+\patterns{2'2
+.a1jo. a1a
+1b .b2 2b. b2l 2bsh
+1c .c2 2c. 2cj 2cn 2ct
+1ç .ç2 2ç. 2çs ç2k
+1d d2h .d2 2d. d2j 2dn d2r 2drr 2dt d2shm
+2dh. 2dhj2dht 2dhsh 2dh2j 2dht dh2r
+ e1a e3ll e1u
+ë1a
+1f .f2 2f. f2l f2r 2fs 2ft 3f2sh 2f2t.
+1g .g2 2g. g2j 2gj. 2gjv 2gl 2gm 2gr 2gt
+1h .h2 2h. 2hd 2hj 2hm 2hn 2ht 2hrr
+i1a i1e i1u .i2k3i .i2k3j
+1j2 .j2 2j. 2j3c2 2j3d 2j3m 2j3p 2j3r 2j3t 2j3v 2j3s 2jf. j4tp 2jt. j3sh2m
+1k .k2 2k. k2j 2kl 2km 2kth. k2r 2kt 2ks 2ksh
+1l .l2 2l. 2lb 2lç 2lf 2lj 2lm 2ln l3n2g 2ls 2lt
+l2l2 4ll. 2ll3s 4ll3z
+ 2ll3k 4ll3gj 2ll3n 2ll3t
+1m .m2 2m. m2b
+mb2j mb2l mb2r m2j 2m3n2d 2mt 2mr 2m3sh2 2m4sh. 2m1v
+1n .n2 2n. .ng2r 2nc 2nd n2dm n2dv n2d3sh 2ng 2nk 2nsp 2nsh n3sh2m 2nt 2nv 2nx 2nz
+n2j 2njt 2nj. 2njv
+o1i
+1p .p2 2p. p2j 2pn 2pt p2je. 2ps p2r pa2s3her .pe2r3af .pë2r3af
+1q .q2 2q. 2qj 2qk 2qm 2qn 2qt q2v
+1r .r2 2r. 2rt 2rb2 2r2b3r 2rc 2rç 2rd 2rc2rd 2rf 2rg 2rh .ri3n2d 2rk 2rl 2rm 2rn r2n3d2 2rp 2rq 2rs 2r3sh2m 2rdh r2dht 2r3dr 2rj 2rv 2rz
+r2r .rr2 2rr. 2rrj 2rrk 2rrm 2rrn 2rrt 2rrs
+1s .s2 2s. 2sh. 2sb 2sc 2sd 2sf 2sg 2sj 2sk 2sm 2sn sn2k 2sp 2ssh 2st st2r 3s2je2ll sk2ll s2ve.
+s2h .sh4 2shm 3sh2mj 2shj .sh2j sh2k 2shk. sh2n shn4d sh2p .sh2q 4sh3k2r 2shq 2sh3nj 3sh4pj 3sh4pr 2shr 2shs 2sht .sh2t 3sh2te.
+1t .t2 4t. 2tk t2j 2tm 2tn 2tp 2t3sh2m t2r 2tv
+t2h .th2 2th. 2thç 2ths 2thf 2thm 2tht
+u1ar. u1a u1e
+1v .v2 2v. 2vr v2j
+1x x2h .x2 2x.
+y1
+1z .zb2r .z2 2z. 2zhd 2zm 2zn 2zj 2zs 2zt 2zv z3sh2m z2h .zh2
+}
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-uk.tex b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-uk.tex
index 2e1c8ce852a..68b6f101e76 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-uk.tex
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/tex/hyph-uk.tex
@@ -11,8 +11,13 @@
% name: Maksym Polyakov
% contact: polyama (at) auburn.edu, mpoliak (at) i.com.ua
% licence:
-% name: LPPL
-% url: https://latex-project.org/lppl/
+% - This file is available under any of the following licences:
+% -
+% name: MIT
+% url: https://opensource.org/licenses/MIT
+% -
+% name: LPPL
+% url: https://latex-project.org/lppl/
% hyphenmins:
% typesetting:
% left: 2
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/txt/hyph-rm.pat.txt b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/txt/hyph-rm.pat.txt
index 51f5cf15783..3a560dee267 100644
--- a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/txt/hyph-rm.pat.txt
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/txt/hyph-rm.pat.txt
@@ -1,76 +1,8 @@
-2'2
-2’2
-2'.
-2’.
-2b'
-2b’
-2c'
-2c’
-2ch'.
-2ch’.
-2ch''
-2ch’’
-2d'
-2d’
-2f'
-2f’
-2g'
-2g’
-2h'
-2h’
-2j'
-2j’
-2k'
-2k’
-2l'.
-2l’.
-2l''
-2l’’
-2m'
-2m’
-2n'
-2n’
-2p'
-2p’
-2q'
-2q’
-2r'
-2r’
-4s'.
-4s’.
-4s''
-4s’’
-2sch'
-2sch’
-2schs'
-2schs’
-2sh'
-2sh’
-2st'
-2st’
-4tsch'
-4tsch’
-4tschs'
-4tschs’
-2t'.
-2t’.
-2t''
-2t’’
-2v'.
-2v’.
-2v''
-2v’’
-2w'
-2w’
-2x'
-2x’
-2z'.
-2z’.
-2z''
-2z’’
.a3p2n
.anti1
.anti3m2n
+an3ti4er
+an3ti4era
.bio1
.ca4p3s
.circu2m1
@@ -79,8 +11,11 @@
.co1o2p
.di2s3
.di2s4ch3oc
+di3s4e3gnar
.e2x1e
.ex2tra3
+ex4em3pel
+ex4aim3pel
.fran2k3
.free3
.li3p2sa
@@ -108,10 +43,10 @@
.su2b3r
.wa2g3n
.wel2t1
-a1ia
a1ie
-a1io
a1iu
+ame2gl1
+atg3na
a1uo
a1ya
2at.
@@ -131,13 +66,12 @@ o1iu
2bp
2bs
2bt
+bu3n4ga
2bv
-b2l
-b2r
2b.
1c
2cb
-2cc
+2c3c
2cd
2cf
2ck
@@ -148,13 +82,9 @@ b2r
2ct
2cz
2chh
-c2h
-2ch.
2chb
ch2r
2chn
-c2l
-c2r
2c.
.c2
1d
@@ -165,20 +95,19 @@ c2r
2dm
2dn
2dp
-d2r
-2ds
+4ds.
+d2sch
+4dsch.
2dt
2dv
2dw
2d.
.d2
+.esch3an.
1f
2fb
2fg
-2ff
2fn
-f2l
-f2r
2fs
2ft
2f.
@@ -187,12 +116,11 @@ f2r
2gd
2gf
2gg
-g2h
-g2l
+giu2v1na
+4gls.
2gm
-g2n
+4gns.
2gp
-g2r
2gs
2gt
2gv
@@ -213,6 +141,7 @@ h2l
2h.
1j
2j.
+4js.
1k
2kg
2kf
@@ -233,7 +162,6 @@ k2r
l2h
l2j
2lk
-2ll
2lm
2ln
2lp
@@ -250,7 +178,6 @@ l2j
2mc
2mf
2ml
-2mm
2mn
2mp
2mq
@@ -269,14 +196,18 @@ l2j
2nk
2nl
2nm
-2nn
2np
2nq
2nr
2ns
-2ns.
+4ns.
2n3sch
-n4sch.
+4ch.
+4gl.
+4gn.
+4tg.
+4sch.
+4tsch.
n2s3fer
2nt
2nv
@@ -284,14 +215,17 @@ n2s3fer
n2g3n
2nheit
2n.
+on3li4ne
+.oz3an3de
+.oz1i2
1p
2pd
+per3su3n4ga
+lùn4ga
p2h
-p2l
+4ph.
2pn
3p2ne
-2pp
-p2r
2ps
3p2sic
2pt
@@ -313,7 +247,6 @@ r2h
2rn
2rp
2rq
-2rr
2rs
2rt
r2t2s3
@@ -323,8 +256,6 @@ r2t2s3
2rz
2r.
1s2
-sch2
-2sch.
2schs.
2shm
2sh.
@@ -351,19 +282,15 @@ s4s3m
2tc
2td
2tf
-t2g
-2tg.
+4tgs.
t2h
t2l
2tm
2tn
2tp
-t2r
t2s
-3t2sch2
-4tsch.
4tschs.
-2tt
+4ts.
t2t3s
2tv
2tw
@@ -373,8 +300,6 @@ tz2s
2t.
1v
2vc
-v2l
-v2r
2vs.
2vv
2v.
@@ -390,6 +315,7 @@ wa2r
2xh
2xm
2xp
+4xs.
2xt
2xw
2x.
@@ -401,10 +327,58 @@ y1i
2zl
2zn
2zp
-2zr
2zt
2zs
2zv
-2zz
2z.
.z2
+2f3f
+2l3l
+2m3m
+2n3n
+2p3p
+2r3r
+2t3t
+2z3z
+s2c2h2
+3t4s4c4h2
+t2g
+g2n
+g2l
+c2h
+g2h
+b2l
+c2l
+f2l
+p2l
+b2r
+c2r
+d2r
+f2r
+g2r
+p2r
+t2r
+z2r
+s2c
+s2d
+s2p
+s2t
+s2t2g
+v2l
+v2r
+4sps.
+.pe4r3en3cun3ter.
+pro4s3ma
+.tran2s3f
+omi4s3du
+.giu3v4en3t4e4tg3na
+.cre4s3mar.
+4z3cha
+.vi4sch3na
+.mu4sch3na.
+.ou4vra.
+.pi4tsch3na
+.hi4gh5light.
+.po4d5cast.
+.we4l4l5ness.
+.ti4c4k4et.
diff --git a/Master/texmf-dist/tex/generic/hyph-utf8/patterns/txt/hyph-sq.pat.txt b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/txt/hyph-sq.pat.txt
new file mode 100644
index 00000000000..01bdbfccbd8
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/hyph-utf8/patterns/txt/hyph-sq.pat.txt
@@ -0,0 +1,304 @@
+2'2
+2’2
+.a1jo.
+a1a
+1b
+.b2
+2b.
+b2l
+2bsh
+1c
+.c2
+2c.
+2cj
+2cn
+2ct
+1ç
+.ç2
+2ç.
+2çs
+ç2k
+1d
+d2h
+.d2
+2d.
+d2j
+2dn
+d2r
+2drr
+2dt
+d2shm
+2dh.
+2dhj2dht
+2dhsh
+2dh2j
+2dht
+dh2r
+e1a
+e3ll
+e1u
+ë1a
+1f
+.f2
+2f.
+f2l
+f2r
+2fs
+2ft
+3f2sh
+2f2t.
+1g
+.g2
+2g.
+g2j
+2gj.
+2gjv
+2gl
+2gm
+2gr
+2gt
+1h
+.h2
+2h.
+2hd
+2hj
+2hm
+2hn
+2ht
+2hrr
+i1a
+i1e
+i1u
+.i2k3i
+.i2k3j
+1j2
+.j2
+2j.
+2j3c2
+2j3d
+2j3m
+2j3p
+2j3r
+2j3t
+2j3v
+2j3s
+2jf.
+j4tp
+2jt.
+j3sh2m
+1k
+.k2
+2k.
+k2j
+2kl
+2km
+2kth.
+k2r
+2kt
+2ks
+2ksh
+1l
+.l2
+2l.
+2lb
+2lç
+2lf
+2lj
+2lm
+2ln
+l3n2g
+2ls
+2lt
+l2l2
+4ll.
+2ll3s
+4ll3z
+2ll3k
+4ll3gj
+2ll3n
+2ll3t
+1m
+.m2
+2m.
+m2b
+mb2j
+mb2l
+mb2r
+m2j
+2m3n2d
+2mt
+2mr
+2m3sh2
+2m4sh.
+2m1v
+1n
+.n2
+2n.
+.ng2r
+2nc
+2nd
+n2dm
+n2dv
+n2d3sh
+2ng
+2nk
+2nsp
+2nsh
+n3sh2m
+2nt
+2nv
+2nx
+2nz
+n2j
+2njt
+2nj.
+2njv
+o1i
+1p
+.p2
+2p.
+p2j
+2pn
+2pt
+p2je.
+2ps
+p2r
+pa2s3her
+.pe2r3af
+.pë2r3af
+1q
+.q2
+2q.
+2qj
+2qk
+2qm
+2qn
+2qt
+q2v
+1r
+.r2
+2r.
+2rt
+2rb2
+2r2b3r
+2rc
+2rç
+2rd
+2rc2rd
+2rf
+2rg
+2rh
+.ri3n2d
+2rk
+2rl
+2rm
+2rn
+r2n3d2
+2rp
+2rq
+2rs
+2r3sh2m
+2rdh
+r2dht
+2r3dr
+2rj
+2rv
+2rz
+r2r
+.rr2
+2rr.
+2rrj
+2rrk
+2rrm
+2rrn
+2rrt
+2rrs
+1s
+.s2
+2s.
+2sh.
+2sb
+2sc
+2sd
+2sf
+2sg
+2sj
+2sk
+2sm
+2sn
+sn2k
+2sp
+2ssh
+2st
+st2r
+3s2je2ll
+sk2ll
+s2ve.
+s2h
+.sh4
+2shm
+3sh2mj
+2shj
+.sh2j
+sh2k
+2shk.
+sh2n
+shn4d
+sh2p
+.sh2q
+4sh3k2r
+2shq
+2sh3nj
+3sh4pj
+3sh4pr
+2shr
+2shs
+2sht
+.sh2t
+3sh2te.
+1t
+.t2
+4t.
+2tk
+t2j
+2tm
+2tn
+2tp
+2t3sh2m
+t2r
+2tv
+t2h
+.th2
+2th.
+2thç
+2ths
+2thf
+2thm
+2tht
+u1ar.
+u1a
+u1e
+1v
+.v2
+2v.
+2vr
+v2j
+1x
+x2h
+.x2
+2x.
+y1
+1z
+.zb2r
+.z2
+2z.
+2zhd
+2zm
+2zn
+2zj
+2zs
+2zt
+2zv
+z3sh2m
+z2h
+.zh2
diff --git a/Master/texmf-dist/tex/generic/iftex/iftex.sty b/Master/texmf-dist/tex/generic/iftex/iftex.sty
index 02b3d13c62d..600664bd3b8 100644
--- a/Master/texmf-dist/tex/generic/iftex/iftex.sty
+++ b/Master/texmf-dist/tex/generic/iftex/iftex.sty
@@ -30,7 +30,7 @@
% ProvidesPackage declaration in LaTeX
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname ProvidesPackage\endcsname\relax\else
- \ProvidesPackage{iftex}[2022/02/03 v1.0f TeX engine tests]
+ \ProvidesPackage{iftex}[2024/12/12 v1.0g TeX engine tests]
\fi
% Save @ catcode, to restore at end, not needed in LaTeX.
@@ -80,6 +80,7 @@
\IFTEX@protected\def\RequireXeTeX{\IFTEX@Require\ifxetex{XeTeX}\fi}
\IFTEX@protected\def\RequireLuaTeX{\IFTEX@Require\ifluatex{LuaTeX}\fi}
\IFTEX@protected\def\RequireLuaHBTeX{\IFTEX@Require\ifluahbtex{LuaHBTeX}\fi}
+\IFTEX@protected\def\RequireLuaMetaTeX{\IFTEX@Require\ifluahbtex{LuaMetaTeX}\fi}
\IFTEX@protected\def\RequirepTeX{\IFTEX@Require\ifptex{pTeX}\fi}
\IFTEX@protected\def\RequireupTeX{\IFTEX@Require\ifuptex{upTeX}\fi}
\IFTEX@protected\def\RequirepTeXng{\IFTEX@Require\ifptexng{pTeX-ng}\fi}
@@ -92,6 +93,8 @@
\IFTEX@protected\def\RequireTexpadTeX{\IFTEX@Require\iftexpadtex{TexpadTeX}\fi}
% HiTeX/HINT
\IFTEX@protected\def\RequireHINT{\IFTEX@Require\ifhint{HINT}\fi}
+% Prote
+\IFTEX@protected\def\RequireProte{\IFTEX@Require\ifprote{Prote}\fi}
% As a matter of policy over-write any existing \if*tex macro and set
% by the tests here.
@@ -130,7 +133,7 @@
\IFTEX@let{XeTeX}{xetex}
-% luatex (including luahbtex)
+% luatex (including luahbtex and luametatex)
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname directlua\endcsname\relax
\IFTEX@let{luatex}{false}
@@ -157,7 +160,21 @@
\IFTEX@let{LuaHBTeX}{luahbtex}
-% ptex (including all variants)
+% luametatex
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname directlua\endcsname\relax
+ \IFTEX@let{luametatex}{false}
+\else
+ \ifnum\luatexversion<200
+ \IFTEX@let{luametatex}{false}
+ \else
+ \IFTEX@let{luametatex}{true}
+ \fi
+\fi
+\IFTEX@let{LuaMetaTeX}{luametatex}
+
+
+% ptex (including all variants) (note that the ptex command uses uptex in current releases)
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname kanjiskip\endcsname\relax
\IFTEX@let{ptex}{false}
@@ -237,6 +254,15 @@
\fi
\IFTEX@let{HINT}{hint}
+% Prote
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname Proteversion\endcsname\relax
+ \IFTEX@let{prote}{false}
+\else
+ \IFTEX@let{prote}{true}
+\fi
+\IFTEX@let{Prote}{prote}
+
% Output mode
% declare as if with \newif
diff --git a/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty b/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty
index 61d4f2d20c2..d58aa9afa5b 100644
--- a/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty
+++ b/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty
@@ -45,7 +45,7 @@
\RequirePackage{expl3}
\ProvidesExplPackage
{lt3luabridge}%
- {2024-07-03}%
+ {2024-12-16}%
{2.2.0}%
{An expl3 package that allows you to execute Lua code in LuaTeX or any other
TeX engine that exposes the shell}
diff --git a/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex b/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex
index 26d3dc6a0b9..76ffbe49fcd 100644
--- a/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex
+++ b/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex
@@ -42,7 +42,7 @@
%%
%% The names of the source files used are shown above.
%%
-\ifx\ExplSyntaxOn\undefined
+\expandafter\ifx\csname ExplSyntaxOn\endcsname\relax
\input expl3-generic\relax
\fi
\ExplSyntaxOn
@@ -351,11 +351,14 @@
end~
\exp_not:V \l_tmpa_tl
}
- \tl_set:Nf
+ \tl_set:No
#1
{
- \lua_now:V
- \l_tmpa_tl
+ \directlua
+ {
+ \tl_use:N
+ \l_tmpa_tl
+ }
}
}
\cs_generate_variant:Nn
diff --git a/Master/texmf-dist/tex/generic/markdown/markdown.tex b/Master/texmf-dist/tex/generic/markdown/markdown.tex
index 5d5c9faebb6..97cd6e2c800 100644
--- a/Master/texmf-dist/tex/generic/markdown/markdown.tex
+++ b/Master/texmf-dist/tex/generic/markdown/markdown.tex
@@ -6,7 +6,7 @@
%%
%% markdown.dtx (with options: `tex')
%%
-%% Copyright (C) 2016-2024 Vít Starý Novotný, Andrej Genčur
+%% Copyright (C) 2016-2025 Vít Starý Novotný, Andrej Genčur
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -42,7 +42,7 @@
%%
%% The names of the source files used are shown above.
%%
-\ifx\ExplSyntaxOn\undefined
+\expandafter\ifx\csname ExplSyntaxOn\endcsname\relax
\input expl3-generic
\fi
\ExplSyntaxOn
@@ -279,7 +279,7 @@
\l_tmpa_tl
\tl_set:Nx
#2
- { \the \cs:w \l_tmpa_tl \cs_end: }
+ { \the \cs:w \l_tmpa_tl \cs_end: } % noqa: W200
}
{
\__markdown_option_tl_to_csname:nN
@@ -356,6 +356,10 @@
{ boolean }
{ true }
\__markdown_add_lua_option:nnn
+ { experimental }
+ { boolean }
+ { false }
+\__markdown_add_lua_option:nnn
{ singletonCache }
{ boolean }
{ true }
@@ -615,12 +619,20 @@
{ boolean }
{ true }
\ExplSyntaxOff
-\def\markdownLastModified{2024-08-30}%
-\def\markdownVersion{3.7.0-0-g98dece19}%
+\def\markdownLastModified{2025-01-27}%
+\def\markdownVersion{3.10.0-0-g626df6ad}%
\let\markdownBegin\relax
\let\markdownEnd\relax
+\let\yamlBegin\relax
+\def\yamlEnd{\markdownEnd\endgroup}
\let\markinline\relax
\let\markdownInput\relax
+\def\yamlInput#1{%
+ \begingroup
+ \yamlSetup{jekyllData, expectJekyllData, ensureJekyllData}%
+ \markdownInput{#1}%
+ \endgroup
+}%
\let\markdownEscape\relax
\ExplSyntaxOn
\tl_const:Nn \c__markdown_option_layer_plain_tex_tl { plain_tex }
@@ -659,6 +671,9 @@
\cs_gset_eq:NN
\markdownSetup
\__markdown_setup:n
+\cs_gset_eq:NN
+ \yamlSetup
+ \markdownSetup
\prg_new_conditional:Nnn
\__markdown_if_option:n
{ TF, T, F }
@@ -692,7 +707,9 @@
Option~#1~has~type~#2,~
but~a~boolean~was~expected.
}
-\let\markdownIfOption=\__markdown_if_option:nTF
+\let
+ \markdownIfOption
+ \__markdown_if_option:nTF
\__markdown_add_plain_tex_option:nnn
{ frozenCache }
{ boolean }
@@ -791,12 +808,16 @@
)
}
{
+ \group_begin:
+ \cctab_select:N
+ \c_str_cctab
\luabridge_tl_set:Nn
\l_tmpa_tl
{ print(os.getenv("TEXMF_OUTPUT_DIRECTORY") or ".") }
\tl_gset:NV
\markdownOptionOutputDir
\l_tmpa_tl
+ \group_end:
}
{
\tl_gset:Nn
@@ -942,7 +963,7 @@
\l_tmpa_tl
\clist_set:NV
\l_tmpa_clist
- { \l_tmpa_tl, { ##1 } }
+ { \l_tmpa_tl , { ##1 } }
\__markdown_set_option_value:nV
{ #2 }
\l_tmpa_clist
@@ -965,7 +986,7 @@
\prg_generate_conditional_variant:Nnn
\str_if_eq:nn
{ en }
- { F }
+ { p, F }
\msg_new:nnn
{ markdown }
{ malformed-name-for-clist-option }
@@ -999,14 +1020,22 @@
},
}
\seq_new:N
- \g__markdown_themes_seq
+ \g__markdown_theme_names_seq
+\seq_new:N
+ \g__markdown_theme_versions_seq
\tl_new:N
\g__markdown_current_theme_tl
\tl_gset:Nn
\g__markdown_current_theme_tl
{ }
\seq_gput_right:NV
- \g__markdown_themes_seq
+ \g__markdown_theme_names_seq
+ \g__markdown_current_theme_tl
+\cs_new:Npn
+ \markdownThemeVersion
+ { }
+\seq_gput_right:NV
+ \g__markdown_theme_versions_seq
\g__markdown_current_theme_tl
\cs_new:Nn
\__markdown_set_theme:n
@@ -1029,31 +1058,85 @@
{ underscores-in-theme-name }
{ #1 }
}
- \str_set:Nn
- \l_tmpa_str
+ \str_if_in:nnTF
{ #1 }
+ { @ }
+ {
+ \regex_extract_once:nnN
+ { (.*) @ (.*) }
+ { #1 }
+ \l_tmpa_seq
+ \seq_gpop_left:NN
+ \l_tmpa_seq
+ \l_tmpa_tl
+ \seq_gpop_left:NN
+ \l_tmpa_seq
+ \l_tmpa_tl
+ \tl_gset:NV
+ \g__markdown_current_theme_tl
+ \l_tmpa_tl
+ \seq_gpop_left:NN
+ \l_tmpa_seq
+ \l_tmpa_tl
+ \cs_gset:Npe
+ \markdownThemeVersion
+ {
+ \tl_use:N
+ \l_tmpa_tl
+ }
+ }
+ {
+ \tl_gset:Nn
+ \g__markdown_current_theme_tl
+ { #1 }
+ \cs_gset:Npn
+ \markdownThemeVersion
+ { latest }
+ }
+ \str_set:NV
+ \l_tmpa_str
+ \g__markdown_current_theme_tl
\str_replace_all:Nnn
\l_tmpa_str
{ / }
{ _ }
- \tl_gset:Nn
+ \tl_set:NV
+ \l_tmpa_tl
+ \g__markdown_current_theme_tl
+ \tl_put_right:Nn
\g__markdown_current_theme_tl
- { #1 / }
+ { / }
\seq_gput_right:NV
- \g__markdown_themes_seq
+ \g__markdown_theme_names_seq
\g__markdown_current_theme_tl
- \__markdown_load_theme:nV
- { #1 }
+ \seq_gput_right:NV
+ \g__markdown_theme_versions_seq
+ \markdownThemeVersion
+ \__markdown_load_theme:VeV
+ \l_tmpa_tl
+ { \markdownThemeVersion }
\l_tmpa_str
\seq_gpop_right:NN
- \g__markdown_themes_seq
+ \g__markdown_theme_names_seq
\l_tmpa_tl
\seq_get_right:NN
- \g__markdown_themes_seq
+ \g__markdown_theme_names_seq
\l_tmpa_tl
\tl_gset:NV
\g__markdown_current_theme_tl
\l_tmpa_tl
+ \seq_gpop_right:NN
+ \g__markdown_theme_versions_seq
+ \l_tmpa_tl
+ \seq_get_right:NN
+ \g__markdown_theme_versions_seq
+ \l_tmpa_tl
+ \cs_gset:Npe
+ \markdownThemeVersion
+ {
+ \tl_use:N
+ \l_tmpa_tl
+ }
}
\msg_new:nnnn
{ markdown }
@@ -1068,6 +1151,11 @@
\cs_generate_variant:Nn
\tl_replace_all:Nnn
{ NnV }
+\cs_generate_variant:Nn
+ \cs_gset:Npn
+ { Npe }
+\prop_new:N
+ \g__markdown_plain_tex_built_in_themes_prop
\prop_new:N
\g__markdown_snippets_prop
\cs_new:Nn
@@ -1116,20 +1204,21 @@
{ markdown }
{ redefined-snippet }
{ Redefined~snippet~#1 }
+\tl_new:N
+ \l__markdown_current_snippet_tl
\prg_new_conditional:Nnn
\__markdown_if_snippet_exists:n
{ TF, T, F }
{
\tl_set:NV
- \l_tmpa_tl
+ \l__markdown_current_snippet_tl
\g__markdown_current_theme_tl
\tl_put_right:Nn
- \l_tmpa_tl
+ \l__markdown_current_snippet_tl
{ #1 }
- \prop_get:NVNTF
+ \prop_if_in:NVTF
\g__markdown_snippets_prop
- \l_tmpa_tl
- \l_tmpb_tl
+ \l__markdown_current_snippet_tl
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -1231,13 +1320,13 @@
\cs_generate_variant:Nn
\__markdown_setup_snippet:nn
{ Vx }
-\ExplSyntaxOn
\seq_new:N \g__markdown_renderers_seq
\prop_new:N \g__markdown_renderer_arities_prop
-\ExplSyntaxOff
-\def\markdownRendererAttributeIdentifier{%
- \markdownRendererAttributeIdentifierPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererAttributeIdentifier
+ {
+ \markdownRendererAttributeIdentifierPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ attributeIdentifier }
@@ -1245,10 +1334,11 @@
\g__markdown_renderer_arities_prop
{ attributeIdentifier }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererAttributeClassName{%
- \markdownRendererAttributeClassNamePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererAttributeClassName
+ {
+ \markdownRendererAttributeClassNamePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ attributeClassName }
@@ -1256,10 +1346,11 @@
\g__markdown_renderer_arities_prop
{ attributeClassName }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererAttributeKeyValue{%
- \markdownRendererAttributeKeyValuePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererAttributeKeyValue
+ {
+ \markdownRendererAttributeKeyValuePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ attributeKeyValue }
@@ -1267,10 +1358,11 @@
\g__markdown_renderer_arities_prop
{ attributeKeyValue }
{ 2 }
-\ExplSyntaxOff
-\def\markdownRendererBlockQuoteBegin{%
- \markdownRendererBlockQuoteBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererBlockQuoteBegin
+ {
+ \markdownRendererBlockQuoteBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ blockQuoteBegin }
@@ -1278,10 +1370,11 @@
\g__markdown_renderer_arities_prop
{ blockQuoteBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererBlockQuoteEnd{%
- \markdownRendererBlockQuoteEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererBlockQuoteEnd
+ {
+ \markdownRendererBlockQuoteEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ blockQuoteEnd }
@@ -1289,10 +1382,11 @@
\g__markdown_renderer_arities_prop
{ blockQuoteEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererBracketedSpanAttributeContextBegin{%
- \markdownRendererBracketedSpanAttributeContextBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererBracketedSpanAttributeContextBegin
+ {
+ \markdownRendererBracketedSpanAttributeContextBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ bracketedSpanAttributeContextBegin }
@@ -1300,10 +1394,11 @@
\g__markdown_renderer_arities_prop
{ bracketedSpanAttributeContextBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererBracketedSpanAttributeContextEnd{%
- \markdownRendererBracketedSpanAttributeContextEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererBracketedSpanAttributeContextEnd
+ {
+ \markdownRendererBracketedSpanAttributeContextEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ bracketedSpanAttributeContextEnd }
@@ -1311,10 +1406,11 @@
\g__markdown_renderer_arities_prop
{ bracketedSpanAttributeContextEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererUlBegin{%
- \markdownRendererUlBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererUlBegin
+ {
+ \markdownRendererUlBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ ulBegin }
@@ -1322,10 +1418,11 @@
\g__markdown_renderer_arities_prop
{ ulBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererUlBeginTight{%
- \markdownRendererUlBeginTightPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererUlBeginTight
+ {
+ \markdownRendererUlBeginTightPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ ulBeginTight }
@@ -1333,10 +1430,11 @@
\g__markdown_renderer_arities_prop
{ ulBeginTight }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererUlItem{%
- \markdownRendererUlItemPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererUlItem
+ {
+ \markdownRendererUlItemPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ ulItem }
@@ -1344,10 +1442,11 @@
\g__markdown_renderer_arities_prop
{ ulItem }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererUlItemEnd{%
- \markdownRendererUlItemEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererUlItemEnd
+ {
+ \markdownRendererUlItemEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ ulItemEnd }
@@ -1355,10 +1454,11 @@
\g__markdown_renderer_arities_prop
{ ulItemEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererUlEnd{%
- \markdownRendererUlEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererUlEnd
+ {
+ \markdownRendererUlEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ ulEnd }
@@ -1366,10 +1466,11 @@
\g__markdown_renderer_arities_prop
{ ulEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererUlEndTight{%
- \markdownRendererUlEndTightPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererUlEndTight
+ {
+ \markdownRendererUlEndTightPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ ulEndTight }
@@ -1377,10 +1478,11 @@
\g__markdown_renderer_arities_prop
{ ulEndTight }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererCite{%
- \markdownRendererCitePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererCite
+ {
+ \markdownRendererCitePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ cite }
@@ -1388,10 +1490,11 @@
\g__markdown_renderer_arities_prop
{ cite }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererTextCite{%
- \markdownRendererTextCitePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererTextCite
+ {
+ \markdownRendererTextCitePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ textCite }
@@ -1399,10 +1502,11 @@
\g__markdown_renderer_arities_prop
{ textCite }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererInputVerbatim{%
- \markdownRendererInputVerbatimPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInputVerbatim
+ {
+ \markdownRendererInputVerbatimPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ inputVerbatim }
@@ -1410,10 +1514,11 @@
\g__markdown_renderer_arities_prop
{ inputVerbatim }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererInputFencedCode{%
- \markdownRendererInputFencedCodePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInputFencedCode
+ {
+ \markdownRendererInputFencedCodePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ inputFencedCode }
@@ -1421,10 +1526,11 @@
\g__markdown_renderer_arities_prop
{ inputFencedCode }
{ 3 }
-\ExplSyntaxOff
-\def\markdownRendererCodeSpan{%
- \markdownRendererCodeSpanPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererCodeSpan
+ {
+ \markdownRendererCodeSpanPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ codeSpan }
@@ -1432,10 +1538,11 @@
\g__markdown_renderer_arities_prop
{ codeSpan }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererCodeSpanAttributeContextBegin{%
- \markdownRendererCodeSpanAttributeContextBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererCodeSpanAttributeContextBegin
+ {
+ \markdownRendererCodeSpanAttributeContextBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ codeSpanAttributeContextBegin }
@@ -1443,10 +1550,11 @@
\g__markdown_renderer_arities_prop
{ codeSpanAttributeContextBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererCodeSpanAttributeContextEnd{%
- \markdownRendererCodeSpanAttributeContextEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererCodeSpanAttributeContextEnd
+ {
+ \markdownRendererCodeSpanAttributeContextEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ codeSpanAttributeContextEnd }
@@ -1454,10 +1562,11 @@
\g__markdown_renderer_arities_prop
{ codeSpanAttributeContextEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererContentBlock{%
- \markdownRendererContentBlockPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererContentBlock
+ {
+ \markdownRendererContentBlockPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ contentBlock }
@@ -1465,10 +1574,11 @@
\g__markdown_renderer_arities_prop
{ contentBlock }
{ 4 }
-\ExplSyntaxOff
-\def\markdownRendererContentBlockOnlineImage{%
- \markdownRendererContentBlockOnlineImagePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererContentBlockOnlineImage
+ {
+ \markdownRendererContentBlockOnlineImagePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ contentBlockOnlineImage }
@@ -1476,10 +1586,11 @@
\g__markdown_renderer_arities_prop
{ contentBlockOnlineImage }
{ 4 }
-\ExplSyntaxOff
-\def\markdownRendererContentBlockCode{%
- \markdownRendererContentBlockCodePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererContentBlockCode
+ {
+ \markdownRendererContentBlockCodePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ contentBlockCode }
@@ -1487,10 +1598,11 @@
\g__markdown_renderer_arities_prop
{ contentBlockCode }
{ 5 }
-\ExplSyntaxOff
-\def\markdownRendererDlBegin{%
- \markdownRendererDlBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDlBegin
+ {
+ \markdownRendererDlBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ dlBegin }
@@ -1498,10 +1610,11 @@
\g__markdown_renderer_arities_prop
{ dlBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererDlBeginTight{%
- \markdownRendererDlBeginTightPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDlBeginTight
+ {
+ \markdownRendererDlBeginTightPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ dlBeginTight }
@@ -1509,10 +1622,11 @@
\g__markdown_renderer_arities_prop
{ dlBeginTight }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererDlItem{%
- \markdownRendererDlItemPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDlItem
+ {
+ \markdownRendererDlItemPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ dlItem }
@@ -1520,10 +1634,11 @@
\g__markdown_renderer_arities_prop
{ dlItem }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererDlItemEnd{%
- \markdownRendererDlItemEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDlItemEnd
+ {
+ \markdownRendererDlItemEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ dlItemEnd }
@@ -1531,10 +1646,11 @@
\g__markdown_renderer_arities_prop
{ dlItemEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererDlDefinitionBegin{%
- \markdownRendererDlDefinitionBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDlDefinitionBegin
+ {
+ \markdownRendererDlDefinitionBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ dlDefinitionBegin }
@@ -1542,10 +1658,11 @@
\g__markdown_renderer_arities_prop
{ dlDefinitionBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererDlDefinitionEnd{%
- \markdownRendererDlDefinitionEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDlDefinitionEnd
+ {
+ \markdownRendererDlDefinitionEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ dlDefinitionEnd }
@@ -1553,10 +1670,11 @@
\g__markdown_renderer_arities_prop
{ dlDefinitionEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererDlEnd{%
- \markdownRendererDlEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDlEnd
+ {
+ \markdownRendererDlEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ dlEnd }
@@ -1564,10 +1682,11 @@
\g__markdown_renderer_arities_prop
{ dlEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererDlEndTight{%
- \markdownRendererDlEndTightPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDlEndTight
+ {
+ \markdownRendererDlEndTightPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ dlEndTight }
@@ -1575,10 +1694,11 @@
\g__markdown_renderer_arities_prop
{ dlEndTight }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererEllipsis{%
- \markdownRendererEllipsisPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererEllipsis
+ {
+ \markdownRendererEllipsisPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ ellipsis }
@@ -1586,10 +1706,11 @@
\g__markdown_renderer_arities_prop
{ ellipsis }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererEmphasis{%
- \markdownRendererEmphasisPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererEmphasis
+ {
+ \markdownRendererEmphasisPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ emphasis }
@@ -1597,10 +1718,11 @@
\g__markdown_renderer_arities_prop
{ emphasis }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererStrongEmphasis{%
- \markdownRendererStrongEmphasisPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererStrongEmphasis
+ {
+ \markdownRendererStrongEmphasisPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ strongEmphasis }
@@ -1608,10 +1730,11 @@
\g__markdown_renderer_arities_prop
{ strongEmphasis }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererFencedCodeAttributeContextBegin{%
- \markdownRendererFencedCodeAttributeContextBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFencedCodeAttributeContextBegin
+ {
+ \markdownRendererFencedCodeAttributeContextBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ fencedCodeAttributeContextBegin }
@@ -1619,10 +1742,11 @@
\g__markdown_renderer_arities_prop
{ fencedCodeAttributeContextBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererFencedCodeAttributeContextEnd{%
- \markdownRendererFencedCodeAttributeContextEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFencedCodeAttributeContextEnd
+ {
+ \markdownRendererFencedCodeAttributeContextEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ fencedCodeAttributeContextEnd }
@@ -1630,10 +1754,11 @@
\g__markdown_renderer_arities_prop
{ fencedCodeAttributeContextEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererFencedDivAttributeContextBegin{%
- \markdownRendererFencedDivAttributeContextBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFencedDivAttributeContextBegin
+ {
+ \markdownRendererFencedDivAttributeContextBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ fencedDivAttributeContextBegin }
@@ -1641,10 +1766,11 @@
\g__markdown_renderer_arities_prop
{ fencedDivAttributeContextBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererFencedDivAttributeContextEnd{%
- \markdownRendererFencedDivAttributeContextEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFencedDivAttributeContextEnd
+ {
+ \markdownRendererFencedDivAttributeContextEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ fencedDivAttributeContextEnd }
@@ -1652,10 +1778,11 @@
\g__markdown_renderer_arities_prop
{ fencedDivAttributeContextEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererHeaderAttributeContextBegin{%
- \markdownRendererHeaderAttributeContextBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHeaderAttributeContextBegin
+ {
+ \markdownRendererHeaderAttributeContextBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ headerAttributeContextBegin }
@@ -1663,10 +1790,11 @@
\g__markdown_renderer_arities_prop
{ headerAttributeContextBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererHeaderAttributeContextEnd{%
- \markdownRendererHeaderAttributeContextEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHeaderAttributeContextEnd
+ {
+ \markdownRendererHeaderAttributeContextEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ headerAttributeContextEnd }
@@ -1674,10 +1802,11 @@
\g__markdown_renderer_arities_prop
{ headerAttributeContextEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererHeadingOne{%
- \markdownRendererHeadingOnePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHeadingOne
+ {
+ \markdownRendererHeadingOnePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ headingOne }
@@ -1685,10 +1814,11 @@
\g__markdown_renderer_arities_prop
{ headingOne }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererHeadingTwo{%
- \markdownRendererHeadingTwoPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHeadingTwo
+ {
+ \markdownRendererHeadingTwoPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ headingTwo }
@@ -1696,10 +1826,11 @@
\g__markdown_renderer_arities_prop
{ headingTwo }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererHeadingThree{%
- \markdownRendererHeadingThreePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHeadingThree
+ {
+ \markdownRendererHeadingThreePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ headingThree }
@@ -1707,10 +1838,11 @@
\g__markdown_renderer_arities_prop
{ headingThree }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererHeadingFour{%
- \markdownRendererHeadingFourPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHeadingFour
+ {
+ \markdownRendererHeadingFourPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ headingFour }
@@ -1718,10 +1850,11 @@
\g__markdown_renderer_arities_prop
{ headingFour }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererHeadingFive{%
- \markdownRendererHeadingFivePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHeadingFive
+ {
+ \markdownRendererHeadingFivePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ headingFive }
@@ -1729,10 +1862,11 @@
\g__markdown_renderer_arities_prop
{ headingFive }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererHeadingSix{%
- \markdownRendererHeadingSixPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHeadingSix
+ {
+ \markdownRendererHeadingSixPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ headingSix }
@@ -1740,10 +1874,11 @@
\g__markdown_renderer_arities_prop
{ headingSix }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererInlineHtmlComment{%
- \markdownRendererInlineHtmlCommentPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInlineHtmlComment
+ {
+ \markdownRendererInlineHtmlCommentPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ inlineHtmlComment }
@@ -1751,10 +1886,11 @@
\g__markdown_renderer_arities_prop
{ inlineHtmlComment }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererInlineHtmlTag{%
- \markdownRendererInlineHtmlTagPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInlineHtmlTag
+ {
+ \markdownRendererInlineHtmlTagPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ inlineHtmlTag }
@@ -1762,10 +1898,11 @@
\g__markdown_renderer_arities_prop
{ inlineHtmlTag }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererInputBlockHtmlElement{%
- \markdownRendererInputBlockHtmlElementPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInputBlockHtmlElement
+ {
+ \markdownRendererInputBlockHtmlElementPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ inputBlockHtmlElement }
@@ -1773,10 +1910,11 @@
\g__markdown_renderer_arities_prop
{ inputBlockHtmlElement }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererImage{%
- \markdownRendererImagePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererImage
+ {
+ \markdownRendererImagePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ image }
@@ -1784,10 +1922,11 @@
\g__markdown_renderer_arities_prop
{ image }
{ 4 }
-\ExplSyntaxOff
-\def\markdownRendererImageAttributeContextBegin{%
- \markdownRendererImageAttributeContextBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererImageAttributeContextBegin
+ {
+ \markdownRendererImageAttributeContextBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ imageAttributeContextBegin }
@@ -1795,10 +1934,11 @@
\g__markdown_renderer_arities_prop
{ imageAttributeContextBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererImageAttributeContextEnd{%
- \markdownRendererImageAttributeContextEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererImageAttributeContextEnd
+ {
+ \markdownRendererImageAttributeContextEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ imageAttributeContextEnd }
@@ -1806,10 +1946,11 @@
\g__markdown_renderer_arities_prop
{ imageAttributeContextEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererInterblockSeparator{%
- \markdownRendererInterblockSeparatorPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInterblockSeparator
+ {
+ \markdownRendererInterblockSeparatorPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ interblockSeparator }
@@ -1817,10 +1958,11 @@
\g__markdown_renderer_arities_prop
{ interblockSeparator }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererParagraphSeparator{%
- \markdownRendererParagraphSeparatorPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererParagraphSeparator
+ {
+ \markdownRendererParagraphSeparatorPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ paragraphSeparator }
@@ -1828,10 +1970,11 @@
\g__markdown_renderer_arities_prop
{ paragraphSeparator }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererLineBlockBegin{%
- \markdownRendererLineBlockBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererLineBlockBegin
+ {
+ \markdownRendererLineBlockBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ lineBlockBegin }
@@ -1839,10 +1982,11 @@
\g__markdown_renderer_arities_prop
{ lineBlockBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererLineBlockEnd{%
- \markdownRendererLineBlockEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererLineBlockEnd
+ {
+ \markdownRendererLineBlockEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ lineBlockEnd }
@@ -1850,10 +1994,11 @@
\g__markdown_renderer_arities_prop
{ lineBlockEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererSoftLineBreak{%
- \markdownRendererSoftLineBreakPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererSoftLineBreak
+ {
+ \markdownRendererSoftLineBreakPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ softLineBreak }
@@ -1861,10 +2006,11 @@
\g__markdown_renderer_arities_prop
{ softLineBreak }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererHardLineBreak{%
- \markdownRendererHardLineBreakPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHardLineBreak
+ {
+ \markdownRendererHardLineBreakPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ hardLineBreak }
@@ -1872,10 +2018,11 @@
\g__markdown_renderer_arities_prop
{ hardLineBreak }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererLink{%
- \markdownRendererLinkPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererLink
+ {
+ \markdownRendererLinkPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ link }
@@ -1883,10 +2030,11 @@
\g__markdown_renderer_arities_prop
{ link }
{ 4 }
-\ExplSyntaxOff
-\def\markdownRendererLinkAttributeContextBegin{%
- \markdownRendererLinkAttributeContextBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererLinkAttributeContextBegin
+ {
+ \markdownRendererLinkAttributeContextBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ linkAttributeContextBegin }
@@ -1894,10 +2042,11 @@
\g__markdown_renderer_arities_prop
{ linkAttributeContextBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererLinkAttributeContextEnd{%
- \markdownRendererLinkAttributeContextEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererLinkAttributeContextEnd
+ {
+ \markdownRendererLinkAttributeContextEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ linkAttributeContextEnd }
@@ -1905,10 +2054,11 @@
\g__markdown_renderer_arities_prop
{ linkAttributeContextEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererMark{%
- \markdownRendererMarkPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererMark
+ {
+ \markdownRendererMarkPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ mark }
@@ -1916,10 +2066,11 @@
\g__markdown_renderer_arities_prop
{ mark }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererDocumentBegin{%
- \markdownRendererDocumentBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDocumentBegin
+ {
+ \markdownRendererDocumentBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ documentBegin }
@@ -1927,10 +2078,11 @@
\g__markdown_renderer_arities_prop
{ documentBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererDocumentEnd{%
- \markdownRendererDocumentEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDocumentEnd
+ {
+ \markdownRendererDocumentEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ documentEnd }
@@ -1938,10 +2090,11 @@
\g__markdown_renderer_arities_prop
{ documentEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererNbsp{%
- \markdownRendererNbspPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererNbsp
+ {
+ \markdownRendererNbspPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ nbsp }
@@ -1960,10 +2113,11 @@
\g__markdown_renderer_arities_prop
{ note }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererOlBegin{%
- \markdownRendererOlBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererOlBegin
+ {
+ \markdownRendererOlBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ olBegin }
@@ -1971,10 +2125,11 @@
\g__markdown_renderer_arities_prop
{ olBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererOlBeginTight{%
- \markdownRendererOlBeginTightPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererOlBeginTight
+ {
+ \markdownRendererOlBeginTightPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ olBeginTight }
@@ -1982,10 +2137,11 @@
\g__markdown_renderer_arities_prop
{ olBeginTight }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererFancyOlBegin{%
- \markdownRendererFancyOlBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFancyOlBegin
+ {
+ \markdownRendererFancyOlBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ fancyOlBegin }
@@ -1993,10 +2149,11 @@
\g__markdown_renderer_arities_prop
{ fancyOlBegin }
{ 2 }
-\ExplSyntaxOff
-\def\markdownRendererFancyOlBeginTight{%
- \markdownRendererFancyOlBeginTightPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFancyOlBeginTight
+ {
+ \markdownRendererFancyOlBeginTightPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ fancyOlBeginTight }
@@ -2004,10 +2161,11 @@
\g__markdown_renderer_arities_prop
{ fancyOlBeginTight }
{ 2 }
-\ExplSyntaxOff
-\def\markdownRendererOlItem{%
- \markdownRendererOlItemPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererOlItem
+ {
+ \markdownRendererOlItemPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ olItem }
@@ -2015,10 +2173,11 @@
\g__markdown_renderer_arities_prop
{ olItem }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererOlItemEnd{%
- \markdownRendererOlItemEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererOlItemEnd
+ {
+ \markdownRendererOlItemEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ olItemEnd }
@@ -2026,10 +2185,11 @@
\g__markdown_renderer_arities_prop
{ olItemEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererOlItemWithNumber{%
- \markdownRendererOlItemWithNumberPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererOlItemWithNumber
+ {
+ \markdownRendererOlItemWithNumberPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ olItemWithNumber }
@@ -2037,10 +2197,11 @@
\g__markdown_renderer_arities_prop
{ olItemWithNumber }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererFancyOlItem{%
- \markdownRendererFancyOlItemPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFancyOlItem
+ {
+ \markdownRendererFancyOlItemPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ fancyOlItem }
@@ -2048,10 +2209,11 @@
\g__markdown_renderer_arities_prop
{ fancyOlItem }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererFancyOlItemEnd{%
- \markdownRendererFancyOlItemEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFancyOlItemEnd
+ {
+ \markdownRendererFancyOlItemEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ fancyOlItemEnd }
@@ -2059,10 +2221,11 @@
\g__markdown_renderer_arities_prop
{ fancyOlItemEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererFancyOlItemWithNumber{%
- \markdownRendererFancyOlItemWithNumberPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFancyOlItemWithNumber
+ {
+ \markdownRendererFancyOlItemWithNumberPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ fancyOlItemWithNumber }
@@ -2070,10 +2233,11 @@
\g__markdown_renderer_arities_prop
{ fancyOlItemWithNumber }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererOlEnd{%
- \markdownRendererOlEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererOlEnd
+ {
+ \markdownRendererOlEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ olEnd }
@@ -2081,10 +2245,11 @@
\g__markdown_renderer_arities_prop
{ olEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererOlEndTight{%
- \markdownRendererOlEndTightPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererOlEndTight
+ {
+ \markdownRendererOlEndTightPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ olEndTight }
@@ -2092,10 +2257,11 @@
\g__markdown_renderer_arities_prop
{ olEndTight }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererFancyOlEnd{%
- \markdownRendererFancyOlEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFancyOlEnd
+ {
+ \markdownRendererFancyOlEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ fancyOlEnd }
@@ -2103,10 +2269,11 @@
\g__markdown_renderer_arities_prop
{ fancyOlEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererFancyOlEndTight{%
- \markdownRendererFancyOlEndTightPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererFancyOlEndTight
+ {
+ \markdownRendererFancyOlEndTightPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ fancyOlEndTight }
@@ -2114,10 +2281,11 @@
\g__markdown_renderer_arities_prop
{ fancyOlEndTight }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererInputRawInline{%
- \markdownRendererInputRawInlinePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInputRawInline
+ {
+ \markdownRendererInputRawInlinePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ inputRawInline }
@@ -2125,10 +2293,11 @@
\g__markdown_renderer_arities_prop
{ inputRawInline }
{ 2 }
-\ExplSyntaxOff
-\def\markdownRendererInputRawBlock{%
- \markdownRendererInputRawBlockPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInputRawBlock
+ {
+ \markdownRendererInputRawBlockPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ inputRawBlock }
@@ -2136,10 +2305,11 @@
\g__markdown_renderer_arities_prop
{ inputRawBlock }
{ 2 }
-\ExplSyntaxOff
-\def\markdownRendererSectionBegin{%
- \markdownRendererSectionBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererSectionBegin
+ {
+ \markdownRendererSectionBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ sectionBegin }
@@ -2147,10 +2317,11 @@
\g__markdown_renderer_arities_prop
{ sectionBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererSectionEnd{%
- \markdownRendererSectionEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererSectionEnd
+ {
+ \markdownRendererSectionEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ sectionEnd }
@@ -2158,10 +2329,11 @@
\g__markdown_renderer_arities_prop
{ sectionEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererReplacementCharacter{%
- \markdownRendererReplacementCharacterPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererReplacementCharacter
+ {
+ \markdownRendererReplacementCharacterPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ replacementCharacter }
@@ -2169,10 +2341,11 @@
\g__markdown_renderer_arities_prop
{ replacementCharacter }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererLeftBrace{%
- \markdownRendererLeftBracePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererLeftBrace
+ {
+ \markdownRendererLeftBracePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ leftBrace }
@@ -2180,10 +2353,11 @@
\g__markdown_renderer_arities_prop
{ leftBrace }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererRightBrace{%
- \markdownRendererRightBracePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererRightBrace
+ {
+ \markdownRendererRightBracePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ rightBrace }
@@ -2191,10 +2365,11 @@
\g__markdown_renderer_arities_prop
{ rightBrace }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererDollarSign{%
- \markdownRendererDollarSignPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDollarSign
+ {
+ \markdownRendererDollarSignPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ dollarSign }
@@ -2202,10 +2377,11 @@
\g__markdown_renderer_arities_prop
{ dollarSign }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererPercentSign{%
- \markdownRendererPercentSignPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererPercentSign
+ {
+ \markdownRendererPercentSignPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ percentSign }
@@ -2213,10 +2389,11 @@
\g__markdown_renderer_arities_prop
{ percentSign }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererAmpersand{%
- \markdownRendererAmpersandPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererAmpersand
+ {
+ \markdownRendererAmpersandPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ ampersand }
@@ -2224,10 +2401,11 @@
\g__markdown_renderer_arities_prop
{ ampersand }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererUnderscore{%
- \markdownRendererUnderscorePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererUnderscore
+ {
+ \markdownRendererUnderscorePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ underscore }
@@ -2235,10 +2413,11 @@
\g__markdown_renderer_arities_prop
{ underscore }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererHash{%
- \markdownRendererHashPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHash
+ {
+ \markdownRendererHashPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ hash }
@@ -2246,10 +2425,11 @@
\g__markdown_renderer_arities_prop
{ hash }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererCircumflex{%
- \markdownRendererCircumflexPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererCircumflex
+ {
+ \markdownRendererCircumflexPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ circumflex }
@@ -2257,10 +2437,11 @@
\g__markdown_renderer_arities_prop
{ circumflex }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererBackslash{%
- \markdownRendererBackslashPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererBackslash
+ {
+ \markdownRendererBackslashPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ backslash }
@@ -2268,10 +2449,11 @@
\g__markdown_renderer_arities_prop
{ backslash }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererTilde{%
- \markdownRendererTildePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererTilde
+ {
+ \markdownRendererTildePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ tilde }
@@ -2279,10 +2461,11 @@
\g__markdown_renderer_arities_prop
{ tilde }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererPipe{%
- \markdownRendererPipePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererPipe
+ {
+ \markdownRendererPipePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ pipe }
@@ -2290,10 +2473,11 @@
\g__markdown_renderer_arities_prop
{ pipe }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererStrikeThrough{%
- \markdownRendererStrikeThroughPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererStrikeThrough
+ {
+ \markdownRendererStrikeThroughPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ strikeThrough }
@@ -2301,10 +2485,11 @@
\g__markdown_renderer_arities_prop
{ strikeThrough }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererSubscript{%
- \markdownRendererSubscriptPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererSubscript
+ {
+ \markdownRendererSubscriptPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ subscript }
@@ -2312,9 +2497,11 @@
\g__markdown_renderer_arities_prop
{ subscript }
{ 1 }
-\def\markdownRendererSuperscript{%
- \markdownRendererSuperscriptPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererSuperscript
+ {
+ \markdownRendererSuperscriptPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ superscript }
@@ -2322,10 +2509,11 @@
\g__markdown_renderer_arities_prop
{ superscript }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererTableAttributeContextBegin{%
- \markdownRendererTableAttributeContextBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererTableAttributeContextBegin
+ {
+ \markdownRendererTableAttributeContextBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ tableAttributeContextBegin }
@@ -2333,10 +2521,11 @@
\g__markdown_renderer_arities_prop
{ tableAttributeContextBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererTableAttributeContextEnd{%
- \markdownRendererTableAttributeContextEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererTableAttributeContextEnd
+ {
+ \markdownRendererTableAttributeContextEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ tableAttributeContextEnd }
@@ -2344,10 +2533,11 @@
\g__markdown_renderer_arities_prop
{ tableAttributeContextEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererTable{%
- \markdownRendererTablePrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererTable
+ {
+ \markdownRendererTablePrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ table }
@@ -2355,10 +2545,11 @@
\g__markdown_renderer_arities_prop
{ table }
{ 3 }
-\ExplSyntaxOff
-\def\markdownRendererInlineMath{%
- \markdownRendererInlineMathPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererInlineMath
+ {
+ \markdownRendererInlineMathPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ inlineMath }
@@ -2366,10 +2557,11 @@
\g__markdown_renderer_arities_prop
{ inlineMath }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererDisplayMath{%
- \markdownRendererDisplayMathPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererDisplayMath
+ {
+ \markdownRendererDisplayMathPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ displayMath }
@@ -2377,10 +2569,11 @@
\g__markdown_renderer_arities_prop
{ displayMath }
{ 1 }
-\ExplSyntaxOff
-\def\markdownRendererThematicBreak{%
- \markdownRendererThematicBreakPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererThematicBreak
+ {
+ \markdownRendererThematicBreakPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ thematicBreak }
@@ -2388,10 +2581,11 @@
\g__markdown_renderer_arities_prop
{ thematicBreak }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererTickedBox{%
- \markdownRendererTickedBoxPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererTickedBox
+ {
+ \markdownRendererTickedBoxPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ tickedBox }
@@ -2399,10 +2593,11 @@
\g__markdown_renderer_arities_prop
{ tickedBox }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererHalfTickedBox{%
- \markdownRendererHalfTickedBoxPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererHalfTickedBox
+ {
+ \markdownRendererHalfTickedBoxPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ halfTickedBox }
@@ -2410,10 +2605,11 @@
\g__markdown_renderer_arities_prop
{ halfTickedBox }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererUntickedBox{%
- \markdownRendererUntickedBoxPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererUntickedBox
+ {
+ \markdownRendererUntickedBoxPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ untickedBox }
@@ -2421,30 +2617,35 @@
\g__markdown_renderer_arities_prop
{ untickedBox }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererWarning{%
- \markdownRendererWarningPrototype}%
-\def\markdownRendererError{%
- \markdownRendererErrorPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererWarning
+ {
+ \markdownRendererWarningPrototype
+ }
+\cs_gset_protected:Npn
+ \markdownRendererError
+ {
+ \markdownRendererErrorPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ warning }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
{ warning }
- { 1 }
+ { 4 }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ error }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
{ error }
- { 1 }
-\ExplSyntaxOff
-\def\markdownRendererJekyllDataBegin{%
- \markdownRendererJekyllDataBeginPrototype}%
-\ExplSyntaxOn
+ { 4 }
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataBegin
+ {
+ \markdownRendererJekyllDataBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ jekyllDataBegin }
@@ -2452,10 +2653,11 @@
\g__markdown_renderer_arities_prop
{ jekyllDataBegin }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererJekyllDataEnd{%
- \markdownRendererJekyllDataEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataEnd
+ {
+ \markdownRendererJekyllDataEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ jekyllDataEnd }
@@ -2463,10 +2665,11 @@
\g__markdown_renderer_arities_prop
{ jekyllDataEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererJekyllDataMappingBegin{%
- \markdownRendererJekyllDataMappingBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataMappingBegin
+ {
+ \markdownRendererJekyllDataMappingBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ jekyllDataMappingBegin }
@@ -2474,10 +2677,11 @@
\g__markdown_renderer_arities_prop
{ jekyllDataMappingBegin }
{ 2 }
-\ExplSyntaxOff
-\def\markdownRendererJekyllDataMappingEnd{%
- \markdownRendererJekyllDataMappingEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataMappingEnd
+ {
+ \markdownRendererJekyllDataMappingEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ jekyllDataMappingEnd }
@@ -2485,10 +2689,11 @@
\g__markdown_renderer_arities_prop
{ jekyllDataMappingEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererJekyllDataSequenceBegin{%
- \markdownRendererJekyllDataSequenceBeginPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataSequenceBegin
+ {
+ \markdownRendererJekyllDataSequenceBeginPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ jekyllDataSequenceBegin }
@@ -2496,10 +2701,11 @@
\g__markdown_renderer_arities_prop
{ jekyllDataSequenceBegin }
{ 2 }
-\ExplSyntaxOff
-\def\markdownRendererJekyllDataSequenceEnd{%
- \markdownRendererJekyllDataSequenceEndPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataSequenceEnd
+ {
+ \markdownRendererJekyllDataSequenceEndPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ jekyllDataSequenceEnd }
@@ -2507,10 +2713,11 @@
\g__markdown_renderer_arities_prop
{ jekyllDataSequenceEnd }
{ 0 }
-\ExplSyntaxOff
-\def\markdownRendererJekyllDataBoolean{%
- \markdownRendererJekyllDataBooleanPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataBoolean
+ {
+ \markdownRendererJekyllDataBooleanPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ jekyllDataBoolean }
@@ -2518,10 +2725,11 @@
\g__markdown_renderer_arities_prop
{ jekyllDataBoolean }
{ 2 }
-\ExplSyntaxOff
-\def\markdownRendererJekyllDataNumber{%
- \markdownRendererJekyllDataNumberPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataNumber
+ {
+ \markdownRendererJekyllDataNumberPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ jekyllDataNumber }
@@ -2529,12 +2737,16 @@
\g__markdown_renderer_arities_prop
{ jekyllDataNumber }
{ 2 }
-\ExplSyntaxOff
-\def\markdownRendererJekyllDataTypographicString{%
- \markdownRendererJekyllDataTypographicStringPrototype}%
-\def\markdownRendererJekyllDataProgrammaticString{%
- \markdownRendererJekyllDataProgrammaticStringPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataTypographicString
+ {
+ \markdownRendererJekyllDataTypographicStringPrototype
+ }
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataProgrammaticString
+ {
+ \markdownRendererJekyllDataProgrammaticStringPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ jekyllDataTypographicString }
@@ -2555,24 +2767,47 @@
\cs_if_exist:NTF
\markdownRendererJekyllDataString
{
- \markdownWarning
+ \__markdown_if_option:nTF
+ { experimental }
{
- The~jekyllDataString~renderer~has~been~deprecated,~
- to~be~removed~in~Markdown~4.0.0
+ \markdownError
+ {
+ The~jekyllDataString~renderer~has~been~deprecated,~
+ to~be~removed~in~Markdown~4.0.0
+ }
+ }
+ {
+ \markdownWarning
+ {
+ The~jekyllDataString~renderer~has~been~deprecated,~
+ to~be~removed~in~Markdown~4.0.0
+ }
+ \markdownRendererJekyllDataString
}
- \markdownRendererJekyllDataString
}
{
\cs_if_exist:NTF
\markdownRendererJekyllDataStringPrototype
{
- \markdownWarning
+ \__markdown_if_option:nTF
+ { experimental }
{
- The~jekyllDataString~renderer~prototype~
- has~been~deprecated,~
- to~be~removed~in~Markdown~4.0.0
+ \markdownError
+ {
+ The~jekyllDataString~renderer~prototype~
+ has~been~deprecated,~
+ to~be~removed~in~Markdown~4.0.0
+ }
+ }
+ {
+ \markdownWarning
+ {
+ The~jekyllDataString~renderer~prototype~
+ has~been~deprecated,~
+ to~be~removed~in~Markdown~4.0.0
+ }
+ \markdownRendererJekyllDataStringPrototype
}
- \markdownRendererJekyllDataStringPrototype
}
{
\markdownRendererJekyllDataTypographicStringPrototype
@@ -2586,10 +2821,11 @@
\g__markdown_renderer_arities_prop
{ jekyllDataString }
{ 2 }
-\ExplSyntaxOff
-\def\markdownRendererJekyllDataEmpty{%
- \markdownRendererJekyllDataEmptyPrototype}%
-\ExplSyntaxOn
+\cs_gset_protected:Npn
+ \markdownRendererJekyllDataEmpty
+ {
+ \markdownRendererJekyllDataEmptyPrototype
+ }
\seq_gput_right:Nn
\g__markdown_renderers_seq
{ jekyllDataEmpty }
@@ -2602,13 +2838,8 @@
\seq_map_inline:Nn
\g__markdown_renderers_seq
{
- \str_if_eq:nnF
+ \__markdown_define_renderer:n
{ ##1 }
- { jekyllDataString }
- {
- \__markdown_define_renderer:n
- { ##1 }
- }
}
}
\cs_new:Nn \__markdown_define_renderer:n
@@ -2642,6 +2873,8 @@
\l__markdown_renderer_definition_tl
\bool_new:N
\g__markdown_appending_renderer_bool
+\bool_new:N
+ \g__markdown_unprotected_renderer_bool
\cs_new:Nn \__markdown_define_renderer:nNn
{
\keys_define:nn
@@ -2666,13 +2899,33 @@
\l__markdown_renderer_definition_tl
\l_tmpa_tl
}
- \cs_generate_from_arg_count:NNnV
+ \bool_if:NTF
+ \g__markdown_unprotected_renderer_bool
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { \cs_set:Npn }
+ }
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { \cs_set_protected:Npn }
+ }
+ \exp_last_unbraced:NNV
+ \cs_generate_from_arg_count:NNnV
#2
- \cs_set:Npn
+ \l_tmpa_tl
{ #3 }
\l__markdown_renderer_definition_tl
},
}
+ \str_if_eq:nnT
+ { #1 }
+ { jekyllDataString }
+ {
+ \cs_undefine:N
+ #2
+ }
}
\cs_new_protected:Nn
\__markdown_tl_set_from_cs:NNn
@@ -2721,6 +2974,15 @@
{ markdown/options }
{
renderers .code:n = {
+ \bool_gset_false:N
+ \g__markdown_unprotected_renderer_bool
+ \keys_set:nn
+ { markdown/options/renderers }
+ { #1 }
+ },
+ unprotectedRenderers .code:n = {
+ \bool_gset_true:N
+ \g__markdown_unprotected_renderer_bool
\keys_set:nn
{ markdown/options/renderers }
{ #1 }
@@ -2865,10 +3127,6 @@
\l_tmpa_clist
}
}
-\prg_generate_conditional_variant:Nnn
- \prop_get:NnN
- { NeN }
- { TF }
\cs_generate_variant:Nn
\regex_set:Nn
{ NV }
@@ -2933,13 +3191,8 @@
\seq_map_inline:Nn
\g__markdown_renderers_seq
{
- \str_if_eq:nnF
+ \__markdown_define_renderer_prototype:n
{ ##1 }
- { jekyllDataString }
- {
- \__markdown_define_renderer_prototype:n
- { ##1 }
- }
}
}
\cs_new:Nn \__markdown_define_renderer_prototype:n
@@ -2974,6 +3227,8 @@
\l__markdown_renderer_prototype_definition_tl
\bool_new:N
\g__markdown_appending_renderer_prototype_bool
+\bool_new:N
+ \g__markdown_unprotected_renderer_prototype_bool
\cs_new:Nn \__markdown_define_renderer_prototype:nNn
{
\keys_define:nn
@@ -2998,21 +3253,39 @@
\l__markdown_renderer_prototype_definition_tl
\l_tmpa_tl
}
- \cs_generate_from_arg_count:NNnV
+ \bool_if:NTF
+ \g__markdown_unprotected_renderer_prototype_bool
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { \cs_set:Npn }
+ }
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { \cs_set_protected:Npn }
+ }
+ \exp_last_unbraced:NNV
+ \cs_generate_from_arg_count:NNnV
#2
- \cs_set:Npn
+ \l_tmpa_tl
{ #3 }
\l__markdown_renderer_prototype_definition_tl
},
}
- \cs_if_free:NT
- #2
+ \str_if_eq:nnF
+ { #1 }
+ { jekyllDataString }
{
- \cs_generate_from_arg_count:NNnn
+ \cs_if_free:NT
#2
- \cs_set:Npn
- { #3 }
- { }
+ {
+ \cs_generate_from_arg_count:NNnn
+ #2
+ \cs_gset_protected:Npn
+ { #3 }
+ { }
+ }
}
}
\cs_generate_variant:Nn
@@ -3094,6 +3367,23 @@
{ markdown/options }
{
#1 .code:n = {
+ \bool_gset_false:N
+ \g__markdown_unprotected_renderer_prototype_bool
+ \keys_set:nn
+ { markdown/options/renderer-prototypes }
+ { ##1 }
+ },
+ }
+ }
+\__markdown_with_various_cases:nn
+ { unprotectedRendererPrototypes }
+ {
+ \keys_define:nn
+ { markdown/options }
+ {
+ #1 .code:n = {
+ \bool_gset_true:N
+ \g__markdown_unprotected_renderer_prototype_bool
\keys_set:nn
{ markdown/options/renderer-prototypes }
{ ##1 }
@@ -3114,6 +3404,11 @@
|gdef|markdownBegin{%
|markdownReadAndConvert{\markdownEnd}%
{|markdownEnd}}%
+ |gdef|yamlBegin{%
+ |begingroup
+ |yamlSetup{jekyllData, expectJekyllData, ensureJekyllData}%
+ |markdownReadAndConvert{\yamlEnd}%
+ {|yamlEnd}}%
|endgroup
\ExplSyntaxOn
\keys_define:nn
@@ -3177,53 +3472,110 @@
\msg_error:nnnn
{ nnee }
\prop_new:N \g__markdown_plain_tex_loaded_themes_linenos_prop
+\prop_new:N \g__markdown_plain_tex_loaded_themes_versions_prop
\cs_new:Nn
- \__markdown_plain_tex_load_theme:nn
+ \__markdown_plain_tex_load_theme:nnn
{
\prop_get:NnNTF
\g__markdown_plain_tex_loaded_themes_linenos_prop
{ #1 }
\l_tmpa_tl
{
- \msg_warning:nnnV
- { markdown }
- { repeatedly-loaded-plain-tex-theme }
+ \prop_get:NnN
+ \g__markdown_plain_tex_loaded_themes_versions_prop
{ #1 }
- \l_tmpa_tl
+ \l_tmpb_tl
+ \str_if_eq:nVTF
+ { #2 }
+ \l_tmpb_tl
+ {
+ \msg_warning:nnnVn
+ { markdown }
+ { repeatedly-loaded-plain-tex-theme }
+ { #1 }
+ \l_tmpa_tl
+ { #2 }
+ }
+ {
+ \msg_error:nnnnVV
+ { markdown }
+ { different-versions-of-plain-tex-theme }
+ { #1 }
+ { #2 }
+ \l_tmpb_tl
+ \l_tmpa_tl
+ }
}
{
- \msg_info:nnn
- { markdown }
- { loading-plain-tex-theme }
- { #1 }
\prop_gput:Nnx
\g__markdown_plain_tex_loaded_themes_linenos_prop
{ #1 }
- { \tex_the:D \tex_inputlineno:D }
- \file_input:n
- { markdown theme #2 }
+ { \tex_the:D \tex_inputlineno:D } % noqa: W200
+ \prop_gput:Nnn
+ \g__markdown_plain_tex_loaded_themes_versions_prop
+ { #1 }
+ { #2 }
+ \prop_if_in:NnTF
+ \g__markdown_plain_tex_built_in_themes_prop
+ { #1 }
+ {
+ \msg_info:nnnn
+ { markdown }
+ { loading-built-in-plain-tex-theme }
+ { #1 }
+ { #2 }
+ \prop_item:Nn
+ \g__markdown_plain_tex_built_in_themes_prop
+ { #1 }
+ }
+ {
+ \msg_info:nnnn
+ { markdown }
+ { loading-plain-tex-theme }
+ { #1 }
+ { #2 }
+ \file_input:n
+ { markdown theme #3 }
+ }
}
}
\msg_new:nnn
{ markdown }
{ loading-plain-tex-theme }
- { Loading~plain~TeX~Markdown~theme~#1 }
+ { Loading~version~#2~of~plain~TeX~Markdown~theme~#1 }
+\msg_new:nnn
+ { markdown }
+ { loading-built-in-plain-tex-theme }
+ { Loading~version~#2~of~built-in~plain~TeX~Markdown~theme~#1 }
\msg_new:nnn
{ markdown }
{ repeatedly-loaded-plain-tex-theme }
{
- Plain~TeX~Markdown~theme~#1~was~previously~
+ Version~#3~of~plain~TeX~Markdown~theme~#1~was~previously~
loaded~on~line~#2,~not~loading~it~again
}
+\msg_new:nnn
+ { markdown }
+ { different-versions-of-plain-tex-theme }
+ {
+ Tried~to~load~version~#2~of~plain~TeX~Markdown~theme~#1~
+ but~version~#3~has~already~been~loaded~on~line~#4
+ }
\cs_generate_variant:Nn
\prop_gput:Nnn
{ Nnx }
\cs_gset_eq:NN
- \__markdown_load_theme:nn
- \__markdown_plain_tex_load_theme:nn
+ \__markdown_load_theme:nnn
+ \__markdown_plain_tex_load_theme:nnn
\cs_generate_variant:Nn
- \__markdown_load_theme:nn
- { nV }
+ \__markdown_load_theme:nnn
+ { VeV }
+\cs_generate_variant:Nn
+ \msg_error:nnnnnn
+ { nnnnVV }
+\cs_generate_variant:Nn
+ \msg_warning:nnnnn
+ { nnnVn }
\cs_new:Npn
\markdownLoadPlainTeXTheme
{
@@ -3247,28 +3599,447 @@
\l_tmpa_str
{ / }
{ _ }
- \__markdown_plain_tex_load_theme:VV
+ \__markdown_plain_tex_load_theme:VeV
\l_tmpb_tl
+ { \markdownThemeVersion }
\l_tmpa_str
}
\cs_generate_variant:Nn
\tl_set:Nn
{ Ne }
\cs_generate_variant:Nn
- \__markdown_plain_tex_load_theme:nn
- { VV }
+ \__markdown_plain_tex_load_theme:nnn
+ { VeV }
+\prop_gput:Nnn
+ \g__markdown_plain_tex_built_in_themes_prop
+ { witiko / dot }
+ {
+ \str_if_eq:enF
+ { \markdownThemeVersion }
+ { silent }
+ {
+ \markdownWarning
+ {
+ The~theme~name~"witiko/dot"~has~been~soft-deprecated.
+ \iow_newline:
+ Consider~changing~the~name~to~"witiko/diagrams@v1".
+ }
+ }
+ \markdownSetup { fencedCode }
+ \cs_set_eq:NN
+ \__markdown_dot_previous_definition:nnn
+ \markdownRendererInputFencedCodePrototype
+ \regex_const:Nn
+ \c__markdown_dot_infostring_regex
+ { ^dot(\s+(.+))? }
+ \seq_new:N
+ \l__markdown_dot_matches_seq
+ \markdownSetup {
+ rendererPrototypes = {
+ inputFencedCode = {
+ \regex_extract_once:NnNTF
+ \c__markdown_dot_infostring_regex
+ { #2 }
+ \l__markdown_dot_matches_seq
+ {
+ \__markdown_if_option:nF
+ { frozenCache }
+ {
+ \sys_shell_now:n
+ {
+ if~!~test~-e~#1.pdf.source~
+ ||~!~diff~#1~#1.pdf.source;
+ then~
+ dot~-Tpdf~-o~#1.pdf~#1;
+ cp~#1~#1.pdf.source;
+ fi
+ }
+ }
+ \exp_args:NNne
+ \exp_last_unbraced:No
+ \markdownRendererImage
+ {
+ { Graphviz~image }
+ { #1.pdf }
+ { #1.pdf }
+ }
+ {
+ \seq_item:Nn
+ \l__markdown_dot_matches_seq
+ { 3 }
+ }
+ }
+ {
+ \__markdown_dot_previous_definition:nnn
+ { #1 }
+ { #2 }
+ { #3 }
+ }
+ },
+ },
+ }
+ }
+\prop_gput:Nnn
+ \g__markdown_plain_tex_built_in_themes_prop
+ { witiko / diagrams }
+ {
+ \str_case:enF
+ { \markdownThemeVersion }
+ {
+ { latest }
+ {
+ \markdownWarning
+ {
+ Write~"witiko/diagrams@v2"~to~pin~version~"v2"~of~the~
+ theme~"witiko/diagrams".~This~will~keep~your~documents~
+ from~suddenly~breaking~when~we~have~released~future~
+ versions~of~the~theme~with~backwards-incompatible~
+ syntax~and~behavior.
+ }
+ \markdownSetup
+ {
+ import = witiko/diagrams/v2,
+ }
+ }
+ { v2 }
+ {
+ \markdownSetup
+ {
+ import = witiko/diagrams/v2,
+ }
+ }
+ { v1 }
+ {
+ \markdownSetup
+ {
+ import = witiko/dot@silent,
+ }
+ }
+ }
+ {
+ \msg_error:nnnen
+ { markdown }
+ { unknown-theme-version }
+ { witiko/diagrams }
+ { \markdownThemeVersion }
+ { v1 }
+ }
+ }
+\cs_generate_variant:Nn
+ \msg_error:nnnnn
+ { nnnen }
+\msg_new:nnnn
+ { markdown }
+ { unknown-theme-version }
+ { Unknown~version~"#2"~of~theme~"#1"~has~been~requested. }
+ { Known~versions~are:~#3 }
+\prop_gput:Nnn
+ \g__markdown_plain_tex_built_in_themes_prop
+ { witiko / diagrams / v2 }
+ {
+ \__markdown_setup:n
+ {
+ fencedCode = true,
+ fencedCodeAttributes = true,
+ }
+ \cs_set_eq:NN
+ \__markdown_diagrams_previous_fenced_code:nnn
+ \markdownRendererInputFencedCodePrototype
+ \tl_new:N
+ \l__markdown_diagrams_caption_tl
+ \__markdown_setup:n
+ {
+ rendererPrototypes = {
+ fencedCodeAttributeContextBegin = {
+ \group_begin:
+ \markdownRendererImageAttributeContextBegin
+ \cs_set_eq:NN
+ \__markdown_diagrams_previous_key_value:nn
+ \markdownRendererAttributeKeyValuePrototype
+ \__markdown_setup:n
+ {
+ rendererPrototypes = {
+ attributeKeyValue = {
+ \str_if_eq:nnTF
+ { ##1 }
+ { caption }
+ {
+ \tl_set:Nn
+ \l__markdown_diagrams_caption_tl
+ { ##2 }
+ }
+ {
+ \__markdown_diagrams_previous_key_value:nn
+ { ##1 }
+ { ##2 }
+ }
+ },
+ },
+ }
+ },
+ fencedCodeAttributeContextEnd = {
+ \markdownRendererImageAttributeContextEnd
+ \group_end:
+ },
+ },
+ }
+ \cs_new:Nn
+ \__markdown_diagrams_render_diagram:nnnn
+ {
+ \__markdown_if_option:nF
+ { frozenCache }
+ {
+ \sys_shell_now:n
+ {
+ if~!~test~-e~#2.source~
+ ||~!~diff~#1~#2.source;
+ then~
+ (#3);
+ cp~#1~#2.source;
+ fi
+ }
+ \exp_args:NNnV
+ \exp_last_unbraced:No
+ \markdownRendererImage
+ {
+ { #4 }
+ { #2 }
+ { #2 }
+ }
+ \l__markdown_diagrams_caption_tl
+ }
+ }
+ \prop_new:N
+ \g_markdown_diagrams_infostrings_prop
+ \__markdown_setup:n
+ {
+ rendererPrototypes = {
+ inputFencedCode = {
+ \prop_get:NnNTF
+ \g_markdown_diagrams_infostrings_prop
+ { #2 }
+ \l_tmpa_tl
+ {
+ \cs_set:NV
+ \__markdown_diagrams_infostrings_current:n
+ \l_tmpa_tl
+ \__markdown_diagrams_infostrings_current:n
+ { #1 }
+ }
+ {
+ \__markdown_diagrams_previous_fenced_code:nnn
+ { #1 }
+ { #2 }
+ { #3 }
+ }
+ },
+ },
+ }
+ \cs_generate_variant:Nn
+ \cs_set:Nn
+ { NV }
+ \cs_set:Nn
+ \__markdown_diagrams_infostrings_current:n
+ {
+ \__markdown_diagrams_render_diagram:nnnn
+ { #1 }
+ { #1.pdf }
+ { dot~-Tpdf~-o~#1.pdf~#1 }
+ { Graphviz~image }
+ }
+ \__markdown_tl_set_from_cs:NNn
+ \l_tmpa_tl
+ \__markdown_diagrams_infostrings_current:n
+ { 1 }
+ \prop_gput:NnV
+ \g_markdown_diagrams_infostrings_prop
+ { dot }
+ \l_tmpa_tl
+ \cs_set:Nn
+ \__markdown_diagrams_infostrings_current:n
+ {
+ \__markdown_diagrams_render_diagram:nnnn
+ { #1 }
+ { #1.pdf }
+ { mmdc~--pdfFit~-i~#1~-o~#1.pdf }
+ { Mermaid~image }
+ }
+ \__markdown_tl_set_from_cs:NNn
+ \l_tmpa_tl
+ \__markdown_diagrams_infostrings_current:n
+ { 1 }
+ \prop_gput:NnV
+ \g_markdown_diagrams_infostrings_prop
+ { mermaid }
+ \l_tmpa_tl
+ \regex_const:Nn
+ \c__markdown_diagrams_filename_suffix_regex
+ { \.[^.]*$ }
+ \cs_set:Nn
+ \__markdown_diagrams_infostrings_current:n
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { #1 }
+ \regex_replace_once:NnN
+ \c__markdown_diagrams_filename_suffix_regex
+ { .pdf }
+ \l_tmpa_tl
+ \__markdown_diagrams_render_diagram:nVnn
+ { #1 }
+ \l_tmpa_tl
+ { plantuml~-tpdf~#1 }
+ { PlantUML~image }
+ }
+ \cs_generate_variant:Nn
+ \__markdown_diagrams_render_diagram:nnnn
+ { nVnn }
+ \__markdown_tl_set_from_cs:NNn
+ \l_tmpa_tl
+ \__markdown_diagrams_infostrings_current:n
+ { 1 }
+ \prop_gput:NnV
+ \g_markdown_diagrams_infostrings_prop
+ { plantuml }
+ \l_tmpa_tl
+ }
+\group_begin:
+\char_set_catcode_other:N \%
+\prop_gput:Nnn
+ \g__markdown_plain_tex_built_in_themes_prop
+ { witiko / graphicx / http }
+ {
+ \cs_set_eq:NN
+ \__markdown_graphicx_http_previous_definition:nnnn
+ \markdownRendererImagePrototype
+ \int_new:N
+ \g__markdown_graphicx_http_image_number_int
+ \int_gset:Nn
+ \g__markdown_graphicx_http_image_number_int
+ { 0 }
+ \cs_new:Nn
+ \__markdown_graphicx_http_filename:
+ {
+ \markdownOptionCacheDir
+ / witiko_graphicx_http .
+ \int_use:N
+ \g__markdown_graphicx_http_image_number_int
+ }
+ \cs_new:Nn
+ \__markdown_graphicx_http_download:nn
+ {
+ wget~-O~#2~#1~
+ ||~curl~--location~-o~#2~#1~
+ ||~rm~-f~#2
+ }
+ \str_new:N
+ \l__markdown_graphicx_http_filename_str
+ \ior_new:N
+ \g__markdown_graphicx_http_filename_ior
+ \markdownSetup {
+ rendererPrototypes = {
+ image = {
+ \__markdown_if_option:nF
+ { frozenCache }
+ {
+ \sys_shell_now:e
+ {
+ mkdir~-p~" \markdownOptionCacheDir ";
+ if~printf~'%s'~"#3"~|~grep~-q~-E~'^https?:';
+ then~
+ OUTPUT_PREFIX=" \markdownOptionCacheDir ";
+ OUTPUT_BODY="$(printf~'%s'~'#3'
+ |~md5sum~|~cut~-d'~'~-f1)";
+ OUTPUT_SUFFIX="$(printf~'%s'~'#3'
+ |~sed~'s/.*[.]//')";
+ OUTPUT="$OUTPUT_PREFIX/$OUTPUT_BODY.$OUTPUT_SUFFIX";
+ if~!~[~-e~"$OUTPUT"~];
+ then~
+ \__markdown_graphicx_http_download:nn
+ { '#3' }
+ { "$OUTPUT" } ;
+ printf~'%s'~"$OUTPUT"~
+ >~" \__markdown_graphicx_http_filename: ";
+ fi;
+ else~
+ printf~'%s'~'#3'~
+ >~" \__markdown_graphicx_http_filename: ";
+ fi
+ }
+ }
+ \ior_open:Ne
+ \g__markdown_graphicx_http_filename_ior
+ { \__markdown_graphicx_http_filename: }
+ \ior_str_get:NN
+ \g__markdown_graphicx_http_filename_ior
+ \l__markdown_graphicx_http_filename_str
+ \ior_close:N
+ \g__markdown_graphicx_http_filename_ior
+ \__markdown_graphicx_http_previous_definition:nnVn
+ { #1 }
+ { #2 }
+ \l__markdown_graphicx_http_filename_str
+ { #4 }
+ \int_gincr:N
+ \g__markdown_graphicx_http_image_number_int
+ }
+ }
+ }
+ \cs_generate_variant:Nn
+ \ior_open:Nn
+ { Ne }
+ \cs_generate_variant:Nn
+ \__markdown_graphicx_http_previous_definition:nnnn
+ { nnVn }
+ }
+\group_end:
+\prop_gput:Nnn
+ \g__markdown_plain_tex_built_in_themes_prop
+ { witiko / tilde }
+ {
+ \markdownSetup {
+ rendererPrototypes = {
+ tilde = {~},
+ },
+ }
+ }
+\clist_map_inline:nn
+ { foo, bar }
+ {
+ \prop_gput:Nnn
+ \g__markdown_plain_tex_built_in_themes_prop
+ { witiko / example / #1 }
+ {
+ \markdownWarning
+ {
+ The~theme~witiko/example/#1~is~supposed~to~be~used~in~code~
+ examples.~Using~it~in~actual~code~has~no~effect,~except~
+ this~warning~message,~and~is~usually~a~mistake.
+ }
+ }
+ }
\str_if_eq:VVT
\c__markdown_top_layer_tl
\c__markdown_option_layer_plain_tex_tl
{
- \ExplSyntaxOff
+ \use:c
+ { ExplSyntaxOff }
\__markdown_if_option:nF
{ noDefaults }
{
- \__markdown_setup:n
- {theme = witiko/markdown/defaults}
+ \__markdown_if_option:nTF
+ { experimental }
+ {
+ \__markdown_setup:n
+ { theme = witiko/markdown/defaults@experimental }
+ }
+ {
+ \__markdown_setup:n
+ { theme = witiko/markdown/defaults }
+ }
}
- \ExplSyntaxOn
+ \use:c
+ { ExplSyntaxOn }
}
\tl_new:N \g__markdown_formatted_lua_options_tl
\cs_new:Nn \__markdown_format_lua_options:
@@ -3305,7 +4076,7 @@
\l_tmpa_tl
\tl_gput_right:Nx
\g__markdown_formatted_lua_options_tl
- { #1~=~ \l_tmpa_tl ,~ }
+ { #1~=~ \l_tmpa_tl ,~ }
}
{
\str_if_eq_p:VV
@@ -3322,9 +4093,18 @@
\clist_map_inline:Vn
\l_tmpa_tl
{
- \tl_gput_right:Nx
+ \__markdown_lua_escape:xN
+ { ##1 }
+ \l_tmpb_tl
+ \tl_gput_right:Nn
+ \g__markdown_formatted_lua_options_tl
+ { " }
+ \tl_gput_right:NV
+ \g__markdown_formatted_lua_options_tl
+ \l_tmpb_tl
+ \tl_gput_right:Nn
\g__markdown_formatted_lua_options_tl
- { "##1" ,~ }
+ { " ,~ }
}
\tl_gput_right:Nx
\g__markdown_formatted_lua_options_tl
@@ -3335,28 +4115,104 @@
\__markdown_get_option_value:nN
{ #1 }
\l_tmpa_tl
- \tl_gput_right:Nx
+ \__markdown_lua_escape:xN
+ { \l_tmpa_tl }
+ \l_tmpb_tl
+ \tl_gput_right:Nn
+ \g__markdown_formatted_lua_options_tl
+ { #1~=~ " }
+ \tl_gput_right:NV
\g__markdown_formatted_lua_options_tl
- { #1~=~ " \l_tmpa_tl " ,~ }
+ \l_tmpb_tl
+ \tl_gput_right:Nn
+ \g__markdown_formatted_lua_options_tl
+ { " ,~ }
}
}
\cs_generate_variant:Nn
\clist_map_inline:nn
{ Vn }
-\let\markdownPrepareLuaOptions=\__markdown_format_lua_options:
-\def\markdownLuaOptions{{ \g__markdown_formatted_lua_options_tl }}
+\let
+ \markdownPrepareLuaOptions
+ \__markdown_format_lua_options:
+\def
+ \markdownLuaOptions
+ {
+ {
+ \g__markdown_formatted_lua_options_tl
+ }
+ }
+\sys_if_engine_luatex:TF
+ {
+ \cs_new:Nn
+ \__markdown_lua_escape:nN
+ {
+ \tl_set:Nx
+ #2
+ {
+ \lua_escape:n
+ { #1 }
+ }
+ }
+ }
+ {
+ \regex_const:Nn
+ \c__markdown_lua_escape_regex
+ { [\\"'] }
+ \cs_new:Nn
+ \__markdown_lua_escape:nN
+ {
+ \tl_set:Nn
+ #2
+ { #1 }
+ \regex_replace_all:NnN
+ \c__markdown_lua_escape_regex
+ { \u { c_backslash_str } \0 }
+ #2
+ }
+ }
+\cs_generate_variant:Nn
+ \__markdown_lua_escape:nN
+ { xN }
+\tl_new:N
+ \markdownInputFilename
+\cs_new:Npn
+ \markdownPrepareInputFilename
+ #1
+ {
+ \__markdown_lua_escape:xN
+ { #1 }
+ \markdownInputFilename
+ \tl_gset:Nx
+ \markdownInputFilename
+ { " \markdownInputFilename " }
+ }
+\cs_new:Npn
+ \markdownPrepare
+ {
+ local~lfs = require("lfs")
+ local~options = \markdownLuaOptions
+ if~not~lfs.isdir(options.cacheDir) then~
+ assert(lfs.mkdir(options.cacheDir))
+ end~
+ local~md = require("markdown")
+ local~convert = md.new(options)
+ }
+\cs_new:Npn
+ \markdownConvert
+ {
+ local~filename = \markdownInputFilename
+ local~file = assert(io.open(filename, "r"),
+ [[Could~not~open~file~"]] .. filename .. [["~for~reading]])
+ local~input = assert(file:read("*a"))
+ assert(file:close())
+ print(convert(input))
+ }
\ExplSyntaxOff
-\def\markdownPrepare{%
- local lfs = require("lfs")
- local cacheDir = "\markdownOptionCacheDir"
- if not lfs.isdir(cacheDir) then
- assert(lfs.mkdir(cacheDir))
- end
- local md = require("markdown")
- local convert = md.new(\markdownLuaOptions)
-}%
\def\markdownCleanup{%
- lfs.rmdir(cacheDir)
+ if options.cacheDir then
+ lfs.rmdir(options.cacheDir)
+ end
}%
\csname newread\endcsname\markdownInputFileStream
\csname newwrite\endcsname\markdownOutputFileStream
@@ -3611,13 +4467,10 @@
|openin|markdownInputFileStream&1
|closein|markdownInputFileStream
|markdownPrepareLuaOptions
+ |markdownPrepareInputFilename{&1}%
|markdownLuaExecute{%
|markdownPrepare
- local file = assert(io.open("&1", "r"),
- [[Could not open file "&1" for reading]])
- local input = assert(file:read("*a"))
- assert(file:close())
- print(convert(input))
+ |markdownConvert
|markdownCleanup}%
|markdownIfOption{finalizeCache}{%
|global|advance|markdownOptionFrozenCacheCounter by 1|relax}{}%
diff --git a/Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_markdown_defaults.tex b/Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_markdown_defaults.tex
index 7b295ea9261..af068b29eeb 100644
--- a/Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_markdown_defaults.tex
+++ b/Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_markdown_defaults.tex
@@ -6,7 +6,7 @@
%%
%% markdown.dtx (with options: `themes-witiko-markdown-defaults-tex')
%%
-%% Copyright (C) 2016-2024 Vít Starý Novotný, Andrej Genčur
+%% Copyright (C) 2016-2025 Vít Starý Novotný, Andrej Genčur
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -166,8 +166,28 @@
\ExplSyntaxOff
\def\markdownRendererSectionBeginPrototype{}%
\def\markdownRendererSectionEndPrototype{}%
-\let\markdownRendererWarningPrototype\markdownWarning
-\let\markdownRendererErrorPrototype\markdownError
+\ExplSyntaxOn
+\cs_gset:Npn
+ \markdownRendererWarningPrototype
+ #1#2#3#4
+ {
+ \tl_set:Nn
+ \l_tmpa_tl
+ { #2 }
+ \tl_if_empty:nF
+ { #4 }
+ {
+ \tl_put_right:Nn
+ \l_tmpa_tl
+ { \iow_newline: #4 }
+ }
+ \exp_args:NV
+ \markdownWarning
+ \l_tmpa_tl
+ }
+\ExplSyntaxOff
+\def\markdownRendererErrorPrototype#1#2#3#4{%
+ \markdownError{#2}{#4}}%
\ExplSyntaxOn
\cs_new:Nn
\__markdown_plain_tex_default_input_raw_inline:nn
@@ -208,7 +228,7 @@
\tl_const:Nn \c__markdown_jekyll_data_mapping_tl { mapping }
\tl_const:Nn \c__markdown_jekyll_data_scalar_tl { scalar }
\seq_new:N \g__markdown_jekyll_data_wildcard_absolute_address_seq
-\cs_new:Nn \markdown_jekyll_data_push_address_segment:n
+\cs_new:Nn \__markdown_jekyll_data_push_address_segment:n
{
\seq_if_empty:NF
\g__markdown_jekyll_data_datatypes_seq
@@ -233,31 +253,31 @@
}
\tl_new:N \g__markdown_jekyll_data_wildcard_absolute_address_tl
\tl_new:N \g__markdown_jekyll_data_wildcard_relative_address_tl
-\cs_new:Nn \markdown_jekyll_data_concatenate_address:NN
+\cs_new:Nn \__markdown_jekyll_data_concatenate_address:NN
{
\seq_pop_left:NN #1 \l_tmpa_tl
\tl_set:Nx #2 { / \seq_use:Nn #1 { / } }
\seq_put_left:NV #1 \l_tmpa_tl
}
-\cs_new:Nn \markdown_jekyll_data_update_address_tls:
+\cs_new:Nn \__markdown_jekyll_data_update_address_tls:
{
- \markdown_jekyll_data_concatenate_address:NN
+ \__markdown_jekyll_data_concatenate_address:NN
\g__markdown_jekyll_data_wildcard_absolute_address_seq
\g__markdown_jekyll_data_wildcard_absolute_address_tl
\seq_get_right:NN
\g__markdown_jekyll_data_wildcard_absolute_address_seq
\g__markdown_jekyll_data_wildcard_relative_address_tl
}
-\cs_new:Nn \markdown_jekyll_data_push:nN
+\cs_new:Nn \__markdown_jekyll_data_push:nN
{
- \markdown_jekyll_data_push_address_segment:n
+ \__markdown_jekyll_data_push_address_segment:n
{ #1 }
\seq_put_right:NV
\g__markdown_jekyll_data_datatypes_seq
#2
- \markdown_jekyll_data_update_address_tls:
+ \__markdown_jekyll_data_update_address_tls:
}
-\cs_new:Nn \markdown_jekyll_data_pop:
+\cs_new:Nn \__markdown_jekyll_data_pop:
{
\seq_pop_right:NN
\g__markdown_jekyll_data_wildcard_absolute_address_seq
@@ -265,63 +285,298 @@
\seq_pop_right:NN
\g__markdown_jekyll_data_datatypes_seq
\l_tmpa_tl
- \markdown_jekyll_data_update_address_tls:
+ \__markdown_jekyll_data_update_address_tls:
}
-\cs_new:Nn \markdown_jekyll_data_set_keyval:nn
+\cs_new:Nn \__markdown_jekyll_data_set_keyval_known:nn
{
\keys_set_known:nn
{ markdown/jekyllData }
{ { #1 } = { #2 } }
}
\cs_generate_variant:Nn
- \markdown_jekyll_data_set_keyval:nn
+ \__markdown_jekyll_data_set_keyval_known:nn
{ Vn }
-\cs_new:Nn \markdown_jekyll_data_set_keyvals:nn
+\cs_new:Nn \__markdown_jekyll_data_set_keyvals_known:nn
{
- \markdown_jekyll_data_push:nN
+ \__markdown_jekyll_data_push:nN
{ #1 }
\c__markdown_jekyll_data_scalar_tl
- \markdown_jekyll_data_set_keyval:Vn
+ \__markdown_jekyll_data_set_keyval_known:Vn
\g__markdown_jekyll_data_wildcard_absolute_address_tl
{ #2 }
- \markdown_jekyll_data_set_keyval:Vn
+ \__markdown_jekyll_data_set_keyval_known:Vn
\g__markdown_jekyll_data_wildcard_relative_address_tl
{ #2 }
- \markdown_jekyll_data_pop:
+ \__markdown_jekyll_data_pop:
}
\def\markdownRendererJekyllDataSequenceBeginPrototype#1#2{
- \markdown_jekyll_data_push:nN
+ \__markdown_jekyll_data_push:nN
{ #1 }
\c__markdown_jekyll_data_sequence_tl
}
\def\markdownRendererJekyllDataMappingBeginPrototype#1#2{
- \markdown_jekyll_data_push:nN
+ \__markdown_jekyll_data_push:nN
{ #1 }
\c__markdown_jekyll_data_mapping_tl
}
\def\markdownRendererJekyllDataSequenceEndPrototype{
- \markdown_jekyll_data_pop:
+ \__markdown_jekyll_data_pop:
}
\def\markdownRendererJekyllDataMappingEndPrototype{
- \markdown_jekyll_data_pop:
+ \__markdown_jekyll_data_pop:
}
\def\markdownRendererJekyllDataBooleanPrototype#1#2{
- \markdown_jekyll_data_set_keyvals:nn
+ \__markdown_jekyll_data_set_keyvals_known:nn
{ #1 }
{ #2 }
}
\def\markdownRendererJekyllDataEmptyPrototype#1{}
\def\markdownRendererJekyllDataNumberPrototype#1#2{
- \markdown_jekyll_data_set_keyvals:nn
+ \__markdown_jekyll_data_set_keyvals_known:nn
{ #1 }
{ #2 }
}
\def\markdownRendererJekyllDataProgrammaticStringPrototype#1#2{}
\def\markdownRendererJekyllDataTypographicStringPrototype#1#2{
- \markdown_jekyll_data_set_keyvals:nn
+ \__markdown_jekyll_data_set_keyvals_known:nn
{ #1 }
{ #2 }
}
+\__markdown_with_various_cases:nn
+ { jekyllDataKeyValue }
+ {
+ \keys_define:nn
+ { markdown/options }
+ {
+ #1 .code:n = {
+ \__markdown_route_jekyll_data_to_key_values:n
+ { ##1 }
+ },
+ #1 .default:n = { },
+ }
+ }
+\seq_new:N
+ \l__markdown_jekyll_data_current_position_seq
+\tl_new:N
+ \l__markdown_jekyll_data_current_position_tl
+\cs_new:Nn
+ \__markdown_route_jekyll_data_to_key_values:n
+ {
+ \markdownSetup
+ {
+ renderers = {
+ jekyllData(Sequence|Mapping)Begin = {
+ \bool_lazy_and:nnTF
+ {
+ \seq_if_empty_p:N
+ \l__markdown_jekyll_data_current_position_seq
+ }
+ {
+ \str_if_eq_p:nn
+ { ##1 }
+ { null }
+ }
+ {
+ \tl_if_empty:nF
+ { #1 }
+ {
+ \seq_put_right:Nn
+ \l__markdown_jekyll_data_current_position_seq
+ { #1 }
+ }
+ }
+ {
+ \seq_put_right:Nn
+ \l__markdown_jekyll_data_current_position_seq
+ { ##1 }
+ }
+ },
+ jekyllData(Sequence|Mapping)End = {
+ \seq_pop_right:NN
+ \l__markdown_jekyll_data_current_position_seq
+ \l_tmpa_tl
+ },
+ jekyllDataBoolean = {
+ \tl_set:Nx
+ \l__markdown_jekyll_data_current_position_tl
+ {
+ \seq_use:Nn
+ \l__markdown_jekyll_data_current_position_seq
+ { / }
+ }
+ \keys_if_exist:VnTF
+ \l__markdown_jekyll_data_current_position_tl
+ { ##1 / boolean }
+ {
+ \__markdown_keys_set:xn
+ {
+ \tl_use:N
+ \l__markdown_jekyll_data_current_position_tl
+ / ##1 / boolean
+ }
+ { ##2 }
+ }
+ {
+ \__markdown_keys_set:xn
+ {
+ \tl_use:N
+ \l__markdown_jekyll_data_current_position_tl
+ / ##1
+ }
+ { ##2 }
+ }
+ },
+ jekyllDataNumber = {
+ \tl_set:Nx
+ \l__markdown_jekyll_data_current_position_tl
+ {
+ \seq_use:Nn
+ \l__markdown_jekyll_data_current_position_seq
+ { / }
+ }
+ \keys_if_exist:VnTF
+ \l__markdown_jekyll_data_current_position_tl
+ { ##1 / number }
+ {
+ \__markdown_keys_set:xn
+ {
+ \tl_use:N
+ \l__markdown_jekyll_data_current_position_tl
+ / ##1 / number
+ }
+ { ##2 }
+ }
+ {
+ \__markdown_keys_set:xn
+ {
+ \tl_use:N
+ \l__markdown_jekyll_data_current_position_tl
+ / ##1
+ }
+ { ##2 }
+ }
+ },
+ jekyllDataEmpty = {
+ \tl_set:Nx
+ \l__markdown_jekyll_data_current_position_tl
+ {
+ \seq_use:Nn
+ \l__markdown_jekyll_data_current_position_seq
+ { / }
+ }
+ \keys_if_exist:VnTF
+ \l__markdown_jekyll_data_current_position_tl
+ { ##1 / empty }
+ {
+ \keys_set:xn
+ {
+ \tl_use:N
+ \l__markdown_jekyll_data_current_position_tl
+ / ##1
+ }
+ { empty }
+ }
+ {
+ \keys_set:Vn
+ \l__markdown_jekyll_data_current_position_tl
+ { ##1 }
+ }
+ },
+ jekyllDataTypographicString = {
+ \tl_set:Nx
+ \l__markdown_jekyll_data_current_position_tl
+ {
+ \seq_use:Nn
+ \l__markdown_jekyll_data_current_position_seq
+ { / }
+ }
+ \keys_if_exist:VnTF
+ \l__markdown_jekyll_data_current_position_tl
+ { ##1 / typographicString }
+ {
+ \__markdown_keys_set:xn
+ {
+ \tl_use:N
+ \l__markdown_jekyll_data_current_position_tl
+ / ##1 / typographicString
+ }
+ { ##2 }
+ }
+ {
+ \keys_if_exist:VnTF
+ \l__markdown_jekyll_data_current_position_tl
+ { ##1 / programmaticString }
+ {
+ \__markdown_keys_set_known:xn
+ {
+ \tl_use:N
+ \l__markdown_jekyll_data_current_position_tl
+ / ##1
+ }
+ { ##2 }
+ }
+ {
+ \__markdown_keys_set:xn
+ {
+ \tl_use:N
+ \l__markdown_jekyll_data_current_position_tl
+ / ##1
+ }
+ { ##2 }
+ }
+ }
+ },
+ jekyllDataProgrammaticString = {
+ \tl_set:Nx
+ \l__markdown_jekyll_data_current_position_tl
+ {
+ \seq_use:Nn
+ \l__markdown_jekyll_data_current_position_seq
+ { / }
+ }
+ \keys_if_exist:VnT
+ \l__markdown_jekyll_data_current_position_tl
+ { ##1 / programmaticString }
+ {
+ \__markdown_keys_set:xn
+ {
+ \tl_use:N
+ \l__markdown_jekyll_data_current_position_tl
+ / ##1 / programmaticString
+ }
+ { ##2 }
+ }
+ },
+ },
+ }
+ }
+\cs_new:Nn
+ \__markdown_keys_set:nn
+ {
+ \keys_set:nn
+ { }
+ { { #1 } = { #2 } }
+ }
+\cs_new:Nn
+ \__markdown_keys_set_known:nn
+ {
+ \keys_set_known:nn
+ { }
+ { { #1 } = { #2 } }
+ }
+\cs_generate_variant:Nn
+ \__markdown_keys_set:nn
+ { xn }
+\cs_generate_variant:Nn
+ \__markdown_keys_set_known:nn
+ { xn }
+\cs_generate_variant:Nn
+ \keys_set:nn
+ { xn, Vn }
+\prg_generate_conditional_variant:Nnn
+ \keys_if_exist:nn
+ { Vn }
+ { T, TF }
\ExplSyntaxOff
\endinput
%%
diff --git a/Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_tilde.tex b/Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_tilde.tex
deleted file mode 100644
index dd00c00f7f4..00000000000
--- a/Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_tilde.tex
+++ /dev/null
@@ -1,52 +0,0 @@
-%%
-%% This is file `markdownthemewitiko_tilde.tex',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% markdown.dtx (with options: `themes-witiko-tilde')
-%%
-%% Copyright (C) 2016-2024 Vít Starý Novotný, Andrej Genčur
-%%
-%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3c
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% This work has the LPPL maintenance status `maintained'.
-%% The Current Maintainer of this work is Vít Starý Novotný.
-%%
-%% Send bug reports, requests for additions and questions
-%% either to the GitHub issue tracker at
-%%
-%% https://github.com/Witiko/markdown/issues
-%%
-%% or to the e-mail address <witiko@mail.muni.cz>.
-%%
-%% MODIFICATION ADVICE:
-%%
-%% If you want to customize this file, it is best to make a copy of
-%% the source file(s) from which it was produced. Use a different
-%% name for your copy(ies) and modify the copy(ies); this will ensure
-%% that your modifications do not get overwritten when you install a
-%% new release of the standard system. You should also ensure that
-%% your modified source file does not generate any modified file with
-%% the same name as a standard file.
-%%
-%% You will also need to produce your own, suitably named, .ins file to
-%% control the generation of files from your source file; this file
-%% should contain your own preambles for the files it generates, not
-%% those in the standard .ins files.
-%%
-%% The names of the source files used are shown above.
-%%
-\markdownSetup {
- rendererPrototypes = {
- tilde = {~},
- },
-}
-\endinput
-%%
-%% End of file `markdownthemewitiko_tilde.tex'.
diff --git a/Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex b/Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex
index 4a3e81fde05..298ac906bc7 100644
--- a/Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex
+++ b/Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex
@@ -1,4 +1,4 @@
-%% $Id: pst-circ.tex 210 2021-09-10 07:52:09Z herbert $
+%% $Id: pst-circ.tex 1015 2024-10-10 12:02:54Z herbert $
%% This is file `pst-circ.tex'
%%
%% IMPORTANT NOTICE:
@@ -26,8 +26,8 @@
\ifx\PSTXKeyLoaded\endinput \else\input pst-xkey \fi
\ifx\PSTMultidoLoaded\endinput\else\input multido.tex\fi
%
-\def\fileversion{2.19}
-\def\filedate{2021/09/09}
+\def\fileversion{2.20}
+\def\filedate{2024/10/10}
\message{`pst-circ' v\fileversion (hv)}
%
\edef\PstAtCode{\the\catcode`\@}
@@ -1022,6 +1022,7 @@
/YC Y1 Y2 add 2 div def
XC YC end ){C@}
\rput(C@){\pst@draw@OA}
+ \psset{fillstyle=none}% reset, otherwise the connectionlines are also used for a fillstyle
\ncangle[arrows=-,arm=.5,angleA=0,angleB=180]{#1}{\ifPst@OAinvert Minus@\else Plus@\fi}
\ncput[npos=2]{\pnode{\ifPst@OAinvert Minus@@\else Plus@@\fi}}
\ifPst@OAiplus
@@ -1905,9 +1906,9 @@
\fi
\pcline[fillstyle=none,linestyle=none](#2)(#3)
%%%%%
- \pst@intensity{#2}{#3}
- \pst@tension{#2}{#3}
- \fi%
+ \pst@intensity{#2}{#3}%
+ \pst@tension{#2}{#3}%
+ \fi
}%
%
\def\pst@intensity#1#2{%
@@ -2112,15 +2113,15 @@
\pnode(0.5,0){dipole@2}
\psframe[linewidth=1.5\pslinewidth,fillstyle=solid,fillcolor=black](-0.5,-0.25)(0.5,0.25)
\else
- \pscurve[arrows=-,linewidth=1.5\pslinewidth](-1,0)(-0.75,0.5)(-0.5,0)
- \pscurve[arrows=-,linewidth=1.5\pslinewidth](-0.5,0)(-0.25,0.5)(0,0)
- \pscurve[arrows=-,linewidth=1.5\pslinewidth](0,0)(0.25,0.5)(0.5,0)
- \pscurve[arrows=-,linewidth=1.5\pslinewidth](0.5,0)(0.75,0.5)(1,0)
- \pnode(-1,0){dipole@1}
- \pnode(1,0){dipole@2}
- \fi\fi\fi\fi%
- \ifPst@variable\psline{->}(-0.75,-0.5)(0.75,0.5)\fi%
- }
+ \pscurve[arrows=-,linewidth=1.5\pslinewidth](-1,0)(-0.75,0.5)(-0.5,0)%
+ \pscurve[arrows=-,linewidth=1.5\pslinewidth](-0.5,0)(-0.25,0.5)(0,0)%
+ \pscurve[arrows=-,linewidth=1.5\pslinewidth](0,0)(0.25,0.5)(0.5,0)%
+ \pscurve[arrows=-,linewidth=1.5\pslinewidth](0.5,0)(0.75,0.5)(1,0)%
+ \pnode(-1,0){dipole@1}%
+ \pnode(1,0){dipole@2}%
+ \fi\fi\fi\fi
+ \ifPst@variable\psline{->}(-0.75,-0.5)(0.75,0.5)\fi
+}
%
\def\pst@draw@Ucc{%
\pnode(-0.5,0){dipole@1}
diff --git a/Master/texmf-dist/tex/generic/pst-optic/pst-optic.tex b/Master/texmf-dist/tex/generic/pst-optic/pst-optic.tex
index 0c06f849b33..c60869c4b4b 100644
--- a/Master/texmf-dist/tex/generic/pst-optic/pst-optic.tex
+++ b/Master/texmf-dist/tex/generic/pst-optic/pst-optic.tex
@@ -1,4 +1,4 @@
-%%%% $Id: pst-optic.tex 903 2024-06-02 06:16:43Z herbert $
+%%%% $Id: pst-optic.tex 1019 2024-10-28 07:59:50Z herbert $
%% This is file `pst-optic.tex',
%%
%% IMPORTANT NOTICE:
@@ -8,8 +8,6 @@
%% Manuel Luque <Mluque5130@aol.com> (France)
%% Herbert Voss <hvoss@tug.org> (Germany)
%%
-%% 2024-06-02
-%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
@@ -30,8 +28,8 @@
\ifx\PSTMultidoLoaded\endinput\else\input multido.tex\fi
\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey\fi
%
-\def\fileversion{1.04}
-\def\filedate{2024/06/02}
+\def\fileversion{1.05}
+\def\filedate{2024/10/28}
\message{`PST-Optic' v\fileversion, \filedate\space (Manuel Luque and Herbert Voss)}
%
\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax
@@ -169,14 +167,27 @@
\definecolor{BleuVerre}{cmyk}{0.2,0,0,0}
\definecolor{JauneVert}{cmyk}{0.3,0,1,0}
\newpsstyle{rayuresJaunes}{fillstyle=hlines,hatchsep=2\pslinewidth,hatchcolor=JauneVert}
-\define@key[psset]{pst-optic}{rayColor}[red]{\pst@getcolor{#1}\psk@optic@rayColor}
+
+\define@key[psset]{pst-optic}{rayColor}[red]{%
+ \pst@getcolor{#1}\psk@optic@rayColor
+ \pst@getcolor{#1}\psk@optic@parallelrayColor
+ \def\psk@optic@paralleltipcolor{#1}%
+ \pst@getcolor{#1}\psk@optic@focalrayColor
+ \def\psk@optic@focaltipcolor{#1}%
+ \pst@getcolor{#1}\psk@optic@centerrayColor
+ \def\psk@optic@centertipcolor{#1}%
+}
+\define@key[psset]{pst-optic}{parallelrayColor}[red]{\pst@getcolor{#1}\psk@optic@parallelrayColor}
+\define@key[psset]{pst-optic}{focalrayColor}[red]{\pst@getcolor{#1}\psk@optic@focalrayColor}
+\define@key[psset]{pst-optic}{centerrayColor}[red]{\pst@getcolor{#1}\psk@optic@centerrayColor}
+
\psset[pst-optic]{rayColor=red}
\define@key[psset]{pst-optic}{rayWidth}[1.5\pslinewidth]{\def\psk@optic@rayWidth{#1}}
\psset[pst-optic]{rayWidth=1.5\pslinewidth}
%
\newpsstyle{opticalAxis}{linewidth=0.5pt,linecolor=black,linestyle=solid}
%
-%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Utility stuff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -491,7 +502,7 @@
\uput[-90](Center'){Center'}
\psdots(Center)
\uput[-90](Center){Center}
- \psset{linecolor=\psk@optic@rayColor}
+ \psset{linecolor=\psk@optic@rayColor} %%%%%%%%%%%%%%%%%%%%%%
\psline[linewidth=1.5\pslinewidth,arrowinset=0]{->}(A)(B)
\ifx\psk@optic@lensType\lensTypeCVG
% the parallel ray
@@ -682,18 +693,21 @@
% dessin de l'image
\psline[linewidth=1.5\pslinewidth,arrowinset=0,linestyle=dashed]{->}(A')(B')
%dessin des rayons
- \psset{linecolor=\psk@optic@rayColor}
- \Arrows[length=16,arrows=-](B)(O)
- \Arrows(B)(I)
- \psline(B)(I)
- \psOutLine[arrows=->,length=1](B')(I){END1}
- \psOutLine[length=5](B')(I){END2}
- \psline[linestyle=dashed](F')(I)
- \Arrows[arrows=->>](B)(I')
- \psline(B)(I')
- \psOutLine[arrows=->>,length=2](B')(I'){END3}
- \psOutLine[length=10](B')(I'){END4}
- \psline[linestyle=dashed](B')(I')
+%% \psset{linecolor=\psk@optic@rayColor}
+ %% center beam
+ \Arrows[linecolor=\psk@optic@centerrayColor,length=16,arrows=-](B)(O)
+ %% parallel beam
+ \Arrows[linecolor=\psk@optic@parallelrayColor](B)(I)
+ \psline[linecolor=\psk@optic@parallelrayColor](B)(I)
+ \psOutLine[linecolor=\psk@optic@parallelrayColor,arrows=->,length=1](B')(I){END1}
+ \psOutLine[linecolor=\psk@optic@parallelrayColor,length=5](B')(I){END2}
+ \psline[linecolor=\psk@optic@parallelrayColor,linestyle=dashed](F')(I)
+ %% focal beam
+ \Arrows[linecolor=\psk@optic@focalrayColor,arrows=->>](B)(I')
+ \psline[linecolor=\psk@optic@focalrayColor](B)(I')
+ \psOutLine[linecolor=\psk@optic@focalrayColor,arrows=->>,length=2](B')(I'){END3}
+ \psOutLine[linecolor=\psk@optic@focalrayColor,length=10](B')(I'){END4}
+ \psline[linecolor=\psk@optic@focalrayColor,linestyle=dashed](B')(I')
%\uput[45](I'){I'}
%\uput[45](I){I}
\uput[\psk@optic@spotA](A){$\mathrm{\psk@optic@nameA}$}%
@@ -713,17 +727,22 @@
% dessin de l'image
\psline[linewidth=1.5\pslinewidth,arrowinset=0]{->}(A')(B')
%dessin des rayons
- \psset{linecolor=\psk@optic@rayColor}
- \pcline(B)(B')
- \Arrows[length=16,arrows=-](B)(O)
- \Arrows(B)(I)
- \psline(B)(I)
- \Arrows[length=10,posStart=0,arrows=-](I)(F')
- \Arrows[posStart=1,arrows=->](I)(F')
- \Arrows[arrows=->>](B)(I')
- \psline(B)(I')(B')
- \Arrows[length=10,arrows=-](I')(B')
- \Arrows[length=2,posStart=0.5,arrows=->>](I')(B')
+% \psset{linecolor=\psk@optic@rayColor}%% No global setting
+ %% Center beam
+ \pcline[linecolor=\psk@optic@centerrayColor](B)(B')%%CMittelpunktsstrahl
+ \Arrows[linecolor=\psk@optic@centerrayColor,length=16,arrows=-](B)(O)
+ \Arrows[linecolor=\psk@optic@centerrayColor](B)(I)
+ %% parallel beam
+ \psline[linecolor=\psk@optic@parallelrayColor,tipcolor=\psk@optic@paralleltipcolor](B)(I)
+ \Arrows[linecolor=\psk@optic@parallelrayColor](B)(I)
+ \Arrows[linecolor=\psk@optic@parallelrayColor,length=10,posStart=0,arrows=-](I)(F')
+ \Arrows[linecolor=\psk@optic@parallelrayColor,posStart=1,arrows=->](I)(F')
+ %% focal beam
+ \psline[linecolor=\psk@optic@focalrayColor](B)(I')(B')
+ \Arrows[linecolor=\psk@optic@focalrayColor,arrows=->>](B)(I')
+ \Arrows[linecolor=\psk@optic@focalrayColor,length=10,arrows=-](I')(B')
+ \Arrows[linecolor=\psk@optic@focalrayColor,length=2,posStart=0.5,
+ arrows=->>,tipcolor=\psk@optic@focaltipcolor](I')(B')
%\uput[-45](I'){I'}
%\uput[45](I){I}
\uput[\psk@optic@spotA](A){$\mathrm{\psk@optic@nameA}$}
@@ -736,7 +755,8 @@
%Lentille convergente : CVG
%(#2) est l'abscisse du centre optique
\def\lens{\@ifnextchar[{\pst@lens}{\pst@lens[]}}
-\def\pst@lens[#1]{{%
+\def\pst@lens[#1]{%
+ \begingroup
\psset[pst-optic,pstricks]{xLeft=-7.5,xRight=7.5,yBottom=-3,yTop=3,#1}%
% \psset[pst-optic,pstricks]{#1}%
\pst@killglue%
@@ -771,7 +791,7 @@
\pnode(! \psk@optic@xRight\space A'B' YO add){I1}
\pnode(! \psk@optic@xRight\space neg A'B' YO add){I2}
\else%
- \pnode(!%
+ \pnode(!
/OF' \psk@optic@focus\space def
/AB \psk@optic@AB\space def
/OA \psk@optic@OA\space def
@@ -812,7 +832,8 @@
\psset{arrows=<->}%
\fi\fi
\psline[linecolor=\psk@optic@lensColor,
- linewidth=\psk@optic@lensWidth,arrowsize=\psk@optic@lensArrowSize,
+ linewidth=2\pslinewidth, %\psk@optic@lensWidth,
+ arrowsize=\psk@optic@lensArrowSize,
arrowinset=\psk@optic@lensArrowInset]%
(! XO -0.5 \psk@optic@lensHeight\space mul
\psk@optic@lensScale\space mul YO add)%
@@ -829,7 +850,8 @@
\pst@drawCVGRays\fi\fi
\fi
\end{pspicture*}%
-}\ignorespaces}
+ \endgroup
+ \ignorespaces}
%
% 25 december 2002 Herbert <voss@perce.de>
% make the lenses dynamical to width _and_ height
@@ -1243,7 +1265,9 @@
\uput[-45](B'){B'}
\fi
\end{pspicture}%
-}\ignorespaces}
+ }%
+ \ignorespaces
+}
%
%
\def\mirrorDVG{\@ifnextchar[{% Herbert Voss 2003/01/05
@@ -1640,12 +1664,12 @@
\pst@getcoor{#8}\pst@tempp
\def\pst@optic@cIn{#6} % refraction number 1
\def\pst@optic@cOut{#7} % refraction number 2
- \pnode(!%
- /YA \pst@tempA exch pop \pst@number\psyunit div def
+ \pnode(!
+ /YA \pst@tempA exch pop \pst@number\psyunit div def
/XA \pst@tempA pop \pst@number\psxunit div def
/YB \pst@tempB exch pop \pst@number\psyunit div def
/XB \pst@tempB pop \pst@number\psxunit div def
- /YC \pst@tempc exch pop \pst@number\psyunit div def
+ /YC \pst@tempc exch pop \pst@number\psyunit div def
/XC \pst@tempc pop \pst@number\psxunit div def
/YD \pst@tempd exch pop \pst@number\psyunit div def
/XD \pst@tempd pop \pst@number\psxunit div def
@@ -1656,8 +1680,11 @@
/dY2 YD YC sub def
/dX2 XD XC sub def
% the gradient of the material (if negativ then it must be the nominator)
- /Gamma dY2 dX2 mul 0 lt {dY2 abs neg dX2 abs}{dY2 dX2} ifelse atan def
-% the perpendicular line is: 90-Gamma
+% if = 0 then substract 180°
+ /Gamma dY2 dX2 mul 0 ge {dY2 dX2}{dY2 abs neg dX2 abs} ifelse atan
+ %dup 0 eq { 180 sub } if
+ def
+% the perpendicular line is: 90°-Gamma
/GammaStrich 90 Gamma sub def
% the angle of the incoming ray
/AlphaStrich dY1 dX1 atan def
@@ -1667,7 +1694,7 @@
% the law of Snell: sin(Alpha)/sin(Beta) = n2/n1
% sin(Beta)>1 is a total reflection instead of a refraction
/sinBeta \pst@optic@cIn\space \pst@optic@cOut\space div Alpha sin mul def
- sinBeta abs 1 le{
+ sinBeta abs 1 le {
/Root 1 sinBeta dup mul sub Sqrt def
/Beta sinBeta Root atan def
}{
@@ -1677,7 +1704,7 @@
/BetaStrich 90 Gamma sub Beta add def
% Determine the intermediate point
XP BetaStrich cos sub
- YP BetaStrich sin add ){#8'}%
+ YP BetaStrich sin add ){#8'}
%\qdisk(#8){5pt}
}\ignorespaces}
%
diff --git a/Master/texmf-dist/tex/generic/pstricks/pstricks.tex b/Master/texmf-dist/tex/generic/pstricks/pstricks.tex
index 66b00657b99..094dcbb232d 100644
--- a/Master/texmf-dist/tex/generic/pstricks/pstricks.tex
+++ b/Master/texmf-dist/tex/generic/pstricks/pstricks.tex
@@ -88,8 +88,8 @@
\let\pgfforeach\foreach
%
-\def\fileversion{3.20}
-\def\filedate{2024/07/09}
+\def\fileversion{3.21}
+\def\filedate{2024/11/16}
\pst@addfams{pstricks}
%
%\define@boolkey[psset]{pstricks}[Pst@]{useURWfonts}[true]{}
@@ -4109,6 +4109,36 @@ pop
\define@key[psset]{pstricks}{margin}[0pt]{\ps@readmargin#1,,,,\@nil}
\psset[pstricks]{margin=0pt}
%
+
+\ExplSyntaxOn
+\define@key[psset]{pstricks}{alt}[]{\tl_set:Ne\l__tag_graphic_alt_tl{\text_purify:n{#1}}}
+%\define@boolkey[psset]{pstricks}[]{artifact}[true]{}
+\define@key[psset]{pstricks}{artifact}{%
+ \bool_set_true:N \l__tag_graphic_artifact_bool
+ \bool_set_false:N \l__tag_graphic_BBox_bool
+}
+\define@key[psset]{pstricks}{actualtext}[]{%
+ \tl_set:Ne\l__tag_graphic_actual_tl{\text_purify:n{#1}}
+ \bool_set_false:N \l__tag_graphic_BBox_bool
+}
+\define@key[psset]{pstricks}{correct-BBox}{%
+ \bool_set_true:N \l__tag_graphic_bboxcorr_bool
+ \seq_set_split:Nnn\l__tag_graphic_bboxcorr_seq{~}{#1~0pt~0pt~0pt~0pt}%
+}
+\define@key[psset]{pstricks}{tag}[]{%
+ \str_case:nnF {#1}{
+ {artifact}
+ {
+ \bool_set_true:N \l__tag_graphic_artifact_bool
+ \bool_set_false:N \l__tag_graphic_BBox_bool
+ }
+ {false}{\tag_stop:}
+ }
+ {\tl_set:Nn\l__tag_graphic_struct_tl{#1}}
+ }
+
+\ExplSyntaxOff
+
\newcount\ps@imagectr
\ps@imagectr=0
%\newif\ifPst@findcoor
@@ -4120,7 +4150,7 @@ pop
\def\pst@@picture[#1]{\@ifnextchar({\pst@@picture@i[#1]}{\pst@@picture@@i[#1]}}%
\def\pst@@picture@@i[#1]{%
\def\pic@coor{(0,0)(0,0)}%
-% \gdef\pscoor{(10,10)}%
+ \gdef\pscoor{(10,10)}%
\ifPst@calcframe
\typeout{>>>Check for file \jobname-\the\numexpr\ps@imagectr+1.psaux}%
\IfFileExists{\jobname-\the\numexpr\ps@imagectr+1.psaux}
diff --git a/Master/texmf-dist/tex/generic/tex4ht/IEEEtran.4ht b/Master/texmf-dist/tex/generic/tex4ht/IEEEtran.4ht
index 99472b5b71f..6cdd3681200 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/IEEEtran.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/IEEEtran.4ht
@@ -1,35 +1,32 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% IEEEtran.4ht 2009-05-21-09:32 %
-% Copyright (C) 2009 Eitan M. Gurari %
-% %
-% This work may be distributed and/or modified under the %
-% conditions of the LaTeX Project Public License, either %
-% version 1.3c of this license or (at your option) any %
-% later version. The latest version of this license is %
-% in %
-% http://www.latex-project.org/lppl.txt %
-% and version 1.3c or later is part of all distributions %
-% of LaTeX version 2005/12/01 or later. %
-% %
-% This work has the LPPL maintenance status "maintained".%
-% %
-% This Current Maintainer of this work %
-% is Eitan M. Gurari. %
-% %
-% If you modify this program your changing its signature %
-% with a directive of the following form will be %
-% appreciated. %
-% \message{signature} %
-% %
-% gurari@cse.ohio-state.edu %
-% http://www.cse.ohio-state.edu/~gurari %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\immediate\write-1{version 2009-05-21-09:32}
+% IEEEtran.4ht (2024-12-08-07:56), generated from tex4ht-4ht.tex
+% Copyright (C) 2009-2009 Eitan M. Gurari
+% Copyright 2009-2024 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% https://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <https://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2024-12-08-07:56}
\let\twocolumn\onecolumn
\@restonecoltrue\onecolumn
\let\@restonecolfalse\@restonecoltrue
+\ifCLASSOPTIONcompsoc\else
+\def\thesubsection{\thesection-\Alph{subsection}} % I-A
+\fi
+
\Hinput{IEEEtran}
\endinput
diff --git a/Master/texmf-dist/tex/generic/tex4ht/amsfonts.4ht b/Master/texmf-dist/tex/generic/tex4ht/amsfonts.4ht
index 6cac5658c2c..fca71f54440 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/amsfonts.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/amsfonts.4ht
@@ -1,6 +1,5 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% amsfonts.4ht 2024-08-13-13:15 %
-% Copyright (C) 2001-2009 Eitan M. Gurari %
+% amsfonts.4ht (2024-11-03-05:51), generated from tex4ht-4ht.tex
+% Copyright 2001-2009 Eitan M. Gurari
% Copyright 2009-2024 TeX Users Group
%
% This work may be distributed and/or modified under the
@@ -18,6 +17,8 @@
%
% If you modify this program, changing the
% version identification would be appreciated.
+\immediate\write-1{version 2024-11-03-05:51}
+
\NewConfigure{mathbb}{2}
\def\:temp#1{{\a:mathbb \o:mathbb:{#1}\b:mathbb}}
\HLet\mathbb\:temp
diff --git a/Master/texmf-dist/tex/generic/tex4ht/amsmath.4ht b/Master/texmf-dist/tex/generic/tex4ht/amsmath.4ht
index 4367f0d7c74..be40007444f 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/amsmath.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/amsmath.4ht
@@ -1,23 +1,23 @@
-% amsmath.4ht (2024-05-07-13:28), generated from tex4ht-4ht.tex
+% amsmath.4ht (2025-01-08-13:38), generated from tex4ht-4ht.tex
% Copyright 1997-2009 Eitan M. Gurari
-% Copyright 2009-2024 TeX Users Group
+% Copyright 2009-2025 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
-% is the TeX4ht Project <http://tug.org/tex4ht>.
+% is the TeX4ht Project <https://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2024-05-07-13:28}
+\immediate\write-1{version 2025-01-08-13:38}
\HRestore\cases
\HRestore\matrix
@@ -312,25 +312,32 @@
\RecallMkHalignConfig \restorecolumn@
\egroup \b:start@aligned}
\HLet\endaligned\:tempc
-\def\:temp{%
- \let\@testopt\alignsafe@testopt
- \futurelet\:temp\aligned:a}
-\def\aligned:a{\ifx [\:temp \expandafter\aligned:b
- \else \def\:temp{\aligned:b[c]}\expandafter\:temp \fi}
-\def\aligned:b[#1]{%
- \al:gned{aligned}{#1}\m@ne}
-\HLet\aligned\:temp
\def\reg:aligned{\reg:start@aligned}
\NewConfigure{aligned}{6}
-\def\:temp{\futurelet\:temp\alignedat:a}
-\def\alignedat:a{\ifx [\:temp \expandafter\alignedat:b
- \else \def\:temp{\alignedat:b[c]}\expandafter\:temp \fi}
-\def\alignedat:b[#1]{%
- \let\@testopt\alignsafe@testopt
- \al:gned{alignedat}{#1}\m@ne}
-\HLet\alignedat\:temp
+\def\Hlcr{z}
+%% \Hlcr macro stores math environment optional possitionig argument
+%% and can be used for custom setup. For example:
+%% \Configure{gathered}
+%% {\HCode{<\a:mathml mtable\space displaystyle="true"
+%% \mml:class="gathered"%
+%% \if t\Hlcr\space\a:mathml align="axis 1"\fi%
+%% \if b\Hlcr\space\a:mathml align="axis -1"\fi%
+%% >}}
+%% {}...
+
+\def\:temp#1{%
+ \def\Hlcr{#1}%
+ \let\@testopt\alignsafe@testopt
+ \expandafter\al:gned\expandafter{\@currenvir}{#1}}
+\HLet\start@aligned\:temp
+
\def\reg:alignedat{\reg:start@aligned}
\NewConfigure{alignedat}{6}
+\def\gathered:a[#1]{\def\Hlcr{#1}\pic:MkHalign{gathered}[#1]}
+\def\:temp{%
+ \kernel@ifnextchar[{\gathered:a}{\gathered:a[c]}%
+ }
+\HLet\gathered\:temp
\catcode`\#13 \catcode`\!6
\def\reg:gathered[!1]{%
\RIfM@\else
@@ -508,7 +515,8 @@
%
\anc:lbl r{}%
}}
-\def\make@df@tag@@@#1{\gdef\df@tag{\tagform@{#1}%
+\ExplSyntaxOn
+\def\make@df@tag@@@#1{\gdef\df@tag{\tagform@{\tl_rescan:nn{}{#1}}%
\toks@\@xp{\p@equation{#1}}\edef\@currentlabel{\the\toks@}%
\let\cnt:currentlabel\@currentlabel
\def\:@currentlabel{\ifx \cnt:currentlabel\@currentlabel
@@ -516,6 +524,7 @@
%
\anc:lbl r{}%
}}
+\ExplSyntaxOff
\:CheckOption{new-accents} \if:Option \else
\HLet\Hat\hat
diff --git a/Master/texmf-dist/tex/generic/tex4ht/bigfoot-hooks.4ht b/Master/texmf-dist/tex/generic/tex4ht/bigfoot-hooks.4ht
new file mode 100644
index 00000000000..e89c60a5d7c
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/bigfoot-hooks.4ht
@@ -0,0 +1,24 @@
+% bigfoot-hooks.4ht (2024-11-05-12:30), generated from tex4ht-4ht.tex
+% Copyright 2024 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <http://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2024-11-05-12:30}
+
+\:dontusepackage{bigfoot}
+\RequirePackage{manyfoot}
+\endinput
+
diff --git a/Master/texmf-dist/tex/generic/tex4ht/bigfoot.4ht b/Master/texmf-dist/tex/generic/tex4ht/bigfoot.4ht
new file mode 100644
index 00000000000..71c7bbe849d
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/bigfoot.4ht
@@ -0,0 +1,25 @@
+% bigfoot.4ht (2024-11-05-12:30), generated from tex4ht-4ht.tex
+% Copyright 2024 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <http://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2024-11-05-12:30}
+
+
+
+\Hinput{bigfoot}
+\endinput
+
diff --git a/Master/texmf-dist/tex/generic/tex4ht/caption.4ht b/Master/texmf-dist/tex/generic/tex4ht/caption.4ht
index 09501b5ff32..5cecd085c3b 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/caption.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/caption.4ht
@@ -1,23 +1,23 @@
-% caption.4ht (2022-11-22-14:29), generated from tex4ht-4ht.tex
+% caption.4ht (2024-11-11-13:40), generated from tex4ht-4ht.tex
% Copyright 2007-2009 Eitan M. Gurari
-% Copyright 2009-2022 TeX Users Group
+% Copyright 2009-2024 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
-% is the TeX4ht Project <http://tug.org/tex4ht>.
+% is the TeX4ht Project <https://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2022-11-22-14:29}
+\immediate\write-1{version 2024-11-11-13:40}
\let\sv:toclof\toclof
\def\toclof#1#2#3{%
@@ -45,6 +45,10 @@
}\fi%
}
+\ifdefined\cptA:\else
+\c:def\cptA:{}\c:def\cptB:{}%
+\c:def\cptC:{}\c:def\cptD:{}
+\fi
\long\def\@makecaption#1#2{%
\xdef\continuedfloat@captype{\@captype}%
\caption@make@above%
diff --git a/Master/texmf-dist/tex/generic/tex4ht/chemfig.4ht b/Master/texmf-dist/tex/generic/tex4ht/chemfig.4ht
index b2943a9df9e..f6bacc8438d 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/chemfig.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/chemfig.4ht
@@ -1,5 +1,5 @@
-% chemfig.4ht (2024-02-14-09:16), generated from tex4ht-4ht.tex
-% Copyright 2024 TeX Users Group
+% chemfig.4ht (2025-01-18-13:42), generated from tex4ht-4ht.tex
+% Copyright 2024-2025 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -16,7 +16,7 @@
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2024-02-14-09:16}
+\immediate\write-1{version 2025-01-18-13:42}
\ExplSyntaxOn
\NewConfigure{chemname}{3}
@@ -40,6 +40,13 @@
\HLet\CF_chemnameb\:tempa
\ExplSyntaxOff
+\NewConfigure{chemfigscheme}{2}
+\Configure{chemfigscheme}{\Picture+{}}{\EndPicture}
+\ExplSyntaxOn
+\pend:def\schemestart{\a:chemfigscheme}
+\append:def\CF_schemestop{\b:chemfigscheme}
+\ExplSyntaxOff
+
\Hinput{chemfig}
\endinput
diff --git a/Master/texmf-dist/tex/generic/tex4ht/colortbl-hooks.4ht b/Master/texmf-dist/tex/generic/tex4ht/colortbl-hooks.4ht
new file mode 100644
index 00000000000..0f3636af023
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/colortbl-hooks.4ht
@@ -0,0 +1,52 @@
+% colortbl-hooks.4ht (2024-09-30-13:40), generated from tex4ht-4ht.tex
+% Copyright 2024 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <http://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2024-09-30-13:40}
+
+\:AtEndOfPackage{%
+% default hline color is black
+\def\hline:color{000}
+% save rule color in format usable in CSS
+\newcommand\tmp:arrayrulecolor[2][named]{%
+\ifvoid\@arstrutbox% test if we are inside a tabular environment
+\convertcolorspec{#1}{#2}{HTML}\:tmp\global\let\hline:color\:tmp% we are not
+\else%
+\noalign{\convertcolorspec{#1}{#2}{HTML}\:tmp\global\let\hline:color\:tmp}% we are
+\fi
+}
+% \HLet doesn't work in the preamble, so we need to work around it
+\let\o:arrayrulecolor:\arrayrulecolor
+\let\arrayrulecolor\tmp:arrayrulecolor
+
+\def\convert:colorspec#1 #2 #3 #4{%
+ \edef\current:color{%
+ \ifx\relax#1\relax\else%
+ #1\ifx\relax#2\relax\else%
+ , #2\ifx\relax#3\relax\else%
+ , #3\ifx\relax#4\relax\else%
+ , #4%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ }%
+}
+
+
+}
+
diff --git a/Master/texmf-dist/tex/generic/tex4ht/colortbl.4ht b/Master/texmf-dist/tex/generic/tex4ht/colortbl.4ht
index 50543a2b952..07844ed404f 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/colortbl.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/colortbl.4ht
@@ -1,23 +1,23 @@
-% colortbl.4ht (2022-07-03-14:21), generated from tex4ht-4ht.tex
+% colortbl.4ht (2024-09-30-13:40), generated from tex4ht-4ht.tex
% Copyright 1997-2009 Eitan M. Gurari
-% Copyright 2009-2022 TeX Users Group
+% Copyright 2009-2024 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
-% is the TeX4ht Project <http://tug.org/tex4ht>.
+% is the TeX4ht Project <https://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2022-07-03-14:21}
+\immediate\write-1{version 2024-09-30-13:40}
\RequirePackage{xcolor}
@@ -95,31 +95,8 @@
\gdef\CT@row@color{\CT@color{#1}}%
\CT@rowc}
\NewConfigure{rowcolor}{1}
-% default hline color is black
-\def\hline:color{000}
-% save rule color in format usable in CSS
-\newcommand\tmp:arrayrulecolor[2][named]{%
-\ifvoid\@arstrutbox% test if we are inside a tabular environment
-\convertcolorspec{#1}{#2}{HTML}\:tmp\global\let\hline:color\:tmp% we are not
-\else%
-\noalign{\convertcolorspec{#1}{#2}{HTML}\:tmp\global\let\hline:color\:tmp}% we are
-\fi
-}
+\HRestore\arrayrulecolor
\HLet\arrayrulecolor\tmp:arrayrulecolor
-\def\convert:colorspec#1 #2 #3 #4{%
- \edef\current:color{%
- \ifx\relax#1\relax\else%
- #1\ifx\relax#2\relax\else%
- , #2\ifx\relax#3\relax\else%
- , #3\ifx\relax#4\relax\else%
- , #4%
- \fi%
- \fi%
- \fi%
- \fi%
- }%
-}
-
\def\save:color#1 #2//{%
\convert:colorspec#2 {} {} {} {}
\convertcolorspec{#1}{\current:color}{HTML}\tmp:col
diff --git a/Master/texmf-dist/tex/generic/tex4ht/fancyvrb.4ht b/Master/texmf-dist/tex/generic/tex4ht/fancyvrb.4ht
index 4a6d75c1644..a63dd7942e3 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/fancyvrb.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/fancyvrb.4ht
@@ -1,4 +1,4 @@
-% fancyvrb.4ht (2024-03-27-14:07), generated from tex4ht-4ht.tex
+% fancyvrb.4ht (2024-10-04-14:44), generated from tex4ht-4ht.tex
% Copyright 1997-2009 Eitan M. Gurari
% Copyright 2009-2024 TeX Users Group
%
@@ -6,18 +6,18 @@
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
-% is the TeX4ht Project <http://tug.org/tex4ht>.
+% is the TeX4ht Project <https://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2024-03-27-14:07}
+\immediate\write-1{version 2024-10-04-14:44}
\pend:def\FV@FormattingPrep{\let\fv:color\empty
@@ -45,7 +45,11 @@
\ifx \fv:color\empty \else{%
\let\HColor\fv:color \a:fancyvrbcolor%
}\fi
- \ifx \FancyVerbFillColor\relax \else%
+ \ifx \FancyVerbFillColor\relax \ifx\FancyVerbBackgroundColor\relax\else%
+ \ifdefined\FancyVerbBackgroundColor% this extra check is needed for \BVerbatimInput
+ \:fvcolor \b:fancyvrbcolor \color{\FancyVerbBackgroundColor}!*?: %
+ \fi%
+ \fi\else%
\:fvcolor \b:fancyvrbcolor \FancyVerbFillColor!*?: %
\fi
\ifx \FancyVerbRuleColor\relax \else%
diff --git a/Master/texmf-dist/tex/generic/tex4ht/french.4ht b/Master/texmf-dist/tex/generic/tex4ht/french.4ht
index adbaac273f9..47b72bbb8b2 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/french.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/french.4ht
@@ -1,30 +1,23 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% french.4ht 2009-05-21-09:32 %
-% Copyright (C) 1999--2009 Eitan M. Gurari %
-% %
-% This work may be distributed and/or modified under the %
-% conditions of the LaTeX Project Public License, either %
-% version 1.3c of this license or (at your option) any %
-% later version. The latest version of this license is %
-% in %
-% http://www.latex-project.org/lppl.txt %
-% and version 1.3c or later is part of all distributions %
-% of LaTeX version 2005/12/01 or later. %
-% %
-% This work has the LPPL maintenance status "maintained".%
-% %
-% This Current Maintainer of this work %
-% is Eitan M. Gurari. %
-% %
-% If you modify this program your changing its signature %
-% with a directive of the following form will be %
-% appreciated. %
-% \message{signature} %
-% %
-% gurari@cse.ohio-state.edu %
-% http://www.cse.ohio-state.edu/~gurari %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\immediate\write-1{version 2009-05-21-09:32}
+% french.4ht 2024-11-03-05:51, generated from tex4ht-4ht.tex
+% Copyright 1999-2009 Eitan M. Gurari
+% Copyright 2009-2024 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% https://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <https://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2024-11-03-05:51}
\expandafter\ifx \csname @s@ORI\endcsname \relax
\else
@@ -55,6 +48,8 @@
\Configure{special}{\csname @s@ORI\endcsname}
\fi
+\DeclareRobustCommand*{\FB@emptypart}{}
+
\Hinput{french}
\endinput
diff --git a/Master/texmf-dist/tex/generic/tex4ht/fvextra.4ht b/Master/texmf-dist/tex/generic/tex4ht/fvextra.4ht
new file mode 100644
index 00000000000..342720502fc
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/fvextra.4ht
@@ -0,0 +1,33 @@
+% fvextra.4ht (2024-11-27-13:11), generated from tex4ht-4ht.tex
+% Copyright 2024 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <http://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2024-11-27-13:11}
+
+
+\define@booleankey{FV}{breaklines}%
+ {\booltrue{FV@breaklines}%
+ %\let\FV@ListProcessLine\FV@ListProcessLine@NoBreak
+}%
+ {\boolfalse{FV@breaklines}%
+ %\let\FV@ListProcessLine\FV@ListProcessLine@NoBreak
+}
+
+
+\Hinput{fvextra}
+\endinput
+
diff --git a/Master/texmf-dist/tex/generic/tex4ht/glossaries.4ht b/Master/texmf-dist/tex/generic/tex4ht/glossaries.4ht
index 2157814cc70..d0e12a60c89 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/glossaries.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/glossaries.4ht
@@ -1,25 +1,25 @@
-% glossaries.4ht (2022-12-04-09:02), generated from tex4ht-4ht.tex
+% glossaries.4ht (2024-12-06-14:38), generated from tex4ht-4ht.tex
% Copyright 2008-2009 Eitan M. Gurari
-% Copyright 2009-2022 TeX Users Group
+% Copyright 2009-2024 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
-% is the TeX4ht Project <http://tug.org/tex4ht>.
+% is the TeX4ht Project <https://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2022-12-04-09:02}
+\immediate\write-1{version 2024-12-06-14:38}
-\def\:tempc#1#2{\Link{#1}{}#2\EndLink}
+\def\:tempc#1#2{\Link[ class="glossary"]{#1}{}#2\EndLink}
\HLet\@glslink\:tempc
\def\:tempc#1#2{\Link{}{#1}\EndLink#2}
\HLet\@glstarget\:tempc
@@ -39,6 +39,18 @@
\fi
}
\HLet\@gls@removespaces\:tempc
+\NewConfigure{glossentry}{2}
+
+% Add formatting for glossary entries only if the environment used for printing
+% is not description. It would lead to errors otherwise.
+\def\:glsdescriptionname{description}
+\def\:tempa#1{\ifx\@currenvir\:glsdescriptionname\o:glossentry:{#1}\else\a:glossentry\o:glossentry:{#1}\b:glossentry\fi}
+\HLet\glossentry\:tempa
+
+\NewConfigure{glsgroupskip}{1}
+\def\:tempa{\a:glsgroupskip}
+\HLet\glsgroupskip\:tempa
+
\Configure{@begin}{theglossary}{
\Configure{theindex}{}{}{}{}{}{}{}{}{}{}
diff --git a/Master/texmf-dist/tex/generic/tex4ht/html-mml.4ht b/Master/texmf-dist/tex/generic/tex4ht/html-mml.4ht
index c33bacaa3ff..cb3eee7e75f 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/html-mml.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/html-mml.4ht
@@ -1,5 +1,5 @@
-% html-mml.4ht (2024-08-11-08:31), generated from tex4ht-mathml.tex
-% Copyright 2009-2024 TeX Users Group
+% html-mml.4ht (2025-01-09-13:26), generated from tex4ht-mathml.tex
+% Copyright 2009-2025 TeX Users Group
% Copyright 1999-2009 Eitan M. Gurari
%
% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2024-08-11-08:31}
+\immediate\write-1{version 2025-01-09-13:26}
\exit:ifnot{amsmath,%
array,%
@@ -233,7 +233,8 @@ tex4ht}
\Css{.hline-mtd, .array-hline td{
display:none
}}
-\Css{.array-hline + .array-row:last-child{display:none;}}
+% why was the following line here? it hides last row even if it contains content
+% \Css{.array-hline + .array-row:last-child{display:none;}}
\Css{.array-hline:first-child{border-bottom:1px solid black;border-top:none;}}
\:CheckOption{fonts} \if:Option
\Configure{texttt}
@@ -615,6 +616,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsmath}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -756,7 +758,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
\HCode{</td><td class="eq-no">}%
}
{\ifvmode \IgnorePar\fi\EndP \HCode{</td></tr></table>}%
- \ShowPar\IgnoreIndent\par}
+ \par\ShowPar\noindent}
\Configure{equation*}
{\ifvmode \IgnorePar\fi\EndP
\HCode{<table class="equation-star"><tr><td>}%
@@ -904,7 +906,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{array}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1000,8 +1001,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
-
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{color}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1092,6 +1091,9 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{rlbabel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1514,5 +1516,24 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\endinput
diff --git a/Master/texmf-dist/tex/generic/tex4ht/html4-math.4ht b/Master/texmf-dist/tex/generic/tex4ht/html4-math.4ht
index 21c5761a00e..83eb47206c6 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/html4-math.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/html4-math.4ht
@@ -1,23 +1,23 @@
-% html4-math.4ht (2022-10-25-13:59), generated from tex4ht-html4.tex
-% Copyright 2009-2022 TeX Users Group
+% html4-math.4ht (2024-09-27-10:13), generated from tex4ht-html4.tex
+% Copyright 2009-2024 TeX Users Group
% Copyright 1999-2009 Eitan M. Gurari
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
-% is the TeX4ht Project <http://tug.org/tex4ht>.
+% is the TeX4ht Project <https://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2022-10-25-13:59}
+\immediate\write-1{version 2024-09-27-10:13}
\exit:ifnot{accents,%
amsfonts,%
@@ -327,16 +327,22 @@ ushort}
};
}
\fi
+\NewConfigure{MathjaxInline}{2}
+\NewConfigure{MathjaxBlock}{2}
+\Configure{MathjaxInline}{\HCode{<span class="mathjax-inline">}}{\HCode{</span>}}
+\Configure{MathjaxBlock}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="mathjax-block">}}{\HCode{</div>}}
+\Configure{MathjaxEnv}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="mathjax-env mathjax-\@currenvir">}}{\HCode{</div>}}
+
\Configure{@HEAD}{\HCode{<script>window.MathJax = \a:MathJaxConfig</script>\Hnewline}}
\Configure{MathjaxSource}{https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js}
-\Configure{@HEAD}{\HCode{ <script type="text/javascript" async="async" id="MathJax-script" src="\a:MathjaxSource"></script> \Hnewline}}
+\Configure{@HEAD}{\ifx\a:MathjaxSource\@empty\else\HCode{<script type="text/javascript" async="async" id="MathJax-script" src="\a:MathjaxSource"></script> \Hnewline}\fi}
\edef\:RestoreMathjaxCatcodes{\catcode`\noexpand \&=\the\catcode`\&}
\def\:HandleMathjaxCatcodes{\edef\:RestoreMathjaxCatcodes{\catcode`\noexpand \&=\the\catcode`\&}\catcode`\&=11}
-\Configure{$}{\:HandleMathjaxCatcodes}{\:RestoreMathjaxCatcodes}{\expandafter\AltMathOne}
-\Configure{$$}{\:HandleMathjaxCatcodes}{\:RestoreMathjaxCatcodes}{\expandafter\AltlDisplayDollars}
-% for some reason, it is necessary to specify the catcode change directly in the configuration
-\Configure{()}{\:HandleMathjaxCatcodes\catcode`\&=11\AltlMath}{\:RestoreMathjaxCatcodes}
-\Configure{[]}{\:HandleMathjaxCatcodes\catcode`\&=11\AltlDisplay}{\:RestoreMathjaxCatcodes}
+\Configure{$}{\a:MathjaxInline\:HandleMathjaxCatcodes}{\:RestoreMathjaxCatcodes\b:MathjaxInline}{\expandafter\AltMathOne}
+\Configure{()}{\a:MathjaxInline\:HandleMathjaxCatcodes\catcode`\&=11\AltlMath}{\:RestoreMathjaxCatcodes\b:MathjaxInline}
+\Configure{$$}{\a:MathjaxBlock\:HandleMathjaxCatcodes}{\:RestoreMathjaxCatcodes\b:MathjaxBlock}{\expandafter\AltlDisplayDollars}
+\Configure{[]}{\a:MathjaxBlock\:HandleMathjaxCatcodes\catcode`\&=11\AltlDisplay}{\:RestoreMathjaxCatcodes\b:MathjaxBlock}
+
\fi
\NewConfigure{bar-css}{2}
@@ -470,8 +476,6 @@ ushort}
-
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsmath}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -846,6 +850,8 @@ ushort}
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{plain}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1007,7 +1013,6 @@ ushort}
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{array}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1076,6 +1081,14 @@ ushort}
+
+
+
+
+
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{eplain}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1120,6 +1133,8 @@ ushort}
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{fleqn}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1151,6 +1166,7 @@ ushort}
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{gauss}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1346,6 +1362,32 @@ ushort}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{accents}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1379,7 +1421,6 @@ ushort}
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{ushort}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1441,6 +1482,7 @@ ushort}
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{cancel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1485,7 +1527,6 @@ ushort}
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{th4}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1591,5 +1632,18 @@ ushort}
+
+
+
+
+
+
+
+
+
+
+
+
+
\endinput
diff --git a/Master/texmf-dist/tex/generic/tex4ht/html4.4ht b/Master/texmf-dist/tex/generic/tex4ht/html4.4ht
index 7672534dff3..4138cc3c904 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/html4.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/html4.4ht
@@ -1,4 +1,4 @@
-% html4.4ht (2024-09-09-13:35), generated from tex4ht-html4.tex
+% html4.4ht (2024-12-04-13:41), generated from tex4ht-html4.tex
% Copyright 2009-2024 TeX Users Group
% Copyright 1997-2009 Eitan M. Gurari
%
@@ -17,7 +17,7 @@
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2024-09-09-13:35}
+\immediate\write-1{version 2024-12-04-13:41}
\exit:ifnot{8859-6,%
CJK,%
@@ -117,12 +117,14 @@ foils,%
fontspec,%
framed,%
francais,%
+french,%
frenchb,%
g-brief,%
galician,%
german,%
germanb,%
gloss,%
+glossaries,%
glossary,%
go,%
graphics,%
@@ -152,6 +154,7 @@ longtable,%
ltugboat,%
ltugproc,%
ltxguide,%
+lua-ul,%
manju,%
manmac,%
marginnote,%
@@ -1482,9 +1485,9 @@ switches of tex4ht.c)
{\PopMacro\end:itm \global\let\end:itm \end:itm
\ifvmode \IgnorePar\fi
\EndP\HCode{</li></ul>}\ShowPar}
- {\end:itm \global\def\end:itm{\EndP\Tg</li>}\HCode{<li class="\getClass{li}itemize"><span class="itemizeHead" aria-hidden="true">}\afterGetClass{li}}
- {\HCode{</span>}\par\ShowPar
-}
+ {\end:itm \global\def\end:itm{\EndP\Tg</li>}\HCode{<li class="\getClass{li}itemize">}\par\ShowPar
+\HCode{<span class="itemizeHead" aria-hidden="true">}\afterGetClass{li}}
+ {\HCode{</span>}}
\Css{.itemizeHead{float: left; margin-left: -1em; width: 1em;}}
\Css{li.itemize{list-style: none;}}
\fi
@@ -3008,7 +3011,7 @@ j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
{}
{\xdef\col:Css{\col:Css
border-\ifnum \ar:cnt=0 left\else right\fi
- :solid black 0.4pt;}%
+ :1px solid \VBorder:color;}%
}{}{}%
}
{\ifx \col:Css\empty \else
@@ -3106,6 +3109,7 @@ j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
\Configure{arrayparbox}{\ShowPar}
\fi
\let\VBorder\empty \let\AllColMargins\empty
+\def\VBorder:color{black}
\Configure{VBorder}
{\let\VBorder\empty \let\AllColMargins\empty
\global\let\GROUPS\empty \HAssign\NewGroup = 0
@@ -3115,10 +3119,10 @@ j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
% put vertical border for a column
\ifnum\ar:cnt > 0%
% in all other cases, we should put right border
- \Css{\#TBL-\TableNo-\ar:cnt {border-right:1px solid black;}}%
+ \Css{\#TBL-\TableNo-\ar:cnt {border-right:1px solid \VBorder:color;}}%
\else%
% columns are numbered from 1. if \ar:cnt == 0 then it is the left border
- \Css{\#TBL-\TableNo-1{border-left: 1px solid black;}}%
+ \Css{\#TBL-\TableNo-1{border-left: 1px solid \VBorder:color;}}%
\fi%
}
{\Advance:\NewGroup by 1
@@ -3129,8 +3133,8 @@ j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
{\xdef\AllColMargins{\AllColMargins 0}}
\Configure{HBorder}
{<tr\Hnewline class="hline">} {<td><hr\xml:empty></td>} {</tr>}
- {<tr\Hnewline class="cline">}
- {<td></td>} {<td><hr\xml:empty></td>} {</tr>}
+ {<tr\Hnewline class="cline">}
+ {<td></td>} {<td style="border-top:1px solid \#\hline:color;"></td>} {</tr>}
{<tr\Hnewline class="vspace" style="font-size:\HBorderspace">}
{<td\Hnewline>\string&nbsp;</td>}
{</tr>}
@@ -3141,7 +3145,8 @@ j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
\Css{.hline hr, .cline hr{border:none;border-top:1px solid black;}}
\Css{.hline {border-top: 1px solid black;}}
\Css{.hline + .vspace:last-child{display:none;}}
-\Css{.hline:first-child{border-bottom:1px solid black;border-top:none;}}
+% why was there this rule? it adds unnecessary extra rule at the top of tables
+% \Css{.hline:first-child{border-bottom:1px solid black;border-top:none;}}
\def\putVBorder{\expandafter\put:VBorder\VBorder</>!*?: }
\def\put:VBorder#1</#2>#3!*?: {\def\:temp{#2}\ifx\:temp\empty
\HCode{\VBorder}%
@@ -11379,6 +11384,7 @@ j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{lettrine}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -11431,7 +11437,6 @@ j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{graphics}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -11628,7 +11633,6 @@ height="\expandafter\int:pt\the\Gin@req@height!*?: "
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{graphicx}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -14243,6 +14247,7 @@ s{015B}u{00FA}y{00FD}z{017A}j{FFFD}J{FFDD}\i{00ED}\j{FFFD}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsbook}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -19465,7 +19470,6 @@ s{015B}u{00FA}y{00FD}z{017A}j{FFFD}J{FFDD}\i{00ED}\j{FFFD}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsthm}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -19523,6 +19527,8 @@ s{015B}u{00FA}y{00FD}z{017A}j{FFFD}J{FFDD}\i{00ED}\j{FFFD}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsppt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -19646,6 +19652,7 @@ s{015B}u{00FA}y{00FD}z{017A}j{FFFD}J{FFDD}\i{00ED}\j{FFFD}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{babel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -19953,7 +19960,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{plain}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -20576,7 +20582,21 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ConfigureHinput{glossaries}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \Configure{glossentry}
+{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="glossary">}}
+{\ifvmode\IgnorePar\fi\EndP\HCode{</div>}}
+
+\Configure{glsgroupskip}{\ifvmode\Ignore\Par\fi\EndP\HCode{<div class="glsgroupskip"></div>\Hnewline}}
+\Css{.glsgroupskip{margin-bottom:1rem;}}
+\Css{.glsgroupskip + .glsgroupskip{margin-bottom: 0;}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\endinput\empty\empty\empty\empty\empty\empty
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{glossary}
@@ -20591,6 +20611,7 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{letter}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -20705,6 +20726,7 @@ Y{0178}\i{00EF}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{seslideb}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -21004,7 +21026,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{array}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -21038,7 +21059,7 @@ Y{0178}\i{00EF}%
{}
{\xdef\col:Css{\col:Css
border-\ifnum \ar:cnt=0 left\else right\fi
- :solid black 0.4pt;}%
+ :1px solid \VBorder:color;}%
}{}{}%
}
{\ifx \col:Css\empty \else
@@ -21136,6 +21157,7 @@ Y{0178}\i{00EF}%
\Configure{arrayparbox}{\ShowPar}
\fi
\let\VBorder\empty \let\AllColMargins\empty
+\def\VBorder:color{black}
\Configure{VBorder}
{\let\VBorder\empty \let\AllColMargins\empty
\global\let\GROUPS\empty \HAssign\NewGroup = 0
@@ -21145,10 +21167,10 @@ Y{0178}\i{00EF}%
% put vertical border for a column
\ifnum\ar:cnt > 0%
% in all other cases, we should put right border
- \Css{\#TBL-\TableNo-\ar:cnt {border-right:1px solid black;}}%
+ \Css{\#TBL-\TableNo-\ar:cnt {border-right:1px solid \VBorder:color;}}%
\else%
% columns are numbered from 1. if \ar:cnt == 0 then it is the left border
- \Css{\#TBL-\TableNo-1{border-left: 1px solid black;}}%
+ \Css{\#TBL-\TableNo-1{border-left: 1px solid \VBorder:color;}}%
\fi%
}
{\Advance:\NewGroup by 1
@@ -21159,8 +21181,8 @@ Y{0178}\i{00EF}%
{\xdef\AllColMargins{\AllColMargins 0}}
\Configure{HBorder}
{<tr\Hnewline class="hline">} {<td><hr\xml:empty></td>} {</tr>}
- {<tr\Hnewline class="cline">}
- {<td></td>} {<td><hr\xml:empty></td>} {</tr>}
+ {<tr\Hnewline class="cline">}
+ {<td></td>} {<td style="border-top:1px solid \#\hline:color;"></td>} {</tr>}
{<tr\Hnewline class="vspace" style="font-size:\HBorderspace">}
{<td\Hnewline>\string&nbsp;</td>}
{</tr>}
@@ -21171,7 +21193,8 @@ Y{0178}\i{00EF}%
\Css{.hline hr, .cline hr{border:none;border-top:1px solid black;}}
\Css{.hline {border-top: 1px solid black;}}
\Css{.hline + .vspace:last-child{display:none;}}
-\Css{.hline:first-child{border-bottom:1px solid black;border-top:none;}}
+% why was there this rule? it adds unnecessary extra rule at the top of tables
+% \Css{.hline:first-child{border-bottom:1px solid black;border-top:none;}}
\def\putVBorder{\expandafter\put:VBorder\VBorder</>!*?: }
\def\put:VBorder#1</#2>#3!*?: {\def\:temp{#2}\ifx\:temp\empty
\HCode{\VBorder}%
@@ -21250,7 +21273,6 @@ Y{0178}\i{00EF}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{tabularx}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -21266,6 +21288,7 @@ Y{0178}\i{00EF}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{mwart}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -26230,7 +26253,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{mwbk}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -28742,7 +28764,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{CJK}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -28776,6 +28797,7 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{german}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -28798,6 +28820,19 @@ Y{0178}\i{00EF}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ConfigureHinput{french}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \Configure{part}{}{}
+ {\IgnorePar \EndP\HCode{<h1 class="partHead"\a:LRdir>}%
+ \HCode{<span class="titlemark">}\partname
+ \HCode{</span><br />}}
+ {\HCode{</h1>}\IgnoreIndent\par}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\endinput\empty\empty\empty\empty\empty\empty
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -28838,7 +28873,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{fancyvrb}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -28876,6 +28910,7 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{epsf}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -28900,6 +28935,7 @@ Y{0178}\i{00EF}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amscd}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -28912,6 +28948,7 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{color}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -29086,6 +29123,9 @@ Y{0178}\i{00EF}%
% redefine default table configuration and put the color rule
\def\a:HBorder{<tr class="hline" style="border-top:1px solid \#\hline:color">}
+
+% use the hline color also for vertial lines
+\def\VBorder:color{\#\hline:color}
% don't display <hr> elements in colored \hline
\Css{tr.hline td hr{display:none}}
@@ -29094,6 +29134,8 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{minitoc}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -29158,7 +29200,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{index}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -29187,7 +29228,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{multind}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -29220,6 +29260,7 @@ Y{0178}\i{00EF}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{fancybox}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -29305,6 +29346,7 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{adjustbox}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -29351,7 +29393,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{transparent}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -29380,6 +29421,7 @@ Y{0178}\i{00EF}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{alltt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -29394,7 +29436,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{latin1}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30189,6 +30230,7 @@ Y{0178}\i{00EF}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{tabulary}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30381,6 +30423,7 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{bussproofs}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30449,7 +30492,6 @@ Y{0178}\i{00EF}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{verse}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30611,7 +30653,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{abidir}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30638,6 +30679,7 @@ Y{0178}\i{00EF}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{koi8-r}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30648,7 +30690,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{frenchb}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30841,7 +30882,6 @@ description">}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{mex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30951,6 +30991,9 @@ description">}%
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{threeparttable}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -31046,6 +31089,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{tabto}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -31135,7 +31179,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{subscript}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -31148,6 +31191,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{subfigure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -31279,7 +31323,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{picins}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -31389,7 +31432,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{ot4enc}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -31657,7 +31699,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{pd1enc}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -31917,6 +31958,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{revtex4}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -32589,7 +32631,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{doc}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -32605,6 +32646,7 @@ description">}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{scrbook}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -33375,7 +33417,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{scrartcl}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -33396,6 +33437,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{scrreprt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -34938,7 +34980,6 @@ description">}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsdtx}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -34988,6 +35029,7 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{lncse}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35065,7 +35107,6 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{bibtopic}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35080,7 +35121,6 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{harvard}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35093,6 +35133,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{jurabib}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35148,7 +35189,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{8859-6}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35159,6 +35199,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{germanb}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35171,6 +35212,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{ngermanb}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35223,6 +35265,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{piton}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36031,6 +36074,7 @@ description">}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{pictex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36086,6 +36130,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{pst-all}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36112,7 +36157,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{mfpic}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36161,8 +36205,6 @@ description">}%
-
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{overpic}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36186,6 +36228,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{europecv}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36326,7 +36369,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{curve}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36413,6 +36455,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{vowel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36523,7 +36566,6 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{linguex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36549,6 +36591,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{cgloss4e}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36645,7 +36688,6 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{diagram}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36834,6 +36876,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{subeqnarray}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36860,7 +36903,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{SIunits}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36897,6 +36939,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{sistyle}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36918,7 +36961,6 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{chapterbib}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36956,6 +36998,7 @@ description">}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{appendix}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36966,7 +37009,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{res}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37041,6 +37083,7 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{algorithmic}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37130,7 +37173,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{algorithm}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37155,7 +37197,9 @@ description">}%
\ConfigureHinput{booktabs}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifdefined\hline:color\else
\def\hline:color{000}
+\fi
\Configure{toprule}
@@ -37203,6 +37247,7 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{gloss}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37286,6 +37331,7 @@ description">}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{longdiv}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37315,6 +37361,7 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{tugboat}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37414,7 +37461,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{ltugboat}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37458,7 +37504,7 @@ description">}%
\Css{.makesignature{margin-left:4em;}}
\Css{.signaturemark{display:block-inline;margin-left:-1.33em;}}
\@ifclassloaded{ltugproc}{}{%
- \@ifpackageloaded{ltugproc}{}{\Configure{@BODY}{\rtitlex}}
+ \@ifpackageloaded{ltugproc}{}{\Configure{@BODY}{\@ifundefined{:rtitlexused}{\rtitlex}{}\def\:rtitlexused{}}}
}
\Configure{maketitle}
{\ifvmode \IgnorePar\fi \EndP
@@ -37493,9 +37539,10 @@ description">}%
{\HCode{</h2>}\IgnoreIndent\EndNoFonts}
\Configure{titlex}
- {\HCode{<div class="titlex">}}
+ {\ifvmode\IgnorePar\fi\EndP\HCode{<div class="titlex">}}
{\HCode{</div>}}
\Css{div.titlex p{margin-bottom:1em;}}
+\Css{div.titlex {text-align: center;}}
\Configure{sectitle}
{\ifvmode \IgnorePar\fi
\EndP \HCode{<div class="sectitle">}%
@@ -37509,6 +37556,7 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{ltugproc}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37566,7 +37614,6 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{mls}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37589,6 +37636,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{boxedminipage}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37664,7 +37712,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{cancel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37691,6 +37738,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{paralist}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37894,7 +37942,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{listings}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38011,6 +38058,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{alphanum}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38086,7 +38134,6 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{epigraph}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38124,6 +38171,7 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{floatflt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38151,7 +38199,6 @@ description">}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{acm-proc-article-sp}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38472,6 +38519,7 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{endnotes}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38486,7 +38534,6 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{web}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38513,6 +38560,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{exerquiz}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38611,7 +38659,6 @@ emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{nicefrac}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38625,6 +38672,8 @@ emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{multicol}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38686,6 +38735,7 @@ emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{ProTex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38962,6 +39012,11 @@ emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{writer}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -39006,7 +39061,6 @@ emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{mdwlist}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -39068,6 +39122,7 @@ emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{sverb}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -39157,6 +39212,20 @@ emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ConfigureHinput{lua-ul}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \Configure{highLight}{\HCode{<span class="highLight" style="background-color:\:highLightColor;">}}{\HCode{</span>}}
+\Configure{strikeThrough}{\HCode{<span class="strikeThrough" style="text-decoration-color:\:strikeThroughColor;" >}}{\HCode{</span>}}
+\Css{.strikeThrough{text-decoration: line-through;}}
+\Configure{underLine}{\HCode{<span class="underLine" style="text-decoration-color:\:underLineColor;">}}{\HCode{</span>}}
+\Css{.underLine{text-decoration: underline;}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\endinput\empty\empty\empty\empty\empty\empty
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{manmac}
diff --git a/Master/texmf-dist/tex/generic/tex4ht/imakeidx.4ht b/Master/texmf-dist/tex/generic/tex4ht/imakeidx.4ht
index fdeeb1ff93c..9911e72341b 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/imakeidx.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/imakeidx.4ht
@@ -1,4 +1,4 @@
-% imakeidx.4ht (2024-05-22-14:13), generated from tex4ht-4ht.tex
+% imakeidx.4ht (2024-12-08-14:21), generated from tex4ht-4ht.tex
% Copyright 2019-2024 TeX Users Group
%
% This work may be distributed and/or modified under the
@@ -16,14 +16,14 @@
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2024-05-22-14:13}
+\immediate\write-1{version 2024-12-08-14:21}
\def\:temp#1#2#3{\html:addr%
-\hbox{\Link-{}{dx\last:haddr
+\hbox{\Link-{}{\a:indexhaddr
}\EndLink}%
\expandafter\protected@write\csname#1@idxfile\endcsname{}%
-{\string\beforeentry{\RefFileNumber\FileNumber}{dx\last:haddr
+{\string\beforeentry{\RefFileNumber\FileNumber}{\a:indexhaddr
}{\a:makeindex}}%
\o:imki@wrindexentrysplit:{#1}{#2}{#3}%
}
diff --git a/Master/texmf-dist/tex/generic/tex4ht/info4ht.4ht b/Master/texmf-dist/tex/generic/tex4ht/info4ht.4ht
index 9c1210b5c2f..00ff9121450 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/info4ht.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/info4ht.4ht
@@ -2,8 +2,8 @@
\ifx\infoIVht\UnDeF\def\infoIVht#1//{}\fi\infoIVht[1]34...//
-% info4ht.4ht (2021-04-17-18:22), generated from tex4ht-info.tex
-% Copyright 2009-2021 TeX Users Group
+% info4ht.4ht (2024-09-29-07:56), generated from tex4ht-info.tex
+% Copyright 2009-2024 TeX Users Group
% Copyright 2000-2009 Eitan M. Gurari
%
% This work may be distributed and/or modified under the
@@ -21,7 +21,7 @@
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2021-04-17-18:22}
+\immediate\write-1{version 2024-09-29-07:56}
{ \catcode`\@=0 \catcode`\\=11 @relax
@gdef@infoIVht[#1]#2//{%
@ifnum #1>1
@@ -58,7 +58,7 @@
-\ifx\infoIVht\UnDeF\def\infoIVht#1//{}\fi\infoIVht[580]629...//
+\ifx\infoIVht\UnDeF\def\infoIVht#1//{}\fi\infoIVht[580]661...//
\exit:ifnot{CJK,%
Preamble,%
@@ -118,11 +118,11 @@ web,%
xy}
-\ifx\infoIVht\UnDeF\def\infoIVht#1//{}\fi\infoIVht[580]629//
+\ifx\infoIVht\UnDeF\def\infoIVht#1//{}\fi\infoIVht[580]661//
-\ifx\infoIVht\UnDeF\def\infoIVht#1//{}\fi\infoIVht[580]629...//
+\ifx\infoIVht\UnDeF\def\infoIVht#1//{}\fi\infoIVht[580]661...//
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -698,15 +698,15 @@ Cross-Linking
#1 label
#2 content
-\Ref.....................................1
+\XRef.....................................1
\LikeRef.................................1
#1 label
- \Tag and \Ref are tex4ht.sty commands introduced cross-referencing
+ \Tag and \XRef are tex4ht.sty commands introduced cross-referencing
content through .xref auxiliary files.
- \LikeRef is a variant of \Ref which doesn't verify whether the
+ \LikeRef is a variant of \XRef which doesn't verify whether the
labels exit. It is mainly used in \Link and \edef environments.
\ifTag ..................................3
@@ -720,7 +720,7 @@ Cross-Linking
Load the named xref-type file
.xref optional--`.xref' is assume for a default
- + optional-- asks \Ref and \LikeRef commands
+ + optional-- asks \XRef and \LikeRef commands
to use expanded tags `filename::tag', instead of just `tag'
[prefix] optional--asks just for tags starting with the
specified prefix.
@@ -732,7 +732,7 @@ Cross-Linking
Example:
% a.tex
- \LoadRef-[to:]{b}{from:#1} \Ref{from:filename}
+ \LoadRef-[to:]{b}{from:#1} \XRef{from:filename}
\LikeRef{from:filename}
% b.tex
@@ -2928,7 +2928,6 @@ Other Hooks
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsart}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3305,7 +3304,6 @@ Environments of amsthm:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsmath}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3470,6 +3468,7 @@ Environments of amstex1:
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{babel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3492,6 +3491,7 @@ Environments of amstex1:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{plain}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3553,9 +3553,6 @@ Environments of amstex1:
-
-
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{url}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3575,6 +3572,8 @@ Environments of amstex1:
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{hyperref}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3629,6 +3628,7 @@ htlatex-like commands.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{array}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3733,6 +3733,13 @@ Environments of array:
+
+
+
+
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{CJK}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3755,6 +3762,7 @@ Environments of array:
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{moreverb}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3784,6 +3792,7 @@ Environments of moreverb:
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{fancyvrb}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3811,7 +3820,6 @@ Environments of fancyvrb:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{psfig}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3965,6 +3973,7 @@ Environments of amscd:
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{index}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3986,6 +3995,8 @@ Environments of amscd:
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{fancybox}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4011,6 +4022,9 @@ Environments of amscd:
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{alltt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4036,6 +4050,7 @@ Environments of alltt:
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{vanilla}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4082,6 +4097,7 @@ Environments of alltt:
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{ntheorem}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4147,7 +4163,6 @@ Environments of ntheorem:
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{hebtex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4223,6 +4238,21 @@ Environments of ntheorem:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{emulateapj}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4264,6 +4294,7 @@ Environments of emulateapj:
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{aa}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4383,6 +4414,11 @@ Environments of doc:
+
+
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{elsart}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4454,6 +4490,9 @@ Environments of elsart:
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{seminar}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4476,6 +4515,7 @@ Environments of seminar:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{slides}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4565,7 +4605,6 @@ Environments of foils:
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{slidesec}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4587,6 +4626,7 @@ Environments of foils:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{xy}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4606,6 +4646,9 @@ Environments of foils:
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{pictex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4632,6 +4675,8 @@ Environments of foils:
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{pb-diagram}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4713,6 +4758,10 @@ Environments of pb-diagram:
+
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{ltugboat}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4745,6 +4794,8 @@ Environments of ltugboat:
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{listings}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4906,6 +4957,8 @@ Environments of exerquiz:
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{ProTex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4931,7 +4984,6 @@ Environments of exerquiz:
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{th4}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -5308,9 +5360,32 @@ values.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\endinput
-\ifx\infoIVht\UnDeF\def\infoIVht#1//{}\fi\infoIVht[580]629//
+\ifx\infoIVht\UnDeF\def\infoIVht#1//{}\fi\infoIVht[580]661//
diff --git a/Master/texmf-dist/tex/generic/tex4ht/latex.4ht b/Master/texmf-dist/tex/generic/tex4ht/latex.4ht
index 910c0ef699e..8eaad73adc4 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/latex.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/latex.4ht
@@ -1,23 +1,23 @@
-% latex.4ht (2024-05-07-13:28), generated from tex4ht-4ht.tex
+% latex.4ht (2025-01-10-15:19), generated from tex4ht-4ht.tex
% Copyright 1997-2009 Eitan M. Gurari
-% Copyright 2009-2024 TeX Users Group
+% Copyright 2009-2025 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
-% is the TeX4ht Project <http://tug.org/tex4ht>.
+% is the TeX4ht Project <https://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2024-05-07-13:28}
+\immediate\write-1{version 2025-01-10-15:19}
\ifx\SaveMkHalignConf:g\:UnDef \else \expandafter\endinput\fi
@@ -213,7 +213,7 @@
% load tuenc definitions for commands like \quotedblbase
\ifdefined\old:DeclareTextSymbol\else
\input binhex
- \def\DeclareTextSymbol#1#2#3{\gdef#1{\ht:special{t4ht@+&{35}x\hex{#3}{59}}\a:HChar}}
+ \def\DeclareTextSymbol#1#2#3{\gdef\:tempa{\ht:special{t4ht@+&{35}x\hex{#3}{59}}\a:HChar}\HLet#1\:tempa}
\input tuenc.def
% this command is defined by tuenc, but doesn't work out of the box with TeX4ht
\let\DeclareTextSymbol\old:DeclareTextSymbol
@@ -226,6 +226,22 @@
\input tuenc-xetex.4ht
\fi
\fi
+\def\:tempa#1{%
+\ifcsname textcommabelow-#1\endcsname%
+\protect\leavevmode\ht:special{t4ht@+\string&{35}x\csname textcommabelow-#1\endcsname{59}}x%
+\else%
+\o:textcommabelow:{#1}%
+\fi%
+}
+\HLet\textcommabelow\:tempa
+
+\NewConfigure{textcommabelow}[2]{%
+ \expandafter\def\csname textcommabelow-#1\endcsname{#2}%
+}
+\Configure{textcommabelow}{S}{0218}
+\Configure{textcommabelow}{s}{0219}
+\Configure{textcommabelow}{T}{021A}
+\Configure{textcommabelow}{t}{021B}
\def\:tempc#1#2{\expandafter
\ifx \csname accent \cf@encoding :#1\endcsname\relax
\o:add@accent:{#1}{#2}%
@@ -437,14 +453,23 @@
\let\o:ref\:ref
\def\::ref#1{{\:SUBOff\:SUPOff\xdef\RefArg{#1}}\expandafter\o:ref
\expandafter{\RefArg}}
+\ExplSyntaxOn
+\def\::ref#1{{\:SUBOff\:SUPOff\xdef\RefArg{#1}%
+ \SUBOn\SUPOn%
+ \def\rEfLiNK##1##2{\Link{##1}{}\tl_rescan:nn{}{##2}\EndLink}%
+ \expandafter\o:ref\expandafter{\RefArg}%
+}}
+\ExplSyntaxOff
\DeclareDocumentCommand\:ref{s}{\IfBooleanTF{#1}{\Protect\::ref}{\Protect\::ref}}
\let\ref\:ref
-\def\::Ref#1{%
- \let\olda:rEfLiNK\rEfLiNK%%
- \def\rEfLiNK##1##2{\Link{##1}{}\edef\:ref:currentlabel{##2}\expandafter\MakeUppercase\:ref:currentlabel\EndLink}%
- \::ref{#1}%
- \let\rEfLiNK\olda:rEfLiNK%
-}
+\ExplSyntaxOn
+\def\::Ref#1{{%
+ \:SUBOff\:SUPOff\xdef\RefArg{#1}%
+ \SUBOn\SUPOn%
+ \def\rEfLiNK##1##2{\tl_set_rescan:Nnn\l_tmpa_tl{}{##2}\Link{##1}{}\expandafter\MakeUppercase\l_tmpa_tl\EndLink}%
+ \expandafter\o:ref\expandafter{\RefArg}%
+}}
+\ExplSyntaxOff
\DeclareDocumentCommand\:Ref{s}{\IfBooleanTF{#1}{\Protect\::Ref}{\Protect\::Ref}}
\let\Ref\:Ref
\let\:newl@bel\@newl@bel
@@ -1335,13 +1360,23 @@ $\vcenter
\append:def\@endtheorem{\c:newtheorem}
\NewConfigure{newtheorem}{3}
+\NewHookWithArguments{cmd/@sect/before}{8}
+\NewReversedHookWithArguments{cmd/@sect/after}{8}
+\NewHookWithArguments{cmd/@ssect/before}{5}
+\NewReversedHookWithArguments{cmd/@ssect/after}{5}
\let\no@ssect\@ssect
-\def\@ssect#1#2#3#4#5{\:Sc3
- \no@ssect{#1}{#2}{#3}{#4}{\:Sc4#5\:Sc2}\HtmlEnv}
+\def\@ssect#1#2#3#4#5{%
+ \UseHookWithArguments{cmd/@ssect/before}{5}{##1}{##2}{##3}{##4}{##5}%
+ \:Sc3\no@ssect{#1}{#2}{#3}{#4}{\:Sc4#5\:Sc2}\HtmlEnv%
+ \UseHookWithArguments{cmd/@ssect/after}{5}{##1}{##2}{##3}{##4}{##5}%
+}
\let\no@sect\@sect
\def\@sect#1#2#3#4#5#6[#7]#8{%
- \xdef\c:secnumdepth{#2}\:Sc3
- \no@sect{#1}{#2}{#3}{#4}{#5}{#6}[#7]{\:Sc4#8\:Sc2}\HtmlEnv}
+ \UseHookWithArguments{cmd/@sect/before}{8}{##1}{##2}{##3}{##4}{##5}{##6}{##7}{##8}%
+ \xdef\c:secnumdepth{#2}\:Sc3%
+ \no@sect{#1}{#2}{#3}{#4}{#5}{#6}[#7]{\:Sc4#8\:Sc2}\HtmlEnv%
+ \UseHookWithArguments{cmd/@sect/after}{8}{##1}{##2}{##3}{##4}{##5}{##6}{##7}{##8}%
+ }
\let\:startsection\@startsection
\def\@startsection#1{\@ifstar{\Configure{secType}{like#1}}%
{\Configure{secType}{#1}}%
@@ -1357,6 +1392,7 @@ $\vcenter
\let\sv:Msect\M@sect
\let\:Sc\:gobble
\def\@sect##1##2##3##4##5##6[##7]##8{%
+ \UseHookWithArguments{cmd/@sect/before}{8}{##1}{##2}{##3}{##4}{##5}{##6}{##7}{##8}%
\ifx \o:@seccntformat:\:UnDef
\let\o:@seccntformat:\@seccntformat
\fi
@@ -1370,9 +1406,12 @@ $\vcenter
%
\let\@seccntformat=\o:@seccntformat:
%
- \HtmlEnv \Toc:Title{##7}\csname no:#1\endcsname{##8}}%
+ \HtmlEnv \Toc:Title{##7}\csname no:#1\endcsname{##8}%
+ \UseHookWithArguments{cmd/@sect/after}{8}{##1}{##2}{##3}{##4}{##5}{##6}{##7}{##8}%
+ }%
%
\def\@ssect##1##2##3##4##5{%
+ \UseHookWithArguments{cmd/@ssect/before}{5}{##1}{##2}{##3}{##4}{##5}%
\gdef\ssect:ttl{##5}%
%
\let\@ssect\no@ssect
@@ -1381,7 +1420,9 @@ $\vcenter
\let\:Sc\sv:Sc \let\@sect\sv:sect \let\@ssect\sv:ssect
\let\M@sect\sv:Msect
%
- \HtmlEnv \csname :like#1\endcsname{##5}}%
+ \HtmlEnv \csname :like#1\endcsname{##5}%
+ \UseHookWithArguments{cmd/@ssect/after}{5}{##1}{##2}{##3}{##4}{##5}%
+ }%
\IgnorePar}
\fi
\pend:defI\@hangfrom{\a:@hangfrom}
@@ -1439,8 +1480,8 @@ $\vcenter
\begingroup
\gHAdvance\TitleCount by 1
\protect:wrtoc
- \edef\:temp{#2}%
- \edef\:temp{\the\:tokwrite{\string\doTocEntry
+ \protected@edef\:temp{#2}%
+ \protected@edef\:temp{\the\:tokwrite{\string\doTocEntry
\string\toc\expandafter\ifx\csname ext@#1\endcsname\relax
#1\else\csname ext@#1\endcsname\fi
{\csname
@@ -1618,10 +1659,10 @@ $\vcenter
\def\@wrglossary{\:wribefr\@glossaryfile\:wrglossary}
\fi
\def\:wribefr#1{\title:chs{\html:addr
- \hbox{\Link-{}{dx\last:haddr
+ \hbox{\Link-{}{\a:indexhaddr
}\EndLink}}{}%
\edef\:temp{\write#1{\expandafter\string\a:idxmake{\RefFileNumber
- \FileNumber}{\title:chs {dx\last:haddr
+ \FileNumber}{\title:chs {\a:indexhaddr
}{\cur:th
\:currentlabel}}{\a:makeindex}}}\:temp}
\ifx \a:makeindex\:UnDef
@@ -1630,6 +1671,30 @@ $\vcenter
\ifx \beforeentry\:UnDef \def\beforeentry#1#2{} \fi
\NewConfigure{idxmake}{1}
\Configure{idxmake}{\beforeentry}
+\NewConfigure{indexhaddr}{1}
+\Configure{indexhaddr}{dx\last:haddr}
+\:CheckOption{sec-index}\if:Option
+
+% from https://tex.stackexchange.com/a/141369/2891
+% for some reason it fails if the command includes :, so I use FourHT prefix to avoid collisions
+\newcommand{\FourHTgetCurrentSectionNumber}{%
+ \ifnum\c@section=0 %
+ \thechapter
+ \else
+ \ifnum\c@subsection=0 %
+ \thesection
+ \else
+ \ifnum\c@subsubsection=0 %
+ \thesubsection
+ \else
+ \thesubsubsection
+ \fi
+ \fi
+ \fi
+}
+\Configure{makeindex}{\FourHTgetCurrentSectionNumber}%
+\Configure{indexhaddr}{\CurSecHaddr}%
+\fi
\:CheckOption{no-bib} \if:Option\else
\ifx \o:@citex:\:UnDef \let\o:@citex:\@citex\fi
@@ -2338,26 +2403,26 @@ $\vcenter
\expandafter\:temp\usepackage!*?:
\def\:tempa{\@latex@e@error}
\ifx \:temp\:tempa
- % latex209.4ht (2024-05-07-13:28), generated from tex4ht-4ht.tex
+ % latex209.4ht (2025-01-10-15:19), generated from tex4ht-4ht.tex
% Copyright 1997-2009 Eitan M. Gurari
-% Copyright 2009-2024 TeX Users Group
+% Copyright 2009-2025 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
-% is the TeX4ht Project <http://tug.org/tex4ht>.
+% is the TeX4ht Project <https://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2024-05-07-13:28}
+\immediate\write-1{version 2025-01-10-15:19}
\let\:fnsymbol\@fnsymbol
\def\@fnsymbol#1{{\hbox{$\:fnsymbol{#1}$}}}
diff --git a/Master/texmf-dist/tex/generic/tex4ht/lineno.4ht b/Master/texmf-dist/tex/generic/tex4ht/lineno.4ht
index 01830d37b77..ba123b7764b 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/lineno.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/lineno.4ht
@@ -1,5 +1,5 @@
-% lineno.4ht (2023-05-21-07:16), generated from tex4ht-4ht.tex
-% Copyright 2009-2023 TeX Users Group
+% lineno.4ht (2024-11-24-07:37), generated from tex4ht-4ht.tex
+% Copyright 2009-2024 TeX Users Group
% Copyright 2000-2009 Eitan M. Gurari
%
% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2023-05-21-07:16}
+\immediate\write-1{version 2024-11-24-07:37}
\let\:tempc\linelabel
@@ -41,7 +41,9 @@
% \linenumbers don't have any sense in the HTML output
% moreover, they cause equations and possibly other elements to fail
-\HLet\linenumbers\relax
+\def\:tempa{\@ifnextchar [{\resetlinenumber }{\@ifstar {\resetlinenumber }{}}}
+\HLet\linenumbers\:tempa
+
% if \linenumbers were used in the document preamble, we must disable them now:
\LineNumbersfalse
diff --git a/Master/texmf-dist/tex/generic/tex4ht/listings.4ht b/Master/texmf-dist/tex/generic/tex4ht/listings.4ht
index 00b7058447c..4bb4811cb2d 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/listings.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/listings.4ht
@@ -1,23 +1,23 @@
-% listings.4ht (2024-06-10-14:03), generated from tex4ht-4ht.tex
+% listings.4ht (2025-01-23-12:56), generated from tex4ht-4ht.tex
% Copyright 2001-2009 Eitan M. Gurari
-% Copyright 2009-2024 TeX Users Group
+% Copyright 2009-2025 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
-% is the TeX4ht Project <http://tug.org/tex4ht>.
+% is the TeX4ht Project <https://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2024-06-10-14:03}
+\immediate\write-1{version 2025-01-23-12:56}
\@ifpackageloaded{xcolor}{}{%
\RequirePackage{xcolor}
@@ -51,14 +51,6 @@
\fi%
}
\NewConfigure{lstinline}{2}
-\pend:defI\lst@MakeCaption{%
- \let\lst:addcontentsline\addcontentsline
- \def\addcontentsline{\gHAdvance\TitleCount by 1
- \lst:addcontentsline}%
-}
-\append:defI\lst@MakeCaption{%
- \let\addcontentsline\lst:addcontentsline
-}
\ConfigureToc{lol} {}{\empty}{}{\newline}
\lst@UserCommand\lstlistoflistings{\bgroup%
\ifdefined\chapter\chapter*{\lstlistlistingname}\else\section*{\lstlistlistingname}\fi%
@@ -105,6 +97,31 @@
\Configure{lst@Kern}{0.499em}{0.1em}
\def\lst@outputspace{\HCode{ }}
+\def\lst:newaddcontentsline#1#2#3{\gHAdvance\TitleCount by 1
+ {\protect:wrtoc%
+ \protected@edef\:temp{#3}%
+ \protected@edef\:temp{\the\:tokwrite{\string\doTocEntry%
+ \string\toclol% identify this entry as list of listings
+ {\thetable}{\string\csname\space a:TocLink\string\endcsname%
+ {\FileNumber}{\cur:th \:currentlabel}{}{\ifx\:temp\empty\else \ignorespaces #3\fi}}%
+ {}\relax}}\:temp%
+}}%
+\pend:defI\lst@MakeCaption{%
+ \let\lst:addcontentsline\addcontentsline%
+ \let\addcontentsline\lst:newaddcontentsline%
+}
+\append:defI\lst@MakeCaption{%
+ % insert destination ID for the list of listings
+ \Link{}{\cur:th\:currentlabel}\EndLink
+ \let\addcontentsline\lst:addcontentsline
+}
+\ConfigureToc{lol} {}{\empty}{}{\newline}
+\AtBeginDocument{%
+\def\lstlistoflistings{\bgroup%
+ \ifdefined\chapter\chapter*{\lstlistlistingname}\else\section*{\lstlistlistingname}\fi%
+ \TableOfContents[lol]%
+ \egroup}}
+
\HLet\lst@frameInit=\empty
\HLet\lst@frameExit=\empty
diff --git a/Master/texmf-dist/tex/generic/tex4ht/longtable.4ht b/Master/texmf-dist/tex/generic/tex4ht/longtable.4ht
index 49e7e6e43d4..79bb53de125 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/longtable.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/longtable.4ht
@@ -1,23 +1,23 @@
-% longtable.4ht (2023-04-10-13:46), generated from tex4ht-4ht.tex
+% longtable.4ht (2024-09-30-13:40), generated from tex4ht-4ht.tex
% Copyright 1997-2009 Eitan M. Gurari
-% Copyright 2009-2023 TeX Users Group
+% Copyright 2009-2024 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
-% is the TeX4ht Project <http://tug.org/tex4ht>.
+% is the TeX4ht Project <https://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2023-04-10-13:46}
+\immediate\write-1{version 2024-09-30-13:40}
\def\:tempc[#1]#2{%
\gHAdvance\float:cnt 1
@@ -202,25 +202,8 @@
{\LT@t@bularcr}%
{\LT@t@bularcr}}
- \def\:tempc{%
- \o:noalign:{\ifnum0=`}\fi
- \penalty\@M
- \futurelet\@let@token\LT@@hline}
+ \def\:tempc{\a:hline}
\HLet\LT@hline\:tempc
-\def\:tempc{%
- \ifx\@let@token\hline
- \global\let\@gtempa\@gobble
- \gdef\LT@sep{\penalty-\@medpenalty\vskip\doublerulesep}%
- \else
- \global\let\@gtempa\@empty
- \gdef\LT@sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}%
- \fi
- \ifnum0=`{\fi}%
- \a:hline
-%
- \o:noalign:{\penalty\@M}%
- \@gtempa}
-\HLet\LT@@hline\:tempc
\def\:tempc{%
\o:noalign:\bgroup \gHAdvance\TitleCount 1
diff --git a/Master/texmf-dist/tex/generic/tex4ht/lua-ul.4ht b/Master/texmf-dist/tex/generic/tex4ht/lua-ul.4ht
new file mode 100644
index 00000000000..59e50f78778
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/lua-ul.4ht
@@ -0,0 +1,82 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% lua-ul.4ht (2024-10-03-13:41), generated from tex4ht-4ht.tex
+% Copyright 2024 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <http://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2024-10-03-13:41}
+
+\def\lua:ul:get:xcolorcss#1#2{%
+ \expandafter\extractcolorspec\expandafter{#1}{\tsf:color}%
+ \expandafter\convertcolorspec\tsf:color{HTML}\tsf:color%
+ \edef#2{\#\tsf:color}%
+}
+
+\ExplSyntaxOn
+
+\NewConfigure{highLight}{2}
+\NewDocumentCommand \:highLight {O{\l__luaul_highlight_color_tl} +m} {
+ \group_begin:
+ \lua:ul:get:xcolorcss{#1}\:highLightColor%
+ \a:highLight#2\b:highLight%
+ \group_end:
+}
+
+\HLet\highLight\:highLight
+
+\NewConfigure{strikeThrough}{2}
+\NewDocumentCommand \:strikeThrough {o +m} {
+ \group_begin:
+ \IfValueTF {#1} {
+ \lua:ul:get:xcolorcss{#1}\:strikeThroughColor%
+ }{\def\:strikeThroughColor{inherit}}
+ \a:strikeThrough#2\b:strikeThrough
+ \group_end:
+ }
+
+\HLet\strikeThrough\:strikeThrough
+
+\NewConfigure{underLine}{2}
+\NewDocumentCommand \:underLine {o +m} {
+ \group_begin:
+ \IfValueTF {#1} {
+ \__luaul_parse_generic_keys:n {
+ #1
+ }
+ }{}
+ \bool_if:NTF \l__luaul_color_set_bool {
+ % the \l__luaul_current_color_tl contains color in a format suitable for \convertcolorspec,
+ % so we cannot use \lua:ul:get:xcolorcss here
+ \expandafter\convertcolorspec\l__luaul_current_color_tl{HTML}\:tempa
+ \edef\:underLineColor{\#\:tempa}%
+ }{\def\:underLineColor{inherit}}
+ \a:underLine#2\b:underLine
+ \group_end:
+}
+
+\HLet\underLine\:underLine
+
+
+\bool_if:NT \l__luaul_soulnames_bool {
+ \cs_set_eq:NN \textul \underLine \cs_set_eq:NN \ul \textul
+ \cs_set_eq:NN \textst \strikeThrough \cs_set_eq:NN \st \textst
+ \cs_set_eq:NN \texthl \highLight \cs_set_eq:NN \hl \texthl
+}
+
+\ExplSyntaxOff
+\Hinput{lua-ul}
+\endinput
+
diff --git a/Master/texmf-dist/tex/generic/tex4ht/makecell.4ht b/Master/texmf-dist/tex/generic/tex4ht/makecell.4ht
new file mode 100644
index 00000000000..6a94196fea0
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/makecell.4ht
@@ -0,0 +1,33 @@
+% makecell.4ht (2024-10-09-13:42), generated from tex4ht-4ht.tex
+% Copyright 2024 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <http://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2024-10-09-13:42}
+
+
+\NewConfigure{makegapedcells}{1}
+\def\:tempa{\a:makegapedcells}
+\HLet\makegapedcells\:tempa
+
+\NewConfigure{nomakegapedcells}{1}
+\def\:tempa{\a:nomakegapedcells}
+\HLet\nomakegapedcells\:tempa
+
+
+\Hinput{makecell}
+\endinput
+
diff --git a/Master/texmf-dist/tex/generic/tex4ht/manyfoot-hooks.4ht b/Master/texmf-dist/tex/generic/tex4ht/manyfoot-hooks.4ht
new file mode 100644
index 00000000000..093e78ad06b
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/manyfoot-hooks.4ht
@@ -0,0 +1,53 @@
+% manyfoot-hooks.4ht (2024-12-06-14:38), generated from tex4ht-4ht.tex
+% Copyright 2024 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <http://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2024-12-06-14:38}
+
+
+\:AtEndOfPackage{%
+\let\o:MFL@declare:\MFL@declare
+
+\def\manyfoot:declarefn#1{%
+ \expandafter\renewcommand\csname footnote#1\endcsname[1]{%
+ % save original footnote counters
+ \let\:origthefootnote\thefootnote%
+ \let\:origmpfn\@mpfn%
+ \let\:origminipageNum\minipageNum%
+ % \minipageNum is used in footnote links. we add the current suffix to produce unique links
+ % if different footnote types use the same number
+ \edef\minipageNum{\minipageNum #1}%
+ \renewcommand\thefootnote{\csname thefootnote#1\endcsname}%
+ % declare which counter should be used
+ \def\@mpfn{footnote#1}%
+ \footnote{##1}%
+ \let\thefootnote\:origthefootnote%
+ \let\@mpfn\:origmpfn%
+ \let\minipageNum\:origminipageNum%
+ }%
+}
+
+\def\MFL@declare#1#2[#3]{%
+ \o:MFL@declare:{#1}{#2}[#3]%
+ \manyfoot:declarefn{#2}%
+}%
+
+
+}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/generic/tex4ht/manyfoot.4ht b/Master/texmf-dist/tex/generic/tex4ht/manyfoot.4ht
new file mode 100644
index 00000000000..edca5a46fb7
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/manyfoot.4ht
@@ -0,0 +1,25 @@
+% manyfoot.4ht (2024-12-04-13:41), generated from tex4ht-4ht.tex
+% Copyright 2024 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <http://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2024-12-04-13:41}
+
+
+
+\Hinput{manyfoot}
+\endinput
+
diff --git a/Master/texmf-dist/tex/generic/tex4ht/mathjax-latex-4ht.4ht b/Master/texmf-dist/tex/generic/tex4ht/mathjax-latex-4ht.4ht
index 0805e1ffff5..ebb64264b77 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/mathjax-latex-4ht.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/mathjax-latex-4ht.4ht
@@ -1,5 +1,5 @@
-% mathjax-latex-4ht.4ht (2024-09-11-13:40), generated from tex4ht-mathjax.tex
-% Copyright 2018-2024 TeX Users Group
+% mathjax-latex-4ht.4ht (2025-01-26-07:11), generated from tex4ht-mathjax.tex
+% Copyright 2018-2025 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -16,10 +16,17 @@
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2024-09-11-13:40}
+\immediate\write-1{version 2025-01-26-07:11}
\ExplSyntaxOn
+\:CheckOption{fastmathjax}\if:Option
+\DeclareRobustCommand\alteqtoks[1]{%
+ \tl_set:Ne \l_tmpa_tl {\detokenize{#1}}
+ \HCode{\l_tmpa_tl}
+}
+
+\else
\cs_new_protected:Npn \alteqtoks #1
{
\tl_set:Ne \l_tmpa_tl {\detokenize{#1}}
@@ -32,8 +39,9 @@
\tl_set:Ne \l_tmpb_tl{ \l_tmpa_tl }
\HCode{\l_tmpb_tl}
}
-\ExplSyntaxOff
+\fi
+\ExplSyntaxOff
\NewConfigure{MathJaxConfig}{1}
\NewConfigure{MathJaxMacros}[1]{%
\Configure{@BODY}{\bgroup\NoFonts\ttfamily\detokenize{\(}%
@@ -48,10 +56,14 @@
% beginning of each display math
\long\def\AltlDisplayDollars#1$${\alteqtoks{\[#1\]}$$}
+\NewConfigure{MathjaxEnv}{2}
+
\newcommand\VerbMathToks[2]{%
+ \a:MathjaxEnv%
\HCode{\string\begin{#2}}%
\alteqtoks{#1}%
\HCode{\string\end{#2}}%
+ \b:MathjaxEnv%
}
\ExplSyntaxOn
\seq_new:N\:savedmathjaxenvs
@@ -105,19 +117,19 @@
\VerbMath{aligned}
\VerbMath{alignedat}
\VerbMath{gathered}
-\VerbMath{gather}
+\VerbMath[equation]{gather}
\VerbMath{gather*}
-\VerbMath{alignat}
+\VerbMath[equation]{alignat}
\VerbMath{alignat*}
\VerbMath{xalignat}
\VerbMath{xalignat*}
\VerbMath{xxalignat}
-\VerbMath{align}
+\VerbMath[equation]{align}
\VerbMath{align*}
-\VerbMath{flalign}
+\VerbMath{flalign[equation]}
\VerbMath{flalign*}
-\VerbMath{split}
-\VerbMath{multline}
+\VerbMath[equation]{split}
+\VerbMath[equation]{multline}
\VerbMath{multline*}
\VerbMath[equation]{equation}
\VerbMath{equation*}
@@ -162,7 +174,8 @@
}{}
\@ifpackageloaded{tikz}{%
-\tikzset{every picture/.append code={\:ignoretikzmatrix\RestoreMathJaxEnvironments}}
+%\tikzset{every picture/.append code={\:ignoretikzmatrix\RestoreMathJaxEnvironments}}
+\pend:def\tikz@installcommands{\RestoreMathJaxEnvironments}
}{}
}
@@ -693,5 +706,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\endinput
diff --git a/Master/texmf-dist/tex/generic/tex4ht/mathml.4ht b/Master/texmf-dist/tex/generic/tex4ht/mathml.4ht
index 348db48cf0b..f2c9b599f68 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/mathml.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/mathml.4ht
@@ -1,5 +1,5 @@
-% mathml.4ht (2024-09-03-13:48), generated from tex4ht-mathml.tex
-% Copyright 2009-2024 TeX Users Group
+% mathml.4ht (2025-01-09-13:26), generated from tex4ht-mathml.tex
+% Copyright 2009-2025 TeX Users Group
% Copyright 1999-2009 Eitan M. Gurari
%
% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2024-09-03-13:48}
+\immediate\write-1{version 2025-01-09-13:26}
\exit:ifnot{Preamble,%
accents,%
@@ -45,6 +45,7 @@ plain,%
rlbabel,%
sistyle,%
siunitx,%
+stmaryrd,%
subeqnarray,%
tex4ht,%
ulem,%
@@ -876,10 +877,12 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
{}
{\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}%
\:widetilde:over \HCode{</\a:mathml mover>}}
- \Configure{accent}\tilde\tilde{{}{}}
- {}
- {\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}%
- \:tilde:over \HCode{</\a:mathml mover>}}
+ % this configuration caused problems with text accents.
+ % we can use Unicode characters with tilde accents instead even in MathML
+ % \Configure{accent}\tilde\tilde{{}{}}
+ % {}
+ % {\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}%
+ % \:tilde:over \HCode{</\a:mathml mover>}}
\Configure{accent}\widehat\widehat{{}{}}
{}
{\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}%
@@ -923,7 +926,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
\def\:temp#1{\a:right{#1}\o:right:.\b:right{#1}}\HLet\right\:temp
\Configure{left}
{}
- {\HCode{<\a:mathml mrow><\a:mathml mo \a:mathml fence="true" \a:mathml form="prefix">
+ {\HCode{<\a:mathml mrow><\a:mathml mo \a:mathml fence="true" \a:mathml form="prefix">%
\expandafter
\ifx \csname \string#1:lr del\endcsname\relax #1\else
\csname \string#1:lr del\endcsname\fi
@@ -1801,6 +1804,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsbsy}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1968,7 +1972,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
\:tempc{xalignat*}{xalignat-star}
\:tempc{flalign*}{flalign-star}
\Configure{gathered}
- {\HCode{<\a:mathml mtable\Hnewline \mml:class="gathered">}}
+ {\HCode{<\a:mathml mtable\Hnewline \mml:class="gathered" \mtable:align:attribute>}}
{\HCode{</\a:mathml mtable>}}
{\HCode{<\a:mathml mtr>}} {\HCode{</\a:mathml mtr>}}
{\HCode{\Hnewline<\a:mathml mtd>}} {\HCode{</\a:mathml mtd>}}
@@ -2157,15 +2161,21 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
\ifx \ilimits@\o:displaylimits:
\let\ilimits@\nolimits
\fi
+% thanks to Linas Stonys for this code
+\def\mtable:align:attribute{%
+ \if t\Hlcr\space\a:mathml align="axis 1"\fi
+ \if b\Hlcr\space\a:mathml align="axis -1"\fi
+ }
+
\Configure{aligned}
- {\HCode{<\a:mathml mtable\Hnewline \mml:class="aligned">}}
+ {\HCode{<\a:mathml mtable\Hnewline \mml:class="aligned" \mtable:align:attribute>}}
{\HCode{</\a:mathml mtable>}}
{\HCode{<\a:mathml mtr\Hnewline>}} {\HCode{</\a:mathml mtr>}}
{\HCode{<\a:mathml mtd
\a:mathml columnalign="\ifodd\HCol right\else left\fi" >}}
{\HCode{</\a:mathml mtd>}}
\Configure{alignedat}
- {\HCode{<\a:mathml mtable\Hnewline \mml:class="alignedat">}}
+ {\HCode{<\a:mathml mtable\Hnewline \mml:class="alignedat" \mtable:align:attribute>}}
{\HCode{</\a:mathml mtable>}}
{\HCode{<\a:mathml mtr\Hnewline>}} {\HCode{</\a:mathml mtr>}}
{\HCode{<\a:mathml mtd
@@ -2184,6 +2194,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsfonts}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2205,7 +2216,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amstex1}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2269,6 +2279,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amstex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2436,7 +2447,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{plain}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2753,10 +2763,12 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
{}
{\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}%
\:widetilde:over \HCode{</\a:mathml mover>}}
- \Configure{accent}\tilde\tilde{{}{}}
- {}
- {\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}%
- \:tilde:over \HCode{</\a:mathml mover>}}
+ % this configuration caused problems with text accents.
+ % we can use Unicode characters with tilde accents instead even in MathML
+ % \Configure{accent}\tilde\tilde{{}{}}
+ % {}
+ % {\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}%
+ % \:tilde:over \HCode{</\a:mathml mover>}}
\Configure{accent}\widehat\widehat{{}{}}
{}
{\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}%
@@ -2800,7 +2812,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
\def\:temp#1{\a:right{#1}\o:right:.\b:right{#1}}\HLet\right\:temp
\Configure{left}
{}
- {\HCode{<\a:mathml mrow><\a:mathml mo \a:mathml fence="true" \a:mathml form="prefix">
+ {\HCode{<\a:mathml mrow><\a:mathml mo \a:mathml fence="true" \a:mathml form="prefix">%
\expandafter
\ifx \csname \string#1:lr del\endcsname\relax #1\else
\csname \string#1:lr del\endcsname\fi
@@ -3274,7 +3286,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsopn}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3422,8 +3433,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
-
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amscd}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3484,6 +3493,9 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{vanilla}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3526,6 +3538,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amssymb}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3754,7 +3767,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{gauss}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3814,6 +3826,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{rlbabel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3941,6 +3954,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{mathtools}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4092,6 +4106,16 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
+
+
+
+
+
+
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{accents}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4115,7 +4139,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{subeqnarray}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4278,7 +4301,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{ulem}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4309,6 +4331,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{cancel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4352,6 +4375,28 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ConfigureHinput{stmaryrd}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\:tempa{\HCode{<\a:mathml mo fence="false">\string&\#x27E6;</\a:mathml mo>}}
+\HLet\llbracket\:tempa
+\def\:tempa{\HCode{<\a:mathml mo fence="false">\string&\#x27E7;</\a:mathml mo>}}
+\HLet\rrbracket\:tempa
+\Configure{mfenced}{\llbracket}{\string&\#x27E6;}
+\Configure{mfenced}{\rrbracket}{\string&\#x27E7;}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\endinput\empty\empty\empty\empty\empty\empty
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+
+
+
@@ -4607,6 +4652,5 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
\endinput
diff --git a/Master/texmf-dist/tex/generic/tex4ht/memoir.4ht b/Master/texmf-dist/tex/generic/tex4ht/memoir.4ht
index e9d47c6ea24..66484ce7db4 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/memoir.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/memoir.4ht
@@ -1,24 +1,23 @@
-% memoir.4ht (2024-05-20-13:21), generated from tex4ht-4ht.tex
+% memoir.4ht (2024-10-20-07:19), generated from tex4ht-4ht.tex
% Copyright 2003-2009 Eitan M. Gurari
-% Copyright 2003-2024 TeX Users Group
% Copyright 2009-2024 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
-% is the TeX4ht Project <http://tug.org/tex4ht>.
+% is the TeX4ht Project <https://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2024-05-20-13:21}
+\immediate\write-1{version 2024-10-20-07:19}
\input book.4ht
\input verse.4ht
@@ -117,6 +116,7 @@
\HtmlEnv \Toc:Title{##8}\csname no:#1\endcsname{##9}}%
%
\def\@sect##1##2##3##4##5##6[##7]##8{%
+ \UseHookWithArguments{cmd/@sect/before}{8}{##1}{##2}{##3}{##4}{##5}{##6}{##7}{##8}%
\ifx \o:@seccntformat:\:UnDef
\let\o:@seccntformat:\@seccntformat
\fi
@@ -130,9 +130,12 @@
%
\let\@seccntformat=\o:@seccntformat:
%
- \HtmlEnv \Toc:Title{##7}\csname no:#1\endcsname{##8}}%
+ \HtmlEnv \Toc:Title{##7}\csname no:#1\endcsname{##8}%
+ \UseHookWithArguments{cmd/@sect/after}{8}{##1}{##2}{##3}{##4}{##5}{##6}{##7}{##8}%
+ }%
%
\def\@ssect##1##2##3##4##5{%
+ \UseHookWithArguments{cmd/@ssect/before}{5}{##1}{##2}{##3}{##4}{##5}%
\gdef\ssect:ttl{##5}%
%
\let\@ssect\no@ssect
@@ -141,7 +144,9 @@
\let\:Sc\sv:Sc \let\@sect\sv:sect \let\@ssect\sv:ssect
\let\M@sect\sv:Msect
%
- \HtmlEnv \csname :like#1\endcsname{##5}}%
+ \HtmlEnv \csname :like#1\endcsname{##5}%
+ \UseHookWithArguments{cmd/@ssect/after}{5}{##1}{##2}{##3}{##4}{##5}%
+ }%
\IgnorePar}
\fi
diff --git a/Master/texmf-dist/tex/generic/tex4ht/mempatch.4ht b/Master/texmf-dist/tex/generic/tex4ht/mempatch.4ht
index df88c5b0f1c..4a281473904 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/mempatch.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/mempatch.4ht
@@ -1,30 +1,23 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% mempatch.4ht 2009-05-21-09:32 %
-% Copyright (C) 2003--2009 Eitan M. Gurari %
-% %
-% This work may be distributed and/or modified under the %
-% conditions of the LaTeX Project Public License, either %
-% version 1.3c of this license or (at your option) any %
-% later version. The latest version of this license is %
-% in %
-% http://www.latex-project.org/lppl.txt %
-% and version 1.3c or later is part of all distributions %
-% of LaTeX version 2005/12/01 or later. %
-% %
-% This work has the LPPL maintenance status "maintained".%
-% %
-% This Current Maintainer of this work %
-% is Eitan M. Gurari. %
-% %
-% If you modify this program your changing its signature %
-% with a directive of the following form will be %
-% appreciated. %
-% \message{signature} %
-% %
-% gurari@cse.ohio-state.edu %
-% http://www.cse.ohio-state.edu/~gurari %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\immediate\write-1{version 2009-05-21-09:32}
+% mempatch.4ht (2024-11-03-05:51), generated from tex4ht-4ht.tex
+% Copyright 2003-2009 Eitan M. Gurari
+% Copyright 2009-2024 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% https://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <https://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2024-11-03-05:51}
\let\no@Msect\M@sect
\NewConfigure{@sec @ssect}[1]{%
@@ -53,6 +46,7 @@
\HtmlEnv \Toc:Title{##8}\csname no:#1\endcsname{##9}}%
%
\def\@sect##1##2##3##4##5##6[##7]##8{%
+ \UseHookWithArguments{cmd/@sect/before}{8}{##1}{##2}{##3}{##4}{##5}{##6}{##7}{##8}%
\ifx \o:@seccntformat:\:UnDef
\let\o:@seccntformat:\@seccntformat
\fi
@@ -66,9 +60,12 @@
%
\let\@seccntformat=\o:@seccntformat:
%
- \HtmlEnv \Toc:Title{##7}\csname no:#1\endcsname{##8}}%
+ \HtmlEnv \Toc:Title{##7}\csname no:#1\endcsname{##8}%
+ \UseHookWithArguments{cmd/@sect/after}{8}{##1}{##2}{##3}{##4}{##5}{##6}{##7}{##8}%
+ }%
%
\def\@ssect##1##2##3##4##5{%
+ \UseHookWithArguments{cmd/@ssect/before}{5}{##1}{##2}{##3}{##4}{##5}%
\gdef\ssect:ttl{##5}%
%
\let\@ssect\no@ssect
@@ -77,7 +74,9 @@
\let\:Sc\sv:Sc \let\@sect\sv:sect \let\@ssect\sv:ssect
\let\M@sect\sv:Msect
%
- \HtmlEnv \csname :like#1\endcsname{##5}}%
+ \HtmlEnv \csname :like#1\endcsname{##5}%
+ \UseHookWithArguments{cmd/@ssect/after}{5}{##1}{##2}{##3}{##4}{##5}%
+ }%
\IgnorePar}
\fi
diff --git a/Master/texmf-dist/tex/generic/tex4ht/metalogo.4ht b/Master/texmf-dist/tex/generic/tex4ht/metalogo.4ht
new file mode 100644
index 00000000000..c8513ac3849
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/metalogo.4ht
@@ -0,0 +1,35 @@
+% metalogo.4ht (2024-11-28-13:39), generated from tex4ht-4ht.tex
+% Copyright 2024 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <http://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2024-11-28-13:39}
+
+
+\NewConfigure{XeLaTeX}{1}
+\Configure{XeLaTeX}{Xe\LaTeX}
+\def\:tempa{\a:XeLaTeX}
+\HLet\XeLaTeX\:tempa
+
+\NewConfigure{XeTeX}{1}
+\Configure{XeTeX}{Xe\TeX}
+\def\:tempa{\a:XeTeX}
+\HLet\XeTeX\:tempa
+
+
+\Hinput{metalogo}
+\endinput
+
diff --git a/Master/texmf-dist/tex/generic/tex4ht/minted.4ht b/Master/texmf-dist/tex/generic/tex4ht/minted.4ht
index 7ff6a2778e0..b6beb7323b5 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/minted.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/minted.4ht
@@ -1,5 +1,5 @@
-% minted.4ht (2022-10-31-13:02), generated from tex4ht-4ht.tex
-% Copyright 2022 TeX Users Group
+% minted.4ht (2024-09-27-09:25), generated from tex4ht-4ht.tex
+% Copyright 2022-2024 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -16,7 +16,7 @@
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2022-10-31-13:02}
+\immediate\write-1{version 2024-09-27-09:25}
\NewConfigure{InlineCode}{2}
@@ -43,23 +43,6 @@
% support for background color in Minted listings
\NewConfigure{MintedColorbg}{2}
-\renewenvironment{minted@colorbg}[1]{%
- \colorlet{shadecolor}{#1}%
- \extractcolorspec{shadecolor}{\:tempa}%
- \expandafter\convertcolorspec\:tempa{HTML}\minted:bgcolor%
- \a:MintedColorbg%
- }
- {\b:MintedColorbg\medskip\noindent}
-
-% support for background color in Minted listings
-\NewConfigure{MintedColorbg}{2}
-\renewenvironment{minted@colorbg}[1]{%
- \colorlet{shadecolor}{#1}%
- \extractcolorspec{shadecolor}{\:tempa}%
- \expandafter\convertcolorspec\:tempa{HTML}\minted:bgcolor%
- \a:MintedColorbg%
- }
- {\b:MintedColorbg\medskip\noindent}
\NewConfigure{mintedfixes}[1]{\concat:config\a:mintedfixes{#1}}
\let\a:mintedfixes\empty
diff --git a/Master/texmf-dist/tex/generic/tex4ht/multind.4ht b/Master/texmf-dist/tex/generic/tex4ht/multind.4ht
index f6dd5dfcd70..f50bf779fb3 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/multind.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/multind.4ht
@@ -1,39 +1,32 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% multind.4ht 2009-05-21-09:32 %
-% Copyright (C) 1999--2009 Eitan M. Gurari %
-% %
-% This work may be distributed and/or modified under the %
-% conditions of the LaTeX Project Public License, either %
-% version 1.3c of this license or (at your option) any %
-% later version. The latest version of this license is %
-% in %
-% http://www.latex-project.org/lppl.txt %
-% and version 1.3c or later is part of all distributions %
-% of LaTeX version 2005/12/01 or later. %
-% %
-% This work has the LPPL maintenance status "maintained".%
-% %
-% This Current Maintainer of this work %
-% is Eitan M. Gurari. %
-% %
-% If you modify this program your changing its signature %
-% with a directive of the following form will be %
-% appreciated. %
-% \message{signature} %
-% %
-% gurari@cse.ohio-state.edu %
-% http://www.cse.ohio-state.edu/~gurari %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\immediate\write-1{version 2009-05-21-09:32}
+% multind.4ht (2025-01-05-08:19), generated from tex4ht-4ht.tex
+% Copyright 1999-2009 Eitan M. Gurari
+% Copyright 2009-2025 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% https://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <https://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2025-01-05-08:19}
\pend:defII\@wrindex{\warn:idx{##1}\@ifundefined{##1@idxfile}{}{\html:addr
- \hbox{\Link-{}{dx\last:haddr
+ \hbox{\Link-{}{\a:indexhaddr
}\EndLink}%
\edef\:temp{\expandafter
\write\csname ##1@idxfile\endcsname{\string
\beforeentry{\RefFileNumber
- \FileNumber}{dx\last:haddr
+ \FileNumber}{\a:indexhaddr
}{\a:makeindex}}}\:temp
}}
\ifx \a:makeindex\:UnDef
diff --git a/Master/texmf-dist/tex/generic/tex4ht/nicematrix.4ht b/Master/texmf-dist/tex/generic/tex4ht/nicematrix.4ht
new file mode 100644
index 00000000000..c16def5b0fd
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/nicematrix.4ht
@@ -0,0 +1,28 @@
+% nicematrix.4ht (2024-10-18-14:47), generated from tex4ht-4ht.tex
+% Copyright 2024 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <http://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2024-10-18-14:47}
+
+\ExplSyntaxOn
+\bool_set_true:N\g__nicematrix_no_test_for_array_bool
+
+\ExplSyntaxOff
+
+\Hinput{nicematrix}
+\endinput
+
diff --git a/Master/texmf-dist/tex/generic/tex4ht/piton.4ht b/Master/texmf-dist/tex/generic/tex4ht/piton.4ht
index b1140b4094b..fc79912f695 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/piton.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/piton.4ht
@@ -1,5 +1,5 @@
-% piton.4ht (2023-10-13-14:15), generated from tex4ht-4ht.tex
-% Copyright 2023 TeX Users Group
+% piton.4ht (2024-10-01-13:46), generated from tex4ht-4ht.tex
+% Copyright 2023-2024 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -16,10 +16,43 @@
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2023-10-13-14:15}
+\immediate\write-1{version 2024-10-01-13:46}
\ExplSyntaxOn
+\IfPackageLoadedTF{xcolor}{}{\RequirePackage{xcolor}}
+
+\def\:pitonvisiblespace{ \HCode{\string&\#x2423;} }
+\cs_new_protected:Npn \:__piton_replace_spaces:n #1
+ {
+ \tl_set:Nn \l_tmpa_tl { #1 }
+ \bool_if:NTF \l__piton_show_spaces_bool
+ {
+ \tl_set:Nn \l__piton_space_tl {\:pitonvisiblespace} % U+2423
+ \regex_replace_all:nnN { \x20 } {\c{:pitonvisiblespace}} \l_tmpa_tl
+ }
+ {
+ \bool_if:NTF \l__piton_break_lines_in_Piton_bool
+ {
+ \regex_replace_all:nnN
+ { \x20 }
+ { \c { __piton_breakable_space: } }
+ \l_tmpa_tl
+ \regex_replace_all:nnN
+ { \c { l__piton_space_tl } }
+ { \c { __piton_breakable_space: } }
+ \l_tmpa_tl
+ }
+ {
+ \regex_replace_all:nnN { \x20 } { \x20 } \l_tmpa_tl
+ }
+ }
+ \l_tmpa_tl
+ }
+
+
+\HLet\__piton_replace_spaces:n\:__piton_replace_spaces:n
+
\NewConfigure{pitonline}{3}
\NewConfigure{pitonnumber}{2}
diff --git a/Master/texmf-dist/tex/generic/tex4ht/qtree.4ht b/Master/texmf-dist/tex/generic/tex4ht/qtree.4ht
new file mode 100644
index 00000000000..be1c26b28e8
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/qtree.4ht
@@ -0,0 +1,32 @@
+% qtree.4ht (2024-11-20-13:31), generated from tex4ht-4ht.tex
+% Copyright 2024 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <http://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2024-11-20-13:31}
+
+
+\NewConfigure{qtree}{2}
+
+\pend:def\Tree{\a:qtree}
+\append:def\endTree{\b:qtree}
+
+\Configure{qtree}{\Picture+[\csname a:Picture-alt\endcsname]{}}{\EndPicture}
+
+
+\Hinput{qtree}
+\endinput
+
diff --git a/Master/texmf-dist/tex/generic/tex4ht/resizegather-hooks.4ht b/Master/texmf-dist/tex/generic/tex4ht/resizegather-hooks.4ht
new file mode 100644
index 00000000000..1595badca7a
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/resizegather-hooks.4ht
@@ -0,0 +1,27 @@
+% resizegather-hooks.4ht (2024-12-06-14:38), generated from tex4ht-4ht.tex
+% Copyright 2024 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <http://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2024-12-06-14:38}
+
+
+% this option should be enough to disable redefinition of equations
+% and other math environments
+\PassOptionsToPackage{equations=false}{resizegather}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/generic/tex4ht/resizegather.4ht b/Master/texmf-dist/tex/generic/tex4ht/resizegather.4ht
new file mode 100644
index 00000000000..88fd73c5bf6
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/resizegather.4ht
@@ -0,0 +1,25 @@
+% resizegather.4ht (2024-12-06-14:38), generated from tex4ht-4ht.tex
+% Copyright 2024 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <http://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2024-12-06-14:38}
+
+
+
+\Hinput{resizegather}
+\endinput
+
diff --git a/Master/texmf-dist/tex/generic/tex4ht/splitidx.4ht b/Master/texmf-dist/tex/generic/tex4ht/splitidx.4ht
index b02443f2b07..e0f229fc9ea 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/splitidx.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/splitidx.4ht
@@ -1,30 +1,23 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% splitidx.4ht 2009-05-21-09:32 %
-% Copyright (C) 2003--2009 Eitan M. Gurari %
-% %
-% This work may be distributed and/or modified under the %
-% conditions of the LaTeX Project Public License, either %
-% version 1.3c of this license or (at your option) any %
-% later version. The latest version of this license is %
-% in %
-% http://www.latex-project.org/lppl.txt %
-% and version 1.3c or later is part of all distributions %
-% of LaTeX version 2005/12/01 or later. %
-% %
-% This work has the LPPL maintenance status "maintained".%
-% %
-% This Current Maintainer of this work %
-% is Eitan M. Gurari. %
-% %
-% If you modify this program your changing its signature %
-% with a directive of the following form will be %
-% appreciated. %
-% \message{signature} %
-% %
-% gurari@cse.ohio-state.edu %
-% http://www.cse.ohio-state.edu/~gurari %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\immediate\write-1{version 2009-05-21-09:32}
+% splitidx.4ht (2025-01-05-08:19), generated from tex4ht-4ht.tex
+% Copyright 2003-2009 Eitan M. Gurari
+% Copyright 2009-2025 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% https://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <https://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2025-01-05-08:19}
\def\warn:idx#1{%
\expandafter\ifx \csname #1warn:idx\endcsname\relax
@@ -46,20 +39,20 @@
\if@splitidx
\warn:idx{##1}%
\@ifundefined{@indexfile@##1}{}{\html:addr
- \hbox{\Link-{}{dx\last:haddr
+ \hbox{\Link-{}{\a:indexhaddr
}\EndLink}%
\edef\:temp{\expandafter
\write\csname @indexfile@##1\endcsname{\expandafter
\string\a:idxmake{\RefFileNumber
- \FileNumber}{dx\last:haddr
+ \FileNumber}{\a:indexhaddr
}{\a:makeindex}}}\:temp}%
\else
\warn:idx{\jobname}%
- \html:addr \hbox{\Link-{}{dx\last:haddr
+ \html:addr \hbox{\Link-{}{\a:indexhaddr
}\EndLink
\edef\:temp{%
\write\@indexfile{\expandafter\string\a:idxmake{\RefFileNumber
- \FileNumber}{dx\last:haddr
+ \FileNumber}{\a:indexhaddr
}{\a:makeindex}}}\:temp}%
\fi
}
diff --git a/Master/texmf-dist/tex/generic/tex4ht/standalone.4ht b/Master/texmf-dist/tex/generic/tex4ht/standalone.4ht
new file mode 100644
index 00000000000..e022c4adb2c
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/standalone.4ht
@@ -0,0 +1,29 @@
+% standalone.4ht (2025-01-23-12:56), generated from tex4ht-4ht.tex
+% Copyright 2025 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <http://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2025-01-23-12:56}
+
+% save the original meaning if we want to use it eventually
+\let\:standaloneenv\standaloneenv
+% but disable if by default
+\let\standaloneenv\@gobble
+
+
+\Hinput{standalone}
+\endinput
+
diff --git a/Master/texmf-dist/tex/generic/tex4ht/stmaryrd.4ht b/Master/texmf-dist/tex/generic/tex4ht/stmaryrd.4ht
new file mode 100644
index 00000000000..74c11de6878
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/stmaryrd.4ht
@@ -0,0 +1,25 @@
+% stmaryrd.4ht (2024-10-11-14:13), generated from tex4ht-4ht.tex
+% Copyright 2024 TeX Users Group
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work
+% is the TeX4ht Project <http://tug.org/tex4ht>.
+%
+% If you modify this program, changing the
+% version identification would be appreciated.
+\immediate\write-1{version 2024-10-11-14:13}
+
+
+
+\Hinput{stmaryrd}
+\endinput
+
diff --git a/Master/texmf-dist/tex/generic/tex4ht/svg.4ht b/Master/texmf-dist/tex/generic/tex4ht/svg.4ht
index 1a745704f07..172c9be5a3e 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/svg.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/svg.4ht
@@ -1,5 +1,5 @@
-% svg.4ht (2021-04-18-08:39), generated from tex4ht-4ht.tex
-% Copyright 2018-2021 TeX Users Group
+% svg.4ht (2025-01-09-13:20), generated from tex4ht-4ht.tex
+% Copyright 2018-2025 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -16,7 +16,7 @@
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2021-04-18-08:39}
+\immediate\write-1{version 2025-01-09-13:20}
\renewcommand\includesvg[2][]{%
% get file name with \svgpath support
@@ -39,7 +39,7 @@
\fi%
\expandafter\includegraphics\expandafter[\svg@tempb]{\svg@file@base.\svg@file@ext}
\else
- \typeout{SVG file #1 cannot be found}
+ \PackageWarning{svg.4ht}{SVG file "#2" cannot be found}
\fi
}
diff --git a/Master/texmf-dist/tex/generic/tex4ht/tex4ht.4ht b/Master/texmf-dist/tex/generic/tex4ht/tex4ht.4ht
index 4a90577d7c4..3e702545ac1 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/tex4ht.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/tex4ht.4ht
@@ -1,7 +1,7 @@
\ifnum\the\catcode`\%=14\else \expandafter\edef\csname
\string:RestoreCatcodes\endcsname{\catcode`\%\the
\catcode`\%}\catcode`\%14\fi
-% tex4ht.4ht (2024-05-06-13:38), generated from tex4ht-options.tex
+% tex4ht.4ht (2024-09-24-10:24), generated from tex4ht-options.tex
% Copyright 2009-2024 TeX Users Group
% Copyright 1997-2009 Eitan M. Gurari
%
@@ -9,18 +9,18 @@
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
-% is the TeX4ht Project <http://tug.org/tex4ht>.
+% is the TeX4ht Project <https://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2024-05-06-13:38}
+\immediate\write-1{version 2024-09-24-10:24}
\expandafter\edef\csname :RestoreCatcodes\endcsname{%
\expandafter\ifx \csname :RestoreCatcodes\endcsname\relax\else
diff --git a/Master/texmf-dist/tex/generic/tex4ht/tex4ht.sty b/Master/texmf-dist/tex/generic/tex4ht/tex4ht.sty
index 82d1e3bc5e4..1acc8e30f32 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/tex4ht.sty
+++ b/Master/texmf-dist/tex/generic/tex4ht/tex4ht.sty
@@ -1,7 +1,7 @@
\ifnum\the\catcode`\%=14\else\expandafter\edef\csname
\string:RestoreCatcodes\endcsname{\catcode`\%\the
\catcode`\%}\catcode`\%14\fi
-% tex4ht.sty (2024-06-23-13:56), generated from tex4ht-sty.tex
+% tex4ht.sty (2024-09-24-10:22), generated from tex4ht-sty.tex
% Copyright 2009-2024 TeX Users Group
% Copyright 1996-2009 Eitan M. Gurari
%
@@ -20,7 +20,7 @@
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2024-06-23-13:56}
+\immediate\write-1{version 2024-09-24-10:22}
\ifx \Preamble\UnDef \else
@@ -1446,7 +1446,7 @@
\fi
\fi }
-\def\Ref#1{\expandafter\ifx
+\def\XRef#1{\expandafter\ifx
\csname cw:#1\endcsname \relax \:NoTag{#1}%
\else \csname cw:#1\endcsname \fi}
\def\LikeRef#1{\expandafter\ifx
@@ -1486,7 +1486,7 @@
\openin15=\jobname.xref
\ifeof15 \def\:NoTag#1{\hbox{$???$}}
\else \def\:NoTag#1{\hbox{$???$}
- \:warning{\string\Ref\string{\string#1\string}?}}
+ \:warning{\string\XRef\string{\string#1\string}?}}
\ifx \:::HRefTag\:UnDef\else
\pend:defII\:::HRefTag{%
\if \relax##1\relax\else
diff --git a/Master/texmf-dist/tex/generic/tex4ht/th4.4ht b/Master/texmf-dist/tex/generic/tex4ht/th4.4ht
index 894c2416d4c..1bfc57b5a3c 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/th4.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/th4.4ht
@@ -1,23 +1,23 @@
-% th4.4ht (2021-12-02-14:01), generated from tex4ht-4ht.tex
+% th4.4ht (2024-09-24-10:22), generated from tex4ht-4ht.tex
% Copyright 1997-2009 Eitan M. Gurari
-% Copyright 2009-2021 TeX Users Group
+% Copyright 2009-2024 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
-% is the TeX4ht Project <http://tug.org/tex4ht>.
+% is the TeX4ht Project <https://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2021-12-02-14:01}
+\immediate\write-1{version 2024-09-24-10:22}
\ifHtml
@@ -420,19 +420,19 @@
\def\TagCh#1{\Tag{#1(C }{\theChapterCounter}\Tag
{#1(c }{\:curch}}
-\def\RefCh#1{\Link{\LikeRef{#1(c }}{}Chapter\ \Ref
+\def\RefCh#1{\Link{\LikeRef{#1(c }}{}Chapter\ \XRef
{#1(C }\EndLink}
\def\TagApp#1{\Tag{#1(A }{\theChapterCounter}\Tag
{#1(a }{\:curch}}
-\def\RefApp#1{\Link{\LikeRef{#1(a }}{}Appendix\ \Ref
+\def\RefApp#1{\Link{\LikeRef{#1(a }}{}Appendix\ \XRef
{#1(A }\EndLink}
\def\TagSec#1{\Tag{#1(S }{\theSectionCounter}\Tag
{#1(s }{\:cursec}}
-\def\RefSec#1{\Link{\LikeRef{#1(s }}{}Section\ \Ref
+\def\RefSec#1{\Link{\LikeRef{#1(s }}{}Section\ \XRef
{#1(S }\EndLink}
\def\TagPage#1{%
\Link{}{page#1}\EndLink\Tag{#1}{}}
-\def\RefPage#1{\Link{page#1}{}\Ref{#1}\EndLink}
+\def\RefPage#1{\Link{page#1}{}\XRef{#1}\EndLink}
\def\List#1{\begingroup {\hfil\break\IgnorePar}%
\HAssign\ListCounter0
diff --git a/Master/texmf-dist/tex/generic/tex4ht/unicode.4ht b/Master/texmf-dist/tex/generic/tex4ht/unicode.4ht
index c88859b04cc..506d0d78b51 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/unicode.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/unicode.4ht
@@ -1,23 +1,23 @@
-% unicode.4ht (2023-04-02-08:01), generated from tex4ht-unicode.tex
-% Copyright 2009-2023 TeX Users Group
+% unicode.4ht (2024-12-15-07:18), generated from tex4ht-unicode.tex
+% Copyright 2009-2024 TeX Users Group
% Copyright 1998-2009 Eitan M. Gurari
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
-% is the TeX4ht Project <http://tug.org/tex4ht>.
+% is the TeX4ht Project <https://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2023-04-02-08:01}
+\immediate\write-1{version 2024-12-15-07:18}
\exit:ifnot{8859-6,%
SIunits,%
@@ -301,6 +301,35 @@ e{0113}I{012A}i{012B}O{014C}o{014D}U{016A}u{016B}Y{0232}%
y{0233}G{1E20}g{1E21}%
{}{}}
{\a:accents{}{#1}} {\b:accents{bar}{#1}{#2}}
+ %%%%
+\def\:tempa#1{%
+\Configure{accent}\ddot\ddot{H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}%
+t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}%
+a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}%
+Y{0178}\i{00EF}%
+{}{34}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\"\expandafter\endcsname
+ \csname #1\string\"\endcsname{H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}%
+t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}%
+a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}%
+Y{0178}\i{00EF}%
+{}{34}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\r\expandafter\endcsname
+ \csname #1\string\r\endcsname{A{00C5}a{00E5}U{016E}u{016F}%
+{}{}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\v\expandafter\endcsname
+ \csname #1\string\v\endcsname{C{010C}c{010D}D{010E}d{010F}%
+E{011A}e{011B}L{013D}l{013E}N{0147}n{0148}R{0158}r{0159}%
+S{0160}s{0161}T{0164}t{0165}Z{017D}z{017E}A{01CD}a{01CE}I{01CF}%
+i{01D0}O{01D1}o{01D2}U{01D3}u{01D4}G{01E6}g{01E7}K{01E8}k{01E9}%
+j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
+{}{}}
+ {\a:accents{}{##1}} {\b:accents{check}{##1}{##2}}
+}
+\:tempa{T5}
\ifx \mathml:on\:UnDef
% this configuration causes wrong rendering of accents in the default TeX4ht
@@ -572,6 +601,7 @@ R{1E5E}r{1E5F}T{1E6E}t{1E6F}Z{1E94}z{1E95}h{1E96}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsart}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -615,7 +645,6 @@ R{1E5E}r{1E5F}T{1E6E}t{1E6F}Z{1E94}z{1E95}h{1E96}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsmath}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -683,6 +712,7 @@ R{1E5E}r{1E5F}T{1E6E}t{1E6F}Z{1E94}z{1E95}h{1E96}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amstex1}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -698,6 +728,7 @@ R{1E5E}r{1E5F}T{1E6E}t{1E6F}Z{1E94}z{1E95}h{1E96}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsppt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -712,6 +743,7 @@ R{1E5E}r{1E5F}T{1E6E}t{1E6F}Z{1E94}z{1E95}h{1E96}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{babel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -733,7 +765,6 @@ Y{0178}\i{00EF}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{plain}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -961,6 +992,35 @@ e{0113}I{012A}i{012B}O{014C}o{014D}U{016A}u{016B}Y{0232}%
y{0233}G{1E20}g{1E21}%
{}{}}
{\a:accents{}{#1}} {\b:accents{bar}{#1}{#2}}
+ %%%%
+\def\:tempa#1{%
+\Configure{accent}\ddot\ddot{H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}%
+t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}%
+a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}%
+Y{0178}\i{00EF}%
+{}{34}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\"\expandafter\endcsname
+ \csname #1\string\"\endcsname{H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}%
+t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}%
+a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}%
+Y{0178}\i{00EF}%
+{}{34}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\r\expandafter\endcsname
+ \csname #1\string\r\endcsname{A{00C5}a{00E5}U{016E}u{016F}%
+{}{}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\v\expandafter\endcsname
+ \csname #1\string\v\endcsname{C{010C}c{010D}D{010E}d{010F}%
+E{011A}e{011B}L{013D}l{013E}N{0147}n{0148}R{0158}r{0159}%
+S{0160}s{0161}T{0164}t{0165}Z{017D}z{017E}A{01CD}a{01CE}I{01CF}%
+i{01D0}O{01D1}o{01D2}U{01D3}u{01D4}G{01E6}g{01E7}K{01E8}k{01E9}%
+j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
+{}{}}
+ {\a:accents{}{##1}} {\b:accents{check}{##1}{##2}}
+}
+\:tempa{T5}
\ifx \mathml:on\:UnDef
% this configuration causes wrong rendering of accents in the default TeX4ht
@@ -1212,6 +1272,22 @@ R{1E5E}r{1E5F}T{1E6E}t{1E6F}Z{1E94}z{1E95}h{1E96}%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{revsymb}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1272,6 +1348,15 @@ R{1E5E}r{1E5F}T{1E6E}t{1E6F}Z{1E94}z{1E95}h{1E96}%
+
+
+
+
+
+
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{cp1256}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1282,7 +1367,6 @@ R{1E5E}r{1E5F}T{1E6E}t{1E6F}Z{1E94}z{1E95}h{1E96}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{8859-6}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1356,6 +1440,18 @@ R{1E5E}r{1E5F}T{1E6E}t{1E6F}Z{1E94}z{1E95}h{1E96}%
+
+
+
+
+
+
+
+
+
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{eurosym}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1368,6 +1464,7 @@ R{1E5E}r{1E5F}T{1E6E}t{1E6F}Z{1E94}z{1E95}h{1E96}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{SIunits}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1379,7 +1476,6 @@ R{1E5E}r{1E5F}T{1E6E}t{1E6F}Z{1E94}z{1E95}h{1E96}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{sistyle}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1480,6 +1576,13 @@ R{1E5E}r{1E5F}T{1E6E}t{1E6F}Z{1E94}z{1E95}h{1E96}%
+
+
+
+
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{cp850}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1684,6 +1787,35 @@ e{0113}I{012A}i{012B}O{014C}o{014D}U{016A}u{016B}Y{0232}%
y{0233}G{1E20}g{1E21}%
{}{}}
{\a:accents{}{#1}} {\b:accents{bar}{#1}{#2}}
+ %%%%
+\def\:tempa#1{%
+\Configure{accent}\ddot\ddot{H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}%
+t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}%
+a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}%
+Y{0178}\i{00EF}%
+{}{34}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\"\expandafter\endcsname
+ \csname #1\string\"\endcsname{H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}%
+t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}%
+a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}%
+Y{0178}\i{00EF}%
+{}{34}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\r\expandafter\endcsname
+ \csname #1\string\r\endcsname{A{00C5}a{00E5}U{016E}u{016F}%
+{}{}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\v\expandafter\endcsname
+ \csname #1\string\v\endcsname{C{010C}c{010D}D{010E}d{010F}%
+E{011A}e{011B}L{013D}l{013E}N{0147}n{0148}R{0158}r{0159}%
+S{0160}s{0161}T{0164}t{0165}Z{017D}z{017E}A{01CD}a{01CE}I{01CF}%
+i{01D0}O{01D1}o{01D2}U{01D3}u{01D4}G{01E6}g{01E7}K{01E8}k{01E9}%
+j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
+{}{}}
+ {\a:accents{}{##1}} {\b:accents{check}{##1}{##2}}
+}
+\:tempa{T5}
\fi
@@ -1811,6 +1943,35 @@ e{0113}I{012A}i{012B}O{014C}o{014D}U{016A}u{016B}Y{0232}%
y{0233}G{1E20}g{1E21}%
{}{}}
{\a:accents{}{#1}} {\b:accents{bar}{#1}{#2}}
+ %%%%
+\def\:tempa#1{%
+\Configure{accent}\ddot\ddot{H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}%
+t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}%
+a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}%
+Y{0178}\i{00EF}%
+{}{34}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\"\expandafter\endcsname
+ \csname #1\string\"\endcsname{H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}%
+t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}%
+a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}%
+Y{0178}\i{00EF}%
+{}{34}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\r\expandafter\endcsname
+ \csname #1\string\r\endcsname{A{00C5}a{00E5}U{016E}u{016F}%
+{}{}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\v\expandafter\endcsname
+ \csname #1\string\v\endcsname{C{010C}c{010D}D{010E}d{010F}%
+E{011A}e{011B}L{013D}l{013E}N{0147}n{0148}R{0158}r{0159}%
+S{0160}s{0161}T{0164}t{0165}Z{017D}z{017E}A{01CD}a{01CE}I{01CF}%
+i{01D0}O{01D1}o{01D2}U{01D3}u{01D4}G{01E6}g{01E7}K{01E8}k{01E9}%
+j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
+{}{}}
+ {\a:accents{}{##1}} {\b:accents{check}{##1}{##2}}
+}
+\:tempa{T5}
\fi
@@ -1937,6 +2098,35 @@ e{0113}I{012A}i{012B}O{014C}o{014D}U{016A}u{016B}Y{0232}%
y{0233}G{1E20}g{1E21}%
{}{}}
{\a:accents{}{#1}} {\b:accents{bar}{#1}{#2}}
+ %%%%
+\def\:tempa#1{%
+\Configure{accent}\ddot\ddot{H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}%
+t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}%
+a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}%
+Y{0178}\i{00EF}%
+{}{34}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\"\expandafter\endcsname
+ \csname #1\string\"\endcsname{H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}%
+t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}%
+a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}%
+Y{0178}\i{00EF}%
+{}{34}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\r\expandafter\endcsname
+ \csname #1\string\r\endcsname{A{00C5}a{00E5}U{016E}u{016F}%
+{}{}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\v\expandafter\endcsname
+ \csname #1\string\v\endcsname{C{010C}c{010D}D{010E}d{010F}%
+E{011A}e{011B}L{013D}l{013E}N{0147}n{0148}R{0158}r{0159}%
+S{0160}s{0161}T{0164}t{0165}Z{017D}z{017E}A{01CD}a{01CE}I{01CF}%
+i{01D0}O{01D1}o{01D2}U{01D3}u{01D4}G{01E6}g{01E7}K{01E8}k{01E9}%
+j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
+{}{}}
+ {\a:accents{}{##1}} {\b:accents{check}{##1}{##2}}
+}
+\:tempa{T5}
\fi
@@ -2121,6 +2311,35 @@ e{0113}I{012A}i{012B}O{014C}o{014D}U{016A}u{016B}Y{0232}%
y{0233}G{1E20}g{1E21}%
{}{}}
{\a:accents{}{#1}} {\b:accents{bar}{#1}{#2}}
+ %%%%
+\def\:tempa#1{%
+\Configure{accent}\ddot\ddot{H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}%
+t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}%
+a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}%
+Y{0178}\i{00EF}%
+{}{34}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\"\expandafter\endcsname
+ \csname #1\string\"\endcsname{H{1E26}h{1E27}W{1E84}w{1E85}X{1E8C}x{1E8D}%
+t{1E97}A{00C4}E{00CB}I{00CF}O{00D6}U{00DC}%
+a{00E4}e{00EB}i{00EF}o{00F6}u{00FC}y{00FF}%
+Y{0178}\i{00EF}%
+{}{34}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\r\expandafter\endcsname
+ \csname #1\string\r\endcsname{A{00C5}a{00E5}U{016E}u{016F}%
+{}{}}
+ {\a:accents{}{##1}} {\b:accents{uml}{##1}{##2}}
+\expand:after{\Configure{accent}}\csname #1\string\v\expandafter\endcsname
+ \csname #1\string\v\endcsname{C{010C}c{010D}D{010E}d{010F}%
+E{011A}e{011B}L{013D}l{013E}N{0147}n{0148}R{0158}r{0159}%
+S{0160}s{0161}T{0164}t{0165}Z{017D}z{017E}A{01CD}a{01CE}I{01CF}%
+i{01D0}O{01D1}o{01D2}U{01D3}u{01D4}G{01E6}g{01E7}K{01E8}k{01E9}%
+j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
+{}{}}
+ {\a:accents{}{##1}} {\b:accents{check}{##1}{##2}}
+}
+\:tempa{T5}
\fi
@@ -2204,5 +2423,10 @@ s{015B}u{00FA}y{00FD}z{017A}j{FFFD}J{FFDD}\i{00ED}\j{FFFD}%
+
+
+
+
+
\endinput
diff --git a/Master/texmf-dist/tex/generic/tex4ht/usepackage.4ht b/Master/texmf-dist/tex/generic/tex4ht/usepackage.4ht
index 67a3cfdb4bb..5349e5cc900 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/usepackage.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/usepackage.4ht
@@ -1,4 +1,4 @@
-% usepackage.4ht (2024-09-09-13:35), generated from tex4ht-4ht.tex
+% usepackage.4ht (2024-12-06-14:38), generated from tex4ht-4ht.tex
% Copyright 2003-2009 Eitan M. Gurari
% Copyright 2009-2024 TeX Users Group
%
@@ -17,7 +17,7 @@
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2024-09-09-13:35}
+\immediate\write-1{version 2024-12-06-14:38}
\def\:temp{tex4ht}\ifx \:temp\@currname
\:warning{\string\usepackage{tex4ht} again?}
@@ -85,18 +85,22 @@
\AddToHook{package/hypdoc/before}{\SUPOff}
\AddToHook{package/hypdoc/after}{\SUPOn}
\Configure{PackageHooks}{mathtools.sty}{mathtools-hooks.4ht}
+\Configure{PackageHooks}{resizegather.sty}{resizegather-hooks.4ht}
\Configure{PackageHooks}{babel.sty}{babel-sty-hooks.4ht}
\Configure{PackageHooks}{minted.sty}{minted-sty-hooks.4ht}
\Configure{PackageHooks}{xyling.sty}{xyling-hooks.4ht}
\Configure{PackageHooks}{graphics.sty}{graphics-hooks.4ht}
\Configure{PackageHooks}{graphbox.sty}{graphbox-hooks.4ht}
\Configure{PackageHooks}{xcolor.sty}{xcolor-hooks.4ht}
+\Configure{PackageHooks}{colortbl.sty}{colortbl-hooks.4ht}
\Configure{PackageHooks}{enumitem.sty}{enumitem-hooks.4ht}
\Configure{PackageHooks}{imakeidx.sty}{imakeidx-hooks.4ht}
\Configure{PackageHooks}{fancyhdr.sty}{fancyhdr-hooks.4ht}
\Configure{PackageHooks}{exerquiz.sty}{exerquiz-hooks.4ht}
\Configure{PackageHooks}{hyperxmp.sty}{hyperxmp-hooks.4ht}
\Configure{PackageHooks}{datetime2.sty}{datetime2-hooks.4ht}
+\Configure{PackageHooks}{manyfoot.sty}{manyfoot-hooks.4ht}
+\Configure{PackageHooks}{bigfoot.sty}{bigfoot-hooks.4ht}
\endinput
diff --git a/Master/texmf-dist/tex/generic/tikzducks/t-tikzducks.mkiv b/Master/texmf-dist/tex/generic/tikzducks/t-tikzducks.mkiv
index 19af36180b6..21a44d4a7dd 100644
--- a/Master/texmf-dist/tex/generic/tikzducks/t-tikzducks.mkiv
+++ b/Master/texmf-dist/tex/generic/tikzducks/t-tikzducks.mkiv
@@ -9,12 +9,12 @@
% https://github.com/samcarter/tikzducks
%
% Released under the LaTeX Project Public License v1.3c or later
-% See http://www.latex-project.org/lppl.txt
+% See https://www.latex-project.org/lppl.txt
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Code for this ConTeXt User Module kindly provided by @JairoAdelRio https://github.com/samcarter/tikzducks/pull/25
-\writestatus{loading}{ConTeXt User Module / TikZDucks 2024/04/27 version v1.8 Draw rubber ducks in TikZ}
+\writestatus{loading}{ConTeXt User Module / TikZDucks 2025/01/05 version v1.10 Draw rubber ducks in TikZ}
\setupcolors[state=start]
\usemodule[tikz]
diff --git a/Master/texmf-dist/tex/generic/tikzducks/tikzducks-generic.tex b/Master/texmf-dist/tex/generic/tikzducks/tikzducks-generic.tex
index 25acd13301a..79a18967dcd 100644
--- a/Master/texmf-dist/tex/generic/tikzducks/tikzducks-generic.tex
+++ b/Master/texmf-dist/tex/generic/tikzducks/tikzducks-generic.tex
@@ -9,114 +9,134 @@
% https://github.com/samcarter/tikzducks
%
% Released under the LaTeX Project Public License v1.3c or later
-% See http://www.latex-project.org/lppl.txt
+% See https://www.latex-project.org/lppl.txt
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newif\ifduck@name
-\newif\ifduck@invisible
+\def\duck@listhead{}
+\def\duck@listacces{}
+\def\duck@headtext{head}
+\def\duck@accesstext{acess}
+
+\ExplSyntaxOn
+\NewDocumentCommand{\duck@ini}{om}{
+ \expandafter\newif\csname ifduck@#2\endcsname
+ \def\duck@tmp{#1}
+ \ifx\duck@headtext\duck@tmp
+ \tl_put_right:Nn \duck@listhead { {#2} }
+ \fi
+ \ifx\duck@accesstext\duck@tmp
+ \tl_put_right:Nn \duck@listacces { {#2} }
+ \fi
+}
+\ExplSyntaxOff
+
+\duck@ini{name}
+\duck@ini{invisible}
% Environment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newif\ifduck@water
+\duck@ini{water}
% body parts %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newif\ifduck@grumpy
-\newif\ifduck@laughing
-\newif\ifduck@parrot
+\duck@ini{grumpy}
+\duck@ini{laughing}
+\duck@ini{parrot}
% hair styles %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newif\ifduck@shorthair
-\newif\ifduck@longhair
-\newif\ifduck@crazyhair
-\newif\ifduck@recedinghair
-\newif\ifduck@eyebrow
-\newif\ifduck@beard
-\newif\ifduck@mohican
-\newif\ifduck@mullet
-\newif\ifduck@parting
+\duck@ini[head]{shorthair}
+\duck@ini[head]{longhair}
+\duck@ini[head]{crazyhair}
+\duck@ini[head]{recedinghair}
+\duck@ini{eyebrow}
+\duck@ini[head]{beard}
+\duck@ini[head]{mohican}
+\duck@ini[head]{mullet}
+\duck@ini[head]{parting}
% clothing %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newif\ifduck@clothing
-\newif\ifduck@tshirt
-\newif\ifduck@jacket
-\newif\ifduck@tie
-\newif\ifduck@cape
-\newif\ifduck@stripes
-\newif\ifduck@bowtie
-\newif\ifduck@lapel
-\newif\ifduck@aodai
-\newif\ifduck@scarf
+\duck@ini{clothing}
+\duck@ini{tshirt}
+\duck@ini{jacket}
+\duck@ini{tie}
+\duck@ini[acess]{cape}
+\duck@ini{stripes}
+\duck@ini[acess]{bowtie}
+\duck@ini{lapel}
+\duck@ini{aodai}
+\duck@ini[acess]{scarf}
% Headgear %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newif\ifduck@alien
-\newif\ifduck@hat
-\newif\ifduck@cap
-\newif\ifduck@santa
-\newif\ifduck@unicorn
-\newif\ifduck@magichat
-\newif\ifduck@chef
-\newif\ifduck@witch
-\newif\ifduck@graduate
-\newif\ifduck@beret
-\newif\ifduck@crown
-\newif\ifduck@queencrown
-\newif\ifduck@kingcrown
-\newif\ifduck@peakedcap
-\newif\ifduck@bunny
-\newif\ifduck@tophat
-\newif\ifduck@darthvader
-\newif\ifduck@harlequin
-\newif\ifduck@strawhat
-\newif\ifduck@helmet
-\newif\ifduck@viking
-\newif\ifduck@devil
-\newif\ifduck@conicalhat
-\newif\ifduck@sailor
-\newif\ifduck@bobblehat
+\duck@ini[head]{alien}
+\duck@ini[head]{hat}
+\duck@ini[head]{cap}
+\duck@ini[head]{santa}
+\duck@ini{unicorn}
+\duck@ini[head]{magichat}
+\duck@ini[head]{chef}
+\duck@ini[head]{witch}
+\duck@ini[head]{graduate}
+\duck@ini[head]{beret}
+\duck@ini[head]{crown}
+\duck@ini[head]{queencrown}
+\duck@ini[head]{kingcrown}
+\duck@ini[head]{peakedcap}
+\duck@ini[head]{bunny}
+\duck@ini[head]{tophat}
+\duck@ini[head]{darthvader}
+\duck@ini[head]{harlequin}
+\duck@ini[head]{strawhat}
+\duck@ini[head]{helmet}
+\duck@ini[head]{viking}
+\duck@ini[head]{devil}
+\duck@ini[head]{conicalhat}
+\duck@ini[head]{sailor}
+\duck@ini[head]{bobblehat}
+\duck@ini[head]{sombrero}
% Accessories %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newif\ifduck@glasses
-\newif\ifduck@sunglasses
-\newif\ifduck@squareglasses
-\newif\ifduck@icecream
-\newif\ifduck@book
-\newif\ifduck@magicwand
-\newif\ifduck@cricket
-\newif\ifduck@rollingpin
-\newif\ifduck@signpost
-\newif\ifduck@lightsaber
-\newif\ifduck@cake
-\newif\ifduck@pizza
-\newif\ifduck@hockey
-\newif\ifduck@baguette
-\newif\ifduck@football
-\newif\ifduck@mask
-\newif\ifduck@necklace
-\newif\ifduck@milkshake
-\newif\ifduck@wine
-\newif\ifduck@prison
-\newif\ifduck@speech
-\newif\ifduck@think
-\newif\ifduck@torch
-\newif\ifduck@easter
-\newif\ifduck@basket
-\newif\ifduck@buttons
-\newif\ifduck@sheep
-\newif\ifduck@horsetail
-\newif\ifduck@crozier
-\newif\ifduck@davidlikespineapplepizza
-\newif\ifduck@wing
-\newif\ifduck@stethoscope
-\newif\ifduck@neckerchief
-\newif\ifduck@snowduck
-\newif\ifduck@vampire
-\newif\ifduck@crystalball
-\newif\ifduck@cheese
-\newif\ifduck@shovel
-\newif\ifduck@pickaxe
-\newif\ifduck@strawbroom
-\newif\ifduck@broom
-\newif\ifduck@umbrella
-\newif\ifduck@umbrellaclosed
-\newif\ifduck@handbag
-\newif\ifduck@cocktail
-\newif\ifduck@overleaf
-\newif\ifduck@banana
-\newif\ifduck@stick
+\duck@ini[acess]{glasses}
+\duck@ini[acess]{sunglasses}
+\duck@ini[acess]{squareglasses}
+\duck@ini[acess]{icecream}
+\duck@ini[acess]{book}
+\duck@ini[acess]{magicwand}
+\duck@ini[acess]{cricket}
+\duck@ini[acess]{rollingpin}
+\duck@ini[acess]{signpost}
+\duck@ini[acess]{lightsaber}
+\duck@ini[acess]{cake}
+\duck@ini[acess]{pizza}
+\duck@ini[acess]{hockey}
+\duck@ini[acess]{baguette}
+\duck@ini[acess]{football}
+\duck@ini[acess]{mask}
+\duck@ini[acess]{necklace}
+\duck@ini[acess]{milkshake}
+\duck@ini[acess]{wine}
+\duck@ini[acess]{prison}
+\duck@ini{speech}
+\duck@ini{think}
+\duck@ini[acess]{torch}
+\duck@ini[acess]{easter}
+\duck@ini[acess]{basket}
+\duck@ini{buttons}
+\duck@ini{sheep}
+\duck@ini{horsetail}
+\duck@ini[acess]{crozier}
+\duck@ini{davidlikespineapplepizza}
+\duck@ini{wing}
+\duck@ini[acess]{stethoscope}
+\duck@ini[acess]{neckerchief}
+\duck@ini{snowduck}
+\duck@ini{vampire}
+\duck@ini[acess]{crystalball}
+\duck@ini[acess]{cheese}
+\duck@ini[acess]{shovel}
+\duck@ini[acess]{pickaxe}
+\duck@ini[acess]{strawbroom}
+\duck@ini[acess]{broom}
+\duck@ini[acess]{umbrella}
+\duck@ini[acess]{umbrellaclosed}
+\duck@ini[acess]{handbag}
+\duck@ini[acess]{cocktail}
+\duck@ini{overleaf}
+\duck@ini[acess]{banana}
+\duck@ini[acess]{stick}
+\duck@ini{megaphone}
\tikzset{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -330,7 +350,16 @@
bobblehat/.code = \duck@bobblehattrue
\def\duck@bobblehat{#1},
bobble hat/.forward to = /duck/bobblehat,
- bobblehat/.default = red!70!black,
+ bobblehat/.default = red!70!black,
+ sombrero/.code = \duck@sombrerotrue
+ \def\duck@sombrero{#1},
+ sombrero/.default = orange!70!yellow,
+ sombreroa/.code = \def\duck@sombreroa{#1},
+ sombreroa = green!70!blue,
+ sombrerob/.code = \def\duck@sombrerob{#1},
+ sombrerob = red,
+ sombreroc/.code = \def\duck@sombreroc{#1},
+ sombreroc = blue,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Accessories
@@ -535,7 +564,10 @@
\def\duck@stick{#1},
stick/.default = red!60!green,
leaf/.code = \def\duck@leaf{#1},
- leaf = green!70!red
+ leaf = green!70!red,
+ megaphone/.code = \duck@megaphonetrue
+ \def\duck@megaphone{#1},
+ megaphone/.default = lightgray
}
\def\duck@draw{
@@ -576,6 +608,7 @@
\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))*sqrt(abs((\pgf@xx/1cm)*(\pgf@yy/1cm)-(\pgf@xy/1cm)*(\pgf@yx/1cm)))}%
\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+\pgfmathsetmacro{\decoscalefactor}{sign(\tmpscaleA)*sign(\tmpscaleD)*\scalingfactor}%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -603,6 +636,7 @@
\ifduck@devil
\fill[\duck@devil] (0.7723,2.3756) .. controls (0.6369,2.1184) and (0.7916,2.0228) .. (0.8360,1.9897) .. controls (0.8744,1.9675) and (0.8774,1.9511) .. (0.8853,1.9173) .. controls (0.8853,1.8595) and (0.8407,1.8127) .. (0.7856,1.8127) .. controls (0.7535,1.8178) and (0.7240,1.8231) .. (0.6965,1.8545) .. controls (0.6965,1.8545) and (0.4451,2.2259) .. (0.7723,2.3756) -- cycle;
\fi
+%
% Conical Hat (background) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@conicalhat
\fill[\duck@conicalhat!50!black,rotate=-21] (0.265,1.915) ellipse[x radius=0.79, y radius=0.1];
@@ -909,7 +943,7 @@
% magic hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@magichat
\path[preaction={fill, \duck@magichat!100},rotate=-5,
- pattern=fivepointed stars, pattern color=\duck@magicstars!100]
+ pattern={Stars[distance=1.7mm,radius=0.5mm,angle=32]}, pattern color=\duck@magicstars!100]
(0.36,1.95)--(0.86,2.95)--(1.20,1.85);
\fi
%
@@ -1030,6 +1064,22 @@
\path (0.43,1.3) rectangle (1.5,2.3);
\fi
%
+% sombrero %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@sombrero
+ \begin{scope}[rotate=-20,xshift=8,yshift=2]
+ \fill[\duck@sombrero] (-.45,2) to[in=200] (0,2.8) to[out=-20] (.45,2) -- cycle;
+ \fill[\duck@sombrero] (-0.65, 1.75) .. controls (-0.85, 1.7) and (-0.85, 1.9) .. (-0.85, 1.9) .. controls (-0.30, 2.2) and (0.30, 2.2) .. ( 0.85, 1.9) .. controls ( 0.85, 1.9) and (0.85, 1.7) .. ( 0.65, 1.75) .. controls ( 0.30, 1.95) and (-0.30, 1.95) .. (-0.65, 1.75) -- cycle;
+ \draw[\duck@sombrerob,line width=\scalingfactor*0.8pt] (-0.85, 1.9) .. controls (-0.30, 2.2) and (0.30, 2.2) .. ( 0.85, 1.9);
+ \draw[decorate, decoration={zigzag, amplitude=\decoscalefactor*1pt, segment length=\scalingfactor*6pt}, \duck@sombreroa, line width=\scalingfactor*1pt] (-0.81, 1.8) .. controls (-0.30, 2.1) and (0.30, 2.1) .. ( 0.82, 1.8);
+ \begin{scope}
+ \clip (-.45,2) to[in=200] (0,2.8) to[out=-20] (.45,2) -- cycle;
+ \draw[decorate,decoration={zigzag, amplitude=\decoscalefactor*1pt, segment length=\scalingfactor*3pt},\duck@sombreroa, line width=\scalingfactor*1pt] (-.4,2.4) to[bend left] (.4,2.4);
+ \fill[decorate,decoration={shape backgrounds,shape=circle, shape size=\scalingfactor*2pt, shape evenly spread=7}, \duck@sombreroc] (-.3,2.6) to[bend left] (.3,2.6);
+ \fill[decorate,decoration={shape backgrounds,shape=circle,shape size=\scalingfactor*2pt,shape evenly spread=9},\duck@sombreroc] (-.4,2.18) to[bend left] (.4,2.18);
+ \end{scope}
+ \end{scope}
+\fi
+%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname duckhookhat\endcsname
%
@@ -1422,7 +1472,16 @@
\end{scope}
\fi
%
-% overleaf duck %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% megaphone %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@megaphone
+ \fill[\duck@megaphone] (0.2,1.2) ellipse[x radius=0.05,y radius=0.1];
+ \fill[\duck@megaphone] (-0.4,1.2) ellipse[x radius=0.1,y radius=0.3];
+ \fill[\duck@megaphone] (0.2,1.3) -- (-0.4,1.5) -- (-0.4,0.9) -- (0.2,1.1) -- cycle;
+ \fill[\duck@megaphone!70!black] (-0.4,1.2) ellipse[x radius=0.07,y radius=0.25];
+ \draw[line width=\scalingfactor*2pt,\duck@megaphone] (-0.05,1.05) circle [radius=0.13];
+\fi
+%
+% overleaf duck %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@overleaf
\fill[white] \duckpathoverleaf;
\fi
@@ -1446,8 +1505,8 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\pgfmathdeclarerandomlist{head}{{shorthair}{longhair}{crazyhair}{mohican}{mullet}{beard}{alien}{hat}{cap}{santa}{chef}{graduate}{beret}{magichat}{witch}{crown}{bunny}{peakedcap}{tophat}{queencrown}{kingcrown}{harlequin}{strawhat}{parting}}
-\pgfmathdeclarerandomlist{accessories}{{glasses}{sunglasses}{icecream}{book}{signpost}{magicwand}{cricket}{rollingpin}{lightsaber}{cake}{pizza}{hockey}{baguette}{football}{mask}{necklace}{milkshake}{wine}{prison}{cape}{torch}{crozier}{easter}{stethoscope}{neckerchief}{cheese}{shovel}{pickaxe}{crystalball}}
+\pgfmathdeclarerandomlist{head}{\duck@listhead}
+\pgfmathdeclarerandomlist{accessories}{\duck@listacces}
\def\shuffleducks{%
\pgfmathrandomitem{\head}{head}%
@@ -1459,7 +1518,7 @@
\newcommand*{\randuck}[1][]{%
\shuffleducks%
\duck[\randomhead, \randomaccessories, #1]%
-}
+}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
diff --git a/Master/texmf-dist/tex/generic/tikzducks/tikzducks-plain.tex b/Master/texmf-dist/tex/generic/tikzducks/tikzducks-plain.tex
index 9b01fb4d626..8c83141c581 100644
--- a/Master/texmf-dist/tex/generic/tikzducks/tikzducks-plain.tex
+++ b/Master/texmf-dist/tex/generic/tikzducks/tikzducks-plain.tex
@@ -9,7 +9,7 @@
% https://github.com/samcarter/tikzducks
%
% Released under the LaTeX Project Public License v1.3c or later
-% See http://www.latex-project.org/lppl.txt
+% See https://www.latex-project.org/lppl.txt
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -18,6 +18,8 @@
\input tikz.tex
\usetikzlibrary{calc}%
\usetikzlibrary{patterns}%
+\usetikzlibrary{decorations.shapes}% for sombrero
+\usetikzlibrary{decorations.pathmorphing}
\catcode`\@=11
diff --git a/Master/texmf-dist/tex/generic/tikzducks/tikzducks.sty b/Master/texmf-dist/tex/generic/tikzducks/tikzducks.sty
index 786b0e269a5..6e0822a4a48 100644
--- a/Master/texmf-dist/tex/generic/tikzducks/tikzducks.sty
+++ b/Master/texmf-dist/tex/generic/tikzducks/tikzducks.sty
@@ -9,15 +9,17 @@
% https://github.com/samcarter/tikzducks
%
% Released under the LaTeX Project Public License v1.3c or later
-% See http://www.latex-project.org/lppl.txt
+% See https://www.latex-project.org/lppl.txt
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzducks}[2024/04/27 version v1.8 Draw rubber ducks in TikZ]
+\ProvidesPackage{tikzducks}[2025/01/05 version v1.10 Draw rubber ducks in TikZ]
\RequirePackage{expl3}
\RequirePackage{tikz}
-\usetikzlibrary{patterns} % for the wizard hat
+\usetikzlibrary{patterns.meta} % for the wizard hat
\usetikzlibrary{calc} % for the sports jerseys
+\usetikzlibrary{decorations.shapes} % for sombrero
+\usetikzlibrary{decorations.pathmorphing}
\definecolor{duck@overleafcol}{RGB}{72,172,60}
diff --git a/Master/texmf-dist/tex/generic/tikzducks/tikzlibraryducks.code.tex b/Master/texmf-dist/tex/generic/tikzducks/tikzlibraryducks.code.tex
index 4c90b1f0e63..10a93f31ec2 100644
--- a/Master/texmf-dist/tex/generic/tikzducks/tikzlibraryducks.code.tex
+++ b/Master/texmf-dist/tex/generic/tikzducks/tikzlibraryducks.code.tex
@@ -8,7 +8,7 @@
% https://github.com/samcarter/tikzducks
%
% Released under the LaTeX Project Public License v1.3c or later
-% See http://www.latex-project.org/lppl.txt
+% See https://www.latex-project.org/lppl.txt
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{tikzducks}
diff --git a/Master/texmf-dist/tex/generic/tracklang/tracklang-region-codes.tex b/Master/texmf-dist/tex/generic/tracklang/tracklang-region-codes.tex
index 7e0a92796f6..e0d21bfe3de 100644
--- a/Master/texmf-dist/tex/generic/tracklang/tracklang-region-codes.tex
+++ b/Master/texmf-dist/tex/generic/tracklang/tracklang-region-codes.tex
@@ -7,7 +7,7 @@
%% tracklang.dtx (with options: `tracklang-region-codes.tex,package')
%%
%% tracklang.dtx
-%% Copyright 2022 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -52,7 +52,7 @@
\expandafter\endinput
\fi
\expandafter\def\csname ver@tracklang-region-codes.tex\endcsname{%
- 2022/12/13 v1.6.1 (NLCT) Track Languages Regions}%
+ 2025/01/26 v1.6.4 (NLCT) Track Languages Regions}%
\def\TrackLangRegionMap#1#2#3{%
\@tracklang@enamedef{@tracklang@region@numtoalphaii@#1}{#2}%
\@tracklang@enamedef{@tracklang@region@numtoalphaiii@#1}{#3}%
diff --git a/Master/texmf-dist/tex/generic/tracklang/tracklang-scripts.tex b/Master/texmf-dist/tex/generic/tracklang/tracklang-scripts.tex
index 82e2f091e38..c3a2af98c12 100644
--- a/Master/texmf-dist/tex/generic/tracklang/tracklang-scripts.tex
+++ b/Master/texmf-dist/tex/generic/tracklang/tracklang-scripts.tex
@@ -7,7 +7,7 @@
%% tracklang.dtx (with options: `tracklang-scripts.tex,package')
%%
%% tracklang.dtx
-%% Copyright 2022 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -52,7 +52,7 @@
\expandafter\endinput
\fi
\expandafter\def\csname ver@tracklang-scripts.tex\endcsname{%
- 2022/12/13 v1.6.1 (NLCT) Track Languages Scripts (Generic)}%
+ 2025/01/26 v1.6.4 (NLCT) Track Languages Scripts (Generic)}%
\def\TrackLangScriptMap#1#2#3#4#5{%
\@tracklang@enamedef{TrackLangScript#1}{#1}%
\@tracklang@enamedef{@tracklang@script@numtoalpha@#2}{#1}%
diff --git a/Master/texmf-dist/tex/generic/tracklang/tracklang.tex b/Master/texmf-dist/tex/generic/tracklang/tracklang.tex
index 65286d045d1..c0621564520 100644
--- a/Master/texmf-dist/tex/generic/tracklang/tracklang.tex
+++ b/Master/texmf-dist/tex/generic/tracklang/tracklang.tex
@@ -7,7 +7,7 @@
%% tracklang.dtx (with options: `tracklang.tex,package')
%%
%% tracklang.dtx
-%% Copyright 2022 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -52,7 +52,7 @@
\expandafter\endinput
\fi
\expandafter\def\csname ver@tracklang.tex\endcsname{%
- 2022/12/13 v1.6.1 (NLCT) Track Languages Generic Code}
+ 2025/01/26 v1.6.4 (NLCT) Track Languages Generic Code}
\long\def\@tracklang@ifundef#1#2#3{%
\ifcsname#1\endcsname
\expandafter\ifx\csname #1\endcsname\relax
@@ -78,9 +78,11 @@
}
\fi
\ifx\@@input\undefined
- \let\@tracklang@input\input
+ \let\@tracklang@input\input
+ \def\@tracklang@inputfile#1{\input #1\relax}
\else
- \let\@tracklang@input\@@input
+ \let\@tracklang@input\@@input
+ \def\@tracklang@inputfile#1{\input{#1}}
\fi
\ifx\@nnil\undefined
\def\@tracklang@nnil{\@nil}
@@ -574,6 +576,7 @@
}
\def\@tracklang@languages{}
\def\@tracklang@dialects{}
+\def\@tracklang@regions{}
\def\@tracklang@ifinlist#1#2#3#4{%
\def\@tracklang@doifinlist##1,#1,##2\end@tracklang@doifinlist{%
\def\@before{##1}%
@@ -619,6 +622,10 @@
\def\AddTrackedLanguage#1{%
\AddTrackedDialect{#1}{#1}%
}
+\def\AddTrackedRegion#1#2{%
+ \AddTrackedIsoLanguage{3166-1}{#1}{#2}%
+ \@tracklang@add{#1}{\@tracklang@regions}%
+}
\def\@tracklang@known@langs{}
\def\TrackLangNewLanguage#1#2#3#4#5#6#7{%
\@tracklang@add{#1}{\@tracklang@known@langs}%
@@ -983,7 +990,9 @@
\@tracklang@ifundef{@tracklang@knowniso@3166@#1}%
{}%
{%
- \AddTrackedIsoLanguage{3166-1}%
+ \expandafter \expandafter \expandafter
+ \AddTrackedRegion
+ \expandafter \expandafter \expandafter
{\csname @tracklang@knowniso@3166@#1\endcsname}{#1}%
}%
}
@@ -1360,7 +1369,7 @@
\@end@tracklang@hasthirdchar
{%
\ifx\TrackLangIfKnownNumericRegion\undefined
- \@tracklang@input tracklang-region-codes.tex
+ \@tracklang@inputfile{tracklang-region-codes.tex}%
\fi
\TrackLangIfKnownNumericRegion{\@tracklang@split@pre}%
{%
@@ -1389,28 +1398,28 @@
\def\TrackLangAddExtraRegionFile#1{%
\ifx\TrackLangRegionMap\undefined
\else
- \@tracklang@input #1\relax
+ \@tracklang@inputfile{#1}%
\fi
\@tracklang@add{#1}{\@tracklang@extra@region@filelist}%
}
\def\@tracklang@input@extra@region@files{%
\@tracklang@for\@tracklang@currfile:=\@tracklang@extra@region@filelist\do
{%
- \@tracklang@input\@tracklang@currfile
+ \@tracklang@inputfile{\@tracklang@currfile}%
}%
}
\def\@tracklang@extra@script@filelist{}
\def\TrackLangAddExtraScriptFile#1{%
\ifx\TrackLangScriptMap\undefined
\else
- \@tracklang@input #1\relax
+ \@tracklang@inputfile{#1}%
\fi
\@tracklang@add{#1}{\@tracklang@extra@script@filelist}%
}
\def\@tracklang@input@extra@script@files{%
\@tracklang@for\@tracklang@currfile:=\@tracklang@extra@script@filelist\do
{%
- \@tracklang@input\@tracklang@currfile
+ \@tracklang@inputfile{\@tracklang@currfile}%
}%
}
\def\GetTrackedDialectFromLanguageTag#1#2{%
@@ -1578,15 +1587,16 @@
\expandafter\@tracklang@hasthirdchar
\@TrackLangEnvLang\relax\relax\relax\@end@tracklang@hasthirdchar
{%
- \AddTrackedIsoLanguage{639-2}{\@TrackLangEnvLang}{\@tracklang@lang}%
+ \AddTrackedIsoLanguage{639-2}{\@TrackLangEnvLang}{undetermined}%
}%
{%
- \AddTrackedIsoLanguage{639-1}{\@TrackLangEnvLang}{\@tracklang@lang}%
+ \AddTrackedIsoLanguage{639-1}{\@TrackLangEnvLang}{undetermined}%
}%
}%
\ifx\@TrackLangEnvTerritory\empty
\else
- \AddTrackedIsoLanguage{3166-1}{\@TrackLangEnvTerritory}%
+ \expandafter\AddTrackedRegion\expandafter
+ {\@TrackLangEnvTerritory}%
{\@tracklang@dialect}%
\fi
\ifx\@TrackLangEnvModifier\empty
@@ -1779,6 +1789,7 @@
\TrackLangDeclareLanguageOption{samoan}{sm}{smo}{}{}{}{Latn}
\TrackLangDeclareLanguageOption{sango}{sg}{sag}{}{}{}{Latn}
\TrackLangDeclareLanguageOption{sardinian}{sc}{srd}{}{}{IT}{Latn}
+\TrackLangDeclareLanguageOption{scots}{}{sco}{}{}{}{Latn}
\TrackLangDeclareLanguageOption{scottish}{gd}{gla}{}{}{}{Latn}
\TrackLangDeclareLanguageOption{serbian}{sr}{srp}{}{}{}{Cyrl}
\TrackLangDeclareLanguageOption{shona}{sn}{sna}{}{}{}{Latn}
@@ -1870,14 +1881,14 @@
\@tracklang@namedef{@tracklang@add@#1}{%
\AddTrackedDialect{#1}{#2}%
\AddTrackedLanguageIsoCodes{#2}%
- \AddTrackedIsoLanguage{3166-1}{#3}{#1}%
+ \AddTrackedRegion{#3}{#1}%
\def\@tracklang@dialect{#1}%
}%
\else
\@tracklang@namedef{@tracklang@add@#1}{%
\AddTrackedDialect{#1}{#2}%
\AddTrackedLanguageIsoCodes{#2}%
- \AddTrackedIsoLanguage{3166-1}{#3}{#1}%
+ \AddTrackedRegion{#3}{#1}%
\SetTrackedDialectVariant{#1}{#5}%
\def\@tracklang@dialect{#1}%
}%
@@ -1887,7 +1898,7 @@
\@tracklang@namedef{@tracklang@add@#1}{%
\AddTrackedDialect{#1}{#2}%
\AddTrackedLanguageIsoCodes{#2}%
- \AddTrackedIsoLanguage{3166-1}{#3}{#1}%
+ \AddTrackedRegion{#3}{#1}%
\SetTrackedDialectModifier{#1}{#4}%
\def\@tracklang@dialect{#1}%
}%
@@ -1895,7 +1906,7 @@
\@tracklang@namedef{@tracklang@add@#1}{%
\AddTrackedDialect{#1}{#2}%
\AddTrackedLanguageIsoCodes{#2}%
- \AddTrackedIsoLanguage{3166-1}{#3}{#1}%
+ \AddTrackedRegion{#3}{#1}%
\SetTrackedDialectModifier{#1}{#4}%
\SetTrackedDialectVariant{#1}{#5}%
\def\@tracklang@dialect{#1}%
@@ -2139,6 +2150,16 @@
\long\def\ForEachTrackedDialect#1#2{%
\@tracklang@for#1:=\@tracklang@dialects\do{#2}%
}
+\long\def\AnyTrackedRegions#1#2{%
+ \ifx\@tracklang@regions\empty
+ #2%
+ \else
+ #1%
+ \fi
+}
+\long\def\ForEachTrackedRegion#1#2{%
+ \@tracklang@for#1:=\@tracklang@regions\do{#2}%
+}
\long\def\AnyTrackedLanguages#1#2{%
\ifx\@tracklang@languages\empty
#2%
@@ -2148,6 +2169,81 @@
}
\long\def\IfTrackedLanguageFileExists#1#2#3#4#5{%
\@tracklang@verbose{Finding file for dialect `#1'}%
+ \def\@@tracklang@test@if@file@exists@for@dialect{%
+ \@tracklang@test@if@file@exists@for@dialect
+ }%
+ \def\@@tracklang@test@if@file@exists@for@region{%
+ \@tracklang@test@if@file@exists@for@region
+ }%
+ \def\CurrentTrackedTag{}%
+ \SetCurrentTrackedDialect{#1}%
+ \IfTrackedDialect{#1}%
+ {%
+ \edef\CurrentTrackedIsoCodeI{\TrackedIsoCodeFromLanguage
+ {639-1}{\CurrentTrackedLanguage}}%
+ \edef\CurrentTrackedIsoCodeII{\TrackedIsoCodeFromLanguage
+ {639-2}{\CurrentTrackedLanguage}}%
+ \edef\CurrentTrackedIsoCodeIII{\TrackedIsoCodeFromLanguage
+ {639-3}{\CurrentTrackedLanguage}}%
+ \@tracklang@test@if@file@exists@for@tag{#1}{#2}{#3}%
+ \@tracklang@if@file@exists{#4}{#5}%
+ }%
+ {#5}% unknown dialect
+}
+\long\def\IfTrackedLanguageFileExistsOmitOnlyRegion#1#2#3#4#5{%
+ \@tracklang@verbose{Finding file for dialect `#1'}%
+ \def\@@tracklang@test@if@file@exists@for@dialect{%
+ \@tracklang@test@if@file@exists@for@dialect
+ }%
+ \def\@@tracklang@test@if@file@exists@for@region{%
+ \@tracklang@test@if@file@exists@for@notregiononly
+ }%
+ \def\CurrentTrackedTag{}%
+ \SetCurrentTrackedDialect{#1}%
+ \IfTrackedDialect{#1}%
+ {%
+ \edef\CurrentTrackedIsoCodeI{\TrackedIsoCodeFromLanguage
+ {639-1}{\CurrentTrackedLanguage}}%
+ \edef\CurrentTrackedIsoCodeII{\TrackedIsoCodeFromLanguage
+ {639-2}{\CurrentTrackedLanguage}}%
+ \edef\CurrentTrackedIsoCodeIII{\TrackedIsoCodeFromLanguage
+ {639-3}{\CurrentTrackedLanguage}}%
+ \@tracklang@test@if@file@exists@for@tag{#1}{#2}{#3}%
+ \@tracklang@if@file@exists{#4}{#5}%
+ }%
+ {#5}% unknown dialect
+}
+\long\def\IfTrackedLanguageFileExistsOmitDialectLabelOmitOnlyRegion#1#2#3#4#5{%
+ \@tracklang@verbose{Finding file for dialect `#1'}%
+ \def\@@tracklang@test@if@file@exists@for@dialect{%
+ \@tracklang@test@if@file@exists@for@skipdialectlabel
+ }%
+ \def\@@tracklang@test@if@file@exists@for@region{%
+ \@tracklang@test@if@file@exists@for@notregiononly
+ }%
+ \def\CurrentTrackedTag{}%
+ \SetCurrentTrackedDialect{#1}%
+ \IfTrackedDialect{#1}%
+ {%
+ \edef\CurrentTrackedIsoCodeI{\TrackedIsoCodeFromLanguage
+ {639-1}{\CurrentTrackedLanguage}}%
+ \edef\CurrentTrackedIsoCodeII{\TrackedIsoCodeFromLanguage
+ {639-2}{\CurrentTrackedLanguage}}%
+ \edef\CurrentTrackedIsoCodeIII{\TrackedIsoCodeFromLanguage
+ {639-3}{\CurrentTrackedLanguage}}%
+ \@tracklang@test@if@file@exists@for@tag{#1}{#2}{#3}%
+ \@tracklang@if@file@exists{#4}{#5}%
+ }%
+ {#5}% unknown dialect
+}
+\long\def\IfTrackedLanguageFileExistsOmitDialectLabel#1#2#3#4#5{%
+ \@tracklang@verbose{Finding file for dialect `#1'}%
+ \def\@@tracklang@test@if@file@exists@for@dialect{%
+ \@tracklang@test@if@file@exists@for@skipdialectlabel
+ }%
+ \def\@@tracklang@test@if@file@exists@for@region{%
+ \@tracklang@test@if@file@exists@for@region
+ }%
\def\CurrentTrackedTag{}%
\SetCurrentTrackedDialect{#1}%
\IfTrackedDialect{#1}%
@@ -2166,7 +2262,7 @@
\def\@tracklang@test@if@file@exists@noop#1#2#3{}
\def\@tracklang@test@if@file@exists@for@tag#1#2#3{%
\let\CurrentTrackedTag\CurrentTrackedLanguageTag
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (exact) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2174,13 +2270,16 @@
}%
{%
\let\@tracklang@if@file@exists\@tracklang@secondoftwo
- \let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@dialect
+ \let\@tracklang@test@if@file@exists@next\@@tracklang@test@if@file@exists@for@dialect
}%
\@tracklang@test@if@file@exists@next{#1}{#2}{#3}%
}
+\def\@@tracklang@test@if@file@exists@for@dialect{%
+ \@tracklang@test@if@file@exists@for@dialect
+}
\def\@tracklang@test@if@file@exists@for@dialect#1#2#3{%
\edef\CurrentTrackedTag{#1}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (dialect) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2203,13 +2302,36 @@
}%
{%
\let\CurrentTrackedIsoCode\empty
- \let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@scriptregion
+ \let\@tracklang@test@if@file@exists@next\@@tracklang@test@if@file@exists@for@region
}%
}%
}%
}%
\@tracklang@test@if@file@exists@next{#1}{#2}{#3}%
}
+\def\@tracklang@test@if@file@exists@for@skipdialectlabel#1#2#3{%
+ \IfTrackedLanguageHasIsoCode{639-1}{\CurrentTrackedLanguage}%
+ {%
+ \let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIscriptregion
+ }%
+ {%
+ \IfTrackedLanguageHasIsoCode{639-2}{\CurrentTrackedLanguage}%
+ {%
+ \let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIscriptregion
+ }%
+ {%
+ \IfTrackedLanguageHasIsoCode{639-3}{\CurrentTrackedLanguage}%
+ {%
+ \let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIIscriptregion
+ }%
+ {%
+ \let\CurrentTrackedIsoCode\empty
+ \let\@tracklang@test@if@file@exists@next\@@tracklang@test@if@file@exists@for@region
+ }%
+ }%
+ }%
+ \@tracklang@test@if@file@exists@next{#1}{#2}{#3}%
+}
\def\@tracklang@test@if@file@exists@for@langIscriptregion#1#2#3{%
\let\CurrentTrackedIsoCode\CurrentTrackedIsoCodeI
\let\CurrentTrackedTag\CurrentTrackedIsoCode
@@ -2225,7 +2347,7 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedRegion}%
\fi
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-1 [sublang] [script] [region]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2238,7 +2360,7 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langII
\else
\let\CurrentTrackedTag\CurrentTrackedIsoCode
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-1 [no script region]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2253,7 +2375,7 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIskipscript
\else
\edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-1 script [no region])`\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2270,7 +2392,7 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIskipregion
\else
\edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedRegion}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-1 [no script] region) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2286,7 +2408,8 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectScript
-\CurrentTrackedRegion}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-1 [omit sublang] script region)
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2316,7 +2439,8 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedRegion}%
\fi
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [sublang] [script] [region])
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2329,7 +2453,8 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIII
\else
\let\CurrentTrackedTag\CurrentTrackedIsoCode
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [omit sublang] [no script region])
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2344,7 +2469,8 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIskipscript
\else
\edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [omit sublang] script [no region])
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2361,7 +2487,8 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIskipregion
\else
\edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedRegion}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [omit sublang] [no script] region)
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2377,7 +2504,8 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectScript
-\CurrentTrackedRegion}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [omit sublang] script region)
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2407,7 +2535,8 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedRegion}%
\fi
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [sublang] [script] [region])
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2420,7 +2549,8 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langvariant
\else
\let\CurrentTrackedTag\CurrentTrackedIsoCode
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [omit sublang] [no script region])
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2435,7 +2565,8 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIIskipscript
\else
\edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [omit sublang] script [no region])
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2452,7 +2583,8 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIIskipregion
\else
\edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedRegion}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [omit sublang] [no script] region)
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2468,7 +2600,8 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectScript
-\CurrentTrackedRegion}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [omit sublang] script region)
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2489,7 +2622,7 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-1 [sublang]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2514,7 +2647,7 @@
}%
\else
\let\CurrentTrackedTag\CurrentTrackedIsoCode
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-1 [omit sublang]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2549,7 +2682,7 @@
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [sublang] script) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2560,7 +2693,8 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIskipscript
\else
\edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [omit sublang] script)
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2579,7 +2713,7 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-1 [sublang]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2597,7 +2731,7 @@
}%
\else
\let\CurrentTrackedTag\CurrentTrackedIsoCode
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [omit sublang]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2625,7 +2759,7 @@
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [sublang] script) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2636,7 +2770,7 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIIskipscript
\else
\edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [omit sublang]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2655,7 +2789,7 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [sublang]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2666,7 +2800,7 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langvariant
\else
\let\CurrentTrackedTag\CurrentTrackedIsoCode
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [omit sublang])`\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2685,7 +2819,7 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-1 [sublang]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2710,7 +2844,7 @@
}%
\else
\let\CurrentTrackedTag\CurrentTrackedIsoCode
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-1 [omit sublang]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2744,8 +2878,8 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
- \edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectRegion}%
+ \@tracklang@verbose{Testing tag (639-2 [sublang] region) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2755,8 +2889,9 @@
\ifx\CurrentTrackedDialectSubLang\empty
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIskipregion
\else
- \edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectRegion}%
+ \@tracklang@verbose{Testing tag (639-2 [omit sublang] region)
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2775,7 +2910,7 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [sublang]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2793,7 +2928,7 @@
}%
\else
\let\CurrentTrackedTag\CurrentTrackedIsoCode
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [omit sublang])`\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2820,8 +2955,8 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
- \edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectRegion}%
+ \@tracklang@verbose{Testing tag (639-2 [sublang] region) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2831,8 +2966,9 @@
\ifx\CurrentTrackedDialectSubLang\empty
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIskipregion
\else
- \edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectRegion}%
+ \@tracklang@verbose{Testing tag (639-2 [omit sublang] region)
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2851,7 +2987,7 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [sublang]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2862,7 +2998,8 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langvariant
\else
\let\CurrentTrackedTag\CurrentTrackedIsoCode
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [omit sublang])
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2882,8 +3019,8 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
- \edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectRegion}%
+ \@tracklang@verbose{Testing tag (639-3 [sublang] region) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2893,8 +3030,9 @@
\ifx\CurrentTrackedDialectSubLang\empty
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIskipregion
\else
- \edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectRegion}%
+ \@tracklang@verbose{Testing tag (639-3 [omit sublang] region)
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2917,7 +3055,7 @@
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedRegion}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-1 [sublang] region) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2927,8 +3065,9 @@
\ifx\CurrentTrackedDialectSubLang\empty
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIscriptskipregion
\else
- \edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedRegion}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedRegion}%
+ \@tracklang@verbose{Testing tag (639-1 [omit sublang] region)
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2952,7 +3091,7 @@
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-1 [sublang] script) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2963,7 +3102,8 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIskipscriptskipregion
\else
\edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-1 [omit sublang] script)
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -2982,7 +3122,7 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-1 [sublang]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3003,12 +3143,12 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIIscriptregion
}%
{%
- \let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@region
+ \let\@tracklang@test@if@file@exists@next\@@tracklang@test@if@file@exists@for@region
}%
}%
\else
\let\CurrentTrackedTag\CurrentTrackedIsoCode
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-1 [omit sublang]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3028,7 +3168,7 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIIscriptregion
}%
{%
- \let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@region
+ \let\@tracklang@test@if@file@exists@next\@@tracklang@test@if@file@exists@for@region
}%
}%
}%
@@ -3046,7 +3186,7 @@
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedRegion}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [sublang] region) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3056,8 +3196,9 @@
\ifx\CurrentTrackedDialectSubLang\empty
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIscriptskipregion
\else
- \edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedRegion}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedRegion}%
+ \@tracklang@verbose{Testing tag (639-2 [omit sublang] region)
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3081,7 +3222,7 @@
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [sublang] script) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3092,7 +3233,8 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIskipscriptskipregion
\else
\edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [omit sublang] script)
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3111,7 +3253,7 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [sublang]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3126,11 +3268,11 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIIscriptregion
}%
{%
- \let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@region
+ \let\@tracklang@test@if@file@exists@next\@@tracklang@test@if@file@exists@for@region
}%
\else
\let\CurrentTrackedTag\CurrentTrackedIsoCode
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [omit sublang]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3144,7 +3286,7 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIIscriptregion
}%
{%
- \let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@region
+ \let\@tracklang@test@if@file@exists@next\@@tracklang@test@if@file@exists@for@region
}%
}%
\fi
@@ -3161,7 +3303,7 @@
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedRegion}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [sublang] region) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3172,7 +3314,8 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIIscriptskipregion
\else
\edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedRegion}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [omit sublang] region)
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3196,7 +3339,7 @@
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [sublang] script) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3207,7 +3350,8 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIIIskipscriptskipregion
\else
\edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectScript}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [omit sublang] script)
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3226,7 +3370,7 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [sublang]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3234,17 +3378,18 @@
}%
{%
\ifx\CurrentTrackedDialectSubLang\empty
- \let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@region
+ \let\@tracklang@test@if@file@exists@next\@@tracklang@test@if@file@exists@for@region
\else
\let\CurrentTrackedTag\CurrentTrackedIsoCode
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [omit sublang])
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@noop
}%
{%
- \let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@region
+ \let\@tracklang@test@if@file@exists@next\@@tracklang@test@if@file@exists@for@region
}%
\fi
}%
@@ -3259,7 +3404,7 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectSubLang}%
\fi
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [sublang]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3270,7 +3415,8 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langIII
\else
\let\CurrentTrackedTag\CurrentTrackedIsoCode
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [omit sublang])
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3296,7 +3442,7 @@
\else
\edef\CurrentTrackedTag{\CurrentTrackedIsoCode-\CurrentTrackedDialectSubLang}%
\fi
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [sublang]) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3307,7 +3453,8 @@
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@langvariant
\else
\let\CurrentTrackedTag\CurrentTrackedIsoCode
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [omit sublang])
+ `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3324,9 +3471,12 @@
}%
\@tracklang@test@if@file@exists@next{#1}{#2}{#3}%
}
+\def\@@tracklang@test@if@file@exists@for@region{%
+ \@tracklang@test@if@file@exists@for@region
+}
\def\@tracklang@test@if@file@exists@for@region#1#2#3{%
\let\CurrentTrackedTag\CurrentTrackedRegion
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (region) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3337,6 +3487,9 @@
}%
\@tracklang@test@if@file@exists@next{#1}{#2}{#3}%
}
+\def\@tracklang@test@if@file@exists@for@notregiononly#1#2#3{%
+ \@tracklang@test@if@file@exists@for@langvariant{#1}{#2}{#3}%
+}
\def\@tracklang@test@if@file@exists@for@langvariant#1#2#3{%
\ifx\CurrentTrackedDialectVariant\empty
\let\@tracklang@test@if@file@exists@next\@tracklang@test@if@file@exists@for@rootlang
@@ -3371,7 +3524,7 @@
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectVariant}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-1 [sublang] variant) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3402,7 +3555,7 @@
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectVariant}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-2 [sublang] variant) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3427,7 +3580,7 @@
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectSubLang}%
\fi
\edef\CurrentTrackedTag{\CurrentTrackedTag-\CurrentTrackedDialectVariant}%
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (639-3 [sublang] variant) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3440,7 +3593,7 @@
}
\def\@tracklang@test@if@file@exists@for@rootlang#1#2#3{%
\let\CurrentTrackedTag\CurrentTrackedLanguage
- \@tracklang@verbose{Testing tag `\CurrentTrackedTag'}%
+ \@tracklang@verbose{Testing tag (root) `\CurrentTrackedTag'}%
\@tracklang@IfFileExists{#2\CurrentTrackedTag#3}%
{%
\let\@tracklang@if@file@exists\@tracklang@firstoftwo
@@ -3673,7 +3826,8 @@
\string\TrackLangProvidesResource\space
must be loaded with \string\TrackLangRequireDialect}%
\fi
- \ProvidesFile{\TrackLangRequireDialectPrefix-#1.ldf}%
+ \expandafter\ProvidesFile\expandafter
+ {\TrackLangRequireDialectPrefix-#1.ldf}%
}
\fi
\def\TrackLangAddToHook{\noop@TrackLangAddToHook}
@@ -3795,7 +3949,7 @@
{%
\@tracklang@IfFileExists{\TrackLangRequireDialectPrefix-#1.ldf}%
{%
- \input \TrackLangRequireDialectPrefix-#1.ldf
+ \@tracklang@inputfile{\TrackLangRequireDialectPrefix-#1.ldf}%
}%
{%
\@tracklang@warn{No `\TrackLangRequireDialectPrefix' support for
@@ -3817,7 +3971,7 @@
{%
\@tracklang@IfFileExists{\TrackLangRequireDialectPrefix-#1.ldf}%
{%
- \input \TrackLangRequireDialectPrefix-#1.ldf
+ \@tracklang@inputfile{\TrackLangRequireDialectPrefix-#1.ldf}%
#2%
}%
{%
@@ -3838,7 +3992,7 @@
{%
\@tracklang@IfFileExists{\TrackLangRequireDialectPrefix-#1.ldf}%
{%
- \input \TrackLangRequireDialectPrefix-#1.ldf
+ \@tracklang@inputfile{\TrackLangRequireDialectPrefix-#1.ldf}%
}%
{#2}%
}%
@@ -3854,7 +4008,7 @@
\@tracklang@next
}
\def\@noop@TrackLangRequireDialect[#1]#2#3{%
- \@tracklang@err{\string\TrackLangRequireDialect\space
+ \@tracklang@err{\string\TrackLangRequireDialect...\space
only permitted within resource files}
}
\def\@TrackLangRequireDialect#1{%
@@ -3873,20 +4027,125 @@
{#2-}% prefix
{.ldf}% suffix
{%
- \let\TrackLangRequireResource\@TrackLangRequireResource
- \let\TrackLangRequireResourceOrDo\@TrackLangRequireResourceOrDo
- \let\TrackLangRequestResource\@TrackLangRequestResource
- \let\TrackLangRequireDialect\noop@TrackLangRequireDialect
- \let\TrackLangAddToHook\@TrackLangAddToHook
- #1%
- \let\TrackLangRequireResource\noop@TrackLangRequireResource
- \let\TrackLangRequireResourceOrDo\noop@TrackLangRequireResourceOrDo
- \let\TrackLangRequestResource\noop@TrackLangRequestResource
- \let\TrackLangRequireDialect\@TrackLangRequireDialect
- \let\TrackLangAddToHook\noop@TrackLangAddToHook
+ \@@TrackLang@RequireDialect{#1}%
+ }%
+ {%
+ \@tracklang@warn{No `#2' support for dialect `#3'
+ \ifTrackLangShowWarnings
+ \else
+ (switch on tracklang's verbose mode for search attempts)
+ \fi
+ }%
+ }%
+}
+\def\@@TrackLang@RequireDialect#1{%
+ \let\TrackLangRequireResource\@TrackLangRequireResource
+ \let\TrackLangRequireResourceOrDo\@TrackLangRequireResourceOrDo
+ \let\TrackLangRequestResource\@TrackLangRequestResource
+ \let\TrackLangRequireDialect\noop@TrackLangRequireDialect
+ \let\TrackLangRequireDialectOmitDialectLabel\noop@TrackLangRequireDialect
+ \let\TrackLangRequireDialectOmitDialectLabelOmitOnlyRegion
+ \noop@TrackLangRequireDialect
+ \let\TrackLangRequireDialectOmitOnlyRegion\noop@TrackLangRequireDialect
+ \let\TrackLangAddToHook\@TrackLangAddToHook
+ #1%
+ \let\TrackLangRequireResource\noop@TrackLangRequireResource
+ \let\TrackLangRequireResourceOrDo\noop@TrackLangRequireResourceOrDo
+ \let\TrackLangRequestResource\noop@TrackLangRequestResource
+ \let\TrackLangRequireDialect\@TrackLangRequireDialect
+ \let\TrackLangRequireDialectOmitDialectLabel
+ \@TrackLangRequireDialectOmitDialectLabel
+ \let\TrackLangRequireDialectOmitDialectLabelOmitOnlyRegion
+ \@TrackLangRequireDialectOmitDialectLabelOmitOnlyRegion
+ \let\TrackLangRequireDialectOmitOnlyRegion
+ \@TrackLangRequireDialectOmitOnlyRegion
+ \let\TrackLangAddToHook\noop@TrackLangAddToHook
+}
+\def\TrackLangRequireDialectOmitDialectLabel{%
+ \@TrackLangRequireDialectOmitDialectLabel}
+\def\@TrackLangRequireDialectOmitDialectLabel#1{%
+ \ifx[#1\relax
+ \def\@tracklang@next{\@@TrackLangRequireDialectOmitDialectLabel[}%
+ \else
+ \def\@tracklang@next{%
+ \@@TrackLangRequireDialectOmitDialectLabel
+ [\TrackLangRequireResource{\CurrentTrackedTag}]{#1}}%
+ \fi
+ \@tracklang@next
+}
+\def\@@TrackLangRequireDialectOmitDialectLabel[#1]#2#3{%
+ \def\TrackLangRequireDialectPrefix{#2}%
+ \IfTrackedLanguageFileExistsOmitDialectLabel{#3}%
+ {#2-}% prefix
+ {.ldf}% suffix
+ {%
+ \@@TrackLang@RequireDialect{#1}%
+ }%
+ {%
+ \@tracklang@warn{No `#2' support for dialect `#3'
+ \ifTrackLangShowWarnings
+ \else
+ (switch on tracklang's verbose mode for search attempts)
+ \fi
+ }%
+ }%
+}
+\def\TrackLangRequireDialectOmitDialectLabelOmitOnlyRegion{%
+ \@TrackLangRequireDialectOmitDialectLabelOmitOnlyRegion}
+\def\@TrackLangRequireDialectOmitDialectLabelOmitOnlyRegion#1{%
+ \ifx[#1\relax
+ \def\@tracklang@next{\@@TrackLangRequireDialectOmitDialectLabelOmitOnlyRegion[}%
+ \else
+ \def\@tracklang@next{%
+ \@@TrackLangRequireDialectOmitDialectLabelOmitOnlyRegion
+ [\TrackLangRequireResource{\CurrentTrackedTag}]{#1}}%
+ \fi
+ \@tracklang@next
+}
+\def\@@TrackLangRequireDialectOmitDialectLabelOmitOnlyRegion[#1]#2#3{%
+ \def\TrackLangRequireDialectPrefix{#2}%
+ \IfTrackedLanguageFileExistsOmitDialectLabelOmitOnlyRegion{#3}%
+ {#2-}% prefix
+ {.ldf}% suffix
+ {%
+ \@@TrackLang@RequireDialect{#1}%
}%
{%
- \@tracklang@warn{No `#2' support for dialect `#3'}%
+ \@tracklang@warn{No `#2' support for dialect `#3'
+ \ifTrackLangShowWarnings
+ \else
+ (switch on tracklang's verbose mode for search attempts)
+ \fi
+ }%
+ }%
+}
+\def\TrackLangRequireDialectOmitOnlyRegion{%
+ \@TrackLangRequireDialectOmitOnlyRegion}
+\def\@TrackLangRequireDialectOmitOnlyRegion#1{%
+ \ifx[#1\relax
+ \def\@tracklang@next{\@@TrackLangRequireDialectOmitOnlyRegion[}%
+ \else
+ \def\@tracklang@next{%
+ \@@TrackLangRequireDialectOmitOnlyRegion
+ [\TrackLangRequireResource{\CurrentTrackedTag}]{#1}}%
+ \fi
+ \@tracklang@next
+}
+\def\@@TrackLangRequireDialectOmitOnlyRegion[#1]#2#3{%
+ \def\TrackLangRequireDialectPrefix{#2}%
+ \IfTrackedLanguageFileExistsOmitOnlyRegion{#3}%
+ {#2-}% prefix
+ {.ldf}% suffix
+ {%
+ \@@TrackLang@RequireDialect{#1}%
+ }%
+ {%
+ \@tracklang@warn{No `#2' support for dialect `#3'
+ \ifTrackLangShowWarnings
+ \else
+ (switch on tracklang's verbose mode for search attempts)
+ \fi
+ }%
}%
}
\@tracklang@restore@at
diff --git a/Master/texmf-dist/tex/generic/tuple/tuple.sty b/Master/texmf-dist/tex/generic/tuple/tuple.sty
new file mode 100644
index 00000000000..e18ff0ba149
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tuple/tuple.sty
@@ -0,0 +1,20 @@
+%____________________________________________________________________
+% Author : Christian Tellechea |
+% Status : Maintained |
+% Email : unbonpetit@netc.fr |
+% Package URL: https://www.ctan.org/pkg/tuple |
+% Copyright : Christian Tellechea 2024 |
+% Licence : Released under the LaTeX Project Public License v1.3c |
+% or later, see http://www.latex-project.org/lppl.txt |
+% Files : 1) tuple.tex |
+% 2) tuple.sty |
+% 3) README |
+% 4) tuple-doc-fr.tex |
+% 5) tuple-doc-fr.pdf |
+% 6) tuple-doc-en.tex |
+% 7) tuple-doc-en.pdf |
+%--------------------------------------------------------------------
+\expandafter\let\csname tpl_fromsty\endcsname\relax
+\input tuple.tex
+\ProvidesPackage\tplname[\tpldate\space v\tplversion\space Expandable operations for tuples of numbers (CT)]
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/tuple/tuple.tex b/Master/texmf-dist/tex/generic/tuple/tuple.tex
new file mode 100644
index 00000000000..ed8b345a140
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tuple/tuple.tex
@@ -0,0 +1,1157 @@
+% !TeX encoding = UTF-8
+% Ce fichier contient le code de l'extension "tuple"
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+\def\tplname {tuple} %
+\def\tplversion {0.2} %
+% %
+\def\tpldate {2024/12/20} %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%____________________________________________________________________
+% Author : Christian Tellechea |
+% Status : Maintained |
+% Email : unbonpetit@netc.fr |
+% Package URL: https://www.ctan.org/pkg/tuple |
+% Copyright : Christian Tellechea 2024 |
+% Licence : Released under the LaTeX Project Public License v1.3c |
+% or later, see http://www.latex-project.org/lppl.txt |
+% Files : 1) tuple.tex |
+% 2) tuple.sty |
+% 3) README |
+% 4) tuple-doc-fr.tex |
+% 5) tuple-doc-fr.pdf |
+% 6) tuple-doc-en.tex |
+% 7) tuple-doc-en.pdf |
+%--------------------------------------------------------------------
+
+\csname tpl_load_once\endcsname
+\expandafter\let\csname tpl_load_once\endcsname\endinput
+
+\expandafter\edef\csname tpl_restorecatcode\endcsname{\catcode\number`\_=\the\catcode`\_\relax }
+\catcode`\_11
+
+\def\tpl_exec_first\fi\tpl_exec_second#1#2{\fi#1}
+\def\tpl_exec_second#1#2{#2}
+\ifdefined\tpl_fromsty\tpl_exec_first\fi\tpl_exec_second
+ {%
+ \def\tpl_error#1{\PackageError\tplname{#1}{Read the \tplname\space manual}}% pour LaTeX
+ }
+ {%
+ \def\tpl_error#1{\errmessage{Package \tplname\space Error: #1^^J}}% pour TeX
+ \immediate\write -1 {Package: \tpldate\space v\tplversion\space Expandable operations for tuples of numbers (CT)}%
+ \input expl3-generic.tex % pour fp
+ }%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Macros diverses %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\tpl_stripsp#1{%
+ \def\tpl_stripsp##1##2{\expanded{\tpl_stripsp_i\_marksp##2\__nil\_marksp#1\_marksp\_nil{##1}}}%
+ \def\tpl_stripsp_i##1\_marksp#1##2\_marksp##3\_nil{\tpl_stripsp_ii##3##1##2\__nil#1\__nil\_nil}%
+ \def\tpl_stripsp_ii##1#1\__nil##2\_nil{\tpl_stripsp_iii##1##2\_nil}%
+ \def\tpl_stripsp_iii##1##2\__nil##3\_nil##4{\unexpanded{##4{##2}}}%
+}
+\tpl_stripsp{ }
+\def\tpl_swaparg#1#2{#2{#1}}
+\def\tpl_e_second#1#2{\expandafter\tpl_swaparg\expandafter{#2}{#1}}
+\def\tpl_x_second#1#2{\expandafter\tpl_swaparg\expandafter{\expanded{#2}}{#1}}
+\def\tpl_swaptwo#1#2{#2#1}
+\def\tpl_e_after#1#2{\expandafter\tpl_swaptwo\expandafter{#2}{#1}}
+\def\tpl_x_after#1#2{\expandafter\tpl_swaptwo\expandafter{\expanded{#2}}{#1}}
+\def\tpl_error_inmethod#1{{\tpl_error{#1}}{-1}}
+\def\tpl_gobone#1{}
+\def\tpl_gobtonil#1\_nil{}
+\def\tpl_firsttonil#1#2\_nil{#1}
+\def\tpl_antefi#1\fi{\fi#1}
+\def\tpl_testifx#1{\ifx#1\tpl_exec_first\fi\tpl_exec_second}
+\def\tpl_testifnum#1{\ifnum#1\tpl_exec_first\fi\tpl_exec_second}
+\def\tpl_testifcsname#1{\ifcsname#1\endcsname\tpl_exec_first\fi\tpl_exec_second}
+\def\tpl_cs_enxp#1{\expandafter\noexpand\csname#1\endcsname}
+\def\tpl_ifempty#1#2#3{\tpl_ifempty_a#1\_YN{#3}\_YN{#2}\_nil}
+\def\tpl_ifempty_a#1#2\_YN#3#4\_nil{#3}
+\def\tpl_foreach#1\in#2\do#3{% #1=macro recevant chaque élément #2=liste d'éléments #3=code
+ \def\tpl_foreach_a##1,{%
+ \ifx\tpl_foreach_a##1\else
+ \def#1{##1}%
+ #3%
+ \expandafter\tpl_foreach_a
+ \fi
+ }%
+ \expandafter\tpl_foreach_a#2,\tpl_foreach_a,% 1-développer #2 au cas où...
+}
+
+%---------------
+% indexage développable d'un tuple
+%---------------
+\def\tpl_index_tuple#1{\tpl_index_tuple_a0#1,\relax,}%
+\def\tpl_index_tuple_a#1#2,{% TODO : le faire 8 par 8 ?
+ \ifx\relax#2\else
+ \tpl_antefi
+ #1:#2,\tpl_e_second\tpl_index_tuple_a{\the\numexpr#1+1}%
+ \fi%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Choix options %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\tpl_testifstreq#1#2{% teste si #1=#2
+ \tpl_stripsp{\def\tpl__tmpa}{#1}%
+ \tpl_stripsp{\def\tpl__tmpb}{#2}%
+ \tpl_testifx{\tpl__tmpa\tpl__tmpb}
+}
+\def\tplsetmode#1{%
+ \tpl_testifstreq{#1}{int}
+ {%
+ \tpl_set_mode_a#1:\_nil
+ }
+ {%
+ \tpl_ifddot{#1}
+ {\tpl_set_mode_a#1\_nil}
+ {\tpl_error{":" expected in "\detokenize{#1}"}}%
+ }%
+}
+\def\tpl_set_mode_a#1:#2\_nil{%
+ \let\tpl_expr_eval\fpeval
+ \tpl_testifstreq{#1}{int}
+ {%
+ \def\tplfpcompare##1##2##3{\ifnum##1##2##3 \tpl_exec_first\fi\tpl_exec_second}%
+ \def\tpl_item_add##1##2{\the\numexpr##1+##2\relax}%
+ \def\tpl_item_addsq##1##2{\the\numexpr##1+##2*##2\relax}%
+ }
+ {%
+ \tpl_testifstreq{#1}{dec}
+ {%
+ \tpl_testifstreq{#2}{long}
+ {%
+ \tpl_e_after{\let\tplfpcompare}{\csname fp_compare:nNnTF\endcsname}%
+ \def\tpl_item_add##1##2{\fpeval{##1+##2}}%
+ \def\tpl_item_addsq##1##2{\fpeval{##1+##2*##2}}%
+ }
+ {%
+ \tpl_testifstreq{#2}{short}
+ {%
+ \def\tplfpcompare##1##2##3{\ifdim##1pt##2##3pt \tpl_exec_first\fi\tpl_exec_second}%
+ \let\tpl_item_add\tpl_short_short_add
+ \def\tpl_item_addsq##1##2{\tpl_x_second\tpl_short_short_add{\tpl_short_mult{##2}{##2}}{##1}}%
+ }%
+ {%
+ \tpl_error{number 'short' or 'long' expected in '\detokenize{#1:#2}'}%
+ }%
+ }%
+ }
+ {%
+ \tpl_error{number "long" or "dec" expected in "\detokenize{#1:#2}"}%
+ }%
+ }%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Moteur rudimentaire de calcul %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Macros développables sur les
+% décimaux courts "#8.#8"
+\def\tpl_gob_zeros#1{%
+ \tpl_testifx{0#1}
+ \tpl_gob_zeros
+ {\tpl_testifx{\empty#1}0{#1}}%
+}
+\def\tpl_split_iv_iv#1{\tpl_split_iv_iv_a#1{}{}{}{}{}{}{}{}{}\_nil}% coupe le nombre #1 en 2 nombres de 4 chiffres
+\def\tpl_esplit_iv_iv#1{\expandafter\tpl_split_iv_iv_a#1{}{}{}{}{}{}{}{}{}\_nil}% coupe le nombre #1 en 2 nombres de 4 chiffres
+\def\tpl_split_iv_iv_a#1#2#3#4#5#6#7#8#9{\tpl_split_iv_iv_b#9#8#7#6#5#4#3#2#1000000000}
+\def\tpl_split_iv_iv_b#1#2#3#4#5#6#7#8#9{{#9#8#7#6#5}{#4#3#2#1}\tpl_gobtonil}
+
+\def\tpl_pack_iv_iv#1{\tpl_pack_iv_iv_a#100000000\_nil}
+\def\tpl_pack_iv_iv_a#1#2#3#4#5#6#7#8{{#1#2#3#4}{#5#6#7#8}\tpl_gobtonil}
+%---------------
+% multiplication #8.#8 * #8*#8 -> #16.#8
+%---------------
+\def\tpl_ifdot#1#2#3{\tpl_ifdot_a#1\_YN{#2}\mark_dot.\_YN{#3}\mark_dot\_nil}% #1 contient-il "." ? #2=T #3=F
+\def\tpl_ifdot_a#1.#2\_YN#3\mark_dot#4\_nil{#3}%
+
+\def\tpl_hi#1{\expandafter\tpl_hi_a\the\numexpr#1\relax{}{}{}{}{}{}{}{}{}\_nil}
+\def\tpl_hi_a#1#2#3#4#5#6#7#8#9{\tpl_hi_b#9#8#7#6#5#4#3#2#1000000000}
+\def\tpl_hi_b#1#2#3#4#5#6#7#8#9{#9#8#7#6#5\tpl_gobtonil}
+
+\def\tpl_pack_hi_unpack_lo#1#2{\expandafter\tpl_pack_hi_unpack_lo_a\the\numexpr#2\relax{}{}{}{}{}{}{}{}{}\_nil{#1}}
+\def\tpl_pack_hi_unpack_lo_a#1#2#3#4#5#6#7#8#9{\tpl_pack_hi_unpack_lo_b#9#8#7#6#5#4#3#2#1000000000}
+\def\tpl_pack_hi_unpack_lo_b#1#2#3#4#5#6#7#8#9{\tpl_pack_hi_unpack_lo_c{#9#8#7#6#5}{#4#3#2#1}}
+\def\tpl_pack_hi_unpack_lo_c#1#2#3\_nil#4{#4{#1}#2}
+
+\def\tpl_short_mult#1#2{% #1=a,b #2=c,d (a,b,c,d 8 chiffres max chacun)
+ \tpl_short_mult_a#1\relax#2\relax
+}
+\def\tpl_short_mult_a#1#2\relax#3#4\relax{%
+ \tpl_x_after\tpl_short_mult_b{\unless\ifx-#1+\fi#1#2\relax\unless\ifx-#3+\fi#3#4\relax}%
+}
+\def\tpl_short_mult_b#1#2\relax#3#4\relax{%
+ \unless\ifx#1#3-\fi
+ \tpl_x_after\tpl_short_mult_c{0#2\tpl_ifdot{#2}{}{.0}\relax0#4\tpl_ifdot{#4}{}{.0}\relax}%
+}
+\def\tpl_short_mult_c#1.#2\relax#3.#4\relax{% #1=hi(a)
+ \tpl_x_after\tpl_short_mult_d{\tpl_split_iv_iv{#1}\tpl_pack_iv_iv{#2}\tpl_split_iv_iv{#3}\tpl_pack_iv_iv{#4}}%
+}
+\def\tpl_short_mult_d#1#2#3#4#5#6#7#8{% #1=a1 #2=a0 . #3=b1 #4=b0
+% * #5=c1 #6=c0 . #7=d1 #8=d0
+ \tpl_pack_hi_unpack_lo{\tpl_short_mult_e{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}}{%
+ #8*#2+#3*#7+#6*#4+\tpl_hi{#8*#3+#7*#4+\tpl_hi{#4*#8}}% d0a0 + d1b1 +c0b0 + hi(d0b1 + d1b0 + hi(b0d0))
+ }%
+}
+\def\tpl_short_mult_e#1#2#3#4#5#6#7#8#9{% #1=a1 #2=a0 . #3=b1 #4=b0 * #5=c1 #6=c0 . #7=d1 #8=d0 #9=retenue pour rang suivan
+ \tpl_pack_hi_unpack_lo{\tpl_short_mult_f{#1}{#2}{#3}{#5}{#6}{#7}}{#9+#8*#1+#7*#2+#6*#3+#5*#4}% d0a1+d1a0+c0b1+c1b0
+}
+\def\tpl_short_mult_f#1#2#3#4#5#6#7{% #1=a1 #2=a0 #3=b1 #4=c1 #5=c0 #6=d1 #7=retenue
+ \tpl_pack_hi_unpack_lo{\tpl_short_mult_g{#1}{#2}{#4}{#5}}{#7+#1*#6+#2*#5+#3*#4}.% d1a1+c0a0+c1b1%
+}
+\def\tpl_short_mult_g#1#2#3#4#5{% #1=a1 #2=a0 #3=c1 #4=c0 #5=retenue
+ \tpl_pack_hi_unpack_lo{\tpl_short_mult_h{#1}{#3}}{#5+#1*#4+#2*#3}%
+}
+\def\tpl_short_mult_h#1#2#3{\expandafter\tpl_gob_zeros\the\numexpr#1*#2+#3\relax}
+%---------------
+% addition #16.#8 + #16.#8 -> #16.#8 (décimaux non signés)
+%---------------
+\def\tpl_split_viii_viii#1{\tpl_split_viii_viii_a#1{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}\_nil}
+\def\tpl_split_viii_viii_a#1#2#3#4#5#6#7#8{\tpl_split_viii_viii_b{#8#7#6#5#4#3#2#1}}
+\def\tpl_split_viii_viii_b#1#2#3#4#5#6#7#8#9{\tpl_split_viii_viii_c#9#8#7#6#5#4#3#2#100000000000000000}
+\def\tpl_split_viii_viii_c#1#2#3#4#5#6#7#8{\tpl_split_viii_viii_d{#8#7#6#5#4#3#2#1}}
+\def\tpl_split_viii_viii_d#1#2#3#4#5#6#7#8#9{{#9#8#7#6#5#4#3#2}{#1}\tpl_gobtonil}
+
+\def\tpl_decpart_format_viii#1{\tpl_decpart_format_viii_a#100000000\_nil}
+\def\tpl_decpart_format_viii_a#1#2#3#4#5#6#7#8{#1#2#3#4#5#6#7#8\tpl_gobtonil}
+\def\tpl_shortadd#1#2{% #1=décimal ou entier ; #2 de la forme 'x.y'
+ \tpl_x_after{\tpl_shortadd_a#1}{\tpl_ifdot{#1}{}{.0}}\relax#2\relax
+}
+\def\tpl_shortadd_a#1.#2\relax#3.#4\relax{% a.b + c.d
+ \tpl_x_after\tpl_shortadd_b{\tpl_split_viii_viii{#1}\tpl_split_viii_viii{#3}{\the\numexpr\tpl_decpart_format_viii{#2}+\tpl_decpart_format_viii{#4}\relax}}%
+}
+\def\tpl_shortadd_b#1#2#3#4#5{% #1=hi8(a) #2=lo8(a) #3=hi8(c) #4=lo8(c) #5=b+c
+ \tpl_x_after{\tpl_shortadd_c{#1}{#3}}{\the\numexpr#2+#4\tpl_testifnum{#5>99999999 }{+1\relax!.\tpl_gobone}{\relax!.}#5}%
+}
+\def\tpl_shortadd_c#1#2#3!{% #1=hi8(a) #2=hi8(c) #3=lo8(a)+lo8(c)+retenue
+ \the\numexpr#1+#2\tpl_testifnum{#3>99999999 }{+1\relax\tpl_gobone}{\relax}#3%
+}
+%---------------
+% addition entiers signés <signe>#8.#8
+%---------------
+\def\tpl_intpart_format#1{%
+ \tpl_ifempty{#1}{+0}{\tpl_intpart_format_a#1\_nil}%
+}
+\def\tpl_intpart_format_a#1#2\_nil{%
+ \ifx#1--\tpl_ifempty{#2}0{}%
+ \else
+ \ifx#1++\tpl_ifempty{#2}0{}%
+ \else+#1%
+ \fi
+ \fi#2%
+}
+\def\tpl_short_short_add#1#2{% a.b + c.d
+ \tpl_x_after\tpl_short_short_add_a{#1\tpl_ifdot{#1}{}{.0}\relax#2\tpl_ifdot{#2}{}{.0}\relax}%
+}
+\def\tpl_short_short_add_a#1.#2\relax#3.#4\relax{%
+ \tpl_x_after\tpl_short_short_add_b{%
+ \tpl_intpart_format{#1}.\tpl_decpart_format_viii{#2}\relax
+ \tpl_intpart_format{#3}.\tpl_decpart_format_viii{#4}\relax%
+ }%
+}
+\def\tpl_short_short_add_b#1#2.#3\relax#4#5.#6\relax{% #1=+/- #2.#3 "+" #4=+/- #5.#6
+ \tpl_testifx{#1#4}% mêmes signes ?
+ {%
+ \ifx-#1-\fi% afficher le signe -
+ \tpl_e_second\tpl_short_short_add_c{\the\numexpr#3+#6}{#2}{#5}%
+ }
+ {% signes différents
+ \tpl_x_after\tpl_short_short_add_d{\the\numexpr#1#2#4#5\relax.\the\numexpr#1#3#4#6\relax}\_nil
+ }%
+}
+\def\tpl_short_short_add_c#1#2#3{% relatifs de mêmes signes : #1=somme (dec part) #2=intpart(a) #3=intpart(b)
+ \the\numexpr#2+#3\ifnum#1>99999999 +1\fi.\tpl_decpart_format{#1}%
+}
+\def\tpl_short_short_add_d#1.#2\_nil{%
+ \tpl_x_after\tpl_short_short_add_e{\unless\ifnum#1<0 +\fi#1.\unless\ifnum#2<0 +\fi}#2\_nil
+}
+\def\tpl_short_short_add_e#1#2.#3#4\_nil{%résultat : #1=signe #2=intpart #3=signe #4=decpart
+ \ifx#1#3% memes signes
+ \the\numexpr#1#2\relax.\expandafter\tpl_gobone\the\numexpr#4+100000000\relax%
+ \else
+ \ifnum#2=0
+ #30.\tpl_decpart_format{#4}% prendre le signe de decpart
+ \else
+ \ifnum#4=0
+ #1#2%
+ \else
+ \tpl_x_after\tpl_short_short_add_f{\the\numexpr#1#2#31\relax.\expandafter\tpl_abs\the\numexpr#3#4#1100000000\relax}\_nil{#1}%
+ \fi
+ \fi
+ \fi
+}
+\def\tpl_short_short_add_f#1.#2\_nil#3{% #1=intpart final #2=decpart final #3=signe intpart
+ \ifnum#1=0 #3\fi#1.\tpl_decpart_format{#2}%
+}
+\def\tpl_abs#1{\unless\ifx-#1#1\fi}
+\def\tpl_decpart_format#1{\expandafter\tpl_decpart_format_a\the\numexpr100000000+#1\relax\_nil}
+\def\tpl_decpart_format_a#1#2#3#4#5#6#7#8#9{\expandafter\tpl_decpart_format_b\the\numexpr#9#8#7#6#5#4#3#2\relax{}{}{}{}{}{}{}{}{}}
+\def\tpl_decpart_format_b#1#2#3#4#5#6#7#8{#8#7#6#5#4#3#2#1\tpl_gobtonil}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Quicksort développable %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%---------------
+% Effectue un quicksort en indexant en
+% même temps les éléments sous la forme "idx:val"
+%---------------
+\def\tpl_quicksort_and_index#1{\tpl_quicksort_and_index_a0;{#1}?}% #1= tuple finissant par ","
+\def\tpl_quicksort_and_index_a#1;#2{\tpl_quicksort_and_index_b{#1}#2!,}% #1=index de départ #2= tuple finissant par ","
+\def\tpl_quicksort_and_index_b#1#2,{%
+ \tpl_testifx{!#2}
+ {\tpl_quicksort_and_index_d{#1}}
+ {\tpl_quicksort_and_index_c{#1}{}{}{#2}}%
+}
+\def\tpl_quicksort_and_index_c#1#2#3#4#5,{% #1=index courant #2=part lt #3=part gt #4=pivot #5=élément courant
+ \tpl_testifx{!#5}% partition achevée -> partitionner "part lt" et passer les arguments <pivot><part gt> pour la macro
+ {% \tpl_quicksort_and_index_d lancée à la fin du partitionnement de "part lt"
+ \tpl_quicksort_and_index_a#1;{#2}{#4}{#3}% arg {#4}{#3} lus à la fin par \tpl_quicksort_and_index_d
+ }
+ {%
+ \tplfpcompare{#5}<{#4}
+ {\tpl_quicksort_and_index_c{#1}{#2#5,}{#3}}
+ {\tpl_quicksort_and_index_c{#1}{#2}{#3#5,}}%
+ {#4}%
+ }%
+}
+\def\tpl_quicksort_and_index_d#1#2{% #1=index ancien #2=pivot #3=part gt (à suivre, non lu par cette macro)
+ \ifx?#2\else\tpl_antefi#1:#2,\expandafter\tpl_quicksort_and_index_a\the\numexpr#1+1;\fi
+}
+
+%TODO : insertion sort && fusion sort
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Macros pour set, get, split %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\tpl_csdef#1{\expandafter\def\csname#1\endcsname}
+\def\tpl_csedef#1{\expandafter\edef\csname#1\endcsname}
+\tpl_foreach\__temp\in{1,2,3,4,5,6,7,8,9}\do{% définition des macros qui parcourent le tuple indexé
+ \tpl_csdef {get_\__temp\expandafter}\expandafter##\expandafter1\__temp:##2,{##2\tpl_gobtonil}%
+ \tpl_csedef{split_\__temp\expandafter}\expandafter\_nil\expandafter##\expandafter1\__temp:##2,{##1\__temp:##2,?}%
+ \tpl_csedef{set_\__temp\expandafter}\expandafter##\expandafter1\expandafter\_nil\expandafter##\expandafter2\__temp:##3,{##2\__temp:##1,}%
+ \tpl_csdef {gobto_\the\numexpr\__temp+1\relax 0\expandafter}\expandafter##\expandafter1\__temp 9:##2,{}%
+ \tpl_csdef {gobto_\the\numexpr\__temp+1\relax 00\expandafter}\expandafter##\expandafter1\__temp 99:##2,{}%
+ \tpl_csdef {gobto_\the\numexpr\__temp+1\relax 000\expandafter}\expandafter##\expandafter1\__temp 999:##2,{}%
+ \tpl_csdef {gobto_\the\numexpr\__temp+1\relax0000\expandafter}\expandafter##\expandafter1\__temp9999:##2,{}%
+ \tpl_csedef{passto_\__temp 0\expandafter}\expandafter##\expandafter1\expandafter\_nil\expandafter##\expandafter2\the\numexpr\__temp 0-1:##3,{##2\the\numexpr\__temp 0-1:##3,##1\noexpand\_nil}%
+ \tpl_csedef{passto_\__temp 00\expandafter}\expandafter##\expandafter1\expandafter\_nil\expandafter##\expandafter2\the\numexpr\__temp 00-1:##3,{##2\the\numexpr\__temp 00-1:##3,##1\noexpand\_nil}%
+ \tpl_csedef{passto_\__temp 000\expandafter}\expandafter##\expandafter1\expandafter\_nil\expandafter##\expandafter2\the\numexpr\__temp 000-1:##3,{##2\the\numexpr\__temp 000-1:##3,##1\noexpand\_nil}%
+ \tpl_csedef{passto_\__temp0000\expandafter}\expandafter##\expandafter1\expandafter\_nil\expandafter##\expandafter2\the\numexpr\__temp0000-1:##3,{##2\the\numexpr\__temp0000-1:##3,##1\noexpand\_nil}%
+}
+\tpl_csdef{get_0}#10:#2,{#2\tpl_gobtonil}%
+\tpl_csdef{split_0}\_nil#10:#2,{#10:#2,?}%
+\tpl_csdef{set_0}#1\_nil#20:#3,{#20:#1,}%
+\tpl_csdef{gobto_10}#19:#2,{}
+\tpl_csdef{gobto_100}#199:#2,{}
+\tpl_csdef{gobto_1000}#1999:#2,{}
+\tpl_csdef{gobto_10000}#19999:#2,{}
+\tpl_csdef{gobto_00}{}
+\tpl_csdef{gobto_000}{}
+\tpl_csdef{gobto_0000}{}
+\tpl_csdef{passto_00}{}
+\tpl_csdef{passto_000}{}
+\tpl_csdef{passto_0000}{}
+
+\def\tpl_reverse#1{\tpl_reverse_a#1{}{}{}{}{}{}{}{}{}\_nil}
+\def\tpl_reverse_a#1#2#3#4#5#6#7#8#9{#9#8#7#6#5#4#3#2#1\tpl_gobtonil}
+%---------------
+% getitem (développable)
+%---------------
+\def\tpl_getitem#1#2{% #1=index #2=tuple
+ \tpl_x_after\tpl_getitem_a{\tpl_reverse{#1}}\relax#2\_nil% #2=tuple (finissant par ",")
+}
+\def\tpl_getitem_a#1{% #1=chiffre unités
+ \expandafter\tpl_getitem_b\csname get_#1\endcsname{0}%
+}
+\def\tpl_getitem_b#1#2#3{% #1=commandes à exécuter #2=nb de 0 #3=chiffre courant
+ \tpl_testifx{\relax#3}
+ {\tpl_getitem_c#1\_nil}
+ {\tpl_e_second\tpl_getitem_b{\csname gobto_#3#2\endcsname#1}{#20}}%
+}
+\def\tpl_getitem_c#1#2\_nil{%
+ \tpl_ifempty{#2}
+ {}
+ {\expanded{\unexpanded{\tpl_getitem_c#2\_nil}\expandafter\expandafter\expandafter}}#1%
+}
+%---------------
+% set item (développable)
+%--------------
+\def\tpl_setitem#1#2#3{% #1=index #2=valeur #3=tuple
+ \tpl_x_after\tpl_setitem_a{{#2}\tpl_reverse{#1}}\relax#3% #3=tuple (finissant par ",")
+}
+\def\tpl_setitem_a#1#2{% #1= valeur #2=chiffre unités
+ \tpl_e_second\tpl_setitem_b{\csname set_#2\endcsname#1}{0}%
+}
+\def\tpl_setitem_b#1#2#3{% #1=commandes à exécuter #2=nb de 0 #3=chiffre courant
+ \tpl_testifx{\relax#3}
+ {#1\_nil}
+ {\tpl_e_second\tpl_setitem_b{\csname passto_#3#2\endcsname#1}{#20}}%
+}
+%---------------
+% split at index (développable)
+%--------------
+\def\tpl_split#1#2{% #1=index #2=tuple -> coupe avec "?" le tuple après l'index #1 et renvoie 'tuple1?tuple2'
+ \tpl_x_after\tpl_split_a{\tpl_reverse{#1}}\relax#2% #2=tuple (finissant par ",")
+}
+\def\tpl_split_a#1{% #1=chiffre unités
+ \tpl_e_second\tpl_setitem_b{\csname split_#1\endcsname}{0}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Constructeur de tuple %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\newtuple#1{%
+ \tpl_x_after\tpl_newtuple_a{\tpl_stripsp\detokenize{#1}}\_nil
+}
+\def\tpl_newtuple_a#1\_nil#2{%
+ \tpl_ifempty{#1}
+ {%
+ \tpl_error{Impossible to define a tuple with an empty name}%
+ }
+ {%
+ \tpl_testifcsname{tpl_tuple(#1)}
+ {\tpl_error{Tuple '#1' already defined}}%
+ {\tpl_csedef{tpl_tuple(#1)}{\tpl_e_second\tpl_newtuple_b{\detokenize\expandafter{\expanded{#2}}}}}%
+ }%
+}
+%---------------
+% \tpl_newtuple_b est développable et renvoie :
+% (len,sum,sumsq){tuple indexé}{tuple ordonné indexé}
+%--------------
+\def\tpl_newtuple_b#1{%
+ \tpl_ifempty{#1}
+ {(0,0,0,nan,nan){}{}}
+ {\tpl_newtuple_c(0,0,0){}{}#1,\relax,}%
+}
+\def\tpl_newtuple_c(#1,#2,#3)#4#5#6,{% #1=index courant #2=sum #3=sumsq #4=éléments lus indexés #5=éléments lus désindexés #6=élément courant
+ \tpl_testifx{\relax#6}% fin atteinte -> trouver min, max et renvoyer le tout "(len,sum,sum:x^2,min,max){tuple indexé}{tuple ordonné indexé}"
+ {\tpl_x_second{(#1,#2,#3){#4}}{\tpl_e_second\tpl_quicksort_and_index{\tpl_gobone#5,}}}% manger ',' qui commence #5
+ {\tpl_stripsp\tpl_newtuple_d{#6}(#1,#2,#3){#4}{#5}}%
+}
+\def\tpl_newtuple_d#1{% #1=item en cours
+ \tpl_ifempty{#1}
+ {%
+ \tpl_newtuple_c
+ }
+ {%
+ \tpl_ifddot{#1}% si ":" est contenu dans #1, c'est indexé
+ {\tpl_newtuple_f#1\_nil}% traiter ce qui est après ":"
+ {\tpl_newtuple_e{#1}}%
+ }%
+}
+\def\tpl_newtuple_e#1(#2,#3,#4)#5#6{% #1=item en cours #2=index courant #3=sum #4=sumsq #5=éléments déjà triés #6=elements non indexés
+ \tpl_x_after\tpl_newtuple_c{(\the\numexpr#2+1,\tpl_item_add{#3}{#1},\tpl_item_addsq{#4}{#1})}{#5#2:#1,}{#6,#1}%
+}
+\def\tpl_newtuple_f#1:#2\_nil{%
+ \tpl_ifempty{#2}
+ {\tpl_newtuple_c}
+ {\tpl_newtuple_e{#2}}%
+}
+\def\tpl_ifddot#1#2#3{\tpl_ifddot_a#1\_YN{#2}\mark_ddot:\_YN{#3}\mark_ddot\_nil}% #1 contient-il ":" ? #2=T #3=F
+\def\tpl_ifddot_a#1:#2\_YN#3\mark_ddot#4\_nil{#3}%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% Les méthodes %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\tpl_error_only_for_tuples #1{\tpl_error_inmethod{Method '#1' only available for tuples}}
+\def\tpl_error_no_argument #1#2{\tpl_error_inmethod{Method '#1' does not accept argument '\detokenize{#2}'}}
+\def\tpl_error_argument_required#1{\tpl_error_inmethod{Method '#1' requires an argument}}
+\def\tpl_error_empty_tuple#1{\tpl_error_inmethod{Method '#1' not compatible with an empty tuple}}
+%---------------
+% Méthode len (développable)
+%--------------
+\def\tpl_method_len#1#2#3{% #1=arg méthode #2=résultat méthodes précédentes #3=flag
+ \tpl_ifempty{#1}
+ {%
+ \tpl_testifnum{#3<1 }
+ {\tpl_error_only_for_tuples{len}}
+ {\tpl_method_len_a#2\_nil}%
+ }
+ {%
+ \tpl_error_no_argument{len}{#1}%
+ }%
+}
+\def\tpl_method_len_a(#1,#2\_nil{{#1}{0}}% renvoie un nombre
+%---------------
+% Méthode sum (développable)
+%--------------
+\def\tpl_method_sum#1#2#3{% #1=arg méthode #2=résultat méthodes précédentes #3=flag
+ \tpl_ifempty{#1}
+ {%
+ \tpl_testifnum{#3<1 }
+ {\tpl_error_only_for_tuples{sum}}
+ {\tpl_method_sum_a#2\_nil}%
+ }
+ {%
+ \tpl_error_no_argument{sum}{#1}%%
+ }%
+}
+\def\tpl_method_sum_a(#1,#2,#3\_nil{{#2}{0}}% renvoie un nombre
+%---------------
+% Méthode min (développable)
+%---------------
+\def\tpl_method_min#1#2#3{% #1=arg méthode #2=résultat méthodes précédentes #3=flag
+ \tpl_ifempty{#1}
+ {%
+ \tpl_testifnum{#3<1 }
+ {\tpl_error_only_for_tuples{min}}
+ {\tpl_method_min_a#2\_nil}%
+ }
+ {%
+ \tpl_error_no_argument{min}{#1}%%
+ }%
+}
+\def\tpl_method_min_a#1)#2#3\_nil{%
+ \tpl_ifempty{#3}
+ {\tpl_error_empty_tuple{min}}
+ {\tpl_method_min_b#3\_nil}%
+}
+\def\tpl_method_min_b0:#1,#2\_nil{{#1}{0}}% renvoie un nombre
+%---------------
+% Méthode max (développable)
+%---------------
+\def\tpl_method_max#1#2#3{% #1=arg méthode #2=résultat méthodes précédentes #3=flag
+ \tpl_ifempty{#1}
+ {%
+ \tpl_testifnum{#3<1 }
+ {\tpl_error_only_for_tuples{max}}
+ {\tpl_method_max_a#2\_nil}%
+ }
+ {%
+ \tpl_error_no_argument{max}{#1}%
+ }%
+}
+\def\tpl_method_max_a(#1,#2)#3#4\_nil{%
+ \tpl_ifempty{#4}
+ {\tpl_error_empty_tuple{max}}
+ {{\tpl_e_second\tpl_getitem{\the\numexpr#1-1}{#4}}{0}}% renvoie un nombre
+}
+%---------------
+% Méthode mean (développable)
+%---------------
+\def\tpl_method_mean#1#2#3{% #1=arg méthode #2=résultat méthodes précédentes #3=flag
+ \tpl_ifempty{#1}
+ {%
+ \tpl_testifnum{#3<1 }
+ {\tpl_error_only_for_tuples{mean}}
+ {\tpl_method_mean_a#2\_nil}%
+ }
+ {%
+ \tpl_error_no_argument{mean}{#1}%%
+ }%
+}
+\def\tpl_method_mean_a(#1,#2,#3\_nil{% #1=arg méthode #2=résultat méthodes précédentes #3=flag
+ \tpl_testifnum{#1=0 }
+ {\tpl_error_empty_tuple{mean}}
+ {{\tpl_expr_eval{#2/#1}}{0}}% renvoie un nombre
+}%
+%---------------
+% Méthode med (développable)
+%---------------
+\def\tpl_method_med#1#2#3{% #1=arg méthode #2=résultat méthodes précédentes #3=flag
+ \tpl_ifempty{#1}
+ {%
+ \tpl_testifnum{#3<1 }
+ {\tpl_error_only_for_tuples{med}}
+ {\tpl_method_med_a#2\_nil}%
+ }
+ {%
+ \tpl_error_no_argument{med}{#1}%%
+ }%
+}
+\def\tpl_method_med_a(#1,#2)#3#4\_nil{%
+ \tpl_testifnum{#1=0 }
+ {\tpl_error_empty_tuple{med}}
+ {\tpl_method_quantile_a0.5\_nil(#1,#2){#3}{#4}\_nil}% renvoie un nombre
+}
+%---------------
+% Méthode quantile (développable)
+%---------------
+\def\tpl_method_quantile#1#2#3{% #1=arg méthode #2=résultat méthodes précédentes #3=flag
+ \tpl_ifempty{#1}
+ {%
+ \tpl_error_argument_required{quantile}%
+ }%
+ {%
+ \tpl_testifnum{#3<1 }
+ {%
+ \tpl_error_only_for_tuples{quantile}%
+ }
+ {%
+ \tpl_testifnum{0\ifdim #1pt<0pt \else1\fi\ifdim#1pt<1pt 1\fi=11 }% si #1 dans [0 ; 1[
+ {\tpl_method_quantile_a#1\_nil#2\_nil}%
+ {\tpl_error_inmethod{Method 'quantile': argument '#1' not in [0;1-]}}%
+ }%
+ }%
+}
+\def\tpl_method_quantile_a#1\_nil(#2,#3)#4#5\_nil{%
+ \tpl_testifnum{#2=0 }
+ {\tpl_error_empty_tuple{quantile}}
+ {\tpl_x_after\tpl_method_quantile_b{{\tpl_expr_eval{(#2-1)*#1+1}}{\tpl_expr_eval{trunc((#2-1)*#1+1)}}}{#5}}% renvoie un nombre
+}
+\def\tpl_method_quantile_b#1#2#3{% #1=(len-1)*p+1 #2=E(#1) #3=tuple trié
+ {%
+ \tpl_expr_eval{% interpolation linéaire
+ (1-#1+#2)*\tpl_e_second\tpl_getitem{\the\numexpr#2-1\relax}{#3}%
+ +%
+ (#1-#2)*\tpl_getitem{#2}{#3}%
+ }%
+ }%
+ {0}%
+}
+%---------------
+% Méthode stdev (développable)
+%---------------
+\def\tpl_method_stdev#1#2#3{% #1=arg méthode #2=résultat méthodes précédentes #3=flag
+ \tpl_ifempty{#1}
+ {%
+ \tpl_testifnum{#3<1 }
+ {\tpl_error_only_for_tuples{stdev}}
+ {\tpl_method_stdev_a#2\_nil}%
+ }
+ {%
+ \tpl_error_no_argument{stdev}{#1}%%
+ }%
+}
+\def\tpl_method_stdev_a(#1,#2,#3)#4\_nil{%
+ \tpl_testifnum{#1=0 }
+ {\tpl_error_empty_tuple{stdev}}
+ {{\tpl_expr_eval{sqrt(#3/#1-(#2/#1)**2)}}{0}}% renvoie un nombre
+}
+%---------------
+% Méthode get (développable)
+%---------------
+\def\tpl_method_get#1#2#3{% #1=arg méthode #2=résultat méthodes précédentes #3=flag
+ \tpl_ifempty{#1}
+ {%
+ \tpl_error_inmethod{Method 'get': argument required}%
+ }
+ {%
+ \tpl_testifnum{#3<1 }
+ {\tpl_error_only_for_tuples{get}}%
+ {\tpl_e_second\tpl_method_get_a{\the\numexpr#1\relax}#2\_nil}%
+ }%
+}
+\def\tpl_method_get_a#1(#2,#3)#4#5\_nil{%
+ \tpl_testifnum{#2=0 }
+ {%
+ \tpl_error_empty_tuple{get}%
+ }
+ {%
+ \tpl_testifnum{0\ifnum#1>-1 1\fi\ifnum#1<#2 1\fi=11 }% si index dans [0 ; len -1]
+ {%
+ {\tpl_getitem{#1}{#4}}{0}%
+ }
+ {%
+ \tpl_testifnum{0\ifnum#1<0 1\fi\ifnum\numexpr#1+#2+1>0 1\fi=11 }% si index dans [-len ; -1]
+ {{\tpl_e_second\tpl_getitem{\the\numexpr#1+#2\relax}{#4}}{0}}
+ {\tpl_error_inmethod{Method 'get': invalid index '\detokenize{#1}'}}%
+ }%
+ }%
+}
+%---------------
+% Méthode set (développable)
+%---------------
+\def\tpl_method_set#1#2#3{% #1=arg méthode ("index1:val1,index2:val2, etc") #2=résultat méthodes précédentes #3=flag
+ \tpl_ifempty{#1}
+ {%
+ \tpl_error_inmethod{Method 'set': argument required}%
+ }
+ {\tpl_testifnum{#3<1 }
+ {\tpl_error_only_for_tuples{set}}%
+ {\tpl_x_after\tpl_method_set_a{#1}\_nil#2\_nil}% xdévelopper #1 et dégrouper #1 et #3
+ }%
+}
+\def\tpl_method_set_a#1\_nil(#2,#3)#4#5\_nil{% #2=len
+ \tpl_testifnum{#2=0 }% si tuple vide, on envoie '0:0,' avec len=1
+ {\tpl_method_set_b{0:0,}{1}#1,\relax:\relax,\_nil}
+ {\tpl_method_set_b{#4}{#2}#1,\relax:\relax,\_nil}%
+}
+\def\tpl_method_set_b#1#2#3:#4,{% #1=tuple #2=len #3=index courant #4=valeur courante
+ \tpl_testifx{\relax#3}
+ {%
+ {\tpl_newtuple_b{#1}}{1}\tpl_gobtonil
+ }
+ {%
+ \tpl_testifnum{0\ifnum#3>-1 1\fi\ifnum#3<#2 1\fi=11 }% si index dans [0 ; len-1]
+ {%
+ \tpl_x_second\tpl_method_set_b{\tpl_setitem{#3}{#4}{#1}}{#2}%
+ }%
+ {%
+ \tpl_testifnum{0\ifnum#3<0 1\fi\ifnum\numexpr#3+#2+1>0 1\fi=11 }% si index dans [-len ; -1]
+ {\tpl_x_second\tpl_method_set_b{\tpl_e_second\tpl_setitem{\the\numexpr#3+#2}{#4}{#1}}{#2}}
+ {\tpl_error_inmethod{Method 'set': invalid index '#3'}\tpl_gobtonil}%
+ }%
+ }%
+}
+%---------------
+% Méthode sorted (développable)
+%---------------
+\def\tpl_method_sorted#1#2#3{% #1=arg méthode #2=résultat méthodes précédentes #3=flag
+ \tpl_ifempty{#1}
+ {%
+ \tpl_testifnum{#3<1 }
+ {\tpl_error_only_for_tuples{sorted}}%
+ {\tpl_method_sorted_a#2\_nil}%
+ }
+ {%
+ \tpl_error_no_argument{sorted}{#1}%%
+ }%
+}
+\def\tpl_method_sorted_a(#1)#2#3\_nil{%
+ {(#1){\tpl_ifempty{#3}{#2}{#3}}{}}{1}%
+}
+%---------------
+% Méthode store (_NON_ développable)
+%---------------
+\def\tpl_ifcs#1{% #1 est-il constitué d'une seule séquence de contrôle ?
+ \tpl_testifnum{\tpl_ifempty{#1}0{\tpl_e_second\tpl_ifempty{\tpl_gobone#1}10}\ifnum\expandafter\expandafter\expandafter`\expandafter\tpl_firsttonil\string#1.\_nil=\escapechar1\fi=11 }%
+}
+\def\tpl_method_store#1#2#3{% #1=arg méthode #2=len #3=index courant #4=valeur courante
+ \tpl_ifempty{#1}
+ {%
+ \tpl_error_argument_required{store}%
+ }
+ {%
+ \tpl_testifnum{#3<1 }
+ \tpl_method_store_a
+ \tpl_method_store_b
+ #1\_nil#2\_nil
+ }%
+}
+\def\tpl_method_store_a#1\_nil#2\_nil{% #1=arg méthode #2=résultat méthodes précédentes
+ \tpl_ifcs{#1}
+ {\unexpanded{{\def#1{#2}}}{-1}}% bloquer le développement
+ {\tpl_error_inmethod{Method 'store': unexpected argument '\detokenize{#1}'}}%
+}
+\def\tpl_method_store_b#1\_nil(#2,#3)#4#5\_nil{% #1=arg méthode #2=arg méthode #3=flag #4=résultat méthodes précédentes
+ \tpl_ifempty{#1}
+ {\tpl_error_inmethod{Method 'store': impossible to define a tuple with an empty name}}
+ {{\noexpand\tpl_csedef{tpl_tuple(\tpl_stripsp\detokenize{#1})}{\tpl_e_second\tpl_newtuple_b{\detokenize\expandafter{\expanded{#4}}}}}{-1}}% bypass \newtuple pour permettre de modifier le tuple initial
+}
+%---------------
+% Méthode split (_NON_ développable)
+%---------------
+\def\tpl_method_split#1#2#3{% #1=arg méthode #2=résultat méthodes précédentes
+ \tpl_ifempty{#1}
+ {%
+ \tpl_error_inmethod{Method 'split': argument required}%
+ }
+ {%
+ \tpl_testifnum{#3>0 }
+ {\tpl_method_split_a#1\_nil#2\_nil}% dégrouper #1 et #3
+ {\tpl_error_only_for_tuples{split}}%
+ }%
+}
+
+\def\tpl_method_split_a#1#2#3\_nil(#4,#5)#6#7\_nil{% #1=index de coupure #2=nom tuple 1 #3=nom tuple2
+ \tpl_testifnum{#4=0 }
+ {%
+ \tpl_error_empty_tuple{split}%
+ }
+ {%
+ \tpl_testifnum{\tpl_ifempty{#2}01\tpl_ifempty{#3}01=11 }% si les deux noms ne sont pas vide
+ {%
+ \tpl_testifnum{0\ifnum#1>-1 1\fi\ifnum#1<\numexpr#4-1\relax1\fi=11 }% si #1 dans [0;len-2]
+ {%
+ \tpl_x_after\tpl_method_split_b{\tpl_split{#1}{#6}}?{#2}{#3}%
+ }
+ {%
+ \tpl_testifnum{0\ifnum#1<-1 1\fi\ifnum\numexpr#1+#4+1>0 1\fi=11 }% si #1 dans [-len ; -2]
+ {\tpl_x_after\tpl_method_split_b{\tpl_e_second\tpl_split{\the\numexpr#1+#4}{#6}}?{#2}{#3}}
+ {\tpl_error_inmethod{Method 'split': invalid index '#1"}}%
+ }%
+ }
+ {%
+ \tpl_error_inmethod{Method 'split': empty name not allowed}%
+ }%
+ }%
+}
+\def\tpl_method_split_b#1?#2?#3#4{%
+ {%
+ \noexpand\tpl_csedef{tpl_tuple(\tpl_stripsp\detokenize{#3})}{\tpl_e_second\tpl_newtuple_b{\detokenize\expandafter{\expanded{#1}}}}%
+ \noexpand\tpl_csedef{tpl_tuple(\tpl_stripsp\detokenize{#4})}{\tpl_e_second\tpl_newtuple_b{\detokenize\expandafter{\expanded{#2}}}}%
+ }%
+ {-1}%
+}
+%---------------
+% Méthode add (développable)
+%---------------
+\def\tpl_method_add#1#2#3{% #1=arg méthode (index1:items,index2:items,...) #2=résultat méthodes précédentes #3=flag
+ \tpl_ifempty{#1}
+ {%
+ \tpl_error_inmethod{Method 'add': argument required}%
+ }
+ {%
+ \tpl_testifnum{#3>0 }
+ {\tpl_x_after\tpl_method_add_a{#1}\_nil#2\_nil}% xdévelopper # et dégrouper #1 et #3
+ {\tpl_error_only_for_tuples{add}}%
+ }%
+}
+\def\tpl_method_add_a#1\_nil(#2,#3)#4#5\_nil{% #2=len
+ \tpl_method_add_b{#4}{#2}#1,\relax:\relax,\_nil
+}
+
+\def\tpl_method_add_b#1#2#3:#4,{% #1=tuple #2=len #3=index courant #4=item(s)
+ \tpl_testifx{\relax#3}
+ {%
+ {\tpl_newtuple_b{#1}}{1}%
+ \tpl_gobtonil
+ }
+ {%
+ \tpl_testifnum{#3<0 }
+ {%
+ \tpl_testifnum{\numexpr#3+#2+2>0 }% si index dans [-n-1 ; -1]
+ {\tpl_x_second{\tpl_method_add_c{#1}{#2}}{\the\numexpr#3+#2+1}{#4}}%
+ {\tpl_error_inmethod{Method 'add': invalid index '\detokenize{#3:#4}'}\tpl_gobtonil}%
+ }
+ {%
+ \tpl_method_add_c{#1}{#2}{#3}{#4}%
+ }%
+ }%
+}
+\def\tpl_method_add_c#1#2#3#4{% #1=tuple #2=len #3=index courant #4=item(s)
+ \tpl_testifnum{#3=0 }
+ {%
+ \tpl_method_add_b{#4,#1}{#2}% si index=0 : ajouter au début
+ }
+ {%
+ \tpl_testifnum{#3=#2 }
+ {%
+ \tpl_method_add_b{#1#4,}{#2}% si index=len : ajouter #4 à la fin
+ }
+ {%
+ \tpl_testifnum{0\ifnum#3>0 1\fi\ifnum#3<#2 1\fi=11 }% si index dans [1 ; len-1]
+ {\tpl_x_after\tpl_method_add_d{\expandafter\tpl_split\expandafter{\the\numexpr#3-1}{#1}}?{#4}{#2}}
+ {\tpl_error_inmethod{Method 'add': invalid index '\detokenize{#3:#4}'}\tpl_gobtonil}%
+ }%
+ }%
+}
+
+\def\tpl_method_add_d#1?#2?#3#4{%#1=tuple 1 #2=tuple 2 #3=items à insérer #4=len
+ \tpl_method_add_b{#1#3,#2}{#4}%
+}
+%---------------
+% Méthode op (développable)
+%---------------
+\def\tpl_eval_op#1#2{\tpl_subst_idx_a#1\?{\tpl_subst_idx_b#1\_nil{#2}}\_markit idx\?{\tpl_subst_val{#1}}\_markit\_nil}
+\def\tpl_subst_idx_a#1idx#2\?#3\_markit#4\_nil{#3}%
+\def\tpl_subst_idx_b#1idx#2\_nil#3{\tpl_eval_op{#1#3#2}{#3}}
+\def\tpl_subst_val#1#2{\tpl_subst_val_a#1\?{\tpl_subst_val_b#1\_nil{#2}}\_markit val\?{\tpl_expr_eval{#1}}\_markit\_nil}
+\def\tpl_subst_val_a#1val#2\?#3\_markit#4\_nil{#3}%
+\def\tpl_subst_val_b#1val#2\_nil#3{\tpl_subst_val{#1#3#2}{#3}}
+\def\tpl_method_op#1#2#3{% #1=arg méthode f(idx, val) #2=résultat méthodes précédentes #3=flag
+ \tpl_ifempty{#1}
+ {%
+ \tpl_error_argument_required{op}%
+ }
+ {%
+ \tpl_testifnum{#3<1 }
+ {\tpl_error_only_for_tuples{op}}
+ {\tpl_method_op_a#1\_nil#2\_nil}%
+ }%
+}
+\def\tpl_method_op_a#1\_nil#2)#3#4\_nil{%
+ {\tpl_x_second\tpl_newtuple_b{\tpl_method_op_b{#1}#3\relax:\relax,}}{1}%
+}
+\def\tpl_method_op_b#1#2:#3,{%
+ \tpl_testifx{\relax#2}
+ {}
+ {#2:\tpl_eval_op{#1}{#2}{#3},\tpl_method_op_b{#1}}%
+}
+%---------------
+% Méthode filter (développable)
+%---------------
+\def\tpl_method_filter#1#2#3{% #1=arg méthode f(idx, val) #2=résultat méthodes précédentes #3=flag
+ \tpl_ifempty{#1}
+ {%
+ \tpl_error_argument_required{filter}%
+ }
+ {%
+ \tpl_testifnum{#3<1 }
+ {\tpl_error_only_for_tuples{filter}}
+ {\tpl_method_filter_a#1\_nil#2\_nil}%
+ }%
+}
+\def\tpl_method_filter_a#1\_nil#2)#3#4\_nil{%
+ {\tpl_x_second\tpl_newtuple_b{\tpl_method_filter_b{#1}#3\relax:\relax,}}{1}%
+}
+\def\tpl_method_filter_b#1#2:#3,{%
+ \tpl_testifx{\relax#2}
+ {}
+ {%
+ \tpl_testifnum{\tpl_eval_op{#1}{#2}{#3}=1 }
+ {#2:#3,}
+ {}%
+ \tpl_method_filter_b{#1}%
+ }%
+}
+%---------------
+% Méthode pos (développable)
+%---------------
+\def\tpl_method_pos#1#2#3{% #1=arg méthode {valeur} #2=résultat méthodes précédentes #3=flag
+ \tpl_ifempty{#1}
+ {%
+ \tpl_error_argument_required{pos}%
+ }
+ {%
+ \tpl_testifnum{#3<1 }
+ {\tpl_error_only_for_tuples{pos}}
+ {\tpl_method_pos_a#1[1]\_nil#2\_nil}%
+ }%
+}
+\def\tpl_method_pos_a#1[#2]#3\_nil#4)#5#6\_nil{%
+ {\tpl_method_pos_b{1}{#2}{#1}#5\relax:\relax,\_nil}{0}%
+}
+\def\tpl_method_pos_b#1#2#3#4:#5,{% #1=occurrence en cours #2=occurrence souhaitée #3=nombre cherché
+ \tpl_testifx{\relax#4}
+ {%
+ -1\tpl_gobtonil% si occurrence non trouvée, renvoyer -1
+ }
+ {%
+ \tplfpcompare{#3}={#5}% nombres correspondent ?
+ {%
+ \tpl_testifnum{#1=#2 }% occurrence souhaitée ?
+ {#4\tpl_gobtonil}
+ {\tpl_e_second\tpl_method_pos_b{\the\numexpr#1+1}{#2}{#3}}%
+ }% à la première occurrence, renvoyer #2
+ {%
+ \tpl_method_pos_b{#1}{#2}{#3}%
+ }%
+ }%
+}
+%---------------
+% Méthode comp (développable)
+%---------------
+\def\tpl_eval_comp#1#2{\tpl_subst_xa_a#1\?{\tpl_subst_xa_b#1\_nil{#2}}\_markit xa\?{\tpl_subst_xb{#1}}\_markit\_nil}
+\def\tpl_subst_xa_a#1xa#2\?#3\_markit#4\_nil{#3}%
+\def\tpl_subst_xa_b#1xa#2\_nil#3{\tpl_eval_comp{#1#3#2}{#3}}
+\def\tpl_subst_xb#1#2{\tpl_subst_xb_a#1\?{\tpl_subst_xb_b#1\_nil{#2}}\_markit xb\?{\tpl_expr_eval{#1}}\_markit\_nil}
+\def\tpl_subst_xb_a#1xb#2\?#3\_markit#4\_nil{#3}%
+\def\tpl_subst_xb_b#1xb#2\_nil#3{\tpl_subst_xb{#1#3#2}{#3}}
+\def\tpl_method_comp#1#2#3{% #1=arg méthode "{op}{nom tuple B}" #2=résultat méthodes précédentes #3=flag
+ \tpl_ifempty{#1}
+ {%
+ \tpl_error_inmethod{Method 'comp' requires arguments}%
+ }
+ {%
+ \tpl_testifnum{#3<1 }
+ {\tpl_error_only_for_tuples{comp}}
+ {\tpl_method_comp_a#1\_nil#2\_nil}%
+ }%
+}
+\def\tpl_method_comp_a#1#2\_nil#3\_nil{%
+ \tpl_testifcsname{tpl_tuple(\tpl_stripsp\detokenize{#2})}
+ {\tpl_x_after\tpl_method_comp_b{{#1}\csname tpl_tuple(\tpl_stripsp\detokenize{#2})\endcsname}#3}
+ {\tpl_error_inmethod{Method 'comp': tuple '#2' undefined}}%
+}
+\def\tpl_method_comp_b#1(#2,#3)#4#5(#6,#7)#8#9{%
+ \tpl_testifnum{#2=#6 }
+ {{\tpl_x_second\tpl_newtuple_b{\tpl_method_comp_c{#1}#4\relax:\relax,\_nil#8\relax:\relax,\_nil}}{1}}
+ {\tpl_error_inmethod{Method 'comp' requires tuple with same length}}%
+}
+\def\tpl_method_comp_c#1#2:#3,#4\_nil#5:#6,#7\_nil{%
+ \tpl_testifx{\relax#3}
+ {}
+ {#2:\tpl_eval_comp{#1}{#6}{#3},\tpl_method_comp_c{#1}#4\_nil#7\_nil}%
+}
+%---------------
+% Méthode show (développable ou _NON_ développable, dépend des macros \tplformat et \tplsep)
+%---------------
+\def\tpl_method_show#1#2#3{% #1=arg méthode #2=résultat méthodes précédentes #3=flag
+ \tpl_testifnum{#3=1 }
+ {{\tpl_method_show_a#2}{0}}
+ {\tpl_error_only_for_tuples{show}}%
+}
+\def\tpl_method_show_a#1)#2#3{\tpl_unindex\tplformat\tplsep{#2}}
+\def\tplformat#1#2{#2}% #1=index en cours #2=item en cours
+\def\tplsep{, }
+%---------------
+% Méthode end_exe (privée et développable)
+%---------------
+\def\tpl_method_end_exe#1#2#3{% #1=arg méthode #2=résultat méthodes précédentes #3=flag
+ {%
+ \tpl_testifnum{#3=1 }
+ {\tpl_method_end_exe_a#2}
+ {\unexpanded{#2}}% diriger vers l'affichage si flag<1
+ }%
+ {-1}%
+}
+\def\tpl_method_end_exe_a#1)#2#3{\tpl_unindex\tpl_method_end_exe_format\tpl_method_end_exe_sep{#2}}
+\def\tpl_method_end_exe_format#1#2{#2}
+\def\tpl_method_end_exe_sep{, }
+%---------------
+% macro \tpl_unindex
+%---------------
+\def\tpl_unindex#1#2#3{% #1=macro pour formater un item #2=macro séparateur #3=tuple indexé
+ \tpl_ifempty{#3}
+ {}%
+ {\tpl_unindex_a{#1}{#2}#3\relax:\relax,}%
+}
+\def\tpl_unindex_a#1#2#3:#4,#5{% #1=macro pour formater un item #2=macro séparateur #3=index courant #4=item courant #5=prochain index
+ \unexpanded\expandafter{#1{#3}{#4}}% afficher l'item
+ \tpl_testifx{\relax#5}
+ {%
+ \tpl_unindex_b
+ }
+ {%
+ #2% afficher le séparateur
+ \tpl_unindex_a{#1}{#2}#5%
+ }%
+}
+\def\tpl_unindex_b#1,{}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% La macro utilisateur \tplexe %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\tplexe#1{%
+ \tpl_exea#1.end_exe.\_nil
+}
+\def\tpl_exea#1.{% #1=nom du tuple TODO:tester trié ou pas
+ \tpl_testifcsname{tpl_tuple(\tpl_stripsp\detokenize{#1})}
+ {\expandafter\expandafter\expandafter\tpl_exeb\csname tpl_tuple(\tpl_stripsp\detokenize{#1})\endcsname1}
+ {\tpl_error{Tuple '\detokenize{#1}' not defined}\tpl_gobtonil}%
+}
+% Flag
+% -1 : c'est la dernière méthode appelée, les autres sont ignorées
+% 0 : résultat est un nombre ou est affichable
+% 1 : résultat est un tuple
+\def\tpl_exeb(#1)#2#3#4{% #1=flag #2=données du tuple #3=tuple non indexé #4=tuple indexé
+ \tpl_exec{(#1){#2}{#3}}{#4}%{#5}% grouper les argument du tuple
+}
+\def\tpl_exec#1#2{% #1=résultat des dernières méthodes (soit le tuple entier (carac){tupleNTR}{tuple TR}, soit un nombre) #2=flag
+ \tpl_testifnum{#2=-1 }
+ {#1\tpl_gobtonil}% renvoie #1 et ignore toutes les autres méthodes
+ {\tpl_exed{#1}{#2}}%
+}
+\def\tpl_exed#1#2#3.{% #1=résultat des dernières méthodes (soit le tuple entier (carac){tupleNTR}{tuple TR}, soit un nombre) #2=flag #3=méthode (et arguments) en cours de traitement
+ \tpl_x_after\tpl_exee{\tpl_split_method_args{#3}}{#1}{#2}%
+}
+\def\tpl_exee#1#2#3#4{% #1=nom méthode #2=arg méthode #3=argument laissé par les méthodes #4=flag
+ \tpl_testifcsname{tpl_method_#1}
+ {\tpl_x_after\tpl_exec{\csname tpl_method_#1\endcsname{#2}{#3}{#4}}}% 3 arg à chaque méthode 1er=arg méthode #2=résultat précédent #3=flag
+ {\tpl_error{Unknown method "#1"}\tpl_gobtonil}%
+}
+
+\def\tpl_list_methods{len,sum,min,max,mean,med,quantile,stdev,get,set,sorted,store,split,add,op,filter,pos,comp,show,end_exe}
+\def\tpl_iftrueempty#1{\if\relax\detokenize{#1}\relax\tpl_exec_first\fi\tpl_exec_second}
+\tpl_foreach\_temp\in\tpl_list_methods\do{%
+ \tpl_csedef{tpl_try_\_temp}##1{%
+ \tpl_cs_enxp{tpl_try_\_temp _a}##1\noexpand\__nil\_temp\noexpand\___nil\noexpand\_nil
+ }%
+ \tpl_csedef{tpl_try_\_temp _a\expandafter}\expandafter##\expandafter1\_temp##2\_nil{%
+ \noexpand\tpl_iftrueempty{##1}% ##1 ne _doit_ pas être ' ' donc la syntaxe ". method" est invalide
+ {{\_temp}{\noexpand\tpl_sanitize_arg##2}\noexpand\tpl_gobtonil}% <- argument Vrai
+ }%
+}
+\def\tpl_split_method_args#1{% #1=<méthode><arg> -> retour {methode}{arg} ou {methode}{{arg1}{arg2}{arg3}...}
+ \tpl_e_after{\tpl_split_method_args_a{#1}}\tpl_list_methods,\relax,\_nil
+}
+\def\tpl_split_method_args_a#1#2,{%
+ \tpl_testifx{\relax#2}
+ {%
+ {\detokenize{#1}}{}\tpl_gobtonil
+ }
+ {%
+ \csname tpl_try_#2\endcsname{#1}%
+ %{} <- inclus dans la macro \tpl_try_<methode>_a
+ {\tpl_split_method_args_a{#1}}% <- argument Faux
+ }%
+}
+\def\tpl_sanitize_arg#1\__nil#2\___nil{\tpl_stripsp\unexpanded{#1}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% La macro utilisateur \gentuple %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\tpl_strip_lastcomma#1{\tpl_strip_lastcomma_i#1\empty\tpl_gobtonil, \empty\_nil}%
+\def\tpl_strip_lastcomma_i#1, \empty{#1}
+\def\tpl_id#1{#1}
+\def\tpl_is_while#1{\tpl_stripsp{\expandafter\tpl_is_while_a\tpl_id}{#1}\while\_nil}
+\def\tpl_is_while_a#1\while#2\_nil{\tpl_ifempty{#1}{\tpl_is_while_b#2\_nil}{\tpl_exec_second}}
+\def\tpl_is_while_b#1\while#2\_nil{\tpl_ifempty{#1#2}}
+\def\tpl_is_until#1{\tpl_stripsp{\expandafter\tpl_is_until_a\tpl_id}{#1}\until\_nil}
+\def\tpl_is_until_a#1\until#2\_nil{\tpl_ifempty{#1}{\tpl_is_until_b#2\_nil}{\tpl_exec_second}}
+\def\tpl_is_until_b#1\until#2\_nil{\tpl_ifempty{#1#2}}
+\def\gentuple#1{%
+ \tpl_x_second\tpl_strip_lastcomma{\tpl_gentuple_a#1\_nil}%
+}
+\def\tpl_gentuple_a#1\genrule#2;#3\_nil{% #1=amorce #2=expression de génération #3=\while|\until <condition>
+ \tpl_stripsp{\expandafter\tpl_gentuple_b\tpl_id}{#3}\_nil#1\genrule#2;%
+}
+\def\tpl_gentuple_b#1#2\_nil#3\genrule#4;{% #1=\while|\until #2=condition #3=amorce #4=expression de génération
+ \tpl_is_while{#1}
+ {%
+ \tpl_gentuple_c0{}{}#3\relax,{#4}{#2}\tpl_gentuple_g
+ }
+ {%
+ \tpl_is_until{#1}
+ {\tpl_gentuple_c0{}{}#3\relax,{#4}{#2}\tpl_gentuple_f}
+ {\tpl_error{\string\while\space or \string\until\space expected before condition}}%
+ }%
+}
+\def\tpl_gentuple_c#1#2#3#4,{% #1=index en cours #2=n1,n2,n3,... #3={n1}{n2}{n3}... #4=item d'amorce en cours
+ \tpl_testifx{\relax#4}
+ {#2\tpl_gentuple_e{#1}{#1}{#3}}% afficher l'amorce '#2' puis aller à la macro récursive
+ {\tpl_e_second\tpl_gentuple_c{\the\numexpr#1+1}{#2#4,}{#3{#4}}}%
+}
+\def\tpl_gentuple_e#1#2#3#4#5#6{% #1=index en cours #2=nb de variables #3=dernières valeurs #4=expression de génération #5=condition arret #6=\tpl_gentuple_g(while) ou \tpl_gentuple_f(until)
+ \tpl_x_second{#6}{\tpl_expr_eval{\tpl_subst_allvalues{#2}{#4}{#3}{#1}}}% <- #1=valeur pour \i (index courant)
+ {#1}{#2}{#3}{#4}{#5}%
+}
+\def\tpl_gentuple_f#1#2#3#4#5#6{% #1=item en cours #2=index en cours #3=nb de variables #4=dernières valeurs #5=expression de génération #6=condition arret (until)
+ #1% afficher '#1,' avant de faire le test
+ \ifnum\tpl_x_second\tpl_subst_val{\tpl_subst_i{#6}{#2}}{#1}=0 % tant que condition d'arrêt non vérifiée
+ \tpl_antefi
+ , % séparateur si pas le dernier
+ \tpl_x_after\tpl_gentuple_e{{\the\numexpr#2+1}{#3}{\tpl_gobone#4{#1}}}{#5}{#6}\tpl_gentuple_f% puis recommencer
+ \fi
+}
+\def\tpl_gentuple_g#1#2#3#4#5#6{% #1=item en cours #2=index en cours #3=nb de variables #4=dernières valeurs #5=expression de génération #6=condition de poursuite (while)
+ \ifnum\tpl_x_second\tpl_subst_val{\tpl_subst_i{#6}{#2}}{#1}=1 % tant que condition de poursuite en vérifiée
+ \tpl_antefi
+ #1, % séparateur toujours présent, même arès le dernier nombre
+ \expandafter\tpl_gentuple_e\expanded{{\the\numexpr#2+1}{#3}{\tpl_gobone#4{#1}}}{#5}{#6}\tpl_gentuple_g% puis recommencer
+ \fi
+}
+%---------------
+% macros auxiliaires pour \gentuple
+%---------------
+\tpl_foreach\__temp\in{i,1,2,3,4,5,6,7,8,9}\do{% définition des macros de remplacement \1, \2, etc
+ \tpl_csedef{tpl_subst_\__temp}##1##2{\tpl_cs_enxp{tpl_subst_\__temp _a}##1\noexpand\?{\tpl_cs_enxp{tpl_subst_\__temp _b}##1\noexpand\_nil{##2}}\noexpand\_markit\tpl_cs_enxp{\__temp}\noexpand\?{\noexpand\unexpanded{##1}}\noexpand\_markit\noexpand\_nil}%
+ \tpl_csdef {tpl_subst_\__temp _a\expandafter}\expandafter##\expandafter1\csname\__temp\endcsname##2\?##3\_markit##4\_nil{##3}%
+ \tpl_csedef{tpl_subst_\__temp _b\expandafter}\expandafter##\expandafter1\csname\__temp\endcsname##2\_nil##3{\tpl_cs_enxp{tpl_subst_\__temp}{##1##3##2}{##3}}%
+}
+\def\tpl_subst_allvalues#1#2#3{% #1=nombre de variables #2=expression où il y a \1, \2, etc #3=valeurs pour les variables #4=valeur pour \i
+ \tpl_subst_allvalues_a{1}{#1}{#2}#3{}{}{}{}{}{}{}{}{}\_nil%{#4}% <- ajouter l'index courant qui est la valeur pour \i
+}
+\def\tpl_subst_allvalues_a#1#2#3#4{% #1=n° de remplacement en cours #2=nb total de remplacements #3=expression #4=valeur de la variable n°#1
+ \tpl_testifnum{#1>#2 }
+ {\tpl_firsttonil{\tpl_subst_i{#3}}}% <- mange tout jusqu'au \_nil puis lit la valeur pour \i
+ {\tpl_x_after\tpl_subst_allvalues_a{{\the\numexpr#1+1}{#2}{\csname tpl_subst_#1\endcsname{#3}{#4}}}}%
+}
+
+\tpl_restorecatcode
+\tplsetmode{dec : long}
+\endinput
+
+Versions :
+ _____________________________________________________________________________
+| Version | Date | Changements |
+|-----------------------------------------------------------------------------|
+| 0.1 | 16/11/2024 | Première version |
+|-----------------------------------------------------------------------------|
+| 0.2 | 20/12/2024 | * choix du type de nombres dans le tuple : "int", |
+| | | "dec:short" ou bien "dec:long" (défaut) |
+| | | * index négatifs possibles pour les méthodes get, |
+| | | set, add et split |
+| | | * ajout d'un moteur de calcul rudimentaire pour les |
+| | | décimaux #8.#8 avec produit de type #16.#8 |
+| | | * la méthode 'pos' admet un argument optionnel pour |
+| | | indiquer l'occurrence cherchée |
+|-----------------------------------------------------------------------------| \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/unicode-data/BidiBrackets.txt b/Master/texmf-dist/tex/generic/unicode-data/BidiBrackets.txt
index 8cebea41544..db4e41b6e6a 100644
--- a/Master/texmf-dist/tex/generic/unicode-data/BidiBrackets.txt
+++ b/Master/texmf-dist/tex/generic/unicode-data/BidiBrackets.txt
@@ -1,8 +1,8 @@
-# BidiBrackets-15.1.0.txt
-# Date: 2023-01-18
-# © 2023 Unicode®, Inc.
+# BidiBrackets-16.0.0.txt
+# Date: 2024-02-02
+# © 2024 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
-# For terms of use, see https://www.unicode.org/terms_of_use.html
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
diff --git a/Master/texmf-dist/tex/generic/unicode-data/BidiMirroring.txt b/Master/texmf-dist/tex/generic/unicode-data/BidiMirroring.txt
index 7e58cc4d715..d8f60cb79fe 100644
--- a/Master/texmf-dist/tex/generic/unicode-data/BidiMirroring.txt
+++ b/Master/texmf-dist/tex/generic/unicode-data/BidiMirroring.txt
@@ -1,7 +1,8 @@
-# BidiMirroring-15.1.0.txt
-# Date: 2023-01-05
-# © 2023 Unicode®, Inc.
-# For terms of use, see https://www.unicode.org/terms_of_use.html
+# BidiMirroring-16.0.0.txt
+# Date: 2024-01-30
+# © 2024 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
@@ -15,7 +16,7 @@
# value, for which there is another Unicode character that typically has a glyph
# that is the mirror image of the original character's glyph.
#
-# The repertoire covered by the file is Unicode 15.1.0.
+# The repertoire covered by the file is Unicode 16.0.0.
#
# The file contains a list of lines with mappings from one code point
# to another one for character-based mirroring.
@@ -44,7 +45,8 @@
#
# This file was originally created by Markus Scherer.
# Extended for Unicode 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, and 6.0 by Ken Whistler,
-# and for subsequent versions by Ken Whistler, Laurentiu Iancu, and Roozbeh Pournader.
+# and for subsequent versions by Ken Whistler, Laurentiu Iancu, Roozbeh Pournader,
+# and Robin Leroy.
#
# Historical and Compatibility Information:
#
@@ -542,6 +544,7 @@ FF63; FF62 # [BEST FIT] HALFWIDTH RIGHT CORNER BRACKET
# 225F; QUESTIONED EQUAL TO
# 2260; NOT EQUAL TO
# 2262; NOT IDENTICAL TO
+# 226D; NOT EQUIVALENT TO
# 228C; MULTISET
# 22A7; MODELS
# 22AA; TRIPLE VERTICAL BAR RIGHT TURNSTILE
diff --git a/Master/texmf-dist/tex/generic/unicode-data/CaseFolding.txt b/Master/texmf-dist/tex/generic/unicode-data/CaseFolding.txt
index 69c5c64b4c6..1b7a9c156c7 100644
--- a/Master/texmf-dist/tex/generic/unicode-data/CaseFolding.txt
+++ b/Master/texmf-dist/tex/generic/unicode-data/CaseFolding.txt
@@ -1,8 +1,8 @@
-# CaseFolding-15.1.0.txt
-# Date: 2023-05-12, 21:53:10 GMT
-# © 2023 Unicode®, Inc.
+# CaseFolding-16.0.0.txt
+# Date: 2024-04-30, 21:48:11 GMT
+# © 2024 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
-# For terms of use, see https://www.unicode.org/terms_of_use.html
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
@@ -603,6 +603,7 @@
1C86; C; 044A; # CYRILLIC SMALL LETTER TALL HARD SIGN
1C87; C; 0463; # CYRILLIC SMALL LETTER TALL YAT
1C88; C; A64B; # CYRILLIC SMALL LETTER UNBLENDED UK
+1C89; C; 1C8A; # CYRILLIC CAPITAL LETTER TJE
1C90; C; 10D0; # GEORGIAN MTAVRULI CAPITAL LETTER AN
1C91; C; 10D1; # GEORGIAN MTAVRULI CAPITAL LETTER BAN
1C92; C; 10D2; # GEORGIAN MTAVRULI CAPITAL LETTER GAN
@@ -1240,9 +1241,13 @@ A7C5; C; 0282; # LATIN CAPITAL LETTER S WITH HOOK
A7C6; C; 1D8E; # LATIN CAPITAL LETTER Z WITH PALATAL HOOK
A7C7; C; A7C8; # LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY
A7C9; C; A7CA; # LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY
+A7CB; C; 0264; # LATIN CAPITAL LETTER RAMS HORN
+A7CC; C; A7CD; # LATIN CAPITAL LETTER S WITH DIAGONAL STROKE
A7D0; C; A7D1; # LATIN CAPITAL LETTER CLOSED INSULAR G
A7D6; C; A7D7; # LATIN CAPITAL LETTER MIDDLE SCOTS S
A7D8; C; A7D9; # LATIN CAPITAL LETTER SIGMOID S
+A7DA; C; A7DB; # LATIN CAPITAL LETTER LAMBDA
+A7DC; C; 019B; # LATIN CAPITAL LETTER LAMBDA WITH STROKE
A7F5; C; A7F6; # LATIN CAPITAL LETTER REVERSED HALF H
AB70; C; 13A0; # CHEROKEE SMALL LETTER A
AB71; C; 13A1; # CHEROKEE SMALL LETTER E
@@ -1525,6 +1530,28 @@ FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z
10CB0; C; 10CF0; # OLD HUNGARIAN CAPITAL LETTER EZS
10CB1; C; 10CF1; # OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN
10CB2; C; 10CF2; # OLD HUNGARIAN CAPITAL LETTER US
+10D50; C; 10D70; # GARAY CAPITAL LETTER A
+10D51; C; 10D71; # GARAY CAPITAL LETTER CA
+10D52; C; 10D72; # GARAY CAPITAL LETTER MA
+10D53; C; 10D73; # GARAY CAPITAL LETTER KA
+10D54; C; 10D74; # GARAY CAPITAL LETTER BA
+10D55; C; 10D75; # GARAY CAPITAL LETTER JA
+10D56; C; 10D76; # GARAY CAPITAL LETTER SA
+10D57; C; 10D77; # GARAY CAPITAL LETTER WA
+10D58; C; 10D78; # GARAY CAPITAL LETTER LA
+10D59; C; 10D79; # GARAY CAPITAL LETTER GA
+10D5A; C; 10D7A; # GARAY CAPITAL LETTER DA
+10D5B; C; 10D7B; # GARAY CAPITAL LETTER XA
+10D5C; C; 10D7C; # GARAY CAPITAL LETTER YA
+10D5D; C; 10D7D; # GARAY CAPITAL LETTER TA
+10D5E; C; 10D7E; # GARAY CAPITAL LETTER RA
+10D5F; C; 10D7F; # GARAY CAPITAL LETTER NYA
+10D60; C; 10D80; # GARAY CAPITAL LETTER FA
+10D61; C; 10D81; # GARAY CAPITAL LETTER NA
+10D62; C; 10D82; # GARAY CAPITAL LETTER PA
+10D63; C; 10D83; # GARAY CAPITAL LETTER HA
+10D64; C; 10D84; # GARAY CAPITAL LETTER OLD KA
+10D65; C; 10D85; # GARAY CAPITAL LETTER OLD NA
118A0; C; 118C0; # WARANG CITI CAPITAL LETTER NGAA
118A1; C; 118C1; # WARANG CITI CAPITAL LETTER A
118A2; C; 118C2; # WARANG CITI CAPITAL LETTER WI
diff --git a/Master/texmf-dist/tex/generic/unicode-data/EastAsianWidth.txt b/Master/texmf-dist/tex/generic/unicode-data/EastAsianWidth.txt
index 02df4df475c..99f7a31ea5d 100644
--- a/Master/texmf-dist/tex/generic/unicode-data/EastAsianWidth.txt
+++ b/Master/texmf-dist/tex/generic/unicode-data/EastAsianWidth.txt
@@ -1,8 +1,8 @@
-# EastAsianWidth-15.1.0.txt
-# Date: 2023-07-28, 23:34:08 GMT
-# © 2023 Unicode®, Inc.
+# EastAsianWidth-16.0.0.txt
+# Date: 2024-04-30, 21:48:20 GMT
+# © 2024 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
-# For terms of use, see https://www.unicode.org/terms_of_use.html
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
@@ -334,7 +334,7 @@
0888 ; N # Sk ARABIC RAISED ROUND DOT
0889..088E ; N # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL
0890..0891 ; N # Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE
-0898..089F ; N # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
+0897..089F ; N # Mn [9] ARABIC PEPET..ARABIC HALF MADDA OVER MADDA
08A0..08C8 ; N # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF
08C9 ; N # Lm ARABIC SMALL FARSI YEH
08CA..08E1 ; N # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
@@ -819,12 +819,13 @@
1B42 ; N # Mn BALINESE VOWEL SIGN PEPET
1B43..1B44 ; N # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
1B45..1B4C ; N # Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA
+1B4E..1B4F ; N # Po [2] BALINESE INVERTED CARIK SIKI..BALINESE INVERTED CARIK PAREREN
1B50..1B59 ; N # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
1B5A..1B60 ; N # Po [7] BALINESE PANTI..BALINESE PAMENENG
1B61..1B6A ; N # So [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE
1B6B..1B73 ; N # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
1B74..1B7C ; N # So [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
-1B7D..1B7E ; N # Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG
+1B7D..1B7F ; N # Po [3] BALINESE PANTI LANTANG..BALINESE PANTI BAWAK
1B80..1B81 ; N # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
1B82 ; N # Mc SUNDANESE SIGN PANGWISAD
1B83..1BA0 ; N # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA
@@ -859,7 +860,7 @@
1C5A..1C77 ; N # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
1C78..1C7D ; N # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
1C7E..1C7F ; N # Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
-1C80..1C88 ; N # Ll [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1C80..1C8A ; N # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE
1C90..1CBA ; N # Lu [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
1CBD..1CBF ; N # Lu [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
1CC0..1CC7 ; N # Po [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA
@@ -1142,7 +1143,7 @@
23F1..23F2 ; N # So [2] STOPWATCH..TIMER CLOCK
23F3 ; W # So HOURGLASS WITH FLOWING SAND
23F4..23FF ; N # So [12] BLACK MEDIUM LEFT-POINTING TRIANGLE..OBSERVER EYE SYMBOL
-2400..2426 ; N # So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
+2400..2429 ; N # So [42] SYMBOL FOR NULL..SYMBOL FOR DELETE MEDIUM SHADE FORM
2440..244A ; N # So [11] OCR HOOK..OCR DOUBLE BACKSLASH
2460..249B ; A # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
249C..24E9 ; A # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
@@ -1195,7 +1196,9 @@
261C ; A # So WHITE LEFT POINTING INDEX
261D ; N # So WHITE UP POINTING INDEX
261E ; A # So WHITE RIGHT POINTING INDEX
-261F..263F ; N # So [33] WHITE DOWN POINTING INDEX..MERCURY
+261F..262F ; N # So [17] WHITE DOWN POINTING INDEX..YIN YANG
+2630..2637 ; W # So [8] TRIGRAM FOR HEAVEN..TRIGRAM FOR EARTH
+2638..263F ; N # So [8] WHEEL OF DHARMA..MERCURY
2640 ; A # So FEMALE SIGN
2641 ; N # So EARTH
2642 ; A # So MALE SIGN
@@ -1213,7 +1216,9 @@
266F ; A # Sm MUSIC SHARP SIGN
2670..267E ; N # So [15] WEST SYRIAC CROSS..PERMANENT PAPER SIGN
267F ; W # So WHEELCHAIR SYMBOL
-2680..2692 ; N # So [19] DIE FACE-1..HAMMER AND PICK
+2680..2689 ; N # So [10] DIE FACE-1..BLACK CIRCLE WITH TWO WHITE DOTS
+268A..268F ; W # So [6] MONOGRAM FOR YANG..DIGRAM FOR GREATER YIN
+2690..2692 ; N # So [3] WHITE FLAG..HAMMER AND PICK
2693 ; W # So ANCHOR
2694..269D ; N # So [10] CROSSED SWORDS..OUTLINED WHITE STAR
269E..269F ; A # So [2] THREE LINES CONVERGING RIGHT..THREE LINES CONVERGING LEFT
@@ -1487,7 +1492,7 @@
3192..3195 ; W # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
3196..319F ; W # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
31A0..31BF ; W # Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH
-31C0..31E3 ; W # So [36] CJK STROKE T..CJK STROKE Q
+31C0..31E5 ; W # So [38] CJK STROKE T..CJK STROKE SZP
31EF ; W # So IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION
31F0..31FF ; W # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
3200..321E ; W # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
@@ -1503,7 +1508,7 @@
32C0..32FF ; W # So [64] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..SQUARE ERA NAME REIWA
3300..33FF ; W # So [256] SQUARE APAATO..SQUARE GAL
3400..4DBF ; W # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
-4DC0..4DFF ; N # So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
+4DC0..4DFF ; W # So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
4E00..9FFF ; W # Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF
A000..A014 ; W # Lo [21] YI SYLLABLE IT..YI SYLLABLE E
A015 ; W # Lm YI SYLLABLE WU
@@ -1543,10 +1548,10 @@ A788 ; N # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT
A789..A78A ; N # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
A78B..A78E ; N # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
A78F ; N # Lo LATIN LETTER SINOLOGICAL DOT
-A790..A7CA ; N # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+A790..A7CD ; N # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE
A7D0..A7D1 ; N # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
A7D3 ; N # Ll LATIN SMALL LETTER DOUBLE THORN
-A7D5..A7D9 ; N # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+A7D5..A7DC ; N # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE
A7F2..A7F4 ; N # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
A7F5..A7F6 ; N # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
A7F7 ; N # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I
@@ -1870,6 +1875,7 @@ FFFD ; A # So REPLACEMENT CHARACTER
105A3..105B1 ; N # Ll [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
105B3..105B9 ; N # Ll [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
105BB..105BC ; N # Ll [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+105C0..105F3 ; N # Lo [52] TODHRI LETTER A..TODHRI LETTER OO
10600..10736 ; N # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
10740..10755 ; N # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
10760..10767 ; N # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807
@@ -1942,12 +1948,23 @@ FFFD ; A # So REPLACEMENT CHARACTER
10D00..10D23 ; N # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
10D24..10D27 ; N # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
10D30..10D39 ; N # Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE
+10D40..10D49 ; N # Nd [10] GARAY DIGIT ZERO..GARAY DIGIT NINE
+10D4A..10D4D ; N # Lo [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE
+10D4E ; N # Lm GARAY VOWEL LENGTH MARK
+10D4F ; N # Lo GARAY SUKUN
+10D50..10D65 ; N # Lu [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
+10D69..10D6D ; N # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK
+10D6E ; N # Pd GARAY HYPHEN
+10D6F ; N # Lm GARAY REDUPLICATION MARK
+10D70..10D85 ; N # Ll [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
+10D8E..10D8F ; N # Sm [2] GARAY PLUS SIGN..GARAY MINUS SIGN
10E60..10E7E ; N # No [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS
10E80..10EA9 ; N # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
10EAB..10EAC ; N # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
10EAD ; N # Pd YEZIDI HYPHENATION MARK
10EB0..10EB1 ; N # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
-10EFD..10EFF ; N # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
+10EC2..10EC4 ; N # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW
+10EFC..10EFF ; N # Mn [4] ARABIC COMBINING ALEF OVERLAY..ARABIC SMALL LOW WORD MADDA
10F00..10F1C ; N # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
10F1D..10F26 ; N # No [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF
10F27 ; N # Lo OLD SOGDIAN LIGATURE AYIN-DALETH
@@ -2064,6 +2081,26 @@ FFFD ; A # So REPLACEMENT CHARACTER
11362..11363 ; N # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
11366..1136C ; N # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
11370..11374 ; N # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11380..11389 ; N # Lo [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL
+1138B ; N # Lo TULU-TIGALARI LETTER EE
+1138E ; N # Lo TULU-TIGALARI LETTER AI
+11390..113B5 ; N # Lo [38] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER LLLA
+113B7 ; N # Lo TULU-TIGALARI SIGN AVAGRAHA
+113B8..113BA ; N # Mc [3] TULU-TIGALARI VOWEL SIGN AA..TULU-TIGALARI VOWEL SIGN II
+113BB..113C0 ; N # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL
+113C2 ; N # Mc TULU-TIGALARI VOWEL SIGN EE
+113C5 ; N # Mc TULU-TIGALARI VOWEL SIGN AI
+113C7..113CA ; N # Mc [4] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI SIGN CANDRA ANUNASIKA
+113CC..113CD ; N # Mc [2] TULU-TIGALARI SIGN ANUSVARA..TULU-TIGALARI SIGN VISARGA
+113CE ; N # Mn TULU-TIGALARI SIGN VIRAMA
+113CF ; N # Mc TULU-TIGALARI SIGN LOOPED VIRAMA
+113D0 ; N # Mn TULU-TIGALARI CONJOINER
+113D1 ; N # Lo TULU-TIGALARI REPHA
+113D2 ; N # Mn TULU-TIGALARI GEMINATION MARK
+113D3 ; N # Lo TULU-TIGALARI SIGN PLUTA
+113D4..113D5 ; N # Po [2] TULU-TIGALARI DANDA..TULU-TIGALARI DOUBLE DANDA
+113D7..113D8 ; N # Po [2] TULU-TIGALARI SIGN OM PUSHPIKA..TULU-TIGALARI SIGN SHRII PUSHPIKA
+113E1..113E2 ; N # Mn [2] TULU-TIGALARI VEDIC TONE SVARITA..TULU-TIGALARI VEDIC TONE ANUDATTA
11400..11434 ; N # Lo [53] NEWA LETTER A..NEWA LETTER HA
11435..11437 ; N # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
11438..1143F ; N # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
@@ -2123,8 +2160,11 @@ FFFD ; A # So REPLACEMENT CHARACTER
116B8 ; N # Lo TAKRI LETTER ARCHAIC KHA
116B9 ; N # Po TAKRI ABBREVIATION SIGN
116C0..116C9 ; N # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
+116D0..116E3 ; N # Nd [20] MYANMAR PAO DIGIT ZERO..MYANMAR EASTERN PWO KAREN DIGIT NINE
11700..1171A ; N # Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA
-1171D..1171F ; N # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+1171D ; N # Mn AHOM CONSONANT SIGN MEDIAL LA
+1171E ; N # Mc AHOM CONSONANT SIGN MEDIAL RA
+1171F ; N # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA
11720..11721 ; N # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
11722..11725 ; N # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
11726 ; N # Mc AHOM VOWEL SIGN E
@@ -2195,6 +2235,9 @@ FFFD ; A # So REPLACEMENT CHARACTER
11AB0..11ABF ; N # Lo [16] CANADIAN SYLLABICS NATTILIK HI..CANADIAN SYLLABICS SPA
11AC0..11AF8 ; N # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
11B00..11B09 ; N # Po [10] DEVANAGARI HEAD MARK..DEVANAGARI SIGN MINDU
+11BC0..11BE0 ; N # Lo [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO
+11BE1 ; N # Po SUNUWAR SIGN PVO
+11BF0..11BF9 ; N # Nd [10] SUNUWAR DIGIT ZERO..SUNUWAR DIGIT NINE
11C00..11C08 ; N # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
11C0A..11C2E ; N # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
11C2F ; N # Mc BHAIKSUKI VOWEL SIGN AA
@@ -2253,6 +2296,7 @@ FFFD ; A # So REPLACEMENT CHARACTER
11F42 ; N # Mn KAWI CONJOINER
11F43..11F4F ; N # Po [13] KAWI DANDA..KAWI PUNCTUATION CLOSING SPIRAL
11F50..11F59 ; N # Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE
+11F5A ; N # Mn KAWI SIGN NUKTA
11FB0 ; N # Lo LISU LETTER YHA
11FC0..11FD4 ; N # No [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH
11FD5..11FDC ; N # So [8] TAMIL SIGN NEL..TAMIL SIGN MUKKURUNI
@@ -2270,7 +2314,13 @@ FFFD ; A # So REPLACEMENT CHARACTER
13440 ; N # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
13441..13446 ; N # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
13447..13455 ; N # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+13460..143FA ; N # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA
14400..14646 ; N # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
+16100..1611D ; N # Lo [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA
+1611E..16129 ; N # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK
+1612A..1612C ; N # Mc [3] GURUNG KHEMA CONSONANT SIGN MEDIAL YA..GURUNG KHEMA CONSONANT SIGN MEDIAL HA
+1612D..1612F ; N # Mn [3] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA SIGN THOLHOMA
+16130..16139 ; N # Nd [10] GURUNG KHEMA DIGIT ZERO..GURUNG KHEMA DIGIT NINE
16800..16A38 ; N # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
16A40..16A5E ; N # Lo [31] MRO LETTER TA..MRO LETTER TEK
16A60..16A69 ; N # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE
@@ -2291,6 +2341,11 @@ FFFD ; A # So REPLACEMENT CHARACTER
16B5B..16B61 ; N # No [7] PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS
16B63..16B77 ; N # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
16B7D..16B8F ; N # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
+16D40..16D42 ; N # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA
+16D43..16D6A ; N # Lo [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU
+16D6B..16D6C ; N # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT
+16D6D..16D6F ; N # Po [3] KIRAT RAI SIGN YUPI..KIRAT RAI DOUBLE DANDA
+16D70..16D79 ; N # Nd [10] KIRAT RAI DIGIT ZERO..KIRAT RAI DIGIT NINE
16E40..16E7F ; N # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
16E80..16E96 ; N # No [23] MEDEFAIDRIN DIGIT ZERO..MEDEFAIDRIN DIGIT THREE ALTERNATE FORM
16E97..16E9A ; N # Po [4] MEDEFAIDRIN COMMA..MEDEFAIDRIN EXCLAMATION OH
@@ -2308,6 +2363,7 @@ FFFD ; A # So REPLACEMENT CHARACTER
17000..187F7 ; W # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
18800..18AFF ; W # Lo [768] TANGUT COMPONENT-001..TANGUT COMPONENT-768
18B00..18CD5 ; W # Lo [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5
+18CFF ; W # Lo KHITAN SMALL SCRIPT CHARACTER-18CFF
18D00..18D08 ; W # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
1AFF0..1AFF3 ; W # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
1AFF5..1AFFB ; W # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
@@ -2327,6 +2383,9 @@ FFFD ; A # So REPLACEMENT CHARACTER
1BC9D..1BC9E ; N # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
1BC9F ; N # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP
1BCA0..1BCA3 ; N # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
+1CC00..1CCEF ; N # So [240] UP-POINTING GO-KART..OUTLINED LATIN CAPITAL LETTER Z
+1CCF0..1CCF9 ; N # Nd [10] OUTLINED DIGIT ZERO..OUTLINED DIGIT NINE
+1CD00..1CEB3 ; N # So [436] BLOCK OCTANT-3..BLACK RIGHT TRIANGLE CARET
1CF00..1CF2D ; N # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
1CF30..1CF46 ; N # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
1CF50..1CFC3 ; N # So [116] ZNAMENNY NEUME KRYUK..ZNAMENNY NEUME PAUK
@@ -2349,8 +2408,9 @@ FFFD ; A # So REPLACEMENT CHARACTER
1D245 ; N # So GREEK MUSICAL LEIMMA
1D2C0..1D2D3 ; N # No [20] KAKTOVIK NUMERAL ZERO..KAKTOVIK NUMERAL NINETEEN
1D2E0..1D2F3 ; N # No [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN
-1D300..1D356 ; N # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
-1D360..1D378 ; N # No [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE
+1D300..1D356 ; W # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
+1D360..1D376 ; W # No [23] COUNTING ROD UNIT DIGIT ONE..IDEOGRAPHIC TALLY MARK FIVE
+1D377..1D378 ; N # No [2] TALLY MARK ONE..TALLY MARK FIVE
1D400..1D454 ; N # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
1D456..1D49C ; N # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
1D49E..1D49F ; N # Lu [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
@@ -2431,6 +2491,11 @@ FFFD ; A # So REPLACEMENT CHARACTER
1E4EB ; N # Lm NAG MUNDARI SIGN OJOD
1E4EC..1E4EF ; N # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
1E4F0..1E4F9 ; N # Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE
+1E5D0..1E5ED ; N # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG
+1E5EE..1E5EF ; N # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR
+1E5F0 ; N # Lo OL ONAL SIGN HODDOND
+1E5F1..1E5FA ; N # Nd [10] OL ONAL DIGIT ZERO..OL ONAL DIGIT NINE
+1E5FF ; N # Po OL ONAL ABBREVIATION SIGN
1E7E0..1E7E6 ; N # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
1E7E8..1E7EB ; N # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
1E7ED..1E7EE ; N # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
@@ -2574,7 +2639,8 @@ FFFD ; A # So REPLACEMENT CHARACTER
1F850..1F859 ; N # So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
1F860..1F887 ; N # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
1F890..1F8AD ; N # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
-1F8B0..1F8B1 ; N # So [2] ARROW POINTING UPWARDS THEN NORTH WEST..ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST
+1F8B0..1F8BB ; N # So [12] ARROW POINTING UPWARDS THEN NORTH WEST..SOUTH WEST ARROW FROM BAR
+1F8C0..1F8C1 ; N # So [2] LEFTWARDS ARROW FROM DOWNWARDS ARROW..RIGHTWARDS ARROW FROM DOWNWARDS ARROW
1F900..1F90B ; N # So [12] CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT
1F90C..1F93A ; W # So [47] PINCHED FINGERS..FENCER
1F93B ; N # So MODERN PENTATHLON
@@ -2584,14 +2650,13 @@ FFFD ; A # So REPLACEMENT CHARACTER
1FA00..1FA53 ; N # So [84] NEUTRAL CHESS KING..BLACK CHESS KNIGHT-BISHOP
1FA60..1FA6D ; N # So [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER
1FA70..1FA7C ; W # So [13] BALLET SHOES..CRUTCH
-1FA80..1FA88 ; W # So [9] YO-YO..FLUTE
-1FA90..1FABD ; W # So [46] RINGED PLANET..WING
-1FABF..1FAC5 ; W # So [7] GOOSE..PERSON WITH CROWN
-1FACE..1FADB ; W # So [14] MOOSE..PEA POD
-1FAE0..1FAE8 ; W # So [9] MELTING FACE..SHAKING FACE
+1FA80..1FA89 ; W # So [10] YO-YO..HARP
+1FA8F..1FAC6 ; W # So [56] SHOVEL..FINGERPRINT
+1FACE..1FADC ; W # So [15] MOOSE..ROOT VEGETABLE
+1FADF..1FAE9 ; W # So [11] SPLATTER..FACE WITH BAGS UNDER EYES
1FAF0..1FAF8 ; W # So [9] HAND WITH INDEX FINGER AND THUMB CROSSED..RIGHTWARDS PUSHING HAND
1FB00..1FB92 ; N # So [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK
-1FB94..1FBCA ; N # So [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON
+1FB94..1FBEF ; N # So [92] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..TOP LEFT JUSTIFIED LOWER RIGHT QUARTER BLACK CIRCLE
1FBF0..1FBF9 ; N # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
20000..2A6DF ; W # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
2A6E0..2A6FF ; W # Cn [32] <reserved-2A6E0>..<reserved-2A6FF>
diff --git a/Master/texmf-dist/tex/generic/unicode-data/GraphemeBreakProperty.txt b/Master/texmf-dist/tex/generic/unicode-data/GraphemeBreakProperty.txt
index 12453cbdb54..a863397ddab 100644
--- a/Master/texmf-dist/tex/generic/unicode-data/GraphemeBreakProperty.txt
+++ b/Master/texmf-dist/tex/generic/unicode-data/GraphemeBreakProperty.txt
@@ -1,8 +1,8 @@
-# GraphemeBreakProperty-15.1.0.txt
-# Date: 2023-01-05, 20:34:41 GMT
-# © 2023 Unicode®, Inc.
+# GraphemeBreakProperty-16.0.0.txt
+# Date: 2024-05-31, 18:09:38 GMT
+# © 2024 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
-# For terms of use, see https://www.unicode.org/terms_of_use.html
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
@@ -27,6 +27,7 @@
110BD ; Prepend # Cf KAITHI NUMBER SIGN
110CD ; Prepend # Cf KAITHI NUMBER SIGN ABOVE
111C2..111C3 ; Prepend # Lo [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA
+113D1 ; Prepend # Lo TULU-TIGALARI REPHA
1193F ; Prepend # Lo DIVES AKURU PREFIXED NASAL SIGN
11941 ; Prepend # Lo DIVES AKURU INITIAL RA
11A3A ; Prepend # Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA
@@ -34,7 +35,7 @@
11D46 ; Prepend # Lo MASARAM GONDI REPHA
11F02 ; Prepend # Lo KAWI SIGN REPHA
-# Total code points: 27
+# Total code points: 28
# ================================================
@@ -106,7 +107,7 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
0825..0827 ; Extend # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
0829..082D ; Extend # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
0859..085B ; Extend # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
-0898..089F ; Extend # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
+0897..089F ; Extend # Mn [9] ARABIC PEPET..ARABIC HALF MADDA OVER MADDA
08CA..08E1 ; Extend # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
08E3..0902 ; Extend # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
093A ; Extend # Mn DEVANAGARI VOWEL SIGN OE
@@ -163,8 +164,11 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
0C81 ; Extend # Mn KANNADA SIGN CANDRABINDU
0CBC ; Extend # Mn KANNADA SIGN NUKTA
0CBF ; Extend # Mn KANNADA VOWEL SIGN I
+0CC0 ; Extend # Mc KANNADA VOWEL SIGN II
0CC2 ; Extend # Mc KANNADA VOWEL SIGN UU
0CC6 ; Extend # Mn KANNADA VOWEL SIGN E
+0CC7..0CC8 ; Extend # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; Extend # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
0CCC..0CCD ; Extend # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
0CD5..0CD6 ; Extend # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
0CE2..0CE3 ; Extend # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
@@ -210,7 +214,9 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
109D ; Extend # Mn MYANMAR VOWEL SIGN AITON AI
135D..135F ; Extend # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
1712..1714 ; Extend # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+1715 ; Extend # Mc TAGALOG SIGN PAMUDPOD
1732..1733 ; Extend # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
+1734 ; Extend # Mc HANUNOO SIGN PAMUDPOD
1752..1753 ; Extend # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
1772..1773 ; Extend # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
17B4..17B5 ; Extend # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
@@ -242,17 +248,22 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
1B34 ; Extend # Mn BALINESE SIGN REREKAN
1B35 ; Extend # Mc BALINESE VOWEL SIGN TEDUNG
1B36..1B3A ; Extend # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+1B3B ; Extend # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
1B3C ; Extend # Mn BALINESE VOWEL SIGN LA LENGA
+1B3D ; Extend # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG
1B42 ; Extend # Mn BALINESE VOWEL SIGN PEPET
+1B43..1B44 ; Extend # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
1B6B..1B73 ; Extend # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
1B80..1B81 ; Extend # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
1BA2..1BA5 ; Extend # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
1BA8..1BA9 ; Extend # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
+1BAA ; Extend # Mc SUNDANESE SIGN PAMAAEH
1BAB..1BAD ; Extend # Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA
1BE6 ; Extend # Mn BATAK SIGN TOMPI
1BE8..1BE9 ; Extend # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE
1BED ; Extend # Mn BATAK VOWEL SIGN KARO O
1BEF..1BF1 ; Extend # Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H
+1BF2..1BF3 ; Extend # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN
1C2C..1C33 ; Extend # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
1C36..1C37 ; Extend # Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
1CD0..1CD2 ; Extend # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
@@ -289,10 +300,12 @@ A8E0..A8F1 ; Extend # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEV
A8FF ; Extend # Mn DEVANAGARI VOWEL SIGN AY
A926..A92D ; Extend # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
A947..A951 ; Extend # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
+A953 ; Extend # Mc REJANG VIRAMA
A980..A982 ; Extend # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR
A9B3 ; Extend # Mn JAVANESE SIGN CECAK TELU
A9B6..A9B9 ; Extend # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
A9BC..A9BD ; Extend # Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET
+A9C0 ; Extend # Mc JAVANESE PANGKON
A9E5 ; Extend # Mn MYANMAR SIGN SHAN SAW
AA29..AA2E ; Extend # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
AA31..AA32 ; Extend # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
@@ -324,8 +337,9 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
10A3F ; Extend # Mn KHAROSHTHI VIRAMA
10AE5..10AE6 ; Extend # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
10D24..10D27 ; Extend # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+10D69..10D6D ; Extend # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK
10EAB..10EAC ; Extend # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
-10EFD..10EFF ; Extend # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
+10EFC..10EFF ; Extend # Mn [4] ARABIC COMBINING ALEF OVERLAY..ARABIC SMALL LOW WORD MADDA
10F46..10F50 ; Extend # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
10F82..10F85 ; Extend # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
11001 ; Extend # Mn BRAHMI SIGN ANUSVARA
@@ -342,10 +356,12 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
11173 ; Extend # Mn MAHAJANI SIGN NUKTA
11180..11181 ; Extend # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
111B6..111BE ; Extend # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
+111C0 ; Extend # Mc SHARADA SIGN VIRAMA
111C9..111CC ; Extend # Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK
111CF ; Extend # Mn SHARADA SIGN INVERTED CANDRABINDU
1122F..11231 ; Extend # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
11234 ; Extend # Mn KHOJKI SIGN ANUSVARA
+11235 ; Extend # Mc KHOJKI SIGN VIRAMA
11236..11237 ; Extend # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
1123E ; Extend # Mn KHOJKI SIGN SUKUN
11241 ; Extend # Mn KHOJKI VOWEL SIGN VOCALIC R
@@ -355,9 +371,20 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
1133B..1133C ; Extend # Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
1133E ; Extend # Mc GRANTHA VOWEL SIGN AA
11340 ; Extend # Mn GRANTHA VOWEL SIGN II
+1134D ; Extend # Mc GRANTHA SIGN VIRAMA
11357 ; Extend # Mc GRANTHA AU LENGTH MARK
11366..1136C ; Extend # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
11370..11374 ; Extend # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+113B8 ; Extend # Mc TULU-TIGALARI VOWEL SIGN AA
+113BB..113C0 ; Extend # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL
+113C2 ; Extend # Mc TULU-TIGALARI VOWEL SIGN EE
+113C5 ; Extend # Mc TULU-TIGALARI VOWEL SIGN AI
+113C7..113C9 ; Extend # Mc [3] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI AU LENGTH MARK
+113CE ; Extend # Mn TULU-TIGALARI SIGN VIRAMA
+113CF ; Extend # Mc TULU-TIGALARI SIGN LOOPED VIRAMA
+113D0 ; Extend # Mn TULU-TIGALARI CONJOINER
+113D2 ; Extend # Mn TULU-TIGALARI GEMINATION MARK
+113E1..113E2 ; Extend # Mn [2] TULU-TIGALARI VEDIC TONE SVARITA..TULU-TIGALARI VEDIC TONE ANUDATTA
11438..1143F ; Extend # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
11442..11444 ; Extend # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
11446 ; Extend # Mn NEWA SIGN NUKTA
@@ -379,14 +406,17 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
116AB ; Extend # Mn TAKRI SIGN ANUSVARA
116AD ; Extend # Mn TAKRI VOWEL SIGN AA
116B0..116B5 ; Extend # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
+116B6 ; Extend # Mc TAKRI SIGN VIRAMA
116B7 ; Extend # Mn TAKRI SIGN NUKTA
-1171D..1171F ; Extend # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+1171D ; Extend # Mn AHOM CONSONANT SIGN MEDIAL LA
+1171F ; Extend # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA
11722..11725 ; Extend # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
11727..1172B ; Extend # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
1182F..11837 ; Extend # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
11839..1183A ; Extend # Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
11930 ; Extend # Mc DIVES AKURU VOWEL SIGN AA
1193B..1193C ; Extend # Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU
+1193D ; Extend # Mc DIVES AKURU SIGN HALANTA
1193E ; Extend # Mn DIVES AKURU VIRAMA
11943 ; Extend # Mn DIVES AKURU SIGN NUKTA
119D4..119D7 ; Extend # Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
@@ -419,20 +449,25 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
11F00..11F01 ; Extend # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA
11F36..11F3A ; Extend # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R
11F40 ; Extend # Mn KAWI VOWEL SIGN EU
+11F41 ; Extend # Mc KAWI SIGN KILLER
11F42 ; Extend # Mn KAWI CONJOINER
+11F5A ; Extend # Mn KAWI SIGN NUKTA
13440 ; Extend # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
13447..13455 ; Extend # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+1611E..16129 ; Extend # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK
+1612D..1612F ; Extend # Mn [3] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA SIGN THOLHOMA
16AF0..16AF4 ; Extend # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
16B30..16B36 ; Extend # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
16F4F ; Extend # Mn MIAO SIGN CONSONANT MODIFIER BAR
16F8F..16F92 ; Extend # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
16FE4 ; Extend # Mn KHITAN SMALL SCRIPT FILLER
+16FF0..16FF1 ; Extend # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
1BC9D..1BC9E ; Extend # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
1CF00..1CF2D ; Extend # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
1CF30..1CF46 ; Extend # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
-1D165 ; Extend # Mc MUSICAL SYMBOL COMBINING STEM
+1D165..1D166 ; Extend # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
1D167..1D169 ; Extend # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
-1D16E..1D172 ; Extend # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
+1D16D..1D172 ; Extend # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
1D17B..1D182 ; Extend # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
1D185..1D18B ; Extend # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
1D1AA..1D1AD ; Extend # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
@@ -453,13 +488,14 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
1E2AE ; Extend # Mn TOTO SIGN RISING TONE
1E2EC..1E2EF ; Extend # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI
1E4EC..1E4EF ; Extend # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
+1E5EE..1E5EF ; Extend # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR
1E8D0..1E8D6 ; Extend # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
1E944..1E94A ; Extend # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
1F3FB..1F3FF ; Extend # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
E0020..E007F ; Extend # Cf [96] TAG SPACE..CANCEL TAG
E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
-# Total code points: 2130
+# Total code points: 2198
# ================================================
@@ -496,10 +532,8 @@ E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
0C41..0C44 ; SpacingMark # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
0C82..0C83 ; SpacingMark # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
0CBE ; SpacingMark # Mc KANNADA VOWEL SIGN AA
-0CC0..0CC1 ; SpacingMark # Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U
+0CC1 ; SpacingMark # Mc KANNADA VOWEL SIGN U
0CC3..0CC4 ; SpacingMark # Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR
-0CC7..0CC8 ; SpacingMark # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
-0CCA..0CCB ; SpacingMark # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
0CF3 ; SpacingMark # Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT
0D02..0D03 ; SpacingMark # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
0D3F..0D40 ; SpacingMark # Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II
@@ -517,8 +551,6 @@ E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
103B..103C ; SpacingMark # Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA
1056..1057 ; SpacingMark # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
1084 ; SpacingMark # Mc MYANMAR VOWEL SIGN SHAN E
-1715 ; SpacingMark # Mc TAGALOG SIGN PAMUDPOD
-1734 ; SpacingMark # Mc HANUNOO SIGN PAMUDPOD
17B6 ; SpacingMark # Mc KHMER VOWEL SIGN AA
17BE..17C5 ; SpacingMark # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
17C7..17C8 ; SpacingMark # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
@@ -531,17 +563,13 @@ E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
1A57 ; SpacingMark # Mc TAI THAM CONSONANT SIGN LA TANG LAI
1A6D..1A72 ; SpacingMark # Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI
1B04 ; SpacingMark # Mc BALINESE SIGN BISAH
-1B3B ; SpacingMark # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
-1B3D..1B41 ; SpacingMark # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
-1B43..1B44 ; SpacingMark # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
+1B3E..1B41 ; SpacingMark # Mc [4] BALINESE VOWEL SIGN TALING..BALINESE VOWEL SIGN TALING REPA TEDUNG
1B82 ; SpacingMark # Mc SUNDANESE SIGN PANGWISAD
1BA1 ; SpacingMark # Mc SUNDANESE CONSONANT SIGN PAMINGKAL
1BA6..1BA7 ; SpacingMark # Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG
-1BAA ; SpacingMark # Mc SUNDANESE SIGN PAMAAEH
1BE7 ; SpacingMark # Mc BATAK VOWEL SIGN E
1BEA..1BEC ; SpacingMark # Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O
1BEE ; SpacingMark # Mc BATAK VOWEL SIGN U
-1BF2..1BF3 ; SpacingMark # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN
1C24..1C2B ; SpacingMark # Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
1C34..1C35 ; SpacingMark # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
1CE1 ; SpacingMark # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
@@ -550,11 +578,11 @@ A823..A824 ; SpacingMark # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI V
A827 ; SpacingMark # Mc SYLOTI NAGRI VOWEL SIGN OO
A880..A881 ; SpacingMark # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
A8B4..A8C3 ; SpacingMark # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
-A952..A953 ; SpacingMark # Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA
+A952 ; SpacingMark # Mc REJANG CONSONANT SIGN H
A983 ; SpacingMark # Mc JAVANESE SIGN WIGNYAN
A9B4..A9B5 ; SpacingMark # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG
A9BA..A9BB ; SpacingMark # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE
-A9BE..A9C0 ; SpacingMark # Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON
+A9BE..A9BF ; SpacingMark # Mc [2] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE CONSONANT SIGN CAKRA
AA2F..AA30 ; SpacingMark # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
AA33..AA34 ; SpacingMark # Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA
AA4D ; SpacingMark # Mc CHAM CONSONANT SIGN FINAL H
@@ -574,18 +602,20 @@ ABEC ; SpacingMark # Mc MEETEI MAYEK LUM IYEK
11145..11146 ; SpacingMark # Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI
11182 ; SpacingMark # Mc SHARADA SIGN VISARGA
111B3..111B5 ; SpacingMark # Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II
-111BF..111C0 ; SpacingMark # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA
+111BF ; SpacingMark # Mc SHARADA VOWEL SIGN AU
111CE ; SpacingMark # Mc SHARADA VOWEL SIGN PRISHTHAMATRA E
1122C..1122E ; SpacingMark # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II
11232..11233 ; SpacingMark # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU
-11235 ; SpacingMark # Mc KHOJKI SIGN VIRAMA
112E0..112E2 ; SpacingMark # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II
11302..11303 ; SpacingMark # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA
1133F ; SpacingMark # Mc GRANTHA VOWEL SIGN I
11341..11344 ; SpacingMark # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR
11347..11348 ; SpacingMark # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
-1134B..1134D ; SpacingMark # Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA
+1134B..1134C ; SpacingMark # Mc [2] GRANTHA VOWEL SIGN OO..GRANTHA VOWEL SIGN AU
11362..11363 ; SpacingMark # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+113B9..113BA ; SpacingMark # Mc [2] TULU-TIGALARI VOWEL SIGN I..TULU-TIGALARI VOWEL SIGN II
+113CA ; SpacingMark # Mc TULU-TIGALARI SIGN CANDRA ANUNASIKA
+113CC..113CD ; SpacingMark # Mc [2] TULU-TIGALARI SIGN ANUSVARA..TULU-TIGALARI SIGN VISARGA
11435..11437 ; SpacingMark # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
11440..11441 ; SpacingMark # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
11445 ; SpacingMark # Mc NEWA SIGN VISARGA
@@ -602,13 +632,12 @@ ABEC ; SpacingMark # Mc MEETEI MAYEK LUM IYEK
1163E ; SpacingMark # Mc MODI SIGN VISARGA
116AC ; SpacingMark # Mc TAKRI SIGN VISARGA
116AE..116AF ; SpacingMark # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II
-116B6 ; SpacingMark # Mc TAKRI SIGN VIRAMA
+1171E ; SpacingMark # Mc AHOM CONSONANT SIGN MEDIAL RA
11726 ; SpacingMark # Mc AHOM VOWEL SIGN E
1182C..1182E ; SpacingMark # Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
11838 ; SpacingMark # Mc DOGRA SIGN VISARGA
11931..11935 ; SpacingMark # Mc [5] DIVES AKURU VOWEL SIGN I..DIVES AKURU VOWEL SIGN E
11937..11938 ; SpacingMark # Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O
-1193D ; SpacingMark # Mc DIVES AKURU SIGN HALANTA
11940 ; SpacingMark # Mc DIVES AKURU MEDIAL YA
11942 ; SpacingMark # Mc DIVES AKURU MEDIAL RA
119D1..119D3 ; SpacingMark # Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II
@@ -629,13 +658,10 @@ ABEC ; SpacingMark # Mc MEETEI MAYEK LUM IYEK
11F03 ; SpacingMark # Mc KAWI SIGN VISARGA
11F34..11F35 ; SpacingMark # Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA
11F3E..11F3F ; SpacingMark # Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI
-11F41 ; SpacingMark # Mc KAWI SIGN KILLER
+1612A..1612C ; SpacingMark # Mc [3] GURUNG KHEMA CONSONANT SIGN MEDIAL YA..GURUNG KHEMA CONSONANT SIGN MEDIAL HA
16F51..16F87 ; SpacingMark # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
-16FF0..16FF1 ; SpacingMark # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
-1D166 ; SpacingMark # Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
-1D16D ; SpacingMark # Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT
-# Total code points: 395
+# Total code points: 378
# ================================================
@@ -648,8 +674,10 @@ A960..A97C ; L # Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANG
1160..11A7 ; V # Lo [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE
D7B0..D7C6 ; V # Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
+16D63 ; V # Lo KIRAT RAI VOWEL SIGN AA
+16D67..16D6A ; V # Lo [4] KIRAT RAI VOWEL SIGN E..KIRAT RAI VOWEL SIGN AU
-# Total code points: 95
+# Total code points: 100
# ================================================
diff --git a/Master/texmf-dist/tex/generic/unicode-data/LineBreak.txt b/Master/texmf-dist/tex/generic/unicode-data/LineBreak.txt
index b6bc6793927..3ce25821747 100644
--- a/Master/texmf-dist/tex/generic/unicode-data/LineBreak.txt
+++ b/Master/texmf-dist/tex/generic/unicode-data/LineBreak.txt
@@ -1,8 +1,8 @@
-# LineBreak-15.1.0.txt
-# Date: 2023-07-28, 13:19:22 GMT [KW]
-# © 2023 Unicode®, Inc.
+# LineBreak-16.0.0.txt
+# Date: 2024-07-29, 16:26:55 GMT
+# © 2024 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
-# For terms of use, see https://www.unicode.org/terms_of_use.html
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
@@ -280,7 +280,7 @@
0888 ; AL # Sk ARABIC RAISED ROUND DOT
0889..088E ; AL # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL
0890..0891 ; NU # Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE
-0898..089F ; CM # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
+0897..089F ; CM # Mn [9] ARABIC PEPET..ARABIC HALF MADDA OVER MADDA
08A0..08C8 ; AL # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF
08C9 ; AL # Lm ARABIC SMALL FARSI YEH
08CA..08E1 ; CM # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
@@ -748,7 +748,7 @@
1980..19AB ; SA # Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA
19B0..19C9 ; SA # Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2
19D0..19D9 ; NU # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
-19DA ; SA # No NEW TAI LUE THAM DIGIT ONE
+19DA ; NU # No NEW TAI LUE THAM DIGIT ONE
19DE..19DF ; SA # So [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV
19E0..19FF ; AL # So [32] KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC
1A00..1A16 ; AL # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA
@@ -790,14 +790,15 @@
1B43 ; CM # Mc BALINESE VOWEL SIGN PEPET TEDUNG
1B44 ; VI # Mc BALINESE ADEG ADEG
1B45..1B4C ; AK # Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA
-1B50..1B59 ; ID # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
+1B4E..1B4F ; BA # Po [2] BALINESE INVERTED CARIK SIKI..BALINESE INVERTED CARIK PAREREN
+1B50..1B59 ; AS # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
1B5A..1B5B ; BA # Po [2] BALINESE PANTI..BALINESE PAMADA
1B5C ; ID # Po BALINESE WINDU
1B5D..1B60 ; BA # Po [4] BALINESE CARIK PAMUNGKAH..BALINESE PAMENENG
1B61..1B6A ; ID # So [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE
1B6B..1B73 ; CM # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
1B74..1B7C ; ID # So [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
-1B7D..1B7E ; BA # Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG
+1B7D..1B7F ; BA # Po [3] BALINESE PANTI LANTANG..BALINESE PANTI BAWAK
1B80..1B81 ; CM # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
1B82 ; CM # Mc SUNDANESE SIGN PANGWISAD
1B83..1BA0 ; AL # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA
@@ -832,7 +833,7 @@
1C5A..1C77 ; AL # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
1C78..1C7D ; AL # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
1C7E..1C7F ; BA # Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
-1C80..1C88 ; AL # Ll [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1C80..1C8A ; AL # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE
1C90..1CBA ; AL # Lu [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
1CBD..1CBF ; AL # Lu [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
1CC0..1CC7 ; AL # Po [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA
@@ -1017,12 +1018,7 @@
214C..214D ; AL # So [2] PER SIGN..AKTIESELSKAB
214E ; AL # Ll TURNED SMALL F
214F ; AL # So SYMBOL FOR SAMARITAN SOURCE
-2150..2153 ; AL # No [4] VULGAR FRACTION ONE SEVENTH..VULGAR FRACTION ONE THIRD
-2154..2155 ; AI # No [2] VULGAR FRACTION TWO THIRDS..VULGAR FRACTION ONE FIFTH
-2156..215A ; AL # No [5] VULGAR FRACTION TWO FIFTHS..VULGAR FRACTION FIVE SIXTHS
-215B ; AI # No VULGAR FRACTION ONE EIGHTH
-215C..215D ; AL # No [2] VULGAR FRACTION THREE EIGHTHS..VULGAR FRACTION FIVE EIGHTHS
-215E ; AI # No VULGAR FRACTION SEVEN EIGHTHS
+2150..215E ; AI # No [15] VULGAR FRACTION ONE SEVENTH..VULGAR FRACTION SEVEN EIGHTHS
215F ; AL # No FRACTION NUMERATOR ONE
2160..216B ; AI # Nl [12] ROMAN NUMERAL ONE..ROMAN NUMERAL TWELVE
216C..216F ; AL # Nl [4] ROMAN NUMERAL FIFTY..ROMAN NUMERAL ONE THOUSAND
@@ -1133,7 +1129,7 @@
23E2..23EF ; AL # So [14] WHITE TRAPEZIUM..BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR
23F0..23F3 ; ID # So [4] ALARM CLOCK..HOURGLASS WITH FLOWING SAND
23F4..23FF ; AL # So [12] BLACK MEDIUM LEFT-POINTING TRIANGLE..OBSERVER EYE SYMBOL
-2400..2426 ; AL # So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
+2400..2429 ; AL # So [42] SYMBOL FOR NULL..SYMBOL FOR DELETE MEDIUM SHADE FORM
2440..244A ; AL # So [11] OCR HOOK..OCR DOUBLE BACKSLASH
2460..249B ; AI # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
249C..24E9 ; AI # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
@@ -1407,13 +1403,13 @@
2E52 ; AL # Po TIRONIAN SIGN CAPITAL ET
2E53..2E54 ; EX # Po [2] MEDIEVAL EXCLAMATION MARK..MEDIEVAL QUESTION MARK
2E55 ; OP # Ps LEFT SQUARE BRACKET WITH STROKE
-2E56 ; CL # Pe RIGHT SQUARE BRACKET WITH STROKE
+2E56 ; CP # Pe RIGHT SQUARE BRACKET WITH STROKE
2E57 ; OP # Ps LEFT SQUARE BRACKET WITH DOUBLE STROKE
-2E58 ; CL # Pe RIGHT SQUARE BRACKET WITH DOUBLE STROKE
+2E58 ; CP # Pe RIGHT SQUARE BRACKET WITH DOUBLE STROKE
2E59 ; OP # Ps TOP HALF LEFT PARENTHESIS
-2E5A ; CL # Pe TOP HALF RIGHT PARENTHESIS
+2E5A ; CP # Pe TOP HALF RIGHT PARENTHESIS
2E5B ; OP # Ps BOTTOM HALF LEFT PARENTHESIS
-2E5C ; CL # Pe BOTTOM HALF RIGHT PARENTHESIS
+2E5C ; CP # Pe BOTTOM HALF RIGHT PARENTHESIS
2E5D ; BA # Pd OBLIQUE HYPHEN
2E80..2E99 ; ID # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP
2E9B..2EF3 ; ID # So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
@@ -1519,7 +1515,7 @@
3192..3195 ; ID # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
3196..319F ; ID # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
31A0..31BF ; ID # Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH
-31C0..31E3 ; ID # So [36] CJK STROKE T..CJK STROKE Q
+31C0..31E5 ; ID # So [38] CJK STROKE T..CJK STROKE SZP
31EF ; ID # So IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION
31F0..31FF ; CJ # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
3200..321E ; ID # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
@@ -1578,10 +1574,10 @@ A788 ; AL # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT
A789..A78A ; AL # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
A78B..A78E ; AL # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
A78F ; AL # Lo LATIN LETTER SINOLOGICAL DOT
-A790..A7CA ; AL # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+A790..A7CD ; AL # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE
A7D0..A7D1 ; AL # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
A7D3 ; AL # Ll LATIN SMALL LETTER DOUBLE THORN
-A7D5..A7D9 ; AL # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+A7D5..A7DC ; AL # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE
A7F2..A7F4 ; AL # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
A7F5..A7F6 ; AL # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
A7F7 ; AL # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I
@@ -1643,7 +1639,7 @@ A9C1..A9C6 ; ID # Po [6] JAVANESE LEFT RERENGGAN..JAVANESE PADA WINDU
A9C7..A9C9 ; BA # Po [3] JAVANESE PADA PANGKAT..JAVANESE PADA LUNGSI
A9CA..A9CD ; ID # Po [4] JAVANESE PADA ADEG..JAVANESE TURNED PADA PISELEH
A9CF ; BA # Lm JAVANESE PANGRANGKEP
-A9D0..A9D9 ; ID # Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE
+A9D0..A9D9 ; AS # Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE
A9DE..A9DF ; ID # Po [2] JAVANESE PADA TIRTA TUMETES..JAVANESE PADA ISEN-ISEN
A9E0..A9E4 ; SA # Lo [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA
A9E5 ; SA # Mn MYANMAR SIGN SHAN SAW
@@ -1662,7 +1658,7 @@ AA43 ; CM # Mn CHAM CONSONANT SIGN FINAL NG
AA44..AA4B ; BA # Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS
AA4C ; CM # Mn CHAM CONSONANT SIGN FINAL M
AA4D ; CM # Mc CHAM CONSONANT SIGN FINAL H
-AA50..AA59 ; ID # Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE
+AA50..AA59 ; AS # Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE
AA5C ; ID # Po CHAM PUNCTUATION SPIRAL
AA5D..AA5F ; BA # Po [3] CHAM PUNCTUATION DANDA..CHAM PUNCTUATION TRIPLE DANDA
AA60..AA6F ; SA # Lo [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA
@@ -2552,14 +2548,26 @@ FDF0..FDFB ; AL # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN
FDFC ; PO # Sc RIAL SIGN
FDFD..FDFF ; AL # So [3] ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM..ARABIC LIGATURE AZZA WA JALL
FE00..FE0F ; CM # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
-FE10 ; IS # Po PRESENTATION FORM FOR VERTICAL COMMA
-FE11..FE12 ; CL # Po [2] PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA..PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP
-FE13..FE14 ; IS # Po [2] PRESENTATION FORM FOR VERTICAL COLON..PRESENTATION FORM FOR VERTICAL SEMICOLON
+FE10..FE12 ; CL # Po [3] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP
+FE13..FE14 ; NS # Po [2] PRESENTATION FORM FOR VERTICAL COLON..PRESENTATION FORM FOR VERTICAL SEMICOLON
FE15..FE16 ; EX # Po [2] PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK..PRESENTATION FORM FOR VERTICAL QUESTION MARK
FE17 ; OP # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
FE18 ; CL # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
FE19 ; IN # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
-FE20..FE2F ; CM # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
+FE20 ; GL # Mn COMBINING LIGATURE LEFT HALF
+FE21 ; CM # Mn COMBINING LIGATURE RIGHT HALF
+FE22 ; GL # Mn COMBINING DOUBLE TILDE LEFT HALF
+FE23 ; CM # Mn COMBINING DOUBLE TILDE RIGHT HALF
+FE24 ; GL # Mn COMBINING MACRON LEFT HALF
+FE25 ; CM # Mn COMBINING MACRON RIGHT HALF
+FE26..FE27 ; GL # Mn [2] COMBINING CONJOINING MACRON..COMBINING LIGATURE LEFT HALF BELOW
+FE28 ; CM # Mn COMBINING LIGATURE RIGHT HALF BELOW
+FE29 ; GL # Mn COMBINING TILDE LEFT HALF BELOW
+FE2A ; CM # Mn COMBINING TILDE RIGHT HALF BELOW
+FE2B ; GL # Mn COMBINING MACRON LEFT HALF BELOW
+FE2C ; CM # Mn COMBINING MACRON RIGHT HALF BELOW
+FE2D..FE2E ; GL # Mn [2] COMBINING CONJOINING MACRON BELOW..COMBINING CYRILLIC TITLO LEFT HALF
+FE2F ; CM # Mn COMBINING CYRILLIC TITLO RIGHT HALF
FE30 ; ID # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
FE31..FE32 ; ID # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
FE33..FE34 ; ID # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
@@ -2721,6 +2729,7 @@ FFFD ; AI # So REPLACEMENT CHARACTER
105A3..105B1 ; AL # Ll [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
105B3..105B9 ; AL # Ll [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
105BB..105BC ; AL # Ll [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+105C0..105F3 ; AL # Lo [52] TODHRI LETTER A..TODHRI LETTER OO
10600..10736 ; AL # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
10740..10755 ; AL # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
10760..10767 ; AL # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807
@@ -2795,12 +2804,23 @@ FFFD ; AI # So REPLACEMENT CHARACTER
10D00..10D23 ; AL # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
10D24..10D27 ; CM # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
10D30..10D39 ; NU # Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE
+10D40..10D49 ; NU # Nd [10] GARAY DIGIT ZERO..GARAY DIGIT NINE
+10D4A..10D4D ; AL # Lo [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE
+10D4E ; AL # Lm GARAY VOWEL LENGTH MARK
+10D4F ; AL # Lo GARAY SUKUN
+10D50..10D65 ; AL # Lu [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
+10D69..10D6D ; CM # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK
+10D6E ; BA # Pd GARAY HYPHEN
+10D6F ; AL # Lm GARAY REDUPLICATION MARK
+10D70..10D85 ; AL # Ll [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
+10D8E..10D8F ; AL # Sm [2] GARAY PLUS SIGN..GARAY MINUS SIGN
10E60..10E7E ; AL # No [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS
10E80..10EA9 ; AL # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
10EAB..10EAC ; CM # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
10EAD ; BA # Pd YEZIDI HYPHENATION MARK
10EB0..10EB1 ; AL # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
-10EFD..10EFF ; CM # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
+10EC2..10EC4 ; AL # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW
+10EFC..10EFF ; CM # Mn [4] ARABIC COMBINING ALEF OVERLAY..ARABIC SMALL LOW WORD MADDA
10F00..10F1C ; AL # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
10F1D..10F26 ; AL # No [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF
10F27 ; AL # Lo OLD SOGDIAN LIGATURE AYIN-DALETH
@@ -2929,6 +2949,27 @@ FFFD ; AI # So REPLACEMENT CHARACTER
11362..11363 ; CM # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
11366..1136C ; CM # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
11370..11374 ; CM # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11380..11389 ; AS # Lo [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL
+1138B ; AS # Lo TULU-TIGALARI LETTER EE
+1138E ; AS # Lo TULU-TIGALARI LETTER AI
+11390..11391 ; AS # Lo [2] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER AU
+11392..113B5 ; AK # Lo [36] TULU-TIGALARI LETTER KA..TULU-TIGALARI LETTER LLLA
+113B7 ; ID # Lo TULU-TIGALARI SIGN AVAGRAHA
+113B8..113BA ; CM # Mc [3] TULU-TIGALARI VOWEL SIGN AA..TULU-TIGALARI VOWEL SIGN II
+113BB..113C0 ; CM # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL
+113C2 ; CM # Mc TULU-TIGALARI VOWEL SIGN EE
+113C5 ; CM # Mc TULU-TIGALARI VOWEL SIGN AI
+113C7..113CA ; CM # Mc [4] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI SIGN CANDRA ANUNASIKA
+113CC..113CD ; CM # Mc [2] TULU-TIGALARI SIGN ANUSVARA..TULU-TIGALARI SIGN VISARGA
+113CE ; CM # Mn TULU-TIGALARI SIGN VIRAMA
+113CF ; CM # Mc TULU-TIGALARI SIGN LOOPED VIRAMA
+113D0 ; VI # Mn TULU-TIGALARI CONJOINER
+113D1 ; AP # Lo TULU-TIGALARI REPHA
+113D2 ; CM # Mn TULU-TIGALARI GEMINATION MARK
+113D3 ; ID # Lo TULU-TIGALARI SIGN PLUTA
+113D4..113D5 ; ID # Po [2] TULU-TIGALARI DANDA..TULU-TIGALARI DOUBLE DANDA
+113D7..113D8 ; ID # Po [2] TULU-TIGALARI SIGN OM PUSHPIKA..TULU-TIGALARI SIGN SHRII PUSHPIKA
+113E1..113E2 ; CM # Mn [2] TULU-TIGALARI VEDIC TONE SVARITA..TULU-TIGALARI VEDIC TONE ANUDATTA
11400..11434 ; AL # Lo [53] NEWA LETTER A..NEWA LETTER HA
11435..11437 ; CM # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
11438..1143F ; CM # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
@@ -2994,8 +3035,11 @@ FFFD ; AI # So REPLACEMENT CHARACTER
116B8 ; AL # Lo TAKRI LETTER ARCHAIC KHA
116B9 ; AL # Po TAKRI ABBREVIATION SIGN
116C0..116C9 ; NU # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
+116D0..116E3 ; NU # Nd [20] MYANMAR PAO DIGIT ZERO..MYANMAR EASTERN PWO KAREN DIGIT NINE
11700..1171A ; SA # Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA
-1171D..1171F ; SA # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+1171D ; SA # Mn AHOM CONSONANT SIGN MEDIAL LA
+1171E ; SA # Mc AHOM CONSONANT SIGN MEDIAL RA
+1171F ; SA # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA
11720..11721 ; SA # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
11722..11725 ; SA # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
11726 ; SA # Mc AHOM VOWEL SIGN E
@@ -3031,7 +3075,7 @@ FFFD ; AI # So REPLACEMENT CHARACTER
11942 ; CM # Mc DIVES AKURU MEDIAL RA
11943 ; CM # Mn DIVES AKURU SIGN NUKTA
11944..11946 ; BA # Po [3] DIVES AKURU DOUBLE DANDA..DIVES AKURU END OF TEXT MARK
-11950..11959 ; ID # Nd [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE
+11950..11959 ; AS # Nd [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE
119A0..119A7 ; AL # Lo [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR
119AA..119D0 ; AL # Lo [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA
119D1..119D3 ; CM # Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II
@@ -3071,6 +3115,9 @@ FFFD ; AI # So REPLACEMENT CHARACTER
11AB0..11ABF ; AL # Lo [16] CANADIAN SYLLABICS NATTILIK HI..CANADIAN SYLLABICS SPA
11AC0..11AF8 ; AL # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
11B00..11B09 ; BB # Po [10] DEVANAGARI HEAD MARK..DEVANAGARI SIGN MINDU
+11BC0..11BE0 ; AL # Lo [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO
+11BE1 ; AL # Po SUNUWAR SIGN PVO
+11BF0..11BF9 ; NU # Nd [10] SUNUWAR DIGIT ZERO..SUNUWAR DIGIT NINE
11C00..11C08 ; AL # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
11C0A..11C2E ; AL # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
11C2F ; CM # Mc BHAIKSUKI VOWEL SIGN AA
@@ -3132,6 +3179,7 @@ FFFD ; AI # So REPLACEMENT CHARACTER
11F43..11F44 ; BA # Po [2] KAWI DANDA..KAWI DOUBLE DANDA
11F45..11F4F ; ID # Po [11] KAWI PUNCTUATION SECTION MARKER..KAWI PUNCTUATION CLOSING SPIRAL
11F50..11F59 ; AS # Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE
+11F5A ; CM # Mn KAWI SIGN NUKTA
11FB0 ; AL # Lo LISU LETTER YHA
11FC0..11FD4 ; AL # No [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH
11FD5..11FDC ; AL # So [8] TAMIL SIGN NEL..TAMIL SIGN MUKKURUNI
@@ -3170,10 +3218,16 @@ FFFD ; AI # So REPLACEMENT CHARACTER
13440 ; CM # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
13441..13446 ; AL # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
13447..13455 ; CM # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+13460..143FA ; AL # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA
14400..145CD ; AL # Lo [462] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A409
145CE ; OP # Lo ANATOLIAN HIEROGLYPH A410 BEGIN LOGOGRAM MARK
145CF ; CL # Lo ANATOLIAN HIEROGLYPH A410A END LOGOGRAM MARK
145D0..14646 ; AL # Lo [119] ANATOLIAN HIEROGLYPH A411..ANATOLIAN HIEROGLYPH A530
+16100..1611D ; AS # Lo [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA
+1611E..16129 ; CM # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK
+1612A..1612C ; CM # Mc [3] GURUNG KHEMA CONSONANT SIGN MEDIAL YA..GURUNG KHEMA CONSONANT SIGN MEDIAL HA
+1612D..1612F ; CM # Mn [3] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA SIGN THOLHOMA
+16130..16139 ; AS # Nd [10] GURUNG KHEMA DIGIT ZERO..GURUNG KHEMA DIGIT NINE
16800..16A38 ; AL # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
16A40..16A5E ; AL # Lo [31] MRO LETTER TA..MRO LETTER TEK
16A60..16A69 ; NU # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE
@@ -3195,6 +3249,12 @@ FFFD ; AI # So REPLACEMENT CHARACTER
16B5B..16B61 ; AL # No [7] PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS
16B63..16B77 ; AL # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
16B7D..16B8F ; AL # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
+16D40..16D42 ; AL # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA
+16D43..16D6A ; AL # Lo [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU
+16D6B..16D6C ; AL # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT
+16D6D ; AL # Po KIRAT RAI SIGN YUPI
+16D6E..16D6F ; BA # Po [2] KIRAT RAI DANDA..KIRAT RAI DOUBLE DANDA
+16D70..16D79 ; NU # Nd [10] KIRAT RAI DIGIT ZERO..KIRAT RAI DIGIT NINE
16E40..16E7F ; AL # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
16E80..16E96 ; AL # No [23] MEDEFAIDRIN DIGIT ZERO..MEDEFAIDRIN DIGIT THREE ALTERNATE FORM
16E97..16E98 ; BA # Po [2] MEDEFAIDRIN COMMA..MEDEFAIDRIN FULL STOP
@@ -3213,6 +3273,7 @@ FFFD ; AI # So REPLACEMENT CHARACTER
17000..187F7 ; ID # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
18800..18AFF ; ID # Lo [768] TANGUT COMPONENT-001..TANGUT COMPONENT-768
18B00..18CD5 ; AL # Lo [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5
+18CFF ; AL # Lo KHITAN SMALL SCRIPT CHARACTER-18CFF
18D00..18D08 ; ID # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
1AFF0..1AFF3 ; AL # Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
1AFF5..1AFFB ; AL # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
@@ -3232,6 +3293,9 @@ FFFD ; AI # So REPLACEMENT CHARACTER
1BC9D..1BC9E ; CM # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
1BC9F ; BA # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP
1BCA0..1BCA3 ; CM # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
+1CC00..1CCEF ; AL # So [240] UP-POINTING GO-KART..OUTLINED LATIN CAPITAL LETTER Z
+1CCF0..1CCF9 ; NU # Nd [10] OUTLINED DIGIT ZERO..OUTLINED DIGIT NINE
+1CD00..1CEB3 ; AL # So [436] BLOCK OCTANT-3..BLACK RIGHT TRIANGLE CARET
1CF00..1CF2D ; CM # Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
1CF30..1CF46 ; CM # Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
1CF50..1CFC3 ; AL # So [116] ZNAMENNY NEUME KRYUK..ZNAMENNY NEUME PAUK
@@ -3337,6 +3401,11 @@ FFFD ; AI # So REPLACEMENT CHARACTER
1E4EB ; AL # Lm NAG MUNDARI SIGN OJOD
1E4EC..1E4EF ; CM # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
1E4F0..1E4F9 ; NU # Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE
+1E5D0..1E5ED ; AL # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG
+1E5EE..1E5EF ; CM # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR
+1E5F0 ; AL # Lo OL ONAL SIGN HODDOND
+1E5F1..1E5FA ; NU # Nd [10] OL ONAL DIGIT ZERO..OL ONAL DIGIT NINE
+1E5FF ; AL # Po OL ONAL ABBREVIATION SIGN
1E7E0..1E7E6 ; AL # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
1E7E8..1E7EB ; AL # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
1E7ED..1E7EE ; AL # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
@@ -3404,14 +3473,13 @@ FFFD ; AI # So REPLACEMENT CHARACTER
1F0D1..1F0F5 ; ID # So [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21
1F0F6..1F0FF ; ID # Cn [10] <reserved-1F0F6>..<reserved-1F0FF>
1F100..1F10C ; AI # No [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
-1F10D..1F10F ; ID # So [3] CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH
+1F10D..1F10F ; AL # So [3] CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH
1F110..1F12D ; AI # So [30] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED CD
1F12E..1F12F ; AL # So [2] CIRCLED WZ..COPYLEFT SYMBOL
1F130..1F169 ; AI # So [58] SQUARED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
-1F16A..1F16C ; AL # So [3] RAISED MC SIGN..RAISED MR SIGN
-1F16D..1F16F ; ID # So [3] CIRCLED CC..CIRCLED HUMAN FIGURE
+1F16A..1F16F ; AL # So [6] RAISED MC SIGN..CIRCLED HUMAN FIGURE
1F170..1F1AC ; AI # So [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD
-1F1AD ; ID # So MASK WORK SYMBOL
+1F1AD ; AL # So MASK WORK SYMBOL
1F1AE..1F1E5 ; ID # Cn [56] <reserved-1F1AE>..<reserved-1F1E5>
1F1E6..1F1FF ; RI # So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
1F200..1F202 ; ID # So [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA
@@ -3521,17 +3589,12 @@ FFFD ; AI # So REPLACEMENT CHARACTER
1F7F0 ; ID # So HEAVY EQUALS SIGN
1F7F1..1F7FF ; ID # Cn [15] <reserved-1F7F1>..<reserved-1F7FF>
1F800..1F80B ; AL # So [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
-1F80C..1F80F ; ID # Cn [4] <reserved-1F80C>..<reserved-1F80F>
1F810..1F847 ; AL # So [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW
-1F848..1F84F ; ID # Cn [8] <reserved-1F848>..<reserved-1F84F>
1F850..1F859 ; AL # So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
-1F85A..1F85F ; ID # Cn [6] <reserved-1F85A>..<reserved-1F85F>
1F860..1F887 ; AL # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
-1F888..1F88F ; ID # Cn [8] <reserved-1F888>..<reserved-1F88F>
1F890..1F8AD ; AL # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
-1F8AE..1F8AF ; ID # Cn [2] <reserved-1F8AE>..<reserved-1F8AF>
-1F8B0..1F8B1 ; ID # So [2] ARROW POINTING UPWARDS THEN NORTH WEST..ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST
-1F8B2..1F8FF ; ID # Cn [78] <reserved-1F8B2>..<reserved-1F8FF>
+1F8B0..1F8BB ; AL # So [12] ARROW POINTING UPWARDS THEN NORTH WEST..SOUTH WEST ARROW FROM BAR
+1F8C0..1F8C1 ; AL # So [2] LEFTWARDS ARROW FROM DOWNWARDS ARROW..RIGHTWARDS ARROW FROM DOWNWARDS ARROW
1F900..1F90B ; AL # So [12] CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT
1F90C ; EB # So PINCHED FINGERS
1F90D..1F90E ; ID # So [2] WHITE HEART..BROWN HEART
@@ -3563,21 +3626,20 @@ FFFD ; AI # So REPLACEMENT CHARACTER
1FA6E..1FA6F ; ID # Cn [2] <reserved-1FA6E>..<reserved-1FA6F>
1FA70..1FA7C ; ID # So [13] BALLET SHOES..CRUTCH
1FA7D..1FA7F ; ID # Cn [3] <reserved-1FA7D>..<reserved-1FA7F>
-1FA80..1FA88 ; ID # So [9] YO-YO..FLUTE
-1FA89..1FA8F ; ID # Cn [7] <reserved-1FA89>..<reserved-1FA8F>
-1FA90..1FABD ; ID # So [46] RINGED PLANET..WING
-1FABE ; ID # Cn <reserved-1FABE>
-1FABF..1FAC2 ; ID # So [4] GOOSE..PEOPLE HUGGING
+1FA80..1FA89 ; ID # So [10] YO-YO..HARP
+1FA8A..1FA8E ; ID # Cn [5] <reserved-1FA8A>..<reserved-1FA8E>
+1FA8F..1FAC2 ; ID # So [52] SHOVEL..PEOPLE HUGGING
1FAC3..1FAC5 ; EB # So [3] PREGNANT MAN..PERSON WITH CROWN
-1FAC6..1FACD ; ID # Cn [8] <reserved-1FAC6>..<reserved-1FACD>
-1FACE..1FADB ; ID # So [14] MOOSE..PEA POD
-1FADC..1FADF ; ID # Cn [4] <reserved-1FADC>..<reserved-1FADF>
-1FAE0..1FAE8 ; ID # So [9] MELTING FACE..SHAKING FACE
-1FAE9..1FAEF ; ID # Cn [7] <reserved-1FAE9>..<reserved-1FAEF>
+1FAC6 ; ID # So FINGERPRINT
+1FAC7..1FACD ; ID # Cn [7] <reserved-1FAC7>..<reserved-1FACD>
+1FACE..1FADC ; ID # So [15] MOOSE..ROOT VEGETABLE
+1FADD..1FADE ; ID # Cn [2] <reserved-1FADD>..<reserved-1FADE>
+1FADF..1FAE9 ; ID # So [11] SPLATTER..FACE WITH BAGS UNDER EYES
+1FAEA..1FAEF ; ID # Cn [6] <reserved-1FAEA>..<reserved-1FAEF>
1FAF0..1FAF8 ; EB # So [9] HAND WITH INDEX FINGER AND THUMB CROSSED..RIGHTWARDS PUSHING HAND
1FAF9..1FAFF ; ID # Cn [7] <reserved-1FAF9>..<reserved-1FAFF>
1FB00..1FB92 ; AL # So [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK
-1FB94..1FBCA ; AL # So [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON
+1FB94..1FBEF ; AL # So [92] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..TOP LEFT JUSTIFIED LOWER RIGHT QUARTER BLACK CIRCLE
1FBF0..1FBF9 ; NU # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
1FC00..1FFFD ; ID # Cn [1022] <reserved-1FC00>..<reserved-1FFFD>
20000..2A6DF ; ID # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
diff --git a/Master/texmf-dist/tex/generic/unicode-data/PropList.txt b/Master/texmf-dist/tex/generic/unicode-data/PropList.txt
index 777e8a28818..fae2831e7a5 100644
--- a/Master/texmf-dist/tex/generic/unicode-data/PropList.txt
+++ b/Master/texmf-dist/tex/generic/unicode-data/PropList.txt
@@ -1,8 +1,8 @@
-# PropList-15.1.0.txt
-# Date: 2023-08-01, 21:56:53 GMT
-# © 2023 Unicode®, Inc.
+# PropList-16.0.0.txt
+# Date: 2024-05-31, 18:09:48 GMT
+# © 2024 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
-# For terms of use, see https://www.unicode.org/terms_of_use.html
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
@@ -62,9 +62,10 @@ FE31..FE32 ; Dash # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTA
FE58 ; Dash # Pd SMALL EM DASH
FE63 ; Dash # Pd SMALL HYPHEN-MINUS
FF0D ; Dash # Pd FULLWIDTH HYPHEN-MINUS
+10D6E ; Dash # Pd GARAY HYPHEN
10EAD ; Dash # Pd YEZIDI HYPHENATION MARK
-# Total code points: 30
+# Total code points: 31
# ================================================
@@ -132,7 +133,8 @@ FF63 ; Quotation_Mark # Pe HALFWIDTH RIGHT CORNER BRACKET
0700..070A ; Terminal_Punctuation # Po [11] SYRIAC END OF PARAGRAPH..SYRIAC CONTRACTION
070C ; Terminal_Punctuation # Po SYRIAC HARKLEAN METOBELUS
07F8..07F9 ; Terminal_Punctuation # Po [2] NKO COMMA..NKO EXCLAMATION MARK
-0830..083E ; Terminal_Punctuation # Po [15] SAMARITAN PUNCTUATION NEQUDAA..SAMARITAN PUNCTUATION ANNAAU
+0830..0835 ; Terminal_Punctuation # Po [6] SAMARITAN PUNCTUATION NEQUDAA..SAMARITAN PUNCTUATION SHIYYAALAA
+0837..083E ; Terminal_Punctuation # Po [8] SAMARITAN PUNCTUATION MELODIC QITSA..SAMARITAN PUNCTUATION ANNAAU
085E ; Terminal_Punctuation # Po MANDAIC PUNCTUATION
0964..0965 ; Terminal_Punctuation # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
0E5A..0E5B ; Terminal_Punctuation # Po [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT
@@ -149,13 +151,16 @@ FF63 ; Quotation_Mark # Pe HALFWIDTH RIGHT CORNER BRACKET
1808..1809 ; Terminal_Punctuation # Po [2] MONGOLIAN MANCHU COMMA..MONGOLIAN MANCHU FULL STOP
1944..1945 ; Terminal_Punctuation # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
1AA8..1AAB ; Terminal_Punctuation # Po [4] TAI THAM SIGN KAAN..TAI THAM SIGN SATKAANKUU
+1B4E..1B4F ; Terminal_Punctuation # Po [2] BALINESE INVERTED CARIK SIKI..BALINESE INVERTED CARIK PAREREN
1B5A..1B5B ; Terminal_Punctuation # Po [2] BALINESE PANTI..BALINESE PAMADA
1B5D..1B5F ; Terminal_Punctuation # Po [3] BALINESE CARIK PAMUNGKAH..BALINESE CARIK PAREREN
-1B7D..1B7E ; Terminal_Punctuation # Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG
+1B7D..1B7F ; Terminal_Punctuation # Po [3] BALINESE PANTI LANTANG..BALINESE PANTI BAWAK
1C3B..1C3F ; Terminal_Punctuation # Po [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK
1C7E..1C7F ; Terminal_Punctuation # Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
+2024 ; Terminal_Punctuation # Po ONE DOT LEADER
203C..203D ; Terminal_Punctuation # Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG
2047..2049 ; Terminal_Punctuation # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+2CF9..2CFB ; Terminal_Punctuation # Po [3] COPTIC OLD NUBIAN FULL STOP..COPTIC OLD NUBIAN INDIRECT QUESTION MARK
2E2E ; Terminal_Punctuation # Po REVERSED QUESTION MARK
2E3C ; Terminal_Punctuation # Po STENOGRAPHIC FULL STOP
2E41 ; Terminal_Punctuation # Po REVERSED COMMA
@@ -174,6 +179,8 @@ AA5D..AA5F ; Terminal_Punctuation # Po [3] CHAM PUNCTUATION DANDA..CHAM PUN
AADF ; Terminal_Punctuation # Po TAI VIET SYMBOL KOI KOI
AAF0..AAF1 ; Terminal_Punctuation # Po [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM
ABEB ; Terminal_Punctuation # Po MEETEI MAYEK CHEIKHEI
+FE12 ; Terminal_Punctuation # Po PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP
+FE15..FE16 ; Terminal_Punctuation # Po [2] PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK..PRESENTATION FORM FOR VERTICAL QUESTION MARK
FE50..FE52 ; Terminal_Punctuation # Po [3] SMALL COMMA..SMALL FULL STOP
FE54..FE57 ; Terminal_Punctuation # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
FF01 ; Terminal_Punctuation # Po FULLWIDTH EXCLAMATION MARK
@@ -201,6 +208,7 @@ FF64 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC COMMA
111DE..111DF ; Terminal_Punctuation # Po [2] SHARADA SECTION MARK-1..SHARADA SECTION MARK-2
11238..1123C ; Terminal_Punctuation # Po [5] KHOJKI DANDA..KHOJKI DOUBLE SECTION MARK
112A9 ; Terminal_Punctuation # Po MULTANI SECTION MARK
+113D4..113D5 ; Terminal_Punctuation # Po [2] TULU-TIGALARI DANDA..TULU-TIGALARI DOUBLE DANDA
1144B..1144D ; Terminal_Punctuation # Po [3] NEWA DANDA..NEWA COMMA
1145A..1145B ; Terminal_Punctuation # Po [2] NEWA DOUBLE COMMA..NEWA PLACEHOLDER MARK
115C2..115C5 ; Terminal_Punctuation # Po [4] SIDDHAM DANDA..SIDDHAM SEPARATOR BAR
@@ -221,11 +229,12 @@ FF64 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC COMMA
16AF5 ; Terminal_Punctuation # Po BASSA VAH FULL STOP
16B37..16B39 ; Terminal_Punctuation # Po [3] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN CIM CHEEM
16B44 ; Terminal_Punctuation # Po PAHAWH HMONG SIGN XAUS
+16D6E..16D6F ; Terminal_Punctuation # Po [2] KIRAT RAI DANDA..KIRAT RAI DOUBLE DANDA
16E97..16E98 ; Terminal_Punctuation # Po [2] MEDEFAIDRIN COMMA..MEDEFAIDRIN FULL STOP
1BC9F ; Terminal_Punctuation # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP
1DA87..1DA8A ; Terminal_Punctuation # Po [4] SIGNWRITING COMMA..SIGNWRITING COLON
-# Total code points: 278
+# Total code points: 291
# ================================================
@@ -430,6 +439,7 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L
# ================================================
0345 ; Other_Alphabetic # Mn COMBINING GREEK YPOGEGRAMMENI
+0363..036F ; Other_Alphabetic # Mn [13] COMBINING LATIN SMALL LETTER A..COMBINING LATIN SMALL LETTER X
05B0..05BD ; Other_Alphabetic # Mn [14] HEBREW POINT SHEVA..HEBREW POINT METEG
05BF ; Other_Alphabetic # Mn HEBREW POINT RAFE
05C1..05C2 ; Other_Alphabetic # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
@@ -450,6 +460,7 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L
081B..0823 ; Other_Alphabetic # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
0825..0827 ; Other_Alphabetic # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
0829..082C ; Other_Alphabetic # Mn [4] SAMARITAN VOWEL SIGN LONG I..SAMARITAN VOWEL SIGN SUKUN
+0897 ; Other_Alphabetic # Mn ARABIC PEPET
08D4..08DF ; Other_Alphabetic # Mn [12] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH WORD WAQFA
08E3..08E9 ; Other_Alphabetic # Mn [7] ARABIC TURNED DAMMA BELOW..ARABIC CURLY KASRATAN
08F0..0902 ; Other_Alphabetic # Mn [19] ARABIC OPEN FATHATAN..DEVANAGARI SIGN ANUSVARA
@@ -634,7 +645,7 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L
1C2C..1C33 ; Other_Alphabetic # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
1C34..1C35 ; Other_Alphabetic # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
1C36 ; Other_Alphabetic # Mn LEPCHA SIGN RAN
-1DE7..1DF4 ; Other_Alphabetic # Mn [14] COMBINING LATIN SMALL LETTER ALPHA..COMBINING LATIN SMALL LETTER U WITH DIAERESIS
+1DD3..1DF4 ; Other_Alphabetic # Mn [34] COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE..COMBINING LATIN SMALL LETTER U WITH DIAERESIS
24B6..24E9 ; Other_Alphabetic # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z
2DE0..2DFF ; Other_Alphabetic # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
A674..A67B ; Other_Alphabetic # Mn [8] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC LETTER OMEGA
@@ -689,7 +700,9 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
10A05..10A06 ; Other_Alphabetic # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
10A0C..10A0F ; Other_Alphabetic # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
10D24..10D27 ; Other_Alphabetic # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+10D69 ; Other_Alphabetic # Mn GARAY VOWEL SIGN E
10EAB..10EAC ; Other_Alphabetic # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
+10EFC ; Other_Alphabetic # Mn ARABIC COMBINING ALEF OVERLAY
11000 ; Other_Alphabetic # Mc BRAHMI SIGN CANDRABINDU
11001 ; Other_Alphabetic # Mn BRAHMI SIGN ANUSVARA
11002 ; Other_Alphabetic # Mc BRAHMI SIGN VISARGA
@@ -732,6 +745,12 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
1134B..1134C ; Other_Alphabetic # Mc [2] GRANTHA VOWEL SIGN OO..GRANTHA VOWEL SIGN AU
11357 ; Other_Alphabetic # Mc GRANTHA AU LENGTH MARK
11362..11363 ; Other_Alphabetic # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+113B8..113BA ; Other_Alphabetic # Mc [3] TULU-TIGALARI VOWEL SIGN AA..TULU-TIGALARI VOWEL SIGN II
+113BB..113C0 ; Other_Alphabetic # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL
+113C2 ; Other_Alphabetic # Mc TULU-TIGALARI VOWEL SIGN EE
+113C5 ; Other_Alphabetic # Mc TULU-TIGALARI VOWEL SIGN AI
+113C7..113CA ; Other_Alphabetic # Mc [4] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI SIGN CANDRA ANUNASIKA
+113CC..113CD ; Other_Alphabetic # Mc [2] TULU-TIGALARI SIGN ANUSVARA..TULU-TIGALARI SIGN VISARGA
11435..11437 ; Other_Alphabetic # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
11438..1143F ; Other_Alphabetic # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
11440..11441 ; Other_Alphabetic # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
@@ -761,7 +780,9 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
116AD ; Other_Alphabetic # Mn TAKRI VOWEL SIGN AA
116AE..116AF ; Other_Alphabetic # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II
116B0..116B5 ; Other_Alphabetic # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
-1171D..1171F ; Other_Alphabetic # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+1171D ; Other_Alphabetic # Mn AHOM CONSONANT SIGN MEDIAL LA
+1171E ; Other_Alphabetic # Mc AHOM CONSONANT SIGN MEDIAL RA
+1171F ; Other_Alphabetic # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA
11720..11721 ; Other_Alphabetic # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
11722..11725 ; Other_Alphabetic # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
11726 ; Other_Alphabetic # Mc AHOM VOWEL SIGN E
@@ -818,6 +839,9 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
11F36..11F3A ; Other_Alphabetic # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R
11F3E..11F3F ; Other_Alphabetic # Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI
11F40 ; Other_Alphabetic # Mn KAWI VOWEL SIGN EU
+1611E..16129 ; Other_Alphabetic # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK
+1612A..1612C ; Other_Alphabetic # Mc [3] GURUNG KHEMA CONSONANT SIGN MEDIAL YA..GURUNG KHEMA CONSONANT SIGN MEDIAL HA
+1612D..1612E ; Other_Alphabetic # Mn [2] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA CONSONANT SIGN MEDIAL RA
16F4F ; Other_Alphabetic # Mn MIAO SIGN CONSONANT MODIFIER BAR
16F51..16F87 ; Other_Alphabetic # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
16F8F..16F92 ; Other_Alphabetic # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
@@ -834,7 +858,7 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
1F150..1F169 ; Other_Alphabetic # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
1F170..1F189 ; Other_Alphabetic # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
-# Total code points: 1425
+# Total code points: 1495
# ================================================
@@ -849,7 +873,7 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM
16FE4 ; Ideographic # Mn KHITAN SMALL SCRIPT FILLER
17000..187F7 ; Ideographic # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
18800..18CD5 ; Ideographic # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
-18D00..18D08 ; Ideographic # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
+18CFF..18D08 ; Ideographic # Lo [10] KHITAN SMALL SCRIPT CHARACTER-18CFF..TANGUT IDEOGRAPH-18D08
1B170..1B2FB ; Ideographic # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
20000..2A6DF ; Ideographic # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
2A700..2B739 ; Ideographic # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739
@@ -861,7 +885,7 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM
30000..3134A ; Ideographic # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
31350..323AF ; Ideographic # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
-# Total code points: 106476
+# Total code points: 106477
# ================================================
@@ -932,6 +956,7 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM
0D3B..0D3C ; Diacritic # Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
0D4D ; Diacritic # Mn MALAYALAM SIGN VIRAMA
0DCA ; Diacritic # Mn SINHALA SIGN AL-LAKUNA
+0E3A ; Diacritic # Mn THAI CHARACTER PHINTHU
0E47..0E4C ; Diacritic # Mn [6] THAI CHARACTER MAITAIKHU..THAI CHARACTER THANTHAKHAT
0E4E ; Diacritic # Mn THAI CHARACTER YAMAKKAN
0EBA ; Diacritic # Mn LAO SIGN PALI VIRAMA
@@ -955,9 +980,11 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM
135D..135F ; Diacritic # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
1714 ; Diacritic # Mn TAGALOG SIGN VIRAMA
1715 ; Diacritic # Mc TAGALOG SIGN PAMUDPOD
+1734 ; Diacritic # Mc HANUNOO SIGN PAMUDPOD
17C9..17D3 ; Diacritic # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
17DD ; Diacritic # Mn KHMER SIGN ATTHACAN
1939..193B ; Diacritic # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
+1A60 ; Diacritic # Mn TAI THAM SIGN SAKOT
1A75..1A7C ; Diacritic # Mn [8] TAI THAM SIGN TONE-1..TAI THAM SIGN KHUEN-LUE KARAN
1A7F ; Diacritic # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT
1AB0..1ABD ; Diacritic # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
@@ -968,6 +995,8 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM
1B6B..1B73 ; Diacritic # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
1BAA ; Diacritic # Mc SUNDANESE SIGN PAMAAEH
1BAB ; Diacritic # Mn SUNDANESE SIGN VIRAMA
+1BE6 ; Diacritic # Mn BATAK SIGN TOMPI
+1BF2..1BF3 ; Diacritic # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN
1C36..1C37 ; Diacritic # Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
1C78..1C7D ; Diacritic # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
1CD0..1CD2 ; Diacritic # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
@@ -1006,6 +1035,8 @@ A720..A721 ; Diacritic # Sk [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIF
A788 ; Diacritic # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT
A789..A78A ; Diacritic # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
A7F8..A7F9 ; Diacritic # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
+A806 ; Diacritic # Mn SYLOTI NAGRI SIGN HASANTA
+A82C ; Diacritic # Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA
A8C4 ; Diacritic # Mn SAURASHTRA SIGN VIRAMA
A8E0..A8F1 ; Diacritic # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
A92B..A92D ; Diacritic # Mn [3] KAYAH LI TONE PLOPHU..KAYAH LI TONE CALYA PLOPHU
@@ -1039,9 +1070,13 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON
10780..10785 ; Diacritic # Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK
10787..107B0 ; Diacritic # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
107B2..107BA ; Diacritic # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
+10A38..10A3A ; Diacritic # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
+10A3F ; Diacritic # Mn KHAROSHTHI VIRAMA
10AE5..10AE6 ; Diacritic # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
10D22..10D23 ; Diacritic # Lo [2] HANIFI ROHINGYA MARK SAKIN..HANIFI ROHINGYA MARK NA KHONNA
10D24..10D27 ; Diacritic # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+10D4E ; Diacritic # Lm GARAY VOWEL LENGTH MARK
+10D69..10D6D ; Diacritic # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK
10EFD..10EFF ; Diacritic # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
10F46..10F50 ; Diacritic # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
10F82..10F85 ; Diacritic # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
@@ -1055,10 +1090,16 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON
11235 ; Diacritic # Mc KHOJKI SIGN VIRAMA
11236 ; Diacritic # Mn KHOJKI SIGN NUKTA
112E9..112EA ; Diacritic # Mn [2] KHUDAWADI SIGN NUKTA..KHUDAWADI SIGN VIRAMA
-1133C ; Diacritic # Mn GRANTHA SIGN NUKTA
+1133B..1133C ; Diacritic # Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
1134D ; Diacritic # Mc GRANTHA SIGN VIRAMA
11366..1136C ; Diacritic # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
11370..11374 ; Diacritic # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+113CE ; Diacritic # Mn TULU-TIGALARI SIGN VIRAMA
+113CF ; Diacritic # Mc TULU-TIGALARI SIGN LOOPED VIRAMA
+113D0 ; Diacritic # Mn TULU-TIGALARI CONJOINER
+113D2 ; Diacritic # Mn TULU-TIGALARI GEMINATION MARK
+113D3 ; Diacritic # Lo TULU-TIGALARI SIGN PLUTA
+113E1..113E2 ; Diacritic # Mn [2] TULU-TIGALARI VEDIC TONE SVARITA..TULU-TIGALARI VEDIC TONE ANUDATTA
11442 ; Diacritic # Mn NEWA SIGN VIRAMA
11446 ; Diacritic # Mn NEWA SIGN NUKTA
114C2..114C3 ; Diacritic # Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA
@@ -1079,9 +1120,14 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON
11D42 ; Diacritic # Mn MASARAM GONDI SIGN NUKTA
11D44..11D45 ; Diacritic # Mn [2] MASARAM GONDI SIGN HALANTA..MASARAM GONDI VIRAMA
11D97 ; Diacritic # Mn GUNJALA GONDI VIRAMA
+11F41 ; Diacritic # Mc KAWI SIGN KILLER
+11F42 ; Diacritic # Mn KAWI CONJOINER
+11F5A ; Diacritic # Mn KAWI SIGN NUKTA
13447..13455 ; Diacritic # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+1612F ; Diacritic # Mn GURUNG KHEMA SIGN THOLHOMA
16AF0..16AF4 ; Diacritic # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
16B30..16B36 ; Diacritic # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
+16D6B..16D6C ; Diacritic # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT
16F8F..16F92 ; Diacritic # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
16F93..16F9F ; Diacritic # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
16FF0..16FF1 ; Diacritic # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
@@ -1099,11 +1145,12 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON
1E130..1E136 ; Diacritic # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
1E2AE ; Diacritic # Mn TOTO SIGN RISING TONE
1E2EC..1E2EF ; Diacritic # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI
+1E5EE..1E5EF ; Diacritic # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR
1E8D0..1E8D6 ; Diacritic # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
1E944..1E946 ; Diacritic # Mn [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
1E948..1E94A ; Diacritic # Mn [3] ADLAM CONSONANT MODIFIER..ADLAM NUKTA
-# Total code points: 1144
+# Total code points: 1178
# ================================================
@@ -1111,6 +1158,8 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON
02D0..02D1 ; Extender # Lm [2] MODIFIER LETTER TRIANGULAR COLON..MODIFIER LETTER HALF TRIANGULAR COLON
0640 ; Extender # Lm ARABIC TATWEEL
07FA ; Extender # Lm NKO LAJANYALAN
+0A71 ; Extender # Mn GURMUKHI ADDAK
+0AFB ; Extender # Mn GUJARATI SIGN SHADDA
0B55 ; Extender # Mn ORIYA SIGN OVERLINE
0E46 ; Extender # Lm THAI CHARACTER MAIYAMOK
0EC6 ; Extender # Lm LAO KO LA
@@ -1132,16 +1181,23 @@ AADD ; Extender # Lm TAI VIET SYMBOL SAM
AAF3..AAF4 ; Extender # Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK
FF70 ; Extender # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
10781..10782 ; Extender # Lm [2] MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON..MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON
+10D4E ; Extender # Lm GARAY VOWEL LENGTH MARK
+10D6A ; Extender # Mn GARAY CONSONANT GEMINATION MARK
+10D6F ; Extender # Lm GARAY REDUPLICATION MARK
+11237 ; Extender # Mn KHOJKI SIGN SHADDA
1135D ; Extender # Lo GRANTHA SIGN PLUTA
+113D2 ; Extender # Mn TULU-TIGALARI GEMINATION MARK
+113D3 ; Extender # Lo TULU-TIGALARI SIGN PLUTA
115C6..115C8 ; Extender # Po [3] SIDDHAM REPETITION MARK-1..SIDDHAM REPETITION MARK-3
11A98 ; Extender # Mn SOYOMBO GEMINATION MARK
16B42..16B43 ; Extender # Lm [2] PAHAWH HMONG SIGN VOS NRUA..PAHAWH HMONG SIGN IB YAM
16FE0..16FE1 ; Extender # Lm [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK
16FE3 ; Extender # Lm OLD CHINESE ITERATION MARK
1E13C..1E13D ; Extender # Lm [2] NYIAKENG PUACHUE HMONG SIGN XW XW..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
+1E5EF ; Extender # Mn OL ONAL SIGN IKIR
1E944..1E946 ; Extender # Mn [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
-# Total code points: 50
+# Total code points: 59
# ================================================
@@ -1217,27 +1273,51 @@ FFFFE..FFFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-FFFFE>..<noncha
0B57 ; Other_Grapheme_Extend # Mc ORIYA AU LENGTH MARK
0BBE ; Other_Grapheme_Extend # Mc TAMIL VOWEL SIGN AA
0BD7 ; Other_Grapheme_Extend # Mc TAMIL AU LENGTH MARK
+0CC0 ; Other_Grapheme_Extend # Mc KANNADA VOWEL SIGN II
0CC2 ; Other_Grapheme_Extend # Mc KANNADA VOWEL SIGN UU
+0CC7..0CC8 ; Other_Grapheme_Extend # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; Other_Grapheme_Extend # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
0CD5..0CD6 ; Other_Grapheme_Extend # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
0D3E ; Other_Grapheme_Extend # Mc MALAYALAM VOWEL SIGN AA
0D57 ; Other_Grapheme_Extend # Mc MALAYALAM AU LENGTH MARK
0DCF ; Other_Grapheme_Extend # Mc SINHALA VOWEL SIGN AELA-PILLA
0DDF ; Other_Grapheme_Extend # Mc SINHALA VOWEL SIGN GAYANUKITTA
+1715 ; Other_Grapheme_Extend # Mc TAGALOG SIGN PAMUDPOD
+1734 ; Other_Grapheme_Extend # Mc HANUNOO SIGN PAMUDPOD
1B35 ; Other_Grapheme_Extend # Mc BALINESE VOWEL SIGN TEDUNG
+1B3B ; Other_Grapheme_Extend # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D ; Other_Grapheme_Extend # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B43..1B44 ; Other_Grapheme_Extend # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
+1BAA ; Other_Grapheme_Extend # Mc SUNDANESE SIGN PAMAAEH
+1BF2..1BF3 ; Other_Grapheme_Extend # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN
200C ; Other_Grapheme_Extend # Cf ZERO WIDTH NON-JOINER
302E..302F ; Other_Grapheme_Extend # Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK
+A953 ; Other_Grapheme_Extend # Mc REJANG VIRAMA
+A9C0 ; Other_Grapheme_Extend # Mc JAVANESE PANGKON
FF9E..FF9F ; Other_Grapheme_Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+111C0 ; Other_Grapheme_Extend # Mc SHARADA SIGN VIRAMA
+11235 ; Other_Grapheme_Extend # Mc KHOJKI SIGN VIRAMA
1133E ; Other_Grapheme_Extend # Mc GRANTHA VOWEL SIGN AA
+1134D ; Other_Grapheme_Extend # Mc GRANTHA SIGN VIRAMA
11357 ; Other_Grapheme_Extend # Mc GRANTHA AU LENGTH MARK
+113B8 ; Other_Grapheme_Extend # Mc TULU-TIGALARI VOWEL SIGN AA
+113C2 ; Other_Grapheme_Extend # Mc TULU-TIGALARI VOWEL SIGN EE
+113C5 ; Other_Grapheme_Extend # Mc TULU-TIGALARI VOWEL SIGN AI
+113C7..113C9 ; Other_Grapheme_Extend # Mc [3] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI AU LENGTH MARK
+113CF ; Other_Grapheme_Extend # Mc TULU-TIGALARI SIGN LOOPED VIRAMA
114B0 ; Other_Grapheme_Extend # Mc TIRHUTA VOWEL SIGN AA
114BD ; Other_Grapheme_Extend # Mc TIRHUTA VOWEL SIGN SHORT O
115AF ; Other_Grapheme_Extend # Mc SIDDHAM VOWEL SIGN AA
+116B6 ; Other_Grapheme_Extend # Mc TAKRI SIGN VIRAMA
11930 ; Other_Grapheme_Extend # Mc DIVES AKURU VOWEL SIGN AA
-1D165 ; Other_Grapheme_Extend # Mc MUSICAL SYMBOL COMBINING STEM
-1D16E..1D172 ; Other_Grapheme_Extend # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
+1193D ; Other_Grapheme_Extend # Mc DIVES AKURU SIGN HALANTA
+11F41 ; Other_Grapheme_Extend # Mc KAWI SIGN KILLER
+16FF0..16FF1 ; Other_Grapheme_Extend # Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
+1D165..1D166 ; Other_Grapheme_Extend # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
+1D16D..1D172 ; Other_Grapheme_Extend # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
E0020..E007F ; Other_Grapheme_Extend # Cf [96] TAG SPACE..CANCEL TAG
-# Total code points: 127
+# Total code points: 160
# ================================================
@@ -1462,13 +1542,16 @@ FF65 ; Other_ID_Continue # Po HALFWIDTH KATAKANA MIDDLE DOT
1809 ; Sentence_Terminal # Po MONGOLIAN MANCHU FULL STOP
1944..1945 ; Sentence_Terminal # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
1AA8..1AAB ; Sentence_Terminal # Po [4] TAI THAM SIGN KAAN..TAI THAM SIGN SATKAANKUU
+1B4E..1B4F ; Sentence_Terminal # Po [2] BALINESE INVERTED CARIK SIKI..BALINESE INVERTED CARIK PAREREN
1B5A..1B5B ; Sentence_Terminal # Po [2] BALINESE PANTI..BALINESE PAMADA
1B5E..1B5F ; Sentence_Terminal # Po [2] BALINESE CARIK SIKI..BALINESE CARIK PAREREN
-1B7D..1B7E ; Sentence_Terminal # Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG
+1B7D..1B7F ; Sentence_Terminal # Po [3] BALINESE PANTI LANTANG..BALINESE PANTI BAWAK
1C3B..1C3C ; Sentence_Terminal # Po [2] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION NYET THYOOM TA-ROL
1C7E..1C7F ; Sentence_Terminal # Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
+2024 ; Sentence_Terminal # Po ONE DOT LEADER
203C..203D ; Sentence_Terminal # Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG
2047..2049 ; Sentence_Terminal # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+2CF9..2CFB ; Sentence_Terminal # Po [3] COPTIC OLD NUBIAN FULL STOP..COPTIC OLD NUBIAN INDIRECT QUESTION MARK
2E2E ; Sentence_Terminal # Po REVERSED QUESTION MARK
2E3C ; Sentence_Terminal # Po STENOGRAPHIC FULL STOP
2E53..2E54 ; Sentence_Terminal # Po [2] MEDIEVAL EXCLAMATION MARK..MEDIEVAL QUESTION MARK
@@ -1484,6 +1567,8 @@ A9C8..A9C9 ; Sentence_Terminal # Po [2] JAVANESE PADA LINGSA..JAVANESE PADA
AA5D..AA5F ; Sentence_Terminal # Po [3] CHAM PUNCTUATION DANDA..CHAM PUNCTUATION TRIPLE DANDA
AAF0..AAF1 ; Sentence_Terminal # Po [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM
ABEB ; Sentence_Terminal # Po MEETEI MAYEK CHEIKHEI
+FE12 ; Sentence_Terminal # Po PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP
+FE15..FE16 ; Sentence_Terminal # Po [2] PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK..PRESENTATION FORM FOR VERTICAL QUESTION MARK
FE52 ; Sentence_Terminal # Po SMALL FULL STOP
FE56..FE57 ; Sentence_Terminal # Po [2] SMALL QUESTION MARK..SMALL EXCLAMATION MARK
FF01 ; Sentence_Terminal # Po FULLWIDTH EXCLAMATION MARK
@@ -1502,6 +1587,7 @@ FF61 ; Sentence_Terminal # Po HALFWIDTH IDEOGRAPHIC FULL STOP
11238..11239 ; Sentence_Terminal # Po [2] KHOJKI DANDA..KHOJKI DOUBLE DANDA
1123B..1123C ; Sentence_Terminal # Po [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK
112A9 ; Sentence_Terminal # Po MULTANI SECTION MARK
+113D4..113D5 ; Sentence_Terminal # Po [2] TULU-TIGALARI DANDA..TULU-TIGALARI DOUBLE DANDA
1144B..1144C ; Sentence_Terminal # Po [2] NEWA DANDA..NEWA DOUBLE DANDA
115C2..115C3 ; Sentence_Terminal # Po [2] SIDDHAM DANDA..SIDDHAM DOUBLE DANDA
115C9..115D7 ; Sentence_Terminal # Po [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
@@ -1518,11 +1604,12 @@ FF61 ; Sentence_Terminal # Po HALFWIDTH IDEOGRAPHIC FULL STOP
16AF5 ; Sentence_Terminal # Po BASSA VAH FULL STOP
16B37..16B38 ; Sentence_Terminal # Po [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB
16B44 ; Sentence_Terminal # Po PAHAWH HMONG SIGN XAUS
+16D6E..16D6F ; Sentence_Terminal # Po [2] KIRAT RAI DANDA..KIRAT RAI DOUBLE DANDA
16E98 ; Sentence_Terminal # Po MEDEFAIDRIN FULL STOP
1BC9F ; Sentence_Terminal # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP
1DA88 ; Sentence_Terminal # Po SIGNWRITING FULL STOP
-# Total code points: 156
+# Total code points: 170
# ================================================
@@ -1640,8 +1727,8 @@ E0100..E01EF ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION S
239B..23B3 ; Pattern_Syntax # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
23B4..23DB ; Pattern_Syntax # So [40] TOP SQUARE BRACKET..FUSE
23DC..23E1 ; Pattern_Syntax # Sm [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
-23E2..2426 ; Pattern_Syntax # So [69] WHITE TRAPEZIUM..SYMBOL FOR SUBSTITUTE FORM TWO
-2427..243F ; Pattern_Syntax # Cn [25] <reserved-2427>..<reserved-243F>
+23E2..2429 ; Pattern_Syntax # So [72] WHITE TRAPEZIUM..SYMBOL FOR DELETE MEDIUM SHADE FORM
+242A..243F ; Pattern_Syntax # Cn [22] <reserved-242A>..<reserved-243F>
2440..244A ; Pattern_Syntax # So [11] OCR HOOK..OCR DOUBLE BACKSLASH
244B..245F ; Pattern_Syntax # Cn [21] <reserved-244B>..<reserved-245F>
2500..25B6 ; Pattern_Syntax # So [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE
@@ -1824,4 +1911,18 @@ FE45..FE46 ; Pattern_Syntax # Po [2] SESAME DOT..WHITE SESAME DOT
# Total code points: 26
+# ================================================
+
+0654..0655 ; Modifier_Combining_Mark # Mn [2] ARABIC HAMZA ABOVE..ARABIC HAMZA BELOW
+0658 ; Modifier_Combining_Mark # Mn ARABIC MARK NOON GHUNNA
+06DC ; Modifier_Combining_Mark # Mn ARABIC SMALL HIGH SEEN
+06E3 ; Modifier_Combining_Mark # Mn ARABIC SMALL LOW SEEN
+06E7..06E8 ; Modifier_Combining_Mark # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+08CA..08CB ; Modifier_Combining_Mark # Mn [2] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH YEH BARREE WITH TWO DOTS BELOW
+08CD..08CF ; Modifier_Combining_Mark # Mn [3] ARABIC SMALL HIGH ZAH..ARABIC LARGE ROUND DOT BELOW
+08D3 ; Modifier_Combining_Mark # Mn ARABIC SMALL LOW WAW
+08F3 ; Modifier_Combining_Mark # Mn ARABIC SMALL HIGH WAW
+
+# Total code points: 14
+
# EOF
diff --git a/Master/texmf-dist/tex/generic/unicode-data/ScriptExtensions.txt b/Master/texmf-dist/tex/generic/unicode-data/ScriptExtensions.txt
index 23141fb8241..140901a872c 100644
--- a/Master/texmf-dist/tex/generic/unicode-data/ScriptExtensions.txt
+++ b/Master/texmf-dist/tex/generic/unicode-data/ScriptExtensions.txt
@@ -1,8 +1,8 @@
-# ScriptExtensions-15.1.0.txt
-# Date: 2023-02-01, 23:02:24 GMT
-# © 2023 Unicode®, Inc.
+# ScriptExtensions-16.0.0.txt
+# Date: 2024-07-30, 19:38:00 GMT
+# © 2024 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
-# For terms of use, see https://www.unicode.org/terms_of_use.html
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
@@ -21,615 +21,213 @@
# values in that set is not material, but for stability in presentation
# it is given here as alphabetical.
#
-# The Script_Extensions values are presented in sorted order in the file.
-# They are sorted first by the number of Script property values in their sets,
-# and then alphabetically by first differing Script property value.
-#
-# Following each distinct Script_Extensions value is the list of code
-# points associated with that value, listed in code point order.
-#
# All code points not explicitly listed for Script_Extensions
-# have as their value the corresponding Script property value
+# have as their value the corresponding Script property value.
#
# @missing: 0000..10FFFF; <script>
-
-# ================================================
-
-# Property: Script_Extensions
-
-# ================================================
-
-# Script_Extensions=Beng
-
-1CF7 ; Beng # Mc VEDIC SIGN ATIKRAMA
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Deva
-
-1CD1 ; Deva # Mn VEDIC TONE SHARA
-1CD4 ; Deva # Mn VEDIC SIGN YAJURVEDIC MIDLINE SVARITA
-1CDB ; Deva # Mn VEDIC TONE TRIPLE SVARITA
-1CDE..1CDF ; Deva # Mn [2] VEDIC TONE TWO DOTS BELOW..VEDIC TONE THREE DOTS BELOW
-1CE2..1CE8 ; Deva # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
-1CEB..1CEC ; Deva # Lo [2] VEDIC SIGN ANUSVARA VAMAGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
-1CEE..1CF1 ; Deva # Lo [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA
-
-# Total code points: 18
-
-# ================================================
-
-# Script_Extensions=Dupl
-
-1BCA0..1BCA3 ; Dupl # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
-
-# Total code points: 4
-
-# ================================================
-
-# Script_Extensions=Grek
-
-0342 ; Grek # Mn COMBINING GREEK PERISPOMENI
-0345 ; Grek # Mn COMBINING GREEK YPOGEGRAMMENI
-1DC0..1DC1 ; Grek # Mn [2] COMBINING DOTTED GRAVE ACCENT..COMBINING DOTTED ACUTE ACCENT
-
-# Total code points: 4
-
-# ================================================
-
-# Script_Extensions=Hani
-
-3006 ; Hani # Lo IDEOGRAPHIC CLOSING MARK
-303E..303F ; Hani # So [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE
-3190..3191 ; Hani # So [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
-3192..3195 ; Hani # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
-3196..319F ; Hani # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
-31C0..31E3 ; Hani # So [36] CJK STROKE T..CJK STROKE Q
-3220..3229 ; Hani # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
-322A..3247 ; Hani # So [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO
-3280..3289 ; Hani # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
-328A..32B0 ; Hani # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
-32C0..32CB ; Hani # So [12] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
-32FF ; Hani # So SQUARE ERA NAME REIWA
-3358..3370 ; Hani # So [25] IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO..IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
-337B..337F ; Hani # So [5] SQUARE ERA NAME HEISEI..SQUARE CORPORATION
-33E0..33FE ; Hani # So [31] IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE..IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
-1D360..1D371 ; Hani # No [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
-1F250..1F251 ; Hani # So [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
-
-# Total code points: 238
-
-# ================================================
-
-# Script_Extensions=Latn
-
-0363..036F ; Latn # Mn [13] COMBINING LATIN SMALL LETTER A..COMBINING LATIN SMALL LETTER X
-
-# Total code points: 13
-
-# ================================================
-
-# Script_Extensions=Nand
-
-1CFA ; Nand # Lo VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Syrc
-
-1DFA ; Syrc # Mn COMBINING DOT BELOW LEFT
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Arab Copt
-
-102E0 ; Arab Copt # Mn COPTIC EPACT THOUSANDS MARK
-102E1..102FB ; Arab Copt # No [27] COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED
-
-# Total code points: 28
-
-# ================================================
-
-# Script_Extensions=Arab Nkoo
-
-FD3E ; Arab Nkoo # Pe ORNATE LEFT PARENTHESIS
-FD3F ; Arab Nkoo # Ps ORNATE RIGHT PARENTHESIS
-
-# Total code points: 2
-
-# ================================================
-
-# Script_Extensions=Arab Rohg
-
-06D4 ; Arab Rohg # Po ARABIC FULL STOP
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Arab Syrc
-
-064B..0655 ; Arab Syrc # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW
-0670 ; Arab Syrc # Mn ARABIC LETTER SUPERSCRIPT ALEF
-
-# Total code points: 12
-
-# ================================================
-
-# Script_Extensions=Arab Thaa
-
-FDF2 ; Arab Thaa # Lo ARABIC LIGATURE ALLAH ISOLATED FORM
-FDFD ; Arab Thaa # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
-
-# Total code points: 2
-
-# ================================================
-
-# Script_Extensions=Beng Deva
-
-1CD5..1CD6 ; Beng Deva # Mn [2] VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA..VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA
-1CD8 ; Beng Deva # Mn VEDIC TONE CANDRA BELOW
-1CE1 ; Beng Deva # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
-1CEA ; Beng Deva # Lo VEDIC SIGN ANUSVARA BAHIRGOMUKHA
-1CED ; Beng Deva # Mn VEDIC SIGN TIRYAK
-1CF5..1CF6 ; Beng Deva # Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA
-A8F1 ; Beng Deva # Mn COMBINING DEVANAGARI SIGN AVAGRAHA
-
-# Total code points: 9
-
-# ================================================
-
-# Script_Extensions=Bopo Hani
-
-302A..302D ; Bopo Hani # Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
-
-# Total code points: 4
-
-# ================================================
-
-# Script_Extensions=Bugi Java
-
-A9CF ; Bugi Java # Lm JAVANESE PANGRANGKEP
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Cprt Linb
-
-10102 ; Cprt Linb # Po AEGEAN CHECK MARK
-10137..1013F ; Cprt Linb # So [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
-
-# Total code points: 10
-
-# ================================================
-
-# Script_Extensions=Cyrl Glag
-
-0484 ; Cyrl Glag # Mn COMBINING CYRILLIC PALATALIZATION
-0487 ; Cyrl Glag # Mn COMBINING CYRILLIC POKRYTIE
-2E43 ; Cyrl Glag # Po DASH WITH LEFT UPTURN
-A66F ; Cyrl Glag # Mn COMBINING CYRILLIC VZMET
-
-# Total code points: 4
-
-# ================================================
-
-# Script_Extensions=Cyrl Latn
-
-0485..0486 ; Cyrl Latn # Mn [2] COMBINING CYRILLIC DASIA PNEUMATA..COMBINING CYRILLIC PSILI PNEUMATA
-
-# Total code points: 2
-
-# ================================================
-
-# Script_Extensions=Cyrl Perm
-
-0483 ; Cyrl Perm # Mn COMBINING CYRILLIC TITLO
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Cyrl Syrc
-
-1DF8 ; Cyrl Syrc # Mn COMBINING DOT ABOVE LEFT
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Deva Gran
-
-1CD3 ; Deva Gran # Po VEDIC SIGN NIHSHVASA
-1CF3 ; Deva Gran # Lo VEDIC SIGN ROTATED ARDHAVISARGA
-1CF8..1CF9 ; Deva Gran # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
-
-# Total code points: 4
-
-# ================================================
-
-# Script_Extensions=Deva Nand
-
-1CE9 ; Deva Nand # Lo VEDIC SIGN ANUSVARA ANTARGOMUKHA
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Deva Shrd
-
-1CD7 ; Deva Shrd # Mn VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA
-1CD9 ; Deva Shrd # Mn VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER
-1CDC..1CDD ; Deva Shrd # Mn [2] VEDIC TONE KATHAKA ANUDATTA..VEDIC TONE DOT BELOW
-1CE0 ; Deva Shrd # Mn VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
-
-# Total code points: 5
-
-# ================================================
-
-# Script_Extensions=Deva Taml
-
-A8F3 ; Deva Taml # Lo DEVANAGARI SIGN CANDRABINDU VIRAMA
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Geor Latn
-
-10FB ; Geor Latn # Po GEORGIAN PARAGRAPH SEPARATOR
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Gran Taml
-
-0BE6..0BEF ; Gran Taml # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
-0BF0..0BF2 ; Gran Taml # No [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
-0BF3 ; Gran Taml # So TAMIL DAY SIGN
-11301 ; Gran Taml # Mn GRANTHA SIGN CANDRABINDU
-11303 ; Gran Taml # Mc GRANTHA SIGN VISARGA
-1133B..1133C ; Gran Taml # Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
-11FD0..11FD1 ; Gran Taml # No [2] TAMIL FRACTION ONE QUARTER..TAMIL FRACTION ONE HALF-1
-11FD3 ; Gran Taml # No TAMIL FRACTION THREE QUARTERS
-
-# Total code points: 21
-
-# ================================================
-
-# Script_Extensions=Gujr Khoj
-
-0AE6..0AEF ; Gujr Khoj # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
-
-# Total code points: 10
-
-# ================================================
-
-# Script_Extensions=Guru Mult
-
-0A66..0A6F ; Guru Mult # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
-
-# Total code points: 10
-
-# ================================================
-
-# Script_Extensions=Hani Latn
-
-A700..A707 ; Hani Latn # Sk [8] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER CHINESE TONE YANG RU
-
-# Total code points: 8
-
-# ================================================
-
-# Script_Extensions=Hira Kana
-
-3031..3035 ; Hira Kana # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
-3099..309A ; Hira Kana # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-309B..309C ; Hira Kana # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-30A0 ; Hira Kana # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN
-30FC ; Hira Kana # Lm KATAKANA-HIRAGANA PROLONGED SOUND MARK
-FF70 ; Hira Kana # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
-FF9E..FF9F ; Hira Kana # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-
-# Total code points: 14
-
-# ================================================
-
-# Script_Extensions=Knda Nand
-
-0CE6..0CEF ; Knda Nand # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
-
-# Total code points: 10
-
-# ================================================
-
-# Script_Extensions=Latn Mong
-
-202F ; Latn Mong # Zs NARROW NO-BREAK SPACE
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Mani Ougr
-
-10AF2 ; Mani Ougr # Po MANICHAEAN PUNCTUATION DOUBLE DOT WITHIN DOT
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Mong Phag
-
-1802..1803 ; Mong Phag # Po [2] MONGOLIAN COMMA..MONGOLIAN FULL STOP
-1805 ; Mong Phag # Po MONGOLIAN FOUR DOTS
-
-# Total code points: 3
-
-# ================================================
-
-# Script_Extensions=Arab Syrc Thaa
-
-061C ; Arab Syrc Thaa # Cf ARABIC LETTER MARK
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Arab Thaa Yezi
-
-0660..0669 ; Arab Thaa Yezi # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
-
-# Total code points: 10
-
-# ================================================
-
-# Script_Extensions=Beng Cakm Sylo
-
-09E6..09EF ; Beng Cakm Sylo # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
-
-# Total code points: 10
-
-# ================================================
-
-# Script_Extensions=Cakm Mymr Tale
-
-1040..1049 ; Cakm Mymr Tale # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
-
-# Total code points: 10
-
-# ================================================
-
-# Script_Extensions=Cpmn Cprt Linb
-
-10100..10101 ; Cpmn Cprt Linb # Po [2] AEGEAN WORD SEPARATOR LINE..AEGEAN WORD SEPARATOR DOT
-
-# Total code points: 2
-
-# ================================================
-
-# Script_Extensions=Cprt Lina Linb
-
-10107..10133 ; Cprt Lina Linb # No [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
-
-# Total code points: 45
-
-# ================================================
-
-# Script_Extensions=Deva Gran Knda
-
-1CF4 ; Deva Gran Knda # Mn VEDIC TONE CANDRA ABOVE
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Deva Gran Latn
-
-20F0 ; Deva Gran Latn # Mn COMBINING ASTERISK ABOVE
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Hani Hira Kana
-
-303C ; Hani Hira Kana # Lo MASU MARK
-303D ; Hani Hira Kana # Po PART ALTERNATION MARK
-
-# Total code points: 2
-
-# ================================================
-
-# Script_Extensions=Kali Latn Mymr
-
-A92E ; Kali Latn Mymr # Po KAYAH LI SIGN CWI
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Beng Deva Gran Knda
-
-1CD0 ; Beng Deva Gran Knda # Mn VEDIC TONE KARSHANA
-1CD2 ; Beng Deva Gran Knda # Mn VEDIC TONE PRENKHA
-
-# Total code points: 2
-
-# ================================================
-
-# Script_Extensions=Buhd Hano Tagb Tglg
-
-1735..1736 ; Buhd Hano Tagb Tglg # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
-
-# Total code points: 2
-
-# ================================================
-
-# Script_Extensions=Deva Dogr Kthi Mahj
-
-0966..096F ; Deva Dogr Kthi Mahj # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
-
-# Total code points: 10
-
-# ================================================
-
-# Script_Extensions=Bopo Hang Hani Hira Kana
-
-3003 ; Bopo Hang Hani Hira Kana # Po DITTO MARK
-3013 ; Bopo Hang Hani Hira Kana # So GETA MARK
-301C ; Bopo Hang Hani Hira Kana # Pd WAVE DASH
-301D ; Bopo Hang Hani Hira Kana # Ps REVERSED DOUBLE PRIME QUOTATION MARK
-301E..301F ; Bopo Hang Hani Hira Kana # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
-3030 ; Bopo Hang Hani Hira Kana # Pd WAVY DASH
-3037 ; Bopo Hang Hani Hira Kana # So IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
-FE45..FE46 ; Bopo Hang Hani Hira Kana # Po [2] SESAME DOT..WHITE SESAME DOT
-
-# Total code points: 10
-
-# ================================================
-
-# Script_Extensions=Arab Nkoo Rohg Syrc Thaa Yezi
-
-060C ; Arab Nkoo Rohg Syrc Thaa Yezi # Po ARABIC COMMA
-061B ; Arab Nkoo Rohg Syrc Thaa Yezi # Po ARABIC SEMICOLON
-
-# Total code points: 2
-
-# ================================================
-
-# Script_Extensions=Bopo Hang Hani Hira Kana Yiii
-
-3001..3002 ; Bopo Hang Hani Hira Kana Yiii # Po [2] IDEOGRAPHIC COMMA..IDEOGRAPHIC FULL STOP
-3008 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT ANGLE BRACKET
-3009 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT ANGLE BRACKET
-300A ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT DOUBLE ANGLE BRACKET
-300B ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT DOUBLE ANGLE BRACKET
-300C ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT CORNER BRACKET
-300D ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT CORNER BRACKET
-300E ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT WHITE CORNER BRACKET
-300F ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT WHITE CORNER BRACKET
-3010 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT BLACK LENTICULAR BRACKET
-3011 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT BLACK LENTICULAR BRACKET
-3014 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT TORTOISE SHELL BRACKET
-3015 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT TORTOISE SHELL BRACKET
-3016 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT WHITE LENTICULAR BRACKET
-3017 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT WHITE LENTICULAR BRACKET
-3018 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT WHITE TORTOISE SHELL BRACKET
-3019 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT WHITE TORTOISE SHELL BRACKET
-301A ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT WHITE SQUARE BRACKET
-301B ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT WHITE SQUARE BRACKET
-30FB ; Bopo Hang Hani Hira Kana Yiii # Po KATAKANA MIDDLE DOT
-FF61 ; Bopo Hang Hani Hira Kana Yiii # Po HALFWIDTH IDEOGRAPHIC FULL STOP
-FF62 ; Bopo Hang Hani Hira Kana Yiii # Ps HALFWIDTH LEFT CORNER BRACKET
-FF63 ; Bopo Hang Hani Hira Kana Yiii # Pe HALFWIDTH RIGHT CORNER BRACKET
-FF64..FF65 ; Bopo Hang Hani Hira Kana Yiii # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
-
-# Total code points: 26
-
-# ================================================
-
-# Script_Extensions=Deva Knda Mlym Orya Taml Telu
-
-1CDA ; Deva Knda Mlym Orya Taml Telu # Mn VEDIC TONE DOUBLE SVARITA
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Adlm Arab Nkoo Rohg Syrc Thaa Yezi
-
-061F ; Adlm Arab Nkoo Rohg Syrc Thaa Yezi # Po ARABIC QUESTION MARK
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Adlm Arab Mand Mani Ougr Phlp Rohg Sogd Syrc
-
-0640 ; Adlm Arab Mand Mani Ougr Phlp Rohg Sogd Syrc # Lm ARABIC TATWEEL
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Beng Deva Gran Knda Mlym Nand Orya Sinh Telu Tirh
-
-1CF2 ; Beng Deva Gran Knda Mlym Nand Orya Sinh Telu Tirh # Lo VEDIC SIGN ARDHAVISARGA
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh
-
-A836..A837 ; Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh # So [2] NORTH INDIC QUARTER MARK..NORTH INDIC PLACEHOLDER MARK
-A839 ; Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh # So NORTH INDIC QUANTITY MARK
-
-# Total code points: 3
-
-# ================================================
-
-# Script_Extensions=Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Taml Telu Tirh
-
-0952 ; Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Taml Telu Tirh # Mn DEVANAGARI STRESS SIGN ANUDATTA
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Shrd Sind Takr Tirh
-
-A838 ; Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Shrd Sind Takr Tirh # Sc NORTH INDIC RUPEE MARK
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Shrd Taml Telu Tirh
-
-0951 ; Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Shrd Taml Telu Tirh # Mn DEVANAGARI STRESS SIGN UDATTA
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Modi Nand Shrd Sind Takr Tirh
-
-A833..A835 ; Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Modi Nand Shrd Sind Takr Tirh # No [3] NORTH INDIC FRACTION ONE SIXTEENTH..NORTH INDIC FRACTION THREE SIXTEENTHS
-
-# Total code points: 3
-
-# ================================================
-
-# Script_Extensions=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Mlym Modi Nand Shrd Sind Takr Tirh
-
-A830..A832 ; Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Mlym Modi Nand Shrd Sind Takr Tirh # No [3] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE QUARTERS
-
-# Total code points: 3
-
-# ================================================
-
-# Script_Extensions=Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh
-
-0964 ; Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh # Po DEVANAGARI DANDA
-
-# Total code points: 1
-
-# ================================================
-
-# Script_Extensions=Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Limb Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh
-
-0965 ; Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Limb Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh # Po DEVANAGARI DOUBLE DANDA
-
-# Total code points: 1
+00B7 ; Avst Cari Copt Dupl Elba Geor Glag Gong Goth Grek Hani Latn Lydi Mahj Perm Shaw #Po MIDDLE DOT
+02BC ; Beng Cyrl Deva Latn Lisu Thai Toto #Lm MODIFIER LETTER APOSTROPHE
+02C7 ; Bopo Latn # Lm CARON
+02C9..02CB ; Bopo Latn # Lm [3] MODIFIER LETTER MACRON..MODIFIER LETTER GRAVE ACCENT
+02CD ; Latn Lisu # Lm MODIFIER LETTER LOW MACRON
+02D7 ; Latn Thai # Sk MODIFIER LETTER MINUS SIGN
+02D9 ; Bopo Latn # Sk DOT ABOVE
+0300 ; Cher Copt Cyrl Grek Latn Perm Sunu Tale #Mn COMBINING GRAVE ACCENT
+0301 ; Cher Cyrl Grek Latn Osge Sunu Tale Todr #Mn COMBINING ACUTE ACCENT
+0302 ; Cher Cyrl Latn Tfng # Mn COMBINING CIRCUMFLEX ACCENT
+0303 ; Glag Latn Sunu Syrc Thai # Mn COMBINING TILDE
+0304 ; Aghb Cher Copt Cyrl Goth Grek Latn Osge Syrc Tfng Todr #Mn COMBINING MACRON
+0305 ; Copt Elba Glag Goth Kana Latn # Mn COMBINING OVERLINE
+0306 ; Cyrl Grek Latn Perm # Mn COMBINING BREVE
+0307 ; Copt Dupl Hebr Latn Perm Syrc Tale Tfng Todr #Mn COMBINING DOT ABOVE
+0308 ; Armn Cyrl Dupl Goth Grek Hebr Latn Perm Syrc Tale #Mn COMBINING DIAERESIS
+0309 ; Latn Tfng # Mn COMBINING HOOK ABOVE
+030A ; Dupl Latn Syrc # Mn COMBINING RING ABOVE
+030B ; Cher Cyrl Latn Osge # Mn COMBINING DOUBLE ACUTE ACCENT
+030C ; Cher Latn Tale # Mn COMBINING CARON
+030D ; Latn Sunu # Mn COMBINING VERTICAL LINE ABOVE
+030E ; Ethi Latn # Mn COMBINING DOUBLE VERTICAL LINE ABOVE
+0310 ; Latn Sunu # Mn COMBINING CANDRABINDU
+0311 ; Cyrl Latn Todr # Mn COMBINING INVERTED BREVE
+0313 ; Grek Latn Perm Todr # Mn COMBINING COMMA ABOVE
+0320 ; Latn Syrc # Mn COMBINING MINUS SIGN BELOW
+0323 ; Cher Dupl Kana Latn Syrc # Mn COMBINING DOT BELOW
+0324 ; Cher Dupl Latn Syrc # Mn COMBINING DIAERESIS BELOW
+0325 ; Latn Syrc # Mn COMBINING RING BELOW
+032D ; Latn Sunu Syrc # Mn COMBINING CIRCUMFLEX ACCENT BELOW
+032E ; Latn Syrc # Mn COMBINING BREVE BELOW
+0330 ; Cher Latn Syrc # Mn COMBINING TILDE BELOW
+0331 ; Aghb Cher Goth Latn Sunu Thai # Mn COMBINING MACRON BELOW
+0342 ; Grek # Mn COMBINING GREEK PERISPOMENI
+0345 ; Grek # Mn COMBINING GREEK YPOGEGRAMMENI
+0358 ; Latn Osge # Mn COMBINING DOT ABOVE RIGHT
+035E ; Aghb Latn Todr # Mn COMBINING DOUBLE MACRON
+0363..036F ; Latn # Mn [13] COMBINING LATIN SMALL LETTER A..COMBINING LATIN SMALL LETTER X
+0374 ; Copt Grek # Lm GREEK NUMERAL SIGN
+0375 ; Copt Grek # Sk GREEK LOWER NUMERAL SIGN
+0483 ; Cyrl Perm # Mn COMBINING CYRILLIC TITLO
+0484 ; Cyrl Glag # Mn COMBINING CYRILLIC PALATALIZATION
+0485..0486 ; Cyrl Latn # Mn [2] COMBINING CYRILLIC DASIA PNEUMATA..COMBINING CYRILLIC PSILI PNEUMATA
+0487 ; Cyrl Glag # Mn COMBINING CYRILLIC POKRYTIE
+0589 ; Armn Geor Glag # Po ARMENIAN FULL STOP
+060C ; Arab Gara Nkoo Rohg Syrc Thaa Yezi #Po ARABIC COMMA
+061B ; Arab Gara Nkoo Rohg Syrc Thaa Yezi #Po ARABIC SEMICOLON
+061C ; Arab Syrc Thaa # Cf ARABIC LETTER MARK
+061F ; Adlm Arab Gara Nkoo Rohg Syrc Thaa Yezi #Po ARABIC QUESTION MARK
+0640 ; Adlm Arab Mand Mani Ougr Phlp Rohg Sogd Syrc #Lm ARABIC TATWEEL
+064B..0655 ; Arab Syrc # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW
+0660..0669 ; Arab Thaa Yezi # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
+0670 ; Arab Syrc # Mn ARABIC LETTER SUPERSCRIPT ALEF
+06D4 ; Arab Rohg # Po ARABIC FULL STOP
+0951 ; Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Shrd Taml Telu Tirh #Mn DEVANAGARI STRESS SIGN UDATTA
+0952 ; Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Taml Telu Tirh #Mn DEVANAGARI STRESS SIGN ANUDATTA
+0964 ; Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Mahj Mlym Nand Onao Orya Sind Sinh Sylo Takr Taml Telu Tirh #Po DEVANAGARI DANDA
+0965 ; Beng Deva Dogr Gong Gonm Gran Gujr Gukh Guru Knda Limb Mahj Mlym Nand Onao Orya Sind Sinh Sylo Takr Taml Telu Tirh #Po DEVANAGARI DOUBLE DANDA
+0966..096F ; Deva Dogr Kthi Mahj # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
+09E6..09EF ; Beng Cakm Sylo # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
+0A66..0A6F ; Guru Mult # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
+0AE6..0AEF ; Gujr Khoj # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
+0BE6..0BEF ; Gran Taml # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
+0BF0..0BF2 ; Gran Taml # No [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
+0BF3 ; Gran Taml # So TAMIL DAY SIGN
+0CE6..0CEF ; Knda Nand Tutg # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
+1040..1049 ; Cakm Mymr Tale # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
+10FB ; Geor Glag Latn # Po GEORGIAN PARAGRAPH SEPARATOR
+16EB..16ED ; Runr # Po [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION
+1735..1736 ; Buhd Hano Tagb Tglg # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
+1802..1803 ; Mong Phag # Po [2] MONGOLIAN COMMA..MONGOLIAN FULL STOP
+1805 ; Mong Phag # Po MONGOLIAN FOUR DOTS
+1CD0 ; Beng Deva Gran Knda # Mn VEDIC TONE KARSHANA
+1CD1 ; Deva # Mn VEDIC TONE SHARA
+1CD2 ; Beng Deva Gran Knda # Mn VEDIC TONE PRENKHA
+1CD3 ; Deva Gran Knda # Po VEDIC SIGN NIHSHVASA
+1CD4 ; Deva # Mn VEDIC SIGN YAJURVEDIC MIDLINE SVARITA
+1CD5..1CD6 ; Beng Deva # Mn [2] VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA..VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA
+1CD7 ; Deva Shrd # Mn VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA
+1CD8 ; Beng Deva # Mn VEDIC TONE CANDRA BELOW
+1CD9 ; Deva Shrd # Mn VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER
+1CDA ; Deva Knda Mlym Orya Taml Telu # Mn VEDIC TONE DOUBLE SVARITA
+1CDB ; Deva # Mn VEDIC TONE TRIPLE SVARITA
+1CDC..1CDD ; Deva Shrd # Mn [2] VEDIC TONE KATHAKA ANUDATTA..VEDIC TONE DOT BELOW
+1CDE..1CDF ; Deva # Mn [2] VEDIC TONE TWO DOTS BELOW..VEDIC TONE THREE DOTS BELOW
+1CE0 ; Deva Shrd # Mn VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
+1CE1 ; Beng Deva # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
+1CE2..1CE8 ; Deva # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
+1CE9 ; Deva Nand # Lo VEDIC SIGN ANUSVARA ANTARGOMUKHA
+1CEA ; Beng Deva # Lo VEDIC SIGN ANUSVARA BAHIRGOMUKHA
+1CEB..1CEC ; Deva # Lo [2] VEDIC SIGN ANUSVARA VAMAGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
+1CED ; Beng Deva # Mn VEDIC SIGN TIRYAK
+1CEE..1CF1 ; Deva # Lo [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA
+1CF2 ; Beng Deva Gran Knda Mlym Nand Orya Sinh Telu Tirh Tutg #Lo VEDIC SIGN ARDHAVISARGA
+1CF3 ; Deva Gran # Lo VEDIC SIGN ROTATED ARDHAVISARGA
+1CF4 ; Deva Gran Knda Tutg # Mn VEDIC TONE CANDRA ABOVE
+1CF5..1CF6 ; Beng Deva # Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA
+1CF7 ; Beng # Mc VEDIC SIGN ATIKRAMA
+1CF8..1CF9 ; Deva Gran # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
+1CFA ; Nand # Lo VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA
+1DC0..1DC1 ; Grek # Mn [2] COMBINING DOTTED GRAVE ACCENT..COMBINING DOTTED ACUTE ACCENT
+1DF8 ; Cyrl Latn Syrc # Mn COMBINING DOT ABOVE LEFT
+1DFA ; Syrc # Mn COMBINING DOT BELOW LEFT
+202F ; Latn Mong Phag # Zs NARROW NO-BREAK SPACE
+204F ; Adlm Arab # Po REVERSED SEMICOLON
+205A ; Cari Geor Glag Hung Lyci Orkh # Po TWO DOT PUNCTUATION
+205D ; Cari Grek Hung Mero # Po TRICOLON
+20F0 ; Deva Gran Latn # Mn COMBINING ASTERISK ABOVE
+2E17 ; Copt Latn # Pd DOUBLE OBLIQUE HYPHEN
+2E30 ; Avst Orkh # Po RING POINT
+2E31 ; Avst Cari Geor Hung Kthi Lydi Samr #Po WORD SEPARATOR MIDDLE DOT
+2E3C ; Dupl # Po STENOGRAPHIC FULL STOP
+2E41 ; Adlm Arab Hung # Po REVERSED COMMA
+2E43 ; Cyrl Glag # Po DASH WITH LEFT UPTURN
+2FF0..2FFF ; Hani Tang # So [16] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER ROTATION
+3001 ; Bopo Hang Hani Hira Kana Mong Yiii #Po IDEOGRAPHIC COMMA
+3002 ; Bopo Hang Hani Hira Kana Mong Phag Yiii #Po IDEOGRAPHIC FULL STOP
+3003 ; Bopo Hang Hani Hira Kana # Po DITTO MARK
+3006 ; Hani # Lo IDEOGRAPHIC CLOSING MARK
+3008 ; Bopo Hang Hani Hira Kana Mong Tibt Yiii #Ps LEFT ANGLE BRACKET
+3009 ; Bopo Hang Hani Hira Kana Mong Tibt Yiii #Pe RIGHT ANGLE BRACKET
+300A ; Bopo Hang Hani Hira Kana Lisu Mong Tibt Yiii #Ps LEFT DOUBLE ANGLE BRACKET
+300B ; Bopo Hang Hani Hira Kana Lisu Mong Tibt Yiii #Pe RIGHT DOUBLE ANGLE BRACKET
+300C ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT CORNER BRACKET
+300D ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT CORNER BRACKET
+300E ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT WHITE CORNER BRACKET
+300F ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT WHITE CORNER BRACKET
+3010 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT BLACK LENTICULAR BRACKET
+3011 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT BLACK LENTICULAR BRACKET
+3013 ; Bopo Hang Hani Hira Kana # So GETA MARK
+3014 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT TORTOISE SHELL BRACKET
+3015 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT TORTOISE SHELL BRACKET
+3016 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT WHITE LENTICULAR BRACKET
+3017 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT WHITE LENTICULAR BRACKET
+3018 ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT WHITE TORTOISE SHELL BRACKET
+3019 ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT WHITE TORTOISE SHELL BRACKET
+301A ; Bopo Hang Hani Hira Kana Yiii # Ps LEFT WHITE SQUARE BRACKET
+301B ; Bopo Hang Hani Hira Kana Yiii # Pe RIGHT WHITE SQUARE BRACKET
+301C ; Bopo Hang Hani Hira Kana # Pd WAVE DASH
+301D ; Bopo Hang Hani Hira Kana # Ps REVERSED DOUBLE PRIME QUOTATION MARK
+301E..301F ; Bopo Hang Hani Hira Kana # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
+302A..302D ; Bopo Hani # Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
+3030 ; Bopo Hang Hani Hira Kana # Pd WAVY DASH
+3031..3035 ; Hira Kana # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
+3037 ; Bopo Hang Hani Hira Kana # So IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
+303C ; Hani Hira Kana # Lo MASU MARK
+303D ; Hani Hira Kana # Po PART ALTERNATION MARK
+303E..303F ; Hani # So [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE
+3099..309A ; Hira Kana # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309B..309C ; Hira Kana # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+30A0 ; Hira Kana # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN
+30FB ; Bopo Hang Hani Hira Kana Yiii # Po KATAKANA MIDDLE DOT
+30FC ; Hira Kana # Lm KATAKANA-HIRAGANA PROLONGED SOUND MARK
+3190..3191 ; Hani # So [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
+3192..3195 ; Hani # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+3196..319F ; Hani # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+31C0..31E5 ; Hani # So [38] CJK STROKE T..CJK STROKE SZP
+31EF ; Hani Tang # So IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION
+3220..3229 ; Hani # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+322A..3247 ; Hani # So [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO
+3280..3289 ; Hani # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+328A..32B0 ; Hani # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+32C0..32CB ; Hani # So [12] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+32FF ; Hani # So SQUARE ERA NAME REIWA
+3358..3370 ; Hani # So [25] IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO..IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
+337B..337F ; Hani # So [5] SQUARE ERA NAME HEISEI..SQUARE CORPORATION
+33E0..33FE ; Hani # So [31] IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE..IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
+A66F ; Cyrl Glag # Mn COMBINING CYRILLIC VZMET
+A700..A707 ; Hani Latn # Sk [8] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER CHINESE TONE YANG RU
+A830..A832 ; Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Mlym Modi Nand Shrd Sind Takr Tirh Tutg #No [3] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE QUARTERS
+A833..A835 ; Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Modi Nand Shrd Sind Takr Tirh Tutg #No [3] NORTH INDIC FRACTION ONE SIXTEENTH..NORTH INDIC FRACTION THREE SIXTEENTHS
+A836..A837 ; Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh #So [2] NORTH INDIC QUARTER MARK..NORTH INDIC PLACEHOLDER MARK
+A838 ; Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Shrd Sind Takr Tirh #Sc NORTH INDIC RUPEE MARK
+A839 ; Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh #So NORTH INDIC QUANTITY MARK
+A8F1 ; Beng Deva Tutg # Mn COMBINING DEVANAGARI SIGN AVAGRAHA
+A8F3 ; Deva Taml # Lo DEVANAGARI SIGN CANDRABINDU VIRAMA
+A92E ; Kali Latn Mymr # Po KAYAH LI SIGN CWI
+A9CF ; Bugi Java # Lm JAVANESE PANGRANGKEP
+FD3E ; Arab Nkoo # Pe ORNATE LEFT PARENTHESIS
+FD3F ; Arab Nkoo # Ps ORNATE RIGHT PARENTHESIS
+FDF2 ; Arab Thaa # Lo ARABIC LIGATURE ALLAH ISOLATED FORM
+FDFD ; Arab Thaa # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
+FE45..FE46 ; Bopo Hang Hani Hira Kana # Po [2] SESAME DOT..WHITE SESAME DOT
+FF61 ; Bopo Hang Hani Hira Kana Yiii # Po HALFWIDTH IDEOGRAPHIC FULL STOP
+FF62 ; Bopo Hang Hani Hira Kana Yiii # Ps HALFWIDTH LEFT CORNER BRACKET
+FF63 ; Bopo Hang Hani Hira Kana Yiii # Pe HALFWIDTH RIGHT CORNER BRACKET
+FF64..FF65 ; Bopo Hang Hani Hira Kana Yiii # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
+FF70 ; Hira Kana # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF9E..FF9F ; Hira Kana # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+10100..10101 ; Cpmn Cprt Linb # Po [2] AEGEAN WORD SEPARATOR LINE..AEGEAN WORD SEPARATOR DOT
+10102 ; Cprt Linb # Po AEGEAN CHECK MARK
+10107..10133 ; Cprt Lina Linb # No [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
+10137..1013F ; Cprt Linb # So [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
+102E0 ; Arab Copt # Mn COPTIC EPACT THOUSANDS MARK
+102E1..102FB ; Arab Copt # No [27] COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED
+10AF2 ; Mani Ougr # Po MANICHAEAN PUNCTUATION DOUBLE DOT WITHIN DOT
+11301 ; Gran Taml # Mn GRANTHA SIGN CANDRABINDU
+11303 ; Gran Taml # Mc GRANTHA SIGN VISARGA
+1133B..1133C ; Gran Taml # Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
+11FD0..11FD1 ; Gran Taml # No [2] TAMIL FRACTION ONE QUARTER..TAMIL FRACTION ONE HALF-1
+11FD3 ; Gran Taml # No TAMIL FRACTION THREE QUARTERS
+1BCA0..1BCA3 ; Dupl # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
+1D360..1D371 ; Hani # No [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
+1F250..1F251 ; Hani # So [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
# EOF
diff --git a/Master/texmf-dist/tex/generic/unicode-data/Scripts.txt b/Master/texmf-dist/tex/generic/unicode-data/Scripts.txt
index 0b3f717cb20..443a6d2dd61 100644
--- a/Master/texmf-dist/tex/generic/unicode-data/Scripts.txt
+++ b/Master/texmf-dist/tex/generic/unicode-data/Scripts.txt
@@ -1,8 +1,8 @@
-# Scripts-15.1.0.txt
-# Date: 2023-07-28, 16:01:07 GMT
-# © 2023 Unicode®, Inc.
+# Scripts-16.0.0.txt
+# Date: 2024-04-30, 21:48:40 GMT
+# © 2024 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
-# For terms of use, see https://www.unicode.org/terms_of_use.html
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
@@ -224,7 +224,7 @@
239B..23B3 ; Common # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
23B4..23DB ; Common # So [40] TOP SQUARE BRACKET..FUSE
23DC..23E1 ; Common # Sm [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
-23E2..2426 ; Common # So [69] WHITE TRAPEZIUM..SYMBOL FOR SUBSTITUTE FORM TWO
+23E2..2429 ; Common # So [72] WHITE TRAPEZIUM..SYMBOL FOR DELETE MEDIUM SHADE FORM
2440..244A ; Common # So [11] OCR HOOK..OCR DOUBLE BACKSLASH
2460..249B ; Common # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
249C..24E9 ; Common # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
@@ -398,7 +398,7 @@
3190..3191 ; Common # So [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
3192..3195 ; Common # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
3196..319F ; Common # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
-31C0..31E3 ; Common # So [36] CJK STROKE T..CJK STROKE Q
+31C0..31E5 ; Common # So [38] CJK STROKE T..CJK STROKE SZP
31EF ; Common # So IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION
3220..3229 ; Common # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
322A..3247 ; Common # So [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO
@@ -522,6 +522,9 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR
101D0..101FC ; Common # So [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
102E1..102FB ; Common # No [27] COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED
1BCA0..1BCA3 ; Common # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
+1CC00..1CCEF ; Common # So [240] UP-POINTING GO-KART..OUTLINED LATIN CAPITAL LETTER Z
+1CCF0..1CCF9 ; Common # Nd [10] OUTLINED DIGIT ZERO..OUTLINED DIGIT NINE
+1CD00..1CEB3 ; Common # So [436] BLOCK OCTANT-3..BLACK RIGHT TRIANGLE CARET
1CF50..1CFC3 ; Common # So [116] ZNAMENNY NEUME KRYUK..ZNAMENNY NEUME PAUK
1D000..1D0F5 ; Common # So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
1D100..1D126 ; Common # So [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2
@@ -614,23 +617,23 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR
1F850..1F859 ; Common # So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
1F860..1F887 ; Common # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
1F890..1F8AD ; Common # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
-1F8B0..1F8B1 ; Common # So [2] ARROW POINTING UPWARDS THEN NORTH WEST..ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST
+1F8B0..1F8BB ; Common # So [12] ARROW POINTING UPWARDS THEN NORTH WEST..SOUTH WEST ARROW FROM BAR
+1F8C0..1F8C1 ; Common # So [2] LEFTWARDS ARROW FROM DOWNWARDS ARROW..RIGHTWARDS ARROW FROM DOWNWARDS ARROW
1F900..1FA53 ; Common # So [340] CIRCLED CROSS FORMEE WITH FOUR DOTS..BLACK CHESS KNIGHT-BISHOP
1FA60..1FA6D ; Common # So [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER
1FA70..1FA7C ; Common # So [13] BALLET SHOES..CRUTCH
-1FA80..1FA88 ; Common # So [9] YO-YO..FLUTE
-1FA90..1FABD ; Common # So [46] RINGED PLANET..WING
-1FABF..1FAC5 ; Common # So [7] GOOSE..PERSON WITH CROWN
-1FACE..1FADB ; Common # So [14] MOOSE..PEA POD
-1FAE0..1FAE8 ; Common # So [9] MELTING FACE..SHAKING FACE
+1FA80..1FA89 ; Common # So [10] YO-YO..HARP
+1FA8F..1FAC6 ; Common # So [56] SHOVEL..FINGERPRINT
+1FACE..1FADC ; Common # So [15] MOOSE..ROOT VEGETABLE
+1FADF..1FAE9 ; Common # So [11] SPLATTER..FACE WITH BAGS UNDER EYES
1FAF0..1FAF8 ; Common # So [9] HAND WITH INDEX FINGER AND THUMB CROSSED..RIGHTWARDS PUSHING HAND
1FB00..1FB92 ; Common # So [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK
-1FB94..1FBCA ; Common # So [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON
+1FB94..1FBEF ; Common # So [92] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..TOP LEFT JUSTIFIED LOWER RIGHT QUARTER BLACK CIRCLE
1FBF0..1FBF9 ; Common # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
E0001 ; Common # Cf LANGUAGE TAG
E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG
-# Total code points: 8306
+# Total code points: 9053
# ================================================
@@ -673,10 +676,10 @@ A770 ; Latin # Lm MODIFIER LETTER US
A771..A787 ; Latin # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
A78B..A78E ; Latin # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
A78F ; Latin # Lo LATIN LETTER SINOLOGICAL DOT
-A790..A7CA ; Latin # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+A790..A7CD ; Latin # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE
A7D0..A7D1 ; Latin # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
A7D3 ; Latin # L& LATIN SMALL LETTER DOUBLE THORN
-A7D5..A7D9 ; Latin # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+A7D5..A7DC ; Latin # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE
A7F2..A7F4 ; Latin # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
A7F5..A7F6 ; Latin # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
A7F7 ; Latin # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I
@@ -699,7 +702,7 @@ FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN
1DF0B..1DF1E ; Latin # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL
1DF25..1DF2A ; Latin # L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK
-# Total code points: 1481
+# Total code points: 1487
# ================================================
@@ -769,7 +772,7 @@ AB65 ; Greek # L& GREEK LETTER SMALL CAPITAL OMEGA
0487 ; Cyrillic # Mn COMBINING CYRILLIC POKRYTIE
0488..0489 ; Cyrillic # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
048A..052F ; Cyrillic # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER
-1C80..1C88 ; Cyrillic # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1C80..1C8A ; Cyrillic # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE
1D2B ; Cyrillic # L& CYRILLIC LETTER SMALL CAPITAL EL
1D78 ; Cyrillic # Lm MODIFIER LETTER CYRILLIC EN
2DE0..2DFF ; Cyrillic # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
@@ -788,7 +791,7 @@ FE2E..FE2F ; Cyrillic # Mn [2] COMBINING CYRILLIC TITLO LEFT HALF..COMBININ
1E030..1E06D ; Cyrillic # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
1E08F ; Cyrillic # Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-# Total code points: 506
+# Total code points: 508
# ================================================
@@ -868,7 +871,7 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU
0888 ; Arabic # Sk ARABIC RAISED ROUND DOT
0889..088E ; Arabic # Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL
0890..0891 ; Arabic # Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE
-0898..089F ; Arabic # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
+0897..089F ; Arabic # Mn [9] ARABIC PEPET..ARABIC HALF MADDA OVER MADDA
08A0..08C8 ; Arabic # Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF
08C9 ; Arabic # Lm ARABIC SMALL FARSI YEH
08CA..08E1 ; Arabic # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
@@ -886,7 +889,8 @@ FDFD..FDFF ; Arabic # So [3] ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM.
FE70..FE74 ; Arabic # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
10E60..10E7E ; Arabic # No [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS
-10EFD..10EFF ; Arabic # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
+10EC2..10EC4 ; Arabic # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW
+10EFC..10EFF ; Arabic # Mn [4] ARABIC COMBINING ALEF OVERLAY..ARABIC SMALL LOW WORD MADDA
1EE00..1EE03 ; Arabic # Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
1EE05..1EE1F ; Arabic # Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
1EE21..1EE22 ; Arabic # Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
@@ -922,7 +926,7 @@ FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LA
1EEAB..1EEBB ; Arabic # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
1EEF0..1EEF1 ; Arabic # Sm [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
-# Total code points: 1368
+# Total code points: 1373
# ================================================
@@ -1369,8 +1373,9 @@ AA7B ; Myanmar # Mc MYANMAR SIGN PAO KAREN TONE
AA7C ; Myanmar # Mn MYANMAR SIGN TAI LAING TONE-2
AA7D ; Myanmar # Mc MYANMAR SIGN TAI LAING TONE-5
AA7E..AA7F ; Myanmar # Lo [2] MYANMAR LETTER SHWE PALAUNG CHA..MYANMAR LETTER SHWE PALAUNG SHA
+116D0..116E3 ; Myanmar # Nd [20] MYANMAR PAO DIGIT ZERO..MYANMAR EASTERN PWO KAREN DIGIT NINE
-# Total code points: 223
+# Total code points: 243
# ================================================
@@ -1888,14 +1893,15 @@ A82C ; Syloti_Nagri # Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA
1B42 ; Balinese # Mn BALINESE VOWEL SIGN PEPET
1B43..1B44 ; Balinese # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
1B45..1B4C ; Balinese # Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA
+1B4E..1B4F ; Balinese # Po [2] BALINESE INVERTED CARIK SIKI..BALINESE INVERTED CARIK PAREREN
1B50..1B59 ; Balinese # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
1B5A..1B60 ; Balinese # Po [7] BALINESE PANTI..BALINESE PAMENENG
1B61..1B6A ; Balinese # So [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE
1B6B..1B73 ; Balinese # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
1B74..1B7C ; Balinese # So [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
-1B7D..1B7E ; Balinese # Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG
+1B7D..1B7F ; Balinese # Po [3] BALINESE PANTI LANTANG..BALINESE PANTI BAWAK
-# Total code points: 124
+# Total code points: 127
# ================================================
@@ -2108,8 +2114,9 @@ AADE..AADF ; Tai_Viet # Po [2] TAI VIET SYMBOL HO HOI..TAI VIET SYMBOL KOI
13440 ; Egyptian_Hieroglyphs # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
13441..13446 ; Egyptian_Hieroglyphs # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
13447..13455 ; Egyptian_Hieroglyphs # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+13460..143FA ; Egyptian_Hieroglyphs # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA
-# Total code points: 1110
+# Total code points: 5105
# ================================================
@@ -2615,7 +2622,9 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
# ================================================
11700..1171A ; Ahom # Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA
-1171D..1171F ; Ahom # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+1171D ; Ahom # Mn AHOM CONSONANT SIGN MEDIAL LA
+1171E ; Ahom # Mc AHOM CONSONANT SIGN MEDIAL RA
+1171F ; Ahom # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA
11720..11721 ; Ahom # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
11722..11725 ; Ahom # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
11726 ; Ahom # Mc AHOM VOWEL SIGN E
@@ -2949,8 +2958,9 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
16FE4 ; Khitan_Small_Script # Mn KHITAN SMALL SCRIPT FILLER
18B00..18CD5 ; Khitan_Small_Script # Lo [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5
+18CFF ; Khitan_Small_Script # Lo KHITAN SMALL SCRIPT CHARACTER-18CFF
-# Total code points: 471
+# Total code points: 472
# ================================================
@@ -3018,8 +3028,9 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
11F42 ; Kawi # Mn KAWI CONJOINER
11F43..11F4F ; Kawi # Po [13] KAWI DANDA..KAWI PUNCTUATION CLOSING SPIRAL
11F50..11F59 ; Kawi # Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE
+11F5A ; Kawi # Mn KAWI SIGN NUKTA
-# Total code points: 86
+# Total code points: 87
# ================================================
@@ -3030,4 +3041,88 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
# Total code points: 42
+# ================================================
+
+10D40..10D49 ; Garay # Nd [10] GARAY DIGIT ZERO..GARAY DIGIT NINE
+10D4A..10D4D ; Garay # Lo [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE
+10D4E ; Garay # Lm GARAY VOWEL LENGTH MARK
+10D4F ; Garay # Lo GARAY SUKUN
+10D50..10D65 ; Garay # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
+10D69..10D6D ; Garay # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK
+10D6E ; Garay # Pd GARAY HYPHEN
+10D6F ; Garay # Lm GARAY REDUPLICATION MARK
+10D70..10D85 ; Garay # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
+10D8E..10D8F ; Garay # Sm [2] GARAY PLUS SIGN..GARAY MINUS SIGN
+
+# Total code points: 69
+
+# ================================================
+
+16100..1611D ; Gurung_Khema # Lo [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA
+1611E..16129 ; Gurung_Khema # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK
+1612A..1612C ; Gurung_Khema # Mc [3] GURUNG KHEMA CONSONANT SIGN MEDIAL YA..GURUNG KHEMA CONSONANT SIGN MEDIAL HA
+1612D..1612F ; Gurung_Khema # Mn [3] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA SIGN THOLHOMA
+16130..16139 ; Gurung_Khema # Nd [10] GURUNG KHEMA DIGIT ZERO..GURUNG KHEMA DIGIT NINE
+
+# Total code points: 58
+
+# ================================================
+
+16D40..16D42 ; Kirat_Rai # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA
+16D43..16D6A ; Kirat_Rai # Lo [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU
+16D6B..16D6C ; Kirat_Rai # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT
+16D6D..16D6F ; Kirat_Rai # Po [3] KIRAT RAI SIGN YUPI..KIRAT RAI DOUBLE DANDA
+16D70..16D79 ; Kirat_Rai # Nd [10] KIRAT RAI DIGIT ZERO..KIRAT RAI DIGIT NINE
+
+# Total code points: 58
+
+# ================================================
+
+1E5D0..1E5ED ; Ol_Onal # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG
+1E5EE..1E5EF ; Ol_Onal # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR
+1E5F0 ; Ol_Onal # Lo OL ONAL SIGN HODDOND
+1E5F1..1E5FA ; Ol_Onal # Nd [10] OL ONAL DIGIT ZERO..OL ONAL DIGIT NINE
+1E5FF ; Ol_Onal # Po OL ONAL ABBREVIATION SIGN
+
+# Total code points: 44
+
+# ================================================
+
+11BC0..11BE0 ; Sunuwar # Lo [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO
+11BE1 ; Sunuwar # Po SUNUWAR SIGN PVO
+11BF0..11BF9 ; Sunuwar # Nd [10] SUNUWAR DIGIT ZERO..SUNUWAR DIGIT NINE
+
+# Total code points: 44
+
+# ================================================
+
+105C0..105F3 ; Todhri # Lo [52] TODHRI LETTER A..TODHRI LETTER OO
+
+# Total code points: 52
+
+# ================================================
+
+11380..11389 ; Tulu_Tigalari # Lo [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL
+1138B ; Tulu_Tigalari # Lo TULU-TIGALARI LETTER EE
+1138E ; Tulu_Tigalari # Lo TULU-TIGALARI LETTER AI
+11390..113B5 ; Tulu_Tigalari # Lo [38] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER LLLA
+113B7 ; Tulu_Tigalari # Lo TULU-TIGALARI SIGN AVAGRAHA
+113B8..113BA ; Tulu_Tigalari # Mc [3] TULU-TIGALARI VOWEL SIGN AA..TULU-TIGALARI VOWEL SIGN II
+113BB..113C0 ; Tulu_Tigalari # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL
+113C2 ; Tulu_Tigalari # Mc TULU-TIGALARI VOWEL SIGN EE
+113C5 ; Tulu_Tigalari # Mc TULU-TIGALARI VOWEL SIGN AI
+113C7..113CA ; Tulu_Tigalari # Mc [4] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI SIGN CANDRA ANUNASIKA
+113CC..113CD ; Tulu_Tigalari # Mc [2] TULU-TIGALARI SIGN ANUSVARA..TULU-TIGALARI SIGN VISARGA
+113CE ; Tulu_Tigalari # Mn TULU-TIGALARI SIGN VIRAMA
+113CF ; Tulu_Tigalari # Mc TULU-TIGALARI SIGN LOOPED VIRAMA
+113D0 ; Tulu_Tigalari # Mn TULU-TIGALARI CONJOINER
+113D1 ; Tulu_Tigalari # Lo TULU-TIGALARI REPHA
+113D2 ; Tulu_Tigalari # Mn TULU-TIGALARI GEMINATION MARK
+113D3 ; Tulu_Tigalari # Lo TULU-TIGALARI SIGN PLUTA
+113D4..113D5 ; Tulu_Tigalari # Po [2] TULU-TIGALARI DANDA..TULU-TIGALARI DOUBLE DANDA
+113D7..113D8 ; Tulu_Tigalari # Po [2] TULU-TIGALARI SIGN OM PUSHPIKA..TULU-TIGALARI SIGN SHRII PUSHPIKA
+113E1..113E2 ; Tulu_Tigalari # Mn [2] TULU-TIGALARI VEDIC TONE SVARITA..TULU-TIGALARI VEDIC TONE ANUDATTA
+
+# Total code points: 80
+
# EOF
diff --git a/Master/texmf-dist/tex/generic/unicode-data/SpecialCasing.txt b/Master/texmf-dist/tex/generic/unicode-data/SpecialCasing.txt
index de08450a6b9..e83aba432f4 100644
--- a/Master/texmf-dist/tex/generic/unicode-data/SpecialCasing.txt
+++ b/Master/texmf-dist/tex/generic/unicode-data/SpecialCasing.txt
@@ -1,28 +1,28 @@
-# SpecialCasing-15.1.0.txt
-# Date: 2023-01-05, 20:35:03 GMT
-# © 2023 Unicode®, Inc.
+# SpecialCasing-16.0.0.txt
+# Date: 2024-05-10, 22:49:00 GMT
+# © 2024 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
-# For terms of use, see https://www.unicode.org/terms_of_use.html
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
#
# Special Casing
#
-# This file is a supplement to the UnicodeData.txt file. It does not define any
-# properties, but rather provides additional information about the casing of
-# Unicode characters, for situations when casing incurs a change in string length
-# or is dependent on context or locale. For compatibility, the UnicodeData.txt
-# file only contains simple case mappings for characters where they are one-to-one
-# and independent of context and language. The data in this file, combined with
+# This file is a supplement to the UnicodeData.txt file. The data in this file, combined with
# the simple case mappings in UnicodeData.txt, defines the full case mappings
# Lowercase_Mapping (lc), Titlecase_Mapping (tc), and Uppercase_Mapping (uc).
+# For compatibility, the UnicodeData.txt file only contains simple case mappings
+# for characters where they are one-to-one (and independent of context and language).
+#
+# For historical reasons, this file also provides additional information about the casing
+# of Unicode characters for selected situations when casing is dependent on context or locale.
#
# Note that the preferred mechanism for defining tailored casing operations is
# the Unicode Common Locale Data Repository (CLDR). For more information, see the
# discussion of case mappings and case algorithms in the Unicode Standard.
#
-# All code points not listed in this file that do not have a simple case mappings
+# All code points not listed in this file that do not have simple case mappings
# in UnicodeData.txt map to themselves.
# ================================================================================
# Format
diff --git a/Master/texmf-dist/tex/generic/unicode-data/UnicodeData.txt b/Master/texmf-dist/tex/generic/unicode-data/UnicodeData.txt
index bdcc41850d7..64258a37395 100644
--- a/Master/texmf-dist/tex/generic/unicode-data/UnicodeData.txt
+++ b/Master/texmf-dist/tex/generic/unicode-data/UnicodeData.txt
@@ -409,7 +409,7 @@
0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;023D;;023D
-019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;A7DC;;A7DC
019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220
@@ -610,7 +610,7 @@
0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;A7AC;;A7AC
0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
-0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;A7CB;;A7CB
0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;A78D;;A78D
0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;A7AA;;A7AA
0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
@@ -2123,6 +2123,7 @@
088E;ARABIC VERTICAL TAIL;Lo;0;AL;;;;;N;;;;;
0890;ARABIC POUND MARK ABOVE;Cf;0;AN;;;;;N;;;;;
0891;ARABIC PIASTRE MARK ABOVE;Cf;0;AN;;;;;N;;;;;
+0897;ARABIC PEPET;Mn;230;NSM;;;;;N;;;;;
0898;ARABIC SMALL HIGH WORD AL-JUZ;Mn;230;NSM;;;;;N;;;;;
0899;ARABIC SMALL LOW WORD ISHMAAM;Mn;220;NSM;;;;;N;;;;;
089A;ARABIC SMALL LOW WORD IMAALA;Mn;220;NSM;;;;;N;;;;;
@@ -6213,6 +6214,8 @@
1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;;
1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;;
1B4C;BALINESE LETTER ARCHAIC JNYA;Lo;0;L;;;;;N;;;;;
+1B4E;BALINESE INVERTED CARIK SIKI;Po;0;L;;;;;N;;;;;
+1B4F;BALINESE INVERTED CARIK PAREREN;Po;0;L;;;;;N;;;;;
1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
@@ -6260,6 +6263,7 @@
1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;;
1B7D;BALINESE PANTI LANTANG;Po;0;L;;;;;N;;;;;
1B7E;BALINESE PAMADA LANTANG;Po;0;L;;;;;N;;;;;
+1B7F;BALINESE PANTI BAWAK;Po;0;L;;;;;N;;;;;
1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;;
1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;;
1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;;
@@ -6511,6 +6515,8 @@
1C86;CYRILLIC SMALL LETTER TALL HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
1C87;CYRILLIC SMALL LETTER TALL YAT;Ll;0;L;;;;;N;;;0462;;0462
1C88;CYRILLIC SMALL LETTER UNBLENDED UK;Ll;0;L;;;;;N;;;A64A;;A64A
+1C89;CYRILLIC CAPITAL LETTER TJE;Lu;0;L;;;;;N;;;;1C8A;
+1C8A;CYRILLIC SMALL LETTER TJE;Ll;0;L;;;;;N;;;1C89;;1C89
1C90;GEORGIAN MTAVRULI CAPITAL LETTER AN;Lu;0;L;;;;;N;;;;10D0;
1C91;GEORGIAN MTAVRULI CAPITAL LETTER BAN;Lu;0;L;;;;;N;;;;10D1;
1C92;GEORGIAN MTAVRULI CAPITAL LETTER GAN;Lu;0;L;;;;;N;;;;10D2;
@@ -7933,7 +7939,7 @@
226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
-226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;Y;;;;;
226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
@@ -8375,6 +8381,9 @@
2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;
2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;
+2427;SYMBOL FOR DELETE SQUARE CHECKER BOARD FORM;So;0;ON;;;;;N;;;;;
+2428;SYMBOL FOR DELETE RECTANGULAR CHECKER BOARD FORM;So;0;ON;;;;;N;;;;;
+2429;SYMBOL FOR DELETE MEDIUM SHADE FORM;So;0;ON;;;;;N;;;;;
2440;OCR HOOK;So;0;ON;;;;;N;;;;;
2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
2442;OCR FORK;So;0;ON;;;;;N;;;;;
@@ -11709,6 +11718,8 @@
31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;;
31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;;
31E3;CJK STROKE Q;So;0;ON;;;;;N;;;;;
+31E4;CJK STROKE HXG;So;0;ON;;;;;N;;;;;
+31E5;CJK STROKE SZP;So;0;ON;;;;;N;;;;;
31EF;IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION;So;0;ON;;;;;N;;;;;
31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;;
31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;;
@@ -14260,6 +14271,9 @@ A7C7;LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7C8;
A7C8;LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C7;;A7C7
A7C9;LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7CA;
A7CA;LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C9;;A7C9
+A7CB;LATIN CAPITAL LETTER RAMS HORN;Lu;0;L;;;;;N;;;;0264;
+A7CC;LATIN CAPITAL LETTER S WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A7CD;
+A7CD;LATIN SMALL LETTER S WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A7CC;;A7CC
A7D0;LATIN CAPITAL LETTER CLOSED INSULAR G;Lu;0;L;;;;;N;;;;A7D1;
A7D1;LATIN SMALL LETTER CLOSED INSULAR G;Ll;0;L;;;;;N;;;A7D0;;A7D0
A7D3;LATIN SMALL LETTER DOUBLE THORN;Ll;0;L;;;;;N;;;;;
@@ -14268,6 +14282,9 @@ A7D6;LATIN CAPITAL LETTER MIDDLE SCOTS S;Lu;0;L;;;;;N;;;;A7D7;
A7D7;LATIN SMALL LETTER MIDDLE SCOTS S;Ll;0;L;;;;;N;;;A7D6;;A7D6
A7D8;LATIN CAPITAL LETTER SIGMOID S;Lu;0;L;;;;;N;;;;A7D9;
A7D9;LATIN SMALL LETTER SIGMOID S;Ll;0;L;;;;;N;;;A7D8;;A7D8
+A7DA;LATIN CAPITAL LETTER LAMBDA;Lu;0;L;;;;;N;;;;A7DB;
+A7DB;LATIN SMALL LETTER LAMBDA;Ll;0;L;;;;;N;;;A7DA;;A7DA
+A7DC;LATIN CAPITAL LETTER LAMBDA WITH STROKE;Lu;0;L;;;;;N;;;;019B;
A7F2;MODIFIER LETTER CAPITAL C;Lm;0;L;<super> 0043;;;;N;;;;;
A7F3;MODIFIER LETTER CAPITAL F;Lm;0;L;<super> 0046;;;;N;;;;;
A7F4;MODIFIER LETTER CAPITAL Q;Lm;0;L;<super> 0051;;;;N;;;;;
@@ -18001,6 +18018,58 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
105B9;VITHKUQI SMALL LETTER XE;Ll;0;L;;;;;N;;;10592;;10592
105BB;VITHKUQI SMALL LETTER Y;Ll;0;L;;;;;N;;;10594;;10594
105BC;VITHKUQI SMALL LETTER ZE;Ll;0;L;;;;;N;;;10595;;10595
+105C0;TODHRI LETTER A;Lo;0;L;;;;;N;;;;;
+105C1;TODHRI LETTER AS;Lo;0;L;;;;;N;;;;;
+105C2;TODHRI LETTER BA;Lo;0;L;;;;;N;;;;;
+105C3;TODHRI LETTER MBA;Lo;0;L;;;;;N;;;;;
+105C4;TODHRI LETTER CA;Lo;0;L;;;;;N;;;;;
+105C5;TODHRI LETTER CHA;Lo;0;L;;;;;N;;;;;
+105C6;TODHRI LETTER DA;Lo;0;L;;;;;N;;;;;
+105C7;TODHRI LETTER NDA;Lo;0;L;;;;;N;;;;;
+105C8;TODHRI LETTER DHA;Lo;0;L;;;;;N;;;;;
+105C9;TODHRI LETTER EI;Lo;0;L;105D2 0307;;;;N;;;;;
+105CA;TODHRI LETTER E;Lo;0;L;;;;;N;;;;;
+105CB;TODHRI LETTER FA;Lo;0;L;;;;;N;;;;;
+105CC;TODHRI LETTER GA;Lo;0;L;;;;;N;;;;;
+105CD;TODHRI LETTER NGA;Lo;0;L;;;;;N;;;;;
+105CE;TODHRI LETTER GJA;Lo;0;L;;;;;N;;;;;
+105CF;TODHRI LETTER NGJA;Lo;0;L;;;;;N;;;;;
+105D0;TODHRI LETTER HA;Lo;0;L;;;;;N;;;;;
+105D1;TODHRI LETTER HJA;Lo;0;L;;;;;N;;;;;
+105D2;TODHRI LETTER I;Lo;0;L;;;;;N;;;;;
+105D3;TODHRI LETTER JA;Lo;0;L;;;;;N;;;;;
+105D4;TODHRI LETTER KA;Lo;0;L;;;;;N;;;;;
+105D5;TODHRI LETTER LA;Lo;0;L;;;;;N;;;;;
+105D6;TODHRI LETTER LLA;Lo;0;L;;;;;N;;;;;
+105D7;TODHRI LETTER MA;Lo;0;L;;;;;N;;;;;
+105D8;TODHRI LETTER NA;Lo;0;L;;;;;N;;;;;
+105D9;TODHRI LETTER NJAN;Lo;0;L;;;;;N;;;;;
+105DA;TODHRI LETTER O;Lo;0;L;;;;;N;;;;;
+105DB;TODHRI LETTER PA;Lo;0;L;;;;;N;;;;;
+105DC;TODHRI LETTER QA;Lo;0;L;;;;;N;;;;;
+105DD;TODHRI LETTER RA;Lo;0;L;;;;;N;;;;;
+105DE;TODHRI LETTER RRA;Lo;0;L;;;;;N;;;;;
+105DF;TODHRI LETTER SA;Lo;0;L;;;;;N;;;;;
+105E0;TODHRI LETTER SHA;Lo;0;L;;;;;N;;;;;
+105E1;TODHRI LETTER SHTA;Lo;0;L;;;;;N;;;;;
+105E2;TODHRI LETTER TA;Lo;0;L;;;;;N;;;;;
+105E3;TODHRI LETTER THA;Lo;0;L;;;;;N;;;;;
+105E4;TODHRI LETTER U;Lo;0;L;105DA 0307;;;;N;;;;;
+105E5;TODHRI LETTER VA;Lo;0;L;;;;;N;;;;;
+105E6;TODHRI LETTER XA;Lo;0;L;;;;;N;;;;;
+105E7;TODHRI LETTER NXA;Lo;0;L;;;;;N;;;;;
+105E8;TODHRI LETTER XHA;Lo;0;L;;;;;N;;;;;
+105E9;TODHRI LETTER NXHA;Lo;0;L;;;;;N;;;;;
+105EA;TODHRI LETTER Y;Lo;0;L;;;;;N;;;;;
+105EB;TODHRI LETTER JY;Lo;0;L;;;;;N;;;;;
+105EC;TODHRI LETTER ZA;Lo;0;L;;;;;N;;;;;
+105ED;TODHRI LETTER ZHA;Lo;0;L;;;;;N;;;;;
+105EE;TODHRI LETTER GHA;Lo;0;L;;;;;N;;;;;
+105EF;TODHRI LETTER STA;Lo;0;L;;;;;N;;;;;
+105F0;TODHRI LETTER SKAN;Lo;0;L;;;;;N;;;;;
+105F1;TODHRI LETTER KHA;Lo;0;L;;;;;N;;;;;
+105F2;TODHRI LETTER PSA;Lo;0;L;;;;;N;;;;;
+105F3;TODHRI LETTER OO;Lo;0;L;;;;;N;;;;;
10600;LINEAR A SIGN AB001;Lo;0;L;;;;;N;;;;;
10601;LINEAR A SIGN AB002;Lo;0;L;;;;;N;;;;;
10602;LINEAR A SIGN AB003;Lo;0;L;;;;;N;;;;;
@@ -19322,6 +19391,75 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
10D37;HANIFI ROHINGYA DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
10D38;HANIFI ROHINGYA DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
10D39;HANIFI ROHINGYA DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+10D40;GARAY DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+10D41;GARAY DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+10D42;GARAY DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+10D43;GARAY DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+10D44;GARAY DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+10D45;GARAY DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+10D46;GARAY DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+10D47;GARAY DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+10D48;GARAY DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+10D49;GARAY DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+10D4A;GARAY VOWEL SIGN A;Lo;0;R;;;;;N;;;;;
+10D4B;GARAY VOWEL SIGN I;Lo;0;R;;;;;N;;;;;
+10D4C;GARAY VOWEL SIGN O;Lo;0;R;;;;;N;;;;;
+10D4D;GARAY VOWEL SIGN EE;Lo;0;R;;;;;N;;;;;
+10D4E;GARAY VOWEL LENGTH MARK;Lm;0;R;;;;;N;;;;;
+10D4F;GARAY SUKUN;Lo;0;R;;;;;N;;;;;
+10D50;GARAY CAPITAL LETTER A;Lu;0;R;;;;;N;;;;10D70;
+10D51;GARAY CAPITAL LETTER CA;Lu;0;R;;;;;N;;;;10D71;
+10D52;GARAY CAPITAL LETTER MA;Lu;0;R;;;;;N;;;;10D72;
+10D53;GARAY CAPITAL LETTER KA;Lu;0;R;;;;;N;;;;10D73;
+10D54;GARAY CAPITAL LETTER BA;Lu;0;R;;;;;N;;;;10D74;
+10D55;GARAY CAPITAL LETTER JA;Lu;0;R;;;;;N;;;;10D75;
+10D56;GARAY CAPITAL LETTER SA;Lu;0;R;;;;;N;;;;10D76;
+10D57;GARAY CAPITAL LETTER WA;Lu;0;R;;;;;N;;;;10D77;
+10D58;GARAY CAPITAL LETTER LA;Lu;0;R;;;;;N;;;;10D78;
+10D59;GARAY CAPITAL LETTER GA;Lu;0;R;;;;;N;;;;10D79;
+10D5A;GARAY CAPITAL LETTER DA;Lu;0;R;;;;;N;;;;10D7A;
+10D5B;GARAY CAPITAL LETTER XA;Lu;0;R;;;;;N;;;;10D7B;
+10D5C;GARAY CAPITAL LETTER YA;Lu;0;R;;;;;N;;;;10D7C;
+10D5D;GARAY CAPITAL LETTER TA;Lu;0;R;;;;;N;;;;10D7D;
+10D5E;GARAY CAPITAL LETTER RA;Lu;0;R;;;;;N;;;;10D7E;
+10D5F;GARAY CAPITAL LETTER NYA;Lu;0;R;;;;;N;;;;10D7F;
+10D60;GARAY CAPITAL LETTER FA;Lu;0;R;;;;;N;;;;10D80;
+10D61;GARAY CAPITAL LETTER NA;Lu;0;R;;;;;N;;;;10D81;
+10D62;GARAY CAPITAL LETTER PA;Lu;0;R;;;;;N;;;;10D82;
+10D63;GARAY CAPITAL LETTER HA;Lu;0;R;;;;;N;;;;10D83;
+10D64;GARAY CAPITAL LETTER OLD KA;Lu;0;R;;;;;N;;;;10D84;
+10D65;GARAY CAPITAL LETTER OLD NA;Lu;0;R;;;;;N;;;;10D85;
+10D69;GARAY VOWEL SIGN E;Mn;230;NSM;;;;;N;;;;;
+10D6A;GARAY CONSONANT GEMINATION MARK;Mn;230;NSM;;;;;N;;;;;
+10D6B;GARAY COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
+10D6C;GARAY COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
+10D6D;GARAY CONSONANT NASALIZATION MARK;Mn;230;NSM;;;;;N;;;;;
+10D6E;GARAY HYPHEN;Pd;0;ON;;;;;N;;;;;
+10D6F;GARAY REDUPLICATION MARK;Lm;0;R;;;;;N;;;;;
+10D70;GARAY SMALL LETTER A;Ll;0;R;;;;;N;;;10D50;;10D50
+10D71;GARAY SMALL LETTER CA;Ll;0;R;;;;;N;;;10D51;;10D51
+10D72;GARAY SMALL LETTER MA;Ll;0;R;;;;;N;;;10D52;;10D52
+10D73;GARAY SMALL LETTER KA;Ll;0;R;;;;;N;;;10D53;;10D53
+10D74;GARAY SMALL LETTER BA;Ll;0;R;;;;;N;;;10D54;;10D54
+10D75;GARAY SMALL LETTER JA;Ll;0;R;;;;;N;;;10D55;;10D55
+10D76;GARAY SMALL LETTER SA;Ll;0;R;;;;;N;;;10D56;;10D56
+10D77;GARAY SMALL LETTER WA;Ll;0;R;;;;;N;;;10D57;;10D57
+10D78;GARAY SMALL LETTER LA;Ll;0;R;;;;;N;;;10D58;;10D58
+10D79;GARAY SMALL LETTER GA;Ll;0;R;;;;;N;;;10D59;;10D59
+10D7A;GARAY SMALL LETTER DA;Ll;0;R;;;;;N;;;10D5A;;10D5A
+10D7B;GARAY SMALL LETTER XA;Ll;0;R;;;;;N;;;10D5B;;10D5B
+10D7C;GARAY SMALL LETTER YA;Ll;0;R;;;;;N;;;10D5C;;10D5C
+10D7D;GARAY SMALL LETTER TA;Ll;0;R;;;;;N;;;10D5D;;10D5D
+10D7E;GARAY SMALL LETTER RA;Ll;0;R;;;;;N;;;10D5E;;10D5E
+10D7F;GARAY SMALL LETTER NYA;Ll;0;R;;;;;N;;;10D5F;;10D5F
+10D80;GARAY SMALL LETTER FA;Ll;0;R;;;;;N;;;10D60;;10D60
+10D81;GARAY SMALL LETTER NA;Ll;0;R;;;;;N;;;10D61;;10D61
+10D82;GARAY SMALL LETTER PA;Ll;0;R;;;;;N;;;10D62;;10D62
+10D83;GARAY SMALL LETTER HA;Ll;0;R;;;;;N;;;10D63;;10D63
+10D84;GARAY SMALL LETTER OLD KA;Ll;0;R;;;;;N;;;10D64;;10D64
+10D85;GARAY SMALL LETTER OLD NA;Ll;0;R;;;;;N;;;10D65;;10D65
+10D8E;GARAY PLUS SIGN;Sm;0;R;;;;;N;;;;;
+10D8F;GARAY MINUS SIGN;Sm;0;R;;;;;N;;;;;
10E60;RUMI DIGIT ONE;No;0;AN;;;1;1;N;;;;;
10E61;RUMI DIGIT TWO;No;0;AN;;;2;2;N;;;;;
10E62;RUMI DIGIT THREE;No;0;AN;;;3;3;N;;;;;
@@ -19400,6 +19538,10 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
10EAD;YEZIDI HYPHENATION MARK;Pd;0;R;;;;;N;;;;;
10EB0;YEZIDI LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
10EB1;YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE;Lo;0;R;;;;;N;;;;;
+10EC2;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW;Lo;0;AL;;;;;N;;;;;
+10EC3;ARABIC LETTER TAH WITH TWO DOTS VERTICALLY BELOW;Lo;0;AL;;;;;N;;;;;
+10EC4;ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW;Lo;0;AL;;;;;N;;;;;
+10EFC;ARABIC COMBINING ALEF OVERLAY;Mn;0;NSM;;;;;N;;;;;
10EFD;ARABIC SMALL LOW WORD SAKTA;Mn;220;NSM;;;;;N;;;;;
10EFE;ARABIC SMALL LOW WORD QASR;Mn;220;NSM;;;;;N;;;;;
10EFF;ARABIC SMALL LOW WORD MADDA;Mn;220;NSM;;;;;N;;;;;
@@ -20264,6 +20406,86 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11372;COMBINING GRANTHA LETTER NA;Mn;230;NSM;;;;;N;;;;;
11373;COMBINING GRANTHA LETTER VI;Mn;230;NSM;;;;;N;;;;;
11374;COMBINING GRANTHA LETTER PA;Mn;230;NSM;;;;;N;;;;;
+11380;TULU-TIGALARI LETTER A;Lo;0;L;;;;;N;;;;;
+11381;TULU-TIGALARI LETTER AA;Lo;0;L;;;;;N;;;;;
+11382;TULU-TIGALARI LETTER I;Lo;0;L;;;;;N;;;;;
+11383;TULU-TIGALARI LETTER II;Lo;0;L;11382 113C9;;;;N;;;;;
+11384;TULU-TIGALARI LETTER U;Lo;0;L;;;;;N;;;;;
+11385;TULU-TIGALARI LETTER UU;Lo;0;L;11384 113BB;;;;N;;;;;
+11386;TULU-TIGALARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+11387;TULU-TIGALARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+11388;TULU-TIGALARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+11389;TULU-TIGALARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+1138B;TULU-TIGALARI LETTER EE;Lo;0;L;;;;;N;;;;;
+1138E;TULU-TIGALARI LETTER AI;Lo;0;L;1138B 113C2;;;;N;;;;;
+11390;TULU-TIGALARI LETTER OO;Lo;0;L;;;;;N;;;;;
+11391;TULU-TIGALARI LETTER AU;Lo;0;L;11390 113C9;;;;N;;;;;
+11392;TULU-TIGALARI LETTER KA;Lo;0;L;;;;;N;;;;;
+11393;TULU-TIGALARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+11394;TULU-TIGALARI LETTER GA;Lo;0;L;;;;;N;;;;;
+11395;TULU-TIGALARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+11396;TULU-TIGALARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+11397;TULU-TIGALARI LETTER CA;Lo;0;L;;;;;N;;;;;
+11398;TULU-TIGALARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+11399;TULU-TIGALARI LETTER JA;Lo;0;L;;;;;N;;;;;
+1139A;TULU-TIGALARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+1139B;TULU-TIGALARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+1139C;TULU-TIGALARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+1139D;TULU-TIGALARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+1139E;TULU-TIGALARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+1139F;TULU-TIGALARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+113A0;TULU-TIGALARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+113A1;TULU-TIGALARI LETTER TA;Lo;0;L;;;;;N;;;;;
+113A2;TULU-TIGALARI LETTER THA;Lo;0;L;;;;;N;;;;;
+113A3;TULU-TIGALARI LETTER DA;Lo;0;L;;;;;N;;;;;
+113A4;TULU-TIGALARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+113A5;TULU-TIGALARI LETTER NA;Lo;0;L;;;;;N;;;;;
+113A6;TULU-TIGALARI LETTER PA;Lo;0;L;;;;;N;;;;;
+113A7;TULU-TIGALARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+113A8;TULU-TIGALARI LETTER BA;Lo;0;L;;;;;N;;;;;
+113A9;TULU-TIGALARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+113AA;TULU-TIGALARI LETTER MA;Lo;0;L;;;;;N;;;;;
+113AB;TULU-TIGALARI LETTER YA;Lo;0;L;;;;;N;;;;;
+113AC;TULU-TIGALARI LETTER RA;Lo;0;L;;;;;N;;;;;
+113AD;TULU-TIGALARI LETTER LA;Lo;0;L;;;;;N;;;;;
+113AE;TULU-TIGALARI LETTER VA;Lo;0;L;;;;;N;;;;;
+113AF;TULU-TIGALARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+113B0;TULU-TIGALARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+113B1;TULU-TIGALARI LETTER SA;Lo;0;L;;;;;N;;;;;
+113B2;TULU-TIGALARI LETTER HA;Lo;0;L;;;;;N;;;;;
+113B3;TULU-TIGALARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+113B4;TULU-TIGALARI LETTER RRA;Lo;0;L;;;;;N;;;;;
+113B5;TULU-TIGALARI LETTER LLLA;Lo;0;L;;;;;N;;;;;
+113B7;TULU-TIGALARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+113B8;TULU-TIGALARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+113B9;TULU-TIGALARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+113BA;TULU-TIGALARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+113BB;TULU-TIGALARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+113BC;TULU-TIGALARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+113BD;TULU-TIGALARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+113BE;TULU-TIGALARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+113BF;TULU-TIGALARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+113C0;TULU-TIGALARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+113C2;TULU-TIGALARI VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+113C5;TULU-TIGALARI VOWEL SIGN AI;Mc;0;L;113C2 113C2;;;;N;;;;;
+113C7;TULU-TIGALARI VOWEL SIGN OO;Mc;0;L;113C2 113B8;;;;N;;;;;
+113C8;TULU-TIGALARI VOWEL SIGN AU;Mc;0;L;113C2 113C9;;;;N;;;;;
+113C9;TULU-TIGALARI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+113CA;TULU-TIGALARI SIGN CANDRA ANUNASIKA;Mc;0;L;;;;;N;;;;;
+113CC;TULU-TIGALARI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+113CD;TULU-TIGALARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+113CE;TULU-TIGALARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+113CF;TULU-TIGALARI SIGN LOOPED VIRAMA;Mc;9;L;;;;;N;;;;;
+113D0;TULU-TIGALARI CONJOINER;Mn;9;NSM;;;;;N;;;;;
+113D1;TULU-TIGALARI REPHA;Lo;0;L;;;;;N;;;;;
+113D2;TULU-TIGALARI GEMINATION MARK;Mn;0;NSM;;;;;N;;;;;
+113D3;TULU-TIGALARI SIGN PLUTA;Lo;0;L;;;;;N;;;;;
+113D4;TULU-TIGALARI DANDA;Po;0;L;;;;;N;;;;;
+113D5;TULU-TIGALARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+113D7;TULU-TIGALARI SIGN OM PUSHPIKA;Po;0;L;;;;;N;;;;;
+113D8;TULU-TIGALARI SIGN SHRII PUSHPIKA;Po;0;L;;;;;N;;;;;
+113E1;TULU-TIGALARI VEDIC TONE SVARITA;Mn;0;NSM;;;;;N;;;;;
+113E2;TULU-TIGALARI VEDIC TONE ANUDATTA;Mn;0;NSM;;;;;N;;;;;
11400;NEWA LETTER A;Lo;0;L;;;;;N;;;;;
11401;NEWA LETTER AA;Lo;0;L;;;;;N;;;;;
11402;NEWA LETTER I;Lo;0;L;;;;;N;;;;;
@@ -20695,6 +20917,26 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
116C7;TAKRI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
116C8;TAKRI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
116C9;TAKRI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+116D0;MYANMAR PAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+116D1;MYANMAR PAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+116D2;MYANMAR PAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+116D3;MYANMAR PAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+116D4;MYANMAR PAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+116D5;MYANMAR PAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+116D6;MYANMAR PAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+116D7;MYANMAR PAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+116D8;MYANMAR PAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+116D9;MYANMAR PAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+116DA;MYANMAR EASTERN PWO KAREN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+116DB;MYANMAR EASTERN PWO KAREN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+116DC;MYANMAR EASTERN PWO KAREN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+116DD;MYANMAR EASTERN PWO KAREN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+116DE;MYANMAR EASTERN PWO KAREN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+116DF;MYANMAR EASTERN PWO KAREN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+116E0;MYANMAR EASTERN PWO KAREN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+116E1;MYANMAR EASTERN PWO KAREN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+116E2;MYANMAR EASTERN PWO KAREN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+116E3;MYANMAR EASTERN PWO KAREN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
11700;AHOM LETTER KA;Lo;0;L;;;;;N;;;;;
11701;AHOM LETTER KHA;Lo;0;L;;;;;N;;;;;
11702;AHOM LETTER NGA;Lo;0;L;;;;;N;;;;;
@@ -20723,7 +20965,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11719;AHOM LETTER JHA;Lo;0;L;;;;;N;;;;;
1171A;AHOM LETTER ALTERNATE BA;Lo;0;L;;;;;N;;;;;
1171D;AHOM CONSONANT SIGN MEDIAL LA;Mn;0;NSM;;;;;N;;;;;
-1171E;AHOM CONSONANT SIGN MEDIAL RA;Mn;0;NSM;;;;;N;;;;;
+1171E;AHOM CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;;
1171F;AHOM CONSONANT SIGN MEDIAL LIGATING RA;Mn;0;NSM;;;;;N;;;;;
11720;AHOM VOWEL SIGN A;Mc;0;L;;;;;N;;;;;
11721;AHOM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
@@ -21279,6 +21521,50 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11B07;DEVANAGARI SIGN WESTERN NINE-LIKE BHALE;Po;0;L;;;;;N;;;;;
11B08;DEVANAGARI SIGN REVERSED NINE-LIKE BHALE;Po;0;L;;;;;N;;;;;
11B09;DEVANAGARI SIGN MINDU;Po;0;L;;;;;N;;;;;
+11BC0;SUNUWAR LETTER DEVI;Lo;0;L;;;;;N;;;;;
+11BC1;SUNUWAR LETTER TASLA;Lo;0;L;;;;;N;;;;;
+11BC2;SUNUWAR LETTER EKO;Lo;0;L;;;;;N;;;;;
+11BC3;SUNUWAR LETTER IMAR;Lo;0;L;;;;;N;;;;;
+11BC4;SUNUWAR LETTER REU;Lo;0;L;;;;;N;;;;;
+11BC5;SUNUWAR LETTER UTTHI;Lo;0;L;;;;;N;;;;;
+11BC6;SUNUWAR LETTER KIK;Lo;0;L;;;;;N;;;;;
+11BC7;SUNUWAR LETTER MA;Lo;0;L;;;;;N;;;;;
+11BC8;SUNUWAR LETTER APPHO;Lo;0;L;;;;;N;;;;;
+11BC9;SUNUWAR LETTER PIP;Lo;0;L;;;;;N;;;;;
+11BCA;SUNUWAR LETTER GIL;Lo;0;L;;;;;N;;;;;
+11BCB;SUNUWAR LETTER HAMSO;Lo;0;L;;;;;N;;;;;
+11BCC;SUNUWAR LETTER CARMI;Lo;0;L;;;;;N;;;;;
+11BCD;SUNUWAR LETTER NAH;Lo;0;L;;;;;N;;;;;
+11BCE;SUNUWAR LETTER BUR;Lo;0;L;;;;;N;;;;;
+11BCF;SUNUWAR LETTER JYAH;Lo;0;L;;;;;N;;;;;
+11BD0;SUNUWAR LETTER LOACHA;Lo;0;L;;;;;N;;;;;
+11BD1;SUNUWAR LETTER OTTHI;Lo;0;L;;;;;N;;;;;
+11BD2;SUNUWAR LETTER SHYELE;Lo;0;L;;;;;N;;;;;
+11BD3;SUNUWAR LETTER VARCA;Lo;0;L;;;;;N;;;;;
+11BD4;SUNUWAR LETTER YAT;Lo;0;L;;;;;N;;;;;
+11BD5;SUNUWAR LETTER AVA;Lo;0;L;;;;;N;;;;;
+11BD6;SUNUWAR LETTER AAL;Lo;0;L;;;;;N;;;;;
+11BD7;SUNUWAR LETTER DONGA;Lo;0;L;;;;;N;;;;;
+11BD8;SUNUWAR LETTER THARI;Lo;0;L;;;;;N;;;;;
+11BD9;SUNUWAR LETTER PHAR;Lo;0;L;;;;;N;;;;;
+11BDA;SUNUWAR LETTER NGAR;Lo;0;L;;;;;N;;;;;
+11BDB;SUNUWAR LETTER KHA;Lo;0;L;;;;;N;;;;;
+11BDC;SUNUWAR LETTER SHYER;Lo;0;L;;;;;N;;;;;
+11BDD;SUNUWAR LETTER CHELAP;Lo;0;L;;;;;N;;;;;
+11BDE;SUNUWAR LETTER TENTU;Lo;0;L;;;;;N;;;;;
+11BDF;SUNUWAR LETTER THELE;Lo;0;L;;;;;N;;;;;
+11BE0;SUNUWAR LETTER KLOKO;Lo;0;L;;;;;N;;;;;
+11BE1;SUNUWAR SIGN PVO;Po;0;L;;;;;N;;;;;
+11BF0;SUNUWAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+11BF1;SUNUWAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+11BF2;SUNUWAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+11BF3;SUNUWAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+11BF4;SUNUWAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+11BF5;SUNUWAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+11BF6;SUNUWAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+11BF7;SUNUWAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+11BF8;SUNUWAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+11BF9;SUNUWAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
11C00;BHAIKSUKI LETTER A;Lo;0;L;;;;;N;;;;;
11C01;BHAIKSUKI LETTER AA;Lo;0;L;;;;;N;;;;;
11C02;BHAIKSUKI LETTER I;Lo;0;L;;;;;N;;;;;
@@ -21693,6 +21979,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
11F57;KAWI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
11F58;KAWI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
11F59;KAWI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+11F5A;KAWI SIGN NUKTA;Mn;0;NSM;;;;;N;;;;;
11FB0;LISU LETTER YHA;Lo;0;L;;;;;N;;;;;
11FC0;TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH;No;0;L;;;;1/320;N;;;;;
11FC1;TAMIL FRACTION ONE ONE-HUNDRED-AND-SIXTIETH;No;0;L;;;;1/160;N;;;;;
@@ -24188,6 +24475,4001 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
13453;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP AND END;Mn;0;NSM;;;;;N;;;;;
13454;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM AND END;Mn;0;NSM;;;;;N;;;;;
13455;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED;Mn;0;NSM;;;;;N;;;;;
+13460;EGYPTIAN HIEROGLYPH-13460;Lo;0;L;;;;;N;;;;;
+13461;EGYPTIAN HIEROGLYPH-13461;Lo;0;L;;;;;N;;;;;
+13462;EGYPTIAN HIEROGLYPH-13462;Lo;0;L;;;;;N;;;;;
+13463;EGYPTIAN HIEROGLYPH-13463;Lo;0;L;;;;;N;;;;;
+13464;EGYPTIAN HIEROGLYPH-13464;Lo;0;L;;;;;N;;;;;
+13465;EGYPTIAN HIEROGLYPH-13465;Lo;0;L;;;;;N;;;;;
+13466;EGYPTIAN HIEROGLYPH-13466;Lo;0;L;;;;;N;;;;;
+13467;EGYPTIAN HIEROGLYPH-13467;Lo;0;L;;;;;N;;;;;
+13468;EGYPTIAN HIEROGLYPH-13468;Lo;0;L;;;;;N;;;;;
+13469;EGYPTIAN HIEROGLYPH-13469;Lo;0;L;;;;;N;;;;;
+1346A;EGYPTIAN HIEROGLYPH-1346A;Lo;0;L;;;;;N;;;;;
+1346B;EGYPTIAN HIEROGLYPH-1346B;Lo;0;L;;;;;N;;;;;
+1346C;EGYPTIAN HIEROGLYPH-1346C;Lo;0;L;;;;;N;;;;;
+1346D;EGYPTIAN HIEROGLYPH-1346D;Lo;0;L;;;;;N;;;;;
+1346E;EGYPTIAN HIEROGLYPH-1346E;Lo;0;L;;;;;N;;;;;
+1346F;EGYPTIAN HIEROGLYPH-1346F;Lo;0;L;;;;;N;;;;;
+13470;EGYPTIAN HIEROGLYPH-13470;Lo;0;L;;;;;N;;;;;
+13471;EGYPTIAN HIEROGLYPH-13471;Lo;0;L;;;;;N;;;;;
+13472;EGYPTIAN HIEROGLYPH-13472;Lo;0;L;;;;;N;;;;;
+13473;EGYPTIAN HIEROGLYPH-13473;Lo;0;L;;;;;N;;;;;
+13474;EGYPTIAN HIEROGLYPH-13474;Lo;0;L;;;;;N;;;;;
+13475;EGYPTIAN HIEROGLYPH-13475;Lo;0;L;;;;;N;;;;;
+13476;EGYPTIAN HIEROGLYPH-13476;Lo;0;L;;;;;N;;;;;
+13477;EGYPTIAN HIEROGLYPH-13477;Lo;0;L;;;;;N;;;;;
+13478;EGYPTIAN HIEROGLYPH-13478;Lo;0;L;;;;;N;;;;;
+13479;EGYPTIAN HIEROGLYPH-13479;Lo;0;L;;;;;N;;;;;
+1347A;EGYPTIAN HIEROGLYPH-1347A;Lo;0;L;;;;;N;;;;;
+1347B;EGYPTIAN HIEROGLYPH-1347B;Lo;0;L;;;;;N;;;;;
+1347C;EGYPTIAN HIEROGLYPH-1347C;Lo;0;L;;;;;N;;;;;
+1347D;EGYPTIAN HIEROGLYPH-1347D;Lo;0;L;;;;;N;;;;;
+1347E;EGYPTIAN HIEROGLYPH-1347E;Lo;0;L;;;;;N;;;;;
+1347F;EGYPTIAN HIEROGLYPH-1347F;Lo;0;L;;;;;N;;;;;
+13480;EGYPTIAN HIEROGLYPH-13480;Lo;0;L;;;;;N;;;;;
+13481;EGYPTIAN HIEROGLYPH-13481;Lo;0;L;;;;;N;;;;;
+13482;EGYPTIAN HIEROGLYPH-13482;Lo;0;L;;;;;N;;;;;
+13483;EGYPTIAN HIEROGLYPH-13483;Lo;0;L;;;;;N;;;;;
+13484;EGYPTIAN HIEROGLYPH-13484;Lo;0;L;;;;;N;;;;;
+13485;EGYPTIAN HIEROGLYPH-13485;Lo;0;L;;;;;N;;;;;
+13486;EGYPTIAN HIEROGLYPH-13486;Lo;0;L;;;;;N;;;;;
+13487;EGYPTIAN HIEROGLYPH-13487;Lo;0;L;;;;;N;;;;;
+13488;EGYPTIAN HIEROGLYPH-13488;Lo;0;L;;;;;N;;;;;
+13489;EGYPTIAN HIEROGLYPH-13489;Lo;0;L;;;;;N;;;;;
+1348A;EGYPTIAN HIEROGLYPH-1348A;Lo;0;L;;;;;N;;;;;
+1348B;EGYPTIAN HIEROGLYPH-1348B;Lo;0;L;;;;;N;;;;;
+1348C;EGYPTIAN HIEROGLYPH-1348C;Lo;0;L;;;;;N;;;;;
+1348D;EGYPTIAN HIEROGLYPH-1348D;Lo;0;L;;;;;N;;;;;
+1348E;EGYPTIAN HIEROGLYPH-1348E;Lo;0;L;;;;;N;;;;;
+1348F;EGYPTIAN HIEROGLYPH-1348F;Lo;0;L;;;;;N;;;;;
+13490;EGYPTIAN HIEROGLYPH-13490;Lo;0;L;;;;;N;;;;;
+13491;EGYPTIAN HIEROGLYPH-13491;Lo;0;L;;;;;N;;;;;
+13492;EGYPTIAN HIEROGLYPH-13492;Lo;0;L;;;;;N;;;;;
+13493;EGYPTIAN HIEROGLYPH-13493;Lo;0;L;;;;;N;;;;;
+13494;EGYPTIAN HIEROGLYPH-13494;Lo;0;L;;;;;N;;;;;
+13495;EGYPTIAN HIEROGLYPH-13495;Lo;0;L;;;;;N;;;;;
+13496;EGYPTIAN HIEROGLYPH-13496;Lo;0;L;;;;;N;;;;;
+13497;EGYPTIAN HIEROGLYPH-13497;Lo;0;L;;;;;N;;;;;
+13498;EGYPTIAN HIEROGLYPH-13498;Lo;0;L;;;;;N;;;;;
+13499;EGYPTIAN HIEROGLYPH-13499;Lo;0;L;;;;;N;;;;;
+1349A;EGYPTIAN HIEROGLYPH-1349A;Lo;0;L;;;;;N;;;;;
+1349B;EGYPTIAN HIEROGLYPH-1349B;Lo;0;L;;;;;N;;;;;
+1349C;EGYPTIAN HIEROGLYPH-1349C;Lo;0;L;;;;;N;;;;;
+1349D;EGYPTIAN HIEROGLYPH-1349D;Lo;0;L;;;;;N;;;;;
+1349E;EGYPTIAN HIEROGLYPH-1349E;Lo;0;L;;;;;N;;;;;
+1349F;EGYPTIAN HIEROGLYPH-1349F;Lo;0;L;;;;;N;;;;;
+134A0;EGYPTIAN HIEROGLYPH-134A0;Lo;0;L;;;;;N;;;;;
+134A1;EGYPTIAN HIEROGLYPH-134A1;Lo;0;L;;;;;N;;;;;
+134A2;EGYPTIAN HIEROGLYPH-134A2;Lo;0;L;;;;;N;;;;;
+134A3;EGYPTIAN HIEROGLYPH-134A3;Lo;0;L;;;;;N;;;;;
+134A4;EGYPTIAN HIEROGLYPH-134A4;Lo;0;L;;;;;N;;;;;
+134A5;EGYPTIAN HIEROGLYPH-134A5;Lo;0;L;;;;;N;;;;;
+134A6;EGYPTIAN HIEROGLYPH-134A6;Lo;0;L;;;;;N;;;;;
+134A7;EGYPTIAN HIEROGLYPH-134A7;Lo;0;L;;;;;N;;;;;
+134A8;EGYPTIAN HIEROGLYPH-134A8;Lo;0;L;;;;;N;;;;;
+134A9;EGYPTIAN HIEROGLYPH-134A9;Lo;0;L;;;;;N;;;;;
+134AA;EGYPTIAN HIEROGLYPH-134AA;Lo;0;L;;;;;N;;;;;
+134AB;EGYPTIAN HIEROGLYPH-134AB;Lo;0;L;;;;;N;;;;;
+134AC;EGYPTIAN HIEROGLYPH-134AC;Lo;0;L;;;;;N;;;;;
+134AD;EGYPTIAN HIEROGLYPH-134AD;Lo;0;L;;;;;N;;;;;
+134AE;EGYPTIAN HIEROGLYPH-134AE;Lo;0;L;;;;;N;;;;;
+134AF;EGYPTIAN HIEROGLYPH-134AF;Lo;0;L;;;;;N;;;;;
+134B0;EGYPTIAN HIEROGLYPH-134B0;Lo;0;L;;;;;N;;;;;
+134B1;EGYPTIAN HIEROGLYPH-134B1;Lo;0;L;;;;;N;;;;;
+134B2;EGYPTIAN HIEROGLYPH-134B2;Lo;0;L;;;;;N;;;;;
+134B3;EGYPTIAN HIEROGLYPH-134B3;Lo;0;L;;;;;N;;;;;
+134B4;EGYPTIAN HIEROGLYPH-134B4;Lo;0;L;;;;;N;;;;;
+134B5;EGYPTIAN HIEROGLYPH-134B5;Lo;0;L;;;;;N;;;;;
+134B6;EGYPTIAN HIEROGLYPH-134B6;Lo;0;L;;;;;N;;;;;
+134B7;EGYPTIAN HIEROGLYPH-134B7;Lo;0;L;;;;;N;;;;;
+134B8;EGYPTIAN HIEROGLYPH-134B8;Lo;0;L;;;;;N;;;;;
+134B9;EGYPTIAN HIEROGLYPH-134B9;Lo;0;L;;;;;N;;;;;
+134BA;EGYPTIAN HIEROGLYPH-134BA;Lo;0;L;;;;;N;;;;;
+134BB;EGYPTIAN HIEROGLYPH-134BB;Lo;0;L;;;;;N;;;;;
+134BC;EGYPTIAN HIEROGLYPH-134BC;Lo;0;L;;;;;N;;;;;
+134BD;EGYPTIAN HIEROGLYPH-134BD;Lo;0;L;;;;;N;;;;;
+134BE;EGYPTIAN HIEROGLYPH-134BE;Lo;0;L;;;;;N;;;;;
+134BF;EGYPTIAN HIEROGLYPH-134BF;Lo;0;L;;;;;N;;;;;
+134C0;EGYPTIAN HIEROGLYPH-134C0;Lo;0;L;;;;;N;;;;;
+134C1;EGYPTIAN HIEROGLYPH-134C1;Lo;0;L;;;;;N;;;;;
+134C2;EGYPTIAN HIEROGLYPH-134C2;Lo;0;L;;;;;N;;;;;
+134C3;EGYPTIAN HIEROGLYPH-134C3;Lo;0;L;;;;;N;;;;;
+134C4;EGYPTIAN HIEROGLYPH-134C4;Lo;0;L;;;;;N;;;;;
+134C5;EGYPTIAN HIEROGLYPH-134C5;Lo;0;L;;;;;N;;;;;
+134C6;EGYPTIAN HIEROGLYPH-134C6;Lo;0;L;;;;;N;;;;;
+134C7;EGYPTIAN HIEROGLYPH-134C7;Lo;0;L;;;;;N;;;;;
+134C8;EGYPTIAN HIEROGLYPH-134C8;Lo;0;L;;;;;N;;;;;
+134C9;EGYPTIAN HIEROGLYPH-134C9;Lo;0;L;;;;;N;;;;;
+134CA;EGYPTIAN HIEROGLYPH-134CA;Lo;0;L;;;;;N;;;;;
+134CB;EGYPTIAN HIEROGLYPH-134CB;Lo;0;L;;;;;N;;;;;
+134CC;EGYPTIAN HIEROGLYPH-134CC;Lo;0;L;;;;;N;;;;;
+134CD;EGYPTIAN HIEROGLYPH-134CD;Lo;0;L;;;;;N;;;;;
+134CE;EGYPTIAN HIEROGLYPH-134CE;Lo;0;L;;;;;N;;;;;
+134CF;EGYPTIAN HIEROGLYPH-134CF;Lo;0;L;;;;;N;;;;;
+134D0;EGYPTIAN HIEROGLYPH-134D0;Lo;0;L;;;;;N;;;;;
+134D1;EGYPTIAN HIEROGLYPH-134D1;Lo;0;L;;;;;N;;;;;
+134D2;EGYPTIAN HIEROGLYPH-134D2;Lo;0;L;;;;;N;;;;;
+134D3;EGYPTIAN HIEROGLYPH-134D3;Lo;0;L;;;;;N;;;;;
+134D4;EGYPTIAN HIEROGLYPH-134D4;Lo;0;L;;;;;N;;;;;
+134D5;EGYPTIAN HIEROGLYPH-134D5;Lo;0;L;;;;;N;;;;;
+134D6;EGYPTIAN HIEROGLYPH-134D6;Lo;0;L;;;;;N;;;;;
+134D7;EGYPTIAN HIEROGLYPH-134D7;Lo;0;L;;;;;N;;;;;
+134D8;EGYPTIAN HIEROGLYPH-134D8;Lo;0;L;;;;;N;;;;;
+134D9;EGYPTIAN HIEROGLYPH-134D9;Lo;0;L;;;;;N;;;;;
+134DA;EGYPTIAN HIEROGLYPH-134DA;Lo;0;L;;;;;N;;;;;
+134DB;EGYPTIAN HIEROGLYPH-134DB;Lo;0;L;;;;;N;;;;;
+134DC;EGYPTIAN HIEROGLYPH-134DC;Lo;0;L;;;;;N;;;;;
+134DD;EGYPTIAN HIEROGLYPH-134DD;Lo;0;L;;;;;N;;;;;
+134DE;EGYPTIAN HIEROGLYPH-134DE;Lo;0;L;;;;;N;;;;;
+134DF;EGYPTIAN HIEROGLYPH-134DF;Lo;0;L;;;;;N;;;;;
+134E0;EGYPTIAN HIEROGLYPH-134E0;Lo;0;L;;;;;N;;;;;
+134E1;EGYPTIAN HIEROGLYPH-134E1;Lo;0;L;;;;;N;;;;;
+134E2;EGYPTIAN HIEROGLYPH-134E2;Lo;0;L;;;;;N;;;;;
+134E3;EGYPTIAN HIEROGLYPH-134E3;Lo;0;L;;;;;N;;;;;
+134E4;EGYPTIAN HIEROGLYPH-134E4;Lo;0;L;;;;;N;;;;;
+134E5;EGYPTIAN HIEROGLYPH-134E5;Lo;0;L;;;;;N;;;;;
+134E6;EGYPTIAN HIEROGLYPH-134E6;Lo;0;L;;;;;N;;;;;
+134E7;EGYPTIAN HIEROGLYPH-134E7;Lo;0;L;;;;;N;;;;;
+134E8;EGYPTIAN HIEROGLYPH-134E8;Lo;0;L;;;;;N;;;;;
+134E9;EGYPTIAN HIEROGLYPH-134E9;Lo;0;L;;;;;N;;;;;
+134EA;EGYPTIAN HIEROGLYPH-134EA;Lo;0;L;;;;;N;;;;;
+134EB;EGYPTIAN HIEROGLYPH-134EB;Lo;0;L;;;;;N;;;;;
+134EC;EGYPTIAN HIEROGLYPH-134EC;Lo;0;L;;;;;N;;;;;
+134ED;EGYPTIAN HIEROGLYPH-134ED;Lo;0;L;;;;;N;;;;;
+134EE;EGYPTIAN HIEROGLYPH-134EE;Lo;0;L;;;;;N;;;;;
+134EF;EGYPTIAN HIEROGLYPH-134EF;Lo;0;L;;;;;N;;;;;
+134F0;EGYPTIAN HIEROGLYPH-134F0;Lo;0;L;;;;;N;;;;;
+134F1;EGYPTIAN HIEROGLYPH-134F1;Lo;0;L;;;;;N;;;;;
+134F2;EGYPTIAN HIEROGLYPH-134F2;Lo;0;L;;;;;N;;;;;
+134F3;EGYPTIAN HIEROGLYPH-134F3;Lo;0;L;;;;;N;;;;;
+134F4;EGYPTIAN HIEROGLYPH-134F4;Lo;0;L;;;;;N;;;;;
+134F5;EGYPTIAN HIEROGLYPH-134F5;Lo;0;L;;;;;N;;;;;
+134F6;EGYPTIAN HIEROGLYPH-134F6;Lo;0;L;;;;;N;;;;;
+134F7;EGYPTIAN HIEROGLYPH-134F7;Lo;0;L;;;;;N;;;;;
+134F8;EGYPTIAN HIEROGLYPH-134F8;Lo;0;L;;;;;N;;;;;
+134F9;EGYPTIAN HIEROGLYPH-134F9;Lo;0;L;;;;;N;;;;;
+134FA;EGYPTIAN HIEROGLYPH-134FA;Lo;0;L;;;;;N;;;;;
+134FB;EGYPTIAN HIEROGLYPH-134FB;Lo;0;L;;;;;N;;;;;
+134FC;EGYPTIAN HIEROGLYPH-134FC;Lo;0;L;;;;;N;;;;;
+134FD;EGYPTIAN HIEROGLYPH-134FD;Lo;0;L;;;;;N;;;;;
+134FE;EGYPTIAN HIEROGLYPH-134FE;Lo;0;L;;;;;N;;;;;
+134FF;EGYPTIAN HIEROGLYPH-134FF;Lo;0;L;;;;;N;;;;;
+13500;EGYPTIAN HIEROGLYPH-13500;Lo;0;L;;;;;N;;;;;
+13501;EGYPTIAN HIEROGLYPH-13501;Lo;0;L;;;;;N;;;;;
+13502;EGYPTIAN HIEROGLYPH-13502;Lo;0;L;;;;;N;;;;;
+13503;EGYPTIAN HIEROGLYPH-13503;Lo;0;L;;;;;N;;;;;
+13504;EGYPTIAN HIEROGLYPH-13504;Lo;0;L;;;;;N;;;;;
+13505;EGYPTIAN HIEROGLYPH-13505;Lo;0;L;;;;;N;;;;;
+13506;EGYPTIAN HIEROGLYPH-13506;Lo;0;L;;;;;N;;;;;
+13507;EGYPTIAN HIEROGLYPH-13507;Lo;0;L;;;;;N;;;;;
+13508;EGYPTIAN HIEROGLYPH-13508;Lo;0;L;;;;;N;;;;;
+13509;EGYPTIAN HIEROGLYPH-13509;Lo;0;L;;;;;N;;;;;
+1350A;EGYPTIAN HIEROGLYPH-1350A;Lo;0;L;;;;;N;;;;;
+1350B;EGYPTIAN HIEROGLYPH-1350B;Lo;0;L;;;;;N;;;;;
+1350C;EGYPTIAN HIEROGLYPH-1350C;Lo;0;L;;;;;N;;;;;
+1350D;EGYPTIAN HIEROGLYPH-1350D;Lo;0;L;;;;;N;;;;;
+1350E;EGYPTIAN HIEROGLYPH-1350E;Lo;0;L;;;;;N;;;;;
+1350F;EGYPTIAN HIEROGLYPH-1350F;Lo;0;L;;;;;N;;;;;
+13510;EGYPTIAN HIEROGLYPH-13510;Lo;0;L;;;;;N;;;;;
+13511;EGYPTIAN HIEROGLYPH-13511;Lo;0;L;;;;;N;;;;;
+13512;EGYPTIAN HIEROGLYPH-13512;Lo;0;L;;;;;N;;;;;
+13513;EGYPTIAN HIEROGLYPH-13513;Lo;0;L;;;;;N;;;;;
+13514;EGYPTIAN HIEROGLYPH-13514;Lo;0;L;;;;;N;;;;;
+13515;EGYPTIAN HIEROGLYPH-13515;Lo;0;L;;;;;N;;;;;
+13516;EGYPTIAN HIEROGLYPH-13516;Lo;0;L;;;;;N;;;;;
+13517;EGYPTIAN HIEROGLYPH-13517;Lo;0;L;;;;;N;;;;;
+13518;EGYPTIAN HIEROGLYPH-13518;Lo;0;L;;;;;N;;;;;
+13519;EGYPTIAN HIEROGLYPH-13519;Lo;0;L;;;;;N;;;;;
+1351A;EGYPTIAN HIEROGLYPH-1351A;Lo;0;L;;;;;N;;;;;
+1351B;EGYPTIAN HIEROGLYPH-1351B;Lo;0;L;;;;;N;;;;;
+1351C;EGYPTIAN HIEROGLYPH-1351C;Lo;0;L;;;;;N;;;;;
+1351D;EGYPTIAN HIEROGLYPH-1351D;Lo;0;L;;;;;N;;;;;
+1351E;EGYPTIAN HIEROGLYPH-1351E;Lo;0;L;;;;;N;;;;;
+1351F;EGYPTIAN HIEROGLYPH-1351F;Lo;0;L;;;;;N;;;;;
+13520;EGYPTIAN HIEROGLYPH-13520;Lo;0;L;;;;;N;;;;;
+13521;EGYPTIAN HIEROGLYPH-13521;Lo;0;L;;;;;N;;;;;
+13522;EGYPTIAN HIEROGLYPH-13522;Lo;0;L;;;;;N;;;;;
+13523;EGYPTIAN HIEROGLYPH-13523;Lo;0;L;;;;;N;;;;;
+13524;EGYPTIAN HIEROGLYPH-13524;Lo;0;L;;;;;N;;;;;
+13525;EGYPTIAN HIEROGLYPH-13525;Lo;0;L;;;;;N;;;;;
+13526;EGYPTIAN HIEROGLYPH-13526;Lo;0;L;;;;;N;;;;;
+13527;EGYPTIAN HIEROGLYPH-13527;Lo;0;L;;;;;N;;;;;
+13528;EGYPTIAN HIEROGLYPH-13528;Lo;0;L;;;;;N;;;;;
+13529;EGYPTIAN HIEROGLYPH-13529;Lo;0;L;;;;;N;;;;;
+1352A;EGYPTIAN HIEROGLYPH-1352A;Lo;0;L;;;;;N;;;;;
+1352B;EGYPTIAN HIEROGLYPH-1352B;Lo;0;L;;;;;N;;;;;
+1352C;EGYPTIAN HIEROGLYPH-1352C;Lo;0;L;;;;;N;;;;;
+1352D;EGYPTIAN HIEROGLYPH-1352D;Lo;0;L;;;;;N;;;;;
+1352E;EGYPTIAN HIEROGLYPH-1352E;Lo;0;L;;;;;N;;;;;
+1352F;EGYPTIAN HIEROGLYPH-1352F;Lo;0;L;;;;;N;;;;;
+13530;EGYPTIAN HIEROGLYPH-13530;Lo;0;L;;;;;N;;;;;
+13531;EGYPTIAN HIEROGLYPH-13531;Lo;0;L;;;;;N;;;;;
+13532;EGYPTIAN HIEROGLYPH-13532;Lo;0;L;;;;;N;;;;;
+13533;EGYPTIAN HIEROGLYPH-13533;Lo;0;L;;;;;N;;;;;
+13534;EGYPTIAN HIEROGLYPH-13534;Lo;0;L;;;;;N;;;;;
+13535;EGYPTIAN HIEROGLYPH-13535;Lo;0;L;;;;;N;;;;;
+13536;EGYPTIAN HIEROGLYPH-13536;Lo;0;L;;;;;N;;;;;
+13537;EGYPTIAN HIEROGLYPH-13537;Lo;0;L;;;;;N;;;;;
+13538;EGYPTIAN HIEROGLYPH-13538;Lo;0;L;;;;;N;;;;;
+13539;EGYPTIAN HIEROGLYPH-13539;Lo;0;L;;;;;N;;;;;
+1353A;EGYPTIAN HIEROGLYPH-1353A;Lo;0;L;;;;;N;;;;;
+1353B;EGYPTIAN HIEROGLYPH-1353B;Lo;0;L;;;;;N;;;;;
+1353C;EGYPTIAN HIEROGLYPH-1353C;Lo;0;L;;;;;N;;;;;
+1353D;EGYPTIAN HIEROGLYPH-1353D;Lo;0;L;;;;;N;;;;;
+1353E;EGYPTIAN HIEROGLYPH-1353E;Lo;0;L;;;;;N;;;;;
+1353F;EGYPTIAN HIEROGLYPH-1353F;Lo;0;L;;;;;N;;;;;
+13540;EGYPTIAN HIEROGLYPH-13540;Lo;0;L;;;;;N;;;;;
+13541;EGYPTIAN HIEROGLYPH-13541;Lo;0;L;;;;;N;;;;;
+13542;EGYPTIAN HIEROGLYPH-13542;Lo;0;L;;;;;N;;;;;
+13543;EGYPTIAN HIEROGLYPH-13543;Lo;0;L;;;;;N;;;;;
+13544;EGYPTIAN HIEROGLYPH-13544;Lo;0;L;;;;;N;;;;;
+13545;EGYPTIAN HIEROGLYPH-13545;Lo;0;L;;;;;N;;;;;
+13546;EGYPTIAN HIEROGLYPH-13546;Lo;0;L;;;;;N;;;;;
+13547;EGYPTIAN HIEROGLYPH-13547;Lo;0;L;;;;;N;;;;;
+13548;EGYPTIAN HIEROGLYPH-13548;Lo;0;L;;;;;N;;;;;
+13549;EGYPTIAN HIEROGLYPH-13549;Lo;0;L;;;;;N;;;;;
+1354A;EGYPTIAN HIEROGLYPH-1354A;Lo;0;L;;;;;N;;;;;
+1354B;EGYPTIAN HIEROGLYPH-1354B;Lo;0;L;;;;;N;;;;;
+1354C;EGYPTIAN HIEROGLYPH-1354C;Lo;0;L;;;;;N;;;;;
+1354D;EGYPTIAN HIEROGLYPH-1354D;Lo;0;L;;;;;N;;;;;
+1354E;EGYPTIAN HIEROGLYPH-1354E;Lo;0;L;;;;;N;;;;;
+1354F;EGYPTIAN HIEROGLYPH-1354F;Lo;0;L;;;;;N;;;;;
+13550;EGYPTIAN HIEROGLYPH-13550;Lo;0;L;;;;;N;;;;;
+13551;EGYPTIAN HIEROGLYPH-13551;Lo;0;L;;;;;N;;;;;
+13552;EGYPTIAN HIEROGLYPH-13552;Lo;0;L;;;;;N;;;;;
+13553;EGYPTIAN HIEROGLYPH-13553;Lo;0;L;;;;;N;;;;;
+13554;EGYPTIAN HIEROGLYPH-13554;Lo;0;L;;;;;N;;;;;
+13555;EGYPTIAN HIEROGLYPH-13555;Lo;0;L;;;;;N;;;;;
+13556;EGYPTIAN HIEROGLYPH-13556;Lo;0;L;;;;;N;;;;;
+13557;EGYPTIAN HIEROGLYPH-13557;Lo;0;L;;;;;N;;;;;
+13558;EGYPTIAN HIEROGLYPH-13558;Lo;0;L;;;;;N;;;;;
+13559;EGYPTIAN HIEROGLYPH-13559;Lo;0;L;;;;;N;;;;;
+1355A;EGYPTIAN HIEROGLYPH-1355A;Lo;0;L;;;;;N;;;;;
+1355B;EGYPTIAN HIEROGLYPH-1355B;Lo;0;L;;;;;N;;;;;
+1355C;EGYPTIAN HIEROGLYPH-1355C;Lo;0;L;;;;;N;;;;;
+1355D;EGYPTIAN HIEROGLYPH-1355D;Lo;0;L;;;;;N;;;;;
+1355E;EGYPTIAN HIEROGLYPH-1355E;Lo;0;L;;;;;N;;;;;
+1355F;EGYPTIAN HIEROGLYPH-1355F;Lo;0;L;;;;;N;;;;;
+13560;EGYPTIAN HIEROGLYPH-13560;Lo;0;L;;;;;N;;;;;
+13561;EGYPTIAN HIEROGLYPH-13561;Lo;0;L;;;;;N;;;;;
+13562;EGYPTIAN HIEROGLYPH-13562;Lo;0;L;;;;;N;;;;;
+13563;EGYPTIAN HIEROGLYPH-13563;Lo;0;L;;;;;N;;;;;
+13564;EGYPTIAN HIEROGLYPH-13564;Lo;0;L;;;;;N;;;;;
+13565;EGYPTIAN HIEROGLYPH-13565;Lo;0;L;;;;;N;;;;;
+13566;EGYPTIAN HIEROGLYPH-13566;Lo;0;L;;;;;N;;;;;
+13567;EGYPTIAN HIEROGLYPH-13567;Lo;0;L;;;;;N;;;;;
+13568;EGYPTIAN HIEROGLYPH-13568;Lo;0;L;;;;;N;;;;;
+13569;EGYPTIAN HIEROGLYPH-13569;Lo;0;L;;;;;N;;;;;
+1356A;EGYPTIAN HIEROGLYPH-1356A;Lo;0;L;;;;;N;;;;;
+1356B;EGYPTIAN HIEROGLYPH-1356B;Lo;0;L;;;;;N;;;;;
+1356C;EGYPTIAN HIEROGLYPH-1356C;Lo;0;L;;;;;N;;;;;
+1356D;EGYPTIAN HIEROGLYPH-1356D;Lo;0;L;;;;;N;;;;;
+1356E;EGYPTIAN HIEROGLYPH-1356E;Lo;0;L;;;;;N;;;;;
+1356F;EGYPTIAN HIEROGLYPH-1356F;Lo;0;L;;;;;N;;;;;
+13570;EGYPTIAN HIEROGLYPH-13570;Lo;0;L;;;;;N;;;;;
+13571;EGYPTIAN HIEROGLYPH-13571;Lo;0;L;;;;;N;;;;;
+13572;EGYPTIAN HIEROGLYPH-13572;Lo;0;L;;;;;N;;;;;
+13573;EGYPTIAN HIEROGLYPH-13573;Lo;0;L;;;;;N;;;;;
+13574;EGYPTIAN HIEROGLYPH-13574;Lo;0;L;;;;;N;;;;;
+13575;EGYPTIAN HIEROGLYPH-13575;Lo;0;L;;;;;N;;;;;
+13576;EGYPTIAN HIEROGLYPH-13576;Lo;0;L;;;;;N;;;;;
+13577;EGYPTIAN HIEROGLYPH-13577;Lo;0;L;;;;;N;;;;;
+13578;EGYPTIAN HIEROGLYPH-13578;Lo;0;L;;;;;N;;;;;
+13579;EGYPTIAN HIEROGLYPH-13579;Lo;0;L;;;;;N;;;;;
+1357A;EGYPTIAN HIEROGLYPH-1357A;Lo;0;L;;;;;N;;;;;
+1357B;EGYPTIAN HIEROGLYPH-1357B;Lo;0;L;;;;;N;;;;;
+1357C;EGYPTIAN HIEROGLYPH-1357C;Lo;0;L;;;;;N;;;;;
+1357D;EGYPTIAN HIEROGLYPH-1357D;Lo;0;L;;;;;N;;;;;
+1357E;EGYPTIAN HIEROGLYPH-1357E;Lo;0;L;;;;;N;;;;;
+1357F;EGYPTIAN HIEROGLYPH-1357F;Lo;0;L;;;;;N;;;;;
+13580;EGYPTIAN HIEROGLYPH-13580;Lo;0;L;;;;;N;;;;;
+13581;EGYPTIAN HIEROGLYPH-13581;Lo;0;L;;;;;N;;;;;
+13582;EGYPTIAN HIEROGLYPH-13582;Lo;0;L;;;;;N;;;;;
+13583;EGYPTIAN HIEROGLYPH-13583;Lo;0;L;;;;;N;;;;;
+13584;EGYPTIAN HIEROGLYPH-13584;Lo;0;L;;;;;N;;;;;
+13585;EGYPTIAN HIEROGLYPH-13585;Lo;0;L;;;;;N;;;;;
+13586;EGYPTIAN HIEROGLYPH-13586;Lo;0;L;;;;;N;;;;;
+13587;EGYPTIAN HIEROGLYPH-13587;Lo;0;L;;;;;N;;;;;
+13588;EGYPTIAN HIEROGLYPH-13588;Lo;0;L;;;;;N;;;;;
+13589;EGYPTIAN HIEROGLYPH-13589;Lo;0;L;;;;;N;;;;;
+1358A;EGYPTIAN HIEROGLYPH-1358A;Lo;0;L;;;;;N;;;;;
+1358B;EGYPTIAN HIEROGLYPH-1358B;Lo;0;L;;;;;N;;;;;
+1358C;EGYPTIAN HIEROGLYPH-1358C;Lo;0;L;;;;;N;;;;;
+1358D;EGYPTIAN HIEROGLYPH-1358D;Lo;0;L;;;;;N;;;;;
+1358E;EGYPTIAN HIEROGLYPH-1358E;Lo;0;L;;;;;N;;;;;
+1358F;EGYPTIAN HIEROGLYPH-1358F;Lo;0;L;;;;;N;;;;;
+13590;EGYPTIAN HIEROGLYPH-13590;Lo;0;L;;;;;N;;;;;
+13591;EGYPTIAN HIEROGLYPH-13591;Lo;0;L;;;;;N;;;;;
+13592;EGYPTIAN HIEROGLYPH-13592;Lo;0;L;;;;;N;;;;;
+13593;EGYPTIAN HIEROGLYPH-13593;Lo;0;L;;;;;N;;;;;
+13594;EGYPTIAN HIEROGLYPH-13594;Lo;0;L;;;;;N;;;;;
+13595;EGYPTIAN HIEROGLYPH-13595;Lo;0;L;;;;;N;;;;;
+13596;EGYPTIAN HIEROGLYPH-13596;Lo;0;L;;;;;N;;;;;
+13597;EGYPTIAN HIEROGLYPH-13597;Lo;0;L;;;;;N;;;;;
+13598;EGYPTIAN HIEROGLYPH-13598;Lo;0;L;;;;;N;;;;;
+13599;EGYPTIAN HIEROGLYPH-13599;Lo;0;L;;;;;N;;;;;
+1359A;EGYPTIAN HIEROGLYPH-1359A;Lo;0;L;;;;;N;;;;;
+1359B;EGYPTIAN HIEROGLYPH-1359B;Lo;0;L;;;;;N;;;;;
+1359C;EGYPTIAN HIEROGLYPH-1359C;Lo;0;L;;;;;N;;;;;
+1359D;EGYPTIAN HIEROGLYPH-1359D;Lo;0;L;;;;;N;;;;;
+1359E;EGYPTIAN HIEROGLYPH-1359E;Lo;0;L;;;;;N;;;;;
+1359F;EGYPTIAN HIEROGLYPH-1359F;Lo;0;L;;;;;N;;;;;
+135A0;EGYPTIAN HIEROGLYPH-135A0;Lo;0;L;;;;;N;;;;;
+135A1;EGYPTIAN HIEROGLYPH-135A1;Lo;0;L;;;;;N;;;;;
+135A2;EGYPTIAN HIEROGLYPH-135A2;Lo;0;L;;;;;N;;;;;
+135A3;EGYPTIAN HIEROGLYPH-135A3;Lo;0;L;;;;;N;;;;;
+135A4;EGYPTIAN HIEROGLYPH-135A4;Lo;0;L;;;;;N;;;;;
+135A5;EGYPTIAN HIEROGLYPH-135A5;Lo;0;L;;;;;N;;;;;
+135A6;EGYPTIAN HIEROGLYPH-135A6;Lo;0;L;;;;;N;;;;;
+135A7;EGYPTIAN HIEROGLYPH-135A7;Lo;0;L;;;;;N;;;;;
+135A8;EGYPTIAN HIEROGLYPH-135A8;Lo;0;L;;;;;N;;;;;
+135A9;EGYPTIAN HIEROGLYPH-135A9;Lo;0;L;;;;;N;;;;;
+135AA;EGYPTIAN HIEROGLYPH-135AA;Lo;0;L;;;;;N;;;;;
+135AB;EGYPTIAN HIEROGLYPH-135AB;Lo;0;L;;;;;N;;;;;
+135AC;EGYPTIAN HIEROGLYPH-135AC;Lo;0;L;;;;;N;;;;;
+135AD;EGYPTIAN HIEROGLYPH-135AD;Lo;0;L;;;;;N;;;;;
+135AE;EGYPTIAN HIEROGLYPH-135AE;Lo;0;L;;;;;N;;;;;
+135AF;EGYPTIAN HIEROGLYPH-135AF;Lo;0;L;;;;;N;;;;;
+135B0;EGYPTIAN HIEROGLYPH-135B0;Lo;0;L;;;;;N;;;;;
+135B1;EGYPTIAN HIEROGLYPH-135B1;Lo;0;L;;;;;N;;;;;
+135B2;EGYPTIAN HIEROGLYPH-135B2;Lo;0;L;;;;;N;;;;;
+135B3;EGYPTIAN HIEROGLYPH-135B3;Lo;0;L;;;;;N;;;;;
+135B4;EGYPTIAN HIEROGLYPH-135B4;Lo;0;L;;;;;N;;;;;
+135B5;EGYPTIAN HIEROGLYPH-135B5;Lo;0;L;;;;;N;;;;;
+135B6;EGYPTIAN HIEROGLYPH-135B6;Lo;0;L;;;;;N;;;;;
+135B7;EGYPTIAN HIEROGLYPH-135B7;Lo;0;L;;;;;N;;;;;
+135B8;EGYPTIAN HIEROGLYPH-135B8;Lo;0;L;;;;;N;;;;;
+135B9;EGYPTIAN HIEROGLYPH-135B9;Lo;0;L;;;;;N;;;;;
+135BA;EGYPTIAN HIEROGLYPH-135BA;Lo;0;L;;;;;N;;;;;
+135BB;EGYPTIAN HIEROGLYPH-135BB;Lo;0;L;;;;;N;;;;;
+135BC;EGYPTIAN HIEROGLYPH-135BC;Lo;0;L;;;;;N;;;;;
+135BD;EGYPTIAN HIEROGLYPH-135BD;Lo;0;L;;;;;N;;;;;
+135BE;EGYPTIAN HIEROGLYPH-135BE;Lo;0;L;;;;;N;;;;;
+135BF;EGYPTIAN HIEROGLYPH-135BF;Lo;0;L;;;;;N;;;;;
+135C0;EGYPTIAN HIEROGLYPH-135C0;Lo;0;L;;;;;N;;;;;
+135C1;EGYPTIAN HIEROGLYPH-135C1;Lo;0;L;;;;;N;;;;;
+135C2;EGYPTIAN HIEROGLYPH-135C2;Lo;0;L;;;;;N;;;;;
+135C3;EGYPTIAN HIEROGLYPH-135C3;Lo;0;L;;;;;N;;;;;
+135C4;EGYPTIAN HIEROGLYPH-135C4;Lo;0;L;;;;;N;;;;;
+135C5;EGYPTIAN HIEROGLYPH-135C5;Lo;0;L;;;;;N;;;;;
+135C6;EGYPTIAN HIEROGLYPH-135C6;Lo;0;L;;;;;N;;;;;
+135C7;EGYPTIAN HIEROGLYPH-135C7;Lo;0;L;;;;;N;;;;;
+135C8;EGYPTIAN HIEROGLYPH-135C8;Lo;0;L;;;;;N;;;;;
+135C9;EGYPTIAN HIEROGLYPH-135C9;Lo;0;L;;;;;N;;;;;
+135CA;EGYPTIAN HIEROGLYPH-135CA;Lo;0;L;;;;;N;;;;;
+135CB;EGYPTIAN HIEROGLYPH-135CB;Lo;0;L;;;;;N;;;;;
+135CC;EGYPTIAN HIEROGLYPH-135CC;Lo;0;L;;;;;N;;;;;
+135CD;EGYPTIAN HIEROGLYPH-135CD;Lo;0;L;;;;;N;;;;;
+135CE;EGYPTIAN HIEROGLYPH-135CE;Lo;0;L;;;;;N;;;;;
+135CF;EGYPTIAN HIEROGLYPH-135CF;Lo;0;L;;;;;N;;;;;
+135D0;EGYPTIAN HIEROGLYPH-135D0;Lo;0;L;;;;;N;;;;;
+135D1;EGYPTIAN HIEROGLYPH-135D1;Lo;0;L;;;;;N;;;;;
+135D2;EGYPTIAN HIEROGLYPH-135D2;Lo;0;L;;;;;N;;;;;
+135D3;EGYPTIAN HIEROGLYPH-135D3;Lo;0;L;;;;;N;;;;;
+135D4;EGYPTIAN HIEROGLYPH-135D4;Lo;0;L;;;;;N;;;;;
+135D5;EGYPTIAN HIEROGLYPH-135D5;Lo;0;L;;;;;N;;;;;
+135D6;EGYPTIAN HIEROGLYPH-135D6;Lo;0;L;;;;;N;;;;;
+135D7;EGYPTIAN HIEROGLYPH-135D7;Lo;0;L;;;;;N;;;;;
+135D8;EGYPTIAN HIEROGLYPH-135D8;Lo;0;L;;;;;N;;;;;
+135D9;EGYPTIAN HIEROGLYPH-135D9;Lo;0;L;;;;;N;;;;;
+135DA;EGYPTIAN HIEROGLYPH-135DA;Lo;0;L;;;;;N;;;;;
+135DB;EGYPTIAN HIEROGLYPH-135DB;Lo;0;L;;;;;N;;;;;
+135DC;EGYPTIAN HIEROGLYPH-135DC;Lo;0;L;;;;;N;;;;;
+135DD;EGYPTIAN HIEROGLYPH-135DD;Lo;0;L;;;;;N;;;;;
+135DE;EGYPTIAN HIEROGLYPH-135DE;Lo;0;L;;;;;N;;;;;
+135DF;EGYPTIAN HIEROGLYPH-135DF;Lo;0;L;;;;;N;;;;;
+135E0;EGYPTIAN HIEROGLYPH-135E0;Lo;0;L;;;;;N;;;;;
+135E1;EGYPTIAN HIEROGLYPH-135E1;Lo;0;L;;;;;N;;;;;
+135E2;EGYPTIAN HIEROGLYPH-135E2;Lo;0;L;;;;;N;;;;;
+135E3;EGYPTIAN HIEROGLYPH-135E3;Lo;0;L;;;;;N;;;;;
+135E4;EGYPTIAN HIEROGLYPH-135E4;Lo;0;L;;;;;N;;;;;
+135E5;EGYPTIAN HIEROGLYPH-135E5;Lo;0;L;;;;;N;;;;;
+135E6;EGYPTIAN HIEROGLYPH-135E6;Lo;0;L;;;;;N;;;;;
+135E7;EGYPTIAN HIEROGLYPH-135E7;Lo;0;L;;;;;N;;;;;
+135E8;EGYPTIAN HIEROGLYPH-135E8;Lo;0;L;;;;;N;;;;;
+135E9;EGYPTIAN HIEROGLYPH-135E9;Lo;0;L;;;;;N;;;;;
+135EA;EGYPTIAN HIEROGLYPH-135EA;Lo;0;L;;;;;N;;;;;
+135EB;EGYPTIAN HIEROGLYPH-135EB;Lo;0;L;;;;;N;;;;;
+135EC;EGYPTIAN HIEROGLYPH-135EC;Lo;0;L;;;;;N;;;;;
+135ED;EGYPTIAN HIEROGLYPH-135ED;Lo;0;L;;;;;N;;;;;
+135EE;EGYPTIAN HIEROGLYPH-135EE;Lo;0;L;;;;;N;;;;;
+135EF;EGYPTIAN HIEROGLYPH-135EF;Lo;0;L;;;;;N;;;;;
+135F0;EGYPTIAN HIEROGLYPH-135F0;Lo;0;L;;;;;N;;;;;
+135F1;EGYPTIAN HIEROGLYPH-135F1;Lo;0;L;;;;;N;;;;;
+135F2;EGYPTIAN HIEROGLYPH-135F2;Lo;0;L;;;;;N;;;;;
+135F3;EGYPTIAN HIEROGLYPH-135F3;Lo;0;L;;;;;N;;;;;
+135F4;EGYPTIAN HIEROGLYPH-135F4;Lo;0;L;;;;;N;;;;;
+135F5;EGYPTIAN HIEROGLYPH-135F5;Lo;0;L;;;;;N;;;;;
+135F6;EGYPTIAN HIEROGLYPH-135F6;Lo;0;L;;;;;N;;;;;
+135F7;EGYPTIAN HIEROGLYPH-135F7;Lo;0;L;;;;;N;;;;;
+135F8;EGYPTIAN HIEROGLYPH-135F8;Lo;0;L;;;;;N;;;;;
+135F9;EGYPTIAN HIEROGLYPH-135F9;Lo;0;L;;;;;N;;;;;
+135FA;EGYPTIAN HIEROGLYPH-135FA;Lo;0;L;;;;;N;;;;;
+135FB;EGYPTIAN HIEROGLYPH-135FB;Lo;0;L;;;;;N;;;;;
+135FC;EGYPTIAN HIEROGLYPH-135FC;Lo;0;L;;;;;N;;;;;
+135FD;EGYPTIAN HIEROGLYPH-135FD;Lo;0;L;;;;;N;;;;;
+135FE;EGYPTIAN HIEROGLYPH-135FE;Lo;0;L;;;;;N;;;;;
+135FF;EGYPTIAN HIEROGLYPH-135FF;Lo;0;L;;;;;N;;;;;
+13600;EGYPTIAN HIEROGLYPH-13600;Lo;0;L;;;;;N;;;;;
+13601;EGYPTIAN HIEROGLYPH-13601;Lo;0;L;;;;;N;;;;;
+13602;EGYPTIAN HIEROGLYPH-13602;Lo;0;L;;;;;N;;;;;
+13603;EGYPTIAN HIEROGLYPH-13603;Lo;0;L;;;;;N;;;;;
+13604;EGYPTIAN HIEROGLYPH-13604;Lo;0;L;;;;;N;;;;;
+13605;EGYPTIAN HIEROGLYPH-13605;Lo;0;L;;;;;N;;;;;
+13606;EGYPTIAN HIEROGLYPH-13606;Lo;0;L;;;;;N;;;;;
+13607;EGYPTIAN HIEROGLYPH-13607;Lo;0;L;;;;;N;;;;;
+13608;EGYPTIAN HIEROGLYPH-13608;Lo;0;L;;;;;N;;;;;
+13609;EGYPTIAN HIEROGLYPH-13609;Lo;0;L;;;;;N;;;;;
+1360A;EGYPTIAN HIEROGLYPH-1360A;Lo;0;L;;;;;N;;;;;
+1360B;EGYPTIAN HIEROGLYPH-1360B;Lo;0;L;;;;;N;;;;;
+1360C;EGYPTIAN HIEROGLYPH-1360C;Lo;0;L;;;;;N;;;;;
+1360D;EGYPTIAN HIEROGLYPH-1360D;Lo;0;L;;;;;N;;;;;
+1360E;EGYPTIAN HIEROGLYPH-1360E;Lo;0;L;;;;;N;;;;;
+1360F;EGYPTIAN HIEROGLYPH-1360F;Lo;0;L;;;;;N;;;;;
+13610;EGYPTIAN HIEROGLYPH-13610;Lo;0;L;;;;;N;;;;;
+13611;EGYPTIAN HIEROGLYPH-13611;Lo;0;L;;;;;N;;;;;
+13612;EGYPTIAN HIEROGLYPH-13612;Lo;0;L;;;;;N;;;;;
+13613;EGYPTIAN HIEROGLYPH-13613;Lo;0;L;;;;;N;;;;;
+13614;EGYPTIAN HIEROGLYPH-13614;Lo;0;L;;;;;N;;;;;
+13615;EGYPTIAN HIEROGLYPH-13615;Lo;0;L;;;;;N;;;;;
+13616;EGYPTIAN HIEROGLYPH-13616;Lo;0;L;;;;;N;;;;;
+13617;EGYPTIAN HIEROGLYPH-13617;Lo;0;L;;;;;N;;;;;
+13618;EGYPTIAN HIEROGLYPH-13618;Lo;0;L;;;;;N;;;;;
+13619;EGYPTIAN HIEROGLYPH-13619;Lo;0;L;;;;;N;;;;;
+1361A;EGYPTIAN HIEROGLYPH-1361A;Lo;0;L;;;;;N;;;;;
+1361B;EGYPTIAN HIEROGLYPH-1361B;Lo;0;L;;;;;N;;;;;
+1361C;EGYPTIAN HIEROGLYPH-1361C;Lo;0;L;;;;;N;;;;;
+1361D;EGYPTIAN HIEROGLYPH-1361D;Lo;0;L;;;;;N;;;;;
+1361E;EGYPTIAN HIEROGLYPH-1361E;Lo;0;L;;;;;N;;;;;
+1361F;EGYPTIAN HIEROGLYPH-1361F;Lo;0;L;;;;;N;;;;;
+13620;EGYPTIAN HIEROGLYPH-13620;Lo;0;L;;;;;N;;;;;
+13621;EGYPTIAN HIEROGLYPH-13621;Lo;0;L;;;;;N;;;;;
+13622;EGYPTIAN HIEROGLYPH-13622;Lo;0;L;;;;;N;;;;;
+13623;EGYPTIAN HIEROGLYPH-13623;Lo;0;L;;;;;N;;;;;
+13624;EGYPTIAN HIEROGLYPH-13624;Lo;0;L;;;;;N;;;;;
+13625;EGYPTIAN HIEROGLYPH-13625;Lo;0;L;;;;;N;;;;;
+13626;EGYPTIAN HIEROGLYPH-13626;Lo;0;L;;;;;N;;;;;
+13627;EGYPTIAN HIEROGLYPH-13627;Lo;0;L;;;;;N;;;;;
+13628;EGYPTIAN HIEROGLYPH-13628;Lo;0;L;;;;;N;;;;;
+13629;EGYPTIAN HIEROGLYPH-13629;Lo;0;L;;;;;N;;;;;
+1362A;EGYPTIAN HIEROGLYPH-1362A;Lo;0;L;;;;;N;;;;;
+1362B;EGYPTIAN HIEROGLYPH-1362B;Lo;0;L;;;;;N;;;;;
+1362C;EGYPTIAN HIEROGLYPH-1362C;Lo;0;L;;;;;N;;;;;
+1362D;EGYPTIAN HIEROGLYPH-1362D;Lo;0;L;;;;;N;;;;;
+1362E;EGYPTIAN HIEROGLYPH-1362E;Lo;0;L;;;;;N;;;;;
+1362F;EGYPTIAN HIEROGLYPH-1362F;Lo;0;L;;;;;N;;;;;
+13630;EGYPTIAN HIEROGLYPH-13630;Lo;0;L;;;;;N;;;;;
+13631;EGYPTIAN HIEROGLYPH-13631;Lo;0;L;;;;;N;;;;;
+13632;EGYPTIAN HIEROGLYPH-13632;Lo;0;L;;;;;N;;;;;
+13633;EGYPTIAN HIEROGLYPH-13633;Lo;0;L;;;;;N;;;;;
+13634;EGYPTIAN HIEROGLYPH-13634;Lo;0;L;;;;;N;;;;;
+13635;EGYPTIAN HIEROGLYPH-13635;Lo;0;L;;;;;N;;;;;
+13636;EGYPTIAN HIEROGLYPH-13636;Lo;0;L;;;;;N;;;;;
+13637;EGYPTIAN HIEROGLYPH-13637;Lo;0;L;;;;;N;;;;;
+13638;EGYPTIAN HIEROGLYPH-13638;Lo;0;L;;;;;N;;;;;
+13639;EGYPTIAN HIEROGLYPH-13639;Lo;0;L;;;;;N;;;;;
+1363A;EGYPTIAN HIEROGLYPH-1363A;Lo;0;L;;;;;N;;;;;
+1363B;EGYPTIAN HIEROGLYPH-1363B;Lo;0;L;;;;;N;;;;;
+1363C;EGYPTIAN HIEROGLYPH-1363C;Lo;0;L;;;;;N;;;;;
+1363D;EGYPTIAN HIEROGLYPH-1363D;Lo;0;L;;;;;N;;;;;
+1363E;EGYPTIAN HIEROGLYPH-1363E;Lo;0;L;;;;;N;;;;;
+1363F;EGYPTIAN HIEROGLYPH-1363F;Lo;0;L;;;;;N;;;;;
+13640;EGYPTIAN HIEROGLYPH-13640;Lo;0;L;;;;;N;;;;;
+13641;EGYPTIAN HIEROGLYPH-13641;Lo;0;L;;;;;N;;;;;
+13642;EGYPTIAN HIEROGLYPH-13642;Lo;0;L;;;;;N;;;;;
+13643;EGYPTIAN HIEROGLYPH-13643;Lo;0;L;;;;;N;;;;;
+13644;EGYPTIAN HIEROGLYPH-13644;Lo;0;L;;;;;N;;;;;
+13645;EGYPTIAN HIEROGLYPH-13645;Lo;0;L;;;;;N;;;;;
+13646;EGYPTIAN HIEROGLYPH-13646;Lo;0;L;;;;;N;;;;;
+13647;EGYPTIAN HIEROGLYPH-13647;Lo;0;L;;;;;N;;;;;
+13648;EGYPTIAN HIEROGLYPH-13648;Lo;0;L;;;;;N;;;;;
+13649;EGYPTIAN HIEROGLYPH-13649;Lo;0;L;;;;;N;;;;;
+1364A;EGYPTIAN HIEROGLYPH-1364A;Lo;0;L;;;;;N;;;;;
+1364B;EGYPTIAN HIEROGLYPH-1364B;Lo;0;L;;;;;N;;;;;
+1364C;EGYPTIAN HIEROGLYPH-1364C;Lo;0;L;;;;;N;;;;;
+1364D;EGYPTIAN HIEROGLYPH-1364D;Lo;0;L;;;;;N;;;;;
+1364E;EGYPTIAN HIEROGLYPH-1364E;Lo;0;L;;;;;N;;;;;
+1364F;EGYPTIAN HIEROGLYPH-1364F;Lo;0;L;;;;;N;;;;;
+13650;EGYPTIAN HIEROGLYPH-13650;Lo;0;L;;;;;N;;;;;
+13651;EGYPTIAN HIEROGLYPH-13651;Lo;0;L;;;;;N;;;;;
+13652;EGYPTIAN HIEROGLYPH-13652;Lo;0;L;;;;;N;;;;;
+13653;EGYPTIAN HIEROGLYPH-13653;Lo;0;L;;;;;N;;;;;
+13654;EGYPTIAN HIEROGLYPH-13654;Lo;0;L;;;;;N;;;;;
+13655;EGYPTIAN HIEROGLYPH-13655;Lo;0;L;;;;;N;;;;;
+13656;EGYPTIAN HIEROGLYPH-13656;Lo;0;L;;;;;N;;;;;
+13657;EGYPTIAN HIEROGLYPH-13657;Lo;0;L;;;;;N;;;;;
+13658;EGYPTIAN HIEROGLYPH-13658;Lo;0;L;;;;;N;;;;;
+13659;EGYPTIAN HIEROGLYPH-13659;Lo;0;L;;;;;N;;;;;
+1365A;EGYPTIAN HIEROGLYPH-1365A;Lo;0;L;;;;;N;;;;;
+1365B;EGYPTIAN HIEROGLYPH-1365B;Lo;0;L;;;;;N;;;;;
+1365C;EGYPTIAN HIEROGLYPH-1365C;Lo;0;L;;;;;N;;;;;
+1365D;EGYPTIAN HIEROGLYPH-1365D;Lo;0;L;;;;;N;;;;;
+1365E;EGYPTIAN HIEROGLYPH-1365E;Lo;0;L;;;;;N;;;;;
+1365F;EGYPTIAN HIEROGLYPH-1365F;Lo;0;L;;;;;N;;;;;
+13660;EGYPTIAN HIEROGLYPH-13660;Lo;0;L;;;;;N;;;;;
+13661;EGYPTIAN HIEROGLYPH-13661;Lo;0;L;;;;;N;;;;;
+13662;EGYPTIAN HIEROGLYPH-13662;Lo;0;L;;;;;N;;;;;
+13663;EGYPTIAN HIEROGLYPH-13663;Lo;0;L;;;;;N;;;;;
+13664;EGYPTIAN HIEROGLYPH-13664;Lo;0;L;;;;;N;;;;;
+13665;EGYPTIAN HIEROGLYPH-13665;Lo;0;L;;;;;N;;;;;
+13666;EGYPTIAN HIEROGLYPH-13666;Lo;0;L;;;;;N;;;;;
+13667;EGYPTIAN HIEROGLYPH-13667;Lo;0;L;;;;;N;;;;;
+13668;EGYPTIAN HIEROGLYPH-13668;Lo;0;L;;;;;N;;;;;
+13669;EGYPTIAN HIEROGLYPH-13669;Lo;0;L;;;;;N;;;;;
+1366A;EGYPTIAN HIEROGLYPH-1366A;Lo;0;L;;;;;N;;;;;
+1366B;EGYPTIAN HIEROGLYPH-1366B;Lo;0;L;;;;;N;;;;;
+1366C;EGYPTIAN HIEROGLYPH-1366C;Lo;0;L;;;;;N;;;;;
+1366D;EGYPTIAN HIEROGLYPH-1366D;Lo;0;L;;;;;N;;;;;
+1366E;EGYPTIAN HIEROGLYPH-1366E;Lo;0;L;;;;;N;;;;;
+1366F;EGYPTIAN HIEROGLYPH-1366F;Lo;0;L;;;;;N;;;;;
+13670;EGYPTIAN HIEROGLYPH-13670;Lo;0;L;;;;;N;;;;;
+13671;EGYPTIAN HIEROGLYPH-13671;Lo;0;L;;;;;N;;;;;
+13672;EGYPTIAN HIEROGLYPH-13672;Lo;0;L;;;;;N;;;;;
+13673;EGYPTIAN HIEROGLYPH-13673;Lo;0;L;;;;;N;;;;;
+13674;EGYPTIAN HIEROGLYPH-13674;Lo;0;L;;;;;N;;;;;
+13675;EGYPTIAN HIEROGLYPH-13675;Lo;0;L;;;;;N;;;;;
+13676;EGYPTIAN HIEROGLYPH-13676;Lo;0;L;;;;;N;;;;;
+13677;EGYPTIAN HIEROGLYPH-13677;Lo;0;L;;;;;N;;;;;
+13678;EGYPTIAN HIEROGLYPH-13678;Lo;0;L;;;;;N;;;;;
+13679;EGYPTIAN HIEROGLYPH-13679;Lo;0;L;;;;;N;;;;;
+1367A;EGYPTIAN HIEROGLYPH-1367A;Lo;0;L;;;;;N;;;;;
+1367B;EGYPTIAN HIEROGLYPH-1367B;Lo;0;L;;;;;N;;;;;
+1367C;EGYPTIAN HIEROGLYPH-1367C;Lo;0;L;;;;;N;;;;;
+1367D;EGYPTIAN HIEROGLYPH-1367D;Lo;0;L;;;;;N;;;;;
+1367E;EGYPTIAN HIEROGLYPH-1367E;Lo;0;L;;;;;N;;;;;
+1367F;EGYPTIAN HIEROGLYPH-1367F;Lo;0;L;;;;;N;;;;;
+13680;EGYPTIAN HIEROGLYPH-13680;Lo;0;L;;;;;N;;;;;
+13681;EGYPTIAN HIEROGLYPH-13681;Lo;0;L;;;;;N;;;;;
+13682;EGYPTIAN HIEROGLYPH-13682;Lo;0;L;;;;;N;;;;;
+13683;EGYPTIAN HIEROGLYPH-13683;Lo;0;L;;;;;N;;;;;
+13684;EGYPTIAN HIEROGLYPH-13684;Lo;0;L;;;;;N;;;;;
+13685;EGYPTIAN HIEROGLYPH-13685;Lo;0;L;;;;;N;;;;;
+13686;EGYPTIAN HIEROGLYPH-13686;Lo;0;L;;;;;N;;;;;
+13687;EGYPTIAN HIEROGLYPH-13687;Lo;0;L;;;;;N;;;;;
+13688;EGYPTIAN HIEROGLYPH-13688;Lo;0;L;;;;;N;;;;;
+13689;EGYPTIAN HIEROGLYPH-13689;Lo;0;L;;;;;N;;;;;
+1368A;EGYPTIAN HIEROGLYPH-1368A;Lo;0;L;;;;;N;;;;;
+1368B;EGYPTIAN HIEROGLYPH-1368B;Lo;0;L;;;;;N;;;;;
+1368C;EGYPTIAN HIEROGLYPH-1368C;Lo;0;L;;;;;N;;;;;
+1368D;EGYPTIAN HIEROGLYPH-1368D;Lo;0;L;;;;;N;;;;;
+1368E;EGYPTIAN HIEROGLYPH-1368E;Lo;0;L;;;;;N;;;;;
+1368F;EGYPTIAN HIEROGLYPH-1368F;Lo;0;L;;;;;N;;;;;
+13690;EGYPTIAN HIEROGLYPH-13690;Lo;0;L;;;;;N;;;;;
+13691;EGYPTIAN HIEROGLYPH-13691;Lo;0;L;;;;;N;;;;;
+13692;EGYPTIAN HIEROGLYPH-13692;Lo;0;L;;;;;N;;;;;
+13693;EGYPTIAN HIEROGLYPH-13693;Lo;0;L;;;;;N;;;;;
+13694;EGYPTIAN HIEROGLYPH-13694;Lo;0;L;;;;;N;;;;;
+13695;EGYPTIAN HIEROGLYPH-13695;Lo;0;L;;;;;N;;;;;
+13696;EGYPTIAN HIEROGLYPH-13696;Lo;0;L;;;;;N;;;;;
+13697;EGYPTIAN HIEROGLYPH-13697;Lo;0;L;;;;;N;;;;;
+13698;EGYPTIAN HIEROGLYPH-13698;Lo;0;L;;;;;N;;;;;
+13699;EGYPTIAN HIEROGLYPH-13699;Lo;0;L;;;;;N;;;;;
+1369A;EGYPTIAN HIEROGLYPH-1369A;Lo;0;L;;;;;N;;;;;
+1369B;EGYPTIAN HIEROGLYPH-1369B;Lo;0;L;;;;;N;;;;;
+1369C;EGYPTIAN HIEROGLYPH-1369C;Lo;0;L;;;;;N;;;;;
+1369D;EGYPTIAN HIEROGLYPH-1369D;Lo;0;L;;;;;N;;;;;
+1369E;EGYPTIAN HIEROGLYPH-1369E;Lo;0;L;;;;;N;;;;;
+1369F;EGYPTIAN HIEROGLYPH-1369F;Lo;0;L;;;;;N;;;;;
+136A0;EGYPTIAN HIEROGLYPH-136A0;Lo;0;L;;;;;N;;;;;
+136A1;EGYPTIAN HIEROGLYPH-136A1;Lo;0;L;;;;;N;;;;;
+136A2;EGYPTIAN HIEROGLYPH-136A2;Lo;0;L;;;;;N;;;;;
+136A3;EGYPTIAN HIEROGLYPH-136A3;Lo;0;L;;;;;N;;;;;
+136A4;EGYPTIAN HIEROGLYPH-136A4;Lo;0;L;;;;;N;;;;;
+136A5;EGYPTIAN HIEROGLYPH-136A5;Lo;0;L;;;;;N;;;;;
+136A6;EGYPTIAN HIEROGLYPH-136A6;Lo;0;L;;;;;N;;;;;
+136A7;EGYPTIAN HIEROGLYPH-136A7;Lo;0;L;;;;;N;;;;;
+136A8;EGYPTIAN HIEROGLYPH-136A8;Lo;0;L;;;;;N;;;;;
+136A9;EGYPTIAN HIEROGLYPH-136A9;Lo;0;L;;;;;N;;;;;
+136AA;EGYPTIAN HIEROGLYPH-136AA;Lo;0;L;;;;;N;;;;;
+136AB;EGYPTIAN HIEROGLYPH-136AB;Lo;0;L;;;;;N;;;;;
+136AC;EGYPTIAN HIEROGLYPH-136AC;Lo;0;L;;;;;N;;;;;
+136AD;EGYPTIAN HIEROGLYPH-136AD;Lo;0;L;;;;;N;;;;;
+136AE;EGYPTIAN HIEROGLYPH-136AE;Lo;0;L;;;;;N;;;;;
+136AF;EGYPTIAN HIEROGLYPH-136AF;Lo;0;L;;;;;N;;;;;
+136B0;EGYPTIAN HIEROGLYPH-136B0;Lo;0;L;;;;;N;;;;;
+136B1;EGYPTIAN HIEROGLYPH-136B1;Lo;0;L;;;;;N;;;;;
+136B2;EGYPTIAN HIEROGLYPH-136B2;Lo;0;L;;;;;N;;;;;
+136B3;EGYPTIAN HIEROGLYPH-136B3;Lo;0;L;;;;;N;;;;;
+136B4;EGYPTIAN HIEROGLYPH-136B4;Lo;0;L;;;;;N;;;;;
+136B5;EGYPTIAN HIEROGLYPH-136B5;Lo;0;L;;;;;N;;;;;
+136B6;EGYPTIAN HIEROGLYPH-136B6;Lo;0;L;;;;;N;;;;;
+136B7;EGYPTIAN HIEROGLYPH-136B7;Lo;0;L;;;;;N;;;;;
+136B8;EGYPTIAN HIEROGLYPH-136B8;Lo;0;L;;;;;N;;;;;
+136B9;EGYPTIAN HIEROGLYPH-136B9;Lo;0;L;;;;;N;;;;;
+136BA;EGYPTIAN HIEROGLYPH-136BA;Lo;0;L;;;;;N;;;;;
+136BB;EGYPTIAN HIEROGLYPH-136BB;Lo;0;L;;;;;N;;;;;
+136BC;EGYPTIAN HIEROGLYPH-136BC;Lo;0;L;;;;;N;;;;;
+136BD;EGYPTIAN HIEROGLYPH-136BD;Lo;0;L;;;;;N;;;;;
+136BE;EGYPTIAN HIEROGLYPH-136BE;Lo;0;L;;;;;N;;;;;
+136BF;EGYPTIAN HIEROGLYPH-136BF;Lo;0;L;;;;;N;;;;;
+136C0;EGYPTIAN HIEROGLYPH-136C0;Lo;0;L;;;;;N;;;;;
+136C1;EGYPTIAN HIEROGLYPH-136C1;Lo;0;L;;;;;N;;;;;
+136C2;EGYPTIAN HIEROGLYPH-136C2;Lo;0;L;;;;;N;;;;;
+136C3;EGYPTIAN HIEROGLYPH-136C3;Lo;0;L;;;;;N;;;;;
+136C4;EGYPTIAN HIEROGLYPH-136C4;Lo;0;L;;;;;N;;;;;
+136C5;EGYPTIAN HIEROGLYPH-136C5;Lo;0;L;;;;;N;;;;;
+136C6;EGYPTIAN HIEROGLYPH-136C6;Lo;0;L;;;;;N;;;;;
+136C7;EGYPTIAN HIEROGLYPH-136C7;Lo;0;L;;;;;N;;;;;
+136C8;EGYPTIAN HIEROGLYPH-136C8;Lo;0;L;;;;;N;;;;;
+136C9;EGYPTIAN HIEROGLYPH-136C9;Lo;0;L;;;;;N;;;;;
+136CA;EGYPTIAN HIEROGLYPH-136CA;Lo;0;L;;;;;N;;;;;
+136CB;EGYPTIAN HIEROGLYPH-136CB;Lo;0;L;;;;;N;;;;;
+136CC;EGYPTIAN HIEROGLYPH-136CC;Lo;0;L;;;;;N;;;;;
+136CD;EGYPTIAN HIEROGLYPH-136CD;Lo;0;L;;;;;N;;;;;
+136CE;EGYPTIAN HIEROGLYPH-136CE;Lo;0;L;;;;;N;;;;;
+136CF;EGYPTIAN HIEROGLYPH-136CF;Lo;0;L;;;;;N;;;;;
+136D0;EGYPTIAN HIEROGLYPH-136D0;Lo;0;L;;;;;N;;;;;
+136D1;EGYPTIAN HIEROGLYPH-136D1;Lo;0;L;;;;;N;;;;;
+136D2;EGYPTIAN HIEROGLYPH-136D2;Lo;0;L;;;;;N;;;;;
+136D3;EGYPTIAN HIEROGLYPH-136D3;Lo;0;L;;;;;N;;;;;
+136D4;EGYPTIAN HIEROGLYPH-136D4;Lo;0;L;;;;;N;;;;;
+136D5;EGYPTIAN HIEROGLYPH-136D5;Lo;0;L;;;;;N;;;;;
+136D6;EGYPTIAN HIEROGLYPH-136D6;Lo;0;L;;;;;N;;;;;
+136D7;EGYPTIAN HIEROGLYPH-136D7;Lo;0;L;;;;;N;;;;;
+136D8;EGYPTIAN HIEROGLYPH-136D8;Lo;0;L;;;;;N;;;;;
+136D9;EGYPTIAN HIEROGLYPH-136D9;Lo;0;L;;;;;N;;;;;
+136DA;EGYPTIAN HIEROGLYPH-136DA;Lo;0;L;;;;;N;;;;;
+136DB;EGYPTIAN HIEROGLYPH-136DB;Lo;0;L;;;;;N;;;;;
+136DC;EGYPTIAN HIEROGLYPH-136DC;Lo;0;L;;;;;N;;;;;
+136DD;EGYPTIAN HIEROGLYPH-136DD;Lo;0;L;;;;;N;;;;;
+136DE;EGYPTIAN HIEROGLYPH-136DE;Lo;0;L;;;;;N;;;;;
+136DF;EGYPTIAN HIEROGLYPH-136DF;Lo;0;L;;;;;N;;;;;
+136E0;EGYPTIAN HIEROGLYPH-136E0;Lo;0;L;;;;;N;;;;;
+136E1;EGYPTIAN HIEROGLYPH-136E1;Lo;0;L;;;;;N;;;;;
+136E2;EGYPTIAN HIEROGLYPH-136E2;Lo;0;L;;;;;N;;;;;
+136E3;EGYPTIAN HIEROGLYPH-136E3;Lo;0;L;;;;;N;;;;;
+136E4;EGYPTIAN HIEROGLYPH-136E4;Lo;0;L;;;;;N;;;;;
+136E5;EGYPTIAN HIEROGLYPH-136E5;Lo;0;L;;;;;N;;;;;
+136E6;EGYPTIAN HIEROGLYPH-136E6;Lo;0;L;;;;;N;;;;;
+136E7;EGYPTIAN HIEROGLYPH-136E7;Lo;0;L;;;;;N;;;;;
+136E8;EGYPTIAN HIEROGLYPH-136E8;Lo;0;L;;;;;N;;;;;
+136E9;EGYPTIAN HIEROGLYPH-136E9;Lo;0;L;;;;;N;;;;;
+136EA;EGYPTIAN HIEROGLYPH-136EA;Lo;0;L;;;;;N;;;;;
+136EB;EGYPTIAN HIEROGLYPH-136EB;Lo;0;L;;;;;N;;;;;
+136EC;EGYPTIAN HIEROGLYPH-136EC;Lo;0;L;;;;;N;;;;;
+136ED;EGYPTIAN HIEROGLYPH-136ED;Lo;0;L;;;;;N;;;;;
+136EE;EGYPTIAN HIEROGLYPH-136EE;Lo;0;L;;;;;N;;;;;
+136EF;EGYPTIAN HIEROGLYPH-136EF;Lo;0;L;;;;;N;;;;;
+136F0;EGYPTIAN HIEROGLYPH-136F0;Lo;0;L;;;;;N;;;;;
+136F1;EGYPTIAN HIEROGLYPH-136F1;Lo;0;L;;;;;N;;;;;
+136F2;EGYPTIAN HIEROGLYPH-136F2;Lo;0;L;;;;;N;;;;;
+136F3;EGYPTIAN HIEROGLYPH-136F3;Lo;0;L;;;;;N;;;;;
+136F4;EGYPTIAN HIEROGLYPH-136F4;Lo;0;L;;;;;N;;;;;
+136F5;EGYPTIAN HIEROGLYPH-136F5;Lo;0;L;;;;;N;;;;;
+136F6;EGYPTIAN HIEROGLYPH-136F6;Lo;0;L;;;;;N;;;;;
+136F7;EGYPTIAN HIEROGLYPH-136F7;Lo;0;L;;;;;N;;;;;
+136F8;EGYPTIAN HIEROGLYPH-136F8;Lo;0;L;;;;;N;;;;;
+136F9;EGYPTIAN HIEROGLYPH-136F9;Lo;0;L;;;;;N;;;;;
+136FA;EGYPTIAN HIEROGLYPH-136FA;Lo;0;L;;;;;N;;;;;
+136FB;EGYPTIAN HIEROGLYPH-136FB;Lo;0;L;;;;;N;;;;;
+136FC;EGYPTIAN HIEROGLYPH-136FC;Lo;0;L;;;;;N;;;;;
+136FD;EGYPTIAN HIEROGLYPH-136FD;Lo;0;L;;;;;N;;;;;
+136FE;EGYPTIAN HIEROGLYPH-136FE;Lo;0;L;;;;;N;;;;;
+136FF;EGYPTIAN HIEROGLYPH-136FF;Lo;0;L;;;;;N;;;;;
+13700;EGYPTIAN HIEROGLYPH-13700;Lo;0;L;;;;;N;;;;;
+13701;EGYPTIAN HIEROGLYPH-13701;Lo;0;L;;;;;N;;;;;
+13702;EGYPTIAN HIEROGLYPH-13702;Lo;0;L;;;;;N;;;;;
+13703;EGYPTIAN HIEROGLYPH-13703;Lo;0;L;;;;;N;;;;;
+13704;EGYPTIAN HIEROGLYPH-13704;Lo;0;L;;;;;N;;;;;
+13705;EGYPTIAN HIEROGLYPH-13705;Lo;0;L;;;;;N;;;;;
+13706;EGYPTIAN HIEROGLYPH-13706;Lo;0;L;;;;;N;;;;;
+13707;EGYPTIAN HIEROGLYPH-13707;Lo;0;L;;;;;N;;;;;
+13708;EGYPTIAN HIEROGLYPH-13708;Lo;0;L;;;;;N;;;;;
+13709;EGYPTIAN HIEROGLYPH-13709;Lo;0;L;;;;;N;;;;;
+1370A;EGYPTIAN HIEROGLYPH-1370A;Lo;0;L;;;;;N;;;;;
+1370B;EGYPTIAN HIEROGLYPH-1370B;Lo;0;L;;;;;N;;;;;
+1370C;EGYPTIAN HIEROGLYPH-1370C;Lo;0;L;;;;;N;;;;;
+1370D;EGYPTIAN HIEROGLYPH-1370D;Lo;0;L;;;;;N;;;;;
+1370E;EGYPTIAN HIEROGLYPH-1370E;Lo;0;L;;;;;N;;;;;
+1370F;EGYPTIAN HIEROGLYPH-1370F;Lo;0;L;;;;;N;;;;;
+13710;EGYPTIAN HIEROGLYPH-13710;Lo;0;L;;;;;N;;;;;
+13711;EGYPTIAN HIEROGLYPH-13711;Lo;0;L;;;;;N;;;;;
+13712;EGYPTIAN HIEROGLYPH-13712;Lo;0;L;;;;;N;;;;;
+13713;EGYPTIAN HIEROGLYPH-13713;Lo;0;L;;;;;N;;;;;
+13714;EGYPTIAN HIEROGLYPH-13714;Lo;0;L;;;;;N;;;;;
+13715;EGYPTIAN HIEROGLYPH-13715;Lo;0;L;;;;;N;;;;;
+13716;EGYPTIAN HIEROGLYPH-13716;Lo;0;L;;;;;N;;;;;
+13717;EGYPTIAN HIEROGLYPH-13717;Lo;0;L;;;;;N;;;;;
+13718;EGYPTIAN HIEROGLYPH-13718;Lo;0;L;;;;;N;;;;;
+13719;EGYPTIAN HIEROGLYPH-13719;Lo;0;L;;;;;N;;;;;
+1371A;EGYPTIAN HIEROGLYPH-1371A;Lo;0;L;;;;;N;;;;;
+1371B;EGYPTIAN HIEROGLYPH-1371B;Lo;0;L;;;;;N;;;;;
+1371C;EGYPTIAN HIEROGLYPH-1371C;Lo;0;L;;;;;N;;;;;
+1371D;EGYPTIAN HIEROGLYPH-1371D;Lo;0;L;;;;;N;;;;;
+1371E;EGYPTIAN HIEROGLYPH-1371E;Lo;0;L;;;;;N;;;;;
+1371F;EGYPTIAN HIEROGLYPH-1371F;Lo;0;L;;;;;N;;;;;
+13720;EGYPTIAN HIEROGLYPH-13720;Lo;0;L;;;;;N;;;;;
+13721;EGYPTIAN HIEROGLYPH-13721;Lo;0;L;;;;;N;;;;;
+13722;EGYPTIAN HIEROGLYPH-13722;Lo;0;L;;;;;N;;;;;
+13723;EGYPTIAN HIEROGLYPH-13723;Lo;0;L;;;;;N;;;;;
+13724;EGYPTIAN HIEROGLYPH-13724;Lo;0;L;;;;;N;;;;;
+13725;EGYPTIAN HIEROGLYPH-13725;Lo;0;L;;;;;N;;;;;
+13726;EGYPTIAN HIEROGLYPH-13726;Lo;0;L;;;;;N;;;;;
+13727;EGYPTIAN HIEROGLYPH-13727;Lo;0;L;;;;;N;;;;;
+13728;EGYPTIAN HIEROGLYPH-13728;Lo;0;L;;;;;N;;;;;
+13729;EGYPTIAN HIEROGLYPH-13729;Lo;0;L;;;;;N;;;;;
+1372A;EGYPTIAN HIEROGLYPH-1372A;Lo;0;L;;;;;N;;;;;
+1372B;EGYPTIAN HIEROGLYPH-1372B;Lo;0;L;;;;;N;;;;;
+1372C;EGYPTIAN HIEROGLYPH-1372C;Lo;0;L;;;;;N;;;;;
+1372D;EGYPTIAN HIEROGLYPH-1372D;Lo;0;L;;;;;N;;;;;
+1372E;EGYPTIAN HIEROGLYPH-1372E;Lo;0;L;;;;;N;;;;;
+1372F;EGYPTIAN HIEROGLYPH-1372F;Lo;0;L;;;;;N;;;;;
+13730;EGYPTIAN HIEROGLYPH-13730;Lo;0;L;;;;;N;;;;;
+13731;EGYPTIAN HIEROGLYPH-13731;Lo;0;L;;;;;N;;;;;
+13732;EGYPTIAN HIEROGLYPH-13732;Lo;0;L;;;;;N;;;;;
+13733;EGYPTIAN HIEROGLYPH-13733;Lo;0;L;;;;;N;;;;;
+13734;EGYPTIAN HIEROGLYPH-13734;Lo;0;L;;;;;N;;;;;
+13735;EGYPTIAN HIEROGLYPH-13735;Lo;0;L;;;;;N;;;;;
+13736;EGYPTIAN HIEROGLYPH-13736;Lo;0;L;;;;;N;;;;;
+13737;EGYPTIAN HIEROGLYPH-13737;Lo;0;L;;;;;N;;;;;
+13738;EGYPTIAN HIEROGLYPH-13738;Lo;0;L;;;;;N;;;;;
+13739;EGYPTIAN HIEROGLYPH-13739;Lo;0;L;;;;;N;;;;;
+1373A;EGYPTIAN HIEROGLYPH-1373A;Lo;0;L;;;;;N;;;;;
+1373B;EGYPTIAN HIEROGLYPH-1373B;Lo;0;L;;;;;N;;;;;
+1373C;EGYPTIAN HIEROGLYPH-1373C;Lo;0;L;;;;;N;;;;;
+1373D;EGYPTIAN HIEROGLYPH-1373D;Lo;0;L;;;;;N;;;;;
+1373E;EGYPTIAN HIEROGLYPH-1373E;Lo;0;L;;;;;N;;;;;
+1373F;EGYPTIAN HIEROGLYPH-1373F;Lo;0;L;;;;;N;;;;;
+13740;EGYPTIAN HIEROGLYPH-13740;Lo;0;L;;;;;N;;;;;
+13741;EGYPTIAN HIEROGLYPH-13741;Lo;0;L;;;;;N;;;;;
+13742;EGYPTIAN HIEROGLYPH-13742;Lo;0;L;;;;;N;;;;;
+13743;EGYPTIAN HIEROGLYPH-13743;Lo;0;L;;;;;N;;;;;
+13744;EGYPTIAN HIEROGLYPH-13744;Lo;0;L;;;;;N;;;;;
+13745;EGYPTIAN HIEROGLYPH-13745;Lo;0;L;;;;;N;;;;;
+13746;EGYPTIAN HIEROGLYPH-13746;Lo;0;L;;;;;N;;;;;
+13747;EGYPTIAN HIEROGLYPH-13747;Lo;0;L;;;;;N;;;;;
+13748;EGYPTIAN HIEROGLYPH-13748;Lo;0;L;;;;;N;;;;;
+13749;EGYPTIAN HIEROGLYPH-13749;Lo;0;L;;;;;N;;;;;
+1374A;EGYPTIAN HIEROGLYPH-1374A;Lo;0;L;;;;;N;;;;;
+1374B;EGYPTIAN HIEROGLYPH-1374B;Lo;0;L;;;;;N;;;;;
+1374C;EGYPTIAN HIEROGLYPH-1374C;Lo;0;L;;;;;N;;;;;
+1374D;EGYPTIAN HIEROGLYPH-1374D;Lo;0;L;;;;;N;;;;;
+1374E;EGYPTIAN HIEROGLYPH-1374E;Lo;0;L;;;;;N;;;;;
+1374F;EGYPTIAN HIEROGLYPH-1374F;Lo;0;L;;;;;N;;;;;
+13750;EGYPTIAN HIEROGLYPH-13750;Lo;0;L;;;;;N;;;;;
+13751;EGYPTIAN HIEROGLYPH-13751;Lo;0;L;;;;;N;;;;;
+13752;EGYPTIAN HIEROGLYPH-13752;Lo;0;L;;;;;N;;;;;
+13753;EGYPTIAN HIEROGLYPH-13753;Lo;0;L;;;;;N;;;;;
+13754;EGYPTIAN HIEROGLYPH-13754;Lo;0;L;;;;;N;;;;;
+13755;EGYPTIAN HIEROGLYPH-13755;Lo;0;L;;;;;N;;;;;
+13756;EGYPTIAN HIEROGLYPH-13756;Lo;0;L;;;;;N;;;;;
+13757;EGYPTIAN HIEROGLYPH-13757;Lo;0;L;;;;;N;;;;;
+13758;EGYPTIAN HIEROGLYPH-13758;Lo;0;L;;;;;N;;;;;
+13759;EGYPTIAN HIEROGLYPH-13759;Lo;0;L;;;;;N;;;;;
+1375A;EGYPTIAN HIEROGLYPH-1375A;Lo;0;L;;;;;N;;;;;
+1375B;EGYPTIAN HIEROGLYPH-1375B;Lo;0;L;;;;;N;;;;;
+1375C;EGYPTIAN HIEROGLYPH-1375C;Lo;0;L;;;;;N;;;;;
+1375D;EGYPTIAN HIEROGLYPH-1375D;Lo;0;L;;;;;N;;;;;
+1375E;EGYPTIAN HIEROGLYPH-1375E;Lo;0;L;;;;;N;;;;;
+1375F;EGYPTIAN HIEROGLYPH-1375F;Lo;0;L;;;;;N;;;;;
+13760;EGYPTIAN HIEROGLYPH-13760;Lo;0;L;;;;;N;;;;;
+13761;EGYPTIAN HIEROGLYPH-13761;Lo;0;L;;;;;N;;;;;
+13762;EGYPTIAN HIEROGLYPH-13762;Lo;0;L;;;;;N;;;;;
+13763;EGYPTIAN HIEROGLYPH-13763;Lo;0;L;;;;;N;;;;;
+13764;EGYPTIAN HIEROGLYPH-13764;Lo;0;L;;;;;N;;;;;
+13765;EGYPTIAN HIEROGLYPH-13765;Lo;0;L;;;;;N;;;;;
+13766;EGYPTIAN HIEROGLYPH-13766;Lo;0;L;;;;;N;;;;;
+13767;EGYPTIAN HIEROGLYPH-13767;Lo;0;L;;;;;N;;;;;
+13768;EGYPTIAN HIEROGLYPH-13768;Lo;0;L;;;;;N;;;;;
+13769;EGYPTIAN HIEROGLYPH-13769;Lo;0;L;;;;;N;;;;;
+1376A;EGYPTIAN HIEROGLYPH-1376A;Lo;0;L;;;;;N;;;;;
+1376B;EGYPTIAN HIEROGLYPH-1376B;Lo;0;L;;;;;N;;;;;
+1376C;EGYPTIAN HIEROGLYPH-1376C;Lo;0;L;;;;;N;;;;;
+1376D;EGYPTIAN HIEROGLYPH-1376D;Lo;0;L;;;;;N;;;;;
+1376E;EGYPTIAN HIEROGLYPH-1376E;Lo;0;L;;;;;N;;;;;
+1376F;EGYPTIAN HIEROGLYPH-1376F;Lo;0;L;;;;;N;;;;;
+13770;EGYPTIAN HIEROGLYPH-13770;Lo;0;L;;;;;N;;;;;
+13771;EGYPTIAN HIEROGLYPH-13771;Lo;0;L;;;;;N;;;;;
+13772;EGYPTIAN HIEROGLYPH-13772;Lo;0;L;;;;;N;;;;;
+13773;EGYPTIAN HIEROGLYPH-13773;Lo;0;L;;;;;N;;;;;
+13774;EGYPTIAN HIEROGLYPH-13774;Lo;0;L;;;;;N;;;;;
+13775;EGYPTIAN HIEROGLYPH-13775;Lo;0;L;;;;;N;;;;;
+13776;EGYPTIAN HIEROGLYPH-13776;Lo;0;L;;;;;N;;;;;
+13777;EGYPTIAN HIEROGLYPH-13777;Lo;0;L;;;;;N;;;;;
+13778;EGYPTIAN HIEROGLYPH-13778;Lo;0;L;;;;;N;;;;;
+13779;EGYPTIAN HIEROGLYPH-13779;Lo;0;L;;;;;N;;;;;
+1377A;EGYPTIAN HIEROGLYPH-1377A;Lo;0;L;;;;;N;;;;;
+1377B;EGYPTIAN HIEROGLYPH-1377B;Lo;0;L;;;;;N;;;;;
+1377C;EGYPTIAN HIEROGLYPH-1377C;Lo;0;L;;;;;N;;;;;
+1377D;EGYPTIAN HIEROGLYPH-1377D;Lo;0;L;;;;;N;;;;;
+1377E;EGYPTIAN HIEROGLYPH-1377E;Lo;0;L;;;;;N;;;;;
+1377F;EGYPTIAN HIEROGLYPH-1377F;Lo;0;L;;;;;N;;;;;
+13780;EGYPTIAN HIEROGLYPH-13780;Lo;0;L;;;;;N;;;;;
+13781;EGYPTIAN HIEROGLYPH-13781;Lo;0;L;;;;;N;;;;;
+13782;EGYPTIAN HIEROGLYPH-13782;Lo;0;L;;;;;N;;;;;
+13783;EGYPTIAN HIEROGLYPH-13783;Lo;0;L;;;;;N;;;;;
+13784;EGYPTIAN HIEROGLYPH-13784;Lo;0;L;;;;;N;;;;;
+13785;EGYPTIAN HIEROGLYPH-13785;Lo;0;L;;;;;N;;;;;
+13786;EGYPTIAN HIEROGLYPH-13786;Lo;0;L;;;;;N;;;;;
+13787;EGYPTIAN HIEROGLYPH-13787;Lo;0;L;;;;;N;;;;;
+13788;EGYPTIAN HIEROGLYPH-13788;Lo;0;L;;;;;N;;;;;
+13789;EGYPTIAN HIEROGLYPH-13789;Lo;0;L;;;;;N;;;;;
+1378A;EGYPTIAN HIEROGLYPH-1378A;Lo;0;L;;;;;N;;;;;
+1378B;EGYPTIAN HIEROGLYPH-1378B;Lo;0;L;;;;;N;;;;;
+1378C;EGYPTIAN HIEROGLYPH-1378C;Lo;0;L;;;;;N;;;;;
+1378D;EGYPTIAN HIEROGLYPH-1378D;Lo;0;L;;;;;N;;;;;
+1378E;EGYPTIAN HIEROGLYPH-1378E;Lo;0;L;;;;;N;;;;;
+1378F;EGYPTIAN HIEROGLYPH-1378F;Lo;0;L;;;;;N;;;;;
+13790;EGYPTIAN HIEROGLYPH-13790;Lo;0;L;;;;;N;;;;;
+13791;EGYPTIAN HIEROGLYPH-13791;Lo;0;L;;;;;N;;;;;
+13792;EGYPTIAN HIEROGLYPH-13792;Lo;0;L;;;;;N;;;;;
+13793;EGYPTIAN HIEROGLYPH-13793;Lo;0;L;;;;;N;;;;;
+13794;EGYPTIAN HIEROGLYPH-13794;Lo;0;L;;;;;N;;;;;
+13795;EGYPTIAN HIEROGLYPH-13795;Lo;0;L;;;;;N;;;;;
+13796;EGYPTIAN HIEROGLYPH-13796;Lo;0;L;;;;;N;;;;;
+13797;EGYPTIAN HIEROGLYPH-13797;Lo;0;L;;;;;N;;;;;
+13798;EGYPTIAN HIEROGLYPH-13798;Lo;0;L;;;;;N;;;;;
+13799;EGYPTIAN HIEROGLYPH-13799;Lo;0;L;;;;;N;;;;;
+1379A;EGYPTIAN HIEROGLYPH-1379A;Lo;0;L;;;;;N;;;;;
+1379B;EGYPTIAN HIEROGLYPH-1379B;Lo;0;L;;;;;N;;;;;
+1379C;EGYPTIAN HIEROGLYPH-1379C;Lo;0;L;;;;;N;;;;;
+1379D;EGYPTIAN HIEROGLYPH-1379D;Lo;0;L;;;;;N;;;;;
+1379E;EGYPTIAN HIEROGLYPH-1379E;Lo;0;L;;;;;N;;;;;
+1379F;EGYPTIAN HIEROGLYPH-1379F;Lo;0;L;;;;;N;;;;;
+137A0;EGYPTIAN HIEROGLYPH-137A0;Lo;0;L;;;;;N;;;;;
+137A1;EGYPTIAN HIEROGLYPH-137A1;Lo;0;L;;;;;N;;;;;
+137A2;EGYPTIAN HIEROGLYPH-137A2;Lo;0;L;;;;;N;;;;;
+137A3;EGYPTIAN HIEROGLYPH-137A3;Lo;0;L;;;;;N;;;;;
+137A4;EGYPTIAN HIEROGLYPH-137A4;Lo;0;L;;;;;N;;;;;
+137A5;EGYPTIAN HIEROGLYPH-137A5;Lo;0;L;;;;;N;;;;;
+137A6;EGYPTIAN HIEROGLYPH-137A6;Lo;0;L;;;;;N;;;;;
+137A7;EGYPTIAN HIEROGLYPH-137A7;Lo;0;L;;;;;N;;;;;
+137A8;EGYPTIAN HIEROGLYPH-137A8;Lo;0;L;;;;;N;;;;;
+137A9;EGYPTIAN HIEROGLYPH-137A9;Lo;0;L;;;;;N;;;;;
+137AA;EGYPTIAN HIEROGLYPH-137AA;Lo;0;L;;;;;N;;;;;
+137AB;EGYPTIAN HIEROGLYPH-137AB;Lo;0;L;;;;;N;;;;;
+137AC;EGYPTIAN HIEROGLYPH-137AC;Lo;0;L;;;;;N;;;;;
+137AD;EGYPTIAN HIEROGLYPH-137AD;Lo;0;L;;;;;N;;;;;
+137AE;EGYPTIAN HIEROGLYPH-137AE;Lo;0;L;;;;;N;;;;;
+137AF;EGYPTIAN HIEROGLYPH-137AF;Lo;0;L;;;;;N;;;;;
+137B0;EGYPTIAN HIEROGLYPH-137B0;Lo;0;L;;;;;N;;;;;
+137B1;EGYPTIAN HIEROGLYPH-137B1;Lo;0;L;;;;;N;;;;;
+137B2;EGYPTIAN HIEROGLYPH-137B2;Lo;0;L;;;;;N;;;;;
+137B3;EGYPTIAN HIEROGLYPH-137B3;Lo;0;L;;;;;N;;;;;
+137B4;EGYPTIAN HIEROGLYPH-137B4;Lo;0;L;;;;;N;;;;;
+137B5;EGYPTIAN HIEROGLYPH-137B5;Lo;0;L;;;;;N;;;;;
+137B6;EGYPTIAN HIEROGLYPH-137B6;Lo;0;L;;;;;N;;;;;
+137B7;EGYPTIAN HIEROGLYPH-137B7;Lo;0;L;;;;;N;;;;;
+137B8;EGYPTIAN HIEROGLYPH-137B8;Lo;0;L;;;;;N;;;;;
+137B9;EGYPTIAN HIEROGLYPH-137B9;Lo;0;L;;;;;N;;;;;
+137BA;EGYPTIAN HIEROGLYPH-137BA;Lo;0;L;;;;;N;;;;;
+137BB;EGYPTIAN HIEROGLYPH-137BB;Lo;0;L;;;;;N;;;;;
+137BC;EGYPTIAN HIEROGLYPH-137BC;Lo;0;L;;;;;N;;;;;
+137BD;EGYPTIAN HIEROGLYPH-137BD;Lo;0;L;;;;;N;;;;;
+137BE;EGYPTIAN HIEROGLYPH-137BE;Lo;0;L;;;;;N;;;;;
+137BF;EGYPTIAN HIEROGLYPH-137BF;Lo;0;L;;;;;N;;;;;
+137C0;EGYPTIAN HIEROGLYPH-137C0;Lo;0;L;;;;;N;;;;;
+137C1;EGYPTIAN HIEROGLYPH-137C1;Lo;0;L;;;;;N;;;;;
+137C2;EGYPTIAN HIEROGLYPH-137C2;Lo;0;L;;;;;N;;;;;
+137C3;EGYPTIAN HIEROGLYPH-137C3;Lo;0;L;;;;;N;;;;;
+137C4;EGYPTIAN HIEROGLYPH-137C4;Lo;0;L;;;;;N;;;;;
+137C5;EGYPTIAN HIEROGLYPH-137C5;Lo;0;L;;;;;N;;;;;
+137C6;EGYPTIAN HIEROGLYPH-137C6;Lo;0;L;;;;;N;;;;;
+137C7;EGYPTIAN HIEROGLYPH-137C7;Lo;0;L;;;;;N;;;;;
+137C8;EGYPTIAN HIEROGLYPH-137C8;Lo;0;L;;;;;N;;;;;
+137C9;EGYPTIAN HIEROGLYPH-137C9;Lo;0;L;;;;;N;;;;;
+137CA;EGYPTIAN HIEROGLYPH-137CA;Lo;0;L;;;;;N;;;;;
+137CB;EGYPTIAN HIEROGLYPH-137CB;Lo;0;L;;;;;N;;;;;
+137CC;EGYPTIAN HIEROGLYPH-137CC;Lo;0;L;;;;;N;;;;;
+137CD;EGYPTIAN HIEROGLYPH-137CD;Lo;0;L;;;;;N;;;;;
+137CE;EGYPTIAN HIEROGLYPH-137CE;Lo;0;L;;;;;N;;;;;
+137CF;EGYPTIAN HIEROGLYPH-137CF;Lo;0;L;;;;;N;;;;;
+137D0;EGYPTIAN HIEROGLYPH-137D0;Lo;0;L;;;;;N;;;;;
+137D1;EGYPTIAN HIEROGLYPH-137D1;Lo;0;L;;;;;N;;;;;
+137D2;EGYPTIAN HIEROGLYPH-137D2;Lo;0;L;;;;;N;;;;;
+137D3;EGYPTIAN HIEROGLYPH-137D3;Lo;0;L;;;;;N;;;;;
+137D4;EGYPTIAN HIEROGLYPH-137D4;Lo;0;L;;;;;N;;;;;
+137D5;EGYPTIAN HIEROGLYPH-137D5;Lo;0;L;;;;;N;;;;;
+137D6;EGYPTIAN HIEROGLYPH-137D6;Lo;0;L;;;;;N;;;;;
+137D7;EGYPTIAN HIEROGLYPH-137D7;Lo;0;L;;;;;N;;;;;
+137D8;EGYPTIAN HIEROGLYPH-137D8;Lo;0;L;;;;;N;;;;;
+137D9;EGYPTIAN HIEROGLYPH-137D9;Lo;0;L;;;;;N;;;;;
+137DA;EGYPTIAN HIEROGLYPH-137DA;Lo;0;L;;;;;N;;;;;
+137DB;EGYPTIAN HIEROGLYPH-137DB;Lo;0;L;;;;;N;;;;;
+137DC;EGYPTIAN HIEROGLYPH-137DC;Lo;0;L;;;;;N;;;;;
+137DD;EGYPTIAN HIEROGLYPH-137DD;Lo;0;L;;;;;N;;;;;
+137DE;EGYPTIAN HIEROGLYPH-137DE;Lo;0;L;;;;;N;;;;;
+137DF;EGYPTIAN HIEROGLYPH-137DF;Lo;0;L;;;;;N;;;;;
+137E0;EGYPTIAN HIEROGLYPH-137E0;Lo;0;L;;;;;N;;;;;
+137E1;EGYPTIAN HIEROGLYPH-137E1;Lo;0;L;;;;;N;;;;;
+137E2;EGYPTIAN HIEROGLYPH-137E2;Lo;0;L;;;;;N;;;;;
+137E3;EGYPTIAN HIEROGLYPH-137E3;Lo;0;L;;;;;N;;;;;
+137E4;EGYPTIAN HIEROGLYPH-137E4;Lo;0;L;;;;;N;;;;;
+137E5;EGYPTIAN HIEROGLYPH-137E5;Lo;0;L;;;;;N;;;;;
+137E6;EGYPTIAN HIEROGLYPH-137E6;Lo;0;L;;;;;N;;;;;
+137E7;EGYPTIAN HIEROGLYPH-137E7;Lo;0;L;;;;;N;;;;;
+137E8;EGYPTIAN HIEROGLYPH-137E8;Lo;0;L;;;;;N;;;;;
+137E9;EGYPTIAN HIEROGLYPH-137E9;Lo;0;L;;;;;N;;;;;
+137EA;EGYPTIAN HIEROGLYPH-137EA;Lo;0;L;;;;;N;;;;;
+137EB;EGYPTIAN HIEROGLYPH-137EB;Lo;0;L;;;;;N;;;;;
+137EC;EGYPTIAN HIEROGLYPH-137EC;Lo;0;L;;;;;N;;;;;
+137ED;EGYPTIAN HIEROGLYPH-137ED;Lo;0;L;;;;;N;;;;;
+137EE;EGYPTIAN HIEROGLYPH-137EE;Lo;0;L;;;;;N;;;;;
+137EF;EGYPTIAN HIEROGLYPH-137EF;Lo;0;L;;;;;N;;;;;
+137F0;EGYPTIAN HIEROGLYPH-137F0;Lo;0;L;;;;;N;;;;;
+137F1;EGYPTIAN HIEROGLYPH-137F1;Lo;0;L;;;;;N;;;;;
+137F2;EGYPTIAN HIEROGLYPH-137F2;Lo;0;L;;;;;N;;;;;
+137F3;EGYPTIAN HIEROGLYPH-137F3;Lo;0;L;;;;;N;;;;;
+137F4;EGYPTIAN HIEROGLYPH-137F4;Lo;0;L;;;;;N;;;;;
+137F5;EGYPTIAN HIEROGLYPH-137F5;Lo;0;L;;;;;N;;;;;
+137F6;EGYPTIAN HIEROGLYPH-137F6;Lo;0;L;;;;;N;;;;;
+137F7;EGYPTIAN HIEROGLYPH-137F7;Lo;0;L;;;;;N;;;;;
+137F8;EGYPTIAN HIEROGLYPH-137F8;Lo;0;L;;;;;N;;;;;
+137F9;EGYPTIAN HIEROGLYPH-137F9;Lo;0;L;;;;;N;;;;;
+137FA;EGYPTIAN HIEROGLYPH-137FA;Lo;0;L;;;;;N;;;;;
+137FB;EGYPTIAN HIEROGLYPH-137FB;Lo;0;L;;;;;N;;;;;
+137FC;EGYPTIAN HIEROGLYPH-137FC;Lo;0;L;;;;;N;;;;;
+137FD;EGYPTIAN HIEROGLYPH-137FD;Lo;0;L;;;;;N;;;;;
+137FE;EGYPTIAN HIEROGLYPH-137FE;Lo;0;L;;;;;N;;;;;
+137FF;EGYPTIAN HIEROGLYPH-137FF;Lo;0;L;;;;;N;;;;;
+13800;EGYPTIAN HIEROGLYPH-13800;Lo;0;L;;;;;N;;;;;
+13801;EGYPTIAN HIEROGLYPH-13801;Lo;0;L;;;;;N;;;;;
+13802;EGYPTIAN HIEROGLYPH-13802;Lo;0;L;;;;;N;;;;;
+13803;EGYPTIAN HIEROGLYPH-13803;Lo;0;L;;;;;N;;;;;
+13804;EGYPTIAN HIEROGLYPH-13804;Lo;0;L;;;;;N;;;;;
+13805;EGYPTIAN HIEROGLYPH-13805;Lo;0;L;;;;;N;;;;;
+13806;EGYPTIAN HIEROGLYPH-13806;Lo;0;L;;;;;N;;;;;
+13807;EGYPTIAN HIEROGLYPH-13807;Lo;0;L;;;;;N;;;;;
+13808;EGYPTIAN HIEROGLYPH-13808;Lo;0;L;;;;;N;;;;;
+13809;EGYPTIAN HIEROGLYPH-13809;Lo;0;L;;;;;N;;;;;
+1380A;EGYPTIAN HIEROGLYPH-1380A;Lo;0;L;;;;;N;;;;;
+1380B;EGYPTIAN HIEROGLYPH-1380B;Lo;0;L;;;;;N;;;;;
+1380C;EGYPTIAN HIEROGLYPH-1380C;Lo;0;L;;;;;N;;;;;
+1380D;EGYPTIAN HIEROGLYPH-1380D;Lo;0;L;;;;;N;;;;;
+1380E;EGYPTIAN HIEROGLYPH-1380E;Lo;0;L;;;;;N;;;;;
+1380F;EGYPTIAN HIEROGLYPH-1380F;Lo;0;L;;;;;N;;;;;
+13810;EGYPTIAN HIEROGLYPH-13810;Lo;0;L;;;;;N;;;;;
+13811;EGYPTIAN HIEROGLYPH-13811;Lo;0;L;;;;;N;;;;;
+13812;EGYPTIAN HIEROGLYPH-13812;Lo;0;L;;;;;N;;;;;
+13813;EGYPTIAN HIEROGLYPH-13813;Lo;0;L;;;;;N;;;;;
+13814;EGYPTIAN HIEROGLYPH-13814;Lo;0;L;;;;;N;;;;;
+13815;EGYPTIAN HIEROGLYPH-13815;Lo;0;L;;;;;N;;;;;
+13816;EGYPTIAN HIEROGLYPH-13816;Lo;0;L;;;;;N;;;;;
+13817;EGYPTIAN HIEROGLYPH-13817;Lo;0;L;;;;;N;;;;;
+13818;EGYPTIAN HIEROGLYPH-13818;Lo;0;L;;;;;N;;;;;
+13819;EGYPTIAN HIEROGLYPH-13819;Lo;0;L;;;;;N;;;;;
+1381A;EGYPTIAN HIEROGLYPH-1381A;Lo;0;L;;;;;N;;;;;
+1381B;EGYPTIAN HIEROGLYPH-1381B;Lo;0;L;;;;;N;;;;;
+1381C;EGYPTIAN HIEROGLYPH-1381C;Lo;0;L;;;;;N;;;;;
+1381D;EGYPTIAN HIEROGLYPH-1381D;Lo;0;L;;;;;N;;;;;
+1381E;EGYPTIAN HIEROGLYPH-1381E;Lo;0;L;;;;;N;;;;;
+1381F;EGYPTIAN HIEROGLYPH-1381F;Lo;0;L;;;;;N;;;;;
+13820;EGYPTIAN HIEROGLYPH-13820;Lo;0;L;;;;;N;;;;;
+13821;EGYPTIAN HIEROGLYPH-13821;Lo;0;L;;;;;N;;;;;
+13822;EGYPTIAN HIEROGLYPH-13822;Lo;0;L;;;;;N;;;;;
+13823;EGYPTIAN HIEROGLYPH-13823;Lo;0;L;;;;;N;;;;;
+13824;EGYPTIAN HIEROGLYPH-13824;Lo;0;L;;;;;N;;;;;
+13825;EGYPTIAN HIEROGLYPH-13825;Lo;0;L;;;;;N;;;;;
+13826;EGYPTIAN HIEROGLYPH-13826;Lo;0;L;;;;;N;;;;;
+13827;EGYPTIAN HIEROGLYPH-13827;Lo;0;L;;;;;N;;;;;
+13828;EGYPTIAN HIEROGLYPH-13828;Lo;0;L;;;;;N;;;;;
+13829;EGYPTIAN HIEROGLYPH-13829;Lo;0;L;;;;;N;;;;;
+1382A;EGYPTIAN HIEROGLYPH-1382A;Lo;0;L;;;;;N;;;;;
+1382B;EGYPTIAN HIEROGLYPH-1382B;Lo;0;L;;;;;N;;;;;
+1382C;EGYPTIAN HIEROGLYPH-1382C;Lo;0;L;;;;;N;;;;;
+1382D;EGYPTIAN HIEROGLYPH-1382D;Lo;0;L;;;;;N;;;;;
+1382E;EGYPTIAN HIEROGLYPH-1382E;Lo;0;L;;;;;N;;;;;
+1382F;EGYPTIAN HIEROGLYPH-1382F;Lo;0;L;;;;;N;;;;;
+13830;EGYPTIAN HIEROGLYPH-13830;Lo;0;L;;;;;N;;;;;
+13831;EGYPTIAN HIEROGLYPH-13831;Lo;0;L;;;;;N;;;;;
+13832;EGYPTIAN HIEROGLYPH-13832;Lo;0;L;;;;;N;;;;;
+13833;EGYPTIAN HIEROGLYPH-13833;Lo;0;L;;;;;N;;;;;
+13834;EGYPTIAN HIEROGLYPH-13834;Lo;0;L;;;;;N;;;;;
+13835;EGYPTIAN HIEROGLYPH-13835;Lo;0;L;;;;;N;;;;;
+13836;EGYPTIAN HIEROGLYPH-13836;Lo;0;L;;;;;N;;;;;
+13837;EGYPTIAN HIEROGLYPH-13837;Lo;0;L;;;;;N;;;;;
+13838;EGYPTIAN HIEROGLYPH-13838;Lo;0;L;;;;;N;;;;;
+13839;EGYPTIAN HIEROGLYPH-13839;Lo;0;L;;;;;N;;;;;
+1383A;EGYPTIAN HIEROGLYPH-1383A;Lo;0;L;;;;;N;;;;;
+1383B;EGYPTIAN HIEROGLYPH-1383B;Lo;0;L;;;;;N;;;;;
+1383C;EGYPTIAN HIEROGLYPH-1383C;Lo;0;L;;;;;N;;;;;
+1383D;EGYPTIAN HIEROGLYPH-1383D;Lo;0;L;;;;;N;;;;;
+1383E;EGYPTIAN HIEROGLYPH-1383E;Lo;0;L;;;;;N;;;;;
+1383F;EGYPTIAN HIEROGLYPH-1383F;Lo;0;L;;;;;N;;;;;
+13840;EGYPTIAN HIEROGLYPH-13840;Lo;0;L;;;;;N;;;;;
+13841;EGYPTIAN HIEROGLYPH-13841;Lo;0;L;;;;;N;;;;;
+13842;EGYPTIAN HIEROGLYPH-13842;Lo;0;L;;;;;N;;;;;
+13843;EGYPTIAN HIEROGLYPH-13843;Lo;0;L;;;;;N;;;;;
+13844;EGYPTIAN HIEROGLYPH-13844;Lo;0;L;;;;;N;;;;;
+13845;EGYPTIAN HIEROGLYPH-13845;Lo;0;L;;;;;N;;;;;
+13846;EGYPTIAN HIEROGLYPH-13846;Lo;0;L;;;;;N;;;;;
+13847;EGYPTIAN HIEROGLYPH-13847;Lo;0;L;;;;;N;;;;;
+13848;EGYPTIAN HIEROGLYPH-13848;Lo;0;L;;;;;N;;;;;
+13849;EGYPTIAN HIEROGLYPH-13849;Lo;0;L;;;;;N;;;;;
+1384A;EGYPTIAN HIEROGLYPH-1384A;Lo;0;L;;;;;N;;;;;
+1384B;EGYPTIAN HIEROGLYPH-1384B;Lo;0;L;;;;;N;;;;;
+1384C;EGYPTIAN HIEROGLYPH-1384C;Lo;0;L;;;;;N;;;;;
+1384D;EGYPTIAN HIEROGLYPH-1384D;Lo;0;L;;;;;N;;;;;
+1384E;EGYPTIAN HIEROGLYPH-1384E;Lo;0;L;;;;;N;;;;;
+1384F;EGYPTIAN HIEROGLYPH-1384F;Lo;0;L;;;;;N;;;;;
+13850;EGYPTIAN HIEROGLYPH-13850;Lo;0;L;;;;;N;;;;;
+13851;EGYPTIAN HIEROGLYPH-13851;Lo;0;L;;;;;N;;;;;
+13852;EGYPTIAN HIEROGLYPH-13852;Lo;0;L;;;;;N;;;;;
+13853;EGYPTIAN HIEROGLYPH-13853;Lo;0;L;;;;;N;;;;;
+13854;EGYPTIAN HIEROGLYPH-13854;Lo;0;L;;;;;N;;;;;
+13855;EGYPTIAN HIEROGLYPH-13855;Lo;0;L;;;;;N;;;;;
+13856;EGYPTIAN HIEROGLYPH-13856;Lo;0;L;;;;;N;;;;;
+13857;EGYPTIAN HIEROGLYPH-13857;Lo;0;L;;;;;N;;;;;
+13858;EGYPTIAN HIEROGLYPH-13858;Lo;0;L;;;;;N;;;;;
+13859;EGYPTIAN HIEROGLYPH-13859;Lo;0;L;;;;;N;;;;;
+1385A;EGYPTIAN HIEROGLYPH-1385A;Lo;0;L;;;;;N;;;;;
+1385B;EGYPTIAN HIEROGLYPH-1385B;Lo;0;L;;;;;N;;;;;
+1385C;EGYPTIAN HIEROGLYPH-1385C;Lo;0;L;;;;;N;;;;;
+1385D;EGYPTIAN HIEROGLYPH-1385D;Lo;0;L;;;;;N;;;;;
+1385E;EGYPTIAN HIEROGLYPH-1385E;Lo;0;L;;;;;N;;;;;
+1385F;EGYPTIAN HIEROGLYPH-1385F;Lo;0;L;;;;;N;;;;;
+13860;EGYPTIAN HIEROGLYPH-13860;Lo;0;L;;;;;N;;;;;
+13861;EGYPTIAN HIEROGLYPH-13861;Lo;0;L;;;;;N;;;;;
+13862;EGYPTIAN HIEROGLYPH-13862;Lo;0;L;;;;;N;;;;;
+13863;EGYPTIAN HIEROGLYPH-13863;Lo;0;L;;;;;N;;;;;
+13864;EGYPTIAN HIEROGLYPH-13864;Lo;0;L;;;;;N;;;;;
+13865;EGYPTIAN HIEROGLYPH-13865;Lo;0;L;;;;;N;;;;;
+13866;EGYPTIAN HIEROGLYPH-13866;Lo;0;L;;;;;N;;;;;
+13867;EGYPTIAN HIEROGLYPH-13867;Lo;0;L;;;;;N;;;;;
+13868;EGYPTIAN HIEROGLYPH-13868;Lo;0;L;;;;;N;;;;;
+13869;EGYPTIAN HIEROGLYPH-13869;Lo;0;L;;;;;N;;;;;
+1386A;EGYPTIAN HIEROGLYPH-1386A;Lo;0;L;;;;;N;;;;;
+1386B;EGYPTIAN HIEROGLYPH-1386B;Lo;0;L;;;;;N;;;;;
+1386C;EGYPTIAN HIEROGLYPH-1386C;Lo;0;L;;;;;N;;;;;
+1386D;EGYPTIAN HIEROGLYPH-1386D;Lo;0;L;;;;;N;;;;;
+1386E;EGYPTIAN HIEROGLYPH-1386E;Lo;0;L;;;;;N;;;;;
+1386F;EGYPTIAN HIEROGLYPH-1386F;Lo;0;L;;;;;N;;;;;
+13870;EGYPTIAN HIEROGLYPH-13870;Lo;0;L;;;;;N;;;;;
+13871;EGYPTIAN HIEROGLYPH-13871;Lo;0;L;;;;;N;;;;;
+13872;EGYPTIAN HIEROGLYPH-13872;Lo;0;L;;;;;N;;;;;
+13873;EGYPTIAN HIEROGLYPH-13873;Lo;0;L;;;;;N;;;;;
+13874;EGYPTIAN HIEROGLYPH-13874;Lo;0;L;;;;;N;;;;;
+13875;EGYPTIAN HIEROGLYPH-13875;Lo;0;L;;;;;N;;;;;
+13876;EGYPTIAN HIEROGLYPH-13876;Lo;0;L;;;;;N;;;;;
+13877;EGYPTIAN HIEROGLYPH-13877;Lo;0;L;;;;;N;;;;;
+13878;EGYPTIAN HIEROGLYPH-13878;Lo;0;L;;;;;N;;;;;
+13879;EGYPTIAN HIEROGLYPH-13879;Lo;0;L;;;;;N;;;;;
+1387A;EGYPTIAN HIEROGLYPH-1387A;Lo;0;L;;;;;N;;;;;
+1387B;EGYPTIAN HIEROGLYPH-1387B;Lo;0;L;;;;;N;;;;;
+1387C;EGYPTIAN HIEROGLYPH-1387C;Lo;0;L;;;;;N;;;;;
+1387D;EGYPTIAN HIEROGLYPH-1387D;Lo;0;L;;;;;N;;;;;
+1387E;EGYPTIAN HIEROGLYPH-1387E;Lo;0;L;;;;;N;;;;;
+1387F;EGYPTIAN HIEROGLYPH-1387F;Lo;0;L;;;;;N;;;;;
+13880;EGYPTIAN HIEROGLYPH-13880;Lo;0;L;;;;;N;;;;;
+13881;EGYPTIAN HIEROGLYPH-13881;Lo;0;L;;;;;N;;;;;
+13882;EGYPTIAN HIEROGLYPH-13882;Lo;0;L;;;;;N;;;;;
+13883;EGYPTIAN HIEROGLYPH-13883;Lo;0;L;;;;;N;;;;;
+13884;EGYPTIAN HIEROGLYPH-13884;Lo;0;L;;;;;N;;;;;
+13885;EGYPTIAN HIEROGLYPH-13885;Lo;0;L;;;;;N;;;;;
+13886;EGYPTIAN HIEROGLYPH-13886;Lo;0;L;;;;;N;;;;;
+13887;EGYPTIAN HIEROGLYPH-13887;Lo;0;L;;;;;N;;;;;
+13888;EGYPTIAN HIEROGLYPH-13888;Lo;0;L;;;;;N;;;;;
+13889;EGYPTIAN HIEROGLYPH-13889;Lo;0;L;;;;;N;;;;;
+1388A;EGYPTIAN HIEROGLYPH-1388A;Lo;0;L;;;;;N;;;;;
+1388B;EGYPTIAN HIEROGLYPH-1388B;Lo;0;L;;;;;N;;;;;
+1388C;EGYPTIAN HIEROGLYPH-1388C;Lo;0;L;;;;;N;;;;;
+1388D;EGYPTIAN HIEROGLYPH-1388D;Lo;0;L;;;;;N;;;;;
+1388E;EGYPTIAN HIEROGLYPH-1388E;Lo;0;L;;;;;N;;;;;
+1388F;EGYPTIAN HIEROGLYPH-1388F;Lo;0;L;;;;;N;;;;;
+13890;EGYPTIAN HIEROGLYPH-13890;Lo;0;L;;;;;N;;;;;
+13891;EGYPTIAN HIEROGLYPH-13891;Lo;0;L;;;;;N;;;;;
+13892;EGYPTIAN HIEROGLYPH-13892;Lo;0;L;;;;;N;;;;;
+13893;EGYPTIAN HIEROGLYPH-13893;Lo;0;L;;;;;N;;;;;
+13894;EGYPTIAN HIEROGLYPH-13894;Lo;0;L;;;;;N;;;;;
+13895;EGYPTIAN HIEROGLYPH-13895;Lo;0;L;;;;;N;;;;;
+13896;EGYPTIAN HIEROGLYPH-13896;Lo;0;L;;;;;N;;;;;
+13897;EGYPTIAN HIEROGLYPH-13897;Lo;0;L;;;;;N;;;;;
+13898;EGYPTIAN HIEROGLYPH-13898;Lo;0;L;;;;;N;;;;;
+13899;EGYPTIAN HIEROGLYPH-13899;Lo;0;L;;;;;N;;;;;
+1389A;EGYPTIAN HIEROGLYPH-1389A;Lo;0;L;;;;;N;;;;;
+1389B;EGYPTIAN HIEROGLYPH-1389B;Lo;0;L;;;;;N;;;;;
+1389C;EGYPTIAN HIEROGLYPH-1389C;Lo;0;L;;;;;N;;;;;
+1389D;EGYPTIAN HIEROGLYPH-1389D;Lo;0;L;;;;;N;;;;;
+1389E;EGYPTIAN HIEROGLYPH-1389E;Lo;0;L;;;;;N;;;;;
+1389F;EGYPTIAN HIEROGLYPH-1389F;Lo;0;L;;;;;N;;;;;
+138A0;EGYPTIAN HIEROGLYPH-138A0;Lo;0;L;;;;;N;;;;;
+138A1;EGYPTIAN HIEROGLYPH-138A1;Lo;0;L;;;;;N;;;;;
+138A2;EGYPTIAN HIEROGLYPH-138A2;Lo;0;L;;;;;N;;;;;
+138A3;EGYPTIAN HIEROGLYPH-138A3;Lo;0;L;;;;;N;;;;;
+138A4;EGYPTIAN HIEROGLYPH-138A4;Lo;0;L;;;;;N;;;;;
+138A5;EGYPTIAN HIEROGLYPH-138A5;Lo;0;L;;;;;N;;;;;
+138A6;EGYPTIAN HIEROGLYPH-138A6;Lo;0;L;;;;;N;;;;;
+138A7;EGYPTIAN HIEROGLYPH-138A7;Lo;0;L;;;;;N;;;;;
+138A8;EGYPTIAN HIEROGLYPH-138A8;Lo;0;L;;;;;N;;;;;
+138A9;EGYPTIAN HIEROGLYPH-138A9;Lo;0;L;;;;;N;;;;;
+138AA;EGYPTIAN HIEROGLYPH-138AA;Lo;0;L;;;;;N;;;;;
+138AB;EGYPTIAN HIEROGLYPH-138AB;Lo;0;L;;;;;N;;;;;
+138AC;EGYPTIAN HIEROGLYPH-138AC;Lo;0;L;;;;;N;;;;;
+138AD;EGYPTIAN HIEROGLYPH-138AD;Lo;0;L;;;;;N;;;;;
+138AE;EGYPTIAN HIEROGLYPH-138AE;Lo;0;L;;;;;N;;;;;
+138AF;EGYPTIAN HIEROGLYPH-138AF;Lo;0;L;;;;;N;;;;;
+138B0;EGYPTIAN HIEROGLYPH-138B0;Lo;0;L;;;;;N;;;;;
+138B1;EGYPTIAN HIEROGLYPH-138B1;Lo;0;L;;;;;N;;;;;
+138B2;EGYPTIAN HIEROGLYPH-138B2;Lo;0;L;;;;;N;;;;;
+138B3;EGYPTIAN HIEROGLYPH-138B3;Lo;0;L;;;;;N;;;;;
+138B4;EGYPTIAN HIEROGLYPH-138B4;Lo;0;L;;;;;N;;;;;
+138B5;EGYPTIAN HIEROGLYPH-138B5;Lo;0;L;;;;;N;;;;;
+138B6;EGYPTIAN HIEROGLYPH-138B6;Lo;0;L;;;;;N;;;;;
+138B7;EGYPTIAN HIEROGLYPH-138B7;Lo;0;L;;;;;N;;;;;
+138B8;EGYPTIAN HIEROGLYPH-138B8;Lo;0;L;;;;;N;;;;;
+138B9;EGYPTIAN HIEROGLYPH-138B9;Lo;0;L;;;;;N;;;;;
+138BA;EGYPTIAN HIEROGLYPH-138BA;Lo;0;L;;;;;N;;;;;
+138BB;EGYPTIAN HIEROGLYPH-138BB;Lo;0;L;;;;;N;;;;;
+138BC;EGYPTIAN HIEROGLYPH-138BC;Lo;0;L;;;;;N;;;;;
+138BD;EGYPTIAN HIEROGLYPH-138BD;Lo;0;L;;;;;N;;;;;
+138BE;EGYPTIAN HIEROGLYPH-138BE;Lo;0;L;;;;;N;;;;;
+138BF;EGYPTIAN HIEROGLYPH-138BF;Lo;0;L;;;;;N;;;;;
+138C0;EGYPTIAN HIEROGLYPH-138C0;Lo;0;L;;;;;N;;;;;
+138C1;EGYPTIAN HIEROGLYPH-138C1;Lo;0;L;;;;;N;;;;;
+138C2;EGYPTIAN HIEROGLYPH-138C2;Lo;0;L;;;;;N;;;;;
+138C3;EGYPTIAN HIEROGLYPH-138C3;Lo;0;L;;;;;N;;;;;
+138C4;EGYPTIAN HIEROGLYPH-138C4;Lo;0;L;;;;;N;;;;;
+138C5;EGYPTIAN HIEROGLYPH-138C5;Lo;0;L;;;;;N;;;;;
+138C6;EGYPTIAN HIEROGLYPH-138C6;Lo;0;L;;;;;N;;;;;
+138C7;EGYPTIAN HIEROGLYPH-138C7;Lo;0;L;;;;;N;;;;;
+138C8;EGYPTIAN HIEROGLYPH-138C8;Lo;0;L;;;;;N;;;;;
+138C9;EGYPTIAN HIEROGLYPH-138C9;Lo;0;L;;;;;N;;;;;
+138CA;EGYPTIAN HIEROGLYPH-138CA;Lo;0;L;;;;;N;;;;;
+138CB;EGYPTIAN HIEROGLYPH-138CB;Lo;0;L;;;;;N;;;;;
+138CC;EGYPTIAN HIEROGLYPH-138CC;Lo;0;L;;;;;N;;;;;
+138CD;EGYPTIAN HIEROGLYPH-138CD;Lo;0;L;;;;;N;;;;;
+138CE;EGYPTIAN HIEROGLYPH-138CE;Lo;0;L;;;;;N;;;;;
+138CF;EGYPTIAN HIEROGLYPH-138CF;Lo;0;L;;;;;N;;;;;
+138D0;EGYPTIAN HIEROGLYPH-138D0;Lo;0;L;;;;;N;;;;;
+138D1;EGYPTIAN HIEROGLYPH-138D1;Lo;0;L;;;;;N;;;;;
+138D2;EGYPTIAN HIEROGLYPH-138D2;Lo;0;L;;;;;N;;;;;
+138D3;EGYPTIAN HIEROGLYPH-138D3;Lo;0;L;;;;;N;;;;;
+138D4;EGYPTIAN HIEROGLYPH-138D4;Lo;0;L;;;;;N;;;;;
+138D5;EGYPTIAN HIEROGLYPH-138D5;Lo;0;L;;;;;N;;;;;
+138D6;EGYPTIAN HIEROGLYPH-138D6;Lo;0;L;;;;;N;;;;;
+138D7;EGYPTIAN HIEROGLYPH-138D7;Lo;0;L;;;;;N;;;;;
+138D8;EGYPTIAN HIEROGLYPH-138D8;Lo;0;L;;;;;N;;;;;
+138D9;EGYPTIAN HIEROGLYPH-138D9;Lo;0;L;;;;;N;;;;;
+138DA;EGYPTIAN HIEROGLYPH-138DA;Lo;0;L;;;;;N;;;;;
+138DB;EGYPTIAN HIEROGLYPH-138DB;Lo;0;L;;;;;N;;;;;
+138DC;EGYPTIAN HIEROGLYPH-138DC;Lo;0;L;;;;;N;;;;;
+138DD;EGYPTIAN HIEROGLYPH-138DD;Lo;0;L;;;;;N;;;;;
+138DE;EGYPTIAN HIEROGLYPH-138DE;Lo;0;L;;;;;N;;;;;
+138DF;EGYPTIAN HIEROGLYPH-138DF;Lo;0;L;;;;;N;;;;;
+138E0;EGYPTIAN HIEROGLYPH-138E0;Lo;0;L;;;;;N;;;;;
+138E1;EGYPTIAN HIEROGLYPH-138E1;Lo;0;L;;;;;N;;;;;
+138E2;EGYPTIAN HIEROGLYPH-138E2;Lo;0;L;;;;;N;;;;;
+138E3;EGYPTIAN HIEROGLYPH-138E3;Lo;0;L;;;;;N;;;;;
+138E4;EGYPTIAN HIEROGLYPH-138E4;Lo;0;L;;;;;N;;;;;
+138E5;EGYPTIAN HIEROGLYPH-138E5;Lo;0;L;;;;;N;;;;;
+138E6;EGYPTIAN HIEROGLYPH-138E6;Lo;0;L;;;;;N;;;;;
+138E7;EGYPTIAN HIEROGLYPH-138E7;Lo;0;L;;;;;N;;;;;
+138E8;EGYPTIAN HIEROGLYPH-138E8;Lo;0;L;;;;;N;;;;;
+138E9;EGYPTIAN HIEROGLYPH-138E9;Lo;0;L;;;;;N;;;;;
+138EA;EGYPTIAN HIEROGLYPH-138EA;Lo;0;L;;;;;N;;;;;
+138EB;EGYPTIAN HIEROGLYPH-138EB;Lo;0;L;;;;;N;;;;;
+138EC;EGYPTIAN HIEROGLYPH-138EC;Lo;0;L;;;;;N;;;;;
+138ED;EGYPTIAN HIEROGLYPH-138ED;Lo;0;L;;;;;N;;;;;
+138EE;EGYPTIAN HIEROGLYPH-138EE;Lo;0;L;;;;;N;;;;;
+138EF;EGYPTIAN HIEROGLYPH-138EF;Lo;0;L;;;;;N;;;;;
+138F0;EGYPTIAN HIEROGLYPH-138F0;Lo;0;L;;;;;N;;;;;
+138F1;EGYPTIAN HIEROGLYPH-138F1;Lo;0;L;;;;;N;;;;;
+138F2;EGYPTIAN HIEROGLYPH-138F2;Lo;0;L;;;;;N;;;;;
+138F3;EGYPTIAN HIEROGLYPH-138F3;Lo;0;L;;;;;N;;;;;
+138F4;EGYPTIAN HIEROGLYPH-138F4;Lo;0;L;;;;;N;;;;;
+138F5;EGYPTIAN HIEROGLYPH-138F5;Lo;0;L;;;;;N;;;;;
+138F6;EGYPTIAN HIEROGLYPH-138F6;Lo;0;L;;;;;N;;;;;
+138F7;EGYPTIAN HIEROGLYPH-138F7;Lo;0;L;;;;;N;;;;;
+138F8;EGYPTIAN HIEROGLYPH-138F8;Lo;0;L;;;;;N;;;;;
+138F9;EGYPTIAN HIEROGLYPH-138F9;Lo;0;L;;;;;N;;;;;
+138FA;EGYPTIAN HIEROGLYPH-138FA;Lo;0;L;;;;;N;;;;;
+138FB;EGYPTIAN HIEROGLYPH-138FB;Lo;0;L;;;;;N;;;;;
+138FC;EGYPTIAN HIEROGLYPH-138FC;Lo;0;L;;;;;N;;;;;
+138FD;EGYPTIAN HIEROGLYPH-138FD;Lo;0;L;;;;;N;;;;;
+138FE;EGYPTIAN HIEROGLYPH-138FE;Lo;0;L;;;;;N;;;;;
+138FF;EGYPTIAN HIEROGLYPH-138FF;Lo;0;L;;;;;N;;;;;
+13900;EGYPTIAN HIEROGLYPH-13900;Lo;0;L;;;;;N;;;;;
+13901;EGYPTIAN HIEROGLYPH-13901;Lo;0;L;;;;;N;;;;;
+13902;EGYPTIAN HIEROGLYPH-13902;Lo;0;L;;;;;N;;;;;
+13903;EGYPTIAN HIEROGLYPH-13903;Lo;0;L;;;;;N;;;;;
+13904;EGYPTIAN HIEROGLYPH-13904;Lo;0;L;;;;;N;;;;;
+13905;EGYPTIAN HIEROGLYPH-13905;Lo;0;L;;;;;N;;;;;
+13906;EGYPTIAN HIEROGLYPH-13906;Lo;0;L;;;;;N;;;;;
+13907;EGYPTIAN HIEROGLYPH-13907;Lo;0;L;;;;;N;;;;;
+13908;EGYPTIAN HIEROGLYPH-13908;Lo;0;L;;;;;N;;;;;
+13909;EGYPTIAN HIEROGLYPH-13909;Lo;0;L;;;;;N;;;;;
+1390A;EGYPTIAN HIEROGLYPH-1390A;Lo;0;L;;;;;N;;;;;
+1390B;EGYPTIAN HIEROGLYPH-1390B;Lo;0;L;;;;;N;;;;;
+1390C;EGYPTIAN HIEROGLYPH-1390C;Lo;0;L;;;;;N;;;;;
+1390D;EGYPTIAN HIEROGLYPH-1390D;Lo;0;L;;;;;N;;;;;
+1390E;EGYPTIAN HIEROGLYPH-1390E;Lo;0;L;;;;;N;;;;;
+1390F;EGYPTIAN HIEROGLYPH-1390F;Lo;0;L;;;;;N;;;;;
+13910;EGYPTIAN HIEROGLYPH-13910;Lo;0;L;;;;;N;;;;;
+13911;EGYPTIAN HIEROGLYPH-13911;Lo;0;L;;;;;N;;;;;
+13912;EGYPTIAN HIEROGLYPH-13912;Lo;0;L;;;;;N;;;;;
+13913;EGYPTIAN HIEROGLYPH-13913;Lo;0;L;;;;;N;;;;;
+13914;EGYPTIAN HIEROGLYPH-13914;Lo;0;L;;;;;N;;;;;
+13915;EGYPTIAN HIEROGLYPH-13915;Lo;0;L;;;;;N;;;;;
+13916;EGYPTIAN HIEROGLYPH-13916;Lo;0;L;;;;;N;;;;;
+13917;EGYPTIAN HIEROGLYPH-13917;Lo;0;L;;;;;N;;;;;
+13918;EGYPTIAN HIEROGLYPH-13918;Lo;0;L;;;;;N;;;;;
+13919;EGYPTIAN HIEROGLYPH-13919;Lo;0;L;;;;;N;;;;;
+1391A;EGYPTIAN HIEROGLYPH-1391A;Lo;0;L;;;;;N;;;;;
+1391B;EGYPTIAN HIEROGLYPH-1391B;Lo;0;L;;;;;N;;;;;
+1391C;EGYPTIAN HIEROGLYPH-1391C;Lo;0;L;;;;;N;;;;;
+1391D;EGYPTIAN HIEROGLYPH-1391D;Lo;0;L;;;;;N;;;;;
+1391E;EGYPTIAN HIEROGLYPH-1391E;Lo;0;L;;;;;N;;;;;
+1391F;EGYPTIAN HIEROGLYPH-1391F;Lo;0;L;;;;;N;;;;;
+13920;EGYPTIAN HIEROGLYPH-13920;Lo;0;L;;;;;N;;;;;
+13921;EGYPTIAN HIEROGLYPH-13921;Lo;0;L;;;;;N;;;;;
+13922;EGYPTIAN HIEROGLYPH-13922;Lo;0;L;;;;;N;;;;;
+13923;EGYPTIAN HIEROGLYPH-13923;Lo;0;L;;;;;N;;;;;
+13924;EGYPTIAN HIEROGLYPH-13924;Lo;0;L;;;;;N;;;;;
+13925;EGYPTIAN HIEROGLYPH-13925;Lo;0;L;;;;;N;;;;;
+13926;EGYPTIAN HIEROGLYPH-13926;Lo;0;L;;;;;N;;;;;
+13927;EGYPTIAN HIEROGLYPH-13927;Lo;0;L;;;;;N;;;;;
+13928;EGYPTIAN HIEROGLYPH-13928;Lo;0;L;;;;;N;;;;;
+13929;EGYPTIAN HIEROGLYPH-13929;Lo;0;L;;;;;N;;;;;
+1392A;EGYPTIAN HIEROGLYPH-1392A;Lo;0;L;;;;;N;;;;;
+1392B;EGYPTIAN HIEROGLYPH-1392B;Lo;0;L;;;;;N;;;;;
+1392C;EGYPTIAN HIEROGLYPH-1392C;Lo;0;L;;;;;N;;;;;
+1392D;EGYPTIAN HIEROGLYPH-1392D;Lo;0;L;;;;;N;;;;;
+1392E;EGYPTIAN HIEROGLYPH-1392E;Lo;0;L;;;;;N;;;;;
+1392F;EGYPTIAN HIEROGLYPH-1392F;Lo;0;L;;;;;N;;;;;
+13930;EGYPTIAN HIEROGLYPH-13930;Lo;0;L;;;;;N;;;;;
+13931;EGYPTIAN HIEROGLYPH-13931;Lo;0;L;;;;;N;;;;;
+13932;EGYPTIAN HIEROGLYPH-13932;Lo;0;L;;;;;N;;;;;
+13933;EGYPTIAN HIEROGLYPH-13933;Lo;0;L;;;;;N;;;;;
+13934;EGYPTIAN HIEROGLYPH-13934;Lo;0;L;;;;;N;;;;;
+13935;EGYPTIAN HIEROGLYPH-13935;Lo;0;L;;;;;N;;;;;
+13936;EGYPTIAN HIEROGLYPH-13936;Lo;0;L;;;;;N;;;;;
+13937;EGYPTIAN HIEROGLYPH-13937;Lo;0;L;;;;;N;;;;;
+13938;EGYPTIAN HIEROGLYPH-13938;Lo;0;L;;;;;N;;;;;
+13939;EGYPTIAN HIEROGLYPH-13939;Lo;0;L;;;;;N;;;;;
+1393A;EGYPTIAN HIEROGLYPH-1393A;Lo;0;L;;;;;N;;;;;
+1393B;EGYPTIAN HIEROGLYPH-1393B;Lo;0;L;;;;;N;;;;;
+1393C;EGYPTIAN HIEROGLYPH-1393C;Lo;0;L;;;;;N;;;;;
+1393D;EGYPTIAN HIEROGLYPH-1393D;Lo;0;L;;;;;N;;;;;
+1393E;EGYPTIAN HIEROGLYPH-1393E;Lo;0;L;;;;;N;;;;;
+1393F;EGYPTIAN HIEROGLYPH-1393F;Lo;0;L;;;;;N;;;;;
+13940;EGYPTIAN HIEROGLYPH-13940;Lo;0;L;;;;;N;;;;;
+13941;EGYPTIAN HIEROGLYPH-13941;Lo;0;L;;;;;N;;;;;
+13942;EGYPTIAN HIEROGLYPH-13942;Lo;0;L;;;;;N;;;;;
+13943;EGYPTIAN HIEROGLYPH-13943;Lo;0;L;;;;;N;;;;;
+13944;EGYPTIAN HIEROGLYPH-13944;Lo;0;L;;;;;N;;;;;
+13945;EGYPTIAN HIEROGLYPH-13945;Lo;0;L;;;;;N;;;;;
+13946;EGYPTIAN HIEROGLYPH-13946;Lo;0;L;;;;;N;;;;;
+13947;EGYPTIAN HIEROGLYPH-13947;Lo;0;L;;;;;N;;;;;
+13948;EGYPTIAN HIEROGLYPH-13948;Lo;0;L;;;;;N;;;;;
+13949;EGYPTIAN HIEROGLYPH-13949;Lo;0;L;;;;;N;;;;;
+1394A;EGYPTIAN HIEROGLYPH-1394A;Lo;0;L;;;;;N;;;;;
+1394B;EGYPTIAN HIEROGLYPH-1394B;Lo;0;L;;;;;N;;;;;
+1394C;EGYPTIAN HIEROGLYPH-1394C;Lo;0;L;;;;;N;;;;;
+1394D;EGYPTIAN HIEROGLYPH-1394D;Lo;0;L;;;;;N;;;;;
+1394E;EGYPTIAN HIEROGLYPH-1394E;Lo;0;L;;;;;N;;;;;
+1394F;EGYPTIAN HIEROGLYPH-1394F;Lo;0;L;;;;;N;;;;;
+13950;EGYPTIAN HIEROGLYPH-13950;Lo;0;L;;;;;N;;;;;
+13951;EGYPTIAN HIEROGLYPH-13951;Lo;0;L;;;;;N;;;;;
+13952;EGYPTIAN HIEROGLYPH-13952;Lo;0;L;;;;;N;;;;;
+13953;EGYPTIAN HIEROGLYPH-13953;Lo;0;L;;;;;N;;;;;
+13954;EGYPTIAN HIEROGLYPH-13954;Lo;0;L;;;;;N;;;;;
+13955;EGYPTIAN HIEROGLYPH-13955;Lo;0;L;;;;;N;;;;;
+13956;EGYPTIAN HIEROGLYPH-13956;Lo;0;L;;;;;N;;;;;
+13957;EGYPTIAN HIEROGLYPH-13957;Lo;0;L;;;;;N;;;;;
+13958;EGYPTIAN HIEROGLYPH-13958;Lo;0;L;;;;;N;;;;;
+13959;EGYPTIAN HIEROGLYPH-13959;Lo;0;L;;;;;N;;;;;
+1395A;EGYPTIAN HIEROGLYPH-1395A;Lo;0;L;;;;;N;;;;;
+1395B;EGYPTIAN HIEROGLYPH-1395B;Lo;0;L;;;;;N;;;;;
+1395C;EGYPTIAN HIEROGLYPH-1395C;Lo;0;L;;;;;N;;;;;
+1395D;EGYPTIAN HIEROGLYPH-1395D;Lo;0;L;;;;;N;;;;;
+1395E;EGYPTIAN HIEROGLYPH-1395E;Lo;0;L;;;;;N;;;;;
+1395F;EGYPTIAN HIEROGLYPH-1395F;Lo;0;L;;;;;N;;;;;
+13960;EGYPTIAN HIEROGLYPH-13960;Lo;0;L;;;;;N;;;;;
+13961;EGYPTIAN HIEROGLYPH-13961;Lo;0;L;;;;;N;;;;;
+13962;EGYPTIAN HIEROGLYPH-13962;Lo;0;L;;;;;N;;;;;
+13963;EGYPTIAN HIEROGLYPH-13963;Lo;0;L;;;;;N;;;;;
+13964;EGYPTIAN HIEROGLYPH-13964;Lo;0;L;;;;;N;;;;;
+13965;EGYPTIAN HIEROGLYPH-13965;Lo;0;L;;;;;N;;;;;
+13966;EGYPTIAN HIEROGLYPH-13966;Lo;0;L;;;;;N;;;;;
+13967;EGYPTIAN HIEROGLYPH-13967;Lo;0;L;;;;;N;;;;;
+13968;EGYPTIAN HIEROGLYPH-13968;Lo;0;L;;;;;N;;;;;
+13969;EGYPTIAN HIEROGLYPH-13969;Lo;0;L;;;;;N;;;;;
+1396A;EGYPTIAN HIEROGLYPH-1396A;Lo;0;L;;;;;N;;;;;
+1396B;EGYPTIAN HIEROGLYPH-1396B;Lo;0;L;;;;;N;;;;;
+1396C;EGYPTIAN HIEROGLYPH-1396C;Lo;0;L;;;;;N;;;;;
+1396D;EGYPTIAN HIEROGLYPH-1396D;Lo;0;L;;;;;N;;;;;
+1396E;EGYPTIAN HIEROGLYPH-1396E;Lo;0;L;;;;;N;;;;;
+1396F;EGYPTIAN HIEROGLYPH-1396F;Lo;0;L;;;;;N;;;;;
+13970;EGYPTIAN HIEROGLYPH-13970;Lo;0;L;;;;;N;;;;;
+13971;EGYPTIAN HIEROGLYPH-13971;Lo;0;L;;;;;N;;;;;
+13972;EGYPTIAN HIEROGLYPH-13972;Lo;0;L;;;;;N;;;;;
+13973;EGYPTIAN HIEROGLYPH-13973;Lo;0;L;;;;;N;;;;;
+13974;EGYPTIAN HIEROGLYPH-13974;Lo;0;L;;;;;N;;;;;
+13975;EGYPTIAN HIEROGLYPH-13975;Lo;0;L;;;;;N;;;;;
+13976;EGYPTIAN HIEROGLYPH-13976;Lo;0;L;;;;;N;;;;;
+13977;EGYPTIAN HIEROGLYPH-13977;Lo;0;L;;;;;N;;;;;
+13978;EGYPTIAN HIEROGLYPH-13978;Lo;0;L;;;;;N;;;;;
+13979;EGYPTIAN HIEROGLYPH-13979;Lo;0;L;;;;;N;;;;;
+1397A;EGYPTIAN HIEROGLYPH-1397A;Lo;0;L;;;;;N;;;;;
+1397B;EGYPTIAN HIEROGLYPH-1397B;Lo;0;L;;;;;N;;;;;
+1397C;EGYPTIAN HIEROGLYPH-1397C;Lo;0;L;;;;;N;;;;;
+1397D;EGYPTIAN HIEROGLYPH-1397D;Lo;0;L;;;;;N;;;;;
+1397E;EGYPTIAN HIEROGLYPH-1397E;Lo;0;L;;;;;N;;;;;
+1397F;EGYPTIAN HIEROGLYPH-1397F;Lo;0;L;;;;;N;;;;;
+13980;EGYPTIAN HIEROGLYPH-13980;Lo;0;L;;;;;N;;;;;
+13981;EGYPTIAN HIEROGLYPH-13981;Lo;0;L;;;;;N;;;;;
+13982;EGYPTIAN HIEROGLYPH-13982;Lo;0;L;;;;;N;;;;;
+13983;EGYPTIAN HIEROGLYPH-13983;Lo;0;L;;;;;N;;;;;
+13984;EGYPTIAN HIEROGLYPH-13984;Lo;0;L;;;;;N;;;;;
+13985;EGYPTIAN HIEROGLYPH-13985;Lo;0;L;;;;;N;;;;;
+13986;EGYPTIAN HIEROGLYPH-13986;Lo;0;L;;;;;N;;;;;
+13987;EGYPTIAN HIEROGLYPH-13987;Lo;0;L;;;;;N;;;;;
+13988;EGYPTIAN HIEROGLYPH-13988;Lo;0;L;;;;;N;;;;;
+13989;EGYPTIAN HIEROGLYPH-13989;Lo;0;L;;;;;N;;;;;
+1398A;EGYPTIAN HIEROGLYPH-1398A;Lo;0;L;;;;;N;;;;;
+1398B;EGYPTIAN HIEROGLYPH-1398B;Lo;0;L;;;;;N;;;;;
+1398C;EGYPTIAN HIEROGLYPH-1398C;Lo;0;L;;;;;N;;;;;
+1398D;EGYPTIAN HIEROGLYPH-1398D;Lo;0;L;;;;;N;;;;;
+1398E;EGYPTIAN HIEROGLYPH-1398E;Lo;0;L;;;;;N;;;;;
+1398F;EGYPTIAN HIEROGLYPH-1398F;Lo;0;L;;;;;N;;;;;
+13990;EGYPTIAN HIEROGLYPH-13990;Lo;0;L;;;;;N;;;;;
+13991;EGYPTIAN HIEROGLYPH-13991;Lo;0;L;;;;;N;;;;;
+13992;EGYPTIAN HIEROGLYPH-13992;Lo;0;L;;;;;N;;;;;
+13993;EGYPTIAN HIEROGLYPH-13993;Lo;0;L;;;;;N;;;;;
+13994;EGYPTIAN HIEROGLYPH-13994;Lo;0;L;;;;;N;;;;;
+13995;EGYPTIAN HIEROGLYPH-13995;Lo;0;L;;;;;N;;;;;
+13996;EGYPTIAN HIEROGLYPH-13996;Lo;0;L;;;;;N;;;;;
+13997;EGYPTIAN HIEROGLYPH-13997;Lo;0;L;;;;;N;;;;;
+13998;EGYPTIAN HIEROGLYPH-13998;Lo;0;L;;;;;N;;;;;
+13999;EGYPTIAN HIEROGLYPH-13999;Lo;0;L;;;;;N;;;;;
+1399A;EGYPTIAN HIEROGLYPH-1399A;Lo;0;L;;;;;N;;;;;
+1399B;EGYPTIAN HIEROGLYPH-1399B;Lo;0;L;;;;;N;;;;;
+1399C;EGYPTIAN HIEROGLYPH-1399C;Lo;0;L;;;;;N;;;;;
+1399D;EGYPTIAN HIEROGLYPH-1399D;Lo;0;L;;;;;N;;;;;
+1399E;EGYPTIAN HIEROGLYPH-1399E;Lo;0;L;;;;;N;;;;;
+1399F;EGYPTIAN HIEROGLYPH-1399F;Lo;0;L;;;;;N;;;;;
+139A0;EGYPTIAN HIEROGLYPH-139A0;Lo;0;L;;;;;N;;;;;
+139A1;EGYPTIAN HIEROGLYPH-139A1;Lo;0;L;;;;;N;;;;;
+139A2;EGYPTIAN HIEROGLYPH-139A2;Lo;0;L;;;;;N;;;;;
+139A3;EGYPTIAN HIEROGLYPH-139A3;Lo;0;L;;;;;N;;;;;
+139A4;EGYPTIAN HIEROGLYPH-139A4;Lo;0;L;;;;;N;;;;;
+139A5;EGYPTIAN HIEROGLYPH-139A5;Lo;0;L;;;;;N;;;;;
+139A6;EGYPTIAN HIEROGLYPH-139A6;Lo;0;L;;;;;N;;;;;
+139A7;EGYPTIAN HIEROGLYPH-139A7;Lo;0;L;;;;;N;;;;;
+139A8;EGYPTIAN HIEROGLYPH-139A8;Lo;0;L;;;;;N;;;;;
+139A9;EGYPTIAN HIEROGLYPH-139A9;Lo;0;L;;;;;N;;;;;
+139AA;EGYPTIAN HIEROGLYPH-139AA;Lo;0;L;;;;;N;;;;;
+139AB;EGYPTIAN HIEROGLYPH-139AB;Lo;0;L;;;;;N;;;;;
+139AC;EGYPTIAN HIEROGLYPH-139AC;Lo;0;L;;;;;N;;;;;
+139AD;EGYPTIAN HIEROGLYPH-139AD;Lo;0;L;;;;;N;;;;;
+139AE;EGYPTIAN HIEROGLYPH-139AE;Lo;0;L;;;;;N;;;;;
+139AF;EGYPTIAN HIEROGLYPH-139AF;Lo;0;L;;;;;N;;;;;
+139B0;EGYPTIAN HIEROGLYPH-139B0;Lo;0;L;;;;;N;;;;;
+139B1;EGYPTIAN HIEROGLYPH-139B1;Lo;0;L;;;;;N;;;;;
+139B2;EGYPTIAN HIEROGLYPH-139B2;Lo;0;L;;;;;N;;;;;
+139B3;EGYPTIAN HIEROGLYPH-139B3;Lo;0;L;;;;;N;;;;;
+139B4;EGYPTIAN HIEROGLYPH-139B4;Lo;0;L;;;;;N;;;;;
+139B5;EGYPTIAN HIEROGLYPH-139B5;Lo;0;L;;;;;N;;;;;
+139B6;EGYPTIAN HIEROGLYPH-139B6;Lo;0;L;;;;;N;;;;;
+139B7;EGYPTIAN HIEROGLYPH-139B7;Lo;0;L;;;;;N;;;;;
+139B8;EGYPTIAN HIEROGLYPH-139B8;Lo;0;L;;;;;N;;;;;
+139B9;EGYPTIAN HIEROGLYPH-139B9;Lo;0;L;;;;;N;;;;;
+139BA;EGYPTIAN HIEROGLYPH-139BA;Lo;0;L;;;;;N;;;;;
+139BB;EGYPTIAN HIEROGLYPH-139BB;Lo;0;L;;;;;N;;;;;
+139BC;EGYPTIAN HIEROGLYPH-139BC;Lo;0;L;;;;;N;;;;;
+139BD;EGYPTIAN HIEROGLYPH-139BD;Lo;0;L;;;;;N;;;;;
+139BE;EGYPTIAN HIEROGLYPH-139BE;Lo;0;L;;;;;N;;;;;
+139BF;EGYPTIAN HIEROGLYPH-139BF;Lo;0;L;;;;;N;;;;;
+139C0;EGYPTIAN HIEROGLYPH-139C0;Lo;0;L;;;;;N;;;;;
+139C1;EGYPTIAN HIEROGLYPH-139C1;Lo;0;L;;;;;N;;;;;
+139C2;EGYPTIAN HIEROGLYPH-139C2;Lo;0;L;;;;;N;;;;;
+139C3;EGYPTIAN HIEROGLYPH-139C3;Lo;0;L;;;;;N;;;;;
+139C4;EGYPTIAN HIEROGLYPH-139C4;Lo;0;L;;;;;N;;;;;
+139C5;EGYPTIAN HIEROGLYPH-139C5;Lo;0;L;;;;;N;;;;;
+139C6;EGYPTIAN HIEROGLYPH-139C6;Lo;0;L;;;;;N;;;;;
+139C7;EGYPTIAN HIEROGLYPH-139C7;Lo;0;L;;;;;N;;;;;
+139C8;EGYPTIAN HIEROGLYPH-139C8;Lo;0;L;;;;;N;;;;;
+139C9;EGYPTIAN HIEROGLYPH-139C9;Lo;0;L;;;;;N;;;;;
+139CA;EGYPTIAN HIEROGLYPH-139CA;Lo;0;L;;;;;N;;;;;
+139CB;EGYPTIAN HIEROGLYPH-139CB;Lo;0;L;;;;;N;;;;;
+139CC;EGYPTIAN HIEROGLYPH-139CC;Lo;0;L;;;;;N;;;;;
+139CD;EGYPTIAN HIEROGLYPH-139CD;Lo;0;L;;;;;N;;;;;
+139CE;EGYPTIAN HIEROGLYPH-139CE;Lo;0;L;;;;;N;;;;;
+139CF;EGYPTIAN HIEROGLYPH-139CF;Lo;0;L;;;;;N;;;;;
+139D0;EGYPTIAN HIEROGLYPH-139D0;Lo;0;L;;;;;N;;;;;
+139D1;EGYPTIAN HIEROGLYPH-139D1;Lo;0;L;;;;;N;;;;;
+139D2;EGYPTIAN HIEROGLYPH-139D2;Lo;0;L;;;;;N;;;;;
+139D3;EGYPTIAN HIEROGLYPH-139D3;Lo;0;L;;;;;N;;;;;
+139D4;EGYPTIAN HIEROGLYPH-139D4;Lo;0;L;;;;;N;;;;;
+139D5;EGYPTIAN HIEROGLYPH-139D5;Lo;0;L;;;;;N;;;;;
+139D6;EGYPTIAN HIEROGLYPH-139D6;Lo;0;L;;;;;N;;;;;
+139D7;EGYPTIAN HIEROGLYPH-139D7;Lo;0;L;;;;;N;;;;;
+139D8;EGYPTIAN HIEROGLYPH-139D8;Lo;0;L;;;;;N;;;;;
+139D9;EGYPTIAN HIEROGLYPH-139D9;Lo;0;L;;;;;N;;;;;
+139DA;EGYPTIAN HIEROGLYPH-139DA;Lo;0;L;;;;;N;;;;;
+139DB;EGYPTIAN HIEROGLYPH-139DB;Lo;0;L;;;;;N;;;;;
+139DC;EGYPTIAN HIEROGLYPH-139DC;Lo;0;L;;;;;N;;;;;
+139DD;EGYPTIAN HIEROGLYPH-139DD;Lo;0;L;;;;;N;;;;;
+139DE;EGYPTIAN HIEROGLYPH-139DE;Lo;0;L;;;;;N;;;;;
+139DF;EGYPTIAN HIEROGLYPH-139DF;Lo;0;L;;;;;N;;;;;
+139E0;EGYPTIAN HIEROGLYPH-139E0;Lo;0;L;;;;;N;;;;;
+139E1;EGYPTIAN HIEROGLYPH-139E1;Lo;0;L;;;;;N;;;;;
+139E2;EGYPTIAN HIEROGLYPH-139E2;Lo;0;L;;;;;N;;;;;
+139E3;EGYPTIAN HIEROGLYPH-139E3;Lo;0;L;;;;;N;;;;;
+139E4;EGYPTIAN HIEROGLYPH-139E4;Lo;0;L;;;;;N;;;;;
+139E5;EGYPTIAN HIEROGLYPH-139E5;Lo;0;L;;;;;N;;;;;
+139E6;EGYPTIAN HIEROGLYPH-139E6;Lo;0;L;;;;;N;;;;;
+139E7;EGYPTIAN HIEROGLYPH-139E7;Lo;0;L;;;;;N;;;;;
+139E8;EGYPTIAN HIEROGLYPH-139E8;Lo;0;L;;;;;N;;;;;
+139E9;EGYPTIAN HIEROGLYPH-139E9;Lo;0;L;;;;;N;;;;;
+139EA;EGYPTIAN HIEROGLYPH-139EA;Lo;0;L;;;;;N;;;;;
+139EB;EGYPTIAN HIEROGLYPH-139EB;Lo;0;L;;;;;N;;;;;
+139EC;EGYPTIAN HIEROGLYPH-139EC;Lo;0;L;;;;;N;;;;;
+139ED;EGYPTIAN HIEROGLYPH-139ED;Lo;0;L;;;;;N;;;;;
+139EE;EGYPTIAN HIEROGLYPH-139EE;Lo;0;L;;;;;N;;;;;
+139EF;EGYPTIAN HIEROGLYPH-139EF;Lo;0;L;;;;;N;;;;;
+139F0;EGYPTIAN HIEROGLYPH-139F0;Lo;0;L;;;;;N;;;;;
+139F1;EGYPTIAN HIEROGLYPH-139F1;Lo;0;L;;;;;N;;;;;
+139F2;EGYPTIAN HIEROGLYPH-139F2;Lo;0;L;;;;;N;;;;;
+139F3;EGYPTIAN HIEROGLYPH-139F3;Lo;0;L;;;;;N;;;;;
+139F4;EGYPTIAN HIEROGLYPH-139F4;Lo;0;L;;;;;N;;;;;
+139F5;EGYPTIAN HIEROGLYPH-139F5;Lo;0;L;;;;;N;;;;;
+139F6;EGYPTIAN HIEROGLYPH-139F6;Lo;0;L;;;;;N;;;;;
+139F7;EGYPTIAN HIEROGLYPH-139F7;Lo;0;L;;;;;N;;;;;
+139F8;EGYPTIAN HIEROGLYPH-139F8;Lo;0;L;;;;;N;;;;;
+139F9;EGYPTIAN HIEROGLYPH-139F9;Lo;0;L;;;;;N;;;;;
+139FA;EGYPTIAN HIEROGLYPH-139FA;Lo;0;L;;;;;N;;;;;
+139FB;EGYPTIAN HIEROGLYPH-139FB;Lo;0;L;;;;;N;;;;;
+139FC;EGYPTIAN HIEROGLYPH-139FC;Lo;0;L;;;;;N;;;;;
+139FD;EGYPTIAN HIEROGLYPH-139FD;Lo;0;L;;;;;N;;;;;
+139FE;EGYPTIAN HIEROGLYPH-139FE;Lo;0;L;;;;;N;;;;;
+139FF;EGYPTIAN HIEROGLYPH-139FF;Lo;0;L;;;;;N;;;;;
+13A00;EGYPTIAN HIEROGLYPH-13A00;Lo;0;L;;;;;N;;;;;
+13A01;EGYPTIAN HIEROGLYPH-13A01;Lo;0;L;;;;;N;;;;;
+13A02;EGYPTIAN HIEROGLYPH-13A02;Lo;0;L;;;;;N;;;;;
+13A03;EGYPTIAN HIEROGLYPH-13A03;Lo;0;L;;;;;N;;;;;
+13A04;EGYPTIAN HIEROGLYPH-13A04;Lo;0;L;;;;;N;;;;;
+13A05;EGYPTIAN HIEROGLYPH-13A05;Lo;0;L;;;;;N;;;;;
+13A06;EGYPTIAN HIEROGLYPH-13A06;Lo;0;L;;;;;N;;;;;
+13A07;EGYPTIAN HIEROGLYPH-13A07;Lo;0;L;;;;;N;;;;;
+13A08;EGYPTIAN HIEROGLYPH-13A08;Lo;0;L;;;;;N;;;;;
+13A09;EGYPTIAN HIEROGLYPH-13A09;Lo;0;L;;;;;N;;;;;
+13A0A;EGYPTIAN HIEROGLYPH-13A0A;Lo;0;L;;;;;N;;;;;
+13A0B;EGYPTIAN HIEROGLYPH-13A0B;Lo;0;L;;;;;N;;;;;
+13A0C;EGYPTIAN HIEROGLYPH-13A0C;Lo;0;L;;;;;N;;;;;
+13A0D;EGYPTIAN HIEROGLYPH-13A0D;Lo;0;L;;;;;N;;;;;
+13A0E;EGYPTIAN HIEROGLYPH-13A0E;Lo;0;L;;;;;N;;;;;
+13A0F;EGYPTIAN HIEROGLYPH-13A0F;Lo;0;L;;;;;N;;;;;
+13A10;EGYPTIAN HIEROGLYPH-13A10;Lo;0;L;;;;;N;;;;;
+13A11;EGYPTIAN HIEROGLYPH-13A11;Lo;0;L;;;;;N;;;;;
+13A12;EGYPTIAN HIEROGLYPH-13A12;Lo;0;L;;;;;N;;;;;
+13A13;EGYPTIAN HIEROGLYPH-13A13;Lo;0;L;;;;;N;;;;;
+13A14;EGYPTIAN HIEROGLYPH-13A14;Lo;0;L;;;;;N;;;;;
+13A15;EGYPTIAN HIEROGLYPH-13A15;Lo;0;L;;;;;N;;;;;
+13A16;EGYPTIAN HIEROGLYPH-13A16;Lo;0;L;;;;;N;;;;;
+13A17;EGYPTIAN HIEROGLYPH-13A17;Lo;0;L;;;;;N;;;;;
+13A18;EGYPTIAN HIEROGLYPH-13A18;Lo;0;L;;;;;N;;;;;
+13A19;EGYPTIAN HIEROGLYPH-13A19;Lo;0;L;;;;;N;;;;;
+13A1A;EGYPTIAN HIEROGLYPH-13A1A;Lo;0;L;;;;;N;;;;;
+13A1B;EGYPTIAN HIEROGLYPH-13A1B;Lo;0;L;;;;;N;;;;;
+13A1C;EGYPTIAN HIEROGLYPH-13A1C;Lo;0;L;;;;;N;;;;;
+13A1D;EGYPTIAN HIEROGLYPH-13A1D;Lo;0;L;;;;;N;;;;;
+13A1E;EGYPTIAN HIEROGLYPH-13A1E;Lo;0;L;;;;;N;;;;;
+13A1F;EGYPTIAN HIEROGLYPH-13A1F;Lo;0;L;;;;;N;;;;;
+13A20;EGYPTIAN HIEROGLYPH-13A20;Lo;0;L;;;;;N;;;;;
+13A21;EGYPTIAN HIEROGLYPH-13A21;Lo;0;L;;;;;N;;;;;
+13A22;EGYPTIAN HIEROGLYPH-13A22;Lo;0;L;;;;;N;;;;;
+13A23;EGYPTIAN HIEROGLYPH-13A23;Lo;0;L;;;;;N;;;;;
+13A24;EGYPTIAN HIEROGLYPH-13A24;Lo;0;L;;;;;N;;;;;
+13A25;EGYPTIAN HIEROGLYPH-13A25;Lo;0;L;;;;;N;;;;;
+13A26;EGYPTIAN HIEROGLYPH-13A26;Lo;0;L;;;;;N;;;;;
+13A27;EGYPTIAN HIEROGLYPH-13A27;Lo;0;L;;;;;N;;;;;
+13A28;EGYPTIAN HIEROGLYPH-13A28;Lo;0;L;;;;;N;;;;;
+13A29;EGYPTIAN HIEROGLYPH-13A29;Lo;0;L;;;;;N;;;;;
+13A2A;EGYPTIAN HIEROGLYPH-13A2A;Lo;0;L;;;;;N;;;;;
+13A2B;EGYPTIAN HIEROGLYPH-13A2B;Lo;0;L;;;;;N;;;;;
+13A2C;EGYPTIAN HIEROGLYPH-13A2C;Lo;0;L;;;;;N;;;;;
+13A2D;EGYPTIAN HIEROGLYPH-13A2D;Lo;0;L;;;;;N;;;;;
+13A2E;EGYPTIAN HIEROGLYPH-13A2E;Lo;0;L;;;;;N;;;;;
+13A2F;EGYPTIAN HIEROGLYPH-13A2F;Lo;0;L;;;;;N;;;;;
+13A30;EGYPTIAN HIEROGLYPH-13A30;Lo;0;L;;;;;N;;;;;
+13A31;EGYPTIAN HIEROGLYPH-13A31;Lo;0;L;;;;;N;;;;;
+13A32;EGYPTIAN HIEROGLYPH-13A32;Lo;0;L;;;;;N;;;;;
+13A33;EGYPTIAN HIEROGLYPH-13A33;Lo;0;L;;;;;N;;;;;
+13A34;EGYPTIAN HIEROGLYPH-13A34;Lo;0;L;;;;;N;;;;;
+13A35;EGYPTIAN HIEROGLYPH-13A35;Lo;0;L;;;;;N;;;;;
+13A36;EGYPTIAN HIEROGLYPH-13A36;Lo;0;L;;;;;N;;;;;
+13A37;EGYPTIAN HIEROGLYPH-13A37;Lo;0;L;;;;;N;;;;;
+13A38;EGYPTIAN HIEROGLYPH-13A38;Lo;0;L;;;;;N;;;;;
+13A39;EGYPTIAN HIEROGLYPH-13A39;Lo;0;L;;;;;N;;;;;
+13A3A;EGYPTIAN HIEROGLYPH-13A3A;Lo;0;L;;;;;N;;;;;
+13A3B;EGYPTIAN HIEROGLYPH-13A3B;Lo;0;L;;;;;N;;;;;
+13A3C;EGYPTIAN HIEROGLYPH-13A3C;Lo;0;L;;;;;N;;;;;
+13A3D;EGYPTIAN HIEROGLYPH-13A3D;Lo;0;L;;;;;N;;;;;
+13A3E;EGYPTIAN HIEROGLYPH-13A3E;Lo;0;L;;;;;N;;;;;
+13A3F;EGYPTIAN HIEROGLYPH-13A3F;Lo;0;L;;;;;N;;;;;
+13A40;EGYPTIAN HIEROGLYPH-13A40;Lo;0;L;;;;;N;;;;;
+13A41;EGYPTIAN HIEROGLYPH-13A41;Lo;0;L;;;;;N;;;;;
+13A42;EGYPTIAN HIEROGLYPH-13A42;Lo;0;L;;;;;N;;;;;
+13A43;EGYPTIAN HIEROGLYPH-13A43;Lo;0;L;;;;;N;;;;;
+13A44;EGYPTIAN HIEROGLYPH-13A44;Lo;0;L;;;;;N;;;;;
+13A45;EGYPTIAN HIEROGLYPH-13A45;Lo;0;L;;;;;N;;;;;
+13A46;EGYPTIAN HIEROGLYPH-13A46;Lo;0;L;;;;;N;;;;;
+13A47;EGYPTIAN HIEROGLYPH-13A47;Lo;0;L;;;;;N;;;;;
+13A48;EGYPTIAN HIEROGLYPH-13A48;Lo;0;L;;;;;N;;;;;
+13A49;EGYPTIAN HIEROGLYPH-13A49;Lo;0;L;;;;;N;;;;;
+13A4A;EGYPTIAN HIEROGLYPH-13A4A;Lo;0;L;;;;;N;;;;;
+13A4B;EGYPTIAN HIEROGLYPH-13A4B;Lo;0;L;;;;;N;;;;;
+13A4C;EGYPTIAN HIEROGLYPH-13A4C;Lo;0;L;;;;;N;;;;;
+13A4D;EGYPTIAN HIEROGLYPH-13A4D;Lo;0;L;;;;;N;;;;;
+13A4E;EGYPTIAN HIEROGLYPH-13A4E;Lo;0;L;;;;;N;;;;;
+13A4F;EGYPTIAN HIEROGLYPH-13A4F;Lo;0;L;;;;;N;;;;;
+13A50;EGYPTIAN HIEROGLYPH-13A50;Lo;0;L;;;;;N;;;;;
+13A51;EGYPTIAN HIEROGLYPH-13A51;Lo;0;L;;;;;N;;;;;
+13A52;EGYPTIAN HIEROGLYPH-13A52;Lo;0;L;;;;;N;;;;;
+13A53;EGYPTIAN HIEROGLYPH-13A53;Lo;0;L;;;;;N;;;;;
+13A54;EGYPTIAN HIEROGLYPH-13A54;Lo;0;L;;;;;N;;;;;
+13A55;EGYPTIAN HIEROGLYPH-13A55;Lo;0;L;;;;;N;;;;;
+13A56;EGYPTIAN HIEROGLYPH-13A56;Lo;0;L;;;;;N;;;;;
+13A57;EGYPTIAN HIEROGLYPH-13A57;Lo;0;L;;;;;N;;;;;
+13A58;EGYPTIAN HIEROGLYPH-13A58;Lo;0;L;;;;;N;;;;;
+13A59;EGYPTIAN HIEROGLYPH-13A59;Lo;0;L;;;;;N;;;;;
+13A5A;EGYPTIAN HIEROGLYPH-13A5A;Lo;0;L;;;;;N;;;;;
+13A5B;EGYPTIAN HIEROGLYPH-13A5B;Lo;0;L;;;;;N;;;;;
+13A5C;EGYPTIAN HIEROGLYPH-13A5C;Lo;0;L;;;;;N;;;;;
+13A5D;EGYPTIAN HIEROGLYPH-13A5D;Lo;0;L;;;;;N;;;;;
+13A5E;EGYPTIAN HIEROGLYPH-13A5E;Lo;0;L;;;;;N;;;;;
+13A5F;EGYPTIAN HIEROGLYPH-13A5F;Lo;0;L;;;;;N;;;;;
+13A60;EGYPTIAN HIEROGLYPH-13A60;Lo;0;L;;;;;N;;;;;
+13A61;EGYPTIAN HIEROGLYPH-13A61;Lo;0;L;;;;;N;;;;;
+13A62;EGYPTIAN HIEROGLYPH-13A62;Lo;0;L;;;;;N;;;;;
+13A63;EGYPTIAN HIEROGLYPH-13A63;Lo;0;L;;;;;N;;;;;
+13A64;EGYPTIAN HIEROGLYPH-13A64;Lo;0;L;;;;;N;;;;;
+13A65;EGYPTIAN HIEROGLYPH-13A65;Lo;0;L;;;;;N;;;;;
+13A66;EGYPTIAN HIEROGLYPH-13A66;Lo;0;L;;;;;N;;;;;
+13A67;EGYPTIAN HIEROGLYPH-13A67;Lo;0;L;;;;;N;;;;;
+13A68;EGYPTIAN HIEROGLYPH-13A68;Lo;0;L;;;;;N;;;;;
+13A69;EGYPTIAN HIEROGLYPH-13A69;Lo;0;L;;;;;N;;;;;
+13A6A;EGYPTIAN HIEROGLYPH-13A6A;Lo;0;L;;;;;N;;;;;
+13A6B;EGYPTIAN HIEROGLYPH-13A6B;Lo;0;L;;;;;N;;;;;
+13A6C;EGYPTIAN HIEROGLYPH-13A6C;Lo;0;L;;;;;N;;;;;
+13A6D;EGYPTIAN HIEROGLYPH-13A6D;Lo;0;L;;;;;N;;;;;
+13A6E;EGYPTIAN HIEROGLYPH-13A6E;Lo;0;L;;;;;N;;;;;
+13A6F;EGYPTIAN HIEROGLYPH-13A6F;Lo;0;L;;;;;N;;;;;
+13A70;EGYPTIAN HIEROGLYPH-13A70;Lo;0;L;;;;;N;;;;;
+13A71;EGYPTIAN HIEROGLYPH-13A71;Lo;0;L;;;;;N;;;;;
+13A72;EGYPTIAN HIEROGLYPH-13A72;Lo;0;L;;;;;N;;;;;
+13A73;EGYPTIAN HIEROGLYPH-13A73;Lo;0;L;;;;;N;;;;;
+13A74;EGYPTIAN HIEROGLYPH-13A74;Lo;0;L;;;;;N;;;;;
+13A75;EGYPTIAN HIEROGLYPH-13A75;Lo;0;L;;;;;N;;;;;
+13A76;EGYPTIAN HIEROGLYPH-13A76;Lo;0;L;;;;;N;;;;;
+13A77;EGYPTIAN HIEROGLYPH-13A77;Lo;0;L;;;;;N;;;;;
+13A78;EGYPTIAN HIEROGLYPH-13A78;Lo;0;L;;;;;N;;;;;
+13A79;EGYPTIAN HIEROGLYPH-13A79;Lo;0;L;;;;;N;;;;;
+13A7A;EGYPTIAN HIEROGLYPH-13A7A;Lo;0;L;;;;;N;;;;;
+13A7B;EGYPTIAN HIEROGLYPH-13A7B;Lo;0;L;;;;;N;;;;;
+13A7C;EGYPTIAN HIEROGLYPH-13A7C;Lo;0;L;;;;;N;;;;;
+13A7D;EGYPTIAN HIEROGLYPH-13A7D;Lo;0;L;;;;;N;;;;;
+13A7E;EGYPTIAN HIEROGLYPH-13A7E;Lo;0;L;;;;;N;;;;;
+13A7F;EGYPTIAN HIEROGLYPH-13A7F;Lo;0;L;;;;;N;;;;;
+13A80;EGYPTIAN HIEROGLYPH-13A80;Lo;0;L;;;;;N;;;;;
+13A81;EGYPTIAN HIEROGLYPH-13A81;Lo;0;L;;;;;N;;;;;
+13A82;EGYPTIAN HIEROGLYPH-13A82;Lo;0;L;;;;;N;;;;;
+13A83;EGYPTIAN HIEROGLYPH-13A83;Lo;0;L;;;;;N;;;;;
+13A84;EGYPTIAN HIEROGLYPH-13A84;Lo;0;L;;;;;N;;;;;
+13A85;EGYPTIAN HIEROGLYPH-13A85;Lo;0;L;;;;;N;;;;;
+13A86;EGYPTIAN HIEROGLYPH-13A86;Lo;0;L;;;;;N;;;;;
+13A87;EGYPTIAN HIEROGLYPH-13A87;Lo;0;L;;;;;N;;;;;
+13A88;EGYPTIAN HIEROGLYPH-13A88;Lo;0;L;;;;;N;;;;;
+13A89;EGYPTIAN HIEROGLYPH-13A89;Lo;0;L;;;;;N;;;;;
+13A8A;EGYPTIAN HIEROGLYPH-13A8A;Lo;0;L;;;;;N;;;;;
+13A8B;EGYPTIAN HIEROGLYPH-13A8B;Lo;0;L;;;;;N;;;;;
+13A8C;EGYPTIAN HIEROGLYPH-13A8C;Lo;0;L;;;;;N;;;;;
+13A8D;EGYPTIAN HIEROGLYPH-13A8D;Lo;0;L;;;;;N;;;;;
+13A8E;EGYPTIAN HIEROGLYPH-13A8E;Lo;0;L;;;;;N;;;;;
+13A8F;EGYPTIAN HIEROGLYPH-13A8F;Lo;0;L;;;;;N;;;;;
+13A90;EGYPTIAN HIEROGLYPH-13A90;Lo;0;L;;;;;N;;;;;
+13A91;EGYPTIAN HIEROGLYPH-13A91;Lo;0;L;;;;;N;;;;;
+13A92;EGYPTIAN HIEROGLYPH-13A92;Lo;0;L;;;;;N;;;;;
+13A93;EGYPTIAN HIEROGLYPH-13A93;Lo;0;L;;;;;N;;;;;
+13A94;EGYPTIAN HIEROGLYPH-13A94;Lo;0;L;;;;;N;;;;;
+13A95;EGYPTIAN HIEROGLYPH-13A95;Lo;0;L;;;;;N;;;;;
+13A96;EGYPTIAN HIEROGLYPH-13A96;Lo;0;L;;;;;N;;;;;
+13A97;EGYPTIAN HIEROGLYPH-13A97;Lo;0;L;;;;;N;;;;;
+13A98;EGYPTIAN HIEROGLYPH-13A98;Lo;0;L;;;;;N;;;;;
+13A99;EGYPTIAN HIEROGLYPH-13A99;Lo;0;L;;;;;N;;;;;
+13A9A;EGYPTIAN HIEROGLYPH-13A9A;Lo;0;L;;;;;N;;;;;
+13A9B;EGYPTIAN HIEROGLYPH-13A9B;Lo;0;L;;;;;N;;;;;
+13A9C;EGYPTIAN HIEROGLYPH-13A9C;Lo;0;L;;;;;N;;;;;
+13A9D;EGYPTIAN HIEROGLYPH-13A9D;Lo;0;L;;;;;N;;;;;
+13A9E;EGYPTIAN HIEROGLYPH-13A9E;Lo;0;L;;;;;N;;;;;
+13A9F;EGYPTIAN HIEROGLYPH-13A9F;Lo;0;L;;;;;N;;;;;
+13AA0;EGYPTIAN HIEROGLYPH-13AA0;Lo;0;L;;;;;N;;;;;
+13AA1;EGYPTIAN HIEROGLYPH-13AA1;Lo;0;L;;;;;N;;;;;
+13AA2;EGYPTIAN HIEROGLYPH-13AA2;Lo;0;L;;;;;N;;;;;
+13AA3;EGYPTIAN HIEROGLYPH-13AA3;Lo;0;L;;;;;N;;;;;
+13AA4;EGYPTIAN HIEROGLYPH-13AA4;Lo;0;L;;;;;N;;;;;
+13AA5;EGYPTIAN HIEROGLYPH-13AA5;Lo;0;L;;;;;N;;;;;
+13AA6;EGYPTIAN HIEROGLYPH-13AA6;Lo;0;L;;;;;N;;;;;
+13AA7;EGYPTIAN HIEROGLYPH-13AA7;Lo;0;L;;;;;N;;;;;
+13AA8;EGYPTIAN HIEROGLYPH-13AA8;Lo;0;L;;;;;N;;;;;
+13AA9;EGYPTIAN HIEROGLYPH-13AA9;Lo;0;L;;;;;N;;;;;
+13AAA;EGYPTIAN HIEROGLYPH-13AAA;Lo;0;L;;;;;N;;;;;
+13AAB;EGYPTIAN HIEROGLYPH-13AAB;Lo;0;L;;;;;N;;;;;
+13AAC;EGYPTIAN HIEROGLYPH-13AAC;Lo;0;L;;;;;N;;;;;
+13AAD;EGYPTIAN HIEROGLYPH-13AAD;Lo;0;L;;;;;N;;;;;
+13AAE;EGYPTIAN HIEROGLYPH-13AAE;Lo;0;L;;;;;N;;;;;
+13AAF;EGYPTIAN HIEROGLYPH-13AAF;Lo;0;L;;;;;N;;;;;
+13AB0;EGYPTIAN HIEROGLYPH-13AB0;Lo;0;L;;;;;N;;;;;
+13AB1;EGYPTIAN HIEROGLYPH-13AB1;Lo;0;L;;;;;N;;;;;
+13AB2;EGYPTIAN HIEROGLYPH-13AB2;Lo;0;L;;;;;N;;;;;
+13AB3;EGYPTIAN HIEROGLYPH-13AB3;Lo;0;L;;;;;N;;;;;
+13AB4;EGYPTIAN HIEROGLYPH-13AB4;Lo;0;L;;;;;N;;;;;
+13AB5;EGYPTIAN HIEROGLYPH-13AB5;Lo;0;L;;;;;N;;;;;
+13AB6;EGYPTIAN HIEROGLYPH-13AB6;Lo;0;L;;;;;N;;;;;
+13AB7;EGYPTIAN HIEROGLYPH-13AB7;Lo;0;L;;;;;N;;;;;
+13AB8;EGYPTIAN HIEROGLYPH-13AB8;Lo;0;L;;;;;N;;;;;
+13AB9;EGYPTIAN HIEROGLYPH-13AB9;Lo;0;L;;;;;N;;;;;
+13ABA;EGYPTIAN HIEROGLYPH-13ABA;Lo;0;L;;;;;N;;;;;
+13ABB;EGYPTIAN HIEROGLYPH-13ABB;Lo;0;L;;;;;N;;;;;
+13ABC;EGYPTIAN HIEROGLYPH-13ABC;Lo;0;L;;;;;N;;;;;
+13ABD;EGYPTIAN HIEROGLYPH-13ABD;Lo;0;L;;;;;N;;;;;
+13ABE;EGYPTIAN HIEROGLYPH-13ABE;Lo;0;L;;;;;N;;;;;
+13ABF;EGYPTIAN HIEROGLYPH-13ABF;Lo;0;L;;;;;N;;;;;
+13AC0;EGYPTIAN HIEROGLYPH-13AC0;Lo;0;L;;;;;N;;;;;
+13AC1;EGYPTIAN HIEROGLYPH-13AC1;Lo;0;L;;;;;N;;;;;
+13AC2;EGYPTIAN HIEROGLYPH-13AC2;Lo;0;L;;;;;N;;;;;
+13AC3;EGYPTIAN HIEROGLYPH-13AC3;Lo;0;L;;;;;N;;;;;
+13AC4;EGYPTIAN HIEROGLYPH-13AC4;Lo;0;L;;;;;N;;;;;
+13AC5;EGYPTIAN HIEROGLYPH-13AC5;Lo;0;L;;;;;N;;;;;
+13AC6;EGYPTIAN HIEROGLYPH-13AC6;Lo;0;L;;;;;N;;;;;
+13AC7;EGYPTIAN HIEROGLYPH-13AC7;Lo;0;L;;;;;N;;;;;
+13AC8;EGYPTIAN HIEROGLYPH-13AC8;Lo;0;L;;;;;N;;;;;
+13AC9;EGYPTIAN HIEROGLYPH-13AC9;Lo;0;L;;;;;N;;;;;
+13ACA;EGYPTIAN HIEROGLYPH-13ACA;Lo;0;L;;;;;N;;;;;
+13ACB;EGYPTIAN HIEROGLYPH-13ACB;Lo;0;L;;;;;N;;;;;
+13ACC;EGYPTIAN HIEROGLYPH-13ACC;Lo;0;L;;;;;N;;;;;
+13ACD;EGYPTIAN HIEROGLYPH-13ACD;Lo;0;L;;;;;N;;;;;
+13ACE;EGYPTIAN HIEROGLYPH-13ACE;Lo;0;L;;;;;N;;;;;
+13ACF;EGYPTIAN HIEROGLYPH-13ACF;Lo;0;L;;;;;N;;;;;
+13AD0;EGYPTIAN HIEROGLYPH-13AD0;Lo;0;L;;;;;N;;;;;
+13AD1;EGYPTIAN HIEROGLYPH-13AD1;Lo;0;L;;;;;N;;;;;
+13AD2;EGYPTIAN HIEROGLYPH-13AD2;Lo;0;L;;;;;N;;;;;
+13AD3;EGYPTIAN HIEROGLYPH-13AD3;Lo;0;L;;;;;N;;;;;
+13AD4;EGYPTIAN HIEROGLYPH-13AD4;Lo;0;L;;;;;N;;;;;
+13AD5;EGYPTIAN HIEROGLYPH-13AD5;Lo;0;L;;;;;N;;;;;
+13AD6;EGYPTIAN HIEROGLYPH-13AD6;Lo;0;L;;;;;N;;;;;
+13AD7;EGYPTIAN HIEROGLYPH-13AD7;Lo;0;L;;;;;N;;;;;
+13AD8;EGYPTIAN HIEROGLYPH-13AD8;Lo;0;L;;;;;N;;;;;
+13AD9;EGYPTIAN HIEROGLYPH-13AD9;Lo;0;L;;;;;N;;;;;
+13ADA;EGYPTIAN HIEROGLYPH-13ADA;Lo;0;L;;;;;N;;;;;
+13ADB;EGYPTIAN HIEROGLYPH-13ADB;Lo;0;L;;;;;N;;;;;
+13ADC;EGYPTIAN HIEROGLYPH-13ADC;Lo;0;L;;;;;N;;;;;
+13ADD;EGYPTIAN HIEROGLYPH-13ADD;Lo;0;L;;;;;N;;;;;
+13ADE;EGYPTIAN HIEROGLYPH-13ADE;Lo;0;L;;;;;N;;;;;
+13ADF;EGYPTIAN HIEROGLYPH-13ADF;Lo;0;L;;;;;N;;;;;
+13AE0;EGYPTIAN HIEROGLYPH-13AE0;Lo;0;L;;;;;N;;;;;
+13AE1;EGYPTIAN HIEROGLYPH-13AE1;Lo;0;L;;;;;N;;;;;
+13AE2;EGYPTIAN HIEROGLYPH-13AE2;Lo;0;L;;;;;N;;;;;
+13AE3;EGYPTIAN HIEROGLYPH-13AE3;Lo;0;L;;;;;N;;;;;
+13AE4;EGYPTIAN HIEROGLYPH-13AE4;Lo;0;L;;;;;N;;;;;
+13AE5;EGYPTIAN HIEROGLYPH-13AE5;Lo;0;L;;;;;N;;;;;
+13AE6;EGYPTIAN HIEROGLYPH-13AE6;Lo;0;L;;;;;N;;;;;
+13AE7;EGYPTIAN HIEROGLYPH-13AE7;Lo;0;L;;;;;N;;;;;
+13AE8;EGYPTIAN HIEROGLYPH-13AE8;Lo;0;L;;;;;N;;;;;
+13AE9;EGYPTIAN HIEROGLYPH-13AE9;Lo;0;L;;;;;N;;;;;
+13AEA;EGYPTIAN HIEROGLYPH-13AEA;Lo;0;L;;;;;N;;;;;
+13AEB;EGYPTIAN HIEROGLYPH-13AEB;Lo;0;L;;;;;N;;;;;
+13AEC;EGYPTIAN HIEROGLYPH-13AEC;Lo;0;L;;;;;N;;;;;
+13AED;EGYPTIAN HIEROGLYPH-13AED;Lo;0;L;;;;;N;;;;;
+13AEE;EGYPTIAN HIEROGLYPH-13AEE;Lo;0;L;;;;;N;;;;;
+13AEF;EGYPTIAN HIEROGLYPH-13AEF;Lo;0;L;;;;;N;;;;;
+13AF0;EGYPTIAN HIEROGLYPH-13AF0;Lo;0;L;;;;;N;;;;;
+13AF1;EGYPTIAN HIEROGLYPH-13AF1;Lo;0;L;;;;;N;;;;;
+13AF2;EGYPTIAN HIEROGLYPH-13AF2;Lo;0;L;;;;;N;;;;;
+13AF3;EGYPTIAN HIEROGLYPH-13AF3;Lo;0;L;;;;;N;;;;;
+13AF4;EGYPTIAN HIEROGLYPH-13AF4;Lo;0;L;;;;;N;;;;;
+13AF5;EGYPTIAN HIEROGLYPH-13AF5;Lo;0;L;;;;;N;;;;;
+13AF6;EGYPTIAN HIEROGLYPH-13AF6;Lo;0;L;;;;;N;;;;;
+13AF7;EGYPTIAN HIEROGLYPH-13AF7;Lo;0;L;;;;;N;;;;;
+13AF8;EGYPTIAN HIEROGLYPH-13AF8;Lo;0;L;;;;;N;;;;;
+13AF9;EGYPTIAN HIEROGLYPH-13AF9;Lo;0;L;;;;;N;;;;;
+13AFA;EGYPTIAN HIEROGLYPH-13AFA;Lo;0;L;;;;;N;;;;;
+13AFB;EGYPTIAN HIEROGLYPH-13AFB;Lo;0;L;;;;;N;;;;;
+13AFC;EGYPTIAN HIEROGLYPH-13AFC;Lo;0;L;;;;;N;;;;;
+13AFD;EGYPTIAN HIEROGLYPH-13AFD;Lo;0;L;;;;;N;;;;;
+13AFE;EGYPTIAN HIEROGLYPH-13AFE;Lo;0;L;;;;;N;;;;;
+13AFF;EGYPTIAN HIEROGLYPH-13AFF;Lo;0;L;;;;;N;;;;;
+13B00;EGYPTIAN HIEROGLYPH-13B00;Lo;0;L;;;;;N;;;;;
+13B01;EGYPTIAN HIEROGLYPH-13B01;Lo;0;L;;;;;N;;;;;
+13B02;EGYPTIAN HIEROGLYPH-13B02;Lo;0;L;;;;;N;;;;;
+13B03;EGYPTIAN HIEROGLYPH-13B03;Lo;0;L;;;;;N;;;;;
+13B04;EGYPTIAN HIEROGLYPH-13B04;Lo;0;L;;;;;N;;;;;
+13B05;EGYPTIAN HIEROGLYPH-13B05;Lo;0;L;;;;;N;;;;;
+13B06;EGYPTIAN HIEROGLYPH-13B06;Lo;0;L;;;;;N;;;;;
+13B07;EGYPTIAN HIEROGLYPH-13B07;Lo;0;L;;;;;N;;;;;
+13B08;EGYPTIAN HIEROGLYPH-13B08;Lo;0;L;;;;;N;;;;;
+13B09;EGYPTIAN HIEROGLYPH-13B09;Lo;0;L;;;;;N;;;;;
+13B0A;EGYPTIAN HIEROGLYPH-13B0A;Lo;0;L;;;;;N;;;;;
+13B0B;EGYPTIAN HIEROGLYPH-13B0B;Lo;0;L;;;;;N;;;;;
+13B0C;EGYPTIAN HIEROGLYPH-13B0C;Lo;0;L;;;;;N;;;;;
+13B0D;EGYPTIAN HIEROGLYPH-13B0D;Lo;0;L;;;;;N;;;;;
+13B0E;EGYPTIAN HIEROGLYPH-13B0E;Lo;0;L;;;;;N;;;;;
+13B0F;EGYPTIAN HIEROGLYPH-13B0F;Lo;0;L;;;;;N;;;;;
+13B10;EGYPTIAN HIEROGLYPH-13B10;Lo;0;L;;;;;N;;;;;
+13B11;EGYPTIAN HIEROGLYPH-13B11;Lo;0;L;;;;;N;;;;;
+13B12;EGYPTIAN HIEROGLYPH-13B12;Lo;0;L;;;;;N;;;;;
+13B13;EGYPTIAN HIEROGLYPH-13B13;Lo;0;L;;;;;N;;;;;
+13B14;EGYPTIAN HIEROGLYPH-13B14;Lo;0;L;;;;;N;;;;;
+13B15;EGYPTIAN HIEROGLYPH-13B15;Lo;0;L;;;;;N;;;;;
+13B16;EGYPTIAN HIEROGLYPH-13B16;Lo;0;L;;;;;N;;;;;
+13B17;EGYPTIAN HIEROGLYPH-13B17;Lo;0;L;;;;;N;;;;;
+13B18;EGYPTIAN HIEROGLYPH-13B18;Lo;0;L;;;;;N;;;;;
+13B19;EGYPTIAN HIEROGLYPH-13B19;Lo;0;L;;;;;N;;;;;
+13B1A;EGYPTIAN HIEROGLYPH-13B1A;Lo;0;L;;;;;N;;;;;
+13B1B;EGYPTIAN HIEROGLYPH-13B1B;Lo;0;L;;;;;N;;;;;
+13B1C;EGYPTIAN HIEROGLYPH-13B1C;Lo;0;L;;;;;N;;;;;
+13B1D;EGYPTIAN HIEROGLYPH-13B1D;Lo;0;L;;;;;N;;;;;
+13B1E;EGYPTIAN HIEROGLYPH-13B1E;Lo;0;L;;;;;N;;;;;
+13B1F;EGYPTIAN HIEROGLYPH-13B1F;Lo;0;L;;;;;N;;;;;
+13B20;EGYPTIAN HIEROGLYPH-13B20;Lo;0;L;;;;;N;;;;;
+13B21;EGYPTIAN HIEROGLYPH-13B21;Lo;0;L;;;;;N;;;;;
+13B22;EGYPTIAN HIEROGLYPH-13B22;Lo;0;L;;;;;N;;;;;
+13B23;EGYPTIAN HIEROGLYPH-13B23;Lo;0;L;;;;;N;;;;;
+13B24;EGYPTIAN HIEROGLYPH-13B24;Lo;0;L;;;;;N;;;;;
+13B25;EGYPTIAN HIEROGLYPH-13B25;Lo;0;L;;;;;N;;;;;
+13B26;EGYPTIAN HIEROGLYPH-13B26;Lo;0;L;;;;;N;;;;;
+13B27;EGYPTIAN HIEROGLYPH-13B27;Lo;0;L;;;;;N;;;;;
+13B28;EGYPTIAN HIEROGLYPH-13B28;Lo;0;L;;;;;N;;;;;
+13B29;EGYPTIAN HIEROGLYPH-13B29;Lo;0;L;;;;;N;;;;;
+13B2A;EGYPTIAN HIEROGLYPH-13B2A;Lo;0;L;;;;;N;;;;;
+13B2B;EGYPTIAN HIEROGLYPH-13B2B;Lo;0;L;;;;;N;;;;;
+13B2C;EGYPTIAN HIEROGLYPH-13B2C;Lo;0;L;;;;;N;;;;;
+13B2D;EGYPTIAN HIEROGLYPH-13B2D;Lo;0;L;;;;;N;;;;;
+13B2E;EGYPTIAN HIEROGLYPH-13B2E;Lo;0;L;;;;;N;;;;;
+13B2F;EGYPTIAN HIEROGLYPH-13B2F;Lo;0;L;;;;;N;;;;;
+13B30;EGYPTIAN HIEROGLYPH-13B30;Lo;0;L;;;;;N;;;;;
+13B31;EGYPTIAN HIEROGLYPH-13B31;Lo;0;L;;;;;N;;;;;
+13B32;EGYPTIAN HIEROGLYPH-13B32;Lo;0;L;;;;;N;;;;;
+13B33;EGYPTIAN HIEROGLYPH-13B33;Lo;0;L;;;;;N;;;;;
+13B34;EGYPTIAN HIEROGLYPH-13B34;Lo;0;L;;;;;N;;;;;
+13B35;EGYPTIAN HIEROGLYPH-13B35;Lo;0;L;;;;;N;;;;;
+13B36;EGYPTIAN HIEROGLYPH-13B36;Lo;0;L;;;;;N;;;;;
+13B37;EGYPTIAN HIEROGLYPH-13B37;Lo;0;L;;;;;N;;;;;
+13B38;EGYPTIAN HIEROGLYPH-13B38;Lo;0;L;;;;;N;;;;;
+13B39;EGYPTIAN HIEROGLYPH-13B39;Lo;0;L;;;;;N;;;;;
+13B3A;EGYPTIAN HIEROGLYPH-13B3A;Lo;0;L;;;;;N;;;;;
+13B3B;EGYPTIAN HIEROGLYPH-13B3B;Lo;0;L;;;;;N;;;;;
+13B3C;EGYPTIAN HIEROGLYPH-13B3C;Lo;0;L;;;;;N;;;;;
+13B3D;EGYPTIAN HIEROGLYPH-13B3D;Lo;0;L;;;;;N;;;;;
+13B3E;EGYPTIAN HIEROGLYPH-13B3E;Lo;0;L;;;;;N;;;;;
+13B3F;EGYPTIAN HIEROGLYPH-13B3F;Lo;0;L;;;;;N;;;;;
+13B40;EGYPTIAN HIEROGLYPH-13B40;Lo;0;L;;;;;N;;;;;
+13B41;EGYPTIAN HIEROGLYPH-13B41;Lo;0;L;;;;;N;;;;;
+13B42;EGYPTIAN HIEROGLYPH-13B42;Lo;0;L;;;;;N;;;;;
+13B43;EGYPTIAN HIEROGLYPH-13B43;Lo;0;L;;;;;N;;;;;
+13B44;EGYPTIAN HIEROGLYPH-13B44;Lo;0;L;;;;;N;;;;;
+13B45;EGYPTIAN HIEROGLYPH-13B45;Lo;0;L;;;;;N;;;;;
+13B46;EGYPTIAN HIEROGLYPH-13B46;Lo;0;L;;;;;N;;;;;
+13B47;EGYPTIAN HIEROGLYPH-13B47;Lo;0;L;;;;;N;;;;;
+13B48;EGYPTIAN HIEROGLYPH-13B48;Lo;0;L;;;;;N;;;;;
+13B49;EGYPTIAN HIEROGLYPH-13B49;Lo;0;L;;;;;N;;;;;
+13B4A;EGYPTIAN HIEROGLYPH-13B4A;Lo;0;L;;;;;N;;;;;
+13B4B;EGYPTIAN HIEROGLYPH-13B4B;Lo;0;L;;;;;N;;;;;
+13B4C;EGYPTIAN HIEROGLYPH-13B4C;Lo;0;L;;;;;N;;;;;
+13B4D;EGYPTIAN HIEROGLYPH-13B4D;Lo;0;L;;;;;N;;;;;
+13B4E;EGYPTIAN HIEROGLYPH-13B4E;Lo;0;L;;;;;N;;;;;
+13B4F;EGYPTIAN HIEROGLYPH-13B4F;Lo;0;L;;;;;N;;;;;
+13B50;EGYPTIAN HIEROGLYPH-13B50;Lo;0;L;;;;;N;;;;;
+13B51;EGYPTIAN HIEROGLYPH-13B51;Lo;0;L;;;;;N;;;;;
+13B52;EGYPTIAN HIEROGLYPH-13B52;Lo;0;L;;;;;N;;;;;
+13B53;EGYPTIAN HIEROGLYPH-13B53;Lo;0;L;;;;;N;;;;;
+13B54;EGYPTIAN HIEROGLYPH-13B54;Lo;0;L;;;;;N;;;;;
+13B55;EGYPTIAN HIEROGLYPH-13B55;Lo;0;L;;;;;N;;;;;
+13B56;EGYPTIAN HIEROGLYPH-13B56;Lo;0;L;;;;;N;;;;;
+13B57;EGYPTIAN HIEROGLYPH-13B57;Lo;0;L;;;;;N;;;;;
+13B58;EGYPTIAN HIEROGLYPH-13B58;Lo;0;L;;;;;N;;;;;
+13B59;EGYPTIAN HIEROGLYPH-13B59;Lo;0;L;;;;;N;;;;;
+13B5A;EGYPTIAN HIEROGLYPH-13B5A;Lo;0;L;;;;;N;;;;;
+13B5B;EGYPTIAN HIEROGLYPH-13B5B;Lo;0;L;;;;;N;;;;;
+13B5C;EGYPTIAN HIEROGLYPH-13B5C;Lo;0;L;;;;;N;;;;;
+13B5D;EGYPTIAN HIEROGLYPH-13B5D;Lo;0;L;;;;;N;;;;;
+13B5E;EGYPTIAN HIEROGLYPH-13B5E;Lo;0;L;;;;;N;;;;;
+13B5F;EGYPTIAN HIEROGLYPH-13B5F;Lo;0;L;;;;;N;;;;;
+13B60;EGYPTIAN HIEROGLYPH-13B60;Lo;0;L;;;;;N;;;;;
+13B61;EGYPTIAN HIEROGLYPH-13B61;Lo;0;L;;;;;N;;;;;
+13B62;EGYPTIAN HIEROGLYPH-13B62;Lo;0;L;;;;;N;;;;;
+13B63;EGYPTIAN HIEROGLYPH-13B63;Lo;0;L;;;;;N;;;;;
+13B64;EGYPTIAN HIEROGLYPH-13B64;Lo;0;L;;;;;N;;;;;
+13B65;EGYPTIAN HIEROGLYPH-13B65;Lo;0;L;;;;;N;;;;;
+13B66;EGYPTIAN HIEROGLYPH-13B66;Lo;0;L;;;;;N;;;;;
+13B67;EGYPTIAN HIEROGLYPH-13B67;Lo;0;L;;;;;N;;;;;
+13B68;EGYPTIAN HIEROGLYPH-13B68;Lo;0;L;;;;;N;;;;;
+13B69;EGYPTIAN HIEROGLYPH-13B69;Lo;0;L;;;;;N;;;;;
+13B6A;EGYPTIAN HIEROGLYPH-13B6A;Lo;0;L;;;;;N;;;;;
+13B6B;EGYPTIAN HIEROGLYPH-13B6B;Lo;0;L;;;;;N;;;;;
+13B6C;EGYPTIAN HIEROGLYPH-13B6C;Lo;0;L;;;;;N;;;;;
+13B6D;EGYPTIAN HIEROGLYPH-13B6D;Lo;0;L;;;;;N;;;;;
+13B6E;EGYPTIAN HIEROGLYPH-13B6E;Lo;0;L;;;;;N;;;;;
+13B6F;EGYPTIAN HIEROGLYPH-13B6F;Lo;0;L;;;;;N;;;;;
+13B70;EGYPTIAN HIEROGLYPH-13B70;Lo;0;L;;;;;N;;;;;
+13B71;EGYPTIAN HIEROGLYPH-13B71;Lo;0;L;;;;;N;;;;;
+13B72;EGYPTIAN HIEROGLYPH-13B72;Lo;0;L;;;;;N;;;;;
+13B73;EGYPTIAN HIEROGLYPH-13B73;Lo;0;L;;;;;N;;;;;
+13B74;EGYPTIAN HIEROGLYPH-13B74;Lo;0;L;;;;;N;;;;;
+13B75;EGYPTIAN HIEROGLYPH-13B75;Lo;0;L;;;;;N;;;;;
+13B76;EGYPTIAN HIEROGLYPH-13B76;Lo;0;L;;;;;N;;;;;
+13B77;EGYPTIAN HIEROGLYPH-13B77;Lo;0;L;;;;;N;;;;;
+13B78;EGYPTIAN HIEROGLYPH-13B78;Lo;0;L;;;;;N;;;;;
+13B79;EGYPTIAN HIEROGLYPH-13B79;Lo;0;L;;;;;N;;;;;
+13B7A;EGYPTIAN HIEROGLYPH-13B7A;Lo;0;L;;;;;N;;;;;
+13B7B;EGYPTIAN HIEROGLYPH-13B7B;Lo;0;L;;;;;N;;;;;
+13B7C;EGYPTIAN HIEROGLYPH-13B7C;Lo;0;L;;;;;N;;;;;
+13B7D;EGYPTIAN HIEROGLYPH-13B7D;Lo;0;L;;;;;N;;;;;
+13B7E;EGYPTIAN HIEROGLYPH-13B7E;Lo;0;L;;;;;N;;;;;
+13B7F;EGYPTIAN HIEROGLYPH-13B7F;Lo;0;L;;;;;N;;;;;
+13B80;EGYPTIAN HIEROGLYPH-13B80;Lo;0;L;;;;;N;;;;;
+13B81;EGYPTIAN HIEROGLYPH-13B81;Lo;0;L;;;;;N;;;;;
+13B82;EGYPTIAN HIEROGLYPH-13B82;Lo;0;L;;;;;N;;;;;
+13B83;EGYPTIAN HIEROGLYPH-13B83;Lo;0;L;;;;;N;;;;;
+13B84;EGYPTIAN HIEROGLYPH-13B84;Lo;0;L;;;;;N;;;;;
+13B85;EGYPTIAN HIEROGLYPH-13B85;Lo;0;L;;;;;N;;;;;
+13B86;EGYPTIAN HIEROGLYPH-13B86;Lo;0;L;;;;;N;;;;;
+13B87;EGYPTIAN HIEROGLYPH-13B87;Lo;0;L;;;;;N;;;;;
+13B88;EGYPTIAN HIEROGLYPH-13B88;Lo;0;L;;;;;N;;;;;
+13B89;EGYPTIAN HIEROGLYPH-13B89;Lo;0;L;;;;;N;;;;;
+13B8A;EGYPTIAN HIEROGLYPH-13B8A;Lo;0;L;;;;;N;;;;;
+13B8B;EGYPTIAN HIEROGLYPH-13B8B;Lo;0;L;;;;;N;;;;;
+13B8C;EGYPTIAN HIEROGLYPH-13B8C;Lo;0;L;;;;;N;;;;;
+13B8D;EGYPTIAN HIEROGLYPH-13B8D;Lo;0;L;;;;;N;;;;;
+13B8E;EGYPTIAN HIEROGLYPH-13B8E;Lo;0;L;;;;;N;;;;;
+13B8F;EGYPTIAN HIEROGLYPH-13B8F;Lo;0;L;;;;;N;;;;;
+13B90;EGYPTIAN HIEROGLYPH-13B90;Lo;0;L;;;;;N;;;;;
+13B91;EGYPTIAN HIEROGLYPH-13B91;Lo;0;L;;;;;N;;;;;
+13B92;EGYPTIAN HIEROGLYPH-13B92;Lo;0;L;;;;;N;;;;;
+13B93;EGYPTIAN HIEROGLYPH-13B93;Lo;0;L;;;;;N;;;;;
+13B94;EGYPTIAN HIEROGLYPH-13B94;Lo;0;L;;;;;N;;;;;
+13B95;EGYPTIAN HIEROGLYPH-13B95;Lo;0;L;;;;;N;;;;;
+13B96;EGYPTIAN HIEROGLYPH-13B96;Lo;0;L;;;;;N;;;;;
+13B97;EGYPTIAN HIEROGLYPH-13B97;Lo;0;L;;;;;N;;;;;
+13B98;EGYPTIAN HIEROGLYPH-13B98;Lo;0;L;;;;;N;;;;;
+13B99;EGYPTIAN HIEROGLYPH-13B99;Lo;0;L;;;;;N;;;;;
+13B9A;EGYPTIAN HIEROGLYPH-13B9A;Lo;0;L;;;;;N;;;;;
+13B9B;EGYPTIAN HIEROGLYPH-13B9B;Lo;0;L;;;;;N;;;;;
+13B9C;EGYPTIAN HIEROGLYPH-13B9C;Lo;0;L;;;;;N;;;;;
+13B9D;EGYPTIAN HIEROGLYPH-13B9D;Lo;0;L;;;;;N;;;;;
+13B9E;EGYPTIAN HIEROGLYPH-13B9E;Lo;0;L;;;;;N;;;;;
+13B9F;EGYPTIAN HIEROGLYPH-13B9F;Lo;0;L;;;;;N;;;;;
+13BA0;EGYPTIAN HIEROGLYPH-13BA0;Lo;0;L;;;;;N;;;;;
+13BA1;EGYPTIAN HIEROGLYPH-13BA1;Lo;0;L;;;;;N;;;;;
+13BA2;EGYPTIAN HIEROGLYPH-13BA2;Lo;0;L;;;;;N;;;;;
+13BA3;EGYPTIAN HIEROGLYPH-13BA3;Lo;0;L;;;;;N;;;;;
+13BA4;EGYPTIAN HIEROGLYPH-13BA4;Lo;0;L;;;;;N;;;;;
+13BA5;EGYPTIAN HIEROGLYPH-13BA5;Lo;0;L;;;;;N;;;;;
+13BA6;EGYPTIAN HIEROGLYPH-13BA6;Lo;0;L;;;;;N;;;;;
+13BA7;EGYPTIAN HIEROGLYPH-13BA7;Lo;0;L;;;;;N;;;;;
+13BA8;EGYPTIAN HIEROGLYPH-13BA8;Lo;0;L;;;;;N;;;;;
+13BA9;EGYPTIAN HIEROGLYPH-13BA9;Lo;0;L;;;;;N;;;;;
+13BAA;EGYPTIAN HIEROGLYPH-13BAA;Lo;0;L;;;;;N;;;;;
+13BAB;EGYPTIAN HIEROGLYPH-13BAB;Lo;0;L;;;;;N;;;;;
+13BAC;EGYPTIAN HIEROGLYPH-13BAC;Lo;0;L;;;;;N;;;;;
+13BAD;EGYPTIAN HIEROGLYPH-13BAD;Lo;0;L;;;;;N;;;;;
+13BAE;EGYPTIAN HIEROGLYPH-13BAE;Lo;0;L;;;;;N;;;;;
+13BAF;EGYPTIAN HIEROGLYPH-13BAF;Lo;0;L;;;;;N;;;;;
+13BB0;EGYPTIAN HIEROGLYPH-13BB0;Lo;0;L;;;;;N;;;;;
+13BB1;EGYPTIAN HIEROGLYPH-13BB1;Lo;0;L;;;;;N;;;;;
+13BB2;EGYPTIAN HIEROGLYPH-13BB2;Lo;0;L;;;;;N;;;;;
+13BB3;EGYPTIAN HIEROGLYPH-13BB3;Lo;0;L;;;;;N;;;;;
+13BB4;EGYPTIAN HIEROGLYPH-13BB4;Lo;0;L;;;;;N;;;;;
+13BB5;EGYPTIAN HIEROGLYPH-13BB5;Lo;0;L;;;;;N;;;;;
+13BB6;EGYPTIAN HIEROGLYPH-13BB6;Lo;0;L;;;;;N;;;;;
+13BB7;EGYPTIAN HIEROGLYPH-13BB7;Lo;0;L;;;;;N;;;;;
+13BB8;EGYPTIAN HIEROGLYPH-13BB8;Lo;0;L;;;;;N;;;;;
+13BB9;EGYPTIAN HIEROGLYPH-13BB9;Lo;0;L;;;;;N;;;;;
+13BBA;EGYPTIAN HIEROGLYPH-13BBA;Lo;0;L;;;;;N;;;;;
+13BBB;EGYPTIAN HIEROGLYPH-13BBB;Lo;0;L;;;;;N;;;;;
+13BBC;EGYPTIAN HIEROGLYPH-13BBC;Lo;0;L;;;;;N;;;;;
+13BBD;EGYPTIAN HIEROGLYPH-13BBD;Lo;0;L;;;;;N;;;;;
+13BBE;EGYPTIAN HIEROGLYPH-13BBE;Lo;0;L;;;;;N;;;;;
+13BBF;EGYPTIAN HIEROGLYPH-13BBF;Lo;0;L;;;;;N;;;;;
+13BC0;EGYPTIAN HIEROGLYPH-13BC0;Lo;0;L;;;;;N;;;;;
+13BC1;EGYPTIAN HIEROGLYPH-13BC1;Lo;0;L;;;;;N;;;;;
+13BC2;EGYPTIAN HIEROGLYPH-13BC2;Lo;0;L;;;;;N;;;;;
+13BC3;EGYPTIAN HIEROGLYPH-13BC3;Lo;0;L;;;;;N;;;;;
+13BC4;EGYPTIAN HIEROGLYPH-13BC4;Lo;0;L;;;;;N;;;;;
+13BC5;EGYPTIAN HIEROGLYPH-13BC5;Lo;0;L;;;;;N;;;;;
+13BC6;EGYPTIAN HIEROGLYPH-13BC6;Lo;0;L;;;;;N;;;;;
+13BC7;EGYPTIAN HIEROGLYPH-13BC7;Lo;0;L;;;;;N;;;;;
+13BC8;EGYPTIAN HIEROGLYPH-13BC8;Lo;0;L;;;;;N;;;;;
+13BC9;EGYPTIAN HIEROGLYPH-13BC9;Lo;0;L;;;;;N;;;;;
+13BCA;EGYPTIAN HIEROGLYPH-13BCA;Lo;0;L;;;;;N;;;;;
+13BCB;EGYPTIAN HIEROGLYPH-13BCB;Lo;0;L;;;;;N;;;;;
+13BCC;EGYPTIAN HIEROGLYPH-13BCC;Lo;0;L;;;;;N;;;;;
+13BCD;EGYPTIAN HIEROGLYPH-13BCD;Lo;0;L;;;;;N;;;;;
+13BCE;EGYPTIAN HIEROGLYPH-13BCE;Lo;0;L;;;;;N;;;;;
+13BCF;EGYPTIAN HIEROGLYPH-13BCF;Lo;0;L;;;;;N;;;;;
+13BD0;EGYPTIAN HIEROGLYPH-13BD0;Lo;0;L;;;;;N;;;;;
+13BD1;EGYPTIAN HIEROGLYPH-13BD1;Lo;0;L;;;;;N;;;;;
+13BD2;EGYPTIAN HIEROGLYPH-13BD2;Lo;0;L;;;;;N;;;;;
+13BD3;EGYPTIAN HIEROGLYPH-13BD3;Lo;0;L;;;;;N;;;;;
+13BD4;EGYPTIAN HIEROGLYPH-13BD4;Lo;0;L;;;;;N;;;;;
+13BD5;EGYPTIAN HIEROGLYPH-13BD5;Lo;0;L;;;;;N;;;;;
+13BD6;EGYPTIAN HIEROGLYPH-13BD6;Lo;0;L;;;;;N;;;;;
+13BD7;EGYPTIAN HIEROGLYPH-13BD7;Lo;0;L;;;;;N;;;;;
+13BD8;EGYPTIAN HIEROGLYPH-13BD8;Lo;0;L;;;;;N;;;;;
+13BD9;EGYPTIAN HIEROGLYPH-13BD9;Lo;0;L;;;;;N;;;;;
+13BDA;EGYPTIAN HIEROGLYPH-13BDA;Lo;0;L;;;;;N;;;;;
+13BDB;EGYPTIAN HIEROGLYPH-13BDB;Lo;0;L;;;;;N;;;;;
+13BDC;EGYPTIAN HIEROGLYPH-13BDC;Lo;0;L;;;;;N;;;;;
+13BDD;EGYPTIAN HIEROGLYPH-13BDD;Lo;0;L;;;;;N;;;;;
+13BDE;EGYPTIAN HIEROGLYPH-13BDE;Lo;0;L;;;;;N;;;;;
+13BDF;EGYPTIAN HIEROGLYPH-13BDF;Lo;0;L;;;;;N;;;;;
+13BE0;EGYPTIAN HIEROGLYPH-13BE0;Lo;0;L;;;;;N;;;;;
+13BE1;EGYPTIAN HIEROGLYPH-13BE1;Lo;0;L;;;;;N;;;;;
+13BE2;EGYPTIAN HIEROGLYPH-13BE2;Lo;0;L;;;;;N;;;;;
+13BE3;EGYPTIAN HIEROGLYPH-13BE3;Lo;0;L;;;;;N;;;;;
+13BE4;EGYPTIAN HIEROGLYPH-13BE4;Lo;0;L;;;;;N;;;;;
+13BE5;EGYPTIAN HIEROGLYPH-13BE5;Lo;0;L;;;;;N;;;;;
+13BE6;EGYPTIAN HIEROGLYPH-13BE6;Lo;0;L;;;;;N;;;;;
+13BE7;EGYPTIAN HIEROGLYPH-13BE7;Lo;0;L;;;;;N;;;;;
+13BE8;EGYPTIAN HIEROGLYPH-13BE8;Lo;0;L;;;;;N;;;;;
+13BE9;EGYPTIAN HIEROGLYPH-13BE9;Lo;0;L;;;;;N;;;;;
+13BEA;EGYPTIAN HIEROGLYPH-13BEA;Lo;0;L;;;;;N;;;;;
+13BEB;EGYPTIAN HIEROGLYPH-13BEB;Lo;0;L;;;;;N;;;;;
+13BEC;EGYPTIAN HIEROGLYPH-13BEC;Lo;0;L;;;;;N;;;;;
+13BED;EGYPTIAN HIEROGLYPH-13BED;Lo;0;L;;;;;N;;;;;
+13BEE;EGYPTIAN HIEROGLYPH-13BEE;Lo;0;L;;;;;N;;;;;
+13BEF;EGYPTIAN HIEROGLYPH-13BEF;Lo;0;L;;;;;N;;;;;
+13BF0;EGYPTIAN HIEROGLYPH-13BF0;Lo;0;L;;;;;N;;;;;
+13BF1;EGYPTIAN HIEROGLYPH-13BF1;Lo;0;L;;;;;N;;;;;
+13BF2;EGYPTIAN HIEROGLYPH-13BF2;Lo;0;L;;;;;N;;;;;
+13BF3;EGYPTIAN HIEROGLYPH-13BF3;Lo;0;L;;;;;N;;;;;
+13BF4;EGYPTIAN HIEROGLYPH-13BF4;Lo;0;L;;;;;N;;;;;
+13BF5;EGYPTIAN HIEROGLYPH-13BF5;Lo;0;L;;;;;N;;;;;
+13BF6;EGYPTIAN HIEROGLYPH-13BF6;Lo;0;L;;;;;N;;;;;
+13BF7;EGYPTIAN HIEROGLYPH-13BF7;Lo;0;L;;;;;N;;;;;
+13BF8;EGYPTIAN HIEROGLYPH-13BF8;Lo;0;L;;;;;N;;;;;
+13BF9;EGYPTIAN HIEROGLYPH-13BF9;Lo;0;L;;;;;N;;;;;
+13BFA;EGYPTIAN HIEROGLYPH-13BFA;Lo;0;L;;;;;N;;;;;
+13BFB;EGYPTIAN HIEROGLYPH-13BFB;Lo;0;L;;;;;N;;;;;
+13BFC;EGYPTIAN HIEROGLYPH-13BFC;Lo;0;L;;;;;N;;;;;
+13BFD;EGYPTIAN HIEROGLYPH-13BFD;Lo;0;L;;;;;N;;;;;
+13BFE;EGYPTIAN HIEROGLYPH-13BFE;Lo;0;L;;;;;N;;;;;
+13BFF;EGYPTIAN HIEROGLYPH-13BFF;Lo;0;L;;;;;N;;;;;
+13C00;EGYPTIAN HIEROGLYPH-13C00;Lo;0;L;;;;;N;;;;;
+13C01;EGYPTIAN HIEROGLYPH-13C01;Lo;0;L;;;;;N;;;;;
+13C02;EGYPTIAN HIEROGLYPH-13C02;Lo;0;L;;;;;N;;;;;
+13C03;EGYPTIAN HIEROGLYPH-13C03;Lo;0;L;;;;;N;;;;;
+13C04;EGYPTIAN HIEROGLYPH-13C04;Lo;0;L;;;;;N;;;;;
+13C05;EGYPTIAN HIEROGLYPH-13C05;Lo;0;L;;;;;N;;;;;
+13C06;EGYPTIAN HIEROGLYPH-13C06;Lo;0;L;;;;;N;;;;;
+13C07;EGYPTIAN HIEROGLYPH-13C07;Lo;0;L;;;;;N;;;;;
+13C08;EGYPTIAN HIEROGLYPH-13C08;Lo;0;L;;;;;N;;;;;
+13C09;EGYPTIAN HIEROGLYPH-13C09;Lo;0;L;;;;;N;;;;;
+13C0A;EGYPTIAN HIEROGLYPH-13C0A;Lo;0;L;;;;;N;;;;;
+13C0B;EGYPTIAN HIEROGLYPH-13C0B;Lo;0;L;;;;;N;;;;;
+13C0C;EGYPTIAN HIEROGLYPH-13C0C;Lo;0;L;;;;;N;;;;;
+13C0D;EGYPTIAN HIEROGLYPH-13C0D;Lo;0;L;;;;;N;;;;;
+13C0E;EGYPTIAN HIEROGLYPH-13C0E;Lo;0;L;;;;;N;;;;;
+13C0F;EGYPTIAN HIEROGLYPH-13C0F;Lo;0;L;;;;;N;;;;;
+13C10;EGYPTIAN HIEROGLYPH-13C10;Lo;0;L;;;;;N;;;;;
+13C11;EGYPTIAN HIEROGLYPH-13C11;Lo;0;L;;;;;N;;;;;
+13C12;EGYPTIAN HIEROGLYPH-13C12;Lo;0;L;;;;;N;;;;;
+13C13;EGYPTIAN HIEROGLYPH-13C13;Lo;0;L;;;;;N;;;;;
+13C14;EGYPTIAN HIEROGLYPH-13C14;Lo;0;L;;;;;N;;;;;
+13C15;EGYPTIAN HIEROGLYPH-13C15;Lo;0;L;;;;;N;;;;;
+13C16;EGYPTIAN HIEROGLYPH-13C16;Lo;0;L;;;;;N;;;;;
+13C17;EGYPTIAN HIEROGLYPH-13C17;Lo;0;L;;;;;N;;;;;
+13C18;EGYPTIAN HIEROGLYPH-13C18;Lo;0;L;;;;;N;;;;;
+13C19;EGYPTIAN HIEROGLYPH-13C19;Lo;0;L;;;;;N;;;;;
+13C1A;EGYPTIAN HIEROGLYPH-13C1A;Lo;0;L;;;;;N;;;;;
+13C1B;EGYPTIAN HIEROGLYPH-13C1B;Lo;0;L;;;;;N;;;;;
+13C1C;EGYPTIAN HIEROGLYPH-13C1C;Lo;0;L;;;;;N;;;;;
+13C1D;EGYPTIAN HIEROGLYPH-13C1D;Lo;0;L;;;;;N;;;;;
+13C1E;EGYPTIAN HIEROGLYPH-13C1E;Lo;0;L;;;;;N;;;;;
+13C1F;EGYPTIAN HIEROGLYPH-13C1F;Lo;0;L;;;;;N;;;;;
+13C20;EGYPTIAN HIEROGLYPH-13C20;Lo;0;L;;;;;N;;;;;
+13C21;EGYPTIAN HIEROGLYPH-13C21;Lo;0;L;;;;;N;;;;;
+13C22;EGYPTIAN HIEROGLYPH-13C22;Lo;0;L;;;;;N;;;;;
+13C23;EGYPTIAN HIEROGLYPH-13C23;Lo;0;L;;;;;N;;;;;
+13C24;EGYPTIAN HIEROGLYPH-13C24;Lo;0;L;;;;;N;;;;;
+13C25;EGYPTIAN HIEROGLYPH-13C25;Lo;0;L;;;;;N;;;;;
+13C26;EGYPTIAN HIEROGLYPH-13C26;Lo;0;L;;;;;N;;;;;
+13C27;EGYPTIAN HIEROGLYPH-13C27;Lo;0;L;;;;;N;;;;;
+13C28;EGYPTIAN HIEROGLYPH-13C28;Lo;0;L;;;;;N;;;;;
+13C29;EGYPTIAN HIEROGLYPH-13C29;Lo;0;L;;;;;N;;;;;
+13C2A;EGYPTIAN HIEROGLYPH-13C2A;Lo;0;L;;;;;N;;;;;
+13C2B;EGYPTIAN HIEROGLYPH-13C2B;Lo;0;L;;;;;N;;;;;
+13C2C;EGYPTIAN HIEROGLYPH-13C2C;Lo;0;L;;;;;N;;;;;
+13C2D;EGYPTIAN HIEROGLYPH-13C2D;Lo;0;L;;;;;N;;;;;
+13C2E;EGYPTIAN HIEROGLYPH-13C2E;Lo;0;L;;;;;N;;;;;
+13C2F;EGYPTIAN HIEROGLYPH-13C2F;Lo;0;L;;;;;N;;;;;
+13C30;EGYPTIAN HIEROGLYPH-13C30;Lo;0;L;;;;;N;;;;;
+13C31;EGYPTIAN HIEROGLYPH-13C31;Lo;0;L;;;;;N;;;;;
+13C32;EGYPTIAN HIEROGLYPH-13C32;Lo;0;L;;;;;N;;;;;
+13C33;EGYPTIAN HIEROGLYPH-13C33;Lo;0;L;;;;;N;;;;;
+13C34;EGYPTIAN HIEROGLYPH-13C34;Lo;0;L;;;;;N;;;;;
+13C35;EGYPTIAN HIEROGLYPH-13C35;Lo;0;L;;;;;N;;;;;
+13C36;EGYPTIAN HIEROGLYPH-13C36;Lo;0;L;;;;;N;;;;;
+13C37;EGYPTIAN HIEROGLYPH-13C37;Lo;0;L;;;;;N;;;;;
+13C38;EGYPTIAN HIEROGLYPH-13C38;Lo;0;L;;;;;N;;;;;
+13C39;EGYPTIAN HIEROGLYPH-13C39;Lo;0;L;;;;;N;;;;;
+13C3A;EGYPTIAN HIEROGLYPH-13C3A;Lo;0;L;;;;;N;;;;;
+13C3B;EGYPTIAN HIEROGLYPH-13C3B;Lo;0;L;;;;;N;;;;;
+13C3C;EGYPTIAN HIEROGLYPH-13C3C;Lo;0;L;;;;;N;;;;;
+13C3D;EGYPTIAN HIEROGLYPH-13C3D;Lo;0;L;;;;;N;;;;;
+13C3E;EGYPTIAN HIEROGLYPH-13C3E;Lo;0;L;;;;;N;;;;;
+13C3F;EGYPTIAN HIEROGLYPH-13C3F;Lo;0;L;;;;;N;;;;;
+13C40;EGYPTIAN HIEROGLYPH-13C40;Lo;0;L;;;;;N;;;;;
+13C41;EGYPTIAN HIEROGLYPH-13C41;Lo;0;L;;;;;N;;;;;
+13C42;EGYPTIAN HIEROGLYPH-13C42;Lo;0;L;;;;;N;;;;;
+13C43;EGYPTIAN HIEROGLYPH-13C43;Lo;0;L;;;;;N;;;;;
+13C44;EGYPTIAN HIEROGLYPH-13C44;Lo;0;L;;;;;N;;;;;
+13C45;EGYPTIAN HIEROGLYPH-13C45;Lo;0;L;;;;;N;;;;;
+13C46;EGYPTIAN HIEROGLYPH-13C46;Lo;0;L;;;;;N;;;;;
+13C47;EGYPTIAN HIEROGLYPH-13C47;Lo;0;L;;;;;N;;;;;
+13C48;EGYPTIAN HIEROGLYPH-13C48;Lo;0;L;;;;;N;;;;;
+13C49;EGYPTIAN HIEROGLYPH-13C49;Lo;0;L;;;;;N;;;;;
+13C4A;EGYPTIAN HIEROGLYPH-13C4A;Lo;0;L;;;;;N;;;;;
+13C4B;EGYPTIAN HIEROGLYPH-13C4B;Lo;0;L;;;;;N;;;;;
+13C4C;EGYPTIAN HIEROGLYPH-13C4C;Lo;0;L;;;;;N;;;;;
+13C4D;EGYPTIAN HIEROGLYPH-13C4D;Lo;0;L;;;;;N;;;;;
+13C4E;EGYPTIAN HIEROGLYPH-13C4E;Lo;0;L;;;;;N;;;;;
+13C4F;EGYPTIAN HIEROGLYPH-13C4F;Lo;0;L;;;;;N;;;;;
+13C50;EGYPTIAN HIEROGLYPH-13C50;Lo;0;L;;;;;N;;;;;
+13C51;EGYPTIAN HIEROGLYPH-13C51;Lo;0;L;;;;;N;;;;;
+13C52;EGYPTIAN HIEROGLYPH-13C52;Lo;0;L;;;;;N;;;;;
+13C53;EGYPTIAN HIEROGLYPH-13C53;Lo;0;L;;;;;N;;;;;
+13C54;EGYPTIAN HIEROGLYPH-13C54;Lo;0;L;;;;;N;;;;;
+13C55;EGYPTIAN HIEROGLYPH-13C55;Lo;0;L;;;;;N;;;;;
+13C56;EGYPTIAN HIEROGLYPH-13C56;Lo;0;L;;;;;N;;;;;
+13C57;EGYPTIAN HIEROGLYPH-13C57;Lo;0;L;;;;;N;;;;;
+13C58;EGYPTIAN HIEROGLYPH-13C58;Lo;0;L;;;;;N;;;;;
+13C59;EGYPTIAN HIEROGLYPH-13C59;Lo;0;L;;;;;N;;;;;
+13C5A;EGYPTIAN HIEROGLYPH-13C5A;Lo;0;L;;;;;N;;;;;
+13C5B;EGYPTIAN HIEROGLYPH-13C5B;Lo;0;L;;;;;N;;;;;
+13C5C;EGYPTIAN HIEROGLYPH-13C5C;Lo;0;L;;;;;N;;;;;
+13C5D;EGYPTIAN HIEROGLYPH-13C5D;Lo;0;L;;;;;N;;;;;
+13C5E;EGYPTIAN HIEROGLYPH-13C5E;Lo;0;L;;;;;N;;;;;
+13C5F;EGYPTIAN HIEROGLYPH-13C5F;Lo;0;L;;;;;N;;;;;
+13C60;EGYPTIAN HIEROGLYPH-13C60;Lo;0;L;;;;;N;;;;;
+13C61;EGYPTIAN HIEROGLYPH-13C61;Lo;0;L;;;;;N;;;;;
+13C62;EGYPTIAN HIEROGLYPH-13C62;Lo;0;L;;;;;N;;;;;
+13C63;EGYPTIAN HIEROGLYPH-13C63;Lo;0;L;;;;;N;;;;;
+13C64;EGYPTIAN HIEROGLYPH-13C64;Lo;0;L;;;;;N;;;;;
+13C65;EGYPTIAN HIEROGLYPH-13C65;Lo;0;L;;;;;N;;;;;
+13C66;EGYPTIAN HIEROGLYPH-13C66;Lo;0;L;;;;;N;;;;;
+13C67;EGYPTIAN HIEROGLYPH-13C67;Lo;0;L;;;;;N;;;;;
+13C68;EGYPTIAN HIEROGLYPH-13C68;Lo;0;L;;;;;N;;;;;
+13C69;EGYPTIAN HIEROGLYPH-13C69;Lo;0;L;;;;;N;;;;;
+13C6A;EGYPTIAN HIEROGLYPH-13C6A;Lo;0;L;;;;;N;;;;;
+13C6B;EGYPTIAN HIEROGLYPH-13C6B;Lo;0;L;;;;;N;;;;;
+13C6C;EGYPTIAN HIEROGLYPH-13C6C;Lo;0;L;;;;;N;;;;;
+13C6D;EGYPTIAN HIEROGLYPH-13C6D;Lo;0;L;;;;;N;;;;;
+13C6E;EGYPTIAN HIEROGLYPH-13C6E;Lo;0;L;;;;;N;;;;;
+13C6F;EGYPTIAN HIEROGLYPH-13C6F;Lo;0;L;;;;;N;;;;;
+13C70;EGYPTIAN HIEROGLYPH-13C70;Lo;0;L;;;;;N;;;;;
+13C71;EGYPTIAN HIEROGLYPH-13C71;Lo;0;L;;;;;N;;;;;
+13C72;EGYPTIAN HIEROGLYPH-13C72;Lo;0;L;;;;;N;;;;;
+13C73;EGYPTIAN HIEROGLYPH-13C73;Lo;0;L;;;;;N;;;;;
+13C74;EGYPTIAN HIEROGLYPH-13C74;Lo;0;L;;;;;N;;;;;
+13C75;EGYPTIAN HIEROGLYPH-13C75;Lo;0;L;;;;;N;;;;;
+13C76;EGYPTIAN HIEROGLYPH-13C76;Lo;0;L;;;;;N;;;;;
+13C77;EGYPTIAN HIEROGLYPH-13C77;Lo;0;L;;;;;N;;;;;
+13C78;EGYPTIAN HIEROGLYPH-13C78;Lo;0;L;;;;;N;;;;;
+13C79;EGYPTIAN HIEROGLYPH-13C79;Lo;0;L;;;;;N;;;;;
+13C7A;EGYPTIAN HIEROGLYPH-13C7A;Lo;0;L;;;;;N;;;;;
+13C7B;EGYPTIAN HIEROGLYPH-13C7B;Lo;0;L;;;;;N;;;;;
+13C7C;EGYPTIAN HIEROGLYPH-13C7C;Lo;0;L;;;;;N;;;;;
+13C7D;EGYPTIAN HIEROGLYPH-13C7D;Lo;0;L;;;;;N;;;;;
+13C7E;EGYPTIAN HIEROGLYPH-13C7E;Lo;0;L;;;;;N;;;;;
+13C7F;EGYPTIAN HIEROGLYPH-13C7F;Lo;0;L;;;;;N;;;;;
+13C80;EGYPTIAN HIEROGLYPH-13C80;Lo;0;L;;;;;N;;;;;
+13C81;EGYPTIAN HIEROGLYPH-13C81;Lo;0;L;;;;;N;;;;;
+13C82;EGYPTIAN HIEROGLYPH-13C82;Lo;0;L;;;;;N;;;;;
+13C83;EGYPTIAN HIEROGLYPH-13C83;Lo;0;L;;;;;N;;;;;
+13C84;EGYPTIAN HIEROGLYPH-13C84;Lo;0;L;;;;;N;;;;;
+13C85;EGYPTIAN HIEROGLYPH-13C85;Lo;0;L;;;;;N;;;;;
+13C86;EGYPTIAN HIEROGLYPH-13C86;Lo;0;L;;;;;N;;;;;
+13C87;EGYPTIAN HIEROGLYPH-13C87;Lo;0;L;;;;;N;;;;;
+13C88;EGYPTIAN HIEROGLYPH-13C88;Lo;0;L;;;;;N;;;;;
+13C89;EGYPTIAN HIEROGLYPH-13C89;Lo;0;L;;;;;N;;;;;
+13C8A;EGYPTIAN HIEROGLYPH-13C8A;Lo;0;L;;;;;N;;;;;
+13C8B;EGYPTIAN HIEROGLYPH-13C8B;Lo;0;L;;;;;N;;;;;
+13C8C;EGYPTIAN HIEROGLYPH-13C8C;Lo;0;L;;;;;N;;;;;
+13C8D;EGYPTIAN HIEROGLYPH-13C8D;Lo;0;L;;;;;N;;;;;
+13C8E;EGYPTIAN HIEROGLYPH-13C8E;Lo;0;L;;;;;N;;;;;
+13C8F;EGYPTIAN HIEROGLYPH-13C8F;Lo;0;L;;;;;N;;;;;
+13C90;EGYPTIAN HIEROGLYPH-13C90;Lo;0;L;;;;;N;;;;;
+13C91;EGYPTIAN HIEROGLYPH-13C91;Lo;0;L;;;;;N;;;;;
+13C92;EGYPTIAN HIEROGLYPH-13C92;Lo;0;L;;;;;N;;;;;
+13C93;EGYPTIAN HIEROGLYPH-13C93;Lo;0;L;;;;;N;;;;;
+13C94;EGYPTIAN HIEROGLYPH-13C94;Lo;0;L;;;;;N;;;;;
+13C95;EGYPTIAN HIEROGLYPH-13C95;Lo;0;L;;;;;N;;;;;
+13C96;EGYPTIAN HIEROGLYPH-13C96;Lo;0;L;;;;;N;;;;;
+13C97;EGYPTIAN HIEROGLYPH-13C97;Lo;0;L;;;;;N;;;;;
+13C98;EGYPTIAN HIEROGLYPH-13C98;Lo;0;L;;;;;N;;;;;
+13C99;EGYPTIAN HIEROGLYPH-13C99;Lo;0;L;;;;;N;;;;;
+13C9A;EGYPTIAN HIEROGLYPH-13C9A;Lo;0;L;;;;;N;;;;;
+13C9B;EGYPTIAN HIEROGLYPH-13C9B;Lo;0;L;;;;;N;;;;;
+13C9C;EGYPTIAN HIEROGLYPH-13C9C;Lo;0;L;;;;;N;;;;;
+13C9D;EGYPTIAN HIEROGLYPH-13C9D;Lo;0;L;;;;;N;;;;;
+13C9E;EGYPTIAN HIEROGLYPH-13C9E;Lo;0;L;;;;;N;;;;;
+13C9F;EGYPTIAN HIEROGLYPH-13C9F;Lo;0;L;;;;;N;;;;;
+13CA0;EGYPTIAN HIEROGLYPH-13CA0;Lo;0;L;;;;;N;;;;;
+13CA1;EGYPTIAN HIEROGLYPH-13CA1;Lo;0;L;;;;;N;;;;;
+13CA2;EGYPTIAN HIEROGLYPH-13CA2;Lo;0;L;;;;;N;;;;;
+13CA3;EGYPTIAN HIEROGLYPH-13CA3;Lo;0;L;;;;;N;;;;;
+13CA4;EGYPTIAN HIEROGLYPH-13CA4;Lo;0;L;;;;;N;;;;;
+13CA5;EGYPTIAN HIEROGLYPH-13CA5;Lo;0;L;;;;;N;;;;;
+13CA6;EGYPTIAN HIEROGLYPH-13CA6;Lo;0;L;;;;;N;;;;;
+13CA7;EGYPTIAN HIEROGLYPH-13CA7;Lo;0;L;;;;;N;;;;;
+13CA8;EGYPTIAN HIEROGLYPH-13CA8;Lo;0;L;;;;;N;;;;;
+13CA9;EGYPTIAN HIEROGLYPH-13CA9;Lo;0;L;;;;;N;;;;;
+13CAA;EGYPTIAN HIEROGLYPH-13CAA;Lo;0;L;;;;;N;;;;;
+13CAB;EGYPTIAN HIEROGLYPH-13CAB;Lo;0;L;;;;;N;;;;;
+13CAC;EGYPTIAN HIEROGLYPH-13CAC;Lo;0;L;;;;;N;;;;;
+13CAD;EGYPTIAN HIEROGLYPH-13CAD;Lo;0;L;;;;;N;;;;;
+13CAE;EGYPTIAN HIEROGLYPH-13CAE;Lo;0;L;;;;;N;;;;;
+13CAF;EGYPTIAN HIEROGLYPH-13CAF;Lo;0;L;;;;;N;;;;;
+13CB0;EGYPTIAN HIEROGLYPH-13CB0;Lo;0;L;;;;;N;;;;;
+13CB1;EGYPTIAN HIEROGLYPH-13CB1;Lo;0;L;;;;;N;;;;;
+13CB2;EGYPTIAN HIEROGLYPH-13CB2;Lo;0;L;;;;;N;;;;;
+13CB3;EGYPTIAN HIEROGLYPH-13CB3;Lo;0;L;;;;;N;;;;;
+13CB4;EGYPTIAN HIEROGLYPH-13CB4;Lo;0;L;;;;;N;;;;;
+13CB5;EGYPTIAN HIEROGLYPH-13CB5;Lo;0;L;;;;;N;;;;;
+13CB6;EGYPTIAN HIEROGLYPH-13CB6;Lo;0;L;;;;;N;;;;;
+13CB7;EGYPTIAN HIEROGLYPH-13CB7;Lo;0;L;;;;;N;;;;;
+13CB8;EGYPTIAN HIEROGLYPH-13CB8;Lo;0;L;;;;;N;;;;;
+13CB9;EGYPTIAN HIEROGLYPH-13CB9;Lo;0;L;;;;;N;;;;;
+13CBA;EGYPTIAN HIEROGLYPH-13CBA;Lo;0;L;;;;;N;;;;;
+13CBB;EGYPTIAN HIEROGLYPH-13CBB;Lo;0;L;;;;;N;;;;;
+13CBC;EGYPTIAN HIEROGLYPH-13CBC;Lo;0;L;;;;;N;;;;;
+13CBD;EGYPTIAN HIEROGLYPH-13CBD;Lo;0;L;;;;;N;;;;;
+13CBE;EGYPTIAN HIEROGLYPH-13CBE;Lo;0;L;;;;;N;;;;;
+13CBF;EGYPTIAN HIEROGLYPH-13CBF;Lo;0;L;;;;;N;;;;;
+13CC0;EGYPTIAN HIEROGLYPH-13CC0;Lo;0;L;;;;;N;;;;;
+13CC1;EGYPTIAN HIEROGLYPH-13CC1;Lo;0;L;;;;;N;;;;;
+13CC2;EGYPTIAN HIEROGLYPH-13CC2;Lo;0;L;;;;;N;;;;;
+13CC3;EGYPTIAN HIEROGLYPH-13CC3;Lo;0;L;;;;;N;;;;;
+13CC4;EGYPTIAN HIEROGLYPH-13CC4;Lo;0;L;;;;;N;;;;;
+13CC5;EGYPTIAN HIEROGLYPH-13CC5;Lo;0;L;;;;;N;;;;;
+13CC6;EGYPTIAN HIEROGLYPH-13CC6;Lo;0;L;;;;;N;;;;;
+13CC7;EGYPTIAN HIEROGLYPH-13CC7;Lo;0;L;;;;;N;;;;;
+13CC8;EGYPTIAN HIEROGLYPH-13CC8;Lo;0;L;;;;;N;;;;;
+13CC9;EGYPTIAN HIEROGLYPH-13CC9;Lo;0;L;;;;;N;;;;;
+13CCA;EGYPTIAN HIEROGLYPH-13CCA;Lo;0;L;;;;;N;;;;;
+13CCB;EGYPTIAN HIEROGLYPH-13CCB;Lo;0;L;;;;;N;;;;;
+13CCC;EGYPTIAN HIEROGLYPH-13CCC;Lo;0;L;;;;;N;;;;;
+13CCD;EGYPTIAN HIEROGLYPH-13CCD;Lo;0;L;;;;;N;;;;;
+13CCE;EGYPTIAN HIEROGLYPH-13CCE;Lo;0;L;;;;;N;;;;;
+13CCF;EGYPTIAN HIEROGLYPH-13CCF;Lo;0;L;;;;;N;;;;;
+13CD0;EGYPTIAN HIEROGLYPH-13CD0;Lo;0;L;;;;;N;;;;;
+13CD1;EGYPTIAN HIEROGLYPH-13CD1;Lo;0;L;;;;;N;;;;;
+13CD2;EGYPTIAN HIEROGLYPH-13CD2;Lo;0;L;;;;;N;;;;;
+13CD3;EGYPTIAN HIEROGLYPH-13CD3;Lo;0;L;;;;;N;;;;;
+13CD4;EGYPTIAN HIEROGLYPH-13CD4;Lo;0;L;;;;;N;;;;;
+13CD5;EGYPTIAN HIEROGLYPH-13CD5;Lo;0;L;;;;;N;;;;;
+13CD6;EGYPTIAN HIEROGLYPH-13CD6;Lo;0;L;;;;;N;;;;;
+13CD7;EGYPTIAN HIEROGLYPH-13CD7;Lo;0;L;;;;;N;;;;;
+13CD8;EGYPTIAN HIEROGLYPH-13CD8;Lo;0;L;;;;;N;;;;;
+13CD9;EGYPTIAN HIEROGLYPH-13CD9;Lo;0;L;;;;;N;;;;;
+13CDA;EGYPTIAN HIEROGLYPH-13CDA;Lo;0;L;;;;;N;;;;;
+13CDB;EGYPTIAN HIEROGLYPH-13CDB;Lo;0;L;;;;;N;;;;;
+13CDC;EGYPTIAN HIEROGLYPH-13CDC;Lo;0;L;;;;;N;;;;;
+13CDD;EGYPTIAN HIEROGLYPH-13CDD;Lo;0;L;;;;;N;;;;;
+13CDE;EGYPTIAN HIEROGLYPH-13CDE;Lo;0;L;;;;;N;;;;;
+13CDF;EGYPTIAN HIEROGLYPH-13CDF;Lo;0;L;;;;;N;;;;;
+13CE0;EGYPTIAN HIEROGLYPH-13CE0;Lo;0;L;;;;;N;;;;;
+13CE1;EGYPTIAN HIEROGLYPH-13CE1;Lo;0;L;;;;;N;;;;;
+13CE2;EGYPTIAN HIEROGLYPH-13CE2;Lo;0;L;;;;;N;;;;;
+13CE3;EGYPTIAN HIEROGLYPH-13CE3;Lo;0;L;;;;;N;;;;;
+13CE4;EGYPTIAN HIEROGLYPH-13CE4;Lo;0;L;;;;;N;;;;;
+13CE5;EGYPTIAN HIEROGLYPH-13CE5;Lo;0;L;;;;;N;;;;;
+13CE6;EGYPTIAN HIEROGLYPH-13CE6;Lo;0;L;;;;;N;;;;;
+13CE7;EGYPTIAN HIEROGLYPH-13CE7;Lo;0;L;;;;;N;;;;;
+13CE8;EGYPTIAN HIEROGLYPH-13CE8;Lo;0;L;;;;;N;;;;;
+13CE9;EGYPTIAN HIEROGLYPH-13CE9;Lo;0;L;;;;;N;;;;;
+13CEA;EGYPTIAN HIEROGLYPH-13CEA;Lo;0;L;;;;;N;;;;;
+13CEB;EGYPTIAN HIEROGLYPH-13CEB;Lo;0;L;;;;;N;;;;;
+13CEC;EGYPTIAN HIEROGLYPH-13CEC;Lo;0;L;;;;;N;;;;;
+13CED;EGYPTIAN HIEROGLYPH-13CED;Lo;0;L;;;;;N;;;;;
+13CEE;EGYPTIAN HIEROGLYPH-13CEE;Lo;0;L;;;;;N;;;;;
+13CEF;EGYPTIAN HIEROGLYPH-13CEF;Lo;0;L;;;;;N;;;;;
+13CF0;EGYPTIAN HIEROGLYPH-13CF0;Lo;0;L;;;;;N;;;;;
+13CF1;EGYPTIAN HIEROGLYPH-13CF1;Lo;0;L;;;;;N;;;;;
+13CF2;EGYPTIAN HIEROGLYPH-13CF2;Lo;0;L;;;;;N;;;;;
+13CF3;EGYPTIAN HIEROGLYPH-13CF3;Lo;0;L;;;;;N;;;;;
+13CF4;EGYPTIAN HIEROGLYPH-13CF4;Lo;0;L;;;;;N;;;;;
+13CF5;EGYPTIAN HIEROGLYPH-13CF5;Lo;0;L;;;;;N;;;;;
+13CF6;EGYPTIAN HIEROGLYPH-13CF6;Lo;0;L;;;;;N;;;;;
+13CF7;EGYPTIAN HIEROGLYPH-13CF7;Lo;0;L;;;;;N;;;;;
+13CF8;EGYPTIAN HIEROGLYPH-13CF8;Lo;0;L;;;;;N;;;;;
+13CF9;EGYPTIAN HIEROGLYPH-13CF9;Lo;0;L;;;;;N;;;;;
+13CFA;EGYPTIAN HIEROGLYPH-13CFA;Lo;0;L;;;;;N;;;;;
+13CFB;EGYPTIAN HIEROGLYPH-13CFB;Lo;0;L;;;;;N;;;;;
+13CFC;EGYPTIAN HIEROGLYPH-13CFC;Lo;0;L;;;;;N;;;;;
+13CFD;EGYPTIAN HIEROGLYPH-13CFD;Lo;0;L;;;;;N;;;;;
+13CFE;EGYPTIAN HIEROGLYPH-13CFE;Lo;0;L;;;;;N;;;;;
+13CFF;EGYPTIAN HIEROGLYPH-13CFF;Lo;0;L;;;;;N;;;;;
+13D00;EGYPTIAN HIEROGLYPH-13D00;Lo;0;L;;;;;N;;;;;
+13D01;EGYPTIAN HIEROGLYPH-13D01;Lo;0;L;;;;;N;;;;;
+13D02;EGYPTIAN HIEROGLYPH-13D02;Lo;0;L;;;;;N;;;;;
+13D03;EGYPTIAN HIEROGLYPH-13D03;Lo;0;L;;;;;N;;;;;
+13D04;EGYPTIAN HIEROGLYPH-13D04;Lo;0;L;;;;;N;;;;;
+13D05;EGYPTIAN HIEROGLYPH-13D05;Lo;0;L;;;;;N;;;;;
+13D06;EGYPTIAN HIEROGLYPH-13D06;Lo;0;L;;;;;N;;;;;
+13D07;EGYPTIAN HIEROGLYPH-13D07;Lo;0;L;;;;;N;;;;;
+13D08;EGYPTIAN HIEROGLYPH-13D08;Lo;0;L;;;;;N;;;;;
+13D09;EGYPTIAN HIEROGLYPH-13D09;Lo;0;L;;;;;N;;;;;
+13D0A;EGYPTIAN HIEROGLYPH-13D0A;Lo;0;L;;;;;N;;;;;
+13D0B;EGYPTIAN HIEROGLYPH-13D0B;Lo;0;L;;;;;N;;;;;
+13D0C;EGYPTIAN HIEROGLYPH-13D0C;Lo;0;L;;;;;N;;;;;
+13D0D;EGYPTIAN HIEROGLYPH-13D0D;Lo;0;L;;;;;N;;;;;
+13D0E;EGYPTIAN HIEROGLYPH-13D0E;Lo;0;L;;;;;N;;;;;
+13D0F;EGYPTIAN HIEROGLYPH-13D0F;Lo;0;L;;;;;N;;;;;
+13D10;EGYPTIAN HIEROGLYPH-13D10;Lo;0;L;;;;;N;;;;;
+13D11;EGYPTIAN HIEROGLYPH-13D11;Lo;0;L;;;;;N;;;;;
+13D12;EGYPTIAN HIEROGLYPH-13D12;Lo;0;L;;;;;N;;;;;
+13D13;EGYPTIAN HIEROGLYPH-13D13;Lo;0;L;;;;;N;;;;;
+13D14;EGYPTIAN HIEROGLYPH-13D14;Lo;0;L;;;;;N;;;;;
+13D15;EGYPTIAN HIEROGLYPH-13D15;Lo;0;L;;;;;N;;;;;
+13D16;EGYPTIAN HIEROGLYPH-13D16;Lo;0;L;;;;;N;;;;;
+13D17;EGYPTIAN HIEROGLYPH-13D17;Lo;0;L;;;;;N;;;;;
+13D18;EGYPTIAN HIEROGLYPH-13D18;Lo;0;L;;;;;N;;;;;
+13D19;EGYPTIAN HIEROGLYPH-13D19;Lo;0;L;;;;;N;;;;;
+13D1A;EGYPTIAN HIEROGLYPH-13D1A;Lo;0;L;;;;;N;;;;;
+13D1B;EGYPTIAN HIEROGLYPH-13D1B;Lo;0;L;;;;;N;;;;;
+13D1C;EGYPTIAN HIEROGLYPH-13D1C;Lo;0;L;;;;;N;;;;;
+13D1D;EGYPTIAN HIEROGLYPH-13D1D;Lo;0;L;;;;;N;;;;;
+13D1E;EGYPTIAN HIEROGLYPH-13D1E;Lo;0;L;;;;;N;;;;;
+13D1F;EGYPTIAN HIEROGLYPH-13D1F;Lo;0;L;;;;;N;;;;;
+13D20;EGYPTIAN HIEROGLYPH-13D20;Lo;0;L;;;;;N;;;;;
+13D21;EGYPTIAN HIEROGLYPH-13D21;Lo;0;L;;;;;N;;;;;
+13D22;EGYPTIAN HIEROGLYPH-13D22;Lo;0;L;;;;;N;;;;;
+13D23;EGYPTIAN HIEROGLYPH-13D23;Lo;0;L;;;;;N;;;;;
+13D24;EGYPTIAN HIEROGLYPH-13D24;Lo;0;L;;;;;N;;;;;
+13D25;EGYPTIAN HIEROGLYPH-13D25;Lo;0;L;;;;;N;;;;;
+13D26;EGYPTIAN HIEROGLYPH-13D26;Lo;0;L;;;;;N;;;;;
+13D27;EGYPTIAN HIEROGLYPH-13D27;Lo;0;L;;;;;N;;;;;
+13D28;EGYPTIAN HIEROGLYPH-13D28;Lo;0;L;;;;;N;;;;;
+13D29;EGYPTIAN HIEROGLYPH-13D29;Lo;0;L;;;;;N;;;;;
+13D2A;EGYPTIAN HIEROGLYPH-13D2A;Lo;0;L;;;;;N;;;;;
+13D2B;EGYPTIAN HIEROGLYPH-13D2B;Lo;0;L;;;;;N;;;;;
+13D2C;EGYPTIAN HIEROGLYPH-13D2C;Lo;0;L;;;;;N;;;;;
+13D2D;EGYPTIAN HIEROGLYPH-13D2D;Lo;0;L;;;;;N;;;;;
+13D2E;EGYPTIAN HIEROGLYPH-13D2E;Lo;0;L;;;;;N;;;;;
+13D2F;EGYPTIAN HIEROGLYPH-13D2F;Lo;0;L;;;;;N;;;;;
+13D30;EGYPTIAN HIEROGLYPH-13D30;Lo;0;L;;;;;N;;;;;
+13D31;EGYPTIAN HIEROGLYPH-13D31;Lo;0;L;;;;;N;;;;;
+13D32;EGYPTIAN HIEROGLYPH-13D32;Lo;0;L;;;;;N;;;;;
+13D33;EGYPTIAN HIEROGLYPH-13D33;Lo;0;L;;;;;N;;;;;
+13D34;EGYPTIAN HIEROGLYPH-13D34;Lo;0;L;;;;;N;;;;;
+13D35;EGYPTIAN HIEROGLYPH-13D35;Lo;0;L;;;;;N;;;;;
+13D36;EGYPTIAN HIEROGLYPH-13D36;Lo;0;L;;;;;N;;;;;
+13D37;EGYPTIAN HIEROGLYPH-13D37;Lo;0;L;;;;;N;;;;;
+13D38;EGYPTIAN HIEROGLYPH-13D38;Lo;0;L;;;;;N;;;;;
+13D39;EGYPTIAN HIEROGLYPH-13D39;Lo;0;L;;;;;N;;;;;
+13D3A;EGYPTIAN HIEROGLYPH-13D3A;Lo;0;L;;;;;N;;;;;
+13D3B;EGYPTIAN HIEROGLYPH-13D3B;Lo;0;L;;;;;N;;;;;
+13D3C;EGYPTIAN HIEROGLYPH-13D3C;Lo;0;L;;;;;N;;;;;
+13D3D;EGYPTIAN HIEROGLYPH-13D3D;Lo;0;L;;;;;N;;;;;
+13D3E;EGYPTIAN HIEROGLYPH-13D3E;Lo;0;L;;;;;N;;;;;
+13D3F;EGYPTIAN HIEROGLYPH-13D3F;Lo;0;L;;;;;N;;;;;
+13D40;EGYPTIAN HIEROGLYPH-13D40;Lo;0;L;;;;;N;;;;;
+13D41;EGYPTIAN HIEROGLYPH-13D41;Lo;0;L;;;;;N;;;;;
+13D42;EGYPTIAN HIEROGLYPH-13D42;Lo;0;L;;;;;N;;;;;
+13D43;EGYPTIAN HIEROGLYPH-13D43;Lo;0;L;;;;;N;;;;;
+13D44;EGYPTIAN HIEROGLYPH-13D44;Lo;0;L;;;;;N;;;;;
+13D45;EGYPTIAN HIEROGLYPH-13D45;Lo;0;L;;;;;N;;;;;
+13D46;EGYPTIAN HIEROGLYPH-13D46;Lo;0;L;;;;;N;;;;;
+13D47;EGYPTIAN HIEROGLYPH-13D47;Lo;0;L;;;;;N;;;;;
+13D48;EGYPTIAN HIEROGLYPH-13D48;Lo;0;L;;;;;N;;;;;
+13D49;EGYPTIAN HIEROGLYPH-13D49;Lo;0;L;;;;;N;;;;;
+13D4A;EGYPTIAN HIEROGLYPH-13D4A;Lo;0;L;;;;;N;;;;;
+13D4B;EGYPTIAN HIEROGLYPH-13D4B;Lo;0;L;;;;;N;;;;;
+13D4C;EGYPTIAN HIEROGLYPH-13D4C;Lo;0;L;;;;;N;;;;;
+13D4D;EGYPTIAN HIEROGLYPH-13D4D;Lo;0;L;;;;;N;;;;;
+13D4E;EGYPTIAN HIEROGLYPH-13D4E;Lo;0;L;;;;;N;;;;;
+13D4F;EGYPTIAN HIEROGLYPH-13D4F;Lo;0;L;;;;;N;;;;;
+13D50;EGYPTIAN HIEROGLYPH-13D50;Lo;0;L;;;;;N;;;;;
+13D51;EGYPTIAN HIEROGLYPH-13D51;Lo;0;L;;;;;N;;;;;
+13D52;EGYPTIAN HIEROGLYPH-13D52;Lo;0;L;;;;;N;;;;;
+13D53;EGYPTIAN HIEROGLYPH-13D53;Lo;0;L;;;;;N;;;;;
+13D54;EGYPTIAN HIEROGLYPH-13D54;Lo;0;L;;;;;N;;;;;
+13D55;EGYPTIAN HIEROGLYPH-13D55;Lo;0;L;;;;;N;;;;;
+13D56;EGYPTIAN HIEROGLYPH-13D56;Lo;0;L;;;;;N;;;;;
+13D57;EGYPTIAN HIEROGLYPH-13D57;Lo;0;L;;;;;N;;;;;
+13D58;EGYPTIAN HIEROGLYPH-13D58;Lo;0;L;;;;;N;;;;;
+13D59;EGYPTIAN HIEROGLYPH-13D59;Lo;0;L;;;;;N;;;;;
+13D5A;EGYPTIAN HIEROGLYPH-13D5A;Lo;0;L;;;;;N;;;;;
+13D5B;EGYPTIAN HIEROGLYPH-13D5B;Lo;0;L;;;;;N;;;;;
+13D5C;EGYPTIAN HIEROGLYPH-13D5C;Lo;0;L;;;;;N;;;;;
+13D5D;EGYPTIAN HIEROGLYPH-13D5D;Lo;0;L;;;;;N;;;;;
+13D5E;EGYPTIAN HIEROGLYPH-13D5E;Lo;0;L;;;;;N;;;;;
+13D5F;EGYPTIAN HIEROGLYPH-13D5F;Lo;0;L;;;;;N;;;;;
+13D60;EGYPTIAN HIEROGLYPH-13D60;Lo;0;L;;;;;N;;;;;
+13D61;EGYPTIAN HIEROGLYPH-13D61;Lo;0;L;;;;;N;;;;;
+13D62;EGYPTIAN HIEROGLYPH-13D62;Lo;0;L;;;;;N;;;;;
+13D63;EGYPTIAN HIEROGLYPH-13D63;Lo;0;L;;;;;N;;;;;
+13D64;EGYPTIAN HIEROGLYPH-13D64;Lo;0;L;;;;;N;;;;;
+13D65;EGYPTIAN HIEROGLYPH-13D65;Lo;0;L;;;;;N;;;;;
+13D66;EGYPTIAN HIEROGLYPH-13D66;Lo;0;L;;;;;N;;;;;
+13D67;EGYPTIAN HIEROGLYPH-13D67;Lo;0;L;;;;;N;;;;;
+13D68;EGYPTIAN HIEROGLYPH-13D68;Lo;0;L;;;;;N;;;;;
+13D69;EGYPTIAN HIEROGLYPH-13D69;Lo;0;L;;;;;N;;;;;
+13D6A;EGYPTIAN HIEROGLYPH-13D6A;Lo;0;L;;;;;N;;;;;
+13D6B;EGYPTIAN HIEROGLYPH-13D6B;Lo;0;L;;;;;N;;;;;
+13D6C;EGYPTIAN HIEROGLYPH-13D6C;Lo;0;L;;;;;N;;;;;
+13D6D;EGYPTIAN HIEROGLYPH-13D6D;Lo;0;L;;;;;N;;;;;
+13D6E;EGYPTIAN HIEROGLYPH-13D6E;Lo;0;L;;;;;N;;;;;
+13D6F;EGYPTIAN HIEROGLYPH-13D6F;Lo;0;L;;;;;N;;;;;
+13D70;EGYPTIAN HIEROGLYPH-13D70;Lo;0;L;;;;;N;;;;;
+13D71;EGYPTIAN HIEROGLYPH-13D71;Lo;0;L;;;;;N;;;;;
+13D72;EGYPTIAN HIEROGLYPH-13D72;Lo;0;L;;;;;N;;;;;
+13D73;EGYPTIAN HIEROGLYPH-13D73;Lo;0;L;;;;;N;;;;;
+13D74;EGYPTIAN HIEROGLYPH-13D74;Lo;0;L;;;;;N;;;;;
+13D75;EGYPTIAN HIEROGLYPH-13D75;Lo;0;L;;;;;N;;;;;
+13D76;EGYPTIAN HIEROGLYPH-13D76;Lo;0;L;;;;;N;;;;;
+13D77;EGYPTIAN HIEROGLYPH-13D77;Lo;0;L;;;;;N;;;;;
+13D78;EGYPTIAN HIEROGLYPH-13D78;Lo;0;L;;;;;N;;;;;
+13D79;EGYPTIAN HIEROGLYPH-13D79;Lo;0;L;;;;;N;;;;;
+13D7A;EGYPTIAN HIEROGLYPH-13D7A;Lo;0;L;;;;;N;;;;;
+13D7B;EGYPTIAN HIEROGLYPH-13D7B;Lo;0;L;;;;;N;;;;;
+13D7C;EGYPTIAN HIEROGLYPH-13D7C;Lo;0;L;;;;;N;;;;;
+13D7D;EGYPTIAN HIEROGLYPH-13D7D;Lo;0;L;;;;;N;;;;;
+13D7E;EGYPTIAN HIEROGLYPH-13D7E;Lo;0;L;;;;;N;;;;;
+13D7F;EGYPTIAN HIEROGLYPH-13D7F;Lo;0;L;;;;;N;;;;;
+13D80;EGYPTIAN HIEROGLYPH-13D80;Lo;0;L;;;;;N;;;;;
+13D81;EGYPTIAN HIEROGLYPH-13D81;Lo;0;L;;;;;N;;;;;
+13D82;EGYPTIAN HIEROGLYPH-13D82;Lo;0;L;;;;;N;;;;;
+13D83;EGYPTIAN HIEROGLYPH-13D83;Lo;0;L;;;;;N;;;;;
+13D84;EGYPTIAN HIEROGLYPH-13D84;Lo;0;L;;;;;N;;;;;
+13D85;EGYPTIAN HIEROGLYPH-13D85;Lo;0;L;;;;;N;;;;;
+13D86;EGYPTIAN HIEROGLYPH-13D86;Lo;0;L;;;;;N;;;;;
+13D87;EGYPTIAN HIEROGLYPH-13D87;Lo;0;L;;;;;N;;;;;
+13D88;EGYPTIAN HIEROGLYPH-13D88;Lo;0;L;;;;;N;;;;;
+13D89;EGYPTIAN HIEROGLYPH-13D89;Lo;0;L;;;;;N;;;;;
+13D8A;EGYPTIAN HIEROGLYPH-13D8A;Lo;0;L;;;;;N;;;;;
+13D8B;EGYPTIAN HIEROGLYPH-13D8B;Lo;0;L;;;;;N;;;;;
+13D8C;EGYPTIAN HIEROGLYPH-13D8C;Lo;0;L;;;;;N;;;;;
+13D8D;EGYPTIAN HIEROGLYPH-13D8D;Lo;0;L;;;;;N;;;;;
+13D8E;EGYPTIAN HIEROGLYPH-13D8E;Lo;0;L;;;;;N;;;;;
+13D8F;EGYPTIAN HIEROGLYPH-13D8F;Lo;0;L;;;;;N;;;;;
+13D90;EGYPTIAN HIEROGLYPH-13D90;Lo;0;L;;;;;N;;;;;
+13D91;EGYPTIAN HIEROGLYPH-13D91;Lo;0;L;;;;;N;;;;;
+13D92;EGYPTIAN HIEROGLYPH-13D92;Lo;0;L;;;;;N;;;;;
+13D93;EGYPTIAN HIEROGLYPH-13D93;Lo;0;L;;;;;N;;;;;
+13D94;EGYPTIAN HIEROGLYPH-13D94;Lo;0;L;;;;;N;;;;;
+13D95;EGYPTIAN HIEROGLYPH-13D95;Lo;0;L;;;;;N;;;;;
+13D96;EGYPTIAN HIEROGLYPH-13D96;Lo;0;L;;;;;N;;;;;
+13D97;EGYPTIAN HIEROGLYPH-13D97;Lo;0;L;;;;;N;;;;;
+13D98;EGYPTIAN HIEROGLYPH-13D98;Lo;0;L;;;;;N;;;;;
+13D99;EGYPTIAN HIEROGLYPH-13D99;Lo;0;L;;;;;N;;;;;
+13D9A;EGYPTIAN HIEROGLYPH-13D9A;Lo;0;L;;;;;N;;;;;
+13D9B;EGYPTIAN HIEROGLYPH-13D9B;Lo;0;L;;;;;N;;;;;
+13D9C;EGYPTIAN HIEROGLYPH-13D9C;Lo;0;L;;;;;N;;;;;
+13D9D;EGYPTIAN HIEROGLYPH-13D9D;Lo;0;L;;;;;N;;;;;
+13D9E;EGYPTIAN HIEROGLYPH-13D9E;Lo;0;L;;;;;N;;;;;
+13D9F;EGYPTIAN HIEROGLYPH-13D9F;Lo;0;L;;;;;N;;;;;
+13DA0;EGYPTIAN HIEROGLYPH-13DA0;Lo;0;L;;;;;N;;;;;
+13DA1;EGYPTIAN HIEROGLYPH-13DA1;Lo;0;L;;;;;N;;;;;
+13DA2;EGYPTIAN HIEROGLYPH-13DA2;Lo;0;L;;;;;N;;;;;
+13DA3;EGYPTIAN HIEROGLYPH-13DA3;Lo;0;L;;;;;N;;;;;
+13DA4;EGYPTIAN HIEROGLYPH-13DA4;Lo;0;L;;;;;N;;;;;
+13DA5;EGYPTIAN HIEROGLYPH-13DA5;Lo;0;L;;;;;N;;;;;
+13DA6;EGYPTIAN HIEROGLYPH-13DA6;Lo;0;L;;;;;N;;;;;
+13DA7;EGYPTIAN HIEROGLYPH-13DA7;Lo;0;L;;;;;N;;;;;
+13DA8;EGYPTIAN HIEROGLYPH-13DA8;Lo;0;L;;;;;N;;;;;
+13DA9;EGYPTIAN HIEROGLYPH-13DA9;Lo;0;L;;;;;N;;;;;
+13DAA;EGYPTIAN HIEROGLYPH-13DAA;Lo;0;L;;;;;N;;;;;
+13DAB;EGYPTIAN HIEROGLYPH-13DAB;Lo;0;L;;;;;N;;;;;
+13DAC;EGYPTIAN HIEROGLYPH-13DAC;Lo;0;L;;;;;N;;;;;
+13DAD;EGYPTIAN HIEROGLYPH-13DAD;Lo;0;L;;;;;N;;;;;
+13DAE;EGYPTIAN HIEROGLYPH-13DAE;Lo;0;L;;;;;N;;;;;
+13DAF;EGYPTIAN HIEROGLYPH-13DAF;Lo;0;L;;;;;N;;;;;
+13DB0;EGYPTIAN HIEROGLYPH-13DB0;Lo;0;L;;;;;N;;;;;
+13DB1;EGYPTIAN HIEROGLYPH-13DB1;Lo;0;L;;;;;N;;;;;
+13DB2;EGYPTIAN HIEROGLYPH-13DB2;Lo;0;L;;;;;N;;;;;
+13DB3;EGYPTIAN HIEROGLYPH-13DB3;Lo;0;L;;;;;N;;;;;
+13DB4;EGYPTIAN HIEROGLYPH-13DB4;Lo;0;L;;;;;N;;;;;
+13DB5;EGYPTIAN HIEROGLYPH-13DB5;Lo;0;L;;;;;N;;;;;
+13DB6;EGYPTIAN HIEROGLYPH-13DB6;Lo;0;L;;;;;N;;;;;
+13DB7;EGYPTIAN HIEROGLYPH-13DB7;Lo;0;L;;;;;N;;;;;
+13DB8;EGYPTIAN HIEROGLYPH-13DB8;Lo;0;L;;;;;N;;;;;
+13DB9;EGYPTIAN HIEROGLYPH-13DB9;Lo;0;L;;;;;N;;;;;
+13DBA;EGYPTIAN HIEROGLYPH-13DBA;Lo;0;L;;;;;N;;;;;
+13DBB;EGYPTIAN HIEROGLYPH-13DBB;Lo;0;L;;;;;N;;;;;
+13DBC;EGYPTIAN HIEROGLYPH-13DBC;Lo;0;L;;;;;N;;;;;
+13DBD;EGYPTIAN HIEROGLYPH-13DBD;Lo;0;L;;;;;N;;;;;
+13DBE;EGYPTIAN HIEROGLYPH-13DBE;Lo;0;L;;;;;N;;;;;
+13DBF;EGYPTIAN HIEROGLYPH-13DBF;Lo;0;L;;;;;N;;;;;
+13DC0;EGYPTIAN HIEROGLYPH-13DC0;Lo;0;L;;;;;N;;;;;
+13DC1;EGYPTIAN HIEROGLYPH-13DC1;Lo;0;L;;;;;N;;;;;
+13DC2;EGYPTIAN HIEROGLYPH-13DC2;Lo;0;L;;;;;N;;;;;
+13DC3;EGYPTIAN HIEROGLYPH-13DC3;Lo;0;L;;;;;N;;;;;
+13DC4;EGYPTIAN HIEROGLYPH-13DC4;Lo;0;L;;;;;N;;;;;
+13DC5;EGYPTIAN HIEROGLYPH-13DC5;Lo;0;L;;;;;N;;;;;
+13DC6;EGYPTIAN HIEROGLYPH-13DC6;Lo;0;L;;;;;N;;;;;
+13DC7;EGYPTIAN HIEROGLYPH-13DC7;Lo;0;L;;;;;N;;;;;
+13DC8;EGYPTIAN HIEROGLYPH-13DC8;Lo;0;L;;;;;N;;;;;
+13DC9;EGYPTIAN HIEROGLYPH-13DC9;Lo;0;L;;;;;N;;;;;
+13DCA;EGYPTIAN HIEROGLYPH-13DCA;Lo;0;L;;;;;N;;;;;
+13DCB;EGYPTIAN HIEROGLYPH-13DCB;Lo;0;L;;;;;N;;;;;
+13DCC;EGYPTIAN HIEROGLYPH-13DCC;Lo;0;L;;;;;N;;;;;
+13DCD;EGYPTIAN HIEROGLYPH-13DCD;Lo;0;L;;;;;N;;;;;
+13DCE;EGYPTIAN HIEROGLYPH-13DCE;Lo;0;L;;;;;N;;;;;
+13DCF;EGYPTIAN HIEROGLYPH-13DCF;Lo;0;L;;;;;N;;;;;
+13DD0;EGYPTIAN HIEROGLYPH-13DD0;Lo;0;L;;;;;N;;;;;
+13DD1;EGYPTIAN HIEROGLYPH-13DD1;Lo;0;L;;;;;N;;;;;
+13DD2;EGYPTIAN HIEROGLYPH-13DD2;Lo;0;L;;;;;N;;;;;
+13DD3;EGYPTIAN HIEROGLYPH-13DD3;Lo;0;L;;;;;N;;;;;
+13DD4;EGYPTIAN HIEROGLYPH-13DD4;Lo;0;L;;;;;N;;;;;
+13DD5;EGYPTIAN HIEROGLYPH-13DD5;Lo;0;L;;;;;N;;;;;
+13DD6;EGYPTIAN HIEROGLYPH-13DD6;Lo;0;L;;;;;N;;;;;
+13DD7;EGYPTIAN HIEROGLYPH-13DD7;Lo;0;L;;;;;N;;;;;
+13DD8;EGYPTIAN HIEROGLYPH-13DD8;Lo;0;L;;;;;N;;;;;
+13DD9;EGYPTIAN HIEROGLYPH-13DD9;Lo;0;L;;;;;N;;;;;
+13DDA;EGYPTIAN HIEROGLYPH-13DDA;Lo;0;L;;;;;N;;;;;
+13DDB;EGYPTIAN HIEROGLYPH-13DDB;Lo;0;L;;;;;N;;;;;
+13DDC;EGYPTIAN HIEROGLYPH-13DDC;Lo;0;L;;;;;N;;;;;
+13DDD;EGYPTIAN HIEROGLYPH-13DDD;Lo;0;L;;;;;N;;;;;
+13DDE;EGYPTIAN HIEROGLYPH-13DDE;Lo;0;L;;;;;N;;;;;
+13DDF;EGYPTIAN HIEROGLYPH-13DDF;Lo;0;L;;;;;N;;;;;
+13DE0;EGYPTIAN HIEROGLYPH-13DE0;Lo;0;L;;;;;N;;;;;
+13DE1;EGYPTIAN HIEROGLYPH-13DE1;Lo;0;L;;;;;N;;;;;
+13DE2;EGYPTIAN HIEROGLYPH-13DE2;Lo;0;L;;;;;N;;;;;
+13DE3;EGYPTIAN HIEROGLYPH-13DE3;Lo;0;L;;;;;N;;;;;
+13DE4;EGYPTIAN HIEROGLYPH-13DE4;Lo;0;L;;;;;N;;;;;
+13DE5;EGYPTIAN HIEROGLYPH-13DE5;Lo;0;L;;;;;N;;;;;
+13DE6;EGYPTIAN HIEROGLYPH-13DE6;Lo;0;L;;;;;N;;;;;
+13DE7;EGYPTIAN HIEROGLYPH-13DE7;Lo;0;L;;;;;N;;;;;
+13DE8;EGYPTIAN HIEROGLYPH-13DE8;Lo;0;L;;;;;N;;;;;
+13DE9;EGYPTIAN HIEROGLYPH-13DE9;Lo;0;L;;;;;N;;;;;
+13DEA;EGYPTIAN HIEROGLYPH-13DEA;Lo;0;L;;;;;N;;;;;
+13DEB;EGYPTIAN HIEROGLYPH-13DEB;Lo;0;L;;;;;N;;;;;
+13DEC;EGYPTIAN HIEROGLYPH-13DEC;Lo;0;L;;;;;N;;;;;
+13DED;EGYPTIAN HIEROGLYPH-13DED;Lo;0;L;;;;;N;;;;;
+13DEE;EGYPTIAN HIEROGLYPH-13DEE;Lo;0;L;;;;;N;;;;;
+13DEF;EGYPTIAN HIEROGLYPH-13DEF;Lo;0;L;;;;;N;;;;;
+13DF0;EGYPTIAN HIEROGLYPH-13DF0;Lo;0;L;;;;;N;;;;;
+13DF1;EGYPTIAN HIEROGLYPH-13DF1;Lo;0;L;;;;;N;;;;;
+13DF2;EGYPTIAN HIEROGLYPH-13DF2;Lo;0;L;;;;;N;;;;;
+13DF3;EGYPTIAN HIEROGLYPH-13DF3;Lo;0;L;;;;;N;;;;;
+13DF4;EGYPTIAN HIEROGLYPH-13DF4;Lo;0;L;;;;;N;;;;;
+13DF5;EGYPTIAN HIEROGLYPH-13DF5;Lo;0;L;;;;;N;;;;;
+13DF6;EGYPTIAN HIEROGLYPH-13DF6;Lo;0;L;;;;;N;;;;;
+13DF7;EGYPTIAN HIEROGLYPH-13DF7;Lo;0;L;;;;;N;;;;;
+13DF8;EGYPTIAN HIEROGLYPH-13DF8;Lo;0;L;;;;;N;;;;;
+13DF9;EGYPTIAN HIEROGLYPH-13DF9;Lo;0;L;;;;;N;;;;;
+13DFA;EGYPTIAN HIEROGLYPH-13DFA;Lo;0;L;;;;;N;;;;;
+13DFB;EGYPTIAN HIEROGLYPH-13DFB;Lo;0;L;;;;;N;;;;;
+13DFC;EGYPTIAN HIEROGLYPH-13DFC;Lo;0;L;;;;;N;;;;;
+13DFD;EGYPTIAN HIEROGLYPH-13DFD;Lo;0;L;;;;;N;;;;;
+13DFE;EGYPTIAN HIEROGLYPH-13DFE;Lo;0;L;;;;;N;;;;;
+13DFF;EGYPTIAN HIEROGLYPH-13DFF;Lo;0;L;;;;;N;;;;;
+13E00;EGYPTIAN HIEROGLYPH-13E00;Lo;0;L;;;;;N;;;;;
+13E01;EGYPTIAN HIEROGLYPH-13E01;Lo;0;L;;;;;N;;;;;
+13E02;EGYPTIAN HIEROGLYPH-13E02;Lo;0;L;;;;;N;;;;;
+13E03;EGYPTIAN HIEROGLYPH-13E03;Lo;0;L;;;;;N;;;;;
+13E04;EGYPTIAN HIEROGLYPH-13E04;Lo;0;L;;;;;N;;;;;
+13E05;EGYPTIAN HIEROGLYPH-13E05;Lo;0;L;;;;;N;;;;;
+13E06;EGYPTIAN HIEROGLYPH-13E06;Lo;0;L;;;;;N;;;;;
+13E07;EGYPTIAN HIEROGLYPH-13E07;Lo;0;L;;;;;N;;;;;
+13E08;EGYPTIAN HIEROGLYPH-13E08;Lo;0;L;;;;;N;;;;;
+13E09;EGYPTIAN HIEROGLYPH-13E09;Lo;0;L;;;;;N;;;;;
+13E0A;EGYPTIAN HIEROGLYPH-13E0A;Lo;0;L;;;;;N;;;;;
+13E0B;EGYPTIAN HIEROGLYPH-13E0B;Lo;0;L;;;;;N;;;;;
+13E0C;EGYPTIAN HIEROGLYPH-13E0C;Lo;0;L;;;;;N;;;;;
+13E0D;EGYPTIAN HIEROGLYPH-13E0D;Lo;0;L;;;;;N;;;;;
+13E0E;EGYPTIAN HIEROGLYPH-13E0E;Lo;0;L;;;;;N;;;;;
+13E0F;EGYPTIAN HIEROGLYPH-13E0F;Lo;0;L;;;;;N;;;;;
+13E10;EGYPTIAN HIEROGLYPH-13E10;Lo;0;L;;;;;N;;;;;
+13E11;EGYPTIAN HIEROGLYPH-13E11;Lo;0;L;;;;;N;;;;;
+13E12;EGYPTIAN HIEROGLYPH-13E12;Lo;0;L;;;;;N;;;;;
+13E13;EGYPTIAN HIEROGLYPH-13E13;Lo;0;L;;;;;N;;;;;
+13E14;EGYPTIAN HIEROGLYPH-13E14;Lo;0;L;;;;;N;;;;;
+13E15;EGYPTIAN HIEROGLYPH-13E15;Lo;0;L;;;;;N;;;;;
+13E16;EGYPTIAN HIEROGLYPH-13E16;Lo;0;L;;;;;N;;;;;
+13E17;EGYPTIAN HIEROGLYPH-13E17;Lo;0;L;;;;;N;;;;;
+13E18;EGYPTIAN HIEROGLYPH-13E18;Lo;0;L;;;;;N;;;;;
+13E19;EGYPTIAN HIEROGLYPH-13E19;Lo;0;L;;;;;N;;;;;
+13E1A;EGYPTIAN HIEROGLYPH-13E1A;Lo;0;L;;;;;N;;;;;
+13E1B;EGYPTIAN HIEROGLYPH-13E1B;Lo;0;L;;;;;N;;;;;
+13E1C;EGYPTIAN HIEROGLYPH-13E1C;Lo;0;L;;;;;N;;;;;
+13E1D;EGYPTIAN HIEROGLYPH-13E1D;Lo;0;L;;;;;N;;;;;
+13E1E;EGYPTIAN HIEROGLYPH-13E1E;Lo;0;L;;;;;N;;;;;
+13E1F;EGYPTIAN HIEROGLYPH-13E1F;Lo;0;L;;;;;N;;;;;
+13E20;EGYPTIAN HIEROGLYPH-13E20;Lo;0;L;;;;;N;;;;;
+13E21;EGYPTIAN HIEROGLYPH-13E21;Lo;0;L;;;;;N;;;;;
+13E22;EGYPTIAN HIEROGLYPH-13E22;Lo;0;L;;;;;N;;;;;
+13E23;EGYPTIAN HIEROGLYPH-13E23;Lo;0;L;;;;;N;;;;;
+13E24;EGYPTIAN HIEROGLYPH-13E24;Lo;0;L;;;;;N;;;;;
+13E25;EGYPTIAN HIEROGLYPH-13E25;Lo;0;L;;;;;N;;;;;
+13E26;EGYPTIAN HIEROGLYPH-13E26;Lo;0;L;;;;;N;;;;;
+13E27;EGYPTIAN HIEROGLYPH-13E27;Lo;0;L;;;;;N;;;;;
+13E28;EGYPTIAN HIEROGLYPH-13E28;Lo;0;L;;;;;N;;;;;
+13E29;EGYPTIAN HIEROGLYPH-13E29;Lo;0;L;;;;;N;;;;;
+13E2A;EGYPTIAN HIEROGLYPH-13E2A;Lo;0;L;;;;;N;;;;;
+13E2B;EGYPTIAN HIEROGLYPH-13E2B;Lo;0;L;;;;;N;;;;;
+13E2C;EGYPTIAN HIEROGLYPH-13E2C;Lo;0;L;;;;;N;;;;;
+13E2D;EGYPTIAN HIEROGLYPH-13E2D;Lo;0;L;;;;;N;;;;;
+13E2E;EGYPTIAN HIEROGLYPH-13E2E;Lo;0;L;;;;;N;;;;;
+13E2F;EGYPTIAN HIEROGLYPH-13E2F;Lo;0;L;;;;;N;;;;;
+13E30;EGYPTIAN HIEROGLYPH-13E30;Lo;0;L;;;;;N;;;;;
+13E31;EGYPTIAN HIEROGLYPH-13E31;Lo;0;L;;;;;N;;;;;
+13E32;EGYPTIAN HIEROGLYPH-13E32;Lo;0;L;;;;;N;;;;;
+13E33;EGYPTIAN HIEROGLYPH-13E33;Lo;0;L;;;;;N;;;;;
+13E34;EGYPTIAN HIEROGLYPH-13E34;Lo;0;L;;;;;N;;;;;
+13E35;EGYPTIAN HIEROGLYPH-13E35;Lo;0;L;;;;;N;;;;;
+13E36;EGYPTIAN HIEROGLYPH-13E36;Lo;0;L;;;;;N;;;;;
+13E37;EGYPTIAN HIEROGLYPH-13E37;Lo;0;L;;;;;N;;;;;
+13E38;EGYPTIAN HIEROGLYPH-13E38;Lo;0;L;;;;;N;;;;;
+13E39;EGYPTIAN HIEROGLYPH-13E39;Lo;0;L;;;;;N;;;;;
+13E3A;EGYPTIAN HIEROGLYPH-13E3A;Lo;0;L;;;;;N;;;;;
+13E3B;EGYPTIAN HIEROGLYPH-13E3B;Lo;0;L;;;;;N;;;;;
+13E3C;EGYPTIAN HIEROGLYPH-13E3C;Lo;0;L;;;;;N;;;;;
+13E3D;EGYPTIAN HIEROGLYPH-13E3D;Lo;0;L;;;;;N;;;;;
+13E3E;EGYPTIAN HIEROGLYPH-13E3E;Lo;0;L;;;;;N;;;;;
+13E3F;EGYPTIAN HIEROGLYPH-13E3F;Lo;0;L;;;;;N;;;;;
+13E40;EGYPTIAN HIEROGLYPH-13E40;Lo;0;L;;;;;N;;;;;
+13E41;EGYPTIAN HIEROGLYPH-13E41;Lo;0;L;;;;;N;;;;;
+13E42;EGYPTIAN HIEROGLYPH-13E42;Lo;0;L;;;;;N;;;;;
+13E43;EGYPTIAN HIEROGLYPH-13E43;Lo;0;L;;;;;N;;;;;
+13E44;EGYPTIAN HIEROGLYPH-13E44;Lo;0;L;;;;;N;;;;;
+13E45;EGYPTIAN HIEROGLYPH-13E45;Lo;0;L;;;;;N;;;;;
+13E46;EGYPTIAN HIEROGLYPH-13E46;Lo;0;L;;;;;N;;;;;
+13E47;EGYPTIAN HIEROGLYPH-13E47;Lo;0;L;;;;;N;;;;;
+13E48;EGYPTIAN HIEROGLYPH-13E48;Lo;0;L;;;;;N;;;;;
+13E49;EGYPTIAN HIEROGLYPH-13E49;Lo;0;L;;;;;N;;;;;
+13E4A;EGYPTIAN HIEROGLYPH-13E4A;Lo;0;L;;;;;N;;;;;
+13E4B;EGYPTIAN HIEROGLYPH-13E4B;Lo;0;L;;;;;N;;;;;
+13E4C;EGYPTIAN HIEROGLYPH-13E4C;Lo;0;L;;;;;N;;;;;
+13E4D;EGYPTIAN HIEROGLYPH-13E4D;Lo;0;L;;;;;N;;;;;
+13E4E;EGYPTIAN HIEROGLYPH-13E4E;Lo;0;L;;;;;N;;;;;
+13E4F;EGYPTIAN HIEROGLYPH-13E4F;Lo;0;L;;;;;N;;;;;
+13E50;EGYPTIAN HIEROGLYPH-13E50;Lo;0;L;;;;;N;;;;;
+13E51;EGYPTIAN HIEROGLYPH-13E51;Lo;0;L;;;;;N;;;;;
+13E52;EGYPTIAN HIEROGLYPH-13E52;Lo;0;L;;;;;N;;;;;
+13E53;EGYPTIAN HIEROGLYPH-13E53;Lo;0;L;;;;;N;;;;;
+13E54;EGYPTIAN HIEROGLYPH-13E54;Lo;0;L;;;;;N;;;;;
+13E55;EGYPTIAN HIEROGLYPH-13E55;Lo;0;L;;;;;N;;;;;
+13E56;EGYPTIAN HIEROGLYPH-13E56;Lo;0;L;;;;;N;;;;;
+13E57;EGYPTIAN HIEROGLYPH-13E57;Lo;0;L;;;;;N;;;;;
+13E58;EGYPTIAN HIEROGLYPH-13E58;Lo;0;L;;;;;N;;;;;
+13E59;EGYPTIAN HIEROGLYPH-13E59;Lo;0;L;;;;;N;;;;;
+13E5A;EGYPTIAN HIEROGLYPH-13E5A;Lo;0;L;;;;;N;;;;;
+13E5B;EGYPTIAN HIEROGLYPH-13E5B;Lo;0;L;;;;;N;;;;;
+13E5C;EGYPTIAN HIEROGLYPH-13E5C;Lo;0;L;;;;;N;;;;;
+13E5D;EGYPTIAN HIEROGLYPH-13E5D;Lo;0;L;;;;;N;;;;;
+13E5E;EGYPTIAN HIEROGLYPH-13E5E;Lo;0;L;;;;;N;;;;;
+13E5F;EGYPTIAN HIEROGLYPH-13E5F;Lo;0;L;;;;;N;;;;;
+13E60;EGYPTIAN HIEROGLYPH-13E60;Lo;0;L;;;;;N;;;;;
+13E61;EGYPTIAN HIEROGLYPH-13E61;Lo;0;L;;;;;N;;;;;
+13E62;EGYPTIAN HIEROGLYPH-13E62;Lo;0;L;;;;;N;;;;;
+13E63;EGYPTIAN HIEROGLYPH-13E63;Lo;0;L;;;;;N;;;;;
+13E64;EGYPTIAN HIEROGLYPH-13E64;Lo;0;L;;;;;N;;;;;
+13E65;EGYPTIAN HIEROGLYPH-13E65;Lo;0;L;;;;;N;;;;;
+13E66;EGYPTIAN HIEROGLYPH-13E66;Lo;0;L;;;;;N;;;;;
+13E67;EGYPTIAN HIEROGLYPH-13E67;Lo;0;L;;;;;N;;;;;
+13E68;EGYPTIAN HIEROGLYPH-13E68;Lo;0;L;;;;;N;;;;;
+13E69;EGYPTIAN HIEROGLYPH-13E69;Lo;0;L;;;;;N;;;;;
+13E6A;EGYPTIAN HIEROGLYPH-13E6A;Lo;0;L;;;;;N;;;;;
+13E6B;EGYPTIAN HIEROGLYPH-13E6B;Lo;0;L;;;;;N;;;;;
+13E6C;EGYPTIAN HIEROGLYPH-13E6C;Lo;0;L;;;;;N;;;;;
+13E6D;EGYPTIAN HIEROGLYPH-13E6D;Lo;0;L;;;;;N;;;;;
+13E6E;EGYPTIAN HIEROGLYPH-13E6E;Lo;0;L;;;;;N;;;;;
+13E6F;EGYPTIAN HIEROGLYPH-13E6F;Lo;0;L;;;;;N;;;;;
+13E70;EGYPTIAN HIEROGLYPH-13E70;Lo;0;L;;;;;N;;;;;
+13E71;EGYPTIAN HIEROGLYPH-13E71;Lo;0;L;;;;;N;;;;;
+13E72;EGYPTIAN HIEROGLYPH-13E72;Lo;0;L;;;;;N;;;;;
+13E73;EGYPTIAN HIEROGLYPH-13E73;Lo;0;L;;;;;N;;;;;
+13E74;EGYPTIAN HIEROGLYPH-13E74;Lo;0;L;;;;;N;;;;;
+13E75;EGYPTIAN HIEROGLYPH-13E75;Lo;0;L;;;;;N;;;;;
+13E76;EGYPTIAN HIEROGLYPH-13E76;Lo;0;L;;;;;N;;;;;
+13E77;EGYPTIAN HIEROGLYPH-13E77;Lo;0;L;;;;;N;;;;;
+13E78;EGYPTIAN HIEROGLYPH-13E78;Lo;0;L;;;;;N;;;;;
+13E79;EGYPTIAN HIEROGLYPH-13E79;Lo;0;L;;;;;N;;;;;
+13E7A;EGYPTIAN HIEROGLYPH-13E7A;Lo;0;L;;;;;N;;;;;
+13E7B;EGYPTIAN HIEROGLYPH-13E7B;Lo;0;L;;;;;N;;;;;
+13E7C;EGYPTIAN HIEROGLYPH-13E7C;Lo;0;L;;;;;N;;;;;
+13E7D;EGYPTIAN HIEROGLYPH-13E7D;Lo;0;L;;;;;N;;;;;
+13E7E;EGYPTIAN HIEROGLYPH-13E7E;Lo;0;L;;;;;N;;;;;
+13E7F;EGYPTIAN HIEROGLYPH-13E7F;Lo;0;L;;;;;N;;;;;
+13E80;EGYPTIAN HIEROGLYPH-13E80;Lo;0;L;;;;;N;;;;;
+13E81;EGYPTIAN HIEROGLYPH-13E81;Lo;0;L;;;;;N;;;;;
+13E82;EGYPTIAN HIEROGLYPH-13E82;Lo;0;L;;;;;N;;;;;
+13E83;EGYPTIAN HIEROGLYPH-13E83;Lo;0;L;;;;;N;;;;;
+13E84;EGYPTIAN HIEROGLYPH-13E84;Lo;0;L;;;;;N;;;;;
+13E85;EGYPTIAN HIEROGLYPH-13E85;Lo;0;L;;;;;N;;;;;
+13E86;EGYPTIAN HIEROGLYPH-13E86;Lo;0;L;;;;;N;;;;;
+13E87;EGYPTIAN HIEROGLYPH-13E87;Lo;0;L;;;;;N;;;;;
+13E88;EGYPTIAN HIEROGLYPH-13E88;Lo;0;L;;;;;N;;;;;
+13E89;EGYPTIAN HIEROGLYPH-13E89;Lo;0;L;;;;;N;;;;;
+13E8A;EGYPTIAN HIEROGLYPH-13E8A;Lo;0;L;;;;;N;;;;;
+13E8B;EGYPTIAN HIEROGLYPH-13E8B;Lo;0;L;;;;;N;;;;;
+13E8C;EGYPTIAN HIEROGLYPH-13E8C;Lo;0;L;;;;;N;;;;;
+13E8D;EGYPTIAN HIEROGLYPH-13E8D;Lo;0;L;;;;;N;;;;;
+13E8E;EGYPTIAN HIEROGLYPH-13E8E;Lo;0;L;;;;;N;;;;;
+13E8F;EGYPTIAN HIEROGLYPH-13E8F;Lo;0;L;;;;;N;;;;;
+13E90;EGYPTIAN HIEROGLYPH-13E90;Lo;0;L;;;;;N;;;;;
+13E91;EGYPTIAN HIEROGLYPH-13E91;Lo;0;L;;;;;N;;;;;
+13E92;EGYPTIAN HIEROGLYPH-13E92;Lo;0;L;;;;;N;;;;;
+13E93;EGYPTIAN HIEROGLYPH-13E93;Lo;0;L;;;;;N;;;;;
+13E94;EGYPTIAN HIEROGLYPH-13E94;Lo;0;L;;;;;N;;;;;
+13E95;EGYPTIAN HIEROGLYPH-13E95;Lo;0;L;;;;;N;;;;;
+13E96;EGYPTIAN HIEROGLYPH-13E96;Lo;0;L;;;;;N;;;;;
+13E97;EGYPTIAN HIEROGLYPH-13E97;Lo;0;L;;;;;N;;;;;
+13E98;EGYPTIAN HIEROGLYPH-13E98;Lo;0;L;;;;;N;;;;;
+13E99;EGYPTIAN HIEROGLYPH-13E99;Lo;0;L;;;;;N;;;;;
+13E9A;EGYPTIAN HIEROGLYPH-13E9A;Lo;0;L;;;;;N;;;;;
+13E9B;EGYPTIAN HIEROGLYPH-13E9B;Lo;0;L;;;;;N;;;;;
+13E9C;EGYPTIAN HIEROGLYPH-13E9C;Lo;0;L;;;;;N;;;;;
+13E9D;EGYPTIAN HIEROGLYPH-13E9D;Lo;0;L;;;;;N;;;;;
+13E9E;EGYPTIAN HIEROGLYPH-13E9E;Lo;0;L;;;;;N;;;;;
+13E9F;EGYPTIAN HIEROGLYPH-13E9F;Lo;0;L;;;;;N;;;;;
+13EA0;EGYPTIAN HIEROGLYPH-13EA0;Lo;0;L;;;;;N;;;;;
+13EA1;EGYPTIAN HIEROGLYPH-13EA1;Lo;0;L;;;;;N;;;;;
+13EA2;EGYPTIAN HIEROGLYPH-13EA2;Lo;0;L;;;;;N;;;;;
+13EA3;EGYPTIAN HIEROGLYPH-13EA3;Lo;0;L;;;;;N;;;;;
+13EA4;EGYPTIAN HIEROGLYPH-13EA4;Lo;0;L;;;;;N;;;;;
+13EA5;EGYPTIAN HIEROGLYPH-13EA5;Lo;0;L;;;;;N;;;;;
+13EA6;EGYPTIAN HIEROGLYPH-13EA6;Lo;0;L;;;;;N;;;;;
+13EA7;EGYPTIAN HIEROGLYPH-13EA7;Lo;0;L;;;;;N;;;;;
+13EA8;EGYPTIAN HIEROGLYPH-13EA8;Lo;0;L;;;;;N;;;;;
+13EA9;EGYPTIAN HIEROGLYPH-13EA9;Lo;0;L;;;;;N;;;;;
+13EAA;EGYPTIAN HIEROGLYPH-13EAA;Lo;0;L;;;;;N;;;;;
+13EAB;EGYPTIAN HIEROGLYPH-13EAB;Lo;0;L;;;;;N;;;;;
+13EAC;EGYPTIAN HIEROGLYPH-13EAC;Lo;0;L;;;;;N;;;;;
+13EAD;EGYPTIAN HIEROGLYPH-13EAD;Lo;0;L;;;;;N;;;;;
+13EAE;EGYPTIAN HIEROGLYPH-13EAE;Lo;0;L;;;;;N;;;;;
+13EAF;EGYPTIAN HIEROGLYPH-13EAF;Lo;0;L;;;;;N;;;;;
+13EB0;EGYPTIAN HIEROGLYPH-13EB0;Lo;0;L;;;;;N;;;;;
+13EB1;EGYPTIAN HIEROGLYPH-13EB1;Lo;0;L;;;;;N;;;;;
+13EB2;EGYPTIAN HIEROGLYPH-13EB2;Lo;0;L;;;;;N;;;;;
+13EB3;EGYPTIAN HIEROGLYPH-13EB3;Lo;0;L;;;;;N;;;;;
+13EB4;EGYPTIAN HIEROGLYPH-13EB4;Lo;0;L;;;;;N;;;;;
+13EB5;EGYPTIAN HIEROGLYPH-13EB5;Lo;0;L;;;;;N;;;;;
+13EB6;EGYPTIAN HIEROGLYPH-13EB6;Lo;0;L;;;;;N;;;;;
+13EB7;EGYPTIAN HIEROGLYPH-13EB7;Lo;0;L;;;;;N;;;;;
+13EB8;EGYPTIAN HIEROGLYPH-13EB8;Lo;0;L;;;;;N;;;;;
+13EB9;EGYPTIAN HIEROGLYPH-13EB9;Lo;0;L;;;;;N;;;;;
+13EBA;EGYPTIAN HIEROGLYPH-13EBA;Lo;0;L;;;;;N;;;;;
+13EBB;EGYPTIAN HIEROGLYPH-13EBB;Lo;0;L;;;;;N;;;;;
+13EBC;EGYPTIAN HIEROGLYPH-13EBC;Lo;0;L;;;;;N;;;;;
+13EBD;EGYPTIAN HIEROGLYPH-13EBD;Lo;0;L;;;;;N;;;;;
+13EBE;EGYPTIAN HIEROGLYPH-13EBE;Lo;0;L;;;;;N;;;;;
+13EBF;EGYPTIAN HIEROGLYPH-13EBF;Lo;0;L;;;;;N;;;;;
+13EC0;EGYPTIAN HIEROGLYPH-13EC0;Lo;0;L;;;;;N;;;;;
+13EC1;EGYPTIAN HIEROGLYPH-13EC1;Lo;0;L;;;;;N;;;;;
+13EC2;EGYPTIAN HIEROGLYPH-13EC2;Lo;0;L;;;;;N;;;;;
+13EC3;EGYPTIAN HIEROGLYPH-13EC3;Lo;0;L;;;;;N;;;;;
+13EC4;EGYPTIAN HIEROGLYPH-13EC4;Lo;0;L;;;;;N;;;;;
+13EC5;EGYPTIAN HIEROGLYPH-13EC5;Lo;0;L;;;;;N;;;;;
+13EC6;EGYPTIAN HIEROGLYPH-13EC6;Lo;0;L;;;;;N;;;;;
+13EC7;EGYPTIAN HIEROGLYPH-13EC7;Lo;0;L;;;;;N;;;;;
+13EC8;EGYPTIAN HIEROGLYPH-13EC8;Lo;0;L;;;;;N;;;;;
+13EC9;EGYPTIAN HIEROGLYPH-13EC9;Lo;0;L;;;;;N;;;;;
+13ECA;EGYPTIAN HIEROGLYPH-13ECA;Lo;0;L;;;;;N;;;;;
+13ECB;EGYPTIAN HIEROGLYPH-13ECB;Lo;0;L;;;;;N;;;;;
+13ECC;EGYPTIAN HIEROGLYPH-13ECC;Lo;0;L;;;;;N;;;;;
+13ECD;EGYPTIAN HIEROGLYPH-13ECD;Lo;0;L;;;;;N;;;;;
+13ECE;EGYPTIAN HIEROGLYPH-13ECE;Lo;0;L;;;;;N;;;;;
+13ECF;EGYPTIAN HIEROGLYPH-13ECF;Lo;0;L;;;;;N;;;;;
+13ED0;EGYPTIAN HIEROGLYPH-13ED0;Lo;0;L;;;;;N;;;;;
+13ED1;EGYPTIAN HIEROGLYPH-13ED1;Lo;0;L;;;;;N;;;;;
+13ED2;EGYPTIAN HIEROGLYPH-13ED2;Lo;0;L;;;;;N;;;;;
+13ED3;EGYPTIAN HIEROGLYPH-13ED3;Lo;0;L;;;;;N;;;;;
+13ED4;EGYPTIAN HIEROGLYPH-13ED4;Lo;0;L;;;;;N;;;;;
+13ED5;EGYPTIAN HIEROGLYPH-13ED5;Lo;0;L;;;;;N;;;;;
+13ED6;EGYPTIAN HIEROGLYPH-13ED6;Lo;0;L;;;;;N;;;;;
+13ED7;EGYPTIAN HIEROGLYPH-13ED7;Lo;0;L;;;;;N;;;;;
+13ED8;EGYPTIAN HIEROGLYPH-13ED8;Lo;0;L;;;;;N;;;;;
+13ED9;EGYPTIAN HIEROGLYPH-13ED9;Lo;0;L;;;;;N;;;;;
+13EDA;EGYPTIAN HIEROGLYPH-13EDA;Lo;0;L;;;;;N;;;;;
+13EDB;EGYPTIAN HIEROGLYPH-13EDB;Lo;0;L;;;;;N;;;;;
+13EDC;EGYPTIAN HIEROGLYPH-13EDC;Lo;0;L;;;;;N;;;;;
+13EDD;EGYPTIAN HIEROGLYPH-13EDD;Lo;0;L;;;;;N;;;;;
+13EDE;EGYPTIAN HIEROGLYPH-13EDE;Lo;0;L;;;;;N;;;;;
+13EDF;EGYPTIAN HIEROGLYPH-13EDF;Lo;0;L;;;;;N;;;;;
+13EE0;EGYPTIAN HIEROGLYPH-13EE0;Lo;0;L;;;;;N;;;;;
+13EE1;EGYPTIAN HIEROGLYPH-13EE1;Lo;0;L;;;;;N;;;;;
+13EE2;EGYPTIAN HIEROGLYPH-13EE2;Lo;0;L;;;;;N;;;;;
+13EE3;EGYPTIAN HIEROGLYPH-13EE3;Lo;0;L;;;;;N;;;;;
+13EE4;EGYPTIAN HIEROGLYPH-13EE4;Lo;0;L;;;;;N;;;;;
+13EE5;EGYPTIAN HIEROGLYPH-13EE5;Lo;0;L;;;;;N;;;;;
+13EE6;EGYPTIAN HIEROGLYPH-13EE6;Lo;0;L;;;;;N;;;;;
+13EE7;EGYPTIAN HIEROGLYPH-13EE7;Lo;0;L;;;;;N;;;;;
+13EE8;EGYPTIAN HIEROGLYPH-13EE8;Lo;0;L;;;;;N;;;;;
+13EE9;EGYPTIAN HIEROGLYPH-13EE9;Lo;0;L;;;;;N;;;;;
+13EEA;EGYPTIAN HIEROGLYPH-13EEA;Lo;0;L;;;;;N;;;;;
+13EEB;EGYPTIAN HIEROGLYPH-13EEB;Lo;0;L;;;;;N;;;;;
+13EEC;EGYPTIAN HIEROGLYPH-13EEC;Lo;0;L;;;;;N;;;;;
+13EED;EGYPTIAN HIEROGLYPH-13EED;Lo;0;L;;;;;N;;;;;
+13EEE;EGYPTIAN HIEROGLYPH-13EEE;Lo;0;L;;;;;N;;;;;
+13EEF;EGYPTIAN HIEROGLYPH-13EEF;Lo;0;L;;;;;N;;;;;
+13EF0;EGYPTIAN HIEROGLYPH-13EF0;Lo;0;L;;;;;N;;;;;
+13EF1;EGYPTIAN HIEROGLYPH-13EF1;Lo;0;L;;;;;N;;;;;
+13EF2;EGYPTIAN HIEROGLYPH-13EF2;Lo;0;L;;;;;N;;;;;
+13EF3;EGYPTIAN HIEROGLYPH-13EF3;Lo;0;L;;;;;N;;;;;
+13EF4;EGYPTIAN HIEROGLYPH-13EF4;Lo;0;L;;;;;N;;;;;
+13EF5;EGYPTIAN HIEROGLYPH-13EF5;Lo;0;L;;;;;N;;;;;
+13EF6;EGYPTIAN HIEROGLYPH-13EF6;Lo;0;L;;;;;N;;;;;
+13EF7;EGYPTIAN HIEROGLYPH-13EF7;Lo;0;L;;;;;N;;;;;
+13EF8;EGYPTIAN HIEROGLYPH-13EF8;Lo;0;L;;;;;N;;;;;
+13EF9;EGYPTIAN HIEROGLYPH-13EF9;Lo;0;L;;;;;N;;;;;
+13EFA;EGYPTIAN HIEROGLYPH-13EFA;Lo;0;L;;;;;N;;;;;
+13EFB;EGYPTIAN HIEROGLYPH-13EFB;Lo;0;L;;;;;N;;;;;
+13EFC;EGYPTIAN HIEROGLYPH-13EFC;Lo;0;L;;;;;N;;;;;
+13EFD;EGYPTIAN HIEROGLYPH-13EFD;Lo;0;L;;;;;N;;;;;
+13EFE;EGYPTIAN HIEROGLYPH-13EFE;Lo;0;L;;;;;N;;;;;
+13EFF;EGYPTIAN HIEROGLYPH-13EFF;Lo;0;L;;;;;N;;;;;
+13F00;EGYPTIAN HIEROGLYPH-13F00;Lo;0;L;;;;;N;;;;;
+13F01;EGYPTIAN HIEROGLYPH-13F01;Lo;0;L;;;;;N;;;;;
+13F02;EGYPTIAN HIEROGLYPH-13F02;Lo;0;L;;;;;N;;;;;
+13F03;EGYPTIAN HIEROGLYPH-13F03;Lo;0;L;;;;;N;;;;;
+13F04;EGYPTIAN HIEROGLYPH-13F04;Lo;0;L;;;;;N;;;;;
+13F05;EGYPTIAN HIEROGLYPH-13F05;Lo;0;L;;;;;N;;;;;
+13F06;EGYPTIAN HIEROGLYPH-13F06;Lo;0;L;;;;;N;;;;;
+13F07;EGYPTIAN HIEROGLYPH-13F07;Lo;0;L;;;;;N;;;;;
+13F08;EGYPTIAN HIEROGLYPH-13F08;Lo;0;L;;;;;N;;;;;
+13F09;EGYPTIAN HIEROGLYPH-13F09;Lo;0;L;;;;;N;;;;;
+13F0A;EGYPTIAN HIEROGLYPH-13F0A;Lo;0;L;;;;;N;;;;;
+13F0B;EGYPTIAN HIEROGLYPH-13F0B;Lo;0;L;;;;;N;;;;;
+13F0C;EGYPTIAN HIEROGLYPH-13F0C;Lo;0;L;;;;;N;;;;;
+13F0D;EGYPTIAN HIEROGLYPH-13F0D;Lo;0;L;;;;;N;;;;;
+13F0E;EGYPTIAN HIEROGLYPH-13F0E;Lo;0;L;;;;;N;;;;;
+13F0F;EGYPTIAN HIEROGLYPH-13F0F;Lo;0;L;;;;;N;;;;;
+13F10;EGYPTIAN HIEROGLYPH-13F10;Lo;0;L;;;;;N;;;;;
+13F11;EGYPTIAN HIEROGLYPH-13F11;Lo;0;L;;;;;N;;;;;
+13F12;EGYPTIAN HIEROGLYPH-13F12;Lo;0;L;;;;;N;;;;;
+13F13;EGYPTIAN HIEROGLYPH-13F13;Lo;0;L;;;;;N;;;;;
+13F14;EGYPTIAN HIEROGLYPH-13F14;Lo;0;L;;;;;N;;;;;
+13F15;EGYPTIAN HIEROGLYPH-13F15;Lo;0;L;;;;;N;;;;;
+13F16;EGYPTIAN HIEROGLYPH-13F16;Lo;0;L;;;;;N;;;;;
+13F17;EGYPTIAN HIEROGLYPH-13F17;Lo;0;L;;;;;N;;;;;
+13F18;EGYPTIAN HIEROGLYPH-13F18;Lo;0;L;;;;;N;;;;;
+13F19;EGYPTIAN HIEROGLYPH-13F19;Lo;0;L;;;;;N;;;;;
+13F1A;EGYPTIAN HIEROGLYPH-13F1A;Lo;0;L;;;;;N;;;;;
+13F1B;EGYPTIAN HIEROGLYPH-13F1B;Lo;0;L;;;;;N;;;;;
+13F1C;EGYPTIAN HIEROGLYPH-13F1C;Lo;0;L;;;;;N;;;;;
+13F1D;EGYPTIAN HIEROGLYPH-13F1D;Lo;0;L;;;;;N;;;;;
+13F1E;EGYPTIAN HIEROGLYPH-13F1E;Lo;0;L;;;;;N;;;;;
+13F1F;EGYPTIAN HIEROGLYPH-13F1F;Lo;0;L;;;;;N;;;;;
+13F20;EGYPTIAN HIEROGLYPH-13F20;Lo;0;L;;;;;N;;;;;
+13F21;EGYPTIAN HIEROGLYPH-13F21;Lo;0;L;;;;;N;;;;;
+13F22;EGYPTIAN HIEROGLYPH-13F22;Lo;0;L;;;;;N;;;;;
+13F23;EGYPTIAN HIEROGLYPH-13F23;Lo;0;L;;;;;N;;;;;
+13F24;EGYPTIAN HIEROGLYPH-13F24;Lo;0;L;;;;;N;;;;;
+13F25;EGYPTIAN HIEROGLYPH-13F25;Lo;0;L;;;;;N;;;;;
+13F26;EGYPTIAN HIEROGLYPH-13F26;Lo;0;L;;;;;N;;;;;
+13F27;EGYPTIAN HIEROGLYPH-13F27;Lo;0;L;;;;;N;;;;;
+13F28;EGYPTIAN HIEROGLYPH-13F28;Lo;0;L;;;;;N;;;;;
+13F29;EGYPTIAN HIEROGLYPH-13F29;Lo;0;L;;;;;N;;;;;
+13F2A;EGYPTIAN HIEROGLYPH-13F2A;Lo;0;L;;;;;N;;;;;
+13F2B;EGYPTIAN HIEROGLYPH-13F2B;Lo;0;L;;;;;N;;;;;
+13F2C;EGYPTIAN HIEROGLYPH-13F2C;Lo;0;L;;;;;N;;;;;
+13F2D;EGYPTIAN HIEROGLYPH-13F2D;Lo;0;L;;;;;N;;;;;
+13F2E;EGYPTIAN HIEROGLYPH-13F2E;Lo;0;L;;;;;N;;;;;
+13F2F;EGYPTIAN HIEROGLYPH-13F2F;Lo;0;L;;;;;N;;;;;
+13F30;EGYPTIAN HIEROGLYPH-13F30;Lo;0;L;;;;;N;;;;;
+13F31;EGYPTIAN HIEROGLYPH-13F31;Lo;0;L;;;;;N;;;;;
+13F32;EGYPTIAN HIEROGLYPH-13F32;Lo;0;L;;;;;N;;;;;
+13F33;EGYPTIAN HIEROGLYPH-13F33;Lo;0;L;;;;;N;;;;;
+13F34;EGYPTIAN HIEROGLYPH-13F34;Lo;0;L;;;;;N;;;;;
+13F35;EGYPTIAN HIEROGLYPH-13F35;Lo;0;L;;;;;N;;;;;
+13F36;EGYPTIAN HIEROGLYPH-13F36;Lo;0;L;;;;;N;;;;;
+13F37;EGYPTIAN HIEROGLYPH-13F37;Lo;0;L;;;;;N;;;;;
+13F38;EGYPTIAN HIEROGLYPH-13F38;Lo;0;L;;;;;N;;;;;
+13F39;EGYPTIAN HIEROGLYPH-13F39;Lo;0;L;;;;;N;;;;;
+13F3A;EGYPTIAN HIEROGLYPH-13F3A;Lo;0;L;;;;;N;;;;;
+13F3B;EGYPTIAN HIEROGLYPH-13F3B;Lo;0;L;;;;;N;;;;;
+13F3C;EGYPTIAN HIEROGLYPH-13F3C;Lo;0;L;;;;;N;;;;;
+13F3D;EGYPTIAN HIEROGLYPH-13F3D;Lo;0;L;;;;;N;;;;;
+13F3E;EGYPTIAN HIEROGLYPH-13F3E;Lo;0;L;;;;;N;;;;;
+13F3F;EGYPTIAN HIEROGLYPH-13F3F;Lo;0;L;;;;;N;;;;;
+13F40;EGYPTIAN HIEROGLYPH-13F40;Lo;0;L;;;;;N;;;;;
+13F41;EGYPTIAN HIEROGLYPH-13F41;Lo;0;L;;;;;N;;;;;
+13F42;EGYPTIAN HIEROGLYPH-13F42;Lo;0;L;;;;;N;;;;;
+13F43;EGYPTIAN HIEROGLYPH-13F43;Lo;0;L;;;;;N;;;;;
+13F44;EGYPTIAN HIEROGLYPH-13F44;Lo;0;L;;;;;N;;;;;
+13F45;EGYPTIAN HIEROGLYPH-13F45;Lo;0;L;;;;;N;;;;;
+13F46;EGYPTIAN HIEROGLYPH-13F46;Lo;0;L;;;;;N;;;;;
+13F47;EGYPTIAN HIEROGLYPH-13F47;Lo;0;L;;;;;N;;;;;
+13F48;EGYPTIAN HIEROGLYPH-13F48;Lo;0;L;;;;;N;;;;;
+13F49;EGYPTIAN HIEROGLYPH-13F49;Lo;0;L;;;;;N;;;;;
+13F4A;EGYPTIAN HIEROGLYPH-13F4A;Lo;0;L;;;;;N;;;;;
+13F4B;EGYPTIAN HIEROGLYPH-13F4B;Lo;0;L;;;;;N;;;;;
+13F4C;EGYPTIAN HIEROGLYPH-13F4C;Lo;0;L;;;;;N;;;;;
+13F4D;EGYPTIAN HIEROGLYPH-13F4D;Lo;0;L;;;;;N;;;;;
+13F4E;EGYPTIAN HIEROGLYPH-13F4E;Lo;0;L;;;;;N;;;;;
+13F4F;EGYPTIAN HIEROGLYPH-13F4F;Lo;0;L;;;;;N;;;;;
+13F50;EGYPTIAN HIEROGLYPH-13F50;Lo;0;L;;;;;N;;;;;
+13F51;EGYPTIAN HIEROGLYPH-13F51;Lo;0;L;;;;;N;;;;;
+13F52;EGYPTIAN HIEROGLYPH-13F52;Lo;0;L;;;;;N;;;;;
+13F53;EGYPTIAN HIEROGLYPH-13F53;Lo;0;L;;;;;N;;;;;
+13F54;EGYPTIAN HIEROGLYPH-13F54;Lo;0;L;;;;;N;;;;;
+13F55;EGYPTIAN HIEROGLYPH-13F55;Lo;0;L;;;;;N;;;;;
+13F56;EGYPTIAN HIEROGLYPH-13F56;Lo;0;L;;;;;N;;;;;
+13F57;EGYPTIAN HIEROGLYPH-13F57;Lo;0;L;;;;;N;;;;;
+13F58;EGYPTIAN HIEROGLYPH-13F58;Lo;0;L;;;;;N;;;;;
+13F59;EGYPTIAN HIEROGLYPH-13F59;Lo;0;L;;;;;N;;;;;
+13F5A;EGYPTIAN HIEROGLYPH-13F5A;Lo;0;L;;;;;N;;;;;
+13F5B;EGYPTIAN HIEROGLYPH-13F5B;Lo;0;L;;;;;N;;;;;
+13F5C;EGYPTIAN HIEROGLYPH-13F5C;Lo;0;L;;;;;N;;;;;
+13F5D;EGYPTIAN HIEROGLYPH-13F5D;Lo;0;L;;;;;N;;;;;
+13F5E;EGYPTIAN HIEROGLYPH-13F5E;Lo;0;L;;;;;N;;;;;
+13F5F;EGYPTIAN HIEROGLYPH-13F5F;Lo;0;L;;;;;N;;;;;
+13F60;EGYPTIAN HIEROGLYPH-13F60;Lo;0;L;;;;;N;;;;;
+13F61;EGYPTIAN HIEROGLYPH-13F61;Lo;0;L;;;;;N;;;;;
+13F62;EGYPTIAN HIEROGLYPH-13F62;Lo;0;L;;;;;N;;;;;
+13F63;EGYPTIAN HIEROGLYPH-13F63;Lo;0;L;;;;;N;;;;;
+13F64;EGYPTIAN HIEROGLYPH-13F64;Lo;0;L;;;;;N;;;;;
+13F65;EGYPTIAN HIEROGLYPH-13F65;Lo;0;L;;;;;N;;;;;
+13F66;EGYPTIAN HIEROGLYPH-13F66;Lo;0;L;;;;;N;;;;;
+13F67;EGYPTIAN HIEROGLYPH-13F67;Lo;0;L;;;;;N;;;;;
+13F68;EGYPTIAN HIEROGLYPH-13F68;Lo;0;L;;;;;N;;;;;
+13F69;EGYPTIAN HIEROGLYPH-13F69;Lo;0;L;;;;;N;;;;;
+13F6A;EGYPTIAN HIEROGLYPH-13F6A;Lo;0;L;;;;;N;;;;;
+13F6B;EGYPTIAN HIEROGLYPH-13F6B;Lo;0;L;;;;;N;;;;;
+13F6C;EGYPTIAN HIEROGLYPH-13F6C;Lo;0;L;;;;;N;;;;;
+13F6D;EGYPTIAN HIEROGLYPH-13F6D;Lo;0;L;;;;;N;;;;;
+13F6E;EGYPTIAN HIEROGLYPH-13F6E;Lo;0;L;;;;;N;;;;;
+13F6F;EGYPTIAN HIEROGLYPH-13F6F;Lo;0;L;;;;;N;;;;;
+13F70;EGYPTIAN HIEROGLYPH-13F70;Lo;0;L;;;;;N;;;;;
+13F71;EGYPTIAN HIEROGLYPH-13F71;Lo;0;L;;;;;N;;;;;
+13F72;EGYPTIAN HIEROGLYPH-13F72;Lo;0;L;;;;;N;;;;;
+13F73;EGYPTIAN HIEROGLYPH-13F73;Lo;0;L;;;;;N;;;;;
+13F74;EGYPTIAN HIEROGLYPH-13F74;Lo;0;L;;;;;N;;;;;
+13F75;EGYPTIAN HIEROGLYPH-13F75;Lo;0;L;;;;;N;;;;;
+13F76;EGYPTIAN HIEROGLYPH-13F76;Lo;0;L;;;;;N;;;;;
+13F77;EGYPTIAN HIEROGLYPH-13F77;Lo;0;L;;;;;N;;;;;
+13F78;EGYPTIAN HIEROGLYPH-13F78;Lo;0;L;;;;;N;;;;;
+13F79;EGYPTIAN HIEROGLYPH-13F79;Lo;0;L;;;;;N;;;;;
+13F7A;EGYPTIAN HIEROGLYPH-13F7A;Lo;0;L;;;;;N;;;;;
+13F7B;EGYPTIAN HIEROGLYPH-13F7B;Lo;0;L;;;;;N;;;;;
+13F7C;EGYPTIAN HIEROGLYPH-13F7C;Lo;0;L;;;;;N;;;;;
+13F7D;EGYPTIAN HIEROGLYPH-13F7D;Lo;0;L;;;;;N;;;;;
+13F7E;EGYPTIAN HIEROGLYPH-13F7E;Lo;0;L;;;;;N;;;;;
+13F7F;EGYPTIAN HIEROGLYPH-13F7F;Lo;0;L;;;;;N;;;;;
+13F80;EGYPTIAN HIEROGLYPH-13F80;Lo;0;L;;;;;N;;;;;
+13F81;EGYPTIAN HIEROGLYPH-13F81;Lo;0;L;;;;;N;;;;;
+13F82;EGYPTIAN HIEROGLYPH-13F82;Lo;0;L;;;;;N;;;;;
+13F83;EGYPTIAN HIEROGLYPH-13F83;Lo;0;L;;;;;N;;;;;
+13F84;EGYPTIAN HIEROGLYPH-13F84;Lo;0;L;;;;;N;;;;;
+13F85;EGYPTIAN HIEROGLYPH-13F85;Lo;0;L;;;;;N;;;;;
+13F86;EGYPTIAN HIEROGLYPH-13F86;Lo;0;L;;;;;N;;;;;
+13F87;EGYPTIAN HIEROGLYPH-13F87;Lo;0;L;;;;;N;;;;;
+13F88;EGYPTIAN HIEROGLYPH-13F88;Lo;0;L;;;;;N;;;;;
+13F89;EGYPTIAN HIEROGLYPH-13F89;Lo;0;L;;;;;N;;;;;
+13F8A;EGYPTIAN HIEROGLYPH-13F8A;Lo;0;L;;;;;N;;;;;
+13F8B;EGYPTIAN HIEROGLYPH-13F8B;Lo;0;L;;;;;N;;;;;
+13F8C;EGYPTIAN HIEROGLYPH-13F8C;Lo;0;L;;;;;N;;;;;
+13F8D;EGYPTIAN HIEROGLYPH-13F8D;Lo;0;L;;;;;N;;;;;
+13F8E;EGYPTIAN HIEROGLYPH-13F8E;Lo;0;L;;;;;N;;;;;
+13F8F;EGYPTIAN HIEROGLYPH-13F8F;Lo;0;L;;;;;N;;;;;
+13F90;EGYPTIAN HIEROGLYPH-13F90;Lo;0;L;;;;;N;;;;;
+13F91;EGYPTIAN HIEROGLYPH-13F91;Lo;0;L;;;;;N;;;;;
+13F92;EGYPTIAN HIEROGLYPH-13F92;Lo;0;L;;;;;N;;;;;
+13F93;EGYPTIAN HIEROGLYPH-13F93;Lo;0;L;;;;;N;;;;;
+13F94;EGYPTIAN HIEROGLYPH-13F94;Lo;0;L;;;;;N;;;;;
+13F95;EGYPTIAN HIEROGLYPH-13F95;Lo;0;L;;;;;N;;;;;
+13F96;EGYPTIAN HIEROGLYPH-13F96;Lo;0;L;;;;;N;;;;;
+13F97;EGYPTIAN HIEROGLYPH-13F97;Lo;0;L;;;;;N;;;;;
+13F98;EGYPTIAN HIEROGLYPH-13F98;Lo;0;L;;;;;N;;;;;
+13F99;EGYPTIAN HIEROGLYPH-13F99;Lo;0;L;;;;;N;;;;;
+13F9A;EGYPTIAN HIEROGLYPH-13F9A;Lo;0;L;;;;;N;;;;;
+13F9B;EGYPTIAN HIEROGLYPH-13F9B;Lo;0;L;;;;;N;;;;;
+13F9C;EGYPTIAN HIEROGLYPH-13F9C;Lo;0;L;;;;;N;;;;;
+13F9D;EGYPTIAN HIEROGLYPH-13F9D;Lo;0;L;;;;;N;;;;;
+13F9E;EGYPTIAN HIEROGLYPH-13F9E;Lo;0;L;;;;;N;;;;;
+13F9F;EGYPTIAN HIEROGLYPH-13F9F;Lo;0;L;;;;;N;;;;;
+13FA0;EGYPTIAN HIEROGLYPH-13FA0;Lo;0;L;;;;;N;;;;;
+13FA1;EGYPTIAN HIEROGLYPH-13FA1;Lo;0;L;;;;;N;;;;;
+13FA2;EGYPTIAN HIEROGLYPH-13FA2;Lo;0;L;;;;;N;;;;;
+13FA3;EGYPTIAN HIEROGLYPH-13FA3;Lo;0;L;;;;;N;;;;;
+13FA4;EGYPTIAN HIEROGLYPH-13FA4;Lo;0;L;;;;;N;;;;;
+13FA5;EGYPTIAN HIEROGLYPH-13FA5;Lo;0;L;;;;;N;;;;;
+13FA6;EGYPTIAN HIEROGLYPH-13FA6;Lo;0;L;;;;;N;;;;;
+13FA7;EGYPTIAN HIEROGLYPH-13FA7;Lo;0;L;;;;;N;;;;;
+13FA8;EGYPTIAN HIEROGLYPH-13FA8;Lo;0;L;;;;;N;;;;;
+13FA9;EGYPTIAN HIEROGLYPH-13FA9;Lo;0;L;;;;;N;;;;;
+13FAA;EGYPTIAN HIEROGLYPH-13FAA;Lo;0;L;;;;;N;;;;;
+13FAB;EGYPTIAN HIEROGLYPH-13FAB;Lo;0;L;;;;;N;;;;;
+13FAC;EGYPTIAN HIEROGLYPH-13FAC;Lo;0;L;;;;;N;;;;;
+13FAD;EGYPTIAN HIEROGLYPH-13FAD;Lo;0;L;;;;;N;;;;;
+13FAE;EGYPTIAN HIEROGLYPH-13FAE;Lo;0;L;;;;;N;;;;;
+13FAF;EGYPTIAN HIEROGLYPH-13FAF;Lo;0;L;;;;;N;;;;;
+13FB0;EGYPTIAN HIEROGLYPH-13FB0;Lo;0;L;;;;;N;;;;;
+13FB1;EGYPTIAN HIEROGLYPH-13FB1;Lo;0;L;;;;;N;;;;;
+13FB2;EGYPTIAN HIEROGLYPH-13FB2;Lo;0;L;;;;;N;;;;;
+13FB3;EGYPTIAN HIEROGLYPH-13FB3;Lo;0;L;;;;;N;;;;;
+13FB4;EGYPTIAN HIEROGLYPH-13FB4;Lo;0;L;;;;;N;;;;;
+13FB5;EGYPTIAN HIEROGLYPH-13FB5;Lo;0;L;;;;;N;;;;;
+13FB6;EGYPTIAN HIEROGLYPH-13FB6;Lo;0;L;;;;;N;;;;;
+13FB7;EGYPTIAN HIEROGLYPH-13FB7;Lo;0;L;;;;;N;;;;;
+13FB8;EGYPTIAN HIEROGLYPH-13FB8;Lo;0;L;;;;;N;;;;;
+13FB9;EGYPTIAN HIEROGLYPH-13FB9;Lo;0;L;;;;;N;;;;;
+13FBA;EGYPTIAN HIEROGLYPH-13FBA;Lo;0;L;;;;;N;;;;;
+13FBB;EGYPTIAN HIEROGLYPH-13FBB;Lo;0;L;;;;;N;;;;;
+13FBC;EGYPTIAN HIEROGLYPH-13FBC;Lo;0;L;;;;;N;;;;;
+13FBD;EGYPTIAN HIEROGLYPH-13FBD;Lo;0;L;;;;;N;;;;;
+13FBE;EGYPTIAN HIEROGLYPH-13FBE;Lo;0;L;;;;;N;;;;;
+13FBF;EGYPTIAN HIEROGLYPH-13FBF;Lo;0;L;;;;;N;;;;;
+13FC0;EGYPTIAN HIEROGLYPH-13FC0;Lo;0;L;;;;;N;;;;;
+13FC1;EGYPTIAN HIEROGLYPH-13FC1;Lo;0;L;;;;;N;;;;;
+13FC2;EGYPTIAN HIEROGLYPH-13FC2;Lo;0;L;;;;;N;;;;;
+13FC3;EGYPTIAN HIEROGLYPH-13FC3;Lo;0;L;;;;;N;;;;;
+13FC4;EGYPTIAN HIEROGLYPH-13FC4;Lo;0;L;;;;;N;;;;;
+13FC5;EGYPTIAN HIEROGLYPH-13FC5;Lo;0;L;;;;;N;;;;;
+13FC6;EGYPTIAN HIEROGLYPH-13FC6;Lo;0;L;;;;;N;;;;;
+13FC7;EGYPTIAN HIEROGLYPH-13FC7;Lo;0;L;;;;;N;;;;;
+13FC8;EGYPTIAN HIEROGLYPH-13FC8;Lo;0;L;;;;;N;;;;;
+13FC9;EGYPTIAN HIEROGLYPH-13FC9;Lo;0;L;;;;;N;;;;;
+13FCA;EGYPTIAN HIEROGLYPH-13FCA;Lo;0;L;;;;;N;;;;;
+13FCB;EGYPTIAN HIEROGLYPH-13FCB;Lo;0;L;;;;;N;;;;;
+13FCC;EGYPTIAN HIEROGLYPH-13FCC;Lo;0;L;;;;;N;;;;;
+13FCD;EGYPTIAN HIEROGLYPH-13FCD;Lo;0;L;;;;;N;;;;;
+13FCE;EGYPTIAN HIEROGLYPH-13FCE;Lo;0;L;;;;;N;;;;;
+13FCF;EGYPTIAN HIEROGLYPH-13FCF;Lo;0;L;;;;;N;;;;;
+13FD0;EGYPTIAN HIEROGLYPH-13FD0;Lo;0;L;;;;;N;;;;;
+13FD1;EGYPTIAN HIEROGLYPH-13FD1;Lo;0;L;;;;;N;;;;;
+13FD2;EGYPTIAN HIEROGLYPH-13FD2;Lo;0;L;;;;;N;;;;;
+13FD3;EGYPTIAN HIEROGLYPH-13FD3;Lo;0;L;;;;;N;;;;;
+13FD4;EGYPTIAN HIEROGLYPH-13FD4;Lo;0;L;;;;;N;;;;;
+13FD5;EGYPTIAN HIEROGLYPH-13FD5;Lo;0;L;;;;;N;;;;;
+13FD6;EGYPTIAN HIEROGLYPH-13FD6;Lo;0;L;;;;;N;;;;;
+13FD7;EGYPTIAN HIEROGLYPH-13FD7;Lo;0;L;;;;;N;;;;;
+13FD8;EGYPTIAN HIEROGLYPH-13FD8;Lo;0;L;;;;;N;;;;;
+13FD9;EGYPTIAN HIEROGLYPH-13FD9;Lo;0;L;;;;;N;;;;;
+13FDA;EGYPTIAN HIEROGLYPH-13FDA;Lo;0;L;;;;;N;;;;;
+13FDB;EGYPTIAN HIEROGLYPH-13FDB;Lo;0;L;;;;;N;;;;;
+13FDC;EGYPTIAN HIEROGLYPH-13FDC;Lo;0;L;;;;;N;;;;;
+13FDD;EGYPTIAN HIEROGLYPH-13FDD;Lo;0;L;;;;;N;;;;;
+13FDE;EGYPTIAN HIEROGLYPH-13FDE;Lo;0;L;;;;;N;;;;;
+13FDF;EGYPTIAN HIEROGLYPH-13FDF;Lo;0;L;;;;;N;;;;;
+13FE0;EGYPTIAN HIEROGLYPH-13FE0;Lo;0;L;;;;;N;;;;;
+13FE1;EGYPTIAN HIEROGLYPH-13FE1;Lo;0;L;;;;;N;;;;;
+13FE2;EGYPTIAN HIEROGLYPH-13FE2;Lo;0;L;;;;;N;;;;;
+13FE3;EGYPTIAN HIEROGLYPH-13FE3;Lo;0;L;;;;;N;;;;;
+13FE4;EGYPTIAN HIEROGLYPH-13FE4;Lo;0;L;;;;;N;;;;;
+13FE5;EGYPTIAN HIEROGLYPH-13FE5;Lo;0;L;;;;;N;;;;;
+13FE6;EGYPTIAN HIEROGLYPH-13FE6;Lo;0;L;;;;;N;;;;;
+13FE7;EGYPTIAN HIEROGLYPH-13FE7;Lo;0;L;;;;;N;;;;;
+13FE8;EGYPTIAN HIEROGLYPH-13FE8;Lo;0;L;;;;;N;;;;;
+13FE9;EGYPTIAN HIEROGLYPH-13FE9;Lo;0;L;;;;;N;;;;;
+13FEA;EGYPTIAN HIEROGLYPH-13FEA;Lo;0;L;;;;;N;;;;;
+13FEB;EGYPTIAN HIEROGLYPH-13FEB;Lo;0;L;;;;;N;;;;;
+13FEC;EGYPTIAN HIEROGLYPH-13FEC;Lo;0;L;;;;;N;;;;;
+13FED;EGYPTIAN HIEROGLYPH-13FED;Lo;0;L;;;;;N;;;;;
+13FEE;EGYPTIAN HIEROGLYPH-13FEE;Lo;0;L;;;;;N;;;;;
+13FEF;EGYPTIAN HIEROGLYPH-13FEF;Lo;0;L;;;;;N;;;;;
+13FF0;EGYPTIAN HIEROGLYPH-13FF0;Lo;0;L;;;;;N;;;;;
+13FF1;EGYPTIAN HIEROGLYPH-13FF1;Lo;0;L;;;;;N;;;;;
+13FF2;EGYPTIAN HIEROGLYPH-13FF2;Lo;0;L;;;;;N;;;;;
+13FF3;EGYPTIAN HIEROGLYPH-13FF3;Lo;0;L;;;;;N;;;;;
+13FF4;EGYPTIAN HIEROGLYPH-13FF4;Lo;0;L;;;;;N;;;;;
+13FF5;EGYPTIAN HIEROGLYPH-13FF5;Lo;0;L;;;;;N;;;;;
+13FF6;EGYPTIAN HIEROGLYPH-13FF6;Lo;0;L;;;;;N;;;;;
+13FF7;EGYPTIAN HIEROGLYPH-13FF7;Lo;0;L;;;;;N;;;;;
+13FF8;EGYPTIAN HIEROGLYPH-13FF8;Lo;0;L;;;;;N;;;;;
+13FF9;EGYPTIAN HIEROGLYPH-13FF9;Lo;0;L;;;;;N;;;;;
+13FFA;EGYPTIAN HIEROGLYPH-13FFA;Lo;0;L;;;;;N;;;;;
+13FFB;EGYPTIAN HIEROGLYPH-13FFB;Lo;0;L;;;;;N;;;;;
+13FFC;EGYPTIAN HIEROGLYPH-13FFC;Lo;0;L;;;;;N;;;;;
+13FFD;EGYPTIAN HIEROGLYPH-13FFD;Lo;0;L;;;;;N;;;;;
+13FFE;EGYPTIAN HIEROGLYPH-13FFE;Lo;0;L;;;;;N;;;;;
+13FFF;EGYPTIAN HIEROGLYPH-13FFF;Lo;0;L;;;;;N;;;;;
+14000;EGYPTIAN HIEROGLYPH-14000;Lo;0;L;;;;;N;;;;;
+14001;EGYPTIAN HIEROGLYPH-14001;Lo;0;L;;;;;N;;;;;
+14002;EGYPTIAN HIEROGLYPH-14002;Lo;0;L;;;;;N;;;;;
+14003;EGYPTIAN HIEROGLYPH-14003;Lo;0;L;;;;;N;;;;;
+14004;EGYPTIAN HIEROGLYPH-14004;Lo;0;L;;;;;N;;;;;
+14005;EGYPTIAN HIEROGLYPH-14005;Lo;0;L;;;;;N;;;;;
+14006;EGYPTIAN HIEROGLYPH-14006;Lo;0;L;;;;;N;;;;;
+14007;EGYPTIAN HIEROGLYPH-14007;Lo;0;L;;;;;N;;;;;
+14008;EGYPTIAN HIEROGLYPH-14008;Lo;0;L;;;;;N;;;;;
+14009;EGYPTIAN HIEROGLYPH-14009;Lo;0;L;;;;;N;;;;;
+1400A;EGYPTIAN HIEROGLYPH-1400A;Lo;0;L;;;;;N;;;;;
+1400B;EGYPTIAN HIEROGLYPH-1400B;Lo;0;L;;;;;N;;;;;
+1400C;EGYPTIAN HIEROGLYPH-1400C;Lo;0;L;;;;;N;;;;;
+1400D;EGYPTIAN HIEROGLYPH-1400D;Lo;0;L;;;;;N;;;;;
+1400E;EGYPTIAN HIEROGLYPH-1400E;Lo;0;L;;;;;N;;;;;
+1400F;EGYPTIAN HIEROGLYPH-1400F;Lo;0;L;;;;;N;;;;;
+14010;EGYPTIAN HIEROGLYPH-14010;Lo;0;L;;;;;N;;;;;
+14011;EGYPTIAN HIEROGLYPH-14011;Lo;0;L;;;;;N;;;;;
+14012;EGYPTIAN HIEROGLYPH-14012;Lo;0;L;;;;;N;;;;;
+14013;EGYPTIAN HIEROGLYPH-14013;Lo;0;L;;;;;N;;;;;
+14014;EGYPTIAN HIEROGLYPH-14014;Lo;0;L;;;;;N;;;;;
+14015;EGYPTIAN HIEROGLYPH-14015;Lo;0;L;;;;;N;;;;;
+14016;EGYPTIAN HIEROGLYPH-14016;Lo;0;L;;;;;N;;;;;
+14017;EGYPTIAN HIEROGLYPH-14017;Lo;0;L;;;;;N;;;;;
+14018;EGYPTIAN HIEROGLYPH-14018;Lo;0;L;;;;;N;;;;;
+14019;EGYPTIAN HIEROGLYPH-14019;Lo;0;L;;;;;N;;;;;
+1401A;EGYPTIAN HIEROGLYPH-1401A;Lo;0;L;;;;;N;;;;;
+1401B;EGYPTIAN HIEROGLYPH-1401B;Lo;0;L;;;;;N;;;;;
+1401C;EGYPTIAN HIEROGLYPH-1401C;Lo;0;L;;;;;N;;;;;
+1401D;EGYPTIAN HIEROGLYPH-1401D;Lo;0;L;;;;;N;;;;;
+1401E;EGYPTIAN HIEROGLYPH-1401E;Lo;0;L;;;;;N;;;;;
+1401F;EGYPTIAN HIEROGLYPH-1401F;Lo;0;L;;;;;N;;;;;
+14020;EGYPTIAN HIEROGLYPH-14020;Lo;0;L;;;;;N;;;;;
+14021;EGYPTIAN HIEROGLYPH-14021;Lo;0;L;;;;;N;;;;;
+14022;EGYPTIAN HIEROGLYPH-14022;Lo;0;L;;;;;N;;;;;
+14023;EGYPTIAN HIEROGLYPH-14023;Lo;0;L;;;;;N;;;;;
+14024;EGYPTIAN HIEROGLYPH-14024;Lo;0;L;;;;;N;;;;;
+14025;EGYPTIAN HIEROGLYPH-14025;Lo;0;L;;;;;N;;;;;
+14026;EGYPTIAN HIEROGLYPH-14026;Lo;0;L;;;;;N;;;;;
+14027;EGYPTIAN HIEROGLYPH-14027;Lo;0;L;;;;;N;;;;;
+14028;EGYPTIAN HIEROGLYPH-14028;Lo;0;L;;;;;N;;;;;
+14029;EGYPTIAN HIEROGLYPH-14029;Lo;0;L;;;;;N;;;;;
+1402A;EGYPTIAN HIEROGLYPH-1402A;Lo;0;L;;;;;N;;;;;
+1402B;EGYPTIAN HIEROGLYPH-1402B;Lo;0;L;;;;;N;;;;;
+1402C;EGYPTIAN HIEROGLYPH-1402C;Lo;0;L;;;;;N;;;;;
+1402D;EGYPTIAN HIEROGLYPH-1402D;Lo;0;L;;;;;N;;;;;
+1402E;EGYPTIAN HIEROGLYPH-1402E;Lo;0;L;;;;;N;;;;;
+1402F;EGYPTIAN HIEROGLYPH-1402F;Lo;0;L;;;;;N;;;;;
+14030;EGYPTIAN HIEROGLYPH-14030;Lo;0;L;;;;;N;;;;;
+14031;EGYPTIAN HIEROGLYPH-14031;Lo;0;L;;;;;N;;;;;
+14032;EGYPTIAN HIEROGLYPH-14032;Lo;0;L;;;;;N;;;;;
+14033;EGYPTIAN HIEROGLYPH-14033;Lo;0;L;;;;;N;;;;;
+14034;EGYPTIAN HIEROGLYPH-14034;Lo;0;L;;;;;N;;;;;
+14035;EGYPTIAN HIEROGLYPH-14035;Lo;0;L;;;;;N;;;;;
+14036;EGYPTIAN HIEROGLYPH-14036;Lo;0;L;;;;;N;;;;;
+14037;EGYPTIAN HIEROGLYPH-14037;Lo;0;L;;;;;N;;;;;
+14038;EGYPTIAN HIEROGLYPH-14038;Lo;0;L;;;;;N;;;;;
+14039;EGYPTIAN HIEROGLYPH-14039;Lo;0;L;;;;;N;;;;;
+1403A;EGYPTIAN HIEROGLYPH-1403A;Lo;0;L;;;;;N;;;;;
+1403B;EGYPTIAN HIEROGLYPH-1403B;Lo;0;L;;;;;N;;;;;
+1403C;EGYPTIAN HIEROGLYPH-1403C;Lo;0;L;;;;;N;;;;;
+1403D;EGYPTIAN HIEROGLYPH-1403D;Lo;0;L;;;;;N;;;;;
+1403E;EGYPTIAN HIEROGLYPH-1403E;Lo;0;L;;;;;N;;;;;
+1403F;EGYPTIAN HIEROGLYPH-1403F;Lo;0;L;;;;;N;;;;;
+14040;EGYPTIAN HIEROGLYPH-14040;Lo;0;L;;;;;N;;;;;
+14041;EGYPTIAN HIEROGLYPH-14041;Lo;0;L;;;;;N;;;;;
+14042;EGYPTIAN HIEROGLYPH-14042;Lo;0;L;;;;;N;;;;;
+14043;EGYPTIAN HIEROGLYPH-14043;Lo;0;L;;;;;N;;;;;
+14044;EGYPTIAN HIEROGLYPH-14044;Lo;0;L;;;;;N;;;;;
+14045;EGYPTIAN HIEROGLYPH-14045;Lo;0;L;;;;;N;;;;;
+14046;EGYPTIAN HIEROGLYPH-14046;Lo;0;L;;;;;N;;;;;
+14047;EGYPTIAN HIEROGLYPH-14047;Lo;0;L;;;;;N;;;;;
+14048;EGYPTIAN HIEROGLYPH-14048;Lo;0;L;;;;;N;;;;;
+14049;EGYPTIAN HIEROGLYPH-14049;Lo;0;L;;;;;N;;;;;
+1404A;EGYPTIAN HIEROGLYPH-1404A;Lo;0;L;;;;;N;;;;;
+1404B;EGYPTIAN HIEROGLYPH-1404B;Lo;0;L;;;;;N;;;;;
+1404C;EGYPTIAN HIEROGLYPH-1404C;Lo;0;L;;;;;N;;;;;
+1404D;EGYPTIAN HIEROGLYPH-1404D;Lo;0;L;;;;;N;;;;;
+1404E;EGYPTIAN HIEROGLYPH-1404E;Lo;0;L;;;;;N;;;;;
+1404F;EGYPTIAN HIEROGLYPH-1404F;Lo;0;L;;;;;N;;;;;
+14050;EGYPTIAN HIEROGLYPH-14050;Lo;0;L;;;;;N;;;;;
+14051;EGYPTIAN HIEROGLYPH-14051;Lo;0;L;;;;;N;;;;;
+14052;EGYPTIAN HIEROGLYPH-14052;Lo;0;L;;;;;N;;;;;
+14053;EGYPTIAN HIEROGLYPH-14053;Lo;0;L;;;;;N;;;;;
+14054;EGYPTIAN HIEROGLYPH-14054;Lo;0;L;;;;;N;;;;;
+14055;EGYPTIAN HIEROGLYPH-14055;Lo;0;L;;;;;N;;;;;
+14056;EGYPTIAN HIEROGLYPH-14056;Lo;0;L;;;;;N;;;;;
+14057;EGYPTIAN HIEROGLYPH-14057;Lo;0;L;;;;;N;;;;;
+14058;EGYPTIAN HIEROGLYPH-14058;Lo;0;L;;;;;N;;;;;
+14059;EGYPTIAN HIEROGLYPH-14059;Lo;0;L;;;;;N;;;;;
+1405A;EGYPTIAN HIEROGLYPH-1405A;Lo;0;L;;;;;N;;;;;
+1405B;EGYPTIAN HIEROGLYPH-1405B;Lo;0;L;;;;;N;;;;;
+1405C;EGYPTIAN HIEROGLYPH-1405C;Lo;0;L;;;;;N;;;;;
+1405D;EGYPTIAN HIEROGLYPH-1405D;Lo;0;L;;;;;N;;;;;
+1405E;EGYPTIAN HIEROGLYPH-1405E;Lo;0;L;;;;;N;;;;;
+1405F;EGYPTIAN HIEROGLYPH-1405F;Lo;0;L;;;;;N;;;;;
+14060;EGYPTIAN HIEROGLYPH-14060;Lo;0;L;;;;;N;;;;;
+14061;EGYPTIAN HIEROGLYPH-14061;Lo;0;L;;;;;N;;;;;
+14062;EGYPTIAN HIEROGLYPH-14062;Lo;0;L;;;;;N;;;;;
+14063;EGYPTIAN HIEROGLYPH-14063;Lo;0;L;;;;;N;;;;;
+14064;EGYPTIAN HIEROGLYPH-14064;Lo;0;L;;;;;N;;;;;
+14065;EGYPTIAN HIEROGLYPH-14065;Lo;0;L;;;;;N;;;;;
+14066;EGYPTIAN HIEROGLYPH-14066;Lo;0;L;;;;;N;;;;;
+14067;EGYPTIAN HIEROGLYPH-14067;Lo;0;L;;;;;N;;;;;
+14068;EGYPTIAN HIEROGLYPH-14068;Lo;0;L;;;;;N;;;;;
+14069;EGYPTIAN HIEROGLYPH-14069;Lo;0;L;;;;;N;;;;;
+1406A;EGYPTIAN HIEROGLYPH-1406A;Lo;0;L;;;;;N;;;;;
+1406B;EGYPTIAN HIEROGLYPH-1406B;Lo;0;L;;;;;N;;;;;
+1406C;EGYPTIAN HIEROGLYPH-1406C;Lo;0;L;;;;;N;;;;;
+1406D;EGYPTIAN HIEROGLYPH-1406D;Lo;0;L;;;;;N;;;;;
+1406E;EGYPTIAN HIEROGLYPH-1406E;Lo;0;L;;;;;N;;;;;
+1406F;EGYPTIAN HIEROGLYPH-1406F;Lo;0;L;;;;;N;;;;;
+14070;EGYPTIAN HIEROGLYPH-14070;Lo;0;L;;;;;N;;;;;
+14071;EGYPTIAN HIEROGLYPH-14071;Lo;0;L;;;;;N;;;;;
+14072;EGYPTIAN HIEROGLYPH-14072;Lo;0;L;;;;;N;;;;;
+14073;EGYPTIAN HIEROGLYPH-14073;Lo;0;L;;;;;N;;;;;
+14074;EGYPTIAN HIEROGLYPH-14074;Lo;0;L;;;;;N;;;;;
+14075;EGYPTIAN HIEROGLYPH-14075;Lo;0;L;;;;;N;;;;;
+14076;EGYPTIAN HIEROGLYPH-14076;Lo;0;L;;;;;N;;;;;
+14077;EGYPTIAN HIEROGLYPH-14077;Lo;0;L;;;;;N;;;;;
+14078;EGYPTIAN HIEROGLYPH-14078;Lo;0;L;;;;;N;;;;;
+14079;EGYPTIAN HIEROGLYPH-14079;Lo;0;L;;;;;N;;;;;
+1407A;EGYPTIAN HIEROGLYPH-1407A;Lo;0;L;;;;;N;;;;;
+1407B;EGYPTIAN HIEROGLYPH-1407B;Lo;0;L;;;;;N;;;;;
+1407C;EGYPTIAN HIEROGLYPH-1407C;Lo;0;L;;;;;N;;;;;
+1407D;EGYPTIAN HIEROGLYPH-1407D;Lo;0;L;;;;;N;;;;;
+1407E;EGYPTIAN HIEROGLYPH-1407E;Lo;0;L;;;;;N;;;;;
+1407F;EGYPTIAN HIEROGLYPH-1407F;Lo;0;L;;;;;N;;;;;
+14080;EGYPTIAN HIEROGLYPH-14080;Lo;0;L;;;;;N;;;;;
+14081;EGYPTIAN HIEROGLYPH-14081;Lo;0;L;;;;;N;;;;;
+14082;EGYPTIAN HIEROGLYPH-14082;Lo;0;L;;;;;N;;;;;
+14083;EGYPTIAN HIEROGLYPH-14083;Lo;0;L;;;;;N;;;;;
+14084;EGYPTIAN HIEROGLYPH-14084;Lo;0;L;;;;;N;;;;;
+14085;EGYPTIAN HIEROGLYPH-14085;Lo;0;L;;;;;N;;;;;
+14086;EGYPTIAN HIEROGLYPH-14086;Lo;0;L;;;;;N;;;;;
+14087;EGYPTIAN HIEROGLYPH-14087;Lo;0;L;;;;;N;;;;;
+14088;EGYPTIAN HIEROGLYPH-14088;Lo;0;L;;;;;N;;;;;
+14089;EGYPTIAN HIEROGLYPH-14089;Lo;0;L;;;;;N;;;;;
+1408A;EGYPTIAN HIEROGLYPH-1408A;Lo;0;L;;;;;N;;;;;
+1408B;EGYPTIAN HIEROGLYPH-1408B;Lo;0;L;;;;;N;;;;;
+1408C;EGYPTIAN HIEROGLYPH-1408C;Lo;0;L;;;;;N;;;;;
+1408D;EGYPTIAN HIEROGLYPH-1408D;Lo;0;L;;;;;N;;;;;
+1408E;EGYPTIAN HIEROGLYPH-1408E;Lo;0;L;;;;;N;;;;;
+1408F;EGYPTIAN HIEROGLYPH-1408F;Lo;0;L;;;;;N;;;;;
+14090;EGYPTIAN HIEROGLYPH-14090;Lo;0;L;;;;;N;;;;;
+14091;EGYPTIAN HIEROGLYPH-14091;Lo;0;L;;;;;N;;;;;
+14092;EGYPTIAN HIEROGLYPH-14092;Lo;0;L;;;;;N;;;;;
+14093;EGYPTIAN HIEROGLYPH-14093;Lo;0;L;;;;;N;;;;;
+14094;EGYPTIAN HIEROGLYPH-14094;Lo;0;L;;;;;N;;;;;
+14095;EGYPTIAN HIEROGLYPH-14095;Lo;0;L;;;;;N;;;;;
+14096;EGYPTIAN HIEROGLYPH-14096;Lo;0;L;;;;;N;;;;;
+14097;EGYPTIAN HIEROGLYPH-14097;Lo;0;L;;;;;N;;;;;
+14098;EGYPTIAN HIEROGLYPH-14098;Lo;0;L;;;;;N;;;;;
+14099;EGYPTIAN HIEROGLYPH-14099;Lo;0;L;;;;;N;;;;;
+1409A;EGYPTIAN HIEROGLYPH-1409A;Lo;0;L;;;;;N;;;;;
+1409B;EGYPTIAN HIEROGLYPH-1409B;Lo;0;L;;;;;N;;;;;
+1409C;EGYPTIAN HIEROGLYPH-1409C;Lo;0;L;;;;;N;;;;;
+1409D;EGYPTIAN HIEROGLYPH-1409D;Lo;0;L;;;;;N;;;;;
+1409E;EGYPTIAN HIEROGLYPH-1409E;Lo;0;L;;;;;N;;;;;
+1409F;EGYPTIAN HIEROGLYPH-1409F;Lo;0;L;;;;;N;;;;;
+140A0;EGYPTIAN HIEROGLYPH-140A0;Lo;0;L;;;;;N;;;;;
+140A1;EGYPTIAN HIEROGLYPH-140A1;Lo;0;L;;;;;N;;;;;
+140A2;EGYPTIAN HIEROGLYPH-140A2;Lo;0;L;;;;;N;;;;;
+140A3;EGYPTIAN HIEROGLYPH-140A3;Lo;0;L;;;;;N;;;;;
+140A4;EGYPTIAN HIEROGLYPH-140A4;Lo;0;L;;;;;N;;;;;
+140A5;EGYPTIAN HIEROGLYPH-140A5;Lo;0;L;;;;;N;;;;;
+140A6;EGYPTIAN HIEROGLYPH-140A6;Lo;0;L;;;;;N;;;;;
+140A7;EGYPTIAN HIEROGLYPH-140A7;Lo;0;L;;;;;N;;;;;
+140A8;EGYPTIAN HIEROGLYPH-140A8;Lo;0;L;;;;;N;;;;;
+140A9;EGYPTIAN HIEROGLYPH-140A9;Lo;0;L;;;;;N;;;;;
+140AA;EGYPTIAN HIEROGLYPH-140AA;Lo;0;L;;;;;N;;;;;
+140AB;EGYPTIAN HIEROGLYPH-140AB;Lo;0;L;;;;;N;;;;;
+140AC;EGYPTIAN HIEROGLYPH-140AC;Lo;0;L;;;;;N;;;;;
+140AD;EGYPTIAN HIEROGLYPH-140AD;Lo;0;L;;;;;N;;;;;
+140AE;EGYPTIAN HIEROGLYPH-140AE;Lo;0;L;;;;;N;;;;;
+140AF;EGYPTIAN HIEROGLYPH-140AF;Lo;0;L;;;;;N;;;;;
+140B0;EGYPTIAN HIEROGLYPH-140B0;Lo;0;L;;;;;N;;;;;
+140B1;EGYPTIAN HIEROGLYPH-140B1;Lo;0;L;;;;;N;;;;;
+140B2;EGYPTIAN HIEROGLYPH-140B2;Lo;0;L;;;;;N;;;;;
+140B3;EGYPTIAN HIEROGLYPH-140B3;Lo;0;L;;;;;N;;;;;
+140B4;EGYPTIAN HIEROGLYPH-140B4;Lo;0;L;;;;;N;;;;;
+140B5;EGYPTIAN HIEROGLYPH-140B5;Lo;0;L;;;;;N;;;;;
+140B6;EGYPTIAN HIEROGLYPH-140B6;Lo;0;L;;;;;N;;;;;
+140B7;EGYPTIAN HIEROGLYPH-140B7;Lo;0;L;;;;;N;;;;;
+140B8;EGYPTIAN HIEROGLYPH-140B8;Lo;0;L;;;;;N;;;;;
+140B9;EGYPTIAN HIEROGLYPH-140B9;Lo;0;L;;;;;N;;;;;
+140BA;EGYPTIAN HIEROGLYPH-140BA;Lo;0;L;;;;;N;;;;;
+140BB;EGYPTIAN HIEROGLYPH-140BB;Lo;0;L;;;;;N;;;;;
+140BC;EGYPTIAN HIEROGLYPH-140BC;Lo;0;L;;;;;N;;;;;
+140BD;EGYPTIAN HIEROGLYPH-140BD;Lo;0;L;;;;;N;;;;;
+140BE;EGYPTIAN HIEROGLYPH-140BE;Lo;0;L;;;;;N;;;;;
+140BF;EGYPTIAN HIEROGLYPH-140BF;Lo;0;L;;;;;N;;;;;
+140C0;EGYPTIAN HIEROGLYPH-140C0;Lo;0;L;;;;;N;;;;;
+140C1;EGYPTIAN HIEROGLYPH-140C1;Lo;0;L;;;;;N;;;;;
+140C2;EGYPTIAN HIEROGLYPH-140C2;Lo;0;L;;;;;N;;;;;
+140C3;EGYPTIAN HIEROGLYPH-140C3;Lo;0;L;;;;;N;;;;;
+140C4;EGYPTIAN HIEROGLYPH-140C4;Lo;0;L;;;;;N;;;;;
+140C5;EGYPTIAN HIEROGLYPH-140C5;Lo;0;L;;;;;N;;;;;
+140C6;EGYPTIAN HIEROGLYPH-140C6;Lo;0;L;;;;;N;;;;;
+140C7;EGYPTIAN HIEROGLYPH-140C7;Lo;0;L;;;;;N;;;;;
+140C8;EGYPTIAN HIEROGLYPH-140C8;Lo;0;L;;;;;N;;;;;
+140C9;EGYPTIAN HIEROGLYPH-140C9;Lo;0;L;;;;;N;;;;;
+140CA;EGYPTIAN HIEROGLYPH-140CA;Lo;0;L;;;;;N;;;;;
+140CB;EGYPTIAN HIEROGLYPH-140CB;Lo;0;L;;;;;N;;;;;
+140CC;EGYPTIAN HIEROGLYPH-140CC;Lo;0;L;;;;;N;;;;;
+140CD;EGYPTIAN HIEROGLYPH-140CD;Lo;0;L;;;;;N;;;;;
+140CE;EGYPTIAN HIEROGLYPH-140CE;Lo;0;L;;;;;N;;;;;
+140CF;EGYPTIAN HIEROGLYPH-140CF;Lo;0;L;;;;;N;;;;;
+140D0;EGYPTIAN HIEROGLYPH-140D0;Lo;0;L;;;;;N;;;;;
+140D1;EGYPTIAN HIEROGLYPH-140D1;Lo;0;L;;;;;N;;;;;
+140D2;EGYPTIAN HIEROGLYPH-140D2;Lo;0;L;;;;;N;;;;;
+140D3;EGYPTIAN HIEROGLYPH-140D3;Lo;0;L;;;;;N;;;;;
+140D4;EGYPTIAN HIEROGLYPH-140D4;Lo;0;L;;;;;N;;;;;
+140D5;EGYPTIAN HIEROGLYPH-140D5;Lo;0;L;;;;;N;;;;;
+140D6;EGYPTIAN HIEROGLYPH-140D6;Lo;0;L;;;;;N;;;;;
+140D7;EGYPTIAN HIEROGLYPH-140D7;Lo;0;L;;;;;N;;;;;
+140D8;EGYPTIAN HIEROGLYPH-140D8;Lo;0;L;;;;;N;;;;;
+140D9;EGYPTIAN HIEROGLYPH-140D9;Lo;0;L;;;;;N;;;;;
+140DA;EGYPTIAN HIEROGLYPH-140DA;Lo;0;L;;;;;N;;;;;
+140DB;EGYPTIAN HIEROGLYPH-140DB;Lo;0;L;;;;;N;;;;;
+140DC;EGYPTIAN HIEROGLYPH-140DC;Lo;0;L;;;;;N;;;;;
+140DD;EGYPTIAN HIEROGLYPH-140DD;Lo;0;L;;;;;N;;;;;
+140DE;EGYPTIAN HIEROGLYPH-140DE;Lo;0;L;;;;;N;;;;;
+140DF;EGYPTIAN HIEROGLYPH-140DF;Lo;0;L;;;;;N;;;;;
+140E0;EGYPTIAN HIEROGLYPH-140E0;Lo;0;L;;;;;N;;;;;
+140E1;EGYPTIAN HIEROGLYPH-140E1;Lo;0;L;;;;;N;;;;;
+140E2;EGYPTIAN HIEROGLYPH-140E2;Lo;0;L;;;;;N;;;;;
+140E3;EGYPTIAN HIEROGLYPH-140E3;Lo;0;L;;;;;N;;;;;
+140E4;EGYPTIAN HIEROGLYPH-140E4;Lo;0;L;;;;;N;;;;;
+140E5;EGYPTIAN HIEROGLYPH-140E5;Lo;0;L;;;;;N;;;;;
+140E6;EGYPTIAN HIEROGLYPH-140E6;Lo;0;L;;;;;N;;;;;
+140E7;EGYPTIAN HIEROGLYPH-140E7;Lo;0;L;;;;;N;;;;;
+140E8;EGYPTIAN HIEROGLYPH-140E8;Lo;0;L;;;;;N;;;;;
+140E9;EGYPTIAN HIEROGLYPH-140E9;Lo;0;L;;;;;N;;;;;
+140EA;EGYPTIAN HIEROGLYPH-140EA;Lo;0;L;;;;;N;;;;;
+140EB;EGYPTIAN HIEROGLYPH-140EB;Lo;0;L;;;;;N;;;;;
+140EC;EGYPTIAN HIEROGLYPH-140EC;Lo;0;L;;;;;N;;;;;
+140ED;EGYPTIAN HIEROGLYPH-140ED;Lo;0;L;;;;;N;;;;;
+140EE;EGYPTIAN HIEROGLYPH-140EE;Lo;0;L;;;;;N;;;;;
+140EF;EGYPTIAN HIEROGLYPH-140EF;Lo;0;L;;;;;N;;;;;
+140F0;EGYPTIAN HIEROGLYPH-140F0;Lo;0;L;;;;;N;;;;;
+140F1;EGYPTIAN HIEROGLYPH-140F1;Lo;0;L;;;;;N;;;;;
+140F2;EGYPTIAN HIEROGLYPH-140F2;Lo;0;L;;;;;N;;;;;
+140F3;EGYPTIAN HIEROGLYPH-140F3;Lo;0;L;;;;;N;;;;;
+140F4;EGYPTIAN HIEROGLYPH-140F4;Lo;0;L;;;;;N;;;;;
+140F5;EGYPTIAN HIEROGLYPH-140F5;Lo;0;L;;;;;N;;;;;
+140F6;EGYPTIAN HIEROGLYPH-140F6;Lo;0;L;;;;;N;;;;;
+140F7;EGYPTIAN HIEROGLYPH-140F7;Lo;0;L;;;;;N;;;;;
+140F8;EGYPTIAN HIEROGLYPH-140F8;Lo;0;L;;;;;N;;;;;
+140F9;EGYPTIAN HIEROGLYPH-140F9;Lo;0;L;;;;;N;;;;;
+140FA;EGYPTIAN HIEROGLYPH-140FA;Lo;0;L;;;;;N;;;;;
+140FB;EGYPTIAN HIEROGLYPH-140FB;Lo;0;L;;;;;N;;;;;
+140FC;EGYPTIAN HIEROGLYPH-140FC;Lo;0;L;;;;;N;;;;;
+140FD;EGYPTIAN HIEROGLYPH-140FD;Lo;0;L;;;;;N;;;;;
+140FE;EGYPTIAN HIEROGLYPH-140FE;Lo;0;L;;;;;N;;;;;
+140FF;EGYPTIAN HIEROGLYPH-140FF;Lo;0;L;;;;;N;;;;;
+14100;EGYPTIAN HIEROGLYPH-14100;Lo;0;L;;;;;N;;;;;
+14101;EGYPTIAN HIEROGLYPH-14101;Lo;0;L;;;;;N;;;;;
+14102;EGYPTIAN HIEROGLYPH-14102;Lo;0;L;;;;;N;;;;;
+14103;EGYPTIAN HIEROGLYPH-14103;Lo;0;L;;;;;N;;;;;
+14104;EGYPTIAN HIEROGLYPH-14104;Lo;0;L;;;;;N;;;;;
+14105;EGYPTIAN HIEROGLYPH-14105;Lo;0;L;;;;;N;;;;;
+14106;EGYPTIAN HIEROGLYPH-14106;Lo;0;L;;;;;N;;;;;
+14107;EGYPTIAN HIEROGLYPH-14107;Lo;0;L;;;;;N;;;;;
+14108;EGYPTIAN HIEROGLYPH-14108;Lo;0;L;;;;;N;;;;;
+14109;EGYPTIAN HIEROGLYPH-14109;Lo;0;L;;;;;N;;;;;
+1410A;EGYPTIAN HIEROGLYPH-1410A;Lo;0;L;;;;;N;;;;;
+1410B;EGYPTIAN HIEROGLYPH-1410B;Lo;0;L;;;;;N;;;;;
+1410C;EGYPTIAN HIEROGLYPH-1410C;Lo;0;L;;;;;N;;;;;
+1410D;EGYPTIAN HIEROGLYPH-1410D;Lo;0;L;;;;;N;;;;;
+1410E;EGYPTIAN HIEROGLYPH-1410E;Lo;0;L;;;;;N;;;;;
+1410F;EGYPTIAN HIEROGLYPH-1410F;Lo;0;L;;;;;N;;;;;
+14110;EGYPTIAN HIEROGLYPH-14110;Lo;0;L;;;;;N;;;;;
+14111;EGYPTIAN HIEROGLYPH-14111;Lo;0;L;;;;;N;;;;;
+14112;EGYPTIAN HIEROGLYPH-14112;Lo;0;L;;;;;N;;;;;
+14113;EGYPTIAN HIEROGLYPH-14113;Lo;0;L;;;;;N;;;;;
+14114;EGYPTIAN HIEROGLYPH-14114;Lo;0;L;;;;;N;;;;;
+14115;EGYPTIAN HIEROGLYPH-14115;Lo;0;L;;;;;N;;;;;
+14116;EGYPTIAN HIEROGLYPH-14116;Lo;0;L;;;;;N;;;;;
+14117;EGYPTIAN HIEROGLYPH-14117;Lo;0;L;;;;;N;;;;;
+14118;EGYPTIAN HIEROGLYPH-14118;Lo;0;L;;;;;N;;;;;
+14119;EGYPTIAN HIEROGLYPH-14119;Lo;0;L;;;;;N;;;;;
+1411A;EGYPTIAN HIEROGLYPH-1411A;Lo;0;L;;;;;N;;;;;
+1411B;EGYPTIAN HIEROGLYPH-1411B;Lo;0;L;;;;;N;;;;;
+1411C;EGYPTIAN HIEROGLYPH-1411C;Lo;0;L;;;;;N;;;;;
+1411D;EGYPTIAN HIEROGLYPH-1411D;Lo;0;L;;;;;N;;;;;
+1411E;EGYPTIAN HIEROGLYPH-1411E;Lo;0;L;;;;;N;;;;;
+1411F;EGYPTIAN HIEROGLYPH-1411F;Lo;0;L;;;;;N;;;;;
+14120;EGYPTIAN HIEROGLYPH-14120;Lo;0;L;;;;;N;;;;;
+14121;EGYPTIAN HIEROGLYPH-14121;Lo;0;L;;;;;N;;;;;
+14122;EGYPTIAN HIEROGLYPH-14122;Lo;0;L;;;;;N;;;;;
+14123;EGYPTIAN HIEROGLYPH-14123;Lo;0;L;;;;;N;;;;;
+14124;EGYPTIAN HIEROGLYPH-14124;Lo;0;L;;;;;N;;;;;
+14125;EGYPTIAN HIEROGLYPH-14125;Lo;0;L;;;;;N;;;;;
+14126;EGYPTIAN HIEROGLYPH-14126;Lo;0;L;;;;;N;;;;;
+14127;EGYPTIAN HIEROGLYPH-14127;Lo;0;L;;;;;N;;;;;
+14128;EGYPTIAN HIEROGLYPH-14128;Lo;0;L;;;;;N;;;;;
+14129;EGYPTIAN HIEROGLYPH-14129;Lo;0;L;;;;;N;;;;;
+1412A;EGYPTIAN HIEROGLYPH-1412A;Lo;0;L;;;;;N;;;;;
+1412B;EGYPTIAN HIEROGLYPH-1412B;Lo;0;L;;;;;N;;;;;
+1412C;EGYPTIAN HIEROGLYPH-1412C;Lo;0;L;;;;;N;;;;;
+1412D;EGYPTIAN HIEROGLYPH-1412D;Lo;0;L;;;;;N;;;;;
+1412E;EGYPTIAN HIEROGLYPH-1412E;Lo;0;L;;;;;N;;;;;
+1412F;EGYPTIAN HIEROGLYPH-1412F;Lo;0;L;;;;;N;;;;;
+14130;EGYPTIAN HIEROGLYPH-14130;Lo;0;L;;;;;N;;;;;
+14131;EGYPTIAN HIEROGLYPH-14131;Lo;0;L;;;;;N;;;;;
+14132;EGYPTIAN HIEROGLYPH-14132;Lo;0;L;;;;;N;;;;;
+14133;EGYPTIAN HIEROGLYPH-14133;Lo;0;L;;;;;N;;;;;
+14134;EGYPTIAN HIEROGLYPH-14134;Lo;0;L;;;;;N;;;;;
+14135;EGYPTIAN HIEROGLYPH-14135;Lo;0;L;;;;;N;;;;;
+14136;EGYPTIAN HIEROGLYPH-14136;Lo;0;L;;;;;N;;;;;
+14137;EGYPTIAN HIEROGLYPH-14137;Lo;0;L;;;;;N;;;;;
+14138;EGYPTIAN HIEROGLYPH-14138;Lo;0;L;;;;;N;;;;;
+14139;EGYPTIAN HIEROGLYPH-14139;Lo;0;L;;;;;N;;;;;
+1413A;EGYPTIAN HIEROGLYPH-1413A;Lo;0;L;;;;;N;;;;;
+1413B;EGYPTIAN HIEROGLYPH-1413B;Lo;0;L;;;;;N;;;;;
+1413C;EGYPTIAN HIEROGLYPH-1413C;Lo;0;L;;;;;N;;;;;
+1413D;EGYPTIAN HIEROGLYPH-1413D;Lo;0;L;;;;;N;;;;;
+1413E;EGYPTIAN HIEROGLYPH-1413E;Lo;0;L;;;;;N;;;;;
+1413F;EGYPTIAN HIEROGLYPH-1413F;Lo;0;L;;;;;N;;;;;
+14140;EGYPTIAN HIEROGLYPH-14140;Lo;0;L;;;;;N;;;;;
+14141;EGYPTIAN HIEROGLYPH-14141;Lo;0;L;;;;;N;;;;;
+14142;EGYPTIAN HIEROGLYPH-14142;Lo;0;L;;;;;N;;;;;
+14143;EGYPTIAN HIEROGLYPH-14143;Lo;0;L;;;;;N;;;;;
+14144;EGYPTIAN HIEROGLYPH-14144;Lo;0;L;;;;;N;;;;;
+14145;EGYPTIAN HIEROGLYPH-14145;Lo;0;L;;;;;N;;;;;
+14146;EGYPTIAN HIEROGLYPH-14146;Lo;0;L;;;;;N;;;;;
+14147;EGYPTIAN HIEROGLYPH-14147;Lo;0;L;;;;;N;;;;;
+14148;EGYPTIAN HIEROGLYPH-14148;Lo;0;L;;;;;N;;;;;
+14149;EGYPTIAN HIEROGLYPH-14149;Lo;0;L;;;;;N;;;;;
+1414A;EGYPTIAN HIEROGLYPH-1414A;Lo;0;L;;;;;N;;;;;
+1414B;EGYPTIAN HIEROGLYPH-1414B;Lo;0;L;;;;;N;;;;;
+1414C;EGYPTIAN HIEROGLYPH-1414C;Lo;0;L;;;;;N;;;;;
+1414D;EGYPTIAN HIEROGLYPH-1414D;Lo;0;L;;;;;N;;;;;
+1414E;EGYPTIAN HIEROGLYPH-1414E;Lo;0;L;;;;;N;;;;;
+1414F;EGYPTIAN HIEROGLYPH-1414F;Lo;0;L;;;;;N;;;;;
+14150;EGYPTIAN HIEROGLYPH-14150;Lo;0;L;;;;;N;;;;;
+14151;EGYPTIAN HIEROGLYPH-14151;Lo;0;L;;;;;N;;;;;
+14152;EGYPTIAN HIEROGLYPH-14152;Lo;0;L;;;;;N;;;;;
+14153;EGYPTIAN HIEROGLYPH-14153;Lo;0;L;;;;;N;;;;;
+14154;EGYPTIAN HIEROGLYPH-14154;Lo;0;L;;;;;N;;;;;
+14155;EGYPTIAN HIEROGLYPH-14155;Lo;0;L;;;;;N;;;;;
+14156;EGYPTIAN HIEROGLYPH-14156;Lo;0;L;;;;;N;;;;;
+14157;EGYPTIAN HIEROGLYPH-14157;Lo;0;L;;;;;N;;;;;
+14158;EGYPTIAN HIEROGLYPH-14158;Lo;0;L;;;;;N;;;;;
+14159;EGYPTIAN HIEROGLYPH-14159;Lo;0;L;;;;;N;;;;;
+1415A;EGYPTIAN HIEROGLYPH-1415A;Lo;0;L;;;;;N;;;;;
+1415B;EGYPTIAN HIEROGLYPH-1415B;Lo;0;L;;;;;N;;;;;
+1415C;EGYPTIAN HIEROGLYPH-1415C;Lo;0;L;;;;;N;;;;;
+1415D;EGYPTIAN HIEROGLYPH-1415D;Lo;0;L;;;;;N;;;;;
+1415E;EGYPTIAN HIEROGLYPH-1415E;Lo;0;L;;;;;N;;;;;
+1415F;EGYPTIAN HIEROGLYPH-1415F;Lo;0;L;;;;;N;;;;;
+14160;EGYPTIAN HIEROGLYPH-14160;Lo;0;L;;;;;N;;;;;
+14161;EGYPTIAN HIEROGLYPH-14161;Lo;0;L;;;;;N;;;;;
+14162;EGYPTIAN HIEROGLYPH-14162;Lo;0;L;;;;;N;;;;;
+14163;EGYPTIAN HIEROGLYPH-14163;Lo;0;L;;;;;N;;;;;
+14164;EGYPTIAN HIEROGLYPH-14164;Lo;0;L;;;;;N;;;;;
+14165;EGYPTIAN HIEROGLYPH-14165;Lo;0;L;;;;;N;;;;;
+14166;EGYPTIAN HIEROGLYPH-14166;Lo;0;L;;;;;N;;;;;
+14167;EGYPTIAN HIEROGLYPH-14167;Lo;0;L;;;;;N;;;;;
+14168;EGYPTIAN HIEROGLYPH-14168;Lo;0;L;;;;;N;;;;;
+14169;EGYPTIAN HIEROGLYPH-14169;Lo;0;L;;;;;N;;;;;
+1416A;EGYPTIAN HIEROGLYPH-1416A;Lo;0;L;;;;;N;;;;;
+1416B;EGYPTIAN HIEROGLYPH-1416B;Lo;0;L;;;;;N;;;;;
+1416C;EGYPTIAN HIEROGLYPH-1416C;Lo;0;L;;;;;N;;;;;
+1416D;EGYPTIAN HIEROGLYPH-1416D;Lo;0;L;;;;;N;;;;;
+1416E;EGYPTIAN HIEROGLYPH-1416E;Lo;0;L;;;;;N;;;;;
+1416F;EGYPTIAN HIEROGLYPH-1416F;Lo;0;L;;;;;N;;;;;
+14170;EGYPTIAN HIEROGLYPH-14170;Lo;0;L;;;;;N;;;;;
+14171;EGYPTIAN HIEROGLYPH-14171;Lo;0;L;;;;;N;;;;;
+14172;EGYPTIAN HIEROGLYPH-14172;Lo;0;L;;;;;N;;;;;
+14173;EGYPTIAN HIEROGLYPH-14173;Lo;0;L;;;;;N;;;;;
+14174;EGYPTIAN HIEROGLYPH-14174;Lo;0;L;;;;;N;;;;;
+14175;EGYPTIAN HIEROGLYPH-14175;Lo;0;L;;;;;N;;;;;
+14176;EGYPTIAN HIEROGLYPH-14176;Lo;0;L;;;;;N;;;;;
+14177;EGYPTIAN HIEROGLYPH-14177;Lo;0;L;;;;;N;;;;;
+14178;EGYPTIAN HIEROGLYPH-14178;Lo;0;L;;;;;N;;;;;
+14179;EGYPTIAN HIEROGLYPH-14179;Lo;0;L;;;;;N;;;;;
+1417A;EGYPTIAN HIEROGLYPH-1417A;Lo;0;L;;;;;N;;;;;
+1417B;EGYPTIAN HIEROGLYPH-1417B;Lo;0;L;;;;;N;;;;;
+1417C;EGYPTIAN HIEROGLYPH-1417C;Lo;0;L;;;;;N;;;;;
+1417D;EGYPTIAN HIEROGLYPH-1417D;Lo;0;L;;;;;N;;;;;
+1417E;EGYPTIAN HIEROGLYPH-1417E;Lo;0;L;;;;;N;;;;;
+1417F;EGYPTIAN HIEROGLYPH-1417F;Lo;0;L;;;;;N;;;;;
+14180;EGYPTIAN HIEROGLYPH-14180;Lo;0;L;;;;;N;;;;;
+14181;EGYPTIAN HIEROGLYPH-14181;Lo;0;L;;;;;N;;;;;
+14182;EGYPTIAN HIEROGLYPH-14182;Lo;0;L;;;;;N;;;;;
+14183;EGYPTIAN HIEROGLYPH-14183;Lo;0;L;;;;;N;;;;;
+14184;EGYPTIAN HIEROGLYPH-14184;Lo;0;L;;;;;N;;;;;
+14185;EGYPTIAN HIEROGLYPH-14185;Lo;0;L;;;;;N;;;;;
+14186;EGYPTIAN HIEROGLYPH-14186;Lo;0;L;;;;;N;;;;;
+14187;EGYPTIAN HIEROGLYPH-14187;Lo;0;L;;;;;N;;;;;
+14188;EGYPTIAN HIEROGLYPH-14188;Lo;0;L;;;;;N;;;;;
+14189;EGYPTIAN HIEROGLYPH-14189;Lo;0;L;;;;;N;;;;;
+1418A;EGYPTIAN HIEROGLYPH-1418A;Lo;0;L;;;;;N;;;;;
+1418B;EGYPTIAN HIEROGLYPH-1418B;Lo;0;L;;;;;N;;;;;
+1418C;EGYPTIAN HIEROGLYPH-1418C;Lo;0;L;;;;;N;;;;;
+1418D;EGYPTIAN HIEROGLYPH-1418D;Lo;0;L;;;;;N;;;;;
+1418E;EGYPTIAN HIEROGLYPH-1418E;Lo;0;L;;;;;N;;;;;
+1418F;EGYPTIAN HIEROGLYPH-1418F;Lo;0;L;;;;;N;;;;;
+14190;EGYPTIAN HIEROGLYPH-14190;Lo;0;L;;;;;N;;;;;
+14191;EGYPTIAN HIEROGLYPH-14191;Lo;0;L;;;;;N;;;;;
+14192;EGYPTIAN HIEROGLYPH-14192;Lo;0;L;;;;;N;;;;;
+14193;EGYPTIAN HIEROGLYPH-14193;Lo;0;L;;;;;N;;;;;
+14194;EGYPTIAN HIEROGLYPH-14194;Lo;0;L;;;;;N;;;;;
+14195;EGYPTIAN HIEROGLYPH-14195;Lo;0;L;;;;;N;;;;;
+14196;EGYPTIAN HIEROGLYPH-14196;Lo;0;L;;;;;N;;;;;
+14197;EGYPTIAN HIEROGLYPH-14197;Lo;0;L;;;;;N;;;;;
+14198;EGYPTIAN HIEROGLYPH-14198;Lo;0;L;;;;;N;;;;;
+14199;EGYPTIAN HIEROGLYPH-14199;Lo;0;L;;;;;N;;;;;
+1419A;EGYPTIAN HIEROGLYPH-1419A;Lo;0;L;;;;;N;;;;;
+1419B;EGYPTIAN HIEROGLYPH-1419B;Lo;0;L;;;;;N;;;;;
+1419C;EGYPTIAN HIEROGLYPH-1419C;Lo;0;L;;;;;N;;;;;
+1419D;EGYPTIAN HIEROGLYPH-1419D;Lo;0;L;;;;;N;;;;;
+1419E;EGYPTIAN HIEROGLYPH-1419E;Lo;0;L;;;;;N;;;;;
+1419F;EGYPTIAN HIEROGLYPH-1419F;Lo;0;L;;;;;N;;;;;
+141A0;EGYPTIAN HIEROGLYPH-141A0;Lo;0;L;;;;;N;;;;;
+141A1;EGYPTIAN HIEROGLYPH-141A1;Lo;0;L;;;;;N;;;;;
+141A2;EGYPTIAN HIEROGLYPH-141A2;Lo;0;L;;;;;N;;;;;
+141A3;EGYPTIAN HIEROGLYPH-141A3;Lo;0;L;;;;;N;;;;;
+141A4;EGYPTIAN HIEROGLYPH-141A4;Lo;0;L;;;;;N;;;;;
+141A5;EGYPTIAN HIEROGLYPH-141A5;Lo;0;L;;;;;N;;;;;
+141A6;EGYPTIAN HIEROGLYPH-141A6;Lo;0;L;;;;;N;;;;;
+141A7;EGYPTIAN HIEROGLYPH-141A7;Lo;0;L;;;;;N;;;;;
+141A8;EGYPTIAN HIEROGLYPH-141A8;Lo;0;L;;;;;N;;;;;
+141A9;EGYPTIAN HIEROGLYPH-141A9;Lo;0;L;;;;;N;;;;;
+141AA;EGYPTIAN HIEROGLYPH-141AA;Lo;0;L;;;;;N;;;;;
+141AB;EGYPTIAN HIEROGLYPH-141AB;Lo;0;L;;;;;N;;;;;
+141AC;EGYPTIAN HIEROGLYPH-141AC;Lo;0;L;;;;;N;;;;;
+141AD;EGYPTIAN HIEROGLYPH-141AD;Lo;0;L;;;;;N;;;;;
+141AE;EGYPTIAN HIEROGLYPH-141AE;Lo;0;L;;;;;N;;;;;
+141AF;EGYPTIAN HIEROGLYPH-141AF;Lo;0;L;;;;;N;;;;;
+141B0;EGYPTIAN HIEROGLYPH-141B0;Lo;0;L;;;;;N;;;;;
+141B1;EGYPTIAN HIEROGLYPH-141B1;Lo;0;L;;;;;N;;;;;
+141B2;EGYPTIAN HIEROGLYPH-141B2;Lo;0;L;;;;;N;;;;;
+141B3;EGYPTIAN HIEROGLYPH-141B3;Lo;0;L;;;;;N;;;;;
+141B4;EGYPTIAN HIEROGLYPH-141B4;Lo;0;L;;;;;N;;;;;
+141B5;EGYPTIAN HIEROGLYPH-141B5;Lo;0;L;;;;;N;;;;;
+141B6;EGYPTIAN HIEROGLYPH-141B6;Lo;0;L;;;;;N;;;;;
+141B7;EGYPTIAN HIEROGLYPH-141B7;Lo;0;L;;;;;N;;;;;
+141B8;EGYPTIAN HIEROGLYPH-141B8;Lo;0;L;;;;;N;;;;;
+141B9;EGYPTIAN HIEROGLYPH-141B9;Lo;0;L;;;;;N;;;;;
+141BA;EGYPTIAN HIEROGLYPH-141BA;Lo;0;L;;;;;N;;;;;
+141BB;EGYPTIAN HIEROGLYPH-141BB;Lo;0;L;;;;;N;;;;;
+141BC;EGYPTIAN HIEROGLYPH-141BC;Lo;0;L;;;;;N;;;;;
+141BD;EGYPTIAN HIEROGLYPH-141BD;Lo;0;L;;;;;N;;;;;
+141BE;EGYPTIAN HIEROGLYPH-141BE;Lo;0;L;;;;;N;;;;;
+141BF;EGYPTIAN HIEROGLYPH-141BF;Lo;0;L;;;;;N;;;;;
+141C0;EGYPTIAN HIEROGLYPH-141C0;Lo;0;L;;;;;N;;;;;
+141C1;EGYPTIAN HIEROGLYPH-141C1;Lo;0;L;;;;;N;;;;;
+141C2;EGYPTIAN HIEROGLYPH-141C2;Lo;0;L;;;;;N;;;;;
+141C3;EGYPTIAN HIEROGLYPH-141C3;Lo;0;L;;;;;N;;;;;
+141C4;EGYPTIAN HIEROGLYPH-141C4;Lo;0;L;;;;;N;;;;;
+141C5;EGYPTIAN HIEROGLYPH-141C5;Lo;0;L;;;;;N;;;;;
+141C6;EGYPTIAN HIEROGLYPH-141C6;Lo;0;L;;;;;N;;;;;
+141C7;EGYPTIAN HIEROGLYPH-141C7;Lo;0;L;;;;;N;;;;;
+141C8;EGYPTIAN HIEROGLYPH-141C8;Lo;0;L;;;;;N;;;;;
+141C9;EGYPTIAN HIEROGLYPH-141C9;Lo;0;L;;;;;N;;;;;
+141CA;EGYPTIAN HIEROGLYPH-141CA;Lo;0;L;;;;;N;;;;;
+141CB;EGYPTIAN HIEROGLYPH-141CB;Lo;0;L;;;;;N;;;;;
+141CC;EGYPTIAN HIEROGLYPH-141CC;Lo;0;L;;;;;N;;;;;
+141CD;EGYPTIAN HIEROGLYPH-141CD;Lo;0;L;;;;;N;;;;;
+141CE;EGYPTIAN HIEROGLYPH-141CE;Lo;0;L;;;;;N;;;;;
+141CF;EGYPTIAN HIEROGLYPH-141CF;Lo;0;L;;;;;N;;;;;
+141D0;EGYPTIAN HIEROGLYPH-141D0;Lo;0;L;;;;;N;;;;;
+141D1;EGYPTIAN HIEROGLYPH-141D1;Lo;0;L;;;;;N;;;;;
+141D2;EGYPTIAN HIEROGLYPH-141D2;Lo;0;L;;;;;N;;;;;
+141D3;EGYPTIAN HIEROGLYPH-141D3;Lo;0;L;;;;;N;;;;;
+141D4;EGYPTIAN HIEROGLYPH-141D4;Lo;0;L;;;;;N;;;;;
+141D5;EGYPTIAN HIEROGLYPH-141D5;Lo;0;L;;;;;N;;;;;
+141D6;EGYPTIAN HIEROGLYPH-141D6;Lo;0;L;;;;;N;;;;;
+141D7;EGYPTIAN HIEROGLYPH-141D7;Lo;0;L;;;;;N;;;;;
+141D8;EGYPTIAN HIEROGLYPH-141D8;Lo;0;L;;;;;N;;;;;
+141D9;EGYPTIAN HIEROGLYPH-141D9;Lo;0;L;;;;;N;;;;;
+141DA;EGYPTIAN HIEROGLYPH-141DA;Lo;0;L;;;;;N;;;;;
+141DB;EGYPTIAN HIEROGLYPH-141DB;Lo;0;L;;;;;N;;;;;
+141DC;EGYPTIAN HIEROGLYPH-141DC;Lo;0;L;;;;;N;;;;;
+141DD;EGYPTIAN HIEROGLYPH-141DD;Lo;0;L;;;;;N;;;;;
+141DE;EGYPTIAN HIEROGLYPH-141DE;Lo;0;L;;;;;N;;;;;
+141DF;EGYPTIAN HIEROGLYPH-141DF;Lo;0;L;;;;;N;;;;;
+141E0;EGYPTIAN HIEROGLYPH-141E0;Lo;0;L;;;;;N;;;;;
+141E1;EGYPTIAN HIEROGLYPH-141E1;Lo;0;L;;;;;N;;;;;
+141E2;EGYPTIAN HIEROGLYPH-141E2;Lo;0;L;;;;;N;;;;;
+141E3;EGYPTIAN HIEROGLYPH-141E3;Lo;0;L;;;;;N;;;;;
+141E4;EGYPTIAN HIEROGLYPH-141E4;Lo;0;L;;;;;N;;;;;
+141E5;EGYPTIAN HIEROGLYPH-141E5;Lo;0;L;;;;;N;;;;;
+141E6;EGYPTIAN HIEROGLYPH-141E6;Lo;0;L;;;;;N;;;;;
+141E7;EGYPTIAN HIEROGLYPH-141E7;Lo;0;L;;;;;N;;;;;
+141E8;EGYPTIAN HIEROGLYPH-141E8;Lo;0;L;;;;;N;;;;;
+141E9;EGYPTIAN HIEROGLYPH-141E9;Lo;0;L;;;;;N;;;;;
+141EA;EGYPTIAN HIEROGLYPH-141EA;Lo;0;L;;;;;N;;;;;
+141EB;EGYPTIAN HIEROGLYPH-141EB;Lo;0;L;;;;;N;;;;;
+141EC;EGYPTIAN HIEROGLYPH-141EC;Lo;0;L;;;;;N;;;;;
+141ED;EGYPTIAN HIEROGLYPH-141ED;Lo;0;L;;;;;N;;;;;
+141EE;EGYPTIAN HIEROGLYPH-141EE;Lo;0;L;;;;;N;;;;;
+141EF;EGYPTIAN HIEROGLYPH-141EF;Lo;0;L;;;;;N;;;;;
+141F0;EGYPTIAN HIEROGLYPH-141F0;Lo;0;L;;;;;N;;;;;
+141F1;EGYPTIAN HIEROGLYPH-141F1;Lo;0;L;;;;;N;;;;;
+141F2;EGYPTIAN HIEROGLYPH-141F2;Lo;0;L;;;;;N;;;;;
+141F3;EGYPTIAN HIEROGLYPH-141F3;Lo;0;L;;;;;N;;;;;
+141F4;EGYPTIAN HIEROGLYPH-141F4;Lo;0;L;;;;;N;;;;;
+141F5;EGYPTIAN HIEROGLYPH-141F5;Lo;0;L;;;;;N;;;;;
+141F6;EGYPTIAN HIEROGLYPH-141F6;Lo;0;L;;;;;N;;;;;
+141F7;EGYPTIAN HIEROGLYPH-141F7;Lo;0;L;;;;;N;;;;;
+141F8;EGYPTIAN HIEROGLYPH-141F8;Lo;0;L;;;;;N;;;;;
+141F9;EGYPTIAN HIEROGLYPH-141F9;Lo;0;L;;;;;N;;;;;
+141FA;EGYPTIAN HIEROGLYPH-141FA;Lo;0;L;;;;;N;;;;;
+141FB;EGYPTIAN HIEROGLYPH-141FB;Lo;0;L;;;;;N;;;;;
+141FC;EGYPTIAN HIEROGLYPH-141FC;Lo;0;L;;;;;N;;;;;
+141FD;EGYPTIAN HIEROGLYPH-141FD;Lo;0;L;;;;;N;;;;;
+141FE;EGYPTIAN HIEROGLYPH-141FE;Lo;0;L;;;;;N;;;;;
+141FF;EGYPTIAN HIEROGLYPH-141FF;Lo;0;L;;;;;N;;;;;
+14200;EGYPTIAN HIEROGLYPH-14200;Lo;0;L;;;;;N;;;;;
+14201;EGYPTIAN HIEROGLYPH-14201;Lo;0;L;;;;;N;;;;;
+14202;EGYPTIAN HIEROGLYPH-14202;Lo;0;L;;;;;N;;;;;
+14203;EGYPTIAN HIEROGLYPH-14203;Lo;0;L;;;;;N;;;;;
+14204;EGYPTIAN HIEROGLYPH-14204;Lo;0;L;;;;;N;;;;;
+14205;EGYPTIAN HIEROGLYPH-14205;Lo;0;L;;;;;N;;;;;
+14206;EGYPTIAN HIEROGLYPH-14206;Lo;0;L;;;;;N;;;;;
+14207;EGYPTIAN HIEROGLYPH-14207;Lo;0;L;;;;;N;;;;;
+14208;EGYPTIAN HIEROGLYPH-14208;Lo;0;L;;;;;N;;;;;
+14209;EGYPTIAN HIEROGLYPH-14209;Lo;0;L;;;;;N;;;;;
+1420A;EGYPTIAN HIEROGLYPH-1420A;Lo;0;L;;;;;N;;;;;
+1420B;EGYPTIAN HIEROGLYPH-1420B;Lo;0;L;;;;;N;;;;;
+1420C;EGYPTIAN HIEROGLYPH-1420C;Lo;0;L;;;;;N;;;;;
+1420D;EGYPTIAN HIEROGLYPH-1420D;Lo;0;L;;;;;N;;;;;
+1420E;EGYPTIAN HIEROGLYPH-1420E;Lo;0;L;;;;;N;;;;;
+1420F;EGYPTIAN HIEROGLYPH-1420F;Lo;0;L;;;;;N;;;;;
+14210;EGYPTIAN HIEROGLYPH-14210;Lo;0;L;;;;;N;;;;;
+14211;EGYPTIAN HIEROGLYPH-14211;Lo;0;L;;;;;N;;;;;
+14212;EGYPTIAN HIEROGLYPH-14212;Lo;0;L;;;;;N;;;;;
+14213;EGYPTIAN HIEROGLYPH-14213;Lo;0;L;;;;;N;;;;;
+14214;EGYPTIAN HIEROGLYPH-14214;Lo;0;L;;;;;N;;;;;
+14215;EGYPTIAN HIEROGLYPH-14215;Lo;0;L;;;;;N;;;;;
+14216;EGYPTIAN HIEROGLYPH-14216;Lo;0;L;;;;;N;;;;;
+14217;EGYPTIAN HIEROGLYPH-14217;Lo;0;L;;;;;N;;;;;
+14218;EGYPTIAN HIEROGLYPH-14218;Lo;0;L;;;;;N;;;;;
+14219;EGYPTIAN HIEROGLYPH-14219;Lo;0;L;;;;;N;;;;;
+1421A;EGYPTIAN HIEROGLYPH-1421A;Lo;0;L;;;;;N;;;;;
+1421B;EGYPTIAN HIEROGLYPH-1421B;Lo;0;L;;;;;N;;;;;
+1421C;EGYPTIAN HIEROGLYPH-1421C;Lo;0;L;;;;;N;;;;;
+1421D;EGYPTIAN HIEROGLYPH-1421D;Lo;0;L;;;;;N;;;;;
+1421E;EGYPTIAN HIEROGLYPH-1421E;Lo;0;L;;;;;N;;;;;
+1421F;EGYPTIAN HIEROGLYPH-1421F;Lo;0;L;;;;;N;;;;;
+14220;EGYPTIAN HIEROGLYPH-14220;Lo;0;L;;;;;N;;;;;
+14221;EGYPTIAN HIEROGLYPH-14221;Lo;0;L;;;;;N;;;;;
+14222;EGYPTIAN HIEROGLYPH-14222;Lo;0;L;;;;;N;;;;;
+14223;EGYPTIAN HIEROGLYPH-14223;Lo;0;L;;;;;N;;;;;
+14224;EGYPTIAN HIEROGLYPH-14224;Lo;0;L;;;;;N;;;;;
+14225;EGYPTIAN HIEROGLYPH-14225;Lo;0;L;;;;;N;;;;;
+14226;EGYPTIAN HIEROGLYPH-14226;Lo;0;L;;;;;N;;;;;
+14227;EGYPTIAN HIEROGLYPH-14227;Lo;0;L;;;;;N;;;;;
+14228;EGYPTIAN HIEROGLYPH-14228;Lo;0;L;;;;;N;;;;;
+14229;EGYPTIAN HIEROGLYPH-14229;Lo;0;L;;;;;N;;;;;
+1422A;EGYPTIAN HIEROGLYPH-1422A;Lo;0;L;;;;;N;;;;;
+1422B;EGYPTIAN HIEROGLYPH-1422B;Lo;0;L;;;;;N;;;;;
+1422C;EGYPTIAN HIEROGLYPH-1422C;Lo;0;L;;;;;N;;;;;
+1422D;EGYPTIAN HIEROGLYPH-1422D;Lo;0;L;;;;;N;;;;;
+1422E;EGYPTIAN HIEROGLYPH-1422E;Lo;0;L;;;;;N;;;;;
+1422F;EGYPTIAN HIEROGLYPH-1422F;Lo;0;L;;;;;N;;;;;
+14230;EGYPTIAN HIEROGLYPH-14230;Lo;0;L;;;;;N;;;;;
+14231;EGYPTIAN HIEROGLYPH-14231;Lo;0;L;;;;;N;;;;;
+14232;EGYPTIAN HIEROGLYPH-14232;Lo;0;L;;;;;N;;;;;
+14233;EGYPTIAN HIEROGLYPH-14233;Lo;0;L;;;;;N;;;;;
+14234;EGYPTIAN HIEROGLYPH-14234;Lo;0;L;;;;;N;;;;;
+14235;EGYPTIAN HIEROGLYPH-14235;Lo;0;L;;;;;N;;;;;
+14236;EGYPTIAN HIEROGLYPH-14236;Lo;0;L;;;;;N;;;;;
+14237;EGYPTIAN HIEROGLYPH-14237;Lo;0;L;;;;;N;;;;;
+14238;EGYPTIAN HIEROGLYPH-14238;Lo;0;L;;;;;N;;;;;
+14239;EGYPTIAN HIEROGLYPH-14239;Lo;0;L;;;;;N;;;;;
+1423A;EGYPTIAN HIEROGLYPH-1423A;Lo;0;L;;;;;N;;;;;
+1423B;EGYPTIAN HIEROGLYPH-1423B;Lo;0;L;;;;;N;;;;;
+1423C;EGYPTIAN HIEROGLYPH-1423C;Lo;0;L;;;;;N;;;;;
+1423D;EGYPTIAN HIEROGLYPH-1423D;Lo;0;L;;;;;N;;;;;
+1423E;EGYPTIAN HIEROGLYPH-1423E;Lo;0;L;;;;;N;;;;;
+1423F;EGYPTIAN HIEROGLYPH-1423F;Lo;0;L;;;;;N;;;;;
+14240;EGYPTIAN HIEROGLYPH-14240;Lo;0;L;;;;;N;;;;;
+14241;EGYPTIAN HIEROGLYPH-14241;Lo;0;L;;;;;N;;;;;
+14242;EGYPTIAN HIEROGLYPH-14242;Lo;0;L;;;;;N;;;;;
+14243;EGYPTIAN HIEROGLYPH-14243;Lo;0;L;;;;;N;;;;;
+14244;EGYPTIAN HIEROGLYPH-14244;Lo;0;L;;;;;N;;;;;
+14245;EGYPTIAN HIEROGLYPH-14245;Lo;0;L;;;;;N;;;;;
+14246;EGYPTIAN HIEROGLYPH-14246;Lo;0;L;;;;;N;;;;;
+14247;EGYPTIAN HIEROGLYPH-14247;Lo;0;L;;;;;N;;;;;
+14248;EGYPTIAN HIEROGLYPH-14248;Lo;0;L;;;;;N;;;;;
+14249;EGYPTIAN HIEROGLYPH-14249;Lo;0;L;;;;;N;;;;;
+1424A;EGYPTIAN HIEROGLYPH-1424A;Lo;0;L;;;;;N;;;;;
+1424B;EGYPTIAN HIEROGLYPH-1424B;Lo;0;L;;;;;N;;;;;
+1424C;EGYPTIAN HIEROGLYPH-1424C;Lo;0;L;;;;;N;;;;;
+1424D;EGYPTIAN HIEROGLYPH-1424D;Lo;0;L;;;;;N;;;;;
+1424E;EGYPTIAN HIEROGLYPH-1424E;Lo;0;L;;;;;N;;;;;
+1424F;EGYPTIAN HIEROGLYPH-1424F;Lo;0;L;;;;;N;;;;;
+14250;EGYPTIAN HIEROGLYPH-14250;Lo;0;L;;;;;N;;;;;
+14251;EGYPTIAN HIEROGLYPH-14251;Lo;0;L;;;;;N;;;;;
+14252;EGYPTIAN HIEROGLYPH-14252;Lo;0;L;;;;;N;;;;;
+14253;EGYPTIAN HIEROGLYPH-14253;Lo;0;L;;;;;N;;;;;
+14254;EGYPTIAN HIEROGLYPH-14254;Lo;0;L;;;;;N;;;;;
+14255;EGYPTIAN HIEROGLYPH-14255;Lo;0;L;;;;;N;;;;;
+14256;EGYPTIAN HIEROGLYPH-14256;Lo;0;L;;;;;N;;;;;
+14257;EGYPTIAN HIEROGLYPH-14257;Lo;0;L;;;;;N;;;;;
+14258;EGYPTIAN HIEROGLYPH-14258;Lo;0;L;;;;;N;;;;;
+14259;EGYPTIAN HIEROGLYPH-14259;Lo;0;L;;;;;N;;;;;
+1425A;EGYPTIAN HIEROGLYPH-1425A;Lo;0;L;;;;;N;;;;;
+1425B;EGYPTIAN HIEROGLYPH-1425B;Lo;0;L;;;;;N;;;;;
+1425C;EGYPTIAN HIEROGLYPH-1425C;Lo;0;L;;;;;N;;;;;
+1425D;EGYPTIAN HIEROGLYPH-1425D;Lo;0;L;;;;;N;;;;;
+1425E;EGYPTIAN HIEROGLYPH-1425E;Lo;0;L;;;;;N;;;;;
+1425F;EGYPTIAN HIEROGLYPH-1425F;Lo;0;L;;;;;N;;;;;
+14260;EGYPTIAN HIEROGLYPH-14260;Lo;0;L;;;;;N;;;;;
+14261;EGYPTIAN HIEROGLYPH-14261;Lo;0;L;;;;;N;;;;;
+14262;EGYPTIAN HIEROGLYPH-14262;Lo;0;L;;;;;N;;;;;
+14263;EGYPTIAN HIEROGLYPH-14263;Lo;0;L;;;;;N;;;;;
+14264;EGYPTIAN HIEROGLYPH-14264;Lo;0;L;;;;;N;;;;;
+14265;EGYPTIAN HIEROGLYPH-14265;Lo;0;L;;;;;N;;;;;
+14266;EGYPTIAN HIEROGLYPH-14266;Lo;0;L;;;;;N;;;;;
+14267;EGYPTIAN HIEROGLYPH-14267;Lo;0;L;;;;;N;;;;;
+14268;EGYPTIAN HIEROGLYPH-14268;Lo;0;L;;;;;N;;;;;
+14269;EGYPTIAN HIEROGLYPH-14269;Lo;0;L;;;;;N;;;;;
+1426A;EGYPTIAN HIEROGLYPH-1426A;Lo;0;L;;;;;N;;;;;
+1426B;EGYPTIAN HIEROGLYPH-1426B;Lo;0;L;;;;;N;;;;;
+1426C;EGYPTIAN HIEROGLYPH-1426C;Lo;0;L;;;;;N;;;;;
+1426D;EGYPTIAN HIEROGLYPH-1426D;Lo;0;L;;;;;N;;;;;
+1426E;EGYPTIAN HIEROGLYPH-1426E;Lo;0;L;;;;;N;;;;;
+1426F;EGYPTIAN HIEROGLYPH-1426F;Lo;0;L;;;;;N;;;;;
+14270;EGYPTIAN HIEROGLYPH-14270;Lo;0;L;;;;;N;;;;;
+14271;EGYPTIAN HIEROGLYPH-14271;Lo;0;L;;;;;N;;;;;
+14272;EGYPTIAN HIEROGLYPH-14272;Lo;0;L;;;;;N;;;;;
+14273;EGYPTIAN HIEROGLYPH-14273;Lo;0;L;;;;;N;;;;;
+14274;EGYPTIAN HIEROGLYPH-14274;Lo;0;L;;;;;N;;;;;
+14275;EGYPTIAN HIEROGLYPH-14275;Lo;0;L;;;;;N;;;;;
+14276;EGYPTIAN HIEROGLYPH-14276;Lo;0;L;;;;;N;;;;;
+14277;EGYPTIAN HIEROGLYPH-14277;Lo;0;L;;;;;N;;;;;
+14278;EGYPTIAN HIEROGLYPH-14278;Lo;0;L;;;;;N;;;;;
+14279;EGYPTIAN HIEROGLYPH-14279;Lo;0;L;;;;;N;;;;;
+1427A;EGYPTIAN HIEROGLYPH-1427A;Lo;0;L;;;;;N;;;;;
+1427B;EGYPTIAN HIEROGLYPH-1427B;Lo;0;L;;;;;N;;;;;
+1427C;EGYPTIAN HIEROGLYPH-1427C;Lo;0;L;;;;;N;;;;;
+1427D;EGYPTIAN HIEROGLYPH-1427D;Lo;0;L;;;;;N;;;;;
+1427E;EGYPTIAN HIEROGLYPH-1427E;Lo;0;L;;;;;N;;;;;
+1427F;EGYPTIAN HIEROGLYPH-1427F;Lo;0;L;;;;;N;;;;;
+14280;EGYPTIAN HIEROGLYPH-14280;Lo;0;L;;;;;N;;;;;
+14281;EGYPTIAN HIEROGLYPH-14281;Lo;0;L;;;;;N;;;;;
+14282;EGYPTIAN HIEROGLYPH-14282;Lo;0;L;;;;;N;;;;;
+14283;EGYPTIAN HIEROGLYPH-14283;Lo;0;L;;;;;N;;;;;
+14284;EGYPTIAN HIEROGLYPH-14284;Lo;0;L;;;;;N;;;;;
+14285;EGYPTIAN HIEROGLYPH-14285;Lo;0;L;;;;;N;;;;;
+14286;EGYPTIAN HIEROGLYPH-14286;Lo;0;L;;;;;N;;;;;
+14287;EGYPTIAN HIEROGLYPH-14287;Lo;0;L;;;;;N;;;;;
+14288;EGYPTIAN HIEROGLYPH-14288;Lo;0;L;;;;;N;;;;;
+14289;EGYPTIAN HIEROGLYPH-14289;Lo;0;L;;;;;N;;;;;
+1428A;EGYPTIAN HIEROGLYPH-1428A;Lo;0;L;;;;;N;;;;;
+1428B;EGYPTIAN HIEROGLYPH-1428B;Lo;0;L;;;;;N;;;;;
+1428C;EGYPTIAN HIEROGLYPH-1428C;Lo;0;L;;;;;N;;;;;
+1428D;EGYPTIAN HIEROGLYPH-1428D;Lo;0;L;;;;;N;;;;;
+1428E;EGYPTIAN HIEROGLYPH-1428E;Lo;0;L;;;;;N;;;;;
+1428F;EGYPTIAN HIEROGLYPH-1428F;Lo;0;L;;;;;N;;;;;
+14290;EGYPTIAN HIEROGLYPH-14290;Lo;0;L;;;;;N;;;;;
+14291;EGYPTIAN HIEROGLYPH-14291;Lo;0;L;;;;;N;;;;;
+14292;EGYPTIAN HIEROGLYPH-14292;Lo;0;L;;;;;N;;;;;
+14293;EGYPTIAN HIEROGLYPH-14293;Lo;0;L;;;;;N;;;;;
+14294;EGYPTIAN HIEROGLYPH-14294;Lo;0;L;;;;;N;;;;;
+14295;EGYPTIAN HIEROGLYPH-14295;Lo;0;L;;;;;N;;;;;
+14296;EGYPTIAN HIEROGLYPH-14296;Lo;0;L;;;;;N;;;;;
+14297;EGYPTIAN HIEROGLYPH-14297;Lo;0;L;;;;;N;;;;;
+14298;EGYPTIAN HIEROGLYPH-14298;Lo;0;L;;;;;N;;;;;
+14299;EGYPTIAN HIEROGLYPH-14299;Lo;0;L;;;;;N;;;;;
+1429A;EGYPTIAN HIEROGLYPH-1429A;Lo;0;L;;;;;N;;;;;
+1429B;EGYPTIAN HIEROGLYPH-1429B;Lo;0;L;;;;;N;;;;;
+1429C;EGYPTIAN HIEROGLYPH-1429C;Lo;0;L;;;;;N;;;;;
+1429D;EGYPTIAN HIEROGLYPH-1429D;Lo;0;L;;;;;N;;;;;
+1429E;EGYPTIAN HIEROGLYPH-1429E;Lo;0;L;;;;;N;;;;;
+1429F;EGYPTIAN HIEROGLYPH-1429F;Lo;0;L;;;;;N;;;;;
+142A0;EGYPTIAN HIEROGLYPH-142A0;Lo;0;L;;;;;N;;;;;
+142A1;EGYPTIAN HIEROGLYPH-142A1;Lo;0;L;;;;;N;;;;;
+142A2;EGYPTIAN HIEROGLYPH-142A2;Lo;0;L;;;;;N;;;;;
+142A3;EGYPTIAN HIEROGLYPH-142A3;Lo;0;L;;;;;N;;;;;
+142A4;EGYPTIAN HIEROGLYPH-142A4;Lo;0;L;;;;;N;;;;;
+142A5;EGYPTIAN HIEROGLYPH-142A5;Lo;0;L;;;;;N;;;;;
+142A6;EGYPTIAN HIEROGLYPH-142A6;Lo;0;L;;;;;N;;;;;
+142A7;EGYPTIAN HIEROGLYPH-142A7;Lo;0;L;;;;;N;;;;;
+142A8;EGYPTIAN HIEROGLYPH-142A8;Lo;0;L;;;;;N;;;;;
+142A9;EGYPTIAN HIEROGLYPH-142A9;Lo;0;L;;;;;N;;;;;
+142AA;EGYPTIAN HIEROGLYPH-142AA;Lo;0;L;;;;;N;;;;;
+142AB;EGYPTIAN HIEROGLYPH-142AB;Lo;0;L;;;;;N;;;;;
+142AC;EGYPTIAN HIEROGLYPH-142AC;Lo;0;L;;;;;N;;;;;
+142AD;EGYPTIAN HIEROGLYPH-142AD;Lo;0;L;;;;;N;;;;;
+142AE;EGYPTIAN HIEROGLYPH-142AE;Lo;0;L;;;;;N;;;;;
+142AF;EGYPTIAN HIEROGLYPH-142AF;Lo;0;L;;;;;N;;;;;
+142B0;EGYPTIAN HIEROGLYPH-142B0;Lo;0;L;;;;;N;;;;;
+142B1;EGYPTIAN HIEROGLYPH-142B1;Lo;0;L;;;;;N;;;;;
+142B2;EGYPTIAN HIEROGLYPH-142B2;Lo;0;L;;;;;N;;;;;
+142B3;EGYPTIAN HIEROGLYPH-142B3;Lo;0;L;;;;;N;;;;;
+142B4;EGYPTIAN HIEROGLYPH-142B4;Lo;0;L;;;;;N;;;;;
+142B5;EGYPTIAN HIEROGLYPH-142B5;Lo;0;L;;;;;N;;;;;
+142B6;EGYPTIAN HIEROGLYPH-142B6;Lo;0;L;;;;;N;;;;;
+142B7;EGYPTIAN HIEROGLYPH-142B7;Lo;0;L;;;;;N;;;;;
+142B8;EGYPTIAN HIEROGLYPH-142B8;Lo;0;L;;;;;N;;;;;
+142B9;EGYPTIAN HIEROGLYPH-142B9;Lo;0;L;;;;;N;;;;;
+142BA;EGYPTIAN HIEROGLYPH-142BA;Lo;0;L;;;;;N;;;;;
+142BB;EGYPTIAN HIEROGLYPH-142BB;Lo;0;L;;;;;N;;;;;
+142BC;EGYPTIAN HIEROGLYPH-142BC;Lo;0;L;;;;;N;;;;;
+142BD;EGYPTIAN HIEROGLYPH-142BD;Lo;0;L;;;;;N;;;;;
+142BE;EGYPTIAN HIEROGLYPH-142BE;Lo;0;L;;;;;N;;;;;
+142BF;EGYPTIAN HIEROGLYPH-142BF;Lo;0;L;;;;;N;;;;;
+142C0;EGYPTIAN HIEROGLYPH-142C0;Lo;0;L;;;;;N;;;;;
+142C1;EGYPTIAN HIEROGLYPH-142C1;Lo;0;L;;;;;N;;;;;
+142C2;EGYPTIAN HIEROGLYPH-142C2;Lo;0;L;;;;;N;;;;;
+142C3;EGYPTIAN HIEROGLYPH-142C3;Lo;0;L;;;;;N;;;;;
+142C4;EGYPTIAN HIEROGLYPH-142C4;Lo;0;L;;;;;N;;;;;
+142C5;EGYPTIAN HIEROGLYPH-142C5;Lo;0;L;;;;;N;;;;;
+142C6;EGYPTIAN HIEROGLYPH-142C6;Lo;0;L;;;;;N;;;;;
+142C7;EGYPTIAN HIEROGLYPH-142C7;Lo;0;L;;;;;N;;;;;
+142C8;EGYPTIAN HIEROGLYPH-142C8;Lo;0;L;;;;;N;;;;;
+142C9;EGYPTIAN HIEROGLYPH-142C9;Lo;0;L;;;;;N;;;;;
+142CA;EGYPTIAN HIEROGLYPH-142CA;Lo;0;L;;;;;N;;;;;
+142CB;EGYPTIAN HIEROGLYPH-142CB;Lo;0;L;;;;;N;;;;;
+142CC;EGYPTIAN HIEROGLYPH-142CC;Lo;0;L;;;;;N;;;;;
+142CD;EGYPTIAN HIEROGLYPH-142CD;Lo;0;L;;;;;N;;;;;
+142CE;EGYPTIAN HIEROGLYPH-142CE;Lo;0;L;;;;;N;;;;;
+142CF;EGYPTIAN HIEROGLYPH-142CF;Lo;0;L;;;;;N;;;;;
+142D0;EGYPTIAN HIEROGLYPH-142D0;Lo;0;L;;;;;N;;;;;
+142D1;EGYPTIAN HIEROGLYPH-142D1;Lo;0;L;;;;;N;;;;;
+142D2;EGYPTIAN HIEROGLYPH-142D2;Lo;0;L;;;;;N;;;;;
+142D3;EGYPTIAN HIEROGLYPH-142D3;Lo;0;L;;;;;N;;;;;
+142D4;EGYPTIAN HIEROGLYPH-142D4;Lo;0;L;;;;;N;;;;;
+142D5;EGYPTIAN HIEROGLYPH-142D5;Lo;0;L;;;;;N;;;;;
+142D6;EGYPTIAN HIEROGLYPH-142D6;Lo;0;L;;;;;N;;;;;
+142D7;EGYPTIAN HIEROGLYPH-142D7;Lo;0;L;;;;;N;;;;;
+142D8;EGYPTIAN HIEROGLYPH-142D8;Lo;0;L;;;;;N;;;;;
+142D9;EGYPTIAN HIEROGLYPH-142D9;Lo;0;L;;;;;N;;;;;
+142DA;EGYPTIAN HIEROGLYPH-142DA;Lo;0;L;;;;;N;;;;;
+142DB;EGYPTIAN HIEROGLYPH-142DB;Lo;0;L;;;;;N;;;;;
+142DC;EGYPTIAN HIEROGLYPH-142DC;Lo;0;L;;;;;N;;;;;
+142DD;EGYPTIAN HIEROGLYPH-142DD;Lo;0;L;;;;;N;;;;;
+142DE;EGYPTIAN HIEROGLYPH-142DE;Lo;0;L;;;;;N;;;;;
+142DF;EGYPTIAN HIEROGLYPH-142DF;Lo;0;L;;;;;N;;;;;
+142E0;EGYPTIAN HIEROGLYPH-142E0;Lo;0;L;;;;;N;;;;;
+142E1;EGYPTIAN HIEROGLYPH-142E1;Lo;0;L;;;;;N;;;;;
+142E2;EGYPTIAN HIEROGLYPH-142E2;Lo;0;L;;;;;N;;;;;
+142E3;EGYPTIAN HIEROGLYPH-142E3;Lo;0;L;;;;;N;;;;;
+142E4;EGYPTIAN HIEROGLYPH-142E4;Lo;0;L;;;;;N;;;;;
+142E5;EGYPTIAN HIEROGLYPH-142E5;Lo;0;L;;;;;N;;;;;
+142E6;EGYPTIAN HIEROGLYPH-142E6;Lo;0;L;;;;;N;;;;;
+142E7;EGYPTIAN HIEROGLYPH-142E7;Lo;0;L;;;;;N;;;;;
+142E8;EGYPTIAN HIEROGLYPH-142E8;Lo;0;L;;;;;N;;;;;
+142E9;EGYPTIAN HIEROGLYPH-142E9;Lo;0;L;;;;;N;;;;;
+142EA;EGYPTIAN HIEROGLYPH-142EA;Lo;0;L;;;;;N;;;;;
+142EB;EGYPTIAN HIEROGLYPH-142EB;Lo;0;L;;;;;N;;;;;
+142EC;EGYPTIAN HIEROGLYPH-142EC;Lo;0;L;;;;;N;;;;;
+142ED;EGYPTIAN HIEROGLYPH-142ED;Lo;0;L;;;;;N;;;;;
+142EE;EGYPTIAN HIEROGLYPH-142EE;Lo;0;L;;;;;N;;;;;
+142EF;EGYPTIAN HIEROGLYPH-142EF;Lo;0;L;;;;;N;;;;;
+142F0;EGYPTIAN HIEROGLYPH-142F0;Lo;0;L;;;;;N;;;;;
+142F1;EGYPTIAN HIEROGLYPH-142F1;Lo;0;L;;;;;N;;;;;
+142F2;EGYPTIAN HIEROGLYPH-142F2;Lo;0;L;;;;;N;;;;;
+142F3;EGYPTIAN HIEROGLYPH-142F3;Lo;0;L;;;;;N;;;;;
+142F4;EGYPTIAN HIEROGLYPH-142F4;Lo;0;L;;;;;N;;;;;
+142F5;EGYPTIAN HIEROGLYPH-142F5;Lo;0;L;;;;;N;;;;;
+142F6;EGYPTIAN HIEROGLYPH-142F6;Lo;0;L;;;;;N;;;;;
+142F7;EGYPTIAN HIEROGLYPH-142F7;Lo;0;L;;;;;N;;;;;
+142F8;EGYPTIAN HIEROGLYPH-142F8;Lo;0;L;;;;;N;;;;;
+142F9;EGYPTIAN HIEROGLYPH-142F9;Lo;0;L;;;;;N;;;;;
+142FA;EGYPTIAN HIEROGLYPH-142FA;Lo;0;L;;;;;N;;;;;
+142FB;EGYPTIAN HIEROGLYPH-142FB;Lo;0;L;;;;;N;;;;;
+142FC;EGYPTIAN HIEROGLYPH-142FC;Lo;0;L;;;;;N;;;;;
+142FD;EGYPTIAN HIEROGLYPH-142FD;Lo;0;L;;;;;N;;;;;
+142FE;EGYPTIAN HIEROGLYPH-142FE;Lo;0;L;;;;;N;;;;;
+142FF;EGYPTIAN HIEROGLYPH-142FF;Lo;0;L;;;;;N;;;;;
+14300;EGYPTIAN HIEROGLYPH-14300;Lo;0;L;;;;;N;;;;;
+14301;EGYPTIAN HIEROGLYPH-14301;Lo;0;L;;;;;N;;;;;
+14302;EGYPTIAN HIEROGLYPH-14302;Lo;0;L;;;;;N;;;;;
+14303;EGYPTIAN HIEROGLYPH-14303;Lo;0;L;;;;;N;;;;;
+14304;EGYPTIAN HIEROGLYPH-14304;Lo;0;L;;;;;N;;;;;
+14305;EGYPTIAN HIEROGLYPH-14305;Lo;0;L;;;;;N;;;;;
+14306;EGYPTIAN HIEROGLYPH-14306;Lo;0;L;;;;;N;;;;;
+14307;EGYPTIAN HIEROGLYPH-14307;Lo;0;L;;;;;N;;;;;
+14308;EGYPTIAN HIEROGLYPH-14308;Lo;0;L;;;;;N;;;;;
+14309;EGYPTIAN HIEROGLYPH-14309;Lo;0;L;;;;;N;;;;;
+1430A;EGYPTIAN HIEROGLYPH-1430A;Lo;0;L;;;;;N;;;;;
+1430B;EGYPTIAN HIEROGLYPH-1430B;Lo;0;L;;;;;N;;;;;
+1430C;EGYPTIAN HIEROGLYPH-1430C;Lo;0;L;;;;;N;;;;;
+1430D;EGYPTIAN HIEROGLYPH-1430D;Lo;0;L;;;;;N;;;;;
+1430E;EGYPTIAN HIEROGLYPH-1430E;Lo;0;L;;;;;N;;;;;
+1430F;EGYPTIAN HIEROGLYPH-1430F;Lo;0;L;;;;;N;;;;;
+14310;EGYPTIAN HIEROGLYPH-14310;Lo;0;L;;;;;N;;;;;
+14311;EGYPTIAN HIEROGLYPH-14311;Lo;0;L;;;;;N;;;;;
+14312;EGYPTIAN HIEROGLYPH-14312;Lo;0;L;;;;;N;;;;;
+14313;EGYPTIAN HIEROGLYPH-14313;Lo;0;L;;;;;N;;;;;
+14314;EGYPTIAN HIEROGLYPH-14314;Lo;0;L;;;;;N;;;;;
+14315;EGYPTIAN HIEROGLYPH-14315;Lo;0;L;;;;;N;;;;;
+14316;EGYPTIAN HIEROGLYPH-14316;Lo;0;L;;;;;N;;;;;
+14317;EGYPTIAN HIEROGLYPH-14317;Lo;0;L;;;;;N;;;;;
+14318;EGYPTIAN HIEROGLYPH-14318;Lo;0;L;;;;;N;;;;;
+14319;EGYPTIAN HIEROGLYPH-14319;Lo;0;L;;;;;N;;;;;
+1431A;EGYPTIAN HIEROGLYPH-1431A;Lo;0;L;;;;;N;;;;;
+1431B;EGYPTIAN HIEROGLYPH-1431B;Lo;0;L;;;;;N;;;;;
+1431C;EGYPTIAN HIEROGLYPH-1431C;Lo;0;L;;;;;N;;;;;
+1431D;EGYPTIAN HIEROGLYPH-1431D;Lo;0;L;;;;;N;;;;;
+1431E;EGYPTIAN HIEROGLYPH-1431E;Lo;0;L;;;;;N;;;;;
+1431F;EGYPTIAN HIEROGLYPH-1431F;Lo;0;L;;;;;N;;;;;
+14320;EGYPTIAN HIEROGLYPH-14320;Lo;0;L;;;;;N;;;;;
+14321;EGYPTIAN HIEROGLYPH-14321;Lo;0;L;;;;;N;;;;;
+14322;EGYPTIAN HIEROGLYPH-14322;Lo;0;L;;;;;N;;;;;
+14323;EGYPTIAN HIEROGLYPH-14323;Lo;0;L;;;;;N;;;;;
+14324;EGYPTIAN HIEROGLYPH-14324;Lo;0;L;;;;;N;;;;;
+14325;EGYPTIAN HIEROGLYPH-14325;Lo;0;L;;;;;N;;;;;
+14326;EGYPTIAN HIEROGLYPH-14326;Lo;0;L;;;;;N;;;;;
+14327;EGYPTIAN HIEROGLYPH-14327;Lo;0;L;;;;;N;;;;;
+14328;EGYPTIAN HIEROGLYPH-14328;Lo;0;L;;;;;N;;;;;
+14329;EGYPTIAN HIEROGLYPH-14329;Lo;0;L;;;;;N;;;;;
+1432A;EGYPTIAN HIEROGLYPH-1432A;Lo;0;L;;;;;N;;;;;
+1432B;EGYPTIAN HIEROGLYPH-1432B;Lo;0;L;;;;;N;;;;;
+1432C;EGYPTIAN HIEROGLYPH-1432C;Lo;0;L;;;;;N;;;;;
+1432D;EGYPTIAN HIEROGLYPH-1432D;Lo;0;L;;;;;N;;;;;
+1432E;EGYPTIAN HIEROGLYPH-1432E;Lo;0;L;;;;;N;;;;;
+1432F;EGYPTIAN HIEROGLYPH-1432F;Lo;0;L;;;;;N;;;;;
+14330;EGYPTIAN HIEROGLYPH-14330;Lo;0;L;;;;;N;;;;;
+14331;EGYPTIAN HIEROGLYPH-14331;Lo;0;L;;;;;N;;;;;
+14332;EGYPTIAN HIEROGLYPH-14332;Lo;0;L;;;;;N;;;;;
+14333;EGYPTIAN HIEROGLYPH-14333;Lo;0;L;;;;;N;;;;;
+14334;EGYPTIAN HIEROGLYPH-14334;Lo;0;L;;;;;N;;;;;
+14335;EGYPTIAN HIEROGLYPH-14335;Lo;0;L;;;;;N;;;;;
+14336;EGYPTIAN HIEROGLYPH-14336;Lo;0;L;;;;;N;;;;;
+14337;EGYPTIAN HIEROGLYPH-14337;Lo;0;L;;;;;N;;;;;
+14338;EGYPTIAN HIEROGLYPH-14338;Lo;0;L;;;;;N;;;;;
+14339;EGYPTIAN HIEROGLYPH-14339;Lo;0;L;;;;;N;;;;;
+1433A;EGYPTIAN HIEROGLYPH-1433A;Lo;0;L;;;;;N;;;;;
+1433B;EGYPTIAN HIEROGLYPH-1433B;Lo;0;L;;;;;N;;;;;
+1433C;EGYPTIAN HIEROGLYPH-1433C;Lo;0;L;;;;;N;;;;;
+1433D;EGYPTIAN HIEROGLYPH-1433D;Lo;0;L;;;;;N;;;;;
+1433E;EGYPTIAN HIEROGLYPH-1433E;Lo;0;L;;;;;N;;;;;
+1433F;EGYPTIAN HIEROGLYPH-1433F;Lo;0;L;;;;;N;;;;;
+14340;EGYPTIAN HIEROGLYPH-14340;Lo;0;L;;;;;N;;;;;
+14341;EGYPTIAN HIEROGLYPH-14341;Lo;0;L;;;;;N;;;;;
+14342;EGYPTIAN HIEROGLYPH-14342;Lo;0;L;;;;;N;;;;;
+14343;EGYPTIAN HIEROGLYPH-14343;Lo;0;L;;;;;N;;;;;
+14344;EGYPTIAN HIEROGLYPH-14344;Lo;0;L;;;;;N;;;;;
+14345;EGYPTIAN HIEROGLYPH-14345;Lo;0;L;;;;;N;;;;;
+14346;EGYPTIAN HIEROGLYPH-14346;Lo;0;L;;;;;N;;;;;
+14347;EGYPTIAN HIEROGLYPH-14347;Lo;0;L;;;;;N;;;;;
+14348;EGYPTIAN HIEROGLYPH-14348;Lo;0;L;;;;;N;;;;;
+14349;EGYPTIAN HIEROGLYPH-14349;Lo;0;L;;;;;N;;;;;
+1434A;EGYPTIAN HIEROGLYPH-1434A;Lo;0;L;;;;;N;;;;;
+1434B;EGYPTIAN HIEROGLYPH-1434B;Lo;0;L;;;;;N;;;;;
+1434C;EGYPTIAN HIEROGLYPH-1434C;Lo;0;L;;;;;N;;;;;
+1434D;EGYPTIAN HIEROGLYPH-1434D;Lo;0;L;;;;;N;;;;;
+1434E;EGYPTIAN HIEROGLYPH-1434E;Lo;0;L;;;;;N;;;;;
+1434F;EGYPTIAN HIEROGLYPH-1434F;Lo;0;L;;;;;N;;;;;
+14350;EGYPTIAN HIEROGLYPH-14350;Lo;0;L;;;;;N;;;;;
+14351;EGYPTIAN HIEROGLYPH-14351;Lo;0;L;;;;;N;;;;;
+14352;EGYPTIAN HIEROGLYPH-14352;Lo;0;L;;;;;N;;;;;
+14353;EGYPTIAN HIEROGLYPH-14353;Lo;0;L;;;;;N;;;;;
+14354;EGYPTIAN HIEROGLYPH-14354;Lo;0;L;;;;;N;;;;;
+14355;EGYPTIAN HIEROGLYPH-14355;Lo;0;L;;;;;N;;;;;
+14356;EGYPTIAN HIEROGLYPH-14356;Lo;0;L;;;;;N;;;;;
+14357;EGYPTIAN HIEROGLYPH-14357;Lo;0;L;;;;;N;;;;;
+14358;EGYPTIAN HIEROGLYPH-14358;Lo;0;L;;;;;N;;;;;
+14359;EGYPTIAN HIEROGLYPH-14359;Lo;0;L;;;;;N;;;;;
+1435A;EGYPTIAN HIEROGLYPH-1435A;Lo;0;L;;;;;N;;;;;
+1435B;EGYPTIAN HIEROGLYPH-1435B;Lo;0;L;;;;;N;;;;;
+1435C;EGYPTIAN HIEROGLYPH-1435C;Lo;0;L;;;;;N;;;;;
+1435D;EGYPTIAN HIEROGLYPH-1435D;Lo;0;L;;;;;N;;;;;
+1435E;EGYPTIAN HIEROGLYPH-1435E;Lo;0;L;;;;;N;;;;;
+1435F;EGYPTIAN HIEROGLYPH-1435F;Lo;0;L;;;;;N;;;;;
+14360;EGYPTIAN HIEROGLYPH-14360;Lo;0;L;;;;;N;;;;;
+14361;EGYPTIAN HIEROGLYPH-14361;Lo;0;L;;;;;N;;;;;
+14362;EGYPTIAN HIEROGLYPH-14362;Lo;0;L;;;;;N;;;;;
+14363;EGYPTIAN HIEROGLYPH-14363;Lo;0;L;;;;;N;;;;;
+14364;EGYPTIAN HIEROGLYPH-14364;Lo;0;L;;;;;N;;;;;
+14365;EGYPTIAN HIEROGLYPH-14365;Lo;0;L;;;;;N;;;;;
+14366;EGYPTIAN HIEROGLYPH-14366;Lo;0;L;;;;;N;;;;;
+14367;EGYPTIAN HIEROGLYPH-14367;Lo;0;L;;;;;N;;;;;
+14368;EGYPTIAN HIEROGLYPH-14368;Lo;0;L;;;;;N;;;;;
+14369;EGYPTIAN HIEROGLYPH-14369;Lo;0;L;;;;;N;;;;;
+1436A;EGYPTIAN HIEROGLYPH-1436A;Lo;0;L;;;;;N;;;;;
+1436B;EGYPTIAN HIEROGLYPH-1436B;Lo;0;L;;;;;N;;;;;
+1436C;EGYPTIAN HIEROGLYPH-1436C;Lo;0;L;;;;;N;;;;;
+1436D;EGYPTIAN HIEROGLYPH-1436D;Lo;0;L;;;;;N;;;;;
+1436E;EGYPTIAN HIEROGLYPH-1436E;Lo;0;L;;;;;N;;;;;
+1436F;EGYPTIAN HIEROGLYPH-1436F;Lo;0;L;;;;;N;;;;;
+14370;EGYPTIAN HIEROGLYPH-14370;Lo;0;L;;;;;N;;;;;
+14371;EGYPTIAN HIEROGLYPH-14371;Lo;0;L;;;;;N;;;;;
+14372;EGYPTIAN HIEROGLYPH-14372;Lo;0;L;;;;;N;;;;;
+14373;EGYPTIAN HIEROGLYPH-14373;Lo;0;L;;;;;N;;;;;
+14374;EGYPTIAN HIEROGLYPH-14374;Lo;0;L;;;;;N;;;;;
+14375;EGYPTIAN HIEROGLYPH-14375;Lo;0;L;;;;;N;;;;;
+14376;EGYPTIAN HIEROGLYPH-14376;Lo;0;L;;;;;N;;;;;
+14377;EGYPTIAN HIEROGLYPH-14377;Lo;0;L;;;;;N;;;;;
+14378;EGYPTIAN HIEROGLYPH-14378;Lo;0;L;;;;;N;;;;;
+14379;EGYPTIAN HIEROGLYPH-14379;Lo;0;L;;;;;N;;;;;
+1437A;EGYPTIAN HIEROGLYPH-1437A;Lo;0;L;;;;;N;;;;;
+1437B;EGYPTIAN HIEROGLYPH-1437B;Lo;0;L;;;;;N;;;;;
+1437C;EGYPTIAN HIEROGLYPH-1437C;Lo;0;L;;;;;N;;;;;
+1437D;EGYPTIAN HIEROGLYPH-1437D;Lo;0;L;;;;;N;;;;;
+1437E;EGYPTIAN HIEROGLYPH-1437E;Lo;0;L;;;;;N;;;;;
+1437F;EGYPTIAN HIEROGLYPH-1437F;Lo;0;L;;;;;N;;;;;
+14380;EGYPTIAN HIEROGLYPH-14380;Lo;0;L;;;;;N;;;;;
+14381;EGYPTIAN HIEROGLYPH-14381;Lo;0;L;;;;;N;;;;;
+14382;EGYPTIAN HIEROGLYPH-14382;Lo;0;L;;;;;N;;;;;
+14383;EGYPTIAN HIEROGLYPH-14383;Lo;0;L;;;;;N;;;;;
+14384;EGYPTIAN HIEROGLYPH-14384;Lo;0;L;;;;;N;;;;;
+14385;EGYPTIAN HIEROGLYPH-14385;Lo;0;L;;;;;N;;;;;
+14386;EGYPTIAN HIEROGLYPH-14386;Lo;0;L;;;;;N;;;;;
+14387;EGYPTIAN HIEROGLYPH-14387;Lo;0;L;;;;;N;;;;;
+14388;EGYPTIAN HIEROGLYPH-14388;Lo;0;L;;;;;N;;;;;
+14389;EGYPTIAN HIEROGLYPH-14389;Lo;0;L;;;;;N;;;;;
+1438A;EGYPTIAN HIEROGLYPH-1438A;Lo;0;L;;;;;N;;;;;
+1438B;EGYPTIAN HIEROGLYPH-1438B;Lo;0;L;;;;;N;;;;;
+1438C;EGYPTIAN HIEROGLYPH-1438C;Lo;0;L;;;;;N;;;;;
+1438D;EGYPTIAN HIEROGLYPH-1438D;Lo;0;L;;;;;N;;;;;
+1438E;EGYPTIAN HIEROGLYPH-1438E;Lo;0;L;;;;;N;;;;;
+1438F;EGYPTIAN HIEROGLYPH-1438F;Lo;0;L;;;;;N;;;;;
+14390;EGYPTIAN HIEROGLYPH-14390;Lo;0;L;;;;;N;;;;;
+14391;EGYPTIAN HIEROGLYPH-14391;Lo;0;L;;;;;N;;;;;
+14392;EGYPTIAN HIEROGLYPH-14392;Lo;0;L;;;;;N;;;;;
+14393;EGYPTIAN HIEROGLYPH-14393;Lo;0;L;;;;;N;;;;;
+14394;EGYPTIAN HIEROGLYPH-14394;Lo;0;L;;;;;N;;;;;
+14395;EGYPTIAN HIEROGLYPH-14395;Lo;0;L;;;;;N;;;;;
+14396;EGYPTIAN HIEROGLYPH-14396;Lo;0;L;;;;;N;;;;;
+14397;EGYPTIAN HIEROGLYPH-14397;Lo;0;L;;;;;N;;;;;
+14398;EGYPTIAN HIEROGLYPH-14398;Lo;0;L;;;;;N;;;;;
+14399;EGYPTIAN HIEROGLYPH-14399;Lo;0;L;;;;;N;;;;;
+1439A;EGYPTIAN HIEROGLYPH-1439A;Lo;0;L;;;;;N;;;;;
+1439B;EGYPTIAN HIEROGLYPH-1439B;Lo;0;L;;;;;N;;;;;
+1439C;EGYPTIAN HIEROGLYPH-1439C;Lo;0;L;;;;;N;;;;;
+1439D;EGYPTIAN HIEROGLYPH-1439D;Lo;0;L;;;;;N;;;;;
+1439E;EGYPTIAN HIEROGLYPH-1439E;Lo;0;L;;;;;N;;;;;
+1439F;EGYPTIAN HIEROGLYPH-1439F;Lo;0;L;;;;;N;;;;;
+143A0;EGYPTIAN HIEROGLYPH-143A0;Lo;0;L;;;;;N;;;;;
+143A1;EGYPTIAN HIEROGLYPH-143A1;Lo;0;L;;;;;N;;;;;
+143A2;EGYPTIAN HIEROGLYPH-143A2;Lo;0;L;;;;;N;;;;;
+143A3;EGYPTIAN HIEROGLYPH-143A3;Lo;0;L;;;;;N;;;;;
+143A4;EGYPTIAN HIEROGLYPH-143A4;Lo;0;L;;;;;N;;;;;
+143A5;EGYPTIAN HIEROGLYPH-143A5;Lo;0;L;;;;;N;;;;;
+143A6;EGYPTIAN HIEROGLYPH-143A6;Lo;0;L;;;;;N;;;;;
+143A7;EGYPTIAN HIEROGLYPH-143A7;Lo;0;L;;;;;N;;;;;
+143A8;EGYPTIAN HIEROGLYPH-143A8;Lo;0;L;;;;;N;;;;;
+143A9;EGYPTIAN HIEROGLYPH-143A9;Lo;0;L;;;;;N;;;;;
+143AA;EGYPTIAN HIEROGLYPH-143AA;Lo;0;L;;;;;N;;;;;
+143AB;EGYPTIAN HIEROGLYPH-143AB;Lo;0;L;;;;;N;;;;;
+143AC;EGYPTIAN HIEROGLYPH-143AC;Lo;0;L;;;;;N;;;;;
+143AD;EGYPTIAN HIEROGLYPH-143AD;Lo;0;L;;;;;N;;;;;
+143AE;EGYPTIAN HIEROGLYPH-143AE;Lo;0;L;;;;;N;;;;;
+143AF;EGYPTIAN HIEROGLYPH-143AF;Lo;0;L;;;;;N;;;;;
+143B0;EGYPTIAN HIEROGLYPH-143B0;Lo;0;L;;;;;N;;;;;
+143B1;EGYPTIAN HIEROGLYPH-143B1;Lo;0;L;;;;;N;;;;;
+143B2;EGYPTIAN HIEROGLYPH-143B2;Lo;0;L;;;;;N;;;;;
+143B3;EGYPTIAN HIEROGLYPH-143B3;Lo;0;L;;;;;N;;;;;
+143B4;EGYPTIAN HIEROGLYPH-143B4;Lo;0;L;;;;;N;;;;;
+143B5;EGYPTIAN HIEROGLYPH-143B5;Lo;0;L;;;;;N;;;;;
+143B6;EGYPTIAN HIEROGLYPH-143B6;Lo;0;L;;;;;N;;;;;
+143B7;EGYPTIAN HIEROGLYPH-143B7;Lo;0;L;;;;;N;;;;;
+143B8;EGYPTIAN HIEROGLYPH-143B8;Lo;0;L;;;;;N;;;;;
+143B9;EGYPTIAN HIEROGLYPH-143B9;Lo;0;L;;;;;N;;;;;
+143BA;EGYPTIAN HIEROGLYPH-143BA;Lo;0;L;;;;;N;;;;;
+143BB;EGYPTIAN HIEROGLYPH-143BB;Lo;0;L;;;;;N;;;;;
+143BC;EGYPTIAN HIEROGLYPH-143BC;Lo;0;L;;;;;N;;;;;
+143BD;EGYPTIAN HIEROGLYPH-143BD;Lo;0;L;;;;;N;;;;;
+143BE;EGYPTIAN HIEROGLYPH-143BE;Lo;0;L;;;;;N;;;;;
+143BF;EGYPTIAN HIEROGLYPH-143BF;Lo;0;L;;;;;N;;;;;
+143C0;EGYPTIAN HIEROGLYPH-143C0;Lo;0;L;;;;;N;;;;;
+143C1;EGYPTIAN HIEROGLYPH-143C1;Lo;0;L;;;;;N;;;;;
+143C2;EGYPTIAN HIEROGLYPH-143C2;Lo;0;L;;;;;N;;;;;
+143C3;EGYPTIAN HIEROGLYPH-143C3;Lo;0;L;;;;;N;;;;;
+143C4;EGYPTIAN HIEROGLYPH-143C4;Lo;0;L;;;;;N;;;;;
+143C5;EGYPTIAN HIEROGLYPH-143C5;Lo;0;L;;;;;N;;;;;
+143C6;EGYPTIAN HIEROGLYPH-143C6;Lo;0;L;;;;;N;;;;;
+143C7;EGYPTIAN HIEROGLYPH-143C7;Lo;0;L;;;;;N;;;;;
+143C8;EGYPTIAN HIEROGLYPH-143C8;Lo;0;L;;;;;N;;;;;
+143C9;EGYPTIAN HIEROGLYPH-143C9;Lo;0;L;;;;;N;;;;;
+143CA;EGYPTIAN HIEROGLYPH-143CA;Lo;0;L;;;;;N;;;;;
+143CB;EGYPTIAN HIEROGLYPH-143CB;Lo;0;L;;;;;N;;;;;
+143CC;EGYPTIAN HIEROGLYPH-143CC;Lo;0;L;;;;;N;;;;;
+143CD;EGYPTIAN HIEROGLYPH-143CD;Lo;0;L;;;;;N;;;;;
+143CE;EGYPTIAN HIEROGLYPH-143CE;Lo;0;L;;;;;N;;;;;
+143CF;EGYPTIAN HIEROGLYPH-143CF;Lo;0;L;;;;;N;;;;;
+143D0;EGYPTIAN HIEROGLYPH-143D0;Lo;0;L;;;;;N;;;;;
+143D1;EGYPTIAN HIEROGLYPH-143D1;Lo;0;L;;;;;N;;;;;
+143D2;EGYPTIAN HIEROGLYPH-143D2;Lo;0;L;;;;;N;;;;;
+143D3;EGYPTIAN HIEROGLYPH-143D3;Lo;0;L;;;;;N;;;;;
+143D4;EGYPTIAN HIEROGLYPH-143D4;Lo;0;L;;;;;N;;;;;
+143D5;EGYPTIAN HIEROGLYPH-143D5;Lo;0;L;;;;;N;;;;;
+143D6;EGYPTIAN HIEROGLYPH-143D6;Lo;0;L;;;;;N;;;;;
+143D7;EGYPTIAN HIEROGLYPH-143D7;Lo;0;L;;;;;N;;;;;
+143D8;EGYPTIAN HIEROGLYPH-143D8;Lo;0;L;;;;;N;;;;;
+143D9;EGYPTIAN HIEROGLYPH-143D9;Lo;0;L;;;;;N;;;;;
+143DA;EGYPTIAN HIEROGLYPH-143DA;Lo;0;L;;;;;N;;;;;
+143DB;EGYPTIAN HIEROGLYPH-143DB;Lo;0;L;;;;;N;;;;;
+143DC;EGYPTIAN HIEROGLYPH-143DC;Lo;0;L;;;;;N;;;;;
+143DD;EGYPTIAN HIEROGLYPH-143DD;Lo;0;L;;;;;N;;;;;
+143DE;EGYPTIAN HIEROGLYPH-143DE;Lo;0;L;;;;;N;;;;;
+143DF;EGYPTIAN HIEROGLYPH-143DF;Lo;0;L;;;;;N;;;;;
+143E0;EGYPTIAN HIEROGLYPH-143E0;Lo;0;L;;;;;N;;;;;
+143E1;EGYPTIAN HIEROGLYPH-143E1;Lo;0;L;;;;;N;;;;;
+143E2;EGYPTIAN HIEROGLYPH-143E2;Lo;0;L;;;;;N;;;;;
+143E3;EGYPTIAN HIEROGLYPH-143E3;Lo;0;L;;;;;N;;;;;
+143E4;EGYPTIAN HIEROGLYPH-143E4;Lo;0;L;;;;;N;;;;;
+143E5;EGYPTIAN HIEROGLYPH-143E5;Lo;0;L;;;;;N;;;;;
+143E6;EGYPTIAN HIEROGLYPH-143E6;Lo;0;L;;;;;N;;;;;
+143E7;EGYPTIAN HIEROGLYPH-143E7;Lo;0;L;;;;;N;;;;;
+143E8;EGYPTIAN HIEROGLYPH-143E8;Lo;0;L;;;;;N;;;;;
+143E9;EGYPTIAN HIEROGLYPH-143E9;Lo;0;L;;;;;N;;;;;
+143EA;EGYPTIAN HIEROGLYPH-143EA;Lo;0;L;;;;;N;;;;;
+143EB;EGYPTIAN HIEROGLYPH-143EB;Lo;0;L;;;;;N;;;;;
+143EC;EGYPTIAN HIEROGLYPH-143EC;Lo;0;L;;;;;N;;;;;
+143ED;EGYPTIAN HIEROGLYPH-143ED;Lo;0;L;;;;;N;;;;;
+143EE;EGYPTIAN HIEROGLYPH-143EE;Lo;0;L;;;;;N;;;;;
+143EF;EGYPTIAN HIEROGLYPH-143EF;Lo;0;L;;;;;N;;;;;
+143F0;EGYPTIAN HIEROGLYPH-143F0;Lo;0;L;;;;;N;;;;;
+143F1;EGYPTIAN HIEROGLYPH-143F1;Lo;0;L;;;;;N;;;;;
+143F2;EGYPTIAN HIEROGLYPH-143F2;Lo;0;L;;;;;N;;;;;
+143F3;EGYPTIAN HIEROGLYPH-143F3;Lo;0;L;;;;;N;;;;;
+143F4;EGYPTIAN HIEROGLYPH-143F4;Lo;0;L;;;;;N;;;;;
+143F5;EGYPTIAN HIEROGLYPH-143F5;Lo;0;L;;;;;N;;;;;
+143F6;EGYPTIAN HIEROGLYPH-143F6;Lo;0;L;;;;;N;;;;;
+143F7;EGYPTIAN HIEROGLYPH-143F7;Lo;0;L;;;;;N;;;;;
+143F8;EGYPTIAN HIEROGLYPH-143F8;Lo;0;L;;;;;N;;;;;
+143F9;EGYPTIAN HIEROGLYPH-143F9;Lo;0;L;;;;;N;;;;;
+143FA;EGYPTIAN HIEROGLYPH-143FA;Lo;0;L;;;;;N;;;;;
14400;ANATOLIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;;
14401;ANATOLIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;;
14402;ANATOLIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;;
@@ -24771,6 +29053,64 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
14644;ANATOLIAN HIEROGLYPH A528;Lo;0;L;;;;;N;;;;;
14645;ANATOLIAN HIEROGLYPH A529;Lo;0;L;;;;;N;;;;;
14646;ANATOLIAN HIEROGLYPH A530;Lo;0;L;;;;;N;;;;;
+16100;GURUNG KHEMA LETTER A;Lo;0;L;;;;;N;;;;;
+16101;GURUNG KHEMA LETTER KA;Lo;0;L;;;;;N;;;;;
+16102;GURUNG KHEMA LETTER KHA;Lo;0;L;;;;;N;;;;;
+16103;GURUNG KHEMA LETTER GA;Lo;0;L;;;;;N;;;;;
+16104;GURUNG KHEMA LETTER GHA;Lo;0;L;;;;;N;;;;;
+16105;GURUNG KHEMA LETTER NGA;Lo;0;L;;;;;N;;;;;
+16106;GURUNG KHEMA LETTER CA;Lo;0;L;;;;;N;;;;;
+16107;GURUNG KHEMA LETTER CHA;Lo;0;L;;;;;N;;;;;
+16108;GURUNG KHEMA LETTER JA;Lo;0;L;;;;;N;;;;;
+16109;GURUNG KHEMA LETTER JHA;Lo;0;L;;;;;N;;;;;
+1610A;GURUNG KHEMA LETTER HA;Lo;0;L;;;;;N;;;;;
+1610B;GURUNG KHEMA LETTER TTA;Lo;0;L;;;;;N;;;;;
+1610C;GURUNG KHEMA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+1610D;GURUNG KHEMA LETTER DDA;Lo;0;L;;;;;N;;;;;
+1610E;GURUNG KHEMA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+1610F;GURUNG KHEMA LETTER VA;Lo;0;L;;;;;N;;;;;
+16110;GURUNG KHEMA LETTER TA;Lo;0;L;;;;;N;;;;;
+16111;GURUNG KHEMA LETTER THA;Lo;0;L;;;;;N;;;;;
+16112;GURUNG KHEMA LETTER DA;Lo;0;L;;;;;N;;;;;
+16113;GURUNG KHEMA LETTER DHA;Lo;0;L;;;;;N;;;;;
+16114;GURUNG KHEMA LETTER NA;Lo;0;L;;;;;N;;;;;
+16115;GURUNG KHEMA LETTER PA;Lo;0;L;;;;;N;;;;;
+16116;GURUNG KHEMA LETTER PHA;Lo;0;L;;;;;N;;;;;
+16117;GURUNG KHEMA LETTER BA;Lo;0;L;;;;;N;;;;;
+16118;GURUNG KHEMA LETTER BHA;Lo;0;L;;;;;N;;;;;
+16119;GURUNG KHEMA LETTER MA;Lo;0;L;;;;;N;;;;;
+1611A;GURUNG KHEMA LETTER YA;Lo;0;L;;;;;N;;;;;
+1611B;GURUNG KHEMA LETTER RA;Lo;0;L;;;;;N;;;;;
+1611C;GURUNG KHEMA LETTER LA;Lo;0;L;;;;;N;;;;;
+1611D;GURUNG KHEMA LETTER SA;Lo;0;L;;;;;N;;;;;
+1611E;GURUNG KHEMA VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+1611F;GURUNG KHEMA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+16120;GURUNG KHEMA VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+16121;GURUNG KHEMA VOWEL SIGN U;Mn;0;NSM;1611E 1611E;;;;N;;;;;
+16122;GURUNG KHEMA VOWEL SIGN UU;Mn;0;NSM;1611E 16129;;;;N;;;;;
+16123;GURUNG KHEMA VOWEL SIGN E;Mn;0;NSM;1611E 1611F;;;;N;;;;;
+16124;GURUNG KHEMA VOWEL SIGN EE;Mn;0;NSM;16129 1611F;;;;N;;;;;
+16125;GURUNG KHEMA VOWEL SIGN AI;Mn;0;NSM;1611E 16120;;;;N;;;;;
+16126;GURUNG KHEMA VOWEL SIGN O;Mn;0;NSM;16121 1611F;;;;N;;;;;
+16127;GURUNG KHEMA VOWEL SIGN OO;Mn;0;NSM;16122 1611F;;;;N;;;;;
+16128;GURUNG KHEMA VOWEL SIGN AU;Mn;0;NSM;16121 16120;;;;N;;;;;
+16129;GURUNG KHEMA VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+1612A;GURUNG KHEMA CONSONANT SIGN MEDIAL YA;Mc;0;L;;;;;N;;;;;
+1612B;GURUNG KHEMA CONSONANT SIGN MEDIAL VA;Mc;0;L;;;;;N;;;;;
+1612C;GURUNG KHEMA CONSONANT SIGN MEDIAL HA;Mc;0;L;;;;;N;;;;;
+1612D;GURUNG KHEMA SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1612E;GURUNG KHEMA CONSONANT SIGN MEDIAL RA;Mn;0;NSM;;;;;N;;;;;
+1612F;GURUNG KHEMA SIGN THOLHOMA;Mn;9;NSM;;;;;N;;;;;
+16130;GURUNG KHEMA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+16131;GURUNG KHEMA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+16132;GURUNG KHEMA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+16133;GURUNG KHEMA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+16134;GURUNG KHEMA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+16135;GURUNG KHEMA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+16136;GURUNG KHEMA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+16137;GURUNG KHEMA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+16138;GURUNG KHEMA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+16139;GURUNG KHEMA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
16800;BAMUM LETTER PHASE-A NGKUE MFON;Lo;0;L;;;;;N;;;;;
16801;BAMUM LETTER PHASE-A GBIEE FON;Lo;0;L;;;;;N;;;;;
16802;BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE;Lo;0;L;;;;;N;;;;;
@@ -25635,6 +29975,64 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
16B8D;PAHAWH HMONG CLAN SIGN TSWB;Lo;0;L;;;;;N;;;;;
16B8E;PAHAWH HMONG CLAN SIGN KWM;Lo;0;L;;;;;N;;;;;
16B8F;PAHAWH HMONG CLAN SIGN VWJ;Lo;0;L;;;;;N;;;;;
+16D40;KIRAT RAI SIGN ANUSVARA;Lm;0;L;;;;;N;;;;;
+16D41;KIRAT RAI SIGN TONPI;Lm;0;L;;;;;N;;;;;
+16D42;KIRAT RAI SIGN VISARGA;Lm;0;L;;;;;N;;;;;
+16D43;KIRAT RAI LETTER A;Lo;0;L;;;;;N;;;;;
+16D44;KIRAT RAI LETTER KA;Lo;0;L;;;;;N;;;;;
+16D45;KIRAT RAI LETTER KHA;Lo;0;L;;;;;N;;;;;
+16D46;KIRAT RAI LETTER GA;Lo;0;L;;;;;N;;;;;
+16D47;KIRAT RAI LETTER GHA;Lo;0;L;;;;;N;;;;;
+16D48;KIRAT RAI LETTER NGA;Lo;0;L;;;;;N;;;;;
+16D49;KIRAT RAI LETTER CA;Lo;0;L;;;;;N;;;;;
+16D4A;KIRAT RAI LETTER CHA;Lo;0;L;;;;;N;;;;;
+16D4B;KIRAT RAI LETTER JA;Lo;0;L;;;;;N;;;;;
+16D4C;KIRAT RAI LETTER JHA;Lo;0;L;;;;;N;;;;;
+16D4D;KIRAT RAI LETTER NYA;Lo;0;L;;;;;N;;;;;
+16D4E;KIRAT RAI LETTER TTA;Lo;0;L;;;;;N;;;;;
+16D4F;KIRAT RAI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+16D50;KIRAT RAI LETTER DDA;Lo;0;L;;;;;N;;;;;
+16D51;KIRAT RAI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+16D52;KIRAT RAI LETTER TA;Lo;0;L;;;;;N;;;;;
+16D53;KIRAT RAI LETTER THA;Lo;0;L;;;;;N;;;;;
+16D54;KIRAT RAI LETTER DA;Lo;0;L;;;;;N;;;;;
+16D55;KIRAT RAI LETTER DHA;Lo;0;L;;;;;N;;;;;
+16D56;KIRAT RAI LETTER NA;Lo;0;L;;;;;N;;;;;
+16D57;KIRAT RAI LETTER PA;Lo;0;L;;;;;N;;;;;
+16D58;KIRAT RAI LETTER PHA;Lo;0;L;;;;;N;;;;;
+16D59;KIRAT RAI LETTER BA;Lo;0;L;;;;;N;;;;;
+16D5A;KIRAT RAI LETTER BHA;Lo;0;L;;;;;N;;;;;
+16D5B;KIRAT RAI LETTER MA;Lo;0;L;;;;;N;;;;;
+16D5C;KIRAT RAI LETTER YA;Lo;0;L;;;;;N;;;;;
+16D5D;KIRAT RAI LETTER RA;Lo;0;L;;;;;N;;;;;
+16D5E;KIRAT RAI LETTER LA;Lo;0;L;;;;;N;;;;;
+16D5F;KIRAT RAI LETTER VA;Lo;0;L;;;;;N;;;;;
+16D60;KIRAT RAI LETTER SA;Lo;0;L;;;;;N;;;;;
+16D61;KIRAT RAI LETTER SHA;Lo;0;L;;;;;N;;;;;
+16D62;KIRAT RAI LETTER HA;Lo;0;L;;;;;N;;;;;
+16D63;KIRAT RAI VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+16D64;KIRAT RAI VOWEL SIGN I;Lo;0;L;;;;;N;;;;;
+16D65;KIRAT RAI VOWEL SIGN U;Lo;0;L;;;;;N;;;;;
+16D66;KIRAT RAI VOWEL SIGN UE;Lo;0;L;;;;;N;;;;;
+16D67;KIRAT RAI VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+16D68;KIRAT RAI VOWEL SIGN AI;Lo;0;L;16D67 16D67;;;;N;;;;;
+16D69;KIRAT RAI VOWEL SIGN O;Lo;0;L;16D63 16D67;;;;N;;;;;
+16D6A;KIRAT RAI VOWEL SIGN AU;Lo;0;L;16D69 16D67;;;;N;;;;;
+16D6B;KIRAT RAI SIGN VIRAMA;Lm;0;L;;;;;N;;;;;
+16D6C;KIRAT RAI SIGN SAAT;Lm;0;L;;;;;N;;;;;
+16D6D;KIRAT RAI SIGN YUPI;Po;0;L;;;;;N;;;;;
+16D6E;KIRAT RAI DANDA;Po;0;L;;;;;N;;;;;
+16D6F;KIRAT RAI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+16D70;KIRAT RAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+16D71;KIRAT RAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+16D72;KIRAT RAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+16D73;KIRAT RAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+16D74;KIRAT RAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+16D75;KIRAT RAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+16D76;KIRAT RAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+16D77;KIRAT RAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+16D78;KIRAT RAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+16D79;KIRAT RAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
16E40;MEDEFAIDRIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;16E60;
16E41;MEDEFAIDRIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;16E61;
16E42;MEDEFAIDRIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;16E62;
@@ -27122,6 +31520,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
18CD3;KHITAN SMALL SCRIPT CHARACTER-18CD3;Lo;0;L;;;;;N;;;;;
18CD4;KHITAN SMALL SCRIPT CHARACTER-18CD4;Lo;0;L;;;;;N;;;;;
18CD5;KHITAN SMALL SCRIPT CHARACTER-18CD5;Lo;0;L;;;;;N;;;;;
+18CFF;KHITAN SMALL SCRIPT CHARACTER-18CFF;Lo;0;L;;;;;N;;;;;
18D00;<Tangut Ideograph Supplement, First>;Lo;0;L;;;;;N;;;;;
18D08;<Tangut Ideograph Supplement, Last>;Lo;0;L;;;;;N;;;;;
1AFF0;KATAKANA LETTER MINNAN TONE-2;Lm;0;L;;;;;N;;;;;
@@ -27980,6 +32379,692 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1BCA1;SHORTHAND FORMAT CONTINUING OVERLAP;Cf;0;BN;;;;;N;;;;;
1BCA2;SHORTHAND FORMAT DOWN STEP;Cf;0;BN;;;;;N;;;;;
1BCA3;SHORTHAND FORMAT UP STEP;Cf;0;BN;;;;;N;;;;;
+1CC00;UP-POINTING GO-KART;So;0;ON;;;;;N;;;;;
+1CC01;RIGHT-POINTING GO-KART;So;0;ON;;;;;N;;;;;
+1CC02;LEFT-POINTING STICK FIGURE;So;0;ON;;;;;N;;;;;
+1CC03;RIGHT-POINTING STICK FIGURE;So;0;ON;;;;;N;;;;;
+1CC04;DOWN-POINTING STICK FIGURE;So;0;ON;;;;;N;;;;;
+1CC05;LOWER HORIZONTAL RULER SEGMENT;So;0;ON;;;;;N;;;;;
+1CC06;RIGHT VERTICAL RULER SEGMENT;So;0;ON;;;;;N;;;;;
+1CC07;LOWER RIGHT RULER SEGMENT;So;0;ON;;;;;N;;;;;
+1CC08;ANTENNA;So;0;ON;;;;;N;;;;;
+1CC09;HORIZONTAL RESISTOR SEGMENT;So;0;ON;;;;;N;;;;;
+1CC0A;VERTICAL RESISTOR SEGMENT;So;0;ON;;;;;N;;;;;
+1CC0B;LEFT THIRD INDUCTOR;So;0;ON;;;;;N;;;;;
+1CC0C;MIDDLE THIRD INDUCTOR;So;0;ON;;;;;N;;;;;
+1CC0D;RIGHT THIRD INDUCTOR;So;0;ON;;;;;N;;;;;
+1CC0E;LEFT-POINTING DIODE;So;0;ON;;;;;N;;;;;
+1CC0F;RIGHT-POINTING DIODE;So;0;ON;;;;;N;;;;;
+1CC10;NPN TRANSISTOR;So;0;ON;;;;;N;;;;;
+1CC11;PNP TRANSISTOR;So;0;ON;;;;;N;;;;;
+1CC12;RECEPTACLE;So;0;ON;;;;;N;;;;;
+1CC13;HORIZONTAL CAPACITOR;So;0;ON;;;;;N;;;;;
+1CC14;VERTICAL CAPACITOR;So;0;ON;;;;;N;;;;;
+1CC15;LOGIC GATE OR;So;0;ON;;;;;N;;;;;
+1CC16;LOGIC GATE AND;So;0;ON;;;;;N;;;;;
+1CC17;LOGIC GATE INVERTED INPUTS;So;0;ON;;;;;N;;;;;
+1CC18;LOGIC GATE INVERTED OUTPUT;So;0;ON;;;;;N;;;;;
+1CC19;LOGIC GATE BUFFER;So;0;ON;;;;;N;;;;;
+1CC1A;LOGIC GATE BUFFER WITH INVERTED INPUT;So;0;ON;;;;;N;;;;;
+1CC1B;BOX DRAWINGS LIGHT HORIZONTAL AND UPPER RIGHT;So;0;ON;;;;;N;;;;;
+1CC1C;BOX DRAWINGS LIGHT HORIZONTAL AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1CC1D;BOX DRAWINGS LIGHT TOP AND UPPER LEFT;So;0;ON;;;;;N;;;;;
+1CC1E;BOX DRAWINGS LIGHT BOTTOM AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+1CC1F;BOX DRAWINGS DOUBLE DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;;;;;
+1CC20;BOX DRAWINGS DOUBLE DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1CC21;SEPARATED BLOCK QUADRANT-1;So;0;ON;;;;;N;;;;;
+1CC22;SEPARATED BLOCK QUADRANT-2;So;0;ON;;;;;N;;;;;
+1CC23;SEPARATED BLOCK QUADRANT-12;So;0;ON;;;;;N;;;;;
+1CC24;SEPARATED BLOCK QUADRANT-3;So;0;ON;;;;;N;;;;;
+1CC25;SEPARATED BLOCK QUADRANT-13;So;0;ON;;;;;N;;;;;
+1CC26;SEPARATED BLOCK QUADRANT-23;So;0;ON;;;;;N;;;;;
+1CC27;SEPARATED BLOCK QUADRANT-123;So;0;ON;;;;;N;;;;;
+1CC28;SEPARATED BLOCK QUADRANT-4;So;0;ON;;;;;N;;;;;
+1CC29;SEPARATED BLOCK QUADRANT-14;So;0;ON;;;;;N;;;;;
+1CC2A;SEPARATED BLOCK QUADRANT-24;So;0;ON;;;;;N;;;;;
+1CC2B;SEPARATED BLOCK QUADRANT-124;So;0;ON;;;;;N;;;;;
+1CC2C;SEPARATED BLOCK QUADRANT-34;So;0;ON;;;;;N;;;;;
+1CC2D;SEPARATED BLOCK QUADRANT-134;So;0;ON;;;;;N;;;;;
+1CC2E;SEPARATED BLOCK QUADRANT-234;So;0;ON;;;;;N;;;;;
+1CC2F;SEPARATED BLOCK QUADRANT-1234;So;0;ON;;;;;N;;;;;
+1CC30;UPPER LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC31;UPPER CENTRE LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC32;UPPER CENTRE RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC33;UPPER RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC34;UPPER MIDDLE LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC35;UPPER LEFT QUARTER CIRCLE;So;0;ON;;;;;N;;;;;
+1CC36;UPPER RIGHT QUARTER CIRCLE;So;0;ON;;;;;N;;;;;
+1CC37;UPPER MIDDLE RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC38;LOWER MIDDLE LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC39;LOWER LEFT QUARTER CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3A;LOWER RIGHT QUARTER CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3B;LOWER MIDDLE RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3C;LOWER LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3D;LOWER CENTRE LEFT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3E;LOWER CENTRE RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC3F;LOWER RIGHT TWELFTH CIRCLE;So;0;ON;;;;;N;;;;;
+1CC40;SPARSE HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+1CC41;SPARSE VERTICAL FILL;So;0;ON;;;;;N;;;;;
+1CC42;ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+1CC43;DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+1CC44;DENSE VERTICAL FILL;So;0;ON;;;;;N;;;;;
+1CC45;DENSE HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+1CC46;SPECKLE FILL FRAME-1;So;0;ON;;;;;N;;;;;
+1CC47;SPECKLE FILL FRAME-2;So;0;ON;;;;;N;;;;;
+1CC48;LEFT-FACING BASSINET;So;0;ON;;;;;N;;;;;
+1CC49;RIGHT-FACING BASSINET;So;0;ON;;;;;N;;;;;
+1CC4A;FLYING SAUCER WITH BEAMS;So;0;ON;;;;;N;;;;;
+1CC4B;FLYING SAUCER WITHOUT BEAMS;So;0;ON;;;;;N;;;;;
+1CC4C;ALIEN MONSTER OPEN JAWS;So;0;ON;;;;;N;;;;;
+1CC4D;ALIEN MONSTER CLOSED JAWS;So;0;ON;;;;;N;;;;;
+1CC4E;ALIEN SQUID OPEN TENTACLES;So;0;ON;;;;;N;;;;;
+1CC4F;ALIEN SQUID CLOSED TENTACLES;So;0;ON;;;;;N;;;;;
+1CC50;ALIEN CRAB STEPPING RIGHT;So;0;ON;;;;;N;;;;;
+1CC51;ALIEN CRAB STEPPING LEFT;So;0;ON;;;;;N;;;;;
+1CC52;ALIEN SPIDER CROUCHING;So;0;ON;;;;;N;;;;;
+1CC53;ALIEN SPIDER SPREAD;So;0;ON;;;;;N;;;;;
+1CC54;ALIEN MONSTER STEP-1;So;0;ON;;;;;N;;;;;
+1CC55;ALIEN MONSTER STEP-2;So;0;ON;;;;;N;;;;;
+1CC56;LEFT-POINTING ROCKET SHIP;So;0;ON;;;;;N;;;;;
+1CC57;UP-POINTING ROCKET SHIP;So;0;ON;;;;;N;;;;;
+1CC58;RIGHT-POINTING ROCKET SHIP;So;0;ON;;;;;N;;;;;
+1CC59;DOWN-POINTING ROCKET SHIP;So;0;ON;;;;;N;;;;;
+1CC5A;TOP HALF LEFT-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC5B;TOP HALF FORWARD-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC5C;TOP HALF RIGHT-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC5D;BOTTOM HALF LEFT-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC5E;BOTTOM HALF FORWARD-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC5F;BOTTOM HALF RIGHT-FACING ROBOT;So;0;ON;;;;;N;;;;;
+1CC60;LEFT-POINTING ATOMIC BOMB;So;0;ON;;;;;N;;;;;
+1CC61;UP-POINTING ATOMIC BOMB;So;0;ON;;;;;N;;;;;
+1CC62;RIGHT-POINTING ATOMIC BOMB;So;0;ON;;;;;N;;;;;
+1CC63;DOWN-POINTING ATOMIC BOMB;So;0;ON;;;;;N;;;;;
+1CC64;MUSHROOM CLOUD;So;0;ON;;;;;N;;;;;
+1CC65;LEFT-POINTING RIFLE;So;0;ON;;;;;N;;;;;
+1CC66;UP-POINTING RIFLE;So;0;ON;;;;;N;;;;;
+1CC67;RIGHT-POINTING RIFLE;So;0;ON;;;;;N;;;;;
+1CC68;DOWN-POINTING RIFLE;So;0;ON;;;;;N;;;;;
+1CC69;EIGHT RAYS INWARD;So;0;ON;;;;;N;;;;;
+1CC6A;EIGHT RAYS OUTWARD;So;0;ON;;;;;N;;;;;
+1CC6B;BLACK LARGE CIRCLE MINUS LEFT QUARTER SECTION;So;0;ON;;;;;N;;;;;
+1CC6C;BLACK LARGE CIRCLE MINUS UPPER QUARTER SECTION;So;0;ON;;;;;N;;;;;
+1CC6D;BLACK LARGE CIRCLE MINUS RIGHT QUARTER SECTION;So;0;ON;;;;;N;;;;;
+1CC6E;BLACK LARGE CIRCLE MINUS LOWER QUARTER SECTION;So;0;ON;;;;;N;;;;;
+1CC6F;BLACK NEUTRAL FACE;So;0;ON;;;;;N;;;;;
+1CC70;LEFT-FACING SNAKE HEAD WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC71;UP-FACING SNAKE HEAD WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC72;RIGHT-FACING SNAKE HEAD WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC73;DOWN-FACING SNAKE HEAD WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC74;LEFT-FACING SNAKE HEAD WITH CLOSED MOUTH;So;0;ON;;;;;N;;;;;
+1CC75;UP-FACING SNAKE HEAD WITH CLOSED MOUTH;So;0;ON;;;;;N;;;;;
+1CC76;RIGHT-FACING SNAKE HEAD WITH CLOSED MOUTH;So;0;ON;;;;;N;;;;;
+1CC77;DOWN-FACING SNAKE HEAD WITH CLOSED MOUTH;So;0;ON;;;;;N;;;;;
+1CC78;LEFT-POINTING ENERGY WAVE;So;0;ON;;;;;N;;;;;
+1CC79;UP-POINTING ENERGY WAVE;So;0;ON;;;;;N;;;;;
+1CC7A;RIGHT-POINTING ENERGY WAVE;So;0;ON;;;;;N;;;;;
+1CC7B;DOWN-POINTING ENERGY WAVE;So;0;ON;;;;;N;;;;;
+1CC7C;SQUARE SPIRAL FROM TOP LEFT;So;0;ON;;;;;N;;;;;
+1CC7D;SQUARE SPIRAL FROM TOP RIGHT;So;0;ON;;;;;N;;;;;
+1CC7E;SQUARE SPIRAL FROM BOTTOM RIGHT;So;0;ON;;;;;N;;;;;
+1CC7F;SQUARE SPIRAL FROM BOTTOM LEFT;So;0;ON;;;;;N;;;;;
+1CC80;STRIPED LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;
+1CC81;STRIPED UP-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;
+1CC82;STRIPED RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;
+1CC83;STRIPED DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;
+1CC84;VERTICAL LADDER;So;0;ON;;;;;N;;;;;
+1CC85;HORIZONTAL LADDER;So;0;ON;;;;;N;;;;;
+1CC86;WHITE LOWER LEFT POINTER;So;0;ON;;;;;N;;;;;
+1CC87;WHITE LOWER RIGHT POINTER;So;0;ON;;;;;N;;;;;
+1CC88;TWO RINGS ALIGNED HORIZONTALLY;So;0;ON;;;;;N;;;;;
+1CC89;SQUARE FOUR CORNER SALTIRES;So;0;ON;;;;;N;;;;;
+1CC8A;SQUARE FOUR CORNER DIAGONALS;So;0;ON;;;;;N;;;;;
+1CC8B;SQUARE FOUR CORNER BLACK TRIANGLES;So;0;ON;;;;;N;;;;;
+1CC8C;SQUARE APERTURE;So;0;ON;;;;;N;;;;;
+1CC8D;INVERSE BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+1CC8E;LEFT AND UPPER ONE EIGHTH BLOCK CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+1CC8F;INVERSE BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+1CC90;VERTICAL LINE WITH FOUR TICK MARKS;So;0;ON;;;;;N;;;;;
+1CC91;HORIZONTAL LINE WITH FOUR TICK MARKS;So;0;ON;;;;;N;;;;;
+1CC92;LEFT-FACING FISH;So;0;ON;;;;;N;;;;;
+1CC93;RIGHT-FACING FISH;So;0;ON;;;;;N;;;;;
+1CC94;LEFT-FACING FISH WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC95;RIGHT-FACING FISH WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CC96;FLAPPING BIRD;So;0;ON;;;;;N;;;;;
+1CC97;LEFT-POINTING RACING CAR;So;0;ON;;;;;N;;;;;
+1CC98;UP-POINTING RACING CAR;So;0;ON;;;;;N;;;;;
+1CC99;RIGHT-POINTING RACING CAR;So;0;ON;;;;;N;;;;;
+1CC9A;DOWN-POINTING RACING CAR;So;0;ON;;;;;N;;;;;
+1CC9B;HORIZONTAL RACING CAR;So;0;ON;;;;;N;;;;;
+1CC9C;VERTICAL RACING CAR;So;0;ON;;;;;N;;;;;
+1CC9D;VERTICAL GO-KART;So;0;ON;;;;;N;;;;;
+1CC9E;LEFT-POINTING TANK;So;0;ON;;;;;N;;;;;
+1CC9F;RIGHT-POINTING TANK;So;0;ON;;;;;N;;;;;
+1CCA0;LEFT-POINTING ROCKET BOOSTER;So;0;ON;;;;;N;;;;;
+1CCA1;RIGHT-POINTING ROCKET BOOSTER;So;0;ON;;;;;N;;;;;
+1CCA2;LEFT-POINTING ROLLER COASTER CAR;So;0;ON;;;;;N;;;;;
+1CCA3;RIGHT-POINTING ROLLER COASTER CAR;So;0;ON;;;;;N;;;;;
+1CCA4;LEFT HALF FLYING SAUCER;So;0;ON;;;;;N;;;;;
+1CCA5;RIGHT HALF FLYING SAUCER;So;0;ON;;;;;N;;;;;
+1CCA6;UPPER LEFT QUADRANT FACE WITH OPEN EYES;So;0;ON;;;;;N;;;;;
+1CCA7;UPPER RIGHT QUADRANT FACE WITH OPEN EYES;So;0;ON;;;;;N;;;;;
+1CCA8;UPPER LEFT QUADRANT FACE WITH CLOSED EYES;So;0;ON;;;;;N;;;;;
+1CCA9;UPPER RIGHT QUADRANT FACE WITH CLOSED EYES;So;0;ON;;;;;N;;;;;
+1CCAA;LOWER LEFT QUADRANT SMILING FACE;So;0;ON;;;;;N;;;;;
+1CCAB;LOWER RIGHT QUADRANT SMILING FACE;So;0;ON;;;;;N;;;;;
+1CCAC;LOWER LEFT QUADRANT NEUTRAL FACE;So;0;ON;;;;;N;;;;;
+1CCAD;LOWER RIGHT QUADRANT NEUTRAL FACE;So;0;ON;;;;;N;;;;;
+1CCAE;LOWER LEFT QUADRANT FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CCAF;LOWER RIGHT QUADRANT FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
+1CCB0;LOWER LEFT QUADRANT FROWNING FACE;So;0;ON;;;;;N;;;;;
+1CCB1;LOWER RIGHT QUADRANT FROWNING FACE;So;0;ON;;;;;N;;;;;
+1CCB2;UPPER LEFT QUADRANT TELEVISION;So;0;ON;;;;;N;;;;;
+1CCB3;UPPER RIGHT QUADRANT TELEVISION;So;0;ON;;;;;N;;;;;
+1CCB4;LOWER LEFT QUADRANT TELEVISION;So;0;ON;;;;;N;;;;;
+1CCB5;LOWER RIGHT QUADRANT TELEVISION;So;0;ON;;;;;N;;;;;
+1CCB6;UPPER LEFT QUADRANT MICROCOMPUTER;So;0;ON;;;;;N;;;;;
+1CCB7;UPPER RIGHT QUADRANT MICROCOMPUTER;So;0;ON;;;;;N;;;;;
+1CCB8;LOWER LEFT QUADRANT MICROCOMPUTER;So;0;ON;;;;;N;;;;;
+1CCB9;LOWER RIGHT QUADRANT MICROCOMPUTER;So;0;ON;;;;;N;;;;;
+1CCBA;UPPER LEFT QUADRANT CHESS KING;So;0;ON;;;;;N;;;;;
+1CCBB;UPPER RIGHT QUADRANT CHESS KING;So;0;ON;;;;;N;;;;;
+1CCBC;LOWER LEFT QUADRANT CHESS KING;So;0;ON;;;;;N;;;;;
+1CCBD;LOWER RIGHT QUADRANT CHESS KING;So;0;ON;;;;;N;;;;;
+1CCBE;UPPER LEFT QUADRANT CHESS QUEEN;So;0;ON;;;;;N;;;;;
+1CCBF;UPPER RIGHT QUADRANT CHESS QUEEN;So;0;ON;;;;;N;;;;;
+1CCC0;LOWER LEFT QUADRANT CHESS QUEEN;So;0;ON;;;;;N;;;;;
+1CCC1;LOWER RIGHT QUADRANT CHESS QUEEN;So;0;ON;;;;;N;;;;;
+1CCC2;UPPER LEFT QUADRANT CHESS ROOK;So;0;ON;;;;;N;;;;;
+1CCC3;UPPER RIGHT QUADRANT CHESS ROOK;So;0;ON;;;;;N;;;;;
+1CCC4;LOWER LEFT QUADRANT CHESS ROOK;So;0;ON;;;;;N;;;;;
+1CCC5;LOWER RIGHT QUADRANT CHESS ROOK;So;0;ON;;;;;N;;;;;
+1CCC6;UPPER LEFT QUADRANT CHESS BISHOP;So;0;ON;;;;;N;;;;;
+1CCC7;UPPER RIGHT QUADRANT CHESS BISHOP;So;0;ON;;;;;N;;;;;
+1CCC8;LOWER LEFT QUADRANT CHESS BISHOP;So;0;ON;;;;;N;;;;;
+1CCC9;LOWER RIGHT QUADRANT CHESS BISHOP;So;0;ON;;;;;N;;;;;
+1CCCA;UPPER LEFT QUADRANT CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+1CCCB;UPPER RIGHT QUADRANT CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+1CCCC;LOWER LEFT QUADRANT CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+1CCCD;LOWER RIGHT QUADRANT CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+1CCCE;UPPER LEFT QUADRANT CHESS PAWN;So;0;ON;;;;;N;;;;;
+1CCCF;UPPER RIGHT QUADRANT CHESS PAWN;So;0;ON;;;;;N;;;;;
+1CCD0;LOWER LEFT QUADRANT CHESS PAWN;So;0;ON;;;;;N;;;;;
+1CCD1;LOWER RIGHT QUADRANT CHESS PAWN;So;0;ON;;;;;N;;;;;
+1CCD2;UPPER LEFT QUADRANT STANDING KNIGHT;So;0;ON;;;;;N;;;;;
+1CCD3;UPPER RIGHT QUADRANT STANDING KNIGHT;So;0;ON;;;;;N;;;;;
+1CCD4;LOWER LEFT QUADRANT STANDING KNIGHT;So;0;ON;;;;;N;;;;;
+1CCD5;LOWER RIGHT QUADRANT STANDING KNIGHT;So;0;ON;;;;;N;;;;;
+1CCD6;OUTLINED LATIN CAPITAL LETTER A;So;0;L;<font> 0041;;;;N;;;;;
+1CCD7;OUTLINED LATIN CAPITAL LETTER B;So;0;L;<font> 0042;;;;N;;;;;
+1CCD8;OUTLINED LATIN CAPITAL LETTER C;So;0;L;<font> 0043;;;;N;;;;;
+1CCD9;OUTLINED LATIN CAPITAL LETTER D;So;0;L;<font> 0044;;;;N;;;;;
+1CCDA;OUTLINED LATIN CAPITAL LETTER E;So;0;L;<font> 0045;;;;N;;;;;
+1CCDB;OUTLINED LATIN CAPITAL LETTER F;So;0;L;<font> 0046;;;;N;;;;;
+1CCDC;OUTLINED LATIN CAPITAL LETTER G;So;0;L;<font> 0047;;;;N;;;;;
+1CCDD;OUTLINED LATIN CAPITAL LETTER H;So;0;L;<font> 0048;;;;N;;;;;
+1CCDE;OUTLINED LATIN CAPITAL LETTER I;So;0;L;<font> 0049;;;;N;;;;;
+1CCDF;OUTLINED LATIN CAPITAL LETTER J;So;0;L;<font> 004A;;;;N;;;;;
+1CCE0;OUTLINED LATIN CAPITAL LETTER K;So;0;L;<font> 004B;;;;N;;;;;
+1CCE1;OUTLINED LATIN CAPITAL LETTER L;So;0;L;<font> 004C;;;;N;;;;;
+1CCE2;OUTLINED LATIN CAPITAL LETTER M;So;0;L;<font> 004D;;;;N;;;;;
+1CCE3;OUTLINED LATIN CAPITAL LETTER N;So;0;L;<font> 004E;;;;N;;;;;
+1CCE4;OUTLINED LATIN CAPITAL LETTER O;So;0;L;<font> 004F;;;;N;;;;;
+1CCE5;OUTLINED LATIN CAPITAL LETTER P;So;0;L;<font> 0050;;;;N;;;;;
+1CCE6;OUTLINED LATIN CAPITAL LETTER Q;So;0;L;<font> 0051;;;;N;;;;;
+1CCE7;OUTLINED LATIN CAPITAL LETTER R;So;0;L;<font> 0052;;;;N;;;;;
+1CCE8;OUTLINED LATIN CAPITAL LETTER S;So;0;L;<font> 0053;;;;N;;;;;
+1CCE9;OUTLINED LATIN CAPITAL LETTER T;So;0;L;<font> 0054;;;;N;;;;;
+1CCEA;OUTLINED LATIN CAPITAL LETTER U;So;0;L;<font> 0055;;;;N;;;;;
+1CCEB;OUTLINED LATIN CAPITAL LETTER V;So;0;L;<font> 0056;;;;N;;;;;
+1CCEC;OUTLINED LATIN CAPITAL LETTER W;So;0;L;<font> 0057;;;;N;;;;;
+1CCED;OUTLINED LATIN CAPITAL LETTER X;So;0;L;<font> 0058;;;;N;;;;;
+1CCEE;OUTLINED LATIN CAPITAL LETTER Y;So;0;L;<font> 0059;;;;N;;;;;
+1CCEF;OUTLINED LATIN CAPITAL LETTER Z;So;0;L;<font> 005A;;;;N;;;;;
+1CCF0;OUTLINED DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1CCF1;OUTLINED DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1CCF2;OUTLINED DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1CCF3;OUTLINED DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1CCF4;OUTLINED DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1CCF5;OUTLINED DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1CCF6;OUTLINED DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1CCF7;OUTLINED DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1CCF8;OUTLINED DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1CCF9;OUTLINED DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1CD00;BLOCK OCTANT-3;So;0;ON;;;;;N;;;;;
+1CD01;BLOCK OCTANT-23;So;0;ON;;;;;N;;;;;
+1CD02;BLOCK OCTANT-123;So;0;ON;;;;;N;;;;;
+1CD03;BLOCK OCTANT-4;So;0;ON;;;;;N;;;;;
+1CD04;BLOCK OCTANT-14;So;0;ON;;;;;N;;;;;
+1CD05;BLOCK OCTANT-124;So;0;ON;;;;;N;;;;;
+1CD06;BLOCK OCTANT-34;So;0;ON;;;;;N;;;;;
+1CD07;BLOCK OCTANT-134;So;0;ON;;;;;N;;;;;
+1CD08;BLOCK OCTANT-234;So;0;ON;;;;;N;;;;;
+1CD09;BLOCK OCTANT-5;So;0;ON;;;;;N;;;;;
+1CD0A;BLOCK OCTANT-15;So;0;ON;;;;;N;;;;;
+1CD0B;BLOCK OCTANT-25;So;0;ON;;;;;N;;;;;
+1CD0C;BLOCK OCTANT-125;So;0;ON;;;;;N;;;;;
+1CD0D;BLOCK OCTANT-135;So;0;ON;;;;;N;;;;;
+1CD0E;BLOCK OCTANT-235;So;0;ON;;;;;N;;;;;
+1CD0F;BLOCK OCTANT-1235;So;0;ON;;;;;N;;;;;
+1CD10;BLOCK OCTANT-45;So;0;ON;;;;;N;;;;;
+1CD11;BLOCK OCTANT-145;So;0;ON;;;;;N;;;;;
+1CD12;BLOCK OCTANT-245;So;0;ON;;;;;N;;;;;
+1CD13;BLOCK OCTANT-1245;So;0;ON;;;;;N;;;;;
+1CD14;BLOCK OCTANT-345;So;0;ON;;;;;N;;;;;
+1CD15;BLOCK OCTANT-1345;So;0;ON;;;;;N;;;;;
+1CD16;BLOCK OCTANT-2345;So;0;ON;;;;;N;;;;;
+1CD17;BLOCK OCTANT-12345;So;0;ON;;;;;N;;;;;
+1CD18;BLOCK OCTANT-6;So;0;ON;;;;;N;;;;;
+1CD19;BLOCK OCTANT-16;So;0;ON;;;;;N;;;;;
+1CD1A;BLOCK OCTANT-26;So;0;ON;;;;;N;;;;;
+1CD1B;BLOCK OCTANT-126;So;0;ON;;;;;N;;;;;
+1CD1C;BLOCK OCTANT-36;So;0;ON;;;;;N;;;;;
+1CD1D;BLOCK OCTANT-136;So;0;ON;;;;;N;;;;;
+1CD1E;BLOCK OCTANT-236;So;0;ON;;;;;N;;;;;
+1CD1F;BLOCK OCTANT-1236;So;0;ON;;;;;N;;;;;
+1CD20;BLOCK OCTANT-146;So;0;ON;;;;;N;;;;;
+1CD21;BLOCK OCTANT-246;So;0;ON;;;;;N;;;;;
+1CD22;BLOCK OCTANT-1246;So;0;ON;;;;;N;;;;;
+1CD23;BLOCK OCTANT-346;So;0;ON;;;;;N;;;;;
+1CD24;BLOCK OCTANT-1346;So;0;ON;;;;;N;;;;;
+1CD25;BLOCK OCTANT-2346;So;0;ON;;;;;N;;;;;
+1CD26;BLOCK OCTANT-12346;So;0;ON;;;;;N;;;;;
+1CD27;BLOCK OCTANT-56;So;0;ON;;;;;N;;;;;
+1CD28;BLOCK OCTANT-156;So;0;ON;;;;;N;;;;;
+1CD29;BLOCK OCTANT-256;So;0;ON;;;;;N;;;;;
+1CD2A;BLOCK OCTANT-1256;So;0;ON;;;;;N;;;;;
+1CD2B;BLOCK OCTANT-356;So;0;ON;;;;;N;;;;;
+1CD2C;BLOCK OCTANT-1356;So;0;ON;;;;;N;;;;;
+1CD2D;BLOCK OCTANT-2356;So;0;ON;;;;;N;;;;;
+1CD2E;BLOCK OCTANT-12356;So;0;ON;;;;;N;;;;;
+1CD2F;BLOCK OCTANT-456;So;0;ON;;;;;N;;;;;
+1CD30;BLOCK OCTANT-1456;So;0;ON;;;;;N;;;;;
+1CD31;BLOCK OCTANT-2456;So;0;ON;;;;;N;;;;;
+1CD32;BLOCK OCTANT-12456;So;0;ON;;;;;N;;;;;
+1CD33;BLOCK OCTANT-3456;So;0;ON;;;;;N;;;;;
+1CD34;BLOCK OCTANT-13456;So;0;ON;;;;;N;;;;;
+1CD35;BLOCK OCTANT-23456;So;0;ON;;;;;N;;;;;
+1CD36;BLOCK OCTANT-17;So;0;ON;;;;;N;;;;;
+1CD37;BLOCK OCTANT-27;So;0;ON;;;;;N;;;;;
+1CD38;BLOCK OCTANT-127;So;0;ON;;;;;N;;;;;
+1CD39;BLOCK OCTANT-37;So;0;ON;;;;;N;;;;;
+1CD3A;BLOCK OCTANT-137;So;0;ON;;;;;N;;;;;
+1CD3B;BLOCK OCTANT-237;So;0;ON;;;;;N;;;;;
+1CD3C;BLOCK OCTANT-1237;So;0;ON;;;;;N;;;;;
+1CD3D;BLOCK OCTANT-47;So;0;ON;;;;;N;;;;;
+1CD3E;BLOCK OCTANT-147;So;0;ON;;;;;N;;;;;
+1CD3F;BLOCK OCTANT-247;So;0;ON;;;;;N;;;;;
+1CD40;BLOCK OCTANT-1247;So;0;ON;;;;;N;;;;;
+1CD41;BLOCK OCTANT-347;So;0;ON;;;;;N;;;;;
+1CD42;BLOCK OCTANT-1347;So;0;ON;;;;;N;;;;;
+1CD43;BLOCK OCTANT-2347;So;0;ON;;;;;N;;;;;
+1CD44;BLOCK OCTANT-12347;So;0;ON;;;;;N;;;;;
+1CD45;BLOCK OCTANT-157;So;0;ON;;;;;N;;;;;
+1CD46;BLOCK OCTANT-257;So;0;ON;;;;;N;;;;;
+1CD47;BLOCK OCTANT-1257;So;0;ON;;;;;N;;;;;
+1CD48;BLOCK OCTANT-357;So;0;ON;;;;;N;;;;;
+1CD49;BLOCK OCTANT-2357;So;0;ON;;;;;N;;;;;
+1CD4A;BLOCK OCTANT-12357;So;0;ON;;;;;N;;;;;
+1CD4B;BLOCK OCTANT-457;So;0;ON;;;;;N;;;;;
+1CD4C;BLOCK OCTANT-1457;So;0;ON;;;;;N;;;;;
+1CD4D;BLOCK OCTANT-12457;So;0;ON;;;;;N;;;;;
+1CD4E;BLOCK OCTANT-3457;So;0;ON;;;;;N;;;;;
+1CD4F;BLOCK OCTANT-13457;So;0;ON;;;;;N;;;;;
+1CD50;BLOCK OCTANT-23457;So;0;ON;;;;;N;;;;;
+1CD51;BLOCK OCTANT-67;So;0;ON;;;;;N;;;;;
+1CD52;BLOCK OCTANT-167;So;0;ON;;;;;N;;;;;
+1CD53;BLOCK OCTANT-267;So;0;ON;;;;;N;;;;;
+1CD54;BLOCK OCTANT-1267;So;0;ON;;;;;N;;;;;
+1CD55;BLOCK OCTANT-367;So;0;ON;;;;;N;;;;;
+1CD56;BLOCK OCTANT-1367;So;0;ON;;;;;N;;;;;
+1CD57;BLOCK OCTANT-2367;So;0;ON;;;;;N;;;;;
+1CD58;BLOCK OCTANT-12367;So;0;ON;;;;;N;;;;;
+1CD59;BLOCK OCTANT-467;So;0;ON;;;;;N;;;;;
+1CD5A;BLOCK OCTANT-1467;So;0;ON;;;;;N;;;;;
+1CD5B;BLOCK OCTANT-2467;So;0;ON;;;;;N;;;;;
+1CD5C;BLOCK OCTANT-12467;So;0;ON;;;;;N;;;;;
+1CD5D;BLOCK OCTANT-3467;So;0;ON;;;;;N;;;;;
+1CD5E;BLOCK OCTANT-13467;So;0;ON;;;;;N;;;;;
+1CD5F;BLOCK OCTANT-23467;So;0;ON;;;;;N;;;;;
+1CD60;BLOCK OCTANT-123467;So;0;ON;;;;;N;;;;;
+1CD61;BLOCK OCTANT-567;So;0;ON;;;;;N;;;;;
+1CD62;BLOCK OCTANT-1567;So;0;ON;;;;;N;;;;;
+1CD63;BLOCK OCTANT-2567;So;0;ON;;;;;N;;;;;
+1CD64;BLOCK OCTANT-12567;So;0;ON;;;;;N;;;;;
+1CD65;BLOCK OCTANT-3567;So;0;ON;;;;;N;;;;;
+1CD66;BLOCK OCTANT-13567;So;0;ON;;;;;N;;;;;
+1CD67;BLOCK OCTANT-23567;So;0;ON;;;;;N;;;;;
+1CD68;BLOCK OCTANT-123567;So;0;ON;;;;;N;;;;;
+1CD69;BLOCK OCTANT-4567;So;0;ON;;;;;N;;;;;
+1CD6A;BLOCK OCTANT-14567;So;0;ON;;;;;N;;;;;
+1CD6B;BLOCK OCTANT-24567;So;0;ON;;;;;N;;;;;
+1CD6C;BLOCK OCTANT-124567;So;0;ON;;;;;N;;;;;
+1CD6D;BLOCK OCTANT-34567;So;0;ON;;;;;N;;;;;
+1CD6E;BLOCK OCTANT-134567;So;0;ON;;;;;N;;;;;
+1CD6F;BLOCK OCTANT-234567;So;0;ON;;;;;N;;;;;
+1CD70;BLOCK OCTANT-1234567;So;0;ON;;;;;N;;;;;
+1CD71;BLOCK OCTANT-18;So;0;ON;;;;;N;;;;;
+1CD72;BLOCK OCTANT-28;So;0;ON;;;;;N;;;;;
+1CD73;BLOCK OCTANT-128;So;0;ON;;;;;N;;;;;
+1CD74;BLOCK OCTANT-38;So;0;ON;;;;;N;;;;;
+1CD75;BLOCK OCTANT-138;So;0;ON;;;;;N;;;;;
+1CD76;BLOCK OCTANT-238;So;0;ON;;;;;N;;;;;
+1CD77;BLOCK OCTANT-1238;So;0;ON;;;;;N;;;;;
+1CD78;BLOCK OCTANT-48;So;0;ON;;;;;N;;;;;
+1CD79;BLOCK OCTANT-148;So;0;ON;;;;;N;;;;;
+1CD7A;BLOCK OCTANT-248;So;0;ON;;;;;N;;;;;
+1CD7B;BLOCK OCTANT-1248;So;0;ON;;;;;N;;;;;
+1CD7C;BLOCK OCTANT-348;So;0;ON;;;;;N;;;;;
+1CD7D;BLOCK OCTANT-1348;So;0;ON;;;;;N;;;;;
+1CD7E;BLOCK OCTANT-2348;So;0;ON;;;;;N;;;;;
+1CD7F;BLOCK OCTANT-12348;So;0;ON;;;;;N;;;;;
+1CD80;BLOCK OCTANT-58;So;0;ON;;;;;N;;;;;
+1CD81;BLOCK OCTANT-158;So;0;ON;;;;;N;;;;;
+1CD82;BLOCK OCTANT-258;So;0;ON;;;;;N;;;;;
+1CD83;BLOCK OCTANT-1258;So;0;ON;;;;;N;;;;;
+1CD84;BLOCK OCTANT-358;So;0;ON;;;;;N;;;;;
+1CD85;BLOCK OCTANT-1358;So;0;ON;;;;;N;;;;;
+1CD86;BLOCK OCTANT-2358;So;0;ON;;;;;N;;;;;
+1CD87;BLOCK OCTANT-12358;So;0;ON;;;;;N;;;;;
+1CD88;BLOCK OCTANT-458;So;0;ON;;;;;N;;;;;
+1CD89;BLOCK OCTANT-1458;So;0;ON;;;;;N;;;;;
+1CD8A;BLOCK OCTANT-2458;So;0;ON;;;;;N;;;;;
+1CD8B;BLOCK OCTANT-12458;So;0;ON;;;;;N;;;;;
+1CD8C;BLOCK OCTANT-3458;So;0;ON;;;;;N;;;;;
+1CD8D;BLOCK OCTANT-13458;So;0;ON;;;;;N;;;;;
+1CD8E;BLOCK OCTANT-23458;So;0;ON;;;;;N;;;;;
+1CD8F;BLOCK OCTANT-123458;So;0;ON;;;;;N;;;;;
+1CD90;BLOCK OCTANT-168;So;0;ON;;;;;N;;;;;
+1CD91;BLOCK OCTANT-268;So;0;ON;;;;;N;;;;;
+1CD92;BLOCK OCTANT-1268;So;0;ON;;;;;N;;;;;
+1CD93;BLOCK OCTANT-368;So;0;ON;;;;;N;;;;;
+1CD94;BLOCK OCTANT-2368;So;0;ON;;;;;N;;;;;
+1CD95;BLOCK OCTANT-12368;So;0;ON;;;;;N;;;;;
+1CD96;BLOCK OCTANT-468;So;0;ON;;;;;N;;;;;
+1CD97;BLOCK OCTANT-1468;So;0;ON;;;;;N;;;;;
+1CD98;BLOCK OCTANT-12468;So;0;ON;;;;;N;;;;;
+1CD99;BLOCK OCTANT-3468;So;0;ON;;;;;N;;;;;
+1CD9A;BLOCK OCTANT-13468;So;0;ON;;;;;N;;;;;
+1CD9B;BLOCK OCTANT-23468;So;0;ON;;;;;N;;;;;
+1CD9C;BLOCK OCTANT-568;So;0;ON;;;;;N;;;;;
+1CD9D;BLOCK OCTANT-1568;So;0;ON;;;;;N;;;;;
+1CD9E;BLOCK OCTANT-2568;So;0;ON;;;;;N;;;;;
+1CD9F;BLOCK OCTANT-12568;So;0;ON;;;;;N;;;;;
+1CDA0;BLOCK OCTANT-3568;So;0;ON;;;;;N;;;;;
+1CDA1;BLOCK OCTANT-13568;So;0;ON;;;;;N;;;;;
+1CDA2;BLOCK OCTANT-23568;So;0;ON;;;;;N;;;;;
+1CDA3;BLOCK OCTANT-123568;So;0;ON;;;;;N;;;;;
+1CDA4;BLOCK OCTANT-4568;So;0;ON;;;;;N;;;;;
+1CDA5;BLOCK OCTANT-14568;So;0;ON;;;;;N;;;;;
+1CDA6;BLOCK OCTANT-24568;So;0;ON;;;;;N;;;;;
+1CDA7;BLOCK OCTANT-124568;So;0;ON;;;;;N;;;;;
+1CDA8;BLOCK OCTANT-34568;So;0;ON;;;;;N;;;;;
+1CDA9;BLOCK OCTANT-134568;So;0;ON;;;;;N;;;;;
+1CDAA;BLOCK OCTANT-234568;So;0;ON;;;;;N;;;;;
+1CDAB;BLOCK OCTANT-1234568;So;0;ON;;;;;N;;;;;
+1CDAC;BLOCK OCTANT-178;So;0;ON;;;;;N;;;;;
+1CDAD;BLOCK OCTANT-278;So;0;ON;;;;;N;;;;;
+1CDAE;BLOCK OCTANT-1278;So;0;ON;;;;;N;;;;;
+1CDAF;BLOCK OCTANT-378;So;0;ON;;;;;N;;;;;
+1CDB0;BLOCK OCTANT-1378;So;0;ON;;;;;N;;;;;
+1CDB1;BLOCK OCTANT-2378;So;0;ON;;;;;N;;;;;
+1CDB2;BLOCK OCTANT-12378;So;0;ON;;;;;N;;;;;
+1CDB3;BLOCK OCTANT-478;So;0;ON;;;;;N;;;;;
+1CDB4;BLOCK OCTANT-1478;So;0;ON;;;;;N;;;;;
+1CDB5;BLOCK OCTANT-2478;So;0;ON;;;;;N;;;;;
+1CDB6;BLOCK OCTANT-12478;So;0;ON;;;;;N;;;;;
+1CDB7;BLOCK OCTANT-3478;So;0;ON;;;;;N;;;;;
+1CDB8;BLOCK OCTANT-13478;So;0;ON;;;;;N;;;;;
+1CDB9;BLOCK OCTANT-23478;So;0;ON;;;;;N;;;;;
+1CDBA;BLOCK OCTANT-123478;So;0;ON;;;;;N;;;;;
+1CDBB;BLOCK OCTANT-578;So;0;ON;;;;;N;;;;;
+1CDBC;BLOCK OCTANT-1578;So;0;ON;;;;;N;;;;;
+1CDBD;BLOCK OCTANT-2578;So;0;ON;;;;;N;;;;;
+1CDBE;BLOCK OCTANT-12578;So;0;ON;;;;;N;;;;;
+1CDBF;BLOCK OCTANT-3578;So;0;ON;;;;;N;;;;;
+1CDC0;BLOCK OCTANT-13578;So;0;ON;;;;;N;;;;;
+1CDC1;BLOCK OCTANT-23578;So;0;ON;;;;;N;;;;;
+1CDC2;BLOCK OCTANT-123578;So;0;ON;;;;;N;;;;;
+1CDC3;BLOCK OCTANT-4578;So;0;ON;;;;;N;;;;;
+1CDC4;BLOCK OCTANT-14578;So;0;ON;;;;;N;;;;;
+1CDC5;BLOCK OCTANT-24578;So;0;ON;;;;;N;;;;;
+1CDC6;BLOCK OCTANT-124578;So;0;ON;;;;;N;;;;;
+1CDC7;BLOCK OCTANT-34578;So;0;ON;;;;;N;;;;;
+1CDC8;BLOCK OCTANT-134578;So;0;ON;;;;;N;;;;;
+1CDC9;BLOCK OCTANT-234578;So;0;ON;;;;;N;;;;;
+1CDCA;BLOCK OCTANT-1234578;So;0;ON;;;;;N;;;;;
+1CDCB;BLOCK OCTANT-678;So;0;ON;;;;;N;;;;;
+1CDCC;BLOCK OCTANT-1678;So;0;ON;;;;;N;;;;;
+1CDCD;BLOCK OCTANT-2678;So;0;ON;;;;;N;;;;;
+1CDCE;BLOCK OCTANT-12678;So;0;ON;;;;;N;;;;;
+1CDCF;BLOCK OCTANT-3678;So;0;ON;;;;;N;;;;;
+1CDD0;BLOCK OCTANT-13678;So;0;ON;;;;;N;;;;;
+1CDD1;BLOCK OCTANT-23678;So;0;ON;;;;;N;;;;;
+1CDD2;BLOCK OCTANT-123678;So;0;ON;;;;;N;;;;;
+1CDD3;BLOCK OCTANT-4678;So;0;ON;;;;;N;;;;;
+1CDD4;BLOCK OCTANT-14678;So;0;ON;;;;;N;;;;;
+1CDD5;BLOCK OCTANT-24678;So;0;ON;;;;;N;;;;;
+1CDD6;BLOCK OCTANT-124678;So;0;ON;;;;;N;;;;;
+1CDD7;BLOCK OCTANT-34678;So;0;ON;;;;;N;;;;;
+1CDD8;BLOCK OCTANT-134678;So;0;ON;;;;;N;;;;;
+1CDD9;BLOCK OCTANT-234678;So;0;ON;;;;;N;;;;;
+1CDDA;BLOCK OCTANT-1234678;So;0;ON;;;;;N;;;;;
+1CDDB;BLOCK OCTANT-15678;So;0;ON;;;;;N;;;;;
+1CDDC;BLOCK OCTANT-25678;So;0;ON;;;;;N;;;;;
+1CDDD;BLOCK OCTANT-125678;So;0;ON;;;;;N;;;;;
+1CDDE;BLOCK OCTANT-35678;So;0;ON;;;;;N;;;;;
+1CDDF;BLOCK OCTANT-235678;So;0;ON;;;;;N;;;;;
+1CDE0;BLOCK OCTANT-1235678;So;0;ON;;;;;N;;;;;
+1CDE1;BLOCK OCTANT-45678;So;0;ON;;;;;N;;;;;
+1CDE2;BLOCK OCTANT-145678;So;0;ON;;;;;N;;;;;
+1CDE3;BLOCK OCTANT-1245678;So;0;ON;;;;;N;;;;;
+1CDE4;BLOCK OCTANT-1345678;So;0;ON;;;;;N;;;;;
+1CDE5;BLOCK OCTANT-2345678;So;0;ON;;;;;N;;;;;
+1CDE6;TOP HALF STANDING PERSON;So;0;ON;;;;;N;;;;;
+1CDE7;BOTTOM HALF STANDING PERSON;So;0;ON;;;;;N;;;;;
+1CDE8;TOP HALF RIGHT-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;;
+1CDE9;BOTTOM HALF RIGHT-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;;
+1CDEA;TOP HALF RIGHT-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;;
+1CDEB;BOTTOM HALF RIGHT-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;;
+1CDEC;TOP HALF LEFT-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;;
+1CDED;BOTTOM HALF LEFT-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;;
+1CDEE;TOP HALF LEFT-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;;
+1CDEF;BOTTOM HALF LEFT-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;;
+1CDF0;TOP HALF FORWARD-FACING RUNNER;So;0;ON;;;;;N;;;;;
+1CDF1;BOTTOM HALF FORWARD-FACING RUNNER FRAME-1;So;0;ON;;;;;N;;;;;
+1CDF2;BOTTOM HALF FORWARD-FACING RUNNER FRAME-2;So;0;ON;;;;;N;;;;;
+1CDF3;BOTTOM HALF FORWARD-FACING RUNNER FRAME-3;So;0;ON;;;;;N;;;;;
+1CDF4;BOTTOM HALF FORWARD-FACING RUNNER FRAME-4;So;0;ON;;;;;N;;;;;
+1CDF5;MOON LANDER;So;0;ON;;;;;N;;;;;
+1CDF6;TOP HALF FLAILING ROBOT FRAME-1;So;0;ON;;;;;N;;;;;
+1CDF7;TOP HALF FLAILING ROBOT FRAME-2;So;0;ON;;;;;N;;;;;
+1CDF8;DOWN-POINTING AIRPLANE;So;0;ON;;;;;N;;;;;
+1CDF9;LEFT-POINTING AIRPLANE;So;0;ON;;;;;N;;;;;
+1CDFA;SMALL UP-POINTING AIRPLANE;So;0;ON;;;;;N;;;;;
+1CDFB;UP-POINTING FROG;So;0;ON;;;;;N;;;;;
+1CDFC;DOWN-POINTING FROG;So;0;ON;;;;;N;;;;;
+1CDFD;EXPLOSION FRAME-1;So;0;ON;;;;;N;;;;;
+1CDFE;EXPLOSION FRAME-2;So;0;ON;;;;;N;;;;;
+1CDFF;EXPLOSION FRAME-3;So;0;ON;;;;;N;;;;;
+1CE00;RIGHT HALF AND LEFT HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1CE01;LOWER HALF AND UPPER HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1CE02;EXPLOSION AT HORIZON;So;0;ON;;;;;N;;;;;
+1CE03;UPPER HALF HEAVY WHITE SQUARE;So;0;ON;;;;;N;;;;;
+1CE04;LOWER HALF HEAVY WHITE SQUARE;So;0;ON;;;;;N;;;;;
+1CE05;HEAVY WHITE SQUARE CONTAINING BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;
+1CE06;WHITE VERTICAL RECTANGLE WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
+1CE07;TOP LEFT BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;;;;;
+1CE08;FUNNEL;So;0;ON;;;;;N;;;;;
+1CE09;BOX DRAWINGS DOUBLE DIAGONAL LOWER LEFT TO MIDDLE CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1CE0A;BOX DRAWINGS DOUBLE DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;;
+1CE0B;LEFT HALF WHITE ELLIPSE;So;0;ON;;;;;N;;;;;
+1CE0C;RIGHT HALF WHITE ELLIPSE;So;0;ON;;;;;N;;;;;
+1CE0D;LEFT HALF TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;;;;;
+1CE0E;RIGHT HALF TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;;;;;
+1CE0F;HORIZONTAL LINE WITH TICK MARK;So;0;ON;;;;;N;;;;;
+1CE10;LEFT HALF HORIZONTAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE11;RIGHT HALF HORIZONTAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE12;HORIZONTAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE13;LOWER HALF VERTICAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE14;UPPER HALF VERTICAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE15;VERTICAL LINE WITH THREE TICK MARKS;So;0;ON;;;;;N;;;;;
+1CE16;BOX DRAWINGS LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;;
+1CE17;BOX DRAWINGS LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;;
+1CE18;BOX DRAWINGS LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;;
+1CE19;BOX DRAWINGS LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;;
+1CE1A;LARGE TYPE PIECE UPPER LEFT ARC;So;0;ON;;;;;N;;;;;
+1CE1B;LARGE TYPE PIECE UPPER LEFT CORNER;So;0;ON;;;;;N;;;;;
+1CE1C;LARGE TYPE PIECE UPPER TERMINAL;So;0;ON;;;;;N;;;;;
+1CE1D;LARGE TYPE PIECE UPPER LEFT CROTCH;So;0;ON;;;;;N;;;;;
+1CE1E;LARGE TYPE PIECE LEFT ARM;So;0;ON;;;;;N;;;;;
+1CE1F;LARGE TYPE PIECE CROSSBAR;So;0;ON;;;;;N;;;;;
+1CE20;LARGE TYPE PIECE CROSSBAR WITH LOWER STEM;So;0;ON;;;;;N;;;;;
+1CE21;LARGE TYPE PIECE UPPER HALF VERTEX OF M;So;0;ON;;;;;N;;;;;
+1CE22;LARGE TYPE PIECE DIAGONAL LOWER LEFT;So;0;ON;;;;;N;;;;;
+1CE23;LARGE TYPE PIECE SHORT UPPER TERMINAL;So;0;ON;;;;;N;;;;;
+1CE24;LARGE TYPE PIECE UPPER RIGHT ARC;So;0;ON;;;;;N;;;;;
+1CE25;LARGE TYPE PIECE RIGHT ARM;So;0;ON;;;;;N;;;;;
+1CE26;LARGE TYPE PIECE UPPER RIGHT CROTCH;So;0;ON;;;;;N;;;;;
+1CE27;LARGE TYPE PIECE UPPER RIGHT CORNER;So;0;ON;;;;;N;;;;;
+1CE28;LARGE TYPE PIECE STEM WITH RIGHT CROSSBAR;So;0;ON;;;;;N;;;;;
+1CE29;LARGE TYPE PIECE STEM;So;0;ON;;;;;N;;;;;
+1CE2A;LARGE TYPE PIECE DIAGONAL UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1CE2B;LARGE TYPE PIECE DIAGONAL UPPER RIGHT;So;0;ON;;;;;N;;;;;
+1CE2C;LARGE TYPE PIECE DIAGONAL LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1CE2D;LARGE TYPE PIECE SHORT LOWER TERMINAL;So;0;ON;;;;;N;;;;;
+1CE2E;LARGE TYPE PIECE LOWER LEFT AND UPPER LEFT ARC;So;0;ON;;;;;N;;;;;
+1CE2F;LARGE TYPE PIECE CENTRE OF K;So;0;ON;;;;;N;;;;;
+1CE30;LARGE TYPE PIECE LOWER HALF VERTEX OF M;So;0;ON;;;;;N;;;;;
+1CE31;LARGE TYPE PIECE UPPER HALF VERTEX OF W;So;0;ON;;;;;N;;;;;
+1CE32;LARGE TYPE PIECE CENTRE OF X;So;0;ON;;;;;N;;;;;
+1CE33;LARGE TYPE PIECE CENTRE OF Y;So;0;ON;;;;;N;;;;;
+1CE34;LARGE TYPE PIECE CENTRE OF Z WITH CROSSBAR;So;0;ON;;;;;N;;;;;
+1CE35;LARGE TYPE PIECE RAISED UPPER LEFT ARC;So;0;ON;;;;;N;;;;;
+1CE36;LARGE TYPE PIECE STEM WITH LEFT CROSSBAR;So;0;ON;;;;;N;;;;;
+1CE37;LARGE TYPE PIECE LOWER RIGHT AND UPPER RIGHT ARC;So;0;ON;;;;;N;;;;;
+1CE38;LARGE TYPE PIECE DIAGONAL UPPER LEFT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+1CE39;LARGE TYPE PIECE STEM WITH LEFT JOINT;So;0;ON;;;;;N;;;;;
+1CE3A;LARGE TYPE PIECE STEM WITH CROSSBAR;So;0;ON;;;;;N;;;;;
+1CE3B;LARGE TYPE PIECE DIAGONAL UPPER LEFT;So;0;ON;;;;;N;;;;;
+1CE3C;LARGE TYPE PIECE LOWER TERMINAL;So;0;ON;;;;;N;;;;;
+1CE3D;LARGE TYPE PIECE LOWER LEFT CORNER;So;0;ON;;;;;N;;;;;
+1CE3E;LARGE TYPE PIECE LOWER LEFT ARC;So;0;ON;;;;;N;;;;;
+1CE3F;LARGE TYPE PIECE LOWER LEFT CROTCH;So;0;ON;;;;;N;;;;;
+1CE40;LARGE TYPE PIECE CROSSBAR WITH UPPER STEM;So;0;ON;;;;;N;;;;;
+1CE41;LARGE TYPE PIECE VERTEX OF V;So;0;ON;;;;;N;;;;;
+1CE42;LARGE TYPE PIECE LOWER HALF VERTEX OF W;So;0;ON;;;;;N;;;;;
+1CE43;LARGE TYPE PIECE LOWER RIGHT ARC;So;0;ON;;;;;N;;;;;
+1CE44;LARGE TYPE PIECE LOWER RIGHT CORNER;So;0;ON;;;;;N;;;;;
+1CE45;LARGE TYPE PIECE LOWER RIGHT ARC WITH TAIL;So;0;ON;;;;;N;;;;;
+1CE46;LARGE TYPE PIECE LOWER RIGHT CROTCH;So;0;ON;;;;;N;;;;;
+1CE47;LARGE TYPE PIECE STEM-45;So;0;ON;;;;;N;;;;;
+1CE48;LARGE TYPE PIECE STEM-2345;So;0;ON;;;;;N;;;;;
+1CE49;LARGE TYPE PIECE STEM-4;So;0;ON;;;;;N;;;;;
+1CE4A;LARGE TYPE PIECE STEM-34;So;0;ON;;;;;N;;;;;
+1CE4B;LARGE TYPE PIECE STEM-234;So;0;ON;;;;;N;;;;;
+1CE4C;LARGE TYPE PIECE STEM-1234;So;0;ON;;;;;N;;;;;
+1CE4D;LARGE TYPE PIECE STEM-3;So;0;ON;;;;;N;;;;;
+1CE4E;LARGE TYPE PIECE STEM-23;So;0;ON;;;;;N;;;;;
+1CE4F;LARGE TYPE PIECE STEM-2;So;0;ON;;;;;N;;;;;
+1CE50;LARGE TYPE PIECE STEM-12;So;0;ON;;;;;N;;;;;
+1CE51;SEPARATED BLOCK SEXTANT-1;So;0;ON;;;;;N;;;;;
+1CE52;SEPARATED BLOCK SEXTANT-2;So;0;ON;;;;;N;;;;;
+1CE53;SEPARATED BLOCK SEXTANT-12;So;0;ON;;;;;N;;;;;
+1CE54;SEPARATED BLOCK SEXTANT-3;So;0;ON;;;;;N;;;;;
+1CE55;SEPARATED BLOCK SEXTANT-13;So;0;ON;;;;;N;;;;;
+1CE56;SEPARATED BLOCK SEXTANT-23;So;0;ON;;;;;N;;;;;
+1CE57;SEPARATED BLOCK SEXTANT-123;So;0;ON;;;;;N;;;;;
+1CE58;SEPARATED BLOCK SEXTANT-4;So;0;ON;;;;;N;;;;;
+1CE59;SEPARATED BLOCK SEXTANT-14;So;0;ON;;;;;N;;;;;
+1CE5A;SEPARATED BLOCK SEXTANT-24;So;0;ON;;;;;N;;;;;
+1CE5B;SEPARATED BLOCK SEXTANT-124;So;0;ON;;;;;N;;;;;
+1CE5C;SEPARATED BLOCK SEXTANT-34;So;0;ON;;;;;N;;;;;
+1CE5D;SEPARATED BLOCK SEXTANT-134;So;0;ON;;;;;N;;;;;
+1CE5E;SEPARATED BLOCK SEXTANT-234;So;0;ON;;;;;N;;;;;
+1CE5F;SEPARATED BLOCK SEXTANT-1234;So;0;ON;;;;;N;;;;;
+1CE60;SEPARATED BLOCK SEXTANT-5;So;0;ON;;;;;N;;;;;
+1CE61;SEPARATED BLOCK SEXTANT-15;So;0;ON;;;;;N;;;;;
+1CE62;SEPARATED BLOCK SEXTANT-25;So;0;ON;;;;;N;;;;;
+1CE63;SEPARATED BLOCK SEXTANT-125;So;0;ON;;;;;N;;;;;
+1CE64;SEPARATED BLOCK SEXTANT-35;So;0;ON;;;;;N;;;;;
+1CE65;SEPARATED BLOCK SEXTANT-135;So;0;ON;;;;;N;;;;;
+1CE66;SEPARATED BLOCK SEXTANT-235;So;0;ON;;;;;N;;;;;
+1CE67;SEPARATED BLOCK SEXTANT-1235;So;0;ON;;;;;N;;;;;
+1CE68;SEPARATED BLOCK SEXTANT-45;So;0;ON;;;;;N;;;;;
+1CE69;SEPARATED BLOCK SEXTANT-145;So;0;ON;;;;;N;;;;;
+1CE6A;SEPARATED BLOCK SEXTANT-245;So;0;ON;;;;;N;;;;;
+1CE6B;SEPARATED BLOCK SEXTANT-1245;So;0;ON;;;;;N;;;;;
+1CE6C;SEPARATED BLOCK SEXTANT-345;So;0;ON;;;;;N;;;;;
+1CE6D;SEPARATED BLOCK SEXTANT-1345;So;0;ON;;;;;N;;;;;
+1CE6E;SEPARATED BLOCK SEXTANT-2345;So;0;ON;;;;;N;;;;;
+1CE6F;SEPARATED BLOCK SEXTANT-12345;So;0;ON;;;;;N;;;;;
+1CE70;SEPARATED BLOCK SEXTANT-6;So;0;ON;;;;;N;;;;;
+1CE71;SEPARATED BLOCK SEXTANT-16;So;0;ON;;;;;N;;;;;
+1CE72;SEPARATED BLOCK SEXTANT-26;So;0;ON;;;;;N;;;;;
+1CE73;SEPARATED BLOCK SEXTANT-126;So;0;ON;;;;;N;;;;;
+1CE74;SEPARATED BLOCK SEXTANT-36;So;0;ON;;;;;N;;;;;
+1CE75;SEPARATED BLOCK SEXTANT-136;So;0;ON;;;;;N;;;;;
+1CE76;SEPARATED BLOCK SEXTANT-236;So;0;ON;;;;;N;;;;;
+1CE77;SEPARATED BLOCK SEXTANT-1236;So;0;ON;;;;;N;;;;;
+1CE78;SEPARATED BLOCK SEXTANT-46;So;0;ON;;;;;N;;;;;
+1CE79;SEPARATED BLOCK SEXTANT-146;So;0;ON;;;;;N;;;;;
+1CE7A;SEPARATED BLOCK SEXTANT-246;So;0;ON;;;;;N;;;;;
+1CE7B;SEPARATED BLOCK SEXTANT-1246;So;0;ON;;;;;N;;;;;
+1CE7C;SEPARATED BLOCK SEXTANT-346;So;0;ON;;;;;N;;;;;
+1CE7D;SEPARATED BLOCK SEXTANT-1346;So;0;ON;;;;;N;;;;;
+1CE7E;SEPARATED BLOCK SEXTANT-2346;So;0;ON;;;;;N;;;;;
+1CE7F;SEPARATED BLOCK SEXTANT-12346;So;0;ON;;;;;N;;;;;
+1CE80;SEPARATED BLOCK SEXTANT-56;So;0;ON;;;;;N;;;;;
+1CE81;SEPARATED BLOCK SEXTANT-156;So;0;ON;;;;;N;;;;;
+1CE82;SEPARATED BLOCK SEXTANT-256;So;0;ON;;;;;N;;;;;
+1CE83;SEPARATED BLOCK SEXTANT-1256;So;0;ON;;;;;N;;;;;
+1CE84;SEPARATED BLOCK SEXTANT-356;So;0;ON;;;;;N;;;;;
+1CE85;SEPARATED BLOCK SEXTANT-1356;So;0;ON;;;;;N;;;;;
+1CE86;SEPARATED BLOCK SEXTANT-2356;So;0;ON;;;;;N;;;;;
+1CE87;SEPARATED BLOCK SEXTANT-12356;So;0;ON;;;;;N;;;;;
+1CE88;SEPARATED BLOCK SEXTANT-456;So;0;ON;;;;;N;;;;;
+1CE89;SEPARATED BLOCK SEXTANT-1456;So;0;ON;;;;;N;;;;;
+1CE8A;SEPARATED BLOCK SEXTANT-2456;So;0;ON;;;;;N;;;;;
+1CE8B;SEPARATED BLOCK SEXTANT-12456;So;0;ON;;;;;N;;;;;
+1CE8C;SEPARATED BLOCK SEXTANT-3456;So;0;ON;;;;;N;;;;;
+1CE8D;SEPARATED BLOCK SEXTANT-13456;So;0;ON;;;;;N;;;;;
+1CE8E;SEPARATED BLOCK SEXTANT-23456;So;0;ON;;;;;N;;;;;
+1CE8F;SEPARATED BLOCK SEXTANT-123456;So;0;ON;;;;;N;;;;;
+1CE90;UPPER LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE91;UPPER CENTRE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE92;UPPER CENTRE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE93;UPPER RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE94;UPPER MIDDLE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE95;UPPER MIDDLE CENTRE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE96;UPPER MIDDLE CENTRE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE97;UPPER MIDDLE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE98;LOWER MIDDLE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE99;LOWER MIDDLE CENTRE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9A;LOWER MIDDLE CENTRE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9B;LOWER MIDDLE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9C;LOWER LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9D;LOWER CENTRE LEFT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9E;LOWER CENTRE RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CE9F;LOWER RIGHT ONE SIXTEENTH BLOCK;So;0;ON;;;;;N;;;;;
+1CEA0;RIGHT HALF LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA1;RIGHT THREE QUARTERS LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA2;LEFT THREE QUARTERS LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA3;LEFT HALF LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA4;LOWER HALF LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA5;LOWER THREE QUARTERS LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA6;UPPER THREE QUARTERS LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA7;UPPER HALF LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA8;LEFT HALF UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEA9;LEFT THREE QUARTERS UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAA;RIGHT THREE QUARTERS UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAB;RIGHT HALF UPPER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAC;UPPER HALF RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAD;UPPER THREE QUARTERS RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAE;LOWER THREE QUARTERS RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEAF;LOWER HALF RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1CEB0;HORIZONTAL ZIGZAG LINE;So;0;ON;;;;;N;;;;;
+1CEB1;KEYHOLE;So;0;ON;;;;;N;;;;;
+1CEB2;OLD PERSONAL COMPUTER WITH MONITOR IN PORTRAIT ORIENTATION;So;0;ON;;;;;N;;;;;
+1CEB3;BLACK RIGHT TRIANGLE CARET;So;0;ON;;;;;N;;;;;
1CF00;ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT;Mn;0;NSM;;;;;N;;;;;
1CF01;ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON LEFT;Mn;0;NSM;;;;;N;;;;;
1CF02;ZNAMENNY COMBINING MARK TSATA ON LEFT;Mn;0;NSM;;;;;N;;;;;
@@ -29545,7 +34630,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;ON;<font> 2207;;;;N;;;;;
1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
@@ -29603,7 +34688,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;ON;<font> 2207;;;;N;;;;;
1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
@@ -29661,7 +34746,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;ON;<font> 2207;;;;N;;;;;
1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
@@ -29719,7 +34804,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;ON;<font> 2207;;;;N;;;;;
1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
@@ -29777,7 +34862,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;ON;<font> 2207;;;;N;;;;;
1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
@@ -30875,6 +35960,50 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1E4F7;NAG MUNDARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
1E4F8;NAG MUNDARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
1E4F9;NAG MUNDARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1E5D0;OL ONAL LETTER O;Lo;0;L;;;;;N;;;;;
+1E5D1;OL ONAL LETTER OM;Lo;0;L;;;;;N;;;;;
+1E5D2;OL ONAL LETTER ONG;Lo;0;L;;;;;N;;;;;
+1E5D3;OL ONAL LETTER ORR;Lo;0;L;;;;;N;;;;;
+1E5D4;OL ONAL LETTER OO;Lo;0;L;;;;;N;;;;;
+1E5D5;OL ONAL LETTER OY;Lo;0;L;;;;;N;;;;;
+1E5D6;OL ONAL LETTER A;Lo;0;L;;;;;N;;;;;
+1E5D7;OL ONAL LETTER AD;Lo;0;L;;;;;N;;;;;
+1E5D8;OL ONAL LETTER AB;Lo;0;L;;;;;N;;;;;
+1E5D9;OL ONAL LETTER AH;Lo;0;L;;;;;N;;;;;
+1E5DA;OL ONAL LETTER AL;Lo;0;L;;;;;N;;;;;
+1E5DB;OL ONAL LETTER AW;Lo;0;L;;;;;N;;;;;
+1E5DC;OL ONAL LETTER I;Lo;0;L;;;;;N;;;;;
+1E5DD;OL ONAL LETTER IT;Lo;0;L;;;;;N;;;;;
+1E5DE;OL ONAL LETTER IP;Lo;0;L;;;;;N;;;;;
+1E5DF;OL ONAL LETTER ITT;Lo;0;L;;;;;N;;;;;
+1E5E0;OL ONAL LETTER ID;Lo;0;L;;;;;N;;;;;
+1E5E1;OL ONAL LETTER IN;Lo;0;L;;;;;N;;;;;
+1E5E2;OL ONAL LETTER U;Lo;0;L;;;;;N;;;;;
+1E5E3;OL ONAL LETTER UK;Lo;0;L;;;;;N;;;;;
+1E5E4;OL ONAL LETTER UDD;Lo;0;L;;;;;N;;;;;
+1E5E5;OL ONAL LETTER UJ;Lo;0;L;;;;;N;;;;;
+1E5E6;OL ONAL LETTER UNY;Lo;0;L;;;;;N;;;;;
+1E5E7;OL ONAL LETTER UR;Lo;0;L;;;;;N;;;;;
+1E5E8;OL ONAL LETTER E;Lo;0;L;;;;;N;;;;;
+1E5E9;OL ONAL LETTER ES;Lo;0;L;;;;;N;;;;;
+1E5EA;OL ONAL LETTER EH;Lo;0;L;;;;;N;;;;;
+1E5EB;OL ONAL LETTER EC;Lo;0;L;;;;;N;;;;;
+1E5EC;OL ONAL LETTER ENN;Lo;0;L;;;;;N;;;;;
+1E5ED;OL ONAL LETTER EG;Lo;0;L;;;;;N;;;;;
+1E5EE;OL ONAL SIGN MU;Mn;230;NSM;;;;;N;;;;;
+1E5EF;OL ONAL SIGN IKIR;Mn;220;NSM;;;;;N;;;;;
+1E5F0;OL ONAL SIGN HODDOND;Lo;0;L;;;;;N;;;;;
+1E5F1;OL ONAL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1E5F2;OL ONAL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1E5F3;OL ONAL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1E5F4;OL ONAL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1E5F5;OL ONAL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1E5F6;OL ONAL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1E5F7;OL ONAL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1E5F8;OL ONAL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1E5F9;OL ONAL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1E5FA;OL ONAL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1E5FF;OL ONAL ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
1E7E0;ETHIOPIC SYLLABLE HHYA;Lo;0;L;;;;;N;;;;;
1E7E1;ETHIOPIC SYLLABLE HHYU;Lo;0;L;;;;;N;;;;;
1E7E2;ETHIOPIC SYLLABLE HHYI;Lo;0;L;;;;;N;;;;;
@@ -33357,6 +38486,18 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1F8AD;WHITE ARROW SHAFT WIDTH TWO THIRDS;So;0;ON;;;;;N;;;;;
1F8B0;ARROW POINTING UPWARDS THEN NORTH WEST;So;0;ON;;;;;N;;;;;
1F8B1;ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST;So;0;ON;;;;;N;;;;;
+1F8B2;RIGHTWARDS ARROW WITH LOWER HOOK;So;0;ON;;;;;N;;;;;
+1F8B3;DOWNWARDS BLACK ARROW TO BAR;So;0;ON;;;;;N;;;;;
+1F8B4;NEGATIVE SQUARED LEFTWARDS ARROW;So;0;ON;;;;;N;;;;;
+1F8B5;NEGATIVE SQUARED UPWARDS ARROW;So;0;ON;;;;;N;;;;;
+1F8B6;NEGATIVE SQUARED RIGHTWARDS ARROW;So;0;ON;;;;;N;;;;;
+1F8B7;NEGATIVE SQUARED DOWNWARDS ARROW;So;0;ON;;;;;N;;;;;
+1F8B8;NORTH WEST ARROW FROM BAR;So;0;ON;;;;;N;;;;;
+1F8B9;NORTH EAST ARROW FROM BAR;So;0;ON;;;;;N;;;;;
+1F8BA;SOUTH EAST ARROW FROM BAR;So;0;ON;;;;;N;;;;;
+1F8BB;SOUTH WEST ARROW FROM BAR;So;0;ON;;;;;N;;;;;
+1F8C0;LEFTWARDS ARROW FROM DOWNWARDS ARROW;So;0;ON;;;;;N;;;;;
+1F8C1;RIGHTWARDS ARROW FROM DOWNWARDS ARROW;So;0;ON;;;;;N;;;;;
1F900;CIRCLED CROSS FORMEE WITH FOUR DOTS;So;0;ON;;;;;N;;;;;
1F901;CIRCLED CROSS FORMEE WITH TWO DOTS;So;0;ON;;;;;N;;;;;
1F902;CIRCLED CROSS FORMEE;So;0;ON;;;;;N;;;;;
@@ -33733,6 +38874,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FA86;NESTING DOLLS;So;0;ON;;;;;N;;;;;
1FA87;MARACAS;So;0;ON;;;;;N;;;;;
1FA88;FLUTE;So;0;ON;;;;;N;;;;;
+1FA89;HARP;So;0;ON;;;;;N;;;;;
+1FA8F;SHOVEL;So;0;ON;;;;;N;;;;;
1FA90;RINGED PLANET;So;0;ON;;;;;N;;;;;
1FA91;CHAIR;So;0;ON;;;;;N;;;;;
1FA92;RAZOR;So;0;ON;;;;;N;;;;;
@@ -33779,6 +38922,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FABB;HYACINTH;So;0;ON;;;;;N;;;;;
1FABC;JELLYFISH;So;0;ON;;;;;N;;;;;
1FABD;WING;So;0;ON;;;;;N;;;;;
+1FABE;LEAFLESS TREE;So;0;ON;;;;;N;;;;;
1FABF;GOOSE;So;0;ON;;;;;N;;;;;
1FAC0;ANATOMICAL HEART;So;0;ON;;;;;N;;;;;
1FAC1;LUNGS;So;0;ON;;;;;N;;;;;
@@ -33786,6 +38930,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FAC3;PREGNANT MAN;So;0;ON;;;;;N;;;;;
1FAC4;PREGNANT PERSON;So;0;ON;;;;;N;;;;;
1FAC5;PERSON WITH CROWN;So;0;ON;;;;;N;;;;;
+1FAC6;FINGERPRINT;So;0;ON;;;;;N;;;;;
1FACE;MOOSE;So;0;ON;;;;;N;;;;;
1FACF;DONKEY;So;0;ON;;;;;N;;;;;
1FAD0;BLUEBERRIES;So;0;ON;;;;;N;;;;;
@@ -33800,6 +38945,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FAD9;JAR;So;0;ON;;;;;N;;;;;
1FADA;GINGER ROOT;So;0;ON;;;;;N;;;;;
1FADB;PEA POD;So;0;ON;;;;;N;;;;;
+1FADC;ROOT VEGETABLE;So;0;ON;;;;;N;;;;;
+1FADF;SPLATTER;So;0;ON;;;;;N;;;;;
1FAE0;MELTING FACE;So;0;ON;;;;;N;;;;;
1FAE1;SALUTING FACE;So;0;ON;;;;;N;;;;;
1FAE2;FACE WITH OPEN EYES AND HAND OVER MOUTH;So;0;ON;;;;;N;;;;;
@@ -33809,6 +38956,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FAE6;BITING LIP;So;0;ON;;;;;N;;;;;
1FAE7;BUBBLES;So;0;ON;;;;;N;;;;;
1FAE8;SHAKING FACE;So;0;ON;;;;;N;;;;;
+1FAE9;FACE WITH BAGS UNDER EYES;So;0;ON;;;;;N;;;;;
1FAF0;HAND WITH INDEX FINGER AND THUMB CROSSED;So;0;ON;;;;;N;;;;;
1FAF1;RIGHTWARDS HAND;So;0;ON;;;;;N;;;;;
1FAF2;LEFTWARDS HAND;So;0;ON;;;;;N;;;;;
@@ -34020,6 +39168,43 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1FBC8;STICK FIGURE LEANING RIGHT;So;0;ON;;;;;N;;;;;
1FBC9;STICK FIGURE WITH DRESS;So;0;ON;;;;;N;;;;;
1FBCA;WHITE UP-POINTING CHEVRON;So;0;ON;;;;;N;;;;;
+1FBCB;WHITE CROSS MARK;So;0;ON;;;;;N;;;;;
+1FBCC;RAISED SMALL LEFT SQUARE BRACKET;So;0;ON;;;;;N;;;;;
+1FBCD;BLACK SMALL UP-POINTING CHEVRON;So;0;ON;;;;;N;;;;;
+1FBCE;LEFT TWO THIRDS BLOCK;So;0;ON;;;;;N;;;;;
+1FBCF;LEFT ONE THIRD BLOCK;So;0;ON;;;;;N;;;;;
+1FBD0;BOX DRAWINGS LIGHT DIAGONAL MIDDLE RIGHT TO LOWER LEFT;So;0;ON;;;;;N;;;;;
+1FBD1;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO MIDDLE LEFT;So;0;ON;;;;;N;;;;;
+1FBD2;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE RIGHT;So;0;ON;;;;;N;;;;;
+1FBD3;BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBD4;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+1FBD5;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBD6;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER CENTRE;So;0;ON;;;;;N;;;;;
+1FBD7;BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO LOWER LEFT;So;0;ON;;;;;N;;;;;
+1FBD8;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;;
+1FBD9;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO MIDDLE CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBDA;BOX DRAWINGS LIGHT DIAGONAL LOWER LEFT TO MIDDLE CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBDB;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO LOWER LEFT;So;0;ON;;;;;N;;;;;
+1FBDC;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER CENTRE TO UPPER RIGHT;So;0;ON;;;;;N;;;;;
+1FBDD;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO MIDDLE LEFT TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBDE;BOX DRAWINGS LIGHT DIAGONAL LOWER LEFT TO UPPER CENTRE TO LOWER RIGHT;So;0;ON;;;;;N;;;;;
+1FBDF;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE RIGHT TO LOWER LEFT;So;0;ON;;;;;N;;;;;
+1FBE0;TOP JUSTIFIED LOWER HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1FBE1;RIGHT JUSTIFIED LEFT HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1FBE2;BOTTOM JUSTIFIED UPPER HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1FBE3;LEFT JUSTIFIED RIGHT HALF WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+1FBE4;UPPER CENTRE ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1FBE5;LOWER CENTRE ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1FBE6;MIDDLE LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1FBE7;MIDDLE RIGHT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+1FBE8;TOP JUSTIFIED LOWER HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBE9;RIGHT JUSTIFIED LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBEA;BOTTOM JUSTIFIED UPPER HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBEB;LEFT JUSTIFIED RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBEC;TOP RIGHT JUSTIFIED LOWER LEFT QUARTER BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBED;BOTTOM LEFT JUSTIFIED UPPER RIGHT QUARTER BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBEE;BOTTOM RIGHT JUSTIFIED UPPER LEFT QUARTER BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+1FBEF;TOP LEFT JUSTIFIED LOWER RIGHT QUARTER BLACK CIRCLE;So;0;ON;;;;;N;;;;;
1FBF0;SEGMENTED DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
1FBF1;SEGMENTED DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
1FBF2;SEGMENTED DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
diff --git a/Master/texmf-dist/tex/generic/unicode-data/WordBreakProperty.txt b/Master/texmf-dist/tex/generic/unicode-data/WordBreakProperty.txt
index 302a2769b39..e557c3d0ded 100644
--- a/Master/texmf-dist/tex/generic/unicode-data/WordBreakProperty.txt
+++ b/Master/texmf-dist/tex/generic/unicode-data/WordBreakProperty.txt
@@ -1,8 +1,8 @@
-# WordBreakProperty-15.1.0.txt
-# Date: 2023-03-31, 03:19:05 GMT
-# © 2023 Unicode®, Inc.
+# WordBreakProperty-16.0.0.txt
+# Date: 2024-07-29, 16:27:36 GMT
+# © 2024 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
-# For terms of use, see https://www.unicode.org/terms_of_use.html
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see https://www.unicode.org/reports/tr44/
@@ -91,7 +91,7 @@ FB46..FB4F ; Hebrew_Letter # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW
0825..0827 ; Extend # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
0829..082D ; Extend # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
0859..085B ; Extend # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
-0898..089F ; Extend # Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
+0897..089F ; Extend # Mn [9] ARABIC PEPET..ARABIC HALF MADDA OVER MADDA
08CA..08E1 ; Extend # Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
08E3..0902 ; Extend # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
0903 ; Extend # Mc DEVANAGARI SIGN VISARGA
@@ -407,8 +407,9 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
10A3F ; Extend # Mn KHAROSHTHI VIRAMA
10AE5..10AE6 ; Extend # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
10D24..10D27 ; Extend # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+10D69..10D6D ; Extend # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK
10EAB..10EAC ; Extend # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
-10EFD..10EFF ; Extend # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
+10EFC..10EFF ; Extend # Mn [4] ARABIC COMBINING ALEF OVERLAY..ARABIC SMALL LOW WORD MADDA
10F46..10F50 ; Extend # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
10F82..10F85 ; Extend # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
11000 ; Extend # Mc BRAHMI SIGN CANDRABINDU
@@ -461,6 +462,17 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
11362..11363 ; Extend # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
11366..1136C ; Extend # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
11370..11374 ; Extend # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+113B8..113BA ; Extend # Mc [3] TULU-TIGALARI VOWEL SIGN AA..TULU-TIGALARI VOWEL SIGN II
+113BB..113C0 ; Extend # Mn [6] TULU-TIGALARI VOWEL SIGN U..TULU-TIGALARI VOWEL SIGN VOCALIC LL
+113C2 ; Extend # Mc TULU-TIGALARI VOWEL SIGN EE
+113C5 ; Extend # Mc TULU-TIGALARI VOWEL SIGN AI
+113C7..113CA ; Extend # Mc [4] TULU-TIGALARI VOWEL SIGN OO..TULU-TIGALARI SIGN CANDRA ANUNASIKA
+113CC..113CD ; Extend # Mc [2] TULU-TIGALARI SIGN ANUSVARA..TULU-TIGALARI SIGN VISARGA
+113CE ; Extend # Mn TULU-TIGALARI SIGN VIRAMA
+113CF ; Extend # Mc TULU-TIGALARI SIGN LOOPED VIRAMA
+113D0 ; Extend # Mn TULU-TIGALARI CONJOINER
+113D2 ; Extend # Mn TULU-TIGALARI GEMINATION MARK
+113E1..113E2 ; Extend # Mn [2] TULU-TIGALARI VEDIC TONE SVARITA..TULU-TIGALARI VEDIC TONE ANUDATTA
11435..11437 ; Extend # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
11438..1143F ; Extend # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
11440..11441 ; Extend # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
@@ -496,7 +508,9 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
116B0..116B5 ; Extend # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
116B6 ; Extend # Mc TAKRI SIGN VIRAMA
116B7 ; Extend # Mn TAKRI SIGN NUKTA
-1171D..1171F ; Extend # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+1171D ; Extend # Mn AHOM CONSONANT SIGN MEDIAL LA
+1171E ; Extend # Mc AHOM CONSONANT SIGN MEDIAL RA
+1171F ; Extend # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA
11720..11721 ; Extend # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
11722..11725 ; Extend # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
11726 ; Extend # Mc AHOM VOWEL SIGN E
@@ -563,8 +577,12 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
11F40 ; Extend # Mn KAWI VOWEL SIGN EU
11F41 ; Extend # Mc KAWI SIGN KILLER
11F42 ; Extend # Mn KAWI CONJOINER
+11F5A ; Extend # Mn KAWI SIGN NUKTA
13440 ; Extend # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
13447..13455 ; Extend # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+1611E..16129 ; Extend # Mn [12] GURUNG KHEMA VOWEL SIGN AA..GURUNG KHEMA VOWEL LENGTH MARK
+1612A..1612C ; Extend # Mc [3] GURUNG KHEMA CONSONANT SIGN MEDIAL YA..GURUNG KHEMA CONSONANT SIGN MEDIAL HA
+1612D..1612F ; Extend # Mn [3] GURUNG KHEMA SIGN ANUSVARA..GURUNG KHEMA SIGN THOLHOMA
16AF0..16AF4 ; Extend # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
16B30..16B36 ; Extend # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
16F4F ; Extend # Mn MIAO SIGN CONSONANT MODIFIER BAR
@@ -598,13 +616,14 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
1E2AE ; Extend # Mn TOTO SIGN RISING TONE
1E2EC..1E2EF ; Extend # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI
1E4EC..1E4EF ; Extend # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
+1E5EE..1E5EF ; Extend # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR
1E8D0..1E8D6 ; Extend # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
1E944..1E94A ; Extend # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
1F3FB..1F3FF ; Extend # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
E0020..E007F ; Extend # Cf [96] TAG SPACE..CANCEL TAG
E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
-# Total code points: 2554
+# Total code points: 2605
# ================================================
@@ -877,7 +896,7 @@ FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAK
1C4D..1C4F ; ALetter # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
1C5A..1C77 ; ALetter # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
1C78..1C7D ; ALetter # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
-1C80..1C88 ; ALetter # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1C80..1C8A ; ALetter # L& [11] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER TJE
1C90..1CBA ; ALetter # L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
1CBD..1CBF ; ALetter # L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
1CE9..1CEC ; ALetter # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
@@ -983,10 +1002,10 @@ A788 ; ALetter # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT
A789..A78A ; ALetter # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
A78B..A78E ; ALetter # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
A78F ; ALetter # Lo LATIN LETTER SINOLOGICAL DOT
-A790..A7CA ; ALetter # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+A790..A7CD ; ALetter # L& [62] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH DIAGONAL STROKE
A7D0..A7D1 ; ALetter # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
A7D3 ; ALetter # L& LATIN SMALL LETTER DOUBLE THORN
-A7D5..A7D9 ; ALetter # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+A7D5..A7DC ; ALetter # L& [8] LATIN SMALL LETTER DOUBLE WYNN..LATIN CAPITAL LETTER LAMBDA WITH STROKE
A7F2..A7F4 ; ALetter # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
A7F5..A7F6 ; ALetter # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
A7F7 ; ALetter # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I
@@ -1077,6 +1096,7 @@ FFDA..FFDC ; ALetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
105A3..105B1 ; ALetter # L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
105B3..105B9 ; ALetter # L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
105BB..105BC ; ALetter # L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+105C0..105F3 ; ALetter # Lo [52] TODHRI LETTER A..TODHRI LETTER OO
10600..10736 ; ALetter # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
10740..10755 ; ALetter # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
10760..10767 ; ALetter # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807
@@ -1113,8 +1133,15 @@ FFDA..FFDC ; ALetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
10C80..10CB2 ; ALetter # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
10CC0..10CF2 ; ALetter # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
10D00..10D23 ; ALetter # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
+10D4A..10D4D ; ALetter # Lo [4] GARAY VOWEL SIGN A..GARAY VOWEL SIGN EE
+10D4E ; ALetter # Lm GARAY VOWEL LENGTH MARK
+10D4F ; ALetter # Lo GARAY SUKUN
+10D50..10D65 ; ALetter # L& [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA
+10D6F ; ALetter # Lm GARAY REDUPLICATION MARK
+10D70..10D85 ; ALetter # L& [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA
10E80..10EA9 ; ALetter # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
10EB0..10EB1 ; ALetter # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
+10EC2..10EC4 ; ALetter # Lo [3] ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS VERTICALLY BELOW
10F00..10F1C ; ALetter # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
10F27 ; ALetter # Lo OLD SOGDIAN LIGATURE AYIN-DALETH
10F30..10F45 ; ALetter # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN
@@ -1153,6 +1180,13 @@ FFDA..FFDC ; ALetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
1133D ; ALetter # Lo GRANTHA SIGN AVAGRAHA
11350 ; ALetter # Lo GRANTHA OM
1135D..11361 ; ALetter # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
+11380..11389 ; ALetter # Lo [10] TULU-TIGALARI LETTER A..TULU-TIGALARI LETTER VOCALIC LL
+1138B ; ALetter # Lo TULU-TIGALARI LETTER EE
+1138E ; ALetter # Lo TULU-TIGALARI LETTER AI
+11390..113B5 ; ALetter # Lo [38] TULU-TIGALARI LETTER OO..TULU-TIGALARI LETTER LLLA
+113B7 ; ALetter # Lo TULU-TIGALARI SIGN AVAGRAHA
+113D1 ; ALetter # Lo TULU-TIGALARI REPHA
+113D3 ; ALetter # Lo TULU-TIGALARI SIGN PLUTA
11400..11434 ; ALetter # Lo [53] NEWA LETTER A..NEWA LETTER HA
11447..1144A ; ALetter # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
1145F..11461 ; ALetter # Lo [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA
@@ -1185,6 +1219,7 @@ FFDA..FFDC ; ALetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
11A5C..11A89 ; ALetter # Lo [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA
11A9D ; ALetter # Lo SOYOMBO MARK PLUTA
11AB0..11AF8 ; ALetter # Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL
+11BC0..11BE0 ; ALetter # Lo [33] SUNUWAR LETTER DEVI..SUNUWAR LETTER KLOKO
11C00..11C08 ; ALetter # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
11C0A..11C2E ; ALetter # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
11C40 ; ALetter # Lo BHAIKSUKI SIGN AVAGRAHA
@@ -1208,7 +1243,9 @@ FFDA..FFDC ; ALetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
12F90..12FF0 ; ALetter # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114
13000..1342F ; ALetter # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D
13441..13446 ; ALetter # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
+13460..143FA ; ALetter # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA
14400..14646 ; ALetter # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
+16100..1611D ; ALetter # Lo [30] GURUNG KHEMA LETTER A..GURUNG KHEMA LETTER SA
16800..16A38 ; ALetter # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
16A40..16A5E ; ALetter # Lo [31] MRO LETTER TA..MRO LETTER TEK
16A70..16ABE ; ALetter # Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA
@@ -1217,6 +1254,9 @@ FFDA..FFDC ; ALetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
16B40..16B43 ; ALetter # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
16B63..16B77 ; ALetter # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
16B7D..16B8F ; ALetter # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
+16D40..16D42 ; ALetter # Lm [3] KIRAT RAI SIGN ANUSVARA..KIRAT RAI SIGN VISARGA
+16D43..16D6A ; ALetter # Lo [40] KIRAT RAI LETTER A..KIRAT RAI VOWEL SIGN AU
+16D6B..16D6C ; ALetter # Lm [2] KIRAT RAI SIGN VIRAMA..KIRAT RAI SIGN SAAT
16E40..16E7F ; ALetter # L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
16F00..16F4A ; ALetter # Lo [75] MIAO LETTER PA..MIAO LETTER RTE
16F50 ; ALetter # Lo MIAO LETTER NASALIZATION
@@ -1269,6 +1309,8 @@ FFDA..FFDC ; ALetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
1E2C0..1E2EB ; ALetter # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH
1E4D0..1E4EA ; ALetter # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL
1E4EB ; ALetter # Lm NAG MUNDARI SIGN OJOD
+1E5D0..1E5ED ; ALetter # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG
+1E5F0 ; ALetter # Lo OL ONAL SIGN HODDOND
1E7E0..1E7E6 ; ALetter # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
1E7E8..1E7EB ; ALetter # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
1E7ED..1E7EE ; ALetter # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
@@ -1313,7 +1355,7 @@ FFDA..FFDC ; ALetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
1F150..1F169 ; ALetter # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
1F170..1F189 ; ALetter # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
-# Total code points: 29490
+# Total code points: 33791
# ================================================
@@ -1339,14 +1381,12 @@ FF1A ; MidLetter # Po FULLWIDTH COLON
066C ; MidNum # Po ARABIC THOUSANDS SEPARATOR
07F8 ; MidNum # Po NKO COMMA
2044 ; MidNum # Sm FRACTION SLASH
-FE10 ; MidNum # Po PRESENTATION FORM FOR VERTICAL COMMA
-FE14 ; MidNum # Po PRESENTATION FORM FOR VERTICAL SEMICOLON
FE50 ; MidNum # Po SMALL COMMA
FE54 ; MidNum # Po SMALL SEMICOLON
FF0C ; MidNum # Po FULLWIDTH COMMA
FF1B ; MidNum # Po FULLWIDTH SEMICOLON
-# Total code points: 15
+# Total code points: 13
# ================================================
@@ -1390,6 +1430,7 @@ FF0E ; MidNumLet # Po FULLWIDTH FULL STOP
1810..1819 ; Numeric # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
1946..194F ; Numeric # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE
19D0..19D9 ; Numeric # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
+19DA ; Numeric # No NEW TAI LUE THAM DIGIT ONE
1A80..1A89 ; Numeric # Nd [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE
1A90..1A99 ; Numeric # Nd [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE
1B50..1B59 ; Numeric # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
@@ -1406,6 +1447,7 @@ ABF0..ABF9 ; Numeric # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT N
FF10..FF19 ; Numeric # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
104A0..104A9 ; Numeric # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
10D30..10D39 ; Numeric # Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE
+10D40..10D49 ; Numeric # Nd [10] GARAY DIGIT ZERO..GARAY DIGIT NINE
11066..1106F ; Numeric # Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE
110BD ; Numeric # Cf KAITHI NUMBER SIGN
110CD ; Numeric # Cf KAITHI NUMBER SIGN ABOVE
@@ -1417,24 +1459,30 @@ FF10..FF19 ; Numeric # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
114D0..114D9 ; Numeric # Nd [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE
11650..11659 ; Numeric # Nd [10] MODI DIGIT ZERO..MODI DIGIT NINE
116C0..116C9 ; Numeric # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
+116D0..116E3 ; Numeric # Nd [20] MYANMAR PAO DIGIT ZERO..MYANMAR EASTERN PWO KAREN DIGIT NINE
11730..11739 ; Numeric # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE
118E0..118E9 ; Numeric # Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE
11950..11959 ; Numeric # Nd [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE
+11BF0..11BF9 ; Numeric # Nd [10] SUNUWAR DIGIT ZERO..SUNUWAR DIGIT NINE
11C50..11C59 ; Numeric # Nd [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
11D50..11D59 ; Numeric # Nd [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE
11DA0..11DA9 ; Numeric # Nd [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE
11F50..11F59 ; Numeric # Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE
+16130..16139 ; Numeric # Nd [10] GURUNG KHEMA DIGIT ZERO..GURUNG KHEMA DIGIT NINE
16A60..16A69 ; Numeric # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE
16AC0..16AC9 ; Numeric # Nd [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE
16B50..16B59 ; Numeric # Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE
+16D70..16D79 ; Numeric # Nd [10] KIRAT RAI DIGIT ZERO..KIRAT RAI DIGIT NINE
+1CCF0..1CCF9 ; Numeric # Nd [10] OUTLINED DIGIT ZERO..OUTLINED DIGIT NINE
1D7CE..1D7FF ; Numeric # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
1E140..1E149 ; Numeric # Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE
1E2F0..1E2F9 ; Numeric # Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE
1E4F0..1E4F9 ; Numeric # Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE
+1E5F1..1E5FA ; Numeric # Nd [10] OL ONAL DIGIT ZERO..OL ONAL DIGIT NINE
1E950..1E959 ; Numeric # Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
1FBF0..1FBF9 ; Numeric # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
-# Total code points: 693
+# Total code points: 774
# ================================================
diff --git a/Master/texmf-dist/tex/generic/unicode-data/emoji-data.txt b/Master/texmf-dist/tex/generic/unicode-data/emoji-data.txt
index 0ba10e9ce4c..ff99028248b 100644
--- a/Master/texmf-dist/tex/generic/unicode-data/emoji-data.txt
+++ b/Master/texmf-dist/tex/generic/unicode-data/emoji-data.txt
@@ -1,11 +1,11 @@
# emoji-data.txt
-# Date: 2023-02-01, 02:22:54 GMT
-# © 2023 Unicode®, Inc.
+# Date: 2024-05-01, 21:25:24 GMT
+# © 2024 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
-# For terms of use, see https://www.unicode.org/terms_of_use.html
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
#
# Emoji Data for UTS #51
-# Used with Emoji Version 15.1 and subsequent minor revisions (if any)
+# Used with Emoji Version 16.0 and subsequent minor revisions (if any)
#
# For documentation and usage, see https://www.unicode.org/reports/tr51
#
@@ -407,6 +407,8 @@
1FA80..1FA82 ; Emoji # E12.0 [3] (🪀..🪂) yo-yo..parachute
1FA83..1FA86 ; Emoji # E13.0 [4] (🪃..🪆) boomerang..nesting dolls
1FA87..1FA88 ; Emoji # E15.0 [2] (🪇..🪈) maracas..flute
+1FA89 ; Emoji # E16.0 [1] (🪉) harp
+1FA8F ; Emoji # E16.0 [1] (🪏) shovel
1FA90..1FA95 ; Emoji # E12.0 [6] (🪐..🪕) ringed planet..banjo
1FA96..1FAA8 ; Emoji # E13.0 [19] (🪖..🪨) military helmet..rock
1FAA9..1FAAC ; Emoji # E14.0 [4] (🪩..🪬) mirror ball..hamsa
@@ -414,19 +416,24 @@
1FAB0..1FAB6 ; Emoji # E13.0 [7] (🪰..🪶) fly..feather
1FAB7..1FABA ; Emoji # E14.0 [4] (🪷..🪺) lotus..nest with eggs
1FABB..1FABD ; Emoji # E15.0 [3] (🪻..🪽) hyacinth..wing
+1FABE ; Emoji # E16.0 [1] (🪾) leafless tree
1FABF ; Emoji # E15.0 [1] (🪿) goose
1FAC0..1FAC2 ; Emoji # E13.0 [3] (🫀..🫂) anatomical heart..people hugging
1FAC3..1FAC5 ; Emoji # E14.0 [3] (🫃..🫅) pregnant man..person with crown
+1FAC6 ; Emoji # E16.0 [1] (🫆) fingerprint
1FACE..1FACF ; Emoji # E15.0 [2] (🫎..🫏) moose..donkey
1FAD0..1FAD6 ; Emoji # E13.0 [7] (🫐..🫖) blueberries..teapot
1FAD7..1FAD9 ; Emoji # E14.0 [3] (🫗..🫙) pouring liquid..jar
1FADA..1FADB ; Emoji # E15.0 [2] (🫚..🫛) ginger root..pea pod
+1FADC ; Emoji # E16.0 [1] (🫜) root vegetable
+1FADF ; Emoji # E16.0 [1] (🫟) splatter
1FAE0..1FAE7 ; Emoji # E14.0 [8] (🫠..🫧) melting face..bubbles
1FAE8 ; Emoji # E15.0 [1] (🫨) shaking face
+1FAE9 ; Emoji # E16.0 [1] (🫩) face with bags under eyes
1FAF0..1FAF6 ; Emoji # E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
1FAF7..1FAF8 ; Emoji # E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand
-# Total elements: 1424
+# Total elements: 1431
# ================================================
@@ -696,6 +703,8 @@
1FA80..1FA82 ; Emoji_Presentation # E12.0 [3] (🪀..🪂) yo-yo..parachute
1FA83..1FA86 ; Emoji_Presentation # E13.0 [4] (🪃..🪆) boomerang..nesting dolls
1FA87..1FA88 ; Emoji_Presentation # E15.0 [2] (🪇..🪈) maracas..flute
+1FA89 ; Emoji_Presentation # E16.0 [1] (🪉) harp
+1FA8F ; Emoji_Presentation # E16.0 [1] (🪏) shovel
1FA90..1FA95 ; Emoji_Presentation # E12.0 [6] (🪐..🪕) ringed planet..banjo
1FA96..1FAA8 ; Emoji_Presentation # E13.0 [19] (🪖..🪨) military helmet..rock
1FAA9..1FAAC ; Emoji_Presentation # E14.0 [4] (🪩..🪬) mirror ball..hamsa
@@ -703,19 +712,24 @@
1FAB0..1FAB6 ; Emoji_Presentation # E13.0 [7] (🪰..🪶) fly..feather
1FAB7..1FABA ; Emoji_Presentation # E14.0 [4] (🪷..🪺) lotus..nest with eggs
1FABB..1FABD ; Emoji_Presentation # E15.0 [3] (🪻..🪽) hyacinth..wing
+1FABE ; Emoji_Presentation # E16.0 [1] (🪾) leafless tree
1FABF ; Emoji_Presentation # E15.0 [1] (🪿) goose
1FAC0..1FAC2 ; Emoji_Presentation # E13.0 [3] (🫀..🫂) anatomical heart..people hugging
1FAC3..1FAC5 ; Emoji_Presentation # E14.0 [3] (🫃..🫅) pregnant man..person with crown
+1FAC6 ; Emoji_Presentation # E16.0 [1] (🫆) fingerprint
1FACE..1FACF ; Emoji_Presentation # E15.0 [2] (🫎..🫏) moose..donkey
1FAD0..1FAD6 ; Emoji_Presentation # E13.0 [7] (🫐..🫖) blueberries..teapot
1FAD7..1FAD9 ; Emoji_Presentation # E14.0 [3] (🫗..🫙) pouring liquid..jar
1FADA..1FADB ; Emoji_Presentation # E15.0 [2] (🫚..🫛) ginger root..pea pod
+1FADC ; Emoji_Presentation # E16.0 [1] (🫜) root vegetable
+1FADF ; Emoji_Presentation # E16.0 [1] (🫟) splatter
1FAE0..1FAE7 ; Emoji_Presentation # E14.0 [8] (🫠..🫧) melting face..bubbles
1FAE8 ; Emoji_Presentation # E15.0 [1] (🫨) shaking face
+1FAE9 ; Emoji_Presentation # E16.0 [1] (🫩) face with bags under eyes
1FAF0..1FAF6 ; Emoji_Presentation # E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
1FAF7..1FAF8 ; Emoji_Presentation # E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand
-# Total elements: 1205
+# Total elements: 1212
# ================================================
@@ -1289,7 +1303,9 @@ E0020..E007F ; Emoji_Component # E0.0 [96] (󠀠..󠁿) tag space..c
1FA80..1FA82 ; Extended_Pictographic# E12.0 [3] (🪀..🪂) yo-yo..parachute
1FA83..1FA86 ; Extended_Pictographic# E13.0 [4] (🪃..🪆) boomerang..nesting dolls
1FA87..1FA88 ; Extended_Pictographic# E15.0 [2] (🪇..🪈) maracas..flute
-1FA89..1FA8F ; Extended_Pictographic# E0.0 [7] (🪉..🪏) <reserved-1FA89>..<reserved-1FA8F>
+1FA89 ; Extended_Pictographic# E16.0 [1] (🪉) harp
+1FA8A..1FA8E ; Extended_Pictographic# E0.0 [5] (🪊..🪎) <reserved-1FA8A>..<reserved-1FA8E>
+1FA8F ; Extended_Pictographic# E16.0 [1] (🪏) shovel
1FA90..1FA95 ; Extended_Pictographic# E12.0 [6] (🪐..🪕) ringed planet..banjo
1FA96..1FAA8 ; Extended_Pictographic# E13.0 [19] (🪖..🪨) military helmet..rock
1FAA9..1FAAC ; Extended_Pictographic# E14.0 [4] (🪩..🪬) mirror ball..hamsa
@@ -1297,19 +1313,23 @@ E0020..E007F ; Emoji_Component # E0.0 [96] (󠀠..󠁿) tag space..c
1FAB0..1FAB6 ; Extended_Pictographic# E13.0 [7] (🪰..🪶) fly..feather
1FAB7..1FABA ; Extended_Pictographic# E14.0 [4] (🪷..🪺) lotus..nest with eggs
1FABB..1FABD ; Extended_Pictographic# E15.0 [3] (🪻..🪽) hyacinth..wing
-1FABE ; Extended_Pictographic# E0.0 [1] (🪾) <reserved-1FABE>
+1FABE ; Extended_Pictographic# E16.0 [1] (🪾) leafless tree
1FABF ; Extended_Pictographic# E15.0 [1] (🪿) goose
1FAC0..1FAC2 ; Extended_Pictographic# E13.0 [3] (🫀..🫂) anatomical heart..people hugging
1FAC3..1FAC5 ; Extended_Pictographic# E14.0 [3] (🫃..🫅) pregnant man..person with crown
-1FAC6..1FACD ; Extended_Pictographic# E0.0 [8] (🫆..🫍) <reserved-1FAC6>..<reserved-1FACD>
+1FAC6 ; Extended_Pictographic# E16.0 [1] (🫆) fingerprint
+1FAC7..1FACD ; Extended_Pictographic# E0.0 [7] (🫇..🫍) <reserved-1FAC7>..<reserved-1FACD>
1FACE..1FACF ; Extended_Pictographic# E15.0 [2] (🫎..🫏) moose..donkey
1FAD0..1FAD6 ; Extended_Pictographic# E13.0 [7] (🫐..🫖) blueberries..teapot
1FAD7..1FAD9 ; Extended_Pictographic# E14.0 [3] (🫗..🫙) pouring liquid..jar
1FADA..1FADB ; Extended_Pictographic# E15.0 [2] (🫚..🫛) ginger root..pea pod
-1FADC..1FADF ; Extended_Pictographic# E0.0 [4] (🫜..🫟) <reserved-1FADC>..<reserved-1FADF>
+1FADC ; Extended_Pictographic# E16.0 [1] (🫜) root vegetable
+1FADD..1FADE ; Extended_Pictographic# E0.0 [2] (🫝..🫞) <reserved-1FADD>..<reserved-1FADE>
+1FADF ; Extended_Pictographic# E16.0 [1] (🫟) splatter
1FAE0..1FAE7 ; Extended_Pictographic# E14.0 [8] (🫠..🫧) melting face..bubbles
1FAE8 ; Extended_Pictographic# E15.0 [1] (🫨) shaking face
-1FAE9..1FAEF ; Extended_Pictographic# E0.0 [7] (🫩..🫯) <reserved-1FAE9>..<reserved-1FAEF>
+1FAE9 ; Extended_Pictographic# E16.0 [1] (🫩) face with bags under eyes
+1FAEA..1FAEF ; Extended_Pictographic# E0.0 [6] (🫪..🫯) <reserved-1FAEA>..<reserved-1FAEF>
1FAF0..1FAF6 ; Extended_Pictographic# E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands
1FAF7..1FAF8 ; Extended_Pictographic# E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand
1FAF9..1FAFF ; Extended_Pictographic# E0.0 [7] (🫹..🫿) <reserved-1FAF9>..<reserved-1FAFF>
diff --git a/Master/texmf-dist/tex/generic/unicode-data/load-unicode-data.tex b/Master/texmf-dist/tex/generic/unicode-data/load-unicode-data.tex
index d95e1f99ebc..d525e050432 100644
--- a/Master/texmf-dist/tex/generic/unicode-data/load-unicode-data.tex
+++ b/Master/texmf-dist/tex/generic/unicode-data/load-unicode-data.tex
@@ -1,6 +1,6 @@
% File load-unicode-data.tex
%
-% Copyright 2015-2023 The LaTeX Project
+% Copyright 2015-2025 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of
% the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -57,7 +57,7 @@
\catcode`\^=7 %
\newlinechar=`\^^J %
\message{^^J}%
- \message{load-unicode-data.tex v1.17 (2023-09-18)^^J}%
+ \message{load-unicode-data.tex v1.18 (2025-01-07)^^J}%
\message{Reading Unicode data^^J}%
% The first stage of parsing is dealing with the fact that there are lots of
% data items separated by |;|. Of those, only a few are needed so they are
@@ -175,10 +175,10 @@
}%
\let\repeat\fi
% There is no version data in |UnicodeData.txt|: log that it is being used with
-% a hard-coded date (the modification date from ftp.unicode.org). This obviously
+% a hard-coded date (the modification date from www.unicode.org/Public/). This obviously
% needs to be updated when a new download takes place!
- \message{\string# UnicodeData-15.1.0.txt^^J}%
- \message{\string# Modified 2023-09-18 08:45:00 GMT [JAW]^^J}%
+ \message{\string# UnicodeData-16.0.0.txt^^J}%
+ \message{\string# Modified 2024-08-25 18:05 GMT [JAW]^^J}%
% Actually loading the file requires an input stream, done directly.
% There is a blank line at the end of the data source so there is a check
% here for a |\par|.
diff --git a/Master/texmf-dist/tex/generic/unicode-data/load-unicode-math-classes.tex b/Master/texmf-dist/tex/generic/unicode-data/load-unicode-math-classes.tex
index 4e8ef04b7a2..c0195dd9cb7 100644
--- a/Master/texmf-dist/tex/generic/unicode-data/load-unicode-math-classes.tex
+++ b/Master/texmf-dist/tex/generic/unicode-data/load-unicode-math-classes.tex
@@ -1,6 +1,6 @@
% File load-unicode-math-classes.tex
%
-% Copyright 2015-2023 The LaTeX Project
+% Copyright 2015-2025 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of
% the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -48,7 +48,7 @@
\catcode`\^=7 %
\newlinechar=`\^^J %
\message{^^J}%
- \message{load-unicode-math-classes.tex v1.17 (2023-09-18)^^J}%
+ \message{load-unicode-math-classes.tex v1.18 (2025-01-07)^^J}%
\message{Reading math class data^^J}%
% The parser for data lines starts by skipping any comments (which start with
% a |#| and which will be category code~$12$).
diff --git a/Master/texmf-dist/tex/generic/unicode-data/load-unicode-xetex-classes.tex b/Master/texmf-dist/tex/generic/unicode-data/load-unicode-xetex-classes.tex
index 1eb383beae0..ca62581ae18 100644
--- a/Master/texmf-dist/tex/generic/unicode-data/load-unicode-xetex-classes.tex
+++ b/Master/texmf-dist/tex/generic/unicode-data/load-unicode-xetex-classes.tex
@@ -1,6 +1,6 @@
% File load-unicode-xetex-classes.tex
%
-% Copyright 2015-2023 The LaTeX Project
+% Copyright 2015-2025 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of
% the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -64,7 +64,7 @@
\catcode`\^=7 %
\newlinechar=`\^^J %
\message{^^J}%
- \message{load-unicode-xetex-classes.tex v1.17 (2023-09-18)^^J}%
+ \message{load-unicode-xetex-classes.tex v1.18 (2025-01-07)^^J}%
\message{Reading Unicode east Asian character class data^^J}%
% A string version of |#| will be needed to look for comment lines in the
% source. Once that is done proper parsing can begin.
diff --git a/Master/texmf-dist/tex/generic/witharrows/witharrows.sty b/Master/texmf-dist/tex/generic/witharrows/witharrows.sty
index b4e26af8bca..a898f51466d 100644
--- a/Master/texmf-dist/tex/generic/witharrows/witharrows.sty
+++ b/Master/texmf-dist/tex/generic/witharrows/witharrows.sty
@@ -6,7 +6,7 @@
%%
%% witharrows.dtx (with options: `LaTeX')
%%
-%% Copyright (C) 2017-2023 by F. Pantigny
+%% Copyright (C) 2017-2024 by F. Pantigny
%%
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -18,8 +18,9 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\def\myfileversion{2.8b}
-\def\myfiledate{2023/08/24}
+\def\myfileversion{2.9a}
+\def\myfiledate{2024/10/19}
+
\RequirePackage{tikz}
\usetikzlibrary{arrows.meta}
\usepgfmodule{bending} % https://texnique.fr/osqa/questions/12199
@@ -30,6 +31,10 @@
{\myfileversion}
{Draws arrows for explanations on the right}
\RequirePackage { varwidth }
+\ProvideDocumentCommand{\IfPackageLoadedT}{mm}
+ {\IfPackageLoadedTF{#1}{#2}{}}
+\ProvideDocumentCommand{\IfPackageLoadedF}{mm}
+ {\IfPackageLoadedTF{#1}{}{#2}}
\bool_new:N \c__witharrows_footnotehyper_bool
\bool_new:N \c__witharrows_footnote_bool
\cs_new_protected:Npn \__witharrows_msg_new:nn { \msg_new:nnn { witharrows } }
@@ -45,20 +50,25 @@
\cs_new_protected:Npn \__witharrows_warning:n { \msg_warning:nn { witharrows } }
\cs_new_protected:Npn \__witharrows_fatal:n { \msg_fatal:nn { witharrows } }
\cs_new_protected:Npn \__witharrows_error:nn { \msg_error:nnn { witharrows } }
-\cs_generate_variant:Nn \__witharrows_error:nn { n x }
+\cs_generate_variant:Nn \__witharrows_error:nn { n e }
\cs_new_protected:Npn \__witharrows_error_or_warning:n
{ \bool_if:NTF \c__witharrows_messages_for_Overleaf_bool \__witharrows_warning:n \__witharrows_error:n }
\bool_set:Nn \c__witharrows_messages_for_Overleaf_bool
{
- \str_if_eq_p:Vn \c_sys_jobname_str { _region_ } % for Emacs
- || \str_if_eq_p:Vn \c_sys_jobname_str { output } % for Overleaf
+ \str_if_eq_p:on \c_sys_jobname_str { _region_ } % for Emacs
+ || \str_if_eq_p:on \c_sys_jobname_str { output } % for Overleaf
}
+\bool_new:N \g__witharrows_beamer_bool
\keys_define:nn { WithArrows / package }
{
footnote .bool_set:N = \c__witharrows_footnote_bool ,
footnotehyper .bool_set:N = \c__witharrows_footnotehyper_bool ,
- unknown .code:n =
- \__witharrows_fatal:n { Option~unknown~for~package }
+ footnote .usage:n = load ,
+ footnotehyper .usage:n = load ,
+ beamer .bool_gset:N = \g__witharrows_beamer_bool ,
+ beamer .default:n = true ,
+ beamer .usage:n = load ,
+ unknown .code:n = \__witharrows_fatal:n { Option~unknown~for~package }
}
\__witharrows_msg_new:nn { Option~unknown~for~package }
{
@@ -67,6 +77,8 @@
\token_to_str:N\WithArrowsOptions.
}
\ProcessKeysOptions { WithArrows / package }
+\IfClassLoadedT { beamer } { \bool_gset_true:N \g__witharrows_beamer_bool }
+\IfPackageLoadedT { beamerarticle } { \bool_gset_true:N \g__witharrows_beamer_bool }
\__witharrows_msg_new:nn { footnote~with~footnotehyper~package }
{
Footnote~forbidden.\\
@@ -129,7 +141,10 @@
\cs_new_protected:Npn \__witharrows_collect_options:nnw #1#2[#3]
{ \__witharrows_collect_options:nn { #1 } { #2 , #3 } }
-\cs_generate_variant:Nn \seq_set_split:Nnn { N x x }
+\cs_generate_variant:Nn \seq_set_split:Nnn { N e e }
+\cs_generate_variant:Nn \keys_precompile:nnN { n n c }
+\prg_generate_conditional_variant:Nnn \tl_if_novalue:n { o } { F }
+\exp_args_generate:n { N N N n o }
\cs_new_protected:Npn \__witharrows_sort_seq:N #1
{
\seq_sort:Nn #1
@@ -143,15 +158,15 @@
\cs_new_protected:Npn \__witharrows_set_seq_of_str_from_clist:Nn #1 #2
{
\seq_set_from_clist:Nn #1 { #2 }
- \seq_set_map_x:NNn #1 #1 { \tl_to_str:n { ##1 } }
+ \seq_set_map_e:NNn #1 #1 { \tl_to_str:n { ##1 } }
}
\cs_new_protected:Npn \__witharrows_save:N #1
{
- \seq_set_split:Nxx \l_tmpa_seq
+ \seq_set_split:Nee \l_tmpa_seq
{ \char_generate:nn { `_ } { 12 } }
{ \cs_to_str:N #1 }
\seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl
- \str_set:Nx \l_tmpa_str { \seq_item:Nn \l_tmpa_seq { -1 } }
+ \str_set:Ne \l_tmpa_str { \seq_item:Nn \l_tmpa_seq { -1 } }
\use:c { \l_tmpa_str _if_exist:cF }
{ g _\seq_use:Nnnn \l_tmpa_seq _ _ _ }
{
@@ -163,11 +178,11 @@
}
\cs_new_protected:Npn \__witharrows_restore:N #1
{
- \seq_set_split:Nxx \l_tmpa_seq
+ \seq_set_split:Nee \l_tmpa_seq
{ \char_generate:nn { `_ } { 12 } }
{ \cs_to_str:N #1 }
\seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl
- \str_set:Nx \l_tmpa_str { \seq_item:Nn \l_tmpa_seq { -1 } }
+ \str_set:Ne \l_tmpa_str { \seq_item:Nn \l_tmpa_seq { -1 } }
\use:c { \l_tmpa_str _set_eq:Nc }
#1 { g_\seq_use:Nnnn \l_tmpa_seq _ _ _ }
}
@@ -258,13 +273,13 @@
\clist_set:Nn \l__witharrows_tags_clist { all }
\cs_new_protected:Npn \__witharrows_test_if_to_tag:
{
- \clist_if_in:NVT \l__witharrows_tags_clist \g__witharrows_line_int
+ \clist_if_in:NoT \l__witharrows_tags_clist \g__witharrows_line_int
{ \clist_set:Nn \l__witharrows_tags_clist { all } }
}
\str_new:N \l__witharrows_command_name_str
\str_set:Nn \l__witharrows_command_name_str { Arrow }
\str_new:N \l__witharrows_string_Arrow_for_msg_str
-\str_set:Nx \l__witharrows_string_Arrow_for_msg_str { \token_to_str:N \Arrow }
+\str_set:Ne \l__witharrows_string_Arrow_for_msg_str { \token_to_str:N \Arrow }
\seq_new:N \g__witharrows_names_seq
\bool_new:N \l__witharrows_sbwi_bool
\bool_new:N \l__witharrows_tag_star_bool
@@ -315,7 +330,7 @@
more-columns .value_forbidden:n = true ,
command-name .code:n =
\str_set:Nn \l__witharrows_command_name_str { #1 }
- \str_set:Nx \l__witharrows_string_Arrow_for_msg_str
+ \str_set:Ne \l__witharrows_string_Arrow_for_msg_str
{ \c_backslash_str Arrow~alias~\c_backslash_str #1 } ,
command-name .value_required:n = true ,
tikz-code .tl_set:N = \l__witharrows_tikz_code_tl ,
@@ -335,7 +350,7 @@
\int_set:Nn \l__witharrows_pos_arrow_int 7
}
{ \__witharrows_error:n { Incompatible~options } } ,
- group .value_forbidden:n = true ,
+ group .value_forbidden:n = true ,
groups .code:n =
\str_if_empty:NTF \l__witharrows_previous_key_str
{
@@ -348,7 +363,6 @@
{ \__witharrows_error:n { Incompatible~options } } ,
groups .value_forbidden:n = true ,
tikz .code:n = \tikzset { WithArrows / arrow / .append~style = { #1 } } ,
- tikz .initial:n = \c_empty_tl ,
tikz .value_required:n = true ,
rr .code:n = \__witharrows_fix_pos_option:n 3 ,
rr .value_forbidden:n = true ,
@@ -400,8 +414,8 @@
\AtBeginDocument
{
\bool_set_false:N \l_tmpa_bool
- \IfPackageLoadedTF { amsmath } { \bool_set_true:N \l_tmpa_bool } { }
- \IfPackageLoadedTF { unicode-math } { \bool_set_true:N \l_tmpa_bool } { }
+ \IfPackageLoadedT { amsmath } { \bool_set_true:N \l_tmpa_bool }
+ \IfPackageLoadedT { unicode-math } { \bool_set_true:N \l_tmpa_bool }
\bool_if:NT \l_tmpa_bool
{ \clist_put_right:Nn \c__witharrows_ext_delimiters_clist { \lvert, \lVert } }
}
@@ -445,8 +459,8 @@
wrap-lines .default:n = true ,
replace-left-brace-by .code:n =
{
- \tl_set:Nx \l_tmpa_tl { \tl_head:n { #1 } }
- \clist_if_in:NVTF
+ \tl_set:Ne \l_tmpa_tl { \tl_head:n { #1 } }
+ \clist_if_in:NoTF
\c__witharrows_ext_delimiters_clist
\l_tmpa_tl
{ \tl_set:Nn \l__witharrows_replace_left_brace_by_tl { #1 } }
@@ -460,9 +474,9 @@
{
name .code:n =
\str_set:Nn \l_tmpa_str { #1 }
- \seq_if_in:NVTF \g__witharrows_names_seq \l_tmpa_str
+ \seq_if_in:NoTF \g__witharrows_names_seq \l_tmpa_str
{ \__witharrows_error:n { Duplicate~name } }
- { \seq_gput_left:NV \g__witharrows_names_seq \l_tmpa_str }
+ { \seq_gput_left:No \g__witharrows_names_seq \l_tmpa_str }
\str_set_eq:NN \l__witharrows_name_str \l_tmpa_str ,
name .value_required:n = true ,
code-before .code:n = \tl_put_right:Nn \l__witharrows_code_before_tl { #1 } ,
@@ -566,7 +580,7 @@
}
\cs_new_protected:Npn \__witharrows_set_independent:
{
- \str_if_eq:VnF \l_keys_value_tl { NoValue }
+ \str_if_eq:onF \l_keys_value_tl { NoValue }
{ \__witharrows_error:n { Value~for~a~key } }
\__witharrows_set_independent_bis:
}
@@ -582,7 +596,7 @@
\keys_define:nn { WithArrows / Arrow / FirstPass }
{
jump .code:n =
- \int_compare:nTF { #1 > 0 }
+ \int_compare:nNnTF { #1 } > \c_zero_int
{ \int_set:Nn \l__witharrows_jump_int { #1 } }
{ \__witharrows_error:n { Negative~jump } } ,
jump .value_required:n = true,
@@ -625,7 +639,7 @@
xoffset .code:n = ,
unknown .code:n =
\__witharrows_sort_seq:N \l__witharrows_options_Arrow_seq
- \seq_if_in:NVTF \l__witharrows_options_WithArrows_seq \l_keys_key_str
+ \seq_if_in:NoTF \l__witharrows_options_WithArrows_seq \l_keys_key_str
{
\str_set:Nn \l_tmpa_str
{ ~However,~this~key~can~be~used~in~the~options~of~{WithArrows}. }
@@ -652,7 +666,6 @@
tikz-code .tl_set:N = \l__witharrows_tikz_code_tl ,
tikz-code .initial:n = \draw~(#1)~to~node{#3}~(#2)~; ,
tikz .code:n = \tikzset { WithArrows / arrow / .append~style = { #1 } } ,
- tikz .initial:n = \c_empty_tl ,
rr .code:n = \__witharrows_fix_pos_arrow:n 3 ,
ll .code:n = \__witharrows_fix_pos_arrow:n 1 ,
rl .code:n = \__witharrows_fix_pos_arrow:n 2 ,
@@ -660,13 +673,11 @@
i .code:n = \__witharrows_fix_pos_arrow:n 5 ,
o .code:n = \str_set:Nn \l__witharrows_previous_key_str { o } ,
xoffset .code:n =
- \bool_if:nTF
+ \bool_lazy_all:nTF
{
- \int_compare_p:nNn \g__witharrows_arrow_int > 1
- &&
- \int_compare_p:nNn \l__witharrows_pos_arrow_int > 5
- &&
- ! \str_if_eq_p:Vn \l__witharrows_status_arrow_str { independent }
+ { \int_compare_p:nNn \g__witharrows_arrow_int > 1 }
+ { \int_compare_p:nNn \l__witharrows_pos_arrow_int > 5 }
+ { ! \str_if_eq_p:on \l__witharrows_status_arrow_str { independent } }
}
{ \__witharrows_error:n { Option~xoffset~forbidden } }
{ \dim_set:Nn \l__witharrows_xoffset_dim { #1 } } ,
@@ -683,8 +694,21 @@
\keys_set:nn { WithArrows / WithArrowsOptions } { #1 }
}
\cs_new_protected:Npn \__witharrows_Arrow
- { \__witharrows_collect_options:n { \__witharrows_Arrow_i } }
-\NewDocumentCommand \__witharrows_Arrow_i { m m ! O { } }
+ { \__witharrows_collect_options:n { \__witharrows_Arrow_iii } }
+\bool_if:NTF \g__witharrows_beamer_bool
+ {
+ \NewDocumentCommand \__witharrows_Arrow_iii { m d < > m ! O { } }
+ {
+ \tl_if_novalue:nTF { #2 }
+ { \__witharrows_Arrow_ii { #1 } { #3 } [ #4 ] }
+ { \only <#2> { \__witharrows_Arrow_ii { #1 } { #3 } [ #4 ] } }
+ }
+ }
+ {
+ \NewDocumentCommand \__witharrows_Arrow_iii { m m ! O { } }
+ { \__witharrows_Arrow_ii { #1 } { #2 } [ #3 ] }
+ }
+\NewDocumentCommand \__witharrows_Arrow_ii { m m ! O { } }
{
\int_gincr:N \g__witharrows_arrow_int
\str_clear_new:N \l__witharrows_previous_key_str
@@ -692,10 +716,10 @@
\prop_put:NnV \l_tmpa_prop { initial } \g__witharrows_line_int
\int_set:Nn \l_tmpa_int { \g__witharrows_line_int + \l__witharrows_jump_int }
\prop_put:NnV \l_tmpa_prop { final } \l_tmpa_int
- \prop_put:NnV \l_tmpa_prop { status } \l__witharrows_status_arrow_str
+ \prop_put:Nno \l_tmpa_prop { status } \l__witharrows_status_arrow_str
\prop_put:Nnn \l_tmpa_prop { options } { #1 , #3 }
\prop_put:Nnn \l_tmpa_prop { label } { #2 }
- \prop_put:Nnx \l_tmpa_prop { input-line } \msg_line_number:
+ \prop_put:Nne \l_tmpa_prop { input-line } \msg_line_number:
\prop_put:Nnn \l_tmpa_prop { width } { 0 pt }
\prop_gclear_new:c
{ g__witharrows_arrow _ \l__witharrows_prefix_str _ \int_use:N \g__witharrows_arrow_int _ prop }
@@ -728,7 +752,7 @@
\seq_set_eq:NN \l_tmpa_seq \g__witharrows_position_in_the_tree_seq
\seq_pop_right:NN \l_tmpa_seq \l_tmpa_tl
\str_clear_new:N \l__witharrows_prefix_str
- \str_set:Nx \l__witharrows_prefix_str { \seq_use:Nnnn \l_tmpa_seq - - - }
+ \str_set:Ne \l__witharrows_prefix_str { \seq_use:Nnnn \l_tmpa_seq - - - }
\cs_set_eq:NN \\ \__witharrows_cr:
\dim_zero:N \mathsurround
\int_zero_new:N \l__witharrows_initial_int
@@ -784,30 +808,30 @@
\bool_if:NT \l__witharrows_in_DispWithArrows_bool
{
\__witharrows_test_if_to_tag:
- \IfPackageLoadedTF { amsmath } { \__witharrows_set_qedhere: } { }
+ \IfPackageLoadedT { amsmath } { \__witharrows_set_qedhere: }
}
}
- \str_if_eq:VnT \l__witharrows_type_col_str { c } \hfil
- \str_if_eq:VnT \l__witharrows_type_col_str { C } \hfil
- \str_if_eq:VnT \l__witharrows_type_col_str { r } \hfill
- \str_if_eq:VnT \l__witharrows_type_col_str { R } \hfill
+ \str_if_eq:onT \l__witharrows_type_col_str { c } \hfil
+ \str_if_eq:onT \l__witharrows_type_col_str { C } \hfil
+ \str_if_eq:onT \l__witharrows_type_col_str { r } \hfill
+ \str_if_eq:onT \l__witharrows_type_col_str { R } \hfill
\int_gincr:N \g__witharrows_col_int
\int_gset:Nn \g__witharrows_static_col_int { \int_use:N \g__witharrows_col_int }
\c_math_toggle_token
- \str_if_eq:VnT \l__witharrows_type_col_str { C } { { } }
- \str_if_eq:VnT \l__witharrows_type_col_str { L } { { } }
+ \str_if_eq:onT \l__witharrows_type_col_str { C } { { } }
+ \str_if_eq:onT \l__witharrows_type_col_str { L } { { } }
\bool_if:NT \l__witharrows_displaystyle_bool \displaystyle
##
- \str_if_eq:VnT \l__witharrows_type_col_str { C } { { } }
- \str_if_eq:VnT \l__witharrows_type_col_str { R } { { } }
+ \str_if_eq:onT \l__witharrows_type_col_str { C } { { } }
+ \str_if_eq:onT \l__witharrows_type_col_str { R } { { } }
\c_math_toggle_token
\int_compare:nNnTF \g__witharrows_col_int = \l__witharrows_nb_cols_int
\__witharrows_construct_nodes:
{
- \str_if_eq:VnT \l__witharrows_type_col_str { l } \hfil
- \str_if_eq:VnT \l__witharrows_type_col_str { L } \hfil
- \str_if_eq:VnT \l__witharrows_type_col_str { c } \hfil
- \str_if_eq:VnT \l__witharrows_type_col_str { C } \hfil
+ \str_if_eq:onT \l__witharrows_type_col_str { l } \hfil
+ \str_if_eq:onT \l__witharrows_type_col_str { L } \hfil
+ \str_if_eq:onT \l__witharrows_type_col_str { c } \hfil
+ \str_if_eq:onT \l__witharrows_type_col_str { C } \hfil
\bool_if:NT \l__witharrows_in_DispWithArrows_bool { \tabskip = \c_zero_skip }
&
}
@@ -913,7 +937,7 @@
{
\cs_set:Npn \WithArrowsRightX { \g__witharrows_right_x_dim }
\normalbaselines
- \int_compare:nNnT \g__witharrows_arrow_int > 0
+ \int_if_zero:nF \g__witharrows_arrow_int
{
\int_compare:nNnT \g__witharrows_arrow_int = 1
{
@@ -932,7 +956,7 @@
\group_end:
\seq_gpop_right:NN \g__witharrows_position_in_the_tree_seq \l_tmpa_tl
\seq_gpop_right:NN \g__witharrows_position_in_the_tree_seq \l_tmpa_tl
- \seq_gput_right:Nx \g__witharrows_position_in_the_tree_seq
+ \seq_gput_right:Ne \g__witharrows_position_in_the_tree_seq
{ \int_eval:n { \l_tmpa_tl + 1 } }
\int_compare:nNnT { \seq_count:N \g__witharrows_position_in_the_tree_seq } = 1
{ \int_gincr:N \g__witharrows_last_env_int }
@@ -976,19 +1000,18 @@
\clist_if_in:NnTF \l__witharrows_tags_clist { all }
{
\tl_if_empty:NT \l__witharrows_tag_tl { \int_gincr:N \c@equation }
- \cs_gset:Npx \g_tmpa_tl
+ \cs_gset:Npe \g_tmpa_tl
{ \tl_if_empty:NTF \l__witharrows_tag_tl \theequation \l__witharrows_tag_tl }
\seq_if_empty:NF \l__witharrows_labels_seq
{
- \cs_set:Npx \@currentlabel { \p@equation \g_tmpa_tl }
- \IfPackageLoadedTF { hyperref }
+ \cs_set:Npe \@currentlabel { \p@equation \g_tmpa_tl }
+ \IfPackageLoadedT { hyperref }
{
% the following line is probably pointless (2022/05/16)
% \str_set:Nn \This@name { equation }
\hyper@refstepcounter { equation }
}
- { }
- \IfPackageLoadedTF { cleveref }
+ \IfPackageLoadedT { cleveref }
{
\cref@constructprefix { equation } \cref@result
\protected@edef \cref@currentlabel
@@ -1002,7 +1025,6 @@
\p@equation \g_tmpa_tl
}
}
- { }
\seq_map_function:NN \l__witharrows_labels_seq \__witharrows_old_label
}
\__witharrows_save:N \l__witharrows_tag_star_bool
@@ -1017,7 +1039,7 @@
\__witharrows_restore:N \l__witharrows_tag_star_bool
\__witharrows_restore:N \l__witharrows_qedhere_bool
\bool_if:NT \l__witharrows_qedhere_bool
- { \hbox_overlap_left:n \__witharrows_qedhere_i: }
+ { \hbox_overlap_left:n \__witharrows_qedhere_i: }
\cs_set_eq:NN \theequation \g_tmpa_tl
\bool_if:NT \l__witharrows_tag_star_bool
{ \cs_set_eq:NN \tagform@ \prg_do_nothing: }
@@ -1050,7 +1072,7 @@
&
\__witharrows_restore:N \l__witharrows_qedhere_bool
\bool_if:NT \l__witharrows_qedhere_bool
- { \hbox_overlap_left:n \__witharrows_qedhere_i: }
+ { \hbox_overlap_left:n \__witharrows_qedhere_i: }
\pgfpicture
\pgfrememberpicturepositiononpagetrue
\pgfcoordinate
@@ -1073,7 +1095,7 @@
}
\cs_new_protected:Npn \__witharrows_analyze_end:Nn #1 #2
{
- \str_if_eq:VnT \l__witharrows_type_env_str { #2 }
+ \str_if_eq:onT \l__witharrows_type_env_str { #2 }
{
\__witharrows_error:n { newline~at~the~end~of~env }
\group_begin:
@@ -1094,7 +1116,7 @@
\legacy_if:nT { @minipage }
{ \bool_set_true:N \l__witharrows_in_label_or_minipage_bool }
}
- \IfPackageLoadedTF { mathtools }
+ \IfPackageLoadedT { mathtools }
{
\MH_if_boolean:nT { show_only_refs }
{
@@ -1102,12 +1124,11 @@
\MH_set_boolean_T:n { show_only_refs }
}
}
- { }
- \IfPackageLoadedTF { typedref }
+ \IfPackageLoadedT { typedref }
{ \str_set:Nn \sr@name { equation } }
- { }
- \IfPackageLoadedTF { amsmath } { \intertext@ } { }
- \exp_args:No \tl_if_novalue:nF { #1 } { \tl_set:Nn \l__witharrows_left_brace_tl { #1 } }
+ \IfPackageLoadedT { amsmath } { \intertext@ }
+ \tl_if_novalue:oF { #1 }
+ { \cs_set_nopar:Npn \l__witharrows_left_brace_tl { #1 } }
\__witharrows_pre_halign:n { #2 }
\bool_if:NT \l__witharrows_subequations_bool { \begin { subequations } }
\tl_if_eq:NNF \l__witharrows_left_brace_tl \c_novalue_tl
@@ -1144,7 +1165,7 @@
\fi:
\bool_if:NTF \l__witharrows_in_label_or_minipage_bool
{
- \noindent % added in v. 2.6d
+ \noindent
\c_math_toggle_token
}
{
@@ -1156,8 +1177,8 @@
}
\dim_zero_new:N \l__witharrows_linewidth_dim
\bool_if:NTF \l__witharrows_in_label_or_minipage_bool
- { \dim_set_eq:NN \l__witharrows_linewidth_dim \linewidth }
- { \dim_set_eq:NN \l__witharrows_linewidth_dim \displaywidth }
+ { \dim_set_eq:NN \l__witharrows_linewidth_dim \linewidth }
+ { \dim_set_eq:NN \l__witharrows_linewidth_dim \displaywidth }
\box_clear_new:N \l__witharrows_halign_box
\setbox \l__witharrows_halign_box \vtop \bgroup
\tabskip =
@@ -1242,9 +1263,8 @@
}
\endpgfpicture
\__witharrows_post_halign:
- \IfPackageLoadedTF { mathtools }
+ \IfPackageLoadedT { mathtools }
{ \MH_if_boolean:nT { show_only_refs } \MT_showonlyrefs_true: }
- { }
\bool_if:NTF \l__witharrows_in_label_or_minipage_bool
{
\c_math_toggle_token
@@ -1282,7 +1302,7 @@
\tl_if_empty:NF \l__witharrows_tag_tl
{ \__witharrows_error:nn { Multiple~tags } { #2 } }
\clist_set:Nn \l__witharrows_tags_clist { all }
- \IfPackageLoadedTF { mathtools }
+ \IfPackageLoadedT { mathtools }
{
\MH_if_boolean:nT { show_only_refs }
{
@@ -1290,13 +1310,11 @@
{ \clist_clear:N \l__witharrows_tags_clist }
}
}
- { }
\tl_set:Nn \l__witharrows_tag_tl { #2 }
\bool_set:Nn \l__witharrows_tag_star_bool { #1 }
\bool_if:nT { #1 }
{
- \IfPackageLoadedTF { amsmath }
- { }
+ \IfPackageLoadedF { amsmath }
{ \__witharrows_error:n { tag*~without~amsmath } }
}
}
@@ -1312,7 +1330,7 @@
{ \__witharrows_error:n { Multiple~labels } }
}
\seq_put_right:Nn \l__witharrows_labels_seq { #1 }
- \IfPackageLoadedTF { mathtools }
+ \IfPackageLoadedT { mathtools }
{
\MH_if_boolean:nT { show_only_refs }
{
@@ -1321,14 +1339,12 @@
{ \clist_clear:N \l__witharrows_tags_clist }
}
}
- { }
- \IfPackageLoadedTF { autonum }
+ \IfPackageLoadedT { autonum }
{
\cs_if_exist:cTF { autonum@#1Referenced }
{ \clist_set:Nn \l__witharrows_tags_clist { all } }
{ \clist_clear:N \l__witharrows_tags_clist }
}
- { }
}
}
\cs_new_protected:Npn \__witharrows_tagnextline:
@@ -1390,12 +1406,9 @@
\__witharrows_treat_an_arrow_in_scan:
\int_incr:N \l__witharrows_arrow_int
}
- \bool_if:nT
- {
- ! \int_compare_p:nNn \l__witharrows_pos_arrow_int = 7
- &&
- \int_compare_p:nNn \l__witharrows_first_arrow_of_group_int > 0
- }
+ \bool_lazy_and:nnT
+ { ! \int_compare_p:nNn \l__witharrows_pos_arrow_int = 7 }
+ { \int_compare_p:nNn \l__witharrows_first_arrow_of_group_int > \c_zero_int }
{ \__witharrows_draw_arrows:nn \l__witharrows_first_arrow_of_group_int \g__witharrows_arrow_int }
}
\cs_new_protected:Npn \__witharrows_treat_an_arrow_in_scan:
@@ -1412,10 +1425,10 @@
}
{ \bool_not_p:n { \int_compare_p:nNn \l__witharrows_pos_arrow_int = 7 } }
}
- { \str_if_eq_p:Vn \l__witharrows_status_arrow_str { new-group } }
+ { \str_if_eq_p:on \l__witharrows_status_arrow_str { new-group } }
}
{
- \int_compare:nNnF \l__witharrows_first_arrow_of_group_int = \c_zero_int
+ \int_if_zero:nF \l__witharrows_first_arrow_of_group_int
{
\__witharrows_draw_arrows:nn
\l__witharrows_first_arrow_of_group_int
@@ -1437,10 +1450,9 @@
{ \dim_set:Nn \l__witharrows_x_dim { - \c_max_dim } }
}
{
- \str_if_eq:VnF \l__witharrows_status_arrow_str { independent }
+ \str_if_eq:onF \l__witharrows_status_arrow_str { independent }
{
- \int_compare:nT
- { \l__witharrows_initial_int = \l__witharrows_first_line_of_group_int }
+ \int_compare:nNnT \l__witharrows_initial_int = \l__witharrows_first_line_of_group_int
{ \seq_put_left:NV \l__witharrows_first_arrows_seq \l__witharrows_arrow_int }
\int_compare:nNnTF \l__witharrows_final_int > \l__witharrows_last_line_of_group_int
{
@@ -1454,15 +1466,12 @@
}
}
}
- \str_if_eq:VnF \l__witharrows_status_arrow_str { independent }
+ \str_if_eq:onF \l__witharrows_status_arrow_str { independent }
{
\int_compare:nNnF \l__witharrows_pos_arrow_int = 8
{ \__witharrows_update_x:nn \l__witharrows_initial_int \l__witharrows_final_int }
}
}
-\cs_generate_variant:Nn \keys_set:nn { n o }
-\cs_new_protected:Npn \__witharrows_keys_set:
- { \keys_set_known:no { WithArrows / Arrow / SecondPass } }
\cs_new_protected:Npn \__witharrows_draw_arrows:nn #1 #2
{
\group_begin:
@@ -1486,7 +1495,7 @@
{ status } \l__witharrows_status_arrow_str
\int_compare:nNnF \l__witharrows_final_int > \g__witharrows_line_int
{
- \str_if_eq:VnTF \l__witharrows_status_arrow_str { over }
+ \str_if_eq:onTF \l__witharrows_status_arrow_str { over }
{ \seq_put_right:NV \l__witharrows_o_arrows_seq \l__witharrows_arrow_int }
\__witharrows_draw_arrow:
}
@@ -1500,10 +1509,13 @@
\group_begin:
\prop_get:cnN
{ g__witharrows_arrow _\l__witharrows_prefix_str _ \int_use:N \l__witharrows_arrow_int _ prop }
- { options } \l_tmpa_tl
+ { options }
+ \l_tmpa_tl
\str_clear_new:N \l__witharrows_previous_key_str
- \exp_args:NNo \exp_args:No
- \__witharrows_keys_set: { \l_tmpa_tl , tikz = { xshift = \l__witharrows_xoffset_dim } }
+ \exp_args:NNNno \exp_args:NNno \exp_args:Nno
+ \keys_set_known:nn
+ { WithArrows / Arrow / SecondPass }
+ { \l_tmpa_tl , tikz = { xshift = \l__witharrows_xoffset_dim } }
\bool_set_false:N \l__witharrows_initial_r_bool
\bool_set_false:N \l__witharrows_final_r_bool
\int_case:nn \l__witharrows_pos_arrow_int
@@ -1521,19 +1533,19 @@
\dim_set:Nn \l__witharrows_x_dim { - \c_max_dim }
\__witharrows_update_x:nn \l__witharrows_initial_int \l__witharrows_final_int
}
- \tl_set:Nx \l__witharrows_initial_tl
+ \tl_set:Ne \l__witharrows_initial_tl
{ \int_use:N \l__witharrows_initial_int - \bool_if:NTF \l__witharrows_initial_r_bool rl }
- \tl_set:Nx \l__witharrows_final_tl
+ \tl_set:Ne \l__witharrows_final_tl
{ \int_use:N \l__witharrows_final_int - \bool_if:NTF \l__witharrows_final_r_bool rl }
\prop_get:cnN
{ g__witharrows_arrow _ \l__witharrows_prefix_str _ \int_use:N \l__witharrows_arrow_int _ prop }
{ label }
\l_tmpa_tl
- \seq_if_in:NxTF \l__witharrows_first_arrows_seq
+ \seq_if_in:NeTF \l__witharrows_first_arrows_seq
{ \int_use:N \l__witharrows_arrow_int }
{ \bool_set_true:N \l_tmpa_bool }
{ \bool_set_false:N \l_tmpa_bool }
- \seq_if_in:NxTF \l__witharrows_last_arrows_seq
+ \seq_if_in:NeTF \l__witharrows_last_arrows_seq
{ \int_use:N \l__witharrows_arrow_int }
{ \bool_set_true:N \l_tmpb_bool }
{ \bool_set_false:N \l_tmpb_bool }
@@ -1562,7 +1574,7 @@
}
{ \int_compare_p:nNn { \l__witharrows_final_int - \l__witharrows_initial_int } = 1 }
{
- \tl_gset:Nx \g_tmpa_tl
+ \tl_gset:Ne \g_tmpa_tl
{
\int_compare:nNnTF \l__witharrows_pos_arrow_int < 5
{ \dim_use:N \g__witharrows_x_initial_dim }
@@ -1573,7 +1585,7 @@
+ 0.5 \l__witharrows_max_length_of_arrow_dim
}
}
- \tl_gset:Nx \g_tmpb_tl
+ \tl_gset:Ne \g_tmpb_tl
{
\int_compare:nNnTF \l__witharrows_pos_arrow_int < 5
{ \dim_use:N \g__witharrows_x_final_dim }
@@ -1586,7 +1598,7 @@
}
}
{
- \tl_gset:Nx \g_tmpa_tl
+ \tl_gset:Ne \g_tmpa_tl
{
\int_compare:nNnTF \l__witharrows_pos_arrow_int < 5
{ \dim_use:N \g__witharrows_x_initial_dim }
@@ -1595,7 +1607,7 @@
{ \dim_eval:n { \g__witharrows_y_initial_dim + \l__witharrows_start_adjust_dim } }
{ \dim_use:N \g__witharrows_y_initial_dim }
}
- \tl_gset:Nx \g_tmpb_tl
+ \tl_gset:Ne \g_tmpb_tl
{
\int_compare:nNnTF \l__witharrows_pos_arrow_int < 5
{ \dim_use:N \g__witharrows_x_final_dim }
@@ -1627,9 +1639,10 @@
\__witharrows_draw_arrow:nno \g_tmpa_tl \g_tmpb_tl \l_tmpa_tl
\group_end:
}
-\cs_new_protected:Npn \__witharrows_def_function_tmpa:n #1
+\cs_generate_variant:Nn \__witharrows_def_function_arrow:n { o }
+\cs_new_protected:Npn \__witharrows_def_function_arrow:n #1
{
- \cs_set:Npn \__witharrows_tmpa:nnn ##1 ##2 ##3
+ \cs_set:Npn \__witharrows_arrow:nnn ##1 ##2 ##3
{
\begin{tikzpicture}
[ __witharrows_standard_arrow ]
@@ -1639,10 +1652,13 @@
{ \dim_zero:N \l_tmpa_dim }
{ \dim_set:Nn \l_tmpa_dim { \pgf@picmaxx - \pgf@picminx } }
\dim_add:Nn \l_tmpa_dim \l__witharrows_xoffset_dim
- \prop_gput:cnV
- { g__witharrows_arrow _ \l__witharrows_prefix_str _ \int_use:N \l__witharrows_arrow_int _ prop }
- { width }
- \l_tmpa_dim
+ \int_compare:nNnT \l__witharrows_arrow_int > 0 % added 2024/10/01
+ {
+ \prop_gput:cnV
+ { g__witharrows_arrow _ \l__witharrows_prefix_str _ \int_use:N \l__witharrows_arrow_int _ prop }
+ { width }
+ \l_tmpa_dim
+ }
\bool_if:NF \l__witharrows_right_overlap_bool
{
\bool_if:NT \l__witharrows_in_WithArrows_bool
@@ -1659,21 +1675,21 @@
\end{tikzpicture}
}
}
+\cs_generate_variant:Nn \__witharrows_draw_arrow:nnn { n n o }
\cs_new_protected:Npn \__witharrows_draw_arrow:nnn #1 #2 #3
{
\bool_lazy_and:nnT \l__witharrows_wrap_lines_bool \l__witharrows_in_DispWithArrows_bool
{ \tl_set_eq:NN \l__witharrows_tikz_code_tl \c__witharrows_tikz_code_wrap_lines_tl }
- \exp_args:NV \__witharrows_def_function_tmpa:n \l__witharrows_tikz_code_tl
- \__witharrows_tmpa:nnn { #1 } { #2 } { #3 }
+ \__witharrows_def_function_arrow:o \l__witharrows_tikz_code_tl
+ \__witharrows_arrow:nnn { #1 } { #2 } { #3 }
}
-\cs_generate_variant:Nn \__witharrows_draw_arrow:nnn { n n o }
\tl_const:Nn \c__witharrows_tikz_code_wrap_lines_tl
{
- \pgfset { inner~sep = 0pt}
+ \pgfset { inner~sep = 0pt }
\draw ( #1 ) to node ( __witharrows_label ) { } ( #2 ) ;
\pgfpointanchor { wa - \l__witharrows_prefix_str - __witharrows_label } { west }
- \dim_set:Nn \l_tmpa_dim { \g__witharrows_right_x_dim - \pgf@x - 0.3333 ex }
- \path \pgfextra { \tl_gset:Nx \g_tmpa_tl \tikz@text@width } ;
+ \dim_set:Nn \l_tmpa_dim { \g__witharrows_right_x_dim - \pgf@x - 0.33333 em }
+ \path \pgfextra { \tl_gset:Ne \g_tmpa_tl \tikz@text@width } ;
\tl_if_empty:NF \g_tmpa_tl
{
\dim_set:Nn \l_tmpb_dim \g_tmpa_tl
@@ -1685,7 +1701,7 @@
\path ( __witharrows_label.west )
node [ anchor = west ]
{
- \skip_horizontal:n { 0.3333 ex }
+ \skip_horizontal:n { 0.33333 em }
\begin { minipage } { \l_tmpa_dim }
\tikz@text@action
\pgfkeysgetvalue { / tikz / node~halign~header } \l_tmpa_tl
@@ -1773,12 +1789,12 @@
\prop_get:cnN
{ g__witharrows_arrow _ \l__witharrows_prefix_str _ ####1 _ prop }
{ status } \l__witharrows_status_arrow_str
- \bool_if:nT
+ \bool_lazy_any:nF
{
- ! \int_compare_p:n { ##1 = ####1 }
- && \int_compare_p:n { \l__witharrows_initial_int <= \l_tmpa_tl }
- && \int_compare_p:n { \l_tmpb_tl <= \l__witharrows_final_int }
- && ! \str_if_eq_p:Vn \l__witharrows_status_arrow_str { independent }
+ { \int_compare_p:n { ##1 = ####1 } }
+ { \int_compare_p:nNn \l__witharrows_initial_int > \l_tmpa_tl }
+ { \int_compare_p:nNn \l_tmpb_tl > \l__witharrows_final_int }
+ { \str_if_eq_p:on \l__witharrows_status_arrow_str { independent } }
}
{
\bool_gset_true:N \g_tmpa_bool
@@ -1806,22 +1822,22 @@
{
tikz .code:n =
\tikzset { WithArrows / arrow / .append~style = { #1 } } ,
- tikz .value_required:n = true ,
- rr .value_forbidden:n = true ,
- rr .code:n = \__witharrows_fix_pos_option:n 0 ,
- ll .value_forbidden:n = true,
- ll .code:n = \__witharrows_fix_pos_option:n 1 ,
- rl .value_forbidden:n = true ,
- rl .code:n = \__witharrows_fix_pos_option:n 2 ,
- lr .value_forbidden:n = true ,
- lr .code:n = \__witharrows_fix_pos_option:n 3 ,
- v .value_forbidden:n = true ,
- v .code:n = \__witharrows_fix_pos_option:n 4 ,
+ tikz .value_required:n = true ,
+ rr .value_forbidden:n = true ,
+ rr .code:n = \__witharrows_fix_pos_option:n 0 ,
+ ll .value_forbidden:n = true,
+ ll .code:n = \__witharrows_fix_pos_option:n 1 ,
+ rl .value_forbidden:n = true ,
+ rl .code:n = \__witharrows_fix_pos_option:n 2 ,
+ lr .value_forbidden:n = true ,
+ lr .code:n = \__witharrows_fix_pos_option:n 3 ,
+ v .value_forbidden:n = true ,
+ v .code:n = \__witharrows_fix_pos_option:n 4 ,
tikz-code .tl_set:N = \l__witharrows_tikz_code_tl ,
tikz-code .value_required:n = true ,
- xoffset .dim_set:N = \l__witharrows_xoffset_dim ,
- xoffset .value_required:n = true ,
- unknown .code:n =
+ xoffset .dim_set:N = \l__witharrows_xoffset_dim ,
+ xoffset .value_required:n = true ,
+ unknown .code:n =
\__witharrows_sort_seq:N \l__witharrows_options_Arrow_code_after_seq
\__witharrows_error:n { Unknown~option~Arrow~in~code-after }
}
@@ -1830,7 +1846,7 @@
{ ll, lr, rl, rr, tikz, tikz-code, v, x, offset }
\NewDocumentCommand \__witharrows_Arrow_code_after { O { } m m m ! O { } }
{
- \int_set:Nn \l__witharrows_pos_arrow_int 1
+ \int_set_eq:NN \l__witharrows_pos_arrow_int \c_one_int
\str_clear_new:N \l__witharrows_previous_key_str
\group_begin:
\keys_set:nn { WithArrows / Arrow / code-after }
@@ -1851,10 +1867,10 @@
{ \__witharrows_error:nn { Both~lines~are~equal } { #2 } }
{
\cs_if_free:cTF { pgf@sh@ns@wa - \l__witharrows_prefix_str - #2 - l }
- { \__witharrows_error:nx { Wrong~line~in~Arrow } { #2 } }
+ { \__witharrows_error:ne { Wrong~line~in~Arrow } { #2 } }
{
\cs_if_free:cTF { pgf@sh@ns@wa - \l__witharrows_prefix_str - #3 - l }
- { \__witharrows_error:nx { Wrong~line~in~Arrow } { #3 } }
+ { \__witharrows_error:ne { Wrong~line~in~Arrow } { #3 } }
{
\int_compare:nNnTF \l__witharrows_pos_arrow_int = 4
{
@@ -1868,9 +1884,9 @@
{ north }
\dim_set:Nn \l_tmpa_dim
{ \dim_max:nn \l_tmpa_dim \pgf@x }
- \tl_gset:Nx \g_tmpa_tl
+ \tl_gset:Ne \g_tmpa_tl
{ \dim_use:N \l_tmpa_dim , \dim_use:N \l_tmpb_dim }
- \tl_gset:Nx \g_tmpb_tl
+ \tl_gset:Ne \g_tmpb_tl
{ \dim_use:N \l_tmpa_dim , \dim_use:N \pgf@y }
\endpgfpicture
}
@@ -1883,7 +1899,7 @@
#2 - \bool_if:NTF \l__witharrows_initial_r_bool r l
}
{ south }
- \tl_gset:Nx \g_tmpa_tl
+ \tl_gset:Ne \g_tmpa_tl
{ \dim_use:N \pgf@x , \dim_use:N \pgf@y }
\pgfpointanchor
{
@@ -1891,7 +1907,7 @@
#3 - \bool_if:NTF \l__witharrows_final_r_bool r l
}
{ north }
- \tl_gset:Nx \g_tmpb_tl
+ \tl_gset:Ne \g_tmpb_tl
{ \dim_use:N \pgf@x , \dim_use:N \pgf@y }
\endpgfpicture
}
@@ -1903,34 +1919,34 @@
}
\cs_new_protected:Npn \__witharrows_MultiArrow:nn #1 #2
{
- \exp_args:Nnx
+ \exp_args:Nne
\regex_match:nnTF
{ \A \d+ (\,\d+)* ( \, \.\.\. (\,\d+)+ )* \Z }
{ #1 }
{ \__witharrows_MultiArrow_i:nn { #1 } { #2 } }
- { \__witharrows_error:nx { Invalid~specification~for~MultiArrow } { #1 } }
+ { \__witharrows_error:ne { Invalid~specification~for~MultiArrow } { #1 } }
}
\cs_new_protected:Npn \__witharrows_MultiArrow_i:nn #1 #2
{
\foreach \x in { #1 }
{
\cs_if_free:cTF { pgf@sh@ns@wa - \l__witharrows_prefix_str - \x - l }
- { \__witharrows_error:nx { Wrong~line~specification~in~MultiArrow } \x }
- { \clist_gput_right:Nx \g_tmpa_clist \x }
+ { \__witharrows_error:ne { Wrong~line~specification~in~MultiArrow } \x }
+ { \clist_gput_right:Ne \g_tmpa_clist \x }
}
\int_compare:nTF { \clist_count:N \g_tmpa_clist < 2 }
{ \__witharrows_error:n { Too~small~specification~for~MultiArrow } }
{
\clist_sort:Nn \g_tmpa_clist
{
- \int_compare:nTF { ##1 > ##2 }
+ \int_compare:nNnTF { ##1 } > { ##2 }
\sort_return_swapped:
\sort_return_same:
}
\clist_pop:NN \g_tmpa_clist \l_tmpa_tl
\clist_reverse:N \g_tmpa_clist
\clist_pop:NN \g_tmpa_clist \l_tmpb_tl
- \exp_args:NV \__witharrows_MultiArrow_i:n \g_tmpa_clist
+ \exp_args:No \__witharrows_MultiArrow_i:n \g_tmpa_clist
\begin { tikzpicture }
[
__witharrows_standard ,
@@ -1943,7 +1959,7 @@
-- ([xshift = \l__witharrows_xoffset_dim]\l_tmpb_tl-r.south) ;
\pgfpointanchor { wa - \l__witharrows_prefix_str - __witharrows_label } { west }
\dim_set:Nn \l_tmpa_dim { 20 cm }
- \path \pgfextra { \tl_gset:Nx \g_tmpa_tl \tikz@text@width } ;
+ \path \pgfextra { \tl_gset:Ne \g_tmpa_tl \tikz@text@width } ;
\tl_if_empty:NF \g_tmpa_tl { \dim_set:Nn \l_tmpa_dim \g_tmpa_tl }
\bool_lazy_and:nnT \l__witharrows_wrap_lines_bool \l__witharrows_in_DispWithArrows_bool
{
@@ -2305,8 +2321,8 @@
Normally,~we~can't~use~the~command~\token_to_str:N\label\
twice~in~a~line~of~the~environment~\{\l__witharrows_type_env_str\}. \\
However,~you~can~go~on.~
- \IfPackageLoadedTF { showlabels }
- { However,~only~the~last~label~will~be~shown~by~showlabels.~ } { }
+ \IfPackageLoadedT { showlabels }
+ { However,~only~the~last~label~will~be~shown~by~showlabels.~ }
If~you~don't~want~to~see~this~message~again,~you~can~use~the~option~
'allow-multiple-labels'~at~the~global~or~environment~level.
}
@@ -2369,27 +2385,18 @@
\keyval_parse:NNn \__witharrows_valid_key:n \__witharrows_valid_key:nn { #2 }
\seq_if_empty:NTF \l_tmpa_seq
{
- \seq_put_right:Nx \l__witharrows_options_WithArrows_seq
+ \seq_put_right:Ne \l__witharrows_options_WithArrows_seq
{ \tl_to_str:n { #1 } }
- \seq_put_right:Nx \l__witharrows_options_DispWithArrows_seq
+ \seq_put_right:Ne \l__witharrows_options_DispWithArrows_seq
{ \tl_to_str:n { #1 } }
- \seq_put_right:Nx \l__witharrows_options_WithArrowsOptions_seq
+ \seq_put_right:Ne \l__witharrows_options_WithArrowsOptions_seq
{ \tl_to_str:N { #1 } }
- \cs_if_exist:NTF \keys_precompile:nnN
- {
- \keys_precompile:nnN
- { WithArrows / WithArrowsOptions }
- { #2 }
- \l_tmpa_tl
- \__witharrows_key_define:nV { #1 } \l_tmpa_tl
- }
- {
- \keys_define:nn { WithArrows / Global }
- {
- #1 .code:n =
- { \keys_set:nn { WithArrows / WithArrowsOptions } { #2 } }
- }
- }
+ \keys_precompile:nnc
+ { WithArrows / WithArrowsOptions }
+ { #2 }
+ { __witharrows _ style _ #1 _ tl }
+ \keys_define:nn { WithArrows / Global }
+ { #1 .code:n = \use:c { __witharrows _ style _ #1 _ tl } }
}
{ \__witharrows_error:nn { Impossible~style } { #1 } }
}
@@ -2411,12 +2418,9 @@
\keys_if_exist:nnF { WithArrows / Global } { #1 }
{ \seq_put_right:Nn \l_tmpa_seq { #1 } }
}
-\cs_new_protected:Npn \__witharrows_key_define:nn #1 #2
- { \keys_define:nn { WithArrows / Global } { #1 .code:n = #2 } }
-\cs_generate_variant:Nn \__witharrows_key_define:nn { n V }
\__witharrows_msg_new:nn { Key~already~defined }
{
- Key~already~define.\\
+ Key~already~defined.\\
The~key~'#1'~is~already~defined. \\
If~you~go~on,~your~instruction~\token_to_str:N\WithArrowsNewStyle\
will~be~ignored.
@@ -2547,9 +2551,9 @@
\str_if_empty:NT \l__witharrows_previous_key_str
{
\str_set:Nn \l__witharrows_previous_key_str { up }
- \cs_if_exist:cTF { tikz@library@calc@loaded }
+ \cs_if_exist:NTF \tikz@library@calc@loaded
{
- \keys_set:nV { WithArrows / up-and-down } \l_keys_value_tl
+ \keys_set:no { WithArrows / up-and-down } \l_keys_value_tl
\int_set:Nn \l__witharrows_pos_arrow_int 1
\bool_set_false:N \l__witharrows_wrap_lines_bool
\tl_set_eq:NN \l__witharrows_tikz_code_tl \c__witharrows_tikz_code_up_tl
@@ -2560,9 +2564,9 @@
\str_if_empty:NT \l__witharrows_previous_key_str
{
\str_set:Nn \l__witharrows_previous_key_str { down }
- \cs_if_exist:cTF { tikz@library@calc@loaded }
+ \cs_if_exist:NTF \tikz@library@calc@loaded
{
- \keys_set:nV { WithArrows / up-and-down } \l_keys_value_tl
+ \keys_set:no { WithArrows / up-and-down } \l_keys_value_tl
\int_set:Nn \l__witharrows_pos_arrow_int 1
\bool_set_false:N \l__witharrows_wrap_lines_bool
\tl_set_eq:NN \l__witharrows_tikz_code_tl \c__witharrows_tikz_code_down_tl
diff --git a/Master/texmf-dist/tex/generic/witharrows/witharrows.tex b/Master/texmf-dist/tex/generic/witharrows/witharrows.tex
index 1a35d068c55..014b6d96dea 100644
--- a/Master/texmf-dist/tex/generic/witharrows/witharrows.tex
+++ b/Master/texmf-dist/tex/generic/witharrows/witharrows.tex
@@ -6,7 +6,7 @@
%%
%% witharrows.dtx (with options: `plain-TeX')
%%
-%% Copyright (C) 2017-2023 by F. Pantigny
+%% Copyright (C) 2017-2024 by F. Pantigny
%%
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -18,8 +18,9 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\def\myfileversion{2.8b}
-\def\myfiledate{2023/08/24}
+\def\myfileversion{2.9a}
+\def\myfiledate{2024/10/19}
+
\input tikz.tex
\input expl3-generic.tex
\usetikzlibrary{arrows.meta}
@@ -39,15 +40,19 @@
\cs_new_protected:Npn \__witharrows_warning:n { \msg_warning:nn { witharrows } }
\cs_new_protected:Npn \__witharrows_fatal:n { \msg_fatal:nn { witharrows } }
\cs_new_protected:Npn \__witharrows_error:nn { \msg_error:nnn { witharrows } }
-\cs_generate_variant:Nn \__witharrows_error:nn { n x }
+\cs_generate_variant:Nn \__witharrows_error:nn { n e }
\cs_new_protected:Npn \__witharrows_error_or_warning:n
{ \bool_if:NTF \c__witharrows_messages_for_Overleaf_bool \__witharrows_warning:n \__witharrows_error:n }
\bool_set:Nn \c__witharrows_messages_for_Overleaf_bool
{
- \str_if_eq_p:Vn \c_sys_jobname_str { _region_ } % for Emacs
- || \str_if_eq_p:Vn \c_sys_jobname_str { output } % for Overleaf
+ \str_if_eq_p:on \c_sys_jobname_str { _region_ } % for Emacs
+ || \str_if_eq_p:on \c_sys_jobname_str { output } % for Overleaf
}
-\cs_generate_variant:Nn \seq_set_split:Nnn { N x x }
+\bool_new:N \g__witharrows_beamer_bool
+\cs_generate_variant:Nn \seq_set_split:Nnn { N e e }
+\cs_generate_variant:Nn \keys_precompile:nnN { n n c }
+\prg_generate_conditional_variant:Nnn \tl_if_novalue:n { o } { F }
+\exp_args_generate:n { N N N n o }
\cs_new_protected:Npn \__witharrows_sort_seq:N #1
{
\seq_sort:Nn #1
@@ -61,15 +66,15 @@
\cs_new_protected:Npn \__witharrows_set_seq_of_str_from_clist:Nn #1 #2
{
\seq_set_from_clist:Nn #1 { #2 }
- \seq_set_map_x:NNn #1 #1 { \tl_to_str:n { ##1 } }
+ \seq_set_map_e:NNn #1 #1 { \tl_to_str:n { ##1 } }
}
\cs_new_protected:Npn \__witharrows_save:N #1
{
- \seq_set_split:Nxx \l_tmpa_seq
+ \seq_set_split:Nee \l_tmpa_seq
{ \char_generate:nn { `_ } { 12 } }
{ \cs_to_str:N #1 }
\seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl
- \str_set:Nx \l_tmpa_str { \seq_item:Nn \l_tmpa_seq { -1 } }
+ \str_set:Ne \l_tmpa_str { \seq_item:Nn \l_tmpa_seq { -1 } }
\use:c { \l_tmpa_str _if_exist:cF }
{ g _\seq_use:Nnnn \l_tmpa_seq _ _ _ }
{
@@ -81,11 +86,11 @@
}
\cs_new_protected:Npn \__witharrows_restore:N #1
{
- \seq_set_split:Nxx \l_tmpa_seq
+ \seq_set_split:Nee \l_tmpa_seq
{ \char_generate:nn { `_ } { 12 } }
{ \cs_to_str:N #1 }
\seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl
- \str_set:Nx \l_tmpa_str { \seq_item:Nn \l_tmpa_seq { -1 } }
+ \str_set:Ne \l_tmpa_str { \seq_item:Nn \l_tmpa_seq { -1 } }
\use:c { \l_tmpa_str _set_eq:Nc }
#1 { g_\seq_use:Nnnn \l_tmpa_seq _ _ _ }
}
@@ -164,7 +169,7 @@
\str_new:N \l__witharrows_command_name_str
\str_set:Nn \l__witharrows_command_name_str { Arrow }
\str_new:N \l__witharrows_string_Arrow_for_msg_str
-\str_set:Nx \l__witharrows_string_Arrow_for_msg_str { \token_to_str:N \Arrow }
+\str_set:Ne \l__witharrows_string_Arrow_for_msg_str { \token_to_str:N \Arrow }
\seq_new:N \g__witharrows_names_seq
\bool_new:N \l__witharrows_in_first_columns_bool
\bool_new:N \l__witharrows_new_group_bool
@@ -210,7 +215,7 @@
more-columns .value_forbidden:n = true ,
command-name .code:n =
\str_set:Nn \l__witharrows_command_name_str { #1 }
- \str_set:Nx \l__witharrows_string_Arrow_for_msg_str
+ \str_set:Ne \l__witharrows_string_Arrow_for_msg_str
{ \c_backslash_str Arrow~alias~\c_backslash_str #1 } ,
command-name .value_required:n = true ,
tikz-code .tl_set:N = \l__witharrows_tikz_code_tl ,
@@ -230,7 +235,7 @@
\int_set:Nn \l__witharrows_pos_arrow_int 7
}
{ \__witharrows_error:n { Incompatible~options } } ,
- group .value_forbidden:n = true ,
+ group .value_forbidden:n = true ,
groups .code:n =
\str_if_empty:NTF \l__witharrows_previous_key_str
{
@@ -243,7 +248,6 @@
{ \__witharrows_error:n { Incompatible~options } } ,
groups .value_forbidden:n = true ,
tikz .code:n = \tikzset { WithArrows / arrow / .append~style = { #1 } } ,
- tikz .initial:n = \c_empty_tl ,
tikz .value_required:n = true ,
rr .code:n = \__witharrows_fix_pos_option:n 3 ,
rr .value_forbidden:n = true ,
@@ -303,8 +307,8 @@
wrap-lines .default:n = true ,
replace-left-brace-by .code:n =
{
- \tl_set:Nx \l_tmpa_tl { \tl_head:n { #1 } }
- \clist_if_in:NVTF
+ \tl_set:Ne \l_tmpa_tl { \tl_head:n { #1 } }
+ \clist_if_in:NoTF
\c__witharrows_ext_delimiters_clist
\l_tmpa_tl
{ \tl_set:Nn \l__witharrows_replace_left_brace_by_tl { #1 } }
@@ -316,9 +320,9 @@
{
name .code:n =
\str_set:Nn \l_tmpa_str { #1 }
- \seq_if_in:NVTF \g__witharrows_names_seq \l_tmpa_str
+ \seq_if_in:NoTF \g__witharrows_names_seq \l_tmpa_str
{ \__witharrows_error:n { Duplicate~name } }
- { \seq_gput_left:NV \g__witharrows_names_seq \l_tmpa_str }
+ { \seq_gput_left:No \g__witharrows_names_seq \l_tmpa_str }
\str_set_eq:NN \l__witharrows_name_str \l_tmpa_str ,
name .value_required:n = true ,
code-before .code:n = \tl_put_right:Nn \l__witharrows_code_before_tl { #1 } ,
@@ -419,7 +423,7 @@
}
\cs_new_protected:Npn \__witharrows_set_independent:
{
- \str_if_eq:VnF \l_keys_value_tl { NoValue }
+ \str_if_eq:onF \l_keys_value_tl { NoValue }
{ \__witharrows_error:n { Value~for~a~key } }
\__witharrows_set_independent_bis:
}
@@ -435,7 +439,7 @@
\keys_define:nn { WithArrows / Arrow / FirstPass }
{
jump .code:n =
- \int_compare:nTF { #1 > 0 }
+ \int_compare:nNnTF { #1 } > \c_zero_int
{ \int_set:Nn \l__witharrows_jump_int { #1 } }
{ \__witharrows_error:n { Negative~jump } } ,
jump .value_required:n = true,
@@ -478,7 +482,7 @@
xoffset .code:n = ,
unknown .code:n =
\__witharrows_sort_seq:N \l__witharrows_options_Arrow_seq
- \seq_if_in:NVTF \l__witharrows_options_WithArrows_seq \l_keys_key_str
+ \seq_if_in:NoTF \l__witharrows_options_WithArrows_seq \l_keys_key_str
{
\str_set:Nn \l_tmpa_str
{ ~However,~this~key~can~be~used~in~the~options~of~{WithArrows}. }
@@ -505,7 +509,6 @@
tikz-code .tl_set:N = \l__witharrows_tikz_code_tl ,
tikz-code .initial:n = \draw~(#1)~to~node{#3}~(#2)~; ,
tikz .code:n = \tikzset { WithArrows / arrow / .append~style = { #1 } } ,
- tikz .initial:n = \c_empty_tl ,
rr .code:n = \__witharrows_fix_pos_arrow:n 3 ,
ll .code:n = \__witharrows_fix_pos_arrow:n 1 ,
rl .code:n = \__witharrows_fix_pos_arrow:n 2 ,
@@ -513,13 +516,11 @@
i .code:n = \__witharrows_fix_pos_arrow:n 5 ,
o .code:n = \str_set:Nn \l__witharrows_previous_key_str { o } ,
xoffset .code:n =
- \bool_if:nTF
+ \bool_lazy_all:nTF
{
- \int_compare_p:nNn \g__witharrows_arrow_int > 1
- &&
- \int_compare_p:nNn \l__witharrows_pos_arrow_int > 5
- &&
- ! \str_if_eq_p:Vn \l__witharrows_status_arrow_str { independent }
+ { \int_compare_p:nNn \g__witharrows_arrow_int > 1 }
+ { \int_compare_p:nNn \l__witharrows_pos_arrow_int > 5 }
+ { ! \str_if_eq_p:on \l__witharrows_status_arrow_str { independent } }
}
{ \__witharrows_error:n { Option~xoffset~forbidden } }
{ \dim_set:Nn \l__witharrows_xoffset_dim { #1 } } ,
@@ -555,10 +556,10 @@
\prop_put:NnV \l_tmpa_prop { initial } \g__witharrows_line_int
\int_set:Nn \l_tmpa_int { \g__witharrows_line_int + \l__witharrows_jump_int }
\prop_put:NnV \l_tmpa_prop { final } \l_tmpa_int
- \prop_put:NnV \l_tmpa_prop { status } \l__witharrows_status_arrow_str
+ \prop_put:Nno \l_tmpa_prop { status } \l__witharrows_status_arrow_str
\prop_put:Nnn \l_tmpa_prop { options } { #1 , #3 }
\prop_put:Nnn \l_tmpa_prop { label } { #2 }
- \prop_put:Nnx \l_tmpa_prop { input-line } \msg_line_number:
+ \prop_put:Nne \l_tmpa_prop { input-line } \msg_line_number:
\prop_put:Nnn \l_tmpa_prop { width } { 0 pt }
\prop_gclear_new:c
{ g__witharrows_arrow _ \l__witharrows_prefix_str _ \int_use:N \g__witharrows_arrow_int _ prop }
@@ -589,7 +590,7 @@
\seq_set_eq:NN \l_tmpa_seq \g__witharrows_position_in_the_tree_seq
\seq_pop_right:NN \l_tmpa_seq \l_tmpa_tl
\str_clear_new:N \l__witharrows_prefix_str
- \str_set:Nx \l__witharrows_prefix_str { \seq_use:Nnnn \l_tmpa_seq - - - }
+ \str_set:Ne \l__witharrows_prefix_str { \seq_use:Nnnn \l_tmpa_seq - - - }
\cs_set_eq:NN \\ \__witharrows_cr:
\dim_zero:N \mathsurround
\int_zero_new:N \l__witharrows_initial_int
@@ -634,27 +635,27 @@
{
\cs_set_eq:cN { \l__witharrows_command_name_str } \__witharrows_Arrow
}
- \str_if_eq:VnT \l__witharrows_type_col_str { c } \hfil
- \str_if_eq:VnT \l__witharrows_type_col_str { C } \hfil
- \str_if_eq:VnT \l__witharrows_type_col_str { r } \hfill
- \str_if_eq:VnT \l__witharrows_type_col_str { R } \hfill
+ \str_if_eq:onT \l__witharrows_type_col_str { c } \hfil
+ \str_if_eq:onT \l__witharrows_type_col_str { C } \hfil
+ \str_if_eq:onT \l__witharrows_type_col_str { r } \hfill
+ \str_if_eq:onT \l__witharrows_type_col_str { R } \hfill
\int_gincr:N \g__witharrows_col_int
\int_gset:Nn \g__witharrows_static_col_int { \int_use:N \g__witharrows_col_int }
\c_math_toggle_token
- \str_if_eq:VnT \l__witharrows_type_col_str { C } { { } }
- \str_if_eq:VnT \l__witharrows_type_col_str { L } { { } }
+ \str_if_eq:onT \l__witharrows_type_col_str { C } { { } }
+ \str_if_eq:onT \l__witharrows_type_col_str { L } { { } }
\bool_if:NT \l__witharrows_displaystyle_bool \displaystyle
##
- \str_if_eq:VnT \l__witharrows_type_col_str { C } { { } }
- \str_if_eq:VnT \l__witharrows_type_col_str { R } { { } }
+ \str_if_eq:onT \l__witharrows_type_col_str { C } { { } }
+ \str_if_eq:onT \l__witharrows_type_col_str { R } { { } }
\c_math_toggle_token
\int_compare:nNnTF \g__witharrows_col_int = \l__witharrows_nb_cols_int
\__witharrows_construct_nodes:
{
- \str_if_eq:VnT \l__witharrows_type_col_str { l } \hfil
- \str_if_eq:VnT \l__witharrows_type_col_str { L } \hfil
- \str_if_eq:VnT \l__witharrows_type_col_str { c } \hfil
- \str_if_eq:VnT \l__witharrows_type_col_str { C } \hfil
+ \str_if_eq:onT \l__witharrows_type_col_str { l } \hfil
+ \str_if_eq:onT \l__witharrows_type_col_str { L } \hfil
+ \str_if_eq:onT \l__witharrows_type_col_str { c } \hfil
+ \str_if_eq:onT \l__witharrows_type_col_str { C } \hfil
\bool_if:NT \l__witharrows_in_DispWithArrows_bool { \tabskip = \c_zero_skip }
&
}
@@ -770,7 +771,7 @@
{
\cs_set:Npn \WithArrowsRightX { \g__witharrows_right_x_dim }
\normalbaselines
- \int_compare:nNnT \g__witharrows_arrow_int > 0
+ \int_if_zero:nF \g__witharrows_arrow_int
{
\int_compare:nNnT \g__witharrows_arrow_int = 1
{
@@ -789,7 +790,7 @@
\group_end:
\seq_gpop_right:NN \g__witharrows_position_in_the_tree_seq \l_tmpa_tl
\seq_gpop_right:NN \g__witharrows_position_in_the_tree_seq \l_tmpa_tl
- \seq_gput_right:Nx \g__witharrows_position_in_the_tree_seq
+ \seq_gput_right:Ne \g__witharrows_position_in_the_tree_seq
{ \int_eval:n { \l_tmpa_tl + 1 } }
\int_compare:nNnT { \seq_count:N \g__witharrows_position_in_the_tree_seq } = 1
{ \int_gincr:N \g__witharrows_last_env_int }
@@ -856,7 +857,8 @@
\bool_set_true:N \l__witharrows_in_DispWithArrows_bool
\str_clear_new:N \l__witharrows_type_env_str
\str_set:Nn \l__witharrows_type_env_str { DispWithArrows }
- \exp_args:No \tl_if_novalue:nF { #1 } { \tl_set:Nn \l__witharrows_left_brace_tl { #1 } }
+ \tl_if_novalue:oF { #1 }
+ { \cs_set_nopar:Npn \l__witharrows_left_brace_tl { #1 } }
\__witharrows_pre_halign:n { #2 }
\tl_if_eq:NNF \l__witharrows_left_brace_tl \c_novalue_tl
{
@@ -1036,12 +1038,9 @@
\__witharrows_treat_an_arrow_in_scan:
\int_incr:N \l__witharrows_arrow_int
}
- \bool_if:nT
- {
- ! \int_compare_p:nNn \l__witharrows_pos_arrow_int = 7
- &&
- \int_compare_p:nNn \l__witharrows_first_arrow_of_group_int > 0
- }
+ \bool_lazy_and:nnT
+ { ! \int_compare_p:nNn \l__witharrows_pos_arrow_int = 7 }
+ { \int_compare_p:nNn \l__witharrows_first_arrow_of_group_int > \c_zero_int }
{ \__witharrows_draw_arrows:nn \l__witharrows_first_arrow_of_group_int \g__witharrows_arrow_int }
}
\cs_new_protected:Npn \__witharrows_treat_an_arrow_in_scan:
@@ -1058,10 +1057,10 @@
}
{ \bool_not_p:n { \int_compare_p:nNn \l__witharrows_pos_arrow_int = 7 } }
}
- { \str_if_eq_p:Vn \l__witharrows_status_arrow_str { new-group } }
+ { \str_if_eq_p:on \l__witharrows_status_arrow_str { new-group } }
}
{
- \int_compare:nNnF \l__witharrows_first_arrow_of_group_int = \c_zero_int
+ \int_if_zero:nF \l__witharrows_first_arrow_of_group_int
{
\__witharrows_draw_arrows:nn
\l__witharrows_first_arrow_of_group_int
@@ -1083,10 +1082,9 @@
{ \dim_set:Nn \l__witharrows_x_dim { - \c_max_dim } }
}
{
- \str_if_eq:VnF \l__witharrows_status_arrow_str { independent }
+ \str_if_eq:onF \l__witharrows_status_arrow_str { independent }
{
- \int_compare:nT
- { \l__witharrows_initial_int = \l__witharrows_first_line_of_group_int }
+ \int_compare:nNnT \l__witharrows_initial_int = \l__witharrows_first_line_of_group_int
{ \seq_put_left:NV \l__witharrows_first_arrows_seq \l__witharrows_arrow_int }
\int_compare:nNnTF \l__witharrows_final_int > \l__witharrows_last_line_of_group_int
{
@@ -1100,15 +1098,12 @@
}
}
}
- \str_if_eq:VnF \l__witharrows_status_arrow_str { independent }
+ \str_if_eq:onF \l__witharrows_status_arrow_str { independent }
{
\int_compare:nNnF \l__witharrows_pos_arrow_int = 8
{ \__witharrows_update_x:nn \l__witharrows_initial_int \l__witharrows_final_int }
}
}
-\cs_generate_variant:Nn \keys_set:nn { n o }
-\cs_new_protected:Npn \__witharrows_keys_set:
- { \keys_set_known:no { WithArrows / Arrow / SecondPass } }
\cs_new_protected:Npn \__witharrows_draw_arrows:nn #1 #2
{
\group_begin:
@@ -1132,7 +1127,7 @@
{ status } \l__witharrows_status_arrow_str
\int_compare:nNnF \l__witharrows_final_int > \g__witharrows_line_int
{
- \str_if_eq:VnTF \l__witharrows_status_arrow_str { over }
+ \str_if_eq:onTF \l__witharrows_status_arrow_str { over }
{ \seq_put_right:NV \l__witharrows_o_arrows_seq \l__witharrows_arrow_int }
\__witharrows_draw_arrow:
}
@@ -1146,10 +1141,13 @@
\group_begin:
\prop_get:cnN
{ g__witharrows_arrow _\l__witharrows_prefix_str _ \int_use:N \l__witharrows_arrow_int _ prop }
- { options } \l_tmpa_tl
+ { options }
+ \l_tmpa_tl
\str_clear_new:N \l__witharrows_previous_key_str
- \exp_args:NNo \exp_args:No
- \__witharrows_keys_set: { \l_tmpa_tl , tikz = { xshift = \l__witharrows_xoffset_dim } }
+ \exp_args:NNNno \exp_args:NNno \exp_args:Nno
+ \keys_set_known:nn
+ { WithArrows / Arrow / SecondPass }
+ { \l_tmpa_tl , tikz = { xshift = \l__witharrows_xoffset_dim } }
\bool_set_false:N \l__witharrows_initial_r_bool
\bool_set_false:N \l__witharrows_final_r_bool
\int_case:nn \l__witharrows_pos_arrow_int
@@ -1167,19 +1165,19 @@
\dim_set:Nn \l__witharrows_x_dim { - \c_max_dim }
\__witharrows_update_x:nn \l__witharrows_initial_int \l__witharrows_final_int
}
- \tl_set:Nx \l__witharrows_initial_tl
+ \tl_set:Ne \l__witharrows_initial_tl
{ \int_use:N \l__witharrows_initial_int - \bool_if:NTF \l__witharrows_initial_r_bool rl }
- \tl_set:Nx \l__witharrows_final_tl
+ \tl_set:Ne \l__witharrows_final_tl
{ \int_use:N \l__witharrows_final_int - \bool_if:NTF \l__witharrows_final_r_bool rl }
\prop_get:cnN
{ g__witharrows_arrow _ \l__witharrows_prefix_str _ \int_use:N \l__witharrows_arrow_int _ prop }
{ label }
\l_tmpa_tl
- \seq_if_in:NxTF \l__witharrows_first_arrows_seq
+ \seq_if_in:NeTF \l__witharrows_first_arrows_seq
{ \int_use:N \l__witharrows_arrow_int }
{ \bool_set_true:N \l_tmpa_bool }
{ \bool_set_false:N \l_tmpa_bool }
- \seq_if_in:NxTF \l__witharrows_last_arrows_seq
+ \seq_if_in:NeTF \l__witharrows_last_arrows_seq
{ \int_use:N \l__witharrows_arrow_int }
{ \bool_set_true:N \l_tmpb_bool }
{ \bool_set_false:N \l_tmpb_bool }
@@ -1208,7 +1206,7 @@
}
{ \int_compare_p:nNn { \l__witharrows_final_int - \l__witharrows_initial_int } = 1 }
{
- \tl_gset:Nx \g_tmpa_tl
+ \tl_gset:Ne \g_tmpa_tl
{
\int_compare:nNnTF \l__witharrows_pos_arrow_int < 5
{ \dim_use:N \g__witharrows_x_initial_dim }
@@ -1219,7 +1217,7 @@
+ 0.5 \l__witharrows_max_length_of_arrow_dim
}
}
- \tl_gset:Nx \g_tmpb_tl
+ \tl_gset:Ne \g_tmpb_tl
{
\int_compare:nNnTF \l__witharrows_pos_arrow_int < 5
{ \dim_use:N \g__witharrows_x_final_dim }
@@ -1232,7 +1230,7 @@
}
}
{
- \tl_gset:Nx \g_tmpa_tl
+ \tl_gset:Ne \g_tmpa_tl
{
\int_compare:nNnTF \l__witharrows_pos_arrow_int < 5
{ \dim_use:N \g__witharrows_x_initial_dim }
@@ -1241,7 +1239,7 @@
{ \dim_eval:n { \g__witharrows_y_initial_dim + \l__witharrows_start_adjust_dim } }
{ \dim_use:N \g__witharrows_y_initial_dim }
}
- \tl_gset:Nx \g_tmpb_tl
+ \tl_gset:Ne \g_tmpb_tl
{
\int_compare:nNnTF \l__witharrows_pos_arrow_int < 5
{ \dim_use:N \g__witharrows_x_final_dim }
@@ -1273,9 +1271,10 @@
\__witharrows_draw_arrow:nno \g_tmpa_tl \g_tmpb_tl \l_tmpa_tl
\group_end:
}
-\cs_new_protected:Npn \__witharrows_def_function_tmpa:n #1
+\cs_generate_variant:Nn \__witharrows_def_function_arrow:n { o }
+\cs_new_protected:Npn \__witharrows_def_function_arrow:n #1
{
- \cs_set:Npn \__witharrows_tmpa:nnn ##1 ##2 ##3
+ \cs_set:Npn \__witharrows_arrow:nnn ##1 ##2 ##3
{
\tikzpicture
[ __witharrows_standard_arrow ]
@@ -1285,10 +1284,13 @@
{ \dim_zero:N \l_tmpa_dim }
{ \dim_set:Nn \l_tmpa_dim { \pgf@picmaxx - \pgf@picminx } }
\dim_add:Nn \l_tmpa_dim \l__witharrows_xoffset_dim
- \prop_gput:cnV
- { g__witharrows_arrow _ \l__witharrows_prefix_str _ \int_use:N \l__witharrows_arrow_int _ prop }
- { width }
- \l_tmpa_dim
+ \int_compare:nNnT \l__witharrows_arrow_int > 0 % added 2024/10/01
+ {
+ \prop_gput:cnV
+ { g__witharrows_arrow _ \l__witharrows_prefix_str _ \int_use:N \l__witharrows_arrow_int _ prop }
+ { width }
+ \l_tmpa_dim
+ }
\bool_if:NF \l__witharrows_right_overlap_bool
{
\bool_if:NT \l__witharrows_in_WithArrows_bool
@@ -1305,21 +1307,21 @@
\endtikzpicture
}
}
+\cs_generate_variant:Nn \__witharrows_draw_arrow:nnn { n n o }
\cs_new_protected:Npn \__witharrows_draw_arrow:nnn #1 #2 #3
{
\bool_lazy_and:nnT \l__witharrows_wrap_lines_bool \l__witharrows_in_DispWithArrows_bool
{ \tl_set_eq:NN \l__witharrows_tikz_code_tl \c__witharrows_tikz_code_wrap_lines_tl }
- \exp_args:NV \__witharrows_def_function_tmpa:n \l__witharrows_tikz_code_tl
- \__witharrows_tmpa:nnn { #1 } { #2 } { #3 }
+ \__witharrows_def_function_arrow:o \l__witharrows_tikz_code_tl
+ \__witharrows_arrow:nnn { #1 } { #2 } { #3 }
}
-\cs_generate_variant:Nn \__witharrows_draw_arrow:nnn { n n o }
\tl_const:Nn \c__witharrows_tikz_code_wrap_lines_tl
{
- \pgfset { inner~sep = 0pt}
+ \pgfset { inner~sep = 0pt }
\draw ( #1 ) to node ( __witharrows_label ) { } ( #2 ) ;
\pgfpointanchor { wa - \l__witharrows_prefix_str - __witharrows_label } { west }
- \dim_set:Nn \l_tmpa_dim { \g__witharrows_right_x_dim - \pgf@x - 0.3333 ex }
- \path \pgfextra { \tl_gset:Nx \g_tmpa_tl \tikz@text@width } ;
+ \dim_set:Nn \l_tmpa_dim { \g__witharrows_right_x_dim - \pgf@x - 0.33333 em }
+ \path \pgfextra { \tl_gset:Ne \g_tmpa_tl \tikz@text@width } ;
\tl_if_empty:NF \g_tmpa_tl
{
\dim_set:Nn \l_tmpb_dim \g_tmpa_tl
@@ -1330,7 +1332,7 @@
{
\path ( __witharrows_label.west )
node [ anchor = west , text~width = \dim_use:N \l_tmpa_dim ]
- { #3 } ;
+ { \skip_horizontal:n { 0.33333 em } #3 } ;
}
}
\cs_new_protected:Npn \__witharrows_update_x:nn #1 #2
@@ -1402,12 +1404,12 @@
\prop_get:cnN
{ g__witharrows_arrow _ \l__witharrows_prefix_str _ ####1 _ prop }
{ status } \l__witharrows_status_arrow_str
- \bool_if:nT
+ \bool_lazy_any:nF
{
- ! \int_compare_p:n { ##1 = ####1 }
- && \int_compare_p:n { \l__witharrows_initial_int <= \l_tmpa_tl }
- && \int_compare_p:n { \l_tmpb_tl <= \l__witharrows_final_int }
- && ! \str_if_eq_p:Vn \l__witharrows_status_arrow_str { independent }
+ { \int_compare_p:n { ##1 = ####1 } }
+ { \int_compare_p:nNn \l__witharrows_initial_int > \l_tmpa_tl }
+ { \int_compare_p:nNn \l_tmpb_tl > \l__witharrows_final_int }
+ { \str_if_eq_p:on \l__witharrows_status_arrow_str { independent } }
}
{
\bool_gset_true:N \g_tmpa_bool
@@ -1434,22 +1436,22 @@
{
tikz .code:n =
\tikzset { WithArrows / arrow / .append~style = { #1 } } ,
- tikz .value_required:n = true ,
- rr .value_forbidden:n = true ,
- rr .code:n = \__witharrows_fix_pos_option:n 0 ,
- ll .value_forbidden:n = true,
- ll .code:n = \__witharrows_fix_pos_option:n 1 ,
- rl .value_forbidden:n = true ,
- rl .code:n = \__witharrows_fix_pos_option:n 2 ,
- lr .value_forbidden:n = true ,
- lr .code:n = \__witharrows_fix_pos_option:n 3 ,
- v .value_forbidden:n = true ,
- v .code:n = \__witharrows_fix_pos_option:n 4 ,
+ tikz .value_required:n = true ,
+ rr .value_forbidden:n = true ,
+ rr .code:n = \__witharrows_fix_pos_option:n 0 ,
+ ll .value_forbidden:n = true,
+ ll .code:n = \__witharrows_fix_pos_option:n 1 ,
+ rl .value_forbidden:n = true ,
+ rl .code:n = \__witharrows_fix_pos_option:n 2 ,
+ lr .value_forbidden:n = true ,
+ lr .code:n = \__witharrows_fix_pos_option:n 3 ,
+ v .value_forbidden:n = true ,
+ v .code:n = \__witharrows_fix_pos_option:n 4 ,
tikz-code .tl_set:N = \l__witharrows_tikz_code_tl ,
tikz-code .value_required:n = true ,
- xoffset .dim_set:N = \l__witharrows_xoffset_dim ,
- xoffset .value_required:n = true ,
- unknown .code:n =
+ xoffset .dim_set:N = \l__witharrows_xoffset_dim ,
+ xoffset .value_required:n = true ,
+ unknown .code:n =
\__witharrows_sort_seq:N \l__witharrows_options_Arrow_code_after_seq
\__witharrows_error:n { Unknown~option~Arrow~in~code-after }
}
@@ -1470,7 +1472,7 @@
}
\cs_new_protected:Npn \__witharrows_Arrow_code_after_ii [ #1 ] #2 #3 #4 [ #5 ]
{
- \int_set:Nn \l__witharrows_pos_arrow_int 1
+ \int_set_eq:NN \l__witharrows_pos_arrow_int \c_one_int
\str_clear_new:N \l__witharrows_previous_key_str
\group_begin:
\keys_set:nn { WithArrows / Arrow / code-after }
@@ -1491,10 +1493,10 @@
{ \__witharrows_error:nn { Both~lines~are~equal } { #2 } }
{
\cs_if_free:cTF { pgf@sh@ns@wa - \l__witharrows_prefix_str - #2 - l }
- { \__witharrows_error:nx { Wrong~line~in~Arrow } { #2 } }
+ { \__witharrows_error:ne { Wrong~line~in~Arrow } { #2 } }
{
\cs_if_free:cTF { pgf@sh@ns@wa - \l__witharrows_prefix_str - #3 - l }
- { \__witharrows_error:nx { Wrong~line~in~Arrow } { #3 } }
+ { \__witharrows_error:ne { Wrong~line~in~Arrow } { #3 } }
{
\int_compare:nNnTF \l__witharrows_pos_arrow_int = 4
{
@@ -1508,9 +1510,9 @@
{ north }
\dim_set:Nn \l_tmpa_dim
{ \dim_max:nn \l_tmpa_dim \pgf@x }
- \tl_gset:Nx \g_tmpa_tl
+ \tl_gset:Ne \g_tmpa_tl
{ \dim_use:N \l_tmpa_dim , \dim_use:N \l_tmpb_dim }
- \tl_gset:Nx \g_tmpb_tl
+ \tl_gset:Ne \g_tmpb_tl
{ \dim_use:N \l_tmpa_dim , \dim_use:N \pgf@y }
\endpgfpicture
}
@@ -1523,7 +1525,7 @@
#2 - \bool_if:NTF \l__witharrows_initial_r_bool r l
}
{ south }
- \tl_gset:Nx \g_tmpa_tl
+ \tl_gset:Ne \g_tmpa_tl
{ \dim_use:N \pgf@x , \dim_use:N \pgf@y }
\pgfpointanchor
{
@@ -1531,7 +1533,7 @@
#3 - \bool_if:NTF \l__witharrows_final_r_bool r l
}
{ north }
- \tl_gset:Nx \g_tmpb_tl
+ \tl_gset:Ne \g_tmpb_tl
{ \dim_use:N \pgf@x , \dim_use:N \pgf@y }
\endpgfpicture
}
@@ -1543,34 +1545,34 @@
}
\cs_new_protected:Npn \__witharrows_MultiArrow:nn #1 #2
{
- \exp_args:Nnx
+ \exp_args:Nne
\regex_match:nnTF
{ \A \d+ (\,\d+)* ( \, \.\.\. (\,\d+)+ )* \Z }
{ #1 }
{ \__witharrows_MultiArrow_i:nn { #1 } { #2 } }
- { \__witharrows_error:nx { Invalid~specification~for~MultiArrow } { #1 } }
+ { \__witharrows_error:ne { Invalid~specification~for~MultiArrow } { #1 } }
}
\cs_new_protected:Npn \__witharrows_MultiArrow_i:nn #1 #2
{
\foreach \x in { #1 }
{
\cs_if_free:cTF { pgf@sh@ns@wa - \l__witharrows_prefix_str - \x - l }
- { \__witharrows_error:nx { Wrong~line~specification~in~MultiArrow } \x }
- { \clist_gput_right:Nx \g_tmpa_clist \x }
+ { \__witharrows_error:ne { Wrong~line~specification~in~MultiArrow } \x }
+ { \clist_gput_right:Ne \g_tmpa_clist \x }
}
\int_compare:nTF { \clist_count:N \g_tmpa_clist < 2 }
{ \__witharrows_error:n { Too~small~specification~for~MultiArrow } }
{
\clist_sort:Nn \g_tmpa_clist
{
- \int_compare:nTF { ##1 > ##2 }
+ \int_compare:nNnTF { ##1 } > { ##2 }
\sort_return_swapped:
\sort_return_same:
}
\clist_pop:NN \g_tmpa_clist \l_tmpa_tl
\clist_reverse:N \g_tmpa_clist
\clist_pop:NN \g_tmpa_clist \l_tmpb_tl
- \exp_args:NV \__witharrows_MultiArrow_i:n \g_tmpa_clist
+ \exp_args:No \__witharrows_MultiArrow_i:n \g_tmpa_clist
\tikzpicture
[
__witharrows_standard ,
@@ -1583,7 +1585,7 @@
-- ([xshift = \l__witharrows_xoffset_dim]\l_tmpb_tl-r.south) ;
\pgfpointanchor { wa - \l__witharrows_prefix_str - __witharrows_label } { west }
\dim_set:Nn \l_tmpa_dim { 20 cm }
- \path \pgfextra { \tl_gset:Nx \g_tmpa_tl \tikz@text@width } ;
+ \path \pgfextra { \tl_gset:Ne \g_tmpa_tl \tikz@text@width } ;
\tl_if_empty:NF \g_tmpa_tl { \dim_set:Nn \l_tmpa_dim \g_tmpa_tl }
\bool_lazy_and:nnT \l__witharrows_wrap_lines_bool \l__witharrows_in_DispWithArrows_bool
{
@@ -1958,27 +1960,18 @@
\keyval_parse:NNn \__witharrows_valid_key:n \__witharrows_valid_key:nn { #2 }
\seq_if_empty:NTF \l_tmpa_seq
{
- \seq_put_right:Nx \l__witharrows_options_WithArrows_seq
+ \seq_put_right:Ne \l__witharrows_options_WithArrows_seq
{ \tl_to_str:n { #1 } }
- \seq_put_right:Nx \l__witharrows_options_DispWithArrows_seq
+ \seq_put_right:Ne \l__witharrows_options_DispWithArrows_seq
{ \tl_to_str:n { #1 } }
- \seq_put_right:Nx \l__witharrows_options_WithArrowsOptions_seq
+ \seq_put_right:Ne \l__witharrows_options_WithArrowsOptions_seq
{ \tl_to_str:N { #1 } }
- \cs_if_exist:NTF \keys_precompile:nnN
- {
- \keys_precompile:nnN
- { WithArrows / WithArrowsOptions }
- { #2 }
- \l_tmpa_tl
- \__witharrows_key_define:nV { #1 } \l_tmpa_tl
- }
- {
- \keys_define:nn { WithArrows / Global }
- {
- #1 .code:n =
- { \keys_set:nn { WithArrows / WithArrowsOptions } { #2 } }
- }
- }
+ \keys_precompile:nnc
+ { WithArrows / WithArrowsOptions }
+ { #2 }
+ { __witharrows _ style _ #1 _ tl }
+ \keys_define:nn { WithArrows / Global }
+ { #1 .code:n = \use:c { __witharrows _ style _ #1 _ tl } }
}
{ \__witharrows_error:nn { Impossible~style } { #1 } }
}
@@ -2000,12 +1993,9 @@
\keys_if_exist:nnF { WithArrows / Global } { #1 }
{ \seq_put_right:Nn \l_tmpa_seq { #1 } }
}
-\cs_new_protected:Npn \__witharrows_key_define:nn #1 #2
- { \keys_define:nn { WithArrows / Global } { #1 .code:n = #2 } }
-\cs_generate_variant:Nn \__witharrows_key_define:nn { n V }
\__witharrows_msg_new:nn { Key~already~defined }
{
- Key~already~define.\\
+ Key~already~defined.\\
The~key~'#1'~is~already~defined. \\
If~you~go~on,~your~instruction~\token_to_str:N\WithArrowsNewStyle\
will~be~ignored.
@@ -2116,9 +2106,9 @@
\str_if_empty:NT \l__witharrows_previous_key_str
{
\str_set:Nn \l__witharrows_previous_key_str { up }
- \cs_if_exist:cTF { tikz@library@calc@loaded }
+ \cs_if_exist:NTF \tikz@library@calc@loaded
{
- \keys_set:nV { WithArrows / up-and-down } \l_keys_value_tl
+ \keys_set:no { WithArrows / up-and-down } \l_keys_value_tl
\int_set:Nn \l__witharrows_pos_arrow_int 1
\bool_set_false:N \l__witharrows_wrap_lines_bool
\tl_set_eq:NN \l__witharrows_tikz_code_tl \c__witharrows_tikz_code_up_tl
@@ -2129,9 +2119,9 @@
\str_if_empty:NT \l__witharrows_previous_key_str
{
\str_set:Nn \l__witharrows_previous_key_str { down }
- \cs_if_exist:cTF { tikz@library@calc@loaded }
+ \cs_if_exist:NTF \tikz@library@calc@loaded
{
- \keys_set:nV { WithArrows / up-and-down } \l_keys_value_tl
+ \keys_set:no { WithArrows / up-and-down } \l_keys_value_tl
\int_set:Nn \l__witharrows_pos_arrow_int 1
\bool_set_false:N \l__witharrows_wrap_lines_bool
\tl_set_eq:NN \l__witharrows_tikz_code_tl \c__witharrows_tikz_code_down_tl
diff --git a/Master/texmf-dist/tex/generic/xcomment/xcomment.sty b/Master/texmf-dist/tex/generic/xcomment/xcomment.sty
deleted file mode 100644
index 4bb03a5f67d..00000000000
--- a/Master/texmf-dist/tex/generic/xcomment/xcomment.sty
+++ /dev/null
@@ -1,8 +0,0 @@
-%% $Id: xcomment.sty 315 2010-05-14 21:31:03Z herbert $
-\ProvidesPackage{xcomment}[2010/05/13 package wrapper for
- xcomment.tex (hv)]
-\input{xcomment.tex}
-\ProvidesFile{xcomment.tex}
- [\filedate\space v\fileversion\space `xcomment' (tvz)]
-\endinput
-
diff --git a/Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty b/Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty
index 63f578290a7..4e3165add6a 100644
--- a/Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty
+++ b/Master/texmf-dist/tex/latex-dev/amsmath/amsmath.sty
@@ -26,7 +26,7 @@
\DeclareRelease{}{1994-06-01}{amsmath-2018-12-01.sty}
\DeclareRelease{}{2018-12-01}{amsmath-2018-12-01.sty}
\DeclareCurrentRelease{}{2019-04-01}
-\ProvidesPackage{amsmath}[2024/05/23 v2.17q AMS math features]
+\ProvidesPackage{amsmath}[2024/11/05 v2.17t AMS math features]
\edef\@temp{\catcode 96=\number\catcode 96 }
\catcode\string `\`=12
\def\do#1{\catcode\number`#1=\number\catcode`#1}
diff --git a/Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex b/Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex
index 02410ad693a..54663361c3d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/checkencodingsubset.tex
@@ -42,8 +42,8 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%% From File: lttextcomp.dtx
-\Providesfile{checkencodingsubset.tex}
- [2024/01/27 v0.5a Figure out safe TS1 encoding subsets]
+\ProvidesFile{checkencodingsubset.tex}
+ [2024/10/18 v0.5b Figure out safe TS1 encoding subsets]
\let\typeoutdetails\typeout
\def\doesglyphexist#1#2{\iffontchar\testFont #1 0\else 1\relax \fi}
\def\glyphmissingdetails#1#2{\iffontchar\testFont #1 \else
diff --git a/Master/texmf-dist/tex/latex-dev/base/doc.sty b/Master/texmf-dist/tex/latex-dev/base/doc.sty
index 6128c18c0ad..31930d29767 100644
--- a/Master/texmf-dist/tex/latex-dev/base/doc.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/doc.sty
@@ -52,7 +52,7 @@
\DeclareCurrentRelease{v3}{2022-06-01}
\ProvidesPackage{doc}
- [2024/06/29 v3.0q
+ [2024/10/23 v3.0q
Standard LaTeX documentation package V3 (FMi)]
%%
%% Package `doc' to use with LaTeX 2e
diff --git a/Master/texmf-dist/tex/latex-dev/base/flafter.sty b/Master/texmf-dist/tex/latex-dev/base/flafter.sty
index b1ec0552512..ca332b7b16b 100644
--- a/Master/texmf-dist/tex/latex-dev/base/flafter.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/flafter.sty
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutput.dtx
\ProvidesPackage{flafter}
- [2021/07/31 v1.4e
+ [2024/11/16 v1.4k
Standard LaTeX floats after reference (FMi)]
\IncludeInRelease{2015/01/01}%
{\@addtocurcol}{float order in 2-column}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fltrace.sty b/Master/texmf-dist/tex/latex-dev/base/fltrace.sty
index f372c6da667..17adc6c4771 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fltrace.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/fltrace.sty
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutput.dtx
\ProvidesPackage{fltrace}
- [2021/07/31 v1.4e
+ [2024/11/16 v1.4k
Tracing LaTeX floats algorithm (FMi)]
\def\onecolumn{%
\clearpage
@@ -1130,13 +1130,41 @@
\fi
}
\EndIncludeInRelease
+\IncludeInRelease{2025/06/01}%
+ {\@outputdblcol}{Use new mark mechanism}%
+\def\@outputdblcol{%
+ \if@firstcolumn
+ \global\@firstcolumnfalse
+ \global\setbox\@leftcolumn\copy\@outputbox
+ \fl@trace{PAGE: first column boxed}%
+ \else
+ \global\@firstcolumntrue
+ \setbox\@outputbox\vbox{%
+ \hb@xt@\textwidth{%
+ \hb@xt@\columnwidth{\box\@leftcolumn \hss}%
+ \hfil
+ {\normalcolor\vrule \@width\columnseprule}%
+ \hfil
+ \hb@xt@\columnwidth{\box\@outputbox \hss}}}%
+ \fl@trace{PAGE: second column also boxed}%
+ \@combinedblfloats
+ \@outputpage
+ \fl@trace{PAGE: two column page completed}%
+ \begingroup
+ \@dblfloatplacement
+ \@startdblcolumn
+ \@whilesw\if@fcolmade \fi{\@outputpage
+ \fl@trace{PAGE: double float page completed}%
+ \@startdblcolumn}%
+ \endgroup
+ \fi}%
+\EndIncludeInRelease
\IncludeInRelease{2015/01/01}%
{\@outputdblcol}{2 column marks}%
\def\@outputdblcol{%
\if@firstcolumn
\global\@firstcolumnfalse
\global\setbox\@leftcolumn\copy\@outputbox
- \fl@trace{PAGE: first column boxed}%
\splitmaxdepth\maxdimen
\vbadness\maxdimen
\setbox\@outputbox\vbox{\unvbox\@outputbox\unskip}%
@@ -1161,19 +1189,16 @@
{\normalcolor\vrule \@width\columnseprule}%
\hfil
\hb@xt@\columnwidth{\box\@outputbox \hss}}}%
- \fl@trace{PAGE: second column also boxed}%
\@combinedblfloats
\@setmarks
\@outputpage
- \fl@trace{PAGE: two column page completed}%
\begingroup
\@dblfloatplacement
\@startdblcolumn
\@whilesw\if@fcolmade \fi{\@outputpage
- \fl@trace{PAGE: double float page completed}%
\@startdblcolumn}%
\endgroup
- \fi}%
+ \fi}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
{\@outputdblcol}{2 column marks}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fontenc.sty b/Master/texmf-dist/tex/latex-dev/base/fontenc.sty
index 0eb19b6f6a0..51c2f7df284 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fontenc.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/fontenc.sty
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesPackage{fontenc}
- [2021/04/29 v2.0v
+ [2024/11/06 v2.1b
Standard LaTeX package]
\def\update@uclc@with@cyrillic{%
\expandafter\def\expandafter\@uclclist\expandafter
diff --git a/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg b/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg
index c4473749391..0edfc33f6fe 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg
+++ b/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fontmath.cfg}
- [2024/07/08 v3.0j LaTeX Kernel
+ [2024/11/19 v3.0l LaTeX Kernel
(Uncustomized math font setup)
]
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx b/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx
index 39ebc1875b9..c4a7d49a36e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fontmath.ltx}
- [2024/07/08 v3.0j LaTeX Kernel
+ [2024/11/19 v3.0l LaTeX Kernel
(Math font setup)
]
\typeout{=== Don't modify this file, use a .cfg file instead ===^^J}
diff --git a/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg b/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg
index e0b2d5b2961..dffaf71b43d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg
+++ b/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fonttext.cfg}
- [2024/07/08 v3.0j LaTeX Kernel
+ [2024/11/19 v3.0l LaTeX Kernel
(Uncustomized text font setup)
]
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx b/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx
index 88078476f7e..06eb08221ae 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fonttext.ltx}
- [2024/07/08 v3.0j LaTeX Kernel
+ [2024/11/19 v3.0l LaTeX Kernel
(Text font setup)
]
\typeout{=== Don't modify this file, use a .cfg file instead ===^^J}
@@ -45,7 +45,7 @@
\input {omsenc.def}
\input {ot1enc.def}
\input {t1enc.def}
-\input{ts1enc.def}
+\input {ts1enc.def}
\ifx\Umathcode\@undefined
\fontencoding{OT1}
\def\@fontenc@load@list{\@elt{T1,OT1}}
@@ -68,24 +68,21 @@
\DeclareFontSubstitution{TU}{lmr}{m}{n}
\fi
\DeclareFontEncodingDefaults{}{}
-\DeclareFontSubstitution{T1}{cmr}{m}{n}
-\DeclareFontSubstitution{OT1}{cmr}{m}{n}
\begingroup
\nfss@catcodes
\input {t1cmr.fd}
\input {ot1cmr.fd}
+\input {ts1cmr.fd}
\endgroup
\begingroup
\nfss@catcodes
+\input {t1cmss.fd}
+\input {t1cmtt.fd}
\input {ot1cmss.fd}
\input {ot1cmtt.fd}
+\input {ts1cmss.fd}
+\input {ts1cmtt.fd}
\endgroup
-\ifx\Umathcode\@undefined\else
-\begingroup
-\nfss@catcodes
-\input {ts1cmr.fd}
-\endgroup
-\fi
\DeclareErrorFont{OT1}{cmr}{m}{n}{10}
\ifx\Umathcode\@undefined
\newcommand\encodingdefault{OT1}
diff --git a/Master/texmf-dist/tex/latex-dev/base/latex.ltx b/Master/texmf-dist/tex/latex-dev/base/latex.ltx
index 3e7368aa72c..eeaba260833 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latex.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/latex.ltx
@@ -128,7 +128,7 @@
\newlinechar`\^^J
\def\typeout{\immediate\write17}
\def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%
- \do\#\do\^\do\_\do\%\do\~}
+ \do\#\do\^\do\_\do\%\do\~\do\^^I}
\def\@makeother#1{\catcode`#1=12\relax}
\def\space{ }
\def\@tempswafalse{\let\if@tempswa\iffalse}
@@ -316,7 +316,7 @@
\catcode`\^^L=\active \def^^L{\par}% ascii form-feed is \par
\message{catcodes,}
\def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%
- \do\#\do\^\do\_\do\%\do\~}
+ \do\#\do\^\do\_\do\%\do\~\do\^^I}
\catcode`@=11
\chardef\@ne=1
\chardef\tw@=2
@@ -709,8 +709,8 @@
%%% From File: ltvers.dtx
\def\fmtname{LaTeX2e}
\edef\fmtversion
- {2024-11-01}
-\def\patch@level{-3}
+ {2025-06-01}
+\def\patch@level{-1}
\edef\development@branch@name{develop \the\year-\the\month-\the\day}
\iffalse
\def\reserved@a#1/#2/#3\@nil{%
@@ -4864,17 +4864,19 @@
}
}
}
-\cs_new:Npn \__hook_parse_label_default:n #1
+\cs_new:Npn \__hook_parse_label_default:nN #1#2
{
\tl_if_novalue:nTF {#1}
{ \__hook_currname_or_default: }
- { \tl_trim_spaces_apply:nN {#1} \__hook_parse_dot_label:n }
+ { \tl_trim_spaces_apply:nN {#1} \__hook_parse_dot_label:nN #2 }
}
-\cs_new:Npn \__hook_parse_dot_label:n #1
+\cs_new:Npn \__hook_parse_dot_label:nN #1#2
{
\tl_if_empty:nTF {#1}
{
- \msg_expandable_error:nn { hooks } { empty-label }
+ \bool_if:NTF #2
+ { \msg_expandable_error:nn { hooks } { empty-label } }
+ { \msg_expandable_error:nn { hooks } { empty-hook } }
\__hook_currname_or_default:
}
{
@@ -4929,24 +4931,24 @@
\cs_new_protected:Npn \__hook_normalize_hook_args:Nn #1 #2
{
\__hook_normalize_hook_args_aux:Nn #1
- { { \__hook_parse_label_default:n {#2} } }
+ { { \__hook_parse_label_default:nN {#2} \c_false_bool } }
}
\cs_new_protected:Npn \__hook_normalize_hook_args:Nnn #1 #2 #3
{
\__hook_normalize_hook_args_aux:Nn #1
{
- { \__hook_parse_label_default:n {#2} }
- { \__hook_parse_label_default:n {#3} }
+ { \__hook_parse_label_default:nN {#2} \c_false_bool }
+ { \__hook_parse_label_default:nN {#3} \c_true_bool }
}
}
\cs_new_protected:Npn \__hook_normalize_hook_rule_args:Nnnnn #1 #2 #3 #4 #5
{
\__hook_normalize_hook_args_aux:Nn #1
{
- { \__hook_parse_label_default:n {#2} }
- { \__hook_parse_label_default:n {#3} }
+ { \__hook_parse_label_default:nN {#2} \c_false_bool }
+ { \__hook_parse_label_default:nN {#3} \c_true_bool }
{ \tl_trim_spaces:n {#4} }
- { \__hook_parse_label_default:n {#5} }
+ { \__hook_parse_label_default:nN {#5} \c_true_bool }
}
}
\tl_gset:Nn \g__hook_hook_curr_name_tl { top-level }
@@ -5811,7 +5813,9 @@
{ #2 { The~hook~is~empty } }
{
\__hook_log_line:x { Code~chunks: }
- \prop_if_empty:cTF { g__hook_#1_code_prop }
+ \bool_lazy_or:nnTF
+ { ! \prop_if_exist_p:c { g__hook_#1_code_prop } }
+ { \prop_if_empty_p:c { g__hook_#1_code_prop } }
{ \__hook_log_line_indent:x { --- } }
{
\prop_map_inline:cn { g__hook_#1_code_prop }
@@ -5906,16 +5910,19 @@
}
\cs_new_protected:Npn \__hook_list_rules:nn #1 #2
{
- \cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2}
- \prop_map_inline:cn { g__hook_#1_code_prop }
+ \prop_if_exist:cT { g__hook_#1_code_prop }
{
+ \cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2}
\prop_map_inline:cn { g__hook_#1_code_prop }
{
- \__hook_if_label_case:nnnnn {##1} {####1}
- { \prop_map_break: }
- { \__hook_list_one_rule:nnn {##1} {####1} }
- { \__hook_list_one_rule:nnn {####1} {##1} }
- {#1}
+ \prop_map_inline:cn { g__hook_#1_code_prop }
+ {
+ \__hook_if_label_case:nnnnn {##1} {####1}
+ { \prop_map_break: }
+ { \__hook_list_one_rule:nnn {##1} {####1} }
+ { \__hook_list_one_rule:nnn {####1} {##1} }
+ {#1}
+ }
}
}
}
@@ -6242,6 +6249,10 @@
Empty~code~label~\msg_line_context:.~
Using~'\__hook_currname_or_default:'~instead.
}
+\msg_new:nnn { hooks } { empty-hook }
+ {
+ Empty~hook~name~\msg_line_context:.
+ }
\msg_new:nnn { hooks } { no-default-label }
{
Missing~(empty)~default~label~\msg_line_context:. \\
@@ -6380,6 +6391,8 @@
\NewDocumentCommand \ClearHookRule { m m m }
{ \hook_gset_rule:nnnn {#1}{#2}{unrelated}{#3} }
\cs_new_eq:NN \IfHookEmptyTF \hook_if_empty:nTF
+\cs_new_eq:NN \IfHookEmptyT \hook_if_empty:nT
+\cs_new_eq:NN \IfHookEmptyF \hook_if_empty:nF
\cs_new_eq:NN \IfHookExistsTF \__hook_if_usable:nTF
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cs_new_protected:Npn \hook_disable:n
@@ -6979,7 +6992,7 @@
{
\cs_generate_from_arg_count:cNnn
{ __socket_#1_plug_#2:w }
- \cs_new_protected:Npn
+ \cs_new:Npn
{ \int_use:c { c__socket_#1_args_int } }
{#3}
\seq_put_right:cn { l__socket_#1_plugs_seq } {#2}
@@ -6998,7 +7011,7 @@
{
\cs_generate_from_arg_count:cNnn
{ __socket_#1_plug_#2:w }
- \cs_set_protected:Npn
+ \cs_set:Npn
{ \int_use:c { c__socket_#1_args_int } }
{#3}
\__socket_debug_term:n
@@ -7038,6 +7051,10 @@
\cs_new_eq:NN \socket_use:nn \socket_use:nw % socket with one input
\cs_new_eq:NN \socket_use:nnn \socket_use:nw % socket with two inputs
\cs_new_eq:NN \socket_use:nnnn \socket_use:nw % socket with three inputs
+\cs_new:Npn \socket_use_expandable:nw #1 {
+ \use:c { __socket_#1_plug_ \str_use:c { l__socket_#1_plug_str } :w }
+}
+\cs_new_eq:NN \socket_use_expandable:n \socket_use_expandable:nw % socket with no inputs
\msg_new:nnnn { socket } { already-declared }
{ Socket~ '#1'~ already~ declared! }
@@ -7912,23 +7929,33 @@
}
\cs_new_protected:Npn \__template_assign_variable:
{
- \__template_assign_variable:c
+ \exp_args:Ne \__template_assign_variable:n
{
- \__template_map_var_type: _
- \bool_if:NT \l__template_global_bool { g } set:Nn
+ \__template_map_var_type:
+ _
+ \bool_if:NT \l__template_global_bool { g }
+ set:N
}
}
-\cs_new_protected:Npn \__template_assign_variable:N #1
+\cs_new_protected:Npn \__template_assign_variable:n #1
{
- \__template_if_key_value:VT \l__template_value_tl
- { \__template_key_to_value: }
- \tl_put_right:Ne \l__template_assignments_tl
+ \__template_if_key_value:VTF \l__template_value_tl
{
- #1 \exp_not:V \l__template_var_tl
- { \exp_not:V \l__template_value_tl }
+ \__template_key_to_value:
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:c { #1 V } \exp_not:V \l__template_var_tl
+ \exp_not:V \l__template_value_tl
+ }
+ }
+ {
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:c { #1 n } \exp_not:V \l__template_var_tl
+ { \exp_not:V \l__template_value_tl }
+ }
}
}
-\cs_generate_variant:Nn \__template_assign_variable:N { c }
\cs_new_protected:Npn \__template_key_to_value:
{ \exp_after:wN \__template_key_to_value_auxi:w \l__template_value_tl }
\cs_new_protected:Npn \__template_key_to_value_auxi:w \KeyValue #1
@@ -8546,6 +8573,8 @@ Type H <return> for immediate help.}%
\@latex@error{%
Bad \protect\line\space or \protect\vector
\space argument}\@ehb}
+\gdef\@LRmoderr{%
+ \@latex@error{Not allowed in LR mode}\@ehb}
\gdef\@parmoderr{%
\@latex@error{Not in outer par mode}\@ehb}
\gdef\@fltovf{%
@@ -8718,6 +8747,8 @@ Type H <return> for immediate help.}%
\let \IfDocumentMetadataTF \@firstoftwo
\DocumentMetadata
}
+\ExplSyntaxOn
+\int_new:N\g__kernel_target_int
\NewDocumentCommand\MakeLinkTarget{sO{}m}{%
\ifvmode
\special{}%
@@ -8725,8 +8756,19 @@ Type H <return> for immediate help.}%
\@savsf\spacefactor
\smash{}%
\spacefactor\@savsf
- \fi}
-\NewDocumentCommand\LinkTargetOn{}{}
+ \fi
+ \IfBooleanTF {#1}
+ {
+ \tl_gset:Ne \@currentHref {#3}
+ }
+ {
+ \int_gincr:N\g__kernel_target_int
+ \tl_gset:Ne \@currentHref {target*.\int_use:N\g__kernel_target_int}
+ }
+ \UseTaggingSocket{recordtarget}
+ }
+\ExplSyntaxOff
+ \NewDocumentCommand\LinkTargetOn{}{}
\NewDocumentCommand\LinkTargetOff{}{}
\NewDocumentCommand\NextLinkTarget{m}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -8839,50 +8881,46 @@ Type H <return> for immediate help.}%
\fi
\fi
\fi}
-\def\addvspace#1{%
- \ifvmode
- \if@minipage\else
- \ifdim \lastskip =\z@
- \@vspace@calcify{#1}%
- \else
- \setlength\@tempskipb{#1}%
- \@xaddvskip
- \fi
- \fi
+\protected\def\addvspace#1{%
+ \ifhmode \ifinner \@LRmoderr \else \par \fi \fi
+ \if@minipage\else
+ \ifdim \lastskip =\z@
+ \@vspace@calcify{#1}%
+ \else
+ \setlength\@tempskipb{#1}%
+ \@xaddvskip
+ \fi
+ \fi
+}
+\protected\def\addpenalty#1{%
+ \ifhmode \ifinner \@LRmoderr \else \par \fi \fi
+ \if@minipage
\else
- \@noitemerr
- \fi}
-\def\addpenalty#1{%
- \ifvmode
- \if@minipage
+ \if@nobreak
\else
- \if@nobreak
+ \ifdim\lastskip=\z@
+ \penalty#1\relax
\else
- \ifdim\lastskip=\z@
- \penalty#1\relax
- \else
- \@tempskipb\lastskip
- \begingroup
- \@tempskipa\@tempskipb
- \advance \@tempskipb
- \ifdim\prevdepth>\maxdepth\maxdepth\else
- \ifdim \prevdepth = -\@m\p@ \z@ \else \prevdepth \fi
- \fi
- \vskip -\@tempskipb
- \penalty#1%
- \ifdim\@tempskipa=\@tempskipb
- \else
- \advance\@tempskipb -\@tempskipa
- \vskip \@tempskipb
+ \@tempskipb\lastskip
+ \begingroup
+ \@tempskipa\@tempskipb
+ \advance \@tempskipb
+ \ifdim\prevdepth>\maxdepth\maxdepth\else
+ \ifdim \prevdepth = -\@m\p@ \z@ \else \prevdepth \fi
\fi
- \vskip \@tempskipa
- \endgroup
- \fi
+ \vskip -\@tempskipb
+ \penalty#1%
+ \ifdim\@tempskipa=\@tempskipb
+ \else
+ \advance\@tempskipb -\@tempskipa
+ \vskip \@tempskipb
+ \fi
+ \vskip \@tempskipa
+ \endgroup
\fi
\fi
- \else
- \@noitemerr
- \fi}%
+ \fi
+}
\DeclareRobustCommand\vspace{\@ifstar\@vspacer\@vspace}
\def\@vspace #1{%
\ifvmode
@@ -9647,6 +9685,8 @@ Type H <return> for immediate help.}%
\global\expandafter\let\csname cl@#1\endcsname\@empty
\@addtoreset{#1}{@ckpt}%
\global\expandafter\let\csname p@#1\endcsname\@empty
+ \expandafter\xdef\csname theH#1\endcsname{%
+ \noexpand\the\noexpand\value{#1}}%
\expandafter
\ifx\csname the#1\endcsname\relax
\expandafter
@@ -9656,7 +9696,11 @@ Type H <return> for immediate help.}%
\@latex@warning{Command `\string\the#1' already
defined -- not changed}%
\fi}
-\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}}
+\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}%
+ \expandafter\xdef\csname theH#1\endcsname{%
+ \expandafter\noexpand\csname theH#2\endcsname.%
+ \noexpand\the\noexpand\value{#1}}%
+}
\def\@removefromreset#1#2{%
\@ifundefined{c@#2}\relax
{\begingroup
@@ -9750,7 +9794,8 @@ Type H <return> for immediate help.}%
\def\newlength#1{\@ifdefinable#1{\newskip#1}}
\def\setlength#1#2{#1 #2\relax}
\def\addtolength#1#2{\advance#1 #2\relax}
-\def\@settodim#1#2#3{\setbox\@tempboxa\hbox{{#3}}#2#1\@tempboxa
+\def\@settodim#1#2#3{\setbox\@tempboxa\hbox
+ {{\SuspendTagging{\@settodim}#3\ResumeTagging{\@settodim}}}#2#1\@tempboxa
\setbox\@tempboxa\box\voidb@x}
\DeclareRobustCommand\settoheight{\@settodim\ht}
\DeclareRobustCommand\settodepth {\@settodim\dp}
@@ -9758,6 +9803,7 @@ Type H <return> for immediate help.}%
\def\@settopoint#1{\divide#1\p@\multiply#1\p@}
%%% From File: ltfssbas.dtx
%% Copyright (C) 1989-2002 Frank Mittelbach and Rainer Sch\"opf
+\message{NFSS base,}
\def\@nomath#1{\relax\ifmmode
\@font@warning{Command \noexpand#1invalid in math mode}\fi}
\gdef\no@alphabet@error#1{\relax \ifmmode
@@ -9904,6 +9950,40 @@ Type H <return> for immediate help.}%
\@onlypreamble\DeclareFontEncodingDefaults
\let\default@T\@empty
\let\default@M\@empty
+\def\DeclareEncodingSubset#1#2{%
+ \DeclareEncodingSubset@aux{#1}#2*\DeclareEncodingSubset@aux
+}
+\def\DeclareEncodingSubset@aux#1#2*#3\DeclareEncodingSubset@aux#4{%
+ \expandafter\ifx\expandafter X\detokenize{#3}X%
+ \@DeclareEncodingSubset{#1}{#2}{#4}%
+ \else
+ \@DeclareEncodingSubset{#1}{#2LF}{#4}%
+ \@DeclareEncodingSubset{#1}{#2TLF}{#4}%
+ \@DeclareEncodingSubset{#1}{#2OsF}{#4}%
+ \@DeclareEncodingSubset{#1}{#2TOsF}{#4}%
+ \fi
+}
+\def\@DeclareEncodingSubset#1#2#3{%
+ \@ifundefined{#1:#2}%
+ {\@font@info{Setting #2 sub-encoding to #1/#3}}%
+ {\@font@info{Changing #2 sub-encoding to #1/#3}}%
+ \global\@namedef{#1:#2}{#3}}
+
+\def\CheckEncodingSubset#1#2#3#4#5{%
+ \ifnum #4>%
+ \expandafter\ifx\csname #2:\f@family\endcsname\relax
+ 0\csname #2:?\endcsname
+ \else
+ \csname #2:\f@family\endcsname
+ \fi
+ \relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {#1{#2}}{#3}%
+ #5%
+}
\def\DeclarePreloadSizes#1#2#3#4#5{%
\@ifundefined{T@#1}%
{\@latex@error{Encoding scheme `#1' unknown}\@eha}%
@@ -10280,6 +10360,7 @@ Type H <return> for immediate help.}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% From File: ltfssaxes.dtx
%% Copyright (C) 2019-2020 Frank Mittelbach
+\message{NFSS axes,}
\def\DeclareFontSeriesChangeRule#1#2#3#4{%
\@namedef{series@#1@#2}{{#3}{#4}}}
\DeclareFontSeriesChangeRule {bc}{b}{bc}{}
@@ -10881,6 +10962,7 @@ Type H <return> for immediate help.}%
%%% From File: ltfsstrc.dtx
%% Copyright (C) 1989-97 by Frank Mittelbach and Rainer Sch\"opf.
%% Copyright (C) 1994-97 by LaTeX Project. All rights reserved.
+\message{NFSS tracing,}
\def\tracingfonts{%
\@font@warning{Command \noexpand\tracingfonts
not provided.\MessageBreak
@@ -11225,6 +11307,7 @@ Type H <return> for immediate help.}%
%%% From File: ltfssdcl.dtx
%% Copyright (C) 1989-1998 Frank Mittelbach and Rainer Sch\"opf,
%% all rights reserved.
+\message{NFSS declarative interface,}
\def\in@#1#2%
{%
\begingroup
@@ -12119,6 +12202,7 @@ Type H <return> for immediate help.}%
%%% From File: ltfssini.dtx
%% Copyright (C) 1989-2001 Frank Mittelbach and Rainer Sch\"opf,
%% all rights reserved.
+\message{NFSS initialization,}
\DeclareMathVersion{normal}
\DeclareMathVersion{bold}
\DeclareRobustCommand\upshape
@@ -12672,45 +12756,6 @@ Type H <return> for immediate help.}%
\egroup
}
\def\textcompsubstdefault{\rmsubstdefault}
-\def\DeclareEncodingSubset#1#2{%
- \DeclareEncodingSubset@aux{#1}#2*\DeclareEncodingSubset@aux
-}
-\def\DeclareEncodingSubset@aux#1#2*#3\DeclareEncodingSubset@aux#4{%
- \expandafter\ifx\expandafter X\detokenize{#3}X%
- \@DeclareEncodingSubset{#1}{#2}{#4}%
- \else
- \@DeclareEncodingSubset{#1}{#2LF}{#4}%
- \@DeclareEncodingSubset{#1}{#2TLF}{#4}%
- \@DeclareEncodingSubset{#1}{#2OsF}{#4}%
- \@DeclareEncodingSubset{#1}{#2TOsF}{#4}%
- \fi
-}
-\def\@DeclareEncodingSubset#1#2#3{%
- \@ifundefined{#1:#2}%
- {\@font@info{Setting #2 sub-encoding to #1/#3}}%
- {\@font@info{Changing #2 sub-encoding to #1/#3}}%
- \global\@namedef{#1:#2}{#3}}
-\@onlypreamble\DeclareEncodingSubset
-\@onlypreamble\DeclareEncodingSubset@aux
-\@onlypreamble\@DeclareEncodingSubset
-
-
-\def\CheckEncodingSubset#1#2#3#4#5{%
- \ifnum #4>%
- \expandafter\ifx\csname #2:\f@family\endcsname\relax
- 0\csname #2:?\endcsname
- \else
- \csname #2:\f@family\endcsname
- \fi
- \relax
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {#1{#2}}{#3}%
- #5%
-}
-
\def\tc@errorwarn#1#2{\@latex@info{#1}}
\def\tc@subst#1{%
@@ -13027,11 +13072,7 @@ Type H <return> for immediate help.}%
\DeclareEncodingSubset{TS1}{?}{9}
\DeclareEncodingSubset{TS1}{ccr} {0}
\DeclareEncodingSubset{TS1}{cmbr} {0}
-\DeclareEncodingSubset{TS1}{cmr} {0}
-\DeclareEncodingSubset{TS1}{cmss} {0}
\DeclareEncodingSubset{TS1}{cmtl} {0}
-\DeclareEncodingSubset{TS1}{cmtt} {0}
-\DeclareEncodingSubset{TS1}{cmvtt} {0}
\DeclareEncodingSubset{TS1}{pxr} {0}
\DeclareEncodingSubset{TS1}{pxss} {0}
\DeclareEncodingSubset{TS1}{pxtt} {0}
@@ -13296,11 +13337,27 @@ Type H <return> for immediate help.}%
\endgroup
\@esphack}
\def\@currentcounter{}
-\def\refstepcounter#1{\stepcounter{#1}%
+\NewSocket{refstepcounter}{1}
+\NewSocket{refstepcounter/target}{1}
+\NewSocketPlug{refstepcounter/target}{kernel}
+ {\xdef\@currentHref {#1.\csname theH#1\endcsname}}%
+\AssignSocketPlug{refstepcounter/target}{kernel}
+\def\refstepcounter#1{%
+ \UseSocket{refstepcounter}{%
+ \stepcounter{#1}%
\edef\@currentcounter{#1}%
\protected@edef\@currentlabel
{\csname p@#1\expandafter\endcsname\csname the#1\endcsname}%
+ \UseSocket{refstepcounter/target}{#1}%
+ \UseTaggingSocket{recordtarget}%
+ }%
}
+\def\@kernel@refstepcounter#1{%
+ \UseSocket{refstepcounter}{%
+ \stepcounter{#1}%
+ \edef\@currentcounter{#1}%
+ \protected@edef\@currentlabel
+ {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}}}%
\def\labelformat#1{\expandafter\def\csname p@#1\endcsname##1}
\def\@kernel@Ref#1{\protected@edef\@tempa{\@kernel@ref{#1}}%
\expandafter\MakeUppercase\@tempa}
@@ -13360,14 +13417,11 @@ Type H <return> for immediate help.}%
\cs_generate_variant:Nn \property_record:nn { nV , ee, oo }
\cs_new_protected:Npn \__property_record:nn #1#2
{
- \legacy_if:nT { @filesw }
+ \protected@write \@auxout {}
{
- \protected@write \@auxout {}
- {
- \token_to_str:N \new@label@record
- {#1}
- { \clist_map_function:nN {#2} \__property_record_value:n }
- }
+ \token_to_str:N \new@label@record
+ {#1}
+ { \clist_map_function:nN {#2} \__property_record_value:n }
}
}
\cs_generate_variant:Nn \__property_record:nn { e }
@@ -13473,7 +13527,7 @@ Type H <return> for immediate help.}%
\prg_return_false:
}
}
-\prg_generate_conditional_variant:Nnn \property_if_exist:n {e} {TF}
+\prg_generate_conditional_variant:Nnn \property_if_exist:n {e} { p , T , F, TF }
\cs_new_eq:NN \IfPropertyExistsTF \property_if_exist:eTF
\cs_new:Npn \IfPropertyExistsT #1#2 {\property_if_exist:eTF {#1}{#2}{} }
\cs_new:Npn \IfPropertyExistsF #1 {\property_if_exist:eTF {#1}{} }
@@ -13488,10 +13542,10 @@ Type H <return> for immediate help.}%
\prg_return_false:
}
}
-\prg_generate_conditional_variant:Nnn \property_if_recorded:n {e} {TF}
+\prg_generate_conditional_variant:Nnn \property_if_recorded:n {e} { p , T , F, TF }
\cs_new_eq:NN \IfLabelExistsTF \property_if_recorded:eTF
-\cs_new:Npn \IfLabelExistsT #1#2 {\property_if_exist:eTF {#1}{#2}{} }
-\cs_new:Npn \IfLabelExistsF #1 {\property_if_exist:eTF {#1}{} }
+\cs_new:Npn \IfLabelExistsT #1#2 {\property_if_recorded:eTF {#1}{#2}{} }
+\cs_new:Npn \IfLabelExistsF #1 {\property_if_recorded:eTF {#1}{} }
\prg_new_conditional:Npnn \property_if_recorded:nn #1#2 { p , T , F, TF }
% #1 label #2 property
{
@@ -13503,8 +13557,10 @@ Type H <return> for immediate help.}%
\prg_return_false:
}
}
-\prg_generate_conditional_variant:Nnn \property_if_recorded:nn {ee} {TF}
+\prg_generate_conditional_variant:Nnn \property_if_recorded:nn {ee} { p , T , F, TF }
\cs_new_eq:NN \IfPropertyRecordedTF \property_if_recorded:eeTF
+\cs_new:Npn \IfPropertyRecordedT #1#2#3 { \property_if_recorded:eeTF {#1}{#2}{#3}{} }
+\cs_new:Npn \IfPropertyRecordedF #1#2#3 { \property_if_recorded:eeTF {#1}{#2}{}{#3} }
\cs_new_protected:Npn \property_ref_undefined_warn:
{
\flag_if_raised:nT { l__property_ref_flag }
@@ -13667,7 +13723,7 @@ Type H <return> for immediate help.}%
\def\stop{\clearpage\deadcycles\z@\let\par\@@par\@@end}
\everypar{\@nodocument} %% To get an error if text appears before the
\nullfont %% \begin{document}
-\DeclareRobustCommand*\begin[1]{%
+\protected\def\begin#1{%
\UseHook{env/#1/before}%
\@ifundefined{#1}%
{\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}%
@@ -16109,6 +16165,9 @@ Type H <return> for immediate help.}%
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmarks.dtx
+
+
+
\ExplSyntaxOn
\seq_new:N \g__mark_classes_seq
\cs_new_protected:Npn \mark_new_class:n #1
@@ -16126,43 +16185,42 @@ Type H <return> for immediate help.}%
\__mark_debug:n { \iow_term:x { Marks:~new~mark:~#1~\msg_line_context: } }
\exp_args:Nc \newmarks {c__mark_class_ #1 _mark}
\seq_gput_right:Nn \g__mark_classes_seq {#1}
- \tl_new:c { g__mark_page_top_ #1 _tl }
- \tl_new:c { g__mark_page_first_ #1 _tl }
- \tl_new:c { g__mark_page_last_ #1 _tl }
- \tl_new:c { g__mark_previous-page_top_ #1 _tl }
- \tl_new:c { g__mark_previous-page_first_ #1 _tl }
- \tl_new:c { g__mark_previous-page_last_ #1 _tl }
- \tl_new:c { g__mark_column_top_ #1 _tl }
- \tl_new:c { g__mark_column_first_ #1 _tl }
- \tl_new:c { g__mark_column_last_ #1 _tl }
- \tl_new:c { g__mark_previous-column_top_ #1 _tl }
- \tl_new:c { g__mark_previous-column_first_ #1 _tl }
- \tl_new:c { g__mark_previous-column_last_ #1 _tl }
- \tl_new:c { g__mark_first-column_top_ #1 _tl }
- \tl_new:c { g__mark_first-column_first_ #1 _tl }
- \tl_new:c { g__mark_first-column_last_ #1 _tl }
- \tl_new:c { g__mark_last-column_top_ #1 _tl }
- \tl_new:c { g__mark_last-column_first_ #1 _tl }
- \tl_new:c { g__mark_last-column_last_ #1 _tl }
- \tl_set:cn { g__mark_page_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_page_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_page_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-page_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-page_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-page_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_column_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_column_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_column_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-column_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-column_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-column_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_first-column_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_first-column_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_first-column_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_last-column_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_last-column_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_last-column_last_ #1 _tl }{ \__mark_id:n{0} }
-}
+ \__mark_init_region:nn {page}{#1}
+ \__mark_init_region:nn {previous-page}{#1}
+ \__mark_init_region:nn {column}{#1}
+ \__mark_init_region:nn {previous-column}{#1}
+ \__mark_init_region:nn {first-column}{#1}
+ \__mark_init_region:nn {last-column}{#1}
+ \__mark_init_region:nn {mcol-1}{#1}
+ \__mark_init_region:nn {mcol-2}{#1}
+ \__mark_init_region:nn {mcol-3}{#1}
+ \__mark_init_region:nn {mcol-4}{#1}
+ \__mark_init_region:nn {mcol-5}{#1}
+ \__mark_init_region:nn {mcol-6}{#1}
+ \__mark_init_region:nn {mcol-7}{#1}
+ \__mark_init_region:nn {mcol-8}{#1}
+ \__mark_init_region:nn {mcol-9}{#1}
+ \__mark_init_region:nn {mcol-10}{#1}
+ \__mark_init_region:nn {mcol-11}{#1}
+ \__mark_init_region:nn {mcol-12}{#1}
+ \__mark_init_region:nn {mcol-13}{#1}
+ \__mark_init_region:nn {mcol-14}{#1}
+ \__mark_init_region:nn {mcol-15}{#1}
+ \__mark_init_region:nn {mcol-16}{#1}
+ \__mark_init_region:nn {mcol-17}{#1}
+ \__mark_init_region:nn {mcol-18}{#1}
+ \__mark_init_region:nn {mcol-19}{#1}
+ \__mark_init_region:nn {mcol-20}{#1}
+}
+\cs_new_protected:Npn \__mark_init_region:nn #1 #2 {
+ \tl_new:c { g__mark_#1_top_ #2 _tl }
+ \tl_new:c { g__mark_#1_first_ #2 _tl }
+ \tl_new:c { g__mark_#1_last_ #2 _tl }
+ \tl_set_eq:cN { g__mark_#1_top_ #2 _tl } \c__mark_empty_tl
+ \tl_set_eq:cN { g__mark_#1_first_ #2 _tl } \c__mark_empty_tl
+ \tl_set_eq:cN { g__mark_#1_last_ #2 _tl } \c__mark_empty_tl
+}
+\tl_const:Nn \c__mark_empty_tl { \__mark_value:nn{0}{} }
\box_new:N \l__mark_box
\box_new:N \l__mark_ii_box
\tl_new:N \g__mark_tmp_tl
@@ -16217,13 +16275,13 @@ Type H <return> for immediate help.}%
\exp_not:N \l__mark_saved_parameters_tl
}
\tl_new:N \l__mark_saved_parameters_tl
-\cs_new_protected:Npn \__mark_update_structure_from_material:nn #1#2 {
+\cs_new_protected:Npn \mark_update_structure_from_material:nn #1#2 {
\__mark_extract_and_handle_marks:nn
{ \__mark_update_structure_from_splitmarks:n {#1} }
{ #2 }
}
\cs_new_protected:Npn \__mark_update_structure_from_splitmarks:n #1 {
- \__mark_update_structure_alias:nn { previous-#1 } {#1}
+ \mark_copy_structure:nn { previous-#1 } {#1}
\seq_map_inline:Nn \g__mark_classes_seq
{
\tl_gset_eq:Nc \g__mark_new_top_tl { g__mark_#1_last_##1_tl }
@@ -16247,9 +16305,9 @@ Type H <return> for immediate help.}%
}
}
}
-\cs_new_protected:Npn \__mark_get_marks_for_reinsertion:nNN #1#2#3 {
- \tl_clear:N \g__mark_first_marks_tl
- \tl_clear:N \g__mark_last_marks_tl
+\cs_new_protected:Npn \mark_get_marks_for_reinsertion:nNN #1#2#3 {
+ \tl_gclear:N \g__mark_first_marks_tl
+ \tl_gclear:N \g__mark_last_marks_tl
\__mark_extract_and_handle_marks:nn
\__mark_get_from_splitmarks:
{ #1 }
@@ -16271,7 +16329,7 @@ Type H <return> for immediate help.}%
\__mark_debug:n { \iow_term:x { Marks:~ extract~ last~
mark~ for~ class~ '##1'~ =~ \g__mark_tmp_tl } }
\tl_gput_right:Ne \g__mark_last_marks_tl
- { \mark_insert:nn {##1} { \g__mark_tmp_tl } }
+ { \mark_insert:nn {##1} { \__mark_drop_id:o { \g__mark_tmp_tl } } }
\__mark_debug:n { \iow_term:x { Marks:~ extract~ first~
mark~ for~ class~ '##1'~ =~
\tex_splitfirstmarks:D
@@ -16280,8 +16338,10 @@ Type H <return> for immediate help.}%
\tl_gput_right:Ne \g__mark_first_marks_tl
{ \mark_insert:nn {##1}
{
- \tex_splitfirstmarks:D
- \use:c { c__mark_class_##1_mark }
+ \__mark_drop_id:o {
+ \tex_splitfirstmarks:D
+ \use:c { c__mark_class_##1_mark }
+ }
}
}
}
@@ -16289,7 +16349,7 @@ Type H <return> for immediate help.}%
}
\tl_new:N \g__mark_first_marks_tl
\tl_new:N \g__mark_last_marks_tl
-\cs_new_protected:Npn \__mark_update_structure_alias:nn #1#2 {
+\cs_new_protected:Npn \mark_copy_structure:nn #1#2 {
\seq_map_inline:Nn \g__mark_classes_seq
{
\tl_gset_eq:cc { g__mark_ #1 _top_ ##1 _tl }
@@ -16300,16 +16360,27 @@ Type H <return> for immediate help.}%
{ g__mark_ #2 _last_ ##1 _tl }
}
}
-\cs_new_protected:Npn \__mark_update_structure_to_err:n #1 {
+\cs_new_protected:Npn \mark_clear_structure:n #1 {
+ \seq_map_inline:Nn \g__mark_classes_seq
+ {
+ \tl_gset_eq:cN { g__mark_ #1 _top_ ##1 _tl }
+ \c__mark_empty_tl
+ \tl_gset_eq:cN { g__mark_ #1 _first_ ##1 _tl }
+ \c__mark_empty_tl
+ \tl_gset_eq:cN { g__mark_ #1 _last_ ##1 _tl }
+ \c__mark_empty_tl
+ }
+}
+\cs_new_protected:Npn \mark_set_structure_to_err:n #1 {
\seq_map_inline:Nn \g__mark_classes_seq
{
- \tl_gset:cn { g__mark_ #1 _top_ ##1 _tl } { \__mark_error:n {#1} }
- \tl_gset:cn { g__mark_ #1 _first_ ##1 _tl } { \__mark_error:n {#1} }
- \tl_gset:cn { g__mark_ #1 _last_ ##1 _tl } { \__mark_error:n {#1} }
+ \tl_gset:ce { g__mark_ #1 _top_ ##1 _tl } { \__mark_value:nn{?}{\__mark_error:nn {#1}{?} }}
+ \tl_gset:ce { g__mark_ #1 _first_ ##1 _tl } { \__mark_value:nn{?}{\__mark_error:nn {#1}{?} }}
+ \tl_gset:ce { g__mark_ #1 _last_ ##1 _tl } { \__mark_value:nn{?}{\__mark_error:nn {#1}{?} }}
}
}
-\cs_new_protected:Npn \__mark_error:n #1 {
- \msg_error:nnn { mark } { invalid-use } {#1}
+\cs_new_protected:Npn \__mark_error:nn #1#2 {
+ \msg_error:nnnn { mark } { invalid-use } {#1} {#2}
}
\cs_new_protected:Npn \mark_insert:nn #1#2
{
@@ -16320,8 +16391,7 @@ Type H <return> for immediate help.}%
\hook_use:n { insertmark }
\unrestored@protected@xdef \g__mark_tmp_tl
{
- \__mark_id:n{ \int_use:N\g__mark_int }
- #2
+ \__mark_value:nn{ \int_use:N\g__mark_int }{#2}
}
\__mark_debug:n{ \iow_term:x { Marks:~ set~#1~<-~
'\tl_to_str:V \g__mark_tmp_tl' ~ \msg_line_context: } }
@@ -16337,7 +16407,7 @@ Type H <return> for immediate help.}%
{ \tl_to_str:n {#1} }
}
}
-\cs_new_protected:Npn \__mark_id:n #1 { }
+\cs_new_protected:Npn \__mark_value:nn #1#2 { #2 }
\int_new:N \g__mark_int
\cs_new:Npn \@kernel@before@insertmark {
\cs_set_eq:NN \label \scan_stop:
@@ -16349,11 +16419,16 @@ Type H <return> for immediate help.}%
}
\hook_new:n {insertmark}
-\cs_new:Npn \mark_use_first:nn #1#2 { \__mark_use:v { g__mark_#1_first_#2_tl } }
-\cs_new:Npn \mark_use_last:nn #1#2 { \__mark_use:v { g__mark_#1_last_#2_tl } }
-\cs_new:Npn \mark_use_top:nn #1#2 { \__mark_use:v { g__mark_#1_top_#2_tl } }
-\cs_new:Npn \__mark_use:n #1 { \exp_not:o { \use_none:nn #1 } }
-\cs_generate_variant:Nn \__mark_use:n { v }
+\cs_new:Npn \mark_use_first:nn #1#2 { \__mark_use_check:nnn { g__mark_#1_first_#2_tl } {#1} {#2} }
+\cs_new:Npn \mark_use_last:nn #1#2 { \__mark_use_check:nnn { g__mark_#1_last_#2_tl } {#1} {#2} }
+\cs_new:Npn \mark_use_top:nn #1#2 { \__mark_use_check:nnn { g__mark_#1_top_#2_tl } {#1} {#2} }
+\cs_new:Npn \__mark_use_check:nnn #1#2#3 {
+ \tl_if_eq:cNTF {#1} \relax
+ { \__mark_error:nn {#2} {#3} }
+ { \__mark_drop_id:v {#1} }
+}
+\cs_new:Npn \__mark_drop_id:n #1 { \exp_not:o { #1 } }
+\cs_generate_variant:Nn \__mark_drop_id:n { o, v }
\prg_new_conditional:Npnn \mark_if_eq:nnnn #1#2#3#4 { T , F , TF }
{
\tl_if_eq:ccTF { g__mark_ #1 _#3_ #2 _tl }
@@ -16384,13 +16459,14 @@ Type H <return> for immediate help.}%
LaTeX~was~asked~to~manipulate~a~mark~of~class~'#1',~
but~this~class~of~marks~does~not~exist.
}
-
\msg_new:nnnn { mark } { invalid-use }
- { Mark~region~'#1'~not ~usable }
+ { Mark~region~'#1'~not~usable~or~class~'#2'~unknown }
{
\c__msg_coding_error_text_tl
- The~region~'#1'~can~only~be~used~after~
- all~columns~have~been~assembled.
+ The~region~'#1'~is~either~not~known~or~data~for~it~
+ still~needs~to~be~assembled,~e.g.,~last-column~
+ while~building~the~first-column.~
+ Also~possible:~the~class~namne~'#2'~is~misspelled.
\c__msg_return_text_tl
}
\bool_new:N \g__mark_debug_bool
@@ -16412,41 +16488,42 @@ Type H <return> for immediate help.}%
}
\cs_new_eq:NN \DebugMarksOn \mark_debug_on:
\cs_new_eq:NN \DebugMarksOff \mark_debug_off:
-\cs_new_protected:Npn \__mark_class_status:nn #1#2
- {
- \typeout{ Marks:~#2~ #1:}
- \typeout{\@spaces page~ (current):
- | \exp_not:v { g__mark_page_top_ #2 _tl }
- | \exp_not:v { g__mark_page_first_ #2 _tl }
- | \exp_not:v { g__mark_page_last_ #2 _tl } |}
- \typeout{\@spaces page~ (previous):
- | \exp_not:v { g__mark_previous-page_top_ #2 _tl }
- | \exp_not:v { g__mark_previous-page_first_ #2 _tl }
- | \exp_not:v { g__mark_previous-page_last_ #2 _tl } |}
- \typeout{\@spaces column~ (previous):
- | \exp_not:v { g__mark_previous-column_top_ #2 _tl }
- | \exp_not:v { g__mark_previous-column_first_ #2 _tl }
- | \exp_not:v { g__mark_previous-column_last_ #2 _tl } |}
- \typeout{\@spaces column~ (current):
- | \exp_not:v { g__mark_column_top_ #2 _tl }
- | \exp_not:v { g__mark_column_first_ #2 _tl }
- | \exp_not:v { g__mark_column_last_ #2 _tl } |}
- \typeout{\@spaces column~ (first):
- | \exp_not:v { g__mark_first-column_top_ #2 _tl }
- | \exp_not:v { g__mark_first-column_first_ #2 _tl }
- | \exp_not:v { g__mark_first-column_last_ #2 _tl } |}
- \typeout{\@spaces column~ (second):
- | \exp_not:v { g__mark_last-column_top_ #2 _tl }
- | \exp_not:v { g__mark_last-column_first_ #2 _tl }
- | \exp_not:v { g__mark_last-column_last_ #2 _tl } |}
-}
-\cs_new_protected:Npn \__mark_status:n #1
+\cs_new_protected:Npn \__mark_class_status:nnn #1#2#3 {
+ \typeout{ Marks:~#2~ #1:}
+ \__mark_region_status:nnn {#2}{ page~ (previous) } { previous-page }
+ \__mark_region_status:nnn {#2}{ page~ (current)~ } { page }
+ \__mark_region_status:nnn {#2}{ column~ (previous) }{ previous-column }
+ \__mark_region_status:nnn {#2}{ column~ (current)~ }{ column }
+ \__mark_region_status:nnn {#2}{ column~ (first) } { first-column }
+ \__mark_region_status:nnn {#2}{ column~ (last)~ } { last-column }
+ \int_step_inline:nn {#3}
+ {
+ \__mark_region_status:nnn {#2}{ column~ (##1)~ } { mcol-##1 }
+ }
+}
+\cs_new_protected:Npn \__mark_region_status:nnn #1#2#3 {
+ \group_begin:
+ \cs_set:Npn \__mark_value:nn ##1##2{ \exp_not:n{ {##1} ~ ##2 } }
+ \tl_if_exist:cT { g__mark_#3_last_ #1 _tl }
+ {
+ \tl_if_eq:cNF { g__mark_#3_last_ #1 _tl } \c__mark_empty_tl
+ {
+ \typeout{\@spaces #2 =
+ ~|~ \use:c { g__mark_#3_top_ #1 _tl } ~|~
+ \use:c { g__mark_#3_first_ #1 _tl } ~|~
+ \use:c { g__mark_#3_last_ #1 _tl } ~|
+ }
+ }
+ }
+ \group_end:
+}
+\cs_new_protected:Npn \__mark_status:nn #1#2
{
\seq_map_inline:Nn \g__mark_classes_seq
- { \__mark_class_status:nn {#1} {##1} }
+ { \__mark_class_status:nnn {#1} {##1} {#2} }
}
-\cs_new_protected:Npn \ShowMarksAt #1 {
- \__mark_debug:n { \__mark_status:n {#1} }
+\NewDocumentCommand \ShowMarksAt {m O{4} } {
+ \__mark_debug:n { \__mark_status:nn {#1}{#2} }
}
\cs_new_eq:NN \NewMarkClass \mark_new_class:n
\@onlypreamble \NewMarkClass
@@ -16460,23 +16537,29 @@ Type H <return> for immediate help.}%
\NewExpandableDocumentCommand \IfMarksEqualTF {O{page}mmm} {
\mark_if_eq:nnnnTF {#1}{#2}{#3}{#4}
}
+\NewExpandableDocumentCommand \IfMarksEqualT {O{page}mmm} {
+ \mark_if_eq:nnnnT {#1}{#2}{#3}{#4}
+}
+\NewExpandableDocumentCommand \IfMarksEqualF {O{page}mmm} {
+ \mark_if_eq:nnnnF {#1}{#2}{#3}{#4}
+}
\cs_new_protected:Npn \__mark_update_singlecol_structures: {
\box_if_vertical:NTF \@outputbox
{
- \__mark_update_structure_from_material:nn {page}
+ \mark_update_structure_from_material:nn {page}
{ \vbox_unpack:N \@outputbox }
}
{
- \__mark_update_structure_from_material:nn {page}
+ \mark_update_structure_from_material:nn {page}
{ \hbox_unpack:N \@outputbox }
}
- \__mark_update_structure_alias:nn {previous-column}{previous-page}
- \__mark_update_structure_alias:nn {column}{page}
- \__mark_update_structure_alias:nn {first-column}{page}
- \__mark_update_structure_alias:nn {last-column}{page}
+ \mark_copy_structure:nn {previous-column}{previous-page}
+ \mark_copy_structure:nn {column}{page}
+ \mark_copy_structure:nn {first-column}{page}
+ \mark_copy_structure:nn {last-column}{page}
\__mark_debug:n
{
- \__mark_status:n
+ \__mark_status:nn
{ in~ OR~ (
\legacy_if:nTF {@twoside}
{ twoside-
@@ -16486,25 +16569,26 @@ Type H <return> for immediate help.}%
{ oneside }
)
}
+ {0}
}
}
\cs_new_protected:Npn \__mark_update_dblcol_structures: {
\box_if_vertical:NTF \@outputbox
{
- \__mark_update_structure_from_material:nn {column}
+ \mark_update_structure_from_material:nn {column}
{ \vbox_unpack:N \@outputbox }
}
{
- \__mark_update_structure_from_material:nn {column}
+ \mark_update_structure_from_material:nn {column}
{ \hbox_unpack:N \@outputbox }
}
\legacy_if:nTF {@firstcolumn}
{
- \__mark_update_structure_alias:nn {first-column}{column}
- \__mark_update_structure_to_err:n {last-column}
+ \mark_copy_structure:nn {first-column}{column}
+ \mark_set_structure_to_err:n {last-column}
}
{
- \__mark_update_structure_alias:nn {last-column}{column}
+ \mark_copy_structure:nn {last-column}{column}
\seq_map_inline:Nn \g__mark_classes_seq
{
\tl_gset_eq:cc { g__mark_previous-page_top_ ##1 _tl }
@@ -16532,7 +16616,7 @@ Type H <return> for immediate help.}%
}
\__mark_debug:n
{
- \__mark_status:n
+ \__mark_status:nn
{ in~ OR~ (
\legacy_if:nTF {@twoside}
{ twoside-
@@ -16545,8 +16629,10 @@ Type H <return> for immediate help.}%
{ first~ }{ second~ }
column )
}
+ {0}
}
}
+
\cs_new_eq:NN \@expl@@@mark@update@singlecol@structures@@
\__mark_update_singlecol_structures:
\cs_new_eq:NN \@expl@@@mark@update@dblcol@structures@@
@@ -16572,32 +16658,19 @@ Type H <return> for immediate help.}%
\let\@rightmark\@secondoftwo
\ExplSyntaxOn
\DeclareRobustCommand*\markboth[2]{%
- \begingroup
- \let\label\relax \let\index\relax \let\glossary\relax
- \unrestored@protected@xdef\@themark {{#1}{#2}}%
- \@temptokena \expandafter{\@themark}%
\mark_insert:nn{2e-left}{#1}
\mark_insert:nn{2e-right}{#2}
\tl_if_empty:nF{#2}{ \mark_insert:nn{2e-right-nonempty}{#2} }
- \mark{\the\@temptokena}%
- \endgroup
- \if@nobreak\ifvmode\nobreak\fi\fi}
+}
\DeclareRobustCommand*\markright[1]{%
- \begingroup
- \let\label\relax \let\index\relax \let\glossary\relax
- \expandafter\@markright\@themark {#1}%
- \@temptokena \expandafter{\@themark}%
\mark_insert:nn{2e-right}{#1}
\tl_if_empty:nF{#1}{ \mark_insert:nn{2e-right-nonempty}{#1} }
- \mark{\the\@temptokena}%
- \endgroup
- \if@nobreak\ifvmode\nobreak\fi\fi}
+}
+\ExplSyntaxOff
+\ExplSyntaxOn
+\cs_new:Npn \leftmark {\mark_use_last:nn{page}{2e-left}}
+\cs_new:Npn \rightmark {\mark_use_first:nn{page}{2e-right}}
\ExplSyntaxOff
-\def\@markright#1#2#3{\@temptokena {#1}%
- \unrestored@protected@xdef\@themark{{\the\@temptokena}{#3}}}
-\def\leftmark{\expandafter\@leftmark\botmark\@empty\@empty}
-\def\rightmark{\expandafter\@rightmark\firstmark\@empty\@empty}
-\def\@themark{{}{}}
\DeclareRobustCommand\raggedbottom{%
\def\@textbottom{\vskip \z@ \@plus.0001fil}\let\@texttop\relax}
\DeclareRobustCommand\flushbottom{%
@@ -16815,7 +16888,9 @@ Type H <return> for immediate help.}%
\@onlypreamble\DeclareOption
\@onlypreamble\@declareoption
\@onlypreamble\@defdefault@ds
-\def\@remove@eq@value#1=#2\@nil{#1}
+\ExplSyntaxOn
+\def\@remove@eq@value#1=#2\@nil{\tl_trim_spaces:n{#1}}
+\ExplSyntaxOff
\def\OptionNotUsed{%
\ifx\@currext\@clsextension
\xdef\@unusedoptionlist{%
@@ -17480,6 +17555,7 @@ Type H <return> for immediate help.}%
\def\pkgcls@use@this@release#1#2{%
\pkgcls@show@selection{#1}{#2}%
\pkgcls@targetdate\z@
+ \@addtofilelist{#1}%
\@@input #1\relax
\endinput
}
@@ -18997,7 +19073,6 @@ Type H <return> for immediate help.}%
\global\let\if@newlist\@@if@newlist
\global \@colht \textheight
\stepcounter{page}%
- \let\firstmark\botmark
}
\def \@begindvi{%
\unvbox \@begindvibox
@@ -19542,21 +19617,6 @@ Type H <return> for immediate help.}%
\if@firstcolumn
\global\@firstcolumnfalse
\global\setbox\@leftcolumn\copy\@outputbox
- \splitmaxdepth\maxdimen
- \vbadness\maxdimen
- \setbox\@outputbox\vbox{\unvbox\@outputbox\unskip}%
- \setbox\@outputbox\vsplit\@outputbox to\maxdimen
- \toks@\expandafter{\topmark}%
- \xdef\@firstcoltopmark{\the\toks@}%
- \toks@\expandafter{\splitfirstmark}%
- \xdef\@firstcolfirstmark{\the\toks@}%
- \ifx\@firstcolfirstmark\@empty
- \global\let\@setmarks\relax
- \else
- \gdef\@setmarks{%
- \let\firstmark\@firstcolfirstmark
- \let\topmark\@firstcoltopmark}%
- \fi
\else
\global\@firstcolumntrue
\setbox\@outputbox\vbox{%
@@ -19566,8 +19626,7 @@ Type H <return> for immediate help.}%
{\normalcolor\vrule \@width\columnseprule}%
\hfil
\hb@xt@\columnwidth{\box\@outputbox \hss}}}%
- \@combinedblfloats
- \@setmarks
+ \@combinedblfloats
\@outputpage
\begingroup
\@dblfloatplacement
@@ -19617,33 +19676,34 @@ Type H <return> for immediate help.}%
\let\dblfigrule=\relax
%%% From File: lttagging.dtx
\ExplSyntaxOn
-\cs_new_eq:NN \SuspendTagging \use_none:n
-\cs_new_eq:NN \ResumeTagging \use_none:n
-\AddToHook{begindocument/before}{
- \cs_if_exist:NT \tag_stop:n
- {
- \cs_set:Npn \SuspendTagging #1 {
- \tag_stop:n {#1}
- }
- \cs_set:Npn \ResumeTagging #1 { \tag_start:n {#1} }
- }
-}
-\AddToHook{begindocument}[kernel]{
- \cs_if_exist:NF \tag_if_active:T
- {
- \prg_new_conditional:Npnn \tag_if_active: { p , T , TF, F }
- { \prg_return_false: }
- }
-}
+
+\cs_new_eq:NN \tag_suspend:n \use_none:n
+\cs_new_eq:NN \tag_resume:n \use_none:n
+\cs_new_protected:Npn \SuspendTagging #1 { \tag_suspend:n {#1} }
+\cs_new_protected:Npn \ResumeTagging #1 { \tag_resume:n {#1} }
+\prg_new_conditional:Npnn \tag_if_active: { p , T , TF, F }
+ { \prg_return_false: }
+\cs_new:Npn \tag_socket_use_expandable:n #1 { }
\cs_new_protected:Npn \tag_socket_use:n #1 { }
\cs_new_protected:Npn \tag_socket_use:nn #1#2 { }
+\cs_new_protected:Npn \tag_socket_use:nnn #1#2#3 { #3 }
\cs_new_protected:Npn \UseTaggingSocket #1 {
\int_case:nnF
{ \int_use:c { c__socket_tagsupport/#1_args_int } }
{
0 \prg_do_nothing:
1 \use_none:n
- 2 \use_none:nn
+ 2 \use_ii:nn
+ }
+ \ERRORusetaggingsocket % that should get a proper error message
+}
+\cs_new:Npn \UseExpandableTaggingSocket #1 {
+ \int_case:nnF
+ { \int_use:c { c__socket_tagsupport/#1_args_int } }
+ {
+ 0 \prg_do_nothing:
+ 1 \use_none:n
+ 2 \use_ii:nn
}
\ERRORusetaggingsocket % that should get a proper error message
}
@@ -19655,11 +19715,25 @@ Type H <return> for immediate help.}%
\tl_set_eq:NN \l__tag_para_tag_tl\l__tag_para_tag_default_tl
\bool_set_false:N\l__tag_para_flattened_bool
\int_zero:N \l__tag_block_flattened_level_int
+ \bool_set_true:N \l__tag_para_bool
}
\AssignSocketPlug{tagsupport/para/restore}{default}
-\ExplSyntaxOff
+\NewSocket{tagsupport/recordtarget}{0}
+\NewSocketPlug{tagsupport/recordtarget}{kernel}
+ {
+ \tl_if_blank:VF \@currentHref
+ {
+ \prop_gput:Nee
+ \g__tag_struct_dest_num_prop
+ {\@currentHref}
+ {\tag_get:n{struct_num}}
+ }
+ }
+\AssignSocketPlug{tagsupport/recordtarget}{kernel}
+\ExplSyntaxOff
+
\NewSocket{tagsupport/toc/contentsline/before}{1}
\NewSocket{tagsupport/toc/contentsline/after}{1}
\NewSocket{tagsupport/toc/starttoc/before}{1}
@@ -19689,6 +19763,14 @@ Type H <return> for immediate help.}%
\NewSocket{tagsupport/tbl/longtable/foot}{0}
\NewSocket{tagsupport/tbl/leaders/begin}{0}
\NewSocket{tagsupport/tbl/leaders/end}{0}
+\NewSocket{tagsupport/float/hmode/begin}{0}
+\NewSocket{tagsupport/float/hmode/end}{0}
+\NewSocket{tagsupport/float/begin}{0}
+\NewSocket{tagsupport/float/end}{0}
+\NewSocket{tagsupport/caption/begin}{1}
+\NewSocket{tagsupport/caption/end}{0}
+\NewSocket{tagsupport/caption/label/begin}{0}
+\NewSocket{tagsupport/caption/label/end}{0}
\ExplSyntaxOn
\int_new:N \g__tbl_col_int
\int_new:N \g__tbl_row_int
@@ -19829,7 +19911,6 @@ Type H <return> for immediate help.}%
\crcr
}
\ExplSyntaxOff
-\let\@kernel@refstepcounter\refstepcounter
\def\hyper@nopatch@longtable{}
%%% From File: ltfinal.dtx
\tracingstats1
@@ -20170,11 +20251,15 @@ Type H <return> for immediate help.}%
\keys_define:nn { __kernel }
{
lang .str_set:N = \reserved@a ,
- locale .str_set:N = \reserved@a
+ locale .str_set:N = \reserved@a ,
+ words .choices:nn =
+ { all , first }
+ { \str_set:Nn \reserved@b {#1} }
}
\cs_new_protected:Npn \@@text@case@aux #1#2#3
{
\cs_set_nopar:Npn \reserved@a { }
+ \cs_set_nopar:Npn \reserved@b { }
\tl_if_blank:nTF {#2}
{
\str_set:Nx \reserved@a
@@ -20186,7 +20271,7 @@ Type H <return> for immediate help.}%
}
}
{ \keys_set:nn { __kernel } {#2} }
- \use:c { text_ #1 case:Vn } \reserved@a {#3}
+ \use:c { text_ #1 :Vn } \reserved@a {#3}
}
\exp_args_generate:n { cnx }
\cs_set_protected:Npn \reserved@a #1
@@ -20200,20 +20285,22 @@ Type H <return> for immediate help.}%
\reserved@a { Upper }
\reserved@a { Lower }
\reserved@a { Title }
+\cs_generate_variant:Nn \text_titlecase_all:nn { V }
+\cs_generate_variant:Nn \text_titlecase_first:nn { V }
\cs_new_protected:cpn { MakeLowercase \c_space_tl \c_space_tl \c_space_tl } [#1] #2
{{
\let \OE \oe
- \@@text@case@aux { lower } {#1} {#2}
+ \@@text@case@aux { lowercase } {#1} {#2}
}}
\cs_new_protected:cpn { MakeUppercase \c_space_tl \c_space_tl \c_space_tl } [#1] #2
{{
\let \oe \OE
- \@@text@case@aux { upper } {#1} {#2}
+ \@@text@case@aux { uppercase } {#1} {#2}
}}
\cs_new_protected:cpn { MakeTitlecase \c_space_tl \c_space_tl \c_space_tl } [#1] #2
{{
\let \oe \OE
- \@@text@case@aux { title } {#1} {#2}
+ \@@text@case@aux { titlecase_ \reserved@b } {#1} {#2}
}}
\cs_new_protected_nopar:Npn\AddToNoCaseChangeList
{\tl_put_right:Nn \l_text_case_exclude_arg_tl}
diff --git a/Master/texmf-dist/tex/latex-dev/base/latex209.def b/Master/texmf-dist/tex/latex-dev/base/latex209.def
index 633dbaebcd9..c4a6450ac4f 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latex209.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latex209.def
@@ -167,6 +167,11 @@
\newdimen\@maxsep
\newdimen\@dblmaxsep
\mark{{}{}}
+\ExplSyntaxOn
+\marks1{\__mark_value:nn {2.09-compat}{}}
+\marks2{\__mark_value:nn {2.09-compat}{}}
+\marks3{\__mark_value:nn {2.09-compat}{}}
+\ExplSyntaxOff
\def\sloppy{\tolerance \@M \hfuzz .5\p@ \vfuzz .5\p@}
\def\@finalstrut#1{\unskip\strut}
\let \@marginparreset \@empty
diff --git a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
index 0e1035955f2..8a463b97ddb 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
@@ -226,6 +226,7 @@
\def\pkgcls@use@this@release#1#2{%
\pkgcls@show@selection{#1}{#2}%
\pkgcls@targetdate\z@
+ \@addtofilelist{#1}%
\@@input #1\relax
\endinput
}
@@ -300,7 +301,7 @@
}
%%% From File: ltvers.dtx
\edef\latexreleaseversion
- {2024-11-01}
+ {2025-06-01}
\newif\if@includeinrelease
\@includeinreleasefalse
\def\IncludeInRelease#1{%
@@ -5330,17 +5331,19 @@ of this package available from CTAN}
{Providing~hooks}
\cs_gset_protected:Npn \hook_activate_generic:n #1 { }
\EndIncludeInRelease
-\cs_new:Npn \__hook_parse_label_default:n #1
+\cs_new:Npn \__hook_parse_label_default:nN #1#2
{
\tl_if_novalue:nTF {#1}
{ \__hook_currname_or_default: }
- { \tl_trim_spaces_apply:nN {#1} \__hook_parse_dot_label:n }
+ { \tl_trim_spaces_apply:nN {#1} \__hook_parse_dot_label:nN #2 }
}
-\cs_new:Npn \__hook_parse_dot_label:n #1
+\cs_new:Npn \__hook_parse_dot_label:nN #1#2
{
\tl_if_empty:nTF {#1}
{
- \msg_expandable_error:nn { hooks } { empty-label }
+ \bool_if:NTF #2
+ { \msg_expandable_error:nn { hooks } { empty-label } }
+ { \msg_expandable_error:nn { hooks } { empty-hook } }
\__hook_currname_or_default:
}
{
@@ -5395,24 +5398,24 @@ of this package available from CTAN}
\cs_new_protected:Npn \__hook_normalize_hook_args:Nn #1 #2
{
\__hook_normalize_hook_args_aux:Nn #1
- { { \__hook_parse_label_default:n {#2} } }
+ { { \__hook_parse_label_default:nN {#2} \c_false_bool } }
}
\cs_new_protected:Npn \__hook_normalize_hook_args:Nnn #1 #2 #3
{
\__hook_normalize_hook_args_aux:Nn #1
{
- { \__hook_parse_label_default:n {#2} }
- { \__hook_parse_label_default:n {#3} }
+ { \__hook_parse_label_default:nN {#2} \c_false_bool }
+ { \__hook_parse_label_default:nN {#3} \c_true_bool }
}
}
\cs_new_protected:Npn \__hook_normalize_hook_rule_args:Nnnnn #1 #2 #3 #4 #5
{
\__hook_normalize_hook_args_aux:Nn #1
{
- { \__hook_parse_label_default:n {#2} }
- { \__hook_parse_label_default:n {#3} }
+ { \__hook_parse_label_default:nN {#2} \c_false_bool }
+ { \__hook_parse_label_default:nN {#3} \c_true_bool }
{ \tl_trim_spaces:n {#4} }
- { \__hook_parse_label_default:n {#5} }
+ { \__hook_parse_label_default:nN {#5} \c_true_bool }
}
}
\tl_gset:Nn \g__hook_hook_curr_name_tl { top-level }
@@ -6862,7 +6865,9 @@ of this package available from CTAN}
{ #2 { The~hook~is~empty } }
{
\__hook_log_line:x { Code~chunks: }
- \prop_if_empty:cTF { g__hook_#1_code_prop }
+ \bool_lazy_or:nnTF
+ { ! \prop_if_exist_p:c { g__hook_#1_code_prop } }
+ { \prop_if_empty_p:c { g__hook_#1_code_prop } }
{ \__hook_log_line_indent:x { --- } }
{
\prop_map_inline:cn { g__hook_#1_code_prop }
@@ -7069,16 +7074,19 @@ of this package available from CTAN}
}
\cs_new_protected:Npn \__hook_list_rules:nn #1 #2
{
- \cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2}
- \prop_map_inline:cn { g__hook_#1_code_prop }
+ \prop_if_exist:cT { g__hook_#1_code_prop }
{
+ \cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2}
\prop_map_inline:cn { g__hook_#1_code_prop }
{
- \__hook_if_label_case:nnnnn {##1} {####1}
- { \prop_map_break: }
- { \__hook_list_one_rule:nnn {##1} {####1} }
- { \__hook_list_one_rule:nnn {####1} {##1} }
- {#1}
+ \prop_map_inline:cn { g__hook_#1_code_prop }
+ {
+ \__hook_if_label_case:nnnnn {##1} {####1}
+ { \prop_map_break: }
+ { \__hook_list_one_rule:nnn {##1} {####1} }
+ { \__hook_list_one_rule:nnn {####1} {##1} }
+ {#1}
+ }
}
}
}
@@ -7616,6 +7624,10 @@ of this package available from CTAN}
Empty~code~label~\msg_line_context:.~
Using~'\__hook_currname_or_default:'~instead.
}
+\msg_new:nnn { hooks } { empty-hook }
+ {
+ Empty~hook~name~\msg_line_context:.
+ }
\msg_new:nnn { hooks } { no-default-label }
{
Missing~(empty)~default~label~\msg_line_context:. \\
@@ -7793,6 +7805,8 @@ of this package available from CTAN}
\NewDocumentCommand \ClearHookRule { m m m }
{ \hook_gset_rule:nnnn {#1}{#2}{unrelated}{#3} }
\cs_new_eq:NN \IfHookEmptyTF \hook_if_empty:nTF
+\cs_new_eq:NN \IfHookEmptyT \hook_if_empty:nT
+\cs_new_eq:NN \IfHookEmptyF \hook_if_empty:nF
\cs_new_eq:NN \IfHookExistsTF \__hook_if_usable:nTF
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cs_new_protected:Npn \hook_disable:n
@@ -8628,7 +8642,7 @@ of this package available from CTAN}
{
\cs_generate_from_arg_count:cNnn
{ __socket_#1_plug_#2:w }
- \cs_new_protected:Npn
+ \cs_new:Npn
{ \int_use:c { c__socket_#1_args_int } }
{#3}
\seq_put_right:cn { l__socket_#1_plugs_seq } {#2}
@@ -8647,7 +8661,7 @@ of this package available from CTAN}
{
\cs_generate_from_arg_count:cNnn
{ __socket_#1_plug_#2:w }
- \cs_set_protected:Npn
+ \cs_set:Npn
{ \int_use:c { c__socket_#1_args_int } }
{#3}
\__socket_debug_term:n
@@ -8687,6 +8701,10 @@ of this package available from CTAN}
\cs_new_eq:NN \socket_use:nn \socket_use:nw % socket with one input
\cs_new_eq:NN \socket_use:nnn \socket_use:nw % socket with two inputs
\cs_new_eq:NN \socket_use:nnnn \socket_use:nw % socket with three inputs
+\cs_new:Npn \socket_use_expandable:nw #1 {
+ \use:c { __socket_#1_plug_ \str_use:c { l__socket_#1_plug_str } :w }
+}
+\cs_new_eq:NN \socket_use_expandable:n \socket_use_expandable:nw % socket with no inputs
\msg_new:nnnn { socket } { already-declared }
{ Socket~ '#1'~ already~ declared! }
@@ -9577,23 +9595,33 @@ of this package available from CTAN}
}
\cs_new_protected:Npn \__template_assign_variable:
{
- \__template_assign_variable:c
+ \exp_args:Ne \__template_assign_variable:n
{
- \__template_map_var_type: _
- \bool_if:NT \l__template_global_bool { g } set:Nn
+ \__template_map_var_type:
+ _
+ \bool_if:NT \l__template_global_bool { g }
+ set:N
}
}
-\cs_new_protected:Npn \__template_assign_variable:N #1
+\cs_new_protected:Npn \__template_assign_variable:n #1
{
- \__template_if_key_value:VT \l__template_value_tl
- { \__template_key_to_value: }
- \tl_put_right:Ne \l__template_assignments_tl
+ \__template_if_key_value:VTF \l__template_value_tl
{
- #1 \exp_not:V \l__template_var_tl
- { \exp_not:V \l__template_value_tl }
+ \__template_key_to_value:
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:c { #1 V } \exp_not:V \l__template_var_tl
+ \exp_not:V \l__template_value_tl
+ }
+ }
+ {
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:c { #1 n } \exp_not:V \l__template_var_tl
+ { \exp_not:V \l__template_value_tl }
+ }
}
}
-\cs_generate_variant:Nn \__template_assign_variable:N { c }
\cs_new_protected:Npn \__template_key_to_value:
{ \exp_after:wN \__template_key_to_value_auxi:w \l__template_value_tl }
\cs_new_protected:Npn \__template_key_to_value_auxi:w \KeyValue #1
@@ -10178,6 +10206,32 @@ of this package available from CTAN}
\let \IfDocumentMetadataTF \@firstoftwo
\DocumentMetadata
}
+\IncludeInRelease{2024/11/01}%
+ {\MakeLinkTarget}{Record target name for tagging support}%
+\ExplSyntaxOn
+\int_new:N\g__kernel_target_int
+\NewDocumentCommand\MakeLinkTarget{sO{}m}{%
+ \ifvmode
+ \special{}%
+ \else
+ \@savsf\spacefactor
+ \smash{}%
+ \spacefactor\@savsf
+ \fi
+ \IfBooleanTF {#1}
+ {
+ \tl_gset:Ne \@currentHref {#3}
+ }
+ {
+ \int_gincr:N\g__kernel_target_int
+ \tl_gset:Ne \@currentHref {target*.\int_use:N\g__kernel_target_int}
+ }
+ \UseTaggingSocket{recordtarget}
+ }
+\ExplSyntaxOff
+\EndIncludeInRelease
+\IncludeInRelease{2022/06/01}%
+ {\MakeLinkTarget}{Record target name for tagging support}%
\NewDocumentCommand\MakeLinkTarget{sO{}m}{%
\ifvmode
\special{}%
@@ -10186,7 +10240,8 @@ of this package available from CTAN}
\smash{}%
\spacefactor\@savsf
\fi}
-\NewDocumentCommand\LinkTargetOn{}{}
+\EndIncludeInRelease
+ \NewDocumentCommand\LinkTargetOn{}{}
\NewDocumentCommand\LinkTargetOff{}{}
\NewDocumentCommand\NextLinkTarget{m}{}
\IncludeInRelease{0000/00/00}{ltmeta}%
@@ -10346,6 +10401,20 @@ of this package available from CTAN}
\fi
\fi}%
\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+ {\addvspace}{drop unnecessary no-item error}%
+\protected\def\addvspace#1{%
+ \ifhmode \ifinner \@LRmoderr \else \par \fi \fi
+ \if@minipage\else
+ \ifdim \lastskip =\z@
+ \@vspace@calcify{#1}%
+ \else
+ \setlength\@tempskipb{#1}%
+ \@xaddvskip
+ \fi
+ \fi
+}
+\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
{\addvspace}{\addvspace calc support}%
\def\addvspace#1{%
@@ -10379,6 +10448,38 @@ of this package available from CTAN}
\@noitemerr
\fi}
\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+ {\addpenalty}{\addpenalty drop error}%
+\protected\def\addpenalty#1{%
+ \ifhmode \ifinner \@LRmoderr \else \par \fi \fi
+ \if@minipage
+ \else
+ \if@nobreak
+ \else
+ \ifdim\lastskip=\z@
+ \penalty#1\relax
+ \else
+ \@tempskipb\lastskip
+ \begingroup
+ \@tempskipa\@tempskipb
+ \advance \@tempskipb
+ \ifdim\prevdepth>\maxdepth\maxdepth\else
+ \ifdim \prevdepth = -\@m\p@ \z@ \else \prevdepth \fi
+ \fi
+ \vskip -\@tempskipb
+ \penalty#1%
+ \ifdim\@tempskipa=\@tempskipb
+ \else
+ \advance\@tempskipb -\@tempskipa
+ \vskip \@tempskipb
+ \fi
+ \vskip \@tempskipa
+ \endgroup
+ \fi
+ \fi
+ \fi
+}
+\EndIncludeInRelease
\IncludeInRelease{2015/01/01}%
{\addpenalty}{\addpenalty}%
\def\addpenalty#1{%
@@ -11315,6 +11416,54 @@ of this package available from CTAN}
{Reset nested counters}%%
\def\@stpelt#1{\global\csname c@#1\endcsname \z@}%
\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}{\@definecounter}
+ {provide theHfoo commands}%
+\def\@definecounter#1{\expandafter\newcount\csname c@#1\endcsname
+ \setcounter{#1}\z@
+ \global\expandafter\let\csname cl@#1\endcsname\@empty
+ \@addtoreset{#1}{@ckpt}%
+ \global\expandafter\let\csname p@#1\endcsname\@empty
+ \expandafter\xdef\csname theH#1\endcsname{%
+ \noexpand\the\noexpand\value{#1}}%
+ \expandafter
+ \ifx\csname the#1\endcsname\relax
+ \expandafter
+ \gdef\csname the#1\expandafter\endcsname\expandafter
+ {\expandafter\@arabic\csname c@#1\endcsname}%
+ \else
+ \@latex@warning{Command `\string\the#1' already
+ defined -- not changed}%
+ \fi}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\@definecounter}
+ {provide theHfoo commands}%%
+\def\@definecounter#1{\expandafter\newcount\csname c@#1\endcsname
+ \setcounter{#1}\z@
+ \global\expandafter\let\csname cl@#1\endcsname\@empty
+ \@addtoreset{#1}{@ckpt}%
+ \global\expandafter\let\csname p@#1\endcsname\@empty
+ \expandafter
+ \ifx\csname the#1\endcsname\relax
+ \expandafter
+ \gdef\csname the#1\expandafter\endcsname\expandafter
+ {\expandafter\@arabic\csname c@#1\endcsname}%
+ \else
+ \@latex@warning{Command `\string\the#1' already
+ defined -- not changed}%
+ \fi}
+\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}{\@addtoreset}
+ {provide theHfoo commands}%
+\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}%
+ \expandafter\xdef\csname theH#1\endcsname{%
+ \expandafter\noexpand\csname theH#2\endcsname.%
+ \noexpand\the\noexpand\value{#1}}%
+}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\@addtoreset}
+ {provide theHfoo commands}%%
+\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}}
+\EndIncludeInRelease
\IncludeInRelease{2018-04-01}
{\@removefromreset}{Add interfaces}%
\def\@removefromreset#1#2{%
@@ -11447,6 +11596,17 @@ of this package available from CTAN}
{\setlength}{Using \setlength with \dimen0}%
\def\setlength#1#2{#1#2\relax}
\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+ {\@settodim}{suspend tagging}%
+\def\@settodim#1#2#3{\setbox\@tempboxa\hbox
+ {{\SuspendTagging{\@settodim}#3\ResumeTagging{\@settodim}}}#2#1\@tempboxa
+ \setbox\@tempboxa\box\voidb@x}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@settodim}{suspend tagging}%
+\def\@settodim#1#2#3{\setbox\@tempboxa\hbox{{#3}}#2#1\@tempboxa
+ \setbox\@tempboxa\box\voidb@x}
+\EndIncludeInRelease
%%% From File: ltfssbas.dtx
%% Copyright (C) 1989-2002 Frank Mittelbach and Rainer Sch\"opf
\IncludeInRelease{2020/02/02}%
@@ -13807,45 +13967,6 @@ of this package available from CTAN}
\egroup
}
\def\textcompsubstdefault{\rmsubstdefault}
-\def\DeclareEncodingSubset#1#2{%
- \DeclareEncodingSubset@aux{#1}#2*\DeclareEncodingSubset@aux
-}
-\def\DeclareEncodingSubset@aux#1#2*#3\DeclareEncodingSubset@aux#4{%
- \expandafter\ifx\expandafter X\detokenize{#3}X%
- \@DeclareEncodingSubset{#1}{#2}{#4}%
- \else
- \@DeclareEncodingSubset{#1}{#2LF}{#4}%
- \@DeclareEncodingSubset{#1}{#2TLF}{#4}%
- \@DeclareEncodingSubset{#1}{#2OsF}{#4}%
- \@DeclareEncodingSubset{#1}{#2TOsF}{#4}%
- \fi
-}
-\def\@DeclareEncodingSubset#1#2#3{%
- \@ifundefined{#1:#2}%
- {\@font@info{Setting #2 sub-encoding to #1/#3}}%
- {\@font@info{Changing #2 sub-encoding to #1/#3}}%
- \global\@namedef{#1:#2}{#3}}
-\@onlypreamble\DeclareEncodingSubset
-\@onlypreamble\DeclareEncodingSubset@aux
-\@onlypreamble\@DeclareEncodingSubset
-
-
-\def\CheckEncodingSubset#1#2#3#4#5{%
- \ifnum #4>%
- \expandafter\ifx\csname #2:\f@family\endcsname\relax
- 0\csname #2:?\endcsname
- \else
- \csname #2:\f@family\endcsname
- \fi
- \relax
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {#1{#2}}{#3}%
- #5%
-}
-
\def\tc@errorwarn#1#2{\@latex@info{#1}}
\def\tc@subst#1{%
@@ -14162,11 +14283,7 @@ of this package available from CTAN}
\DeclareEncodingSubset{TS1}{?}{9}
\DeclareEncodingSubset{TS1}{ccr} {0}
\DeclareEncodingSubset{TS1}{cmbr} {0}
-\DeclareEncodingSubset{TS1}{cmr} {0}
-\DeclareEncodingSubset{TS1}{cmss} {0}
\DeclareEncodingSubset{TS1}{cmtl} {0}
-\DeclareEncodingSubset{TS1}{cmtt} {0}
-\DeclareEncodingSubset{TS1}{cmvtt} {0}
\DeclareEncodingSubset{TS1}{pxr} {0}
\DeclareEncodingSubset{TS1}{pxss} {0}
\DeclareEncodingSubset{TS1}{pxtt} {0}
@@ -14664,11 +14781,42 @@ of this package available from CTAN}
\IncludeInRelease{2022/06/01}%
{\Ref}{Add starred version}%
\def\@currentcounter{}
-\def\refstepcounter#1{\stepcounter{#1}%
+\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+ {\@currentHref}{set theHcounter representation}%
+\NewSocket{refstepcounter}{1}
+\NewSocket{refstepcounter/target}{1}
+\NewSocketPlug{refstepcounter/target}{kernel}
+ {\xdef\@currentHref {#1.\csname theH#1\endcsname}}%
+\AssignSocketPlug{refstepcounter/target}{kernel}
+\def\refstepcounter#1{%
+ \UseSocket{refstepcounter}{%
+ \stepcounter{#1}%
\edef\@currentcounter{#1}%
\protected@edef\@currentlabel
{\csname p@#1\expandafter\endcsname\csname the#1\endcsname}%
+ \UseSocket{refstepcounter/target}{#1}%
+ \UseTaggingSocket{recordtarget}%
+ }%
}
+\def\@kernel@refstepcounter#1{%
+ \UseSocket{refstepcounter}{%
+ \stepcounter{#1}%
+ \edef\@currentcounter{#1}%
+ \protected@edef\@currentlabel
+ {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}}}%
+\EndIncludeInRelease
+\IncludeInRelease{2022/06/01}%
+ {\@currentHref}{set theHcounter representation}%
+\def\refstepcounter#1{\stepcounter{#1}%
+ \edef\@currentcounter{#1}%
+ \protected@edef\@currentlabel
+ {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}%
+}
+\let\@kernel@refstepcounter\refstepcounter
+\EndIncludeInRelease
+\IncludeInRelease{2022/06/01}%
+ {\Ref}{Add starred version}%
\def\labelformat#1{\expandafter\def\csname p@#1\endcsname##1}
\def\@kernel@Ref#1{\protected@edef\@tempa{\@kernel@ref{#1}}%
\expandafter\MakeUppercase\@tempa}
@@ -14774,14 +14922,11 @@ of this package available from CTAN}
\cs_generate_variant:Nn \property_record:nn { nV , ee, oo }
\cs_new_protected:Npn \__property_record:nn #1#2
{
- \legacy_if:nT { @filesw }
+ \protected@write \@auxout {}
{
- \protected@write \@auxout {}
- {
- \token_to_str:N \new@label@record
- {#1}
- { \clist_map_function:nN {#2} \__property_record_value:n }
- }
+ \token_to_str:N \new@label@record
+ {#1}
+ { \clist_map_function:nN {#2} \__property_record_value:n }
}
}
\cs_generate_variant:Nn \__property_record:nn { e }
@@ -14887,7 +15032,7 @@ of this package available from CTAN}
\prg_return_false:
}
}
-\prg_generate_conditional_variant:Nnn \property_if_exist:n {e} {TF}
+\prg_generate_conditional_variant:Nnn \property_if_exist:n {e} { p , T , F, TF }
\cs_new_eq:NN \IfPropertyExistsTF \property_if_exist:eTF
\cs_new:Npn \IfPropertyExistsT #1#2 {\property_if_exist:eTF {#1}{#2}{} }
\cs_new:Npn \IfPropertyExistsF #1 {\property_if_exist:eTF {#1}{} }
@@ -14902,10 +15047,10 @@ of this package available from CTAN}
\prg_return_false:
}
}
-\prg_generate_conditional_variant:Nnn \property_if_recorded:n {e} {TF}
+\prg_generate_conditional_variant:Nnn \property_if_recorded:n {e} { p , T , F, TF }
\cs_new_eq:NN \IfLabelExistsTF \property_if_recorded:eTF
-\cs_new:Npn \IfLabelExistsT #1#2 {\property_if_exist:eTF {#1}{#2}{} }
-\cs_new:Npn \IfLabelExistsF #1 {\property_if_exist:eTF {#1}{} }
+\cs_new:Npn \IfLabelExistsT #1#2 {\property_if_recorded:eTF {#1}{#2}{} }
+\cs_new:Npn \IfLabelExistsF #1 {\property_if_recorded:eTF {#1}{} }
\prg_new_conditional:Npnn \property_if_recorded:nn #1#2 { p , T , F, TF }
% #1 label #2 property
{
@@ -14917,8 +15062,10 @@ of this package available from CTAN}
\prg_return_false:
}
}
-\prg_generate_conditional_variant:Nnn \property_if_recorded:nn {ee} {TF}
+\prg_generate_conditional_variant:Nnn \property_if_recorded:nn {ee} { p , T , F, TF }
\cs_new_eq:NN \IfPropertyRecordedTF \property_if_recorded:eeTF
+\cs_new:Npn \IfPropertyRecordedT #1#2#3 { \property_if_recorded:eeTF {#1}{#2}{#3}{} }
+\cs_new:Npn \IfPropertyRecordedF #1#2#3 { \property_if_recorded:eeTF {#1}{#2}{}{#3} }
\cs_new_protected:Npn \property_ref_undefined_warn:
{
\flag_if_raised:nT { l__property_ref_flag }
@@ -15222,7 +15369,7 @@ of this package available from CTAN}
\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
{\begin}{Use hook system}%
-\DeclareRobustCommand*\begin[1]{%
+\protected\def\begin#1{%
\UseHook{env/#1/before}%
\@ifundefined{#1}%
{\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}%
@@ -17330,6 +17477,9 @@ of this package available from CTAN}
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmarks.dtx
+
+
+
\ExplSyntaxOn
\NewModuleRelease{2022/06/01}{ltmarks}
{Marks~handling}
@@ -17348,43 +17498,42 @@ of this package available from CTAN}
{
\exp_args:Nc \newmarks {c__mark_class_ #1 _mark}
\seq_gput_right:Nn \g__mark_classes_seq {#1}
- \tl_new:c { g__mark_page_top_ #1 _tl }
- \tl_new:c { g__mark_page_first_ #1 _tl }
- \tl_new:c { g__mark_page_last_ #1 _tl }
- \tl_new:c { g__mark_previous-page_top_ #1 _tl }
- \tl_new:c { g__mark_previous-page_first_ #1 _tl }
- \tl_new:c { g__mark_previous-page_last_ #1 _tl }
- \tl_new:c { g__mark_column_top_ #1 _tl }
- \tl_new:c { g__mark_column_first_ #1 _tl }
- \tl_new:c { g__mark_column_last_ #1 _tl }
- \tl_new:c { g__mark_previous-column_top_ #1 _tl }
- \tl_new:c { g__mark_previous-column_first_ #1 _tl }
- \tl_new:c { g__mark_previous-column_last_ #1 _tl }
- \tl_new:c { g__mark_first-column_top_ #1 _tl }
- \tl_new:c { g__mark_first-column_first_ #1 _tl }
- \tl_new:c { g__mark_first-column_last_ #1 _tl }
- \tl_new:c { g__mark_last-column_top_ #1 _tl }
- \tl_new:c { g__mark_last-column_first_ #1 _tl }
- \tl_new:c { g__mark_last-column_last_ #1 _tl }
- \tl_set:cn { g__mark_page_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_page_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_page_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-page_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-page_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-page_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_column_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_column_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_column_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-column_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-column_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_previous-column_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_first-column_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_first-column_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_first-column_last_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_last-column_top_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_last-column_first_ #1 _tl }{ \__mark_id:n{0} }
- \tl_set:cn { g__mark_last-column_last_ #1 _tl }{ \__mark_id:n{0} }
+ \__mark_init_region:nn {page}{#1}
+ \__mark_init_region:nn {previous-page}{#1}
+ \__mark_init_region:nn {column}{#1}
+ \__mark_init_region:nn {previous-column}{#1}
+ \__mark_init_region:nn {first-column}{#1}
+ \__mark_init_region:nn {last-column}{#1}
+ \__mark_init_region:nn {mcol-1}{#1}
+ \__mark_init_region:nn {mcol-2}{#1}
+ \__mark_init_region:nn {mcol-3}{#1}
+ \__mark_init_region:nn {mcol-4}{#1}
+ \__mark_init_region:nn {mcol-5}{#1}
+ \__mark_init_region:nn {mcol-6}{#1}
+ \__mark_init_region:nn {mcol-7}{#1}
+ \__mark_init_region:nn {mcol-8}{#1}
+ \__mark_init_region:nn {mcol-9}{#1}
+ \__mark_init_region:nn {mcol-10}{#1}
+ \__mark_init_region:nn {mcol-11}{#1}
+ \__mark_init_region:nn {mcol-12}{#1}
+ \__mark_init_region:nn {mcol-13}{#1}
+ \__mark_init_region:nn {mcol-14}{#1}
+ \__mark_init_region:nn {mcol-15}{#1}
+ \__mark_init_region:nn {mcol-16}{#1}
+ \__mark_init_region:nn {mcol-17}{#1}
+ \__mark_init_region:nn {mcol-18}{#1}
+ \__mark_init_region:nn {mcol-19}{#1}
+ \__mark_init_region:nn {mcol-20}{#1}
+}
+\cs_new_protected:Npn \__mark_init_region:nn #1 #2 {
+ \tl_new:c { g__mark_#1_top_ #2 _tl }
+ \tl_new:c { g__mark_#1_first_ #2 _tl }
+ \tl_new:c { g__mark_#1_last_ #2 _tl }
+ \tl_set_eq:cN { g__mark_#1_top_ #2 _tl } \c__mark_empty_tl
+ \tl_set_eq:cN { g__mark_#1_first_ #2 _tl } \c__mark_empty_tl
+ \tl_set_eq:cN { g__mark_#1_last_ #2 _tl } \c__mark_empty_tl
}
+\tl_const:Nn \c__mark_empty_tl { \__mark_value:nn{0}{} }
\box_new:N \l__mark_box
\box_new:N \l__mark_ii_box
\tl_new:N \g__mark_tmp_tl
@@ -17436,13 +17585,13 @@ of this package available from CTAN}
\exp_not:N \l__mark_saved_parameters_tl
}
\tl_new:N \l__mark_saved_parameters_tl
-\cs_new_protected:Npn \__mark_update_structure_from_material:nn #1#2 {
+\cs_new_protected:Npn \mark_update_structure_from_material:nn #1#2 {
\__mark_extract_and_handle_marks:nn
{ \__mark_update_structure_from_splitmarks:n {#1} }
{ #2 }
}
\cs_new_protected:Npn \__mark_update_structure_from_splitmarks:n #1 {
- \__mark_update_structure_alias:nn { previous-#1 } {#1}
+ \mark_copy_structure:nn { previous-#1 } {#1}
\seq_map_inline:Nn \g__mark_classes_seq
{
\tl_gset_eq:Nc \g__mark_new_top_tl { g__mark_#1_last_##1_tl }
@@ -17466,9 +17615,9 @@ of this package available from CTAN}
}
}
}
-\cs_new_protected:Npn \__mark_get_marks_for_reinsertion:nNN #1#2#3 {
- \tl_clear:N \g__mark_first_marks_tl
- \tl_clear:N \g__mark_last_marks_tl
+\cs_new_protected:Npn \mark_get_marks_for_reinsertion:nNN #1#2#3 {
+ \tl_gclear:N \g__mark_first_marks_tl
+ \tl_gclear:N \g__mark_last_marks_tl
\__mark_extract_and_handle_marks:nn
\__mark_get_from_splitmarks:
{ #1 }
@@ -17486,12 +17635,14 @@ of this package available from CTAN}
}
{
\tl_gput_right:Ne \g__mark_last_marks_tl
- { \mark_insert:nn {##1} { \g__mark_tmp_tl } }
+ { \mark_insert:nn {##1} { \__mark_drop_id:o { \g__mark_tmp_tl } } }
\tl_gput_right:Ne \g__mark_first_marks_tl
{ \mark_insert:nn {##1}
{
- \tex_splitfirstmarks:D
- \use:c { c__mark_class_##1_mark }
+ \__mark_drop_id:o {
+ \tex_splitfirstmarks:D
+ \use:c { c__mark_class_##1_mark }
+ }
}
}
}
@@ -17499,7 +17650,7 @@ of this package available from CTAN}
}
\tl_new:N \g__mark_first_marks_tl
\tl_new:N \g__mark_last_marks_tl
-\cs_new_protected:Npn \__mark_update_structure_alias:nn #1#2 {
+\cs_new_protected:Npn \mark_copy_structure:nn #1#2 {
\seq_map_inline:Nn \g__mark_classes_seq
{
\tl_gset_eq:cc { g__mark_ #1 _top_ ##1 _tl }
@@ -17510,16 +17661,27 @@ of this package available from CTAN}
{ g__mark_ #2 _last_ ##1 _tl }
}
}
-\cs_new_protected:Npn \__mark_update_structure_to_err:n #1 {
+\cs_new_protected:Npn \mark_clear_structure:n #1 {
+ \seq_map_inline:Nn \g__mark_classes_seq
+ {
+ \tl_gset_eq:cN { g__mark_ #1 _top_ ##1 _tl }
+ \c__mark_empty_tl
+ \tl_gset_eq:cN { g__mark_ #1 _first_ ##1 _tl }
+ \c__mark_empty_tl
+ \tl_gset_eq:cN { g__mark_ #1 _last_ ##1 _tl }
+ \c__mark_empty_tl
+ }
+}
+\cs_new_protected:Npn \mark_set_structure_to_err:n #1 {
\seq_map_inline:Nn \g__mark_classes_seq
{
- \tl_gset:cn { g__mark_ #1 _top_ ##1 _tl } { \__mark_error:n {#1} }
- \tl_gset:cn { g__mark_ #1 _first_ ##1 _tl } { \__mark_error:n {#1} }
- \tl_gset:cn { g__mark_ #1 _last_ ##1 _tl } { \__mark_error:n {#1} }
+ \tl_gset:ce { g__mark_ #1 _top_ ##1 _tl } { \__mark_value:nn{?}{\__mark_error:nn {#1}{?} }}
+ \tl_gset:ce { g__mark_ #1 _first_ ##1 _tl } { \__mark_value:nn{?}{\__mark_error:nn {#1}{?} }}
+ \tl_gset:ce { g__mark_ #1 _last_ ##1 _tl } { \__mark_value:nn{?}{\__mark_error:nn {#1}{?} }}
}
}
-\cs_new_protected:Npn \__mark_error:n #1 {
- \msg_error:nnn { mark } { invalid-use } {#1}
+\cs_new_protected:Npn \__mark_error:nn #1#2 {
+ \msg_error:nnnn { mark } { invalid-use } {#1} {#2}
}
\cs_new_protected:Npn \mark_insert:nn #1#2
{
@@ -17530,8 +17692,7 @@ of this package available from CTAN}
\hook_use:n { insertmark }
\unrestored@protected@xdef \g__mark_tmp_tl
{
- \__mark_id:n{ \int_use:N\g__mark_int }
- #2
+ \__mark_value:nn{ \int_use:N\g__mark_int }{#2}
}
\tex_marks:D \use:c { c__mark_class_ #1 _mark }
{
@@ -17545,7 +17706,7 @@ of this package available from CTAN}
{ \tl_to_str:n {#1} }
}
}
-\cs_new_protected:Npn \__mark_id:n #1 { }
+\cs_new_protected:Npn \__mark_value:nn #1#2 { #2 }
\int_new:N \g__mark_int
\cs_new:Npn \@kernel@before@insertmark {
\cs_set_eq:NN \label \scan_stop:
@@ -17557,11 +17718,16 @@ of this package available from CTAN}
}
\hook_new:n {insertmark}
-\cs_new:Npn \mark_use_first:nn #1#2 { \__mark_use:v { g__mark_#1_first_#2_tl } }
-\cs_new:Npn \mark_use_last:nn #1#2 { \__mark_use:v { g__mark_#1_last_#2_tl } }
-\cs_new:Npn \mark_use_top:nn #1#2 { \__mark_use:v { g__mark_#1_top_#2_tl } }
-\cs_new:Npn \__mark_use:n #1 { \exp_not:o { \use_none:nn #1 } }
-\cs_generate_variant:Nn \__mark_use:n { v }
+\cs_new:Npn \mark_use_first:nn #1#2 { \__mark_use_check:nnn { g__mark_#1_first_#2_tl } {#1} {#2} }
+\cs_new:Npn \mark_use_last:nn #1#2 { \__mark_use_check:nnn { g__mark_#1_last_#2_tl } {#1} {#2} }
+\cs_new:Npn \mark_use_top:nn #1#2 { \__mark_use_check:nnn { g__mark_#1_top_#2_tl } {#1} {#2} }
+\cs_new:Npn \__mark_use_check:nnn #1#2#3 {
+ \tl_if_eq:cNTF {#1} \relax
+ { \__mark_error:nn {#2} {#3} }
+ { \__mark_drop_id:v {#1} }
+}
+\cs_new:Npn \__mark_drop_id:n #1 { \exp_not:o { #1 } }
+\cs_generate_variant:Nn \__mark_drop_id:n { o, v }
\prg_new_conditional:Npnn \mark_if_eq:nnnn #1#2#3#4 { T , F , TF }
{
\tl_if_eq:ccTF { g__mark_ #1 _#3_ #2 _tl }
@@ -17592,13 +17758,14 @@ of this package available from CTAN}
LaTeX~was~asked~to~manipulate~a~mark~of~class~'#1',~
but~this~class~of~marks~does~not~exist.
}
-
\msg_new:nnnn { mark } { invalid-use }
- { Mark~region~'#1'~not ~usable }
+ { Mark~region~'#1'~not~usable~or~class~'#2'~unknown }
{
\c__msg_coding_error_text_tl
- The~region~'#1'~can~only~be~used~after~
- all~columns~have~been~assembled.
+ The~region~'#1'~is~either~not~known~or~data~for~it~
+ still~needs~to~be~assembled,~e.g.,~last-column~
+ while~building~the~first-column.~
+ Also~possible:~the~class~namne~'#2'~is~misspelled.
\c__msg_return_text_tl
}
\bool_new:N \g__mark_debug_bool
@@ -17620,7 +17787,7 @@ of this package available from CTAN}
}
\cs_new_eq:NN \DebugMarksOn \mark_debug_on:
\cs_new_eq:NN \DebugMarksOff \mark_debug_off:
-\cs_new_protected:Npn \ShowMarksAt #1 {
+\NewDocumentCommand \ShowMarksAt {m O{4} } {
}
\cs_new_eq:NN \NewMarkClass \mark_new_class:n
\@onlypreamble \NewMarkClass
@@ -17634,38 +17801,44 @@ of this package available from CTAN}
\NewExpandableDocumentCommand \IfMarksEqualTF {O{page}mmm} {
\mark_if_eq:nnnnTF {#1}{#2}{#3}{#4}
}
+\NewExpandableDocumentCommand \IfMarksEqualT {O{page}mmm} {
+ \mark_if_eq:nnnnT {#1}{#2}{#3}{#4}
+}
+\NewExpandableDocumentCommand \IfMarksEqualF {O{page}mmm} {
+ \mark_if_eq:nnnnF {#1}{#2}{#3}{#4}
+}
\cs_new_protected:Npn \__mark_update_singlecol_structures: {
\box_if_vertical:NTF \@outputbox
{
- \__mark_update_structure_from_material:nn {page}
+ \mark_update_structure_from_material:nn {page}
{ \vbox_unpack:N \@outputbox }
}
{
- \__mark_update_structure_from_material:nn {page}
+ \mark_update_structure_from_material:nn {page}
{ \hbox_unpack:N \@outputbox }
}
- \__mark_update_structure_alias:nn {previous-column}{previous-page}
- \__mark_update_structure_alias:nn {column}{page}
- \__mark_update_structure_alias:nn {first-column}{page}
- \__mark_update_structure_alias:nn {last-column}{page}
+ \mark_copy_structure:nn {previous-column}{previous-page}
+ \mark_copy_structure:nn {column}{page}
+ \mark_copy_structure:nn {first-column}{page}
+ \mark_copy_structure:nn {last-column}{page}
}
\cs_new_protected:Npn \__mark_update_dblcol_structures: {
\box_if_vertical:NTF \@outputbox
{
- \__mark_update_structure_from_material:nn {column}
+ \mark_update_structure_from_material:nn {column}
{ \vbox_unpack:N \@outputbox }
}
{
- \__mark_update_structure_from_material:nn {column}
+ \mark_update_structure_from_material:nn {column}
{ \hbox_unpack:N \@outputbox }
}
\legacy_if:nTF {@firstcolumn}
{
- \__mark_update_structure_alias:nn {first-column}{column}
- \__mark_update_structure_to_err:n {last-column}
+ \mark_copy_structure:nn {first-column}{column}
+ \mark_set_structure_to_err:n {last-column}
}
{
- \__mark_update_structure_alias:nn {last-column}{column}
+ \mark_copy_structure:nn {last-column}{column}
\seq_map_inline:Nn \g__mark_classes_seq
{
\tl_gset_eq:cc { g__mark_previous-page_top_ ##1 _tl }
@@ -17692,6 +17865,7 @@ of this package available from CTAN}
}
}
}
+
\cs_new_eq:NN \@expl@@@mark@update@singlecol@structures@@
\__mark_update_singlecol_structures:
\cs_new_eq:NN \@expl@@@mark@update@dblcol@structures@@
@@ -17714,6 +17888,20 @@ of this package available from CTAN}
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% From File: ltpage.dtx
+\IncludeInRelease{2025/06/01}%
+ {\markboth}{Drop legacy mark support}%
+\ExplSyntaxOn
+\DeclareRobustCommand*\markboth[2]{%
+ \mark_insert:nn{2e-left}{#1}
+ \mark_insert:nn{2e-right}{#2}
+ \tl_if_empty:nF{#2}{ \mark_insert:nn{2e-right-nonempty}{#2} }
+}
+\DeclareRobustCommand*\markright[1]{%
+ \mark_insert:nn{2e-right}{#1}
+ \tl_if_empty:nF{#1}{ \mark_insert:nn{2e-right-nonempty}{#1} }
+}
+\ExplSyntaxOff
+\EndIncludeInRelease
\IncludeInRelease{2022/06/01}%
{\markboth}{New mark support}%
\ExplSyntaxOn
@@ -17764,9 +17952,41 @@ of this package available from CTAN}
\IncludeInRelease{0000/00/00}%
{\markboth}{Make commands robust}%
-\kernel@make@fragile\markboth
-\kernel@make@fragile\markright
+%\kernel@make@fragile\markboth
+%\kernel@make@fragile\markright
+\def\markboth#1#2{%
+ \begingroup
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \unrestored@protected@xdef\@themark {{#1}{#2}}%
+ \@temptokena \expandafter{\@themark}%
+ \mark{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+\def\markright#1{%
+ \begingroup
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \expandafter\@markright\@themark {#1}%
+ \@temptokena \expandafter{\@themark}%
+ \mark{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+
+\EndIncludeInRelease
+\IncludeInRelease{2025/06/01}%
+ {\leftmark}{Use new mark mechanism}%
+\ExplSyntaxOn
+\cs_new:Npn \leftmark {\mark_use_last:nn{page}{2e-left}}
+\cs_new:Npn \rightmark {\mark_use_first:nn{page}{2e-right}}
+\ExplSyntaxOff
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\leftmark}{Use new mark mechanism}%
+\def\leftmark{\expandafter\@leftmark\botmark\@empty\@empty}
+\def\rightmark{\expandafter\@rightmark\firstmark\@empty\@empty}
+\def\@themark{{}{}}
+\def\@markright#1#2#3{\@temptokena {#1}%
+\unrestored@protected@xdef\@themark{{\the\@temptokena}{#3}}}
\EndIncludeInRelease
%%% From File: ltclass.dtx
@@ -18144,7 +18364,9 @@ of this package available from CTAN}
\EndIncludeInRelease
\IncludeInRelease{2021/06/01}%
{\OptionNotUsed}{filter unused option list}%
-\def\@remove@eq@value#1=#2\@nil{#1}
+\ExplSyntaxOn
+\def\@remove@eq@value#1=#2\@nil{\tl_trim_spaces:n{#1}}
+\ExplSyntaxOff
\def\OptionNotUsed{%
\ifx\@currext\@clsextension
\xdef\@unusedoptionlist{%
@@ -20123,6 +20345,63 @@ of this package available from CTAN}
\fi
}%
\EndIncludeInRelease
+\IncludeInRelease{2025/06/01}%
+ {\@outputpage}{Use new mark mechanism}%
+\def\@outputpage{%
+\begingroup
+ \let \protect \noexpand
+ \language\document@default@language
+ \@resetactivechars
+ \global\let\@@if@newlist\if@newlist
+ \global\@newlistfalse
+ \@parboxrestore
+ \shipout \vbox{%
+ \set@typeset@protect
+ \aftergroup \endgroup
+ \aftergroup \set@typeset@protect
+ \if@specialpage
+ \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
+ \fi
+ \if@twoside
+ \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
+ \let\@themargin\oddsidemargin
+ \else \let\@thehead\@evenhead
+ \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
+ \fi
+ \fi
+ \reset@font
+ \normalsize
+ \normalsfcodes
+ \let\label\@gobble
+ \let\index\@gobble
+ \let\glossary\@gobble
+ \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
+ \@begindvi
+ \vskip \topmargin
+ \moveright\@themargin \vbox {%
+ \setbox\@tempboxa \vbox to\headheight{%
+ \vfil
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\@thehead}%
+ \color@endbox
+ }%
+ \dp\@tempboxa \z@
+ \box\@tempboxa
+ \vskip \headsep
+ \box\@outputbox
+ \baselineskip \footskip
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\@thefoot}%
+ \color@endbox
+ }%
+ }%
+ \global\let\if@newlist\@@if@newlist
+ \global \@colht \textheight
+ \stepcounter{page}%
+}
+\EndIncludeInRelease
\IncludeInRelease{2017/04/15}%
{\@outputpage}{Reset language for hyphenation}%
\def\@outputpage{%
@@ -20696,6 +20975,31 @@ of this package available from CTAN}
\endgroup
}
\EndIncludeInRelease
+\IncludeInRelease{2025/06/01}%
+ {\@outputdblcol}{Use new mark mechanism}%
+\def\@outputdblcol{%
+ \if@firstcolumn
+ \global\@firstcolumnfalse
+ \global\setbox\@leftcolumn\copy\@outputbox
+ \else
+ \global\@firstcolumntrue
+ \setbox\@outputbox\vbox{%
+ \hb@xt@\textwidth{%
+ \hb@xt@\columnwidth{\box\@leftcolumn \hss}%
+ \hfil
+ {\normalcolor\vrule \@width\columnseprule}%
+ \hfil
+ \hb@xt@\columnwidth{\box\@outputbox \hss}}}%
+ \@combinedblfloats
+ \@outputpage
+ \begingroup
+ \@dblfloatplacement
+ \@startdblcolumn
+ \@whilesw\if@fcolmade \fi{\@outputpage
+ \@startdblcolumn}%
+ \endgroup
+ \fi}%
+\EndIncludeInRelease
\IncludeInRelease{2015/01/01}%
{\@outputdblcol}{2 column marks}%
\def\@outputdblcol{%
@@ -20735,7 +21039,7 @@ of this package available from CTAN}
\@whilesw\if@fcolmade \fi{\@outputpage
\@startdblcolumn}%
\endgroup
- \fi}%
+ \fi}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
{\@outputdblcol}{2 column marks}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd b/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd
index 7345df2bb09..bf6ad9d0a7c 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omlcmm.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OML}{cmm}{\skewchar\font127 }
\DeclareFontShape{OML}{cmm}{m}{it}%
{<5><6><7><8><9>gen*cmmi%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd b/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd
index 562a6d51708..98b20aedd0d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omlcmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OML}{cmr}{\skewchar\font127 }
\DeclareFontShape{OML}{cmr}{m}{n}%
{<->ssub*cmm/m/it}{}
diff --git a/Master/texmf-dist/tex/latex-dev/base/omlenc.def b/Master/texmf-dist/tex/latex-dev/base/omlenc.def
index ecc46f89f5c..e1df971f089 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omlenc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/omlenc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{omlenc.def}
- [2021/04/29 v2.0v
+ [2024/11/06 v2.1b
Standard LaTeX file]
\DeclareFontEncoding{OML}{}{}
\DeclareTextSymbol{\textless}{OML}{`\<}
diff --git a/Master/texmf-dist/tex/latex-dev/base/omscmr.fd b/Master/texmf-dist/tex/latex-dev/base/omscmr.fd
index 610e916200b..707ace394f1 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omscmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omscmr.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omscmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OMS}{cmr}{\skewchar\font48 }
\DeclareFontShape{OMS}{cmr}{m}{n}%
{<->ssub*cmsy/m/n}{}
diff --git a/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd b/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd
index 8ec4eb09303..b4389f2e858 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omscmsy.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OMS}{cmsy}{\skewchar\font48 }
\DeclareFontShape{OMS}{cmsy}{m}{n}{%
<5><6><7><8><9><10>gen*cmsy%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omsenc.def b/Master/texmf-dist/tex/latex-dev/base/omsenc.def
index 13ab8351bca..6bb512e53f7 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omsenc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/omsenc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{omsenc.def}
- [2021/04/29 v2.0v
+ [2024/11/06 v2.1b
Standard LaTeX file]
\DeclareFontEncoding{OMS}{}{}
\DeclareTextSymbol{\textasteriskcentered}{OMS}{3} % "03
diff --git a/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd b/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd
index 31a4753ff62..5e32aebc6db 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omxcmex.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OMX}{cmex}{}
\DeclareFontShape{OMX}{cmex}{m}{n}{%
<->sfixed*cmex10%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd
index 254da740bf8..935344838ad 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmdh.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmdh}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmdh}{m}{n}{%
<10>cmdunh10%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd
index 0276b7bde23..77373fbb58e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmfib.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmfib}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmfib}{m}{n}{%
<8>cmfib8%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd
index 33bb6d1b126..bd4d21551d5 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmfr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmfr}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmfr}{m}{n}{%
<10>cmff10%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd
index 45f862af9b4..2393e7caedd 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmr}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmr}{m}{n}%
{<5><6><7><8><9><10><12>gen*cmr%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd
index ad2de5a308f..6c724c2effe 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmss.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmss}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmss}{m}{n}
{%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd
index 54f383b51c7..2716074395a 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmtt}{\hyphenchar \font\m@ne}
\DeclareFontShape{OT1}{cmtt}{m}{n}
{%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd
index bf7b2c9d401..b787fea9dfc 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmvtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmvtt}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmvtt}{m}{n}%
{%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1enc.def b/Master/texmf-dist/tex/latex-dev/base/ot1enc.def
index bede1dd19d5..634b28158f3 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1enc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1enc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{ot1enc.def}
- [2021/04/29 v2.0v
+ [2024/11/06 v2.1b
Standard LaTeX file]
\DeclareFontEncoding{OT1}{}{}
\DeclareTextAccent{\"}{OT1}{127}
@@ -117,6 +117,7 @@
\DeclareTextCompositeCommand{\'}{OT1}{i}{\@tabacckludge'\i}
\DeclareTextCompositeCommand{\^}{OT1}{i}{\^\i}
\DeclareTextCompositeCommand{\"}{OT1}{i}{\"\i}
+\DeclareTextCompositeCommand{\=}{OT1}{i}{\=\i}
\ifx\textcommaabove\@undefined\else
\DeclareTextCompositeCommand{\c}{OT1}{g}{\textcommaabove{g}}
\fi
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot4enc.def b/Master/texmf-dist/tex/latex-dev/base/ot4enc.def
index a15bb8af874..75ab485f172 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot4enc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/ot4enc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{ot4enc.def}
- [2021/04/29 v2.0v
+ [2024/11/06 v2.1b
Standard LaTeX file]
\DeclareFontEncoding{OT4}{}{}
\DeclareFontSubstitution{OT4}{cmr}{m}{n}
diff --git a/Master/texmf-dist/tex/latex-dev/base/preload.cfg b/Master/texmf-dist/tex/latex-dev/base/preload.cfg
index e9db6963487..2c128ff0719 100644
--- a/Master/texmf-dist/tex/latex-dev/base/preload.cfg
+++ b/Master/texmf-dist/tex/latex-dev/base/preload.cfg
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{preload.cfg}
- [2024/07/08 v3.0j LaTeX Kernel
+ [2024/11/19 v3.0l LaTeX Kernel
(Uncustomized preload font setup)
]
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty b/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty
index faeb09a2147..4a9ae8833df 100644
--- a/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{shortvrb}
- [2024/06/29 v3.0q
+ [2024/10/23 v3.0q
Standard LaTeX documentation package V3 (FMi)]
%%
%% Package `doc' to use with LaTeX 2e
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd
index 76b5eb1a106..3ae4a12f0a0 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmdh.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd
index 8fe21d2fda0..04c5389628f 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmfib.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd
index 469b8d0d99a..1278f2b65ab 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmfr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd
index ddebbdf6959..698686aa6e8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd
index 5294fb74d91..5bc389b29aa 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmss.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@ssfamily}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8>#50800%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd
index ebd77a12951..044c63a222d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@ttfamily}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8>#50800%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd
index 4b22b9e7f1a..ffdbeade0c7 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmvtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@ttfamily}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8>#50800%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1enc.def b/Master/texmf-dist/tex/latex-dev/base/t1enc.def
index a46de580623..6178c89a96c 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1enc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/t1enc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{t1enc.def}
- [2021/04/29 v2.0v
+ [2024/11/06 v2.1b
Standard LaTeX file]
\DeclareFontEncoding{T1}{}{}
\DeclareTextAccent{\`}{T1}{0}
@@ -291,6 +291,7 @@
\DeclareTextCompositeCommand{\c}{T1}{R}{\textcommabelow{R}}
\DeclareTextCompositeCommand{\c}{T1}{r}{\textcommabelow{r}}
\fi
+\DeclareTextCompositeCommand{\=}{T1}{\i}{\=\i}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty b/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty
index b611d19a427..3108e802e95 100644
--- a/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty
@@ -64,7 +64,6 @@
{\PackageInfo{textcomp}{Setting #2 sub-encoding to #1/#3}}%
{\PackageInfo{textcomp}{Changing #2 sub-encoding to #1/#3}}%
\@namedef{#1:#2}{#3}}
-\@onlypreamble\DeclareEncodingSubset
\newif\iftc@forced \tc@forcedfalse
\DeclareOption{full}{\DeclareEncodingSubset{TS1}{?}{0}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd
index 8564159c267..fb97c97abeb 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ts1cmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
@@ -60,6 +60,7 @@
\EC@family{TS1}{cmr}{bx}{it}{tcbi}
\EC@family{TS1}{cmr}{bx}{sl}{tcbl}
\EC@family{TS1}{cmr}{m}{ui}{tcui}
+\DeclareEncodingSubset{TS1}{cmr}{0}
\endinput
%%
%% End of file `ts1cmr.fd'.
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd
index bce10af852e..98a5d38e738 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ts1cmss.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
@@ -58,6 +58,7 @@
\EC@family{TS1}{cmss}{bx}{n}{tcsx}
\EC@family{TS1}{cmss}{bx}{it}{tcso}
\EC@family{TS1}{cmss}{bx}{sl}{tcso}
+\DeclareEncodingSubset{TS1}{cmss}{0}
\endinput
%%
%% End of file `ts1cmss.fd'.
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd
index fc1d3eae689..1d6ae48c351 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ts1cmtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@ttfamily}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8>#50800%
@@ -56,6 +56,7 @@
\EC@ttfamily{TS1}{cmtt}{m}{n}{tctt}
\EC@ttfamily{TS1}{cmtt}{m}{sl}{tcst}
\EC@ttfamily{TS1}{cmtt}{m}{it}{tcit}
+\DeclareEncodingSubset{TS1}{cmtt}{0}
\endinput
%%
%% End of file `ts1cmtt.fd'.
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd
index 02fa3968abf..fce8290fb12 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ts1cmvtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@ttfamily}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8>#50800%
@@ -55,6 +55,7 @@
\DeclareFontFamily{TS1}{cmvtt}{}
\EC@ttfamily{TS1}{cmvtt}{m}{n}{tcvt}
\EC@ttfamily{TS1}{cmvtt}{m}{it}{tcvi}
+\DeclareEncodingSubset{TS1}{cmvtt}{0}
\endinput
%%
%% End of file `ts1cmvtt.fd'.
diff --git a/Master/texmf-dist/tex/latex-dev/base/tuenc.def b/Master/texmf-dist/tex/latex-dev/base/tuenc.def
index 7d32d90059f..c85c620c6bb 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tuenc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/tuenc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{tuenc.def}
- [2021/04/29 v2.0v
+ [2024/11/06 v2.1b
Standard LaTeX file]
\providecommand\UnicodeEncodingName{TU}
\begingroup\expandafter\expandafter\expandafter\endgroup
diff --git a/Master/texmf-dist/tex/latex-dev/base/ucmr.fd b/Master/texmf-dist/tex/latex-dev/base/ucmr.fd
index 4ef1f56b42b..367aab2f0e4 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ucmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ucmr.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ucmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{U}{cmr}{\hyphenchar\font45 }
\DeclareFontShape{U}{cmr}{m}{n}%
{<5><6><7><8><9><10><12>gen*cmr%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ucmss.fd b/Master/texmf-dist/tex/latex-dev/base/ucmss.fd
index 1611fc986c4..24c6e14bf3b 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ucmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ucmss.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ucmss.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{U}{cmss}{\hyphenchar\font45 }
\DeclareFontShape{U}{cmss}{m}{n}%
{%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd
index 247768631e4..cd9cd439b0d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ucmtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{U}{cmtt}{\hyphenchar \font\m@ne}
\DeclareFontShape{U}{cmtt}{m}{n}%
{%
diff --git a/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx b/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx
index d2317b204af..6e008fb9f04 100644
--- a/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx
+++ b/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx
@@ -34,8 +34,8 @@
%%
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
-\def\LaTeXFirstAidDate{2024/03/20}
-\def\LaTeXFirstAidVersion{v1.1e}
+\def\LaTeXFirstAidDate{2024/11/24}
+\def\LaTeXFirstAidVersion{v1.1j}
\ProvidesFile{latex2e-first-aid-for-external-files.ltx}
[\LaTeXFirstAidDate\space \LaTeXFirstAidVersion\space
LaTeX kernel fixes to external files and packages]
@@ -228,8 +228,44 @@
{[\@tempb][\arabic{page}][\cref@result]\thepage}{}{}{}}}% <------- five
\@esphack}%
}
+ \newcommand\firstaid@cref@smugglelabel{\let\cref@currentlabel\cref@gcurrentlabel@temp}
+ \newcommand\firstaid@cref@updatelabeldata[1]{%
+ \cref@constructprefix{#1}{\cref@result}%
+ \@ifundefined{cref@#1@alias}%
+ {\def\@tempa{#1}}%
+ {\def\@tempa{\csname cref@#1@alias\endcsname}}%
+ \protected@xdef\cref@gcurrentlabel@temp{%
+ [\@tempa][\arabic{#1}][\cref@result]%
+ \csname p@#1\expandafter\endcsname\csname the#1\endcsname}%
+ \aftergroup\firstaid@cref@smugglelabel
+ }
+ \newif\iftag@
+ \AddToHook{label}[firstaid/cleveref]
+ {\ifx
+ \@currentcounter\@empty
+ \else
+ \iftag@\else
+ \firstaid@cref@updatelabeldata{\@currentcounter}%
+ \fi
+ \fi}
}%
}
+\AddToHook{package/arydshln/after}[firstaid]{%
+ \FirstAidNeededT{arydshln}{sty}{2019/02/21 v1.76 }
+ {%
+\protected\def\adl@@vlineL#1#2#3#4{\adl@ivline#4\@nil{#1}{#2}%
+ \xdef\adl@colsL{\adl@colsL
+ \@elt{#3}{\number\@tempcnta}{\number\@tempcntb}%
+ {\adl@dashcolor}{\adl@gapcolor}}}%
+\protected\def\adl@@vlineR#1#2#3#4{\adl@ivline#4\@nil{#1}{#2}%
+ \xdef\adl@colsR{%
+ \@elt{#3}{\number\@tempcnta}{\number\@tempcntb}%
+ {\adl@dashcolor}{\adl@gapcolor}%
+ \adl@colsR}}%
+\let\adl@act@@vlineL\adl@@vlineL
+\let\adl@act@@vlineR\adl@@vlineR
+ }%
+}
\endinput
%%
%% End of file `latex2e-first-aid-for-external-files.ltx'.
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex
index 95f3f5f447d..8d95f514b00 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex
@@ -62,7 +62,7 @@
%% l3legacy.dtx (with options: `package')
%% l3deprecation.dtx (with options: `package')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -75,7 +75,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-09-10}%
+\def\ExplFileDate{2025-01-18}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -716,7 +716,6 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__kernel_primitive:NN \pdfoutline \tex_pdfoutline:D
\__kernel_primitive:NN \pdfoutput \tex_pdfoutput:D
\__kernel_primitive:NN \pdfpageattr \tex_pdfpageattr:D
- \__kernel_primitive:NN \pdfpagesattr \tex_pdfpagesattr:D
\__kernel_primitive:NN \pdfpagebox \tex_pdfpagebox:D
\__kernel_primitive:NN \pdfpageref \tex_pdfpageref:D
\__kernel_primitive:NN \pdfpageresources \tex_pdfpageresources:D
@@ -1313,13 +1312,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__kernel_primitive:NN \ybaselineshift \tex_ybaselineshift:D
\__kernel_primitive:NN \yoko \tex_yoko:D
\__kernel_primitive:NN \vfi \tex_vfi:D
- \__kernel_primitive:NN \currentcjktoken \tex_currentcjktoken:D
\__kernel_primitive:NN \disablecjktoken \tex_disablecjktoken:D
\__kernel_primitive:NN \enablecjktoken \tex_enablecjktoken:D
\__kernel_primitive:NN \forcecjktoken \tex_forcecjktoken:D
\__kernel_primitive:NN \kchar \tex_kchar:D
\__kernel_primitive:NN \kchardef \tex_kchardef:D
- \__kernel_primitive:NN \kuten \tex_kuten:D
\__kernel_primitive:NN \uptexrevision \tex_uptexrevision:D
\__kernel_primitive:NN \uptexversion \tex_uptexversion:D
\__kernel_primitive:NN \odelcode \tex_odelcode:D
@@ -3076,13 +3073,23 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__cs_generate_variant:w #2 \s__cs_mark {#3} {#4} {#5}
}
\cs_new_protected:Npn \__cs_generate_variant_p_form:nnn #1#2
- { \cs_generate_variant:cn { #1 _p : #2 } }
+ { \__cs_generate_variant_check:nn { #1 _p : #2 } }
\cs_new_protected:Npn \__cs_generate_variant_T_form:nnn #1#2
- { \cs_generate_variant:cn { #1 : #2 T } }
+ { \__cs_generate_variant_check:nn { #1 : #2 T } }
\cs_new_protected:Npn \__cs_generate_variant_F_form:nnn #1#2
- { \cs_generate_variant:cn { #1 : #2 F } }
+ { \__cs_generate_variant_check:nn { #1 : #2 F } }
\cs_new_protected:Npn \__cs_generate_variant_TF_form:nnn #1#2
- { \cs_generate_variant:cn { #1 : #2 TF } }
+ { \__cs_generate_variant_check:nn { #1 : #2 TF } }
+\cs_new_protected:Npn \__cs_generate_variant_check:nn #1#2
+ {
+ \cs_if_exist:cTF {#1}
+ { \cs_generate_variant:cn {#1} {#2} }
+ {
+ \msg_error:nne
+ { kernel } { conditional-base-undefined }
+ { \token_to_str:c {#1} }
+ }
+ }
\cs_new_protected:Npn \exp_args_generate:n #1
{
\exp_args:No \clist_map_inline:nn { \tl_to_str:n {#1} }
@@ -3476,7 +3483,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__kernel_chk_if_free_cs:N #1
\cs_gset_nopar:Npe #1 { \__kernel_exp_not:w {#2} }
}
-\cs_generate_variant:Nn \tl_const:Nn { Ne , c , ce }
+\cs_generate_variant:Nn \tl_const:Nn { NV , Ne , c , cV , ce }
\cs_generate_variant:Nn \tl_const:Nn { Nx , cx }
\cs_new_protected:Npn \tl_clear:N #1
{ \tex_let:D #1 = ~ \c_empty_tl }
@@ -3867,6 +3874,37 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__tl_replace_next_aux:w { \__tl_replace_next:w { } { } }
\cs_new_eq:NN \__tl_replace_wrap:w ?
\cs_new_eq:NN \__tl_replace_next:w ?
+\cs_new_protected:Npn \tl_regex_replace_once:Nnn #1#2#3
+ { \regex_replace_once:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \tl_regex_replace_once:Nnn { c }
+\cs_new_protected:Npn \tl_regex_replace_once:NNn #1#2#3
+ { \regex_replace_once:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \tl_regex_replace_once:NNn { c }
+\cs_new_protected:Npn \tl_regex_replace_all:Nnn #1#2#3
+ { \regex_replace_all:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \tl_regex_replace_all:Nnn { c }
+\cs_new_protected:Npn \tl_regex_replace_all:NNn #1#2#3
+ { \regex_replace_all:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \tl_regex_replace_all:NNn { c }
+\group_begin:
+ \cs_set_protected:Npn \__tl_tmp:w #1#2#3
+ {
+ \cs_new_protected:cpe { tl_regex_greplace_ #1 :N #2 n } ##1##2##3
+ {
+ \group_begin:
+ \tl_set_eq:NN \exp_not:N \l__tl_internal_a_tl ##1
+ \exp_not:c { regex_replace_ #1 :Nn #2 }
+ #3 {##2} {##3} \exp_not:N \l__tl_internal_a_tl
+ \tl_gset_eq:NN ##1 \exp_not:N \l__tl_internal_a_tl
+ \group_end:
+ }
+ \cs_generate_variant:cn { tl_regex_greplace_ #1 :N #2 n } { c }
+ }
+ \__tl_tmp:w { once } n { }
+ \__tl_tmp:w { once } N \use:n
+ \__tl_tmp:w { all } n { }
+ \__tl_tmp:w { all } N \use:n
+\group_end:
\cs_new_protected:Npn \tl_remove_once:Nn #1#2
{ \tl_replace_once:Nnn #1 {#2} { } }
\cs_new_protected:Npn \tl_gremove_once:Nn #1#2
@@ -4019,6 +4057,20 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prg_return_false:
\fi:
}
+\prg_new_protected_conditional:Npnn \tl_if_regex_match:nn #1#2 { TF , T , F }
+ {
+ \regex_match:nnTF {#2} {#1}
+ \prg_return_true: \prg_return_false:
+ }
+\prg_generate_conditional_variant:Nnn \tl_if_regex_match:nn
+ { V } { TF , T , F }
+\prg_new_protected_conditional:Npnn \tl_if_regex_match:nN #1#2 { TF , T , F }
+ {
+ \regex_match:nNTF {#2} #1
+ \prg_return_true: \prg_return_false:
+ }
+\prg_generate_conditional_variant:Nnn \tl_if_regex_match:nN
+ { V } { TF , T , F }
\cs_new:Npn \tl_map_function:nN #1#2
{
\__tl_map_function:Nnnnnnnnn #2 #1
@@ -5622,6 +5674,45 @@ Type H <return> for immediate help}\def~{\errmessage{%
#1 #2 { #3 }
\__seq_pop_item_def:
}
+\cs_new_protected:Npn \seq_set_regex_extract_once:Nnn #1#2#3
+ { \regex_extract_once:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_extract_once:Nnn { c }
+\cs_new_protected:Npn \seq_set_regex_extract_once:NNn #1#2#3
+ { \regex_extract_once:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_extract_once:NNn { c }
+\cs_new_protected:Npn \seq_set_regex_extract_all:Nnn #1#2#3
+ { \regex_extract_all:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_extract_all:Nnn { c }
+\cs_new_protected:Npn \seq_set_regex_extract_all:NNn #1#2#3
+ { \regex_extract_all:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_extract_all:NNn { c }
+\cs_new_protected:Npn \seq_set_regex_split:Nnn #1#2#3
+ { \regex_split:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_split:Nnn { c }
+\cs_new_protected:Npn \seq_set_regex_split:NNn #1#2#3
+ { \regex_split:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_split:NNn { c }
+\group_begin:
+ \cs_set_protected:Npn \__seq_tmp:w #1#2#3
+ {
+ \cs_new_protected:cpe { seq_gset_regex_ #1 :N #2 n } ##1##2##3
+ {
+ \group_begin:
+ \seq_set_eq:NN \exp_not:N \l__seq_tmp_seq ##1
+ \exp_not:c { regex_ #1 :Nn #2 }
+ #3 {##2} {##3} \exp_not:N \l__seq_tmp_seq
+ \seq_gset_eq:NN ##1 \exp_not:N \l__seq_tmp_seq
+ \group_end:
+ }
+ \cs_generate_variant:cn { seq_gset_regex_ #1 :N #2 n } { c }
+ }
+ \__seq_tmp:w { extract_once } n { }
+ \__seq_tmp:w { extract_once } N \use:n
+ \__seq_tmp:w { extract_all } n { }
+ \__seq_tmp:w { extract_all } N \use:n
+ \__seq_tmp:w { split } n { }
+ \__seq_tmp:w { split } N \use:n
+\group_end:
\cs_new_protected:Npn \seq_concat:NNN #1#2#3
{ \tl_set:Nf #1 { \exp_after:wN \use_i:nn \exp_after:wN #2 #3 } }
\cs_new_protected:Npn \seq_gconcat:NNN #1#2#3
@@ -5662,20 +5753,20 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_generate_variant:Nn \seq_gput_right:Nn { NV , Nv , Ne , No , Nx }
\cs_generate_variant:Nn \seq_gput_right:Nn { c , cV , cv , ce , co , cx }
\cs_new:Npn \__seq_wrap_item:n #1 { \exp_not:n { \__seq_item:n {#1} } }
-\seq_new:N \l__seq_remove_seq
+\seq_new:N \l__seq_tmp_seq
\cs_new_protected:Npn \seq_remove_duplicates:N
{ \__seq_remove_duplicates:NN \seq_set_eq:NN }
\cs_new_protected:Npn \seq_gremove_duplicates:N
{ \__seq_remove_duplicates:NN \seq_gset_eq:NN }
\cs_new_protected:Npn \__seq_remove_duplicates:NN #1#2
{
- \seq_clear:N \l__seq_remove_seq
+ \seq_clear:N \l__seq_tmp_seq
\seq_map_inline:Nn #2
{
- \seq_if_in:NnF \l__seq_remove_seq {##1}
- { \seq_put_right:Nn \l__seq_remove_seq {##1} }
+ \seq_if_in:NnF \l__seq_tmp_seq {##1}
+ { \seq_put_right:Nn \l__seq_tmp_seq {##1} }
}
- #1 #2 \l__seq_remove_seq
+ #1 #2 \l__seq_tmp_seq
}
\cs_generate_variant:Nn \seq_remove_duplicates:N { c }
\cs_generate_variant:Nn \seq_gremove_duplicates:N { c }
@@ -6298,13 +6389,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \int_eval:n #1
{ \tex_the:D \__int_eval:w #1 \__int_eval_end: }
\cs_new:Npn \int_eval:w { \tex_the:D \__int_eval:w }
+\cs_new_eq:NN \__int_sep: \tex_right:D
\cs_new:Npn \int_sign:n #1
{
\int_value:w \exp_after:wN \__int_sign:Nw
- \int_value:w \__int_eval:w #1 \__int_eval_end: ;
+ \int_value:w \__int_eval:w #1 \__int_eval_end: \__int_sep:
\exp_stop_f:
}
-\cs_new:Npn \__int_sign:Nw #1#2 ;
+\cs_new:Npn \__int_sign:Nw #1#2 \__int_sep:
{
\if_meaning:w 0 #1
0
@@ -6323,20 +6415,20 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \int_max:nn #1#2
{
\int_value:w \exp_after:wN \__int_maxmin:wwN
- \int_value:w \__int_eval:w #1 \exp_after:wN ;
- \int_value:w \__int_eval:w #2 ;
+ \int_value:w \__int_eval:w #1 \exp_after:wN \__int_sep:
+ \int_value:w \__int_eval:w #2 \__int_sep:
>
\exp_stop_f:
}
\cs_new:Npn \int_min:nn #1#2
{
\int_value:w \exp_after:wN \__int_maxmin:wwN
- \int_value:w \__int_eval:w #1 \exp_after:wN ;
- \int_value:w \__int_eval:w #2 ;
+ \int_value:w \__int_eval:w #1 \exp_after:wN \__int_sep:
+ \int_value:w \__int_eval:w #2 \__int_sep:
<
\exp_stop_f:
}
-\cs_new:Npn \__int_maxmin:wwN #1 ; #2 ; #3
+\cs_new:Npn \__int_maxmin:wwN #1 \__int_sep: #2 \__int_sep: #3
{
\if_int_compare:w #1 #3 #2 ~
#1
@@ -6348,11 +6440,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\int_value:w \__int_eval:w
\exp_after:wN \__int_div_truncate:NwNw
- \int_value:w \__int_eval:w #1 \exp_after:wN ;
- \int_value:w \__int_eval:w #2 ;
+ \int_value:w \__int_eval:w #1 \exp_after:wN \__int_sep:
+ \int_value:w \__int_eval:w #2 \__int_sep:
\__int_eval_end:
}
-\cs_new:Npn \__int_div_truncate:NwNw #1#2; #3#4;
+\cs_new:Npn \__int_div_truncate:NwNw #1#2 \__int_sep: #3#4 \__int_sep:
{
\if_meaning:w 0 #1
0
@@ -6370,12 +6462,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \int_mod:nn #1#2
{
\int_value:w \__int_eval:w \exp_after:wN \__int_mod:ww
- \int_value:w \__int_eval:w #1 \exp_after:wN ;
- \int_value:w \__int_eval:w #2 ;
+ \int_value:w \__int_eval:w #1 \exp_after:wN \__int_sep:
+ \int_value:w \__int_eval:w #2 \__int_sep:
\__int_eval_end:
}
-\cs_new:Npn \__int_mod:ww #1; #2;
- { #1 - ( \__int_div_truncate:NwNw #1 ; #2 ; ) * #2 }
+\cs_new:Npn \__int_mod:ww #1 \__int_sep: #2 \__int_sep:
+ { #1 - ( \__int_div_truncate:NwNw #1 \__int_sep: #2 \__int_sep: ) * #2 }
\cs_new:Npn \__kernel_int_add:nnn #1#2#3
{
\int_value:w \__int_eval:w #1
@@ -6471,8 +6563,32 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ #1 = \__int_eval:w #2 \__int_eval_end: }
\cs_new_protected:Npn \int_gset:Nn #1#2
{ \tex_global:D #1 = \__int_eval:w #2 \__int_eval_end: }
-\cs_generate_variant:Nn \int_set:Nn { c }
-\cs_generate_variant:Nn \int_gset:Nn { c }
+\cs_generate_variant:Nn \int_set:Nn { NV , c , cV }
+\cs_generate_variant:Nn \int_gset:Nn { NV , c , cV }
+\cs_new_protected:Npn \int_set_regex_count:Nnn #1#2#3
+ { \regex_count:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \int_set_regex_count:Nnn { c }
+\cs_new_protected:Npn \int_gset_regex_count:Nnn #1#2#3
+ {
+ \group_begin:
+ \int_set_eq:NN \l__int_internal_a_int #1
+ \regex_count:nnN {#2} {#3} \l__int_internal_a_int
+ \int_gset_eq:NN #1 \l__int_internal_a_int
+ \group_end:
+ }
+\cs_generate_variant:Nn \int_gset_regex_count:Nnn { c }
+\cs_new_protected:Npn \int_set_regex_count:NNn #1#2#3
+ { \regex_count:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \int_set_regex_count:Nnn { c }
+\cs_new_protected:Npn \int_gset_regex_count:NNn #1#2#3
+ {
+ \group_begin:
+ \int_set_eq:NN \l__int_internal_a_int #1
+ \regex_count:NnN #2 {#3} \l__int_internal_a_int
+ \int_gset_eq:NN #1 \l__int_internal_a_int
+ \group_end:
+ }
+\cs_generate_variant:Nn \int_gset_regex_count:NNn { c }
\cs_new_eq:NN \int_use:N \tex_the:D
\cs_new:Npn \int_use:c #1 { \tex_the:D \cs:w #1 \cs_end: }
\cs_new_protected:Npn \__int_compare_error:
@@ -6663,41 +6779,47 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new:Npn \int_step_function:nnnN #1#2#3
{
- \exp_after:wN \__int_step:wwwN
- \int_value:w \__int_eval:w #1 \exp_after:wN ;
- \int_value:w \__int_eval:w #2 \exp_after:wN ;
- \int_value:w \__int_eval:w #3 ;
+ \exp_after:wN \__int_step:w
+ \int_value:w \__int_eval:w #1 \exp_after:wN \__int_sep:
+ \int_value:w \__int_eval:w #2 \exp_after:wN \__int_sep:
+ \int_value:w \__int_eval:w #3 \__int_sep:
}
-\cs_new:Npn \__int_step:wwwN #1; #2; #3; #4
+\cs_new:Npn \__int_step:w #1 \__int_sep: #2 \__int_sep: #3 \__int_sep: #4
{
\int_compare:nNnTF {#2} > \c_zero_int
- { \__int_step:NwnnN > }
+ { \__int_step:Nw > }
{
- \int_compare:nNnTF {#2} = \c_zero_int
+ \if_meaning:w 0 #2
+ \exp_after:wN \use_ii:nn
+ \fi:
+ \use_none:n
{
\msg_expandable_error:nnn
{ kernel } { zero-step } {#4}
\prg_break:
}
- { \__int_step:NwnnN < }
+ \__int_step:Nw <
}
- #1 ; {#2} {#3} #4
+ #1 \__int_sep: {#2} {#3} {#4}
\prg_break_point:
}
-\cs_new:Npn \__int_step:NwnnN #1#2 ; #3#4#5
+\cs_new:Npn \__int_step:Nw #1#2 \__int_sep: #3#4#5
{
\if_int_compare:w #2 #1 #4 \exp_stop_f:
\prg_break:n
\fi:
#5 {#2}
- \exp_after:wN \__int_step:NwnnN
+ \exp_after:wN \__int_step:Nw
\exp_after:wN #1
- \int_value:w \__int_eval:w #2 + #3 ; {#3} {#4} #5
+ \int_value:w \__int_eval:w #2 + #3 \__int_sep: {#3} {#4} {#5}
}
\cs_new:Npn \int_step_function:nN
- { \int_step_function:nnnN { 1 } { 1 } }
+ { \int_step_function:nnnN \c_one_int \c_one_int }
\cs_new:Npn \int_step_function:nnN #1
- { \int_step_function:nnnN {#1} { 1 } }
+ { \int_step_function:nnnN {#1} \c_one_int }
+\cs_new_eq:NN \int_step_tokens:nn \int_step_function:nN
+\cs_new_eq:NN \int_step_tokens:nnn \int_step_function:nnN
+\cs_new_eq:NN \int_step_tokens:nnnn \int_step_function:nnnN
\cs_new_protected:Npn \int_step_inline:nn
{ \int_step_inline:nnnn { 1 } { 1 } }
\cs_new_protected:Npn \int_step_inline:nnn #1
@@ -7585,6 +7707,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__sys_const:nn { sys_if_engine_ #1 }
{ \str_if_eq_p:Vn \c_sys_engine_str {#1} }
}
+\__sys_const:nn
+ { sys_if_engine_opentype }
+ { \cs_if_exist_p:N \tex_Umathcode:D }
\group_begin:
\cs_set_eq:NN \lua_now:e \tex_directlua:D
\str_const:Ne \c_sys_engine_exec_str
@@ -8641,6 +8766,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \clist_use:Nn #1#2
{ \clist_use:Nnnn #1 {#2} {#2} {#2} }
\cs_generate_variant:Nn \clist_use:Nn { c }
+\cs_new_eq:NN \clist_use:N \tl_use:N
+\cs_generate_variant:Nn \clist_use:N { c }
\cs_new:Npn \clist_use:nnnn #1#2#3#4
{
\__clist_use:Nw \__clist_use_none_delimit_by_s_stop:w
@@ -9075,7 +9202,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\group_end:
\group_begin:
\char_set_catcode_active:N \*
- \tl_const:Nn \c_catcode_active_tl { \exp_not:N * }
+ \tl_const:Nn \c__token_active_tl { \exp_not:N * }
\group_end:
\prg_new_conditional:Npnn \token_if_group_begin:N #1 { p , T , F , TF }
{
@@ -9133,7 +9260,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\prg_new_conditional:Npnn \token_if_active:N #1 { p , T , F , TF }
{
- \if_catcode:w \exp_not:N #1 \c_catcode_active_tl
+ \if_catcode:w \exp_not:N #1 \c__token_active_tl
\prg_return_true: \else: \prg_return_false: \fi:
}
\prg_new_eq_conditional:NNn \token_if_eq_meaning:NN \cs_if_eq:NN
@@ -9935,7 +10062,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN { \tl_to_str:n {#2} }
}
}
- { \exp_after:wN \__prop_get_linked:w #1 {#2} \use:n { } { } }
+ { \exp_after:wN \__prop_get_linked:w #1 {#2} \exp_not:n { } { } }
}
\cs_new:Npn \__prop_item:nnn #1#2#3
{
@@ -11055,6 +11182,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\msg_new:nnn { kernel } { randint-backward-range }
{ Wrong~order~of~bounds~in~\iow_char:N\\int_rand:nn{#1}{#2}. }
+\msg_new:nnnn { kernel } { conditional-base-undefined }
+ { Undefined~conditional~base~function~'#1'. }
+ {
+ \c__msg_coding_error_text_tl
+ LaTeX~has~been~asked~to~define~a~variant~of~the~conditional~'#1',~
+ but~the~latter~is~not~defined.
+ }
\msg_new:nnnn { kernel } { conditional-form-unknown }
{ Conditional~form~'#1'~for~function~'#2'~unknown. }
{
@@ -12364,6 +12498,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{#3}
}
}
+\cs_new_protected:Npn \file_forget:n #1
+ { \cs_undefine:c { __file_seen_ \file_full_name:n {#1} : } }
\cs_new_protected:Npn \file_get_full_name:nN #1#2
{
\file_get_full_name:nNF {#1} #2
@@ -12953,8 +13089,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ #1 = \__dim_eval:w #2 \__dim_eval_end: \scan_stop: }
\cs_new_protected:Npn \dim_gset:Nn #1#2
{ \tex_global:D #1 = \__dim_eval:w #2 \__dim_eval_end: \scan_stop: }
-\cs_generate_variant:Nn \dim_set:Nn { c }
-\cs_generate_variant:Nn \dim_gset:Nn { c }
+\cs_generate_variant:Nn \dim_set:Nn { NV , c , cV }
+\cs_generate_variant:Nn \dim_gset:Nn { NV , c , cV }
\cs_new_protected:Npn \dim_set_eq:NN #1#2
{ #1 = #2 \scan_stop: }
\cs_generate_variant:Nn \dim_set_eq:NN { c , Nc , cc }
@@ -13380,8 +13516,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ #1 = \tex_glueexpr:D #2 \scan_stop: }
\cs_new_protected:Npn \skip_gset:Nn #1#2
{ \tex_global:D #1 = \tex_glueexpr:D #2 \scan_stop: }
-\cs_generate_variant:Nn \skip_set:Nn { c }
-\cs_generate_variant:Nn \skip_gset:Nn { c }
+\cs_generate_variant:Nn \skip_set:Nn { NV , c , cV }
+\cs_generate_variant:Nn \skip_gset:Nn { NV , c , cV }
\cs_new_protected:Npn \skip_set_eq:NN #1#2 { #1 = #2 }
\cs_generate_variant:Nn \skip_set_eq:NN { c , Nc , cc }
\cs_new_protected:Npn \skip_gset_eq:NN #1#2 { \tex_global:D #1 = #2 }
@@ -13473,8 +13609,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ #1 = \tex_muexpr:D #2 \scan_stop: }
\cs_new_protected:Npn \muskip_gset:Nn #1#2
{ \tex_global:D #1 = \tex_muexpr:D #2 \scan_stop: }
-\cs_generate_variant:Nn \muskip_set:Nn { c }
-\cs_generate_variant:Nn \muskip_gset:Nn { c }
+\cs_generate_variant:Nn \muskip_set:Nn { NV , c , cV }
+\cs_generate_variant:Nn \muskip_gset:Nn { NV , c , cV }
\cs_new_protected:Npn \muskip_set_eq:NN #1#2 { #1 = #2 }
\cs_generate_variant:Nn \muskip_set_eq:NN { c , Nc , cc }
\cs_new_protected:Npn \muskip_gset_eq:NN #1#2 { \tex_global:D #1 = #2 }
@@ -13782,16 +13918,27 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\cs_set_eq:cN {#1} \tex_undefined:D
}
-\cs_new_protected:Npn \keys_define:nn
- { \__keys_define:onn \l__keys_module_str }
-\cs_generate_variant:Nn \keys_define:nn { ne , nx }
-\cs_new_protected:Npn \__keys_define:nnn #1#2#3
+\cs_new_protected:Npn \keys_define:nn #1#2
{
- \str_set:Ne \l__keys_module_str { \__keys_trim_spaces:n {#2} }
- \keyval_parse:NNn \__keys_define:n \__keys_define:nn {#3}
- \str_set:Nn \l__keys_module_str {#1}
+ \use:e
+ {
+ \exp_not:n
+ {
+ \str_set:Ne \l__keys_module_str { \__keys_trim_spaces:n {#1} }
+ \keyval_parse:NNn \__keys_define:n \__keys_define:nn {#2}
+ }
+ \__keys_reset_var:N \l__keys_module_str
+ \__keys_reset_var:N \l__keys_inherit_str
+ \__keys_reset_var:N \l_keys_choice_tl
+ \__keys_reset_var:N \l_keys_key_tl
+ \__keys_reset_var:N \l_keys_key_str
+ \__keys_reset_var:N \l_keys_path_tl
+ \__keys_reset_var:N \l_keys_path_str
+ \__keys_reset_var:N \l_keys_value_tl
+ \int_set:Nn \l_keys_choice_int { \int_use:N \l_keys_choice_int }
+ }
}
-\cs_generate_variant:Nn \__keys_define:nnn { o }
+\cs_generate_variant:Nn \keys_define:nn { ne , nx }
\cs_new_protected:Npn \__keys_define:n #1
{
\bool_set_true:N \l__keys_no_value_bool
@@ -14055,14 +14202,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs:w if#1 \cs_end:
}
}
-\cs_new_protected:Npn \__keys_meta_make:n #1
- {
- \exp_args:NVo \__keys_cmd_set_direct:nn \l_keys_path_str
- {
- \exp_after:wN \__keys_set:nn \exp_after:wN
- { \l__keys_module_str } {#1}
- }
- }
+\cs_new_protected:Npn \__keys_meta_make:n
+ { \exp_args:NV \__keys_meta_make:nn \l__keys_module_str }
\cs_new_protected:Npn \__keys_meta_make:nn #1#2
{
\exp_args:NV \__keys_cmd_set_direct:nn
@@ -14389,33 +14530,34 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__keys_value_requirement:nn { forbidden } {#1} }
\cs_new_protected:cpn { \c__keys_props_root_str .value_required:n } #1
{ \__keys_value_requirement:nn { required } {#1} }
-\cs_new_protected:Npn \__keys_set:nnnnNn
+\cs_new_protected:Npn \__keys_set:nnnnNn #1#2#3#4#5#6
{
- \exp_args:Nooo \__keys_set:nnnnnnnNn
- \l__keys_unused_clist
- \l__keys_selective_clist
- \l__keys_relative_tl
- }
-\cs_new_protected:Npn \__keys_set:nnnnnnnNn #1#2#3#4#5#6#7#8#9
- {
- \clist_clear:N \l__keys_unused_clist
- \clist_set:Ne \l__keys_selective_clist { \tl_to_str:n {#5} }
- \tl_set:Nn \l__keys_relative_tl {#7}
\use:e
{
\exp_not:n
{
- #9
- \__keys_set:nn {#4} {#6}
+ \clist_clear:N \l__keys_unused_clist
+ \clist_set:Ne \l__keys_selective_clist { \tl_to_str:n {#2} }
+ \tl_set:Nn \l__keys_relative_tl {#4}
+ #6
+ \__keys_set:nn {#1} {#3}
+ \clist_set_eq:NN #5 \l__keys_unused_clist
}
\__keys_reset_bool:N \l__keys_only_known_bool
\__keys_reset_bool:N \l__keys_exclude_bool
\__keys_reset_bool:N \l__keys_selective_bool
+ \__keys_reset_var:N \l__keys_unused_clist
+ \__keys_reset_var:N \l__keys_selective_clist
+ \__keys_reset_var:N \l__keys_relative_tl
+ \__keys_reset_var:N \l__keys_inherit_str
+ \__keys_reset_var:N \l_keys_choice_tl
+ \__keys_reset_var:N \l_keys_key_tl
+ \__keys_reset_var:N \l_keys_key_str
+ \__keys_reset_var:N \l_keys_path_tl
+ \__keys_reset_var:N \l_keys_path_str
+ \__keys_reset_var:N \l_keys_value_tl
+ \int_set:Nn \l_keys_choice_int { \int_use:N \l_keys_choice_int }
}
- \clist_set_eq:NN #8 \l__keys_unused_clist
- \__kernel_tl_set:Nx \l__keys_unused_clist { \exp_not:n {#1} }
- \__kernel_tl_set:Nx \l__keys_selective_clist {#2}
- \__kernel_tl_set:Nx \l__keys_relative_tl { \exp_not:n {#3} }
}
\cs_new:Npn \__keys_reset_bool:N #1
{
@@ -14423,6 +14565,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ bool_set_ \bool_if:NTF #1 { true } { false } :N }
\exp_not:N #1
}
+\cs_new:Npn \__keys_reset_var:N #1
+ {
+ \exp_not:n
+ { \__kernel_tl_set:Nx #1 }
+ { \exp_not:N \exp_not:n { \exp_not:o { #1 } } }
+ }
\cs_new_protected:Npn \__keys_set:nn #1#2
{ \exp_args:No \__keys_set:nnn \l__keys_module_str {#1} {#2} }
\cs_new_protected:Npn \__keys_set:nnn #1#2#3
@@ -15226,21 +15374,24 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_eq:NN \__fp_int_eval:w \tex_numexpr:D
\cs_new_eq:NN \__fp_int_eval_end: \scan_stop:
\cs_new_eq:NN \__fp_int_to_roman:w \tex_romannumeral:D
+\cs_new_eq:NN \__fp_sep: \tex_right:D
\cs_new:Npn \__fp_use_none_stop_f:n #1 { \exp_stop_f: }
-\cs_new:Npn \__fp_use_s:n #1 { #1; }
-\cs_new:Npn \__fp_use_s:nn #1#2 { #1#2; }
-\cs_new:Npn \__fp_use_none_until_s:w #1; { }
-\cs_new:Npn \__fp_use_i_until_s:nw #1#2; {#1}
-\cs_new:Npn \__fp_use_ii_until_s:nnw #1#2#3; {#2}
-\cs_new:Npn \__fp_reverse_args:Nww #1 #2; #3; { #1 #3; #2; }
-\cs_new:Npn \__fp_rrot:www #1; #2; #3; { #2; #3; #1; }
-\cs_new:Npn \__fp_use_i:ww #1; #2; { #1; }
-\cs_new:Npn \__fp_use_i:www #1; #2; #3; { #1; }
+\cs_new:Npn \__fp_use_s:n #1 { #1\__fp_sep: }
+\cs_new:Npn \__fp_use_s:nn #1#2 { #1#2\__fp_sep: }
+\cs_new:Npn \__fp_use_none_until_s:w #1\__fp_sep: { }
+\cs_new:Npn \__fp_use_i_until_s:nw #1#2\__fp_sep: {#1}
+\cs_new:Npn \__fp_use_ii_until_s:nnw #1#2#3\__fp_sep: {#2}
+\cs_new:Npn \__fp_reverse_args:Nww #1 #2\__fp_sep: #3\__fp_sep:
+ { #1 #3\__fp_sep: #2\__fp_sep: }
+\cs_new:Npn \__fp_rrot:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep:
+ { #2\__fp_sep: #3\__fp_sep: #1\__fp_sep: }
+\cs_new:Npn \__fp_use_i:ww #1\__fp_sep: #2\__fp_sep: { #1\__fp_sep: }
+\cs_new:Npn \__fp_use_i:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: { #1\__fp_sep: }
\cs_new_protected:Npn \__fp_misused:n #1
{ \msg_error:nne { fp } { misused } { \fp_to_tl:n {#1} } }
\scan_new:N \s__fp
-\cs_new_protected:Npn \__fp_chk:w #1 ;
- { \__fp_misused:n { \s__fp \__fp_chk:w #1 ; } }
+\cs_new_protected:Npn \__fp_chk:w #1 \__fp_sep:
+ { \__fp_misused:n { \s__fp \__fp_chk:w #1 \__fp_sep: } }
\scan_new:N \s__fp_expr_mark
\scan_new:N \s__fp_expr_stop
\scan_new:N \s__fp_mark
@@ -15251,11 +15402,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
\scan_new:N \s__fp_overflow
\scan_new:N \s__fp_division
\scan_new:N \s__fp_exact
-\tl_const:Nn \c_zero_fp { \s__fp \__fp_chk:w 0 0 \s__fp_exact ; }
-\tl_const:Nn \c_minus_zero_fp { \s__fp \__fp_chk:w 0 2 \s__fp_exact ; }
-\tl_const:Nn \c_inf_fp { \s__fp \__fp_chk:w 2 0 \s__fp_exact ; }
-\tl_const:Nn \c_minus_inf_fp { \s__fp \__fp_chk:w 2 2 \s__fp_exact ; }
-\tl_const:Nn \c_nan_fp { \s__fp \__fp_chk:w 3 1 \s__fp_exact ; }
+\tl_const:Nn \c_zero_fp { \s__fp \__fp_chk:w 0 0 \s__fp_exact \__fp_sep: }
+\tl_const:Nn \c_minus_zero_fp { \s__fp \__fp_chk:w 0 2 \s__fp_exact \__fp_sep: }
+\tl_const:Nn \c_inf_fp { \s__fp \__fp_chk:w 2 0 \s__fp_exact \__fp_sep: }
+\tl_const:Nn \c_minus_inf_fp { \s__fp \__fp_chk:w 2 2 \s__fp_exact \__fp_sep: }
+\tl_const:Nn \c_nan_fp { \s__fp \__fp_chk:w 3 1 \s__fp_exact \__fp_sep: }
\int_const:Nn \c__fp_prec_int { 16 }
\int_const:Nn \c__fp_half_prec_int { 8 }
\int_const:Nn \c__fp_block_int { 4 }
@@ -15267,12 +15418,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\s__fp \__fp_chk:w 1 0
{ \int_eval:n { \c__fp_max_exponent_int + 1 } }
- {1000} {0000} {0000} {0000} ;
+ {1000} {0000} {0000} {0000} \__fp_sep:
}
\cs_new:Npn \__fp_zero_fp:N #1
- { \s__fp \__fp_chk:w 0 #1 \s__fp_underflow ; }
+ { \s__fp \__fp_chk:w 0 #1 \s__fp_underflow \__fp_sep: }
\cs_new:Npn \__fp_inf_fp:N #1
- { \s__fp \__fp_chk:w 2 #1 \s__fp_overflow ; }
+ { \s__fp \__fp_chk:w 2 #1 \s__fp_overflow \__fp_sep: }
\cs_new:Npn \__fp_exponent:w \s__fp \__fp_chk:w #1
{
\if_meaning:w 1 #1
@@ -15291,7 +15442,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\s__fp { \__fp_use_i_until_s:nw 4 }
\s__fp_stop
}
-\cs_new:Npn \__fp_sanitize:Nw #1 #2;
+\cs_new:Npn \__fp_sanitize:Nw #1 #2\__fp_sep:
{
\if_case:w
\if_int_compare:w #2 > \c__fp_max_exponent_int 1 ~ \else:
@@ -15303,8 +15454,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\s__fp \__fp_chk:w 1 #1 {#2}
}
-\cs_new:Npn \__fp_sanitize:wN #1; #2 { \__fp_sanitize:Nw #2 #1; }
-\cs_new:Npn \__fp_sanitize_zero:w \s__fp \__fp_chk:w #1 #2 #3;
+\cs_new:Npn \__fp_sanitize:wN #1\__fp_sep: #2 { \__fp_sanitize:Nw #2 #1\__fp_sep: }
+\cs_new:Npn \__fp_sanitize_zero:w \s__fp \__fp_chk:w #1 #2 #3\__fp_sep:
{ \c_zero_fp }
\cs_new:Npn \__fp_exp_after_o:w \s__fp \__fp_chk:w #1
{
@@ -15326,52 +15477,52 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \exp:w \exp_end_continue_f:w #1 }
#2
}
-\cs_new:Npn \__fp_exp_after_special:nNNw #1#2#3#4;
+\cs_new:Npn \__fp_exp_after_special:nNNw #1#2#3#4\__fp_sep:
{
\exp_after:wN \s__fp
\exp_after:wN \__fp_chk:w
\exp_after:wN #2
\exp_after:wN #3
\exp_after:wN #4
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
#1
}
-\cs_new:Npn \__fp_exp_after_normal:nNNw #1 1 #2 #3 #4#5#6#7;
+\cs_new:Npn \__fp_exp_after_normal:nNNw #1 1 #2 #3 #4#5#6#7\__fp_sep:
{
\exp_after:wN \__fp_exp_after_normal:Nwwwww
\exp_after:wN #2
- \int_value:w #3 \exp_after:wN ;
- \int_value:w 1 #4 \exp_after:wN ;
- \int_value:w 1 #5 \exp_after:wN ;
- \int_value:w 1 #6 \exp_after:wN ;
- \int_value:w 1 #7 \exp_after:wN ; #1
+ \int_value:w #3 \exp_after:wN \__fp_sep:
+ \int_value:w 1 #4 \exp_after:wN \__fp_sep:
+ \int_value:w 1 #5 \exp_after:wN \__fp_sep:
+ \int_value:w 1 #6 \exp_after:wN \__fp_sep:
+ \int_value:w 1 #7 \exp_after:wN \__fp_sep: #1
}
\cs_new:Npn \__fp_exp_after_normal:Nwwwww
- #1 #2; 1 #3 ; 1 #4 ; 1 #5 ; 1 #6 ;
- { \s__fp \__fp_chk:w 1 #1 {#2} {#3} {#4} {#5} {#6} ; }
+ #1 #2\__fp_sep: 1 #3 \__fp_sep: 1 #4 \__fp_sep: 1 #5 \__fp_sep: 1 #6 \__fp_sep:
+ { \s__fp \__fp_chk:w 1 #1 {#2} {#3} {#4} {#5} {#6} \__fp_sep: }
\scan_new:N \s__fp_tuple
-\cs_new_protected:Npn \__fp_tuple_chk:w #1 ;
- { \__fp_misused:n { \s__fp_tuple \__fp_tuple_chk:w #1 ; } }
+\cs_new_protected:Npn \__fp_tuple_chk:w #1 \__fp_sep:
+ { \__fp_misused:n { \s__fp_tuple \__fp_tuple_chk:w #1 \__fp_sep: } }
\tl_const:Nn \c__fp_empty_tuple_fp
- { \s__fp_tuple \__fp_tuple_chk:w { } ; }
+ { \s__fp_tuple \__fp_tuple_chk:w { } \__fp_sep: }
\cs_new:Npn \__fp_array_count:n #1
- { \__fp_tuple_count:w \s__fp_tuple \__fp_tuple_chk:w {#1} ; }
-\cs_new:Npn \__fp_tuple_count:w \s__fp_tuple \__fp_tuple_chk:w #1 ;
+ { \__fp_tuple_count:w \s__fp_tuple \__fp_tuple_chk:w {#1} \__fp_sep: }
+\cs_new:Npn \__fp_tuple_count:w \s__fp_tuple \__fp_tuple_chk:w #1 \__fp_sep:
{
\int_value:w \__fp_int_eval:w 0
- \__fp_tuple_count_loop:Nw #1 { ? \prg_break: } ;
+ \__fp_tuple_count_loop:Nw #1 { ? \prg_break: } \__fp_sep:
\prg_break_point:
\__fp_int_eval_end:
}
-\cs_new:Npn \__fp_tuple_count_loop:Nw #1#2;
+\cs_new:Npn \__fp_tuple_count_loop:Nw #1#2\__fp_sep:
{ \use_none:n #1 + 1 \__fp_tuple_count_loop:Nw }
\cs_new:Npn \__fp_if_type_fp:NTwFw #1 \s__fp #2 #3 \s__fp_stop {#2}
\cs_new:Npn \__fp_array_if_all_fp:nTF #1
{
- \__fp_array_if_all_fp_loop:w #1 { \s__fp \prg_break: } ;
+ \__fp_array_if_all_fp_loop:w #1 { \s__fp \prg_break: } \__fp_sep:
\prg_break_point: \use_i:nn
}
-\cs_new:Npn \__fp_array_if_all_fp_loop:w #1#2 ;
+\cs_new:Npn \__fp_array_if_all_fp_loop:w #1#2 \__fp_sep:
{
\__fp_if_type_fp:NTwFw
#1 \__fp_array_if_all_fp_loop:w
@@ -15433,7 +15584,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__fp_exp_after_tuple_o:w
{ \__fp_exp_after_tuple_f:nw { \exp_after:wN \exp_stop_f: } }
\cs_new:Npn \__fp_exp_after_tuple_f:nw
- #1 \s__fp_tuple \__fp_tuple_chk:w #2 ;
+ #1 \s__fp_tuple \__fp_tuple_chk:w #2 \__fp_sep:
{
\exp_after:wN \s__fp_tuple
\exp_after:wN \__fp_tuple_chk:w
@@ -15441,7 +15592,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp:w \exp_end_continue_f:w
\__fp_exp_after_array_f:w #2 \s__fp_expr_stop
\exp_after:wN }
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\exp:w \exp_end_continue_f:w #1
}
\cs_new:Npn \__fp_exp_after_array_f:w
@@ -15449,42 +15600,43 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_const:Nn \c__fp_leading_shift_int { - 5 0000 }
\int_const:Nn \c__fp_middle_shift_int { 5 0000 * 9999 }
\int_const:Nn \c__fp_trailing_shift_int { 5 0000 * 10000 }
-\cs_new:Npn \__fp_pack:NNNNNw #1 #2#3#4#5 #6; { + #1#2#3#4#5 ; {#6} }
+\cs_new:Npn \__fp_pack:NNNNNw #1 #2#3#4#5 #6\__fp_sep:
+ { + #1#2#3#4#5 \__fp_sep: {#6} }
\int_const:Nn \c__fp_big_leading_shift_int { - 15 2374 }
\int_const:Nn \c__fp_big_middle_shift_int { 15 2374 * 9999 }
\int_const:Nn \c__fp_big_trailing_shift_int { 15 2374 * 10000 }
-\cs_new:Npn \__fp_pack_big:NNNNNNw #1#2 #3#4#5#6 #7;
- { + #1#2#3#4#5#6 ; {#7} }
+\cs_new:Npn \__fp_pack_big:NNNNNNw #1#2 #3#4#5#6 #7\__fp_sep:
+ { + #1#2#3#4#5#6 \__fp_sep: {#7} }
\int_const:Nn \c__fp_Bigg_leading_shift_int { - 20 0000 }
\int_const:Nn \c__fp_Bigg_middle_shift_int { 20 0000 * 9999 }
\int_const:Nn \c__fp_Bigg_trailing_shift_int { 20 0000 * 10000 }
-\cs_new:Npn \__fp_pack_Bigg:NNNNNNw #1#2 #3#4#5#6 #7;
- { + #1#2#3#4#5#6 ; {#7} }
-\cs_new:Npn \__fp_pack_twice_four:wNNNNNNNN #1; #2#3#4#5 #6#7#8#9
- { #1 {#2#3#4#5} {#6#7#8#9} ; }
-\cs_new:Npn \__fp_pack_eight:wNNNNNNNN #1; #2#3#4#5 #6#7#8#9
- { #1 {#2#3#4#5#6#7#8#9} ; }
-\cs_new:Npn \__fp_basics_pack_low:NNNNNw #1 #2#3#4#5 #6;
- { + #1 - 1 ; {#2#3#4#5} {#6} ; }
-\cs_new:Npn \__fp_basics_pack_high:NNNNNw #1 #2#3#4#5 #6;
+\cs_new:Npn \__fp_pack_Bigg:NNNNNNw #1#2 #3#4#5#6 #7\__fp_sep:
+ { + #1#2#3#4#5#6 \__fp_sep: {#7} }
+\cs_new:Npn \__fp_pack_twice_four:wNNNNNNNN #1\__fp_sep: #2#3#4#5 #6#7#8#9
+ { #1 {#2#3#4#5} {#6#7#8#9} \__fp_sep: }
+\cs_new:Npn \__fp_pack_eight:wNNNNNNNN #1\__fp_sep: #2#3#4#5 #6#7#8#9
+ { #1 {#2#3#4#5#6#7#8#9} \__fp_sep: }
+\cs_new:Npn \__fp_basics_pack_low:NNNNNw #1 #2#3#4#5 #6\__fp_sep:
+ { + #1 - 1 \__fp_sep: {#2#3#4#5} {#6} \__fp_sep: }
+\cs_new:Npn \__fp_basics_pack_high:NNNNNw #1 #2#3#4#5 #6\__fp_sep:
{
\if_meaning:w 2 #1
\__fp_basics_pack_high_carry:w
\fi:
- ; {#2#3#4#5} {#6}
+ \__fp_sep: {#2#3#4#5} {#6}
}
-\cs_new:Npn \__fp_basics_pack_high_carry:w \fi: ; #1
- { \fi: + 1 ; {1000} }
-\cs_new:Npn \__fp_basics_pack_weird_low:NNNNw #1 #2#3#4 #5;
+\cs_new:Npn \__fp_basics_pack_high_carry:w \fi: \__fp_sep: #1
+ { \fi: + 1 \__fp_sep: {1000} }
+\cs_new:Npn \__fp_basics_pack_weird_low:NNNNw #1 #2#3#4 #5\__fp_sep:
{
\if_meaning:w 2 #1
+ 1
\fi:
\__fp_int_eval_end:
- #2#3#4; {#5} ;
+ #2#3#4\__fp_sep: {#5} \__fp_sep:
}
\cs_new:Npn \__fp_basics_pack_weird_high:NNNNNNNNw
- 1 #1#2#3#4 #5#6#7#8 #9; { ; {#1#2#3#4} {#5#6#7#8} {#9} }
+ 1 #1#2#3#4 #5#6#7#8 #9\__fp_sep: { \__fp_sep: {#1#2#3#4} {#5#6#7#8} {#9} }
\cs_new:Npn \__fp_decimate:nNnnnn #1
{
\cs:w
@@ -15498,17 +15650,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_end:
}
\cs_new:Npn \__fp_decimate_:Nnnnn #1 #2#3#4#5
- { #1 0 {#2#3} {#4#5} ; }
+ { #1 0 {#2#3} {#4#5} \__fp_sep: }
\cs_new:Npn \__fp_decimate_tiny:Nnnnn #1 #2#3#4#5
- { #1 1 { 0000 0000 } { 0000 0000 } 0 #2#3#4#5 ; }
+ { #1 1 { 0000 0000 } { 0000 0000 } 0 #2#3#4#5 \__fp_sep: }
\cs_new:Npn \__fp_tmp:w #1 #2 #3
{
\cs_new:cpn { __fp_decimate_ #1 :Nnnnn } ##1 ##2##3##4##5
{
\exp_after:wN ##1
\int_value:w
- \exp_after:wN \__fp_round_digit:Nw #2 ;
- \__fp_decimate_pack:nnnnnnnnnnw #3 ;
+ \exp_after:wN \__fp_round_digit:Nw #2 \__fp_sep:
+ \__fp_decimate_pack:nnnnnnnnnnw #3 \__fp_sep:
}
}
\__fp_tmp:w {i} {\use_none:nnn #50}{ 0{#2}#3{#4}#5 }
@@ -15532,18 +15684,19 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__fp_decimate_pack:nnnnnnw #1 #2#3#4#5#6
{ {#1} {#2#3#4#5#6} }
\cs_new:Npn \__fp_case_use:nw #1#2 \fi: #3 \s__fp { \fi: #1 \s__fp }
-\cs_new:Npn \__fp_case_return:nw #1#2 \fi: #3 ; { \fi: #1 }
-\cs_new:Npn \__fp_case_return_o:Nw #1#2 \fi: #3 \s__fp #4 ;
+\cs_new:Npn \__fp_case_return:nw #1#2 \fi: #3 \__fp_sep: { \fi: #1 }
+\cs_new:Npn \__fp_case_return_o:Nw #1#2 \fi: #3 \s__fp #4 \__fp_sep:
{ \fi: \exp_after:wN #1 }
\cs_new:Npn \__fp_case_return_same_o:w #1 \fi: #2 \s__fp
{ \fi: \__fp_exp_after_o:w \s__fp }
-\cs_new:Npn \__fp_case_return_o:Nww #1#2 \fi: #3 \s__fp #4 ; #5 ;
+\cs_new:Npn \__fp_case_return_o:Nww #1#2 \fi: #3 \s__fp #4 \__fp_sep: #5 \__fp_sep:
{ \fi: \exp_after:wN #1 }
-\cs_new:Npn \__fp_case_return_i_o:ww #1 \fi: #2 \s__fp #3 ; \s__fp #4 ;
- { \fi: \__fp_exp_after_o:w \s__fp #3 ; }
-\cs_new:Npn \__fp_case_return_ii_o:ww #1 \fi: #2 \s__fp #3 ;
+\cs_new:Npn \__fp_case_return_i_o:ww
+ #1 \fi: #2 \s__fp #3 \__fp_sep: \s__fp #4 \__fp_sep:
+ { \fi: \__fp_exp_after_o:w \s__fp #3 \__fp_sep: }
+\cs_new:Npn \__fp_case_return_ii_o:ww #1 \fi: #2 \s__fp #3 \__fp_sep:
{ \fi: \__fp_exp_after_o:w }
-\prg_new_conditional:Npnn \__fp_int:w \s__fp \__fp_chk:w #1 #2 #3 #4;
+\prg_new_conditional:Npnn \__fp_int:w \s__fp \__fp_chk:w #1 #2 #3 #4\__fp_sep:
{ TF , T , F , p }
{
\if_case:w #1 \exp_stop_f:
@@ -15562,26 +15715,26 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__fp_small_int:wTF \s__fp \__fp_chk:w #1#2
{
\if_case:w #1 \exp_stop_f:
- \__fp_case_return:nw { \__fp_small_int_true:wTF 0 ; }
+ \__fp_case_return:nw { \__fp_small_int_true:wTF 0 \__fp_sep: }
\or: \exp_after:wN \__fp_small_int_normal:NnwTF
\or:
\__fp_case_return:nw
{
\exp_after:wN \__fp_small_int_true:wTF \int_value:w
- \if_meaning:w 2 #2 - \fi: 1 0000 0000 ;
+ \if_meaning:w 2 #2 - \fi: 1 0000 0000 \__fp_sep:
}
\else: \__fp_case_return:nw \use_ii:nn
\fi:
#2
}
-\cs_new:Npn \__fp_small_int_true:wTF #1; #2#3 { #2 {#1} }
-\cs_new:Npn \__fp_small_int_normal:NnwTF #1#2#3;
+\cs_new:Npn \__fp_small_int_true:wTF #1\__fp_sep: #2#3 { #2 {#1} }
+\cs_new:Npn \__fp_small_int_normal:NnwTF #1#2#3\__fp_sep:
{
\__fp_decimate:nNnnnn { \c__fp_prec_int - #2 }
\__fp_small_int_test:NnnwNw
#3 #1
}
-\cs_new:Npn \__fp_small_int_test:NnnwNw #1#2#3#4; #5
+\cs_new:Npn \__fp_small_int_test:NnnwNw #1#2#3#4\__fp_sep: #5
{
\if_meaning:w 0 #1
\exp_after:wN \__fp_small_int_true:wTF
@@ -15591,7 +15744,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
#3
\fi:
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\else:
\exp_after:wN \use_ii:nn
\fi:
@@ -15647,19 +15800,21 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_protected:Npn \__fp_trap_invalid_operation_set:N #1
{
\exp_args:Nno \use:n
- { \cs_set:Npn \__fp_invalid_operation:nnw ##1##2##3; }
+ { \cs_set:Npn \__fp_invalid_operation:nnw ##1##2##3\__fp_sep: }
{
#1
- \__fp_error:nnfn { invalid } {##2} { \fp_to_tl:n { ##3; } } { }
+ \__fp_error:nnfn { invalid } {##2} { \fp_to_tl:n { ##3\__fp_sep: } } { }
\flag_ensure_raised:N \l_fp_invalid_operation_flag
##1
}
\exp_args:Nno \use:n
- { \cs_set:Npn \__fp_invalid_operation_o:Nww ##1##2; ##3; }
+ { \cs_set:Npn \__fp_invalid_operation_o:Nww ##1##2\__fp_sep: ##3\__fp_sep: }
{
#1
\__fp_error:nffn { invalid-ii }
- { \fp_to_tl:n { ##2; } } { \fp_to_tl:n { ##3; } } {##1}
+ { \fp_to_tl:n { ##2\__fp_sep: } }
+ { \fp_to_tl:n { ##3\__fp_sep: } }
+ {##1}
\flag_ensure_raised:N \l_fp_invalid_operation_flag
\exp_after:wN \c_nan_fp
}
@@ -15681,19 +15836,23 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_protected:Npn \__fp_trap_division_by_zero_set:N #1
{
\exp_args:Nno \use:n
- { \cs_set:Npn \__fp_division_by_zero_o:Nnw ##1##2##3; }
+ { \cs_set:Npn \__fp_division_by_zero_o:Nnw ##1##2##3\__fp_sep: }
{
#1
- \__fp_error:nnfn { zero-div } {##2} { \fp_to_tl:n { ##3; } } { }
+ \__fp_error:nnfn { zero-div } {##2} { \fp_to_tl:n { ##3\__fp_sep: } } { }
\flag_ensure_raised:N \l_fp_division_by_zero_flag
\exp_after:wN ##1
}
\exp_args:Nno \use:n
- { \cs_set:Npn \__fp_division_by_zero_o:NNww ##1##2##3; ##4; }
+ {
+ \cs_set:Npn \__fp_division_by_zero_o:NNww ##1##2##3\__fp_sep: ##4\__fp_sep:
+ }
{
#1
\__fp_error:nffn { zero-div-ii }
- { \fp_to_tl:n { ##3; } } { \fp_to_tl:n { ##4; } } {##2}
+ { \fp_to_tl:n { ##3\__fp_sep: } }
+ { \fp_to_tl:n { ##4\__fp_sep: } }
+ {##2}
\flag_ensure_raised:N \l_fp_division_by_zero_flag
\exp_after:wN ##1
}
@@ -15717,23 +15876,23 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_protected:Npn \__fp_trap_overflow_set:NnNn #1#2#3#4
{
\exp_args:Nno \use:n
- { \cs_set:cpn { __fp_ #2 :w } \s__fp \__fp_chk:w ##1##2##3; }
+ { \cs_set:cpn { __fp_ #2 :w } \s__fp \__fp_chk:w ##1##2##3\__fp_sep: }
{
#1
\__fp_error:nffn
{ flow \if_meaning:w 1 ##1 -to \fi: }
- { \fp_to_tl:n { \s__fp \__fp_chk:w ##1##2##3; } }
+ { \fp_to_tl:n { \s__fp \__fp_chk:w ##1##2##3\__fp_sep: } }
{ \token_if_eq_meaning:NNF 0 ##2 { - } #4 }
{#2}
\flag_ensure_raised:c { l_fp_#2_flag }
#3 ##2
}
}
-\cs_new:Npn \__fp_invalid_operation:nnw #1#2#3; { }
-\cs_new:Npn \__fp_invalid_operation_o:Nww #1#2; #3; { }
+\cs_new:Npn \__fp_invalid_operation:nnw #1#2#3\__fp_sep: { }
+\cs_new:Npn \__fp_invalid_operation_o:Nww #1#2\__fp_sep: #3\__fp_sep: { }
\cs_new:Npn \__fp_invalid_operation_tl_o:ff #1 #2 { }
-\cs_new:Npn \__fp_division_by_zero_o:Nnw #1#2#3; { }
-\cs_new:Npn \__fp_division_by_zero_o:NNww #1#2#3; #4; { }
+\cs_new:Npn \__fp_division_by_zero_o:Nnw #1#2#3\__fp_sep: { }
+\cs_new:Npn \__fp_division_by_zero_o:NNww #1#2#3\__fp_sep: #4\__fp_sep: { }
\cs_new:Npn \__fp_overflow:w { }
\cs_new:Npn \__fp_underflow:w { }
\fp_trap:nn { invalid_operation } { error }
@@ -15871,7 +16030,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\c_zero_int
}
\cs_new_eq:NN \__fp_round:NNN \__fp_round_to_nearest:NNN
-\cs_new:Npn \__fp_round_s:NNNw #1 #2 #3 #4;
+\cs_new:Npn \__fp_round_s:NNNw #1 #2 #3 #4\__fp_sep:
{
\exp_after:wN \__fp_round:NNN
\exp_after:wN #1
@@ -15885,9 +16044,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\fi:
#3
- ;
+ \__fp_sep:
}
-\cs_new:Npn \__fp_round_digit:Nw #1 #2;
+\cs_new:Npn \__fp_round_digit:Nw #1 #2\__fp_sep:
{
\if_int_odd:w \if_meaning:w 0 #1 1 \else:
\if_meaning:w 5 #1 1 \else:
@@ -15947,7 +16106,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\exp_after:wN \c_nan_fp
}
-\cs_new:Npn \__fp_round:Nwww #1#2 ; #3 ; \s__fp \__fp_chk:w #4#5#6 ; #7 @
+\cs_new:Npn \__fp_round:Nwww
+ #1#2 \__fp_sep: #3 \__fp_sep: \s__fp \__fp_chk:w #4#5#6 \__fp_sep: #7 @
{
\cs_if_eq:NNTF #1 \__fp_round_to_nearest:NNN
{
@@ -15960,7 +16120,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\if_case:w #5 \exp_stop_f: _pinf \or: \else: _ninf \fi: \fi:
:NNN
}
- #2 ; #3 ;
+ #2 \__fp_sep: #3 \__fp_sep:
}
{
\__fp_error:nnnn { num-args } { round () } { 1 } { 3 }
@@ -15984,11 +16144,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
}
-\cs_new:Npn \__fp_round:Nww #1#2 ; #3 ;
+\cs_new:Npn \__fp_round:Nww #1#2 \__fp_sep: #3 \__fp_sep:
{
- \__fp_small_int:wTF #3; { \__fp_round:Nwn #1#2; }
+ \__fp_small_int:wTF #3\__fp_sep: { \__fp_round:Nwn #1#2\__fp_sep: }
{
- \if:w 3 \__fp_kind:w #3 ;
+ \if:w 3 \__fp_kind:w #3 \__fp_sep:
\exp_after:wN \use_i:nn
\else:
\exp_after:wN \use_ii:nn
@@ -15997,11 +16157,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\__fp_invalid_operation_tl_o:ff
{ \__fp_round_name_from_cs:N #1 }
- { \__fp_array_to_clist:n { #2; #3; } }
+ { \__fp_array_to_clist:n { #2\__fp_sep: #3\__fp_sep: } }
}
}
}
-\cs_new:Npn \__fp_round:Nwn #1 \s__fp \__fp_chk:w #2#3#4; #5
+\cs_new:Npn \__fp_round:Nwn #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: #5
{
\if_meaning:w 1 #2
\exp_after:wN \__fp_round_normal:NwNNnw
@@ -16010,14 +16170,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\exp_after:wN \__fp_exp_after_o:w
\fi:
- \s__fp \__fp_chk:w #2#3#4;
+ \s__fp \__fp_chk:w #2#3#4\__fp_sep:
}
-\cs_new:Npn \__fp_round_normal:NwNNnw #1#2 \s__fp \__fp_chk:w 1#3#4#5;
+\cs_new:Npn \__fp_round_normal:NwNNnw #1#2 \s__fp \__fp_chk:w 1#3#4#5\__fp_sep:
{
\__fp_decimate:nNnnnn { \c__fp_prec_int - #4 - #2 }
\__fp_round_normal:NnnwNNnn #5 #1 #3 {#4} {#2}
}
-\cs_new:Npn \__fp_round_normal:NnnwNNnn #1#2#3#4; #5#6
+\cs_new:Npn \__fp_round_normal:NnnwNNnn #1#2#3#4\__fp_sep: #5#6
{
\exp_after:wN \__fp_round_normal:NNwNnn
\int_value:w \__fp_int_eval:w
@@ -16035,7 +16195,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\use_none:nnnnnnn #3
#1
\__fp_int_eval_end:
- 0000 0000 0000 0000 ; #6
+ 0000 0000 0000 0000 \__fp_sep: #6
}
\cs_new:Npn \__fp_round_pack:Nw #1
{ \if_meaning:w 2 #1 + 1 \fi: \__fp_int_eval_end: }
@@ -16048,14 +16208,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN
\__fp_round_normal_end:wwNnn
- ; #2
+ \__fp_sep: #2
}
-\cs_new:Npn \__fp_round_normal_end:wwNnn #1;#2;#3#4#5
+\cs_new:Npn \__fp_round_normal_end:wwNnn #1\__fp_sep:#2\__fp_sep:#3#4#5
{
\exp_after:wN \__fp_exp_after_o:w \exp:w \exp_end_continue_f:w
- \__fp_sanitize:Nw #3 #4 ; #1 ;
+ \__fp_sanitize:Nw #3 #4 \__fp_sep: #1 \__fp_sep:
}
-\cs_new:Npn \__fp_round_special:NwwNnn #1#2;#3;#4#5#6
+\cs_new:Npn \__fp_round_special:NwwNnn #1#2\__fp_sep:#3\__fp_sep:#4#5#6
{
\if_meaning:w 0 #1
\__fp_case_return:nw
@@ -16066,12 +16226,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w \__fp_int_eval:w 1
\if_meaning:w 1 #1 -#6 \else: +#5 \fi:
\fi:
- ;
+ \__fp_sep:
}
-\cs_new:Npn \__fp_round_special_aux:Nw #1#2;
+\cs_new:Npn \__fp_round_special_aux:Nw #1#2\__fp_sep:
{
\exp_after:wN \__fp_exp_after_o:w \exp:w \exp_end_continue_f:w
- \__fp_sanitize:Nw #1#2; {1000}{0000}{0000}{0000};
+ \__fp_sanitize:Nw #1#2\__fp_sep: {1000}{0000}{0000}{0000}\__fp_sep:
}
%% File: l3fp-parse.dtx
\int_const:Nn \c__fp_prec_func_int { 16 }
@@ -16091,7 +16251,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_const:Nn \c__fp_prec_end_int { 0 }
\cs_new:Npn \__fp_parse_expand:w #1 { \exp_end_continue_f:w #1 }
\cs_new:Npn \__fp_parse_return_semicolon:w
- #1 \fi: \__fp_parse_expand:w { \fi: ; #1 }
+ #1 \fi: \__fp_parse_expand:w { \fi: \__fp_sep: #1 }
\cs_set_protected:Npn \__fp_tmp:w #1 #2 #3
{
\cs_new:cpn { __fp_parse_digits_ #1 :N } ##1
@@ -16104,14 +16264,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_parse_expand:w
}
}
-\__fp_tmp:w {vii} \__fp_parse_digits_vi:N { 0000000 ; 7 }
-\__fp_tmp:w {vi} \__fp_parse_digits_v:N { 000000 ; 6 }
-\__fp_tmp:w {v} \__fp_parse_digits_iv:N { 00000 ; 5 }
-\__fp_tmp:w {iv} \__fp_parse_digits_iii:N { 0000 ; 4 }
-\__fp_tmp:w {iii} \__fp_parse_digits_ii:N { 000 ; 3 }
-\__fp_tmp:w {ii} \__fp_parse_digits_i:N { 00 ; 2 }
-\__fp_tmp:w {i} \__fp_parse_digits_:N { 0 ; 1 }
-\cs_new:Npn \__fp_parse_digits_:N { ; ; 0 }
+\__fp_tmp:w {vii} \__fp_parse_digits_vi:N { 0000000 \__fp_sep: 7 }
+\__fp_tmp:w {vi} \__fp_parse_digits_v:N { 000000 \__fp_sep: 6 }
+\__fp_tmp:w {v} \__fp_parse_digits_iv:N { 00000 \__fp_sep: 5 }
+\__fp_tmp:w {iv} \__fp_parse_digits_iii:N { 0000 \__fp_sep: 4 }
+\__fp_tmp:w {iii} \__fp_parse_digits_ii:N { 000 \__fp_sep: 3 }
+\__fp_tmp:w {ii} \__fp_parse_digits_i:N { 00 \__fp_sep: 2 }
+\__fp_tmp:w {i} \__fp_parse_digits_:N { 0 \__fp_sep: 1 }
+\cs_new:Npn \__fp_parse_digits_:N { \__fp_sep: \__fp_sep: 0 }
\cs_new:Npn \__fp_parse_one:Nw #1 #2
{
\if_catcode:w \scan_stop: \exp_not:N #2
@@ -16211,26 +16371,26 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_parse_one_register_auxii:wwwNw
}
\exp_not:N \exp_after:wN { \exp_not:N \tex_the:D #1 }
- ; \exp_not:N \__fp_parse_one_register_dim:ww
- \tl_to_str:n { pt } ; \exp_not:N \__fp_parse_one_register_mu:www
- . \tl_to_str:n { pt } ; \exp_not:N \__fp_parse_one_register_int:www
+ \__fp_sep: \exp_not:N \__fp_parse_one_register_dim:ww
+ \tl_to_str:n { pt } \__fp_sep: \exp_not:N \__fp_parse_one_register_mu:www
+ . \tl_to_str:n { pt } \__fp_sep: \exp_not:N \__fp_parse_one_register_int:www
\s__fp_stop
}
\exp_args:Nno \use:nn
{ \cs_new:Npn \__fp_parse_one_register_auxii:wwwNw #1 . #2 }
- { \tl_to_str:n { pt } #3 ; #4#5 \s__fp_stop }
- { #4 #1.#2; }
+ { \tl_to_str:n { pt } #3 \__fp_sep: #4#5 \s__fp_stop }
+ { #4 #1.#2\__fp_sep: }
\exp_args:Nno \use:nn
{ \cs_new:Npn \__fp_parse_one_register_mu:www #1 }
- { \tl_to_str:n { mu } ; #2 ; }
- { \__fp_parse_one_register_dim:ww #1 ; }
-\cs_new:Npn \__fp_parse_one_register_int:www #1; #2.; #3;
+ { \tl_to_str:n { mu } \__fp_sep: #2 \__fp_sep: }
+ { \__fp_parse_one_register_dim:ww #1 \__fp_sep: }
+\cs_new:Npn \__fp_parse_one_register_int:www #1\__fp_sep: #2.\__fp_sep: #3\__fp_sep:
{ \__fp_parse:n { #1 e #3 } }
-\cs_new:Npn \__fp_parse_one_register_dim:ww #1; #2;
+\cs_new:Npn \__fp_parse_one_register_dim:ww #1\__fp_sep: #2\__fp_sep:
{
\exp_after:wN \__fp_from_dim_test:ww
\int_value:w #2 \exp_after:wN ,
- \int_value:w \dim_to_decimal_in_sp:n { #1 pt } ;
+ \int_value:w \dim_to_decimal_in_sp:n { #1 pt } \__fp_sep:
}
\cs_new:Npn \__fp_parse_one_register_special:N #1
{
@@ -16263,11 +16423,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_parse_one_register_wd:Nw
#4 \__fp_parse_expand:w e
}
-\cs_new:Npn \__fp_parse_one_register_wd:Nw #1#2 ;
+\cs_new:Npn \__fp_parse_one_register_wd:Nw #1#2 \__fp_sep:
{
\exp_after:wN \__fp_from_dim_test:ww
\exp_after:wN 0 \exp_after:wN ,
- \int_value:w \dim_to_decimal_in_sp:n { #1 #2 } ;
+ \int_value:w \dim_to_decimal_in_sp:n { #1 #2 } \__fp_sep:
}
\cs_new:Npn \__fp_parse_one_digit:NN #1
{
@@ -16300,7 +16460,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\__fp_parse_expand:w
}
-\cs_new:Npn \__fp_parse_word:Nw #1#2;
+\cs_new:Npn \__fp_parse_word:Nw #1#2\__fp_sep:
{
\cs_if_exist_use:cF { __fp_parse_word_#2:N }
{
@@ -16405,7 +16565,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new:Npn \__fp_parse_zero:
{
- \exp_after:wN ; \exp_after:wN 1
+ \exp_after:wN \__fp_sep: \exp_after:wN 1
\int_value:w \__fp_parse_exponent:N
}
\cs_new:Npn \__fp_parse_small:N #1
@@ -16417,7 +16577,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_parse_digits_vii:N
\exp:w \__fp_parse_expand:w
}
-\cs_new:Npn \__fp_parse_small_leading:wwNN 1 #1 ; #2; #3 #4
+\cs_new:Npn \__fp_parse_small_leading:wwNN 1 #1 \__fp_sep: #2\__fp_sep: #3 #4
{
#1 #2
\exp_after:wN \__fp_parse_pack_trailing:NNNNNNww
@@ -16434,7 +16594,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\__fp_parse_expand:w
}
-\cs_new:Npn \__fp_parse_small_trailing:wwNN 1 #1 ; #2; #3 #4
+\cs_new:Npn \__fp_parse_small_trailing:wwNN 1 #1 \__fp_sep: #2\__fp_sep: #3 #4
{
#1 #2
\if_int_compare:w 9 < 1 \token_to_str:N #4 \exp_stop_f:
@@ -16447,19 +16607,20 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\__fp_parse_expand:w
}
-\cs_new:Npn \__fp_parse_pack_trailing:NNNNNNww #1 #2 #3#4#5#6 #7; #8 ;
+\cs_new:Npn \__fp_parse_pack_trailing:NNNNNNww
+ #1 #2 #3#4#5#6 #7\__fp_sep: #8 \__fp_sep:
{
\if_meaning:w 2 #2 + 1 \fi:
- ; #8 + #1 ; {#3#4#5#6} {#7};
+ \__fp_sep: #8 + #1 \__fp_sep: {#3#4#5#6} {#7}\__fp_sep:
}
-\cs_new:Npn \__fp_parse_pack_leading:NNNNNww #1 #2#3#4#5 #6; #7;
+\cs_new:Npn \__fp_parse_pack_leading:NNNNNww #1 #2#3#4#5 #6\__fp_sep: #7\__fp_sep:
{
+ #7
\if_meaning:w 2 #1 \__fp_parse_pack_carry:w \fi:
- ; 0 {#2#3#4#5} {#6}
+ \__fp_sep: 0 {#2#3#4#5} {#6}
}
-\cs_new:Npn \__fp_parse_pack_carry:w \fi: ; 0 #1
- { \fi: + 1 ; 0 {1000} }
+\cs_new:Npn \__fp_parse_pack_carry:w \fi: \__fp_sep: 0 #1
+ { \fi: + 1 \__fp_sep: 0 {1000} }
\cs_new:Npn \__fp_parse_large:N #1
{
\exp_after:wN \__fp_parse_large_leading:wwNN
@@ -16467,7 +16628,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_parse_digits_vii:N
\exp:w \__fp_parse_expand:w
}
-\cs_new:Npn \__fp_parse_large_leading:wwNN 1 #1 ; #2; #3 #4
+\cs_new:Npn \__fp_parse_large_leading:wwNN 1 #1 \__fp_sep: #2\__fp_sep: #3 #4
{
+ \c__fp_half_prec_int - #3
\exp_after:wN \__fp_parse_pack_leading:NNNNNww
@@ -16497,7 +16658,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\__fp_parse_expand:w
}
-\cs_new:Npn \__fp_parse_large_trailing:wwNN 1 #1 ; #2; #3 #4
+\cs_new:Npn \__fp_parse_large_trailing:wwNN 1 #1 \__fp_sep: #2\__fp_sep: #3 #4
{
\if_int_compare:w 9 < 1 \token_to_str:N #4 \exp_stop_f:
\exp_after:wN \__fp_parse_pack_trailing:NNNNNNww
@@ -16552,9 +16713,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\__fp_parse_expand:w
}
-\cs_new:Npn \__fp_parse_round_after:wN #1; #2
+\cs_new:Npn \__fp_parse_round_after:wN #1\__fp_sep: #2
{
- + #2 \exp_after:wN ;
+ + #2 \exp_after:wN \__fp_sep:
\int_value:w \__fp_int_eval:w #1 + \__fp_parse_exponent:N
}
\cs_new:Npn \__fp_parse_small_round:NN #1#2
@@ -16604,7 +16765,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\__fp_parse_expand:w
}
-\cs_new:Npn \__fp_parse_large_round_aux:wNN #1 ; #2 #3
+\cs_new:Npn \__fp_parse_large_round_aux:wNN #1 \__fp_sep: #2 #3
{
+ #2
\exp_after:wN \__fp_parse_round_after:wN
@@ -16614,14 +16775,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_parse_round_loop:N
\exp:w \exp_after:wN \__fp_parse_expand:w
\else:
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\exp_after:wN 0
\exp_after:wN #3
\fi:
}
\cs_new:Npn \__fp_parse_exponent:Nw #1 #2 \__fp_parse_expand:w
{
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\int_value:w #2 \__fp_parse_exponent:N #1
}
\cs_new:Npn \__fp_parse_exponent:N #1
@@ -16639,7 +16800,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\if_int_compare:w \if_catcode:w \scan_stop: \exp_not:N #2
0 \else: `#2 \fi: > `9 \exp_stop_f:
- 0 \exp_after:wN ; \exp_after:wN #1
+ 0 \exp_after:wN \__fp_sep: \exp_after:wN #1
\else:
\exp_after:wN \__fp_parse_exponent_sign:N
\fi:
@@ -16665,7 +16826,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_parse_exponent_keep:NTF #1
{ \__fp_parse_return_semicolon:w #1 }
{
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\exp:w
}
\fi:
@@ -16722,12 +16883,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new:Npn \__fp_parse_apply_unary:NNNwN #1#2#3#4@#5
{
- \__fp_parse_apply_unary_chk:NwNw #4 @ ; . \s__fp_stop
+ \__fp_parse_apply_unary_chk:NwNw #4 @ \__fp_sep: . \s__fp_stop
\__fp_parse_apply_unary_type:NNN
#3 #2 #4 @
\exp:w \exp_end_continue_f:w #5 #1
}
-\cs_new:Npn \__fp_parse_apply_unary_chk:NwNw #1#2 ; #3#4 \s__fp_stop
+\cs_new:Npn \__fp_parse_apply_unary_chk:NwNw #1#2 \__fp_sep: #3#4 \s__fp_stop
{
\if_meaning:w @ #3 \else:
\token_if_eq_meaning:NNTF . #3
@@ -16841,7 +17002,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:cpn { __fp_parse_word_#1:N }
{
\__fp_exp_after_f:nw { \__fp_parse_infix:NN }
- \s__fp \__fp_chk:w 10 #2 ;
+ \s__fp \__fp_chk:w 10 #2 \__fp_sep:
}
}
\__fp_tmp:w {pt} { {1} {1000} {0000} {0000} {0000} }
@@ -16861,7 +17022,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\exp_after:wN \__fp_from_dim_test:ww
\exp_after:wN 0 \exp_after:wN ,
- \int_value:w \dim_to_decimal_in_sp:n { 1 #1 } \exp_after:wN ;
+ \int_value:w \dim_to_decimal_in_sp:n { 1 #1 } \exp_after:wN \__fp_sep:
\exp:w \exp_end_continue_f:w \__fp_parse_infix:NN
}
}
@@ -16950,7 +17111,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
#2
\__fp_invalid_operation_o:Nww #1
}
-\cs_new:Npn \__fp_binary_type_o:Nww #1 #2#3 ; #4
+\cs_new:Npn \__fp_binary_type_o:Nww #1 #2#3 \__fp_sep: #4
{
\exp_after:wN \__fp_parse_apply_binary_chk:NN
\cs:w
@@ -16961,9 +17122,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
_o:ww
\cs_end:
#1
- #2 #3 ; #4
+ #2 #3 \__fp_sep: #4
}
-\cs_new:Npn \__fp_binary_rev_type_o:Nww #1 #2#3 ; #4#5 ;
+\cs_new:Npn \__fp_binary_rev_type_o:Nww #1 #2#3 \__fp_sep: #4#5 \__fp_sep:
{
\exp_after:wN \__fp_parse_apply_binary_chk:NN
\cs:w
@@ -16974,12 +17135,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
_o:ww
\cs_end:
#1
- #4 #5 ; #2 #3 ;
+ #4 #5 \__fp_sep: #2 #3 \__fp_sep:
}
-\cs_new:Npn \__fp_parse_infix_after_operand:NwN #1 #2;
+\cs_new:Npn \__fp_parse_infix_after_operand:NwN #1 #2\__fp_sep:
{
\__fp_exp_after_f:nw { \__fp_parse_infix:NN #1 }
- #2;
+ #2\__fp_sep:
}
\cs_new:Npn \__fp_parse_infix:NN #1 #2
{
@@ -17103,7 +17264,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN #1
\exp:w \exp_end_continue_f:w
\__fp_exp_after_tuple_f:nw { }
- \s__fp_tuple \__fp_tuple_chk:w { #2 #4 } ;
+ \s__fp_tuple \__fp_tuple_chk:w { #2 #4 } \__fp_sep:
#5 #1
}
\cs_set_protected:Npn \__fp_tmp:w #1#2#3#4
@@ -17288,14 +17449,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
#1 #8 #9
}
-\cs_new:Npn \__fp_parse_apply_compare_aux:NNwN #1 #2 #3; #4
+\cs_new:Npn \__fp_parse_apply_compare_aux:NNwN #1 #2 #3\__fp_sep: #4
{
\if_meaning:w \__fp_parse_compare:NNNNNNN #4
\exp_after:wN \__fp_parse_continue_compare:NNwNN
\exp_after:wN #1
\exp_after:wN #2
\exp:w \exp_end_continue_f:w
- \__fp_exp_after_o:w #3;
+ \__fp_exp_after_o:w #3\__fp_sep:
\exp:w \exp_end_continue_f:w
\else:
\exp_after:wN \__fp_parse_continue:NwN
@@ -17315,7 +17476,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\__fp_error:nffn { bad-args }
{#1}
- { \fp_to_tl:n { \s__fp_tuple \__fp_tuple_chk:w {#3} ; } }
+ { \fp_to_tl:n { \s__fp_tuple \__fp_tuple_chk:w {#3} \__fp_sep: } }
{ }
\exp_after:wN \c_nan_fp
}
@@ -17330,11 +17491,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\__fp_error:nffn { bad-args }
{#2}
- { \fp_to_tl:n { \s__fp_tuple \__fp_tuple_chk:w {#4} ; } }
+ { \fp_to_tl:n { \s__fp_tuple \__fp_tuple_chk:w {#4} \__fp_sep: } }
{ }
\exp_after:wN \c_nan_fp
}
-\cs_new:Npn \__fp_parse_function_one_two_aux:nnw #1#2 #3; #4
+\cs_new:Npn \__fp_parse_function_one_two_aux:nnw #1#2 #3\__fp_sep: #4
{
\__fp_if_type_fp:NTwFw
#4 { }
@@ -17346,52 +17507,52 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_parse_function_one_two_error_o:w
}
\s__fp_stop
- \__fp_parse_function_one_two_auxii:nnw {#1} {#2} #3; #4
+ \__fp_parse_function_one_two_auxii:nnw {#1} {#2} #3\__fp_sep: #4
}
-\cs_new:Npn \__fp_parse_function_one_two_auxii:nnw #1#2#3; #4; #5
+\cs_new:Npn \__fp_parse_function_one_two_auxii:nnw #1#2#3\__fp_sep: #4\__fp_sep: #5
{
\if_meaning:w @ #5 \else:
\exp_after:wN \__fp_parse_function_one_two_error_o:w
\fi:
- \use_ii:nn {#1} { \use_none:n #2 } #3; #4; #5
+ \use_ii:nn {#1} { \use_none:n #2 } #3\__fp_sep: #4\__fp_sep: #5
}
-\cs_new:Npn \__fp_tuple_map_o:nw #1 \s__fp_tuple \__fp_tuple_chk:w #2 ;
+\cs_new:Npn \__fp_tuple_map_o:nw #1 \s__fp_tuple \__fp_tuple_chk:w #2 \__fp_sep:
{
\exp_after:wN \s__fp_tuple
\exp_after:wN \__fp_tuple_chk:w
\exp_after:wN {
\exp:w \exp_end_continue_f:w
\__fp_tuple_map_loop_o:nw {#1} #2
- { \s__fp \prg_break: } ;
+ { \s__fp \prg_break: } \__fp_sep:
\prg_break_point:
- \exp_after:wN } \exp_after:wN ;
+ \exp_after:wN } \exp_after:wN \__fp_sep:
}
-\cs_new:Npn \__fp_tuple_map_loop_o:nw #1#2#3 ;
+\cs_new:Npn \__fp_tuple_map_loop_o:nw #1#2#3 \__fp_sep:
{
\use_none:n #2
- #1 #2 #3 ;
+ #1 #2 #3 \__fp_sep:
\exp:w \exp_end_continue_f:w
\__fp_tuple_map_loop_o:nw {#1}
}
\cs_new:Npn \__fp_tuple_mapthread_o:nww #1
- \s__fp_tuple \__fp_tuple_chk:w #2 ;
- \s__fp_tuple \__fp_tuple_chk:w #3 ;
+ \s__fp_tuple \__fp_tuple_chk:w #2 \__fp_sep:
+ \s__fp_tuple \__fp_tuple_chk:w #3 \__fp_sep:
{
\exp_after:wN \s__fp_tuple
\exp_after:wN \__fp_tuple_chk:w
\exp_after:wN {
\exp:w \exp_end_continue_f:w
\__fp_tuple_mapthread_loop_o:nw {#1}
- #2 { \s__fp \prg_break: } ; @
- #3 { \s__fp \prg_break: } ;
+ #2 { \s__fp \prg_break: } \__fp_sep: @
+ #3 { \s__fp \prg_break: } \__fp_sep:
\prg_break_point:
- \exp_after:wN } \exp_after:wN ;
+ \exp_after:wN } \exp_after:wN \__fp_sep:
}
-\cs_new:Npn \__fp_tuple_mapthread_loop_o:nw #1#2#3 ; #4 @ #5#6 ;
+\cs_new:Npn \__fp_tuple_mapthread_loop_o:nw #1#2#3 \__fp_sep: #4 @ #5#6 \__fp_sep:
{
\use_none:n #2
\use_none:n #5
- #1 #2 #3 ; #5 #6 ;
+ #1 #2 #3 \__fp_sep: #5 #6 \__fp_sep:
\exp:w \exp_end_continue_f:w
\__fp_tuple_mapthread_loop_o:nw {#1} #4 @
}
@@ -17438,8 +17599,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__kernel_tl_gset:Nx #1 { \exp_not:f { \__fp_parse:n {#2} } } }
\cs_new_protected:Npn \fp_const:Nn #1#2
{ \tl_const:Ne #1 { \exp_not:f { \__fp_parse:n {#2} } } }
-\cs_generate_variant:Nn \fp_set:Nn {c}
-\cs_generate_variant:Nn \fp_gset:Nn {c}
+\cs_generate_variant:Nn \fp_set:Nn { NV , c , cV }
+\cs_generate_variant:Nn \fp_gset:Nn { NV , c , cV }
\cs_generate_variant:Nn \fp_const:Nn {c}
\cs_new_eq:NN \fp_set_eq:NN \tl_set_eq:NN
\cs_new_eq:NN \fp_gset_eq:NN \tl_gset_eq:NN
@@ -17479,9 +17640,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\__fp_show_validate:nn { #1 }
{
- \s__fp \__fp_chk:w ??? ;~ or \iow_newline:
- \s__fp_tuple \__fp_tuple_chk:w ? ;~ or \iow_newline:
- \s__fp_symbolic \__fp_symbolic_chk:w ? , ? ;
+ \s__fp \__fp_chk:w ??? \__fp_sep: or \iow_newline:
+ \s__fp_tuple \__fp_tuple_chk:w ? \__fp_sep: or \iow_newline:
+ \s__fp_symbolic \__fp_symbolic_chk:w ? , ? \__fp_sep:
}
}
\cs_new:Npn \__fp_show_validate_aux:n #1
@@ -17497,46 +17658,49 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \s__fp }
{
\__fp_show_validate:w #1 \s__fp
- \__fp_chk:w ??? ; \s__fp_stop
+ \__fp_chk:w ??? \__fp_sep: \s__fp_stop
}
{ \s__fp_tuple }
{
\__fp_tuple_show_validate:w #1
- \s__fp_tuple \__fp_tuple_chk:w ?? ; \s__fp_stop
+ \s__fp_tuple \__fp_tuple_chk:w ?? \__fp_sep: \s__fp_stop
}
{ \s__fp_symbolic }
{
\__fp_symbolic_show_validate:w #1
- \s__fp_symbolic \__fp_symbolic_chk:w ? , ?? ; \s__fp_stop
+ \s__fp_symbolic \__fp_symbolic_chk:w ? , ?? \__fp_sep: \s__fp_stop
}
}
{ #2 }
}
}
\cs_new:Npn \__fp_show_validate:w
- #1 \s__fp \__fp_chk:w #2#3#4#5 ; #6 \s__fp_stop
+ #1 \s__fp \__fp_chk:w #2#3#4#5 \__fp_sep: #6 \s__fp_stop
{
\str_if_eq:nnF { #2 } {?}
{
\token_if_eq_meaning:NNTF #2 1
- { \s__fp \__fp_chk:w #2 #3 { #4 } #5 ; }
- { \s__fp \__fp_chk:w #2 #3 #4 #5 ; }
+ { \s__fp \__fp_chk:w #2 #3 { #4 } #5 \__fp_sep: }
+ { \s__fp \__fp_chk:w #2 #3 #4 #5 \__fp_sep: }
\__fp_show_validate_aux:n { #6 }
}
}
\cs_new:Npn \__fp_tuple_show_validate:w
- #1 \s__fp_tuple \__fp_tuple_chk:w #2#3 ; #4 \s__fp_stop
+ #1 \s__fp_tuple \__fp_tuple_chk:w #2#3 \__fp_sep: #4 \s__fp_stop
{
\str_if_eq:nnF { #2 } {?}
- { \s__fp_tuple \__fp_tuple_chk:w { \__fp_show_validate_aux:n { #2 } } ; }
+ {
+ \s__fp_tuple \__fp_tuple_chk:w { \__fp_show_validate_aux:n { #2 } }
+ \__fp_sep:
+ }
}
\cs_new:Npn \__fp_symbolic_show_validate:w
- #1 \s__fp_symbolic \__fp_symbolic_chk:w #2 , #3#4 ; #5 \s__fp_stop
+ #1 \s__fp_symbolic \__fp_symbolic_chk:w #2 , #3#4 \__fp_sep: #5 \s__fp_stop
{
\str_if_eq:nnF { #2 } {?}
{
\s__fp_symbolic \__fp_symbolic_chk:w \exp_not:n { #2 } ,
- { \__fp_show_validate_aux:n { #3 } };
+ { \__fp_show_validate_aux:n { #3 } }\__fp_sep:
\__fp_show_validate_aux:n { #5 }
}
}
@@ -17572,7 +17736,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_compare_return:w
\exp:w \exp_end_continue_f:w \__fp_parse:n {#1}
}
-\cs_new:Npn \__fp_compare_return:w #1#2#3;
+\cs_new:Npn \__fp_compare_return:w #1#2#3\__fp_sep:
{
\if_charcode:w 0
\__fp_if_type_fp:NTwFw
@@ -17594,12 +17758,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prg_return_false:
\fi:
}
-\cs_new:Npn \__fp_compare_aux:wn #1; #2
+\cs_new:Npn \__fp_compare_aux:wn #1\__fp_sep: #2
{
\exp_after:wN \__fp_compare_back_any:ww
- \exp:w \exp_end_continue_f:w \__fp_parse:n {#2} #1;
+ \exp:w \exp_end_continue_f:w \__fp_parse:n {#2} #1\__fp_sep:
}
-\cs_new:Npn \__fp_compare_back:ww #1#2; #3#4;
+\cs_new:Npn \__fp_compare_back:ww #1#2\__fp_sep: #3#4\__fp_sep:
{
\cs:w
__fp
@@ -17608,9 +17772,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_type_from_scan:N #3
:ww
\cs_end:
- #1#2; #3#4;
+ #1#2\__fp_sep: #3#4\__fp_sep:
}
-\cs_new:Npn \__fp_compare_back_any:ww #1#2; #3
+\cs_new:Npn \__fp_compare_back_any:ww #1#2\__fp_sep: #3
{
\__fp_if_type_fp:NTwFw
#1 { \__fp_if_type_fp:NTwFw #3 \use_i:nn \s__fp \use_ii:nn \s__fp_stop }
@@ -17625,11 +17789,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
:ww
\cs_end:
}
- #1#2 ; #3
+ #1#2 \__fp_sep: #3
}
\cs_new:Npn \__fp_bcmp:ww
- \s__fp \__fp_chk:w #1 #2 #3;
- \s__fp \__fp_chk:w #4 #5 #6;
+ \s__fp \__fp_chk:w #1 #2 #3\__fp_sep:
+ \s__fp \__fp_chk:w #4 #5 #6\__fp_sep:
{
\int_value:w
\if_meaning:w 3 #1 \exp_after:wN \__fp_compare_nan:w \fi:
@@ -17638,7 +17802,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\if_meaning:w #2 #5
\if_meaning:w #1 #4
\if_meaning:w 1 #1
- \__fp_compare_npos:nwnw #6; #3;
+ \__fp_compare_npos:nwnw #6\__fp_sep: #3\__fp_sep:
\else:
0
\fi:
@@ -17655,36 +17819,36 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_stop_f:
}
\cs_new:Npn \__fp_compare_nan:w #1 \fi: \exp_stop_f: { 2 \exp_stop_f: }
-\cs_new:Npn \__fp_compare_back_tuple:ww #1; #2; { 2 }
-\cs_new:Npn \__fp_tuple_compare_back:ww #1; #2; { 2 }
+\cs_new:Npn \__fp_compare_back_tuple:ww #1\__fp_sep: #2\__fp_sep: { 2 }
+\cs_new:Npn \__fp_tuple_compare_back:ww #1\__fp_sep: #2\__fp_sep: { 2 }
\cs_new:Npn \__fp_tuple_compare_back_tuple:ww
- \s__fp_tuple \__fp_tuple_chk:w #1;
- \s__fp_tuple \__fp_tuple_chk:w #2;
+ \s__fp_tuple \__fp_tuple_chk:w #1\__fp_sep:
+ \s__fp_tuple \__fp_tuple_chk:w #2\__fp_sep:
{
\int_compare:nNnTF { \__fp_array_count:n {#1} } =
{ \__fp_array_count:n {#2} }
{
\int_value:w 0
\__fp_tuple_compare_back_loop:w
- #1 { \s__fp \prg_break: } ; @
- #2 { \s__fp \prg_break: } ;
+ #1 { \s__fp \prg_break: } \__fp_sep: @
+ #2 { \s__fp \prg_break: } \__fp_sep:
\prg_break_point:
\exp_stop_f:
}
{ 2 }
}
-\cs_new:Npn \__fp_tuple_compare_back_loop:w #1#2 ; #3 @ #4#5 ;
+\cs_new:Npn \__fp_tuple_compare_back_loop:w #1#2 \__fp_sep: #3 @ #4#5 \__fp_sep:
{
\use_none:n #1
\use_none:n #4
\if_int_compare:w
- \__fp_compare_back_any:ww #1 #2 ; #4 #5 ; = \c_zero_int
+ \__fp_compare_back_any:ww #1 #2 \__fp_sep: #4 #5 \__fp_sep: = \c_zero_int
\else:
2 \exp_after:wN \prg_break:
\fi:
\__fp_tuple_compare_back_loop:w #3 @
}
-\cs_new:Npn \__fp_compare_npos:nwnw #1#2; #3#4;
+\cs_new:Npn \__fp_compare_npos:nwnw #1#2\__fp_sep: #3#4\__fp_sep:
{
\if_int_compare:w #1 = #3 \exp_stop_f:
\__fp_compare_significand:nnnnnnnn #2 #4
@@ -17768,20 +17932,22 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp:w \exp_end_continue_f:w \__fp_parse:n {#3}
}
\cs_generate_variant:Nn \fp_step_function:nnnN { nnnc }
-\cs_new:Npn \__fp_step:wwwN #1#2; #3#4; #5#6; #7
+\cs_new:Npn \__fp_step:wwwN #1#2\__fp_sep: #3#4\__fp_sep: #5#6\__fp_sep: #7
{
\__fp_if_type_fp:NTwFw #1 { } \s__fp \prg_break: \s__fp_stop
\__fp_if_type_fp:NTwFw #3 { } \s__fp \prg_break: \s__fp_stop
\__fp_if_type_fp:NTwFw #5 { } \s__fp \prg_break: \s__fp_stop
- \use_i:nnnn { \__fp_step_fp:wwwN #1#2; #3#4; #5#6; #7 }
+ \use_i:nnnn
+ { \__fp_step_fp:wwwN #1#2\__fp_sep: #3#4\__fp_sep: #5#6\__fp_sep: #7 }
\prg_break_point:
\use:n
{
- \__fp_error:nfff { step-tuple } { \fp_to_tl:n { #1#2 ; } }
- { \fp_to_tl:n { #3#4 ; } } { \fp_to_tl:n { #5#6 ; } }
+ \__fp_error:nfff { step-tuple } { \fp_to_tl:n { #1#2 \__fp_sep: } }
+ { \fp_to_tl:n { #3#4 \__fp_sep: } } { \fp_to_tl:n { #5#6 \__fp_sep: } }
}
}
-\cs_new:Npn \__fp_step_fp:wwwN #1 ; \s__fp \__fp_chk:w #2#3#4 ; #5; #6
+\cs_new:Npn \__fp_step_fp:wwwN
+ #1 \__fp_sep: \s__fp \__fp_chk:w #2#3#4 \__fp_sep: #5\__fp_sep: #6
{
\token_if_eq_meaning:NNTF #2 1
{
@@ -17797,11 +17963,15 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
{
\__fp_error:nnfn { bad-step } { }
- { \fp_to_tl:n { \s__fp \__fp_chk:w #2#3#4 ; } } {#6}
+ { \fp_to_tl:n { \s__fp \__fp_chk:w #2#3#4 \__fp_sep: } } {#6}
}
\use_none:nnnnn
}
- { #1 ; } { \c_nan_fp } { \s__fp \__fp_chk:w #2#3#4 ; } { #5 ; } #6
+ { #1 \__fp_sep: }
+ { \c_nan_fp }
+ { \s__fp \__fp_chk:w #2#3#4 \__fp_sep: }
+ { #5 \__fp_sep: }
+ #6
}
\cs_new:Npn \__fp_step:NnnnnN #1#2#3#4#5#6
{
@@ -17865,11 +18035,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_minmax_loop:Nww \exp_after:wN -
\fi:
#2
- \s__fp \__fp_chk:w 2 #1 \s__fp_exact ;
- \s__fp \__fp_chk:w { 3 \__fp_minmax_break_o:w } ;
+ \s__fp \__fp_chk:w 2 #1 \s__fp_exact \__fp_sep:
+ \s__fp \__fp_chk:w { 3 \__fp_minmax_break_o:w } \__fp_sep:
}
\cs_new:Npn \__fp_minmax_loop:Nww
- #1 \s__fp \__fp_chk:w #2#3; \s__fp \__fp_chk:w #4#5;
+ #1 \s__fp \__fp_chk:w #2#3\__fp_sep: \s__fp \__fp_chk:w #4#5\__fp_sep:
{
\if_meaning:w 3 #4
\if_meaning:w 3 #2
@@ -17880,8 +18050,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\if_int_compare:w
\__fp_compare_back:ww
- \s__fp \__fp_chk:w #4#5;
- \s__fp \__fp_chk:w #2#3;
+ \s__fp \__fp_chk:w #4#5\__fp_sep:
+ \s__fp \__fp_chk:w #2#3\__fp_sep:
= #1 1 \exp_stop_f:
\__fp_minmax_auxii:ww
\else:
@@ -17889,16 +18059,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\fi:
\__fp_minmax_loop:Nww #1
- \s__fp \__fp_chk:w #2#3;
- \s__fp \__fp_chk:w #4#5;
+ \s__fp \__fp_chk:w #2#3\__fp_sep:
+ \s__fp \__fp_chk:w #4#5\__fp_sep:
}
-\cs_new:Npn \__fp_minmax_auxi:ww #1 \fi: \fi: #2 \s__fp #3 ; \s__fp #4;
- { \fi: \fi: #2 \s__fp #3 ; }
-\cs_new:Npn \__fp_minmax_auxii:ww #1 \fi: \fi: #2 \s__fp #3 ;
+\cs_new:Npn \__fp_minmax_auxi:ww
+ #1 \fi: \fi: #2 \s__fp #3 \__fp_sep: \s__fp #4\__fp_sep:
+ { \fi: \fi: #2 \s__fp #3 \__fp_sep: }
+\cs_new:Npn \__fp_minmax_auxii:ww #1 \fi: \fi: #2 \s__fp #3 \__fp_sep:
{ \fi: \fi: #2 }
-\cs_new:Npn \__fp_minmax_break_o:w #1 \fi: \fi: #2 \s__fp #3; #4;
- { \fi: \__fp_exp_after_o:w \s__fp #3; }
-\cs_new:Npn \__fp_not_o:w #1 \s__fp \__fp_chk:w #2#3; @
+\cs_new:Npn \__fp_minmax_break_o:w #1 \fi: \fi: #2 \s__fp #3\__fp_sep: #4\__fp_sep:
+ { \fi: \__fp_exp_after_o:w \s__fp #3\__fp_sep: }
+\cs_new:Npn \__fp_not_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @
{
\if_meaning:w 0 #2
\exp_after:wN \exp_after:wN \exp_after:wN \c_one_fp
@@ -17910,30 +18081,31 @@ Type H <return> for immediate help}\def~{\errmessage{%
\group_begin:
\char_set_catcode_letter:N &
\char_set_catcode_letter:N |
- \cs_new:Npn \__fp_&_o:ww #1 \s__fp \__fp_chk:w #2#3;
+ \cs_new:Npn \__fp_&_o:ww #1 \s__fp \__fp_chk:w #2#3\__fp_sep:
{
\if_meaning:w 0 #2 #1
- \__fp_and_return:wNw \s__fp \__fp_chk:w #2#3;
+ \__fp_and_return:wNw \s__fp \__fp_chk:w #2#3\__fp_sep:
\fi:
\__fp_exp_after_o:w
}
- \cs_new:Npn \__fp_&_tuple_o:ww #1 \s__fp \__fp_chk:w #2#3;
+ \cs_new:Npn \__fp_&_tuple_o:ww #1 \s__fp \__fp_chk:w #2#3\__fp_sep:
{
\if_meaning:w 0 #2 #1
- \__fp_and_return:wNw \s__fp \__fp_chk:w #2#3;
+ \__fp_and_return:wNw \s__fp \__fp_chk:w #2#3\__fp_sep:
\fi:
\__fp_exp_after_tuple_o:w
}
- \cs_new:Npn \__fp_tuple_&_o:ww #1; { \__fp_exp_after_o:w }
- \cs_new:Npn \__fp_tuple_&_tuple_o:ww #1; { \__fp_exp_after_tuple_o:w }
+ \cs_new:Npn \__fp_tuple_&_o:ww #1\__fp_sep: { \__fp_exp_after_o:w }
+ \cs_new:Npn \__fp_tuple_&_tuple_o:ww #1\__fp_sep: { \__fp_exp_after_tuple_o:w }
\cs_new:Npn \__fp_|_o:ww { \__fp_&_o:ww \else: }
\cs_new:Npn \__fp_|_tuple_o:ww { \__fp_&_tuple_o:ww \else: }
- \cs_new:Npn \__fp_tuple_|_o:ww #1; #2; { \__fp_exp_after_tuple_o:w #1; }
- \cs_new:Npn \__fp_tuple_|_tuple_o:ww #1; #2;
- { \__fp_exp_after_tuple_o:w #1; }
+ \cs_new:Npn \__fp_tuple_|_o:ww #1\__fp_sep: #2\__fp_sep:
+ { \__fp_exp_after_tuple_o:w #1\__fp_sep: }
+ \cs_new:Npn \__fp_tuple_|_tuple_o:ww #1\__fp_sep: #2\__fp_sep:
+ { \__fp_exp_after_tuple_o:w #1\__fp_sep: }
\group_end:
-\cs_new:Npn \__fp_and_return:wNw #1; \fi: #2;
- { \fi: \__fp_exp_after_o:w #1; }
+\cs_new:Npn \__fp_and_return:wNw #1\__fp_sep: \fi: #2\__fp_sep:
+ { \fi: \__fp_exp_after_o:w #1\__fp_sep: }
\cs_new:Npn \__fp_ternary:NwwN #1 #2#3@ #4@ #5
{
\if_meaning:w \__fp_parse_infix_::N #5
@@ -17994,7 +18166,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_not:n { \s__fp \__fp_neg_sign:N }
}
\cs_new:cpn { __fp_+_o:ww }
- \s__fp #1 \__fp_chk:w #2 #3 ; \s__fp \__fp_chk:w #4 #5
+ \s__fp #1 \__fp_chk:w #2 #3 \__fp_sep: \s__fp \__fp_chk:w #4 #5
{
\if_case:w
\if_meaning:w #2 #4
@@ -18014,10 +18186,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else: \exp_after:wN \__fp_add_return_ii_o:Nww \int_value:w
\fi:
#1 #5
- \s__fp \__fp_chk:w #2 #3 ;
+ \s__fp \__fp_chk:w #2 #3 \__fp_sep:
\s__fp \__fp_chk:w #4 #5
}
-\cs_new:Npn \__fp_add_return_ii_o:Nww #1 #2 ; \s__fp \__fp_chk:w #3 #4
+\cs_new:Npn \__fp_add_return_ii_o:Nww #1 #2 \__fp_sep: \s__fp \__fp_chk:w #3 #4
{ \__fp_exp_after_o:w \s__fp \__fp_chk:w #3 #1 }
\cs_new:Npn \__fp_add_zeros_o:Nww #1 \s__fp \__fp_chk:w 0 #2
{
@@ -18030,7 +18202,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\s__fp \__fp_chk:w 0 #2
}
\cs_new:Npn \__fp_add_inf_o:Nww
- #1 \s__fp \__fp_chk:w 2 #2 #3; \s__fp \__fp_chk:w 2 #4
+ #1 \s__fp \__fp_chk:w 2 #2 #3\__fp_sep: \s__fp \__fp_chk:w 2 #4
{
\if_meaning:w #1 #2
\__fp_case_return_i_o:ww
@@ -18041,7 +18213,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \token_if_eq_meaning:NNTF #1 #4 + - }
}
\fi:
- \s__fp \__fp_chk:w 2 #2 #3;
+ \s__fp \__fp_chk:w 2 #2 #3\__fp_sep:
\s__fp \__fp_chk:w 2 #4
}
\cs_new:Npn \__fp_add_normal_o:Nww #1 \s__fp \__fp_chk:w 1 #2
@@ -18053,7 +18225,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
#2
}
-\cs_new:Npn \__fp_add_npos_o:NnwNnw #1#2#3 ; \s__fp \__fp_chk:w 1 #4 #5
+\cs_new:Npn \__fp_add_npos_o:NnwNnw #1#2#3 \__fp_sep: \s__fp \__fp_chk:w 1 #4 #5
{
\exp_after:wN \__fp_sanitize:Nw
\exp_after:wN #1
@@ -18065,9 +18237,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
#5
\exp_after:wN \__fp_add_big_ii_o:wNww \int_value:w
\fi:
- \__fp_int_eval:w #5 - #2 ; #1 #3;
+ \__fp_int_eval:w #5 - #2 \__fp_sep: #1 #3\__fp_sep:
}
-\cs_new:Npn \__fp_add_big_i_o:wNww #1; #2 #3; #4;
+\cs_new:Npn \__fp_add_big_i_o:wNww #1\__fp_sep: #2 #3\__fp_sep: #4\__fp_sep:
{
\__fp_decimate:nNnnnn {#1}
\__fp_add_significand_o:NnnwnnnnN
@@ -18075,7 +18247,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
#3
#2
}
-\cs_new:Npn \__fp_add_big_ii_o:wNww #1; #2 #3; #4;
+\cs_new:Npn \__fp_add_big_ii_o:wNww #1\__fp_sep: #2 #3\__fp_sep: #4\__fp_sep:
{
\__fp_decimate:nNnnnn {#1}
\__fp_add_significand_o:NnnwnnnnN
@@ -18083,19 +18255,19 @@ Type H <return> for immediate help}\def~{\errmessage{%
#4
#2
}
-\cs_new:Npn \__fp_add_significand_o:NnnwnnnnN #1 #2#3 #4; #5#6#7#8
+\cs_new:Npn \__fp_add_significand_o:NnnwnnnnN #1 #2#3 #4\__fp_sep: #5#6#7#8
{
\exp_after:wN \__fp_add_significand_test_o:N
\int_value:w \__fp_int_eval:w 1#5#6 + #2
\exp_after:wN \__fp_add_significand_pack:NNNNNNN
- \int_value:w \__fp_int_eval:w 1#7#8 + #3 ; #1
+ \int_value:w \__fp_int_eval:w 1#7#8 + #3 \__fp_sep: #1
}
\cs_new:Npn \__fp_add_significand_pack:NNNNNNN #1 #2#3#4#5#6#7
{
\if_meaning:w 2 #1
+ 1
\fi:
- ; #2 #3 #4 #5 #6 #7 ;
+ \__fp_sep: #2 #3 #4 #5 #6 #7 \__fp_sep:
}
\cs_new:Npn \__fp_add_significand_test_o:N #1
{
@@ -18106,17 +18278,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
}
\cs_new:Npn \__fp_add_significand_no_carry_o:wwwNN
- #1; #2; #3#4 ; #5#6
+ #1\__fp_sep: #2\__fp_sep: #3#4 \__fp_sep: #5#6
{
\exp_after:wN \__fp_basics_pack_high:NNNNNw
\int_value:w \__fp_int_eval:w 1 #1
\exp_after:wN \__fp_basics_pack_low:NNNNNw
\int_value:w \__fp_int_eval:w 1 #2 #3#4
+ \__fp_round:NNN #6 #4 #5
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
}
\cs_new:Npn \__fp_add_significand_carry_o:wwwNN
- #1; #2; #3#4; #5#6
+ #1\__fp_sep: #2\__fp_sep: #3#4\__fp_sep: #5#6
{
+ 1
\exp_after:wN \__fp_basics_pack_weird_high:NNNNNNNNw
@@ -18126,28 +18298,31 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_round:NNN
\exp_after:wN #6
\exp_after:wN #3
- \int_value:w \__fp_round_digit:Nw #4 #5 ;
- \exp_after:wN ;
+ \int_value:w \__fp_round_digit:Nw #4 #5 \__fp_sep:
+ \exp_after:wN \__fp_sep:
}
-\cs_new:Npn \__fp_sub_npos_o:NnwNnw #1#2#3; \s__fp \__fp_chk:w 1 #4#5#6;
+\cs_new:Npn \__fp_sub_npos_o:NnwNnw
+ #1#2#3\__fp_sep: \s__fp \__fp_chk:w 1 #4#5#6\__fp_sep:
{
- \if_case:w \__fp_compare_npos:nwnw {#2} #3; {#5} #6; \exp_stop_f:
+ \if_case:w
+ \__fp_compare_npos:nwnw {#2} #3\__fp_sep: {#5} #6\__fp_sep: \exp_stop_f:
\exp_after:wN \__fp_sub_eq_o:Nnwnw
\or:
\exp_after:wN \__fp_sub_npos_i_o:Nnwnw
\else:
\exp_after:wN \__fp_sub_npos_ii_o:Nnwnw
\fi:
- #1 {#2} #3; {#5} #6;
+ #1 {#2} #3\__fp_sep: {#5} #6\__fp_sep:
}
-\cs_new:Npn \__fp_sub_eq_o:Nnwnw #1#2; #3; { \exp_after:wN \c_zero_fp }
-\cs_new:Npn \__fp_sub_npos_ii_o:Nnwnw #1 #2; #3;
+\cs_new:Npn \__fp_sub_eq_o:Nnwnw #1#2\__fp_sep: #3\__fp_sep:
+ { \exp_after:wN \c_zero_fp }
+\cs_new:Npn \__fp_sub_npos_ii_o:Nnwnw #1 #2\__fp_sep: #3\__fp_sep:
{
\exp_after:wN \__fp_sub_npos_i_o:Nnwnw
\int_value:w \__fp_neg_sign:N #1
- #3; #2;
+ #3\__fp_sep: #2\__fp_sep:
}
-\cs_new:Npn \__fp_sub_npos_i_o:Nnwnw #1 #2#3; #4#5;
+\cs_new:Npn \__fp_sub_npos_i_o:Nnwnw #1 #2#3\__fp_sep: #4#5\__fp_sep:
{
\exp_after:wN \__fp_sanitize:Nw
\exp_after:wN #1
@@ -18169,42 +18344,43 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_sub_back_near_after:wNNNNw
\int_value:w \__fp_int_eval:w 10#5#6 - #1#2 - 11
\exp_after:wN \__fp_sub_back_near_pack:NNNNNNw
- \int_value:w \__fp_int_eval:w 11#7#8 - #3#4 \exp_after:wN ;
+ \int_value:w \__fp_int_eval:w 11#7#8 - #3#4 \exp_after:wN \__fp_sep:
}
-\cs_new:Npn \__fp_sub_back_near_pack:NNNNNNw #1#2#3#4#5#6#7 ;
- { + #1#2 ; {#3#4#5#6} {#7} ; }
-\cs_new:Npn \__fp_sub_back_near_after:wNNNNw 10 #1#2#3#4 #5 ;
+\cs_new:Npn \__fp_sub_back_near_pack:NNNNNNw #1#2#3#4#5#6#7 \__fp_sep:
+ { + #1#2 \__fp_sep: {#3#4#5#6} {#7} \__fp_sep: }
+\cs_new:Npn \__fp_sub_back_near_after:wNNNNw 10 #1#2#3#4 #5 \__fp_sep:
{
\if_meaning:w 0 #1
\exp_after:wN \__fp_sub_back_shift:wnnnn
\fi:
- ; {#1#2#3#4} {#5}
+ \__fp_sep: {#1#2#3#4} {#5}
}
-\cs_new:Npn \__fp_sub_back_shift:wnnnn ; #1#2
+\cs_new:Npn \__fp_sub_back_shift:wnnnn \__fp_sep: #1#2
{
\exp_after:wN \__fp_sub_back_shift_ii:ww
- \int_value:w #1 #2 0 ;
+ \int_value:w #1 #2 0 \__fp_sep:
}
-\cs_new:Npn \__fp_sub_back_shift_ii:ww #1 0 ; #2#3 ;
+\cs_new:Npn \__fp_sub_back_shift_ii:ww #1 0 \__fp_sep: #2#3 \__fp_sep:
{
\if_meaning:w @ #1 @
- 7
- \exp_after:wN \use_i:nnn
\exp_after:wN \__fp_sub_back_shift_iii:NNNNNNNNw
- \int_value:w #2#3 0 ~ 123456789;
+ \int_value:w #2#3 0 ~ 123456789\__fp_sep:
\else:
- - \__fp_sub_back_shift_iii:NNNNNNNNw #1 123456789;
+ - \__fp_sub_back_shift_iii:NNNNNNNNw #1 123456789\__fp_sep:
\fi:
\exp_after:wN \__fp_pack_twice_four:wNNNNNNNN
\exp_after:wN \__fp_pack_twice_four:wNNNNNNNN
\exp_after:wN \__fp_sub_back_shift_iv:nnnnw
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\int_value:w
- #1 ~ #2#3 0 ~ 0000 0000 0000 000 ;
+ #1 ~ #2#3 0 ~ 0000 0000 0000 000 \__fp_sep:
}
-\cs_new:Npn \__fp_sub_back_shift_iii:NNNNNNNNw #1#2#3#4#5#6#7#8#9; {#8}
-\cs_new:Npn \__fp_sub_back_shift_iv:nnnnw #1 ; #2 ; { ; #1 ; }
-\cs_new:Npn \__fp_sub_back_far_o:NnnwnnnnN #1 #2#3 #4; #5#6#7#8
+\cs_new:Npn \__fp_sub_back_shift_iii:NNNNNNNNw #1#2#3#4#5#6#7#8#9\__fp_sep: {#8}
+\cs_new:Npn \__fp_sub_back_shift_iv:nnnnw #1 \__fp_sep: #2 \__fp_sep:
+ { \__fp_sep: #1 \__fp_sep: }
+\cs_new:Npn \__fp_sub_back_far_o:NnnwnnnnN #1 #2#3 #4\__fp_sep: #5#6#7#8
{
\if_case:w
\if_int_compare:w 1 #2 = #5#6 \use_i:nnnn #7 \exp_stop_f:
@@ -18221,9 +18397,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or: \exp_after:wN \__fp_sub_back_very_far_o:wwwwNN
\else: \exp_after:wN \__fp_sub_back_not_far_o:wwwwNN
\fi:
- #2 ~ #3 ; #5 #6 ~ #7 #8 ; #1
+ #2 ~ #3 \__fp_sep: #5 #6 ~ #7 #8 \__fp_sep: #1
}
-\cs_new:Npn \__fp_sub_back_quite_far_o:wwNN #1; #2; #3#4
+\cs_new:Npn \__fp_sub_back_quite_far_o:wwNN #1\__fp_sep: #2\__fp_sep: #3#4
{
\exp_after:wN \__fp_sub_back_quite_far_ii:NN
\exp_after:wN #3
@@ -18236,10 +18412,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\exp_after:wN \use_ii:nn
\fi:
- { ; {1000} {0000} {0000} {0000} ; }
- { - 1 ; {9999} {9999} {9999} {9999} ; }
+ { \__fp_sep: {1000} {0000} {0000} {0000} \__fp_sep: }
+ { - 1 \__fp_sep: {9999} {9999} {9999} {9999} \__fp_sep: }
}
-\cs_new:Npn \__fp_sub_back_not_far_o:wwwwNN #1 ~ #2; #3 ~ #4; #5#6
+\cs_new:Npn \__fp_sub_back_not_far_o:wwwwNN #1 ~ #2\__fp_sep: #3 ~ #4\__fp_sep: #5#6
{
- 1
\exp_after:wN \__fp_sub_back_near_after:wNNNNw
@@ -18249,16 +18425,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
- \exp_after:wN \__fp_round_neg:NNN
\exp_after:wN #6
\use_none:nnnnnnn #2 #5
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
}
\cs_new:Npn \__fp_sub_back_very_far_o:wwwwNN #1#2#3#4#5#6#7
{
\__fp_pack_eight:wNNNNNNNN
\__fp_sub_back_very_far_ii_o:nnNwwNN
{ 0 #1#2#3 #4#5#6#7 }
- ;
+ \__fp_sep:
}
-\cs_new:Npn \__fp_sub_back_very_far_ii_o:nnNwwNN #1#2 ; #3 ; #4 ~ #5; #6#7
+\cs_new:Npn \__fp_sub_back_very_far_ii_o:nnNwwNN
+ #1#2 \__fp_sep: #3 \__fp_sep: #4 ~ #5\__fp_sep: #6#7
{
\exp_after:wN \__fp_basics_pack_high:NNNNNw
\int_value:w \__fp_int_eval:w 1#4 - #1 - 1
@@ -18269,8 +18446,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w
\if_int_odd:w \__fp_int_eval:w #5 - #2 \__fp_int_eval_end:
1 \else: 2 \fi:
- \int_value:w \__fp_round_digit:Nw #3 #6 ;
- \exp_after:wN ;
+ \int_value:w \__fp_round_digit:Nw #3 #6 \__fp_sep:
+ \exp_after:wN \__fp_sep:
}
\cs_new:cpn { __fp_*_o:ww }
{
@@ -18281,7 +18458,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ }
}
\cs_new:Npn \__fp_mul_cases_o:NnNnww
- #1#2#3#4 \s__fp \__fp_chk:w #5#6#7; \s__fp \__fp_chk:w #8#9
+ #1#2#3#4 \s__fp \__fp_chk:w #5#6#7\__fp_sep: \s__fp \__fp_chk:w #8#9
{
\if_case:w \__fp_int_eval:w
\if_int_compare:w #5 #8 = 11 ~
@@ -18315,11 +18492,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or: \__fp_case_return_o:Nww \c_minus_inf_fp
#4
\fi:
- \s__fp \__fp_chk:w #5 #6 #7;
+ \s__fp \__fp_chk:w #5 #6 #7\__fp_sep:
\s__fp \__fp_chk:w #8 #9
}
\cs_new:Npn \__fp_mul_npos_o:Nww
- #1 \s__fp \__fp_chk:w #2 #3 #4 #5 ; \s__fp \__fp_chk:w #6 #7 #8 #9 ;
+ #1 \s__fp \__fp_chk:w #2 #3 #4 #5 \__fp_sep:
+ \s__fp \__fp_chk:w #6 #7 #8 #9 \__fp_sep:
{
\exp_after:wN \__fp_sanitize:Nw
\exp_after:wN #1
@@ -18345,13 +18523,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_mul_significand_drop:NNNNNw
\int_value:w \__fp_int_eval:w 99990000 + #3*#9 + #4*#8 +
\exp_after:wN \__fp_mul_significand_drop:NNNNNw
- \int_value:w \__fp_int_eval:w 100000000 + #4*#9 ;
- ; \exp_after:wN ;
+ \int_value:w \__fp_int_eval:w 100000000 + #4*#9 \__fp_sep:
+ \__fp_sep: \exp_after:wN \__fp_sep:
}
-\cs_new:Npn \__fp_mul_significand_drop:NNNNNw #1#2#3#4#5 #6;
- { #1#2#3#4#5 ; + #6 }
-\cs_new:Npn \__fp_mul_significand_keep:NNNNNw #1#2#3#4#5 #6;
- { #1#2#3#4#5 ; #6 ; }
+\cs_new:Npn \__fp_mul_significand_drop:NNNNNw #1#2#3#4#5 #6\__fp_sep:
+ { #1#2#3#4#5 \__fp_sep: + #6 }
+\cs_new:Npn \__fp_mul_significand_keep:NNNNNw #1#2#3#4#5 #6\__fp_sep:
+ { #1#2#3#4#5 \__fp_sep: #6 \__fp_sep: }
\cs_new:Npn \__fp_mul_significand_test_f:NNN #1 #2 #3
{
\if_meaning:w 0 #3
@@ -18361,7 +18539,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
#1 #3
}
-\cs_new:Npn \__fp_mul_significand_large_f:NwwNNNN #1 #2; #3; #4#5#6#7; +
+\cs_new:Npn \__fp_mul_significand_large_f:NwwNNNN
+ #1 #2\__fp_sep: #3\__fp_sep: #4#5#6#7\__fp_sep: +
{
\exp_after:wN \__fp_basics_pack_high:NNNNNw
\int_value:w \__fp_int_eval:w 1#2
@@ -18372,7 +18551,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN #7
\int_value:w \__fp_round_digit:Nw
}
-\cs_new:Npn \__fp_mul_significand_small_f:NNwwwN #1 #2#3; #4#5; #6; + #7
+\cs_new:Npn \__fp_mul_significand_small_f:NNwwwN
+ #1 #2#3\__fp_sep: #4#5\__fp_sep: #6\__fp_sep: + #7
{
- 1
\exp_after:wN \__fp_basics_pack_high:NNNNNw
@@ -18400,25 +18580,26 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
\cs_new:Npn \__fp_div_npos_o:Nww
- #1 \s__fp \__fp_chk:w 1 #2 #3 #4 ; \s__fp \__fp_chk:w 1 #5 #6 #7#8#9;
+ #1 \s__fp \__fp_chk:w 1 #2 #3 #4 \__fp_sep:
+ \s__fp \__fp_chk:w 1 #5 #6 #7#8#9\__fp_sep:
{
\exp_after:wN \__fp_sanitize:Nw
\exp_after:wN #1
\int_value:w \__fp_int_eval:w
#3 - #6
\exp_after:wN \__fp_div_significand_i_o:wnnw
- \int_value:w \__fp_int_eval:w #7 \use_i:nnnn #8 + 1 ;
+ \int_value:w \__fp_int_eval:w #7 \use_i:nnnn #8 + 1 \__fp_sep:
#4
- {#7}{#8}#9 ;
+ {#7}{#8}#9 \__fp_sep:
#1
}
-\cs_new:Npn \__fp_div_significand_i_o:wnnw #1 ; #2#3 #4 ;
+\cs_new:Npn \__fp_div_significand_i_o:wnnw #1 \__fp_sep: #2#3 #4 \__fp_sep:
{
\exp_after:wN \__fp_div_significand_test_o:w
\int_value:w \__fp_int_eval:w
\exp_after:wN \__fp_div_significand_calc:wwnnnnnnn
- \int_value:w \__fp_int_eval:w 999999 + #2 #3 0 / #1 ;
- #2 #3 ;
+ \int_value:w \__fp_int_eval:w 999999 + #2 #3 0 / #1 \__fp_sep:
+ #2 #3 \__fp_sep:
#4
{ \exp_after:wN \__fp_div_significand_ii:wwn \int_value:w #1 }
{ \exp_after:wN \__fp_div_significand_ii:wwn \int_value:w #1 }
@@ -18434,10 +18615,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
}
\cs_new:Npn \__fp_div_significand_calc_i:wwnnnnnnn
- #1; #2;#3#4 #5#6#7#8 #9
+ #1\__fp_sep: #2\__fp_sep:#3#4 #5#6#7#8 #9
{
1 1 #1
- #9 \exp_after:wN ;
+ #9 \exp_after:wN \__fp_sep:
\int_value:w \__fp_int_eval:w \c__fp_Bigg_leading_shift_int
+ #2 - #1 * #5 - #5#60
\exp_after:wN \__fp_pack_Bigg:NNNNNNw
@@ -18448,14 +18629,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
+ #4 - #1 * #7 - #80
\exp_after:wN \__fp_pack_Bigg:NNNNNNw
\int_value:w \__fp_int_eval:w \c__fp_Bigg_trailing_shift_int
- - #1 * #8 ;
+ - #1 * #8 \__fp_sep:
{#5}{#6}{#7}{#8}
}
\cs_new:Npn \__fp_div_significand_calc_ii:wwnnnnnnn
- #1; #2;#3#4 #5#6#7#8 #9
+ #1\__fp_sep: #2\__fp_sep:#3#4 #5#6#7#8 #9
{
1 0 #1
- #9 \exp_after:wN ;
+ #9 \exp_after:wN \__fp_sep:
\int_value:w \__fp_int_eval:w \c__fp_Bigg_leading_shift_int
+ #2 - #1 * #5
\exp_after:wN \__fp_pack_Bigg:NNNNNNw
@@ -18466,25 +18647,27 @@ Type H <return> for immediate help}\def~{\errmessage{%
+ #4 - #1 * #7
\exp_after:wN \__fp_pack_Bigg:NNNNNNw
\int_value:w \__fp_int_eval:w \c__fp_Bigg_trailing_shift_int
- - #1 * #8 ;
+ - #1 * #8 \__fp_sep:
{#5}{#6}{#7}{#8}
}
-\cs_new:Npn \__fp_div_significand_ii:wwn #1; #2;#3
+\cs_new:Npn \__fp_div_significand_ii:wwn #1\__fp_sep: #2\__fp_sep:#3
{
\exp_after:wN \__fp_div_significand_pack:NNN
\int_value:w \__fp_int_eval:w
\exp_after:wN \__fp_div_significand_calc:wwnnnnnnn
- \int_value:w \__fp_int_eval:w 999999 + #2 #3 0 / #1 ; #2 #3 ;
+ \int_value:w \__fp_int_eval:w
+ 999999 + #2 #3 0 / #1 \__fp_sep: #2 #3 \__fp_sep:
}
-\cs_new:Npn \__fp_div_significand_iii:wwnnnnn #1; #2;#3#4#5 #6#7
+\cs_new:Npn \__fp_div_significand_iii:wwnnnnn #1\__fp_sep: #2\__fp_sep:#3#4#5 #6#7
{
0
\exp_after:wN \__fp_div_significand_iv:wwnnnnnnn
- \int_value:w \__fp_int_eval:w ( 2 * #2 #3) / #6 #7 ; % <- P
- #2 ; {#3} {#4} {#5}
+ \int_value:w \__fp_int_eval:w ( 2 * #2 #3) / #6 #7 \__fp_sep: % <- P
+ #2 \__fp_sep: {#3} {#4} {#5}
{#6} {#7}
}
-\cs_new:Npn \__fp_div_significand_iv:wwnnnnnnn #1; #2;#3#4#5 #6#7#8#9
+\cs_new:Npn \__fp_div_significand_iv:wwnnnnnnn
+ #1\__fp_sep: #2\__fp_sep:#3#4#5 #6#7#8#9
{
+ 5 * #1
\exp_after:wN \__fp_div_significand_vi:Nw
@@ -18492,19 +18675,19 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_div_significand_v:NN
\int_value:w \__fp_int_eval:w 499950 + 2*#4 - #1*#8 +
\exp_after:wN \__fp_div_significand_v:NN
- \int_value:w \__fp_int_eval:w 500000 + 2*#5 - #1*#9 ;
+ \int_value:w \__fp_int_eval:w 500000 + 2*#5 - #1*#9 \__fp_sep:
}
\cs_new:Npn \__fp_div_significand_v:NN #1#2 { #1#2 \__fp_int_eval_end: + }
-\cs_new:Npn \__fp_div_significand_vi:Nw #1#2;
+\cs_new:Npn \__fp_div_significand_vi:Nw #1#2\__fp_sep:
{
\if_meaning:w 0 #1
\if_int_compare:w \__fp_int_eval:w #2 > 0 + 1 \fi:
\else:
\if_meaning:w - #1 - \else: + \fi: 1
\fi:
- ;
+ \__fp_sep:
}
-\cs_new:Npn \__fp_div_significand_pack:NNN 1 #1 #2 { + #1 #2 ; }
+\cs_new:Npn \__fp_div_significand_pack:NNN 1 #1 #2 { + #1 #2 \__fp_sep: }
\cs_new:Npn \__fp_div_significand_test_o:w 10 #1
{
\if_meaning:w 0 #1
@@ -18515,17 +18698,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
#1
}
\cs_new:Npn \__fp_div_significand_small_o:wwwNNNNwN
- 0 #1; #2; #3; #4#5#6#7#8; #9
+ 0 #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: #4#5#6#7#8\__fp_sep: #9
{
\exp_after:wN \__fp_basics_pack_high:NNNNNw
\int_value:w \__fp_int_eval:w 1 #1#2
\exp_after:wN \__fp_basics_pack_low:NNNNNw
\int_value:w \__fp_int_eval:w 1 #3#4#5#6#7
+ \__fp_round:NNN #9 #7 #8
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
}
\cs_new:Npn \__fp_div_significand_large_o:wwwNNNNwN
- #1; #2; #3; #4#5#6#7#8; #9
+ #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: #4#5#6#7#8\__fp_sep: #9
{
+ 1
\exp_after:wN \__fp_basics_pack_weird_high:NNNNNNNNw
@@ -18535,10 +18718,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_round:NNN
\exp_after:wN #9
\exp_after:wN #6
- \int_value:w \__fp_round_digit:Nw #7 #8 ;
- \exp_after:wN ;
+ \int_value:w \__fp_round_digit:Nw #7 #8 \__fp_sep:
+ \exp_after:wN \__fp_sep:
}
-\cs_new:Npn \__fp_sqrt_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_sqrt_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_meaning:w 0 #2 \__fp_case_return_same_o:w \fi:
\if_meaning:w 2 #3
@@ -18546,9 +18729,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\if_meaning:w 1 #2 \else: \__fp_case_return_same_o:w \fi:
\__fp_sqrt_npos_o:w
- \s__fp \__fp_chk:w #2 #3 #4;
+ \s__fp \__fp_chk:w #2 #3 #4\__fp_sep:
}
-\cs_new:Npn \__fp_sqrt_npos_o:w \s__fp \__fp_chk:w 1 0 #1#2#3#4#5;
+\cs_new:Npn \__fp_sqrt_npos_o:w \s__fp \__fp_chk:w 1 0 #1#2#3#4#5\__fp_sep:
{
\exp_after:wN \__fp_sanitize:Nw
\exp_after:wN 0
@@ -18557,19 +18740,19 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_sqrt_npos_auxi_o:wwnnN
\fi:
#1 / 2
- \__fp_sqrt_Newton_o:wwn 56234133; 0; {#2#3} {#4#5} 0
+ \__fp_sqrt_Newton_o:wwn 56234133\__fp_sep: 0\__fp_sep: {#2#3} {#4#5} 0
}
-\cs_new:Npn \__fp_sqrt_npos_auxi_o:wwnnN #1 / 2 #2; 0; #3#4#5
+\cs_new:Npn \__fp_sqrt_npos_auxi_o:wwnnN #1 / 2 #2\__fp_sep: 0\__fp_sep: #3#4#5
{
( #1 + 1 ) / 2
\__fp_pack_eight:wNNNNNNNN
\__fp_sqrt_npos_auxii_o:wNNNNNNNN
- ;
+ \__fp_sep:
0 #3 #4
}
-\cs_new:Npn \__fp_sqrt_npos_auxii_o:wNNNNNNNN #1; #2#3#4#5#6#7#8#9
- { \__fp_sqrt_Newton_o:wwn 17782794; 0; {#1} {#2#3#4#5#6#7#8#9} }
-\cs_new:Npn \__fp_sqrt_Newton_o:wwn #1; #2; #3
+\cs_new:Npn \__fp_sqrt_npos_auxii_o:wNNNNNNNN #1\__fp_sep: #2#3#4#5#6#7#8#9
+ { \__fp_sqrt_Newton_o:wwn 17782794\__fp_sep: 0\__fp_sep: {#1} {#2#3#4#5#6#7#8#9} }
+\cs_new:Npn \__fp_sqrt_Newton_o:wwn #1\__fp_sep: #2\__fp_sep: #3
{
\if_int_compare:w #1 = #2 \exp_stop_f:
\exp_after:wN \__fp_sqrt_auxi_o:NNNNwnnN
@@ -18577,10 +18760,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_use_none_until_s:w
\fi:
\exp_after:wN \__fp_sqrt_Newton_o:wwn
- \int_value:w \__fp_int_eval:w (#1 + #3 * 1 0000 0000 / #1) / 2 ;
- #1; {#3}
+ \int_value:w \__fp_int_eval:w (#1 + #3 * 1 0000 0000 / #1) / 2 \__fp_sep:
+ #1\__fp_sep: {#3}
}
-\cs_new:Npn \__fp_sqrt_auxi_o:NNNNwnnN 1 #1#2#3#4#5;
+\cs_new:Npn \__fp_sqrt_auxi_o:NNNNwnnN 1 #1#2#3#4#5\__fp_sep:
{
\__fp_sqrt_auxii_o:NnnnnnnnN
\__fp_sqrt_auxiii_o:wnnnnnnnn
@@ -18616,13 +18799,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_pack_big:NNNNNNw
\int_value:w \__fp_int_eval:w
\c__fp_big_trailing_shift_int
- - #6 * #6 ;
+ - #6 * #6 \__fp_sep:
% (
- - 257 ) * 5000 0000 / (#2#3 + 1) + 10 0000 0000 ;
+ - 257 ) * 5000 0000 / (#2#3 + 1) + 10 0000 0000 \__fp_sep:
{#2}{#3}{#4}{#5}{#6} {#7}{#8}#9
}
\cs_new:Npn \__fp_sqrt_auxiii_o:wnnnnnnnn
- #1; #2#3#4#5#6#7#8#9
+ #1\__fp_sep: #2#3#4#5#6#7#8#9
{
\if_int_compare:w #1 > \c_one_int
\exp_after:wN \__fp_sqrt_auxiv_o:NNNNNw
@@ -18642,13 +18825,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\fi:
}
-\cs_new:Npn \__fp_sqrt_auxiv_o:NNNNNw 1#1#2#3#4#5#6;
+\cs_new:Npn \__fp_sqrt_auxiv_o:NNNNNw 1#1#2#3#4#5#6\__fp_sep:
{ \__fp_sqrt_auxviii_o:nnnnnnn {#1#2#3#4#5#6} {00000000} }
-\cs_new:Npn \__fp_sqrt_auxv_o:NNNNNw 1#1#2#3#4#5#6;
+\cs_new:Npn \__fp_sqrt_auxv_o:NNNNNw 1#1#2#3#4#5#6\__fp_sep:
{ \__fp_sqrt_auxviii_o:nnnnnnn {000#1#2#3#4#5} {#60000} }
-\cs_new:Npn \__fp_sqrt_auxvi_o:NNNNNw 1#1#2#3#4#5#6;
+\cs_new:Npn \__fp_sqrt_auxvi_o:NNNNNw 1#1#2#3#4#5#6\__fp_sep:
{ \__fp_sqrt_auxviii_o:nnnnnnn {0000000#1} {#2#3#4#5#6} }
-\cs_new:Npn \__fp_sqrt_auxvii_o:NNNNNw 1#1#2#3#4#5#6;
+\cs_new:Npn \__fp_sqrt_auxvii_o:NNNNNw 1#1#2#3#4#5#6\__fp_sep:
{
\if_int_compare:w #1#2 = \c_zero_int
\exp_after:wN \__fp_sqrt_auxx_o:Nnnnnnnn
@@ -18662,9 +18845,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_basics_pack_low:NNNNNw
\int_value:w \__fp_int_eval:w #1 + 1#4#5
\exp_after:wN \__fp_basics_pack_low:NNNNNw
- \int_value:w \__fp_int_eval:w #2 + 1#6#7 ;
+ \int_value:w \__fp_int_eval:w #2 + 1#6#7 \__fp_sep:
}
-\cs_new:Npn \__fp_sqrt_auxix_o:wnwnw #1; #2#3; #4#5;
+\cs_new:Npn \__fp_sqrt_auxix_o:wnwnw #1\__fp_sep: #2#3\__fp_sep: #4#5\__fp_sep:
{
\__fp_sqrt_auxii_o:NnnnnnnnN
\__fp_sqrt_auxiii_o:wnnnnnnnn {#1}{#2}{#3}{#4}{#5}
@@ -18673,17 +18856,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\exp_after:wN \__fp_sqrt_auxxi_o:wwnnN
\int_value:w \__fp_int_eval:w
- (#8 + 2499) / 5000 * 5000 ;
- {#4} {#5} {#6} {#7} ;
+ (#8 + 2499) / 5000 * 5000 \__fp_sep:
+ {#4} {#5} {#6} {#7} \__fp_sep:
}
-\cs_new:Npn \__fp_sqrt_auxxi_o:wwnnN #1; #2; #3#4#5
+\cs_new:Npn \__fp_sqrt_auxxi_o:wwnnN #1\__fp_sep: #2\__fp_sep: #3#4#5
{
\__fp_sqrt_auxii_o:NnnnnnnnN
\__fp_sqrt_auxxii_o:nnnnnnnnw
#2 {#1}
{#3} { #4 + 1 } #5
}
-\cs_new:Npn \__fp_sqrt_auxxii_o:nnnnnnnnw 0; #1#2#3#4#5#6#7#8 #9;
+\cs_new:Npn \__fp_sqrt_auxxii_o:nnnnnnnnw 0\__fp_sep: #1#2#3#4#5#6#7#8 #9\__fp_sep:
{
\if_int_compare:w #1#2 > \c_zero_int
\if_int_compare:w #1#2 = \c_one_int
@@ -18701,14 +18884,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_sqrt_auxxiv_o:wnnnnnnnN
\int_value:w 10000
\fi:
- ;
+ \__fp_sep:
}
-\cs_new:Npn \__fp_sqrt_auxxiii_o:w \fi: \fi: \fi: \fi: #1 \fi: ;
+\cs_new:Npn \__fp_sqrt_auxxiii_o:w \fi: \fi: \fi: \fi: #1 \fi: \__fp_sep:
{
\fi: \fi: \fi: \fi: \fi:
- \__fp_sqrt_auxxiv_o:wnnnnnnnN 9999 ;
+ \__fp_sqrt_auxxiv_o:wnnnnnnnN 9999 \__fp_sep:
}
-\cs_new:Npn \__fp_sqrt_auxxiv_o:wnnnnnnnN #1; #2#3#4#5#6 #7#8#9
+\cs_new:Npn \__fp_sqrt_auxxiv_o:wnnnnnnnN #1\__fp_sep: #2#3#4#5#6 #7#8#9
{
\exp_after:wN \__fp_basics_pack_high:NNNNNw
\int_value:w \__fp_int_eval:w 1 0000 0000 + #2#3
@@ -18722,10 +18905,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w
\exp_after:wN \use_i:nn
\exp_after:wN \__fp_round_digit:Nw
- \int_value:w \__fp_int_eval:w #6 + 19999 - #1 ;
- \exp_after:wN ;
+ \int_value:w \__fp_int_eval:w #6 + 19999 - #1 \__fp_sep:
+ \exp_after:wN \__fp_sep:
}
-\cs_new:Npn \__fp_logb_o:w ? \s__fp \__fp_chk:w #1#2; @
+\cs_new:Npn \__fp_logb_o:w ? \s__fp \__fp_chk:w #1#2\__fp_sep: @
{
\if_case:w #1 \exp_stop_f:
\__fp_case_use:nw
@@ -18734,14 +18917,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or: \__fp_case_return_o:Nw \c_inf_fp
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #1 #2;
+ \s__fp \__fp_chk:w #1 #2\__fp_sep:
}
-\cs_new:Npn \__fp_logb_aux_o:w \s__fp \__fp_chk:w #1 #2 #3 #4 ;
+\cs_new:Npn \__fp_logb_aux_o:w \s__fp \__fp_chk:w #1 #2 #3 #4 \__fp_sep:
{
\exp_after:wN \__fp_parse:n \exp_after:wN
{ \int_value:w \int_eval:w #3 - 1 \exp_after:wN }
}
-\cs_new:Npn \__fp_sign_o:w ? \s__fp \__fp_chk:w #1#2; @
+\cs_new:Npn \__fp_sign_o:w ? \s__fp \__fp_chk:w #1#2\__fp_sep: @
{
\if_case:w #1 \exp_stop_f:
\__fp_case_return_same_o:w
@@ -18749,11 +18932,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or: \exp_after:wN \__fp_sign_aux_o:w
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #1 #2;
+ \s__fp \__fp_chk:w #1 #2\__fp_sep:
}
-\cs_new:Npn \__fp_sign_aux_o:w \s__fp \__fp_chk:w #1 #2 #3 ;
+\cs_new:Npn \__fp_sign_aux_o:w \s__fp \__fp_chk:w #1 #2 #3 \__fp_sep:
{ \exp_after:wN \__fp_set_sign_o:w \exp_after:wN #2 \c_one_fp @ }
-\cs_new:Npn \__fp_set_sign_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_set_sign_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\exp_after:wN \__fp_exp_after_o:w
\exp_after:wN \s__fp
@@ -18761,7 +18944,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN #2
\int_value:w
\if_case:w #3 \exp_stop_f: #1 \or: 1 \or: 0 \fi: \exp_stop_f:
- #4;
+ #4\__fp_sep:
}
\cs_new:Npn \__fp_tuple_set_sign_o:w #1#2 @
{
@@ -18773,53 +18956,60 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new:Npn \__fp_tuple_set_sign_aux_o:Nnw #1#2
{ \__fp_tuple_map_o:nw \__fp_tuple_set_sign_aux_o:w }
-\cs_new:Npn \__fp_tuple_set_sign_aux_o:w #1#2 ;
+\cs_new:Npn \__fp_tuple_set_sign_aux_o:w #1#2 \__fp_sep:
{
\__fp_change_func_type:NNN #1 \__fp_set_sign_o:w
\__fp_parse_apply_unary_error:NNw
- 2 #1 #2 ; @
- }
-\cs_new:cpn { __fp_*_tuple_o:ww } #1 ;
- { \__fp_tuple_map_o:nw { \__fp_binary_type_o:Nww * #1 ; } }
-\cs_new:cpn { __fp_tuple_*_o:ww } #1 ; #2 ;
- { \__fp_tuple_map_o:nw { \__fp_binary_rev_type_o:Nww * #2 ; } #1 ; }
-\cs_new:cpn { __fp_tuple_/_o:ww } #1 ; #2 ;
- { \__fp_tuple_map_o:nw { \__fp_binary_rev_type_o:Nww / #2 ; } #1 ; }
+ 2 #1 #2 \__fp_sep: @
+ }
+\cs_new:cpn { __fp_*_tuple_o:ww } #1 \__fp_sep:
+ { \__fp_tuple_map_o:nw { \__fp_binary_type_o:Nww * #1 \__fp_sep: } }
+\cs_new:cpn { __fp_tuple_*_o:ww } #1 \__fp_sep: #2 \__fp_sep:
+ {
+ \__fp_tuple_map_o:nw { \__fp_binary_rev_type_o:Nww * #2 \__fp_sep: }
+ #1 \__fp_sep:
+ }
+\cs_new:cpn { __fp_tuple_/_o:ww } #1 \__fp_sep: #2 \__fp_sep:
+ {
+ \__fp_tuple_map_o:nw { \__fp_binary_rev_type_o:Nww / #2 \__fp_sep: }
+ #1 \__fp_sep:
+ }
\cs_set_protected:Npn \__fp_tmp:w #1
{
\cs_new:cpn { __fp_tuple_#1_tuple_o:ww }
- \s__fp_tuple \__fp_tuple_chk:w ##1 ;
- \s__fp_tuple \__fp_tuple_chk:w ##2 ;
+ \s__fp_tuple \__fp_tuple_chk:w ##1 \__fp_sep:
+ \s__fp_tuple \__fp_tuple_chk:w ##2 \__fp_sep:
{
\int_compare:nNnTF
{ \__fp_array_count:n {##1} } = { \__fp_array_count:n {##2} }
{ \__fp_tuple_mapthread_o:nww { \__fp_binary_type_o:Nww #1 } }
{ \__fp_invalid_operation_o:nww #1 }
- \s__fp_tuple \__fp_tuple_chk:w {##1} ;
- \s__fp_tuple \__fp_tuple_chk:w {##2} ;
+ \s__fp_tuple \__fp_tuple_chk:w {##1} \__fp_sep:
+ \s__fp_tuple \__fp_tuple_chk:w {##2} \__fp_sep:
}
}
\__fp_tmp:w +
\__fp_tmp:w -
%% File: l3fp-extended.dtx
\tl_const:Nn \c__fp_one_fixed_tl
- { {10000} {0000} {0000} {0000} {0000} {0000} ; }
-\cs_new:Npn \__fp_fixed_continue:wn #1; #2 { #2 #1; }
-\cs_new:Npn \__fp_fixed_add_one:wN #1#2; #3
+ { {10000} {0000} {0000} {0000} {0000} {0000} \__fp_sep: }
+\cs_new:Npn \__fp_fixed_continue:wn #1\__fp_sep: #2 { #2 #1\__fp_sep: }
+\cs_new:Npn \__fp_fixed_add_one:wN #1#2\__fp_sep: #3
{
\exp_after:wN #3 \exp_after:wN
- { \int_value:w \__fp_int_eval:w \c__fp_myriad_int + #1 } #2 ;
+ { \int_value:w \__fp_int_eval:w \c__fp_myriad_int + #1 } #2 \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_div_myriad:wn #1#2#3#4#5#6;
+\cs_new:Npn \__fp_fixed_div_myriad:wn #1#2#3#4#5#6\__fp_sep:
{
\exp_after:wN \__fp_fixed_mul_after:wwn
\int_value:w \__fp_int_eval:w \c__fp_leading_shift_int
\exp_after:wN \__fp_pack:NNNNNw
\int_value:w \__fp_int_eval:w \c__fp_trailing_shift_int
- + #1 ; {#2}{#3}{#4}{#5};
+ + #1 \__fp_sep: {#2}{#3}{#4}{#5}\__fp_sep:
}
-\cs_new:Npn \__fp_fixed_mul_after:wwn #1; #2; #3 { #3 {#1} #2; }
-\cs_new:Npn \__fp_fixed_mul_short:wwn #1#2#3#4#5#6; #7#8#9;
+\cs_new:Npn \__fp_fixed_mul_after:wwn #1\__fp_sep: #2\__fp_sep: #3
+ { #3 {#1} #2\__fp_sep: }
+\cs_new:Npn \__fp_fixed_mul_short:wwn #1#2#3#4#5#6\__fp_sep: #7#8#9\__fp_sep:
{
\exp_after:wN \__fp_fixed_mul_after:wwn
\int_value:w \__fp_int_eval:w \c__fp_leading_shift_int
@@ -18840,29 +19030,29 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w \__fp_int_eval:w \c__fp_trailing_shift_int
+ #4*#9 + #5*#8 + #6*#7
+ ( #5*#9 + #6*#8 + #6*#9 / \c__fp_myriad_int )
- / \c__fp_myriad_int ; ;
+ / \c__fp_myriad_int \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_div_int:wwN #1#2#3#4#5#6 ; #7 ; #8
+\cs_new:Npn \__fp_fixed_div_int:wwN #1#2#3#4#5#6 \__fp_sep: #7 \__fp_sep: #8
{
\exp_after:wN \__fp_fixed_div_int_after:Nw
\exp_after:wN #8
\int_value:w \__fp_int_eval:w - 1
\__fp_fixed_div_int:wnN
- #1; {#7} \__fp_fixed_div_int_auxi:wnn
- #2; {#7} \__fp_fixed_div_int_auxi:wnn
- #3; {#7} \__fp_fixed_div_int_auxi:wnn
- #4; {#7} \__fp_fixed_div_int_auxi:wnn
- #5; {#7} \__fp_fixed_div_int_auxi:wnn
- #6; {#7} \__fp_fixed_div_int_auxii:wnn ;
+ #1\__fp_sep: {#7} \__fp_fixed_div_int_auxi:wnn
+ #2\__fp_sep: {#7} \__fp_fixed_div_int_auxi:wnn
+ #3\__fp_sep: {#7} \__fp_fixed_div_int_auxi:wnn
+ #4\__fp_sep: {#7} \__fp_fixed_div_int_auxi:wnn
+ #5\__fp_sep: {#7} \__fp_fixed_div_int_auxi:wnn
+ #6\__fp_sep: {#7} \__fp_fixed_div_int_auxii:wnn \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_div_int:wnN #1; #2 #3
+\cs_new:Npn \__fp_fixed_div_int:wnN #1\__fp_sep: #2 #3
{
\exp_after:wN #3
- \int_value:w \__fp_int_eval:w #1 / #2 - 1 ;
+ \int_value:w \__fp_int_eval:w #1 / #2 - 1 \__fp_sep:
{#2}
{#1}
}
-\cs_new:Npn \__fp_fixed_div_int_auxi:wnn #1; #2 #3
+\cs_new:Npn \__fp_fixed_div_int_auxi:wnn #1\__fp_sep: #2 #3
{
+ #1
\exp_after:wN \__fp_fixed_div_int_pack:Nw
@@ -18870,12 +19060,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_fixed_div_int:wnN
\int_value:w \__fp_int_eval:w #3 - #1*#2 \__fp_int_eval_end:
}
-\cs_new:Npn \__fp_fixed_div_int_auxii:wnn #1; #2 #3 { + #1 + 2 ; }
-\cs_new:Npn \__fp_fixed_div_int_pack:Nw #1 #2; { + #1; {#2} }
-\cs_new:Npn \__fp_fixed_div_int_after:Nw #1 #2; { #1 {#2} }
+\cs_new:Npn \__fp_fixed_div_int_auxii:wnn #1\__fp_sep: #2 #3 { + #1 + 2 \__fp_sep: }
+\cs_new:Npn \__fp_fixed_div_int_pack:Nw #1 #2\__fp_sep: { + #1\__fp_sep: {#2} }
+\cs_new:Npn \__fp_fixed_div_int_after:Nw #1 #2\__fp_sep: { #1 {#2} }
\cs_new:Npn \__fp_fixed_add:wwn { \__fp_fixed_add:Nnnnnwnn + }
\cs_new:Npn \__fp_fixed_sub:wwn { \__fp_fixed_add:Nnnnnwnn - }
-\cs_new:Npn \__fp_fixed_add:Nnnnnwnn #1 #2#3#4#5 #6; #7#8
+\cs_new:Npn \__fp_fixed_add:Nnnnnwnn #1 #2#3#4#5 #6\__fp_sep: #7#8
{
\exp_after:wN \__fp_fixed_add_after:NNNNNwn
\int_value:w \__fp_int_eval:w 9 9999 9998 + #2#3 #1 #7#8
@@ -18883,17 +19073,18 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w \__fp_int_eval:w 1 9999 9998 + #4#5
\__fp_fixed_add:nnNnnnwn #6 #1
}
-\cs_new:Npn \__fp_fixed_add:nnNnnnwn #1#2 #3 #4#5 #6#7 ; #8
+\cs_new:Npn \__fp_fixed_add:nnNnnnwn #1#2 #3 #4#5 #6#7 \__fp_sep: #8
{
#3 #4#5
\exp_after:wN \__fp_fixed_add_pack:NNNNNwn
- \int_value:w \__fp_int_eval:w 2 0000 0000 #3 #6#7 + #1#2 ; {#8} ;
+ \int_value:w \__fp_int_eval:w
+ 2 0000 0000 #3 #6#7 + #1#2 \__fp_sep: {#8} \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_add_pack:NNNNNwn #1 #2#3#4#5 #6; #7
- { + #1 ; {#7} {#2#3#4#5} {#6} }
-\cs_new:Npn \__fp_fixed_add_after:NNNNNwn 1 #1 #2#3#4#5 #6; #7
+\cs_new:Npn \__fp_fixed_add_pack:NNNNNwn #1 #2#3#4#5 #6\__fp_sep: #7
+ { + #1 \__fp_sep: {#7} {#2#3#4#5} {#6} }
+\cs_new:Npn \__fp_fixed_add_after:NNNNNwn 1 #1 #2#3#4#5 #6\__fp_sep: #7
{ #7 {#1#2#3#4#5} {#6} }
-\cs_new:Npn \__fp_fixed_mul:wwn #1#2#3#4 #5; #6#7#8#9
+\cs_new:Npn \__fp_fixed_mul:wwn #1#2#3#4 #5\__fp_sep: #6#7#8#9
{
\exp_after:wN \__fp_fixed_mul_after:wwn
\int_value:w \__fp_int_eval:w \c__fp_leading_shift_int
@@ -18915,32 +19106,33 @@ Type H <return> for immediate help}\def~{\errmessage{%
+ ( #3*#9 + #4*#8
+ \__fp_fixed_mul:nnnnnnnw #5 {#6}{#7} {#1}{#2}
}
-\cs_new:Npn \__fp_fixed_mul:nnnnnnnw #1#2 #3#4 #5#6 #7#8 ;
+\cs_new:Npn \__fp_fixed_mul:nnnnnnnw #1#2 #3#4 #5#6 #7#8 \__fp_sep:
{
#1*#4 + #2*#3 + #5*#8 + #6*#7 ) / \c__fp_myriad_int
- + #1*#3 + #5*#7 ; ;
+ + #1*#3 + #5*#7 \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_mul_add:wwwn #1; #2; #3#4#5#6#7#8;
+\cs_new:Npn \__fp_fixed_mul_add:wwwn #1\__fp_sep: #2\__fp_sep: #3#4#5#6#7#8\__fp_sep:
{
\exp_after:wN \__fp_fixed_mul_after:wwn
\int_value:w \__fp_int_eval:w \c__fp_big_leading_shift_int
\exp_after:wN \__fp_pack_big:NNNNNNw
\int_value:w \__fp_int_eval:w \c__fp_big_middle_shift_int + #3 #4
\__fp_fixed_mul_add:Nwnnnwnnn +
- + #5 #6 ; #2 ; #1 ; #2 ; +
- + #7 #8 ; ;
+ + #5 #6 \__fp_sep: #2 \__fp_sep: #1 \__fp_sep: #2 \__fp_sep: +
+ + #7 #8 \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_mul_sub_back:wwwn #1; #2; #3#4#5#6#7#8;
+\cs_new:Npn \__fp_fixed_mul_sub_back:wwwn
+ #1\__fp_sep: #2\__fp_sep: #3#4#5#6#7#8\__fp_sep:
{
\exp_after:wN \__fp_fixed_mul_after:wwn
\int_value:w \__fp_int_eval:w \c__fp_big_leading_shift_int
\exp_after:wN \__fp_pack_big:NNNNNNw
\int_value:w \__fp_int_eval:w \c__fp_big_middle_shift_int + #3 #4
\__fp_fixed_mul_add:Nwnnnwnnn -
- + #5 #6 ; #2 ; #1 ; #2 ; -
- + #7 #8 ; ;
+ + #5 #6 \__fp_sep: #2 \__fp_sep: #1 \__fp_sep: #2 \__fp_sep: -
+ + #7 #8 \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_one_minus_mul:wwn #1; #2;
+\cs_new:Npn \__fp_fixed_one_minus_mul:wwn #1\__fp_sep: #2\__fp_sep:
{
\exp_after:wN \__fp_fixed_mul_after:wwn
\int_value:w \__fp_int_eval:w \c__fp_big_leading_shift_int
@@ -18948,10 +19140,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w \__fp_int_eval:w \c__fp_big_middle_shift_int +
1 0000 0000
\__fp_fixed_mul_add:Nwnnnwnnn -
- ; #2 ; #1 ; #2 ; -
- ; ;
+ \__fp_sep: #2 \__fp_sep: #1 \__fp_sep: #2 \__fp_sep: -
+ \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_mul_add:Nwnnnwnnn #1 #2; #3#4#5#6; #7#8#9
+\cs_new:Npn \__fp_fixed_mul_add:Nwnnnwnnn #1 #2\__fp_sep: #3#4#5#6\__fp_sep: #7#8#9
{
#1 #7*#3
\exp_after:wN \__fp_pack_big:NNNNNNw
@@ -18964,7 +19156,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w \__fp_int_eval:w \c__fp_big_middle_shift_int
#1 \__fp_fixed_mul_add:nnnnwnnnn {#7}{#8}{#9}
}
-\cs_new:Npn \__fp_fixed_mul_add:nnnnwnnnn #1#2#3#4#5; #6#7#8#9
+\cs_new:Npn \__fp_fixed_mul_add:nnnnwnnnn #1#2#3#4#5\__fp_sep: #6#7#8#9
{
( #1*#9 + #2*#8 + #3*#7 + #4*#6 )
\exp_after:wN \__fp_pack_big:NNNNNNw
@@ -18972,10 +19164,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_fixed_mul_add:nnnnwnnwN
{ #6 + #4*#7 + #3*#8 + #2*#9 + #1 }
{ #7 + #4*#8 + #3*#9 + #2 }
- {#1} #5;
+ {#1} #5\__fp_sep:
{#6}
}
-\cs_new:Npn \__fp_fixed_mul_add:nnnnwnnwN #1#2 #3#4#5; #6#7#8; #9
+\cs_new:Npn \__fp_fixed_mul_add:nnnnwnnwN #1#2 #3#4#5\__fp_sep: #6#7#8\__fp_sep: #9
{
#9 (#4* #1 *#7)
#9 (#5*#6+#4* #2 *#7+#3*#8) / \c__fp_myriad_int
@@ -18983,29 +19175,30 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__fp_ep_to_fixed:wwn #1,#2
{
\exp_after:wN \__fp_ep_to_fixed_auxi:www
- \int_value:w \__fp_int_eval:w 1 0000 0000 + #2 \exp_after:wN ;
+ \int_value:w \__fp_int_eval:w 1 0000 0000 + #2 \exp_after:wN \__fp_sep:
\exp:w \exp_end_continue_f:w
- \prg_replicate:nn { 4 - \int_max:nn {#1} { -32 } } { 0 } ;
+ \prg_replicate:nn { 4 - \int_max:nn {#1} { -32 } } { 0 } \__fp_sep:
}
-\cs_new:Npn \__fp_ep_to_fixed_auxi:www 1#1; #2; #3#4#5#6#7;
+\cs_new:Npn \__fp_ep_to_fixed_auxi:www
+ 1#1\__fp_sep: #2\__fp_sep: #3#4#5#6#7\__fp_sep:
{
\__fp_pack_eight:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN
- \__fp_ep_to_fixed_auxii:nnnnnnnwn ;
+ \__fp_ep_to_fixed_auxii:nnnnnnnwn \__fp_sep:
#2 #1#3#4#5#6#7 0000 !
}
-\cs_new:Npn \__fp_ep_to_fixed_auxii:nnnnnnnwn #1#2#3#4#5#6#7; #8! #9
- { #9 {#1#2}{#3}{#4}{#5}{#6}{#7}; }
-\cs_new:Npn \__fp_ep_to_ep:wwN #1,#2#3#4#5#6#7; #8
+\cs_new:Npn \__fp_ep_to_fixed_auxii:nnnnnnnwn #1#2#3#4#5#6#7\__fp_sep: #8! #9
+ { #9 {#1#2}{#3}{#4}{#5}{#6}{#7}\__fp_sep: }
+\cs_new:Npn \__fp_ep_to_ep:wwN #1,#2#3#4#5#6#7\__fp_sep: #8
{
\exp_after:wN #8
\int_value:w \__fp_int_eval:w #1 + 4
\exp_after:wN \use_i:nn
\exp_after:wN \__fp_ep_to_ep_loop:N
\int_value:w \__fp_int_eval:w 1 0000 0000 + #2 \__fp_int_eval_end:
- #3#4#5#6#7 ; ; !
+ #3#4#5#6#7 \__fp_sep: \__fp_sep: !
}
\cs_new:Npn \__fp_ep_to_ep_loop:N #1
{
@@ -19017,27 +19210,29 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_ep_to_ep_loop:N
}
\cs_new:Npn \__fp_ep_to_ep_end:www
- #1 \fi: \__fp_ep_to_ep_loop:N #2; #3!
+ #1 \fi: \__fp_ep_to_ep_loop:N #2\__fp_sep: #3!
{
\fi:
- \if_meaning:w ; #1
+ \if_meaning:w \__fp_sep: #1
- 2 * \c__fp_max_exponent_int
\__fp_ep_to_ep_zero:ww
\fi:
\__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN
- \__fp_use_i:ww , ;
- #1 #2 0000 0000 0000 0000 0000 0000 ;
+ \__fp_use_i:ww , \__fp_sep:
+ #1 #2 0000 0000 0000 0000 0000 0000 \__fp_sep:
}
-\cs_new:Npn \__fp_ep_to_ep_zero:ww \fi: #1; #2; #3;
- { \fi: , {1000}{0000}{0000}{0000}{0000}{0000} ; }
-\cs_new:Npn \__fp_ep_compare:wwww #1,#2#3#4#5#6#7;
- { \__fp_ep_compare_aux:wwww {#1}{#2}{#3}{#4}{#5}; #6#7; }
-\cs_new:Npn \__fp_ep_compare_aux:wwww #1;#2;#3,#4#5#6#7#8#9;
+\cs_new:Npn \__fp_ep_to_ep_zero:ww \fi: #1\__fp_sep: #2\__fp_sep: #3\__fp_sep:
+ { \fi: , {1000}{0000}{0000}{0000}{0000}{0000} \__fp_sep: }
+\cs_new:Npn \__fp_ep_compare:wwww #1,#2#3#4#5#6#7\__fp_sep:
+ { \__fp_ep_compare_aux:wwww {#1}{#2}{#3}{#4}{#5}\__fp_sep: #6#7\__fp_sep: }
+\cs_new:Npn \__fp_ep_compare_aux:wwww
+ #1\__fp_sep:#2\__fp_sep:#3,#4#5#6#7#8#9\__fp_sep:
{
\if_case:w
- \__fp_compare_npos:nwnw #1; {#3}{#4}{#5}{#6}{#7}; \exp_stop_f:
+ \__fp_compare_npos:nwnw
+ #1\__fp_sep: {#3}{#4}{#5}{#6}{#7}\__fp_sep: \exp_stop_f:
\if_int_compare:w #2 = #8#9 \exp_stop_f:
0
\else:
@@ -19047,77 +19242,79 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else: -1
\fi:
}
-\cs_new:Npn \__fp_ep_mul:wwwwn #1,#2; #3,#4;
+\cs_new:Npn \__fp_ep_mul:wwwwn #1,#2\__fp_sep: #3,#4\__fp_sep:
{
- \__fp_ep_to_ep:wwN #3,#4;
+ \__fp_ep_to_ep:wwN #3,#4\__fp_sep:
\__fp_fixed_continue:wn
{
- \__fp_ep_to_ep:wwN #1,#2;
+ \__fp_ep_to_ep:wwN #1,#2\__fp_sep:
\__fp_ep_mul_raw:wwwwN
}
\__fp_fixed_continue:wn
}
-\cs_new:Npn \__fp_ep_mul_raw:wwwwN #1,#2; #3,#4; #5
+\cs_new:Npn \__fp_ep_mul_raw:wwwwN #1,#2\__fp_sep: #3,#4\__fp_sep: #5
{
- \__fp_fixed_mul:wwn #2; #4;
+ \__fp_fixed_mul:wwn #2\__fp_sep: #4\__fp_sep:
{ \exp_after:wN #5 \int_value:w \__fp_int_eval:w #1 + #3 , }
}
-\cs_new:Npn \__fp_ep_div:wwwwn #1,#2; #3,#4;
+\cs_new:Npn \__fp_ep_div:wwwwn #1,#2\__fp_sep: #3,#4\__fp_sep:
{
- \__fp_ep_to_ep:wwN #1,#2;
+ \__fp_ep_to_ep:wwN #1,#2\__fp_sep:
\__fp_fixed_continue:wn
{
- \__fp_ep_to_ep:wwN #3,#4;
+ \__fp_ep_to_ep:wwN #3,#4\__fp_sep:
\__fp_ep_div_esti:wwwwn
}
}
-\cs_new:Npn \__fp_ep_div_esti:wwwwn #1,#2#3; #4,
+\cs_new:Npn \__fp_ep_div_esti:wwwwn #1,#2#3\__fp_sep: #4,
{
\exp_after:wN \__fp_ep_div_estii:wwnnwwn
\int_value:w \__fp_int_eval:w 10 0000 0000 / ( #2 + 1 )
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\int_value:w \__fp_int_eval:w #4 - #1 + 1 ,
- {#2} #3;
+ {#2} #3\__fp_sep:
}
-\cs_new:Npn \__fp_ep_div_estii:wwnnwwn #1; #2,#3#4#5; #6; #7
+\cs_new:Npn \__fp_ep_div_estii:wwnnwwn
+ #1\__fp_sep: #2,#3#4#5\__fp_sep: #6\__fp_sep: #7
{
\exp_after:wN \__fp_ep_div_estiii:NNNNNwwwn
\int_value:w \__fp_int_eval:w 10 0000 0000 - 1750
- + #1 000 + (10 0000 0000 / #3 - #1) * (1000 - #4 / 10) ;
- {#3}{#4}#5; #6; { #7 #2, }
+ + #1 000 + (10 0000 0000 / #3 - #1) * (1000 - #4 / 10) \__fp_sep:
+ {#3}{#4}#5\__fp_sep: #6\__fp_sep: { #7 #2, }
}
-\cs_new:Npn \__fp_ep_div_estiii:NNNNNwwwn 1#1#2#3#4#5#6; #7;
+\cs_new:Npn \__fp_ep_div_estiii:NNNNNwwwn 1#1#2#3#4#5#6\__fp_sep: #7\__fp_sep:
{
- \__fp_fixed_mul_short:wwn #7; {#1}{#2#3#4#5}{#6};
+ \__fp_fixed_mul_short:wwn #7\__fp_sep: {#1}{#2#3#4#5}{#6}\__fp_sep:
\__fp_ep_div_epsi:wnNNNNNn {#1#2#3#4}#5#6
\__fp_fixed_mul:wwn
}
-\cs_new:Npn \__fp_ep_div_epsi:wnNNNNNn #1#2#3#4#5#6;
+\cs_new:Npn \__fp_ep_div_epsi:wnNNNNNn #1#2#3#4#5#6\__fp_sep:
{
\exp_after:wN \__fp_ep_div_epsii:wwnNNNNNn
\int_value:w \__fp_int_eval:w 1 9998 - #2
\exp_after:wN \__fp_ep_div_eps_pack:NNNNNw
\int_value:w \__fp_int_eval:w 1 9999 9998 - #3#4
\exp_after:wN \__fp_ep_div_eps_pack:NNNNNw
- \int_value:w \__fp_int_eval:w 2 0000 0000 - #5#6 ; ;
+ \int_value:w \__fp_int_eval:w 2 0000 0000 - #5#6 \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_ep_div_eps_pack:NNNNNw #1#2#3#4#5#6;
- { + #1 ; {#2#3#4#5} {#6} }
-\cs_new:Npn \__fp_ep_div_epsii:wwnNNNNNn 1#1; #2; #3#4#5#6#7#8
+\cs_new:Npn \__fp_ep_div_eps_pack:NNNNNw #1#2#3#4#5#6\__fp_sep:
+ { + #1 \__fp_sep: {#2#3#4#5} {#6} }
+\cs_new:Npn \__fp_ep_div_epsii:wwnNNNNNn 1#1\__fp_sep: #2\__fp_sep: #3#4#5#6#7#8
{
- \__fp_fixed_mul:wwn {0000}{#1}#2; {0000}{#1}#2;
+ \__fp_fixed_mul:wwn {0000}{#1}#2\__fp_sep: {0000}{#1}#2\__fp_sep:
\__fp_fixed_add_one:wN
- \__fp_fixed_mul:wwn {10000} {#1} #2 ;
+ \__fp_fixed_mul:wwn {10000} {#1} #2 \__fp_sep:
{
- \__fp_fixed_mul_short:wwn {0000}{#1}#2; {#3}{#4#5#6#7}{#8000};
+ \__fp_fixed_mul_short:wwn
+ {0000}{#1}#2\__fp_sep: {#3}{#4#5#6#7}{#8000}\__fp_sep:
\__fp_fixed_div_myriad:wn
\__fp_fixed_mul:wwn
}
- \__fp_fixed_add:wwn {#3}{#4#5#6#7}{#8000}{0000}{0000}{0000};
+ \__fp_fixed_add:wwn {#3}{#4#5#6#7}{#8000}{0000}{0000}{0000}\__fp_sep:
}
-\cs_new:Npn \__fp_ep_isqrt:wwn #1,#2;
+\cs_new:Npn \__fp_ep_isqrt:wwn #1,#2\__fp_sep:
{
- \__fp_ep_to_ep:wwN #1,#2;
+ \__fp_ep_to_ep:wwN #1,#2\__fp_sep:
\__fp_ep_isqrt_auxi:wwn
}
\cs_new:Npn \__fp_ep_isqrt_auxi:wwn #1,
@@ -19128,10 +19325,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ (1 - #1) / 2 , 535 , { 0 } { } }
{ 1 - #1 / 2 , 168 , { } { 0 } }
}
-\cs_new:Npn \__fp_ep_isqrt_auxii:wwnnnwn #1, #2, #3#4 #5#6; #7
+\cs_new:Npn \__fp_ep_isqrt_auxii:wwnnnwn #1, #2, #3#4 #5#6\__fp_sep: #7
{
\__fp_ep_isqrt_esti:wwwnnwn #2, 0, #5, {#3} {#4}
- {#5} #6 ; { #7 #1 , }
+ {#5} #6 \__fp_sep: { #7 #1 , }
}
\cs_new:Npn \__fp_ep_isqrt_esti:wwwnnwn #1, #2, #3, #4
{
@@ -19147,45 +19344,47 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\exp_after:wN \__fp_ep_isqrt_estiii:NNNNNwwwn
\int_value:w \__fp_int_eval:w 1000 0000 + #2 * #2 #5 * 5
- \exp_after:wN , \int_value:w \__fp_int_eval:w 10000 + #2 ;
+ \exp_after:wN , \int_value:w \__fp_int_eval:w 10000 + #2 \__fp_sep:
}
-\cs_new:Npn \__fp_ep_isqrt_estiii:NNNNNwwwn 1#1#2#3#4#5#6, 1#7#8; #9;
+\cs_new:Npn \__fp_ep_isqrt_estiii:NNNNNwwwn
+ 1#1#2#3#4#5#6, 1#7#8\__fp_sep: #9\__fp_sep:
{
- \__fp_fixed_mul_short:wwn #9; {#1} {#2#3#4#5} {#600} ;
+ \__fp_fixed_mul_short:wwn #9\__fp_sep: {#1} {#2#3#4#5} {#600} \__fp_sep:
\__fp_ep_isqrt_epsi:wN
- \__fp_fixed_mul_short:wwn {#7} {#80} {0000} ;
+ \__fp_fixed_mul_short:wwn {#7} {#80} {0000} \__fp_sep:
}
-\cs_new:Npn \__fp_ep_isqrt_epsi:wN #1;
+\cs_new:Npn \__fp_ep_isqrt_epsi:wN #1\__fp_sep:
{
- \__fp_fixed_sub:wwn {15000}{0000}{0000}{0000}{0000}{0000}; #1;
- \__fp_ep_isqrt_epsii:wwN #1;
- \__fp_ep_isqrt_epsii:wwN #1;
- \__fp_ep_isqrt_epsii:wwN #1;
+ \__fp_fixed_sub:wwn {15000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: #1\__fp_sep:
+ \__fp_ep_isqrt_epsii:wwN #1\__fp_sep:
+ \__fp_ep_isqrt_epsii:wwN #1\__fp_sep:
+ \__fp_ep_isqrt_epsii:wwN #1\__fp_sep:
}
-\cs_new:Npn \__fp_ep_isqrt_epsii:wwN #1; #2;
+\cs_new:Npn \__fp_ep_isqrt_epsii:wwN #1\__fp_sep: #2\__fp_sep:
{
- \__fp_fixed_mul:wwn #1; #1;
- \__fp_fixed_mul_sub_back:wwwn #2;
- {15000}{0000}{0000}{0000}{0000}{0000};
- \__fp_fixed_mul:wwn #1;
+ \__fp_fixed_mul:wwn #1\__fp_sep: #1\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #2\__fp_sep:
+ {15000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
+ \__fp_fixed_mul:wwn #1\__fp_sep:
}
\cs_new:Npn \__fp_ep_to_float_o:wwN #1,
{ + \__fp_int_eval:w #1 \__fp_fixed_to_float_o:wN }
-\cs_new:Npn \__fp_ep_inv_to_float_o:wwN #1,#2;
+\cs_new:Npn \__fp_ep_inv_to_float_o:wwN #1,#2\__fp_sep:
{
- \__fp_ep_div:wwwwn 1,{1000}{0000}{0000}{0000}{0000}{0000}; #1,#2;
+ \__fp_ep_div:wwwwn
+ 1,{1000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: #1,#2\__fp_sep:
\__fp_ep_to_float_o:wwN
}
\cs_new:Npn \__fp_fixed_inv_to_float_o:wN
{ \__fp_ep_inv_to_float_o:wwN 0, }
-\cs_new:Npn \__fp_fixed_to_float_rad_o:wN #1;
+\cs_new:Npn \__fp_fixed_to_float_rad_o:wN #1\__fp_sep:
{
- \__fp_fixed_mul:wwn #1; {5729}{5779}{5130}{8232}{0876}{7981};
+ \__fp_fixed_mul:wwn #1\__fp_sep: {5729}{5779}{5130}{8232}{0876}{7981}\__fp_sep:
{ \__fp_ep_to_float_o:wwN 2, }
}
-\cs_new:Npn \__fp_fixed_to_float_o:Nw #1#2;
- { \__fp_fixed_to_float_o:wN #2; #1 }
-\cs_new:Npn \__fp_fixed_to_float_o:wN #1#2#3#4#5#6; #7
+\cs_new:Npn \__fp_fixed_to_float_o:Nw #1#2\__fp_sep:
+ { \__fp_fixed_to_float_o:wN #2\__fp_sep: #1 }
+\cs_new:Npn \__fp_fixed_to_float_o:wN #1#2#3#4#5#6\__fp_sep: #7
{ % for the 8-digit-at-the-start thing
+ \__fp_int_eval:w \c__fp_block_int
\exp_after:wN \exp_after:wN
@@ -19196,8 +19395,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w 1#2 \exp_after:wN \__fp_use_none_stop_f:n
\int_value:w 1#3#4 \exp_after:wN \__fp_use_none_stop_f:n
\int_value:w 1#5#6
- \exp_after:wN ;
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
+ \exp_after:wN \__fp_sep:
}
\cs_new:Npn \__fp_fixed_to_loop:N #1
{
@@ -19209,36 +19408,36 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN #1
\fi:
}
-\cs_new:Npn \__fp_fixed_to_loop_end:w #1 #2 ;
+\cs_new:Npn \__fp_fixed_to_loop_end:w #1 #2 \__fp_sep:
{
- \if_meaning:w ; #1
+ \if_meaning:w \__fp_sep: #1
\exp_after:wN \__fp_fixed_to_float_zero:w
\else:
\exp_after:wN \__fp_pack_twice_four:wNNNNNNNN
\exp_after:wN \__fp_pack_twice_four:wNNNNNNNN
\exp_after:wN \__fp_fixed_to_float_pack:ww
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\fi:
- #1 #2 0000 0000 0000 0000 ;
+ #1 #2 0000 0000 0000 0000 \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_to_float_zero:w ; 0000 0000 0000 0000 ;
+\cs_new:Npn \__fp_fixed_to_float_zero:w \__fp_sep: 0000 0000 0000 0000 \__fp_sep:
{
- - 2 * \c__fp_max_exponent_int ;
- {0000} {0000} {0000} {0000} ;
+ - 2 * \c__fp_max_exponent_int \__fp_sep:
+ {0000} {0000} {0000} {0000} \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_to_float_pack:ww #1 ; #2#3 ; ;
+\cs_new:Npn \__fp_fixed_to_float_pack:ww #1 \__fp_sep: #2#3 \__fp_sep: \__fp_sep:
{
\if_int_compare:w #2 > 4 \exp_stop_f:
\exp_after:wN \__fp_fixed_to_float_round_up:wnnnnw
\fi:
- ; #1 ;
+ \__fp_sep: #1 \__fp_sep:
}
-\cs_new:Npn \__fp_fixed_to_float_round_up:wnnnnw ; #1#2#3#4 ;
+\cs_new:Npn \__fp_fixed_to_float_round_up:wnnnnw \__fp_sep: #1#2#3#4 \__fp_sep:
{
\exp_after:wN \__fp_basics_pack_high:NNNNNw
\int_value:w \__fp_int_eval:w 1 #1#2
\exp_after:wN \__fp_basics_pack_low:NNNNNw
- \int_value:w \__fp_int_eval:w 1 #3#4 + 1 ;
+ \int_value:w \__fp_int_eval:w 1 #3#4 + 1 \__fp_sep:
}
%% File: l3fp-expo.dtx
\cs_new:Npn \__fp_parse_word_exp:N
@@ -19247,16 +19446,25 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_parse_unary_function:NNN \__fp_ln_o:w ? }
\cs_new:Npn \__fp_parse_word_fact:N
{ \__fp_parse_unary_function:NNN \__fp_fact_o:w ? }
-\tl_const:Nn \c__fp_ln_i_fixed_tl { {0000}{0000}{0000}{0000}{0000}{0000};}
-\tl_const:Nn \c__fp_ln_ii_fixed_tl { {6931}{4718}{0559}{9453}{0941}{7232};}
-\tl_const:Nn \c__fp_ln_iii_fixed_tl {{10986}{1228}{8668}{1096}{9139}{5245};}
-\tl_const:Nn \c__fp_ln_iv_fixed_tl {{13862}{9436}{1119}{8906}{1883}{4464};}
-\tl_const:Nn \c__fp_ln_vi_fixed_tl {{17917}{5946}{9228}{0550}{0081}{2477};}
-\tl_const:Nn \c__fp_ln_vii_fixed_tl {{19459}{1014}{9055}{3133}{0510}{5353};}
-\tl_const:Nn \c__fp_ln_viii_fixed_tl{{20794}{4154}{1679}{8359}{2825}{1696};}
-\tl_const:Nn \c__fp_ln_ix_fixed_tl {{21972}{2457}{7336}{2193}{8279}{0490};}
-\tl_const:Nn \c__fp_ln_x_fixed_tl {{23025}{8509}{2994}{0456}{8401}{7991};}
-\cs_new:Npn \__fp_ln_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\tl_const:Nn \c__fp_ln_i_fixed_tl
+ { {0000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:}
+\tl_const:Nn \c__fp_ln_ii_fixed_tl
+ { {6931}{4718}{0559}{9453}{0941}{7232}\__fp_sep:}
+\tl_const:Nn \c__fp_ln_iii_fixed_tl
+ {{10986}{1228}{8668}{1096}{9139}{5245}\__fp_sep:}
+\tl_const:Nn \c__fp_ln_iv_fixed_tl
+ {{13862}{9436}{1119}{8906}{1883}{4464}\__fp_sep:}
+\tl_const:Nn \c__fp_ln_vi_fixed_tl
+ {{17917}{5946}{9228}{0550}{0081}{2477}\__fp_sep:}
+\tl_const:Nn \c__fp_ln_vii_fixed_tl
+ {{19459}{1014}{9055}{3133}{0510}{5353}\__fp_sep:}
+\tl_const:Nn \c__fp_ln_viii_fixed_tl
+ {{20794}{4154}{1679}{8359}{2825}{1696}\__fp_sep:}
+\tl_const:Nn \c__fp_ln_ix_fixed_tl
+ {{21972}{2457}{7336}{2193}{8279}{0490}\__fp_sep:}
+\tl_const:Nn \c__fp_ln_x_fixed_tl
+ {{23025}{8509}{2994}{0456}{8401}{7991}\__fp_sep:}
+\cs_new:Npn \__fp_ln_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_meaning:w 2 #3
\__fp_case_use:nw { \__fp_invalid_operation_o:nw { ln } }
@@ -19268,9 +19476,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\__fp_case_return_same_o:w
\fi:
- \__fp_ln_npos_o:w \s__fp \__fp_chk:w #2#3#4;
+ \__fp_ln_npos_o:w \s__fp \__fp_chk:w #2#3#4\__fp_sep:
}
-\cs_new:Npn \__fp_ln_npos_o:w \s__fp \__fp_chk:w 10#1#2#3;
+\cs_new:Npn \__fp_ln_npos_o:w \s__fp \__fp_chk:w 10#1#2#3\__fp_sep:
{ %^^A todo: ln(1) should be "exact zero", not "underflow"
\exp_after:wN \__fp_sanitize:Nw
\int_value:w % for the overall sign
@@ -19302,9 +19510,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or: 2
\else: 1
\fi:
- ; { #1 #2 #3 #4 }
+ \__fp_sep: { #1 #2 #3 #4 }
}
-\cs_new:Npn \__fp_ln_x_ii:wnnnn #1; #2#3#4#5
+\cs_new:Npn \__fp_ln_x_ii:wnnnn #1\__fp_sep: #2#3#4#5
{
\exp_after:wN \__fp_ln_div_after:Nw
\cs:w c__fp_ln_ \__fp_int_to_roman:w #1 _fixed_tl \exp_after:wN \cs_end:
@@ -19314,22 +19522,22 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_ln_x_iii_var:NNNNNw
\int_value:w \__fp_int_eval:w 9999 9990 + #1*#2#3 +
\exp_after:wN \__fp_ln_x_iii:NNNNNNw
- \int_value:w \__fp_int_eval:w 10 0000 0000 + #1*#4#5 ;
+ \int_value:w \__fp_int_eval:w 10 0000 0000 + #1*#4#5 \__fp_sep:
{20000} {0000} {0000} {0000}
} %^^A todo: reoptimize (a generalization attempt failed).
-\cs_new:Npn \__fp_ln_x_iii:NNNNNNw #1#2 #3#4#5#6 #7;
- { #1#2; {#3#4#5#6} {#7} }
-\cs_new:Npn \__fp_ln_x_iii_var:NNNNNw #1 #2#3#4#5 #6;
+\cs_new:Npn \__fp_ln_x_iii:NNNNNNw #1#2 #3#4#5#6 #7\__fp_sep:
+ { #1#2\__fp_sep: {#3#4#5#6} {#7} }
+\cs_new:Npn \__fp_ln_x_iii_var:NNNNNw #1 #2#3#4#5 #6\__fp_sep:
{
- #1#2#3#4#5 + 1 ;
+ #1#2#3#4#5 + 1 \__fp_sep:
{#1#2#3#4#5} {#6}
}
-\cs_new:Npn \__fp_ln_x_iv:wnnnnnnnn #1; #2#3#4#5 #6#7#8#9
+\cs_new:Npn \__fp_ln_x_iv:wnnnnnnnn #1\__fp_sep: #2#3#4#5 #6#7#8#9
{
\exp_after:wN \__fp_div_significand_pack:NNN
\int_value:w \__fp_int_eval:w
- \__fp_ln_div_i:w #1 ;
- #6 #7 ; {#8} {#9}
+ \__fp_ln_div_i:w #1 \__fp_sep:
+ #6 #7 \__fp_sep: {#8} {#9}
{#2} {#3} {#4} {#5}
{ \exp_after:wN \__fp_ln_div_ii:wwn \int_value:w #1 }
{ \exp_after:wN \__fp_ln_div_ii:wwn \int_value:w #1 }
@@ -19337,25 +19545,27 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \exp_after:wN \__fp_ln_div_ii:wwn \int_value:w #1 }
{ \exp_after:wN \__fp_ln_div_vi:wwn \int_value:w #1 }
}
-\cs_new:Npn \__fp_ln_div_i:w #1;
+\cs_new:Npn \__fp_ln_div_i:w #1\__fp_sep:
{
\exp_after:wN \__fp_div_significand_calc:wwnnnnnnn
- \int_value:w \__fp_int_eval:w 999999 + 2 0000 0000 / #1 ; % Q1
+ \int_value:w \__fp_int_eval:w 999999 + 2 0000 0000 / #1 \__fp_sep: % Q1
}
-\cs_new:Npn \__fp_ln_div_ii:wwn #1; #2;#3 % y; B1;B2 <- for k=1
+\cs_new:Npn \__fp_ln_div_ii:wwn
+ #1\__fp_sep: #2\__fp_sep:#3 % y\__fp_sep: B1\__fp_sep:B2 <- for k=1
{
\exp_after:wN \__fp_div_significand_pack:NNN
\int_value:w \__fp_int_eval:w
\exp_after:wN \__fp_div_significand_calc:wwnnnnnnn
- \int_value:w \__fp_int_eval:w 999999 + #2 #3 / #1 ; % Q2
- #2 #3 ;
+ \int_value:w \__fp_int_eval:w 999999 + #2 #3 / #1 \__fp_sep: % Q2
+ #2 #3 \__fp_sep:
}
-\cs_new:Npn \__fp_ln_div_vi:wwn #1; #2;#3#4#5 #6#7#8#9 %y;F1;F2F3F4x1x2x3x4
+\cs_new:Npn \__fp_ln_div_vi:wwn
+ #1\__fp_sep: #2\__fp_sep:#3#4#5 #6#7#8#9 %y\__fp_sep:F1\__fp_sep:F2F3F4x1x2x3x4
{
\exp_after:wN \__fp_div_significand_pack:NNN
- \int_value:w \__fp_int_eval:w 1000000 + #2 #3 / #1 ; % Q6
+ \int_value:w \__fp_int_eval:w 1000000 + #2 #3 / #1 \__fp_sep: % Q6
}
-\cs_new:Npn \__fp_ln_div_after:Nw #1#2;
+\cs_new:Npn \__fp_ln_div_after:Nw #1#2\__fp_sep:
{
\if_meaning:w 0 #2
\exp_after:wN \__fp_ln_t_small:Nw
@@ -19365,19 +19575,22 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
#1
}
-\cs_new:Npn \__fp_ln_t_small:Nw #1 #2; #3; #4; #5; #6; #7;
+\cs_new:Npn \__fp_ln_t_small:Nw
+ #1 #2\__fp_sep: #3\__fp_sep: #4\__fp_sep: #5\__fp_sep: #6\__fp_sep: #7\__fp_sep:
{
\exp_after:wN \__fp_ln_t_large:NNw
\exp_after:wN + % <sign>
\exp_after:wN #1
- \int_value:w \__fp_int_eval:w 9999 - #2 \exp_after:wN ;
- \int_value:w \__fp_int_eval:w 9999 - #3 \exp_after:wN ;
- \int_value:w \__fp_int_eval:w 9999 - #4 \exp_after:wN ;
- \int_value:w \__fp_int_eval:w 9999 - #5 \exp_after:wN ;
- \int_value:w \__fp_int_eval:w 9999 - #6 \exp_after:wN ;
- \int_value:w \__fp_int_eval:w 1 0000 - #7 ;
- }
-\cs_new:Npn \__fp_ln_t_large:NNw #1 #2 #3; #4; #5; #6; #7; #8;
+ \int_value:w \__fp_int_eval:w 9999 - #2 \exp_after:wN \__fp_sep:
+ \int_value:w \__fp_int_eval:w 9999 - #3 \exp_after:wN \__fp_sep:
+ \int_value:w \__fp_int_eval:w 9999 - #4 \exp_after:wN \__fp_sep:
+ \int_value:w \__fp_int_eval:w 9999 - #5 \exp_after:wN \__fp_sep:
+ \int_value:w \__fp_int_eval:w 9999 - #6 \exp_after:wN \__fp_sep:
+ \int_value:w \__fp_int_eval:w 1 0000 - #7 \__fp_sep:
+ }
+\cs_new:Npn \__fp_ln_t_large:NNw
+ #1 #2
+ #3\__fp_sep: #4\__fp_sep: #5\__fp_sep: #6\__fp_sep: #7\__fp_sep: #8\__fp_sep:
{
\exp_after:wN \__fp_ln_square_t_after:w
\int_value:w \__fp_int_eval:w 9999 0000 + #3*#3
@@ -19391,7 +19604,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w \__fp_int_eval:w
1 0000 0000 + 2*#3*#7 + 2*#4*#6 + #5*#5
+ (2*#3*#8 + 2*#4*#7 + 2*#5*#6) / 1 0000
- % ; ; ;
+ % \__fp_sep: \__fp_sep: \__fp_sep:
\exp_after:wN \__fp_ln_twice_t_after:w
\int_value:w \__fp_int_eval:w -1 + 2*#3
\exp_after:wN \__fp_ln_twice_t_pack:Nw
@@ -19403,48 +19616,53 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_ln_twice_t_pack:Nw
\int_value:w \__fp_int_eval:w 9999 + 2*#7
\exp_after:wN \__fp_ln_twice_t_pack:Nw
- \int_value:w \__fp_int_eval:w 10000 + 2*#8 ; ;
+ \int_value:w \__fp_int_eval:w 10000 + 2*#8 \__fp_sep: \__fp_sep:
{ \__fp_ln_c:NwNw #1 }
#2
}
-\cs_new:Npn \__fp_ln_twice_t_pack:Nw #1 #2; { + #1 ; {#2} }
-\cs_new:Npn \__fp_ln_twice_t_after:w #1; { ;;; {#1} }
-\cs_new:Npn \__fp_ln_square_t_pack:NNNNNw #1 #2#3#4#5 #6;
- { + #1#2#3#4#5 ; {#6} }
-\cs_new:Npn \__fp_ln_square_t_after:w 1 0 #1#2#3 #4;
+\cs_new:Npn \__fp_ln_twice_t_pack:Nw #1 #2\__fp_sep: { + #1 \__fp_sep: {#2} }
+\cs_new:Npn \__fp_ln_twice_t_after:w #1\__fp_sep:
+ { \__fp_sep:\__fp_sep:\__fp_sep: {#1} }
+\cs_new:Npn \__fp_ln_square_t_pack:NNNNNw #1 #2#3#4#5 #6\__fp_sep:
+ { + #1#2#3#4#5 \__fp_sep: {#6} }
+\cs_new:Npn \__fp_ln_square_t_after:w 1 0 #1#2#3 #4\__fp_sep:
{ \__fp_ln_Taylor:wwNw {0#1#2#3} {#4} }
\cs_new:Npn \__fp_ln_Taylor:wwNw
- { \__fp_ln_Taylor_loop:www 21 ; {0000}{0000}{0000}{0000}{0000}{0000} ; }
-\cs_new:Npn \__fp_ln_Taylor_loop:www #1; #2; #3;
+ {
+ \__fp_ln_Taylor_loop:www
+ 21 \__fp_sep: {0000}{0000}{0000}{0000}{0000}{0000} \__fp_sep:
+ }
+\cs_new:Npn \__fp_ln_Taylor_loop:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep:
{
\if_int_compare:w #1 = \c_one_int
\__fp_ln_Taylor_break:w
\fi:
- \exp_after:wN \__fp_fixed_div_int:wwN \c__fp_one_fixed_tl #1;
- \__fp_fixed_add:wwn #2;
- \__fp_fixed_mul:wwn #3;
+ \exp_after:wN \__fp_fixed_div_int:wwN \c__fp_one_fixed_tl #1\__fp_sep:
+ \__fp_fixed_add:wwn #2\__fp_sep:
+ \__fp_fixed_mul:wwn #3\__fp_sep:
{
\exp_after:wN \__fp_ln_Taylor_loop:www
- \int_value:w \__fp_int_eval:w #1 - 2 ;
+ \int_value:w \__fp_int_eval:w #1 - 2 \__fp_sep:
}
- #3;
+ #3\__fp_sep:
}
-\cs_new:Npn \__fp_ln_Taylor_break:w \fi: #1 \__fp_fixed_add:wwn #2#3; #4 ;;
+\cs_new:Npn \__fp_ln_Taylor_break:w
+ \fi: #1 \__fp_fixed_add:wwn #2#3\__fp_sep: #4 \__fp_sep:\__fp_sep:
{
\fi:
\exp_after:wN \__fp_fixed_mul:wwn
- \exp_after:wN { \int_value:w \__fp_int_eval:w 10000 + #2 } #3;
+ \exp_after:wN { \int_value:w \__fp_int_eval:w 10000 + #2 } #3\__fp_sep:
}
-\cs_new:Npn \__fp_ln_c:NwNw #1 #2; #3
+\cs_new:Npn \__fp_ln_c:NwNw #1 #2\__fp_sep: #3
{
\if_meaning:w + #1
\exp_after:wN \exp_after:wN \exp_after:wN \__fp_fixed_sub:wwn
\else:
\exp_after:wN \exp_after:wN \exp_after:wN \__fp_fixed_add:wwn
\fi:
- #3 #2 ;
+ #3 #2 \__fp_sep:
}
-\cs_new:Npn \__fp_ln_exponent:wn #1; #2
+\cs_new:Npn \__fp_ln_exponent:wn #1\__fp_sep: #2
{
\if_case:w #2 \exp_stop_f:
0 \__fp_case_return:nw { \__fp_fixed_to_float_o:Nw 2 }
@@ -19461,25 +19679,25 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_fixed_add:wwn \int_value:w -
\fi:
\fi:
- #2; #1;
+ #2\__fp_sep: #1\__fp_sep:
}
-\cs_new:Npn \__fp_ln_exponent_one:ww 1; #1;
+\cs_new:Npn \__fp_ln_exponent_one:ww 1\__fp_sep: #1\__fp_sep:
{
0
- \exp_after:wN \__fp_fixed_sub:wwn \c__fp_ln_x_fixed_tl #1;
+ \exp_after:wN \__fp_fixed_sub:wwn \c__fp_ln_x_fixed_tl #1\__fp_sep:
\__fp_fixed_to_float_o:wN 0
}
-\cs_new:Npn \__fp_ln_exponent_small:NNww #1#2#3; #4#5#6#7#8#9;
+\cs_new:Npn \__fp_ln_exponent_small:NNww #1#2#3\__fp_sep: #4#5#6#7#8#9\__fp_sep:
{
4
\exp_after:wN \__fp_fixed_mul:wwn
\c__fp_ln_x_fixed_tl
- {#3}{0000}{0000}{0000}{0000}{0000} ;
+ {#3}{0000}{0000}{0000}{0000}{0000} \__fp_sep:
#2
- {0000}{#4}{#5}{#6}{#7}{#8};
+ {0000}{#4}{#5}{#6}{#7}{#8}\__fp_sep:
\__fp_fixed_to_float_o:wN #1
}
-\cs_new:Npn \__fp_exp_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_exp_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_return_o:Nw \c_one_fp
@@ -19496,7 +19714,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or:
\__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2#3#4;
+ \s__fp \__fp_chk:w #2#3#4\__fp_sep:
}
\cs_new:Npn \__fp_exp_normal_o:w \s__fp \__fp_chk:w 1#1
{
@@ -19506,7 +19724,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_exp_pos_o:NNwnw - \__fp_fixed_inv_to_float_o:wN
\fi:
}
-\cs_new:Npn \__fp_exp_pos_o:NNwnw #1#2#3 \fi: #4#5;
+\cs_new:Npn \__fp_exp_pos_o:NNwnw #1#2#3 \fi: #4#5\__fp_sep:
{
\fi:
\if_int_compare:w #4 > \c__fp_max_exp_exponent_int
@@ -19545,33 +19763,33 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN #1
\exp_after:wN #2
}
-\cs_new:Npn \__fp_exp_Taylor:Nnnwn #1#2#3 #4; #5 #6
+\cs_new:Npn \__fp_exp_Taylor:Nnnwn #1#2#3 #4\__fp_sep: #5 #6
{
#6
\__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN
\__fp_exp_Taylor_ii:ww
- ; #2#3#4 0000 0000 ;
+ \__fp_sep: #2#3#4 0000 0000 \__fp_sep:
}
-\cs_new:Npn \__fp_exp_Taylor_ii:ww #1; #2;
- { \__fp_exp_Taylor_loop:www 10 ; #1 ; #1 ; \s__fp_stop }
-\cs_new:Npn \__fp_exp_Taylor_loop:www #1; #2; #3;
+\cs_new:Npn \__fp_exp_Taylor_ii:ww #1\__fp_sep: #2\__fp_sep:
+ { \__fp_exp_Taylor_loop:www 10 \__fp_sep: #1 \__fp_sep: #1 \__fp_sep: \s__fp_stop }
+\cs_new:Npn \__fp_exp_Taylor_loop:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep:
{
\if_int_compare:w #1 = \c_one_int
\exp_after:wN \__fp_exp_Taylor_break:Nww
\fi:
- \__fp_fixed_div_int:wwN #3 ; #1 ;
+ \__fp_fixed_div_int:wwN #3 \__fp_sep: #1 \__fp_sep:
\__fp_fixed_add_one:wN
- \__fp_fixed_mul:wwn #2 ;
+ \__fp_fixed_mul:wwn #2 \__fp_sep:
{
\exp_after:wN \__fp_exp_Taylor_loop:www
- \int_value:w \__fp_int_eval:w #1 - 1 ;
- #2 ;
+ \int_value:w \__fp_int_eval:w #1 - 1 \__fp_sep:
+ #2 \__fp_sep:
}
}
-\cs_new:Npn \__fp_exp_Taylor_break:Nww #1 #2; #3 \s__fp_stop
- { \__fp_fixed_add_one:wN #2 ; }
+\cs_new:Npn \__fp_exp_Taylor_break:Nww #1 #2\__fp_sep: #3 \s__fp_stop
+ { \__fp_fixed_add_one:wN #2 \__fp_sep: }
\intarray_const_from_clist:Nn \c__fp_exp_intarray
{
1 , 1 1105 1709 , 1 1807 5647 , 1 6248 1171 ,
@@ -19629,23 +19847,23 @@ Type H <return> for immediate help}\def~{\errmessage{%
34744 , 1 3618 6973 , 1 3140 0875 , 1 3856 4102 ,
39087 , 1 3186 9209 , 1 6113 3900 , 1 6705 9685 ,
}
-\cs_new:Npn \__fp_exp_pos_large:NnnNwn #1#2#3 #4#5; #6
+\cs_new:Npn \__fp_exp_pos_large:NnnNwn #1#2#3 #4#5\__fp_sep: #6
{
\exp_after:wN \exp_after:wN \exp_after:wN \__fp_exp_large:NwN
\exp_after:wN \exp_after:wN \exp_after:wN #6
\exp_after:wN \c__fp_one_fixed_tl
\int_value:w #3 #4 \exp_stop_f:
- #5 00000 ;
+ #5 00000 \__fp_sep:
}
-\cs_new:Npn \__fp_exp_large:NwN #1#2; #3
+\cs_new:Npn \__fp_exp_large:NwN #1#2\__fp_sep: #3
{
\if_case:w #3 ~
\exp_after:wN \__fp_fixed_continue:wn
\else:
\exp_after:wN \__fp_exp_intarray:w
- \int_value:w \__fp_int_eval:w 36 * #1 + 4 * #3 \exp_after:wN ;
+ \int_value:w \__fp_int_eval:w 36 * #1 + 4 * #3 \exp_after:wN \__fp_sep:
\fi:
- #2;
+ #2\__fp_sep:
{
\if_meaning:w 0 #1
\exp_after:wN \__fp_exp_large_after:wwn
@@ -19655,7 +19873,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
}
}
-\cs_new:Npn \__fp_exp_intarray:w #1 ;
+\cs_new:Npn \__fp_exp_intarray:w #1 \__fp_sep:
{
+
\__kernel_intarray_item:Nn \c__fp_exp_intarray
@@ -19670,16 +19888,18 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_value:w \__kernel_intarray_item:Nn
\c__fp_exp_intarray { \__fp_int_eval:w #1 - 1 }
\exp_after:wN \__fp_exp_intarray_aux:w
- \int_value:w \__kernel_intarray_item:Nn \c__fp_exp_intarray {#1} ; ;
+ \int_value:w \__kernel_intarray_item:Nn
+ \c__fp_exp_intarray {#1} \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_exp_intarray_aux:w 1 #1#2#3#4#5 ; { ; {#1#2#3#4} {#5} }
-\cs_new:Npn \__fp_exp_large_after:wwn #1; #2; #3
+\cs_new:Npn \__fp_exp_intarray_aux:w 1 #1#2#3#4#5 \__fp_sep:
+ { \__fp_sep: {#1#2#3#4} {#5} }
+\cs_new:Npn \__fp_exp_large_after:wwn #1\__fp_sep: #2\__fp_sep: #3
{
- \__fp_exp_Taylor:Nnnwn ? { } { } 0 #2; {} #3
- \__fp_fixed_mul:wwn #1;
+ \__fp_exp_Taylor:Nnnwn ? { } { } 0 #2\__fp_sep: {} #3
+ \__fp_fixed_mul:wwn #1\__fp_sep:
}
\cs_new:cpn { __fp_ \iow_char:N \^ _o:ww }
- \s__fp \__fp_chk:w #1#2#3; \s__fp \__fp_chk:w #4#5#6;
+ \s__fp \__fp_chk:w #1#2#3\__fp_sep: \s__fp \__fp_chk:w #4#5#6\__fp_sep:
{
\if_meaning:w 0 #4
\__fp_case_return_o:Nw \c_one_fp
@@ -19698,13 +19918,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\exp_after:wN \__fp_pow_zero_or_inf:ww
\fi:
- \s__fp \__fp_chk:w #1#2#3;
+ \s__fp \__fp_chk:w #1#2#3\__fp_sep:
}
- { \s__fp \__fp_chk:w #4#5#6; \s__fp \__fp_chk:w #1#2#3; }
- \s__fp \__fp_chk:w #4#5#6;
+ { \s__fp \__fp_chk:w #4#5#6\__fp_sep: \s__fp \__fp_chk:w #1#2#3\__fp_sep: }
+ \s__fp \__fp_chk:w #4#5#6\__fp_sep:
}
\cs_new:Npn \__fp_pow_zero_or_inf:ww
- \s__fp \__fp_chk:w #1#2; \s__fp \__fp_chk:w #3#4
+ \s__fp \__fp_chk:w #1#2\__fp_sep: \s__fp \__fp_chk:w #3#4
{
\if_meaning:w 1 #4
\__fp_case_return_same_o:w
@@ -19721,13 +19941,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_case_use:nw
{
\__fp_division_by_zero_o:NNww \c_inf_fp ^
- \s__fp \__fp_chk:w #1 #2 ;
+ \s__fp \__fp_chk:w #1 #2 \__fp_sep:
}
\fi:
\s__fp \__fp_chk:w #3#4
}
\cs_new:Npn \__fp_pow_normal_o:ww
- \s__fp \__fp_chk:w 1 #1#2#3; \s__fp \__fp_chk:w #4#5
+ \s__fp \__fp_chk:w 1 #1#2#3\__fp_sep: \s__fp \__fp_chk:w #4#5
{
\if:w 0 \__fp_str_if_eq:nn { #2 #3 } { 1 {1000} {0000} {0000} {0000} }
\if_int_compare:w #4 #1 = 32 \exp_stop_f:
@@ -19751,7 +19971,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or:
\__fp_case_return_ii_o:ww
\fi:
- \s__fp \__fp_chk:w 1 #1 {#2} #3 ;
+ \s__fp \__fp_chk:w 1 #1 {#2} #3 \__fp_sep:
\s__fp \__fp_chk:w #4 #5
}
\cs_new:Npn \__fp_pow_npos_o:Nww #1 \s__fp \__fp_chk:w 1#2#3
@@ -19770,17 +19990,18 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
{#3}
}
-\cs_new:Npn \__fp_pow_npos_aux:NNnww #1#2#3#4#5; \s__fp \__fp_chk:w 1#6#7#8;
+\cs_new:Npn \__fp_pow_npos_aux:NNnww
+ #1#2#3#4#5\__fp_sep: \s__fp \__fp_chk:w 1#6#7#8\__fp_sep:
{
#1
\__fp_int_eval:w
\__fp_ln_significand:NNNNnnnN #4#5
\__fp_pow_exponent:wnN {#3}
- \__fp_fixed_mul:wwn #8 {0000}{0000} ;
- \__fp_pow_B:wwN #7;
+ \__fp_fixed_mul:wwn #8 {0000}{0000} \__fp_sep:
+ \__fp_pow_B:wwN #7\__fp_sep:
#1 #2 0 % fixed_to_float_o:wN
}
-\cs_new:Npn \__fp_pow_exponent:wnN #1; #2
+\cs_new:Npn \__fp_pow_exponent:wnN #1\__fp_sep: #2
{
\if_int_compare:w #2 > \c_zero_int
\exp_after:wN \__fp_pow_exponent:Nwnnnnnw % n\ln(10) - (-\ln(x))
@@ -19789,9 +20010,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_pow_exponent:Nwnnnnnw % -(|n|\ln(10) + (-\ln(x)))
\exp_after:wN -
\fi:
- #2; #1;
+ #2\__fp_sep: #1\__fp_sep:
}
-\cs_new:Npn \__fp_pow_exponent:Nwnnnnnw #1#2; #3#4#5#6#7#8;
+\cs_new:Npn \__fp_pow_exponent:Nwnnnnnw #1#2\__fp_sep: #3#4#5#6#7#8\__fp_sep:
{ %^^A todo: use that in ln.
\exp_after:wN \__fp_fixed_mul_after:wwn
\int_value:w \__fp_int_eval:w \c__fp_leading_shift_int
@@ -19810,9 +20031,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_pack:NNNNNw
\int_value:w \__fp_int_eval:w \c__fp_trailing_shift_int
#1 #2*8401 - #1 #7
- #1 ( #2*7991 - #8 ) / 1 0000 ; ;
+ #1 ( #2*7991 - #8 ) / 1 0000 \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_pow_B:wwN #1#2#3#4#5#6; #7;
+\cs_new:Npn \__fp_pow_B:wwN #1#2#3#4#5#6\__fp_sep: #7\__fp_sep:
{
\if_int_compare:w #7 < \c_zero_int
\exp_after:wN \__fp_pow_C_neg:w \int_value:w -
@@ -19823,23 +20044,23 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_pow_C_overflow:w \int_value:w
\fi:
\fi:
- #7 \exp_after:wN ;
+ #7 \exp_after:wN \__fp_sep:
\int_value:w \__fp_int_eval:w 10 0000 + #1 \__fp_int_eval_end:
- #2#3#4#5#6 0000 0000 0000 0000 0000 0000 ; %^^A todo: how many 0?
+ #2#3#4#5#6 0000 0000 0000 0000 0000 0000 \__fp_sep: %^^A todo: how many 0?
}
-\cs_new:Npn \__fp_pow_C_overflow:w #1; #2; #3
+\cs_new:Npn \__fp_pow_C_overflow:w #1\__fp_sep: #2\__fp_sep: #3
{
+ 2 * \c__fp_max_exponent_int
\exp_after:wN \__fp_fixed_continue:wn \c__fp_one_fixed_tl
}
-\cs_new:Npn \__fp_pow_C_neg:w #1 ; 1
+\cs_new:Npn \__fp_pow_C_neg:w #1 \__fp_sep: 1
{
\exp_after:wN \exp_after:wN \exp_after:wN \__fp_pow_C_pack:w
\prg_replicate:nn {#1} {0}
}
-\cs_new:Npn \__fp_pow_C_pos:w #1; 1
- { \__fp_pow_C_pos_loop:wN #1; }
-\cs_new:Npn \__fp_pow_C_pos_loop:wN #1; #2
+\cs_new:Npn \__fp_pow_C_pos:w #1\__fp_sep: 1
+ { \__fp_pow_C_pos_loop:wN #1\__fp_sep: }
+\cs_new:Npn \__fp_pow_C_pos_loop:wN #1\__fp_sep: #2
{
\if_meaning:w 0 #1
\exp_after:wN \__fp_pow_C_pack:w
@@ -19850,7 +20071,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\exp_after:wN \__fp_pow_C_overflow:w \int_value:w
\fi:
- \__fp_int_eval:w #1 - 1 \exp_after:wN ;
+ \__fp_int_eval:w #1 - 1 \exp_after:wN \__fp_sep:
\fi:
}
\cs_new:Npn \__fp_pow_C_pack:w
@@ -19859,20 +20080,21 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN 5
\c__fp_one_fixed_tl
}
-\cs_new:Npn \__fp_pow_neg:www \s__fp \__fp_chk:w #1#2; #3; #4;
+\cs_new:Npn \__fp_pow_neg:www
+ \s__fp \__fp_chk:w #1#2\__fp_sep: #3\__fp_sep: #4\__fp_sep:
{
- \if_case:w \__fp_pow_neg_case:w #4 ;
+ \if_case:w \__fp_pow_neg_case:w #4 \__fp_sep:
\exp_after:wN \__fp_pow_neg_aux:wNN
\or:
\if_int_compare:w \__fp_int_eval:w #1 / 2 = \c_one_int
- \__fp_invalid_operation_o:Nww ^ #3; #4;
+ \__fp_invalid_operation_o:Nww ^ #3\__fp_sep: #4\__fp_sep:
\exp:w \exp_end_continue_f:w
\exp_after:wN \exp_after:wN
\exp_after:wN \__fp_use_none_until_s:w
\fi:
\fi:
\__fp_exp_after_o:w
- \s__fp \__fp_chk:w #1#2;
+ \s__fp \__fp_chk:w #1#2\__fp_sep:
}
\cs_new:Npn \__fp_pow_neg_aux:wNN #1 \s__fp \__fp_chk:w #2#3
{
@@ -19882,7 +20104,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN #2
\int_value:w \__fp_int_eval:w 2 - #3 \__fp_int_eval_end:
}
-\cs_new:Npn \__fp_pow_neg_case:w \s__fp \__fp_chk:w #1#2#3;
+\cs_new:Npn \__fp_pow_neg_case:w \s__fp \__fp_chk:w #1#2#3\__fp_sep:
{
\if_case:w #1 \exp_stop_f:
-1
@@ -19902,7 +20124,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{#2} {#3} {#4} {#5}
\fi:
}
-\cs_new:Npn \__fp_pow_neg_case_aux:Nnnw #1#2#3#4 ;
+\cs_new:Npn \__fp_pow_neg_case_aux:Nnnw #1#2#3#4 \__fp_sep:
{
\if_meaning:w 0 #1
\if_int_odd:w #3 \exp_stop_f:
@@ -19915,7 +20137,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
}
\int_const:Nn \c__fp_fact_max_arg_int { 3248 }
-\cs_new:Npn \__fp_fact_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_fact_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_return_o:Nw \c_one_fp
@@ -19931,13 +20153,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_case_use:nw { \__fp_invalid_operation_o:fw { fact } }
\fi:
\__fp_fact_pos_o:w
- \s__fp \__fp_chk:w #2 #3 #4 ;
+ \s__fp \__fp_chk:w #2 #3 #4 \__fp_sep:
}
-\cs_new:Npn \__fp_fact_pos_o:w #1;
+\cs_new:Npn \__fp_fact_pos_o:w #1\__fp_sep:
{
- \__fp_small_int:wTF #1;
+ \__fp_small_int:wTF #1\__fp_sep:
{ \__fp_fact_int_o:n }
- { \__fp_invalid_operation_o:fw { fact } #1; }
+ { \__fp_invalid_operation_o:fw { fact } #1\__fp_sep: }
}
\cs_new:Npn \__fp_fact_int_o:n #1
{
@@ -19951,9 +20173,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_sanitize:Nw
\exp_after:wN 0
\int_value:w \__fp_int_eval:w
- \__fp_fact_loop_o:w #1 . 4 , { 1 } { } { } { } { } { } ;
+ \__fp_fact_loop_o:w #1 . 4 , { 1 } { } { } { } { } { } \__fp_sep:
}
-\cs_new:Npn \__fp_fact_loop_o:w #1 . #2 ;
+\cs_new:Npn \__fp_fact_loop_o:w #1 . #2 \__fp_sep:
{
\if_int_compare:w #1 < 12 \exp_stop_f:
\__fp_fact_small_o:w #1
@@ -19961,14 +20183,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_ep_mul:wwwwn
\exp_after:wN 4 \exp_after:wN ,
\exp_after:wN { \int_value:w \__fp_int_eval:w #1 * (#1 - 1) }
- { } { } { } { } { } ;
- #2 ;
+ { } { } { } { } { } \__fp_sep:
+ #2 \__fp_sep:
{
\exp_after:wN \__fp_fact_loop_o:w
\int_value:w \__fp_int_eval:w #1 - 2 .
}
}
-\cs_new:Npn \__fp_fact_small_o:w #1 \fi: #2 ; #3 ; #4
+\cs_new:Npn \__fp_fact_small_o:w #1 \fi: #2 \__fp_sep: #3 \__fp_sep: #4
{
\fi:
\exp_after:wN \__fp_ep_mul:wwwwn
@@ -19980,8 +20202,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
1 \or: 1 \or: 2 \or: 6 \or: 24 \or: 120 \or: 720 \or: 5040
\or: 40320 \or: 362880 \or: 3628800 \or: 39916800
\fi:
- } { } { } { } { } { } ;
- #3 ;
+ } { } { } { } { } { } \__fp_sep:
+ #3 \__fp_sep:
\__fp_ep_to_float_o:wwN 0
}
%% File: l3fp-trig.dtx
@@ -20012,7 +20234,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_parse_function:NNN \__fp_atan_o:Nw \use_i:nn }
\cs_new:Npn \__fp_parse_word_atand:N
{ \__fp_parse_function:NNN \__fp_atan_o:Nw \use_ii:nn }
-\cs_new:Npn \__fp_sin_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_sin_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_return_same_o:w
@@ -20025,9 +20247,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_invalid_operation_o:fw { #1 { sin } { sind } } }
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3 #4;
+ \s__fp \__fp_chk:w #2 #3 #4\__fp_sep:
}
-\cs_new:Npn \__fp_cos_o:w #1 \s__fp \__fp_chk:w #2#3; @
+\cs_new:Npn \__fp_cos_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_return_o:Nw \c_one_fp
@@ -20040,9 +20262,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_invalid_operation_o:fw { #1 { cos } { cosd } } }
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3;
+ \s__fp \__fp_chk:w #2 #3\__fp_sep:
}
-\cs_new:Npn \__fp_csc_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_csc_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_cot_zero_o:Nfw #3 { #1 { csc } { cscd } }
@@ -20055,9 +20277,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_invalid_operation_o:fw { #1 { csc } { cscd } } }
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3 #4;
+ \s__fp \__fp_chk:w #2 #3 #4\__fp_sep:
}
-\cs_new:Npn \__fp_sec_o:w #1 \s__fp \__fp_chk:w #2#3; @
+\cs_new:Npn \__fp_sec_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_return_o:Nw \c_one_fp
@@ -20070,9 +20292,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_invalid_operation_o:fw { #1 { sec } { secd } } }
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3;
+ \s__fp \__fp_chk:w #2 #3\__fp_sep:
}
-\cs_new:Npn \__fp_tan_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_tan_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_return_same_o:w
@@ -20085,9 +20307,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_invalid_operation_o:fw { #1 { tan } { tand } } }
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3 #4;
+ \s__fp \__fp_chk:w #2 #3 #4\__fp_sep:
}
-\cs_new:Npn \__fp_cot_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_cot_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_cot_zero_o:Nfw #3 { #1 { cot } { cotd } }
@@ -20100,7 +20322,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_invalid_operation_o:fw { #1 { cot } { cotd } } }
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3 #4;
+ \s__fp \__fp_chk:w #2 #3 #4\__fp_sep:
}
\cs_new:Npn \__fp_cot_zero_o:Nfw #1#2#3 \fi:
{
@@ -20110,7 +20332,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \exp_args:NNf \__fp_division_by_zero_o:Nnw \c_minus_inf_fp }
{#2}
}
-\cs_new:Npn \__fp_trig:NNNNNwn #1#2#3#4#5 \s__fp \__fp_chk:w 1#6#7#8;
+\cs_new:Npn \__fp_trig:NNNNNwn #1#2#3#4#5 \s__fp \__fp_chk:w 1#6#7#8\__fp_sep:
{
\exp_after:wN #2
\exp_after:wN #3
@@ -20122,44 +20344,44 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
#1 \__fp_trig_small:ww \__fp_trigd_small:ww
\fi:
- #7,#8{0000}{0000};
+ #7,#8{0000}{0000}\__fp_sep:
}
-\cs_new:Npn \__fp_trig_small:ww #1,#2;
- { \__fp_ep_to_fixed:wwn #1,#2; . #1,#2; }
-\cs_new:Npn \__fp_trigd_small:ww #1,#2;
+\cs_new:Npn \__fp_trig_small:ww #1,#2\__fp_sep:
+ { \__fp_ep_to_fixed:wwn #1,#2\__fp_sep: . #1,#2\__fp_sep: }
+\cs_new:Npn \__fp_trigd_small:ww #1,#2\__fp_sep:
{
\__fp_ep_mul_raw:wwwwN
- -1,{1745}{3292}{5199}{4329}{5769}{2369}; #1,#2;
+ -1,{1745}{3292}{5199}{4329}{5769}{2369}\__fp_sep: #1,#2\__fp_sep:
\__fp_trig_small:ww
}
-\cs_new:Npn \__fp_trigd_large:ww #1, #2#3#4#5#6#7;
+\cs_new:Npn \__fp_trigd_large:ww #1, #2#3#4#5#6#7\__fp_sep:
{
\exp_after:wN \__fp_pack_eight:wNNNNNNNN
\exp_after:wN \__fp_pack_eight:wNNNNNNNN
\exp_after:wN \__fp_pack_twice_four:wNNNNNNNN
\exp_after:wN \__fp_pack_twice_four:wNNNNNNNN
\exp_after:wN \__fp_trigd_large_auxi:nnnnwNNNN
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\exp:w \exp_end_continue_f:w
\prg_replicate:nn { \int_max:nn { 22 - #1 } { 0 } } { 0 }
#2#3#4#5#6#7 0000 0000 0000 !
}
-\cs_new:Npn \__fp_trigd_large_auxi:nnnnwNNNN #1#2#3#4#5; #6#7#8#9
+\cs_new:Npn \__fp_trigd_large_auxi:nnnnwNNNN #1#2#3#4#5\__fp_sep: #6#7#8#9
{
\exp_after:wN \__fp_trigd_large_auxii:wNw
\int_value:w \__fp_int_eval:w #1 + #2
- (#1 + #2 - 4) / 9 * 9 \__fp_int_eval_end:
- #3;
- #4; #5{#6#7#8#9};
+ #3\__fp_sep:
+ #4\__fp_sep: #5{#6#7#8#9}\__fp_sep:
}
-\cs_new:Npn \__fp_trigd_large_auxii:wNw #1; #2#3;
+\cs_new:Npn \__fp_trigd_large_auxii:wNw #1\__fp_sep: #2#3\__fp_sep:
{
+ (#1#2 - 4) / 9 * 2
\exp_after:wN \__fp_trigd_large_auxiii:www
\int_value:w \__fp_int_eval:w #1#2
- - (#1#2 - 4) / 9 * 9 \__fp_int_eval_end: #3 ;
+ - (#1#2 - 4) / 9 * 9 \__fp_int_eval_end: #3 \__fp_sep:
}
-\cs_new:Npn \__fp_trigd_large_auxiii:www #1; #2; #3!
+\cs_new:Npn \__fp_trigd_large_auxiii:www #1\__fp_sep: #2\__fp_sep: #3!
{
\if_int_compare:w #1 < 4500 \exp_stop_f:
\exp_after:wN \__fp_use_i_until_s:nw
@@ -20167,8 +20389,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
+ 1
\fi:
- \__fp_fixed_sub:wwn {9000}{0000}{0000}{0000}{0000}{0000};
- {#1}#2{0000}{0000};
+ \__fp_fixed_sub:wwn {9000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
+ {#1}#2{0000}{0000}\__fp_sep:
{ \__fp_trigd_small:ww 2, }
}
\intarray_const_from_clist:Nn \c__fp_trig_intarray
@@ -20385,12 +20607,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
159592267, 181172796, 144388537, 196763139, 127431422, 179531145,
100064922, 112650013, 132686230, 121550837,
}
-\cs_new:Npn \__fp_trig_large:ww #1, #2#3#4#5#6;
+\cs_new:Npn \__fp_trig_large:ww #1, #2#3#4#5#6\__fp_sep:
{
\exp_after:wN \__fp_trig_large_auxi:w
\int_value:w \__fp_int_eval:w (#1 - 4) / 8 \exp_after:wN ,
- \int_value:w #1 , ;
- {#2}{#3}{#4}{#5} ;
+ \int_value:w #1 , \__fp_sep:
+ {#2}{#3}{#4}{#5} \__fp_sep:
}
\cs_new:Npn \__fp_trig_large_auxi:w #1, #2,
{
@@ -20435,10 +20657,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN
\__fp_pack_twice_four:wNNNNNNNN \__fp_pack_twice_four:wNNNNNNNN
- \__fp_trig_large_auxv:www ;
+ \__fp_trig_large_auxv:www \__fp_sep:
}
\cs_new:Npn \__fp_trig_large_auxiii:w 1 { \exp_stop_f: }
-\cs_new:Npn \__fp_trig_large_auxv:www #1; #2; #3;
+\cs_new:Npn \__fp_trig_large_auxv:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep:
{
\exp_after:wN \__fp_use_i_until_s:nw
\exp_after:wN \__fp_trig_large_auxvii:w
@@ -20447,24 +20669,24 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_trig_large_auxvi:wnnnnnnnn }
+ \c__fp_trailing_shift_int - \c__fp_middle_shift_int
\__fp_use_i_until_s:nw
- ; #3 #1 ; ;
+ \__fp_sep: #3 #1 \__fp_sep: \__fp_sep:
}
-\cs_new:Npn \__fp_trig_large_auxvi:wnnnnnnnn #1; #2#3#4#5#6#7#8#9
+\cs_new:Npn \__fp_trig_large_auxvi:wnnnnnnnn #1\__fp_sep: #2#3#4#5#6#7#8#9
{
\exp_after:wN \__fp_trig_large_pack:NNNNNw
\int_value:w \__fp_int_eval:w \c__fp_middle_shift_int
+ #2*#9 + #3*#8 + #4*#7 + #5*#6
- #1; {#2}{#3}{#4}{#5} {#7}{#8}{#9}
+ #1\__fp_sep: {#2}{#3}{#4}{#5} {#7}{#8}{#9}
}
-\cs_new:Npn \__fp_trig_large_pack:NNNNNw #1#2#3#4#5#6;
- { + #1#2#3#4#5 ; #6 }
+\cs_new:Npn \__fp_trig_large_pack:NNNNNw #1#2#3#4#5#6\__fp_sep:
+ { + #1#2#3#4#5 \__fp_sep: #6 }
\cs_new:Npn \__fp_trig_large_auxvii:w #1#2#3
{
\exp_after:wN \__fp_trig_large_auxviii:ww
- \int_value:w \__fp_int_eval:w (#1#2#3 - 62) / 125 ;
+ \int_value:w \__fp_int_eval:w (#1#2#3 - 62) / 125 \__fp_sep:
#1#2#3
}
-\cs_new:Npn \__fp_trig_large_auxviii:ww #1;
+\cs_new:Npn \__fp_trig_large_auxviii:ww #1\__fp_sep:
{
+ #1
\if_int_odd:w #1 \exp_stop_f:
@@ -20483,25 +20705,25 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prg_replicate:nn { 13 }
{ \__fp_trig_large_auxx:wNNNNN }
+ \c__fp_trailing_shift_int - \c__fp_middle_shift_int
- ;
+ \__fp_sep:
}
-\cs_new:Npn \__fp_trig_large_auxx:wNNNNN #1; #2 #3#4#5#6
+\cs_new:Npn \__fp_trig_large_auxx:wNNNNN #1\__fp_sep: #2 #3#4#5#6
{
\exp_after:wN \__fp_trig_large_pack:NNNNNw
\int_value:w \__fp_int_eval:w \c__fp_middle_shift_int
#2 8 * #3#4#5#6
- #1; #2
+ #1\__fp_sep: #2
}
-\cs_new:Npn \__fp_trig_large_auxxi:w #1;
+\cs_new:Npn \__fp_trig_large_auxxi:w #1\__fp_sep:
{
\exp_after:wN \__fp_ep_mul_raw:wwwwN
- \int_value:w \__fp_int_eval:w 0 \__fp_ep_to_ep_loop:N #1 ; ; !
- 0,{7853}{9816}{3397}{4483}{0961}{5661};
+ \int_value:w \__fp_int_eval:w 0 \__fp_ep_to_ep_loop:N #1 \__fp_sep: \__fp_sep: !
+ 0,{7853}{9816}{3397}{4483}{0961}{5661}\__fp_sep:
\__fp_trig_small:ww
}
-\cs_new:Npn \__fp_sin_series_o:NNwwww #1#2#3. #4;
+\cs_new:Npn \__fp_sin_series_o:NNwwww #1#2#3. #4\__fp_sep:
{
- \__fp_fixed_mul:wwn #4; #4;
+ \__fp_fixed_mul:wwn #4\__fp_sep: #4\__fp_sep:
{
\exp_after:wN \__fp_sin_series_aux_o:NNnwww
\exp_after:wN #1
@@ -20514,7 +20736,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{#3}
}
}
-\cs_new:Npn \__fp_sin_series_aux_o:NNnwww #1#2#3 #4; #5,#6;
+\cs_new:Npn \__fp_sin_series_aux_o:NNnwww #1#2#3 #4\__fp_sep: #5,#6\__fp_sep:
{
\if_int_odd:w \__fp_int_eval:w #3 / 2 \__fp_int_eval_end:
\exp_after:wN \use_i:nn
@@ -20522,29 +20744,46 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \use_ii:nn
\fi:
{ % 1/18!
- \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{0000}{0001}{5619}{2070};
- #4;{0000}{0000}{0000}{0477}{9477}{3324};
- \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0000}{0011}{4707}{4559}{7730};
- \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0000}{2087}{6756}{9878}{6810};
- \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0027}{5573}{1922}{3985}{8907};
- \__fp_fixed_mul_sub_back:wwwn #4;{0000}{2480}{1587}{3015}{8730}{1587};
- \__fp_fixed_mul_sub_back:wwwn #4;{0013}{8888}{8888}{8888}{8888}{8889};
- \__fp_fixed_mul_sub_back:wwwn #4;{0416}{6666}{6666}{6666}{6666}{6667};
- \__fp_fixed_mul_sub_back:wwwn #4;{5000}{0000}{0000}{0000}{0000}{0000};
- \__fp_fixed_mul_sub_back:wwwn#4;{10000}{0000}{0000}{0000}{0000}{0000};
+ \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{0000}{0001}{5619}{2070}\__fp_sep:
+ #4\__fp_sep:
+ {0000}{0000}{0000}{0477}{9477}{3324}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0000}{0000}{0011}{4707}{4559}{7730}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0000}{0000}{2087}{6756}{9878}{6810}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0000}{0027}{5573}{1922}{3985}{8907}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0000}{2480}{1587}{3015}{8730}{1587}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0013}{8888}{8888}{8888}{8888}{8889}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0416}{6666}{6666}{6666}{6666}{6667}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {5000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn#4\__fp_sep:
+ {10000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
{ \__fp_fixed_continue:wn 0, }
}
{ % 1/17!
- \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{0000}{0028}{1145}{7254};
- #4;{0000}{0000}{0000}{7647}{1637}{3182};
- \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0000}{0160}{5904}{3836}{8216};
- \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0002}{5052}{1083}{8544}{1719};
- \__fp_fixed_mul_sub_back:wwwn #4;{0000}{0275}{5731}{9223}{9858}{9065};
- \__fp_fixed_mul_sub_back:wwwn #4;{0001}{9841}{2698}{4126}{9841}{2698};
- \__fp_fixed_mul_sub_back:wwwn #4;{0083}{3333}{3333}{3333}{3333}{3333};
- \__fp_fixed_mul_sub_back:wwwn #4;{1666}{6666}{6666}{6666}{6666}{6667};
- \__fp_fixed_mul_sub_back:wwwn#4;{10000}{0000}{0000}{0000}{0000}{0000};
- { \__fp_ep_mul:wwwwn 0, } #5,#6;
+ \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{0000}{0028}{1145}{7254}\__fp_sep:
+ #4\__fp_sep:
+ {0000}{0000}{0000}{7647}{1637}{3182}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0000}{0000}{0160}{5904}{3836}{8216}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0000}{0002}{5052}{1083}{8544}{1719}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0000}{0275}{5731}{9223}{9858}{9065}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0001}{9841}{2698}{4126}{9841}{2698}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {0083}{3333}{3333}{3333}{3333}{3333}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #4\__fp_sep:
+ {1666}{6666}{6666}{6666}{6666}{6667}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn#4\__fp_sep:
+ {10000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
+ { \__fp_ep_mul:wwwwn 0, } #5,#6\__fp_sep:
}
{
\exp_after:wN \__fp_sanitize:Nw
@@ -20553,9 +20792,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
#2
}
-\cs_new:Npn \__fp_tan_series_o:NNwwww #1#2#3. #4;
+\cs_new:Npn \__fp_tan_series_o:NNwwww #1#2#3. #4\__fp_sep:
{
- \__fp_fixed_mul:wwn #4; #4;
+ \__fp_fixed_mul:wwn #4\__fp_sep: #4\__fp_sep:
{
\exp_after:wN \__fp_tan_series_aux_o:Nnwww
\int_value:w
@@ -20566,22 +20805,32 @@ Type H <return> for immediate help}\def~{\errmessage{%
{#3}
}
}
-\cs_new:Npn \__fp_tan_series_aux_o:Nnwww #1 #2 #3; #4,#5;
- {
- \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{1527}{3493}{0856}{7059};
- #3; {0000}{0159}{6080}{0274}{5257}{6472};
- \__fp_fixed_mul_sub_back:wwwn #3; {0002}{4571}{2320}{0157}{2558}{8481};
- \__fp_fixed_mul_sub_back:wwwn #3; {0115}{5830}{7533}{5397}{3168}{2147};
- \__fp_fixed_mul_sub_back:wwwn #3; {1929}{8245}{6140}{3508}{7719}{2982};
- \__fp_fixed_mul_sub_back:wwwn #3;{10000}{0000}{0000}{0000}{0000}{0000};
- { \__fp_ep_mul:wwwwn 0, } #4,#5;
+\cs_new:Npn \__fp_tan_series_aux_o:Nnwww #1 #2 #3\__fp_sep: #4,#5\__fp_sep:
+ {
+ \__fp_fixed_mul_sub_back:wwwn {0000}{0000}{1527}{3493}{0856}{7059}\__fp_sep:
+ #3\__fp_sep:
+ {0000}{0159}{6080}{0274}{5257}{6472}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep:
+ {0002}{4571}{2320}{0157}{2558}{8481}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep:
+ {0115}{5830}{7533}{5397}{3168}{2147}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep:
+ {1929}{8245}{6140}{3508}{7719}{2982}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep:
+ {10000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
+ { \__fp_ep_mul:wwwwn 0, } #4,#5\__fp_sep:
{
- \__fp_fixed_mul_sub_back:wwwn {0000}{0007}{0258}{0681}{9408}{4706};
- #3;{0000}{2343}{7175}{1399}{6151}{7670};
- \__fp_fixed_mul_sub_back:wwwn #3;{0019}{2638}{4588}{9232}{8861}{3691};
- \__fp_fixed_mul_sub_back:wwwn #3;{0536}{6357}{0691}{4344}{6852}{4252};
- \__fp_fixed_mul_sub_back:wwwn #3;{5263}{1578}{9473}{6842}{1052}{6315};
- \__fp_fixed_mul_sub_back:wwwn#3;{10000}{0000}{0000}{0000}{0000}{0000};
+ \__fp_fixed_mul_sub_back:wwwn {0000}{0007}{0258}{0681}{9408}{4706}\__fp_sep:
+ #3\__fp_sep:
+ {0000}{2343}{7175}{1399}{6151}{7670}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep:
+ {0019}{2638}{4588}{9232}{8861}{3691}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep:
+ {0536}{6357}{0691}{4344}{6852}{4252}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn #3\__fp_sep:
+ {5263}{1578}{9473}{6842}{1052}{6315}\__fp_sep:
+ \__fp_fixed_mul_sub_back:wwwn#3\__fp_sep:
+ {10000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
{
\reverse_if:N \if_int_odd:w
\__fp_int_eval:w (#2 - 1) / 2 \__fp_int_eval_end:
@@ -20611,7 +20860,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new:Npe \__fp_atan_default:w #1#2#3 @ { #1 #2 #3 \c_one_fp @ }
\cs_new:Npn \__fp_atanii_o:Nww
- #1 \s__fp \__fp_chk:w #2#3#4; \s__fp \__fp_chk:w #5 #6 @
+ #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: \s__fp \__fp_chk:w #5 #6 @
{
\if_meaning:w 3 #2 \__fp_case_return_i_o:ww \fi:
\if_meaning:w 3 #5 \__fp_case_return_ii_o:ww \fi:
@@ -20627,29 +20876,29 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or: \__fp_case_return:nw { \__fp_atan_inf_o:NNNw #1 #3 0 }
\fi:
\__fp_atan_normal_o:NNnwNnw #1
- \s__fp \__fp_chk:w #2#3#4;
+ \s__fp \__fp_chk:w #2#3#4\__fp_sep:
\s__fp \__fp_chk:w #5 #6
}
-\cs_new:Npn \__fp_acotii_o:Nww #1#2; #3;
- { \__fp_atanii_o:Nww #1#3; #2; }
-\cs_new:Npn \__fp_atan_inf_o:NNNw #1#2#3 \s__fp \__fp_chk:w #4#5#6;
+\cs_new:Npn \__fp_acotii_o:Nww #1#2\__fp_sep: #3\__fp_sep:
+ { \__fp_atanii_o:Nww #1#3\__fp_sep: #2\__fp_sep: }
+\cs_new:Npn \__fp_atan_inf_o:NNNw #1#2#3 \s__fp \__fp_chk:w #4#5#6\__fp_sep:
{
\exp_after:wN \__fp_atan_combine_o:NwwwwwN
\exp_after:wN #2
\int_value:w \__fp_int_eval:w
- \if_meaning:w 2 #5 7 - \fi: #3 \exp_after:wN ;
+ \if_meaning:w 2 #5 7 - \fi: #3 \exp_after:wN \__fp_sep:
\c__fp_one_fixed_tl
- {0000}{0000}{0000}{0000}{0000}{0000};
- 0,{0000}{0000}{0000}{0000}{0000}{0000}; #1
+ {0000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
+ 0,{0000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: #1
}
\cs_new_protected:Npn \__fp_atan_normal_o:NNnwNnw
- #1 \s__fp \__fp_chk:w 1#2#3#4; \s__fp \__fp_chk:w 1#5#6#7;
+ #1 \s__fp \__fp_chk:w 1#2#3#4\__fp_sep: \s__fp \__fp_chk:w 1#5#6#7\__fp_sep:
{
\__fp_atan_test_o:NwwNwwN
- #2 #3, #4{0000}{0000};
- #5 #6, #7{0000}{0000}; #1
+ #2 #3, #4{0000}{0000}\__fp_sep:
+ #5 #6, #7{0000}{0000}\__fp_sep: #1
}
-\cs_new:Npn \__fp_atan_test_o:NwwNwwN #1#2,#3; #4#5,#6;
+\cs_new:Npn \__fp_atan_test_o:NwwNwwN #1#2,#3\__fp_sep: #4#5,#6\__fp_sep:
{
\exp_after:wN \__fp_atan_combine_o:NwwwwwN
\exp_after:wN #1
@@ -20658,13 +20907,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
7 - \__fp_int_eval:w
\fi:
\if_int_compare:w
- \__fp_ep_compare:wwww #2,#3; #5,#6; > \c_zero_int
+ \__fp_ep_compare:wwww #2,#3\__fp_sep: #5,#6\__fp_sep: > \c_zero_int
3 -
\exp_after:wN \__fp_reverse_args:Nww
\fi:
- \__fp_atan_div:wnwwnw #2,#3; #5,#6;
+ \__fp_atan_div:wnwwnw #2,#3\__fp_sep: #5,#6\__fp_sep:
}
-\cs_new:Npn \__fp_atan_div:wnwwnw #1,#2#3; #4,#5#6;
+\cs_new:Npn \__fp_atan_div:wnwwnw #1,#2#3\__fp_sep: #4,#5#6\__fp_sep:
{
\if_int_compare:w
\__fp_int_eval:w 41421 * #5 < #2 000
@@ -20674,49 +20923,50 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_atan_near:wwwn
\fi:
0
- \__fp_ep_div:wwwwn #1,{#2}#3; #4,{#5}#6;
+ \__fp_ep_div:wwwwn #1,{#2}#3\__fp_sep: #4,{#5}#6\__fp_sep:
\__fp_atan_auxi:ww
}
\cs_new:Npn \__fp_atan_near:wwwn
- 0 \__fp_ep_div:wwwwn #1,#2; #3,
+ 0 \__fp_ep_div:wwwwn #1,#2\__fp_sep: #3,
{
1
- \__fp_ep_to_fixed:wwn #1 - #3, #2;
+ \__fp_ep_to_fixed:wwn #1 - #3, #2\__fp_sep:
\__fp_atan_near_aux:wwn
}
-\cs_new:Npn \__fp_atan_near_aux:wwn #1; #2;
+\cs_new:Npn \__fp_atan_near_aux:wwn #1\__fp_sep: #2\__fp_sep:
{
- \__fp_fixed_add:wwn #1; #2;
- { \__fp_fixed_sub:wwn #2; #1; { \__fp_ep_div:wwwwn 0, } 0, }
+ \__fp_fixed_add:wwn #1\__fp_sep: #2\__fp_sep:
+ { \__fp_fixed_sub:wwn #2\__fp_sep: #1\__fp_sep: { \__fp_ep_div:wwwwn 0, } 0, }
}
-\cs_new:Npn \__fp_atan_auxi:ww #1,#2;
- { \__fp_ep_to_fixed:wwn #1,#2; \__fp_atan_auxii:w #1,#2; }
-\cs_new:Npn \__fp_atan_auxii:w #1;
+\cs_new:Npn \__fp_atan_auxi:ww #1,#2\__fp_sep:
+ { \__fp_ep_to_fixed:wwn #1,#2\__fp_sep: \__fp_atan_auxii:w #1,#2\__fp_sep: }
+\cs_new:Npn \__fp_atan_auxii:w #1\__fp_sep:
{
- \__fp_fixed_mul:wwn #1; #1;
+ \__fp_fixed_mul:wwn #1\__fp_sep: #1\__fp_sep:
{
- \__fp_atan_Taylor_loop:www 39 ;
- {0000}{0000}{0000}{0000}{0000}{0000} ;
+ \__fp_atan_Taylor_loop:www 39 \__fp_sep:
+ {0000}{0000}{0000}{0000}{0000}{0000} \__fp_sep:
}
- ! #1;
+ ! #1\__fp_sep:
}
-\cs_new:Npn \__fp_atan_Taylor_loop:www #1; #2; #3;
+\cs_new:Npn \__fp_atan_Taylor_loop:www #1\__fp_sep: #2\__fp_sep: #3\__fp_sep:
{
\if_int_compare:w #1 = - \c_one_int
\__fp_atan_Taylor_break:w
\fi:
- \exp_after:wN \__fp_fixed_div_int:wwN \c__fp_one_fixed_tl #1;
- \__fp_rrot:www \__fp_fixed_mul_sub_back:wwwn #2; #3;
+ \exp_after:wN \__fp_fixed_div_int:wwN \c__fp_one_fixed_tl #1\__fp_sep:
+ \__fp_rrot:www \__fp_fixed_mul_sub_back:wwwn #2\__fp_sep: #3\__fp_sep:
{
\exp_after:wN \__fp_atan_Taylor_loop:www
- \int_value:w \__fp_int_eval:w #1 - 2 ;
+ \int_value:w \__fp_int_eval:w #1 - 2 \__fp_sep:
}
- #3;
+ #3\__fp_sep:
}
\cs_new:Npn \__fp_atan_Taylor_break:w
- \fi: #1 \__fp_fixed_mul_sub_back:wwwn #2; #3 !
- { \fi: ; #2 ; }
-\cs_new:Npn \__fp_atan_combine_o:NwwwwwN #1 #2; #3; #4; #5,#6; #7
+ \fi: #1 \__fp_fixed_mul_sub_back:wwwn #2\__fp_sep: #3 !
+ { \fi: \__fp_sep: #2 \__fp_sep: }
+\cs_new:Npn \__fp_atan_combine_o:NwwwwwN
+ #1 #2\__fp_sep: #3\__fp_sep: #4\__fp_sep: #5,#6\__fp_sep: #7
{
\exp_after:wN \__fp_sanitize:Nw
\exp_after:wN #1
@@ -20726,22 +20976,22 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\exp_after:wN \use_ii:nn
\fi:
- { #5 \__fp_fixed_mul:wwn #3; #6; }
+ { #5 \__fp_fixed_mul:wwn #3\__fp_sep: #6\__fp_sep: }
{
- \__fp_fixed_mul:wwn #3; #4;
+ \__fp_fixed_mul:wwn #3\__fp_sep: #4\__fp_sep:
{
\exp_after:wN \__fp_atan_combine_aux:ww
- \int_value:w \__fp_int_eval:w #2 / 2 ; #2;
+ \int_value:w \__fp_int_eval:w #2 / 2 \__fp_sep: #2\__fp_sep:
}
}
{ #7 \__fp_fixed_to_float_o:wN \__fp_fixed_to_float_rad_o:wN }
#1
}
-\cs_new:Npn \__fp_atan_combine_aux:ww #1; #2;
+\cs_new:Npn \__fp_atan_combine_aux:ww #1\__fp_sep: #2\__fp_sep:
{
\__fp_fixed_mul_short:wwn
- {7853}{9816}{3397}{4483}{0961}{5661};
- {#1}{0000}{0000};
+ {7853}{9816}{3397}{4483}{0961}{5661}\__fp_sep:
+ {#1}{0000}{0000}\__fp_sep:
{
\if_int_odd:w #2 \exp_stop_f:
\exp_after:wN \__fp_fixed_sub:wwn
@@ -20750,7 +21000,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
}
}
-\cs_new:Npn \__fp_asin_o:w #1 \s__fp \__fp_chk:w #2#3; @
+\cs_new:Npn \__fp_asin_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_return_same_o:w
@@ -20763,9 +21013,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3;
+ \s__fp \__fp_chk:w #2 #3\__fp_sep:
}
-\cs_new:Npn \__fp_acos_o:w #1 \s__fp \__fp_chk:w #2#3; @
+\cs_new:Npn \__fp_acos_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_use:nw { \__fp_atan_inf_o:NNNw #1 0 4 }
@@ -20781,10 +21031,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else:
\__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3;
+ \s__fp \__fp_chk:w #2 #3\__fp_sep:
}
\cs_new:Npn \__fp_asin_normal_o:NfwNnnnnw
- #1#2#3 \s__fp \__fp_chk:w 1#4#5#6#7#8#9;
+ #1#2#3 \s__fp \__fp_chk:w 1#4#5#6#7#8#9\__fp_sep:
{
\if_int_compare:w #5 < \c_one_int
\exp_after:wN \__fp_use_none_until_s:w
@@ -20794,30 +21044,30 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\__fp_use_i:ww
\__fp_invalid_operation_o:fw {#2}
- \s__fp \__fp_chk:w 1#4{#5}{#6}{#7}{#8}{#9};
+ \s__fp \__fp_chk:w 1#4{#5}{#6}{#7}{#8}{#9}\__fp_sep:
\__fp_asin_auxi_o:NnNww
- #1 {#3} #4 #5,{#6}{#7}{#8}{#9}{0000}{0000};
+ #1 {#3} #4 #5,{#6}{#7}{#8}{#9}{0000}{0000}\__fp_sep:
}
-\cs_new:Npn \__fp_asin_auxi_o:NnNww #1#2#3#4,#5;
+\cs_new:Npn \__fp_asin_auxi_o:NnNww #1#2#3#4,#5\__fp_sep:
{
- \__fp_ep_to_fixed:wwn #4,#5;
+ \__fp_ep_to_fixed:wwn #4,#5\__fp_sep:
\__fp_asin_isqrt:wn
- \__fp_ep_mul:wwwwn #4,#5;
+ \__fp_ep_mul:wwwwn #4,#5\__fp_sep:
\__fp_ep_to_ep:wwN
\__fp_fixed_continue:wn
{ #2 \__fp_atan_test_o:NwwNwwN #3 }
- 0 1,{1000}{0000}{0000}{0000}{0000}{0000}; #1
+ 0 1,{1000}{0000}{0000}{0000}{0000}{0000}\__fp_sep: #1
}
-\cs_new:Npn \__fp_asin_isqrt:wn #1;
+\cs_new:Npn \__fp_asin_isqrt:wn #1\__fp_sep:
{
- \exp_after:wN \__fp_fixed_sub:wwn \c__fp_one_fixed_tl #1;
+ \exp_after:wN \__fp_fixed_sub:wwn \c__fp_one_fixed_tl #1\__fp_sep:
{
- \__fp_fixed_add_one:wN #1;
+ \__fp_fixed_add_one:wN #1\__fp_sep:
\__fp_fixed_continue:wn { \__fp_ep_mul:wwwwn 0, } 0,
}
\__fp_ep_isqrt:wwn
}
-\cs_new:Npn \__fp_acsc_o:w #1 \s__fp \__fp_chk:w #2#3#4; @
+\cs_new:Npn \__fp_acsc_o:w #1 \s__fp \__fp_chk:w #2#3#4\__fp_sep: @
{
\if_case:w \if_meaning:w 2 #2 #3 \fi: #2 \exp_stop_f:
\__fp_case_use:nw
@@ -20828,9 +21078,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or: \__fp_case_return_same_o:w
\else: \__fp_case_return_o:Nw \c_minus_zero_fp
\fi:
- \s__fp \__fp_chk:w #2 #3 #4;
+ \s__fp \__fp_chk:w #2 #3 #4\__fp_sep:
}
-\cs_new:Npn \__fp_asec_o:w #1 \s__fp \__fp_chk:w #2#3; @
+\cs_new:Npn \__fp_asec_o:w #1 \s__fp \__fp_chk:w #2#3\__fp_sep: @
{
\if_case:w #2 \exp_stop_f:
\__fp_case_use:nw
@@ -20844,24 +21094,24 @@ Type H <return> for immediate help}\def~{\errmessage{%
\or: \__fp_case_use:nw { \__fp_atan_inf_o:NNNw #1 0 4 }
\else: \__fp_case_return_same_o:w
\fi:
- \s__fp \__fp_chk:w #2 #3;
+ \s__fp \__fp_chk:w #2 #3\__fp_sep:
}
-\cs_new:Npn \__fp_acsc_normal_o:NfwNnw #1#2#3 \s__fp \__fp_chk:w 1#4#5#6;
+\cs_new:Npn \__fp_acsc_normal_o:NfwNnw #1#2#3 \s__fp \__fp_chk:w 1#4#5#6\__fp_sep:
{
\int_compare:nNnTF {#5} < 1
{
\__fp_invalid_operation_o:fw {#2}
- \s__fp \__fp_chk:w 1#4{#5}#6;
+ \s__fp \__fp_chk:w 1#4{#5}#6\__fp_sep:
}
{
\__fp_ep_div:wwwwn
- 1,{1000}{0000}{0000}{0000}{0000}{0000};
- #5,#6{0000}{0000};
+ 1,{1000}{0000}{0000}{0000}{0000}{0000}\__fp_sep:
+ #5,#6{0000}{0000}\__fp_sep:
{ \__fp_asin_auxi_o:NnNww #1 {#3} #4 }
}
}
%% File: l3fp-convert.dtx
-\cs_new:Npn \__fp_tuple_convert:Nw #1 \s__fp_tuple \__fp_tuple_chk:w #2 ;
+\cs_new:Npn \__fp_tuple_convert:Nw #1 \s__fp_tuple \__fp_tuple_chk:w #2 \__fp_sep:
{
\int_case:nnF { \__fp_array_count:n {#2} }
{
@@ -20870,26 +21120,29 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
{
\__fp_tuple_convert_loop:nNw { } #1
- #2 { ? \__fp_tuple_convert_end:w } ;
+ #2 { ? \__fp_tuple_convert_end:w } \__fp_sep:
@ { \use_none:nn }
}
}
-\cs_new:Npn \__fp_tuple_convert_loop:nNw #1#2#3#4; #5 @ #6
+\cs_new:Npn \__fp_tuple_convert_loop:nNw #1#2#3#4\__fp_sep: #5 @ #6
{
\use_none:n #3
- \exp_args:Nf \__fp_tuple_convert_loop:nNw { #2 #3#4 ; } #2 #5
+ \exp_args:Nf \__fp_tuple_convert_loop:nNw { #2 #3#4 \__fp_sep: } #2 #5
@ { #6 , ~ #1 }
}
\cs_new:Npn \__fp_tuple_convert_end:w #1 @ #2
{ \exp_after:wN ( \exp:w \exp_end_continue_f:w #2 ) }
-\cs_new:Npn \__fp_trim_zeros:w #1 ;
+\cs_new:Npn \__fp_trim_zeros:w #1 \__fp_sep:
{
- \__fp_trim_zeros_loop:w #1
- ; \__fp_trim_zeros_loop:w 0; \__fp_trim_zeros_dot:w .; \s__fp_stop
+ \__fp_trim_zeros_loop:w #1 \__fp_sep:
+ \__fp_trim_zeros_loop:w 0\__fp_sep:
+ \__fp_trim_zeros_dot:w .\__fp_sep:
+ \s__fp_stop
}
-\cs_new:Npn \__fp_trim_zeros_loop:w #1 0; #2 { #2 #1 ; #2 }
-\cs_new:Npn \__fp_trim_zeros_dot:w #1 .; { \__fp_trim_zeros_end:w #1 ; }
-\cs_new:Npn \__fp_trim_zeros_end:w #1 ; #2 \s__fp_stop { #1 }
+\cs_new:Npn \__fp_trim_zeros_loop:w #1 0\__fp_sep: #2 { #2 #1 \__fp_sep: #2 }
+\cs_new:Npn \__fp_trim_zeros_dot:w #1 .\__fp_sep:
+ { \__fp_trim_zeros_end:w #1 \__fp_sep: }
+\cs_new:Npn \__fp_trim_zeros_end:w #1 \__fp_sep: #2 \s__fp_stop { #1 }
\cs_new:Npn \fp_to_scientific:N #1
{ \exp_after:wN \__fp_to_scientific_dispatch:w #1 }
\cs_generate_variant:Nn \fp_to_scientific:N { c }
@@ -20904,9 +21157,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
#1 \__fp_to_scientific:w \__fp_to_scientific_recover:w
#1
}
-\cs_new:Npn \__fp_to_scientific_recover:w #1 #2 ;
+\cs_new:Npn \__fp_to_scientific_recover:w #1 #2 \__fp_sep:
{
- \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 ; } } { } { }
+ \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 \__fp_sep: } } { } { }
nan
}
\cs_new:Npn \__fp_tuple_to_scientific:w
@@ -20935,14 +21188,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\s__fp \__fp_chk:w #1 #2
}
\cs_new:Npn \__fp_to_scientific_normal:wnnnnn
- \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 ;
+ \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 \__fp_sep:
{
\exp_after:wN \__fp_to_scientific_normal:wNw
\exp_after:wN e
\int_value:w \__fp_int_eval:w #2 - 1
- ; #3 #4 #5 #6 ;
+ \__fp_sep: #3 #4 #5 #6 \__fp_sep:
}
-\cs_new:Npn \__fp_to_scientific_normal:wNw #1 ; #2#3;
+\cs_new:Npn \__fp_to_scientific_normal:wNw #1 \__fp_sep: #2#3\__fp_sep:
{ #2.#3 #1 }
\cs_new:Npn \fp_to_decimal:N #1
{ \exp_after:wN \__fp_to_decimal_dispatch:w #1 }
@@ -20958,9 +21211,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
#1 \__fp_to_decimal:w \__fp_to_decimal_recover:w
#1
}
-\cs_new:Npn \__fp_to_decimal_recover:w #1 #2 ;
+\cs_new:Npn \__fp_to_decimal_recover:w #1 #2 \__fp_sep:
{
- \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 ; } } { } { }
+ \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 \__fp_sep: } } { } { }
nan
}
\cs_new:Npn \__fp_tuple_to_decimal:w
@@ -20989,7 +21242,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\s__fp \__fp_chk:w #1 #2
}
\cs_new:Npn \__fp_to_decimal_normal:wnnnnn
- \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 ;
+ \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 \__fp_sep:
{
\int_compare:nNnTF {#2} > 0
{
@@ -21001,7 +21254,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\exp_after:wN \exp_after:wN
\exp_after:wN \__fp_to_decimal_huge:wnnnn
- \prg_replicate:nn { #2 - \c__fp_prec_int } { 0 } ;
+ \prg_replicate:nn { #2 - \c__fp_prec_int } { 0 } \__fp_sep:
}
{#3} {#4} {#5} {#6}
}
@@ -21010,19 +21263,19 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN 0
\exp_after:wN .
\exp:w \exp_end_continue_f:w \prg_replicate:nn { - #2 } { 0 }
- #3#4#5#6 ;
+ #3#4#5#6 \__fp_sep:
}
}
-\cs_new:Npn \__fp_to_decimal_large:Nnnw #1#2#3#4;
+\cs_new:Npn \__fp_to_decimal_large:Nnnw #1#2#3#4\__fp_sep:
{
\exp_after:wN \__fp_trim_zeros:w \int_value:w
\if_int_compare:w #2 > \c_zero_int
#2
\fi:
\exp_stop_f:
- #3.#4 ;
+ #3.#4 \__fp_sep:
}
-\cs_new:Npn \__fp_to_decimal_huge:wnnnn #1; #2#3#4#5 { #2#3#4#5 #1 }
+\cs_new:Npn \__fp_to_decimal_huge:wnnnn #1\__fp_sep: #2#3#4#5 { #2#3#4#5 #1 }
\cs_new:Npn \fp_to_tl:N #1 { \exp_after:wN \__fp_to_tl_dispatch:w #1 }
\cs_generate_variant:Nn \fp_to_tl:N { c }
\cs_new:Npn \fp_to_tl:n
@@ -21032,9 +21285,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new:Npn \__fp_to_tl_dispatch:w #1
{ \__fp_change_func_type:NNN #1 \__fp_to_tl:w \__fp_to_tl_recover:w #1 }
-\cs_new:Npn \__fp_to_tl_recover:w #1 #2 ;
+\cs_new:Npn \__fp_to_tl_recover:w #1 #2 \__fp_sep:
{
- \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 ; } } { } { }
+ \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 \__fp_sep: } } { } { }
nan
}
\cs_new:Npn \__fp_tuple_to_tl:w
@@ -21058,15 +21311,15 @@ Type H <return> for immediate help}\def~{\errmessage{%
\s__fp \__fp_chk:w 1 0 {#1}
}
\cs_new:Npn \__fp_to_tl_scientific:wnnnnn
- \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 ;
+ \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 \__fp_sep:
{
\exp_after:wN \__fp_to_tl_scientific:wNw
\exp_after:wN e
\int_value:w \__fp_int_eval:w #2 - 1
- ; #3 #4 #5 #6 ;
+ \__fp_sep: #3 #4 #5 #6 \__fp_sep:
}
-\cs_new:Npn \__fp_to_tl_scientific:wNw #1 ; #2#3;
- { \__fp_trim_zeros:w #2.#3 ; #1 }
+\cs_new:Npn \__fp_to_tl_scientific:wNw #1 \__fp_sep: #2#3\__fp_sep:
+ { \__fp_trim_zeros:w #2.#3 \__fp_sep: #1 }
\cs_new:Npn \fp_to_dim:N #1
{ \exp_after:wN \__fp_to_dim_dispatch:w #1 }
\cs_generate_variant:Nn \fp_to_dim:N { c }
@@ -21075,14 +21328,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_to_dim_dispatch:w
\exp:w \exp_end_continue_f:w \__fp_parse:n
}
-\cs_new:Npn \__fp_to_dim_dispatch:w #1#2 ;
+\cs_new:Npn \__fp_to_dim_dispatch:w #1#2 \__fp_sep:
{
\__fp_change_func_type:NNN #1 \__fp_to_dim:w \__fp_to_dim_recover:w
- #1 #2 ;
+ #1 #2 \__fp_sep:
}
\cs_new:Npn \__fp_to_dim_recover:w #1
{ \__fp_invalid_operation:nnw { 0pt } { fp_to_dim } }
-\cs_new:Npn \__fp_to_dim:w #1 ; { \__fp_to_decimal:w #1 ; pt }
+\cs_new:Npn \__fp_to_dim:w #1 \__fp_sep: { \__fp_to_decimal:w #1 \__fp_sep: pt }
\cs_new:Npn \fp_to_int:N #1 { \exp_after:wN \__fp_to_int_dispatch:w #1 }
\cs_generate_variant:Nn \fp_to_int:N { c }
\cs_new:Npn \fp_to_int:n
@@ -21090,24 +21343,24 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_to_int_dispatch:w
\exp:w \exp_end_continue_f:w \__fp_parse:n
}
-\cs_new:Npn \__fp_to_int_dispatch:w #1#2 ;
+\cs_new:Npn \__fp_to_int_dispatch:w #1#2 \__fp_sep:
{
\__fp_change_func_type:NNN #1 \__fp_to_int:w \__fp_to_int_recover:w
- #1 #2 ;
+ #1 #2 \__fp_sep:
}
\cs_new:Npn \__fp_to_int_recover:w #1
{ \__fp_invalid_operation:nnw { 0 } { fp_to_int } }
-\cs_new:Npn \__fp_to_int:w #1;
+\cs_new:Npn \__fp_to_int:w #1\__fp_sep:
{
\exp_after:wN \__fp_to_decimal:w \exp:w \exp_end_continue_f:w
- \__fp_round:Nwn \__fp_round_to_nearest:NNN #1; { 0 }
+ \__fp_round:Nwn \__fp_round_to_nearest:NNN #1\__fp_sep: { 0 }
}
\cs_new:Npn \dim_to_fp:n #1
{
\exp_after:wN \__fp_from_dim_test:ww
\exp_after:wN 0
\exp_after:wN ,
- \int_value:w \tex_glueexpr:D #1 ;
+ \int_value:w \tex_glueexpr:D #1 \__fp_sep:
}
\cs_new:Npn \__fp_from_dim_test:ww #1, #2
{
@@ -21123,18 +21376,18 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\fi:
}
-\cs_new:Npn \__fp_from_dim:wNw #1,#2#3;
+\cs_new:Npn \__fp_from_dim:wNw #1,#2#3\__fp_sep:
{
- \__fp_pack_twice_four:wNNNNNNNN \__fp_from_dim:wNNnnnnnn ;
- #3 000 0000 00 {10}987654321; #2 {#1}
+ \__fp_pack_twice_four:wNNNNNNNN \__fp_from_dim:wNNnnnnnn \__fp_sep:
+ #3 000 0000 00 {10}987654321\__fp_sep: #2 {#1}
}
-\cs_new:Npn \__fp_from_dim:wNNnnnnnn #1; #2#3#4#5#6#7#8#9
- { \__fp_from_dim:wnnnnwNn #1 {#2#300} {0000} ; }
-\cs_new:Npn \__fp_from_dim:wnnnnwNn #1; #2#3#4#5#6; #7#8
+\cs_new:Npn \__fp_from_dim:wNNnnnnnn #1\__fp_sep: #2#3#4#5#6#7#8#9
+ { \__fp_from_dim:wnnnnwNn #1 {#2#300} {0000} \__fp_sep: }
+\cs_new:Npn \__fp_from_dim:wnnnnwNn #1\__fp_sep: #2#3#4#5#6\__fp_sep: #7#8
{
\__fp_mul_npos_o:Nww #7
- \s__fp \__fp_chk:w 1 #7 {#5} #1 ;
- \s__fp \__fp_chk:w 1 0 {#8} {1525} {8789} {0625} {0000} ;
+ \s__fp \__fp_chk:w 1 #7 {#5} #1 \__fp_sep:
+ \s__fp \__fp_chk:w 1 0 {#8} {1525} {8789} {0625} {0000} \__fp_sep:
\prg_do_nothing:
}
\cs_new_eq:NN \fp_use:N \fp_to_decimal:N
@@ -21154,16 +21407,16 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\exp_last_unbraced:Ne \use_ii:nn
{
- \__fp_array_to_clist_loop:Nw #1 { ? \prg_break: } ;
+ \__fp_array_to_clist_loop:Nw #1 { ? \prg_break: } \__fp_sep:
\prg_break_point:
}
}
}
-\cs_new:Npn \__fp_array_to_clist_loop:Nw #1#2;
+\cs_new:Npn \__fp_array_to_clist_loop:Nw #1#2\__fp_sep:
{
\use_none:n #1
, ~
- \exp_not:f { \__fp_to_tl_dispatch:w #1 #2 ; }
+ \exp_not:f { \__fp_to_tl_dispatch:w #1 #2 \__fp_sep: }
\__fp_array_to_clist_loop:Nw
}
%% File: l3fp-random.dtx
@@ -21178,7 +21431,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
+ \tex_uniformdeviate:D #1 + 8192 ) / 16384
}
\cs_new:Npn \__fp_rand_myriads:n #1
- { \__fp_rand_myriads_loop:w #1 \prg_break: X \prg_break_point: ; }
+ { \__fp_rand_myriads_loop:w #1 \prg_break: X \prg_break_point: \__fp_sep: }
\cs_new:Npn \__fp_rand_myriads_loop:w #1 X
{
#1
@@ -21187,14 +21440,14 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__kernel_randint:n { 10000 }
\__fp_rand_myriads_loop:w
}
-\cs_new:Npn \__fp_rand_myriads_get:w 1 #1 ; { ; {#1} }
+\cs_new:Npn \__fp_rand_myriads_get:w 1 #1 \__fp_sep: { \__fp_sep: {#1} }
\cs_new:Npn \__fp_rand_o:Nw ? #1 @
{
\tl_if_empty:nTF {#1}
{
\exp_after:wN \__fp_rand_o:w
\exp:w \exp_end_continue_f:w
- \__fp_rand_myriads:n { XXXX } { 0000 } { 0000 } ; 0
+ \__fp_rand_myriads:n { XXXX } { 0000 } { 0000 } \__fp_sep: 0
}
{
\msg_expandable_error:nnnnn
@@ -21202,7 +21455,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \c_nan_fp
}
}
-\cs_new:Npn \__fp_rand_o:w ;
+\cs_new:Npn \__fp_rand_o:w \__fp_sep:
{
\exp_after:wN \__fp_sanitize:Nw
\exp_after:wN 0
@@ -21216,41 +21469,41 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__fp_randint_default:w \__fp_randint_o:w }
}
\cs_new:Npn \__fp_randint_default:w #1 { \exp_after:wN #1 \c_one_fp }
-\cs_new:Npn \__fp_randint_badarg:w \s__fp \__fp_chk:w #1#2#3;
+\cs_new:Npn \__fp_randint_badarg:w \s__fp \__fp_chk:w #1#2#3\__fp_sep:
{
- \__fp_int:wTF \s__fp \__fp_chk:w #1#2#3;
+ \__fp_int:wTF \s__fp \__fp_chk:w #1#2#3\__fp_sep:
{
\if_meaning:w 1 #1
\if_int_compare:w
- \__fp_use_i_until_s:nw #3 ; > \c__fp_prec_int
+ \__fp_use_i_until_s:nw #3 \__fp_sep: > \c__fp_prec_int
\c_one_int
\fi:
\fi:
}
{ \c_one_int }
}
-\cs_new:Npn \__fp_randint_o:w #1; #2; @
+\cs_new:Npn \__fp_randint_o:w #1\__fp_sep: #2\__fp_sep: @
{
\if_case:w
- \__fp_randint_badarg:w #1;
- \__fp_randint_badarg:w #2;
- \if:w 1 \__fp_compare_back:ww #2; #1; \c_one_int \fi:
+ \__fp_randint_badarg:w #1\__fp_sep:
+ \__fp_randint_badarg:w #2\__fp_sep:
+ \if:w 1 \__fp_compare_back:ww #2\__fp_sep: #1\__fp_sep: \c_one_int \fi:
\c_zero_int
- \__fp_randint_auxi_o:ww #1; #2;
+ \__fp_randint_auxi_o:ww #1\__fp_sep: #2\__fp_sep:
\or:
\__fp_invalid_operation_tl_o:ff
- { randint } { \__fp_array_to_clist:n { #1; #2; } }
+ { randint } { \__fp_array_to_clist:n { #1\__fp_sep: #2\__fp_sep: } }
\exp:w
\fi:
\exp_after:wN \exp_end:
}
-\cs_new:Npn \__fp_randint_auxi_o:ww #1 ; #2 ; #3 \exp_end:
+\cs_new:Npn \__fp_randint_auxi_o:ww #1 \__fp_sep: #2 \__fp_sep: #3 \exp_end:
{
\fi:
- \__fp_randint_auxii:wn #2 ;
- { \__fp_randint_auxii:wn #1 ; \__fp_randint_auxiii_o:ww }
+ \__fp_randint_auxii:wn #2 \__fp_sep:
+ { \__fp_randint_auxii:wn #1 \__fp_sep: \__fp_randint_auxiii_o:ww }
}
-\cs_new:Npn \__fp_randint_auxii:wn \s__fp \__fp_chk:w #1#2#3#4 ;
+\cs_new:Npn \__fp_randint_auxii:wn \s__fp \__fp_chk:w #1#2#3#4 \__fp_sep:
{
\if_meaning:w 0 #1
\exp_after:wN \use_i:nn
@@ -21261,7 +21514,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\exp_after:wN \__fp_ep_to_fixed:wwn
\int_value:w \__fp_int_eval:w
- #3 - \c__fp_prec_int , #4 {0000} {0000} ;
+ #3 - \c__fp_prec_int , #4 {0000} {0000} \__fp_sep:
{
\if_meaning:w 0 #2
\exp_after:wN \use_i:nnnn
@@ -21272,22 +21525,22 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_fixed_continue:wn
}
}
-\cs_new:Npn \__fp_randint_auxiii_o:ww #1 ; #2 ;
+\cs_new:Npn \__fp_randint_auxiii_o:ww #1 \__fp_sep: #2 \__fp_sep:
{
- \__fp_fixed_add:wwn #2 ;
- {0000} {0000} {0000} {0001} {0000} {0000} ;
- \__fp_fixed_sub:wwn #1 ;
+ \__fp_fixed_add:wwn #2 \__fp_sep:
+ {0000} {0000} {0000} {0001} {0000} {0000} \__fp_sep:
+ \__fp_fixed_sub:wwn #1 \__fp_sep:
{
\exp_after:wN \use_i:nn
\exp_after:wN \__fp_fixed_mul_add:wwwn
- \exp:w \exp_end_continue_f:w \__fp_rand_myriads:n { XXXXXX } ;
+ \exp:w \exp_end_continue_f:w \__fp_rand_myriads:n { XXXXXX } \__fp_sep:
}
- #1 ;
+ #1 \__fp_sep:
\__fp_randint_auxiv_o:ww
- #2 ;
- \__fp_randint_auxv_o:w #1 ; @
+ #2 \__fp_sep:
+ \__fp_randint_auxv_o:w #1 \__fp_sep: @
}
-\cs_new:Npn \__fp_randint_auxiv_o:ww #1#2#3#4#5 ; #6#7#8#9
+\cs_new:Npn \__fp_randint_auxiv_o:ww #1#2#3#4#5 \__fp_sep: #6#7#8#9
{
\if_int_compare:w
\if_int_compare:w #1#2 > #6#7 \exp_stop_f: 1 \else:
@@ -21297,7 +21550,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\fi:
\__fp_randint_auxv_o:w {#1}{#2}{#3}{#4}#5
}
-\cs_new:Npn \__fp_randint_auxv_o:w #1#2#3#4#5 ; #6 @
+\cs_new:Npn \__fp_randint_auxv_o:w #1#2#3#4#5 \__fp_sep: #6 @
{
\exp_after:wN \__fp_sanitize:Nw
\int_value:w
@@ -21309,7 +21562,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_reverse_args:Nww
\fi:
\exp_after:wN \__fp_fixed_sub:wwn \c__fp_one_fixed_tl
- {#1} {#2} {#3} {#4} {0000} {0000} ;
+ {#1} {#2} {#3} {#4} {0000} {0000} \__fp_sep:
{
\exp_after:wN \exp_stop_f:
\int_value:w \__fp_int_eval:w \c__fp_prec_int
@@ -21323,16 +21576,16 @@ Type H <return> for immediate help}\def~{\errmessage{%
\int_eval:n
{
\exp_after:wN \__fp_randint:ww
- \int_value:w \int_eval:n {#1} \exp_after:wN ;
- \int_value:w \int_eval:n {#2} ;
+ \int_value:w \int_eval:n {#1} \exp_after:wN \__fp_sep:
+ \int_value:w \int_eval:n {#2} \__fp_sep:
}
}
-\cs_new:Npn \__fp_randint:ww #1; #2;
+\cs_new:Npn \__fp_randint:ww #1\__fp_sep: #2\__fp_sep:
{
\if_int_compare:w #1 > #2 \exp_stop_f:
\msg_expandable_error:nnnn
{ kernel } { randint-backward-range } {#1} {#2}
- \__fp_randint:ww #2; #1;
+ \__fp_randint:ww #2\__fp_sep: #1\__fp_sep:
\else:
\if_int_compare:w \__fp_int_eval:w #2
\if_int_compare:w #1 > \c_zero_int
@@ -21356,46 +21609,49 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_randint_wide_aux:w
\int_value:w
\exp_after:wN \__fp_randint_split_o:Nw
- \tex_uniformdeviate:D 268435456 ;
+ \tex_uniformdeviate:D 268435456 \__fp_sep:
\int_value:w
\exp_after:wN \__fp_randint_split_o:Nw
- \tex_uniformdeviate:D 268435456 ;
+ \tex_uniformdeviate:D 268435456 \__fp_sep:
\int_value:w
\exp_after:wN \__fp_randint_split_o:Nw
\int_value:w \__fp_int_eval:w 131072 +
\exp_after:wN \__fp_randint_split_o:Nw
\int_value:w
- \__kernel_int_add:nnn {#2} { -#1 } { -\c_max_int } ;
+ \__kernel_int_add:nnn {#2} { -#1 } { -\c_max_int } \__fp_sep:
.
}
-\cs_new:Npn \__fp_randint_split_o:Nw #1#2 ;
+\cs_new:Npn \__fp_randint_split_o:Nw #1#2 \__fp_sep:
{
\if_meaning:w 0 #1
- 0 \exp_after:wN ; \int_value:w 0
+ 0 \exp_after:wN \__fp_sep: \int_value:w 0
\else:
\exp_after:wN \__fp_randint_split_aux:w
- \int_value:w \__fp_int_eval:w (#1#2 - 8192) / 16384 ;
+ \int_value:w \__fp_int_eval:w (#1#2 - 8192) / 16384 \__fp_sep:
+ #1#2
\fi:
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
}
-\cs_new:Npn \__fp_randint_split_aux:w #1 ;
+\cs_new:Npn \__fp_randint_split_aux:w #1 \__fp_sep:
{
- #1 \exp_after:wN ;
+ #1 \exp_after:wN \__fp_sep:
\int_value:w \__fp_int_eval:w - #1 * 16384
}
-\cs_new:Npn \__fp_randint_wide_aux:w #1;#2; #3;#4; #5;#6;#7; .
+\cs_new:Npn \__fp_randint_wide_aux:w
+ #1\__fp_sep:#2\__fp_sep: #3\__fp_sep:#4\__fp_sep:
+ #5\__fp_sep:#6\__fp_sep:#7\__fp_sep: .
{
\exp_after:wN \__fp_randint_wide_auxii:w
\int_value:w \__fp_int_eval:w #5 * #3 + #6 * #1 +
(#5 * #4 + #6 * #3 + #7 * #1 +
(#5 * #2 + #7 * #3 +
(16384 * #6 + #7) * (16384 * #4 + #2) / 268435456) / 16384
- ) / 16384 \exp_after:wN ;
- \int_value:w \__fp_int_eval:w (#5 + #6) * 16384 + #7 ;
- #1 ; #5 ;
+ ) / 16384 \exp_after:wN \__fp_sep:
+ \int_value:w \__fp_int_eval:w (#5 + #6) * 16384 + #7 \__fp_sep:
+ #1 \__fp_sep: #5 \__fp_sep:
}
-\cs_new:Npn \__fp_randint_wide_auxii:w #1; #2; #3; #4;
+\cs_new:Npn \__fp_randint_wide_auxii:w
+ #1\__fp_sep: #2\__fp_sep: #3\__fp_sep: #4\__fp_sep:
{
\if_int_odd:w 0
\if_int_compare:w #1 = #2 \else: \exp_stop_f: \fi:
@@ -21422,7 +21678,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\if_int_compare:w #1 < \c_one_int
\msg_expandable_error:nnnn
{ kernel } { randint-backward-range } { 1 } {#1}
- \__fp_randint:ww #1; 1;
+ \__fp_randint:ww #1\__fp_sep: 1\__fp_sep:
\else:
\if_int_compare:w #1 > \c__kernel_randint_max_int
\__kernel_randint:nn { 1 } {#1}
@@ -21470,7 +21726,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_last_unbraced:Nf \__fp_types_binary_auxi:Nww
{ \__fp_types_cs_to_op:N #1 }
}
-\cs_new:Npn \__fp_types_binary_auxi:Nww #1#2#3; #4#5; @
+\cs_new:Npn \__fp_types_binary_auxi:Nww #1#2#3\__fp_sep: #4#5\__fp_sep: @
{
\exp_after:wN \__fp_types_binary_auxii:NNww
\cs:w
@@ -21480,7 +21736,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_type_from_scan:N #4
_o:ww
\cs_end:
- #1 #2#3; #4#5;
+ #1 #2#3\__fp_sep: #4#5\__fp_sep:
}
\cs_new:Npn \__fp_types_binary_auxii:NNww #1#2
{
@@ -21491,12 +21747,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
%% File l3fp-symbolic.dtx (C) Copyright 2012-2015,2017,2018,2020,2021,2023 The LaTeX Project
\fp_new:N \l__fp_symbolic_fp
\scan_new:N \s__fp_symbolic
-\cs_new_protected:Npn \__fp_symbolic_chk:w #1,#2#3;
+\cs_new_protected:Npn \__fp_symbolic_chk:w #1,#2#3\__fp_sep:
{
\msg_error:nne { fp } { misused-fp }
{
\__fp_to_tl_dispatch:w
- \s__fp_symbolic \__fp_symbolic_chk:w #1,{#2};
+ \s__fp_symbolic \__fp_symbolic_chk:w #1,{#2}\__fp_sep:
}
}
\cs_new:Npn \__fp_if_has_symbolic:nTF #1
@@ -21509,7 +21765,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__fp_if_has_symbolic_aux:w
#1 \s__fp_symbolic #2 \s__fp_mark #3#4 \s__fp_stop { #3 }
\cs_new:Npn \__fp_exp_after_symbolic_f:nw
- #1 \s__fp_symbolic \__fp_symbolic_chk:w #2, #3#4;
+ #1 \s__fp_symbolic \__fp_symbolic_chk:w #2, #3#4\__fp_sep:
{
\exp_after:wN \__fp_exp_after_symbolic_aux:w
\exp:w
@@ -21521,13 +21777,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_exp_after_array_f:w #3 \s__fp_expr_stop
\exp_after:wN
}
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
\exp:w \exp_end_continue_f:w #1
}
-\cs_new:Npn \__fp_exp_after_symbolic_aux:w #1, #2;
+\cs_new:Npn \__fp_exp_after_symbolic_aux:w #1, #2\__fp_sep:
{
\__fp_if_has_symbolic:nTF {#2}
- { \s__fp_symbolic \__fp_symbolic_chk:w #1, {#2} ; }
+ { \s__fp_symbolic \__fp_symbolic_chk:w #1, {#2} \__fp_sep: }
{ #1 #2 @ \prg_do_nothing: }
}
\cs_new:Npn \__fp_exp_after_symbolic_loop:N #1
@@ -21537,11 +21793,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp:w
\__fp_exp_after_symbolic_loop:N
}
-\cs_new:Npn \__fp_symbolic_binary_o:Nww #1 #2; #3;
+\cs_new:Npn \__fp_symbolic_binary_o:Nww #1 #2\__fp_sep: #3\__fp_sep:
{
\__fp_exp_after_symbolic_f:nw { \exp_after:wN \exp_stop_f: }
\s__fp_symbolic \__fp_symbolic_chk:w
- \__fp_types_binary:Nww #1 , { #2; #3; } ;
+ \__fp_types_binary:Nww #1 , { #2\__fp_sep: #3\__fp_sep: } \__fp_sep:
}
\cs_set_protected:Npn \__fp_tmp:w #1#2
{
@@ -21557,11 +21813,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\tl_map_inline:nn { + - * / ^ & | }
{ \exp_args:Nc \__fp_tmp:w { __fp_#1_o:ww } {#1} }
-\cs_new:Npn \__fp_symbolic_unary_o:NNw #1#2#3; @
+\cs_new:Npn \__fp_symbolic_unary_o:NNw #1#2#3\__fp_sep: @
{
\__fp_exp_after_symbolic_f:nw { \exp_after:wN \exp_stop_f: }
\s__fp_symbolic \__fp_symbolic_chk:w
- \__fp_types_unary:NNw #1#2 , { #3; } ;
+ \__fp_types_unary:NNw #1#2 , { #3\__fp_sep: } \__fp_sep:
}
\tl_map_inline:nn
{
@@ -21587,11 +21843,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_tmp:w { decimal } { 0 } \__fp_to_decimal_dispatch:w
\__fp_tmp:w { int } { 0 } \__fp_to_int_dispatch:w
\__fp_tmp:w { scientific } { nan } \__fp_to_scientific_dispatch:w
-\cs_new:Npn \__fp_symbolic_convert:wnnN #1#2; #3#4#5
+\cs_new:Npn \__fp_symbolic_convert:wnnN #1#2\__fp_sep: #3#4#5
{
\str_if_eq:nnTF {#1} { \s__fp_symbolic }
- { \__fp_invalid_operation:nnw {#3} {#4} #1#2; }
- { #5 #1#2; }
+ { \__fp_invalid_operation:nnw {#3} {#4} #1#2\__fp_sep: }
+ { #5 #1#2\__fp_sep: }
}
\cs_new:Npn \__fp_symbolic_cs_arg_to_fn:NN #1
{
@@ -21612,7 +21868,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
\cs_new:Npn \__fp_symbolic_to_tl:w
- \s__fp_symbolic \__fp_symbolic_chk:w #1#2, #3#4;
+ \s__fp_symbolic \__fp_symbolic_chk:w #1#2, #3#4\__fp_sep:
{
\str_case:nnTF {#1}
{
@@ -21631,13 +21887,13 @@ Type H <return> for immediate help}\def~{\errmessage{%
( \__fp_to_tl_dispatch:w #3 )
}
}
-\cs_new:Npn \__fp_symbolic_binary_to_tl:Nww #1, #2; #3; @
+\cs_new:Npn \__fp_symbolic_binary_to_tl:Nww #1, #2\__fp_sep: #3\__fp_sep: @
{
\use:e
{
- ( \__fp_to_tl_dispatch:w #2; )
+ ( \__fp_to_tl_dispatch:w #2\__fp_sep: )
\__fp_types_cs_to_op:N #1
- ( \__fp_to_tl_dispatch:w #3; )
+ ( \__fp_to_tl_dispatch:w #3\__fp_sep: )
}
}
\cs_new:Npn \__fp_symbolic_function_to_tl:Nw #1, #2@
@@ -21685,7 +21941,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\token_if_eq_meaning:NNTF #2 \prg_do_nothing:
{
\s__fp_symbolic \__fp_symbolic_chk:w
- \__fp_variable_o:w #1 , { } ;
+ \__fp_variable_o:w #1 , { } \__fp_sep:
}
{
\exp_after:wN \s__fp_symbolic
@@ -21695,7 +21951,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_exp_after_symbolic_loop:N #1
{ , \exp:w \use_none:nn }
\exp_after:wN \exp_end:
- \exp_after:wN { \exp_after:wN } \exp_after:wN ;
+ \exp_after:wN { \exp_after:wN } \exp_after:wN \__fp_sep:
#2
}
}
@@ -21706,7 +21962,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\__fp_exp_after_symbolic_f:nw { \__fp_parse_infix:NN }
\s__fp_symbolic \__fp_symbolic_chk:w
- \__fp_variable_o:w #2 , { } ;
+ \__fp_variable_o:w #2 , { } \__fp_sep:
}
\exp_args:NNc \__fp_variable_set_parsing_aux:NNn #1
{ __fp_parse_word_#2:N } {#2}
@@ -21871,7 +22127,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_exp_after_array_f:w #2 \s__fp_expr_stop
\exp_after:wN
}
- \exp_after:wN ;
+ \exp_after:wN \__fp_sep:
}
}
\int_new:N \l__fp_function_arg_int
@@ -21903,7 +22159,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_not:N \__fp_symbolic_chk:w
\exp_not:N \__fp_function_arg_o:w
\int_use:N \l__fp_function_arg_int
- ########1 , { } ;
+ ########1 , { } \__fp_sep:
}
}
\cs_set:Npn \__fp_function_arg_o:w ##1 @
@@ -21915,7 +22171,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__fp_exp_after_symbolic_loop:N ##1
{ , \tex_romannumeral:D \use_none:nn }
\exp_after:wN \c_zero_int
- \exp_after:wN { \exp_after:wN } \exp_after:wN ;
+ \exp_after:wN { \exp_after:wN } \exp_after:wN \__fp_sep:
}
\fp_set:Nn \l__fp_symbolic_fp {#4}
\use:e
@@ -21952,9 +22208,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
#2
}
\cs_new:Npn \__fp_function_arg_few:w #1 @ { \exp_after:wN \c_nan_fp }
-\cs_new:Npn \__fp_function_arg_get:w #1#2#3; #4 @
+\cs_new:Npn \__fp_function_arg_get:w #1#2#3\__fp_sep: #4 @
{
- \__fp_exp_after_array_f:w #3; \s__fp_expr_stop
+ \__fp_exp_after_array_f:w #3\__fp_sep: \s__fp_expr_stop
\exp_after:wN \exp_stop_f:
}
\cs_new_protected:Npn \fp_clear_function:n #1
@@ -22029,25 +22285,25 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__fp_array_gset:NNNNww
\exp_after:wN #1
\exp_after:wN #1
- \int_value:w \int_eval:n {#2} \exp_after:wN ;
+ \int_value:w \int_eval:n {#2} \exp_after:wN \__fp_sep:
\exp:w \exp_end_continue_f:w \__fp_parse:n {#3}
}
\cs_generate_variant:Nn \fparray_gset:Nnn { c }
-\cs_new_protected:Npn \__fp_array_gset:NNNNww #1#2#3#4#5 ; #6 ;
+\cs_new_protected:Npn \__fp_array_gset:NNNNww #1#2#3#4#5 \__fp_sep: #6 \__fp_sep:
{
\__fp_array_bounds:NNnTF \msg_error:nneee #4 {#5}
{
\exp_after:wN \__fp_change_func_type:NNN
- \__fp_use_i_until_s:nw #6 ;
+ \__fp_use_i_until_s:nw #6 \__fp_sep:
\__fp_array_gset:w
\__fp_array_gset_recover:Nw
- #6 ; {#5} #1 #2 #3
+ #6 \__fp_sep: {#5} #1 #2 #3
}
{ }
}
-\cs_new_protected:Npn \__fp_array_gset_recover:Nw #1#2 ;
+\cs_new_protected:Npn \__fp_array_gset_recover:Nw #1#2 \__fp_sep:
{
- \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 ; } } { } { }
+ \__fp_error:nffn { unknown-type } { \tl_to_str:n { #2 \__fp_sep: } } { } { }
\exp_after:wN #1 \c_nan_fp
}
\cs_new_protected:Npn \__fp_array_gset:w \s__fp \__fp_chk:w #1#2
@@ -22061,7 +22317,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\s__fp \__fp_chk:w #1 #2
}
\cs_new_protected:Npn \__fp_array_gset_normal:w
- \s__fp \__fp_chk:w 1 #1 #2 #3#4#5 ; #6#7#8#9
+ \s__fp \__fp_chk:w 1 #1 #2 #3#4#5 \__fp_sep: #6#7#8#9
{
\__kernel_intarray_gset:Nnn #7 {#6} {#2}
\__kernel_intarray_gset:Nnn #8 {#6}
@@ -22091,7 +22347,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\exp_after:wN \__fp_array_item:NwN
\exp_after:wN #1
- \int_value:w \int_eval:n {#2} ;
+ \int_value:w \int_eval:n {#2} \__fp_sep:
\__fp_to_decimal:w
}
\cs_generate_variant:Nn \fparray_item:Nn { c }
@@ -22099,11 +22355,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\exp_after:wN \__fp_array_item:NwN
\exp_after:wN #1
- \int_value:w \int_eval:n {#2} ;
+ \int_value:w \int_eval:n {#2} \__fp_sep:
\__fp_to_tl:w
}
\cs_generate_variant:Nn \fparray_item_to_tl:Nn { c }
-\cs_new:Npn \__fp_array_item:NwN #1#2 ; #3
+\cs_new:Npn \__fp_array_item:NwN #1#2 \__fp_sep: #3
{
\__fp_array_bounds:NNnTF \msg_expandable_error:nnfff #1 {#2}
{ \exp_after:wN \__fp_array_item:NNNnN #1 {#2} #3 }
@@ -22112,22 +22368,22 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__fp_array_item:NNNnN #1#2#3#4
{
\exp_after:wN \__fp_array_item:N
- \int_value:w \__kernel_intarray_item:Nn #2 {#4} \exp_after:wN ;
- \int_value:w \__kernel_intarray_item:Nn #3 {#4} \exp_after:wN ;
- \int_value:w \__kernel_intarray_item:Nn #1 {#4} ;
+ \int_value:w \__kernel_intarray_item:Nn #2 {#4} \exp_after:wN \__fp_sep:
+ \int_value:w \__kernel_intarray_item:Nn #3 {#4} \exp_after:wN \__fp_sep:
+ \int_value:w \__kernel_intarray_item:Nn #1 {#4} \__fp_sep:
}
\cs_new:Npn \__fp_array_item:N #1
{
\if_meaning:w 0 #1 \exp_after:wN \__fp_array_item_special:w \fi:
\__fp_array_item:w #1
}
-\cs_new:Npn \__fp_array_item:w #1 #2#3#4#5 #6 ; 1 #7 ;
+\cs_new:Npn \__fp_array_item:w #1 #2#3#4#5 #6 \__fp_sep: 1 #7 \__fp_sep:
{
\exp_after:wN \__fp_array_item_normal:w
\int_value:w \if_meaning:w #1 1 0 \else: 2 \fi: \exp_stop_f:
- #7 ; {#2#3#4#5} {#6} ;
+ #7 \__fp_sep: {#2#3#4#5} {#6} \__fp_sep:
}
-\cs_new:Npn \__fp_array_item_special:w #1 ; #2 ; #3 ; #4
+\cs_new:Npn \__fp_array_item_special:w #1 \__fp_sep: #2 \__fp_sep: #3 \__fp_sep: #4
{
\exp_after:wN #4
\exp:w \exp_end_continue_f:w
@@ -22139,8 +22395,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\else: \exp_after:wN \c_minus_inf_fp
\fi:
}
-\cs_new:Npn \__fp_array_item_normal:w #1 #2#3#4#5 #6 ; #7 ; #8 ; #9
- { #9 \s__fp \__fp_chk:w 1 #1 {#8} #7 {#2#3#4#5} {#6} ; }
+\cs_new:Npn \__fp_array_item_normal:w
+ #1 #2#3#4#5 #6 \__fp_sep: #7 \__fp_sep: #8 \__fp_sep: #9
+ { #9 \s__fp \__fp_chk:w 1 #1 {#8} #7 {#2#3#4#5} {#6} \__fp_sep: }
\prg_new_eq_conditional:NNn \fparray_if_exist:N \cs_if_exist:N
{ TF , T , F , p }
\prg_new_eq_conditional:NNn \fparray_if_exist:c \cs_if_exist:c
@@ -22288,6 +22545,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_generate_variant:Nn \bitset_to_arabic:N { c }
\cs_generate_variant:Nn \bitset_to_bin:N { c }
+\cs_new_eq:NN \bitset_use:N \tl_use:N
+\cs_generate_variant:Nn \bitset_use:N { c }
\cs_new:Npn \bitset_item:Nn #1#2
{
\prop_if_in:cnTF { g__bitset_ \cs_to_str:N #1 _name_prop } {#2}
@@ -22670,8 +22929,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\group_begin:
\int_set:Nn \tex_endlinechar:D { 32 }
\char_set_catcode_invalid:n { 0 }
- \bool_lazy_or:nnTF
- { \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: }
+ \sys_if_engine_opentype:TF
{ \int_step_function:nN { 31 } \char_set_catcode_invalid:n }
{ \int_step_function:nN { 31 } \char_set_catcode_active:n }
\int_step_function:nnN { 33 } { 64 } \char_set_catcode_other:n
@@ -22696,8 +22954,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\char_set_catcode_group_end:n { 125 } % right brace
\char_set_catcode_space:n { 126 } % tilde
\char_set_catcode_invalid:n { 127 } % ^^?
- \bool_lazy_or:nnF
- { \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: }
+ \sys_if_engine_opentype:F
{ \int_step_function:nnN { 128 } { 255 } \char_set_catcode_active:n }
\__cctab_gset:n { \c_code_cctab }
\group_end:
@@ -24476,9 +24733,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_args:Ne \tl_to_str:n
{ \str_map_function:nN {#1} \__str_convert_pdfname:n }
}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\cs_new:Npn \__str_convert_pdfname:n #1
{
@@ -24885,27 +25140,30 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__tl_analysis_map:NwNw #1
}
\cs_new_protected:Npn \tl_analysis_show:N
- { \__tl_analysis_show:NNN \msg_show:nneeee \tl_show:N }
+ { \__tl_analysis_show:NNnnN \msg_show:nneeee \tl_show:N {} {} }
\cs_new_protected:Npn \tl_analysis_log:N
- { \__tl_analysis_show:NNN \msg_log:nneeee \tl_log:N }
-\cs_new_protected:Npn \__tl_analysis_show:NNN #1#2#3
{
- \tl_if_exist:NTF #3
+ \__tl_analysis_show:NNnnN \msg_log:nneeee \tl_log:N
+ { \iow_newline: >~ . } { . }
+ }
+\cs_new_protected:Npn \__tl_analysis_show:NNnnN #1#2#3#4#5
+ {
+ \tl_if_exist:NTF #5
{
- \exp_args:No \__tl_analysis:n {#3}
+ \exp_args:No \__tl_analysis:n {#5}
#1 { tl } { show-analysis }
- { \token_to_str:N #3 } { \__tl_analysis_show: } { } { }
+ { \token_to_str:N #5 } { \__tl_analysis_show: } {#3} {#4}
}
{ #2 #3 }
}
\cs_new_protected:Npn \tl_analysis_show:n
- { \__tl_analysis_show:Nn \msg_show:nneeee }
+ { \__tl_analysis_show:Nnnn \msg_show:nneeee {} {} }
\cs_new_protected:Npn \tl_analysis_log:n
- { \__tl_analysis_show:Nn \msg_log:nneeee }
-\cs_new_protected:Npn \__tl_analysis_show:Nn #1#2
+ { \__tl_analysis_show:Nnnn \msg_log:nneeee { \iow_newline: >~ . } { . } }
+\cs_new_protected:Npn \__tl_analysis_show:Nnnn #1#2#3#4
{
- \__tl_analysis:n {#2}
- #1 { tl } { show-analysis } { } { \__tl_analysis_show: } { } { }
+ \__tl_analysis:n {#4}
+ #1 { tl } { show-analysis } { } { \__tl_analysis_show: } {#2} {#3}
}
\cs_new:Npn \__tl_analysis_show:
{
@@ -25238,8 +25496,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
The~token~list~ \tl_if_empty:nF {#1} { #1 ~ }
\tl_if_empty:nTF {#2}
- { is~empty }
- { contains~the~tokens: #2 }
+ { is~empty #3 }
+ { contains~the~tokens: #2 #4 }
}
%% File: l3regex.dtx
\cs_new_eq:NN \__regex_int_eval:w \tex_numexpr:D
@@ -30570,11 +30828,19 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new_protected:Npn \color_select:nn #1#2
{
- \__color_select_main:Nw \l__color_current_tl
- #1 / / \s__color_mark #2 / / \s__color_stop
+ \__color_select_main:Nnn \l__color_current_tl {#1} {#2}
\__color_finalise_current:
\__color_select:N \l__color_current_tl
}
+\cs_new_protected:Npn \__color_select_main:Nnn #1#2#3
+ {
+ \use:e
+ {
+ \exp_not:N \__color_select_main:Nw \exp_not:N #1
+ \exp_not:n {#2} / / \exp_not:N \s__color_mark
+ #3 / / \exp_not:N \s__color_stop
+ }
+ }
\cs_new_protected:Npn \__color_select_main:Nw
#1 #2 / #3 / #4 \s__color_mark #5 / #6 / #7 \s__color_stop
{
@@ -30621,10 +30887,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_protected:Npn \color_math:nnn #1#2#3
{
\__color_math:nn {#3}
- {
- \__color_select_main:Nw \l__color_current_tl
- #1 / / \s__color_mark #2 / / \s__color_stop
- }
+ { \__color_select_main:Nnn \l__color_current_tl {#1} {#2} }
}
\cs_new_protected:Npn \__color_math:nn #1#2
{
@@ -30722,14 +30985,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new_protected:Npn \color_fill:nn #1#2
{
- \__color_select_main:Nw \l__color_current_tl
- #1 / / \s__color_mark #2 / / \s__color_stop
+ \__color_select_main:Nnn \l__color_current_tl {#1} {#2}
\exp_after:wN \__color_draw:nnn \l__color_current_tl { fill }
}
\cs_new_protected:Npn \color_stroke:nn #1#2
{
- \__color_select_main:Nw \l__color_current_tl
- #1 / / \s__color_mark #2 / / \s__color_stop
+ \__color_select_main:Nnn \l__color_current_tl {#1} {#2}
\exp_after:wN \__color_draw:nnn \l__color_current_tl { stroke }
}
\cs_new_protected:Npn \__color_draw:nnn #1#2#3
@@ -30858,6 +31119,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prop_new:c { l__color_named_._prop }
\tl_new:c { l__color_named_._tl }
\tl_set:ce { l__color_named_._tl } { \__color_model:N \l__color_current_tl }
+\prop_put:cve { l__color_named_._prop } { l__color_named_._tl }
+ { \__color_values:N \l__color_current_tl }
\cs_new_protected:Npn \color_export:nnN #1#2#3
{
\group_begin:
@@ -30870,8 +31133,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new_protected:Npn \color_export:nnnN #1#2#3#4
{
- \__color_select_main:Nw #4
- #1 / / \s__color_mark #2 / / \s__color_stop
+ \__color_select_main:Nnn #4 {#1} {#2}
\__color_export:nN {#3} #4
}
\cs_new_protected:Npn \__color_export:nN #1#2
@@ -32264,7 +32526,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_protected:Npn \vcoffin_gset_end: { }
\cs_new_protected:Npn \coffin_set_eq:NN #1#2
{
- \__coffin_if_exist:NT #1
+ \__coffin_if_exist:NT #2
{
\box_set_eq:NN #1 #2
\prop_set_eq:cc { coffin ~ \__coffin_to_value:N #1 ~ corners }
@@ -32276,7 +32538,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_generate_variant:Nn \coffin_set_eq:NN { c , Nc , cc }
\cs_new_protected:Npn \coffin_gset_eq:NN #1#2
{
- \__coffin_if_exist:NT #1
+ \__coffin_if_exist:NT #2
{
\box_gset_eq:NN #1 #2
\prop_gset_eq:cc { coffin ~ \__coffin_to_value:N #1 ~ corners }
@@ -32297,6 +32559,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_eq:NN \coffin_dp:c \box_dp:c
\cs_new_eq:NN \coffin_ht:N \box_ht:N
\cs_new_eq:NN \coffin_ht:c \box_ht:c
+\cs_new_eq:NN \coffin_ht_plus_dp:N \box_ht_plus_dp:N
+\cs_new_eq:NN \coffin_ht_plus_dp:c \box_ht_plus_dp:c
\cs_new_eq:NN \coffin_wd:N \box_wd:N
\cs_new_eq:NN \coffin_wd:c \box_wd:c
\cs_new_protected:Npn \__coffin_get_pole:NnN #1#2#3
@@ -33361,9 +33625,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prop_gput:Nnn \g_msg_module_name_prop { luatex } { LaTeX }
\prop_gput:Nnn \g_msg_module_type_prop { luatex } { }
%% File: l3unicode.dtx
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\cs_new:Npn \codepoint_str_generate:n #1
{
@@ -33541,9 +33803,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \exp_args:Ne \__codepoint_to_nfd:n { \int_eval:n {#1} } }
\cs_new:Npn \__codepoint_to_nfd:n #1
{ \__codepoint_to_nfd:nn {#1} { \char_value_catcode:n {#1} } }
-\bool_lazy_or:nnF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:F
{
\cs_gset:Npn \__codepoint_to_nfd:n #1
{
@@ -34131,9 +34391,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
{ \prg_return_false: }
}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\cs_new:Npn \__text_codepoint_process:nN #1#2 { #1 {#2} }
}
@@ -34171,9 +34429,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__text_codepoint_process:nNNNN #1#2#3#4#5
{ #1 {#2#3#4#5} }
}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\prg_new_conditional:Npnn
\__text_codepoint_compare:nNn #1#2#3 { TF , p }
@@ -35165,9 +35421,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\cs_new:Npn \__text_change_case_catcode:nn #1#2
{ \__text_char_catcode:N #1 }
@@ -36281,9 +36535,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
}
-\bool_lazy_or:nnF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:F
{
\text_declare_uppercase_mapping:nn { "01F0 } { \v { J } }
}
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-generic.tex
index 30e80a05182..355f6dc1bbe 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-generic.tex
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-generic.tex
@@ -6,7 +6,7 @@
%%
%% expl3.dtx (with options: `generic,loader')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-09-10}%
+\def\ExplFileDate{2025-01-18}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.ltx b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.ltx
index a0a34cdba30..5e107c4ac95 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.ltx
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.ltx
@@ -6,7 +6,7 @@
%%
%% expl3.dtx (with options: `2ekernel,loader')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-09-10}%
+\def\ExplFileDate{2025-01-18}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.lua b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.lua
index f436dc4daf3..8478874bd2b 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.lua
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.lua
@@ -11,7 +11,7 @@
-- l3intarray.dtx (with options: `package,lua')
-- l3pdf.dtx (with options: `package,lua')
--
--- Copyright (C) 1990-2024 The LaTeX Project
+-- Copyright (C) 1990-2025 The LaTeX Project
--
-- It may be distributed and/or modified under the conditions of
-- the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty
index f1706b731bd..114fe98424d 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty
@@ -6,7 +6,7 @@
%%
%% expl3.dtx (with options: `package,loader')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-09-10}%
+\def\ExplFileDate{2025-01-18}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3debug.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3debug.def
index 11e6953e008..4dd189fdef2 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3debug.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3debug.def
@@ -6,7 +6,7 @@
%%
%% l3debug.dtx (with options: `package')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: l3debug.dtx
-\ProvidesExplFile{l3debug.def}{2024-09-10}{}{L3 Debugging support}
+\ProvidesExplFile{l3debug.def}{2025-01-18}{}{L3 Debugging support}
\scan_new:N \s__debug_stop
\cs_new:Npn \__debug_use_i_delimit_by_s_stop:nw #1 #2 \s__debug_stop {#1}
\quark_new:N \q__debug_recursion_tail
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex-dev/l3kernel/l3doc.cls
index 6219a5ee830..14e4c01f6ac 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3doc.cls
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3doc.cls
@@ -6,7 +6,7 @@
%%
%% l3doc.dtx (with options: `class')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -20,7 +20,7 @@
%%
%% File: l3doc.dtx
\RequirePackage{calc}
-\ProvidesExplClass{l3doc}{2024-09-10}{}
+\ProvidesExplClass{l3doc}{2025-01-18}{}
{L3 Experimental documentation class}
\clist_new:N \g_docinput_clist
\seq_new:N \g_doc_functions_seq
@@ -91,8 +91,8 @@
\bool_new:N \l__codedoc_in_implementation_bool
\bool_new:N \g__codedoc_typeset_documentation_bool
\bool_new:N \g__codedoc_typeset_implementation_bool
-\bool_set_true:N \g__codedoc_typeset_documentation_bool
-\bool_set_true:N \g__codedoc_typeset_implementation_bool
+\bool_gset_true:N \g__codedoc_typeset_documentation_bool
+\bool_gset_true:N \g__codedoc_typeset_implementation_bool
\tl_new:N \g__codedoc_base_name_tl
\prop_new:N \l__codedoc_variants_prop
\clist_new:N \l__codedoc_function_label_clist
@@ -439,12 +439,22 @@
\raggedbottom
\bool_if:NT \g__codedoc_lmodern_bool
{
- \RequirePackage[T1]{fontenc}
- \RequirePackage{lmodern}
- \group_begin:
- \ttfamily
- \DeclareFontShape{T1}{lmtt}{m}{it}{<->ec-lmtto10}{}
- \group_end:
+ \sys_if_engine_opentype:TF
+ {
+ \group_begin:
+ \ttfamily
+ \DeclareFontShape{TU}{lmtt}{m}{it}
+ {<-> \UnicodeFontFile{lmmonoslant10-regular}{}}{}
+ \group_end:
+ }
+ {
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage{lmodern}
+ \group_begin:
+ \ttfamily
+ \DeclareFontShape{T1}{lmtt}{m}{it}{<->ec-lmtto10}{}
+ \group_end:
+ }
}
\RequirePackage{hypdoc}
\cs_gset:Npn \MakePrivateLetters
@@ -1709,7 +1719,7 @@
\AddToHook{env/variable/begin}{\def\footnote{\__codedoc_fn_footnote:nn{variable}}}
\newenvironment{TemplateInterfaceDescription}[1]
{
- \subsection{The~object~type~`#1'}
+ \subsection{The~template~type~`#1'}
\begingroup
\@beginparpenalty\@M
\description
@@ -1725,7 +1735,7 @@
}
\newenvironment{TemplateDescription}[2]
{
- \subsection{The~template~`#2'~(object~type~#1)}
+ \subsection{The~template~`#2'~(template~type~#1)}
\subsubsection*{Attributes:}
\begingroup
\@beginparpenalty\@M
@@ -1791,7 +1801,7 @@
{
\clist_map_inline:nn {#1}
{
- \clist_put_right:Nn \g_docinput_clist {##1}
+ \clist_gput_right:Nn \g_docinput_clist {##1}
\__codedoc_input:n {##1}
}
}
@@ -1885,7 +1895,7 @@
{ MMMMV - \filesep \int_use:N \c@CodelineNo }
}
}
-\tl_gclear:N \filesep
+\tl_clear_new:N \filesep
\cs_new_protected:Npn \__codedoc_index_page_hc:nn #1#2
{
\protected@write \@indexfile {}
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3docstrip.tex b/Master/texmf-dist/tex/latex-dev/l3kernel/l3docstrip.tex
index eda3985bd07..ab0a23bae62 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3docstrip.tex
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3docstrip.tex
@@ -6,7 +6,7 @@
%%
%% l3docstrip.dtx (with options: `program')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88591.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88591.def
index 485fa39a1df..334eb11de1c 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88591.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88591.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88591')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885910.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885910.def
index a7af4567560..e5efe83983e 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885910.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885910.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso885910')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885911.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885911.def
index ec28015dd4c..4b1e383afdb 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885911.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885911.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso885911')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885913.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885913.def
index b28db7deda2..9fdc01d2ab0 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885913.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885913.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso885913')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885914.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885914.def
index a154a1c0cb5..35816cbc87c 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885914.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885914.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso885914')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885915.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885915.def
index ca071e99247..f976fc6ab26 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885915.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885915.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso885915')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885916.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885916.def
index 44d4a1ae608..273c55d245a 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885916.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso885916.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso885916')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88592.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88592.def
index d54a4820c7d..897c07532db 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88592.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88592.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88592')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88593.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88593.def
index d195b703b44..712722dcee3 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88593.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88593.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88593')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88594.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88594.def
index 2249de98bcc..9fe91bc8bb9 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88594.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88594.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88594')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88595.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88595.def
index e54409a6e1d..8d70b8a14b5 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88595.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88595.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88595')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88596.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88596.def
index e7c6e888cc0..c047db5f307 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88596.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88596.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88596')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88597.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88597.def
index 292b3600ee5..653f60578e1 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88597.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88597.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88597')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88598.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88598.def
index eef8f134bb1..d82350194bd 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88598.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88598.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88598')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88599.def b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88599.def
index cb640b641a3..677706e16b3 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88599.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3str-enc-iso88599.def
@@ -6,7 +6,7 @@
%%
%% l3str-convert.dtx (with options: `iso88599')
%%
-%% Copyright (C) 1990-2024 The LaTeX Project
+%% Copyright (C) 1990-2025 The LaTeX Project
%%
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx
index 1a4f7cde504..41d2430e8e6 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-block.dtx (C) Copyright 2021-2024 LaTeX Project
-\def\ltlabblockdate{2024-08-11}
-\def\ltlabblockversion{0.8p}
+\def\ltlabblockdate{2024-11-25}
+\def\ltlabblockversion{0.8w}
\ProvidesFile{block-latex-lab-testphase.ltx}
[\ltlabblockdate\space v\ltlabblockversion\space
blockenv implementation]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx
index 91ae548e191..765755ee106 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: documentmetadata-support.dtx
-\def\documentmetadatasupportversion{1.0h}
-\def\documentmetadatasupportdate{2024-03-26}
+\def\documentmetadatasupportversion{1.0j}
+\def\documentmetadatasupportdate{2024-09-13}
\RequirePackage{pdfmanagement-testphase}
@@ -44,12 +44,20 @@
{ \clist_new:N \g__pdfmanagement_firstaidoff_clist }
\tl_if_exist:NF \g__pdfmanagement_testphase_tl
{ \tl_new:N \g__pdfmanagement_testphase_tl }
+\cs_new_protected:Npn \@kernel@before@DocumentMetadata
+ {
+ \ifx\Umathcode\@undefined
+ \fontencoding{T1}
+ \renewcommand\encodingdefault{T1}
+ \fi
+ }
\cs_set_protected:Npn \DocumentMetadata #1
{
\cs_if_eq:NNTF \documentclass \@twoclasseserror
{ \msg_error:nn { meta } { after-class } }
{
+ \@kernel@before@DocumentMetadata
\bool_gset_true:N \g__pdfmanagement_active_bool
\keys_set_groups:nnn { document / metadata} {init}{ #1 }
%if no backend has been loaded force it now:
@@ -163,7 +171,7 @@
}
,_pdfstandard / unknown .code:n =
{
- \msg_warning:nnn{pdf}{unknown-standard}{#1}
+ \msg_error:nnn{pdf}{unknown-standard}{#1}
}
,testphase .multichoice:
,testphase / tagpdf .code:n =
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx
index 742739557f2..6103a8fd9d6 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/firstaid-latex-lab-testphase.ltx
@@ -33,9 +33,8 @@
%%
%%
%% File: latex-lab-firstaid.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabfirstaiddate{2024-08-11}
-\def\ltlabfirstaidversion{0.85e}
-
+\def\ltlabfirstaiddate{2024-11-23}
+\def\ltlabfirstaidversion{0.85i}
\ProvidesFile{firstaid-latex-lab-testphase.ltx}
[\ltlabfirstaiddate\space v\ltlabfirstaidversion\space
latex-lab wrapper firstaid]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx
index e04a94ece12..9dff3eac3ec 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-float.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabfloatdate{2024-07-05}
-\def\ltlabfloatversion{0.81e}
+\def\ltlabfloatdate{2024-11-21}
+\def\ltlabfloatversion{0.81g}
\ProvidesFile{float-latex-lab-testphase.ltx}
[\ltlabfloatdate\space v\ltlabfloatversion\space latex-lab wrapper float]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx
index b59802979e1..30d6cd9efd0 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-graphic.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabgraphicdate{2024-07-05}
-\def\ltlabgraphicversion{0.80d}
+\def\ltlabgraphicdate{2024-09-18}
+\def\ltlabgraphicversion{0.80e}
\ProvidesFile{graphic-latex-lab-testphase.ltx}
[\ltlabgraphicdate\space v\ltlabgraphicversion\space latex-lab wrapper graphic]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx
index 67fe58e51e2..0ca17cffdce 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx
@@ -34,7 +34,7 @@
%%
%% File: latex-lab-amsmath.dtx
\ProvidesFile{latex-lab-amsmath.ltx}
- [2024-07-05 v0.1b amsmath adaptions]
+ [2024-09-18 v0.1c amsmath adaptions]
\RequirePackage{tagpdf-base}
\ExplSyntaxOn
\AddToHook{package/amsmath/after}
@@ -45,7 +45,7 @@
\noalign{%
\penalty\postdisplaypenalty\vskip-\belowdisplayskip
\vbox{
- \ifmeasuring@\tag_stop:\fi
+ \ifmeasuring@\tag_suspend:n{\measuring}\fi
\normalbaselines
\ifdim\linewidth=\columnwidth
\else \parshape\@ne \@totalleftmargin \linewidth
@@ -84,7 +84,7 @@
\def\text@#1
{{
\int_gincr:N\g__math_mathchoice_int
- \tag_stop:
+ \tag_suspend:n{\text@}
\mathchoice
{
\__math_tag_if_mathstyle:en{mathchoice-\int_use:N\g__math_mathchoice_int}{0}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx
index 2ed8ea789ab..3fb53a3934a 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-footnotes.dtx
-\def\ltlabfootnotedate{2024-07-27}
-\def\ltlabfootnoteversion{0.8e}
+\def\ltlabfootnotedate{2024-09-30}
+\def\ltlabfootnoteversion{0.8g}
%%
%% Copyright (c) 1995-2011 Robin Fairbairns
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx
index 2c1b4b0f5c0..85a3b2b32a7 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-footnotes.dtx
-\def\ltlabfootnotedate{2024-07-27}
-\def\ltlabfootnoteversion{0.8e}
+\def\ltlabfootnotedate{2024-09-30}
+\def\ltlabfootnoteversion{0.8g}
\ProvidesFile{latex-lab-footnotes.ltx}
[\ltlabfootnotedate\space v\ltlabfootnoteversion\space
@@ -57,7 +57,7 @@
\bool_new:N \l__fnote_autodetect_bool
\bool_set_true:N \l__fnote_autodetect_bool
\tl_new:N \l__fnote_currentstruct_tl
-\tl_set:Nn \l__fnote_currentstruct_tl {1}
+\tl_set:Nn \l__fnote_currentstruct_tl {2}
\cs_generate_variant:Nn \hook_gput_code:nnn{nne}
\cs_generate_variant:Nn \tag_struct_use:n {e}
\cs_new_protected:Npn \fnote_step_fnmark:nn #1#2 {
@@ -466,10 +466,7 @@
\cs_new_protected:Npn \__fnote_gput_ref:nn #1 #2 %#1 the structure number receiving the ref #2
{
- \tag_if_active:T
- {
- \tag_struct_gput:nne {#1}{ref}{\tag_struct_object_ref:e { #2 }}
- }
+ \tag_struct_gput:nnn {#1}{ref_num}{#2}
}
\cs_new_protected:Npn \fnote_gput_refs:nn #1 #2 % pair of numbers
{
@@ -477,8 +474,6 @@
\__fnote_gput_ref:nn {#2}{#1}
}
\cs_generate_variant:Nn \fnote_gput_refs:nn {ee}
-\tl_new:N \l__fnote_dflt_struct_tl
-\tl_set:Nn \l__fnote_dflt_struct_tl {1}
\NewSocketPlug{tagsupport/fntext/begin}{FENote}
{
\tag_mc_end_push:
@@ -487,10 +482,13 @@
\tag_struct_begin:n { tag=footnote }
}
{
- \tag_struct_begin:n { tag=footnote,parent=\l__fnote_dflt_struct_tl }
+ \tag_struct_begin:n
+ {
+ tag=footnote,
+ parent=\int_max:nn{2}{\tag_get:n{current_Sect}+0}
+ }
}
\tl_set:Ne \l__fnote_currentstruct_tl { \tag_get:n{struct_num} }
- \tag_struct_begin:n { tag=footnotelabel }\tag_struct_end:
\bool_if:NTF \l__fnote_autodetect_bool
{
\fnote_mark_gpop_all:ooN { \@thefnmark }{ \l_fnote_type_tl } \l__fnote_currentrefs_seq
@@ -517,7 +515,7 @@
%\seq_show:N\l__fnote_currentrefs_seq
\seq_map_inline:Nn\l__fnote_currentrefs_seq {\MakeLinkTarget*{footnote*.##1}}
\MakeLinkTarget*{footnote*.\l__fnote_currentstruct_tl}
- \tag_struct_begin:n { tag=NonStruct,parent=\l__fnote_currentstruct_tl +1 }
+ \tag_struct_begin:n { tag=footnotelabel,parent=\l__fnote_currentstruct_tl,firstkid }
\tag_mc_begin:n { tag=Lbl }
#1
\tag_mc_end:
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty
index a0eeeedc539..762391f091f 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty
@@ -40,33 +40,7 @@
[\ltlabkerneldate\space v\ltlabkernelversion\space
General kernel and class changes]
\def\hyper@nopatch@counter{}
-\def\@definecounter#1{\expandafter\newcount\csname c@#1\endcsname
- \setcounter{#1}\z@
- \global\expandafter\let\csname cl@#1\endcsname\@empty
- \@addtoreset{#1}{@ckpt}%
- \global\expandafter\let\csname p@#1\endcsname\@empty
- \expandafter\gdef\csname theH#1\endcsname{\the\value{#1}}%new
- \expandafter
- \gdef\csname the#1\expandafter\endcsname\expandafter
- {\expandafter\@arabic\csname c@#1\endcsname}}
-\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}%
- \expandafter\gdef\csname theH#1\endcsname{\csname theH#2\endcsname.\the\value{#1}}%
-}
-\gdef\theHenumi{\the\value{enumi}}
-\gdef\theHenumii{\the\value{enumii}}
-\gdef\theHenumiii{\the\value{enumiii}}
-\gdef\theHenumiv{\the\value{enumiv}}
-\gdef\theHequation{\the\value{equation}}
-\gdef\theHfootnote{\the\value{footnote}}
-\gdef\theHmpfootnote{\the\value{mpfootnote}}
-\def\@currentHref{}
-\def\refstepcounter#1{\stepcounter{#1}%
- \edef\@currentcounter{#1}%
- \xdef\@currentHref {#1.\csname theH#1\endcsname}%
- \protected@edef\@currentlabel
- {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}%
-}
-\let\@kernel@refstepcounter\refstepcounter
+
\def\toclevel@document{-10}
\def\toclevel@part{-1}
\def\toclevel@chapter{0}
@@ -78,20 +52,23 @@
\def\toclevel@figure{1}
\def\toclevel@table{1}
\ExplSyntaxOn
-\AddToHookWithArguments{cmd/MakeLinkTarget/after}
- {
- \tag_if_active:T
- {
- \tl_if_blank:VF \@currentHref
- {
- \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
- }
- }
+\str_if_exist:cF { l__socket_tagsupport/recordtarget_str }
+ {
+ \AddToHookWithArguments{cmd/MakeLinkTarget/after}
+ {
+ \tag_if_active:T
+ {
+ \tl_if_blank:VF \@currentHref
+ {
+ \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
+ }
+ }
+ }
}
\ExplSyntaxOff
%% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabsecdate{2024-07-05}
-\def\ltlabsecversion{0.84c}
+\def\ltlabsecdate{2024-10-04}
+\def\ltlabsecversion{0.84f}
\ifdefined\directlua
\ifnum\outputmode > 0
\pdfvariable gentounicode =1
@@ -104,23 +81,26 @@
\input{glyphtounicode-cmex}
\fi
\ExplSyntaxOn
-\int_new:N\g__kernel_target_int
-\RenewDocumentCommand\MakeLinkTarget{sO{}m}
- {%
- \ifvmode
- \special{}%
- \else
- \@savsf\spacefactor
- \smash{}%
- \spacefactor\@savsf
- \fi
- \IfBooleanTF {#1}
- {
- \tl_gset:Ne \@currentHref {#3}
- }
- {
- \int_gincr:N\g__kernel_target_int
- \tl_gset:Ne \@currentHref {target*.\int_use:N\g__kernel_target_int}
+\str_if_exist:cF { l__socket_tagsupport/recordtarget_plug_str }
+ {
+ \int_new:N\g__kernel_target_int
+ \RenewDocumentCommand\MakeLinkTarget{sO{}m}
+ {%
+ \ifvmode
+ \special{}%
+ \else
+ \@savsf\spacefactor
+ \smash{}%
+ \spacefactor\@savsf
+ \fi
+ \IfBooleanTF {#1}
+ {
+ \tl_gset:Ne \@currentHref {#3}
+ }
+ {
+ \int_gincr:N\g__kernel_target_int
+ \tl_gset:Ne \@currentHref {target*.\int_use:N\g__kernel_target_int}
+ }
}
}
\ExplSyntaxOff
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx
index 34ac71389da..e76fcff474e 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-math.dtx
-\def\ltlabmathdate{2024-08-22}
-\def\ltlabmathversion{0.6c}
+\def\ltlabmathdate{2024-11-26}
+\def\ltlabmathversion{0.6j}
\ProvidesFile{latex-lab-math.ltx}
[\ltlabmathdate\space
v\ltlabmathversion\space
@@ -85,7 +85,6 @@
\clist_new:N\l__tag_math_mathml_files_clist
\clist_put_right:Ne\l__tag_math_mathml_files_clist
{\c_sys_jobname_str-mathml,\c_sys_jobname_str-luamml-mathml}
-
\cs_new_protected:Npn \__math_AF_mml:nnnn #1 #2 #3 #4
{
\int_gincr:N \g__math_mathml_total_int
@@ -149,11 +148,28 @@
\iow_newline:
}
}
-\sys_if_engine_luatex:T
+\cs_new_protected:Npn\__math_provide_luamml_commands:
+ {
+ \providecommand\luamml_flag_structelem:{}
+ \cs_if_free:NT \luamml_structelem:
+ {
+ \cs_set_eq:NN\luamml_structelem:\luamml_flag_structelem:
+ }
+ \providecommand\luamml_flag_process:{}
+ \cs_if_free:NT \luamml_process:
+ {
+ \cs_set_eq:NN\luamml_process:\luamml_flag_process:
+ }
+ \providecommand\luamml_flag_ignore:{}
+ \cs_if_free:NT \luamml_ignore:
+ {
+ \cs_set_eq:NN\luamml_ignore:\luamml_flag_ignore:
+ }
+ }
+\sys_if_engine_luatex:TF
{
- \file_if_exist:nT { luamml.sty }
+ \cs_new_protected:Npn \__math_correct_luamml_array_patches:
{
- \RequirePackage { luamml }
\AddToHook{package/array/after}
{
\cs_set:Npn \endarray
@@ -241,33 +257,46 @@
\prepnext@tok
}
}
- \AddToHook{begindocument/end}
+ }
+ \AddToHook{begindocument/before}
+ {
+ \str_case:on \g__math_luamml_load_tl
{
- \str_case:on \g__tag_math_luamml_tl
- {
- { 1 } {
- \__math_luamml_activate_write:
- \msg_note:nnnn { tag }
- { luamml-status }{ enabled }{ create }
- }
- {-1 } {
- \msg_note:nnnn { tag }
- { luamml-status }{ disabled }{ not~create }
- }
- { 0 }
- {
- \@ifpackageloaded { unicode-math }
+ { 1 } {
+ \RequirePackage { luamml }
+ \__math_correct_luamml_array_patches:
+ \AddToHook{begindocument/end}
+ {
+ \__math_luamml_activate_write:
+ }
+ }
+ {-1 } {
+ \AddToHook{begindocument/end}
+ {
+ \msg_note:nnnn { tag }
+ { luamml-status }{ disabled }{ not~create }
+ }
+ }
+ { 0 }
+ {
+ \@ifpackageloaded { unicode-math }
+ {
+ \RequirePackage { luamml }
+ \__math_correct_luamml_array_patches:
+ \AddToHook{begindocument/end}
{
\__math_luamml_activate_write:
- \msg_note:nnnn { tag }
- { luamml-status }{ enabled }{ create }
}
- { \msg_warning:nn { tag }{ unicode-math-missing } }
- }
- }
+ }
+ { \msg_warning:nn { tag }{ unicode-math-missing } }
+ }
}
+ \__math_provide_luamml_commands:
}
}
+ {
+ \__math_provide_luamml_commands:
+ }
\msg_new:nnn { tag }{ luamml-status }
{
luamml~has~been~#1~and~will~#2~an~MathML~file.
@@ -279,52 +308,98 @@
luamml~will~not~create~an~MathML~file.\\
To~avoid~this~warning~load~unicode-math~\\
or~disable~luamml~with~\\
- \tl_to_str:n{\tagpdfsetup{math/mathml/luamml=false}}\\
+ \tl_to_str:n{\tagpdfsetup{math/mathml/luamml/load=false}}\\
or~force~luamml~with~\\
- \tl_to_str:n{\tagpdfsetup{math/mathml/luamml=true}}
+ \tl_to_str:n{\tagpdfsetup{math/mathml/luamml/load=true}}
}
\cs_new_protected:Npn \__math_luamml_activate_write:
{
- \bool_gset_true:N\g__tag_math_mathml_AF_bool
- \AssignSocketPlug{tagsupport/math/struct/begin}{test-mathml}
- \AssignSocketPlug{tagsupport/math/struct/end}{test-mathml}
- \AssignSocketPlug{tagsupport/math/substruct/begin}{single}
- \AssignSocketPlug{tagsupport/math/substruct/end}{single}
- \int_set:Nn \l__luamml_pretty_int { 5 }
- \RegisterFamilyMapping\symsymbols{oms}
- \RegisterFamilyMapping\symletters{oml}
- \AssignSocketPlug{tagsupport/math/mathml/write/prepare}{On}
- \iow_new:N \g__math_luamml_iow
- \iow_open:Nn \g__math_luamml_iow {\c_sys_jobname_str-luamml-mathml.html}
- \iow_now:Ne \g__math_luamml_iow { \c__math_mathml_write_init_tl }
- \cs_new:Npn \__math_luamml_output_hook:n ##1
+ \bool_if:NT \g__math_luamml_write_bool
{
- \tl_if_empty:NF \l__math_mathml_write_before_tl
+ \bool_gset_true:N\g__tag_math_mathml_AF_bool
+ \AssignSocketPlug{tagsupport/math/struct/begin}{mathml-AF}
+ \AssignSocketPlug{tagsupport/math/struct/end}{mathml-AF}
+ \AssignSocketPlug{tagsupport/math/substruct/begin}{single}
+ \AssignSocketPlug{tagsupport/math/substruct/end}{single}
+ \int_set:Nn \l__luamml_pretty_int { 7 }
+ \RegisterFamilyMapping\symsymbols{oms}
+ \RegisterFamilyMapping\symletters{oml}
+ \AssignSocketPlug{tagsupport/math/mathml/write/prepare}{On}
+ \iow_new:N \g__math_luamml_iow
+ \iow_open:Nn \g__math_luamml_iow {\c_sys_jobname_str-luamml-mathml.html}
+ \iow_now:Ne \g__math_luamml_iow { \c__math_mathml_write_init_tl }
+ \cs_new:Npn \__math_luamml_output_hook:n ##1
{
- \iow_now:Ne \g__math_luamml_iow
- {
- \l__math_mathml_write_before_tl
- ##1
- \c__math_mathml_write_after_tl
- }
+ \tl_if_empty:NF \l__math_mathml_write_before_tl
+ {
+ \iow_now:Ne \g__math_luamml_iow
+ {
+ \l__math_mathml_write_before_tl
+ ##1
+ \c__math_mathml_write_after_tl
+ }
+ }
}
- }
- \__luamml_register_output_hook:N \__math_luamml_output_hook:n
- \luamml_flag_process:
- \AddToHook{enddocument/afterlastpage}
- {
- \iow_now:Ne \g__math_luamml_iow
- { \c__math_mathml_write_final_tl }
- \iow_close:N \g__math_luamml_iow
+ \__luamml_register_output_hook:N \__math_luamml_output_hook:n
+ \AddToHook{enddocument/afterlastpage}
+ {
+ \iow_now:Ne \g__math_luamml_iow
+ { \c__math_mathml_write_final_tl }
+ \iow_close:N \g__math_luamml_iow
+ }
+ \msg_note:nnnn { tag }
+ { luamml-status }{ enabled }{ create }
}
}
-
+\tl_new:N \g__math_luamml_load_tl
+\tl_gset:Nn \g__math_luamml_load_tl {0}
+\bool_new:N \g__math_luamml_write_bool
+\bool_gset_true:N \g__math_luamml_write_bool
+\cs_new:Npn\__math_luamml_structelem:{}
+\cs_new:Npn\__math_luamml_ignore:{}
+\msg_new:nnn { tag }{ PDF-2.0-recommended }
+ {
+ The~key~#1~will~not~work~properly~with~PDF~#2.\\
+ Switching~to~PDF~2.0~is~recommended.
+ }
\keys_define:nn { __tag / setup }
{
- math/mathml/luamml .choice: ,
- math/mathml/luamml/true .code:n = {\tl_gset:Nn \g__tag_math_luamml_tl{1}},
- math/mathml/luamml/false .code:n = {\tl_gset:Nn \g__tag_math_luamml_tl{-1}},
- math/mathml/luamml .default:n = true,
+ math/mathml/luamml/load .choice: ,
+ math/mathml/luamml/load/true .code:n = {\tl_gset:Nn \g__math_luamml_load_tl{1}},
+ math/mathml/luamml/load/false .code:n = {\tl_gset:Nn \g__math_luamml_load_tl{-1}},
+ math/mathml/luamml/load .default:n = true,
+ math/mathml/luamml/load .usage:n=preamble,
+ math/mathml/structelem .choice:,
+ math/mathml/structelem/true .code:n =
+ {
+ \pdf_version_compare:NnT < {2.0}
+ {
+ \msg_warning:nnne { tag }{ PDF-2.0-recommended }
+ { math/mathml/structelem }{ \pdf_version: }
+ }
+ \cs_set:Npn\__math_luamml_structelem:{\luamml_structelem:}
+ \cs_set:Npn\__math_luamml_ignore:{\luamml_ignore:}
+ },
+ math/mathml/structelem/false .code:n =
+ {
+ \cs_set_eq:NN\__math_luamml_structelem:\prg_do_nothing:
+ \cs_set_eq:NN\__math_luamml_ignore:\prg_do_nothing:
+ },
+ math/mathml/structelem .default:n = true,
+ math/mathml/ignore .code:n = {\luamml_ignore:},
+ math/mathml/luamml/write .choice:,
+ math/mathml/luamml/write/true .code:n =
+ {
+ \tl_gset:Nn \g__math_luamml_load_tl{1}
+ \bool_gset_true:N \g__math_luamml_write_bool
+ },
+ math/mathml/luamml/write/false .code:n =
+ {
+ \bool_gset_false:N \g__math_luamml_write_bool
+ },
+ math/mathml/luamml/write .default:n = true,
+ math/mathml/luamml/write .usage:n=preamble,
+ math/mathml/luamml .bool_gset:N = \g__math_luamml_write_bool,
math/mathml/luamml .usage:n=preamble
}
\socket_new:nn {tagsupport/math/mathml/write}{0}
@@ -393,8 +468,8 @@
\bool_if:NT\g__tag_math_mathml_AF_bool
{
\typeout{Info:~Activating~mathml~support}
- \AssignSocketPlug{tagsupport/math/struct/begin}{test-mathml}
- \AssignSocketPlug{tagsupport/math/struct/end}{test-mathml}
+ \AssignSocketPlug{tagsupport/math/struct/begin}{mathml-AF}
+ \AssignSocketPlug{tagsupport/math/struct/end}{mathml-AF}
\AssignSocketPlug{tagsupport/math/substruct/begin}{single}
\AssignSocketPlug{tagsupport/math/substruct/end}{single}
\AddToHook{enddocument/info}
@@ -425,13 +500,13 @@
\int_set:Nn \l__math_mathstyle_int {#2}
\property_record:nn {#1} { mathstyle }
\int_compare:nNnTF { \property_ref:nn {#1}{ mathstyle} } = { #2 }
- { \tag_start: }{ \tag_stop: }
+ { \tag_resume:n{\mathchoice} }{ \tag_suspend:n{\mathchoice} }
}
\cs_generate_variant:Nn \__math_tag_if_mathstyle:nn {en}
\keys_define:nn { __tag / setup }
{
math/mathml/sources .clist_set:N = \l__tag_math_mathml_files_clist,
- math/alt/use .bool_set:N = \l__tag_math_alt_bool,
+ math/alt/use .bool_set:N = \l__tag_math_alt_bool,
viewer/pane/mathml .bool_set:N = \l__tag_math_mathml_pane_bool,
viewer/pane/mathml .initial:n = true,
viewer/pane/mathsource .bool_set:N = \l__tag_math_texsource_pane_bool,
@@ -440,9 +515,26 @@
math/tex/AF .bool_set:N = \l__tag_math_texsource_AF_bool,
math/tex/AF .initial:n = true
}
+\AddToHook{begindocument/end}
+ {
+ \str_if_eq:eeT
+ {1}
+ {
+ \exp_last_unbraced:Ne\use_i:nn
+ {\GetDocumentProperties{document/pdfstandard-UA}}
+ \c_empty_tl\c_empty_tl
+ }
+ {
+ \bool_if:NF \l__tag_math_alt_bool
+ {
+ \typeout{PDF/UA-1~detected.~Enabling~alt~text~on~Formula}
+ }
+ \bool_set_true:N\l__tag_math_alt_bool
+ }
+ }
\socket_new:nn {tagsupport/math/inline/begin}{0}
\socket_new:nn {tagsupport/math/inline/end}{0}
-\socket_new:nn {tagsupport/math/inline/formula/begin}{1} %
+\socket_new:nn {tagsupport/math/inline/formula/begin}{2} %
\socket_new:nn {tagsupport/math/inline/formula/end}{0}
\socket_new_plug:nnn
{tagsupport/math/inline/begin}
@@ -455,13 +547,14 @@
\socket_new_plug:nnn
{tagsupport/math/inline/formula/begin}
{default}
- {
- \socket_use:n{tagsupport/math/content}
- \socket_use:n{tagsupport/math/struct/begin}
+ { \tagpdfparaOff
+ \__math_luamml_structelem:
+ \tag_socket_use:n{math/content}
+ \tag_socket_use:n{math/struct/begin}
% inner formula if multiple parts (not really implemented yet)
- \socket_use:n{tagsupport/math/substruct/begin}
- #1
- \socket_use:n{tagsupport/math/end}
+ \tag_socket_use:n{math/substruct/begin}
+ #2
+ \tag_socket_use:n{math/end}
}
\socket_new_plug:nnn
{tagsupport/math/inline/formula/end}
@@ -472,7 +565,7 @@
}
\socket_new:nn {tagsupport/math/display/begin}{0}
\socket_new:nn {tagsupport/math/display/end}{0}
-\socket_new:nn {tagsupport/math/display/formula/begin}{1} %
+\socket_new:nn {tagsupport/math/display/formula/begin}{2} %
\socket_new:nn {tagsupport/math/display/formula/end}{0}
\socket_new_plug:nnn
@@ -489,11 +582,13 @@
{tagsupport/math/display/formula/begin}
{default}
{
- \socket_use:n{tagsupport/math/content}
- \socket_use:n{tagsupport/math/struct/begin}
- \socket_use:n{tagsupport/math/substruct/begin}
- #1
- \socket_use:n{tagsupport/math/end}
+ \tagpdfparaOff
+ \__math_luamml_structelem:
+ \tag_socket_use:n{math/content}
+ \tag_socket_use:n{math/struct/begin}
+ \tag_socket_use:n{math/substruct/begin}
+ #2
+ \tag_socket_use:n{math/end}
}
\socket_new_plug:nnn
{tagsupport/math/display/formula/end}
@@ -572,9 +667,19 @@
\bool_if:NTF\l__tag_math_texsource_AF_bool
{ \tl_set_eq:NN \l__math_content_AF_source_tmpa_tl \l__math_content_AF_source_tl }
{ \tl_clear:N \l__math_content_AF_source_tmpa_tl }
+ \tl_if_eq:NnTF\g__math_grabbed_env_tl {math}
+ {
+ \tl_set:Nn\l__math_attribute_class_tl{inline}
+ }
+ {
+ \tl_set:Nn\l__math_attribute_class_tl{display}
+ }
+ \bool_if:NF\l__tag_math_alt_bool
+ { \tl_set:Nn \l__math_content_alt_tl{} }
\tag_struct_begin:n
{
tag=Formula,
+ attribute-class=\l__math_attribute_class_tl,
texsource = \l__math_content_AF_source_tmpa_tl,
title-o = \g__math_grabbed_env_tl,
actualtext = \l__math_content_actual_tl,
@@ -593,7 +698,7 @@
\tl_new:N\l__math_grabbed_math_tl
\socket_new_plug:nnn
{tagsupport/math/struct/begin}
- {test-mathml}
+ {mathml-AF}
{
\int_gincr:N\g__math_math_total_int
\tl_set:Ne\l__math_content_hash_tl
@@ -609,20 +714,23 @@
\bool_if:NF\l__tag_math_alt_bool
{ \tl_set:Nn \l__math_content_alt_tl{} }
\tl_if_exist:cTF { g__math_mathml_ \l__math_content_hash_tl _tl }
- {
- \int_gincr:N\g__math_mathml_AF_found_int
- \bool_if:NTF \l__tag_math_mathml_AF_bool
- {
- \int_gincr:N\g__math_mathml_AF_attached_int
- \typeout {Inserting~mathml~with~Hash~\l__math_content_hash_tl}
- }
- {
- \typeout {Ignoring~mathml~with~Hash~\l__math_content_hash_tl}
- }
- }
- {
- \typeout{WARNING:~mathml~missing~for~hash~\l__math_content_hash_tl}
- }
+ {
+ \int_gincr:N\g__math_mathml_AF_found_int
+ \bool_if:NTF \l__tag_math_mathml_AF_bool
+ {
+ \int_gincr:N\g__math_mathml_AF_attached_int
+ \typeout {Inserting~mathml~with~Hash~\l__math_content_hash_tl}
+ }
+ {
+ \typeout {Ignoring~mathml~with~Hash~\l__math_content_hash_tl}
+ }
+ }
+ {
+ \bool_if:NT \l__tag_math_mathml_AF_bool
+ {
+ \typeout {WARNING:~mathml~missing~for~hash~\l__math_content_hash_tl}
+ }
+ }
\socket_use:n {tagsupport/math/mathml/write/prepare}
\socket_use:n {tagsupport/math/mathml/write} % write hash if request
\bool_if:NTF\l__tag_math_texsource_AF_bool
@@ -644,7 +752,7 @@
}
\socket_new_plug:nnn
{tagsupport/math/struct/end}
- {test-mathml}
+ {mathml-AF}
{
\tag_struct_end:
}
@@ -679,30 +787,14 @@
{single}
{ \tag_mc_end:}
\socket_new:nn {tagsupport/math/end}{0}
-
-\cs_new_protected:Npn \__tag_math_disable:
- {
- \socket_assign_plug:nn {tagsupport/math/inline/begin}{noop}
- \socket_assign_plug:nn {tagsupport/math/inline/end}{noop}
- \socket_assign_plug:nn {tagsupport/math/inline/formula/begin}{identity}
- \socket_assign_plug:nn {tagsupport/math/inline/formula/end}{noop}
- \socket_assign_plug:nn {tagsupport/math/display/begin}{noop}
- \socket_assign_plug:nn {tagsupport/math/display/end}{noop}
- \socket_assign_plug:nn {tagsupport/math/display/formula/begin}{identity}
- \socket_assign_plug:nn {tagsupport/math/display/formula/end}{noop}
- }
-\cs_new_protected:Npn \__tag_math_enable:
- {
- \socket_assign_plug:nn {tagsupport/math/inline/begin}{MC}
- \socket_assign_plug:nn {tagsupport/math/inline/end}{MC}
- \socket_assign_plug:nn {tagsupport/math/inline/formula/begin}{default}
- \socket_assign_plug:nn {tagsupport/math/inline/formula/end}{default}
- \socket_assign_plug:nn {tagsupport/math/display/begin}{default}
- \socket_assign_plug:nn {tagsupport/math/display/end}{default}
- \socket_assign_plug:nn {tagsupport/math/display/formula/begin}{default}
- \socket_assign_plug:nn {tagsupport/math/display/formula/end}{default}
- }
-\AtBeginDocument{\tag_if_active:T{\__tag_math_enable: }}
+\socket_assign_plug:nn {tagsupport/math/inline/begin}{MC}
+\socket_assign_plug:nn {tagsupport/math/inline/end}{MC}
+\socket_assign_plug:nn {tagsupport/math/inline/formula/begin}{default}
+\socket_assign_plug:nn {tagsupport/math/inline/formula/end}{default}
+\socket_assign_plug:nn {tagsupport/math/display/begin}{default}
+\socket_assign_plug:nn {tagsupport/math/display/end}{default}
+\socket_assign_plug:nn {tagsupport/math/display/formula/begin}{default}
+\socket_assign_plug:nn {tagsupport/math/display/formula/end}{default}
\cs_new_protected:Npn \__math_process:nn #1#2
{
\legacy_if:nF { measuring@ }
@@ -733,11 +825,12 @@
{ \tl_if_blank_p:n {#1} }
}
{
+ \__math_luamml_ignore:
#1 $ % $
}
{
\tag_socket_use:n {math/inline/begin} %end P-MC
- \tag_socket_use:nn {math/inline/formula/begin}{#1}
+ \tag_socket_use:nnn {math/inline/formula/begin}{}{#1}
$ % $
\tag_socket_use:n {math/inline/formula/end}
\tag_socket_use:n {math/inline/end} % restart P-MC
@@ -751,8 +844,8 @@
\tl_if_blank:nF {#1}
{
\__math_process:nn { equation* } {#1}
- \socket_use:n {tagsupport/math/display/begin}
- \socket_use:nn{tagsupport/math/display/formula/begin}{#1}
+ \tag_socket_use:n {math/display/begin}
+ \tag_socket_use:nn{math/display/formula/begin}{}{#1}
}
$$
}
@@ -761,11 +854,12 @@
% \typeout{== tag dollarldollar display end}
% \ShowTagging{struct-stack}
\para_raw_end:
- \tagpdfparaOn
\l__math_tmpa_skip \lastskip
- \socket_use:n{tagsupport/math/display/formula/end}
+ \tag_socket_use:n{math/display/formula/end}
+ \nobreak
+ \skip_vertical:n { -\l__math_tmpa_skip } % remove the negative belowdisplayskip
\penalty \postdisplaypenalty
- \skip_vertical:n { -\l__math_tmpa_skip * 2 }
+ \skip_vertical:n { -\l__math_tmpa_skip } % insert the correct skip
\@doendpe % this has no \end{...} to take care of it
}
@@ -826,8 +920,6 @@
\int_incr:N \l__math_grab_env_int
\__math_grab_loop_store:n { \begin }
}
-\cs_new_eq:cc { __math_grab_loop_ \token_to_str:N \begin \c_space_tl : }
- { __math_grab_loop_ \token_to_str:N \begin : }
\cs_new_protected:cpn { __math_grab_loop_ \token_to_str:N \end : }
{
\int_compare:nNnTF \l__math_grab_env_int = 0
@@ -974,14 +1066,13 @@
{
\__tag_tool_close_P:
}
- \socket_use:nn{tagsupport/math/display/formula/begin}{}
- \tagpdfparaOff
+ \tag_socket_use:nn{math/display/formula/begin}{}{}
}
\cs_new:Npn \@kernel@math@registered@end {
\para_raw_end:
\tagpdfparaOn
- \socket_use:n{tagsupport/math/display/formula/end}
+ \tag_socket_use:n{tagsupport/math/display/formula/end}
\@endpetrue
}
@@ -1159,7 +1250,7 @@
\iftagsleft@ \@xp\lendmultline@ \else \@xp\rendmultline@ \fi
\ignorespacesafterend
}
-\def\measuring@true{\let\ifmeasuring@\iftrue\tag_stop:}
+\def\measuring@true{\let\ifmeasuring@\iftrue\tag_suspend:n{\measuring}}
\math_register_halign_env:nn {align}{}
\math_register_halign_env:nn {align*}{}
\math_register_halign_env:nn {alignat}{}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx
index 436ccbe02ae..ec0624be4d6 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx
@@ -33,6 +33,8 @@
%%
%%
%% File: latex-lab-mathtools.dtx
+\def\ltlabmathtoolsdate{2024-09-18}
+\def\ltlabmathtoolsversion{0.80a}
\ProvidesFile{latex-lab-mathtools.ltx}
[2024-07-13 v0.1a mathtools adaptions]
\RequirePackage{tagpdf-base}
@@ -65,7 +67,7 @@
\vskip\normallineskiplimit % CCS
\vskip\l_MT_above_intertext_sep
\vbox{%
- \ifmeasuring@\tag_stop:\fi
+ \ifmeasuring@\tag_suspend:n{\measuring}\fi
\normalbaselines
\ifdim
\ifdim\@totalleftmargin=\z@
@@ -93,7 +95,7 @@
\noalign{%
\penalty\postdisplaypenalty\vskip\abovedisplayshortskip
\vbox{%
- \ifmeasuring@\tag_stop:\fi
+ \ifmeasuring@\tag_suspend:n{\measuring}\fi
\normalbaselines
\MH_if_dim:w
\MH_if_dim:w \@totalleftmargin=\z@
@@ -122,7 +124,7 @@
\vskip\normallineskiplimit
\vskip\l_MT_above_shortintertext_sep
\vbox{%
- \ifmeasuring@\tag_stop:\fi
+ \ifmeasuring@\tag_suspend:n{\measuring}\fi
\normalbaselines
\MH_if_dim:w
\MH_if_dim:w \@totalleftmargin=\z@
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty
index a6418eb9ed2..e3b4f050f3e 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty
@@ -33,15 +33,13 @@
%%
%%
%% File: latex-lab-block.dtx (C) Copyright 2021-2024 LaTeX Project
-\def\ltlabblockdate{2024-08-11}
-\def\ltlabblockversion{0.8p}
+\def\ltlabblockdate{2024-11-25}
+\def\ltlabblockversion{0.8w}
\ProvidesPackage {latex-lab-testphase-block}
[\ltlabblockdate\space v\ltlabblockversion\space
blockenv implementation]
\RequirePackage{latex-lab-kernel-changes}
\ExplSyntaxOn
-\tl_new:N \l__block_item_align_tl
-\tl_new:N\l__block_legacy_env_params_tl
\def\@doendpe{\@endpetrue
\def\par
{
@@ -58,32 +56,6 @@
}
}
\cs_new_eq:NN \__kernel_displayblock_doendpe: \prg_do_nothing:
-\def\@endpetrue {%
- \global\let\if@endpe\iftrue
- \ifnum\currentgrouplevel>\z@
- \aftergroup\propagate@doendpe
- \fi
-}
-\def\propagate@doendpe{%
- \if@endpe
- \__block_debug_typeout:n{run~ (another)~ @doendpe~ at~
- group~ level~ \the\currentgrouplevel}%
- \@doendpe
- \else
- \__block_debug_typeout:n{do~ not~ run~ (another)~ @doendpe}%
- \fi
-}
-\@namedef{end }#1{%
- \romannumeral
- \IfHookEmptyTF{env/#1/end}%
- {\expandafter\z@}%
- {\z@\UseHook{env/#1/end}}%
- \csname end#1\endcsname\@checkend{#1}%
- \endgroup
- \UseHook{env/#1/after}%
- \if@ignore\@ignorefalse\ignorespaces\fi
-}
-\def\@endpefalse{\global\let\if@endpe\iffalse}
\NewTemplateType{blockenv}{1}
\NewTemplateType{block}{1}
\NewTemplateType{para}{1}
@@ -108,20 +80,22 @@
}
\DeclareTemplateInterface{block}{display}{1}
{
- heading : tokenlist = , %??
+ heading : tokenlist = , % ??
beginsep : skip = \topsep ,
begin-par-skip : skip = \partopsep ,
par-skip : skip = \parsep ,
- end-skip : skip = \KeyValue{beginsep} , % conflict with name below
+ end-skip : skip = \KeyValue{beginsep} , % conflict with name below
end-par-skip : skip = \KeyValue{begin-par-skip} ,
+ item-skip : skip = \itemsep ,
beginpenalty : integer = \UseName{@beginparpenalty} ,
endpenalty : integer = \UseName{@endparpenalty} ,
leftmargin : length = \leftmargin ,
rightmargin : length = \rightmargin ,
- parindent : length = \listparindent ,
+ parindent : length = 0pt ,
}
\DeclareTemplateInterface{para}{std}{1}
{
+ para-class : tokenlist = justify ,
indent-width : length = \parindent ,
start-skip : skip = 0pt ,
left-skip : skip = 0pt ,
@@ -130,7 +104,6 @@
fixed-word-spaces : boolean = false ,
final-hyphen-demerits : integer = 5000 ,
cr-cmd : tokenlist = \@normalcr ,
- para-class : tokenlist = justify ,
}
\DeclareTemplateInterface{list}{std}{1} % optional
{
@@ -188,226 +161,6 @@
\cs_new_protected:Npn \DebugBlocksOn { \block_debug_on: }
\cs_new_protected:Npn \DebugBlocksOff { \block_debug_off: }
\DebugBlocksOff
-\NewDocumentEnvironment{displayblock}{ !O{} }
- { \UseInstance{blockenv}{displayblock} {#1} }
- { \endblockenv }
-\NewDocumentEnvironment{displayblockflattened}{ !O{} }
- { \UseInstance{blockenv}{displayblockflattened} {#1} }
- { \endblockenv }
-\AddToHook{begindocument/before}{
- \RenewDocumentEnvironment{center} { !O{} }
- { \UseInstance{blockenv}{center}{#1} }
- { \endblockenv }
- \RenewDocumentEnvironment{flushright} { !O{} }
- { \UseInstance{blockenv}{flushright}{#1} }
- { \endblockenv }
- \RenewDocumentEnvironment{flushleft} { !O{} }
- { \UseInstance{blockenv}{flushleft}{#1} }
- { \endblockenv }
-}
-\AddToHook{begindocument/before}{
- \RenewDocumentEnvironment{quote}{ !O{} }
- { \UseInstance{blockenv}{quote} {#1} }
- { \endblockenv }
- \RenewDocumentEnvironment{quotation}{ !O{} }
- { \UseInstance{blockenv}{quotation} {#1} }
- { \endblockenv }
-}
-\AddToHook{begindocument/before}{
- \RenewDocumentEnvironment{verbatim}{ !O{} }
- { \UseInstance{blockenv}{verbatim} {#1}
- \@setupverbinvisiblespace\frenchspacing\@vobeyspaces
- \@xverbatim
- }
- { \endblockenv }
- \RenewDocumentEnvironment{verbatim*}{ !O{} }
- { \UseInstance{blockenv}{verbatim} {#1}
- \@setupverbvisiblespace\frenchspacing\@vobeyspaces
- \@sxverbatim
- }
- { \endblockenv }
-}
-\def\legacyverbatimsetup{%
- \language\l@nohyphenation
- \@tempswafalse
- \def\par{%
- \if@tempswa
- \leavevmode \null {\@@par}\penalty\interlinepenalty
- \else
- \@tempswatrue
- \ifhmode{\@@par}\penalty\interlinepenalty\fi
- \fi}%
- \let\do\@makeother \dospecials
- \obeylines \verbatim@font \@noligs
- \everypar \expandafter{\the\everypar \unpenalty}%
- \tl_set:Nn \l__tag_para_main_tag_tl {codeline}
- \tagtool{paratag=Code}% oder faster: \tl_set:Nn\l__tag_para_tag_tl{Code}
-}
-\newcommand\@setupverbinvisiblespace{}
-\tag_if_active:T {
- \bool_if:NF\g__tag_mode_lua_bool
- {
- \renewcommand\@setupverbinvisiblespace{\def\@xobeysp{\nobreakspace\pdffakespace}}
- }
-}
-\AddToHook{begindocument/before}{
- \RenewDocumentEnvironment{itemize}{!O{}}
- { \UseInstance{blockenv}{itemize} {#1} }
- { \endblockenv }
- \RenewDocumentEnvironment{enumerate}{!O{}}
- { \UseInstance{blockenv}{enumerate} {#1} }
- { \endblockenv }
- \RenewDocumentEnvironment{description}{!O{}}
- { \UseInstance{blockenv}{description} {#1} }
- { \endblockenv }
-}
-\AddToHook{begindocument/before}{
- \RenewDocumentEnvironment{verse}{ !O{} }
- {
- \let\\\@centercr
- \UseInstance{blockenv}{list}
- {
- item-indent=-1.5em,
- parindent=-1.5em,
- item-skip=0pt,
- rightmargin=\leftmargin,
- leftmargin=\leftmargin+1.5em,
- #1
- }
- \item\relax
- }
- { \endblockenv }
- }
-\AddToHook{begindocument/before}{
- \RenewDocumentEnvironment{list}{O{} m m }
- {
- \tl_set:Nn \@itemlabel {#2}
- \tl_set:Nn \l__block_legacy_env_params_tl {#3}
- \UseInstance{blockenv}{list} {#1}
- }
- { \endblockenv }
-}
-\tl_new:N \l__block_env_params_tl
-\cs_new:Npn \legacylistsetupcode {
- \dim_zero:N \listparindent
- \dim_zero:N \rightmargin
- \dim_zero:N \itemindent
- \tl_set:Nn \@listctr {}
- \legacy_if_set_false:n { @nmbrlist } % needed if lists are nested
- \let\makelabel\@mklab % TODO: customize
- \l__block_legacy_env_params_tl
- \legacy_if:nTF { @nmbrlist }
- { \tl_set:Nn \l__tag_L_attr_class_tl {enumerate} } % numbered list
- { \tl_if_empty:NTF \@itemlabel
- { \tl_set:Nn \l__tag_L_attr_class_tl {list} } % no label
- { \tl_set:Nn \l__tag_L_attr_class_tl {itemize} } % unnumbered, unordered
- }
-}
-\AddToHook{begindocument/before}{
- \RenewDocumentEnvironment{trivlist}{ !O{} }
- { \list[#1]{}
- {
- \dim_zero:N \leftmargin
- \dim_zero:N \labelwidth
- \cs_set_eq:NN \makelabel \use:n
- }
- }
- { \endblockenv }
-}
-\RenewDocumentCommand \newtheorem { m O{#1} m o }
-{
- \expandafter\@ifdefinable\csname #1\endcsname
- {
- \str_if_eq:nnTF{#1}{#2}
- {
- \@definecounter {#2}
- \IfNoValueTF {#4}
- { % @ynthm
- \tl_gset:ce { the #2 }
- {
- \@thmcounter{#2}
- }
- }
- { % @xnthm
- \@newctr{#1}[#4]
- \tl_gset:ce { the #2 }
- {
- \expandafter\noexpand\csname the#4\endcsname
- \@thmcountersep
- \@thmcounter{#2}
- }
- }
- }
- { % @othm
- \@ifundefined{c@#2}
- { \@nocounterr{#2} }
- {
- \tl_gset:cn { the #1 }
- { \UseName { the #2 } }
- }
- }
- \global\@namedef{#1} { \@thm{#2}{#3} }
- \global\@namedef{end#1}{ \@endtheorem }
- }
-}
-\tl_new:N \l__block_thm_current_counter_tl
-\def\@thm#1#2{%
- \@kernel@refstepcounter{#1}
- \tl_set:Nn \l__block_thm_current_counter_tl{#1}
- \@ifnextchar[{\@ythm{#1}{#2}}{\@xthm{#1}{#2}}}
-\def\hyper@nopatch@thm{}
-\def\@begintheorem#1#2{
- \UseInstance{blockenv}{theorem}{}
- \tagpdfparaOff
- \mode_leave_vertical:
- \MakeLinkTarget{\l__block_thm_current_counter_tl}
- \tag_struct_begin:n{tag=Caption}
- \group_begin:
- \bfseries
- \tag_mc_begin:n {}
- #1\
- \tag_mc_end:
- \tag_struct_begin:n{tag=Lbl}
- \tag_mc_begin:n {}
- #2
- \tag_mc_end:
- \tag_struct_end:
- \group_end:
- \tag_struct_end:
- \tagpdfparaOn
- \__block_start_para_structure_unconditionally:n { \PARALABEL }
- \itshape
- \hskip\labelsep
- \ignorespaces
-}
-\def\@opargbegintheorem#1#2#3{
- \UseInstance{blockenv}{theorem}{}
- \tagpdfparaOff
- \mode_leave_vertical:
- \MakeLinkTarget{\l__block_thm_current_counter_tl}
- \tag_struct_begin:n{tag=Caption}
- \group_begin:
- \bfseries
- \tag_mc_begin:n {}
- #1\
- \tag_mc_end:
- \tag_struct_begin:n{tag=Lbl}
- \tag_mc_begin:n {}
- #2
- \tag_mc_end:
- \tag_struct_end:
- \tag_mc_begin:n {}
- \ (#3)
- \tag_mc_end:
- \group_end:
- \tag_struct_end:
- \tagpdfparaOn
- \__block_start_para_structure_unconditionally:n { \PARALABEL }
- \itshape
- \hskip\labelsep
- \ignorespaces
-}
-\def\@endtheorem{\endblockenv}
\cs_new:Npn \g_block_nesting_depth_int { \@listdepth } % a fake int
% for now
\DeclareTemplateCode{blockenv}{display}{1}
@@ -420,11 +173,11 @@
setup-code = \l__block_setup_code_tl ,
block-instance = \l__block_block_instance_tl ,
para-instance = \l__block_para_instance_tl ,
+ para-flattened = \l__tag_para_flattened_bool ,
inner-level-counter = \l__block_inner_level_counter_tl ,
max-inner-levels = \l__block_max_inner_levels_tl ,
inner-instance-type = \l__block_inner_instance_type_tl ,
inner-instance = \l__block_inner_instance_tl ,
- para-flattened = \l__tag_para_flattened_bool ,
final-code = \l__block_final_code_tl ,
}
{
@@ -455,10 +208,15 @@
{ \@toodeep }
{
\int_gincr:N \g_block_nesting_depth_int
- \use:c { @list \int_to_roman:n { \g_block_nesting_depth_int } }
+ \use:c { @list \int_to_roman:n
+ { \g_block_nesting_depth_int } }
}
}
- \tag_if_active:T { \use:c { __block_recipe_ \l__block_tagging_recipe_tl : } }
+ \tag_if_active:T
+ { \use:c { __block_recipe_ \l__block_tagging_recipe_tl : } }
+ \tl_clear:N \@itemlabel
+ \tl_clear:N \@listctr
+ \legacy_if_set_false:n { @nmbrlist }
\l__block_setup_code_tl
\__block_debug_typeout:n{use~ instance:~
\l__block_block_instance_tl - \int_use:N \g_block_nesting_depth_int }
@@ -468,7 +226,8 @@
{#1}
\tl_if_empty:NF \l__block_para_instance_tl
{
- \__block_debug_typeout:n{use~ para~ instance:~ \l__block_para_instance_tl }
+ \__block_debug_typeout:n{ use~ para~ instance:~
+ \l__block_para_instance_tl }
\UseInstance{para}{ \l__block_para_instance_tl } {}
}
\tl_if_empty:NF \l__block_inner_instance_tl
@@ -479,8 +238,8 @@
\UseInstance{ \l__block_inner_instance_type_tl }
{ \l__block_inner_instance_tl
\tl_if_empty:NF \l__block_inner_level_counter_tl
- { - \int_use:N \l__block_inner_level_counter_tl } % not clean
- % use "o"?
+ % not clean use "o"?
+ { - \int_use:N \l__block_inner_level_counter_tl }
}
{#1}
}
@@ -501,15 +260,12 @@
\mode_leave_vertical:
\legacy_if_gset_false:n { @inlabel }
}
- \legacy_if:nT { @newlist }
- {
- \@noitemerr
- \legacy_if_gset_false:n { @newlist }
- }
+ \__block_if_list:T { \legacy_if:nT { @newlist } { \@noitemerr } }
\mode_if_horizontal:TF
{ \__block_skip_remove_last: \__block_skip_remove_last: \par }
{ \@inmatherr{\end{\@currenvir}} }
\__kernel_displayblock_end:
+ \__block_if_list:T { \legacy_if_gset_false:n { @newlist } }
\legacy_if:nF { @noparlist }
{
\__block_skip_set_to_last:N \l_tmpa_skip
@@ -523,6 +279,8 @@
}
\socket_use:n {tagsupport/block-endpe}
}
+\cs_new:Npn \__block_if_list:T
+ { \tl_if_eq:NnT \l__block_block_instance_tl {list} }
\cs_new:Npn \__kernel_displayblock_end: {
\__block_debug_typeout:n{\detokenize{__kernel_displayblock_end:}}
}
@@ -556,16 +314,18 @@
par-skip = \parsep ,
end-skip = \l__block_botsep_skip ,
end-par-skip = \l__block_parbotsep_skip ,
+ item-skip = \itemsep ,
beginpenalty = \@beginparpenalty ,
endpenalty = \@endparpenalty ,
rightmargin = \rightmargin ,
leftmargin = \leftmargin ,
- parindent = \listparindent ,
+ parindent = \l__block_parindent_dim ,
}
{
\tl_if_empty:nF {#1} { \SetTemplateKeys{block}{display}{#1} }
\tl_if_blank:oF \l__block_heading_tl
- { \mode_leave_vertical: \textbf{\l__block_heading_tl} } % TODO customize
+ { \mode_leave_vertical:
+ \textbf{\l__block_heading_tl} } % TODO customize
\legacy_if:nT { @noskipsec } { \mode_leave_vertical: }
\skip_set:Nn \l__block_topsepadd_skip { \topsep }
\mode_if_vertical:TF
@@ -608,7 +368,7 @@
}
\skip_set_eq:NN \@outerparskip \parskip
\skip_set_eq:NN \parskip \parsep
- \dim_set_eq:NN \parindent \listparindent
+ \dim_set_eq:NN \parindent \l__block_parindent_dim
\dim_add:Nn \linewidth { - \rightmargin - \leftmargin }
\dim_add:Nn \@totalleftmargin { \leftmargin }
\tex_parshape:D 1 ~ \@totalleftmargin \linewidth
@@ -626,7 +386,8 @@
{
\__block_skip_set_to_last:N \l__block_tmpa_skip
\skip_vertical:n { - \l__block_tmpa_skip }
- \skip_vertical:n { \l__block_tmpa_skip + \@outerparskip - \parskip }
+ \skip_vertical:n { \l__block_tmpa_skip +
+ \@outerparskip - \parskip }
}
}
{
@@ -646,16 +407,20 @@
,listparindent .skip_set:N = \listparindent
}
\cs_new:Npn \__kernel_displayblock_begin: {
- \__block_debug_typeout:n{\detokenize{__kernel_displayblock_begin:}}
+ \__block_debug_typeout:n
+ {\detokenize{__kernel_displayblock_begin:}}
}
\cs_new:Npn \__kernel_displayblock_beginpar_hmode:w {
- \__block_debug_typeout:n{\detokenize{__kernel_displayblock_beginpar_hmode:w}}
+ \__block_debug_typeout:n
+ {\detokenize{__kernel_displayblock_beginpar_hmode:w}}
}
\cs_new:Npn \__kernel_displayblock_beginpar_vmode: {
- \__block_debug_typeout:n{\detokenize{__kernel_displayblock_beginpar_vmode:}}
+ \__block_debug_typeout:n
+ {\detokenize{__kernel_displayblock_beginpar_vmode:}}
}
\tl_new:N \@itemlabel % should have a top-level definition
\tl_new:N \@listctr % should have a top-level definition
+\cs_new_eq:NN \__block_evaluate_saved_user_keys:nn \use_none:nn
\DeclareTemplateCode{list}{std}{1}
{
counter = \l__block_counter_tl,
@@ -672,18 +437,23 @@
}
{
\__block_debug_typeout:n{template:list:std}
- \tl_if_empty:nF {#1} { \SetTemplateKeys{list}{std}{#1} }
+ \tl_if_empty:nTF {#1}
+ { \cs_set_eq:NN \__block_evaluate_saved_user_keys:nn \use_none:nn }
+ {
+ \SetTemplateKeys{list}{std}{#1}
+ \cs_set:Npe \__block_evaluate_saved_user_keys:nn ##1##2
+ { \SetTemplateKeys{##1}{##2}{ \exp_not:n{#1} } }
+ }
\tl_if_empty:NTF \l__block_counter_tl
{
- \tl_if_blank:oF \@listctr
- {
+ \legacy_if:nT { @nmbrlist }
+ {
\bool_if:NF \l__block_resume_bool
{
\int_gset:cn{ c@ \@listctr }
{ \l__block_counter_start_int - 1 }
}
- }
- { \@nmbrlistfalse }
+ }
}
{
\@nmbrlisttrue
@@ -699,6 +469,7 @@
\tl_set_eq:NN \@itemlabel \l__block_item_label_tl
}
\legacy_if_gset_true:n { @newlist }
+ \cs_set_eq:NN \__block_item_everypar: \__block_item_everypar_first:
\__block_debug_typeout:n{template:list:std~end}
}
\keys_define:nn { template/list/std }
@@ -735,14 +506,18 @@
{
\__block_debug_typeout:n{template:item:std}
\tl_set_eq:NN \l__block_label_given_tl \c_novalue_tl
+ \__block_evaluate_saved_user_keys:nn {item}{std}
\tl_if_empty:nF{#1}{ \SetTemplateKeys{item}{std}{#1} }
\tl_if_novalue:oTF \l__block_label_given_tl
{
\tl_if_blank:oF \@listctr { \@kernel@refstepcounter \@listctr }
- \bool_if:NTF \l__block_item_compatibility_bool % not sure that conditional
- % makes sense
- { \__block_make_label_box:n { \MakeLinkTarget[\@listctr]{}\@itemlabel } } % TODO ?
- { \__block_make_label_box:n { \MakeLinkTarget[\@listctr]{}\__block_counter_label:n { \@listctr } } }
+ \bool_if:NTF \l__block_item_compatibility_bool % not sure that
+ % conditional
+ % makes sense
+ { \__block_make_label_box:n { \MakeLinkTarget[\@listctr]{}%
+ \@itemlabel } } % TODO ?
+ { \__block_make_label_box:n { \MakeLinkTarget[\@listctr]{}%
+ \__block_counter_label:n { \@listctr } } }
}
{
\__block_debug_typeout:n{item~ with~ optional}
@@ -750,7 +525,8 @@
\bool_if:nT
{
\l__block_label_boxed_bool
- && \dim_compare_p:n { \box_wd:N \l__block_one_label_box <= \linewidth } % TODO: is \linewidth correct?
+ && \dim_compare_p:n
+ { \box_wd:N \l__block_one_label_box <= \linewidth }
}
{
\dim_compare:nNnT
@@ -779,11 +555,13 @@
{ \bool_if:NT \l__block_long_label_bool { \nobreak \hfil \break } }
% version of \newline inside an hbox that will be unpacked
}
- % \skip_set_eq:NN \parsep \l__block_item_parsep_skip TODO??? FMi
- % what's that?
- \dim_set_eq:NN \parindent \listparindent
+ % TODO??? FMi what's that?
+ % \skip_set_eq:NN \parsep \l__block_item_parsep_skip
+ \dim_compare:nNnF \listparindent = {0pt}
+ { \dim_set_eq:NN \parindent \listparindent }
\cs_set_eq:NN \__block_item_everypar: \__block_item_everypar_std:
}
+\tl_new:N \l__block_item_align_tl
\box_new:N \l__block_one_label_box
\box_new:N \g__block_labels_box
\bool_new:N \l__block_long_label_bool
@@ -806,8 +584,8 @@
\cs_new_eq:NN \__kernel_list_label_begin: \prg_do_nothing:
\cs_new_eq:NN \__kernel_list_label_end: \prg_do_nothing:
\cs_new_eq:NN \__block_item_everypar: \prg_do_nothing:
-\AddToHook{para/begin}[lists]{\__block_item_everypar:}
-\DeclareHookRule{para/begin}{lists}{after}{tagpdf}
+\AddToHook{para/begin}[items]{\__block_item_everypar:}
+\DeclareHookRule{para/begin}{items}{after}{tagpdf}
\cs_new_protected:Npn \__block_item_everypar_std: {
\__block_debug_typeout:n{item~ everypar \on@line }
\legacy_if_set_false:n { @minipage }
@@ -831,6 +609,9 @@
\cs_set_eq:NN \__block_item_everypar: \prg_do_nothing:
}
}
+\cs_new:Npn \__block_item_everypar_first: {
+ \legacy_if:nT { @newlist } { \@noitemerr }
+}
\cs_new_eq:NN \__kernel_list_label_after: \prg_do_nothing:
\skip_new:N \l__block_tmpa_skip
\skip_new:N \l__block_topsepadd_skip
@@ -846,8 +627,11 @@
}
{
\legacy_if:nTF { @newlist }
- { \__kernel_list_item_begin: }
- { \__block_inter_item: }
+ {
+ \__kernel_list_item_begin:
+ \legacy_if_gset_false:n { @newlist }
+ }
+ { \__block_inter_item: }
\tl_if_novalue:nTF {#1} % avoids reparsing label={}
{ \__block_item_instance:n { } }
{ \__block_item_instance:n {#1} }
@@ -868,6 +652,270 @@
}
\cs_new_eq:NN \__kernel_list_item_begin: \prg_do_nothing:
\cs_new_eq:NN \__kernel_list_item_end: \prg_do_nothing:
+\tag_if_active:TF {
+ \cs_set:Npn \__block_beginpar_vmode: {
+ \__block_debug_typeout:n
+ { @endpe = \legacy_if:nTF { @endpe }{true}{false}
+ \on@line }
+ \legacy_if:nTF { @endpe }
+ {
+ \legacy_if_gset_false:n { @endpe }
+ }
+ {
+ \int_compare:nNnT \l__tag_block_flattened_level_int < 2
+ {
+ \__tag_gincr_para_main_begin_int:
+ \tag_struct_begin:n
+ {
+ tag=\l__tag_para_main_tag_tl,
+ attribute-class=\l__tag_para_main_attr_class_tl,
+ }
+ \__tag_para_main_store_struct:
+ }
+ }
+ }
+ \cs_set:Npn \__block_beginpar_hmode:N #1
+ {
+ \tag_mc_end:
+ \__tag_gincr_para_end_int:
+ \__block_debug_typeout:n{increment~ /P \on@line }
+ \bool_if:NT \l__tag_para_show_bool
+ { \tag_mc_begin:n{artifact}
+ \rlap{\color_select:n{red}\tiny\ \int_use:N\g__tag_para_end_int}
+ \tag_mc_end:
+ }
+ \tag_struct_end:
+ \tagpdfparaOff \par \tagpdfparaOn
+ }
+\cs_set:Npn \__kernel_displayblock_doendpe: {
+ \bool_if:NT \l__tag_para_bool
+ {
+ \legacy_if:nT { @endpe }
+ {
+ \__block_debug_typeout:n
+ { flattened= \bool_if:NTF
+ \l__tag_para_flattened_bool
+ {true}{false}
+ \on@line }
+ \bool_if:NF \l__tag_para_flattened_bool
+ {
+ \__block_debug_typeout:n{Structure-end~
+ \l__tag_para_main_tag_tl\space
+ after~ displayblock \on@line }
+ \__tag_gincr_para_main_end_int:
+ \tag_struct_end: %text-unit
+ }
+ }
+ }
+}
+\RemoveFromHook{para/begin}[tagpdf]
+\AddToHook{para/begin}[tagpdf]{
+ \bool_if:NT \l__tag_para_bool {
+ \legacy_if:nF { @inlabel }
+ {
+ \__block_start_para_structure:n { \PARALABEL }
+ }
+ }
+}
+\cs_new_protected:Npn \__block_start_para_structure:n #1 {
+ \__block_debug_typeout:n
+ { @endpe = \legacy_if:nTF { @endpe }{true}{false}
+ \on@line }
+ \legacy_if:nF { @endpe }
+ {
+ \bool_if:NF \l__tag_para_flattened_bool
+ {
+ \__tag_gincr_para_main_begin_int:
+ \tag_struct_begin:n
+ {
+ tag=\l__tag_para_main_tag_tl,
+ attribute-class=\l__tag_para_main_attr_class_tl,
+ }
+ \__tag_para_main_store_struct:
+ }
+ }
+ \__tag_gincr_para_begin_int:
+ \__block_debug_typeout:n{increment~ P \on@line }
+ \tag_struct_begin:n
+ {
+ tag=\l__tag_para_tag_tl
+ ,attribute-class=\l__tag_para_attr_class_tl
+ }
+ \__tag_check_para_begin_show:nn {green}{#1}
+ \tag_mc_begin:n {}
+}
+\cs_new_protected:Npn \__block_start_para_structure_unconditionally:n #1 {
+ \bool_if:NF \l__tag_para_flattened_bool
+ {
+ \__tag_gincr_para_main_begin_int:
+ \tag_struct_begin:n
+ {
+ tag=\l__tag_para_main_tag_tl,
+ attribute-class=\l__tag_para_main_attr_class_tl,
+ }
+ \__tag_para_main_store_struct:
+ }
+ \__tag_gincr_para_begin_int:
+ \__block_debug_typeout:n{increment~ P \on@line }
+ \tag_struct_begin:n
+ {
+ tag=\l__tag_para_tag_tl
+ ,attribute-class=\l__tag_para_attr_class_tl
+ }
+ \__tag_check_para_begin_show:nn {green}{#1}
+ \tag_mc_begin:n {}
+}
+\RemoveFromHook{para/end}[tagpdf]
+\AddToHook{para/end}
+ {
+ \bool_if:NT \l__tag_para_bool
+ {
+ \__tag_gincr_para_end_int:
+ \__block_debug_typeout:n{increment~ /P \on@line }
+ \tag_mc_end:
+ \__tag_check_para_end_show:nn {red}{}
+ \tag_struct_end:
+ \bool_if:NF \l__tag_para_flattened_bool
+ {
+ \__tag_gincr_para_main_end_int:
+ \tag_struct_end:
+ }
+ }
+ }
+\def\PARALABEL{NP-}
+\cs_set_protected:Npn \para_end: {
+ \scan_stop:
+ \mode_if_horizontal:TF {
+ \mode_if_inner:F {
+ \tex_unskip:D
+ \hook_use:n{para/end}
+ \@kernel@after@para@end
+ \mode_if_horizontal:TF {
+ \if_int_compare:w 11 = \tex_lastnodetype:D
+ \tex_hskip:D \c_zero_dim
+ \fi:
+ \tex_par:D
+ \hook_use:n{para/after}
+ \@kernel@after@para@after
+ }
+ { \msg_error:nnnn { hooks }{ para-mode }{end}{horizontal} }
+ }
+ }
+ {
+ \__kernel_endpe_vmode: % should do nothing if no tagging
+ \tex_par:D
+ }
+}
+\cs_set_eq:NN \par \para_end:
+\cs_set_eq:NN \__blockpar \para_end:
+\cs_set_eq:NN \endgraf \para_end:
+\DeclareRobustCommand*\begin[1]{%
+ \UseHook{env/#1/before}%
+ \@ifundefined{#1}%
+ {\def\reserved@a{\@latex@error{Environment~#1~undefined}\@eha}}%
+ {\def\reserved@a{\def\@currenvir{#1}%
+ \edef\@currenvline{\on@line}%
+ \@execute@begin@hook{#1}%
+ \csname #1\endcsname}}%
+ \@ignorefalse
+ \begingroup
+ \__kernel_endpe_vmode:
+ \reserved@a}
+\cs_new:Npn \__kernel_endpe_vmode: {
+ \if@endpe \ifvmode
+ \bool_if:NT \l__tag_para_bool
+{
+ \bool_if:NF \l__tag_para_flattened_bool
+ {
+ \__tag_gincr_para_main_end_int:
+ \tag_struct_end:
+ }
+ \@endpefalse
+}
+ \fi \fi
+}
+\cs_set:Npn \__kernel_list_label_after: {
+ \bool_if:NT \l__tag_para_bool
+ {
+ \__block_start_para_structure_unconditionally:n { LI- }
+ }
+}
+\cs_new:Npn \__block_inner_begin: {
+ \tagstructbegin{tag=\l__block_tag_inner_tag_tl}
+}
+\cs_new:Npn \__block_inner_end: {
+ \__block_debug_typeout:n{block-end \on@line}
+ \legacy_if:nT { @endpe }
+ {
+ \__tag_gincr_para_main_end_int:
+ \__block_debug_typeout:n{close~ /text-unit \on@line}
+ \tagstructend
+ }
+ \tagstructend % end inner structure
+}
+\tl_new:N \l__tag_L_tag_tl
+\tl_set:Nn \l__tag_L_tag_tl {L}
+
+\tl_new:N\l__tag_L_attr_class_tl
+\tl_set:Nn \l__tag_L_attr_class_tl {list}
+\tag_if_active:T
+{
+ \tagpdfsetup
+ {
+ role/new-attribute = {itemize}
+ {/O /List /ListNumbering/Unordered},
+ role/new-attribute = {enumerate}
+ {/O /List /ListNumbering/Ordered},
+ role/new-attribute = {description}
+ {/O /List /ListNumbering/Description},
+ % default if unknown
+ role/new-attribute = {list}{/O /List /ListNumbering/Unordered},
+ }
+}
+\def\LItag{LI}
+\cs_set:Npn \__block_list_begin: {
+ \tagstructbegin
+ {
+ tag=\l__tag_L_tag_tl
+ ,attribute-class=\l__tag_L_attr_class_tl
+ }
+}
+\cs_set:Npn \__block_list_item_begin: { \tagstructbegin{tag=\LItag} }
+\cs_set:Npn \__kernel_list_label_begin: {
+ \tagstructbegin{tag=Lbl}
+ \tagmcbegin{tag=Lbl}
+}
+\cs_set:Npn \__kernel_list_label_end: {
+ \tagmcend % end mc-Lbl or artifact
+ \tagstructend % end Lbl
+ \tagstructbegin{tag=\LBody}
+}
+\def\LBody{LBody}
+\cs_set:Npn \__block_list_item_end: {
+ \legacy_if:nT { @endpe }
+ {
+ \__tag_gincr_para_main_end_int:
+ \tagstructend % text-unit
+ }
+ \tagstructend \tagstructend % end LBody, LI
+}
+\cs_set:Npn \__block_list_end: {
+ \legacy_if:nF { @newlist }
+ {
+ \legacy_if:nT { @endpe }
+ {
+ \__tag_gincr_para_main_end_int:
+ \tagstructend % text-unit
+ \__block_debug_typeout:n{Structure-end~ P~ at~ list-end \on@line }
+ }
+ \tagstructend\tagstructend % end LBody, LI
+ }
+ \tagstructend % end L
+}
+}
+{
+ \cs_new:Npn \__block_start_para_structure_unconditionally:n #1 {}
+}
\cs_new:Npn \__block_recipe_basic: {
\cs_set_eq:NN \__kernel_displayblock_beginpar_hmode:w
\__block_beginpar_hmode:N
@@ -921,18 +969,233 @@
{ \tl_set:Nn \l__tag_L_attr_class_tl {} }
{ \tl_set_eq:NN \l__tag_L_attr_class_tl \l__block_tag_class_tl }
}
-
+\NewDocumentEnvironment{displayblock}{ !O{} }
+ { \UseInstance{blockenv}{displayblock} {#1} }
+ { \endblockenv }
+\NewDocumentEnvironment{displayblockflattened}{ !O{} }
+ { \UseInstance{blockenv}{displayblockflattened} {#1} }
+ { \endblockenv }
+\AddToHook{begindocument/before}{
+ \RenewDocumentEnvironment{center} { !O{} }
+ { \UseInstance{blockenv}{center}{#1} }
+ { \endblockenv }
+ \RenewDocumentEnvironment{flushright} { !O{} }
+ { \UseInstance{blockenv}{flushright}{#1} }
+ { \endblockenv }
+ \RenewDocumentEnvironment{flushleft} { !O{} }
+ { \UseInstance{blockenv}{flushleft}{#1} }
+ { \endblockenv }
+}
+\AddToHook{begindocument/before}{
+ \RenewDocumentEnvironment{quote}{ !O{} }
+ { \UseInstance{blockenv}{quote} {#1} }
+ { \endblockenv }
+ \RenewDocumentEnvironment{quotation}{ !O{} }
+ { \UseInstance{blockenv}{quotation} {#1} }
+ { \endblockenv }
+}
+\AddToHook{begindocument/before}{
+ \RenewDocumentEnvironment{verbatim}{ !O{} }
+ { \UseInstance{blockenv}{verbatim} {#1}
+ \@setupverbinvisiblespace\frenchspacing\@vobeyspaces
+ \@xverbatim
+ }
+ { \endblockenv }
+ \RenewDocumentEnvironment{verbatim*}{ !O{} }
+ { \UseInstance{blockenv}{verbatim} {#1}
+ \@setupverbvisiblespace\frenchspacing\@vobeyspaces
+ \@sxverbatim
+ }
+ { \endblockenv }
+}
+\def\legacyverbatimsetup{%
+ \language\l@nohyphenation
+ \@tempswafalse
+ \def\par{%
+ \if@tempswa
+ \leavevmode \null {\@@par}\penalty\interlinepenalty
+ \else
+ \@tempswatrue
+ \ifhmode{\@@par}\penalty\interlinepenalty\fi
+ \fi}%
+ \let\do\@makeother \dospecials
+ \obeylines \verbatim@font \@noligs
+ \everypar \expandafter{\the\everypar \unpenalty}%
+ \tl_set:Nn \l__tag_para_main_tag_tl {codeline}
+ \tagtool{paratag=Code}% oder faster: \tl_set:Nn\l__tag_para_tag_tl{Code}
+}
+\newcommand\@setupverbinvisiblespace{}
+\tag_if_active:T {
+ \bool_if:NF\g__tag_mode_lua_bool
+ {
+ \renewcommand\@setupverbinvisiblespace
+ {\def\@xobeysp{\nobreakspace\pdffakespace}}
+ }
+}
+\AddToHook{begindocument/before}{
+ \RenewDocumentEnvironment{itemize}{!O{}}
+ { \UseInstance{blockenv}{itemize} {#1} }
+ { \endblockenv }
+ \RenewDocumentEnvironment{enumerate}{!O{}}
+ { \UseInstance{blockenv}{enumerate} {#1} }
+ { \endblockenv }
+ \RenewDocumentEnvironment{description}{!O{}}
+ { \UseInstance{blockenv}{description} {#1} }
+ { \endblockenv }
+}
+\AddToHook{begindocument/before}{
+ \RenewDocumentEnvironment{verse}{ !O{} }
+ {
+ \let\\\@centercr
+ \UseInstance{blockenv}{list}
+ {
+ item-indent=-1.5em,
+ parindent=-1.5em,
+ item-skip=0pt,
+ rightmargin=\leftmargin,
+ leftmargin=\leftmargin+1.5em,
+ #1
+ }
+ \item\relax
+ }
+ { \endblockenv }
+ }
+\AddToHook{begindocument/before}{
+ \RenewDocumentEnvironment{list}{O{} m m }
+ {
+ \tl_set:Nn \l__block_legacy_env_params_tl
+ {
+ \tl_set:Nn \@itemlabel {#2}
+ #3
+ }
+ \UseInstance{blockenv}{list} {#1}
+ }
+ { \endblockenv }
+}
+\cs_new:Npn \legacylistsetupcode {
+ \dim_zero:N \listparindent
+ \dim_zero:N \rightmargin
+ \dim_zero:N \itemindent
+ \let\makelabel\@mklab % TODO: customize
+ \l__block_legacy_env_params_tl
+ \legacy_if:nTF { @nmbrlist }
+ { \tl_set:Nn \l__tag_L_attr_class_tl {enumerate} } % numbered list
+ { \tl_if_empty:NTF \@itemlabel
+ { \tl_set:Nn \l__tag_L_attr_class_tl {list} } % no label
+ { \tl_set:Nn \l__tag_L_attr_class_tl {itemize} } % unnumbered,
+ % unordered
+ }
+}
+\tl_new:N\l__block_legacy_env_params_tl
+\AddToHook{begindocument/before}{
+ \RenewDocumentEnvironment{trivlist}{ !O{} }
+ { \list[#1]{}
+ {
+ \dim_zero:N \leftmargin
+ \dim_zero:N \labelwidth
+ \cs_set_eq:NN \makelabel \use:n
+ }
+ }
+ { \endblockenv }
+}
+\RenewDocumentCommand \newtheorem { m O{#1} m o }
+{
+ \expandafter\@ifdefinable\csname #1\endcsname
+ {
+ \str_if_eq:nnTF{#1}{#2}
+ {
+ \@definecounter {#2}
+ \IfNoValueTF {#4}
+ { % @ynthm
+ \tl_gset:ce { the #2 }
+ {
+ \@thmcounter{#2}
+ }
+ }
+ { % @xnthm
+ \@newctr{#1}[#4]
+ \tl_gset:ce { the #2 }
+ {
+ \expandafter\noexpand\csname the#4\endcsname
+ \@thmcountersep
+ \@thmcounter{#2}
+ }
+ }
+ }
+ { % @othm
+ \@ifundefined{c@#2}
+ { \@nocounterr{#2} }
+ {
+ \tl_gset:cn { the #1 }
+ { \UseName { the #2 } }
+ }
+ }
+ \global\@namedef{#1} { \@thm{#2}{#3} }
+ \global\@namedef{end#1}{ \@endtheorem }
+ }
+}
+\tl_new:N \l__block_thm_current_counter_tl
+\def\@thm#1#2{%
+ \@kernel@refstepcounter{#1}
+ \tl_set:Nn \l__block_thm_current_counter_tl{#1}
+ \@ifnextchar[{\@ythm{#1}{#2}}{\@xthm{#1}{#2}}}
+\def\hyper@nopatch@thm{}
+\def\@begintheorem#1#2{
+ \UseInstance{blockenv}{theorem}{}
+ \tagpdfparaOff
+ \noindent
+ \MakeLinkTarget{\l__block_thm_current_counter_tl}
+ \tag_struct_begin:n{tag=Caption}
+ \group_begin:
+ \bfseries
+ \tag_mc_begin:n {}
+ #1\
+ \tag_mc_end:
+ \tag_struct_begin:n{tag=Lbl}
+ \tag_mc_begin:n {}
+ #2
+ \tag_mc_end:
+ \tag_struct_end:
+ \group_end:
+ \tag_struct_end:
+ \tagpdfparaOn
+ \__block_start_para_structure_unconditionally:n { \PARALABEL }
+ \itshape
+ \hskip\labelsep
+ \ignorespaces
+}
+\def\@opargbegintheorem#1#2#3{
+ \UseInstance{blockenv}{theorem}{}
+ \tagpdfparaOff
+ \noindent
+ \MakeLinkTarget{\l__block_thm_current_counter_tl}
+ \tag_struct_begin:n{tag=Caption}
+ \group_begin:
+ \bfseries
+ \tag_mc_begin:n {}
+ #1\
+ \tag_mc_end:
+ \tag_struct_begin:n{tag=Lbl}
+ \tag_mc_begin:n {}
+ #2
+ \tag_mc_end:
+ \tag_struct_end:
+ \tag_mc_begin:n {}
+ \ (#3)
+ \tag_mc_end:
+ \group_end:
+ \tag_struct_end:
+ \tagpdfparaOn
+ \__block_start_para_structure_unconditionally:n { \PARALABEL }
+ \itshape
+ \hskip\labelsep
+ \ignorespaces
+}
+\def\@endtheorem{\endblockenv}
\DeclareInstance{blockenv}{displayblock}{display}
{
env-name = displayblock,
- tag-name = ,
- tag-class = ,
- tagging-recipe = standard,
- inner-level-counter = ,
level-increase = false,
- setup-code = ,
- block-instance = displayblock ,
- inner-instance = ,
}
\DeclareInstance{blockenv}{displayblockflattened}{display}
{
@@ -989,7 +1252,7 @@
para-instance = raggedleft ,
inner-instance = ,
}
- %
+
\DeclareInstance{blockenv}{quotation}{display}
{
env-name = quotation,
@@ -1014,7 +1277,6 @@
block-instance = quoteblock ,
inner-instance = ,
}
-
\DeclareInstance{blockenv}{theorem}{display}
{
env-name = theorem-like,
@@ -1024,7 +1286,7 @@
inner-level-counter = ,
level-increase = false,
setup-code = ,
- block-instance = displayblock ,
+ block-instance = theoremblock ,
}
\DeclareInstance{blockenv}{verbatim}{display}
{
@@ -1095,7 +1357,6 @@
\DeclareInstance{block}{displayblock-0}{display}
{
leftmargin = 0pt ,
- parindent = 0pt ,
}
\DeclareInstanceCopy{block}{displayblock-1}{displayblock-0}
\DeclareInstanceCopy{block}{displayblock-2}{displayblock-0}
@@ -1106,7 +1367,6 @@
\DeclareInstance{block}{verbatimblock-0}{display}
{
leftmargin = 0pt ,
- parindent = 0pt ,
par-skip = 0pt ,
}
\DeclareInstanceCopy{block}{verbatimblock-1}{verbatimblock-0}
@@ -1129,6 +1389,12 @@
\DeclareInstanceCopy{block}{quotationblock-4}{quotationblock-1}
\DeclareInstanceCopy{block}{quotationblock-5}{quotationblock-1}
\DeclareInstanceCopy{block}{quotationblock-6}{quotationblock-1}
+\DeclareInstance{block}{theoremblock-0}{display}
+ {
+ leftmargin = 0pt ,
+ parindent = \parindent ,
+ par-skip = \parskip ,
+ }
\DeclareInstance{block}{list-1}{display}{
}
\DeclareInstance{block}{list-2}{display}{}
@@ -1154,9 +1420,7 @@
}
\DeclareInstance{list}{description}{std} { item-instance = description }
\DeclareInstance{item}{basic}{std}
- {
- label-align = right ,
- }
+ { label-align = right }
\DeclareInstance{item}{description}{std}
{
label-format = \normalfont\bfseries #1 ,
@@ -1174,309 +1438,42 @@
}
\DeclareInstance{para}{center}{std}
{
+ para-class = center ,
indent-width = 0pt ,
- start-skip = 0pt ,
left-skip = \@flushglue ,
right-skip = \@flushglue ,
end-skip = \z@skip ,
final-hyphen-demerits = 0 ,
cr-cmd = \@centercr ,
- para-class = center ,
}
\DeclareInstance{para}{raggedright}{std}
{
+ para-class = raggedright ,
indent-width = 0pt ,
- start-skip = 0pt ,
left-skip = \z@skip ,
right-skip = \@flushglue ,
end-skip = \z@skip ,
final-hyphen-demerits = 0 ,
cr-cmd = \@centercr ,
- para-class = raggedright ,
}
\DeclareInstance{para}{raggedleft}{std}
{
+ para-class = raggedleft ,
indent-width = 0pt ,
- start-skip = 0pt ,
left-skip = \@flushglue ,
right-skip = \z@skip ,
end-skip = \z@skip ,
final-hyphen-demerits = 0 ,
cr-cmd = \@centercr ,
- para-class = raggedleft ,
}
\DeclareInstance{para}{justify}{std}
{
- start-skip = 0pt ,
- left-skip = \z@skip ,
- right-skip = \z@skip ,
- end-skip = \@flushglue ,
- final-hyphen-demerits = 5000 ,
- cr-cmd = \@normalcr ,
- para-class = justify ,
}
\DeclareRobustCommand\centering {\UseInstance{para}{center}{}}
\DeclareRobustCommand\raggedleft {\UseInstance{para}{raggedleft}{}}
\DeclareRobustCommand\raggedright{\UseInstance{para}{raggedright}{}}
\DeclareRobustCommand\justifying {\UseInstance{para}{justify}{}}
-
\justifying
-\tag_if_active:TF {
- \cs_set:Npn \__block_beginpar_vmode: {
- \__block_debug_typeout:n
- { @endpe = \legacy_if:nTF { @endpe }{true}{false}
- \on@line }
- \legacy_if:nTF { @endpe }
- {
- \legacy_if_gset_false:n { @endpe }
- }
- {
- \int_compare:nNnT \l__tag_block_flattened_level_int < 2
- {
- \__tag_gincr_para_main_begin_int:
- \tag_struct_begin:n
- {
- tag=\l__tag_para_main_tag_tl,
- attribute-class=\l__tag_para_main_attr_class_tl,
- }
- \__tag_para_main_store_struct:
- }
- }
- }
- \cs_set:Npn \__block_beginpar_hmode:N #1
- {
- \tag_mc_end:
- \__tag_gincr_para_end_int:
- \__block_debug_typeout:n{increment~ /P \on@line }
- \bool_if:NT \l__tag_para_show_bool
- { \tag_mc_begin:n{artifact}
- \rlap{\color_select:n{red}\tiny\ \int_use:N\g__tag_para_end_int}
- \tag_mc_end:
- }
- \tag_struct_end:
- \tagpdfparaOff \par \tagpdfparaOn
- }
-\cs_set:Npn \__kernel_displayblock_doendpe: {
- \bool_if:NT \l__tag_para_bool
- {
- \legacy_if:nT { @endpe }
- {
- \__block_debug_typeout:n
- { flattened= \bool_if:NTF
- \l__tag_para_flattened_bool {true}{false}
- \on@line }
- \bool_if:NF \l__tag_para_flattened_bool
- {
- \__block_debug_typeout:n{Structure-end~
- \l__tag_para_main_tag_tl\space after~ displayblock \on@line }
- \__tag_gincr_para_main_end_int:
- \tag_struct_end: %text-unit
- }
- }
- }
-}
-\RemoveFromHook{para/begin}[tagpdf]
-\AddToHook{para/begin}[tagpdf]{
- \bool_if:NT \l__tag_para_bool {
- \legacy_if:nF { @inlabel }
- {
- \__block_start_para_structure:n { \PARALABEL }
- }
- }
-}
-\cs_new_protected:Npn \__block_start_para_structure:n #1 {
- \__block_debug_typeout:n
- { @endpe = \legacy_if:nTF { @endpe }{true}{false}
- \on@line }
- \legacy_if:nF { @endpe }
- {
- \bool_if:NF \l__tag_para_flattened_bool
- {
- \__tag_gincr_para_main_begin_int:
- \tag_struct_begin:n
- {
- tag=\l__tag_para_main_tag_tl,
- attribute-class=\l__tag_para_main_attr_class_tl,
- }
- \__tag_para_main_store_struct:
- }
- }
- \__tag_gincr_para_begin_int:
- \__block_debug_typeout:n{increment~ P \on@line }
- \tag_struct_begin:n
- {
- tag=\l__tag_para_tag_tl
- ,attribute-class=\l__tag_para_attr_class_tl
- }
- \__tag_check_para_begin_show:nn {green}{#1}
- \tag_mc_begin:n {}
-}
-\cs_new_protected:Npn \__block_start_para_structure_unconditionally:n #1 {
- \bool_if:NF \l__tag_para_flattened_bool
- {
- \__tag_gincr_para_main_begin_int:
- \tag_struct_begin:n
- {
- tag=\l__tag_para_main_tag_tl,
- attribute-class=\l__tag_para_main_attr_class_tl,
- }
- \__tag_para_main_store_struct:
- }
- \__tag_gincr_para_begin_int:
- \__block_debug_typeout:n{increment~ P \on@line }
- \tag_struct_begin:n
- {
- tag=\l__tag_para_tag_tl
- ,attribute-class=\l__tag_para_attr_class_tl
- }
- \__tag_check_para_begin_show:nn {green}{#1}
- \tag_mc_begin:n {}
-}
-\RemoveFromHook{para/end}[tagpdf]
-\AddToHook{para/end}
- {
- \bool_if:NT \l__tag_para_bool
- {
- \__tag_gincr_para_end_int:
- \__block_debug_typeout:n{increment~ /P \on@line }
- \tag_mc_end:
- \__tag_check_para_end_show:nn {red}{}
- \tag_struct_end:
- \bool_if:NF \l__tag_para_flattened_bool
- {
- \__tag_gincr_para_main_end_int:
- \tag_struct_end:
- }
- }
- }
-\def\PARALABEL{NP-}
-\cs_set_protected:Npn \para_end: {
- \scan_stop:
- \mode_if_horizontal:TF {
- \mode_if_inner:F {
- \tex_unskip:D
- \hook_use:n{para/end}
- \@kernel@after@para@end
- \mode_if_horizontal:TF {
- \if_int_compare:w 11 = \tex_lastnodetype:D
- \tex_hskip:D \c_zero_dim
- \fi:
- \tex_par:D
- \hook_use:n{para/after}
- \@kernel@after@para@after
- }
- { \msg_error:nnnn { hooks }{ para-mode }{end}{horizontal} }
- }
- }
- {
- \__kernel_endpe_vmode: % should do nothing if no tagging
- \tex_par:D
- }
-}
-\cs_set_eq:NN \par \para_end:
-\cs_set_eq:NN \__blockpar \para_end:
-\cs_set_eq:NN \endgraf \para_end:
-\DeclareRobustCommand*\begin[1]{%
- \UseHook{env/#1/before}%
- \@ifundefined{#1}%
- {\def\reserved@a{\@latex@error{Environment~#1~undefined}\@eha}}%
- {\def\reserved@a{\def\@currenvir{#1}%
- \edef\@currenvline{\on@line}%
- \@execute@begin@hook{#1}%
- \csname #1\endcsname}}%
- \@ignorefalse
- \begingroup
- \__kernel_endpe_vmode:
- \reserved@a}
-\cs_new:Npn \__kernel_endpe_vmode: {
- \if@endpe \ifvmode
- \bool_if:NT \l__tag_para_bool
-{
- \bool_if:NF \l__tag_para_flattened_bool
- {
- \__tag_gincr_para_main_end_int:
- \tag_struct_end:
- }
- \@endpefalse
-}
- \fi \fi
-}
-\cs_set:Npn \__kernel_list_label_after: {
- \bool_if:NT \l__tag_para_bool
- {
- \__block_start_para_structure_unconditionally:n { LI- }
- }
-}
-\cs_new:Npn \__block_inner_begin: {
- \tagstructbegin{tag=\l__block_tag_inner_tag_tl}
-}
-\cs_new:Npn \__block_inner_end: {
- \__block_debug_typeout:n{block-end \on@line}
- \legacy_if:nT { @endpe }
- {
- \__tag_gincr_para_main_end_int:
- \__block_debug_typeout:n{close~ /text-unit \on@line}
- \tagstructend
- }
- \tagstructend % end inner structure
-}
-\tl_new:N \l__tag_L_tag_tl
-\tl_set:Nn \l__tag_L_tag_tl {L}
-
-\tl_new:N\l__tag_L_attr_class_tl
-\tl_set:Nn \l__tag_L_attr_class_tl {list}
-\tag_if_active:T
-{
- \tagpdfsetup
- {
- role/new-attribute = {itemize}{/O /List /ListNumbering/Unordered},
- role/new-attribute = {enumerate}{/O /List /ListNumbering/Ordered},
- role/new-attribute = {description}{/O /List /ListNumbering/Description},
- % default if unknown
- role/new-attribute = {list}{/O /List /ListNumbering/Unordered},
- }
-}
-\def\LItag{LI}
-\cs_set:Npn \__block_list_begin: {
- \tagstructbegin
- {
- tag=\l__tag_L_tag_tl
- ,attribute-class=\l__tag_L_attr_class_tl
- }
-}
-\cs_set:Npn \__block_list_item_begin: { \tagstructbegin{tag=\LItag} }
-\cs_set:Npn \__kernel_list_label_begin: {
- \tagstructbegin{tag=Lbl}
- \tagmcbegin{tag=Lbl}
-}
-\cs_set:Npn \__kernel_list_label_end: {
- \tagmcend % end mc-Lbl or artifact
- \tagstructend % end Lbl
- \tagstructbegin{tag=\LBody}
-}
-\def\LBody{LBody}
-\cs_set:Npn \__block_list_item_end: {
- \legacy_if:nT { @endpe }
- {
- \__tag_gincr_para_main_end_int:
- \tagstructend % text-unit
- }
- \tagstructend \tagstructend % end LBody, LI
-}
-\cs_set:Npn \__block_list_end: {
- \legacy_if:nT { @endpe }
- {
- \__tag_gincr_para_main_end_int:
- \tagstructend % text-unit
- \__block_debug_typeout:n{Structure-end~ P~ at~ list-end \on@line }
- }
- \tagstructend\tagstructend % end LBody, LI
- \tagstructend % end L
-}
-}
-{
- \cs_new:Npn \__block_start_para_structure_unconditionally:n #1 {}
-}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\endinput
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty
index f0844849f0e..465eaf84795 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty
@@ -33,9 +33,8 @@
%%
%%
%% File: latex-lab-firstaid.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabfirstaiddate{2024-08-11}
-\def\ltlabfirstaidversion{0.85e}
-
+\def\ltlabfirstaiddate{2024-11-23}
+\def\ltlabfirstaidversion{0.85i}
\ProvidesPackage {latex-lab-testphase-firstaid} [%
\ltlabfirstaiddate\space v\ltlabfirstaiddate\space
Temporary patches to external packages needed for the tagging project]
@@ -51,7 +50,6 @@
} }
\exp_args:Ncx\str_if_eq:onT{ver@#1.#2}{#3}
}
-\ExplSyntaxOff
\AddToHook{class/amsart/after}
{\def\@author{\authors}}
@@ -59,6 +57,110 @@
{\def\@author{\authors}}
\AddToHook{class/amsproc/after}
{\def\@author{\authors}}
+\AddToHook{class/amsart/after}[latex-lab-testphase-firstaid/amsthm]
+ {\tag_if_active:T{\__tag_firstaid_amsthm:}}
+\AddToHook{class/amsbook/after}[latex-lab-testphase-firstaid/amsthm]
+ {\tag_if_active:T{\__tag_firstaid_amsthm:}}
+\AddToHook{class/amsproc/after}[latex-lab-testphase-firstaid/amsthm]
+ {\tag_if_active:T{\__tag_firstaid_amsthm:}}
+\AddToHook{package/amsthm/after}[latex-lab-testphase-firstaid/amsthm]
+ {\tag_if_active:T{\__tag_firstaid_amsthm:}}
+\cs_new_protected:Npn \__tag_firstaid_amsthm:
+ {
+ \def\@endtheorem{\endblockenv}
+ \RenewDocumentCommand\@thm{mmmO{}}{%
+ \ifhmode\unskip\unskip\par\fi
+ \normalfont
+ \let\thmheadnl\relax
+ \let\thm@swap\@gobble
+ \thm@notefont{\fontseries\mddefault\upshape}%
+ \thm@headpunct{.}% add period after heading
+ \thm@headsep 5\p@ plus\p@ minus\p@\relax
+ \thm@space@setup
+ ##1% style overrides
+ \@topsep \thm@preskip % used by thm head
+ \@topsepadd \thm@postskip % used by \@endparenv
+ \tl_set:Nn \l__block_thm_current_counter_tl{##2}
+ \tl_if_empty:nTF{##2}
+ {
+ \@begintheorem{##3}{}[##4]
+ }
+ {
+ \@kernel@refstepcounter{##2}
+ \@begintheorem{##3}{\csname the##2\endcsname}[##4]
+ }
+ }
+ \def\@begintheorem##1##2[##3]{%
+ \UseInstance{blockenv}{theorem}{beginsep=\thm@preskip}
+ \skip_set:Nn\l__block_topsepadd_skip { \thm@postskip }
+ \tagpdfparaOff
+ \group_begin:
+ \normalfont
+ \the\thm@headfont \thm@indent
+ \tl_if_empty:NTF \l__block_thm_current_counter_tl
+ {\MakeLinkTarget[theorem]{}}
+ {\MakeLinkTarget{\l__block_thm_current_counter_tl}}
+ \@ifempty{##1}
+ {\let\thmname\@gobble}
+ {\def\thmname####1{\tag_mc_begin:n {}####1\tag_mc_end:}}%
+ \@ifempty{##2}
+ {\let\thmnumber\@gobble}
+ {\def\thmnumber####1
+ {\tag_struct_begin:n{tag=Lbl}\tag_mc_begin:n {}
+ ####1
+ \tag_mc_end:\tag_struct_end:}}%
+ \@ifempty{##3}
+ {\let\thmnote\@gobble}
+ {\def\thmnote####1{\tag_mc_begin:n{}####1\tag_mc_end:}}%
+ \tag_struct_begin:n{tag=Caption}
+ \thm@swap\swappedhead\thmhead{##1}{##2}{##3}%
+ \tag_mc_begin:n{}\the\thm@headpunct\tag_mc_end:
+ \tag_struct_end:
+ \thmheadnl % possibly a newline.
+ \hskip\thm@headsep
+ \group_end:
+ \tagpdfparaOn
+ \UseTaggingSocket{para/begin}
+ \ignorespaces}
+ \def\thmhead@plain##1##2##3{%
+ \thmname{##1}
+ \thmnumber{
+ \@ifnotempty{##1}{~}\@upn{##2}
+ }%
+ \thmnote{\pdffakespace\space{\the\thm@notefont(##3)}}
+ }
+ \let\thmhead\thmhead@plain
+ \def\swappedhead##1##2##3{%
+ \thmnumber{##2}
+ \thmname{\@ifnotempty{##2}{\nobreakspace}##1}
+ \thmnote{\pdffakespace\space{\the\thm@notefont(##3)}}
+ }
+ \let\swappedhead@plain=\swappedhead
+ \renewcommand{\openbox}{\leavevmode
+ \hbox to.77778em{\pdf_bdc:nn{Span}{/ActualText<FEFF220E>}%
+ \pdffakespace\hfil\vrule
+ \vbox to.675em{\hrule width.6em\vfil\hrule}%
+ \vrule\hfil\pdf_emc:}}
+ \renewenvironment{proof}[1][\proofname]{\par
+ \pushQED{\qed}%
+ \UseInstance{blockenv}{theorem}{beginsep=6\p@\@plus6\p@}
+ \normalfont
+ \tagpdfparaOff
+ \AddToHookNext{para/begin}
+ {\tag_struct_begin:n{tag=Caption}
+ \tag_mc_begin:n{}%
+ \textit{##1\@addpunct{.}}%
+ \tag_mc_end:
+ \tag_struct_end:
+ \tagpdfparaOn
+ \UseTaggingSocket{para/begin}
+ \pdffakespace\hspace{\labelsep}}
+ \ignorespaces
+ }{%
+ \popQED\endblockenv\par
+ }
+ }
+\ExplSyntaxOff
\AddToHook{package/verse/after}[latex-lab-firstaid]{%
\FirstAidNeededT{verse}{sty}{2014/05/10 v2.4b verse typesetting}%
{%
@@ -87,41 +189,6 @@
}%
}%
}
-\AddToHook{file/blindtext.sty/after}[latex-lab-firstaid]{%
- \FirstAidNeededT{blindtext}{sty}{\blindfiledate\space\blindfileversion\space%
- blindtext-Package}%
- {%
- \renewcommand{\blind@items}{%
- \setcounter{blind@listcount}{1}%
- \loop
- \ifblind@optional
- \ifblind@long
- \item[\blindtext@countitem] \blindtext@text
- \else
- \item[\blindtext@count] \blindtext@item
- \fi
- \else % \blind@optionalfalse
- \ifblind@long
- \item \blindtext@text
- \else
- \item \blindtext@countitem
- \fi
- \fi % \ifblind@optional
- {%
- \loop
- \ifnum\value{blindlistlevel}>\value{blindlist@level}%
- \stepcounter{blind@levelcount}%
- \blind@list[\value{blindlist}]\relax
- \addtocounter{blind@levelcount}{-1}%
- \setcounter{blind@listcount}{1}%
- \repeat
- \expandafter}\if@endpe\@doendpe\fi % <----------changed
- \ifnum\value{blind@listcount}<\value{blindlist}%
- \stepcounter{blind@listcount}%
- \repeat
- }
- }%
- }
\AddToHook{package/cleveref/after}
{
\let\@makefntext\cref@old@makefntext
@@ -130,11 +197,6 @@
\protected@edef\cref@currentlabel{%
[footnote][\arabic{footnote}][\cref@result]%
\p@footnote\@thefnmark}}
- \RenewDocumentCommand\refstepcounter{om}{%
- \IfNoValueTF{#1}%
- {\refstepcounter@noarg{#2}}%
- {\refstepcounter@optarg[#1]{#2}}%
- }%
}
\ExplSyntaxOn
\AddToHook{package/booktabs/after}
@@ -161,6 +223,102 @@
\cr}
}
\ExplSyntaxOff
+
+\ExplSyntaxOn
+\AddToHook{package/fancyvrb/after}
+{
+ \def\FV@LeaveVMode{%
+ \if@noskipsec
+ \leavevmode
+ \else
+ \if@FV@ResetMargins\if@inlabel\leavevmode\fi\fi
+ \fi
+ \ifvmode
+ \@noparlisttrue
+ \__tag_gincr_para_main_begin_int:
+ \tag_struct_begin:n{tag=\l__tag_para_main_tag_tl}
+ \else
+ \bool_set_true:N\l__tag_para_flattened_bool
+ \@noparlistfalse
+ \unskip\par
+ \fi
+ }
+ \def\FV@List#1{%
+ \begingroup
+ \FV@UseKeyValues
+ \FV@LeaveVMode
+ \if@inlabel\else\setbox\@labels=\box\voidb@x\fi
+ \FV@ListNesting{#1}%
+ \FV@ListParameterHook
+ \FV@ListVSpace
+ \FV@SetLineWidth
+ \FV@InterLinePenalty
+ \let\FV@ProcessLine\FV@ListProcessLine@i
+ \FV@CatCodes
+ \FV@FormattingPrep
+ \FV@ObeyTabsInit
+ \cs_if_exist:NT \FV@BeginListFrame
+ {
+ \tag_mc_begin:n{artifact}
+ \FV@BeginListFrame
+ \tag_mc_end:
+ }
+ \tag_struct_begin:n{tag=verbatim}
+ }
+ \def\FV@EndList{%
+ \FV@ListProcessLastLine
+ \tag_struct_end:
+ \cs_if_exist:NT \FV@EndListFrame
+ {
+ \tag_mc_begin:n{artifact}
+ \FV@EndListFrame
+ \tag_mc_end:
+ }
+ \@endparenv
+ \endgroup
+ \@endpetrue
+ }
+ \def\FV@ListProcessLine#1{%
+ \hbox to \hsize{%
+ \kern\leftmargin
+ \hbox to \linewidth{%
+ \cs_if_exist:NT \FV@LeftListNumber
+ {
+ \tag_struct_begin:n{tag=Lbl}
+ \tag_mc_begin:n{}
+ \FV@LeftListNumber
+ \tag_mc_end:
+ \tag_struct_end:
+ }
+ \cs_if_exist:NT \FV@LeftListFrame
+ {
+ \tag_mc_begin:n{artifact}
+ \FV@LeftListFrame
+ \tag_mc_end:
+ }
+ \tag_struct_begin:n{tag=codeline}
+ \tag_mc_begin:n{}%
+ \FancyVerbFormatLine{#1}%
+ \tag_mc_end:
+ \tag_struct_end:\hss
+ \cs_if_exist:NT \FV@RightListFrame
+ {
+ \tag_mc_begin:n{artifact}
+ \FV@RightListFrame
+ \tag_mc_end:
+ }
+ \cs_if_exist:NT \FV@RightListNumber
+ {
+ \tag_struct_begin:n{tag=Lbl}
+ \tag_mc_begin:n{}
+ \FV@RightListNumber
+ \tag_mc_begin:n{}
+ \tag_struct_end:
+ }
+ }
+ \hss}}
+ }
+\ExplSyntaxOff
\endinput
%%
%% End of file `latex-lab-testphase-firstaid.sty'.
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty
index c46df90b4a0..71d5e771574 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-float.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabfloatdate{2024-07-05}
-\def\ltlabfloatversion{0.81e}
+\def\ltlabfloatdate{2024-11-21}
+\def\ltlabfloatversion{0.81g}
\ProvidesExplPackage {latex-lab-testphase-float} {\ltlabfloatdate} {\ltlabfloatversion}
{Code related to the tagging of floats}
\prop_new:N \g__tag_float_sect_prop
@@ -42,8 +42,14 @@
\seq_gput_right:Nn \g__tag_float_types_seq {figure}
\seq_gput_right:Nn \g__tag_float_types_seq {table}
\tl_new:N\@current@float@struct
+\int_new:N\g__tag_float_int
\bool_new:N \g__tag_float_sect_bool
\bool_gset_true:N \g__tag_float_sect_bool
+\cs_new_protected:Npn \__tag_float_init:
+ {
+ \int_gincr:N \g__tag_float_int
+ \tl_set:Ne \@current@float@struct { \int_use:N \g__tag_float_int}
+ }
\cs_new_protected:Npn\__tag_float_init_collect:
{
\bool_if:NT\g__tag_float_sect_bool
@@ -91,12 +97,39 @@
{
split-float .code:n =
{
- \__tag_float_end:
- \__tag_float_begin:
- \MakeLinkTarget*{floatstructure.\int_use:N\c@g__tag_struct_abs_int}
+ \UseTaggingSocket{float/end}
+ \__tag_float_init:
+ \UseTaggingSocket{float/begin}
+ \MakeLinkTarget*{floatstructure.\@current@float@struct}
}
}
-
+\str_if_exist:cF { l__socket_tagsupport/float/begin_plug_str }
+ {
+ \NewSocket{tagsupport/float/hmode/begin}{0}
+ \NewSocket{tagsupport/float/hmode/end}{0}
+ \NewSocket{tagsupport/float/begin}{0}
+ \NewSocket{tagsupport/float/end}{0}
+ }
+\NewSocketPlug {tagsupport/float/hmode/begin}{default}
+ {
+ \__tag_float_stop_par:
+ }
+\AssignSocketPlug{tagsupport/float/hmode/begin}{default}
+\NewSocketPlug{tagsupport/float/hmode/end}{default}
+ {
+ \__tag_float_start_par:
+ }
+\AssignSocketPlug{tagsupport/float/hmode/end}{default}
+\NewSocketPlug{tagsupport/float/begin}{default}
+ {
+ \__tag_float_begin:
+ }
+\AssignSocketPlug{tagsupport/float/begin}{default}
+\NewSocketPlug{tagsupport/float/end}{default}
+ {
+ \__tag_float_end:
+ }
+\AssignSocketPlug{tagsupport/float/end}{default}
\cs_new_protected:Npn \__tag_float_stop_par:
{
\tag_mc_end:
@@ -113,7 +146,6 @@
}
\tag_mc_begin:n{tag=P}
}
-
\cs_new_protected:Npn \__tag_float_begin:
{%
\bool_if:NTF\g__tag_float_sect_bool
@@ -147,7 +179,7 @@
\fi
\ifhmode
\@bsphack
- \@nameuse{__tag_float_stop_par:}% <---end P
+ \UseTaggingSocket{float/hmode/begin}%
\@floatpenalty -\@Mii
\else
\@floatpenalty-\@Miii
@@ -190,7 +222,8 @@
}%
\@fltovf
\fi
- \@nameuse{__tag_float_begin:}%
+ \csname __tag_float_init:\endcsname
+ \UseTaggingSocket{float/begin}%
\global \setbox\@currbox
\color@vbox
\normalcolor
@@ -198,11 +231,11 @@
\hsize\columnwidth
\@parboxrestore
\@floatboxreset
- \MakeLinkTarget*{floatstructure.\number\value{g__tag_struct_abs_int}}%
+ \MakeLinkTarget*{\@captype.struct.\@current@float@struct}%
}%
\def\end@float{%
\@endfloatbox
- \@nameuse{__tag_float_end:}%
+ \UseTaggingSocket{float/end}%
\ifnum\@floatpenalty <\z@
\@largefloatcheck
\@cons\@currlist\@currbox
@@ -214,14 +247,14 @@
\penalty\@floatpenalty
\else
\vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@Esphack
- \@nameuse{__tag_float_start_par:}% restart P safe here??
+ \UseTaggingSocket{float/hmode/end}%
\fi
\fi
}
\def\end@dblfloat{%
\if@twocolumn
\@endfloatbox
- \@nameuse{__tag_float_end:}%
+ \UseTaggingSocket{float/end}%
\ifnum\@floatpenalty <\z@
\@largefloatcheck
\global\dp\@currbox1sp %
@@ -234,7 +267,7 @@
\penalty\@floatpenalty
\else
\vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@Esphack
- \@nameuse{__tag_float_start_par:}% restart P safe here??
+ \UseTaggingSocket{float/hmode/end}%
\fi
\fi
\else
@@ -243,7 +276,55 @@
}%
\ExplSyntaxOn
\def\hyper@nopatch@caption{}
-\let\@kernel@refstepcounter\refstepcounter %as long it is not in the kernel
+\str_if_exist:cF { l__socket_tagsupport/caption/begin_plug_str }
+ {
+ \NewSocket{tagsupport/caption/begin}{1}
+ \NewSocket{tagsupport/caption/end}{0}
+ \NewSocket{tagsupport/caption/label/begin}{0}
+ \NewSocket{tagsupport/caption/label/end}{0}
+ }
+\str_if_exist:cF { l__socket_tagsupport/para/begin_plug_str }
+ {
+ \NewSocket{tagsupport/para/begin}{0}
+ \NewSocket{tagsupport/para/end}{0}
+ }
+\NewSocket{caption/label}{1}
+\NewSocketPlug{caption/label}{kernel}
+ {
+ #1:~
+ }
+\AssignSocketPlug{caption/label}{kernel}
+\NewSocketPlug {tagsupport/caption/begin}{default}
+ {
+ \tl_if_empty:eTF {#1}
+ {
+ \tag_struct_begin:n{tag=Caption,firstkid}
+ }
+ {
+ \tag_struct_begin:n{tag=Caption,parent=#1,firstkid}
+ }
+ \bool_set_true:N \l__tag_para_flattened_bool
+ }
+\AssignSocketPlug{tagsupport/caption/begin}{default}
+\NewSocketPlug {tagsupport/caption/end}{default}
+ {
+ \tag_struct_end:
+ }
+\AssignSocketPlug{tagsupport/caption/end}{default}
+\NewSocketPlug {tagsupport/caption/label/begin}{default}
+ {
+ \tagpdfparaOff
+ \tag_struct_begin:n{tag=Lbl}
+ \tag_mc_begin:n{}
+ }
+\AssignSocketPlug{tagsupport/caption/label/begin}{default}
+\NewSocketPlug {tagsupport/caption/label/end}{default}
+ {
+ \tag_mc_end:
+ \tag_struct_end:
+ \tagpdfparaOn
+ }
+\AssignSocketPlug{tagsupport/caption/label/end}{default}
\def\caption{%
\ifx\@captype\@undefined
\@latex@error{\noexpand\caption\c_space_tl outside~float}\@ehd
@@ -255,52 +336,39 @@
}
{
\@kernel@refstepcounter\@captype
- \xdef\@currentHref{floatstructure.\@current@float@struct}%
+ \xdef\@currentHref{\@captype.struct.\@current@float@struct}%
}
\expandafter\@firstofone
\fi
{\@dblarg{\@caption\@captype}}%
}
-\providecommand\theHg__tag_struct_abs_int{\int_use:N\c@g__tag_struct_abs_int}
-
\AddToHook{begindocument}
{
\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
- \tag_stop:n{caption}
+ \SuspendTagging{\@makecaption}
\sbox\@tempboxa{#1:~#2}%
- \tag_start:n{caption}
- \tagtool{para=false}
- \tl_if_empty:NT \@current@float@struct
- { \tl_set:Ne \@current@float@struct {\tag_get:n{struct_num}} }
- \tag_struct_begin:n{tag=Caption,parent=\@current@float@struct}
- \tag_if_active:T
- {
- \seq_gpop_right:cN {g__tag_struct_kids_\@current@float@struct _seq}\l__tag_tmpa_tl
- \seq_gput_left:cV {g__tag_struct_kids_\@current@float@struct _seq}\l__tag_tmpa_tl
- }
+ \ResumeTagging{\@makecaption}
+ \UseTaggingSocket{caption/begin}{\@current@float@struct}
\ifdim \wd\@tempboxa >\hsize
- \tag_struct_begin:n{tag=Lbl}
- \tag_mc_begin:n{}
- #1:~
- \tag_mc_end:
- \tag_struct_end:
- \tag_mc_begin:n{}
- #2\par
- \tag_mc_end:
+ \UseTaggingSocket{caption/label/begin}
+ \UseSocket{caption/label}{#1}
+ \UseTaggingSocket{caption/label/end}
+ \UseTaggingSocket{para/begin}
+ #2
+ \par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil
- \tag_struct_begin:n{tag=Lbl}
- \tag_mc_begin:n{}
- #1:~
- \tag_mc_end:
- \tag_struct_end:
- \tag_mc_begin:n{}
+ \UseTaggingSocket{caption/label/begin}
+ \UseSocket{caption/label}{#1}
+ \UseTaggingSocket{caption/label/end}
+ \UseTaggingSocket{para/begin}
#2
- \tag_mc_end:\hfil}%
+ \UseTaggingSocket{para/end}
+ \hfil}%
\fi
- \tag_struct_end: %caption
+ \UseTaggingSocket{caption/end}
\vskip\belowcaptionskip}
}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty
index 1f3e7d790b8..942f2deeddf 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-graphic.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabgraphicdate{2024-07-05}
-\def\ltlabgraphicversion{0.80d}
+\def\ltlabgraphicdate{2024-09-18}
+\def\ltlabgraphicversion{0.80e}
\ProvidesExplPackage {latex-lab-testphase-graphic} {\ltlabgraphicdate} {\ltlabgraphicversion}
{Code related to the tagging of graphics}
\RequirePackage{l3opacity}
@@ -222,7 +222,7 @@
\bool_set_true:N \l__tag_graphic_artifact_bool
\bool_set_false:N \l__tag_graphic_BBox_bool
}
- {false}{\tag_stop:}
+ {false}{\tag_suspend:n{Gin}}
}
{\tl_set:Nn\l__tag_graphic_struct_tl{#1}}
}
@@ -257,7 +257,7 @@
\bool_set_true:N \l__tag_graphic_artifact_bool
\bool_set_false:N \l__tag_graphic_BBox_bool
}
- {false}{\tag_stop:}
+ {false}{\tag_suspend:n{picture}}
}
{\tl_set:Nn\l__tag_graphic_struct_tl{#1}}
}
@@ -657,7 +657,7 @@
\@defaultunitsset\@tempdimc{#1}\unitlength
\Gin@tag@struct@begin
\setbox\@picbox\hb@xt@\@tempdimc\bgroup
- \tag_stop: %do not tag inside the picture box
+ \tag_suspend:n{\@picture} %do not tag inside the picture box
\@defaultunitsset\@tempdimc{#3}\unitlength
\hskip -\@tempdimc
\@defaultunitsset\@tempdimc{#4}\unitlength
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty
index 15c09589bf1..0f8001ce861 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty
@@ -34,8 +34,8 @@
%%
%% File: latex-lab-marginpar.dtx
%%
-\def\ltlabmarginpardate{2024-08-06}
-\def\ltlabmarginparversion{0.85c}
+\def\ltlabmarginpardate{2024-09-18}
+\def\ltlabmarginparversion{0.85d}
\ProvidesExplPackage {latex-lab-testphase-marginpar} {\ltlabmarginpardate} {\ltlabmarginparversion}
{Changes related to the tagging of the margin notes}
@@ -93,9 +93,9 @@
\long\def\@ympar#1{%
\@savemarbox\@marbox{#1}%
\global\setbox\@currbox\copy\@marbox
- \tag_stop:
+ \tag_suspend:n{\@ympar}
\@xympar
- \tag_start:}
+ \tag_resume:n{\@ympar}}
\long\def\@xmpar[#1]#2{%
\int_gincr:N\g__kernel_marginpar_int
\property_if_recorded:eTF { tag_marginpar-opt-\int_use:N\g__kernel_marginpar_int }
@@ -104,21 +104,21 @@
\property_record:ee
{ tag_marginpar-opt-\int_use:N\g__kernel_marginpar_int }{page}
}%
- \tag_stop:
+ \tag_suspend:n{\@xmpar}
\@savemarbox\@currbox{#2}%
- \tag_start:
+ \tag_resume:n{\@xmpar}
}
{
\@savemarbox\@currbox{#2}%
- \tag_stop:
+ \tag_suspend:n{\@xmpar}
\@savemarbox\@marbox{#1
\property_record:ee
{ tag_marginpar-opt-\int_use:N\g__kernel_marginpar_int }{page}}
- \tag_start:
+ \tag_resume:n{\@xmpar}
}
- \tag_stop:
+ \tag_suspend:n{\@xmpar}
\@xympar
- \tag_start:
+ \tag_resume:n{\@xmpar}
}
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty
index c1a3421dd2e..a82944e5d10 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty
@@ -34,8 +34,8 @@
%%
%% File: latex-lab-minipage.dtx
%%
-\def\ltlabminipagedate{2024-08-08}
-\def\ltlabminipageversion{0.81d}
+\def\ltlabminipagedate{2024-09-18}
+\def\ltlabminipageversion{0.81e}
\ProvidesExplPackage {latex-lab-testphase-minipage}
{\ltlabminipagedate} {\ltlabminipageversion}
{Code related to the tagging of minipages and parboxes}
@@ -78,9 +78,9 @@
\@minipagefalse %% added 24 May 89
\color@endgroup
\egroup
- \tag_stop:n{minipage}
+ \tag_suspend:n{minipage}
\expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}%
- \tag_start:n{minipage}
+ \tag_resume:n{minipage}
\UseTaggingSocket{minipage/after} %new end ...
}
\long\def\@iiiparbox#1#2[#3]#4#5{%
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty
index 38bc8993446..1a46498b353 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or-1.sty
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-new-or-1.dtx (C) Copyright 2020-2024 Frank Mittelbach
-\def\ltlabneworIdate{2023-07-20}
-\def\ltlabneworIversion{0.85a}
+\def\ltlabneworIdate{2024-11-12}
+\def\ltlabneworIversion{0.85b}
\ProvidesPackage{latex-lab-testphase-new-or-1}
[\ltlabneworIdate\space v\ltlabneworIversion\space
Temporary output patches for tagging and better link support]
@@ -43,7 +43,7 @@
\providecommand\@kernel@before@foot{}
\providecommand\@kernel@after@head{}
\providecommand\@kernel@after@foot{}
-\providecommand\@mult@ptagging@hook{}% multicol
+\providecommand\@mult@ptagging@hook{}% should be replaced with a socket, eventually
\patchcmd\@outputpage
{\vfil\color@hbox\normalcolor\hb@xt@\textwidth{\@thehead}\color@endbox}
@@ -84,16 +84,6 @@
\fi
\global \maxdepth \@maxdepth}
}
-\AddToHook{package/multicol/after}
- {% multicol needs later loading
- \patchcmd\page@sofar
- {\global\dimen\tw@\dp\z@}%
- {%
- \global\dimen\tw@\dp\z@
- \@mult@ptagging@hook
- }%
- {\typeout{Patching \string\page@sofar\space for tagging}}{\PATCHerror}%
-}
\ExplSyntaxOn
\def\@kernel@before@head{\pdfannot_link_off:}
\def\@kernel@before@foot{\pdfannot_link_off:}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty
index dd519d5f261..b0c5a1c2fd4 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty
@@ -33,16 +33,19 @@
%%
%%
%% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabsecdate{2024-07-05}
-\def\ltlabsecversion{0.84c}
+\def\ltlabsecdate{2024-10-04}
+\def\ltlabsecversion{0.84f}
\ProvidesExplPackage {latex-lab-testphase-sec} {\ltlabsecdate} {\ltlabsecversion}
{Code related to the tagging of sectioning commands}
\RequirePackage{latex-lab-kernel-changes}
\seq_new:N \g__tag_sec_stack_seq
-\seq_gpush:Nn\g__tag_sec_stack_seq {{Document}{-100}}
+\seq_gpush:Nn\g__tag_sec_stack_seq {{Document}{-100}{2}}
+\cs_new:Npn \__tag_get_data_current_Sect:
+ {
+ \exp_last_unbraced:Ne\use_iii:nnn{\seq_item:Nn\g__tag_sec_stack_seq{1}}
+ }
\bool_new:N \l__tag_sec_Sect_bool
\bool_set_true:N\l__tag_sec_Sect_bool
-
\cs_new_protected:Npn\__tag_sec_begin:nn #1 #2 %#1 level #2 keyval
{
\tag_struct_begin:n
@@ -50,7 +53,8 @@
tag= {\int_compare:nNnTF {#1}={-1}{Part}{Sect}}
,#2
}
- \seq_gpush:Ne \g__tag_sec_stack_seq {{\g__tag_struct_tag_tl}{\int_eval:n{#1}}}
+ \seq_gpush:Ne \g__tag_sec_stack_seq
+ {{\g__tag_struct_tag_tl}{\int_eval:n{#1}}{\g__tag_struct_stack_current_tl}}
}
\msg_new:nnn { tag } {wrong-sect-nesting}
{
@@ -61,12 +65,12 @@
\cs_new_protected:Npn\__tag_sec_end:n #1 % #1 level
{
\seq_get:NN \g__tag_sec_stack_seq \l__tag_tmpa_tl
- \int_compare:nNnT {#1}<{\exp_last_unbraced:NV\use_ii:nn\l__tag_tmpa_tl+1}
+ \int_compare:nNnT {#1}<{\exp_last_unbraced:NV\use_ii:nnn\l__tag_tmpa_tl+1}
{
\seq_get:NN\g__tag_struct_tag_stack_seq \l__tag_tmpb_tl
\exp_args:Nee
\tl_if_eq:nnTF
- {\exp_last_unbraced:NV\use_i:nn\l__tag_tmpa_tl}
+ {\exp_last_unbraced:NV\use_i:nnn\l__tag_tmpa_tl}
{\exp_last_unbraced:NV\use_i:nn\l__tag_tmpb_tl}
{
\seq_gpop:NN \g__tag_sec_stack_seq \l__tag_tmpa_tl
@@ -75,7 +79,7 @@
}
{
\msg_warning:nnee {tag}{wrong-sect-nesting}
- { \exp_last_unbraced:NV\use_i:nn \l__tag_tmpa_tl }
+ { \exp_last_unbraced:NV\use_i:nnn \l__tag_tmpa_tl }
{ \exp_last_unbraced:NV\use_i:nn \l__tag_tmpb_tl }
}
}
@@ -187,7 +191,7 @@
\IfBooleanTF
{#1}
{ \@spart {#3} }
- { \@part [#2]{#3} }
+ { \@part [{#2}]{#3} }
\tag_tool:n {sec-stop-part}
}
}
@@ -219,7 +223,7 @@
\IfBooleanTF
{#1}
{ \@schapter {#3} }
- { \@chapter [#2]{#3} }
+ { \@chapter [{#2}]{#3} }
\tag_tool:n {sec-stop-chapter}
}
\RenewDocumentCommand\part{ s O{#3} m }
@@ -257,7 +261,7 @@
\IfBooleanTF
{#1}
{ \@spart {#3} }
- { \@part [#2]{#3} }
+ { \@part [{#2}]{#3} }
\tag_tool:n{sec-stop-part}
}
}
@@ -303,9 +307,9 @@
{\tagmcbegin{tag=Lbl}}
{#1}
}
- \tag_stop:n{hangfrom}
+ \tag_suspend:n{hangfrom}
\hangindent \wd\@tempboxa\noindent
- \tag_start:n{hangfrom}
+ \tag_resume:n{hangfrom}
\tagmcbegin{}\box\@tempboxa\tagmcend\tagstructend\tagmcbegin{}}
\cs_new_protected:Npn \@kernel@tag@svsec
{
@@ -329,7 +333,7 @@
\@tempskipa #5\relax
\ifdim \@tempskipa>\z@
\begingroup
- \tagtool{para-flattened=true} % or \bool_set_true\l__tag_para_flattened_bool
+ \tagtool{para-flattened=true} % or \bool_set_true\l_@@_para_flattened_bool
#6{%
\ifnum #2>\c@secnumdepth
\@hangfrom {\hskip #3\relax\@svsec}%
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty
index 16c927d19c9..91a750b20a5 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtbldate{2024-08-10}
-\def\ltlabtblversion{0.85m}
+\def\ltlabtbldate{2024-09-18}
+\def\ltlabtblversion{0.85n}
\ProvidesExplPackage {latex-lab-testphase-table} {\ltlabtbldate} {\ltlabtblversion}
{Code related to the tagging of tables}
\RequirePackage{array}
@@ -647,9 +647,9 @@
}
\hbox to\z@{\hss\parbox[t]\LTcapwidth{%
\reset@font
- \tag_stop:n{caption}
+ \tag_suspend:n{caption}
\sbox\@tempboxa{#1{#2:~}#3}%
- \tag_start:n{caption}
+ \tag_resume:n{caption}
\ifdim\wd\@tempboxa>\hsize
#1{#2:~}#3%
\else
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty
index 749ab3aa08a..2eea229b6d5 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-text.sty
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-text.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtextdate{2023-07-20}
-\def\ltlabtextversion{0.85a}
+\def\ltlabtextdate{2024-09-18}
+\def\ltlabtextversion{0.85b}
\ProvidesExplPackage {latex-lab-testphase-text} {\ltlabtextdate} {\ltlabtextversion}
{Code related to the tagging of various small text commands}
@@ -45,11 +45,11 @@
\tag_mc_end_push:
\tag_struct_begin:n{tag=Span,actualtext=LaTeX}
\tag_mc_begin:n{}
- \tag_stop:n{LaTeX}
+ \tag_suspend:n{LaTeX}
}
\AddToHook{cmd/LaTeX/after}
{
- \tag_start:n{LaTeX}
+ \tag_resume:n{LaTeX}
\tag_mc_end:
\tag_struct_end:
\tag_mc_begin_pop:n{}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty
index be424c27c0a..558041fccc4 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-toc.sty
@@ -36,8 +36,8 @@
%%
%%
%% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabtocdate{2024-07-11}
-\def\ltlabtocversion{0.85c}
+\def\ltlabtocdate{2024-09-26}
+\def\ltlabtocversion{0.85e}
\ProvidesExplPackage {latex-lab-testphase-toc} {\ltlabtocdate} {\ltlabtocversion}
{ Code related to the tagging of toc-like lists}
%% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2024 LaTeX Project
@@ -286,45 +286,26 @@
\fi}
}
%% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabtocdate{2024-07-11}
-\def\ltlabtocversion{0.85c}
+\def\ltlabtocdate{2024-09-26}
+\def\ltlabtocversion{0.85e}
\tl_new:N \l__tag_toc_tmpa_tl
-\AddToHook{cmd/refstepcounter/after}
- {
- \tl_if_blank:VF \@currentHref
- {
- \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
- }
- }
-\AddToHook{cmd/H@refstepcounter/after}
- {
- \tl_if_blank:VF \@currentHref
- {
- \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
- }
- }
-\msg_new:nnn { tag } {struct-dest-unknown}
- {
- Destination~#1~has~no~related~structure.\\
- /Ref~for~structure~#2~not~updated
- }
-
-\cs_new_protected:Npn \g__tag_struct_ref_by_dest:
+\str_if_exist:cF { l__socket_tagsupport/recordtarget_plug_str }
{
- \prop_map_inline:Nn\g__tag_struct_ref_by_dest_prop
- {
- \prop_get:NnNTF \g__tag_struct_dest_num_prop {##2} \l__tag_tmpa_tl
- {
- \__tag_struct_gput_data_ref:ee
- { ##1 }
- { \tag_struct_object_ref:e{ \l__tag_tmpa_tl }}
- }
- {
- \msg_warning:nnnn {tag}{struct-dest-unknown}{##2}{ ##1}
- }
- }
- }
-\hook_gput_code:nnn {tagpdf/finish/before}{tagpdf/struct/Ref}{\g__tag_struct_ref_by_dest:}
+ \AddToHook{cmd/refstepcounter/after}
+ {
+ \tl_if_blank:VF \@currentHref
+ {
+ \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
+ }
+ }
+ \AddToHook{cmd/H@refstepcounter/after}
+ {
+ \tl_if_blank:VF \@currentHref
+ {
+ \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
+ }
+ }
+ }
\int_new:N \g__tag_toc_level_int
\seq_new:N \g__tag_toc_stack_seq
@@ -395,9 +376,9 @@
\int_gset:Nn \g__tag_toc_level_int { \use:c{toclevel@#1} }
\group_begin:
\text_declare_expand_equivalent:Nn \numberline \use_none:n
- \exp_args:Ne \tag_struct_begin:n{tag=TOCI,title={\text_purify:n {#2}}}
- \prop_gput:Nee \g__tag_struct_ref_by_dest_prop
- { \tag_get:n {struct_num} }{#4}
+ \exp_args:Ne
+ \tag_struct_begin:n{tag=TOCI,title={\text_purify:n {#2}}}
+ \tag_struct_gput:nnn { \tag_get:n {struct_num} }{ref_dest}{#4}
\seq_gpush:Ne \g__tag_toc_stack_seq {{TOCI}\use:c{toclevel@#1}}
\group_end:
}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx
index c6b213b9337..0c55110f9d5 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx
@@ -34,8 +34,8 @@
%%
%% File: latex-lab-marginpar.dtx
%%
-\def\ltlabmarginpardate{2024-08-06}
-\def\ltlabmarginparversion{0.85c}
+\def\ltlabmarginpardate{2024-09-18}
+\def\ltlabmarginparversion{0.85d}
\ProvidesFile{marginpar-latex-lab-testphase.ltx}
[\ltlabmarginpardate\space v\ltlabmarginparversion\space
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx
index 086e1f9cf5b..b11a23987c1 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx
@@ -34,8 +34,8 @@
%%
%% File: latex-lab-minipage.dtx
%%
-\def\ltlabminipagedate{2024-08-08}
-\def\ltlabminipageversion{0.81d}
+\def\ltlabminipagedate{2024-09-18}
+\def\ltlabminipageversion{0.81e}
\ProvidesFile{minipage-latex-lab-testphase.ltx}
[\ltlabminipagedate\space v\ltlabminipageversion
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx
index 915a065c5e5..b4e311b2e2a 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-1-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-new-or-1.dtx (C) Copyright 2020-2024 Frank Mittelbach
-\def\ltlabneworIdate{2023-07-20}
-\def\ltlabneworIversion{0.85a}
+\def\ltlabneworIdate{2024-11-12}
+\def\ltlabneworIversion{0.85b}
\ProvidesFile{new-or-1-latex-lab-testphase.ltx}
[\ltlabneworIdate\space v\ltlabneworIversion\space
latex-lab wrapper new-or-1]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx
index 3f9a516c0a2..fa037aca3bf 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabsecdate{2024-07-05}
-\def\ltlabsecversion{0.84c}
+\def\ltlabsecdate{2024-10-04}
+\def\ltlabsecversion{0.84f}
\ProvidesFile{sec-latex-lab-testphase.ltx}
[\ltlabsecdate\space v\ltlabsecversion\space latex-lab wrapper sec]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx
index 8497b289f0a..eee19904436 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtbldate{2024-08-10}
-\def\ltlabtblversion{0.85m}
+\def\ltlabtbldate{2024-09-18}
+\def\ltlabtblversion{0.85n}
\ProvidesFile{table-latex-lab-testphase.ltx}
[\ltlabtbldate\space v\ltlabtblversion\space latex-lab wrapper table]
\RequirePackage{latex-lab-testphase-table}
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx
index c3f0bfec1c0..093b38ef924 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtbldate{2024-08-10}
-\def\ltlabtblversion{0.85m}
+\def\ltlabtbldate{2024-09-18}
+\def\ltlabtblversion{0.85n}
\ProvidesFile{tabular-latex-lab-testphase.ltx}
[\ltlabtbldate\space v\ltlabtblversion\space latex-lab wrapper tabular]
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx
index 2615850378c..290c185f0d2 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/text-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-text.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtextdate{2023-07-20}
-\def\ltlabtextversion{0.85a}
+\def\ltlabtextdate{2024-09-18}
+\def\ltlabtextversion{0.85b}
\ProvidesFile{text-latex-lab-testphase.ltx}
[\ltlabtextdate\space v\ltlabtextversion\space
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx
index 2bbf4bd10dc..8985e57bc7b 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/latex-lab/toc-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabtocdate{2024-07-11}
-\def\ltlabtocversion{0.85c}
+\def\ltlabtocdate{2024-09-26}
+\def\ltlabtocversion{0.85e}
\ProvidesFile{toc-latex-lab-testphase.ltx}
[\ltlabtocdate\space v\ltlabtocversion latex-lab wrapper toc]
diff --git a/Master/texmf-dist/tex/latex-dev/tools/.tex b/Master/texmf-dist/tex/latex-dev/tools/.tex
index ff0d77e6fc4..a6b7144e01d 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/.tex
+++ b/Master/texmf-dist/tex/latex-dev/tools/.tex
@@ -1,5 +1,5 @@
%%
-%% This is file `.tex',
+%% This is file `rename-to-empty-base.tex',
%% generated with the docstrip utility.
%%
%% The original source files were:
@@ -38,4 +38,4 @@
\message{File ignored}
\endinput
%%
-%% End of file `.tex'.
+%% End of file `rename-to-empty-base.tex'.
diff --git a/Master/texmf-dist/tex/latex-dev/tools/array.sty b/Master/texmf-dist/tex/latex-dev/tools/array.sty
index 52b71b3b563..a190c9f7714 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/array.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/array.sty
@@ -47,7 +47,7 @@
\NeedsTeXFormat{LaTeX2e}[2024/06/01]
\ProvidesPackage{array}
- [2024/07/13 v2.6e Tabular extension package (FMi)]
+ [2024/10/17 v2.6g Tabular extension package (FMi)]
%%
\ExplSyntaxOn
@@ -96,15 +96,16 @@
\def\save@decl{\toks\count@ \expandafter{\@nextchar}}
\def\insert@column{%
\UseTaggingSocket{tbl/cell/begin}%
- \the@toks \the \@tempcnta
- \ignorespaces \@sharp \textonly@unskip
+ \@protected@firstofone { \the@toks \the \@tempcnta \ignorespaces }
+ \@sharp \textonly@unskip
\the@toks \the \count@ \relax
\UseTaggingSocket{tbl/cell/end}%
}
\protected\def\textonly@unskip{\ifhmode\unskip\fi}
+\protected\long\def\@protected@firstofone#1{#1}
\def\insert@pcolumn{%
\UseTaggingSocket{tbl/pcell/begin}%
- \the@toks \the \@tempcnta
+ \the@toks \the \@tempcnta \relax
\ignorespaces \@sharp \unskip
\the@toks \the \count@ \relax
\UseTaggingSocket{tbl/pcell/end}%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/calc.sty b/Master/texmf-dist/tex/latex-dev/tools/calc.sty
index 42526027853..dfb61a5b942 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/calc.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/calc.sty
@@ -47,7 +47,7 @@
%% the normal LaTeX bug report address.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{calc}
- [2023/07/08 v4.3 Infix arithmetic (KKT,FJ)]
+ [2024/11/03 v4.3a Infix arithmetic (KKT,FJ)]
\def\calc@assign@generic#1#2#3#4{\let\calc@A#1\let\calc@B#2%
\calc@open(#4!%
\global\calc@A\calc@B\endgroup#3\calc@B}
@@ -277,7 +277,8 @@
{`#1' invalid at this point}%
{I expected to see one of: + - * / )}}
\def\@settodim#1#2#3{%
- \setbox\@tempboxa\hbox{{#3}}%
+ \setbox\@tempboxa\hbox
+ {{\SuspendTagging{\@settodim}#3\ResumeTagging{\@settodim}}}%
\dimen@ii=\z@
\@tf@r\reserved@a #1\do{%
\advance\dimen@ii\reserved@a\@tempboxa}%
diff --git a/Master/texmf-dist/tex/latex-dev/tools/longtable.sty b/Master/texmf-dist/tex/latex-dev/tools/longtable.sty
index 3f7bc19ede1..0bc422eb465 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/longtable.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/longtable.sty
@@ -43,7 +43,7 @@
\DeclareCurrentRelease{}{2020-02-07}
\ProvidesPackage{longtable}
- [2024-07-06 v4.21 Multi-page Table package (DPC)]
+ [2024-10-27 v4.22 Multi-page Table package (DPC)]
\def\LT@err{\PackageError{longtable}}
\def\LT@warn{\PackageWarning{longtable}}
\def\LT@final@warn{%
@@ -270,7 +270,9 @@
\ifvoid\LT@foot\else
\global\advance\vsize\ht\LT@foot
\global\advance\@colroom\ht\LT@foot
- \dimen@\pagegoal\advance\dimen@\ht\LT@foot\pagegoal\dimen@
+ \ifdim\pagegoal<\maxdimen
+ \dimen@\pagegoal\advance\dimen@\ht\LT@foot\pagegoal\dimen@
+ \fi
\fi
\endgroup
\global\@mparbottom\z@
diff --git a/Master/texmf-dist/tex/latex-dev/tools/multicol-2024-05-23.sty b/Master/texmf-dist/tex/latex-dev/tools/multicol-2024-05-23.sty
new file mode 100644
index 00000000000..ebe9ea853a8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex-dev/tools/multicol-2024-05-23.sty
@@ -0,0 +1,1144 @@
+%%
+%% This is file `multicol.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% multicol.dtx (with options: `package,badness,check,marktrace,nobalance')
+%%
+%% This is a generated file.
+%%
+%% The source is maintained by the LaTeX Project team and bug
+%% reports for it can be opened at https://latex-project.org/bugs/
+%% (but please observe conditions on bug reports sent to that address!)
+%%
+%% Copyright (C) 1993-2024
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
+%%
+%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
+%% --------------------------------------------------------------------------
+%%
+%% It 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 2005/12/01 or later.
+%%
+%% This file may only be distributed together with a copy of the LaTeX
+%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle'
+%% without such generated files.
+%%
+%% The list of all files belonging to the LaTeX `Tools Bundle' is
+%% given in the file `manifest.txt'.
+%%
+%% Package `multicol' to use with LaTeX2e
+%% Copyright 1989-2023 Frank Mittelbach
+%%
+%% In addition to the terms of LPPL any distributed version
+%% (unchanged or modified) of multicol has to keep the statement
+%% about the moral obligation for using multicol. In case of major
+%% changes where this would not be appropriate the author of the
+%% changed version should contact the copyright holder.
+%%
+%%
+%% Moral obligation for using multicol:
+%% ------------------------------------
+%%
+%% Users of multicol who wish to include or use multicol or a modified
+%% version in a proprietary and commercially market product are asked
+%% under certain conditions (see below) for the payment of a license
+%% fee. The size of this fee is to be determined, in each instance,
+%% by the commercial user, depending on his/her judgment of the value of
+%% multicol for his/her product.
+%%
+%%
+%% The conditions for this are as follows:
+%%
+%% The producer of a proprietary and commercially market product
+%% that involves typesetting using multicol is asked to determine
+%% the value of a license fee for using multicol if
+%%
+%% - the product is a document and the producer has decided to
+%% include multicol to typeset (parts of) the document or has
+%% directed the author of the document to include multicol (for
+%% example, by providing a class file to be used by the author)
+%%
+%% - the product is a LaTeX class or package that includes multicol
+%%
+%%
+%% There is no moral obligation in case
+%%
+%% - the product is a document but producer has not directed
+%% the author to include multicol (in that case the moral obligation
+%% lies with the author of the document)
+%%
+%% - the product does not involve typesetting, e.g., consists, for
+%% example, of distributing multicol and its documentation.
+%%
+%% - the product is not proprietary, i.e., is made available as free
+%% software itself (which doesn't prohibit its commercial marketing)
+%%
+%% - multicol is used for non-commercial purposes
+%%
+%%
+%% Determining a license fee might result in a license fee of zero
+%% (i.e., no payment) in case a producer has determined that the use
+%% of multicol has no enhancing effect on the product. This is a
+%% plausible scenario, i.e., in the above two cases the producer is
+%% only asked to evaluate the value of multicol for the product
+%% not for the payment of a license fee per se (which might or might
+%% not follow from this evaluation).
+%%
+%% The license fee, if any, can be payed either to the LaTeX fund
+%% (see ltx3info.txt in the base LaTeX distribution) or to the author of
+%% the program who can be contacted at
+%%
+%% Frank.Mittelbach@latex-project.org
+%%
+
+\DeclareRelease{}{1994-06-01}{multicol-2017-04-11.sty}
+\DeclareRelease{}{2017-04-11}{multicol-2017-04-11.sty}
+\DeclareRelease{v1.8}{2019-10-01}{multicol-2019-10-01.sty}
+\DeclareCurrentRelease{}{2021-11-15}
+
+\ProvidesPackage{multicol}
+ [2024/05/23 v1.9h multicolumn formatting (FMi)]
+\DeclareOption{twocolumn}
+ {\PackageWarning{multicol}{May not work
+ with the twocolumn option}}
+\newcount\c@tracingmulticols
+\DeclareOption{errorshow}
+ {\c@tracingmulticols\z@}
+\DeclareOption{infoshow}
+ {\c@tracingmulticols\@ne}
+\DeclareOption{balancingshow}
+ {\c@tracingmulticols\tw@}
+\DeclareOption{markshow}
+ {\c@tracingmulticols\thr@@}
+\DeclareOption{debugshow}
+ {\c@tracingmulticols5\relax}
+\let\mc@gridwarn\maxdimen
+\DeclareOption{grid}
+ {\def\mc@gridwarn{\@maxdepth}}
+\DeclareOption{colaction}{%
+ \def\mc@col@status@write{%
+ \protected@write\@auxout{}%
+ {\string\mc@col@status
+ {\ifmc@firstcol 1\else 2\fi}}%
+ \mc@firstcolfalse}%
+ \def\mc@lastcol@status@write{%
+ \protected@write\@auxout{}%
+ {\string\mc@col@status{3}}}%
+}
+\let\mc@col@status@write\relax
+\let\mc@lastcol@status@write\relax
+\ProcessOptions
+\def\multicols#1{\col@number#1\relax
+ \ifnum\col@number<\tw@
+ \PackageWarning{multicol}%
+ {Using `\number\col@number'
+ columns doesn't seem a good idea.^^J
+ I therefore use two columns instead}%
+ \col@number\tw@ \fi
+ \ifnum\col@number>20
+ \PackageError{multicol}%
+ {Too many columns}%
+ {Current implementation doesn't
+ support more than 20 columns.%
+ \MessageBreak
+ I therefore use 20 columns instead}%
+ \col@number20 \fi
+ \ifx\@footnotetext\mult@footnotetext
+ \else
+ \let\orig@footnotetext\@footnotetext
+ \let\@footnotetext\mult@footnotetext
+ \fi
+ \@ifnextchar[\mult@cols{\mult@cols[]}}
+\long\def\mult@footnotetext#1{\begingroup
+ \columnwidth\textwidth
+ \orig@footnotetext{#1}\endgroup}
+\def\mult@cols[#1]{\@ifnextchar[%
+ {\mult@@cols{#1}}%
+ {\mult@@cols{#1}[\premulticols]}}
+\def\mult@@cols#1[#2]{%
+ \par
+ \ifinner \@boxedmulticolstrue
+ \else
+ \ifnum \doublecol@number>\z@
+ \@boxedmulticolstrue
+ \fi
+ \fi
+ \mult@info\z@
+ {Starting environment with
+ \the\col@number\space columns%
+ \if@boxedmulticols\MessageBreak
+ (boxed mode)\fi
+ }%
+ \enough@room{#2}%
+ #1\par\addvspace\multicolsep
+ \ifdim \prevdepth = -\@m\p@
+ \else
+ \@tempcnta\prevdepth
+ \@tempcntb\baselineskip
+ \divide\@tempcnta\@tempcntb
+ \advance\@tempcnta\@ne
+ \dimen@\prevdepth
+ \advance\dimen@ -\@tempcnta\baselineskip
+ \advance\dimen@ \topskip
+ \kern-\dimen@
+ \fi
+ \begingroup
+ \prepare@multicols
+ \if@boxedmulticols
+ \setbox\mult@box\vbox\bgroup
+ \color@setgroup
+ \fi
+ \ignorespaces}
+\newif\if@boxedmulticols
+\@boxedmulticolsfalse
+\newbox\mult@box
+\def\enough@room#1{%
+ \if@boxedmulticols\else
+ \par
+ \bgroup\@nobreakfalse\addpenalty\z@\egroup
+ \page@free \pagegoal
+ \advance \page@free -\pagetotal
+ \@tempskipa#1\relax
+ \mult@info\z@
+ {Current page:\MessageBreak
+ height=%
+ \the\pagegoal: used \the\pagetotal
+ \space -> free=\the\page@free
+ \MessageBreak
+ needed \the\@tempskipa
+ \space(for #1)}%
+ \ifdim \page@free <#1\newpage \fi
+ \fi}
+\def\prepare@multicols{%
+ \multicol@leftmargin\@totalleftmargin
+ \@totalleftmargin\z@
+ \parshape\z@
+ \doublecol@number\col@number
+ \multiply\doublecol@number\tw@
+ \advance\doublecol@number\mult@rightbox
+ \if@boxedmulticols
+ \let\l@kept@firstmark\kept@firstmark
+ \let\l@kept@botmark\kept@botmark
+ \global\let\kept@firstmark\@empty
+ \global\let\kept@botmark\@empty
+ \else
+ \nointerlineskip {\topskip\z@\null}%
+ \output{%
+ \global\setbox\partial@page\vbox
+ {%
+ \ifvoid\partial@page\else
+ \PackageError{multicol}%
+ {Error saving partial page}%
+ {The part of the page before
+ the multicols environment was
+ nearly full with^^Jthe result
+ that starting the environment
+ will produce an overfull
+ page. Some^^Jtext may be lost!
+ Please increase \premulticols
+ either generally or for this%
+ ^^Jenvironment by specifying a
+ suitable value in the second
+ optional argument to^^Jthe
+ multicols environment.}
+ \unvbox\partial@page
+ \box\last@line
+ \fi
+ \unvbox\@cclv
+ \global\setbox\last@line\lastbox
+ }%
+ \prep@keptmarks
+ \global\let\kept@topmark\firstmark
+ }\eject
+ \advance\@colroom-\ht\partial@page
+ \set@mult@vsize\relax
+ \output{\multi@column@out}%
+ \init@mult@footins
+ \reinsert@footnotes
+ \def\clearpage{%
+ \ifx\@deferlist\@empty\else
+ \PackageError{multicol}%
+ {Deferred floats not cleared}%
+ {A \string\clearpage\space inside
+ multicols acts like
+ \string\newpage\space and doesn't
+ clear floats.\MessageBreak
+ Move it before the multicols
+ environment if you need it.}%
+ \fi
+ \newpage}%
+ \fi
+ \vbadness\@Mi \hbadness5000
+ \tolerance\multicoltolerance
+ \pretolerance\multicolpretolerance
+ \setemergencystretch\col@number\hsize
+ \set@floatcmds
+ \advance\baselineskip\multicolbaselineskip
+ \hsize\linewidth \advance\hsize\columnsep
+ \advance\hsize-\col@number\columnsep
+ \divide\hsize\col@number
+ \full@width\linewidth
+ \linewidth\hsize
+ \columnwidth\hsize
+}
+\def\init@mult@footins{%
+ \multiply\count\footins\col@number
+ \multiply\skip \footins\col@number
+}
+\def\set@mult@vsize#1{%
+ \vsize\@colroom
+ \@tempdima\baselineskip
+ \advance\@tempdima-\topskip
+ \advance\vsize\@tempdima
+ \vsize\col@number\vsize
+ \advance\vsize-\@tempdima
+ \advance\vsize\col@number\baselineskip
+ #1\advance\vsize
+ \c@collectmore\baselineskip}
+\newdimen\multicol@leftmargin
+\mathchardef\@Mvi=10006 % 10005 is
+ % \columnbreak
+\def\endmulticols{\par
+ \if@boxedmulticols
+ \remove@discardable@items
+ \color@endgroup\egroup
+ \balance@columns
+ \return@nonemptymark{first}%
+ \kept@firstmark
+ \return@nonemptymark{bot}%
+ \kept@botmark
+ \global\setbox\mc@boxedresult\vbox{%
+ \page@sofar
+ \global\let\kept@firstmark
+ \l@kept@firstmark
+ \global\let\kept@botmark
+ \l@kept@botmark
+ }%
+ \mult@info\tw@
+ {Restore kept marks to\MessageBreak
+ first: \meaning\kept@firstmark
+ \MessageBreak bot\space\space:
+ \meaning\kept@botmark }%
+ \else
+ \ifdim\pagegoal=\maxdimen
+ \ifvoid\colbreak@box\else
+ \mult@info\@ne{Re-adding forced
+ break(s) for splitting}%
+ \unvbox\colbreak@box\fi
+ \fi
+ \penalty\z@
+ \penalty-\@Mvi
+ \ifvbox\partial@page
+ \unvbox\partial@page\fi
+ \global\let\kept@firstmark\@empty
+ \global\let\kept@botmark\@empty
+ \mult@info\tw@
+ {Make kept marks empty}%
+ \fi
+ \@checkend{multicols}%
+ \endgroup
+ \global\c@unbalance\z@
+ \if@boxedmulticols
+ \unvbox\mc@boxedresult
+ \mc@col@status@write
+ \else
+ \reinsert@footnotes
+ \ifdim \pagegoal=\maxdimen
+ \global\vsize\@colroom
+ \else
+ \enough@room\postmulticols
+ \fi
+ \fi
+ \addvspace\multicolsep
+ \prevdepth\z@
+ \mult@info\z@
+ {Ending environment
+ \if@boxedmulticols
+ \space(boxed mode)\fi
+ }}
+\newcount\c@unbalance
+\newcount\c@collectmore
+\newcount\doublecol@number
+\newcount\multicoltolerance
+\newcount\multicolpretolerance
+\newdimen\full@width
+\newdimen\page@free
+\newdimen\premulticols
+\newdimen\postmulticols
+\newskip\multicolsep
+\newskip\multicolbaselineskip
+\newbox\partial@page
+\newbox\last@line
+\newbox\mc@boxedresult
+\c@unbalance = 0
+\c@collectmore = 0
+\multicoltolerance = 9999
+\multicolpretolerance = -1
+\premulticols = 50pt
+\postmulticols= 20pt
+\multicolsep = 12pt plus 4pt minus 3pt
+\multicolbaselineskip=0pt
+\def\process@cols#1#2{\count@#1\relax
+ \loop
+ #2%
+ \advance\count@\tw@
+ \ifnum\count@<\doublecol@number
+ \repeat}
+\def\page@sofar{%
+ \process@cols\mult@rightbox
+ {\ifvoid\count@
+ \setbox\count@\hbox to\hsize{}%
+ \else
+ \wd\count@\hsize
+ \fi}%
+ \count@\col@number \advance\count@\m@ne
+ \mult@info\z@
+ {Column spec: \the\full@width\space = indent
+ + columns + sep =\MessageBreak
+ \the\multicol@leftmargin\space
+ + \the\col@number\space
+ x \the\hsize\space
+ + \the\count@\space
+ x \the\columnsep
+ }%
+\ifvmode\else\errmessage{Multicol Error}\fi
+ \nointerlineskip
+ \setbox\z@\hbox{\multicolmindepthstring}\global\dimen\tw@\dp\z@
+ \moveright\multicol@leftmargin
+ \hbox to\full@width{%
+ \mc@align@columns
+ \rlap{\phantom \multicolmindepthstring}%
+ }%
+ \prevdepth\z@
+ \kern-\dimen\tw@
+ \ifdim\dimen\tw@ > \mc@gridwarn
+ \PackageWarning{multicol}%
+ {Very deep columns!\MessageBreak
+ Grid alignment might be broken}%
+ \fi
+}
+\def\multicolmindepthstring{p}
+\def\columnseprulecolor{\normalcolor}
+\def\reinsert@footnotes{\ifvoid\footins\else
+ \insert\footins{}\fi}
+\def\vfilmaxdepth{\vskip \z@ \@plus .0001fil
+ \@minus \@maxdepth}
+\def\multi@column@out{%
+ \ifnum\outputpenalty <-\@M
+ \speci@ls \else
+ \ifvoid\colbreak@box\else
+ \mult@info\@ne{Re-adding forced
+ break(s) for splitting}%
+ \setbox\@cclv\vbox{%
+ \unvbox\colbreak@box
+ \penalty-\@Mv
+ \unvbox\@cclv}%
+ \fi
+ \splittopskip\topskip
+ \splitmaxdepth\@maxdepth
+ \boxmaxdepth\@maxdepth
+ \dimen@\@colroom
+ \divide\skip\footins\col@number
+ \ifvoid\footins \else
+ \leave@mult@footins
+ \fi
+ \ifvbox \@kludgeins
+ \advance \dimen@ -\ht\@kludgeins
+ \ifdim \wd\@kludgeins>\z@
+ \shr@nkingtrue
+ \fi
+ \fi
+ \process@cols\mult@firstbox{%
+ \setbox\count@
+ \vsplit\@cclv to\dimen@
+ \set@keptmarks
+ \setbox\count@
+ \vbox to\dimen@
+ {\unvbox\count@
+ \ifshr@nking
+ \vfilmaxdepth\fi}%
+ }%
+ \setbox\mult@rightbox
+ \vsplit\@cclv to\dimen@
+ \set@keptmarks
+ \setbox\mult@rightbox\vbox to\dimen@
+ {\unvbox\mult@rightbox
+ \ifshr@nking\vfilmaxdepth\fi}%
+ \ifvoid\@cclv \else
+ \unvbox\@cclv
+ \ifnum\outputpenalty=\@M
+ \else
+ \penalty\outputpenalty
+ \fi
+ \ifvoid\footins\else
+ \PackageWarning{multicol}%
+ {I moved some lines to
+ the next page.\MessageBreak
+ Footnotes on page
+ \thepage\space might be wrong}%
+ \fi
+ \ifnum \c@tracingmulticols>\thr@@
+ \hrule\allowbreak \fi
+ \fi
+ \ifx\@empty\kept@firstmark
+ \let\firstmark\kept@topmark
+ \let\botmark\kept@topmark
+ \else
+ \let\firstmark\kept@firstmark
+ \let\botmark\kept@botmark
+ \fi
+ \let\topmark\kept@topmark
+ \mult@info\tw@
+ {Use kept top mark:\MessageBreak
+ \meaning\kept@topmark
+ \MessageBreak
+ Use kept first mark:\MessageBreak
+ \meaning\kept@firstmark
+ \MessageBreak
+ Use kept bot mark:\MessageBreak
+ \meaning\kept@botmark
+ \MessageBreak
+ Produce first mark:\MessageBreak
+ \meaning\firstmark
+ \MessageBreak
+ Produce bot mark:\MessageBreak
+ \meaning\botmark
+ \@gobbletwo}%
+ \boxmaxdepth\maxdimen
+ \setbox\@cclv\vbox{\unvbox\partial@page
+ \page@sofar}%
+ \@makecol\@outputpage
+ \global\let\kept@topmark\botmark
+ \global\let\kept@firstmark\@empty
+ \global\let\kept@botmark\@empty
+ \mult@info\tw@
+ {(Re)Init top mark:\MessageBreak
+ \meaning\kept@topmark
+ \@gobbletwo}%
+ \global\@colroom\@colht
+ \global \@mparbottom \z@
+ \global \@textfloatsheight \z@
+ \process@deferreds
+ \@whilesw\if@fcolmade\fi{\@outputpage
+ \global\@colroom\@colht
+ \process@deferreds}%
+ \mult@info\@ne
+ {Colroom:\MessageBreak
+ \the\@colht\space
+ after float space removed
+ = \the\@colroom \@gobble}%
+ \set@mult@vsize \global
+ \fi}
+\def\leave@mult@footins{%
+ \advance\dimen@-\skip\footins
+ \advance\dimen@-\ht\footins
+}
+\def\speci@ls{%
+ \ifnum\outputpenalty <-\@Mi
+ \ifnum \outputpenalty<-\@MM
+ \PackageError{multicol}{Document end
+ inside multicols environment}\@ehd
+ \@specialoutput
+ \else
+ \ifnum\outputpenalty = -\@Mv
+ \mult@info\@ne{Forced column
+ break seen}%
+ \global\advance\vsize-\pagetotal
+ \global\setbox\colbreak@box
+ \vbox{%
+ \ifvoid\colbreak@box
+ \else
+ \unvbox\colbreak@box
+ \penalty-\@Mv
+ \fi
+ \boxmaxdepth\@maxdepth
+ \setbox\@cclv\vbox{%
+ \unvbox\@cclv
+ \remove@discardable@items}%
+ \dimen@\dp\@cclv
+ \unvbox\@cclv
+ \kern-\dimen@
+ }%
+ \reinsert@footnotes
+ \else
+ \ifnum\outputpenalty = -\@Mvi
+ \mult@info\@ne{End penalty of
+ multicols seen}%
+ \outputpenalty\@M % pretend we had
+ % a natural
+ % forced break
+ \balance@columns@out
+ \else
+ \PackageWarningNoLine{multicol}%
+ {Floats and marginpars not
+ allowed inside `multicols'
+ environment!}%
+ \unvbox\@cclv\reinsert@footnotes
+ \xdef\@freelist{\@freelist
+ \@currlist}%
+ \gdef\@currlist{}%
+ \fi
+ \fi
+ \fi
+ \else \@doclearpage \fi
+}
+\def\process@deferreds{%
+ \@floatplacement
+ \@tryfcolumn\@deferlist
+ \if@fcolmade\else
+ \begingroup
+ \let\@tempb\@deferlist
+ \gdef\@deferlist{}%
+ \let\@elt\@scolelt
+ \@tempb \endgroup
+ \fi}
+\newif\ifshr@nking
+\def\raggedcolumns{%
+ \@bsphack\shr@nkingtrue\@esphack}
+\def\flushcolumns{%
+ \@bsphack\shr@nkingfalse\@esphack}
+\def\balance@columns@out{%
+ \setbox\mult@box\vbox{%
+ \ifvoid\colbreak@box\else
+ \unvbox\colbreak@box
+ \penalty-\@Mv
+ \mult@info\@ne{Re-adding
+ forced break(s) in balancing}%
+ \fi
+ \unvbox\@cclv
+ \remove@discardable@items
+ }%
+ \balance@columns
+ \iftoo@bad
+ \mult@info\@ne
+ {Balancing failed ...
+ cut a normal page}%
+ \setbox\@cclv\vbox
+ {\vskip\topskip
+ \vskip-\splittopskip
+ \unvbox\mult@box
+ \penalty-\@Mvi
+ }%
+ \multi@column@out
+ \else
+ \global\vsize\@colroom
+ \global\advance\vsize\ht\partial@page
+ \ifvbox\@kludgeins
+ \insert\@kludgeins
+ {\unvbox\@kludgeins}\fi
+ \unvbox\partial@page
+ \return@nonemptymark{first}%
+ \kept@firstmark
+ \return@nonemptymark{bot}\kept@botmark
+ \page@sofar
+ \penalty\z@
+ \fi
+}
+\def\balance@columns{%
+ \get@keptmarks\mult@box
+ \setbox\mult@box\vbox{%
+ \penalty-\@M
+ \unvbox\mult@box
+ }%
+ \@tempdima\topskip
+ \splittopskip\@tempdima
+ \@plus\multicolundershoot
+ \@minus\multicolovershoot
+ \splitmaxdepth\@maxdepth
+ \boxmaxdepth\@maxdepth
+ \setbox\@tempboxa\vsplit\mult@box to\z@
+ \@tempdima\ht\mult@box
+ \advance\@tempdima\dp\mult@box
+ \divide\@tempdima\col@number
+ \count@\@tempdima
+ \divide\count@\baselineskip
+ \dimen@\count@\baselineskip
+ \advance\dimen@\topskip
+ \ifdim \dimen@ >\@tempdima
+ \advance\dimen@-\baselineskip
+ \fi
+ \@tempdima\dimexpr
+ \topskip +\c@minrows\baselineskip
+ -\baselineskip\relax
+ \ifnum\dimen@<\@tempdima
+ \mult@info\@ne
+ {Start value
+ \the\dimen@ \space ->
+ \the\@tempdima \space
+ (corrected for minrows)}%
+ \dimen@\@tempdima
+ \fi
+ \advance\dimen@\c@unbalance\baselineskip
+ \mult@info\@ne
+ {Balance columns\on@line:
+ \ifnum\c@unbalance=\z@\else
+ (off balance=\number\c@unbalance)\fi
+ \@gobbletwo}%
+ \ifnum\dimen@<\topskip
+ \mult@info\@ne
+ {Start value
+ \the\dimen@ \space ->
+ \the\topskip \space (corrected)}%
+ \dimen@\topskip
+ \fi
+ \vbadness\@M
+ \vfuzz \maxdimen
+ \last@try-\p@
+ \loop
+ {\process@cols\mult@grightbox
+ {\global\setbox\count@
+ \box\voidb@x}}%
+ \global\setbox\mult@grightbox
+ \copy\mult@box
+ \too@badfalse
+ \forcedbreak@leftoverfalse
+ {\process@cols\mult@gfirstbox{%
+ \global\setbox\count@
+ \vsplit\mult@grightbox to\dimen@
+ \global\setbox\count@
+ \vbox to\dimen@
+ {\unvbox\count@}%
+ \ifnum\c@tracingmulticols>\@ne
+ \@tempcnta\count@
+ \advance\@tempcnta-\mult@grightbox
+ \divide\@tempcnta \tw@
+ \message{^^JColumn
+ \number\@tempcnta\space
+ badness: \the\badness\space}%
+ \fi
+ \ifnum\badness>\c@columnbadness
+ \ifnum\c@tracingmulticols>\@ne
+ \message{too bad
+ (>\the\c@columnbadness)}%
+ \fi
+ \too@badtrue
+ \fi
+ }}%
+ \global\setbox\mult@grightbox
+ \vbox{\unvbox\mult@grightbox}%
+ \setbox\mult@nat@firstbox
+ \vbox{\unvcopy\mult@gfirstbox}%
+ \ifnum\c@tracingmulticols>\@ne
+ \message{^^JFirst column
+ = \the\dimen@\space
+ (\the\ht\mult@nat@firstbox)}\fi
+ \ifnum\c@tracingmulticols>\@ne
+ \message{<> last column =
+ \the\ht\mult@grightbox^^J}%
+ \fi
+ \ifdim\ht\mult@grightbox >\dimen@
+ \too@badtrue
+ \ifnum\c@tracingmulticols>\@ne
+ \typeout{Rejected: last
+ column too large!}%
+ \fi
+ \else
+ \setbox\@tempboxa
+ \copy\mult@grightbox
+ \setbox\z@\vsplit\@tempboxa to\maxdimen
+ \ifvoid\@tempboxa
+ \global\setbox\mult@grightbox
+ \vbox to\dimen@
+ {\unvbox\mult@grightbox}%
+ \ifnum\c@tracingmulticols>\@ne
+ \message{Final badness:
+ \the\badness}%
+ \fi
+ \ifnum\badness>\c@finalcolumnbadness
+ \global\setbox\mult@grightbox
+ \vbox to\dimen@
+ {\unvbox\mult@grightbox\vfil}%
+ \ifnum\c@tracingmulticols>\@ne
+ \message{ setting natural
+ (> \the\c@finalcolumnbadness)}%
+ \fi
+ \fi
+ \else
+ \@tempdima\@colroom
+ \advance\@tempdima \maxbalancingoverflow
+ \ifdim \dimen@ < \@tempdima
+ \too@badtrue
+ \ifnum\c@tracingmulticols>\@ne
+ \typeout{Rejected: unprocessed
+ forced break(s) in last column!}%
+ \fi
+ \else
+ \forcedbreak@leftovertrue
+ \ifnum\c@tracingmulticols>\@ne
+ \typeout{Failed: columns too large
+ with unprocessed forced break(s)!}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifdim\ht\mult@nat@firstbox<\dimen@
+ \ifdim\ht\mult@nat@firstbox>\last@try
+ \too@badtrue
+ \ifnum\c@tracingmulticols>\@ne
+ \typeout{Retry: using natural
+ height of first column!}%
+ \fi
+ \dimen@\ht\mult@nat@firstbox
+ \last@try\dimen@
+ \advance\dimen@-\p@
+ \fi
+ \fi
+ \iftoo@bad
+ \advance\dimen@\p@
+ \repeat
+ \ifforcedbreak@leftover
+ \too@badtrue
+ \else
+ \if@boxedmulticols\else
+ \ifdim\dimen@>\@colroom
+ \dimen@\@colroom
+ \fi
+ \fi
+ \process@cols\mult@rightbox
+ {\@tempcnta\count@
+ \advance\@tempcnta\@ne
+ \vfuzz\z@
+ \setbox\count@\vbox to\dimen@
+ {%
+ \vskip \z@
+ \@plus-\multicolundershoot
+ \@minus-\multicolovershoot
+ \unvbox\@tempcnta
+ \ifshr@nking\vfilmaxdepth\fi
+ }%
+ \ifnum\badness>\@M
+ \vfuzz\maxdimen % no overfull warning
+ \setbox\@tempboxa \vbox to\dimen@
+ {\vskip-\maxbalancingoverflow
+ \unvcopy\count@}%
+ \ifnum\badness>\@M
+ \mult@info\@ne
+ {Balanced column more than
+ \the\maxbalancingoverflow\space
+ too large}%
+ \too@badtrue
+ \else
+ \mult@info\@ne
+ {Balanced column
+ too large, but less than
+ \the\maxbalancingoverflow}%
+ \fi
+ \fi
+ }%
+ \fi
+}
+\newdimen\maxbalancingoverflow
+\maxbalancingoverflow=12pt
+
+\ifnum\numexpr
+ \count20-\count14-1<40
+ % this is = 2 * 20
+ \count14=\@cclv
+\fi
+\newbox\mult@rightbox
+\newbox\mult@grightbox
+\newbox\mult@firstbox
+\newbox\mult@gfirstbox
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\let\@tempa\relax
+\@ifundefined{emergencystretch}
+ {\newdimen\emergencystretch}{}
+\def\setemergencystretch#1#2{%
+ \emergencystretch 4pt
+ \multiply\emergencystretch#1}
+
+\def\set@floatcmds{%
+ \let\@dblfloat\@dbflt
+ \def\end@dblfloat{\@endfloatbox
+ \@largefloatcheck
+ \outer@nobreak
+ \ifnum\@floatpenalty<\z@
+ \@cons\@deferlist\@currbox
+ \fi
+ \ifnum\@floatpenalty=-\@Mii
+ \@Esphack
+ \fi}}
+\def\kept@topmark{{}{}}
+\let\kept@firstmark\@empty
+\let\kept@botmark\@empty
+\def\return@nonemptymark#1#2{%
+ \ifx#2\@empty
+ \else
+ \mult@info\tw@
+ {Returned #1 mark:\MessageBreak
+ \meaning#2}%
+ \toks@\expandafter{#2}%
+ \mark{\the\toks@}%
+ \nobreak
+ \fi}
+\def\get@keptmarks#1{%
+ \begingroup
+ \vbadness\@M
+ \setbox#1\copy#1%
+ \mc@get@all@box@marks #1%
+ \set@keptmarks
+ \endgroup
+}
+\def\mc@get@all@box@marks #1{%
+ \setbox\@tempboxa\vsplit#1to\maxdimen
+ \ifvoid#1\else
+ \setbox#1\vbox{\unvbox\@tempboxa \unvbox#1}%
+ \mc@get@all@box@marks #1%
+ \fi
+}
+\def\set@keptmarks{%
+ \ifx\kept@firstmark\@empty
+ \expandafter\gdef\expandafter
+ \kept@firstmark
+ \expandafter{\splitfirstmark}%
+ \ifx\kept@firstmark\@empty\else
+ \mult@info\tw@
+ {Set kept first mark:\MessageBreak
+ \meaning\kept@firstmark%
+ \@gobbletwo}%
+ \fi
+ \fi
+ \expandafter\def\expandafter\@tempa
+ \expandafter{\splitbotmark}%
+ \ifx\@tempa\@empty\else
+ \global\let\kept@botmark\@tempa
+ \mult@info\tw@
+ {Set kept bot mark:\MessageBreak
+ \meaning\kept@botmark%
+ \@gobbletwo}%
+ \fi}%
+\def\prep@keptmarks{%
+ \if@boxedmulticols \else
+ \get@keptmarks\partial@page
+ \fi}
+\skip0=0pt
+\edef\the@zero@skip{\the\skip0}
+\def\remove@discardable@items{%
+ \unpenalty
+ \edef\@tempa{\the\lastskip}%
+ \unskip
+ \ifx\@tempa\the@zero@skip
+ \edef\@tempb{\the\lastskip}%
+ \ifx\@tempb\the@zero@skip
+ \else
+ \unskip
+ \ifnum \lastpenalty=\@M
+ \vskip\@tempb\vskip\@tempa\relax
+ \else
+ \remove@discardable@items
+ \fi
+ \fi
+ \else
+ \remove@discardable@items
+ \fi
+}
+\newif\iftoo@bad
+\def\too@badtrue{\global\let\iftoo@bad\iftrue}
+\def\too@badfalse{\global\let\iftoo@bad\iffalse}
+\newif\ifforcedbreak@leftover
+\newcount\c@minrows
+\c@minrows=1
+\newcount\c@columnbadness
+\c@columnbadness=10000
+\newcount\c@finalcolumnbadness
+\c@finalcolumnbadness=9999
+
+\newdimen\last@try
+
+\newdimen\multicolovershoot
+\newdimen\multicolundershoot
+\multicolovershoot=0pt
+\multicolundershoot=2pt
+\newbox\mult@nat@firstbox
+\def\mult@info#1#2{%
+ \ifnum\c@tracingmulticols>#1%
+ \GenericWarning
+ {(multicol)\@spaces\@spaces}%
+ {Package multicol: #2}%
+ \fi
+}
+ \@namedef{multicols*}{%
+ \ifinner
+ \PackageWarning{multicol}%
+ {multicols* inside a box does
+ not make sense.\MessageBreak
+ Going to balance anyway}%
+ \else
+ \def\balance@columns@out
+ {\multi@column@out \penalty-\@Mvi }%
+ \fi
+ \begin{multicols}
+}
+\@namedef{endmulticols*}{%
+ \par
+ \ifdim\lastskip>\z@ \vskip-\lastskip \fi
+ \ifdim \prevdepth>\z@
+ \vskip-\ifdim\prevdepth>\boxmaxdepth
+ \boxmaxdepth
+ \else \prevdepth \fi
+ \fi
+ \ifshr@nking\else
+ \vfil
+ \fi
+ \end{multicols}}
+\mathchardef\@Mv=10005
+\newcommand\columnbreak[1][4]{%
+ \ifnum\col@number<\tw@
+ \PackageError{multicol}%
+ {\noexpand\columnbreak outside multicols}%
+ {This command can only be used within
+ a multicols or multicols* environment.}%
+ \else
+ \edef\mc@break@pen
+{-\ifcase#1\@m\or 3333\or 6666\or 9999\else\@Mv\fi\relax}%
+ \ifvmode
+ \penalty \mc@break@pen
+ \else
+ \@bsphack
+ \vadjust{\penalty \mc@break@pen}%
+ \@esphack
+ \fi
+ \fi}
+\newcommand\newcolumn{%
+ \ifnum\col@number<\tw@
+ \PackageError{multicol}%
+ {\noexpand\newcolumn outside multicols}%
+ {This command can only be used within
+ a multicols or multicols* environment.}%
+ \else
+ \ifvmode
+ \nobreak\vfill\kern\z@\penalty -\@Mv\relax
+ \else
+ \@bsphack
+ \vadjust{\nobreak\vfill\kern\z@\penalty -\@Mv\relax}%
+ \@esphack
+ \fi
+ \fi}
+\newbox\colbreak@box
+\def\LR@column@boxes{%
+ \process@cols\mult@firstbox{%
+ \ifdim\dp\count@>\dimen\tw@
+ \global\dimen\tw@\dp\count@ \fi
+ \mc@col@status@write
+ \box\count@
+ \hss{\columnseprulecolor\vrule
+ \@width\columnseprule}\hss}%
+ \ifdim\dp\mult@rightbox>\dimen\tw@
+ \global\dimen\tw@\dp\mult@rightbox \fi
+ \mc@lastcol@status@write
+ \box\mult@rightbox
+}
+
+\def\RL@column@boxes{%
+ \process@cols\mult@firstbox{%
+ \hskip\hsize
+ \hss{\columnseprulecolor\vrule
+ \@width\columnseprule}\hss
+ }%
+ \hskip\hsize
+ \process@cols\mult@firstbox{%
+ \ifdim\dp\count@>\dimen\tw@
+ \global\dimen\tw@\dp\count@ \fi
+ \hskip-\hsize
+ \mc@col@status@write
+ \box\count@
+ \hskip-\hsize
+ \hskip-\columnsep
+ }%
+ \ifdim\dp\mult@rightbox>\dimen\tw@
+ \global\dimen\tw@\dp\mult@rightbox \fi
+ \hskip-\hsize
+ \mc@lastcol@status@write
+ \box\mult@rightbox
+ \hskip-\hsize
+ \hskip\full@width
+ }
+\newcommand\RLmulticolcolumns
+ {\let\mc@align@columns
+ \RL@column@boxes}
+\newcommand\LRmulticolcolumns
+ {\let\mc@align@columns
+ \LR@column@boxes}
+\LRmulticolcolumns
+\newcount\mc@col@check@num
+
+\newcommand\docolaction{%
+ \ifx\mc@col@status@write\relax
+ \PackageError{multicol}%
+ {Option 'colaction' not selected}%
+ {\string\docolaction\space
+ requires the use of the 'colaction'
+ option on the package}%
+ \fi
+ \global\advance\mc@col@check@num\@ne
+ \edef\mc@col@type{\expandafter\ifx
+ \csname mc@col-\the\mc@col@check@num
+ \endcsname\relax
+ 0\else
+ \csname mc@col-\the\mc@col@check@num
+ \endcsname
+ \fi}%
+ \@ifstar
+ {\@docolactionstartrue \@docolaction}%
+ {\@docolactionstarfalse\@docolaction}%
+}
+\newcommand\@docolaction[4][1]{%
+ \edef\@docolactioncheck{\write\@auxout
+ {\string\mc@set@col@status
+ {mc@col-\the\mc@col@check@num}%
+ {\mc@col@type}}}%
+ \if@docolactionstar \@docolactioncheck \fi
+ \ifcase \mc@col@type\relax
+ \ifcase #1\or #2\or#3\or#4\fi
+ \or
+ #2% % 1 First col
+ \or
+ #3% % 2 any middle col
+ \or
+ #4% % 3 last col
+ \else
+ \ERRORwrongdefaultgiven
+ \fi
+ \if@docolactionstar \else \@docolactioncheck \fi
+}
+\newif\if@docolactionstar
+\def\mc@col@status#1{%
+ \gdef\mc@curr@col@status{#1}}
+\def\mc@set@col@status#1#2{%
+ \global\expandafter\let\csname #1\endcsname
+ \mc@curr@col@status}
+\AtEndDocument{\def\mc@set@col@status#1#2{%
+ \ifnum #2=\mc@curr@col@status\else
+ \@tempswatrue
+ \fi}%
+}
+\newif\ifmc@firstcol
+\mc@firstcoltrue
+\endinput
+%%
+%% End of file `multicol.sty'.
diff --git a/Master/texmf-dist/tex/latex-dev/tools/multicol.sty b/Master/texmf-dist/tex/latex-dev/tools/multicol.sty
index 382a1c3e52c..3cc9d82e039 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/multicol.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/multicol.sty
@@ -102,10 +102,11 @@
\DeclareRelease{}{1994-06-01}{multicol-2017-04-11.sty}
\DeclareRelease{}{2017-04-11}{multicol-2017-04-11.sty}
\DeclareRelease{v1.8}{2019-10-01}{multicol-2019-10-01.sty}
+\DeclareRelease{v1.9}{2021-11-15}{multicol-2024-05-23.sty}
\DeclareCurrentRelease{}{2021-11-15}
\ProvidesPackage{multicol}
- [2024/07/01 v1.9h multicolumn formatting (FMi)]
+ [2024/11/21 v2.0a multicolumn formatting (FMi)]
\DeclareOption{twocolumn}
{\PackageWarning{multicol}{May not work
@@ -118,9 +119,13 @@
\DeclareOption{balancingshow}
{\c@tracingmulticols\tw@}
\DeclareOption{markshow}
- {\c@tracingmulticols\thr@@}
+ {\c@tracingmulticols\thr@@
+ \DebugMarksOn
+ }
\DeclareOption{debugshow}
- {\c@tracingmulticols5\relax}
+ {\c@tracingmulticols5\relax
+ \DebugMarksOn
+ }
\let\mc@gridwarn\maxdimen
\DeclareOption{grid}
{\def\mc@gridwarn{\@maxdepth}}
@@ -225,11 +230,8 @@
\doublecol@number\col@number
\multiply\doublecol@number\tw@
\advance\doublecol@number\mult@rightbox
+ \mc@prepare@mark@regions
\if@boxedmulticols
- \let\l@kept@firstmark\kept@firstmark
- \let\l@kept@botmark\kept@botmark
- \global\let\kept@firstmark\@empty
- \global\let\kept@botmark\@empty
\else
\nointerlineskip {\topskip\z@\null}%
\output{%
@@ -256,9 +258,7 @@
\unvbox\@cclv
\global\setbox\last@line\lastbox
}%
- \prep@keptmarks
- \global\let\kept@topmark\firstmark
- }\eject
+ }\eject
\advance\@colroom-\ht\partial@page
\set@mult@vsize\relax
\output{\multi@column@out}%
@@ -312,22 +312,12 @@
\remove@discardable@items
\color@endgroup\egroup
\balance@columns
- \return@nonemptymark{first}%
- \kept@firstmark
- \return@nonemptymark{bot}%
- \kept@botmark
\global\setbox\mc@boxedresult\vbox{%
+ \mc@handle@marks@and@reinserts
+ {in multicol (boxed mode)}%
\page@sofar
- \global\let\kept@firstmark
- \l@kept@firstmark
- \global\let\kept@botmark
- \l@kept@botmark
+ \mc@reinsert@marks
}%
- \mult@info\tw@
- {Restore kept marks to\MessageBreak
- first: \meaning\kept@firstmark
- \MessageBreak bot\space\space:
- \meaning\kept@botmark }%
\else
\ifdim\pagegoal=\maxdimen
\ifvoid\colbreak@box\else
@@ -339,11 +329,7 @@
\penalty-\@Mvi
\ifvbox\partial@page
\unvbox\partial@page\fi
- \global\let\kept@firstmark\@empty
- \global\let\kept@botmark\@empty
- \mult@info\tw@
- {Make kept marks empty}%
- \fi
+ \fi
\@checkend{multicols}%
\endgroup
\global\c@unbalance\z@
@@ -413,6 +399,7 @@
\ifvmode\else\errmessage{Multicol Error}\fi
\nointerlineskip
\setbox\z@\hbox{\multicolmindepthstring}\global\dimen\tw@\dp\z@
+ \UseTaggingSocket{page@sofar}%
\moveright\multicol@leftmargin
\hbox to\full@width{%
\mc@align@columns
@@ -460,16 +447,14 @@
\process@cols\mult@firstbox{%
\setbox\count@
\vsplit\@cclv to\dimen@
- \set@keptmarks
- \setbox\count@
- \vbox to\dimen@
- {\unvbox\count@
- \ifshr@nking
- \vfilmaxdepth\fi}%
- }%
+ \setbox\count@
+ \vbox to\dimen@
+ {\unvbox\count@
+ \ifshr@nking
+ \vfilmaxdepth\fi}%
+ }%
\setbox\mult@rightbox
\vsplit\@cclv to\dimen@
- \set@keptmarks
\setbox\mult@rightbox\vbox to\dimen@
{\unvbox\mult@rightbox
\ifshr@nking\vfilmaxdepth\fi}%
@@ -489,41 +474,15 @@
\ifnum \c@tracingmulticols>\thr@@
\hrule\allowbreak \fi
\fi
- \ifx\@empty\kept@firstmark
- \let\firstmark\kept@topmark
- \let\botmark\kept@topmark
- \else
- \let\firstmark\kept@firstmark
- \let\botmark\kept@botmark
- \fi
- \let\topmark\kept@topmark
- \mult@info\tw@
- {Use kept top mark:\MessageBreak
- \meaning\kept@topmark
- \MessageBreak
- Use kept first mark:\MessageBreak
- \meaning\kept@firstmark
- \MessageBreak
- Use kept bot mark:\MessageBreak
- \meaning\kept@botmark
- \MessageBreak
- Produce first mark:\MessageBreak
- \meaning\firstmark
- \MessageBreak
- Produce bot mark:\MessageBreak
- \meaning\botmark
- \@gobbletwo}%
\boxmaxdepth\maxdimen
- \setbox\@cclv\vbox{\unvbox\partial@page
- \page@sofar}%
+ \setbox\@cclv\vbox
+ {%
+ \mc@handle@col@andpage@marks
+ {in multicol OR (full page)}%
+ \unvbox\partial@page
+ \page@sofar
+ }%
\@makecol\@outputpage
- \global\let\kept@topmark\botmark
- \global\let\kept@firstmark\@empty
- \global\let\kept@botmark\@empty
- \mult@info\tw@
- {(Re)Init top mark:\MessageBreak
- \meaning\kept@topmark
- \@gobbletwo}%
\global\@colroom\@colht
\global \@mparbottom \z@
\global \@textfloatsheight \z@
@@ -636,15 +595,15 @@
\insert\@kludgeins
{\unvbox\@kludgeins}\fi
\unvbox\partial@page
- \return@nonemptymark{first}%
- \kept@firstmark
- \return@nonemptymark{bot}\kept@botmark
+ % \begin{macrocode}
+ \mc@handle@marks@and@reinserts
+ {in multicol OR (balancing)}%
\page@sofar
+ \mc@reinsert@marks
\penalty\z@
\fi
}
\def\balance@columns{%
- \get@keptmarks\mult@box
\setbox\mult@box\vbox{%
\penalty-\@M
\unvbox\mult@box
@@ -876,6 +835,7 @@
\def\set@floatcmds{%
\let\@dblfloat\@dbflt
\def\end@dblfloat{\@endfloatbox
+ \UseTaggingSocket{float/end}%
\@largefloatcheck
\outer@nobreak
\ifnum\@floatpenalty<\z@
@@ -883,60 +843,8 @@
\fi
\ifnum\@floatpenalty=-\@Mii
\@Esphack
+ \UseTaggingSocket{float/hmode/end}%
\fi}}
-\def\kept@topmark{{}{}}
-\let\kept@firstmark\@empty
-\let\kept@botmark\@empty
-\def\return@nonemptymark#1#2{%
- \ifx#2\@empty
- \else
- \mult@info\tw@
- {Returned #1 mark:\MessageBreak
- \meaning#2}%
- \toks@\expandafter{#2}%
- \mark{\the\toks@}%
- \nobreak
- \fi}
-\def\get@keptmarks#1{%
- \begingroup
- \vbadness\@M
- \setbox#1\copy#1%
- \mc@get@all@box@marks #1%
- \set@keptmarks
- \endgroup
-}
-\def\mc@get@all@box@marks #1{%
- \setbox\@tempboxa\vsplit#1to\maxdimen
- \ifvoid#1\else
- \setbox#1\vbox{\unvbox\@tempboxa \unvbox#1}%
- \mc@get@all@box@marks #1%
- \fi
-}
-\def\set@keptmarks{%
- \ifx\kept@firstmark\@empty
- \expandafter\gdef\expandafter
- \kept@firstmark
- \expandafter{\splitfirstmark}%
- \ifx\kept@firstmark\@empty\else
- \mult@info\tw@
- {Set kept first mark:\MessageBreak
- \meaning\kept@firstmark%
- \@gobbletwo}%
- \fi
- \fi
- \expandafter\def\expandafter\@tempa
- \expandafter{\splitbotmark}%
- \ifx\@tempa\@empty\else
- \global\let\kept@botmark\@tempa
- \mult@info\tw@
- {Set kept bot mark:\MessageBreak
- \meaning\kept@botmark%
- \@gobbletwo}%
- \fi}%
-\def\prep@keptmarks{%
- \if@boxedmulticols \else
- \get@keptmarks\partial@page
- \fi}
\skip0=0pt
\edef\the@zero@skip{\the\skip0}
\def\remove@discardable@items{%
@@ -1140,6 +1048,102 @@
}
\newif\ifmc@firstcol
\mc@firstcoltrue
+\ExplSyntaxOn
+\int_new:N \g__mc_curr_col_int
+\cs_new:Npn \__mc_debug_marks:n #1 { \__mark_debug:n {#1} }
+\cs_new_protected:Npn \__mc_update_mcol_structures: {
+ \__mc_debug_marks:n
+ { \typeout{Marks:~ update~ mcol~ structures~ (multicol)} }
+ \int_step_inline:nnn {\col@number + 1} { \g__mc_curr_col_int }
+ { \mark_set_structure_to_err:n { mcol - ##1 } }
+ \int_gset:Nn \g__mc_curr_col_int {1}
+ \process@cols\mult@firstbox
+ {
+ \mark_update_structure_from_material:nn
+ {column}
+ {\unvcopy\count@}
+ \mark_copy_structure:nn
+ {mcol - \int_use:N\g__mc_curr_col_int }
+ {column}
+ \int_gincr:N \g__mc_curr_col_int
+ }
+ \mark_update_structure_from_material:nn
+ {column}
+ {\unvcopy\mult@rightbox}
+ \mark_copy_structure:nn
+ { mcol - \int_use:N\g__mc_curr_col_int }
+ {column}
+ \mark_copy_structure:nn{first-column}{mcol-1}
+ \mark_copy_structure:nn{last-column} {column}
+}
+
+\cs_new_protected:Npn \__mc_update_page_structures: {
+ \__mc_debug_marks:n
+ {
+ \typeout{Marks:~ update~ page~ structure~ (multicol)}
+ }
+ \mark_update_structure_from_material:nn
+ {page}
+ {
+ \unvcopy\partial@page
+ \process@cols \mult@firstbox { \unvcopy\count@ }
+ \unvcopy\mult@rightbox
+ }
+}
+
+\cs_new_protected:Npn \__mc_prepare_mark_reinserts: {
+ \__mc_debug_marks:n
+ { \typeout{Marks:~ prepare~ for~ reinserting~ marks~ (multicol)} }
+ \mark_get_marks_for_reinsertion:nNN
+ {
+ \process@cols \mult@firstbox { \unvcopy\count@ }
+ \unvcopy\mult@rightbox
+ }
+ \l__mc_first_marks_tl
+ \l__mc_last_marks_tl
+}
+\tl_new:N \l__mc_first_marks_tl
+\tl_new:N \l__mc_last_marks_tl
+\cs_new_protected:Npn \mc@reinsert@marks{
+ \__mc_debug_marks:n
+ { \typeout{Marks:~ --~ reinsert~ marks~ (multicol)} }
+ \l__mc_first_marks_tl \l__mc_last_marks_tl
+ \__mc_debug_marks:n
+ { \typeout{Marks:~ --~ finished~ reinserting~ marks~ (multicol)} }
+}
+\cs_new_protected:Npn \mc@prepare@mark@regions {
+ \legacy_if:nT { @boxedmulticols }
+ { \mark_copy_structure:nn{saved-column}{column} }
+ \__mc_debug_marks:n
+ { \typeout{Marks:~ empty~ mcol~ regions~ (multicol)} }
+ \mark_clear_structure:n {column}
+}
+\cs_new_protected:Npn \mc@handle@marks@and@reinserts #1 {
+ \__mc_update_mcol_structures:
+ \__mc_debug_marks:n { \__mark_status:nn {#1} {\the\col@number} }
+ \__mc_prepare_mark_reinserts:
+ \legacy_if:nT { @boxedmulticols }
+ { \mark_copy_structure:nn {column}{saved-column} }
+}
+
+\cs_new_protected:Npn \mc@handle@col@andpage@marks #1 {
+ \__mc_update_mcol_structures:
+ \__mc_update_page_structures:
+ \__mc_debug_marks:n { \__mark_status:nn {#1} {\the\col@number} }
+}
+\cs_set:Npn \leftmark {\mark_use_last:nn{page}{2e-left}}
+\cs_set:Npn \rightmark {\mark_use_first:nn{page}{2e-right}}
+\NewSocket{tagsupport/page@sofar}{0}
+\NewSocketPlug {tagsupport/page@sofar}{default}
+ {
+ \process@cols\mult@firstbox
+ { \tag_mc_add_missing_to_stream:Nn \count@ {multicol} }
+ \tag_mc_add_missing_to_stream:Nn \mult@rightbox {multicol}
+ }
+\sys_if_engine_luatex:TF
+ { \AssignSocketPlug{tagsupport/page@sofar}{noop} }
+ { \AssignSocketPlug{tagsupport/page@sofar}{default} }
+\ExplSyntaxOff
\endinput
%%
%% End of file `multicol.sty'.
diff --git a/Master/texmf-dist/tex/latex/abntexto/abntexto.cls b/Master/texmf-dist/tex/latex/abntexto/abntexto.cls
index f7a74197fc3..b303de65468 100644
--- a/Master/texmf-dist/tex/latex/abntexto/abntexto.cls
+++ b/Master/texmf-dist/tex/latex/abntexto/abntexto.cls
@@ -1,6 +1,6 @@
%! Public Domain Software
-%! 2024-04-06
-%! 3.1.1-beta
+%! 2024-12-29
+%! 3.2.1-beta
%! Elayson Abreu
%! abntexto.classe@gmail.com
@@ -21,7 +21,7 @@
% \sec RECOMENDAÇÕES
-% Macros internas não podem ser modificadas ou usadas diretamente. Isso é porque essas macros podem ser redefinidas ou até renomeadas em futuras versões desta classe. Por macros internas entende-se aquelas com o prefixo do pacote em questão, neste caso, |tnba@|. Se você precisa de algum comando interno, defina outro sem anexar o prefixo.
+% Macros internas não devem ser modificadas ou usadas diretamente. Isso é porque essas macros podem ser redefinidas ou até renomeadas em futuras versões desta classe. Por macros internas entende-se aquelas com o prefixo do pacote em questão, neste caso, |tnba@|. Se você precisa de algum comando interno, defina outro sem anexar o prefixo.
% \sec PRÉ-CONFIGURAÇÕES
@@ -30,11 +30,12 @@
% \begin{code}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{abntexto}[2024-04-06 3.1.1-beta Preparation of works in ABNT standards]
+\ProvidesClass{abntexto}[2024-12-29 3.2.1-beta Preparation of works in ABNT standards]
\LoadClass{article}
\RequirePackage{geometry}
\RequirePackage{graphicx}
+\RequirePackage{csquotes}
% \end{code}
% Um atalho para |\ClassError|.
@@ -82,7 +83,9 @@
% A instrução |\textual| põe a numeração de página no topo direito nas páginas ímpares e no topo esquerdo em páginas pares. Além disso, |twoside| vai espelhar as margens horizontais.
-% O comando |\eletroniclayout| é útil para leitura do trabalho em {\em display} digital. Para ativar este {\em layout} basta escrever |\let\onesidelayout=\eletroniclayout| e |\let\twosidelayout=\eletroniclayout| no preâmbulo do documento.
+% Ambos |\pretextual| e |\textual| são iniciados automaticamente.
+
+% O comando |\eletroniclayout| é útil para leitura do trabalho em {\em display} digital.
% Por algum motivo, |\newgeometry| reseta |\baselineskip| e |\parindent|, então temos de repetir estas instruções.
@@ -117,6 +120,7 @@
\def\pretextual{%
\onesidelayout
+ \spacing{1.5}%
\let\@oddhead=\empty
\let\@evenhead=\empty
\let\@oddfoot=\empty
@@ -135,8 +139,7 @@
% Aqui, a macro |\extline| foi baseada em |\@dottedtocline|, do kernel do LaTeX. Ela não é uma instrução privada, ou seja, com prefixo interno, porque existe a chance de o leitor querer redefiní-la.
-% \begin{code}
-
+% \begin{code}
\def\extpagenumwidth{1.55em}
\def\extrightmargin{2.55em}
@@ -220,6 +223,7 @@
\Huge\bfseries #1\nbpar
\endgroup
}
+
\def\printchapter#1{%
\begingroup
\raggedright\huge\bfseries
@@ -227,6 +231,8 @@
\Huge\bfseries #1\nbpar
\endgroup
}
+\def\printnonumchapter#1{{\centering\Huge\bfseries{#1}\par}}
+
\def\printsection#1{{%
\hangfrom{\sectionfont\thesection\quad}%
\sectionfont{#1}\nbpar
@@ -303,7 +309,10 @@
\ifnotoc \else
\addtoext{toc}{chapter}{\ifnonum \else \protect\toclabelbox{\thechapter}\fi #1}%
\fi
- \printchapter{#1}%
+ \ifnonum
+ \printnonumchapter{#1}\else
+ \printchapter{#1}%
+ \fi
\markchapter{#1}%
\resetnonumnotoc
\par\nobreak \vskip\belowchapter\relax
@@ -363,7 +372,7 @@
\def\makeext#1{\@starttoc{#1}}
\def\maketoc{\makeext{toc}}
-\def\corrprint#1{\begingroup
+\def\corrprint{\begingroup
\def\tmp{section}%
\ifx\mainsecname\tmp
\let\origsection=\section
@@ -376,7 +385,6 @@
\def\chapter##1##2{\nonum \csname\mainsecname\endcsname {##2}}%
\def\section##1##2{\nonum \csname\mainsecname\endcsname {##2}}%
\fi
-
}
\def\endcorrprint{\par\endgroup}
@@ -497,16 +505,12 @@
% \sec CITAÇÕES
-% Se o pacote |csquotes| estiver carregado, ele definirá sua própria versão de |\enquote|, do contrário, o |abntexto| criará uma.
+% O comando |\enquote| é fornecido pelo pacote |csquotes|, carregado pela classe.
% \begin{code}
-\AddToHook{begindocument}{%
- \@ifpackageloaded{csquotes}{}{\protected\def\enquote#1{``#1''}}%
-}
-
\long\def\Enquote#1{\par\ifdim\lastskip>0pt \vskip-\lastskip \fi
\vskip\baselineskip
- {\noindent\leftskip=4cm \small \ignorespaces#1\unskip \nbpar}%
+ {\noindent\leftskip=4cm \small \ignorespaces#1\unskip \par}%
\vskip\baselineskip
}
% \end{code}
@@ -551,15 +555,6 @@
}
% \end{code}
-% \sec TABELAS
-
-% Na classe |article| o ambiente |table| inicia o modo flutuante, mas nesta classe ele é sinônimo de |tabular| porque faz mais sentido para min. Além disso, a classe não suporta objetos flutuantes. O comando |\place| põe o conteúdo no local especificado.
-
-% \begin{code}
-\let\table=\undefined \let\endtable=\undefined
-\newenvironment{table}[1]{\begin{tabular}{#1}}{\end{tabular}}
-% \end{code}
-
% \sec ÁREAS DE LEGENDA
% \begin{code}
@@ -571,10 +566,10 @@
\@nameedef{cf#1}{\unexpanded{#3}\expandafter\noexpand\csname the#1\endcsname}%
\@namedef{#1ext}{#4}%
\@nameedef{l@#4i}{\noexpand\extline{0pt}%
- {\csname #4labelwidth\endcsname}%
+ {\expandafter\noexpand\csname #4labelwidth\endcsname}%
{\expandafter\noexpand\csname #4ifont\endcsname}}%
\@namedef{#4labelwidth}{5.4em}%
- \@nameedef{#4labelbox}##1{\hbox to\csname #4labelwidth\endcsname{#2~##1~---\hss}}%
+ \@nameedef{#4labelbox}##1{\hbox to\expandafter\noexpand\csname #4labelwidth\endcsname{#2~##1~---\hss}}%
\AddToHook{begindocument}{%
\pdfstringdefDisableCommands{\@namedef{#4labelbox}##1{##1 }}%
}%
@@ -583,12 +578,15 @@
}
% \end{code}
+% O valor de |\placewidth| foi configurado após |\begin{document}|, pois o valor de |\linewidth| durante e depois do preâmbulo não são necessariamente iguais.
+
% \begin{code}
\newdimen\placewidth \AddToHook{begindocument}{\placewidth=.43\linewidth}
\newdimen\savedplacewidth
\def\printlegend#1{\setbox0=\hbox{\legendlabel#1}%
\hfil \vtop{\hsize=\ifdim\wd0>\legendmaxwidth \legendmaxwidth\else\wd0 \fi
+ \singlesp
\hangfrom\legendlabel #1%
\par\xdef\savedprevdepth{\the\prevdepth}%
}%
@@ -688,7 +686,11 @@
\vskip\belowplace\relax
\par\prevdepth=\savedprevdepth\relax
}
+% \end{code}
+% O suporte para tabelas que se partem entre páginas usando |longtable.sty| ainda está em desenvolvimento.
+
+% \begin{code}
\AddToHook{begindocument}{%
\def\LT@makecaption#1#2#3{\LT@mcol{\LT@cols}{c}{%
\hbox to\z@{\hss
@@ -824,7 +826,7 @@
% \sec INICIALIZAÇÃO
-% Aqui o |abntexto| define as configurações padrões. Note que |\pretextual| foi carregado após |\begin{document}| para evitar múltiplas chamadas deste, caso seja redefinido pelo usuário ou escritor de classes.
+% Aqui o |abntexto| define as configurações padrões.
% \begin{code}
\sizedef\normalsize{12pt}{14.5pt}{%
@@ -894,7 +896,11 @@
\def\annexlabelwidth{7.3em}
\def\topicslabelwidth{4ex}
+% \end{code}
+% Se o comando de estilo de página |\pretextual| fosse carregado diretamente, e o usuário quisesse redefiní-lo no preâmbulo, teria de chamar |\pretextual| novamente para que a redefinição tivesse efeito. Sendo assim, para evitar múltiplas chamadas de |\pretextual|, este foi inserido após |\begin{document}|.
+
+% \begin{code}
\AddToHook{begindocument}{\pretextual}
\endinput
diff --git a/Master/texmf-dist/tex/latex/acmart/acmart-tagged.cls b/Master/texmf-dist/tex/latex/acmart/acmart-tagged.cls
index 4a264e00c9d..851d327f25b 100644
--- a/Master/texmf-dist/tex/latex/acmart/acmart-tagged.cls
+++ b/Master/texmf-dist/tex/latex/acmart/acmart-tagged.cls
@@ -38,7 +38,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{acmart-tagged}
-[2024/08/25 v2.09 Typesetting articles for the Association for Computing Machinery]
+[2024/12/28 v2.12 Typesetting articles for the Association for Computing Machinery]
\def\@classname{acmart-tagged}
\InputIfFileExists{acmart-preload-hook.tex}{%
\ClassWarning{\@classname}{%
@@ -293,7 +293,6 @@
\RequirePackage{setspace}
\onehalfspacing
\fi
-\RequirePackage{textcase}
\if@ACM@acmcp
\RequirePackage{framed}
\RequirePackage{zref-savepos, zref-user}
@@ -778,21 +777,23 @@
have the newtxmath package installed. Please upgrade your
TeX}\@ACM@newfontsfalse}
\if@ACM@newfonts
- \RequirePackage[T1]{fontenc}
% Note that the order in which packages are loaded matters,
% and the correct order depends on the LaTeX engine used.
% See https://github.com/borisveytsman/acmart/issues/402
% and https://github.com/borisveytsman/acmart/issues/410
\ifxetex
- \RequirePackage[libertine]{newtxmath}
+ \RequirePackage{unicode-math}
+ \setmathfont[Scale=MatchUppercase]{libertinusmath-regular.otf}
\RequirePackage[tt=false]{libertine}
\setmonofont[StylisticSet=3]{inconsolata}
\else
\ifluatex
- \RequirePackage[libertine]{newtxmath}
+ \RequirePackage{unicode-math}
+ \setmathfont[Scale=MatchUppercase]{libertinusmath-regular.otf}
\RequirePackage[tt=false]{libertine}
\setmonofont[StylisticSet=3]{inconsolata}
\else
+ \RequirePackage[T1]{fontenc}
\RequirePackage[tt=false, type1=true]{libertine}
\RequirePackage[varqu]{zi4}
\RequirePackage[libertine]{newtxmath}
@@ -844,6 +845,10 @@
\let\@vspacer\@vspacer@orig}
\AtBeginEnvironment{listing*}{\let\@vspace\@vspace@orig
\let\@vspacer\@vspacer@orig}
+\AtBeginEnvironment{lstinputlisting}{\let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig}
+\AtBeginEnvironment{lstinputlisting*}{\let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig}
\RequirePackage{caption, float}
\captionsetup[table]{position=top}
@@ -1551,7 +1556,7 @@
\def\position##1{\ignorespaces}%
\def\institution##1{##1\ignorespaces}%
\def\department{\@ifnextchar[{\@department}{\@department[]}}%
- \def\@department[##1]##2{\unskip, ##2\ignorespaces}%
+ \def\@department[##1]##2{##2, \ignorespaces}%
\let\city\position
\let\state\position
\let\country\position
@@ -1603,10 +1608,12 @@
\stepcounter{footnote}\footnotetext{#1}}%
\fi}
\newcommand\authornotemark[1][\relax]{%
- \ifx#1\relax\relax\relax
- \g@addto@macro\addresses{\@authornotemark}%
- \else
- \g@addto@macro\addresses{\@@authornotemark{#1}}%
+ \if@ACM@anonymous\else
+ \ifx#1\relax\relax\relax
+ \g@addto@macro\addresses{\@authornotemark}%
+ \else
+ \g@addto@macro\addresses{\@@authornotemark{#1}}%
+ \fi
\fi}
\def\acmVolume#1{\def\@acmVolume{#1}}
\acmVolume{1}
@@ -1629,7 +1636,7 @@
\def\acmSubmissionID#1{\def\@acmSubmissionID{#1}}
\acmSubmissionID{}
\def\acmISBN#1{\def\@acmISBN{#1}}
-\acmISBN{978-x-xxxx-xxxx-x/YY/MM}
+\acmISBN{978-x-xxxx-xxxx-x/YYYY/MM}
\def\acmDOI#1{\def\@acmDOI{#1}}
\acmDOI{10.1145/nnnnnnn.nnnnnnn}
\newlength\@ACM@badge@width
@@ -1743,7 +1750,7 @@
\fi}
\AtEndDocument{%
\ifx\@received\@empty\else
- \par\bigskip\noindent\small\normalfont\@received\par
+ \par\bigskip\noindent{\small\normalfont\@received\par}%
\fi}
\define@choicekey+{ACM}{articletype}[\ACM@ArticleType\ACM@ArticleType@nr]{%
Research,Review,Discussion,Invited,Position}[Review]{%
@@ -1957,7 +1964,7 @@
Government and is in the public domain. Non-exclusive copying or
redistribution is allowed, provided that the article citation is
given and the authors and agency are clearly identified as its
- source. All others Request permissions from
+ source. Request permissions from
owner\hspace*{.5pt}/author(s).
\or % usgovmixed
ACM acknowledges that this contribution was authored or co-authored
@@ -2049,8 +2056,8 @@
the appropriate attribution.
\or % CC
\IfEq{\ACM@cc@type}{zero}{%
- \def\ACM@CC@Url{https://creativecommons.org/publicdomain/zero/1.0/legalcode}}{%
- \edef\ACM@CC@Url{https://creativecommons.org/licenses/\ACM@cc@type/\ACM@cc@version/legalcode}}%
+ \def\ACM@CC@Url{https://creativecommons.org/publicdomain/zero/1.0}}{%
+ \edef\ACM@CC@Url{https://creativecommons.org/licenses/\ACM@cc@type/\ACM@cc@version}}%
\href{\ACM@CC@Url}{\includegraphics[height=5ex]{doclicense-CC-\ACM@cc@type-88x31}}\\
\href{\ACM@CC@Url}{%
This work is licensed under a Creative Commons
@@ -2153,14 +2160,16 @@
\if@ACM@engage
{\itshape \@acmBooktitle, \@acmYear.}\par
\else
- {\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par
+ {\itshape \acmConference@shortname, \acmConference@venue}\par
\fi
\fi
\fi
\if@printcopyright
\copyright\ \@copyrightyear\ \@copyrightowner\\
\else
- \@copyrightyear.\
+ \ifx\@copyrightyear\@empty\else
+ \@copyrightyear.\
+ \fi
\fi
\if@ACM@manuscript
Manuscript submitted to ACM\\
@@ -2276,6 +2285,7 @@
\fi
\ifx\@empty\@authorsaddresses\else\bigskip\@setauthorsaddresses\fi
\zsaveposy{@ACM@acmcpbox@y}%
+ \par
}
\egroup}
\def\@specialsection#1{%
@@ -2593,9 +2603,9 @@
\global\let\and\@typeset@author@line
\def\@author##1{%
\ifx\@currentauthors\@empty
- \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}%
+ \gdef\@currentauthors{\@authorfont\MakeUppercase{##1}}%
\else
- \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}%
+ \g@addto@macro{\@currentauthors}{\and\MakeUppercase{##1}}%
\fi
\gdef\and{}}%
\def\email##1##2{}%
@@ -3244,6 +3254,20 @@
\def\@subsecfont{\bfseries\Large\section@raggedright}
\or %acmcp
\fi
+\AtBeginDocument{%
+ \@for\@tempa:=-1,0,1,2,3,4,5\do{%
+ \@ifundefined{r@tocindent\@tempa}{%
+ \@xp\gdef\csname r@tocindent\@tempa\endcsname{0pt}}{}%
+ }%
+}
+\def\@writetocindents{%
+ \begingroup
+ \@for\@tempa:=-1,0,1,2,3,4,5\do{%
+ \immediate\write\@auxout{%
+ \string\newlabel{tocindent\@tempa}{%
+ \csname r@tocindent\@tempa\endcsname}}%
+ }%
+ \endgroup}
\def\@adddotafter#1{#1\@addpunct{.}}
\def\@addspaceafter#1{#1\@addpunct{\enspace}}
\if@ACM@acmcp
diff --git a/Master/texmf-dist/tex/latex/acmart/acmart.cls b/Master/texmf-dist/tex/latex/acmart/acmart.cls
index b6ea2e7f9c4..5694f3083bc 100644
--- a/Master/texmf-dist/tex/latex/acmart/acmart.cls
+++ b/Master/texmf-dist/tex/latex/acmart/acmart.cls
@@ -38,7 +38,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{acmart}
-[2024/08/25 v2.09 Typesetting articles for the Association for Computing Machinery]
+[2024/12/28 v2.12 Typesetting articles for the Association for Computing Machinery]
\def\@classname{acmart}
\InputIfFileExists{acmart-preload-hook.tex}{%
\ClassWarning{\@classname}{%
@@ -289,7 +289,6 @@
\RequirePackage{setspace}
\onehalfspacing
\fi
-\RequirePackage{textcase}
\if@ACM@acmcp
\RequirePackage{framed}
\RequirePackage{zref-savepos, zref-user}
@@ -859,21 +858,23 @@
have the newtxmath package installed. Please upgrade your
TeX}\@ACM@newfontsfalse}
\if@ACM@newfonts
- \RequirePackage[T1]{fontenc}
% Note that the order in which packages are loaded matters,
% and the correct order depends on the LaTeX engine used.
% See https://github.com/borisveytsman/acmart/issues/402
% and https://github.com/borisveytsman/acmart/issues/410
\ifxetex
- \RequirePackage[libertine]{newtxmath}
+ \RequirePackage{unicode-math}
+ \setmathfont[Scale=MatchUppercase]{libertinusmath-regular.otf}
\RequirePackage[tt=false]{libertine}
\setmonofont[StylisticSet=3]{inconsolata}
\else
\ifluatex
- \RequirePackage[libertine]{newtxmath}
+ \RequirePackage{unicode-math}
+ \setmathfont[Scale=MatchUppercase]{libertinusmath-regular.otf}
\RequirePackage[tt=false]{libertine}
\setmonofont[StylisticSet=3]{inconsolata}
\else
+ \RequirePackage[T1]{fontenc}
\RequirePackage[tt=false, type1=true]{libertine}
\RequirePackage[varqu]{zi4}
\RequirePackage[libertine]{newtxmath}
@@ -925,6 +926,10 @@
\let\@vspacer\@vspacer@orig}
\AtBeginEnvironment{listing*}{\let\@vspace\@vspace@orig
\let\@vspacer\@vspacer@orig}
+\AtBeginEnvironment{lstinputlisting}{\let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig}
+\AtBeginEnvironment{lstinputlisting*}{\let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig}
\RequirePackage{caption, float}
\captionsetup[table]{position=top}
@@ -1632,7 +1637,7 @@
\def\position##1{\ignorespaces}%
\def\institution##1{##1\ignorespaces}%
\def\department{\@ifnextchar[{\@department}{\@department[]}}%
- \def\@department[##1]##2{\unskip, ##2\ignorespaces}%
+ \def\@department[##1]##2{##2, \ignorespaces}%
\let\city\position
\let\state\position
\let\country\position
@@ -1684,10 +1689,12 @@
\stepcounter{footnote}\footnotetext{#1}}%
\fi}
\newcommand\authornotemark[1][\relax]{%
- \ifx#1\relax\relax\relax
- \g@addto@macro\addresses{\@authornotemark}%
- \else
- \g@addto@macro\addresses{\@@authornotemark{#1}}%
+ \if@ACM@anonymous\else
+ \ifx#1\relax\relax\relax
+ \g@addto@macro\addresses{\@authornotemark}%
+ \else
+ \g@addto@macro\addresses{\@@authornotemark{#1}}%
+ \fi
\fi}
\def\acmVolume#1{\def\@acmVolume{#1}}
\acmVolume{1}
@@ -1710,7 +1717,7 @@
\def\acmSubmissionID#1{\def\@acmSubmissionID{#1}}
\acmSubmissionID{}
\def\acmISBN#1{\def\@acmISBN{#1}}
-\acmISBN{978-x-xxxx-xxxx-x/YY/MM}
+\acmISBN{978-x-xxxx-xxxx-x/YYYY/MM}
\def\acmDOI#1{\def\@acmDOI{#1}}
\acmDOI{10.1145/nnnnnnn.nnnnnnn}
\newlength\@ACM@badge@width
@@ -1824,7 +1831,7 @@
\fi}
\AtEndDocument{%
\ifx\@received\@empty\else
- \par\bigskip\noindent\small\normalfont\@received\par
+ \par\bigskip\noindent{\small\normalfont\@received\par}%
\fi}
\define@choicekey+{ACM}{articletype}[\ACM@ArticleType\ACM@ArticleType@nr]{%
Research,Review,Discussion,Invited,Position}[Review]{%
@@ -2038,7 +2045,7 @@
Government and is in the public domain. Non-exclusive copying or
redistribution is allowed, provided that the article citation is
given and the authors and agency are clearly identified as its
- source. All others Request permissions from
+ source. Request permissions from
owner\hspace*{.5pt}/author(s).
\or % usgovmixed
ACM acknowledges that this contribution was authored or co-authored
@@ -2130,8 +2137,8 @@
the appropriate attribution.
\or % CC
\IfEq{\ACM@cc@type}{zero}{%
- \def\ACM@CC@Url{https://creativecommons.org/publicdomain/zero/1.0/legalcode}}{%
- \edef\ACM@CC@Url{https://creativecommons.org/licenses/\ACM@cc@type/\ACM@cc@version/legalcode}}%
+ \def\ACM@CC@Url{https://creativecommons.org/publicdomain/zero/1.0}}{%
+ \edef\ACM@CC@Url{https://creativecommons.org/licenses/\ACM@cc@type/\ACM@cc@version}}%
\href{\ACM@CC@Url}{\includegraphics[height=5ex]{doclicense-CC-\ACM@cc@type-88x31}}\\
\href{\ACM@CC@Url}{%
This work is licensed under a Creative Commons
@@ -2234,14 +2241,16 @@
\if@ACM@engage
{\itshape \@acmBooktitle, \@acmYear.}\par
\else
- {\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par
+ {\itshape \acmConference@shortname, \acmConference@venue}\par
\fi
\fi
\fi
\if@printcopyright
\copyright\ \@copyrightyear\ \@copyrightowner\\
\else
- \@copyrightyear.\
+ \ifx\@copyrightyear\@empty\else
+ \@copyrightyear.\
+ \fi
\fi
\if@ACM@manuscript
Manuscript submitted to ACM\\
@@ -2357,6 +2366,7 @@
\fi
\ifx\@empty\@authorsaddresses\else\bigskip\@setauthorsaddresses\fi
\zsaveposy{@ACM@acmcpbox@y}%
+ \par
}
\egroup}
\def\@specialsection#1{%
@@ -2674,9 +2684,9 @@
\global\let\and\@typeset@author@line
\def\@author##1{%
\ifx\@currentauthors\@empty
- \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}%
+ \gdef\@currentauthors{\@authorfont\MakeUppercase{##1}}%
\else
- \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}%
+ \g@addto@macro{\@currentauthors}{\and\MakeUppercase{##1}}%
\fi
\gdef\and{}}%
\def\email##1##2{}%
@@ -3319,6 +3329,20 @@
\def\@subsecfont{\bfseries\Large\section@raggedright}
\or %acmcp
\fi
+\AtBeginDocument{%
+ \@for\@tempa:=-1,0,1,2,3,4,5\do{%
+ \@ifundefined{r@tocindent\@tempa}{%
+ \@xp\gdef\csname r@tocindent\@tempa\endcsname{0pt}}{}%
+ }%
+}
+\def\@writetocindents{%
+ \begingroup
+ \@for\@tempa:=-1,0,1,2,3,4,5\do{%
+ \immediate\write\@auxout{%
+ \string\newlabel{tocindent\@tempa}{%
+ \csname r@tocindent\@tempa\endcsname}}%
+ }%
+ \endgroup}
\def\@adddotafter#1{#1\@addpunct{.}}
\def\@addspaceafter#1{#1\@addpunct{\enspace}}
\if@ACM@acmcp
diff --git a/Master/texmf-dist/tex/latex/acmart/acmauthoryear.bbx b/Master/texmf-dist/tex/latex/acmart/acmauthoryear.bbx
index de5e3c6c069..b3800b96837 100644
--- a/Master/texmf-dist/tex/latex/acmart/acmauthoryear.bbx
+++ b/Master/texmf-dist/tex/latex/acmart/acmauthoryear.bbx
@@ -898,3 +898,11 @@
license=false,
language=american
}
+
+% We use lowercase DOI
+
+\DeclareFieldFormat{doi}{%
+ doi\addcolon
+ \ifhyperref
+ {\href{https://doi.org/#1}{\nolinkurl{#1}}}
+ {\nolinkurl{#1}}}
diff --git a/Master/texmf-dist/tex/latex/acmart/acmnumeric.bbx b/Master/texmf-dist/tex/latex/acmart/acmnumeric.bbx
index c13e40137f0..d83a5a10bc8 100644
--- a/Master/texmf-dist/tex/latex/acmart/acmnumeric.bbx
+++ b/Master/texmf-dist/tex/latex/acmart/acmnumeric.bbx
@@ -882,4 +882,12 @@
vcs=true,
license=false,
language=american
- } \ No newline at end of file
+ }
+
+% We use lowercase DOI
+
+\DeclareFieldFormat{doi}{%
+ doi\addcolon
+ \ifhyperref
+ {\href{https://doi.org/#1}{\nolinkurl{#1}}}
+ {\nolinkurl{#1}}}
diff --git a/Master/texmf-dist/tex/latex/acronym/acronym.sty b/Master/texmf-dist/tex/latex/acronym/acronym.sty
index cd6f1cf2921..f449c7dad5b 100644
--- a/Master/texmf-dist/tex/latex/acronym/acronym.sty
+++ b/Master/texmf-dist/tex/latex/acronym/acronym.sty
@@ -5,7 +5,7 @@
%% The original source files were:
%%
%% acronym.dtx (with options: `acronym')
-%% Copyright 1995--2020 by Tobias Oetiker (tobi@oetiker.ch)
+%% Copyright 1995--2021 by Tobias Oetiker (tobi@oetiker.ch)
%% and individual authors listed elsewhere.
%% All rights reserved.
%%
@@ -40,16 +40,22 @@
%%
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-\ProvidesPackage{acronym}[2020/04/17
- v1.47
+\ProvidesPackage{acronym}[2025/01/17
+ v1.50
Support for acronyms (Tobias Oetiker)]
\RequirePackage{suffix,xstring}
+\newif\ifAC@error
+\AC@errorfalse
+\DeclareOption{error}{\AC@errortrue}
\newif\ifAC@footnote
\AC@footnotefalse
\DeclareOption{footnote}{\AC@footnotetrue}
\newif\ifAC@nohyperlinks
\AC@nohyperlinksfalse
\DeclareOption{nohyperlinks}{\AC@nohyperlinkstrue}
+\newif\ifAC@noforwardlinks
+\AC@noforwardlinksfalse
+\DeclareOption{noforwardlinks}{\AC@noforwardlinkstrue}
\newif\ifAC@noacroprefix
\AC@noacroprefixfalse
\DeclareOption{noacroprefix}{\AC@noacroprefixtrue}
@@ -97,7 +103,7 @@
\AtBeginDocument{%
\@ifpackageloaded{hyperref}
{\let\AC@hyperlink=\hyperlink
- \let\AC@hyperref=\hyperref
+ \ifAC@noforwardlinks\else\let\AC@hyperref=\hyperref\fi
\newcommand*\AC@raisedhypertarget[2]{%
\Hy@raisedlink{\hypertarget{#1}{}}#2}%
\let\AC@hypertarget=\AC@raisedhypertarget
@@ -152,6 +158,8 @@
\def\Acp#1{\AChy@call{#1}\@Acp}%
\def\acfi#1{\AChy@call{#1}\AChy@acf}%
\def\Acfi#1{\AChy@call{#1}\AChy@Acf}%
+ \def\acfip#1{\AChy@call{#1}\AChy@acfp}%
+ \def\Acfip#1{\AChy@call{#1}\AChy@Acfp}%
\let\acsu\acs
\let\aclu\acl
\let\Aclu\Acl
@@ -201,6 +209,13 @@
\StrSplit{#1}{1}{\head}{\tail}%
\MakeUppercase\head\tail%
}
+\newcommand{\@firstupper@maybe}{%
+ \ifAC@upper
+ \expandafter\@firstupper
+ \else
+ \expandafter\@firstofone
+ \fi
+}
\ifAC@noacroprefix
\newcommand*\AC@prefix{}
\else
@@ -391,7 +406,7 @@
}
\newcommand*\AC@aclp[1]{%
\ifcsname fn@#1@PL\endcsname
- \csname fn@#1@PL\endcsname
+ \@firstupper@maybe{\csname fn@#1@PL\endcsname}%
\else
\AC@acl{#1}s%
\fi
@@ -410,16 +425,24 @@
}
\newif\ifAC@starred
\newif\ifAC@upper
+\newcommand\AC@logundefined[1]{%
+ \ifAC@error%
+ \ifx\AC@populated\AC@used%
+ \PackageError{acronym}{#1}{You should define the acronym with
+ \protect\acrodef, \protect\newacro, or \protect\acro.}
+ \else%
+ \PackageWarning{acronym}{#1}%
+ \fi%
+ \else%
+ \PackageWarning{acronym}{#1}%
+ \fi%
+}
\newcommand*\AC@get[3]{%
\ifx#1\relax
- \PackageWarning{acronym}{Acronym `#3' is not defined}%
+ \AC@logundefined{Acronym #3 is not defined}%
\textbf{#3!}%
\else
- \ifAC@upper
- \@firstupper{\expandafter#2#1}%
- \else
- \expandafter#2#1%
- \fi
+ \@firstupper@maybe{\expandafter#2#1}%
\fi
}
\newcommand*\AC@acs[1]{%
@@ -436,7 +459,7 @@
\newcommand*{\acsa}[1]{%
\texorpdfstring{\protect\@acs{#1}}{#1}}
\newcommand*{\@acs}[1]{%
- \acsfont{\AC@acs{#1}}%
+ \acsfont{\AC@placelabel@part{#1}\AC@acs{#1}}%
%% having a footnote on acs sort of defeats the purpose
%% \ifAC@footnote
%% \footnote{\AC@acl{#1}{}}%
@@ -447,15 +470,19 @@
\newcommand*{\Acl}{\AC@starredfalse\protect\@Acl}%
\WithSuffix\newcommand\Acl*{\AC@starredtrue\protect\@Acl}%
\newcommand*{\@acl}[1]{%
- \AC@acl{#1}%
+ \AC@placelabel@part{#1}\AC@acl{#1}%
\ifAC@starred\else\AC@logged{#1}\fi}
\newcommand*{\@Acl}[1]{%
- \AC@Acl{#1}%
+ \AC@placelabel@part{#1}\AC@Acl{#1}%
\ifAC@starred\else\AC@logged{#1}\fi}
-\newcommand*\@verridelabel[1]{%
+\newcommand*\AC@verridelabel[1]{%
\@bsphack
\protected@write\@auxout{}{\string\AC@undonewlabel{#1}}%
- \label{#1}%
+ \ifdefined\ltx@label%
+ \ltx@label{#1}%
+ \else%
+ \label{#1}%
+ \fi%
\AC@overriddenmessage rs{#1}%
\@esphack
}%
@@ -518,10 +545,16 @@
\let\AC@undonewlabel\@gobble
\fi
}%
+\newcommand*\AC@placelabel@part[1]{%
+ \expandafter\ifx\csname AC@\AC@prefix#1\endcsname\AC@used
+ \else
+ \texorpdfstring{\AC@phantomsection\AC@verridelabel{acro:#1}}{}%
+ \fi
+}%
\newcommand*\AC@placelabel[1]{%
\expandafter\ifx\csname AC@\AC@prefix#1\endcsname\AC@used
\else
- {\AC@phantomsection\@verridelabel{acro:#1}}%
+ {\AC@phantomsection\AC@verridelabel{acro:#1}}%
\ifAC@starred\else%
\global\expandafter\let\csname AC@\AC@prefix#1\endcsname\AC@used
\fi%
@@ -591,12 +624,12 @@
\newcommand*{\@iaci}[1]{%
\ifcsname fn@#1@IL\endcsname
\ifAC@dua
- \csname fn@#1@IL\endcsname%
+ \@firstupper@maybe{\csname fn@#1@IL\endcsname}%
\else
\expandafter\ifx\csname AC@\AC@prefix#1\endcsname\AC@used%
\csname fn@#1@IS\endcsname%
\else
- \csname fn@#1@IL\endcsname%
+ \@firstupper@maybe{\csname fn@#1@IL\endcsname}%
\fi
\fi
\else
@@ -615,17 +648,17 @@
\newcommand*{\acspa}[1]{%
\texorpdfstring{\protect\@acsp{#1}}{\AC@acsp{#1}}}
\newcommand*{\@acsp}[1]{%
- \acsfont{\AC@acsp{#1}}%
+ \acsfont{\AC@placelabel@part{#1}\AC@acsp{#1}}%
\ifAC@starred\else\AC@logged{#1}\fi}
\newcommand*{\aclp}{\AC@starredfalse\protect\@aclp}%
\WithSuffix\newcommand\aclp*{\AC@starredtrue\protect\@aclp}%
\newcommand*{\Aclp}{\AC@starredfalse\protect\@Aclp}%
\WithSuffix\newcommand\Aclp*{\AC@starredtrue\protect\@Aclp}%
\newcommand*{\@aclp}[1]{%
- \AC@aclp{#1}%
+ \AC@placelabel@part{#1}\AC@aclp{#1}%
\ifAC@starred\else\AC@logged{#1}\fi}
\newcommand*{\@Aclp}[1]{%
- \AC@Aclp{#1}%
+ \AC@placelabel@part{#1}\AC@Aclp{#1}%
\ifAC@starred\else\AC@logged{#1}\fi}
\newcommand*{\acfp}{\AC@starredfalse\protect\acfpa}%
\WithSuffix\newcommand\acfp*{\AC@starredtrue\protect\acfpa}%
@@ -705,6 +738,28 @@
\acfsfont{(\acsfont{\AC@acs{#2}})}%
}%
\ifAC@starred\else\AC@logged{#2}\fi}
+\newcommand*{\acfip}{\AC@starredfalse\protect\acfipa}%
+\WithSuffix\newcommand\acfip*{\AC@starredtrue\protect\acfipa}%
+\newcommand*{\Acfip}{\AC@starredfalse\protect\Acfipa}%
+\WithSuffix\newcommand\Acfip*{\AC@starredtrue\protect\Acfipa}%
+\newcommand{\acfipa}[2][\AC@linebreakpenalty]{%
+ \texorpdfstring{\protect\@acfip[#1]{#2}}{{\AC@aclp{#2}} (#2)}}
+\newcommand{\Acfipa}[2][\AC@linebreakpenalty]{%
+ \texorpdfstring{\protect\@Acfip[#1]{#2}}{{\AC@Aclp{#2}} (#2)}}
+\newcommand*{\@acfip}[2][\AC@linebreakpenalty]{%
+ \acffont{%
+ \AC@placelabel{#2}{\itshape\AC@aclp{#2}}%
+ \nolinebreak[#1] %
+ \acfsfont{(\acsfont{\AC@acsp{#2}})}%
+ }%
+ \ifAC@starred\else\AC@logged{#2}\fi}
+\newcommand*{\@Acfip}[2][\AC@linebreakpenalty]{%
+ \acffont{%
+ \AC@placelabel{#2}{\itshape\AC@Aclp{#2}}%
+ \nolinebreak[#1] %
+ \acfsfont{(\acsfont{\AC@acsp{#2}})}%
+ }%
+ \ifAC@starred\else\AC@logged{#2}\fi}
\newcommand{\acused}[1]{%
\global\expandafter\let\csname AC@\AC@prefix#1\endcsname\AC@used%
\AC@addtoAC@clearlist{#1}}
diff --git a/Master/texmf-dist/tex/latex/adforn/adforn.sty b/Master/texmf-dist/tex/latex/adforn/adforn.sty
index b52f55068c5..d9634438e26 100644
--- a/Master/texmf-dist/tex/latex/adforn/adforn.sty
+++ b/Master/texmf-dist/tex/latex/adforn/adforn.sty
@@ -1,26 +1,86 @@
+%%
+%% This is file `adforn.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% adforn.dtx (with options: `sty')
+%%
+%% Copyright (C) 2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% fontscripts. You may however distribute the package fontscripts without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{adforn}[2019/10/13 v1.1b adforn CFR]
-\RequirePackage{pifont}
-{\Pifont{OrnementsADF}}
-
-\newcommand*{\adforn}[1]{%
- \Pisymbol{OrnementsADF}{#1}}
-
+\RequirePackage{svn-prov}
+\ProvidesPackageSVN[\filebase.sty]{$Id: adforn.dtx 10442 2024-09-29 18:25:09Z cfrees $}[v1.2 \revinfo]
+\DefineFileInfoSVN[adforn]
+\newif\if@adforn@digonnew
+\@ifundefined{ExplLoaderFileDate}{%
+ \IfFileExists{expl3.sty}{%
+ \RequirePackage{expl3}%
+ }{%
+ \@adforn@digonnewfalse
+ }%
+}{\@adforn@digonnewtrue}
+\if@adforn@digonnew
+\ExplSyntaxOn
+\keys_define:nn { adforn }
+{
+ scale .tl_set:N = \adforn@scale,
+ scale .initial:V = \@empty,
+}
+\else
+ \let\adforn@scale\@empty
+\fi
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion }
+\IfFormatAtLeastTF { 2022-06-01 }
+{
+ \ProcessKeyOptions [ adforn ]
+}{
+ \RequirePackage { l3keys2e }
+ \ProcessKeysOptions { adforn }
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ExplSyntaxOff
+\DeclareRobustCommand{\adforn@style}{%% do NOT break line below!
+ \not@math@alphabet\adforn@style\relax
+ \fontencoding{U}\fontfamily{OrnementsADF}\fontseries{m}\fontshape{n}\selectfont
+}
+\newcommand*\adforn[1]{{\adforn@style\char#1}}
\newcommand*{\adfhalfleftarrowhead}{\adforn{1}}
\newcommand*{\adfhalfrightarrowhead}{\adforn{2}}
\gdef\adfast#1{%
- \ifcase #1 \relax
- \or \adforn{3}%
- \or \adforn{4}%
- \or \adforn{5}%
- \or \adforn{6}%
- \or \adforn{7}%
- \or \adforn{8}%
- \or \adforn{9}%
- \or \adforn{10}%
- \or \adforn{11}%
- \or \adforn{12}%
- \fi}
+\ifcase #1 \relax
+\or \adforn{3}%
+\or \adforn{4}%
+\or \adforn{5}%
+\or \adforn{6}%
+\or \adforn{7}%
+\or \adforn{8}%
+\or \adforn{9}%
+\or \adforn{10}%
+\or \adforn{11}%
+\or \adforn{12}%
+\fi}
\newcommand*{\adfhalfleafleft}{\adforn{13}}
\newcommand*{\adfdiamond}{\adforn{14}}
\newcommand*{\adfhalfleafright}{\adforn{15}}
@@ -84,7 +144,7 @@
\newcommand*{\adfbullet}{\adforn{73}}
\newcommand*{\adfS}{\adforn{74}}
\newcommand*{\adfgee}{\adforn{75}}
-
-\endinput
%% end adforn.sty
-
+\endinput
+%%
+%% End of file `adforn.sty'.
diff --git a/Master/texmf-dist/tex/latex/adforn/uornementsadf.fd b/Master/texmf-dist/tex/latex/adforn/uornementsadf.fd
index 1e0d4a6748c..3a6be26a167 100644
--- a/Master/texmf-dist/tex/latex/adforn/uornementsadf.fd
+++ b/Master/texmf-dist/tex/latex/adforn/uornementsadf.fd
@@ -1,17 +1,63 @@
-% Font declarations for OrnementsADF font
+%%
+%% This is file `uornementsadf.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% adforn.dtx (with options: `fd')
+%%
+%% Copyright (C) 2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% fontscripts. You may however distribute the package fontscripts without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{uornements.fd}[v1.2 2024/09/29 font definitions for U/OrnementsADF.]
+ \expandafter\ifx\csname adforn@scale\endcsname\relax
+ \let\adforn@@scale\@empty
+ \else
+ \edef\adforn@@scale{s*[\csname adforn@scale\endcsname]}%
+ \fi
\DeclareFontFamily{U}{OrnementsADF}{}
-\DeclareFontShape{U}{OrnementsADF}{m}{n}{<-> OrnementsADF}{}
-\DeclareFontShape{U}{OrnementsADF}{m}{sc}{<-> OrnementsADF}{}
-\DeclareFontShape{U}{OrnementsADF}{m}{it}{<-> OrnementsADF}{}
-\DeclareFontShape{U}{OrnementsADF}{m}{sl}{<-> OrnementsADF}{}
-\DeclareFontShape{U}{OrnementsADF}{m}{si}{<-> OrnementsADF}{}
-\DeclareFontShape{U}{OrnementsADF}{b}{n}{<-> OrnementsADF}{}
-\DeclareFontShape{U}{OrnementsADF}{b}{sc}{<-> OrnementsADF}{}
-\DeclareFontShape{U}{OrnementsADF}{b}{it}{<-> OrnementsADF}{}
-\DeclareFontShape{U}{OrnementsADF}{b}{sl}{<-> OrnementsADF}{}
-\DeclareFontShape{U}{OrnementsADF}{b}{si}{<-> OrnementsADF}{}
-\DeclareFontShape{U}{OrnementsADF}{bx}{n}{<-> OrnementsADF}{}
-\DeclareFontShape{U}{OrnementsADF}{bx}{sc}{<-> OrnementsADF}{}
-\DeclareFontShape{U}{OrnementsADF}{bx}{it}{<-> OrnementsADF}{}
-\DeclareFontShape{U}{OrnementsADF}{bx}{sl}{<-> OrnementsADF}{}
-\DeclareFontShape{U}{OrnementsADF}{bx}{si}{<-> OrnementsADF}{}
+\DeclareFontShape{U}{OrnementsADF}{m}{n}{
+ <-> \adforn@@scale OrnementsADF
+}{}
+\DeclareFontShape{U}{OrnementsADF}{m}{sc}{<->ssub * OrnementsADF/m/n}{}
+\DeclareFontShape{U}{OrnementsADF}{m}{it}{<->ssub * OrnementsADF/m/sc}{}
+\DeclareFontShape{U}{OrnementsADF}{m}{sl}{<->ssub * OrnementsADF/m/it}{}
+\DeclareFontShape{U}{OrnementsADF}{m}{si}{<->ssub * OrnementsADF/m/sl}{}
+\DeclareFontShape{U}{OrnementsADF}{m}{scit}{<->ssub * OrnementsADF/m/si}{}
+\DeclareFontShape{U}{OrnementsADF}{m}{scsl}{<->ssub * OrnementsADF/m/scit}{}
+\DeclareFontShape{U}{OrnementsADF}{b}{n}{<->ssub * OrnementsADF/m/scsl}{}
+\DeclareFontShape{U}{OrnementsADF}{b}{sc}{<->ssub * OrnementsADF/b/n}{}
+\DeclareFontShape{U}{OrnementsADF}{b}{it}{<->ssub * OrnementsADF/b/sc}{}
+\DeclareFontShape{U}{OrnementsADF}{b}{sl}{<->ssub * OrnementsADF/b/it}{}
+\DeclareFontShape{U}{OrnementsADF}{b}{si}{<->ssub * OrnementsADF/b/sl}{}
+\DeclareFontShape{U}{OrnementsADF}{b}{scit}{<->ssub * OrnementsADF/b/si}{}
+\DeclareFontShape{U}{OrnementsADF}{b}{scsl}{<->ssub * OrnementsADF/b/scit}{}
+\DeclareFontShape{U}{OrnementsADF}{bx}{n}{<->ssub * OrnementsADF/b/scsl}{}
+\DeclareFontShape{U}{OrnementsADF}{bx}{sc}{<->ssub * OrnementsADF/bx/n}{}
+\DeclareFontShape{U}{OrnementsADF}{bx}{it}{<->ssub * OrnementsADF/bx/sc}{}
+\DeclareFontShape{U}{OrnementsADF}{bx}{sl}{<->ssub * OrnementsADF/bx/it}{}
+\DeclareFontShape{U}{OrnementsADF}{bx}{si}{<->ssub * OrnementsADF/bx/sl}{}
+\DeclareFontShape{U}{OrnementsADF}{bx}{scit}{<->ssub * OrnementsADF/bx/si}{}
+\DeclareFontShape{U}{OrnementsADF}{bx}{scsl}{<->ssub * OrnementsADF/bx/scit}{}
+\endinput
+%%
+%% End of file `uornementsadf.fd'.
diff --git a/Master/texmf-dist/tex/latex/adfsymbols/adfarrows.sty b/Master/texmf-dist/tex/latex/adfsymbols/adfarrows.sty
index bcca7fdee25..e78454f4fdd 100644
--- a/Master/texmf-dist/tex/latex/adfsymbols/adfarrows.sty
+++ b/Master/texmf-dist/tex/latex/adfsymbols/adfarrows.sty
@@ -1,199 +1,254 @@
-%% Copyright 2019 Clea F. Rees
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Clea F. Rees.
-%
-% This work consists of all files listed in manifest.txt.
+%%
+%% This is file `adfarrows.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% adfarrows.dtx (with options: `sty')
+%%
+%% Copyright (C) 2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% fontscripts. You may however distribute the package fontscripts without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{adfarrows}[2019/10/13 v1.2b adfarrows CFR]
-\RequirePackage{pifont,fp}
-{\Pifont{ArrowsADF}}
-
-\def\adfarrows@ot{opentail}%
-\def\adfarrows@p{plain}%
-\def\adfarrows@c{comic}%
-\def\adfarrows@st{solidtail}%
-\def\adfarrows@th{thick}%
-\def\adfarrows@t{tail}%
-\def\adfarrows@e{e}%
-\def\adfarrows@east{east}%
-\def\adfarrows@se{se}%
-\def\adfarrows@southeast{southeast}%
-\def\adfarrows@s{s}%
-\def\adfarrows@south{south}%
-\def\adfarrows@sw{sw}%
-\def\adfarrows@southwest{southwest}%
-\def\adfarrows@w{w}%
-\def\adfarrows@west{w}%
-\def\adfarrows@nw{nw}%
-\def\adfarrows@northwest{northwest}%
-\def\adfarrows@n{n}%
-\def\adfarrows@north{north}%
-\def\adfarrows@ne{ne}%
-\def\adfarrows@northeast{northeast}%
-\FPset\adfarrows@base{0}%
-\FPset\adfarrows@add{0}%
-\FPset\adfarrowsbase@opentail{3}%
-\FPset\adfarrowsbase@plain{11}%
-\FPset\adfarrowsbase@comic{19}%
-\FPset\adfarrowsbase@solidtail{29}%
-\FPset\adfarrowsbase@thick{37}%
-\FPset\adfarrowsbase@tail{45}%
-\FPset\adfarrowsdir@e{0}%
-\FPset\adfarrowsdir@se{1}%
-\FPset\adfarrowsdir@s{2}%
-\FPset\adfarrowsdir@sw{3}%
-\FPset\adfarrowsdir@w{4}%
-\FPset\adfarrowsdir@nw{5}%
-\FPset\adfarrowsdir@n{6}%
-\FPset\adfarrowsdir@ne{7}%
-\newcommand*{\adfarrows@dir}[4]{%
- \edef\adfarrows@tempw{#1}%
- \edef\adfarrows@tempx{#2}%
- \edef\adfarrows@tempy{#3}%
- \edef\adfarrows@tempz{#4}%
- \ifx\adfarrows@tempw\adfarrows@tempz
- \FPset\adfarrows@addtemp{\adfarrows@tempy}%
- \global\let\adfarrows@add\adfarrows@addtemp
- \else
- \ifx\adfarrows@tempx\adfarrows@tempz
- \FPset\adfarrows@addtemp{\adfarrows@tempy}%
- \global\let\adfarrows@add\adfarrows@addtemp
- \fi
- \fi}
-\newcommand*{\adfarrows@fam}[4]{%
- \edef\adfarrows@tempw{#1}%
- \edef\adfarrows@tempx{#2}%
- \edef\adfarrows@tempy{#3}%
- \edef\adfarrows@tempz{#4}%
- \ifx\adfarrows@tempw\adfarrows@tempz
- \FPset\adfarrows@basetemp{\adfarrows@tempy}%
- \global\let\adfarrows@base\adfarrows@basetemp
- \else
- \ifx\adfarrows@tempx\adfarrows@tempz
- \FPset\adfarrows@basetemp{\adfarrows@tempy}%
- \global\let\adfarrows@base\adfarrows@basetemp
- \fi
- \fi}
-\newcommand*{\adfarrow}[2][]{%
- \def\adfarrows@tempa{#1}%
- \ifx\adfarrows@tempa\@empty
- \Pisymbol{ArrowsADF}{#2}%
- \else
- \adfarrows@fam{1}{\adfarrows@ot}{\adfarrowsbase@opentail}{#1}%
- \adfarrows@fam{2}{\adfarrows@p}{\adfarrowsbase@plain}{#1}%
- \adfarrows@fam{3}{\adfarrows@c}{\adfarrowsbase@comic}{#1}%
- \adfarrows@fam{4}{\adfarrows@st}{\adfarrowsbase@solidtail}{#1}%
- \adfarrows@fam{5}{\adfarrows@th}{\adfarrowsbase@thick}{#1}%
- \adfarrows@fam{6}{\adfarrows@t}{\adfarrowsbase@tail}{#1}%
- \adfarrows@dir{\adfarrows@s}{\adfarrows@south}{\adfarrowsdir@s}{#2}%
- \adfarrows@dir{\adfarrows@se}{\adfarrows@southeast}{\adfarrowsdir@se}{#2}%
- \adfarrows@dir{\adfarrows@sw}{\adfarrows@southwest}{\adfarrowsdir@sw}{#2}%
- \adfarrows@dir{\adfarrows@n}{\adfarrows@north}{\adfarrowsdir@n}{#2}%
- \adfarrows@dir{\adfarrows@ne}{\adfarrows@northeast}{\adfarrowsdir@ne}{#2}%
- \adfarrows@dir{\adfarrows@nw}{\adfarrows@northwest}{\adfarrowsdir@nw}{#2}%
- \adfarrows@dir{\adfarrows@w}{\adfarrows@west}{\adfarrowsdir@w}{#2}%
- \adfarrows@dir{\adfarrows@e}{\adfarrows@east}{\adfarrowsdir@e}{#2}%
- \FPadd\adfarrows@arrow\adfarrows@base\adfarrows@add
- \FPround{\adfarrows@arrow}{\adfarrows@arrow}{0}%
- \ifnum\adfarrows@arrow < 53
- \ifnum\adfarrows@arrow > 0
- \Pisymbol{ArrowsADF}{\adfarrows@arrow}%
- \else
- \PackageError{adfarrows}{adfarrows@arrow must be greater than 0 but is \adfarrows@arrow}%
- \fi
- \else
- \PackageError{adfarrows}{adfarrows@arrow must be less than than 53 but is \adfarrows@arrow}%
- \fi
- \fi}
-
+\RequirePackage{svn-prov}
+\ProvidesPackageSVN[\filebase.sty]{$Id: adfarrows.dtx 10467 2024-10-03 23:14:27Z cfrees $}[v1.3 \revinfo ArrowsADF]
+\DefineFileInfoSVN[adfarrows]
+\newif\if@adfarrows@digonnew
+\@ifundefined{ExplLoaderFileDate}{%
+ \IfFileExists{expl3.sty}{%
+ \RequirePackage{expl3}%
+ }{%
+ \@adfarrows@digonnewfalse
+ }%
+}{\@adfarrows@digonnewtrue}
+\if@adfarrows@digonnew
+\ExplSyntaxOn
+\keys_define:nn { adfarrows }
+{
+ scale .tl_set:N = \adfarrows@scale,
+ scale .initial:V = \@empty,
+}
+\else
+ \let\adfarrows@scale\@empty
+\fi
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion }
+\IfFormatAtLeastTF { 2022-06-01 }
+{
+ \ProcessKeyOptions [ adfarrows ]
+}{
+ \RequirePackage { l3keys2e }
+ \ProcessKeysOptions { adfarrows }
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ExplSyntaxOff
+\DeclareRobustCommand{\adfarrows@style}{%% do NOT break line below!
+ \not@math@alphabet\adfarrows@style\relax
+ \fontencoding{U}\fontfamily{ArrowsADF}\fontseries{m}\fontshape{n}\selectfont
+}
+\ExplSyntaxOn
+\int_new:N \l__adfarrows_base_ot_int
+\int_set:Nn \l__adfarrows_base_ot_int {1}
+\int_new:N \l__adfarrows_base_p_int
+\int_set:Nn \l__adfarrows_base_p_int {2}
+\int_new:N \l__adfarrows_base_c_int
+\int_set:Nn \l__adfarrows_base_c_int {3}
+\int_new:N \l__adfarrows_base_st_int
+\int_set:Nn \l__adfarrows_base_st_int {4}
+\int_new:N \l__adfarrows_base_th_int
+\int_set:Nn \l__adfarrows_base_th_int {5}
+\int_new:N \l__adfarrows_base_t_int
+\int_set:Nn \l__adfarrows_base_t_int {6}
+\int_new:N \l__adfarrows_dir_e_int
+\int_set:Nn \l__adfarrows_dir_e_int {0}
+\int_new:N \l__adfarrows_dir_east_int
+\int_set:Nn \l__adfarrows_dir_east_int {0}
+\int_new:N \l__adfarrows_dir_se_int
+\int_set:Nn \l__adfarrows_dir_se_int {1}
+\int_new:N \l__adfarrows_dir_southeast_int
+\int_set:Nn \l__adfarrows_dir_southeast_int {1}
+\int_new:N \l__adfarrows_dir_s_int
+\int_set:Nn \l__adfarrows_dir_s_int {2}
+\int_new:N \l__adfarrows_dir_south_int
+\int_set:Nn \l__adfarrows_dir_south_int {2}
+\int_new:N \l__adfarrows_dir_sw_int
+\int_set:Nn \l__adfarrows_dir_sw_int {3}
+\int_new:N \l__adfarrows_dir_southwest_int
+\int_set:Nn \l__adfarrows_dir_southwest_int {3}
+\int_new:N \l__adfarrows_dir_w_int
+\int_set:Nn \l__adfarrows_dir_w_int {4}
+\def\adfarrows@west{west}%
+\int_new:N \l__adfarrows_dir_west_int
+\int_set:Nn \l__adfarrows_dir_west_int {4}
+\int_new:N \l__adfarrows_dir_nw_int
+\int_set:Nn \l__adfarrows_dir_nw_int {5}
+\int_new:N \l__adfarrows_dir_northwest_int
+\int_set:Nn \l__adfarrows_dir_northwest_int {5}
+\int_new:N \l__adfarrows_dir_n_int
+\int_set:Nn \l__adfarrows_dir_n_int {6}
+\int_new:N \l__adfarrows_dir_north_int
+\int_set:Nn \l__adfarrows_dir_north_int {6}
+\int_new:N \l__adfarrows_dir_ne_int
+\int_set:Nn \l__adfarrows_dir_ne_int {7}
+\int_new:N \l__adfarrows_dir_northeast_int
+\int_set:Nn \l__adfarrows_dir_northeast_int {7}
+\int_new:N \g__adfarrows_base_int
+\int_new:N \g__adfarrows_add_int
+\int_new:N \l__adfarrows_base_opentail_int
+\int_set:Nn \l__adfarrows_base_opentail_int {3}
+\int_new:N \l__adfarrows_base_plain_int
+\int_set:Nn \l__adfarrows_base_plain_int {11}
+\int_new:N \l__adfarrows_base_comic_int
+\int_set:Nn \l__adfarrows_base_comic_int {19}
+\int_new:N \l__adfarrows_base_solidtail_int
+\int_set:Nn \l__adfarrows_base_solidtail_int {29}
+\int_new:N \l__adfarrows_base_thick_int
+\int_set:Nn \l__adfarrows_base_thick_int {37}
+\int_new:N \l__adfarrows_base_tail_int
+\int_set:Nn \l__adfarrows_base_tail_int {45}
+\int_new:N \l__adfarrows_arrow_int
+\cs_new_nopar:Nn \__adfarrows_arrow:nn
+{
+ \int_if_exist:cTF { l__adfarrows_base_#1_int }
+ {
+ \int_gset_eq:Nc \g__adfarrows_base_int { l__adfarrows_base_#1_int }
+ }{ % some kind of error check needed here
+ \int_gset:Nn \g__adfarrows_base_int { #1 }
+ }
+ \int_if_exist:cTF { l__adfarrows_dir_#2_int }
+ {
+ \int_gset_eq:Nc \g__adfarrows_add_int { l__adfarrows_dir_#2_int }
+ }{
+ \PackageError{adfarrows}{#2 ~not~a~valid~direction.~Setting~east~}
+ \int_gzero:N \g__adfarrows_add_int
+ }
+ \int_set:Nn \l__adfarrows_arrow_int { \g__adfarrows_base_int + \g__adfarrows_add_int }
+ \int_compare:nNnTF { \l__adfarrows_arrow_int } < { 53 }
+ { %^^A ~ \ifnum ... \the \numexpr ... N \the \numexpr ... \else ... \fi
+ \int_compare:nNnTF { \l__adfarrows_arrow_int } > { 0 }
+ {
+ \expandafter\adfarrows@style\expandafter\char \int_to_arabic:n {
+ \l__adfarrows_arrow_int
+ }
+ }{
+ \PackageError{adfarrows}{\textbackslash l__adfarrows_arrow_int~must~be~greater~than~0~but~is~\int_to_arabic:n {\l__adfarrows_arrow_int}}%
+ }
+ }{
+ \PackageError{adfarrows}{\textbackslash l__adfarrows_arrow_int ~ must~be~less~than~than~53~but~is~\int_to_arabic:n {\l__adfarrows_arrow_int}}%
+ }
+}
+\cs_new_nopar:Nn \__adfarrows_arrow:n
+{
+ \adfarrows@style\char#1
+}
+\NewDocumentCommand \adfarrow { o m }
+{
+ \group_begin:
+ \IfValueTF { #1 }
+ {
+ \__adfarrows_arrow:nn { #1 } { #2 }
+ }{
+ \__adfarrows_arrow:n { #2 }
+ }
+ \group_end:
+}
+\ExplSyntaxOff
\newcommand*{\adfhalfarrowright}{\adfarrow{1}}
\newcommand*{\adfhalfarrowleft}{\adfarrow{2}}
\newcommand*{\adfhalfarrowrightsolid}{\adfarrow{27}}
\newcommand*{\adfhalfarrowleftsolid}{\adfarrow{28}}
-
\gdef\adfarrowe#1{%
- \ifcase #1 \relax
- \or \adfarrow{3}%
- \or \adfarrow{11}%
- \or \adfarrow{19}%
- \or \adfarrow{29}%
- \or \adfarrow{37}%
- \or \adfarrow{45}%
- \fi}
+\ifcase #1 \relax
+\or \adfarrow{3}%
+\or \adfarrow{11}%
+\or \adfarrow{19}%
+\or \adfarrow{29}%
+\or \adfarrow{37}%
+\or \adfarrow{45}%
+\fi}
\gdef\adfarrowse#1{%
- \ifcase #1 \relax
- \or \adfarrow{4}%
- \or \adfarrow{12}%
- \or \adfarrow{20}%
- \or \adfarrow{30}%
- \or \adfarrow{38}%
- \or \adfarrow{46}%
- \fi}
+\ifcase #1 \relax
+\or \adfarrow{4}%
+\or \adfarrow{12}%
+\or \adfarrow{20}%
+\or \adfarrow{30}%
+\or \adfarrow{38}%
+\or \adfarrow{46}%
+\fi}
\gdef\adfarrows#1{%
- \ifcase #1 \relax
- \or \adfarrow{5}%
- \or \adfarrow{13}%
- \or \adfarrow{21}%
- \or \adfarrow{31}%
- \or \adfarrow{39}%
- \or \adfarrow{47}%
- \fi}
+\ifcase #1 \relax
+\or \adfarrow{5}%
+\or \adfarrow{13}%
+\or \adfarrow{21}%
+\or \adfarrow{31}%
+\or \adfarrow{39}%
+\or \adfarrow{47}%
+\fi}
\gdef\adfarrowsw#1{%
- \ifcase #1 \relax
- \or \adfarrow{6}%
- \or \adfarrow{14}%
- \or \adfarrow{22}%
- \or \adfarrow{32}%
- \or \adfarrow{40}%
- \or \adfarrow{48}%
- \fi}
+\ifcase #1 \relax
+\or \adfarrow{6}%
+\or \adfarrow{14}%
+\or \adfarrow{22}%
+\or \adfarrow{32}%
+\or \adfarrow{40}%
+\or \adfarrow{48}%
+\fi}
\gdef\adfarroww#1{%
- \ifcase #1 \relax
- \or \adfarrow{7}%
- \or \adfarrow{15}%
- \or \adfarrow{23}%
- \or \adfarrow{33}%
- \or \adfarrow{41}%
- \or \adfarrow{49}%
- \fi}
+\ifcase #1 \relax
+\or \adfarrow{7}%
+\or \adfarrow{15}%
+\or \adfarrow{23}%
+\or \adfarrow{33}%
+\or \adfarrow{41}%
+\or \adfarrow{49}%
+\fi}
\gdef\adfarrownw#1{%
- \ifcase #1 \relax
- \or \adfarrow{8}%
- \or \adfarrow{16}%
- \or \adfarrow{24}%
- \or \adfarrow{34}%
- \or \adfarrow{42}%
- \or \adfarrow{50}%
- \fi}
+\ifcase #1 \relax
+\or \adfarrow{8}%
+\or \adfarrow{16}%
+\or \adfarrow{24}%
+\or \adfarrow{34}%
+\or \adfarrow{42}%
+\or \adfarrow{50}%
+\fi}
\gdef\adfarrown#1{%
- \ifcase #1 \relax
- \or \adfarrow{9}%
- \or \adfarrow{17}%
- \or \adfarrow{25}%
- \or \adfarrow{35}%
- \or \adfarrow{43}%
- \or \adfarrow{51}%
- \fi}
+\ifcase #1 \relax
+\or \adfarrow{9}%
+\or \adfarrow{17}%
+\or \adfarrow{25}%
+\or \adfarrow{35}%
+\or \adfarrow{43}%
+\or \adfarrow{51}%
+\fi}
\gdef\adfarrowne#1{%
- \ifcase #1 \relax
- \or \adfarrow{10}%
- \or \adfarrow{18}%
- \or \adfarrow{26}%
- \or \adfarrow{36}%
- \or \adfarrow{44}%
- \or \adfarrow{52}%
- \fi}
-
-\endinput
+\ifcase #1 \relax
+\or \adfarrow{10}%
+\or \adfarrow{18}%
+\or \adfarrow{26}%
+\or \adfarrow{36}%
+\or \adfarrow{44}%
+\or \adfarrow{52}%
+\fi}
%% end adfarrows.sty
-
+\endinput
+%%
+%% End of file `adfarrows.sty'.
diff --git a/Master/texmf-dist/tex/latex/adfsymbols/adfbullets.sty b/Master/texmf-dist/tex/latex/adfsymbols/adfbullets.sty
index 50382d51259..f919962052e 100644
--- a/Master/texmf-dist/tex/latex/adfsymbols/adfbullets.sty
+++ b/Master/texmf-dist/tex/latex/adfsymbols/adfbullets.sty
@@ -1,27 +1,72 @@
-%% Copyright 2019 Clea F. Rees
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Clea F. Rees.
-%
-% This work consists of all files listed in manifest.txt.
+%%
+%% This is file `adfbullets.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% adfbullets.dtx (with options: `sty')
+%%
+%% Copyright (C) 2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% fontscripts. You may however distribute the package fontscripts without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{adfbullets}[2019/10/13 v1.2b adfbullets CFR]
-\RequirePackage{pifont}
-{\Pifont{BulletsADF}}
-
-\newcommand*{\adfbullet}[1]{%
- \Pisymbol{BulletsADF}{#1}}
-
-
-\endinput
+\RequirePackage{svn-prov}
+\ProvidesPackageSVN[\filebase.sty]{$Id: adfbullets.dtx 10467 2024-10-03 23:14:27Z cfrees $}[v1.3 \revinfo]
+\DefineFileInfoSVN[adfbullets]
+\newif\if@adfbullets@digonnew
+\@ifundefined{ExplLoaderFileDate}{%
+ \IfFileExists{expl3.sty}{%
+ \RequirePackage{expl3}%
+ }{%
+ \@adfbullets@digonnewfalse
+ }%
+}{\@adfbullets@digonnewtrue}
+\if@adfbullets@digonnew
+\ExplSyntaxOn
+\keys_define:nn { adfbullets }
+{
+ scale .tl_set:N = \adfbullets@scale,
+ scale .initial:V = \@empty,
+}
+\else
+ \let\adfbullets@scale\@empty
+\fi
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion }
+\IfFormatAtLeastTF { 2022-06-01 }
+{
+ \ProcessKeyOptions [ adfbullets ]
+}{
+ \RequirePackage { l3keys2e }
+ \ProcessKeysOptions { adfbullets }
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ExplSyntaxOff
+\DeclareRobustCommand{\adfbullets@style}{%% do NOT break line below!
+ \not@math@alphabet\adfbullets@style\relax
+ \fontencoding{U}\fontfamily{BulletsADF}\fontseries{m}\fontshape{n}\selectfont
+}
+\newcommand*\adfbullet[1]{{\adfbullets@style\char#1}}
%% end adfbullets.sty
-
+\endinput
+%%
+%% End of file `adfbullets.sty'.
diff --git a/Master/texmf-dist/tex/latex/adfsymbols/uarrowsadf.fd b/Master/texmf-dist/tex/latex/adfsymbols/uarrowsadf.fd
index 634251f238a..4a58b8ae208 100644
--- a/Master/texmf-dist/tex/latex/adfsymbols/uarrowsadf.fd
+++ b/Master/texmf-dist/tex/latex/adfsymbols/uarrowsadf.fd
@@ -1,17 +1,63 @@
-% Font declarations for ArrowsADF font
+%%
+%% This is file `uarrowsadf.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% adfarrows.dtx (with options: `fd')
+%%
+%% Copyright (C) 2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% fontscripts. You may however distribute the package fontscripts without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{uarrowsadf.fd}[v1.3 2024/10/01 font definitions for U/ArrowsADF.]
+ \expandafter\ifx\csname adfarrows@scale\endcsname\relax
+ \let\adfarrows@@scale\@empty
+ \else
+ \edef\adfarrows@@scale{s*[\csname adfarrows@scale\endcsname]}%
+ \fi
\DeclareFontFamily{U}{ArrowsADF}{}
-\DeclareFontShape{U}{ArrowsADF}{m}{n}{<-> ArrowsADF}{}
-\DeclareFontShape{U}{ArrowsADF}{m}{sc}{<-> ArrowsADF}{}
-\DeclareFontShape{U}{ArrowsADF}{m}{it}{<-> ArrowsADF}{}
-\DeclareFontShape{U}{ArrowsADF}{m}{sl}{<-> ArrowsADF}{}
-\DeclareFontShape{U}{ArrowsADF}{m}{si}{<-> ArrowsADF}{}
-\DeclareFontShape{U}{ArrowsADF}{b}{n}{<-> ArrowsADF}{}
-\DeclareFontShape{U}{ArrowsADF}{b}{sc}{<-> ArrowsADF}{}
-\DeclareFontShape{U}{ArrowsADF}{b}{it}{<-> ArrowsADF}{}
-\DeclareFontShape{U}{ArrowsADF}{b}{sl}{<-> ArrowsADF}{}
-\DeclareFontShape{U}{ArrowsADF}{b}{si}{<-> ArrowsADF}{}
-\DeclareFontShape{U}{ArrowsADF}{bx}{n}{<-> ArrowsADF}{}
-\DeclareFontShape{U}{ArrowsADF}{bx}{sc}{<-> ArrowsADF}{}
-\DeclareFontShape{U}{ArrowsADF}{bx}{it}{<-> ArrowsADF}{}
-\DeclareFontShape{U}{ArrowsADF}{bx}{sl}{<-> ArrowsADF}{}
-\DeclareFontShape{U}{ArrowsADF}{bx}{si}{<-> ArrowsADF}{}
+\DeclareFontShape{U}{ArrowsADF}{m}{n}{
+ <-> \adfarrows@@scale ArrowsADF
+}{}
+\DeclareFontShape{U}{ArrowsADF}{m}{sc}{<->ssub * ArrowsADF/m/n}{}
+\DeclareFontShape{U}{ArrowsADF}{m}{it}{<->ssub * ArrowsADF/m/sc}{}
+\DeclareFontShape{U}{ArrowsADF}{m}{sl}{<->ssub * ArrowsADF/m/it}{}
+\DeclareFontShape{U}{ArrowsADF}{m}{si}{<->ssub * ArrowsADF/m/sl}{}
+\DeclareFontShape{U}{ArrowsADF}{m}{scit}{<->ssub * ArrowsADF/m/si}{}
+\DeclareFontShape{U}{ArrowsADF}{m}{scsl}{<->ssub * ArrowsADF/m/scit}{}
+\DeclareFontShape{U}{ArrowsADF}{b}{n}{<->ssub * ArrowsADF/m/scsl}{}
+\DeclareFontShape{U}{ArrowsADF}{b}{sc}{<->ssub * ArrowsADF/b/n}{}
+\DeclareFontShape{U}{ArrowsADF}{b}{it}{<->ssub * ArrowsADF/b/sc}{}
+\DeclareFontShape{U}{ArrowsADF}{b}{sl}{<->ssub * ArrowsADF/b/it}{}
+\DeclareFontShape{U}{ArrowsADF}{b}{si}{<->ssub * ArrowsADF/b/sl}{}
+\DeclareFontShape{U}{ArrowsADF}{b}{scit}{<->ssub * ArrowsADF/b/si}{}
+\DeclareFontShape{U}{ArrowsADF}{b}{scsl}{<->ssub * ArrowsADF/b/scit}{}
+\DeclareFontShape{U}{ArrowsADF}{bx}{n}{<->ssub * ArrowsADF/b/scsl}{}
+\DeclareFontShape{U}{ArrowsADF}{bx}{sc}{<->ssub * ArrowsADF/bx/n}{}
+\DeclareFontShape{U}{ArrowsADF}{bx}{it}{<->ssub * ArrowsADF/bx/sc}{}
+\DeclareFontShape{U}{ArrowsADF}{bx}{sl}{<->ssub * ArrowsADF/bx/it}{}
+\DeclareFontShape{U}{ArrowsADF}{bx}{si}{<->ssub * ArrowsADF/bx/sl}{}
+\DeclareFontShape{U}{ArrowsADF}{bx}{scit}{<->ssub * ArrowsADF/bx/si}{}
+\DeclareFontShape{U}{ArrowsADF}{bx}{scsl}{<->ssub * ArrowsADF/bx/scit}{}
+\endinput
+%%
+%% End of file `uarrowsadf.fd'.
diff --git a/Master/texmf-dist/tex/latex/adfsymbols/ubulletsadf.fd b/Master/texmf-dist/tex/latex/adfsymbols/ubulletsadf.fd
index 1b7b18cdde6..1c634752a9a 100644
--- a/Master/texmf-dist/tex/latex/adfsymbols/ubulletsadf.fd
+++ b/Master/texmf-dist/tex/latex/adfsymbols/ubulletsadf.fd
@@ -1,17 +1,63 @@
-% Font declarations for BulletsADF font
+%%
+%% This is file `ubulletsadf.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% adfbullets.dtx (with options: `fd')
+%%
+%% Copyright (C) 2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% fontscripts. You may however distribute the package fontscripts without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{ubulletsadf.fd}[v1.3 2024/10/01 font definitions for U/BulletsADF.]
+ \expandafter\ifx\csname adfbullets@scale\endcsname\relax
+ \let\adfbullets@@scale\@empty
+ \else
+ \edef\adfbullets@@scale{s*[\csname adfbullets@scale\endcsname]}%
+ \fi
\DeclareFontFamily{U}{BulletsADF}{}
-\DeclareFontShape{U}{BulletsADF}{m}{n}{<-> BulletsADF}{}
-\DeclareFontShape{U}{BulletsADF}{m}{sc}{<-> BulletsADF}{}
-\DeclareFontShape{U}{BulletsADF}{m}{it}{<-> BulletsADF}{}
-\DeclareFontShape{U}{BulletsADF}{m}{sl}{<-> BulletsADF}{}
-\DeclareFontShape{U}{BulletsADF}{m}{si}{<-> BulletsADF}{}
-\DeclareFontShape{U}{BulletsADF}{b}{n}{<-> BulletsADF}{}
-\DeclareFontShape{U}{BulletsADF}{b}{sc}{<-> BulletsADF}{}
-\DeclareFontShape{U}{BulletsADF}{b}{it}{<-> BulletsADF}{}
-\DeclareFontShape{U}{BulletsADF}{b}{sl}{<-> BulletsADF}{}
-\DeclareFontShape{U}{BulletsADF}{b}{si}{<-> BulletsADF}{}
-\DeclareFontShape{U}{BulletsADF}{bx}{n}{<-> BulletsADF}{}
-\DeclareFontShape{U}{BulletsADF}{bx}{sc}{<-> BulletsADF}{}
-\DeclareFontShape{U}{BulletsADF}{bx}{it}{<-> BulletsADF}{}
-\DeclareFontShape{U}{BulletsADF}{bx}{sl}{<-> BulletsADF}{}
-\DeclareFontShape{U}{BulletsADF}{bx}{si}{<-> BulletsADF}{}
+\DeclareFontShape{U}{BulletsADF}{m}{n}{
+ <-> \adfbullets@@scale BulletsADF
+}{}
+\DeclareFontShape{U}{BulletsADF}{m}{sc}{<->ssub * BulletsADF/m/n}{}
+\DeclareFontShape{U}{BulletsADF}{m}{it}{<->ssub * BulletsADF/m/sc}{}
+\DeclareFontShape{U}{BulletsADF}{m}{sl}{<->ssub * BulletsADF/m/it}{}
+\DeclareFontShape{U}{BulletsADF}{m}{si}{<->ssub * BulletsADF/m/sl}{}
+\DeclareFontShape{U}{BulletsADF}{m}{scit}{<->ssub * BulletsADF/m/si}{}
+\DeclareFontShape{U}{BulletsADF}{m}{scsl}{<->ssub * BulletsADF/m/scit}{}
+\DeclareFontShape{U}{BulletsADF}{b}{n}{<->ssub * BulletsADF/m/scsl}{}
+\DeclareFontShape{U}{BulletsADF}{b}{sc}{<->ssub * BulletsADF/b/n}{}
+\DeclareFontShape{U}{BulletsADF}{b}{it}{<->ssub * BulletsADF/b/sc}{}
+\DeclareFontShape{U}{BulletsADF}{b}{sl}{<->ssub * BulletsADF/b/it}{}
+\DeclareFontShape{U}{BulletsADF}{b}{si}{<->ssub * BulletsADF/b/sl}{}
+\DeclareFontShape{U}{BulletsADF}{b}{scit}{<->ssub * BulletsADF/b/si}{}
+\DeclareFontShape{U}{BulletsADF}{b}{scsl}{<->ssub * BulletsADF/b/scit}{}
+\DeclareFontShape{U}{BulletsADF}{bx}{n}{<->ssub * BulletsADF/b/scsl}{}
+\DeclareFontShape{U}{BulletsADF}{bx}{sc}{<->ssub * BulletsADF/bx/n}{}
+\DeclareFontShape{U}{BulletsADF}{bx}{it}{<->ssub * BulletsADF/bx/sc}{}
+\DeclareFontShape{U}{BulletsADF}{bx}{sl}{<->ssub * BulletsADF/bx/it}{}
+\DeclareFontShape{U}{BulletsADF}{bx}{si}{<->ssub * BulletsADF/bx/sl}{}
+\DeclareFontShape{U}{BulletsADF}{bx}{scit}{<->ssub * BulletsADF/bx/si}{}
+\DeclareFontShape{U}{BulletsADF}{bx}{scsl}{<->ssub * BulletsADF/bx/scit}{}
+\endinput
+%%
+%% End of file `ubulletsadf.fd'.
diff --git a/Master/texmf-dist/tex/latex/afparticle/afparticle.cls b/Master/texmf-dist/tex/latex/afparticle/afparticle.cls
deleted file mode 100644
index 37b2b4d04e0..00000000000
--- a/Master/texmf-dist/tex/latex/afparticle/afparticle.cls
+++ /dev/null
@@ -1,297 +0,0 @@
-%%
-%% This is file `afparticle.cls',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% afparticle.dtx (with options: `class')
-%%
-%% IMPORTANT NOTICE:
-%%
-%% For the copyright see the source file.
-%%
-%% Any modified versions of this file must be renamed
-%% with new filenames distinct from afparticle.cls.
-%%
-%% For distribution of the original source see the terms
-%% for copying and modification in the file afparticle.dtx.
-%%
-%% This generated file may be distributed as long as the
-%% original source files, as listed above, are part of the
-%% same distribution. (The sources need not necessarily be
-%% in the same archive or directory.)
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{afparticle}
-[2014/12/23 v1.3 Typesetting articles for Archives of Forensic Psychology]
-\def\AFP@DisableMacro#1{\ClassError{afparticle}{The macro
- \expandafter\protect\csname#1\endcsname\space
- is disabled}{The command
- \expandafter\protect\csname#1\endcsname\space
- is introduced in the
- elsarticle class.\MessageBreak It is disabled in afpartcile
- class}}
-\let\@xp=\expandafter
-\let\@nx=\noexpand
-\long\def\@ifempty#1{\@xifempty#1@@..\@nil}
-\long\def\@xifempty#1#2@#3#4#5\@nil{%
- \ifx#3#4\@xp\@firstoftwo\else\@xp\@secondoftwo\fi}
-\long\def\@ifnotempty#1{\@ifempty{#1}{}}
-\newtoks\@emptytoks
-\def\@andlista#1#2\and#3\and{\@andlistc{#2}\@ifnotempty{#3}{%
- \@andlistb#1{#3}}}
-\def\@andlistb#1#2#3#4#5\and{%
- \@ifempty{#5}{%
- \@andlistc{#2#4}%
- }{%
- \@andlistc{#1#4}\@andlistb{#1}{#3}{#3}{#5}%
- }}
-\let\@andlistc\@iden
-\newcommand{\nxandlist}[4]{%
- \def\@andlistc##1{\toks@\@xp{\the\toks@##1}}%
- \toks@{\toks@\@emptytoks \@andlista{{#1}{#2}{#3}}}%
- \the\@xp\toks@#4\and\and
- \edef#4{\the\toks@}%
- \let\@andlistc\@iden}
-\def\@@and{and}
-\def\author@andify{%
- \nxandlist {\unskip ,\penalty-1 \space\ignorespaces}%
- {\unskip {} \@@and~}%
- {\unskip ,\penalty-2 \space\@@and~}%
-}
-\RequirePackage{xkeyval}
-\def\AFP@OptionWarning#1{\ClassWarning{afparticle}{The option #1 is
- not used for afparticle. I will silently ignore it}}
-\DeclareOptionX{3p}{\AFP@OptionWarning{\CurrentOption}}%
-\DeclareOptionX{5p}{\AFP@OptionWarning{\CurrentOption}}%
-\DeclareOptionX{authoryear}{\AFP@OptionWarning{\CurrentOption}}%
-\DeclareOptionX{number}{\AFP@OptionWarning{\CurrentOption}}%
-\DeclareOptionX{sort&compress}{\AFP@OptionWarning{\CurrentOption}}%
-\DeclareOptionX*{\PassOptionsToClass{\CurrentOption}{elsarticle}}
-\ProcessOptionsX
-\@namedef{ver@natbib.sty}{}
-\@namedef{opt@natbib.sty}{round,authoryear}
-\newlength\bibsep
-\LoadClass[1p,authoryear,round]{elsarticle}
-\RequirePackage{lastpage,fancyhdr}
-\RequirePackage{caption}
-\RequirePackage{booktabs}
-\RequirePackage{graphicx}
-\RequirePackage[hyperfootnotes=false,colorlinks,allcolors=blue]{hyperref}
-\expandafter\let\csname ver@natbib.sty\endcsname=\@undefined
-\let\bibsep=\@undefined
-\RequirePackage[natbibapa]{apacite}
-\renewenvironment{abstract}{\global\setbox\absbox=\vbox\bgroup
- \hsize=\textwidth\def\baselinestretch{1}%
- \noindent\unskip\ignorespaces}
- {\egroup}
-\def\tnoteref#1{\AFP@DisableMacro{tnoteref}}
-\def\corref#1{\AFP@DisableMacro{corref}}
-\def\fnref#1{\AFP@DisableMacro{fnref}}
-\renewcommand*{\title}[2][]{\gdef\shorttitle{#1}\gdef\@title{#2}}
-\edef\title{\@nx\@dblarg
- \@xp\@nx\csname\string\title\endcsname}
-\newif\ifAFP@corrauthor
-\def\authors{}
-\def\shortauthors{\authors}
-\def\author{%
- \@ifstar{\AFP@corrauthortrue\AFP@author}{\AFP@corrauthorfalse\AFP@author}}
-\def\AFP@author{\@ifnextchar[{\@@author}{\@author}}
-\def\@@author[#1]#2{%
- \ifx\@empty\authors
- \gdef\authors{#2}%
- \else
- \g@addto@macro\authors{\and#2}%
- \fi
- \g@addto@macro\elsauthors{%
- \normalsize\upshape
- \def\baselinestretch{1}%
- \authorsep#2\unskip}%
- \ifAFP@corrauthor
- \g@addto@macro\elsauthors{\textsuperscript{$\ast$,}}\fi
- \g@addto@macro\elsauthors{%
- \textsuperscript{%#1%
- \@for\@@affmark:=#1\do{%
- \edef\affnum{\@ifundefined{X@\@@affmark}{1}{\elsRef{\@@affmark}}}%
- \unskip\sep\affnum\let\sep=,}%
- \ifx\@fnmark\@empty\else\unskip\sep\@fnmark\let\sep=,\fi
- \ifx\@corref\@empty\else\unskip\sep\@corref\let\sep=,\fi
- }%
- \def\authorsep{\unskip,\space}%
- \global\let\sep\@empty\global\let\@corref\@empty
- \global\let\@fnmark\@empty}%
- \@eadauthor={#2}
-}
-\def\@author#1{%
- \ifx\@empty\authors
- \gdef\authors{#1}%
- \else
- \g@addto@macro\authors{\and#1}%
- \fi
- \g@addto@macro\elsauthors{\normalsize%
- \def\baselinestretch{1}%
- \upshape\authorsep#1}
- \ifAFP@corrauthor
- \g@addto@macro\elsauthors{\textsuperscript{$\ast$}}\fi
- \g@addto@macro\elsauthors{%
- \def\authorsep{\unskip,\space}%
- \global\let\@fnmark\@empty
- \global\let\sep\@empty}%
- \@eadauthor={#1}
-}
-\long\def\@address#1{\g@addto@macro\elsauthors{%
- \def\baselinestretch{1}\def\addsep{\par\vskip4pt}%
- \addsep\footnotesize\itshape#1%
- \def\authorsep{\par\vskip16pt}}}
-\def\paperUrl#1{\gdef\@paperUrl{#1}}
-\paperUrl{}
-\newwrite\@mainrpi
-\def\RESP@write@paper@info{%
- \bgroup
- \if@filesw
- \openout\@mainrpi\jobname.rpi%
- \write\@mainrpi{\relax}%
- \ifx\r@LastPage\@undefined
- \edef\@tempa{\start@page}%
- \else
- \def\@tempb##1##2##3##4##5{##2}%
- \edef\@tempa{\expandafter\@tempb\r@LastPage}%
- \fi
- \def\and{\string\and\space}%
- \protected@write\@mainrpi{}%
- {\string\articleentry{\authors}{\@title}{\start@page}{\@tempa}}%
- \protected@write\@mainrpi{}%
- {\@percentchar authors=\authors}%
- \protected@write\@mainrpi{}%
- {\@percentchar title=\@title}%
- \protected@write\@mainrpi{}%
- {\@percentchar year=\currentyear}%
- \protected@write\@mainrpi{}%
- {\@percentchar volume=\currentvolume}%
- \protected@write\@mainrpi{}%
- {\@percentchar issue=\currentissue}%
- \protected@write\@mainrpi{}%
- {\@percentchar paper=\currentpaper}%
- \protected@write\@mainrpi{}%
- {\@percentchar startpage=\start@page}%
- \protected@write\@mainrpi{}%
- {\@percentchar endpage=\@tempa}%
- \protected@write\@mainrpi{}%
- {\@percentchar doi=\@doinumber}%
- \ifx\@paperUrl\@empty\else
- \protected@write\@mainrpi{}%
- {\@percentchar paperUrl=\@paperUrl}%
- \fi
- \closeout\@mainrpi
- \fi
-\egroup}
-\def\maketitle{%
- \null\bigskip\par
- \iflongmktitle\getSpaceLeft
- \global\setbox\els@boxa=\vsplit0 to \@tempdima
- \box\els@boxa\par\resetTitleCounters
- \printFirstPageNotes
- \box0%
- \else
- \finalMaketitle\printFirstPageNotes
- \fi
- \RESP@write@paper@info
- \author@andify\authors
- \xdef\authors{\authors}%
- \gdef\thefootnote{\arabic{footnote}}%
- \thispagestyle{firstpagestyle}%
-}
-\def\volumenumber#1{\gdef\currentvolume{#1}}
-\volumenumber{}
-\def\issuenumber#1{\gdef\currentissue{#1}}
-\issuenumber{}
-\def\publicationyear#1{\gdef\currentyear{#1}}
-\publicationyear{}
-\newcommand\publicationmonth[2][]{\gdef\currentmonth{#2}%
- \gdef\abbrevcurrentmonth{#1}%
- \ifx\abbrevcurrentmonth\@empty\gdef\abbrevcurrentmonth{#2}\fi}
-\publicationmonth{}
-\def\papernumber#1{\gdef\currentpaper{#1}}
-\papernumber{0000}
-\def\doinumber#1{\gdef\@doinumber{#1}}
-\doinumber{123.4567/archivesforensicpsychology.\currentyear.\currentvolume.\currentissue.\currentpaper}
-\def\startpage#1{\pagenumbering{arabic}\setcounter{page}{#1}%
- \gdef\start@page{#1}%
- \ifnum\c@page<\z@ \pagenumbering{roman}\setcounter{page}{-#1}%
- \gdef\start@page{\romannumeral#1}%
- \fi}
-\def\endpage#1{\def\@tempa{#1}%
- \ifx\@tempa\@empty\def\end@page{\pageref{LastPage}}%
- \else\def\end@page{#1}\fi}
-\def\pagespan#1#2{\startpage{#1}\endpage{#2}}
-\pagespan{1}{}
-\def\articleentry#1#2#3#4{\@tempcnta=#4\relax
- \advance\@tempcnta by 1\relax
- \ifodd\the\@tempcnta\else\advance\@tempcnta by 1\relax\fi
- \startpage{\the\@tempcnta}}
-\def\prevpaper#1{\IfFileExists{#1.rpi}{%
- \ClassInfo{afparticle}{%
- Reading first page number from the file #1.rpi}%
- \input{#1.rpi}%
- }{\ClassWarning{afparticle}{Cannot find the file #1.rpi.
- Did you run latex on the previous paper?}}}
-\def\AFP@backmatter{}
-\def\received#1{\g@addto@macro\AFP@backmatter{Received: #1\\}}
-\def\revised#1{\g@addto@macro\AFP@backmatter{Revision Received: #1\\}}
-\def\accepted#1{\g@addto@macro\AFP@backmatter{Accepted: #1\\}}
-\def\printbackmatter{\ifx\AFP@backmatter\@empty\else\medskip
- \begin{flushright}%
- \AFP@backmatter
- \end{flushright}%
-\fi}
-\AtBeginDocument{\@twosidetrue}
-\setlength\footskip{40\p@}
-\renewcommand{\headrulewidth}{0pt}
-\renewcommand{\footrulewidth}{0pt}
-\fancypagestyle{standardpagestyle}{%
- \fancyhead{}%
- \fancyfoot{}%
- \fancyfoot[R]{\thepage}%
- \fancyhead[CE]{\scshape\MakeLowercase{\shortauthors}}%
- \fancyhead[CO]{\scshape\MakeLowercase{\shorttitle}}%
-}
-\pagestyle{standardpagestyle}
-\fancypagestyle{firstpagestyle}{%
- \fancyhead{}%
- \fancyfoot{}%
- \fancyfoot[R]{\thepage}%
- \fancyhead[L]{\small Archives of Forensic Psychology\\
- \currentyear, Vol.~\currentvolume, No.~\currentissue,
- \thepage--\end@page}%
- \fancyhead[R]{\small\textcopyright~\currentyear\ Global Institute of
- Forensic Psychology\\ISSN~2334-2749}%
-}
-\setlength\parindent{2em}
-\setcounter{secnumdepth}{-1}
-\renewcommand\section{\@startsection {section}{1}{\z@}%
- {18\p@ \@plus 6\p@ \@minus 3\p@}%
- {9\p@ \@plus 6\p@ \@minus 3\p@}%
- {\centering\normalsize\bfseries\boldmath}}
-\renewcommand\subsection{\@startsection {subsection}{2}{\z@}%
- {18\p@ \@plus 6\p@ \@minus 3\p@}%
- {9\p@ \@plus 6\p@ \@minus 3\p@}%
- {\normalsize\bfseries\boldmath}}
-\renewcommand\subsubsection{\@startsection{subsubsection}{3}{0\z@}%
- {0\z@}%
- {-6\p@}%
- {\normalfont\hspace*{\parindent}\itshape\@addfinaldot}}
-\def\@addfinaldot#1{#1.}
-\DeclareCaptionLabelSeparator{periodNewline}{.\\}
-\captionsetup[table]{position=top, format=plain,
- labelsep=periodNewline, justification=centering,
- singlelinecheck=off, font=normalsize, textfont=it}
-\captionsetup[figure]{position=bottom, format=plain,
- labelsep=period, justification=centering,
- singlelinecheck=off, font=normalsize, labelfont=it}
-\tolerance=1
-\emergencystretch=\maxdimen
-\hyphenpenalty=10000
-\hbadness=10000
-\normalsize\normalfont
-\endinput
-%%
-%% End of file `afparticle.cls'.
diff --git a/Master/texmf-dist/tex/latex/algxpar/algxpar-brazilian.kw.tex b/Master/texmf-dist/tex/latex/algxpar/algxpar-brazilian.kw.tex
index 899c01b903a..a697a48be65 100644
--- a/Master/texmf-dist/tex/latex/algxpar/algxpar-brazilian.kw.tex
+++ b/Master/texmf-dist/tex/latex/algxpar/algxpar-brazilian.kw.tex
@@ -4,8 +4,8 @@
description = Descrição,
input = Entrada,
output = Saída,
- require = {Pré-condição},
- ensure = {Pós-condição},
+ require = {Requer},
+ ensure = {Assegura},
end = fim,
if = se,
then = então,
@@ -30,6 +30,8 @@
function = função,
procedure = procedimento,
return = retorne,
+ byref = ref,
+ byvalue = val,
true = Verdadeiro,
false = Falso,
nil = Nil,
diff --git a/Master/texmf-dist/tex/latex/algxpar/algxpar-english.kw.tex b/Master/texmf-dist/tex/latex/algxpar/algxpar-english.kw.tex
index 55505ff5e60..58fce1f3549 100644
--- a/Master/texmf-dist/tex/latex/algxpar/algxpar-english.kw.tex
+++ b/Master/texmf-dist/tex/latex/algxpar/algxpar-english.kw.tex
@@ -30,6 +30,8 @@
function = function,
procedure = procedure,
return = return,
+ byref = byref,
+ byvalue = byvalue,
true = True,
false = False,
nil = Nil,
diff --git a/Master/texmf-dist/tex/latex/algxpar/algxpar-versionchanges.sty b/Master/texmf-dist/tex/latex/algxpar/algxpar-versionchanges.sty
new file mode 100644
index 00000000000..22aa4f21c15
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/algxpar/algxpar-versionchanges.sty
@@ -0,0 +1,404 @@
+%! Package = versionchanges
+%! Author = Jander Moreira
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{versionchanges}[2024/05/03 v0.1 This package provides means to track changes to a document]
+\NewDocumentCommand{\VCVersion}{}{0.1}
+\NewDocumentCommand{\VCDate}{}{2024/05/03}
+
+\RequirePackage{pgfkeys}
+\RequirePackage{multicol}
+\RequirePackage{ragged2e}
+\RequirePackage{todonotes}
+
+\setlength{\marginparwidth}{2cm}
+\RequirePackage{marginnote}
+\let\marginpar\marginnote
+
+%% Options
+\pgfkeys{
+ /version changes/.cd,
+ version prefix/.store in = \vc@VersionPrefix,
+ version style/.store in = \vc@VersionStyle,
+ change style/.store in = \vc@ChangeStyle,
+}
+
+\NewDocumentCommand{\VCSet}{ > { \TrimSpaces } m }{%
+ \pgfkeys{
+ /version changes/.cd,
+ #1,
+ }%
+}
+
+\VCSet{
+ version prefix = {v},
+ version style = \bfseries\footnotesize,
+ change style = \footnotesize\RaggedRight,
+}
+
+% defaults
+
+
+%% Internal commands
+\ExplSyntaxOn
+
+% StepChangeCounter: proceeds to a new change
+\int_zero_new:N \g_vc_change_counter_int
+\NewDocumentCommand{\vc@StepChangeCounter}{}{
+ \int_gadd:Nn \g_vc_change_counter_int { 1 }
+}
+\NewDocumentCommand{\vc@CurrentChangeCounter}{}{
+ \int_use:N \g_vc_change_counter_int
+}
+
+% SetChangeAttribute: sets the an attribute of the current change record
+% #1: attribute
+% #2: value
+\cs_new:Npn \set_change_attribute:nn #1#2 {
+ \tl_clear_new:c { g_vc_change_ \int_use:N \g_vc_change_counter_int _#1_tl }
+ \tl_gset:cn { g_vc_change_ \int_use:N \g_vc_change_counter_int _#1_tl } { #2 }
+}
+\NewDocumentCommand{\vc@SetChangeAttribute}{ m m }{
+ \set_change_attribute:nn { #1 } { #2 }
+}
+
+% SetChangeAttributeExpanded: sets the an attribute of the current change record
+% #1: attribute
+% #2: value
+\NewDocumentCommand{\vc@SetChangeAttributeExpanded}{ m m }{
+ \exp_args:Nnf \set_change_attribute:nn { #1 } { #2 }
+}
+
+% GetChangeInfo: returns the field of a change
+% #1: number of the change
+% #2: field
+% #3: (optional) sets macro instead of returning value
+\NewDocumentCommand{\vc@GetChangeInfo}{ m m o }{
+ \IfValueTF{#3}{
+ \tl_set:Nx #3 { \tl_use:c { g_vc_change_#1_#2_tl } }
+ }{
+ \tl_use:c { g_vc_change_#1_#2_tl }
+ }
+}
+
+% SetMacroChangeInfo: sets a macro with the field of a change
+% #1: macro
+% #2: number of the change
+% #3: field
+\NewDocumentCommand{\vc@SetMacroChangeInfo}{ m m m }{
+ \tl_clear_new:N #1
+ \exp_args:NNc \tl_set:NV #1 { g_vc_change_#2_#3_tl }
+}
+
+% RunChangesList: apply a macro to each change of a version
+% #1: version
+% #2: macro with a single mandatory argument
+\NewDocumentCommand{\vc@RunChangesList}{ m m }{
+ \seq_map_inline:cn { g_version_#1_seq } { #2 { ##1 } }
+}
+
+
+% RegisterVersion: add a version to the list os versions if it doesn't exist
+% #1: version
+\seq_new:N \g_vc_versions_list_seq
+\cs_new:Npn \register_version:nn #1#2 {
+ \seq_if_in:NnTF \g_vc_versions_list_seq { #1 } { } {% else
+ \seq_put_right:Nn \g_vc_versions_list_seq { #1 }
+ \tl_clear_new:c { g_vc_version_#1_date_tl }
+ \tl_gset:cn { g_vc_version_#1_date_tl } { #2 }
+ \seq_new:c { g_version_#1_seq }
+ }
+}
+\NewDocumentCommand{\VCRegisterVersion}{ m m }{
+ \register_version:nn { #1 } { #2 }
+}
+
+% VersionDate: returns the date of a version OR sets a macro
+% with its (expanded) value
+% #1: version
+% #2: (optional) macro to store the value
+\NewDocumentCommand{\vc@VersionDate}{ m o }{
+ \IfValueTF{#2}{
+ \tl_set:Nx #2 { \tl_use:c { g_vc_version_#1_date_tl } }
+ }{
+ \tl_use:c { g_vc_version_#1_date_tl }
+ }
+}
+
+
+% AddChangeToVersion: add a change reference to the list of the version
+% (a new list will be created if necessary)
+% #1: version
+\cs_new:Npn \add_change_to_version:n #1 {
+ % Add a reference (change number) to the list
+ % \tl_clear_new:N \l_change_number_tl
+ % \exp_args:NNe \tl_set:Nn \l_change_number_tl { \int_use:N \g_vc_change_counter_int }
+ \exp_args:Nco \seq_gput_right:Nn { g_version_#1_seq } { \int_use:N \g_vc_change_counter_int }
+}
+\NewDocumentCommand{\vc@AddChangeToVersion}{ }{
+ \add_change_to_version:n {
+ \tl_use:c { g_vc_change_ \int_use:N \g_vc_change_counter_int _version_tl }
+ }
+}
+
+
+% RunVersionList: apply a macro to each version of the list
+% #1: macro with a single mandatory argument
+\NewDocumentCommand{\vc@RunVersionList}{ m }{
+ \seq_map_inline:Nn \g_vc_versions_list_seq { #1 { ##1 } }
+}
+
+\ExplSyntaxOff
+
+%%
+
+\newif\ifvc@SuppressInListing\vc@SuppressInListingfalse
+\pgfkeys{
+ /version changes/changes/.cd,
+ version/.code = {\vc@SetChangeAttribute{version}{#1}},
+% date/.code = {\vc@SetChangeAttribute{date}{#1}},
+ description/.code = {\vc@SetChangeAttribute{description}{#1}},
+ page/.code = {\vc@SetChangeAttributeExpanded{page}{#1}},
+ suppress/.is if = vc@SuppressInListing,
+ type/.is choice,
+ type/released/.code = {\vc@SetChangeAttribute{type}{Released}},
+ type/new/.code = {\vc@SetChangeAttribute{type}{New in}},
+ type/updated/.code = {\vc@SetChangeAttribute{type}{Updated in}},
+ type/removed/.code = {\vc@SetChangeAttribute{type}{Removed in}},
+ type/deprecated/.code = {\vc@SetChangeAttribute{type}{Deprecated in}},
+ .unknown/.code = {\pgfkeysalso{type = \pgfkeyscurrentname}},
+}
+
+% #1: (optional) todonotes options
+% #2: text
+\NewDocumentCommand{\vc@MarginNote}{ O{} > { \TrimSpaces } m }{%
+ \todo[bordercolor = blue!20, backgroundcolor = blue!10,
+ linecolor = blue!20, tickmarkheight = 0.2ex, size = \tiny,
+ noline, #1]{%
+ #2
+ }%
+}
+
+% Change: records a change
+% #1: (optional) todonotes options
+% #2: comma-separated list with change description
+\NewDocumentCommand{\VCChange}{ O{} > { \TrimSpaces } m o }{%
+ \vc@StepChangeCounter%
+ \pgfkeys{
+ /version changes/changes/.cd,
+ suppress = false,
+ type = new,
+ page = \thepage,
+ #2,
+ }%
+ \hspace{0pt}%
+ \vc@AddChangeToVersion%
+ %! formatter = off
+ \ifvc@SuppressInListing% starred VCPrintChange?
+ \vc@SetChangeAttribute{star}{*}%
+ \else
+ \vc@SetChangeAttribute{star}{}%
+ \fi%
+ %! formatter = on
+ \vc@SetChangeAttributeExpanded{label}{\vc@CurrentChangeCounter}%
+ \vc@GetChangeInfo{\vc@CurrentChangeCounter}{label}[\vc@InfoResult]%
+ \expandafter\label\expandafter{\vc@InfoResult:change}%
+ \vc@MarginNote[#1]{%
+ \IfValueT{#3}{\textbf{#3}:\\}%
+ \vc@GetChangeInfo{\vc@CurrentChangeCounter}{type}
+ \vc@VersionPrefix\vc@GetChangeInfo{\vc@CurrentChangeCounter}{version}%
+ }%
+}
+
+%%
+
+% Internal commands
+\ExplSyntaxOn
+
+% Reading from file
+\ior_new:N \g_vc_input_io
+
+% LoadFile: reads a previous compiled version changes
+\cs_new:Nn \load_file: {
+ \tl_clear_new:N \g_vc_file_contents_tl
+ \ior_open:NnTF \g_vc_input_io { \jobname.vcind } {
+ \ior_map_inline:Nn \g_vc_input_io {
+ \tl_gput_right:Nn \g_vc_file_contents_tl { ##1 }
+ }
+ }{}
+}
+\NewDocumentCommand{\vc@LoadChanges}{}{
+ \load_file:
+}
+\NewDocumentCommand{\vc@FileContentsNotEmpty}{ +m }{
+ \tl_if_empty:NTF \g_vc_file_contents_tl {} {
+ #1
+ }
+}
+
+% File contents
+\NewDocumentCommand{\vc@FileContents}{}{
+ \tl_use:N \g_vc_file_contents_tl
+}
+
+% Writing to file
+\iow_new:N \g_vc_output_io
+\tl_new:N \g_vc_output_buffer_tl
+
+% OpenFile: open file for writing
+\NewDocumentCommand{\vc@OpenFile}{ }{
+ \iow_open:Nn \g_vc_output_io { \jobname.vcind }
+}
+
+% CloseFile: close file
+\NewDocumentCommand{\vc@CloseFile}{ }{
+ \iow_close:N \g_vc_output_io
+}
+
+% WriteBuffer: write to file
+\cs_generate_variant:Nn \iow_now:Nn { NV }
+\NewDocumentCommand{\vc@WriteBuffer}{ }{
+ \iow_now:NV \g_vc_output_io \g_vc_output_buffer_tl
+ \tl_clear:N \g_vc_output_buffer_tl
+}
+
+\NewDocumentCommand{\vc@AddToBuffer}{ +m }{
+ \tl_gput_right:Nn \g_vc_output_buffer_tl { #1 }
+}
+
+\cs_generate_variant:Nn \tl_gput_right:Nn { Nx }
+\NewDocumentCommand{\vc@AddCharToBuffer}{ m }{
+ \tl_gput_right:Nx \g_vc_output_buffer_tl { \iow_char:N #1 }
+}
+\ExplSyntaxOff
+
+% WriteVersionChange: write to file a single change
+% #1: change number
+\NewDocumentCommand{\vc@WriteVersionChange}{ m }{%
+ \vc@AddToBuffer{ \VCPrintChange}%
+ \vc@SetMacroChangeInfo{\vc@InfoResult}{#1}{star}%
+ \expandafter\vc@AddToBuffer\expandafter{\vc@InfoResult}%
+ % version number
+ \vc@AddCharToBuffer{\{}%
+ \vc@SetMacroChangeInfo{\vc@InfoResult}{#1}{description}%
+ \expandafter\vc@AddToBuffer\expandafter{\vc@InfoResult}%
+ \vc@AddCharToBuffer{\}}%
+ % date
+ \vc@AddCharToBuffer{\{}%
+ \vc@SetMacroChangeInfo{\vc@InfoResult}{#1}{page}%
+ \expandafter\vc@AddToBuffer\expandafter{\vc@InfoResult}%
+ \vc@AddCharToBuffer{\}}%
+ % label
+ \vc@AddCharToBuffer{\{}%
+ \vc@SetMacroChangeInfo{\vc@InfoResult}{#1}{label}%
+ \expandafter\vc@AddToBuffer\expandafter{\vc@InfoResult}%
+ \vc@AddCharToBuffer{\}}%
+ \vc@WriteBuffer
+}
+
+\NewDocumentCommand{\vc@WriteVersion}{ m }{%
+%! parser = off
+ \vc@AddToBuffer{\begin{vcversionitem}}%
+ %! parser = on
+ \vc@AddCharToBuffer{\{}%
+ \vc@AddToBuffer{#1}%
+ \vc@AddCharToBuffer{\}}%
+ \vc@AddCharToBuffer{\{}%
+ \vc@VersionDate{#1}[\vc@InfoResult]%
+ \expandafter\vc@AddToBuffer\expandafter{\vc@InfoResult}%
+ \vc@AddCharToBuffer{\}}%
+ \vc@WriteBuffer
+ \vc@RunChangesList{#1}{\vc@WriteVersionChange}%
+%! parser = off
+ \vc@AddToBuffer{\end{vcversionitem}}%
+ %! parser = on
+ \vc@WriteBuffer
+}
+
+\NewDocumentCommand{\vc@SaveChanges}{}{%
+ \vc@OpenFile%
+ \vc@RunVersionList{\vc@WriteVersion}%
+ \vc@WriteBuffer
+ \vc@CloseFile%
+}
+
+\NewDocumentCommand{\VCPrintChanges}{ O{} }{%
+ \vc@FileContentsNotEmpty{
+ \VCSet{#1}
+ \section*{Change History}
+ \begin{multicols}{2}
+ \vc@FileContents%
+ \end{multicols}
+ }
+}
+
+%% Printing the list of changes
+\NewDocumentEnvironment{vcversionitem}{ m m }{%
+ \par\noindent%
+ {\vc@VersionStyle\vc@VersionPrefix#1 (#2)}
+ \vspace*{0.2em}\par%
+ \begingroup%
+ \setlength{\tabcolsep}{0pt}%
+ \vc@ChangeStyle%
+ }{%
+ \endgroup%
+ \vspace{0.5em}%
+}
+
+\newlength{\vc@PageNumberWidth}
+\setlength{\vc@PageNumberWidth}{1cm}
+\NewDocumentCommand{\VCPrintChange}{ s m m m }{%
+ \IfBooleanF{#1}{%
+ \hspace{0.25cm}%
+ \parbox[b]{\dimexpr \linewidth - \vc@PageNumberWidth - 0.25cm}{%
+ \setlength{\hangindent}{0.7cm}#2\dotfill%
+ }\hspace{-0.05cm}\dotfill~\hspace{0.05cm}\hyperref[#4:change]{#3}%
+ \par\vspace{0.5em}
+ }
+}
+
+%% Version numbering
+\ExplSyntaxOn
+
+\tl_new:N \g_vc_prefix_text_tl
+\tl_new:N \g_vc_number_tl % todo: turn to int?
+\tl_new:N \g_vc_suffix_text_tl
+\regex_new:N \g_versioning_regex
+\regex_set:Nn \g_versioning_regex { [^\.]+ }
+\regex_new:N \g_subversioning_regex
+\regex_set:Nn \g_subversioning_regex { ([^\d]*)(\d+)(.*) }
+
+\cs_new:Npn \subversioning_check:n #1 {
+ \seq_clear_new:N \l_subparts_seq
+ \regex_extract_all:NnNTF \g_subversioning_regex { #1 } \l_subparts_seq {
+ \tl_gset:Nx \g_vc_prefix_text_tl { \seq_item:Nn \l_subparts_seq {2} }
+ \tl_gset:Nx \g_vc_number_tl { \seq_item:Nn \l_subparts_seq {3} }
+ \tl_gset:Nx \g_vc_suffix_text_tl { \seq_item:Nn \l_subparts_seq {4} }
+ }{
+ \tl_gset:Nx \g_vc_prefix_text_tl { #1 }
+ \tl_gclear:N \g_vc_number_tl
+ \tl_gclear:N \g_vc_suffix_text_tl
+ }
+}
+\cs_new:Npn \versioning_check:n #1 {
+ \seq_clear_new:N \l_parts_seq
+ \regex_extract_all:NnN \g_versioning_regex { #1 } \l_parts_seq
+ \seq_map_inline:Nn \l_parts_seq {
+ \subversioning_check:n { ##1 }
+ <<(\tl_use:N \g_vc_prefix_text_tl)
+ (\tl_use:N \g_vc_number_tl)
+ (\tl_use:N \g_vc_suffix_text_tl)>>
+ }
+}
+\NewDocumentCommand{\VCVersioningCheck}{ m }{
+ \par\noindent[\texttt{#1}:~\versioning_check:n { #1 }]\bigskip\par
+}
+
+\ExplSyntaxOff
+
+% Hooks
+\AtBeginDocument{%
+ \reversemarginpar%
+ \vc@LoadChanges%
+}
+\AtEndDocument{\vc@SaveChanges} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/algxpar/algxpar.sty b/Master/texmf-dist/tex/latex/algxpar/algxpar.sty
index 3da15d94157..e5ffa55b566 100644
--- a/Master/texmf-dist/tex/latex/algxpar/algxpar.sty
+++ b/Master/texmf-dist/tex/latex/algxpar/algxpar.sty
@@ -2,12 +2,14 @@
%! Author: Jander Moreira
%! Email = moreira.jander@gmail.com
+%! suppress = FileNotFound
+
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{algxpar}[2023/06/26 v0.99 Algorithms with multi-line/paragraph support and some enhancements]
+\ProvidesPackage{algxpar}[2024/10/23 v0.99.2 Algorithms with multi-line/paragraph support and some enhancements]
%% Documentation
-\NewDocumentCommand{\AlgVersion}{}{0.99}
-\NewDocumentCommand{\AlgDate}{}{2023/06/26}
+\NewDocumentCommand{\AlgVersion}{}{0.99.2}
+\NewDocumentCommand{\AlgDate}{}{2024/10/23}
%% Required packages
@@ -20,7 +22,10 @@
\RequirePackage{amssymb}
\RequirePackage{pgfmath}
\RequirePackage{varwidth}
-\RequirePackage{ifthen}
+% \RequirePackage{ifthen}
+\RequirePackage{tikz}
+\usetikzlibrary{calc, arrows}
+\RequirePackage{etoolbox}
% \RequirePackage{listings} % to load verbatim with tabs
% \RequirePackage{tcolorbox} % to save verbatim
@@ -90,17 +95,26 @@
}
-% RenewFullyExpandedDocumentCommand: fully expands argument before
+% axp@RenewFullyExpandedDocumentCommand: fully expands argument before
% renewing document command
% #1: macro
% #2: value
-\NewDocumentCommand{\RenewFullyExpandedDocumentCommand} { m m }{
+\NewDocumentCommand{\axp@RenewFullyExpandedDocumentCommand} { m m }{
\exp_args:NNnV \RenewDocumentCommand #1 { } { #2 }
}
\ExplSyntaxOff
+%% Settings
+\newif\ifaxp@NoEnd\axp@NoEndfalse % whether line with 'end' is used or not
+\newif\ifaxp@IsStatement\axp@IsStatementfalse % set in \Statep
+\newif\ifaxp@ShowBoxes\axp@ShowBoxesfalse % show parboxes for debugging
+\newif\ifaxp@LineBalanceAuto % true for 'auto'; false for 'fixed'
+\newif\ifaxp@IndentLines\axp@IndentLinesfalse % draw lines in blocks
+
+
\NewDocumentCommand{\axp@DisableEnds}{}{%
+ \axp@NoEndtrue%
\RenewDocumentCommand{\ALG@noend}{}{t}%
\algtext*{EndWhile}%
\algtext*{EndFor}%
@@ -114,6 +128,7 @@
}
\NewDocumentCommand{\axp@EnableEnds}{}{%
+ \axp@NoEndfalse%
\RenewDocumentCommand{\ALG@noend}{}{f}%
\algrenewtext{EndWhile}{\Keyword{endwhile}}%
\algrenewtext{EndFor}{\Keyword{endfor}}%
@@ -127,19 +142,12 @@
}
\axp@EnableEnds % update end-line texts
-%% Settings
-\newif\ifaxp@NoEnd\axp@NoEndfalse % whether line with 'end' is used or not
-\newif\ifaxp@IsStatement\axp@IsStatementfalse % set in \Statep
-\newif\ifaxp@ShowBoxes\axp@ShowBoxesfalse % show parboxes for debugging
-\newif\ifaxp@LineBalanceAuto % true for 'auto'; false for 'fixed'
-
%% General options
-%! formatter = off
\pgfkeys{
/algxpar/options/.cd,
- % language
+% language
language/.store in = \axp@Language,
- % styles
+% styles
text font/.store in = \axp@TextFont,
text color/.store in = \axp@TextColor,
text style/.store in = \axp@TextStyle,
@@ -152,24 +160,27 @@
constant color/.store in = \axp@ConstantColor,
module font/.store in = \axp@ModuleFont,
module color/.store in = \axp@ModuleColor,
- %
+%
comment symbol/.store in = \axp@CommentSymbol,
comment symbol right/.store in = \axp@CommentSymbolRight,
comment separator width/.store in = \axp@CommentSeparatorWidth,
- %
+%
noend/.code = {\axp@DisableEnds},
no end/.code = {\axp@DisableEnds},
end/.code = {\axp@EnableEnds},
- %
- % keywords/.code = {\pgfkeysalso{/algxpar/languages/.cd, \trim@spaces{#1}}},
+%
+% keywords/.code = {\pgfkeysalso{/algxpar/languages/.cd, \trim@spaces{#1}}},
keywords/.code = {\axp@LanguageSet{#1}},
- %
+%
algorithmic indent/.store in = \algorithmicindent,
statement indent/.store in = \axp@StatementIndent,
parameter indent/.store in = \axp@ParameterIndent,
- %
+%
+ indent lines/.is if = axp@IndentLines,
+ line style/.code = {\tikzset{line style/.style = {#1}}},
+%
show boxes/.is if = axp@ShowBoxes,
- %
+%
comment width/.code = {%
\axp@LineBalanceAutotrue%
\ifthenelse{\equal{auto}{#1}}{%
@@ -183,8 +194,9 @@
}%
}%
},
+%
+% style/.style = {\pgfkeysalso{/algxpar/styles/#}},
}
-%! formatter = on
\NewDocumentCommand{\AlgSet}{ > { \TrimSpaces } m }{%
\pgfkeys{%
@@ -194,6 +206,14 @@
}
+% %% Styles
+% \NewDocumentCommand{\AlgStyle}{ > { \TrimSpaces } m > { \TrimSpaces m }{%
+% \pgfkeys{
+% /algxpar/style/.cd,
+% #1/.style = {#2}
+% }
+% }
+
%% Languages and translations
\pgfkeys{
/algxpar/languages/.cd,
@@ -201,11 +221,11 @@
}
\NewDocumentCommand{\AlgLanguageSet}{ > { \TrimSpaces } m > { \TrimSpaces } m }{%
- \AlgSet{language = #1}
+ \AlgSet{language = #1}%
\pgfkeys{
/algxpar/languages/.cd,
#2
- }
+ }%
}
\NewDocumentCommand{\axp@LanguageSet}{ > { \TrimSpaces } m }{%
\pgfkeys{
@@ -238,6 +258,8 @@
algorithmic indent = 1.5em,
statement indent = 1em,
parameter indent = 0pt,
+ indent lines = false,
+ line style = {lightgray, thick},
show boxes = false,
comment width = auto,
}
@@ -249,9 +271,8 @@
language/.store in = \axp@Language,
noend/.is if = axp@NoEnd,
.unknown/.code = {
- %! suppress = FileNotFound
+ \axp@RenewFullyExpandedDocumentCommand{\axp@Language}{\pgfkeyscurrentname}
\input{algxpar-\pgfkeyscurrentname.kw}
- \RenewFullyExpandedDocumentCommand{\axp@Language}{\pgfkeyscurrentname}
}
}
\pgfkeys{
@@ -295,16 +316,74 @@
% #3: text after token
\newlength{\axp@TokenWidth}
\NewDocumentCommand{\axp@MakeSingleToken}{ m m m }{%
- \settowidth{\axp@TokenWidth}{#2}%
- \ifdim\axp@TokenWidth>0pt\relax#1\fi%
+ \axp@SetToWidth{\axp@TokenWidth}{#2}%
+ \ifdimcomp{\axp@TokenWidth}{>}{0pt}{#1}{}%
#2%
- \ifdim\axp@TokenWidth>0pt\relax#3\fi%
+ \ifdimcomp{\axp@TokenWidth}{>}{0pt}{#3}{}%
}
\newif\ifaxp@NoCommentPresent
\newlength{\axp@TextWidth}
\newlength{\axp@CommentWidth}
+%%%%%%%% LINES
+
+\NewDocumentCommand{\axp@MarkLineBegin}{}{%
+ \ifbool{axp@IndentLines}{%
+ \stepcounter{axp@BlockLevelCounter}%
+ \tikz[remember picture] \coordinate (axp-block-start-\theaxp@BlockLevelCounter) (0, 0);%
+ % \tikz[remember picture, overlay] \draw[<-] (axp-block-start-\theaxp@BlockLevelCounter) -- ++ (-4em, 0.5ex) node[anchor = east] {B:\theaxp@BlockLevelCounter};%
+ }{}%
+}%
+
+\NewDocumentCommand{\axp@MarkLineEndShort}{}{%
+ \ifbool{axp@IndentLines}{%
+ \tikz[remember picture] \coordinate (axp-block-end-\theaxp@BlockLevelCounter) (0, 0);%
+ \begin{tikzpicture}[remember picture, overlay]
+ \draw[line style]
+ ($ (axp-block-start-\theaxp@BlockLevelCounter) + (0.3ex, -1ex) $)
+ --
+ ($ (axp-block-end-\theaxp@BlockLevelCounter) + (0.3ex, 1em) $);
+ \end{tikzpicture}%
+ \addtocounter{axp@BlockLevelCounter}{-1}%
+ }%
+}
+
+\NewDocumentCommand{\axp@MarkLineEndCont}{}{%
+ \ifbool{axp@IndentLines}{%
+ \tikz[remember picture] \coordinate (axp-block-end-\theaxp@BlockLevelCounter) (0, 0);%
+ \begin{tikzpicture}[remember picture, overlay]
+ \draw[line style]
+ ($ (axp-block-start-\theaxp@BlockLevelCounter) + (0.3ex, -1ex) $)
+ --
+ ($ (axp-block-end-\theaxp@BlockLevelCounter) + (0.3ex, 1em) $);
+ \end{tikzpicture}%
+ \addtocounter{axp@BlockLevelCounter}{-1}%
+ }%
+}
+
+\NewDocumentCommand{\axp@MarkLineEndFinal}{}{%
+ \ifbool{axp@IndentLines}{%
+ \tikz[remember picture] \coordinate (axp-block-end-\theaxp@BlockLevelCounter) (0, 0);%
+ \begin{tikzpicture}[remember picture, overlay]
+ \draw[line style]
+ ($ (axp-block-start-\theaxp@BlockLevelCounter) + (0.3ex, -1ex) $)
+ --
+ ($ (axp-block-end-\theaxp@BlockLevelCounter) + (0.3ex, 0) $)
+ |- ++ (1ex, 0);
+ \end{tikzpicture}%
+ \addtocounter{axp@BlockLevelCounter}{-1}%
+ }%
+}
+
+% % ***********************************************
+% % For debugging!
+\NewDocumentCommand{\msg}{ m O{-1} }{%
+ \begin{tikzpicture}[overlay]
+ \draw[black!30] (0, 0.1) -- (#2, 0.3) node[fill=black!5, anchor=east] {\scriptsize\color{darkgray}#1};
+ \end{tikzpicture}%
+}
+
% axp@CalculateDimensions: evaluate space needed for text and comments
% #1: nesting ajustment (1 when openning a block; 0 when closing)
@@ -319,50 +398,62 @@
\newlength{\axp@CurrentLineWidth}
\newlength{\axp@RemainingWidth}
\NewDocumentCommand{\axp@CalculateDimensions}{ m m m }{%
+ \booltrue{axp@NoCommentPresent}%
\axp@SetToWidth{\axp@FullTextWidth}{\axp@TextFont#2}% text
\axp@SetToWidth{\axp@FullCommentWidth}{\axp@CommentFont#3}% comment
- %! formatter = off
- \ifdim\axp@FullCommentWidth=0pt\relax%
- % No comments present
- \axp@NoCommentPresenttrue%
+ \ifdimcomp{\axp@FullCommentWidth}{=}{0pt}{%
+ % No comments present
+ % \msg{no comment!}%
+ \global\booltrue{axp@NoCommentPresent}%
+ % \ifbool{axp@LineBalanceAuto}{%
\setlength{\axp@TextWidth}{
\dimexpr \linewidth - \axp@CurrentTokenWidth - (\algorithmicindent)*(\theALG@nested - #1)
}%
- \else
- % Yep, we have a comment
- \axp@NoCommentPresentfalse%
- \settowidth{\axp@CommentSymbolWidth}{\hspace{\axp@CommentSeparatorWidth}\CommentSymbol~}%
- \setlength{\axp@CurrentLineWidth}{
- \dimexpr \linewidth - \axp@CurrentTokenWidth - (\algorithmicindent)*(\theALG@nested - #1)
+ \ifdimcomp{\axp@FullTextWidth}{<}{\axp@TextWidth}{%
+ \axp@TextWidth\axp@FullTextWidth% makes the parbox fit the actual text width
+ }{}%
+ % }{}
+ }{%
+ % Yep, we have a comment in this line
+ % \msg{got a comment!}%
+ \global\boolfalse{axp@NoCommentPresent}%
+ \axp@SetToWidth{\axp@CommentSymbolWidth}{\hspace{\axp@CommentSeparatorWidth}\CommentSymbol~}%
+ \deflength{\axp@CurrentLineWidth}{
+ \linewidth - \axp@CurrentTokenWidth - (\algorithmicindent)*(\theALG@nested - #1)
}%
- \ifaxp@LineBalanceAuto%
- % 'auto': decide here how to balance text and comment widths
+ \ifbool{axp@LineBalanceAuto}{%
+ % 'auto': decide here how to balance text and comment widths
\setlength{\axp@RemainingWidth}{
\dimexpr \axp@CurrentLineWidth - \axp@FullTextWidth - \axp@FullCommentWidth - \axp@CommentSymbolWidth
}%
- \ifdim\axp@RemainingWidth>0pt\relax%
- % Both text and comment fit the line
+ \null% I don't understand the difference this null makes here!
+ % \msg{\the\axp@RemainingWidth}%
+ \ifdimcomp{\axp@RemainingWidth}{>}{0pt}{%
+ % Both text and comment fit the line
\axp@TextWidth\axp@FullTextWidth%
\axp@CommentWidth\axp@FullCommentWidth%
- \else%
- % Text/comment will go multi-line
+ % \msg{fits \the\axp@RemainingWidth}%
+ }{%
+ % Text/comment will go multi-line
+ % \msg{not fit \the\axp@RemainingWidth}%
\pgfmathsetmacro{\axp@CurrentRatio}{
int(round(\axp@FullTextWidth/(\axp@FullTextWidth + \axp@FullCommentWidth) * 100))
}%
- \ifnum\axp@CurrentRatio<25\relax% never less than 0.25
+ \ifnumcomp{\axp@CurrentRatio}{<}{25}{% never less than 0.25
\edef\axp@CurrentRatio{25}%
- \fi%
- \ifnum\axp@CurrentRatio>75\relax% never more than 0.75
- \edef\axp@CurrentRatio{75}%
- \fi%
+ }{%
+ \ifnumcomp{\axp@CurrentRatio}{>}{75}{% never more than 0.75
+ \edef\axp@CurrentRatio{75}%
+ }{}%
+ }%
\pgfmathparse{
- \axp@CurrentRatio/100 * \axp@CurrentLineWidth - \axp@CommentSymbolWidth/2
+ (100 - \axp@CurrentRatio)/100 * \axp@CurrentLineWidth - \axp@CommentSymbolWidth
}%
- \setlength{\axp@TextWidth}{\pgfmathresult pt}%
- \pgfmathparse{\axp@CurrentLineWidth - \axp@TextWidth - \axp@CommentSymbolWidth}%
\setlength{\axp@CommentWidth}{\pgfmathresult pt}%
+ \pgfmathparse{\axp@CurrentLineWidth - \axp@CommentWidth - \axp@CommentSymbolWidth}%
+ \setlength{\axp@TextWidth}{\pgfmathresult pt}%
% fine tunning the widths
- \settowidth{\axp@CommentWidth}{%
+ \axp@SetToWidth{\axp@CommentWidth}{%
\begin{varwidth}[t]{\axp@CommentWidth}%
\axp@CommentStyle%
\textcolor{\axp@CommentColor}{\axp@CommentFont#3}\strut%
@@ -370,44 +461,51 @@
}%
\pgfmathparse{\axp@CurrentLineWidth - \axp@CommentWidth - \axp@CommentSymbolWidth}%
\setlength{\axp@TextWidth}{\pgfmathresult pt}%
- \fi%
- \else%
- % 'fixed': limit comment width
- % todo: think about using \axp@CurrentLineWidth instead of \linewidth
+ % \msg{\the\axp@TextWidth}%
+ }%
+ }{%
+ % 'fixed': limit comment width
+ % todo: think about using \axp@CurrentLineWidth instead of \linewidth
\setlength{\axp@CommentWidth}{\axp@CommentFixedWidth}%
\setlength{\axp@TextWidth}{
\dimexpr \axp@CurrentLineWidth - \axp@CommentWidth - \axp@CommentSymbolWidth
}%
- \fi%
+ }%
\setlength{\axp@RemainingWidth}{
\dimexpr \linewidth - \axp@CurrentTokenWidth -
(\algorithmicindent)*(\theALG@nested - #1) -
\axp@CommentWidth - \axp@CommentSymbolWidth
}%
- \fi%
- %
- \ifdim\axp@FullTextWidth<\axp@TextWidth\relax%
- \axp@TextWidth\axp@FullTextWidth% makes the parbox fit the actual text width
- \fi%
- %! formatter = on
+ }%
}
+\newcounter{cont}
+\newif\ifaxp@CloseBlock
% axp@MakeCommand: builds the command (see axp@DefineCommand)
% #1 (star): star = end block; no star = begin block
\NewDocumentCommand{\axp@MakeCommand}{ s }{%
- \axp@DoCommand{% ajustment for opening/closing blocks
- \IfBooleanTF{#1}{0}{1}%
- }{% command or module+name
- \axp@MakeSingleToken{}{\axp@CommandKeyword}{\ifaxp@IsModule(\else\ \fi}%
- }{% text or module arguments
- \axp@CommandText\ifaxp@IsModule)\fi%
- }{% command complement
- \axp@MakeSingleToken{ }{\axp@CommandComplementKeyword}{}%
- }{% comment
- \axp@CommentText%
- }{% options
- \axp@CommandOptions%
- }%
+\IfBooleanTF{#1}{%
+ \axp@MarkLineEndShort%
+}{%
+ \ifaxp@CloseBlock%
+ \axp@MarkLineEndCont%
+ \axp@CloseBlockfalse%
+ \fi%
+ \axp@MarkLineBegin%
+}%
+\axp@DoCommand{% ajustment for opening/closing blocks
+ \IfBooleanTF{#1}{0}{1}%
+}{% command or module+name
+\axp@MakeSingleToken{}{\axp@CommandKeyword}{\ifaxp@IsModule(\else\ \fi}%
+}{% text or module arguments
+\axp@CommandText\ifaxp@IsModule)\fi%
+}{% command complement
+\axp@MakeSingleToken{ }{\axp@CommandComplementKeyword}{}%
+}{% comment
+\axp@CommentText%
+}{% options
+\axp@CommandOptions%
+}%
}
%! formatter = off
@@ -426,7 +524,6 @@
\usebox{\axp@SaveBox}%
\fi%
}
-%! formatter = on
% axp@DoCommand: builds the command (see axp@DefineCommand)
@@ -438,16 +535,15 @@
% #6: options
\newlength{\axp@CurrentTokenWidth}
\NewDocumentCommand{\axp@DoCommand}{ m m m m m m }{%
- \AlgSet{#6}%
- % Dimensions
- \settowidth{\axp@CurrentTokenWidth}{#2}%
- \axp@CalculateDimensions{#1}{{\axp@TextStyle\axp@TextFont#3}#4}{#5}%
- %
- % Making the line: body
- #2%
- %! formatter = off
+\AlgSet{#6}%
+% Dimensions
+\axp@SetToWidth{\axp@CurrentTokenWidth}{#2}%
+\axp@CalculateDimensions{#1}{{\axp@TextStyle\axp@TextFont#3}#4}{#5}%
+%
+% Making the line: body
+#2%
\begin{axp@FBox}%
- \ifaxp@IsModule\hspace{\axp@ParameterIndent}\fi%
+ \ifbool{axp@IsModule}{\hspace{\axp@ParameterIndent}}{}%
\parbox[t]{\axp@TextWidth}{%
\ifaxp@IsStatement%
\setlength{\hangindent}{\axp@StatementIndent}%
@@ -457,23 +553,22 @@
}%
\end{axp@FBox}%
% Making the line: comment
- \ifaxp@NoCommentPresent\else%
+ \ifbool{axp@NoCommentPresent}{}{%
\hspace{\axp@CommentSeparatorWidth}\hfill\CommentSymbol~%
\begin{axp@FBox}%
- \ifaxp@LineBalanceAuto
+ \ifbool{axp@LineBalanceAuto}{%
\begin{varwidth}[t]{\axp@CommentWidth}%
\axp@CommentStyle%
\textcolor{\axp@CommentColor}{\axp@CommentFont#5}\strut%
\end{varwidth}%
- \else
+ }{%
\parbox[t]{\axp@CommentWidth}{%
\axp@CommentStyle%
- \textcolor{\axp@CommentColor}{\axp@CommentFont{#5}}\strut%
+ \textcolor{\axp@CommentColor}{\axp@CommentFont#5}\strut%
}%
- \fi%
+ }%
\end{axp@FBox}%
- \fi%
- %! formatter = on
+ }%
}
@@ -485,12 +580,14 @@
\NewDocumentCommand{\Break}{}{\Keyword{break}}
\RenewDocumentCommand{\Return}{}{\axp@MakeSingleToken{}{\Keyword{return}}{ }}
+\NewDocumentCommand{\ByRef}{}{\Constant{byref}}
+\NewDocumentCommand{\ByValue}{}{\Constant{byvalue}}
\NewDocumentCommand{\True}{}{\Constant{true}}
\NewDocumentCommand{\False}{}{\Constant{false}}
\NewDocumentCommand{\Nil}{}{\Constant{nil}}
-\newcommand{\Id}[1]{\ensuremath{\textit{\rmfamily#1}}}
+\newcommand{\Id}[1]{\ensuremath{\emph{\rmfamily#1}}}
% \newcommand{\TextString}[1]{\textrm{\normalfont``{\ttfamily\mbox{#1}}''}}
% \algnewcommand{\VisibleSpace}{\textrm{\color{black!70}\textvisiblespace}}
@@ -503,35 +600,39 @@
% Read, write
\NewDocumentCommand{\Set}{ m m }{%
- \PackageWarning{alxpar}{The macro \string\Set\ is no longer supported.}%
- \Id{#1} \gets #2%
+\PackageWarning{alxpar}{The macro \string\Set\ is no longer supported.}%
+\Id{#1} \gets #2%
}
\NewDocumentCommand{\Read}{}{\Keyword{read} }
\NewDocumentCommand{\Write}{}{\Keyword{write} }
% %% Comments
\algnewcommand{\CommentIn}[1]{%
- \begin{axp@FBox}
- \textcolor{\axp@CommentColor}{\CommentSymbol~\axp@CommentFont#1~\CommentSymbolRight}%
- \end{axp@FBox}%
+\begin{axp@FBox}
+\textcolor{\axp@CommentColor}{\CommentSymbol~\axp@CommentFont#1~\CommentSymbolRight}%
+\end{axp@FBox}%
}
\NewDocumentCommand{\Commentl}{ m D<>{} }{%
- \begingroup%
- \AlgSet{#2}%
- \textcolor{\axp@CommentColor}{\CommentSymbol~\axp@CommentFont#1\strut}%
- \endgroup%
+\begingroup%
+\AlgSet{#2}%
+\textcolor{\axp@CommentColor}{\CommentSymbol~\axp@CommentFont#1\strut}%
+\endgroup%
}
\RenewDocumentCommand{\Comment}{ m D<>{} }{%
- \hfill\Commentl{#1}<#2>%
+\hfill\Commentl{#1}<#2>%
}
\newlength{\axp@CurrentIndent}
-\NewDocumentCommand{\axp@BeginGroup}{}{\begingroup}
+\newcounter{axp@BlockCounter}
+\newcounter{axp@BlockLevelCounter}
+\NewDocumentCommand{\axp@BeginGroup}{}{%
+\begingroup%
+}
\NewDocumentCommand{\axp@EndGroup}{}{%
- \global\edef\axp@SaveIndent{\the\ALG@tlm}%
- \endgroup%
- \setlength{\ALG@tlm}{\axp@SaveIndent}%
+\global\edef\axp@SaveIndent{\the\ALG@tlm}%
+\endgroup%
+\setlength{\ALG@tlm}{\axp@SaveIndent}%
}
@@ -541,12 +642,12 @@
% #3: comments
% #4: options
\NewDocumentCommand{\Statep}{ O{} +m O{} D<>{} }{%
- \axp@IsStatementtrue%
- \State\axp@DoCommand{1}{}{#2}{}{#1#3}{#4}%
- \axp@IsStatementfalse%
+\axp@IsStatementtrue%
+\State\axp@DoCommand{1}{}{#2}{}{#1#3}{#4}%
+\axp@IsStatementfalse%
}
\RenewDocumentCommand{\Statex}{}{%
- \item[]\strut%
+\item[]\strut%
}
@@ -557,16 +658,17 @@
% #3: comment
% #4: options
\RenewDocumentCommand{\While}{ O{} m O{} D<>{} }{%
- \axp@BeginGroup
- \axp@DefineCommand{\Keyword{while}}{#2}{\Keyword{do}}{#1#3}{#4}%
- \ALG@makeentity{While}%
+\axp@BeginGroup%
+\axp@DefineCommand{\Keyword{while}}{#2}{\Keyword{do}}{#1#3}{#4}%
+\ALG@makeentity{While}%
}
% #1: comment
% #2: options
\RenewDocumentCommand{\EndWhile}{ O{} D<>{} }{%
- \axp@DefineCommand{\Keyword{endwhile}}{}{}{#1}{#2}%
- \ALG@makeentity{EndWhile}%
- \axp@EndGroup
+\axp@DefineCommand{\Keyword{endwhile}}{}{}{#1}{#2}%
+\ALG@makeentity{EndWhile}%
+\ifaxp@NoEnd\axp@MarkLineEndFinal\fi%
+\axp@EndGroup%
}
@@ -575,18 +677,19 @@
% #1: comments
% #2: options
\RenewDocumentCommand{\Repeat}{ O{} D<>{} }{%
- \axp@BeginGroup
- \axp@DefineCommand{\Keyword{repeat}}{}{}{#1}{#2}%
- \ALG@makeentity{Repeat}%
+\axp@BeginGroup%
+\axp@DefineCommand{\Keyword{repeat}}{}{}{#1}{#2}%
+\ALG@makeentity{Repeat}%
}
% #1: old style comment
% #2: text
% #3: comment
% #4: options
\RenewDocumentCommand{\Until}{ O{} m O{} D<>{} }{%
- \axp@DefineCommand{\Keyword{until}}{#2}{}{#1#3}{#4}%
- \ALG@makeentity{Until}%
- \axp@EndGroup
+\axp@DefineCommand{\Keyword{until}}{#2}{}{#1#3}{#4}%
+\ALG@makeentity{Until}%
+\ifaxp@NoEnd\axp@MarkLineEndFinal\fi%
+\axp@EndGroup%
}
%% Loop
@@ -594,16 +697,17 @@
% #1: comment
% #2: options
\RenewDocumentCommand{\Loop}{ O{} D<>{} }{%
- \axp@BeginGroup
- \axp@DefineCommand{\Keyword{loop}}{}{}{#1}{#2}%
- \ALG@makeentity{Loop}%
+\axp@BeginGroup%
+\axp@DefineCommand{\Keyword{loop}}{}{}{#1}{#2}%
+\ALG@makeentity{Loop}%
}
% #1: comment
% #2: options
\RenewDocumentCommand{\EndLoop}{ O{} D<>{} }{%
- \axp@DefineCommand{\Keyword{endloop}}{}{}{#1}{#2}%
- \ALG@makeentity{EndLoop}%
- \axp@EndGroup
+\axp@DefineCommand{\Keyword{endloop}}{}{}{#1}{#2}%
+\ALG@makeentity{EndLoop}%
+\ifaxp@NoEnd\axp@MarkLineEndFinal\fi%
+\axp@EndGroup%
}
@@ -618,30 +722,33 @@
% #3: comment
% #4: options
\RenewDocumentCommand{\If}{ O{} m O{} D<>{} }{%
- \axp@BeginGroup
- \axp@DefineCommand{\Keyword{if}}{#2}{\Keyword{then}}{#1#3}{#4}%
- \ALG@makeentity{If}%
+\axp@BeginGroup%
+\axp@DefineCommand{\Keyword{if}}{#2}{\Keyword{then}}{#1#3}{#4}%
+\ALG@makeentity{If}%
}
% #1: old style comment
% #2: text
% #3: comment
% #4: options
\RenewDocumentCommand{\ElsIf}{ O{} m O{} D<>{} }{%
- \axp@DefineCommand{\Keyword{else}~\Keyword{if}}{#2}{\Keyword{then}}{#1#3}{#4}%
- \ALG@makeentity{ElsIf}%
+\axp@DefineCommand{\Keyword{else}~\Keyword{if}}{#2}{\Keyword{then}}{#1#3}{#4}%
+\axp@CloseBlocktrue%
+\ALG@makeentity{ElsIf}%
}
% #1: comment
% #2: options
\RenewDocumentCommand{\Else}{ O{} D<>{} }{%
- \axp@DefineCommand{\Keyword{else}}{}{}{#1}{#2}%
- \ALG@makeentity{Else}%
+\axp@DefineCommand{\Keyword{else}}{}{}{#1}{#2}%
+\axp@CloseBlocktrue%
+\ALG@makeentity{Else}%
}
% #1: comment
% #2: options
\RenewDocumentCommand{\EndIf}{ O{} D<>{} }{%
- \axp@DefineCommand{\Keyword{endif}}{}{}{#1}{#2}%
- \ALG@makeentity{EndIf}%
- \axp@EndGroup
+\axp@DefineCommand{\Keyword{endif}}{}{}{#1}{#2}%
+\ALG@makeentity{EndIf}%
+\ifaxp@NoEnd\axp@MarkLineEndFinal\fi%
+\axp@EndGroup%
}
@@ -656,46 +763,49 @@
% #3: comment
% #4: options
\RenewDocumentCommand{\Switch}{ O{} m O{} D<>{} }{%
- \axp@BeginGroup
- \axp@DefineCommand{\Keyword{switch}}{#2}{}{#1#3}{#4}%
- \ALG@makeentity{Switch}%
+\axp@BeginGroup
+\axp@DefineCommand{\Keyword{switch}}{#2}{}{#1#3}{#4}%
+\ALG@makeentity{Switch}%
}
% #1: comment
% #2: options
\RenewDocumentCommand{\EndSwitch}{ O{} D<>{} }{%
- \axp@DefineCommand{\Keyword{endswitch}}{}{}{#1}{#2}%
- \ALG@makeentity{EndSwitch}%
- \axp@EndGroup
+\axp@DefineCommand{\Keyword{endswitch}}{}{}{#1}{#2}%
+\ALG@makeentity{EndSwitch}%
+\ifaxp@NoEnd\axp@MarkLineEndFinal\fi%
+\axp@EndGroup
}
% #1: old style comment
% #2: text
% #3: comment
% #4: options
\RenewDocumentCommand{\Case}{ O{} m O{} D<>{} }{%
- \axp@BeginGroup
- \axp@DefineCommand{\Keyword{case}}{#2}{\Keyword{do}}{#1#3}{#4}%
- \ALG@makeentity{Case}%
+\axp@BeginGroup
+\axp@DefineCommand{\Keyword{case}}{#2}{\Keyword{do}}{#1#3}{#4}%
+\ALG@makeentity{Case}%
}
% #1: comment
% #2: options
\RenewDocumentCommand{\EndCase}{ O{} D<>{} }{%
- \axp@DefineCommand{\Keyword{endcase}}{}{}{#1}{#2}%
- \ALG@makeentity{EndCase}%
- \axp@EndGroup
+\axp@DefineCommand{\Keyword{endcase}}{}{}{#1}{#2}%
+\ALG@makeentity{EndCase}%
+\ifaxp@NoEnd\axp@MarkLineEndFinal\fi%
+\axp@EndGroup
}
% #1: comment
% #2: options
\RenewDocumentCommand{\Otherwise}{ O{} D<>{} }{%
- \axp@BeginGroup
- \axp@DefineCommand{\Keyword{otherwise}}{}{}{#1}{#2}%
- \ALG@makeentity{Otherwise}%
+\axp@BeginGroup
+\axp@DefineCommand{\Keyword{otherwise}}{}{}{#1}{#2}%
+\ALG@makeentity{Otherwise}%
}
% #1: comment
% #2: options
\RenewDocumentCommand{\EndOtherwise}{ O{} D<>{} }{%
- \axp@DefineCommand{\Keyword{endotherwise}}{}{}{#1}{#2}%
- \ALG@makeentity{EndOtherwise}%
- \axp@EndGroup
+\axp@DefineCommand{\Keyword{endotherwise}}{}{}{#1}{#2}%
+\ALG@makeentity{EndOtherwise}%
+\ifaxp@NoEnd\axp@MarkLineEndFinal\fi%
+\axp@EndGroup
}
@@ -718,34 +828,35 @@
% #3: comment
% #4: options
\RenewDocumentCommand{\For}{ O{} m O{} D<>{} }{%
- \axp@BeginGroup
- \axp@DefineCommand{\Keyword{for}}{#2}{\Keyword{do}}{#1#3}{#4}%
- \ALG@makeentity{For}%
+\axp@BeginGroup
+\axp@DefineCommand{\Keyword{for}}{#2}{\Keyword{do}}{#1#3}{#4}%
+\ALG@makeentity{For}%
}
% #1: old style comment
% #2: text
% #3: comment
% #4: options
\RenewDocumentCommand{\ForEach}{ O{} m O{} D<>{} }{%
- \axp@BeginGroup
- \axp@DefineCommand{\Keyword{foreach}}{#2}{\Keyword{do}}{#1#3}{#4}%
- \ALG@makeentity{ForEach}%
+\axp@BeginGroup
+\axp@DefineCommand{\Keyword{foreach}}{#2}{\Keyword{do}}{#1#3}{#4}%
+\ALG@makeentity{ForEach}%
}
% #1: old style comment
% #2: text
% #3: comment
% #4: options
\RenewDocumentCommand{\ForAll}{ O{} m O{} D<>{} }{%
- \axp@BeginGroup
- \axp@DefineCommand{\Keyword{forall}}{#2}{\Keyword{do}}{#1#3}{#4}%
- \ALG@makeentity{For}%
+\axp@BeginGroup
+\axp@DefineCommand{\Keyword{forall}}{#2}{\Keyword{do}}{#1#3}{#4}%
+\ALG@makeentity{For}%
}
% #1: comment
% #2: options
\RenewDocumentCommand{\EndFor}{ O{} D<>{} }{%
- \axp@DefineCommand{\Keyword{endfor}}{}{}{#1}{#2}%
- \ALG@makeentity{EndFor}%
- \axp@EndGroup
+\axp@DefineCommand{\Keyword{endfor}}{}{}{#1}{#2}%
+\ALG@makeentity{EndFor}%
+\ifaxp@NoEnd\axp@MarkLineEndFinal\fi%
+\axp@EndGroup
}
@@ -758,18 +869,19 @@
% #4: comment
% #5: options
\RenewDocumentCommand{\Procedure}{ O{} m m O{} D<>{} }{%
- \axp@BeginGroup
- \axp@IsModuletrue%
- \axp@DefineCommand{\Keyword{procedure}~\Module{#2}}{#3}{}{#4}{#5}%
- \ALG@makeentity{Procedure}%
- \axp@IsModulefalse%
+\axp@BeginGroup
+\axp@IsModuletrue%
+\axp@DefineCommand{\Keyword{procedure}~\Module{#2}}{#3}{}{#1#4}{#5}%
+\ALG@makeentity{Procedure}%
+\axp@IsModulefalse%
}
% #1: comment
% #2: options
\RenewDocumentCommand{\EndProcedure}{ O{} D<>{} }{%
- \axp@DefineCommand{\Keyword{endprocedure}}{}{}{#1}{#2}%
- \ALG@makeentity{EndProcedure}%
- \axp@EndGroup
+\axp@DefineCommand{\Keyword{endprocedure}}{}{}{#1}{#2}%
+\axp@MarkLineEndFinal%
+\ALG@makeentity{EndProcedure}%
+\axp@EndGroup
}
\algblockdefx[Function]{Function}{EndFunction}{\axp@MakeCommand}{\axp@MakeCommand*}
@@ -779,25 +891,26 @@
% #4: comment
% #5: options
\RenewDocumentCommand{\Function}{ O{} m m O{} D<>{} }{%
- \axp@BeginGroup
- \axp@IsModuletrue%
- \axp@DefineCommand{\Keyword{function}~\Module{#2}}{#3}{}{#4}{#5}%
- \ALG@makeentity{Function}%
- \axp@IsModulefalse%
+\axp@BeginGroup
+\axp@IsModuletrue%
+\axp@DefineCommand{\Keyword{function}~\Module{#2}}{#3}{}{#1#4}{#5}%
+\ALG@makeentity{Function}%
+\axp@IsModulefalse%
}
% #1: comment
% #2: options
\RenewDocumentCommand{\EndFunction}{ O{} D<>{} }{%
- \axp@DefineCommand{\Keyword{endfunction}}{}{}{#1}{#2}%
- \ALG@makeentity{EndFunction}%
- \axp@EndGroup
+\axp@DefineCommand{\Keyword{endfunction}}{}{}{#1}{#2}%
+\axp@MarkLineEndFinal%
+\ALG@makeentity{EndFunction}%
+\axp@EndGroup
}
\RenewDocumentCommand{\Call}{ m m D<>{} }{%
- \begingroup%
- \AlgSet{#3}%
- \Module{#1}\textcolor{\axp@TextColor}{\axp@TextFont(#2)}%
- \endgroup%
+\begingroup%
+\AlgSet{#3}%
+\Module{#1}\textcolor{\axp@TextColor}{\axp@TextFont(#2)}%
+\endgroup%
}
@@ -822,13 +935,13 @@
\NewCommandCopy{\axp@AlgorithmicxAlgorithmic}{\algorithmic}
\NewCommandCopy{\axp@AlgorithmicxEndAlgorithmic}{\endalgorithmic}
\RenewDocumentCommand{\algorithmic}{ O{} D<>{} }{%
- \begingroup%
- \AlgSet{#2}%
- \axp@AlgorithmicxAlgorithmic[#1]%
+\begingroup%
+\AlgSet{#2}%
+\axp@AlgorithmicxAlgorithmic[#1]%
}
\RenewDocumentCommand{\endalgorithmic}{}{%
- \axp@AlgorithmicxEndAlgorithmic%
- \endgroup%
+\axp@AlgorithmicxEndAlgorithmic%
+\endgroup%
}
-\endinput \ No newline at end of file
+\endinput
diff --git a/Master/texmf-dist/tex/latex/amsmath/amsmath.sty b/Master/texmf-dist/tex/latex/amsmath/amsmath.sty
index 63f578290a7..4e3165add6a 100644
--- a/Master/texmf-dist/tex/latex/amsmath/amsmath.sty
+++ b/Master/texmf-dist/tex/latex/amsmath/amsmath.sty
@@ -26,7 +26,7 @@
\DeclareRelease{}{1994-06-01}{amsmath-2018-12-01.sty}
\DeclareRelease{}{2018-12-01}{amsmath-2018-12-01.sty}
\DeclareCurrentRelease{}{2019-04-01}
-\ProvidesPackage{amsmath}[2024/05/23 v2.17q AMS math features]
+\ProvidesPackage{amsmath}[2024/11/05 v2.17t AMS math features]
\edef\@temp{\catcode 96=\number\catcode 96 }
\catcode\string `\`=12
\def\do#1{\catcode\number`#1=\number\catcode`#1}
diff --git a/Master/texmf-dist/tex/latex/anima/anima.cls b/Master/texmf-dist/tex/latex/anima/anima.cls
new file mode 100644
index 00000000000..34ef1083cc1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/anima/anima.cls
@@ -0,0 +1,448 @@
+%%
+%% This is file `anima.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% anima.dtx (with options: `class')
+%% ----------------------------------------------------------------
+%% anima --- Class for creating slideshow with simple animations with TikZ
+%% E-mail: adriano_gsgs@hotmail.com
+%% Written by Adriano Gomes de Santana
+%% Released under the LaTeX Project Public License v1.3c or later
+%% See http://www.latex-project.org/lppl.txt
+%% ----------------------------------------------------------------
+%%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{anima}[2024/11/12 Classe Anima para Animations]
+\LoadClass[multi=page]{standalone}
+
+\RequirePackage{pgf,tikz}[1994/06/01]
+\usetikzlibrary{positioning}
+
+\newcommand\animaFormatText{\large}
+\newcommand\animaFormatTitle{\large\bf}
+\newcommand{\animaFrameTitle}[4]{
+\begin{anima}
+\node (centro) at (0,0) {};
+\begin{block}{\huge\vphantom{Íq} #1}
+[(\anima@BoardWidth-.15)*1cm]
+[above = of centro,
+align = center]
+[node distance = 0.5cm, below = of animaPosBlock]
+\\\Large #2
+\end{block}
+\node[
+text width = {(2*\anima@BoardWidth-0.25)*1cm},
+node distance = 3.5cm,
+below = of centro]
+{#3\hfill #4};
+\end{anima}
+}
+
+\newcommand\animaBoardDimension[2]{
+\def\anima@BoardWidth{(#1/2)}
+\def\anima@BoardHeight{(#2/2)}
+}
+\animaBoardDimension{16}{9}
+
+\newcommand{\animaColorTheme}[6]{
+\definecolor{anima@BoardColor} {HTML}{#1}
+\definecolor{boardColor} {HTML}{#1}
+\definecolor{anima@TextColor} {HTML}{#2}
+\definecolor{textColor} {HTML}{#2}
+\definecolor{anima@Color1} {HTML}{#3}
+\definecolor{animaColor1} {HTML}{#3}
+\definecolor{anima@Color2} {HTML}{#4}
+\definecolor{animaColor2} {HTML}{#4}
+\definecolor{anima@Color3} {HTML}{#5}
+\definecolor{animaColor3} {HTML}{#5}
+\definecolor{anima@Color4} {HTML}{#6}
+\definecolor{animaColor4} {HTML}{#6}
+}
+
+\def\animaColorThemeI{
+\animaColorTheme{FFFFFF}
+{000000}
+{0000FF}
+{FF0000}
+{00FF00}
+{FFFF00}
+}
+\def\animaColorThemeII{
+\animaColorTheme{FFFFFF}
+{660907}
+{016BBF}
+{FF0000}
+{00FFFF}
+{FFD16A}
+
+}
+
+\animaColorThemeI
+
+\newcommand\animaBackgroud{
+\draw[dotted, opacity=.2,line width = .3pt] %
+({-\anima@BoardWidth},{-\anima@BoardHeight}) grid %
+({\anima@BoardWidth},{\anima@BoardHeight});
+}
+
+\NewExpandableDocumentCommand
+{\uns}{s o o m m m}{
+ %\IfNoValueTF{#2}{
+ % Não há #2 nem #3
+ \ifnum#5=0
+ (\um*(#4+#6)>=#4?1:0)
+ \else
+ \IfBooleanTF{#1}{
+ (\um*(#4+#5+#6)<#4?0:
+ (\um*(#4+#5+#6)>=#4+#5?1:
+ (
+ -((2*(#6+#5+#4)^3)/#5^3)*(\um)^3+
+ ((3*(#5+2*#4)*(#6+#5+#4)^2)/#5^3)*(\um)^2+
+ -((6*#4*(#5+#4)*(#6+#5+#4))/#5^3)*\um+
+ ((#4^2*(3*#5+2*#4))/#5^3)
+ )
+ ))
+ }{
+ (\um*(#4+#5+#6)<#4?0:
+ (\um*(#4+#5+#6)>=#4+#5?1:
+ (((#4+#5+#6)/#5)*\um-#4/#5)
+ ))
+ }
+ \fi
+ %}{
+ % \IfNoValueTF{#3}{
+ % % Há #2, mas não há #3
+ % \ifnum#4=0
+ % \ifnum#5=0
+ % 1
+ % \else
+ % 1
+ % \fi
+ % \else
+ % \ifnum#5=0
+ % 1
+ % \else
+ % 1
+ % \fi
+ % \fi
+ % }{
+ % \ifnum#4=0
+ % \ifnum#5=0
+ % 1
+ % \else
+ % 1
+ % \fi
+ % \else
+ % \ifnum#5=0
+ % 1
+ % \else
+ % 1
+ % \fi
+ % \fi
+ % }
+ %}
+}
+\newcommand{\zeros}[3]{(1-\uns{#1}{#2}{#3})}
+
+\newcount\anima@FrameCount
+\newcount\nFrame
+\NewDocumentEnvironment{anima}{+O{1} +b}{
+\ifnum #1 = 1
+\def\um{1}
+\def\zero{0}
+\begin{page}%
+\begin{tikzpicture}[color=anima@TextColor,line width=1.5pt]
+\clip ({-\anima@BoardWidth},{-\anima@BoardHeight})
+rectangle ({\anima@BoardWidth},{\anima@BoardHeight});
+\fill[color=anima@BoardColor]
+({-\anima@BoardWidth},{-\anima@BoardHeight})
+rectangle ({\anima@BoardWidth},{\anima@BoardHeight});
+\animaBackgroud
+\node (animaPosBlock) at \anima@PositionBlock{};
+#2
+\end{tikzpicture}%
+\end{page}
+\else
+\anima@FrameCount = 0
+\loop
+\nFrame = \anima@FrameCount
+\def\um{(\the\anima@FrameCount/(#1-1))}
+\def\zero{(1-\um)}
+\begin{page}%
+\begin{tikzpicture}[color=anima@TextColor,line width=1.0pt]
+\clip
+({-\anima@BoardWidth},{-\anima@BoardHeight}) rectangle
+({\anima@BoardWidth},{\anima@BoardHeight});
+\fill[color=anima@BoardColor]
+({-\anima@BoardWidth},{-\anima@BoardHeight}) rectangle
+({\anima@BoardWidth},{\anima@BoardHeight});
+\animaBackgroud
+\node (animaPosBlock) at \anima@PositionBlock {};
+#2
+\end{tikzpicture}%
+\end{page}
+\advance \anima@FrameCount +1
+\ifnum \anima@FrameCount < #1 \repeat
+\fi
+}{}
+
+\renewenvironment{frame}[1][1]{\begin{anima}[#1]}{\end{anima}}
+
+\def\anima@PositionBlock{(0,{\anima@BoardHeight})}
+\def\anima@WhidthBlock{\anima@BoardWidth*0.9875 cm}
+
+\tikzstyle{anima@themeBlock}=[
+draw,
+bottom color = BlockColor,
+top color = BlockColor!50!anima@BoardColor
+]
+
+\newcommand{\animaStyle}[1]{
+\def\anima@NameStyle{#1}
+\def\anima@animaStyle{anima}
+\def\anima@defaultStyle{default}
+\ifx\anima@NameStyle\anima@animaStyle
+\tikzstyle{anima@themeBlock}=[
+draw = BlockColor,
+bottom color = BlockColor,
+top color = BlockColor!50!anima@BoardColor,
+rounded corners=1.4pt
+]
+\else
+\tikzstyle{anima@themeBlock}=[
+draw,
+bottom color = BlockColor,
+top color = BlockColor!50!anima@BoardColor
+]
+\fi
+}
+\newcommand{\animaColor}[1]{
+\def\anima@NameColor{#1}
+\def\anima@browntextColor{browntext}
+\def\anima@greenboardColor{greenboard}
+\def\anima@blackboardColor{blackboard}
+\def\anima@graytextColor{graytext}
+\def\anima@nfColor{nf}
+\def\anima@defaultColor{default}
+\ifx\anima@NameColor\anima@browntextColor
+\animaColorTheme
+{FFFFFF}{660907}{016BBF}
+{FF0000}{00FFFF}{FFD16A}
+\else\ifx\anima@NameColor\anima@greenboardColor
+\animaColorTheme
+{00542C}{FFFFFF}{2222FF}
+{FF3333}{00FF00}{FFFF00}
+\else\ifx\anima@NameColor\anima@blackboardColor
+\animaColorTheme
+{252B26}{FFFFFF}{2BA8D9}
+{F23030}{2EA662}{F28322}
+\else\ifx\anima@NameColor\anima@graytextColor
+\animaColorTheme
+{FFFFFF}{252B26}{2BA8D9}
+{F23030}{2EA662}{F28322}
+\else\ifx\anima@NameColor\anima@nfColor
+\animaColorTheme
+{252B26}{FFFFFF}{2BA8D9}
+{F23030}{2EA662}{EEEE44}%{F28322}
+\else
+\animaColorTheme%
+{FFFFFF}{000000}{0000FF}%
+{FF0000}{00FF00}{FFFF00}
+\fi\fi\fi\fi
+
+}
+
+\newcommand{\animaTheme}[1]{
+\def\anima@NameTheme{#1}
+\def\anima@defaultTheme{default}
+\def\anima@LTbarTheme{LTbar}
+\def\anima@planeTheme{plane}
+\ifx\anima@NameTheme\anima@LTbarTheme
+\renewcommand\animaBackgroud{
+\draw[dotted, opacity=.2,line width = .3pt] %
+({-\anima@BoardWidth},{-\anima@BoardHeight}) grid %
+({\anima@BoardWidth},{\anima@BoardHeight});
+\fill[
+anima@Color3,
+draw=anima@Color3!50!anima@BoardColor,
+opacity=.7]
+({-\anima@BoardWidth},{-\anima@BoardHeight}) rectangle
+({-0.7*\anima@BoardWidth},{\anima@BoardHeight});
+\fill[
+anima@Color3,
+draw=anima@Color3!50!anima@BoardColor,
+opacity=.5]
+({-\anima@BoardWidth+2.4},{\anima@BoardHeight}) rectangle
+({\anima@BoardWidth},{0.7*\anima@BoardHeight});
+\node at (-5,4.5) [anchor=north west]{\begin{minipage}{14cm}\color{anima@TextColor} \small
+\textbf{\@title}\vspace{-5pt}
+
+\@author
+\end{minipage}};
+}
+\else\ifx\anima@NameTheme\anima@planeTheme
+\renewcommand\animaBackgroud{}
+\else
+\renewcommand\animaBackgroud{
+\draw[dotted, opacity=.2,line width = .3pt] %
+({-\anima@BoardWidth},{-\anima@BoardHeight}) grid %
+({\anima@BoardWidth},{\anima@BoardHeight});
+}
+\fi\fi
+}
+
+\NewDocumentEnvironment{block}
+{+O{animaPosBlock} +m +O{\anima@WhidthBlock} +O{} +O{} +b}
+{
+\colorlet{BlockColor}{anima@Color1}
+\node[
+anima@themeBlock,
+text width = {2*#3-0.25cm},
+node distance = 0.0cm,
+below = of {#1}, #4]
+(animaPosBlock) {\animaFormatTitle\vphantom{Íq} #2};
+\node[ text width = {2*#3-0.25cm},
+node distance = 0.0cm,
+below = of animaPosBlock,#5]
+(animaPosBlock) {\animaFormatText #6};
+}{}
+
+\NewDocumentEnvironment{alertblock}
+{+O{animaPosBlock} +m +O{\anima@WhidthBlock} +O{} +O{} +b}
+{
+\colorlet{BlockColor}{anima@Color2}
+\node[
+anima@themeBlock,
+text width = {2*#3-0.25cm},
+node distance = 0.0cm,
+below = of {#1}, #4]
+(animaPosBlock) {\animaFormatTitle\vphantom{Íq} #2};
+\node[ text width = {2*#3-0.25cm},
+node distance = 0.0cm,
+below= of animaPosBlock,#5]
+(animaPosBlock) {\animaFormatText #6};
+}{}
+
+\NewDocumentEnvironment{exampleblock}
+{+O{animaPosBlock} +m +O{\anima@WhidthBlock} +O{} +O{} +b}
+{
+\colorlet{BlockColor}{anima@Color3}
+\node[
+anima@themeBlock,
+text width = {2*#3-0.25cm},
+node distance = 0.0cm,
+below = of {#1}, #4]
+(animaPosBlock) {\animaFormatTitle\vphantom{Íq} #2};
+\node[ text width = {2*#3-0.25cm},
+node distance = 0.0cm,
+below= of animaPosBlock,
+#5]
+(animaPosBlock) {\animaFormatText #6};
+}{}
+
+\NewDocumentEnvironment{anotherblock}
+{+O{animaPosBlock} +m +O{\anima@WhidthBlock} +O{} +O{} +b}
+{
+\colorlet{BlockColor}{anima@Color4}
+\node[
+anima@themeBlock,
+text width = {2*#3-0.25cm},
+node distance = 0.0cm,
+below = of {#1}, #4]
+(animaPosBlock) {\animaFormatTitle\vphantom{Íq} #2};
+\node[ text width = {2*#3-0.25cm},
+node distance = 0.0cm,
+below= of animaPosBlock,
+#5]
+(animaPosBlock) {\animaFormatText #6};
+}{}
+
+\NewDocumentEnvironment{notitleblock}
+{+O{animaPosBlock} +O{\anima@WhidthBlock} +O{} +b}
+{
+\node[
+text width = {2*#2-0.25cm},
+node distance = 0.0cm,
+below= of animaPosBlock,
+#3]
+(animaPosBlock) {\animaFormatText #4};
+}{}
+
+\newcommand{\animaExemplo}{\large
+\begin{block}[(0,4.2)]{LAYOUT EXAMPLE WITH BLOCK OF TITLE}[7.9cm]
+\end{block}
+
+\begin{exampleblock}[(-4,3)]{EXAMPLE BLOCK}[3.9cm]
+A example of block with a equation
+$$f(x)=2\sin(.57x)$$
+\end{exampleblock}
+
+\begin{alertblock}{ALERT BLOCK}[3.9cm]
+\end{alertblock}
+
+\begin{scope}[
+shift={(4,-2)},
+scale=1.3,
+rotate around x= {360*\uns011},
+rotate around y= {360*\uns110}]
+\draw[animaColor1,-latex] (0,0)--(1,0)node[anchor=north]{$x$};
+\draw[animaColor2,-latex] (0,0)--(0,1)node[anchor=east]{$y$};
+\draw[animaColor4] (-1,-1,-1)--(1,-1,-1)--(1,1,-1)--(-1,1,-1)--cycle;
+\draw[animaColor4] (-1,-1,1)--(1,-1,1)--(1,1,1)--(-1,1,1)--cycle;
+\draw[animaColor4] (-1,-1,-1)--(-1,-1,1) (1,-1,-1)--(1,-1,1)
+(1,1,-1)--(1,1,1) (-1,1,-1)--(-1,1,1);
+\draw[anima@Color3,-latex] (0,0)--(0,0,1)node[anchor=south]{$z$};
+\end{scope}
+
+\node at (0,3) [anchor=north west]{
+\begin{minipage}{7.25cm}\animaFormatText
+{\color{textColor} Text in the color textColor}\\
+{\color{animaColor1} Text in the color animaColor1}\\
+{\color{animaColor2} Text in the color animaColor2}\\
+{\color{animaColor3} Text in the color animaColor3}\\
+{\color{animaColor4} Text in the color animaColor4}\\
+\end{minipage}};
+
+\begin{scope}[shift={(-7,-4)},color=animaColor2]
+\draw[-latex] (-.5,0)--(6,0)node[anchor=north]{$x$};
+\draw[-latex] (0,-.5)--(0,3)node[anchor=east]{$f(x)$};
+\def\numero{\the\nFrame}
+\foreach \i in {-1,0,...,\numero}{
+\fill[color=animaColor4]
+({1.25+(\i+1)*(4/((\numero)+2))},0)--
+({1.25+(\i+2)*(4/((\numero)+2))},0)--
+({1.25+(\i+2)*(4/((\numero)+2))},{2*sin(.6*(1+(\i+2)
+*(4/((\numero)+2))) r)})--
+({1.25+(\i+1)*(4/((\numero)+2))},{2*sin(.6*(1+(\i+2)
+*(4/((\numero)+2))) r)})--
+cycle;
+\draw[-latex] (-.5,0)--(6,0)node[anchor=north]{$x$};
+\draw[-latex] (0,-.5)--(0,3)node[anchor=east]{$f(x)$};
+\draw[color=animaColor3,domain=0:{5.7}] plot (\x,{2*sin(.57*\x r)});
+\draw[color=animaColor1,domain=0:{5.7*\um}] plot (\x,{2*sin(.57*\x r)});
+}
+\end{scope}
+}
+%%
+%% Copyright (C) 2009 by Adriano Gomes de Santana <adriano_gsgs@hotmail.com>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License (LPPL), either
+%% version 1.3c of this license or (at your option) any later
+%% version. The latest version of this license is in the file:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This work is "maintained" (as per LPPL maintenance status) by
+%% Adriano Gomes de Santana.
+%%
+%% This work consists of the file anima.dtx
+%% and the derived files anima.ins,
+%% anima.pdf and
+%% anima.cls.
+%%
+%%
+%% End of file `anima.cls'.
diff --git a/Master/texmf-dist/tex/latex/animate/animate.sty b/Master/texmf-dist/tex/latex/animate/animate.sty
index 7e5b746210a..461eb50b50d 100644
--- a/Master/texmf-dist/tex/latex/animate/animate.sty
+++ b/Master/texmf-dist/tex/latex/animate/animate.sty
@@ -13,7 +13,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
-\def\@anim@version{2024/09/06}
+\def\@anim@version{2024/10/14}
\ProvidesPackage{animate}
[\@anim@version\space PDF & SVG animations from files and inline graphics]
@@ -1625,7 +1625,8 @@
\if@anim@controls@stop\setboolean{@anim@controls}{true}\fi%
\if@anim@controls@step\setboolean{@anim@controls}{true}\fi%
\fi%
- \edef\@anim@base{#3}%
+ \Gin@set@curr@file{#3}%
+ \expandafter\edef\expandafter\@anim@base\expandafter{\@curr@file}%
\edef\@anim@first{#4}%
\edef\@anim@last{#5}%
\@anim@checkmultipage{\@anim@base}{\@anim@ftype}%test for multipage file
@@ -3351,7 +3352,8 @@
\setboolean{@anim@@draft}{false}%
}
\newboolean{@anim@@nomouse}
-\def\@anim@@method{\z@}%default animation method is `icon'
+%\def\@anim@@method{\z@}%default animation method is `icon'
+\def\@anim@@method{\@ne}%default animation method is `widget'
\def\@anim@@ftype{}% file type (extension) of graphics
\ExplSyntaxOn
diff --git a/Master/texmf-dist/tex/latex/aomart/aom_orcid_logo.eps b/Master/texmf-dist/tex/latex/aomart/aom_orcid_logo.eps
new file mode 100644
index 00000000000..067a8f185a0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/aomart/aom_orcid_logo.eps
@@ -0,0 +1,518 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%Produced by poppler pdftops version: 24.04.0 (http://poppler.freedesktop.org)
+%%Creator: TeX
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 194 193
+%%HiResBoundingBox: 0 0 194 193
+%%DocumentSuppliedResources: (atend)
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.00 0
+%%Copyright: Copyright 1996-2011, 2022 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ % Change paper size, but only if different from previous paper size otherwise
+ % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size
+ % so we use the same when checking if the size changes.
+ /setpagedevice where {
+ pop currentpagedevice
+ /PageSize known {
+ 2 copy
+ currentpagedevice /PageSize get aload pop
+ exch 4 1 roll
+ sub abs 5 gt
+ 3 1 roll
+ sub abs 5 gt
+ or
+ } {
+ true
+ } ifelse
+ {
+ 2 array astore
+ 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end
+ setpagedevice
+ } {
+ pop pop
+ } ifelse
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfPatternCS false def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Tp { /pdfPatternCS exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+/Tclip* { pdfTextClipPath cvx exec eoclip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+%%EndPageSetup
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 194 193 re
+W
+q
+q
+[1 0 0 1 1 0] cm
+q
+[1 0 0 1 0 0] cm
+0 0 191.99999 192.000012 re
+W
+[1 0 0 -1 0 192.000012] cm
+q
+/DeviceRGB {} cs
+[0.651 0.8078 0.2235] sc
+192 96 m
+192 149.023 149.023 192 96 192 c
+42.977 192 0 149.023 0 96 c
+0 42.977 42.977 0 96 0 c
+149.023 0 192 42.977 192 96 c
+h
+f
+/DeviceRGB {} cs
+[1 1 1] sc
+53.176 59.324 11.551 80.324 re
+f
+81.676 59.324 m
+112.875 59.324 l
+142.574 59.324 155.625 80.551 155.625 99.523 c
+155.625 120.148 139.5 139.727 113.023 139.727 c
+81.676 139.727 l
+81.676 59.324 l
+h
+93.227 129.301 m
+111.602 129.301 l
+137.773 129.301 143.773 109.426 143.773 99.523 c
+143.773 83.398 133.5 69.75 111 69.75 c
+93.227 69.75 l
+93.227 129.301 l
+h
+f
+66.523 42.602 m
+66.523 46.727 63.148 50.176 58.949 50.176 c
+54.75 50.176 51.375 46.727 51.375 42.602 c
+51.375 38.398 54.75 35.023 58.949 35.023 c
+63.148 35.023 66.523 38.477 66.523 42.602 c
+h
+f
+Q
+Q
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/aomart/aom_orcid_logo.pdf b/Master/texmf-dist/tex/latex/aomart/aom_orcid_logo.pdf
new file mode 100644
index 00000000000..97fb31c0380
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/aomart/aom_orcid_logo.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/aomart/aom_orcid_logo_bw.eps b/Master/texmf-dist/tex/latex/aomart/aom_orcid_logo_bw.eps
new file mode 100644
index 00000000000..db38d816922
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/aomart/aom_orcid_logo_bw.eps
@@ -0,0 +1,531 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: poppler pdftops version: 25.01.0 (http://poppler.freedesktop.org). PDF Creator: Inkscape 1.4 (https://inkscape.org)
+%%LanguageLevel: 2
+%%DocumentSuppliedResources: (atend)
+%%BoundingBox: 0 0 24 24
+%%HiResBoundingBox: 0 0 24 24
+%%DocumentSuppliedResources: (atend)
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset xpdf 3.00 0
+%%Copyright: Copyright 1996-2011, 2022 Glyph & Cog, LLC
+/xpdf 75 dict def xpdf begin
+% PDF special state
+/pdfDictSize 15 def
+/pdfSetup {
+ /setpagedevice where {
+ pop 2 dict begin
+ /Policies 1 dict dup begin /PageSize 6 def end def
+ { /Duplex true def } if
+ currentdict end setpagedevice
+ } {
+ pop
+ } ifelse
+} def
+/pdfSetupPaper {
+ % Change paper size, but only if different from previous paper size otherwise
+ % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size
+ % so we use the same when checking if the size changes.
+ /setpagedevice where {
+ pop currentpagedevice
+ /PageSize known {
+ 2 copy
+ currentpagedevice /PageSize get aload pop
+ exch 4 1 roll
+ sub abs 5 gt
+ 3 1 roll
+ sub abs 5 gt
+ or
+ } {
+ true
+ } ifelse
+ {
+ 2 array astore
+ 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end
+ setpagedevice
+ } {
+ pop pop
+ } ifelse
+ } {
+ pop
+ } ifelse
+} def
+/pdfStartPage {
+ pdfDictSize dict begin
+ /pdfFillCS [] def
+ /pdfFillXform {} def
+ /pdfStrokeCS [] def
+ /pdfStrokeXform {} def
+ /pdfFill [0] def
+ /pdfStroke [0] def
+ /pdfFillOP false def
+ /pdfStrokeOP false def
+ /pdfLastFill false def
+ /pdfLastStroke false def
+ /pdfTextMat [1 0 0 1 0 0] def
+ /pdfFontSize 0 def
+ /pdfCharSpacing 0 def
+ /pdfTextRender 0 def
+ /pdfPatternCS false def
+ /pdfTextRise 0 def
+ /pdfWordSpacing 0 def
+ /pdfHorizScaling 1 def
+ /pdfTextClipPath [] def
+} def
+/pdfEndPage { end } def
+% PDF color state
+/cs { /pdfFillXform exch def dup /pdfFillCS exch def
+ setcolorspace } def
+/CS { /pdfStrokeXform exch def dup /pdfStrokeCS exch def
+ setcolorspace } def
+/sc { pdfLastFill not { pdfFillCS setcolorspace } if
+ dup /pdfFill exch def aload pop pdfFillXform setcolor
+ /pdfLastFill true def /pdfLastStroke false def } def
+/SC { pdfLastStroke not { pdfStrokeCS setcolorspace } if
+ dup /pdfStroke exch def aload pop pdfStrokeXform setcolor
+ /pdfLastStroke true def /pdfLastFill false def } def
+/op { /pdfFillOP exch def
+ pdfLastFill { pdfFillOP setoverprint } if } def
+/OP { /pdfStrokeOP exch def
+ pdfLastStroke { pdfStrokeOP setoverprint } if } def
+/fCol {
+ pdfLastFill not {
+ pdfFillCS setcolorspace
+ pdfFill aload pop pdfFillXform setcolor
+ pdfFillOP setoverprint
+ /pdfLastFill true def /pdfLastStroke false def
+ } if
+} def
+/sCol {
+ pdfLastStroke not {
+ pdfStrokeCS setcolorspace
+ pdfStroke aload pop pdfStrokeXform setcolor
+ pdfStrokeOP setoverprint
+ /pdfLastStroke true def /pdfLastFill false def
+ } if
+} def
+% build a font
+/pdfMakeFont {
+ 4 3 roll findfont
+ 4 2 roll matrix scale makefont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /Encoding exch def
+ currentdict
+ end
+ definefont pop
+} def
+/pdfMakeFont16 {
+ exch findfont
+ dup length dict begin
+ { 1 index /FID ne { def } { pop pop } ifelse } forall
+ /WMode exch def
+ currentdict
+ end
+ definefont pop
+} def
+% graphics state operators
+/q { gsave pdfDictSize dict begin } def
+/Q {
+ end grestore
+ /pdfLastFill where {
+ pop
+ pdfLastFill {
+ pdfFillOP setoverprint
+ } {
+ pdfStrokeOP setoverprint
+ } ifelse
+ } if
+} def
+/cm { concat } def
+/d { setdash } def
+/i { setflat } def
+/j { setlinejoin } def
+/J { setlinecap } def
+/M { setmiterlimit } def
+/w { setlinewidth } def
+% path segment operators
+/m { moveto } def
+/l { lineto } def
+/c { curveto } def
+/re { 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } def
+/h { closepath } def
+% path painting operators
+/S { sCol stroke } def
+/Sf { fCol stroke } def
+/f { fCol fill } def
+/f* { fCol eofill } def
+% clipping operators
+/W { clip newpath } def
+/W* { eoclip newpath } def
+/Ws { strokepath clip newpath } def
+% text state operators
+/Tc { /pdfCharSpacing exch def } def
+/Tf { dup /pdfFontSize exch def
+ dup pdfHorizScaling mul exch matrix scale
+ pdfTextMat matrix concatmatrix dup 4 0 put dup 5 0 put
+ exch findfont exch makefont setfont } def
+/Tr { /pdfTextRender exch def } def
+/Tp { /pdfPatternCS exch def } def
+/Ts { /pdfTextRise exch def } def
+/Tw { /pdfWordSpacing exch def } def
+/Tz { /pdfHorizScaling exch def } def
+% text positioning operators
+/Td { pdfTextMat transform moveto } def
+/Tm { /pdfTextMat exch def } def
+% text string operators
+/xyshow where {
+ pop
+ /xyshow2 {
+ dup length array
+ 0 2 2 index length 1 sub {
+ 2 index 1 index 2 copy get 3 1 roll 1 add get
+ pdfTextMat dtransform
+ 4 2 roll 2 copy 6 5 roll put 1 add 3 1 roll dup 4 2 roll put
+ } for
+ exch pop
+ xyshow
+ } def
+}{
+ /xyshow2 {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval show moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval show moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/cshow where {
+ pop
+ /xycp {
+ 0 3 2 roll
+ {
+ pop pop currentpoint 3 2 roll
+ 1 string dup 0 4 3 roll put false charpath moveto
+ 2 copy get 2 index 2 index 1 add get
+ pdfTextMat dtransform rmoveto
+ 2 add
+ } exch cshow
+ pop pop
+ } def
+}{
+ /xycp {
+ currentfont /FontType get 0 eq {
+ 0 2 3 index length 1 sub {
+ currentpoint 4 index 3 index 2 getinterval false charpath moveto
+ 2 copy get 2 index 3 2 roll 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } {
+ 0 1 3 index length 1 sub {
+ currentpoint 4 index 3 index 1 getinterval false charpath moveto
+ 2 copy 2 mul get 2 index 3 2 roll 2 mul 1 add get
+ pdfTextMat dtransform rmoveto
+ } for
+ } ifelse
+ pop pop
+ } def
+} ifelse
+/Tj {
+ fCol
+ 0 pdfTextRise pdfTextMat dtransform rmoveto
+ currentpoint 4 2 roll
+ pdfTextRender 1 and 0 eq {
+ 2 copy xyshow2
+ } if
+ pdfTextRender 3 and dup 1 eq exch 2 eq or {
+ 3 index 3 index moveto
+ 2 copy
+ currentfont /FontType get 3 eq { fCol } { sCol } ifelse
+ xycp currentpoint stroke moveto
+ } if
+ pdfTextRender 4 and 0 ne {
+ 4 2 roll moveto xycp
+ /pdfTextClipPath [ pdfTextClipPath aload pop
+ {/moveto cvx}
+ {/lineto cvx}
+ {/curveto cvx}
+ {/closepath cvx}
+ pathforall ] def
+ currentpoint newpath moveto
+ } {
+ pop pop pop pop
+ } ifelse
+ 0 pdfTextRise neg pdfTextMat dtransform rmoveto
+} def
+/TJm { 0.001 mul pdfFontSize mul pdfHorizScaling mul neg 0
+ pdfTextMat dtransform rmoveto } def
+/TJmV { 0.001 mul pdfFontSize mul neg 0 exch
+ pdfTextMat dtransform rmoveto } def
+/Tclip { pdfTextClipPath cvx exec clip newpath
+ /pdfTextClipPath [] def } def
+/Tclip* { pdfTextClipPath cvx exec eoclip newpath
+ /pdfTextClipPath [] def } def
+% Level 2/3 image operators
+/pdfImBuf 100 string def
+/pdfImStr {
+ 2 copy exch length lt {
+ 2 copy get exch 1 add exch
+ } {
+ ()
+ } ifelse
+} def
+/skipEOD {
+ { currentfile pdfImBuf readline
+ not { pop exit } if
+ (%-EOD-) eq { exit } if } loop
+} def
+/pdfIm { image skipEOD } def
+/pdfImM { fCol imagemask skipEOD } def
+/pr { 2 index 2 index 3 2 roll putinterval 4 add } def
+/pdfImClip {
+ gsave
+ 0 2 4 index length 1 sub {
+ dup 4 index exch 2 copy
+ get 5 index div put
+ 1 add 3 index exch 2 copy
+ get 3 index div put
+ } for
+ pop pop rectclip
+} def
+/pdfImClipEnd { grestore } def
+% shading operators
+/colordelta {
+ false 0 1 3 index length 1 sub {
+ dup 4 index exch get 3 index 3 2 roll get sub abs 0.004 gt {
+ pop true
+ } if
+ } for
+ exch pop exch pop
+} def
+/funcCol { func n array astore } def
+/funcSH {
+ dup 0 eq {
+ true
+ } {
+ dup 6 eq {
+ false
+ } {
+ 4 index 4 index funcCol dup
+ 6 index 4 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 5 index 5 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ 6 index 8 index funcCol dup
+ 3 1 roll colordelta 3 1 roll
+ colordelta or or or
+ } ifelse
+ } ifelse
+ {
+ 1 add
+ 4 index 3 index add 0.5 mul exch 4 index 3 index add 0.5 mul exch
+ 6 index 6 index 4 index 4 index 4 index funcSH
+ 2 index 6 index 6 index 4 index 4 index funcSH
+ 6 index 2 index 4 index 6 index 4 index funcSH
+ 5 3 roll 3 2 roll funcSH pop pop
+ } {
+ pop 3 index 2 index add 0.5 mul 3 index 2 index add 0.5 mul
+ funcCol sc
+ dup 4 index exch mat transform m
+ 3 index 3 index mat transform l
+ 1 index 3 index mat transform l
+ mat transform l pop pop h f*
+ } ifelse
+} def
+/axialCol {
+ dup 0 lt {
+ pop t0
+ } {
+ dup 1 gt {
+ pop t1
+ } {
+ dt mul t0 add
+ } ifelse
+ } ifelse
+ func n array astore
+} def
+/axialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index axialCol 2 index axialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index axialSH
+ exch 3 2 roll axialSH
+ } {
+ pop 2 copy add 0.5 mul
+ axialCol sc
+ exch dup dx mul x0 add exch dy mul y0 add
+ 3 2 roll dup dx mul x0 add exch dy mul y0 add
+ dx abs dy abs ge {
+ 2 copy yMin sub dy mul dx div add yMin m
+ yMax sub dy mul dx div add yMax l
+ 2 copy yMax sub dy mul dx div add yMax l
+ yMin sub dy mul dx div add yMin l
+ h f*
+ } {
+ exch 2 copy xMin sub dx mul dy div add xMin exch m
+ xMax sub dx mul dy div add xMax exch l
+ exch 2 copy xMax sub dx mul dy div add xMax exch l
+ xMin sub dx mul dy div add xMin exch l
+ h f*
+ } ifelse
+ } ifelse
+} def
+/radialCol {
+ dup t0 lt {
+ pop t0
+ } {
+ dup t1 gt {
+ pop t1
+ } if
+ } ifelse
+ func n array astore
+} def
+/radialSH {
+ dup 0 eq {
+ true
+ } {
+ dup 8 eq {
+ false
+ } {
+ 2 index dt mul t0 add radialCol
+ 2 index dt mul t0 add radialCol colordelta
+ } ifelse
+ } ifelse
+ {
+ 1 add 3 1 roll 2 copy add 0.5 mul
+ dup 4 3 roll exch 4 index radialSH
+ exch 3 2 roll radialSH
+ } {
+ pop 2 copy add 0.5 mul dt mul t0 add
+ radialCol sc
+ encl {
+ exch dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 0 360 arc h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ 360 0 arcn h f
+ } {
+ 2 copy
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arcn
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arcn h
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a1 a2 arc
+ dup dx mul x0 add exch dup dy mul y0 add exch dr mul r0 add
+ a2 a1 arc h f
+ } ifelse
+ } ifelse
+} def
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+xpdf begin
+%%EndSetup
+pdfStartPage
+%%EndPageSetup
+[] 0 d
+1 i
+0 j
+0 J
+10 M
+1 w
+/DeviceGray {} cs
+[0] sc
+/DeviceGray {} CS
+[0] SC
+false op
+false OP
+{} settransfer
+0 0 24 24 re
+W
+q
+[1 0 0 -1 0 24] cm
+q
+/DeviceRGB {} cs
+[0 0 0] sc
+24 12 m
+24 18.629 18.629 24 12 24 c
+5.371 24 0 18.629 0 12 c
+0 5.371 5.371 0 12 0 c
+18.629 0 24 5.371 24 12 c
+h
+f*
+/DeviceRGB {} cs
+[1 1 1] sc
+14.109 7.227 m
+10.023 7.227 l
+10.023 17.652 l
+14.129 17.652 l
+17.543 17.652 19.641 15.121 19.641 12.441 c
+19.641 11.215 19.219 9.91 18.312 8.914 c
+17.402 7.91 16.016 7.227 14.109 7.227 c
+h
+13.949 15.977 m
+11.84 15.977 l
+11.84 8.906 l
+13.875 8.906 l
+15.242 8.906 16.215 9.32 16.844 9.957 c
+17.477 10.594 17.785 11.473 17.785 12.441 c
+17.785 13.027 17.605 13.914 17.039 14.652 c
+16.48 15.379 15.531 15.977 13.949 15.977 c
+h
+17.934 12.957 m
+17.746 14.262 16.812 16.164 13.949 16.164 c
+11.652 16.164 l
+13.949 16.164 l
+16.812 16.164 17.746 14.262 17.934 12.957 c
+h
+19.293 11.152 m
+18.801 9.199 17.156 7.414 14.109 7.414 c
+10.211 7.414 l
+14.109 7.414 l
+17.156 7.414 18.801 9.199 19.293 11.152 c
+h
+6.273 7.258 m
+6.273 17.672 l
+8.09 17.672 l
+8.09 7.258 l
+6.273 7.258 l
+h
+7.902 17.484 m
+6.461 17.484 l
+7.902 17.484 l
+h
+7.18 6.488 m
+7.812 6.488 8.316 5.973 8.316 5.352 c
+8.316 4.734 7.812 4.219 7.18 4.219 c
+6.555 4.219 6.047 4.723 6.047 5.352 c
+6.047 5.973 6.551 6.488 7.18 6.488 c
+h
+f*
+Q
+Q
+showpage
+%%PageTrailer
+pdfEndPage
+%%Trailer
+end
+%%DocumentSuppliedResources:
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/aomart/aom_orcid_logo_bw.pdf b/Master/texmf-dist/tex/latex/aomart/aom_orcid_logo_bw.pdf
new file mode 100644
index 00000000000..960bf36df1c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/aomart/aom_orcid_logo_bw.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/aomart/aomart.cls b/Master/texmf-dist/tex/latex/aomart/aomart.cls
index 54a40196724..6c18a125a81 100644
--- a/Master/texmf-dist/tex/latex/aomart/aomart.cls
+++ b/Master/texmf-dist/tex/latex/aomart/aomart.cls
@@ -37,7 +37,7 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{aomart}
-[2024/06/08 v1.28 Typesetting articles for the Annals of Mathematics]
+[2025/01/20 v1.32 Typesetting articles for the Annals of Mathematics]
\long\def\aom@size@warning#1{%
\ClassWarning{aomart}{Size-changing option #1 will not be
honored}}%
@@ -71,7 +71,31 @@
\ClassInfo{aomart}{%
Configuration file aomart.cfg is not found}}
\ProcessOptions\relax
+\let\@makefnmark@kernel\@makefnmark
\LoadClass[11pt]{amsart}
+\let\@makefnmark\@makefnmark@kernel
+\def\@citex[#1]#2{\leavevmode
+ \@tempcnta=0
+ \@for\@citeb:=#2\do{\advance\@tempcnta by 1}%
+ \@tempcntb=1
+ \let\@citea\@empty
+ \@cite{\@for\@citeb:=#2\do
+ {\@citea\def\@citea{], [}%
+ \advance\@tempcntb by 1
+ \ifnum\@tempcnta=\@tempcntb\relax
+ \ifnum\@tempcnta=2\relax
+ \def\@citea{] and~[}%
+ \else
+ \def\@citea{], and~[}%
+ \fi
+ \fi
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
+ \@ifundefined{b@\@citeb}{\hbox{\reset@font\bfseries ?}%
+ \G@refundefinedtrue
+ \@latex@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+ {\@cite@ofmt{\csname b@\@citeb\endcsname}}}}{#1}}
\RequirePackage{fancyhdr, lastpage, ifpdf, graphicx}
\RequirePackage[breaklinks,colorlinks]{hyperref}
\if@aom@screen@mode
@@ -131,6 +155,23 @@
\setlength{\parskip}{\z@}
\widowpenalty=10000
\clubpenalty=10000
+\AtBeginDocument{%
+ \labelsep=5pt\relax
+ \settowidth\leftmargini{\labelenumi\hskip\labelsep}%
+ \leftmargin=\leftmargini
+ \labelwidth=\leftmargini \advance\labelwidth-\labelsep
+ \@listi}
+\renewenvironment{itemize}{%
+ \ifnum\@itemdepth>3 \@toodeep
+ \else \advance\@itemdepth\@ne
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ \list{\csname\@itemitem\endcsname}%
+ {\settowidth\leftmargin{\labelitemi\hskip\labelsep}%
+ \def\makelabel##1{\hss\llap{\upshape##1}}}%
+ \fi
+}{%
+ \endlist
+}
\setlength{\headsep}{14pt}
\setlength{\headheight}{18.0pt}
\renewcommand{\headrulewidth}{0pt}
@@ -229,7 +270,6 @@
\else
\g@addto@macro\authors{\and#2}%
\g@addto@macro\@names{\and author=#2;}%
- \g@addto@macro\addresses{\author{}}%
\fi
\gdef\aom@current@orcid@target{\authors}%
\@ifnotempty{#1}{%
@@ -239,6 +279,7 @@
\g@addto@macro\shortauthors{\and#1}%
\fi
}%
+ \g@addto@macro\addresses{\author{#2}}%
}
\edef\author{\@nx\@dblarg
\@xp\@nx\csname\string\author\endcsname}
@@ -289,7 +330,7 @@
\expandafter\g@addto@macro\expandafter%
\@names\expandafter{\@currentcontribution}%
\g@addto@macro\@names{;}%
- \g@addto@macro\addresses{\author{}}%
+ \g@addto@macro\addresses{\author{#2}}%
}
\renewcommand{\email}[2][]{%
\g@addto@macro\addresses{\email{#1}{#2}}%
@@ -305,7 +346,7 @@
\g@addto@macro\@names{orcid=#1;}%
\expandafter\g@addto@macro\aom@current@orcid@target{\aom@orcidlink{#1}}%
}
-\newcommand\aom@orcidlink[1]{\kern0.2ex\href{https://orcid.org/#1}{\includegraphics[height=2ex]{aom_orcid_logo}}}
+\newcommand\aom@orcidlink[1]{\kern0.2ex\href{https://orcid.org/#1}{\includecolorgraphics[height=2ex]{aom_orcid_logo}{aom_orcid_logo_bw}}}
\def\keyword#1{\ifx\@keywords\@empty\gdef\@keywords{#1}\else
\g@addto@macro\@keywords{, #1}\fi}
\let\@primarysubjects\@empty
@@ -562,17 +603,17 @@
\def\@setaddresses{\par
\nobreak \begingroup
\footnotesize
- \def\author##1{\nobreak\addvspace\bigskipamount}%
+ \def\author##1{\nobreak\addvspace\bigskipamount{\scshape##1\par}}%
\def\\{\unskip, \ignorespaces}%
\interlinepenalty\@M
\def\address##1##2{\begingroup
- \par\addvspace\bigskipamount\indent
+ \par\hangindent=22pt\hangafter=0\parindent=0pt
\@ifnotempty{##1}{(\ignorespaces##1\unskip) }%
- {\scshape\ignorespaces##2}\par\endgroup}%
+ {\ignorespaces##2}\par\endgroup}%
\def\curraddr##1##2{\begingroup
\@ifnotempty{##2}{\nobreak\indent\curraddrname
\@ifnotempty{##1}{, \ignorespaces\scshape##1\unskip}\hskip0.2em:\space
- \scshape##2\par}\endgroup}%
+ ##2\par}\endgroup}%
\def\email##1##2{\begingroup
\@ifnotempty{##2}{\nobreak\indent\emailaddrname
\@ifnotempty{##1}{, \ignorespaces##1\unskip}\hskip0.2em:\space
@@ -583,7 +624,7 @@
\url{##2}\par}\endgroup}%
\def\orcid##1{\begingroup
\@ifnotempty{##1}{\nobreak\indent
- ORCID: ##1\par}\endgroup}%
+ \url{https://orcid.org/##1}\par}\endgroup}%
\addresses
\endgroup
}
@@ -662,8 +703,31 @@
\def\arxiv#1{\href{http://www.arxiv.org/abs/#1}{arXiv~\path{#1}}}
\def\jfm#1{\href{http://www.emis.de/cgi-bin/JFM-item?#1}{JFM~\path{#1}}}
\renewcommand{\bibliofont}{\small}
-\def\EditorialComment#1{\if@aom@manuscript@mode\bgroup
- \marginparwidth=75pt\marginpar{\scriptsize\raggedright#1}\egroup\fi}
+\newcommand\EditorialComment[2][default]{\if@aom@manuscript@mode\bgroup
+ \expandafter\ifx\csname EditorialComment@#1\endcsname\relax
+ \else
+ \marginparwidth=75pt\marginpar{\scriptsize\raggedright#2}\fi
+ \egroup
+ \fi}
+\def\ECSelect#1{\if@aom@manuscript@mode
+ \@for\EC@level:=#1\do{%
+ \expandafter\gdef\csname
+ EditorialComment@\EC@level\endcsname{\EditorialComment}}%
+ \fi}
+\AtBeginDocument{\ECSelect{default}}
+\newcommand\Highlight[2][default]{%
+ \expandafter\ifx\csname Highlight@#1\endcsname\relax
+ #2\else
+ \csname Highlight@#1\endcsname{#2}\fi}
+\newcommand\HSelect[2][magenta]{\if@aom@manuscript@mode
+ \@for\TC@level:=#2\do{\expandafter
+ \gdef\csname Highlight@\TC@level\endcsname##1{\bgroup
+ \Hy@colorlinksfalse
+ \def\Hy@colorlink####1{\begingroup}%
+ \def\Hy@endcolorlink{\endgroup}%
+ \color{#1}##1\egroup}}%
+ \fi}
+\AtBeginDocument{\HSelect{default}}
\def\@fullref#1#2#3#4{\hyperref[#3]{#1~#2\ref*{#3}#4}}
\newcommand{\fullref}[2]{\@fullref{#1}{}{#2}{}}
\newcommand{\pfullref}[2]{\@fullref{#1}{(}{#2}{)}}
@@ -688,6 +752,9 @@
\tabskip\z@skip
\cr
}
+\newcommand\includecolorgraphics[3][]{\if@aom@screen@mode
+ \includegraphics[#1]{#2}\else
+ \includegraphics[#1]{#3}\fi}
\newcommand\funding[3][]{%
\protected@write\@mainrpi{}%
{\@percentchar sponsor=#2, grantid=#3}%
diff --git a/Master/texmf-dist/tex/latex/argumentation/argumentation.sty b/Master/texmf-dist/tex/latex/argumentation/argumentation.sty
index f247cd959a3..6633c25a3a9 100644
--- a/Master/texmf-dist/tex/latex/argumentation/argumentation.sty
+++ b/Master/texmf-dist/tex/latex/argumentation/argumentation.sty
@@ -1,78 +1,133 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{argumentation}[2024/05/03 Argumentation]
+\ProvidesPackage{argumentation}[2024/11/03 Argumentation]
% Author: Lars Bengel
% E-Mail: lars.bengel@fernuni-hagen.de
-% Version: 1.1
-% Date: 2023/12/03
+% Version: 1.4
+% Date: 2024/11/03
% License: LaTeX Project Public License 1.3c
-%%%%%%%%%%% Package Requirements %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{amsbsy,amsmath} % For proper bold letters in math mode
-\RequirePackage{pgfopts} % For managing package options
-\RequirePackage{tikz} % For drawing the argumentation frameworks
-\usetikzlibrary{positioning} % For relative node positioning
-\usetikzlibrary{arrows.meta} % For directed edges / attack arrows
-\usetikzlibrary{arrows} % For directed edges / attack arrows
-\usetikzlibrary{decorations.markings} % For creating the support edge markings
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%% Package Tikz Style Definitions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcounter{argument}
-%\newcommand{\argument}{\relax}
-\newcommand{\argstyle}[1]{#1} % Defines the font style in which argument names are displayed
+
+%%%%%%%%%%% Package Requirements %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\RequirePackage{amsbsy,amsmath} % Proper bold letters in math mode
+\RequirePackage{pgfopts} % Managing package options
+\RequirePackage{etoolbox} % Internal list handling
+\RequirePackage{refcount} % Expandable ref-counter value
+\RequirePackage{xspace} % Dynamic spaces after math commands
+\RequirePackage{xcolor} % Defining colors
+\RequirePackage{tikz} % Drawing the argumentation frameworks
+\usetikzlibrary{positioning} % Relative node positioning
+\usetikzlibrary{arrows.meta} % Directed edges / attack arrows
+\usetikzlibrary{arrows} % Directed edges / attack arrows
+\usetikzlibrary{decorations.markings} % Creating the support edge markings
+
+
+%%%%%%%%%%% Package Style Definitions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Color definitions
+\definecolor{aigyellow}{RGB}{210,149,81} % Highlight color
+\definecolor{aigblue}{RGB}{0,76,151} % Node color
%%% Argument Style Definitions
-\tikzset{ % global base styles
- argument size/.style={minimum size=0.7cm}, % Standard size of argument nodes
- argument/.style={}, % Base style for argument nodes
- argument standard/.style={circle,draw=black,inner sep=0,outer sep=0, argument size},
- argument large/.style={circle,draw=black,inner sep=0,outer sep=0, argument size, font=\large},
- argument thick/.style={circle,draw=black,inner sep=0,outer sep=0, argument size, thick},
+\tikzset{
+ argument size/.style={}, % Size of argument nodes
+ argument/.style={}, % Base style for argument nodes
+ argument standard/.style={circle,draw=black,inner sep=0,outer sep=0}, % Standard argument style
+ argument large/.style={circle,draw=black,inner sep=0,outer sep=0, font=\large}, % Large argument style
+ argument thick/.style={circle,draw=black,inner sep=0,outer sep=0, line width=0.1em}, % Thick outline argument style
+ argument gray/.style={argument thick,fill=gray!30,draw=gray!65,text=black!80}, % Gray argument style
+ argument colored/.style={argument thick,fill=aigblue!40,draw=aigblue!80}, % Colored argument stlye
}
%%% Attack/Support Edge Definitions
-\tikzset{ % global base styles
+\tikzset{
+ attack width/.style={}, % Width of attack arrows
attack/.style={}, % Base style for attack arrow
attack standard/.style={-{stealth'}}, % Standard attack arrow
attack large/.style={-{Stealth[scale=1.25]}}, % Larger arrow tip
- attack modern/.style={-{To[sharp,length=0.9mm,line width=0.7pt]}}, % Mordern rightarrow style tip
- support/.style={},
- support standard/.style = {attack, postaction = {decorate,decoration={markings,mark=at position 0.36 with {\draw[-] (0,-0.1) -- (0.1,0.1);}}}}, % Standard support arrow
- support dashed/.style={attack,densely dashed},
- support double/.style={-{Classical TikZ Rightarrow},double},
+ attack modern/.style={-{To[sharp,length=0.65ex,line width=0.05em]}}, % Mordern rightarrow style tip
+ support/.style={}, % Base style for support
+ support standard/.style = {attack, postaction = {decorate,decoration={markings,mark=at position 0.36 with {\draw[-] (0,-0.1) -- (0.1,0.1);}}}}, % Standard support arrow
+ support dashed/.style={attack,densely dashed}, % Dashed Support arrow
+ support double/.style={-{Classical TikZ Rightarrow},double}, % double-line support arrow
+}
+
+%%% Additional Style Parameters
+\tikzset{
+ selfattack/.style={loop,min distance=0.4em,in=0,out=60,looseness=4.5}, % Self-attack
+ inactive/.style={fill=none,draw=gray!50,text=gray!60}, % Inactive argument or edge (reduct)
+ incomplete/.style={densely dashed}, % incomplete argument or edge
+ accepted/.style={fill=green!40}, % Accepted argument (in)
+ rejected/.style={fill=red!40}, % Rejected argument (out)
+ undecided/.style={fill=cyan!40}, % Undecided Argument (undec)
+ highlight/.style={fill=aigyellow!60}, % Highlighted argument
+ caption/.style={draw=none}, % Caption or text
+ invisible/.style={draw=none,fill=none,opacity=0.0}, % Invisible argument or edge
+ annotation/.style={font=\small}, % Argument annotation
+ argin/.style={accepted},
+ argout/.style={rejected},
+ argundec/.style={undecided},
+}
+
+%%% Style-Options for af environment
+\pgfkeys{/tikz/.cd,
+ af/.style={}, % Base style for af
+ standard/.style={node distance=6.6ex,argument size/.style={minimum size=4.5ex},attack width/.style={line width=0.05em}}, % Standard size style for af
+ small/.style={node distance=3.5ex,argument size/.style={minimum size=3.4ex},attack width/.style={line width=0.045em},caption/.append style={font=\small}}, % Small size style for af
+ tiny/.style={node distance=2.3ex,argument size/.style={minimum size=2.6ex,font=\small},attack width/.style={line width=0.03em},caption/.append style={font=\small}}, % Tiny size style for af
+}
+
+
+%%%%%%%%%% Internal Utility Functions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\makeatletter
+\newif\ifmacros
+\newif\ifbeamer
+\newif\if@numericidx
+\newif\if@alphaidx
+\newif\if@insideaf
+
+%%% Defines the font style in which argument names are displayed
+\newcommand{\@arg@style}[1]{#1}
+
+%%% Auxilliary command for splitting a given pair x,y into two macros
+\def\@split@pair#1,#2\relax{%
+ \def\@attacker{#1}%
+ \def\@attacked{#2}%
}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\makeatother
-%%%%%%%%%% Package Options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%% Package Options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Options for style of the argument node itself
\pgfkeys{/tikz/.cd,
argumentstyle/.is choice,
- argumentstyle/standard/.code={\tikzset{argument/.style={argument standard}}},
- argumentstyle/large/.code={\tikzset{argument/.style={argument large}}},
- argumentstyle/thick/.code={\tikzset{argument/.style={argument thick}}},
+ argumentstyle/standard/.code={\tikzset{argument/.style={argument standard,argument size}}},
+ argumentstyle/large/.code={\tikzset{argument/.style={argument large,argument size}}},
+ argumentstyle/thick/.code={\tikzset{argument/.style={argument thick,argument size}}},
+ argumentstyle/gray/.code={\tikzset{argument/.style={argument gray,argument size}}},
+ argumentstyle/colored/.code={\tikzset{argument/.style={argument colored,argument size}}},
}
\pgfkeys{/argumentation/.cd,
.unknown/.code={},
argumentstyle/.is choice,
- argumentstyle/standard/.code={\tikzset{argument/.style={argument standard}}},
- argumentstyle/large/.code={\tikzset{argument/.style={argument large}}},
- argumentstyle/thick/.code={\tikzset{argument/.style={argument thick}}},
+ argumentstyle/standard/.code={\tikzset{argument/.style={argument standard,argument size}}},
+ argumentstyle/large/.code={\tikzset{argument/.style={argument large,argument size}}},
+ argumentstyle/thick/.code={\tikzset{argument/.style={argument thick,argument size}}},
+ argumentstyle/gray/.code={\tikzset{argument/.style={argument gray,argument size}}},
+ argumentstyle/colored/.code={\tikzset{argument/.style={argument colored,argument size}}},
argumentstyle=standard,
}
%%% Options for the style of the attack edges
\pgfkeys{/tikz/.cd,
attackstyle/.is choice,
- attackstyle/standard/.code={\tikzset{attack/.style={attack standard}}},
- attackstyle/large/.code={\tikzset{attack/.style={attack large}}},
- attackstyle/modern/.code={\tikzset{attack/.style={attack modern}}},
+ attackstyle/standard/.code={\tikzset{attack/.style={attack width,attack standard}}},
+ attackstyle/large/.code={\tikzset{attack/.style={attack width,attack large}}},
+ attackstyle/modern/.code={\tikzset{attack/.style={attack width,attack modern}}},
attackstyle=standard,
}
\pgfkeys{/argumentation/.cd,
attackstyle/.is choice,
- attackstyle/standard/.code={\tikzset{attack/.style={attack standard}}},
- attackstyle/large/.code={\tikzset{attack/.style={attack large}}},
- attackstyle/modern/.code={\tikzset{attack/.style={attack modern}}},
+ attackstyle/standard/.code={\tikzset{attack/.style={attack width,attack standard}}},
+ attackstyle/large/.code={\tikzset{attack/.style={attack width,attack large}}},
+ attackstyle/modern/.code={\tikzset{attack/.style={attack width,attack modern}}},
attackstyle=standard,
}
@@ -93,150 +148,430 @@
}
%%% Options for the automatic text formatting for the argument names
+\makeatletter
\pgfkeys{/tikz/.cd,
namestyle/.is choice,
- namestyle/none/.code={\renewcommand{\argstyle}[1]{##1}},
- namestyle/math/.code={\renewcommand{\argstyle}[1]{\ensuremath{##1}}},
- namestyle/italics/.code={\renewcommand{\argstyle}[1]{\ensuremath{\mathit{\text{##1}}}}},
- namestyle/bold/.code={\renewcommand{\argstyle}[1]{\ensuremath{\boldsymbol{\text{##1}}}}},
- namestyle/monospace/.code={\renewcommand{\argstyle}[1]{\ensuremath{\mathtt{\text{##1}}}}},
+ namestyle/none/.code={\renewcommand{\@arg@style}[1]{##1}},
+ namestyle/math/.code={\renewcommand{\@arg@style}[1]{\ensuremath{##1}}},
+ namestyle/bold/.code={\renewcommand{\@arg@style}[1]{\ensuremath{\boldsymbol{##1}}}},
+ namestyle/monospace/.code={\renewcommand{\@arg@style}[1]{{\ttfamily##1}}},
+ namestyle/monoemph/.code={\renewcommand{\@arg@style}[1]{{\ttfamily\itshape##1}}},
namestyle=none,
}
\pgfkeys{/argumentation/.cd,
namestyle/.is choice,
- namestyle/none/.code={\renewcommand{\argstyle}[1]{##1}},
- namestyle/math/.code={\renewcommand{\argstyle}[1]{\ensuremath{##1}}},
- namestyle/italics/.code={\renewcommand{\argstyle}[1]{\ensuremath{\mathit{##1}}}},
- namestyle/bold/.code={\renewcommand{\argstyle}[1]{\ensuremath{\boldsymbol{\text{##1}}}}},
- namestyle/monospace/.code={\renewcommand{\argstyle}[1]{\ensuremath{\mathtt{##1}}}},
+ namestyle/none/.code={\renewcommand{\@arg@style}[1]{##1}},
+ namestyle/math/.code={\renewcommand{\@arg@style}[1]{\ensuremath{##1}}},
+ namestyle/bold/.code={\renewcommand{\@arg@style}[1]{\ensuremath{\boldsymbol{##1}}}},
+ namestyle/monospace/.code={\renewcommand{\@arg@style}[1]{{\ttfamily##1}}},
+ namestyle/monoemph/.code={\renewcommand{\@arg@style}[1]{{\ttfamily\itshape##1}}},
namestyle=none,
}
-%%% Options for automatic indexing (and naming) of argument nodes
-\NewDocumentCommand { \argument } {} {\relax}
+
+%%% Option for automatic indexing of arguments
\pgfkeys{/argumentation/.cd,
indexing/.is choice,
- indexing/none/.code={
- \RenewDocumentCommand { \argument } {O{} r() m dat d()} {
- \IfNoValueTF {##5}{%
- \node[argument size,argument,##1](##2) {\argstyle{##3}};
- }{%
- \node[argument size,argument,##1](##2) at (##5) {\argstyle{##3}};
- }
- }
- },
- indexing/numeric/.code={
- \RenewDocumentCommand { \argument } {O{} d() m dat d()} {
- \stepcounter{argument}
- \IfNoValueTF {##2}{%
- \IfNoValueTF {##5}{%
- \node[argument size,argument,##1](a\arabic{argument}) {\argstyle{##3}};
- }{%
- \node[argument size,argument,##1](a\arabic{argument}) at (##5) {\argstyle{##3}};
- }
- }{%
- \IfNoValueTF {##5}{%
- \node[argument size,argument,##1](##2) {\argstyle{##3}};
- }{%
- \node[argument size,argument,##1](##2) at (##5) {\argstyle{##3}};
- }
- }
- }
- },
- indexing/alphabetic/.code={
- \RenewDocumentCommand { \argument } {O{} d() m dat d()} {
- \stepcounter{argument}
- \IfNoValueTF {##2}{%
- \IfNoValueTF {##5}{%
- \node[argument size,argument,##1](\alph{argument}) {\argstyle{##3}};
- }{%
- \node[argument size,argument,##1](\alph{argument}) at (##5) {\argstyle{##3}};
- }
- }{%
- \IfNoValueTF {##5}{%
- \node[argument size,argument,##1](##2) {\argstyle{##3}};
- }{%
- \node[argument size,argument,##1](##2) at (##5) {\argstyle{##3}};
- }
- }
- }
- },
+ indexing/numeric/.code={\@numericidxtrue},
+ indexing/alphabetic/.code={\@alphaidxtrue},
+ indexing/none/.code={\@numericidxfalse\@alphaidxfalse},
indexing/.default=numeric,
indexing=numeric,
}
+\makeatother
+
+%%% Option for enabling additional macros
+\pgfkeys{/argumentation/.cd,
+ macros/.is choice,
+ macros/true/.code={\macrostrue},
+ macros/false/.code={\macrosfalse},
+ macros/.default=true,
+ macros=false,
+}
+
+%%% Option for enabling beamer functionality
+\pgfkeys{/argumentation/.cd,
+ beamer/.is choice,
+ beamer/true/.code={\beamertrue},
+ beamer/false/.code={\beamerfalse},
+ beamer/.default=true,
+ beamer=false,
+}
\ProcessPgfPackageOptions{/argumentation}
-%%%%%%%%%%%%%%% AF Environment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% Additional AF Style Parameters
-\tikzset{ % global predefined tikz-styles
- selfattack/.style={loop,min distance=2mm,in=0,out=60,looseness=5}, % Standard style for self-attacks
- inactive/.style={draw=black!30,text=black!40}, % Make a node or edge inactive, i.e., greyed out
- incomplete/.style={densely dashed}, % Style for displaying incomplete nodes or attacks
- accepted/.style={fill=green}, % Color an argument that is labelled in
- rejected/.style={fill=red}, % Color an argument that is labelled out
- undecided/.style={fill=cyan}, % Color an argument that is labelled undecided
- caption/.style={draw=none}, % Style for displaying AF name in Figure
- invisible/.style={draw=none,text=black!0}, % Make a node or edge invisible
- annotation/.style={font=\small}, % text annotation style
- argin/.style={accepted},
- argout/.style={rejected},
- argundec/.style={undecided},
+
+%%%%%%%%%%%%%%% Arguments %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\makeatletter
+% Internal counter for argument IDs
+\newcounter{@argument}
+
+%%% Command for creating arguments
+% #1 TikZ parameters (optional)
+% #2 unique argument ID (optional)
+% #3 argument display name
+% #4 ignored
+% #5 absolute positioning values (optional)
+\NewDocumentCommand { \argument } {O{} d() m dat d()} {%
+ \stepcounter{@argument}
+ \IfNoValueTF {#2}{%
+ \if@alphaidx
+ \edef\@argid{\alph{@argument}}
+ \else\if@numericidx
+ \edef\@argid{a\arabic{@argument}}
+ \else
+ \PackageError{argumentation}{Missing argument ID}{Must either provide argument ID inside () or activate auto-indexing}
+ \fi\fi
+ }{%
+ \edef\@argid{#2}
+ }
+ \ifbeamer
+ \if@insideaf
+ \@make@argument{#1}{\@argid}{#3}{#4}{#5}{\arabic{af}}
+ \csname @af@\arabic{af}@arg@\@argid\endcsname{}
+ \else
+ \@create@argument{#1}{}{\@argid}{#3}{#5}
+ \fi
+ \else
+ \@create@argument{#1}{}{\@argid}{#3}{#5}
+ \fi
}
-%%% Options for af environment
-\pgfkeys{/tikz/.cd,
- small/.style = {node distance=0.55cm,argument size/.style={minimum size=0.55cm},caption/.append style={font=\small}},
- tiny/.style = {node distance=0.35cm,argument size/.style={minimum size=0.4cm,font=\small},caption/.append style={font=\small}},
+%%% Auxilliary command for creating arguments
+% #1 TikZ parameters (optional)
+% #2 TikZ parameters (optional)
+% #3 unique argument ID (optional)
+% #4 argument display name
+% #5 absolute positioning value (optional)
+\NewDocumentCommand { \@create@argument } {mmmmm} {%
+ \IfNoValueTF {#5}{%
+ \node[argument size,argument,#1,#2](#3) {\@arg@style{#4}};
+ }{%
+ \node[argument size,argument,#1,#2](#3) at (#5) {\@arg@style{#4}};
+ }
}
-%%% Initializing the af environment
+\ifbeamer
+%%% Auxilliary command for creating unique argument macros
+% #1 TikZ parameters
+% #2 unique argument ID
+% #3 argument display name
+% #4 ignored
+% #5 absolute positioning values
+% #6 unique AF ID
+\NewDocumentCommand { \@make@argument } {mmmmmm} {%
+ %\typeout{CREATED NEW MACRO @af@#6@arg#2}
+ \expandafter\listxadd\csname @arguments@#6\endcsname{#2}
+ \expandafter\global\expandafter\edef\csname @af@#6@arg@#2\endcsname##1{%
+ %\typeout{RECALLING MACRO @af@#6@arg#2}
+ \@create@argument{#1}{##1}{#2}{#3}{#5}
+ }
+}
+\fi
+\makeatother
+
+
+%%%%%%%%%%%%%%% Attacks & Support %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\makeatletter
+%%% Command for creating attacks
+% #1 TikZ parameters (optional)
+% #2 attacking argument ID
+% #3 attacked argument ID
+% #4 annotation text (optional)
+\NewDocumentCommand { \attack } {O{} m m d()} {%
+ \ifbeamer
+ \if@insideaf
+ \@make@attack{#1}{#2}{#3}{#4}{\arabic{af}}
+ \csname @af@\arabic{af}@att@#2#3\endcsname{}
+ \else
+ \@create@attack{#1}{}{#2}{#3}{#4}
+ \fi
+ \else
+ \@create@attack{#1}{}{#2}{#3}{#4}
+ \fi
+}
+
+%%% Internal command for creating the attack in TikZ
+% #1 TikZ parameters (optional)
+% #2 TikZ parameters (optional)
+% #3 attacking argument ID
+% #4 attacked argument ID
+% #5 annotation text
+\NewDocumentCommand { \@create@attack } {mmmmm} {%
+ \IfNoValueTF{#5}{%
+ \path(#3) edge [attack,#1,#2] (#4);
+ }{%
+ \path(#3) edge [attack,#1,#2] node[annotation](p_#3_#4){#5} (#4);
+ }
+}
+
+\ifbeamer
+%%% Auxilliary command for creating unique attack macros
+% #1 TikZ parameters
+% #2 attacking argument ID
+% #3 attacked argument ID
+% #4 annotation text
+% #5 unique AF ID
+\NewDocumentCommand { \@make@attack } {mmmmm} {%
+ \expandafter\listgadd\csname @attacks@#5\endcsname{#2,#3}
+ \expandafter\global\expandafter\edef\csname @af@#5@att@#2#3\endcsname##1{
+ \@create@attack{#1}{##1}{#2}{#3}{#4}
+ }
+}
+\fi
+
+%%% Self-attack edge
+% #1 TikZ parameters (optional)
+% #2 argument ID
+\NewDocumentCommand { \selfattack } {O{} m} {%
+ \attack[selfattack,#1]{#2}{#2}
+}
+
+%%% Symmetric attack edges between two arguments
+% #1 TikZ parameters (optional)
+% #2 first argument ID
+% #3 second argument ID
+\NewDocumentCommand { \dualattack } {O{} m m} {%
+ \attack[bend right,#1]{#2}{#3}
+ \attack[bend right,#1]{#3}{#2}
+}
+
+%%% Create attack edge with value (DEPRECATED as of v1.4)
+% #1 TikZ parameters (optional)
+% #2 attacking argument ID
+% #3 attacked argument ID
+% #4 annotation text
+\NewDocumentCommand{ \annotatedattack } {O{}mmm} {%
+ \attack[#1]{#2}{#3}(#4)
+}
+
+%%% Support edge
+% #1 TikZ parameters (optional)
+% #2 supporting argument ID
+% #3 supported argument ID
+\NewDocumentCommand { \support } {O{} m m} {%
+ \path(#2) edge [support=0.35,#1] (#3);
+}
+\makeatother
+
+
+%%%%%%%%%%%%%%% AF Environment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcounter{af}
-\newenvironment{af}[1][]{
- \refstepcounter{af}
- \setcounter{argument}{0}
+
+%%% Uncounted version of the environment
+\makeatletter
+\NewDocumentEnvironment {af*} {O{}} {%
+ \setcounter{@argument}{0}
\pgfkeys{/argumentation/.cd, #1}
- \tikzpicture[#1]
+ \tikzpicture[standard,af,#1]
}{%
\endtikzpicture
}
-%%%%%%%%%%%%%%%% Commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Standard version of af environment
+\NewDocumentEnvironment {af} {O{}} {%
+ \refstepcounter{af}
+ \ifbeamer
+ \global\expandafter\def\csname @arguments@\arabic{af}\endcsname{}
+ \global\expandafter\def\csname @attacks@\arabic{af}\endcsname{}
+ \fi
+ \@insideaftrue
+ \begin{af*}[#1]
+}{%
+ \end{af*}
+ \@insideaffalse
+}
+\makeatother
-% Creates a node displaying the name of the AF
-\NewDocumentCommand { \afname } { O{} D(){caption} m dat d()} {
+
+%%%%%%%%%%%%%%%% Additional Commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Definitions for referencing
+\ifmacros
+ \providecommand{\AF}{\ensuremath{F}\xspace} % AF abbreviation
+ \providecommand{\arguments}{\ensuremath{A}\xspace} % Set of arguments
+ \providecommand{\attacks}{\ensuremath{R}\xspace} % Set of attacks
+ \providecommand{\AFcomplete}{\ensuremath{\AF = (\arguments, \attacks)}\xspace} % Full AF
+ \newcommand{\afref}[1]{\ensuremath{\AF_{\ref{#1}}}\xspace} % Reference an AF
+ \newcommand{\fullafref}[1]{\ensuremath{\afref{#1} = (\arguments_{\ref{#1}}, \attacks_{\ref{#1}})}\xspace} % Full AF with reference
+\fi
+
+%%% Creates a node displaying the name of the AF
+\NewDocumentCommand { \afname } { O{} D(){caption} m dat d()} {%
\IfNoValueTF {#5}{%
\node[caption,#1](#2){#3};
}{%
\node[caption,#1](#2) at (#5) {#3};
}
-
}
-\newcommand{\annotation}[3][]{\node[annotation,above of=#2,#1](an_#2){#3};}
+%%% Create a text annotation next to another node
+\NewDocumentCommand { \annotation } {O{} m m} {%
+ \node[annotation,above of=#2,#1](an_#2){#3};
+}
-% Creates an attack edge
-\newcommand{\attack}[3][]{\path(#2) edge [attack,#1] (#3);}
+%%% Commands for setting custom tikz-style parameters
+\newcommand{\setafstyle}[1]{\tikzset{af/.style={#1}}}
+\newcommand{\setargumentcolorscheme}[2]{\tikzset{argument colored/.style={argument thick,fill=#2,draw=#1}}}
+\newcommand{\setargumentstyle}[1]{\tikzset{argument/.style={argument size,#1}}}
+\newcommand{\setattackstyle}[1]{\tikzset{attack/.style={attack width,#1}}}
+\newcommand{\setsupportstyle}[1]{\tikzset{support/.style={#1}}}
+\newcommand{\setannotationstyle}[1]{\tikzset{annotation/.style={#1}}}
-% Creates a self-attack
-\newcommand{\selfattack}[2][]{\path(#2) edge [attack,selfattack,#1] (#2);}
-% Creates two symmetric attack edges between two arguments
-\newcommand{\dualattack}[3][]{\path(#2) edge [attack, bend right,#1] (#3);\path(#3) edge [attack, bend right,#1] (#2);}
+%%%%%%%%%%%% Beamer Commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifbeamer
+\makeatletter
+%%% Prints an extension of an AF for the given list of accepted arguments
+% #1 unique ID of an AF
+% #2 a comma-separated list of argument IDs
+\NewDocumentCommand { \afextension } {mm} {%
+ \@prepare@af{#1}
+ % Collect accepted arguments in list
+ \forcsvlist{\listeadd\@accepted@arguments}{#2}
-% Creates a weighted attack
-\newcommand{\annotatedattack}[4][]{\path(#2) edge [attack,#1] node[annotation](p_#2_#3){#4} (#3);}
+ % render the af with the given information
+ \@render@af{\@afid}{accepted}{}{}{}{}
+}
-% Creates a support edge between two arguments
-\newcommand{\support}[3][]{\path(#2) edge [support=0.35,#1] (#3);}
+%%% Prints a labeling of an AF for the given list of accepted arguments
+% #1 unique ID of an AF
+% #2 a comma-separated list of argument IDs
+\NewDocumentCommand { \aflabeling } {mm} {%
+ \@prepare@af{#1}
+ % Collect accepted arguments in list
+ \forcsvlist{\listeadd\@accepted@arguments}{#2}
-%%% Commands for setting custom tikz-style parameters
-\newcommand{\setargumentstyle}[1]{\tikzset{argument/.style={#1}}}
-\newcommand{\setattackstyle}[1]{\tikzset{attack/.style={#1}}}
-\newcommand{\setsupportstyle}[1]{\tikzset{support/.style={#1}}}
-\newcommand{\setannotationstyle}[1]{\tikzset{annotation/.style={#1}}}
+ % Collect rejected arguments in list
+ \renewcommand*{\do}[1]{
+ \expandafter\@split@pair##1\relax
+ \xifinlist{\@attacker}{\@accepted@arguments}{%
+ \listeadd\@rejected@arguments{\@attacked}
+ }{}
+ }
+ \dolistcsloop{@attacks@\@afid}
-%\newcommand{\setloopstyle}[1]{\tikzset{selfattack/.style={#1}}}
-%\newcommand{\adjustargumentstyle}[1]{\tikzset{argument/.append style={#1}}}
-%\newcommand{\adjustattackstyle}[1]{\tikzset{attack/.append style={#1}}}
+ % Collect undecided arguments in list
+ \renewcommand*{\do}[1]{
+ \xifinlist{##1}{\@accepted@arguments}{}{
+ \xifinlist{##1}{\@rejected@arguments}{}{
+ \listadd\@undecided@arguments{##1}
+ }
+ }
+ }
+ \dolistcsloop{@arguments@\@afid}
+ % render the af with the given information
+ \@render@af{\@afid}{accepted}{rejected}{undecided}{}{}
+}
+
+%%% Prints the reduct of an AF wrt. the given list of arguments
+% #1 unique ID of an AF
+% #2 a comma-separated list of argument IDs
+\NewDocumentCommand { \afreduct } {mm} {%
+ \@prepare@af{#1}
+ \forcsvlist{\listeadd\@accepted@arguments}{#2}
+ \forcsvlist{\listeadd\@inactive@arguments}{#2}
+
+ \renewcommand*{\do}[1]{
+ \expandafter\@split@pair##1\relax
+ \xifinlist{\@attacker}{\@accepted@arguments}{%
+ \listeadd\@rejected@arguments{\@attacked}
+ \listeadd\@inactive@arguments{\@attacked}
+ }{}
+ }
+ \dolistcsloop{@attacks@\@afid}
+
+ \@render@af{\@afid}{inactive}{inactive}{}{inactive}{}
+}
+
+%%% Prints an AF restricted to the given list of arguments
+% #1 unique ID of an AF
+% #2 a comma-separated list of argument IDs
+\NewDocumentCommand { \afrestriction } {mm} {%
+ \@prepare@af{#1}
+ \forcsvlist{\listeadd\@accepted@arguments}{#2}
+
+ \renewcommand*{\do}[1]{%
+ \ifinlist{##1}{\@accepted@arguments}{}{
+ \listeadd\@inactive@arguments{##1}
+ }
+ }
+ \dolistcsloop{@arguments@\@afid}
+
+ \@render@af{\@afid}{}{}{}{invisible}{}
+}
+
+%%% Prepares recreation of an AF. Parses AF label to letter ID and defines lists to partition arguments
+% #1 unique ID of the AF to recreate
+\NewDocumentCommand { \@prepare@af } {m} {%
+ \edef\@afid{\getrefnumber{#1}}
+ \def\@accepted@arguments{}
+ \def\@rejected@arguments{}
+ \def\@undecided@arguments{}
+ \def\@inactive@arguments{}
+}
+
+%%% name of innermost af environment
+\def\@afenvname{af*}
+
+%%% Prepares recreation of AF by making sure we are inside an af environment
+% #1 unique ID of the AF to recreate
+% #2-#6 style parameters (see \@render@afdo)
+\NewDocumentCommand { \@render@af } {mmmmmm} {%
+ \ifx\@currenvir\@afenvname
+ \@render@afdo{#1}{#2}{#3}{#4}{#5}{#6}
+ \else
+ \begin{af*}
+ \@render@afdo{#1}{#2}{#3}{#4}{#5}{#6}
+ \end{af*}
+ \fi
+}
+
+%%% Recreates an AF
+%% Utilises lists defined in \@prepare@af
+% #1 unique ID of the AF to recreate
+% #2 style of accepted arguments
+% #3 style of rejected arguments
+% #4 style of undecided arguments
+% #5 style of inactive arguments/attacks
+% #6 style of normal attacks
+\NewDocumentCommand { \@render@afdo } {mmmmmm} {%
+ % handle arguments for rendering
+ \renewcommand*{\do}[1]{%
+ \ifinlist{##1}{\@accepted@arguments}{
+ \csname @af@#1@arg@##1\endcsname{#2}
+ }{%
+ \ifinlist{##1}{\@rejected@arguments}{%
+ \csname @af@#1@arg@##1\endcsname{#3}
+ }{%
+ \ifinlist{##1}{\@undecided@arguments}{%
+ \csname @af@#1@arg@##1\endcsname{#4}
+ }{%
+ \ifinlist{##1}{\@inactive@arguments}{%
+ \csname @af@#1@arg@##1\endcsname{#5}
+ }{%
+ \csname @af@#1@arg@##1\endcsname{}
+ }
+ }
+ }
+ }
+ }
+ \dolistcsloop{@arguments@#1}
+
+ % handle attack rendering
+ \renewcommand*{\do}[1]{%
+ \expandafter\@split@pair##1\relax
+ \xifinlist{\@attacker}{\@inactive@arguments}{%
+ \csname @af@#1@att@\@attacker\@attacked\endcsname{#5,fill=none}
+ }{%
+ \xifinlist{\@attacked}{\@inactive@arguments}{%
+ \csname @af@#1@att@\@attacker\@attacked\endcsname{#5,fill=none}
+ }{%
+ \csname @af@#1@att@\@attacker\@attacked\endcsname{#6}
+ }
+ }
+ }
+ \dolistcsloop{@attacks@#1}
+}
+\makeatother
+\fi \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/asmeconf/asmeconf.cls b/Master/texmf-dist/tex/latex/asmeconf/asmeconf.cls
index 82ccbc2614e..3f21d0867bd 100644
--- a/Master/texmf-dist/tex/latex/asmeconf/asmeconf.cls
+++ b/Master/texmf-dist/tex/latex/asmeconf/asmeconf.cls
@@ -2,11 +2,11 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% This file provides the asmeconf LaTeX class for formatting conference papers according to
-%% ASME conference requirements as represented on ASME's conference web pages in 2024.
+%% ASME conference requirements as represented on ASME's conference web pages in 2025.
%%
%% This file's version and date:
- \def\versionno{1.38}
- \def\versiondate{2024/08/01\space}
+ \def\versionno{1.39}
+ \def\versiondate{2025/01/26\space}
%%
%% Author: John H. Lienhard, V
%% Department of Mechanical Engineering
@@ -44,7 +44,7 @@
%%
%% LICENSE:
%%
-%% Copyright (c) 2024 John H. Lienhard
+%% Copyright (c) 2025 John H. Lienhard
%%
%% 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,
@@ -69,7 +69,7 @@
\LoadClass[twoside,10pt]{article}% twocolumn is initiated in \MakeTitle
% Even/odd page layout is not used in ASME's specs, although the papers are printed in two-sided format.
-\RequirePackage{iftex}% provides \ifpdftex (many) & \ifluatex (once)
+\RequirePackage{iftex}[2019/11/07]% provides \ifpdftex (many) & \ifluatex (once)
\RequirePackage{ifthen}% ifthenelse (many) & \whiledo (once)
\RequirePackage{etoolbox}% using patchcmd in 4 or 5 places
@@ -79,6 +79,8 @@
%%%%%%%%%%%%% Compatibility codes for older distributions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% these will be dropped as time goes by ...
+
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}% compare version to date; \If... added to latex 2020/10/01
\providecommand\IfPackageAtLeastTF{\@ifpackagelater}% compare version to date; \If... added to latex 2020/10/01
\providecommand\IfPDFManagementActiveTF{\@secondoftwo}% \If... added to latex 2021/07/23
@@ -98,6 +100,14 @@
\ClassWarningNoLine{\ClassName}{pdfmanagement is not active. Will load hyperxmp and bookmark packages instead}
}
+% If latex release is pre 2022/06, need to load textcase package
+\ifx\AddToNoCaseChangeList\@undefined % updated 2022/07/03, see https://github.com/John02139/asmeconf/issues/5
+ \RequirePackage{textcase} %% Allows uppercase titles and captions without errors from math and citations
+ \typeout{Asmeconf is loading textcase package.}
+\else
+ \NewCommandCopy{\MakeTextUppercase}{\MakeUppercase}% keep using \MakeTextUppercase for backward compatibility
+\fi
+
% Allow pre 2021/11/15 formats to see the graphicx alt key without causing an error
\IfFormatAtLeastTF{2021/11/15}{
\relax
@@ -125,6 +135,10 @@
Your latex installation does not have an up-to-date version of the package iftex. You can get it at CTAN: \string https://ctan.org.}
}
+\IfFormatAtLeastTF{2018/04/01}{\relax}{\RequirePackage[utf8]{inputenc}}
+
+% another legacy package, fnpos, is loaded if footmisc package is older than 2022/02/05 (near line 1070)
+
%%%%%%%%%%%%%% Options for the class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{kvoptions}
@@ -166,6 +180,9 @@
%% Option NOT to use fontspec package under luaLaTeX [nofontspec]
\DeclareBoolOption{nofontspec}
+%% Option to patch caption package for tagged pdf [captionpatch]. Experimental, 2025/01/26
+\DeclareBoolOption{captionpatch}
+
%%% Use these switches to load other alphabets for Cyrillic, Greek, Japanese, and Vietnamese text
\newif\ifac@cyrillic\ac@cyrillicfalse
\newif\ifac@greek\ac@greekfalse
@@ -228,7 +245,7 @@
}
\NewDocumentCommand\@DisableKeys{>{\SplitList{;}}m}{\ProcessList{#1}{\ac@DisableOption}}
-\@DisableKeys{colorlinks;unboldcaption;lineno;balance;grid;nofoot;govt;govtsome;contractor;nofontspec;main;vietnamese}
+\@DisableKeys{colorlinks;unboldcaption;lineno;balance;grid;nofoot;govt;govtsome;contractor;nofontspec;captionpatch;main;vietnamese}
%%%%%%%%% Various font-related options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -438,10 +455,10 @@
%
\DeclareOption{hindi}{\ClassError{\ClassName}{Do not specify "hindi" as a class option}{Babel does not have an ldf file for Hindi. Instead, specify "hindi" when you call the language within your document. No class option is needed.}}
%
-\DeclareOption{marathi}{\ClassError{\ClassName}{Do not specify "marathi" as a class option}{Babel does not have an ldf file for Marathi. Instead, specify "marathi" when you call the language within your document. No class option is needed.}}
-%
\DeclareOption{korean}{\ClassError{\ClassName}{Do not specify "korean" as class option}{Babel does not have an ldf file for Korean. Instead, specify "korean"when you call the language within your document. No class option is needed.}}
%
+\DeclareOption{marathi}{\ClassError{\ClassName}{Do not specify "marathi" as a class option}{Babel does not have an ldf file for Marathi. Instead, specify "marathi" when you call the language within your document. No class option is needed.}}
+%
\DeclareOption{tamil}{\ClassError{\ClassName}{Do not specify "tamil" as a class option}{Babel does not have an ldf file for Tamil. Instead, specify "tamil" when you call the language within your document. No class option is needed.}}
%% Suppress warnings about unused global options
@@ -480,15 +497,39 @@
%% Needs to come before babel messes with the captions, to keep uppercase text. 2021/12/25
-\ifx\AddToNoCaseChangeList\@undefined % updated 2022/07/03, see https://github.com/John02139/asmeconf/issues/5
- \RequirePackage{textcase} %% Allows uppercase titles and captions without errors from math and citations
- \typeout{Asmeconf is loading textcase package.}
-\else
- \NewCommandCopy{\MakeTextUppercase}{\MakeUppercase}
-\fi
-
\RequirePackage[labelfont={sf,bf},hypcap=false]{caption}
-\RequirePackage[hypcap=false,list=true]{subcaption}
+\RequirePackage[list=true,hypcap=false]{subcaption}
+
+%% This option is experimental and documented only here, 2025/01/26
+%% with this option asmeconf can validate as pdf 2.0/a-4f
+%% subfigures are not specifically addressed in this patch
+%% babel [spanish] option is NOT compatible with tagging !!
+\ifasmeconf@captionpatch
+%% set github discussion of this patch by Ulrike Fischer
+%% https://github.com/latex3/tagging-project/issues/720#issuecomment-2386568711
+ \RemoveFromHook{begindocument}[latex-lab-testphase-float]
+ \ExplSyntaxOn
+ \socket_new_plug:nnn{tagsupport/parbox/before}{caption}
+ {
+ \tagpdfparaOn %restart para tagging
+ \tl_if_empty:NTF\@current@float@struct
+ {
+ \tag_struct_begin:n{tag=Caption,firstkid}
+ }
+ {
+ \tag_struct_begin:n{tag=Caption,parent=\@current@float@struct,firstkid}
+ }
+ }
+ \socket_new_plug:nnn{tagsupport/parbox/after}{caption}
+ {
+ \tag_struct_end:
+ }
+ \l@addto@macro\caption@beginex@hook{%
+ \tagpdfparaOff %leavevmode in parbox should not start paragraph structure
+ \AssignSocketPlug{tagsupport/parbox/before}{caption}
+ \AssignSocketPlug{tagsupport/parbox/after}{caption}}
+ \ExplSyntaxOff
+\fi
\DeclareCaptionLabelFormat{uppercase}{\MakeTextUppercase{#1} #2}
\DeclareCaptionTextFormat{boldmath}{\mathversion{sansbold}#1}
@@ -517,7 +558,6 @@
% must load before babel
\RequirePackage[\ac@TtwoA,\ac@LGR,\ac@Tfive,T1]{fontenc}
% T2A - Cyrillic (w/o babel warning); LGR - Greek; T5 - Vietnamese; put T1 last 2022/03/10
- \IfFormatAtLeastTF{2018/04/01}{\relax}{\RequirePackage[utf8]{inputenc}}
\fi
\RequirePackage[]{babel}
@@ -971,7 +1011,7 @@
\tolerance 2500
\emergencystretch 3em
-\RequirePackage{metalogo,hologo}% Access various LaTeX logos if needed
+\RequirePackage{hologo}% Access various LaTeX logos if needed. Dropped metalogo, 2024/08/09.
%% font size selection
%% ASME's specs differ slightly from latex standard article-10 class
@@ -1062,7 +1102,7 @@
\RequirePackage{footmisc}%
\IfPackageAtLeastTF{footmisc}{2022/02/05}{
\PassOptionsToPackage{belowfloats}{footmisc}%
- }{ \RequirePackage{fnpos}
+ }{ \RequirePackage{fnpos}% this package is not loaded if footmisc is up to date.
\makeFNbottom
\makeFNbelow
}%
@@ -1078,8 +1118,8 @@
%% include a comma for sequential footnotes. 2024/01/18
\ExplSyntaxOn
\cs_new:Npn \__asmeconf_NoteComma:n { \peek_meaning:NT \footnote { \textsuperscript{\mdseries,} } }
- \cs_new_eq:NN \__savefootnote \footnote
- \cs_gset_protected:Npn \footnote #1 { \__savefootnote{#1} \__asmeconf_NoteComma:n }
+ \cs_new_eq:NN \__asmeconf_savefootnote \footnote
+ \cs_gset_protected:Npn \footnote #1 { \__asmeconf_savefootnote{#1} \__asmeconf_NoteComma:n }
\ExplSyntaxOff
@@ -1170,11 +1210,10 @@
\providecommand*{\toclevel@subfigure}{1}% <== to address unknown bookmark level of subfigure. 2021/12/24
-\providecommand\hrefurl[2]{\href{#1}{#2}}% to address certain issues around URL recognition with new pdf management code, 2021/12/02
-
\ifasme@pdfmanagement
\ClassInfo{asmejour}{pdfmanagement is defined. Class file will not load hyperxmp and bookmark packages}
\else
+ \providecommand\hrefurl[2]{\href{#1}{#2}}% to address certain issues around URL recognition with new pdf management code, 2021/12/02
\RequirePackage{bookmark}% improves handling of pdf bookmarks
\RequirePackage{hyperxmp}% improve transfer of metadata to pdf
@@ -1350,7 +1389,6 @@
\setlength{\savitemsep}{\itemsep}%
}%
}{\end{list}\ignorespacesafterend}
-
%%%%%%%%%%%%%%%%% Headers and Title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1375,7 +1413,17 @@
}
\providecommand\@PaperTitle{\hbox{ }}
+
+\ExplSyntaxOn
+%% In case tagging is not loaded, 2025/01/26
+\cs_if_exist:NF \tag_struct_begin:n
+ {
+ \cs_new:Npn \tag_struct_begin:n #1 { \scan_stop: }
+ \cs_new:Nn \tag_struct_end: { \scan_stop: }
+ }
+
\NewDocumentCommand\@HeaderTitle{}{%
+ \tag_struct_begin:n{tag=Div, title=Conference~information}
{\bfseries\sffamily
\parbox{\linewidth}{%
\raggedleft
@@ -1383,20 +1431,24 @@
\MakeTextUppercase{\@ConfAcronym}\par
\@ConfDate\@ConfCity
}%
+ \par\tag_struct_end:
\vspace*{2\baselineskip}
+ \tag_struct_begin:n{tag=Div, title=Paper~number}
\parbox{\linewidth}{\raggedleft\LARGE
\MakeTextUppercase{\@PaperNo}%
}%
+ \par\tag_struct_end:
\vspace*{3\baselineskip}
+ \tag_struct_begin:n{tag=Title}
\parbox{\linewidth}{\mathversion{sansbold}\centering{\large
\MakeTextUppercase{\@PaperTitle}\par}}%%% <=== extra \par to make font leading stick. See adjustment in \MakeTitle
+ \tag_struct_end:
}%
}
+\ExplSyntaxOff
%%%%%%%%%%% Author and affiliation block %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{xcoffins}
-
%% Inline author style resets the footnote mark; save the definitions so we can restore them later
\let\savethefootnote\thefootnote
\let\savemakefnmark\@makefnmark
@@ -1428,275 +1480,321 @@
\ifasmeconf@grid
\ClassNoteNoLine{\ClassName}{Selected option for a grid of author blocks}%
+
+ %%%%%%%%%%%%%%%%%%%% Gridded author layout %%%%%%%%%%%%%%%%%%%%%%%%%
+ %%
+ %% converted to expl3 18 August 2024
- %%%%%%%%%%%%%%%%%%%% Gridded author layout %%%%%%%%%%%%%%%%%%%%%%%%%
+ \ExplSyntaxOn
- \NewCoffin{\authorblock}
-
- %% Allows for up to fifteen author groups... if you need more authors, the edits should be obvious
- %% You can put multiple authors above a single affiliation to reduce number of author blocks needed.
- \NewCoffin{\firstrowauthorblock}
- \NewCoffin{\secondrowauthorblock}
- \NewCoffin{\thirdrowauthorblock}
- \NewCoffin{\fourthrowauthorblock}
- \NewCoffin{\fifthrowauthorblock}
- \AtBeginDocument{% corrected 2021/12/01
- \SetHorizontalCoffin\firstrowauthorblock{}
- \SetHorizontalCoffin\secondrowauthorblock{}
- \SetHorizontalCoffin\thirdrowauthorblock{}
- \SetHorizontalCoffin\fourthrowauthorblock{}
- \SetHorizontalCoffin\fifthrowauthorblock{}
- }
-
- \newcounter{authorno}
- \setcounter{authorno}{0}
-
- \newlength{\coffinsep}% horizontal space between coffins
- \setlength{\coffinsep}{0.03\textwidth}
+ %% Allows for up to fifteen author blocks.
+ \coffin_new:N \g__asmeconf_authorblock_coffin
+ \coffin_new:N \g__asmeconf_firstrowauthorblock_coffin
+ \coffin_new:N \g__asmeconf_secondrowauthorblock_coffin
+ \coffin_new:N \g__asmeconf_thirdrowauthorblock_coffin
+ \coffin_new:N \g__asmeconf_fourthrowauthorblock_coffin
+ \coffin_new:N \g__asmeconf_fifthrowauthorblock_coffin
- \newcounter{authorcnt}
- \setcounter{authorcnt}{0}
-
- \NewDocumentCommand\SetAffiliation{mm}{\expandafter\xdef\csname af@#1\endcsname{#2}}% defines \af@#1 as Affiliation #2
-
- \AtBeginDocument{% error control, when no author or empty \affil is given
- \SetAffiliation{-1}{Missing author name!\\Or extra comma!}
- \SetAffiliation{99}{Missing affiliation tag!!}
- \SetAffiliation{100}{Missing number in affiliation!!}
- }
-
- \NewDocumentCommand\SetAuthors{>{\SplitList{,}}m}{\ProcessList{#1}{\@TagAutAff}}
-
- \NewDocumentCommand\@AuthNo{m}{%
- \ifblank{#1}{%
- \expandafter\xdef\csname aut@\theauthorcnt\endcsname{}%
- \expandafter\xdef\csname autaffil@\theauthorcnt\endcsname{-1}
- \ClassWarning{\ClassName}{Missing author name, check for extra comma}%
- }{\expandafter\xdef\csname aut@\theauthorcnt\endcsname{#1}%
- }%
- }% defines \aut@authorcnt as Name #1
+ \dim_new:N \g__asmeconf_coffinsep_dim
+ \dim_gset:Nn \g__asmeconf_coffinsep_dim { 0.03\textwidth }
+
+ \dim_new:N \g__asmeconf_authorblockwidth_dim
+ \dim_gset:Nn \g__asmeconf_authorblockwidth_dim { 0.3\textwidth }
+
+ \seq_new:N \g__asmeconf_author_seq
+ \seq_new:N \g__asmeconf_authoraffil_seq
+ \seq_new:N \g__asmeconf_affiliation_seq
+
+
+ \int_gzero_new:N \g__asmeconf_authorcnt_int
- \NewExpandableDocumentCommand\affil{m}{%
- \ifblank{#1}{%
- \expandafter\xdef\csname autaffil@\theauthorcnt\endcsname{100}%
- }{\expandafter\xdef\csname autaffil@\theauthorcnt\endcsname{#1}%
- }%
- }% defines \autaffil@authorcnt as #1 (unique association)
+ \NewDocumentCommand\SetAuthors{>{\SplitList{,}}m}{
+ \ProcessList{#1}{ \__asmeconf_author:n }
+ }
+ \cs_new_protected:Nn \__asmeconf_author:n
+ {
+ \int_gincr:N \g__asmeconf_authorcnt_int
+ \tl_if_empty:nT {#1} {
+ \msg_warning:nn { \ClassName } { missingauthor }
+ }
+ \seq_gput_right:Nn \g__asmeconf_author_seq {#1}
+ \__asmeconf_stripaffilnumber:n { #1 }
+ \seq_gput_right:Nn \g__asmeconf_affiliation_seq { \c_empty_tl } % clear sequence for later use
+ \seq_gput_right:NV \g__asmeconf_authoraffil_seq { \int_use:N \g__affiltagno_int } % clear sequence for later use
+ }
+ \msg_new:nnn { \ClassName } { missingauthor } { Missing~author~name,~check~for~extra~comma~in~\SetAuthors! }
+
+ %% The following captures the affiliation tag number from the \SetAuthors command.
+ %% It would be simpler to replace \affil{#} by an additional _argument_ in \SetAuthors;
+ %% however, legacy syntax seem pretty locked in...
+ \int_gzero_new:N \g__affiltagno_int
+ \cs_new_protected:Nn \__asmeconf_stripaffilnumber:n
+ {
+ \int_zero_new:N \l__asmeconf_affil_flag_int
+ \tl_set:Nn \l_tmpa_tl { #1 }
+ \tl_map_inline:Nn \l_tmpa_tl
+ {
+ \int_if_zero:nTF { \l__asmeconf_affil_flag_int }
+ {
+ \tl_if_eq:nnT { ##1 } { \affil } { \int_incr:N \l__asmeconf_affil_flag_int }
+ }{
+ \tl_map_break:n {
+ \tl_if_empty:nTF { ##1 }
+ {
+ \msg_error:nn { \ClassName } { missingaffilno }
+ }{
+ \int_gset:Nn \g__affiltagno_int { ##1 } \int_set:Nn \l__asmeconf_affil_flag_int {0}
+ }
+ }
+ }
+ }
+ }
+ \NewDocumentCommand\affil{m}{}
+ \msg_new:nnn { \ClassName } { missingaffilno } { Missing~number~in~\affil~tag! }
+
+ \NewDocumentCommand\SetAffiliation{mm}{
+ \__asmeconf_affiliation:nn {#1}{#2}
+ }
+ \cs_new_protected:Nn \__asmeconf_affiliation:nn
+ {
+ \seq_gset_item:Nnn \g__asmeconf_affiliation_seq {#1} {#2}
+ }
- \NewDocumentCommand\@TagAutAff{m}{%
- \addtocounter{authorcnt}{1}%
- \@AuthNo{#1}%
- }
\NewDocumentCommand\@SetAuthorBlock{}{%
- \whiledo{\value{authorno}<\value{authorcnt}}{% starting with authorno = 0 ensures we reach authorcnt with +1
- \addtocounter{authorno}{1}%
- \SetVerticalCoffin{\authorblock}{0.3\textwidth}{%
- \centering\sffamily%
- \textbf{\ignorespaces\csname aut@\theauthorno\endcsname\ignorespaces}\\
- \ifcsname autaffil@\theauthorno\endcsname% in case the \affil command has been omitted
- \csname af@\csname autaffil@\theauthorno\endcsname\endcsname
- \else
- \csname af@99\endcsname
- \fi
- \par}
- \ifnum\value{authorno}=1
- \JoinCoffins\firstrowauthorblock[r,t]\authorblock[l,t]
- \else
- \ifnum\value{authorno}=2
- \JoinCoffins\firstrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt)
- \else
- \ifnum\value{authorno}=3
- \JoinCoffins\firstrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt)
- \fi
- \fi
- \fi
- \ifnum\value{authorno}=4
- \JoinCoffins\secondrowauthorblock[r,t]\authorblock[l,t]
- \else
- \ifnum\value{authorno}=5
- \JoinCoffins\secondrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt)
- \else
- \ifnum\value{authorno}=6
- \JoinCoffins\secondrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt)
- \fi
- \fi
- \fi
- \ifnum\value{authorno}=7
- \JoinCoffins\thirdrowauthorblock[r,t]\authorblock[l,t]
- \else
- \ifnum\value{authorno}=8
- \JoinCoffins\thirdrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt)
- \else
- \ifnum\value{authorno}=9
- \JoinCoffins\thirdrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt)
- \fi
- \fi
- \fi
- \ifnum\value{authorno}=10
- \JoinCoffins\fourthrowauthorblock[r,t]\authorblock[l,t]
- \else
- \ifnum\value{authorno}=11
- \JoinCoffins\fourthrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt)
- \else
- \ifnum\value{authorno}=12
- \JoinCoffins\fourthrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt)
- \fi
- \fi
- \fi
- \ifnum\value{authorno}=13
- \JoinCoffins\fifthrowauthorblock[r,t]\authorblock[l,t]
- \else
- \ifnum\value{authorno}=14
- \JoinCoffins\fifthrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt)
- \else
- \ifnum\value{authorno}=15
- \JoinCoffins\fifthrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt)
- \fi
- \fi
- \fi
- \ifnum\value{authorno}>15
- \ClassWarningNoLine{\ClassName}{The class is programmed for up to 15 author blocks. If some of your authors are at the same institution, %
- you may put more than one name above a single address. If you need more than 15 author blocks, try using the in-line author style %
- instead of the [grid] option}
- \fi
- }% end whiledo
- }
- \ExplSyntaxOn
- % next three are for backward compatibility
- \cs_if_exist:NF \cs_gset:Npe { \cs_generate_variant:Nn \cs_gset:Npn {Npe} }
- \cs_if_exist:NF \tl_set:Ne { \cs_generate_variant:Nn \tl_set:Nn {Ne} }
- \cs_if_exist:NF \tl_put_right:Ne { \cs_generate_variant:Nn \tl_put_right:Nn {Ne} }
+ \int_zero_new:N \l__asmeconf_authorno_int
+ \int_zero_new:N \l__asmeconf_authoraffilno_int
+ \tl_clear:N \l_tmpa_tl
+ \int_while_do:nNnn { \l__asmeconf_authorno_int } < { \g__asmeconf_authorcnt_int } { % starting with authorno = 0 ensures we reach authorcnt with +1
+ \int_incr:N \l__asmeconf_authorno_int
+ \centering\vcoffin_gset:Nnn \g__asmeconf_authorblock_coffin { \dim_use:N \g__asmeconf_authorblockwidth_dim } {
+ \sffamily
+ \textbf{ \seq_item:Nn \g__asmeconf_author_seq { \l__asmeconf_authorno_int }} \\
+ \int_set:Nn \l__asmeconf_authoraffilno_int { \seq_item:Nn \g__asmeconf_authoraffil_seq { \l__asmeconf_authorno_int } }
+ \tl_set:Nn \l_tmpa_tl { \seq_item:Nn \g__asmeconf_affiliation_seq { \l__asmeconf_authoraffilno_int } }
+ \tl_if_empty:NTF \l_tmpa_tl
+ { \msg_warning:nnV { \ClassName } { missingaffiliation } { \l__asmeconf_authorno_int }
+ }{
+ \l_tmpa_tl
+ }
+ \par
+ }
+ \int_compare:nNnTF { \l__asmeconf_authorno_int } = { 1 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_firstrowauthorblock_coffin { r } { t }
+ \g__asmeconf_authorblock_coffin { l } { t } { 0pt} { 0pt }
+ }
+ { \int_compare:nNnTF { \l__asmeconf_authorno_int } = { 2 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_firstrowauthorblock_coffin { r } { t }
+ \g__asmeconf_authorblock_coffin { l } { t } { \dim_use:N \g__asmeconf_coffinsep_dim } { 0pt }
+ }
+ { \int_compare:nNnTF { \l__asmeconf_authorno_int } = { 3 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_firstrowauthorblock_coffin { r } { t }
+ \g__asmeconf_authorblock_coffin { l } { t } { \dim_use:N \g__asmeconf_coffinsep_dim } { 0pt }
+ }
+ { \int_compare:nNnTF { \l__asmeconf_authorno_int } = { 4 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_secondrowauthorblock_coffin { r } { t }
+ \g__asmeconf_authorblock_coffin { l } { t } { 0pt} { 0pt }
+ }
+ { \int_compare:nNnTF { \l__asmeconf_authorno_int } = { 5 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_secondrowauthorblock_coffin { r } { t }
+ \g__asmeconf_authorblock_coffin { l } { t } { \dim_use:N \g__asmeconf_coffinsep_dim } { 0pt }
+ }
+ { \int_compare:nNnTF { \l__asmeconf_authorno_int } = { 6 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_secondrowauthorblock_coffin { r } { t }
+ \g__asmeconf_authorblock_coffin { l } { t } { \dim_use:N \g__asmeconf_coffinsep_dim } { 0pt }
+ }
+ { \int_compare:nNnTF { \l__asmeconf_authorno_int } = { 7 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_thirdrowauthorblock_coffin { r } { t }
+ \g__asmeconf_authorblock_coffin { l } { t } { 0pt} { 0pt }
+ }
+ { \int_compare:nNnTF { \l__asmeconf_authorno_int } = { 8 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_thirdrowauthorblock_coffin { r } { t }
+ \g__asmeconf_authorblock_coffin { l } { t } { \dim_use:N \g__asmeconf_coffinsep_dim } { 0pt }
+ }
+ { \int_compare:nNnTF { \l__asmeconf_authorno_int } = { 9 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_thirdrowauthorblock_coffin { r } { t }
+ \g__asmeconf_authorblock_coffin { l } { t } { \dim_use:N \g__asmeconf_coffinsep_dim } { 0pt }
+ }
+ { \int_compare:nNnTF { \l__asmeconf_authorno_int } = { 10 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_fourthrowauthorblock_coffin { r } { t }
+ \g__asmeconf_authorblock_coffin { l } { t } { 0pt} { 0pt }
+ }
+ { \int_compare:nNnTF { \l__asmeconf_authorno_int } = { 11 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_fourthrowauthorblock_coffin { r } { t }
+ \g__asmeconf_authorblock_coffin { l } { t } { \dim_use:N \g__asmeconf_coffinsep_dim } { 0pt }
+ }
+ { \int_compare:nNnTF { \l__asmeconf_authorno_int } = { 12 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_fourthrowauthorblock_coffin { r } { t }
+ \g__asmeconf_authorblock_coffin { l } { t } { \dim_use:N \g__asmeconf_coffinsep_dim } { 0pt }
+ }
+ { \int_compare:nNnTF { \l__asmeconf_authorno_int } = { 13 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_fifthrowauthorblock_coffin { r } { t }
+ \g__asmeconf_authorblock_coffin { l } { t } { 0pt} { 0pt }
+ }
+ { \int_compare:nNnTF { \l__asmeconf_authorno_int } = { 14 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_fifthrowauthorblock_coffin { r } { t }
+ \g__asmeconf_authorblock_coffin { l } { t } { \dim_use:N \g__asmeconf_coffinsep_dim } { 0pt }
+ }
+ { \int_compare:nNnT { \l__asmeconf_authorno_int } = { 15 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_fifthrowauthorblock_coffin { r } { t }
+ \g__asmeconf_authorblock_coffin { l } { t } { \dim_use:N \g__asmeconf_coffinsep_dim } { 0pt }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ \int_compare:nNnT { \l__asmeconf_authorno_int } > { 15 } {
+ \msg_error:nn { \ClassName } { toomanyforgrid }
+ }
+ }% end loop
+ }
+ \msg_new:nnnn { \ClassName } { missingaffiliation } { Missing~affiliation~for~author~no.~#1! } {#1}
+ \msg_new:nnnn { \ClassName } { toomanyforgrid } { The~class~is~programmed~for~a~maximum~of~15~author~blocks.}
+ { For~authors~at~the~same~institution,\ you~may~put~more~than~one~name~above~a~single~address.\
+ Else~use~the~in-line~author~style,\ not~the~[grid]~option.}
+
+ % backward compatibility
+ \cs_if_exist:NF \tl_set:Ne { \cs_generate_variant:Nn \tl_set:Nn {Ne} }
+ % \cs_if_exist:NF \iow_term:e { \cs_generate_variant:Nn \iow_term:n {e} }
\NewDocumentCommand\@ConstructAuthorBlock{}{%
- \ifnum\value{authorno}>3
- \JoinCoffins\firstrowauthorblock[hc,b]\secondrowauthorblock[hc,t](0pt, -1.5\baselineskip)
- \fi
- \ifnum\value{authorno}>6
- \JoinCoffins\firstrowauthorblock[hc,b]\thirdrowauthorblock[hc,t](0pt, -1.5\baselineskip)
- \fi
- \ifnum\value{authorno}>9
- \JoinCoffins\firstrowauthorblock[hc,b]\fourthrowauthorblock[hc,t](0pt, -1.5\baselineskip)
- \fi
- \ifnum\value{authorno}>12
- \JoinCoffins\firstrowauthorblock[hc,b]\fifthrowauthorblock[hc,t](0pt, -1.5\baselineskip)
- \fi
- \centerline{\TypesetCoffin\firstrowauthorblock}% in this instance, \centerline is better than \centering
+ \int_compare:nNnT { \g__asmeconf_authorcnt_int } > { 3 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_firstrowauthorblock_coffin { hc } { b } \g__asmeconf_secondrowauthorblock_coffin { hc } { t } { 0pt } { -1.5\baselineskip }
+ }
+ \int_compare:nNnT { \g__asmeconf_authorcnt_int } > { 6 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_firstrowauthorblock_coffin { hc } { b } \g__asmeconf_thirdrowauthorblock_coffin { hc } { t } { 0pt } { -1.5\baselineskip }
+ }
+ \int_compare:nNnT { \g__asmeconf_authorcnt_int } > { 9 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_firstrowauthorblock_coffin { hc } { b } \g__asmeconf_fourthrowauthorblock_coffin { hc } { t } { 0pt } { -1.5\baselineskip }
+ }
+ \int_compare:nNnT { \g__asmeconf_authorcnt_int } > { 12 } {
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_firstrowauthorblock_coffin { hc } { b } \g__asmeconf_fifthrowauthorblock_coffin { hc } { t } { 0pt } { -1.5\baselineskip }
+ }
+ \coffin_typeset:Nnnnn \g__asmeconf_firstrowauthorblock_coffin { l }{ t }{ 0pt }{ 0pt }
\__asmeconf_concataut:
- \cs_gset:Npe \@author { \tl_use:N \g_asmeconf_authors_tl }
- %\iow_term:e { \tl_use:N \g_asmeconf_authors_tl }% diagnostic only
+ \cs_gset:Npn \@author { \tl_use:N \g_asmeconf_authors_tl }
}
+
% build comma-separated list of author names
+ \tl_new:N \g_asmeconf_authors_tl
+ \tl_gset:Nn \g_asmeconf_authors_tl \c_empty_tl
\cs_new_protected:Nn \__asmeconf_concataut: {
- \tl_new:N \g_asmeconf_authors_tl
\int_set:Nn \l_tmpa_int {1}
- \int_new:N \l__asmeconf_noauts
- \int_set:Nn \l__asmeconf_noauts { \value{authorcnt} }
- \int_do_until:nNnn { \l_tmpa_int } > { \l__asmeconf_noauts }
+ \tl_clear:N \l_tmpb_tl
+ \int_do_until:nNnn { \l_tmpa_int } > { \g__asmeconf_authorcnt_int }
{
- \tl_set:Ne \l_tmpa_tl {\use:c { aut@ \int_use:N \l_tmpa_int } }
- \tl_replace_all:Nnn \l_tmpa_tl {\unhbox \voidb@x \protect \penalty \@M \ } {~}
- % If tex unbreakable space character "~" has expanded, replace by a simple space, which is "~" in Expl3 syntax
- \tl_remove_all:Nn \l_tmpa_tl { \JointFirstAuthor }
- \tl_replace_all:Nnn \l_tmpa_tl { \CorrespondingAuthor } { \use_none:n }
- \tl_replace_all:Nnn \l_tmpa_tl { \affil } { \use_none:n }
- \tl_replace_all:Nnn \l_tmpa_tl { \xdef } { \use_none:nn }
- \tl_put_right:Ne \g_asmeconf_authors_tl \l_tmpa_tl
- \int_compare:nNnT { \l_tmpa_int } < { \l__asmeconf_noauts} {
- \tl_put_right:Ne \g_asmeconf_authors_tl { ,~ }
- }
- \int_incr:N \l_tmpa_int
- }
+ \tl_set:Ne \l_tmpb_tl { \seq_item:NV \g__asmeconf_author_seq \l_tmpa_int }
+ \regex_replace_all:nnN { \cA\~ } {\ } \l_tmpb_tl % replace ~ by space in author list
+ \tl_replace_all:Nnn \l_tmpb_tl { \affil } { \use_none:n }
+ \tl_remove_all:Nn \l_tmpb_tl { \JointFirstAuthor }
+ \tl_replace_all:Nnn \l_tmpb_tl { \CorrespondingAuthor } { \use_none:n }
+ \int_compare:nNnT { \l_tmpa_int } < { \g__asmeconf_authorcnt_int } {
+ \tl_put_right:Nn \l_tmpb_tl { ,~ }
+ }
+ \tl_gput_right:NV \g_asmeconf_authors_tl \l_tmpb_tl
+ \int_incr:N \l_tmpa_int
+ }
+ %\iow_term:e { Authors:~ \tl_use:N \g_asmeconf_authors_tl } % diagnostic only
}
- \ExplSyntaxOff
+
+ \ExplSyntaxOff
+
%%% otherwise use the new compact layout of authors
\else
-
%%%%%%%%%%%%%%%%%%%%%% New author layout (inline) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \NewCoffin{\AuthorBlock}
- \NewCoffin{\AffiliationBlock}
- \NewCoffin{\AffiliationsBlock}
- \AtBeginDocument{\SetHorizontalCoffin\AffiliationsBlock{}}% corrected 2021/12/01
-
- \ExplSyntaxOn
- \cs_if_exist:NF \cs_gset:Npe { \cs_generate_variant:Nn \cs_gset:Npn {Npe} }
- \cs_if_exist:NF \tl_gset:Ne { \cs_generate_variant:Nn \tl_gset:Nn {Ne} }
-
- %% NB: \parbox width to \textwidth (full page) not \linewidth (single column)
- \NewDocumentCommand\SetAuthors{m}{%
- \SetHorizontalCoffin\AuthorBlock{% ignoring the bug in testphase tagging
- \parbox{\textwidth}{\centering\sffamily\bfseries\ignorespaces#1\ignorespaces}%
- % NB: in vertical mode \parbox needs \noindent ahead of it, _inside_ vertical coffin
- % \SetVerticalCoffin\AuthorBlock{\textwidth}{% 2024/07/30, test a vertical coffin alternative
- % \centering\sffamily\bfseries\ignorespaces#1\ignorespaces%
- \__asmeconf_striptokens:n {#1}
- \cs_gset:Npe \@author { \tl_use:N \g_asmeconf_authors_tl }% set \@author = list of authors, 2024/07/31
+ %%
+ %% converted to expl3, 17 August 2024
+
+ \ExplSyntaxOn
+
+ \coffin_new:N \g__asmeconf_authorblock_coffin
+ \coffin_new:N \g__asmeconf_affiliationblock_coffin
+ \coffin_new:N \g__asmeconf_affiliationsblock_coffin
+
+ \cs_if_exist:NF \cs_gset:Npe { \cs_generate_variant:Nn \cs_gset:Npn {Npe} }
+ \NewDocumentCommand\SetAuthors{m}{
+ \vcoffin_gset:Nnn \g__asmeconf_authorblock_coffin {\textwidth} % switched to vcoffin 2024/10/16 to accommodate tagging
+ {
+ \centering\sffamily\bfseries\ignorespaces#1\ignorespaces
+ \__asmeconf_striptokens:n {#1}
+ \cs_gset:Npe \@author { \tl_use:N \g_asmeconf_authors_tl }% set \@author = list of authors, 2024/07/31
}
}
- % strip \affil{..}, \JointFirstAuthor, \CorrespondingAuthor{...} from argument
+ %% strip \affil{..}, \JointFirstAuthor, \CorrespondingAuthor{...} from argument
\cs_new_protected:Nn \__asmeconf_striptokens:n {
\tl_set:Nn \l_tmpa_tl {#1}
\regex_replace_all:nnN { \cA\~ } {\ } \l_tmpa_tl % replace ~ by space in author list
- %\tl_replace_all:Nnn \l__asmeconf_authors_tl {\ } {~}% change "\ " to space (but why? for text we would want this)
\tl_remove_all:Nn \l_tmpa_tl { \JointFirstAuthor }
\tl_replace_all:Nnn \l_tmpa_tl { \affil } { \use_none:n }
\tl_replace_all:Nnn \l_tmpa_tl { \CorrespondingAuthor } { \use_none:n }
- \tl_new:N \g_asmeconf_authors_tl
- \tl_gset:Ne \g_asmeconf_authors_tl \l_tmpa_tl
- \iow_term:e { \tl_use:N \g_asmeconf_authors_tl }% diagnostic only
+ \tl_new:N \g_asmeconf_authors_tl
+ \tl_gset:NV \g_asmeconf_authors_tl \l_tmpa_tl % 2024/08/18 e -> V
+ % \iow_term:e { \tl_use:N \g_asmeconf_authors_tl }% diagnostic only
}
- \ExplSyntaxOff
\def\@makefnmark{\hbox{\@textsuperscript{\sffamily\@thefnmark}}}%
\NewDocumentCommand\SetAffiliation{mm}{%
- \SetVerticalCoffin\AffiliationBlock{\textwidth}{%
+ \vcoffin_set:Nnn \g__asmeconf_affiliationblock_coffin { \textwidth } {
\ifblank{#1}{%
- \centering\sffamily#2\ignorespaces}{% empty argument for one author or one affiliation, where affiliation need not be tagged
+ \centering\sffamily#2\ignorespaces}{% empty argument for 1 author or 1 affiliation, where affiliation need not be tagged
\centering\sffamily\footnotemark[#1]#2\ignorespaces}%
- }
- \JoinCoffins\AffiliationsBlock[hc,b]\AffiliationBlock[hc,t](0pt,-1pt)
+ }
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_affiliationsblock_coffin { hc } { b } \g__asmeconf_affiliationblock_coffin {hc } { t } { 0pt} { -1pt }
}
%%% Affiliation mark
\NewDocumentCommand{\affil}{m}{%
\ifblank{#1}{%
\ClassWarning{\ClassName}{Empty affiliation tag}%
- \@gobble% 9 Dec 2021, addresses modification for commas
+ \@gobble% addresses modification for commas
}{\bfseries\footnotemark[#1]}%
}
- %%% to deal with sequential notes as, e.g., "1,*", or "1,2,*" %%%%%%%%%%
- \ExplSyntaxOn
- \cs_new:Npn \__asmeconf_OtherNoteComma:n {
- \peek_meaning:NTF \affil
- { \textsuperscript{\mdseries,} }
- { \peek_meaning:NTF \CorrespondingAuthor
- { \textsuperscript{\mdseries,} }
- { \peek_meaning:NT \JointFirstAuthor { \textsuperscript{\mdseries,} } }
- }
- }
- \cs_new_eq:NN \__saveAF \affil
- \cs_gset_protected:Npn \affil #1 { \__saveAF{#1} \__asmeconf_OtherNoteComma:n }
- \cs_new_eq:NN \__saveCA \CorrespondingAuthor
- \cs_gset_protected:Npn \CorrespondingAuthor #1 { \__saveCA{#1} \__asmeconf_OtherNoteComma:n }
- \cs_new_eq:NN \__saveJA \JointFirstAuthor
- \cs_gset_protected:Npn \JointFirstAuthor { \__saveJA \__asmeconf_OtherNoteComma:n }
- \ExplSyntaxOff
-
-%%%
+ %%% to deal with sequential notes as, e.g., "1,*", or "1,2,*" %%%%%%%%%%
+ \cs_new:Npn \__asmeconf_OtherNoteComma:n {
+ \peek_meaning:NTF \affil
+ { \textsuperscript{\mdseries,} }
+ { \peek_meaning:NTF \CorrespondingAuthor
+ { \textsuperscript{\mdseries,} }
+ { \peek_meaning:NT \JointFirstAuthor { \textsuperscript{\mdseries,} } }
+ }
+ }
+ \cs_new_eq:NN \__asmeconf_saveAF \affil
+ \cs_gset_protected:Npn \affil #1 { \__asmeconf_saveAF{#1} \__asmeconf_OtherNoteComma:n }
+ \cs_new_eq:NN \__asmeconf_saveCA \CorrespondingAuthor
+ \cs_gset_protected:Npn \CorrespondingAuthor #1 { \__asmeconf_saveCA{#1} \__asmeconf_OtherNoteComma:n }
+ \cs_new_eq:NN \__asmeconf_saveJA \JointFirstAuthor
+ \cs_gset_protected:Npn \JointFirstAuthor { \__asmeconf_saveJA \__asmeconf_OtherNoteComma:n }
+
+ %%%
\NewDocumentCommand\@SetAuthorBlock{}{%
- \JoinCoffins\AuthorBlock[hc,b]\AffiliationsBlock[hc,t](0pt,-\baselineskip)
- \centerline{\TypesetCoffin\AuthorBlock}
+ \coffin_gjoin:NnnNnnnn \g__asmeconf_authorblock_coffin { hc } { b } \g__asmeconf_affiliationsblock_coffin {hc } { t } { 0pt} { -\baselineskip }
+ \coffin_typeset:Nnnnn \g__asmeconf_authorblock_coffin { l }{ T }{ 0pt }{ 0pt }
}
+
+ \ExplSyntaxOff
\fi % end if...else for grid
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Make the title and author section
+\ExplSyntaxOn
\NewDocumentCommand\MakeTitlePage{}{%
\twocolumn[
\@HeaderTitle
\vspace*{2\baselineskip}
+ \par\tag_struct_begin:n{tag=Div, title=Author~and~affilation}
+ %% tag structure for inline style still needs work, 2025/01/26
\ifasmeconf@grid
\@SetAuthorBlock\@ConstructAuthorBlock
\else
@@ -1712,8 +1810,10 @@
\ifac@CA
\footnotetext[1]{\CAwords\@CAsep\@CAemail}
\fi
+ \par\tag_struct_end:
\let\thefootnote\savethefootnote% restore footnote symbol
}
+\ExplSyntaxOff
%%%%%%%%%%
diff --git a/Master/texmf-dist/tex/latex/asmejour/asmejour.cls b/Master/texmf-dist/tex/latex/asmejour/asmejour.cls
index a8cd43eae27..fd8144bd62d 100644
--- a/Master/texmf-dist/tex/latex/asmejour/asmejour.cls
+++ b/Master/texmf-dist/tex/latex/asmejour/asmejour.cls
@@ -5,8 +5,8 @@
%% The asmejour.cls file should be used with the files asmejour.bst (for citations) and asmejour-template.tex.
%%
%% This file's version and date are:
- \def\versionno{1.23}
- \def\versiondate{2024/07/24\space}
+ \def\versionno{1.24}
+ \def\versiondate{2025/01/26\space}
%%
%% Author: John H. Lienhard V
%% Department of Mechanical Engineering
@@ -39,7 +39,7 @@
%%
%% LICENSE:
%%
-%% Copyright (c) 2024 John H. Lienhard
+%% Copyright (c) 2025 John H. Lienhard
%%
%% 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,
@@ -63,7 +63,7 @@
\LoadClass[twoside,9pt]{extarticle}% twocolumn format initiated in \MakeTitle command 2024/07/20
-\RequirePackage{iftex}% provides \ifpdftex, etc.
+\RequirePackage{iftex}[2019/11/07]% provides \ifpdftex, etc.
\RequirePackage{ifthen}
\ExplSyntaxOn
@@ -284,12 +284,12 @@
}
%% Option to enforce monospacing of words the typewriter font [mono]
-\def\MonoNotMono{WordSpace={1,1.33,1.67}}% for Inconsolatazi4; default allows word spacing (is not mono)
+\def\MonoNotMono{WordSpace={1,1,1}}% rescaled tt font to match pdf, 2024/07/30
\DeclareOption{mono}{%
\ifpdftex
\PassOptionsToPackage{mono}{inconsolata}% mono is a key via xkeyval in inconsolata
\else
- \def\MonoNotMono{}%
+ \def\MonoNotMono{WordSpace={1,0,0},PunctuationSpace={3}}% 2024/07/30, these are actually default WordSpace values
\fi
}
@@ -376,9 +376,11 @@
\IfFontExistsTF{texgyreheros}{}{ \ClassWarningNoLine{\ClassName}{\FontWarning} }
\IfFontExistsTF{Inconsolatazi4}{}{\ClassWarningNoLine{\ClassName}{\FontWarning} }
%
+ % The newtx package includes a modified version of TeXGyreTermes called TexGyreTermesX, which could be loaded instead (includes
\setmainfont{TeXGyreTermes}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
- WordSpace = {1.20,1.43,1.2},%% This stretch matches newtxtext a little better (reset 2024/07/23)
- Extension = .otf,
+ WordSpace = {1.20,1.44,1.2},% This stretch matches newtxtext fontdimens (reset 2024/07/30)
+ PunctuationSpace = {1.33},% reset 2024/07/30
+ Extension = .otf,
UprightFont = *-Regular,
ItalicFont = *-Italic,
BoldFont = *-Bold,
@@ -386,8 +388,8 @@
Numbers = Lining,
]
\setsansfont{texgyreheros}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
- WordSpace = {1.20,1.43,1.2},%% This stretch matches newtxtext a little better (reset 2024/07/23)
-% WordSpace = {1,1.4,1},
+ WordSpace = {1,1,1.0036},%% This stretch matches newtxtext fontdimens (reset 2024/07/30)
+ PunctuationSpace = {1.0036},% reset 2024/07/30
Extension = .otf,
UprightFont = *-regular,
ItalicFont = *-italic,
@@ -397,14 +399,14 @@
Scale=0.91,% same as for newtx; former value 0.9 too small 2022/01/15
]
\setmonofont{Inconsolatazi4}[% This otf font ships with the LaTeX Inconsolata package (it's in TeX Live)
- \MonoNotMono,
- Scale=1.05,% rescaled from 1, 22/03/10
+ Scale=1.0,% rescaled 1.05, 2022/03/10; reset to 1 2024/07/30, based on fontdimen6 (and all others!)
Extension = .otf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
BoldFont = *-Bold,
BoldItalicFont = *-Bold,% has no italic face
RawFeature = {+ss01,\ssztwo,+ss03},
+ \MonoNotMono,% WordSpace and PunctuationSpace are set in the class option [mono]
]
\fi
@@ -435,7 +437,7 @@
\newcommand*{\CondSansBold}{\renewcommand\bfdefault{b}\fontencoding{T1}\fontfamily{qhvc}\selectfont\bfseries}
\renewcommand\Huge{\@setfontsize\Huge{26.5}{26.5}} %... for title only
-\RequirePackage{metalogo,hologo}% Access to various LaTeX logos (for use in the documentation)
+\RequirePackage{hologo}% Access to various LaTeX logos (for use in the documentation). Dropped metalog 2024/08/09
%% This provides sans serif italic and sans serif bold italic math, against with fonts from newtxsf.
%% For use in the figure and table captions.
@@ -554,8 +556,13 @@
%% ASME puts equation tags in blue
\patchcmd{\tagform@}{(\ignorespaces#1\unskip\@@italiccorr)}{\color{blue}(\ignorespaces#1\unskip\@@italiccorr)}{}{}
-%% Ensure that the current font is used for equation tags, not \normalfont as set by amsmath
-\def\maketag@@@#1{\hbox{\m@th#1}}
+% To free \eqref from the normal font (e.g., for use in section headings or captions). Revised 2024/07/28
+\renewcommand{\eqref}[1]{\textup{\hbox{\m@th{(\ignorespaces\ref{#1}\unskip\@@italiccorr)}}}}
+%
+% amsmath def: \newcommand{\eqref}[1]{\textup{\tagform@{\ref{#1}}}}
+% \def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}
+% \def\maketag@@@#1{\hbox{\m@th\normalfont#1}}
+
%% Italicize alph part of subequation numbers. Revised 2023/10/20
\patchcmd{\subequations}{\theparentequation\alph{equation}}{\theparentequation\itshape\alph{equation}}{}{}
@@ -669,10 +676,6 @@
%%%%%% Footnotes %%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{fnpos}
-\makeFNbottom
-\makeFNbelow
-
\RequirePackage{footmisc}%
\IfPackageAtLeastTF{footmisc}{2022/02/05}{
\PassOptionsToPackage{belowfloats}{footmisc}%
@@ -701,8 +704,8 @@
%% include a comma for sequential footnotes
\ExplSyntaxOn
\cs_new:Npn \__asmejour_NoteComma:n { \peek_meaning:NT \footnote { \textsuperscript{\mdseries,} } }
- \cs_new_eq:NN \__savefootnote \footnote
- \cs_gset_protected:Npn \footnote #1 { \__savefootnote{#1}\__asmejour_NoteComma:n }
+ \cs_new_eq:NN \__asmejour_savefootnote \footnote
+ \cs_gset_protected:Npn \footnote #1 { \__asmejour_savefootnote{#1}\__asmejour_NoteComma:n }
\ExplSyntaxOff
@@ -775,7 +778,8 @@
%%%%%%%%%%%%%%%%% Hyperref %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifpdftex
- %%% to assist with unicode glyph mapping in pdf/a, per M. Sharpe's recommendation in newtx documentation
+ %%% to assist with unicode glyph mapping, following M. Sharpe's recommendation in the newtx documentation.
+ %%% as of 2024/07/28, these are still necessary with \DocumentMetadata{pdfstandard=A-3u}. Note: glyphtounicode-cmex.tex is now in latex-lab.
\InputIfFileExists{glyphtounicode-cmr.tex}{}{} %% additional mappings
\InputIfFileExists{glyphtounicode-ntx.tex}{}{} %% additional mappings
@@ -828,12 +832,11 @@
\providecommand*{\toclevel@subfigure}{1}% <== to address unknown bookmark level of subfigure. 2021/12/24
-\providecommand\hrefurl[2]{\href{#1}{#2}}% to address certain issues around URL recognition with new pdf management code, 2021/12/22
-%% This alias is also incorporated into asmejour.bst
-
\ifasme@pdfmanagement
\ClassInfo{\ClassName}{pdfmanagement is defined. Class file will not load hyperxmp}
\else
+ \providecommand\hrefurl[2]{\href{#1}{#2}}% if new pdf management code is not loaded, 2021/12/22
+ % This alias is also incorporated into asmejour.bst
\RequirePackage{bookmark} %% improves handling of pdf bookmarks
\RequirePackage{hyperxmp} %% to fix transfer of metadata to Acrobat pdf
% Patch bug in hyperxmp, unless a more recent version is used.
@@ -966,87 +969,104 @@
%%%%%%%%%%%%%%%% Author/Title/Abstract block %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{xcoffins}
-
-\NewCoffin{\authorblock}
-\NewCoffin{\ruleblock}
-\NewCoffin{\Abstract}
-\NewCoffin{\Title}
+% convert to expl3 2024/08/19
+\ExplSyntaxOn
-\NewCoffin{\firstrowauthorblock}
-\AtBeginDocument{%
- \SetHorizontalCoffin\firstrowauthorblock{}%
-}% corrected 2021/12/22
+\coffin_new:N \g__asmejour_authorblock_coffin
+\coffin_new:N \g__asmejour_ruleblock_coffin
+\coffin_new:N \g__asmejour_abstract_coffin
+\coffin_new:N \g__asmejour_title_coffin
+\coffin_new:N \g__asmejour_firstrowauthorblock_coffin
-\newlength{\coffinsep}%%% space between coffins
-\setlength{\coffinsep}{4.5mm}
+\dim_new:N \g__asmejour_coffinsep_dim %%% vert space between aut coffins
+\dim_gset:Nn \g__asmejour_coffinsep_dim {4.5mm}
-\newcounter{authorno}
-\setcounter{authorno}{0}
+\dim_new:N \g__asmejour_coffinspace_dim %%% vert space between title/abst coffins
+\dim_gset:Nn \g__asmejour_coffinspace_dim {6.75mm}
-%%%%%%
+\dim_new:N \g__asmejour_rulecofheight_dim
+\dim_new:N \g__asmejour_titleheight_dim
-\newlength{\rulecofheight}
-\newlength{\Titleheight}
+\cs_new:Nn \__asmejour_internallinenumbers:n {
+ \ifasmejour@lineno
+ \str_if_in:nnT {#1} {R} { \rightlinenumbers* }
+ \str_if_in:nnT {#1} {r} { \rightlinenumbers* }
+ \cs_set:Npn \thelinenumber { \@roman\c@linenumber }
+ \internallinenumbers
+ \fi
+}
-\NewDocumentCommand\SetAuthorBlock{m m}{%
- \addtocounter{authorno}{1}%
- \SetVerticalCoffin{\authorblock}{48.2mm}{%
- \raggedleft\sffamily%
- {\huge\CondSansBold\ignorespaces#1\ignorespaces}\\
- \CondSans#2%
+%% This command is used in the .tex file
+\NewDocumentCommand\SetAuthorBlock{m m}{
+ \__asmejour_setauthorblock:nn { #1 } { #2 }
}
-\ifnum\value{authorno}=1
- \JoinCoffins\firstrowauthorblock\authorblock
- \setlength{\rulecofheight}{\CoffinTotalHeight\firstrowauthorblock}
- \else
- \JoinCoffins\firstrowauthorblock[hc,b]\authorblock[hc,t](0pt,-\coffinsep)
- \setlength{\rulecofheight}{\CoffinTotalHeight\firstrowauthorblock}
-\fi
+
+\hcoffin_gset:Nn \g__asmejour_firstrowauthorblock_coffin {}
+\int_gzero_new:N \g__asmejour_authorno_int
+
+\cs_new:Nn \__asmejour_setauthorblock:nn {
+ \int_gincr:N \g__asmejour_authorno_int
+ \vcoffin_set:Nnn \g__asmejour_authorblock_coffin {48.2mm} {
+ \__asmejour_internallinenumbers:n {}
+ \raggedleft\sffamily
+ {\huge\CondSansBold \tl_trim_spaces:n { #1 } }\\
+ \CondSans#2
+ }
+ \int_compare:nNnTF { \g__asmejour_authorno_int } = { 1 } {
+ \coffin_join:NnnNnnnn \g__asmejour_firstrowauthorblock_coffin { hc } { b } \g__asmejour_authorblock_coffin { hc } {t } { 0pt } { 0pt }
+ \dim_gset:Nn \g__asmejour_rulecofheight_dim { \coffin_ht:N \g__asmejour_firstrowauthorblock_coffin + \coffin_dp:N \g__asmejour_firstrowauthorblock_coffin }
+ }{
+ \coffin_join:NnnNnnnn \g__asmejour_firstrowauthorblock_coffin { hc } { b } \g__asmejour_authorblock_coffin {hc } {t } { 0pt } { - \dim_use:N \g__asmejour_coffinsep_dim }
+ \dim_gset:Nn \g__asmejour_rulecofheight_dim { \coffin_ht:N \g__asmejour_firstrowauthorblock_coffin + \coffin_dp:N \g__asmejour_firstrowauthorblock_coffin }
+ }
}
+%% Standard coffin poles are (l hc r t T vc b B). See xcoffins documentation.
-\NewDocumentCommand\SetTitle{m}{%
- \SetVerticalCoffin{\Title}{114mm}{%
+\NewDocumentCommand\@SetTitle{m}{
+ \cs_gset:Npn \@title {#1} % 2024/07/30 (make this standard command available)
+ \vcoffin_set:Nnn \g__asmejour_title_coffin {114mm} {
+ \__asmejour_internallinenumbers:n {R}
\vspace*{0.5mm}% <== ASME doesn't align bar and text
- \noindent\Huge\CondSansBold\raggedright%
- #1%
- %\gdef\@title{#1}% for tagging, etc. 2024/07/24. pdf metadata will probably override.
+ \noindent\Huge\CondSansBold\raggedright
+ #1
\par
}
}
-\providecommand{\@keywords}{\relax}
-\NewDocumentCommand{\keywords}{m}{% changed to remove g option, 2021/01/30
- \long\def\@keywords{\par\vskip\baselineskip\noindent{\keywordname:} #1}%
+%% \keywords is used in the .tex file
+\cs_new:Npn \__asmejour_keywords {\relax}
+\NewDocumentCommand{\keywords}{m}{% removed g option, 2021/01/30
+ \cs_gset:Npn \__asmejour_keywords { \par\vskip\baselineskip\noindent{\keywordname :}~#1 }
}
\NewDocumentCommand\@SetAbstract{+m}{% add + to enable blank lines, etc. 2021/01/31
- \SetVerticalCoffin{\Abstract}{114mm}{%
- \ifasmejour@lineno
- \rightlinenumbers*
- \renewcommand*{\thelinenumber}{\roman{linenumber}}
- \internallinenumbers
- \fi
- \noindent\itshape%
- #1
- \@keywords\par%
- \vspace*{4mm}% <== at bottom of abstract to extend rule
+ \vcoffin_set:Nnn \g__asmejour_abstract_coffin {114mm}{
+ \__asmejour_internallinenumbers:n {R}
+ \noindent\itshape
+ #1
+ \__asmejour_keywords\par
+ \vspace*{4mm}% <== at bottom of abstract to extend rule
}
}
\NewDocumentCommand{\@ConstructAuthorBlock}{}{%
- \JoinCoffins\Title[l,b]\Abstract[l,t](0pt,-1.5\coffinsep)
- \setlength{\Titleheight}{\CoffinTotalHeight\Title}
- \ifdim\Titleheight>\rulecofheight
- \setlength{\rulecofheight}{\Titleheight}
- \else
- \addtolength{\rulecofheight}{7.0mm}
- \fi
- \SetHorizontalCoffin \ruleblock {\color{\asmejour@barcolor}\rule{2.1mm}{\rulecofheight}}
- \JoinCoffins\firstrowauthorblock[vc,r]\ruleblock[vc,l](\coffinsep,0pt)
- \JoinCoffins\firstrowauthorblock[vc,r]\Title[vc,l](\coffinsep,0pt)
- \centerline{\TypesetCoffin\firstrowauthorblock} %% in this instance, \centerline is better than \centering
+ \__asmejour_constructauthorblock:
}
+\cs_new:Nn \__asmejour_constructauthorblock: {
+ \coffin_join:NnnNnnnn \g__asmejour_title_coffin { l } { b } \g__asmejour_abstract_coffin { l } {t } { 0pt } { - \dim_use:N \g__asmejour_coffinspace_dim }
+ \dim_gset:Nn \g__asmejour_titleheight_dim { \coffin_ht:N \g__asmejour_title_coffin + \coffin_dp:N \g__asmejour_title_coffin }
+ \if_dim:w \g__asmejour_titleheight_dim > \g__asmejour_rulecofheight_dim
+ \dim_gset:Nn \g__asmejour_rulecofheight_dim { \g__asmejour_titleheight_dim }
+ \else:
+ \dim_add:Nn \g__asmejour_rulecofheight_dim {7.0mm}
+ \fi:
+ \hcoffin_set:Nn \g__asmejour_ruleblock_coffin { \color{\asmejour@barcolor}\rule{2.1mm}{ \dim_use:N \g__asmejour_rulecofheight_dim } }
+ \coffin_join:NnnNnnnn \g__asmejour_firstrowauthorblock_coffin { vc } { r } \g__asmejour_ruleblock_coffin {vc } { l } { \dim_use:N \g__asmejour_coffinsep_dim } { 0pt }
+ \coffin_join:NnnNnnnn \g__asmejour_firstrowauthorblock_coffin { vc } { r } \g__asmejour_title_coffin {vc } { l } { \dim_use:N \g__asmejour_coffinsep_dim } { 0pt }
+ \coffin_typeset:Nnnnn \g__asmejour_firstrowauthorblock_coffin { l }{t }{ 0pt }{ 0pt }
+}
+
+\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Corresponding author gets footnote #1 and subsequent notes are 2, 3, ....
@@ -1069,7 +1089,7 @@
\setlength{\@AbstractSep}{12.5mm}
\NewDocumentCommand\AbstractSep{m}{\setlength{\@AbstractSep}{#1}}
-\NewDocumentCommand{\MakeTitlePage}{}{%
+\NewDocumentCommand{\@MakeTitlePage}{}{%
\thispagestyle{title}%
\ifasmejour@singlecolumn % 2024/07/20
\@ConstructAuthorBlock
@@ -1097,8 +1117,8 @@
%% Provide compatibility with titling commands from standard LaTeX article class
-\RenewDocumentCommand{\maketitle}{}{\MakeTitlePage}
-\RenewDocumentCommand{\title}{}{\SetTitle}
+\RenewDocumentCommand{\maketitle}{}{\@MakeTitlePage}
+\RenewDocumentCommand{\title}{}{\@SetTitle}
\RenewDocumentEnvironment{abstract}{+b}{\gdef\tmp{\@SetAbstract{#1}}\aftergroup\tmp}{\ignorespaces}
%% Thanks to DPC for the suggestion of \gdef\tmp{...
diff --git a/Master/texmf-dist/tex/latex/asypictureb/asypictureB.sty b/Master/texmf-dist/tex/latex/asypictureb/asypictureB.sty
index cfca65bcdd6..8d2cc4cabc8 100644
--- a/Master/texmf-dist/tex/latex/asypictureb/asypictureB.sty
+++ b/Master/texmf-dist/tex/latex/asypictureb/asypictureB.sty
@@ -7,14 +7,15 @@
%% asypictureB.dtx (with options: `package')
%% ----------------------------------------------------------------
%% asypictureB --- user-friendly integration of Asymptote into LaTeX
-%% E-mail: cstaats at math.uchicago.edu
+%% E-mail: charles dot staats dot iii at gmail.com
%% Released under the LaTeX Project Public License v1.3c or later
%% See http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{asypictureB}
- [2014/04/15 v0.3 user-friendly integration of Asymptote into LaTeX]
+ [2025/01/26 v0.4 user-friendly integration of Asymptote into LaTeX]
+
\RequirePackage{fancyvrb}
\RequirePackage{graphicx}
\RequirePackage{pgfkeys}
@@ -29,16 +30,16 @@
\def\ASYPIC@shell{18}
\newcommand{\shell@execute}{\immediate\write\ASYPIC@shell}
\else
-\newwrite\ASYPIC@shell
-\ifwindows
- \openout\ASYPIC@shell=\jobname-compile_asy.bat\relax
-\else
- \openout\ASYPIC@shell=\jobname-compile_asy.sh\relax
-\fi
-\newcommand{\shell@execute}[1]{{%
-\edef\temp{#1}%
+ \newwrite\ASYPIC@shell
+ \ifwindows
+ \openout\ASYPIC@shell=\jobname-compile_asy.txt\relax
+ \else
+ \openout\ASYPIC@shell=\jobname-compile_asy.sh\relax
+ \fi
+ \newcommand{\shell@execute}[1]{{%
+ \edef\temp{#1}%
\write\expandafter\ASYPIC@shell\expandafter{\temp}%
-}}
+ }}
\fi
\ifshellescape
@@ -138,13 +139,13 @@ settings.prc = false;
\ifcsname\tempmacroname\endcsname%% if \ASYPIC@name@... is defined
\edef\oldnum{\csname\tempmacroname\endcsname}%
\edef\@asypicturename%
- {\scantokens\expandafter{\jobname\noexpand}-#1__\oldnum}%
+ {\jobname-#1__\oldnum}%
\expandafter\xdef\csname\tempmacroname\endcsname%
{\the\numexpr\oldnum+1\relax}%
\edef\ASYPIC@current@num{\csname\tempmacroname\endcsname}%
\else%% This is the first time this name is being used.
\edef\@asypicturename%
- {\scantokens\expandafter{\jobname\noexpand}-#1}%
+ {\jobname-#1}%
\expandafter\gdef\csname\tempmacroname\endcsname{1}%
\fi%
\xdef\asylistingfile{\@asypicturename.asy}
@@ -189,8 +190,8 @@ settings.prc = false;
\@asyrepeatfalse%
\asyfilechangedtrue%
\else% Not at the end of either file in this case
- \read\@asyreadold to \oldfileline%
- \read\@asyreadnew to \newfileline%
+ \readline\@asyreadold to \oldfileline%
+ \readline\@asyreadnew to \newfileline%
\ifx\oldfileline\newfileline%
\@asyrepeattrue%
\else
@@ -219,46 +220,52 @@ settings.prc = false;
\shell@execute{asy -noV \@asypicturename.asy 2> \@asyerrorfilename}%
\openin\@asyreadold=\@asyerrorfilename\relax%
\ifeof\@asyreadold%
- \closein\@asyreadold%
+ \closein\@asyreadold% Error log does not exist.
\else%
- \def\@asyerrormessage{^^JPossible Asymptote error:^^J}%
- \read\@asyreadold to \@asyerrorfirstline%
- \g@addto@macro\@asyerrormessage{\@asyerrorfirstline^^J}%
- \ifeof\@asyreadold%
- \closein\@asyreadold%
- \else%
- {\endlinechar=`^^J%
- \loop%
- \readline\@asyreadold to \@asytempmessage%
- \expandafter\g@addto@macro\expandafter%
- \@asyerrormessage\expandafter{\@asytempmessage^^J}%
- \unless\ifeof\@asyreadold\repeat%
+ \def\@asyerrormessage{^^J}%
+ %Create command to process line of log file to figure
+ %out the Asymptote file line number:
+ \edef\@asy@temp{%
+ \def\noexpand\@asy@processerrorline####1\detokenize\expandafter{%
+ \@asypicturename.asy:%
}%
- \closein\@asyreadold%
- \g@addto@macro\@asyerrormessage{^^J}%
- %Next: Need to process \@asyerrorfirstline to figure
- %out the Asymptote file line number
- \expandafter\def\expandafter\@asy@processerrorline%
- \expandafter##\expandafter1\@asypicturename.asy:%
- ##2.##3\relax{\xdef\@asy@errorline{\numexpr##2\relax}}%
- {\expandafter\expandafter\expandafter%
- \@asy@processerrorline\expandafter%
- \@asyerrorfirstline\@asypicturename.asy: -5.\relax%
- }% The surrounding braces should prevent too much from
- % being gobbled in case the pattern doesn't match.
+ }%
+ \@asy@temp##2.##3:\relax{%
+ \xdef\@asy@errorlinenumber{\numexpr##2\relax}}%
+ %
+ \gdef\@asy@errorlinenumber{-5}%
+ {%
+ \endlinechar=-1%
+ \loop\unless\ifeof\@asyreadold%
+ \readline\@asyreadold to \@asyerrorcurrentline%
+ \ifnum\@asy@errorlinenumber=-5%
+ {\expandafter\expandafter\expandafter%
+ \@asy@processerrorline\expandafter%
+ % Suffix provides default of -5:
+ \@asyerrorcurrentline\detokenize\expandafter%
+ {\@asypicturename.asy:} -5.1:\relax%
+ }%
+ \fi%
+ \expandafter\g@addto@macro\expandafter\@asyerrormessage%
+ \expandafter{\@asyerrorcurrentline^^J}%
+ \repeat%
+ }%
+ \closein\@asyreadold%
+ \ifnum\@asy@errorlinenumber=-5% No error
+ \else%
\openin\@asyreadold\@asypicturename.asy\relax%
\edef\numlinesout{5}
\setcounter{@asy@linenumber}{\numlinesout}
- \loop\ifnum\value{@asy@linenumber}<\@asy@errorline%
+ \loop\ifnum\value{@asy@linenumber}<\@asy@errorlinenumber%
\readline\@asyreadold to \temp%
\stepcounter{@asy@linenumber}%
\repeat%
%
- \addtocounter{@asy@linenumber}{-\numlinesout}
+ \addtocounter{@asy@linenumber}{-\numlinesout}%
%
{%
\endlinechar=`^^J%
- \loop\ifnum\value{@asy@linenumber}<\@asy@errorline%
+ \loop\ifnum\value{@asy@linenumber}<\@asy@errorlinenumber%
\stepcounter{@asy@linenumber}%
\edef\temp/{\arabic{@asy@linenumber}}%
\expandafter\g@addto@macro\expandafter%
@@ -271,11 +278,11 @@ settings.prc = false;
\closein\@asyreadold%
\PackageError{asypictureB}{\@asyerrormessage}{%
The Asymptote run described above
- gave a non-empty error log. I have^^J
+ gave a non-empty error log. I have^^J%
reproduced the error log and attempted
- to print the five lines leading^^J
+ to print the five lines leading^^J%
up to the error. Press enter or return
- to continue, and then fix your^^J
+ to continue, and then fix your^^J%
Asymptote code when this run is done.
}%
\fi%
@@ -296,7 +303,7 @@ settings.prc = false;
{\deletefile{\@asypicturename.pdf}}{}%
\IfFileExists{\@asypicturename.eps}%
{\deletefile{\@asypicturename.eps}}{}%
- \copyfile{\@tempasyfile.asy}{\@asypicturename.asy}
+ \copyfile{\@tempasyfile.asy}{\@asypicturename.asy}%
\ASYPIC@runasy%
\fi%
\asyset{graphic options}%
@@ -329,10 +336,10 @@ settings.prc = false;
%% This work is "maintained" (as per LPPL maintenance status) by
%% Charles Staats III.
%%
-%% This work consists of the file asypictureB.dtx
-%% and the derived files asypictureB.ins,
-%% asypictureB.pdf, and
-%% asypictureB.sty.
+%% This work consists of the files asypictureB.dtx and
+%% asypictureB.ins,
+%% and the derived files asypictureB.pdf and
+%% asypictureB.sty.
%%
%%
%% End of file `asypictureB.sty'.
diff --git a/Master/texmf-dist/tex/latex/atableau/atableau.sty b/Master/texmf-dist/tex/latex/atableau/atableau.sty
new file mode 100644
index 00000000000..05692c3550f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/atableau/atableau.sty
@@ -0,0 +1,3394 @@
+% ---------------------------------------------------------------------------
+%
+% atableau - Andrew Mathas (C) 2022-2025
+%
+% A latex package for symmetric group combinatorics, including:
+% - abacuses
+% - multitableau
+% - ribbon tableau
+% - shifted tableau
+% - skew tableau
+% - tableaux
+% - tabloids
+% - Young diagrams
+%
+% E-mail: andrew.mathas@gmail.com
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+
+% ---------------------------------------------------------------------------
+
+% load TikZ early to avoid \ExplSyntaxOn...\ExplSyntaxOff wrappers
+\RequirePackage{tikz}
+\usetikzlibrary{shapes.geometric,matrix}
+
+% Correct for negative signs in contents being too long to fit in a tableau
+\RequirePackage{amsfonts} %% <- also included by amssymb
+\DeclareMathSymbol{\shortminus}{\mathbin}{AMSa}{"39}
+
+% ---------------------------------------------------------------------------
+% package date and version
+\def\atableau@version{2.1.0}
+\def\atableau@release{2025-01-24}
+
+\providecommand\DeclareRelease[3]{}
+\providecommand\DeclareCurrentRelease[2]{}
+\DeclareRelease{\atableau@version}{\atableau@release}{atableau.sty}
+\DeclareCurrentRelease{}{\atableau@release}
+
+\ProvidesExplPackage{atableau} {\atableau@release} {\atableau@version}
+ {A latex package for symmetric group combinatorics }
+
+
+% Give a warning if the LaTeX installation is older than TeXLive 2024
+\IfFormatAtLeastTF { 2024-04-13 } {}
+{
+ \PackageWarning {aTableau}
+ {
+ The~aTableau~package~uses~many~recent~features~from~
+ ~LaTeX3.~Your~LaTeX ~installation~appears~to~be~quite~,
+ ~which~might~result~in~errors~from~the ~package.~You~
+ ~may~need~to~update~your~LaTeX~installation~to~at~
+ ~least~TeXLive~2024
+ }
+}
+
+% ---------------------------------------------------------------------------
+% package errors
+
+\msg_new:nnnn { aTableau } { empty-tableau-row }
+ { Row~#1~of~tableau~is~empty }
+ { Empty~tableau~rows~are~not~supported}
+
+\msg_new:nnnn { aTableau } { missing-runner-labels }
+{ Your~abacus~has~a~different~number~of~runners~and~runner~labels }
+{ The~number~of~labels~given~to~the~'runner~labels'~must~match~the~number~of~abacus~runners }
+
+\msg_new:nnnn { aTableau } { missing-style }
+{ The~'#1'~styles~key~is~missing~a~value }
+{ The~styles~key~accepts~a~comma~separated~list~of~key-value~pairs~for~defining~TikZ~styles }
+
+\msg_new:nnnn { aTableau } { invalid-dots}
+ { Invalid~specifications~for~dotted~rows~or~dotted~cols }
+ { You~can~only~use~these~options~for~interior~rows~and~columns~in~the~diagrams}
+
+\msg_new:nnnn { aTableau } { invalid-ribbon-head }
+ { Invalid~ribbon~head:~the~row~and~column~indices~of~the~ribbon~head~must~be~given:~'#1'}
+ { Ribbon~specifications~must~be~for~the~form:~(optional~ribbon~style)[style]<row><col>+sequences~of~r's~and~c's~with~style}
+
+\msg_new:nnnn { aTableau } { invalid-ribbon-specification }
+ { Invalid~ribbon~specification~'#1':~expecting~r~or~c. }
+ { Ribbon~specifications~must~be~for~the~form:~[optional~style]<row><col>~sequences~of~r's and~c's~with~style}
+
+\msg_new:nnnn { aTableau } { unrecognised-abacus-label }
+ { Unrecognised~abacus~label~'#1'. }
+ { The~possible~abacus~labels~are~betas,~residues,~rows~and~shape}
+
+\msg_new:nnnn { aTableau } { unrecognised-entries }
+ { Unrecognised~entries~value:~'#1' }
+ { The~possible~diagram~values~for~entries~are:~contents,~first,~hooks,~last,~and~residues}
+
+\msg_new:nnnn { aTableau } { unrecognised-style }
+ { Unrecognised~style:~'#1' }
+ { The~available~tableau~styles~are~australian,~english,~french~and~ukrainian~and~the~available~abacus~styles~are~north,~south,~east~and~west~}
+
+\msg_new:nnnn { aTableau } { unknown-abacus-ends }
+ { Unrecognised~abacus~ends~setting:~'#1' }
+ { The~supported~ends~for~the~top/bottom~of~the~abacus~are:~-,~_~,.~,|,~and~>}
+
+\msg_new:nnnn { aTableau } { unknown-cartan }
+ { Unrecognised~Cartan~type~'#1' }
+ { The~supported~Cartan~types~are~(affine)~types~A,~AA,~C~and~DD}
+
+\msg_new:nnnn { aTableau } { unknown-baseline }
+ { Unrecognised~baseline~option:~'#1' }
+ { The~supported~halign~options~are~bottom,~centre,~left,~and~top }
+
+\msg_new:nnnn { aTableau } { unknown-halign }
+ { Unrecognised~halign~option:~'#1' }
+ { The~supported~halign~options~are~centre,~left,~and~right }
+
+\msg_new:nnnn { aTableau } { unknown-top }
+ { Unrecognised~format~for~abacus~top;~'#1' }
+ { The~supported~formats~are:~blank,~dots,~and~frame}
+
+\msg_new:nnnn { aTableau } { unknown-valign }
+ { Unrecognised~valign~option:~#1 }
+ { The~supported~valign~options~are~bottom,~centre~and~top }
+
+% ---------------------------------------------------------------------------
+% package variables
+
+\bool_new:N \l__atableau_beta_numbers_bool% true if specifying beta numbers
+\bool_new:N \l__atableau_frame_bool % true if drawing framed abacus runners
+\bool_new:N \l__atableau_conjugate_bool % true if drawing conjugate tableau/diagram
+\bool_new:N \l__atableau_border_bool % true if drawing tableau border
+\bool_new:N \l__atableau_boxes_bool % true if drawing inner tableau walls
+\bool_new:N \l__atableau_shifted_bool % true if a shifted tableau
+\bool_new:N \l__atableau_skew_border_bool % true if drawing skew border
+\bool_new:N \l__atableau_skew_boxes_bool % true if drawing skew boxes
+\bool_new:N \l__atableau_tabloid_bool % true if a tabloid
+\bool_new:N \l__atableau_separators_bool % true if drawing separators for multishapes
+
+\fp_new:N \l__atableau_ab_col_dx_fp % change in x-coordinate between columns in an abacus
+\fp_new:N \l__atableau_ab_col_dy_fp % change in y-coordinate between columns in an abacus
+\fp_new:N \l__atableau_ab_row_dx_fp % change in x-coordinate between rows in an abacus
+\fp_new:N \l__atableau_ab_row_dy_fp % change in y-coordinate between rows in an abacus
+\fp_new:N \l__atableau_abacus_ht_fp % height of the tableaux nodes/separation between abacus beads
+\fp_new:N \l__atableau_abacus_wd_fp % width of the tableaux nodes/separation between abacus runners
+\fp_new:N \l__atableau_bead_size_fp % bead radius
+\fp_new:N \l__atableau_box_ht_fp % height of a tableau box
+\fp_new:N \l__atableau_box_wd_fp % width of a tableau box
+\fp_new:N \l__atableau_rows_fp % number of rows in abacus/tableau
+\fp_new:N \l__atableau_separation_fp % distance between multitableau
+\fp_new:N \l__atableau_script_fp % scaling when used as a subscript
+\fp_new:N \l__atableau_sscriptscript_fp % scaling when used as a subsubscript
+\fp_new:N \l__atableau_tab_col_dx_fp % change in x-coordinate between columns in a tableau
+\fp_new:N \l__atableau_tab_col_dy_fp % change in y-coordinate between columns in a tableau
+\fp_new:N \l__atableau_tab_row_dx_fp % change in x-coordinate between rows in a tableau
+\fp_new:N \l__atableau_tab_row_dy_fp % change in y-coordinate between rows in a tableau
+\fp_new:N \l__atableau_tick_length_fp % half the length of the abacus ticks
+\fp_new:N \l__atableau_x_fp % x-coordinate of the origin of the diagram
+\fp_new:N \l__atableau_xa_fp % scratch x-coordinate of a node/bead
+\fp_new:N \l__atableau_xb_fp % scratch x-coordinate of a node/bead
+\fp_new:N \l__atableau_xl_fp % x-coordinate of a tableau node/bead
+\fp_new:N \l__atableau_xmax_fp % maximum x-coordinate for multidiagrams and multitableaux
+\fp_new:N \l__atableau_xoffsets_seq % x-offsets for the (1,1)-nodes in a multi-tableau
+\fp_new:N \l__atableau_xscale_fp % scaling in the x-direction
+\fp_new:N \l__atableau_xsep_fp % x-coordinate difference to next separator for multishapes
+\fp_new:N \l__atableau_y_fp % y-coordinate of the origin of the diagram
+\fp_new:N \l__atableau_ya_fp % scratch y-coordinate of a node/bead
+\fp_new:N \l__atableau_yb_fp % scratch y-coordinate of a node/bead
+\fp_new:N \l__atableau_yl_fp % y-coordinate of a tableau node/bead
+\fp_new:N \l__atableau_ymax_fp % maximum y-coordinate for multidiagrams and multitableaux
+\fp_new:N \l__atableau_ymin_fp % minimum y-coordinate for multidiagrams and multitableaux
+\fp_new:N \l__atableau_yoffsets_seq % t-offsets for the (1,1)-nodes in a multi-tableau
+\fp_new:N \l__atableau_yscale_fp % scaling in the x-direction
+
+\int_new:N \l__atableau_beads_int % number of beads in abacus
+\int_new:N \l__atableau_charge_int % charge for current component
+\int_new:N \l__atableau_col_int % current column index
+\int_new:N \l__atableau_c_int % scratch column counter
+\int_new:N \l__atableau_cols_int % number of columns in a multitableau/abacus
+\int_new:N \l__atableau_component_int % component in multidiagrams and tableaux
+\int_new:N \l__atableau_e_int % quantum characteristic
+\int_new:N \l__atableau_row_int % current row index
+\int_new:N \l__atableau_r_int % scratch row counter
+\int_new:N \l__atableau_rows_int % number of rows in abacus
+
+\seq_new:N \l__atableau_charge_seq % sequences of charges = residue/content offset
+\seq_new:N \l__atableau_component_seq % multipartition
+\seq_new:N \l__atableau_conjugate_seq % conjugate partition
+\seq_new:N \l__atableau_dotted_cols_seq % columns with dots
+\seq_new:N \l__atableau_dotted_rows_seq % rows with dots
+\seq_new:N \l__atableau_multidotted_cols_seq % sequence of dotted columns for multi shapes
+\seq_new:N \l__atableau_multidotted_rows_seq % sequence of dotted rows for multi shapes
+\seq_new:N \l__atableau_multilabel_seq % a sequence of labels for multi shapes
+\seq_new:N \l__atableau_multipaths_seq % a sequence of ribbon paths for multi shapes
+\seq_new:N \l__atableau_multiribbons_seq % a sequence of ribbon for multi shapes
+\seq_new:N \l__atableau_multiskew_seq % a sequence of skew partitions for multi shapes
+\seq_new:N \l__atableau_multisnobs_seq % a sequence of snobs for multi shapes
+\seq_new:N \l__atableau_paths_seq % ribbon paths to add to tableau/diagram
+\seq_new:N \l__atableau_rcs_seq % ribbon row, column indices
+\seq_new:N \l__atableau_ribbons_seq % ribbons to add to tableau/diagram
+\seq_new:N \l__atableau_runner_labels_seq % labels for the abacus runners
+\seq_new:N \l__atableau_shape_seq % a partition
+\seq_new:N \l__atableau_skew_seq % the inner partition for a skew shape
+\seq_new:N \l__atableau_snobs_seq % snob ribbons to add to tableau/diagram
+\seq_new:N \l__atableau_styles_seq % ribbon/bead styles
+\seq_new:N \l__atableau_texts_seq % ribbon/bead texts
+\seq_new:N \l__atableau_xsep_seq % x-coordinates separators for multishapes
+
+\tl_new:N \l__atableau_abacus_bottom_tl % specifies the bottom of the abacus
+\tl_new:N \l__atableau_abacus_top_tl % specifies the top of the abacus
+\tl_new:N \l__atableau_bead_font_tl % font for abacus beads
+\tl_new:N \l__atableau_bead_shape_tl % shape of abacus beads
+\tl_new:N \l__atableau_bead_text_tl % text colour of abacus beads
+\tl_new:N \l__atableau_bead_tl % abacus head colour
+\tl_new:N \l__atableau_border_tl % diagram border
+\tl_new:N \l__atableau_box_fill_tl % fill colour for tableau boxes
+\tl_new:N \l__atableau_box_font_tl % font for tableau boxes
+\tl_new:N \l__atableau_box_shape_tl % shape of tableau boxes
+\tl_new:N \l__atableau_box_text_tl % text colour for tableau boxes
+\tl_new:N \l__atableau_capture_exp_tl % contains captured exponent
+\tl_new:N \l__atableau_capture_part_tl % contains captured part
+\tl_new:N \l__atableau_capture_style_tl % contains captured style
+\tl_new:N \l__atableau_capture_txt_tl % contains captured text
+\tl_new:N \l__atableau_cartan_tl % the Cartan type
+\tl_new:N \l__atableau_empty_tl % symbol for empty tableau/diagram in a multi tableau/diagram
+\tl_new:N \l__atableau_entries_tl % custom entries in tableau
+\tl_new:N \l__atableau_inner_tl % colour of tableau inner walls
+\tl_new:N \l__atableau_label_tl % a label to print on an tableau/diagram
+\tl_new:N \l__atableau_left_delimiter_tl % the left delimiter for multitableau and multidiagrams
+\tl_new:N \l__atableau_multiprefix_tl % prefix used when constructing multinode names
+\tl_new:N \l__atableau_name_tl % name of a tableau node
+\tl_new:N \l__atableau_outer_tl % colour of tableau outer walls
+\tl_new:N \l__atableau_path_box_tl % node for ribbon paths
+\tl_new:N \l__atableau_prefix_tl % prefix for node names
+\tl_new:N \l__atableau_ribbon_box_tl % box entry for ribbons
+\tl_new:N \l__atableau_ribbon_style_tl % optional style used for current path< ribbon or snob
+\tl_new:N \l__atableau_ribbon_path_tl % a ribbon in the ribbon tableau
+\tl_new:N \l__atableau_ribbon_type_tl % the type of ribbon, which is either path, ribbon or snob
+\tl_new:N \l__atableau_right_delimiter_tl % the right delimiter for multitableau and multidiagrams
+\tl_new:N \l__atableau_runner_tl % abacus runner colour
+\tl_new:N \l__atableau_snob_box_tl % box entry for snobs
+\tl_new:N \l__atableau_separator_fg_tl % foreground colour of the separator
+\tl_new:N \l__atableau_separator_tl % the separator between multitableau: | or , or ...
+\tl_new:N \l__atableau_shading_tl % the type of shading to use for the abacus beads
+\tl_new:N \l__atableau_show_tl % automatic tableau/bead labelling
+\tl_new:N \l__atableau_skew_border_tl % skew border colour
+\tl_new:N \l__atableau_starstyle_tl % current star style in use
+\tl_new:N \l__atableau_styled_nodes_tl % token lists of nodes with non-default style
+\tl_new:N \l__atableau_tick_tl % abacus tick colour
+\tl_new:N \l__atableau_tikz_after_tl % TikZ commands for after the diagram
+\tl_new:N \l__atableau_tikz_before_tl % TikZ commands for before the diagram
+\tl_new:N \l__atableau_tikzpicture_tl % TikZ environment settings
+\tl_new:N \l__atableau_unstyled_nodes_tl % token lists of nodes with efault style
+
+% ---------------------------------------------------------------------------
+% Variable defaults -- most defaults are given in the settings: \keys_set:nn {aTableau} {...}
+\tl_set:Nn \l__atableau_ribbon_type_tl {ribbon} % by default, ribbons are ribbons
+
+% ---------------------------------------------------------------------------
+% default colours
+\definecolor{aTableauMain} {HTML} {00008B}
+\definecolor{aTableauInner} {HTML} {0073e6}
+\definecolor{aTableauSkew} {HTML} {818589}
+\definecolor{aTableauSkewFill} {HTML} {F8F8F8}
+\definecolor{aTableauStarStyle} {HTML} {E6F7FF}
+
+% ---------------------------------------------------------------------------
+% TikZ styling of aTableau components
+
+\tikzset{
+ % -----------------------------------------------------------------------
+ % Allow ball shading to be disabled via shade=none.
+ % The essential idea comes from https://tex.stackexchange.com/a/85750/234252
+ no~shade/.code={ \tikz@addmode{\tikz@mode@shadefalse } },
+ % -----------------------------------------------------------------------
+ % all tikz settings are in the aTableau family
+ aTableau/.is~family,
+ aTableau/.cd,
+ % -----------------------------------------------------------------------
+ % Styles for tableaux and diagrams
+ % -----------------------------------------------------------------------
+ % inner tableau wall
+ innerWall/.style = {
+ line~cap = rect,
+ thin,
+ },
+ % outer tableau wall
+ borderStyle/.style = {
+ % shifting allows us to use \__atableau_set_box_coordinates:nnn when drawing the border
+ shift = {(\fp_eval:n{-(\l__atableau_tab_row_dx_fp+\l__atableau_tab_col_dx_fp)*\l__atableau_box_wd_fp/2},
+ \fp_eval:n{-(\l__atableau_tab_row_dy_fp+\l__atableau_tab_col_dy_fp)*\l__atableau_box_ht_fp/2})},
+ line~cap = rect,
+ very~thick,
+ draw = \l__atableau_outer_tl,
+ },
+ % skew walls
+ skewBorder/.style = {
+ % shifting allows us to use \__atableau_set_box_coordinates:nnn when drawing the border
+ shift = {(\fp_eval:n{-(\l__atableau_tab_row_dx_fp+\l__atableau_tab_col_dx_fp)*\l__atableau_box_wd_fp/2},
+ \fp_eval:n{-(\l__atableau_tab_row_dy_fp+\l__atableau_tab_col_dy_fp)*\l__atableau_box_ht_fp/2})},
+ draw = \l__atableau_skew_border_tl,
+ thick
+ },
+ % styles for tableau boxes in Young diagrams
+ % -----------------------------------------------------------------------
+ node/.style = {
+ anchor = center,
+ inner~sep = 0pt,
+ minimum~height = \fp_use:N \l__atableau_box_ht_fp cm,
+ minimum~width = \fp_use:N \l__atableau_box_wd_fp cm,
+ shape = \l__atableau_box_shape_tl,
+ font = \l__atableau_box_font_tl,
+ text = \l__atableau_box_text_tl,
+ },
+ boxStyle/.style = {
+ aTableau/node,
+ aTableau/innerWall,
+ draw = \l__atableau_inner_tl,
+ fill = \l__atableau_box_fill_tl,
+ },
+ % default skew box style
+ skewBox/.style = {
+ aTableau/node,
+ aTableau/innerWall,
+ draw = \l__atableau_skew_border_tl,
+ fill = aTableauSkewFill,
+ },
+ % box styles for paths, ribbons and snobs
+ % -----------------------------------------------------------------------
+ pathBox/.style = {
+ aTableau/node,
+ draw = none, % border disabled by default
+ },
+ ribbonBox/.style = {
+ aTableau/node,
+ },
+ snobBox/.style = {
+ aTableau/node,
+ },
+ % styles for paths, ribbons and snobs
+ % -----------------------------------------------------------------------
+ % default path style
+ pathStyle/.style = {
+ draw = \l__atableau_inner_tl,
+ },
+ ribbonStyle/.style = {
+ aTableau/innerWall,
+ draw = \l__atableau_inner_tl,
+ },
+ % default ribbon style
+ snobStyle/.style = {
+ aTableau/innerWall,
+ draw = \l__atableau_inner_tl,
+ },
+ % label styles
+ % -----------------------------------------------------------------------
+ labelStyle/.style = {
+ shift = {(\fp_eval:n{-0.2*(\l__atableau_tab_row_dx_fp+\l__atableau_tab_col_dx_fp)*\l__atableau_box_wd_fp},
+ \fp_eval:n{-0.2*(\l__atableau_tab_row_dy_fp+\l__atableau_tab_col_dy_fp)*\l__atableau_box_ht_fp})},
+ font=\scriptsize,
+ text = \l__atableau_inner_tl,
+ },
+ % tableau star style
+ % -----------------------------------------------------------------------
+ tableauStarStyle/.style = {
+ fill = aTableauStarStyle,
+ text = \l__atableau_box_text_tl,
+ },
+ % cleared boxes for dotted rows and columns
+ % -----------------------------------------------------------------------
+ clearBoxes/.style = {
+ draw = white,
+ fill = white,
+ },
+ % dots used for dotted rows and columns
+ % -----------------------------------------------------------------------
+ dottedLine/.style = {
+ densely~dotted,
+ thick,
+ draw = \l__atableau_outer_tl,
+ },
+ % separators and delimiters
+ % -----------------------------------------------------------------------
+ separatorSymbol/.style = {
+ text = \l__atableau_separator_fg_tl,
+ },
+ % default separator line style
+ separatorLine/.style = {
+ thick,
+ draw = \l__atableau_separator_fg_tl,
+ },
+ % Delimiters around multitableaux and multidiagrams. To change the colour
+ % of the delimiters we need to use \path[aTableau/delimiterPath] (x,y) node...
+ delimiterStyle/.style = {
+ align = center,
+ inner~sep = 0pt,
+ minimum~height = \fp_use:N\l__atableau_ymax_fp cm,
+ },
+ % hack to set the colour
+ delimiterPath/.style = {
+ every~delimiter/.style = { \l__atableau_separator_fg_tl, },
+ },
+ leftDelimiter/.style = {
+ aTableau/delimiterStyle,
+ left~delimiter = \l__atableau_left_delimiter_tl,
+ xshift = 2pt,
+ },
+ rightDelimiter/.style = {
+ aTableau/delimiterStyle,
+ right~delimiter = \l__atableau_right_delimiter_tl,
+ xshift = -2pt,
+ },
+ % -----------------------------------------------------------------------
+ % abacus beads and runners
+ % -----------------------------------------------------------------------
+ % abacus beads
+ beadStyle/.style = {
+ ball~color = \l__atableau_bead_tl,
+ font = \l__atableau_bead_font_tl,
+ minimum~height = \fp_to_decimal:N \l__atableau_bead_size_fp cm,
+ minimum~width = \fp_to_decimal:N \l__atableau_bead_size_fp cm,
+ shading = \l__atableau_shading_tl,
+ shape = \l__atableau_bead_shape_tl,
+ text = \l__atableau_bead_text_tl,
+ anchor = center,
+ inner~sep = 0pt,
+ },
+ % abacus runners
+ runnerStyle/.style = {
+ line~cap = rect,
+ very~thick,
+ draw = \l__atableau_runner_tl,
+ },
+ runnerLabelStyle/.style = {
+ aTableau/node,
+ text = aTableauInner,
+ font = \scriptsize
+ },
+ % style for the top and bottom of the abacus
+ abacusEnds/.style = {
+ aTableau/runnerStyle,
+ },
+ % abacus star style
+ abacusStarStyle/.style = {
+ text = aTableauMain,
+ ball~color = aTableauStarStyle,
+ },
+ % abacus ticks
+ tickStyle/.style = {
+ draw = \l__atableau_tick_tl,
+ semithick,
+ },
+ % the named coordinate for an abacus tick
+ namedTick/.style = {
+ minimum~height = \fp_to_decimal:N \l__atableau_bead_size_fp cm,
+ minimum~width = \fp_to_decimal:N \l__atableau_bead_size_fp cm,
+ shape = \l__atableau_bead_shape_tl,
+ draw=none,
+ }
+}
+
+% ---------------------------------------------------------------------------
+
+% usage: \__atableau_set_style:nn {abacus|tableau} {style}
+% sets the basic styles for the tableaux and abacus commands
+\cs_new:Npn \__atableau_set_style:nn #1 #2
+{
+ \str_case:enF { #1/#2 }
+ {
+ {tableau/english}
+ {
+ \fp_set:Nn \l__atableau_tab_col_dx_fp {1}
+ \fp_set:Nn \l__atableau_tab_col_dy_fp {0}
+ \fp_set:Nn \l__atableau_tab_row_dx_fp {0}
+ \fp_set:Nn \l__atableau_tab_row_dy_fp {-1}
+ \fp_set:Nn \l__atableau_box_ht_fp {\l__atableau_yscale_fp*0.5}
+ \fp_set:Nn \l__atableau_box_wd_fp {\l__atableau_xscale_fp*0.5}
+ \tl_set:Nn \l__atableau_box_shape_tl {rectangle}
+ }
+
+ {tableau/french}
+ {
+ \fp_set:Nn \l__atableau_tab_col_dx_fp {1}
+ \fp_set:Nn \l__atableau_tab_col_dy_fp {0}
+ \fp_set:Nn \l__atableau_tab_row_dx_fp {0}
+ \fp_set:Nn \l__atableau_tab_row_dy_fp {1}
+ \fp_set:Nn \l__atableau_box_ht_fp {\l__atableau_yscale_fp*0.5}
+ \fp_set:Nn \l__atableau_box_wd_fp {\l__atableau_xscale_fp*0.5}
+ \tl_set:Nn \l__atableau_box_shape_tl {rectangle}
+ }
+
+ {tableau/australian}
+ {
+ \fp_set:Nn \l__atableau_tab_col_dx_fp {0.5}
+ \fp_set:Nn \l__atableau_tab_col_dy_fp {-0.5}
+ \fp_set:Nn \l__atableau_tab_row_dx_fp {-0.5}
+ \fp_set:Nn \l__atableau_tab_row_dy_fp {-0.5}
+ \fp_set:Nn \l__atableau_box_ht_fp {\l__atableau_yscale_fp*0.7012} % 1/sqrt(2)
+ \fp_set:Nn \l__atableau_box_wd_fp {\l__atableau_xscale_fp*0.7012}
+ \tl_set:Nn \l__atableau_box_shape_tl {diamond}
+ }
+
+ {tableau/ukrainian}
+ {
+ \fp_set:Nn \l__atableau_tab_col_dx_fp {0.5}
+ \fp_set:Nn \l__atableau_tab_col_dy_fp {0.5}
+ \fp_set:Nn \l__atableau_tab_row_dx_fp {-0.5}
+ \fp_set:Nn \l__atableau_tab_row_dy_fp {0.5}
+ \fp_set:Nn \l__atableau_box_ht_fp {\l__atableau_yscale_fp*0.7012}
+ \fp_set:Nn \l__atableau_box_wd_fp {\l__atableau_xscale_fp*0.7012}
+ \tl_set:Nn \l__atableau_box_shape_tl {diamond}
+ }
+
+ {abacus/south}
+ {
+ \fp_set:Nn \l__atableau_ab_col_dx_fp {1}
+ \fp_set:Nn \l__atableau_ab_col_dy_fp {0}
+ \fp_set:Nn \l__atableau_ab_row_dx_fp {0}
+ \fp_set:Nn \l__atableau_ab_row_dy_fp {-1}
+ \fp_set:Nn \l__atableau_abacus_ht_fp {\l__atableau_yscale_fp*0.5}
+ \fp_set:Nn \l__atableau_abacus_wd_fp {\l__atableau_xscale_fp*0.5}
+ \tl_set:Nn \l__atableau_bead_shape_tl {circle}
+ }
+
+ {abacus/north}
+ {
+ \fp_set:Nn \l__atableau_ab_col_dx_fp {1}
+ \fp_set:Nn \l__atableau_ab_col_dy_fp {0}
+ \fp_set:Nn \l__atableau_ab_row_dx_fp {0}
+ \fp_set:Nn \l__atableau_ab_row_dy_fp {1}
+ \tl_set:Nn \l__atableau_bead_shape_tl {circle}
+ \fp_set:Nn \l__atableau_abacus_wd_fp {\l__atableau_xscale_fp*0.5}
+ \fp_set:Nn \l__atableau_abacus_ht_fp {\l__atableau_yscale_fp*0.5}
+ }
+
+ {abacus/east}
+ {
+ \fp_set:Nn \l__atableau_ab_col_dx_fp {0}
+ \fp_set:Nn \l__atableau_ab_col_dy_fp {-1}
+ \fp_set:Nn \l__atableau_ab_row_dx_fp {1}
+ \fp_set:Nn \l__atableau_ab_row_dy_fp {0}
+ \tl_set:Nn \l__atableau_bead_shape_tl {circle}
+ \fp_set:Nn \l__atableau_abacus_wd_fp {\l__atableau_xscale_fp*0.5}
+ \fp_set:Nn \l__atableau_abacus_ht_fp {\l__atableau_yscale_fp*0.5}
+ }
+
+ {abacus/west}
+ {
+ \fp_set:Nn \l__atableau_ab_col_dx_fp {0}
+ \fp_set:Nn \l__atableau_ab_col_dy_fp {1}
+ \fp_set:Nn \l__atableau_ab_row_dx_fp {-1}
+ \fp_set:Nn \l__atableau_ab_row_dy_fp {0}
+ \tl_set:Nn \l__atableau_bead_shape_tl {circle}
+ \fp_set:Nn \l__atableau_abacus_wd_fp {\l__atableau_xscale_fp*0.5}
+ \fp_set:Nn \l__atableau_abacus_ht_fp {\l__atableau_yscale_fp*0.5}
+ }
+ }
+ {
+ \msg_error:nnx {aTableau} {unrecognised-style} {#1/#2}
+ }
+}
+
+% usage: \__atableau_set_xscale:n {x-scale} : rescale the x-dimension
+\cs_new_protected:Npn \__atableau_set_xscale:n #1
+{
+ \fp_set:Nn \l__atableau_xscale_fp {#1} % makes scale persistent
+ \fp_set:Nn \l__atableau_abacus_wd_fp {#1*\l__atableau_abacus_wd_fp}
+ \fp_set:Nn \l__atableau_box_wd_fp {#1*\l__atableau_box_wd_fp}
+ \fp_set:Nn \l__atableau_separation_fp {#1*\l__atableau_separation_fp }
+}
+% usage: \__atableau_set_yscale:n {y-scale} : rescale the y-dimension
+\cs_new_protected:Npn \__atableau_set_yscale:n #1
+{
+ \fp_set:Nn \l__atableau_yscale_fp {#1} % makes scale persistent
+ \fp_set:Nn \l__atableau_abacus_ht_fp {#1*\l__atableau_abacus_ht_fp}
+ \fp_set:Nn \l__atableau_box_ht_fp {#1*\l__atableau_box_ht_fp}
+}
+
+
+% usage: \__atableau_set_delimiters:nn {left delimiter} {right delimiter}
+\cs_new_protected:Npn \__atableau_set_delimiters:nn #1 #2
+{
+ \tl_set:Nn \l__atableau_left_delimiter_tl #1
+ \tl_set:Nn \l__atableau_right_delimiter_tl #2
+}
+
+% usage: \__atableau_set_multiseq_key:nn {name} {value}
+% Set up a sequence, for keys used with multishapes
+\cs_new_protected:Npn \__atableau_set_multiseq_key:nn #1 #2
+{
+ \tl_if_in:nnTF {#2} {|}
+ {
+ % unpack the ribbons into \l__atableau_multiribbons_seq
+ \seq_set_split:cnn {l__atableau_multi#1_seq} {|} {#2}
+ }
+ { \seq_set_from_clist:cn {l__atableau_#1_seq} {#2} }
+}
+
+% usage: \__atableau_set_abacus_ends:nn {top} {top}
+% Set the abacus ends abacus_top and abacus_bottom and give an error
+% message if the ends are not one of =,-,.,|,>
+\cs_new_protected:Npn \__atableau_set_abacus_ends:nn #1 #2
+{
+ \tl_set:Nn \l__atableau_abacus_top_tl {#1}
+ \str_if_in:nnF {-.>|\c_underscore_str*} {#1}
+ { \msg_error:nne {aTableau} {unknown-abacus-ends} {#1}}
+
+ \tl_set:Nn \l__atableau_abacus_bottom_tl {#2}
+ \str_if_in:nnF {-.>|\c_underscore_str*} {#2}
+ { \msg_error:nne {aTableau} {unknown-abacus-ends} {#2}}
+}
+
+% ---------------------------------------------------------------------------
+% command variants
+
+\cs_generate_variant:Nn \fp_add:Nn {NV}
+\cs_generate_variant:Nn \int_set:Nn {No}
+\cs_generate_variant:Nn \seq_put_right:Nn {Nx}
+\cs_generate_variant:Nn \seq_set_item:Nnn {NVx, Nnx, Nox}
+\cs_generate_variant:Nn \seq_set_from_clist:Nn {co}
+\cs_generate_variant:Nn \seq_set_split:Nnn {cnn}
+
+\cs_generate_variant:Nn \__atableau_add_ribbon:n {V}
+\cs_generate_variant:Nn \__atableau_count_row:n {x}
+\cs_generate_variant:Nn \__atableau_draw_tableau:n {V}
+\cs_generate_variant:Nn \__atableau_entry:n {x}
+\cs_generate_variant:Nn \__atableau_draw_abacus_end:nnn {noo}
+\cs_generate_variant:Nn \__atableau_set_bead_coordinates:nnn {nVV, nnV, noo, non, noV}
+\cs_generate_variant:Nn \__atableau_set_box_coordinates:nnn {nVV, nVn, noo }
+\cs_generate_variant:Nn \__atableau_set_partition:nn {no}
+\cs_generate_variant:Nn \__atableau_tl_put_right_braced:Nn { NV, Nx, No, Ne }
+
+% ---------------------------------------------------------------------------
+% utility functions
+
+% usage: \__atableau_tl_put_right_braced:Nn #1 #2
+% Add braces around #2 and append to #1
+\cs_new_protected:Nn \__atableau_tl_put_right_braced:Nn
+{
+ \tl_put_right:Nn #1 { {#2} }
+}
+
+% ---------------------------------------------------------------------------
+% expandable residue functions
+
+% usage: \__atableau_residue_A:nn
+% Computes the residue of #1 mod #2. This is positive integer remainder when
+% dividing by #2. As with \int_mod:n, the result is left in the input stream.
+\cs_new:Npn \__atableau_residue_A:nn #1 #2
+{
+ \int_compare:nNnTF {#1} > {0}
+ { \int_mod:nn {#1} {#2} }
+ { \int_eval:n {\int_mod:nn {#2 + \int_mod:nn {#1} {#2}} {#2}} }% \int_mod:nn is negative
+}
+
+% usage: \__atableau_residue_C:nn
+% Computes the residue of #1 in affine type C. When e=3 this residue pattern is
+% 0 1 2 3 2 1 0 1 2 3 2 1 0 1 ...
+% As with \int_mod:n, the result is left in the input stream.
+\cs_new:Npn \__atableau_residue_C:nn #1 #2
+{
+ \int_compare:nNnTF {#1} < {0}
+ { % #1 is negative
+ \int_compare:nNnTF {\int_mod:nn {#1} {2*#2}} < {-#2}
+ { \int_eval:n { 2*#2 + \int_mod:nn {#1} {2*#2} } }
+ { \int_eval:n { \int_mod:nn {-#1} {2*#2} } }
+ }
+ { % #1 is non-negative
+ \int_compare:nNnTF {\int_mod:nn {#1} {2*#2}} > {#2}
+ { \int_eval:n { 2*#2 - \int_mod:nn {#1} {2*#2} } }
+ { \int_eval:n { \int_mod:nn {#1} {2*#2} } }
+ }
+}
+
+% usage: \__atableau_residue_AA:nn
+% Computes the residue of #1 in twisted type A. When e=3 this residue pattern is
+% 0 1 2 3 3 2 1 0 1 2 3 3 2 1 0 1 ...
+% As with \int_mod:n, the result is left in the input stream.
+\cs_new:Npn \__atableau_residue_AA:nn #1 #2
+{
+ \int_compare:nNnTF {#1} < {0}
+ { % #1 is negative
+ \int_compare:nNnTF {\int_mod:nn {#1} {2*#2+1}} < {-#2}
+ { \int_eval:n { 2*#2+1 + \int_mod:nn {#1} {2*#2+1}} }
+ { \int_eval:n { \int_mod:nn {-#1} {2*#2+1} } }
+ }
+ { % #1 is non-negative
+ \int_compare:nNnTF {\int_mod:nn {#1} {2*#2+1}} > {#2}
+ { \int_eval:n { 2*#2+1 - \int_mod:nn {#1} {2*#2+1} } }
+ { \int_eval:n { \int_mod:nn {#1} {2*#2+1} } }
+ }
+}
+
+% usage: \__atableau_residue_D:nn
+% Computes the residue of #1 in affine type C. When e=3 this residue pattern is
+% 0 1 2 3 3 2 1 0 0 1 2 3 3 2 1 0 0 1 ...
+% As with \int_mod:n, the result is left in the input stream.
+\cs_new:Npn \__atableau_residue_DD:nn #1 #2
+{
+ \int_compare:nNnTF {#1} < {0}
+ { % #1 is negative
+ \int_compare:nNnTF {\int_mod:nn {#1} {2*#2+2}} < {-#2}
+ { \int_eval:n {2*#2+1 + \int_mod:nn {#1} {2*#2+2}} }
+ { \int_eval:n { -\int_mod:nn {#1} {2*#2+2} } }
+ }
+ { % #1 is non-negative
+ \int_compare:nNnTF {\int_mod:nn {#1} {2*#2+2}} > {#2}
+ { \int_eval:n {2*#2+1- \int_mod:nn {#1} {2*#2+2} } }
+ { \int_eval:n { \int_mod:nn {#1} {2*#2+2} } }
+ }
+}
+
+
+% use type A residues by default
+\cs_set_eq:NN \__atableau_residue:nn \__atableau_residue_A:nn
+
+% ---------------------------------------------------------------------------
+% Parsing input
+
+% \seq_set_split:Nnn does not respect braces around singleton entries
+% such as in { 1345, 8{10}, {11}, {12} }, with the result that {11}
+% and {12} are treated as {1}{1} and {1}{2}, respectively. As this is
+% not what we want, we use \peek_charcode:NTF to do this ourselves.
+\cs_new_protected:Npn \__atableau_peek_tableau:w
+{
+ \peek_remove_spaces:n { % ignore spaces
+ \peek_charcode_remove:NTF ,
+ {
+ % record the column index in the shape for drawing the border
+ \seq_put_right:NV \l__atableau_shape_seq \l__atableau_col_int
+
+ % increment the row index
+ \int_incr:N \l__atableau_row_int
+
+ % reset the column index, and update the skew shape for shifted tableau
+ \bool_if:NTF \l__atableau_shifted_bool
+ {
+ \seq_put_right:No \l__atableau_skew_seq {\int_use:N \l__atableau_row_int}
+ \int_set_eq:NN \l__atableau_col_int \l__atableau_row_int
+
+ }
+ {
+ \int_set:Nn \l__atableau_col_int { 0\seq_item:Nn \l__atableau_skew_seq {\l__atableau_row_int+1}}
+ }
+
+ % look for the next entry
+ \__atableau_peek_tableau:w
+ }
+ {
+ \__atableau_peek_style:nw {draw_entry:nn}
+ }
+ }
+}
+
+% ---------------------------------------------------------------------------
+
+% usage: \__atableau_peek_style:nw {command suffix}
+% Read the next entry in the input sequence, with any optional style given by
+% a * or [...], and then pass this data to the command \__atableau_#1.
+\cs_new_protected:Npn \__atableau_peek_style:nw #1
+{
+ \peek_remove_spaces:n { % ignore spaces
+ \peek_charcode:NTF [
+ { \use:c{__atableau_#1} }
+ {
+ \peek_charcode_remove:NTF *
+ { \use:c{__atableau_#1} [\l__atableau_starstyle_tl] }
+ { \use:c{__atableau_#1} [] }
+ }
+ }
+}
+
+% To parse the bead specifications used by \Abacus we need to accept the
+% a "bead specification" of the following form
+% [style]m^k_txt
+% where the [style] could simply be a *, the m is an integer, a part of the
+% partition being constructed, the k its exponent and txt is the text for the
+% node. Except for m, all of of these components are optional, with the
+% exponent being 1 if it is omitted. As is customary, the order of the
+% superscript and subscript is interchangeable. To parse these expressions we
+% first use \__atableau_peek_style:nw to strip off the style specification, via
+% \__atableau_record_style:nn, and then pass between \__atableau_peek_beads:nw
+% and \__atableau_record:nn to look ahead for the characters ^ and _ to decide
+% which of the following token lists the next character is added to:
+\cs_new_protected:Npn \__atableau_record_style:nn [#1] #2
+{
+ % clear the bead token lists
+ \tl_set:Nn \l__atableau_capture_style_tl {#1}
+ \tl_set:Nn \l__atableau_capture_part_tl {#2}
+ \tl_clear:N \l__atableau_capture_exp_tl
+ \tl_clear:N \l__atableau_capture_txt_tl
+ \__atableau_peek_beads:nw {part}
+}
+
+% look for a caret or an underscore and pass on to \__atableau_record_bead:nn
+\cs_new_protected:Npn \__atableau_peek_beads:nw #1
+{
+ \peek_remove_spaces:n { % ignore spaces
+ \peek_charcode_remove:NTF _
+ { \__atableau_record_bead:nn {txt} {}}
+ {
+ \peek_charcode_remove:NTF ^ { \__atableau_record_bead:nn {exp} {}}
+ { \__atableau_record_bead:nn {#1} }
+ }
+ }
+}
+
+% #1 is one of part, exp or txt
+\cs_new_protected:Npn \__atableau_record_bead:nn #1 #2
+{
+ \quark_if_recursion_tail_stop_do:nn {#2}
+ {
+ % the data in the sequences \l__atableau_capture_exp_tl times
+ \tl_if_empty:NT \l__atableau_capture_exp_tl { \tl_set:Nn \l__atableau_capture_exp_tl {1}}
+ \int_step_inline:nn { \l__atableau_capture_exp_tl }
+ {
+ \int_incr:N \l__atableau_beads_int
+ \seq_put_right:NV \l__atableau_shape_seq \l__atableau_capture_part_tl
+ \seq_put_right:NV \l__atableau_texts_seq \l__atableau_capture_txt_tl
+ \seq_put_right:NV \l__atableau_styles_seq \l__atableau_capture_style_tl
+ }
+ }
+ \tl_put_right:cn {l__atableau_capture_#1_tl} {#2}
+ \__atableau_peek_beads:nw {#1}
+}
+
+
+% usage: \__atableau_count_entries:nn [style] {entry}
+% Count the number of entries in the row, storing the result in c_int
+\cs_new_protected:Npn \__atableau_count_entries:nn [#1] #2
+{
+ % exit when we reach the end of the row
+ \quark_if_recursion_tail_stop:n {#2}
+
+ \int_incr:N \l__atableau_c_int
+ \__atableau_peek_style:nw {count_entries:nn}
+}
+
+% usage: \__atableau_count_row:n {entries}
+\cs_new_protected:Npn \__atableau_count_row:n #1
+{
+ \__atableau_peek_style:nw {count_entries:nn} #1 \q_recursion_tail \q_recursion_stop
+}
+
+% ---------------------------------------------------------------------------
+% creating custom diagrams
+
+% usage: \__atableau_compute_conjugate_partition:N {seq}
+% compute the conjugate partition of <seq> and store in \l__atableau_conjugate_seq
+\cs_new_protected:Npn \__atableau_compute_conjugate_partition:N #1
+{
+ \seq_clear:N \l__atableau_conjugate_seq
+ \int_zero:N \l_tmpa_int % previous part
+ \int_set:No \l__atableau_r_int {\seq_count:N #1}
+ \int_while_do:nn {\l__atableau_r_int > 0}
+ {
+ \int_set:No \l_tmpb_int {\seq_item:NV #1 \l__atableau_r_int }
+ \int_step_inline:nn { \l_tmpb_int - \l_tmpa_int }
+ {
+ \seq_put_right:NV \l__atableau_conjugate_seq \l__atableau_r_int
+ }
+ \int_set_eq:NN \l_tmpa_int \l_tmpb_int
+ \int_decr:N \l__atableau_r_int
+ }
+}
+
+% usage: \__atableau_set_partition:nn {shape|skew} {csv for partition}
+% This function allows the partition to be given either as a comma separated
+% list of integers, or as a comma separated list of integers with exponents
+% giving the multiplicity of each part. For example, 4,3,3,3,2 and 4,3^3,2
+% are both supported.
+% TODO? Rewrite using quarks?
+\cs_new_protected:Npn \__atableau_set_partition:nn #1 #2
+{
+ \seq_clear:c {l__atableau_#1_seq}
+ \clist_map_inline:nn {#2} { \__atableau_add_to_partition:nn {#1} {##1} }
+}
+
+% add parts to the partition \l__atableau_#1_seq given input
+% of the form k or k^r
+\cs_new_protected:Npn \__atableau_add_to_partition:nn #1 #2
+{
+ % split #1 on ^: the trailing ^1 sets the exponent to 1 if it's omitted
+ \seq_set_split:Nnn \l_tmpa_seq {^} {#2 ^1}
+ % given k or k^r, set \l_tmpa_int=k and \l_tmpb_int=r, where r=1 with input k
+ \seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl % part
+ \seq_pop_left:NN \l_tmpa_seq \l_tmpb_tl % exponent
+ % now add \l_tmpa_int to \l__atableau_#1_seq b times
+ \int_step_inline:nn {\l_tmpb_tl} { \seq_put_right:ce {l__atableau_#1_seq} {\l_tmpa_tl} }
+}
+
+% usage: \__atableau_diagram_for_shape:N {partition}
+% Young diagrams are drawn using the \Tableau command by generating
+% a sequence of ~ for the partition. For example,
+% it replaces the sequence 3,2,2,1 with
+% the dot-sequence ~~~,~~,~~,~,
+\cs_new_protected:Npn \__atableau_diagram_for_shape:N #1
+{
+ \tl_clear:N \l__atableau_entries_tl
+ \tl_set:Nn \l_tmpb_tl {}
+ \seq_map_inline:Nn #1
+ {
+ \tl_put_right:No \l__atableau_entries_tl \l_tmpb_tl
+ \tl_put_right:Nx \l__atableau_entries_tl { \prg_replicate:nn {##1} {{{~}}} }
+ \tl_set:Nn \l_tmpb_tl {,}
+ }
+}
+
+% usage: \__atableau_shape_to_content:Nn {partition sequence}
+% Return the content sequence to for a tableau of this shape
+\cs_new_protected:Npn \__atableau_shape_to_content:N #1
+{
+ \tl_clear:N \l__atableau_entries_tl
+ \int_zero:N \l__atableau_row_int
+ \tl_set:Nn \l_tmpb_tl {}
+ \seq_map_inline:Nn #1
+ {
+ \tl_put_right:No \l__atableau_entries_tl \l_tmpb_tl
+ \int_incr:N \l__atableau_row_int
+ \int_step_inline:nn {##1}
+ {
+ \int_set:Nn \l_tmpa_int { \l__atableau_charge_int + ####1 - \l__atableau_row_int + 0\seq_item:NV \l__atableau_skew_seq \l__atableau_row_int }
+ \int_compare:nNnTF {\l_tmpa_int} < {0}
+ { \__atableau_tl_put_right_braced:Ne \l__atableau_entries_tl {\exp_not:N\shortminus\int_eval:n{-\l_tmpa_int}} }
+ { \__atableau_tl_put_right_braced:No \l__atableau_entries_tl {\int_use:N \l_tmpa_int} }
+ }
+ \tl_set:Nn \l_tmpb_tl {,}
+ }
+}
+
+% Diagrams with show=last are drawn using the \Tableau command, with
+% usage: \__atableau_shape_to_last:N {partition sequence}
+\cs_new_protected:Npn \__atableau_shape_to_last:N #1
+{
+ % compute conjugate of #1 as \l__atableau_conjugate_seq
+ %\__atableau_compute_conjugate_partition:N #1
+
+ % initialise \l_tmpc_seq -- should not be necessary but otherwise \seq_item:NV fails
+ \seq_clear:N \l_tmpc_seq % construct the tableau in this sequence and then decant
+ \seq_map_inline:Nn #1 {\seq_put_right:Nn \l_tmpc_seq {}}
+
+ % value of last entry added to the tableau
+ \int_set:Nn \l__atableau_c_int {\l__atableau_charge_int}
+
+ % length of the first row of the partition/seq #1
+ \int_set:Nn \l__atableau_row_int {0\seq_item:Nn #1 {1}}
+
+ \int_step_inline:nn {\l__atableau_row_int} % ##1 is the column index
+ {
+ \int_zero:N \l__atableau_r_int % r_int is the row index
+ \seq_map_inline:Nn #1 % ####1 is the rth entry of the partition #1
+ {
+ \int_incr:N \l__atableau_r_int
+ \tl_set:Nn \l_tmpa_tl { 0\seq_item:NV \l__atableau_skew_seq \l__atableau_r_int}
+ \bool_if:nT { \int_compare_p:nNn {##1} > {\l_tmpa_tl} && \int_compare_p:nNn {\l_tmpa_tl+####1+1} > {##1}}
+ {
+ \int_incr:N \l__atableau_c_int
+ \tl_set:No \l_tmpa_tl { \seq_item:Nn \l_tmpc_seq {\l__atableau_r_int} }
+ \__atableau_tl_put_right_braced:No \l_tmpa_tl {\int_use:N \l__atableau_c_int}
+ \seq_set_item:NVx \l_tmpc_seq \l__atableau_r_int {\l_tmpa_tl}
+ }
+ }
+ }
+
+ % finally, unpack \l_tmpc_tl into l__atableau_entries_tl
+ \tl_clear:N \l__atableau_entries_tl
+ \tl_set:Nn \l_tmpb_tl {}
+ \seq_map_inline:Nn \l_tmpc_seq {
+ \tl_put_right:No \l__atableau_entries_tl \l_tmpb_tl
+ \tl_put_right:Nn \l__atableau_entries_tl {##1}
+ \tl_set:Nn \l_tmpb_tl {,}
+ }
+}
+
+% Diagrams with show=first are drawn using the \Tableau command, with
+% usage: \__atableau_shape_to_first:N {partition sequence}
+\cs_new_protected:Npn \__atableau_shape_to_first:N #1
+{
+ \tl_clear:N \l__atableau_entries_tl
+ \int_set:Nn \l__atableau_r_int {\l__atableau_charge_int}
+ \tl_set:Nn \l_tmpb_tl {}
+ \seq_map_inline:Nn #1
+ {
+ \tl_put_right:No \l__atableau_entries_tl \l_tmpb_tl
+ \int_step_inline:nn {##1}
+ {
+ \int_incr:N \l__atableau_r_int
+ \__atableau_tl_put_right_braced:NV \l__atableau_entries_tl \l__atableau_r_int
+ }
+ \tl_set:Nn \l_tmpb_tl {,}
+ }
+ \seq_put_right:No \l__atableau_charge_seq {\int_use:N\l__atableau_r_int}
+}
+
+% usage: \__atableau_shape_to_hook:N {partition_seq}
+% Return a string for the hooks length tableau
+% Diagrams with show=hooks are drawn using the \Tableau command
+\cs_new_protected:Npn \__atableau_shape_to_hook:N #1
+{
+ % now construct the hook tableau
+ \tl_clear:N \l__atableau_entries_tl
+ \bool_if:NTF \l__atableau_shifted_bool
+ { % shifted tableau
+ % initialise l_tmpc_seq because we will construct the entries in it and unpack at the end
+ \seq_clear:N \l_tmpc_seq
+ \seq_map_inline:Nn #1 {\seq_put_right:Nn \l_tmpc_seq {}}
+ \int_set:Nn \l__atableau_col_int { 0\seq_item:Nn #1 {1} } % length of first row
+ \int_step_inline:nn { \l__atableau_col_int }
+ { % add hooks column by column, starting by determining the rows in columns ##1
+ \int_zero:N \l__atableau_row_int
+ \seq_map_inline:Nn #1
+ {
+ \bool_if:nT { \int_compare_p:nNn {##1} > {\l__atableau_row_int} && \int_compare_p:nNn {####1+\l__atableau_row_int+1} > {##1} }
+ {
+ \int_incr:N \l__atableau_row_int
+ }
+ }
+ % record length of row col+1
+ \int_set:Nn \l_tmpa_int {0\seq_item:Nn #1 {##1+1}}
+ % loop through rows 1,...,row and add the hook lengths
+ \int_step_inline:nn {\l__atableau_row_int}
+ {
+ \tl_set:Nx \l_tmpa_tl { \seq_item:Nn \l_tmpc_seq {####1} }
+ \tl_set:Nx \l_tmpb_tl { \int_eval:n {\seq_item:Nn #1 {####1} + \l__atableau_row_int - ##1 + \l_tmpa_int } }
+ \__atableau_tl_put_right_braced:NV \l_tmpa_tl \l_tmpb_tl
+ \seq_set_item:Nnx \l_tmpc_seq {####1} {\l_tmpa_tl}
+
+ }
+ }
+ \tl_set:Nx \l__atableau_entries_tl { \seq_use:Nn \l_tmpc_seq {,} }
+ }
+ { % unshifted (although could be skew, when all bets are off...)
+ % compute conjugate of #1 as \l__atableau_conjugate_seq
+ \int_zero:N \l__atableau_row_int
+ \tl_set:Nn \l_tmpb_tl {}
+ \__atableau_compute_conjugate_partition:N #1
+ \seq_map_inline:Nn #1
+ {
+ \tl_put_right:No \l__atableau_entries_tl \l_tmpb_tl
+ \int_incr:N \l__atableau_row_int
+ \int_step_inline:nn {##1}
+ {
+ \tl_set:Ne \l_tmpc_tl { \int_eval:n {##1+\seq_item:Nn \l__atableau_conjugate_seq {####1} -\l__atableau_row_int-####1+1} }
+ \__atableau_tl_put_right_braced:NV \l__atableau_entries_tl \l_tmpc_tl
+ }
+ \tl_set:Nn \l_tmpb_tl {,}
+ }
+ }
+}
+
+% Residue diagrams are drawn using the \Tableau command, with
+% usage: \__atableau_shape_to_residue:N {partition sequence}
+\cs_new_protected:Npn \__atableau_shape_to_residue:N #1
+{
+ \tl_clear:N \l__atableau_entries_tl
+ \int_zero:N \l__atableau_row_int
+ \tl_set:Nn \l_tmpb_tl {}
+ \seq_map_inline:Nn #1
+ {
+ \tl_put_right:No \l__atableau_entries_tl \l_tmpb_tl
+ \int_incr:N \l__atableau_row_int
+ \int_step_inline:nn {##1}
+ {
+ \int_set:Nn \l_tmpa_int { \l__atableau_charge_int + ####1 - \l__atableau_row_int }
+ \int_add:Nn \l_tmpa_int { + 0\seq_item:NV \l__atableau_skew_seq \l__atableau_row_int }
+ \tl_set:Nx \l_tmpa_tl { \__atableau_residue:nn { \l_tmpa_int } {\l__atableau_e_int} }
+ \__atableau_tl_put_right_braced:Nx \l__atableau_entries_tl { \l_tmpa_tl }
+ }
+ \tl_set:Nn \l_tmpb_tl {,}
+ }
+}
+
+% ---------------------------------------------------------------------------
+% draw diagram border
+
+% usage: \__atableau_draw_border:nn #1 #2 {name of sequence} {name of style}
+% The name of the sequence is either skew or shape
+\cs_new_protected:Npn \__atableau_draw_border:nn #1 #2
+{
+ \int_zero:N \l__atableau_r_int % row index
+ \int_zero:N \l__atableau_c_int % column index
+ \tl_clear:N \l__atableau_border_tl % will hold the border
+
+ \seq_map_inline:cn {l__atableau_#1_seq}
+ {
+ % compute the endpoints of this row
+ \str_if_eq:nnF {skew} {#1}
+ {
+ \int_set:Nn \l__atableau_c_int { 0\seq_item:Nn \l__atableau_skew_seq {\l__atableau_r_int+1}}
+ \bool_if:nT { \l__atableau_tabloid_bool && \int_compare_p:nNn {\l__atableau_r_int} > {0} }
+ {
+ \int_set:Nn \l__atableau_c_int { \int_min:nn {\l__atableau_c_int} {0\seq_item:Nn \l__atableau_skew_seq {\l__atableau_r_int}} }
+ }
+ }
+ \__atableau_set_box_coordinates:nVV {a} \l__atableau_r_int \l__atableau_c_int
+ \__atableau_set_box_coordinates:nVn {b} \l__atableau_r_int {##1}
+ \bool_if:nTF { \int_compare_p:n {\l__atableau_r_int = 0} || \l__atableau_tabloid_bool }
+ {
+ % add line along "top" of the row
+ \tl_put_right:Nx \l__atableau_border_tl {(\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)--(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp)}
+ \__atableau_add_row_ends:
+ }
+ {
+ % add lines for second and later rows
+ \tl_put_left:Nx \l__atableau_border_tl {(\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)--}
+ \tl_put_right:Nx \l__atableau_border_tl {--(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp)}
+ \__atableau_add_row_ends:
+ }
+ \int_incr:N \l__atableau_r_int
+ }
+
+ % draw the border that we have constructed
+ \tl_if_empty:NF \l__atableau_border_tl
+ {
+ % fill in the last line
+ \bool_if:nT { \l__atableau_tabloid_bool && \int_compare_p:nNn {\l__atableau_r_int} > {0} }
+ {
+ \int_set:Nn \l__atableau_c_int { 0\seq_item:NV \l__atableau_skew_seq \l__atableau_r_int }
+ \__atableau_set_box_coordinates:nVV {a} \l__atableau_r_int \l__atableau_c_int
+ }
+ \tl_put_right:Nx \l__atableau_border_tl {(\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)--(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp)}
+ % draw the border
+ \draw[aTableau/#2] \l__atableau_border_tl;
+ }
+}
+
+
+% usage: \__atableau_remove_dotted_tableau_rows:
+% Poke some holes in the border for the rows in dotted_rows_seq
+\cs_new_protected:Nn \__atableau_remove_dotted_tableau_rows:
+{
+ % To collect repeated rows in dotted_rows_seq
+ % we use \seq_map_inline:Nn and then compare ##1 with \l__atableau_r_int to
+ % determine if this is a new row.
+
+ % take a copy of \l__atableau_dotted_rows_seq so that the pop_left's below
+ % do not destroy it
+ \seq_set_eq:NN \l_tmpb_seq \l__atableau_dotted_rows_seq
+ \bool_do_until:nn { \seq_if_empty_p:N \l_tmpb_seq }
+ {
+ \seq_pop_left:NN \l_tmpb_seq \l_tmpa_tl
+ \int_set:Nn \l__atableau_row_int {\l_tmpa_tl}
+ \int_set:Nn \l__atableau_r_int {\l__atableau_row_int+1}
+
+ % LaTeX3 does not provide \seq_if_in_p:NN, so ...
+ \bool_set_true:N \l_tmpa_bool
+ \bool_do_while:nn { \l_tmpa_bool }
+ {
+ \int_set:Nn \l_tmpa_int {0\seq_item:Nn \l_tmpb_seq 1}
+ \int_compare:nNnTF {\l__atableau_r_int} = {\l_tmpa_int}
+ {
+ \seq_pop_left:NN \l_tmpb_seq \l_tmpa_tl
+ \int_incr:N \l__atableau_r_int
+ }
+ { \bool_set_false:N \l_tmpa_bool }
+ }
+
+ % We want to blank out the rows between the four coordinates
+ % a=(row,tmpa) .... b=(row,col)
+ % | |
+ % c=(r,tmpb) .... d=(r,c)
+
+ % set tmpa and tmpb to the column index for rows row and r, respectively
+ \int_set:No \l__atableau_col_int { 0\seq_item:NV \l__atableau_shape_seq \l__atableau_row_int } % mu_row
+ \int_set:No \l__atableau_c_int { 0\seq_item:NV \l__atableau_shape_seq \l__atableau_r_int } % mu_r
+
+ % shift in col-direction
+ \fp_set:Nn \l__atableau_xa_fp {\l__atableau_tab_col_dx_fp*\l__atableau_box_wd_fp}
+ \fp_set:Nn \l__atableau_ya_fp {\l__atableau_tab_col_dy_fp*\l__atableau_box_ht_fp}
+
+ % shift in row-direction
+ \fp_set:Nn \l__atableau_xb_fp {\l__atableau_tab_row_dx_fp*\l__atableau_box_wd_fp}
+ \fp_set:Nn \l__atableau_yb_fp {\l__atableau_tab_row_dy_fp*\l__atableau_box_ht_fp}
+
+ % a draw between the coordinates a, b, c, d
+ \__atableau_set_box_coordinates:noo {l} {\l__atableau_row_int-1} {\l__atableau_col_int-1} % point b
+
+ \draw[aTableau/clearBoxes]
+ (\fp_eval:n{\l__atableau_xl_fp+0.58*\l__atableau_xa_fp-0.42*\l__atableau_xb_fp},
+ \fp_eval:n{\l__atableau_yl_fp+0.58*\l__atableau_ya_fp-0.42*\l__atableau_yb_fp})
+ --++(\fp_eval:n{(\l__atableau_r_int-\l__atableau_row_int)*\l__atableau_xb_fp},
+ \fp_eval:n{(\l__atableau_r_int-\l__atableau_row_int)*\l__atableau_yb_fp})
+ --++(\fp_eval:n{(\l__atableau_c_int-\l__atableau_col_int)*\l__atableau_xa_fp},
+ \fp_eval:n{(\l__atableau_c_int-\l__atableau_col_int)*\l__atableau_ya_fp})
+ --++(\fp_eval:n{-0.12*\l__atableau_xb_fp}, \fp_eval:n{-0.12*\l__atableau_yb_fp})
+ --++(\fp_eval:n{-(0.15+\l__atableau_c_int)*\l__atableau_xa_fp}, \fp_eval:n{-(0.15+\l__atableau_c_int)*\l__atableau_ya_fp})
+ --++(\fp_eval:n{(\l__atableau_row_int-\l__atableau_r_int+0.12)*\l__atableau_xb_fp},
+ \fp_eval:n{(\l__atableau_row_int-\l__atableau_r_int+0.12)*\l__atableau_yb_fp})
+ --cycle
+ ;
+
+ % finally, we need to add dots between b and d
+ \draw[aTableau/dottedLine]
+ (\fp_eval:n{0.5*\l__atableau_xa_fp-0.5*\l__atableau_xb_fp+\l__atableau_xl_fp},
+ \fp_eval:n{0.5*\l__atableau_ya_fp-0.5*\l__atableau_yb_fp+\l__atableau_yl_fp})
+ --++(\fp_eval:n{(\l__atableau_c_int-\l__atableau_col_int)*\l__atableau_xa_fp+(\l__atableau_r_int-\l__atableau_row_int)*\l__atableau_xb_fp},
+ \fp_eval:n{(\l__atableau_c_int-\l__atableau_col_int)*\l__atableau_ya_fp+(\l__atableau_r_int-\l__atableau_row_int)*\l__atableau_yb_fp})
+ ;
+
+ % and between a and c, which is trickier as the skew shape plays a role
+ \int_set:No \l_tmpa_int { \int_eval:n {0\seq_item:Nn \l__atableau_skew_seq \l__atableau_row_int} }
+ \int_set:No \l_tmpb_int { \int_eval:n {\int_max:nn{\l_tmpa_int}{0\seq_item:Nn \l__atableau_skew_seq \l__atableau_r_int} }}
+ \int_decr:N \l__atableau_row_int
+ \int_decr:N \l__atableau_r_int
+ \draw[aTableau/dottedLine]
+ (\fp_eval:n{\l__atableau_x_fp+\l_tmpa_int*\l__atableau_xa_fp+\l__atableau_row_int*\l__atableau_xb_fp},
+ \fp_eval:n{\l__atableau_y_fp+\l_tmpa_int*\l__atableau_ya_fp+\l__atableau_row_int*\l__atableau_yb_fp})
+ --(\fp_eval:n{\l__atableau_x_fp+\l_tmpb_int*\l__atableau_xa_fp+\l__atableau_r_int*\l__atableau_xb_fp},
+ \fp_eval:n{\l__atableau_y_fp+\l_tmpb_int*\l__atableau_ya_fp+\l__atableau_r_int*\l__atableau_yb_fp})
+ ;
+
+ \bool_if:nT { \int_compare_p:nNn {\l_tmpa_int}>{0} && \l__atableau_skew_border_bool }
+ {
+ \draw[aTableau/dottedLine,draw=\l__atableau_skew_border_tl]
+ (\fp_eval:n{\l__atableau_x_fp+\l__atableau_row_int*\l__atableau_xb_fp},
+ \fp_eval:n{\l__atableau_y_fp+\l__atableau_row_int*\l__atableau_yb_fp})
+ --(\fp_eval:n{\l__atableau_x_fp+\l__atableau_r_int*\l__atableau_xb_fp},
+ \fp_eval:n{\l__atableau_y_fp+\l__atableau_r_int*\l__atableau_yb_fp})
+ ;
+ }
+ }
+}
+
+% usage: \__atableau_remove_dotted_tableau_cols:
+% Poke some holes in the border for the cols in dotted_rows_seq
+\cs_new_protected:Nn \__atableau_remove_dotted_tableau_cols:
+{
+ % To collect repeated columns in dotted_cols_seq
+ % we use \seq_map_inline:Nn and then compare ##1 with \l__atableau_c_int to
+ % determine if this is a new column.
+
+ % conjugate partition and skew shape
+ \__atableau_compute_conjugate_partition:N \l__atableau_skew_seq
+ \seq_set_eq:NN \l_tmpa_seq \l__atableau_conjugate_seq % \l_tmpa_seq is the conjugate skew
+ \__atableau_compute_conjugate_partition:N \l__atableau_shape_seq % conjugate shape
+
+ % take a copy of \l__atableau_dotted_cols_seq so that the pop_left's below
+ % do not destroy it
+ \seq_set_eq:NN \l_tmpb_seq \l__atableau_dotted_cols_seq
+ \bool_do_until:nn { \seq_if_empty_p:N \l_tmpb_seq }
+ {
+ \seq_pop_left:NN \l_tmpb_seq \l_tmpa_tl
+ \int_set:Nn \l__atableau_col_int {\l_tmpa_tl}
+ \int_set:Nn \l__atableau_c_int {\l__atableau_col_int+1}
+
+ % LaTeX3 does not provide \seq_if_in_p:NN, so ...
+ \bool_set_true:N \l_tmpa_bool
+ \bool_do_while:nn { \l_tmpa_bool }
+ {
+ \int_set:Nn \l_tmpa_int {0\seq_item:Nn \l_tmpb_seq 1}
+ \int_compare:nNnTF {\l__atableau_c_int} = {\l_tmpa_int}
+ {
+ \seq_pop_left:NN \l_tmpb_seq \l_tmpa_tl
+ \int_incr:N \l__atableau_c_int
+ }
+ { \bool_set_false:N \l_tmpa_bool }
+ }
+
+ % We want to blank out the rows between the four coordinates
+ % a=(row,tmpa) .... b=(r,tmpb)
+ % | |
+ % c=(row,col) .... d=(r,c)
+
+ % set row and r to the row indices for col and c, respectively
+ \int_set:No \l__atableau_row_int { 0\seq_item:NV \l__atableau_conjugate_seq \l__atableau_col_int } % mu_row
+ \int_set:No \l__atableau_r_int { 0\seq_item:NV \l__atableau_conjugate_seq \l__atableau_c_int } % mu_r
+
+
+ % shift in col-direction
+ \fp_set:Nn \l__atableau_xa_fp {\l__atableau_tab_col_dx_fp*\l__atableau_box_wd_fp}
+ \fp_set:Nn \l__atableau_ya_fp {\l__atableau_tab_col_dy_fp*\l__atableau_box_ht_fp}
+
+ % shift in row-direction
+ \fp_set:Nn \l__atableau_xb_fp {\l__atableau_tab_row_dx_fp*\l__atableau_box_wd_fp}
+ \fp_set:Nn \l__atableau_yb_fp {\l__atableau_tab_row_dy_fp*\l__atableau_box_ht_fp}
+
+ % a draw between the coordinates a, b, c, d
+ \__atableau_set_box_coordinates:noo {l} {\l__atableau_row_int-1} {\l__atableau_col_int-1} % point b
+
+ \draw[aTableau/clearBoxes]
+ (\fp_eval:n{\l__atableau_xl_fp-0.42*\l__atableau_xa_fp+0.58*\l__atableau_xb_fp},
+ \fp_eval:n{\l__atableau_yl_fp-0.42*\l__atableau_ya_fp+0.58*\l__atableau_yb_fp})
+ --++(\fp_eval:n{(\l__atableau_c_int-\l__atableau_col_int)*\l__atableau_xa_fp},
+ \fp_eval:n{(\l__atableau_c_int-\l__atableau_col_int)*\l__atableau_ya_fp})
+ --++(\fp_eval:n{(\l__atableau_r_int-\l__atableau_row_int)*\l__atableau_xb_fp},
+ \fp_eval:n{(\l__atableau_r_int-\l__atableau_row_int)*\l__atableau_yb_fp})
+ --++(\fp_eval:n{-0.12*\l__atableau_xa_fp}, \fp_eval:n{-0.12*\l__atableau_ya_fp})
+ --++(\fp_eval:n{-(0.15+\l__atableau_r_int)*\l__atableau_xb_fp}, \fp_eval:n{-(0.15+\l__atableau_r_int)*\l__atableau_yb_fp})
+ --++(\fp_eval:n{(\l__atableau_col_int-\l__atableau_c_int+0.12)*\l__atableau_xa_fp},
+ \fp_eval:n{(\l__atableau_col_int-\l__atableau_c_int+0.12)*\l__atableau_ya_fp})
+ --cycle
+ ;
+
+ % finally, we need to add dots between b and d
+ \draw[aTableau/dottedLine]
+ (\fp_eval:n{\l__atableau_xl_fp-0.5*\l__atableau_xa_fp+0.5*\l__atableau_xb_fp},
+ \fp_eval:n{\l__atableau_yl_fp-0.5*\l__atableau_ya_fp+0.5*\l__atableau_yb_fp})
+ --++(\fp_eval:n{(\l__atableau_r_int-\l__atableau_row_int)*\l__atableau_xb_fp+(\l__atableau_c_int-\l__atableau_col_int)*\l__atableau_xa_fp},
+ \fp_eval:n{(\l__atableau_r_int-\l__atableau_row_int)*\l__atableau_yb_fp+(\l__atableau_c_int-\l__atableau_col_int)*\l__atableau_ya_fp})
+ ;
+
+ % and between a and c, which is trickier as the skew shape plays a role
+ \int_set:No \l_tmpa_int { \int_eval:n {0\seq_item:Nn \l_tmpa_seq \l__atableau_col_int} }
+ \int_set:No \l_tmpb_int { \int_eval:n {\int_max:nn{\l_tmpa_int}{0\seq_item:Nn \l_tmpa_seq \l__atableau_c_int} }}
+ \int_decr:N \l__atableau_col_int
+ \int_decr:N \l__atableau_c_int
+ \draw[aTableau/dottedLine]
+ (\fp_eval:n{\l__atableau_x_fp+\l_tmpa_int*\l__atableau_xb_fp+\l__atableau_col_int*\l__atableau_xa_fp},
+ \fp_eval:n{\l__atableau_y_fp+\l_tmpa_int*\l__atableau_yb_fp+\l__atableau_col_int*\l__atableau_ya_fp})
+ --(\fp_eval:n{\l__atableau_x_fp+\l_tmpb_int*\l__atableau_xb_fp+\l__atableau_c_int*\l__atableau_xa_fp},
+ \fp_eval:n{\l__atableau_y_fp+\l_tmpb_int*\l__atableau_yb_fp+\l__atableau_c_int*\l__atableau_ya_fp})
+ ;
+
+ \bool_if:nT { \int_compare_p:nNn {\l_tmpa_int}>{0} && \l__atableau_skew_border_bool }
+ {
+ \draw[aTableau/dottedLine,draw=\l__atableau_skew_border_tl]
+ (\fp_eval:n{\l__atableau_x_fp+\l__atableau_col_int*\l__atableau_xa_fp},
+ \fp_eval:n{\l__atableau_y_fp+\l__atableau_col_int*\l__atableau_ya_fp})
+ --(\fp_eval:n{\l__atableau_x_fp+\l__atableau_c_int*\l__atableau_xa_fp},
+ \fp_eval:n{\l__atableau_y_fp+\l__atableau_c_int*\l__atableau_ya_fp})
+ ;
+ }
+ }
+}
+
+% usage: \__atableau_draw_label:
+% Add the label to a diagram
+\cs_new_protected:Nn \__atableau_draw_label:
+{
+ % determine where the label should be attached, which is the (1,1)-box by default
+ \fp_set_eq:NN \l__atableau_xa_fp \l__atableau_x_fp
+ \fp_set_eq:NN \l__atableau_ya_fp \l__atableau_y_fp
+ \bool_if:nF { \seq_if_empty_p:N \l__atableau_skew_seq || \l__atableau_skew_border_bool }
+ { % attach label to the (1,skew_1)-box
+ \tl_set:Nn \l_tmpa_tl { 0\seq_item:Nn \l__atableau_skew_seq {1} }
+ \fp_add:Nn \l__atableau_xa_fp {\l_tmpa_tl*\l__atableau_tab_col_dx_fp*\l__atableau_box_wd_fp}
+ \fp_add:Nn \l__atableau_ya_fp {\l_tmpa_tl*\l__atableau_tab_col_dy_fp*\l__atableau_box_wd_fp}
+ }
+ % add the label
+ \node[aTableau/labelStyle] at (\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp) { \__atableau_entry:n{\l__atableau_label_tl} };
+}
+
+% usage: \__atableau_draw_skew_boxes:
+% Draw the skew boxes using ribbons
+\cs_new_protected:Nn \__atableau_draw_skew_boxes:
+{
+ \group_begin:
+ % override the style of the skew boxes inside this group
+ \tikzset{aTableau/ribbonBox/.style=aTableau/skewBox}
+ \tikzset{aTableau/ribbonStyle/.style={draw=none,fill=none}}
+ \tl_set:Nn \l__atableau_ribbon_type_tl {ribbon} % change ribbon type to ribbon
+ \int_zero:N \l__atableau_r_int
+ \seq_map_inline:Nn \l__atableau_skew_seq
+ {
+ \int_incr:N \l__atableau_r_int
+ \int_compare:nNnT {##1} > {0}
+ {
+ \tl_clear:N \l_tmpa_tl
+ \tl_put_right:Ne \l_tmpa_tl { {\int_use:N \l__atableau_r_int} }
+ \tl_put_right:Ne \l_tmpa_tl { {##1} }
+ \tl_put_right:Ne \l_tmpa_tl { \prg_replicate:nn {##1-1} {c} }
+ \__atableau_add_ribbon:V \l_tmpa_tl
+ }
+ }
+ \group_end:
+}
+
+% usage: \__atableau_add_row_ends: increment the (xa,ya) and (xb,yb) coordinates down
+% one row and add the lines at the left and right hand ends of the row to
+% \l__atableau_border_tl. If this is a tabloid then we only want to add the
+% coordinates but otherwise we join them up
+\cs_new_protected:Nn \__atableau_add_row_ends:
+{
+ \bool_if:NTF \l__atableau_conjugate_bool
+ {
+ % adding to the left-hand side
+ \fp_add:Nn \l__atableau_xa_fp {\l__atableau_tab_col_dx_fp*\l__atableau_box_wd_fp}
+ \fp_add:Nn \l__atableau_ya_fp {\l__atableau_tab_col_dy_fp*\l__atableau_box_ht_fp}
+
+ % adding to the right-hand side
+ \fp_add:Nn \l__atableau_xb_fp {\l__atableau_tab_col_dx_fp*\l__atableau_box_wd_fp}
+ \fp_add:Nn \l__atableau_yb_fp {\l__atableau_tab_col_dy_fp*\l__atableau_box_ht_fp}
+
+ \bool_if:NTF \l__atableau_tabloid_bool
+ {
+ \tl_put_left:Nx \l__atableau_border_tl {--(\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)}
+ \tl_put_right:Nx \l__atableau_border_tl {(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp)--}
+ }
+ {
+ \tl_put_left:Nx \l__atableau_border_tl {(\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)--}
+ \tl_put_right:Nx \l__atableau_border_tl {--(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp)}
+ }
+ }
+ {
+ % adding to the left-hand side
+ \fp_add:Nn \l__atableau_xa_fp {\l__atableau_tab_row_dx_fp*\l__atableau_box_wd_fp}
+ \fp_add:Nn \l__atableau_ya_fp {\l__atableau_tab_row_dy_fp*\l__atableau_box_ht_fp}
+
+ % adding to the right-hand side
+ \fp_add:Nn \l__atableau_xb_fp {\l__atableau_tab_row_dx_fp*\l__atableau_box_wd_fp}
+ \fp_add:Nn \l__atableau_yb_fp {\l__atableau_tab_row_dy_fp*\l__atableau_box_ht_fp}
+
+ \bool_if:NTF \l__atableau_tabloid_bool
+ {
+ \tl_put_left:Nx \l__atableau_border_tl {(\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)}
+ \tl_put_right:Nx \l__atableau_border_tl {(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp)--}
+ }
+ {
+ \tl_put_left:Nx \l__atableau_border_tl {(\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)--}
+ \tl_put_right:Nx \l__atableau_border_tl {--(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp)}
+ }
+ }
+}
+
+% ---------------------------------------------------------------------------
+% Tableaux
+
+% usage: \__atableau_draw_tableau:n {tableau specifications}
+% The entries are first primarily because the \Diagram commands need
+% to force the entries to expand
+\cs_new_protected:Npn \__atableau_draw_tableau:n #1
+{
+ % set the star style
+ \tl_set:Nn \l__atableau_starstyle_tl {aTableau/tableauStarStyle}
+
+ % disable interior boxes if boxes_bool is false
+ \bool_if:NF \l__atableau_boxes_bool { \__atableau_tikzset_append:nn {boxStyle} {draw=none} }
+
+ % initialise the skew shape for a shifted tableaux
+ \bool_if:NT \l__atableau_shifted_bool
+ {
+ \seq_clear:N \l__atableau_skew_seq
+ \seq_put_right:No \l__atableau_skew_seq {0}
+ }
+
+ % record the tableau shape as we go so that we can draw the border
+ % in finalise_tableau
+ \seq_clear:N \l__atableau_shape_seq
+
+ % the styled boxes are drawn at the end
+ \tl_clear:N \l__atableau_styled_nodes_tl
+
+ % set initial row and column
+ \int_zero:N \l__atableau_row_int
+ \int_set:Nn \l__atableau_col_int { 0\seq_item:Nn \l__atableau_skew_seq {1}}
+
+ % Parse #1 into the rows and columns with style. Initially we used
+ % \seq_set_split:Nnn here, but this required double bracing
+ % multi-character entries whenever they were he only entry in their
+ % column. Now we peek for the commas and the style simultaneously.
+ \__atableau_peek_tableau:w #1 \q_recursion_tail \q_recursion_stop
+
+ % add the nodes with style
+ \l__atableau_styled_nodes_tl
+
+ % add the labels, ribbons, snobs and border
+ \__atableau_finalise_tableau:
+}
+
+% usage: \__atableau_finalise_tableau:
+% As it is used in several places, collect the code that finishes
+% drawing the tableau by adding the ribbons, paths, snobs, skew boxes,
+% border and the dotted rows and columns.
+\cs_new_protected:Nn \__atableau_finalise_tableau:
+{
+ % prevent paths and ribbons from updating shape
+ \cs_set_eq:NN \__atableau_update_shape: \prg_do_nothing:
+
+ % add paths
+ \seq_if_empty:NF \l__atableau_paths_seq
+ {
+ \tl_set:Nn \l__atableau_ribbon_type_tl {path} % change ribbon type to path
+ \seq_map_inline:Nn \l__atableau_paths_seq {\__atableau_add_ribbon:n {##1}}
+ }
+
+ % add ribbons
+ \tl_set:Nn \l__atableau_ribbon_type_tl {ribbon} % change ribbon type to ribbon
+ \seq_map_inline:Nn \l__atableau_ribbons_seq {\__atableau_add_ribbon:n {##1}}
+
+ % paths and ribbons are inside the delimiters, but snobs are not
+ \cs_set_eq:NN \__atableau_update_extrema:n \use_none:n
+
+ % draw border
+ \tl_if_blank:VF \l__atableau_label_tl { \__atableau_draw_label: }
+ \bool_if:NT \l__atableau_skew_boxes_bool { \__atableau_draw_skew_boxes: }
+ \bool_if:NT \l__atableau_skew_border_bool { \__atableau_draw_border:nn {skew} {skewBorder} }
+ \bool_if:NT \l__atableau_border_bool { \__atableau_draw_border:nn {shape} {borderStyle} }
+
+ % remove dotted rows and columns
+ \seq_if_empty:NF \l__atableau_dotted_rows_seq \__atableau_remove_dotted_tableau_rows:
+ \seq_if_empty:NF \l__atableau_dotted_cols_seq \__atableau_remove_dotted_tableau_cols:
+
+ % add snobs
+ \tl_set:Nn \l__atableau_ribbon_type_tl {snob} % change ribbon type to snob
+ \seq_map_inline:Nn \l__atableau_snobs_seq {\__atableau_add_ribbon:n {##1}}
+}
+
+% ---------------------------------------------------------------------------
+% box and bead coordinates
+
+% usage: \__atableau_update_multi_extrema:n {letter}
+% Update xmax, ymax and ymin using the x#1_fp and y#1_fp
+\cs_new_protected:Npn \__atableau_update_multi_extrema:n #1
+{
+ % adjust xmax, ymin and ymax for multishapes
+ \fp_set:Nn \l__atableau_xmax_fp { max(\l__atableau_xmax_fp, \use:c{l__atableau_x#1_fp}) }
+ \fp_set:Nn \l__atableau_ymax_fp { max(\l__atableau_ymax_fp, \use:c{l__atableau_y#1_fp}) }
+ \fp_set:Nn \l__atableau_ymin_fp { min(\l__atableau_ymin_fp, \use:c{l__atableau_y#1_fp}) }
+}
+
+\cs_new_protected:Npn \__atableau_update_multi_xtrema:n #1
+{
+ % adjust xmax for multishapes
+ \fp_set:Nn \l__atableau_xmax_fp { max(\l__atableau_xmax_fp, \use:c{l__atableau_x#1_fp}) }
+}
+
+% By default, we do not update ymin, ymax and xmax. This only happens for multishapes
+\cs_set_eq:NN \__atableau_update_extrema:n \use_none:n
+
+% usage: \__atableau_set_box_coordinates_normal:nnn <letter> <row> <col>: given the row and columns
+% indices, row and col, define the corresponding coordinates in a tableau
+% - \l__atableau_xl_fp : x-coordinates
+% - \l__atableau_yl_fp : y-coordinate
+% - \l__atableau_name_tl : the node name
+% Used by the tableau and diagram commands. Note that row and col both start
+% from 0, so the (1,1)-box has row=col=0.
+\cs_new_protected:Npn \__atableau_set_box_coordinates_normal:nnn #1 #2 #3
+{
+ \tl_set:Nx \l__atableau_name_tl {\l__atableau_prefix_tl-\int_eval:n{1+#2}-\int_eval:n {1+#3}}
+ \fp_set:cn {l__atableau_x#1_fp} {\l__atableau_x_fp+((#2+0.5)*\l__atableau_tab_row_dx_fp+(#3+0.5)*\l__atableau_tab_col_dx_fp)*\l__atableau_box_wd_fp }
+ \fp_set:cn {l__atableau_y#1_fp} {\l__atableau_y_fp+((#2+0.5)*\l__atableau_tab_row_dy_fp+(#3+0.5)*\l__atableau_tab_col_dy_fp)*\l__atableau_box_ht_fp }
+ \__atableau_update_extrema:n #1
+}
+
+% usage: \__atableau_set_box_coordinates_conjugate:nnn <letter> <row> <col>: given the row and columns
+% indices, row and col, define the corresponding coordinates in the conjugate tableau
+% - \l__atableau_xl_fp : x-coordinates
+% - \l__atableau_yl_fp : y-coordinate
+% - \l__atableau_name_tl : the node name
+% Used by the tableau and diagram commands
+\cs_new_protected:Npn \__atableau_set_box_coordinates_conjugate:nnn #1 #2 #3
+{
+ \tl_set:Nx \l__atableau_name_tl {\l__atableau_prefix_tl-\int_eval:n{1+#3}-\int_eval:n {1+#2}}
+ \fp_set:cn {l__atableau_x#1_fp} {\l__atableau_x_fp+((#3+0.5)*\l__atableau_tab_row_dx_fp+(#2+0.5)*\l__atableau_tab_col_dx_fp)*\l__atableau_box_wd_fp }
+ \fp_set:cn {l__atableau_y#1_fp} {\l__atableau_y_fp+((#3+0.5)*\l__atableau_tab_row_dy_fp+(#2+0.5)*\l__atableau_tab_col_dy_fp)*\l__atableau_box_ht_fp }
+ \__atableau_update_extrema:n #1
+}
+
+% by default , normal coordinates are used
+\cs_set_eq:NN \__atableau_set_box_coordinates:nnn \__atableau_set_box_coordinates_normal:nnn
+
+
+% usage: \__atableau_set_bead_coordinates:nnn <letter> <row> <col>: given the row and columns
+% indices, row and col, define the corresponding coordinates in a tableau or abacus:
+% - \l__atableau_xl_fp : x-coordinates
+% - \l__atableau_yl_fp : y-coordinate
+% - \l__atableau_name_tl : the node name
+% Used by both the tableaux and abacus commands
+\cs_new_protected:Npn \__atableau_set_bead_coordinates:nnn #1 #2 #3
+{
+ \tl_set:Nx \l__atableau_name_tl {\l__atableau_prefix_tl-\fp_to_int:n{#2-1}-\fp_to_int:n{#3}}
+ \fp_set:cn {l__atableau_x#1_fp} {\l__atableau_x_fp+(#2*\l__atableau_ab_row_dx_fp+#3*\l__atableau_ab_col_dx_fp)*\l__atableau_abacus_wd_fp }
+ \fp_set:cn {l__atableau_y#1_fp} {\l__atableau_y_fp+(#2*\l__atableau_ab_row_dy_fp+#3*\l__atableau_ab_col_dy_fp)*\l__atableau_abacus_ht_fp }
+}
+
+% ---------------------------------------------------------------------------
+% tableaux boxes/nodes
+
+\cs_new_protected:Npn \__atableau_valign_bottom:n #1 { \vbox_to_zero:n { #1 \vss } }
+\cs_new_protected:Npn \__atableau_valign_centre:n #1 { \vbox_to_zero:n { \vss #1 \vss } }
+\cs_new_protected:Npn \__atableau_valign_top:n #1 { \vbox_to_zero:n { \vss #1 } }
+\cs_set_eq:NN \__atableau_valign_center:n \__atableau_valign_centre:n
+
+% We use \vbox_to_zero:n and \hbox_overlap_center:n to ensure that an entry
+% does not change the height or width of the node when it is too large.
+\cs_new_protected:Npn \__atableau_entry_math:n #1
+{
+ \__atableau_valign:n
+ {
+ \__atableau_halign:n
+ {
+ \tl_if_blank:VF \tikz@textcolor {\color{\tikz@textcolor}}
+ \tikz@textfont $~#1 $
+ }
+ }
+}
+
+% and a text version
+\cs_new_protected:Npn \__atableau_entry_text:n #1
+{
+ \__atableau_valign:n
+ {
+ \__atableau_halign:n
+ {
+ \tl_if_blank:VF \tikz@textcolor {\color{\tikz@textcolor}}
+ \tikz@textfont #1
+ }
+ }
+}
+
+% By default tableau nodes are typeset in math-mode.
+\cs_set_eq:NN \__atableau_entry:n \__atableau_entry_math:n
+
+% usage: \__atableau_draw_entry:nn [style] {entry}
+% Used by draw_tableau to draw the node entry #2 in the tableau using the style #1
+\cs_new_protected:Npn \__atableau_draw_entry:nn [#1] #2
+{
+ % exit when we reach the end of the row
+ \quark_if_recursion_tail_stop_do:nn {#2}
+ {
+ % record the column index in the shape for drawing the border
+ \seq_put_right:NV \l__atableau_shape_seq \l__atableau_col_int
+ }
+
+ % compute the node name and its (x,y)-coordinates
+ \__atableau_set_box_coordinates:nVV {l} \l__atableau_row_int \l__atableau_col_int
+
+ \tl_if_empty:nTF {#1}
+ { % draw box if it has the default styling
+ \node[aTableau/boxStyle] (\l__atableau_name_tl)
+ at (\fp_use:N\l__atableau_xl_fp, \fp_use:N\l__atableau_yl_fp)
+ {\__atableau_entry:n{#2}};
+ }
+ { % save the node to \l__atableau_styled_nodes_tl if it is styled
+ \tl_put_right:Nx \l__atableau_styled_nodes_tl
+ {
+ \exp_not:N \node [aTableau/boxStyle,#1] (\l__atableau_name_tl)
+ at (\fp_use:N\l__atableau_xl_fp, \fp_use:N\l__atableau_yl_fp)
+ {\exp_not:N\__atableau_entry:n{#2}};
+ }
+ }
+
+ % look for the next entry, or finish
+ \int_incr:N \l__atableau_col_int
+ \__atableau_peek_tableau:w
+}
+
+% ---------------------------------------------------------------------------
+% diagrams
+
+% usage: \__atableau_draw_diagram:n {partition}
+\cs_new_protected:Npn \__atableau_draw_diagram:n #1
+{
+ % convert #1 to the partition \l__atableau_shape_seq
+ \__atableau_set_partition:nn {shape} {#1}
+
+ % set the skew shape for shifted tableaux
+ \bool_if:NT \l__atableau_shifted_bool
+ {
+ \seq_clear:N \l__atableau_skew_seq
+ \seq_map_inline:Nn \l__atableau_shape_seq
+ {
+ \seq_put_right:No \l__atableau_skew_seq {\int_use:N \l__atableau_row_int}
+ \int_incr:N \l__atableau_row_int
+ }
+ \int_zero:N \l__atableau_row_int
+ }
+
+ % depending on \l__atableau_show_tl, generate the tableau entries
+ \str_case:VnF \l__atableau_show_tl
+ {
+ {contents} { \__atableau_shape_to_content:N \l__atableau_shape_seq }
+ {last} { \__atableau_shape_to_last:N \l__atableau_shape_seq }
+ {hooks} { \__atableau_shape_to_hook:N \l__atableau_shape_seq }
+ {first} { \__atableau_shape_to_first:N \l__atableau_shape_seq }
+ {residues} { \__atableau_shape_to_residue:N \l__atableau_shape_seq }
+ {} { \__atableau_diagram_for_shape:N \l__atableau_shape_seq }
+ }
+ {
+ \msg_error:nnx {aTableau} {unrecognised-entries} {\l__atableau_show_tl}
+ }
+ \__atableau_draw_tableau:V \l__atableau_entries_tl
+}
+
+
+% ---------------------------------------------------------------------------
+% multitableau and their diagrams
+
+% usage: \__atableau_draw_multishape:n diagram|tableau
+% Draw a multitableau or multidiagram. Most of the work is in calculating the
+% x-coordinates of the origins and each diagram, their separators and the
+% maximal y-coordinates, for drawing the delimiters. We also need to set
+% various keys for the components, so that they work correctly.
+\cs_new_protected:Npn \__atableau_draw_multishape:n #1
+{
+ % save the prefix name so that we can modify it
+ \tl_set_eq:NN \l__atableau_multiprefix_tl \l__atableau_prefix_tl
+
+ % check for conjugation
+ \bool_if:NT \l__atableau_conjugate_bool { \seq_reverse:N \l__atableau_component_seq }
+
+ % reset the variables that we need
+ \int_zero:N \l__atableau_component_int % component index
+
+ % We will increment x_fp to give the origins of the component diagrams.
+ % For now we record the position of the x-coordinates of the left brace,
+ % which will be placed after the diagrams have been drawn we first have to
+ % determine their height.
+ \seq_clear:N \l__atableau_xsep_seq
+ \seq_put_right:Nx \l__atableau_xsep_seq {\fp_to_decimal:N\l__atableau_x_fp}
+
+ % keep track of min/max y-coordinates used and max x-coordinate
+ \fp_set_eq:NN \l__atableau_xmax_fp \l__atableau_x_fp
+ \fp_set:Nn \l__atableau_ymax_fp {\l__atableau_y_fp + \l__atableau_tab_row_dy_fp*\l__atableau_box_ht_fp/2} % middle of box
+ \fp_set_eq:NN \l__atableau_ymin_fp \l__atableau_ymax_fp
+
+ \seq_map_inline:Nn \l__atableau_component_seq
+ {
+ % increment component and set prefix, charge, skew, ribbons and snobs
+ \int_incr:N \l__atableau_component_int
+
+ % update ymin, ymax and xmax (re-enable each time as this is disabled when placing ribbons)
+ \fp_compare:nNnTF {\l__atableau_rows_fp} = {0}
+ { \cs_set_eq:NN \__atableau_update_extrema:n \__atableau_update_multi_extrema:n } % update xmax, ymin, ymax
+ { \cs_set_eq:NN \__atableau_update_extrema:n \__atableau_update_multi_xtrema:n } % update only xmax
+
+ % change the node prefix to include the component index
+ \tl_set:No \l__atableau_prefix_tl {\l__atableau_multiprefix_tl-\int_use:N\l__atableau_component_int}
+
+ % charge defaults to zero if not set
+ \int_set:Nn \l__atableau_charge_int {0\seq_item:NV \l__atableau_charge_seq \l__atableau_component_int}
+
+ % set the multi-component keys from the corresponding multi sequence
+ \clist_map_inline:nn {dotted_rows, dotted_cols, paths, ribbons, snobs}
+ {
+ % if multi####1 is empty then clear the ####1 sequence, otherwise set it equal to component value
+ \seq_if_empty:cTF {l__atableau_multi####1_seq}
+ { \seq_clear:c {l__atableau_####1_seq} }
+ {
+ \tl_set:Nx \l_tmpb_tl {\seq_item:cV {l__atableau_multi####1_seq} \l__atableau_component_int}
+ \seq_set_from_clist:co {l__atableau_####1_seq} {\l_tmpb_tl}
+ }
+ }
+
+ % labels are handled separately because they are not sequences
+ \seq_if_empty:NTF \l__atableau_multilabel_seq
+ { \seq_clear:N \l__atableau_label_seq }
+ {
+ \tl_set:Nx \l_tmpb_tl {\seq_item:NV \l__atableau_multilabel_seq \l__atableau_component_int}
+ \tl_set:No \l__atableau_label_tl {\l_tmpb_tl}
+ }
+
+ % skew is handled separately because it uses set_partition
+ \seq_if_empty:NTF \l__atableau_multiskew_seq
+ { \seq_clear:N \l__atableau_skew_seq }
+ {
+ \tl_set:Nx \l_tmpb_tl {\seq_item:NV \l__atableau_multiskew_seq \l__atableau_component_int}
+ \__atableau_set_partition:no {skew} {\l_tmpb_tl}
+ }
+
+ % determine the coordinates for the diagram/tableau
+ % - \l__atableau_c_int: number of columns in first row
+ % - \l__atableau_r_int: number of rows in components
+ \bool_if:nTF { \str_if_empty_p:n {##1} || \str_if_eq_p:nn {##1} {...} }
+ {
+ \int_set:Nn \l__atableau_c_int {1}
+ \int_set:Nn \l__atableau_r_int {1}
+ }
+ {
+ % the component is nonempty
+ \tl_if_eq:nnTF {#1} {diagram}
+ {
+ \__atableau_set_partition:nn {shape} {##1}
+ \int_set:No \l__atableau_c_int {\seq_item:Nn \l__atableau_shape_seq {1}+0\seq_item:Nn \l__atableau_skew_seq {1}}
+
+ % set r_int equal to the number of nonzero rows in shape_seq
+ \int_set:No \l__atableau_r_int { \seq_count:N \l__atableau_shape_seq }
+ }
+ { % coordinates for tableaux
+ \seq_set_from_clist:Nn \l_tmpa_seq {##1}
+ \int_set:No \l__atableau_c_int {0\seq_item:Nn \l__atableau_skew_seq {1}} % initialise to skew length
+ \tl_set:Nx \l_tmpc_tl {\seq_item:Nn \l_tmpa_seq {1}} % first row of tableau
+ \__atableau_count_row:x \l_tmpc_tl % length of first row + skew
+
+ % set r_int equal to the number of nonzero rows in shape_seq
+ \int_set:No \l__atableau_r_int { \seq_count:N \l_tmpa_seq }
+ }
+ }
+
+ % now that we have the coordinates we need, we compute the
+ % x-coordinates of the diagram origin and the separators
+
+ % need to switch for conjugate partitions
+ \bool_if:NTF \l__atableau_conjugate_bool
+ { % conjugating
+ % the origin is c * col_dx units from the separator + xoffset
+ \fp_add:Nn \l__atableau_x_fp
+ {
+ abs(\l__atableau_c_int*\l__atableau_tab_row_dx_fp*\l__atableau_box_wd_fp) % number of columns
+ + 0\seq_item:NV \l__atableau_xoffsets_seq \l__atableau_component_int % x-offset
+ }
+ % the next separator is is r * row_dx units from the origin
+ \fp_set:Nn \l__atableau_xsep_fp {
+ abs(\l__atableau_r_int*\l__atableau_tab_col_dx_fp*\l__atableau_box_wd_fp)
+ + \l__atableau_separation_fp
+ }
+
+ % compute maximum height of the diagram
+ \fp_set:Nn \l__atableau_yb_fp
+ {
+ \l__atableau_c_int*\l__atableau_tab_row_dy_fp*\l__atableau_box_ht_fp
+ + \l__atableau_r_int*abs(\l__atableau_tab_col_dy_fp)*\l__atableau_box_ht_fp
+ + 0\seq_item:NV \l__atableau_yoffsets_seq \l__atableau_component_int
+ }
+ }
+ { % not conjugating
+ % the origin is r * row_dx units from the separator + xoffset
+ \fp_add:Nn \l__atableau_x_fp
+ {
+ abs(\l__atableau_r_int*\l__atableau_tab_row_dx_fp*\l__atableau_box_wd_fp) % number of columns
+ + 0\seq_item:NV \l__atableau_xoffsets_seq \l__atableau_component_int % x-offset
+ }
+ % the next separator is is c * col_dx units from the origin
+ \fp_set:Nn \l__atableau_xsep_fp
+ {
+ abs(\l__atableau_c_int*\l__atableau_tab_col_dx_fp*\l__atableau_box_wd_fp) % number of columns
+ + \l__atableau_separation_fp
+ }
+ % compute maximum height of the diagram
+ \fp_set:Nn \l__atableau_yb_fp
+ {
+ \l__atableau_r_int*\l__atableau_tab_row_dy_fp*\l__atableau_box_ht_fp
+ + \l__atableau_c_int*\l__atableau_tab_col_dy_fp*\l__atableau_box_ht_fp
+ + 0\seq_item:NV \l__atableau_yoffsets_seq \l__atableau_component_int
+ }
+ }
+
+ % Having determined the positions of the diagram origins and separators, we are ready to draw the diagram
+ % First set the y-coordinate for the origin of the current component
+ \fp_add:Nn \l__atableau_y_fp {0\seq_item:NV \l__atableau_yoffsets_seq \l__atableau_component_int}
+
+ % special processing for empty diagrams and ...
+ \str_case:nnF {##1}
+ {
+ {}
+ {
+ % an empty diagram -> \l__atableau_empty_tl
+ \__atableau_set_box_coordinates:nnn {a} {0} {0}
+ \node[aTableau/separatorSymbol] at (\fp_use:N \l__atableau_xa_fp, \fp_use:N \l__atableau_ya_fp){\l__atableau_empty_tl};
+ }
+ {...}
+ {
+ % insert dots. ?? Replace \cdots with \l__atableau_dots_tl ??
+ \__atableau_set_box_coordinates:nnn {a} {0} {0}
+ \node[aTableau/separatorSymbol] at (\fp_use:N \l__atableau_xa_fp, \fp_use:N \l__atableau_ya_fp){$\cdots$};
+ }
+ }
+ {
+ % draw the diagram/tableau
+ \use:c {__atableau_draw_#1:n} {##1}
+ }
+
+ % increment the origin by the separation distance and record the
+ % x-coordinate of the separator
+ \fp_set:Nn \l__atableau_x_fp { \l__atableau_xmax_fp+\l__atableau_box_wd_fp/2+\l__atableau_separation_fp }
+ \seq_put_right:Nx \l__atableau_xsep_seq {\fp_to_decimal:N\l__atableau_x_fp}
+
+ % add the separation distance to x_fp for the next component
+ \fp_add:NV \l__atableau_x_fp \l__atableau_separation_fp % separation
+
+ } % end of seq_map_inline to draw component diagrams/tableau
+
+ % All of the component diagrams/tableaux have been drawn
+ % It remains to add the separators. First we adjust ymin and ymax
+ \bool_if:NT \l__atableau_separators_bool
+ {
+
+ % when rows_fp is nonzero it sets the maximum y-coordinate, otherwise we
+ % need to adjust ymin and ymax by half the box height
+ \fp_compare:nNnTF {\l__atableau_rows_fp} > {0}
+ {
+ \fp_compare:nNnTF {\l__atableau_tab_row_dy_fp} > {0}
+ {
+ \fp_add:Nn \l__atableau_ymax_fp { (\l__atableau_rows_fp-0.5)*\l__atableau_box_ht_fp }
+ \fp_add:Nn \l__atableau_ymin_fp { -0.5*\l__atableau_box_ht_fp }
+ }
+ {
+ \fp_add:Nn \l__atableau_ymin_fp { (0.5-\l__atableau_rows_fp)*\l__atableau_box_ht_fp }
+ \fp_add:Nn \l__atableau_ymax_fp { 0.5*\l__atableau_box_ht_fp }
+ }
+ }
+ {
+ % adjust ymin and ymax count as they count from the centre of the box
+ \fp_add:Nn \l__atableau_ymax_fp { \l__atableau_box_ht_fp/2}
+ \fp_add:Nn \l__atableau_ymin_fp {-\l__atableau_box_ht_fp/2}
+ }
+
+ \fp_set:Nn \l__atableau_y_fp {(\l__atableau_ymin_fp+\l__atableau_ymax_fp)/2} % midway between ymin and ymax
+ \fp_set:Nn \l__atableau_ymax_fp { \l__atableau_ymax_fp-\l__atableau_ymin_fp } % maximum height
+
+ % add left delimiter: need to use \path to set the colour
+ \seq_pop_left:NN \l__atableau_xsep_seq \l_tmpa_tl
+ \tl_if_blank:VF \l__atableau_left_delimiter_tl
+ {
+ \path[aTableau/delimiterPath] (\fp_eval:n{\l_tmpa_tl-\l__atableau_separation_fp/2}, \fp_use:N \l__atableau_y_fp)
+ node[aTableau/leftDelimiter] {};
+ }
+
+ % add right delimiter
+ \seq_pop_right:NN \l__atableau_xsep_seq \l_tmpa_tl
+ \tl_if_blank:VF \l__atableau_right_delimiter_tl
+ {
+ \path[aTableau/delimiterPath] (\fp_eval:n{\l_tmpa_tl-\l__atableau_separation_fp/2}, \fp_use:N \l__atableau_y_fp)
+ node[aTableau/rightDelimiter] {};
+ }
+
+ % the internal separators
+ \tl_set:Ne \l_tmpa_tl {\fp_to_decimal:N \l__atableau_ymin_fp } % ymin
+ \tl_set:Ne \l_tmpb_tl {\fp_to_decimal:n {\l__atableau_y_fp + \l__atableau_ymax_fp/2}} % ymax
+ \seq_map_inline:Nn \l__atableau_xsep_seq
+ {
+ % add the separator
+ \str_case:VnF \l__atableau_separator_tl
+ {
+ {|} { \draw[aTableau/separatorLine](##1,\l_tmpa_tl)--(##1,\l_tmpb_tl); }
+ }
+ { % any other separator is assumed to be text
+ \node[aTableau/separatorSymbol] at (##1,\fp_use:N \l__atableau_y_fp){\l__atableau_separator_tl};
+ }
+ }
+ }
+}
+
+
+% usage: \__atableau_multidiagram:n {entries}
+% The entries are first primarily because the \Diagram commands needs
+% to force the entries to expand
+\cs_new_protected:Npn \__atableau_multidiagram:n #1
+{
+ % separate the component partitions
+ \seq_set_split:Nnn \l__atableau_component_seq {|} {#1}
+
+ % when entries=last, we need to set the charge
+ \tl_if_eq:NnT \l__atableau_show_tl {last}
+ {
+ \seq_clear:N \l__atableau_charge_seq
+ \int_zero:N \l__atableau_c_int % cumulative total of component sizes
+ \seq_set_eq:NN \l_tmpc_seq \l__atableau_component_seq
+ \seq_reverse:N \l_tmpc_seq
+ \seq_map_inline:Nn \l_tmpc_seq
+ {
+ \seq_put_left:No \l__atableau_charge_seq {\int_use:N \l__atableau_c_int}
+ \__atableau_set_partition:nn {shape} {##1}
+ \seq_map_inline:Nn \l__atableau_shape_seq { \int_add:Nn \l__atableau_c_int {####1} }
+ }
+ }
+
+ % determine the coordinates of the components of the diagram
+ \__atableau_draw_multishape:n {diagram}
+}
+
+% usage: \__atableau_multitableau:n {entries}
+% The entries are first primarily because the \Diagram commands need
+% to force the entries to expand
+\cs_new_protected:Npn \__atableau_multitableau:n #1
+{
+ % separate the entries of the component tableaux
+ \seq_set_split:Nnn \l__atableau_component_seq {|} {#1}
+
+ % determine the coordinates of the components of the tableau
+ \__atableau_draw_multishape:n {tableau}
+}
+
+% ---------------------------------------------------------------------------
+% Ribbon tableaux
+
+% usage: \__atableau_ribbon_tableau:n {ribbons}
+% Draw a ribbon tableau. The ribbons are specified by
+% (ribbon style) ij sequences of r's and c's with optional style and
+% with text as a subscript. Here i and j are the row and column
+% indices of the head of the ribbon
+\cs_new_protected:Npn \__atableau_ribbon_tableau:n #1
+{
+ % set the star style
+ \tl_set:Nn \l__atableau_starstyle_tl {aTableau/tableauStarStyle}
+
+ % record the shape as we draw the border
+ \seq_clear:N \l__atableau_shape_seq
+ \cs_set_eq:NN \__atableau_update_shape: \__atableau_update_ribbon_tableau_shape:
+
+ % draw the ribbon tableau by drawing each of the ribbons
+ \tl_set:Nn \l__atableau_ribbon_type_tl {ribbon} % change ribbon type to ribbon
+ \clist_map_inline:nn {#1} { \__atableau_add_ribbon:n {##1} }
+
+ % draw the tableau border, adding associated bells and whistles
+ \__atableau_finalise_tableau:
+}
+
+% usage: \__atableau_add_ribbon:n {ribbon} add a ribbon to the tableau
+% The code for adding ribbons is slightly different dependning onf on whether
+% \l__atableau_ribbbon_ty[e is equal to 'ribbon' or 'path'
+\cs_new_protected:Npn \__atableau_add_ribbon:n #1
+{
+ % reset the sequences that store the ribbon specifications data
+ \seq_clear:N \l__atableau_texts_seq % will contain node text
+ \seq_clear:N \l__atableau_styles_seq % will contain node styles
+ \seq_clear:N \l__atableau_rcs_seq % will contain node (row,col)-indices
+ \__atableau_peek_ribbon_style:w #1 \q_recursion_tail \q_recursion_stop
+}
+
+% usage: \__atableau_peek_ribbon_style:w {ribbon specifications}
+% look for (ribbon) style inside parentheses: (style)
+\cs_new_protected:Npn \__atableau_peek_ribbon_style:w
+{
+ \peek_remove_spaces:n { % ignore spaces
+ \peek_charcode:NTF (
+ { \__atableau_save_ribbon_style:n }
+ { \__atableau_save_ribbon_style:n ()}
+ }
+}
+
+% usage: \__atableau_save_ribbon_style:n {style}
+% read the style (style) and save in \l__atableau_ribbon_style_tl
+% and then peek for [style]rc...
+\cs_new_protected:Npn \__atableau_save_ribbon_style:n (#1)
+{
+ \tl_set:Nn \l__atableau_ribbon_style_tl {#1}
+ \__atableau_peek_style:nw {save_ribbon_head:nnn}
+}
+
+
+% usage: \__atableau_initialise_path_head:
+% Start \l__atableau_ribbon_path_tl for a path
+\cs_new_protected:Nn \__atableau_initialise_path_head:
+{ % adding a ribbon path
+ \tl_set:Nx \l__atableau_ribbon_path_tl
+ {
+ (\fp_use:N\l__atableau_xl_fp,\fp_use:N\l__atableau_yl_fp)
+ node[aTableau/pathBox,\l__atableau_ribbon_style_tl]{\__atableau_entry:n{\l__atableau_path_box_tl}}
+ }
+}
+
+% usage: \__atableau_initialise_ribbon_head:
+% Start \l__atableau_ribbon_path_tl for a ribbon
+\cs_new_protected:Nn \__atableau_initialise_ribbon_head:
+{
+ % 1. Make (xl,yl) the top corner of the ribbon and add it
+ \fp_add:Nn \l__atableau_xl_fp { 0.5*(\l__atableau_tab_col_dx_fp-\l__atableau_tab_row_dx_fp)*\l__atableau_box_wd_fp }
+ \fp_add:Nn \l__atableau_yl_fp { 0.5*(\l__atableau_tab_col_dy_fp-\l__atableau_tab_row_dy_fp)*\l__atableau_box_ht_fp }
+ \tl_set:Nx \l__atableau_ribbon_path_tl { (\fp_use:N\l__atableau_xl_fp,\fp_use:N\l__atableau_yl_fp) }
+
+ % 2. Make (xa,ya) the top left of the ribbon and add it on the left (decreasing column)
+ \fp_set:Nn \l__atableau_xa_fp {\l__atableau_xl_fp-\l__atableau_tab_col_dx_fp*\l__atableau_box_wd_fp}
+ \fp_set:Nn \l__atableau_ya_fp {\l__atableau_yl_fp-\l__atableau_tab_col_dy_fp*\l__atableau_box_ht_fp}
+ \tl_put_left:Nx \l__atableau_ribbon_path_tl { (\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)-- }
+
+ % 3. Make (xb,yb) the bottom right corner and add it on the right (increasing row)
+ \fp_set:Nn \l__atableau_xb_fp {\l__atableau_xl_fp+\l__atableau_tab_row_dx_fp*\l__atableau_box_wd_fp}
+ \fp_set:Nn \l__atableau_yb_fp {\l__atableau_yl_fp+\l__atableau_tab_row_dy_fp*\l__atableau_box_ht_fp}
+ \tl_put_right:Nx \l__atableau_ribbon_path_tl { --(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp) }
+}
+
+% usage: \__atableau_save_ribbon_head:nnnn {path/ribbon} [style] {row index} {col index}
+% save the style, row and column indices for the head of the ribbon
+% and then compute the coordinates of the three "external nodes" in the
+% head.
+\cs_new_protected:Npn \__atableau_save_ribbon_head:nnn [#1] #2 #3
+{
+ % check for syntax errors to prevent an endless loop
+ \quark_if_recursion_tail_stop_do:nn {#2} { \msg_error:nnn {aTableau} {invalid-ribbon-head} {no~x-coordinate~given} }
+ \quark_if_recursion_tail_stop_do:nn {#3} { \msg_error:nnn {aTableau} {invalid-ribbon-head} {no~y-coordinate~given} }
+
+ % save any style
+ \seq_put_right:Nx \l__atableau_styles_seq {#1}
+
+ % record the row and column indices of the head
+ \int_set:No \l__atableau_row_int { \int_eval:n {#2-1} }
+ \int_set:No \l__atableau_col_int { \int_eval:n {#3-1} }
+ \seq_put_right:NV \l__atableau_rcs_seq \l__atableau_row_int
+ \seq_put_right:NV \l__atableau_rcs_seq \l__atableau_col_int
+
+ % update the shape to include the head node (#3,#4)
+ \__atableau_update_shape:
+
+ % add initial coordinates to \l__atableau_ribbon_path_tl
+ \__atableau_set_box_coordinates:nVV {l} \l__atableau_row_int \l__atableau_col_int
+
+ % initialise the start of the path/ribbon
+ \use:c {__atableau_initialise_ \l__atableau_ribbon_type_tl _head:}
+
+ %\message{row=\int_use:N\l__atableau_row_int,~col=\int_use:N\l__atableau_col_int}
+ \__atableau_peek_ribbon_text:w
+}
+
+% usage: \__atableau_peek_ribbon_text:nw {path/ribbon}
+% peek for subscripted text _{text} in the ribbon
+\cs_new_protected:Npn \__atableau_peek_ribbon_text:w
+{
+ \peek_remove_spaces:n { % ignore spaces
+ \peek_charcode_remove:NTF _
+ { \__atableau_save_ribbon_text:n }
+ {
+ \seq_put_right:Nn \l__atableau_texts_seq {} % empty text
+ \__atableau_peek_style:nw {save_ribbon:nn}
+ }
+ }
+}
+
+% usage: \__atableau_save_ribbon_text:n {text}
+% save any text for a rode in the ribbon in \l__atableau_texts_seq
+\cs_new_protected:Npn \__atableau_save_ribbon_text:n #1
+{
+ \seq_put_right:No \l__atableau_texts_seq {#1}
+ \__atableau_peek_style:nw {save_ribbon:nn}
+}
+
+% usage: \__atableau_add_to_ribbon:n
+% Extend a ribbon path. Here #1 is either r or c
+\cs_new_protected:Npn \__atableau_extend_ribbon:n #1
+{
+ \str_case:enF {#1}
+ {
+ {c} { % move back one column
+ \int_decr:N \l__atableau_col_int
+
+ % Move (xa,ya) back one column add it to the ribbon on the left
+ \fp_sub:Nn \l__atableau_xa_fp {\l__atableau_tab_col_dx_fp*\l__atableau_box_wd_fp}
+ \fp_sub:Nn \l__atableau_ya_fp {\l__atableau_tab_col_dy_fp*\l__atableau_box_ht_fp}
+ \tl_put_left:Nx \l__atableau_ribbon_path_tl { (\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)-- }
+
+ % Move (xb,xb) back one column add it to the ribbon on the right
+ \fp_sub:Nn \l__atableau_xb_fp {\l__atableau_tab_col_dx_fp*\l__atableau_box_wd_fp}
+ \fp_sub:Nn \l__atableau_yb_fp {\l__atableau_tab_col_dy_fp*\l__atableau_box_ht_fp}
+ \tl_put_right:Nx \l__atableau_ribbon_path_tl { --(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp) }
+ }
+ {r} { % move forward one row
+ \int_incr:N \l__atableau_row_int
+
+ % Move (xa,ya) forward one row add it to the ribbon on the left
+ \fp_add:Nn \l__atableau_xa_fp {\l__atableau_tab_row_dx_fp*\l__atableau_box_wd_fp}
+ \fp_add:Nn \l__atableau_ya_fp {\l__atableau_tab_row_dy_fp*\l__atableau_box_ht_fp}
+ \tl_put_left:Nx \l__atableau_ribbon_path_tl { (\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)-- }
+
+ % Move (xb,xb) forward one row add it to the ribbon on the right
+ \fp_add:Nn \l__atableau_xb_fp {\l__atableau_tab_row_dx_fp*\l__atableau_box_wd_fp}
+ \fp_add:Nn \l__atableau_yb_fp {\l__atableau_tab_row_dy_fp*\l__atableau_box_ht_fp}
+ \tl_put_right:Nx \l__atableau_ribbon_path_tl { --(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp) }
+ }
+ }
+ {
+ \msg_error:nnx {aTableau} {invalid-ribbon-specification} {#1}
+ }
+
+}
+
+% usage: \__atableau_add_to_path:n
+% Extend a ribbon path. Here #1 is either r or c
+\cs_new_protected:Npn \__atableau_extend_path:n #1
+{
+
+ % the ribbon hasn't finished, so move row and col according to the ribbon
+ % specification and update the nodes (xa,ya) and (xb,yb) in the ribbon
+ \str_case:enF {#1}
+ {
+ {c} { % move back one column
+ \int_decr:N \l__atableau_col_int
+
+ \fp_sub:Nn \l__atableau_xl_fp {\l__atableau_tab_col_dx_fp*\l__atableau_box_wd_fp}
+ \fp_sub:Nn \l__atableau_yl_fp {\l__atableau_tab_col_dy_fp*\l__atableau_box_ht_fp}
+ \tl_put_right:Nx \l__atableau_ribbon_path_tl
+ {
+ --(\fp_use:N\l__atableau_xl_fp,\fp_use:N\l__atableau_yl_fp)
+ node[aTableau/pathBox,\l__atableau_ribbon_style_tl]{\__atableau_entry:n{\l__atableau_path_box_tl}}
+ }
+ }
+ {r} { % move forward one row
+ \int_incr:N \l__atableau_row_int
+
+ \fp_add:Nn \l__atableau_xl_fp {\l__atableau_tab_row_dx_fp*\l__atableau_box_wd_fp}
+ \fp_add:Nn \l__atableau_yl_fp {\l__atableau_tab_row_dy_fp*\l__atableau_box_ht_fp}
+ \tl_put_right:Nx \l__atableau_ribbon_path_tl
+ {
+ --(\fp_use:N\l__atableau_xl_fp,\fp_use:N\l__atableau_yl_fp)
+ node[aTableau/pathBox,\l__atableau_ribbon_style_tl]{\__atableau_entry:n{\l__atableau_path_box_tl}}
+ }
+ }
+ }
+ {
+ \msg_error:nnx {aTableau} {invalid-ribbon-specification} {#1}
+ }
+}
+
+% For each successive r and c in the ribbon specification, determine the
+% surrpouding coordinates in the ribbon and save any custom styles in
+% \l__atableau_styles_seq and then repeat
+\cs_new_protected:Npn \__atableau_save_ribbon:nn [#1] #2
+{
+ % draw the ribbon when we run out of nodes
+ \quark_if_recursion_tail_stop_do:nn {#2} { \__atableau_draw_ribbon: }
+
+ % Add the new coordinate(s) to \l__atableau_ribbon_path_tl. This is
+ % different for ribbons and paths
+ \use:c {__atableau_extend_ \l__atableau_ribbon_type_tl :n} {#2}
+
+ % update the shape to include the new node
+ \__atableau_update_shape:
+
+ % save the style and row and column indices
+ \seq_put_right:No \l__atableau_styles_seq {#1} % record the style of the head
+ \seq_put_right:NV \l__atableau_rcs_seq \l__atableau_row_int % record the row of the node
+ \seq_put_right:NV \l__atableau_rcs_seq \l__atableau_col_int % record the column of the node
+
+ % check to see if this node has any text
+ \__atableau_peek_ribbon_text:w
+}
+
+
+% update the shape of the ribbon tableau using the current values of
+% \l__atableau_row_int and \l__atableau_col_int
+\cs_new_protected:Nn \__atableau_update_ribbon_tableau_shape:
+{
+ % ensure that \l__atableau_shape_seq has at least a 0 in each row
+ \int_step_inline:nn { \l__atableau_row_int+1 - \seq_count:N \l__atableau_shape_seq }
+ {
+ \seq_put_right:Nn \l__atableau_shape_seq {0}
+ }
+ % for shifted tableaux we also need to ensure that skew is big enough
+ \bool_if:NT \l__atableau_shifted_bool
+ {
+ \int_set:Nn \l_tmpa_int {\seq_count:N \l__atableau_skew_seq}
+ \int_step_inline:nn { \l__atableau_row_int+1 - \l_tmpa_int }
+ {
+ \seq_put_right:Nx \l__atableau_skew_seq {\int_eval:n{\l_tmpa_int+##1-1 }}
+ }
+ }
+ \int_compare:nNnT {0\seq_item:Nn \l__atableau_shape_seq {\l__atableau_row_int+1}} < {\l__atableau_col_int+1}
+ {
+ \seq_set_item:Nox \l__atableau_shape_seq {\l__atableau_row_int+1} { \int_eval:n{\l__atableau_col_int+1} }
+ }
+}
+
+% usage: \__atableau_finalise_ribbon:n
+% Add the final node to the ribbon
+\cs_new_protected:Nn \__atableau_finalise_ribbon:
+{
+ % Add the last node to the ribbon
+ \fp_add:Nn \l__atableau_xa_fp {\l__atableau_tab_row_dx_fp*\l__atableau_box_wd_fp}
+ \fp_add:Nn \l__atableau_ya_fp {\l__atableau_tab_row_dy_fp*\l__atableau_box_ht_fp}
+ \tl_put_left:Nx \l__atableau_ribbon_path_tl { (\fp_use:N\l__atableau_xa_fp, \fp_use:N\l__atableau_ya_fp)-- }
+
+ % add a closing cycle
+ \tl_put_right:Nn \l__atableau_ribbon_path_tl {--cycle}
+}
+
+
+% usage: \__atableau_finalise_path:n
+% We do not need to do anything to finalise a path
+\cs_set_eq:NN \__atableau_finalise_path:n \prg_do_nothing:
+
+% by default, snobs have the same styles and coordinates as ribbons
+\cs_set_eq:NN \__atableau_extend_snob:n \__atableau_extend_ribbon:n
+\cs_set_eq:NN \__atableau_finalise_snob: \__atableau_finalise_ribbon:
+\cs_set_eq:NN \__atableau_initialise_snob_head: \__atableau_initialise_ribbon_head:
+
+% \__atableau_draw_ribbon: use the various sequences we have constructed
+% to draw the ribbon. We first place the nodes with default styling and
+% no text, then draw the ribbon with its supplied style and then,
+% finally, add the nodes with custom styling or text.
+\cs_new_protected:Nn \__atableau_draw_ribbon:
+{
+
+ \use:c { __atableau_finalise_ \l__atableau_ribbon_type_tl :}
+
+ % We want to first draw the ribbon, with its outline and any filling, and
+ % then place the node with the default styling (or unstyled), and styled
+ % nodes in the ribbon. To do this we build the two token lists
+ % \l__atableau_unstyled_nodes_tl and \l__atableau_styled_nodes_tl for these
+ % two types of nodes
+ \tl_clear:N \l__atableau_styled_nodes_tl
+ \tl_clear:N \l__atableau_unstyled_nodes_tl
+
+ % We need to add ribbon_node to every box in a ribbon, so we do the
+ % check here rather than in \seq_map_inline:Nn
+ \tl_if_eq:VnTF \l__atableau_ribbon_type_tl {path}
+ { \tl_clear:N \l_tmpc_tl }
+ { \tl_set_eq:Nc \l_tmpc_tl { l__atableau_ \l__atableau_ribbon_type_tl _box_tl } }
+
+ \seq_map_inline:Nn \l__atableau_styles_seq
+ {
+ % pop the text and row and column indices
+ \seq_pop_left:NN \l__atableau_texts_seq \l_tmpa_tl % text
+ \seq_pop_left:NN \l__atableau_rcs_seq \l_tmpb_tl % row index
+ \int_set:Nn \l__atableau_row_int {\l_tmpb_tl}
+ \seq_pop_left:NN \l__atableau_rcs_seq \l_tmpb_tl % column index
+ \int_set:Nn \l__atableau_col_int {\l_tmpb_tl}
+
+ % compute the box coordinates
+ \__atableau_set_box_coordinates:nVV {l} \l__atableau_row_int \l__atableau_col_int
+ \tl_if_empty:eTF {##1\l_tmpa_tl}
+ { % nodes with default style and no text are added to \l__atableau_unstyled_nodes_tl
+ \tl_put_right:Nx \l__atableau_unstyled_nodes_tl
+ {
+ \exp_not:N \node [aTableau/\l__atableau_ribbon_type_tl Box](\l__atableau_name_tl)
+ at (\fp_use:N\l__atableau_xl_fp,\fp_use:N\l__atableau_yl_fp)
+ { \exp_not:N \__atableau_entry:n{\l_tmpc_tl }};
+ }
+ }
+ { % nodes with styling are added to \l__atableau_styled_nodes_tl
+ \tl_put_right:Nx \l__atableau_styled_nodes_tl
+ {
+ \exp_not:N \node [aTableau/\l__atableau_ribbon_type_tl Box,##1](\l__atableau_name_tl)
+ at (\fp_use:N\l__atableau_xl_fp,\fp_use:N\l__atableau_yl_fp)
+ {\exp_not:N \__atableau_entry:n{\l_tmpa_tl}};
+ }
+ }
+ }
+ % draw the ribbon, applying any style
+ \exp_last_unbraced:Ne\draw { [aTableau/\l__atableau_ribbon_type_tl Style,\l__atableau_ribbon_style_tl] } \l__atableau_ribbon_path_tl;
+
+ % finally, add the unstyled and the styled nodes on top of the ribbon
+ \l__atableau_unstyled_nodes_tl
+ \l__atableau_styled_nodes_tl
+}
+
+
+% ---------------------------------------------------------------------------
+
+% abacuses
+% usage: \__atableau_draw_abacus_end:nnn {abacus_top/abacus_bottom} % {0/row index} {±1}
+% Draw the top/bottom on gthe abacus. Here #1 is either
+% \l__atableau_abacus_top_tl or \l__atableau_abacus_bottom_tl and #2 is
+% either 0, for top, or the row index of the last row, for bottom
+\cs_new_protected:Npn \__atableau_draw_abacus_end:nnn #1 #2 #3
+{
+ \str_case:Vn #1
+ {
+ {-}
+ { % draw a line
+ \__atableau_set_bead_coordinates:non {a} {#2} {0}
+ \__atableau_set_bead_coordinates:noo {b} {#2} { \int_eval:n {\l__atableau_cols_int-1} }
+ \draw[aTableau/abacusEnds]
+ (\fp_eval:n{\l__atableau_xa_fp-\l__atableau_ab_col_dx_fp*\l__atableau_abacus_wd_fp/2},
+ \fp_eval:n{\l__atableau_ya_fp-\l__atableau_ab_col_dy_fp*\l__atableau_abacus_ht_fp/2})
+ -- (\fp_eval:n{\l__atableau_xb_fp+\l__atableau_ab_col_dx_fp*\l__atableau_abacus_wd_fp/2},
+ \fp_eval:n{\l__atableau_yb_fp+\l__atableau_ab_col_dy_fp*\l__atableau_abacus_ht_fp/2});
+
+ % set default "row height" of the runner labels for use below
+ \fp_set:Nn \l_tmpa_fp {-0.4}
+ }
+ {_}
+ { % draw a line
+ \__atableau_set_bead_coordinates:non {a} {#2} {0}
+ \__atableau_set_bead_coordinates:noo {b} {#2} { \int_eval:n {\l__atableau_cols_int-1} }
+ \draw[aTableau/abacusEnds] (\fp_use:N\l__atableau_xa_fp, \fp_use:N\l__atableau_ya_fp)
+ -- (\fp_use:N\l__atableau_xb_fp, \fp_use:N\l__atableau_yb_fp);
+
+ % set default "row height" of the runner labels for use below
+ \fp_set:Nn \l_tmpa_fp {-0.4}
+ }
+ {.}
+ { % draw dots
+ \int_step_inline:nn {\l__atableau_cols_int}
+ {
+ \seq_if_in:NeF \l__atableau_dotted_cols_seq { \int_eval:n{##1-1} }
+ {
+ % draw the abacus runners from (xa,ya) to (xb,yb)
+ \__atableau_set_bead_coordinates:noo {a} { #2 } { \int_eval:n{##1-1} }
+ \__atableau_set_bead_coordinates:noo {b} { #3 } { \int_eval:n{##1-1} }
+ \draw[aTableau/abacusEnds, dotted] (\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)--(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp);
+ }
+ }
+
+ % set default "row height" of the runner labels for use below
+ \fp_set:Nn \l_tmpa_fp {-1.4}
+ }
+ {>}
+ { % draw dots
+ \int_step_inline:nn {\l__atableau_cols_int}
+ {
+ \seq_if_in:NeF \l__atableau_dotted_cols_seq { \int_eval:n{##1-1} }
+ {
+ % draw the abacus runners from (xa,ya) to (xb,yb)
+ \int_compare:nNnTF {#2} = {0}
+ {
+ \__atableau_set_bead_coordinates:noo {a} { \fp_eval:n{#2+0.5} } { \fp_eval:n{##1-1} }
+ \__atableau_set_bead_coordinates:noo {b} { \fp_eval:n{#3+0.5} } { \fp_eval:n{##1-1} }
+ }
+ {
+ \__atableau_set_bead_coordinates:noo {a} { \fp_eval:n{#2-0.5} } { \fp_eval:n{##1-1} }
+ \__atableau_set_bead_coordinates:noo {b} { \fp_eval:n{#3-0.5} } { \fp_eval:n{##1-1} }
+ }
+ \draw[aTableau/abacusEnds,->] (\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)--(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp);
+ }
+ }
+
+ % set default "row height" of the runner labels for use below
+ \fp_set:Nn \l_tmpa_fp {-0.8}
+ }
+
+ {*}
+ { % draw dots
+ \int_step_inline:nn {\l__atableau_cols_int}
+ {
+ \seq_if_in:NeF \l__atableau_dotted_cols_seq { \int_eval:n{##1-1} }
+ {
+ % draw the abacus runners from (xa,ya) to (xb,yb)
+ \int_compare:nNnTF {#2} = {0}
+ {
+ \__atableau_set_bead_coordinates:noo {a} { \fp_eval:n{#2} } { \fp_eval:n{##1-1} }
+ \__atableau_set_bead_coordinates:noo {b} { \fp_eval:n{#3-0.5} } { \fp_eval:n{##1-1} }
+ }
+ {
+ \__atableau_set_bead_coordinates:noo {a} { \fp_eval:n{#2} } { \fp_eval:n{##1-1} }
+ \__atableau_set_bead_coordinates:noo {b} { \fp_eval:n{#3+0.5} } { \fp_eval:n{##1-1} }
+ }
+ \draw[aTableau/abacusEnds,dotted,->] (\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)--(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp);
+ }
+ }
+
+ % set default "row height" of the runner labels for use below
+ \fp_set:Nn \l_tmpa_fp {-1.8}
+ }
+
+ {|} {
+ % set default "row height" of the runner labels for use below
+ \fp_set:Nn \l_tmpa_fp {-0.4}
+ }
+ }
+}
+
+
+% usage: \__atableau_abacus:nn { #runners } { bead specifications }
+\cs_new_protected:Npn \__atableau_abacus:nn #1 #2
+{
+ % set the star style
+ \tl_set:Nn \l__atableau_starstyle_tl {aTableau/abacusStarStyle}
+
+ \int_set:Nn \l__atableau_cols_int {#1}
+
+
+ \seq_if_empty:NF \l__atableau_runner_labels_seq
+ {
+ \int_set:No \l_tmpa_int { \seq_count:N \l__atableau_runner_labels_seq }
+ \int_compare:nNnF {\l__atableau_cols_int-\l_tmpa_int } = {0}
+ {
+ \msg_error:nn {aTableau} {missing-runner-labels }
+ }
+ }
+
+ % Extract the bead positions and their styles into
+ % \l__atableau_shape_seq, \l__atableau_styles_seq and \l__atableau_text_tl
+ % We allow all of the following expressions
+ % m, m^r, [style]m, [style]m^2, *m, *m^2,
+ % m_text, m_text^r, [style]m_text, [style]m_text^2, *m_text, *m_text^2,
+ % m_text^r, [style]m_text^2, *m_text^2
+ % where m is a part of the partition \l__atableau_shape_seq and r is
+ % its' exponent. First, clear all of the sequences and zero the bead
+ % counter
+ \seq_clear:N \l__atableau_shape_seq % will record the partition
+ \seq_clear:N \l__atableau_styles_seq % will record the bead style
+ \seq_clear:N \l__atableau_texts_seq % will record the bead text
+ \int_zero:N \l__atableau_beads_int % will record the number of beads
+
+ % determine the partition/beta numbers
+ \clist_map_inline:nn {#2}
+ {
+ \__atableau_peek_style:nw {record_style:nn} ##1 \q_recursion_tail \q_recursion_stop
+ }
+
+ % unless they have been set, determine the number of abacus rows
+ \int_compare:nNnT {\l__atableau_rows_int} = {0}
+ {
+ \bool_if:NTF \l__atableau_beta_numbers_bool
+ { \int_set:Nn \l__atableau_rows_int { 1+\int_div_truncate:nn { 0\seq_item:Nn \l__atableau_shape_seq 1} {#1} } }
+ { \int_set:Nn \l__atableau_rows_int { 1+\int_div_truncate:nn {\l__atableau_beads_int-1 + 0\seq_item:Nn \l__atableau_shape_seq 1} {#1} } }
+ }
+
+ % draw the abacus runners
+ \int_zero:N \l__atableau_col_int
+ \int_step_inline:nn {\l__atableau_cols_int}
+ {
+ \int_set:Nn \l_tmpa_int {##1-1} % save recalculating this many times
+ % skip the runners in dotted_cols_seq
+ \seq_if_in:NVF \l__atableau_dotted_cols_seq \l_tmpa_int
+ {
+ % draw the abacus runners from (xa,ya) to (xb,yb)
+ \__atableau_set_bead_coordinates:nnV {a} { 0 } \l_tmpa_int
+ \__atableau_set_bead_coordinates:noV {b} { \int_eval:n{\l__atableau_rows_int+1} } \l_tmpa_int
+ \draw[aTableau/runnerStyle] (\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)--(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp);
+
+ % draw ticks
+ \int_step_inline:nn {\l__atableau_rows_int}
+ {
+ \__atableau_set_bead_coordinates:noV {l} { ####1 } \l_tmpa_int
+ % add a named node
+ \node[aTableau/namedTick] (\l__atableau_name_tl) at (\fp_use:N\l__atableau_xl_fp,\fp_use:N\l__atableau_yl_fp){};
+ % add and subtract (half) tick width
+ \fp_set:Nn \l__atableau_xa_fp {\l__atableau_xl_fp+\l__atableau_tick_length_fp*\l__atableau_ab_col_dx_fp}
+ \fp_set:Nn \l__atableau_ya_fp {\l__atableau_yl_fp+\l__atableau_tick_length_fp*\l__atableau_ab_col_dy_fp}
+ \fp_set:Nn \l__atableau_xb_fp {\l__atableau_xl_fp-\l__atableau_tick_length_fp*\l__atableau_ab_col_dx_fp}
+ \fp_set:Nn \l__atableau_yb_fp {\l__atableau_yl_fp-\l__atableau_tick_length_fp*\l__atableau_ab_col_dy_fp}
+
+ \draw[aTableau/tickStyle,name=\l__atableau_name_tl] (\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)--(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp);
+ }
+ }
+ }
+
+ % set e when entries=residues
+ \tl_if_eq:VnT \l__atableau_show_tl {residues}
+ {
+ % if it is not set already, then set e based on the number of runners and the Cartan type
+ \int_compare:nNnT {\l__atableau_e_int} = {0}
+ {
+ \str_case:Vn \l__atableau_cartan_tl
+ {
+ {A } { \int_set_eq:NN \l__atableau_e_int \l__atableau_cols_int }
+ {C } { \int_set:Nn \l__atableau_e_int {\l__atableau_cols_int/2} }
+ {AA} { \int_set:Nn \l__atableau_e_int {(\l__atableau_cols_int-1)/2} }
+ {DD} { \int_set:Nn \l__atableau_e_int {\l__atableau_cols_int/2-1} }
+ }
+ }
+ }
+
+ % draw the beads on the abacus
+ \int_step_inline:nn { \l__atableau_beads_int } % finally, add the beads, with labels and styles
+ {
+
+ % determine the row and column indices for the bead
+ \bool_if:NTF \l__atableau_beta_numbers_bool
+ {
+ \int_set:No \l_tmpa_int { \seq_item:Nn \l__atableau_shape_seq {##1} } % beta number
+ }
+ {
+ \int_set:No \l_tmpa_int { \l__atableau_beads_int - ##1 + \seq_item:Nn \l__atableau_shape_seq {##1} } % part -> beta number
+ }
+ \int_set:Nn \l__atableau_row_int { \int_div_truncate:nn {\l_tmpa_int} {\l__atableau_cols_int} }
+ \int_set:Nn \l__atableau_col_int { \int_mod:nn {\l_tmpa_int} {\l__atableau_cols_int} }
+
+ % determine the bead coordinates: push everything 0.5 of a
+ % unit down to allow space of the top of the abacus
+ \__atableau_set_bead_coordinates:noV {l} {\int_eval:n{\l__atableau_row_int+1} } \l__atableau_col_int
+
+ \seq_if_in:NVF \l__atableau_dotted_rows_seq \l__atableau_row_int
+ {
+ \seq_if_in:NVF \l__atableau_dotted_cols_seq \l__atableau_col_int
+ {
+ \str_case:VnF \l__atableau_show_tl
+ {
+ {betas} { \tl_set:No \l_tmpa_tl { \int_use:N\l_tmpa_int } }
+ {residues} {
+ \int_set:Nn \l_tmpb_int { \l__atableau_charge_int+\l_tmpa_int-\l__atableau_beads_int }
+ \tl_set:No \l_tmpa_tl { \__atableau_residue:nn {\l_tmpb_int} {\l__atableau_e_int} }
+ }
+ {rows } {
+ \int_set:Nn \l_tmpb_int { \l_tmpa_int-\l__atableau_beads_int+##1 }
+ \int_compare:nNnTF {\l_tmpb_int} > {0}
+ { \tl_set:No \l_tmpa_tl { ##1 } }
+ { \tl_set:No \l_tmpa_tl { {-} } }
+ }
+ {shape} { \tl_set:No \l_tmpa_tl { \seq_item:Nn \l__atableau_shape_seq {##1} } }
+ {} { \tl_set:No \l_tmpa_tl { \seq_item:Nn \l__atableau_texts_seq {##1} } }
+ }
+ {
+ \msg_error:nnx {aTableau} {unrecognised-abacus-label} { \l__atableau_show_tl }
+ }
+ % draw the bead with style
+ \tl_set:No \l_tmpb_tl { \seq_item:Nn \l__atableau_styles_seq {##1} }
+ \exp_last_unbraced:Nx \node{[aTableau/beadStyle, \l_tmpb_tl]}
+ at (\fp_use:N\l__atableau_xl_fp,\fp_use:N\l__atableau_yl_fp){\__atableau_entry:x {\l_tmpa_tl}};
+ }
+ }
+ }
+
+ % draw the top ends of the abacus -- and set \l_tmpa_fp for the runner labels
+ \__atableau_draw_abacus_end:nnn \l__atableau_abacus_top_tl {0} {-1}
+ \int_zero:N \l__atableau_c_int
+
+ % add the runner labels using the "row height" \l_tmpa_fp
+ \int_zero:N \l__atableau_c_int
+ \seq_map_inline:Nn \l__atableau_runner_labels_seq
+ {
+ \__atableau_set_bead_coordinates:nVV {a} \l_tmpa_fp \l__atableau_c_int
+ \seq_if_in:NVF \l__atableau_dotted_cols_seq \l__atableau_c_int
+ {
+ \node[aTableau/runnerLabelStyle] at (\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp){ \__atableau_entry:n{##1} };
+ }
+ \int_incr:N \l__atableau_c_int
+ }
+
+ % draw the bottom ends of the abacus
+ \__atableau_draw_abacus_end:noo \l__atableau_abacus_bottom_tl {\int_eval:n {\l__atableau_rows_int+1}} {\int_eval:n {\l__atableau_rows_int+2}}
+
+ % remove dotted rows and columns
+ \seq_if_empty:NF \l__atableau_dotted_rows_seq \__atableau_remove_dotted_abacus_rows:
+ \seq_if_empty:NF \l__atableau_dotted_cols_seq \__atableau_remove_dotted_abacus_cols:
+
+}
+
+% usage: \__atableau_remove_dotted_abacus_cols:
+% Add dots to the columns of the abacus in \l__atableau_dotted_cols_seq
+\cs_new_protected:Nn \__atableau_remove_dotted_abacus_cols:
+{
+ % shift in row-direction
+ \fp_set:Nn \l_tmpa_fp {\l__atableau_ab_row_dx_fp*\l__atableau_abacus_wd_fp}
+ \fp_set:Nn \l_tmpb_fp {\l__atableau_ab_row_dy_fp*\l__atableau_abacus_ht_fp}
+
+ % take a copy of \l__atableau_dotted_cols_seq so that the pop_left's below
+ % do not destroy it
+ \seq_set_eq:NN \l_tmpb_seq \l__atableau_dotted_cols_seq
+ \bool_do_until:nn { \seq_if_empty_p:N \l_tmpb_seq }
+ {
+ \seq_pop_left:NN \l_tmpb_seq \l_tmpa_tl
+ \int_set:Nn \l__atableau_col_int {\l_tmpa_tl}
+ \int_set:Nn \l__atableau_c_int {\l__atableau_col_int+1}
+
+ % LaTeX3 does not provide \seq_if_in_p:NN, so ...
+ \bool_set_true:N \l_tmpa_bool
+ \bool_do_while:nn { \l_tmpa_bool }
+ {
+ \int_set:Nn \l_tmpa_int {0\seq_item:Nn \l_tmpb_seq 1}
+ \int_compare:nNnTF {\l__atableau_c_int} = {\l_tmpa_int}
+ {
+ \seq_pop_left:NN \l_tmpb_seq \l_tmpa_tl
+ \int_incr:N \l__atableau_c_int
+ }
+ { \bool_set_false:N \l_tmpa_bool }
+ }
+
+ \__atableau_set_bead_coordinates:nnV {l} { 0 } \l__atableau_col_int
+
+ % set (xa,ya) and (xb,yb) to the "left" and "right" hand coordinates that we want remove
+ \fp_set:Nn \l__atableau_xa_fp {\l__atableau_xl_fp-0.35*\l__atableau_ab_col_dx_fp*\l__atableau_abacus_wd_fp}
+ \fp_set:Nn \l__atableau_ya_fp {\l__atableau_yl_fp-0.35*\l__atableau_ab_col_dy_fp*\l__atableau_abacus_ht_fp}
+ \fp_set:Nn \l__atableau_xb_fp {\l__atableau_xl_fp+(\l__atableau_c_int-\l__atableau_col_int-0.65)*\l__atableau_ab_col_dx_fp*\l__atableau_abacus_wd_fp}
+ \fp_set:Nn \l__atableau_yb_fp {\l__atableau_yl_fp+(\l__atableau_c_int-\l__atableau_col_int-0.65)*\l__atableau_ab_col_dy_fp*\l__atableau_abacus_ht_fp}
+
+ % blank out any line at the top of the abacus and replace it with dots
+ \tl_if_in:nVT {-_} \l__atableau_abacus_top_tl
+ {
+ \draw[aTableau/clearBoxes]
+ (\fp_eval:n{\l__atableau_xa_fp-0.1*\l_tmpa_fp}, \fp_eval:n{\l__atableau_ya_fp-0.1*\l_tmpb_fp})
+ --++(\fp_eval:n{0.2*\l_tmpa_fp},\fp_eval:n{0.2*\l_tmpb_fp})
+ --(\fp_eval:n{\l__atableau_xb_fp+0.1*\l_tmpa_fp}, \fp_eval:n{\l__atableau_yb_fp+0.1*\l_tmpb_fp})
+ --++(\fp_eval:n{-0.2*\l_tmpa_fp},\fp_eval:n{-0.2*\l_tmpb_fp})
+ --cycle
+ ;
+ % first blank out the possible header line and replace with dots
+ %\draw[fill=white,draw=none](\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)--(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp);
+ \draw[aTableau/dottedLine](\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)--(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp);
+ }
+
+ % now draw the dots
+ \int_zero:N \l__atableau_row_int
+ \int_step_inline:nn {\l__atableau_rows_int}
+ {
+ \fp_add:Nn \l__atableau_xa_fp {\l_tmpa_fp}
+ \fp_add:Nn \l__atableau_ya_fp {\l_tmpb_fp}
+ \fp_add:Nn \l__atableau_xb_fp {\l_tmpa_fp}
+ \fp_add:Nn \l__atableau_yb_fp {\l_tmpb_fp}
+ \draw[aTableau/dottedLine](\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)--(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp);
+ }
+
+ % blank out any line at the bottom of the abacus and replace it with dots
+ \tl_if_in:nVT {-_} \l__atableau_abacus_bottom_tl
+ {
+ \fp_add:Nn \l__atableau_xa_fp {\l_tmpa_fp}
+ \fp_add:Nn \l__atableau_ya_fp {\l_tmpb_fp}
+ \fp_add:Nn \l__atableau_xb_fp {\l_tmpa_fp}
+ \fp_add:Nn \l__atableau_yb_fp {\l_tmpb_fp}
+ \draw[aTableau/clearBoxes]
+ (\fp_eval:n{\l__atableau_xa_fp-0.1*\l_tmpa_fp}, \fp_eval:n{\l__atableau_ya_fp-0.1*\l_tmpb_fp})
+ --++(\fp_eval:n{0.2*\l_tmpa_fp},\fp_eval:n{0.2*\l_tmpb_fp})
+ --(\fp_eval:n{\l__atableau_xb_fp+0.1*\l_tmpa_fp}, \fp_eval:n{\l__atableau_yb_fp+0.1*\l_tmpb_fp})
+ --++(\fp_eval:n{-0.2*\l_tmpa_fp},\fp_eval:n{-0.2*\l_tmpb_fp})
+ --cycle
+ ;
+ % first blank out the possible header line and replace with dots
+ \draw[aTableau/dottedLine](\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)--(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp);
+ }
+ }
+}
+
+% usage: \__atableau_remove_dotted_abacus_rows:
+% Add dots to the rows of the abacus in \l__atableau_dotted_rows_seq
+\cs_new_protected:Nn \__atableau_remove_dotted_abacus_rows:
+{
+ % shift in column-direction
+ \fp_set:Nn \l_tmpa_fp {\l__atableau_ab_col_dx_fp*\l__atableau_abacus_wd_fp}
+ \fp_set:Nn \l_tmpb_fp {\l__atableau_ab_col_dy_fp*\l__atableau_abacus_ht_fp}
+
+ % take a copy of \l__atableau_dotted_rows_seq so that the pop_left's below
+ % do not destroy it
+ \seq_set_eq:NN \l_tmpb_seq \l__atableau_dotted_rows_seq
+ \bool_do_until:nn { \seq_if_empty_p:N \l_tmpb_seq }
+ {
+ \seq_pop_left:NN \l_tmpb_seq \l_tmpa_tl
+ \int_set:Nn \l__atableau_row_int {\l_tmpa_tl}
+ \int_set:Nn \l__atableau_r_int {\l__atableau_row_int+1}
+
+ % LaTeX3 does not provide \seq_if_in_p:NN, so ...
+ \bool_set_true:N \l_tmpa_bool
+ \bool_do_while:nn { \l_tmpa_bool }
+ {
+ \int_set:Nn \l_tmpa_int {0\seq_item:Nn \l_tmpb_seq 1}
+ \int_compare:nNnTF {\l__atableau_r_int} = {\l_tmpa_int}
+ {
+ \seq_pop_left:NN \l_tmpb_seq \l_tmpa_tl
+ \int_incr:N \l__atableau_r_int
+ }
+ { \bool_set_false:N \l_tmpa_bool }
+ }
+
+ \__atableau_set_bead_coordinates:non {l} { \int_eval:n{\l__atableau_row_int+1} } { 0 }
+
+ % set (xa,ya) and (xb,yb) to the "left" and "right" hand coordinates that we want remove
+ \fp_set:Nn \l__atableau_xa_fp {\l__atableau_xl_fp-0.35*\l__atableau_ab_row_dx_fp*\l__atableau_abacus_wd_fp}
+ \fp_set:Nn \l__atableau_ya_fp {\l__atableau_yl_fp-0.35*\l__atableau_ab_row_dy_fp*\l__atableau_abacus_ht_fp}
+ \fp_set:Nn \l__atableau_xb_fp {\l__atableau_xl_fp+(\l__atableau_r_int-\l__atableau_row_int-0.65)*\l__atableau_ab_row_dx_fp*\l__atableau_abacus_wd_fp}
+ \fp_set:Nn \l__atableau_yb_fp {\l__atableau_yl_fp+(\l__atableau_r_int-\l__atableau_row_int-0.65)*\l__atableau_ab_row_dy_fp*\l__atableau_abacus_ht_fp}
+
+ \draw[aTableau/clearBoxes]
+ (\fp_eval:n{\l__atableau_xa_fp-0.12*\l_tmpa_fp}, \fp_eval:n{\l__atableau_ya_fp-0.12*\l_tmpb_fp})
+ --++(\fp_eval:n{(\l__atableau_cols_int+0.24)*\l_tmpa_fp},\fp_eval:n{(\l__atableau_cols_int+0.24)*\l_tmpb_fp})
+ --(\fp_eval:n{\l__atableau_xb_fp+(\l__atableau_cols_int+0.12)*\l_tmpa_fp}, \fp_eval:n{\l__atableau_yb_fp+(\l__atableau_cols_int+0.12)*\l_tmpb_fp})
+ --(\fp_eval:n{\l__atableau_xb_fp-0.12*\l_tmpa_fp}, \fp_eval:n{\l__atableau_yb_fp-0.12*\l_tmpb_fp})
+ --cycle
+ ;
+ % first blank out the possible header line and replace with dots
+ \draw[aTableau/dottedLine](\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)--(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp);
+
+ % now draw the dots
+ \int_step_inline:nnn {2} {\l__atableau_cols_int}
+ {
+ \fp_add:Nn \l__atableau_xa_fp {\l_tmpa_fp}
+ \fp_add:Nn \l__atableau_ya_fp {\l_tmpb_fp}
+ \fp_add:Nn \l__atableau_xb_fp {\l_tmpa_fp}
+ \fp_add:Nn \l__atableau_yb_fp {\l_tmpb_fp}
+ \draw[aTableau/dottedLine](\fp_use:N\l__atableau_xa_fp,\fp_use:N\l__atableau_ya_fp)--(\fp_use:N\l__atableau_xb_fp,\fp_use:N\l__atableau_yb_fp);
+ }
+
+ }
+}
+
+% ---------------------------------------------------------------------------
+% Keys for the package options and their defaults
+
+% setting TikZ styles via styles = { ... }
+\cs_new_protected:Npn \__atableau_tikzset:nn #1 #2 { \pgfqkeys{/tikz}{#1/.style={#2}} }
+
+% appending to aTableau styles
+\cs_new_protected:Npn \__atableau_tikzset_append:nn #1 #2 { \pgfqkeys{/tikz/aTableau}{#1/.append~style={#2}} }
+
+% aTableau options/keys
+\keys_define:nn { atableau }
+{
+ % ---------------------------------------------------------------------------
+ % general settings
+
+ % tableaux alignment
+ align .choice:,
+ align/top .code:n = { \tikzset{baseline=(current~bounding~box.north)} },
+ align/north .code:n = { \tikzset{baseline=(current~bounding~box.north)} },
+ align/center .code:n = { \tikzset{baseline=(current~bounding~box.center)}},
+ align/centre .code:n = { \tikzset{baseline=(current~bounding~box.center)}},
+ align/bottom .code:n = { \tikzset{baseline=(current~bounding~box.south)} },
+ align/south .code:n = { \tikzset{baseline=(current~bounding~box.south)} },
+ align .unknown .code:n = { \msg_error:nnn { aTableau } { unknown-baseline } {#1} },
+ align .initial:n = centre,
+
+ % set the Cartan type
+ cartan .choices:nn = { A, C, AA, DD }
+ {
+ % record the Cartan type for use in abacuses
+ \tl_set:Nn \l__atableau_cartan_tl {#1}
+ % define all of the type dependent functions here...
+ \cs_set_eq:Nc \__atableau_residue:nn {__atableau_residue_#1:nn}
+ },
+ cartan/unknown .code:n = { \msg_error:nne { aTableau } { unknown-cartan } {#1} },
+ cartan .initial:n = A,
+
+ charge .code:n =
+ {
+ % To cater for multipartitions, the charge is a sequence .
+ % Set l__atableau_charge_int is the first item in the sequence
+ \regex_split:nnN {[,\|]} {#1} \l__atableau_charge_seq
+ \int_set:Nn \l__atableau_charge_int { \seq_item:Nn \l__atableau_charge_seq {1} }
+ },
+ charge .value_required:n = true,
+ charge .initial:n = 0,
+
+ % dotted rows and columns for tableaux and abacuses
+ dotted~cols .code:n = { \__atableau_set_multiseq_key:nn {dotted_cols} {#1} },
+ dotted~cols .value_required:n = true,
+
+ dotted~rows .code:n = { \__atableau_set_multiseq_key:nn {dotted_rows} {#1} },
+ dotted~rows .value_required:n = true,
+
+ e .int_set:N = \l__atableau_e_int,
+ e .initial:n = 0,
+
+ entries .tl_set:N = \l__atableau_show_tl, % automatic bead labelling
+ entries .value_required:n = false,
+ entries .initial:n = ,
+
+ halign .choice:,
+ halign/center .code = {\cs_set_eq:NN \__atableau_halign:n \hbox_overlap_center:n},
+ halign/centre .code = {\cs_set_eq:NN \__atableau_halign:n \hbox_overlap_center:n},
+ halign/left .code = {\cs_set_eq:NN \__atableau_halign:n \hbox_overlap_left:n},
+ halign/right .code = {\cs_set_eq:NN \__atableau_halign:n \hbox_overlap_right:n},
+ halign .unknown .code:n = { \msg_error:nne { aTableau } { unknown-halign } {#1} },
+ halign .initial:n = centre,
+
+ % math/text mode for boxes and beads
+ math~entries .code:n = { \cs_set_eq:NN \__atableau_entry:n \__atableau_entry_math:n },
+ text~entries .code:n = { \cs_set_eq:NN \__atableau_entry:n \__atableau_entry_text:n },
+
+ % tableau node name prefix
+ name .tl_set:N = \l__atableau_prefix_tl,
+ name .value_required:n = true,
+ name .initial:n = A,
+
+ % scaling
+ scale .code:n = { \__atableau_set_xscale:n {#1} \__atableau_set_yscale:n {#1} },
+ scale .value_required:n = true,
+
+ % subscript an subsubscript scalinmg
+ script .fp_set:N = \l__atableau_script_fp,
+ script .value_required:n = true,
+ script .initial:n = 0.5,
+
+ scriptscript .fp_set:N = \l__atableau_scriptscript_fp,
+ scriptscript .value_required:n = true,
+ scriptscript .initial:n = 0.4,
+
+ star~style .code:n = { \__atableau_tikzset_append:nn {tableauStarStyle} {#1} },
+ star~style .value_required:n = true,
+
+ % shortcut for setting TikZ styles, following a suggestion of Skillmon to use \keyval_parse:nnn
+ styles .code:n =
+ { \keyval_parse:nnn { \msg_error:nnn {aTableau}{missing-style} } { \__atableau_tikzset:nn } { #1 } },
+
+ % tikzpicture environment
+ tikzpicture .tl_set:N= \l__atableau_tikzpicture_tl,
+ tikzpicture .value_required:n = true,
+ tikzpicture .initial:n =,
+
+ % tikz code after
+ tikz~after .tl_set:N = \l__atableau_tikz_after_tl,
+ tikz~after .value_required:n = true,
+ tikz~after .initial:n = ,
+
+ % tikz~ code before
+ tikz~before .tl_set:N = \l__atableau_tikz_before_tl,
+ tikz~before .value_required:n = true,
+ tikz~before .initial:n = ,
+
+ valign .choices:nn = { bottom, center, centre, top }
+ {
+ \cs_set_eq:Nc \__atableau_valign:n { __atableau_valign_#1:n }
+ },
+ valign .unknown .code:n = { \msg_error:nne { aTableau } { unknown-valign } {#1} },
+ valign .initial:n = centre,
+
+ xscale .code:n = { \__atableau_set_xscale:n {#1} },
+ xscale .value_required:n = true,
+ xscale .initial:n =1,
+
+ yscale .code:n = { \__atableau_set_yscale:n {#1} },
+ yscale .value_required:n = true,
+ yscale .initial:n =1,
+
+ % ---------------------------------------------------------------------------
+ % tableau settings
+
+ % convention switches
+ Australian .code:n = \__atableau_set_style:nn {tableau} {australian},
+ australian .code:n = \__atableau_set_style:nn {tableau} {australian},
+ australian .value_required:n = false,
+
+ English .code:n = \__atableau_set_style:nn {tableau} {english},
+ english .code:n = \__atableau_set_style:nn {tableau} {english},
+ english .value_required:n = false,
+ english .initial:n =, % default style
+
+ French .code:n = \__atableau_set_style:nn {tableau} {french},
+ french .code:n = \__atableau_set_style:nn {tableau} {french},
+ french .value_required:n = false,
+
+ ukrainian .code:n = \__atableau_set_style:nn {tableau} {ukrainian},
+ Ukrainian .code:n = \__atableau_set_style:nn {tableau} {ukrainian},
+ ukrainian .value_required:n = false,
+
+ Russian .code:n = \__atableau_set_style:nn {tableau} {ukrainian},
+ russian .code:n = \__atableau_set_style:nn {tableau} {ukrainian},
+
+ border .bool_set:N = \l__atableau_border_bool,
+ border .default:n = true,
+ border .initial:n = true,
+
+ no~border .bool_set_inverse:N = \l__atableau_border_bool,
+ no~border .default:n = true,
+
+ % border colours
+
+ border~color .tl_set:N = \l__atableau_outer_tl, % an alias
+ border~color .value_required:n = true,
+ border~colour .tl_set:N = \l__atableau_outer_tl,
+ border~colour .value_required:n = true,
+ border~colour .initial:n = aTableauMain,
+
+ border~style .code:n = { \__atableau_tikzset_append:nn {borderStyle} {#1} },
+ border~style .value_required:n = true,
+
+ % node height and width
+ box~height .fp_set:N = \l__atableau_box_ht_fp,
+ box~height .value_required:n = true,
+ box~height .initial:n = 0.5,
+
+ box~width .fp_set:N = \l__atableau_box_wd_fp,
+ box~width .value_required:n = true,
+ box~width .initial:n = 0.5,
+
+ % box styling
+ box~fill .tl_set:N = \l__atableau_box_fill_tl,
+ box~fill .value_required:n = true,
+ box~fill .initial:n = white,
+
+ box~font .tl_set:N = \l__atableau_box_font_tl,
+ box~font .value_required:n = true,
+ box~font .initial:n =,
+
+ box~shape .tl_set:N = \l__atableau_box_shape_tl,
+ box~shape .value_required:n = true,
+ box~shape .initial:n = rectangle,
+
+ box~text .tl_set:N = \l__atableau_box_text_tl,
+ box~text .value_required:n = true,
+ box~text .initial:n = aTableauMain,
+
+ box~style .code:n = { \__atableau_tikzset_append:nn {boxStyle} {#1} },
+ box~style .value_required:n = true,
+
+ boxes .bool_set:N = \l__atableau_boxes_bool,
+ boxes .default:n = true,
+ boxes .initial:n = true,
+
+ no~boxes .bool_set_inverse:N = \l__atableau_boxes_bool,
+ no~boxes .default:n = true,
+
+ conjugate .code:n =
+ {
+ \tl_set:Nx \l_tmpa_tl {\str_lowercase:n {#1}}
+ \str_if_eq:VnTF \l_tmpa_tl {true}
+ {
+ \bool_set_true:N \l__atableau_conjugate_bool
+ \cs_set_eq:NN \__atableau_set_box_coordinates:nnn \__atableau_set_box_coordinates_conjugate:nnn
+ }
+ {
+ \bool_set_false:N \l__atableau_conjugate_bool
+ \cs_set_eq:NN \__atableau_set_box_coordinates:nnn \__atableau_set_box_coordinates_normal:nnn
+ }
+ },
+ conjugate .default:n = true,
+ conjugate .initial:n = false,
+
+ inner~wall .tl_set:N = \l__atableau_inner_tl,
+ inner~wall .value_required:n = true,
+ inner~wall .initial:n = aTableauInner,
+
+ inner~style .code:n = { \__atableau_tikzset_append:nn {innerWall} {#1} },
+ inner~style .value_required:n = true,
+
+ % label
+ label .code:n = {
+ \tl_if_in:nnTF {#1} {|}
+ {
+ % unpack the ribbons into \l__atableau_multiribbons_seq
+ \seq_set_split:cnn {l__atableau_multilabel_seq} {|} {#1}
+ }
+ { \tl_set:No \l__atableau_label_tl {#1} }
+ },
+
+ label~style .code:n = { \__atableau_tikzset_append:nn {labelStyle} {#1} },
+ label~style .value_required:n = true,
+
+ % -- paths ---------------------------------------
+ paths .code:n = { \__atableau_set_multiseq_key:nn {paths} {#1} },
+ paths .initial:n = ,
+
+ path~style .code:n = { \__atableau_tikzset_append:nn {pathStyle} {#1} },
+ path~style .value_required:n = true,
+ path~style .initial:n =,
+
+ path~box .tl_set:N = \l__atableau_path_box_tl,
+ path~box .initial:n = ,
+
+ path~box~style .code:n = { \__atableau_tikzset_append:nn {pathBox} {#1} },
+ path~box~style .value_required:n = true,
+ path~box~style .initial:n =,
+
+ % -- ribbons ---------------------------------------
+ ribbons .code:n = { \__atableau_set_multiseq_key:nn {ribbons} {#1} },
+ ribbons .initial:n = ,
+
+ ribbon~style .code:n = { \__atableau_tikzset_append:nn {ribbonStyle} {#1} },
+ ribbon~style .value_required:n = true,
+ ribbon~style .initial:n =,
+
+ ribbon~box .tl_set:N = \l__atableau_ribbon_box_tl,
+ ribbon~box .initial:n = ,
+
+ ribbon~box~style .code:n = { \__atableau_tikzset_append:nn {ribbonBox} {#1} },
+ ribbon~box~style .value_required:n = true,
+ ribbon~box~style .initial:n =,
+
+ % -- snobs ---------------------------------------
+ snobs .code:n = { \__atableau_set_multiseq_key:nn {snobs} {#1} },
+ snobs .initial:n = ,
+
+ snob~style .code:n = { \__atableau_tikzset_append:nn {snobStyle} {#1} },
+ snob~style .value_required:n = true,
+ snob~style .initial:n =,
+
+ snob~box .tl_set:N = \l__atableau_snob_box_tl,
+ snob~box .initial:n = ,
+
+ snob~box~style .code:n = { \__atableau_tikzset_append:nn {snobBox} {#1} },
+ snob~box~style .value_required:n = true,
+ snob~box~style .initial:n =,
+
+ % -- shifted, skew and tabloid shapes ------------
+ shifted .bool_set:N = \l__atableau_shifted_bool,
+ shifted .initial:n = false,
+
+ skew .code:n =
+ {
+ \tl_if_in:nnTF {#1} {|}
+ {
+ % unpack the skew tableau into \l__atableau_multiskew_seq
+ \seq_set_split:Nnn \l__atableau_multiskew_seq {|} {#1}
+ }
+ { \__atableau_set_partition:nn {skew} {#1} }
+ },
+ skew .value_required:n = true,
+ skew .initial:n = 0,
+
+ skew~border .bool_set:N = \l__atableau_skew_border_bool,
+ skew~border .initial:n = false,
+
+ no~skew~border .bool_set_inverse:N = \l__atableau_skew_border_bool,
+ no~skew~border .default:n = true,
+
+ skew~border~style .code:n = { \__atableau_tikzset_append:nn {skewBorder} {#1} },
+ skew~border~style .value_required:n = true,
+
+ skew~boxes .bool_set:N = \l__atableau_skew_boxes_bool,
+ skew~boxes .default:n = true,
+ skew~boxes .initial:n = false,
+
+ no~skew~boxes .bool_set_inverse:N = \l__atableau_skew_boxes_bool,
+
+ skew~box~style .code:n = { \__atableau_tikzset_append:nn {skewBox} {#1} },
+ skew~box~style .value_required:n = true,
+
+ skew colour .tl_set:N = \l__atableau_skew_border_tl,
+ skew color .tl_set:N = \l__atableau_skew_border_tl,
+ skew colour .initial:n = aTableauSkew,
+
+ tabloid .bool_set:N = \l__atableau_tabloid_bool,
+ tabloid .initial:n = false,
+
+ % -- multitableaux and multidiagrams --------------------
+
+ delimiters .code:n = { \__atableau_set_delimiters:nn #1 },
+ delimiters .value_required:n = true,
+ delimiters .initial:n = (),
+
+ left~delimiter .tl_set:N = \l__atableau_left_delimiter_tl,
+ left~delimiter .value_required:n = true,
+
+ right~delimiter .tl_set:N = \l__atableau_right_delimiter_tl,
+ right~delimiter .value_required:n = true,
+
+ empty .tl_set:N = \l__atableau_empty_tl,
+ empty .initial:n = \textendash,
+
+ separators .bool_set:N = \l__atableau_separators_bool,
+ separators .default:n = true,
+ separators .initial:n = true,
+
+ no~separators .bool_set_inverse:N = \l__atableau_separators_bool,
+ no~separators .default:n = true,
+
+ separation .fp_set:N = \l__atableau_separation_fp,
+ separation .value_required:n = true,
+ separation .initial:n = 0.3,
+
+ separator .tl_set:N = \l__atableau_separator_tl,
+ separator .value_required:n = true,
+ separator .initial:n = |,
+
+ separator~colour .tl_set:N = \l__atableau_separator_fg_tl,
+ separator~colour .value_required:n = true,
+ separator~colour .initial:n = aTableauMain,
+
+ separator~color .tl_set:N = \l__atableau_separator_fg_tl,
+ separator~color .value_required:n = true,
+
+ % set rows in abacuses, multitableau and multidiagrams
+ rows .code:n = {
+ \fp_set:Nn \l__atableau_rows_fp {#1}
+ \int_set:No \l__atableau_rows_int {\fp_to_int:N \l__atableau_rows_fp}
+ },
+ rows .value_required:n = true,
+ rows .initial:n = 0,
+
+ xoffsets .code:n = { \regex_split:nnN {[\|,]} {#1} \l__atableau_xoffsets_seq },
+ xoffsets .value_required:n = true,
+ xoffsets .initial:n = 0,
+
+ yoffsets .code:n = { \regex_split:nnN {[\|,]} {#1} \l__atableau_yoffsets_seq },
+ yoffsets .value_required:n = true,
+ yoffsets .initial:n = 0,
+
+ % ---------------------------------------------------------------------------
+ % abacus keys
+
+ south .code:n = \__atableau_set_style:nn {abacus} {south},
+ south .initial:n =,
+ east .code:n = \__atableau_set_style:nn {abacus} {east},
+ north .code:n = \__atableau_set_style:nn {abacus} {north},
+ west .code:n = \__atableau_set_style:nn {abacus} {west},
+
+ % abacus style
+ abacus~ends .code:n = { \__atableau_set_abacus_ends:nn #1 },
+ abacus~ends .value_required:n = true,
+ abacus~ends .initial:n = {-|},
+
+ abacus~ends~style .code:n = { \__atableau_tikzset_append:nn {abacusEnds} {#1} },
+ abacus~ends~style .value_required:n = true,
+
+ abacus~star~style .code:n = { \__atableau_tikzset_append:nn {abacusStarStyle} {#1} },
+ abacus~star~style .value_required:n = true,
+
+ bead .tl_set:N = \l__atableau_bead_tl, % bead colour
+ bead .value_required:n = true,
+ bead .initial:n = aTableauMain,
+
+ bead~font .tl_set:N = \l__atableau_bead_font_tl, % bead font
+ bead~font .initial:n = \small,
+ bead~font .value_required:n = true,
+
+ bead~size .fp_set:N = \l__atableau_bead_size_fp,
+ bead~size .initial:n = 0.4,
+
+ bead~sep .fp_set:N = \l__atableau_abacus_ht_fp, % bead separation
+ bead~sep .value_required:n = true,
+ bead~sep .initial:n = 0.42,
+
+ bead~shape .tl_set:N = \l__atableau_bead_shape_tl, % bead shape colour
+ bead~shape .value_required:n = true,
+ bead~shape .initial:n = circle,
+
+ bead~style .code:n = { \__atableau_tikzset_append:nn {beadStyle} {#1} },
+ bead~style .value_required:n = true,
+
+ bead~text .tl_set:N = \l__atableau_bead_text_tl, % bead text colour
+ bead~text .value_required:n = true,
+ bead~text .initial:n = white,
+
+ beta~numbers .bool_set:N = \l__atableau_beta_numbers_bool,
+ beta~numbers .initial:n = false,
+
+ no~shade .code:n = { \__atableau_tikzset_append:nn {beadStyle} {no~shade,} },
+ no~shade .value_required:n = false,
+
+ runner .tl_set:N = \l__atableau_runner_tl, % runner colour
+ runner .value_required:n = true,
+ runner .initial:n = aTableauInner,
+
+ runner~style .code:n = { \__atableau_tikzset_append:nn {runnerStyle} {#1} },
+ runner~style .value_required:n = true,
+
+ runner~labels .code:n = { \seq_set_split:Nnn \l__atableau_runner_labels_seq {,} {#1} },
+ runner~labels .value_required:n = true,
+
+ runner~label~style .code:n = { \__atableau_tikzset_append:nn {runnerLabelStyle} {#1} },
+ runner~label~style .value_required:n = true,
+
+ runner~sep .fp_set:N = \l__atableau_abacus_wd_fp, % runner separation
+ runner~sep .value_required:n = true,
+ runner~sep .initial:n = 0.42,
+
+ shading .tl_set:N = \l__atableau_shading_tl,
+ shading .value_required:n = true,
+ shading .initial:n = ball,
+
+ tick .tl_set:N = \l__atableau_tick_tl, % tick colour
+ tick .initial:n = aTableauInner,
+
+ tick~length .code:n = { \fp_set:Nn \l__atableau_tick_length_fp {#1/2} }, % (half) tick width separation
+ tick~length .value_required:n = true,
+ tick~length .initial:n = 0.1,
+
+ tick~style .code:n = { \__atableau_tikzset_append:nn {tickStyle} {#1} },
+ tick~style .value_required:n = true,
+}
+
+
+% ---------------------------------------------------------------------------
+% Usage: \__atableau_set_origin:nn (x,y)
+% Set the Cartesian coordinates for the corner of the (1,1) box
+% TODO: allow general TikZ-coorindates. To do this we could, for example, use ideas from
+% https://tex.stackexchange.com/questions/33703/extract-x-y-coordinate-of-an-arbitrary-point-in-tikz
+\cs_new_protected:Npn \__atableau_set_origin:nn (#1,#2)
+{
+ \fp_set:Nn \l__atableau_x_fp {#1}
+ \fp_set:Nn \l__atableau_y_fp {#2}
+}
+
+% usage: \__atableau_tikzpicture:nnn {settings} {origin} {aTableau command}
+% where
+% - #1: settings are a comma separated list of aTableau settings
+% - #2: origin are Cartesian coordinates in the form x,y, or NoValue
+% - #3: an internal aTableau command with parameters for drawing something
+% Apply settings and wrap an aTableau command inside a tikzpicture environment.
+% Add any tikzpicture environments settings and before and after TikZ commands
+\cs_new_protected:Npn \__atableau_tikzpicture:nnn #1 #2 #3
+{
+ \group_begin:
+ % keep changes to settings local by working inside a group
+ \keys_set:nn {atableau} {#1}
+ \IfNoValueTF {#2}
+ { % wrap inside a tikzpicture environment, placing the picture at (0,0)
+ \__atableau_set_origin:nn (0,0)
+
+ \mode_if_math:TF
+ {
+ % We want to automatically rescale when used as a subscript, which
+ % we do by putting the tikz code inside a box and then using
+ % \mathchoice to adjust for script size, using an idea of cfr's
+
+ \hbox_set:Nw \l_tmpa_box
+ \exp_last_unbraced:Ne \tikz{[\l__atableau_tikzpicture_tl]}
+ { \l__atableau_tikz_before_tl #3 \l__atableau_tikz_after_tl }
+ \hbox_set_end:
+
+ \mathchoice
+ { % display style: do nothing
+ \box_use:N \l_tmpa_box
+ }
+ { % text style: do nothing
+ \box_use:N \l_tmpa_box
+ }
+ { % script style: rescale
+ \box_scale:Nnn \l_tmpa_box {\l__atableau_script_fp*\l__atableau_xscale_fp}
+ {\l__atableau_script_fp*\l__atableau_yscale_fp}
+ \box_use:N \l_tmpa_box
+ }
+ { % scriptscript style: rescale
+ \box_scale:Nnn \l_tmpa_box {\l__atableau_scriptscript_fp*\l__atableau_xscale_fp}
+ {\l__atableau_scriptscript_fp*\l__atableau_yscale_fp}
+ \box_use:N \l_tmpa_box
+ }
+ }
+ { % Not in maths-mode. tcolorbox objects to using a box here
+ \exp_last_unbraced:Ne \tikz{[\l__atableau_tikzpicture_tl]}
+ { \l__atableau_tikz_before_tl #3 \l__atableau_tikz_after_tl }
+ }
+ }
+ { % already inside a tikzpicture environment
+ \__atableau_set_origin:nn (#2)
+ \l__atableau_tikz_before_tl #3 \l__atableau_tikz_after_tl
+ }
+ \group_end:
+}
+
+% ---------------------------------------------------------------------------
+% Public facing package commands
+
+% Almost all public-facing routines call \__atableau_tikzpicture:nnn,
+% which applies the settings, sets the coordinates of the origin and
+% then ensures that the requested diagram is drawn inside a tikzpicture
+% environment.
+
+% \Abacus (x,y) [style] {#runners} {partition}
+\NewDocumentCommand\Abacus{ d() O{} m m }
+{
+ \__atableau_tikzpicture:nnn {#2} {#1} { \__atableau_abacus:nn {#3} {#4} }
+}
+
+% \Diagram (x,y) [style] {shape}
+\NewDocumentCommand\Diagram{ d() O{} m }
+{
+ \__atableau_tikzpicture:nnn {#2} {#1} { \__atableau_draw_diagram:n {#3} }
+}
+
+% \Multidiagram (x,y) [style] {entries}
+\NewDocumentCommand\Multidiagram{ d() O{} m }
+{
+ \__atableau_tikzpicture:nnn {#2} {#1} { \__atableau_multidiagram:n {#3} }
+}
+
+% \Multitableau (x,y) [style] {entries}
+\NewDocumentCommand\Multitableau{ d() O{} m }
+{
+ \__atableau_tikzpicture:nnn {#2} {#1} { \__atableau_multitableau:n {#3} }
+}
+
+% \RibbonTableau (x,y) [style] {entries}
+\NewDocumentCommand\RibbonTableau{ d() O{} m }
+{
+ \__atableau_tikzpicture:nnn {#2} {#1} { \__atableau_ribbon_tableau:n {#3} }
+}
+
+% \ShiftedDiagram (x,y) [style] {entries}
+\NewDocumentCommand\ShiftedDiagram{ d() O{} m }
+{
+ \__atableau_tikzpicture:nnn {shifted,#2} {#1} { \__atableau_draw_diagram:n {#3} }
+}
+
+% \ShiftedTableau (x,y) [style] {entries}
+\NewDocumentCommand\ShiftedTableau{ d() O{} m }
+{
+ \__atableau_tikzpicture:nnn {shifted,#2} {#1} { \__atableau_draw_tableau:n {#3} }
+}
+
+% \SkewDiagram (x,y) [style] {skew shape} {entries}
+\NewDocumentCommand\SkewDiagram{ d() O{} m m }
+{
+ \__atableau_tikzpicture:nnn {skew={#3},#2} {#1} { \__atableau_draw_diagram:n {#4} }
+}
+
+% \SkewTableau (x,y) [style] {skew shape} {entries}
+\NewDocumentCommand\SkewTableau{ d() O{} m m }
+{
+ \__atableau_tikzpicture:nnn {skew={#3},#2} {#1} { \__atableau_draw_tableau:n {#4} }
+}
+
+% \Tableau (x,y) [style] {entries}
+\NewDocumentCommand\Tableau{ d() O{} m }
+{
+ \__atableau_tikzpicture:nnn {#2} {#1} { \__atableau_draw_tableau:n {#3} }
+}
+
+% \Tabloid (x,y) [style] {entries}
+\NewDocumentCommand\Tabloid{ d() O{} m }
+{
+ \__atableau_tikzpicture:nnn {tabloid,#2} {#1} { \__atableau_draw_tableau:n {#3} }
+}
+
+\NewDocumentCommand\aTabset{ m }{ \keys_set:nn { atableau } {#1} }
+
+% ---------------------------------------------------------------------------
+% Finally, now that everything is defined, process the package options.
+
+\IfFormatAtLeastTF { 2022-06-01 }
+ { \ProcessKeyOptions [ atableau ] }
+ {
+ \RequirePackage { l3keys2e }
+ \ProcessKeysOptions { atableau }
+ }
+
+\endinput
+
+% ---------------------------------------------------------------------------
+% CHANGE LOG
+%
+% Version 1.0.0 - 2023-10-06
+% - initial version
+% - Young diagrams, tabloids, tableaux, shifted tableaux, Ukrainian tableaux, abacuses, braids
+%
+% Version 2.0.0 - 2025-01-22
+% - completely rewritten using LaTeX3
+% - key interface for the tableaux options
+% - macros can be used both in and outside tikzpicture environments
+% - a quark-based interface allows styles to be applied to each tableau entry
+% - support for different conventions (english, french, ukrainian, australian)
+% - support diagrams, tableaux, including tabloids, skew and shifted tableaux and ribbon tableaux
+% - stars and styles
+%
+% Version 2.1.0 - 2025-01-24
+% - support for using aTableau commands in super and subscripts
+% - warning about using older versions of LaTeX3
+
+
+% ---------------------------------------------------------------------------
+%
+% Copyright (C) 2022-25 by Andrew Mathas <andrew.mathas@gmail.com>
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License (LPPL), either
+% version 1.3c of this license or (at your option) any later
+% version. The latest version of this license is in the file:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% This work is "maintained" (as per LPPL maintenance status) by
+% Andrew Mathas.
+%
+% This package consists of the files:
+% atableau.ini
+% atableau.pdf
+% atableau.sty
+% atableau.tex
+% LICENSE
+% README.md
+%
+% ---------------------------------------------------------------------------
+
+% end of atableau.sty
diff --git a/Master/texmf-dist/tex/latex/atveryend/atveryend.sty b/Master/texmf-dist/tex/latex/atveryend/atveryend.sty
index f9468aed8e9..5d291d2700f 100644
--- a/Master/texmf-dist/tex/latex/atveryend/atveryend.sty
+++ b/Master/texmf-dist/tex/latex/atveryend/atveryend.sty
@@ -9,11 +9,11 @@
%% This is a generated file.
%%
%% Project: atveryend
-%% Version: 2019-12-11 v1.11
+%% Version: 2024-08-06 v1.12
%%
%% Copyright (C)
%% 2009-2011 Heiko Oberdiek
-%% 2016-2019 Oberdiek Package Support Group
+%% 2016-2024 Oberdiek Package Support Group
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -31,686 +31,19 @@
%% Heiko Oberdiek and the Oberdiek Package Support Group
%% https://github.com/ho-tex/atveryend/issues
%%
-%%
%% This work consists of the main source file atveryend.dtx
%% and the derived files
%% atveryend.sty, atveryend.pdf, atveryend.ins, atveryend.drv,
%% atveryend-test1.tex.
%%
-\begingroup\catcode61\catcode48\catcode32=10\relax%
- \catcode13=5 % ^^M
- \endlinechar=13 %
- \catcode123=1 % {
- \catcode125=2 % }
- \catcode64=11 % @
- \def\x{\endgroup
- \expandafter\edef\csname AtVeryEnd@AtEnd\endcsname{%
- \endlinechar=\the\endlinechar\relax
- \catcode13=\the\catcode13\relax
- \catcode32=\the\catcode32\relax
- \catcode35=\the\catcode35\relax
- \catcode61=\the\catcode61\relax
- \catcode64=\the\catcode64\relax
- \catcode123=\the\catcode123\relax
- \catcode125=\the\catcode125\relax
- }%
- }%
-\x\catcode61\catcode48\catcode32=10\relax%
-\catcode13=5 % ^^M
-\endlinechar=13 %
-\catcode35=6 % #
-\catcode64=11 % @
-\catcode123=1 % {
-\catcode125=2 % }
-\def\TMP@EnsureCode#1#2{%
- \edef\AtVeryEnd@AtEnd{%
- \AtVeryEnd@AtEnd
- \catcode#1=\the\catcode#1\relax
- }%
- \catcode#1=#2\relax
-}
-\TMP@EnsureCode{9}{10}% (tab)
-\TMP@EnsureCode{39}{12}% '
-\TMP@EnsureCode{40}{12}% (
-\TMP@EnsureCode{41}{12}% )
-\TMP@EnsureCode{42}{12}% *
-\TMP@EnsureCode{45}{12}% -
-\TMP@EnsureCode{46}{12}% .
-\TMP@EnsureCode{47}{12}% /
-\TMP@EnsureCode{62}{12}% >
-\TMP@EnsureCode{91}{12}% [
-\TMP@EnsureCode{93}{12}% ]
-\TMP@EnsureCode{96}{12}% `
-\edef\AtVeryEnd@AtEnd{\AtVeryEnd@AtEnd\noexpand\endinput}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{atveryend}%
- [2019-12-11 v1.11 Hooks at the very end of document (HO)]
-\def\AtVeryEnd@ifundefined#1{%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname #1\endcsname\relax
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
-}
-\let\AtVeryEnd@BeforeClearDocumentHook\@empty
-\let\AtVeryEnd@AfterLastShipoutHook\@empty
-\let\AtVeryEnd@AtVeryEndDocumentHook\@empty
-\let\AtVeryEnd@AtEndAfterFileListHook\@empty
-\let\AtVeryEnd@AtVeryVeryEndHook\@empty
-\newcommand*{\BeforeClearDocument}{%
- \g@addto@macro\AtVeryEnd@BeforeClearDocumentHook
-}
-\newcommand*{\AfterLastShipout}{%
- \g@addto@macro\AtVeryEnd@AfterLastShipoutHook
-}
-\newcommand*{\AtVeryEndDocument}{%
- \g@addto@macro\AtVeryEnd@AtVeryEndDocumentHook
-}
-\newcommand*{\AtEndAfterFileList}{%
- \g@addto@macro\AtVeryEnd@AtEndAfterFileListHook
-}
-\newcommand*{\AtVeryVeryEnd}{%
- \g@addto@macro\AtVeryEnd@AtVeryVeryEndHook
-}
-\newcommand*{\Call@BeforeClearDocument}{%
- \let\BeforeClearDocument\@firstofone
- \ifx\AtVeryEnd@BeforeClearDocumentHook\@empty
- \PackageInfo{atveryend}{Empty hook `BeforeClearDocument'}%
- \else
- \PackageInfo{atveryend}{Executing hook `BeforeClearDocument'}%
- \AtVeryEnd@BeforeClearDocumentHook
- \fi
- \global\let\AtVeryEnd@BeforeClearDocumentHook\@undefined
- \global\let\Call@BeforeClearDocument\relax
-}
-\newcommand*{\Call@AfterLastShipout}{%
- \let\AfterLastShipout\@firstofone
- \ifx\AtVeryEnd@AfterLastShipoutHook\@empty
- \PackageInfo{atveryend}{Empty hook `AfterLastShipout'}%
- \else
- \PackageInfo{atveryend}{Executing hook `AfterLastShipout'}%
- \AtVeryEnd@AfterLastShipoutHook
- \fi
- \global\let\AtVeryEnd@AfterLastShipoutHook\@undefined
- \global\let\Call@AfterLastShipout\relax
-}
-\newcommand*{\Call@AtVeryEndDocument}{%
- \let\AtVeryEndDocument\@firstofone
- \ifx\AtVeryEnd@AtVeryEndDocumentHook\@empty
- \PackageInfo{atveryend}{Empty hook `AtVeryEndDocument'}%
- \else
- \PackageInfo{atveryend}{Executing hook `AtVeryEndDocument'}%
- \AtVeryEnd@AtVeryEndDocumentHook
- \fi
- \global\let\AtVeryEnd@AtVeryEndDocumentHook\@undefined
- \global\let\Call@AtVeryEndDocument\relax
-}
-\newcommand*{\Call@AtEndAfterFileList}{%
- \Call@AtVeryEndDocument
- \let\AtEndAfterFileList\@firstofone
- \ifx\AtVeryEnd@AtEndAfterFileListHook\@empty
- \PackageInfo{atveryend}{Empty hook `AtEndAfterFileList'}%
- \else
- \PackageInfo{atveryend}{Executing hook `AtEndAfterFileList'}%
- \AtVeryEnd@AtEndAfterFileListHook
- \fi
- \global\let\AtVeryEnd@AtEndAfterFileListHook\@undefined
- \global\let\Call@AtEndAfterFileList\relax
-}
-\newcommand*{\Call@AtVeryVeryEnd}{%
- \Call@AtEndAfterFileList
- \let\AtVeryVeryEnd\@firstofone
- \ifx\AtVeryEnd@AtVeryVeryEndHook\@empty
- \PackageInfo{atveryend}{Empty hook `AtVeryVeryEnd'}%
- \else
- \PackageInfo{atveryend}{Executing hook `AtVeryVeryEnd'}%
- \AtVeryEnd@AtVeryVeryEndHook
- \fi
- \global\let\AtVeryEnd@AtVeryVeryEndHook\@undefined
- \global\let\Call@AtVeryVeryEnd\relax
-}
-\def\AtVeryEnd@test@standard{%
- \let\AtEndDocument\@firstofone
- \@enddocumenthook
- \@checkend{document}%
- \clearpage
- \begingroup
- \if@filesw
- \immediate\closeout\@mainaux
- \let\@setckpt\@gobbletwo
- \let\@newl@bel\@testdef
- \@tempswafalse
- \makeatletter
- \input\jobname.aux %
- \fi
- \@dofilelist
- \ifdim \font@submax >\fontsubfuzz\relax
- \@font@warning{Size substitutions with differences\MessageBreak
- up to \font@submax\space have occurred.\@gobbletwo}%
- \fi
- \@defaultsubs
- \@refundefined
- \if@filesw
- \ifx \@multiplelabels \relax
- \if@tempswa
- \@latex@warning@no@line{Label(s) may have changed. %
- Rerun to get cross-references right}%
- \fi
- \else
- \@multiplelabels
- \fi
- \fi
- \endgroup
- \deadcycles\z@
- \@@end
-}
-\def\AtVeryEnd@enddocument@standard{%
- \let\AtEndDocument\@firstofone
- \@enddocumenthook
- \@checkend{document}%
- \Call@BeforeClearDocument
- \clearpage
- \Call@AfterLastShipout
- \begingroup
- \if@filesw
- \immediate\closeout\@mainaux
- \let\@setckpt\@gobbletwo
- \let\@newl@bel\@testdef
- \@tempswafalse
- \makeatletter
- \input\jobname.aux %
- \fi
- \Call@AtVeryEndDocument
- \@dofilelist
- \Call@AtEndAfterFileList
- \ifdim \font@submax >\fontsubfuzz\relax
- \@font@warning{Size substitutions with differences\MessageBreak
- up to \font@submax\space have occurred.\@gobbletwo}%
- \fi
- \@defaultsubs
- \@refundefined
- \if@filesw
- \ifx \@multiplelabels \relax
- \if@tempswa
- \@latex@warning@no@line{Label(s) may have changed. %
- Rerun to get cross-references right}%
- \fi
- \else
- \@multiplelabels
- \fi
- \fi
- \endgroup
- \deadcycles\z@
- \Call@AtVeryVeryEnd
- \@@end
-}
-\expandafter\def\csname AtVeryEnd@test@standard20110627\endcsname{%
- \let\AtEndDocument\@firstofone
- \@enddocumenthook
- \@checkend{document}%
- \clearpage
- \begingroup
- \if@filesw
- \immediate\closeout\@mainaux
- \let\@setckpt\@gobbletwo
- \let\@newl@bel\@testdef
- \@tempswafalse
- \makeatletter
- \@@input\jobname.aux %
- \fi
- \@dofilelist
- \ifdim \font@submax >\fontsubfuzz\relax
- \@font@warning{Size substitutions with differences\MessageBreak
- up to \font@submax\space have occurred.\@gobbletwo}%
- \fi
- \@defaultsubs
- \@refundefined
- \if@filesw
- \ifx \@multiplelabels \relax
- \if@tempswa
- \@latex@warning@no@line{Label(s) may have changed. %
- Rerun to get cross-references right}%
- \fi
- \else
- \@multiplelabels
- \fi
- \fi
- \endgroup
- \deadcycles\z@
- \@@end
-}
-\expandafter\def\csname AtVeryEnd@enddocument@standard20110627\endcsname{%
- \let\AtEndDocument\@firstofone
- \@enddocumenthook
- \@checkend{document}%
- \Call@BeforeClearDocument
- \clearpage
- \Call@AfterLastShipout
- \begingroup
- \if@filesw
- \immediate\closeout\@mainaux
- \let\@setckpt\@gobbletwo
- \let\@newl@bel\@testdef
- \@tempswafalse
- \makeatletter
- \@@input\jobname.aux %
- \fi
- \Call@AtVeryEndDocument
- \@dofilelist
- \Call@AtEndAfterFileList
- \ifdim \font@submax >\fontsubfuzz\relax
- \@font@warning{Size substitutions with differences\MessageBreak
- up to \font@submax\space have occurred.\@gobbletwo}%
- \fi
- \@defaultsubs
- \@refundefined
- \if@filesw
- \ifx \@multiplelabels \relax
- \if@tempswa
- \@latex@warning@no@line{Label(s) may have changed. %
- Rerun to get cross-references right}%
- \fi
- \else
- \@multiplelabels
- \fi
- \fi
- \endgroup
- \deadcycles\z@
- \Call@AtVeryVeryEnd
- \@@end
-}
-\expandafter\def\expandafter\AtVeryEnd@test@booklet\expandafter{%
- \expandafter\twoupclearpage
- \AtVeryEnd@test@standard
-}
-\expandafter\def\expandafter\AtVeryEnd@enddocument@booklet\expandafter{%
- \expandafter\twoclearpage
- \AtVeryEnd@enddocument@standard
-}
-\def\AtVeryEnd@test@dinbrief{%
- \@checkend{document} %
- \newpage
- \begingroup
- \if@filesw
- \ifnum\c@labelgen>0 %
- \immediate\closeout\@mainlbl
- \makeatletter
- \input \jobname@lbl\relax
- \clearpage
- \fi
- \immediate\closeout\@mainaux
- \fi
- \endgroup
- \deadcycles\z@
- \@@end
-}
-\def\AtVeryEnd@enddocument@dinbrief{%
- \@checkend{document}%
- \Call@BeforeClearDocument
- \newpage
- \Call@AfterLastShipout
- \begingroup
- \if@filesw
- \ifnum\c@labelgen>\z@
- \immediate\closeout\@mainlbl
- \makeatletter
- \input \jobname@lbl\relax
- \clearpage
- \fi
- \immediate\closeout\@mainaux
- \fi
- \Call@AtVeryEndDocument
- \csname @dofilelist\endcsname
- \Call@AtEndAfterFileList
- \endgroup
- \deadcycles\z@
- \Call@AtVeryVeryEnd
- \@@end
-}
-\def\AtVeryEnd@test@combine{%
- \@enddocumenthook
- \@checkend{document}%
- \clearpage
- \begingroup
- \if@filesw
- \immediate\closeout\@mainaux
- \immediate\closeout\@partaux
- \let\@setckpt\@gobbletwo
- \let\@newl@bel\@testdef
- \@tempswafalse
- \makeatletter \input\c@lmainauxfile %% change here
- \fi
- \c@lenddoca %% a replacement
- \@refundefined
- \endgroup
- \deadcycles\z@
- \@@end
-}
-\def\AtVeryEnd@enddocument@combine{%
- \@enddocumenthook
- \@checkend{document}%
- \Call@BeforeClearDocument
- \clearpage
- \Call@AfterLastShipout
- \begingroup
- \if@filesw
- \immediate\closeout\@mainaux
- \immediate\closeout\@partaux
- \let\@setckpt\@gobbletwo
- \let\@newl@bel\@testdef
- \@tempswafalse
- \makeatletter \input\c@lmainauxfile %% change here
- \fi
- \Call@AtVeryEndDocument
- \c@lenddoca %% a replacement
- \@refundefined
- \endgroup
- \deadcycles\z@
- \Call@AtVeryVeryEnd
- \@@end
-}
-\long\def\AtVeryEnd@test@c@lenddoca{%
- \@dofilelist
- \ifdim\font@submax>\fontsubfuzz\relax
- \@font@warning{%
- Size substitutions with differences\MessageBreak
- up to \font@submax\space have occured.\@gobbletwo
- }%
- \fi
- \@defaultsubs
- \if@filesw
- \ifx\@multiplelabels\relax
- \if@tempswa
- \@latex@warning@no@line{%
- Label(s) may have changed. %
- Rerun to get cross-references right%
- }%
- \fi
- \else
- \@multiplelabels
- \fi
- \fi
-}
-\ifx\AtVeryEnd@c@lenddoca\c@lenddoca
- \def\c@lenddoca{%
- \@dofilelist
- \Call@AtEndAfterFileList
- \ifdim\font@submax>\fontsubfuzz\relax
- \@font@warning{%
- Size substitutions with differences\MessageBreak
- up to \font@submax\space have occured.\@gobbletwo
- }%
- \fi
- \@defaultsubs
- \if@filesw
- \ifx\@multiplelabels\relax
- \if@tempswa
- \@latex@warning@no@line{%
- Label(s) may have changed. %
- Rerun to get cross-references right%
- }%
- \fi
- \else
- \@multiplelabels
- \fi
- \fi
- }%
-\fi
-\def\AtVeryEnd@test@jpsj{%
- \if@lastpagebalancing
- \global\let\@outputdblcol=\balancing@outputdblcol
- \fi
- \@checkend{document}%
- \clearpage
- \begingroup
- \if@filesw
- \immediate\closeout\@mainaux
- \def\global\@namedef##1##2{}%
- \def\newlabel{\@testdef r}%
- \def\bibcite{\@testdef b}%
- \@tempswafalse
- \makeatletter
- \input \jobname.aux %
- \if@tempswa
- \@warning{%
- Label(s) may have changed. %
- Rerun to get cross-references right%
- }%
- \fi
- \fi
- \endgroup
- \deadcycles\z@
- \@@end
-}
-\def\AtVeryEnd@enddocument@jpsj{%
- \if@lastpagebalancing
- \global\let\@outputdblcol=\balancing@outputdblcol
- \fi
- \@checkend{document}%
- \Call@BeforeClearDocument
- \clearpage
- \Call@AfterLastShipout
- \begingroup
- \if@filesw
- \immediate\closeout\@mainaux
- \def\global\@namedef##1##2{}%
- \def\newlabel{\@testdef r}%
- \def\bibcite{\@testdef b}%
- \@tempswafalse
- \makeatletter
- \input \jobname.aux %
- \if@tempswa
- \@warning{%
- Label(s) may have changed. %
- Rerun to get cross-references right%
- }%
- \fi
- \fi
- \Call@AtVeryEndDocument
- \csname @dofilelist\endcsname
- \Call@AtEndAfterFileList
- \endgroup
- \deadcycles\z@
- \Call@AtVeryVeryEnd
- \@@end
-}
-\def\AtVeryEnd@Test#1#2{%
- \expandafter\ifx\csname AtVeryEnd@test@#2\endcsname#1%
- \expandafter\let\expandafter#1%
- \csname AtVeryEnd@enddocument@#2\endcsname
- \begingroup
- \let\on@line\@empty
- \PackageInfo{atveryend}{%
- \string#1 detected (#2)%
- }%
- \endgroup
- \expandafter\AtVeryEnd@SkipToNil
- \fi
-}
-\def\AtVeryEnd@SkipToNil#1\@nil{}
-\def\AtVeryEnd@RedefEndDocument#1{%
- \ifx#1\@undefined
- \else
- \AtVeryEnd@Test#1{standard20110627}%
- \AtVeryEnd@Test#1{standard}%
- \AtVeryEnd@Test#1{booklet}%
- \AtVeryEnd@Test#1{dinbrief}%
- \AtVeryEnd@Test#1{combine}%
- \AtVeryEnd@Test#1{jpsj}%
- \AtVeryEnd@SkipToNil
- \@nil
- \fi
-}
-\AtVeryEnd@RedefEndDocument\enddocument
-\AtVeryEnd@RedefEndDocument\AP@enddocument % afterpage.sty
-\AtVeryEnd@RedefEndDocument\hyper@back@cite@enddocument % htx-bc.sty
-\AtVeryEnd@RedefEndDocument\hyper@enddocument % hyper.sty
-\AtVeryEnd@RedefEndDocument\hyper@fn@enddocument % hyper.sty
-\AtVeryEnd@RedefEndDocument\cweb@save@enddocument % cweb.cls
-\AtVeryEnd@RedefEndDocument\prev@enddocument % flushend.sty
-\AtVeryEnd@RedefEndDocument\endorigdocument % gaceta.cls
-\AtVeryEnd@RedefEndDocument\keependdoc % aguplus.sty
-\AtVeryEnd@RedefEndDocument\EMenddocument % t-angles.sty
-\AtVeryEnd@RedefEndDocument\docmute@enddocument % docmute.sty
-\AtVeryEnd@RedefEndDocument\a@enddocument % alatex.sty
-\AtVeryEnd@RedefEndDocument\enddocumentasusual % frenchle.sty
-\AtVeryEnd@RedefEndDocument\old@enddocument % uwthesis.cls
-\def\AtVeryEnd@document{document}%
-\def\AtVeryEnd@RedefCheckEnd{%
- \expandafter\def\expandafter\@checkend
- \expandafter##\expandafter1\expandafter{%
- \@checkend{##1}%
- \def\AtVeryEnd@temp{##1}%
- \ifx\AtVeryEnd@temp\AtVeryEnd@document
- \let\AtVeryEnd@OrgClearpage\clearpage
- \def\clearpage{%
- \let\clearpage\AtVeryEnd@OrgClearpage
- \Call@BeforeClearDocument
- \clearpage
- \Call@AfterLastShipout
- }%
- \fi
- }%
- \aftergroup\AtVeryEnd@RedefCheckEnd
-}%
-\AtBeginDocument{%
- \AtEndDocument{%
- \AtVeryEnd@RedefCheckEnd
- }%
-}
-\AtEndDocument{%
- \@ifundefined{@dofilelist}{%
- \gdef\@dofilelist{%
- \Call@AtVeryEndDocument
- \Call@AtEndAfterFileList
- }%
- }{%
- \begingroup
- \toks@\expandafter{\@dofilelist}%
- \xdef\@dofilelist{%
- \noexpand\Call@AtVeryEndDocument
- \the\toks@
- \noexpand\Call@AtEndAfterFileList
- }%
- \endgroup
- }%
-}
-\AtBeginDocument{%
- \@ifpackageloaded{scrlfile}{%
- \AtVeryEnd@ifundefined{BeforeClosingMainAux}{}{%
- \BeforeClosingMainAux{\Call@AfterLastShipout}%
- }%
- \AtVeryEnd@ifundefined{AfterReadingMainAux}{}{%
- \AfterReadingMainAux{\Call@AtVeryEndDocument}%
- }%
- }{}%
- \@ifpackageloaded{etoolbox}{%
- \AtVeryEnd@ifundefined{AfterEndDocument}{}{%
- \AfterEndDocument{\Call@AtVeryEndDocument}%
- }%
- }{}%
-}
-\def\AtVeryEnd@temp{%
- \AtBeginDocument{%
- \let\@startlabels\startlabels
- \let\@mlabel\mlabel
- \if@filesw
- \immediate\write\@mainaux{\string\@startlabels}%
- \fi
- }%
- \AtEndDocument{%
- \if@filesw
- \immediate\write\@mainaux{\string\clearpage}%
- \fi
- }%
-}
-\ifx\makelabels\AtVeryEnd@temp
-\else
- \expandafter\AtVeryEnd@AtEnd
-\fi%
-\let\AtVeryEnd@PatchLetter=N%
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname endletter\endcsname\relax
-\else
- \long\def\AtVeryEnd@TestEndLetter#1\@auxout#2#3\AtVeryEnd@Nil{%
- \def\AtVeryEnd@temp{#2}%
- \ifx\AtVeryEnd@temp\@empty
- \else
- \@onelevel@sanitize\AtVeryEnd@temp
- \edef\AtVeryEnd@StringMlabel{%
- \string\string
- \string\@mlabel
- \expandafter\@gobble\string\{%
- }%
- \def\AtVeryEnd@CatchFirst##1##2##3##4##5##6##7##8{%
- ##1##2##3##4##5##6##7##8\AtVeryEnd@CatchSecond
- }%
- \def\AtVeryEnd@CatchSecond##1##2##3##4##5##6##7##8##9\@nil{%
- ##1##2##3##4##5##6##7##8%
- }%
- \edef\AtVeryEnd@temp{%
- \expandafter\AtVeryEnd@CatchFirst\AtVeryEnd@temp
- {}{}{}{}{}{}{}{}%
- {}{}{}{}{}{}{}{}%
- \@nil
- }%
- \ifx\AtVeryEnd@temp\AtVeryEnd@StringMlabel
- \expandafter\def\expandafter\endletter\expandafter{%
- \endletter
- \begingroup
- \let\\=\relax
- \let\protect\@unexpandable@protect
- \let\@mlabel=\relax
- \edef\x{\endgroup
- \noexpand\AtEndDocument{%
- \@gobble#2%
- }%
- }%
- \x
- }%
- \let\AtVeryEnd@PatchLetter=Y%
- \fi
- \fi
- }%
- \expandafter\AtVeryEnd@TestEndLetter\endletter
- \@auxout{}\AtVeryEnd@Nil
-\fi
-\ifx\AtVeryEnd@PatchLetter Y%
- \begingroup
- \let\on@line\@empty
- \PackageInfo{atveryend}{%
- \@backslashchar makelabels detected. %
- Moving labels\MessageBreak
- from `.aux' file to \@backslashchar AtEndDocument%
- }%
- \endgroup
- \def\makelabels{%
- \AtBeginDocument{%
- \let\@startlabels\startlabels
- \let\@mlabel\mlabel
- }%
- }%
- \AtEndDocument{%
- \AtVeryEnd@ifundefined{@startlabels}{%
- }{%
- \clearpage
- \@startlabels
- }%
- }%
- \AfterLastShipout{%
- \let\@startlabels\relax
- \let\@mlabel\@gobbletwo
- }%
-\else
- \PackageWarningNoLine{atveryend}{%
- \@backslashchar makelabels detected, but labels cannot\MessageBreak
- be moved to \@backslashchar AtEndDocument, because\MessageBreak
- \@backslashchar endletter is not in expected form%
- }%
-\fi
-\AtVeryEnd@AtEnd%
-%% \section{Installation}
+ [2024-08-06 v1.12 Hooks at the very end of document (HO)]
+\newcommand\AfterLastShipout {\AddToHook{enddocument/afterlastpage}}
+\newcommand\AtVeryEndDocument {\AddToHook{enddocument/afteraux}}
+\newcommand\AtEndAfterFileList{\AddToHook{enddocument/info}}
+\newcommand\AtVeryVeryEnd {\AddToHook{enddocument/end}}
+\newcommand\BeforeClearDocument{\AddToHook{enddocument}}
\endinput
%%
%% End of file `atveryend.sty'.
diff --git a/Master/texmf-dist/tex/latex/bangorcsthesis/bangorcsthesis.cls b/Master/texmf-dist/tex/latex/bangorcsthesis/bangorcsthesis.cls
index 43a3dc42002..baf68357c98 100644
--- a/Master/texmf-dist/tex/latex/bangorcsthesis/bangorcsthesis.cls
+++ b/Master/texmf-dist/tex/latex/bangorcsthesis/bangorcsthesis.cls
@@ -7,7 +7,7 @@
%% bangorcsthesis.dtx (with options: `bangorcsthesis.cls,package')
%%
%% bangorcsthesis.dtx
-%% Copyright 2014-21 Cameron Gray/Bangor University <c.gray@bangor.ac.uk>
+%% Copyright 2014-24 Cameron Gray/Bangor University <c.gray@bangor.ac.uk>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -45,11 +45,11 @@
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
-\def\version{1.5.5}
+\def\version{1.5.6}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{bangorcsthesis}[2022/01/28 \version C. Gray]
+\ProvidesClass{bangorcsthesis}[2024/12/20 \version C. Gray]
\def\degreeScheme#1{\def\@scheme{#1}}
@@ -3711,7 +3711,7 @@ bookmarksopen=true %
\centering
\scalebox{0.38}{\bangorlogo} \\
-{School of Computer Science and Electronic Engineering \\
+{School of Computer Science and Engineering \\
\vspace{-1.5mm}College of Environmental Sciences and Engineering} \\
\vfill
diff --git a/Master/texmf-dist/tex/latex/base/alltt.sty b/Master/texmf-dist/tex/latex/base/alltt.sty
index 78c5e6a9241..99af51ce653 100644
--- a/Master/texmf-dist/tex/latex/base/alltt.sty
+++ b/Master/texmf-dist/tex/latex/base/alltt.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -49,7 +49,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{alltt}
- [2024/02/08 v2.0g defines alltt environment]
+ [2024/07/07 v2.0g defines alltt environment]
\begingroup
\lccode`\~=`\'
\lowercase{\endgroup
diff --git a/Master/texmf-dist/tex/latex/base/ansinew.def b/Master/texmf-dist/tex/latex/base/ansinew.def
index 071d9a49f8c..e892893fa20 100644
--- a/Master/texmf-dist/tex/latex/base/ansinew.def
+++ b/Master/texmf-dist/tex/latex/base/ansinew.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/applemac.def b/Master/texmf-dist/tex/latex/base/applemac.def
index 85032040d8c..e8fd7822271 100644
--- a/Master/texmf-dist/tex/latex/base/applemac.def
+++ b/Master/texmf-dist/tex/latex/base/applemac.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/article.cls b/Master/texmf-dist/tex/latex/base/article.cls
index 869bdc0db41..ce122f89c17 100644
--- a/Master/texmf-dist/tex/latex/base/article.cls
+++ b/Master/texmf-dist/tex/latex/base/article.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{article}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX document class]
\newcommand\@ptsize{}
\newif\if@restonecol
diff --git a/Master/texmf-dist/tex/latex/base/article.sty b/Master/texmf-dist/tex/latex/base/article.sty
index cc34e8a7443..48ad87d515c 100644
--- a/Master/texmf-dist/tex/latex/base/article.sty
+++ b/Master/texmf-dist/tex/latex/base/article.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ascii.def b/Master/texmf-dist/tex/latex/base/ascii.def
index 0f08f8091f8..ddfede3bbb3 100644
--- a/Master/texmf-dist/tex/latex/base/ascii.def
+++ b/Master/texmf-dist/tex/latex/base/ascii.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/atbegshi-ltx.sty b/Master/texmf-dist/tex/latex/base/atbegshi-ltx.sty
index 992a4278526..2917fa3f011 100644
--- a/Master/texmf-dist/tex/latex/base/atbegshi-ltx.sty
+++ b/Master/texmf-dist/tex/latex/base/atbegshi-ltx.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%
-%% Copyright (C) 2020-2024
+%% Copyright (C) 2020-2025
%% Frank Mittelbach, The LaTeX Project
%%
%%% From File: ltshipout.dtx
diff --git a/Master/texmf-dist/tex/latex/base/atveryend-ltx.sty b/Master/texmf-dist/tex/latex/base/atveryend-ltx.sty
index 76d4e001d38..00771d4998b 100644
--- a/Master/texmf-dist/tex/latex/base/atveryend-ltx.sty
+++ b/Master/texmf-dist/tex/latex/base/atveryend-ltx.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/bezier.sty b/Master/texmf-dist/tex/latex/base/bezier.sty
index 2bc376dfb33..88940623b60 100644
--- a/Master/texmf-dist/tex/latex/base/bezier.sty
+++ b/Master/texmf-dist/tex/latex/base/bezier.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/bk10.clo b/Master/texmf-dist/tex/latex/base/bk10.clo
index ba4701bead9..068c4f255f5 100644
--- a/Master/texmf-dist/tex/latex/base/bk10.clo
+++ b/Master/texmf-dist/tex/latex/base/bk10.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{bk10.clo}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xpt\@xiipt
diff --git a/Master/texmf-dist/tex/latex/base/bk11.clo b/Master/texmf-dist/tex/latex/base/bk11.clo
index c0a4a4420f1..f414be22784 100644
--- a/Master/texmf-dist/tex/latex/base/bk11.clo
+++ b/Master/texmf-dist/tex/latex/base/bk11.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{bk11.clo}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xipt{13.6}%
diff --git a/Master/texmf-dist/tex/latex/base/bk12.clo b/Master/texmf-dist/tex/latex/base/bk12.clo
index c4a5e3c2457..39f070ab6c6 100644
--- a/Master/texmf-dist/tex/latex/base/bk12.clo
+++ b/Master/texmf-dist/tex/latex/base/bk12.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{bk12.clo}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xiipt{14.5}%
diff --git a/Master/texmf-dist/tex/latex/base/book.cls b/Master/texmf-dist/tex/latex/base/book.cls
index 2838b7f1ce3..3ab837a9c32 100644
--- a/Master/texmf-dist/tex/latex/base/book.cls
+++ b/Master/texmf-dist/tex/latex/base/book.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{book}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX document class]
\newcommand\@ptsize{}
\newif\if@restonecol
diff --git a/Master/texmf-dist/tex/latex/base/book.sty b/Master/texmf-dist/tex/latex/base/book.sty
index b2cb30a2e14..fc94e98b95b 100644
--- a/Master/texmf-dist/tex/latex/base/book.sty
+++ b/Master/texmf-dist/tex/latex/base/book.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/checkencodingsubset.tex b/Master/texmf-dist/tex/latex/base/checkencodingsubset.tex
index 02410ad693a..7abc9c491c6 100644
--- a/Master/texmf-dist/tex/latex/base/checkencodingsubset.tex
+++ b/Master/texmf-dist/tex/latex/base/checkencodingsubset.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,8 +42,8 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%% From File: lttextcomp.dtx
-\Providesfile{checkencodingsubset.tex}
- [2024/01/27 v0.5a Figure out safe TS1 encoding subsets]
+\ProvidesFile{checkencodingsubset.tex}
+ [2024/10/18 v0.5b Figure out safe TS1 encoding subsets]
\let\typeoutdetails\typeout
\def\doesglyphexist#1#2{\iffontchar\testFont #1 0\else 1\relax \fi}
\def\glyphmissingdetails#1#2{\iffontchar\testFont #1 \else
diff --git a/Master/texmf-dist/tex/latex/base/cp1250.def b/Master/texmf-dist/tex/latex/base/cp1250.def
index a4dfaed86d7..a8019bd2d0c 100644
--- a/Master/texmf-dist/tex/latex/base/cp1250.def
+++ b/Master/texmf-dist/tex/latex/base/cp1250.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/cp1252.def b/Master/texmf-dist/tex/latex/base/cp1252.def
index ae5a89e75cc..d467834178c 100644
--- a/Master/texmf-dist/tex/latex/base/cp1252.def
+++ b/Master/texmf-dist/tex/latex/base/cp1252.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/cp1257.def b/Master/texmf-dist/tex/latex/base/cp1257.def
index 78fdbcbdf76..b71b5a0941f 100644
--- a/Master/texmf-dist/tex/latex/base/cp1257.def
+++ b/Master/texmf-dist/tex/latex/base/cp1257.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/cp437.def b/Master/texmf-dist/tex/latex/base/cp437.def
index 17a2a2e7784..9e1ab356554 100644
--- a/Master/texmf-dist/tex/latex/base/cp437.def
+++ b/Master/texmf-dist/tex/latex/base/cp437.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/cp437de.def b/Master/texmf-dist/tex/latex/base/cp437de.def
index edaccf6a2f4..2b0d6c49ee3 100644
--- a/Master/texmf-dist/tex/latex/base/cp437de.def
+++ b/Master/texmf-dist/tex/latex/base/cp437de.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/cp850.def b/Master/texmf-dist/tex/latex/base/cp850.def
index 40f3cb6eea9..a855f916c31 100644
--- a/Master/texmf-dist/tex/latex/base/cp850.def
+++ b/Master/texmf-dist/tex/latex/base/cp850.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/cp852.def b/Master/texmf-dist/tex/latex/base/cp852.def
index 0fc6c20a561..a24c6a50c21 100644
--- a/Master/texmf-dist/tex/latex/base/cp852.def
+++ b/Master/texmf-dist/tex/latex/base/cp852.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/cp858.def b/Master/texmf-dist/tex/latex/base/cp858.def
index 5760e667642..f1ecc9629b8 100644
--- a/Master/texmf-dist/tex/latex/base/cp858.def
+++ b/Master/texmf-dist/tex/latex/base/cp858.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/cp865.def b/Master/texmf-dist/tex/latex/base/cp865.def
index dc86f46bde3..359f7dfaee0 100644
--- a/Master/texmf-dist/tex/latex/base/cp865.def
+++ b/Master/texmf-dist/tex/latex/base/cp865.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/decmulti.def b/Master/texmf-dist/tex/latex/base/decmulti.def
index ae98cc99728..33c90c4c408 100644
--- a/Master/texmf-dist/tex/latex/base/decmulti.def
+++ b/Master/texmf-dist/tex/latex/base/decmulti.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/doc.sty b/Master/texmf-dist/tex/latex/base/doc.sty
index ea693f4ff1d..bc73a4d0cfb 100644
--- a/Master/texmf-dist/tex/latex/base/doc.sty
+++ b/Master/texmf-dist/tex/latex/base/doc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -52,7 +52,7 @@
\DeclareCurrentRelease{v3}{2022-06-01}
\ProvidesPackage{doc}
- [2024/04/26 v3.0p
+ [2024/10/23 v3.0q
Standard LaTeX documentation package V3 (FMi)]
%%
%% Package `doc' to use with LaTeX 2e
@@ -908,15 +908,6 @@
\expandafter\let\expandafter\doc@eoph@@k\csname doc.sty-h@@k\endcsname
\RequirePackage{hypdoc}
\expandafter\let\csname doc.sty-h@@k\endcsname\doc@eoph@@k
- \let\PrintDescribeMacro \@@PrintDescribeMacro
- \let\PrintDescribeEnv \@@PrintDescribeEnv
- \let\PrintMacroName \@@PrintMacroName
- \let\PrintEnvName \@@PrintEnvName
- \let\SpecialUsageIndex \@@SpecialUsageIndex
- \let\SpecialEnvIndex \@@SpecialEnvIndex
- \let\SortIndex \@@SortIndex
- \let\DescribeMacro \@@DescribeMacro
- \let\DescribeEnv \@@DescribeEnv
\ifx\special@index\@gobble % do we write index entries at all?
\else
\ifcodeline@index
@@ -1242,6 +1233,7 @@
idxgroup = environments ,
printtype = \textit{env.}
]{Env}{environment}
+\AddToHook{package/hypdoc/before}{%
\let\@@PrintDescribeMacro \PrintDescribeMacro
\let\@@PrintDescribeEnv \PrintDescribeEnv
\let\@@PrintMacroName \PrintMacroName
@@ -1251,6 +1243,18 @@
\let\@@SortIndex \SortIndex
\let\@@DescribeMacro \DescribeMacro
\let\@@DescribeEnv \DescribeEnv
+}
+\AddToHook{package/hypdoc/after}{%
+ \let\PrintDescribeMacro \@@PrintDescribeMacro
+ \let\PrintDescribeEnv \@@PrintDescribeEnv
+ \let\PrintMacroName \@@PrintMacroName
+ \let\PrintEnvName \@@PrintEnvName
+ \let\SpecialUsageIndex \@@SpecialUsageIndex
+ \let\SpecialEnvIndex \@@SpecialEnvIndex
+ \let\SortIndex \@@SortIndex
+ \let\DescribeMacro \@@DescribeMacro
+ \let\DescribeEnv \@@DescribeEnv
+}
\DeclareRobustCommand\cs[1]{\texttt{\bslash #1}}
\AddToHook{class/amsdtx/after}{%
diff --git a/Master/texmf-dist/tex/latex/base/docstrip.tex b/Master/texmf-dist/tex/latex/base/docstrip.tex
index e96e04ef127..8c32195b527 100644
--- a/Master/texmf-dist/tex/latex/base/docstrip.tex
+++ b/Master/texmf-dist/tex/latex/base/docstrip.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/exscale.sty b/Master/texmf-dist/tex/latex/base/exscale.sty
index 41d64bbffea..992c3bbcf04 100644
--- a/Master/texmf-dist/tex/latex/base/exscale.sty
+++ b/Master/texmf-dist/tex/latex/base/exscale.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/fix-cm.sty b/Master/texmf-dist/tex/latex/base/fix-cm.sty
index e16030b13e5..536e385e4a9 100644
--- a/Master/texmf-dist/tex/latex/base/fix-cm.sty
+++ b/Master/texmf-dist/tex/latex/base/fix-cm.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/fixltx2e.sty b/Master/texmf-dist/tex/latex/base/fixltx2e.sty
index a5f6f4cc948..1c004fa7e6b 100644
--- a/Master/texmf-dist/tex/latex/base/fixltx2e.sty
+++ b/Master/texmf-dist/tex/latex/base/fixltx2e.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/flafter.sty b/Master/texmf-dist/tex/latex/base/flafter.sty
index b1ec0552512..0f207feffb5 100644
--- a/Master/texmf-dist/tex/latex/base/flafter.sty
+++ b/Master/texmf-dist/tex/latex/base/flafter.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/fleqn.clo b/Master/texmf-dist/tex/latex/base/fleqn.clo
index f2a45b8ade4..f8f3e1a5840 100644
--- a/Master/texmf-dist/tex/latex/base/fleqn.clo
+++ b/Master/texmf-dist/tex/latex/base/fleqn.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/fleqn.sty b/Master/texmf-dist/tex/latex/base/fleqn.sty
index 56fb8376599..c2b06ef81bd 100644
--- a/Master/texmf-dist/tex/latex/base/fleqn.sty
+++ b/Master/texmf-dist/tex/latex/base/fleqn.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/fltrace.sty b/Master/texmf-dist/tex/latex/base/fltrace.sty
index f372c6da667..ce393f508b2 100644
--- a/Master/texmf-dist/tex/latex/base/fltrace.sty
+++ b/Master/texmf-dist/tex/latex/base/fltrace.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/fontenc.sty b/Master/texmf-dist/tex/latex/base/fontenc.sty
index 0eb19b6f6a0..08feb5bd7b8 100644
--- a/Master/texmf-dist/tex/latex/base/fontenc.sty
+++ b/Master/texmf-dist/tex/latex/base/fontenc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/fontmath.cfg b/Master/texmf-dist/tex/latex/base/fontmath.cfg
index eca079d15b3..4d81b64482e 100644
--- a/Master/texmf-dist/tex/latex/base/fontmath.cfg
+++ b/Master/texmf-dist/tex/latex/base/fontmath.cfg
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fontmath.cfg}
- [2024/02/09 v3.0i LaTeX Kernel
+ [2024/11/19 v3.0l LaTeX Kernel
(Uncustomized math font setup)
]
%%
diff --git a/Master/texmf-dist/tex/latex/base/fontmath.ltx b/Master/texmf-dist/tex/latex/base/fontmath.ltx
index a7dd9cc44ad..e3921e51b9f 100644
--- a/Master/texmf-dist/tex/latex/base/fontmath.ltx
+++ b/Master/texmf-dist/tex/latex/base/fontmath.ltx
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fontmath.ltx}
- [2024/02/09 v3.0i LaTeX Kernel
+ [2024/11/19 v3.0l LaTeX Kernel
(Math font setup)
]
\typeout{=== Don't modify this file, use a .cfg file instead ===^^J}
diff --git a/Master/texmf-dist/tex/latex/base/fonttext.cfg b/Master/texmf-dist/tex/latex/base/fonttext.cfg
index b37c4407d63..ea67ad0b7f5 100644
--- a/Master/texmf-dist/tex/latex/base/fonttext.cfg
+++ b/Master/texmf-dist/tex/latex/base/fonttext.cfg
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fonttext.cfg}
- [2024/02/09 v3.0i LaTeX Kernel
+ [2024/11/19 v3.0l LaTeX Kernel
(Uncustomized text font setup)
]
%%
diff --git a/Master/texmf-dist/tex/latex/base/fonttext.ltx b/Master/texmf-dist/tex/latex/base/fonttext.ltx
index ec6ce8ed910..11b7f905dc3 100644
--- a/Master/texmf-dist/tex/latex/base/fonttext.ltx
+++ b/Master/texmf-dist/tex/latex/base/fonttext.ltx
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fonttext.ltx}
- [2024/02/09 v3.0i LaTeX Kernel
+ [2024/11/19 v3.0l LaTeX Kernel
(Text font setup)
]
\typeout{=== Don't modify this file, use a .cfg file instead ===^^J}
@@ -45,7 +45,7 @@
\input {omsenc.def}
\input {ot1enc.def}
\input {t1enc.def}
-\input{ts1enc.def}
+\input {ts1enc.def}
\ifx\Umathcode\@undefined
\fontencoding{OT1}
\def\@fontenc@load@list{\@elt{T1,OT1}}
@@ -68,17 +68,20 @@
\DeclareFontSubstitution{TU}{lmr}{m}{n}
\fi
\DeclareFontEncodingDefaults{}{}
-\DeclareFontSubstitution{T1}{cmr}{m}{n}
-\DeclareFontSubstitution{OT1}{cmr}{m}{n}
\begingroup
\nfss@catcodes
\input {t1cmr.fd}
\input {ot1cmr.fd}
+\input {ts1cmr.fd}
\endgroup
\begingroup
\nfss@catcodes
+\input {t1cmss.fd}
+\input {t1cmtt.fd}
\input {ot1cmss.fd}
\input {ot1cmtt.fd}
+\input {ts1cmss.fd}
+\input {ts1cmtt.fd}
\endgroup
\DeclareErrorFont{OT1}{cmr}{m}{n}{10}
\ifx\Umathcode\@undefined
diff --git a/Master/texmf-dist/tex/latex/base/graphpap.sty b/Master/texmf-dist/tex/latex/base/graphpap.sty
index 07b03c71b7c..c0788af6c96 100644
--- a/Master/texmf-dist/tex/latex/base/graphpap.sty
+++ b/Master/texmf-dist/tex/latex/base/graphpap.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/hyphen.ltx b/Master/texmf-dist/tex/latex/base/hyphen.ltx
index 81358f46845..87d7a6223c0 100644
--- a/Master/texmf-dist/tex/latex/base/hyphen.ltx
+++ b/Master/texmf-dist/tex/latex/base/hyphen.ltx
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/idx.tex b/Master/texmf-dist/tex/latex/base/idx.tex
index 001595bb7d5..6e7dc676b70 100644
--- a/Master/texmf-dist/tex/latex/base/idx.tex
+++ b/Master/texmf-dist/tex/latex/base/idx.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2024
+% Copyright (C) 1993-2025
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex/base/ifthen.sty b/Master/texmf-dist/tex/latex/base/ifthen.sty
index 780b457e3f0..52a1df8b6f6 100644
--- a/Master/texmf-dist/tex/latex/base/ifthen.sty
+++ b/Master/texmf-dist/tex/latex/base/ifthen.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/inputenc.sty b/Master/texmf-dist/tex/latex/base/inputenc.sty
index 8d4a01b46d2..c9a77770870 100644
--- a/Master/texmf-dist/tex/latex/base/inputenc.sty
+++ b/Master/texmf-dist/tex/latex/base/inputenc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/lablst.tex b/Master/texmf-dist/tex/latex/base/lablst.tex
index 961928d5ad8..5115204512f 100644
--- a/Master/texmf-dist/tex/latex/base/lablst.tex
+++ b/Master/texmf-dist/tex/latex/base/lablst.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2024
+% Copyright (C) 1993-2025
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex/base/latex.ltx b/Master/texmf-dist/tex/latex/base/latex.ltx
index 62e8e24515e..cdfe0060a5d 100644
--- a/Master/texmf-dist/tex/latex/base/latex.ltx
+++ b/Master/texmf-dist/tex/latex/base/latex.ltx
@@ -65,7 +65,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -709,7 +709,7 @@
%%% From File: ltvers.dtx
\def\fmtname{LaTeX2e}
\edef\fmtversion
- {2024-06-01}
+ {2024-11-01}
\def\patch@level{2}
\edef\development@branch@name{}
\iffalse
@@ -1811,8 +1811,8 @@
\xdef#1{\the\toks@}%
\endgroup}
%%% From File: ltcmd.dtx
-\def\ltcmdversion{v1.2e}
-\def\ltcmddate{2024-04-17}
+\def\ltcmdversion{v1.2f}
+\def\ltcmddate{2024-07-06}
\message{document commands,}
\ExplSyntaxOn
\tl_new:N \l__cmd_arg_spec_tl
@@ -2030,23 +2030,15 @@
}
\cs_new_protected:Npn \__cmd_declare_env:nnnn #1#2
{
- \str_set:Nx \l__cmd_environment_str {#1}
- \str_set:Nx \l__cmd_environment_str
- { \tl_trim_spaces:o { \l__cmd_environment_str } }
- \cs_if_exist:cTF { \l__cmd_environment_str }
- {
- \msg_info:nnxx { cmd } { redefine-env }
- { \l__cmd_environment_str } { \tl_to_str:n {#2} }
- }
- {
- \msg_info:nnxx { cmd } { define-env }
- { \l__cmd_environment_str } { \tl_to_str:n {#2} }
- }
+ \str_set:Nn \l__cmd_environment_str {#1}
+ \cs_if_exist:cTF { #1 }
+ { \msg_info:nnnn { cmd } { redefine-env } { #1 } { #2 } }
+ { \msg_info:nnnn { cmd } { define-env } { #1 } { #2 } }
\bool_set_false:N \l__cmd_expandable_bool
\bool_set_true:N \l__cmd_environment_bool
- \exp_args:NV \__cmd_declare_env_internal:nnnn
- \l__cmd_environment_str {#2}
+ \__cmd_declare_env_internal:nnnn {#1} {#2}
}
+\cs_generate_variant:Nn \__cmd_declare_env:nnnn { e }
\cs_new_protected:Npn \__cmd_declare_env_internal:nnnn #1#2#3#4
{
\exp_args:Nc \__cmd_declare_cmd_internal:Nnnn { environment~ #1 } {#2}
@@ -4556,24 +4548,54 @@
}
\cs_new_protected:Npn \NewDocumentEnvironment #1#2#3#4
{
+ \__cmd_new_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+ }
+\cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4
+ {
+ \__cmd_renew_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+ }
+\cs_new_protected:Npn \ProvideDocumentEnvironment #1#2#3#4
+ {
+ \__cmd_provide_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+ }
+\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
+ {
+ \__cmd_declare_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+ }
+\cs_new_protected:Npn \__cmd_new_env:nnnn #1
+ {
\cs_if_exist:cTF {#1}
- { \msg_error:nnx { cmd } { env-already-defined } {#1} }
+ {
+ \msg_error:nnx { cmd } { env-already-defined } {#1}
+ \use_none:nnn
+ }
{
\cs_if_exist:cTF { end #1 }
- { \msg_error:nnx { cmd } { env-end-already-defined } {#1} }
- { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
+ {
+ \msg_error:nnx { cmd } { env-end-already-defined } {#1}
+ \use_none:nnn
+ }
+ { \__cmd_declare_env:nnnn {#1} }
}
}
-\cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4
+\cs_new_protected:Npn \__cmd_renew_env:nnnn #1
{
\cs_if_exist:cTF {#1}
- { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
- { \msg_error:nnx { cmd } { env-undefined } {#1} }
+ { \__cmd_declare_env:nnnn {#1} }
+ {
+ \msg_error:nnx { cmd } { env-undefined } {#1}
+ \use_none:nnn
+ }
}
-\cs_new_protected:Npn \ProvideDocumentEnvironment #1#2#3#4
- { \cs_if_exist:cF {#1} { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} } }
-\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
- { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
+\cs_new_protected:Npn \__cmd_provide_env:nnnn #1
+ {
+ \cs_if_exist:cTF {#1}
+ { \use_none:nnn }
+ { \__cmd_declare_env:nnnn {#1} }
+ }
+\cs_generate_variant:Nn \__cmd_new_env:nnnn { e }
+\cs_generate_variant:Nn \__cmd_renew_env:nnnn { e }
+\cs_generate_variant:Nn \__cmd_provide_env:nnnn { e }
\cs_new_protected:Npn \NewExpandableDocumentCommand #1#2#3
{
\__cmd_check_definable:nNT {#1} \NewExpandableDocumentCommand
@@ -4842,17 +4864,19 @@
}
}
}
-\cs_new:Npn \__hook_parse_label_default:n #1
+\cs_new:Npn \__hook_parse_label_default:nN #1#2
{
\tl_if_novalue:nTF {#1}
{ \__hook_currname_or_default: }
- { \tl_trim_spaces_apply:nN {#1} \__hook_parse_dot_label:n }
+ { \tl_trim_spaces_apply:nN {#1} \__hook_parse_dot_label:nN #2 }
}
-\cs_new:Npn \__hook_parse_dot_label:n #1
+\cs_new:Npn \__hook_parse_dot_label:nN #1#2
{
\tl_if_empty:nTF {#1}
{
- \msg_expandable_error:nn { hooks } { empty-label }
+ \bool_if:NTF #2
+ { \msg_expandable_error:nn { hooks } { empty-label } }
+ { \msg_expandable_error:nn { hooks } { empty-hook } }
\__hook_currname_or_default:
}
{
@@ -4907,24 +4931,24 @@
\cs_new_protected:Npn \__hook_normalize_hook_args:Nn #1 #2
{
\__hook_normalize_hook_args_aux:Nn #1
- { { \__hook_parse_label_default:n {#2} } }
+ { { \__hook_parse_label_default:nN {#2} \c_false_bool } }
}
\cs_new_protected:Npn \__hook_normalize_hook_args:Nnn #1 #2 #3
{
\__hook_normalize_hook_args_aux:Nn #1
{
- { \__hook_parse_label_default:n {#2} }
- { \__hook_parse_label_default:n {#3} }
+ { \__hook_parse_label_default:nN {#2} \c_false_bool }
+ { \__hook_parse_label_default:nN {#3} \c_true_bool }
}
}
\cs_new_protected:Npn \__hook_normalize_hook_rule_args:Nnnnn #1 #2 #3 #4 #5
{
\__hook_normalize_hook_args_aux:Nn #1
{
- { \__hook_parse_label_default:n {#2} }
- { \__hook_parse_label_default:n {#3} }
+ { \__hook_parse_label_default:nN {#2} \c_false_bool }
+ { \__hook_parse_label_default:nN {#3} \c_true_bool }
{ \tl_trim_spaces:n {#4} }
- { \__hook_parse_label_default:n {#5} }
+ { \__hook_parse_label_default:nN {#5} \c_true_bool }
}
}
\tl_gset:Nn \g__hook_hook_curr_name_tl { top-level }
@@ -5789,7 +5813,9 @@
{ #2 { The~hook~is~empty } }
{
\__hook_log_line:x { Code~chunks: }
- \prop_if_empty:cTF { g__hook_#1_code_prop }
+ \bool_lazy_or:nnTF
+ { ! \prop_if_exist_p:c { g__hook_#1_code_prop } }
+ { \prop_if_empty_p:c { g__hook_#1_code_prop } }
{ \__hook_log_line_indent:x { --- } }
{
\prop_map_inline:cn { g__hook_#1_code_prop }
@@ -5884,16 +5910,19 @@
}
\cs_new_protected:Npn \__hook_list_rules:nn #1 #2
{
- \cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2}
- \prop_map_inline:cn { g__hook_#1_code_prop }
+ \prop_if_exist:cT { g__hook_#1_code_prop }
{
+ \cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2}
\prop_map_inline:cn { g__hook_#1_code_prop }
{
- \__hook_if_label_case:nnnnn {##1} {####1}
- { \prop_map_break: }
- { \__hook_list_one_rule:nnn {##1} {####1} }
- { \__hook_list_one_rule:nnn {####1} {##1} }
- {#1}
+ \prop_map_inline:cn { g__hook_#1_code_prop }
+ {
+ \__hook_if_label_case:nnnnn {##1} {####1}
+ { \prop_map_break: }
+ { \__hook_list_one_rule:nnn {##1} {####1} }
+ { \__hook_list_one_rule:nnn {####1} {##1} }
+ {#1}
+ }
}
}
}
@@ -6220,6 +6249,10 @@
Empty~code~label~\msg_line_context:.~
Using~'\__hook_currname_or_default:'~instead.
}
+\msg_new:nnn { hooks } { empty-hook }
+ {
+ Empty~hook~name~\msg_line_context:.
+ }
\msg_new:nnn { hooks } { no-default-label }
{
Missing~(empty)~default~label~\msg_line_context:. \\
@@ -6358,6 +6391,8 @@
\NewDocumentCommand \ClearHookRule { m m m }
{ \hook_gset_rule:nnnn {#1}{#2}{unrelated}{#3} }
\cs_new_eq:NN \IfHookEmptyTF \hook_if_empty:nTF
+\cs_new_eq:NN \IfHookEmptyT \hook_if_empty:nT
+\cs_new_eq:NN \IfHookEmptyF \hook_if_empty:nF
\cs_new_eq:NN \IfHookExistsTF \__hook_if_usable:nTF
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cs_new_protected:Npn \hook_disable:n
@@ -6436,7 +6471,7 @@
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% From File: ltcmdhooks.dtx
-%% Copyright (C) 2020-2024
+%% Copyright (C) 2020-2025
%% Frank Mittelbach, Phelype Oleinik, The LaTeX Project
%%% From File: lthooks.dtx
\ExplSyntaxOn
@@ -6957,7 +6992,7 @@
{
\cs_generate_from_arg_count:cNnn
{ __socket_#1_plug_#2:w }
- \cs_new_protected:Npn
+ \cs_new:Npn
{ \int_use:c { c__socket_#1_args_int } }
{#3}
\seq_put_right:cn { l__socket_#1_plugs_seq } {#2}
@@ -6976,7 +7011,7 @@
{
\cs_generate_from_arg_count:cNnn
{ __socket_#1_plug_#2:w }
- \cs_set_protected:Npn
+ \cs_set:Npn
{ \int_use:c { c__socket_#1_args_int } }
{#3}
\__socket_debug_term:n
@@ -7016,6 +7051,10 @@
\cs_new_eq:NN \socket_use:nn \socket_use:nw % socket with one input
\cs_new_eq:NN \socket_use:nnn \socket_use:nw % socket with two inputs
\cs_new_eq:NN \socket_use:nnnn \socket_use:nw % socket with three inputs
+\cs_new:Npn \socket_use_expandable:nw #1 {
+ \use:c { __socket_#1_plug_ \str_use:c { l__socket_#1_plug_str } :w }
+}
+\cs_new_eq:NN \socket_use_expandable:n \socket_use_expandable:nw % socket with no inputs
\msg_new:nnnn { socket } { already-declared }
{ Socket~ '#1'~ already~ declared! }
@@ -7890,23 +7929,33 @@
}
\cs_new_protected:Npn \__template_assign_variable:
{
- \__template_assign_variable:c
+ \exp_args:Ne \__template_assign_variable:n
{
- \__template_map_var_type: _
- \bool_if:NT \l__template_global_bool { g } set:Nn
+ \__template_map_var_type:
+ _
+ \bool_if:NT \l__template_global_bool { g }
+ set:N
}
}
-\cs_new_protected:Npn \__template_assign_variable:N #1
+\cs_new_protected:Npn \__template_assign_variable:n #1
{
- \__template_if_key_value:VT \l__template_value_tl
- { \__template_key_to_value: }
- \tl_put_right:Ne \l__template_assignments_tl
+ \__template_if_key_value:VTF \l__template_value_tl
{
- #1 \exp_not:V \l__template_var_tl
- { \exp_not:V \l__template_value_tl }
+ \__template_key_to_value:
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:c { #1 V } \exp_not:V \l__template_var_tl
+ \exp_not:V \l__template_value_tl
+ }
+ }
+ {
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:c { #1 n } \exp_not:V \l__template_var_tl
+ { \exp_not:V \l__template_value_tl }
+ }
}
}
-\cs_generate_variant:Nn \__template_assign_variable:N { c }
\cs_new_protected:Npn \__template_key_to_value:
{ \exp_after:wN \__template_key_to_value_auxi:w \l__template_value_tl }
\cs_new_protected:Npn \__template_key_to_value_auxi:w \KeyValue #1
@@ -8524,6 +8573,8 @@ Type H <return> for immediate help.}%
\@latex@error{%
Bad \protect\line\space or \protect\vector
\space argument}\@ehb}
+\gdef\@LRmoderr{%
+ \@latex@error{Not allowed in LR mode}\@ehb}
\gdef\@parmoderr{%
\@latex@error{Not in outer par mode}\@ehb}
\gdef\@fltovf{%
@@ -8549,7 +8600,7 @@ Type H <return> for immediate help.}%
\def\@par{\let\par\@@par\par}
\def\@restorepar{\def\par{\@par}}
%% File: ltpara.dtx
-%% Copyright (C) 2020-2024
+%% Copyright (C) 2020-2025
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltpara.dtx
@@ -8678,7 +8729,7 @@ Type H <return> for immediate help.}%
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% File: ltmeta.dtx
-%% Copyright (C) 2021-2024
+%% Copyright (C) 2021-2025
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmeta.dtx
\let \IfDocumentMetadataTF \@secondoftwo
@@ -8696,6 +8747,8 @@ Type H <return> for immediate help.}%
\let \IfDocumentMetadataTF \@firstoftwo
\DocumentMetadata
}
+\ExplSyntaxOn
+\int_new:N\g__kernel_target_int
\NewDocumentCommand\MakeLinkTarget{sO{}m}{%
\ifvmode
\special{}%
@@ -8703,8 +8756,19 @@ Type H <return> for immediate help.}%
\@savsf\spacefactor
\smash{}%
\spacefactor\@savsf
- \fi}
-\NewDocumentCommand\LinkTargetOn{}{}
+ \fi
+ \IfBooleanTF {#1}
+ {
+ \tl_gset:Ne \@currentHref {#3}
+ }
+ {
+ \int_gincr:N\g__kernel_target_int
+ \tl_gset:Ne \@currentHref {target*.\int_use:N\g__kernel_target_int}
+ }
+ \UseTaggingSocket{recordtarget}
+ }
+\ExplSyntaxOff
+ \NewDocumentCommand\LinkTargetOn{}{}
\NewDocumentCommand\LinkTargetOff{}{}
\NewDocumentCommand\NextLinkTarget{m}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -8817,50 +8881,46 @@ Type H <return> for immediate help.}%
\fi
\fi
\fi}
-\def\addvspace#1{%
- \ifvmode
- \if@minipage\else
- \ifdim \lastskip =\z@
- \@vspace@calcify{#1}%
- \else
- \setlength\@tempskipb{#1}%
- \@xaddvskip
- \fi
- \fi
+\protected\def\addvspace#1{%
+ \ifhmode \ifinner \@LRmoderr \else \par \fi \fi
+ \if@minipage\else
+ \ifdim \lastskip =\z@
+ \@vspace@calcify{#1}%
+ \else
+ \setlength\@tempskipb{#1}%
+ \@xaddvskip
+ \fi
+ \fi
+}
+\protected\def\addpenalty#1{%
+ \ifhmode \ifinner \@LRmoderr \else \par \fi \fi
+ \if@minipage
\else
- \@noitemerr
- \fi}
-\def\addpenalty#1{%
- \ifvmode
- \if@minipage
+ \if@nobreak
\else
- \if@nobreak
+ \ifdim\lastskip=\z@
+ \penalty#1\relax
\else
- \ifdim\lastskip=\z@
- \penalty#1\relax
- \else
- \@tempskipb\lastskip
- \begingroup
- \@tempskipa\@tempskipb
- \advance \@tempskipb
- \ifdim\prevdepth>\maxdepth\maxdepth\else
- \ifdim \prevdepth = -\@m\p@ \z@ \else \prevdepth \fi
- \fi
- \vskip -\@tempskipb
- \penalty#1%
- \ifdim\@tempskipa=\@tempskipb
- \else
- \advance\@tempskipb -\@tempskipa
- \vskip \@tempskipb
+ \@tempskipb\lastskip
+ \begingroup
+ \@tempskipa\@tempskipb
+ \advance \@tempskipb
+ \ifdim\prevdepth>\maxdepth\maxdepth\else
+ \ifdim \prevdepth = -\@m\p@ \z@ \else \prevdepth \fi
\fi
- \vskip \@tempskipa
- \endgroup
- \fi
+ \vskip -\@tempskipb
+ \penalty#1%
+ \ifdim\@tempskipa=\@tempskipb
+ \else
+ \advance\@tempskipb -\@tempskipa
+ \vskip \@tempskipb
+ \fi
+ \vskip \@tempskipa
+ \endgroup
\fi
\fi
- \else
- \@noitemerr
- \fi}%
+ \fi
+}
\DeclareRobustCommand\vspace{\@ifstar\@vspacer\@vspace}
\def\@vspace #1{%
\ifvmode
@@ -9625,6 +9685,8 @@ Type H <return> for immediate help.}%
\global\expandafter\let\csname cl@#1\endcsname\@empty
\@addtoreset{#1}{@ckpt}%
\global\expandafter\let\csname p@#1\endcsname\@empty
+ \expandafter\xdef\csname theH#1\endcsname{%
+ \noexpand\the\noexpand\value{#1}}%
\expandafter
\ifx\csname the#1\endcsname\relax
\expandafter
@@ -9634,7 +9696,11 @@ Type H <return> for immediate help.}%
\@latex@warning{Command `\string\the#1' already
defined -- not changed}%
\fi}
-\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}}
+\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}%
+ \expandafter\xdef\csname theH#1\endcsname{%
+ \expandafter\noexpand\csname theH#2\endcsname.%
+ \noexpand\the\noexpand\value{#1}}%
+}
\def\@removefromreset#1#2{%
\@ifundefined{c@#2}\relax
{\begingroup
@@ -9728,7 +9794,8 @@ Type H <return> for immediate help.}%
\def\newlength#1{\@ifdefinable#1{\newskip#1}}
\def\setlength#1#2{#1 #2\relax}
\def\addtolength#1#2{\advance#1 #2\relax}
-\def\@settodim#1#2#3{\setbox\@tempboxa\hbox{{#3}}#2#1\@tempboxa
+\def\@settodim#1#2#3{\setbox\@tempboxa\hbox
+ {{\SuspendTagging{\@settodim}#3\ResumeTagging{\@settodim}}}#2#1\@tempboxa
\setbox\@tempboxa\box\voidb@x}
\DeclareRobustCommand\settoheight{\@settodim\ht}
\DeclareRobustCommand\settodepth {\@settodim\dp}
@@ -9736,6 +9803,7 @@ Type H <return> for immediate help.}%
\def\@settopoint#1{\divide#1\p@\multiply#1\p@}
%%% From File: ltfssbas.dtx
%% Copyright (C) 1989-2002 Frank Mittelbach and Rainer Sch\"opf
+\message{NFSS base,}
\def\@nomath#1{\relax\ifmmode
\@font@warning{Command \noexpand#1invalid in math mode}\fi}
\gdef\no@alphabet@error#1{\relax \ifmmode
@@ -9882,6 +9950,40 @@ Type H <return> for immediate help.}%
\@onlypreamble\DeclareFontEncodingDefaults
\let\default@T\@empty
\let\default@M\@empty
+\def\DeclareEncodingSubset#1#2{%
+ \DeclareEncodingSubset@aux{#1}#2*\DeclareEncodingSubset@aux
+}
+\def\DeclareEncodingSubset@aux#1#2*#3\DeclareEncodingSubset@aux#4{%
+ \expandafter\ifx\expandafter X\detokenize{#3}X%
+ \@DeclareEncodingSubset{#1}{#2}{#4}%
+ \else
+ \@DeclareEncodingSubset{#1}{#2LF}{#4}%
+ \@DeclareEncodingSubset{#1}{#2TLF}{#4}%
+ \@DeclareEncodingSubset{#1}{#2OsF}{#4}%
+ \@DeclareEncodingSubset{#1}{#2TOsF}{#4}%
+ \fi
+}
+\def\@DeclareEncodingSubset#1#2#3{%
+ \@ifundefined{#1:#2}%
+ {\@font@info{Setting #2 sub-encoding to #1/#3}}%
+ {\@font@info{Changing #2 sub-encoding to #1/#3}}%
+ \global\@namedef{#1:#2}{#3}}
+
+\def\CheckEncodingSubset#1#2#3#4#5{%
+ \ifnum #4>%
+ \expandafter\ifx\csname #2:\f@family\endcsname\relax
+ 0\csname #2:?\endcsname
+ \else
+ \csname #2:\f@family\endcsname
+ \fi
+ \relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {#1{#2}}{#3}%
+ #5%
+}
\def\DeclarePreloadSizes#1#2#3#4#5{%
\@ifundefined{T@#1}%
{\@latex@error{Encoding scheme `#1' unknown}\@eha}%
@@ -10201,6 +10303,7 @@ Type H <return> for immediate help.}%
\hbadness\@M
\hfuzz\maxdimen
\tracingonline\z@
+ \tracinglostchars\z@
\everypar={}%
\leftskip\z@skip
\rightskip\z@skip
@@ -10257,6 +10360,7 @@ Type H <return> for immediate help.}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% From File: ltfssaxes.dtx
%% Copyright (C) 2019-2020 Frank Mittelbach
+\message{NFSS axes,}
\def\DeclareFontSeriesChangeRule#1#2#3#4{%
\@namedef{series@#1@#2}{{#3}{#4}}}
\DeclareFontSeriesChangeRule {bc}{b}{bc}{}
@@ -10858,6 +10962,7 @@ Type H <return> for immediate help.}%
%%% From File: ltfsstrc.dtx
%% Copyright (C) 1989-97 by Frank Mittelbach and Rainer Sch\"opf.
%% Copyright (C) 1994-97 by LaTeX Project. All rights reserved.
+\message{NFSS tracing,}
\def\tracingfonts{%
\@font@warning{Command \noexpand\tracingfonts
not provided.\MessageBreak
@@ -11202,6 +11307,7 @@ Type H <return> for immediate help.}%
%%% From File: ltfssdcl.dtx
%% Copyright (C) 1989-1998 Frank Mittelbach and Rainer Sch\"opf,
%% all rights reserved.
+\message{NFSS declarative interface,}
\def\in@#1#2%
{%
\begingroup
@@ -12096,6 +12202,7 @@ Type H <return> for immediate help.}%
%%% From File: ltfssini.dtx
%% Copyright (C) 1989-2001 Frank Mittelbach and Rainer Sch\"opf,
%% all rights reserved.
+\message{NFSS initialization,}
\DeclareMathVersion{normal}
\DeclareMathVersion{bold}
\DeclareRobustCommand\upshape
@@ -12649,45 +12756,6 @@ Type H <return> for immediate help.}%
\egroup
}
\def\textcompsubstdefault{\rmsubstdefault}
-\def\DeclareEncodingSubset#1#2{%
- \DeclareEncodingSubset@aux{#1}#2*\DeclareEncodingSubset@aux
-}
-\def\DeclareEncodingSubset@aux#1#2*#3\DeclareEncodingSubset@aux#4{%
- \expandafter\ifx\expandafter X\detokenize{#3}X%
- \@DeclareEncodingSubset{#1}{#2}{#4}%
- \else
- \@DeclareEncodingSubset{#1}{#2LF}{#4}%
- \@DeclareEncodingSubset{#1}{#2TLF}{#4}%
- \@DeclareEncodingSubset{#1}{#2OsF}{#4}%
- \@DeclareEncodingSubset{#1}{#2TOsF}{#4}%
- \fi
-}
-\def\@DeclareEncodingSubset#1#2#3{%
- \@ifundefined{#1:#2}%
- {\@font@info{Setting #2 sub-encoding to #1/#3}}%
- {\@font@info{Changing #2 sub-encoding to #1/#3}}%
- \global\@namedef{#1:#2}{#3}}
-\@onlypreamble\DeclareEncodingSubset
-\@onlypreamble\DeclareEncodingSubset@aux
-\@onlypreamble\@DeclareEncodingSubset
-
-
-\def\CheckEncodingSubset#1#2#3#4#5{%
- \ifnum #4>%
- \expandafter\ifx\csname #2:\f@family\endcsname\relax
- 0\csname #2:?\endcsname
- \else
- \csname #2:\f@family\endcsname
- \fi
- \relax
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {#1{#2}}{#3}%
- #5%
-}
-
\def\tc@errorwarn#1#2{\@latex@info{#1}}
\def\tc@subst#1{%
@@ -13004,11 +13072,7 @@ Type H <return> for immediate help.}%
\DeclareEncodingSubset{TS1}{?}{9}
\DeclareEncodingSubset{TS1}{ccr} {0}
\DeclareEncodingSubset{TS1}{cmbr} {0}
-\DeclareEncodingSubset{TS1}{cmr} {0}
-\DeclareEncodingSubset{TS1}{cmss} {0}
\DeclareEncodingSubset{TS1}{cmtl} {0}
-\DeclareEncodingSubset{TS1}{cmtt} {0}
-\DeclareEncodingSubset{TS1}{cmvtt} {0}
\DeclareEncodingSubset{TS1}{pxr} {0}
\DeclareEncodingSubset{TS1}{pxss} {0}
\DeclareEncodingSubset{TS1}{pxtt} {0}
@@ -13273,11 +13337,27 @@ Type H <return> for immediate help.}%
\endgroup
\@esphack}
\def\@currentcounter{}
-\def\refstepcounter#1{\stepcounter{#1}%
+\NewSocket{refstepcounter}{1}
+\NewSocket{refstepcounter/target}{1}
+\NewSocketPlug{refstepcounter/target}{kernel}
+ {\xdef\@currentHref {#1.\csname theH#1\endcsname}}%
+\AssignSocketPlug{refstepcounter/target}{kernel}
+\def\refstepcounter#1{%
+ \UseSocket{refstepcounter}{%
+ \stepcounter{#1}%
\edef\@currentcounter{#1}%
\protected@edef\@currentlabel
{\csname p@#1\expandafter\endcsname\csname the#1\endcsname}%
+ \UseSocket{refstepcounter/target}{#1}%
+ \UseTaggingSocket{recordtarget}%
+ }%
}
+\def\@kernel@refstepcounter#1{%
+ \UseSocket{refstepcounter}{%
+ \stepcounter{#1}%
+ \edef\@currentcounter{#1}%
+ \protected@edef\@currentlabel
+ {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}}}%
\def\labelformat#1{\expandafter\def\csname p@#1\endcsname##1}
\def\@kernel@Ref#1{\protected@edef\@tempa{\@kernel@ref{#1}}%
\expandafter\MakeUppercase\@tempa}
@@ -13337,14 +13417,11 @@ Type H <return> for immediate help.}%
\cs_generate_variant:Nn \property_record:nn { nV , ee, oo }
\cs_new_protected:Npn \__property_record:nn #1#2
{
- \legacy_if:nT { @filesw }
+ \protected@write \@auxout {}
{
- \protected@write \@auxout {}
- {
- \token_to_str:N \new@label@record
- {#1}
- { \clist_map_function:nN {#2} \__property_record_value:n }
- }
+ \token_to_str:N \new@label@record
+ {#1}
+ { \clist_map_function:nN {#2} \__property_record_value:n }
}
}
\cs_generate_variant:Nn \__property_record:nn { e }
@@ -13467,8 +13544,8 @@ Type H <return> for immediate help.}%
}
\prg_generate_conditional_variant:Nnn \property_if_recorded:n {e} {TF}
\cs_new_eq:NN \IfLabelExistsTF \property_if_recorded:eTF
-\cs_new:Npn \IfLabelExistsT #1#2 {\property_if_exist:eTF {#1}{#2}{} }
-\cs_new:Npn \IfLabelExistsF #1 {\property_if_exist:eTF {#1}{} }
+\cs_new:Npn \IfLabelExistsT #1#2 {\property_if_recorded:eTF {#1}{#2}{} }
+\cs_new:Npn \IfLabelExistsF #1 {\property_if_recorded:eTF {#1}{} }
\prg_new_conditional:Npnn \property_if_recorded:nn #1#2 { p , T , F, TF }
% #1 label #2 property
{
@@ -13482,6 +13559,8 @@ Type H <return> for immediate help.}%
}
\prg_generate_conditional_variant:Nnn \property_if_recorded:nn {ee} {TF}
\cs_new_eq:NN \IfPropertyRecordedTF \property_if_recorded:eeTF
+\cs_new:Npn \IfPropertyRecordedT #1#2#3 { \property_if_recorded:eeTF {#1}{#2}{#3}{} }
+\cs_new:Npn \IfPropertyRecordedF #1#2#3 { \property_if_recorded:eeTF {#1}{#2}{}{#3} }
\cs_new_protected:Npn \property_ref_undefined_warn:
{
\flag_if_raised:nT { l__property_ref_flag }
@@ -13644,7 +13723,7 @@ Type H <return> for immediate help.}%
\def\stop{\clearpage\deadcycles\z@\let\par\@@par\@@end}
\everypar{\@nodocument} %% To get an error if text appears before the
\nullfont %% \begin{document}
-\DeclareRobustCommand*\begin[1]{%
+\protected\def\begin#1{%
\UseHook{env/#1/before}%
\@ifundefined{#1}%
{\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}%
@@ -13662,6 +13741,7 @@ Type H <return> for immediate help.}%
\fi
\UseHook{env/#1/begin}%
}
+
\edef\end
{\unexpanded{%
\romannumeral
@@ -13680,13 +13760,14 @@ Type H <return> for immediate help.}%
}%
\expandafter\noexpand\csname end \endcsname
}
+
\@namedef{end }#1{%
\romannumeral
\IfHookEmptyTF{env/#1/end}%
{\expandafter\z@}%
{\z@\UseHook{env/#1/end}}%
\csname end#1\endcsname\@checkend{#1}%
- \expandafter\endgroup\if@endpe\@doendpe\fi
+ \endgroup
\UseHook{env/#1/after}%
\if@ignore\@ignorefalse\ignorespaces\fi
}
@@ -14233,11 +14314,27 @@ Type H <return> for immediate help.}%
\def\@doendpe{\@endpetrue
\def\par{\@restorepar
\clubpenalty\@clubpenalty
- \everypar{}\par\@endpefalse}\everypar
- {{\setbox\z@\lastbox}%
- \everypar{}\@endpefalse}}
+ \@endpefalse
+ \everypar{}\par}%
+ \everypar
+ {{\setbox\z@\lastbox}%
+ \everypar{}\@endpefalse}}
\newif\if@endpe
-\@endpefalse
+\def\@endpefalse{\global\let\if@endpe\iffalse}
+\def\@endpetrue {%
+ \global\let\if@endpe\iftrue
+ \ifnum\currentgrouptype =14 % semi-simple group
+ \aftergroup\propagate@doendpe
+ \else
+ \ifnum\currentgrouptype =\z@ % no group: top-level
+ \else
+ \ifnum\currentgrouptype =\@ne % simple group
+ \aftergroup\propagate@doendpe
+ \fi
+ \fi
+ \fi
+}
+\def\propagate@doendpe{\if@endpe \@doendpe \fi}
\def\@mklab#1{\hfil #1}
\def\item{%
\@inmatherr\item
@@ -14405,12 +14502,14 @@ Type H <return> for immediate help.}%
\kern\z@}}
\let\set@color\relax
\let\color@begingroup\begingroup
-\def\color@endgroup{\endgraf\endgroup}
\def\color@setgroup{\color@begingroup} % changed further in color package
\let\normalcolor\relax % remains untouched; only changed in a color package
\def\color@hbox{\hbox\bgroup\color@begingroup}
\def\color@vbox{\vbox\bgroup\color@begingroup}
\def\color@endbox{\color@endgroup\egroup}
+
+\def\color@endgroup{\endgraf\@endpefalse\endgroup}
+
\def\newsavebox#1{\@ifdefinable{#1}{\newbox#1}}
\DeclareRobustCommand\savebox[1]{%
\@ifnextchar(%)
@@ -16069,10 +16168,9 @@ Type H <return> for immediate help.}%
\let\@cite@ofmt\hbox
\def\@biblabel#1{[#1]}
%% File: ltmarks.dtx
-%% Copyright (C) 2022-2024
+%% Copyright (C) 2022-2025
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmarks.dtx
-%% \end{function}
\ExplSyntaxOn
\seq_new:N \g__mark_classes_seq
@@ -16425,6 +16523,12 @@ Type H <return> for immediate help.}%
\NewExpandableDocumentCommand \IfMarksEqualTF {O{page}mmm} {
\mark_if_eq:nnnnTF {#1}{#2}{#3}{#4}
}
+\NewExpandableDocumentCommand \IfMarksEqualT {O{page}mmm} {
+ \mark_if_eq:nnnnT {#1}{#2}{#3}{#4}
+}
+\NewExpandableDocumentCommand \IfMarksEqualF {O{page}mmm} {
+ \mark_if_eq:nnnnF {#1}{#2}{#3}{#4}
+}
\cs_new_protected:Npn \__mark_update_singlecol_structures: {
\box_if_vertical:NTF \@outputbox
{
@@ -16780,7 +16884,9 @@ Type H <return> for immediate help.}%
\@onlypreamble\DeclareOption
\@onlypreamble\@declareoption
\@onlypreamble\@defdefault@ds
-\def\@remove@eq@value#1=#2\@nil{#1}
+\ExplSyntaxOn
+\def\@remove@eq@value#1=#2\@nil{\tl_trim_spaces:n{#1}}
+\ExplSyntaxOff
\def\OptionNotUsed{%
\ifx\@currext\@clsextension
\xdef\@unusedoptionlist{%
@@ -17133,7 +17239,11 @@ Type H <return> for immediate help.}%
\ifx\@currext\@clsextension
document class%
\else
- package%
+ \ifx\@currext\@pkgextension
+ package%
+ \else
+ file%
+ \fi
\fi}
\@onlypreamble\@cls@pkg
\def\@unknownoptionerror{%
@@ -17337,6 +17447,13 @@ Type H <return> for immediate help.}%
\pkgcls@debug{\@spaces 4: #4}%
\def\pkgcls@name{#1}% % for info message
\def\pkgcls@arg {#3}% % for info message
+ \edef\pkgcls@ext{%
+ \ifx#4\@clsextension document class\else
+ \ifx#4\@pkgextension package\else
+ file
+ \fi
+ \fi
+ }% % for info message
\pkgcls@parse@date@arg{#3}%
\let\pkgcls@candidate\@empty
\begingroup
@@ -17378,7 +17495,7 @@ Type H <return> for immediate help.}%
\ifnum \@parse@version0#1//00\@nil > \pkgcls@targetdate
\@latex@warning@no@line{Suspicious rollback/min-date date given\MessageBreak
A minimal date of #1 has been specified for
- \@cls@pkg\MessageBreak '\pkgcls@name'.\MessageBreak
+ \pkgcls@ext\MessageBreak '\pkgcls@name'.\MessageBreak
But this is in conflict
with a rollback request to \requestedpatchdate}
\fi
@@ -17434,6 +17551,7 @@ Type H <return> for immediate help.}%
\def\pkgcls@use@this@release#1#2{%
\pkgcls@show@selection{#1}{#2}%
\pkgcls@targetdate\z@
+ \@addtofilelist{#1}%
\@@input #1\relax
\endinput
}
@@ -17526,7 +17644,40 @@ Type H <return> for immediate help.}%
{ \q_recursion_tail } { }
\q_recursion_stop
\group_end:
+\cs_new_protected:cpn { \c__keys_props_root_str .pass-to-packages }
+ {
+ \bool_if:NTF \l__keys_no_value_bool
+ { \__keys_scope:n { true } }
+ { \__keys_scope:n }
+ }
+\cs_new_protected:Npn \__keys_scope:n #1
+ {
+ \str_case:nnF {#1}
+ {
+ { true }
+ { \__keys_scope:N \clist_put_right:NV }
+ { false }
+ { \__keys_scope:N \clist_remove_all:NV }
+ }
+ {
+ \msg_error:nnnn { keys }
+ { choice-unknown }
+ { .pass-to-packages }
+ {#1}
+ }
+ }
+\cs_new_protected:Npn \__keys_scope:N #1
+ {
+ \exp_after:wN \__keys_find_key_module:wNN
+ \l_keys_path_str \s__keys_stop
+ \l_keys_key_tl \l_keys_key_str
+ #1 \l__keys_forced_global_clist \l_keys_key_str
+ }
+\cs_generate_variant:Nn \clist_if_in:NnT { Ne }
+\cs_generate_variant:Nn \clist_if_in:NnTF { Ne }
\cs_generate_variant:Nn \clist_put_right:Nn { Nv }
+\clist_new:N \l__keys_class_only_clist
+\clist_new:N \l__keys_forced_global_clist
\clist_new:N \l__keys_options_clist
\bool_new:N \l__keys_options_loading_bool
\cs_new_protected:Npn \__keys_options:n #1
@@ -17579,18 +17730,11 @@ Type H <return> for immediate help.}%
{
\cs_if_free:cF { @raw@opt@ \@currname . \@currext }
{
- \keys_if_exist:nnTF {#1} { unknown }
+ \clist_map_inline:cn { @raw@opt@ \@currname . \@currext }
{
- \clist_put_right:Nv \l__keys_options_clist
- { @raw@opt@ \@currname . \@currext }
- }
- {
- \clist_map_inline:cn { @raw@opt@ \@currname . \@currext }
- {
- \exp_args:Ne \__keys_options_class:nnn
- { \tl_trim_spaces:e { \__keys_remove_equals:n {##1} } }
- {##1} {#1}
- }
+ \exp_args:Ne \__keys_options_class:nnn
+ { \tl_trim_spaces:e { \__keys_remove_equals:n {##1} } }
+ {##1} {#1}
}
}
}
@@ -17598,14 +17742,23 @@ Type H <return> for immediate help.}%
{
\keys_if_exist:nnTF {#3} {#1}
{
- \clist_put_right:Nn \l__keys_options_clist {#2}
- \clist_remove_all:Nn \@unusedoptionlist {#1}
+ \__keys_options_class:nn {#1} {#2}
+ \clist_put_right:Ne \l__keys_class_only_clist { \tl_to_str:n {#1} }
}
{
- \clist_if_in:NnF \@unusedoptionlist {#1}
- { \clist_put_right:Nn \@unusedoptionlist {#1} }
+ \keys_if_exist:nnTF {#3} { unknown }
+ { \__keys_options_class:nn {#1} {#2} }
+ {
+ \clist_if_in:NnF \@unusedoptionlist {#1}
+ { \clist_put_right:Nn \@unusedoptionlist {#1} }
+ }
}
}
+\cs_new_protected:Npn \__keys_options_class:nn #1#2
+ {
+ \clist_remove_all:Nn \@unusedoptionlist {#1}
+ \clist_put_right:Nn \l__keys_options_clist {#2}
+ }
\cs_new_protected:Npn \__keys_options_package:n #1
{
\clist_map_inline:Nn \@raw@classoptionslist
@@ -17619,10 +17772,19 @@ Type H <return> for immediate help.}%
{
\keys_if_exist:nnT {#3} {#1}
{
- \clist_put_right:Nn \l__keys_options_clist {#2}
- \clist_remove_all:Nn \@unusedoptionlist {#1}
+ \clist_if_in:NeTF \l__keys_class_only_clist { \tl_to_str:n {#1} }
+ {
+ \clist_if_in:NeT \l__keys_forced_global_clist { \tl_to_str:n {#1} }
+ { \__keys_options_package:nn {#1} {#2} }
+ }
+ { \__keys_options_package:nn {#1} {#2} }
}
}
+\cs_new_protected:Npn \__keys_options_package:nn #1#2
+ {
+ \clist_put_right:Nn \l__keys_options_clist {#2}
+ \clist_remove_all:Nn \@unusedoptionlist {#1}
+ }
\cs_new_protected:Npn \__keys_options_local:
{
\cs_if_eq:NNF \@currext \@clsextension
@@ -18004,7 +18166,7 @@ Type H <return> for immediate help.}%
\declare@file@substitution{atveryend.sty}{atveryend-ltx.sty}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
-%% Copyright (C) 2020-2024
+%% Copyright (C) 2020-2025
%% Frank Mittelbach, The LaTeX Project
%%
%%% From File: ltshipout.dtx
@@ -19527,37 +19689,70 @@ Type H <return> for immediate help.}%
\let\dblfigrule=\relax
%%% From File: lttagging.dtx
\ExplSyntaxOn
-\cs_new_eq:NN \SuspendTagging \use_none:n
-\cs_new_eq:NN \ResumeTagging \use_none:n
-\AddToHook{begindocument/before}{
- \cs_if_exist:NT \tag_stop:n
- {
- \cs_set:Npn \SuspendTagging #1 {
- \tag_stop:n {#1}
- }
- \cs_set:Npn \ResumeTagging #1 { \tag_start:n {#1} }
- }
-}
-\AddToHook{begindocument}[kernel]{
- \cs_if_exist:NF \tag_if_active:T
- {
- \prg_new_conditional:Npnn \tag_if_active: { p , T , TF, F }
- { \prg_return_false: }
- }
-}
+
+\cs_new_eq:NN \tag_suspend:n \use_none:n
+\cs_new_eq:NN \tag_resume:n \use_none:n
+\cs_new_protected:Npn \SuspendTagging #1 { \tag_suspend:n {#1} }
+\cs_new_protected:Npn \ResumeTagging #1 { \tag_resume:n {#1} }
+\prg_new_conditional:Npnn \tag_if_active: { p , T , TF, F }
+ { \prg_return_false: }
+\cs_new:Npn \tag_socket_use_expandable:n #1 { }
\cs_new_protected:Npn \tag_socket_use:n #1 { }
\cs_new_protected:Npn \tag_socket_use:nn #1#2 { }
+\cs_new_protected:Npn \tag_socket_use:nnn #1#2#3 { #3 }
\cs_new_protected:Npn \UseTaggingSocket #1 {
\int_case:nnF
{ \int_use:c { c__socket_tagsupport/#1_args_int } }
{
0 \prg_do_nothing:
1 \use_none:n
- 2 \use_none:nn
+ 2 \use_ii:nn
}
\ERRORusetaggingsocket % that should get a proper error message
}
+\cs_new:Npn \UseExpandableTaggingSocket #1 {
+ \int_case:nnF
+ { \int_use:c { c__socket_tagsupport/#1_args_int } }
+ {
+ 0 \prg_do_nothing:
+ 1 \use_none:n
+ 2 \use_ii:nn
+ }
+ \ERRORusetaggingsocket % that should get a proper error message
+}
+\int_new:N \l__tag_block_flattened_level_int
+\NewSocket{tagsupport/para/restore}{0}
+\NewSocketPlug{tagsupport/para/restore}{default}
+ {
+ \tl_set:Nn \l__tag_para_main_tag_tl {text-unit}
+ \tl_set_eq:NN \l__tag_para_tag_tl\l__tag_para_tag_default_tl
+ \bool_set_false:N\l__tag_para_flattened_bool
+ \int_zero:N \l__tag_block_flattened_level_int
+ \bool_set_true:N \l__tag_para_bool
+ }
+\AssignSocketPlug{tagsupport/para/restore}{default}
+
+
+\NewSocket{tagsupport/recordtarget}{0}
+\NewSocketPlug{tagsupport/recordtarget}{kernel}
+ {
+ \tl_if_blank:VF \@currentHref
+ {
+ \prop_gput:Nee
+ \g__tag_struct_dest_num_prop
+ {\@currentHref}
+ {\tag_get:n{struct_num}}
+ }
+ }
+\AssignSocketPlug{tagsupport/recordtarget}{kernel}
\ExplSyntaxOff
+
+\NewSocket{tagsupport/toc/contentsline/before}{1}
+\NewSocket{tagsupport/toc/contentsline/after}{1}
+\NewSocket{tagsupport/toc/starttoc/before}{1}
+\NewSocket{tagsupport/toc/starttoc/after}{1}
+\NewSocket{tagsupport/toc/leaders/before}{0}
+\NewSocket{tagsupport/toc/leaders/after}{0}
\NewSocket{tagsupport/tbl/cell/begin}{0}
\NewSocket{tagsupport/tbl/cell/end}{0}
\NewSocket{tagsupport/tbl/row/begin}{0}
@@ -19565,7 +19760,9 @@ Type H <return> for immediate help.}%
\NewSocket{tagsupport/tbl/pcell/begin}{0}
\NewSocket{tagsupport/tbl/pcell/end}{0}
\NewSocket{tagsupport/tbl/init}{0}
+\NewSocket{tagsupport/tbl/init/celldata}{0}
\NewSocket{tagsupport/tbl/finalize}{0}
+\NewSocket{tagsupport/tbl/restore/celldata}{0}
\NewSocket{tagsupport/tbl/colspan}{1}
@@ -19577,6 +19774,16 @@ Type H <return> for immediate help.}%
\NewSocket{tagsupport/tbl/longtable/finalize}{0}
\NewSocket{tagsupport/tbl/longtable/head}{0}
\NewSocket{tagsupport/tbl/longtable/foot}{0}
+\NewSocket{tagsupport/tbl/leaders/begin}{0}
+\NewSocket{tagsupport/tbl/leaders/end}{0}
+\NewSocket{tagsupport/float/hmode/begin}{0}
+\NewSocket{tagsupport/float/hmode/end}{0}
+\NewSocket{tagsupport/float/begin}{0}
+\NewSocket{tagsupport/float/end}{0}
+\NewSocket{tagsupport/caption/begin}{1}
+\NewSocket{tagsupport/caption/end}{0}
+\NewSocket{tagsupport/caption/label/begin}{0}
+\NewSocket{tagsupport/caption/label/end}{0}
\ExplSyntaxOn
\int_new:N \g__tbl_col_int
\int_new:N \g__tbl_row_int
@@ -19650,6 +19857,7 @@ Type H <return> for immediate help.}%
{ max:~ \l__tbl_saved_table_cols_tl }
)
}
+ \UseTaggingSocket{tbl/init/celldata}
\int_gzero:N \g__tbl_row_int
\int_gzero:N \g__tbl_col_int
\tl_gset:Nn \g__tbl_span_tl {1}
@@ -19685,6 +19893,7 @@ Type H <return> for immediate help.}%
\int_gset:Nn \g__tbl_row_int { \l__tbl_saved_row_tl }
\tl_gset_eq:NN \g__tbl_span_tl \l__tbl_saved_span_tl
\tl_gset_eq:NN \g__tbl_table_cols_tl \l__tbl_saved_table_cols_tl
+ \UseTaggingSocket{tbl/restore/celldata}
\__tbl_trace:n { ==>~ restored~cell~data:~
\int_use:N \g__tbl_row_int,
\int_use:N \g__tbl_col_int,
@@ -19715,7 +19924,6 @@ Type H <return> for immediate help.}%
\crcr
}
\ExplSyntaxOff
-\let\@kernel@refstepcounter\refstepcounter
\def\hyper@nopatch@longtable{}
%%% From File: ltfinal.dtx
\tracingstats1
diff --git a/Master/texmf-dist/tex/latex/base/latex209.def b/Master/texmf-dist/tex/latex/base/latex209.def
index 633dbaebcd9..3dadba26963 100644
--- a/Master/texmf-dist/tex/latex/base/latex209.def
+++ b/Master/texmf-dist/tex/latex/base/latex209.def
@@ -15,7 +15,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/latexrelease.sty b/Master/texmf-dist/tex/latex/base/latexrelease.sty
index 51bccae7522..eee4a5dd18b 100644
--- a/Master/texmf-dist/tex/latex/base/latexrelease.sty
+++ b/Master/texmf-dist/tex/latex/base/latexrelease.sty
@@ -68,7 +68,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -122,6 +122,13 @@
\pkgcls@debug{\@spaces 4: #4}%
\def\pkgcls@name{#1}% % for info message
\def\pkgcls@arg {#3}% % for info message
+ \edef\pkgcls@ext{%
+ \ifx#4\@clsextension document class\else
+ \ifx#4\@pkgextension package\else
+ file
+ \fi
+ \fi
+ }% % for info message
\pkgcls@parse@date@arg{#3}%
\let\pkgcls@candidate\@empty
\begingroup
@@ -163,7 +170,7 @@
\ifnum \@parse@version0#1//00\@nil > \pkgcls@targetdate
\@latex@warning@no@line{Suspicious rollback/min-date date given\MessageBreak
A minimal date of #1 has been specified for
- \@cls@pkg\MessageBreak '\pkgcls@name'.\MessageBreak
+ \pkgcls@ext\MessageBreak '\pkgcls@name'.\MessageBreak
But this is in conflict
with a rollback request to \requestedpatchdate}
\fi
@@ -219,6 +226,7 @@
\def\pkgcls@use@this@release#1#2{%
\pkgcls@show@selection{#1}{#2}%
\pkgcls@targetdate\z@
+ \@addtofilelist{#1}%
\@@input #1\relax
\endinput
}
@@ -293,7 +301,7 @@
}
%%% From File: ltvers.dtx
\edef\latexreleaseversion
- {2024-06-01}
+ {2024-11-01}
\newif\if@includeinrelease
\@includeinreleasefalse
\def\IncludeInRelease#1{%
@@ -424,7 +432,7 @@
\@skipping@modulefalse
\fi}
\ProvidesPackage{latexrelease}
- [2022/11/14 v1.0p LaTeX release emulation and tests
+ [2024/08/11 v1.0p LaTeX release emulation and tests
(including releases up to \latexreleaseversion)]
\NeedsTeXFormat{LaTeX2e}[1996/06/01]
\@ifundefined{sourceLaTeXdate}{%
@@ -1982,8 +1990,8 @@ of this package available from CTAN}
\EndIncludeInRelease
%%% From File: ltcmd.dtx
-\def\ltcmdversion{v1.2e}
-\def\ltcmddate{2024-04-17}
+\def\ltcmdversion{v1.2f}
+\def\ltcmddate{2024-07-06}
\edef\@latexrelease@catcode@null{\the\catcode`\^^@ }
\catcode`\^^@=12
\ExplSyntaxOn
@@ -2202,6 +2210,22 @@ of this package available from CTAN}
{ \cs_set_nopar:cpx }
{ \l__cmd_function_tl \c_space_tl } ##1##2 { ##1 {##2} }
}
+\IncludeInRelease{2024/11/01}{\__cmd_declare_env:nnnn}%
+ {Use~space-trimmed~envname~directly}
+\cs_new_protected:Npn \__cmd_declare_env:nnnn #1#2
+ {
+ \str_set:Nn \l__cmd_environment_str {#1}
+ \cs_if_exist:cTF { #1 }
+ { \msg_info:nnnn { cmd } { redefine-env } { #1 } { #2 } }
+ { \msg_info:nnnn { cmd } { define-env } { #1 } { #2 } }
+ \bool_set_false:N \l__cmd_expandable_bool
+ \bool_set_true:N \l__cmd_environment_bool
+ \__cmd_declare_env_internal:nnnn {#1} {#2}
+ }
+\cs_generate_variant:Nn \__cmd_declare_env:nnnn { e }
+\EndIncludeInRelease
+\IncludeInRelease{2024/06/01}{\__cmd_declare_env:nnnn}%
+ {Use~space-trimmed~envname~directly}
\cs_new_protected:Npn \__cmd_declare_env:nnnn #1#2
{
\str_set:Nx \l__cmd_environment_str {#1}
@@ -2221,6 +2245,8 @@ of this package available from CTAN}
\exp_args:NV \__cmd_declare_env_internal:nnnn
\l__cmd_environment_str {#2}
}
+
+\EndIncludeInRelease
\cs_new_protected:Npn \__cmd_declare_env_internal:nnnn #1#2#3#4
{
\exp_args:Nc \__cmd_declare_cmd_internal:Nnnn { environment~ #1 } {#2}
@@ -4799,6 +4825,61 @@ of this package available from CTAN}
\__cmd_check_definable:nNT {#1} \DeclareDocumentCommand
{ \__cmd_declare_cmd:Nnn #1 {#2} {#3} }
}
+\IncludeInRelease{2024/11/01}{\NewDocumentEnvironment}%
+ {Trim~spaces~from~envname~first}
+\cs_new_protected:Npn \NewDocumentEnvironment #1#2#3#4
+ {
+ \__cmd_new_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+ }
+\cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4
+ {
+ \__cmd_renew_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+ }
+\cs_new_protected:Npn \ProvideDocumentEnvironment #1#2#3#4
+ {
+ \__cmd_provide_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+ }
+\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
+ {
+ \__cmd_declare_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4}
+ }
+\cs_new_protected:Npn \__cmd_new_env:nnnn #1
+ {
+ \cs_if_exist:cTF {#1}
+ {
+ \msg_error:nnx { cmd } { env-already-defined } {#1}
+ \use_none:nnn
+ }
+ {
+ \cs_if_exist:cTF { end #1 }
+ {
+ \msg_error:nnx { cmd } { env-end-already-defined } {#1}
+ \use_none:nnn
+ }
+ { \__cmd_declare_env:nnnn {#1} }
+ }
+ }
+\cs_new_protected:Npn \__cmd_renew_env:nnnn #1
+ {
+ \cs_if_exist:cTF {#1}
+ { \__cmd_declare_env:nnnn {#1} }
+ {
+ \msg_error:nnx { cmd } { env-undefined } {#1}
+ \use_none:nnn
+ }
+ }
+\cs_new_protected:Npn \__cmd_provide_env:nnnn #1
+ {
+ \cs_if_exist:cTF {#1}
+ { \use_none:nnn }
+ { \__cmd_declare_env:nnnn {#1} }
+ }
+\cs_generate_variant:Nn \__cmd_new_env:nnnn { e }
+\cs_generate_variant:Nn \__cmd_renew_env:nnnn { e }
+\cs_generate_variant:Nn \__cmd_provide_env:nnnn { e }
+\EndIncludeInRelease
+\IncludeInRelease{2024/06/01}{\NewDocumentEnvironment}%
+ {Trim~spaces~from~envname~first}
\cs_new_protected:Npn \NewDocumentEnvironment #1#2#3#4
{
\cs_if_exist:cTF {#1}
@@ -4819,6 +4900,14 @@ of this package available from CTAN}
{ \cs_if_exist:cF {#1} { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} } }
\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
{ \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
+\cs_undefine:N \__cmd_new_env:nnnn
+\cs_undefine:N \__cmd_new_env:ennn
+\cs_undefine:N \__cmd_renew_env:nnnn
+\cs_undefine:N \__cmd_renew_env:ennn
+\cs_undefine:N \__cmd_provide_env:nnnn
+\cs_undefine:N \__cmd_provide_env:ennn
+
+\EndIncludeInRelease
\cs_new_protected:Npn \NewExpandableDocumentCommand #1#2#3
{
\__cmd_check_definable:nNT {#1} \NewExpandableDocumentCommand
@@ -5242,17 +5331,19 @@ of this package available from CTAN}
{Providing~hooks}
\cs_gset_protected:Npn \hook_activate_generic:n #1 { }
\EndIncludeInRelease
-\cs_new:Npn \__hook_parse_label_default:n #1
+\cs_new:Npn \__hook_parse_label_default:nN #1#2
{
\tl_if_novalue:nTF {#1}
{ \__hook_currname_or_default: }
- { \tl_trim_spaces_apply:nN {#1} \__hook_parse_dot_label:n }
+ { \tl_trim_spaces_apply:nN {#1} \__hook_parse_dot_label:nN #2 }
}
-\cs_new:Npn \__hook_parse_dot_label:n #1
+\cs_new:Npn \__hook_parse_dot_label:nN #1#2
{
\tl_if_empty:nTF {#1}
{
- \msg_expandable_error:nn { hooks } { empty-label }
+ \bool_if:NTF #2
+ { \msg_expandable_error:nn { hooks } { empty-label } }
+ { \msg_expandable_error:nn { hooks } { empty-hook } }
\__hook_currname_or_default:
}
{
@@ -5307,24 +5398,24 @@ of this package available from CTAN}
\cs_new_protected:Npn \__hook_normalize_hook_args:Nn #1 #2
{
\__hook_normalize_hook_args_aux:Nn #1
- { { \__hook_parse_label_default:n {#2} } }
+ { { \__hook_parse_label_default:nN {#2} \c_false_bool } }
}
\cs_new_protected:Npn \__hook_normalize_hook_args:Nnn #1 #2 #3
{
\__hook_normalize_hook_args_aux:Nn #1
{
- { \__hook_parse_label_default:n {#2} }
- { \__hook_parse_label_default:n {#3} }
+ { \__hook_parse_label_default:nN {#2} \c_false_bool }
+ { \__hook_parse_label_default:nN {#3} \c_true_bool }
}
}
\cs_new_protected:Npn \__hook_normalize_hook_rule_args:Nnnnn #1 #2 #3 #4 #5
{
\__hook_normalize_hook_args_aux:Nn #1
{
- { \__hook_parse_label_default:n {#2} }
- { \__hook_parse_label_default:n {#3} }
+ { \__hook_parse_label_default:nN {#2} \c_false_bool }
+ { \__hook_parse_label_default:nN {#3} \c_true_bool }
{ \tl_trim_spaces:n {#4} }
- { \__hook_parse_label_default:n {#5} }
+ { \__hook_parse_label_default:nN {#5} \c_true_bool }
}
}
\tl_gset:Nn \g__hook_hook_curr_name_tl { top-level }
@@ -6774,7 +6865,9 @@ of this package available from CTAN}
{ #2 { The~hook~is~empty } }
{
\__hook_log_line:x { Code~chunks: }
- \prop_if_empty:cTF { g__hook_#1_code_prop }
+ \bool_lazy_or:nnTF
+ { ! \prop_if_exist_p:c { g__hook_#1_code_prop } }
+ { \prop_if_empty_p:c { g__hook_#1_code_prop } }
{ \__hook_log_line_indent:x { --- } }
{
\prop_map_inline:cn { g__hook_#1_code_prop }
@@ -6981,16 +7074,19 @@ of this package available from CTAN}
}
\cs_new_protected:Npn \__hook_list_rules:nn #1 #2
{
- \cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2}
- \prop_map_inline:cn { g__hook_#1_code_prop }
+ \prop_if_exist:cT { g__hook_#1_code_prop }
{
+ \cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2}
\prop_map_inline:cn { g__hook_#1_code_prop }
{
- \__hook_if_label_case:nnnnn {##1} {####1}
- { \prop_map_break: }
- { \__hook_list_one_rule:nnn {##1} {####1} }
- { \__hook_list_one_rule:nnn {####1} {##1} }
- {#1}
+ \prop_map_inline:cn { g__hook_#1_code_prop }
+ {
+ \__hook_if_label_case:nnnnn {##1} {####1}
+ { \prop_map_break: }
+ { \__hook_list_one_rule:nnn {##1} {####1} }
+ { \__hook_list_one_rule:nnn {####1} {##1} }
+ {#1}
+ }
}
}
}
@@ -7528,6 +7624,10 @@ of this package available from CTAN}
Empty~code~label~\msg_line_context:.~
Using~'\__hook_currname_or_default:'~instead.
}
+\msg_new:nnn { hooks } { empty-hook }
+ {
+ Empty~hook~name~\msg_line_context:.
+ }
\msg_new:nnn { hooks } { no-default-label }
{
Missing~(empty)~default~label~\msg_line_context:. \\
@@ -7705,6 +7805,8 @@ of this package available from CTAN}
\NewDocumentCommand \ClearHookRule { m m m }
{ \hook_gset_rule:nnnn {#1}{#2}{unrelated}{#3} }
\cs_new_eq:NN \IfHookEmptyTF \hook_if_empty:nTF
+\cs_new_eq:NN \IfHookEmptyT \hook_if_empty:nT
+\cs_new_eq:NN \IfHookEmptyF \hook_if_empty:nF
\cs_new_eq:NN \IfHookExistsTF \__hook_if_usable:nTF
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cs_new_protected:Npn \hook_disable:n
@@ -7848,7 +7950,7 @@ of this package available from CTAN}
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% From File: ltcmdhooks.dtx
-%% Copyright (C) 2020-2024
+%% Copyright (C) 2020-2025
%% Frank Mittelbach, Phelype Oleinik, The LaTeX Project
%%% From File: lthooks.dtx
\ExplSyntaxOn
@@ -8540,7 +8642,7 @@ of this package available from CTAN}
{
\cs_generate_from_arg_count:cNnn
{ __socket_#1_plug_#2:w }
- \cs_new_protected:Npn
+ \cs_new:Npn
{ \int_use:c { c__socket_#1_args_int } }
{#3}
\seq_put_right:cn { l__socket_#1_plugs_seq } {#2}
@@ -8559,7 +8661,7 @@ of this package available from CTAN}
{
\cs_generate_from_arg_count:cNnn
{ __socket_#1_plug_#2:w }
- \cs_set_protected:Npn
+ \cs_set:Npn
{ \int_use:c { c__socket_#1_args_int } }
{#3}
\__socket_debug_term:n
@@ -8599,6 +8701,10 @@ of this package available from CTAN}
\cs_new_eq:NN \socket_use:nn \socket_use:nw % socket with one input
\cs_new_eq:NN \socket_use:nnn \socket_use:nw % socket with two inputs
\cs_new_eq:NN \socket_use:nnnn \socket_use:nw % socket with three inputs
+\cs_new:Npn \socket_use_expandable:nw #1 {
+ \use:c { __socket_#1_plug_ \str_use:c { l__socket_#1_plug_str } :w }
+}
+\cs_new_eq:NN \socket_use_expandable:n \socket_use_expandable:nw % socket with no inputs
\msg_new:nnnn { socket } { already-declared }
{ Socket~ '#1'~ already~ declared! }
@@ -9489,23 +9595,33 @@ of this package available from CTAN}
}
\cs_new_protected:Npn \__template_assign_variable:
{
- \__template_assign_variable:c
+ \exp_args:Ne \__template_assign_variable:n
{
- \__template_map_var_type: _
- \bool_if:NT \l__template_global_bool { g } set:Nn
+ \__template_map_var_type:
+ _
+ \bool_if:NT \l__template_global_bool { g }
+ set:N
}
}
-\cs_new_protected:Npn \__template_assign_variable:N #1
+\cs_new_protected:Npn \__template_assign_variable:n #1
{
- \__template_if_key_value:VT \l__template_value_tl
- { \__template_key_to_value: }
- \tl_put_right:Ne \l__template_assignments_tl
+ \__template_if_key_value:VTF \l__template_value_tl
{
- #1 \exp_not:V \l__template_var_tl
- { \exp_not:V \l__template_value_tl }
+ \__template_key_to_value:
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:c { #1 V } \exp_not:V \l__template_var_tl
+ \exp_not:V \l__template_value_tl
+ }
+ }
+ {
+ \tl_put_right:Ne \l__template_assignments_tl
+ {
+ \exp_not:c { #1 n } \exp_not:V \l__template_var_tl
+ { \exp_not:V \l__template_value_tl }
+ }
}
}
-\cs_generate_variant:Nn \__template_assign_variable:N { c }
\cs_new_protected:Npn \__template_key_to_value:
{ \exp_after:wN \__template_key_to_value_auxi:w \l__template_value_tl }
\cs_new_protected:Npn \__template_key_to_value_auxi:w \KeyValue #1
@@ -9881,7 +9997,7 @@ of this package available from CTAN}
\EndIncludeInRelease
%%% From File: ltpar.dtx
%% File: ltpara.dtx
-%% Copyright (C) 2020-2024
+%% Copyright (C) 2020-2025
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltpara.dtx
@@ -10070,7 +10186,7 @@ of this package available from CTAN}
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% File: ltmeta.dtx
-%% Copyright (C) 2021-2024
+%% Copyright (C) 2021-2025
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmeta.dtx
\NewModuleRelease{2022/06/01}{ltmeta}
@@ -10090,6 +10206,32 @@ of this package available from CTAN}
\let \IfDocumentMetadataTF \@firstoftwo
\DocumentMetadata
}
+\IncludeInRelease{2024/11/01}%
+ {\MakeLinkTarget}{Record target name for tagging support}%
+\ExplSyntaxOn
+\int_new:N\g__kernel_target_int
+\NewDocumentCommand\MakeLinkTarget{sO{}m}{%
+ \ifvmode
+ \special{}%
+ \else
+ \@savsf\spacefactor
+ \smash{}%
+ \spacefactor\@savsf
+ \fi
+ \IfBooleanTF {#1}
+ {
+ \tl_gset:Ne \@currentHref {#3}
+ }
+ {
+ \int_gincr:N\g__kernel_target_int
+ \tl_gset:Ne \@currentHref {target*.\int_use:N\g__kernel_target_int}
+ }
+ \UseTaggingSocket{recordtarget}
+ }
+\ExplSyntaxOff
+\EndIncludeInRelease
+\IncludeInRelease{2022/06/01}%
+ {\MakeLinkTarget}{Record target name for tagging support}%
\NewDocumentCommand\MakeLinkTarget{sO{}m}{%
\ifvmode
\special{}%
@@ -10098,7 +10240,8 @@ of this package available from CTAN}
\smash{}%
\spacefactor\@savsf
\fi}
-\NewDocumentCommand\LinkTargetOn{}{}
+\EndIncludeInRelease
+ \NewDocumentCommand\LinkTargetOn{}{}
\NewDocumentCommand\LinkTargetOff{}{}
\NewDocumentCommand\NextLinkTarget{m}{}
\IncludeInRelease{0000/00/00}{ltmeta}%
@@ -10258,6 +10401,20 @@ of this package available from CTAN}
\fi
\fi}%
\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+ {\addvspace}{drop unnecessary no-item error}%
+\protected\def\addvspace#1{%
+ \ifhmode \ifinner \@LRmoderr \else \par \fi \fi
+ \if@minipage\else
+ \ifdim \lastskip =\z@
+ \@vspace@calcify{#1}%
+ \else
+ \setlength\@tempskipb{#1}%
+ \@xaddvskip
+ \fi
+ \fi
+}
+\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
{\addvspace}{\addvspace calc support}%
\def\addvspace#1{%
@@ -10291,6 +10448,38 @@ of this package available from CTAN}
\@noitemerr
\fi}
\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+ {\addpenalty}{\addpenalty drop error}%
+\protected\def\addpenalty#1{%
+ \ifhmode \ifinner \@LRmoderr \else \par \fi \fi
+ \if@minipage
+ \else
+ \if@nobreak
+ \else
+ \ifdim\lastskip=\z@
+ \penalty#1\relax
+ \else
+ \@tempskipb\lastskip
+ \begingroup
+ \@tempskipa\@tempskipb
+ \advance \@tempskipb
+ \ifdim\prevdepth>\maxdepth\maxdepth\else
+ \ifdim \prevdepth = -\@m\p@ \z@ \else \prevdepth \fi
+ \fi
+ \vskip -\@tempskipb
+ \penalty#1%
+ \ifdim\@tempskipa=\@tempskipb
+ \else
+ \advance\@tempskipb -\@tempskipa
+ \vskip \@tempskipb
+ \fi
+ \vskip \@tempskipa
+ \endgroup
+ \fi
+ \fi
+ \fi
+}
+\EndIncludeInRelease
\IncludeInRelease{2015/01/01}%
{\addpenalty}{\addpenalty}%
\def\addpenalty#1{%
@@ -11227,6 +11416,54 @@ of this package available from CTAN}
{Reset nested counters}%%
\def\@stpelt#1{\global\csname c@#1\endcsname \z@}%
\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}{\@definecounter}
+ {provide theHfoo commands}%
+\def\@definecounter#1{\expandafter\newcount\csname c@#1\endcsname
+ \setcounter{#1}\z@
+ \global\expandafter\let\csname cl@#1\endcsname\@empty
+ \@addtoreset{#1}{@ckpt}%
+ \global\expandafter\let\csname p@#1\endcsname\@empty
+ \expandafter\xdef\csname theH#1\endcsname{%
+ \noexpand\the\noexpand\value{#1}}%
+ \expandafter
+ \ifx\csname the#1\endcsname\relax
+ \expandafter
+ \gdef\csname the#1\expandafter\endcsname\expandafter
+ {\expandafter\@arabic\csname c@#1\endcsname}%
+ \else
+ \@latex@warning{Command `\string\the#1' already
+ defined -- not changed}%
+ \fi}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\@definecounter}
+ {provide theHfoo commands}%%
+\def\@definecounter#1{\expandafter\newcount\csname c@#1\endcsname
+ \setcounter{#1}\z@
+ \global\expandafter\let\csname cl@#1\endcsname\@empty
+ \@addtoreset{#1}{@ckpt}%
+ \global\expandafter\let\csname p@#1\endcsname\@empty
+ \expandafter
+ \ifx\csname the#1\endcsname\relax
+ \expandafter
+ \gdef\csname the#1\expandafter\endcsname\expandafter
+ {\expandafter\@arabic\csname c@#1\endcsname}%
+ \else
+ \@latex@warning{Command `\string\the#1' already
+ defined -- not changed}%
+ \fi}
+\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}{\@addtoreset}
+ {provide theHfoo commands}%
+\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}%
+ \expandafter\xdef\csname theH#1\endcsname{%
+ \expandafter\noexpand\csname theH#2\endcsname.%
+ \noexpand\the\noexpand\value{#1}}%
+}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\@addtoreset}
+ {provide theHfoo commands}%%
+\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}}
+\EndIncludeInRelease
\IncludeInRelease{2018-04-01}
{\@removefromreset}{Add interfaces}%
\def\@removefromreset#1#2{%
@@ -11359,6 +11596,17 @@ of this package available from CTAN}
{\setlength}{Using \setlength with \dimen0}%
\def\setlength#1#2{#1#2\relax}
\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+ {\@settodim}{suspend tagging}%
+\def\@settodim#1#2#3{\setbox\@tempboxa\hbox
+ {{\SuspendTagging{\@settodim}#3\ResumeTagging{\@settodim}}}#2#1\@tempboxa
+ \setbox\@tempboxa\box\voidb@x}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@settodim}{suspend tagging}%
+\def\@settodim#1#2#3{\setbox\@tempboxa\hbox{{#3}}#2#1\@tempboxa
+ \setbox\@tempboxa\box\voidb@x}
+\EndIncludeInRelease
%%% From File: ltfssbas.dtx
%% Copyright (C) 1989-2002 Frank Mittelbach and Rainer Sch\"opf
\IncludeInRelease{2020/02/02}%
@@ -11664,6 +11912,7 @@ of this package available from CTAN}
\hbadness\@M
\hfuzz\maxdimen
\tracingonline\z@
+ \tracinglostchars\z@
\everypar={}%
\leftskip\z@skip
\rightskip\z@skip
@@ -13718,45 +13967,6 @@ of this package available from CTAN}
\egroup
}
\def\textcompsubstdefault{\rmsubstdefault}
-\def\DeclareEncodingSubset#1#2{%
- \DeclareEncodingSubset@aux{#1}#2*\DeclareEncodingSubset@aux
-}
-\def\DeclareEncodingSubset@aux#1#2*#3\DeclareEncodingSubset@aux#4{%
- \expandafter\ifx\expandafter X\detokenize{#3}X%
- \@DeclareEncodingSubset{#1}{#2}{#4}%
- \else
- \@DeclareEncodingSubset{#1}{#2LF}{#4}%
- \@DeclareEncodingSubset{#1}{#2TLF}{#4}%
- \@DeclareEncodingSubset{#1}{#2OsF}{#4}%
- \@DeclareEncodingSubset{#1}{#2TOsF}{#4}%
- \fi
-}
-\def\@DeclareEncodingSubset#1#2#3{%
- \@ifundefined{#1:#2}%
- {\@font@info{Setting #2 sub-encoding to #1/#3}}%
- {\@font@info{Changing #2 sub-encoding to #1/#3}}%
- \global\@namedef{#1:#2}{#3}}
-\@onlypreamble\DeclareEncodingSubset
-\@onlypreamble\DeclareEncodingSubset@aux
-\@onlypreamble\@DeclareEncodingSubset
-
-
-\def\CheckEncodingSubset#1#2#3#4#5{%
- \ifnum #4>%
- \expandafter\ifx\csname #2:\f@family\endcsname\relax
- 0\csname #2:?\endcsname
- \else
- \csname #2:\f@family\endcsname
- \fi
- \relax
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {#1{#2}}{#3}%
- #5%
-}
-
\def\tc@errorwarn#1#2{\@latex@info{#1}}
\def\tc@subst#1{%
@@ -14073,11 +14283,7 @@ of this package available from CTAN}
\DeclareEncodingSubset{TS1}{?}{9}
\DeclareEncodingSubset{TS1}{ccr} {0}
\DeclareEncodingSubset{TS1}{cmbr} {0}
-\DeclareEncodingSubset{TS1}{cmr} {0}
-\DeclareEncodingSubset{TS1}{cmss} {0}
\DeclareEncodingSubset{TS1}{cmtl} {0}
-\DeclareEncodingSubset{TS1}{cmtt} {0}
-\DeclareEncodingSubset{TS1}{cmvtt} {0}
\DeclareEncodingSubset{TS1}{pxr} {0}
\DeclareEncodingSubset{TS1}{pxss} {0}
\DeclareEncodingSubset{TS1}{pxtt} {0}
@@ -14575,11 +14781,42 @@ of this package available from CTAN}
\IncludeInRelease{2022/06/01}%
{\Ref}{Add starred version}%
\def\@currentcounter{}
-\def\refstepcounter#1{\stepcounter{#1}%
+\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+ {\@currentHref}{set theHcounter representation}%
+\NewSocket{refstepcounter}{1}
+\NewSocket{refstepcounter/target}{1}
+\NewSocketPlug{refstepcounter/target}{kernel}
+ {\xdef\@currentHref {#1.\csname theH#1\endcsname}}%
+\AssignSocketPlug{refstepcounter/target}{kernel}
+\def\refstepcounter#1{%
+ \UseSocket{refstepcounter}{%
+ \stepcounter{#1}%
\edef\@currentcounter{#1}%
\protected@edef\@currentlabel
{\csname p@#1\expandafter\endcsname\csname the#1\endcsname}%
+ \UseSocket{refstepcounter/target}{#1}%
+ \UseTaggingSocket{recordtarget}%
+ }%
}
+\def\@kernel@refstepcounter#1{%
+ \UseSocket{refstepcounter}{%
+ \stepcounter{#1}%
+ \edef\@currentcounter{#1}%
+ \protected@edef\@currentlabel
+ {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}}}%
+\EndIncludeInRelease
+\IncludeInRelease{2022/06/01}%
+ {\@currentHref}{set theHcounter representation}%
+\def\refstepcounter#1{\stepcounter{#1}%
+ \edef\@currentcounter{#1}%
+ \protected@edef\@currentlabel
+ {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}%
+}
+\let\@kernel@refstepcounter\refstepcounter
+\EndIncludeInRelease
+\IncludeInRelease{2022/06/01}%
+ {\Ref}{Add starred version}%
\def\labelformat#1{\expandafter\def\csname p@#1\endcsname##1}
\def\@kernel@Ref#1{\protected@edef\@tempa{\@kernel@ref{#1}}%
\expandafter\MakeUppercase\@tempa}
@@ -14685,14 +14922,11 @@ of this package available from CTAN}
\cs_generate_variant:Nn \property_record:nn { nV , ee, oo }
\cs_new_protected:Npn \__property_record:nn #1#2
{
- \legacy_if:nT { @filesw }
+ \protected@write \@auxout {}
{
- \protected@write \@auxout {}
- {
- \token_to_str:N \new@label@record
- {#1}
- { \clist_map_function:nN {#2} \__property_record_value:n }
- }
+ \token_to_str:N \new@label@record
+ {#1}
+ { \clist_map_function:nN {#2} \__property_record_value:n }
}
}
\cs_generate_variant:Nn \__property_record:nn { e }
@@ -14815,8 +15049,8 @@ of this package available from CTAN}
}
\prg_generate_conditional_variant:Nnn \property_if_recorded:n {e} {TF}
\cs_new_eq:NN \IfLabelExistsTF \property_if_recorded:eTF
-\cs_new:Npn \IfLabelExistsT #1#2 {\property_if_exist:eTF {#1}{#2}{} }
-\cs_new:Npn \IfLabelExistsF #1 {\property_if_exist:eTF {#1}{} }
+\cs_new:Npn \IfLabelExistsT #1#2 {\property_if_recorded:eTF {#1}{#2}{} }
+\cs_new:Npn \IfLabelExistsF #1 {\property_if_recorded:eTF {#1}{} }
\prg_new_conditional:Npnn \property_if_recorded:nn #1#2 { p , T , F, TF }
% #1 label #2 property
{
@@ -14830,6 +15064,8 @@ of this package available from CTAN}
}
\prg_generate_conditional_variant:Nnn \property_if_recorded:nn {ee} {TF}
\cs_new_eq:NN \IfPropertyRecordedTF \property_if_recorded:eeTF
+\cs_new:Npn \IfPropertyRecordedT #1#2#3 { \property_if_recorded:eeTF {#1}{#2}{#3}{} }
+\cs_new:Npn \IfPropertyRecordedF #1#2#3 { \property_if_recorded:eeTF {#1}{#2}{}{#3} }
\cs_new_protected:Npn \property_ref_undefined_warn:
{
\flag_if_raised:nT { l__property_ref_flag }
@@ -14943,6 +15179,9 @@ of this package available from CTAN}
\NewHook{enddocument/afteraux}
\NewHook{enddocument/info}
\NewHook{enddocument/end}
+\RemoveFromHook{enddocument/info}[kernel/filelist]
+\RemoveFromHook{enddocument/info}[kernel/warnings]
+\RemoveFromHook{enddocument/info}[kernel/release]
\AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist}
\AddToHook{enddocument/info}[kernel/warnings]{\@enddocument@kernel@warnings}
\AddToHook{enddocument/info}[kernel/release]{%
@@ -15004,6 +15243,9 @@ of this package available from CTAN}
\NewHook{enddocument/afteraux}
\NewHook{enddocument/info}
\NewHook{enddocument/end}
+\RemoveFromHook{enddocument/info}[kernel/filelist]
+\RemoveFromHook{enddocument/info}[kernel/warnings]
+\RemoveFromHook{enddocument/info}[kernel/release]
\AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist}
\AddToHook{enddocument/info}[kernel/warnings]{\@enddocument@kernel@warnings}
\AddToHook{enddocument/info}[kernel/release]{%
@@ -15127,7 +15369,7 @@ of this package available from CTAN}
\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
{\begin}{Use hook system}%
-\DeclareRobustCommand*\begin[1]{%
+\protected\def\begin#1{%
\UseHook{env/#1/before}%
\@ifundefined{#1}%
{\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}%
@@ -15145,34 +15387,6 @@ of this package available from CTAN}
\fi
\UseHook{env/#1/begin}%
}
-\edef\end
- {\unexpanded{%
- \romannumeral
- \ifx\protect\@typeset@protect
- \expandafter %1
- \expandafter %2
- \expandafter %1
- \expandafter %3 expands the \csname inside \end<space>
- \expandafter %1
- \expandafter %2 expands \end<space>
- \expandafter %1 expands the \else
- \z@
- \else
- \expandafter\z@\expandafter\protect
- \fi
- }%
- \expandafter\noexpand\csname end \endcsname
- }
-\@namedef{end }#1{%
- \romannumeral
- \IfHookEmptyTF{env/#1/end}%
- {\expandafter\z@}%
- {\z@\UseHook{env/#1/end}}%
- \csname end#1\endcsname\@checkend{#1}%
- \expandafter\endgroup\if@endpe\@doendpe\fi
- \UseHook{env/#1/after}%
- \if@ignore\@ignorefalse\ignorespaces\fi
-}
\EndIncludeInRelease
\IncludeInRelease{2019/10/01}%
{\begin}{Making \begin/\end robust}%
@@ -15184,6 +15398,23 @@ of this package available from CTAN}
\csname #1\endcsname}}%
\@ignorefalse
\begingroup\@endpefalse\reserved@a}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\begin}{Making \begin/\end robust}%
+\def\begin#1{%
+ \@ifundefined{#1}%
+ {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}%
+ {\def\reserved@a{\def\@currenvir{#1}%
+ \edef\@currenvline{\on@line}%
+ \csname #1\endcsname}}%
+ \@ignorefalse
+ \begingroup\@endpefalse\reserved@a}
+
+\expandafter\let\csname begin \endcsname\@undefined
+
+\EndIncludeInRelease
+\IncludeInRelease{2019/10/01}%
+ {\end}{Making \begin/\end robust}%
\edef\end
{\unexpanded{%
\romannumeral
@@ -15202,27 +15433,52 @@ of this package available from CTAN}
}%
\expandafter\noexpand\csname end \endcsname
}
-\@namedef{end }#1{%
- \csname end#1\endcsname\@checkend{#1}%
- \expandafter\endgroup\if@endpe\@doendpe\fi
- \if@ignore\@ignorefalse\ignorespaces\fi}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\begin}{Making \begin/\end robust}%
-\def\begin#1{%
- \@ifundefined{#1}%
- {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}%
- {\def\reserved@a{\def\@currenvir{#1}%
- \edef\@currenvline{\on@line}%
- \csname #1\endcsname}}%
- \@ignorefalse
- \begingroup\@endpefalse\reserved@a}
+ {\end}{Making \begin/\end robust}%
\def\end#1{%
\csname end#1\endcsname\@checkend{#1}%
\expandafter\endgroup\if@endpe\@doendpe\fi
\if@ignore\@ignorefalse\ignorespaces\fi}
-\expandafter\let\csname begin \endcsname\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+ {\end!space}{New @endpe handling}%
+\@namedef{end }#1{%
+ \romannumeral
+ \IfHookEmptyTF{env/#1/end}%
+ {\expandafter\z@}%
+ {\z@\UseHook{env/#1/end}}%
+ \csname end#1\endcsname\@checkend{#1}%
+ \endgroup
+ \UseHook{env/#1/after}%
+ \if@ignore\@ignorefalse\ignorespaces\fi
+}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\end!space}{Use hook system}%
+
+\@namedef{end }#1{%
+ \romannumeral
+ \IfHookEmptyTF{env/#1/end}%
+ {\expandafter\z@}%
+ {\z@\UseHook{env/#1/end}}%
+ \csname end#1\endcsname\@checkend{#1}%
+ \expandafter\endgroup\if@endpe\@doendpe\fi
+ \UseHook{env/#1/after}%
+ \if@ignore\@ignorefalse\ignorespaces\fi
+}
+\EndIncludeInRelease
+\IncludeInRelease{2019/10/01}%
+ {\end!space}{Making \begin/\end robust}%
+
+\@namedef{end }#1{%
+ \csname end#1\endcsname\@checkend{#1}%
+ \expandafter\endgroup\if@endpe\@doendpe\fi
+ \if@ignore\@ignorefalse\ignorespaces\fi}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\end!space}{Making \begin/\end robust}%
\expandafter\let\csname end \endcsname\@undefined
\EndIncludeInRelease
@@ -15697,6 +15953,32 @@ of this package available from CTAN}
\let\leqno\@kernel@leqno
\EndIncludeInRelease
%%% From File: ltlists.dtx
+\IncludeInRelease{2024/11/01}%
+ {\@endpetrue}{New @endpe handling}%
+\def\@endpefalse{\global\let\if@endpe\iffalse}
+\def\@endpetrue {%
+ \global\let\if@endpe\iftrue
+ \ifnum\currentgrouptype =14 % semi-simple group
+ \aftergroup\propagate@doendpe
+ \else
+ \ifnum\currentgrouptype =\z@ % no group: top-level
+ \else
+ \ifnum\currentgrouptype =\@ne % simple group
+ \aftergroup\propagate@doendpe
+ \fi
+ \fi
+ \fi
+}
+\def\propagate@doendpe{\if@endpe \@doendpe \fi}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@endpetrue}{New @endpe handling}%
+
+
+\def\@endpefalse{\let\if@endpe\iffalse}
+\def\@endpetrue{\let\if@endpe\iftrue}
+
+\EndIncludeInRelease
%%% From File: ltboxes.dtx
\IncludeInRelease{2015/01/01}%
{\makebox}{Make \makebox robust}%
@@ -15776,7 +16058,6 @@ of this package available from CTAN}
\IncludeInRelease{2021/06/01}%
{\color@begingroup}{color group settings}%
\let\color@begingroup\begingroup
-\def\color@endgroup{\endgraf\endgroup}
\def\color@setgroup{\color@begingroup} % changed further in color package
\let\normalcolor\relax % remains untouched; only changed in a color package
\def\color@hbox{\hbox\bgroup\color@begingroup}
@@ -15787,7 +16068,6 @@ of this package available from CTAN}
{\color@begingroup}{color group settings}%
\let\color@begingroup\relax
-\let\color@endgroup\relax
\let\color@setgroup\relax
\let\normalcolor\relax
\let\color@hbox\relax
@@ -15795,6 +16075,22 @@ of this package available from CTAN}
\let\color@endbox\relax
\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+ {\color@endgroup}{color group settings}%
+\def\color@endgroup{\endgraf\@endpefalse\endgroup}
+
+\EndIncludeInRelease
+\IncludeInRelease{2021/06/01}%
+ {\color@endgroup}{color group settings}%
+\def\color@endgroup{\endgraf\endgroup}
+
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\color@endgroup}{color group settings}%
+
+\let\color@endgroup\relax
+
+\EndIncludeInRelease
\IncludeInRelease{2015/01/01}%
{\savebox}{Make \savebox robust}%
\DeclareRobustCommand\savebox[1]{%
@@ -17184,10 +17480,9 @@ of this package available from CTAN}
\EndIncludeInRelease
%% File: ltmarks.dtx
-%% Copyright (C) 2022-2024
+%% Copyright (C) 2022-2025
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmarks.dtx
-%% \end{function}
\ExplSyntaxOn
\NewModuleRelease{2022/06/01}{ltmarks}
@@ -17493,6 +17788,12 @@ of this package available from CTAN}
\NewExpandableDocumentCommand \IfMarksEqualTF {O{page}mmm} {
\mark_if_eq:nnnnTF {#1}{#2}{#3}{#4}
}
+\NewExpandableDocumentCommand \IfMarksEqualT {O{page}mmm} {
+ \mark_if_eq:nnnnT {#1}{#2}{#3}{#4}
+}
+\NewExpandableDocumentCommand \IfMarksEqualF {O{page}mmm} {
+ \mark_if_eq:nnnnF {#1}{#2}{#3}{#4}
+}
\cs_new_protected:Npn \__mark_update_singlecol_structures: {
\box_if_vertical:NTF \@outputbox
{
@@ -18003,7 +18304,9 @@ of this package available from CTAN}
\EndIncludeInRelease
\IncludeInRelease{2021/06/01}%
{\OptionNotUsed}{filter unused option list}%
-\def\@remove@eq@value#1=#2\@nil{#1}
+\ExplSyntaxOn
+\def\@remove@eq@value#1=#2\@nil{\tl_trim_spaces:n{#1}}
+\ExplSyntaxOff
\def\OptionNotUsed{%
\ifx\@currext\@clsextension
\xdef\@unusedoptionlist{%
@@ -18466,6 +18769,29 @@ of this package available from CTAN}
\DeclareRobustCommand\AtEndDocument{\g@addto@macro\@enddocumenthook}
\EndIncludeInRelease
+\IncludeInRelease{2024/11/01}%
+ {\@cls@pkg}{Allow for more extensions}%
+\def\@cls@pkg{%
+ \ifx\@currext\@clsextension
+ document class%
+ \else
+ \ifx\@currext\@pkgextension
+ package%
+ \else
+ file%
+ \fi
+ \fi}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@cls@pkg}{Allow for more extensions}%
+
+\def\@cls@pkg{%
+ \ifx\@currext\@clsextension
+ document class%
+ \else
+ package%
+ \fi}
+\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
{\filec@ntents}{Define \q@curr@file directly (gh/220)}%
\def\filecontents{\@tempswatrue\@fileswtrue
@@ -19304,7 +19630,7 @@ of this package available from CTAN}
\EndIncludeInRelease
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
-%% Copyright (C) 2020-2024
+%% Copyright (C) 2020-2025
%% Frank Mittelbach, The LaTeX Project
%%
%%% From File: ltshipout.dtx
diff --git a/Master/texmf-dist/tex/latex/base/latexsym.sty b/Master/texmf-dist/tex/latex/base/latexsym.sty
index 25d6b0e52e4..4d126b86f29 100644
--- a/Master/texmf-dist/tex/latex/base/latexsym.sty
+++ b/Master/texmf-dist/tex/latex/base/latexsym.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/latin1.def b/Master/texmf-dist/tex/latex/base/latin1.def
index b4784628978..f283f007d9c 100644
--- a/Master/texmf-dist/tex/latex/base/latin1.def
+++ b/Master/texmf-dist/tex/latex/base/latin1.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/latin10.def b/Master/texmf-dist/tex/latex/base/latin10.def
index 457b7112ab5..9c94bc98e7e 100644
--- a/Master/texmf-dist/tex/latex/base/latin10.def
+++ b/Master/texmf-dist/tex/latex/base/latin10.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/latin2.def b/Master/texmf-dist/tex/latex/base/latin2.def
index 764c5d0de5d..845ed31a476 100644
--- a/Master/texmf-dist/tex/latex/base/latin2.def
+++ b/Master/texmf-dist/tex/latex/base/latin2.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/latin3.def b/Master/texmf-dist/tex/latex/base/latin3.def
index 04e1030b37c..a9c32412acc 100644
--- a/Master/texmf-dist/tex/latex/base/latin3.def
+++ b/Master/texmf-dist/tex/latex/base/latin3.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/latin4.def b/Master/texmf-dist/tex/latex/base/latin4.def
index 6e2739c8704..9e1d5913a00 100644
--- a/Master/texmf-dist/tex/latex/base/latin4.def
+++ b/Master/texmf-dist/tex/latex/base/latin4.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/latin5.def b/Master/texmf-dist/tex/latex/base/latin5.def
index 8a6fb46905b..26399768e99 100644
--- a/Master/texmf-dist/tex/latex/base/latin5.def
+++ b/Master/texmf-dist/tex/latex/base/latin5.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/latin9.def b/Master/texmf-dist/tex/latex/base/latin9.def
index 35e87e2e564..3701c84ae7b 100644
--- a/Master/texmf-dist/tex/latex/base/latin9.def
+++ b/Master/texmf-dist/tex/latex/base/latin9.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/lcyenc.dfu b/Master/texmf-dist/tex/latex/base/lcyenc.dfu
index 60b8482da17..565f970d713 100644
--- a/Master/texmf-dist/tex/latex/base/lcyenc.dfu
+++ b/Master/texmf-dist/tex/latex/base/lcyenc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/leqno.clo b/Master/texmf-dist/tex/latex/base/leqno.clo
index 37e057bc7a4..3b65c07c0eb 100644
--- a/Master/texmf-dist/tex/latex/base/leqno.clo
+++ b/Master/texmf-dist/tex/latex/base/leqno.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/leqno.sty b/Master/texmf-dist/tex/latex/base/leqno.sty
index 8622218b9f3..93146debd9c 100644
--- a/Master/texmf-dist/tex/latex/base/leqno.sty
+++ b/Master/texmf-dist/tex/latex/base/leqno.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/letter.cls b/Master/texmf-dist/tex/latex/base/letter.cls
index f39504c561e..d97813cfa06 100644
--- a/Master/texmf-dist/tex/latex/base/letter.cls
+++ b/Master/texmf-dist/tex/latex/base/letter.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1996/06/01]
\ProvidesClass{letter}
- [2021/12/07 v1.3c
+ [2024/08/12 v1.3c
Standard LaTeX document class]
\newcommand\@ptsize{}
\DeclareOption{a4paper}
diff --git a/Master/texmf-dist/tex/latex/base/letter.sty b/Master/texmf-dist/tex/latex/base/letter.sty
index 687f7ca76a2..6735fc0bb9e 100644
--- a/Master/texmf-dist/tex/latex/base/letter.sty
+++ b/Master/texmf-dist/tex/latex/base/letter.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ltluatex.lua b/Master/texmf-dist/tex/latex/base/ltluatex.lua
index e92a27eb3a4..db7a1e850c0 100644
--- a/Master/texmf-dist/tex/latex/base/ltluatex.lua
+++ b/Master/texmf-dist/tex/latex/base/ltluatex.lua
@@ -13,7 +13,7 @@
-- (but please observe conditions on bug reports sent to that address!)
--
--
--- Copyright (C) 2015-2024
+-- Copyright (C) 2015-2025
-- The LaTeX Project and any individual authors listed elsewhere
-- in this file.
--
@@ -64,7 +64,7 @@ local function provides_module(info)
luatexbase_log(
"Lua module: " .. info.name
.. spaced(info.date)
- .. spaced(info.version)
+ .. spaced(info.version and string_gsub(info.version or "","^(%d)","v%1"))
.. spaced(info.description)
)
modules[info.name] = info
@@ -301,7 +301,7 @@ local callbacklist = setmetatable({}, {
end
list[i] = current.value
else
- -- Cycle occured. TODO: Show cycle for debugging
+ -- Cycle occurred. TODO: Show cycle for debugging
-- list[i] = ...
local remaining = {}
for name, entry in next, meta do
@@ -335,7 +335,7 @@ local callbacklist = setmetatable({}, {
for i=2, length//2 do
cycle[i], cycle[length + 1 - i] = cycle[length + 1 - i], cycle[i]
end
- error('Cycle occured at ' .. table.concat(cycle, ' -> ', 1, length))
+ error('Cycle occurred at ' .. table.concat(cycle, ' -> ', 1, length))
end
end
end
diff --git a/Master/texmf-dist/tex/latex/base/ltluatex.tex b/Master/texmf-dist/tex/latex/base/ltluatex.tex
index 2747e4f56f3..6b55ea96038 100644
--- a/Master/texmf-dist/tex/latex/base/ltluatex.tex
+++ b/Master/texmf-dist/tex/latex/base/ltluatex.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -47,7 +47,7 @@
#1#2[#3]{\endgroup\immediate\write-1{File: #1 #3}}
\fi
\ProvidesFile{ltluatex.tex}
-[2024/02/11 v1.2c
+[2024/08/16 v1.2e
LuaTeX support for plain TeX (core)%
]
\edef\etatcatcode{\the\catcode`\@}
diff --git a/Master/texmf-dist/tex/latex/base/ltnews.cls b/Master/texmf-dist/tex/latex/base/ltnews.cls
index fa86ce17b72..fef89a60df2 100644
--- a/Master/texmf-dist/tex/latex/base/ltnews.cls
+++ b/Master/texmf-dist/tex/latex/base/ltnews.cls
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2024
+% Copyright (C) 1993-2025
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex/base/ltxcheck.tex b/Master/texmf-dist/tex/latex/base/ltxcheck.tex
index 244bddffceb..d383af1f4df 100644
--- a/Master/texmf-dist/tex/latex/base/ltxcheck.tex
+++ b/Master/texmf-dist/tex/latex/base/ltxcheck.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2024
+% Copyright (C) 1993-2025
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex/base/ltxdoc.cfg b/Master/texmf-dist/tex/latex/base/ltxdoc.cfg
index edf3638e08d..d7231d4120c 100644
--- a/Master/texmf-dist/tex/latex/base/ltxdoc.cfg
+++ b/Master/texmf-dist/tex/latex/base/ltxdoc.cfg
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ltxdoc.cls b/Master/texmf-dist/tex/latex/base/ltxdoc.cls
index adee1bf9604..f9eac389d85 100644
--- a/Master/texmf-dist/tex/latex/base/ltxdoc.cls
+++ b/Master/texmf-dist/tex/latex/base/ltxdoc.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ltxguide.cls b/Master/texmf-dist/tex/latex/base/ltxguide.cls
index c202b56acb5..4402a5a56b4 100644
--- a/Master/texmf-dist/tex/latex/base/ltxguide.cls
+++ b/Master/texmf-dist/tex/latex/base/ltxguide.cls
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2024
+% Copyright (C) 1993-2025
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex/base/ly1enc.dfu b/Master/texmf-dist/tex/latex/base/ly1enc.dfu
index 4a530edee59..e4f199185cf 100644
--- a/Master/texmf-dist/tex/latex/base/ly1enc.dfu
+++ b/Master/texmf-dist/tex/latex/base/ly1enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/macce.def b/Master/texmf-dist/tex/latex/base/macce.def
index 49b810b1320..7edccd8034b 100644
--- a/Master/texmf-dist/tex/latex/base/macce.def
+++ b/Master/texmf-dist/tex/latex/base/macce.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/makeidx.sty b/Master/texmf-dist/tex/latex/base/makeidx.sty
index c1c1e7db523..23c6495a4d5 100644
--- a/Master/texmf-dist/tex/latex/base/makeidx.sty
+++ b/Master/texmf-dist/tex/latex/base/makeidx.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/minimal.cls b/Master/texmf-dist/tex/latex/base/minimal.cls
index 64efdd5287f..c7d420494f8 100644
--- a/Master/texmf-dist/tex/latex/base/minimal.cls
+++ b/Master/texmf-dist/tex/latex/base/minimal.cls
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2024
+% Copyright (C) 1993-2025
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex/base/newlfont.sty b/Master/texmf-dist/tex/latex/base/newlfont.sty
index 30e629743e1..0fa43ad4a32 100644
--- a/Master/texmf-dist/tex/latex/base/newlfont.sty
+++ b/Master/texmf-dist/tex/latex/base/newlfont.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/next.def b/Master/texmf-dist/tex/latex/base/next.def
index 6cc4d6aaae7..25f7842acd8 100644
--- a/Master/texmf-dist/tex/latex/base/next.def
+++ b/Master/texmf-dist/tex/latex/base/next.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/nfssfont.tex b/Master/texmf-dist/tex/latex/base/nfssfont.tex
index 464b881ffbb..d83ff4a1f76 100644
--- a/Master/texmf-dist/tex/latex/base/nfssfont.tex
+++ b/Master/texmf-dist/tex/latex/base/nfssfont.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/oldlfont.sty b/Master/texmf-dist/tex/latex/base/oldlfont.sty
index ae886f9bf9a..4c1f5fb7409 100644
--- a/Master/texmf-dist/tex/latex/base/oldlfont.sty
+++ b/Master/texmf-dist/tex/latex/base/oldlfont.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/omlcmm.fd b/Master/texmf-dist/tex/latex/base/omlcmm.fd
index 7345df2bb09..2ec66c54e49 100644
--- a/Master/texmf-dist/tex/latex/base/omlcmm.fd
+++ b/Master/texmf-dist/tex/latex/base/omlcmm.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omlcmm.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OML}{cmm}{\skewchar\font127 }
\DeclareFontShape{OML}{cmm}{m}{it}%
{<5><6><7><8><9>gen*cmmi%
diff --git a/Master/texmf-dist/tex/latex/base/omlcmr.fd b/Master/texmf-dist/tex/latex/base/omlcmr.fd
index 562a6d51708..231a10309f3 100644
--- a/Master/texmf-dist/tex/latex/base/omlcmr.fd
+++ b/Master/texmf-dist/tex/latex/base/omlcmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omlcmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OML}{cmr}{\skewchar\font127 }
\DeclareFontShape{OML}{cmr}{m}{n}%
{<->ssub*cmm/m/it}{}
diff --git a/Master/texmf-dist/tex/latex/base/omlenc.def b/Master/texmf-dist/tex/latex/base/omlenc.def
index ecc46f89f5c..92e0029c6a2 100644
--- a/Master/texmf-dist/tex/latex/base/omlenc.def
+++ b/Master/texmf-dist/tex/latex/base/omlenc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/omllcmm.fd b/Master/texmf-dist/tex/latex/base/omllcmm.fd
index 322903455a3..ef76469428e 100644
--- a/Master/texmf-dist/tex/latex/base/omllcmm.fd
+++ b/Master/texmf-dist/tex/latex/base/omllcmm.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/omscmr.fd b/Master/texmf-dist/tex/latex/base/omscmr.fd
index 610e916200b..b50c1aaa182 100644
--- a/Master/texmf-dist/tex/latex/base/omscmr.fd
+++ b/Master/texmf-dist/tex/latex/base/omscmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omscmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OMS}{cmr}{\skewchar\font48 }
\DeclareFontShape{OMS}{cmr}{m}{n}%
{<->ssub*cmsy/m/n}{}
diff --git a/Master/texmf-dist/tex/latex/base/omscmsy.fd b/Master/texmf-dist/tex/latex/base/omscmsy.fd
index 8ec4eb09303..f1e221b0941 100644
--- a/Master/texmf-dist/tex/latex/base/omscmsy.fd
+++ b/Master/texmf-dist/tex/latex/base/omscmsy.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omscmsy.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OMS}{cmsy}{\skewchar\font48 }
\DeclareFontShape{OMS}{cmsy}{m}{n}{%
<5><6><7><8><9><10>gen*cmsy%
diff --git a/Master/texmf-dist/tex/latex/base/omsenc.def b/Master/texmf-dist/tex/latex/base/omsenc.def
index 13ab8351bca..b2f4356c699 100644
--- a/Master/texmf-dist/tex/latex/base/omsenc.def
+++ b/Master/texmf-dist/tex/latex/base/omsenc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/omsenc.dfu b/Master/texmf-dist/tex/latex/base/omsenc.dfu
index d834c655fde..d378a9ce453 100644
--- a/Master/texmf-dist/tex/latex/base/omsenc.dfu
+++ b/Master/texmf-dist/tex/latex/base/omsenc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/omslcmsy.fd b/Master/texmf-dist/tex/latex/base/omslcmsy.fd
index 89295e21cd7..1d55ec731cc 100644
--- a/Master/texmf-dist/tex/latex/base/omslcmsy.fd
+++ b/Master/texmf-dist/tex/latex/base/omslcmsy.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/omxcmex.fd b/Master/texmf-dist/tex/latex/base/omxcmex.fd
index 31a4753ff62..4e36e120dbb 100644
--- a/Master/texmf-dist/tex/latex/base/omxcmex.fd
+++ b/Master/texmf-dist/tex/latex/base/omxcmex.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{omxcmex.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OMX}{cmex}{}
\DeclareFontShape{OMX}{cmex}{m}{n}{%
<->sfixed*cmex10%
diff --git a/Master/texmf-dist/tex/latex/base/omxlcmex.fd b/Master/texmf-dist/tex/latex/base/omxlcmex.fd
index 12315a1fceb..3d1548bf949 100644
--- a/Master/texmf-dist/tex/latex/base/omxlcmex.fd
+++ b/Master/texmf-dist/tex/latex/base/omxlcmex.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/openbib.sty b/Master/texmf-dist/tex/latex/base/openbib.sty
index 0d269866872..5b9dc4a045a 100644
--- a/Master/texmf-dist/tex/latex/base/openbib.sty
+++ b/Master/texmf-dist/tex/latex/base/openbib.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ot1cmdh.fd b/Master/texmf-dist/tex/latex/base/ot1cmdh.fd
index 254da740bf8..84e94766c1e 100644
--- a/Master/texmf-dist/tex/latex/base/ot1cmdh.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1cmdh.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmdh.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmdh}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmdh}{m}{n}{%
<10>cmdunh10%
diff --git a/Master/texmf-dist/tex/latex/base/ot1cmfib.fd b/Master/texmf-dist/tex/latex/base/ot1cmfib.fd
index 0276b7bde23..3badc1b6d19 100644
--- a/Master/texmf-dist/tex/latex/base/ot1cmfib.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1cmfib.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmfib.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmfib}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmfib}{m}{n}{%
<8>cmfib8%
diff --git a/Master/texmf-dist/tex/latex/base/ot1cmfr.fd b/Master/texmf-dist/tex/latex/base/ot1cmfr.fd
index 33bb6d1b126..f09fdd7e456 100644
--- a/Master/texmf-dist/tex/latex/base/ot1cmfr.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1cmfr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmfr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmfr}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmfr}{m}{n}{%
<10>cmff10%
diff --git a/Master/texmf-dist/tex/latex/base/ot1cmr.fd b/Master/texmf-dist/tex/latex/base/ot1cmr.fd
index 45f862af9b4..0b039577741 100644
--- a/Master/texmf-dist/tex/latex/base/ot1cmr.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1cmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmr}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmr}{m}{n}%
{<5><6><7><8><9><10><12>gen*cmr%
diff --git a/Master/texmf-dist/tex/latex/base/ot1cmss.fd b/Master/texmf-dist/tex/latex/base/ot1cmss.fd
index ad2de5a308f..11a152d68cd 100644
--- a/Master/texmf-dist/tex/latex/base/ot1cmss.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1cmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmss.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmss}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmss}{m}{n}
{%
diff --git a/Master/texmf-dist/tex/latex/base/ot1cmtt.fd b/Master/texmf-dist/tex/latex/base/ot1cmtt.fd
index 54f383b51c7..281af704ddf 100644
--- a/Master/texmf-dist/tex/latex/base/ot1cmtt.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1cmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmtt}{\hyphenchar \font\m@ne}
\DeclareFontShape{OT1}{cmtt}{m}{n}
{%
diff --git a/Master/texmf-dist/tex/latex/base/ot1cmvtt.fd b/Master/texmf-dist/tex/latex/base/ot1cmvtt.fd
index bf7b2c9d401..06c00f8b163 100644
--- a/Master/texmf-dist/tex/latex/base/ot1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1cmvtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ot1cmvtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{OT1}{cmvtt}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{cmvtt}{m}{n}%
{%
diff --git a/Master/texmf-dist/tex/latex/base/ot1enc.def b/Master/texmf-dist/tex/latex/base/ot1enc.def
index bede1dd19d5..9e6feeb3f65 100644
--- a/Master/texmf-dist/tex/latex/base/ot1enc.def
+++ b/Master/texmf-dist/tex/latex/base/ot1enc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ot1enc.dfu b/Master/texmf-dist/tex/latex/base/ot1enc.dfu
index f5f012d3f07..59046763a15 100644
--- a/Master/texmf-dist/tex/latex/base/ot1enc.dfu
+++ b/Master/texmf-dist/tex/latex/base/ot1enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ot1lcmss.fd b/Master/texmf-dist/tex/latex/base/ot1lcmss.fd
index d7a5cb11f79..73474e95d40 100644
--- a/Master/texmf-dist/tex/latex/base/ot1lcmss.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1lcmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ot1lcmtt.fd b/Master/texmf-dist/tex/latex/base/ot1lcmtt.fd
index 2d6d825ffe8..94dda67ffd5 100644
--- a/Master/texmf-dist/tex/latex/base/ot1lcmtt.fd
+++ b/Master/texmf-dist/tex/latex/base/ot1lcmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ot2enc.dfu b/Master/texmf-dist/tex/latex/base/ot2enc.dfu
index b239d2833f5..80ac4a2aa98 100644
--- a/Master/texmf-dist/tex/latex/base/ot2enc.dfu
+++ b/Master/texmf-dist/tex/latex/base/ot2enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ot4enc.def b/Master/texmf-dist/tex/latex/base/ot4enc.def
index a15bb8af874..13645d1b1bf 100644
--- a/Master/texmf-dist/tex/latex/base/ot4enc.def
+++ b/Master/texmf-dist/tex/latex/base/ot4enc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/preload.cfg b/Master/texmf-dist/tex/latex/base/preload.cfg
index 2e89d1f4e74..0021b410d4e 100644
--- a/Master/texmf-dist/tex/latex/base/preload.cfg
+++ b/Master/texmf-dist/tex/latex/base/preload.cfg
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{preload.cfg}
- [2024/02/09 v3.0i LaTeX Kernel
+ [2024/11/19 v3.0l LaTeX Kernel
(Uncustomized preload font setup)
]
%%
diff --git a/Master/texmf-dist/tex/latex/base/preload.ltx b/Master/texmf-dist/tex/latex/base/preload.ltx
index a63a1ebde85..253c91b80ea 100644
--- a/Master/texmf-dist/tex/latex/base/preload.ltx
+++ b/Master/texmf-dist/tex/latex/base/preload.ltx
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/proc.cls b/Master/texmf-dist/tex/latex/base/proc.cls
index 6d287880a19..f1e7c6aeb35 100644
--- a/Master/texmf-dist/tex/latex/base/proc.cls
+++ b/Master/texmf-dist/tex/latex/base/proc.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/proc.sty b/Master/texmf-dist/tex/latex/base/proc.sty
index 043ad962730..78a0add7e06 100644
--- a/Master/texmf-dist/tex/latex/base/proc.sty
+++ b/Master/texmf-dist/tex/latex/base/proc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/report.cls b/Master/texmf-dist/tex/latex/base/report.cls
index cb7a32f536d..41e2ebff39c 100644
--- a/Master/texmf-dist/tex/latex/base/report.cls
+++ b/Master/texmf-dist/tex/latex/base/report.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{report}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX document class]
\newcommand\@ptsize{}
\newif\if@restonecol
diff --git a/Master/texmf-dist/tex/latex/base/report.sty b/Master/texmf-dist/tex/latex/base/report.sty
index 855e160f245..ee44bcdea71 100644
--- a/Master/texmf-dist/tex/latex/base/report.sty
+++ b/Master/texmf-dist/tex/latex/base/report.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/sfonts.def b/Master/texmf-dist/tex/latex/base/sfonts.def
index f95ded8243e..98ec9518f10 100644
--- a/Master/texmf-dist/tex/latex/base/sfonts.def
+++ b/Master/texmf-dist/tex/latex/base/sfonts.def
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/shortvrb.sty b/Master/texmf-dist/tex/latex/base/shortvrb.sty
index c0266dd6930..845d0b111bb 100644
--- a/Master/texmf-dist/tex/latex/base/shortvrb.sty
+++ b/Master/texmf-dist/tex/latex/base/shortvrb.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{shortvrb}
- [2024/04/26 v3.0p
+ [2024/10/23 v3.0q
Standard LaTeX documentation package V3 (FMi)]
%%
%% Package `doc' to use with LaTeX 2e
diff --git a/Master/texmf-dist/tex/latex/base/showidx.sty b/Master/texmf-dist/tex/latex/base/showidx.sty
index 911b1d762e5..dbeb3459405 100644
--- a/Master/texmf-dist/tex/latex/base/showidx.sty
+++ b/Master/texmf-dist/tex/latex/base/showidx.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/size10.clo b/Master/texmf-dist/tex/latex/base/size10.clo
index 11be942b3e9..08aac99fe2a 100644
--- a/Master/texmf-dist/tex/latex/base/size10.clo
+++ b/Master/texmf-dist/tex/latex/base/size10.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{size10.clo}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xpt\@xiipt
diff --git a/Master/texmf-dist/tex/latex/base/size11.clo b/Master/texmf-dist/tex/latex/base/size11.clo
index a36fb7931ba..f5a7aea25d0 100644
--- a/Master/texmf-dist/tex/latex/base/size11.clo
+++ b/Master/texmf-dist/tex/latex/base/size11.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{size11.clo}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xipt{13.6}%
diff --git a/Master/texmf-dist/tex/latex/base/size12.clo b/Master/texmf-dist/tex/latex/base/size12.clo
index aa9f0808f73..8b84a6e2373 100644
--- a/Master/texmf-dist/tex/latex/base/size12.clo
+++ b/Master/texmf-dist/tex/latex/base/size12.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{size12.clo}
- [2024/02/08 v1.4n
+ [2024/06/29 v1.4n
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xiipt{14.5}%
diff --git a/Master/texmf-dist/tex/latex/base/slides.cls b/Master/texmf-dist/tex/latex/base/slides.cls
index df4cd3a3b68..c97a0436cfe 100644
--- a/Master/texmf-dist/tex/latex/base/slides.cls
+++ b/Master/texmf-dist/tex/latex/base/slides.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/slides.def b/Master/texmf-dist/tex/latex/base/slides.def
index d8e5e34fb71..f740db83331 100644
--- a/Master/texmf-dist/tex/latex/base/slides.def
+++ b/Master/texmf-dist/tex/latex/base/slides.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/slides.sty b/Master/texmf-dist/tex/latex/base/slides.sty
index 5208aa6eadd..250dcf7412a 100644
--- a/Master/texmf-dist/tex/latex/base/slides.sty
+++ b/Master/texmf-dist/tex/latex/base/slides.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/structuredlog.sty b/Master/texmf-dist/tex/latex/base/structuredlog.sty
index 6473fbc96fd..ea18c93b0e4 100644
--- a/Master/texmf-dist/tex/latex/base/structuredlog.sty
+++ b/Master/texmf-dist/tex/latex/base/structuredlog.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/syntonly.sty b/Master/texmf-dist/tex/latex/base/syntonly.sty
index 4d8aa24f88f..4b0a29783da 100644
--- a/Master/texmf-dist/tex/latex/base/syntonly.sty
+++ b/Master/texmf-dist/tex/latex/base/syntonly.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/t1cmdh.fd b/Master/texmf-dist/tex/latex/base/t1cmdh.fd
index 76b5eb1a106..d6f8085632a 100644
--- a/Master/texmf-dist/tex/latex/base/t1cmdh.fd
+++ b/Master/texmf-dist/tex/latex/base/t1cmdh.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmdh.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
diff --git a/Master/texmf-dist/tex/latex/base/t1cmfib.fd b/Master/texmf-dist/tex/latex/base/t1cmfib.fd
index 8fe21d2fda0..c78b29a70a9 100644
--- a/Master/texmf-dist/tex/latex/base/t1cmfib.fd
+++ b/Master/texmf-dist/tex/latex/base/t1cmfib.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmfib.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
diff --git a/Master/texmf-dist/tex/latex/base/t1cmfr.fd b/Master/texmf-dist/tex/latex/base/t1cmfr.fd
index 469b8d0d99a..b7b43ac661f 100644
--- a/Master/texmf-dist/tex/latex/base/t1cmfr.fd
+++ b/Master/texmf-dist/tex/latex/base/t1cmfr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmfr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
diff --git a/Master/texmf-dist/tex/latex/base/t1cmr.fd b/Master/texmf-dist/tex/latex/base/t1cmr.fd
index ddebbdf6959..7d68639b1e6 100644
--- a/Master/texmf-dist/tex/latex/base/t1cmr.fd
+++ b/Master/texmf-dist/tex/latex/base/t1cmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
diff --git a/Master/texmf-dist/tex/latex/base/t1cmss.fd b/Master/texmf-dist/tex/latex/base/t1cmss.fd
index 5294fb74d91..1d8763a923c 100644
--- a/Master/texmf-dist/tex/latex/base/t1cmss.fd
+++ b/Master/texmf-dist/tex/latex/base/t1cmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmss.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@ssfamily}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8>#50800%
diff --git a/Master/texmf-dist/tex/latex/base/t1cmtt.fd b/Master/texmf-dist/tex/latex/base/t1cmtt.fd
index ebd77a12951..36c5d173523 100644
--- a/Master/texmf-dist/tex/latex/base/t1cmtt.fd
+++ b/Master/texmf-dist/tex/latex/base/t1cmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@ttfamily}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8>#50800%
diff --git a/Master/texmf-dist/tex/latex/base/t1cmvtt.fd b/Master/texmf-dist/tex/latex/base/t1cmvtt.fd
index 4b22b9e7f1a..c4ae105c965 100644
--- a/Master/texmf-dist/tex/latex/base/t1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex/base/t1cmvtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{t1cmvtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@ttfamily}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8>#50800%
diff --git a/Master/texmf-dist/tex/latex/base/t1enc.def b/Master/texmf-dist/tex/latex/base/t1enc.def
index a46de580623..e2fcf4186f6 100644
--- a/Master/texmf-dist/tex/latex/base/t1enc.def
+++ b/Master/texmf-dist/tex/latex/base/t1enc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/t1enc.dfu b/Master/texmf-dist/tex/latex/base/t1enc.dfu
index 0ca48c54712..fb3847d384e 100644
--- a/Master/texmf-dist/tex/latex/base/t1enc.dfu
+++ b/Master/texmf-dist/tex/latex/base/t1enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/t1enc.sty b/Master/texmf-dist/tex/latex/base/t1enc.sty
index 50d9897d906..60c6c04f6fb 100644
--- a/Master/texmf-dist/tex/latex/base/t1enc.sty
+++ b/Master/texmf-dist/tex/latex/base/t1enc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/t1lcmss.fd b/Master/texmf-dist/tex/latex/base/t1lcmss.fd
index 17e05a62eb5..6b2c980d258 100644
--- a/Master/texmf-dist/tex/latex/base/t1lcmss.fd
+++ b/Master/texmf-dist/tex/latex/base/t1lcmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/t1lcmtt.fd b/Master/texmf-dist/tex/latex/base/t1lcmtt.fd
index 72ad4664b2e..c0e8fb9d301 100644
--- a/Master/texmf-dist/tex/latex/base/t1lcmtt.fd
+++ b/Master/texmf-dist/tex/latex/base/t1lcmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/t2aenc.dfu b/Master/texmf-dist/tex/latex/base/t2aenc.dfu
index aae8bfa09e3..8fd1a7a5f31 100644
--- a/Master/texmf-dist/tex/latex/base/t2aenc.dfu
+++ b/Master/texmf-dist/tex/latex/base/t2aenc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/t2benc.dfu b/Master/texmf-dist/tex/latex/base/t2benc.dfu
index 884997b63da..ae17c6cd5d0 100644
--- a/Master/texmf-dist/tex/latex/base/t2benc.dfu
+++ b/Master/texmf-dist/tex/latex/base/t2benc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/t2cenc.dfu b/Master/texmf-dist/tex/latex/base/t2cenc.dfu
index 0a62592f495..c520e0de460 100644
--- a/Master/texmf-dist/tex/latex/base/t2cenc.dfu
+++ b/Master/texmf-dist/tex/latex/base/t2cenc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/testpage.tex b/Master/texmf-dist/tex/latex/base/testpage.tex
index e8f06313fbf..77f955b7980 100644
--- a/Master/texmf-dist/tex/latex/base/testpage.tex
+++ b/Master/texmf-dist/tex/latex/base/testpage.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2024
+% Copyright (C) 1993-2025
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex/base/textcomp-2018-08-11.sty b/Master/texmf-dist/tex/latex/base/textcomp-2018-08-11.sty
index b611d19a427..ea88385b6be 100644
--- a/Master/texmf-dist/tex/latex/base/textcomp-2018-08-11.sty
+++ b/Master/texmf-dist/tex/latex/base/textcomp-2018-08-11.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -64,7 +64,6 @@
{\PackageInfo{textcomp}{Setting #2 sub-encoding to #1/#3}}%
{\PackageInfo{textcomp}{Changing #2 sub-encoding to #1/#3}}%
\@namedef{#1:#2}{#3}}
-\@onlypreamble\DeclareEncodingSubset
\newif\iftc@forced \tc@forcedfalse
\DeclareOption{full}{\DeclareEncodingSubset{TS1}{?}{0}}
diff --git a/Master/texmf-dist/tex/latex/base/textcomp.sty b/Master/texmf-dist/tex/latex/base/textcomp.sty
index df0d53634de..736b280bb18 100644
--- a/Master/texmf-dist/tex/latex/base/textcomp.sty
+++ b/Master/texmf-dist/tex/latex/base/textcomp.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/tracefnt.sty b/Master/texmf-dist/tex/latex/base/tracefnt.sty
index 70180dcbcc9..d1eea5cff4b 100644
--- a/Master/texmf-dist/tex/latex/base/tracefnt.sty
+++ b/Master/texmf-dist/tex/latex/base/tracefnt.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ts1cmr.fd b/Master/texmf-dist/tex/latex/base/ts1cmr.fd
index 8564159c267..321e927fa5b 100644
--- a/Master/texmf-dist/tex/latex/base/ts1cmr.fd
+++ b/Master/texmf-dist/tex/latex/base/ts1cmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ts1cmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
@@ -60,6 +60,7 @@
\EC@family{TS1}{cmr}{bx}{it}{tcbi}
\EC@family{TS1}{cmr}{bx}{sl}{tcbl}
\EC@family{TS1}{cmr}{m}{ui}{tcui}
+\DeclareEncodingSubset{TS1}{cmr}{0}
\endinput
%%
%% End of file `ts1cmr.fd'.
diff --git a/Master/texmf-dist/tex/latex/base/ts1cmss.fd b/Master/texmf-dist/tex/latex/base/ts1cmss.fd
index bce10af852e..151bbfdefe1 100644
--- a/Master/texmf-dist/tex/latex/base/ts1cmss.fd
+++ b/Master/texmf-dist/tex/latex/base/ts1cmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ts1cmss.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4>%
@@ -58,6 +58,7 @@
\EC@family{TS1}{cmss}{bx}{n}{tcsx}
\EC@family{TS1}{cmss}{bx}{it}{tcso}
\EC@family{TS1}{cmss}{bx}{sl}{tcso}
+\DeclareEncodingSubset{TS1}{cmss}{0}
\endinput
%%
%% End of file `ts1cmss.fd'.
diff --git a/Master/texmf-dist/tex/latex/base/ts1cmtt.fd b/Master/texmf-dist/tex/latex/base/ts1cmtt.fd
index fc1d3eae689..37d38abb89b 100644
--- a/Master/texmf-dist/tex/latex/base/ts1cmtt.fd
+++ b/Master/texmf-dist/tex/latex/base/ts1cmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ts1cmtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@ttfamily}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8>#50800%
@@ -56,6 +56,7 @@
\EC@ttfamily{TS1}{cmtt}{m}{n}{tctt}
\EC@ttfamily{TS1}{cmtt}{m}{sl}{tcst}
\EC@ttfamily{TS1}{cmtt}{m}{it}{tcit}
+\DeclareEncodingSubset{TS1}{cmtt}{0}
\endinput
%%
%% End of file `ts1cmtt.fd'.
diff --git a/Master/texmf-dist/tex/latex/base/ts1cmvtt.fd b/Master/texmf-dist/tex/latex/base/ts1cmvtt.fd
index 02fa3968abf..005a56cb374 100644
--- a/Master/texmf-dist/tex/latex/base/ts1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex/base/ts1cmvtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ts1cmvtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\providecommand{\EC@ttfamily}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8>#50800%
@@ -55,6 +55,7 @@
\DeclareFontFamily{TS1}{cmvtt}{}
\EC@ttfamily{TS1}{cmvtt}{m}{n}{tcvt}
\EC@ttfamily{TS1}{cmvtt}{m}{it}{tcvi}
+\DeclareEncodingSubset{TS1}{cmvtt}{0}
\endinput
%%
%% End of file `ts1cmvtt.fd'.
diff --git a/Master/texmf-dist/tex/latex/base/ts1enc.def b/Master/texmf-dist/tex/latex/base/ts1enc.def
index 5cd97fb8357..9769bec5e17 100644
--- a/Master/texmf-dist/tex/latex/base/ts1enc.def
+++ b/Master/texmf-dist/tex/latex/base/ts1enc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ts1enc.dfu b/Master/texmf-dist/tex/latex/base/ts1enc.dfu
index 9615fb36d96..c94dfdb06f3 100644
--- a/Master/texmf-dist/tex/latex/base/ts1enc.dfu
+++ b/Master/texmf-dist/tex/latex/base/ts1enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/tuenc.def b/Master/texmf-dist/tex/latex/base/tuenc.def
index 7d32d90059f..ce4821e2fde 100644
--- a/Master/texmf-dist/tex/latex/base/tuenc.def
+++ b/Master/texmf-dist/tex/latex/base/tuenc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/tulmdh.fd b/Master/texmf-dist/tex/latex/base/tulmdh.fd
index 3d7993d8aae..b7d93f17a56 100644
--- a/Master/texmf-dist/tex/latex/base/tulmdh.fd
+++ b/Master/texmf-dist/tex/latex/base/tulmdh.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2024
+%% Copyright (C) 2016-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/tulmr.fd b/Master/texmf-dist/tex/latex/base/tulmr.fd
index 7e77b3cfdb9..579548cb95e 100644
--- a/Master/texmf-dist/tex/latex/base/tulmr.fd
+++ b/Master/texmf-dist/tex/latex/base/tulmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2024
+%% Copyright (C) 2016-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/tulmss.fd b/Master/texmf-dist/tex/latex/base/tulmss.fd
index 0927f951ba3..26e852760f6 100644
--- a/Master/texmf-dist/tex/latex/base/tulmss.fd
+++ b/Master/texmf-dist/tex/latex/base/tulmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2024
+%% Copyright (C) 2016-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/tulmssq.fd b/Master/texmf-dist/tex/latex/base/tulmssq.fd
index 3d19e8d06ca..f14388dc7bf 100644
--- a/Master/texmf-dist/tex/latex/base/tulmssq.fd
+++ b/Master/texmf-dist/tex/latex/base/tulmssq.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2024
+%% Copyright (C) 2016-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/tulmtt.fd b/Master/texmf-dist/tex/latex/base/tulmtt.fd
index 28ad4efa9e1..bb0f9285129 100644
--- a/Master/texmf-dist/tex/latex/base/tulmtt.fd
+++ b/Master/texmf-dist/tex/latex/base/tulmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2024
+%% Copyright (C) 2016-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/tulmvtt.fd b/Master/texmf-dist/tex/latex/base/tulmvtt.fd
index 6d0ba2299ab..17aaa7c9123 100644
--- a/Master/texmf-dist/tex/latex/base/tulmvtt.fd
+++ b/Master/texmf-dist/tex/latex/base/tulmvtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2024
+%% Copyright (C) 2016-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ucmr.fd b/Master/texmf-dist/tex/latex/base/ucmr.fd
index 4ef1f56b42b..a83e477bdb1 100644
--- a/Master/texmf-dist/tex/latex/base/ucmr.fd
+++ b/Master/texmf-dist/tex/latex/base/ucmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ucmr.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{U}{cmr}{\hyphenchar\font45 }
\DeclareFontShape{U}{cmr}{m}{n}%
{<5><6><7><8><9><10><12>gen*cmr%
diff --git a/Master/texmf-dist/tex/latex/base/ucmss.fd b/Master/texmf-dist/tex/latex/base/ucmss.fd
index 1611fc986c4..450efb2f4ff 100644
--- a/Master/texmf-dist/tex/latex/base/ucmss.fd
+++ b/Master/texmf-dist/tex/latex/base/ucmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ucmss.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{U}{cmss}{\hyphenchar\font45 }
\DeclareFontShape{U}{cmss}{m}{n}%
{%
diff --git a/Master/texmf-dist/tex/latex/base/ucmtt.fd b/Master/texmf-dist/tex/latex/base/ucmtt.fd
index 247768631e4..3fa1107e213 100644
--- a/Master/texmf-dist/tex/latex/base/ucmtt.fd
+++ b/Master/texmf-dist/tex/latex/base/ucmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -46,7 +46,7 @@
%% making successful document exchange impossible.
%%
\ProvidesFile{ucmtt.fd}
- [2023/04/13 v2.5m Standard LaTeX font definitions]
+ [2024/11/19 v2.5n Standard LaTeX font definitions]
\DeclareFontFamily{U}{cmtt}{\hyphenchar \font\m@ne}
\DeclareFontShape{U}{cmtt}{m}{n}%
{%
diff --git a/Master/texmf-dist/tex/latex/base/ulasy.fd b/Master/texmf-dist/tex/latex/base/ulasy.fd
index da1be444688..d7d9ae0ea14 100644
--- a/Master/texmf-dist/tex/latex/base/ulasy.fd
+++ b/Master/texmf-dist/tex/latex/base/ulasy.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/ullasy.fd b/Master/texmf-dist/tex/latex/base/ullasy.fd
index f244ab86e46..1f5b0cf7105 100644
--- a/Master/texmf-dist/tex/latex/base/ullasy.fd
+++ b/Master/texmf-dist/tex/latex/base/ullasy.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/utf8-2018.def b/Master/texmf-dist/tex/latex/base/utf8-2018.def
index 6e6f97feaba..76041f9ee4f 100644
--- a/Master/texmf-dist/tex/latex/base/utf8-2018.def
+++ b/Master/texmf-dist/tex/latex/base/utf8-2018.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/utf8.def b/Master/texmf-dist/tex/latex/base/utf8.def
index 58308e13a07..e46edd2ee0b 100644
--- a/Master/texmf-dist/tex/latex/base/utf8.def
+++ b/Master/texmf-dist/tex/latex/base/utf8.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/utf8enc.dfu b/Master/texmf-dist/tex/latex/base/utf8enc.dfu
index 668359b4742..f868941e894 100644
--- a/Master/texmf-dist/tex/latex/base/utf8enc.dfu
+++ b/Master/texmf-dist/tex/latex/base/utf8enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/base/x2enc.dfu b/Master/texmf-dist/tex/latex/base/x2enc.dfu
index 1b26bf5dee4..3cb1363d98c 100644
--- a/Master/texmf-dist/tex/latex/base/x2enc.dfu
+++ b/Master/texmf-dist/tex/latex/base/x2enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2024
+%% Copyright (C) 1993-2025
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex/baskervald/baskervald.sty b/Master/texmf-dist/tex/latex/baskervald/baskervald.sty
deleted file mode 100644
index d104cca143e..00000000000
--- a/Master/texmf-dist/tex/latex/baskervald/baskervald.sty
+++ /dev/null
@@ -1,24 +0,0 @@
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{baskervald}[2010/07/13 v1.0 baskervald]
-\RequirePackage{xkeyval}
-\RequirePackage[T1]{fontenc}
-\RequirePackage{textcomp}
-\RequirePackage{nfssext-cfr}
-%:boolkey for alternative encoding as default
-\define@boolkey{baskervald.sty}[baskervald@]{lig}[true]{%
- \relax}
-%:defaults to ensure everything is defined to something
-\ExecuteOptionsX{lig=false}
-%:options override defaults
-\ProcessOptionsX
-%:make BaskervaldADF default roman font, implementing option for alternative encoding as applicable
-\ifbaskervald@lig
- \renewcommand{\rmdefault}{ybvw}%
-\else
- \renewcommand{\rmdefault}{ybv}%
-\fi
-\renewcommand{\rmdefault}{ybv}
-\DeclareTextSymbol{\zeroslash}{TS1}{225}
-\DeclareTextSymbolDefault{\zeroslash}{TS1}
-\endinput
-%% end baskervald.sty
diff --git a/Master/texmf-dist/tex/latex/baskervaldadf/baskervald.sty b/Master/texmf-dist/tex/latex/baskervaldadf/baskervald.sty
new file mode 100644
index 00000000000..4bfcc4b5269
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/baskervaldadf/baskervald.sty
@@ -0,0 +1,70 @@
+%%
+%% This is file `baskervald.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% baskervaldadf.dtx (with options: `sty')
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% baskervaldadf. You may however distribute the package baskervaldadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{svn-prov}
+\ProvidesPackageSVN[baskervald.sty]{$Id: baskervaldadf.dtx 10395 2024-09-26 23:52:22Z cfrees $}[v1.1 \revinfo]
+\DefineFileInfoSVN[baskervald]
+\RequirePackage[T1]{fontenc}
+\RequirePackage{nfssext-cfr}[2024/01/01]
+\IfFormatAtLeastTF {2020-02-02}{%
+ \DeclareEncodingSubset{TS1}{ybv}{1}%
+ \DeclareEncodingSubset{TS1}{ybvw}{1}%
+}{%
+ \RequirePackage{textcomp}}
+\ExplSyntaxOn
+\keys_define:nn { baskervald }
+{
+ lig .bool_set:N = \g__baskervald_lig_bool,
+ lig .default:n = true,
+ lig .initial:n = false,
+ scale .tl_set:N = \ybv@scale,
+ scale .initial:V = \@empty,
+}
+\ProcessKeyOptions[baskervald]
+\tl_new:N \g__baskervald_rm_tl
+\tl_gset:Nn \g__baskervald_rm_tl {ybv}
+\bool_if:NT \g__baskervald_lig_bool
+{
+ \tl_gput_right:Nn \g__baskervald_rm_tl {w}
+}
+\renewcommand{\rmdefault}{\g__baskervald_rm_tl}
+\ExplSyntaxOff
+\DeclareTextSymbol{\zeroslash}{TS1}{225}
+\DeclareTextSymbolDefault{\zeroslash}{TS1}
+\AddToHook {begindocument}[.]
+{%
+ \@ifpackageloaded{hyperref}{%
+ \DeclareTextCommand{\zeroslash}{PU}{0}% U+0030
+ \DeclareTextCommand{\zeroslash}{PD1}{0}% U+0030
+ }{}%
+}
+%% end baskervald.sty
+\endinput
+%%
+%% End of file `baskervald.sty'.
diff --git a/Master/texmf-dist/tex/latex/baskervald/t1ybv.fd b/Master/texmf-dist/tex/latex/baskervaldadf/t1ybv.fd
index 91383bc0cd7..d9fcf7222ea 100644
--- a/Master/texmf-dist/tex/latex/baskervald/t1ybv.fd
+++ b/Master/texmf-dist/tex/latex/baskervaldadf/t1ybv.fd
@@ -5,32 +5,39 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1ybv.fd}
- [2010/07/13 Fontinst v1.933 font definitions for T1/ybv.]
+ [2024/07/24 Fontinst v1.933 font definitions for T1/ybv.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname ybv@scale\endcsname\relax
+ \let\ybv@@scale\@empty
+\else
+ \edef\ybv@@scale{s*[\csname ybv@scale\endcsname]}%
+\fi
\DeclareFontFamily{T1}{ybv}{}
\DeclareFontShape{T1}{ybv}{m}{n}{
- <-> ybvr8t
+ <-> \ybv@@scale ybvr8t
}{}
\DeclareFontShape{T1}{ybv}{m}{it}{
- <-> ybvri8t
+ <-> \ybv@@scale ybvri8t
}{}
\DeclareFontShape{T1}{ybv}{b}{n}{
- <-> ybvb8t
+ <-> \ybv@@scale ybvb8t
}{}
\DeclareFontShape{T1}{ybv}{b}{it}{
- <-> ybvbi8t
+ <-> \ybv@@scale ybvbi8t
}{}
\DeclareFontShape{T1}{ybv}{eb}{n}{
- <-> ybvh8t
+ <-> \ybv@@scale ybvh8t
}{}
\DeclareFontShape{T1}{ybv}{eb}{sl}{
- <-> ybvho8t
+ <-> \ybv@@scale ybvho8t
}{}
\DeclareFontShape{T1}{ybv}{m}{sc}{<->ssub * ybv/m/n}{}
diff --git a/Master/texmf-dist/tex/latex/baskervald/t1ybvw.fd b/Master/texmf-dist/tex/latex/baskervaldadf/t1ybvw.fd
index 09de2c0c99b..6b3e6467e02 100644
--- a/Master/texmf-dist/tex/latex/baskervald/t1ybvw.fd
+++ b/Master/texmf-dist/tex/latex/baskervaldadf/t1ybvw.fd
@@ -5,32 +5,39 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1ybvw.fd}
- [2010/07/13 Fontinst v1.933 font definitions for T1/ybvw.]
+ [2024/07/24 Fontinst v1.933 font definitions for T1/ybvw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname ybv@scale\endcsname\relax
+ \let\ybv@@scale\@empty
+\else
+ \edef\ybv@@scale{s*[\csname ybv@scale\endcsname]}%
+\fi
\DeclareFontFamily{T1}{ybvw}{}
\DeclareFontShape{T1}{ybvw}{m}{n}{
- <-> ybvrw8t
+ <-> \ybv@@scale ybvrw8t
}{}
\DeclareFontShape{T1}{ybvw}{m}{it}{
- <-> ybvriw8t
+ <-> \ybv@@scale ybvriw8t
}{}
\DeclareFontShape{T1}{ybvw}{b}{n}{
- <-> ybvbw8t
+ <-> \ybv@@scale ybvbw8t
}{}
\DeclareFontShape{T1}{ybvw}{b}{it}{
- <-> ybvbiw8t
+ <-> \ybv@@scale ybvbiw8t
}{}
\DeclareFontShape{T1}{ybvw}{eb}{n}{
- <-> ybvhw8t
+ <-> \ybv@@scale ybvhw8t
}{}
\DeclareFontShape{T1}{ybvw}{eb}{sl}{
- <-> ybvhow8t
+ <-> \ybv@@scale ybvhow8t
}{}
\DeclareFontShape{T1}{ybvw}{m}{sc}{<->ssub * ybvw/m/n}{}
diff --git a/Master/texmf-dist/tex/latex/baskervald/ts1ybv.fd b/Master/texmf-dist/tex/latex/baskervaldadf/ts1ybv.fd
index d3a17cb96c9..e986d57f671 100644
--- a/Master/texmf-dist/tex/latex/baskervald/ts1ybv.fd
+++ b/Master/texmf-dist/tex/latex/baskervaldadf/ts1ybv.fd
@@ -5,32 +5,39 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1ybv.fd}
- [2010/07/13 Fontinst v1.933 font definitions for TS1/ybv.]
+ [2024/07/24 Fontinst v1.933 font definitions for TS1/ybv.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname ybv@scale\endcsname\relax
+ \let\ybv@@scale\@empty
+\else
+ \edef\ybv@@scale{s*[\csname ybv@scale\endcsname]}%
+\fi
\DeclareFontFamily{TS1}{ybv}{}
\DeclareFontShape{TS1}{ybv}{m}{n}{
- <-> ybvr8c
+ <-> \ybv@@scale ybvr8c
}{}
\DeclareFontShape{TS1}{ybv}{m}{it}{
- <-> ybvri8c
+ <-> \ybv@@scale ybvri8c
}{}
\DeclareFontShape{TS1}{ybv}{b}{n}{
- <-> ybvb8c
+ <-> \ybv@@scale ybvb8c
}{}
\DeclareFontShape{TS1}{ybv}{b}{it}{
- <-> ybvbi8c
+ <-> \ybv@@scale ybvbi8c
}{}
\DeclareFontShape{TS1}{ybv}{eb}{n}{
- <-> ybvh8c
+ <-> \ybv@@scale ybvh8c
}{}
\DeclareFontShape{TS1}{ybv}{eb}{sl}{
- <-> ybvho8c
+ <-> \ybv@@scale ybvho8c
}{}
\DeclareFontShape{TS1}{ybv}{m}{sc}{<->ssub * ybv/m/n}{}
diff --git a/Master/texmf-dist/tex/latex/baskervald/ts1ybvw.fd b/Master/texmf-dist/tex/latex/baskervaldadf/ts1ybvw.fd
index 23205ea9789..b4bed39a528 100644
--- a/Master/texmf-dist/tex/latex/baskervald/ts1ybvw.fd
+++ b/Master/texmf-dist/tex/latex/baskervaldadf/ts1ybvw.fd
@@ -5,32 +5,39 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1ybvw.fd}
- [2010/07/13 Fontinst v1.933 font definitions for TS1/ybvw.]
+ [2024/07/24 Fontinst v1.933 font definitions for TS1/ybvw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname ybv@scale\endcsname\relax
+ \let\ybv@@scale\@empty
+\else
+ \edef\ybv@@scale{s*[\csname ybv@scale\endcsname]}%
+\fi
\DeclareFontFamily{TS1}{ybvw}{}
\DeclareFontShape{TS1}{ybvw}{m}{n}{
- <-> ybvr8c
+ <-> \ybv@@scale ybvr8c
}{}
\DeclareFontShape{TS1}{ybvw}{m}{it}{
- <-> ybvri8c
+ <-> \ybv@@scale ybvri8c
}{}
\DeclareFontShape{TS1}{ybvw}{b}{n}{
- <-> ybvb8c
+ <-> \ybv@@scale ybvb8c
}{}
\DeclareFontShape{TS1}{ybvw}{b}{it}{
- <-> ybvbi8c
+ <-> \ybv@@scale ybvbi8c
}{}
\DeclareFontShape{TS1}{ybvw}{eb}{n}{
- <-> ybvh8c
+ <-> \ybv@@scale ybvh8c
}{}
\DeclareFontShape{TS1}{ybvw}{eb}{sl}{
- <-> ybvho8c
+ <-> \ybv@@scale ybvho8c
}{}
\DeclareFontShape{TS1}{ybvw}{m}{sc}{<->ssub * ybvw/m/n}{}
diff --git a/Master/texmf-dist/tex/latex/baskervaldx/ly1minbaskervaldx.fd b/Master/texmf-dist/tex/latex/baskervaldx/ly1minbaskervaldx.fd
new file mode 100644
index 00000000000..adbcd9e134d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/baskervaldx/ly1minbaskervaldx.fd
@@ -0,0 +1,136 @@
+%% Generated by msharpe on 2022/01/20
+%%
+\ProvidesFile{ly1minbaskervaldx.fd}
+ [2022/01/20 (msharpe) Font definitions for LY1/minbaskervaldx.]
+
+\expandafter\ifx\csname ntxmath@scaled\endcsname\relax
+ \let\ntxmath@scaled\@empty
+\fi
+
+\ifdefined\@Baskervaldx@swfalse %
+\else
+ \expandafter\newif\csname if@Baskervaldx@sw\endcsname
+\fi
+
+\DeclareFontFamily{LY1}{minbaskervaldx}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{b}{sc}{
+ <-> \ntxmath@scaled Baskervaldx-Bol-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{b}{scit}{
+ <-> \ntxmath@scaled Baskervaldx-BolIta-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{b}{sw}{
+ <-> \ntxmath@scaled Baskervaldx-BolIta-tlf-swash-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{b}{nw}{
+ <-> \ntxmath@scaled Baskervaldx-Bol-tlf-swash-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{b}{scsl}{
+ <-> ssub * minbaskervaldx/b/scit
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{b}{sl}{
+ <-> ssub * minbaskervaldx/b/it
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{m}{sc}{
+ <-> \ntxmath@scaled Baskervaldx-Reg-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{m}{scit}{
+ <-> \ntxmath@scaled Baskervaldx-Ita-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{m}{sw}{
+ <-> \ntxmath@scaled Baskervaldx-Ita-tlf-swash-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{m}{nw}{
+ <-> \ntxmath@scaled Baskervaldx-Reg-tlf-swash-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{m}{scsl}{
+ <-> ssub * minbaskervaldx/m/scit
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{m}{sl}{
+ <-> ssub * minbaskervaldx/m/it
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{bx}{scsl}{
+ <-> ssub * minbaskervaldx/b/scsl
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{bx}{sc}{
+ <-> ssub * minbaskervaldx/b/sc
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{bx}{n}{
+ <-> ssub * minbaskervaldx/b/n
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{bx}{it}{
+ <-> ssub * minbaskervaldx/b/it
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{bx}{sw}{
+ <-> ssub * minbaskervaldx/b/sw
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{bx}{sl}{
+ <-> ssub * minbaskervaldx/b/sl
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{bx}{scit}{
+ <-> ssub * minbaskervaldx/b/scit
+}{}
+
+\DeclareFontShape{LY1}{minbaskervaldx}{bx}{nw}{
+ <-> ssub * minbaskervaldx/b/nw
+}{}
+
+\if@Baskervaldx@sw % swash is default
+
+ \DeclareFontShape{LY1}{minbaskervaldx}{b}{n}{
+ <-> ssub * minbaskervaldx/b/nw
+ }{}
+
+ \DeclareFontShape{LY1}{minbaskervaldx}{b}{it}{
+ <-> ssub * minbaskervaldx/b/sw
+ }{}
+
+
+ \DeclareFontShape{LY1}{minbaskervaldx}{m}{n}{
+ <-> ssub * minbaskervaldx/m/nw
+ }{}
+
+ \DeclareFontShape{LY1}{minbaskervaldx}{m}{it}{
+ <-> ssub * minbaskervaldx/m/sw
+ }{}
+
+\else %default is no swash
+
+ \DeclareFontShape{LY1}{minbaskervaldx}{b}{n}{
+ <-> \ntxmath@scaled Baskervaldx-Bol-tlf-ly1
+ }{}
+
+ \DeclareFontShape{LY1}{minbaskervaldx}{b}{it}{
+ <-> \ntxmath@scaled Baskervaldx-BolIta-tlf-ly1
+ }{}
+
+ \DeclareFontShape{LY1}{minbaskervaldx}{m}{n}{
+ <-> \ntxmath@scaled Baskervaldx-Reg-tlf-ly1
+ }{}
+
+ \DeclareFontShape{LY1}{minbaskervaldx}{m}{it}{
+ <-> \ntxmath@scaled Baskervaldx-Ita-tlf-ly1
+ }{}
+
+\fi
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/baskervaldx/ot1minbaskervaldx.fd b/Master/texmf-dist/tex/latex/baskervaldx/ot1minbaskervaldx.fd
new file mode 100644
index 00000000000..bf81ed57a66
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/baskervaldx/ot1minbaskervaldx.fd
@@ -0,0 +1,132 @@
+%% Generated by msharpe on 2022/01/20
+%%
+\ProvidesFile{ot1minbaskervaldx.fd}
+ [2022/01/20 (msharpe) Font definitions for OT1/minbaskervaldx.]
+
+
+\expandafter\ifx\csname ntxmath@scaled\endcsname\relax
+ \let\ntxmath@scaled\@empty
+\fi
+
+\DeclareFontFamily{OT1}{minbaskervaldx}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{b}{sc}{
+ <-> \ntxmath@scaled Baskervaldx-Bol-tlf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{b}{scit}{
+ <-> \ntxmath@scaled Baskervaldx-BolIta-tlf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{b}{sw}{
+ <-> \ntxmath@scaled Baskervaldx-BolIta-tlf-swash-ot1
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{b}{nw}{
+ <-> \ntxmath@scaled Baskervaldx-Bol-tlf-swash-ot1
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{b}{scsl}{
+ <-> ssub * minbaskervaldx/b/scit
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{b}{sl}{
+ <-> ssub * minbaskervaldx/b/it
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{m}{sc}{
+ <-> \ntxmath@scaled Baskervaldx-Reg-tlf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{m}{scit}{
+ <-> \ntxmath@scaled Baskervaldx-Ita-tlf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{m}{sw}{
+ <-> \ntxmath@scaled Baskervaldx-Ita-tlf-swash-ot1
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{m}{nw}{
+ <-> \ntxmath@scaled Baskervaldx-Reg-tlf-swash-ot1
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{m}{scsl}{
+ <-> ssub * minbaskervaldx/m/scit
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{m}{sl}{
+ <-> ssub * minbaskervaldx/m/it
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{bx}{scsl}{
+ <-> ssub * minbaskervaldx/b/scsl
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{bx}{sc}{
+ <-> ssub * minbaskervaldx/b/sc
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{bx}{n}{
+ <-> ssub * minbaskervaldx/b/n
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{bx}{it}{
+ <-> ssub * minbaskervaldx/b/it
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{bx}{sw}{
+ <-> ssub * minbaskervaldx/b/sw
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{bx}{sl}{
+ <-> ssub * minbaskervaldx/b/sl
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{bx}{scit}{
+ <-> ssub * minbaskervaldx/b/scit
+}{}
+
+\DeclareFontShape{OT1}{minbaskervaldx}{bx}{nw}{
+ <-> ssub * minbaskervaldx/b/nw
+}{}
+
+\if@Baskervaldx@sw % swash is default
+
+ \DeclareFontShape{OT1}{minbaskervaldx}{b}{n}{
+ <-> ssub * minbaskervaldx/b/nw
+ }{}
+
+ \DeclareFontShape{OT1}{minbaskervaldx}{b}{it}{
+ <-> ssub * minbaskervaldx/b/sw
+ }{}
+
+
+ \DeclareFontShape{OT1}{minbaskervaldx}{m}{n}{
+ <-> ssub * minbaskervaldx/m/nw
+ }{}
+
+ \DeclareFontShape{OT1}{minbaskervaldx}{m}{it}{
+ <-> ssub * minbaskervaldx/m/sw
+ }{}
+
+\else %default is no swash
+
+ \DeclareFontShape{OT1}{minbaskervaldx}{b}{n}{
+ <-> \ntxmath@scaled Baskervaldx-Bol-tlf-ot1
+ }{}
+
+ \DeclareFontShape{OT1}{minbaskervaldx}{b}{it}{
+ <-> \ntxmath@scaled Baskervaldx-BolIta-tlf-ot1
+ }{}
+
+ \DeclareFontShape{OT1}{minbaskervaldx}{m}{n}{
+ <-> \ntxmath@scaled Baskervaldx-Reg-tlf-ot1
+ }{}
+
+ \DeclareFontShape{OT1}{minbaskervaldx}{m}{it}{
+ <-> \ntxmath@scaled Baskervaldx-Ita-tlf-ot1
+ }{}
+
+\fi
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/baskervaldx/t1minbaskervaldx.fd b/Master/texmf-dist/tex/latex/baskervaldx/t1minbaskervaldx.fd
new file mode 100644
index 00000000000..73a7365b226
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/baskervaldx/t1minbaskervaldx.fd
@@ -0,0 +1,135 @@
+%% Generated by msharpe on 2022/01/20
+%%
+\ProvidesFile{t1minbaskervaldx.fd}
+ [2022/01/20 (msharpe) Font definitions for T1/minbaskervaldx.]
+
+\expandafter\ifx\csname ntxmath@scaled\endcsname\relax
+ \let\ntxmath@scaled\@empty
+\fi
+
+\ifdefined\@Baskervaldx@swfalse %
+\else
+ \expandafter\newif\csname if@Baskervaldx@sw\endcsname
+\fi
+
+\DeclareFontFamily{T1}{minbaskervaldx}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{b}{sc}{
+ <-> \ntxmath@scaled Baskervaldx-Bol-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{b}{scit}{
+ <-> \ntxmath@scaled Baskervaldx-BolIta-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{b}{sw}{
+ <-> \ntxmath@scaled Baskervaldx-BolIta-tlf-swash-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{b}{nw}{
+ <-> \ntxmath@scaled Baskervaldx-Bol-tlf-swash-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{b}{scsl}{
+ <-> ssub * minbaskervaldx/b/scit
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{b}{sl}{
+ <-> ssub * minbaskervaldx/b/it
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{m}{sc}{
+ <-> \ntxmath@scaled Baskervaldx-Reg-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{m}{scit}{
+ <-> \ntxmath@scaled Baskervaldx-Ita-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{m}{sw}{
+ <-> \ntxmath@scaled Baskervaldx-Ita-tlf-swash-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{m}{nw}{
+ <-> \ntxmath@scaled Baskervaldx-Reg-tlf-swash-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{m}{scsl}{
+ <-> ssub * minbaskervaldx/m/scit
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{m}{sl}{
+ <-> ssub * minbaskervaldx/m/it
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{bx}{scsl}{
+ <-> ssub * minbaskervaldx/b/scsl
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{bx}{sc}{
+ <-> ssub * minbaskervaldx/b/sc
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{bx}{n}{
+ <-> ssub * minbaskervaldx/b/n
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{bx}{it}{
+ <-> ssub * minbaskervaldx/b/it
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{bx}{sw}{
+ <-> ssub * minbaskervaldx/b/sw
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{bx}{sl}{
+ <-> ssub * minbaskervaldx/b/sl
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{bx}{scit}{
+ <-> ssub * minbaskervaldx/b/scit
+}{}
+
+\DeclareFontShape{T1}{minbaskervaldx}{bx}{nw}{
+ <-> ssub * minbaskervaldx/b/nw
+}{}
+
+\if@Baskervaldx@sw % swash is default
+
+ \DeclareFontShape{T1}{minbaskervaldx}{b}{n}{
+ <-> ssub * minbaskervaldx/b/nw
+ }{}
+
+ \DeclareFontShape{T1}{minbaskervaldx}{b}{it}{
+ <-> ssub * minbaskervaldx/b/sw
+ }{}
+
+
+ \DeclareFontShape{T1}{minbaskervaldx}{m}{n}{
+ <-> ssub * minbaskervaldx/m/nw
+ }{}
+
+ \DeclareFontShape{T1}{minbaskervaldx}{m}{it}{
+ <-> ssub * minbaskervaldx/m/sw
+ }{}
+
+\else %default is no swash
+
+ \DeclareFontShape{T1}{minbaskervaldx}{b}{n}{
+ <-> \ntxmath@scaled Baskervaldx-Bol-tlf-t1
+ }{}
+
+ \DeclareFontShape{T1}{minbaskervaldx}{b}{it}{
+ <-> \ntxmath@scaled Baskervaldx-BolIta-tlf-t1
+ }{}
+
+ \DeclareFontShape{T1}{minbaskervaldx}{m}{n}{
+ <-> \ntxmath@scaled Baskervaldx-Reg-tlf-t1
+ }{}
+
+ \DeclareFontShape{T1}{minbaskervaldx}{m}{it}{
+ <-> \ntxmath@scaled Baskervaldx-Ita-tlf-t1
+ }{}
+\fi
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/baskervillef/ly1minbaskervillef.fd b/Master/texmf-dist/tex/latex/baskervillef/ly1minbaskervillef.fd
new file mode 100644
index 00000000000..97a61809f2f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/baskervillef/ly1minbaskervillef.fd
@@ -0,0 +1,107 @@
+%% Generated by msharpe on 2022/01/20
+%%
+\ProvidesFile{ly1minbaskervillef.fd}
+ [2022/01/20 (msharpe) Font definitions for LY1/minbaskervillef.]
+
+\expandafter\ifx\csname ntxmath@scaled\endcsname\relax
+ \let\ntxmath@scaled\@empty
+\fi
+
+\DeclareFontFamily{LY1}{minbaskervillef}{\providecommand{\BaskervilleF@spc}{}\BaskervilleF@spc}
+
+\DeclareFontShape{LY1}{minbaskervillef}{m}{it}{
+ <-> \ntxmath@scaled BaskervilleF-Italic-tlf-ly1
+}{}
+\DeclareFontShape{LY1}{minbaskervillef}{m}{sl}{
+ <-> \ntxmath@scaled BaskervilleF-Italic-tlf-th-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{m}{nw}{
+ <-> \ntxmath@scaled BaskervilleF-Regular-tlf-swash-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{m}{n}{
+ <-> \ntxmath@scaled BaskervilleF-Regular-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{m}{scit}{
+ <-> \ntxmath@scaled BaskervilleF-Italic-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{m}{sw}{
+ <-> \ntxmath@scaled BaskervilleF-Italic-tlf-swash-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{m}{sc}{
+ <-> \ntxmath@scaled BaskervilleF-Regular-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{m}{scsl}{
+ <-> ssub * minbaskervillef/m/scit
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{b}{nw}{
+ <-> \ntxmath@scaled BaskervilleF-Bold-tlf-swash-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{b}{it}{
+ <-> \ntxmath@scaled BaskervilleF-BoldItalic-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{b}{sc}{
+ <-> \ntxmath@scaled BaskervilleF-Bold-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{b}{sw}{
+ <-> \ntxmath@scaled BaskervilleF-BoldItalic-tlf-swash-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{b}{n}{
+ <-> \ntxmath@scaled BaskervilleF-Bold-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{b}{scit}{
+ <-> \ntxmath@scaled BaskervilleF-BoldItalic-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{b}{scsl}{
+ <-> ssub * minbaskervillef/b/scit
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{b}{sl}{
+ <-> ssub * minbaskervillef/m/sl
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{bx}{sw}{
+ <-> ssub * minbaskervillef/b/sw
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{bx}{scit}{
+ <-> ssub * minbaskervillef/b/scit
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{bx}{n}{
+ <-> ssub * minbaskervillef/b/n
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{bx}{sl}{
+ <-> ssub * minbaskervillef/m/sl
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{bx}{nw}{
+ <-> ssub * minbaskervillef/b/nw
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{bx}{scsl}{
+ <-> ssub * minbaskervillef/b/scsl
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{bx}{sc}{
+ <-> ssub * minbaskervillef/b/sc
+}{}
+
+\DeclareFontShape{LY1}{minbaskervillef}{bx}{it}{
+ <-> ssub * minbaskervillef/b/it
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/baskervillef/ot1minbaskervillef.fd b/Master/texmf-dist/tex/latex/baskervillef/ot1minbaskervillef.fd
new file mode 100644
index 00000000000..341fffcfe0e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/baskervillef/ot1minbaskervillef.fd
@@ -0,0 +1,107 @@
+%% Generated by msharpe on 2022/01/20
+%%
+\ProvidesFile{ot1minbaskervillef.fd}
+ [2022/01/20 (msharpe) Font definitions for OT1/minbaskervillef.]
+
+\expandafter\ifx\csname ntxmath@scaled\endcsname\relax
+ \let\ntxmath@scaled\@empty
+\fi
+
+\DeclareFontFamily{OT1}{minbaskervillef}{\providecommand{\BaskervilleF@spc}{}\BaskervilleF@spc}
+
+\DeclareFontShape{OT1}{minbaskervillef}{m}{sc}{
+ <-> \ntxmath@scaled BaskervilleF-Regular-tlf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{m}{n}{
+ <-> \ntxmath@scaled BaskervilleF-Regular-tlf-ot1G
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{m}{scit}{
+ <-> \ntxmath@scaled BaskervilleF-Italic-tlf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{m}{sw}{
+ <-> \ntxmath@scaled BaskervilleF-Italic-tlf-swash-ot1
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{m}{nw}{
+ <-> \ntxmath@scaled BaskervilleF-Regular-tlf-swash-ot1
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{m}{it}{
+ <-> \ntxmath@scaled BaskervilleF-Italic-tlf-ot1G
+}{}
+\DeclareFontShape{OT1}{minbaskervillef}{m}{sl}{
+ <-> \ntxmath@scaled BaskervilleF-Italic-tlf-th-ot1
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{m}{scsl}{
+ <-> ssub * minbaskervillef/m/scit
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{b}{nw}{
+ <-> \ntxmath@scaled BaskervilleF-Bold-tlf-swash-ot1
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{b}{it}{
+ <-> \ntxmath@scaled BaskervilleF-BoldItalic-tlf-ot1G
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{b}{sc}{
+ <-> \ntxmath@scaled BaskervilleF-Bold-tlf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{b}{n}{
+ <-> \ntxmath@scaled BaskervilleF-Bold-tlf-ot1G
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{b}{sw}{
+ <-> \ntxmath@scaled BaskervilleF-BoldItalic-tlf-swash-ot1
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{b}{scit}{
+ <-> \ntxmath@scaled BaskervilleF-BoldItalic-tlf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{b}{scsl}{
+ <-> ssub * minbaskervillef/b/scit
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{b}{sl}{
+ <-> ssub * minbaskervillef/m/sl
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{bx}{sl}{
+ <-> ssub * minbaskervillef/m/sl
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{bx}{scit}{
+ <-> ssub * minbaskervillef/b/scit
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{bx}{sw}{
+ <-> ssub * minbaskervillef/b/sw
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{bx}{n}{
+ <-> ssub * minbaskervillef/b/n
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{bx}{nw}{
+ <-> ssub * minbaskervillef/b/nw
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{bx}{sc}{
+ <-> ssub * minbaskervillef/b/sc
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{bx}{scsl}{
+ <-> ssub * minbaskervillef/b/scsl
+}{}
+
+\DeclareFontShape{OT1}{minbaskervillef}{bx}{it}{
+ <-> ssub * minbaskervillef/b/it
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/baskervillef/t1minbaskervillef.fd b/Master/texmf-dist/tex/latex/baskervillef/t1minbaskervillef.fd
new file mode 100644
index 00000000000..69a9748583f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/baskervillef/t1minbaskervillef.fd
@@ -0,0 +1,107 @@
+%% Generated by msharpe on 2022/01/20
+%%
+\ProvidesFile{t1minbaskervillef.fd}
+ [2022/01/20 (msharpe) Font definitions for T1/minbaskervillef.]
+
+\expandafter\ifx\csname ntxmath@scaled\endcsname\relax
+ \let\ntxmath@scaled\@empty
+\fi
+
+\DeclareFontFamily{T1}{minbaskervillef}{\providecommand{\BaskervilleF@spc}{}\BaskervilleF@spc}
+
+\DeclareFontShape{T1}{minbaskervillef}{m}{it}{
+ <-> \ntxmath@scaled BaskervilleF-Italic-tlf-t1
+}{}
+\DeclareFontShape{T1}{minbaskervillef}{m}{sl}{
+ <-> \ntxmath@scaled BaskervilleF-Italic-tlf-th-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{m}{nw}{
+ <-> \ntxmath@scaled BaskervilleF-Regular-tlf-swash-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{m}{sw}{
+ <-> \ntxmath@scaled BaskervilleF-Italic-tlf-swash-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{m}{n}{
+ <-> \ntxmath@scaled BaskervilleF-Regular-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{m}{scit}{
+ <-> \ntxmath@scaled BaskervilleF-Italic-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{m}{sc}{
+ <-> \ntxmath@scaled BaskervilleF-Regular-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{m}{scsl}{
+ <-> ssub * minbaskervillef/m/scit
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{b}{sc}{
+ <-> \ntxmath@scaled BaskervilleF-Bold-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{b}{scit}{
+ <-> \ntxmath@scaled BaskervilleF-BoldItalic-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{b}{sw}{
+ <-> \ntxmath@scaled BaskervilleF-BoldItalic-tlf-swash-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{b}{n}{
+ <-> \ntxmath@scaled BaskervilleF-Bold-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{b}{nw}{
+ <-> \ntxmath@scaled BaskervilleF-Bold-tlf-swash-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{b}{it}{
+ <-> \ntxmath@scaled BaskervilleF-BoldItalic-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{b}{scsl}{
+ <-> ssub * minbaskervillef/b/scit
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{b}{sl}{
+ <-> ssub * minbaskervillef/m/sl
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{bx}{n}{
+ <-> ssub * minbaskervillef/b/n
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{bx}{scit}{
+ <-> ssub * minbaskervillef/b/scit
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{bx}{sw}{
+ <-> ssub * minbaskervillef/b/sw
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{bx}{sl}{
+ <-> ssub * minbaskervillef/m/sl
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{bx}{nw}{
+ <-> ssub * minbaskervillef/b/nw
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{bx}{scsl}{
+ <-> ssub * minbaskervillef/b/scsl
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{bx}{sc}{
+ <-> ssub * minbaskervillef/b/sc
+}{}
+
+\DeclareFontShape{T1}{minbaskervillef}{bx}{it}{
+ <-> ssub * minbaskervillef/b/it
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/beamertheme-gotham/beamercolorthemegotham.sty b/Master/texmf-dist/tex/latex/beamertheme-gotham/beamercolorthemegotham.sty
new file mode 100644
index 00000000000..368f9c49201
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/beamertheme-gotham/beamercolorthemegotham.sty
@@ -0,0 +1,337 @@
+%%
+%% This is file `beamercolorthemegotham.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% gotham.dtx (with options: `color')
+%%
+%% Copyright (C) 2023-20** by Romain NOËL <romainoel@free.fr>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Romain NOËL.
+%% Contributors: Romain NOËL (2023-20**)
+%%
+\ProvidesExplPackage{beamercolorthemegotham}{2024-11-11}{1.2.0.a}{Gotham color theme}
+\RequirePackage{expl3}
+\RequirePackage{xparse}
+\RequirePackage{xcolor}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%% COLOR %%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\definecolor[named]{gLightOrange}{HTML}{EB811B}
+\definecolor[named]{gLightGreen}{HTML}{14B03D}
+\definecolor[named]{gDeepBlue}{RGB}{42, 42, 255}
+\definecolor[named]{gDeepYellOr}{RGB}{255, 204, 0}
+\definecolor[named]{gAnthracite}{HTML}{2d3e50}
+\definecolor[named]{gLightTeal}{RGB}{172, 195, 210}
+\definecolor[named]{gPaleYell}{RGB}{255, 255, 240}
+\definecolor[named]{gDarkBlack}{gray}{0.1}
+\definecolor[named]{gDarkGrey}{gray}{0.25}
+\definecolor[named]{gMidGrey}{gray}{0.5}
+\definecolor[named]{gLightGrey}{gray}{0.9}
+
+%%%%%%
+\@ifundefined{\string\color@colorAreversed}{
+\colorlet{colorPale}{gPaleYell} % BG in light/normal mode
+\colorlet{colorDark}{gDarkBlack} % FG in light/normal mode
+\colorlet{colorA}{gAnthracite} % frametitle, standin.out,
+\colorlet{colorAreversed}{gLightTeal} % frametitle, standin.in,
+\colorlet{colorB}{gMidGrey} % gray BG : progress bar, blocks
+\colorlet{colorC}{gDeepYellOr} % progress bar
+\colorlet{colorD}{gLightOrange} % alert
+\colorlet{colorE}{gLightGreen} % example
+}{
+}
+\providecommand{\gothamHookPostColorBGSet}{}
+
+\cs_new_protected:Nn \__gotham_color_set_style_anthracite:{
+\colorlet{colorPale}{gPaleYell} % BG in light/normal mode
+\colorlet{colorDark}{gDarkBlack} % FG in light/normal mode
+\colorlet{colorA}{gAnthracite} % frametitle, standin.out,
+\colorlet{colorAreversed}{gLightTeal} % frametitle, standin.in,
+\colorlet{colorB}{gMidGrey} % gray BG : progress bar, blocks
+\colorlet{colorC}{gDeepYellOr} % progress bar
+\colorlet{colorD}{gLightOrange} % alert
+\colorlet{colorE}{gLightGreen} % example
+}
+
+\cs_new_protected:Nn \__gotham_color_set_style_red:{
+\colorlet{colorPale}{gPaleYell} % BG in light/normal mode
+\colorlet{colorDark}{gDarkBlack} % FG in light/normal mode
+\colorlet{colorA}{red} % frametitle, standin.out,
+\colorlet{colorAreversed}{gLightTeal} % frametitle, standin.in,
+\colorlet{colorB}{gMidGrey} % gray BG : progress bar, blocks
+\colorlet{colorC}{gDeepYellOr} % progress bar
+\colorlet{colorD}{gLightOrange} % alert
+\colorlet{colorE}{gLightGreen} % example
+}
+
+%%%%%%
+\colorlet{colorFG}{colorDark}
+\colorlet{colorBG}{colorPale}
+\colorlet{colorStandin}{colorPale}
+\colorlet{colorStandout}{colorA}
+\colorlet{colorFrametitle}{colorA}
+\colorlet{colorTitlepage}{colorA}
+\colorlet{colorFiligrane}{colorB}
+\colorlet{colorBackElement}{colorB}
+\colorlet{colorProgBar}{colorC}
+\colorlet{colorAlert}{colorD}
+\colorlet{colorExample}{colorE}
+
+\providebool{darkBG}
+\boolfalse{darkBG}
+\providebool{transparentBG}
+\booltrue{transparentBG}
+
+\cs_new_protected:Nn \__gotham_color_set_darkBG:{
+\setbeamercolor{normal~text}{%
+fg=colorBG,
+bg=colorFG,
+}%
+\usebeamercolor[fg]{normal~text}%
+\booltrue{darkBG}%
+\boolfalse{transparentBG}
+\colorlet{colorFrametitle}{colorAreversed}
+\colorlet{colorStandout}{colorAreversed}
+\colorlet{colorStandin}{colorFG}
+\colorlet{colorTitlepage}{colorAreversed}
+%%% dark
+\setbeamercolor{primary~palette}{% reversed color compared to normal text
+use=normal~text,
+fg=normal~text.bg,
+bg=normal~text.fg
+}
+\gothamHookPostColorBGSet{}
+}
+
+\cs_new_protected:Nn \__gotham_color_set_lightBG:{
+\setbeamercolor{normal~text}{
+fg=colorFG,
+bg=colorBG
+}
+\usebeamercolor[fg]{normal~text}
+\boolfalse{darkBG}
+\boolfalse{transparentBG}
+\colorlet{colorFrametitle}{colorA}
+\colorlet{colorStandout}{colorA}
+\colorlet{colorStandin}{colorBG}
+\colorlet{colorTitlepage}{colorA}
+%%% light
+\setbeamercolor{primary~palette}{
+use=normal~text,
+fg=normal~text.bg,
+bg=normal~text.fg
+}
+\gothamHookPostColorBGSet{}
+}
+
+\cs_new_protected:Nn \__gotham_color_set_transparentBG:{
+\setbeamercolor{normal~text}{
+fg=colorFG,
+bg=,
+}
+\usebeamercolor[fg]{normal~text}
+\boolfalse{darkBG}
+\booltrue{transparentBG}
+\colorlet{colorFrametitle}{colorA}
+\colorlet{colorStandout}{colorA}
+{\usebeamercolor[bg]{normal~text}\colorlet{colorStandin}{bg}}% this is not working because the colorlet is not kept outside of the {} environment...
+\colorlet{colorStandin}{colorBG} % since the two previous lines are not working, let define it like light-bg
+\colorlet{colorTitlepage}{colorA}
+%%% like light background.
+\setbeamercolor{primary~palette}{
+use=normal~text,
+fg=colorBG,
+bg=normal~text.fg
+}
+\gothamHookPostColorBGSet{}
+}
+
+\cs_new_protected:Nn \__gotham_color_set_transparent_block:{
+\setbeamercolor{block~title}{
+use=normal~text,
+fg=normal~text.fg,
+bg=
+}
+\setbeamercolor{block~body}{
+bg=
+}
+\setbeamercolor{alerted~text}{
+fg=colorAlert
+}
+\setbeamercolor{example~text}{
+fg=colorExample
+}
+\setbeamercolor{block~title~example}{
+use={block~title, example~text},
+bg=block~title.bg,
+fg=example~text.fg
+}
+\setbeamercolor{block~title~alerted}{
+use={block~title, alerted~text},
+bg=block~title.bg,
+fg=alerted~text.fg
+}
+}
+
+\cs_new_protected:Nn \__gotham_color_set_fill_block:{
+\setbeamercolor{block~title}{
+fg=colorBackElement!10!normal~text.fg,
+bg=colorBackElement!135!fg
+}
+\setbeamercolor{block~body}{
+use={block~title, normal~text},
+bg=block~title.bg!50!normal~text.bg
+}
+\setbeamercolor{alerted~text}{
+fg=colorAlert
+}
+\setbeamercolor{example~text}{
+fg=colorExample
+}
+\setbeamercolor{block~title~example}{
+use={block~title, example~text},
+bg=block~title.bg,
+fg=example~text.fg
+}
+\setbeamercolor{block~title~alerted}{
+use={block~title, alerted~text},
+bg=block~title.bg,
+fg=alerted~text.fg
+}
+}% \end{macrocode}
+
+\cs_new_protected:Nn \__gotham_color_set_native_block:{
+\setbeamercolor{block~title}{
+fg=colorPale,
+bg=colorBackElement!90!fg
+}
+\setbeamercolor{block~body}{
+use={block~title, normal~text},
+bg=block~title.bg!50!normal~text.bg
+}
+\setbeamercolor{alerted~text}{
+fg=colorAlert
+}
+\setbeamercolor{alertedBlock~text}{
+fg=colorPale
+}
+\setbeamercolor{example~text}{
+fg=colorPale
+}
+\setbeamercolor{block~title~alerted}{
+use={block~title, alertedBlock~text},
+bg=colorAlert,
+fg=alertedBlock~text.fg
+}
+\setbeamercolor{block~title~example}{
+use={block~title, example~text},
+bg=colorExample,
+fg=example~text.fg
+}
+}
+
+\setbeamercolor{structure}{use=normal~text, fg=normal~text.fg}
+\setbeamercolor{progress~bar}{
+use=alerted~text,
+fg=colorProgBar,
+bg=alerted~text.fg!50!black!30
+}
+
+\setbeamercolor{titlelike}{use=normal~text, parent=normal~text}
+\setbeamercolor{author}{use=normal~text, parent=normal~text}
+\setbeamercolor{date}{use=normal~text, parent=normal~text}
+\setbeamercolor{institute}{use=normal~text, parent=normal~text}
+\setbeamercolor{frametitle}{
+use=primary~palette,
+parent=primary~palette,
+bg=colorFrametitle
+}
+\setbeamercolor{title~separator}{
+use=progress~bar,
+parent=progress~bar
+}
+\setbeamercolor{progress~bar~in~head/foot}{%
+use=progress~bar,
+parent=progress~bar
+}
+\setbeamercolor{progress~bar~in~part~page}{
+use=progress~bar,
+parent=progress~bar
+}
+\setbeamercolor{progress~bar~in~section~page}{
+use=progress~bar,
+parent=progress~bar
+}
+\setbeamercolor{progress~bar~in~splitvert}{
+use=progress~bar,
+parent=progress~bar
+}
+\setbeamercolor{block~body~alerted}{use=block~body, parent=block~body}
+\setbeamercolor{block~body~example}{use=block~body, parent=block~body}
+\setbeamercolor{footnote}{fg=normal~text.fg!90}
+\setbeamercolor{footnote~mark}{fg=.}
+
+\setbeamercolor{frametitleSection}{use=structure,fg=structure.bg}
+
+\setbeamercolor{standout}{use=primary~palette, bg=colorStandout, fg=primary~palette.bg}
+\setbeamercolor{standin}{use=normal~text, bg=colorStandin, fg=normal~text.fg}
+
+\setbeamercolor{section~in~toc}{use=normal~text, parent=normal~text,}
+\setbeamercolor{subsection~in~toc}{use=normal~text, parent=normal~text,}
+\setbeamercolor{subsubsection~in~toc}{use=normal~text, parent=normal~text,}
+\setbeamercolor{footlineRule}{use=normal~text, parent=normal~text,}
+
+%%%%
+\keys_define:nn { gotham / color }
+{
+block .choice:,
+block .usage:n = { general },
+block .default:n = { native },
+block / native .code:n = { \__gotham_color_set_native_block: },
+block / transparent .code:n = { \__gotham_color_set_transparent_block: },
+block / fill .code:n = { \__gotham_color_set_fill_block: },
+block / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'\l_keys_value_tl'~is~unknown~for~the~(known)~option~'\l_keys_key_tl',~so~being~ignored. }{helping~message: block / unknown} },
+}
+
+\keys_define:nn { gotham / color }
+{
+background .choice:,
+background .usage:n = { general },
+background .default:n = { transparent },
+background / transparent .code:n = { \__gotham_color_set_transparentBG: },
+background / light .code:n = { \__gotham_color_set_lightBG: },
+background / dark .code:n = { \__gotham_color_set_darkBG: },
+background / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'\l_keys_value_tl'~is~unknown~for~the~(known)~option~'\l_keys_key_tl',~so~being~ignored. }{helping~message: background / unknown} },
+}
+
+\keys_define:nn { gotham / color }
+{
+colorset .choice:,
+colorset .usage:n = { general },
+colorset .default:n = { anthracite },
+colorset / anthracite .code:n = { \__gotham_color_set_style_anthracite: },
+colorset / red .code:n = { \__gotham_color_set_style_red: },
+colorset / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'\l_keys_value_tl'~is~unknown~for~the~(known)~option~'\l_keys_key_tl',~so~being~ignored. }{helping~message: colorset / unknown} },
+}
+
+\keys_set:nn { gotham / color } { background, block, colorset }
+
+\ProcessKeyOptions[ gotham / color ]
+\mode<all>
+%%
+%% Adapted from classic "A model .dtx file" by Joseph Wright
+%% https://www.texdev.net/2009/10/06/a-model-dtx-file/
+%%
+%% End of file `beamercolorthemegotham.sty'.
diff --git a/Master/texmf-dist/tex/latex/beamertheme-gotham/beamerfontthemegotham.sty b/Master/texmf-dist/tex/latex/beamertheme-gotham/beamerfontthemegotham.sty
new file mode 100644
index 00000000000..5bbdfe5ba79
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/beamertheme-gotham/beamerfontthemegotham.sty
@@ -0,0 +1,582 @@
+%%
+%% This is file `beamerfontthemegotham.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% gotham.dtx (with options: `font')
+%%
+%% Copyright (C) 2023-20** by Romain NOËL <romainoel@free.fr>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Romain NOËL.
+%% Contributors: Romain NOËL (2023-20**)
+%%
+\ProvidesExplPackage{beamerfontthemegotham}{2024-11-11}{1.2.0.a}{gotham font theme}
+\RequirePackage{expl3}
+\RequirePackage{xparse}
+\RequirePackage{etoolbox}
+\RequirePackage{ifxetex}
+\RequirePackage{ifluatex}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%% FONT %%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\msg_new:nnn { gotham } { font-not-found }
+{
+ Could~not~find~font~'#1'.\c_space_tl
+}
+
+\msg_new:nnn { gotham } { fonts-not-available }
+{
+ No~suitable~fonts~found.~Using~fallback~fonts.
+}
+
+\msg_new:nnn { gotham } { compiler-xe-or-lua }
+{
+ You~need~to~compile~with~XeLaTeX~or~LuaLaTeX~to~use~the~Fira~fonts.
+}
+
+\int_new:N \g_gotham_fontsnotfound_int
+
+\cs_new_protected:Nn \checkfont:n
+{
+\fontspec_font_if_exist:nF { #1 }
+{
+\fontspec_font_if_exist:nF { #1~Regular }
+{
+\int_incr:N \g_gotham_fontsnotfound_int
+\msg_warning:nnn { gotham } { font-not-found } { #1 }
+}
+}
+}
+
+\providecommand{\iffontsavailable}[3]
+{
+\int_zero:N \g_gotham_fontsnotfound_int
+\clist_map_function:nN { #1 } \checkfont:n
+\int_compare:nTF { \g_gotham_fontsnotfound_int = 0 }
+{% True
+#2
+}{% False
+#3
+}
+}
+
+\ifboolexpr{bool~{xetex}~or~bool~{luatex}}{
+\@ifpackageloaded{fontspec}{
+\PassOptionsToPackage{no-math}{fontspec}
+}{
+\RequirePackage[no-math]{fontspec}
+}
+\iffontsavailable{FiraSans-Light.otf,
+FiraSans-LightItalic.otf,
+FiraSans-Regular.otf,
+FiraSans-Italic.otf}
+{
+\setsansfont[ItalicFont={FiraSans-LightItalic.otf},
+BoldFont={FiraSans-Regular.otf},
+BoldItalicFont={FiraSans-Italic.otf}]
+{FiraSans-Light.otf}
+}{
+\iffontsavailable{FiraSans~Light~OT,
+FiraSans~LightItalic~OT,
+FiraSans~Regular~OT,
+FiraSans~Italic~OT}
+{
+\setsansfont[ItalicFont={Fira~Sans~LightItalic~OT},
+BoldFont={Fira~Sans~Regular~OT},
+BoldItalicFont={Fira~Sans~Italic~OT}]
+{Fira~Sans~Light~OT}
+}{
+\msg_warning:nn { gotham } { fonts-not-available }%
+}
+}
+\iffontsavailable{FiraMono-Medium.otf, FiraMono-Bold.otf}{
+\setmonofont[BoldFont={FiraMono-Medium.otf}]{FiraMono-Bold.otf}
+}{
+\iffontsavailable{Fira~Mono~Medium~OT, Fira~Mono~Bold~OT}{
+\setmonofont[BoldFont={Fira~Mono~Medium~OT}]{Fira~Mono~Bold~OT}
+}{
+\msg_warning:nn { gotham } { fonts-not-available }
+}
+}
+\AtBeginEnvironment{tabular}{
+\addfontfeature{Numbers={Monospaced}}
+}
+}{
+\msg_warning:nn { gotham } { compiler-xe-or-lua }
+\DeclareFontShape{OT1}{cmss}{bx}{sc}{<-> cmbcsc10}{}
+\DeclareFontShape{OT1}{cmss}{bx}{it}{<->sub*cmss/m/sl}{}
+}
+
+\setbeamerfont{title}{size=\Large, series=\bfseries}
+\setbeamerfont*{subtitle}{size=\large}
+\setbeamerfont{author}{size=\small}
+\setbeamerfont{date}{size=\small}
+
+\setbeamerfont{section~title}{size=\Large, series=\bfseries}
+\setbeamerfont{subsection~title}{size=\large, series=\bfseries}
+\setbeamerfont{subsubsection~title}{size=\normalsize, series=\bfseries}
+
+\setbeamerfont{frametitle}{size=\large, series=\bfseries}
+\setbeamerfont{frametitleToc}{size=\LARGE, series=\bfseries}
+\setbeamerfont{frametitleSection}{size*={60}{1}, series=\bfseries}
+
+\setbeamerfont{page~number~in~head/foot}{size=\footnotesize}
+\setbeamerfont{footline}{size=\scriptsize}
+
+\setbeamerfont{block~title}{size=\normalsize, series=\bfseries}
+\setbeamerfont{block~title~alerted}{size=\normalsize, series=\bfseries}
+\setbeamerfont{caption}{size=\small}
+\setbeamerfont{caption~name}{series=\bfseries}
+\setbeamerfont{description~item}{series=\bfseries}
+
+\setbeamerfont{bibliography~entry~author}{size=\normalsize, series=\normalfont}
+\setbeamerfont{bibliography~entry~title}{size=\normalsize, series=\bfseries}
+\setbeamerfont{bibliography~entry~location}{size=\normalsize, series=\normalfont}
+\setbeamerfont{bibliography~entry~note}{size=\small, series=\normalfont}
+\setbeamerfont{standout}{size=\Large, series=\bfseries}
+
+\def\gotham@titleformat#1{#1}
+\def\gotham@subtitleformat#1{#1}
+\def\gotham@parttitleformat#1{#1}
+\def\gotham@sectiontitleformat#1{#1}
+\def\gotham@subsectiontitleformat#1{#1}
+\def\gotham@frametitleformat#1{#1}
+\def\gotham@framesubtitleformat#1{#1}
+
+\ExplSyntaxOff
+\patchcmd{\beamer@title}
+{\def\inserttitle{#2}}
+{\def\inserttitle{\gotham@titleformat{#2}}}
+{}
+{\PackageError{beamerfontthemegotham}{Patching~title~failed}\@ehc}
+\patchcmd{\beamer@subtitle}
+{\def\insertsubtitle{#2}}
+{\def\insertsubtitle{{\gotham@subtitleformat{#2}}}}
+{}
+{\PackageError{beamerfontthemegotham}{Patching~subtitle~failed}\@ehc}
+\patchcmd{\sectionentry} % beamerbasenavigation.sty l.335
+{\def\insertsectionhead{#2}}
+{\def\insertsectionhead{\gotham@sectiontitleformat{#2}}}
+{}
+{\PackageError{beamerfontthemegotham}{Patching~section~title~failed}\@ehc}%
+%% NOT WORKING YET!
+%% \patchcmd{\subsectionentry} % beamerbasenavigation.sty l.384
+%% {\def\insertsubsectionhead{##5}}
+%% {\def\insertsubsectionhead{\gotham@subsectiontitleformat{##5}}}
+%% {}
+%% {\PackageError{beamerfontthemegotham}{Patching~subsection~title~failed}\@ehc}%
+\@tempswafalse
+\patchcmd{\beamer@section} % beamerbasesection.sty l. 209
+{\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{#1}}}
+{\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{\gotham@sectiontitleformat{#1}}}}
+{\@tempswatrue}
+{}
+\patchcmd{\beamer@section} % beamerbasesection.sty l. 209
+{\edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{\unexpanded{#1}}}}
+{\edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{\noexpand\gotham@sectiontitleformat{\unexpanded{#1}}}}}
+{\@tempswatrue}
+{}
+\if@tempswa\else
+{\PackageError{beamerfontthemegotham}{Patching~section~title~failed}\@ehc}
+\fi
+\@tempswafalse
+%% NOT WORKING YET !
+%% \patchcmd{\beamer@subsection} % beamerbasesection.sty l. 209
+%% {\def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}{#1}}}
+%% {\def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}\gotham@subsectiontitleformat{#1}}}
+%% % \__gotham_subsection_title_format:n{#2}
+%% {\@tempswatrue}
+%% {}
+%% \patchcmd{\beamer@subsection} % beamerbasesection.sty l. 209
+%% {\protected@edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{#1}}}
+%% {\protected@edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{\noexpand\gotham@subsectiontitleformat{#1}}}}
+%% % \exp_not:N \__gotham_subsection_title_format:n {#1}
+%% {\@tempswatrue}
+%% {}
+%% \if@tempswa\else
+%% {\PackageError{beamerfontthemegotham}{Patching~subsection~title~failed}\@ehc}
+%% \fi%
+%% \@tempswafalse
+\providecommand{\beamer@insertframetitlecontinuation}{
+\usebeamertemplate*{frametitle~continuation}
+}
+\patchcmd{\beamer@@frametitle} % beamerbaselocalstructure.sty l. 32
+{\gdef\insertframetitle{{%
+#2%
+\ifnum\beamer@autobreakcount>0
+\relax{}\space%
+\beamer@insertframetitlecontinuation%
+\fi%
+}}%
+}
+{\gdef\insertframetitle{{%
+\gotham@frametitleformat{#2}%
+\ifnum\beamer@autobreakcount>0
+\relax{}\space%
+\beamer@insertframetitlecontinuation%
+\fi%
+}}%
+}
+{}
+{\PackageWarning{beamerfontthemegotham}{Patching~frametitle~failed}\@ehc}
+%% NOT WORKING YET !
+%% \patchcmd{\framesubtitle} % beamerbaselocalstructure.sty l.55
+%% {\only#2{\ifblank{#1}{}{\gdef\insertframesubtitle{{#1}}\beamer@aftersubtitle}}}
+%% {\only{#2}{\ifblank{#1}{}{\gdef\insertframesubtitle{{#1}}\beamer@aftersubtitle}}}
+%% {}
+%% {\PackageWarning{beamerfontthemegotham}{Patching~framesubtitle~failed}\@ehc}
+\ExplSyntaxOn
+
+%%%%
+\keys_define:nn { gotham / font }
+{
+format~title .choice:,
+format~title .usage:n = { general },
+format~title .default:n = { regular },
+format~title / regular .code:n =
+{
+\let\gotham@titleformat\@empty
+},
+format~title / lower .code:n =
+{
+\let\gotham@titleformat \text_lowercase:n %\lowercase
+\PackageWarning{ gotham } { Be~aware~that~format~title=lower~can~lead~to~problems. }
+},
+format~title / upper .code:n =
+{
+\let\gotham@titleformat \text_uppercase:n %\uppercase
+\PackageWarning{ gotham } { Be~aware~that~format~title=upper~can~lead~to~problems. }
+},
+format~title / titlecase .code:n =
+{
+\let\gotham@titleformat \text_titlecase_all:n %\MakeTitlecase
+\PackageWarning{ gotham } { Be~aware~that~format~title=titlecase~can~lead~to~problems. }
+},
+format~title / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'\l_keys_value_tl'~is~unknown~for~the~(known)~option~'\l_keys_key_tl',~so~being~ignored. }{helping~message: format~title / unknown } },
+}
+\keys_define:nn { gotham / font }
+{
+shape~title .choice:,
+shape~title .usage:n = { general },
+shape~title .default:n = { regular },
+shape~title / regular .code:n =
+{
+\setbeamerfont{title}{shape=\normalfont}
+},
+shape~title / smallcaps .code:n =
+{
+\setbeamerfont{title}{shape=\scshape}
+},
+shape~title / italic .code:n =
+{
+\setbeamerfont{title}{shape=\itshape}
+},
+shape~title / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'\l_keys_value_tl'~is~unknown~for~the~(known)~option~'\l_keys_key_tl',~so~being~ignored. }{helping~message: shape~title / unknown} },
+}
+
+\keys_define:nn { gotham / font }
+{
+format~subtitle .choice:,
+format~subtitle .usage:n = { general },
+format~subtitle .default:n = { regular },
+format~subtitle / regular .code:n =
+{
+\let\gotham@subtitleformat\@empty
+},
+format~subtitle / lower .code:n =
+{
+\let\gotham@subtitleformat \text_lowercase:n %\lowercase
+\PackageWarning{ gotham } { Be~aware~that~format~subtitle=lower~can~lead~to~problems. }
+},
+format~subtitle / upper .code:n =
+{
+\let\gotham@subtitleformat \text_uppercase:n %\uppercase
+\cs_set_eq:NN \__gotham_subtitle_format:n \text_uppercase:n
+\PackageWarning{ gotham } { Be~aware~that~format~subtitle=upper~can~lead~to~problems. }
+},
+format~subtitle / titlecase .code:n =
+{
+\let\gotham@subtitleformat \text_titlecase_all:n %\MakeTitlecase
+\PackageWarning{ gotham } { Be~aware~that~format~subtitle=titlecase~can~lead~to~problems. }
+},
+format~subtitle / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'\l_keys_value_tl'~is~unknown~for~the~(known)~option~'\l_keys_key_tl',~so~being~ignored. }{helping~message: format~subtitle / unknown} },
+}
+\keys_define:nn { gotham / font }
+{
+shape~subtitle .choice:,
+shape~subtitle .usage:n = { general },
+shape~subtitle .default:n = { regular },
+shape~subtitle / regular .code:n =
+{
+\setbeamerfont{subtitle}{shape=\normalfont}
+},
+shape~subtitle / smallcaps .code:n =
+{
+\setbeamerfont{subtitle}{shape=\scshape}
+},
+shape~subtitle / italic .code:n =
+{
+\setbeamerfont{subtitle}{shape=\itshape}
+},
+shape~subtitle / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'\l_keys_value_tl'~is~unknown~for~the~(known)~option~'\l_keys_key_tl',~so~being~ignored. }{helping~message: shape~subtitle / unknown} },
+}
+
+\keys_define:nn { gotham / font }
+{
+format~frametitle .choice:,
+format~frametitle .usage:n = { general },
+format~frametitle .default:n = { regular },
+format~frametitle / regular .code:n =
+{
+\let\gotham@frametitleformat\@empty
+},
+format~frametitle / lower .code:n =
+{
+\let\gotham@frametitleformat \text_lowercase:n %\lowercase
+\PackageWarning{ gotham } { Be~aware~that~format~frametitle=lower~can~lead~to~problems. }
+},
+format~frametitle / upper .code:n =
+{
+\let\gotham@frametitleformat \text_uppercase:n %\uppercase
+\PackageWarning{ gotham } { Be~aware~that~format~frametitle=upper~can~lead~to~problems. }
+},
+format~frametitle / titlecase .code:n =
+{
+\let\gotham@frametitleformat \text_titlecase_all:n %\Maketitlecase
+\PackageWarning{ gotham } { Be~aware~that~format~frametitle=titlecase~can~lead~to~problems. }
+},
+format~frametitle / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'\l_keys_value_tl'~is~unknown~for~the~(known)~option~'\l_keys_key_tl',~so~being~ignored. }{helping~message: format~frametitle / unknown} },
+}
+\keys_define:nn { gotham / font }
+{
+shape~frametitle .choice:,
+shape~frametitle .usage:n = { general },
+shape~frametitle .default:n = { regular },
+shape~frametitle / regular .code:n =
+{
+\setbeamerfont{frametitle}{shape=\normalfont}
+},
+shape~frametitle / smallcaps .code:n =
+{
+\setbeamerfont{frametitle}{shape=\scshape}
+},
+shape~frametitle / italic .code:n =
+{
+\setbeamerfont{frametitle}{shape=\itshape}
+},
+shape~frametitle / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'\l_keys_value_tl'~is~unknown~for~the~(known)~option~'\l_keys_key_tl',~so~being~ignored. }{helping~message: shape~frametitle / unknown} },
+}
+
+\keys_define:nn { gotham / font }
+{
+format~framesubtitle .choice:,
+format~framesubtitle .usage:n = { general },
+format~framesubtitle .default:n = { regular },
+format~framesubtitle / regular .code:n =
+{
+\let\gotham@framesubtitleformat\@empty
+},
+format~framesubtitle / lower .code:n =
+{
+\let\gotham@framesubtitleformat \text_lowercase:n %\lowercase
+\PackageWarning{ gotham } { Be~aware~that~format~framesubtitle=lower~can~lead~to~problems. }
+},
+format~framesubtitle / upper .code:n =
+{
+\let\gotham@framesubtitleformat \text_uppercase:n %\uppercase
+\PackageWarning{ gotham } { Be~aware~that~format~framesubtitle=upper~can~lead~to~problems. }
+},
+format~framesubtitle / titlecase .code:n =
+{
+\let\gotham@framesubtitleformat \text_titlecase_all:n %\Maketitlecase
+\PackageWarning{ gotham } { Be~aware~that~format~framesubtitle=titlecase~can~lead~to~problems. }
+},
+format~framesubtitle / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'\l_keys_value_tl'~is~unknown~for~the~(known)~option~'\l_keys_key_tl',~so~being~ignored. }{helping~message: format~framesubtitle / unknown} },
+}
+\keys_define:nn { gotham / font }
+{
+shape~framesubtitle .choice:,
+shape~framesubtitle .usage:n = { general },
+shape~framesubtitle .default:n = { regular },
+shape~framesubtitle / regular .code:n =
+{
+\setbeamerfont{framesubtitle}{shape=\normalfont}
+},
+shape~framesubtitle / smallcaps .code:n =
+{
+\setbeamerfont{framesubtitle}{shape=\scshape}
+},
+shape~framesubtitle / italic .code:n =
+{
+\setbeamerfont{framesubtitle}{shape=\itshape}
+},
+shape~framesubtitle / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'\l_keys_value_tl'~is~unknown~for~the~(known)~option~'\l_keys_key_tl',~so~being~ignored. }{helping~message: shape~framesubtitle / unknown} },
+}
+
+\keys_define:nn { gotham / font }
+{
+format~part .choice:,
+format~part .usage:n = { general },
+format~part .default:n = { regular },
+format~part / regular .code:n =
+{
+\let\gotham@parttitleformat\@empty
+},
+format~part / lower .code:n =
+{
+\let\gotham@parttitleformat \text_lowercase:n %\lowercase
+\PackageWarning{ gotham } { Be~aware~that~format~part=lower~can~lead~to~problems. }
+},
+format~part / upper .code:n =
+{
+\let\gotham@parttitleformat \text_uppercase:n %\uppercase
+\PackageWarning{ gotham } { Be~aware~that~format~part=upper~can~lead~to~problems. }
+},
+format~part / titlecase .code:n =
+{
+\let\gotham@parttitleformat\text_titlecase_all:n %\Maketitlecase
+\PackageWarning{ gotham } { Be~aware~that~format~part=titlecase~can~lead~to~problems. }
+},
+format~part / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'\l_keys_value_tl'~is~unknown~for~the~(known)~option~'\l_keys_key_tl',~so~being~ignored. }{helping~message: format~part / unknown} },
+}
+\keys_define:nn { gotham / font }
+{
+shape~part .choice:,
+shape~part .usage:n = { general },
+shape~part .default:n = { regular },
+shape~part / regular .code:n =
+{
+\setbeamerfont{part~title}{shape=\normalfont}
+},
+shape~part / smallcaps .code:n =
+{
+\setbeamerfont{part~title}{shape=\scshape}
+},
+shape~part / italic .code:n =
+{
+\setbeamerfont{part~title}{shape=\itshape}
+},
+shape~part / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'\l_keys_value_tl'~is~unknown~for~the~(known)~option~'\l_keys_key_tl',~so~being~ignored. }{helping~message: shape~part / unknown} },
+}
+
+\keys_define:nn { gotham / font }
+{
+format~section .choice:,
+format~section .usage:n = { general },
+format~section .default:n = { regular },
+format~section / regular .code:n =
+{
+\let\gotham@sectiontitleformat\@empty
+},
+format~section / lower .code:n =
+{
+\let\gotham@sectiontitleformat \text_lowercase:n %\lowercase
+\PackageWarning{ gotham } { Be~aware~that~format~section=lower~can~lead~to~problems. }
+},
+format~section / upper .code:n =
+{
+\let\gotham@sectiontitleformat \text_uppercase:n %\uppercase
+\PackageWarning{ gotham } { Be~aware~that~format~section=upper~can~lead~to~problems. }
+},
+format~section / titlecase .code:n =
+{
+\let\gotham@sectiontitleformat \text_titlecase_all:n %\Maketitlecase
+\PackageWarning{ gotham } { Be~aware~that~format~section=titlecase~can~lead~to~problems. }
+},
+format~section / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'\l_keys_value_tl'~is~unknown~for~the~(known)~option~'\l_keys_key_tl',~so~being~ignored. }{helping~message: format~section / unknown} },
+}
+\keys_define:nn { gotham / font }
+{
+shape~section .choice:,
+shape~section .usage:n = { general },
+shape~section .default:n = { regular },
+shape~section / regular .code:n =
+{
+\setbeamerfont{section~title}{shape=\normalfont}
+},
+shape~section / smallcaps .code:n =
+{
+\setbeamerfont{section~title}{shape=\scshape}
+},
+shape~section / italic .code:n =
+{
+\setbeamerfont{section~title}{shape=\itshape}
+},
+shape~section / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'\l_keys_value_tl'~is~unknown~for~the~(known)~option~'\l_keys_key_tl',~so~being~ignored. }{helping~message: shape~section / unknown} },
+}
+
+\keys_define:nn { gotham / font }
+{
+format~subsection .choice:,
+format~subsection .usage:n = { general },
+format~subsection .default:n = { regular },
+format~subsection / regular .code:n =
+{
+\let\gotham@subsectiontitleformat\@empty
+},
+format~subsection / lower .code:n =
+{
+\let\gotham@subsectiontitleformat \text_lowercase:n %\lowercase
+\PackageWarning{ gotham } { Be~aware~that~format~subsection=lower~can~lead~to~problems. }
+},
+format~subsection / upper .code:n =
+{
+\let\gotham@subsectiontitleformat \text_uppercase:n %\uppercase
+\PackageWarning{ gotham } { Be~aware~that~format~subsection=upper~can~lead~to~problems. }
+},
+format~subsection / titlecase .code:n =
+{
+\let\gotham@subsectiontitleformat\text_titlecase_all:n %\Maketitlecase
+\PackageWarning{ gotham } { Be~aware~that~format~subsection=titlecase~can~lead~to~problems. }
+},
+format~subsection / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'\l_keys_value_tl'~is~unknown~for~the~(known)~option~'\l_keys_key_tl',~so~being~ignored. }{helping~message: format~subsection / unknown} },
+}
+\keys_define:nn { gotham / font }
+{
+shape~subsection .choice:,
+shape~subsection .usage:n = { general },
+shape~subsection .default:n = { regular },
+shape~subsection / regular .code:n =
+{
+\setbeamerfont{subsection~title}{shape=\normalfont}
+},
+shape~subsection / smallcaps .code:n =
+{
+\setbeamerfont{subsection~title}{shape=\scshape}
+},
+shape~subsection / italic .code:n =
+{
+\setbeamerfont{subsection~title}{shape=\itshape}
+},
+shape~subsection / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'\l_keys_value_tl'~is~unknown~for~the~(known)~option~'\l_keys_key_tl',~so~being~ignored. }{helping~message: shape~subsection / unknown} },
+}
+
+\keys_set:nn { gotham / font } {
+format~title, shape~title,
+format~subtitle, shape~subtitle,
+format~frametitle, shape~frametitle,
+format~framesubtitle, shape~framesubtitle,
+format~part, shape~part,
+format~section, shape~section,
+format~subsection, shape~subsection,
+}
+
+\ProcessKeyOptions[ gotham / font ]
+%%
+%% Adapted from classic "A model .dtx file" by Joseph Wright
+%% https://www.texdev.net/2009/10/06/a-model-dtx-file/
+%%
+%% End of file `beamerfontthemegotham.sty'.
diff --git a/Master/texmf-dist/tex/latex/beamertheme-gotham/beamerinnerthemegotham.sty b/Master/texmf-dist/tex/latex/beamertheme-gotham/beamerinnerthemegotham.sty
new file mode 100644
index 00000000000..809020cbc9b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/beamertheme-gotham/beamerinnerthemegotham.sty
@@ -0,0 +1,1979 @@
+%%
+%% This is file `beamerinnerthemegotham.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% gotham.dtx (with options: `inner')
+%%
+%% Copyright (C) 2023-20** by Romain NOËL <romainoel@free.fr>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Romain NOËL.
+%% Contributors: Romain NOËL (2023-20**)
+%%
+\ProvidesExplPackage{beamerinnerthemegotham}{2024-11-11}{1.2.0.a}{gotham inner theme}
+\RequirePackage{expl3}
+\RequirePackage{xparse}
+\RequirePackage{calc}
+\RequirePackage{tikz}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%% INNER %%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% Titlepage %%%
+%%%%%%%%%%%%%%%%%%%
+\@ifundefined{\string\color@colorProgBar}{
+\providebool{darkBG} \boolfalse{darkBG}
+\providebool{transparentBG} \booltrue{transparentBG}
+\colorlet{colorBG}{white}
+\colorlet{colorFG}{black}
+\colorlet{colorFrametitle}{purple}
+\colorlet{colorStandout}{purple}
+\colorlet{colorStandin}{purple}
+\colorlet{colorTitlepage}{purple}
+\colorlet{colorFiligrane}{gray}
+\colorlet{colorBackElement}{gray}
+\colorlet{colorProgBar}{orange}
+\colorlet{colorAlert}{red}
+\colorlet{colorExample}{green}
+\setbeamercolor{progress~bar}{
+use=alerted~text,
+fg=colorProgBar,
+bg=alerted~text.fg!50!black!30
+}
+\setbeamercolor{progress~bar~in~head/foot}{%
+use=progress~bar,
+parent=progress~bar
+}
+\setbeamercolor{progress~bar~in~part~page}{
+use=progress~bar,
+parent=progress~bar
+}
+\setbeamercolor{progress~bar~in~section~page}{
+use=progress~bar,
+parent=progress~bar
+}
+\setbeamercolor{progress~bar~in~splitvert}{
+use=progress~bar,
+parent=progress~bar
+}
+\setbeamercolor{frametitleSection}{use=primary~palette, bg=, fg=primary~palette.bg}
+\setbeamercolor{standout}{use=primary~palette, bg=colorStandout, fg=primary~palette.bg}
+\setbeamercolor{standin}{use=normal~text, bg=colorStandin, fg=normal~text.fg}
+\setbeamercolor{section~in~toc}{use=normal~text, parent=normal~text,}
+\setbeamercolor{subsection~in~toc}{use=normal~text, parent=normal~text,}
+\setbeamercolor{subsubsection~in~toc}{use=normal~text, parent=normal~text,}
+}{
+}
+
+\def\maketitle{
+\ifbeamer@inframe
+\titlepage
+\else
+\frame[plain, c, noframenumbering]{\titlepage}
+\fi
+}
+\def\titlepage{
+\usebeamertemplate{title~page}
+}
+
+\defbeamertemplate*{title~graphic}{gotham}{
+\vbox{
+\inserttitlegraphic
+}
+\nointerlineskip
+}
+\defbeamertemplate*{title}{gotham}{
+\linespread{1.0}
+\inserttitle
+\par
+\vspace*{0.5em}
+}
+\defbeamertemplate*{subtitle}{gotham}{
+\insertsubtitle
+\par
+\vspace*{0.5em}
+}
+\defbeamertemplate*{author}{gotham}{
+\vspace*{1.em}
+\insertauthor
+\par
+\vspace*{0.25em}
+}
+\defbeamertemplate*{date}{gotham}{
+\insertdate
+\par
+}
+\defbeamertemplate*{institute}{gotham}{
+\vspace*{3mm}
+\insertinstitute
+\par
+}
+
+\dim_new:N \l__gotham_titleseparator_width_dim
+\dim_set:Nn \l__gotham_titleseparator_width_dim {\textwidth}
+\dim_new:N \l__gotham_titleseparator_height_dim
+\dim_set:Nn \l__gotham_titleseparator_height_dim {2pt}
+\dim_new:N \l__gotham_title_width_dim
+\dim_new:N \l__gotham_subtitle_width_dim
+\dim_new:N \l__gotham_title_max_width_dim
+
+\defbeamertemplate*{title~separator}{gotham}{
+\begin{tikzpicture}
+\fill[fg] (0,0) rectangle
+(\dim_use:N \l__gotham_titleseparator_width_dim,
+\dim_use:N \l__gotham_titleseparator_height_dim);
+\end{tikzpicture}
+\par
+}
+
+%%%%
+\providecommand{\gothamtitlepagelogo}{}
+
+%%%%%
+\providecommand{\gothamtitlepagebg}{}
+
+
+
+\defbeamertemplate{title~page}{gotham~normal}{
+\ifx\insertframetitle\@empty\else\vspace*{-3em}\fi
+\begin{picture}(0,0)
+\put(-30,-125){\noindent
+\fcolorbox{normal~text.bg}{normal~text.bg}{
+\begin{minipage}[b][\paperheight]{\paperwidth}
+\parbox[c][0pt][c]{0pt}{\gothamtitlepagebg}
+\centering
+\vfill
+\ifx\inserttitle\@empty\else
+\parbox{0.9\textwidth}{\centering
+\usebeamertemplate*{title}
+}\\[1.ex]
+\fi
+\ifx\insertsubtitle\@empty\else
+\parbox{0.9\textwidth}{\centering
+\usebeamertemplate*{subtitle}
+}\\[2.ex]
+\fi
+\usebeamertemplate*{title~separator}
+\expandafter\ifblank\expandafter{\beamer@andstripped}{
+\vspace*{1.em}
+}{
+\usebeamertemplate*{author}
+}
+\ifx\insertdate\@empty\else\usebeamertemplate*{date}\fi
+\ifx\insertinstitute\@empty\else{\parbox{0.9\textwidth}{\raggedright\usebeamertemplate*{institute}} }\fi
+\vfill
+\vbox{}
+\end{minipage}
+}
+}
+
+\put(234,-120){
+\gothamtitlepagelogo
+}
+
+\put(-27,-123){
+\noindent\vbox{
+\begin{minipage}[b][0.96\paperheight]{0.899\textwidth}
+\ifx\inserttitlegraphic\@empty\else\usebeamertemplate*{title~graphic}\fi
+\end{minipage}
+}
+}
+\end{picture}
+}
+
+\defbeamertemplate{title~page}{gotham~reversed}{
+\begin{picture}(0,0)
+\put(-28,-128){\gothamtitlepagebg}
+
+\put(-4,-125){\noindent
+\ifbool{darkBG}{
+\setbeamercolor{normal~text}{fg=colorFG, }
+\fcolorbox{colorPale}{colorPale}% reversed
+}{
+\setbeamercolor{normal~text}{fg=colorBG, }
+\fcolorbox{colorTitlepage}{colorTitlepage}% reversed
+}% end if
+{
+\begin{minipage}[b][\paperheight]{\textwidth}
+\centering
+\vfill
+\ifx\inserttitle\@empty\else\usebeamertemplate*{title}\fi
+\ifx\insertsubtitle\@empty\else\usebeamertemplate*{subtitle}\fi
+\usebeamertemplate*{title~separator}
+\expandafter\ifblank\expandafter{\beamer@andstripped}{
+\vspace*{1.em}
+}{
+\usebeamertemplate*{author}
+}
+\ifx\insertdate\@empty\else\usebeamertemplate*{date}\fi
+\ifx\insertinstitute\@empty\else{\parbox{0.9\textwidth}{\raggedright\usebeamertemplate*{institute}} }\fi
+\vfill
+\vbox{}
+\end{minipage}
+}
+}
+
+\put(234,-120){
+\gothamtitlepagelogo
+}
+
+\put(-27,-123){
+\noindent\vbox{
+\begin{minipage}[b][0.96\paperheight]{0.899\textwidth}
+\ifx\inserttitlegraphic\@empty\else\usebeamertemplate*{title~graphic}\fi
+\end{minipage}
+}
+}
+\end{picture}
+}
+
+\defbeamertemplate{title~page}{gotham~dividedpic}{
+\long\def\tmpEmpty{}
+\def\titlecontent{\usebeamerfont{title}\usebeamercolor[fg]{title}\inserttitle}
+\def\subtitlecontent{\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle}
+\settowidth\l__gotham_title_width_dim\titlecontent
+\settowidth\l__gotham_subtitle_width_dim\subtitlecontent
+\setlength\l__gotham_title_max_width_dim{\ifdim\l__gotham_title_width_dim>\l__gotham_subtitle_width_dim\l__gotham_title_width_dim\else\l__gotham_subtitle_width_dim\fi}
+\begin{minipage}{.55\textwidth}
+\raggedright
+\titlecontent\\
+\subtitlecontent\\
+\textcolor{colorProgBar}{\rule{\ifdim\l__gotham_title_max_width_dim<.55\textwidth\l__gotham_title_max_width_dim\else.55\textwidth\fi}{\dim_use:N \l__gotham_titleseparator_height_dim}}\\[2em]
+\usebeamerfont{author}\usebeamercolor[fg]{author}
+\insertauthor\\
+\expandafter\ifblank\expandafter{\beamer@andstripped}{
+\vspace*{1.em}
+}{
+\usebeamerfont{author}\usebeamercolor[fg]{author}
+\insertshortauthor
+\vspace{2em}
+}
+\ifx\insertinstitute\@empty\else{
+\usebeamertemplate*{institute}\vspace{2em}
+}\fi
+\insertdate
+\end{minipage}
+
+\begin{tikzpicture}[remember~picture, overlay]
+\clip (current~page.south~east)
+-- (current~page.north~east)
+-- ++(-5.1, 0)
+-- ++(-3, -\paperheight)
+-- cycle;
+
+\ifx\gothamtitlepagebg\tmpEmpty
+\fill[
+right~color=colorTitlepage!100,%\ifbool{darkBG}{colorPale!100}{colorDark!100},
+]
+(current~page.south~east)
+rectangle
+++(\dimexpr-0.55\paperwidth, \dimexpr\paperheight+1cm);
+\else
+\node[
+anchor=south~east,
+inner~sep=0,
+outer~sep=0
+] at (current~page.south~east) {
+\gothamtitlepagebg
+};
+\fi
+\end{tikzpicture}
+}
+
+\defbeamertemplate{title~page}{gotham~splitvert}{
+\ifx\beamer@frametitle\@empty
+\vspace*{-0.5\paperheight}
+\else %}{
+\vspace*{-0.63\paperheight}
+\fi %}
+{
+\usebeamercolor{frametitle}\colorlet{gotham@@tempColor}{bg}%
+\begin{tikzpicture}[overlay, remember~picture]
+\fill[color=gotham@@tempColor] (current~page.north~west) rectangle ([shift = {(0, -0.45\paperheight)}] current~page.north~east);
+\end{tikzpicture}
+}
+
+\begin{minipage}[b][0.5\paperheight]{\textwidth}
+\vbox{}
+\vfill
+{
+\usebeamerfont{title}
+\usebeamercolor[fg]{frametitle}
+\inserttitle
+}
+\ifx\insertsubtitle\@empty\else
+\\[1ex]
+{
+\usebeamerfont{subtitle}
+\usebeamercolor[fg]{frametitle}
+\insertsubtitle
+}
+\fi
+\vspace{1.\baselineskip}
+\end{minipage}
+
+\ifx\inserttitlegraphic\@empty\else
+\newline
+\vspace*{-1.65\baselineskip}
+{\parbox[c][0pt][c]{\textwidth}{
+\raggedleft
+\inserttitlegraphic
+}}
+\fi
+
+\expandafter\ifblank\expandafter{\beamer@andstripped}{
+\vspace*{1.em}
+}{
+\newline
+\begin{minipage}[t]{\textwidth}
+\vspace*{-0.65\baselineskip}
+\usebeamertemplate*{author}
+\end{minipage}
+}
+
+\ifx\insertinstitute\@empty\else
+\newline
+\vspace*{-1.65\baselineskip}
+\begin{minipage}[t]{\textwidth}
+\usebeamertemplate*{institute}
+\end{minipage}
+\fi
+
+\ifx\insertdate\@empty\else
+\newline
+\begin{minipage}[t]{\textwidth}
+\vspace*{2.65\baselineskip}
+\usebeamertemplate*{date}
+\end{minipage}
+\vspace*{-3.15\baselineskip}
+\fi
+}
+
+%%%%%%
+\cs_if_exist:NTF \__gotham_set_template:nn {}{
+
+\cs_new_protected:Nn \__gotham_set_template:nn
+{
+\cs_if_exist:cTF {beamer@@tmpop@#1@#2} {
+\setbeamertemplate{#1}[#2]
+}{
+\PackageError{beamerinnerthemegotham}
+{The~beamer~template~named~'#1'~with~the~option~'#2'~does~not~exist}
+{helping~message unknown setbeamertemplate option}
+}
+}
+}
+
+%%%%
+\keys_define:nn { gotham / inner }
+{
+title~page .usage:n = { general },
+title~page .default:n = { gotham~normal },
+title~page .code:n = { \__gotham_set_template:nn{title~page}{#1} },
+}
+
+%% Backgrounds %%%
+%%%%%%%%%%%%%%%%%%
+
+
+%%%%%%
+\prop_if_exist:NTF \l__gotham_template_name_prop
+{}{
+\prop_new:N \l__gotham_template_name_prop
+}
+
+%%%%%%
+\defbeamertemplate{background~canvas}{empty}{% empty background style has a color.
+\hspace*{28pt}
+\begin{beamercolorbox}[wd=\paperwidth,
+ ht=\paperheight,
+ ]{background}
+ % nothing to write, only a background color
+ \end{beamercolorbox}
+}%
+\defbeamertemplate{background}{empty}{}%
+
+\defbeamertemplate{background}{watermark/gotham~draft}{
+\begin{tikzpicture}[overlay,remember~picture]
+\node[color=red, opacity=0.3, scale=5, rotate=45] at ([shift={(0,0)}]current~page.center) {DRAFT};
+\end{tikzpicture}
+}
+\prop_put:Nnn \l__gotham_template_name_prop {background/watermark} {gotham~draft}
+
+\seq_if_exist:NTF \l__gotham_frameoption_tmp_seq {}{
+\seq_new:N \l__gotham_frameoption_tmp_seq
+}
+
+\cs_if_exist:NTF \__gotham_add_beamerframe_key:n {}{
+
+\cs_new_protected:Nn \__gotham_add_beamerframe_key:n {
+\define@key{beamerframe}{ #1 }[true]{
+\begin{#1env}
+\seq_put_left:Nn \l__gotham_frameoption_tmp_seq { \end{#1env} }
+}
+}
+
+\apptocmd{\beamer@reseteecodes}{
+\seq_use:Nn \l__gotham_frameoption_tmp_seq {}
+\seq_clear:N \l__gotham_frameoption_tmp_seq
+}{}{}
+}
+
+%%%%%%
+
+\newenvironment{noBGCenv}{
+\setbeamertemplate{background~canvas}[empty]
+}{}
+\__gotham_add_beamerframe_key:n {noBGC}
+
+%%%%%%
+\bool_new:N \l_gotham_defaultWatermark
+\bool_set_false:N \l_gotham_defaultWatermark
+\BeforeBeginEnvironment{frame}{
+\bool_if:NTF \l_gotham_defaultWatermark {
+\setbeamertemplate{background}[watermark/\prop_item:Nn \l__gotham_template_name_prop {background/watermark}]
+}{% false
+\setbeamertemplate{background}[empty]
+}
+}
+
+%%%%%%
+\newenvironment{watermarkenv}{
+\setbeamertemplate{background}[
+watermark/\prop_item:Nn \l__gotham_template_name_prop {background/watermark}
+]
+}{}
+\__gotham_add_beamerframe_key:n {watermark}
+
+%%%%%%
+\newenvironment{nowatermarkenv}{
+\setbeamertemplate{background}[empty]
+}{}
+\__gotham_add_beamerframe_key:n {nowatermark}
+
+\seq_if_exist:NTF \l__gotham_tmpa_seq
+{}{
+\seq_new:N \l__gotham_tmpa_seq
+}
+\tl_if_exist:NTF \l__gotham_tmpa_tl
+{}{
+\tl_new:N \l__gotham_tmpa_tl
+}
+\tl_if_exist:NTF \l__gotham_tmpb_tl
+{}{
+\tl_new:N \l__gotham_tmpb_tl
+}
+
+\cs_if_exist:NTF \__gotham_set_prop_template:nn {}{
+\cs_new_protected:Nn \__gotham_set_prop_template:nn
+{
+\tl_if_in:nnTF { #1 } { / }
+{
+\seq_set_split:Nnn \l__gotham_tmpa_seq { / } { #1 }
+\tl_set:Nn \l__gotham_tmpa_tl { \seq_item:Nn \l__gotham_tmpa_seq { 1 } }
+\tl_set:Nn \l__gotham_tmpb_tl { \seq_item:Nn \l__gotham_tmpa_seq { 2 } }
+\cs_if_exist:cTF {beamer@@tmpop@\exp_not:V \l__gotham_tmpa_tl @\exp_not:V \l__gotham_tmpb_tl /#2} {
+\prop_put:Nnn \l__gotham_template_name_prop {#1} {#2}
+}{
+\PackageError{beamerthemegotham}
+{The~beamer~template~named~'\l__gotham_tmpa_tl'~with~the~option~'\l__gotham_tmpb_tl/#2'~does~not~exist}
+{helping~message}
+}
+}{% false -> error
+\PackageError{beamerthemegotham}
+{%
+When~using~'\c_backslash_str\cs_to_str:N \__gotham_set_prop_template'~the~first~argument~should~contain~a~'/'~to~respect~the~naming~convention~used~(Template/what/Who~name),~but~you~gave~'#1'.~
+As~example:~if~'\c_backslash_str defbeamertemplate{background}{watermark/gotham~draft}'...,~then~use~'\c_backslash_str\cs_to_str:N \__gotham_set_prop_template{background/watermark}{gotham~draft}'
+}{helping~message}
+}
+}
+}
+
+%%%%
+\keys_define:nn { gotham / inner }{
+watermark~template .usage:n = { general },
+watermark~template .default:n = { gotham~draft },
+watermark~template .code:n = { \__gotham_set_prop_template:nn{background/watermark}{#1} },
+}
+\keys_define:nn { gotham / inner }{
+watermark~default .choice:,
+watermark~default .usage:n = { general },
+watermark~default .default:n = { false },
+
+watermark~default / true .code:n = { \bool_set_true:N \l_gotham_defaultWatermark },
+watermark~default / on .code:n = { \bool_set_true:N \l_gotham_defaultWatermark },
+watermark~default / enable .code:n = { \bool_set_true:N \l_gotham_defaultWatermark },
+
+watermark~default / false .code:n = { \bool_set_false:N \l_gotham_defaultWatermark },
+watermark~default / off .code:n = { \bool_set_false:N \l_gotham_defaultWatermark },
+watermark~default / disable .code:n = { \bool_set_false:N \l_gotham_defaultWatermark },
+
+watermark~default / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'watermark~default',~so~being~ignored. }{helping~message: watermark~default / unknown} },
+}
+
+%%%% Stand IN/OUT %%%%
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%
+\define@key{beamerframe}{c}[true]{
+\beamer@frametopskip=0pt~plus~1fill\relax
+\beamer@framebottomskip=0pt~plus~1fill\relax
+\beamer@frametopskipautobreak=0pt~plus~.4\paperheight\relax
+\beamer@framebottomskipautobreak=0pt~plus~.6\paperheight\relax
+\def\beamer@initfirstlineunskip{}
+}
+
+\defbeamertemplate{background~canvas}{standout/gotham}{
+\ifbeamercolorempty[bg]{standout}{
+}{
+\usebeamercolor[bg]{standout}\color{bg}
+\vrule~width\paperwidth~height\paperheight
+}
+}
+\prop_put:Nnn \l__gotham_template_name_prop {background~canvas/standout} {gotham}
+
+\defbeamertemplate*{standout}{gotham}{
+
+\setbeamertemplate{background~canvas}[standout/\prop_item:Nn \l__gotham_template_name_prop {background~canvas/standout}]
+\usebeamerfont{standout}
+\ifbeamercolorempty[bg]{primary~palette}{
+\setbeamercolor{background~canvas}{
+use=primary~palette,
+bg=primary~palette.fg
+}
+}{
+\setbeamercolor{background~canvas}{
+use=primary~palette,
+bg=primary~palette.bg
+}
+}
+\setbeamercolor{local~structure}{fg=primary~palette.bg}
+\usebeamercolor[fg]{primary~palette}
+}
+
+%%%%%%
+\newenvironment{standoutenv}{
+\usebeamertemplate{standout}
+}{}
+\__gotham_add_beamerframe_key:n {standout}
+
+\defbeamertemplate{background~canvas}{standin/gotham}{
+\ifbeamercolorempty[bg]{standin}{
+}{
+\ifbool{transparentBG}{
+}{
+\usebeamercolor[bg]{standin}\color{bg}
+\vrule~width\paperwidth~height\paperheight
+}
+}
+}
+\prop_put:Nnn \l__gotham_template_name_prop {background~canvas/standin} {gotham}
+
+\defbeamertemplate*{standin}{gotham}{
+\setbeamertemplate{background~canvas}[standin/\prop_item:Nn \l__gotham_template_name_prop {background~canvas/standin}]
+\usebeamerfont{standin}
+\setbeamercolor{frametitle}{
+use=normal~text,
+bg=normal~text.bg,
+fg=normal~text.fg
+}
+}
+
+%%%%%%
+\newenvironment{standinenv}{
+\usebeamertemplate{standin}
+}{}
+\__gotham_add_beamerframe_key:n {standin}
+
+%%%%
+\keys_define:nn { gotham / inner }
+{
+standout~BG~template .usage:n = { general },
+standout~BG~template .default:n = { gotham },
+standout~BG~template .code:n = {
+\__gotham_set_prop_template:nn{background~canvas/standout}{#1}
+},
+}
+\keys_define:nn { gotham / inner }
+{
+standin~BG~template .usage:n = { general },
+standin~BG~template .default:n = { gotham },
+standin~BG~template .code:n = {
+\__gotham_set_prop_template:nn{background~canvas/standin}{#1}
+},
+}
+\keys_define:nn { gotham / inner }
+{
+standout~template .usage:n = { general },
+standout~template .default:n = { gotham },
+standout~template .code:n = {
+\__gotham_set_template:nn{standout}{#1}
+},
+}
+\keys_define:nn { gotham / inner }
+{
+standin~template .usage:n = { general },
+standin~template .default:n = { gotham },
+standin~template .code:n = {
+\__gotham_set_template:nn{standin}{#1}
+},
+}
+
+%%%% Sections %%%%
+%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%
+\bool_new:N \l_gotham_partframe
+\bool_set_false:N \l_gotham_partframe
+\define@key{beamerframe}{part}[true]{
+\bool_set_true:N \l_gotham_partframe
+\begingroup
+\usebeamertemplate{part~frame}
+}
+\apptocmd{\beamer@reseteecodes}{
+\bool_if:NTF \l_gotham_partframe {
+\endgroup
+\bool_set_false:N \l_gotham_partframe
+}{}
+}{}{}
+
+%%%%%%
+\bool_new:N \l_gotham_sectionframe
+\bool_set_false:N \l_gotham_sectionframe
+\define@key{beamerframe}{section}[true]{
+\bool_set_true:N \l_gotham_sectionframe
+\begingroup
+\usebeamertemplate{section~frame}
+}
+\apptocmd{\beamer@reseteecodes}{
+\bool_if:NTF \l_gotham_sectionframe {
+\endgroup
+\bool_set_false:N \l_gotham_sectionframe
+}{}
+}{}{}
+
+%%%%%%
+\bool_new:N \l_gotham_subsectionframe
+\bool_set_false:N \l_gotham_subsectionframe
+\define@key{beamerframe}{subsec}[true]{
+\bool_set_true:N \l_gotham_subsectionframe
+\begingroup
+\usebeamertemplate{subsection~frame}
+}
+\apptocmd{\beamer@reseteecodes}{
+\bool_if:NTF \l_gotham_subsectionframe {
+\endgroup
+\bool_set_false:N \l_gotham_subsectionframe
+}{}
+}{}{}
+
+%%%%%%
+\bool_new:N \l_gotham_subsubsectionframe
+\bool_set_false:N \l_gotham_subsubsectionframe
+\define@key{beamerframe}{subsubsec}[true]{
+\bool_set_true:N \l_gotham_subsubsectionframe
+\begingroup
+\usebeamertemplate{subsubsection~frame}
+}
+\apptocmd{\beamer@reseteecodes}{
+\bool_if:NTF \l_gotham_subsubsectionframe {
+\endgroup
+\bool_set_false:N \l_gotham_subsubsectionframe
+}{}
+}{}{}
+
+%%%%%%
+\providebool{partContent}
+\booltrue{partContent}
+\providecommand{\partContentName}{Part~content}
+\providebool{sectionContent}
+\booltrue{sectionContent}
+\providecommand{\secContentName}{Section~content}
+\providebool{subsectionContent}
+\booltrue{subsectionContent}
+\providecommand{\subsecContentName}{Subsection~content}
+
+\def\partname{\translate{Part}}
+\defbeamertemplate*{part~title}{gotham}{
+\usebeamercolor[fg]{part~title}
+\usebeamerfont{part~title}
+\partname \ \insertromanpartnumber
+\\[1.75ex]
+\insertpart
+}
+\defbeamertemplate*{section~title}{gotham}{
+\usebeamercolor[fg]{section~title}
+\usebeamerfont{section~title}
+\insertsectionnumber.~
+\insertsectionhead
+}
+\defbeamertemplate*{subsection~title}{gotham}{
+\usebeamercolor[fg]{subsection~title}
+\usebeamerfont{subsection~title}
+\insertsectionnumber.\insertsubsectionnumber.~
+\insertsubsectionhead
+}
+\def\subsubsectionname{\translate{Subsubsection}}
+\def\insertsubsubsectionnumber{\arabic{subsubsection}}
+\def\subsubsectionpage{\usebeamertemplate*{subsubsection~page}}
+\defbeamertemplate*{subsubsection~title}{gotham}{
+\usebeamercolor[fg]{subsubsection~title}
+\usebeamerfont{subsubsection~title}
+\insertsectionnumber.\insertsubsectionnumber.\insertsubsubsectionnumber.~
+\insertsubsubsectionhead
+}
+
+\cs_new_protected:Nn \__gotham_inner_disable_partpage:
+{
+\AtBeginPart{
+}
+}
+
+\cs_new_protected:Nn \__gotham_inner_enable_partpage:
+{
+\AtBeginPart{
+\ifbeamer@inframe
+\partpage
+\else
+\frame[c, noframenumbering, part]{\partpage}
+\fi
+
+\ifbool{partContent}{
+\begin{frame}[noframenumbering, tocpart]
+\frametitle{\partContentName}
+\tableofcontents[part=\thepart]
+\end{frame}
+}{
+}
+}
+}
+
+\cs_new_protected:Nn \__gotham_inner_disable_sectionpage:
+{
+\AtBeginSection{
+}
+}
+
+\cs_new_protected:Nn \__gotham_inner_enable_sectionpage:
+{
+\AtBeginSection{
+\ifbeamer@inframe
+\sectionpage
+\else
+\frame[c, noframenumbering, section]{\sectionpage}
+\fi
+
+\ifbool{sectionContent}{
+\begin{frame}[noframenumbering, tocsec]
+\frametitle{\secContentName}
+{\tableofcontents[currentsection, currentsubsection,
+hideothersubsections,
+sectionstyle=show/shaded,
+]
+}
+\end{frame}
+}{
+}
+}
+}
+
+\cs_new_protected:Nn \__gotham_inner_disable_subsectionpage:
+{
+ \AtBeginSubsection{
+ % intentionally empty
+ }
+}
+
+\cs_new_protected:Nn \__gotham_inner_enable_subsectionpage:
+{
+\AtBeginSubsection{
+\ifbeamer@inframe
+\subsectionpage
+\else
+\frame[c, noframenumbering, subsec]{\subsectionpage}
+\fi
+
+\ifbool{subsectionContent}{
+\begin{frame}[noframenumbering, tocsubsec]
+\frametitle{\subsecContentName}
+{\tableofcontents[currentsection, currentsubsection,
+hideothersubsections,
+sectionstyle=show/shaded,
+subsectionstyle=show/shaded/hide,
+subsubsectionstyle=show/show/hide,
+]
+}
+\end{frame}
+}{
+}
+}
+}
+
+\cs_new_protected:Nn \__gotham_inner_disable_subsubsectionpage:
+{
+ \AtBeginSubsubsection{
+ % intentionally empty
+ }
+}
+
+\cs_new_protected:Nn \__gotham_inner_enable_subsubsectionpage:
+{
+\AtBeginSubsubsection{
+\ifbeamer@inframe
+\subsubsectionpage
+\else
+\frame[c, noframenumbering, subsubsec]{\subsubsectionpage}
+\fi
+}
+}
+
+%%%%%%
+\newlength{\gotham@progressonsectionpage}
+\newlength{\gothamProgressSectionHeight}
+\setlength{\gothamProgressSectionHeight}{3pt}
+
+\defbeamertemplate{progress~bar~in~section~page}{empty}{
+\vspace{\gothamProgressSectionHeight+1ex}
+}
+
+\def\inserttotalframenumber{100}
+\defbeamertemplate{progress~bar~in~section~page}{display}{
+\setlength{\gotham@progressonsectionpage}{
+\textwidth * \ratio{\insertframenumber~pt}{\inserttotalframenumber~pt}
+}
+\begin{tikzpicture}
+\fill[bg] (0,0) rectangle (\textwidth, \gothamProgressSectionHeight);
+\fill[fg] (0,0) rectangle (\gotham@progressonsectionpage, \gothamProgressSectionHeight);
+\end{tikzpicture}
+}
+
+%%%%%%
+\newlength{\sectionhoffset}
+\setlength{\sectionhoffset}{0pt}
+
+\defbeamertemplate{part~page}{progressbar/simple}{
+\centering
+\hspace*{\sectionhoffset}
+\begin{minipage}{22em}
+\centering
+\usebeamertemplate*{part~title}\\[-1ex]
+\usebeamertemplate*{progress~bar~in~section~page}
+\par
+\end{minipage}
+\par
+\vspace{\baselineskip}
+}
+\defbeamertemplate{section~page}{progressbar/simple}{
+\centering
+\hspace*{\sectionhoffset}
+\begin{minipage}{22em}
+\raggedright
+\usebeamertemplate*{section~title}\\[-1ex]
+\usebeamertemplate*{progress~bar~in~section~page}
+\par
+\end{minipage}
+\par
+\vspace{\baselineskip}
+}
+\defbeamertemplate{subsection~page}{progressbar/simple}{
+\centering
+\hspace*{\sectionhoffset}
+\begin{minipage}{22em}
+\raggedright
+\usebeamertemplate*{section~title}\\[-1ex]
+\usebeamertemplate*{progress~bar~in~section~page}
+\par
+\usebeamertemplate*{subsection~title}
+\end{minipage}
+\par
+\vspace{\baselineskip}
+}
+\defbeamertemplate{subsubsection~page}{progressbar/simple}{
+\centering
+\hspace*{\sectionhoffset}
+\begin{minipage}{22em}
+\raggedright
+\usebeamertemplate*{section~title}\\[-1ex]
+\usebeamertemplate*{progress~bar~in~section~page}
+\par
+\usebeamertemplate*{subsection~title}
+\par
+\usebeamertemplate*{subsubsection~title}
+\end{minipage}
+\par
+\vspace{\baselineskip}
+}
+
+\defbeamertemplate{background~canvas}{part/gotham}{
+\ifbeamercolorempty[bg]{normal~text}{}{\color{bg}\vrule width\paperwidth height\paperheight}
+}
+\defbeamertemplate{background~canvas}{section/gotham}{
+\setbeamertemplate{background~canvas}[part/gotham]
+\usebeamertemplate{background~canvas}
+}
+\defbeamertemplate{background~canvas}{subsection/gotham}{
+\setbeamertemplate{background~canvas}[part/gotham]
+\usebeamertemplate{background~canvas}
+}
+\defbeamertemplate{background~canvas}{subsubsection/gotham}{
+\setbeamertemplate{background~canvas}[part/gotham]
+\usebeamertemplate{background~canvas}
+}
+
+\defbeamertemplate{part~frame}{gotham~simple}{
+\setbeamertemplate{background~canvas}[part/gotham]
+\setbeamercolor{frametitle}{
+use={frametitleSection, normal~text},
+bg=frametitleSection.fg,
+fg=normal~text.fg
+}
+\setbeamertemplate{progress~bar~in~section~page}[empty]
+\setbeamertemplate{part~page}[progressbar/simple]
+ % \usebeamertemplate*{part~page}% activated automatically
+}
+
+\defbeamertemplate{section~frame}{gotham~simple}{
+\setbeamertemplate{background~canvas}[section/gotham]
+\setbeamercolor{frametitle}{
+use={frametitleSection, normal~text},
+bg=frametitleSection.fg,
+fg=normal~text.fg
+}
+\setbeamertemplate{progress~bar~in~section~page}[empty]
+\setbeamertemplate{section~page}[progressbar/simple]
+ % \usebeamertemplate*{section~page}% activated automatically
+}
+
+\defbeamertemplate{subsection~frame}{gotham~simple}{
+\setbeamertemplate{background~canvas}[subsection/gotham]
+\setbeamercolor{frametitle}{
+use={frametitleSection, normal~text},
+bg=frametitleSection.fg,
+fg=normal~text.fg
+}
+\setbeamertemplate{progress~bar~in~section~page}[empty]
+\setbeamertemplate{subsection~page}[progressbar/simple]
+ % \usebeamertemplate*{subsection~page}% activated automatically
+}
+
+\defbeamertemplate{subsubsection~frame}{gotham~simple}{
+\setbeamertemplate{background~canvas}[subsubsection/gotham]
+\setbeamercolor{frametitle}{
+use={frametitleSection, normal~text},
+bg=frametitleSection.fg,
+fg=normal~text.fg
+}
+\setbeamertemplate{progress~bar~in~section~page}[empty]
+\setbeamertemplate{subsubsection~page}[progressbar/simple]
+ % \usebeamertemplate*{subsubsection~page}% activated automatically
+}
+
+\defbeamertemplate{part~frame}{gotham~progressbar}{
+\setbeamertemplate{background~canvas}[part/gotham]
+\setbeamercolor{frametitle}{
+use={frametitleSection, normal~text},
+bg=frametitleSection.fg,
+fg=normal~text.fg
+}
+\setbeamertemplate{progress~bar~in~section~page}[display]
+\setbeamertemplate{part~page}[progressbar/simple]
+ % \usebeamertemplate*{part~page}% activated automatically
+}
+
+\defbeamertemplate{section~frame}{gotham~progressbar}{
+\setbeamertemplate{background~canvas}[section/gotham]
+\setbeamercolor{frametitle}{
+use={frametitleSection, normal~text},
+bg=frametitleSection.fg,
+fg=normal~text.fg
+}
+\setbeamertemplate{progress~bar~in~section~page}[display]
+\setbeamertemplate{section~page}[progressbar/simple]
+ % \usebeamertemplate*{section~page}% activated automatically
+}
+
+\defbeamertemplate{subsection~frame}{gotham~progressbar}{
+\setbeamertemplate{background~canvas}[subsection/gotham]
+\setbeamercolor{frametitle}{
+use={frametitleSection, normal~text},
+bg=frametitleSection.fg,
+fg=normal~text.fg
+}
+\setbeamertemplate{progress~bar~in~section~page}[display]
+\setbeamertemplate{subsection~page}[progressbar/simple]
+ % \usebeamertemplate*{subsection~page}% activated automatically
+}
+
+\defbeamertemplate{subsubsection~frame}{gotham~progressbar}{
+\setbeamertemplate{background~canvas}[subsubsection/gotham]
+\setbeamercolor{frametitle}{
+use={frametitleSection, normal~text},
+bg=frametitleSection.fg,
+fg=normal~text.fg
+}
+\setbeamertemplate{progress~bar~in~section~page}[display]
+\setbeamertemplate{subsubsection~page}[progressbar/simple]
+ % \usebeamertemplate*{subsubsection~page}% activated automatically
+}
+
+\defbeamertemplate{progress~bar~in~splitvert}{empty}{
+\vspace{-0.5ex}
+}
+
+\defbeamertemplate*{progress~bar~in~splitvert}{display}{
+\setlength{\gotham@progressonsectionpage}{
+\paperwidth * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}
+}
+\begin{tikzpicture}
+\fill[bg] (0,0) rectangle (\paperwidth, \gothamProgressSectionHeight);
+\fill[fg] (0,0) rectangle (\gotham@progressonsectionpage, \gothamProgressSectionHeight);
+\end{tikzpicture}
+}
+
+\defbeamertemplate{part~page}{gotham~splitvert~progressbar/simple}{
+\ifx\beamer@frametitle\@empty
+\vspace*{-0.05\paperheight}
+\else %}{
+\vspace*{-0.165\paperheight}
+\fi %}
+{
+\usebeamercolor{frametitle}\colorlet{gotham@@tempColor}{bg}
+\begin{tikzpicture}[overlay, remember~picture]
+\fill[color=gotham@@tempColor] (current~page.north~west) rectangle ([shift = {(0, -0.45\paperheight)}] current~page.north~east);
+\end{tikzpicture}
+}
+
+\begin{minipage}[b][0.45\paperheight]{\textwidth}
+\centering
+\usebeamertemplate*{part~title}
+\end{minipage}
+\\[-0.1\baselineskip]
+\hspace*{-1.0cm}\noindent
+\usebeamertemplate*{progress~bar~in~splitvert}
+
+\newline
+\begin{minipage}[t][0.5\paperheight]{\textwidth}
+\end{minipage}
+}
+\defbeamertemplate{part~frame}{gotham~splitvert~progressbar}{
+\setbeamertemplate{background~canvas}[part/gotham]
+\setbeamercolor{part~title}{use=frametitle, fg=frametitle.fg}
+\setbeamertemplate{progress~bar~in~splitvert}[display]
+\setbeamertemplate{part~page}[gotham~splitvert~progressbar/simple]
+ % \usebeamertemplate*{part~page}% activated automatically
+}
+\defbeamertemplate{part~frame}{gotham~splitvert~simple}{
+\setbeamertemplate{background~canvas}[part/gotham]
+\setbeamercolor{part~title}{use=frametitle, fg=frametitle.fg}
+\setbeamertemplate{progress~bar~in~splitvert}[empty]
+\setbeamertemplate{part~page}[gotham~splitvert~progressbar/simple]
+ % \usebeamertemplate*{part~page}% activated automatically
+}
+
+\defbeamertemplate{section~page}{gotham~splitvert~progressbar/simple}{
+\ifx\beamer@frametitle\@empty
+\vspace*{-0.05\paperheight}
+\else %}{
+\vspace*{-0.165\paperheight}
+\fi %}
+{
+\usebeamercolor{frametitle}\colorlet{gotham@@tempColor}{bg}
+\begin{tikzpicture}[overlay, remember~picture]
+\fill[color=gotham@@tempColor] (current~page.north~west) rectangle ([shift = {(0, -0.45\paperheight)}] current~page.north~east);
+\end{tikzpicture}
+}
+
+\hspace*{\sectionhoffset}
+\begin{minipage}[b][0.45\paperheight]{\textwidth}
+\usebeamertemplate*{section~title}
+\end{minipage}
+\\[-0.1\baselineskip]
+\hspace*{-1.0cm}\noindent
+\usebeamertemplate*{progress~bar~in~splitvert}
+
+\newline
+\hspace*{\sectionhoffset}
+\begin{minipage}[t][0.5\paperheight]{\textwidth}
+\usebeamerfont{subsection~title}
+\usebeamercolor[bg]{frametitle}
+\end{minipage}
+}
+\defbeamertemplate{section~frame}{gotham~splitvert~progressbar}{
+\setbeamertemplate{background~canvas}[section/gotham]
+\setlength{\sectionhoffset}{1cm}
+\setbeamercolor{section~title}{use=frametitle, fg=frametitle.fg}
+\setbeamertemplate{progress~bar~in~splitvert}[display]
+\setbeamertemplate{section~page}[gotham~splitvert~progressbar/simple]
+ % \usebeamertemplate*{section~page}% activated automatically
+}
+\defbeamertemplate{section~frame}{gotham~splitvert~simple}{
+\setbeamertemplate{background~canvas}[section/gotham]
+\setlength{\sectionhoffset}{1cm}
+\setbeamercolor{section~title}{use=frametitle, fg=frametitle.fg}
+\setbeamertemplate{progress~bar~in~splitvert}[empty]
+\setbeamertemplate{section~page}[gotham~splitvert~progressbar/simple]
+ % \usebeamertemplate*{section~page}% activated automatically
+}
+
+\defbeamertemplate{subsection~page}{gotham~splitvert~progressbar/simple}{
+\ifx\beamer@frametitle\@empty
+\vspace*{-0.05\paperheight}
+\else %}{
+\vspace*{-0.165\paperheight}
+\fi %}
+{
+\usebeamercolor{frametitle}\colorlet{gotham@@tempColor}{bg}
+\begin{tikzpicture}[overlay, remember~picture]
+\fill[color=gotham@@tempColor] (current~page.north~west) rectangle ([shift = {(0, -0.45\paperheight)}] current~page.north~east);
+\end{tikzpicture}
+}
+
+\hspace*{\sectionhoffset}
+\begin{minipage}[b][0.45\paperheight]{\textwidth}
+\usebeamertemplate*{section~title}
+\end{minipage}
+\\[-0.1\baselineskip]
+\hspace*{-1.0cm}\noindent
+\usebeamertemplate*{progress~bar~in~splitvert}
+
+\newline
+\hspace*{\sectionhoffset}
+\begin{minipage}[t][0.5\paperheight]{\textwidth}
+\usebeamerfont{subsection~title}
+\usebeamercolor[bg]{frametitle}
+\usebeamertemplate*{subsection~title}
+\end{minipage}
+}
+\defbeamertemplate{subsection~frame}{gotham~splitvert~progressbar}{
+\setbeamertemplate{background~canvas}[subsection/gotham]
+\setlength{\sectionhoffset}{1cm}
+\setbeamercolor{section~title}{use=frametitle, fg=frametitle.fg}
+\setbeamercolor{subsection~title}{use=frametitle, fg=frametitle.bg}
+\setbeamertemplate{progress~bar~in~splitvert}[display]
+\setbeamertemplate{subsection~page}[gotham~splitvert~progressbar/simple]
+ % \usebeamertemplate*{subsection~page}% activated automatically
+}
+\defbeamertemplate{subsection~frame}{gotham~splitvert~simple}{
+\setbeamertemplate{background~canvas}[subsection/gotham]
+\setlength{\sectionhoffset}{1cm}
+\setbeamercolor{section~title}{use=frametitle, fg=frametitle.fg}
+\setbeamercolor{subsection~title}{use=frametitle, fg=frametitle.bg}
+\setbeamertemplate{progress~bar~in~splitvert}[empty]
+\setbeamertemplate{subsection~page}[gotham~splitvert~progressbar/simple]
+ % \usebeamertemplate*{subsection~page}% activated automatically
+}
+
+\defbeamertemplate{subsubsection~page}{gotham~splitvert~progressbar/simple}{
+\ifx\beamer@frametitle\@empty
+\vspace*{-0.05\paperheight}
+\else %}{
+\vspace*{-0.165\paperheight}
+\fi %}
+{
+\usebeamercolor{frametitle}\colorlet{gotham@@tempColor}{bg}
+\begin{tikzpicture}[overlay, remember~picture]
+\fill[color=gotham@@tempColor] (current~page.north~west) rectangle ([shift = {(0, -0.45\paperheight)}] current~page.north~east);
+\end{tikzpicture}
+}
+
+\hspace*{\sectionhoffset}
+\begin{minipage}[b][0.45\paperheight]{\textwidth}
+\usebeamertemplate*{section~title}
+\end{minipage}
+\\[-0.1\baselineskip]
+\hspace*{-1.0cm}\noindent
+\usebeamertemplate*{progress~bar~in~splitvert}
+
+\newline
+\hspace*{\sectionhoffset}
+\begin{minipage}[t][0.5\paperheight]{\textwidth}
+\usebeamerfont{subsubsection~title}
+\usebeamercolor[bg]{frametitle}
+\usebeamertemplate*{subsection~title}
+\par
+\usebeamertemplate*{subsubsection~title}
+\end{minipage}
+}
+\defbeamertemplate{subsubsection~frame}{gotham~splitvert~progressbar}{
+\setbeamertemplate{background~canvas}[subsubsection/gotham]
+\setlength{\sectionhoffset}{1cm}
+\setbeamercolor{section~title}{use=frametitle, fg=frametitle.fg}
+\setbeamercolor{subsection~title}{use=frametitle, fg=frametitle.bg}
+\setbeamercolor{subsubsection~title}{use=frametitle, fg=frametitle.bg}
+\setbeamertemplate{progress~bar~in~splitvert}[display]
+\setbeamertemplate{subsubsection~page}[gotham~splitvert~progressbar/simple]
+ % \usebeamertemplate*{subsubsection~page}% activated automatically
+}
+\defbeamertemplate{subsubsection~frame}{gotham~splitvert~simple}{
+\setbeamertemplate{background~canvas}[subsubsection/gotham]
+\setlength{\sectionhoffset}{1cm}
+\setbeamercolor{section~title}{use=frametitle, fg=frametitle.fg}
+\setbeamercolor{subsection~title}{use=frametitle, fg=frametitle.bg}
+\setbeamercolor{subsubsection~title}{use=frametitle, fg=frametitle.bg}
+\setbeamertemplate{progress~bar~in~splitvert}[empty]
+\setbeamertemplate{subsubsection~page}[gotham~splitvert~progressbar/simple]
+ % \usebeamertemplate*{subsubsection~page}% activated automatically
+}
+
+
+\defbeamertemplate{part~page}{gotham~progressvert}{
+\ifx\beamer@frametitle\@empty
+\vspace*{-0.05\paperheight}
+\else %}{
+\vspace*{-0.165\paperheight}
+\fi %}
+\setlength{\gotham@progressonsectionpage}{
+\paperheight * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}
+}
+{
+\usebeamercolor{frametitle}\colorlet{gotham@@tempColor}{bg}
+\colorlet{gotham@@tempColorB}{fg}
+\begin{tikzpicture}[overlay, remember~picture]
+\fill[color=gotham@@tempColor]
+([shift={(0,0)}] current~page.north~west) --
+([shift={(0,-\gotham@progressonsectionpage)}] current~page.north~west) --
+([shift={(0,-\gotham@progressonsectionpage)}] current~page.north~east) --
+([shift={(0,0)}] current~page.north~east)
+--cycle;
+\node[color=gotham@@tempColorB, align=left, text~width=0.8\textwidth] at ([shift={(\sectionhoffset,0)}] current~page.center) {
+{\usebeamerfont{part~title}
+\partname \ \insertromanpartnumber
+\\[1.75ex]
+\insertpart
+}
+};
+
+\clip
+([shift={(0,0)}] current~page.south~west) --
+([shift={(0,\paperheight-\gotham@progressonsectionpage)}] current~page.south~west) --
+([shift={(0,\paperheight-\gotham@progressonsectionpage)}] current~page.south~east) --
+([shift={(0,0)}] current~page.south~east)
+--cycle;
+
+\fill[color=gotham@@tempColorB]
+([shift={(0,0)}]current~page.south~west) --
+([shift={(0,\paperheight-\gotham@progressonsectionpage)}] current~page.south~west) --
+([shift={(0,\paperheight-\gotham@progressonsectionpage)}] current~page.south~east) --
+([shift={(0,0)}] current~page.south~east)
+--cycle;
+\node[color=gotham@@tempColor, align=left, text~width=0.8\textwidth] at ([shift={(\sectionhoffset,0)}] current~page.center) {
+{\usebeamerfont{part~title}
+\partname \ \insertromanpartnumber
+\\
+\insertpart
+}
+};
+\end{tikzpicture}
+}
+}
+\defbeamertemplate{part~frame}{gotham~progressvert}{
+\setbeamertemplate{background~canvas}[part/gotham]
+\setlength{\sectionhoffset}{1cm}
+\setbeamertemplate{part~page}[gotham~progressvert]
+ % \usebeamertemplate*{section~page}% activated automatically
+}
+
+\defbeamertemplate{section~page}{gotham~progressvert}{
+\ifx\beamer@frametitle\@empty
+\vspace*{-0.05\paperheight}
+\else %}{
+\vspace*{-0.165\paperheight}
+\fi %}
+\setlength{\gotham@progressonsectionpage}{
+\paperheight * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}
+}
+{
+\usebeamercolor{frametitle}\colorlet{gotham@@tempColor}{bg}
+\colorlet{gotham@@tempColorB}{fg}
+\begin{tikzpicture}[overlay, remember~picture]
+\fill[color=gotham@@tempColor]
+([shift={(0,0)}] current~page.north~west) --
+([shift={(0,-\gotham@progressonsectionpage)}] current~page.north~west) --
+([shift={(0,-\gotham@progressonsectionpage)}] current~page.north~east) --
+([shift={(0,0)}] current~page.north~east)
+--cycle;
+\node[color=gotham@@tempColorB, align=left, text~width=0.8\textwidth] at ([shift={(\sectionhoffset,0)}] current~page.center) {
+{\usebeamerfont{section~title}
+\insertsectionnumber.~
+\insertsectionhead}
+};
+
+\clip
+([shift={(0,0)}] current~page.south~west) --
+([shift={(0,\paperheight-\gotham@progressonsectionpage)}] current~page.south~west) --
+([shift={(0,\paperheight-\gotham@progressonsectionpage)}] current~page.south~east) --
+([shift={(0,0)}] current~page.south~east)
+--cycle;
+
+\fill[color=gotham@@tempColorB]
+([shift={(0,0)}]current~page.south~west) --
+([shift={(0,\paperheight-\gotham@progressonsectionpage)}] current~page.south~west) --
+([shift={(0,\paperheight-\gotham@progressonsectionpage)}] current~page.south~east) --
+([shift={(0,0)}] current~page.south~east)
+--cycle;
+\node[color=gotham@@tempColor, align=left, text~width=0.8\textwidth] at ([shift={(\sectionhoffset,0)}] current~page.center) {
+{\usebeamerfont{section~title}
+\insertsectionnumber.~
+\insertsectionhead}
+};
+\end{tikzpicture}
+}
+}
+\defbeamertemplate{section~frame}{gotham~progressvert}{
+\setbeamertemplate{background~canvas}[section/gotham]
+\setlength{\sectionhoffset}{1cm}
+\setbeamertemplate{section~page}[gotham~progressvert]
+ % \usebeamertemplate*{section~page}% activated automatically
+}
+
+\defbeamertemplate{subsection~page}{gotham~progressvert}{
+\ifx\beamer@frametitle\@empty
+\vspace*{-0.05\paperheight}
+\else %}{
+\vspace*{-0.165\paperheight}
+\fi %}
+\setlength{\gotham@progressonsectionpage}{
+\paperheight * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}
+}
+{
+\usebeamercolor{frametitle}\colorlet{gotham@@tempColor}{bg}
+\colorlet{gotham@@tempColorB}{fg}
+\begin{tikzpicture}[overlay, remember~picture]
+\fill[color=gotham@@tempColor]
+([shift={(0,0)}] current~page.north~west) --
+([shift={(0,-\gotham@progressonsectionpage)}] current~page.north~west) --
+([shift={(0,-\gotham@progressonsectionpage)}] current~page.north~east) --
+([shift={(0,0)}] current~page.north~east)
+--cycle;
+\node[color=gotham@@tempColorB, align=left, text~width=0.8\textwidth] at ([shift={(\sectionhoffset,0)}] current~page.center) {
+{\usebeamerfont{section~title}
+\insertsectionnumber.~
+\insertsectionhead}
+\\
+{\usebeamerfont{subsection~title}
+\insertsectionnumber.\insertsubsectionnumber.~
+\insertsubsectionhead}
+};
+
+\clip
+([shift={(0,0)}] current~page.south~west) --
+([shift={(0,\paperheight-\gotham@progressonsectionpage)}] current~page.south~west) --
+([shift={(0,\paperheight-\gotham@progressonsectionpage)}] current~page.south~east) --
+([shift={(0,0)}] current~page.south~east)
+--cycle;
+
+\fill[color=gotham@@tempColorB]
+([shift={(0,0)}]current~page.south~west) --
+([shift={(0,\paperheight-\gotham@progressonsectionpage)}] current~page.south~west) --
+([shift={(0,\paperheight-\gotham@progressonsectionpage)}] current~page.south~east) --
+([shift={(0,0)}] current~page.south~east)
+--cycle;
+\node[color=gotham@@tempColor, align=left, text~width=0.8\textwidth] at ([shift={(\sectionhoffset,0)}] current~page.center) {
+{\usebeamerfont{section~title}
+\insertsectionnumber.~
+\insertsectionhead}
+\\
+{\usebeamerfont{subsection~title}
+\insertsectionnumber.\insertsubsectionnumber.~
+\insertsubsectionhead}
+};
+\end{tikzpicture}
+}
+}
+\defbeamertemplate{subsection~frame}{gotham~progressvert}{
+\setbeamertemplate{background~canvas}[subsection/gotham]
+\setlength{\sectionhoffset}{1cm}
+\setbeamertemplate{subsection~page}[gotham~progressvert]
+ % \usebeamertemplate*{subsection~page}% activated automatically
+}
+
+\defbeamertemplate{subsubsection~page}{gotham~progressvert}{
+\ifx\beamer@frametitle\@empty
+\vspace*{-0.05\paperheight}
+\else %}{
+\vspace*{-0.165\paperheight}
+\fi %}
+\setlength{\gotham@progressonsectionpage}{
+\paperheight * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}
+}
+{
+\usebeamercolor{frametitle}\colorlet{gotham@@tempColor}{bg}
+\colorlet{gotham@@tempColorB}{fg}
+\begin{tikzpicture}[overlay, remember~picture]
+\fill[color=gotham@@tempColor]
+([shift={(0,0)}] current~page.north~west) --
+([shift={(0,-\gotham@progressonsectionpage)}] current~page.north~west) --
+([shift={(0,-\gotham@progressonsectionpage)}] current~page.north~east) --
+([shift={(0,0)}] current~page.north~east)
+--cycle;
+\node[color=gotham@@tempColorB, align=left, text~width=0.8\textwidth] at ([shift={(\sectionhoffset,0)}] current~page.center) {
+{\usebeamerfont{section~title}
+\insertsectionnumber.~
+\insertsectionhead}
+\\
+{\usebeamerfont{subsection~title}
+\insertsectionnumber.\insertsubsectionnumber.~
+\insertsubsectionhead}
+\\
+{\usebeamerfont{subsubsection~title}
+\insertsectionnumber.\insertsubsectionnumber.\insertsubsubsectionnumber.~
+\insertsubsubsectionhead}
+};
+
+\clip
+([shift={(0,0)}] current~page.south~west) --
+([shift={(0,\paperheight-\gotham@progressonsectionpage)}] current~page.south~west) --
+([shift={(0,\paperheight-\gotham@progressonsectionpage)}] current~page.south~east) --
+([shift={(0,0)}] current~page.south~east)
+--cycle;
+
+\fill[color=gotham@@tempColorB]
+([shift={(0,0)}]current~page.south~west) --
+([shift={(0,\paperheight-\gotham@progressonsectionpage)}] current~page.south~west) --
+([shift={(0,\paperheight-\gotham@progressonsectionpage)}] current~page.south~east) --
+([shift={(0,0)}] current~page.south~east)
+--cycle;
+\node[color=gotham@@tempColor, align=left, text~width=0.8\textwidth] at ([shift={(\sectionhoffset,0)}] current~page.center) {
+{\usebeamerfont{section~title}
+\insertsectionnumber.~
+\insertsectionhead}
+\\
+{\usebeamerfont{subsection~title}
+\insertsectionnumber.\insertsubsectionnumber.~
+\insertsubsectionhead}
+\\
+{\usebeamerfont{subsubsection~title}
+\insertsectionnumber.\insertsubsectionnumber.\insertsubsubsectionnumber.~
+\insertsubsubsectionhead}
+};
+\end{tikzpicture}
+}
+}
+\defbeamertemplate{subsubsection~frame}{gotham~progressvert}{
+\setbeamertemplate{background~canvas}[subsubsection/gotham]
+\setlength{\sectionhoffset}{1cm}
+\setbeamertemplate{subsubsection~page}[gotham~progressvert]
+ % \usebeamertemplate*{subsubsection~page}% activated automatically
+}
+
+%%%%
+\keys_define:nn { gotham / inner }{
+partframe~template .usage:n = { general },
+partframe~template .default:n = { gotham~progressbar },
+partframe~template .code:n = { \__gotham_set_template:nn{part~frame}{#1} }
+}
+\keys_define:nn { gotham / inner }
+{
+partframe~default .choice:,
+partframe~default .usage:n = { general },
+partframe~default .default:n = { true },
+
+partframe~default / true .code:n = { \__gotham_inner_enable_partpage: },
+partframe~default / on .code:n = { \__gotham_inner_enable_partpage: },
+partframe~default / enable .code:n = { \__gotham_inner_enable_partpage: },
+
+partframe~default / false .code:n = { \__gotham_inner_disable_partpage: },
+partframe~default / off .code:n = { \__gotham_inner_disable_partpage: },
+partframe~default / disable .code:n = { \__gotham_inner_disable_partpage: },
+
+partframe~default / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'partframe~default',~so~being~ignored. }{helping~message: partframe~default / unknown} },
+}
+
+\keys_define:nn { gotham / inner }{
+sectionframe~template .usage:n = { general },
+sectionframe~template .default:n = { gotham~progressbar },
+sectionframe~template .code:n = { \__gotham_set_template:nn{section~frame}{#1} }
+}
+\keys_define:nn { gotham / inner }
+{
+sectionframe~default .choice:,
+sectionframe~default .usage:n = { general },
+sectionframe~default .default:n = { true },
+
+sectionframe~default / true .code:n = { \__gotham_inner_enable_sectionpage: },
+sectionframe~default / on .code:n = { \__gotham_inner_enable_sectionpage: },
+sectionframe~default / enable .code:n = { \__gotham_inner_enable_sectionpage: },
+
+sectionframe~default / false .code:n = { \__gotham_inner_disable_sectionpage: },
+sectionframe~default / off .code:n = { \__gotham_inner_disable_sectionpage: },
+sectionframe~default / disable .code:n = { \__gotham_inner_disable_sectionpage: },
+
+sectionframe~default / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'sectionframe~default',~so~being~ignored. }{helping~message: sectionframe~default / unknown} },
+}
+
+\keys_define:nn { gotham / inner }{
+subsectionframe~template .usage:n = { general },
+subsectionframe~template .default:n = { gotham~progressbar },
+subsectionframe~template .code:n = { \__gotham_set_template:nn{subsection~frame}{#1} }
+}
+\keys_define:nn { gotham / inner }
+{
+subsectionframe~default .choice:,
+subsectionframe~default .usage:n = { general },
+subsectionframe~default .default:n = { true },
+
+subsectionframe~default / true .code:n = { \__gotham_inner_enable_subsectionpage: },
+subsectionframe~default / on .code:n = { \__gotham_inner_enable_subsectionpage: },
+subsectionframe~default / enable .code:n = { \__gotham_inner_enable_subsectionpage: },
+
+subsectionframe~default / false .code:n = { \__gotham_inner_disable_subsectionpage: },
+subsectionframe~default / off .code:n = { \__gotham_inner_disable_subsectionpage: },
+subsectionframe~default / disable .code:n = { \__gotham_inner_disable_subsectionpage: },
+
+subsectionframe~default / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'subsectionframe~default',~so~being~ignored. }{helping~message: subsectionframe~default / unknown} },
+}
+
+\keys_define:nn { gotham / inner }{
+subsubsectionframe~template .usage:n = { general },
+subsubsectionframe~template .default:n = { gotham~progressbar },
+subsubsectionframe~template .code:n = { \__gotham_set_template:nn{subsubsection~frame}{#1} }
+}
+\keys_define:nn { gotham / inner }
+{
+subsubsectionframe~default .choice:,
+subsubsectionframe~default .usage:n = { general },
+subsubsectionframe~default .default:n = { true },
+
+subsubsectionframe~default / true .code:n = { \__gotham_inner_enable_subsubsectionpage: },
+subsubsectionframe~default / on .code:n = { \__gotham_inner_enable_subsubsectionpage: },
+subsubsectionframe~default / enable .code:n = { \__gotham_inner_enable_subsubsectionpage: },
+
+subsubsectionframe~default / false .code:n = { \__gotham_inner_disable_subsubsectionpage: },
+subsubsectionframe~default / off .code:n = { \__gotham_inner_disable_subsubsectionpage: },
+subsubsectionframe~default / disable .code:n = { \__gotham_inner_disable_subsubsectionpage: },
+
+subsubsectionframe~default / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'subsubsectionframe~default',~so~being~ignored. }{helping~message: subsubsectionframe~default / unknown} },
+}
+
+%%%% Table of Content %%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\tikzset{section~number/.style={
+circle,
+fill=colorAlert,
+minimum~size=0.4em,
+text=colorAlert!10,
+inner~sep=1.5pt,
+},
+section/.style={
+draw=none,
+rectangle,
+minimum~height=1em,
+minimum~width=0.8\textwidth,
+text~width=0.8\textwidth,
+text=fg,
+align=left
+},
+subsection~number/.style={
+circle,
+fill=colorBackElement!50,
+inner~sep=0pt,
+minimum~size=0.15cm,
+},
+subsection/.style={
+draw=none,
+rectangle,
+minimum~height=1em,
+minimum~width=0.8\textwidth,
+text~width=0.8\textwidth,
+text=fg!80,
+align=left
+},
+subsubsection~number/.style={
+circle,
+fill=colorBackElement!50,
+inner~sep=0pt,
+minimum~size=0.06cm,
+},
+subsubsection/.style={
+draw=none,
+rectangle,
+minimum~height=1em,
+minimum~width=0.8\textwidth,
+text~width=0.8\textwidth,
+text=fg!80,
+align=left
+},
+}
+
+\defbeamertemplate{section~in~toc}{gotham~bullet}{
+\hspace*{0.4cm}\tikz[baseline=-0.5ex]\node[section~number]{\textbf{\small\inserttocsectionnumber}};
+\ \tikz[baseline=-0.5ex]\node[section]{\usebeamerfont*{toc~title} \inserttocsection};\\[-0.35cm]
+\hspace*{1.13cm}{\usebeamercolor*[fg]{footer} \rule{0.6\paperwidth}{0.2pt}\\\nointerlineskip}
+}
+\defbeamertemplate{subsection~in~toc}{gotham~bullet}{
+\hspace*{0.53cm}\tikz[baseline=-0.5ex]\node[subsection~number]{};
+\hspace*{0.5cm}\tikz[baseline=-0.5ex]\node[subsection]{\usebeamerfont*{toc~subtitle}\inserttocsubsection};\\[-0.2cm]
+}
+\defbeamertemplate{subsubsection~in~toc}{gotham~bullet}{
+\hspace*{0.58cm}\tikz[baseline=-0.5ex]\node[subsubsection~number]{};
+\hspace*{0.69cm}\tikz[baseline=-0.5ex]\node[subsubsection]{\usebeamerfont*{toc~subtitle}\inserttocsubsubsection};\\[-0.2cm]
+}
+\defbeamertemplate{section~in~toc~shaded}{gotham~bullet}{
+\hspace*{0.4cm}\tikz[baseline=-0.5ex]\node[section~number, fill=colorBackElement!40, text=background]{\usebeamerfont*{toc~subtitle}\textbf{\inserttocsectionnumber}};
+\ \tikz[baseline=-0.5ex]\node[section, text=colorExample!20]{\usebeamerfont*{toc~title} \inserttocsection};\\[-0.35cm]
+\hspace*{1.3cm}{\usebeamercolor*[fg]{footer} \rule{0.6\paperwidth}{0.2pt}\\\nointerlineskip}
+}
+\defbeamertemplate{subsection~in~toc~shaded}{gotham~bullet}{
+\hspace*{0.55cm}\tikz[baseline=-0.5ex]\node[subsection~number,fill=colorBackElement!20]{};
+\hspace*{0.5cm}\tikz[baseline=-0.5ex]\node[subsection, text=colorBackElement!20]{};\\[-0.2cm]
+}
+\defbeamertemplate{subsubsection~in~toc~shaded}{gotham~bullet}{
+\hspace*{0.58cm}\tikz[baseline=-0.5ex]\node[subsubsection~number,fill=colorBackElement!20]{};
+\hspace*{0.69cm}\tikz[baseline=-0.5ex]\node[subsubsection,text=colorBackElement!20]{\usebeamerfont*{toc~subtitle}\inserttocsubsubsection};\\[-0.2cm]
+}
+
+\defbeamertemplate{part~in~toc}{gotham~simple}{
+{{\inserttocpartnumber}.}~\inserttocpart
+\\
+}
+\defbeamertemplate{section~in~toc}{gotham~simple}{
+{{\inserttocsectionnumber}.}~\inserttocsection
+\\
+}
+\defbeamertemplate{subsection~in~toc}{gotham~simple}{
+\quad{{\inserttocsectionnumber}.\inserttocsubsectionnumber.}~\inserttocsubsection
+\\
+}
+\defbeamertemplate{subsubsection~in~toc}{gotham~simple}{
+\qquad{{\inserttocsectionnumber}.\inserttocsubsectionnumber.\inserttocsubsubsectionnumber.}~\inserttocsubsubsection
+\\
+}
+
+\defbeamertemplate{background~canvas}{toc/gotham~simple}{
+\ifbeamercolorempty[bg]{standin}{}{
+\color{bg}\vrule width\paperwidth height\paperheight
+}
+}
+\defbeamertemplate{toc~page}{gotham~simple}{
+\setbeamertemplate{part~in~toc}[gotham~simple]
+\setbeamertemplate{section~in~toc}[gotham~simple]
+\setbeamertemplate{subsection~in~toc}[gotham~simple]
+\setbeamertemplate{subsubsection~in~toc}[gotham~simple]
+\setbeamertemplate{background~canvas}[toc/gotham~simple]
+}
+\defbeamertemplate{toc~page}{gotham~bullet}{
+\setbeamertemplate{part~in~toc}[gotham~bullet]
+\setbeamertemplate{section~in~toc}[gotham~bullet]
+\setbeamertemplate{subsection~in~toc}[gotham~bullet]
+\setbeamertemplate{subsubsection~in~toc}[gotham~bullet]
+\setbeamertemplate{background~canvas}[toc/gotham~simple]
+}
+
+%%%%%%
+\newenvironment{tocenv}{
+\usebeamertemplate{toc~page}
+}{}
+\__gotham_add_beamerframe_key:n {toc}
+
+\defbeamertemplate{background~canvas}{toc~part~gotham}{
+\ifbeamercolorempty[bg]{normal~text}{}{\color{bg}\vrule width\paperwidth height\paperheight}
+}
+\defbeamertemplate{background~canvas}{toc~section~gotham}{
+\ifbeamercolorempty[bg]{normal~text}{}{\color{bg}\vrule width\paperwidth height\paperheight}
+}
+\defbeamertemplate{background~canvas}{toc~subsection~gotham}{
+\ifbeamercolorempty[bg]{normal~text}{}{\color{bg}\vrule width\paperwidth height\paperheight}
+}
+
+\defbeamertemplate{toc~part~frame}{gotham~simple}{
+\setbeamertemplate{part~in~toc}[gotham~simple]
+\setbeamertemplate{section~in~toc}[gotham~simple]
+\setbeamertemplate{subsection~in~toc}[gotham~simple]
+\setbeamertemplate{subsubsection~in~toc}[gotham~simple]
+\setbeamertemplate{background~canvas}[toc~part~gotham]
+\setbeamertemplate{frametitle}[toc~gotham]
+}
+\defbeamertemplate{toc~section~frame}{gotham~simple}{
+\setbeamertemplate{part~in~toc}[gotham~simple]
+\setbeamertemplate{section~in~toc}[gotham~simple]
+\setbeamertemplate{subsection~in~toc}[gotham~simple]
+\setbeamertemplate{subsubsection~in~toc}[gotham~simple]
+\setbeamertemplate{background~canvas}[toc~section~gotham]
+\setbeamertemplate{frametitle}[toc~gotham]%
+}
+\defbeamertemplate{toc~subsection~frame}{gotham~simple}{
+\setbeamertemplate{part~in~toc}[gotham~simple]
+\setbeamertemplate{section~in~toc}[gotham~simple]
+\setbeamertemplate{subsection~in~toc}[gotham~simple]
+\setbeamertemplate{subsubsection~in~toc}[gotham~simple]
+\setbeamertemplate{background~canvas}[toc~subsection~gotham]
+\setbeamertemplate{frametitle}[toc~gotham]
+}
+
+\defbeamertemplate{toc~part~frame}{gotham~bullet}{
+\setbeamertemplate{part~in~toc}[gotham~bullet]
+\setbeamertemplate{section~in~toc}[gotham~bullet]
+\setbeamertemplate{subsection~in~toc}[gotham~bullet]
+\setbeamertemplate{subsubsection~in~toc}[gotham~bullet]
+\setbeamertemplate{background~canvas}[toc~part~gotham]
+\setbeamertemplate{frametitle}[toc~gotham]
+}
+\defbeamertemplate{toc~section~frame}{gotham~bullet}{
+\setbeamertemplate{part~in~toc}[gotham~bullet]
+\setbeamertemplate{section~in~toc}[gotham~bullet]
+\setbeamertemplate{subsection~in~toc}[gotham~bullet]
+\setbeamertemplate{subsubsection~in~toc}[gotham~bullet]
+\setbeamertemplate{background~canvas}[toc~section~gotham]
+\setbeamertemplate{frametitle}[toc~gotham]%
+}
+\defbeamertemplate{toc~subsection~frame}{gotham~bullet}{
+\setbeamertemplate{part~in~toc}[gotham~bullet]
+\setbeamertemplate{section~in~toc}[gotham~bullet]
+\setbeamertemplate{subsection~in~toc}[gotham~bullet]
+\setbeamertemplate{subsubsection~in~toc}[gotham~bullet]
+\setbeamertemplate{background~canvas}[toc~subsection~gotham]
+\setbeamertemplate{frametitle}[toc~gotham]
+}
+
+%%%%%%
+\bool_new:N \l_gotham_tocpartframe
+\bool_set_false:N \l_gotham_tocpartframe
+\define@key{beamerframe}{tocpart}[true]{
+\bool_set_true:N \l_gotham_tocpartframe
+\begingroup
+\usebeamertemplate{toc~part~frame}
+}
+\apptocmd{\beamer@reseteecodes}{
+\bool_if:NTF \l_gotham_tocpartframe {
+\endgroup
+\bool_set_false:N \l_gotham_tocpartframe
+}{}
+}{}{}
+
+%%%%%%
+\bool_new:N \l_gotham_tocsectionframe
+\bool_set_false:N \l_gotham_tocsectionframe
+\define@key{beamerframe}{tocsec}[true]{
+\bool_set_true:N \l_gotham_tocsectionframe
+\begingroup
+\usebeamertemplate{toc~section~frame}
+}
+\apptocmd{\beamer@reseteecodes}{
+\bool_if:NTF \l_gotham_tocsectionframe {
+\endgroup
+\bool_set_false:N \l_gotham_tocsectionframe
+}{}
+}{}{}
+
+%%%%%%
+\bool_new:N \l_gotham_tocsubsectionframe
+\bool_set_false:N \l_gotham_tocsubsectionframe
+\define@key{beamerframe}{tocsubsec}[true]{
+\bool_set_true:N \l_gotham_tocsubsectionframe
+\begingroup
+\usebeamertemplate{toc~subsection~frame}
+}
+\apptocmd{\beamer@reseteecodes}{
+\bool_if:NTF \l_gotham_tocsubsectionframe {
+\endgroup
+\bool_set_false:N \l_gotham_tocsubsectionframe
+}{}
+}{}{}
+
+%%%%%%
+\bool_new:N \l_gotham_tocsubsubsectionframe
+\bool_set_false:N \l_gotham_tocsubsubsectionframe
+\define@key{beamerframe}{tocsubsubsec}[true]{
+\bool_set_true:N \l_gotham_tocsubsubsectionframe
+\begingroup
+\usebeamertemplate{toc~subsubsection~frame}
+}
+\apptocmd{\beamer@reseteecodes}{
+\bool_if:NTF \l_gotham_tocsubsubsectionframe {
+\endgroup
+\bool_set_false:N \l_gotham_tocsubsubsectionframe
+}{}
+}{}{}
+
+%%%%
+\keys_define:nn { gotham / inner }
+{
+tocframe~template .usage:n = { general },
+tocframe~template .default:n = { gotham~bullet },
+tocframe~template .code:n = { \__gotham_set_template:nn{toc~page}{#1} }
+}
+
+\keys_define:nn { gotham / inner }{
+parttocframe~template .usage:n = { general },
+parttocframe~template .default:n = { gotham~simple },
+parttocframe~template .code:n = { \__gotham_set_template:nn{toc~part~frame}{#1} }
+}
+\keys_define:nn { gotham / inner }
+{
+parttocframe~default .choice:,
+parttocframe~default .usage:n = { general },
+parttocframe~default .default:n = { true },
+
+parttocframe~default / true .code:n = { \booltrue{partContent} },
+parttocframe~default / on .code:n = { \booltrue{partContent} },
+parttocframe~default / enable .code:n = { \booltrue{partContent} },
+
+parttocframe~default / false .code:n = { \boolfalse{partContent} },
+parttocframe~default / off .code:n = { \boolfalse{partContent} },
+parttocframe~default / disable .code:n = { \boolfalse{partContent} },
+
+parttocframe~default / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'parttocframe~default',~so~being~ignored. }{helping~message: parttocframe~default / unknown} },
+}
+
+\keys_define:nn { gotham / inner }{
+sectiontocframe~template .usage:n = { general },
+sectiontocframe~template .default:n = { gotham~simple },
+sectiontocframe~template .code:n = { \__gotham_set_template:nn{toc~section~frame}{#1} }
+}
+\keys_define:nn { gotham / inner }
+{
+sectiontocframe~default .choice:,
+sectiontocframe~default .usage:n = { general },
+sectiontocframe~default .default:n = { true },
+
+sectiontocframe~default / true .code:n = { \booltrue{sectionContent} },
+sectiontocframe~default / on .code:n = { \booltrue{sectionContent} },
+sectiontocframe~default / enable .code:n = { \booltrue{sectionContent} },
+
+sectiontocframe~default / false .code:n = { \boolfalse{sectionContent} },
+sectiontocframe~default / off .code:n = { \boolfalse{sectionContent} },
+sectiontocframe~default / disable .code:n = { \boolfalse{sectionContent} },
+
+sectiontocframe~default / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'sectiontocframe~default',~so~being~ignored. }{helping~message: sectiontocframe~default / unknown} },
+}
+
+\keys_define:nn { gotham / inner }{
+subsectiontocframe~template .usage:n = { general },
+subsectiontocframe~template .default:n = { gotham~simple },
+subsectiontocframe~template .code:n = { \__gotham_set_template:nn{toc~subsection~frame}{#1} }
+}
+\keys_define:nn { gotham / inner }
+{
+subsectiontocframe~default .choice:,
+subsectiontocframe~default .usage:n = { general },
+subsectiontocframe~default .default:n = { true },
+
+subsectiontocframe~default / true .code:n = { \booltrue{subsectionContent} },
+subsectiontocframe~default / on .code:n = { \booltrue{subsectionContent} },
+subsectiontocframe~default / enable .code:n = { \booltrue{subsectionContent} },
+
+subsectiontocframe~default / false .code:n = { \boolfalse{subsectionContent} },
+subsectiontocframe~default / off .code:n = { \boolfalse{subsectionContent} },
+subsectiontocframe~default / disable .code:n = { \boolfalse{subsectionContent} },
+
+subsectiontocframe~default / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'subsectiontocframe~default',~so~being~ignored. }{helping~message: subsectiontocframe~default / unknown} },
+}
+
+%% Environments styles %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newlength{\gotham@blocksep}
+\newlength{\gotham@blockadjust}
+\setlength{\gotham@blocksep}{0.75ex}
+\setlength{\gotham@blockadjust}{0.25ex}
+\providecommand{\gotham@strut}{
+\vphantom{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz (/)}
+}
+
+\newlength{\gotham@parskip}
+\setlength{\gotham@parskip}{0.5em}
+\setlength{\parskip}{\gotham@parskip}
+\linespread{1.15}
+
+\providecommand{\gotham@block}[1]{
+\par\vskip\medskipamount
+\setlength{\parskip}{0pt}
+
+\ifbeamercolorempty[bg]{block~title#1}{%
+\begin{beamercolorbox}[rightskip=0pt~plus~4em]{block~title#1}
+}{
+\ifbeamercolorempty[bg]{block~title}{
+\begin{beamercolorbox}[rightskip=0pt~plus~4em]{block~title#1}
+}
+{
+\begin{beamercolorbox}[
+sep=\dimexpr\gotham@blocksep-\gotham@blockadjust\relax,
+leftskip=\gotham@blockadjust,
+rightskip=\dimexpr\gotham@blockadjust~plus~4em\relax,
+]{block~title#1}
+}
+}
+\usebeamerfont*{block~title#1}
+\gotham@strut
+\insertblocktitle
+\gotham@strut
+\end{beamercolorbox}
+\nointerlineskip
+\ifbeamercolorempty[bg]{block~body#1}{
+\begin{beamercolorbox}[vmode]{block~body#1}
+}{
+\ifbeamercolorempty[bg]{block~body}{
+\begin{beamercolorbox}[vmode]{block~body#1}
+}{
+\begin{beamercolorbox}[sep=\gotham@blocksep, vmode]{block~body#1}
+\vspace{-\gotham@parskip}
+}
+}
+\usebeamerfont{block~body#1}
+\setlength{\parskip}{\gotham@parskip}
+}
+
+%%%%
+
+%%%%
+\defbeamertemplate*{itemize~item}{gotham}{%\textbullet}
+\large
+\setbeamertemplate{itemize~item}[circle]
+\usebeamertemplate{itemize~item}
+}
+\defbeamertemplate*{itemize~subitem}{gotham}{%$\blacktriangleright$
+\scriptsize
+\setbeamertemplate{itemize~subitem}[triangle]
+\usebeamertemplate{itemize~subitem}
+}
+\defbeamertemplate*{itemize~subsubitem}{gotham}{%square or -
+\Tiny
+$\blacksquare$ % \textbf{-}
+}
+
+%% TRY: enumitem package, enumitem and beamer are incompatible.
+%% I tried to redefine everything to make them compatible, but it breaks the [alert] environment... So, I gave up.
+
+
+%%%%%%
+\defbeamertemplate*{caption~label~separator}{gotham}{:~}
+\setbeamertemplate{caption}[numbered]
+\defbeamertemplate*{footnote}{gotham}{
+\parindent~0em\noindent
+\raggedright
+\usebeamercolor{footnote}\hbox~to~0.8em{\hfil\insertfootnotemark}\insertfootnotetext\par
+}
+
+\keys_set:nn { gotham / inner } {
+title~page,
+watermark~template, watermark~default,
+standout~template, standin~template,
+partframe~template, partframe~default,
+sectionframe~template, sectionframe~default,
+subsectionframe~template, subsectionframe~default,
+subsubsectionframe~template, subsubsectionframe~default,
+tocframe~template,
+parttocframe~template, parttocframe~default,
+sectiontocframe~template, sectiontocframe~default,
+subsectiontocframe~template, subsectiontocframe~default,
+}
+
+\ProcessKeyOptions[ gotham / inner ]
+
+%%
+%% Adapted from classic "A model .dtx file" by Joseph Wright
+%% https://www.texdev.net/2009/10/06/a-model-dtx-file/
+%%
+%% End of file `beamerinnerthemegotham.sty'.
diff --git a/Master/texmf-dist/tex/latex/beamertheme-gotham/beamerouterthemegotham.sty b/Master/texmf-dist/tex/latex/beamertheme-gotham/beamerouterthemegotham.sty
new file mode 100644
index 00000000000..dea71d04226
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/beamertheme-gotham/beamerouterthemegotham.sty
@@ -0,0 +1,2182 @@
+%%
+%% This is file `beamerouterthemegotham.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% gotham.dtx (with options: `outer')
+%%
+%% Copyright (C) 2023-20** by Romain NOËL <romainoel@free.fr>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Romain NOËL.
+%% Contributors: Romain NOËL (2023-20**)
+%%
+\ProvidesExplPackage{beamerouterthemegotham}{2024-11-11}{1.2.0.a}{gotham outer theme}
+\RequirePackage{expl3}
+\RequirePackage{xfp}
+\RequirePackage{calc}
+\RequirePackage{tikz}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%% OUTER %%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\@ifundefined{\string\color@colorProgBar}{
+\providebool{darkBG} \boolfalse{darkBG}
+\providebool{transparentBG} \booltrue{transparentBG}
+\colorlet{colorBG}{white}
+\colorlet{colorFG}{black}
+\colorlet{colorFrametitle}{purple}
+\colorlet{colorStandout}{purple}
+\colorlet{colorStandin}{purple}
+\colorlet{colorTitlepage}{purple}
+\colorlet{colorFiligrane}{gray}
+\colorlet{colorBackElement}{gray}
+\colorlet{colorProgBar}{orange}
+\colorlet{colorAlert}{red}
+\colorlet{colorExample}{green}
+\setbeamercolor{progress~bar}{
+use=alerted~text,
+fg=colorProgBar,
+bg=alerted~text.fg!50!black!30
+}
+\setbeamercolor{progress~bar~in~head/foot}{%
+use=progress~bar,
+parent=progress~bar
+}
+\setbeamercolor{progress~bar~in~part~page}{
+use=progress~bar,
+parent=progress~bar
+}
+\setbeamercolor{progress~bar~in~section~page}{
+use=progress~bar,
+parent=progress~bar
+}
+\setbeamercolor{progress~bar~in~splitvert}{
+use=progress~bar,
+parent=progress~bar
+}
+\setbeamercolor{frametitleSection}{use=primary~palette, bg=, fg=primary~palette.bg}
+\setbeamercolor{standout}{use=primary~palette, bg=colorStandout, fg=primary~palette.bg}
+\setbeamercolor{standin}{use=normal~text, bg=colorStandin, fg=normal~text.fg}
+\setbeamercolor{section~in~toc}{use=normal~text, parent=normal~text,}
+\setbeamercolor{subsection~in~toc}{use=normal~text, parent=normal~text,}
+\setbeamercolor{subsubsection~in~toc}{use=normal~text, parent=normal~text,}
+}{
+}
+
+%%%%%%
+\prop_if_exist:NTF \l__gotham_template_name_prop
+{}{
+\prop_new:N \l__gotham_template_name_prop
+}
+
+\seq_if_exist:NTF \l__gotham_tmpa_seq
+{}{
+\seq_new:N \l__gotham_tmpa_seq
+}
+\tl_if_exist:NTF \l__gotham_tmpa_tl
+{}{
+\tl_new:N \l__gotham_tmpa_tl
+}
+\tl_if_exist:NTF \l__gotham_tmpb_tl
+{}{
+\tl_new:N \l__gotham_tmpb_tl
+}
+
+\cs_if_exist:NTF \__gotham_set_prop_template:nn {}{
+\cs_new_protected:Nn \__gotham_set_prop_template:nn
+{
+\tl_if_in:nnTF { #1 } { / }
+{
+\seq_set_split:Nnn \l__gotham_tmpa_seq { / } { #1 }
+\tl_set:Nn \l__gotham_tmpa_tl { \seq_item:Nn \l__gotham_tmpa_seq { 1 } }
+\tl_set:Nn \l__gotham_tmpb_tl { \seq_item:Nn \l__gotham_tmpa_seq { 2 } }
+\cs_if_exist:cTF {beamer@@tmpop@\exp_not:V \l__gotham_tmpa_tl @\exp_not:V \l__gotham_tmpb_tl /#2} {
+\prop_put:Nnn \l__gotham_template_name_prop {#1} {#2}
+}{
+\PackageError{beamerthemegotham}
+{The~beamer~template~named~'\l__gotham_tmpa_tl'~with~the~option~'\l__gotham_tmpb_tl/#2'~does~not~exist}
+{helping~message}
+}
+}{% false -> error
+\PackageError{beamerthemegotham}
+{
+When~using~'\c_backslash_str\cs_to_str:N \__gotham_set_prop_template'~the~first~argument~should~contain~a~'/'~to~respect~the~naming~convention~used~(Template/what/Who~name),~but~you~gave~'#1'.~
+As~example:~if~'\c_backslash_str defbeamertemplate{background}{watermark/gotham~draft}'...,~then~use~'\c_backslash_str\cs_to_str:N \__gotham_set_prop_template{background/watermark}{gotham~draft}'
+}{helping~message}
+}
+}
+}
+
+\seq_if_exist:NTF \l__gotham_frameoption_tmp_seq {}{
+\seq_new:N \l__gotham_frameoption_tmp_seq
+}
+
+\cs_if_exist:NTF \__gotham_add_beamerframe_key:n {}{
+
+\cs_new_protected:Nn \__gotham_add_beamerframe_key:n {
+\define@key{beamerframe}{ #1 }[true]{
+\begin{#1env}
+\seq_put_left:Nn \l__gotham_frameoption_tmp_seq { \end{#1env} }
+}
+}
+
+\apptocmd{\beamer@reseteecodes}{
+\seq_use:Nn \l__gotham_frameoption_tmp_seq {}
+\seq_clear:N \l__gotham_frameoption_tmp_seq
+}{}{}
+}
+
+%%%%%%
+\cs_if_exist:NTF \__gotham_set_template:nn {}{
+
+\cs_new_protected:Nn \__gotham_set_template:nn
+{
+\cs_if_exist:cTF {beamer@@tmpop@#1@#2} {
+\setbeamertemplate{#1}[#2]
+}{
+\PackageError{beamerinnerthemegotham}
+{The~beamer~template~named~'#1'~with~the~option~'#2'~does~not~exist}
+{helping~message unknown setbeamertemplate option}
+}
+}
+}
+
+%%% Sidebars %%%
+%%%%%%%%%%%%%%%%
+
+%%%%%%
+\newlength{\sidebarRightHOffset}
+\setlength{\sidebarRightHOffset}{-2.5ex}
+\newlength{\sidebarLeftHOffset}
+\setlength{\sidebarLeftHOffset}{+0.5ex}
+
+%%%%%%
+\providecommand{\gothamRightFiligrane}{
+}
+\providecommand{\gothamLeftFiligrane}{
+}
+
+\defbeamertemplate{sidebar~right}{default/beamer}{
+\vfill
+\llap{\insertlogo\hskip0.1cm}
+\vskip2pt
+\llap{\usebeamertemplate***{navigation~symbols}\hskip0.1cm}
+\vskip2pt
+}
+\defbeamertemplate{sidebar~right}{default/empty}{}
+\defbeamertemplate{sidebar~canvas~right}{default/empty}{}
+\defbeamertemplate{sidebar~canvas~right}{default/gotham~filigrane}{
+\hspace*{\sidebarRightHOffset}
+\gothamRightFiligrane
+}
+\defbeamertemplate{sidebar~left}{default/empty}{}
+\defbeamertemplate{sidebar~canvas~left}{default/empty}{}
+\defbeamertemplate{sidebar~canvas~left}{default/gotham~filigrane}{
+\hspace*{\sidebarLeftHOffset}
+\gothamLeftFiligrane
+}
+\prop_put:Nnn \l__gotham_template_name_prop {sidebar~canvas~left/default} {gotham~filigrane}
+\prop_put:Nnn \l__gotham_template_name_prop {sidebar~canvas~right/default} {gotham~filigrane}
+\prop_put:Nnn \l__gotham_template_name_prop {sidebar~left/default} {empty}
+\prop_put:Nnn \l__gotham_template_name_prop {sidebar~right/default} {beamer}
+
+%%%%%%
+\bool_new:N \l_gotham_defaultEdging
+\bool_set_false:N \l_gotham_defaultEdging
+\BeforeBeginEnvironment{frame}{
+\bool_if:NTF \l_gotham_defaultEdging {
+\setbeamertemplate{sidebar~canvas~left}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~canvas~left/default}]
+\setbeamertemplate{sidebar~canvas~right}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~canvas~right/default}]
+}{
+\setbeamertemplate{sidebar~canvas~left}[default/empty]
+\setbeamertemplate{sidebar~canvas~right}[default/empty]
+}
+}
+
+%%%%%%
+\newenvironment{edgingenv}{
+\setbeamertemplate{sidebar~canvas~left}[
+default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~canvas~left/default}
+]
+\setbeamertemplate{sidebar~canvas~right}[
+default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~canvas~right/default}
+]
+}{}
+\__gotham_add_beamerframe_key:n {edging}
+
+%%%%%%
+\newenvironment{noedgingenv}{
+\setbeamertemplate{sidebar~canvas~left}[default/empty]
+\setbeamertemplate{sidebar~canvas~right}[default/empty]
+}{}
+\__gotham_add_beamerframe_key:n {noedging}
+
+%%%%
+\keys_define:nn { gotham / outer }
+{
+sidebar~canvas~right~template .usage:n = { general },
+sidebar~canvas~right~template .default:n = { gotham~filigrane },
+sidebar~canvas~right~template .code:n = { \__gotham_set_prop_template:nn{sidebar~canvas~right/default}{#1} },
+}
+\keys_define:nn { gotham / outer }
+{
+sidebar~canvas~left~template .usage:n = { general },
+sidebar~canvas~left~template .default:n = { gotham~filigrane },
+sidebar~canvas~left~template .code:n = { \__gotham_set_prop_template:nn{sidebar~canvas~left/default}{#1} },
+}
+\keys_define:nn { gotham / outer }{
+edging~default .choice:,
+edging~default .usage:n = { general },
+edging~default .default:n = { false },
+
+edging~default / true .code:n = { \bool_set_true:N \l_gotham_defaultEdging },
+edging~default / on .code:n = { \bool_set_true:N \l_gotham_defaultEdging },
+edging~default / enable .code:n = { \bool_set_true:N \l_gotham_defaultEdging },
+
+edging~default / false .code:n = { \bool_set_false:N \l_gotham_defaultEdging },
+edging~default / off .code:n = { \bool_set_false:N \l_gotham_defaultEdging },
+edging~default / disable .code:n = { \bool_set_false:N \l_gotham_defaultEdging },
+
+edging~default / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'edging~default',~so~being~ignored. }{helping~message: edging~default / unknown} },
+}
+
+%%% Navigation \& Logo %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%
+\defbeamertemplate*{navigation~symbols}{empty}{}
+
+%%%%%%
+
+\defbeamertemplate{logo}{empty}{}
+
+%%%%%%
+\newenvironment{nologoenv}{
+\setbeamertemplate{logo}[empty]
+}{}
+\__gotham_add_beamerframe_key:n {nologo}
+
+%%% Headline \& Frametitle %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% Headline %%%
+
+\defbeamertemplate{headline}{default/gotham}{}
+\prop_put:Nnn \l__gotham_template_name_prop {headline/default} {gotham}
+
+\defbeamertemplate{headline}{default/gotham~section}{
+\begin{beamercolorbox}[wd=1.0\paperwidth, ht=2.5ex, dp=1.4ex, left]{headfoot}
+\usebeamerfont{section~in~head/foot}\hspace*{3.5ex}
+\usebeamertemplate{section~in~head/foot}
+\end{beamercolorbox}
+}
+
+%%% Frametitle %%%
+
+%%%%%%
+\newlength{\gothamFrametitleToppading}
+\newlength{\gothamFrametitleBottompading}
+\newlength{\gothamFrametitleLeftpading}
+\newlength{\gothamFrametitleRightpading}
+\setlength{\gothamFrametitleToppading}{2.2ex}
+\setlength{\gothamFrametitleBottompading}{2.2ex}
+\setlength{\gothamFrametitleLeftpading}{2.2ex}
+\setlength{\gothamFrametitleRightpading}{2.2ex}
+\providecommand{\gotham@strut}{
+\vphantom{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz (/)}
+}
+
+\providecommand{\gotham@frametitlestrut@start}{
+\rule{0pt}{\gothamFrametitleToppading +
+\totalheightof{
+\ifcsdef{gotham@frametitleformat}{\gotham@frametitleformat{X}}{X}
+}
+}
+}
+\providecommand{\gotham@frametitlestrut@end}{
+\rule[-\gothamFrametitleBottompading]{0pt}{\gothamFrametitleBottompading}
+}
+
+%%%%%%
+\providecommand{\gothamInstituteLogoSquare}[1][4ex]{
+}
+\defbeamertemplate{includeLogo}{default/gotham~square}{
+\gothamInstituteLogoSquare
+}
+\prop_put:Nnn \l__gotham_template_name_prop {includeLogo/default} {gotham~square}
+
+\defbeamertemplate{includeLogo}{default/gotham~circle}{
+\gothamProgressCircle
+}
+
+\defbeamertemplate{instituteLogo}{default/gotham}{
+\raisebox{0pt}[0pt][0pt]{
+\raisebox{.5\fontcharht\font`E-0.5\height}{
+\setbeamertemplate{includeLogo}[default/\prop_item:Nn \l__gotham_template_name_prop {includeLogo/default}]
+\usebeamertemplate{includeLogo}
+}
+}
+}
+\prop_put:Nnn \l__gotham_template_name_prop {instituteLogo/default} {gotham}
+
+%%%%%%
+\providecommand{\gothamFrameSubtitleSep}{
+\ ---~
+}
+
+%%%%%%
+\newlength{\gothamFramesubtitleStrutend}
+\setlength{\gothamFramesubtitleStrutend}{0pt}
+
+\defbeamertemplate{frametitle}{default/gotham~subsameline}{
+\nointerlineskip
+\begin{beamercolorbox}[
+wd=\paperwidth,
+sep=0pt,
+leftskip=\gothamFrametitleLeftpading,
+rightskip=\gothamFrametitleRightpading,
+]{frametitle}
+\gotham@frametitlestrut@start
+\insertframetitle
+\ifx\insertframesubtitle\@empty
+%% if subtitle to the frame is empty
+\else
+%% if not empty: add subtitle
+{\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\gothamFrameSubtitleSep \insertframesubtitle}
+\vspace*{\gothamFramesubtitleStrutend}
+\fi
+\nolinebreak
+%% Add logo
+\hfill{
+\setbeamertemplate{instituteLogo}[default/\prop_item:Nn \l__gotham_template_name_prop {instituteLogo/default}]
+\usebeamertemplate{instituteLogo}
+}
+\gotham@frametitlestrut@end
+\end{beamercolorbox}
+}
+\prop_put:Nnn \l__gotham_template_name_prop {frametitle/default} {gotham~subsameline}
+
+\dim_new:N \l__gotham_framesubtitle_subnewline_strutend_dim
+\defbeamertemplate{framesubtitle}{default/gotham~subnewline}{
+\nointerlineskip
+\begin{beamercolorbox}[
+wd=\paperwidth,
+sep=0pt,
+leftskip=\gothamFrametitleLeftpading,
+rightskip=\gothamFrametitleRightpading,
+]{frametitle}
+\raisebox{0pt}[0pt][0pt]{
+\raisebox{-0.3ex}{
+{ \usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\insertframesubtitle}
+}
+}
+\dim_set:Nn \l__gotham_framesubtitle_subnewline_strutend_dim {1.ex+\gothamFramesubtitleStrutend}
+\vspace{\l__gotham_framesubtitle_subnewline_strutend_dim}
+\end{beamercolorbox}
+}
+\prop_put:Nnn \l__gotham_template_name_prop {framesubtitle/default} {gotham~subnewline}
+
+\defbeamertemplate{frametitle}{default/gotham~subnewline}{
+\nointerlineskip
+\begin{beamercolorbox}[
+wd=\paperwidth,
+sep=0pt,
+leftskip=\gothamFrametitleLeftpading,
+rightskip=\gothamFrametitleRightpading,
+]{frametitle}
+\gotham@frametitlestrut@start
+\insertframetitle
+\nolinebreak
+\hfill{
+\setbeamertemplate{instituteLogo}[default/\prop_item:Nn \l__gotham_template_name_prop {instituteLogo/default}]
+\usebeamertemplate{instituteLogo}
+}
+\gotham@frametitlestrut@end
+\end{beamercolorbox}
+%% End of the frametitle box, start then use the subtitle template if needed.
+\ifx\insertframesubtitle\@empty
+%% if subtitle to the frame is not empty
+\else
+\vspace*{-1pt}
+\setbeamertemplate{framesubtitle}[default/\prop_item:Nn \l__gotham_template_name_prop {framesubtitle/default}]
+\usebeamertemplate{framesubtitle}
+\fi
+}
+
+%%%%
+\keys_define:nn { gotham / outer }{
+frametitle~template .usage:n = { general },
+frametitle~template .default:n = { gotham~subsameline },
+frametitle~template .code:n = {
+\__gotham_set_prop_template:nn{frametitle/default}{#1}
+\setbeamertemplate{frametitle}[default/\prop_item:Nn \l__gotham_template_name_prop {frametitle/default}]
+}
+}
+\keys_define:nn { gotham / outer }{
+framesubtitle~template .usage:n = { general },
+framesubtitle~template .default:n = { gotham~subnewline },
+framesubtitle~template .code:n = {
+\__gotham_set_prop_template:nn{framesubtitle/default}{#1}
+\setbeamertemplate{framesubtitle}[default/\prop_item:Nn \l__gotham_template_name_prop {framesubtitle/default}]
+}
+}
+
+%%% Continuation %%%
+
+\defbeamertemplate{frametitle~continuation}{default/beamer}{
+\usebeamerfont{frametitle}
+{
+\MakeUppercase{\romannumeral \insertcontinuationcount}
+}
+}
+
+\defbeamertemplate{frametitle~continuation}{default/tot}{
+\usebeamerfont{frametitle}
+{
+\textmd{%
+[\insertcontinuationcount
+\,/\,%
+\the\numexpr\beamer@endpageofframe+1-\beamer@startpageofframe
+]%
+}%
+}
+}
+
+\defbeamertemplate{frametitle~continuation}{default/gotham}{
+\usebeamerfont{frametitle}
+{
+(\romannumeral \insertcontinuationcount)
+}
+}
+\prop_put:Nnn \l__gotham_template_name_prop {frametitle~continuation/default} {gotham}
+
+%%%%
+\keys_define:nn { gotham / outer }{
+frametitle~continuation~template .usage:n = { general },
+frametitle~continuation~template .default:n = { gotham },
+frametitle~continuation~template .code:n = {
+\__gotham_set_prop_template:nn{frametitle~continuation/default}{#1}
+\setbeamertemplate{frametitle~continuation}[default/\prop_item:Nn \l__gotham_template_name_prop {frametitle~continuation/default}]
+}
+}
+
+%%% Footer \& Footline %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% Footline %%%
+
+\defbeamertemplate{footline}{empty}{}
+
+%%%%%%
+\newenvironment{nofootlineenv}{
+\setbeamertemplate{footline}[empty]
+}{}
+\__gotham_add_beamerframe_key:n {nofootline}
+
+%%%%%%
+\newlength{\gothamFootlineVOffset}
+\newlength{\gothamFootlineHeight}
+\newlength{\gothamFootlineDepth}
+\newlength{\gothamFootlineHRightOffset}
+
+\setlength{\gothamFootlineVOffset}{-0.5ex}
+\setlength{\gothamFootlineDepth}{0.1ex}
+\setlength{\gothamFootlineHeight}{1.5ex}
+\setlength{\gothamFootlineHRightOffset}{\spaceskip}
+
+\defbeamertemplate*{footline}{default/gotham}{
+\vspace*{\gothamFootlineVOffset}
+\begin{beamercolorbox}[
+wd=\textwidth,
+sep=0pt,
+leftskip=3ex,
+rightskip=3ex,
+ht={\gothamFootlineHeight},
+dp={\gothamFootlineDepth},
+]{footline}
+\usebeamerfont{page number in head/foot}
+\ifbeamertemplateempty{frame~footer}{
+\hfill \ \gotham@strut
+}{
+\usebeamertemplate*{frame~footer}
+}
+\hspace{\gothamRightFooterPadding}
+{\usebeamertemplate{page~number~in~head/foot}}
+\hspace*{\gothamFootlineHRightOffset}
+\end{beamercolorbox}
+}
+\prop_put:Nnn \l__gotham_template_name_prop {footline/default} {gotham}
+
+%%% Footer %%%
+
+%%%%%%
+\newlength{\gothamLeftFooterPadding}
+\newlength{\gothamRightFooterPadding}
+\newlength{\gothamFooterHOffset}
+\setlength{\gothamLeftFooterPadding}{2.0ex}
+\setlength{\gothamRightFooterPadding}{3.5ex}
+\setlength{\gothamFooterHOffset}{0pt}
+
+\defbeamertemplate{frame~footer}{none}{}
+
+\defbeamertemplate{frame~footer}{empty}{
+\hspace{\gothamLeftFooterPadding}
+\hfill \
+\gotham@strut
+\vspace*{\gothamFooterHOffset}
+}
+
+%%%%%%
+\newenvironment{nofooterenv}{
+\setbeamertemplate{frame~footer}[empty]
+}{}
+\__gotham_add_beamerframe_key:n {nofooter}
+
+%%%%%%
+\bool_new:N \l_gotham_defaultRotateFooter
+\bool_set_false:N \l_gotham_defaultRotateFooter
+\bool_new:N \l_gotham_RotateFooter
+\bool_set_false:N \l_gotham_RotateFooter
+\BeforeBeginEnvironment{frame}{
+\bool_if:NTF \l_gotham_defaultRotateFooter {
+\bool_set_true:N \l_gotham_RotateFooter
+}{% false
+\bool_set_false:N \l_gotham_RotateFooter
+}
+}
+
+%%%%%%
+\define@key{beamerframe}{rotateFooter}[true]{
+\bool_set_true:N \l_gotham_RotateFooter
+}
+
+%%%%%%
+\define@key{beamerframe}{noRotateFooter}[true]{
+\bool_set_false:N \l_gotham_RotateFooter
+}
+
+%%%%
+\keys_define:nn { gotham / outer }{
+rotateFooter~default .choice:,
+rotateFooter~default .usage:n = { general },
+rotateFooter~default .default:n = { false },
+
+rotateFooter~default / true .code:n = { \bool_set_true:N \l_gotham_defaultRotateFooter },
+rotateFooter~default / on .code:n = { \bool_set_true:N \l_gotham_defaultRotateFooter },
+rotateFooter~default / enable .code:n = { \bool_set_true:N \l_gotham_defaultRotateFooter },
+
+rotateFooter~default / false .code:n = { \bool_set_false:N \l_gotham_defaultRotateFooter },
+rotateFooter~default / off .code:n = { \bool_set_false:N \l_gotham_defaultRotateFooter },
+rotateFooter~default / disable .code:n = { \bool_set_false:N \l_gotham_defaultRotateFooter },
+
+rotateFooter~default / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'rotateFooter~default',~so~being~ignored. }{helping~message: rotateFooter~default / unknown} },
+}
+
+%%%%%%
+\newlength{\gothamFootlineRuleLeftPadding}
+\newlength{\gothamFootlineRuleHeight}
+\newlength{\gothamFootlineRuleLength}
+
+\setlength{\gothamFootlineRuleLeftPadding}{7mm}
+\setlength{\gothamFootlineRuleHeight}{0.0pt}
+\setlength{\gothamFootlineRuleLength}{15mm}
+
+\newlength{\gothamHposLeftRotFooter}
+\newlength{\gothamHposRightRotFooter}
+\newlength{\gothamVposLeftRotFooter}
+\newlength{\gothamVposRightRotFooter}
+
+\setlength{\gothamHposLeftRotFooter}{-7pt}
+\setlength{\gothamHposRightRotFooter}{2pt}
+\setlength{\gothamVposLeftRotFooter}{15pt}
+\setlength{\gothamVposRightRotFooter}{15pt}
+
+\newlength{\hlenRightRotFooter}
+\newlength{\hlenLeftRotFooter}
+
+\providecommand{\gothamHookFooter}{}
+\defbeamertemplate{frame~footer}{default/gotham}{
+%%% Add a ruler but wihtout affecting the dimensions of the footline
+\vbox to 0pt{
+\vss
+\hbox to 0pt{
+\hspace*{\gothamFootlineRuleLeftPadding}
+\usebeamercolor{footlineRule}
+\color{footlineRule.fg}
+\rule{\gothamFootlineRuleLength}{\gothamFootlineRuleHeight}
+\vspace*{
+\dimexpr \gothamFootlineHeight -0.25em\relax
+}
+\hss
+}
+}
+%%% Add Hook
+\gothamHookFooter{}
+%%% Add short date
+\hspace{\gothamLeftFooterPadding}
+\settowidth{\hlenLeftRotFooter}{\hspace{-\gothamLeftFooterPadding}}
+\addtolength{\hlenLeftRotFooter}{\gothamHposLeftRotFooter}
+\bool_if:NTF \l_gotham_RotateFooter {
+\begin{picture}(0,0)(0,0)
+\put(\hlenLeftRotFooter,\gothamVposLeftRotFooter){\rotatebox{90}{\insertshortdate}}
+\end{picture}
+}{
+\insertshortdate
+}
+\hfill \
+%%% Add short title
+\hfill \ \insertshorttitle
+\gotham@strut
+\hfill \
+\hfill \
+%%% Add short author
+\bool_if:NTF \l_gotham_RotateFooter {
+\settowidth{\hlenRightRotFooter}{\hspace{\gothamRightFooterPadding}\usebeamertemplate{page~number~in~head/foot}\hspace*{\gothamFootlineHRightOffset}}
+\addtolength{\hlenRightRotFooter}{\gothamHposRightRotFooter}
+\begin{picture}(0,0)(0,0)
+\put(\hlenRightRotFooter,\gothamVposRightRotFooter){\rotatebox{90}{\insertshortauthor}}
+\end{picture}
+}{
+\insertshortauthor
+}
+%%% Decrease space between progress bar and footer
+\vspace*{\gothamFooterHOffset}
+}
+\prop_put:Nnn \l__gotham_template_name_prop {frame~footer/default} {gotham}
+
+%%%%
+\keys_define:nn { gotham / outer }{
+footer~template .usage:n = { general },
+footer~template .default:n = { gotham },
+footer~template .code:n = {
+\__gotham_set_prop_template:nn{frame~footer/default}{#1}
+\setbeamertemplate{frame~footer}[
+default/\prop_item:Nn \l__gotham_template_name_prop {frame~footer/default}
+]
+}
+}
+
+%%% Numbering %%%
+%%%%%%%%%%%%%%%%%
+
+\def\inserttotalframenumber{100}
+
+\defbeamertemplate{page~number~in~head/foot}{none}{ }
+
+%%%%
+\newlength{\gothamCircleNumberingVshift}
+\newlength{\gothamCircleNumberingHshift}
+\setlength{\gothamCircleNumberingVshift}{1.4mm}
+\setlength{\gothamCircleNumberingHshift}{2.6mm}
+
+\defbeamertemplate{page~number~in~head/foot}{circle}{
+\hspace{+2em}
+\raisebox{\gothamCircleNumberingVshift}[0pt][0pt]{
+\begin{tikzpicture}[remember~picture, overlay]
+\coordinate (circleCenter);
+
+\usebeamercolor{frametitle}
+
+\draw[fill, color=frametitle.bg] (circleCenter) circle (6mm);
+\draw[fill, color=frametitle.fg] (circleCenter) circle (5mm);
+\node[color=frametitle.bg] at (circleCenter)
+{\small$^{\insertframenumber}\negmedspace/\negthinspace\sb{\inserttotalframenumber}$}
+;
+\end{tikzpicture}
+\hspace{\gothamCircleNumberingHshift}
+}
+}
+
+%%%%
+\keys_define:nn { gotham / outer }{
+numbering .choice:,
+numbering .usage:n = { general },
+numbering .default:n = { none },
+
+numbering / none .code:n = { \setbeamertemplate{page~number~in~head/foot}[none] },
+numbering / framenumber .code:n = { \setbeamertemplate{page~number~in~head/foot}[framenumber] },
+numbering / totalframenumber .code:n = {\setbeamertemplate{page~number~in~head/foot}[totalframenumber] },
+numbering / appendixframenumber .code:n = {\setbeamertemplate{page~number~in~head/foot}[appendixframenumber] },
+numbering / pagenumber .code:n = { \setbeamertemplate{page~number~in~head/foot}[pagenumber] },
+numbering / totalpagenumber .code:n = {\setbeamertemplate{page~number~in~head/foot}[totalpagenumber] },
+numbering / circle .code:n = {\setbeamertemplate{page~number~in~head/foot}[circle] },
+
+numbering / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'numbering',~so~being~ignored. }{helping~message} },
+}
+
+%%% MiniFrames \& Progress bar %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% MiniFrames %%%
+
+\defbeamertemplate{section~in~head/foot}{default/beamer}{
+\insertsectionhead
+}
+\defbeamertemplate{section~in~head/foot~shaded}{default/beamer}{
+\color{fg!50!bg}\usebeamertemplate{section~in~head/foot}
+}
+
+\prop_put:Nnn \l__gotham_template_name_prop {section~in~head/foot~shaded/default} {beamer}
+\prop_put:Nnn \l__gotham_template_name_prop {section~in~head/foot/default} {beamer}
+
+\defbeamertemplate{section~in~head/foot}{default/gotham~secSubsec}{
+\insertsectionhead
+\ifx\insertsubsection\empty\else
+\ifdefempty{\subsecname}{\relax}{
+\ \textbar\ \insertsubsectionhead
+}
+\fi
+}
+\defbeamertemplate{section~in~head/foot~shaded}{default/gotham~secSubsec}{
+\insertsectionhead
+}
+
+\defbeamertemplate{section~in~head/foot}{default/empty}{
+\vspace{3.875ex}
+}
+\defbeamertemplate{section~in~head/foot~shaded}{default/empty}{
+\vspace{3.875ex}
+}
+
+\newlength{\gotham@temp@heightFrametitle}
+\newlength{\gotham@temp@PaperheightFrametitle}
+
+\defbeamertemplate*{mini~nav~progress~head/foot}{gotham~miniframes~theme}
+{
+\begin{beamercolorbox}[ignorebg]{section~in~head/foot}
+\hfuzz=\paperwidth
+\insertnavigation{\paperwidth}
+\vspace{0.05cm}
+\end{beamercolorbox}
+}
+\defbeamertemplate*{mini~nav~progress~left}{gotham~miniframes~theme}
+{
+\settoheight{\gotham@temp@heightFrametitle}{\gotham@strut}
+\addtolength{\gotham@temp@heightFrametitle}{\gothamFrametitleToppading+\gothamFrametitleBottompading+\gothamProgressHeadFootLineheight}
+
+\setlength{\gotham@temp@PaperheightFrametitle}{\paperheight-\gotham@temp@heightFrametitle-\gothamFootlineHeight-\gothamFootlineDepth-\gothamProgressHeadFootLineheight}
+
+\vspace{-0.6\paperheight}
+\rotatebox{90}{
+\begin{beamercolorbox}[ignorebg]{section~in~head/foot}
+\hfuzz=\gotham@temp@PaperheightFrametitle
+\insertnavigation{\gotham@temp@PaperheightFrametitle}
+\end{beamercolorbox}
+}
+}
+\defbeamertemplate*{mini~nav~progress~right}{gotham~miniframes~theme}
+{
+\settoheight{\gotham@temp@heightFrametitle}{\gotham@strut}
+\addtolength{\gotham@temp@heightFrametitle}{\gothamFrametitleToppading+\gothamFrametitleBottompading+\gothamProgressHeadFootLineheight}
+
+\setlength{\gotham@temp@PaperheightFrametitle}{\paperheight-\gotham@temp@heightFrametitle-\gothamFootlineHeight-\gothamFootlineDepth-\gothamProgressHeadFootLineheight}
+
+\vspace{\gotham@temp@heightFrametitle}
+\hspace{-2.3em}
+\rotatebox{-90}{
+\begin{beamercolorbox}[ignorebg]{section~in~head/foot}
+\hfuzz=\gotham@temp@PaperheightFrametitle
+\insertnavigation{\gotham@temp@PaperheightFrametitle}
+\end{beamercolorbox}
+}
+}
+
+%% Select the bullets shape
+\defbeamertemplate{mini~frame}{gotham~box}
+{
+\begin{pgfpicture}{0pt}{0pt}{.1cm}{.1cm}
+\pgfpathrectangle{\pgfpointorigin}{\pgfpoint{0.1cm}{0.1cm}}
+\pgfusepath{fill,stroke}
+\end{pgfpicture}
+}[action]{
+\setbeamersize{mini~frame~size=.14cm, mini~frame~offset=.05cm}
+}
+\defbeamertemplate{mini~frame~in~current~subsection}{gotham~box}
+{
+\begin{pgfpicture}{0pt}{0pt}{.1cm}{.1cm}
+\pgfpathrectangle{\pgfpointorigin}{\pgfpoint{0.1cm}{0.1cm}}
+\pgfusepath{stroke}
+\end{pgfpicture}
+}
+
+\defbeamertemplate{mini~frame}{gotham~minibox}
+{
+\begin{pgfpicture}{0pt}{0pt}{.05cm}{.05cm}
+\pgfpathrectangle{\pgfpointorigin}{\pgfpoint{0.05cm}{0.05cm}}
+\pgfusepath{fill,stroke}
+\end{pgfpicture}
+}[action]{
+\setbeamersize{mini~frame~size=.08cm, mini~frame~offset=.05cm}
+}
+\defbeamertemplate{mini~frame~in~current~subsection}{gotham~minibox}
+{
+\begin{pgfpicture}{0pt}{0pt}{.05cm}{.05cm}
+\pgfpathrectangle{\pgfpointorigin}{\pgfpoint{0.05cm}{0.05cm}}
+\pgfusepath{stroke}
+\end{pgfpicture}
+}
+
+\defbeamertemplate{mini~frame}{gotham~minibullet}
+{
+\beamer@xelatex@fixminiframes
+\begin{pgfpicture}{0pt}{0pt}{0.05cm}{0.05cm}
+\pgfpathcircle{\pgfpoint{0.03cm}{0.03cm}}{0.03cm}
+\pgfusepath{fill,stroke}
+\end{pgfpicture}
+}[action]{
+\setbeamersize{mini~frame~size=.09cm, mini~frame~offset=.05cm}
+}
+\defbeamertemplate{mini~frame~in~current~subsection}{gotham~minibullet}
+{
+\beamer@xelatex@fixminiframes
+\begin{pgfpicture}{0pt}{0pt}{0.05cm}{0.05cm}
+\pgfpathcircle{\pgfpoint{0.03cm}{0.03cm}}{0.03cm}
+\pgfusepath{stroke}
+\end{pgfpicture}
+}
+
+%%%%
+\keys_define:nn { gotham / outer }{
+%% mini~frames~shape
+mini~frames~shape .usage:n = { general },
+mini~frames~shape .default:n = { gotham~minibullet },
+mini~frames~shape .code:n = {
+\setbeamertemplate{mini~frames}[#1]
+},
+}
+
+\defbeamertemplate*{miniframe~home}{beamer}{
+}
+\defbeamertemplate*{miniframe~current~slide}{beamer}{
+\usebeamertemplate{mini~frame}
+}
+\defbeamertemplate*{miniframe~done~current~section}{beamer}{
+\usebeamertemplate{mini~frame~in~current~subsection}
+}
+\defbeamertemplate*{miniframe~todo~current~section}{beamer}{
+\usebeamertemplate{mini~frame~in~current~subsection}
+}
+\defbeamertemplate*{miniframe~done~other~section}{beamer}{
+\usebeamertemplate{mini~frame~in~other~subsection}
+}
+\defbeamertemplate*{miniframe~todo~other~section}{beamer}{
+\usebeamertemplate{mini~frame~in~other~subsection}
+}
+\defbeamertemplate*{miniframe~section~current}{beamer}{}
+\defbeamertemplate*{miniframe~section~done}{beamer}{}
+\defbeamertemplate*{miniframe~section~todo}{beamer}{}
+\defbeamertemplate*{miniframe~subsection~current}{beamer}{}
+\defbeamertemplate*{miniframe~subsection~todo}{beamer}{}
+\defbeamertemplate*{miniframe~subsection~done}{beamer}{}
+\defbeamertemplate*{miniframe~section~done~in~other~section}{default}[1][50]
+{
+\color{fg!#1!bg}\usebeamertemplate{miniframe~section~done}
+}
+\defbeamertemplate*{miniframe~section~todo~in~other~section}{default}[1][50]
+{
+\color{fg!#1!bg}\usebeamertemplate{miniframe~section~todo}
+}
+\defbeamertemplate*{miniframe~subsection~done~in~other~section}{default}[1][50]
+{
+\color{fg!#1!bg}\usebeamertemplate{miniframe~subsection~done}
+}
+\defbeamertemplate*{miniframe~subsection~todo~in~other~section}{default}[1][50]
+{
+\color{fg!#1!bg}\usebeamertemplate{miniframe~subsection~todo}
+}
+
+\defbeamertemplate{miniframe~home}{gotham~mini}{
+\resizebox{0.85\beamer@boxsize}{\beamer@boxsize}{$\equiv$}
+}
+\defbeamertemplate{miniframe~current~slide}{gotham~mini}{
+\usebeamercolor[fg]{alerted~text}
+\usebeamertemplate{mini~frame}
+}
+\defbeamertemplate{miniframe~done~current~section}{gotham~mini}{
+\usebeamertemplate{mini~frame}
+}
+\defbeamertemplate{miniframe~todo~current~section}{gotham~mini}{
+\usebeamertemplate{mini~frame~in~current~subsection}
+}
+\defbeamertemplate{miniframe~done~other~section}{gotham~mini}[1][50]{
+\color{fg!#1!bg}\usebeamertemplate{mini~frame}
+}
+\defbeamertemplate{miniframe~todo~other~section}{gotham~mini}[1][50]{
+\color{fg!#1!bg}\usebeamertemplate{mini~frame~in~other~subsection}
+}
+\defbeamertemplate{miniframe~section~current}{gotham~mini}{
+\fontsize{3pt}{0pt}\selectfont
+\tl_use:N \l__gotham_minif_tmpa_tl
+\hspace{1.pt}
+}
+\defbeamertemplate{miniframe~section~done}{gotham~mini}{
+\fontsize{3pt}{0pt}\selectfont
+\tl_use:N \l__gotham_minif_tmpa_tl
+\hspace{1.pt}
+}
+\defbeamertemplate{miniframe~section~todo}{gotham~mini}{
+\fontsize{3pt}{0pt}\selectfont
+\tl_use:N \l__gotham_minif_tmpa_tl
+\hspace{1.pt}
+}
+\defbeamertemplate{miniframe~subsection~current}{gotham~mini}{
+\usebeamercolor[fg]{alerted~text}
+\hspace{-0.15pt}
+\resizebox{\beamer@boxsize}{!}{\hspace{-0.75pt}$\blacklozenge$}
+}
+\defbeamertemplate{miniframe~subsection~todo}{gotham~mini}{
+\hspace{-0.15pt}
+\resizebox{\beamer@boxsize}{!}{\hspace{-0.75pt}$\lozenge$}
+}
+\defbeamertemplate{miniframe~subsection~done}{gotham~mini}{
+\hspace{-0.15pt}
+\resizebox{\beamer@boxsize}{!}{\hspace{-0.75pt}$\blacklozenge$}
+}
+
+\defbeamertemplate{miniframe~home}{gotham~nano}{
+\scalebox{0.5}[0.95]{$\equiv$}
+}
+\defbeamertemplate{miniframe~current~slide}{gotham~nano}{
+o
+}
+\defbeamertemplate{miniframe~done~current~section}{gotham~nano}{
+x
+}
+\defbeamertemplate{miniframe~todo~current~section}{gotham~nano}{
+$\cdot$
+}
+\defbeamertemplate{miniframe~done~other~section}{gotham~nano}{
+x
+}
+\defbeamertemplate{miniframe~todo~other~section}{gotham~nano}{
+$\cdot$
+}
+\defbeamertemplate{miniframe~section~current}{gotham~nano}{
+\tl_use:N \l__gotham_minif_tmpa_tl
+}
+\defbeamertemplate{miniframe~section~done}{gotham~nano}{
+\tl_use:N \l__gotham_minif_tmpa_tl
+}
+\defbeamertemplate{miniframe~section~todo}{gotham~nano}{
+\tl_use:N \l__gotham_minif_tmpa_tl
+}
+\defbeamertemplate{miniframe~subsection~current}{gotham~nano}{
+\usebeamercolor[fg]{alerted~text}$\diamond$
+}
+\defbeamertemplate{miniframe~subsection~todo}{gotham~nano}{
+$\diamond$
+}
+\defbeamertemplate{miniframe~subsection~done}{gotham~nano}{
+$\diamond$
+}
+
+\defbeamertemplateparent{mini~frames~bundle}
+{ miniframe~home, miniframe~current~slide,
+miniframe~done~current~section, miniframe~todo~current~section, miniframe~done~other~section, miniframe~todo~other~section,
+miniframe~section~current, miniframe~section~done, miniframe~section~todo,
+miniframe~subsection~current, miniframe~subsection~done, miniframe~subsection~todo,
+}{}
+
+%%%%
+\keys_define:nn { gotham / outer }{
+%% mini~frames~bundle
+mini~frames~bundle .usage:n = { general },
+mini~frames~bundle .default:n = { gotham~mini },
+mini~frames~bundle .code:n = {
+\setbeamertemplate{mini~frames~bundle}[#1]
+},
+}
+
+%%% MiniFrames Navigation %%%
+
+%%%%
+\keys_define:nn { gotham / outer }{
+mini~frames~compress .choice:,
+mini~frames~compress .usage:n = { general },
+mini~frames~compress .default:n = { true },
+
+mini~frames~compress / true .code:n = { \beamer@compresstrue },
+mini~frames~compress / on .code:n = { \beamer@compresstrue },
+mini~frames~compress / enable .code:n = { \beamer@compresstrue },
+
+mini~frames~compress / false .code:n = { \beamer@compressfalse },
+mini~frames~compress / off .code:n = { \beamer@compressfalse },
+mini~frames~compress / disable .code:n = { \beamer@compressfalse },
+
+mini~frames~compress / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'mini~frames~compress',~so~being~ignored. }{helping~message: mini~frames~compress / unknown} },
+}
+
+\newlength{\gotham@temp@MiniframeSubsecDim}
+\newlength{\gotham@temp@MiniframeSecDim}
+\def\gotham@temp@lastSec{-1}
+\tl_new:N \l__gotham_minif_tmpa_tl
+\tl_new:N \l__gotham_minif_tmpb_tl
+
+\renewcommand{\slideentry}[6]{%
+ %section number, subsection number, slide number, first/last frame, page number, part number
+\ifnum#6=\c@part\ifnum#3>0%\ifnum#6=\c@part\ifnum#1>0\ifnum#3>0 MODIF
+\ifbeamer@compress%
+\advance\beamer@xpos by1\relax%
+\else%
+\ifnum#2=0%
+\beamer@ypos@offset=1\relax%
+\fi%
+\beamer@xpos=#3\relax%
+\beamer@ypos=#2\relax%
+\advance\beamer@ypos by \beamer@ypos@offset\relax%
+\fi%
+%% Add section number and subsection symbol to miniframes.
+%% MODIF below, inspired from https://tex.stackexchange.com/questions/722523
+\ifnum#3=1%\c@subsectionslide=#3 % if =1, so it has been reset => new section or subsection
+\ifnum#1>0\ifnum#2<2% => there no subsection in this section.
+\ifnum\gotham@temp@lastSec=#1%
+\else%
+\tl_set:Nn \l__gotham_minif_tmpa_tl {#1}
+\settowidth{\gotham@temp@MiniframeSecDim}{\usebeamertemplate{miniframe~section~current}}%
+\hbox to 0pt{%
+\beamer@tempdim=-\beamer@vboxoffset%
+\advance\beamer@tempdim by-\beamer@boxsize%
+\multiply\beamer@tempdim by\beamer@ypos%
+\advance\beamer@tempdim by -.05cm%
+\raise\beamer@tempdim\hbox{%
+\beamer@tempdim=\beamer@boxsize%
+\multiply\beamer@tempdim by\beamer@xpos%
+\advance\beamer@tempdim by -\beamer@boxsize%
+\advance\beamer@tempdim by -\gotham@temp@MiniframeSecDim% NEW
+\advance\beamer@tempdim by 1pt%
+\kern\beamer@tempdim%
+\global\beamer@section@min@dim\beamer@tempdim%
+\hbox{\beamer@link(#4){%
+\ifnum\c@section=#1%
+\ifnum\c@subsectionslide=#3%
+\usebeamertemplate{miniframe~section~current}
+\else%
+\ifnum\c@subsectionslide<#3
+\usebeamertemplate{miniframe~section~todo}
+\else%
+\usebeamertemplate{miniframe~section~done}
+\fi%
+\fi%
+\else% \ifnum\c@section=#1%
+\ifnum\c@section<#1
+\usebeamertemplate{miniframe~section~todo~in~other~section}
+\else%
+\usebeamertemplate{miniframe~section~done~in~other~section}
+\fi%
+\fi% \ifnum\c@section=#1
+}}%
+}%
+}%
+\def\gotham@temp@lastSec{#1}%
+\fi%
+\fi\fi%
+\ifnum#2>0%
+\ifbeamertemplateempty{miniframe~subsection~current}{
+}{
+\tl_set:Nn \l__gotham_minif_tmpb_tl {#2}
+\settowidth{\gotham@temp@MiniframeSubsecDim}{}%\usebeamertemplate{miniframe~subsection~current}}%
+\addtolength{\gotham@temp@MiniframeSubsecDim}{+1.\beamer@boxsize}%
+\advance\beamer@xpos by1\relax%
+\hbox to 0pt{%
+\beamer@tempdim=-\beamer@vboxoffset%
+\advance\beamer@tempdim by-\beamer@boxsize%
+\multiply\beamer@tempdim by\beamer@ypos%
+\advance\beamer@tempdim by -.05cm%
+\raise\beamer@tempdim\hbox{%
+\beamer@tempdim=\beamer@boxsize%
+\multiply\beamer@tempdim by\beamer@xpos%
+\advance\beamer@tempdim by -\beamer@boxsize%
+\advance\beamer@tempdim by -\gotham@temp@MiniframeSubsecDim% NEW
+\advance\beamer@tempdim by 1pt%
+\kern\beamer@tempdim%
+\global\beamer@section@min@dim\beamer@tempdim%
+\hbox{\beamer@link(#4){%
+\ifnum\c@section=#1%
+\ifnum\c@subsection=#2%
+\ifnum\c@subsectionslide=#3%
+\usebeamertemplate{miniframe~subsection~current}
+\else%
+\ifnum\c@subsectionslide<#3
+\usebeamertemplate{miniframe~subsection~todo}
+\else%
+\usebeamertemplate{miniframe~subsection~done}
+\fi%
+\fi%
+\else% \ifnum\c@subsection=#2%
+\ifnum\c@subsection<#2
+\usebeamertemplate{miniframe~subsection~todo}
+\else%
+\usebeamertemplate{miniframe~subsection~done}
+\fi%
+\fi% \ifnum\c@subsection=#2%
+\else% \ifnum\c@section=#1%
+\ifnum\c@section<#1
+\usebeamertemplate{miniframe~subsection~todo~in~other~section}
+\else%
+\usebeamertemplate{miniframe~subsection~done~in~other~section}
+\fi%
+\fi% \ifnum\c@section=#1
+}}% \hbox{\beamer@link
+}% raisebox
+}% hbox
+}% end if template empty
+\fi% \ifnum#2>0
+\else
+\ifbeamer@compress%
+\else%
+\ifbeamertemplateempty{miniframe~subsection~current}{
+}{
+\advance\beamer@xpos by 1\relax%
+}
+\fi%
+\fi% \ifnum#3=1
+
+%% end of modif to add section number and subsection symbol.
+\hbox to 0pt{%
+\beamer@tempdim=-\beamer@vboxoffset%
+\advance\beamer@tempdim by-\beamer@boxsize%
+\multiply\beamer@tempdim by\beamer@ypos%
+\advance\beamer@tempdim by -.05cm%
+\raise\beamer@tempdim\hbox{%
+\beamer@tempdim=\beamer@boxsize%
+\multiply\beamer@tempdim by\beamer@xpos%
+\advance\beamer@tempdim by -\beamer@boxsize%
+\advance\beamer@tempdim by 1pt%
+\kern\beamer@tempdim
+\global\beamer@section@min@dim\beamer@tempdim
+\hbox{\beamer@link(#4){%
+\usebeamerfont{mini~frame}%
+%%
+%% CHANGE FROM HERE: I rewrote this part.
+\def\gotham@temp@i{1/1}
+\def\gotham@temp@ii{#4}
+\ifx\gotham@temp@i\gotham@temp@ii
+\usebeamertemplate{miniframe~home}
+\else
+\ifnum\c@section=#1%
+\ifnum\c@subsection=#2%
+\usebeamercolor[fg]{mini~frame}%
+\ifnum\c@subsectionslide=#3%
+\usebeamertemplate{miniframe~current~slide}
+\else%
+\ifnum\c@subsectionslide<#3
+\usebeamertemplate{miniframe~todo~current~section}
+\else%
+\usebeamertemplate{miniframe~done~current~section}
+\fi%
+\fi%
+\else% \ifnum\c@subsection=#2%
+\usebeamercolor{mini~frame}%
+\ifnum\c@subsection<#2
+\usebeamertemplate{miniframe~todo~other~section}
+\else%
+\usebeamertemplate{miniframe~done~other~section}
+\fi%
+\fi% \ifnum\c@subsection=#2%
+\else% \ifnum\c@section=#1%
+\usebeamercolor{mini~frame}%
+\ifnum\c@section<#1
+\usebeamertemplate{miniframe~todo~other~section}
+\else%
+\usebeamertemplate{miniframe~done~other~section}
+\fi%
+\fi% \ifnum\c@section=#1
+\fi% \ifx\gotham@temp@i\gotham@temp@ii
+}}}\hskip-10cm plus 1fil%
+}\fi% \ifnum#1>0\ifnum#3>0%
+\else% \ifnum#6=\c@part
+\fakeslideentry{#1}{#2}{#3}{#4}{#5}{#6}%
+\fi\ignorespaces%
+}%
+
+%%%%
+\providebool{gothamZerosectionframes}
+\boolfalse{gothamZerosectionframes}
+
+\providecommand{\gothamInsertNavlength}{
+\ifbool{gothamZerosectionframes}{
+\hskip-0.5ex~plus~1fill
+}{
+\hskip-1.875ex~plus-1fill
+}%
+}
+\providecommand{\gothamPatchInsertNav}{
+\box\beamer@sectionbox\hfil\hskip.3cm
+}
+\providecommand{\gothamPatchSectionentry}{
+\hskip1.875ex~plus~1fill
+}
+\providecommand{\gothamPatchSectionbox}{
+\ht\beamer@sectionbox=1.875ex
+\dp\beamer@sectionbox=0.75ex
+}
+\ExplSyntaxOff
+\patchcmd{\insertnavigation}{\hskip-1.875ex plus-1fill}{%
+\ifnum\value{section}=0%
+\ifnum\value{framenumber}>0%
+\hskip-0ex%
+\global\booltrue{gothamZerosectionframes}%
+\fi\fi%
+\gothamInsertNavlength%
+}{}{}
+%% Remove hfill between sections => flush right bullet bar, if not corrected.
+\patchcmd{\sectionentry}{\hskip1.875ex plus 1fill}{\gothamPatchSectionentry}{}{}
+%% Centering the bullet bar
+\patchcmd{\insertnavigation}{\box\beamer@sectionbox\hfil\hskip.3cm}{\gothamPatchInsertNav}{}{}
+\patchcmd{\insertnavigation}{\ht\beamer@sectionbox=1.875ex%
+\dp\beamer@sectionbox=0.75ex%
+}{
+\gothamPatchSectionbox
+}{}{}
+\patchcmd{\sectionentry}{\ht\beamer@sectionbox=1.875ex%
+\dp\beamer@sectionbox=0.75ex%
+}{
+\gothamPatchSectionbox
+}{}{}
+\ExplSyntaxOn
+
+%%%%
+\keys_define:nn { gotham / outer }{
+mini~frames~nav~spreading .choice:,
+mini~frames~nav~spreading .usage:n = { general },
+mini~frames~nav~spreading .default:n = { spreading },
+
+mini~frames~nav~spreading / spreading .code:n = {
+\renewcommand{\gothamInsertNavlength}{
+\ifbool{gothamZerosectionframes}{
+\hskip-0.5ex
+}{
+\hskip-1.875ex~plus-1fill
+}%
+}
+\renewcommand{\gothamPatchInsertNav}{
+\box\beamer@sectionbox\hfil\hskip.3cm
+}
+\renewcommand{\gothamPatchSectionentry}{
+\hskip1.875ex~plus~1fill
+}
+},
+mini~frames~nav~spreading / centering .code:n = {
+\renewcommand{\gothamInsertNavlength}{
+\ifbool{gothamZerosectionframes}{
+\hskip-0.5ex~plus~1fill
+}{
+\hfill
+}%
+}
+\renewcommand{\gothamPatchInsertNav}{
+\box\beamer@sectionbox\hfill\hskip.3cm
+}
+%% Remove hfill between sections => flush right bullet bar, if not corrected.
+\renewcommand{\gothamPatchSectionentry}{
+\hskip~3.5ex
+}
+},
+mini~frames~nav~spreading / left .code:n = {
+\renewcommand{\gothamInsertNavlength}{
+\ifbool{gothamZerosectionframes}{
+\hskip-0.5ex
+}{
+\hskip-1.875ex plus-1fill
+}%
+}
+\renewcommand{\gothamPatchInsertNav}{
+\box\beamer@sectionbox\hfil\hskip.3cm
+}
+%% Remove hfill between sections => flush right bullet bar, if not corrected.
+\renewcommand{\gothamPatchSectionentry}{
+\hskip~3.5ex
+}
+},
+mini~frames~nav~spreading / right .code:n = {
+\renewcommand{\gothamInsertNavlength}{
+\ifbool{gothamZerosectionframes}{
+\hskip-0.5ex~plus~1fill
+}{
+\hskip-1.875ex plus-1fill
+}%
+}
+\renewcommand{\gothamPatchInsertNav}{
+\box\beamer@sectionbox\hfil\hskip.3cm
+}
+%% Remove hfill between sections => flush right bullet bar, if not corrected.
+\renewcommand{\gothamPatchSectionentry}{
+\hskip~3.5ex
+}
+},
+mini~frames~nav~spreading / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'mini~frames~nav~spreading',~so~being~ignored. }{helping~message: mini~frames~nav~spreading / unknown} },
+}
+
+%%%%
+\keys_define:nn { gotham / outer }{
+mini~frames~nav~sectioning .choice:,
+mini~frames~nav~sectioning .usage:n = { general },
+mini~frames~nav~sectioning .default:n = { secsubsection },
+
+mini~frames~nav~sectioning / none .code:n = {
+\__gotham_set_template:nn{section~in~head/foot~shaded}{default/empty}
+\__gotham_set_template:nn{section~in~head/foot}{default/empty}
+\renewcommand{\gothamPatchSectionbox}{
+\ht\beamer@sectionbox=0pt
+\dp\beamer@sectionbox=0pt
+}
+},
+mini~frames~nav~sectioning / section .code:n = {
+\__gotham_set_template:nn{section~in~head/foot~shaded}{default} %from Beamer
+\__gotham_set_template:nn{section~in~head/foot}{default} %from Beamer
+},
+mini~frames~nav~sectioning / secsubsection .code:n = {
+\__gotham_set_template:nn{section~in~head/foot~shaded}{default/gotham~secSubsec}
+\__gotham_set_template:nn{section~in~head/foot}{default/gotham~secSubsec}
+},
+
+mini~frames~nav~sectioning / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'mini~frames~nav~sectioning',~so~being~ignored. }{helping~message: mini~frames~nav~sectioning / unknown} },
+}
+
+%%%%
+\tl_new:N \l__gotham_out_tmp_mfnposi_tl
+\tl_new:N \l__gotham_out_tmp_pbar_tl
+\keys_define:nn { gotham / outer }{
+mini~frames~nav~position .choice:,
+mini~frames~nav~position .usage:n = { general },
+mini~frames~nav~position .default:n = { none },
+
+mini~frames~nav~position / none .code:n = {
+\tl_set:Nn \l__gotham_out_tmp_mfnposi_tl {none}
+
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {head} {
+}{
+\setbeamertemplate{headline}[default/\prop_item:Nn \l__gotham_template_name_prop {headline/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {footline} {
+}{
+\setbeamertemplate{footline}[default/\prop_item:Nn \l__gotham_template_name_prop {footline/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {left} {
+}{
+\setbeamertemplate{sidebar~left}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~left/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {right} {
+}{
+\setbeamertemplate{sidebar~right}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~right/default}]
+}
+},
+mini~frames~nav~position / head .code:n = {
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {head} {
+}{
+\tl_set:Nn \l__gotham_out_tmp_mfnposi_tl {head}
+
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {head} {
+}{
+\setbeamertemplate{headline}[default/\prop_item:Nn \l__gotham_template_name_prop {headline/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {footline} {
+}{
+\setbeamertemplate{footline}[default/\prop_item:Nn \l__gotham_template_name_prop {footline/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {left} {
+}{
+\setbeamertemplate{sidebar~left}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~left/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {right} {
+}{
+\setbeamertemplate{sidebar~right}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~right/default}]
+}
+
+\addtobeamertemplate{headline}{}{
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {head} {
+\usebeamertemplate*{mini~nav~progress~head/foot}
+}{}
+}
+}
+},
+mini~frames~nav~position / foot .code:n = {
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {foot} {
+}{
+\tl_set:Nn \l__gotham_out_tmp_mfnposi_tl {foot}
+
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {head} {
+}{
+\setbeamertemplate{headline}[default/\prop_item:Nn \l__gotham_template_name_prop {headline/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {footline} {
+}{
+\setbeamertemplate{footline}[default/\prop_item:Nn \l__gotham_template_name_prop {footline/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {left} {
+}{
+\setbeamertemplate{sidebar~left}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~left/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {right} {
+}{
+\setbeamertemplate{sidebar~right}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~right/default}]
+}
+
+\addtobeamertemplate{footline}{}{
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {foot} {
+\usebeamertemplate*{mini~nav~progress~head/foot}
+}{}
+}
+}
+},
+mini~frames~nav~position / left .code:n = {
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {left} {
+}{
+\tl_set:Nn \l__gotham_out_tmp_mfnposi_tl {left}
+
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {head} {
+}{
+\setbeamertemplate{headline}[default/\prop_item:Nn \l__gotham_template_name_prop {headline/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {footline} {
+}{
+\setbeamertemplate{footline}[default/\prop_item:Nn \l__gotham_template_name_prop {footline/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {left} {
+}{
+\setbeamertemplate{sidebar~left}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~left/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {right} {
+}{
+\setbeamertemplate{sidebar~right}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~right/default}]
+}
+
+\addtobeamertemplate{sidebar~left}{}{
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {left} {
+\usebeamertemplate*{mini~nav~progress~left}
+}{}
+}
+}
+},
+mini~frames~nav~position / right .code:n = {
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {right} {
+}{
+\tl_set:Nn \l__gotham_out_tmp_mfnposi_tl {right}
+
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {head} {
+}{
+\setbeamertemplate{headline}[default/\prop_item:Nn \l__gotham_template_name_prop {headline/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {footline} {
+}{
+\setbeamertemplate{footline}[default/\prop_item:Nn \l__gotham_template_name_prop {footline/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {left} {
+}{
+\setbeamertemplate{sidebar~left}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~left/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {right} {
+}{
+\setbeamertemplate{sidebar~right}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~right/default}]
+}
+
+\addtobeamertemplate{sidebar~right}{}{
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {right} {
+\usebeamertemplate*{mini~nav~progress~right}
+}{}
+}
+}
+},
+
+mini~frames~nav~position / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'mini~frames~nav~position',~so~being~ignored. }{helping~message: mini~frames~nav~position / unknown} },
+}
+
+%%% Progress bar %%%
+
+%%%%%%
+\newlength{\gotham@progressinheadfoot}
+\newlength{\gothamProgressHeadFootLineheight}
+\setlength{\gothamProgressHeadFootLineheight}{1.2ex}
+
+%%%%%%
+\bool_new:N \l_gotham_ProgCircleMoving_bool
+\bool_set_true:N \l_gotham_ProgCircleMoving_bool
+
+\bool_new:N \l_gotham_progbar_advancement_tlbr_bool
+\bool_set_true:N \l_gotham_progbar_advancement_tlbr_bool
+
+\bool_new:N \l_gotham_pmfn_bool
+\bool_set_false:N \l_gotham_pmfn_bool
+
+\cs_new_protected:Npn \__gotham_rectangle_box_progressbar:n #1
+{
+\setlength{\gotham@progressinheadfoot}{
+#1 * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}
+}
+
+\begin{beamercolorbox}[wd=#1]{progress~bar~in~head/foot}
+\begin{tikzpicture}
+\usebeamercolor{progress~bar~in~head/foot}
+
+\fill[color=progress~bar~in~head/foot.bg]
+(0pt, 0pt) rectangle ++ (#1, \gothamProgressHeadFootLineheight)
+;
+
+\bool_if:NTF \l_gotham_progbar_advancement_tlbr_bool {
+\fill[color=progress~bar~in~head/foot.fg]
+(0pt, 0pt) rectangle ++ (\gotham@progressinheadfoot, \gothamProgressHeadFootLineheight)
+;
+}{
+\fill[color=progress~bar~in~head/foot.fg]
+(#1, \gothamProgressHeadFootLineheight) rectangle ++ (-\gotham@progressinheadfoot, -\gothamProgressHeadFootLineheight)
+;
+}
+
+\bool_if:NTF \l_gotham_pmfn_bool {
+\node at (#1/2, \gothamProgressHeadFootLineheight/2)
+[text~height=0.1pt, text~depth=0.05pt, inner~sep=0pt] %draw=red,
+{
+\usebeamercolor[fg]{normal~text}
+\raisebox{0.5\gothamProgressHeadFootLineheight+1.4pt}[0pt][0pt]{
+\hfuzz=#1
+\insertnavigation{#1}
+}
+}
+;
+}{
+}
+\end{tikzpicture}
+\end{beamercolorbox}
+}
+
+\defbeamertemplate{progress~bar~in~head/foot}{gotham~rectangle}{
+\nointerlineskip
+\__gotham_rectangle_box_progressbar:n {\paperwidth}
+}
+
+\defbeamertemplate{progress~bar~in~left}{gotham~rectangle}{
+\nointerlineskip
+
+\settoheight{\gotham@temp@heightFrametitle}{\gotham@strut}
+\addtolength{\gotham@temp@heightFrametitle}{\gothamFrametitleToppading+\gothamFrametitleBottompading+\gothamProgressHeadFootLineheight}
+
+\setlength{\gotham@temp@PaperheightFrametitle}{\paperheight-\gotham@temp@heightFrametitle-\gothamFootlineHeight-\gothamFootlineDepth-0.25\baselineskip}
+
+\vspace{0.12275\paperheight}
+\rotatebox{90}{
+\__gotham_rectangle_box_progressbar:n {\gotham@temp@PaperheightFrametitle}
+}
+}
+\defbeamertemplate{progress~bar~in~right}{gotham~rectangle}{
+\nointerlineskip
+
+\settoheight{\gotham@temp@heightFrametitle}{\gotham@strut}
+\addtolength{\gotham@temp@heightFrametitle}{\gothamFrametitleToppading+\gothamFrametitleBottompading+\gothamProgressHeadFootLineheight}
+
+\setlength{\gotham@temp@PaperheightFrametitle}{\paperheight-\gotham@temp@heightFrametitle-\gothamFootlineHeight-\gothamFootlineDepth-0.25\baselineskip}
+
+\hspace{-\gothamProgressHeadFootLineheight}
+\vspace{\gotham@temp@heightFrametitle-27.75pt}
+\rotatebox{-90}{
+\__gotham_rectangle_box_progressbar:n {\gotham@temp@PaperheightFrametitle}
+}
+}
+
+\cs_new_protected:Npn \__gotham_rounded_box_progressbar:nnnn #1#2#3#4
+{
+\setlength{\gotham@progressinheadfoot}{
+#2#1 * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}
+}
+
+\begin{beamercolorbox}[wd=#1, ht=1.035\gothamProgressHeadFootLineheight]{#3}
+\;\hfill
+\begin{tikzpicture}[rounded~corners=0.5\gothamProgressHeadFootLineheight, very~thin]
+\usebeamercolor{progress~bar~in~head/foot}
+
+\shade[top~color=progress~bar~in~head/foot.bg!65, bottom~color=progress~bar~in~head/foot.bg!65, middle~color=progress~bar~in~head/foot.bg]
+(0pt, 0pt) rectangle ++ (#2#1, \gothamProgressHeadFootLineheight)
+;
+
+\bool_if:NTF \l_gotham_progbar_advancement_tlbr_bool {
+\shade[draw=progress~bar~in~head/foot.fg, top~color=progress~bar~in~head/foot.fg!70, bottom~color=progress~bar~in~head/foot.fg!70, middle~color=progress~bar~in~head/foot.fg]
+(0pt, 0pt) rectangle ++ (\gotham@progressinheadfoot, \gothamProgressHeadFootLineheight)
+;
+}{
+\shade[draw=progress~bar~in~head/foot.fg, top~color=progress~bar~in~head/foot.fg!70, bottom~color=progress~bar~in~head/foot.fg!70, middle~color=progress~bar~in~head/foot.fg]
+(#2#1, \gothamProgressHeadFootLineheight) rectangle ++ (-\gotham@progressinheadfoot, -\gothamProgressHeadFootLineheight)
+;
+}
+
+\bool_if:NTF \l_gotham_pmfn_bool {
+\node at (#2#1/2, \gothamProgressHeadFootLineheight/2)
+[text~height=0.1pt, text~depth=0.05pt, inner~sep=0pt] %draw=red,
+{
+\usebeamercolor[fg]{normal~text}
+\raisebox{0.5\gothamProgressHeadFootLineheight+1.4pt}[0pt][0pt]{
+\hfuzz=#2#1
+\insertnavigation{#2#1}
+}
+}
+;
+}{
+}
+\end{tikzpicture}
+#4
+\hfill \;
+\end{beamercolorbox}
+}
+
+\defbeamertemplate{progress~bar~in~head/foot}{gotham~rounded~box}{
+\nointerlineskip
+\__gotham_rounded_box_progressbar:nnnn {\paperwidth}{0.93}{footline}{
+\hfill
+\raisebox{0.5\gothamProgressHeadFootLineheight-1.75pt}[0pt][0pt]{
+\fontsize{5pt}{0pt}\selectfont
+\usebeamercolor[fg]{normal~text}
+\fp_eval:n {round(\insertframenumber*100/\inserttotalframenumber,0)}\,\%
+}
+}
+}
+
+\defbeamertemplate{progress~bar~in~left}{gotham~rounded~box}{
+\nointerlineskip
+
+\settoheight{\gotham@temp@heightFrametitle}{\gotham@strut}
+\addtolength{\gotham@temp@heightFrametitle}{\gothamFrametitleToppading+\gothamFrametitleBottompading+\gothamProgressHeadFootLineheight}
+
+\setlength{\gotham@temp@PaperheightFrametitle}{\paperheight-\gotham@temp@heightFrametitle-\gothamFootlineHeight-\gothamFootlineDepth-0.25\baselineskip}
+
+\vspace{0.12275\paperheight}
+\rotatebox{90}{
+\__gotham_rounded_box_progressbar:nnnn {\gotham@temp@PaperheightFrametitle}{0.89}{footline}{
+\hfill
+\raisebox{0.5\gothamProgressHeadFootLineheight-1.75pt}[0pt][0pt]{
+\fontsize{5pt}{0pt}\selectfont
+\fp_eval:n {round(\insertframenumber*100/\inserttotalframenumber,0)}\,\%
+}
+}
+}
+}
+\defbeamertemplate{progress~bar~in~right}{gotham~rounded~box}{
+\nointerlineskip
+
+\settoheight{\gotham@temp@heightFrametitle}{\gotham@strut}
+\addtolength{\gotham@temp@heightFrametitle}{\gothamFrametitleToppading+\gothamFrametitleBottompading+\gothamProgressHeadFootLineheight}
+
+\setlength{\gotham@temp@PaperheightFrametitle}{\paperheight-\gotham@temp@heightFrametitle-\gothamFootlineHeight-\gothamFootlineDepth-0.25\baselineskip}
+
+\hspace{-\gothamProgressHeadFootLineheight-0.2pt}
+\vspace{\gotham@temp@heightFrametitle-27.75pt}
+\rotatebox{-90}{
+\__gotham_rounded_box_progressbar:nnnn {\gotham@temp@PaperheightFrametitle}{0.89}{footline}{
+\hfill
+\raisebox{0.5\gothamProgressHeadFootLineheight-1.75pt}[0pt][0pt]{
+\fontsize{5pt}{0pt}\selectfont
+\fp_eval:n {round(\insertframenumber*100/\inserttotalframenumber,0)}\,\%
+}
+}
+}
+}
+
+%%%%%%
+\newlength{\gothamProgressCircHeight}
+\setlength{\gothamProgressCircHeight}{1.8\baselineskip}
+\newlength{\gothamCounterCircleRadius}
+\setlength{\gothamCounterCircleRadius}{1.12ex}
+\newlength{\gothamProgressCircBorderWidth}
+\setlength{\gothamProgressCircBorderWidth}{1.65mm}
+
+%% Induced length used internally, but can still be tuned manually by inspired people.
+\newlength{\gothamProgressCircLogoRadius}
+\setlength{\gothamProgressCircLogoRadius}{1.2\gothamProgressCircHeight/2}
+\newlength{\gothamProgressCircLogoInnerRadius}
+\setlength{\gothamProgressCircLogoInnerRadius}{1.1\gothamProgressCircLogoRadius}
+\newlength{\gothamProgressCircLogoOuterRadius}
+\setlength{\gothamProgressCircLogoOuterRadius}{\gothamProgressCircLogoInnerRadius+\gothamProgressCircBorderWidth}
+\newlength{\gothamCounterRadius}
+\setlength{\gothamCounterRadius}{\gothamProgressCircLogoInnerRadius/2+\gothamProgressCircLogoOuterRadius/2}
+
+\fp_new:N \l_gotham_ratio_progresscircle_fp
+\fp_new:N \l_gotham_angle_counterradius_fp
+\fp_set:Nn \l_gotham_angle_counterradius_fp {
+\fpeval{ 2* asind (\gothamCounterCircleRadius / (2*\gothamCounterRadius)) }
+}
+
+%%%%%%
+\providecommand{\gothamInstituteLogoCircle}[1][4ex]{
+\includegraphics[height=#1]{gotham-logo.pdf}
+}
+
+\providecommand{\gothamProgressCircle}{
+\begin{tikzpicture}[remember~picture,overlay]
+\usebeamercolor{standin}
+\usebeamercolor{frametitle}
+\usebeamercolor{progress~bar~in~head/foot}
+
+\coordinate (localCenter);
+ \fill[fill=progress~bar~in~head/foot.bg] (localCenter) circle (\gothamProgressCircLogoOuterRadius);
+ % draw the inner circle
+ \fill[fill=frametitle.bg] (localCenter) circle (\gothamProgressCircLogoInnerRadius);
+\node at (localCenter) {\gothamInstituteLogoCircle[1.9\gothamProgressCircLogoRadius]};
+
+%% draw progress circle/bar
+\bool_if:NTF \l_gotham_ProgCircleMoving_bool {
+
+%% compute the angle for the progress circle
+\bool_if:NTF \l_gotham_progbar_advancement_tlbr_bool {
+\fp_set:Nn \l_gotham_ratio_progresscircle_fp {-(360)*\insertframenumber/\inserttotalframenumber }
+}{
+\fp_set:Nn \l_gotham_ratio_progresscircle_fp {(360)*(\insertframenumber/\inserttotalframenumber)}
+}
+
+\draw[
+color=progress~bar~in~head/foot.fg,
+line~width=0.6*\gothamProgressCircBorderWidth
+]
+(localCenter)
+++
+([
+xshift=\gothamCounterRadius
+]localCenter)
+arc[
+radius=\gothamCounterRadius,
+start~angle=0,
+end~angle={\fp_eval:n \l_gotham_ratio_progresscircle_fp}
+]
+;
+
+\fill[fill=frametitle.bg]
+([
+xshift={\gothamCounterRadius}
+]localCenter.center)
+circle (0.3*\gothamProgressCircBorderWidth)
+;
+\node[
+]
+(pagenumframe) at (
+[rotate=
+{\fp_eval:n {\l_gotham_ratio_progresscircle_fp}},
+xshift=\gothamCounterRadius
+]localCenter) {}
+;
+\filldraw[
+draw=progress~bar~in~head/foot.bg,
+fill=standin.bg,
+thick,
+]
+(pagenumframe) circle (\gothamCounterCircleRadius)
+;
+\node[at=(pagenumframe.center), anchor=center] {
+{\usebeamercolor[fg]{standin}\tiny\insertframenumber}
+};
+}{
+
+%% compute the angle for the progress circle
+\bool_if:NTF \l_gotham_progbar_advancement_tlbr_bool {
+\fp_set:Nn \l_gotham_ratio_progresscircle_fp {-(360-2\l_gotham_angle_counterradius_fp)*\insertframenumber/\inserttotalframenumber -\l_gotham_angle_counterradius_fp}
+}{
+\fp_set:Nn \l_gotham_ratio_progresscircle_fp {(360-2\l_gotham_angle_counterradius_fp)*(\insertframenumber/\inserttotalframenumber) +\l_gotham_angle_counterradius_fp}
+}
+
+\draw[
+color=progress~bar~in~head/foot.fg,
+line~width=0.6*\gothamProgressCircBorderWidth
+]
+(localCenter)
+++
+([rotate={\fp_eval:n {\l_gotham_angle_counterradius_fp}},
+xshift=\gothamCounterRadius
+]localCenter)
+arc[
+radius=\gothamCounterRadius,
+start~angle={\fp_eval:n \l_gotham_angle_counterradius_fp},
+end~angle={\fp_eval:n \l_gotham_ratio_progresscircle_fp}
+]
+;
+
+\fill[fill=frametitle.bg]
+([
+rotate={\fp_eval:n {\l_gotham_ratio_progresscircle_fp}}, xshift={\gothamCounterRadius}
+]localCenter.center)
+circle (0.3*\gothamProgressCircBorderWidth)
+;
+\node[] (leftick)
+at ([xshift={\gothamProgressCircLogoOuterRadius+1.25ex}]localCenter) {}
+;
+%% draw a line ticks
+\draw[
+color=frametitle.fg,
+fill=frametitle.fg,
+]
+([xshift=\gothamProgressCircLogoOuterRadius,yshift={-0.05ex}] localCenter)
+rectangle ([yshift={0.05ex}] leftick)
+;
+\node[ at=(leftick), anchor=west, inner~sep = 1pt,]
+{\usebeamercolor[fg]{frametitle}\tiny\inserttotalframenumber}
+;
+\node[
+]
+(pagenumframe) at ([xshift=\gothamCounterRadius]localCenter) {}
+;
+\filldraw[
+draw=progress~bar~in~head/foot.bg,
+fill=standin.bg,
+thick,
+]
+(pagenumframe) circle (\gothamCounterCircleRadius)
+;
+\node[at=(pagenumframe.center), anchor=center] {
+{\usebeamercolor[fg]{standin}\tiny\insertframenumber}
+};
+}
+\end{tikzpicture}
+\bool_if:NTF \l_gotham_ProgCircleMoving_bool {
+\hspace{\gothamProgressCircLogoOuterRadius+0.75ex}
+}{
+\hspace{\gothamProgressCircLogoOuterRadius+3ex}
+}
+ % \tikzexternalenable
+}
+
+%%%%
+\keys_define:nn { gotham / outer }{
+progressbar~position .choice:,
+progressbar~position .usage:n = { general },
+progressbar~position .default:n = { none },
+
+progressbar~position / none .code:n = {
+\tl_set:Nn \l__gotham_out_tmp_pbar_tl {none}
+
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {head} {
+}{
+\setbeamertemplate{headline}[default/\prop_item:Nn \l__gotham_template_name_prop {headline/default}]
+}
+\setbeamertemplate{frametitle}[default/\prop_item:Nn \l__gotham_template_name_prop {frametitle/default}]
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {foot} {
+}{
+\setbeamertemplate{footline}[default/\prop_item:Nn \l__gotham_template_name_prop {footline/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {left} {
+}{
+\setbeamertemplate{sidebar~left}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~left/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {right} {
+}{
+\setbeamertemplate{sidebar~right}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~right/default}]
+}
+
+\__gotham_set_prop_template:nn{includeLogo/default}{gotham~square}
+\setbeamertemplate{section~in~head/foot~shaded}[default/\prop_item:Nn \l__gotham_template_name_prop {section~in~head/foot~shaded/default}]
+\setbeamertemplate{section~in~head/foot}[default/\prop_item:Nn \l__gotham_template_name_prop {section~in~head/foot/default}]
+},
+progressbar~position / head .code:n = {
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {head} {
+} {
+\tl_set:Nn \l__gotham_out_tmp_pbar_tl {head}
+
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {head} {
+}{
+\setbeamertemplate{headline}[default/\prop_item:Nn \l__gotham_template_name_prop {headline/default}]
+}
+\setbeamertemplate{frametitle}[default/\prop_item:Nn \l__gotham_template_name_prop {frametitle/default}]
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {foot} {
+}{
+\setbeamertemplate{footline}[default/\prop_item:Nn \l__gotham_template_name_prop {footline/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {left} {
+}{
+\setbeamertemplate{sidebar~left}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~left/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {right} {
+}{
+\setbeamertemplate{sidebar~right}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~right/default}]
+}
+
+\addtobeamertemplate{headline}{}{
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {head} {
+\usebeamertemplate*{progress~bar~in~head/foot}
+}{}
+}
+}
+},
+progressbar~position / frametitle .code:n = {
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {frametitle} {
+} {
+\tl_set:Nn \l__gotham_out_tmp_pbar_tl {frametitle}
+
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {head} {
+}{
+\setbeamertemplate{headline}[default/\prop_item:Nn \l__gotham_template_name_prop {headline/default}]
+}
+\setbeamertemplate{frametitle}[default/\prop_item:Nn \l__gotham_template_name_prop {frametitle/default}]
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {foot} {
+}{
+\setbeamertemplate{footline}[default/\prop_item:Nn \l__gotham_template_name_prop {footline/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {left} {
+}{
+\setbeamertemplate{sidebar~left}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~left/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {right} {
+}{
+\setbeamertemplate{sidebar~right}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~right/default}]
+}
+
+\addtobeamertemplate{frametitle}{}{
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {frametitle} {
+\usebeamertemplate*{progress~bar~in~head/foot}
+}{}
+}
+}
+},
+progressbar~position / foot .code:n = {
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {footline} {
+} {
+\tl_set:Nn \l__gotham_out_tmp_pbar_tl {footline}
+
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {head} {
+}{
+\setbeamertemplate{headline}[default/\prop_item:Nn \l__gotham_template_name_prop {headline/default}]
+}
+\setbeamertemplate{frametitle}[default/\prop_item:Nn \l__gotham_template_name_prop {frametitle/default}]
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {foot} {
+}{
+\setbeamertemplate{footline}[default/\prop_item:Nn \l__gotham_template_name_prop {footline/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {left} {
+}{
+\setbeamertemplate{sidebar~left}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~left/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {right} {
+}{
+\setbeamertemplate{sidebar~right}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~right/default}]
+}
+
+\addtobeamertemplate{footline}{}{
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {footline} {
+\usebeamertemplate*{progress~bar~in~head/foot}
+}{}
+}
+}
+},
+progressbar~position / circlehead .code:n = {
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {circlehead} {
+} {
+\tl_set:Nn \l__gotham_out_tmp_pbar_tl {circlehead}
+
+%%%\prop_put:Nnn \l__gotham_template_name_SAVE_prop {includeLogo/default} {gotham~square} % not needed after all.
+\__gotham_set_prop_template:nn{includeLogo/default}{gotham~circle}
+\__gotham_set_template:nn{section~in~head/foot~shaded}{default/gotham~secSubsec}
+\__gotham_set_template:nn{section~in~head/foot}{default/gotham~secSubsec}
+
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {head} {
+\addtobeamertemplate{headline}{}{
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {circlehead} {
+\begin{beamercolorbox}[wd=1.0\paperwidth, ht=2.5ex, dp=1.4ex, left]{headfoot}
+\usebeamerfont{section~in~head/foot}\hspace*{3.5ex}
+\usebeamertemplate{section~in~head/foot}
+\end{beamercolorbox}
+}{}
+}
+}{
+\__gotham_set_template:nn{headline}{default/gotham~section}
+}
+\setbeamertemplate{frametitle}[default/\prop_item:Nn \l__gotham_template_name_prop {frametitle/default}]
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {foot} {
+}{
+\setbeamertemplate{footline}[default/\prop_item:Nn \l__gotham_template_name_prop {footline/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {left} {
+}{
+\setbeamertemplate{sidebar~left}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~left/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {right} {
+}{
+\setbeamertemplate{sidebar~right}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~right/default}]
+}
+}
+},
+progressbar~position / left .code:n = {
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {left} {
+} {
+\tl_set:Nn \l__gotham_out_tmp_pbar_tl {left}
+
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {head} {
+}{
+\setbeamertemplate{headline}[default/\prop_item:Nn \l__gotham_template_name_prop {headline/default}]
+}
+\setbeamertemplate{frametitle}[default/\prop_item:Nn \l__gotham_template_name_prop {frametitle/default}]
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {foot} {
+}{
+\setbeamertemplate{footline}[default/\prop_item:Nn \l__gotham_template_name_prop {footline/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {left} {
+}{
+\setbeamertemplate{sidebar~left}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~left/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {right} {
+}{
+\setbeamertemplate{sidebar~right}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~right/default}]
+}
+
+\addtobeamertemplate{sidebar~left}{}{
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {left} {
+\usebeamertemplate*{progress~bar~in~left}
+}{}
+}
+}
+},
+progressbar~position / right .code:n = {
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {right} {
+} {
+\tl_set:Nn \l__gotham_out_tmp_pbar_tl {right}
+
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {head} {
+}{
+\setbeamertemplate{headline}[default/\prop_item:Nn \l__gotham_template_name_prop {headline/default}]
+}
+\setbeamertemplate{frametitle}[default/\prop_item:Nn \l__gotham_template_name_prop {frametitle/default}]
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {foot} {
+}{
+\setbeamertemplate{footline}[default/\prop_item:Nn \l__gotham_template_name_prop {footline/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {left} {
+}{
+\setbeamertemplate{sidebar~left}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~left/default}]
+}
+\tl_if_eq:VnTF \l__gotham_out_tmp_mfnposi_tl {right} {
+}{
+\setbeamertemplate{sidebar~right}[default/\prop_item:Nn \l__gotham_template_name_prop {sidebar~right/default}]
+}
+
+\addtobeamertemplate{sidebar~right}{}{
+\tl_if_eq:VnTF \l__gotham_out_tmp_pbar_tl {right} {
+\usebeamertemplate*{progress~bar~in~right}
+}{}
+}
+}
+},
+
+progressbar~position / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'progressbar~position',~so~being~ignored. }{helping~message: progressbar~position / unknown} },
+}
+
+%%%%
+\keys_define:nn { gotham / outer }{
+progressbar~style .choice:,
+progressbar~style .usage:n = { general },
+progressbar~style .default:n = { rectangle },
+
+progressbar~style / rectangle .code:n = {
+\__gotham_set_template:nn{progress~bar~in~head/foot}{gotham~rectangle}
+\__gotham_set_template:nn{progress~bar~in~left}{gotham~rectangle}
+\__gotham_set_template:nn{progress~bar~in~right}{gotham~rectangle}
+},
+
+progressbar~style / rounded~box .code:n = {
+\__gotham_set_template:nn{progress~bar~in~head/foot}{gotham~rounded~box}
+\__gotham_set_template:nn{progress~bar~in~left}{gotham~rounded~box}
+\__gotham_set_template:nn{progress~bar~in~right}{gotham~rounded~box}
+},
+
+progressbar~style / moving~circle .code:n = {
+\bool_set_true:N \l_gotham_ProgCircleMoving_bool
+},
+
+progressbar~style / fixed~circle .code:n = {
+\bool_set_false:N \l_gotham_ProgCircleMoving_bool
+},
+
+progressbar~style / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'progressbar~style',~so~being~ignored. }{helping~message: progressbar~style / unknown} },
+}
+
+%%%%
+\keys_define:nn { gotham / outer }{
+progressbar~advancement .choice:,
+progressbar~advancement .usage:n = { general },
+progressbar~advancement .default:n = { tlbr },
+
+progressbar~advancement / tlbr .code:n = {
+\bool_set_true:N \l_gotham_progbar_advancement_tlbr_bool
+},
+progressbar~advancement / TLBR .code:n = {
+\bool_set_true:N \l_gotham_progbar_advancement_tlbr_bool
+},
+
+progressbar~advancement / brlt .code:n = {
+\bool_set_false:N \l_gotham_progbar_advancement_tlbr_bool
+},
+progressbar~advancement / BRLT .code:n = {
+\bool_set_false:N \l_gotham_progbar_advancement_tlbr_bool
+},
+
+progressbar~advancement / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'progressbar~advancement',~so~being~ignored. }{helping~message: progressbar~advancement / unknown} },
+}
+
+%%%%
+\keys_define:nn { gotham / outer }{
+progressbar~mfn .choice:,
+progressbar~mfn .usage:n = { general },
+progressbar~mfn .default:n = { off },
+
+progressbar~mfn / true .code:n = {
+\bool_set_true:N \l_gotham_pmfn_bool
+
+\__gotham_set_template:nn{section~in~head/foot~shaded}{default/empty}
+\__gotham_set_template:nn{section~in~head/foot}{default/empty}
+\renewcommand{\gothamPatchSectionbox}{
+\ht\beamer@sectionbox=0.ex
+\dp\beamer@sectionbox=0.ex
+}
+},
+progressbar~mfn / on .code:n = {
+\bool_set_true:N \l_gotham_pmfn_bool
+
+\__gotham_set_template:nn{section~in~head/foot~shaded}{default/empty}
+\__gotham_set_template:nn{section~in~head/foot}{default/empty}
+\renewcommand{\gothamPatchSectionbox}{
+\ht\beamer@sectionbox=0.ex
+\dp\beamer@sectionbox=0.ex
+}
+},
+progressbar~mfn / enable .code:n = {
+\bool_set_true:N \l_gotham_pmfn_bool
+
+\__gotham_set_template:nn{section~in~head/foot~shaded}{default/empty}
+\__gotham_set_template:nn{section~in~head/foot}{default/empty}
+\renewcommand{\gothamPatchSectionbox}{
+\ht\beamer@sectionbox=0.ex
+\dp\beamer@sectionbox=0.ex
+}
+},
+
+progressbar~mfn / false .code:n = { \bool_set_false:N \l_gotham_pmfn_bool },
+progressbar~mfn / off .code:n = { \bool_set_false:N \l_gotham_pmfn_bool },
+progressbar~mfn / disable .code:n = { \bool_set_false:N \l_gotham_pmfn_bool },
+
+progressbar~mfn / unknown .code:n = { \PackageWarning{ gotham } { The~choice~'#1'~is~unknown~for~the~(known)~option~'progressbar~mfn',~so~being~ignored. }{helping~message: progressbar~mfn / unknown} },
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\keys_set:nn { gotham / outer } {
+sidebar~canvas~right~template, sidebar~canvas~left~template,
+edging~default,
+frametitle~template, framesubtitle~template, frametitle~continuation~template,
+numbering,
+rotateFooter~default,
+footer~template,
+mini~frames~shape, mini~frames~bundle,
+mini~frames~compress,
+mini~frames~nav~spreading,
+mini~frames~nav~sectioning,
+mini~frames~nav~position,
+progressbar~position, progressbar~style, progressbar~advancement, progressbar~mfn,
+}
+
+\ProcessKeyOptions[ gotham / outer ]
+
+%%
+%% Adapted from classic "A model .dtx file" by Joseph Wright
+%% https://www.texdev.net/2009/10/06/a-model-dtx-file/
+%%
+%% End of file `beamerouterthemegotham.sty'.
diff --git a/Master/texmf-dist/tex/latex/beamertheme-gotham/beamerthemegotham.sty b/Master/texmf-dist/tex/latex/beamertheme-gotham/beamerthemegotham.sty
new file mode 100644
index 00000000000..cec7af94df2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/beamertheme-gotham/beamerthemegotham.sty
@@ -0,0 +1,136 @@
+%%
+%% This is file `beamerthemegotham.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% gotham.dtx (with options: `package')
+%%
+%% Copyright (C) 2023-20** by Romain NOËL <romainoel@free.fr>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Romain NOËL.
+%% Contributors: Romain NOËL (2023-20**)
+%%
+\ProvidesExplPackage{beamerthemegotham}{2024-11-11}{1.2.0.a}{A modern, minimal-ish, versatile and extendable yet robust theme for Beamer}
+\RequirePackage{expl3}
+\RequirePackage{xparse}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%% PACKAGE %%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\usefonttheme{gotham}
+\usecolortheme{gotham}
+\useinnertheme{gotham}
+\useoutertheme{gotham}
+
+%%%%% Setting keys %%%%%
+
+\int_new:N \l_gotham_lookup_cnt
+\int_set:Nn \l_gotham_lookup_cnt {0}
+
+\seq_const_from_clist:Nn \c__gotham_load_submodules_seq { font, color, inner, outer }
+
+\cs_new_protected:Npn \__gotham_lookup_keymodules:nn #1#2
+{
+\int_incr:N \l_gotham_lookup_cnt
+
+\if_int_compare:w \l_gotham_lookup_cnt < 2
+\else:
+\seq_map_inline:Nn \c__gotham_load_submodules_seq
+{
+\keys_if_exist:nnT { gotham / ##1 } {#1}
+{
+\tl_if_empty:nTF {#2}
+{ \keys_set:nn { gotham / ##1 } { #1 } }
+{ \keys_set:nn { gotham / ##1 } { #1 = {#2} } }
+\prg_break:
+}
+}
+\msg_error:nnn { gotham } { unknown-key } {#1}
+\prg_break_point:
+\fi:
+}
+\cs_generate_variant:Nn \__gotham_lookup_keymodules:nn { Vn }
+\msg_new:nnn { gotham } { unknown-key } { Unknown~ key~ #1~ encountered. }
+
+\prop_new:N \l__gotham_all_all_user_keys_prop
+\prop_const_from_keyval:Nn \c__gotham_all_pkg_keys_prop {}
+
+\keys_define:nn { gotham / all / all }
+{
+unknown .code:n =
+{\__gotham_lookup_keymodules:Vn \l_keys_key_str {#1}}
+}
+
+\cs_new_protected:Npn \__gotham_set_default_from_keyval:nnn #1 #2 #3
+{ %%
+\tl_if_novalue:nTF {#2}
+{ % no user keys given so _user_keys_prop is taking pkg prop
+\prop_set_eq:cc { l__gotham_#3_#1_user_keys_prop } { c__gotham_#3_pkg_keys_prop }
+}{ % user key given and put it in prop
+\prop_put_from_keyval:cn { l__gotham_#3_#1_user_keys_prop } {#2}
+}% end if
+\__gotham_set_default_auxi:cnn { l__gotham_#3_#1_user_keys_prop } {#1} {#3}
+\keys_set:nn { gotham/#3/#1 } { default }
+}
+\cs_new_protected:Npn \__gotham_set_default_auxi:Nnn #1 #2 #3
+{
+\__gotham_set_default_auxii:fnn { \prop_to_keyval:N #1 } {#2} {#3}
+}
+\cs_generate_variant:Nn \__gotham_set_default_auxi:Nnn { c }
+\cs_new_protected:Npn \__gotham_set_default_auxii:nnn #1 #2 #3
+{
+\keys_define:nn { gotham/#3/#2 } { default .meta:n = {#1} }
+}
+\cs_generate_variant:Nn \__gotham_set_default_auxii:nnn { f }
+\DeclareDocumentCommand{\gothamset}{ m }
+{
+\__gotham_set_default_from_keyval:nnn { all } {#1} { all }
+\keys_set:nn { gotham/all/all } { default }
+}
+
+\def\gotham@plaintitleformat#1{#1}
+\providecommand{\mreducelistspacing}{\vspace{-\topsep}}
+
+\ProcessOptionsBeamer
+\keys_define:nn { gotham / font }
+{
+unknown .code:n =
+{\__gotham_lookup_keymodules:Vn \l_keys_key_str {#1}}
+}
+\keys_define:nn { gotham / color }
+{
+unknown .code:n =
+{\__gotham_lookup_keymodules:Vn \l_keys_key_str {#1}}
+}
+\keys_define:nn { gotham / inner }
+{
+unknown .code:n =
+{\__gotham_lookup_keymodules:Vn \l_keys_key_str {#1}}
+}
+\keys_define:nn { gotham / outer }
+{
+unknown .code:n =
+{\__gotham_lookup_keymodules:Vn \l_keys_key_str {#1}}
+}
+
+\ProcessKeyOptions[ gotham / font ]
+\ProcessKeyOptions[ gotham / color ]
+\ProcessKeyOptions[ gotham / inner ]
+\ProcessKeyOptions[ gotham / outer ]
+
+%%
+%% Adapted from classic "A model .dtx file" by Joseph Wright
+%% https://www.texdev.net/2009/10/06/a-model-dtx-file/
+%%
+%% End of file `beamerthemegotham.sty'.
diff --git a/Master/texmf-dist/tex/latex/beamertheme-light/beamertheme-light.sty b/Master/texmf-dist/tex/latex/beamertheme-light/beamertheme-light.sty
index c2ceecc4b4a..2a3a28fc434 100644
--- a/Master/texmf-dist/tex/latex/beamertheme-light/beamertheme-light.sty
+++ b/Master/texmf-dist/tex/latex/beamertheme-light/beamertheme-light.sty
@@ -1,115 +1,16 @@
%%%%% Package ``beamertheme-light'': a colored beamer theme %%%%%
%%%%% Authors: Fabien Vergnet and Vivien Goepp %%%%%
%%%%% Contact: f.j.vergnet@gmail.com and vivien.goepp@gmail.com %%%%%
-%%%%% Package version 1.0 (29/01/2019) %%%%%
-
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{light}[2019/01/29 Beamer style package]
-
-\mode<presentation>
-
-%%%%% Define colors %%%%%
-% Defaut:
-\definecolor{vertfonce}{rgb}{0.20,0.43,0.09}
-% Blue:
-\definecolor{frenchblue}{rgb}{0.0, 0.45, 0.73}
-\definecolor{sanddune}{rgb}{0.59, 0.44, 0.09}
-% Purple:
-\definecolor{darkmagenta}{rgb}{0.55, 0.0, 0.55}
-\definecolor{byzantium}{rgb}{0.44, 0.16, 0.39}
-\definecolor{sanddune}{rgb}{0.59, 0.44, 0.09}
-% Beige:
-\definecolor{darkpastelred}{rgb}{0.76, 0.23, 0.13}
-\definecolor{desertsand}{rgb}{0.93, 0.79, 0.69}
-
-%%%%% Define body and title colors %%%%%
-%% Foreground colors
-\newcommand{\wordcolor}{vertfonce} % Text color
-%% Optional colors
-\DeclareOption{blue}{\renewcommand{\wordcolor}{frenchblue}}
-\DeclareOption{red}{\renewcommand{\wordcolor}{darkpastelred}}
-\DeclareOption{purple}{\renewcommand{\wordcolor}{darkmagenta}}
-\DeclareOption*{\PackageWarning{descartes}{Unknown ‘\CurrentOption’}}
-\ProcessOptions\relax
-
-%% Background colors
-\newcommand{\strbg}{white!90!black} % Structure background color
-\DeclareOption{blue}{\renewcommand{\strbg}{sanddune!15!white}}
-\DeclareOption{red}{\renewcommand{\strbg}{desertsand!30!white}}
-\DeclareOption{purple}{\renewcommand{\strbg}{byzantium!25!white}}
-\DeclareOption*{\PackageWarning{descartes}{Unknown ‘\CurrentOption’}}
-\ProcessOptions\relax
-
-%% Set colors
-\setbeamercolor{title in head/foot}{fg=\wordcolor,bg=white!90!black}
-\setbeamercolor{structure}{fg=\wordcolor,bg=\strbg}
-\setbeamercolor{title}{fg=\wordcolor,bg=white}
-
-%%%%% Define title frame %%%%%
-\defbeamertemplate*{title page}{customized}[1][]
-{
- \vspace{1cm}
- \usebeamerfont{title}\usebeamercolor[fg]{title}\center{\huge \inserttitle}\par
- \center{\rule{0.6666\paperwidth}{0.02cm}\par}
- \bigskip
- \usebeamerfont{author}\usebeamercolor[black]{author}{\large \insertauthor}\\
- \bigskip
- \usebeamerfont{institute}{\small \insertinstitute}\par
- \bigskip
- \vspace{1cm}
- \usebeamerfont{date}{\small \insertdate}\par
+%%%%% Special thanks to: निरंजन <hi.niranjan@pm.me> %%%%%
+%%%%% Repository: https://github.com/goepp/beamertheme-light/ %%%%%
+%%%%% Package version 1.2 (18/12/2024) %%%%%
+%%%%% License: GNU General Public License, version 3
+\ProvidesPackage{beamertheme-light}[2024/12/09 v1.2]
+\usetheme{light}
+\PackageWarningNoLine{beamertheme-light}{%
+ You have issued \string usepackage{beamertheme-light}.
+ This method\MessageBreak of loading the "light" theme is
+ deprecated. Kindly use the\MessageBreak standard
+ \usetheme{light} command%
}
-%%%%% End define title frame %%%%%
-
-%%%%% Define footline %%%%%
-\setbeamertemplate{footline}
-{
- \leavevmode%
- \hbox{%
- \begin{beamercolorbox}[wd =.45\paperwidth, ht = 2.25ex, dp = 1ex, center]{author in head/foot}%
- \usebeamerfont{author in head/foot}\colorbox{structure.bg}{\makebox[0.45\paperwidth]{\insertshortauthor}}
- \end{beamercolorbox}%
- \begin{beamercolorbox}[wd =.45\paperwidth, ht = 2.25ex, dp = 1ex, center]{title in head/foot}%
- \usebeamerfont{title in head/foot}\colorbox{structure.bg}{\makebox[0.45\paperwidth]{\insertshorttitle}}
- \end{beamercolorbox}%
- \begin{beamercolorbox}[wd=.10\paperwidth, ht = 2.25ex, dp = 1ex, right]{date in head/foot}%
- \usebeamerfont{date in head/foot}\colorbox{structure.bg}{\makebox[0.10\paperwidth]{
- \insertframenumber{} / \inserttotalframenumber\hspace*{2ex}}}
- \end{beamercolorbox}}%
- \vskip0pt%
-}
-%%%%% End define footline %%%%%
-
-%%%%% Define command for the "Thank you" frame
-\newcommand{\thankframe}[1]{
-\setbeamercolor{background canvas}{fg = title.fg,bg = title.fg!50!black}
-\setbeamertemplate{footline}{}
-\begin{frame}
- \center{\Huge \textcolor{white}{#1}}
-\end{frame}
-\setbeamercolor{structure}{fg = \wordcolor, bg = \strbg}
-\setbeamercolor{background canvas}{fg = black,bg = white}
-}
-%%%%% End define command for the "Thank you" frame
-
-%% Rounded block (for definition, prop, theorems, etc...)
-\setbeamertemplate{blocks}[rounded][shadow = true]
-
-%% No navigation symbols
-\setbeamertemplate{navigation symbols}{}
-
-%% Redefine itemize
-\setbeamercolor{item}{fg = title.fg, bg = title.fg}
-\setbeamertemplate{itemize item}{{\tiny{\textbullet}}}
-
-%% Redefine the way the legend of a figure is written
-\setbeamertemplate{caption}{\raggedright\scriptsize{\insertcaption}\par}
-
-%% To have "[number]" before any reference in bibliography
-\setbeamertemplate{bibliography item}[text]
-
-%% Remove 1 from the counter (title frame is 0)
-\addtocounter{framenumber}{-1}
-
-\mode
-<all>
+\endinput
diff --git a/Master/texmf-dist/tex/latex/beamertheme-light/beamerthemelight.sty b/Master/texmf-dist/tex/latex/beamertheme-light/beamerthemelight.sty
new file mode 100644
index 00000000000..34e5f972eaa
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/beamertheme-light/beamerthemelight.sty
@@ -0,0 +1,113 @@
+%%%%% Theme ``beamerthemelight'': a colored beamer theme %%%%%
+%%%%% Authors: Fabien Vergnet and Vivien Goepp %%%%%
+%%%%% Contact: f.j.vergnet@gmail.com and vivien.goepp@gmail.com %%%%%
+%%%%% Special thanks to: निरंजन <hi.niranjan@pm.me> %%%%%
+%%%%% Repository: https://github.com/goepp/beamertheme-light/ %%%%%
+%%%%% Package version 1.2 (18/12/2024) %%%%%
+%%%%% License: GNU General Public License, version 3
+\mode<presentation>
+
+%%%%% Define colors %%%%%
+% Defaut:
+\definecolor{vertfonce}{rgb}{0.20,0.43,0.09}
+% Blue:
+\definecolor{frenchblue}{rgb}{0.0, 0.45, 0.73}
+\definecolor{sanddune}{rgb}{0.59, 0.44, 0.09}
+% Purple:
+\definecolor{darkmagenta}{rgb}{0.55, 0.0, 0.55}
+\definecolor{byzantium}{rgb}{0.44, 0.16, 0.39}
+\definecolor{sanddune}{rgb}{0.59, 0.44, 0.09}
+% Beige:
+\definecolor{darkpastelred}{rgb}{0.76, 0.23, 0.13}
+\definecolor{desertsand}{rgb}{0.93, 0.79, 0.69}
+
+%%%%% Define body and title colors %%%%%
+%% Foreground colors
+\newcommand{\light@wordcolor}{vertfonce} % Text color
+%% Optional colors
+\DeclareOption{blue}{\renewcommand{\light@wordcolor}{frenchblue}}
+\DeclareOption{red}{\renewcommand{\light@wordcolor}{darkpastelred}}
+\DeclareOption{purple}{\renewcommand{\light@wordcolor}{darkmagenta}}
+\DeclareOption*{\PackageWarning{descartes}{Unknown ‘\CurrentOption’}}
+\ProcessOptions\relax
+
+%% Background colors
+\newcommand{\light@strbg}{white!90!black} % Structure background color
+\DeclareOption{blue}{\renewcommand{\light@strbg}{sanddune!15!white}}
+\DeclareOption{red}{\renewcommand{\light@strbg}{desertsand!30!white}}
+\DeclareOption{purple}{\renewcommand{\light@strbg}{byzantium!25!white}}
+\DeclareOption*{\PackageWarning{descartes}{Unknown ‘\CurrentOption’}}
+\ProcessOptions\relax
+
+%% Set colors
+\setbeamercolor{title in head/foot}{fg=\light@wordcolor,bg=white!90!black}
+\setbeamercolor{structure}{fg=\light@wordcolor,bg=\light@strbg}
+\setbeamercolor{title}{fg=\light@wordcolor,bg=white}
+
+%%%%% Define title frame %%%%%
+\defbeamertemplate*{title page}{customized}[1][]%
+{%
+ \vspace{1cm}%
+ \usebeamerfont{title}\usebeamercolor[fg]{title}\center{\huge \inserttitle}\par
+ \center{\rule{0.6666\paperwidth}{0.02cm}\par}%
+ \bigskip
+ \usebeamerfont{author}\usebeamercolor[black]{author}{\large \insertauthor}\\%
+ \bigskip
+ \usebeamerfont{institute}{\small \insertinstitute}\par
+ \bigskip
+ \vspace{1cm}%
+ \usebeamerfont{date}{\small \insertdate}\par
+}
+%%%%% End define title frame %%%%%
+
+%%%%% Define footline %%%%%
+\setbeamertemplate{footline}%
+{%
+ \leavevmode
+ \hbox{%
+ \begin{beamercolorbox}[wd =.45\paperwidth, ht = 2.25ex, dp = 1ex, center]{author in head/foot}%
+ \usebeamerfont{author in head/foot}\colorbox{structure.bg}{\makebox[0.45\paperwidth]{\insertshortauthor}}%
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[wd =.45\paperwidth, ht = 2.25ex, dp = 1ex, center]{title in head/foot}%
+ \usebeamerfont{title in head/foot}\colorbox{structure.bg}{\makebox[0.45\paperwidth]{\insertshorttitle}}%
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[wd=.10\paperwidth, ht = 2.25ex, dp = 1ex, right]{date in head/foot}%
+ \usebeamerfont{date in head/foot}\colorbox{structure.bg}{\makebox[0.10\paperwidth]{%
+ \insertframenumber{} / \inserttotalframenumber\hspace*{2ex}}}%
+ \end{beamercolorbox}}%
+ \vskip0pt\relax
+}
+%%%%% End define footline %%%%%
+
+%%%%% Define command for the "Thank you" frame
+\newcommand{\thankframe}[1]{%
+\setbeamercolor{background canvas}{fg = title.fg,bg = title.fg!50!black}%
+\setbeamertemplate{footline}{}%
+\begin{frame}%
+ \center{\Huge \textcolor{white}{#1}}%
+\end{frame}%
+\setbeamercolor{structure}{fg = \light@wordcolor, bg = \light@strbg}%
+\setbeamercolor{background canvas}{fg = black,bg = white}%
+}
+%%%%% End define command for the "Thank you" frame
+
+%% Rounded block (for definition, prop, theorems, etc...)
+\setbeamertemplate{blocks}[rounded][shadow = true]
+
+%% No navigation symbols
+\setbeamertemplate{navigation symbols}{}
+
+%% Redefine itemize
+\setbeamercolor{item}{fg = title.fg, bg = title.fg}
+\setbeamertemplate{itemize item}{{\tiny{\textbullet}}}
+
+%% Redefine the way the legend of a figure is written
+\setbeamertemplate{caption}{\raggedright\scriptsize{\insertcaption}\par}
+
+%% To have "[number]" before any reference in bibliography
+\setbeamertemplate{bibliography item}[text]
+
+%% Remove 1 from the counter (title frame is 0)
+\addtocounter{framenumber}{-1}
+
+\mode<all>
diff --git a/Master/texmf-dist/tex/latex/beamertheme-mirage/beamerthemeMirage.sty b/Master/texmf-dist/tex/latex/beamertheme-mirage/beamerthemeMirage.sty
new file mode 100644
index 00000000000..d5df9791160
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/beamertheme-mirage/beamerthemeMirage.sty
@@ -0,0 +1,166 @@
+% beamerthemeMirage.sty v1.1.1 2025/01/19
+% by LianTze Lim (liantze@gmail.com)
+% A beamer theme inspired by Zhou Shen's `Mirage' song poster
+% 基于周深《反深代词》先行曲《蜃楼》歌曲海报色调的beamer主题
+\ProvidesPackage{beamerthemeMirage}
+
+\newif\ifMirage@light
+\DeclareOptionBeamer{light}{\Mirage@lighttrue}
+\ProcessOptionsBeamer
+
+\RequirePackage{regexpatch}
+\RequirePackage[fixed]{fontawesome5}
+\RequirePackage{relsize}
+
+\definecolor{MirageGray0}{RGB}{30,30,30}
+\definecolor{MirageGray1}{RGB}{48,48,48}
+\definecolor{MirageGray2}{RGB}{140,140,140}
+\definecolor{MirageGray3}{RGB}{60,66,71}
+\definecolor{MiragePink}{RGB}{212,183,183}
+\definecolor{MirageBlue}{RGB}{156,185,220}
+
+\ifMirage@light
+ \setbeamercolor{normal text}{fg=MirageGray3,bg=white}
+ \setbeamercolor{structure}{fg=MirageBlue!80!MirageGray0}
+ \setbeamercolor{item}{fg=MirageBlue!50!MirageGray0}
+\else
+ \setbeamercolor{normal text}{bg=MirageGray3,fg=white}
+ \setbeamercolor{structure}{fg=MirageBlue}
+ \setbeamercolor{item}{fg=MirageBlue!70!MirageGray0}
+\fi
+\setbeamercolor{alerted text}{fg=MiragePink!60!red!80!MirageGray0}
+\setbeamercolor{section in head/foot}{fg=structure!80}
+\setbeamercolor{page number in head/foot}{fg=structure!80}
+
+\xpatchcmd{\beamerboxesrounded}{#2}{\vspace*{0.5ex}#2\vspace*{0.5ex}}{}{}
+\xpatchcmd{\beamerboxesrounded}{\vskip2pt}{\vskip0.5ex}{}{}
+\pretocmd{\endbeamerboxesrounded}{\par\vspace*{0.5ex}}{}{}
+\usetheme[compress]{Singapore}
+\setbeamertemplate{blocks}[rounded]
+
+\setbeamerfont{block title}{family=\rmfamily,series=\bfseries}
+
+\ifMirage@light
+ \setbeamercolor{block body}{bg=MirageBlue!90,fg=MirageBlue!40!black}
+\else
+ \setbeamercolor{block body}{fg=MirageBlue,bg=MirageBlue!40!black}
+\fi
+\setbeamercolor{block title}{fg=MirageBlue!90,bg=MirageBlue!30!black}
+
+\setbeamercolor{block body example}{fg=MirageGray3,bg=MirageBlue!40}
+\setbeamercolor{block title example}{bg=MirageBlue!90,fg=MirageBlue!30!black}
+
+\setbeamercolor{block body alerted}{fg=MirageGray3,bg=MiragePink!30}
+\ifMirage@light
+ \setbeamercolor{block title alerted}{fg=MiragePink!60!red!80!MirageGray0,bg=MiragePink!80}
+\else
+ \setbeamercolor{block title alerted}{fg=MiragePink!60!red!80!MirageGray0,bg=MiragePink}
+\fi
+
+\newcommand{\MirageProofPrefix}{\faEllipsisH}
+\newcommand{\MirageTheoremPrefix}{\faChevronCircleRight}
+
+\addtobeamertemplate{proof begin}{%
+ \let\oldinsertproofname\insertproofname%
+ \def\insertproofname{{\color{block title.fg!50!block title.bg}\relsize{-1}\MirageProofPrefix}\oldinsertproofname}%
+}{}
+
+\addtobeamertemplate{theorem begin}{%
+ \let\oldinserttheoremname\inserttheoremname%
+ \def\inserttheoremname{{\color{block title.fg!50!block title.bg}\relsize{-1}\MirageTheoremPrefix}\oldinserttheoremname}%
+}{}
+
+
+\ifMirage@light
+ \setbeamercolor{pullquote}{fg=MiragePink!90!normal text.fg}
+\else
+ \setbeamercolor{pullquote}{fg=MiragePink}
+\fi
+\setbeamerfont{pullquote}{family=\rmfamily,size=\Large,shape=\itshape}
+\newcommand{\MiragePullquoteOpen}{\faQuoteLeft}
+\newcommand{\MiragePullquoteClose}{\faQuoteRight}
+\newenvironment{pullquote}{%
+ \usebeamercolor{pullquote}%
+ \color{pullquote.fg!15!normal text.bg}\hrule width \hsize height 0.15ex\vskip2ex%
+ \begin{beamercolorbox}[colsep=1ex,leftskip=1em]{pullquote}%
+ \usebeamerfont{pullquote}%
+ \raisebox{0pt}[0pt][0pt]{\makebox[0pt]{\color{pullquote.fg!30!normal text.bg}\hskip-1em\huge\MiragePullquoteOpen}}%
+ \ignorespaces%
+}{%
+ \end{beamercolorbox}%
+ \vskip2ex\hrule width \hsize height 0.15ex%
+}
+
+
+\setbeamertemplate{itemize items}[circle]
+\setbeamertemplate{navigation symbols}{}
+\setbeamertemplate{frametitle continuation}[from second]
+\ifMirage@light
+ \pgfdeclareverticalshading{mirage@headfade}{\the\paperwidth}{%
+ color(0ex)=(white);%
+ color(0.2ex)=(MirageBlue);%
+ color(1.3ex)=(MiragePink);%
+ color(1.7ex)=(white)%
+ }
+\else
+ \pgfdeclareverticalshading{mirage@headfade}{\the\paperwidth}{%
+ color(0ex)=(MirageGray0);%
+ color(0.2ex)=(MirageBlue);%
+ color(1.3ex)=(MiragePink);%
+ color(1.7ex)=(MirageGray1)%
+ }
+\fi
+\addtobeamertemplate{headline}{}{%
+ \vskip1ex%
+ \pgfpathrectangle{\pgfpoint{0pt}{0pt}}{\pgfpoint{\paperwidth}{1.7ex}}
+ \pgfuseshading{mirage@headfade}
+ \vskip-2ex%
+}{}
+
+\RequirePackage{tikz}
+\usetikzlibrary{shadows}
+
+\pgfdeclareradialshading{tikz@lib@fade@circle@50}{\pgfpointorigin}{
+ color(0pt)=(pgftransparent!0); color(20bp)=(pgftransparent!0);
+ color(25bp)=(pgftransparent!100); color(80bp)=(pgftransparent!100)}%
+\pgfdeclarefading{circle with fuzzy edge 50 percent}{\pgfuseshading{tikz@lib@fade@circle@50}}%
+
+\newcommand{\MirageFootlineContents}{\insertframenumber{} of \inserttotalframenumber{}}
+\newlength{\MirageGlowRadius}
+\setlength{\MirageGlowRadius}{0.2ex}
+\newbox{\Mirage@smalleclipse}
+\AddToHook{begindocument/before}{
+ \savebox{\Mirage@smalleclipse}{%
+ \usebeamercolor{normal text}%
+ \tikz{\node[anchor=center,circle,circular glow={fill=MiragePink,shadow scale=2.5, path fading={circle with fuzzy edge 50 percent}},draw=normal text.fg,fill=normal text.fg,outer sep=0pt,inner sep=\MirageGlowRadius](O){};%
+ \draw[line width=0.1ex,draw=normal text.fg](0.3ex,0pt) -- ++(0.75\paperwidth,0pt);%
+ }%
+ }%
+}
+
+\setbeamertemplate{footline}{%
+ \begin{beamercolorbox}[ht=2.5ex,dp=1ex,right,sep=0.5ex]{page number in head/foot}%
+ \leavevmode\usebox{\Mirage@smalleclipse}%
+ \vskip-1ex%
+ \MirageFootlineContents\hspace*{1ex}%
+ \end{beamercolorbox}%
+}{}
+
+\setbeamertemplate{frametitle}[default][left]
+\AddToHook{begindocument}{
+\ifdefined\addfontfeatures
+ \setbeamerfont{title}{family=\rmfamily\addfontfeatures{LetterSpace=5}}
+\else
+ \RequirePackage[letterspace=50]{microtype}
+ \setbeamerfont{title}{family=\rmfamily\lsstyle}
+\fi
+}
+\setbeamerfont{title}{size=\LARGE,series=\bfseries}
+\setbeamerfont{frametitle}{family=\rmfamily,size=\Large,series=\bfseries}
+
+\newcommand{\MirageFrametitlePrefix}{\faBorderStyle}
+\addtobeamertemplate{frametitle}{%
+ \let\oldinsertframetitle\insertframetitle%
+ \renewcommand{\insertframetitle}{{\relsize{-1}\color{frametitle.fg!50!frametitle.bg}\MirageFrametitlePrefix}\oldinsertframetitle}%
+}{}
+
diff --git a/Master/texmf-dist/tex/latex/beamertheme-rainbow/beamercolorthemerainbow.sty b/Master/texmf-dist/tex/latex/beamertheme-rainbow/beamercolorthemerainbow.sty
index f4f9a162ee4..7fba487ba7e 100644
--- a/Master/texmf-dist/tex/latex/beamertheme-rainbow/beamercolorthemerainbow.sty
+++ b/Master/texmf-dist/tex/latex/beamertheme-rainbow/beamercolorthemerainbow.sty
@@ -1,4 +1,4 @@
-% !TeX root = test.tex
+% !TeX root = ./testing/test.tex
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% The rainbow colour theme
@@ -9,10 +9,10 @@
% https://github.com/samcarter/beamertheme-rainbow
%
% Released under the LaTeX Project Public License v1.3c or later
-% See http://www.latex-project.org/lppl.txt
+% See https://www.latex-project.org/lppl.txt
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{beamercolorthemerainbow}[2024/04/28 version v0.2 Beamer colour theme with alternating theme colours]
+\ProvidesPackage{beamercolorthemerainbow}[2024/11/14 version v1.0 Beamer colour theme with alternating theme colours]
\mode<presentation>
@@ -36,7 +36,8 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\DeclareOptionBeamer{colors}{\def\rainbow@colors{#1}}
-\ExecuteOptionsBeamer{colors={rainbow@0,rainbow@1,rainbow@2,rainbow@3,rainbow@4,rainbow@5}}
+\DeclareOptionBeamer{auto}{\def\rainbow@auto{#1}}
+\ExecuteOptionsBeamer{colors={rainbow@0,rainbow@1,rainbow@2,rainbow@3,rainbow@4,rainbow@5},auto=frame}
\ProcessOptionsBeamer
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -50,18 +51,54 @@
\clist_new:N \l_rainbow_clist
\clist_set:Nx \l_rainbow_clist \rainbow@colors
-% setting colour based on frame number
-\pretocmd{\beamer@@@frame}{
+\newcounter{rainbow@count}
+
+% macro to switch to next colour
+\newcommand{\rainbow}{
+ \addtocounter{rainbow@count}{1}
\colorlet{beamer@structure@color}{
\clist_item:Nn \l_rainbow_clist {
\int_eval:n {
- \int_mod:nn { \insertframenumber }{
+ \int_mod:nn { \value{rainbow@count} }{
\clist_count:N \l_rainbow_clist
} + 1
}
}
}
-}{}{}
+}
+
+% switch colour at start of frame
+\str_if_eq:eeT { \rainbow@auto } { frame } {
+ \pretocmd{\beamer@@@frame}{
+ \ifnum\thepage>1
+ \rainbow
+ \fi
+ }{}{}
+}
+
+% switch colour at start of section
+\str_if_eq:eeT { \rainbow@auto } { section } {
+ \AddToHook{cmd/section/before}{%
+ \ifnum\thepage>1
+ \rainbow
+ \fi
+ }
+}
+
+% switch colour at start of subsection
+\str_if_eq:eeT { \rainbow@auto } { subsection } {
+ \AddToHook{cmd/subsection/before}{%
+ \ifnum\thepage>1
+ \rainbow
+ \fi
+ }
+}
+
+% initially use first colour from the list
+\AtBeginDocument{
+ \setcounter{rainbow@count}{-1}
+ \rainbow
+}
\ExplSyntaxOff
diff --git a/Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamercolorthemeSimpleDarkBlue.sty b/Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamercolorthemeSimpleDarkBlue.sty
index 06711c3d9ea..de5a2660005 100644
--- a/Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamercolorthemeSimpleDarkBlue.sty
+++ b/Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamercolorthemeSimpleDarkBlue.sty
@@ -1,34 +1,39 @@
-% !TEX TS-program = xelatex
-% !TEX encoding = UTF-8 Unicode
+%-------------------------------------------------------------
+% Package: beamertheme-SimpleDarkBlue
+% Author: Pin-Yen Huang (pyhuang97@gmail.com)
+% Version: 1.1, 2025-01-12
+% Link: https://github.com/pm25/SimpleDarkBlue-BeamerTheme
+% This is free and unencumbered software released into the
+% public domain; see <http://unlicense.org> for details.
+%-------------------------------------------------------------
-%----------------------------------------------------------------------------------------
-% File: beamercolorthemeSimpleDarkBlue.sty
-% Author: Pin-Yen Huang (pyhuang97@gmail.com)
-% link: https://github.com/PM25/SimpleDarkBlue-BeamerTheme
-% This is free and unencumbered software released into the
-% public domain; see <http://unlicense.org> for details.
-%----------------------------------------------------------------------------------------
+%--------------------------------------
+% Color Settings
+%--------------------------------------
-\definecolor{InvisibleRed}{rgb}{0.92, 0.9, 0.9}
-\definecolor{InvisibleGreen}{rgb}{0.9, 0.92, 0.9}
-\definecolor{InvisibleBlue}{rgb}{0.9, 0.9, 0.92}
+% define custom colors
+\definecolor{MutedRed}{rgb}{0.97, 0.92, 0.92}
+\definecolor{MutedGreen}{rgb}{0.92, 0.97, 0.92}
+\definecolor{MutedBlue}{rgb}{0.92, 0.92, 0.97}
+\definecolor{MutedBlack}{rgb}{0.95, 0.95, 0.95}
-\definecolor{LightBlue}{rgb}{0.4, 0.55, 0.65}
+\definecolor{MediumRed}{rgb}{0.925, 0.345, 0.345}
+\definecolor{MediumGreen}{rgb}{0.37, 0.7, 0.66}
+\definecolor{MediumBlue}{rgb}{0.015, 0.315, 0.45}
+\definecolor{MediumBlack}{rgb}{0.219, 0.259, 0.349}
-\definecolor{MediumRed}{rgb}{0.92549, 0.34509, 0.34509}
-\definecolor{MediumGreen}{rgb}{0.36862, 0.66666, 0.65882}
-\definecolor{MediumBlue}{rgb}{0.01176, 0.31372, 0.43529}
-
-\definecolor{DarkBlue}{rgb}{0.05, 0.15, 0.3}
+\definecolor{DarkBlue}{rgb}{0.05, 0.15, 0.35}
+% set beamer color themes
\usecolortheme[named=DarkBlue]{structure}
-\setbeamercolor{palette primary}{bg=DarkBlue,fg=white}
-\setbeamercolor{palette secondary}{bg=MediumBlue,fg=white}
-\setbeamercolor{palette tertiary}{bg=LightBlue,fg=white}
-\setbeamercolor{block title}{bg=MediumBlue}
-\setbeamercolor{block body}{bg=InvisibleBlue}
-\setbeamercolor{block title example}{bg=MediumGreen}
-\setbeamercolor{block body example}{bg=InvisibleGreen}
-\setbeamercolor{block title alerted}{bg=MediumRed}
-\setbeamercolor{block body alerted}{bg=InvisibleRed} \ No newline at end of file
+% customize colors for elements
+\setbeamercolor{title}{bg=DarkBlue,fg=white}
+\setbeamercolor{frametitle}{bg=DarkBlue,fg=white}
+
+\setbeamercolor{block title}{fg=white,bg=MediumBlue}
+\setbeamercolor{block body}{fg=black,bg=MutedBlue}
+\setbeamercolor{block title example}{fg=white,bg=MediumGreen}
+\setbeamercolor{block body example}{fg=black,bg=MutedGreen}
+\setbeamercolor{block title alerted}{fg=white,bg=MediumRed}
+\setbeamercolor{block body alerted}{fg=black,bg=MutedRed} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamerfontthemeSimpleDarkBlue.sty b/Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamerfontthemeSimpleDarkBlue.sty
index 00dd65f4d0d..1ad490cf567 100644
--- a/Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamerfontthemeSimpleDarkBlue.sty
+++ b/Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamerfontthemeSimpleDarkBlue.sty
@@ -1,15 +1,15 @@
-% !TEX TS-program = xelatex
-% !TEX encoding = UTF-8 Unicode
-
-%----------------------------------------------------------------------------------------
-% File: beamerfontthemeSimpleDarkBlue.sty
-% Author: Pin-Yen Huang (pyhuang97@gmail.com)
-% link: https://github.com/PM25/SimpleDarkBlue-BeamerTheme
-% This is free and unencumbered software released into the
-% public domain; see <http://unlicense.org> for details.
-%----------------------------------------------------------------------------------------
-
-\mode<presentation>
+%-------------------------------------------------------------
+% Package: beamertheme-SimpleDarkBlue
+% Author: Pin-Yen Huang (pyhuang97@gmail.com)
+% Version: 1.1, 2025-01-12
+% Link: https://github.com/pm25/SimpleDarkBlue-BeamerTheme
+% This is free and unencumbered software released into the
+% public domain; see <http://unlicense.org> for details.
+%-------------------------------------------------------------
+
+%--------------------------------------
+% Font Settings
+%--------------------------------------
\setbeamerfont{structure}{family=\sffamily,series=\mdseries}
@@ -17,19 +17,16 @@
\setbeamerfont{subtitle}{size=\normalsize,parent=title}
\setbeamerfont{date}{size=\scriptsize,series=\mdseries,parent=structure}
-\setbeamerfont{author}{size=\Large,series=\mdseries,parent=structure}
+\setbeamerfont{author}{size=\large,series=\mdseries,parent=structure}
\setbeamerfont{institute}{size=\scriptsize,series=\mdseries,parent=structure}
-\setbeamerfont{section in toc}{size=\Large,parent=structure}
+\setbeamerfont{section in toc}{size=\large,parent=structure}
\setbeamerfont{section in head/foot}{size=\tiny,parent=structure}
-\setbeamerfont{subsection in toc}{size=\large,parent={section in toc}}
+\setbeamerfont{subsection in toc}{size=\small,parent={section in toc}}
-\setbeamerfont{frametitle}{parent=structure,size=\LARGE}
-\setbeamerfont{framesubtitle}{parent=frametitle,size=\Large}
+\setbeamerfont{frametitle}{size=\Large,parent=structure}
+\setbeamerfont{framesubtitle}{parent=frametitle,size=\large}
\setbeamerfont{caption}{size=\footnotesize}
\setbeamerfont{item}{parent=structure,series=\mdseries}
-\setbeamerfont{block title}{size=\large,series=\mdseries,parent={structure,block body}}
-
-\mode
-<all>
+\setbeamerfont{block title}{size=\large,series=\mdseries,parent={structure,block body}} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamerinnerthemeSimpleDarkBlue.sty b/Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamerinnerthemeSimpleDarkBlue.sty
new file mode 100644
index 00000000000..e94505feb3f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamerinnerthemeSimpleDarkBlue.sty
@@ -0,0 +1,70 @@
+%-------------------------------------------------------------
+% Package: beamertheme-SimpleDarkBlue
+% Author: Pin-Yen Huang (pyhuang97@gmail.com)
+% Version: 1.1, 2025-01-12
+% Link: https://github.com/pm25/SimpleDarkBlue-BeamerTheme
+% This is free and unencumbered software released into the
+% public domain; see <http://unlicense.org> for details.
+%-------------------------------------------------------------
+
+%--------------------------------------
+% Inner Theme Settings
+%--------------------------------------
+
+\pgfdeclareverticalshading[lower.bg,upper.bg]{bmb@transition}{200cm}{%
+color(0pt)=(lower.bg); color(2pt)=(lower.bg); color(4pt)=(lower.bg)}
+
+\setbeamersize{text margin left=2em,text margin right=2em}
+
+\setbeamertemplate{footline}[frame number]
+\setbeamertemplate{navigation symbols}{}
+
+\setbeamertemplate{blocks}[rounded][shadow=true]
+
+\setbeamertemplate{enumerate items}[default]
+\setbeamertemplate{enumerate subitem}[default]
+\setbeamertemplate{itemize items}[circle]
+\setbeamertemplate{itemize subitem}[circle]
+
+% table of contents (overview) settings
+\setbeamertemplate{section in toc}[sections numbered]
+\setbeamertemplate{subsection in toc}{%
+ \leavevmode
+ \leftskip=3.2em
+ \rlap{\hskip-2em\inserttocsectionnumber.\inserttocsubsectionnumber}
+ \inserttocsubsection\par
+}
+
+% title page customization
+\setbeamertemplate{title page}{%
+ \vspace{6em}
+ \begingroup
+ \centering
+ % ------------------------
+ \begin{beamercolorbox}[sep=10pt,center,shadow=true,rounded=true]{title}
+ \usebeamerfont{title}\inserttitle\par%
+ \ifx\insertsubtitle\@empty%
+ \else%
+ \vskip0.25em%
+ {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}%
+ \fi%
+ \end{beamercolorbox}%
+ \vskip0.5em\par
+ % ------------------------
+ \begin{beamercolorbox}[sep=8pt,center]{author}
+ \usebeamerfont{author}\insertauthor
+ \end{beamercolorbox}
+ \vskip-1em
+ % ------------------------
+ \begin{beamercolorbox}[sep=8pt,center]{institute}
+ \usebeamerfont{institute}\insertinstitute
+ \end{beamercolorbox}
+ % ------------------------
+ \begin{beamercolorbox}[sep=8pt,center]{date}
+ \usebeamerfont{date}\insertdate
+ \end{beamercolorbox}\vskip0.5em
+ % ------------------------
+ {\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par}
+ \endgroup
+ \vfill
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamerthemeSimpleDarkBlue.sty b/Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamerthemeSimpleDarkBlue.sty
index 33b883f5da8..3a90f8f8267 100644
--- a/Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamerthemeSimpleDarkBlue.sty
+++ b/Master/texmf-dist/tex/latex/beamertheme-simpledarkblue/beamerthemeSimpleDarkBlue.sty
@@ -1,31 +1,20 @@
-% !TEX TS-program = xelatex
-% !TEX encoding = UTF-8 Unicode
+%-------------------------------------------------------------
+% Package: beamertheme-SimpleDarkBlue
+% Author: Pin-Yen Huang (pyhuang97@gmail.com)
+% Version: 1.1, 2025-01-12
+% Link: https://github.com/pm25/SimpleDarkBlue-BeamerTheme
+% This is free and unencumbered software released into the
+% public domain; see <http://unlicense.org> for details.
+%-------------------------------------------------------------
-%----------------------------------------------------------------------------------------
-% File: beamerthemeSimpleDarkBlue.sty
-% Author: Pin-Yen Huang (pyhuang97@gmail.com)
-% link: https://github.com/PM25/SimpleDarkBlue-BeamerTheme
-% This is free and unencumbered software released into the
-% public domain; see <http://unlicense.org> for details.
-%----------------------------------------------------------------------------------------
+%--------------------------------------
+% Beamer Settings
+%--------------------------------------
\mode<presentation>
-% Settings
-\usetheme{Madrid}
-\useinnertheme{circles}
-% \useoutertheme{simpleinfo}
-% \useoutertheme{miniframes} % Alternatively: miniframes, infolines, split
\usefonttheme{SimpleDarkBlue}
\usecolortheme{SimpleDarkBlue}
-
-% \setbeamertemplate{footline} % To remove the footer line in all slides uncomment this line
-\setbeamertemplate{footline}[page number] % To replace the footer line in all slides with a simple slide count uncomment this line
-\setbeamertemplate{navigation symbols}{} % To remove the navigation symbols from the bottom of all slides uncomment this line
-\setbeamertemplate{blocks}[rounded][shadow=true]
-\setbeamertemplate{enumerate items}[default]
-% table of contents (overview)
-\setbeamertemplate{section in toc}[sections numbered]
-\setbeamertemplate{subsection in toc}[default]
+\useinnertheme{SimpleDarkBlue}
\mode<all> \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamercolorthemeSimplePlus.sty b/Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamercolorthemeSimplePlus.sty
index 906498e4078..5ab1413ee0d 100644
--- a/Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamercolorthemeSimplePlus.sty
+++ b/Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamercolorthemeSimplePlus.sty
@@ -1,33 +1,37 @@
-% !TEX TS-program = xelatex
-% !TEX encoding = UTF-8 Unicode
+%-------------------------------------------------------------
+% Package: beamertheme-SimplePlus
+% Author: Pin-Yen Huang (pyhuang97@gmail.com)
+% Version: 1.1, 2025-01-07
+% Link: https://github.com/pm25/SimplePlus-BeamerTheme
+% This is free and unencumbered software released into the
+% public domain; see <http://unlicense.org> for details.
+%-------------------------------------------------------------
-%----------------------------------------------------------------------------------------
-% Package: beamertheme-SimplePlus
-% Author: Pin-Yen Huang (pyhuang97@gmail.com)
-% Version: 1.0, 2021-12-16
-% Link: https://github.com/PM25/SimplePlus-BeamerTheme
-% This is free and unencumbered software released into the
-% public domain; see <http://unlicense.org> for details.
-%----------------------------------------------------------------------------------------
+%--------------------------------------
+% Color Settings
+%--------------------------------------
-% define color
-\definecolor{InvisibleRed}{rgb}{0.97, 0.92, 0.92}
-\definecolor{InvisibleGreen}{rgb}{0.92, 0.97, 0.92}
-\definecolor{InvisibleBlue}{rgb}{0.92, 0.92, 0.97}
+% define custom colors
+\definecolor{MutedRed}{rgb}{0.97, 0.92, 0.92}
+\definecolor{MutedGreen}{rgb}{0.92, 0.97, 0.92}
+\definecolor{MutedBlue}{rgb}{0.92, 0.92, 0.97}
+\definecolor{MutedBlack}{rgb}{0.95, 0.95, 0.95}
\definecolor{MediumRed}{rgb}{0.925, 0.345, 0.345}
\definecolor{MediumGreen}{rgb}{0.37, 0.7, 0.66}
\definecolor{MediumBlue}{rgb}{0.015, 0.315, 0.45}
+\definecolor{MediumBlack}{rgb}{0.219, 0.259, 0.349}
-\definecolor{DarkBlue}{rgb}{0.05, 0.15, 0.35}
+\definecolor{DarkBlue}{rgb}{0.05, 0.15, 0.35}
-% set color
+% set beamer color themes
\usecolortheme[named=DarkBlue]{structure}
+% customize colors for elements
\setbeamercolor{titlelike}{parent=structure}
-\setbeamercolor{block title}{bg=MediumBlue}
-\setbeamercolor{block body}{bg=InvisibleBlue}
-\setbeamercolor{block title example}{bg=MediumGreen}
-\setbeamercolor{block body example}{bg=InvisibleGreen}
-\setbeamercolor{block title alerted}{bg=MediumRed}
-\setbeamercolor{block body alerted}{bg=InvisibleRed} \ No newline at end of file
+\setbeamercolor{block title}{fg=white,bg=MediumBlue}
+\setbeamercolor{block body}{fg=black,bg=MutedBlue}
+\setbeamercolor{block title example}{fg=white,bg=MediumGreen}
+\setbeamercolor{block body example}{fg=black,bg=MutedGreen}
+\setbeamercolor{block title alerted}{fg=white,bg=MediumRed}
+\setbeamercolor{block body alerted}{fg=black,bg=MutedRed} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamerfontthemeSimplePlus.sty b/Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamerfontthemeSimplePlus.sty
index 9c57bc7cc32..840a09a6792 100644
--- a/Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamerfontthemeSimplePlus.sty
+++ b/Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamerfontthemeSimplePlus.sty
@@ -1,38 +1,32 @@
-% !TEX TS-program = xelatex
-% !TEX encoding = UTF-8 Unicode
-
-%----------------------------------------------------------------------------------------
-% Package: beamertheme-SimplePlus
-% Author: Pin-Yen Huang (pyhuang97@gmail.com)
-% Version: 1.0, 2021-12-16
-% Link: https://github.com/PM25/SimplePlus-BeamerTheme
-% This is free and unencumbered software released into the
-% public domain; see <http://unlicense.org> for details.
-%----------------------------------------------------------------------------------------
-
-\mode<presentation>
-
-%%%%%%%%%%%% fonts
+%-------------------------------------------------------------
+% Package: beamertheme-SimplePlus
+% Author: Pin-Yen Huang (pyhuang97@gmail.com)
+% Version: 1.1, 2025-01-07
+% Link: https://github.com/pm25/SimplePlus-BeamerTheme
+% This is free and unencumbered software released into the
+% public domain; see <http://unlicense.org> for details.
+%-------------------------------------------------------------
+
+%--------------------------------------
+% Font Settings
+%--------------------------------------
\setbeamerfont{structure}{family=\sffamily,series=\mdseries}
-\setbeamerfont{title}{size=\huge,series=\bfseries,parent=structure}
+\setbeamerfont{title}{size=\LARGE,series=\bfseries,parent=structure}
\setbeamerfont{subtitle}{size=\normalsize,parent=title}
\setbeamerfont{date}{size=\scriptsize,series=\mdseries,parent=structure}
\setbeamerfont{author}{size=\large,series=\mdseries,parent=structure}
\setbeamerfont{institute}{size=\scriptsize,series=\mdseries,parent=structure}
-\setbeamerfont{section in toc}{size=\Large,series=\bfseries,parent=structure}
+\setbeamerfont{section in toc}{size=\large,series=\bfseries,parent=structure}
\setbeamerfont{section in head/foot}{size=\tiny,parent=structure}
\setbeamerfont{subsection in toc}{size=\small,series=\mdseries,parent={section in toc}}
-\setbeamerfont{frametitle}{size=\LARGE,series=\bfseries,parent=structure}
-\setbeamerfont{framesubtitle}{parent=frametitle,size=\Large}
+\setbeamerfont{frametitle}{size=\Large,series=\bfseries,parent=structure}
+\setbeamerfont{framesubtitle}{parent=frametitle,size=\large}
\setbeamerfont{caption}{size=\footnotesize}
\setbeamerfont{item}{parent=structure,series=\mdseries}
-\setbeamerfont{block title}{size=\large,series=\mdseries,parent={structure,block body}}
-
-\mode
-<all>
+\setbeamerfont{block title}{size=\large,series=\mdseries,parent={structure,block body}} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamerinnerthemeSimplePlus.sty b/Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamerinnerthemeSimplePlus.sty
index 43ab163d188..f6475f09489 100644
--- a/Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamerinnerthemeSimplePlus.sty
+++ b/Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamerinnerthemeSimplePlus.sty
@@ -1,60 +1,78 @@
-% !TEX TS-program = xelatex
-% !TEX encoding = UTF-8 Unicode
-
-%----------------------------------------------------------------------------------------
-% Package: beamertheme-SimplePlus
-% Author: Pin-Yen Huang (pyhuang97@gmail.com)
-% Version: 1.0, 2021-12-16
-% Link: https://github.com/PM25/SimplePlus-BeamerTheme
-% This is free and unencumbered software released into the
-% public domain; see <http://unlicense.org> for details.
-%----------------------------------------------------------------------------------------
+%-------------------------------------------------------------
+% Package: beamertheme-SimplePlus
+% Author: Pin-Yen Huang (pyhuang97@gmail.com)
+% Version: 1.1, 2025-01-07
+% Link: https://github.com/pm25/SimplePlus-BeamerTheme
+% This is free and unencumbered software released into the
+% public domain; see <http://unlicense.org> for details.
+%-------------------------------------------------------------
-\pgfdeclareverticalshading[lower.bg,upper.bg]{bmb@transition}{200cm}{%
- color(0pt)=(lower.bg); color(2pt)=(lower.bg); color(4pt)=(lower.bg)}
+%--------------------------------------
+% Inner Theme Settings
+%--------------------------------------
-\setbeamersize{text margin left=2em,text margin right=2em}
+\pgfdeclareverticalshading[lower.bg,upper.bg]{bmb@transition}{200cm}{%
+color(0pt)=(lower.bg); color(2pt)=(lower.bg); color(4pt)=(lower.bg)}
-% table of contents (overview)
-\setbeamertemplate{section in toc}[sections numbered]
-\setbeamertemplate{subsection in toc}{\leavevmode\leftskip=3.2em\rlap{\hskip-2em\inserttocsectionnumber.\inserttocsubsectionnumber}\inserttocsubsection\par}
+\setbeamersize{text margin left=2em,text margin right=2em}
\setbeamertemplate{footline}[frame number]
\setbeamertemplate{navigation symbols}{}
+
\setbeamertemplate{blocks}[rounded][shadow=false]
+
\setbeamertemplate{enumerate items}[default]
+\setbeamertemplate{enumerate subitem}[default]
+\setbeamertemplate{itemize items}[circle]
+\setbeamertemplate{itemize subitem}[circle]
+
+% table of contents (overview) settings
+\setbeamertemplate{section in toc}[sections numbered]
+\setbeamertemplate{subsection in toc}{%
+ \leavevmode
+ \leftskip=3.2em
+ \rlap{\hskip-2em\inserttocsectionnumber.\inserttocsubsectionnumber}
+ \inserttocsubsection\par
+}
-\setbeamertemplate{frametitle}{\vspace*{0.5em}\bfseries\insertframetitle\par\vskip-6pt\hrulefill\vspace{-0.1em}}
+% frame title customization
+\setbeamertemplate{frametitle}{%
+ \vspace*{0.5em}
+ \bfseries\insertframetitle\par
+ \vskip-6pt
+ \hrulefill\vspace{-0.1em}
+}
-\setbeamertemplate{title page}{
- \vspace{7em}
+% title page customization
+\setbeamertemplate{title page}{%
+ \vspace{6em}
\begingroup
- \centering
- % ------------------------
- \begin{beamercolorbox}[sep=8pt,center]{title}
+ \centering
+ % ------------------------
+ \begin{beamercolorbox}[sep=10pt,center]{title}
\usebeamerfont{title}\inserttitle\par%
\ifx\insertsubtitle\@empty%
\else%
- \vskip0.25em%
- {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}%
- \fi%
- \end{beamercolorbox}%
- \vskip0.5em\par
- % ------------------------
- \begin{beamercolorbox}[sep=8pt,center]{author}
+ \vskip0.25em%
+ {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}%
+ \fi%
+ \end{beamercolorbox}%
+ \vskip0.5em\par
+ % ------------------------
+ \begin{beamercolorbox}[sep=8pt,center]{author}
\usebeamerfont{author}\insertauthor
- \end{beamercolorbox}
- \vskip-1em
- % ------------------------
- \begin{beamercolorbox}[sep=8pt,center]{institute}
+ \end{beamercolorbox}
+ \vskip-1em
+ % ------------------------
+ \begin{beamercolorbox}[sep=8pt,center]{institute}
\usebeamerfont{institute}\insertinstitute
- \end{beamercolorbox}
- % ------------------------
- \begin{beamercolorbox}[sep=8pt,center]{date}
+ \end{beamercolorbox}
+ % ------------------------
+ \begin{beamercolorbox}[sep=8pt,center]{date}
\usebeamerfont{date}\insertdate
- \end{beamercolorbox}\vskip0.5em
- % ------------------------
- {\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par}
+ \end{beamercolorbox}\vskip0.5em
+ % ------------------------
+ {\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par}
\endgroup
\vfill
} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamerthemeSimplePlus.sty b/Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamerthemeSimplePlus.sty
index 5ff53a743ed..01c94d97aac 100644
--- a/Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamerthemeSimplePlus.sty
+++ b/Master/texmf-dist/tex/latex/beamertheme-simpleplus/beamerthemeSimplePlus.sty
@@ -1,21 +1,18 @@
-% !TEX TS-program = xelatex
-% !TEX encoding = UTF-8 Unicode
+%-------------------------------------------------------------
+% Package: beamertheme-SimplePlus
+% Author: Pin-Yen Huang (pyhuang97@gmail.com)
+% Version: 1.1, 2025-01-07
+% Link: https://github.com/pm25/SimplePlus-BeamerTheme
+% This is free and unencumbered software released into the
+% public domain; see <http://unlicense.org> for details.
+%-------------------------------------------------------------
-%----------------------------------------------------------------------------------------
-% Package: beamertheme-SimplePlus
-% Author: Pin-Yen Huang (pyhuang97@gmail.com)
-% Version: 1.0, 2021-12-16
-% Link: https://github.com/PM25/SimplePlus-BeamerTheme
-% This is free and unencumbered software released into the
-% public domain; see <http://unlicense.org> for details.
-%----------------------------------------------------------------------------------------
+%--------------------------------------
+% Beamer Settings
+%--------------------------------------
\mode<presentation>
-% Settings
-\usetheme{Madrid}
-\useinnertheme{circles}
-
\usefonttheme{SimplePlus}
\usecolortheme{SimplePlus}
\useinnertheme{SimplePlus}
diff --git a/Master/texmf-dist/tex/latex/beamertheme-tcolorbox/beamerinnerthemetcolorbox.sty b/Master/texmf-dist/tex/latex/beamertheme-tcolorbox/beamerinnerthemetcolorbox.sty
index 9469f0591ef..1a2af1a6d84 100644
--- a/Master/texmf-dist/tex/latex/beamertheme-tcolorbox/beamerinnerthemetcolorbox.sty
+++ b/Master/texmf-dist/tex/latex/beamertheme-tcolorbox/beamerinnerthemetcolorbox.sty
@@ -1,4 +1,4 @@
-% !TeX root = test.tex
+% !TeX root = ./testing/test.tex
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% The tcolorbox inner theme
@@ -9,10 +9,10 @@
% https://github.com/samcarter/beamertheme-tcolorbox
%
% Released under the LaTeX Project Public License v1.3c or later
-% See http://www.latex-project.org/lppl.txt
+% See https://www.latex-project.org/lppl.txt
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{beamerinnerthemetcolorbox}[2024/04/29 version v0.7 Beamer blocks with tcolorboxes]
+\ProvidesPackage{beamerinnerthemetcolorbox}[2024/09/23 version v0.8 Beamer blocks with tcolorboxes]
\RequirePackage{tcolorbox}
\tcbuselibrary{skins,hooks}
@@ -197,11 +197,11 @@
\ifbeamer@tcb@blocks
\setbeamertemplate{block begin}{\begin{beamer@tcb@block}}
- \setbeamertemplate{block end}{\end{beamer@tcb@block}}
+ \setbeamertemplate{block end}{\onslide<1->\end{beamer@tcb@block}}
\setbeamertemplate{block alerted begin}{\begin{beamer@tcb@block}[ alerted]}
- \setbeamertemplate{block alerted end}{\end{beamer@tcb@block}}
+ \setbeamertemplate{block alerted end}{\onslide<1->\end{beamer@tcb@block}}
\setbeamertemplate{block example begin}{\begin{beamer@tcb@block}[ example]}
- \setbeamertemplate{block example end}{\end{beamer@tcb@block}}
+ \setbeamertemplate{block example end}{\onslide<1->\end{beamer@tcb@block}}
\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/Master/texmf-dist/tex/latex/beamerthemecelestia/beamerthemeCelestia.sty b/Master/texmf-dist/tex/latex/beamerthemecelestia/beamerthemeCelestia.sty
new file mode 100644
index 00000000000..fad9ba136fb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/beamerthemecelestia/beamerthemeCelestia.sty
@@ -0,0 +1,1144 @@
+% beamethemeCelestia.sty
+%
+% copyright (C) 2025 Razik Ikhlef
+% razik.ikhlef@csilyon.fr
+%
+% The newest version of this beamer theme should always be available
+% from the following web page: https://apps.edulatex.xyz/celestia/
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{beamerthemeCelestia}[2025/01/08 v1.0.0]
+
+\RequirePackage{iftex}
+\RequirePackage{etoolbox}
+\RequirePackage{kvoptions}
+\RequirePackage{babel}
+\RequirePackage[most]{tcolorbox}
+
+\RequirePackage{silence}
+\WarningFilter{latexfont}{Font shape}
+\renewcommand{\@font@warning}[1]{}
+
+%------------------
+% Theme options
+%------------------
+\SetupKeyvalOptions{
+ family=celestia,
+ prefix=celestia@
+}
+
+% Boolean declarations using kvoptions
+\DeclareBoolOption{allserif}
+\DeclareBoolOption{unicolor}
+\DeclareBoolOption{standout}
+\DeclareBoolOption{compacttoc}
+\DeclareBoolOption{twocolumntoc}
+\DeclareBoolOption{decorative}
+\DeclareBoolOption{nodecorative}
+\DeclareBoolOption{nofooter}
+\DeclareBoolOption{quartercirclefooter}
+\DeclareBoolOption{fullbarfooter}
+\DeclareBoolOption{centeredtitle}
+\DeclareBoolOption{titleright}
+\DeclareBoolOption[true]{codebox}
+\DeclareBoolOption{nocodebox}
+\DeclareBoolOption{nocodeframe}
+\DeclareBoolOption{soberblock}
+\DeclareBoolOption{softblock}
+
+% String options with defaults
+\DeclareStringOption[sffamily]{headstyle} % rmfamily, sffamily
+\DeclareStringOption[normal]{headshape} % sc, it, normal
+\DeclareStringOption[bfseries]{headweight} % bfseries, mdseries
+
+\DeclareStringOption[045549]{maincolor}
+\DeclareStringOption[specialcolor]{accentcolor}
+\DeclareStringOption{backgroundcolor}
+\DeclareStringOption{codebackgroundcolor}
+\DeclareStringOption[045549]{mainblue}
+\DeclareStringOption[054924]{maingreen}
+\DeclareStringOption[490445]{mainred}
+
+\DeclareStringOption[2em]{margin}
+\DeclareStringOption[elegant]{frametitle} % centered, plain, plain centered
+
+\DeclareStringOption[Literata]{mainface}
+\DeclareStringOption{mainfaceoptions}
+\DeclareStringOption[Inter]{sansface}
+\DeclareStringOption{sansfaceoptions}
+\DeclareStringOption[Roboto Mono]{monoface}
+\DeclareStringOption{monofaceoptions}
+
+% Process options
+\ProcessKeyvalOptions*
+
+\ifcelestia@nodecorative
+ \setbool{celestia@decorative}{false}
+\fi
+
+\ifcelestia@nocodebox
+ \setbool{celestia@codebox}{false}
+\fi
+
+\def\celestia@bfseries{bfseries}
+\def\celestia@mdseries{mdseries}
+
+%------------------
+% Engine detection and package loading
+%------------------
+% Base packages for both engines
+\RequirePackage{tikz}
+\usetikzlibrary{backgrounds,calc,shapes,decorations.fractals}
+\RequirePackage{multicol}
+
+% Engine-specific packages and settings
+\ifluatex
+ \RequirePackage{fontspec}
+ \RequirePackage[T1]{fontenc}
+ \ifcelestia@allserif\RequirePackage{mathpazo}\else\RequirePackage{arev}\fi
+
+ \defaultfontfeatures{Ligatures=TeX,Renderer=HarfBuzz}
+
+ \IfFontExistsTF{\celestia@mainface}{
+ \setmainfont[\celestia@mainfaceoptions]{\celestia@mainface}
+ }{
+ \setmainfont{Source Serif Pro}
+ }
+
+ \IfFontExistsTF{\celestia@sansface}{
+ \setsansfont[\celestia@sansfaceoptions]{\celestia@sansface}
+ }{
+ \setsansfont{Source Sans Pro}
+ }
+
+ \IfFontExistsTF{\celestia@monoface}{
+ \setmonofont[\celestia@monofaceoptions]{\celestia@monoface}
+ }{
+ \setmonofont{Source Code Pro}
+ }
+
+ \RequirePackage[
+ protrusion=true,
+ expansion=true
+ ]{microtype}
+\else
+ \RequirePackage[utf8]{inputenc}
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage{sourceserifpro}
+ \RequirePackage{sourcesanspro}
+ \RequirePackage{roboto-mono}
+ \RequirePackage[
+ protrusion=true,
+ expansion=true,
+ tracking=true,
+ kerning=true,
+ spacing=true,
+ factor=1100,
+ stretch=10,
+ shrink=10
+ ]{microtype}
+\fi
+
+\ifcelestia@allserif
+\usefonttheme{serif}
+\else
+\usefonttheme[stillsansserifmath,stillsansseriftext]{serif}
+\fi
+
+%------------------
+% Color definitions
+%------------------
+
+% Test if the color is a valid SVG name, otherwise use HTML code
+\newcommand{\@testcolor}[2]{%
+ \ifcsname\string\color@#1\endcsname
+ \colorlet{#2}{#1}%
+ \else
+ \definecolor{#2}{HTML}{#1}%
+ \fi
+}
+
+\@testcolor{\celestia@maincolor}{main}
+
+% Main color palette
+\@testcolor{\celestia@mainblue}{mainblue}
+\@testcolor{\celestia@maingreen}{maingreen}
+\@testcolor{\celestia@mainred}{mainred}
+
+\definecolor{rulecolor}{HTML}{888888}
+\definecolor{codeframecolor}{HTML}{95A5A6}
+
+\colorlet{specialcolor}{-main}
+\ifx\celestia@headweight\celestia@bfseries
+\colorlet{specialcolor}{specialcolor!45!black}
+\definecolor{background}{HTML}{F7F9FC}
+\else
+\colorlet{specialcolor}{specialcolor!40!black}
+\definecolor{background}{HTML}{F8FAFC}
+\fi
+
+\@testcolor{\celestia@accentcolor}{accent}
+
+\ifx\celestia@backgroundcolor\@empty\else
+ \@testcolor{\celestia@backgroundcolor}{background}
+\fi
+
+\definecolor{codebackground}{HTML}{F1F3F6}
+\ifx\celestia@codebackgroundcolor\@empty\else
+ \@testcolor{\celestia@codebackgroundcolor}{codebackground}
+\fi
+
+% Special colors based on options
+\setbeamercolor{plain frametitle}{fg=main,bg=background}
+
+%------------------
+% Basic settings
+%------------------
+\setbeamersize{text margin left=\celestia@margin,text margin right=\celestia@margin}
+\setbeamertemplate{navigation symbols}{}
+
+%------------------
+% Font settings
+%------------------
+% Main fonts settings
+\setbeamerfont{subtitle}{series=\mdseries}
+\setbeamerfont{date}{series=\mdseries,size=\small}
+
+\setbeamerfont{title}{size=\Large,%
+ series=\csname\celestia@headweight\endcsname,%
+ family=\csname\celestia@headstyle\endcsname,%
+ shape=\csname\celestia@headshape\endcsname}
+\setbeamerfont{author}{size=\normalsize,%
+ series=\csname\celestia@headweight\endcsname,%
+ family=\csname\celestia@headstyle\endcsname,%
+ shape=\csname\celestia@headshape\endcsname}
+\setbeamerfont{description item}{size=\normalsize,%
+ series=\csname\celestia@headweight\endcsname,%
+ family=\ifcelestia@allserif\rmfamily\else\sffamily\fi,%
+ }
+\setbeamerfont{frametitle}{size=\large,%
+ series=\csname\celestia@headweight\endcsname,%
+ family=\csname\celestia@headstyle\endcsname,%
+ shape=\csname\celestia@headshape\endcsname,%
+ parent=structure}
+\setbeamerfont{plain title}{size=\large,%
+ series=\csname\celestia@headweight\endcsname,%
+ family=\csname\celestia@headstyle\endcsname,%
+ shape=\csname\celestia@headshape\endcsname,%
+ parent=structure}
+\setbeamerfont{section title}{size=\LARGE,%
+ series=\csname\celestia@headweight\endcsname,%
+ family=\csname\celestia@headstyle\endcsname,%
+ shape=\csname\celestia@headshape\endcsname,%
+ parent=structure}
+\setbeamerfont{section in toc}{size=\large,%
+ series=\mdseries,%
+ family=\ifcelestia@allserif\rmfamily\else\sffamily\fi,%
+ shape=\normalfont,%
+ parent=structure}
+\setbeamerfont{subsection title}{size=\Large,%
+ series=\csname\celestia@headweight\endcsname,%
+ family=\csname\celestia@headstyle\endcsname,%
+ shape=\csname\celestia@headshape\endcsname,%
+ parent=structure}
+\setbeamerfont{subsection in toc}{size=\normalsize,%
+ series=\mdseries,%
+ family=\ifcelestia@allserif\rmfamily\else\sffamily\fi,%
+ shape=\normalfont,%
+ parent=structure}
+\setbeamerfont{footline text}{size=\tiny,%
+ series=\mdseries,%
+ family=\csname\celestia@headstyle\endcsname,%
+ shape=\csname\celestia@headshape\endcsname,%
+ parent=structure}
+\setbeamerfont{block title}{size=\normalsize,%
+ series=\csname\celestia@headweight\endcsname,%
+ family=\ifcelestia@allserif\rmfamily\else\sffamily\fi,%
+ parent=structure}
+
+% Special fonts
+\setbeamerfont{caption}{size=\small}
+\setbeamerfont{footnote}{size=\small}
+
+% Itemize markers
+\newcommand{\celestiaCircle}{%
+ \raisebox{0.1ex}{\scalebox{1.2}{$\bullet$}}%
+}
+\newcommand{\celestiaSmallCircle}{%
+ \raisebox{0.2ex}{\scalebox{1}{$\circ$}}%
+}
+\newcommand{\celestiaDiamond}{%
+ \raisebox{0.2ex}{\scalebox{0.8}{$\diamond$}}%
+}
+
+% Block margins and spacing
+\setlength{\leftmargini}{2em}
+\setlength{\leftmarginii}{1.5em}
+\setlength{\leftmarginiii}{1.25em}
+
+%------------------
+% Color settings
+%------------------
+% Basic structure colors
+\usecolortheme[named=background]{structure}
+\setbeamercolor{background canvas}{bg=background}
+\ifcelestia@unicolor
+\setbeamercolor{normal text}{fg=main}
+\else
+\setbeamercolor{normal text}{fg=black}
+\fi
+\usebeamercolor[fg]{normal text}
+
+% Title and section colors
+\setbeamercolor{titlelike}{parent=structure}
+\setbeamercolor{title}{fg=main}
+% \setbeamercolor{subtitle}{parent={}}
+% \setbeamercolor{subtitle}{fg=black}
+\setbeamercolor{author}{fg=main}
+\setbeamercolor{section title}{fg=main}
+\setbeamercolor{subsection title}{fg=accent}
+\setbeamercolor{frametitle}{bg=main,fg=background}
+
+% Navigation and structural elements
+\setbeamercolor{item}{fg=main}
+\setbeamercolor{description}{fg=main}
+\setbeamercolor{section in toc}{fg=main}
+
+% Block colors with opacity control
+\newcommand{\setblockopacity}[1][10]{%
+ \setbeamercolor{block title}{fg=background,bg=mainblue!90!white}
+ \setbeamercolor{block body}{bg=mainblue!#1!white}
+}
+
+% Colors for different block types
+\ifcelestia@soberblock
+ \setbeamercolor{block title}{fg=mainblue,bg=background}
+ \setbeamercolor{block body}{bg=mainblue!10!white}
+ \setbeamercolor{block title example}{fg=maingreen,bg=background}
+ \setbeamercolor{block body example}{bg=maingreen!10!white}
+ \setbeamercolor{block title alerted}{fg=mainred,bg=background}
+ \setbeamercolor{block body alerted}{bg=mainred!10!white}
+\else
+ \ifcelestia@softblock
+ \setbeamercolor{block title}{fg=mainblue,bg=mainblue!10!white}
+ \setbeamercolor{block body}{bg=mainblue!10!white}
+ \setbeamercolor{block title example}{fg=maingreen,bg=maingreen!10!white}
+ \setbeamercolor{block body example}{bg=maingreen!10!white}
+ \setbeamercolor{block title alerted}{fg=mainred,bg=mainred!10!white}
+ \setbeamercolor{block body alerted}{bg=mainred!10!white}
+ \else
+ \setbeamertemplate{blocks}[rounded]
+ \setbeamercolor{block title}{fg=background,bg=mainblue!90!white}
+ \setbeamercolor{block body}{bg=mainblue!10!white}
+ \setbeamercolor{block title example}{fg=background,bg=maingreen!90!white}
+ \setbeamercolor{block body example}{bg=maingreen!10!white}
+ \setbeamercolor{block title alerted}{fg=background,bg=mainred!90!white}
+ \setbeamercolor{block body alerted}{bg=mainred!10!white}
+ \fi
+\fi
+
+% Caption colors
+\setbeamercolor{caption}{fg=main}
+\setbeamercolor{caption name}{parent=caption}
+
+%------------------
+% Basic templates
+%------------------
+% List settings
+\setbeamertemplate{itemize/enumerate subbody begin}{\normalsize}
+
+% Itemize markers
+\setbeamertemplate{itemize item}{\celestiaCircle}
+\setbeamertemplate{itemize subitem}{\celestiaSmallCircle}
+\setbeamertemplate{itemize subsubitem}{\celestiaDiamond}
+
+% Enumeration settings
+% Level 1: Circled numbers with main color background
+\setbeamertemplate{enumerate item}[circle]
+\setbeamercolor{enumerate item}{fg=background,bg=main}
+
+% Level 2: Circled letters with white background
+\setbeamertemplate{enumerate subitem}{%
+ \begin{tikzpicture}[baseline=(char.base)]
+ \node[circle, draw=main, inner sep=0.5pt, fill=white] (char) {\textcolor{main}{\alph{enumii}}};
+ \end{tikzpicture}%
+}
+\setbeamercolor{enumerate subitem}{fg=main,bg=background}
+
+% Level 3: Numbers with parentheses
+\setbeamertemplate{enumerate subsubitem}{%
+ (\insertsubsubenumlabel)%
+}
+\setbeamercolor{enumerate subsubitem}{fg=main}
+
+% Special commands for text formatting
+\renewcommand{\texttt}[1]{\textcolor{accent}{{\ttfamily\csname\celestia@headweight\endcsname #1}}}
+\def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi
+ \bgroup
+ \ttfamily\bfseries
+ \color{main}
+ \let\do\@makeother\dospecials
+ \verbatim@font\@noligs
+ \@ifstar\@verb\@sverb}
+\renewcommand{\alert}[1]{{\csname\celestia@headweight\endcsname\textcolor{accent}{#1}}}
+
+% Caption template
+\setbeamertemplate{caption}{%
+ \raggedright%
+ \insertcaption\par%
+}
+
+% Hyperlink setup
+\hypersetup{urlcolor=mainblue}
+
+% Additional spacing settings
+\setlength{\parskip}{0.5ex}
+\setlength{\itemsep}{0.5ex}
+
+%------------------
+% Table of contents
+%------------------
+% Base TOC style
+\setbeamertemplate{section in toc}[sections numbered]
+\setbeamertemplate{subsection in toc}{%
+ \leavevmode\leftskip=3.2em%
+ \rlap{\hskip-2em\inserttocsectionnumber.\inserttocsubsectionnumber}%
+ \inserttocsubsection\par%
+}
+
+% Compact TOC handling
+\ifcelestia@compacttoc
+ \patchcmd{\beamer@sectionintoc}
+ {\vfill}
+ {\vskip\itemsep}
+ {}
+ {}
+\fi
+
+% Two-column TOC handling
+\NewDocumentCommand{\twocolumntoc}{ O{} O{} O{} }{%
+ \ifcelestia@twocolumntoc
+ \setlength{\columnsep}{2em}
+ \begin{multicols}{2}
+ \tableofcontents[sections={#1-\the\numexpr#2-1}]
+ \columnbreak
+ \tableofcontents[sections={#2-#3}]
+ \end{multicols}
+ \else
+ \tableofcontents
+ \fi
+}
+
+%------------------
+% Frame title
+%------------------
+% Define colors for different frame title styles
+\setbeamercolor{elegant frametitle}{bg=main,fg=background}
+\setbeamercolor{plain frametitle}{fg=main,bg=}
+\setbeamercolor{centered frametitle}{bg=main,fg=background}
+\setbeamercolor{plaincentered frametitle}{fg=main,bg=}
+
+% Elegant frame title (default) with decorative line
+\defbeamertemplate{frametitle}{elegant}{%
+ \nointerlineskip%
+ \begin{beamercolorbox}[wd=\paperwidth,sep=0.5em]{elegant frametitle}
+ \usebeamerfont{frametitle}\insertframetitle%
+ \ifx\insertframesubtitle\@empty\else%
+ \par{\usebeamerfont{framesubtitle}\insertframesubtitle}%
+ \fi%
+ \end{beamercolorbox}%
+ \ifcelestia@quartercirclefooter\ifcelestia@nofooter\vskip-.5em\else\vskip-1em\fi\else\ifcelestia@fullbarfooter\vskip-1em\else\vskip-1em\fi\fi%
+ \begin{tikzpicture}[remember picture,overlay]
+ \draw[main,line width=0.3pt]
+ ([yshift=-1pt]current page.north west) --
+ ([yshift=-1pt]current page.north east);
+ \ifcelestia@decorative
+ \fill[main,opacity=0.1]
+ ([xshift=1em]current page.north west) --
+ ([xshift=3em]current page.north west) --
+ ([xshift=2em,yshift=-1em]current page.north west) -- cycle;
+ \fi
+ \end{tikzpicture}%
+}
+
+% Plain frame title (no background, left-aligned)
+\defbeamertemplate{frametitle}{plain}{%
+ \nointerlineskip%
+ \begin{beamercolorbox}[wd=\paperwidth,sep=1em]{plain frametitle}
+ \usebeamerfont{plain title}\insertframetitle%
+ \ifx\insertframesubtitle\@empty\else%
+ \par{\usebeamerfont{framesubtitle}\insertframesubtitle}%
+ \fi%
+ \end{beamercolorbox}%
+ \ifcelestia@quartercirclefooter\ifcelestia@nofooter\vskip-.25em\else\vskip-.75em\fi\else\ifcelestia@fullbarfooter\vskip-1em\else\vskip-1em\fi\fi%
+}
+
+% Centered frame title (like elegant but centered)
+\defbeamertemplate{frametitle}{centered}{%
+ \nointerlineskip%
+ \begin{beamercolorbox}[wd=\paperwidth,sep=0.5em,center]{centered frametitle}
+ \usebeamerfont{frametitle}\insertframetitle%
+ \ifx\insertframesubtitle\@empty\else%
+ \par{\usebeamerfont{framesubtitle}\insertframesubtitle}%
+ \fi%
+ \end{beamercolorbox}%
+ \ifcelestia@quartercirclefooter\ifcelestia@nofooter\vskip-.25em\else\vskip-.75em\fi\else\ifcelestia@fullbarfooter\vskip-1em\else\vskip-1em\fi\fi%
+ \begin{tikzpicture}[remember picture,overlay]
+ \draw[main,line width=0.3pt]
+ ([yshift=-1pt]current page.north west) --
+ ([yshift=-1pt]current page.north east);
+ \ifcelestia@decorative
+ \fill[main,opacity=0.1]
+ ([xshift=1em]current page.north west) --
+ ([xshift=3em]current page.north west) --
+ ([xshift=2em,yshift=-1em]current page.north west) -- cycle;
+ \fi
+ \end{tikzpicture}%
+}
+
+% Plain centered frame title (no background, centered)
+\defbeamertemplate{frametitle}{plaincentered}{%
+ \nointerlineskip%
+ \begin{beamercolorbox}[wd=\paperwidth,sep=1em,center]{plaincentered frametitle}
+ \usebeamerfont{plain title}\insertframetitle%
+ \ifx\insertframesubtitle\@empty\else%
+ \par{\usebeamerfont{framesubtitle}\insertframesubtitle}%
+ \fi%
+ \end{beamercolorbox}%
+ \ifcelestia@quartercirclefooter\ifcelestia@nofooter\vskip-.25em\else\vskip-0.75em\fi\else\ifcelestia@fullbarfooter\vskip-1em\else\vskip-1em\fi\fi%
+}
+
+% Set the default style to elegant
+\setbeamertemplate{frametitle}[\celestia@frametitle]
+
+%------------------
+% Frame continuation
+%------------------
+\setbeamertemplate{frametitle continuation}{\usebeamerfont{frametitle}(\insertcontinuationcount)}
+
+%------------------
+% Footline
+%------------------
+
+\setbeamertemplate{footline}{%
+ \leavevmode%
+ \setbeamercolor{current author}{fg=main,bg=background}%
+ \setbeamercolor{current title}{fg=background,bg=main}%
+ \setbeamercolor{current date}{fg=main,bg=background}%
+ \setbeamercolor{current page}{fg=background,bg=main}%
+ \ifcelestia@nofooter%
+ \hfill\usebeamerfont{footline text}\textcolor{main}{\insertframenumber/\inserttotalframenumber}%
+ \hspace*{2em}%
+ \vspace*{1em}%
+ \else%
+ \ifcelestia@quartercirclefooter%
+ \begin{tikzpicture}[overlay]
+ \usebeamercolor[bg]{current title}
+ \draw[fill] (\paperwidth,0ex) circle (8ex);
+ \usebeamercolor[fg]{current title}
+ \node at (\paperwidth-3.25ex,3.25ex) {\footnotesize\insertframenumber};
+ \end{tikzpicture}
+ \else%
+ \ifcelestia@fullbarfooter%
+ \hbox{%
+ \begin{beamercolorbox}[wd=.275\paperwidth,ht=2.75ex,dp=1.5ex,left]{current title}%
+ \usebeamerfont{footline text}\hspace{1em}\insertshortauthor%
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[wd=.45\paperwidth,ht=2.75ex,dp=1.5ex,center]{current title}%
+ \usebeamerfont{footline text}\insertshorttitle%
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[wd=.275\paperwidth,ht=2.75ex,dp=1.5ex,right]{current title}%
+ \usebeamerfont{footline text}\insertshortdate{}\hspace*{6.5em}%
+ \end{beamercolorbox}%
+ }%
+ \begin{tikzpicture}[overlay]
+ \usebeamercolor[fg]{title in head/foot}
+ \draw (.275\paperwidth,0) -- (.275\paperwidth,3.25ex);
+ \draw (.725\paperwidth,0) -- (.725\paperwidth,3.25ex);
+ \end{tikzpicture}
+
+ \begin{tikzpicture}[overlay]
+ \usebeamercolor[bg]{current title}
+ \draw[fill] (\paperwidth-5ex,3.625ex) circle (6ex);
+ \usebeamercolor[fg]{current title}
+ \draw[fill] (\paperwidth-5ex,3.625ex) circle (5ex);
+ \usebeamercolor[bg]{current title}
+ \node at (\paperwidth-5ex,4ex) {{\footnotesize\mathversion{bold}${}^{\insertframenumber}/_{\inserttotalframenumber}$}};
+ \end{tikzpicture}
+ \else%
+ \hbox{%
+ \begin{beamercolorbox}[wd=.3\paperwidth,ht=3ex,dp=1.5ex,center,sep=-1ex]{current author}%
+ \usebeamerfont{footline text}\insertshortauthor%
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[wd=.4\paperwidth,ht=3ex,dp=1.5ex,center,sep=-1ex]{current title}%
+ \usebeamerfont{footline text}\insertshorttitle%
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[wd=.2\paperwidth,ht=3ex,dp=1.5ex,center,sep=-1ex]{current date}%
+ \usebeamerfont{footline text}\insertshortdate%
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[wd=.1\paperwidth,ht=3ex,dp=1.5ex,center,sep=-1ex]{current page}%
+ \usebeamerfont{footline text}\insertframenumber/\inserttotalframenumber%
+ \end{beamercolorbox}%
+ }%
+ \fi%
+ \fi%
+ \fi%
+}
+
+%------------------
+% Standout frames
+%------------------
+\define@key{beamerframe}{standout}[true]{%
+ \booltrue{celestia@standout}%
+ \begingroup
+ % Center the frame and remove frame number
+ \setkeys{beamerframe}{c}%
+ \setkeys{beamerframe}{noframenumbering}%
+
+ % Set the colors for standout frame
+ \setbeamercolor{background canvas}{bg=accent!10}%
+ \setbeamercolor{frametitle}{fg=background,bg=accent}%
+ \setbeamercolor{normal text}{fg=accent}%
+ \usebeamercolor[fg]{normal text}%
+
+ \setbeamercolor{block title}{parent={}}%
+ \setbeamercolor{block title}{fg=mainblue,bg=accent!10}%
+ \setbeamercolor{block title example}{parent={}}%
+ \setbeamercolor{block title example}{fg=maingreen,bg=accent!10}%
+ \setbeamercolor{block title alerted}{parent={}}%
+ \setbeamercolor{block title alerted}{fg=mainred,bg=accent!10}%
+
+ % Remove footline for standout frames
+ \setbeamertemplate{footline}{}%
+}
+
+% Close the group at the end of the frame
+\pretocmd{\beamer@reseteecodes}{%
+ \ifbool{celestia@standout}{%
+ \endgroup
+ \boolfalse{celestia@standout}%
+ }{}%
+}{}{}
+
+% Format standout content
+\AtBeginEnvironment{beamer@frameslide}{%
+ \ifbool{celestia@standout}{%
+ \centering
+ \bfseries
+ }{}%
+}
+
+%------------------
+% Special pages
+%------------------
+% Title page
+\setbeamertemplate{title page}{%
+ \ifcelestia@nofooter\vskip3em\else\vskip2em\fi%
+ \vfill%
+ \begingroup
+ \def\titlealignment{left}
+ \ifcelestia@centeredtitle
+ \def\titlealignment{center}%
+ \fi
+ \ifcelestia@titleright
+ \def\titlealignment{right}%
+ \fi
+ \begin{beamercolorbox}[sep=8pt,wd=\textwidth,\titlealignment]{title}
+ \usebeamerfont{title}\inserttitle\par%
+ \ifx\insertsubtitle\@empty\else%
+ \vskip0.5em%
+ {\usebeamerfont{subtitle}\ifcelestia@unicolor\color{main}\else\color{black}\fi\insertsubtitle\par}%
+ \fi%
+ \vskip2pt%
+ {\color{rulecolor}\ifx\celestia@headwight\celestia@bfseries
+ \ifcelestia@centeredtitle
+ \rule{.5\linewidth}{1pt}%
+ \else
+ \rule{.95\linewidth}{1pt}%
+ \fi
+ \else
+ \ifcelestia@centeredtitle
+ \rule{.5\linewidth}{0.5pt}%
+ \else
+ \rule{.95\linewidth}{0.5pt}%
+ \fi
+ \fi}%
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[sep=8pt,wd=\textwidth,\titlealignment]{author}
+ \usebeamerfont{author}\insertauthor
+ \end{beamercolorbox}%
+ \vskip-8pt%
+ \begin{beamercolorbox}[sep=8pt,wd=\textwidth,\titlealignment]{institute}
+ \usebeamerfont{institute}\insertinstitute%
+ \end{beamercolorbox}%
+ \vskip-4pt%
+ \begin{beamercolorbox}[sep=8pt,wd=\textwidth,\titlealignment]{date}
+ \usebeamerfont{date}\insertdate%
+ \end{beamercolorbox}%
+ \endgroup
+ \vfill%
+}
+
+% Apply background to title page
+\ifcelestia@decorative
+\addtobeamertemplate{title page}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \fill[background] (current page.south west) rectangle (current page.north east);
+
+ \begin{scope}
+ \fill[accent!85!white,opacity=0.045] ([xshift=-1.4cm,yshift=-1.1cm]current page.north east) circle (0.55cm);
+ \fill[accent!78!white,opacity=0.055] ([xshift=-0.7cm,yshift=-1.6cm]current page.north east) circle (0.45cm);
+
+ \fill[accent!88!white,opacity=0.04] ([xshift=-1.9cm,yshift=-0.8cm]current page.north east) circle (0.32cm);
+ \fill[accent!92!white,opacity=0.05] ([xshift=-1.2cm,yshift=-0.6cm]current page.north east) circle (0.25cm);
+
+ \fill[accent!89!white,opacity=0.045] ([xshift=-0.5cm,yshift=-0.9cm]current page.north east) circle (0.2cm);
+ \end{scope}
+
+ \shade[ball color=accent!5!white,opacity=0.2]
+ ([xshift=-1.3cm,yshift=-1.2cm]current page.north east) circle (0.5cm);
+ \end{tikzpicture}%
+}{}
+\fi
+
+%------------------
+% Section pages
+%------------------
+\setbeamertemplate{section page}{%
+ \ifcelestia@decorative
+ \begin{tikzpicture}[remember picture,overlay]
+ \fill[accent!92!white,opacity=0.038] ([xshift=3.82cm,yshift=1.18cm]current page.center) circle (2.85cm);
+ \fill[accent!78!white,opacity=0.032] ([xshift=4.55cm,yshift=-0.73cm]current page.center) circle (2.15cm);
+
+ \fill[accent!85!white,opacity=0.042] ([xshift=-3.23cm,yshift=2.85cm]current page.center) circle (1.62cm);
+ \fill[accent!72!white,opacity=0.034] ([xshift=-3.95cm,yshift=1.48cm]current page.center) circle (1.23cm);
+
+ \fill[accent!88!white,opacity=0.022] ([xshift=2.25cm,yshift=3.45cm]current page.center) circle (0.92cm);
+ \fill[accent!84!white,opacity=0.028] ([xshift=-2.65cm,yshift=-2.15cm]current page.center) circle (1.08cm);
+ \fill[accent!76!white,opacity=0.019] ([xshift=1.85cm,yshift=-2.95cm]current page.center) circle (0.73cm);
+ \fill[accent!90!white,opacity=0.016] ([xshift=-1.52cm,yshift=1.78cm]current page.center) circle (0.48cm);
+
+ \shade[ball color=accent!4.5!white,opacity=0.19]
+ ([xshift=2.82cm,yshift=-1.58cm]current page.center) circle (1.95cm);
+ \shade[ball color=accent!3.2!white,opacity=0.17]
+ ([xshift=-2.18cm,yshift=0.92cm]current page.center) circle (1.42cm);
+
+ \fill[accent!88!white,opacity=0.022] ([xshift=3.48cm,yshift=-2.38cm]current page.center) circle (0.28cm);
+ \fill[accent!85!white,opacity=0.018] ([xshift=-3.12cm,yshift=-1.25cm]current page.center) circle (0.35cm);
+ \fill[accent!92!white,opacity=0.014] ([xshift=1.15cm,yshift=2.72cm]current page.center) circle (0.25cm);
+ \fill[accent!86!white,opacity=0.016] ([xshift=-2.85cm,yshift=0.95cm]current page.center) circle (0.32cm);
+ \fill[accent!90!white,opacity=0.012] ([xshift=2.95cm,yshift=0.85cm]current page.center) circle (0.22cm);
+
+ \fill[accent!95!white,opacity=0.008] ([xshift=0.95cm,yshift=-2.45cm]current page.center) circle (0.18cm);
+ \fill[accent!93!white,opacity=0.009] ([xshift=-1.85cm,yshift=-1.65cm]current page.center) circle (0.15cm);
+ \end{tikzpicture}
+\fi
+
+\begin{center}
+ \parbox{.95\textwidth}{%
+ \centering
+ \begin{tikzpicture}[overlay,remember picture]
+ \node[fill=main!3!white,opacity=0.11,inner sep=1.72cm,shape=circle] at ([yshift=-0.382\textheight]current page.north) {};
+ \node[fill=main!4!white,opacity=0.13,inner sep=1.45cm,shape=circle] at ([yshift=-0.382\textheight]current page.north) {};
+ \node[fill=main!5!white,opacity=0.15,inner sep=1.18cm,shape=circle] at ([yshift=-0.382\textheight]current page.north) {};
+ \node[fill=main!6!white,opacity=0.17,inner sep=0.91cm,shape=circle] at ([yshift=-0.382\textheight]current page.north) {};
+ \node[fill=main!7!white,opacity=0.19,inner sep=0.64cm,shape=circle] at ([yshift=-0.382\textheight]current page.north) {};
+ \node[align=center,text width=.95\textwidth] at (0,0) {
+ \centering
+ {\usebeamercolor[fg]{section title}%
+ \usebeamerfont{section title}%
+ \insertsectionhead\par}%
+ };
+ \end{tikzpicture}
+ }
+\end{center}
+}
+
+\setbeamertemplate{subsection page}{%
+ \begin{center}
+ \parbox{.95\textwidth}{%
+ \centering
+ \begin{tikzpicture}[overlay,remember picture]
+ \node[align=center,text width=.95\textwidth] at (0,0) {
+ \centering
+ {\usebeamercolor[fg]{subsection title}%
+ \usebeamerfont{subsection title}%
+ \insertsubsectionhead\par}%
+ };
+ \end{tikzpicture}
+ }
+ \end{center}
+}
+
+\AtBeginSection{%
+ \begin{frame}[noframenumbering,plain]
+ \sectionpage
+ \end{frame}
+}
+
+\AtBeginSubsection{%
+ \begin{frame}[noframenumbering,plain]
+ \subsectionpage
+ \end{frame}
+}
+
+%------------------
+% Math and Theorem Settings
+%------------------
+
+% Set basic theorem colors
+\setbeamercolor{theorem text}{parent=normal text}
+\setbeamercolor{theorem title}{parent=structure}
+
+% Define theorem environments
+\theoremstyle{plain}
+\newtheorem{proposition}[theorem]{\translate{Proposition}}
+
+\theoremstyle{remark}
+\newtheorem{remark}[theorem]{\translate{Remark}}
+% \newtheorem{note}[theorem]{\translate{Note}}
+
+% Set theorem templates to normal font
+\setbeamertemplate{theorems}[normal font]
+
+% Math-specific commands for formatting
+\newcommand{\mathterm}[1]{\textcolor{mainblue}{\mathbf{#1}}}
+\newcommand{\mathdef}[1]{\textcolor{maingreen}{\mathit{#1}}}
+
+% Caption style
+\setbeamertemplate{caption}{%
+ \raggedright
+ \insertcaption\par
+ }
+
+%------------------
+% Listings Settings
+%------------------
+
+\RequirePackage{listings}
+
+\AtEndPreamble{
+ \colorlet{codeKeyword}{main}
+ \definecolor{codeString}{HTML}{333333}
+ \definecolor{codeComment}{HTML}{6A737D}
+ \colorlet{codeEmph}{accent}
+ \colorlet{codeNumber}{accent}
+ \definecolor{codeNumber}{HTML}{C84E3F}
+
+ \ifcelestia@unicolor
+ \colorlet{codeIdentifier}{main}
+ \else
+ \colorlet{codeIdentifier}{black}
+ \fi
+
+ \lstset{
+ basicstyle=\ttfamily\footnotesize\color{codeIdentifier},
+ keywordstyle=\color{codeKeyword}\csname\celestia@headweight\endcsname,
+ stringstyle=\color{codeString},
+ commentstyle=\color{codeComment},
+ emphstyle=\color{codeEmph}\csname\celestia@headweight\endcsname,
+ numberstyle=\color{codeNumber},
+ numbersep=5pt,
+ columns=fullflexible,
+ breaklines=true,
+ showstringspaces=false,
+ inputencoding=utf8,
+ extendedchars=true,
+ escapeinside={(*@}{@*)},
+ aboveskip=.25\baselineskip,
+ belowskip=.25\baselineskip,
+ literate={%
+ á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
+ {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
+ {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
+ {À}{{\`A}}1 {È}{{\`E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
+ {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
+ {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
+ {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
+ {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
+ {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
+ {ẞ}{{\SS}}1 {ç}{{\c{c}}}1 {Ç}{{\c{C}}}1 {ø}{{\o}}1 {Ø}{{\O}}1
+ {å}{{\aa}}1 {Å}{{\AA}}1 {ã}{{\~a}}1 {õ}{{\~o}}1 {Ã}{{\~A}}1
+ {Õ}{{\~O}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1 {¡}{{!`}}1
+ {°}{{\textdegree}}1 {º}{{\textordmasculine}}1 {ª}{{\textordfeminine}}1
+ {€}{{\euro}}1 {£}{{\pounds}}1 {©}{{\copyright}}1 {®}{{\textregistered}}1
+ {«}{{\guillemotleft}}1 {»}{{\guillemotright}}1 {Ð}{{\DH}}1 {ð}{{\dh}}1
+ {Ý}{{\'Y}}1 {ý}{{\'y}}1 {Þ}{{\TH}}1 {þ}{{\th}}1 {Ă}{{\u{A}}}1
+ {ă}{{\u{a}}}1 {Ą}{{\k{A}}}1 {ą}{{\k{a}}}1 {Ć}{{\'C}}1 {ć}{{\'c}}1
+ {Č}{{\v{C}}}1 {č}{{\v{c}}}1 {Ď}{{\v{D}}}1 {ď}{{\v{d}}}1 {Đ}{{\DJ}}1
+ {đ}{{\dj}}1 {Ė}{{\.{E}}}1 {ė}{{\.{e}}}1 {Ę}{{\k{E}}}1 {ę}{{\k{e}}}1
+ {Ě}{{\v{E}}}1 {ě}{{\v{e}}}1 {Ğ}{{\u{G}}}1 {ğ}{{\u{g}}}1 {Ĩ}{{\~I}}1
+ {ĩ}{{\~\i}}1 {Į}{{\k{I}}}1 {į}{{\k{i}}}1 {İ}{{\.{I}}}1 {ı}{{\i}}1
+ {Ĺ}{{\'L}}1 {ĺ}{{\'l}}1 {Ľ}{{\v{L}}}1 {ľ}{{\v{l}}}1 {Ł}{{\L{}}}1
+ {ł}{{\l{}}}1 {Ń}{{\'N}}1 {ń}{{\'n}}1 {Ň}{{\v{N}}}1 {ň}{{\v{n}}}1
+ {Ő}{{\H{O}}}1 {ő}{{\H{o}}}1 {Ŕ}{{\'{R}}}1 {ŕ}{{\'{r}}}1 {Ř}{{\v{R}}}1
+ {ř}{{\v{r}}}1 {Ś}{{\'S}}1 {ś}{{\'s}}1 {Ş}{{\c{S}}}1 {ş}{{\c{s}}}1
+ {Š}{{\v{S}}}1 {š}{{\v{s}}}1 {Ť}{{\v{T}}}1 {ť}{{\v{t}}}1 {Ũ}{{\~U}}1
+ }
+
+\lstdefinelanguage{json}{%
+ keywords={true,false,null},
+ sensitive=false,
+ morestring=[b]",
+ morecomment=[l]{//},
+ morecomment=[s]{/*}{*/},
+ literate=
+ *{0}{{{\color{codeComment}0}}}{1}
+ {1}{{{\color{codeComment}1}}}{1}
+ {2}{{{\color{codeComment}2}}}{1}
+ {3}{{{\color{codeComment}3}}}{1}
+ {4}{{{\color{codeComment}4}}}{1}
+ {5}{{{\color{codeComment}5}}}{1}
+ {6}{{{\color{codeComment}6}}}{1}
+ {7}{{{\color{codeComment}7}}}{1}
+ {8}{{{\color{codeComment}8}}}{1}
+ {9}{{{\color{codeComment}9}}}{1}
+ {:}{{{\color{codeKeyword}{:}}}}{1}
+ {,}{{{\color{codeKeyword}{,}}}}{1}
+ {\{}{{{\color{codeKeyword}{\{}}}}{1}
+ {\}}{{{\color{codeKeyword}{\}}}}}{1}
+ {[}{{{\color{codeKeyword}{[}}}}{1}
+ {]}{{{\color{codeKeyword}{]}}}}{1},
+}
+
+% YAML
+\lstdefinelanguage{yaml}{%
+ keywords={true,false,null,yes,no,on,off},
+ sensitive=false,
+ morestring=[b]",
+ morestring=[b]',
+ morecomment=[l]{\#},
+ literate=
+ *{:}{{{\color{codeKeyword}{:}}}}{1}
+ {-}{{{\color{codeKeyword}{-}}}}{1}
+ {>}{{{\color{codeKeyword}{>}}}}{1}
+ {|}{{{\color{codeKeyword}{|}}}}{1},
+}
+
+% TOML
+\lstdefinelanguage{toml}{%
+ keywords={true,false},
+ sensitive=false,
+ morestring=[b]",
+ morestring=[b]',
+ morecomment=[l]{\#},
+ literate=
+ *{=}{{{\color{codeKeyword}{=}}}}{1}
+ {[}{{{\color{codeKeyword}{[}}}}{1}
+ {]}{{{\color{codeKeyword}{]}}}}{1}
+ {.}{{{\color{codeKeyword}{.}}}}{1},
+}
+
+% CSV
+\lstdefinelanguage{csv}{%
+ sensitive=false,
+ morestring=[b]",
+ morecomment=[l]{\#},
+ literate=
+ *{,}{{{\color{codeKeyword}{,}}}}{1}
+ {;}{{{\color{codeKeyword}{;}}}}{1},
+}
+
+% Markdown
+\lstdefinelanguage{markdown}{%
+ sensitive=false,
+ morecomment=[l]{\%},
+ literate=
+ *{\#}{{{\color{codeKeyword}{\#}}}}{1}
+ {-}{{{\color{codeKeyword}{-}}}}{1}
+ {*}{{{\color{codeKeyword}{*}}}}{1}
+ {>}{{{\color{codeKeyword}{>}}}}{1}
+ {`}{{{\color{codeKeyword}{`}}}}{1}
+ {|}{{{\color{codeKeyword}{|}}}}{1}
+ {[}{{{\color{codeKeyword}{[}}}}{1}
+ {]}{{{\color{codeKeyword}{]}}}}{1}
+ {(}{{{\color{codeKeyword}{(}}}}{1}
+ {)}{{{\color{codeKeyword}{)}}}}{1},
+}
+
+%% Language-Specific Styles
+%% ----------------------------------
+\lstdefinestyle{python}{%
+ language=Python,
+ morekeywords={%
+ @property,@classmethod,@staticmethod,
+ },
+ emph={%
+ range,int,str,list,dict,set,bool,float,
+ tuple,super,type,print,len,sum,min,max,
+ enumerate,zip,map,filter,any,all,as,assert,
+ nonlocal,with,yield,self,True,False,None,
+ lambda,raise,await,async,
+ },
+ morestring=[b]""",
+}
+
+\lstdefinestyle{java}{%
+ language=Java,
+ morekeywords={%
+ @Override,@Deprecated,@SuppressWarnings,
+ @FunctionalInterface,@SafeVarargs,
+ var,record,sealed,permits,
+ public,private,protected,static,final,
+ abstract,interface,extends,implements
+ },
+ morecomment=[s]{/*}{*/},
+ morecomment=[l]//,
+ morestring=[b]",
+}
+
+\lstdefinestyle{cpp}{%
+ language=C++,
+ morekeywords={%
+ nullptr,constexpr,override,final,
+ template,typename,concept,requires,
+ auto,decltype,noexcept,static_assert,
+ thread_local,alignas,alignof
+ },
+ morecomment=[s]{/*}{*/},
+ morecomment=[l]//,
+ morestring=[b]",
+}
+
+\lstdefinestyle{javascript}{%
+ language=JavaScript,
+ morekeywords={%
+ let,const,var,function,class,extends,
+ static,get,set,new,this,super,
+ import,export,default,from,as,
+ async,await,yield,return,
+ undefined,null,true,false
+ },
+ morecomment=[s]{/*}{*/},
+ morecomment=[l]//,
+ morestring=[b]",
+ morestring=[b]',
+ morestring=[b]`,
+}
+
+\lstdefinestyle{sql}{%
+ language=SQL,
+ morekeywords={%
+ CREATE,TABLE,INSERT,INTO,VALUES,
+ SELECT,FROM,WHERE,GROUP,BY,HAVING,
+ ORDER,LIMIT,JOIN,LEFT,RIGHT,INNER,
+ UPDATE,SET,DELETE,ALTER,DROP,
+ CONSTRAINT,PRIMARY,KEY,FOREIGN,
+ REFERENCES,CASCADE,INDEX
+ },
+ sensitive=false,
+}
+
+\lstdefinestyle{latex}{%
+ language=[latex]TeX,
+ texcsstyle=*\bfseries\color{codeKeyword},
+ moretexcs = {usetheme,tableofcontents,index,footnote,sout,part,chapter,subsection,subsubsection,paragraph,maketitle,leqslant,geqslant,varnothing,includegraphics,draw,node,theoremstyle,newtcolorbox,tcbuselibrary,newtcbtheorem,SI,ang,ce,chemfig,norm,abs,deriv,R,N,Z,ProvidesPackage,color,ps,montitre,lstset,lstinline,lstinputlisting,definecolor,textcolor,colorlet,setlength,colorbox,fcolorbox,addplot,pgfplotsset,opadd,opsub,opmul,opdiv,opgcd,metre,second,squared,kelvin,coulomb,volt,per,opprint,legend,tkzDefPoint,tkzInterLL,tkzGetPoint,tkzDrawPolygon,tkzDrawSegments,tkzMarkRightAngles,tkzMarkSegments,tkzLabelPoints,boxed,boldsymbol,boldmath,multirow,addbibresource,printbibliography,bm,dfrac,meter,thead,makecell,euro,cellcolor,rowcolor,columncolor,base,repere,rog,ron,rond,derpart,drv,integrer,nuplet,anuplet,ensemble,E,V,suite,suitar,suitgeo,vect,norme,tr,rank,adj,sgn,im,di,intabfx,integrale,e,moinsinf,plusinf,sisetup,restoregeometry,newgeometry},
+ emph={width,axis~lines,xlabel,ylabel,xmin,ymin,grid,domain,samples,displayshiftintermediary,colback,colframe,colbacktitle,coltitle,enhanced,,fonttitle,margin,leftmargin,publisher,year,carrysub,lastcarry,locale,xmax,ymax,coordinates,mark,style,hmargin,vmargin,top,bottom,left,right,showframe,includeheadfoot,opacity,fill,above,},
+ morecomment=[l]{\%},
+ morestring=[b]",
+ sensitive=true
+ }
+
+\lstdefinestyle{bash}{%
+ language=bash,
+ morekeywords={%
+ source, alias, bg, bind, break, builtin, cd, command, compgen,
+ complete, continue, declare, dirs, disown, echo, enable, eval,
+ exec, exit, export, fc, fg, getopts, hash, help, history, jobs,
+ kill, let, local, logout, mapfile, popd, printf, pushd, pwd,
+ read, readarray, readonly, return, set, shift, shopt, suspend,
+ test, times, trap, type, typeset, ulimit, umask, unalias,
+ unset, wait
+ },
+ morestring=[b]",
+ morestring=[b]',
+ morestring=[b]\`,
+ morecomment=[l]{\#},
+ literate=
+ *{\$}{{{\color{codeKeyword}{\$}}}}{1}
+ {|}{{{\color{codeKeyword}{|}}}}{1}
+ {>}{{{\color{codeKeyword}{>}}}}{1}
+ {<}{{{\color{codeKeyword}{<}}}}{1}
+ {&}{{{\color{codeKeyword}{\&}}}}{1},
+}
+
+\lstdefinestyle{assembly}{%
+ language=[x86]Assembler,
+ morekeywords={%
+ section, global, extern
+ },
+ morecomment=[l]{;},
+ morecomment=[l]{\#},
+ literate=
+ *{,}{{{\color{codeKeyword}{,}}}}{1}
+ {:}{{{\color{codeKeyword}{:}}}}{1}
+ {[}{{{\color{codeKeyword}{[}}}}{1}
+ {]}{{{\color{codeKeyword}{]}}}}{1}
+ {\$}{{{\color{codeKeyword}{\$}}}}{1}
+ {\%}{{{\color{codeKeyword}{\%}}}}{1},
+}
+
+\lstdefinestyle{lisp}{%
+ language=Lisp,
+ morekeywords={%
+ setq, setf, loop, do, progn, when, unless
+ },
+ literate=
+ *{(}{{{\color{codeKeyword}{(}}}}{1}
+ {)}{{{\color{codeKeyword}{)}}}}{1}
+ {'}{{{\color{codeKeyword}{'}}}}{1}
+ {`}{{{\color{codeKeyword}{`}}}}{1}
+ {,}{{{\color{codeKeyword}{,}}}}{1},
+}
+
+\lstdefinestyle{json}{%
+ language=json,
+}
+
+\lstdefinestyle{yaml}{%
+ language=yaml,
+}
+
+\lstdefinestyle{toml}{%
+ language=toml,
+}
+
+\lstdefinestyle{csv}{%
+ language=csv,
+}
+
+\lstdefinestyle{markdown}{%
+ language=markdown,
+}
+
+}
+
+\newtcolorbox{lstbox}{
+ enhanced,
+ boxrule=0.5pt,
+ colback=codebackground,
+ colframe=\ifcelestia@nocodeframe background\else codeframecolor\fi,
+ left=1ex,
+ right=1ex,
+ top=0pt,
+ bottom=0pt,
+ boxsep=0pt
+}
+
+\ifcelestia@codebox
+ \BeforeBeginEnvironment{lstlisting}{\begin{lstbox}}
+ \AfterEndEnvironment{lstlisting}{\end{lstbox}}
+
+ \let\oldlstinputlisting\lstinputlisting
+ \renewcommand{\lstinputlisting}[2][]{%
+ \begin{lstbox}%
+ \oldlstinputlisting[#1]{#2}%
+ \end{lstbox}%
+ }
+\else
+ \BeforeBeginEnvironment{lstlisting}{}
+ \AfterEndEnvironment{lstlisting}{}
+\fi
+
+% Mode declaration
+\mode<all>
diff --git a/Master/texmf-dist/tex/latex/beamertools/beamertools.sty b/Master/texmf-dist/tex/latex/beamertools/beamertools.sty
new file mode 100644
index 00000000000..1bf9de40fc6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/beamertools/beamertools.sty
@@ -0,0 +1,72 @@
+%%
+%% This is file `beamertools.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% beamertools.dtx (with options: `table,beamertools.sty')
+%%
+%% __________________________________________________
+%% Vafa Khalighi
+%%
+%% Copyright (c) 2025 Vafa Khalighi
+%%
+%% It may be distributed and/or modified under the LaTeX Project Public License,
+%% version 1.3c or higher (your choice). The latest version of
+%% this license is at: http://www.latex-project.org/lppl.txt
+%%
+%% This work is “author-maintained” (as per LPPL maintenance status)
+%% by Vafa Khalighi.
+%%
+%% \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 \~}
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{beamertools}[2025/01/09 v0.1 A collection of programming tools for beamer]
+\newcommand<>\redefbeamertemplate{
+ \ifblank{#1}
+ {\def\beamer@@oar{<presentation>}}
+ {\def\beamer@@oar{#1}}\beamer@redefbeamertemplate}
+
+\def\beamer@redefbeamertemplate{\@ifstar{\beamer@sbttrue\beamer@redef@sbtoo}{\beamer@sbtfalse\beamer@redef@sbtoo}}
+
+\def\beamer@redef@sbtoo#1#2{\@ifnextchar[{\beamer@redef@sbto{#1}{#2}}{\beamer@redef@sbto{#1}{#2}[0]}}
+
+\def\beamer@redef@sbto#1#2[#3]{\@ifnextchar[{\beamer@@redef@sbto{#1}{#2}[{#3}]}{\def\beamer@sbtotemp{}\beamer@@@redef@sbto{#1}{#2}[{#3}]}}
+
+\long\def\beamer@@redef@sbto#1#2[#3][#4]{\long\def\beamer@sbtotemp{[{#4}]}\beamer@@@redef@sbto{#1}{#2}[{#3}]}
+
+\long\def\beamer@@@redef@sbto#1#2[#3]#4{%
+ \beamer@sbttoks={\beamer@@@@redef@sbto{#1}{#2}[{#3}]{#4}}%
+ \@ifnextchar[{\the\beamer@sbttoks}{\the\beamer@sbttoks[action]{}}%
+}
+
+\long\def\beamer@@@@redef@sbto#1#2[#3]#4[#5]#6{%
+ \edef\beamer@@sbtoarg{\expandafter\noexpand\csname beamer@@tmpop@#1@#2\endcsname[{#3}]}%
+\@ifundefined{beamer@@tmpop@#1@#2}{%
+ \PackageError{beamertools}{beamer template with element name `#1' and predefined option `#2' undefined}\@ehc
+}
+\expandafter\expandafter\expandafter\renewcommand\expandafter\beamer@@sbtoarg\beamer@sbtotemp{%
+ \expandafter\long\expandafter\def\csname beamer@@tmpl@#1\endcsname{#4}#6}%
+ \let\beamer@@next=\beamer@resetsbtoarg%
+ \expandafter\mode\beamer@@oar{\let\beamer@@next=\relax}%
+ \beamer@@next%
+ \ifbeamer@sbt\setbeamertemplate{#1}[{#2}]\relax\relax\relax\relax\relax\relax\relax\relax\relax\fi%
+}
+\endinput
+%%
+%% End of file `beamertools.sty'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/berenis.sty b/Master/texmf-dist/tex/latex/berenisadf/berenis.sty
index 7d855d25614..ff3c9d9471c 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/berenis.sty
+++ b/Master/texmf-dist/tex/latex/berenisadf/berenis.sty
@@ -1,161 +1,193 @@
-%% Copyright 2013 Clea F. Rees
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Clea F. Rees.
-%
-% This work consists of all files listed in manifest.txt.
+%%
+%% This is file `berenis.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `sty')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{berenis}[2013/11/20 v2.0 berenis]
-\RequirePackage{xkeyval}
-\RequirePackage{nfssext-cfr}
-\newif\ifberenis@ly
-%:boolkeys for ligature/swash encoding as default
-\define@boolkey{berenis.sty}[berenis@]{lig}[true]{%
- \ifberenis@lig
- \def\berenis@lig{w}%
- \def\berenis@enc{LY1}%
- \berenis@lytrue
- \else
- \def\berenis@lig{}%
- \berenis@lyfalse
- \fi}
-%:boolkeys for roman osf/lf
-\define@boolkey{berenis.sty}[berenis@]{osf}[true]{%
- \ifberenis@osf
- \def\berenis@lfosf{j}%
- \else
- \def\berenis@lfosf{}%
- \fi}
-\define@boolkey{berenis.sty}[berenis@]{lf}[true]{%
- \ifberenis@lf
- \def\berenis@lfosf{}%
- \else
- \def\berenis@lfosf{j}%
- \fi}
-%:boolkeys for roman prop/tab
-\define@boolkey{berenis.sty}[berenis@]{prop}[true]{%
- \ifberenis@prop
- \def\berenis@tabprop{2}%
- \else
- \def\berenis@tabprop{}%
- \fi}
-\define@boolkey{berenis.sty}[berenis@]{tab}[true]{%
- \ifberenis@tab
- \def\berenis@tabprop{}%
- \else
- \def\berenis@tabprop{2}%
- \fi}
-\define@boolkey{berenis.sty}[berenis@]{lm}[true]{%
- \ifberenis@lm
- \relax
- \else
- \PackageWarning{berenis.sty}{%
- Default sf and tt families will not\MessageBreak
- be changed to Latin Modern.\MessageBreak
- If you use the LY1 font encoding, \MessageBreak
- you should change the defaults\MessageBreak
- yourself since Computer Modern\MessageBreak
- does not support LY1.\MessageBreak}%
- \fi}
-\define@choicekey*+{berenis.sty}{enc}[\benc\bencno]{ly1,t1}{%
- \ifcase\bencno\relax
- \def\berenis@enc{LY1}%
- \berenis@lytrue
- \or
- \def\berenis@enc{T1}%
- \def\berenis@lig{}%
- \berenis@lyfalse
- \fi}{%
- \PackageWarning{berenis.sty}{#1 is not a supported font encoding. Please see the package documentation for details.}%
- }%
-%:defaults to ensure everything is defined to something
-\ExecuteOptionsX{lig=false,osf=true,prop=true,lm=true,enc=ly1}
-%:options override defaults
-\ProcessOptionsX
-\RequirePackage[\berenis@enc]{fontenc}
-%:make BerenisADFPro default roman font, implementing options for ligature/swash encoding and lf/osf as applicable
-\renewcommand{\rmdefault}{ybd\berenis@tabprop\berenis@lfosf\berenis@lig}
-\ifberenis@lm
- \renewcommand{\sfdefault}{lmss}
- \renewcommand{\ttdefault}{lmtt}
-\fi
-\newcommand*{\berenis@rhybudd}[2]{\PackageWarning{berenis.sty}{#1 unavailable.\MessageBreak #2 used instead.\MessageBreak}}%
-%:based on definition of \ss from afm2pl manual page
-\def\zeroslash{%
- \ifberenis@ly
- \setbox0\hbox{\char184}%
- \setbox1\hbox{\char24}%
- \ifnum\wd0=\wd1 \char48\berenis@rhybudd{slashed zero}{zero}\else\ifnum\wd0=0 \char48\berenis@rhybudd{slashed zero}{zero}\else\char184\fi\fi
- \else
- \char48\berenis@rhybudd{slashed zero}{zero}%
- \fi}
-%:experiment: even if this works, it is a horrible kludge
-%\gdef\berenis@ligswash{w}%
-%\def\berenis@Q{ Q}%
-%\def\berenis@get@vff#1#2#3#4\@nil{#1#2#3}%
-%\def\berenis@get@variants ybd#1\@nil{#1}%
-%\def\berenis@cyntaf@variant#1#2\@nil{#1}%
-%\def\berenis@ail@variant#1#2\@nil{#2}%
-%\newcommand*{\berenis@variants}[1]{%
-% \edef\tempz{#1}%
-% \def\tempe{}%
-% \ifx\tempz\tempe
-% \gdef\berenis@olaf{}%
-% \else
-% \edef\tempb{\expandafter\berenis@cyntaf@variant#1 Q\@nil}%
-% \edef\tempc{\expandafter\berenis@ail@variant#1 Q\@nil}%
-% \edef\tempd{\expandafter\berenis@ail@variant#1\@nil}%
-% \ifx\tempc\berenis@Q \gdef\berenis@olaf{\tempb}\else\berenis@variants{\tempd}\fi
-% \fi
-% }
-%\newcommand*{\berenis@teulu}{%
-% \edef\tempf{\expandafter\berenis@get@vff\f@family\@nil}%
-% \def\tempybd{ybd}%
-% \ifx\tempf\tempybd
-% \edef\tempa{\expandafter\berenis@get@variants\f@family\@nil}%
-% \berenis@variants{\tempa}%
-% \else
-% \gdef\berenis@olaf{}%
-% \fi}
-% Get proper tai bach for W, w, Y, y (Ideally would set further stuff but these are the most problematic.
-% In version 1.0, this only worked in the swash variants. In version 2.0, it works for any LY1 encoding.
-% The cost is some of the non-fancy non-standard ligatures and the boundary character in the non-swash variants.
-\ifberenis@ly
- \DeclareTextCompositeCommand{\^}{LY1}{W}{%
-% \berenis@teulu
-% \edef\tempx{\berenis@ligswash}%
-% \edef\tempy{\berenis@olaf}%
-% \ifx\tempx\tempy \char9 \else\accent94\char87\fi
- \char9}
- \DeclareTextCompositeCommand{\^}{LY1}{w}{%
-% \berenis@teulu
-% \edef\tempx{\berenis@ligswash}%
-% \edef\tempy{\berenis@olaf}%
-% \ifx\tempx\tempy \char3 \else\accent94\char119\fi
- \char3}
- \DeclareTextCompositeCommand{\^}{LY1}{Y}{%
-% \berenis@teulu
-% \edef\tempx{\berenis@ligswash}%
-% \edef\tempy{\berenis@olaf}%
-% \ifx\tempx\tempy \char10 \else\accent94\char89\fi
- \char10}
- \DeclareTextCompositeCommand{\^}{LY1}{y}{%
-% \berenis@teulu
-% \edef\tempx{\berenis@ligswash}%
-% \edef\tempy{\berenis@olaf}%
-% \ifx\tempx\tempy \char13 \else\accent94\char121\fi
- \char13}
-\else
- \RequirePackage{textcomp}
-\fi
-\endinput
+\RequirePackage{svn-prov}
+\ProvidesPackageSVN[berenis.sty]{$Id: berenisadf.dtx 10366 2024-09-18 14:25:21Z cfrees $}[v2.1 \revinfo]
+\DefineFileInfoSVN[berenis]
+\RequirePackage{nfssext-cfr}[2024/01/01]
+\ExplSyntaxOn
+\msg_new:nnn { berenis } { unknown-choice }
+{ % name of choice; valid choices; invalid choice given
+ berenis ~::~#1:~\msg_line_context:~#3~is~not~a~supported~font~encoding.~
+ Valid~choices~are~#2.~
+ Please~see~documentation~for~details.
+}
+\msg_new:nnn { berenis } { unavailable }% what; substitute
+{
+ berenis ~::~#1:~\msg_line_context:~#1~unavailable. ~
+ #2~used~instead.
+}
+\keys_define:nn { berenis }
+{
+ enc .choice:,
+ enc .choices:nn = { ly1, LY1, t1, T1 }
+ {
+ \int_case:nn { \l_keys_choice_int }
+ {
+ { 1 } { \tl_gset:Nn \g__berenis_enc_tl { LY1 } }
+ { 2 } { \tl_gset:Nn \g__berenis_enc_tl { LY1 } }
+ { 3 } { \tl_gset:Nn \g__berenis_enc_tl { T1 } }
+ { 4 } { \tl_gset:Nn \g__berenis_enc_tl { T1 } }
+ }
+ },
+ enc / unknown .code:n = {
+ \msg_error:nneee { berenis } { unknown-choice }
+ { enc }
+ { ly1 , LY1 , t1, T1 }
+ { \exp_not:n {#1} }
+ },
+ enc .initial:n = ly1,
+ lig .bool_gset:N = \g__berenis_lig_bool,
+ lig .default:n = true,
+ lig .initial:n = false,
+ lf .bool_gset_inverse:N = \g__berenis_osf_bool,
+ lf .default:n = true,
+ lining .bool_gset_inverse:N = \g__berenis_osf_bool,
+ lining .default:n = true,
+ lm .bool_gset:N = \g__berenis_lm_bool,
+ lm .default:n = true,
+ lm .initial:n = true,
+ osf .bool_gset:N = \g__berenis_osf_bool,
+ osf .default:n = true,
+ osf .initial:n = true,
+ prop .bool_gset:N = \g__berenis_prop_bool,
+ prop .default:n = true,
+ prop .initial:n = true,
+ scale .tl_gset:N = \ybd@scale,
+ scale .initial:V = \@empty,
+ tab .bool_gset_inverse:N = \g__berenis_prop_bool,
+ tab .default:n = true,
+}
+\ProcessKeyOptions[berenis]
+\bool_if:NT \g__berenis_lig_bool
+{
+ \tl_if_eq:NnF \g__berenis_enc_tl { LY1 }
+ {
+ \PackageWarning { berenis } {
+ Setting ~ font ~ encoding ~ to ~ LY1 ~ to ~ accommodate ~ ligatures
+ }
+ \tl_gset:Nn \g__berenis_enc_tl { LY1 }
+ }
+}
+\tl_if_eq:NnT \g__berenis_enc_tl { LY1 }
+{
+ \bool_if:NF \g__berenis_lm_bool
+ {
+ \PackageWarning{berenis.sty}
+ {
+ Default ~ sf ~ and ~ tt ~ families ~ will ~ not\MessageBreak
+ be ~ changed ~ to ~ Latin ~ Modern.\MessageBreak
+ Since ~ Computer ~ Modern ~ does ~ not ~ support ~ LY1,\MessageBreak
+ either ~ use ~ enc=t1 ~ to ~ use ~ T1 ~ or ~ set ~\MessageBreak
+ suitable ~ defaults ~ for ~ sans ~ (`sf') ~ and ~\MessageBreak
+ typewriter ~ (`tt') ~ yourself.\MessageBreak
+ }
+ }
+}
+\tl_new:N \g__berenis_rm_tl
+\tl_new:N \g__berenis_rm_subst_tl
+\tl_gset:Nn \g__berenis_rm_tl {ybd}
+\bool_if:NT \g__berenis_prop_bool
+{
+ \tl_gput_right:Nn \g__berenis_rm_tl {2}
+}
+\bool_if:NT \g__berenis_osf_bool
+{
+ \tl_gput_right:Nn \g__berenis_rm_tl {j}
+}
+\tl_gset_eq:NN \g__berenis_rm_subst_tl \g__berenis_rm_tl
+\bool_if:NT \g__berenis_lig_bool
+{
+ \tl_gput_right:Nn \g__berenis_rm_tl {w}
+}
+\renewcommand{\rmdefault}{\g__berenis_rm_tl}
+\RequirePackage[\g__berenis_enc_tl]{fontenc}
+\tl_if_eq:NnT \g__berenis_enc_tl { LY1 }
+{
+ \DeclareTextCompositeCommand{\^}{LY1}{W}{
+ \char9
+ }
+ \DeclareTextCompositeCommand{\^}{LY1}{w}{
+ \char3
+ }
+ \DeclareTextCompositeCommand{\^}{LY1}{Y}{
+ \char10
+ }
+ \DeclareTextCompositeCommand{\^}{LY1}{y}{
+ \char13
+ }
+}
+\IfFormatAtLeastTF {2020-02-02}{%
+ \DeclareEncodingSubset{TS1}{ybd}{1}%
+ \DeclareEncodingSubset{TS1}{ybd2}{1}%
+ \DeclareEncodingSubset{TS1}{ybd2j}{1}%
+ \DeclareEncodingSubset{TS1}{ybdj}{1}%
+ \DeclareEncodingSubset{TS1}{ybd0}{1}%
+ \DeclareEncodingSubset{TS1}{ybd1}{1}%
+ \DeclareEncodingSubset{TS1}{ybdw}{1}%
+ \DeclareEncodingSubset{TS1}{ybd2w}{1}%
+ \DeclareEncodingSubset{TS1}{ybd2jw}{1}%
+ \DeclareEncodingSubset{TS1}{ybdjw}{1}%
+}{
+ \RequirePackage{textcomp}
+}
+\UndeclareTextCommand{\textperthousand}{T1}
+\bool_if:NT \g__berenis_lm_bool
+{
+ \renewcommand{\sfdefault}{lmss}
+ \renewcommand{\ttdefault}{lmtt}
+}
+\cs_new_nopar:Npn \zeroslash
+{
+ \tl_if_eq:NnTF \g__berenis_enc_tl { LY1 }
+ {
+ \setbox0\hbox{\char184}%
+ \setbox1\hbox{\char24}%
+ \ifnum\wd0=\wd1 \char48
+ \msg_warning:nnnn { berenis } { unavailable }
+ { slashed ~ zero } { zero }
+ \else
+ \ifnum\wd0=0 \char48
+ \msg_warning:nnnn { berenis } { unavailable }
+ { slashed ~ zero } { zero }
+ \else\char184
+ \fi
+ \fi
+ } {
+ \char48
+ \msg_warning:nnnn { berenis } { unavailable }
+ { slashed ~ zero } { zero }
+ }
+}
+\ExplSyntaxOff
%% end berenis.sty
+\endinput
+%%
+%% End of file `berenis.sty'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ly1ybd.fd b/Master/texmf-dist/tex/latex/berenisadf/ly1ybd.fd
index f6a20417d2e..9d91c7709c4 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/ly1ybd.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/ly1ybd.fd
@@ -1,51 +1,87 @@
-%Filename: ly1ybd.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `ly1ybd.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ly1ybd')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ly1ybd.fd}
- [2010/08/24 font definitions for LY1/ybd.]
+ [0000/00/00 font definitions for LY1/ybd.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{LY1}{ybd}{}
\DeclareFontShape{LY1}{ybd}{m}{n}{
- <-> ybdr8y
+ <-> \ybd@@scale ybdr8y
}{}
\DeclareFontShape{LY1}{ybd}{m}{sc}{
- <-> ybdrc8y
+ <-> \ybd@@scale ybdrc8y
}{}
\DeclareFontShape{LY1}{ybd}{m}{it}{
- <-> ybdri8y
+ <-> \ybd@@scale ybdri8y
}{}
-\DeclareFontShape{LY1}{ybd}{m}{si}{
- <-> ybdrci8y
+\DeclareFontShape{LY1}{ybd}{m}{scit}{
+ <-> \ybd@@scale ybdrci8y
}{}
\DeclareFontShape{LY1}{ybd}{b}{n}{
- <-> ybdb8y
+ <-> \ybd@@scale ybdb8y
}{}
\DeclareFontShape{LY1}{ybd}{b}{sc}{
- <-> ybdbc8y
+ <-> \ybd@@scale ybdbc8y
}{}
\DeclareFontShape{LY1}{ybd}{b}{it}{
- <-> ybdbi8y
+ <-> \ybd@@scale ybdbi8y
}{}
-\DeclareFontShape{LY1}{ybd}{b}{si}{
- <-> ybdbci8y
+\DeclareFontShape{LY1}{ybd}{b}{scit}{
+ <-> \ybd@@scale ybdbci8y
}{}
\DeclareFontShape{LY1}{ybd}{m}{sl}{<->ssub * ybd/m/it}{}
+\DeclareFontShape{LY1}{ybd}{m}{si}{<->ssub * ybd/m/scit}{}
\DeclareFontShape{LY1}{ybd}{b}{sl}{<->ssub * ybd/b/it}{}
\DeclareFontShape{LY1}{ybd}{bx}{n}{<->ssub * ybd/b/n}{}
\DeclareFontShape{LY1}{ybd}{bx}{sc}{<->ssub * ybd/b/sc}{}
\DeclareFontShape{LY1}{ybd}{bx}{it}{<->ssub * ybd/b/it}{}
\DeclareFontShape{LY1}{ybd}{bx}{sl}{<->ssub * ybd/b/sl}{}
+\DeclareFontShape{LY1}{ybd}{bx}{scit}{<->ssub * ybd/b/scit}{}
+\DeclareFontShape{LY1}{ybd}{b}{si}{<->ssub * ybd/bx/scit}{}
\DeclareFontShape{LY1}{ybd}{bx}{si}{<->ssub * ybd/b/si}{}
\endinput
+%%
+%% End of file `ly1ybd.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ly1ybd0.fd b/Master/texmf-dist/tex/latex/berenisadf/ly1ybd0.fd
index d76698b5c0e..d51561e6951 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/ly1ybd0.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/ly1ybd0.fd
@@ -1,51 +1,87 @@
-%Filename: ly1ybd0.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `ly1ybd0.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ly1ybd0')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ly1ybd0.fd}
- [2010/08/24 font definitions for LY1/ybd0.]
+ [0000/00/00 font definitions for LY1/ybd0.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{LY1}{ybd0}{}
\DeclareFontShape{LY1}{ybd0}{m}{n}{
- <-> ybdr08y
+ <-> \ybd@@scale ybdr08y
}{}
\DeclareFontShape{LY1}{ybd0}{m}{sc}{
- <-> ybdr0c8y
+ <-> \ybd@@scale ybdr0c8y
}{}
\DeclareFontShape{LY1}{ybd0}{m}{it}{
- <-> ybdr0i8y
+ <-> \ybd@@scale ybdr0i8y
}{}
-\DeclareFontShape{LY1}{ybd0}{m}{si}{
- <-> ybdr0ci8y
+\DeclareFontShape{LY1}{ybd0}{m}{scit}{
+ <-> \ybd@@scale ybdr0ci8y
}{}
\DeclareFontShape{LY1}{ybd0}{b}{n}{
- <-> ybdb08y
+ <-> \ybd@@scale ybdb08y
}{}
\DeclareFontShape{LY1}{ybd0}{b}{sc}{
- <-> ybdb0c8y
+ <-> \ybd@@scale ybdb0c8y
}{}
\DeclareFontShape{LY1}{ybd0}{b}{it}{
- <-> ybdb0i8y
+ <-> \ybd@@scale ybdb0i8y
}{}
-\DeclareFontShape{LY1}{ybd0}{b}{si}{
- <-> ybdb0ci8y
+\DeclareFontShape{LY1}{ybd0}{b}{scit}{
+ <-> \ybd@@scale ybdb0ci8y
}{}
\DeclareFontShape{LY1}{ybd0}{m}{sl}{<->ssub * ybd0/m/it}{}
+\DeclareFontShape{LY1}{ybd0}{m}{si}{<->ssub * ybd0/m/scit}{}
\DeclareFontShape{LY1}{ybd0}{b}{sl}{<->ssub * ybd0/b/it}{}
\DeclareFontShape{LY1}{ybd0}{bx}{n}{<->ssub * ybd0/b/n}{}
\DeclareFontShape{LY1}{ybd0}{bx}{sc}{<->ssub * ybd0/b/sc}{}
\DeclareFontShape{LY1}{ybd0}{bx}{it}{<->ssub * ybd0/b/it}{}
\DeclareFontShape{LY1}{ybd0}{bx}{sl}{<->ssub * ybd0/b/sl}{}
+\DeclareFontShape{LY1}{ybd0}{bx}{scit}{<->ssub * ybd0/b/scit}{}
+\DeclareFontShape{LY1}{ybd0}{b}{si}{<->ssub * ybd0/bx/scit}{}
\DeclareFontShape{LY1}{ybd0}{bx}{si}{<->ssub * ybd0/b/si}{}
\endinput
+%%
+%% End of file `ly1ybd0.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ly1ybd1.fd b/Master/texmf-dist/tex/latex/berenisadf/ly1ybd1.fd
index 3956d456b62..61a43bc974d 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/ly1ybd1.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/ly1ybd1.fd
@@ -1,51 +1,87 @@
-%Filename: ly1ybd1.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `ly1ybd1.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ly1ybd1')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ly1ybd1.fd}
- [2010/08/24 font definitions for LY1/ybd1.]
+ [0000/00/00 font definitions for LY1/ybd1.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{LY1}{ybd1}{}
\DeclareFontShape{LY1}{ybd1}{m}{n}{
- <-> ybdr18y
+ <-> \ybd@@scale ybdr18y
}{}
\DeclareFontShape{LY1}{ybd1}{m}{sc}{
- <-> ybdr1c8y
+ <-> \ybd@@scale ybdr1c8y
}{}
\DeclareFontShape{LY1}{ybd1}{m}{it}{
- <-> ybdr1i8y
+ <-> \ybd@@scale ybdr1i8y
}{}
-\DeclareFontShape{LY1}{ybd1}{m}{si}{
- <-> ybdr1ci8y
+\DeclareFontShape{LY1}{ybd1}{m}{scit}{
+ <-> \ybd@@scale ybdr1ci8y
}{}
\DeclareFontShape{LY1}{ybd1}{b}{n}{
- <-> ybdb18y
+ <-> \ybd@@scale ybdb18y
}{}
\DeclareFontShape{LY1}{ybd1}{b}{sc}{
- <-> ybdb1c8y
+ <-> \ybd@@scale ybdb1c8y
}{}
\DeclareFontShape{LY1}{ybd1}{b}{it}{
- <-> ybdb1i8y
+ <-> \ybd@@scale ybdb1i8y
}{}
-\DeclareFontShape{LY1}{ybd1}{b}{si}{
- <-> ybdb1ci8y
+\DeclareFontShape{LY1}{ybd1}{b}{scit}{
+ <-> \ybd@@scale ybdb1ci8y
}{}
\DeclareFontShape{LY1}{ybd1}{m}{sl}{<->ssub * ybd1/m/it}{}
+\DeclareFontShape{LY1}{ybd1}{m}{si}{<->ssub * ybd1/m/scit}{}
\DeclareFontShape{LY1}{ybd1}{b}{sl}{<->ssub * ybd1/b/it}{}
\DeclareFontShape{LY1}{ybd1}{bx}{n}{<->ssub * ybd1/b/n}{}
\DeclareFontShape{LY1}{ybd1}{bx}{sc}{<->ssub * ybd1/b/sc}{}
\DeclareFontShape{LY1}{ybd1}{bx}{it}{<->ssub * ybd1/b/it}{}
\DeclareFontShape{LY1}{ybd1}{bx}{sl}{<->ssub * ybd1/b/sl}{}
+\DeclareFontShape{LY1}{ybd1}{bx}{scit}{<->ssub * ybd1/b/scit}{}
+\DeclareFontShape{LY1}{ybd1}{b}{si}{<->ssub * ybd1/bx/scit}{}
\DeclareFontShape{LY1}{ybd1}{bx}{si}{<->ssub * ybd1/b/si}{}
\endinput
+%%
+%% End of file `ly1ybd1.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ly1ybd2.fd b/Master/texmf-dist/tex/latex/berenisadf/ly1ybd2.fd
index 37379dee747..59b269cb46e 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/ly1ybd2.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/ly1ybd2.fd
@@ -1,51 +1,87 @@
-%Filename: ly1ybd2.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `ly1ybd2.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ly1ybd2')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ly1ybd2.fd}
- [2010/08/24 font definitions for LY1/ybd2.]
+ [0000/00/00 font definitions for LY1/ybd2.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{LY1}{ybd2}{}
\DeclareFontShape{LY1}{ybd2}{m}{n}{
- <-> ybdr28y
+ <-> \ybd@@scale ybdr28y
}{}
\DeclareFontShape{LY1}{ybd2}{m}{sc}{
- <-> ybdr2c8y
+ <-> \ybd@@scale ybdr2c8y
}{}
\DeclareFontShape{LY1}{ybd2}{m}{it}{
- <-> ybdr2i8y
+ <-> \ybd@@scale ybdr2i8y
}{}
-\DeclareFontShape{LY1}{ybd2}{m}{si}{
- <-> ybdr2ci8y
+\DeclareFontShape{LY1}{ybd2}{m}{scit}{
+ <-> \ybd@@scale ybdr2ci8y
}{}
\DeclareFontShape{LY1}{ybd2}{b}{n}{
- <-> ybdb28y
+ <-> \ybd@@scale ybdb28y
}{}
\DeclareFontShape{LY1}{ybd2}{b}{sc}{
- <-> ybdb2c8y
+ <-> \ybd@@scale ybdb2c8y
}{}
\DeclareFontShape{LY1}{ybd2}{b}{it}{
- <-> ybdb2i8y
+ <-> \ybd@@scale ybdb2i8y
}{}
-\DeclareFontShape{LY1}{ybd2}{b}{si}{
- <-> ybdb2ci8y
+\DeclareFontShape{LY1}{ybd2}{b}{scit}{
+ <-> \ybd@@scale ybdb2ci8y
}{}
\DeclareFontShape{LY1}{ybd2}{m}{sl}{<->ssub * ybd2/m/it}{}
+\DeclareFontShape{LY1}{ybd2}{m}{si}{<->ssub * ybd2/m/scit}{}
\DeclareFontShape{LY1}{ybd2}{b}{sl}{<->ssub * ybd2/b/it}{}
\DeclareFontShape{LY1}{ybd2}{bx}{n}{<->ssub * ybd2/b/n}{}
\DeclareFontShape{LY1}{ybd2}{bx}{sc}{<->ssub * ybd2/b/sc}{}
\DeclareFontShape{LY1}{ybd2}{bx}{it}{<->ssub * ybd2/b/it}{}
\DeclareFontShape{LY1}{ybd2}{bx}{sl}{<->ssub * ybd2/b/sl}{}
+\DeclareFontShape{LY1}{ybd2}{bx}{scit}{<->ssub * ybd2/b/scit}{}
+\DeclareFontShape{LY1}{ybd2}{b}{si}{<->ssub * ybd2/bx/scit}{}
\DeclareFontShape{LY1}{ybd2}{bx}{si}{<->ssub * ybd2/b/si}{}
\endinput
+%%
+%% End of file `ly1ybd2.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ly1ybd2j.fd b/Master/texmf-dist/tex/latex/berenisadf/ly1ybd2j.fd
index 0f24452ef9d..95055b9794d 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/ly1ybd2j.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/ly1ybd2j.fd
@@ -1,51 +1,87 @@
-%Filename: ly1ybd2j.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `ly1ybd2j.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ly1ybd2j')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ly1ybd2j.fd}
- [2010/08/24 font definitions for LY1/ybd2j.]
+ [0000/00/00 font definitions for LY1/ybd2j.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{LY1}{ybd2j}{}
\DeclareFontShape{LY1}{ybd2j}{m}{n}{
- <-> ybdr2j8y
+ <-> \ybd@@scale ybdr2j8y
}{}
\DeclareFontShape{LY1}{ybd2j}{m}{sc}{
- <-> ybdr2cj8y
+ <-> \ybd@@scale ybdr2cj8y
}{}
\DeclareFontShape{LY1}{ybd2j}{m}{it}{
- <-> ybdr2ij8y
+ <-> \ybd@@scale ybdr2ij8y
}{}
-\DeclareFontShape{LY1}{ybd2j}{m}{si}{
- <-> ybdr2cij8y
+\DeclareFontShape{LY1}{ybd2j}{m}{scit}{
+ <-> \ybd@@scale ybdr2cij8y
}{}
\DeclareFontShape{LY1}{ybd2j}{b}{n}{
- <-> ybdb2j8y
+ <-> \ybd@@scale ybdb2j8y
}{}
\DeclareFontShape{LY1}{ybd2j}{b}{sc}{
- <-> ybdb2cj8y
+ <-> \ybd@@scale ybdb2cj8y
}{}
\DeclareFontShape{LY1}{ybd2j}{b}{it}{
- <-> ybdb2ij8y
+ <-> \ybd@@scale ybdb2ij8y
}{}
-\DeclareFontShape{LY1}{ybd2j}{b}{si}{
- <-> ybdb2cij8y
+\DeclareFontShape{LY1}{ybd2j}{b}{scit}{
+ <-> \ybd@@scale ybdb2cij8y
}{}
\DeclareFontShape{LY1}{ybd2j}{m}{sl}{<->ssub * ybd2j/m/it}{}
+\DeclareFontShape{LY1}{ybd2j}{m}{si}{<->ssub * ybd2j/m/scit}{}
\DeclareFontShape{LY1}{ybd2j}{b}{sl}{<->ssub * ybd2j/b/it}{}
\DeclareFontShape{LY1}{ybd2j}{bx}{n}{<->ssub * ybd2j/b/n}{}
\DeclareFontShape{LY1}{ybd2j}{bx}{sc}{<->ssub * ybd2j/b/sc}{}
\DeclareFontShape{LY1}{ybd2j}{bx}{it}{<->ssub * ybd2j/b/it}{}
\DeclareFontShape{LY1}{ybd2j}{bx}{sl}{<->ssub * ybd2j/b/sl}{}
+\DeclareFontShape{LY1}{ybd2j}{bx}{scit}{<->ssub * ybd2j/b/scit}{}
+\DeclareFontShape{LY1}{ybd2j}{b}{si}{<->ssub * ybd2j/bx/scit}{}
\DeclareFontShape{LY1}{ybd2j}{bx}{si}{<->ssub * ybd2j/b/si}{}
\endinput
+%%
+%% End of file `ly1ybd2j.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ly1ybd2jw.fd b/Master/texmf-dist/tex/latex/berenisadf/ly1ybd2jw.fd
index d38e44ea541..4a42481b024 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/ly1ybd2jw.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/ly1ybd2jw.fd
@@ -1,51 +1,87 @@
-%Filename: ly1ybd2jw.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `ly1ybd2jw.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ly1ybd2jw')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ly1ybd2jw.fd}
- [2010/08/24 font definitions for LY1/ybd2jw.]
+ [0000/00/00 font definitions for LY1/ybd2jw.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{LY1}{ybd2jw}{}
\DeclareFontShape{LY1}{ybd2jw}{m}{n}{
- <-> ybdr2jw8y
+ <-> \ybd@@scale ybdr2jw8y
}{}
\DeclareFontShape{LY1}{ybd2jw}{m}{sc}{
- <-> ybdr2cjw8y
+ <-> \ybd@@scale ybdr2cjw8y
}{}
\DeclareFontShape{LY1}{ybd2jw}{m}{it}{
- <-> ybdr2ijw8y
+ <-> \ybd@@scale ybdr2ijw8y
}{}
-\DeclareFontShape{LY1}{ybd2jw}{m}{si}{
- <-> ybdr2cijw8y
+\DeclareFontShape{LY1}{ybd2jw}{m}{scit}{
+ <-> \ybd@@scale ybdr2cijw8y
}{}
\DeclareFontShape{LY1}{ybd2jw}{b}{n}{
- <-> ybdb2jw8y
+ <-> \ybd@@scale ybdb2jw8y
}{}
\DeclareFontShape{LY1}{ybd2jw}{b}{sc}{
- <-> ybdb2cjw8y
+ <-> \ybd@@scale ybdb2cjw8y
}{}
\DeclareFontShape{LY1}{ybd2jw}{b}{it}{
- <-> ybdb2ijw8y
+ <-> \ybd@@scale ybdb2ijw8y
}{}
-\DeclareFontShape{LY1}{ybd2jw}{b}{si}{
- <-> ybdb2cijw8y
+\DeclareFontShape{LY1}{ybd2jw}{b}{scit}{
+ <-> \ybd@@scale ybdb2cijw8y
}{}
\DeclareFontShape{LY1}{ybd2jw}{m}{sl}{<->ssub * ybd2jw/m/it}{}
+\DeclareFontShape{LY1}{ybd2jw}{m}{si}{<->ssub * ybd2jw/m/scit}{}
\DeclareFontShape{LY1}{ybd2jw}{b}{sl}{<->ssub * ybd2jw/b/it}{}
\DeclareFontShape{LY1}{ybd2jw}{bx}{n}{<->ssub * ybd2jw/b/n}{}
\DeclareFontShape{LY1}{ybd2jw}{bx}{sc}{<->ssub * ybd2jw/b/sc}{}
\DeclareFontShape{LY1}{ybd2jw}{bx}{it}{<->ssub * ybd2jw/b/it}{}
\DeclareFontShape{LY1}{ybd2jw}{bx}{sl}{<->ssub * ybd2jw/b/sl}{}
+\DeclareFontShape{LY1}{ybd2jw}{bx}{scit}{<->ssub * ybd2jw/b/scit}{}
+\DeclareFontShape{LY1}{ybd2jw}{b}{si}{<->ssub * ybd2jw/bx/scit}{}
\DeclareFontShape{LY1}{ybd2jw}{bx}{si}{<->ssub * ybd2jw/b/si}{}
\endinput
+%%
+%% End of file `ly1ybd2jw.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ly1ybd2w.fd b/Master/texmf-dist/tex/latex/berenisadf/ly1ybd2w.fd
index 11b0cc7b29f..819f604198f 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/ly1ybd2w.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/ly1ybd2w.fd
@@ -1,51 +1,87 @@
-%Filename: ly1ybd2w.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `ly1ybd2w.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ly1ybd2w')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ly1ybd2w.fd}
- [2010/08/24 font definitions for LY1/ybd2w.]
+ [0000/00/00 font definitions for LY1/ybd2w.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{LY1}{ybd2w}{}
\DeclareFontShape{LY1}{ybd2w}{m}{n}{
- <-> ybdr2w8y
+ <-> \ybd@@scale ybdr2w8y
}{}
\DeclareFontShape{LY1}{ybd2w}{m}{sc}{
- <-> ybdr2cw8y
+ <-> \ybd@@scale ybdr2cw8y
}{}
\DeclareFontShape{LY1}{ybd2w}{m}{it}{
- <-> ybdr2iw8y
+ <-> \ybd@@scale ybdr2iw8y
}{}
-\DeclareFontShape{LY1}{ybd2w}{m}{si}{
- <-> ybdr2ciw8y
+\DeclareFontShape{LY1}{ybd2w}{m}{scit}{
+ <-> \ybd@@scale ybdr2ciw8y
}{}
\DeclareFontShape{LY1}{ybd2w}{b}{n}{
- <-> ybdb2w8y
+ <-> \ybd@@scale ybdb2w8y
}{}
\DeclareFontShape{LY1}{ybd2w}{b}{sc}{
- <-> ybdb2cw8y
+ <-> \ybd@@scale ybdb2cw8y
}{}
\DeclareFontShape{LY1}{ybd2w}{b}{it}{
- <-> ybdb2iw8y
+ <-> \ybd@@scale ybdb2iw8y
}{}
-\DeclareFontShape{LY1}{ybd2w}{b}{si}{
- <-> ybdb2ciw8y
+\DeclareFontShape{LY1}{ybd2w}{b}{scit}{
+ <-> \ybd@@scale ybdb2ciw8y
}{}
\DeclareFontShape{LY1}{ybd2w}{m}{sl}{<->ssub * ybd2w/m/it}{}
+\DeclareFontShape{LY1}{ybd2w}{m}{si}{<->ssub * ybd2w/m/scit}{}
\DeclareFontShape{LY1}{ybd2w}{b}{sl}{<->ssub * ybd2w/b/it}{}
\DeclareFontShape{LY1}{ybd2w}{bx}{n}{<->ssub * ybd2w/b/n}{}
\DeclareFontShape{LY1}{ybd2w}{bx}{sc}{<->ssub * ybd2w/b/sc}{}
\DeclareFontShape{LY1}{ybd2w}{bx}{it}{<->ssub * ybd2w/b/it}{}
\DeclareFontShape{LY1}{ybd2w}{bx}{sl}{<->ssub * ybd2w/b/sl}{}
+\DeclareFontShape{LY1}{ybd2w}{bx}{scit}{<->ssub * ybd2w/b/scit}{}
+\DeclareFontShape{LY1}{ybd2w}{b}{si}{<->ssub * ybd2w/bx/scit}{}
\DeclareFontShape{LY1}{ybd2w}{bx}{si}{<->ssub * ybd2w/b/si}{}
\endinput
+%%
+%% End of file `ly1ybd2w.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ly1ybdj.fd b/Master/texmf-dist/tex/latex/berenisadf/ly1ybdj.fd
index 30a0923cc3f..d5ec5a6e695 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/ly1ybdj.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/ly1ybdj.fd
@@ -1,51 +1,87 @@
-%Filename: ly1ybdj.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `ly1ybdj.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ly1ybdj')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ly1ybdj.fd}
- [2010/08/24 font definitions for LY1/ybdj.]
+ [0000/00/00 font definitions for LY1/ybdj.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{LY1}{ybdj}{}
\DeclareFontShape{LY1}{ybdj}{m}{n}{
- <-> ybdrj8y
+ <-> \ybd@@scale ybdrj8y
}{}
\DeclareFontShape{LY1}{ybdj}{m}{sc}{
- <-> ybdrcj8y
+ <-> \ybd@@scale ybdrcj8y
}{}
\DeclareFontShape{LY1}{ybdj}{m}{it}{
- <-> ybdrij8y
+ <-> \ybd@@scale ybdrij8y
}{}
-\DeclareFontShape{LY1}{ybdj}{m}{si}{
- <-> ybdrcij8y
+\DeclareFontShape{LY1}{ybdj}{m}{scit}{
+ <-> \ybd@@scale ybdrcij8y
}{}
\DeclareFontShape{LY1}{ybdj}{b}{n}{
- <-> ybdbj8y
+ <-> \ybd@@scale ybdbj8y
}{}
\DeclareFontShape{LY1}{ybdj}{b}{sc}{
- <-> ybdbcj8y
+ <-> \ybd@@scale ybdbcj8y
}{}
\DeclareFontShape{LY1}{ybdj}{b}{it}{
- <-> ybdbij8y
+ <-> \ybd@@scale ybdbij8y
}{}
-\DeclareFontShape{LY1}{ybdj}{b}{si}{
- <-> ybdbcij8y
+\DeclareFontShape{LY1}{ybdj}{b}{scit}{
+ <-> \ybd@@scale ybdbcij8y
}{}
\DeclareFontShape{LY1}{ybdj}{m}{sl}{<->ssub * ybdj/m/it}{}
+\DeclareFontShape{LY1}{ybdj}{m}{si}{<->ssub * ybdj/m/scit}{}
\DeclareFontShape{LY1}{ybdj}{b}{sl}{<->ssub * ybdj/b/it}{}
\DeclareFontShape{LY1}{ybdj}{bx}{n}{<->ssub * ybdj/b/n}{}
\DeclareFontShape{LY1}{ybdj}{bx}{sc}{<->ssub * ybdj/b/sc}{}
\DeclareFontShape{LY1}{ybdj}{bx}{it}{<->ssub * ybdj/b/it}{}
\DeclareFontShape{LY1}{ybdj}{bx}{sl}{<->ssub * ybdj/b/sl}{}
+\DeclareFontShape{LY1}{ybdj}{bx}{scit}{<->ssub * ybdj/b/scit}{}
+\DeclareFontShape{LY1}{ybdj}{b}{si}{<->ssub * ybdj/bx/scit}{}
\DeclareFontShape{LY1}{ybdj}{bx}{si}{<->ssub * ybdj/b/si}{}
\endinput
+%%
+%% End of file `ly1ybdj.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ly1ybdjw.fd b/Master/texmf-dist/tex/latex/berenisadf/ly1ybdjw.fd
index 5a929471838..0f7567f9f29 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/ly1ybdjw.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/ly1ybdjw.fd
@@ -1,51 +1,87 @@
-%Filename: ly1ybdjw.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `ly1ybdjw.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ly1ybdjw')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ly1ybdjw.fd}
- [2010/08/24 font definitions for LY1/ybdjw.]
+ [0000/00/00 font definitions for LY1/ybdjw.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{LY1}{ybdjw}{}
\DeclareFontShape{LY1}{ybdjw}{m}{n}{
- <-> ybdrjw8y
+ <-> \ybd@@scale ybdrjw8y
}{}
\DeclareFontShape{LY1}{ybdjw}{m}{sc}{
- <-> ybdrcjw8y
+ <-> \ybd@@scale ybdrcjw8y
}{}
\DeclareFontShape{LY1}{ybdjw}{m}{it}{
- <-> ybdrijw8y
+ <-> \ybd@@scale ybdrijw8y
}{}
-\DeclareFontShape{LY1}{ybdjw}{m}{si}{
- <-> ybdrcijw8y
+\DeclareFontShape{LY1}{ybdjw}{m}{scit}{
+ <-> \ybd@@scale ybdrcijw8y
}{}
\DeclareFontShape{LY1}{ybdjw}{b}{n}{
- <-> ybdbjw8y
+ <-> \ybd@@scale ybdbjw8y
}{}
\DeclareFontShape{LY1}{ybdjw}{b}{sc}{
- <-> ybdbcjw8y
+ <-> \ybd@@scale ybdbcjw8y
}{}
\DeclareFontShape{LY1}{ybdjw}{b}{it}{
- <-> ybdbijw8y
+ <-> \ybd@@scale ybdbijw8y
}{}
-\DeclareFontShape{LY1}{ybdjw}{b}{si}{
- <-> ybdbcijw8y
+\DeclareFontShape{LY1}{ybdjw}{b}{scit}{
+ <-> \ybd@@scale ybdbcijw8y
}{}
\DeclareFontShape{LY1}{ybdjw}{m}{sl}{<->ssub * ybdjw/m/it}{}
+\DeclareFontShape{LY1}{ybdjw}{m}{si}{<->ssub * ybdjw/m/scit}{}
\DeclareFontShape{LY1}{ybdjw}{b}{sl}{<->ssub * ybdjw/b/it}{}
\DeclareFontShape{LY1}{ybdjw}{bx}{n}{<->ssub * ybdjw/b/n}{}
\DeclareFontShape{LY1}{ybdjw}{bx}{sc}{<->ssub * ybdjw/b/sc}{}
\DeclareFontShape{LY1}{ybdjw}{bx}{it}{<->ssub * ybdjw/b/it}{}
\DeclareFontShape{LY1}{ybdjw}{bx}{sl}{<->ssub * ybdjw/b/sl}{}
+\DeclareFontShape{LY1}{ybdjw}{bx}{scit}{<->ssub * ybdjw/b/scit}{}
+\DeclareFontShape{LY1}{ybdjw}{b}{si}{<->ssub * ybdjw/bx/scit}{}
\DeclareFontShape{LY1}{ybdjw}{bx}{si}{<->ssub * ybdjw/b/si}{}
\endinput
+%%
+%% End of file `ly1ybdjw.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ly1ybdw.fd b/Master/texmf-dist/tex/latex/berenisadf/ly1ybdw.fd
index b82f92ca173..fb8b7b41ac9 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/ly1ybdw.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/ly1ybdw.fd
@@ -1,51 +1,87 @@
-%Filename: ly1ybdw.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `ly1ybdw.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ly1ybdw')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ly1ybdw.fd}
- [2010/08/24 font definitions for LY1/ybdw.]
+ [0000/00/00 font definitions for LY1/ybdw.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{LY1}{ybdw}{}
\DeclareFontShape{LY1}{ybdw}{m}{n}{
- <-> ybdrw8y
+ <-> \ybd@@scale ybdrw8y
}{}
\DeclareFontShape{LY1}{ybdw}{m}{sc}{
- <-> ybdrcw8y
+ <-> \ybd@@scale ybdrcw8y
}{}
\DeclareFontShape{LY1}{ybdw}{m}{it}{
- <-> ybdriw8y
+ <-> \ybd@@scale ybdriw8y
}{}
-\DeclareFontShape{LY1}{ybdw}{m}{si}{
- <-> ybdrciw8y
+\DeclareFontShape{LY1}{ybdw}{m}{scit}{
+ <-> \ybd@@scale ybdrciw8y
}{}
\DeclareFontShape{LY1}{ybdw}{b}{n}{
- <-> ybdbw8y
+ <-> \ybd@@scale ybdbw8y
}{}
\DeclareFontShape{LY1}{ybdw}{b}{sc}{
- <-> ybdbcw8y
+ <-> \ybd@@scale ybdbcw8y
}{}
\DeclareFontShape{LY1}{ybdw}{b}{it}{
- <-> ybdbiw8y
+ <-> \ybd@@scale ybdbiw8y
}{}
-\DeclareFontShape{LY1}{ybdw}{b}{si}{
- <-> ybdbciw8y
+\DeclareFontShape{LY1}{ybdw}{b}{scit}{
+ <-> \ybd@@scale ybdbciw8y
}{}
\DeclareFontShape{LY1}{ybdw}{m}{sl}{<->ssub * ybdw/m/it}{}
+\DeclareFontShape{LY1}{ybdw}{m}{si}{<->ssub * ybdw/m/scit}{}
\DeclareFontShape{LY1}{ybdw}{b}{sl}{<->ssub * ybdw/b/it}{}
\DeclareFontShape{LY1}{ybdw}{bx}{n}{<->ssub * ybdw/b/n}{}
\DeclareFontShape{LY1}{ybdw}{bx}{sc}{<->ssub * ybdw/b/sc}{}
\DeclareFontShape{LY1}{ybdw}{bx}{it}{<->ssub * ybdw/b/it}{}
\DeclareFontShape{LY1}{ybdw}{bx}{sl}{<->ssub * ybdw/b/sl}{}
+\DeclareFontShape{LY1}{ybdw}{bx}{scit}{<->ssub * ybdw/b/scit}{}
+\DeclareFontShape{LY1}{ybdw}{b}{si}{<->ssub * ybdw/bx/scit}{}
\DeclareFontShape{LY1}{ybdw}{bx}{si}{<->ssub * ybdw/b/si}{}
\endinput
+%%
+%% End of file `ly1ybdw.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/t1ybd.fd b/Master/texmf-dist/tex/latex/berenisadf/t1ybd.fd
index 64f0b0e11bc..394494ca04d 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/t1ybd.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/t1ybd.fd
@@ -1,51 +1,87 @@
-%Filename: t1ybd.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `t1ybd.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-t1ybd')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1ybd.fd}
- [2013/11/19 font definitions for T1/ybd.]
+ [0000/00/00 font definitions for T1/ybd.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{T1}{ybd}{}
\DeclareFontShape{T1}{ybd}{m}{n}{
- <-> ybdr8t
+ <-> \ybd@@scale ybdr8t
}{}
\DeclareFontShape{T1}{ybd}{m}{sc}{
- <-> ybdrc8t
+ <-> \ybd@@scale ybdrc8t
}{}
\DeclareFontShape{T1}{ybd}{m}{it}{
- <-> ybdri8t
+ <-> \ybd@@scale ybdri8t
}{}
-\DeclareFontShape{T1}{ybd}{m}{si}{
- <-> ybdrci8t
+\DeclareFontShape{T1}{ybd}{m}{scit}{
+ <-> \ybd@@scale ybdrci8t
}{}
\DeclareFontShape{T1}{ybd}{b}{n}{
- <-> ybdb8t
+ <-> \ybd@@scale ybdb8t
}{}
\DeclareFontShape{T1}{ybd}{b}{sc}{
- <-> ybdbc8t
+ <-> \ybd@@scale ybdbc8t
}{}
\DeclareFontShape{T1}{ybd}{b}{it}{
- <-> ybdbi8t
+ <-> \ybd@@scale ybdbi8t
}{}
-\DeclareFontShape{T1}{ybd}{b}{si}{
- <-> ybdbci8t
+\DeclareFontShape{T1}{ybd}{b}{scit}{
+ <-> \ybd@@scale ybdbci8t
}{}
\DeclareFontShape{T1}{ybd}{m}{sl}{<->ssub * ybd/m/it}{}
+\DeclareFontShape{T1}{ybd}{m}{si}{<->ssub * ybd/m/scit}{}
\DeclareFontShape{T1}{ybd}{b}{sl}{<->ssub * ybd/b/it}{}
\DeclareFontShape{T1}{ybd}{bx}{n}{<->ssub * ybd/b/n}{}
\DeclareFontShape{T1}{ybd}{bx}{sc}{<->ssub * ybd/b/sc}{}
\DeclareFontShape{T1}{ybd}{bx}{it}{<->ssub * ybd/b/it}{}
\DeclareFontShape{T1}{ybd}{bx}{sl}{<->ssub * ybd/b/sl}{}
+\DeclareFontShape{T1}{ybd}{bx}{scit}{<->ssub * ybd/b/scit}{}
+\DeclareFontShape{T1}{ybd}{b}{si}{<->ssub * ybd/bx/scit}{}
\DeclareFontShape{T1}{ybd}{bx}{si}{<->ssub * ybd/b/si}{}
\endinput
+%%
+%% End of file `t1ybd.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/t1ybd0.fd b/Master/texmf-dist/tex/latex/berenisadf/t1ybd0.fd
index c4ca425f095..fd86727863d 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/t1ybd0.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/t1ybd0.fd
@@ -1,51 +1,87 @@
-%Filename: t1ybd0.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `t1ybd0.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-t1ybd0')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1ybd0.fd}
- [2013/11/19 font definitions for T1/ybd0.]
+ [0000/00/00 font definitions for T1/ybd0.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{T1}{ybd0}{}
\DeclareFontShape{T1}{ybd0}{m}{n}{
- <-> ybdr08t
+ <-> \ybd@@scale ybdr08t
}{}
\DeclareFontShape{T1}{ybd0}{m}{sc}{
- <-> ybdr0c8t
+ <-> \ybd@@scale ybdr0c8t
}{}
\DeclareFontShape{T1}{ybd0}{m}{it}{
- <-> ybdr0i8t
+ <-> \ybd@@scale ybdr0i8t
}{}
-\DeclareFontShape{T1}{ybd0}{m}{si}{
- <-> ybdr0ci8t
+\DeclareFontShape{T1}{ybd0}{m}{scit}{
+ <-> \ybd@@scale ybdr0ci8t
}{}
\DeclareFontShape{T1}{ybd0}{b}{n}{
- <-> ybdb08t
+ <-> \ybd@@scale ybdb08t
}{}
\DeclareFontShape{T1}{ybd0}{b}{sc}{
- <-> ybdb0c8t
+ <-> \ybd@@scale ybdb0c8t
}{}
\DeclareFontShape{T1}{ybd0}{b}{it}{
- <-> ybdb0i8t
+ <-> \ybd@@scale ybdb0i8t
}{}
-\DeclareFontShape{T1}{ybd0}{b}{si}{
- <-> ybdb0ci8t
+\DeclareFontShape{T1}{ybd0}{b}{scit}{
+ <-> \ybd@@scale ybdb0ci8t
}{}
\DeclareFontShape{T1}{ybd0}{m}{sl}{<->ssub * ybd0/m/it}{}
+\DeclareFontShape{T1}{ybd0}{m}{si}{<->ssub * ybd0/m/scit}{}
\DeclareFontShape{T1}{ybd0}{b}{sl}{<->ssub * ybd0/b/it}{}
\DeclareFontShape{T1}{ybd0}{bx}{n}{<->ssub * ybd0/b/n}{}
\DeclareFontShape{T1}{ybd0}{bx}{sc}{<->ssub * ybd0/b/sc}{}
\DeclareFontShape{T1}{ybd0}{bx}{it}{<->ssub * ybd0/b/it}{}
\DeclareFontShape{T1}{ybd0}{bx}{sl}{<->ssub * ybd0/b/sl}{}
+\DeclareFontShape{T1}{ybd0}{bx}{scit}{<->ssub * ybd0/b/scit}{}
+\DeclareFontShape{T1}{ybd0}{b}{si}{<->ssub * ybd0/bx/scit}{}
\DeclareFontShape{T1}{ybd0}{bx}{si}{<->ssub * ybd0/b/si}{}
\endinput
+%%
+%% End of file `t1ybd0.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/t1ybd1.fd b/Master/texmf-dist/tex/latex/berenisadf/t1ybd1.fd
index 4514d02586a..fdd304490d5 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/t1ybd1.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/t1ybd1.fd
@@ -1,51 +1,87 @@
-%Filename: t1ybd1.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `t1ybd1.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-t1ybd1')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1ybd1.fd}
- [2013/11/19 font definitions for T1/ybd1.]
+ [0000/00/00 font definitions for T1/ybd1.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{T1}{ybd1}{}
\DeclareFontShape{T1}{ybd1}{m}{n}{
- <-> ybdr18t
+ <-> \ybd@@scale ybdr18t
}{}
\DeclareFontShape{T1}{ybd1}{m}{sc}{
- <-> ybdr1c8t
+ <-> \ybd@@scale ybdr1c8t
}{}
\DeclareFontShape{T1}{ybd1}{m}{it}{
- <-> ybdr1i8t
+ <-> \ybd@@scale ybdr1i8t
}{}
-\DeclareFontShape{T1}{ybd1}{m}{si}{
- <-> ybdr1ci8t
+\DeclareFontShape{T1}{ybd1}{m}{scit}{
+ <-> \ybd@@scale ybdr1ci8t
}{}
\DeclareFontShape{T1}{ybd1}{b}{n}{
- <-> ybdb18t
+ <-> \ybd@@scale ybdb18t
}{}
\DeclareFontShape{T1}{ybd1}{b}{sc}{
- <-> ybdb1c8t
+ <-> \ybd@@scale ybdb1c8t
}{}
\DeclareFontShape{T1}{ybd1}{b}{it}{
- <-> ybdb1i8t
+ <-> \ybd@@scale ybdb1i8t
}{}
-\DeclareFontShape{T1}{ybd1}{b}{si}{
- <-> ybdb1ci8t
+\DeclareFontShape{T1}{ybd1}{b}{scit}{
+ <-> \ybd@@scale ybdb1ci8t
}{}
\DeclareFontShape{T1}{ybd1}{m}{sl}{<->ssub * ybd1/m/it}{}
+\DeclareFontShape{T1}{ybd1}{m}{si}{<->ssub * ybd1/m/scit}{}
\DeclareFontShape{T1}{ybd1}{b}{sl}{<->ssub * ybd1/b/it}{}
\DeclareFontShape{T1}{ybd1}{bx}{n}{<->ssub * ybd1/b/n}{}
\DeclareFontShape{T1}{ybd1}{bx}{sc}{<->ssub * ybd1/b/sc}{}
\DeclareFontShape{T1}{ybd1}{bx}{it}{<->ssub * ybd1/b/it}{}
\DeclareFontShape{T1}{ybd1}{bx}{sl}{<->ssub * ybd1/b/sl}{}
+\DeclareFontShape{T1}{ybd1}{bx}{scit}{<->ssub * ybd1/b/scit}{}
+\DeclareFontShape{T1}{ybd1}{b}{si}{<->ssub * ybd1/bx/scit}{}
\DeclareFontShape{T1}{ybd1}{bx}{si}{<->ssub * ybd1/b/si}{}
\endinput
+%%
+%% End of file `t1ybd1.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/t1ybd2.fd b/Master/texmf-dist/tex/latex/berenisadf/t1ybd2.fd
index 0c8f4b5c6cd..b1dc0d01d1d 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/t1ybd2.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/t1ybd2.fd
@@ -1,51 +1,87 @@
-%Filename: t1ybd2.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `t1ybd2.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-t1ybd2')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1ybd2.fd}
- [2013/11/19 font definitions for T1/ybd2.]
+ [0000/00/00 font definitions for T1/ybd2.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{T1}{ybd2}{}
\DeclareFontShape{T1}{ybd2}{m}{n}{
- <-> ybdr28t
+ <-> \ybd@@scale ybdr28t
}{}
\DeclareFontShape{T1}{ybd2}{m}{sc}{
- <-> ybdr2c8t
+ <-> \ybd@@scale ybdr2c8t
}{}
\DeclareFontShape{T1}{ybd2}{m}{it}{
- <-> ybdr2i8t
+ <-> \ybd@@scale ybdr2i8t
}{}
-\DeclareFontShape{T1}{ybd2}{m}{si}{
- <-> ybdr2ci8t
+\DeclareFontShape{T1}{ybd2}{m}{scit}{
+ <-> \ybd@@scale ybdr2ci8t
}{}
\DeclareFontShape{T1}{ybd2}{b}{n}{
- <-> ybdb28t
+ <-> \ybd@@scale ybdb28t
}{}
\DeclareFontShape{T1}{ybd2}{b}{sc}{
- <-> ybdb2c8t
+ <-> \ybd@@scale ybdb2c8t
}{}
\DeclareFontShape{T1}{ybd2}{b}{it}{
- <-> ybdb2i8t
+ <-> \ybd@@scale ybdb2i8t
}{}
-\DeclareFontShape{T1}{ybd2}{b}{si}{
- <-> ybdb2ci8t
+\DeclareFontShape{T1}{ybd2}{b}{scit}{
+ <-> \ybd@@scale ybdb2ci8t
}{}
\DeclareFontShape{T1}{ybd2}{m}{sl}{<->ssub * ybd2/m/it}{}
+\DeclareFontShape{T1}{ybd2}{m}{si}{<->ssub * ybd2/m/scit}{}
\DeclareFontShape{T1}{ybd2}{b}{sl}{<->ssub * ybd2/b/it}{}
\DeclareFontShape{T1}{ybd2}{bx}{n}{<->ssub * ybd2/b/n}{}
\DeclareFontShape{T1}{ybd2}{bx}{sc}{<->ssub * ybd2/b/sc}{}
\DeclareFontShape{T1}{ybd2}{bx}{it}{<->ssub * ybd2/b/it}{}
\DeclareFontShape{T1}{ybd2}{bx}{sl}{<->ssub * ybd2/b/sl}{}
+\DeclareFontShape{T1}{ybd2}{bx}{scit}{<->ssub * ybd2/b/scit}{}
+\DeclareFontShape{T1}{ybd2}{b}{si}{<->ssub * ybd2/bx/scit}{}
\DeclareFontShape{T1}{ybd2}{bx}{si}{<->ssub * ybd2/b/si}{}
\endinput
+%%
+%% End of file `t1ybd2.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/t1ybd2j.fd b/Master/texmf-dist/tex/latex/berenisadf/t1ybd2j.fd
index 5a98d8c8174..ceee1fac453 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/t1ybd2j.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/t1ybd2j.fd
@@ -1,51 +1,87 @@
-%Filename: t1ybd2j.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `t1ybd2j.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-t1ybd2j')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1ybd2j.fd}
- [2013/11/19 font definitions for T1/ybd2j.]
+ [0000/00/00 font definitions for T1/ybd2j.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{T1}{ybd2j}{}
\DeclareFontShape{T1}{ybd2j}{m}{n}{
- <-> ybdr2j8t
+ <-> \ybd@@scale ybdr2j8t
}{}
\DeclareFontShape{T1}{ybd2j}{m}{sc}{
- <-> ybdr2cj8t
+ <-> \ybd@@scale ybdr2cj8t
}{}
\DeclareFontShape{T1}{ybd2j}{m}{it}{
- <-> ybdr2ij8t
+ <-> \ybd@@scale ybdr2ij8t
}{}
-\DeclareFontShape{T1}{ybd2j}{m}{si}{
- <-> ybdr2cij8t
+\DeclareFontShape{T1}{ybd2j}{m}{scit}{
+ <-> \ybd@@scale ybdr2cij8t
}{}
\DeclareFontShape{T1}{ybd2j}{b}{n}{
- <-> ybdb2j8t
+ <-> \ybd@@scale ybdb2j8t
}{}
\DeclareFontShape{T1}{ybd2j}{b}{sc}{
- <-> ybdb2cj8t
+ <-> \ybd@@scale ybdb2cj8t
}{}
\DeclareFontShape{T1}{ybd2j}{b}{it}{
- <-> ybdb2ij8t
+ <-> \ybd@@scale ybdb2ij8t
}{}
-\DeclareFontShape{T1}{ybd2j}{b}{si}{
- <-> ybdb2cij8t
+\DeclareFontShape{T1}{ybd2j}{b}{scit}{
+ <-> \ybd@@scale ybdb2cij8t
}{}
\DeclareFontShape{T1}{ybd2j}{m}{sl}{<->ssub * ybd2j/m/it}{}
+\DeclareFontShape{T1}{ybd2j}{m}{si}{<->ssub * ybd2j/m/scit}{}
\DeclareFontShape{T1}{ybd2j}{b}{sl}{<->ssub * ybd2j/b/it}{}
\DeclareFontShape{T1}{ybd2j}{bx}{n}{<->ssub * ybd2j/b/n}{}
\DeclareFontShape{T1}{ybd2j}{bx}{sc}{<->ssub * ybd2j/b/sc}{}
\DeclareFontShape{T1}{ybd2j}{bx}{it}{<->ssub * ybd2j/b/it}{}
\DeclareFontShape{T1}{ybd2j}{bx}{sl}{<->ssub * ybd2j/b/sl}{}
+\DeclareFontShape{T1}{ybd2j}{bx}{scit}{<->ssub * ybd2j/b/scit}{}
+\DeclareFontShape{T1}{ybd2j}{b}{si}{<->ssub * ybd2j/bx/scit}{}
\DeclareFontShape{T1}{ybd2j}{bx}{si}{<->ssub * ybd2j/b/si}{}
\endinput
+%%
+%% End of file `t1ybd2j.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/t1ybdj.fd b/Master/texmf-dist/tex/latex/berenisadf/t1ybdj.fd
index 79d85a74d3b..177587fcc0e 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/t1ybdj.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/t1ybdj.fd
@@ -1,51 +1,87 @@
-%Filename: t1ybdj.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `t1ybdj.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-t1ybdj')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1ybdj.fd}
- [2013/11/19 font definitions for T1/ybdj.]
+ [0000/00/00 font definitions for T1/ybdj.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{T1}{ybdj}{}
\DeclareFontShape{T1}{ybdj}{m}{n}{
- <-> ybdrj8t
+ <-> \ybd@@scale ybdrj8t
}{}
\DeclareFontShape{T1}{ybdj}{m}{sc}{
- <-> ybdrcj8t
+ <-> \ybd@@scale ybdrcj8t
}{}
\DeclareFontShape{T1}{ybdj}{m}{it}{
- <-> ybdrij8t
+ <-> \ybd@@scale ybdrij8t
}{}
-\DeclareFontShape{T1}{ybdj}{m}{si}{
- <-> ybdrcij8t
+\DeclareFontShape{T1}{ybdj}{m}{scit}{
+ <-> \ybd@@scale ybdrcij8t
}{}
\DeclareFontShape{T1}{ybdj}{b}{n}{
- <-> ybdbj8t
+ <-> \ybd@@scale ybdbj8t
}{}
\DeclareFontShape{T1}{ybdj}{b}{sc}{
- <-> ybdbcj8t
+ <-> \ybd@@scale ybdbcj8t
}{}
\DeclareFontShape{T1}{ybdj}{b}{it}{
- <-> ybdbij8t
+ <-> \ybd@@scale ybdbij8t
}{}
-\DeclareFontShape{T1}{ybdj}{b}{si}{
- <-> ybdbcij8t
+\DeclareFontShape{T1}{ybdj}{b}{scit}{
+ <-> \ybd@@scale ybdbcij8t
}{}
\DeclareFontShape{T1}{ybdj}{m}{sl}{<->ssub * ybdj/m/it}{}
+\DeclareFontShape{T1}{ybdj}{m}{si}{<->ssub * ybdj/m/scit}{}
\DeclareFontShape{T1}{ybdj}{b}{sl}{<->ssub * ybdj/b/it}{}
\DeclareFontShape{T1}{ybdj}{bx}{n}{<->ssub * ybdj/b/n}{}
\DeclareFontShape{T1}{ybdj}{bx}{sc}{<->ssub * ybdj/b/sc}{}
\DeclareFontShape{T1}{ybdj}{bx}{it}{<->ssub * ybdj/b/it}{}
\DeclareFontShape{T1}{ybdj}{bx}{sl}{<->ssub * ybdj/b/sl}{}
+\DeclareFontShape{T1}{ybdj}{bx}{scit}{<->ssub * ybdj/b/scit}{}
+\DeclareFontShape{T1}{ybdj}{b}{si}{<->ssub * ybdj/bx/scit}{}
\DeclareFontShape{T1}{ybdj}{bx}{si}{<->ssub * ybdj/b/si}{}
\endinput
+%%
+%% End of file `t1ybdj.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ts1ybd.fd b/Master/texmf-dist/tex/latex/berenisadf/ts1ybd.fd
index 98b8ae9b482..96ab3f0f514 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/ts1ybd.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/ts1ybd.fd
@@ -1,51 +1,87 @@
-%Filename: ts1ybd.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `ts1ybd.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ts1ybd')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1ybd.fd}
- [2013/11/19 font definitions for TS1/ybd.]
+ [0000/00/00 font definitions for TS1/ybd.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{TS1}{ybd}{}
\DeclareFontShape{TS1}{ybd}{m}{n}{
- <-> ybdr8c
+ <-> \ybd@@scale ybdr8c
}{}
\DeclareFontShape{TS1}{ybd}{m}{sc}{
- <-> ybdrc8c
+ <-> \ybd@@scale ybdrc8c
}{}
\DeclareFontShape{TS1}{ybd}{m}{it}{
- <-> ybdri8c
+ <-> \ybd@@scale ybdri8c
}{}
-\DeclareFontShape{TS1}{ybd}{m}{si}{
- <-> ybdrci8c
+\DeclareFontShape{TS1}{ybd}{m}{scit}{
+ <-> \ybd@@scale ybdrci8c
}{}
\DeclareFontShape{TS1}{ybd}{b}{n}{
- <-> ybdb8c
+ <-> \ybd@@scale ybdb8c
}{}
\DeclareFontShape{TS1}{ybd}{b}{sc}{
- <-> ybdbc8c
+ <-> \ybd@@scale ybdbc8c
}{}
\DeclareFontShape{TS1}{ybd}{b}{it}{
- <-> ybdbi8c
+ <-> \ybd@@scale ybdbi8c
}{}
-\DeclareFontShape{TS1}{ybd}{b}{si}{
- <-> ybdbci8c
+\DeclareFontShape{TS1}{ybd}{b}{scit}{
+ <-> \ybd@@scale ybdbci8c
}{}
\DeclareFontShape{TS1}{ybd}{m}{sl}{<->ssub * ybd/m/it}{}
+\DeclareFontShape{TS1}{ybd}{m}{si}{<->ssub * ybd/m/scit}{}
\DeclareFontShape{TS1}{ybd}{b}{sl}{<->ssub * ybd/b/it}{}
\DeclareFontShape{TS1}{ybd}{bx}{n}{<->ssub * ybd/b/n}{}
\DeclareFontShape{TS1}{ybd}{bx}{sc}{<->ssub * ybd/b/sc}{}
\DeclareFontShape{TS1}{ybd}{bx}{it}{<->ssub * ybd/b/it}{}
\DeclareFontShape{TS1}{ybd}{bx}{sl}{<->ssub * ybd/b/sl}{}
+\DeclareFontShape{TS1}{ybd}{bx}{scit}{<->ssub * ybd/b/scit}{}
+\DeclareFontShape{TS1}{ybd}{b}{si}{<->ssub * ybd/bx/scit}{}
\DeclareFontShape{TS1}{ybd}{bx}{si}{<->ssub * ybd/b/si}{}
\endinput
+%%
+%% End of file `ts1ybd.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ts1ybd0.fd b/Master/texmf-dist/tex/latex/berenisadf/ts1ybd0.fd
index 9ccca6262a5..1fd2b97178a 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/ts1ybd0.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/ts1ybd0.fd
@@ -1,51 +1,87 @@
-%Filename: ts1ybd0.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `ts1ybd0.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ts1ybd0')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1ybd0.fd}
- [2013/11/19 font definitions for TS1/ybd0.]
+ [0000/00/00 font definitions for TS1/ybd0.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{TS1}{ybd0}{}
\DeclareFontShape{TS1}{ybd0}{m}{n}{
- <-> ybdr08c
+ <-> \ybd@@scale ybdr08c
}{}
\DeclareFontShape{TS1}{ybd0}{m}{sc}{
- <-> ybdr0c8c
+ <-> \ybd@@scale ybdr0c8c
}{}
\DeclareFontShape{TS1}{ybd0}{m}{it}{
- <-> ybdr0i8c
+ <-> \ybd@@scale ybdr0i8c
}{}
-\DeclareFontShape{TS1}{ybd0}{m}{si}{
- <-> ybdr0ci8c
+\DeclareFontShape{TS1}{ybd0}{m}{scit}{
+ <-> \ybd@@scale ybdr0ci8c
}{}
\DeclareFontShape{TS1}{ybd0}{b}{n}{
- <-> ybdb08c
+ <-> \ybd@@scale ybdb08c
}{}
\DeclareFontShape{TS1}{ybd0}{b}{sc}{
- <-> ybdb0c8c
+ <-> \ybd@@scale ybdb0c8c
}{}
\DeclareFontShape{TS1}{ybd0}{b}{it}{
- <-> ybdb0i8c
+ <-> \ybd@@scale ybdb0i8c
}{}
-\DeclareFontShape{TS1}{ybd0}{b}{si}{
- <-> ybdb0ci8c
+\DeclareFontShape{TS1}{ybd0}{b}{scit}{
+ <-> \ybd@@scale ybdb0ci8c
}{}
\DeclareFontShape{TS1}{ybd0}{m}{sl}{<->ssub * ybd0/m/it}{}
+\DeclareFontShape{TS1}{ybd0}{m}{si}{<->ssub * ybd0/m/scit}{}
\DeclareFontShape{TS1}{ybd0}{b}{sl}{<->ssub * ybd0/b/it}{}
\DeclareFontShape{TS1}{ybd0}{bx}{n}{<->ssub * ybd0/b/n}{}
\DeclareFontShape{TS1}{ybd0}{bx}{sc}{<->ssub * ybd0/b/sc}{}
\DeclareFontShape{TS1}{ybd0}{bx}{it}{<->ssub * ybd0/b/it}{}
\DeclareFontShape{TS1}{ybd0}{bx}{sl}{<->ssub * ybd0/b/sl}{}
+\DeclareFontShape{TS1}{ybd0}{bx}{scit}{<->ssub * ybd0/b/scit}{}
+\DeclareFontShape{TS1}{ybd0}{b}{si}{<->ssub * ybd0/bx/scit}{}
\DeclareFontShape{TS1}{ybd0}{bx}{si}{<->ssub * ybd0/b/si}{}
\endinput
+%%
+%% End of file `ts1ybd0.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ts1ybd1.fd b/Master/texmf-dist/tex/latex/berenisadf/ts1ybd1.fd
index dc2fff6a1d5..fd7cc35deaf 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/ts1ybd1.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/ts1ybd1.fd
@@ -1,51 +1,87 @@
-%Filename: ts1ybd1.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `ts1ybd1.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ts1ybd1')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1ybd1.fd}
- [2013/11/19 font definitions for TS1/ybd1.]
+ [0000/00/00 font definitions for TS1/ybd1.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{TS1}{ybd1}{}
\DeclareFontShape{TS1}{ybd1}{m}{n}{
- <-> ybdr18c
+ <-> \ybd@@scale ybdr18c
}{}
\DeclareFontShape{TS1}{ybd1}{m}{sc}{
- <-> ybdr1c8c
+ <-> \ybd@@scale ybdr1c8c
}{}
\DeclareFontShape{TS1}{ybd1}{m}{it}{
- <-> ybdr1i8c
+ <-> \ybd@@scale ybdr1i8c
}{}
-\DeclareFontShape{TS1}{ybd1}{m}{si}{
- <-> ybdr1ci8c
+\DeclareFontShape{TS1}{ybd1}{m}{scit}{
+ <-> \ybd@@scale ybdr1ci8c
}{}
\DeclareFontShape{TS1}{ybd1}{b}{n}{
- <-> ybdb18c
+ <-> \ybd@@scale ybdb18c
}{}
\DeclareFontShape{TS1}{ybd1}{b}{sc}{
- <-> ybdb1c8c
+ <-> \ybd@@scale ybdb1c8c
}{}
\DeclareFontShape{TS1}{ybd1}{b}{it}{
- <-> ybdb1i8c
+ <-> \ybd@@scale ybdb1i8c
}{}
-\DeclareFontShape{TS1}{ybd1}{b}{si}{
- <-> ybdb1ci8c
+\DeclareFontShape{TS1}{ybd1}{b}{scit}{
+ <-> \ybd@@scale ybdb1ci8c
}{}
\DeclareFontShape{TS1}{ybd1}{m}{sl}{<->ssub * ybd1/m/it}{}
+\DeclareFontShape{TS1}{ybd1}{m}{si}{<->ssub * ybd1/m/scit}{}
\DeclareFontShape{TS1}{ybd1}{b}{sl}{<->ssub * ybd1/b/it}{}
\DeclareFontShape{TS1}{ybd1}{bx}{n}{<->ssub * ybd1/b/n}{}
\DeclareFontShape{TS1}{ybd1}{bx}{sc}{<->ssub * ybd1/b/sc}{}
\DeclareFontShape{TS1}{ybd1}{bx}{it}{<->ssub * ybd1/b/it}{}
\DeclareFontShape{TS1}{ybd1}{bx}{sl}{<->ssub * ybd1/b/sl}{}
+\DeclareFontShape{TS1}{ybd1}{bx}{scit}{<->ssub * ybd1/b/scit}{}
+\DeclareFontShape{TS1}{ybd1}{b}{si}{<->ssub * ybd1/bx/scit}{}
\DeclareFontShape{TS1}{ybd1}{bx}{si}{<->ssub * ybd1/b/si}{}
\endinput
+%%
+%% End of file `ts1ybd1.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ts1ybd2.fd b/Master/texmf-dist/tex/latex/berenisadf/ts1ybd2.fd
index be30aed66e0..046e1f0438d 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/ts1ybd2.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/ts1ybd2.fd
@@ -1,51 +1,87 @@
-%Filename: ts1ybd2.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `ts1ybd2.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ts1ybd2')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1ybd2.fd}
- [2013/11/19 font definitions for TS1/ybd2.]
+ [0000/00/00 font definitions for TS1/ybd2.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{TS1}{ybd2}{}
\DeclareFontShape{TS1}{ybd2}{m}{n}{
- <-> ybdr28c
+ <-> \ybd@@scale ybdr28c
}{}
\DeclareFontShape{TS1}{ybd2}{m}{sc}{
- <-> ybdr2c8c
+ <-> \ybd@@scale ybdr2c8c
}{}
\DeclareFontShape{TS1}{ybd2}{m}{it}{
- <-> ybdr2i8c
+ <-> \ybd@@scale ybdr2i8c
}{}
-\DeclareFontShape{TS1}{ybd2}{m}{si}{
- <-> ybdr2ci8c
+\DeclareFontShape{TS1}{ybd2}{m}{scit}{
+ <-> \ybd@@scale ybdr2ci8c
}{}
\DeclareFontShape{TS1}{ybd2}{b}{n}{
- <-> ybdb28c
+ <-> \ybd@@scale ybdb28c
}{}
\DeclareFontShape{TS1}{ybd2}{b}{sc}{
- <-> ybdb2c8c
+ <-> \ybd@@scale ybdb2c8c
}{}
\DeclareFontShape{TS1}{ybd2}{b}{it}{
- <-> ybdb2i8c
+ <-> \ybd@@scale ybdb2i8c
}{}
-\DeclareFontShape{TS1}{ybd2}{b}{si}{
- <-> ybdb2ci8c
+\DeclareFontShape{TS1}{ybd2}{b}{scit}{
+ <-> \ybd@@scale ybdb2ci8c
}{}
\DeclareFontShape{TS1}{ybd2}{m}{sl}{<->ssub * ybd2/m/it}{}
+\DeclareFontShape{TS1}{ybd2}{m}{si}{<->ssub * ybd2/m/scit}{}
\DeclareFontShape{TS1}{ybd2}{b}{sl}{<->ssub * ybd2/b/it}{}
\DeclareFontShape{TS1}{ybd2}{bx}{n}{<->ssub * ybd2/b/n}{}
\DeclareFontShape{TS1}{ybd2}{bx}{sc}{<->ssub * ybd2/b/sc}{}
\DeclareFontShape{TS1}{ybd2}{bx}{it}{<->ssub * ybd2/b/it}{}
\DeclareFontShape{TS1}{ybd2}{bx}{sl}{<->ssub * ybd2/b/sl}{}
+\DeclareFontShape{TS1}{ybd2}{bx}{scit}{<->ssub * ybd2/b/scit}{}
+\DeclareFontShape{TS1}{ybd2}{b}{si}{<->ssub * ybd2/bx/scit}{}
\DeclareFontShape{TS1}{ybd2}{bx}{si}{<->ssub * ybd2/b/si}{}
\endinput
+%%
+%% End of file `ts1ybd2.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ts1ybd2j.fd b/Master/texmf-dist/tex/latex/berenisadf/ts1ybd2j.fd
index 8bade82ba42..361a597cc9d 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/ts1ybd2j.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/ts1ybd2j.fd
@@ -1,51 +1,87 @@
-%Filename: ts1ybd2j.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `ts1ybd2j.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ts1ybd2j')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1ybd2j.fd}
- [2013/11/19 font definitions for TS1/ybd2j.]
+ [0000/00/00 font definitions for TS1/ybd2j.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{TS1}{ybd2j}{}
\DeclareFontShape{TS1}{ybd2j}{m}{n}{
- <-> ybdr2j8c
+ <-> \ybd@@scale ybdr2j8c
}{}
\DeclareFontShape{TS1}{ybd2j}{m}{sc}{
- <-> ybdr2cj8c
+ <-> \ybd@@scale ybdr2cj8c
}{}
\DeclareFontShape{TS1}{ybd2j}{m}{it}{
- <-> ybdr2ij8c
+ <-> \ybd@@scale ybdr2ij8c
}{}
-\DeclareFontShape{TS1}{ybd2j}{m}{si}{
- <-> ybdr2cij8c
+\DeclareFontShape{TS1}{ybd2j}{m}{scit}{
+ <-> \ybd@@scale ybdr2cij8c
}{}
\DeclareFontShape{TS1}{ybd2j}{b}{n}{
- <-> ybdb2j8c
+ <-> \ybd@@scale ybdb2j8c
}{}
\DeclareFontShape{TS1}{ybd2j}{b}{sc}{
- <-> ybdb2cj8c
+ <-> \ybd@@scale ybdb2cj8c
}{}
\DeclareFontShape{TS1}{ybd2j}{b}{it}{
- <-> ybdb2ij8c
+ <-> \ybd@@scale ybdb2ij8c
}{}
-\DeclareFontShape{TS1}{ybd2j}{b}{si}{
- <-> ybdb2cij8c
+\DeclareFontShape{TS1}{ybd2j}{b}{scit}{
+ <-> \ybd@@scale ybdb2cij8c
}{}
\DeclareFontShape{TS1}{ybd2j}{m}{sl}{<->ssub * ybd2j/m/it}{}
+\DeclareFontShape{TS1}{ybd2j}{m}{si}{<->ssub * ybd2j/m/scit}{}
\DeclareFontShape{TS1}{ybd2j}{b}{sl}{<->ssub * ybd2j/b/it}{}
\DeclareFontShape{TS1}{ybd2j}{bx}{n}{<->ssub * ybd2j/b/n}{}
\DeclareFontShape{TS1}{ybd2j}{bx}{sc}{<->ssub * ybd2j/b/sc}{}
\DeclareFontShape{TS1}{ybd2j}{bx}{it}{<->ssub * ybd2j/b/it}{}
\DeclareFontShape{TS1}{ybd2j}{bx}{sl}{<->ssub * ybd2j/b/sl}{}
+\DeclareFontShape{TS1}{ybd2j}{bx}{scit}{<->ssub * ybd2j/b/scit}{}
+\DeclareFontShape{TS1}{ybd2j}{b}{si}{<->ssub * ybd2j/bx/scit}{}
\DeclareFontShape{TS1}{ybd2j}{bx}{si}{<->ssub * ybd2j/b/si}{}
\endinput
+%%
+%% End of file `ts1ybd2j.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ts1ybd2jw.fd b/Master/texmf-dist/tex/latex/berenisadf/ts1ybd2jw.fd
new file mode 100644
index 00000000000..9c652412cb0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/berenisadf/ts1ybd2jw.fd
@@ -0,0 +1,87 @@
+%%
+%% This is file `ts1ybd2jw.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ts1ybd2j')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
+
+
+\ProvidesFile{ts1ybd2jw.fd}
+ [0000/00/00 font definitions for TS1/ybd2jw.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
+
+\DeclareFontFamily{TS1}{ybd2jw}{}
+
+\DeclareFontShape{TS1}{ybd2jw}{m}{n}{
+ <-> \ybd@@scale ybdr2j8c
+}{}
+
+\DeclareFontShape{TS1}{ybd2jw}{m}{sc}{
+ <-> \ybd@@scale ybdr2cj8c
+}{}
+
+\DeclareFontShape{TS1}{ybd2jw}{m}{it}{
+ <-> \ybd@@scale ybdr2ij8c
+}{}
+
+\DeclareFontShape{TS1}{ybd2jw}{m}{scit}{
+ <-> \ybd@@scale ybdr2cij8c
+}{}
+
+\DeclareFontShape{TS1}{ybd2jw}{b}{n}{
+ <-> \ybd@@scale ybdb2j8c
+}{}
+
+\DeclareFontShape{TS1}{ybd2jw}{b}{sc}{
+ <-> \ybd@@scale ybdb2cj8c
+}{}
+
+\DeclareFontShape{TS1}{ybd2jw}{b}{it}{
+ <-> \ybd@@scale ybdb2ij8c
+}{}
+
+\DeclareFontShape{TS1}{ybd2jw}{b}{scit}{
+ <-> \ybd@@scale ybdb2cij8c
+}{}
+
+\DeclareFontShape{TS1}{ybd2jw}{m}{sl}{<->ssub * ybd2j/m/it}{}
+\DeclareFontShape{TS1}{ybd2jw}{m}{si}{<->ssub * ybd2j/m/scit}{}
+\DeclareFontShape{TS1}{ybd2jw}{b}{sl}{<->ssub * ybd2j/b/it}{}
+\DeclareFontShape{TS1}{ybd2jw}{bx}{n}{<->ssub * ybd2j/b/n}{}
+\DeclareFontShape{TS1}{ybd2jw}{bx}{sc}{<->ssub * ybd2j/b/sc}{}
+\DeclareFontShape{TS1}{ybd2jw}{bx}{it}{<->ssub * ybd2j/b/it}{}
+\DeclareFontShape{TS1}{ybd2jw}{bx}{sl}{<->ssub * ybd2j/b/sl}{}
+\DeclareFontShape{TS1}{ybd2jw}{bx}{scit}{<->ssub * ybd2j/b/scit}{}
+\DeclareFontShape{TS1}{ybd2jw}{b}{si}{<->ssub * ybd2j/bx/scit}{}
+\DeclareFontShape{TS1}{ybd2jw}{bx}{si}{<->ssub * ybd2j/b/si}{}
+
+\endinput
+%%
+%% End of file `ts1ybd2jw.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ts1ybd2w.fd b/Master/texmf-dist/tex/latex/berenisadf/ts1ybd2w.fd
new file mode 100644
index 00000000000..872ca9465ad
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/berenisadf/ts1ybd2w.fd
@@ -0,0 +1,87 @@
+%%
+%% This is file `ts1ybd2w.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ts1ybd2')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
+
+
+\ProvidesFile{ts1ybd2w.fd}
+ [0000/00/00 font definitions for TS1/ybd2w.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
+
+\DeclareFontFamily{TS1}{ybd2w}{}
+
+\DeclareFontShape{TS1}{ybd2w}{m}{n}{
+ <-> \ybd@@scale ybdr28c
+}{}
+
+\DeclareFontShape{TS1}{ybd2w}{m}{sc}{
+ <-> \ybd@@scale ybdr2c8c
+}{}
+
+\DeclareFontShape{TS1}{ybd2w}{m}{it}{
+ <-> \ybd@@scale ybdr2i8c
+}{}
+
+\DeclareFontShape{TS1}{ybd2w}{m}{scit}{
+ <-> \ybd@@scale ybdr2ci8c
+}{}
+
+\DeclareFontShape{TS1}{ybd2w}{b}{n}{
+ <-> \ybd@@scale ybdb28c
+}{}
+
+\DeclareFontShape{TS1}{ybd2w}{b}{sc}{
+ <-> \ybd@@scale ybdb2c8c
+}{}
+
+\DeclareFontShape{TS1}{ybd2w}{b}{it}{
+ <-> \ybd@@scale ybdb2i8c
+}{}
+
+\DeclareFontShape{TS1}{ybd2w}{b}{scit}{
+ <-> \ybd@@scale ybdb2ci8c
+}{}
+
+\DeclareFontShape{TS1}{ybd2w}{m}{sl}{<->ssub * ybd2/m/it}{}
+\DeclareFontShape{TS1}{ybd2w}{m}{si}{<->ssub * ybd2/m/scit}{}
+\DeclareFontShape{TS1}{ybd2w}{b}{sl}{<->ssub * ybd2/b/it}{}
+\DeclareFontShape{TS1}{ybd2w}{bx}{n}{<->ssub * ybd2/b/n}{}
+\DeclareFontShape{TS1}{ybd2w}{bx}{sc}{<->ssub * ybd2/b/sc}{}
+\DeclareFontShape{TS1}{ybd2w}{bx}{it}{<->ssub * ybd2/b/it}{}
+\DeclareFontShape{TS1}{ybd2w}{bx}{sl}{<->ssub * ybd2/b/sl}{}
+\DeclareFontShape{TS1}{ybd2w}{bx}{scit}{<->ssub * ybd2/b/scit}{}
+\DeclareFontShape{TS1}{ybd2w}{b}{si}{<->ssub * ybd2/bx/scit}{}
+\DeclareFontShape{TS1}{ybd2w}{bx}{si}{<->ssub * ybd2/b/si}{}
+
+\endinput
+%%
+%% End of file `ts1ybd2w.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ts1ybdj.fd b/Master/texmf-dist/tex/latex/berenisadf/ts1ybdj.fd
index e41025fc2cc..0f896e26da4 100644
--- a/Master/texmf-dist/tex/latex/berenisadf/ts1ybdj.fd
+++ b/Master/texmf-dist/tex/latex/berenisadf/ts1ybdj.fd
@@ -1,51 +1,87 @@
-%Filename: ts1ybdj.fd
-%Based on a file created using fontinst v1.928
+%%
+%% This is file `ts1ybdj.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ts1ybdj')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1ybdj.fd}
- [2013/11/19 font definitions for TS1/ybdj.]
+ [0000/00/00 font definitions for TS1/ybdj.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
\DeclareFontFamily{TS1}{ybdj}{}
\DeclareFontShape{TS1}{ybdj}{m}{n}{
- <-> ybdrj8c
+ <-> \ybd@@scale ybdrj8c
}{}
\DeclareFontShape{TS1}{ybdj}{m}{sc}{
- <-> ybdrcj8c
+ <-> \ybd@@scale ybdrcj8c
}{}
\DeclareFontShape{TS1}{ybdj}{m}{it}{
- <-> ybdrij8c
+ <-> \ybd@@scale ybdrij8c
}{}
-\DeclareFontShape{TS1}{ybdj}{m}{si}{
- <-> ybdrcij8c
+\DeclareFontShape{TS1}{ybdj}{m}{scit}{
+ <-> \ybd@@scale ybdrcij8c
}{}
\DeclareFontShape{TS1}{ybdj}{b}{n}{
- <-> ybdbj8c
+ <-> \ybd@@scale ybdbj8c
}{}
\DeclareFontShape{TS1}{ybdj}{b}{sc}{
- <-> ybdbcj8c
+ <-> \ybd@@scale ybdbcj8c
}{}
\DeclareFontShape{TS1}{ybdj}{b}{it}{
- <-> ybdbij8c
+ <-> \ybd@@scale ybdbij8c
}{}
-\DeclareFontShape{TS1}{ybdj}{b}{si}{
- <-> ybdbcij8c
+\DeclareFontShape{TS1}{ybdj}{b}{scit}{
+ <-> \ybd@@scale ybdbcij8c
}{}
\DeclareFontShape{TS1}{ybdj}{m}{sl}{<->ssub * ybdj/m/it}{}
+\DeclareFontShape{TS1}{ybdj}{m}{si}{<->ssub * ybdj/m/scit}{}
\DeclareFontShape{TS1}{ybdj}{b}{sl}{<->ssub * ybdj/b/it}{}
\DeclareFontShape{TS1}{ybdj}{bx}{n}{<->ssub * ybdj/b/n}{}
\DeclareFontShape{TS1}{ybdj}{bx}{sc}{<->ssub * ybdj/b/sc}{}
\DeclareFontShape{TS1}{ybdj}{bx}{it}{<->ssub * ybdj/b/it}{}
\DeclareFontShape{TS1}{ybdj}{bx}{sl}{<->ssub * ybdj/b/sl}{}
+\DeclareFontShape{TS1}{ybdj}{bx}{scit}{<->ssub * ybdj/b/scit}{}
+\DeclareFontShape{TS1}{ybdj}{b}{si}{<->ssub * ybdj/bx/scit}{}
\DeclareFontShape{TS1}{ybdj}{bx}{si}{<->ssub * ybdj/b/si}{}
\endinput
+%%
+%% End of file `ts1ybdj.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ts1ybdjw.fd b/Master/texmf-dist/tex/latex/berenisadf/ts1ybdjw.fd
new file mode 100644
index 00000000000..1b253001756
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/berenisadf/ts1ybdjw.fd
@@ -0,0 +1,87 @@
+%%
+%% This is file `ts1ybdjw.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ts1ybdj')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
+
+
+\ProvidesFile{ts1ybdjw.fd}
+ [0000/00/00 font definitions for TS1/ybdjw.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
+
+\DeclareFontFamily{TS1}{ybdjw}{}
+
+\DeclareFontShape{TS1}{ybdjw}{m}{n}{
+ <-> \ybd@@scale ybdrj8c
+}{}
+
+\DeclareFontShape{TS1}{ybdjw}{m}{sc}{
+ <-> \ybd@@scale ybdrcj8c
+}{}
+
+\DeclareFontShape{TS1}{ybdjw}{m}{it}{
+ <-> \ybd@@scale ybdrij8c
+}{}
+
+\DeclareFontShape{TS1}{ybdjw}{m}{scit}{
+ <-> \ybd@@scale ybdrcij8c
+}{}
+
+\DeclareFontShape{TS1}{ybdjw}{b}{n}{
+ <-> \ybd@@scale ybdbj8c
+}{}
+
+\DeclareFontShape{TS1}{ybdjw}{b}{sc}{
+ <-> \ybd@@scale ybdbcj8c
+}{}
+
+\DeclareFontShape{TS1}{ybdjw}{b}{it}{
+ <-> \ybd@@scale ybdbij8c
+}{}
+
+\DeclareFontShape{TS1}{ybdjw}{b}{scit}{
+ <-> \ybd@@scale ybdbcij8c
+}{}
+
+\DeclareFontShape{TS1}{ybdjw}{m}{sl}{<->ssub * ybdj/m/it}{}
+\DeclareFontShape{TS1}{ybdjw}{m}{si}{<->ssub * ybdj/m/scit}{}
+\DeclareFontShape{TS1}{ybdjw}{b}{sl}{<->ssub * ybdj/b/it}{}
+\DeclareFontShape{TS1}{ybdjw}{bx}{n}{<->ssub * ybdj/b/n}{}
+\DeclareFontShape{TS1}{ybdjw}{bx}{sc}{<->ssub * ybdj/b/sc}{}
+\DeclareFontShape{TS1}{ybdjw}{bx}{it}{<->ssub * ybdj/b/it}{}
+\DeclareFontShape{TS1}{ybdjw}{bx}{sl}{<->ssub * ybdj/b/sl}{}
+\DeclareFontShape{TS1}{ybdjw}{bx}{scit}{<->ssub * ybdj/b/scit}{}
+\DeclareFontShape{TS1}{ybdjw}{b}{si}{<->ssub * ybdj/bx/scit}{}
+\DeclareFontShape{TS1}{ybdjw}{bx}{si}{<->ssub * ybdj/b/si}{}
+
+\endinput
+%%
+%% End of file `ts1ybdjw.fd'.
diff --git a/Master/texmf-dist/tex/latex/berenisadf/ts1ybdw.fd b/Master/texmf-dist/tex/latex/berenisadf/ts1ybdw.fd
new file mode 100644
index 00000000000..c1c5777e688
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/berenisadf/ts1ybdw.fd
@@ -0,0 +1,87 @@
+%%
+%% This is file `ts1ybdw.fd',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% berenisadf.dtx (with options: `fd-ts1ybd')
+%%
+%% -------------------------------------------------
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% berenisadf. You may however distribute the package berenisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%% -------------------------------------------------
+
+
+\ProvidesFile{ts1ybdw.fd}
+ [0000/00/00 font definitions for TS1/ybdw.]
+ \expandafter\ifx\csname ybd@scale\endcsname\relax
+ \let\ybd@@scale\@empty
+ \else
+ \edef\ybd@@scale{s*[\csname ybd@scale\endcsname]}%
+ \fi
+
+\DeclareFontFamily{TS1}{ybdw}{}
+
+\DeclareFontShape{TS1}{ybdw}{m}{n}{
+ <-> \ybd@@scale ybdr8c
+}{}
+
+\DeclareFontShape{TS1}{ybdw}{m}{sc}{
+ <-> \ybd@@scale ybdrc8c
+}{}
+
+\DeclareFontShape{TS1}{ybdw}{m}{it}{
+ <-> \ybd@@scale ybdri8c
+}{}
+
+\DeclareFontShape{TS1}{ybdw}{m}{scit}{
+ <-> \ybd@@scale ybdrci8c
+}{}
+
+\DeclareFontShape{TS1}{ybdw}{b}{n}{
+ <-> \ybd@@scale ybdb8c
+}{}
+
+\DeclareFontShape{TS1}{ybdw}{b}{sc}{
+ <-> \ybd@@scale ybdbc8c
+}{}
+
+\DeclareFontShape{TS1}{ybdw}{b}{it}{
+ <-> \ybd@@scale ybdbi8c
+}{}
+
+\DeclareFontShape{TS1}{ybdw}{b}{scit}{
+ <-> \ybd@@scale ybdbci8c
+}{}
+
+\DeclareFontShape{TS1}{ybdw}{m}{sl}{<->ssub * ybd/m/it}{}
+\DeclareFontShape{TS1}{ybdw}{m}{si}{<->ssub * ybd/m/scit}{}
+\DeclareFontShape{TS1}{ybdw}{b}{sl}{<->ssub * ybd/b/it}{}
+\DeclareFontShape{TS1}{ybdw}{bx}{n}{<->ssub * ybd/b/n}{}
+\DeclareFontShape{TS1}{ybdw}{bx}{sc}{<->ssub * ybd/b/sc}{}
+\DeclareFontShape{TS1}{ybdw}{bx}{it}{<->ssub * ybd/b/it}{}
+\DeclareFontShape{TS1}{ybdw}{bx}{sl}{<->ssub * ybd/b/sl}{}
+\DeclareFontShape{TS1}{ybdw}{bx}{scit}{<->ssub * ybd/b/scit}{}
+\DeclareFontShape{TS1}{ybdw}{b}{si}{<->ssub * ybd/bx/scit}{}
+\DeclareFontShape{TS1}{ybdw}{bx}{si}{<->ssub * ybd/b/si}{}
+
+\endinput
+%%
+%% End of file `ts1ybdw.fd'.
diff --git a/Master/texmf-dist/tex/latex/bibcop/bibcop.sty b/Master/texmf-dist/tex/latex/bibcop/bibcop.sty
index 3089f067b0d..958d2cd874c 100644
--- a/Master/texmf-dist/tex/latex/bibcop/bibcop.sty
+++ b/Master/texmf-dist/tex/latex/bibcop/bibcop.sty
@@ -7,7 +7,7 @@
%% bibcop.dtx (with options: `package')
%% (The MIT License)
%%
-%% Copyright (c) 2022-2024 Yegor Bugayenko
+%% Copyright (c) 2022-2025 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
@@ -31,7 +31,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{bibcop}
-[2024-05-03 0.0.21 Style Checker of Bibliography Files]
+[2025/01/22 0.0.25 Style Checker of Bibliography Files]
diff --git a/Master/texmf-dist/tex/latex/biblatex-abnt/abnt-ibid.cbx b/Master/texmf-dist/tex/latex/biblatex-abnt/abnt-ibid.cbx
index 97e7cfa2dbc..caba6a0103a 100644
--- a/Master/texmf-dist/tex/latex/biblatex-abnt/abnt-ibid.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-abnt/abnt-ibid.cbx
@@ -42,6 +42,17 @@
}%
}% <<<2
+\newcommand*{\NormalOrACCiteOrSCCite}[1]{% >>>2
+ \iftoggle{accite}{%
+ \MakeUppercase{#1}}%
+ }{%
+ \iftoggle{sccite}{%
+ \textsc{\MakeLowercase{#1}}%
+ }{%
+ #1%
+ }%
+}% <<<2
+
% \IfInitial >>>2
\ExplSyntaxOn
@@ -112,7 +123,7 @@
\let\origmkbibnamesuffix\mkbibnamesuffix%
\renewcommand*{\mkbibnamefamily}[1]{% >>>2
- \UpperOrSCCite{#1}%
+ \NormalOrACCiteOrSCCite{#1}%
}% <<<2
\renewcommand*{\mkbibnamegiven}[1]{% >>>2
\ifnumequal{\value{uniquename}}{2}{%
@@ -129,7 +140,7 @@
}
}% <<<2
\renewcommand*{\mkbibnamesuffix}[1]{% >>>2
- \UpperOrSCCite{#1}%
+ \NormalOrACCiteOrSCCite{#1}%
}% <<<2
\DeclareFieldFormat{firstword}{%% >>>2
diff --git a/Master/texmf-dist/tex/latex/biblatex-abnt/abnt-numeric.bbx b/Master/texmf-dist/tex/latex/biblatex-abnt/abnt-numeric.bbx
index 9e9aba2015f..ec0dfccfb59 100644
--- a/Master/texmf-dist/tex/latex/biblatex-abnt/abnt-numeric.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-abnt/abnt-numeric.bbx
@@ -16,7 +16,10 @@
[2018-11-17\space v3.4\space ABNT BibLaTeX citation style]%
\RequireBibliographyStyle{abnt}
-\ExecuteBibliographyOptions{labelnumber}
+\ExecuteBibliographyOptions{%
+ labelnumber,%
+ sorting=none%
+}
\providebool{bbx:subentry}
diff --git a/Master/texmf-dist/tex/latex/biblatex-abnt/abnt.bbx b/Master/texmf-dist/tex/latex/biblatex-abnt/abnt.bbx
index ec95c836c8f..ca0240d2f8b 100644
--- a/Master/texmf-dist/tex/latex/biblatex-abnt/abnt.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-abnt/abnt.bbx
@@ -24,12 +24,21 @@
\RequirePackage{xpatch}%
\RequirePackage{expl3}%
-\DeclareLanguageMappingSuffix{-abnt}
+\DeclareLanguageMapping{american}{american-abnt}
+\DeclareLanguageMapping{australian}{australian-abnt}
+\DeclareLanguageMapping{brazil}{brazil-abnt}
+\DeclareLanguageMapping{brazilian}{brazilian-abnt}
+\DeclareLanguageMapping{british}{british-abnt}
+\DeclareLanguageMapping{canadian}{canadian-abnt}
+\DeclareLanguageMapping{english}{english-abnt}
+\DeclareLanguageMapping{portuges}{portuges-abnt}
+\DeclareLanguageMapping{portuguese}{portuguese-abnt}
+\DeclareLanguageMapping{spanish}{spanish-abnt}
\RequireBibliographyStyle{standard}%
\ExecuteBibliographyOptions{%
- language=brazil,%
+ % language=brazil,%
block=none,%
urldate=long,%
pagetracker,%
@@ -39,9 +48,6 @@
\InitializeBibliographyStyle{\global\undef\bbx@lasthash}%
-\let\origbibsetup\bibsetup%
-\appto{\bibsetup}{\raggedright}%
-
\setcounter{biburlnumpenalty}{3000}%
\setcounter{biburllcpenalty}{6000}%
\setcounter{biburlucpenalty}{9000}%
@@ -49,6 +55,728 @@
% <<<1
+% Macros >>>1
+
+% Dashed option >>>2
+
+\newbool{bbx@inset}%
+
+\newtoggle{isdashed}%
+
+\newcommand*{\bibnameunderscore}{\underline{\hspace*{4em}}}%
+\newcommand*{\nopunctdash}{\bibnameunderscore\addspace}%
+\renewcommand*{\bibnamedash}{\bibnameunderscore\addperiod\addspace}%
+
+\renewbibmacro*{begrelated}{%% >>>3
+ \booltrue{bbx@inset}%
+}%% <<<3
+
+\newbibmacro*{bbx:savehash}{%% >>>3
+ \savefield{fullhash}{\bbx@lasthash}%
+}%% <<<3
+
+\newbibmacro*{bbx:saveorg}{%% >>>3
+ \savelist{organization}{\bbx@lastorg}%
+}%% <<<3
+
+\newbibmacro*{bbx:savetitle}{%% >>>3
+ \savefield{title}{\bbx@lasttitle}%
+}%% <<<3
+
+\newbibmacro*{bbx:savesubtitle}{%% >>>3
+ \savefield{subtitle}{\bbx@lastsubtitle}%
+}%% <<<3
+
+\newbibmacro*{bbx:dashcheck}[2]{%% >>>3
+ \ifboolexpr{%
+ (%
+ test {\iffieldequals{fullhash}{\bbx@lasthash}}%
+ or%
+ test {\iflistequals{organization}{\bbx@lastorg}}%
+ )%
+ and%
+ not test \iffirstonpage%
+ and%
+ not test {\iftoggle{repeatfields}}%
+ and%
+ not test {\iftoggle{repeatfirstfields}}%
+ and%
+ (%
+ not bool {bbx@inset}%
+ or%
+ test {\iffieldequalstr{entrysetcount}{1}}%
+ )%
+ }%
+ {\settoggle{isdashed}{true}#1}%
+ {\settoggle{isdashed}{false}#2}%
+}%% <<<3
+
+\newbibmacro*{bbx:titledashcheck}[2]{%% >>>3
+ \iftoggle{isdashed}{%
+ \ifboolexpr{%
+ test {\iffieldequals{title}{\bbx@lasttitle}}%
+ and%
+ (%
+ test {\iffieldequals{subtitle}{\bbx@lastsubtitle}}%
+ or%
+ test {\iffieldundef{subtitle}}%
+ )%
+ and%
+ not test {\iftoggle{repeattitle}}%
+ }%
+ {#1}%
+ {#2}%
+ }{%
+ #2%
+ }%
+}%% <<<3
+
+\newbibmacro*{bbx:ineditordashcheck}[2]{%% >>>3
+ \ifboolexpr{%
+ test {\ifnamesequal{editor}{author}}%
+ and%
+ not test {\iftoggle{repeatfields}}%
+ and%
+ (%
+ not bool {bbx@inset}%
+ or%
+ test {\iffieldequalstr{entrysetcount}{1}}%
+ )%
+ }%
+ {\settoggle{isdashed}{true}#1}%
+ {\settoggle{isdashed}{false}#2}%
+}%% <<<3
+
+% <<<2
+
+% Titles >>>2
+
+\newbibmacro*{titleiskey}[2]{%% >>>3
+\ifboolexpr{%
+ test {\ifnameundef{author}}%
+ and%
+ test {\ifnameundef{editor}}%
+ and%
+ test {\ifnameundef{holder}}%
+ and%
+ test {\ifcsundef{saveded}}%
+ and%
+ test {\ifcsundef{savedorg}}%
+ and%
+ test {\iffieldundef{eventtitle}}%
+}%
+ {#1}%
+ {#2}%
+}%% <<<3
+
+\renewbibmacro*{title}{%% >>>3
+ \ifboolexpr{%
+ test {\iffieldundef{title}}%
+ and%
+ test {\iffieldundef{subtitle}}%
+ }%
+ {\global\undef\bbx@lasttitle%
+ \global\undef\bbx@lastsubtitle}%
+ {\usebibmacro{bbx:titledashcheck}%
+ {\unspace\bibnamedash}%
+ {\usebibmacro{bbx:savetitle}%
+ \usebibmacro{bbx:savesubtitle}%
+ \printtext[title]{%
+ \usebibmacro{titleiskey}%
+ {\unspace\printfield[upperfirst]{title}}%
+ {\ifboolexpr{%
+ test {\iffieldundef{maintitle}}%
+ and%
+ test {\iffieldundef{related}}%
+ }%
+ {\printfield[titlecase]{title}}%
+ {\printfield[normalfont]{title}}}%
+ \normalfont{%
+ \iffieldendswithpunct{title}{%
+ \setunit*{\addspace}%
+ }{%
+ \setunit*{\subtitlepunct}%
+ }
+ \printfield[normalfont]{subtitle}%
+ \setunit{\addperiod\addspace}%
+ }}%
+ \newunit}}%
+ \printfield{titleaddon}%
+}%% <<<3
+
+\newbibmacro*{booktitleiskey}[2]{%% >>>3
+\ifboolexpr{%
+ test {\ifnameundef{bookauthor}}%
+ and%
+ test {\ifnameundef{editor}}%
+ and%
+ test {\iffieldundef{organization}}%
+ and%
+ test {\ifcsundef{saveded}}%
+ and%
+ test {\ifcsundef{savedorg}}%
+ and%
+ test {\iffieldundef{eventtitle}}%
+}%
+ {#1}%
+ {#2}%
+}%% <<<3
+
+\renewbibmacro*{booktitle}{%% >>>3
+ \ifboolexpr{%
+ test {\iffieldundef{booktitle}}%
+ and%
+ test {\iffieldundef{booksubtitle}}%
+ }%
+ {}%
+ {\printtext[booktitle]{%
+ \usebibmacro{booktitleiskey}{%
+ \printfield[upperfirst]{booktitle}%
+ }{%
+ \printfield[titlecase]{booktitle}%
+ }%
+ \iffieldendswithpunct{booktitle}{%
+ \normalfont{\setunit*{\addspace}}%
+ }{%
+ \normalfont{\setunit*{\subtitlepunct}}%
+ }
+ \printfield[normalfont]{booksubtitle}}%
+ \newunit}%
+ \printfield{booktitleaddon}%
+}%% <<<3
+
+\renewbibmacro*{maintitle}{%% >>>3
+ \ifboolexpr{%
+ test {\iffieldundef{maintitle}}%
+ and%
+ test {\iffieldundef{mainsubtitle}}%
+ }%
+ {}%
+ {\printtext[maintitle]{%
+ \usebibmacro{titleiskey}{%
+ \printfield[upperfirst]{maintitle}%
+ }{%
+ \printfield[titlecase]{maintitle}%
+ }%
+ \iffieldendswithpunct{maintitle}{%
+ \normalfont{\setunit*{\addspace}}%
+ }{%
+ \normalfont{\setunit*{\subtitlepunct}}%
+ }
+ \printfield[normalfont]{mainsubtitle}}%
+ \newunit}%
+ \printfield{maintitleaddon}%
+}%% <<<3
+
+\newbibmacro*{in:maintitle}{%% >>>3
+ \iffieldundef{maintitle}{}{%
+ \usebibmacro{in:}%
+ \iftoggle{repeatfields}%
+ {\addspace\usebibmacro{author/editor+others}}%
+ {\addspace\bibnamedash}%
+ \newunit%
+ \usebibmacro{maintitle}%
+ }%
+}%% <<<3
+
+\renewbibmacro*{maintitle+booktitle}{%% >>>3
+ \iffieldundef{maintitle}%
+ {}%
+ {\usebibmacro{maintitle}%
+ \newunit\newblock%
+ \iffieldundef{volume}%
+ {}%
+ {\printfield{volume}%
+ \printfield{part}%
+ \setunit{\addcolon\addspace}}}%
+ \usebibmacro{booktitle}%
+ \newunit%
+}%% <<<3
+
+\newbibmacro*{maintitle/booktitle}{%% >>>3
+ \iffieldundef{maintitle}%
+ {\usebibmacro{booktitle}}%
+ {\usebibmacro{maintitle}}%
+}%% <<<3
+
+\renewbibmacro*{journal}{%% >>>3
+ \iffieldundef{journaltitle}%
+ {}%
+ {\printtext[journaltitle]{%
+ \printfield[titlecase]{journaltitle}%
+ \iffieldendswithpunct{journaltitle}{%
+ \setunit{\addspace}%
+ }{%
+ \setunit{\subtitlepunct}%
+ }
+ \printfield[normalfont]{journalsubtitle}}}%
+}%% <<<3
+
+\newbibmacro{journal+section}{%% >>>3
+ \usebibmacro{journal}%
+ \iffieldundef{section}%
+ {}%
+ {\setunit{\addspace\textendash\addspace}%
+ \printfield{section}}%
+}%% <<<3
+
+\renewbibmacro*{journal+issuetitle}{%% >>>3
+ \usebibmacro{journal}%
+ \setunit*{\addcomma\addspace}%
+ \iffieldundef{series}%
+ {}%
+ {\newunit%
+ \printfield{series}%
+ \setunit{\addspace}}%
+ \usebibmacro{volume+number+eid}%
+ \newunit%
+}%% <<<3
+
+\renewbibmacro*{periodical}{%% >>>3
+ \iffieldundef{title}{}{%
+ \printtext[title]{%
+ \iffieldundef{issue}{%
+ \unspace\printfield[upperfirst]{title}%
+ }{%
+ \printfield[titlecase]{title}%
+ }
+ \normalfont{%
+ \iffieldendswithpunct{title}{%
+ \setunit*{\addspace}%
+ }{%
+ \setunit*{\subtitlepunct}%
+ }
+ \printfield[normalfont]{subtitle}%
+ }%
+ }%
+ }%
+}%% <<<3
+
+% <<<2
+
+% Names >>>2
+
+\renewbibmacro*{author}{%% >>>3
+ \ifboolexpr{%
+ test \ifuseauthor%
+ and%
+ not test {\ifnameundef{author}}%
+ }{%
+ \usebibmacro{bbx:dashcheck}{%
+ \iffieldundef{authortype}{%
+ \bibnamedash%
+ \newunit%
+ \printfield{nameaddon}%
+ }{%
+ \nopunctdash%
+ \usebibmacro{authorstrg}%
+ \newunit%
+ \printfield{nameaddon}%
+ }%
+ }{%
+ \usebibmacro{bbx:savehash}%
+ \printnames{author}%
+ \addspace%
+ \usebibmacro{authorstrg}%
+ \newunit%
+ \printfield{nameaddon}%
+ }%
+ }{%
+ \global\undef\bbx@lasthash%
+ }%
+}%% <<<3
+
+\renewbibmacro*{editor+others}{%% >>>3
+ \ifboolexpr{%
+ test \ifuseeditor%
+ and%
+ not test {\ifnameundef{editor}}%
+ }{%
+ \usebibmacro{bbx:dashcheck}{%
+ \iffieldundef{editortype}{%
+ \bibnamedash%
+ }{%
+ \nopunctdash%
+ \usebibmacro{editor+othersstrg}%
+ }%
+ }{%
+ \usebibmacro{bbx:savehash}%
+ \printnames{editor}%
+ \setunit{\addspace}%
+ \usebibmacro{editor+othersstrg}%
+ }%
+ \savenamecs*{editor}{saveded}%
+ \clearname{editor}%
+ }{%
+ \global\undef\bbx@lasthash%
+ \usebibmacro{organization}%
+ }%
+}%% <<<3
+
+\renewbibmacro*{byeditor+others}{%% >>>3
+ \toggletrue{byeditor+others}%
+ \ifnameundef{editor}{}{% else
+ \usebibmacro{byeditor+othersstrg}%
+ \setunit*{\addspace}%
+ \printnames[byeditor]{editor}%
+ \clearname{editor}%
+ \newunit%
+ }%
+ \usebibmacro{byeditorx}%
+ \usebibmacro{bytranslator+others}%
+ \togglefalse{byeditor+others}%
+}%% <<<3
+
+\newbibmacro*{organization}{%% >>>3
+ \iflistundef{organization}%
+ {\global\undef\bbx@lastorg}%
+ {\usebibmacro{bbx:dashcheck}%
+ {\bibnamedash}%
+ {\usebibmacro{bbx:saveorg}%
+ \printlist[uppercase]{organization}}%
+ \savelistcs*{organization}{savedorg}%
+ \clearlist{organization}%
+ \newunit%
+ \printfield{nameaddon}}%
+}%% <<<3
+
+\newbibmacro*{author/organization}{%% >>>3
+ \ifnameundef{author}%
+ {\usebibmacro{organization}}%
+ {\usebibmacro{author}}%
+}%% <<<3
+
+\newbibmacro*{editor+others/organization}{%% >>>3
+ \ifnameundef{editor}%
+ {\usebibmacro{organization}}%
+ {\usebibmacro{editor+others}}%
+}%% <<<3
+
+\newbibmacro*{organization/eventtitle}{%% >>>3
+ \iffieldundef{eventtitle}%
+ {\usebibmacro{organization}}%
+ {\printfield[uppercase]{eventtitle}}%
+}%% <<<3
+
+\newbibmacro*{bookauthor/editor+others}{%% >>>3
+ \ifnameundef{bookauthor}{%
+ \usebibmacro{editor+others}}%
+ {\printnames{bookauthor}}%
+}%% <<<3
+
+\newbibmacro*{in:bookauthor+others}{%% >>>3
+ \usebibmacro{in:}%
+ \ifnameundef{bookauthor}{%
+ % do nothing
+ }{% else
+ \ifnamesequal{author}{bookauthor}{%
+ \iftoggle{repeatfields}{%
+ \usebibmacro{author/editor+others}%
+ }{% else
+ \bibnamedash%
+ }%
+ }{% else
+ \printnames{bookauthor}%
+ }%
+ }%
+}%% <<<3
+
+\newbibmacro*{in:editor+others}{%% >>>3
+ \usebibmacro{in:}%
+ \addspace%
+ \ifnameundef{editor}{%
+ \printlist[uppercase]{organization}%
+ }{%
+ \usebibmacro{bbx:ineditordashcheck}{%
+ \iffieldundef{editortype}{%
+ \bibnamedash%
+ }{%
+ \nopunctdash%
+ \usebibmacro{editor+othersstrg}%
+ \savenamecs*{editor}{saveded}%
+ \clearname{editor}%
+ }%
+ }{%
+ \printnames{editor}%
+ \setunit*{\addspace}%
+ \usebibmacro{editor+othersstrg}%
+ \savenamecs*{editor}{saveded}%
+ \clearname{editor}%
+ }%
+ }%
+}%% <<<3
+
+\newbibmacro*{in:eventtitle/organization/editor}{%% >>>3
+ \usebibmacro{in:}%
+ \iffieldundef{eventtitle}{%
+ \ifnameundef{editor}{%
+ \printlist[uppercase]{organization}%
+ \clearlist{organization}%
+ }{%
+ \usebibmacro{editor+others}%
+ }%
+ }{%
+ \printfield[uppercase]{eventtitle}%
+ }%
+}%% <<<3
+
+% <<<2
+
+% Publisher, location, date, issue >>>2
+
+\renewbibmacro*{date}{%
+ \iftoggle{extradate}{%
+ \printdateextra%
+ }{%
+ \printdate%
+ }%
+ \printunit{\addperiod\addspace}%
+}%
+
+\newbibmacro*{publisher}{%% >>>3
+ \iflistundef{publisher}%
+ {\iftoggle{nosn}{}{\printtext[brackets]{\mkbibemph{\bibstring{sinenomine}}}}}%
+ {\printlist{publisher}}%
+}%% <<<3
+
+\newbibmacro*{location}{%% >>>3
+ \iflistundef{location}%
+ {\iftoggle{nosl}{}{\printtext[brackets]{\mkbibemph{\bibstring{sineloco}}}}}%
+ {\printlist{location}}%
+}%% <<<3
+
+\newbibmacro*{venue}{%% >>>3
+ \iffieldundef{venue}%
+ {\iftoggle{nosl}{}{\printtext[brackets]{\mkbibemph{\bibstring{sineloco}}}}}%
+ {\printfield{venue}}%
+}%% <<<3
+
+\renewbibmacro*{location+date}{%% >>>3
+ \usebibmacro{location}%
+ \setunit*{\addcomma\addspace}%
+ \usebibmacro{date}%
+ \newunit%
+}%% <<<3
+
+\renewbibmacro*{publisher+location+date}{%% >>>3
+ \ifboolexpr{%
+ test {\iflistundef{publisher}}%
+ and%
+ test {\iflistundef{location}}%
+ and%
+ not test {\iftoggle{nosl}}%
+ and%
+ not test {\iftoggle{nosn}}%
+ }{%
+ \printtext[brackets]{\mkbibemph{\bibstring{sineloco}}%
+ \setunit{\addcolon\addnbspace}%
+ \mkbibemph{\bibstring{sinenomine}}}%
+ }{%
+ \ifboolexpr{%
+ test {\ifnameundef{author}}%
+ and%
+ test {\ifnameundef{editor}}%
+ and%
+ test {\iflistundef{publisher}}%
+ and%
+ not test {\iflistundef{organization}}%
+ }{%
+ \usebibmacro{location}%
+ }{%
+ \usebibmacro{location}%
+ \setunit*{\addcolon\addspace}%
+ \usebibmacro{publisher}%
+ }%
+ }%
+ \setunit*{\addcomma\addspace}%
+ \usebibmacro{date}%
+ \newunit%
+}%% <<<3
+
+\renewbibmacro*{issue}{%% >>>3
+ \iffieldundef{issuetitle}%
+ {}%
+ {\printtext[issuetitle]{%
+ \printfield[upperfirst]{issuetitle}%
+ \iffieldendswithpunct{issuetitle}{%
+ \setunit*{\addspace}%
+ }{%
+ \setunit*{\subtitlepunct}%
+ }
+ \printfield[normalfont]{issuesubtitle}}}%
+}%% <<<3
+
+\renewbibmacro*{issue+date}{%% >>>3
+ \iffieldundef{issue}%
+ {\usebibmacro{date}}%
+ {\printfield{issue}%
+ \setunit*{\addspace}%
+ \usebibmacro{date}}%
+ \newunit%
+}%% <<<3
+
+\newbibmacro*{publisher+location+issue+date}{%% >>>3
+ \ifboolexpr{%
+ test {\iflistundef{publisher}}%
+ and%
+ test {\iflistundef{location}}%
+ and%
+ not test {\iftoggle{nosl}}%
+ and%
+ not test {\iftoggle{nosn}}%
+ }{%
+ \printtext[brackets]{\mkbibemph{\bibstring{sineloco}}%
+ \setunit{\addcolon\addnbspace}%
+ \mkbibemph{\bibstring{sinenomine}}}%
+ }{%
+ \ifboolexpr{%
+ test {\ifnameundef{author}}%
+ and%
+ test {\ifnameundef{editor}}%
+ and%
+ test {\iflistundef{publisher}}%
+ and%
+ not test {\iflistundef{organization}}%
+ }{%
+ \usebibmacro{location}%
+ }{%
+ \usebibmacro{location}%
+ \setunit*{\addcolon\addspace}%
+ \usebibmacro{publisher}%
+ }%
+ }%
+ \setunit*{\addcomma\addspace}%
+ \printfield[number]{issue}%
+ \setunit*{\addcomma\addspace}%
+ \usebibmacro{date}%
+ \newunit%
+}%% <<<3
+
+% <<<2
+
+% Misc >>>2
+
+\xpatchbibmacro{name:andothers}{%% >>>3
+ \bibstring{andothers}%
+}{%
+ \mkbibemph{\bibstring{andothers}}%
+}{}{}%% <<<3
+
+\renewbibmacro*{in:}{%% >>>3
+ \mkbibemph{\bibstring{in}\intitlepunct}
+}%% <<<3
+
+\renewbibmacro*{volume+number+eid}{%% >>>3
+ \printfield{volume}%
+ \setunit*{\addcomma\addspace}%
+ \printfield{number}%
+ \setunit{\addcomma\addspace}%
+ \printfield{eid}%
+}%% <<<3
+
+\renewbibmacro*{series+number}{%% >>>3
+ \iffieldundef{series}{}{%
+ \printtext[parens]{%
+ \printfield{series}%
+ \setunit*{\addcomma\addspace}%
+ \printfield[normalfont]{number}%
+ \newunit}%
+ }%
+}%% <<<3
+
+\renewbibmacro*{url+urldate}{%% >>>3
+ \usebibmacro{url}%
+ \iffieldundef{urlyear}%
+ {}%
+ {\setunit*{\addperiod\addspace}%
+ \usebibmacro{urldate}}%
+}%% <<<3
+
+\newbibmacro*{mathesis}{%% >>>3
+ \iffieldundef{type}{%
+ \bibstring{dissertation}\addspace\printtext[parens]{\bibstring{mathesis}}%
+ }{%
+ \bibstring{dissertation}\addspace\printtext[parens]{\printfield{type}}%
+ }%
+}%% <<<3
+
+\newbibmacro*{phdthesis}{%% >>>3
+ \iffieldundef{type}{%
+ \bibstring{thesis}\addspace\printtext[parens]{\bibstring{phdthesis}}%
+ }{%
+ \bibstring{thesis}\addspace\printtext[parens]{\printfield{type}}%
+ }%
+}%% <<<3
+
+\newbibmacro*{language}{%% >>>3
+ \ifboolexpr{%
+ test {\iflistundef{language}}%
+ or%
+ test {\iflistundef{origlanguage}}%
+ }%
+ {}%
+ {%
+ \printtext{\printlist{language}\addspace\printlist{origlanguage}}%
+ }%
+}%% <<<3
+
+\renewbibmacro*{related:reprintfrom}[1]{%% >>>3
+ \entrydata*{#1}{%
+ \usedriver%
+ {\ifnameundef{savedauthor}%
+ {\ifnameundef{savededitor}%
+ {}%
+ {\ifnamesequal{editor}{savededitor}%
+ {\clearname{editor}}%
+ {}}}%
+ {\ifnamesequal{author}{savedauthor}%
+ {\clearname{author}}%
+ {}}%
+ \renewbibmacro*{related:init}{}%
+ \DeclareNameAlias{sortname}{default}%
+ \ifbibmacroundef{date+extradate}%
+ {}%
+ {\renewbibmacro*{date+extradate}{}%
+ \renewbibmacro*{date}{\printdate}}%
+ \renewbibmacro*{pageref}{}}%
+ {\thefield{entrytype}}}%
+}%% <<<3
+
+\renewbibmacro*{pageref}{% >>>3
+ \iftoggle{backref}{%
+ \iftoggle{citecount}{%
+ \iflistundef{pageref}{%
+ \bibstring{citecountnopage}%
+ }{%
+ \printtext{%
+ \ifnumgreater{\value{pageref}}{1}{%
+ \bibstring{citecountpages}\ppspace%
+ }{%
+ \bibstring{citecountpage}\ppspace%
+ }%
+ \printlist[pageref][-\value{listtotal}]{pageref}%
+ }%
+ }%
+ }{%
+ \iflistundef{pageref}{}{%
+ \printtext{%
+ \ifnumgreater{\value{pageref}}{1}{%
+ \bibstring{backrefpages}\ppspace%
+ }{%
+ \bibstring{backrefpage}\ppspace%
+ }%
+ \printlist[pageref][-\value{listtotal}]{pageref}%
+ }%
+ }%
+ }%
+ }{}
+}% <<<3
+
+% <<<2
+
+% <<<1
+
+
% Options >>>1
% Print titles in italics >>>2
@@ -139,6 +867,7 @@
\renewbibmacro*{bbx:savesubtitle}{\savefield{subtitle}{\bbx@lastsubtitle}}%
}%
}%
+\ExecuteBibliographyOptions{repeatfields}
\DeclareEntryOption[boolean]{repeatfields}[true]{%
\settoggle{repeatfields}{#1}%
}%
@@ -169,7 +898,7 @@
% Use hanging indentation >>>2
\setlength{\bibhang}{0pt}%
\DeclareBibliographyOption{indent}[true]{%
- \ifstrequal{#1}{true}{%
+ \ifstrequal{#1}{true}{%
\setlength{\bibhang}{%
\ifnumequal{\parindent}{0}{1em}{\parindent}%
}%
@@ -188,10 +917,27 @@
\settoggle{extradate}{#1}}%
% <<<2
-% Justify text >>>2
+% Commands that append things to \bibsetup >>>2
+% Justify text >>>3
+\newtoggle{justify}
\DeclareBibliographyOption{justify}[true]{%
- % \ExecuteBibliographyOptions{block=space}%
- \renewcommand*{\bibsetup}{\origbibsetup}%
+ \settoggle{justify}{#1}%
+}%
+% <<<3
+
+% don't apply NBR 6023 2018 spacing >>>3
+\newtoggle{oldspacing}
+\DeclareBibliographyOption{oldspacing}[true]{%
+ \settoggle{oldspacing}{#1}%
+}%
+% <<<3
+
+\appto{\bibsetup}{%
+ \nottoggle{justify}{\raggedright}{}%
+ \nottoggle{oldspacing}{%
+ \setlength{\bibitemsep}{\baselineskip}%
+ \linespread{1}%
+ }{}%
}%
% <<<2
@@ -227,6 +973,56 @@
}%
% <<<2
+% Option to use a slash / as the daterangesep >>>2
+\DeclareBibliographyOption[boolean]{slashdaterange}[true]{%
+\renewrobustcmd*{\bibdaterangesep}{\slash}%
+}%
+\DeclareEntryOption[boolean]{slashdaterange}[true]{%
+\renewrobustcmd*{\bibdaterangesep}{\slash}%
+}%
+% <<<2
+
+% Options to define type of date per entrytype >>>2
+% Options to show only years
+\DeclareBiblatexOption{global, type, entry}[boolean]{dateyear}[true]{%
+\renewbibmacro*{date}{\mkdaterangeyear{}}%
+}%
+
+% Options to show years and months
+% O comando abaixo é o \mkdaterangeyear adaptado para não remover o mês
+\newrobustcmd*{\mkdaterangeyearmonth}[1]{%
+\begingroup
+ \clearfield{yeardivision}%
+ % \clearfield{#1month}%
+ \clearfield{day}%
+ \clearfield{hour}%
+ \clearfield{minute}%
+ \clearfield{second}%
+ \clearfield{timezone}%
+ \clearfield{endyeardivision}%
+ % \clearfield{#1endmonth}%
+ \clearfield{endday}%
+ \clearfield{endhour}%
+ \clearfield{endminute}%
+ \clearfield{endsecond}%
+ \clearfield{endtimezone}%
+ \ifdaterangesequal{#1}{#1end}
+ {\clearfield{#1endmonth}
+ \clearfield{#1endyear}}
+ {\ifdateyearsequal{#1}{#1end}
+ {\blx@imc@clearfield{#1endyear}}
+ {}%
+ }%
+ \mkdaterangefull{long}{#1}%
+\endgroup}
+\DeclareBiblatexOption{global, type, entry}[boolean]{datemonth}[true]{%
+\renewbibmacro*{date}{\mkdaterangeyearmonth{}}%
+}%
+% <<<2
+
+\DeclareFieldFormat{url}{\bibstring{urlfrom}\addcolon\addspace\url{#1}}%
+\DeclareFieldFormat{urldate}{\bibstring{urlseen}\addcolon\addspace #1}%
+
% <<<1
@@ -273,7 +1069,7 @@
}%
}% <<<2
-\DeclareSourcemap{%% >>>2
+\DeclareStyleSourcemap{%% >>>2
% This maps some fields used in abntex2cite to biblatex fields.
\maps[datatype=bibtex]{%
\map{%
@@ -287,19 +1083,19 @@
\step[fieldsource=furtherresp,fieldtarget=titleaddon]%
\step[typesource=journalpart,typetarget=supperiodical]%
}%
- \map[overwrite=false]{%
- \step[fieldsource=reprinted-from, final]%
- \step[fieldset=related, origfieldval]%
- }%
- \map[overwrite=false]{%
- \step[fieldsource=reprinted-text, final]%
- \step[fieldset=relatedtype, fieldvalue={reprintfrom}]%
- }%
- \map{%
- \pertype{patent}% Use the organization as sourcekey for patents
- \step[fieldsource=organization, final]%
- \step[fieldset=sortkey, origfieldval]%
- }%
+ \map[overwrite=false]{%
+ \step[fieldsource=reprinted-from, final]%
+ \step[fieldset=related, origfieldval]%
+ }%
+ \map[overwrite=false]{%
+ \step[fieldsource=reprinted-text, final]%
+ \step[fieldset=relatedtype, fieldvalue={reprintfrom}]%
+ }%
+ \map{%
+ \pertype{patent}% Use the organization as sourcekey for patents
+ \step[fieldsource=organization, final]%
+ \step[fieldset=sortkey, origfieldval]%
+ }%
\map[overwrite=false]{%
\pertype{thesis}%
\pertype{phdthesis}%
@@ -311,10 +1107,10 @@
}% <<<2
\DeclareDatamodelFields[type=field,datatype=literal]{%% >>>2
- section,%
- illustrated,%
- dimensions,%
- reprinted-text,%
+ section,%
+ illustrated,%
+ dimensions,%
+ reprinted-text,%
}% <<<2
\DeclareDatamodelEntryfields[monography]{%% >>>2
@@ -533,20 +1329,20 @@
}%
}%
\renewcommand*{\mkbibnamesuffix}[1]{\UpperOrSC{##1}}%
- \ifgiveninits{%
- \usebibmacro{name:family-given}%
+ \ifgiveninits{%
+ \usebibmacro{name:family-given}%
{\namepartfamily}%
- {\namepartgiveni}%
- {\namepartprefix}%
- {\namepartsuffix}%
- }{%
- \usebibmacro{name:family-given}%
+ {\namepartgiveni}%
+ {\namepartprefix}%
+ {\namepartsuffix}%
+ }{%
+ \usebibmacro{name:family-given}%
{\namepartfamily}%
- {\namepartgiven}%
- {\namepartprefix}%
- {\namepartsuffix}%
- }%
- \usebibmacro{name:andothers}%
+ {\namepartgiven}%
+ {\namepartprefix}%
+ {\namepartsuffix}%
+ }%
+ \usebibmacro{name:andothers}%
}% <<<
\DeclareNameAlias{default}{LAST-first}%
@@ -606,15 +1402,15 @@
% Standard entry fields >>>3
-\DeclareFieldFormat{authortype}{\printtext[parens]{\bibsentence#1}}%
-\DeclareFieldFormat{editortype}{\printtext[parens]{\bibsentence#1}}%
+\DeclareFieldFormat{authortype}{\printtext[parens]{\midsentence#1}}%
+\DeclareFieldFormat{editortype}{\printtext[parens]{\midsentence#1}}%
\DeclareFieldFormat{nameaddon}{\addspace #1}%
% titles >>>4
\renewcommand*{\subtitlepunct}{\addcolon\addspace}%
-\renewcommand*{\bibpagerefpunct}{\addcomma\addspace}%
+\renewcommand*{\bibpagerefpunct}{\addperiod\space}%
\DeclareFieldFormat{journaltitle}{%% >>>
\iftoggle{ittitles}{%
@@ -667,6 +1463,7 @@
incollection,%
bookinbook,%
inproceedings,%
+ inthesis,%
unpublished%
]{title}{\addspace #1\isdot}%% <<<
@@ -676,40 +1473,43 @@
\DeclareNumChars*{,-/}%
\newcommand{\abntnum}[1]{\ifrmnum{#1}{\rmntonum{#1}}{#1}}%
\DeclareFieldFormat*{number}{%% >>>
- \ifnumerals{#1}%
- {\addspace \MakeLowercase{\bibstring{number}}~\abntnum{#1}}%
- {\addspace #1\isdot}%
+ \ifnumerals{#1}%
+ {\addspace \MakeLowercase{\bibstring{number}}~\abntnum{#1}}%
+ {\addspace #1\isdot}%
}%% <<<
\DeclareFieldFormat[% number >>>
book,%
collection,%
- proceedings,%
- inproceedings,%
misc%
]{number}{\addcomma\addspace #1}%% <<<
+\DeclareFieldFormat[% number >>>
+ proceedings,%
+ inproceedings,%
+]{number}{\addspace #1}%% <<<
% <<<
\DeclareFieldFormat*{volume}{%% >>>4
- \ifnumerals{#1}%
- {\addspace \MakeLowercase{\bibstring{volume}}~#1}%
- {\addspace #1\isdot}%
+ \ifnumerals{#1}%
+ {\addspace \MakeLowercase{\bibstring{volume}}~#1}%
+ {\addspace #1\isdot}%
}%% <<<
\DeclareFieldFormat*{chapter}{%% >>>4
- \ifnumerals{#1}%
- {\addspace \MakeLowercase{\bibstring{chapter}~#1}}%
- {\addspace #1\isdot}%
+ \ifnumerals{#1}%
+ {\addspace \MakeLowercase{\bibstring{chapter}~#1}}%
+ {\addspace #1\isdot}%
}%% <<<
\DeclareFieldFormat{edition}{%% >>>4
- \ifnumerals{#1}%
- {\addspace #1\adddot\addspace\bibstring{edition}}%
- {\addspace #1\isdot}%
+ \ifnumerals{#1}%
+ {\addspace #1\adddot\addspace\bibstring{edition}}%
+ {\addspace #1\isdot}%
}%% <<<
\DeclareFieldFormat*{pages}{%% >>>4
- \MakeLowercase{\mkpageprefix[bookpagination]{#1}}%
+ \midsentence \MakeLowercase{\mkpageprefix[bookpagination]{#1}}%
}%% <<<
+% \xpretofieldformat{pages}{\midsentence}{}{} % Fix the capitalization of the page label
\DeclareFieldFormat*{pagetotal}{%% >>>4
\MakeLowercase{\mkpagetotal[bookpagination]{#1}}%
@@ -717,8 +1517,9 @@
\DeclareFieldFormat{illustrated}{\addspace #1\isdot}%
-\DeclareFieldFormat{url}{\bibstring{urlfrom}\addcolon\addspace<\url{#1}>}%
-\DeclareFieldFormat{urldate}{\bibstring{urlseen}\addcolon\addspace #1}%
+% remove <> in URLs according to abnt-6023:2018
+\DeclareFieldFormat{url}{\textmainlang{\bibstring{urlfrom}\addcolon\addspace \url{#1}}}
+\DeclareFieldFormat{urldate}{\textmainlang{\bibstring{urlseen}\addcolon\addspace #1}}%
\DeclareFieldFormat*{note}{\addspace #1}%
@@ -779,749 +1580,35 @@
}%% <<<
\DeclareFieldFormat{upperfirst}{%% >>>
- \iftoggle{scbib}{%
- \ifgiveninits{%
- \normalfont\FirstWordSC{#1}%
- }{%
- \normalfont\FirstWordLCSC{#1}%
- }%
- }{%
- \normalfont\FirstWordUpper{#1}%
- }%
-}%% <<<
-
-\DeclareListFormat{upperfirst}{%% >>>
- \usebibmacro{list:delim}{#1}%
- \iftoggle{scbib}{%
- \ifgiveninits{%
- \normalfont\FirstWordSC{#1}%
- }{%
- \normalfont\FirstWordLCSC{#1}%
- }%
- }{%
- \normalfont\FirstWordUpper{#1}%
- }%
- \isdot%
- \usebibmacro{list:andothers}%
-}%% <<<
-
-% <<<
-
-\DeclareFieldFormat{normalfont}{\normalfont{#1}}%
-
-% <<<2
-
-% <<<1
-
-
-% Macros >>>1
-
-% Dashed option >>>2
-
-\newbool{bbx@inset}%
-
-\newtoggle{isdashed}%
-
-\newcommand*{\bibnameunderscore}{\underline{\hspace*{4em}}}%
-\newcommand*{\nopunctdash}{\bibnameunderscore\addspace}%
-\renewcommand*{\bibnamedash}{\bibnameunderscore\addperiod\addspace}%
-
-\renewbibmacro*{begrelated}{%% >>>3
- \booltrue{bbx@inset}%
-}%% <<<3
-
-\newbibmacro*{bbx:savehash}{%% >>>3
- \savefield{fullhash}{\bbx@lasthash}%
-}%% <<<3
-
-\newbibmacro*{bbx:saveorg}{%% >>>3
- \savelist{organization}{\bbx@lastorg}%
-}%% <<<3
-
-\newbibmacro*{bbx:savetitle}{%% >>>3
- \savefield{title}{\bbx@lasttitle}%
-}%% <<<3
-
-\newbibmacro*{bbx:savesubtitle}{%% >>>3
- \savefield{subtitle}{\bbx@lastsubtitle}%
-}%% <<<3
-
-\newbibmacro*{bbx:dashcheck}[2]{%% >>>3
- \ifboolexpr{%
- (%
- test {\iffieldequals{fullhash}{\bbx@lasthash}}%
- or%
- test {\iflistequals{organization}{\bbx@lastorg}}%
- )%
- and%
- not test \iffirstonpage%
- and%
- not test {\iftoggle{repeatfields}}%
- and%
- not test {\iftoggle{repeatfirstfields}}%
- and%
- (%
- not bool {bbx@inset}%
- or%
- test {\iffieldequalstr{entrysetcount}{1}}%
- )%
- }%
- {\settoggle{isdashed}{true}#1}%
- {\settoggle{isdashed}{false}#2}%
-}%% <<<3
-
-\newbibmacro*{bbx:titledashcheck}[2]{%% >>>3
- \iftoggle{isdashed}{%
- \ifboolexpr{%
- test {\iffieldequals{title}{\bbx@lasttitle}}%
- and%
- (%
- test {\iffieldequals{subtitle}{\bbx@lastsubtitle}}%
- or%
- test {\iffieldundef{subtitle}}%
- )%
- and%
- not test {\iftoggle{repeattitle}}%
- }%
- {#1}%
- {#2}%
- }{%
- #2%
- }%
-}%% <<<3
-
-\newbibmacro*{bbx:ineditordashcheck}[2]{%% >>>3
- \ifboolexpr{%
- test {\ifnamesequal{editor}{author}}%
- and%
- not test {\iftoggle{repeatfields}}%
- and%
- (%
- not bool {bbx@inset}%
- or%
- test {\iffieldequalstr{entrysetcount}{1}}%
- )%
- }%
- {\settoggle{isdashed}{true}#1}%
- {\settoggle{isdashed}{false}#2}%
-}%% <<<3
-
-% <<<2
-
-% Titles >>>2
-
-\newbibmacro*{titleiskey}[2]{%% >>>3
-\ifboolexpr{%
- test {\ifnameundef{author}}%
- and%
- test {\ifnameundef{editor}}%
- and%
- test {\ifnameundef{holder}}%
- and%
- test {\ifcsundef{saveded}}%
- and%
- test {\ifcsundef{savedorg}}%
- and%
- test {\iffieldundef{eventtitle}}%
-}%
- {#1}%
- {#2}%
-}%% <<<3
-
-\renewbibmacro*{title}{%% >>>3
- \ifboolexpr{%
- test {\iffieldundef{title}}%
- and%
- test {\iffieldundef{subtitle}}%
- }%
- {\global\undef\bbx@lasttitle%
- \global\undef\bbx@lastsubtitle}%
- {\usebibmacro{bbx:titledashcheck}%
- {\unspace\bibnamedash}%
- {\usebibmacro{bbx:savetitle}%
- \usebibmacro{bbx:savesubtitle}%
- \printtext[title]{%
- \usebibmacro{titleiskey}%
- {\unspace\printfield[upperfirst]{title}}%
- {\ifboolexpr{%
- test {\iffieldundef{maintitle}}%
- and%
- test {\iffieldundef{related}}%
- }%
- {\printfield[titlecase]{title}}%
- {\printfield[normalfont]{title}}}%
- \normalfont{%
- \iffieldendswithpunct{title}{%
- \setunit*{\addspace}%
- }{%
- \setunit*{\subtitlepunct}%
- }
- \printfield[normalfont]{subtitle}%
- \setunit{\addperiod\addspace}%
- }}%
- \newunit}}%
- \printfield{titleaddon}%
-}%% <<<3
-
-\newbibmacro*{booktitleiskey}[2]{%% >>>3
-\ifboolexpr{%
- test {\ifnameundef{bookauthor}}%
- and%
- test {\ifnameundef{editor}}%
- and%
- test {\iffieldundef{organization}}%
- and%
- test {\ifcsundef{saveded}}%
- and%
- test {\ifcsundef{savedorg}}%
- and%
- test {\iffieldundef{eventtitle}}%
-}%
- {#1}%
- {#2}%
-}%% <<<3
-
-\renewbibmacro*{booktitle}{%% >>>3
- \ifboolexpr{%
- test {\iffieldundef{booktitle}}%
- and%
- test {\iffieldundef{booksubtitle}}%
- }%
- {}%
- {\printtext[booktitle]{%
- \usebibmacro{booktitleiskey}{%
- \printfield[upperfirst]{booktitle}%
- }{%
- \printfield[titlecase]{booktitle}%
- }%
- \iffieldendswithpunct{booktitle}{%
- \normalfont{\setunit*{\addspace}}%
- }{%
- \normalfont{\setunit*{\subtitlepunct}}%
- }
- \printfield[normalfont]{booksubtitle}}%
- \newunit}%
- \printfield{booktitleaddon}%
-}%% <<<3
-
-\renewbibmacro*{maintitle}{%% >>>3
- \ifboolexpr{%
- test {\iffieldundef{maintitle}}%
- and%
- test {\iffieldundef{mainsubtitle}}%
- }%
- {}%
- {\printtext[maintitle]{%
- \usebibmacro{titleiskey}{%
- \printfield[upperfirst]{maintitle}%
- }{%
- \printfield[titlecase]{maintitle}%
- }%
- \iffieldendswithpunct{maintitle}{%
- \normalfont{\setunit*{\addspace}}%
- }{%
- \normalfont{\setunit*{\subtitlepunct}}%
- }
- \printfield[normalfont]{mainsubtitle}}%
- \newunit}%
- \printfield{maintitleaddon}%
-}%% <<<3
-
-\newbibmacro*{in:maintitle}{%% >>>3
- \iffieldundef{maintitle}{}{%
- \usebibmacro{in:}%
- \iftoggle{repeatfields}%
- {\addspace\usebibmacro{author/editor+others}}%
- {\addspace\bibnamedash}%
- \newunit%
- \usebibmacro{maintitle}%
- }%
-}%% <<<3
-
-\renewbibmacro*{maintitle+booktitle}{%% >>>3
- \iffieldundef{maintitle}%
- {}%
- {\usebibmacro{maintitle}%
- \newunit\newblock%
- \iffieldundef{volume}%
- {}%
- {\printfield{volume}%
- \printfield{part}%
- \setunit{\addcolon\addspace}}}%
- \usebibmacro{booktitle}%
- \newunit%
-}%% <<<3
-
-\newbibmacro*{maintitle/booktitle}{%% >>>3
- \iffieldundef{maintitle}%
- {\usebibmacro{booktitle}}%
- {\usebibmacro{maintitle}}%
-}%% <<<3
-
-\renewbibmacro*{journal}{%% >>>3
- \iffieldundef{journaltitle}%
- {}%
- {\printtext[journaltitle]{%
- \printfield[titlecase]{journaltitle}%
- \iffieldendswithpunct{journaltitle}{%
- \setunit{\addspace}%
- }{%
- \setunit{\subtitlepunct}%
- }
- \printfield[normalfont]{journalsubtitle}}}%
-}%% <<<3
-
-\newbibmacro{journal+section}{%% >>>3
- \usebibmacro{journal}%
- \iffieldundef{section}%
- {}%
- {\setunit{\addspace\textendash\addspace}%
- \printfield{section}}%
-}%% <<<3
-
-\renewbibmacro*{journal+issuetitle}{%% >>>3
- \usebibmacro{journal}%
- \setunit*{\addcomma\addspace}%
- \iffieldundef{series}%
- {}%
- {\newunit%
- \printfield{series}%
- \setunit{\addspace}}%
- \usebibmacro{volume+number+eid}%
- \newunit%
-}%% <<<3
-
-\renewbibmacro*{periodical}{%% >>>3
- \iffieldundef{title}{}{%
- \printtext[title]{%
- \iffieldundef{issue}{%
- \unspace\printfield[upperfirst]{title}%
- }{%
- \printfield[titlecase]{title}%
- }
- \normalfont{%
- \iffieldendswithpunct{title}{%
- \setunit*{\addspace}%
- }{%
- \setunit*{\subtitlepunct}%
- }
- \printfield[normalfont]{subtitle}%
- }%
- }%
- }%
-}%% <<<3
-
-% <<<2
-
-% Names >>>2
-
-\renewbibmacro*{author}{%% >>>3
- \ifboolexpr{%
- test \ifuseauthor%
- and%
- not test {\ifnameundef{author}}%
- }{%
- \usebibmacro{bbx:dashcheck}{%
- \iffieldundef{authortype}{%
- \bibnamedash%
- \newunit%
- \printfield{nameaddon}%
- }{%
- \nopunctdash%
- \usebibmacro{authorstrg}%
- \newunit%
- \printfield{nameaddon}%
- }%
- }{%
- \usebibmacro{bbx:savehash}%
- \printnames{author}%
- \addspace%
- \usebibmacro{authorstrg}%
- \newunit%
- \printfield{nameaddon}%
- }%
- }{%
- \global\undef\bbx@lasthash%
- }%
-}%% <<<3
-
-\renewbibmacro*{editor+others}{%% >>>3
- \ifboolexpr{%
- test \ifuseeditor%
- and%
- not test {\ifnameundef{editor}}%
- }{%
- \usebibmacro{bbx:dashcheck}{%
- \iffieldundef{editortype}{%
- \bibnamedash%
- }{%
- \nopunctdash%
- \usebibmacro{editor+othersstrg}%
- }%
- }{%
- \usebibmacro{bbx:savehash}%
- \printnames{editor}%
- \setunit{\addspace}%
- \usebibmacro{editor+othersstrg}%
- }%
- \savenamecs*{editor}{saveded}%
- \clearname{editor}%
- }{%
- \global\undef\bbx@lasthash%
- \usebibmacro{organization}%
- }%
-}%% <<<3
-
-\renewbibmacro*{byeditor+others}{%% >>>3
- \toggletrue{byeditor+others}%
- \ifnameundef{editor}{}{% else
- \usebibmacro{byeditor+othersstrg}%
- \setunit*{\addspace}%
- \printnames[byeditor]{editor}%
- \clearname{editor}%
- \newunit%
- }%
- \usebibmacro{byeditorx}%
- \usebibmacro{bytranslator+others}%
- \togglefalse{byeditor+others}%
-}%% <<<3
-
-\newbibmacro*{organization}{%% >>>3
- \iflistundef{organization}%
- {\global\undef\bbx@lastorg}%
- {\usebibmacro{bbx:dashcheck}%
- {\bibnamedash}%
- {\usebibmacro{bbx:saveorg}%
- \printlist[uppercase]{organization}}%
- \savelistcs*{organization}{savedorg}%
- \clearlist{organization}%
- \newunit%
- \printfield{nameaddon}}%
-}%% <<<3
-
-\newbibmacro*{author/organization}{%% >>>3
- \ifnameundef{author}%
- {\usebibmacro{organization}}%
- {\usebibmacro{author}}%
-}%% <<<3
-
-\newbibmacro*{editor+others/organization}{%% >>>3
- \ifnameundef{editor}%
- {\usebibmacro{organization}}%
- {\usebibmacro{editor+others}}%
-}%% <<<3
-
-\newbibmacro*{organization/eventtitle}{%% >>>3
- \iffieldundef{eventtitle}%
- {\usebibmacro{organization}}%
- {\printfield[uppercase]{eventtitle}}%
-}%% <<<3
-
-\newbibmacro*{bookauthor/editor+others}{%% >>>3
- \ifnameundef{bookauthor}{%
- \usebibmacro{editor+others}}%
- {\printnames{bookauthor}}%
-}%% <<<3
-
-\newbibmacro*{in:bookauthor+others}{%% >>>3
- \usebibmacro{in:}%
- \ifnameundef{bookauthor}{%
- % do nothing
- }{% else
- \ifnamesequal{author}{bookauthor}{%
- \iftoggle{repeatfields}{%
- \usebibmacro{author/editor+others}%
- }{% else
- \bibnamedash%
- }%
- }{% else
- \printnames{bookauthor}%
- }%
- }%
-}%% <<<3
-
-\newbibmacro*{in:editor+others}{%% >>>3
- \usebibmacro{in:}%
- \addspace%
- \ifnameundef{editor}{%
- \printlist[uppercase]{organization}%
- }{%
- \usebibmacro{bbx:ineditordashcheck}{%
- \iffieldundef{editortype}{%
- \bibnamedash%
- }{%
- \nopunctdash%
- \usebibmacro{editor+othersstrg}%
- \savenamecs*{editor}{saveded}%
- \clearname{editor}%
- }%
- }{%
- \printnames{editor}%
- \setunit*{\addspace}%
- \usebibmacro{editor+othersstrg}%
- \savenamecs*{editor}{saveded}%
- \clearname{editor}%
- }%
- }%
-}%% <<<3
-
-\newbibmacro*{in:eventtitle/organization/editor}{%% >>>3
- \usebibmacro{in:}%
- \iffieldundef{eventtitle}{%
- \ifnameundef{editor}{%
- \printlist[uppercase]{organization}%
- \clearlist{organization}%
- }{%
- \usebibmacro{editor+others}%
- }%
- }{%
- \printfield[uppercase]{eventtitle}%
- }%
-}%% <<<3
-
-% <<<2
-
-% Publisher, location, date, issue >>>2
-
-\renewbibmacro*{date}{%
- \iftoggle{extradate}{%
- \printdateextra%
- }{%
- \printdate%
- }%
- \printunit{\addperiod\addspace}%
-}%
-
-\newbibmacro*{publisher}{%% >>>3
- \iflistundef{publisher}%
- {\iftoggle{nosn}{}{\printtext[brackets]{\bibstring{sinenomine}}}}%
- {\printlist{publisher}}%
-}%% <<<3
-
-\newbibmacro*{location}{%% >>>3
- \iflistundef{location}%
- {\iftoggle{nosl}{}{\printtext[brackets]{\bibstring{sineloco}}}}%
- {\printlist{location}}%
-}%% <<<3
-
-\newbibmacro*{venue}{%% >>>3
- \iffieldundef{venue}%
- {\iftoggle{nosl}{}{\printtext[brackets]{\bibstring{sineloco}}}}%
- {\printfield{venue}}%
-}%% <<<3
-
-\renewbibmacro*{location+date}{%% >>>3
- \usebibmacro{location}%
- \setunit*{\addcomma\addspace}%
- \usebibmacro{date}%
- \newunit%
-}%% <<<3
-
-\renewbibmacro*{publisher+location+date}{%% >>>3
- \ifboolexpr{%
- test {\iflistundef{publisher}}%
- and%
- test {\iflistundef{location}}%
- and%
- not test {\iftoggle{nosl}}%
- and%
- not test {\iftoggle{nosn}}%
- }{%
- \printtext[brackets]{\bibstring{sineloco}%
- \setunit{\addcolon\addnbspace}%
- \bibstring{sinenomine}}%
- }{%
- \ifboolexpr{%
- test {\ifnameundef{author}}%
- and%
- test {\ifnameundef{editor}}%
- and%
- test {\iflistundef{publisher}}%
- and%
- not test {\iflistundef{organization}}%
- }{%
- \usebibmacro{location}%
+ \iftoggle{scbib}{%
+ \ifgiveninits{%
+ \normalfont\FirstWordSC{#1}%
}{%
- \usebibmacro{location}%
- \setunit*{\addcolon\addspace}%
- \usebibmacro{publisher}%
+ \normalfont\FirstWordLCSC{#1}%
}%
- }%
- \setunit*{\addcomma\addspace}%
- \usebibmacro{date}%
- \newunit%
-}%% <<<3
-
-\renewbibmacro*{issue}{%% >>>3
- \iffieldundef{issuetitle}%
- {}%
- {\printtext[issuetitle]{%
- \printfield[upperfirst]{issuetitle}%
- \iffieldendswithpunct{issuetitle}{%
- \setunit*{\addspace}%
- }{%
- \setunit*{\subtitlepunct}%
- }
- \printfield[normalfont]{issuesubtitle}}}%
-}%% <<<3
-
-\renewbibmacro*{issue+date}{%% >>>3
- \iffieldundef{issue}%
- {\usebibmacro{date}}%
- {\printfield{issue}%
- \setunit*{\addspace}%
- \usebibmacro{date}}%
- \newunit%
-}%% <<<3
-
-\newbibmacro*{publisher+location+issue+date}{%% >>>3
- \ifboolexpr{%
- test {\iflistundef{publisher}}%
- and%
- test {\iflistundef{location}}%
- and%
- not test {\iftoggle{nosl}}%
- and%
- not test {\iftoggle{nosn}}%
- }{%
- \printtext[brackets]{\bibstring{sineloco}%
- \setunit{\addcolon\addnbspace}%
- \bibstring{sinenomine}}%
}{%
- \ifboolexpr{%
- test {\ifnameundef{author}}%
- and%
- test {\ifnameundef{editor}}%
- and%
- test {\iflistundef{publisher}}%
- and%
- not test {\iflistundef{organization}}%
- }{%
- \usebibmacro{location}%
- }{%
- \usebibmacro{location}%
- \setunit*{\addcolon\addspace}%
- \usebibmacro{publisher}%
- }%
+ \normalfont\FirstWordUpper{#1}%
}%
- \setunit*{\addcomma\addspace}%
- \printfield[number]{issue}%
- \setunit*{\addcomma\addspace}%
- \usebibmacro{date}%
- \newunit%
-}%% <<<3
-
-% <<<2
-
-% Misc >>>2
-
-\renewbibmacro*{volume+number+eid}{%% >>>3
- \printfield{volume}%
- \setunit*{\addcomma\addspace}%
- \printfield{number}%
- \setunit{\addcomma\addspace}%
- \printfield{eid}%
-}%% <<<3
-
-\renewbibmacro*{series+number}{%% >>>3
- \iffieldundef{series}{}{%
- \printtext[parens]{%
- \printfield{series}%
- \setunit*{\addcomma\addspace}%
- \printfield[normalfont]{number}%
- \newunit}%
- }%
-}%% <<<3
-
-\renewbibmacro*{url+urldate}{%% >>>3
- \usebibmacro{url}%
- \iffieldundef{urlyear}%
- {}%
- {\setunit*{\addperiod\addspace}%
- \usebibmacro{urldate}}%
-}%% <<<3
-
-\newbibmacro*{mathesis}{%% >>>3
- \iffieldundef{type}{%
- \bibstring{dissertation}\addspace\printtext[parens]{\bibstring{mathesis}}%
- }{%
- \bibstring{dissertation}\addspace\printtext[parens]{\printfield{type}}%
- }%
-}%% <<<3
-
-\newbibmacro*{phdthesis}{%% >>>3
- \iffieldundef{type}{%
- \bibstring{thesis}\addspace\printtext[parens]{\bibstring{phdthesis}}%
- }{%
- \bibstring{thesis}\addspace\printtext[parens]{\printfield{type}}%
- }%
-}%% <<<3
-
-\newbibmacro*{language}{%% >>>3
- \ifboolexpr{%
- test {\iflistundef{language}}%
- or%
- test {\iflistundef{origlanguage}}%
- }%
- {}%
- {%
- \printtext{\printlist{language}\addspace\printlist{origlanguage}}%
- }%
-}%% <<<3
-
-\renewbibmacro*{related:reprintfrom}[1]{%% >>>3
- \entrydata*{#1}{%
- \usedriver%
- {\ifnameundef{savedauthor}%
- {\ifnameundef{savededitor}%
- {}%
- {\ifnamesequal{editor}{savededitor}%
- {\clearname{editor}}%
- {}}}%
- {\ifnamesequal{author}{savedauthor}%
- {\clearname{author}}%
- {}}%
- \renewbibmacro*{related:init}{}%
- \DeclareNameAlias{sortname}{default}%
- \ifbibmacroundef{date+extradate}%
- {}%
- {\renewbibmacro*{date+extradate}{}%
- \renewbibmacro*{date}{\printdate}}%
- \renewbibmacro*{pageref}{}}%
- {\thefield{entrytype}}}%
-}%% <<<3
+}%% <<<
-\renewbibmacro*{pageref}{% >>>3
- \iftoggle{backref}{%
- \iftoggle{citecount}{%
- \printunit{\addperiod\addspace}%
- \iflistundef{pageref}{%
- \bibstring{citecountnopage}%
+\DeclareListFormat{upperfirst}{%% >>>
+ \usebibmacro{list:delim}{#1}%
+ \iftoggle{scbib}{%
+ \ifgiveninits{%
+ \normalfont\FirstWordSC{#1}%
}{%
- \printtext{%
- \ifnumgreater{\value{pageref}}{1}{%
- \bibstring{citecountpages}\ppspace%
- }{%
- \bibstring{citecountpage}\ppspace%
- }%
- \printlist[pageref][-\value{listtotal}]{pageref}%
- }%
+ \normalfont\FirstWordLCSC{#1}%
}%
}{%
- \iflistundef{pageref}{}{%
- \printunit{\addperiod\addspace}%
- \printtext{%
- \ifnumgreater{\value{pageref}}{1}{%
- \bibstring{backrefpages}\ppspace%
- }{%
- \bibstring{backrefpage}\ppspace%
- }%
- \printlist[pageref][-\value{listtotal}]{pageref}%
- }%
- }%
+ \normalfont\FirstWordUpper{#1}%
}%
- }{}
-}% <<<3
+ \isdot%
+ \usebibmacro{list:andothers}%
+}%% <<<
+
+% <<<
+
+\DeclareFieldFormat{normalfont}{\normalfont{#1}}%
% <<<2
@@ -1581,7 +1668,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -1651,7 +1738,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -1709,7 +1796,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -1777,7 +1864,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -1839,7 +1926,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -1909,7 +1996,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -1965,7 +2052,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -2033,7 +2120,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -2095,7 +2182,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -2147,7 +2234,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -2225,7 +2312,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -2276,7 +2363,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -2344,7 +2431,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -2407,7 +2494,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -2456,8 +2543,8 @@
and%
test {\iffieldundef{maintitle}}%
}%
- {}%
- {\usebibmacro{publisher+location+date}}%
+ {}%
+ {\usebibmacro{publisher+location+date}}%
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\iffieldundef{maintitle}%
@@ -2492,7 +2579,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -2557,7 +2644,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -2609,7 +2696,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -2622,6 +2709,66 @@
\usebibmacro{finentry}%
}%% <<<2
+\DeclareBibliographyDriver{inthesis}{%% >>>2
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others}%
+ \setunit{\labelnamepunct}%
+ \usebibmacro{title}%
+ \newunit%
+ \newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \usebibmacro{in:bookauthor+others}%
+ \newunit%
+ \newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \usebibmacro{maintitle/booktitle}%
+ \newunit%
+ \newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \usebibmacro{date}%
+ \newunit%
+ \newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % \usebibmacro{chapter+pages}%
+ % \newunit%
+ \printfield{pagetotal}%
+ \newunit%
+ \newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \printfield{type}%
+ \setunit*{\addspace\textendash\addspace}%
+ \newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \printlist{institution}%
+ \setunit*{\addcomma\addspace}%
+ \newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \printlist{location}%
+ \setunit*{\addcomma\addspace}%
+ \printeventdate%
+ \newunit%
+ \newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \printfield{pages}%
+ \newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \printfield{note}%
+ \newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \printunit{\addperiod\addspace}%
+ \iftoggle{bbx:isbn}%
+ {\printfield{isbn}}%
+ {}%
+ \newunit%
+ \newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \usebibmacro{doi+eprint+url}%
+ \newunit%
+ \newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}%
+ \newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \usebibmacro{pageref}%
+ \setunit*{\addperiod\addspace}%
+ \newunit%
+ \newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \iftoggle{bbx:related}%
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}%
+ {}%
+ \usebibmacro{finentry}%
+}%% >>>2
+
\DeclareBibliographyDriver{misc}{%% >>>2
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
@@ -2680,7 +2827,7 @@
\newunit%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{addendum+pubstate}%
- \setunit*{\bibpagerefpunct}%
+ \setunit{\bibpagerefpunct}%
\newblock%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usebibmacro{pageref}%
\setunit*{\addperiod\addspace}%
@@ -2709,4 +2856,3 @@
% vim: set foldmarker=\ >>>,\ <<< :
-
diff --git a/Master/texmf-dist/tex/latex/biblatex-abnt/abnt.cbx b/Master/texmf-dist/tex/latex/biblatex-abnt/abnt.cbx
index 7deb3e81993..f958454c0ec 100644
--- a/Master/texmf-dist/tex/latex/biblatex-abnt/abnt.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-abnt/abnt.cbx
@@ -46,6 +46,11 @@
\settoggle{sccite}{#1}%
}% <<<2
+\newtoggle{accite}% >>>2
+\DeclareBibliographyOption{accite}[true]{%
+ \settoggle{accite}{#1}%
+}% <<<2
+
% <<<1
% Format >>>1
@@ -69,6 +74,18 @@
}%
}% <<<3
+\newcommand*{\NormalOrACCiteOrSCCite}[1]{% >>>3
+ \iftoggle{accite}{%
+ \MakeUppercase{#1}%
+ }{%
+ \iftoggle{sccite}{%
+ \textsc{\MakeLowercase{#1}}%
+ }{%
+ \MakeCapital{#1}%
+ }%
+ }%
+}% <<<3
+
% \mkbibname* >>>3
% \IfGivenIsInit >>>4
@@ -90,7 +107,7 @@
\let\origmkbibnamesuffix\mkbibnamesuffix%
\renewcommand*{\mkbibnamefamily}[1]{% >>>4
- \UpperOrSCCite{#1}%
+ \NormalOrACCiteOrSCCite{#1}%
}% <<<4
\renewcommand*{\mkbibnamegiven}[1]{% >>>4
\ifnumequal{\value{uniquename}}{2}{%
@@ -101,13 +118,13 @@
}% <<<4
\renewcommand*{\mkbibnameprefix}[1]{% >>>4
\ifuseprefix{%
- \UpperOrSCCite{#1}%
+ \NormalOrACCiteOrSCCite{#1}%
}{%
\ifnumequal{\value{uniquename}}{2}{#1}{\NormalOrSCCite{#1}}%
}%
}% <<<4
\renewcommand*{\mkbibnamesuffix}[1]{% >>>4
- \UpperOrSCCite{#1}%
+ \NormalOrACCiteOrSCCite{#1}%
}% <<<4
\AtBeginBibliography{%
@@ -518,6 +535,27 @@
}%
}% <<<3
+\newbibmacro*{citetitlestar}{% >>>3
+ \printtext[bibhyperref]{\textit{\printfield[labeltitle]{labeltitle}}}%
+ \setunit{\global\booltrue{cbx:parens}\addspace\bibopenparen}%
+ \ifnumequal{\value{citecount}}{1}{\usebibmacro{prenote}}{}%
+ \iffieldundef{shorthand}{%
+ \usebibmacro{cite:labeldate+extradate}%
+ }{%
+ \usebibmacro{cite:shorthand}%
+ }%
+ \stepcounter{textcitecount}%
+ \setunit{%
+ \ifbool{cbx:parens}{\bibcloseparen\global\boolfalse{cbx:parens}}{}%
+ % Use `\bibstring{and}` before the last name and commas before the rest
+ \ifnumequal{\value{textcitecount}}{\value{textcitetotal}-1}{%
+ \finalnamedelim%
+ }{%
+ \multinamedelim%
+ }%
+ }%
+}% <<<3
+
\DeclareCiteCommand{\cbx@citetitle}% >>>3
{\usebibmacro{cite:init}}%
{\usebibmacro{citeindex}%
@@ -525,6 +563,13 @@
{}%
{\usebibmacro{textcite:postnote}}% <<<3
+\DeclareCiteCommand{\cbx@citetitlestar}% >>>3
+ {\usebibmacro{cite:init}}%
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citetitlestar}}%
+ {}%
+ {\usebibmacro{textcite:postnote}}% <<<3
+
\DeclareCiteCommand{\citetitle}[\cbx@textcite@init\cbx@citetitle]% >>>3
{\gdef\cbx@savedkeys{}%
\citetrackerfalse%
@@ -544,6 +589,25 @@
{\protected@xappto\cbx@savedcites{%
[\thefield{prenote}][\thefield{postnote}]{\cbx@savedkeys}}}% <<<3
+\DeclareCiteCommand*{\citetitle}[\cbx@textcite@init\cbx@citetitlestar]% >>>3
+ {\gdef\cbx@savedkeys{}%
+ \citetrackerfalse%
+ \pagetrackerfalse%
+ \DeferNextCitekeyHook%
+ \usebibmacro{cite:init}}%
+ {\ifthenelse{\iffirstcitekey\AND\value{multicitetotal}>0}%
+ {\protected@xappto\cbx@savedcites{()(\thefield{multipostnote})}%
+ \global\clearfield{multipostnote}}%
+ {}%
+ \xappto\cbx@savedkeys{\thefield{entrykey},}%
+ \iffieldequals{namehash}{\cbx@lasthash}%
+ {}%
+ {\stepcounter{textcitetotal}%
+ \savefield{namehash}{\cbx@lasthash}}}%
+ {}%
+ {\protected@xappto\cbx@savedcites{%
+ [\thefield{prenote}][\thefield{postnote}]{\cbx@savedkeys}}}% <<<3
+
% <<<2
% \apud >>>2
diff --git a/Master/texmf-dist/tex/latex/biblatex-abnt/brazilian-abnt.lbx b/Master/texmf-dist/tex/latex/biblatex-abnt/brazilian-abnt.lbx
index 8b730ba0d51..7cebd5c2125 100644
--- a/Master/texmf-dist/tex/latex/biblatex-abnt/brazilian-abnt.lbx
+++ b/Master/texmf-dist/tex/latex/biblatex-abnt/brazilian-abnt.lbx
@@ -41,6 +41,25 @@
\thefield{#1}}%
}%
+
+% Months abbreviations >>>2
+
+\DeclareBibliographyStrings{%
+ january = {{janeiro}{jan\adddot}},%
+ february = {{fevereiro}{fev\adddot}},%
+ march = {{mar\c{c}o}{mar\adddot}},%
+ april = {{abril}{abr\adddot}},%
+ may = {{maio}{maio}},%
+ june = {{junho}{jun\adddot}},%
+ july = {{julho}{jul\adddot}},%
+ august = {{agosto}{ago\adddot}},%
+ september = {{setembro}{set\adddot}},%
+ october = {{outubro}{out\adddot}},%
+ november = {{novembro}{nov\adddot}},%
+ december = {{dezembro}{dez\adddot}},%
+}
+% <<<2
+
% <<<
% Publication details >>>1
@@ -69,8 +88,8 @@
involumes = {{in}{in}},%
in = {{in}{in}},%
inseries = {{in}{in}},%
- sineloco = {{sine loco}{s\adddot l\adddot}},%
- sinenomine = {{sine nomine}{s\adddot n\adddot}},%
+ sineloco = {{sine loco}{s\adddot~l\adddot}},%
+ sinenomine = {{sine nomine}{s\adddot~n\adddot}},%
urlfrom = {{dispon\'ivel em}{dispon\'ivel em}},%
urlseen = {{acesso em}{acesso em}},%
sheet = {{folha}{f\adddot}},%
diff --git a/Master/texmf-dist/tex/latex/biblatex-abnt/english-abnt.lbx b/Master/texmf-dist/tex/latex/biblatex-abnt/english-abnt.lbx
index 41792e3a4e5..f12e44f2863 100644
--- a/Master/texmf-dist/tex/latex/biblatex-abnt/english-abnt.lbx
+++ b/Master/texmf-dist/tex/latex/biblatex-abnt/english-abnt.lbx
@@ -43,6 +43,23 @@
\thefield{#1}}%
}%
+% Months abbreviations >>>2
+\DeclareBibliographyStrings{%
+ january = {{January}{Jan\adddot}},
+ february = {{February}{Feb\adddot}},
+ march = {{March}{Mar\adddot}},
+ april = {{April}{Apr\adddot}},
+ may = {{May}{May}},
+ june = {{June}{June}},
+ july = {{July}{July}},
+ august = {{August}{Aug\adddot}},
+ september = {{September}{Sept\adddot}},
+ october = {{October}{Oct\adddot}},
+ november = {{November}{Nov\adddot}},
+ december = {{December}{Dec\adddot}},
+}
+% <<<2
+
% <<<
% Publication details >>>1
@@ -68,8 +85,8 @@
involumes = {{in}{in}},%
in = {{in}{in}},%
inseries = {{in}{in}},%
- sineloco = {{sine loco}{s\adddot l\adddot}},%
- sinenomine = {{sine nomine}{s\adddot n\adddot}},%
+ sineloco = {{sine loco}{s\adddot~l\adddot}},%
+ sinenomine = {{sine nomine}{s\adddot~n\adddot}},%
sheet = {{sheet}{s\adddot}},%
sheets = {{sheets}{s\adddot}},%
illustrated = {{illustrated}{il\adddot}},%
diff --git a/Master/texmf-dist/tex/latex/biblatex-abnt/french-abnt.lbx b/Master/texmf-dist/tex/latex/biblatex-abnt/french-abnt.lbx
new file mode 100644
index 00000000000..bc6fd096fef
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-abnt/french-abnt.lbx
@@ -0,0 +1,202 @@
+%% Copyright 2021 Daniel Ballester Marques
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Daniel Ballester Marques.
+%%
+%% Tradução para o espanhol de Leonardo Araujo. Obrigado!
+
+\ProvidesFile{french-abnt.lbx}%
+[2021-02-04\space v3.4\space ABNT BibLaTeX citation style]%
+
+
+% Init >>>
+
+\InheritBibliographyExtras{french}%
+\InheritBibliographyStrings{french}
+\DeclareBibliographyStrings{%
+ inherit = {french},%
+}%
+
+% <<<
+
+% No preposition between month and year >>>1
+
+\DeclareBibliographyExtras{%
+ \protected\def\mkbibdatelong#1#2#3{%
+ \iffieldundef{#3}%
+ {}%
+ {\stripzeros{\thefield{#3}}%
+ \iffieldundef{#2}{}{\addspace}}%
+ \iffieldundef{#2}%
+ {}%
+ {\mkbibmonth{\thefield{#2}}%
+ \iffieldundef{#1}{}{\addspace}}%
+ \thefield{#1}}%
+}%
+
+% Months abbreviations >>>2
+
+\DeclareBibliographyStrings{%
+ january = {{janvier}{janv\adddot}},
+ february = {{f\'evrier}{f\'evr\adddot}},
+ march = {{mars}{mars}},
+ april = {{avril}{avril}},
+ may = {{mai}{mai}},
+ june = {{juin}{juin}},
+ july = {{juillet}{juil\adddot}},
+ august = {{ao\^ut}{ao\^ut}},
+ september = {{septembre}{sept\adddot}},
+ october = {{octobre}{oct\adddot}},
+ november = {{novembre}{nov\adddot}},
+ december = {{d\'ecembre}{d\'ec\adddot}},
+}
+% <<<2
+
+% <<<
+
+% Publication details >>>1
+
+\NewBibliographyString{%
+ apud,%
+ sineloco,%
+ sinenomine,%
+ sheet,%
+ sheets,%
+ illustrated,%
+ monography,%
+ recensionof,%
+}%
+
+\DeclareBibliographyStrings{%
+ apud = {{apud}{apud}},%
+ idem = {{idem}{id\adddot}},%
+ volume = {{volume}{v\adddot}},%
+ volumes = {{volumes}{v\adddot}},%
+ number = {{num\'ero}{n\adddot}},%
+ pages = {{pages}{p\adddot}},%
+ involumes = {{in}{in}},%
+ in = {{in}{in}},%
+ inseries = {{in}{in}},%
+ sineloco = {{sine loco}{s\adddot l\adddot}},%
+ sinenomine = {{sine nomine}{s\adddot n\adddot}},%
+ sheet = {{feuille}{f\adddot}},%
+ sheets = {{feuilles}{f\adddot}},%
+ illustrated = {{illustr\'e}{il\adddot}},%
+ monography = {{monographie}{monographie}},%
+ recensionof = {{recension de}{recension de}},%
+ reviewof = {{revue de}{revue de}},%
+}%
+
+% <<<
+
+% Roles expressed as functions >>>1
+
+\NewBibliographyString{%
+ organizer,%
+ organizers,%
+ coordinator,%
+ coordinators,%
+}%
+
+\DeclareBibliographyStrings{%
+ organizer = {{organisateur}{org\adddot}},%
+ organizers = {{organisateurs}{org\adddot}},%
+ coordinator = {{coordinateur}{coord\adddot}},%
+ coordinators = {{coordinateurs}{coord\adddot}},%
+}%
+
+% <<<
+
+% Roles expressed as objects >>>1
+
+\DeclareBibliographyStrings{%
+ withcommentator = {{commentaire\addcolon}{commentaire\addcolon}},%
+ withannotator = {{notes\addcolon}{notes\addcolon}},%
+ withintroduction = {{introduction\addcolon}{introduction\addcolon}},%
+ withforeword = {{avant-propos\addcolon}{avant-propos\addcolon}},%
+ withafterword = {{postface\addcolon}{postface\addcolon}},%
+}%
+
+% <<<
+
+% Roles expressed as actions >>>1
+
+\NewBibliographyString{% >>>2
+ byorganizer,%
+ byorganizerfo,%
+ bytechrev,%
+ byupdater,%
+ byupdateran,%
+ byphotographer,%
+ byartdir,%
+ byrecorder,%
+ byinterviewer,%
+ bygenorg,%
+ bygenorgfo,%
+ bycoordinator,%
+ bycoeditor,%
+ bydirector,%
+ bygendir,%
+ byproducer,%
+ byscreenwriter,%
+ byinterpreter,%
+ byillustrator,%
+ bytechrev,%
+}% <<<
+
+\DeclareBibliographyStrings{% >>>2
+ byorganizer = {{organis\'e par\addcolon}%
+ {organis\'e par\addcolon}},%
+ byorganizerfo = {{organis\'e, avec un avant-propos, par\addcolon}%
+ {organis\'e, avec un avant-propos, par\addcolon}},%
+ bytechrev = {{r\'evision technique par\addcolon}%
+ {r\'evision technique par\addcolon}},%
+ byupdater = {{mis \`a jour par\addcolon}%
+ {mis \`a jour par\addcolon}},%
+ byupdateran = {{mis \`a jour et annot\'e par\addcolon}%
+ {mis \`a jour et annot\'e par\addcolon}},%
+ byphotographer = {{photographie par\addcolon}%
+ {photographie par\addcolon}},%
+ byartdir = {{direction artistique par\addcolon}%
+ {direction artistique par\addcolon}},%
+ byrecorder = {{enregistr\'e par\addcolon}%
+ {enregistr\'e par\addcolon}},%
+ byinterviewer = {{interview\'e par\addcolon}%
+ {interview\'e par\addcolon}},%
+ bygenorg = {{organisation g\'en\'erale par\addcolon}%
+ {organisation g\'en\'erale par\addcolon}},%
+ bygenorgfo = {{organisation g\'en\'erale et avant-propos par\addcolon}%
+ {organisation g\'en\'erale et avant-propos par\addcolon}},%
+ bycoordinator = {{coordonn\'e par\addcolon}%
+ {coordonn\'e par\addcolon}},%
+ bycoeditor = {{co\'edit\'e par\addcolon}%
+ {co\'edit\'e par\addcolon}},%
+ bydirector = {{dirig\'e par\addcolon}%
+ {dirig\'e par\addcolon}},%
+ bygendir = {{direction g\'en\'erale par\addcolon}%
+ {direction g\'en\'erale par\addcolon}},%
+ byproducer = {{produit par\addcolon}%
+ {produit par\addcolon}},%
+ byscreenwriter = {{script \'ecrit par\addcolon}%
+ {script \'ecrit par\addcolon}},%
+ byinterpreter = {{interpr\'et\'e par\addcolon}%
+ {interpr\'et\'e par\addcolon}},%
+ byillustrator = {{illustr\'e par\addcolon}%
+ {illustr\'e par\addcolon}},%
+}% <<<
+
+% <<<
+
+\endinput%
+
+% vim: set foldmarker=\ >>>,\ <<< :
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-abnt/german-abnt.lbx b/Master/texmf-dist/tex/latex/biblatex-abnt/german-abnt.lbx
new file mode 100644
index 00000000000..7dbe9305978
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-abnt/german-abnt.lbx
@@ -0,0 +1,41 @@
+%% Copyright 2016 Daniel Ballester Marques
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Daniel Ballester Marques.
+
+\ProvidesFile{german-abnt.lbx}
+[2018-11-17\space v3.4\space ABNT BibLaTeX citation style]%
+
+\InheritBibliographyExtras{german}
+\InheritBibliographyStrings{german}
+\DeclareBibliographyStrings{%
+ inherit = {german},%
+}%
+
+% Months abbreviations >>>1
+\DeclareBibliographyStrings{%
+ january = {{Januar}{Jan\adddot}},
+ february = {{Februar}{Feb\adddot}},
+ march = {{M\"arz}{M\"arz}},
+ april = {{April}{Apr\adddot}},
+ may = {{Mai}{Mai}},
+ june = {{Juni}{Juni}},
+ july = {{Juli}{Juli}},
+ august = {{August}{Aug\adddot}},
+ september = {{September}{Sept\adddot}},
+ october = {{Oktober}{Okt\adddot}},
+ november = {{November}{Nov\adddot}},
+ december = {{Dezember}{Dez\adddot}},
+}
+% <<<1
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/biblatex-abnt/italian-abnt.lbx b/Master/texmf-dist/tex/latex/biblatex-abnt/italian-abnt.lbx
new file mode 100644
index 00000000000..e1856f8bc66
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-abnt/italian-abnt.lbx
@@ -0,0 +1,41 @@
+%% Copyright 2016 Daniel Ballester Marques
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Daniel Ballester Marques.
+
+\ProvidesFile{italian-abnt.lbx}
+[2018-11-17\space v3.4\space ABNT BibLaTeX citation style]%
+
+\InheritBibliographyExtras{italian}
+\InheritBibliographyStrings{italian}
+\DeclareBibliographyStrings{%
+ inherit = {italian},%
+}%
+
+% Months abbreviations >>>1
+\DeclareBibliographyStrings{%
+ january = {{gennaio}{genn\adddot}},
+ february = {{febbraio}{febbr\adddot}},
+ march = {{marzo}{mar\adddot}},
+ april = {{aprile}{apr\adddot}},
+ may = {{maggio}{magg\adddot}},
+ june = {{giugno}{giugno}},
+ july = {{luglio}{luglio}},
+ august = {{agosto}{ag\adddot}},
+ september = {{settembre}{sett\adddot}},
+ october = {{ottobre}{ott\adddot}},
+ november = {{novembre}{nov\adddot}},
+ december = {{dicembre}{dic\adddot}},
+}
+% <<<1
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/biblatex-abnt/spanish-abnt.lbx b/Master/texmf-dist/tex/latex/biblatex-abnt/spanish-abnt.lbx
index a1ff9ed64f6..3964a87c8cf 100644
--- a/Master/texmf-dist/tex/latex/biblatex-abnt/spanish-abnt.lbx
+++ b/Master/texmf-dist/tex/latex/biblatex-abnt/spanish-abnt.lbx
@@ -43,6 +43,24 @@
\thefield{#1}}%
}%
+% Months abbreviations >>>2
+
+\DeclareBibliographyStrings{%
+ january = {{enero}{enero}},
+ february = {{febrero}{feb\adddot}},
+ march = {{marzo}{marzo}},
+ april = {{abril}{abr\adddot}},
+ may = {{mayo}{mayo}},
+ june = {{junio}{jun\adddot}},
+ july = {{julio}{jul\adddot}},
+ august = {{agosto}{agosto}},
+ september = {{septiembre}{sept\adddot}},
+ october = {{octubre}{oct\adddot}},
+ november = {{noviembre}{nov\adddot}},
+ december = {{diciembre}{dic\adddot}},
+}
+% <<<2
+
% <<<
% Publication details >>>1
@@ -68,8 +86,8 @@
involumes = {{in}{in}},%
in = {{in}{in}},%
inseries = {{in}{in}},%
- sineloco = {{sine loco}{s\adddot l\adddot}},%
- sinenomine = {{sine nomine}{s\adddot n\adddot}},%
+ sineloco = {{sine loco}{s\adddot~l\adddot}},%
+ sinenomine = {{sine nomine}{s\adddot~n\adddot}},%
urlfrom = {{disponible en}{disponible en}},%
urlseen = {{acceso en}{acceso en}},%
sheet = {{hoja}{h\adddot}},%
diff --git a/Master/texmf-dist/tex/latex/biblatex-accursius/accursius.bbx b/Master/texmf-dist/tex/latex/biblatex-accursius/accursius.bbx
new file mode 100644
index 00000000000..61a88a7fda6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-accursius/accursius.bbx
@@ -0,0 +1,1833 @@
+%%
+%% This is file `accursius.bbx',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% biblatex-accursius.dtx (with options: `accursius-bbx')
+%% ---------------------------------------
+%%
+%% Francesco Contini, The accursius style,
+%% Cagliari 2024
+%%
+%% Copyright (C) 2024 Francesco Contini
+%%
+%% The work consists of the README.md, the
+%% biblatex-accursius.dtx and the derived:
+%% - accursius.bbx,
+%% - accursius.cbx,
+%% - italian-accursius.lbx,
+%% - english-accursius.lbx,
+%% - french-accursius.lbx,
+%% - accursius.bib,
+%% - biblatex-accursius.pdf.
+%% The .pdf derived file refers to the
+%% preamble from the .dtx source and repro
+%% duces its text.
+%% The work may be distributed and mod
+%% ified under the conditions of the LaTeX
+%% Project Public License either v. 1.3 of
+%% the license or at your option any later
+%% version. For the latest version of this
+%% license see the url below. V. 1.3c and
+%% following are part of all distributions
+%% of LaTeX version 2008 or later.
+%% The product has got the LPPL mainte
+%% nance status `maintained'.
+%% The current maintainer of this work
+%% is Francesco Contini. To claim and feed
+%% back or to get a clarification email me
+%% to cicciocontini [at] outlook [dot] it.
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% ---------------------------------------
+\ProvidesFile{accursius.bbx}
+\RequireBiber[3]
+\RequireBibliographyStyle{ext-verbose-trad1}
+
+\DeclareLanguageMapping{italian}{italian-accursius}
+\DeclareLanguageMapping{english}{english-accursius}
+\DeclareLanguageMapping{french}{french-accursius}
+
+\DeclareBiblatexOption{global,type,entry}[boolean]
+ {itapunctuation}[true]{%
+ \renewcommand{\newunitpunct}{\addcomma\space}
+ \renewrobustcmd*{\bibinitdelim}{}
+ \renewcommand{\subtitlepunct}{\adddot\space}
+ \renewcommand{\intitlepunct}{\addspace}
+ \renewcommand{\jourvoldelim}{\newunitpunct}
+ \renewcommand{\jourserdelim}{\newunitpunct}
+ \renewcommand{\volnumdelim}{\newunitpunct}}
+
+\ExecuteBibliographyOptions{itapunctuation=true,
+ sorting=accursius,
+ citetracker=context,
+ ibidtracker=constrict,
+ idemtracker=constrict,
+ loccittracker=context,
+ opcittracker=context}
+
+\DeclareFieldFormat[article,inbook,
+ incollection,inproceedings,patent,
+ thesis,unpublished]{title}%
+ {\mkbibemph{#1}}%
+\DeclareFieldFormat[article,inbook,
+ incollection,inproceedings,patent,
+ thesis,unpublished]{citetitle}%
+ {\mkbibemph{#1}}%
+\DeclareFieldFormat[inreference]{title}{%
+ s\adddot v\adddotspace \mkbibemph{#1}}
+\DeclareFieldFormat[inreference]{citetitle}{%
+ s\adddot v\adddotspace \mkbibemph{#1}}
+\DeclareFieldFormat[itprov]{title}{#1}
+\DeclareFieldFormat[itprov]{citetitle}{#1}
+
+\DeclareFieldFormat{volume}%
+ {\bibstring{volume}~{%
+ \scshape\romannumeral#1}}
+\DeclareFieldFormat[article]{volume}%
+ {\bibstring{volume}~{%
+ \scshape\romannumeral#1}}
+\DeclareFieldFormat{part}%
+ {\bibstring{part}~{%
+ \scshape\romannumeral#1}}
+\DeclareFieldFormat[article]{part}%
+ {\bibstring{part}~{%
+ \scshape\romannumeral#1}}
+\DeclareFieldFormat{number}%
+ {\bibstring{number}~#1}
+\DeclareFieldFormat[article]{number}%
+ {\bibstring{number}~#1}
+
+\newtoggle{bbx:nourlinrunning}
+\DeclareBiblatexOption{global,type,entry}[boolean]
+ {nourlinrunning}[true]{%
+ \settoggle{bbx:nourlinrunning}{#1}}
+\ExecuteBibliographyOptions{nourlinrunning=true}
+\renewbibmacro*{doi+eprint+url}{%
+ \ifboolexpr{test {\ifbibliography}%
+ or
+ (not togl{bbx:nourlinrunning}%
+ or
+ test {\ifentrytype{online}})}%
+ {\ifboolexpr{togl {bbx:doi}%
+ and
+ not test {\iffieldxref{doi}}}%
+ {\printfield{doi}}%
+ {}%
+ \newunit\newblock%
+ \ifboolexpr{togl {bbx:eprint}%
+ and
+ not test {\iffieldxref{eprint}}}%
+ {\usebibmacro{eprint}}%
+ {}%
+ \newunit\newblock%
+ \ifboolexpr{togl {bbx:url}%
+ and
+ not test {\iffieldxref{url}}}%
+ {\usebibmacro{url+urldate}}%
+ {}}%
+ {}}
+
+\setcounter{biburllcpenalty}{100}
+\setcounter{biburlucpenalty}{200}
+\setcounter{biburlnumpenalty}{100}
+
+\newtoggle{bbx:authoryearstyle}
+\DeclareBiblatexOption{global,type,entry}[boolean]
+ {authoryearstyle}[true]{%
+ \settoggle{bbx:authoryearstyle}{#1}
+ \settoggle{bbx:iusshorthand}{true}
+ \settoggle{cbx:authoryearstyle}{true}
+ \ExecuteBibliographyOptions{labeldateparts,
+ innamebeforetitle=true,
+ sorting=nyt,pagetracker,innameidem,mergedate}
+ \renewbibmacro*{date}{%
+ \usebibmacro{bbx:ifmergeddate}%
+ {}%
+ {\printdate}}
+ \providebibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}%
+ {}%
+ {\printtext{%
+ \iflabeldateisdate%
+ {\printfield{issue}%
+ \setunit*{\addspace}%
+ \printdateextra}%
+ {\printlabeldateextra}}}}
+ \providebibmacro*{date+extrayear}{%
+ \blx@warning{bibmacro 'date+extrayear'
+ is deprecated.\MessageBreak
+ Please use 'date+extradate'.
+ \MessageBreak Using
+ 'date+extradate' instead}%
+ \usebibmacro{date+extradate}}}
+
+\providebibmacro*{bbx:ifmergeddate}{\@secondoftwo}
+\DeclareBiblatexOption{global,type,entry}[string]{mergedate}[true]{%
+ \ifcsdef{bbx@opt@mergedate@#1}
+ {\csuse{bbx@opt@mergedate@#1}}
+ {\PackageError{biblatex}
+ {Invalid option 'mergedate=#1'}
+ {Valid values are 'maximum', 'compact', 'basic', 'minimum',\MessageBreak
+ 'true' (=compact), and 'false'.}}}
+
+\def\bbx@opt@mergedate@true{\bbx@opt@mergedate@compact}
+\def\bbx@opt@mergedate@maximum{%
+ \renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}%
+ {}%
+ {\printtext{%
+ \iflabeldateisdate%
+ {\printfield{issue}%
+ \setunit*{\addspace}%
+ \printdateextra}%
+ {\printlabeldateextra}}}}}
+
+\def\bbx@opt@mergedate@compact{%
+ \renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}%
+ {}%
+ {\printtext{%
+ \iflabeldateisdate%
+ {\printdateextra}%
+ {\printlabeldateextra}}}}%
+ \renewbibmacro*{bbx:ifmergeddate}{\iflabeldateisdate}%
+ \renewbibmacro*{issue+date}{%
+ \ifboolexpr{test {\usebibmacro{bbx:ifmergeddate}}%
+ and
+ test {\iffieldundef{issue}}}%
+ {}%
+ {\printtext{%
+ \printfield{issue}%
+ \setunit*{\addspace}%
+ \usebibmacro{bbx:ifmergeddate}%
+ {}%
+ {\printdate}}}%
+ \newunit}}
+
+\def\bbx@opt@mergedate@basic{%
+ \renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}%
+ {}%
+ {\printtext{\printlabeldateextra}}}%
+ \renewbibmacro*{bbx:ifmergeddate}{%
+ \ifboolexpr{test {\iflabeldateisdate}%
+ and
+ not test {\ifdateshavedifferentprecision{label}{}}}}%
+ \renewbibmacro*{issue+date}{%
+ \ifboolexpr{test {\usebibmacro{bbx:ifmergeddate}}%
+ and
+ test {\iffieldundef{issue}}}%
+ {}%
+ {\printtext{%
+ \printfield{issue}%
+ \setunit*{\addspace}%
+ \printdate}}%
+ \newunit}}
+
+\def\bbx@opt@mergedate@minimum{%
+ \renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}%
+ {}%
+ {\printtext{\printlabeldateextra}}}%
+ \renewbibmacro*{bbx:ifmergeddate}{%
+ \ifboolexpr{test {\iflabeldateisdate}%
+ and
+ not test {\ifdateshavedifferentprecision{label}{}}%
+ and
+ test {\iffieldundef{extradate}}}}%
+ \renewbibmacro*{issue+date}{%
+ \ifboolexpr{test {\usebibmacro{bbx:ifmergeddate}}%
+ and
+ test {\iffieldundef{issue}}}%
+ {}%
+ {\printtext{%
+ \printfield{issue}%
+ \setunit*{\addspace}%
+ \printdate}}%
+ \newunit}}
+
+\def\bbx@opt@mergedate@false{%
+ \renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}%
+ {}%
+ {\printtext{\printlabeldateextra}}}%
+ \renewbibmacro*{bbx:ifmergeddate}{\@secondoftwo}%
+ \renewbibmacro*{issue+date}{%
+ \printtext{%
+ \printfield{issue}%
+ \setunit*{\addspace}%
+ \usebibmacro{date}}%
+ \newunit}}
+
+\renewbibmacro*{issue+date}{%
+ \usebibmacro{bbx:ifmergeddate}
+ {}
+ {\printtext[parens]{%
+ \printfield{issue}%
+ \setunit*{\addspace}%
+ \printdate}}}
+\renewbibmacro*{date}{%
+ \iftoggle{bbx:authoryearstyle}%
+ {\usebibmacro{bbx:ifmergeddate}%
+ {}%
+ {\printdate}}%
+ {\printdate}}
+
+\providebibmacro{date+extradate}{}
+
+\newbibmacro*{bbx:labelyear}{%
+ \setunit{\printdelim{nameyeardelim}}%
+ \usebibmacro{date+extradate}}
+
+\ExecuteBibliographyOptions{uniquename=full}
+
+\newtoggle{bbx:scauthor}
+\DeclareBiblatexOption{global,type,entry}[boolean]
+ {scauthor}[true]{\settoggle{bbx:scauthor}{#1}}
+\ExecuteBibliographyOptions{scauthor=true}
+
+\newrobustcmd*{\mkbibsc}[1]{\textsc{#1}}
+\DeclareFieldFormat{mkbibsc}{\mkbibsc{#1}}
+\newrobustcmd*{\mkidem}[1]{%
+ \iftoggle{bbx:scauthor}%
+ {{\scshape#1}}%
+ {#1}}
+
+\newbibmacro*{bbx:scname}{%
+ \renewcommand\mkbibnamefamily[1]{\mkbibsc{##1}}%
+ \renewcommand\mkbibnamegiven[1]{\mkbibsc{##1}}%
+ \renewcommand\mkbibnameprefix[1]{\mkbibsc{##1}}%
+ \renewcommand\mkbibnamesuffix[1]{\mkbibsc{##1}}}
+
+\DeclareNameFormat{name:accursius}{%
+ \ifnumequal{\value{uniquename}}{2}%
+ {\usebibmacro{name:given-family}%
+ {\namepartfamily}%
+ {\namepartgiven}%
+ {\namepartprefix}%
+ {\namepartsuffix}}%
+ {\usebibmacro{name:given-family}%
+ {\namepartfamily}%
+ {\namepartgiveni}%
+ {\namepartprefix}%
+ {\namepartsuffix}}%
+ \usebibmacro{name:andothers}}
+\DeclareNameAlias{default}{name:accursius}
+\DeclareNameAlias{theauthor}{theauthornotrev}
+\DeclareBiblatexOption{global,type,entry}[boolean]
+ {revname}[true]{%
+ \DeclareNameAlias{theauthor}{theauthorrev}}
+
+\DeclareNameFormat{theauthorrev}{%
+ \iftoggle{bbx:scauthor}%
+ {\usebibmacro{bbx:scname}}%
+ {}%
+ \ifnumequal{\value{listcount}}{1}%
+ {\ifnumequal{\value{uniquename}}{2}%
+ {\usebibmacro{name:family-given}%
+ {\namepartfamily}%
+ {\namepartgiven}%
+ {\namepartprefix}%
+ {\namepartsuffix}}
+ {\usebibmacro{name:family-given}%
+ {\namepartfamily}%
+ {\namepartgiveni}%
+ {\namepartprefix}%
+ {\namepartsuffix}}%
+ \ifboolexpr{test {\ifdefvoid\namepartgiven}%
+ and
+ test {\ifdefvoid\namepartprefix}}%
+ {}%
+ {\usebibmacro{name:revsdelim}}}%
+ {\ifnumequal{\value{uniquename}}{2}%
+ {\usebibmacro{name:given-family}%
+ {\namepartfamily}%
+ {\namepartgiven}%
+ {\namepartprefix}%
+ {\namepartsuffix}}
+ {\usebibmacro{name:given-family}%
+ {\namepartfamily}%
+ {\namepartgiveni}%
+ {\namepartprefix}%
+ {\namepartsuffix}}}%
+ \usebibmacro{name:andothers}}
+
+\DeclareNameFormat{theauthornotrev}{%
+ \iftoggle{bbx:scauthor}%
+ {\usebibmacro{bbx:scname}}%
+ {}%
+ \ifnumequal{\value{uniquename}}{2}%
+ {\usebibmacro{name:given-family}%
+ {\namepartfamily}%
+ {\namepartgiven}%
+ {\namepartprefix}%
+ {\namepartsuffix}}%
+ {\usebibmacro{name:given-family}%
+ {\namepartfamily}%
+ {\namepartgiveni}%
+ {\namepartprefix}%
+ {\namepartsuffix}}%
+ \usebibmacro{name:andothers}}
+
+\DeclareNameAlias{author}{theauthor}
+\DeclareNameAlias{editor}{theauthor}
+
+\DeclareNameFormat{labelname}{%
+ \iftoggle{bbx:scauthor}%
+ {\usebibmacro{bbx:scname}}%
+ {}%
+ \ifnumequal{\value{uniquename}}{2}%
+ {\usebibmacro{name:given-family}%
+ {\namepartfamily}%
+ {\namepartgiven}%
+ {\namepartprefix}%
+ {\namepartsuffix}}%
+ {\ifnumequal{\value{uniquename}}{1}%
+ {\usebibmacro{name:given-family}%
+ {\namepartfamily}%
+ {\namepartgiveni}%
+ {\namepartprefix}%
+ {\namepartsuffix}}%
+ {\usebibmacro{name:family}%
+ {\namepartfamily}%
+ {\namepartgiven}%
+ {\namepartprefix}%
+ {\namepartsuffix}}}%
+ \usebibmacro{name:andothers}}
+
+\DeclareNameFormat{labeltextname}{%
+ {\usebibmacro{name:given-family}%
+ {\namepartfamily}%
+ {\namepartgiven}%
+ {\namepartprefix}%
+ {\namepartsuffix}%
+ \usebibmacro{name:andothers}}}
+
+\renewbibmacro*{byauthor}{%
+ \ifboolexpr{test \ifuseauthor%
+ or
+ test {\ifnameundef{author}}}%
+ {}%
+ {\usebibmacro{bytypestrg}{author}{author}%
+ \setunit{\addspace}%
+ \printnames[byauthor]{author}}}
+
+\renewbibmacro*{byeditor}{%
+ \ifnameundef{editor}%
+ {}%
+ {\usebibmacro{bytypestrg}{editor}{editor}%
+ \setunit{\addspace}%
+ \printnames[byeditor]{editor}%
+ \newunit}%
+ \usebibmacro{byeditorx}}
+
+\DeclareDelimFormat{editortypedelim}{\addspace}
+
+\renewbibmacro*{bbx:editor}[1]{%
+ \ifboolexpr{test \ifuseeditor%
+ and
+ not test {\ifnameundef{editor}}}%
+ {\usebibmacro{bbx:dashcheck}%
+ {\bibnamedash%
+ \printtext[parens]{\usebibmacro{#1}}%
+ \setunit{\addspace}\newblock}%
+ {\printnames{editor}%
+ \setunit{\printdelim{editortypedelim}}%
+ \usebibmacro{bbx:savehash}%
+ \printtext[parens]{\usebibmacro{#1}}}%
+ \clearname{editor}}%
+ {\global\undef\bbx@lasthash}}
+
+\renewbibmacro*{editor+othersstrg}{%
+ \iffieldundef{editortype}%
+ {\ifboolexpr{test {\ifnumgreater{\value{editor}}{1}}%
+ or
+ test {\ifandothers{editor}}}%
+ {\def\abx@tempa{editors}}%
+ {\def\abx@tempa{editor}}}%
+ {\ifboolexpr{test {\ifnumgreater{\value{editor}}{1}}%
+ or
+ test {\ifandothers{editor}}}%
+ {\edef\abx@tempa{\thefield{editortype}s}}%
+ {\edef\abx@tempa{\thefield{editortype}}}}%
+ \let\abx@tempb=\empty
+ \ifnamesequal{editor}{translator}%
+ {\appto\abx@tempa{tr}%
+ \appto\abx@tempb{\clearname{translator}}}%
+ {}%
+ \ifnamesequal{editor}{commentator}%
+ {\appto\abx@tempa{co}%
+ \appto\abx@tempb{\clearname{commentator}}}%
+ {\ifnamesequal{editor}{annotator}%
+ {\appto\abx@tempa{an}%
+ \appto\abx@tempb{\clearname{annotator}}}%
+ {}}%
+ \ifnamesequal{editor}{introduction}%
+ {\appto\abx@tempa{in}%
+ \appto\abx@tempb{\clearname{introduction}}}%
+ {\ifnamesequal{editor}{foreword}%
+ {\appto\abx@tempa{fo}%
+ \appto\abx@tempb{\clearname{foreword}}}%
+ {\ifnamesequal{editor}{afterword}%
+ {\appto\abx@tempa{af}%
+ \appto\abx@tempb{\clearname{afterword}}}%
+ {}}}%
+ \ifbibxstring{\abx@tempa}%
+ {\printtext[editortype]{%
+ \biblstring{\abx@tempa\thefield{gender}}}\abx@tempb}%
+ {\usebibmacro{editorstrg}}}
+
+\renewbibmacro*{bybookauthor}{%
+ \ifnamesequal{author}{bookauthor}%
+ {\iftoggle{bbx:innameidem}%
+ {\bibstring[\mkidem]{idem\thefield{gender}}}%
+ {}}%
+ {\printnames{bookauthor}}}
+
+\renewbibmacro*{bbx:in:editor}[1]{%
+ \ifboolexpr{test \ifuseeditor%
+ and
+ not test {\ifnameundef{editor}}}%
+ {\ifboolexpr{togl {bbx:innameidem}%
+ and
+ test {\bbx@ineditoridem}}%
+ {\bibstring[\mkidem]{idem\thefield{gender}}}%
+ {\ifboolexpr{togl {bbx:innamebeforetitle}%
+ and
+ not test {\iffieldundef{crossref}}}%
+ {\printnames[editor]{editor}}%
+ {\printnames[ineditor]{editor}}}%
+ \setunit{\printdelim{editortypedelim}}%
+ \printtext[parens]{\usebibmacro{#1}}%
+ \iftoggle{bbx:authoryearstyle}%
+ {\setunit{\printdelim{nameyeardelim}}%
+ \iffieldundef{crossref}%
+ {\usebibmacro{date}}%
+ {\entrydata*{\thefield{crossref}}{%
+ \csuse{extblx@hook@xrefcite}%
+ \printtext[bbx@xrefcite]{%
+ \usebibmacro{date+extradate}}}}}%
+ {}%
+ \clearname{editor}}%
+ {}}
+
+\renewbibmacro*{name:andothers}{%
+ \ifboolexpr{test {\ifnumequal{\value{listcount}}{\value{liststop}}}%
+ and
+ test \ifmorenames}%
+ {\ifnumgreater{\value{liststop}}{1}%
+ {\finalandcomma}%
+ {}%
+ \printdelim{andothersdelim}\bibstring[\mkbibemph]{andothers}}
+ {}}
+\newtoggle{bbx:authortypeparens}
+\DeclareBiblatexOption{global,type,entry}[boolean]
+ {authortypeparens}[true]{%
+ \settoggle{bbx:authortypeparens}{#1}%
+ \DeclareDelimFormat{authortypedelim}{\addspace}}
+\ExecuteBibliographyOptions{authortypeparens=false}
+\renewbibmacro*{authorstrg}{%
+ \iffieldundef{authortype}%
+ {}%
+ {\ifboolexpr{togl {bbx:authortypeparens}}%
+ {\printtext[parens]{%
+ \ifbibxstring{by\thefield{authortype}}%
+ {\biblstring{by\thefield{authortype}}}%
+ {\ifbibxstring{\thefield{authortype}}%
+ {\biblstring{\thefield{authortype}}}%
+ {\thefield{authortype}}}}}%
+ {\printtext[authortype]{%
+ \ifbibxstring{\thefield{authortype}}%
+ {\ifboolexpr{test {\ifnumgreater{\value{author}}{1}}%
+ or
+ test {\ifandothers{author}}}%
+ {\bibstring{\thefield{authortype}s}}%
+ {\bibstring{\thefield{authortype}}}}%
+ {\thefield{authortype}}}}}}
+
+\renewbibmacro*{title}{%
+ \ifboolexpr{test {\iffieldundef{title}}%
+ and
+ test {\iffieldundef{subtitle}}}%
+ {}%
+ {\printtext[title]{%
+ \printfield[titlecase:title]{title}%
+ \setunit{\subtitlepunct}%
+ \printfield[titlecase:title]{subtitle}}%
+ \setunit{\titleaddonpunct}}%
+ \printfield{titleaddon}}
+
+\DeclareDatamodelFields[type=field,datatype=integer]{tome}
+\DeclareDatamodelEntryfields{tome}
+\DeclareFieldFormat{tome}%
+ {\bibsstring{tome}~{%
+ \scshape\romannumeral#1}}
+\newbibmacro{bookfrac}{%
+ \printfield{volume}%
+ \newunit%
+ \printfield{tome}%
+ \newunit%
+ \printfield{part}}
+
+\DeclareDatamodelFields[type=field,datatype=integer]{section}
+\DeclareDatamodelEntryfields{section}
+\DeclareFieldFormat{section}%
+ {\bibsstring{section}~{%
+ \scshape\romannumeral#1}}
+\newbibmacro{jourfrac}{%
+ \printfield{part}%
+ \newunit%
+ \printfield{section}}
+
+\renewbibmacro*{barevolume+volumes}{%
+ \iffieldundef{maintitle}%
+ {\usebibmacro{bookfrac}}%
+ {}%
+ \newunit%
+ \printfield{volumes}}
+
+\renewbibmacro*{maintitle+title}{%
+ \iftoggle{bbx:maintitleaftertitle}%
+ {}%
+ {\iffieldsequal{maintitle}{title}%
+ {\clearfield{maintitle}%
+ \clearfield{mainsubtitle}%
+ \clearfield{maintitleaddon}}%
+ {\iffieldundef{maintitle}%
+ {}%
+ {\usebibmacro{maintitle}%
+ \newunit\newblock%
+ \ifboolexpr{test {\iffieldundef{volume}}%
+ and
+ test {\iffieldundef{tome}}%
+ and
+ test {\iffieldundef{part}}}%
+ {}%
+ {\usebibmacro{bookfrac}%
+ \setunit{\addcolon\space}}}}}%
+ \usebibmacro{title}%
+ \iftoggle{bbx:maintitleaftertitle}%
+ {\iffieldsequal{maintitle}{title}%
+ {\clearfield{maintitle}%
+ \clearfield{mainsubtitle}%
+ \clearfield{maintitleaddon}}%
+ {\iffieldundef{maintitle}%
+ {}%
+ {\newunit%
+ \ifboolexpr{test {\iffieldundef{volume}}%
+ and
+ test {\iffieldundef{tome}}%
+ and
+ test {\iffieldundef{part}}}%
+ {}%
+ {\usebibmacro{bookfrac}%
+ \setunit{\addspace}%
+ \bibstring{ofseries}%
+ \setunit{\addspace}}%
+ \usebibmacro{maintitle}}}}%
+ {}%
+ \newunit}
+
+\renewbibmacro*{maintitle+booktitle}{%
+ \iftoggle{bbx:maintitleaftertitle}%
+ {}%
+ {\iffieldundef{maintitle}%
+ {}%
+ {\usebibmacro{maintitle}%
+ \newunit\newblock%
+ \ifboolexpr{test {\iffieldundef{volume}}%
+ and
+ test {\iffieldundef{tome}}%
+ and
+ test {\iffieldundef{part}}}%
+ {}%
+ {\usebibmacro{bookfrac}%
+ \setunit{\addcolon\space}}}}%
+ \usebibmacro{booktitle}%
+ \iftoggle{bbx:maintitleaftertitle}%
+ {\iffieldundef{maintitle}%
+ {}%
+ {\newunit%
+ \ifboolexpr{test {\iffieldundef{volume}}%
+ and
+ test {\iffieldundef{tome}}%
+ and
+ test {\iffieldundef{part}}}%
+ {}%
+ {\usebibmacro{bookfrac}%
+ \setunit{\addspace}%
+ \bibstring{ofseries}%
+ \setunit{\addspace}}%
+ \usebibmacro{maintitle}}}%
+ {}%
+ \newunit}
+
+\DeclareBiblatexOption{global,type,entry}[boolean]
+ {editionroman}[true]{%
+ \DeclareFieldFormat{edition}%
+ {\bibstring{edition}~{%
+ \scshape\romannumeral\thefield{edition}}}}
+\ExecuteBibliographyOptions{editionroman=true}
+
+\renewcommand{\sernumdelim}{\newunitpunct}
+\DeclareFieldFormat{series}{\mkbibquote{#1}}
+
+\DeclareSourcemap{\maps[datatype=bibtex]{\map{%
+ \step[fieldsource=director,fieldtarget=namec]}}}
+
+\DeclareDatamodelFields[type=field,datatype=literal]{serdirector}
+\DeclareDatamodelEntryfields{serdirector}
+
+\renewbibmacro*{series+number}{%
+ \iffieldundef{series}%
+ {}%
+ {\usebibmacro{in:}}%
+ \printfield{series}%
+ \setunit*{\sernumdelim}%
+ \ifnameundef{namec}%
+ {}%
+ {\iffieldundef{serdirector}%
+ {\bibstring{director}}%
+ {\ifbibxstring{\thefield{serdirector}}%
+ {\ifboolexpr{test {\ifnumgreater{\value{serdirector}}{1}}%
+ or
+ test {\ifandothers{serdirector}}}%
+ {\bibstring{\thefield{serdirector}s}}
+ {\bibstring{\thefield{serdirector}}}}%
+ {\thefield{serdirector}}}%
+ \setunit{\addspace}%
+ \printnames{namec}}%
+ \setunit*{\sernumdelim}%
+ \printfield{number}%
+ \newunit}
+
+\newcommand{\bbx@publocformat}{}
+\DeclareBibliographyOption{publocformat}[publocyear]{%
+ \renewcommand{\bbx@publocformat}{#1}}
+\ExecuteBibliographyOptions{publocformat}
+
+\renewbibmacro*{publisher+location+date}{%
+ \ifdefstring{\bbx@publocformat}{locpubyear}%
+ {\printlist{location}%
+ \newunit%
+ \printlist{publisher}%
+ \newunit%
+ \usebibmacro{date}}%
+ {\ifdefstring{\bbx@publocformat}{loccolonpub}%
+ {\printlist{location}%
+ \setunit*{\addcolon\space}%
+ \printlist{publisher}%
+ \newunit%
+ \usebibmacro{date}}%
+ {\printlist{publisher}%
+ \newunit%
+ \printlist{location}%
+ \setunit*{\addspace}%
+ \usebibmacro{date}}}%
+ \newunit}
+
+\renewbibmacro*{list:andothers}{%
+ \ifboolexpr{test {\ifnumequal{\value{listcount}}{\value{liststop}}}%
+ and
+ test \ifmoreitems}%
+ {\ifnumgreater{\value{liststop}}{1}%
+ {\finalandcomma}%
+ {}%
+ \printdelim{andmoredelim}\bibstring[\mkbibemph]{andmore}}%
+ {}}
+
+\newcommand{\bbx@jourvolnumdate}{}
+\DeclareBibliographyOption{jourvolnumdate}[allcommas]{%
+ \renewcommand{\bbx@jourvolnumdate}{#1}}
+\ExecuteBibliographyOptions{jourvolnumdate}
+
+\renewbibmacro*{volume+number+eid}{%
+ \ifdefstring{\bbx@jourvolnumdate}{numslashdate}%
+ {\printfield{volume}%
+ \setunit*{\volnumdelim}%
+ \newunit%
+ \iffieldundef{number}%
+ {}%
+ {\printfield{number}%
+ \setunit{\addslash}}%
+ \printfield{year}%
+ \setunit{\bibeidpunct}%
+ \printfield{eid}}%
+ {\printfield{volume}%
+ \setunit*{\volnumdelim}%
+ \printfield{number}%
+ \setunit{\bibeidpunct}%
+ \printfield{eid}}}
+
+\renewbibmacro*{issue+date}{%
+ \ifdefstring{\bbx@jourvolnumdate}{numslashdate}%
+ {\printfield[parens]{issue}}%
+ {}%
+ \ifdefstring{\bbx@jourvolnumdate}{allcommas}%
+ {\printfield{issue}%
+ \newunit%
+ \usebibmacro{date}}%
+ {}%
+ \ifdefstring{\bbx@jourvolnumdate}{biblatex}%
+ {\ifboolexpr{test {\iffieldundef{issue}}%
+ and
+ test {\iffieldundef{year}}}%
+ {}%
+ {\printtext[parens]{%
+ \printfield{issue}%
+ \setunit*{\addspace}%
+ \usebibmacro{date}}}}%
+ {}%
+ \newunit}
+
+\renewbibmacro*{journal+issuetitle}{%
+ \usebibmacro{journal}%
+ \newunit%
+ \printfield{series}%
+ \newunit%
+ \usebibmacro{volume+number+eid}%
+ \newunit%
+ \usebibmacro{issue+date}
+ \setunit{\addcolon\space}%
+ \usebibmacro{issue}%
+ \newunit%
+ \usebibmacro{jourfrac}%
+ \newunit}
+
+\newbibmacro{journal+editor+id}{%
+ \usebibmacro{journal+issuetitle}%
+ \newunit%
+ \usebibmacro{byeditor+others}%
+ \newunit%
+ \usebibmacro{note+pages}%
+ \newunit\newblock%
+ \usebibmacro{issn}%
+ \newunit\newblock%
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock%
+ \usebibmacro{addendum+pubstate}}
+
+\newtoggle{bbx:shortjournal}
+\DeclareBiblatexOption{global,type,entry}[boolean]
+ {shortjournal}[true]{%
+ \settoggle{bbx:shortjournal}{#1}}
+\ExecuteBibliographyOptions{shortjournal=true}
+
+\DeclareFieldFormat{journaltitle}%
+ {\mkbibquote{#1\isdot}}
+
+\renewbibmacro*{journal}{%
+ \ifboolexpr{test {\iffieldundef{journaltitle}}%
+ and
+ test {\iffieldundef{journalsubtitle}}}%
+ {}%
+ {\ifboolexpr{not test {\iffieldundef{shortjournal}}%
+ and
+ togl {bbx:shortjournal}}%
+ {\printtext[journaltitle]{%
+ \printfield{shortjournal}}}%
+ {\printtext[journaltitle]{%
+ \printfield[titlecase]{journaltitle}%
+ \setunit{\subtitlepunct}%
+ \printfield[titlecase]{journalsubtitle}}%
+ \newunit%
+ \printfield{journaltitleaddon}}}}
+
+\DeclareBibliographyDriver{shortjournal}{%
+ \printfield{journaltitle}}
+
+\defbibcheck{shortjournal}{%
+ \iffieldundef{shortjournal}%
+ {\skipentry}%
+ {\iffieldundef{journaltitle}%
+ {\skipentry}%
+ {\ifcsdef{sjcheck@\therefsection
+ -\strfield{shortjournal}=\strfield{journaltitle}}
+ {\skipentry}%
+ {\savefieldcs{journaltitle}%
+ {sjcheck@\therefsection
+ -\strfield{shortjournal}=\strfield{journaltitle}}}}}}
+\AtBeginBiblist{shortjournal}{%
+ \DeclareFieldFormat{journaltitle}{\mkbibemph{#1}}}
+
+\DeclareBibliographyDriver{article}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+ \iftoggle{bbx:authoryearstyle}%
+ {\usebibmacro{bbx:labelyear}%
+ \newunit\newblock}%
+ {\setunit{\printdelim{nametitledelim}}\newblock}%
+ \usebibmacro*{title}%
+ \newunit%
+ \usebibmacro{language}%
+ \newunit\newblock%
+ \usebibmacro{byauthor}%
+ \newunit\newblock%
+ \usebibmacro{bytranslator+others}%
+ \newunit\newblock%
+ \usebibmacro{version}%
+ \newunit\newblock%
+ \iftoggle{bbx:articlein}{\usebibmacro{in:}}{}%
+ \usebibmacro{journal+editor+id}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \iftoggle{bbx:related}%
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}%
+ {}%
+ \usebibmacro{finentry}}
+
+\DeclareBibliographyDriver{book}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+ \iftoggle{bbx:authoryearstyle}%
+ {\usebibmacro{bbx:labelyear}%
+ \newunit\newblock}%
+ {\setunit{\printdelim{nametitledelim}}\newblock}%
+ \usebibmacro{maintitle+title}%
+ \newunit%
+ \usebibmacro{language}%
+ \newunit\newblock%
+ \usebibmacro{byauthor}%
+ \newunit\newblock%
+ \usebibmacro{thebook}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \iftoggle{bbx:related}%
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}%
+ {}%
+ \usebibmacro{finentry}}
+
+\newbibmacro{thebook}{%
+ \usebibmacro{byeditor+others}%
+ \newunit\newblock%
+ \printfield{edition}%
+ \newunit%
+ \usebibmacro{barevolume+volumes}%
+ \newunit\newblock%
+ \usebibmacro{series+number}%
+ \newunit\newblock%
+ \printfield{note}%
+ \newunit\newblock%
+ \printlist{organization}%
+ \newunit%
+ \usebibmacro{publisher+location+date}%
+ \newunit\newblock%
+ \usebibmacro{chapter+pages}%
+ \newunit%
+ \printfield{pagetotal}%
+ \newunit\newblock%
+ \usebibmacro{isbn}%
+ \newunit\newblock%
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock%
+ \usebibmacro{addendum+pubstate}}
+
+\DeclareBibliographyDriver{booklet}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+ \iftoggle{bbx:authoryearstyle}%
+ {\usebibmacro{bbx:labelyear}%
+ \newunit\newblock}%
+ {\setunit{\printdelim{nametitledelim}}\newblock}%
+ \usebibmacro{title}%
+ \newunit%
+ \printlist{language}%
+ \newunit\newblock%
+ \usebibmacro{byauthor}%
+ \newunit\newblock%
+ \usebibmacro{byeditor+others}%
+ \newunit\newblock%
+ \printfield{howpublished}%
+ \newunit\newblock%
+ \printfield{type}%
+ \newunit\newblock%
+ \printfield{note}%
+ \newunit\newblock%
+ \usebibmacro{location+date}%
+ \newunit\newblock%
+ \usebibmacro{chapter+pages}%
+ \newunit%
+ \printfield{pagetotal}%
+ \newunit\newblock%
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock%
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \iftoggle{bbx:related}%
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}%
+ {}%
+ \usebibmacro{finentry}}
+
+\DeclareBibliographyDriver{inbook}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+ \iftoggle{bbx:authoryearstyle}%
+ {\usebibmacro{bbx:labelyear}%
+ \newunit\newblock}%
+ {\setunit{\printdelim{nametitledelim}}\newblock}%
+ \usebibmacro{title}%
+ \newunit%
+ \usebibmacro{language}%
+ \newunit\newblock%
+ \usebibmacro{byauthor}%
+ \newunit\newblock%
+ \usebibmacro{in:}%
+ \usebibmacro{crosscite}{inbook:parent}%
+ \newunit\newblock%
+ \usebibmacro{chapter+pages}%
+ \newunit\newblock%
+ \usebibmacro{isbn}%
+ \newunit\newblock%
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock%
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \ifboolexpr{togl {bbx:related} and not test {\iffieldxref{related}}}%
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}%
+ {}%
+ \usebibmacro{finentry}}
+
+\renewbibmacro*{inbook:parent}{%
+ \usebibmacro{bybookauthor}%
+ \setunit{\printdelim{innametitledelim}}\newblock%
+ \usebibmacro{maintitle+booktitle}%
+ \newunit\newblock%
+ \usebibmacro{byeditor+others}%
+ \newunit\newblock%
+ \usebibmacro{edition}%
+ \newunit%
+ \usebibmacro{barevolume+volumes}%
+ \newunit\newblock%
+ \usebibmacro{series+number}%
+ \newunit\newblock%
+ \usebibmacro{note}%
+ \newunit\newblock%
+ \usebibmacro{publisher+location+date}}
+
+\DeclareBibliographyDriver{collection}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{editor+others}%
+ \iftoggle{bbx:authoryearstyle}%
+ {\usebibmacro{bbx:labelyear}%
+ \newunit\newblock}%
+ {\setunit{\printdelim{nametitledelim}}\newblock}%
+ \usebibmacro{maintitle+title}%
+ \newunit%
+ \usebibmacro{language}%
+ \newunit\newblock%
+ \usebibmacro{thebook}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \iftoggle{bbx:related}%
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}%
+ {}%
+ \usebibmacro{finentry}}
+
+\DeclareBibliographyDriver{incollection}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+ \iftoggle{bbx:authoryearstyle}%
+ {\usebibmacro{bbx:labelyear}%
+ \newunit\newblock}%
+ {\setunit{\printdelim{nametitledelim}}\newblock}%
+ \usebibmacro{title}%
+ \newunit%
+ \usebibmacro{language}%
+ \newunit\newblock%
+ \usebibmacro{byauthor}%
+ \newunit\newblock%
+ \usebibmacro{in:}%
+ \usebibmacro{crosscite}{incollection:parent}%
+ \newunit\newblock%
+ \usebibmacro{chapter+pages}%
+ \newunit\newblock%
+ \usebibmacro{isbn}%
+ \newunit\newblock%
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock%
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \ifboolexpr{togl {bbx:related} and not test {\iffieldxref{related}}}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}%
+ {}%
+ \usebibmacro{finentry}}
+
+\renewbibmacro*{incollection:parent}{%
+ \ifboolexpr{togl {bbx:innamebeforetitle}%
+ and
+ not test {\iffieldundef{crossref}}}%
+ {\DeclareNameAlias{editor}{labelname}%
+ \usebibmacro{in:editor+others}%
+ \newunit\newblock%
+ \iftoggle{bbx:authoryearstyle}%
+ {}%
+ {\printfield{booktitle}%
+ \newunit%
+ \printtext[bibhyperref]{%
+ \bibstring{opcit}}}}%
+ {}%
+ \ifboolexpr{togl {bbx:innamebeforetitle}%
+ and
+ not test {\iffieldundef{crossref}}}%
+ {}%
+ {\setunit{\printdelim{innametitledelim}}\newblock%
+ \usebibmacro{maintitle+booktitle}%
+ \newunit\newblock%
+ \usebibmacro{byeditor+others}%
+ \newunit\newblock%
+ \usebibmacro{edition}%
+ \newunit%
+ \usebibmacro{barevolume+volumes}%
+ \newunit\newblock%
+ \usebibmacro{series+number}%
+ \newunit\newblock%
+ \usebibmacro{note}%
+ \newunit\newblock%
+ \usebibmacro{publisher+location+date}}}
+
+\DeclareBibliographyDriver{proceedings}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{editor+others}%
+ \iftoggle{bbx:authoryearstyle}%
+ {\usebibmacro{bbx:labelyear}%
+ \newunit\newblock}%
+ {\setunit{\printdelim{nametitledelim}}\newblock}%
+ \usebibmacro{maintitle+title}%
+ \newunit%
+ \usebibmacro{language}%
+ \newunit\newblock%
+ \usebibmacro{event+venue+date}%
+ \newunit\newblock%
+ \usebibmacro{thebook}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \iftoggle{bbx:related}%
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}%
+ {}%
+ \usebibmacro{finentry}}
+
+\DeclareBibliographyDriver{inproceedings}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+ \iftoggle{bbx:authoryearstyle}%
+ {\usebibmacro{bbx:labelyear}%
+ \newunit\newblock}%
+ {\setunit{\printdelim{nametitledelim}}\newblock}%
+ \usebibmacro{title}%
+ \newunit%
+ \usebibmacro{language}%
+ \newunit\newblock%
+ \usebibmacro{byauthor}%
+ \newunit\newblock%
+ \usebibmacro{in:}%
+ \usebibmacro{crosscite}{inproceedings:parent}%
+ \newunit\newblock%
+ \usebibmacro{chapter+pages}%
+ \newunit\newblock%
+ \usebibmacro{isbn}%
+ \newunit\newblock%
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock%
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \ifboolexpr{togl {bbx:related} and not test {\iffieldxref{related}}}%
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}%
+ {}%
+ \usebibmacro{finentry}}
+
+\renewbibmacro*{inproceedings:parent}{%
+ \ifboolexpr{togl {bbx:innamebeforetitle}%
+ and
+ not test {\iffieldundef{crossref}}}%
+ {\DeclareNameAlias{editor}{labelname}%
+ \usebibmacro{in:editor+others}%
+ \newunit\newblock%
+ \iftoggle{bbx:authoryearstyle}%
+ {}%
+ {\printfield{booktitle}%
+ \newunit%
+ \printtext[bibhyperref]{%
+ \bibstring{opcit}}}}%
+ {}%
+ \ifboolexpr{togl {bbx:innamebeforetitle}%
+ and
+ not test {\iffieldundef{crossref}}}%
+ {}%
+ {\setunit{\printdelim{innametitledelim}}\newblock%
+ \usebibmacro{maintitle+booktitle}%
+ \newunit\newblock%
+ \usebibmacro{event+venue+date}%
+ \newunit\newblock%
+ \usebibmacro{byeditor+others}%
+ \newunit\newblock%
+ \usebibmacro{edition}%
+ \newunit%
+ \usebibmacro{barevolume+volumes}%
+ \newunit\newblock%
+ \usebibmacro{series+number}%
+ \newunit\newblock%
+ \usebibmacro{note}%
+ \newunit\newblock%
+ \printlist{organization}%
+ \newunit%
+ \usebibmacro{publisher+location+date}}}
+
+\DeclareBibliographyDriver{manual}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor}%
+ \iftoggle{bbx:authoryearstyle}%
+ {\usebibmacro{bbx:labelyear}%
+ \newunit\newblock}%
+ {\setunit{\printdelim{nametitledelim}}\newblock}%
+ \usebibmacro{title}%
+ \newunit%
+ \printlist{language}%
+ \newunit\newblock%
+ \usebibmacro{byauthor}%
+ \newunit\newblock%
+ \usebibmacro{byeditor}%
+ \newunit\newblock%
+ \printfield{edition}%
+ \newunit\newblock%
+ \usebibmacro{series+number}%
+ \newunit\newblock%
+ \printfield{type}%
+ \newunit%
+ \printfield{version}%
+ \newunit%
+ \printfield{note}%
+ \newunit\newblock%
+ \printlist{organization}%
+ \newunit%
+ \usebibmacro{publisher+location+date}%
+ \newunit\newblock%
+ \usebibmacro{chapter+pages}%
+ \newunit%
+ \printfield{pagetotal}%
+ \newunit\newblock%
+ \usebibmacro{isbn}%
+ \newunit\newblock%
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock%
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \iftoggle{bbx:related}%
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}%
+ {}%
+ \usebibmacro{finentry}}
+
+\DeclareSortingTemplate{accursius}{
+ \sort{\field{presort}}
+ \sort[final]{\field{sortkey}}
+ \sort{%
+ \field{sortname}
+ \field{author}
+ \field{editor}
+ \field{translator}
+ \field{sorttitle}
+ \field{title}}
+ \sort{%
+ \field{sortyear}
+ \field{year}}
+ \sort{\field{month}}
+ \sort{\field{day}}
+ \sort{%
+ \field{volume}
+ \literal{0}}
+ \sort{%
+ \field{sorttitle}
+ \field{title}}}
+
+\DeclareSortingTemplate{chronoiuris}{
+ \sort{\field{presort}}
+ \sort[direction=ascending]{%
+ \field{origyear}
+ \field{origmonth}
+ \field{origday}}
+ \sort[direction=ascending]{%
+ \field[padside=left,padwidth=10]{nprov}}
+ \sort[direction=ascending]{%
+ \field{kindprov}}
+ \sort[direction=ascending]{%
+ \field{sortyear}
+ \field{year}
+ \field{month}
+ \field{day}}}
+\DeclareSortingTemplate{authoriuris}{
+ \sort{\field{presort}}
+ \sort[direction=ascending]{%
+ \field{institution}}
+ \sort[direction=ascending]{%
+ \field{institutionspec}}
+ \sort[direction=descending]{%
+ \field{jchamber}}
+ \sort[direction=ascending]{%
+ \field{origyear}
+ \field{origmonth}
+ \field{origday}}
+ \sort[direction=ascending]{%
+ \field[padside=left,padwidth=10]{nprov}}
+ \sort[direction=ascending]{%
+ \field{kindprov}}
+ \sort[direction=ascending]{%
+ \field{sortyear}
+ \field{year}
+ \field{month}
+ \field{day}}}
+
+\DeclareRefcontext{accursiusdef}{sorting=accursius}
+\DeclareRefcontext{authoriuris}{sorting=authoriuris}
+\DeclareRefcontext{chronoiuris}{sorting=chronoiuris}
+
+\newtoggle{bbx:noportal}
+ \DeclareBibliographyOption{noportal}[true]{%
+ \settoggle{bbx:noportal}{#1}}
+\newtoggle{bbx:iusminimal}
+ \DeclareBibliographyOption{iusminimal}[true]{%
+ \settoggle{bbx:iusminimal}{#1}%
+ \settoggle{bbx:noportal}{true}}
+\newtoggle{bbx:iusshorthand}
+ \DeclareBibliographyOption{iusshorthand}[true]{%
+ \settoggle{bbx:iusshorthand}{#1}%
+ \settoggle{bbx:iusminimal}{true}}
+
+\DeclareDelimFormat{iusunitdelim}{\newunitpunct}
+
+\DeclareDatamodelFields[type=field,datatype=literal]{textprovtitle}
+ \DeclareDatamodelEntryfields{textprovtitle}
+
+\DeclareDatamodelFields[type=field,datatype=literal]{codification}
+ \DeclareDatamodelEntryfields{codification}
+\DeclareDatamodelFields[type=field,datatype=literal]{attachedstring}
+ \DeclareDatamodelEntryfields{attachedstring}
+\newbibmacro*{codification}{%
+ \ifboolexpr{not test {\iffieldundef{codification}}}%
+ {\printfield{codification}%
+ \setunit{\iusunitdelim}\newblock%
+ \iffieldundef{attachedstring}%
+ {\bibsstring{attachedto}}%
+ {\printfield{attachedstring}}%
+ \setunit*{\addspace}\newblock}%
+ {}}
+\DeclareListFormat[itprov,notetopro]{institution}{%
+ \usebibmacro{list:delim}{#1}%
+ \iftoggle{bbx:scauthor}%
+ {\textsc{#1}}%
+ {#1}%
+ \isdot%
+ \usebibmacro{list:andothers}}
+\DeclareListFormat[itprov,notetoprov]{textinstitution}{%
+ \usebibmacro{list:delim}{#1}%
+ #1\isdot%
+ \usebibmacro{list:andothers}}
+\DeclareSourcemap{\maps[datatype=bibtex]{\map{%
+ \pertype{itprov}\pertype{notetoprov}
+ \step[fieldsource=shortinstitution,fieldtarget=listc]}}}
+\DeclareDatamodelFields[type=field,datatype=literal]{institutionspec}
+ \DeclareDatamodelEntryfields{institutionspec}
+\DeclareDatamodelFields[type=field,datatype=literal]{institutionnationality}
+ \DeclareDatamodelEntryfields{institutionnationality}
+\DeclareDatamodelFields[type=field,datatype=literal]{institutionaddon}
+ \DeclareDatamodelEntryfields{institutionaddon}
+\DeclareDatamodelFields[type=field,datatype=literal]{jchamber}
+ \DeclareDatamodelEntryfields{jchamber}
+ \DeclareFieldFormat{jchamber}{\ifinteger{#1}%
+ {\bibsstring{jchamber}~{\scshape\romannumeral#1}}%
+ {#1}}
+\DeclareSourcemap{\maps[datatype=bibtex]{\map{%
+ \step[fieldsource=institutionmember,fieldtarget=namea]}}}
+\newbibmacro*{thestate}{%
+ \iflistundef{listc}%
+ {\printlist{institution}}%
+ {\printlist[institution]{listc}}%
+ \setunit{\addspace}%
+ \printfield{institutionspec}%
+ \setunit{\addspace}%
+ \printfield[parens]{institutionnationality}%
+ \setunit{\iusunitdelim}%
+ \printfield{jchamber}%
+ \setunit{\iusunitdelim}%
+ \printfield{institutionaddon}%
+ \setunit{\iusunitdelim}%
+ \printnames[default]{namea}%
+ \clearlist{institution}}
+
+\DeclareDatamodelFields[type=field,datatype=literal]{kindprov}
+ \DeclareDatamodelEntryfields{kindprov}
+
+\DeclareDatamodelFields[type=field,datatype=integer]{nprov}
+ \DeclareDatamodelEntryfields{nprov}
+ \DeclareFieldFormat{nprov}{#1}
+ \DeclareFieldFormat{stringandnprov}{\bibsstring{number}~#1}
+\DeclareDatamodelFields[type=field,datatype=integer]{neli}
+ \DeclareDatamodelEntryfields{neli}
+ \DeclareFieldFormat{neli}{#1}
+\DeclareDatamodelFields[type=field,datatype=literal]{eueli}
+ \DeclareDatamodelEntryfields{eueli}
+\DeclareLabeldate[itprov]{%
+ \field{origdate}
+ \field{origyear}
+ \field{date}
+ \field{year}
+ \field{urldate}
+ \field{eventdate}
+ \literal{nodate}}
+\DeclareExtradate{%
+ \scope{%
+ \field{labelyear}
+ \field{year}}
+ \scope{\field{origyear}}}
+\newbibmacro*{theprovid}{%
+ \ifboolexpr{not test {\iffieldundef{neli}}}%
+ {\iffieldundef{eueli}%
+ {\bibstring[\mkbibparens]{euelistring}}%
+ {}%
+ \setunit{\addspace}%
+ \printfield{origyear}%
+ \setunit{\addslash}%
+ \printfield{neli}%
+ \ifboolexpr{not test {\iffieldundef{eueli}}}%
+ {\setunit{\addslash}%
+ \printfield{eueli}}%
+ {}%
+ \setunit{\addspace}%
+ \bibstring{ofdate}%
+ \setunit{\addspace}%
+ \printorigdate}%
+ {\printorigdate%
+ \setunit{\iusunitdelim}%
+ \printfield[stringandnprov]{nprov}}}
+\DeclareListFormat[itprov,notetopro]{ofeuinstitution}{%
+ \usebibmacro{list:delim}{#1}%
+ \bibstring{ofeuinstitution}~{#1\isdot}%
+ \usebibmacro{list:andothers}}
+\DeclareListFormat[itprov,notetopro]{ofeucommission}{%
+ \usebibmacro{list:delim}{#1}%
+ \bibstring{ofeucommission}~{#1\isdot}%
+ \usebibmacro{list:andothers}}
+
+\newbibmacro*{ofeulegislator}{%
+ \ifboolexpr{not test {\iflanguage{english}}}%
+ {\iffieldequalstr{institution}{commission}%
+ {\printlist[ofeucommission]{institution}}%
+ {\iflistundef{listc}%
+ {\printlist[ofeuinstitution]{institution}}%
+ {\printlist[ofeuinstitution]{listc}}}%
+ \clearlist{institution}}%
+ {}}
+
+\DeclareDatamodelFields[type=field,datatype=literal]{provtitle}
+ \DeclareDatamodelEntryfields{provtitle}
+\DeclareDatamodelFields[type=field,datatype=literal]{provindtitle}
+ \DeclareDatamodelEntryfields{provindtitle}
+\DeclareDatamodelFields[type=field,datatype=literal]{titleparties}
+ \DeclareDatamodelEntryfields{titleparties}
+\DeclareDatamodelFields[type=field,datatype=literal]{shorttitleparties}
+ \DeclareDatamodelEntryfields{shorttitleparties}
+\DeclareDatamodelFields[type=field,datatype=integer]{neucase}
+ \DeclareDatamodelEntryfields{neucase}
+\DeclareDatamodelFields[type=field,datatype=integer]{yeareucase}
+ \DeclareDatamodelEntryfields{yeareucase}
+\DeclareDatamodelFields[type=field,datatype=integer]{necli}
+ \DeclareDatamodelEntryfields{necli}
+\DeclareDatamodelFields[type=field,datatype=literal]{eueclistring}
+ \DeclareDatamodelEntryfields{eueclistring}
+\DeclareDatamodelFields[type=field,datatype=literal]{courteclistring}
+ \DeclareDatamodelEntryfields{necli}
+
+\DeclareFieldFormat{provtitle}{\mkbibquote{#1}\isdot}
+\DeclareFieldFormat{neucase}{\bibstring{eucase}-#1}
+
+\newbibmacro*{theprovsubject}{%
+ \printfield{provtitle}%
+ \setunit{\iusunitdelim}\newblock%
+ \printfield{titleparties}%
+ \setunit{\iusunitdelim}\newblock%
+ \iftoggle{bbx:iusminimal}%
+ {\ifboolexpr{not test {\iffieldundef{neli}}%
+ and
+ not test {\iffieldundef{textprovtitle}}}%
+ {\setunit{\addspace}%
+ \printfield{textprovtitle}}%
+ {}}%
+ {\printfield{provindtitle}%
+ \ifboolexpr{not test {\iffieldundef{neli}}%
+ and
+ not test {\iffieldundef{textprovtitle}}}%
+ {\setunit{\addspace}%
+ \printfield[parens]{textprovtitle}}%
+ {}}%
+ \setunit{\iusunitdelim}\newblock%
+ \iffieldundef{neucase}%
+ {}%
+ {\printfield{neucase}%
+ \setunit{\addslash}%
+ \printfield{yeareucase}}}
+
+\newbibmacro*{provecli}{%
+ \iffieldundef{necli}%
+ {}%
+ {\printfield{eueclistring}%
+ \setunit{\addcolon}%
+ \printfield{courteclistring}%
+ \setunit{\addcolon}%
+ \printfield{origyear}%
+ \setunit{\addcolon}%
+ \printfield{necli}}}
+
+\DeclareDatamodelFields[type=field,datatype=literal]{parties}
+ \DeclareDatamodelEntryfields{parties}
+
+\DeclareSourcemap{\maps[datatype=bibtex]{
+ \map{
+ \pertype{itprov}
+ \step[fieldsource=noteby,fieldtarget=nameb]}
+ \map{
+ \pertype{notetoprov}
+ \step[fieldsource=noteby,fieldtarget=author]}}}
+\newbibmacro*{theprovinfos}{%
+ \iffieldundef{parties}%
+ {}%
+ {\printfield{parties}}%
+ \newunit\newblock%
+ \ifnameundef{nameb}%
+ {}
+ {\bibstring{withnoteby}%
+ \setunit{\addspace}%
+ \printnames[withannotator]{nameb}}}
+
+\DeclareDatamodelFields[type=field,datatype=literal]{ofbull}
+ \DeclareDatamodelEntryfields{ofbull}
+\DeclareDatamodelFields[type=field,datatype=literal]{ofbullseries}
+ \DeclareDatamodelEntryfields{ofbullseries}
+\DeclareDatamodelFields[type=field,datatype=integer]{ofbullnum}
+ \DeclareDatamodelEntryfields{ofbullnum}
+\DeclareDatamodelFields[type=field,datatype=literal]{ofportal}
+ \DeclareDatamodelEntryfields{ofportal}
+\newbibmacro{on:}{%
+ \bibstring{on}%
+ \printunit{\intitlepunct}}
+\DeclareFieldFormat{ofbullnum}{\bibsstring{number}~#1}
+\DeclareDatamodelFields[type=field,datatype=literal]{ojeuseries}
+ \DeclareDatamodelEntryfields{ojeuseries}
+
+\newtoggle{bbx:noportalurlinrunning}
+\newtoggle{bbx:absolutelynoportalurl}
+\DeclareBiblatexOption{global,type,entry}[boolean]
+ {noportalurlinrunning}[true]{%
+ \settoggle{bbx:noportalurlinrunning}{#1}}
+\DeclareBiblatexOption{global,type,entry}[boolean]
+ {absolutelynoportalurl}[true]{%
+ \settoggle{bbx:absolutelynoportalurl}{#1}}
+\ExecuteBibliographyOptions{noportalurlinrunning=true,
+ absolutelynoportalurl=false}
+\newbibmacro*{theprovsource}{%
+ \ifboolexpr{not test {\iffieldundef{ofbull}}%
+ or
+ not test {\iffieldundef{journaltitle}}%
+ or
+ not test {\iffieldundef{booktitle}}}%
+ {\ifboolexpr{test {\iffieldundef{ofportal}}%
+ or
+ togl {bbx:noportal}}%
+ {\usebibmacro{in:}}%
+ {}}%
+ {}%
+ \ifboolexpr{not test {\iffieldundef{ofportal}}%
+ and
+ not togl {bbx:noportal}}%
+ {\usebibmacro{on:}}%
+ {}%
+ \ifboolexpr{not test {\iffieldundef{ofbull}}%
+ and
+ test {\iffieldundef{ofportal}}}%
+ {\printfield{ofbull}%
+ \newunit%
+ \iffieldundef{ojeuseries}%
+ {\printfield{ofbullseries}%
+ \newunit%
+ \usebibmacro{date}%
+ \newunit%
+ \printfield{ofbullnum}}%
+ {\setunit{\addspace}%
+ \printfield{ojeuseries}%
+ \setunit{\addspace}%
+ \printfield[default]{ofbullnum}%
+ \newunit%
+ \usebibmacro{date}}%
+ \newunit\newblock%
+ \usebibmacro{chapter+pages}%
+ \newunit\newblock%
+ \ifboolexpr{togl {bbx:iusminimal}%
+ or
+ not test {\ifbibliography}}%
+ {}%
+ {\usebibmacro{url}}%
+ \newunit\newblock%
+ \usebibmacro{addendum+pubstate}}%
+ {}%
+ \ifboolexpr{not test {\iffieldundef{ofportal}}%
+ and
+ not togl {bbx:noportal}}%
+ {\printfield{ofportal}%
+ \newunit\newblock%
+ \ifboolexpr{(togl {bbx:noportalurlinrunning}%
+ and
+ not test {\ifbibliography})%
+ or
+ togl {bbx:absolutelynoportalurl}}%
+ {}%
+ {\usebibmacro{url}}}%
+ {}%
+ \ifboolexpr{not test {\iffieldundef{journaltitle}}%
+ and
+ test {\iffieldundef{ofportal}}}%
+ {\usebibmacro{journal+editor+id}}%
+ {}%
+ \ifboolexpr{not test {\iffieldundef{booktitle}}%
+ and
+ test {\iffieldundef{ofportal}}}%
+ {\ifboolexpr{togl {bbx:innamebeforetitle}%
+ and
+ not test {\iffieldundef{crossref}}}%
+ {\DeclareNameAlias{editor}{labelname}%
+ \usebibmacro{in:editor+others}%
+ \newunit\newblock%
+ \iftoggle{bbx:authoryearstyle}%
+ {}%
+ {\printfield{booktitle}%
+ \newunit%
+ \bibstring{opcit}%
+ \newunit%
+ \usebibmacro{bookfrac}%
+ \newunit%
+ \usebibmacro{chapter+pages}}}%
+ {}%
+ \ifboolexpr{togl {bbx:innamebeforetitle}%
+ and
+ not test {\iffieldundef{crossref}}}%
+ {}%
+ {\setunit{\printdelim{innametitledelim}}\newblock%
+ \usebibmacro{maintitle+booktitle}%
+ \newunit\newblock%
+ \usebibmacro{byeditor+others}%
+ \newunit\newblock%
+ \printfield{edition}%
+ \newunit%
+ \usebibmacro{barevolume+volumes}%
+ \newunit\newblock%
+ \usebibmacro{series+number}%
+ \newunit\newblock%
+ \printfield{note}%
+ \newunit\newblock%
+ \printlist{organization}%
+ \newunit%
+ \usebibmacro{publisher+location+date}%
+ \ifdefstring{\bbx@publocformat}{none}%
+ {\setunit{\addspace}}%
+ {}%
+ \ifdefstring{\bbx@publocformat}{publocyear}%
+ {\setunit{\addspace}}%
+ {}%
+ \ifdefstring{\bbx@publocformat}{locpubyear}%
+ {\newunit}%
+ {}%
+ \ifdefstring{\bbx@publocformat}{loccolonpub}%
+ {\newunit}%
+ {}%
+ \iftoggle{bbx:authoryearstyle}%
+ {\iftoggle{bbx:innamebeforetitle}%
+ {}%
+ {\clearfield{extradate}}%
+ \usebibmacro{date+extradate}}%
+ {}
+ \newunit\newblock%
+ \usebibmacro{chapter+pages}%
+ \newunit%
+ \printfield{pagetotal}%
+ \newunit\newblock%
+ \usebibmacro{isbn}%
+ \newunit\newblock%
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock%
+ \usebibmacro{addendum+pubstate}}}%
+ {}}
+
+\DeclareDataInheritance{collection}{itprov}{%
+ \inherit{title}{booktitle}
+ \inherit{subtitle}{booksubtitle}
+ \inherit{titleaddon}{booktitleaddon}
+ \noinherit{shorttitle}
+ \noinherit{sorttitle}
+ \noinherit{indextitle}
+ \noinherit{indexsorttitle}}
+
+\DeclareLabeltitle[itprov]{%
+ \field{textprovtitle}%
+ \field{codification}%
+ \field{shorttitleparties}%
+ \field{titleparties}}
+
+\DeclareBibliographyDriver{itprov}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{codification}%
+ \ifboolexpr{not test {\iffieldundef{neli}}%
+ or
+ test {\iflistundef{institution}}}%
+ {}%
+ {\usebibmacro{thestate}%
+ \setunit{\iusunitdelim}\newblock}%
+ \ifboolexpr{test {\iffieldequalstr{institution}{commission}}%
+ and
+ test {\iflanguage{english}}}%
+ {\printlist{institution}%
+ \setunit{\addspace}}%
+ {}%
+ \iffieldundef{neli}%
+ {\printfield{kindprov}}%
+ {\bibsentence\printfield{kindprov}}%
+ \setunit*{\addspace}%
+ \usebibmacro{theprovid}%
+ \ifboolexpr{not test {\iffieldundef{neli}}}%
+ {\setunit{\addspace}%
+ \usebibmacro{ofeulegislator}}%
+ {}%
+ \setunit{\iusunitdelim}\newblock%
+ \usebibmacro{theprovsubject}%
+ \setunit{\iusunitdelim}\newblock%
+ \usebibmacro{provecli}%
+ \setunit{\iusunitdelim}\newblock%
+ \iftoggle{bbx:iusminimal}%
+ {}%
+ {\usebibmacro{theprovinfos}}%
+ \setunit{\iusunitdelim}\newblock%
+ \usebibmacro{theprovsource}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \iftoggle{bbx:related}%
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}%
+ {}%
+ \usebibmacro{finentry}}
+
+\newbibmacro{notetoprov:noteby}{%
+ \usebibmacro{author}%
+ \clearname{author}%
+ \clearname{nameb}%
+ \iftoggle{bbx:authoryearstyle}%
+ {\setunit{\printdelim{nameyeardelim}}%
+ \usebibmacro{date+extradate}%
+ \newunit\newblock}%
+ {\setunit{\printdelim{nametitledelim}}\newblock}%
+ \iffieldundef{title}%
+ {}%
+ {\usebibmacro{title}}%
+ \setunit{\iusunitdelim}\newblock%
+ \biblstring{noteto}%
+ \setunit{\addspace}\newblock}
+
+\DeclareBibliographyDriver{notetoprov}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{notetoprov:noteby}%
+ \usebibmacro{codification}%
+ \ifboolexpr{not test {\iffieldundef{neli}}%
+ or
+ test {\iflistundef{institution}}}%
+ {}%
+ {\usebibmacro{thestate}%
+ \setunit{\iusunitdelim}\newblock}%
+ \ifboolexpr{test {\iffieldequalstr{institution}{commission}}%
+ and
+ test {\iflanguage{english}}}%
+ {\printlist{institution}%
+ \setunit{\addspace}}%
+ {}%
+ \iffieldundef{neli}%
+ {\printfield{kindprov}}%
+ {\bibsentence\printfield{kindprov}}%
+ \setunit*{\addspace}%
+ \usebibmacro{theprovid}%
+ \ifboolexpr{not test {\iffieldundef{neli}}}%
+ {\setunit{\addspace}%
+ \usebibmacro{ofeulegislator}}%
+ {}%
+ \setunit{\iusunitdelim}\newblock%
+ \usebibmacro{theprovsubject}%
+ \setunit{\iusunitdelim}\newblock%
+ \usebibmacro{provecli}%
+ \setunit{\iusunitdelim}\newblock%
+ \iftoggle{bbx:iusminimal}%
+ {}%
+ {\usebibmacro{theprovinfos}}%
+ \setunit{\iusunitdelim}\newblock%
+ \usebibmacro{theprovsource}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \iftoggle{bbx:related}%
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}%
+ {}%
+ \usebibmacro{finentry}}
+%% ---------------------------------------
+%%
+%% Francesco Contini, The accursius style,
+%% Cagliari 2024
+%%
+%% Copyright (C) 2024 Francesco Contini,
+%% Cagliari (Sardinia). Availability under
+%% the LaTeX Project Public License. Email
+%% to cicciocontini [at] outlook [dot] it.
+%%
+%% ---------------------------------------
+%%
+%% End of file `accursius.bbx'.
diff --git a/Master/texmf-dist/tex/latex/biblatex-accursius/accursius.cbx b/Master/texmf-dist/tex/latex/biblatex-accursius/accursius.cbx
new file mode 100644
index 00000000000..eda33eddc88
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-accursius/accursius.cbx
@@ -0,0 +1,387 @@
+%%
+%% This is file `accursius.cbx',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% biblatex-accursius.dtx (with options: `accursius-cbx')
+%% ---------------------------------------
+%%
+%% Francesco Contini, The accursius style,
+%% Cagliari 2024
+%%
+%% Copyright (C) 2024 Francesco Contini
+%%
+%% The work consists of the README.md, the
+%% biblatex-accursius.dtx and the derived:
+%% - accursius.bbx,
+%% - accursius.cbx,
+%% - italian-accursius.lbx,
+%% - english-accursius.lbx,
+%% - french-accursius.lbx,
+%% - accursius.bib,
+%% - biblatex-accursius.pdf.
+%% The .pdf derived file refers to the
+%% preamble from the .dtx source and repro
+%% duces its text.
+%% The work may be distributed and mod
+%% ified under the conditions of the LaTeX
+%% Project Public License either v. 1.3 of
+%% the license or at your option any later
+%% version. For the latest version of this
+%% license see the url below. V. 1.3c and
+%% following are part of all distributions
+%% of LaTeX version 2008 or later.
+%% The product has got the LPPL mainte
+%% nance status `maintained'.
+%% The current maintainer of this work
+%% is Francesco Contini. To claim and feed
+%% back or to get a clarification email me
+%% to cicciocontini [at] outlook [dot] it.
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% ---------------------------------------
+\ProvidesFile{accursius.cbx}
+\RequireCitationStyle{verbose-trad1}
+
+\ExecuteBibliographyOptions{citepages=omit}
+
+\AtEveryCitekey{\togglefalse{bbx:related}}
+\providecommand{\ifcitesingletitle}{\ifsingletitle}
+
+\newtoggle{cbx:authoryearstyle}
+
+\renewbibmacro*{cite:name}{%
+ \printnames{labelname}%
+ \setunit*{\printdelim{nametitledelim}}}
+\renewbibmacro*{cite:idem}{%
+ \bibstring[\mkidem]{idem\thefield{gender}}%
+ \setunit{\printdelim{nametitledelim}}}
+\newbibmacro*{cite:labeldate+extradate}{%
+ \iffieldundef{labelyear}%
+ {}%
+ {\printtext[bibhyperref]{\printlabeldateextra}}}
+
+%%
+%% This block is by Moewe, from the Stack Exchange
+%% community. See the `accursius' style documentation.
+%%
+\def\abx@aux@citesingletitlecount#1#2%
+{\csnumgdef{blx@citesingletitle@counter@#1}{#2}}
+\def\ifcitesingletitle{%
+\ifcsundef%
+{blx@citesingletitle@counter@\thefield{namehash}}
+{\@secondoftwo}
+{\ifnumless{\csuse%
+{blx@citesingletitle@counter@\thefield{namehash}%
+}}{2}}}
+\let\blx@citesingletitle@namelist\empty
+\AtEveryCitekey{%
+\xifinlist{\thefield{namehash}}%
+{\blx@citesingletitle@namelist}{}%
+{\listxadd{\blx@citesingletitle@namelist}%
+{\thefield{namehash}}}%
+\xifinlistcs{\thefield{entrykey}}%
+{blx@citesingletitle@\thefield{namehash}}{}%
+{\listcsxadd%
+{blx@citesingletitle@\thefield{namehash}}%
+{\thefield{entrykey}}}}
+\blx@AtEndDocument{%
+\def\do#1{%
+\begingroup%
+\blx@tempcnta\z@
+\def\do##1{%
+\advance\blx@tempcnta\@ne}%
+\dolistcsloop{blx@citesingletitle@#1}%
+\blx@auxwrite\@mainaux{}{%
+\string\abx@aux@citesingletitlecount{#1}%
+{\the\blx@tempcnta}}%
+\ifnumequal%
+{0\csuse{blx@citesingletitle@counter@#1}}%
+{\blx@tempcnta}%
+{}%
+{\blx@rerun@latex}\endgroup}%
+\dolistloop{\blx@citesingletitle@namelist}}
+%%
+%% It is available under the CC BY-SA 4.0 license.
+%%
+
+\renewbibmacro*{cite:full}{%
+ \usebibmacro{cite:full:citepages}%
+ \ifciteidem%
+ {\printtext[bibhypertarget]{%
+ \usedriver
+ {\renewbibmacro{author}{%
+ \usebibmacro{cite:idem}}}%
+ {\thefield{entrytype}}}}%
+ {\printtext[bibhypertarget]{%
+ \usedriver
+ {\DeclareNameAlias{theauthor}{theauthornotrev}}%
+ {\thefield{entrytype}}}}%
+ \usebibmacro{shorthandintro}}
+
+\newbibmacro*{cite:seenitprov}{%
+ \usebibmacro{thestate}%
+ \setunit*{\iusunitdelim}%
+ \printfield{kindprov}%
+ \setunit{\addspace}%
+ \iffieldundef{titleparties}%
+ {}%
+ {\iffieldundef{shorttitleparties}%
+ {\printfield{titleparties}}%
+ {\printfield{shorttitleparties}}}%
+ \ifboolexpr{test {\iffieldundef{codification}}%
+ and
+ test {\iffieldundef{titleparties}}}%
+ {\iffieldundef{nprov}%
+ {\printorigdate}%
+ {\printfield{nprov}%
+ \setunit{\addslash}%
+ \printfield{origyear}}}%
+ {}}
+
+\newcommand{\citedhref}[1]{%
+ \bibhyperlink{cite\csuse{cbx@lastcite@\thefield{entrykey}}}%
+ {#1}}
+
+\newbibmacro*{cite:eli}{%
+ {\bibsentence\printfield{kindprov}}%
+ \setunit{\addspace}%
+ \iffieldundef{eueli}%
+ {\bibstring[\mkbibparens]{euelistring}}%
+ {}%
+ \setunit{\addspace}%
+ \printfield{origyear}%
+ \setunit{\addslash}%
+ \printfield{neli}%
+ \ifboolexpr{not test {\iffieldundef{eueli}}}%
+ {\setunit{\addslash}%
+ \printfield{eueli}}%
+ {}}
+
+\newbibmacro*{cite:itprov}{%
+ \ifciteseen%
+ {\iffieldundef{shorthand}%
+ {\iffieldundef{codification}%
+ {}%
+ {\printfield{codification}}%
+ \ifboolexpr{not test {\iffieldundef{neli}}}%
+ {\iffieldundef{textprovtitle}%
+ {\usebibmacro{cite:eli}}%
+ {\printfield{textprovtitle}}}%
+ {}%
+ \ifboolexpr{test {\iffieldundef{codification}}%
+ and
+ test {\iffieldundef{neli}}}%
+ {\usebibmacro{cite:seenitprov}}%
+ {}%
+ \newunit%
+ \printtext{%
+ \citedhref{%
+ \bibstring{opcit}}}}%
+ {\usebibmacro{cite:shorthand}}}%
+ {\usebibmacro{cite:full}%
+ \usebibmacro{cite:save}}}
+
+\newbibmacro*{cite:label}{%
+ \iffieldundef{label}%
+ {\printtext[bibhyperref]{%
+ \printfield[citetitle]{labeltitle}}}
+ {\printtext[bibhyperref]{%
+ \printfield{label}}}}
+
+\newbibmacro*{cite:authoryearstyle}{%
+ \iffieldundef{shorthand}%
+ {\ifentrytype{itprov}%
+ {\usebibmacro{cite:seenitprov}}%
+ {\ifthenelse{%
+ \ifnameundef{labelname}%
+ \OR%
+ \iffieldundef{labelyear}}%
+ {\usebibmacro{cite:label}%
+ \setunit{\printdelim{nonameyeardelim}}}%
+ {\printnames{labelname}%
+ \setunit{\printdelim{nameyeardelim}}}%
+ \usebibmacro{cite:labeldate+extradate}}}%
+ {\usebibmacro{cite:shorthand}}}
+
+\renewbibmacro*{cite:ibid}{%
+ \printtext{%
+ \citedhref{%
+ \ifloccit%
+ {\bibstring[\mkbibemph]{ibidem}%
+ \ifbibstring{ivi}%
+ {\global\toggletrue{cbx:loccit}}%
+ {\global\togglefalse{cbx:loccit}}}%
+ {\ifbibstring{ivi}%
+ {\bibstring{ivi}}%
+ {\bibstring[\mkbibemph]{ibidem}}}}}}
+\renewbibmacro*{cite:title}{%
+ \printtext{%
+ \printfield[citetitle]{labeltitle}}}
+\renewbibmacro*{cite:loccit}{%
+ \printtext{%
+ \citedhref{%
+ \bibstring[\mkbibemph]{loccit}}}%
+ \global\toggletrue{cbx:loccit}}
+\renewbibmacro*{cite:opcit}{%
+ \printtext{%
+ \citedhref{%
+ \ifcitesingletitle%
+ {\bibstring[\mkbibemph]{uniquecited}}%
+ {\bibstring[\mkbibemph]{opultcit}}}}}
+
+\newbibmacro*{cite:verbosestyle:seen}{%
+ \ifciteibid%
+ {\usebibmacro{cite:ibid}}%
+ {\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}%
+ {\usebibmacro{cite:idem}%
+ \usebibmacro{cite:title}%
+ \newunit%
+ \printtext[bibhyperlink]{%
+ \bibstring{opcit}}}%
+ {\ifnameundef{labelname}%
+ {\usebibmacro{cite:title}%
+ \newunit%
+ \bibstring{opcit}}%
+ {\usebibmacro{cite:name}%
+ \ifopcit%
+ {\ifloccit%
+ {\usebibmacro{cite:loccit}}%
+ {\usebibmacro{cite:opcit}}}%
+ {\usebibmacro{cite:title}%
+ \newunit%
+ \printtext{\citedhref{%
+ \bibstring{opcit}}}}}}}%
+ \usebibmacro{cite:save}}
+
+\newbibmacro*{cite:verbosestyle}{%
+ \ifentrytype{itprov}%
+ {\bibhypertarget{cite\the\value{instcount}}{%
+ \usebibmacro{cite:itprov}}}%
+ {\usebibmacro{cite:citepages}%
+ \global\togglefalse{cbx:loccit}%
+ \bibhypertarget{cite\the\value{instcount}}{%
+ \ifciteseen%
+ {\iffieldundef{shorthand}%
+ {\usebibmacro{cite:verbosestyle:seen}}%
+ {\usebibmacro{cite:shorthand}}}%
+ {\usebibmacro{cite:full}%
+ \usebibmacro{cite:save}}}}}
+
+\renewbibmacro*{cite}{%
+ \iftoggle{cbx:authoryearstyle}%
+ {\usebibmacro{cite:authoryearstyle}}%
+ {\usebibmacro{cite:verbosestyle}}}
+
+\DeclareCiteCommand*{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \clearname{author}%
+ \clearlist{institution}%
+ \clearlist{listc}%
+ \clearname{labelname}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+\renewrobustcmd*{\Cite}{%
+ \@ifstar%
+ {\bibsentence\cite*}%
+ {\bibsentence\cite}}
+
+\DeclareCiteCommand{\citeauthor}%
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}%
+ {\ifentrytype{itprov}%
+ {\ifciteindex%
+ {\indexlist{institution}}%
+ {}%
+ \printlist[textinstitution]{institution}}%
+ {\ifciteindex%
+ {\indexnames{labelname}}%
+ {}%
+ \printnames[labeltextname]{labelname}}}%
+ {\multicitedelim}%
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\citetitle}
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}%
+ {\ifciteindex%
+ {\indexfield{indextitle}}%
+ {}%
+ \ifboolexpr{test {\ifentrytype{itprov}}%
+ and
+ test {\iffieldundef{textprovtitle}}%
+ and
+ test {\iffieldundef{codification}}%
+ and
+ test {\iffieldundef{titleparties}}}%
+ {\iffieldundef{neli}%
+ {\clearlist{institution}%
+ \clearlist{listc}%
+ \clearfield{institutionspec}%
+ \clearfield{institutionaddon}%
+ \clearfield{jchamber}%
+ \clearname{author}%
+ \usebibmacro{cite:seenitprov}}%
+ {\usebibmacro{cite:eli}}}%
+ {\printfield[citetitle]{labeltitle}}}%
+ {\multicitedelim}%
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\citeyear}
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}%
+ {\ifentrytype{itprov}%
+ {\printfield{origyear}}%
+ {\printfield{year}}}%
+ {\multicitedelim}%
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand*{\citeyear}
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}%
+ {\ifentrytype{itprov}%
+ {\printfield{origyear}\printfield{extradate}}%
+ {\printfield{year}\printfield{extradate}}}%
+ {\multicitedelim}%
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\citedate}
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}%
+ {\ifentrytype{itprov}%
+ {\printorigdate}%
+ {\printdate}}%
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand*{\citedate}
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}%
+ {\ifentrytype{itprov}%
+ {\printorigdateextra}%
+ {\printdateextra}}%
+ {\multicitedelim}%
+ {\usebibmacro{postnote}}
+%% ---------------------------------------
+%%
+%% Francesco Contini, The accursius style,
+%% Cagliari 2024
+%%
+%% Copyright (C) 2024 Francesco Contini,
+%% Cagliari (Sardinia). Availability under
+%% the LaTeX Project Public License. Email
+%% to cicciocontini [at] outlook [dot] it.
+%%
+%% ---------------------------------------
+%%
+%% End of file `accursius.cbx'.
diff --git a/Master/texmf-dist/tex/latex/biblatex-accursius/english-accursius.lbx b/Master/texmf-dist/tex/latex/biblatex-accursius/english-accursius.lbx
new file mode 100644
index 00000000000..4f50d5f1364
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-accursius/english-accursius.lbx
@@ -0,0 +1,119 @@
+%%
+%% This is file `english-accursius.lbx',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% biblatex-accursius.dtx (with options: `english-accursius-lbx')
+%% ---------------------------------------
+%%
+%% Francesco Contini, The accursius style,
+%% Cagliari 2024
+%%
+%% Copyright (C) 2024 Francesco Contini
+%%
+%% The work consists of the README.md, the
+%% biblatex-accursius.dtx and the derived:
+%% - accursius.bbx,
+%% - accursius.cbx,
+%% - italian-accursius.lbx,
+%% - english-accursius.lbx,
+%% - french-accursius.lbx,
+%% - accursius.bib,
+%% - biblatex-accursius.pdf.
+%% The .pdf derived file refers to the
+%% preamble from the .dtx source and repro
+%% duces its text.
+%% The work may be distributed and mod
+%% ified under the conditions of the LaTeX
+%% Project Public License either v. 1.3 of
+%% the license or at your option any later
+%% version. For the latest version of this
+%% license see the url below. V. 1.3c and
+%% following are part of all distributions
+%% of LaTeX version 2008 or later.
+%% The product has got the LPPL mainte
+%% nance status `maintained'.
+%% The current maintainer of this work
+%% is Francesco Contini. To claim and feed
+%% back or to get a clarification email me
+%% to cicciocontini [at] outlook [dot] it.
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% ---------------------------------------
+\ProvidesFile{english-accursius.lbx}
+\ProvidesFile{english-accursius.lbx}
+
+\InheritBibliographyExtras{british}
+
+\NewBibliographyString{attachedto}
+\NewBibliographyString{cited}
+\NewBibliographyString{commission}
+\NewBibliographyString{editorsm}
+\NewBibliographyString{editorsf}
+\NewBibliographyString{editorsn}
+\NewBibliographyString{editorpp}
+\NewBibliographyString{editorpm}
+\NewBibliographyString{editorpf}
+\NewBibliographyString{editorpn}
+\NewBibliographyString{eucase}
+\NewBibliographyString{euelistring}
+\NewBibliographyString{director}
+\NewBibliographyString{jchamber}
+\NewBibliographyString{noteto}
+\NewBibliographyString{ofdate}
+\NewBibliographyString{ofeucommission}
+\NewBibliographyString{ofeuinstitution}
+\NewBibliographyString{on}
+\NewBibliographyString{section}
+\NewBibliographyString{tome}
+\NewBibliographyString{opultcit}
+\NewBibliographyString{uniquecited}
+\NewBibliographyString{withnoteby}
+
+\DeclareBibliographyStrings{%
+ inherit = {british},
+ attachedto = {{attached to}{att\adddotspace to}},
+ commission = {{Commission}{Commission}},
+ director = {{directed by}{dir\adddotspace by}},
+ editorsm = {{editor}{ed\adddot}},
+ editorsf = {{editor}{ed\adddot}},
+ editorsn = {{editor}{ed\adddot}},
+ editorpp = {{editor}{eds\adddot}},
+ editorpm = {{editor}{eds\adddot}},
+ editorpf = {{editor}{eds\adddot}},
+ editorpn = {{editor}{eds\adddot}},
+ eucase = {{C}{C}},
+ euelistring = {{EU}{EU}},
+ ibidem = {{ibidem}{ibid\adddot}},
+ jchamber = {{chamber}{chamb\adddot}},
+ loccit = {{opere et loco ultimo citato}%
+ {op\adddotspace et\space loc\adddotspace
+ ult\adddotspace cit\adddot}},
+ noteto = {{note to}{note to}},
+ ofdate = {{of}{of}},
+ ofeucommission = {{of the}{of the}},
+ ofeuinstitution = {{of the}{of the}},
+ on = {{on}{on}},
+ opcit = {{cited}{cit\adddot}},
+ opultcit = {{opere ultimo citato}%
+ {op\adddotspace ult\adddotspace cit\adddot}},
+ section = {{section}{sec\adddot}},
+ tome = {{tome}{t\adddot}},
+ uniquecited = {{opere citato}{op\adddotspace cit\adddot}},
+ version = {{version}{v\adddot}},
+ withnoteby = {{with note by di}{with note by}}}
+%% ---------------------------------------
+%%
+%% Francesco Contini, The accursius style,
+%% Cagliari 2024
+%%
+%% Copyright (C) 2024 Francesco Contini,
+%% Cagliari (Sardinia). Availability under
+%% the LaTeX Project Public License. Email
+%% to cicciocontini [at] outlook [dot] it.
+%%
+%% ---------------------------------------
+%%
+%% End of file `english-accursius.lbx'.
diff --git a/Master/texmf-dist/tex/latex/biblatex-accursius/french-accursius.lbx b/Master/texmf-dist/tex/latex/biblatex-accursius/french-accursius.lbx
new file mode 100644
index 00000000000..70d16c29278
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-accursius/french-accursius.lbx
@@ -0,0 +1,119 @@
+%%
+%% This is file `french-accursius.lbx',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% biblatex-accursius.dtx (with options: `french-accursius-lbx')
+%% ---------------------------------------
+%%
+%% Francesco Contini, The accursius style,
+%% Cagliari 2024
+%%
+%% Copyright (C) 2024 Francesco Contini
+%%
+%% The work consists of the README.md, the
+%% biblatex-accursius.dtx and the derived:
+%% - accursius.bbx,
+%% - accursius.cbx,
+%% - italian-accursius.lbx,
+%% - english-accursius.lbx,
+%% - french-accursius.lbx,
+%% - accursius.bib,
+%% - biblatex-accursius.pdf.
+%% The .pdf derived file refers to the
+%% preamble from the .dtx source and repro
+%% duces its text.
+%% The work may be distributed and mod
+%% ified under the conditions of the LaTeX
+%% Project Public License either v. 1.3 of
+%% the license or at your option any later
+%% version. For the latest version of this
+%% license see the url below. V. 1.3c and
+%% following are part of all distributions
+%% of LaTeX version 2008 or later.
+%% The product has got the LPPL mainte
+%% nance status `maintained'.
+%% The current maintainer of this work
+%% is Francesco Contini. To claim and feed
+%% back or to get a clarification email me
+%% to cicciocontini [at] outlook [dot] it.
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% ---------------------------------------
+\ProvidesFile{french-accursius.lbx}
+\ProvidesFile{french-accursius.lbx}
+
+\InheritBibliographyExtras{french}
+
+\NewBibliographyString{attachedto}
+\NewBibliographyString{cited}
+\NewBibliographyString{commission}
+\NewBibliographyString{editorsm}
+\NewBibliographyString{editorsf}
+\NewBibliographyString{editorsn}
+\NewBibliographyString{editorpp}
+\NewBibliographyString{editorpm}
+\NewBibliographyString{editorpf}
+\NewBibliographyString{editorpn}
+\NewBibliographyString{eucase}
+\NewBibliographyString{euelistring}
+\NewBibliographyString{director}
+\NewBibliographyString{jchamber}
+\NewBibliographyString{noteto}
+\NewBibliographyString{ofdate}
+\NewBibliographyString{ofeucommission}
+\NewBibliographyString{ofeuinstitution}
+\NewBibliographyString{on}
+\NewBibliographyString{section}
+\NewBibliographyString{tome}
+\NewBibliographyString{opultcit}
+\NewBibliographyString{uniquecited}
+\NewBibliographyString{withnoteby}
+
+\DeclareBibliographyStrings{%
+ inherit = {french},
+ attachedto = {{attaché à}{att\adddotspace à}},
+ commission = {{Commission}{Commission}},
+ director = {{dirigé par}{dir\adddotspace par}},
+ editorsm = {{\'editeur}{\'ed\adddot}},
+ editorsf = {{\'editrice}{\'ed\adddot}},
+ editorsn = {{\'editeur}{\'ed\adddot}},
+ editorpp = {{\'editeurs}{\'ed\adddot}},
+ editorpm = {{\'editeurs}{\'ed\adddot}},
+ editorpf = {{\'editrices}{\'ed\adddot}},
+ editorpn = {{\'editeurs}{\'ed\adddot}},
+ eucase = {{C}{C}},
+ euelistring = {{UE}{UE}},
+ ibidem = {{ibidem}{ibid\adddot}},
+ jchamber = {{chambre}{chambre}},
+ loccit = {{opere et loco ultimo citato}%
+ {op\adddotspace et\space loc\adddotspace
+ ult\adddotspace cit\adddot}},
+ noteto = {{exposé par}{exposé par}},
+ ofdate = {{du}{du}},
+ ofeucommission = {{de la}{de la}},
+ ofeuinstitution = {{du}{du}},
+ on = {{sur}{sur}},
+ opcit = {{cité}{cité}},
+ opultcit = {{opere ultimo citato}%
+ {op\adddotspace ult\adddotspace cit\adddot}},
+ section = {{section}{sec\adddot}},
+ tome = {{volume}{vol\adddot}},
+ uniquecited = {{opere citato}{op\adddotspace cit\adddot}},
+ version = {{version}{v\adddot}},
+ withnoteby = {{exposé par}{exposé par}}}
+%% ---------------------------------------
+%%
+%% Francesco Contini, The accursius style,
+%% Cagliari 2024
+%%
+%% Copyright (C) 2024 Francesco Contini,
+%% Cagliari (Sardinia). Availability under
+%% the LaTeX Project Public License. Email
+%% to cicciocontini [at] outlook [dot] it.
+%%
+%% ---------------------------------------
+%%
+%% End of file `french-accursius.lbx'.
diff --git a/Master/texmf-dist/tex/latex/biblatex-accursius/italian-accursius.lbx b/Master/texmf-dist/tex/latex/biblatex-accursius/italian-accursius.lbx
new file mode 100644
index 00000000000..055642580df
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-accursius/italian-accursius.lbx
@@ -0,0 +1,128 @@
+%%
+%% This is file `italian-accursius.lbx',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% biblatex-accursius.dtx (with options: `italian-accursius-lbx')
+%% ---------------------------------------
+%%
+%% Francesco Contini, The accursius style,
+%% Cagliari 2024
+%%
+%% Copyright (C) 2024 Francesco Contini
+%%
+%% The work consists of the README.md, the
+%% biblatex-accursius.dtx and the derived:
+%% - accursius.bbx,
+%% - accursius.cbx,
+%% - italian-accursius.lbx,
+%% - english-accursius.lbx,
+%% - french-accursius.lbx,
+%% - accursius.bib,
+%% - biblatex-accursius.pdf.
+%% The .pdf derived file refers to the
+%% preamble from the .dtx source and repro
+%% duces its text.
+%% The work may be distributed and mod
+%% ified under the conditions of the LaTeX
+%% Project Public License either v. 1.3 of
+%% the license or at your option any later
+%% version. For the latest version of this
+%% license see the url below. V. 1.3c and
+%% following are part of all distributions
+%% of LaTeX version 2008 or later.
+%% The product has got the LPPL mainte
+%% nance status `maintained'.
+%% The current maintainer of this work
+%% is Francesco Contini. To claim and feed
+%% back or to get a clarification email me
+%% to cicciocontini [at] outlook [dot] it.
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% ---------------------------------------
+\ProvidesFile{italian-accursius.lbx}
+\ProvidesFile{italian-accursius.lbx}
+
+\InheritBibliographyExtras{italian}
+
+\NewBibliographyString{attachedto}
+\NewBibliographyString{cited}
+\NewBibliographyString{commission}
+\NewBibliographyString{editorsm}
+\NewBibliographyString{editorsf}
+\NewBibliographyString{editorsn}
+\NewBibliographyString{editorpp}
+\NewBibliographyString{editorpm}
+\NewBibliographyString{editorpf}
+\NewBibliographyString{editorpn}
+\NewBibliographyString{eucase}
+\NewBibliographyString{euelistring}
+\NewBibliographyString{director}
+\NewBibliographyString{ivi}
+\NewBibliographyString{jchamber}
+\NewBibliographyString{noteto}
+\NewBibliographyString{ofdate}
+\NewBibliographyString{ofeucommission}
+\NewBibliographyString{ofeuinstitution}
+\NewBibliographyString{on}
+\NewBibliographyString{section}
+\NewBibliographyString{tome}
+\NewBibliographyString{opultcit}
+\NewBibliographyString{uniquecited}
+\NewBibliographyString{withnoteby}
+
+\DeclareBibliographyStrings{%
+ inherit = {italian},
+ attachedto = {{allegato a}{all\adddotspace a}},
+ citedas = {{di seguito citato come}%
+ {di seg\adddotspace cit\adddotspace come}},
+ commission = {{Commissione}{Commissione}},
+ director = {{sotto la direzione di}%
+ {dir\adddotspace da}},
+ editor = {{curatore}{cur\adddot}},
+ editorsm = {{curatore}{cur\adddot}},
+ editorsf = {{curatrice}{cur\adddot}},
+ editorsn = {{curatore}{cur\adddot}},
+ editorpp = {{curatori}{curr\adddot}},
+ editorpm = {{curatori}{curr\adddot}},
+ editorpf = {{curatrici}{curr\adddot}},
+ editorpn = {{curatori}{curr\adddot}},
+ editors = {{curatori}{curr\adddot}},
+ eucase = {{C}{C}},
+ euelistring = {{UE}{UE}},
+ ibidem = {{ibidem}{ibid\adddot}},
+ ivi = {{ivi}{ivi}},
+ jchamber = {{sezione}{sez\adddot}},
+ loccit = {{opere et loco ultimo citato}%
+ {op\adddotspace et\space loc\adddotspace
+ ult\adddotspace cit\adddot}},
+ noteto = {{nota a}{nota a}},
+ ofdate = {{del}{del}},
+ ofeucommission = {{della}{della}},
+ ofeuinstitution = {{del}{del}},
+ on = {{su}{su}},
+ opcit = {{citato}{cit\adddot}},
+ opultcit = {{opere ultimo citato}%
+ {op\adddotspace ult\adddotspace cit\adddot}},
+ section = {{sezione}{sez\adddot}},
+ tome = {{tomo}{t\adddot}},
+ uniquecited = {{opere citato}{op\adddotspace cit\adddot}},
+ urlseen = {{ultima consultazione}%
+ {ult\adddotspace cons\adddot}},
+ version = {{versione}{v\adddot}},
+ withnoteby = {{con nota di}{con nota di}}}
+%% ---------------------------------------
+%%
+%% Francesco Contini, The accursius style,
+%% Cagliari 2024
+%%
+%% Copyright (C) 2024 Francesco Contini,
+%% Cagliari (Sardinia). Availability under
+%% the LaTeX Project Public License. Email
+%% to cicciocontini [at] outlook [dot] it.
+%%
+%% ---------------------------------------
+%%
+%% End of file `italian-accursius.lbx'.
diff --git a/Master/texmf-dist/tex/latex/biblatex-cse/biblatex-cse.bbx b/Master/texmf-dist/tex/latex/biblatex-cse/biblatex-cse.bbx
new file mode 100644
index 00000000000..e71f783e061
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-cse/biblatex-cse.bbx
@@ -0,0 +1,135 @@
+%% This is file `biblatex-cse.bbx',
+%%
+%% Copyright (C) 2024 by João Lourenço <joao.lourenco@fct.unl.pt>
+%%
+%% 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:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2006/05/20 or later.
+%%
+\def\fileversion{1.1.0}
+\def\filedate {2025/01/01}
+\edef\filename {biblatex-cse}
+
+\ProvidesFile{\filename.cbx}[%
+ \filedate\ v\fileversion (João M. Lourenço) Council of Science Editors bibliography style]
+
+\RequireBibliographyStyle{authoryear}
+
+% From: https://tex.stackexchange.com/questions/12254/biblatex-how-to-remove-the-parentheses-around-the-year-in-authoryear-style
+% By courtesy of Enrico Gregorio (egreg)
+\def\act@on@bibmacro#1#2{%
+ \expandafter#1\csname abx@macro@\detokenize{#2}\endcsname
+}
+\def\patchbibmacro{\act@on@bibmacro\patchcmd}
+\def\pretobibmacro{\act@on@bibmacro\pretocmd}
+\def\apptobibmacro{\act@on@bibmacro\apptocmd}
+\def\showbibmacro{\act@on@bibmacro\show}
+
+\ExecuteBibliographyOptions{
+ maxcitenames=2,
+ minbibnames=10,
+ maxbibnames=10,
+ dashed=false,
+ uniquelist=false,
+ giveninits=true,
+ urldate=iso,
+ date=year,
+ seconds=true,
+}
+
+% \usepackage{xpatch}
+
+% Remove commas between family and given names
+\DeclareNameAlias{sortname}{family-given}
+\renewrobustcmd*{\revsdnamepunct}{}
+\renewrobustcmd*{\bibinitdelim}{}
+
+% Remove commas between family and given names
+\renewrobustcmd*{\revsdnamepunct}{}
+\renewrobustcmd*{\bibinitdelim}{}
+
+% Remove dot after initials
+\renewrobustcmd*{\bibinitperiod}{}
+
+% Remove quotation marks from title
+\DeclareFieldFormat*{title}{#1}
+
+% Remove emphasized from titles
+\DeclareFieldFormat*{journaltitle}{#1\isdot}
+\DeclareFieldFormat{postnote}{#1}
+\DeclareFieldFormat{multipostnote}{#1}
+\renewcommand*{\bibpagespunct}{\addcolon}
+\renewcommand{\postnotedelim}{%
+ \iffieldpages{postnote}
+ {\addcolon\space}
+ {\addspace}}
+
+% Remove "and" before last author
+\DefineBibliographyExtras{english}{%
+ \DeclareFieldFormat{pages}{#1}
+ \DeclareDelimFormat{finalnamedelim}{%
+ \ifnumgreater{\value{liststop}}{2}{%
+ \printdelim{multinamedelim}}{\addspace\bibstring{and}\space}}}
+
+% Add dot after list of authors (and before year) and remove parentheses in date
+% \xpatchbibmacro{date+extradate}{%
+\patchbibmacro{date+extradate}{%
+ \printtext[parens]%
+}{%
+ \setunit*{\addperiod\space}%
+ \printtext%
+}{}{}
+
+% Remove "in:" prefix in journal title
+\renewbibmacro{in:}{}
+
+% Cite as "family initials"
+\DeclareNameFormat{labelname}{%
+ \ifcase\value{uniquename}%
+ \usebibmacro{name:family}
+ {\namepartfamily}
+ {\namepartgiven}
+ {\namepartprefix}
+ {\namepartsuffix}%
+ \or
+ \ifuseprefix
+ {\usebibmacro{name:family-given}
+ {\namepartfamily}
+ {\namepartgiveni}
+ {\namepartprefix}
+ {\namepartsuffixi}}
+ {\usebibmacro{name:family-given}
+ {\namepartfamily}
+ {\namepartgiveni}
+ {\namepartprefixi}
+ {\namepartsuffixi}}%
+ \or
+ \usebibmacro{name:family-given}
+ {\namepartfamily}
+ {\namepartgiven}
+ {\namepartprefix}
+ {\namepartsuffix}%
+ \fi
+ \usebibmacro{name:andothers}}
+
+% Always remove "and" before last author
+\ifdefined\prebibhook%
+ \DeclareDelimFormat{finalnamedelim}{%
+ \printdelim{multinamedelim}%
+ }%
+\else\ifdefined\bibliography%
+ \let\origbibliography=\bibliography%
+ \renewcommand{\bibliography}{%
+ \DeclareDelimFormat{finalnamedelim}{%
+ \printdelim{multinamedelim}%
+ }%
+ \origbibliography%
+ }%
+\fi\fi
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-cse/biblatex-cse.cbx b/Master/texmf-dist/tex/latex/biblatex-cse/biblatex-cse.cbx
new file mode 100644
index 00000000000..45722ed88c5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-cse/biblatex-cse.cbx
@@ -0,0 +1,23 @@
+%% This is file `biblatex-cse.cbx',
+%%
+%% Copyright (C) 2024 by João Lourenço <joao.lourenco@fct.unl.pt>
+%%
+%% 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:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2006/05/20 or later.
+%%
+\def\fileversion{1.1.0}
+\def\filedate {2025/01/01}
+\edef\filename {biblatex-cse}
+
+\ProvidesFile{\filename.cbx}[%
+ \filedate\ v\fileversion (João M. Lourenço) Council of Science Editors bibliography style]
+
+\RequireCitationStyle{authoryear}
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-enc/enc.bbx b/Master/texmf-dist/tex/latex/biblatex-enc/enc.bbx
index 4dada49c3cd..95c46d1ada4 100644
--- a/Master/texmf-dist/tex/latex/biblatex-enc/enc.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-enc/enc.bbx
@@ -1,9 +1,9 @@
- %% biblatex-enc v.1.0 (17/06/2017)
+ %% biblatex-enc v.1.1 (02/12/2024)
%% enc.bbx
- %% Copyright 2015 J.B. Camps (jbcamps@hotmail.com)
+ %% Copyright 2011-2024 J.B. Camps (jbcamps@hotmail.com)
%
% This work may be distributed and/or modified under the conditions
- % of the LaTeX Project Public License, either version 1.3 of this
+ % of the LaTeX Project Public License, either version 1.3 of this
% license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
@@ -11,10 +11,10 @@
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
- %
+ %
% The Current Maintainer of this work is J.B. Camps (jbcamps <at> hotmail.com).
%
- % This work consists of the files enc.cbx and enc.BBX.
+ % This work consists of the files enc.cbx and enc.bbx.
%TODO déplacer volumes, mention d'édition, etc. après lieu et date.
@@ -49,7 +49,7 @@
\settoggle{bbx:eprint}{#1}}
\DeclareBibliographyOption{annotatedBibliography}[false]{%
\settoggle{bbx:annotatedBibliography}{#1}} %false by default
-
+
\ExecuteBibliographyOptions{
url=true,
@@ -64,20 +64,20 @@
\DeclareBibliographyAlias{software}{online}
\DeclareBibliographyAlias{cite:software}{cite:online}
-%%%%% %%%%% %%%%% %%%%% %%%%%
-%%%%% Reformatting %%%%%
-%%%%% %%%%% %%%%% %%%%% %%%%%
+%%%%% %%%%% %%%%% %%%%% %%%%%
+%%%%% Reformatting %%%%%
+%%%%% %%%%% %%%%% %%%%% %%%%%
\renewcommand*{\mkbibnamegiven}[1]{#1}
%\renewcommand*{\mkbibnamefamily}[1]{#1}
\renewcommand*{\mkbibnameprefix}[1]{#1}
\renewcommand*{\mkbibnamesuffix}[1]{#1}
-% Comme les petites capitales pour le nom de famille font partie de la
-% définition du style de langue fr., il faut définir l'utilisation du
+% Comme les petites capitales pour le nom de famille font partie de la
+% définition du style de langue fr., il faut définir l'utilisation du
% romain un peu différemmment
%\savecommand\mkbibnamefamily%on sauvegarde la version avec small caps
\DefineBibliographyExtras{french}{%
-\renewcommand*{\mkbibnamefamily}[1]{{\hyphenrules{nohyphenation}#1}}%
+\renewcommand*{\mkbibnamefamily}[1]{\textnohyphenation{#1}}%
}
%Jamais de ponctuation entre les différentes parties d'un nom
@@ -96,7 +96,7 @@
%\renewcommand*{\finalnamedelim}{and}% et avant le
%\renewcommand*{\multilistdelim}{\adcomma\space}
% , entre différents lieux d'édition
-%\renewcommand*{\finallistdelim}{et} %
+%\renewcommand*{\finallistdelim}{et} %
\renewcommand{\andothersdelim}{\addcomma\addspace}%à vérifier dans les normes. Ponctuation avant et. al.
%%%% Les titres
@@ -144,33 +144,45 @@
bycriticaleditor = {éd\adddot},
}
-%%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
-%%%%% Series in parentheses %%%%%
-%%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
+%%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
+%%%%% Series in parentheses %%%%%
+%%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
\newbibmacro*{series+number}{%
\iffieldundef{series}%
{}
{\printtext[parens]{%
\printfield{series}%
\iffieldundef{number}
- {}
+ {}
{\setunit{\addcomma\space}%
\printfield{number}}%
}}}
-%%%%% %%%%% %%%%% %%%%% %%%%%
+%%%%% %%%%% %%%%% %%%%% %%%%%
%%%%% Publisher omitted %%%%%
-%%%%% %%%%% %%%%% %%%%% %%%%%
+%%%%% %%%%% %%%%% %%%%% %%%%%
\newbibmacro*{location+year}{%
\printlist{location}%
\newunit%
\printfield{year}%
\newunit%
}
-
-%%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
-%%%%% Parenthèses pour l'année d'une revue %%%%%
-%%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
+
+%%%%% %%%%% %%%%% %%%%% %%%%%
+%%%%% Publisher added %%%%%
+%%%%% %%%%% %%%%% %%%%% %%%%%
+\newbibmacro*{location+publisher+year}{%
+ \printlist{location}%
+ \newunit%
+ \printlist{publisher}%
+ \newunit%
+ \printfield{year}%
+ \newunit%
+}
+
+%%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
+%%%%% Parenthèses pour l'année d'une revue %%%%%
+%%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
\newbibmacro*{issue+date}{%
\iffieldundef{issue}
{\iffieldundef{month}
@@ -203,8 +215,8 @@
\newunit%
\usebibmacro{issue}%
\newunit}
-%%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
-
+%%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
+
\DeclareFieldFormat{shorthandwidth}{#1}
\newcommand*{\thebibitem}{\item}
\newcommand*{\thelositem}{\item}
@@ -230,7 +242,7 @@
\setlength{\parsep}{\bibparsep}%
\renewcommand*{\makelabel}[1]{##1\hss}}}
{\endlist}
-
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%déclaration du format de nom applicable à la bibliographie
@@ -258,9 +270,9 @@
\ifdefvoid{#2}{}{\addlowpenspace\mkbibnamegiven{#2}\isdot}}
{\usebibmacro{name:delim}{#1}%
\usebibmacro{name:hook}{#1}%
- \mkbibnamefamily{\textsc{#1}}\isdot
+ \mkbibnamefamily{\textsc{#1}}\isdot
\ifboolexpr{%
- test {\ifdefvoid{#2}}
+ test {\ifdefvoid{#2}}
and
test{\ifdefvoid{#3}}
and
@@ -296,8 +308,8 @@
\usebibmacro{editorstrg}%
\clearname{editor}}
{\global\undef\bbx@lasthash}}
-
-
+
+
\renewbibmacro*{byeditor+others}{%
\ifnameundef{editor}
{}
@@ -309,18 +321,18 @@
\printnames[citeauthor][1-10]{editor}%Je précise 1-10, pour qu'à la première occurrence on ait tous les éditeurs, mais c'est un peu un hack, car cela repose sur le fait que l'on ne mentionne, dans la version actuelle du style, les éditeurs que dans la première note complète. Une solution plus propre serait de procéder comme pour les auteurs, en différenciant editor-fullnote et editor-shortnote
}
\savefield{namehash}{\cbx@lasthash}
- \clearname{editor}%
+ \clearname{editor}%
\setunit*{\addcomma\addspace}
\newunit}%
\usebibmacro{byeditorx}%
- \usebibmacro{bytranslator+others}}
-
-
+ \usebibmacro{bytranslator+others}}
+
+
\renewbibmacro*{editorstrg}{%
\ifthenelse{\value{editor}>1\OR\ifandothers{editor}}
{\mkbibparens{\bibstring{editors}}}
{\mkbibparens{\bibstring{editor}}}}
-
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%Définition du format pour les noms d'auteurs pour les citations
@@ -331,17 +343,17 @@
\ifthenelse{\ifuseauthor\AND\NOT\ifnameundef{author}}%
{\ifthenelse{\iffieldequals{namehash}{\cbx@lasthash}}%
{\bibstring{idem\thefield{gender}},}%
- {\printnames[citeauthor][1-10]{author}%
+ {\printnames[citeauthor][1-10]{author}%
\savefield{namehash}{\cbx@lasthash}
%\savefield{fullhash}{\cbx@thefield{fullhash}}}{\printnames{labelname}}
}}%
{\global\undef\cbx@lasthash}}
-
+
\newbibmacro*{author-shortnote}{%On est obligés d'en faire deux, pour avoir un et. al. différent
\ifthenelse{\ifuseauthor\AND\NOT\ifnameundef{author}}%
{\ifthenelse{\iffieldequals{namehash}{\cbx@lasthash}}%
{\bibstring{idem\thefield{gender}},}%
- {\printnames[citeauthor][1-3]{author}%
+ {\printnames[citeauthor][1-3]{author}%
\savefield{namehash}{\cbx@lasthash}
%\savefield{fullhash}{\cbx@thefield{fullhash}}}{\printnames{labelname}}
}}%
@@ -367,10 +379,10 @@
{\usebibmacro{author-fullnote}}
{\usebibmacro{editor}}}
-%%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
-%%%%% Editor in @incollection and %%%%%
-%%%%% @inproceedings not in italics %%%%%
-%%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
+%%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
+%%%%% Editor in @incollection and %%%%%
+%%%%% @inproceedings not in italics %%%%%
+%%%%% %%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
\renewbibmacro*{bybookauthor}{%
\ifnamesequal{author}{bookauthor}%
@@ -418,7 +430,7 @@
\setunit{\addcolon\space}}}%
\usebibmacro{booktitle}%
\newunit}
-
+
\newbibmacro*{title+issuetitle}{%
\usebibmacro{periodical}%
\setunit*{\addspace}%
@@ -454,7 +466,7 @@
\newbibmacro*{finentry}{\finentry}
-
+
\newbibmacro*{doi+eprint+url}{%
\iftoggle{bbx:doi}%
{\printfield{doi}}%
@@ -484,9 +496,9 @@
}{}%
}
-%%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
-%%%%% Bibliography Driver %%%%%
-%%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
+%%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
+%%%%% Bibliography Driver %%%%%
+%%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%
%Et on est prêts, c'est parti !
@@ -548,7 +560,44 @@
\usebibmacro{location+year}%
\setunit*{\addspace}%
\usebibmacro{series+number}%
- \setunit{\newunitpunct}%
+ \setunit{\newunitpunct}%
+ \newunit%
+ \usebibmacro{chapter+pages}%
+% \newunit%
+% \printfield{pagetotal}
+ \newunit%
+ \usebibmacro{doi+eprint+url}%
+ \newunit%
+ \printfield{addendum}%
+ \usebibmacro{finentry}%
+ \usebibmacro{annotation}%
+ }
+
+\DeclareBibliographyDriver{oldprint}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{author/editor}%
+ \setunit{\labelnamepunct}%
+ \usebibmacro{maintitle+title}%
+ \newunit%
+ \usebibmacro{byauthor}%
+ \newunit%
+ \usebibmacro{byeditor+others}%
+ \newunit%
+ \iffieldundef{maintitle}%
+ {\printfield{volume}%
+ \printfield{part}}%
+ {}%
+ \newunit%
+ \printfield{volumes}%
+ \newunit%
+ \printfield{edition}%
+ \setunit*{\newunitpunct}%
+ \printfield{note}%
+ \setunit*{\newunitpunct}%
+ \usebibmacro{location+year}%
+ \setunit*{\addspace}%
+ \usebibmacro{series+number}%
+ \setunit{\newunitpunct}%
\newunit%
\usebibmacro{chapter+pages}%
% \newunit%
@@ -558,7 +607,7 @@
\newunit%
\printfield{addendum}%
\usebibmacro{finentry}%
- \usebibmacro{annotation}%
+ \usebibmacro{annotation}%
}
\DeclareBibliographyDriver{booklet}{%
@@ -639,7 +688,7 @@
}{%
\printfield[shorttitle]{shorttitle}
}
- }%
+ }%
}
{%
\usebibmacro{bybookauthor}%
@@ -689,7 +738,7 @@
}{%
\printfield[shorttitle]{shorttitle}
}
- }%
+ }%
}
{%
\iffieldundef{editor}{}{%
@@ -744,7 +793,7 @@
}{%
\printfield[shorttitle]{shorttitle}
}
- }%
+ }%
}
{%
\iffieldundef{editor}{}{%
@@ -1042,7 +1091,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Et maintenant les bibliography drivers pour les premières citations
-% pleines, mais dans lesquelles on veut un ordre différent pour les
+% pleines, mais dans lesquelles on veut un ordre différent pour les
% auteurs
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1050,7 +1099,7 @@
\DeclareBibliographyDriver{cite:article}{%%
\usebibmacro{bibindex}%
\usebibmacro{author-fullnote/editor}%
- %\printnames[family-given][1-10]{author}
+ %\printnames[family-given][1-10]{author}
\setunit{\labelnamepunct}%
\usebibmacro{title}%
\newunit%
@@ -1107,6 +1156,40 @@
\printfield{addendum}%
\usebibmacro{finentry}}
+\DeclareBibliographyDriver{cite:oldprint}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{author-fullnote/editor}%
+ \setunit{\labelnamepunct}%
+ \usebibmacro{maintitle+title}%
+ \newunit%
+ \usebibmacro{byauthor}%
+ \newunit%
+ \usebibmacro{byeditor+others}%
+ \newunit%
+ \iffieldundef{maintitle}%
+ {\printfield{volume}%
+ \printfield{part}}%
+ {}%
+ \newunit%
+ \printfield{volumes}%
+ \newunit%
+ \printfield{edition}%
+ \newunit%
+ \printfield{note}%
+ \newunit%
+ \usebibmacro{location+publisher+year}%
+ \setunit{\addspace}%
+ \usebibmacro{series+number}%
+ \newunit%
+ \usebibmacro{chapter+pages}%
+% \newunit%
+% \printfield{pagetotal}%
+ \newunit%
+ \usebibmacro{doi+eprint+url}%
+ \newunit%
+ \printfield{addendum}%
+ \usebibmacro{finentry}}
+
\DeclareBibliographyDriver{cite:booklet}{%
\usebibmacro{bibindex}%
\usebibmacro{author-fullnote/editor}%
diff --git a/Master/texmf-dist/tex/latex/biblatex-enc/enc.cbx b/Master/texmf-dist/tex/latex/biblatex-enc/enc.cbx
index 4bd759c362d..0f3ffc5b05e 100644
--- a/Master/texmf-dist/tex/latex/biblatex-enc/enc.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-enc/enc.cbx
@@ -1,6 +1,6 @@
- %% biblatex-enc v.1.0 (17/06/2017)
- %% enc.cbx
- %% Copyright 2014 J.B. Camps (jbcamps@hotmail.com)
+ %% biblatex-enc v.1.1 (02/12/2024)
+ %% enc.bbx
+ %% Copyright 2011-2024 J.B. Camps (jbcamps@hotmail.com)
%
% This work may be distributed and/or modified under the conditions
% of the LaTeX Project Public License, either version 1.3 of this
@@ -14,7 +14,7 @@
%
% The Current Maintainer of this work is J.B. Camps (jbcamps <at> hotmail.com).
%
- % This work consists of the files enc.cbx and enc.BBX.
+ % This work consists of the files enc.cbx and enc.bbx.
\ProvidesFile{enc.cbx}[]
@@ -274,5 +274,17 @@
\usebibmacro{footcite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}
+
+%NEW: trying to add smartcite, to handle autocite
+\DeclareMultiCiteCommand{\smartcites}[\iffootnote\mkbibparens\mkbibfootnote]
+ {\smartcite}{\multicitedelim}
+\DeclareCiteCommand{\smartcite}[\iffootnote\mkbibparens\mkbibfootnote]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \iffootnote
+ {\usebibmacro{footcite}}
+ {\usebibmacro{cite}}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
\endinput
diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhss.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhss.bbx
new file mode 100644
index 00000000000..6b6fbab2e83
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhss.bbx
@@ -0,0 +1,1030 @@
+%%
+%% ---------------------------------------------------------------
+%% erj.bbx --- A bibliography style of comprehensive academic journal of humanities and social sciences in china
+%% modified from gb7714-2015ay
+%% Maintained by huzhenzhen
+%% E-mail: hzzmail@163.com
+%% Released under the LaTeX Project Public License v1.3c or later
+%% history
+%% 2019/03/28 v1.0
+%% 2022/02/22 v1.0a
+%% ---------------------------------------------------------------
+%%
+%%用法:类似于标准的样式在biblatex加载时设置样式
+%%文献表正常处理,标注命令主要用cite和textcite
+\ProvidesFile{chinese-cajhss.bbx}[2024/09/12 v1.0a a biblatex bibliography style for ERJ]
+
+
+%==================================================
+%加载gb样式
+%==================================================
+\RequireBibliographyStyle{gb7714-2015ay}
+\RequirePackage{mfirstuc}%单词首字母大写的问题
+\MFUnocap{in}%
+\MFUnocap{the}%
+\MFUnocap{of}%
+\MFUnocap{on}%
+\MFUnocap{and}%
+\MFUnocap{for}%
+
+%
+% 增加一个控制标点是英文还是中文的选项
+% 20220222,v1.0a,hzz
+\DeclareBibliographyOption{gbpunctcn}[true]{%biblatex低版本
+ \ifstrequal{#1}{false}{\execerjpuncten}{}}
+
+
+%==================================================
+%考虑多音字增加multipinyin排序,是其可以根据key域添加拼音来排序
+%==================================================
+\DeclareSortingTemplate{multipinyin}{
+ \sort{
+ \field{presort}
+ }
+ \sort{
+ \field{lansortorder}%language
+ }
+ \sort{
+ \field{sortkey}
+ }
+ \sort{%[direction=descending]
+ \field{sortname}
+ \field{author}
+ \field{editor}
+ \field{translator}
+ }
+ \sort{
+ \field{sortyear}
+ \field{year}
+ }
+ \sort{
+ \field{sorttitle}
+ \field{title}
+ }
+ \sort{
+ \field{volume}
+ \literal{0}
+ }
+ }
+
+%==================================================
+%选项设置
+%==================================================
+ \ExecuteBibliographyOptions{
+ maxbibnames=99,
+ gbtype=false,
+ gbpub=false,
+ gbnamefmt=givenahead,
+ gbpunctin=false,
+ gbfieldtype=true,
+ mergedate=none,
+ sorting=none,
+ doi=false,
+ %url=false,
+ }
+
+%==================================================
+%定义一些标点为中文全角标点
+%==================================================
+\def\gbpunctdot{。}%
+\def\gbpunctmark{、}%
+\def\gbpunctcomma{,}%
+\def\gbpunctcommalanen{\addcomma\addspace}%
+\def\gbpunctcolon{:}%
+\def\gbpunctcolonlanen{\addcolon\addspace}%
+\def\gbpunctsemicolon{;}%
+\def\gbpunctttl{《}%
+\def\gbpunctttr{》}
+\def\gbpunctprl{(}%
+\def\gbpunctprr{)}
+
+
+\def\execerjpuncten{%
+\def\gbpunctdot{\adddot}%
+\def\gbpunctmark{\addcomma\addspace}%
+\def\gbpunctcomma{\addcomma\addspace}%
+\def\gbpunctcommalanen{\addcomma\addspace}%
+\def\gbpunctcolon{\addcolon\addspace}%
+\def\gbpunctcolonlanen{\addcolon\addspace}%
+\def\gbpunctsemicolon{\addsemicolon\addspace}%
+\def\gbpunctttl{《}%
+\def\gbpunctttr{》}%
+}
+
+%==================================================
+%为标注和文献表中标点格式,重设and本地化字符串
+%==================================================
+\def\str@editorcn{编}
+\def\str@editorscn{编}
+\DefineBibliographyStrings{english}{
+ and = { and},%and后面的空格在finalnamedelim已经加过了,所以这里去掉20191009
+ andcn = {\gbpunctmark\unspace},%\gbpunctmark
+ andincitecn = {和},%将标注中的分开,便于与文献表中的区分
+ andincite = {\&},
+ incn={\str@incn},
+ %andotherscn={等},
+ %mathesiscn={[硕士学位论文]},
+ %phdthesiscn={[博士学位论文]},
+}
+
+
+%==================================================
+%设置一些标点格式为中文的标点
+%==================================================
+\DeclareFieldFormat{titlecase}{\iffieldequalstr{userd}{chinese}{#1}{\capitalisewords{#1}}}
+\DeclareFieldFormat*{title}{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{#1\isdot}}
+\DeclareFieldFormat[book,collection]{title}{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textit{#1}\isdot}}
+\DeclareFieldFormat[article,inproceedings,incollection]{title}{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\mkbibquote{#1}\isdot}}
+\DeclareFieldFormat*{journaltitle}{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textit{#1}}}%
+\DeclareFieldFormat{booktitle}{%
+\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textit{#1}}}
+\renewcommand*{\revsdnamepunct}{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}%%来源biblatex.def
+\DeclareDelimFormat*{multinamedelim}{\iffieldequalstr{userd}{chinese}{\gbpunctmark}{\gbpunctcommalanen}}%\addcomma\addspace
+\DeclareDelimFormat{finalnamedelim}{%
+ %\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
+ %\addspace%
+ \edef\userfieldabcde{userd}%
+ \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}%
+ \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}%
+ \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}%
+ \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}%
+ \ifcase\value{gbcitelocalcase}%
+ \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andincitecn}}{}%
+ \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}%
+ \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}%
+ \iffieldequalstr{\userfieldabcde}{english}{\space\bibstring{andincite}\space}{}%
+ \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}%
+ \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}%
+%\space%
+ \or%
+ \bibstring{andincitecn}\space%
+ \or%
+ \bibstring{andincite}\space%
+ \fi}
+\DeclareDelimFormat[bib,biblist]{finalnamedelim}{%
+% \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
+% \addspace%
+ \edef\userfieldabcde{userd}%
+ \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}%
+ \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}%
+ \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}%
+ \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}%
+ \ifcase\value{gbbiblocalcase}%
+ \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andcn}}{}%
+ \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}%
+ \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}%
+ \iffieldequalstr{\userfieldabcde}{english}{\bibstring{and}}{}%
+ \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}%
+ \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}%
+\space%
+ \or%
+ \bibstring{andcn}\space%
+ \or%
+ \bibstring{and}\space%
+ \fi}
+\DeclareDelimFormat{nameyeardelim}{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}%\addcomma\addspace
+\DeclareDelimFormat[bib,biblist]{nameyeardelim}{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}%\addcomma\addspace
+
+\renewcommand*{\newunitpunct}{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}%\addcomma\space %,
+\renewcommand*{\finentrypunct}{%
+\printdelim{finalpunct}}
+%调整标注的注释中的条目结尾标点
+\DeclareDelimFormat{finalpunct}{\iffieldequalstr{userd}{chinese}{\gbpunctdot}{\adddot}}
+\DeclareDelimFormat[fullinnercite]{finalpunct}{}
+
+
+\DeclareDelimFormat{bibpagespunct}{%
+\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\unspace\gbpunctcommalanen}}%
+
+%出版项中:出版社地址后面的标点
+\renewcommand{\publocpunct}{%
+\iffieldequalstr{userd}{chinese}{\gbpunctcolon}{\addcolon\addspace}}
+%调整出版社与年份之间的标点
+\renewcommand{\pubdatadelim}{%
+\iffieldequalstr{userd}{chinese}{\iffieldundef{year}{}{\setunit*{\gbpunctcomma}}}{\setunit*{\addcomma\space}}}%
+\renewcommand{\locnopubdelim}{%
+\iffieldequalstr{userd}{chinese}{\iffieldundef{year}{}{\setunit*{\gbpunctcomma}}}{\setunit*{\addcomma\space}}}%
+
+%编者与编者类型之间的标点
+\DeclareDelimFormat{editortypedelim}{\iffieldequalstr{userd}{chinese}{}{\addcomma\space}}
+
+\DeclareDelimFormat{authotitledelim}
+{%
+\iffieldequalstr{userd}{chinese}{\gbpunctcolon}{\addperiod\space}%
+}
+
+\DeclareListFormat{journallocation}{%
+ \usebibmacro{list:delim}{#1}%
+ \gbpunctprl#1\gbpunctprr}
+
+%==================================================
+%调整部分域的输出格式
+%==================================================
+
+
+\DeclareFieldFormat{pages}{%%前面引导页码的pp.等字符
+\ifpages{#1}{%
+\iffieldequalstr{userd}{chinese}{%
+\printtext{\bibstring{serialcn} #1\addthinspace 页}}%
+{\mkpageprefix[bookpagination]{#1}}}{#1}}
+
+
+\renewbibmacro*{institution+location+date}{\bibpubfont%当没有institution时不处理。
+{\printlist{location}%%加了一个编组避免\usebibmacro{date}把month和day信息去掉
+ \iflistundef{institution}
+ {\locnopubdelim}
+ {\setunit*{\publocpunct}}%
+ \printlist{institution}%
+ \pubdatadelim%
+ \usebibmacro{date}%
+ %\newunit
+ }}
+
+\def\bbx@opt@mergedate@none{%
+ \global\togglefalse{bbx:gbmergedate}
+ \renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {}}%
+\renewbibmacro*{bbx:ifmergeddate}{\@secondoftwo}%这一句用于3.12版本
+\renewbibmacro*{date}{\printdate}%这一句用于biblatex3.11以下版本
+\renewbibmacro*{issue+date}{%去掉括号
+ \printtext{%去掉了[parens]
+ \iffieldundef{issue}
+ {\iffieldundef{entrysubtype}{\usebibmacro{date}}%判断一下,是否是报纸
+ {\iffieldequalstr{entrysubtype}{news}{\usebibmacro{newsdate}}%判断是否为报纸
+ {\usebibmacro{date}}%
+ }}%
+ {\iffieldundef{issue}{}{\printfield{issue}\newunit}%
+ \iffieldundef{entrysubtype}{\usebibmacro{date}}%判断一下,是否是报纸
+ {\iffieldequalstr{entrysubtype}{news}{\usebibmacro{newsdate}}%判断是否为报纸
+ {\usebibmacro{date}}%
+ }}}%
+ }%
+}
+
+\ExecuteBibliographyOptions{mergedate=none}
+
+%重新调整输出编者的类型
+% 责任者如果没有author用editor或translator替代
+% 20210521 v1.0y hzz
+%专著如果责任者是editor那么不用输出类型信息
+\renewbibmacro*{editor+others}{%
+ \ifboolexpr{
+ test \ifuseeditor
+ and
+ not test {\ifnameundef{editor}}
+ }
+ {\usebibmacro{bbx:dashcheck}
+ {\bibnamedash}
+ {\printnames{editor}%
+ \setunit{\printdelim{editortypedelim}}%
+ \usebibmacro{editor+othersstrg}%
+ \usebibmacro{bbx:savehash}}%
+ \clearname{editor}%
+ \setunit{\printdelim{nameyeardelim}}}%
+ {\global\undef\bbx@lasthash
+ \usebibmacro{labeltitle}%
+ \setunit*{\printdelim{nonameyeardelim}}}%
+ \usebibmacro{date+extradate}}
+
+%\renewbibmacro*{editor+others}{%
+%\ifboolexpr{
+% test \ifuseeditor
+% and
+% not test {\ifnameundef{editor}}
+% }
+% {\printnames{editor}%
+% \setunit{\printdelim{editortypedelim}}%
+% \usebibmacro{editor+othersstrg}%
+% \clearname{editor}%
+% }%
+% {}%
+% }
+
+\renewbibmacro*{editor}{%
+\ifboolexpr{
+ test \ifuseeditor
+ and
+ not test {\ifnameundef{editor}}
+ }
+ {\printnames{editor}%
+ \setunit{\printdelim{editortypedelim}}%
+ \usebibmacro{editor+othersstrg}%
+ %\clearname{editor}%
+ }%
+ {}%
+ }
+
+\renewbibmacro*{editor+othersstrg}{%
+ \iffieldundef{editortype}
+ {\ifboolexpr{
+ test {\ifnumgreater{\value{editor}}{1}}
+ or
+ test {\ifandothers{editor}}
+ }
+ {\def\abx@tempa{editors}}
+ {\def\abx@tempa{editor}}}
+ {\ifboolexpr{
+ test {\ifnumgreater{\value{editor}}{1}}
+ or
+ test {\ifandothers{editor}}
+ }
+ {\edef\abx@tempa{\thefield{editortype}s}}
+ {\edef\abx@tempa{\thefield{editortype}}}}%
+ \let\abx@tempb=\empty
+ \ifnamesequal{editor}{translator}
+ {\appto\abx@tempa{tr}%
+ \appto\abx@tempb{\clearname{translator}}}
+ {}%
+ \ifnamesequal{editor}{commentator}
+ {\appto\abx@tempa{co}%
+ \appto\abx@tempb{\clearname{commentator}}}
+ {\ifnamesequal{editor}{annotator}
+ {\appto\abx@tempa{an}%
+ \appto\abx@tempb{\clearname{annotator}}}
+ {}}%
+ \ifnamesequal{editor}{introduction}
+ {\appto\abx@tempa{in}%
+ \appto\abx@tempb{\clearname{introduction}}}
+ {\ifnamesequal{editor}{foreword}
+ {\appto\abx@tempa{fo}%
+ \appto\abx@tempb{\clearname{foreword}}}
+ {\ifnamesequal{editor}{afterword}
+ {\appto\abx@tempa{af}%
+ \appto\abx@tempb{\clearname{afterword}}}
+ {}}}%
+ \ifbibxstring{\abx@tempa}
+ {\printtext[editortype]{%
+ \iffieldequalstr{userd}{chinese}{\bibstring{\abx@tempa cn}}{\bibstring{\abx@tempa}}%
+ }\abx@tempb}
+ {\usebibmacro{editorstrg}}}
+
+
+\DeclareDelimFormat[footfullcite,bib,biblist]{andothersdelim}{}
+%去掉译前的标点
+\renewbibmacro*{name:andothers}{\bibauthorfont%
+ \ifboolexpr{test {\ifnumequal{\value{listcount}}{\value{liststop}}}
+ and test \ifmorenames}%
+ {\ifnumgreater{\value{liststop}}{1}%注意这里试图去区分姓名总数大于1的情况,当姓名总数大于1时,最后一个姓名后面先加入一个\finalandcomma
+ {}{}%\finalandcomma,目前国标没有这样的区分要求,如果有需要也是可以这么去做的。
+ \printdelim{andothersdelim}\printdelim{strandothersdelim}}%
+ {}%
+}
+
+
+%增加年字
+\renewbibmacro*{date}{%
+ \iffieldequalstr{userd}{chinese}{%
+ \ifboolexpr{test {\ifentrytype{article}} or test {\ifentrytype{inproceedings}}
+ or test {\ifentrytype{archive}} or test {\ifentrytype{online}}
+ or test {\ifentrytype{unpublished}}}
+ {\printtext{\blx@gbdatecn{}{}}}%
+ {\printdate\iffieldundef{year}{}{\iffieldint{year}{年}{}}}%
+ }{\ifentrytype{archive}{\printtext{\blx@gbdateen{}{}}}{\printdate}}%
+}%
+
+
+\newrobustcmd*{\blx@gbdatecn}[3][]{%
+ \dateeraprintpre{#2#3year}%
+ \iffieldundef{#2#3year}{}{\blx@imc@forcezerosy{\thefield{#2#3year}年}}\ifblank{#1}{}{\printfield{#1}}%
+ \iffieldundef{#2#3month}{}{{\thefield{#2#3month}}月}%
+ \iffieldundef{#2#3day}{}{{\thefield{#2#3day}}日}}
+
+\newrobustcmd*{\blx@gbdateen}[3][]{%
+\mkbibdateen{#2#3year}{#2#3month}{#2#3day}%
+}
+
+\newrobustcmd*{\mkbibdateen}[3]{%
+ \iffieldundef{#2}
+ {}
+ {\mkbibmonth{\thefield{#2}}%
+ \iffieldundef{#1}{}{\space}}%
+ \iffieldundef{#3}
+ {}
+ {{\thefield{#3}}%
+ \iffieldundef{#2}{}{\addcomma\space}}%
+ \iffieldbibstring{#1}
+ {\bibstring{\thefield{#1}}}
+ {\dateeraprintpre{#1}\stripzeros{\thefield{#1}}}}
+
+
+
+\renewbibmacro*{newsdate}{%%
+\ifboolexpr{%
+ test{\iffieldequalstr{userd}{chinese}}%
+ }%
+ {\printtext{\blx@gbdatecn{}{}}}%
+ {\printtext{\blx@gbdate{}{}}}%%
+}
+
+%
+\renewbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式
+\ifboolexpr{%
+ test{\iffieldequalstr{userd}{chinese}}%
+}%
+{%
+\printtext{\blx@gbdatecn{}{}}%
+}%
+ {\ifboolexpr{%
+ test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}%
+ }%
+ {}%更新或修改日期通常有day信息
+ {\iffieldundef{year}{%
+ \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{\gbleftparen}\printeventdate\printtext{\gbrightparen}}}%
+ {\printtext{\gbleftparen}\printenddate\printtext{\gbrightparen}}%
+ }{\iffieldequalstr{year}{}{%因为year存在,但为空
+ }{\printtext{\gbleftparen}\blx@gbdate{}{}\printtext{\gbrightparen}}%
+ }}%
+}}%
+
+
+\renewbibmacro*{url+urldate}{%
+ \newunit\usebibmacro{url}\newunit%
+ \printtext{\blx@gbdatecn{}{url}}%
+}
+
+
+
+%
+% 调整页码前的标点和去掉期刊文章等页码后面的标点
+%
+\renewbibmacro*{note+pages}{%源来自standard.bbx
+ \iffieldundef{postnote}{\iffieldundef{pages}{}{%
+ \setunit{\bibpagespunct}%
+ \printfield{pages}}}{}%
+ }
+
+%
+% 调整页码的格式,即chapter+pages格式
+%
+\renewbibmacro*{chapter+pages}{%
+ \iffieldundef{postnote}{\iffieldundef{pages}{}{%
+ \setunit{\bibpagespunct}%
+ \printfield{pages}}}{}%
+}
+
+%
+% 修改number和volume的格式
+%
+\newcounter{numberwithoutzero}
+\DeclareFieldFormat[article,periodical]{number}%
+ {\iffieldequalstr{userd}{chinese}{%
+ \iffieldint{number}{\setcounter{numberwithoutzero}{#1}\printtext{\bibstring{serialcn}\addthinspace\arabic{numberwithoutzero}\addthinspace 期}}%
+ {\printtext{\bibstring{serialcn}\addthinspace#1\addthinspace 期}}%
+ }%
+ {\bibstring{number}~#1}}%\kern\z@
+
+\DeclareFieldFormat[article,periodical,newspaper]{volume}%
+{
+\iffieldequalstr{userd}{chinese}{%
+ \iffieldint{volume}%
+ {\bibstring{serialcn}#1\bibstring{volumecn}}%
+ {#1}%
+ }%
+ {\bibstring{volume}~#1}%
+}
+
+
+\DeclareFieldFormat[article,periodical,newspaper]{series}
+{\gbpunctprl#1\gbpunctprr}%
+
+%
+% 调整期刊名的格式
+%
+% 原理方法:因为作者年制年份提到前面,因此涉及到期刊名与后面的卷期的关系。
+% v1.0k,20180425,增加了字体控制命令,hzz
+\renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx
+ \usebibmacro{journal}%
+ \iffieldequalstr{userd}{chinese}{}{\newunit}%
+ \iffieldundef{series}%
+ {}%
+ {\printfield{series}}%
+ \iflistundef{location}{}{\printlist[journallocation]{location}}%
+ \usebibmacro{issue+date}%
+ \usebibmacro{volume+number+eid}%把卷期放到年份后面
+ }
+
+%
+% 调整期刊卷和期的格式
+%
+\renewbibmacro*{volume+number+eid}{%源来自standard.bbx
+\iffieldequalstr{userd}{chinese}%
+ {\iffieldundef{volume}{}{\printfield{volume}}%
+ \iffieldundef{number}{}{\printfield{number}}}%区别于顺序编码制
+ {\newunit\printfield{volume}%
+ \newunit\printfield{number}%
+ \setunit{\addcomma\space}%
+ \printfield{eid}}%
+}
+
+
+%
+% 重设title的输出
+%
+% 20180425,v1.0k,为标题增加字体控制命令,Hu Zhenzhen
+% 原理方法:将文献类型标识符输出出去,原输出来自biblatex.def文件
+% 利用toggle做标识符是否输出的判断
+\renewbibmacro*{title}{%
+ \ifboolexpr{%
+ test{\iffieldundef{title}}%
+ and
+ test{\iffieldundef{subtitle}}%
+ }%
+ {}%
+ {\setunit{\iffieldequalstr{userd}{chinese}{\gbpunctcolon}{\gbpunctcolonlanen}}\printtext[title]{\bibtitlefont%增加字体控制命令%增加了标点:
+ \printfield[titlecase]{title}%
+ \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题
+ {}{\setunit{\subtitlepunct}%
+ \printfield[titlecase]{subtitle}}%
+ \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格
+ {\setunit{\subtitlepunct}\printfield{titleaddon}}%
+ \iftoggle{bbx:gbtype}{%
+ \iffieldundef{entrysubtype}{\printfield[gbtypeflag]{usera}}%在标题后直接给出文献标识字母,判断一下,是否是报纸和标准
+ {\iffieldequalstr{entrysubtype}{standard}{\printfield[gbtypeflags]{usera}}%判断是否为标准
+ {\iffieldequalstr{entrysubtype}{news}{\printfield[gbtypeflagn]{usera}}% 判断是否为报纸
+ {\printfield[gbtypeflag]{usera}}}% 其它
+ }}{}%
+ }%
+}}
+
+
+\renewbibmacro*{labeltitle}{%
+ \iffieldundef{label}
+ {\iffieldundef{shorttitle}%author,editor,translator不存在时title会变到labeltitle。
+ {\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}%
+ {\iffieldundef{origyear}{}{\printfield{origyear}}}{}\printfield{title}%
+ \clearfield{title}}
+ {\printfield[title]{shorttitle}}}
+ {\printfield{label}}}
+
+\renewbibmacro*{maintitle+title}{%
+ \iffieldsequal{maintitle}{title}
+ {\clearfield{maintitle}%
+ \clearfield{mainsubtitle}%
+ \clearfield{maintitleaddon}}
+ {\iffieldundef{maintitle}
+ {}
+ {\usebibmacro{maintitle}%
+ \newunit\newblock
+ \iffieldundef{volume}
+ {}
+ {\printfield{volume}%
+ \printfield{part}%
+ \setunit{\addcolon\space}}}}%
+ \usebibmacro{title}%
+\ifboolexpr{test{\ifentrytype{book}} and (not test{\iffieldundef{volume}})}%判断一下book类有没有volume
+ {\printfield{volume}}{}%
+\ifboolexpr{(test{\ifentrytype{archive}} or test{\ifentrytype{online}}) and (not test{\iffieldundef{number}})}%判断一下archive类有没有number
+ {\printfield{number}}{}%
+ \newunit}
+
+
+\setlength{\bibitemindent}{2\ccwd} % bibitemindent表示一条文献中第一行相对后面各行的缩进
+\setlength{\bibhang}{0pt} % 作者年制中 bibhang 表示的各行起始位置到页
+ % 边的距离,顺序编码制中
+ % bibhang+labelnumberwidth 表示各行起始位置
+ % 到页边的距离
+
+
+
+\renewbibmacro*{translator+others}{%
+ \ifboolexpr{
+ test \ifusetranslator
+ and
+ not test {\ifnameundef{translator}}
+ }
+{\usebibmacro{bbx:dashcheck}
+ {\bibnamedash}
+ {\renewcommand{\aftertransdelim}{\adddot\addspace}\printnames{translator}%
+ \usebibmacro{bbx:savehash}}%
+ \clearname{translator}%
+ \setunit{\printdelim{nameyeardelim}}}%
+ {\global\undef\bbx@lasthash
+ \usebibmacro{labeltitle}%
+ \setunit*{\printdelim{nonameyeardelim}}}%
+ \usebibmacro{date+extradate}}
+
+
+
+\renewbibmacro*{bybookauthor}{%
+ \ifnameundef{bookauthor}%
+ {\ifnameundef{editor}%
+ {}%
+ {\ifnamesequal{author}{editor}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{editor}}{\usebibmacro{editor}}%
+ }{\usebibmacro{editor}}}%
+ }%
+ {\ifnamesequal{author}{bookauthor}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{bookauthor}}{\printnames{bookauthor}}%
+ }{\printnames{bookauthor}}%
+ }%
+}
+
+\newbibmacro*{maintitle+booktitle}{%
+ \iffieldundef{maintitle}
+ {}
+ {\usebibmacro{maintitle}%
+ \iffieldundef{volume}
+ {}
+ {\printfield{volume}%
+ \printfield{part}}}%
+ \usebibmacro{booktitle}%
+}
+
+\renewbibmacro*{booktitle}{%
+\ifboolexpr{
+ test {\iffieldundef{booktitle}}
+ and
+ test {\iffieldundef{booksubtitle}}
+ }
+ {}
+ {\printtext[booktitle]{\bibtitlefont%
+ \printfield[titlecase]{booktitle}%
+ \iffieldundef{booksubtitle}{}%
+ {\setunit{\subtitlepunct}%
+ \printfield[titlecase]{booksubtitle}%
+ \setunit{\subtitlepunct}%
+ \printfield{booktitleaddon}}
+ }%
+ }}
+
+
+\renewbibmacro*{in:}{%
+\iftoggle{bbx:gbpunctin}{\setunit{\gbpunctcomma}}%\addthinspace
+ {\iffieldequalstr{userd}{chinese}%
+ {\setunit{\gbpunctcomma}\ifboolexpr{test {\ifnameundef{bookauthor}} and test{\ifnameundef{editor}}}%
+ {}{\printtext{\bibstring{incn}}}}%
+ {\printtext{\bibstring{in}}}%
+ }}%\newunit\newblock\intitlepunct
+
+
+\newbibmacro*{inbook:volume+number}{%
+ \iffieldundef{volume}{}{\printfield{volume}}%
+ \iffieldundef{number}{}{\printfield{number}}%
+}
+
+
+
+%
+% 增加inbook:parent用于辅助crossref传统功能的实现
+% 用在{crosscite}宏中
+% 20210216,v1.0w,hzz
+\newbibmacro*{inbook:parent}{%
+\usebibmacro{bybookauthor}%
+\ifnameundef{bookauthor}{%
+ \ifnameundef{editor}{}{\printdelim{authotitledelim}}%
+ }{\printdelim{authotitledelim}}%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{}
+{\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}}%为处理一些存在series的情况而增加
+\usebibmacro{maintitle+booktitle}%
+\usebibmacro{inbook:volume+number}%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}%
+{\iffieldundef{series}{}{\newunit\usebibmacro{series+number}}}{}%
+ \newunit\newblock%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{}{\printfield{edition}}%
+ \newunit
+ \newunit\newblock
+ \usebibmacro{publisher+location+date}%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{\printfield{edition}}{}%
+}
+
+\DeclareFieldFormat{part}{#1}% physical part of a logical volume
+
+%
+% 专著中的析出文献的格式修改
+%
+\DeclareBibliographyDriver{inbook}{%源来自standard.bbx
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+% \ifboolexpr{
+% test {\ifnameundef{author}}
+% and
+% test {\ifnameundef{translator}}
+% }{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\usebibmacro{title}%
+\iffieldequalstr{entrysubtype}{classic}%
+{\iffieldundef{part}{}{\printfield{part}}%
+}{}%
+\newunit%
+\iffieldequalstr{entrysubtype}{letter}%
+{\iffieldundef{eventyear}%
+ {\iffieldundef{origyear}{}{\printtext{\blx@gbdatecn{}{orig}}}}%
+ {\printtext{\blx@gbdatecn{}{event}}}%
+ }{}
+\usebibmacro{in:}%
+\usebibmacro{crosscite}{inbook:parent}%
+ \usebibmacro{chapter+pages}%
+ \usebibmacro{doi+eprint+url}%移到上面来
+ \newunit\newblock
+ \iftoggle{bbx:isbn}
+ {\printfield{isbn}}
+ {}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{annotation}\usebibmacro{finentry}}
+
+
+
+\DeclareBibliographyDriver{book}{%源来自standard.bbx文件
+\usebibmacro{bibindex}%
+\usebibmacro{begentry}%
+\usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\ifboolexpr{not (test{\ifnameundef{author}} and test{\ifnameundef{editor}} and %
+test{\ifnameundef{translator}}) and test{\iffieldequalstr{entrysubtype}{classic}}}%author,editor,translator不存在时title会变到labeltitle。
+{\iffieldundef{origyear}{}{\printfield{origyear}}}{}%
+\usebibmacro{maintitle+title}%
+\iftoggle{bbx:gbstrict}{}{%
+\newunit
+\printlist{language}%
+\newunit\newblock%
+\usebibmacro{byauthor}%
+\newunit\newblock}%
+\usebibmacro{byeditor+others}%
+\newunit%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{}{\printfield{edition}}%
+\newunit\newblock%%
+\iftoggle{bbx:gbstrict}{}{%
+\iffieldundef{maintitle}%
+{\printfield{volume}%
+\printfield{part}}%
+{}%
+\newunit%
+\printfield{volumes}%
+\newunit\newblock%
+\usebibmacro{series+number}}%
+\newunit\newblock%
+\usebibmacro{publisher+location+date}%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{\printfield{edition}}{}%
+\usebibmacro{chapter+pages}%
+ \iffieldundef{url}{}{%当没有网址时也不输出
+ \usebibmacro{modifydate}}%带括号的修改或更新日期,
+\usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。
+ \newunit\newblock%
+ \printfield{pagetotal}%
+ \newunit\newblock%
+ \iftoggle{bbx:isbn}
+ {\printfield{isbn}}
+ {}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{annotation}%
+ \usebibmacro{finentry}%
+ }%
+
+\renewbibmacro*{doi+eprint+url}{%
+ \iftoggle{bbx:eprint}
+ {\iffieldundef{eprint}{}{\newunit\usebibmacro{eprint}}}%必须要做域判断否则容易产生多余的标点
+ {}%
+ \iftoggle{bbx:url}
+ {\iffieldundef{url}{}{\usebibmacro{url+urldate}}}
+ {}
+ \iftoggle{bbx:doi}
+ {\printfield{doi}}
+ {}}
+
+
+\DeclareBibliographyDriver{manual}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+ \iftoggle{bbx:gbstrict}{}{%
+ \newunit%
+ \printlist{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}}%
+ \newunit\newblock
+ \usebibmacro{byeditor+others}%增加的译者信息
+ \newunit\newblock
+ \iftoggle{bbx:gbfieldtype}{%
+ \printfield{type}%
+ \setunit*{\addspace}}{}%
+ \ifboolexpr{test{\ifentrytype{archive}}}%
+ {}{\printfield{number}}%
+ \newunit\newblock
+ \printfield{version}%
+ \newunit
+ \printfield{note}%
+ \newunit\newblock
+ \usebibmacro{institution+location+date}%
+ \ifboolexpr{test{\ifentrytype{archive}}}%
+ {\newunit\printfield{number}}{}%
+ \usebibmacro{chapter+pages}%
+ \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期
+ \usebibmacro{modifydate}}%修改或更新日期为带括号的时间
+ \usebibmacro{doi+eprint+url}%
+ \newunit
+ \printfield{pagetotal}%
+ \newunit\newblock
+ \iftoggle{bbx:isbn}
+ {\printfield{isrn}}
+ {}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{annotation}\usebibmacro{finentry}}
+
+
+%
+% 期刊文章,连续出版物中的析出文献的格式
+%
+ \DeclareBibliographyDriver{article}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+ \iftoggle{bbx:gbstrict}{}{%
+ \newunit%
+ \printlist{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}%
+ \newunit\newblock
+ \usebibmacro{bytranslator+others}%
+ \newunit\newblock
+ \printfield{version}}%
+ \newunit\newblock
+ %\usebibmacro{in:}% 不使用in来表示期刊等连续出版物
+ \usebibmacro{journal+issuetitle}%
+% \newunit
+% \usebibmacro{byeditor+others}%
+% \newunit
+ \usebibmacro{note+pages}%
+% \iffieldequalstr{entrysubtype}{news}{}%当是新闻时不输出修改或更新日期
+% {%
+% \iffieldundef{url}{}{%当没有网址时也不输出
+% \iftoggle{bbx:url}{%当url选项为false时,也不输出
+% \usebibmacro{modifydate}}{}}}%带括号的修改或更新日期,
+ \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置
+ \newunit\newblock
+ \iftoggle{bbx:isbn}
+ {\printfield{issn}}
+ {}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{finentry}\usebibmacro{annotation}}
+
+
+%=====================================================================
+%设置再次引用的驱动格式
+%=====================================================================
+
+
+\DeclareBibliographyAlias{citeseen:newspaper}{citeseen:article}%
+\DeclareBibliographyAlias{citeseen:inproceedings}{citeseen:inbook}%会议论文文献类型驱动
+\DeclareBibliographyAlias{citeseen:conference}{citeseen:inbook}%会议论文文献类型驱动
+\DeclareBibliographyAlias{citeseen:incollection}{citeseen:inbook}%文集中析出文献类型驱动
+\DeclareBibliographyAlias{citeseen:collection}{citeseen:book}%%文集类型驱动
+\DeclareBibliographyAlias{citeseen:proceedings}{citeseen:book}%会议论文集文献类型驱动
+\DeclareBibliographyAlias{citeseen:thesis}{citeseen:manual}%学位论文驱动
+\DeclareBibliographyAlias{citeseen:unpublished}{citeseen:manual}%其它类型驱动
+\DeclareBibliographyAlias{citeseen:archive}{citeseen:manual}
+
+
+%
+% book条目类的驱动
+%
+\DeclareBibliographyDriver{citeseen:book}{%源来自standard.bbx文件
+\usebibmacro{bibindex}%
+\usebibmacro{begentry}%
+\usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\usebibmacro{maintitle+title}%
+\usebibmacro{chapter+pages}%
+\usebibmacro{finentry}}
+
+
+%
+% 期刊文章,连续出版物中的析出文献的格式
+%
+\DeclareBibliographyDriver{citeseen:article}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+ \newunit\newblock%
+ \usebibmacro{journal+issuetitle}%
+ \usebibmacro{note+pages}%
+ \usebibmacro{finentry}}
+
+
+
+%
+% 连续出版物的驱动
+%
+ \DeclareBibliographyDriver{citeseen:periodical}{%源来自standard.BBX
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{editor}%
+ \newunit\newblock %删除上面一行,添加这一行
+ \usebibmacro{title+issuetitle}%
+\usebibmacro{finentry}}
+
+
+
+%
+% 在线文献驱动
+%
+\DeclareBibliographyDriver{citeseen:online}{%源来自standard.BBX
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+\usebibmacro{finentry}}
+
+
+%
+% 报告类型驱动
+% 当有网址无出版项时,用online输出
+%
+\DeclareBibliographyDriver{citeseen:report}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+ \usebibmacro{chapter+pages}%
+\usebibmacro{finentry}}
+
+%
+% 论文、手册类型驱动
+% 2016-11-11,增加了译者信息
+%
+\DeclareBibliographyDriver{citeseen:manual}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+ \usebibmacro{chapter+pages}%
+ \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期
+ \usebibmacro{modifydate}}%修改或更新日期为带括号的时间
+ \usebibmacro{doi+eprint+url}%
+ \newunit
+ \printfield{pagetotal}%
+\usebibmacro{finentry}}
+
+%
+% 增加inbook:parent用于辅助crossref传统功能的实现
+% 用在{crosscite}宏中
+% 20210216,v1.0w,hzz
+\newbibmacro*{citeseen:inbook:parent}{%
+\usebibmacro{bybookauthor}%
+\ifnameundef{bookauthor}{%
+ \ifnameundef{editor}{}{\printdelim{authotitledelim}}%
+ }{\printdelim{authotitledelim}}%
+\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}%为处理一些存在series的情况而增加
+ \usebibmacro{maintitle+booktitle}%
+ \usebibmacro{inbook:volume+number}%
+}
+
+%
+% 专著中的析出文献的格式修改
+%
+\DeclareBibliographyDriver{citeseen:inbook}{%源来自standard.bbx
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+ \ifboolexpr{
+ test {\ifnameundef{author}}
+ and
+ test {\ifnameundef{translator}}
+ }{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\usebibmacro{title}%
+\usebibmacro{in:}%
+\usebibmacro{crosscite}{citeseen:inbook:parent}%
+\usebibmacro{chapter+pages}%
+\usebibmacro{finentry}}
diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhss.cbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhss.cbx
new file mode 100644
index 00000000000..b14747e378e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhss.cbx
@@ -0,0 +1,294 @@
+%%
+%% ---------------------------------------------------------------
+%% erj.cbx --- A citation style of comprehensive academic journal of humanities and social sciences in china
+%% modified from gb7714-2015ay
+%% Maintained by huzhenzhen
+%% E-mail: hzzmail@163.com
+%% Released under the LaTeX Project Public License v1.3c or later
+%% ---------------------------------------------------------------
+%%
+%%用法:类似于标准的样式在biblatex加载时设置样式
+%%文献表正常处理,标注命令主要用cite和textcite
+
+\ProvidesFile{chinese-cajhss.cbx}[v1.0a a biblatex citation style for ERJ]
+
+%==================================================
+%加载gb样式
+%==================================================
+\RequireCitationStyle{gb7714-2015ay} %
+
+
+%
+% 增加一个控制标注中标点是英文还是中文的选项
+% 20220222,v1.0a,hzz
+\DeclareBibliographyOption{gbcitepunctcn}[true]{%biblatex低版本
+ \ifstrequal{#1}{false}{\exegbpunctencite}{}}
+
+\def\gbpunctmarkcite{、}%
+\def\gbpunctsemicoloncite{;}%
+\def\gbpunctparenlcite{(}%
+\def\gbpunctparenrcite{)}
+\def\exegbpunctencite{%
+\def\gbpunctmarkcite{\addcomma\addspace}%
+\def\gbpunctsemicoloncite{\addsemicolon\addspace}%
+\def\gbpunctparenlcite{(}%
+\def\gbpunctparenrcite{)}
+}
+
+%==================================================
+%选项设置
+%==================================================
+\ExecuteBibliographyOptions{
+ maxcitenames=2,
+ mincitenames=1,
+}
+
+\DefineBibliographyStrings{english}{
+ andincitecn = {和},%将标注中的分开,便于与文献表中的区分
+ andincite = {\&},
+}
+
+%==================================================
+%引用命令设置,主要用cite和textcite
+%包括标点设置
+%==================================================
+\renewcommand*{\multicitedelim}{\gbpunctsemicoloncite}%\addsemicolon\addspace;
+\renewcommand*{\textcitedelim}{%
+ \iffinalcitedelim
+ {\ifnumgreater{\value{textcitetotal}}{2}
+ {}{}%\iftextcitepunct{\finalandsemicolon}{\finalandcomma}
+ \addspace\gbpunctmarkcite}%\addspace\bibstring{andincitecn}
+ {\iftextcitepunct{\addsemicolon\space}{\addspace\gbpunctmarkcite}}%\addcomma
+}%\space
+
+\DeclareDelimFormat[textcite]{nameyeardelim}{\addspace}%\addcomma\space
+\DeclareDelimFormat[textcite]{andothersdelim}{\iffieldequalstr{userf}{chinese}{}{\addspace}}%
+
+%之所以不用\DeclareDelimFormat{andothersdelim}{}这样的设置是因为gb7714-2015中为兼容老版本的biblatex做的处理就是这样的
+%所以用相同的方式
+\AtEveryCitekey{%
+\iffieldequalstr{userf}{chinese}{\renewcommand*{\andothersdelim}{}}%\addthinspace
+ {\renewcommand*{\andothersdelim}{\addspace}}%
+}
+
+
+%标注压缩时,直接用date+extradate代替extradate实现2006a,2006b的效果
+%\DeclareDelimFormat*{compcitedelim}{\gbpunctmarkcite}%\addcomma\addspace
+\newbibmacro*{cite:extradate}{%
+ \iffieldundef{extradate}
+ {}
+ {\printtext[bibhyperref]{\addspace\printlabeldateextra}}}%\printfield{extradate}\printlabeldateextra \printfield{labelyear}\printfield{extradate}
+
+%\AtEveryCite{%
+%\let\parentext=\parentexttrack%
+%\let\bibopenparen=(%
+%\let\bibcloseparen=)}
+
+%添加前后空格
+\DeclareCiteCommand{\cite}%[\mkbibparens]
+ {\usebibmacro{cite:init}%
+ \unspace\printtext{\gbpunctparenlcite}\usebibmacro{prenote}}%\addspace
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{postnote}%
+ \gbpunctparenrcite}%\addspace
+
+%原版
+%\DeclareCiteCommand{\cite}[\mkbibparens]
+% {\usebibmacro{cite:init}%
+% \usebibmacro{prenote}}%)
+% {\usebibmacro{citeindex}%
+% \usebibmacro{cite}}
+% {}
+% {\usebibmacro{postnote}}
+
+%
+%添加后面空格
+%\DeclareCiteCommand{\cbx@textcite}
+% {\usebibmacro{cite:init}}
+% {\usebibmacro{citeindex}%
+% \usebibmacro{textcite}}
+% {}
+% {\usebibmacro{textcite:postnote}\addspace}
+
+
+%修改注释后的标点
+\renewcommand{\bibfootnotewrapper}[1]{%
+ #1}%\bibsentence
+
+%避免去除前面的空白
+\renewrobustcmd{\blx@mkbibfootnote}[2]{%
+ \iftoggle{blx@footnote}
+ {\blx@warning{Nested notes}%
+ \addspace\mkbibparens{#2}}
+ {%\unspace
+ \ifnum\blx@notetype=\tw@
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}
+ {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}}}}
+
+%修改脚注注释的实现
+\def\execgbfootbib%
+ {%
+ %开启引用跟踪计数器,为使用\ifciteseen等测试命令
+ \ExecuteBibliographyOptions{citetracker=true}
+
+ %
+ %重定义\footfullcite使完成css的脚注文献要求
+ \DeclareCiteCommand{\footfullcite}[\mkbibfootnote]%
+ {\defcounter{maxnames}{\blx@maxcitenames}%局部定义maxnames和minnames计数器
+ \defcounter{minnames}{\blx@mincitenames}%使footfullcite内的作者输出与正文文献表中的一致。
+ \usebibmacro{prenote}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}{\setunit{\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\addcolon\addspace}}%
+ \printfield{postnote}}}%与ay样式不同,由于已修改postnote域格式,直接用printfield
+ }%
+ {\ifciteseen%
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{citeseen:\thefield{entrytype}}}%\nopunct
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}%
+ }%
+ {\multicitedelim}%
+ {\usebibmacro{postnote}\usebibmacro{finentry}}%
+
+
+ \DeclareCiteCommand{\fullcite}
+ {\usebibmacro{prenote}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}{\setunit{\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\addcolon\addspace}}%
+ \printfield{postnote}}}%与ay样式不同,由于已修改postnote域格式,直接用printfield
+ }
+ {\ifciteseen%
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{citeseen:\thefield{entrytype}}}%\nopunct
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}%
+ }
+ {\multicitedelim}
+ {\usebibmacro{postnote}\usebibmacro{finentry}}%
+
+
+ \DeclareCiteCommand{\fullinnercite}
+ {\usebibmacro{prenote}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}{\setunit{\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\addcolon\addspace}}%
+ \printfield{postnote}}}%与ay样式不同,由于已修改postnote域格式,直接用printfield
+ }
+ {\ifciteseen%
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{citeseen:\thefield{entrytype}}}%\nopunct
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}%
+ }
+ {\multicitedelim}
+ {\usebibmacro{postnote}\usebibmacro{finentry}}%
+ }
+
+
+%为先秦文献夹注做处理
+\DeclareFieldFormat*{citejz}{%
+\iffieldequalstr{userd}{chinese}{\gbpunctprl\gbpunctttl#1\gbpunctttr\gbpunctprr}%
+{\mkbibemph{#1}}}
+\DeclareCiteCommand{\citejz}
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}
+ {\ifciteindex
+ {\indexfield{indextitle}}
+ {}%
+ \printfield[citejz]{labeltitle}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+
+\DeclareFieldFormat{citetitle}{%
+\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}%
+{\mkbibemph{#1}}%
+}
+
+\DeclareFieldFormat
+ [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
+ {citetitle}{%
+ \iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}%
+ {\mkbibquote{#1\isdot}}%
+ }
+
+
+%为文献输出出版信息
+\DeclareCiteCommand{\citepub}
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}
+ {\ifciteindex
+ {\indexfield{indextitle}}
+ {}%
+ \ifentrytype{online}{\usebibmacro{institution+location+date}}{\usebibmacro{publisher+location+date}}%
+ }
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+
+\newbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\iffieldundef{shorthand}
+ {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND
+ \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)}
+ {\setunit{\addcomma}%
+ \usebibmacro{cite:extradate}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}
+ {\ifnameundef{labelname}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}\unspace\gbpunctparenlcite}%\bibopenparen
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{cite:labeldate+extradate}}
+ {\usebibmacro{cite:shorthand}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}\unspace\gbpunctparenlcite}%\bibopenparen
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\iffieldundef{labelyear}
+ {\usebibmacro{cite:label}}
+ {\usebibmacro{cite:labeldate+extradate}}%
+ \savefield{labelyear}{\cbx@lastyear}}
+ {\usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\gbpunctparenrcite\global\boolfalse{cbx:parens}}%\bibcloseparen
+ {}%
+ \textcitedelim}}
+
+\newbibmacro*{textcite:postnote}{%
+ \usebibmacro{postnote}%
+ \ifthenelse{\value{multicitecount}=\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\gbpunctparenrcite\global\boolfalse{cbx:parens}}%\bibcloseparen
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\gbpunctparenrcite\global\boolfalse{cbx:parens}}%\bibcloseparen
+ {}%
+ \textcitedelim}}}
+
+\let\citet=\textcite
+\let\citep=\cite
diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhssay.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhssay.bbx
new file mode 100644
index 00000000000..382422a0805
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhssay.bbx
@@ -0,0 +1,995 @@
+%%
+%% ---------------------------------------------------------------
+%% erj.bbx --- A bibliography style of comprehensive academic journal of humanities and social sciences in china
+%% modified from gb7714-2015ay
+%% Maintained by huzhenzhen
+%% E-mail: hzzmail@163.com
+%% Released under the LaTeX Project Public License v1.3c or later
+%% history
+%% 2019/03/28 v1.0
+%% 2022/02/22 v1.0a
+%% ---------------------------------------------------------------
+%%
+%%用法:类似于标准的样式在biblatex加载时设置样式
+%%文献表正常处理,标注命令主要用cite和textcite
+\ProvidesFile{chinese-cajhssay.bbx}[2024/09/12 v1.0a a biblatex bibliography style for ERJ]
+
+
+%==================================================
+%加载gb样式
+%==================================================
+\RequireBibliographyStyle{gb7714-2015ay}
+\RequirePackage{mfirstuc}%单词首字母大写的问题
+\MFUnocap{in}%
+\MFUnocap{the}%
+\MFUnocap{of}%
+\MFUnocap{on}%
+\MFUnocap{and}%
+\MFUnocap{for}%
+
+%
+% 增加一个控制标点是英文还是中文的选项
+% 20220222,v1.0a,hzz
+\DeclareBibliographyOption{gbpunctcn}[true]{%biblatex低版本
+ \ifstrequal{#1}{false}{\execerjpuncten}{}}
+
+
+%==================================================
+%考虑多音字增加multipinyin排序,是其可以根据key域添加拼音来排序
+%==================================================
+\DeclareSortingTemplate{multipinyin}{
+ \sort{
+ \field{presort}
+ }
+ \sort{
+ \field{lansortorder}%language
+ }
+ \sort{
+ \field{sortkey}
+ }
+ \sort{%[direction=descending]
+ \field{sortname}
+ \field{author}
+ \field{editor}
+ \field{translator}
+ }
+ \sort{
+ \field{sortyear}
+ \field{year}
+ }
+ \sort{
+ \field{sorttitle}
+ \field{title}
+ }
+ \sort{
+ \field{volume}
+ \literal{0}
+ }
+ }
+
+%==================================================
+%选项设置
+%==================================================
+ \ExecuteBibliographyOptions{
+ maxbibnames=99,
+ gbtype=false,
+ gbpub=false,
+ gbnamefmt=reverseorder, % givenahead,
+ gbpunctin=false,
+ gbfieldtype=true,
+ %mergedate=true,
+ %sorting=none,
+ doi=false,
+ %url=false,
+ }
+
+%==================================================
+%定义一些标点为中文全角标点
+%==================================================
+\def\gbpunctdot{。}%
+\def\gbpunctmark{、}%
+\def\gbpunctcomma{,}%
+\def\gbpunctcommalanen{\addcomma\addspace}%
+\def\gbpunctcolon{:}%
+\def\gbpunctcolonlanen{\addcolon\addspace}%
+\def\gbpunctsemicolon{;}%
+\def\gbpunctttl{《}%
+\def\gbpunctttr{》}
+\def\gbpunctprl{(}%
+\def\gbpunctprr{)}
+
+
+\def\execerjpuncten{%
+\def\gbpunctdot{\adddot}%
+\def\gbpunctmark{\addcomma\addspace}%
+\def\gbpunctcomma{\addcomma\addspace}%
+\def\gbpunctcommalanen{\addcomma\addspace}%
+\def\gbpunctcolon{\addcolon\addspace}%
+\def\gbpunctcolonlanen{\addcolon\addspace}%
+\def\gbpunctsemicolon{\addsemicolon\addspace}%
+\def\gbpunctttl{《}%
+\def\gbpunctttr{》}%
+}
+
+%==================================================
+%为标注和文献表中标点格式,重设and本地化字符串
+%==================================================
+\def\str@editorcn{编}
+\def\str@editorscn{编}
+\DefineBibliographyStrings{english}{
+ and = { and},%and后面的空格在finalnamedelim已经加过了,所以这里去掉20191009
+ andcn = {\gbpunctmark\unspace},%\gbpunctmark
+ incn={\str@incn},
+ bytranslatorcn= {\str@bytranslator}, %将trans. by 改成 译
+ %andotherscn={等},
+ %mathesiscn={[硕士学位论文]},
+ %phdthesiscn={[博士学位论文]},
+}
+
+
+%==================================================
+%设置一些标点格式为中文的标点
+%==================================================
+\DeclareFieldFormat{titlecase}{\iffieldequalstr{userd}{chinese}{#1}{\capitalisewords{#1}}}
+\DeclareFieldFormat*{title}{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{#1\isdot}}
+\DeclareFieldFormat[book,collection]{title}{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textit{#1}\isdot}}
+\DeclareFieldFormat[article,inbook,inproceedings,incollection]{title}{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\mkbibquote{#1}\isdot}}
+\DeclareFieldFormat*{journaltitle}{\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textit{#1}}}%
+\DeclareFieldFormat{booktitle}{%
+\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}{\textit{#1}}}
+\renewcommand*{\revsdnamepunct}{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}%%来源biblatex.def
+\DeclareDelimFormat*{multinamedelim}{\iffieldequalstr{userd}{chinese}{\gbpunctmark}{\gbpunctcommalanen}}%\addcomma\addspace
+\DeclareDelimFormat{finalnamedelim}{%
+ %\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
+ %\addspace%
+ \edef\userfieldabcde{userd}%
+ \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}%
+ \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}%
+ \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}%
+ \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}%
+ \ifcase\value{gbcitelocalcase}%
+ \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andincitecn}}{}%
+ \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}%
+ \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}%
+ \iffieldequalstr{\userfieldabcde}{english}{\space\bibstring{andincite}\space}{}%
+ \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}%
+ \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}%
+%\space%
+ \or%
+ \bibstring{andincitecn}\space%
+ \or%
+ \bibstring{andincite}\space%
+ \fi}
+\DeclareDelimFormat[bib,biblist]{finalnamedelim}{%
+% \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
+% \addspace%
+ \edef\userfieldabcde{userd}%
+ \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}%
+ \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}%
+ \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}%
+ \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}%
+ \ifcase\value{gbbiblocalcase}%
+ \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andcn}}{}%
+ \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}%
+ \iffieldequalstr{\userfieldabcde}{japanese}{\bibstring{andjp}}{}%
+ \iffieldequalstr{\userfieldabcde}{english}{\bibstring{and}}{}%
+ \iffieldequalstr{\userfieldabcde}{french}{\bibstring{and}}{}%
+ \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{and}}{}%
+\space%
+ \or%
+ \bibstring{andcn}\space%
+ \or%
+ \bibstring{and}\space%
+ \fi}
+\DeclareDelimFormat{nameyeardelim}{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}%\addcomma\addspace
+\DeclareDelimFormat[bib,biblist]{nameyeardelim}{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}%\addcomma\addspace
+
+\renewcommand*{\newunitpunct}{\iffieldequalstr{userd}{chinese}{\gbpunctcomma}{\gbpunctcommalanen}}%\addcomma\space %,
+\renewcommand*{\finentrypunct}{%
+\printdelim{finalpunct}}
+%调整标注的注释中的条目结尾标点
+\DeclareDelimFormat{finalpunct}{\iffieldequalstr{userd}{chinese}{\gbpunctdot}{\adddot}}
+\DeclareDelimFormat[fullinnercite]{finalpunct}{}
+
+
+\DeclareDelimFormat{bibpagespunct}{%
+\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\unspace\gbpunctcommalanen}}%
+
+%出版项中:出版社地址后面的标点
+\renewcommand{\publocpunct}{%
+\iffieldequalstr{userd}{chinese}{\gbpunctcolon}{\addcolon\addspace}}
+%调整出版社与年份之间的标点
+\renewcommand{\pubdatadelim}{%
+\iffieldequalstr{userd}{chinese}{\iffieldundef{year}{}{\setunit*{\gbpunctcomma}}}{\setunit*{\addcomma\space}}}%
+\renewcommand{\locnopubdelim}{%
+\iffieldequalstr{userd}{chinese}{\iffieldundef{year}{}{\setunit*{\gbpunctcomma}}}{\setunit*{\addcomma\space}}}%
+
+%编者与编者类型之间的标点
+\DeclareDelimFormat{editortypedelim}{\iffieldequalstr{userd}{chinese}{}{\addcomma\space}}
+
+\DeclareDelimFormat{authotitledelim}
+{%
+\iffieldequalstr{userd}{chinese}{\gbpunctcolon}{\addperiod\space}%
+}
+
+\DeclareListFormat{journallocation}{%
+ \usebibmacro{list:delim}{#1}%
+ \gbpunctprl#1\gbpunctprr}
+
+%==================================================
+%调整部分域的输出格式
+%==================================================
+
+
+\DeclareFieldFormat{pages}{%%前面引导页码的pp.等字符
+\ifpages{#1}{%
+\iffieldequalstr{userd}{chinese}{%
+\printtext{\bibstring{serialcn} #1\addthinspace 页}}%
+{\mkpageprefix[bookpagination]{#1}}}{#1}}
+
+
+\renewbibmacro*{institution+location+date}{\bibpubfont%当没有institution时不处理。
+{\printlist{location}%%加了一个编组避免\usebibmacro{date}把month和day信息去掉
+ \iflistundef{institution}
+ {\locnopubdelim}
+ {\setunit*{\publocpunct}}%
+ \printlist{institution}%
+ \pubdatadelim%
+ \usebibmacro{date}%
+ %\newunit
+ }}
+
+
+
+%重新调整输出编者的类型
+% 责任者如果没有author用editor或translator替代
+% 20210521 v1.0y hzz
+%专著如果责任者是editor那么不用输出类型信息
+\renewbibmacro*{editor+others}{%
+ \ifboolexpr{
+ test \ifuseeditor
+ and
+ not test {\ifnameundef{editor}}
+ }
+ {\usebibmacro{bbx:dashcheck}
+ {\bibnamedash}
+ {\printnames{editor}%
+ \setunit{\printdelim{editortypedelim}}%
+ \usebibmacro{editor+othersstrg}%
+ \usebibmacro{bbx:savehash}}%
+ \clearname{editor}%
+ \setunit{\printdelim{nameyeardelim}}}%
+ {\global\undef\bbx@lasthash
+ \usebibmacro{labeltitle}%
+ \setunit*{\printdelim{nonameyeardelim}}}%
+ \usebibmacro{date+extradate}}
+
+
+\renewbibmacro*{editor}{%
+\ifboolexpr{
+ test \ifuseeditor
+ and
+ not test {\ifnameundef{editor}}
+ }
+ {\printnames{editor}%
+ \setunit{\printdelim{editortypedelim}}%
+ \usebibmacro{editor+othersstrg}%
+ %\clearname{editor}%
+ }%
+ {}%
+ }
+
+\renewbibmacro*{editor+othersstrg}{%
+ \iffieldundef{editortype}
+ {\ifboolexpr{
+ test {\ifnumgreater{\value{editor}}{1}}
+ or
+ test {\ifandothers{editor}}
+ }
+ {\def\abx@tempa{editors}}
+ {\def\abx@tempa{editor}}}
+ {\ifboolexpr{
+ test {\ifnumgreater{\value{editor}}{1}}
+ or
+ test {\ifandothers{editor}}
+ }
+ {\edef\abx@tempa{\thefield{editortype}s}}
+ {\edef\abx@tempa{\thefield{editortype}}}}%
+ \let\abx@tempb=\empty
+ \ifnamesequal{editor}{translator}
+ {\appto\abx@tempa{tr}%
+ \appto\abx@tempb{\clearname{translator}}}
+ {}%
+ \ifnamesequal{editor}{commentator}
+ {\appto\abx@tempa{co}%
+ \appto\abx@tempb{\clearname{commentator}}}
+ {\ifnamesequal{editor}{annotator}
+ {\appto\abx@tempa{an}%
+ \appto\abx@tempb{\clearname{annotator}}}
+ {}}%
+ \ifnamesequal{editor}{introduction}
+ {\appto\abx@tempa{in}%
+ \appto\abx@tempb{\clearname{introduction}}}
+ {\ifnamesequal{editor}{foreword}
+ {\appto\abx@tempa{fo}%
+ \appto\abx@tempb{\clearname{foreword}}}
+ {\ifnamesequal{editor}{afterword}
+ {\appto\abx@tempa{af}%
+ \appto\abx@tempb{\clearname{afterword}}}
+ {}}}%
+ \ifbibxstring{\abx@tempa}
+ {\printtext[editortype]{%
+ \iffieldequalstr{userd}{chinese}{\bibstring{\abx@tempa cn}}{\bibstring{\abx@tempa}}%
+ }\abx@tempb}
+ {\usebibmacro{editorstrg}}}
+
+
+\DeclareDelimFormat[footfullcite,bib,biblist]{andothersdelim}{}
+%去掉译前的标点
+\renewbibmacro*{name:andothers}{\bibauthorfont%
+ \ifboolexpr{test {\ifnumequal{\value{listcount}}{\value{liststop}}}
+ and test \ifmorenames}
+ {\ifnumgreater{\value{liststop}}{1}%注意这里试图去区分姓名总数大于1的情况,当姓名总数大于1时,最后一个姓名后面先加入一个\finalandcomma
+ {}{}%\finalandcomma,目前国标没有这样的区分要求,如果有需要也是可以这么去做的。
+ \printdelim{andothersdelim}\printdelim{strandothersdelim}}%
+ {}%
+}
+
+
+%增加年字
+\renewbibmacro*{date}{%
+ \usebibmacro{bbx:ifmergeddate}%
+ {}%
+ {\iffieldequalstr{userd}{chinese}{%
+ \ifboolexpr{test {\ifentrytype{article}} or test {\ifentrytype{inproceedings}}
+ or test {\ifentrytype{archive}} or test {\ifentrytype{online}}
+ or test {\ifentrytype{unpublished}}}
+ {\printtext{\blx@gbdatecn{}{}}}%
+ {\printdate\iffieldundef{year}{}{\iffieldint{year}{年}{}}}%
+ }{\ifentrytype{archive}{\printtext{\blx@gbdateen{}{}}}{\printdate}}%
+ }%
+}%
+
+
+\newrobustcmd*{\blx@gbdatecn}[3][]{%
+ \dateeraprintpre{#2#3year}%
+ \iffieldundef{#2#3year}{}{\blx@imc@forcezerosy{\thefield{#2#3year}年}}\ifblank{#1}{}{\printfield{#1}}%
+ \iffieldundef{#2#3month}{}{{\thefield{#2#3month}}月}%
+ \iffieldundef{#2#3day}{}{{\thefield{#2#3day}}日}}
+
+\newrobustcmd*{\blx@gbdateen}[3][]{%
+\mkbibdateen{#2#3year}{#2#3month}{#2#3day}%
+}
+
+\newrobustcmd*{\mkbibdateen}[3]{%
+ \iffieldundef{#2}
+ {}
+ {\mkbibmonth{\thefield{#2}}%
+ \iffieldundef{#1}{}{\space}}%
+ \iffieldundef{#3}
+ {}
+ {{\thefield{#3}}%
+ \iffieldundef{#2}{}{\addcomma\space}}%
+ \iffieldbibstring{#1}
+ {\bibstring{\thefield{#1}}}
+ {\dateeraprintpre{#1}\stripzeros{\thefield{#1}}}}
+
+
+
+\renewbibmacro*{newsdate}{%%
+\ifboolexpr{%
+ test{\iffieldequalstr{userd}{chinese}}%
+ }%
+ {\printtext{\blx@gbdatecn{}{}}}%
+ {\printtext{\blx@gbdate{}{}}}%%
+}
+
+%
+\renewbibmacro*{modifydate}{%新增加一个带括号的日期,用于表示电子资源的更新和修改日期,而公告日期则按日期格式
+\ifboolexpr{%
+test{\iffieldequalstr{userd}{chinese}}%
+}%
+{%
+\printtext{\blx@gbdatecn{}{}}%
+}%
+ {\ifboolexpr{%
+ test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}%
+ }%
+ {}%更新或修改日期通常有day信息
+ {\iffieldundef{year}{%
+ \iffieldundef{endyear}{\iffieldundef{eventyear}{}{\printtext{\gbleftparen}\printeventdate\printtext{\gbrightparen}}}%
+ {\printtext{\gbleftparen}\printenddate\printtext{\gbrightparen}}%
+ }{\iffieldequalstr{year}{}{%因为year存在,但为空
+ }{\printtext{\gbleftparen}\blx@gbdate{}{}\printtext{\gbrightparen}}%
+ }}%
+}}%
+
+
+\renewbibmacro*{url+urldate}{%
+ \newunit\usebibmacro{url}\newunit%
+ \printtext{\blx@gbdatecn{}{url}}%
+}
+
+
+
+%
+% 调整页码前的标点和去掉期刊文章等页码后面的标点
+%
+\renewbibmacro*{note+pages}{%源来自standard.bbx
+ \iffieldundef{postnote}{\iffieldundef{pages}{}{%
+ \setunit{\bibpagespunct}%
+ \printfield{pages}}}{}%
+ }
+
+%
+% 调整页码的格式,即chapter+pages格式
+%
+\renewbibmacro*{chapter+pages}{%
+ \iffieldundef{postnote}{\iffieldundef{pages}{}{%
+ \setunit{\bibpagespunct}%
+ \printfield{pages}}}{}%
+}
+
+%
+% 修改number和volume的格式
+%
+\newcounter{numberwithoutzero}
+\DeclareFieldFormat[article,periodical]{number}%
+ {\iffieldequalstr{userd}{chinese}{%
+ \iffieldint{number}{\setcounter{numberwithoutzero}{#1}\printtext{\bibstring{serialcn}\addthinspace\arabic{numberwithoutzero}\addthinspace 期}}%
+ {\printtext{\bibstring{serialcn}\addthinspace#1\addthinspace 期}}%
+ }%
+ {\bibstring{number}~#1}}%\kern\z@
+
+\DeclareFieldFormat[article,periodical,newspaper]{volume}%
+{\iffieldequalstr{userd}{chinese}{%
+ \iffieldint{volume}%
+ {\bibstring{serialcn}#1\bibstring{volumecn}}%
+ {#1}%
+ }%
+ {\bibstring{volume}~#1}%
+}
+
+
+\DeclareFieldFormat[article,periodical,newspaper]{series}
+{\gbpunctprl#1\gbpunctprr}%
+
+%
+% 调整期刊名的格式
+%
+% 原理方法:因为作者年制年份提到前面,因此涉及到期刊名与后面的卷期的关系。
+% v1.0k,20180425,增加了字体控制命令,hzz
+\renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx
+ \usebibmacro{journal}%
+ \iffieldequalstr{userd}{chinese}{}{\newunit}%
+ \iffieldundef{series}%
+ {}%
+ {\printfield{series}}%
+ \iflistundef{location}{}{\printlist[journallocation]{location}}%
+ \usebibmacro{issue+date}%
+ \usebibmacro{volume+number+eid}%把卷期放到年份后面
+ }
+
+%
+% 调整期刊卷和期的格式
+%
+\renewbibmacro*{volume+number+eid}{%源来自standard.bbx
+\iffieldequalstr{userd}{chinese}%
+ {\iffieldundef{volume}{}{\printfield{volume}}%
+ \iffieldundef{number}{}{\printfield{number}}}%区别于顺序编码制
+ {\newunit\printfield{volume}%
+ \newunit\printfield{number}%
+ \setunit{\addcomma\space}%
+ \printfield{eid}}%
+}
+
+
+%
+% 重设title的输出
+%
+% 20180425,v1.0k,为标题增加字体控制命令,Hu Zhenzhen
+% 原理方法:将文献类型标识符输出出去,原输出来自biblatex.def文件
+% 利用toggle做标识符是否输出的判断
+\renewbibmacro*{title}{%
+ \ifboolexpr{%
+ test{\iffieldundef{title}}%
+ and
+ test{\iffieldundef{subtitle}}%
+ }%
+ {}%
+ {\setunit{\iffieldequalstr{userd}{chinese}{\gbpunctcolon}{\gbpunctcolonlanen}}\printtext[title]{\bibtitlefont%增加字体控制命令%增加了标点:
+ \printfield[titlecase]{title}%
+ \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题
+ {}{\setunit{\subtitlepunct}%
+ \printfield[titlecase]{subtitle}}%
+ \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格
+ {\setunit{\subtitlepunct}\printfield{titleaddon}}%
+ \iftoggle{bbx:gbtype}{%
+ \iffieldundef{entrysubtype}{\printfield[gbtypeflag]{usera}}%在标题后直接给出文献标识字母,判断一下,是否是报纸和标准
+ {\iffieldequalstr{entrysubtype}{standard}{\printfield[gbtypeflags]{usera}}%判断是否为标准
+ {\iffieldequalstr{entrysubtype}{news}{\printfield[gbtypeflagn]{usera}}% 判断是否为报纸
+ {\printfield[gbtypeflag]{usera}}}% 其它
+ }}{}%
+ }%
+}}
+
+
+\renewbibmacro*{labeltitle}{%
+ \iffieldundef{label}
+ {\iffieldundef{shorttitle}%author,editor,translator不存在时title会变到labeltitle。
+ {\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}%
+ {\iffieldundef{origyear}{}{\printfield{origyear}}}{}\printfield{title}%
+ \clearfield{title}}
+ {\printfield[title]{shorttitle}}}
+ {\printfield{label}}}
+
+\renewbibmacro*{maintitle+title}{%
+ \iffieldsequal{maintitle}{title}
+ {\clearfield{maintitle}%
+ \clearfield{mainsubtitle}%
+ \clearfield{maintitleaddon}}
+ {\iffieldundef{maintitle}
+ {}
+ {\usebibmacro{maintitle}%
+ \newunit\newblock
+ \iffieldundef{volume}
+ {}
+ {\printfield{volume}%
+ \printfield{part}%
+ \setunit{\addcolon\space}}}}%
+ \usebibmacro{title}%
+\ifboolexpr{test{\ifentrytype{book}} and (not test{\iffieldundef{volume}})}%判断一下book类有没有volume
+ {\printfield{volume}}{}%
+\ifboolexpr{(test{\ifentrytype{archive}} or test{\ifentrytype{online}}) and (not test{\iffieldundef{number}})}%判断一下archive类有没有number
+ {\printfield{number}}{}%
+ \newunit}
+
+
+\setlength{\bibitemindent}{2\ccwd} % bibitemindent表示一条文献中第一行相对后面各行的缩进
+\setlength{\bibhang}{0pt} % 作者年制中 bibhang 表示的各行起始位置到页
+ % 边的距离,顺序编码制中
+ % bibhang+labelnumberwidth 表示各行起始位置
+ % 到页边的距离
+
+
+
+\renewbibmacro*{translator+others}{%
+ \ifboolexpr{
+ test \ifusetranslator
+ and
+ not test {\ifnameundef{translator}}
+ }
+{\usebibmacro{bbx:dashcheck}
+ {\bibnamedash}
+ {\renewcommand{\aftertransdelim}{\adddot\addspace}\printnames{translator}%
+ \usebibmacro{bbx:savehash}}%
+ \clearname{translator}%
+ \setunit{\printdelim{nameyeardelim}}}%
+ {\global\undef\bbx@lasthash
+ \usebibmacro{labeltitle}%
+ \setunit*{\printdelim{nonameyeardelim}}}%
+ \usebibmacro{date+extradate}}
+
+
+
+\renewbibmacro*{bybookauthor}{%
+ \ifnameundef{bookauthor}%
+ {\ifnameundef{editor}%
+ {}%
+ {\ifnamesequal{author}{editor}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{editor}}{\usebibmacro{editor}}%
+ }{\usebibmacro{editor}}}%
+ }%
+ {\ifnamesequal{author}{bookauthor}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{bookauthor}}{\printnames{bookauthor}}%
+ }{\printnames{bookauthor}}%
+ }%
+}
+
+\newbibmacro*{maintitle+booktitle}{%
+ \iffieldundef{maintitle}
+ {}
+ {\usebibmacro{maintitle}%
+ \iffieldundef{volume}
+ {}
+ {\printfield{volume}%
+ \printfield{part}}}%
+ \usebibmacro{booktitle}%
+}
+
+\renewbibmacro*{booktitle}{%
+\ifboolexpr{
+ test {\iffieldundef{booktitle}}
+ and
+ test {\iffieldundef{booksubtitle}}
+ }
+ {}
+ {\printtext[booktitle]{\bibtitlefont%
+ \printfield[titlecase]{booktitle}%
+ \iffieldundef{booksubtitle}{}%
+ {\setunit{\subtitlepunct}%
+ \printfield[titlecase]{booksubtitle}%
+ \setunit{\subtitlepunct}%
+ \printfield{booktitleaddon}}
+ }%
+ }}
+
+
+\renewbibmacro*{in:}{%
+\iftoggle{bbx:gbpunctin}{\setunit{\gbpunctcomma}}%\addthinspace
+ {\iffieldequalstr{userd}{chinese}%
+ {\setunit{\gbpunctcomma}\ifboolexpr{test {\ifnameundef{bookauthor}} and test{\ifnameundef{editor}}}%
+ {}{\printtext{\bibstring{incn}}}}%
+ {\printtext{\bibstring{in}}}%
+ }}%\newunit\newblock\intitlepunct
+
+
+\newbibmacro*{inbook:volume+number}{%
+ \iffieldundef{volume}{}{\printfield{volume}}%
+ \iffieldundef{number}{}{\printfield{number}}%
+}
+
+
+
+%
+% 增加inbook:parent用于辅助crossref传统功能的实现
+% 用在{crosscite}宏中
+% 20210216,v1.0w,hzz
+\newbibmacro*{inbook:parent}{%
+\usebibmacro{bybookauthor}%
+\ifnameundef{bookauthor}{%
+ \ifnameundef{editor}{}{\printdelim{authotitledelim}}%
+ }{\printdelim{authotitledelim}}%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{}
+{\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}}%为处理一些存在series的情况而增加
+\usebibmacro{maintitle+booktitle}%
+\usebibmacro{inbook:volume+number}%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}%
+{\iffieldundef{series}{}{\newunit\usebibmacro{series+number}}}{}%
+ \newunit\newblock%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{}{\printfield{edition}}%
+ \newunit
+ \newunit\newblock
+ \usebibmacro{publisher+location+date}%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{\printfield{edition}}{}%
+}
+
+\DeclareFieldFormat{part}{#1}% physical part of a logical volume
+
+%
+% 专著中的析出文献的格式修改
+%
+\DeclareBibliographyDriver{inbook}{%源来自standard.bbx
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+% \ifboolexpr{
+% test {\ifnameundef{author}}
+% and
+% test {\ifnameundef{translator}}
+% }{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\usebibmacro{title}%
+\iffieldequalstr{entrysubtype}{classic}%
+{\iffieldundef{part}{}{\printfield{part}}%
+}{}%
+\newunit%
+\iffieldequalstr{entrysubtype}{letter}%
+{\iffieldundef{eventyear}%
+ {\iffieldundef{origyear}{}{\printtext{\blx@gbdatecn{}{orig}}}}%
+ {\printtext{\blx@gbdatecn{}{event}}}%
+ }{}
+\usebibmacro{in:}%
+\usebibmacro{crosscite}{inbook:parent}%
+ \usebibmacro{chapter+pages}%
+ \usebibmacro{doi+eprint+url}%移到上面来
+ \newunit\newblock
+ \iftoggle{bbx:isbn}
+ {\printfield{isbn}}
+ {}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{annotation}\usebibmacro{finentry}}
+
+
+
+\DeclareBibliographyDriver{book}{%源来自standard.bbx文件
+\usebibmacro{bibindex}%
+\usebibmacro{begentry}%
+\usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\ifboolexpr{not (test{\ifnameundef{author}} and test{\ifnameundef{editor}} and %
+test{\ifnameundef{translator}}) and test{\iffieldequalstr{entrysubtype}{classic}}}%author,editor,translator不存在时title会变到labeltitle。
+{\iffieldundef{origyear}{}{\printfield{origyear}}}{}%
+\usebibmacro{maintitle+title}%
+\iftoggle{bbx:gbstrict}{}{%
+\newunit
+\printlist{language}%
+\newunit\newblock%
+\usebibmacro{byauthor}%
+\newunit\newblock}%
+\usebibmacro{byeditor+others}%
+\newunit%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{}{\printfield{edition}}%
+\newunit\newblock%%
+\iftoggle{bbx:gbstrict}{}{%
+\iffieldundef{maintitle}%
+{\printfield{volume}%
+\printfield{part}}%
+{}%
+\newunit%
+\printfield{volumes}%
+\newunit\newblock%
+\usebibmacro{series+number}}%
+\newunit\newblock%
+\usebibmacro{publisher+location+date}%
+\ifboolexpr{test{\iffieldequalstr{entrysubtype}{classic}}}{\printfield{edition}}{}%
+\usebibmacro{chapter+pages}%
+ \iffieldundef{url}{}{%当没有网址时也不输出
+ \usebibmacro{modifydate}}%带括号的修改或更新日期,
+\usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。
+ \newunit\newblock%
+ \printfield{pagetotal}%
+ \newunit\newblock%
+ \iftoggle{bbx:isbn}
+ {\printfield{isbn}}
+ {}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{annotation}%
+ \usebibmacro{finentry}%
+ }%
+
+\renewbibmacro*{doi+eprint+url}{%
+ \iftoggle{bbx:eprint}
+ {\iffieldundef{eprint}{}{\newunit\usebibmacro{eprint}}}%必须要做域判断否则容易产生多余的标点
+ {}%
+ \iftoggle{bbx:url}
+ {\iffieldundef{url}{}{\usebibmacro{url+urldate}}}
+ {}
+ \iftoggle{bbx:doi}
+ {\printfield{doi}}
+ {}}
+
+
+\DeclareBibliographyDriver{manual}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+ \iftoggle{bbx:gbstrict}{}{%
+ \newunit%
+ \printlist{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}}%
+ \newunit\newblock
+ \usebibmacro{byeditor+others}%增加的译者信息
+ \newunit\newblock
+ \iftoggle{bbx:gbfieldtype}{%
+ \printfield{type}%
+ \setunit*{\addspace}}{}%
+ \ifboolexpr{test{\ifentrytype{archive}}}%
+ {}{\printfield{number}}%
+ \newunit\newblock
+ \printfield{version}%
+ \newunit
+ \printfield{note}%
+ \newunit\newblock
+ \usebibmacro{institution+location+date}%
+ \ifboolexpr{test{\ifentrytype{archive}}}%
+ {\newunit\printfield{number}}{}%
+ \usebibmacro{chapter+pages}%
+ \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期
+ \usebibmacro{modifydate}}%修改或更新日期为带括号的时间
+ \usebibmacro{doi+eprint+url}%
+ \newunit
+ \printfield{pagetotal}%
+ \newunit\newblock
+ \iftoggle{bbx:isbn}
+ {\printfield{isrn}}
+ {}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{annotation}\usebibmacro{finentry}}
+
+
+%
+% 期刊文章,连续出版物中的析出文献的格式
+%
+ \DeclareBibliographyDriver{article}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+ \iftoggle{bbx:gbstrict}{}{%
+ \newunit%
+ \printlist{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}%
+ \newunit\newblock
+ \usebibmacro{bytranslator+others}%
+ \newunit\newblock
+ \printfield{version}}%
+ \newunit\newblock
+ %\usebibmacro{in:}% 不使用in来表示期刊等连续出版物
+ \usebibmacro{journal+issuetitle}%
+% \newunit
+% \usebibmacro{byeditor+others}%
+% \newunit
+ \usebibmacro{note+pages}%
+% \iffieldequalstr{entrysubtype}{news}{}%当是新闻时不输出修改或更新日期
+% {%
+% \iffieldundef{url}{}{%当没有网址时也不输出
+% \iftoggle{bbx:url}{%当url选项为false时,也不输出
+% \usebibmacro{modifydate}}{}}}%带括号的修改或更新日期,
+ \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置
+ \newunit\newblock
+ \iftoggle{bbx:isbn}
+ {\printfield{issn}}
+ {}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{finentry}\usebibmacro{annotation}}
+
+
+%=====================================================================
+%设置再次引用的驱动格式
+%=====================================================================
+
+
+\DeclareBibliographyAlias{citeseen:newspaper}{citeseen:article}%
+\DeclareBibliographyAlias{citeseen:inproceedings}{citeseen:inbook}%会议论文文献类型驱动
+\DeclareBibliographyAlias{citeseen:conference}{citeseen:inbook}%会议论文文献类型驱动
+\DeclareBibliographyAlias{citeseen:incollection}{citeseen:inbook}%文集中析出文献类型驱动
+\DeclareBibliographyAlias{citeseen:collection}{citeseen:book}%%文集类型驱动
+\DeclareBibliographyAlias{citeseen:proceedings}{citeseen:book}%会议论文集文献类型驱动
+\DeclareBibliographyAlias{citeseen:thesis}{citeseen:manual}%学位论文驱动
+\DeclareBibliographyAlias{citeseen:unpublished}{citeseen:manual}%其它类型驱动
+\DeclareBibliographyAlias{citeseen:archive}{citeseen:manual}
+
+
+%
+% book条目类的驱动
+%
+\DeclareBibliographyDriver{citeseen:book}{%源来自standard.bbx文件
+\usebibmacro{bibindex}%
+\usebibmacro{begentry}%
+\usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\usebibmacro{maintitle+title}%
+\usebibmacro{chapter+pages}%
+\usebibmacro{finentry}}
+
+
+%
+% 期刊文章,连续出版物中的析出文献的格式
+%
+\DeclareBibliographyDriver{citeseen:article}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+ \newunit\newblock%
+ \usebibmacro{journal+issuetitle}%
+ \usebibmacro{note+pages}%
+ \usebibmacro{finentry}}
+
+
+
+%
+% 连续出版物的驱动
+%
+ \DeclareBibliographyDriver{citeseen:periodical}{%源来自standard.BBX
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{editor}%
+ \newunit\newblock %删除上面一行,添加这一行
+ \usebibmacro{title+issuetitle}%
+\usebibmacro{finentry}}
+
+
+
+%
+% 在线文献驱动
+%
+\DeclareBibliographyDriver{citeseen:online}{%源来自standard.BBX
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+\usebibmacro{finentry}}
+
+
+%
+% 报告类型驱动
+% 当有网址无出版项时,用online输出
+%
+\DeclareBibliographyDriver{citeseen:report}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+ \usebibmacro{chapter+pages}%
+\usebibmacro{finentry}}
+
+%
+% 论文、手册类型驱动
+% 2016-11-11,增加了译者信息
+%
+\DeclareBibliographyDriver{citeseen:manual}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+\ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+ \usebibmacro{title}%
+ \usebibmacro{chapter+pages}%
+ \iffieldundef{url}{}{%当没有网址时也不输出修改或更新日期
+ \usebibmacro{modifydate}}%修改或更新日期为带括号的时间
+ \usebibmacro{doi+eprint+url}%
+ \newunit
+ \printfield{pagetotal}%
+\usebibmacro{finentry}}
+
+%
+% 增加inbook:parent用于辅助crossref传统功能的实现
+% 用在{crosscite}宏中
+% 20210216,v1.0w,hzz
+\newbibmacro*{citeseen:inbook:parent}{%
+\usebibmacro{bybookauthor}%
+\ifnameundef{bookauthor}{%
+ \ifnameundef{editor}{}{\printdelim{authotitledelim}}%
+ }{\printdelim{authotitledelim}}%
+\iffieldundef{series}{}{\usebibmacro{series+number}\setunit{\addcolon\addspace}}%为处理一些存在series的情况而增加
+ \usebibmacro{maintitle+booktitle}%
+ \usebibmacro{inbook:volume+number}%
+}
+
+%
+% 专著中的析出文献的格式修改
+%
+\DeclareBibliographyDriver{citeseen:inbook}{%源来自standard.bbx
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+ \ifboolexpr{
+ test {\ifnameundef{author}}
+ and
+ test {\ifnameundef{translator}}
+ }{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\usebibmacro{title}%
+\usebibmacro{in:}%
+\usebibmacro{crosscite}{citeseen:inbook:parent}%
+\usebibmacro{chapter+pages}%
+\usebibmacro{finentry}}
diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhssay.cbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhssay.cbx
new file mode 100644
index 00000000000..0379e2eadc1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-cajhssay.cbx
@@ -0,0 +1,347 @@
+%%
+%% ---------------------------------------------------------------
+%% erj.cbx --- A citation style of comprehensive academic journal of humanities and social sciences in china
+%% modified from gb7714-2015ay
+%% Maintained by huzhenzhen
+%% E-mail: hzzmail@163.com
+%% Released under the LaTeX Project Public License v1.3c or later
+%% ---------------------------------------------------------------
+%%
+%%用法:类似于标准的样式在biblatex加载时设置样式
+%%文献表正常处理,标注命令主要用cite和textcite
+
+\ProvidesFile{chinese-cajhssay.cbx}[v1.0a a biblatex citation style for ERJ]
+
+%==================================================
+%加载gb样式
+%==================================================
+\RequireCitationStyle{gb7714-2015ay} %
+
+
+%
+% 增加一个控制标注中标点是英文还是中文的选项
+% 20220222,v1.0a,hzz
+\DeclareBibliographyOption{gbcitepunctcn}[true]{%biblatex低版本
+ \ifstrequal{#1}{false}{\exegbpunctencite}{}}
+
+\def\gbpunctcommacite{,}%
+\def\gbpunctmarkcite{、}%
+\def\gbpunctsemicoloncite{;}%
+\def\gbpunctparenlcite{(}%
+\def\gbpunctparenrcite{)}
+\def\gbpunctcoloncite{:}%
+
+\def\exegbpunctencite{%
+\def\gbpunctcommacite{\addcomma\addspace}%
+\def\gbpunctmarkcite{\addcomma\addspace}%
+\def\gbpunctsemicoloncite{\addsemicolon\addspace}%
+\def\gbpunctcoloncite{\addcolon\addspace}%
+\def\gbpunctparenlcite{(}%
+\def\gbpunctparenrcite{)}
+}
+
+%==================================================
+%选项设置
+%==================================================
+\ExecuteBibliographyOptions{
+ maxcitenames=2,
+ mincitenames=1,
+ %gbcitepunctcn=true,
+}
+
+\DeclareDelimFormat[textcite]{delimandincitecn}{和}%\addcomma\space
+\DeclareDelimFormat[parencite,cite]{delimandincitecn}{\gbpunctmarkcite}%\addcomma\space
+\DeclareDelimFormat[textcite]{delimandincite}{和}%\addcomma\space
+\DeclareDelimFormat[parencite,cite]{delimandincite}{ \& }%\addcomma\space
+\DeclareDelimFormat[textcite]{delimandothersincite}{\str@andotherscn}%\addcomma\space
+\DeclareDelimFormat[parencitem,cite]{delimandothersincite}{et al\adddot}%\addcomma\space
+
+\DefineBibliographyStrings{english}{
+ andincitecn = {\printdelim{delimandincitecn}},
+ andincite = {\printdelim{delimandincite}},
+ %andothersincitecn={\str@andotherscn},
+ %andothersincite={\printdelim{delimandothersincite}},
+}
+
+%==================================================
+%引用命令设置,主要用cite和textcite
+%包括标点设置
+%==================================================
+\renewcommand*{\multicitedelim}{\gbpunctsemicoloncite}%\addsemicolon\addspace;
+\renewcommand*{\textcitedelim}{%
+ \iffinalcitedelim
+ {\ifnumgreater{\value{textcitetotal}}{2}
+ {}{}%\iftextcitepunct{\finalandsemicolon}{\finalandcomma}
+ \addspace\gbpunctmarkcite}%\addspace\bibstring{andincitecn}
+ {\iftextcitepunct{\addsemicolon\space}{\addspace\gbpunctmarkcite}}%\addcomma
+}
+
+%注意在renewbibmacro*{cite}里面使用了compcitedelim,compextradelim
+%但其实在cite命令里面若在sepcode里面指定了multicitedelim,则这两个间隔符有时是多余的
+%在这个样式中我们直接将其定义为空了,然后再cite命令中设置了multicitedelim
+\renewcommand*{\compcitedelim}{}
+
+\DeclareDelimFormat[textcite]{nameyeardelim}{\addspace}%\addcomma\space
+\DeclareDelimFormat[cite,parencite]{nameyeardelim}{\gbpunctcommacite}%
+\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}%
+\DeclareDelimFormat[cite,parencite]{andothersdelim}{\iffieldequalstr{userf}{chinese}{}{\addspace}}%
+\DeclareDelimFormat[cite,parencite,textcite]{bibpagespunct}{\gbpunctcoloncite}%
+
+
+
+%标注压缩时,直接用date+extradate代替extradate实现2006a,2006b的效果
+%\DeclareDelimFormat*{compcitedelim}{\gbpunctmarkcite}%\addcomma\addspace
+%\printfield{extradate}\printlabeldateextra\printfield{labelyear}\printfield{extradate}
+\newbibmacro*{cite:extradate}{%
+ \iffieldundef{extradate}
+ {}
+ {\printtext[bibhyperref]{\addspace\printlabeldateextra}}}%
+
+
+%添加前后空格
+\DeclareCiteCommand{\cite}%[\mkbibparens]
+ {\usebibmacro{cite:init}%
+ \unspace\printtext{\gbpunctparenlcite}\usebibmacro{prenote}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}%
+ {\printdelim{bibpagespunct}\thefield{postnote}}}%
+ }%\addspace
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}%
+ \gbpunctparenrcite}%\addspace
+
+
+%添加前后空格
+\DeclareCiteCommand{\parencite}%[\mkbibparens]
+ {\usebibmacro{cite:init}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}%
+ {\printdelim{bibpagespunct}\thefield{postnote}}}%
+ }%\addspace
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}%
+
+
+
+%重定义citeyear来得到不需要作者时的引用标注标签
+\DeclareCiteCommand{\citeyear}%[\mkbibparens]
+ {\usebibmacro{cite:init}%
+ \unspace\printtext{\gbpunctparenlcite}\usebibmacro{prenote}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}%
+ {\printdelim{bibpagespunct}\thefield{postnote}}}%
+ }%\addspace
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite:labeldate+extradate}}
+ {}
+ {\usebibmacro{postnote}%
+ \gbpunctparenrcite}%\addspace
+
+%原版
+%\DeclareCiteCommand{\cite}[\mkbibparens]
+% {\usebibmacro{cite:init}%
+% \usebibmacro{prenote}}%)
+% {\usebibmacro{citeindex}%
+% \usebibmacro{cite}}
+% {}
+% {\usebibmacro{postnote}}
+
+%
+%添加后面空格
+%\DeclareCiteCommand{\cbx@textcite}
+% {\usebibmacro{cite:init}}
+% {\usebibmacro{citeindex}%
+% \usebibmacro{textcite}}
+% {}
+% {\usebibmacro{textcite:postnote}\addspace}
+
+
+%修改注释后的标点
+\renewcommand{\bibfootnotewrapper}[1]{%
+ #1}%\bibsentence
+
+%避免去除前面的空白
+\renewrobustcmd{\blx@mkbibfootnote}[2]{%
+ \iftoggle{blx@footnote}
+ {\blx@warning{Nested notes}%
+ \addspace\mkbibparens{#2}}
+ {%\unspace
+ \ifnum\blx@notetype=\tw@
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}
+ {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}}}}
+
+%修改脚注注释的实现
+\def\execgbfootbib%
+ {%
+ %开启引用跟踪计数器,为使用\ifciteseen等测试命令
+ \ExecuteBibliographyOptions{citetracker=true}
+
+ %
+ %重定义\footfullcite使完成css的脚注文献要求
+ \DeclareCiteCommand{\footfullcite}[\mkbibfootnote]%
+ {\defcounter{maxnames}{\blx@maxcitenames}%局部定义maxnames和minnames计数器
+ \defcounter{minnames}{\blx@mincitenames}%使footfullcite内的作者输出与正文文献表中的一致。
+ \usebibmacro{prenote}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}{\setunit{\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\addcolon\addspace}}%
+ \printfield{postnote}}}%与ay样式不同,由于已修改postnote域格式,直接用printfield
+ }%
+ {\ifciteseen%
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{citeseen:\thefield{entrytype}}}%\nopunct
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}%
+ }%
+ {\multicitedelim}%
+ {\usebibmacro{postnote}\usebibmacro{finentry}}%
+
+
+ \DeclareCiteCommand{\fullcite}
+ {\usebibmacro{prenote}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}{\setunit{\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\addcolon\addspace}}%
+ \printfield{postnote}}}%与ay样式不同,由于已修改postnote域格式,直接用printfield
+ }
+ {\ifciteseen%
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{citeseen:\thefield{entrytype}}}%\nopunct
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}%
+ }
+ {\multicitedelim}
+ {\usebibmacro{postnote}\usebibmacro{finentry}}%
+
+
+ \DeclareCiteCommand{\fullinnercite}
+ {\usebibmacro{prenote}%
+ \renewbibmacro*{postnote}{%
+ \iffieldundef{postnote}%
+ {}{\setunit{\iffieldequalstr{userd}{chinese}{\unspace\gbpunctcomma}{\addcolon\addspace}}%
+ \printfield{postnote}}}%与ay样式不同,由于已修改postnote域格式,直接用printfield
+ }
+ {\ifciteseen%
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{citeseen:\thefield{entrytype}}}%\nopunct
+ {\usedriver{\DeclareNameAlias{sortname}{default}}{\thefield{entrytype}}}%
+ }
+ {\multicitedelim}
+ {\usebibmacro{postnote}\usebibmacro{finentry}}%
+ }
+
+
+%为先秦文献夹注做处理
+\DeclareFieldFormat*{citejz}{%
+\iffieldequalstr{userd}{chinese}{\gbpunctprl\gbpunctttl#1\gbpunctttr\gbpunctprr}%
+{\mkbibemph{#1}}}
+\DeclareCiteCommand{\citejz}
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}
+ {\ifciteindex
+ {\indexfield{indextitle}}
+ {}%
+ \printfield[citejz]{labeltitle}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+
+\DeclareFieldFormat{citetitle}{%
+\iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}%
+{\mkbibemph{#1}}%
+}
+
+\DeclareFieldFormat
+ [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
+ {citetitle}{%
+ \iffieldequalstr{userd}{chinese}{\gbpunctttl#1\gbpunctttr}%
+ {\mkbibquote{#1\isdot}}%
+ }
+
+
+%为文献输出出版信息
+\DeclareCiteCommand{\citepub}
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}
+ {\ifciteindex
+ {\indexfield{indextitle}}
+ {}%
+ \ifentrytype{online}{\usebibmacro{institution+location+date}}{\usebibmacro{publisher+location+date}}%
+ }
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+
+\newbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\iffieldundef{shorthand}
+ {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND
+ \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)}
+ {\setunit{\addcomma}%
+ \usebibmacro{cite:extradate}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}
+ {\ifnameundef{labelname}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}\unspace\gbpunctparenlcite}%\bibopenparen
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{cite:labeldate+extradate}}
+ {\usebibmacro{cite:shorthand}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}\unspace\gbpunctparenlcite}%\bibopenparen
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\iffieldundef{labelyear}
+ {\usebibmacro{cite:label}}
+ {\usebibmacro{cite:labeldate+extradate}}%
+ \savefield{labelyear}{\cbx@lastyear}}
+ {\usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\gbpunctparenrcite\global\boolfalse{cbx:parens}}%\bibcloseparen
+ {}%
+ \textcitedelim}}
+
+\newbibmacro*{textcite:postnote}{%
+ \usebibmacro{postnote}%
+ \ifthenelse{\value{multicitecount}=\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\gbpunctparenrcite\global\boolfalse{cbx:parens}}%\bibcloseparen
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\gbpunctparenrcite\global\boolfalse{cbx:parens}}%\bibcloseparen
+ {}%
+ \textcitedelim}}}
+
+\let\citet=\parencite
+\let\citep=\cite
+\DeclareMultiCiteCommand{\cites}{\cite}{\multicitedelim}
+\DeclareMultiCiteCommand{\parencites}{\parencite}{\multicitedelim}
+\let\citets=\parencites
diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-css.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-css.bbx
index 88d963c2bc5..5248837899e 100644
--- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-css.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-css.bbx
@@ -1,6 +1,6 @@
%%
%% ---------------------------------------------------------------
-%% css.bbx --- A citation style of Society sciences in china
+%% chinese-css.bbx --- A bibliography style of Society sciences in china
%% modified from gb7714-2015
%% Maintained by huzhenzhen
%% E-mail: hzzmail@163.com
@@ -229,7 +229,7 @@
%重新调整输出编者的类型
\renewbibmacro*{editor+others}{%
- \ifcitation{\ifboolexpr{
+ \ifboolexpr{
test \ifuseeditor
and
not test {\ifnameundef{editor}}
@@ -238,15 +238,7 @@
\setunit{\printdelim{editortypedelim}}%
\usebibmacro{editor+othersstrg}%
\clearname{editor}}%
- {}}%
- {\ifboolexpr{%
- test \ifuseeditor
- and
- not test {\ifnameundef{editor}}
- }%
- {\printnames{editor}%
- \clearname{editor}}
- {}}%
+ {}%
}
\renewbibmacro*{editor+othersstrg}{%
@@ -293,6 +285,7 @@
}\abx@tempb}
{\usebibmacro{editorstrg}}}
+
%去掉译前的标点
\renewbibmacro*{name:andothers}{\bibauthorfont%
\ifcitation{\ifboolexpr{test {\ifnumequal{\value{listcount}}{\value{liststop}}}
diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.bbx
index a8031346b28..d8a88352a22 100644
--- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.bbx
@@ -1,6 +1,6 @@
%%
%% ---------------------------------------------------------------
-%% css.bbx --- A citation style of journal of management world in china
+%% chinese-jmw.bbx --- A bibliography style of journal of management world in china
%% modified from gb7714-2015
%% Maintained by huzhenzhen
%% E-mail: hzzmail@163.com
diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.cbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.cbx
index 9b21ea69f4e..39246cb2be9 100644
--- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/chinese-jmw.cbx
@@ -29,12 +29,13 @@
\def\gbpunctsemicoloncite{;}%
\def\gbpunctparenlcite{(}%
\def\gbpunctparenrcite{)}
+
\def\execgbpunctencite{%
\def\gbpunctcommacite{\addcomma\addspace}%
\def\gbpunctmarkcite{\addcomma\addspace}%
\def\gbpunctsemicoloncite{\addsemicolon\addspace}%
\def\gbpunctparenlcite{(}%
-\def\gbpunctparenrcite{)}
+\def\gbpunctparenrcite{)}%
}
%==================================================
diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx
index 6042720bc30..aa23d3cadf7 100644
--- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx
@@ -11,7 +11,7 @@
%
% 版本和时间信息
%
-\def\versionofgbtstyle{2024/03/27 v1.1q}
+\def\versionofgbtstyle{2024/11/15 v1.1s}
\def\versionofbiblatex{\abx@version}
\ProvidesFile{gb7714-2015.bbx}[\versionofgbtstyle biblatex bibliography style]
%\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求
@@ -236,6 +236,14 @@
% 设置宏包选项
%=====================================================================
%
+ % 增加一个控制是否输出与author相同的editor或bookauthor的选项
+ % 20240517,v1.1r,hzz
+ \newtoggle{bbx:gbnosameeditor}
+ \DeclareBibliographyOption{gbnosameeditor}[false]{%biblatex低版本
+ \settoggle{bbx:gbnosameeditor}{#1}}
+ \ExecuteBibliographyOptions{gbnosameeditor}
+
+ %
% 增加一个控制是否输出and others信息的选项
% 20240315,v1.1p,hzz
\newtoggle{bbx:gbnoothers}
@@ -2480,7 +2488,7 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7
}
%
-\newbibmacro*{byeditor+others}{%
+\renewbibmacro*{byeditor+others}{%
\ifnameundef{editor}
{}
{\iffieldequalstr{userd}{chinese}{}{\usebibmacro{byeditor+othersstrg}%
@@ -3247,13 +3255,16 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7
%为了实现v3.8以上版本的双语文献,采用related的方法代替set方法,因为set方法已经无法实现了,
%因为set不再复制其第一个成员的信息。于是定义一个命令,用于动态的修改数据,即添加related域的信息
%其中使用了\DeclareStyleSourcemap,但由于其只能出现在导言区中,因此\defdoublelangentry命令也只能出现在导言区中
+ %20240911-修改
+ %修正match多次匹配related文献的问题,当要文献A关联文献B时,若B的entrykey中包含A的entrykey的信息
+ %之前因为不是全词匹配,则B也会被加上related域,因此采用全词匹配的方式避免该问题
\newcommand{\defdoublelangentry}[2]{%
\edef\entrykeya{##1}
\edef\entrykeyb{##2}
\DeclareStyleSourcemap{
\maps[datatype=bibtex]{
\map{
- \step[fieldsource=entrykey, match=\entrykeya, final]
+ \step[fieldsource=entrykey, match=\regexp{^}\entrykeya\regexp{$}, final]
\step[fieldset=related, fieldvalue=\entrykeyb]
}
}
@@ -3748,15 +3759,19 @@ incollection,proceedings,inproceedings]{number}{%
% v1.0q 2019-03-01 hzz
% 不再对editor和bookauthor做sourcemap,而是下面的宏内逻辑代替,
% 使得除使用bookauthor外也可以使用editor,便于在使用editor时使用editortype
+% v1.1r 2024-05-17 hzz
+% 增加选项gbnosameeditor后根据其来确定是否输出与author相同的editor或bookauthor
\renewbibmacro*{bybookauthor}{%
\ifnameundef{bookauthor}%
{\ifnameundef{editor}%
{}%
{\ifnamesequal{author}{editor}%
- {}{\usebibmacro{editor}}}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{editor}}{\usebibmacro{editor}}%
+ }{\usebibmacro{editor}}}%
}%
{\ifnamesequal{author}{bookauthor}%
- {}{\printnames{bookauthor}}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{bookauthor}}{\printnames{bookauthor}}%
+ }{\printnames{bookauthor}}%
}%
}
@@ -4287,6 +4302,7 @@ test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{
\usebibmacro{institution+location+date}%
%\usebibmacro{organization+location+date}%
%\newunit\newblock
+ \usebibmacro{chapter+pages}%
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx
index 4be08f7985f..c633ec7394f 100644
--- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.cbx
@@ -168,7 +168,9 @@
%\DeclareDelimFormat[textcite]{andothersdelim}{\addspace}%
\renewcommand*{\compcitedelim}{\addcomma}%\addcomma\addthinspace
\renewcommand*{\supercitedelim}{\addcomma}
-\renewcommand*{\multicitedelim}{\addcomma}
+\DeclareDelimFormat{multicitedelimiter}{\addcomma}%新定义一个multicitedelim来区分不同标注命令下的空格处理
+\DeclareDelimFormat[parencite]{multicitedelimiter}{\addcomma\addthinspace}%太窄则用addspace
+\renewcommand*{\multicitedelim}{\printdelim{multicitedelimiter}}
%
%将连续3篇文献压缩改为连续2篇文献压缩
diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx
index 01a0f05a6bf..c7033cc1023 100644
--- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx
@@ -10,7 +10,7 @@
%
% 版本和时间信息
%
-\def\versionofgbtstyle{2024/03/27 v1.1q}
+\def\versionofgbtstyle{2024/11/15 v1.1s}
\def\versionofbiblatex{\abx@version}
\ProvidesFile{gb7714-2015ay.bbx}[\versionofgbtstyle biblatex bibliography style]
%\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求
@@ -233,6 +233,14 @@
% 设置宏包选项
%=====================================================================
%
+ % 增加一个控制是否输出与author相同的editor或bookauthor的选项
+ % 20240517,v1.1r,hzz
+ \newtoggle{bbx:gbnosameeditor}
+ \DeclareBibliographyOption{gbnosameeditor}[false]{%biblatex低版本
+ \settoggle{bbx:gbnosameeditor}{#1}}
+ \ExecuteBibliographyOptions{gbnosameeditor}
+
+ %
% 增加一个控制是否输出and others信息的选项
% 20240315,v1.1p,hzz
\newtoggle{bbx:gbnoothers}
@@ -241,6 +249,39 @@
\ExecuteBibliographyOptions{gbnoothers}
%
+ % 增加一个控制是否输出恢复传统crossref作用的选项
+ % 20210216,v1.0w,hzz
+ \newtoggle{bbx:citexref}
+ \DeclareBibliographyOption{citexref}[true]{%
+ \settoggle{bbx:citexref}{#1}}
+ \ExecuteBibliographyOptions{citexref}
+
+ \newbibmacro*{citexref}{%
+ \printtext[bibhyperref]{%
+ \printfield{labelprefix}%
+ \printfield{labelnumber}%
+ \ifbool{bbx:subentry}
+ {\printfield{entrysetcount}}
+ {}}}
+
+ \DeclareCiteCommand{\bbx@xrefcite}[\mkbibbrackets]%
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \boolfalse{backtracker}}
+ {\usebibmacro{citexref}}
+ {}
+ {}
+
+ \newbibmacro*{crosscite}[1]{%
+ \iftoggle{bbx:citexref}
+ {\iffieldundef{crossref}
+ {\iffieldundef{xref}
+ {\usebibmacro{#1}}
+ {\printtext{\bbx@xrefcite{\thefield{xref}}}}}
+ {\printtext{\bbx@xrefcite{\thefield{crossref}}}}}
+ {\usebibmacro{#1}}}
+
+ %
% 增加一个控制是否输出文献载体的选项
% 20191125,v1,0s,hzz
\newtoggle{bbx:gbmedium}
@@ -2023,7 +2064,7 @@
\DeclareStyleSourcemap{
\maps[datatype=bibtex]{
\map{
- \step[fieldsource=entrykey, match=\entrykeya, final]
+ \step[fieldsource=entrykey, match=\regexp{^}\entrykeya\regexp{$}, final]
\step[fieldset=related, fieldvalue=\entrykeyb]
}
}
@@ -3219,6 +3260,10 @@ test{\iftoggle{iftlnine}}
\DeclareListAlias{institution}{location}
\DeclareListAlias{publisher}{location}
+%定义出版社与年份之间的标点便于后面重定义
+\newcommand{\pubdatadelim}{\setunit*{\addcomma\space}}
+\newcommand{\locnopubdelim}{\setunit*{\addcomma\space}}
+
% 新增一个样式用于输出连续出版物的地址,单位,时间,
% 用于periodical连续出版物的出版社和地址的处理
%
@@ -3239,7 +3284,7 @@ test {\iflistundef{location}} and test {\iflistundef{institution}}%
\iflistundef{institution}{%
\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@nopublisher\gbrightbracket}}{\printtext{\mkbibbrackets{s.n.}}}}%
{\printlist{institution}}}%
-\setunit{\addcomma\addspace}%
+\pubdatadelim%
%\usebibmacro{date}%
\printfield{year}%
\bibrangedash%
@@ -3250,7 +3295,7 @@ test {\iflistundef{location}} and test {\iflistundef{institution}}%
{\setunit*{\addcomma\space}}
{\setunit*{\publocpunct}}%
\printlist{institution}%
- \setunit*{\addcomma\space}%
+ \pubdatadelim%
\usebibmacro{date}%
\newunit}%
}
@@ -3277,15 +3322,15 @@ test {\iflistundef{location}} and test {\iflistundef{institution}}%
{\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@nopublisher\gbrightbracket}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}%
{\printtext{\mkbibbrackets{s.n.}}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}}}%
{\printlist{publisher}}}%
-\setunit*{\addcomma\addspace}%\addcomma\addspace%
+\pubdatadelim%%\addcomma\addspace%
\usebibmacro{date}%%\newunit %去掉这个标点
}%
{\printlist{location}%
\iflistundef{publisher}
- {\setunit*{\addcomma\space}}
+ {\locnopubdelim}
{\setunit*{\publocpunct}}%
\printlist{publisher}%
- \setunit*{\addcomma\space}%
+ \pubdatadelim%
\usebibmacro{date}%%\newunit
}%
}
@@ -3301,7 +3346,7 @@ test {\iflistundef{location}} and test {\iflistundef{institution}}%
{\setunit*{\addcomma\space}}
{\setunit*{\publocpunct}}%
\printlist{institution}%
- \setunit*{\addcomma\space}%
+ \pubdatadelim%
\usebibmacro{date}%
%\newunit
}}
@@ -3493,12 +3538,15 @@ incollection,proceedings,inproceedings]{number}{%
}
+\newtoggle{bbx:gbmergedate}
+\settoggle{bbx:gbmergedate}{true}
%
%为mergedate增加选项none,即实现年份不提前到作者后面的标签中
%也不打印用于区分同作者同年份文献的标识符如(a,b,c)
%目的是实现一些特殊的文献表样式比如ucas的作者年制
%v1.0q,20190212,hzz
\def\bbx@opt@mergedate@none{%
+ \global\togglefalse{bbx:gbmergedate}
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
@@ -3525,6 +3573,7 @@ incollection,proceedings,inproceedings]{number}{%
}
\def\bbx@opt@mergedate@false{%
+ \global\togglefalse{bbx:gbmergedate}
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
@@ -3574,7 +3623,7 @@ incollection,proceedings,inproceedings]{number}{%
\printfield[titlecase]{booktitle}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{booksubtitle}}%
- \newunit%标点换成下一句
+ %\newunit%标点换成下一句
\setunit{\subtitlepunct}}%
\printfield{booktitleaddon}}
@@ -3584,24 +3633,27 @@ incollection,proceedings,inproceedings]{number}{%
% 原理方法:因为作者年制年份提到前面,因此涉及到期刊名与后面的卷期的关系。
% v1.0k,20180425,增加了字体控制命令,hzz
% v1.1j,20220527,修复期刊名不存在时多余的标点
+% v1.1q,20240514,修复卷不存在时期刊名与期之间引入的标点(并考虑mergedate选项的问题)
\renewbibmacro*{journal+issuetitle}{\bibpubfont%源来自standard.bbx
\usebibmacro{journal}%
- %\setunit*{\addspace}%
- \iffieldundef{journaltitle}{}{\setunit*{\addcomma\addspace}}%修改为增加一个逗号
\iffieldundef{series}%
{}%
{\newunit%
\printfield{series}%
\setunit{\addspace}}%
- %\usebibmacro{volume+number+eid}%
- %\setunit{\addspace}%
- \printtext{\usebibmacro{issue+date}}%使用printtext配合后面的\setunit*来实现后面的逗号的自动处理
- %\setunit{\addcolon\space}%
- \iffieldundef{volume}{}{\setunit*{\addcomma\space}}%
- %换成逗号和空格
- %\usebibmacro{issue}%
+ \iftoggle{bbx:gbmergedate}{%year提到前面作为extrayear
+ \iffieldundef{entrysubtype}{}%判断是否为报纸
+ {\iffieldequalstr{entrysubtype}{news}{\setunit*{\addcomma\addspace}}{}}%%
+ \printtext{\usebibmacro{issue+date}}%
+ \iffieldundef{volume}{}{\setunit*{\addcomma\addspace}}%
+ }%反之则,期刊也要求输出year
+ {\iffieldundef{journaltitle}{}%若存在期刊,那么就加入逗号
+ {\setunit*{\addcomma\addspace}}\printtext{\usebibmacro{issue+date}}%
+ \iffieldundef{volume}{}%若不存在卷则要考虑前面是否存在期刊和year,若存在加入逗号,否则不加入
+ {\ifboolexpr{test {\iffieldundef{journaltitle}} and test {\iffieldundef{year}}}%
+ {}{\setunit*{\addcomma\addspace}}}%
+ }%
\usebibmacro{volume+number+eid}%把卷期放到年份后面
- %\newunit
}
%
@@ -3804,15 +3856,19 @@ test {\ifentrytype{conference}}
% v1.0q 2019-03-01 hzz
% 不再对editor和bookauthor做sourcemap,而是下面的宏内逻辑代替,
% 使得除使用bookauthor外也可以使用editor,便于在使用editor时使用editortype
+% v1.1r 2024-05-17 hzz
+% 增加选项gbnosameeditor后根据其来确定是否输出与author相同的editor或bookauthor
\renewbibmacro*{bybookauthor}{%
\ifnameundef{bookauthor}%
{\ifnameundef{editor}%
{}%
{\ifnamesequal{author}{editor}%
- {}{\usebibmacro{editor}}}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{editor}}{\usebibmacro{editor}}%
+ }{\usebibmacro{editor}}}%
}%
{\ifnamesequal{author}{bookauthor}%
- {}{\printnames{bookauthor}}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{bookauthor}}{\printnames{bookauthor}}%
+ }{\printnames{bookauthor}}%
}%
}
@@ -4381,17 +4437,11 @@ test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{
%
-% 专著中的析出文献的格式修改
-%
-\DeclareBibliographyDriver{inbook}{%源来自standard.bbx
- \usebibmacro{bibindex}%
- \usebibmacro{begentry}%
- \usebibmacro{author/translator+others}%
-\ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
-\usebibmacro{title}%
-\usebibmacro{in:}%
-%\printtext{\texttt{//}\addthinspace}%
- \usebibmacro{bybookauthor}%
+% 增加inbook:parent用于辅助crossref传统功能的实现
+% 用在{crosscite}宏中
+% 20210216,v1.0w,hzz
+\newbibmacro*{inbook:parent}{%
+\usebibmacro{bybookauthor}%
\ifnameundef{bookauthor}{%
\ifnameundef{editor}{}{\newunit}%
}{\newunit}%替换下一句
@@ -4418,7 +4468,24 @@ test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{
\newunit\newblock
%\printfield{note}%
%\newunit\newblock
- \usebibmacro{publisher+location+date}%
+ \usebibmacro{publisher+location+date}}
+
+%
+% 专著中的析出文献的格式修改
+%
+\DeclareBibliographyDriver{inbook}{%源来自standard.bbx
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+ \ifboolexpr{
+ test {\ifnameundef{author}}
+ and
+ test {\ifnameundef{translator}}
+ }{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
+\usebibmacro{title}%
+\usebibmacro{in:}%
+%\printtext{\texttt{//}\addthinspace}%
+\usebibmacro{crosscite}{inbook:parent}%
%\newunit\newblock
\usebibmacro{chapter+pages}%
%\newunit\newblock
@@ -4438,4 +4505,4 @@ test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
- \usebibmacro{finentry}\usebibmacro{annotation}}
+ \usebibmacro{annotation}\usebibmacro{finentry}}
diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx
index 8a1a03d1d2f..ff891df68f9 100644
--- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.cbx
@@ -181,7 +181,7 @@ test {\iftoggle{iftlseven}}%3.7=biblatex
{\iffieldundef{shorthand}
{\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND
\(\value{multicitecount}=0\OR\iffieldundef{postnote}\)}
- {\setunit{\addcomma}%
+ {\setunit{\compextradelim}%\addcomma
\usebibmacro{cite:extradate}}
{\setunit{\compcitedelim}%
\usebibmacro{cite:labeldate+extradate}%
@@ -323,7 +323,7 @@ test {\iftoggle{iftlseven}}%3.7=biblatex
\cite}
\newrobustcmd{\mkbiboutparens}[1]{%
- \unspace\allowhyphens%
+ \allowhyphens%
\begingroup\mkbibleftborder#1\mkbibrightborder\endgroup}%
%
diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx
index 3ff6cc21b67..ace29b28ed1 100644
--- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx
@@ -11,7 +11,7 @@
%
% 版本和时间信息
%
-\def\versionofgbtstyle{2024/03/27 v1.1q}
+\def\versionofgbtstyle{2024/11/15 v1.1s}
\def\versionofbiblatex{\abx@version}
\ProvidesFile{gb7714-2015ms.bbx}[\versionofgbtstyle biblatex bibliography style]
%\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求
@@ -120,6 +120,14 @@
% 设置宏包选项
%=====================================================================
%
+ % 增加一个控制是否输出与author相同的editor或bookauthor的选项
+ % 20240517,v1.1r,hzz
+ \newtoggle{bbx:gbnosameeditor}
+ \DeclareBibliographyOption{gbnosameeditor}[false]{%biblatex低版本
+ \settoggle{bbx:gbnosameeditor}{#1}}
+ \ExecuteBibliographyOptions{gbnosameeditor}
+
+ %
% 增加一个控制是否输出and others信息的选项
% 20240315,v1.1p,hzz
\newtoggle{bbx:gbnoothers}
@@ -1847,7 +1855,7 @@
\DeclareStyleSourcemap{
\maps[datatype=bibtex]{
\map{
- \step[fieldsource=entrykey, match=\entrykeya, final]
+ \step[fieldsource=entrykey, match=\regexp{^}\entrykeya\regexp{$}, final]
\step[fieldset=related, fieldvalue=\entrykeyb]
}
}
@@ -2485,15 +2493,19 @@ incollection,proceedings,inproceedings]{number}{%
% v1.0q 2019-03-01 hzz
% 不再对editor和bookauthor做sourcemap,而是下面的宏内逻辑代替,
% 使得除使用bookauthor外也可以使用editor,便于在使用editor时使用editortype
+% v1.1r 2024-05-17 hzz
+% 增加选项gbnosameeditor后根据其来确定是否输出与author相同的editor或bookauthor
\renewbibmacro*{bybookauthor}{%
\ifnameundef{bookauthor}%
{\ifnameundef{editor}%
{}%
{\ifnamesequal{author}{editor}%
- {}{\usebibmacro{editor}}}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{editor}}{\usebibmacro{editor}}%
+ }{\usebibmacro{editor}}}%
}%
{\ifnamesequal{author}{bookauthor}%
- {}{\printnames{bookauthor}}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{bookauthor}}{\printnames{bookauthor}}%
+ }{\printnames{bookauthor}}%
}%
}%
% 责任者如果没有author用editor或translator替代
diff --git a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.bbx b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.bbx
index 27b316d648d..25be8bcea79 100644
--- a/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.bbx
@@ -11,7 +11,7 @@
%
% 版本和时间信息
%
-\def\versionofgbtstyle{2024/03/27 v1.1q}
+\def\versionofgbtstyle{2024/11/15 v1.1s}
\def\versionofbiblatex{\abx@version}
\ProvidesFile{gb7714-2015mx.bbx}[\versionofgbtstyle biblatex bibliography style]
%\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求
@@ -147,6 +147,14 @@
% 设置宏包选项
%=====================================================================
%
+ % 增加一个控制是否输出与author相同的editor或bookauthor的选项
+ % 20240517,v1.1r,hzz
+ \newtoggle{bbx:gbnosameeditor}
+ \DeclareBibliographyOption{gbnosameeditor}[false]{%biblatex低版本
+ \settoggle{bbx:gbnosameeditor}{#1}}
+ \ExecuteBibliographyOptions{gbnosameeditor}
+
+ %
% 增加一个控制是否输出and others信息的选项
% 20240315,v1.1p,hzz
\newtoggle{bbx:gbnoothers}
@@ -1923,7 +1931,7 @@
\patchcmd{\abx@macro@title}{\newunitpunct}{}{}{}}}{}
}
-\newbibmacro*{byeditor+others}{%
+\renewbibmacro*{byeditor+others}{%
\ifnameundef{editor}
{}
{\iffieldequalstr{userd}{chinese}{}{\usebibmacro{byeditor+othersstrg}%
@@ -2430,7 +2438,7 @@
\DeclareStyleSourcemap{
\maps[datatype=bibtex]{
\map{
- \step[fieldsource=entrykey, match=\entrykeya, final]
+ \step[fieldsource=entrykey, match=\regexp{^}\entrykeya\regexp{$}, final]
\step[fieldset=related, fieldvalue=\entrykeyb]
}
}
@@ -2822,15 +2830,19 @@ incollection,proceedings,inproceedings]{number}{%
% v1.0q 2019-03-01 hzz
% 不再对editor和bookauthor做sourcemap,而是下面的宏内逻辑代替,
% 使得除使用bookauthor外也可以使用editor,便于在使用editor时使用editortype
+% v1.1r 2024-05-17 hzz
+% 增加选项gbnosameeditor后根据其来确定是否输出与author相同的editor或bookauthor
\renewbibmacro*{bybookauthor}{%
\ifnameundef{bookauthor}%
{\ifnameundef{editor}%
{}%
{\ifnamesequal{author}{editor}%
- {}{\usebibmacro{editor}}}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{editor}}{\usebibmacro{editor}}%
+ }{\usebibmacro{editor}}}%
}%
{\ifnamesequal{author}{bookauthor}%
- {}{\printnames{bookauthor}}%
+ {\iftoggle{bbx:gbnosameeditor}{\clearname{bookauthor}}{\printnames{bookauthor}}%
+ }{\printnames{bookauthor}}%
}%
}
diff --git a/Master/texmf-dist/tex/latex/biblatex-ieee/ieee-alphabetic.bbx b/Master/texmf-dist/tex/latex/biblatex-ieee/ieee-alphabetic.bbx
index 8f4e1bea05c..f8a0fcfcab0 100644
--- a/Master/texmf-dist/tex/latex/biblatex-ieee/ieee-alphabetic.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-ieee/ieee-alphabetic.bbx
@@ -8,7 +8,7 @@
%% ---------------------------------------------------------------
%%
-\ProvidesFile{ieee-alphabetic.bbx}[2024/08/14 v1.3g biblatex bibliography style]
+\ProvidesFile{ieee-alphabetic.bbx}[2025-01-15 v1.4c biblatex bibliography style]
\RequireBibliographyStyle{ieee}
@@ -53,7 +53,7 @@
{\item}
%%
-%% Copyright (C) 2011-2013,2015-2021,2024 by
+%% Copyright (C) 2011-2013,2015-2021,2024,2025 by
%% Joseph Wright <joseph@texdev.net>
%%
%% It may be distributed and/or modified under the conditions of
@@ -71,7 +71,8 @@
%% ieee.bbx,
%% ieee.cbx,
%% ieee-alphabetic.bbx,
-%% ieee-alphabetic.cbx and
+%% ieee-alphabetic.cbx,
+%% ieee-comp.cbx and
%% magyar-ieee.lbx,
%% and the derived files biblatex-ieee.pdf and
%% biblatex-ieee-alphabetic.pdf.
diff --git a/Master/texmf-dist/tex/latex/biblatex-ieee/ieee-alphabetic.cbx b/Master/texmf-dist/tex/latex/biblatex-ieee/ieee-alphabetic.cbx
index d28449741b3..04996384592 100644
--- a/Master/texmf-dist/tex/latex/biblatex-ieee/ieee-alphabetic.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-ieee/ieee-alphabetic.cbx
@@ -8,7 +8,7 @@
%% ---------------------------------------------------------------
%%
-\ProvidesFile{ieee-alphabetic.cbx}[2024/08/14 v1.3g biblatex citation style]
+\ProvidesFile{ieee-alphabetic.cbx}[2025-01-15 v1.4c biblatex citation style]
\RequireCitationStyle{alphabetic}
@@ -45,7 +45,7 @@
}
%%
-%% Copyright (C) 2011-2013,2015-2021,2024 by
+%% Copyright (C) 2011-2013,2015-2021,2024,2025 by
%% Joseph Wright <joseph@texdev.net>
%%
%% It may be distributed and/or modified under the conditions of
@@ -63,7 +63,8 @@
%% ieee.bbx,
%% ieee.cbx,
%% ieee-alphabetic.bbx,
-%% ieee-alphabetic.cbx and
+%% ieee-alphabetic.cbx,
+%% ieee-comp.cbx and
%% magyar-ieee.lbx,
%% and the derived files biblatex-ieee.pdf and
%% biblatex-ieee-alphabetic.pdf.
diff --git a/Master/texmf-dist/tex/latex/biblatex-ieee/ieee-comp.cbx b/Master/texmf-dist/tex/latex/biblatex-ieee/ieee-comp.cbx
new file mode 100644
index 00000000000..a2f3cc03b60
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-ieee/ieee-comp.cbx
@@ -0,0 +1,150 @@
+%% ---------------------------------------------------------------
+%% biblatex-ieee --- A biblatex implementation of the IEEE
+%% bibliography style
+%% Maintained by Joseph Wright
+%% E-mail: joseph@texdev.net
+%% Released under the LaTeX Project Public License v1.3c or later
+%% See http://www.latex-project.org/lppl.txt
+%% ---------------------------------------------------------------
+%%
+
+\ProvidesFile{ieee-comp.cbx}[2025-01-15 v1.4c biblatex citation style]
+
+\RequireCitationStyle{numeric-comp}
+
+\ExecuteBibliographyOptions{
+ maxcitenames = 2,
+ minnames = 1,
+ sorting = none
+}
+
+% Putting brackets around each citation number is a two-part
+% operation. First, remove them from around the whole citation by
+% redeclaring here.
+\DeclareCiteCommand{\cite}%
+ {\usebibmacro{cite:init}%
+ \bibopenbracket
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite:comp}}
+ {}
+ {\usebibmacro{cite:dump}%
+ \usebibmacro{postnote}%
+ \bibclosebracket
+ }
+
+\DeclareCiteCommand{\supercite}[\mkbibsuperscript]
+ {\usebibmacro{cite:init}%
+ \bibopenbracket
+ \let\multicitedelim=\supercitedelim
+ \let\multicitesubentrydelim=\supercitesubentrydelim
+ \let\multiciterangedelim=\superciterangedelim
+ \let\multicitesubentryrangedelim=\supercitesubentryrangedelim
+ \iffieldundef{prenote}
+ {}
+ {\BibliographyWarning{Ignoring prenote argument}}%
+ \iffieldundef{postnote}
+ {}
+ {\BibliographyWarning{Ignoring postnote argument}}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite:comp}}
+ {}
+ {\usebibmacro{cite:dump}%
+ \bibclosebracket}
+
+% The second step is to replace \multicitedelim and
+% \multicitesubentrydelim with a version wrapped in
+% the appropriate delimiter.
+\renewcommand*{\do}[1]{%
+ \expandafter\patchcmd\expandafter
+ {\csname abx@macro@\detokenize{#1}\endcsname}%
+ {\multicitedelim}
+ {\bibclosebracket\multicitedelim\bibopenbracket}
+ {}
+ {%
+ \PackageError{biblatex-ieee}{Failed to update citation style}\@ehc
+ }%
+ }
+\docsvlist{cite:comp:end,cite:comp:inset,cite:comp:shand,cite:dump}
+
+\renewcommand*{\do}[1]{%
+ \expandafter\patchcmd\expandafter
+ {\csname abx@macro@\detokenize{#1}\endcsname}%
+ {\multicitesubentrydelim}
+ {\bibclosebracket\multicitesubentrydelim\bibopenbracket}
+ {}
+ {%
+ \PackageError{biblatex-ieee}{Failed to update citation style}\@ehc
+ }%
+ }
+\docsvlist{cite:comp:inset,cite:dump:inset}
+
+
+% There's also one \multiciterangedelim and one
+% \multicitesubentryrangedelimto alter.
+\expandafter\patchcmd\expandafter
+ {\csname abx@macro@\detokenize{cite:dump}\endcsname}%
+ {\multiciterangedelim}
+ {\bibclosebracket\multiciterangedelim\bibopenbracket}
+ {}
+ {%
+ \PackageError{biblatex-ieee}{Failed to update citation style}\@ehc
+ }%
+
+\expandafter\patchcmd\expandafter
+ {\csname abx@macro@\detokenize{cite:dump:inset}\endcsname}%
+ {\multicitesubentryrangedelim}
+ {\bibclosebracket\multicitesubentryrangedelim\bibopenbracket}
+ {}
+ {%
+ \PackageError{biblatex-ieee}{Failed to update citation style}\@ehc
+ }%
+
+
+% More bracket removal required
+\DeclareMultiCiteCommand{\cites}{\cite}{\multicitedelim}
+
+% print labelnumber for compressed set entries
+\renewbibmacro*{cite:print:subentry:comp}{%
+ \printtext[bibhyperref]{%
+ \printfield{labelprefix}%
+ \printfield{labelnumber}%
+ \printfield{entrysetcount}}}
+
+\renewbibmacro*{cite:print:last:subentry:comp}{%
+ \printtext[bibhyperref:lastkey]{%
+ \ifdef\cbx@lastprefix
+ {\printtext[labelprefix]{\cbx@lastprefix}}
+ {}%
+ \printtext[labelnumber]{\cbx@lastnumber}%
+ \ifdef\cbx@lastentrysetcount
+ {\printtext[entrysetcount]{\cbx@lastentrysetcount}}
+ {}}}
+
+%%
+%% Copyright (C) 2011-2013,2015-2021,2024,2025 by
+%% Joseph Wright <joseph@texdev.net>
+%%
+%% It may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License (LPPL), either version 1.3c of
+%% this license or (at your option) any later version. The latest
+%% version of this license is in the file:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This work is "maintained" (as per LPPL maintenance status) by
+%% Joseph Wright.
+%%
+%% This work consists of the files biblatex-ieee.bib,
+%% biblatex-ieee.tex,
+%% ieee.bbx,
+%% ieee.cbx,
+%% ieee-alphabetic.bbx,
+%% ieee-alphabetic.cbx,
+%% ieee-comp.cbx and
+%% magyar-ieee.lbx,
+%% and the derived files biblatex-ieee.pdf and
+%% biblatex-ieee-alphabetic.pdf.
+%%
+%%
+%% End of file `ieee.cbx'.
diff --git a/Master/texmf-dist/tex/latex/biblatex-ieee/ieee.bbx b/Master/texmf-dist/tex/latex/biblatex-ieee/ieee.bbx
index 088064d1f35..794444ed680 100644
--- a/Master/texmf-dist/tex/latex/biblatex-ieee/ieee.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-ieee/ieee.bbx
@@ -8,7 +8,7 @@
%% ---------------------------------------------------------------
%%
-\ProvidesFile{ieee.bbx}[2024/08/14 v1.3g biblatex bibliography style]
+\ProvidesFile{ieee.bbx}[2025-01-15 v1.4c biblatex bibliography style]
% Load the standard style to avoid copy-pasting unnecessary material
\RequireBibliographyStyle{numeric-comp}
@@ -67,7 +67,6 @@
\NewBibliographyString{presentedat}
\DefineBibliographyStrings{english}{
- andothers = \mkbibemph{et al\adddot} ,
chapter = ch\adddot ,
editor = Ed\adddot ,
editors = Eds\adddot ,
@@ -816,7 +815,7 @@
\usebibmacro{finentry}}
%%
-%% Copyright (C) 2011-2013,2015-2021,2024 by
+%% Copyright (C) 2011-2013,2015-2021,2024,2025 by
%% Joseph Wright <joseph@texdev.net>
%%
%% It may be distributed and/or modified under the conditions of
@@ -834,7 +833,8 @@
%% ieee.bbx,
%% ieee.cbx,
%% ieee-alphabetic.bbx,
-%% ieee-alphabetic.cbx and
+%% ieee-alphabetic.cbx,
+%% ieee-comp.cbx and
%% magyar-ieee.lbx,
%% and the derived files biblatex-ieee.pdf and
%% biblatex-ieee-alphabetic.pdf.
diff --git a/Master/texmf-dist/tex/latex/biblatex-ieee/ieee.cbx b/Master/texmf-dist/tex/latex/biblatex-ieee/ieee.cbx
index 4b1886683fd..009c632c4d7 100644
--- a/Master/texmf-dist/tex/latex/biblatex-ieee/ieee.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-ieee/ieee.cbx
@@ -8,121 +8,19 @@
%% ---------------------------------------------------------------
%%
-\ProvidesFile{ieee.cbx}[2024/08/14 v1.3g biblatex citation style]
+\ProvidesFile{ieee.cbx}[2025-01-15 v1.4c biblatex citation style]
-\RequireCitationStyle{numeric-comp}
+\RequireCitationStyle{numeric-verb}
\ExecuteBibliographyOptions{
maxcitenames = 2,
minnames = 1,
+ sortcites,
sorting = none
}
-% Putting brackets around each citation number is a two-part
-% operation. First, remove them from around the whole citation by
-% redeclaring here.
-\DeclareCiteCommand{\cite}%
- {\usebibmacro{cite:init}%
- \bibopenbracket
- \usebibmacro{prenote}}
- {\usebibmacro{citeindex}%
- \usebibmacro{cite:comp}}
- {}
- {\usebibmacro{cite:dump}%
- \usebibmacro{postnote}%
- \bibclosebracket
- }
-
-\DeclareCiteCommand{\supercite}[\mkbibsuperscript]
- {\usebibmacro{cite:init}%
- \bibopenbracket
- \let\multicitedelim=\supercitedelim
- \let\multicitesubentrydelim=\supercitesubentrydelim
- \let\multiciterangedelim=\superciterangedelim
- \let\multicitesubentryrangedelim=\supercitesubentryrangedelim
- \iffieldundef{prenote}
- {}
- {\BibliographyWarning{Ignoring prenote argument}}%
- \iffieldundef{postnote}
- {}
- {\BibliographyWarning{Ignoring postnote argument}}}
- {\usebibmacro{citeindex}%
- \usebibmacro{cite:comp}}
- {}
- {\usebibmacro{cite:dump}%
- \bibclosebracket}
-
-% The second step is to replace \multicitedelim and
-% \multicitesubentrydelim with a version wrapped in
-% the appropriate delimiter.
-\renewcommand*{\do}[1]{%
- \expandafter\patchcmd\expandafter
- {\csname abx@macro@\detokenize{#1}\endcsname}%
- {\multicitedelim}
- {\bibclosebracket\multicitedelim\bibopenbracket}
- {}
- {%
- \PackageError{biblatex-ieee}{Failed to update citation style}\@ehc
- }%
- }
-\docsvlist{cite:comp:end,cite:comp:inset,cite:comp:shand,cite:dump}
-
-\renewcommand*{\do}[1]{%
- \expandafter\patchcmd\expandafter
- {\csname abx@macro@\detokenize{#1}\endcsname}%
- {\multicitesubentrydelim}
- {\bibclosebracket\multicitesubentrydelim\bibopenbracket}
- {}
- {%
- \PackageError{biblatex-ieee}{Failed to update citation style}\@ehc
- }%
- }
-\docsvlist{cite:comp:inset,cite:dump:inset}
-
-
-% There's also one \multiciterangedelim and one
-% \multicitesubentryrangedelimto alter.
-\expandafter\patchcmd\expandafter
- {\csname abx@macro@\detokenize{cite:dump}\endcsname}%
- {\multiciterangedelim}
- {\bibclosebracket\multiciterangedelim\bibopenbracket}
- {}
- {%
- \PackageError{biblatex-ieee}{Failed to update citation style}\@ehc
- }%
-
-\expandafter\patchcmd\expandafter
- {\csname abx@macro@\detokenize{cite:dump:inset}\endcsname}%
- {\multicitesubentryrangedelim}
- {\bibclosebracket\multicitesubentryrangedelim\bibopenbracket}
- {}
- {%
- \PackageError{biblatex-ieee}{Failed to update citation style}\@ehc
- }%
-
-
-% More bracket removal required
-\DeclareMultiCiteCommand{\cites}{\cite}{\multicitedelim}
-
-% print labelnumber for compressed set entries
-\renewbibmacro*{cite:print:subentry:comp}{%
- \printtext[bibhyperref]{%
- \printfield{labelprefix}%
- \printfield{labelnumber}%
- \printfield{entrysetcount}}}
-
-\renewbibmacro*{cite:print:last:subentry:comp}{%
- \printtext[bibhyperref:lastkey]{%
- \ifdef\cbx@lastprefix
- {\printtext[labelprefix]{\cbx@lastprefix}}
- {}%
- \printtext[labelnumber]{\cbx@lastnumber}%
- \ifdef\cbx@lastentrysetcount
- {\printtext[entrysetcount]{\cbx@lastentrysetcount}}
- {}}}
-
%%
-%% Copyright (C) 2011-2013,2015-2021,2024 by
+%% Copyright (C) 2011-2013,2015-2021,2024,2025 by
%% Joseph Wright <joseph@texdev.net>
%%
%% It may be distributed and/or modified under the conditions of
@@ -140,7 +38,8 @@
%% ieee.bbx,
%% ieee.cbx,
%% ieee-alphabetic.bbx,
-%% ieee-alphabetic.cbx and
+%% ieee-alphabetic.cbx,
+%% ieee-comp.cbx and
%% magyar-ieee.lbx,
%% and the derived files biblatex-ieee.pdf and
%% biblatex-ieee-alphabetic.pdf.
diff --git a/Master/texmf-dist/tex/latex/biblatex-ieee/magyar-ieee.lbx b/Master/texmf-dist/tex/latex/biblatex-ieee/magyar-ieee.lbx
index 33e88122fda..f6f26e085b3 100644
--- a/Master/texmf-dist/tex/latex/biblatex-ieee/magyar-ieee.lbx
+++ b/Master/texmf-dist/tex/latex/biblatex-ieee/magyar-ieee.lbx
@@ -52,7 +52,8 @@
%% ieee.bbx,
%% ieee.cbx,
%% ieee-alphabetic.bbx,
-%% ieee-alphabetic.cbx and
+%% ieee-alphabetic.cbx,
+%% ieee-comp.cbx and
%% magyar-ieee.lbx,
%% and the derived files biblatex-ieee.pdf and
%% biblatex-ieee-alphabetic.pdf.
diff --git a/Master/texmf-dist/tex/latex/biblatex-lni/LNI-english.lbx b/Master/texmf-dist/tex/latex/biblatex-lni/LNI-english.lbx
index 4d740550ac7..f13b29f1f19 100644
--- a/Master/texmf-dist/tex/latex/biblatex-lni/LNI-english.lbx
+++ b/Master/texmf-dist/tex/latex/biblatex-lni/LNI-english.lbx
@@ -1,6 +1,6 @@
% LNI --%
%
-% Copyright (c) 2016 Lukas C. Bossert, Georg Duffner, Oliver Kopp
+% Copyright (c) 2016-2025 Lukas C. Bossert, Georg Duffner, Oliver Kopp
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -16,6 +16,7 @@
\DeclareBibliographyStrings{%
inherit = {english},
- in = {{In}{In}}
+ in = {{In}{In}},
+ urlseen = {{accessed\addcolon}{accessed\addcolon}}
}
\endinput
diff --git a/Master/texmf-dist/tex/latex/biblatex-lni/LNI.bbx b/Master/texmf-dist/tex/latex/biblatex-lni/LNI.bbx
index fce3e0e8d13..f91e77af493 100644
--- a/Master/texmf-dist/tex/latex/biblatex-lni/LNI.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-lni/LNI.bbx
@@ -1,6 +1,6 @@
% LNI --%
%
-% Copyright (c) 2016-2023 Lukas C. Bossert, Georg Duffner, Oliver Kopp
+% Copyright (c) 2016-2025 Lukas C. Bossert, Georg Duffner, Oliver Kopp
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -9,8 +9,8 @@
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
-\def\LNI@date{2023-11-09}
-\def\LNI@version{0.6}
+\def\LNI@date{2025-01-27}
+\def\LNI@version{0.7}
\def\LNI@bbxid{\LNI@date\space v\LNI@version\space biblatex-LNI bibliography style (LCB/GD/OK)}
\def\LNI@cbxid{\LNI@date\space v\LNI@version\space biblatex-LNI citation style (LCB/GD/OK)}
\def\LNI@lbxid{\LNI@date\space v\LNI@version\space biblatex-LNI localization (LCB/GD/OK)}
@@ -38,12 +38,12 @@
sortcites = true,
giveninits = true,
useprefix = true,
- maxbibnames = 99,
- maxcitenames = 2,
+ maxbibnames = 3,
+ maxcitenames = 3,
eprint = true,
url = true,
- doi = true,
- isbn = true,
+ doi = false,
+ isbn = false,
backref = false,
date = year,
}
@@ -400,6 +400,16 @@
\DeclareFieldFormat*{booktitle}{#1}
\DeclareFieldFormat*{journaltitle}{#1}
\DeclareFieldFormat*{title}{#1}
+
+\DeclareFieldFormat{doi}{%
+ DOI\addcolon\space
+ \ifhyperref
+ {\href{https://doi.org/#1}{\nolinkurl{#1}}}
+ {\nolinkurl{#1}}}
+\DeclareFieldFormat{isbn}{ISBN\addcolon\space #1}
+\DeclareFieldFormat{isrn}{ISRN\addcolon\space #1}
+\DeclareFieldFormat{issn}{ISSN\addcolon\space #1}
\DeclareFieldFormat{urldate}{\addcomma\addspace \bibstring{urlseen}\addcolon\addspace#1}
+\DeclareFieldFormat{url}{\url{#1}}
\endinput
%% End of file `LNI.bbx'.
diff --git a/Master/texmf-dist/tex/latex/biblatex-software/software.bbx b/Master/texmf-dist/tex/latex/biblatex-software/software.bbx
index ad9edc60537..ec7570489bd 100644
--- a/Master/texmf-dist/tex/latex/biblatex-software/software.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-software/software.bbx
@@ -154,7 +154,7 @@
\DeclareFieldFormat{eprint:swmath}{%
\mkbibacro{SWMATH}\addcolon\addspace%
\ifhyperref
- {\href{https://www.swmath.org/software/#1}{%
+ {\href{https://www.zbmath.org/software/#1}{%
\(\langle\)swmath\addcolon\nolinkurl{#1}\(\rangle\)%
\iffieldundef{eprintclass}
{}
diff --git a/Master/texmf-dist/tex/latex/bithesis/bitbeamer.cls b/Master/texmf-dist/tex/latex/bithesis/bitbeamer.cls
index 2e500887306..781bf749871 100644
--- a/Master/texmf-dist/tex/latex/bithesis/bitbeamer.cls
+++ b/Master/texmf-dist/tex/latex/bithesis/bitbeamer.cls
@@ -27,7 +27,7 @@
%%
\RequirePackage{expl3,l3keys2e}
\ProvidesExplClass{bitbeamer}
-{2024-05-30}{3.7.9}{BIT Thesis Templates}
+{2025-01-03}{3.8.1}{BIT Thesis Templates}
\keys_define:nn { bitbeamer }
{
titlegraphic .tl_set:N = \l_bit_titlegraphic_tl,
diff --git a/Master/texmf-dist/tex/latex/bithesis/bithesis.cls b/Master/texmf-dist/tex/latex/bithesis/bithesis.cls
index 39141be5f46..09897198323 100644
--- a/Master/texmf-dist/tex/latex/bithesis/bithesis.cls
+++ b/Master/texmf-dist/tex/latex/bithesis/bithesis.cls
@@ -27,7 +27,7 @@
%%
\RequirePackage{expl3,l3keys2e}
\ProvidesExplClass{bithesis}
-{2024-05-30}{3.7.9}{BIT Thesis Templates}
+{2025-01-03}{3.8.1}{BIT Thesis Templates}
\int_new:N \g__bithesis_thesis_type_int
\int_new:N \g__bithesis_head_zihao_int
\bool_new:N \g__bithesis_twoside_bool
@@ -264,10 +264,12 @@
{toc} {目\label_space: 录} {Table~of~Contents},
{abstract} {摘\label_space: 要} {Abstract},
{conclusion} {结\label_space: 论} {Conclusions},
+ % 附录部分的总标题
{appendix} {附\label_space: 录} {Appendices},
- {ack} {致\label_space: 谢} {Acknowledgement},
+ {ack} {致\label_space: 谢} {Acknowledgements},
{figure} {插\label_space: 图} {Illustrations},
{table} {表\label_space: 格} {Tables},
+ % 附录下各部分编号的前缀
{appendix_prefix} {附录} {Appendix},
{reference} {参考文献} {References},
{university} {北京理工大学} {Beijing~Institute~of~Technology},
@@ -350,7 +352,7 @@
xiheiFont .tl_set:N = \l__bithesis_cover_xihei_font_path_tl,
xiheiFont .default:n = {STXihei},
%% cover entry
- dilimiter .tl_set:N = \l__bithesis_cover_dilimiter_tl,
+ delimiter .tl_set:N = \l__bithesis_cover_delimiter_tl,
labelAlign .tl_set:N = \l__bithesis_cover_label_align_tl,
labelAlign .initial:n = {r},
valueAlign .tl_set:N = \l__bithesis_cover_value_align_tl,
@@ -366,10 +368,20 @@
underlineOffset .dim_set:N = \l__bithesis_cover_underline_offset_dim,
underlineOffset .initial:n = { -10pt },
hideCoverInPeerReview .bool_set:N = \l__bithesis_cover_hide_cover_in_peer_review_bool,
+ % 此处暂且填充默认值为`false`,待确定`\g__bithesis_thesis_type_int`后再根据论文类型覆盖默认值
hideCoverInPeerReview .initial:n = {false},
% 研究生的「特殊类型」
showSpecialTypeBox .bool_set:N = \l__bithesis_cover_show_special_type_box_bool,
- showSpecialTypeBox .initial:n = {false}
+ showSpecialTypeBox .initial:n = {false},
+ % 本科英文模板也可以使用中文封面
+ prefer-zh .bool_set:N = \l__bithesis_cover_prefer_zh_bool,
+ prefer-zh .initial:n = {false},
+ % 本科英文模板使用中文封面时可能需要调换中英文标题顺序
+ reverse-titles .bool_set:N = \l__bithesis_cover_reverse_titles_bool,
+ reverse-titles .initial:n = {false},
+ % 本科英文模板可加入中文标题
+ addTitleZh .bool_set:N = \l__bithesis_cover_add_titlezh_bool,
+ addTitleZh .initial:n = {true},
}
\keys_define:nn { bithesis / info }
{
@@ -491,6 +503,7 @@
autoref .meta:nn = { bithesis / const / autoref } { #1 },
style .meta:nn = { bithesis / const / style } { #1 },
info .meta:nn = { bithesis / const / info } { #1 },
+ heading .meta:nn = { bithesis / const / heading } { #1 },
}
\keys_define:nn { bithesis / const / autoref }
{
@@ -543,6 +556,13 @@
}
},
}
+\keys_define:nn { bithesis / const / heading }
+ {
+ acknowledgements .tl_set:N = \g__bithesis_const_heading_acknowledgements_tl,
+ acknowledgements .initial:n = {
+ \__bithesis_get_const:N {ack}
+ },
+ }
\keys_define:nn { bithesis / style }
{
head .tl_set:N = \l__bithesis_style_head_tl,
@@ -561,6 +581,10 @@
{ \flushbottom }
},
pageVerticalAlign .initial:n = {top},
+ non-CJK-font-in-headings .choice:,
+ non-CJK-font-in-headings / serif .code:n = { \bool_set_false:N \l__bithesis_arial_as_title_font_bool },
+ non-CJK-font-in-headings / sans .code:n = { \bool_set_true:N \l__bithesis_arial_as_title_font_bool },
+ non-CJK-font-in-headings .initial:n = {serif},
% 数学字体配置
mathFont .choices:nn = {
asana, bonum, cm, concrete, dejavu, erewhon, euler,
@@ -586,10 +610,16 @@
}
\keys_define:nn { bithesis / TOC }
{
+ title .tl_set:N = \l__bithesis_toc_title_tl,
+ title .initial:n = {
+ \__bithesis_get_const:N {toc}
+ },
abstract .bool_set:N = \l__bithesis_add_abstract_to_toc_bool,
abstract .initial:n = {true},
abstractEn .bool_set:N = \l__bithesis_add_abstract_en_to_toc_bool,
abstractEn .initial:n = {true},
+ TOC .bool_set:N = \l__bithesis_add_toc_to_toc_bool,
+ TOC .initial:n = {false},
symbols .bool_set:N = \l__bithesis_add_symbols_to_toc_bool,
symbols .initial:n = {true},
}
@@ -620,6 +650,11 @@
minbibnames .initial:n = {10},
}
\ProcessKeysOptions { bithesis / option }
+\__bithesis_if_graduate:TF {
+ \keys_set:nn {bithesis} {cover/hideCoverInPeerReview = false}
+} {
+ \keys_set:nn {bithesis} {cover/hideCoverInPeerReview = true}
+}
\__bithesis_if_thesis_english:T {
\PassOptionsToClass{scheme=plain}{ctexbook}
}
@@ -639,6 +674,7 @@
\RequirePackage{geometry}
\RequirePackage[table,xcdraw]{xcolor}
\RequirePackage{xeCJK}
+\RequirePackage[bodytextleadingratio=1.56]{zhlineskip}
\RequirePackage{titletoc}
\RequirePackage{graphicx}
\RequirePackage{fancyhdr}
@@ -793,21 +829,20 @@
}
}
- \__bithesis_if_thesis_english:TF {
+ \bool_if:NTF \l__bithesis_arial_as_title_font_bool {
+ % 手动指定时要加载 Arial
+ \newfontfamily\arialfamily{Arial}
+ } {
+ % 即使未指定,本科全英文专业模板的声明也需要 Arial
\__bithesis_if_thesis_int_type:nT {3} {
- % 对于本科全英文专业模板
- % Font Arial is needed.
\newfontfamily\arialfamily{Arial}
}
-
- } {
- % 对于其他的中文模板,
- % 需要加载细黑体。
- \tl_if_blank:VTF \l__bithesis_cover_xihei_font_path_tl {}
- {
- \setCJKfamilyfont{xihei}[AutoFakeBold,AutoFakeSlant]
- {\l__bithesis_cover_xihei_font_path_tl}
- }
+ }
+ % 无论中英文,封面都可能需要细黑体。
+ \tl_if_blank:VTF \l__bithesis_cover_xihei_font_path_tl {}
+ {
+ \setCJKfamilyfont{xihei}[AutoFakeBold,AutoFakeSlant]
+ {\l__bithesis_cover_xihei_font_path_tl}
}
% 对于本科全英文专业模板,需要自定义日期格式。
@@ -916,10 +951,12 @@
}
}
\cs_new:Npn \l__bithesis_title_font_cs:n #1 {
- \int_compare:nNnTF {\g__bithesis_thesis_type_int} = {3}
+ \bool_if:NTF \l__bithesis_arial_as_title_font_bool
{
- \arialfamily #1
+ % 即使是英文模板,仍可能出现中文,也需设置中文字体。
+ \heiti\arialfamily #1
} {
+ % 西文保持原本的 Times New Roman。黑体一般不搭配衬线体,但学校要求如此。
\heiti #1
}
}
@@ -1046,13 +1083,7 @@
{\tablename~\thecontentslabel\quad}{\hspace*{-1.5cm}}
{\hspace{.5em}\titlerule*{.}\contentspage}
\RenewDocumentCommand \frontmatter {} {
- \int_compare:nNnTF {\g__bithesis_thesis_type_int} = {3}
- {
- % 本科全英文专业论文,页码使用小罗马数字。
- \pagenumbering{roman}
- } {
- \pagenumbering{Roman}
- }
+ \pagenumbering{Roman}
% 这部分的章节标题不进行编号。
\ctexset{
chapter = {
@@ -1273,7 +1304,7 @@
\ooalign{\copy0\cr\rule[\dimexpr#1-#2\relax]{\wd0}{#2}}}}
\cs_new:Npn \__bithesis_render_cover_entry:nn #1#2 {
\makebox[\l__bithesis_cover_label_max_width_dim][\l__bithesis_cover_label_align_tl]{
- \tl_if_blank:VTF #1 {} {#1\l__bithesis_cover_dilimiter_tl}
+ \tl_if_blank:VTF #1 {} {#1\l__bithesis_cover_delimiter_tl}
}
\hspace{1ex}
\__bithesis_dunderline:nnn{\l__bithesis_cover_underline_offset_dim}
@@ -1452,8 +1483,8 @@
{
\renewcommand{\baselinestretch}{2}
- \tl_if_empty:NT \l__bithesis_cover_dilimiter_tl {
- \tl_set:Nn \l__bithesis_cover_dilimiter_tl {\qquad}
+ \tl_if_empty:NT \l__bithesis_cover_delimiter_tl {
+ \tl_set:Nn \l__bithesis_cover_delimiter_tl {\qquad}
}
\tl_set:Nn \l__bithesis_cover_underline_offset_dim {-5pt}
@@ -1502,8 +1533,8 @@
\vskip \stretch{1}
{
- \tl_if_empty:NT \l__bithesis_cover_dilimiter_tl {
- \tl_set:Nn \l__bithesis_cover_dilimiter_tl {:~}
+ \tl_if_empty:NT \l__bithesis_cover_delimiter_tl {
+ \tl_set:Nn \l__bithesis_cover_delimiter_tl {:~}
}
\tl_set:Nn \l__bithesis_cover_label_align_tl {l}
@@ -1644,7 +1675,15 @@
\begin{blindPeerReview}[\l__bithesis_cover_hide_cover_in_peer_review_bool]
\group_begin:
- \int_case:nn {\g__bithesis_thesis_type_int}
+ % 封面使用的 thesis-type 可能与整体不同。
+ \int_new:N \l__bithesis_thesis_type_int
+ \bool_if:NTF \l__bithesis_cover_prefer_zh_bool {
+ \int_set:Nn \l__bithesis_thesis_type_int {1}
+ } {
+ \int_set:Nn \l__bithesis_thesis_type_int \g__bithesis_thesis_type_int
+ }
+
+ \int_case:nn {\l__bithesis_thesis_type_int}
{
{1}
{
@@ -1662,22 +1701,33 @@
\zihao{-0}\textbf{\ziju{0.12}\songti{\l__bithesis_style_headline_tl}}\par
- \vspace{16mm}
-
- \zihao{2}\textbf{\xihei:n \l__bithesis_value_title_tl}\par
+ \vspace{0.5em plus 1fill}
- \vspace{3mm}
+ \group_begin:
+ % 中文标题
+ \tl_set:Nn \l_tmpa_tl {
+ \linespread{1.46}\selectfont
+ \zihao{2}\textbf{\xihei:n \l__bithesis_value_title_tl}\par
+ }
+ % 英文标题
+ \tl_set:Nn \l_tmpb_tl {
+ \linespread{1.65}\selectfont
+ \zihao{3}\textbf{\l__bithesis_value_title_en_tl}\par
+ }
- \begin{spacing}{1.2}
- \zihao{3}\selectfont{\textbf{\l__bithesis_value_title_en_tl}}\par
- \end{spacing}
+ \bool_if:NTF \l__bithesis_cover_reverse_titles_bool {
+ \l_tmpb_tl \vspace{3mm} \l_tmpa_tl
+ } {
+ \l_tmpa_tl \vspace{3mm} \l_tmpb_tl
+ }
+ \group_end:
- \vspace{15mm}
+ \vspace{0em plus 1fill}
\begin{spacing}{1.8}
\begin{center}
- \tl_if_empty:NT \l__bithesis_cover_dilimiter_tl {
- \tl_set:Nn \l__bithesis_cover_dilimiter_tl {:}
+ \tl_if_empty:NT \l__bithesis_cover_delimiter_tl {
+ \tl_set:Nn \l__bithesis_cover_delimiter_tl {:}
}
% if not auto width, try override width
\bool_if:NF \l__bithesis_cover_auto_width_bool {
@@ -1709,10 +1759,12 @@
\end{center}
\end{spacing}
- \vspace*{\fill}
+ \vspace*{1.5em plus 1.5fill}
\centering
\zihao{3}\ziju{0.5}\songti{
\tl_if_empty:NTF \l__bithesis_cover_date_tl {
+ % 英文模板中 ctex 不会预设日期格式,但仍要保证中文封面的日期按中文习惯
+ \ctexset{today=small}
\today
} {
\l__bithesis_cover_date_tl
@@ -1740,7 +1792,7 @@
\begin{spacing}{1.8}
- \tl_set:Nn \l__bithesis_cover_dilimiter_tl {\textbf{:}}
+ \tl_set:Nn \l__bithesis_cover_delimiter_tl {\textbf{:}}
\bool_set_false:N \l__bithesis_cover_auto_width_bool
\dim_set:Nn \l__bithesis_cover_label_max_width_dim {35mm}
\dim_set:Nn \l__bithesis_cover_value_max_width_dim {115mm}
@@ -1772,8 +1824,8 @@
\vspace{\stretch{0.67}}
\begin{spacing}{1.8}
- \tl_if_empty:NT \l__bithesis_cover_dilimiter_tl {
- \tl_set:Nn \l__bithesis_cover_dilimiter_tl {:}
+ \tl_if_empty:NT \l__bithesis_cover_delimiter_tl {
+ \tl_set:Nn \l__bithesis_cover_delimiter_tl {:}
}
% 如果不是自动计算宽度,且用户没有自定义宽度,
@@ -1823,14 +1875,19 @@
\vspace{18mm}
+ \bool_if:NT \l__bithesis_cover_add_titlezh_bool {
+ \zihao{2}\textbf{\xihei:n \l__bithesis_value_title_tl}\par
+ \vspace{16mm}
+ }
+
\zihao{2}\textbf{\xihei:n \l__bithesis_value_title_en_tl}\par
\vspace{10mm}
\begin{spacing}{1.8}
\begin{center}
- \tl_if_empty:NT \l__bithesis_cover_dilimiter_tl {
- \tl_set:Nn \l__bithesis_cover_dilimiter_tl {:}
+ \tl_if_empty:NT \l__bithesis_cover_delimiter_tl {
+ \tl_set:Nn \l__bithesis_cover_delimiter_tl {:}
}
% if not auto width, try override width
@@ -1847,7 +1904,7 @@
\clist_set:Nn \l__bithesis_input_clist {
{\c__bithesis_label_school_en_tl} {\l__bithesis_value_school_tl},
- {\c__bithesis_label_major_en_tl} {\l__bithesis_value_major_tl},
+ {\g__bithesis_const_info_major_tl} {\l__bithesis_value_major_tl},
{\c__bithesis_label_author_en_tl} {\l__bithesis_value_author_tl},
{\c__bithesis_label_student_id_en_tl} {\l__bithesis_value_student_id_tl},
{\c__bithesis_label_supervisor_en_tl} {\l__bithesis_value_supervisor_tl},
@@ -1936,7 +1993,10 @@
\newpage
}
{3} {
- \linespread{1.26}\selectfont
+ \currentpdfbookmark{Statements}{frontmatter:originality}
+ \pagestyle{BIThesis}
+ \pagenumbering{gobble}
+
% 原创性声明部分
\begin{center}
\vspace*{-2bp}
@@ -1947,7 +2007,7 @@
}
\end{center}~\par
- % 本部分字号为小三
+ % 本部分字号为小四
\zihao{-4}
\c__bithesis_bachelor_english_label_originality_clause_tl
@@ -1955,7 +2015,7 @@
Student~(Signature):~\dunderline[-1pt]{1pt}{\makebox[18mm]{}}~Date:\par
- \vspace{6mm}
+ \vspace{\stretch{1}}
% 使用授权声明部分
\begin{center}
@@ -2017,12 +2077,6 @@
\renewcommand{\baselinestretch}{1.56}
}
- \__bithesis_if_thesis_english:TF {
- \tl_set:Nn \l__bithesis_toc_title_tl {\c__bithesis_label_toc_en_tl}
- } {
- \tl_set:Nn \l__bithesis_toc_title_tl {\c__bithesis_label_toc_tl}
- }
-
% 自定义目录样式
\cs_set:Npn \contentsname {
\fontsize{16pt}{\baselineskip}
@@ -2032,19 +2086,19 @@
\vspace{-8pt}
}
- % 添加目录书签
- \__bithesis_if_thesis_int_type:nF {3} {
- \currentpdfbookmark{\c__bithesis_label_toc_tl}{ch:toc}
+ \bool_if:NTF \l__bithesis_add_toc_to_toc_bool {
+ % 添加「目录」本身到目录中,同时自动添加书签
+ % 此处必须有`\phantomsection`,不然 hyperref 会把链接指向之前摘要的标题。
+ \phantomsection
+ \addcontentsline{toc}{chapter}{\c__bithesis_label_toc_en_tl}
+ } {
+ % 手动添加目录书签
+ \currentpdfbookmark{\l__bithesis_toc_title_tl}{ch:toc}
}
% 制作目录
\tableofcontents
- % 在本科生全英文模板中,添加「目录」本身到目录中。
- \__bithesis_if_thesis_int_type:nT {3} {
- \addcontentsline{toc}{chapter}{\c__bithesis_label_toc_en_tl}
- }
-
% 单独成页
\clearpage
}
@@ -2076,16 +2130,8 @@
}
\__bithesis_if_bachelor_thesis:T {
- \int_compare:nNnTF {\g__bithesis_thesis_type_int} = {3}
- {
- \ctexset{
- chapter/titleformat = {\heiti}
- }
- }
- {
- \ctexset{
- chapter/titleformat = {\textmd}
- }
+ \ctexset{
+ chapter/titleformat = {\textmd}
}
}
@@ -2124,11 +2170,8 @@
\centering
\vspace*{-2bp}
- \__bithesis_if_thesis_int_type:nTF {3} {
- \arialfamily\zihao{-2}\textbf
- \l__bithesis_value_title_en_tl\\
- } {
- \heiti\zihao{3}\textbf
+ \l__bithesis_title_font_cs:n {
+ \zihao{3}\textbf
\l__bithesis_value_title_en_tl\\
}
\end{spacing}
@@ -2140,19 +2183,8 @@
}
\__bithesis_if_bachelor_thesis:TF {
- \int_compare:nNnTF {\g__bithesis_thesis_type_int} = {3}
- {
- \ctexset{
- chapter = {
- titleformat = {\heiti\zihao{3}\centering\textbf},
- }
- }
- } {
- \ctexset{
- chapter = {
- titleformat = {\heiti\zihao{-3}\centering\textmd},
- }
- }
+ \ctexset{
+ chapter/titleformat = {\zihao{-3}\textmd}
}
} {
\ctexset {
@@ -2253,7 +2285,7 @@
}
\bool_if:NTF \l__bithesis_appendices_chapter_level_bool {
- % 附录章节级别
+ % 使用以「chapter」为顶层的附录格式
% 仅设置 \setcounter{chapter}{0} 时,pdf 目录会索引到正文章节。
% 因此,需要使用 \appendix 重置计数器,并将附录后面的
@@ -2272,7 +2304,7 @@
\Alph{chapter}
}
} {
- % 附录节(section)级别
+ % 使用以「section」为顶层的附录格式
% 因为不需要用到 chapter counter, 所以直接加一即可。
\stepcounter{chapter}
@@ -2323,11 +2355,7 @@
subsubsection/number = \arabic{section}. \arabic{subsection}. \arabic{subsubsection},
}
- \__bithesis_if_thesis_english:TF {
- \chapter{\c__bithesis_label_ack_en_tl}
- } {
- \chapter{\c__bithesis_label_ack_tl}
- }
+ \chapter{\g__bithesis_const_heading_acknowledgements_tl}
\__bithesis_if_graduate:TF {\fangsong}{}
#1
\end{blindPeerReview}
@@ -2382,15 +2410,18 @@
% apply a clist
\clist_map_function:nN {#1} \addpub
}
-\NewDocumentCommand \pubsection {m} {
+\NewDocumentCommand \pubsection {s m} {
{
- % 自增计数器
- \par\stepcounter{pub}
+ \par
+ \IfBooleanF {#1} {
+ % 自增计数器
+ \stepcounter{pub}
+ }
% 设置小标题,暂时没有考虑英文模式
\noindent
\textbf{
\heiti{
- \zhnumber{\thepub}、#1
+ \IfBooleanF {#1} {\zhnumber{\thepub}、}#2
}
}\par
}
diff --git a/Master/texmf-dist/tex/latex/bithesis/bitreport.cls b/Master/texmf-dist/tex/latex/bithesis/bitreport.cls
index 80b5485ff21..d97d313388d 100644
--- a/Master/texmf-dist/tex/latex/bithesis/bitreport.cls
+++ b/Master/texmf-dist/tex/latex/bithesis/bitreport.cls
@@ -27,7 +27,7 @@
%%
\RequirePackage{expl3,l3keys2e}
\ProvidesExplClass{bitreport}
-{2024-05-30}{3.7.9}{BIT Thesis Templates}
+{2025-01-03}{3.8.1}{BIT Thesis Templates}
\int_new:N \g__bithesis_report_type_int
\clist_const:Nn \c__bithesis_report_type_clist
{ common, undergraduate_proposal}
@@ -58,7 +58,7 @@
imagePath .tl_set:N = \l_bit_coverimagepath_tl,
date .tl_set:N = \l__bithesis_cover_date_tl,
%% cover entry
- dilimiter .tl_set:N = \l__bithesis_cover_dilimiter_tl,
+ delimiter .tl_set:N = \l__bithesis_cover_delimiter_tl,
labelAlign .tl_set:N = \l__bithesis_cover_label_align_tl,
labelAlign .initial:n = {r},
valueAlign .tl_set:N = \l__bithesis_cover_value_align_tl,
@@ -108,7 +108,7 @@
}
\cs_new:Npn \__bithesis_render_cover_entry:nn #1#2 {
\makebox[\l__bithesis_cover_label_max_width_dim][\l__bithesis_cover_label_align_tl]{
- \tl_if_blank:VTF #1 {} {#1\l__bithesis_cover_dilimiter_tl}
+ \tl_if_blank:VTF #1 {} {#1\l__bithesis_cover_delimiter_tl}
}
\hspace{1ex}
\__bithesis_dunderline:nnn{\l__bithesis_cover_underline_offset_dim}{\l__bithesis_cover_underline_thickness_dim}{
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/BMSTU-IU8.cls b/Master/texmf-dist/tex/latex/bmstu-iu8/BMSTU-IU8.cls
index ebd30e1991e..4b9cb5b0bf8 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/BMSTU-IU8.cls
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/BMSTU-IU8.cls
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{BMSTU-IU8}[2024/09/09 IU8 class]
+\ProvidesClass{BMSTU-IU8}[2024/10/28 IU8 class]
\LoadClass{article}
@@ -18,6 +18,14 @@
применяют следующие сокращения и обозначения:}
\def\fillTitle{\fillResearchTitle}
}
+\DeclareOption{ordinary}{
+ \def\termsAndDefinitionsLine{В настоящем документе
+ применяют следующие термины с соответствующими определениями:}
+ \def\abbreviationsLine{В настоящем документе
+ применяют следующие сокращения и обозначения:}
+ \def\fillTitle{\fillOrdinaryTitle}
+}
+
\ExecuteOptions{diploma}
\ProcessOptions
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-01-base.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-01-base.sty
index 11533ec0e71..80db377148f 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-01-base.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-01-base.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-01-base}[2024/09/09 v1.4 Общие требования]
+\ProvidesPackage{IU8-01-base}[2024/10/28 v1.5 Общие требования]
% 6.1.1 Изложение текста и оформление отчета выполняют в соответствии с
% требованиями настоящего стандарта. Страницы текста отчета о НИР и включенные в
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-02-construction.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-02-construction.sty
index 38250907292..a99bad8db76 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-02-construction.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-02-construction.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-02-construction}[2024/09/09 v1.4 Построение отчета]
+\ProvidesPackage{IU8-02-construction}[2024/10/28 v1.5 Построение отчета]
% 6.2.1 Наименования структурных элементов отчета:
% "СПИСОК ИСПОЛНИТЕЛЕЙ", % у нас не используется
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-03-numbering.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-03-numbering.sty
index 7e0ed595e1d..8624f70dc34 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-03-numbering.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-03-numbering.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-03-numbering}[2024/09/09 v1.4 Нумерация страниц отчета]
+\ProvidesPackage{IU8-03-numbering}[2024/10/28 v1.5 Нумерация страниц отчета]
% 6.3.1 Страницы отчета следует нумеровать арабскими цифрами, соблюдая сквозную
% нумерацию по всему тексту отчета, включая приложения. Номер страницы
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-04-section-numbering.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-04-section-numbering.sty
index ec865d745be..a44c787a3f1 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-04-section-numbering.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-04-section-numbering.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-04-section-numbering}[2024/09/09 v1.4 Нумерация разделов, подразделов, пунктов, подпунктов и книг отчета]
+\ProvidesPackage{IU8-04-section-numbering}[2024/10/28 v1.5 Нумерация разделов, подразделов, пунктов, подпунктов и книг отчета]
% 6.4.1 Разделы должны иметь порядковые номера в пределах всего отчета,
% обозначенные арабскими цифрами без точки и расположенные с абзацного отступа.
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-05-figures.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-05-figures.sty
index f8536ffed1f..e5b92cd6ac7 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-05-figures.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-05-figures.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-05-figures}[2024/09/09 v1.4 Иллюстрации]
+\ProvidesPackage{IU8-05-figures}[2024/10/28 v1.5 Иллюстрации]
% 6.5.1 Иллюстрации (чертежи, графики, схемы, компьютерные распечатки, диаграммы,
% фотоснимки) следует располагать в отчете непосредственно после текста отчета,
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-06-tables.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-06-tables.sty
index 52e8358a392..bd5b3f046e1 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-06-tables.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-06-tables.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-06-tables}[2024/09/09 v1.4 Таблицы]
+\ProvidesPackage{IU8-06-tables}[2024/10/28 v1.5 Таблицы]
% Пакеты, которые скорее всего пригодятся
\RequirePackage{tabularx}
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-07-footnotes.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-07-footnotes.sty
index 2dd2f6e42b0..c6163edaf3f 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-07-footnotes.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-07-footnotes.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-07-footnotes}[2024/09/09 v1.4 Примечания и сноски]
+\ProvidesPackage{IU8-07-footnotes}[2024/10/28 v1.5 Примечания и сноски]
% 6.7.1 Примечания приводят в отчете, если необходимы пояснения или справочные
% данные к содержанию текста, таблиц или графического материала.
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-08-formulas.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-08-formulas.sty
index 8e4c8ef43af..116fff2896a 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-08-formulas.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-08-formulas.sty
@@ -1,5 +1,5 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-08-formulas}[2024/09/09 v1.4 Формулы]
+\ProvidesPackage{IU8-08-formulas}[2024/10/28 v1.5 Формулы]
% Настройки по умолчанию в целом соответствуют ГОСТ \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-09-cites.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-09-cites.sty
index fb5d4f13cd3..4c8d2b56353 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-09-cites.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-09-cites.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-09-cites}[2024/09/09 v1.4 Ссылки]
+\ProvidesPackage{IU8-09-cites}[2024/10/28 v1.5 Ссылки]
% 6.9.1 В отчете о НИР рекомендуется приводить ссылки на использованные
% источники. При нумерации ссылок на документы, использованные при составлении
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-10-titlepage.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-10-titlepage.sty
index fb5e8c949f2..f4c856db33f 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-10-titlepage.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-10-titlepage.sty
@@ -1,6 +1,13 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-10-titlepage}[2024/09/09 v1.4 Титульный лист]
+\ProvidesPackage{IU8-10-titlepage}[2024/10/28 v1.5 Титульный лист]
+
+% Команды для задания факультета и кафедры
+\newcommand{\faculty}[2]{\gdef\@faculty{<<#1>> (#2)}}
+\newcommand{\department}[2]{\gdef\@department{<<#1>> (#2)}}
+% Дефолтные значения --- забываем, кому это было надо в первую очередь :)
+\providecommand{\@faculty}{<<Информатика и системы управления>> (ИУ)}
+\providecommand{\@department}{<<Информационная безопасность>> (ИУ8)}
% Поля для заполнения для ВКР
\def\student#1{\gdef\@student{#1}}
@@ -49,6 +56,19 @@
\def\supervisorWithDegree#1{\gdef\@supervisorWithDegree{#1}}
\def\@supervisorWithDegree{\@latex@warning@no@line{No \noexpand\supervisorWithDegree given}}
+% Поля для заполнения "обычных" отчётов
+\def\discipline#1{\gdef\@discipline{#1}}
+\def\@discipline{\@latex@warning@no@line{No \noexpand\discipline given}}
+\newcommand{\noscorefield}{\gdef\enablescore{}} % Выключить поле оценки
+\providecommand{\enablescore}{ % Поле оценки включено по умолчанию
+ \setlength{\tabcolsep}{0pt}
+ \renewcommand{\arraystretch}{1.5}
+ \noindent \begin{tabular}{ll}
+ \noindent Оценка: & \makeUlineStack[6cm]{~}{~} \\
+ \end{tabular}
+}
+\newcommand{\version}[1]{\gdef\@version{Вариант #1}} % Если указан вариант, то определяем команду
+\providecommand{\@version}{~} % Если не указан вариант, то заменяем на пустоту
\RequirePackage{fancyhdr}
\fancypagestyle{year}{
@@ -98,8 +118,8 @@
\end{center}
\begin{flushleft}
\fontsize{12pt}{14pt}\selectfont
- ФАКУЛЬТЕТ \tabto{3cm} <<Информатика и системы управления>> (ИУ)\\
- КАФЕДРА \tabto{3cm} <<Информационная безопасность>> (ИУ8)
+ ФАКУЛЬТЕТ \tabto{3cm} \@faculty \\
+ КАФЕДРА \tabto{3cm} \@department
\end{flushleft}
}
@@ -215,6 +235,44 @@
\clearpage
}
+% Обратный порядок заполнения --- ФИО подпись,дата
+\newcommand\reverseFillingBox[3][\maxlen]{
+ \noindent#2 \hfill \makeUlineStack[#1]{#3}{(И. О. Фамилия)} \hfill
+ \makeUlineStack[3.5cm]{~}{(Подпись, дата)} \hfill\\
+}
+
+\newcommand\fillOrdinaryTitle{
+
+ \vfill
+
+ \noindent\begin{center}
+ \centering
+ {\bfseries\fontsize{20pt}{25pt}\selectfont \@theme} \\
+ {\fontsize{12pt}{25pt}\rmfamily\selectfont по дисциплине <<\@discipline>>} \\
+ {\fontsize{12pt}{25pt}\rmfamily\selectfont \@version} \\
+ \end{center}
+
+
+ \vfill
+
+{\fontsize{12pt}{15pt}\selectfont
+ \reverseFillingBox{Студент \hspace{\widthof{Преподаватель}-\widthof{Студент}}\makeUlineStack[\widthof{\@group}]{\@group}{(Группа)}}{\@student}
+ \reverseFillingBox{Преподаватель\quad\hspace{\widthof{\@group}}}{\@supervisor}
+}
+ \bigskip
+
+ \bigskip
+
+ \bigskip
+
+ \vfill
+ \enablescore
+
+ \vfill
+
+ \clearpage
+}
+
\renewcommand\maketitle{
\begin{titlepage}
\settowidth{\maxlen}{\@student}
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-11-performers.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-11-performers.sty
index 20ba0e0c481..7c29e314bbd 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-11-performers.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-11-performers.sty
@@ -1,5 +1,5 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-11-performers}[2024/09/09 v1.4 Список исполниетелей]
+\ProvidesPackage{IU8-11-performers}[2024/10/28 v1.5 Список исполниетелей]
% Т.к. у нас это не используется, я оставляю это пустымы \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-12-abstract.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-12-abstract.sty
index 1c389e08f4e..ac71c7472eb 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-12-abstract.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-12-abstract.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-12-abstract}[2024/09/09 v1.4 Реферат]
+\ProvidesPackage{IU8-12-abstract}[2024/10/28 v1.5 Реферат]
% 6.12.1 Сведения об общем объеме отчета, количестве книг отчета, иллюстраций,
% таблиц, использованных источников, приложений являются первой компонентой
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-13-contents.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-13-contents.sty
index c19a7b41b1f..2f8f4e7dd62 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-13-contents.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-13-contents.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-13-contents}[2024/09/09 v1.4 Содержание]
+\ProvidesPackage{IU8-13-contents}[2024/10/28 v1.5 Содержание]
% Каждую запись содержания оформляют как отдельный абзац, выровненный влево.
% Номера страниц указывают выровненными по правому краю поля и соединяют
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-14-terms-and-definitions.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-14-terms-and-definitions.sty
index 544d077a73f..5f7a0d59340 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-14-terms-and-definitions.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-14-terms-and-definitions.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-14-terms-and-definitions}[2024/09/09 v1.4 Содержание]
+\ProvidesPackage{IU8-14-terms-and-definitions}[2024/10/28 v1.5 Содержание]
\RequirePackage[
acronym,
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-15-list-of-abbreviations.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-15-list-of-abbreviations.sty
index ff904e74eea..951e61f8299 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-15-list-of-abbreviations.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-15-list-of-abbreviations.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-15-list-of-abbreviations}[2024/09/09 v1.4 Содержание]
+\ProvidesPackage{IU8-15-list-of-abbreviations}[2024/10/28 v1.5 Содержание]
\RequirePackage[abbreviations]{glossaries-extra}
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-16-references.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-16-references.sty
index 6236003c9ba..af759707e90 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-16-references.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-16-references.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-16-references}[2024/09/09 v1.4 Список использованных источников]
+\ProvidesPackage{IU8-16-references}[2024/10/28 v1.5 Список использованных источников]
% Сведения об источниках следует располагать в порядке появления ссылок на
% источники в тексте отчета и нумеровать арабскими цифрами с точкой и печатать
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-17-appendices.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-17-appendices.sty
index 9881ec6498d..88033132f7b 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-17-appendices.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-17-appendices.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-17-appendices}[2024/09/09 v1.4 Приложения]
+\ProvidesPackage{IU8-17-appendices}[2024/10/28 v1.5 Приложения]
\newcommand{\appendixsection}[1]{
\stepcounter{apps}
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-18-extra.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-18-extra.sty
index 9999fd77df5..9f84d4b8d85 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-18-extra.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-18-extra.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{IU8-18-extra}[2024/09/09 v1.4 Разные улучшения]
+\ProvidesPackage{IU8-18-extra}[2024/10/28 v1.5 Разные улучшения]
\RequirePackage{graphicx}
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-19-counters.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-19-counters.sty
index b0c49532dca..07c7ef9e475 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-19-counters.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-19-counters.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{IU8-19-counters}[2024/09/09 v1.4 Счётчики]
+\ProvidesPackage{IU8-19-counters}[2024/10/28 v1.5 Счётчики]
\RequirePackage{calc}
\RequirePackage{xassoccnt}
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-20-listing.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-20-listing.sty
index 85b7f9e2fa5..56aa4cb3493 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-20-listing.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-20-listing.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{IU8-20-listing}[2024/09/09 v1.4 Листинги]
+\ProvidesPackage{IU8-20-listing}[2024/10/28 v1.5 Листинги]
\RequirePackage{listings}
\RequirePackage{xcolor}
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-21-math.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-21-math.sty
index bda74f008c9..91d6c7cdffd 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-21-math.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-21-math.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{IU8-21-math}[2024/09/09 v1.4 Математика]
+\ProvidesPackage{IU8-21-math}[2024/10/28 v1.5 Математика]
\RequirePackage{amsthm}
\theoremstyle{definition}
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-22-algorithms.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-22-algorithms.sty
index 7232bccaaa6..9fd0c3c5cb7 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-22-algorithms.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-22-algorithms.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{IU8-22-algorithms}[2024/09/09 v1.4 Алгоритмы]
+\ProvidesPackage{IU8-22-algorithms}[2024/10/28 v1.5 Алгоритмы]
\RequirePackage[linesnumbered,boxruled]{algorithm2e}
\SetAlCapSty{}
diff --git a/Master/texmf-dist/tex/latex/bookcover/bookcover.cls b/Master/texmf-dist/tex/latex/bookcover/bookcover.cls
index aa3a8f8a3d8..ff5a518e3f6 100644
--- a/Master/texmf-dist/tex/latex/bookcover/bookcover.cls
+++ b/Master/texmf-dist/tex/latex/bookcover/bookcover.cls
@@ -6,7 +6,7 @@
%%
%% ./bookcover.dtx (with options: `class')
%% This is a generated file.
-%% Copyright (C) 2015-2024 Tibor Tomacs
+%% Copyright (C) 2015-2024 Tibor Tómács
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.2 of this license or (at your option) any later
@@ -19,7 +19,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-\ProvidesClass{bookcover}[2024/04/06 v3.6 class for book covers and dust jackets]
+\ProvidesClass{bookcover}[2024/10/04 v3.7 class for book covers and dust jackets]
%% OPTIONS
@@ -359,7 +359,7 @@
%% BOOKCOVERELEMENT ENVIRONMENT
-\NewDocumentEnvironment{bookcoverelement}{ m m O{,,,} +b }{\bookcovercomponent{#1}{#2}[#3]{#4}}
+\NewDocumentEnvironment{bookcoverelement}{ m m O{,,,} +b }{\bookcovercomponent{#1}{#2}[#3]{#4}}{}
%% NEW BOOKCOVER PART
@@ -439,10 +439,13 @@
\def\bookcover@tikz@content#1{%
\begin{tikzpicture}[overlay,yshift=-\bookcover@partheight@]
\begingroup
- \pgfset{minimum width=\bookcover@partwidth@,minimum height=\bookcover@partheight@}
+ \pgfset{minimum width=\bookcover@partwidth@,
+ minimum height=\bookcover@partheight@,
+ outer sep=0pt}
\pgfnode{rectangle}{south west}{}{part}{\pgfusepath{}}
\pgfset{minimum width=\bookcover@partwidth@-\bookcover@tikz@trimmed@part@width@minus,
- minimum height=\bookcover@partheight@-\bookcover@tikz@trimmed@part@height@minus}
+ minimum height=\bookcover@partheight@-\bookcover@tikz@trimmed@part@height@minus,
+ outer sep=0pt}
\pgftransformshift{\pgfpoint{\bookcover@tikz@trimmed@part@push@right}
{\bookcover@tikz@trimmed@part@push@up}}
\pgfnode{rectangle}{south west}{}{trimmed part}{\pgfusepath{}}
@@ -961,7 +964,7 @@
\letnamebookcoverpart{bookcoverpart@whole}{whole} % bookcoverpart@whole is protected part
-%% SYNONYMOUS PART NAMES FOR INSIDE COVER ('INSIDE FRONT' = 'BACK', 'INSIDE BACK' = 'FRONT')
+%% SYNONYMOUS NAMES OF PARTS FOR INSIDE COVER ('INSIDE FRONT' = 'BACK', 'INSIDE BACK' = 'FRONT')
\@for\bookcover@partname@:={%
bg back flap,bg back wrap,bg back,bg front,bg front wrap,bg front flap,%
@@ -984,7 +987,7 @@ whole without front flap,whole without back flap}%
\patchcmd{\bookcover@partname@}{fr@nt}{inside back}{}{}%
\letnamebookcoverpart{\bookcover@partname@}{\bookcover@partname@original@}}
-%% SHORT PART NAMES
+%% SHORT NAMES OF PARTS
\def\bookcover@shortpartname@#1=#2.{\letnamebookcoverpart{#1}{#2}\letnamebookcoverpart{bg #1}{bg #2}}
\@for\bookcover@partname@:={%
diff --git a/Master/texmf-dist/tex/latex/bookshelf/bookshelf-svgnam.tex b/Master/texmf-dist/tex/latex/bookshelf/bookshelf-svgnam.tex
new file mode 100644
index 00000000000..4cd6f9f4a8d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/bookshelf/bookshelf-svgnam.tex
@@ -0,0 +1,313 @@
+%
+% This is svgnam.tex file generated from svgnam.def by the script
+% ./svgnam.sh > svgnam.tex
+%
+\newcommand{\SIL@svgcolname}[1]{\ifcase#1
+AliceBlue\or
+AntiqueWhite\or
+Aqua\or
+Aquamarine\or
+Azure\or
+Beige\or
+Bisque\or
+Black\or
+BlanchedAlmond\or
+Blue\or
+BlueViolet\or
+Brown\or
+BurlyWood\or
+CadetBlue\or
+Chartreuse\or
+Chocolate\or
+Coral\or
+CornflowerBlue\or
+Cornsilk\or
+Crimson\or
+Cyan\or
+DarkBlue\or
+DarkCyan\or
+DarkGoldenrod\or
+DarkGray\or
+DarkGreen\or
+DarkGrey\or
+DarkKhaki\or
+DarkMagenta\or
+DarkOliveGreen\or
+DarkOrange\or
+DarkOrchid\or
+DarkRed\or
+DarkSalmon\or
+DarkSeaGreen\or
+DarkSlateBlue\or
+DarkSlateGray\or
+DarkSlateGrey\or
+DarkTurquoise\or
+DarkViolet\or
+DeepPink\or
+DeepSkyBlue\or
+DimGray\or
+DimGrey\or
+DodgerBlue\or
+FireBrick\or
+FloralWhite\or
+ForestGreen\or
+Fuchsia\or
+Gainsboro\or
+GhostWhite\or
+Gold\or
+Goldenrod\or
+Gray\or
+Green\or
+GreenYellow\or
+Grey\or
+Honeydew\or
+HotPink\or
+IndianRed\or
+Indigo\or
+Ivory\or
+Khaki\or
+Lavender\or
+LavenderBlush\or
+LawnGreen\or
+LemonChiffon\or
+LightBlue\or
+LightCoral\or
+LightCyan\or
+LightGoldenrod\or
+LightGoldenrodYellow\or
+LightGray\or
+LightGreen\or
+LightGrey\or
+LightPink\or
+LightSalmon\or
+LightSeaGreen\or
+LightSkyBlue\or
+LightSlateBlue\or
+LightSlateGray\or
+LightSlateGrey\or
+LightSteelBlue\or
+LightYellow\or
+Lime\or
+LimeGreen\or
+Linen\or
+Magenta\or
+Maroon\or
+MediumAquamarine\or
+MediumBlue\or
+MediumOrchid\or
+MediumPurple\or
+MediumSeaGreen\or
+MediumSlateBlue\or
+MediumSpringGreen\or
+MediumTurquoise\or
+MediumVioletRed\or
+MidnightBlue\or
+MintCream\or
+MistyRose\or
+Moccasin\or
+NavajoWhite\or
+Navy\or
+NavyBlue\or
+OldLace\or
+Olive\or
+OliveDrab\or
+Orange\or
+OrangeRed\or
+Orchid\or
+PaleGoldenrod\or
+PaleGreen\or
+PaleTurquoise\or
+PaleVioletRed\or
+PapayaWhip\or
+PeachPuff\or
+Peru\or
+Pink\or
+Plum\or
+PowderBlue\or
+Purple\or
+Red\or
+RosyBrown\or
+RoyalBlue\or
+SaddleBrown\or
+Salmon\or
+SandyBrown\or
+SeaGreen\or
+Seashell\or
+Sienna\or
+Silver\or
+SkyBlue\or
+SlateBlue\or
+SlateGray\or
+SlateGrey\or
+Snow\or
+SpringGreen\or
+SteelBlue\or
+Tan\or
+Teal\or
+Thistle\or
+Tomato\or
+Turquoise\or
+Violet\or
+VioletRed\or
+Wheat\or
+White\or
+WhiteSmoke\or
+Yellow\or
+YellowGreen\or
+Black\fi}
+
+\newcommand{\SIL@svgcolval}[1]{\ifcase#1
+0.96633\or
+0.929923\or
+0.871206\or
+0.893092\or
+0.985874\or
+0.953778\or
+0.913011\or
+0\or
+0.932641\or
+0.260768\or
+0.379297\or
+0.349085\or
+0.74815\or
+0.570779\or
+0.866469\or
+0.529816\or
+0.647294\or
+0.576475\or
+0.971909\or
+0.433686\or
+0.871206\or
+0.142119\or
+0.474807\or
+0.561714\or
+0.664\or
+0.325856\or
+0.664\or
+0.705841\or
+0.302953\or
+0.388309\or
+0.670841\or
+0.396012\or
+0.26755\or
+0.675762\or
+0.686451\or
+0.281846\or
+0.284935\or
+0.284935\or
+0.704877\or
+0.35734\or
+0.517671\or
+0.675787\or
+0.41\or
+0.41\or
+0.54021\or
+0.361443\or
+0.982202\or
+0.458943\or
+0.555878\or
+0.864\or
+0.97393\or
+0.856285\or
+0.683662\or
+0.5\or
+0.415632\or
+0.897087\or
+0.5\or
+0.981852\or
+0.625264\or
+0.504136\or
+0.19626\or
+0.996035\or
+0.890633\or
+0.905664\or
+0.956157\or
+0.857112\or
+0.973957\or
+0.814506\or
+0.634585\or
+0.972435\or
+0.864229\or
+0.970187\or
+0.828\or
+0.835978\or
+0.828\or
+0.793828\or
+0.727452\or
+0.608906\or
+0.764286\or
+0.516182\or
+0.522335\or
+0.522335\or
+0.758883\or
+0.9923\or
+0.831264\or
+0.677159\or
+0.947156\or
+0.555878\or
+0.245459\or
+0.718037\or
+0.209658\or
+0.501212\or
+0.513837\or
+0.604404\or
+0.480155\or
+0.829725\or
+0.726351\or
+0.412174\or
+0.148714\or
+0.989148\or
+0.920006\or
+0.909698\or
+0.891886\or
+0.130384\or
+0.130384\or
+0.96388\or
+0.482701\or
+0.507329\or
+0.728803\or
+0.539791\or
+0.598277\or
+0.901054\or
+0.883282\or
+0.87941\or
+0.578431\or
+0.945407\or
+0.88424\or
+0.58891\or
+0.821492\or
+0.710864\or
+0.839601\or
+0.277939\or
+0.490918\or
+0.607101\or
+0.430078\or
+0.349771\or
+0.646416\or
+0.718648\or
+0.470014\or
+0.967932\or
+0.40977\or
+0.752\or
+0.759198\or
+0.413618\or
+0.491035\or
+0.491035\or
+0.984857\or
+0.841347\or
+0.481407\or
+0.726393\or
+0.435603\or
+0.781595\or
+0.592817\or
+0.771583\or
+0.669428\or
+0.43929\or
+0.882294\or
+1\or
+0.96\or
+0.965401\or
+0.732944\or
+0\fi}
+
+\setcounter{SIL@maxcolno}{151}
diff --git a/Master/texmf-dist/tex/latex/bookshelf/bookshelf.cls b/Master/texmf-dist/tex/latex/bookshelf/bookshelf.cls
index 73c2654c67e..e636adf8e37 100644
--- a/Master/texmf-dist/tex/latex/bookshelf/bookshelf.cls
+++ b/Master/texmf-dist/tex/latex/bookshelf/bookshelf.cls
@@ -6,17 +6,23 @@
%%
%% bookshelf.dtx (with options: `class')
%%
-%% This is a generated file.
+%% IMPORTANT NOTICE:
%%
-%% Copyright © 2020 by latex@silmaril.ie
+%% For the copyright see the source file.
%%
-%% This file was generated from an XML master source.
-%% Amendments and corrections should be notified to the
-%% maintainer for inclusion in future versions.
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from bookshelf.cls.
%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file bookshelf.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
\NeedsTeXFormat{LaTeX2e}[2017/04/15]
-\ProvidesClass{bookshelf}[2020/05/24 v0.5
- Turn your bibliography into a bookshelf image]
+\ProvidesClass{bookshelf}
+[2024/10/09 v1.2 Turn your bibliography into a bookshelf image]
\RequirePackage{fix-cm}
\PassOptionsToPackage{svgnames}{xcolor}
%%
@@ -109,18 +115,6 @@
%% Package for establishing margins and text area.
\RequirePackage[\SIL@paper,\SIL@orient,nohead,
nofoot,margin=1cm]{geometry}%
-%% Use biblatex instead of \BibTeX{}
-\RequirePackage[backend=biber,style=authoryear,
- doi=true,isbn=true,url=true,uniquename=false]{biblatex}%
- \AtBeginDocument{%
- \setlength{\bibitemsep}{1ex}%
- \setlength{\bibnamesep}{1.5\itemsep}%
- \defbibheading{shortbib}[References]%
- {\section{#1}}}
- \@ifpackagewith{babel}{british}{%
- \DeclareLanguageMapping{british}%
- {british-apa}}{\relax}
- \providetoggle{blx@skipbiblist}
%%
%% ******************************************************************
%%
@@ -134,7 +128,7 @@
\newcounter{SIL@fontsel}
\input{pickfont.tex}
\newcounter{SIL@maxcolno}
-\input{svgnam.tex}
+\input{bookshelf-svgnam.tex}
\newcounter{SIL@loopcount}
\newcounter{SIL@maxloop}
\newcounter{SIL@bgcolno}
@@ -172,8 +166,102 @@
\setcounter{SIL@scale}{#1}}
\fboxsep1em\fboxrule.1pt
\pagestyle{empty}
-\newcommand{\makebook}[1]{%
- \typeout{^^J#1}%
+\def\SIL@fittext#1#2#3#4{%
+ \@tempdima=#2\relax
+ \edef\SIL@W{\strip@pt\@tempdima}%
+ \@tempdima=#3\relax
+ \edef\SIL@H{\strip@pt\@tempdima}%
+ \setbox#4=\hbox{\raggedright\noindent#1}%
+ \@tempdima=\wd#4\relax
+ \edef\SIL@w{\strip@pt\@tempdima}%
+ \ifdim#2>\@tempdima\relax
+ \FPeval\SIL@S{\SIL@W/\SIL@w}%
+ \typeout{Text fits in one line: have H=\SIL@w pt, want \SIL@W pt}%
+ \typeout{Trying S=\SIL@S}%
+ \else
+ \typeout{Text does not fit in one line}%
+ \def\SIL@S{1}%
+ \FPeval\SIL@w{\SIL@W/\SIL@S}%
+ \setbox#4=\vbox{\hsize=\SIL@w pt\relax
+ \raggedright\noindent#1\vskip0pt}%
+ \@tempdima=\ht#4\relax
+ \edef\SIL@h{\strip@pt\@tempdima}%
+ \@tempdima = \SIL@S \@tempdima\relax
+ \typeout{Trying S=\SIL@S. Got H=\the\@tempdima. Want \SIL@H pt}%
+ \FPeval\SIL@S{\SIL@H/\SIL@h}%
+ \fi
+ \FPmax\SIL@S\SIL@S{1}%
+ \FPeval\SIL@w{\SIL@W/\SIL@S}%
+ \setbox#4=\vbox{\hsize=\SIL@w pt\relax
+ \raggedright\noindent#1\vskip0pt}%
+ \@tempdima=\ht#4\relax
+ \edef\SIL@h{\strip@pt\@tempdima}%
+ \@tempdima = \SIL@S \@tempdima\relax
+ \typeout{Trying S=\SIL@S. Got H=\the\@tempdima. Want \SIL@H pt}%
+ \ifdim\@tempdima>#3\relax
+ \loop
+ \FPeval\SIL@S{0.95*\SIL@S}%
+ \FPeval\SIL@w{\SIL@W/\SIL@S}%
+ \setbox#4=\vbox{\hsize=\SIL@w pt\relax
+ \raggedright\noindent#1\vskip0pt}%
+ \@tempdima=\ht#4\relax
+ \edef\SIL@h{\strip@pt\@tempdima}%
+ \@tempdima = \SIL@S \@tempdima\relax
+ \typeout{Trying S=\SIL@S. Got H=\the\@tempdima. Want \SIL@H pt}%
+ \ifdim\@tempdima>#3\repeat
+ \fi
+ \setbox#4=\vbox to #3{\hsize=#2\relax
+ \vfill
+ \noindent
+ \scalebox{\SIL@S}{\vbox{\hsize=\SIL@w pt\relax
+ \raggedright\noindent#1\vskip0pt}}%
+ \vfill}%
+}
+\ExplSyntaxOn
+\prg_new_conditional:Nnn \__SIL_primitive_font_glyph_if_exists:n {TF,F}
+ {
+ \tex_iffontchar:D \SILmfont `#1 \scan_stop:
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+\prg_new_conditional:Nnn \__SIL_can_typeset:n {TF}
+ {
+ \typeout{Trying ~ to ~ typeset ~ #1}
+ \bool_set_true:N \l_tmpa_bool
+ \str_map_inline:nn {#1} {
+ \__SIL_primitive_font_glyph_if_exists:nTF {##1} {}{
+ \bool_set_false:N \l_tmpa_bool
+ \typeout{Cannot ~ typeset ~ ##1}
+ \str_map_break:
+ }
+ }
+ \bool_if:nTF \l_tmpa_bool {\prg_return_true:} {\prg_return_false:}
+}
+
+\cs_generate_variant:Nn \__SIL_can_typeset:nTF {x}
+
+\NewDocumentCommand\CanTypesetTF { m m m}{
+ \__SIL_can_typeset:xTF{#1}{#2}{#3}
+}
+\ExplSyntaxOff
+\def\SIL@maxfonttries{100}
+\newif\ifSIL@fontfound
+\ExplSyntaxOn
+\seq_new:N \l__SIL_fontstack
+\NewDocumentCommand\AddFontToStack {m} {%
+ \seq_gput_right:Ne \l__SIL_fontstack {#1}
+}
+\NewDocumentCommand\ReuseFont {} {
+ \seq_rand_item:N \l__SIL_fontstack
+}
+\ExplSyntaxOff
+\newcount\SIL@num@fontsel@files
+\SIL@num@fontsel@files=0
+\def\SIL@max@fontsel@files{5500}
+\newcommand{\makebook}[2]{%
+ \typeout{^^JTypesetting #1---#2}%
\setcounter{SIL@maxloop}{10}%
\setcounter{SIL@loopcount}{0}%
\setlength{\SIL@minbookwidth}{5mm}%
@@ -239,15 +327,41 @@
\theSIL@bgcolno}}%
\def\SIL@fgcol{\SIL@svgcolname{%
\theSIL@fgcolno}}%
+ \ifnum\c@SIL@loopcount>\c@SIL@maxloop
+ \typeout{Using default colors after \the\c@SIL@maxloop\space attempts}%
+ \def\SIL@bgcol{Black}%
+ \def\SIL@fgcol{White}%
+ \fi
\typeout{BG=\SIL@bgcol, FG=\SIL@fgcol}%
- \setrannum{\c@SIL@fontsel}{1}{\c@SIL@maxfont}%
- \input{fontsel/\theSIL@fontsel.tex}%
+ \c@SIL@loopcount=1\relax
+ \loop
+ \ifnum\SIL@num@fontsel@files<\SIL@max@fontsel@files
+ \advance\SIL@num@fontsel@files by 1\relax
+ \typeout{Opening new fontsel file, counter=\the\SIL@num@fontsel@files}%
+ \setrannum{\c@SIL@fontsel}{1}{\c@SIL@maxfont}%
+ \AddFontToStack{\the\c@SIL@fontsel}%
+ \else
+ \typeout{Reusing fontsel file}%
+ \expandafter\c@SIL@fontsel\ReuseFont\relax
+ \fi
+ \input{fontsel/\theSIL@fontsel.tex}\unskip%
+ \typeout{Trying \SILmfontname, attempt \the\c@SIL@loopcount}%
+ \CanTypesetTF{#2---#1}{\global
+ \SIL@fontfoundtrue}{\global
+ \SIL@fontfoundfalse}%
+ \ifSIL@fontfound
+ \c@SIL@loopcount=\SIL@maxfonttries\relax
+ \else
+ \addtocounter{SIL@loopcount}{1}%
+ \fi
+ \ifnum\c@SIL@loopcount<\SIL@maxfonttries\repeat
+ \ifSIL@fontfound
\typeout{Set in \SILmfontname}%
\settowidth{\SIL@authorwidth}{%
- \SILmfont\citefullauthor{#1}}%
+ \SILmfont#1}%
\typeout{Author width: \the\SIL@authorwidth}%
\settoheight{\SIL@authorheight}{%
- \SILmfont\citefullauthor{#1}}%
+ \SILmfont#1}%
\typeout{Author height: \the\SIL@authorheight}%
\ifdim\SIL@authorwidth<.9\SIL@maxbookwidth
\typeout{Author width is less than 90\%
@@ -266,29 +380,6 @@
\typeout{Author won't fit in .9 of
\the\SIL@maxbookwidth}%
\fi
- \settowidth{\SIL@titlewidth}{%
- \SILmfont\citetitle{#1}}%
- \ifdim\SIL@titlewidth=0pt
- \typeout{WARNING title width for entry "#1"
- set in \SILmfontname=0pt!}%
- \typeout{Likely that the entry has faulty
- syntax or a bogus title field}%
- \typeout{or a BiBTeX management or
- crossref setting is being misinterpreted.}%
- \typeout{I can't go any further until you
- fix this, sorry}%
- \end{document}%
- \fi
- \ifSIL@topauthor
- \typeout{Title width: \the\SIL@titlewidth}%
- \else
- \addtolength{\SIL@titlewidth}{%
- \widthof{\SILmfont~~—~~}}%
- \addtolength{\SIL@titlewidth}{%
- \SIL@authorwidth}%
- \typeout{Title width with em rule and author:
- \the\SIL@titlewidth}%
- \fi
\typeout{Limits: width=\the\SIL@minbookwidth
–\the\SIL@maxbookwidth;
height=\the\SIL@minbookheight
@@ -316,65 +407,6 @@
\typeout{Width generated as
\the\SIL@bookwidth}%
\fi
- \ifdim\SIL@titlewidth<\SIL@heightfortitle
- \typeout{Titling fits in
- \the\SIL@heightfortitle}%
- \SIL@titleonelinetrue
- \edef\titleval{\strip@pt\SIL@titlewidth}%
- \edef\heightval{\strip@pt\SIL@heightfortitle}%
- \FPeval\SIL@scaledtitle{\heightval/\titleval}%
- \typeout{Scaling 1-line title by
- \SIL@scaledtitle}%
- \expandafter\SIL@scaleint
- \SIL@scaledtitle\sentinel
- \ifnum\c@SIL@scale>4
- \gdef\SIL@scaledtitle{4}%
- \typeout{Resetting scale \theSIL@scale\ to
- \SIL@scaledtitle}%
- \fi
- \else
- \typeout{Titling won't fit
- \the\SIL@heightfortitle}%
- \SIL@titleonelinefalse
- \setbox\SIL@titlebox=\vbox{%
- \hsize\SIL@heightfortitle
- \SILmfont\raggedright
- \vrule height1em width0pt
- \bfseries\citetitle{#1}%
- \vrule depth.2em width0pt
- }%
- \setlength{\SIL@titleheight}%
- {\ht\SIL@titlebox + \dp\SIL@titlebox}%
- \typeout{Multiline title takes
- \the\SIL@titleheight}%
- \ifdim\SIL@titleheight>\SIL@bookwidth
- \typeout{Height of title
- \the\SIL@titleheight\
- is greater than
- \the\SIL@bookwidth}%
- \edef\titleval{\strip@pt\SIL@titleheight}%
- \edef\heightval{\strip@pt\SIL@bookwidth}%
- \FPeval\SIL@scaledtitle
- {10 - \heightval / \titleval}%
- \typeout{10 - \heightval\ ÷ \titleval\
- = \SIL@scaledtitle}%
- \typeout{Using smaller font \SIL@scaledtitle
- pt for multiline title}%
- \else
- \typeout{Height of title
- \the\SIL@titleheight\
- is less than
- \the\SIL@bookwidth}%
- \edef\titleval{\strip@pt\SIL@titleheight}%
- \edef\heightval{\strip@pt\SIL@bookwidth}%
- \FPeval\SIL@scaledtitle
- {10 + \heightval / \titleval}%
- \typeout{10 + \heightval\ ÷ \titleval\
- = \SIL@scaledtitle}%
- \typeout{Using larger font \SIL@scaledtitle
- pt for multiline title}%
- \fi
- \fi
\leavevmode\vbox{\hsize\SIL@bookwidth
\advance\hsize by2\fboxsep
\advance\hsize by2\fboxrule
@@ -387,85 +419,35 @@
hsize=\the\SIL@bookwidth}%
\centering
\SILmfont\color{\SIL@fgcol}%
- \citefullauthor{#1}%
+ #1%
\par\vfill
- \rotatebox{90}{\vbox to\SIL@bookwidth{%
- \hsize\SIL@heightfortitle
- \null\vfill
- \typeout{Title in a vbox to
- \the\SIL@bookwidth,
- hsize=\the\SIL@heightfortitle}%
- \raggedright\color{\SIL@fgcol}%
- \ifSIL@titleoneline
- \scalebox{\SIL@scaledtitle}%
- {\bfseries\citetitle{#1}}%
- \else
- \fontsize{\SIL@scaledtitle}%
- {\SIL@scaledtitle}\selectfont
- \bfseries\citetitle{#1}%
- \fi
- \par\vfill}%
+ \SIL@fittext{\color{\SIL@fgcol}\SILmfont
+ #2}{\SIL@heightfortitle}{\SIL@bookwidth}%
+ {\SIL@titlebox}%
+ \rotatebox{90}{\box\SIL@titlebox}%
}%
- }%
\else
\typeout{Setting author inline to title}%
\vbox to\SIL@bookheight{\hsize\SIL@bookwidth
- \typeout{Spine is a vbox to
- \the\SIL@bookheight,
- hsize=\the\SIL@bookwidth}%
- \centering
- \SILmfont\color{\SIL@fgcol}%
- \rotatebox{90}{\vbox to\SIL@bookwidth{%
- \hsize\SIL@heightfortitle
- \null\vfill
- \typeout{Title and author in a vbox to
- \the\SIL@bookwidth,
- hsize=\the\SIL@heightfortitle}%
- \raggedright\color{\SIL@fgcol}%
- \ifSIL@titleoneline
- \scalebox{\SIL@scaledtitle}%
- {{\bfseries\citetitle{#1}}\quad
- —\ \ \citefullauthor{#1}}%
- \else
- \fontsize{\SIL@scaledtitle}%
- {\SIL@scaledtitle}\selectfont
- {\bfseries\citetitle{#1}}\quad
- —\ \ \citefullauthor{#1}%
- \fi
- \par\vfill}%
- }%
+ \SIL@fittext{\color{\SIL@fgcol}\SILmfont
+ #1\quad
+ ---\quad#2}{\SIL@bookheight}{\SIL@bookwidth}%
+ {\SIL@titlebox}%
+ \rotatebox{90}{\box\SIL@titlebox}%
}%
\fi
}%
- \\\fboxsep0pt\fboxrule0pt
+ \\\fboxsep0pt\fboxrule0pt%
\colorbox{BurlyWood}{\hbox to\hsize{%
\hfil\vrule height3mm depth6mm width0pt
\normalfont\scriptsize\theSIL@fontsel\hfil}}%
- }%
-\kern-2.2mm}%
-\DeclareCiteCommand{\citefullauthor}
- {\boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \DeclareNameAlias{labelname}{given-family}%
- \usebibmacro{prenote}}
- {\ifciteindex
- {\indexnames{labelname}}
- {}%
- \printnames{labelname}}
- {\multicitedelim}
- {\usebibmacro{postnote}}
-%%\DeclareLabeltitle[article]{%
-%% \field{journaltitle}
-%%}
-%%\DeclareLabeltitle
-%% [inbook,incollection,inproceedings]{%
-%% \field{booktitle}
-%% \field{maintitle}
-%%}
-\DeclareFieldFormat*{citetitle}{#1}
-\let\citeA\textcite
-\let\titleref\emph
-\def\emdash{~--- }
+ }%
+ \penalty0
+\else % font not found
+ \typeout{Did not find font for #1--#2}%
+
+\fi}
+\raggedright
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/bxcoloremoji/bxcoloremoji-names.def b/Master/texmf-dist/tex/latex/bxcoloremoji/bxcoloremoji-names.def
new file mode 100644
index 00000000000..08cc3175054
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/bxcoloremoji/bxcoloremoji-names.def
@@ -0,0 +1,3635 @@
+%%
+%% This is file 'bxcoloremoji-names.def'.
+%%
+%% Copyright (c) 2017-2024 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% file declaration
+\ProvidesFile{bxcoloremoji-names.def}[2024/11/18 v1.0a]
+
+%--------------------------------------- name mappings
+\bxce@ndbegin
+\ifcase\bxce@ndindex %[0]
+\bxce@do{100}{1F4AF}
+\bxce@do{1234}{1F522}
+\bxce@do{8ball}{1F3B1}
+\bxce@do{a}{1F170}
+\bxce@do{ab}{1F18E}
+\bxce@do{abacus}{1F9EE}
+\bxce@do{abc}{1F524}
+\bxce@do{abcd}{1F521}
+\bxce@do{accept}{1F251}
+\bxce@do{accordion}{1FA97}
+\bxce@do{adhesive_bandage}{1FA79}
+\bxce@do{adult}{1F9D1}
+\bxce@do{adult_tone1}{1F9D1 1F3FB}
+\bxce@do{adult_tone2}{1F9D1 1F3FC}
+\bxce@do{adult_tone3}{1F9D1 1F3FD}
+\bxce@do{adult_tone4}{1F9D1 1F3FE}
+\bxce@do{adult_tone5}{1F9D1 1F3FF}
+\bxce@do{aerial_tramway}{1F6A1}
+\bxce@do{airplane}{2708}
+\bxce@do{airplane_arriving}{1F6EC}
+\bxce@do{airplane_departure}{1F6EB}
+\bxce@do{airplane_small}{1F6E9}
+\bxce@do{alarm_clock}{23F0}
+\bxce@do{alembic}{2697}
+\bxce@do{alien}{1F47D}
+\bxce@do{ambulance}{1F691}
+\bxce@do{amphora}{1F3FA}
+\bxce@do{anatomical_heart}{1FAC0}
+\bxce@do{anchor}{2693}
+\bxce@do{angel}{1F47C}
+\bxce@do{angel_tone1}{1F47C 1F3FB}
+\bxce@do{angel_tone2}{1F47C 1F3FC}
+\bxce@do{angel_tone3}{1F47C 1F3FD}
+\bxce@do{angel_tone4}{1F47C 1F3FE}
+\bxce@do{angel_tone5}{1F47C 1F3FF}
+\bxce@do{anger}{1F4A2}
+\bxce@do{anger_right}{1F5EF}
+\bxce@do{angry}{1F620}
+\bxce@do{anguished}{1F627}
+\bxce@do{ant}{1F41C}
+\bxce@do{apple}{1F34E}
+\bxce@do{aquarius}{2652}
+\bxce@do{aries}{2648}
+\bxce@do{arrow_backward}{25C0}
+\bxce@do{arrow_double_down}{23EC}
+\bxce@do{arrow_double_up}{23EB}
+\bxce@do{arrow_down}{2B07}
+\bxce@do{arrow_down_small}{1F53D}
+\bxce@do{arrow_forward}{25B6}
+\bxce@do{arrow_heading_down}{2935}
+\bxce@do{arrow_heading_up}{2934}
+\bxce@do{arrow_left}{2B05}
+\bxce@do{arrow_lower_left}{2199}
+\bxce@do{arrow_lower_right}{2198}
+\bxce@do{arrow_right}{27A1}
+\bxce@do{arrow_right_hook}{21AA}
+\bxce@do{arrow_up}{2B06}
+\bxce@do{arrow_up_down}{2195}
+\bxce@do{arrow_up_small}{1F53C}
+\bxce@do{arrow_upper_left}{2196}
+\bxce@do{arrow_upper_right}{2197}
+\bxce@do{arrows_clockwise}{1F503}
+\bxce@do{arrows_counterclockwise}{1F504}
+\bxce@do{art}{1F3A8}
+\bxce@do{articulated_lorry}{1F69B}
+\bxce@do{artist}{1F9D1 200D 1F3A8}
+\bxce@do{artist_tone1}{1F9D1 1F3FB 200D 1F3A8}
+\bxce@do{artist_tone2}{1F9D1 1F3FC 200D 1F3A8}
+\bxce@do{artist_tone3}{1F9D1 1F3FD 200D 1F3A8}
+\bxce@do{artist_tone4}{1F9D1 1F3FE 200D 1F3A8}
+\bxce@do{artist_tone5}{1F9D1 1F3FF 200D 1F3A8}
+\bxce@do{asterisk}{2A 20E3}
+\bxce@do{asterisk_symbol}{2A}%NA
+\bxce@do{astonished}{1F632}
+\bxce@do{astronaut}{1F9D1 200D 1F680}
+\bxce@do{astronaut_tone1}{1F9D1 1F3FB 200D 1F680}
+\bxce@do{astronaut_tone2}{1F9D1 1F3FC 200D 1F680}
+\bxce@do{astronaut_tone3}{1F9D1 1F3FD 200D 1F680}
+\bxce@do{astronaut_tone4}{1F9D1 1F3FE 200D 1F680}
+\bxce@do{astronaut_tone5}{1F9D1 1F3FF 200D 1F680}
+\bxce@do{athletic_shoe}{1F45F}
+\bxce@do{atm}{1F3E7}
+\bxce@do{atom}{269B}
+\bxce@do{auto_rickshaw}{1F6FA}
+\bxce@do{avocado}{1F951}
+\bxce@do{axe}{1FA93}
+\bxce@do{b}{1F171}
+\bxce@do{baby}{1F476}
+\bxce@do{baby_bottle}{1F37C}
+\bxce@do{baby_chick}{1F424}
+\bxce@do{baby_symbol}{1F6BC}
+\bxce@do{baby_tone1}{1F476 1F3FB}
+\bxce@do{baby_tone2}{1F476 1F3FC}
+\bxce@do{baby_tone3}{1F476 1F3FD}
+\bxce@do{baby_tone4}{1F476 1F3FE}
+\bxce@do{baby_tone5}{1F476 1F3FF}
+\bxce@do{back}{1F519}
+\bxce@do{bacon}{1F953}
+\bxce@do{badger}{1F9A1}
+\bxce@do{badminton}{1F3F8}
+\bxce@do{bagel}{1F96F}
+\bxce@do{baggage_claim}{1F6C4}
+\bxce@do{bald}{1F9B2}
+\bxce@do{ballet_shoes}{1FA70}
+\bxce@do{balloon}{1F388}
+\bxce@do{ballot_box}{1F5F3}
+\bxce@do{ballot_box_with_check}{2611}
+\bxce@do{bamboo}{1F38D}
+\bxce@do{banana}{1F34C}
+\bxce@do{bangbang}{203C}
+\bxce@do{banjo}{1FA95}
+\bxce@do{bank}{1F3E6}
+\bxce@do{bar_chart}{1F4CA}
+\bxce@do{barber}{1F488}
+\bxce@do{baseball}{26BE}
+\bxce@do{basket}{1F9FA}
+\bxce@do{basketball}{1F3C0}
+\bxce@do{bat}{1F987}
+\bxce@do{bath}{1F6C0}
+\bxce@do{bath_tone1}{1F6C0 1F3FB}
+\bxce@do{bath_tone2}{1F6C0 1F3FC}
+\bxce@do{bath_tone3}{1F6C0 1F3FD}
+\bxce@do{bath_tone4}{1F6C0 1F3FE}
+\bxce@do{bath_tone5}{1F6C0 1F3FF}
+\bxce@do{bathtub}{1F6C1}
+\bxce@do{battery}{1F50B}
+\bxce@do{beach}{1F3D6}
+\bxce@do{beach_umbrella}{26F1}
+\bxce@do{bear}{1F43B}
+\bxce@do{bearded_person}{1F9D4}
+\bxce@do{bearded_person_tone1}{1F9D4 1F3FB}
+\bxce@do{bearded_person_tone2}{1F9D4 1F3FC}
+\bxce@do{bearded_person_tone3}{1F9D4 1F3FD}
+\bxce@do{bearded_person_tone4}{1F9D4 1F3FE}
+\bxce@do{bearded_person_tone5}{1F9D4 1F3FF}
+\bxce@do{beaver}{1F9AB}
+\bxce@do{bed}{1F6CF}
+\bxce@do{bee}{1F41D}
+\bxce@do{beer}{1F37A}
+\bxce@do{beers}{1F37B}
+\bxce@do{beetle}{1FAB2}
+\bxce@do{beginner}{1F530}
+\bxce@do{bell}{1F514}
+\bxce@do{bell_pepper}{1FAD1}
+\bxce@do{bellhop}{1F6CE}
+\bxce@do{bento}{1F371}
+\bxce@do{beverage_box}{1F9C3}
+\bxce@do{bike}{1F6B2}
+\bxce@do{bikini}{1F459}
+\bxce@do{billed_cap}{1F9E2}
+\bxce@do{biohazard}{2623}
+\bxce@do{bird}{1F426}
+\bxce@do{birthday}{1F382}
+\bxce@do{bison}{1F9AC}
+\bxce@do{black_cat}{1F408 200D 2B1B}
+\bxce@do{black_circle}{26AB}
+\bxce@do{black_heart}{1F5A4}
+\bxce@do{black_joker}{1F0CF}
+\bxce@do{black_large_square}{2B1B}
+\bxce@do{black_medium_small_square}{25FE}
+\bxce@do{black_medium_square}{25FC}
+\bxce@do{black_nib}{2712}
+\bxce@do{black_small_square}{25AA}
+\bxce@do{black_square_button}{1F532}
+\bxce@do{blond-haired_man}{1F471 200D 2642}
+\bxce@do{blond-haired_man_tone1}{1F471 1F3FB 200D 2642}
+\bxce@do{blond-haired_man_tone2}{1F471 1F3FC 200D 2642}
+\bxce@do{blond-haired_man_tone3}{1F471 1F3FD 200D 2642}
+\bxce@do{blond-haired_man_tone4}{1F471 1F3FE 200D 2642}
+\bxce@do{blond-haired_man_tone5}{1F471 1F3FF 200D 2642}
+\bxce@do{blond-haired_woman}{1F471 200D 2640}
+\bxce@do{blond-haired_woman_tone1}{1F471 1F3FB 200D 2640}
+\bxce@do{blond-haired_woman_tone2}{1F471 1F3FC 200D 2640}
+\bxce@do{blond-haired_woman_tone3}{1F471 1F3FD 200D 2640}
+\bxce@do{blond-haired_woman_tone4}{1F471 1F3FE 200D 2640}
+\bxce@do{blond-haired_woman_tone5}{1F471 1F3FF 200D 2640}
+\bxce@do{blond_haired_person}{1F471}
+\bxce@do{blond_haired_person_tone1}{1F471 1F3FB}
+\bxce@do{blond_haired_person_tone2}{1F471 1F3FC}
+\bxce@do{blond_haired_person_tone3}{1F471 1F3FD}
+\bxce@do{blond_haired_person_tone4}{1F471 1F3FE}
+\bxce@do{blond_haired_person_tone5}{1F471 1F3FF}
+\bxce@do{blossom}{1F33C}
+\bxce@do{blowfish}{1F421}
+\bxce@do{blue_book}{1F4D8}
+\bxce@do{blue_car}{1F699}
+\bxce@do{blue_circle}{1F535}
+\bxce@do{blue_heart}{1F499}
+\bxce@do{blue_square}{1F7E6}
+\bxce@do{blueberries}{1FAD0}
+\bxce@do{blush}{1F60A}
+\bxce@do{boar}{1F417}
+\bxce@do{bomb}{1F4A3}
+\bxce@do{bone}{1F9B4}
+\bxce@do{book}{1F4D6}
+\bxce@do{bookmark}{1F516}
+\bxce@do{bookmark_tabs}{1F4D1}
+\bxce@do{books}{1F4DA}
+\bxce@do{boom}{1F4A5}
+\bxce@do{boomerang}{1FA83}
+\bxce@do{boot}{1F462}
+\bxce@do{bouquet}{1F490}
+\bxce@do{bow_and_arrow}{1F3F9}
+\bxce@do{bowl_with_spoon}{1F963}
+\bxce@do{bowling}{1F3B3}
+\bxce@do{boxing_glove}{1F94A}
+\bxce@do{boy}{1F466}
+\bxce@do{boy_tone1}{1F466 1F3FB}
+\bxce@do{boy_tone2}{1F466 1F3FC}
+\bxce@do{boy_tone3}{1F466 1F3FD}
+\bxce@do{boy_tone4}{1F466 1F3FE}
+\bxce@do{boy_tone5}{1F466 1F3FF}
+\bxce@do{brain}{1F9E0}
+\bxce@do{bread}{1F35E}
+\bxce@do{breast_feeding}{1F931}
+\bxce@do{breast_feeding_tone1}{1F931 1F3FB}
+\bxce@do{breast_feeding_tone2}{1F931 1F3FC}
+\bxce@do{breast_feeding_tone3}{1F931 1F3FD}
+\bxce@do{breast_feeding_tone4}{1F931 1F3FE}
+\bxce@do{breast_feeding_tone5}{1F931 1F3FF}
+\bxce@do{bricks}{1F9F1}
+\bxce@do{bridge_at_night}{1F309}
+\bxce@do{briefcase}{1F4BC}
+\bxce@do{briefs}{1FA72}
+\bxce@do{broccoli}{1F966}
+\bxce@do{broken_heart}{1F494}
+\bxce@do{broom}{1F9F9}
+\bxce@do{brown_circle}{1F7E4}
+\bxce@do{brown_heart}{1F90E}
+\bxce@do{brown_square}{1F7EB}
+\bxce@do{bubble_tea}{1F9CB}
+\bxce@do{bucket}{1FAA3}
+\bxce@do{bug}{1F41B}
+\bxce@do{bulb}{1F4A1}
+\bxce@do{bullettrain_front}{1F685}
+\bxce@do{bullettrain_side}{1F684}
+\bxce@do{burrito}{1F32F}
+\bxce@do{bus}{1F68C}
+\bxce@do{busstop}{1F68F}
+\bxce@do{bust_in_silhouette}{1F464}
+\bxce@do{busts_in_silhouette}{1F465}
+\bxce@do{butter}{1F9C8}
+\bxce@do{butterfly}{1F98B}
+\bxce@do{cactus}{1F335}
+\bxce@do{cake}{1F370}
+\bxce@do{calendar}{1F4C6}
+\bxce@do{calendar_spiral}{1F5D3}
+\bxce@do{call_me}{1F919}
+\bxce@do{call_me_tone1}{1F919 1F3FB}
+\bxce@do{call_me_tone2}{1F919 1F3FC}
+\bxce@do{call_me_tone3}{1F919 1F3FD}
+\bxce@do{call_me_tone4}{1F919 1F3FE}
+\bxce@do{call_me_tone5}{1F919 1F3FF}
+\bxce@do{calling}{1F4F2}
+\bxce@do{camel}{1F42B}
+\bxce@do{camera}{1F4F7}
+\bxce@do{camera_with_flash}{1F4F8}
+\bxce@do{camping}{1F3D5}
+\bxce@do{cancer}{264B}
+\bxce@do{candle}{1F56F}
+\bxce@do{candy}{1F36C}
+\bxce@do{canned_food}{1F96B}
+\bxce@do{canoe}{1F6F6}
+\bxce@do{capital_abcd}{1F520}
+\bxce@do{capricorn}{2651}
+\bxce@do{card_box}{1F5C3}
+\bxce@do{card_index}{1F4C7}
+\bxce@do{carousel_horse}{1F3A0}
+\bxce@do{carpentry_saw}{1FA9A}
+\bxce@do{carrot}{1F955}
+\bxce@do{cat}{1F431}
+\bxce@do{cat2}{1F408}
+\bxce@do{cd}{1F4BF}
+\bxce@do{chains}{26D3}
+\bxce@do{chair}{1FA91}
+\bxce@do{champagne}{1F37E}
+\bxce@do{champagne_glass}{1F942}
+\bxce@do{chart}{1F4B9}
+\bxce@do{chart_with_downwards_trend}{1F4C9}
+\bxce@do{chart_with_upwards_trend}{1F4C8}
+\bxce@do{checkered_flag}{1F3C1}
+\bxce@do{cheese}{1F9C0}
+\bxce@do{cherries}{1F352}
+\bxce@do{cherry_blossom}{1F338}
+\bxce@do{chess_pawn}{265F}
+\bxce@do{chestnut}{1F330}
+\bxce@do{chicken}{1F414}
+\bxce@do{child}{1F9D2}
+\bxce@do{child_tone1}{1F9D2 1F3FB}
+\bxce@do{child_tone2}{1F9D2 1F3FC}
+\bxce@do{child_tone3}{1F9D2 1F3FD}
+\bxce@do{child_tone4}{1F9D2 1F3FE}
+\bxce@do{child_tone5}{1F9D2 1F3FF}
+\bxce@do{children_crossing}{1F6B8}
+\bxce@do{chipmunk}{1F43F}
+\bxce@do{chocolate_bar}{1F36B}
+\bxce@do{chopsticks}{1F962}
+\bxce@do{christmas_tree}{1F384}
+\bxce@do{church}{26EA}
+\bxce@do{cinema}{1F3A6}
+\bxce@do{circus_tent}{1F3AA}
+\bxce@do{city_dusk}{1F306}
+\bxce@do{city_sunset}{1F307}
+\bxce@do{cityscape}{1F3D9}
+\bxce@do{cl}{1F191}
+\bxce@do{clap}{1F44F}
+\bxce@do{clap_tone1}{1F44F 1F3FB}
+\bxce@do{clap_tone2}{1F44F 1F3FC}
+\bxce@do{clap_tone3}{1F44F 1F3FD}
+\bxce@do{clap_tone4}{1F44F 1F3FE}
+\bxce@do{clap_tone5}{1F44F 1F3FF}
+\bxce@do{clapper}{1F3AC}
+\bxce@do{classical_building}{1F3DB}
+\bxce@do{clipboard}{1F4CB}
+\bxce@do{clock}{1F570}
+\bxce@do{clock1}{1F550}
+\bxce@do{clock10}{1F559}
+\bxce@do{clock1030}{1F565}
+\bxce@do{clock11}{1F55A}
+\bxce@do{clock1130}{1F566}
+\bxce@do{clock12}{1F55B}
+\bxce@do{clock1230}{1F567}
+\bxce@do{clock130}{1F55C}
+\bxce@do{clock2}{1F551}
+\bxce@do{clock230}{1F55D}
+\bxce@do{clock3}{1F552}
+\bxce@do{clock330}{1F55E}
+\bxce@do{clock4}{1F553}
+\bxce@do{clock430}{1F55F}
+\bxce@do{clock5}{1F554}
+\bxce@do{clock530}{1F560}
+\bxce@do{clock6}{1F555}
+\bxce@do{clock630}{1F561}
+\bxce@do{clock7}{1F556}
+\bxce@do{clock730}{1F562}
+\bxce@do{clock8}{1F557}
+\bxce@do{clock830}{1F563}
+\bxce@do{clock9}{1F558}
+\bxce@do{clock930}{1F564}
+\bxce@do{closed_book}{1F4D5}
+\bxce@do{closed_lock_with_key}{1F510}
+\bxce@do{closed_umbrella}{1F302}
+\bxce@do{cloud}{2601}
+\bxce@do{cloud_lightning}{1F329}
+\bxce@do{cloud_rain}{1F327}
+\bxce@do{cloud_snow}{1F328}
+\bxce@do{cloud_tornado}{1F32A}
+\bxce@do{clown}{1F921}
+\bxce@do{clubs}{2663}
+\bxce@do{coat}{1F9E5}
+\bxce@do{cockroach}{1FAB3}
+\bxce@do{cocktail}{1F378}
+\bxce@do{coconut}{1F965}
+\bxce@do{coffee}{2615}
+\bxce@do{coffin}{26B0}
+\bxce@do{coin}{1FA99}
+\bxce@do{cold_face}{1F976}
+\bxce@do{cold_sweat}{1F630}
+\bxce@do{comet}{2604}
+\bxce@do{compass}{1F9ED}
+\bxce@do{compression}{1F5DC}
+\bxce@do{computer}{1F4BB}
+\bxce@do{confetti_ball}{1F38A}
+\bxce@do{confounded}{1F616}
+\bxce@do{confused}{1F615}
+\bxce@do{congratulations}{3297}
+\bxce@do{construction}{1F6A7}
+\bxce@do{construction_site}{1F3D7}
+\bxce@do{construction_worker}{1F477}
+\bxce@do{construction_worker_tone1}{1F477 1F3FB}
+\bxce@do{construction_worker_tone2}{1F477 1F3FC}
+\bxce@do{construction_worker_tone3}{1F477 1F3FD}
+\bxce@do{construction_worker_tone4}{1F477 1F3FE}
+\bxce@do{construction_worker_tone5}{1F477 1F3FF}
+\bxce@do{control_knobs}{1F39B}
+\bxce@do{convenience_store}{1F3EA}
+\bxce@do{cook}{1F9D1 200D 1F373}
+\bxce@do{cook_tone1}{1F9D1 1F3FB 200D 1F373}
+\bxce@do{cook_tone2}{1F9D1 1F3FC 200D 1F373}
+\bxce@do{cook_tone3}{1F9D1 1F3FD 200D 1F373}
+\bxce@do{cook_tone4}{1F9D1 1F3FE 200D 1F373}
+\bxce@do{cook_tone5}{1F9D1 1F3FF 200D 1F373}
+\bxce@do{cookie}{1F36A}
+\bxce@do{cooking}{1F373}
+\bxce@do{cool}{1F192}
+\bxce@do{copyright}{A9}
+\bxce@do{corn}{1F33D}
+\bxce@do{couch}{1F6CB}
+\bxce@do{couple}{1F46B}
+\bxce@do{couple_mm}{1F468 200D 2764 200D 1F468}
+\bxce@do{couple_with_heart}{1F491}
+\bxce@do{couple_with_heart_man_man}{1F468 200D 2764 200D 1F468}
+\bxce@do{couple_with_heart_man_man_tone1}{1F468 1F3FB 200D 2764 200D 1F468 1F3FB}
+\bxce@do{couple_with_heart_man_man_tone1_tone2}{1F468 1F3FB 200D 2764 200D 1F468 1F3FC}
+\bxce@do{couple_with_heart_man_man_tone1_tone3}{1F468 1F3FB 200D 2764 200D 1F468 1F3FD}
+\bxce@do{couple_with_heart_man_man_tone1_tone4}{1F468 1F3FB 200D 2764 200D 1F468 1F3FE}
+\bxce@do{couple_with_heart_man_man_tone1_tone5}{1F468 1F3FB 200D 2764 200D 1F468 1F3FF}
+\bxce@do{couple_with_heart_man_man_tone2}{1F468 1F3FC 200D 2764 200D 1F468 1F3FC}
+\bxce@do{couple_with_heart_man_man_tone2_tone1}{1F468 1F3FC 200D 2764 200D 1F468 1F3FB}
+\bxce@do{couple_with_heart_man_man_tone2_tone3}{1F468 1F3FC 200D 2764 200D 1F468 1F3FD}
+\bxce@do{couple_with_heart_man_man_tone2_tone4}{1F468 1F3FC 200D 2764 200D 1F468 1F3FE}
+\bxce@do{couple_with_heart_man_man_tone2_tone5}{1F468 1F3FC 200D 2764 200D 1F468 1F3FF}
+\bxce@do{couple_with_heart_man_man_tone3}{1F468 1F3FD 200D 2764 200D 1F468 1F3FD}
+\bxce@do{couple_with_heart_man_man_tone3_tone1}{1F468 1F3FD 200D 2764 200D 1F468 1F3FB}
+\bxce@do{couple_with_heart_man_man_tone3_tone2}{1F468 1F3FD 200D 2764 200D 1F468 1F3FC}
+\bxce@do{couple_with_heart_man_man_tone3_tone4}{1F468 1F3FD 200D 2764 200D 1F468 1F3FE}
+\bxce@do{couple_with_heart_man_man_tone3_tone5}{1F468 1F3FD 200D 2764 200D 1F468 1F3FF}
+\bxce@do{couple_with_heart_man_man_tone4}{1F468 1F3FE 200D 2764 200D 1F468 1F3FE}
+\bxce@do{couple_with_heart_man_man_tone4_tone1}{1F468 1F3FE 200D 2764 200D 1F468 1F3FB}
+\bxce@do{couple_with_heart_man_man_tone4_tone2}{1F468 1F3FE 200D 2764 200D 1F468 1F3FC}
+\bxce@do{couple_with_heart_man_man_tone4_tone3}{1F468 1F3FE 200D 2764 200D 1F468 1F3FD}
+\bxce@do{couple_with_heart_man_man_tone4_tone5}{1F468 1F3FE 200D 2764 200D 1F468 1F3FF}
+\bxce@do{couple_with_heart_man_man_tone5}{1F468 1F3FF 200D 2764 200D 1F468 1F3FF}
+\bxce@do{couple_with_heart_man_man_tone5_tone1}{1F468 1F3FF 200D 2764 200D 1F468 1F3FB}
+\bxce@do{couple_with_heart_man_man_tone5_tone2}{1F468 1F3FF 200D 2764 200D 1F468 1F3FC}
+\bxce@do{couple_with_heart_man_man_tone5_tone3}{1F468 1F3FF 200D 2764 200D 1F468 1F3FD}
+\bxce@do{couple_with_heart_man_man_tone5_tone4}{1F468 1F3FF 200D 2764 200D 1F468 1F3FE}
+\bxce@do{couple_with_heart_person_person}{1F491}
+\bxce@do{couple_with_heart_person_person_tone1}{1F491 1F3FB}
+\bxce@do{couple_with_heart_person_person_tone1_tone2}{1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FC}
+\bxce@do{couple_with_heart_person_person_tone1_tone3}{1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FD}
+\bxce@do{couple_with_heart_person_person_tone1_tone4}{1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FE}
+\bxce@do{couple_with_heart_person_person_tone1_tone5}{1F9D1 1F3FB 200D 2764 200D 1F9D1 1F3FF}
+\bxce@do{couple_with_heart_person_person_tone2}{1F491 1F3FC}
+\bxce@do{couple_with_heart_person_person_tone2_tone1}{1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FB}
+\bxce@do{couple_with_heart_person_person_tone2_tone3}{1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FD}
+\bxce@do{couple_with_heart_person_person_tone2_tone4}{1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FE}
+\bxce@do{couple_with_heart_person_person_tone2_tone5}{1F9D1 1F3FC 200D 2764 200D 1F9D1 1F3FF}
+\bxce@do{couple_with_heart_person_person_tone3}{1F491 1F3FD}
+\bxce@do{couple_with_heart_person_person_tone3_tone1}{1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FB}
+\bxce@do{couple_with_heart_person_person_tone3_tone2}{1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FC}
+\bxce@do{couple_with_heart_person_person_tone3_tone4}{1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FE}
+\bxce@do{couple_with_heart_person_person_tone3_tone5}{1F9D1 1F3FD 200D 2764 200D 1F9D1 1F3FF}
+\bxce@do{couple_with_heart_person_person_tone4}{1F491 1F3FE}
+\bxce@do{couple_with_heart_person_person_tone4_tone1}{1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FB}
+\bxce@do{couple_with_heart_person_person_tone4_tone2}{1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FC}
+\bxce@do{couple_with_heart_person_person_tone4_tone3}{1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FD}
+\bxce@do{couple_with_heart_person_person_tone4_tone5}{1F9D1 1F3FE 200D 2764 200D 1F9D1 1F3FF}
+\bxce@do{couple_with_heart_person_person_tone5}{1F491 1F3FF}
+\bxce@do{couple_with_heart_person_person_tone5_tone1}{1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FB}
+\bxce@do{couple_with_heart_person_person_tone5_tone2}{1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FC}
+\bxce@do{couple_with_heart_person_person_tone5_tone3}{1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FD}
+\bxce@do{couple_with_heart_person_person_tone5_tone4}{1F9D1 1F3FF 200D 2764 200D 1F9D1 1F3FE}
+\bxce@do{couple_with_heart_tone1}{1F491 1F3FB}
+\bxce@do{couple_with_heart_tone2}{1F491 1F3FC}
+\bxce@do{couple_with_heart_tone3}{1F491 1F3FD}
+\bxce@do{couple_with_heart_tone4}{1F491 1F3FE}
+\bxce@do{couple_with_heart_tone5}{1F491 1F3FF}
+\bxce@do{couple_with_heart_woman_man}{1F469 200D 2764 200D 1F468}
+\bxce@do{couple_with_heart_woman_man_tone1}{1F469 1F3FB 200D 2764 200D 1F468 1F3FB}
+\bxce@do{couple_with_heart_woman_man_tone1_tone2}{1F469 1F3FB 200D 2764 200D 1F468 1F3FC}
+\bxce@do{couple_with_heart_woman_man_tone1_tone3}{1F469 1F3FB 200D 2764 200D 1F468 1F3FD}
+\bxce@do{couple_with_heart_woman_man_tone1_tone4}{1F469 1F3FB 200D 2764 200D 1F468 1F3FE}
+\bxce@do{couple_with_heart_woman_man_tone1_tone5}{1F469 1F3FB 200D 2764 200D 1F468 1F3FF}
+\bxce@do{couple_with_heart_woman_man_tone2}{1F469 1F3FC 200D 2764 200D 1F468 1F3FC}
+\bxce@do{couple_with_heart_woman_man_tone2_tone1}{1F469 1F3FC 200D 2764 200D 1F468 1F3FB}
+\bxce@do{couple_with_heart_woman_man_tone2_tone3}{1F469 1F3FC 200D 2764 200D 1F468 1F3FD}
+\bxce@do{couple_with_heart_woman_man_tone2_tone4}{1F469 1F3FC 200D 2764 200D 1F468 1F3FE}
+\bxce@do{couple_with_heart_woman_man_tone2_tone5}{1F469 1F3FC 200D 2764 200D 1F468 1F3FF}
+\bxce@do{couple_with_heart_woman_man_tone3}{1F469 1F3FD 200D 2764 200D 1F468 1F3FD}
+\bxce@do{couple_with_heart_woman_man_tone3_tone1}{1F469 1F3FD 200D 2764 200D 1F468 1F3FB}
+\bxce@do{couple_with_heart_woman_man_tone3_tone2}{1F469 1F3FD 200D 2764 200D 1F468 1F3FC}
+\bxce@do{couple_with_heart_woman_man_tone3_tone4}{1F469 1F3FD 200D 2764 200D 1F468 1F3FE}
+\bxce@do{couple_with_heart_woman_man_tone3_tone5}{1F469 1F3FD 200D 2764 200D 1F468 1F3FF}
+\bxce@do{couple_with_heart_woman_man_tone4}{1F469 1F3FE 200D 2764 200D 1F468 1F3FE}
+\bxce@do{couple_with_heart_woman_man_tone4_tone1}{1F469 1F3FE 200D 2764 200D 1F468 1F3FB}
+\bxce@do{couple_with_heart_woman_man_tone4_tone2}{1F469 1F3FE 200D 2764 200D 1F468 1F3FC}
+\bxce@do{couple_with_heart_woman_man_tone4_tone3}{1F469 1F3FE 200D 2764 200D 1F468 1F3FD}
+\bxce@do{couple_with_heart_woman_man_tone4_tone5}{1F469 1F3FE 200D 2764 200D 1F468 1F3FF}
+\bxce@do{couple_with_heart_woman_man_tone5}{1F469 1F3FF 200D 2764 200D 1F468 1F3FF}
+\bxce@do{couple_with_heart_woman_man_tone5_tone1}{1F469 1F3FF 200D 2764 200D 1F468 1F3FB}
+\bxce@do{couple_with_heart_woman_man_tone5_tone2}{1F469 1F3FF 200D 2764 200D 1F468 1F3FC}
+\bxce@do{couple_with_heart_woman_man_tone5_tone3}{1F469 1F3FF 200D 2764 200D 1F468 1F3FD}
+\bxce@do{couple_with_heart_woman_man_tone5_tone4}{1F469 1F3FF 200D 2764 200D 1F468 1F3FE}
+\bxce@do{couple_with_heart_woman_woman}{1F469 200D 2764 200D 1F469}
+\bxce@do{couple_with_heart_woman_woman_tone1}{1F469 1F3FB 200D 2764 200D 1F469 1F3FB}
+\bxce@do{couple_with_heart_woman_woman_tone1_tone2}{1F469 1F3FB 200D 2764 200D 1F469 1F3FC}
+\bxce@do{couple_with_heart_woman_woman_tone1_tone3}{1F469 1F3FB 200D 2764 200D 1F469 1F3FD}
+\bxce@do{couple_with_heart_woman_woman_tone1_tone4}{1F469 1F3FB 200D 2764 200D 1F469 1F3FE}
+\bxce@do{couple_with_heart_woman_woman_tone1_tone5}{1F469 1F3FB 200D 2764 200D 1F469 1F3FF}
+\bxce@do{couple_with_heart_woman_woman_tone2}{1F469 1F3FC 200D 2764 200D 1F469 1F3FC}
+\bxce@do{couple_with_heart_woman_woman_tone2_tone1}{1F469 1F3FC 200D 2764 200D 1F469 1F3FB}
+\bxce@do{couple_with_heart_woman_woman_tone2_tone3}{1F469 1F3FC 200D 2764 200D 1F469 1F3FD}
+\bxce@do{couple_with_heart_woman_woman_tone2_tone4}{1F469 1F3FC 200D 2764 200D 1F469 1F3FE}
+\bxce@do{couple_with_heart_woman_woman_tone2_tone5}{1F469 1F3FC 200D 2764 200D 1F469 1F3FF}
+\bxce@do{couple_with_heart_woman_woman_tone3}{1F469 1F3FD 200D 2764 200D 1F469 1F3FD}
+\bxce@do{couple_with_heart_woman_woman_tone3_tone1}{1F469 1F3FD 200D 2764 200D 1F469 1F3FB}
+\bxce@do{couple_with_heart_woman_woman_tone3_tone2}{1F469 1F3FD 200D 2764 200D 1F469 1F3FC}
+\bxce@do{couple_with_heart_woman_woman_tone3_tone4}{1F469 1F3FD 200D 2764 200D 1F469 1F3FE}
+\bxce@do{couple_with_heart_woman_woman_tone3_tone5}{1F469 1F3FD 200D 2764 200D 1F469 1F3FF}
+\bxce@do{couple_with_heart_woman_woman_tone4}{1F469 1F3FE 200D 2764 200D 1F469 1F3FE}
+\bxce@do{couple_with_heart_woman_woman_tone4_tone1}{1F469 1F3FE 200D 2764 200D 1F469 1F3FB}
+\bxce@do{couple_with_heart_woman_woman_tone4_tone2}{1F469 1F3FE 200D 2764 200D 1F469 1F3FC}
+\bxce@do{couple_with_heart_woman_woman_tone4_tone3}{1F469 1F3FE 200D 2764 200D 1F469 1F3FD}
+\bxce@do{couple_with_heart_woman_woman_tone4_tone5}{1F469 1F3FE 200D 2764 200D 1F469 1F3FF}
+\bxce@do{couple_with_heart_woman_woman_tone5}{1F469 1F3FF 200D 2764 200D 1F469 1F3FF}
+\bxce@do{couple_with_heart_woman_woman_tone5_tone1}{1F469 1F3FF 200D 2764 200D 1F469 1F3FB}
+\bxce@do{couple_with_heart_woman_woman_tone5_tone2}{1F469 1F3FF 200D 2764 200D 1F469 1F3FC}
+\bxce@do{couple_with_heart_woman_woman_tone5_tone3}{1F469 1F3FF 200D 2764 200D 1F469 1F3FD}
+\bxce@do{couple_with_heart_woman_woman_tone5_tone4}{1F469 1F3FF 200D 2764 200D 1F469 1F3FE}
+\bxce@do{couple_ww}{1F469 200D 2764 200D 1F469}
+\bxce@do{couplekiss}{1F48F}
+\bxce@do{cow}{1F42E}
+\bxce@do{cow2}{1F404}
+\bxce@do{cowboy}{1F920}
+\bxce@do{crab}{1F980}
+\bxce@do{crayon}{1F58D}
+\bxce@do{credit_card}{1F4B3}
+\bxce@do{crescent_moon}{1F319}
+\bxce@do{cricket}{1F997}
+\bxce@do{cricket_game}{1F3CF}
+\bxce@do{crocodile}{1F40A}
+\bxce@do{croissant}{1F950}
+\bxce@do{cross}{271D}
+\bxce@do{crossed_flags}{1F38C}
+\bxce@do{crossed_swords}{2694}
+\bxce@do{crown}{1F451}
+\bxce@do{cruise_ship}{1F6F3}
+\bxce@do{cry}{1F622}
+\bxce@do{crying_cat_face}{1F63F}
+\bxce@do{crystal_ball}{1F52E}
+\bxce@do{cucumber}{1F952}
+\bxce@do{cup_with_straw}{1F964}
+\bxce@do{cupcake}{1F9C1}
+\bxce@do{cupid}{1F498}
+\bxce@do{curling_stone}{1F94C}
+\bxce@do{curly_haired}{1F9B1}
+\bxce@do{curly_loop}{27B0}
+\bxce@do{currency_exchange}{1F4B1}
+\bxce@do{curry}{1F35B}
+\bxce@do{custard}{1F36E}
+\bxce@do{customs}{1F6C3}
+\bxce@do{cut_of_meat}{1F969}
+\bxce@do{cyclone}{1F300}
+\or %[1]
+\bxce@do{dagger}{1F5E1}
+\bxce@do{dancer}{1F483}
+\bxce@do{dancer_tone1}{1F483 1F3FB}
+\bxce@do{dancer_tone2}{1F483 1F3FC}
+\bxce@do{dancer_tone3}{1F483 1F3FD}
+\bxce@do{dancer_tone4}{1F483 1F3FE}
+\bxce@do{dancer_tone5}{1F483 1F3FF}
+\bxce@do{dango}{1F361}
+\bxce@do{dark_sunglasses}{1F576}
+\bxce@do{dart}{1F3AF}
+\bxce@do{dash}{1F4A8}
+\bxce@do{date}{1F4C5}
+\bxce@do{deaf_man}{1F9CF 200D 2642}
+\bxce@do{deaf_man_tone1}{1F9CF 1F3FB 200D 2642}
+\bxce@do{deaf_man_tone2}{1F9CF 1F3FC 200D 2642}
+\bxce@do{deaf_man_tone3}{1F9CF 1F3FD 200D 2642}
+\bxce@do{deaf_man_tone4}{1F9CF 1F3FE 200D 2642}
+\bxce@do{deaf_man_tone5}{1F9CF 1F3FF 200D 2642}
+\bxce@do{deaf_person}{1F9CF}
+\bxce@do{deaf_person_tone1}{1F9CF 1F3FB}
+\bxce@do{deaf_person_tone2}{1F9CF 1F3FC}
+\bxce@do{deaf_person_tone3}{1F9CF 1F3FD}
+\bxce@do{deaf_person_tone4}{1F9CF 1F3FE}
+\bxce@do{deaf_person_tone5}{1F9CF 1F3FF}
+\bxce@do{deaf_woman}{1F9CF 200D 2640}
+\bxce@do{deaf_woman_tone1}{1F9CF 1F3FB 200D 2640}
+\bxce@do{deaf_woman_tone2}{1F9CF 1F3FC 200D 2640}
+\bxce@do{deaf_woman_tone3}{1F9CF 1F3FD 200D 2640}
+\bxce@do{deaf_woman_tone4}{1F9CF 1F3FE 200D 2640}
+\bxce@do{deaf_woman_tone5}{1F9CF 1F3FF 200D 2640}
+\bxce@do{deciduous_tree}{1F333}
+\bxce@do{deer}{1F98C}
+\bxce@do{department_store}{1F3EC}
+\bxce@do{desert}{1F3DC}
+\bxce@do{desktop}{1F5A5}
+\bxce@do{detective}{1F575}
+\bxce@do{detective_tone1}{1F575 1F3FB}
+\bxce@do{detective_tone2}{1F575 1F3FC}
+\bxce@do{detective_tone3}{1F575 1F3FD}
+\bxce@do{detective_tone4}{1F575 1F3FE}
+\bxce@do{detective_tone5}{1F575 1F3FF}
+\bxce@do{diamond_shape_with_a_dot_inside}{1F4A0}
+\bxce@do{diamonds}{2666}
+\bxce@do{digit_eight}{38}%NA
+\bxce@do{digit_five}{35}%NA
+\bxce@do{digit_four}{34}%NA
+\bxce@do{digit_nine}{39}%NA
+\bxce@do{digit_one}{31}%NA
+\bxce@do{digit_seven}{37}%NA
+\bxce@do{digit_six}{36}%NA
+\bxce@do{digit_three}{33}%NA
+\bxce@do{digit_two}{32}%NA
+\bxce@do{digit_zero}{30}%NA
+\bxce@do{disappointed}{1F61E}
+\bxce@do{disappointed_relieved}{1F625}
+\bxce@do{disguised_face}{1F978}
+\bxce@do{dividers}{1F5C2}
+\bxce@do{diving_mask}{1F93F}
+\bxce@do{diya_lamp}{1FA94}
+\bxce@do{dizzy}{1F4AB}
+\bxce@do{dizzy_face}{1F635}
+\bxce@do{dna}{1F9EC}
+\bxce@do{do_not_litter}{1F6AF}
+\bxce@do{dodo}{1F9A4}
+\bxce@do{dog}{1F436}
+\bxce@do{dog2}{1F415}
+\bxce@do{dollar}{1F4B5}
+\bxce@do{dolls}{1F38E}
+\bxce@do{dolphin}{1F42C}
+\bxce@do{door}{1F6AA}
+\bxce@do{doughnut}{1F369}
+\bxce@do{dove}{1F54A}
+\bxce@do{dragon}{1F409}
+\bxce@do{dragon_face}{1F432}
+\bxce@do{dress}{1F457}
+\bxce@do{dromedary_camel}{1F42A}
+\bxce@do{drooling_face}{1F924}
+\bxce@do{drop_of_blood}{1FA78}
+\bxce@do{droplet}{1F4A7}
+\bxce@do{drum}{1F941}
+\bxce@do{duck}{1F986}
+\bxce@do{dumpling}{1F95F}
+\bxce@do{dvd}{1F4C0}
+\bxce@do{e-mail}{1F4E7}
+\bxce@do{eagle}{1F985}
+\bxce@do{ear}{1F442}
+\bxce@do{ear_of_rice}{1F33E}
+\bxce@do{ear_tone1}{1F442 1F3FB}
+\bxce@do{ear_tone2}{1F442 1F3FC}
+\bxce@do{ear_tone3}{1F442 1F3FD}
+\bxce@do{ear_tone4}{1F442 1F3FE}
+\bxce@do{ear_tone5}{1F442 1F3FF}
+\bxce@do{ear_with_hearing_aid}{1F9BB}
+\bxce@do{ear_with_hearing_aid_tone1}{1F9BB 1F3FB}
+\bxce@do{ear_with_hearing_aid_tone2}{1F9BB 1F3FC}
+\bxce@do{ear_with_hearing_aid_tone3}{1F9BB 1F3FD}
+\bxce@do{ear_with_hearing_aid_tone4}{1F9BB 1F3FE}
+\bxce@do{ear_with_hearing_aid_tone5}{1F9BB 1F3FF}
+\bxce@do{earth_africa}{1F30D}
+\bxce@do{earth_americas}{1F30E}
+\bxce@do{earth_asia}{1F30F}
+\bxce@do{egg}{1F95A}
+\bxce@do{eggplant}{1F346}
+\bxce@do{eight}{38 20E3}
+\bxce@do{eight_pointed_black_star}{2734}
+\bxce@do{eight_spoked_asterisk}{2733}
+\bxce@do{eject}{23CF}
+\bxce@do{electric_plug}{1F50C}
+\bxce@do{elephant}{1F418}
+\bxce@do{elevator}{1F6D7}
+\bxce@do{elf}{1F9DD}
+\bxce@do{elf_tone1}{1F9DD 1F3FB}
+\bxce@do{elf_tone2}{1F9DD 1F3FC}
+\bxce@do{elf_tone3}{1F9DD 1F3FD}
+\bxce@do{elf_tone4}{1F9DD 1F3FE}
+\bxce@do{elf_tone5}{1F9DD 1F3FF}
+\bxce@do{end}{1F51A}
+\bxce@do{england}{1F3F4 E0067 E0062 E0065 E006E E0067 E007F}
+\bxce@do{envelope}{2709}
+\bxce@do{envelope_with_arrow}{1F4E9}
+\bxce@do{euro}{1F4B6}
+\bxce@do{european_castle}{1F3F0}
+\bxce@do{european_post_office}{1F3E4}
+\bxce@do{evergreen_tree}{1F332}
+\bxce@do{exclamation}{2757}
+\bxce@do{exploding_head}{1F92F}
+\bxce@do{expressionless}{1F611}
+\bxce@do{eye}{1F441}
+\bxce@do{eye_in_speech_bubble}{1F441 200D 1F5E8}
+\bxce@do{eyeglasses}{1F453}
+\bxce@do{eyes}{1F440}
+\bxce@do{face_exhaling}{1F62E 200D 1F4A8}
+\bxce@do{face_in_clouds}{1F636 200D 1F32B}
+\bxce@do{face_vomiting}{1F92E}
+\bxce@do{face_with_hand_over_mouth}{1F92D}
+\bxce@do{face_with_monocle}{1F9D0}
+\bxce@do{face_with_raised_eyebrow}{1F928}
+\bxce@do{face_with_spiral_eyes}{1F635 200D 1F4AB}
+\bxce@do{face_with_symbols_over_mouth}{1F92C}
+\bxce@do{factory}{1F3ED}
+\bxce@do{factory_worker}{1F9D1 200D 1F3ED}
+\bxce@do{factory_worker_tone1}{1F9D1 1F3FB 200D 1F3ED}
+\bxce@do{factory_worker_tone2}{1F9D1 1F3FC 200D 1F3ED}
+\bxce@do{factory_worker_tone3}{1F9D1 1F3FD 200D 1F3ED}
+\bxce@do{factory_worker_tone4}{1F9D1 1F3FE 200D 1F3ED}
+\bxce@do{factory_worker_tone5}{1F9D1 1F3FF 200D 1F3ED}
+\bxce@do{fairy}{1F9DA}
+\bxce@do{fairy_tone1}{1F9DA 1F3FB}
+\bxce@do{fairy_tone2}{1F9DA 1F3FC}
+\bxce@do{fairy_tone3}{1F9DA 1F3FD}
+\bxce@do{fairy_tone4}{1F9DA 1F3FE}
+\bxce@do{fairy_tone5}{1F9DA 1F3FF}
+\bxce@do{falafel}{1F9C6}
+\bxce@do{fallen_leaf}{1F342}
+\bxce@do{family}{1F46A}
+\bxce@do{family_man_boy}{1F468 200D 1F466}
+\bxce@do{family_man_boy_boy}{1F468 200D 1F466 200D 1F466}
+\bxce@do{family_man_girl}{1F468 200D 1F467}
+\bxce@do{family_man_girl_boy}{1F468 200D 1F467 200D 1F466}
+\bxce@do{family_man_girl_girl}{1F468 200D 1F467 200D 1F467}
+\bxce@do{family_man_woman_boy}{1F468 200D 1F469 200D 1F466}
+\bxce@do{family_mmb}{1F468 200D 1F468 200D 1F466}
+\bxce@do{family_mmbb}{1F468 200D 1F468 200D 1F466 200D 1F466}
+\bxce@do{family_mmg}{1F468 200D 1F468 200D 1F467}
+\bxce@do{family_mmgb}{1F468 200D 1F468 200D 1F467 200D 1F466}
+\bxce@do{family_mmgg}{1F468 200D 1F468 200D 1F467 200D 1F467}
+\bxce@do{family_mwbb}{1F468 200D 1F469 200D 1F466 200D 1F466}
+\bxce@do{family_mwg}{1F468 200D 1F469 200D 1F467}
+\bxce@do{family_mwgb}{1F468 200D 1F469 200D 1F467 200D 1F466}
+\bxce@do{family_mwgg}{1F468 200D 1F469 200D 1F467 200D 1F467}
+\bxce@do{family_woman_boy}{1F469 200D 1F466}
+\bxce@do{family_woman_boy_boy}{1F469 200D 1F466 200D 1F466}
+\bxce@do{family_woman_girl}{1F469 200D 1F467}
+\bxce@do{family_woman_girl_boy}{1F469 200D 1F467 200D 1F466}
+\bxce@do{family_woman_girl_girl}{1F469 200D 1F467 200D 1F467}
+\bxce@do{family_wwb}{1F469 200D 1F469 200D 1F466}
+\bxce@do{family_wwbb}{1F469 200D 1F469 200D 1F466 200D 1F466}
+\bxce@do{family_wwg}{1F469 200D 1F469 200D 1F467}
+\bxce@do{family_wwgb}{1F469 200D 1F469 200D 1F467 200D 1F466}
+\bxce@do{family_wwgg}{1F469 200D 1F469 200D 1F467 200D 1F467}
+\bxce@do{farmer}{1F9D1 200D 1F33E}
+\bxce@do{farmer_tone1}{1F9D1 1F3FB 200D 1F33E}
+\bxce@do{farmer_tone2}{1F9D1 1F3FC 200D 1F33E}
+\bxce@do{farmer_tone3}{1F9D1 1F3FD 200D 1F33E}
+\bxce@do{farmer_tone4}{1F9D1 1F3FE 200D 1F33E}
+\bxce@do{farmer_tone5}{1F9D1 1F3FF 200D 1F33E}
+\bxce@do{fast_forward}{23E9}
+\bxce@do{fax}{1F4E0}
+\bxce@do{fearful}{1F628}
+\bxce@do{feather}{1FAB6}
+\bxce@do{feet}{1F43E}
+\bxce@do{female_sign}{2640}
+\bxce@do{ferris_wheel}{1F3A1}
+\bxce@do{ferry}{26F4}
+\bxce@do{field_hockey}{1F3D1}
+\bxce@do{file_cabinet}{1F5C4}
+\bxce@do{file_folder}{1F4C1}
+\bxce@do{film_frames}{1F39E}
+\bxce@do{fingers_crossed}{1F91E}
+\bxce@do{fingers_crossed_tone1}{1F91E 1F3FB}
+\bxce@do{fingers_crossed_tone2}{1F91E 1F3FC}
+\bxce@do{fingers_crossed_tone3}{1F91E 1F3FD}
+\bxce@do{fingers_crossed_tone4}{1F91E 1F3FE}
+\bxce@do{fingers_crossed_tone5}{1F91E 1F3FF}
+\bxce@do{fire}{1F525}
+\bxce@do{fire_engine}{1F692}
+\bxce@do{fire_extinguisher}{1F9EF}
+\bxce@do{firecracker}{1F9E8}
+\bxce@do{firefighter}{1F9D1 200D 1F692}
+\bxce@do{firefighter_tone1}{1F9D1 1F3FB 200D 1F692}
+\bxce@do{firefighter_tone2}{1F9D1 1F3FC 200D 1F692}
+\bxce@do{firefighter_tone3}{1F9D1 1F3FD 200D 1F692}
+\bxce@do{firefighter_tone4}{1F9D1 1F3FE 200D 1F692}
+\bxce@do{firefighter_tone5}{1F9D1 1F3FF 200D 1F692}
+\bxce@do{fireworks}{1F386}
+\bxce@do{first_place}{1F947}
+\bxce@do{first_quarter_moon}{1F313}
+\bxce@do{first_quarter_moon_with_face}{1F31B}
+\bxce@do{fish}{1F41F}
+\bxce@do{fish_cake}{1F365}
+\bxce@do{fishing_pole_and_fish}{1F3A3}
+\bxce@do{fist}{270A}
+\bxce@do{fist_tone1}{270A 1F3FB}
+\bxce@do{fist_tone2}{270A 1F3FC}
+\bxce@do{fist_tone3}{270A 1F3FD}
+\bxce@do{fist_tone4}{270A 1F3FE}
+\bxce@do{fist_tone5}{270A 1F3FF}
+\bxce@do{five}{35 20E3}
+\bxce@do{flag_ac}{1F1E6 1F1E8}
+\bxce@do{flag_ad}{1F1E6 1F1E9}
+\bxce@do{flag_ae}{1F1E6 1F1EA}
+\bxce@do{flag_af}{1F1E6 1F1EB}
+\bxce@do{flag_ag}{1F1E6 1F1EC}
+\bxce@do{flag_ai}{1F1E6 1F1EE}
+\bxce@do{flag_al}{1F1E6 1F1F1}
+\bxce@do{flag_am}{1F1E6 1F1F2}
+\bxce@do{flag_ao}{1F1E6 1F1F4}
+\bxce@do{flag_aq}{1F1E6 1F1F6}
+\bxce@do{flag_ar}{1F1E6 1F1F7}
+\bxce@do{flag_as}{1F1E6 1F1F8}
+\bxce@do{flag_at}{1F1E6 1F1F9}
+\bxce@do{flag_au}{1F1E6 1F1FA}
+\bxce@do{flag_aw}{1F1E6 1F1FC}
+\bxce@do{flag_ax}{1F1E6 1F1FD}
+\bxce@do{flag_az}{1F1E6 1F1FF}
+\bxce@do{flag_ba}{1F1E7 1F1E6}
+\bxce@do{flag_bb}{1F1E7 1F1E7}
+\bxce@do{flag_bd}{1F1E7 1F1E9}
+\bxce@do{flag_be}{1F1E7 1F1EA}
+\bxce@do{flag_bf}{1F1E7 1F1EB}
+\bxce@do{flag_bg}{1F1E7 1F1EC}
+\bxce@do{flag_bh}{1F1E7 1F1ED}
+\bxce@do{flag_bi}{1F1E7 1F1EE}
+\bxce@do{flag_bj}{1F1E7 1F1EF}
+\bxce@do{flag_bl}{1F1E7 1F1F1}
+\bxce@do{flag_black}{1F3F4}
+\bxce@do{flag_bm}{1F1E7 1F1F2}
+\bxce@do{flag_bn}{1F1E7 1F1F3}
+\bxce@do{flag_bo}{1F1E7 1F1F4}
+\bxce@do{flag_bq}{1F1E7 1F1F6}
+\bxce@do{flag_br}{1F1E7 1F1F7}
+\bxce@do{flag_bs}{1F1E7 1F1F8}
+\bxce@do{flag_bt}{1F1E7 1F1F9}
+\bxce@do{flag_bv}{1F1E7 1F1FB}
+\bxce@do{flag_bw}{1F1E7 1F1FC}
+\bxce@do{flag_by}{1F1E7 1F1FE}
+\bxce@do{flag_bz}{1F1E7 1F1FF}
+\bxce@do{flag_ca}{1F1E8 1F1E6}
+\bxce@do{flag_cc}{1F1E8 1F1E8}
+\bxce@do{flag_cd}{1F1E8 1F1E9}
+\bxce@do{flag_cf}{1F1E8 1F1EB}
+\bxce@do{flag_cg}{1F1E8 1F1EC}
+\bxce@do{flag_ch}{1F1E8 1F1ED}
+\bxce@do{flag_ci}{1F1E8 1F1EE}
+\bxce@do{flag_ck}{1F1E8 1F1F0}
+\bxce@do{flag_cl}{1F1E8 1F1F1}
+\bxce@do{flag_cm}{1F1E8 1F1F2}
+\bxce@do{flag_cn}{1F1E8 1F1F3}
+\bxce@do{flag_co}{1F1E8 1F1F4}
+\bxce@do{flag_cp}{1F1E8 1F1F5}
+\bxce@do{flag_cr}{1F1E8 1F1F7}
+\bxce@do{flag_cu}{1F1E8 1F1FA}
+\bxce@do{flag_cv}{1F1E8 1F1FB}
+\bxce@do{flag_cw}{1F1E8 1F1FC}
+\bxce@do{flag_cx}{1F1E8 1F1FD}
+\bxce@do{flag_cy}{1F1E8 1F1FE}
+\bxce@do{flag_cz}{1F1E8 1F1FF}
+\bxce@do{flag_de}{1F1E9 1F1EA}
+\bxce@do{flag_dg}{1F1E9 1F1EC}
+\bxce@do{flag_dj}{1F1E9 1F1EF}
+\bxce@do{flag_dk}{1F1E9 1F1F0}
+\bxce@do{flag_dm}{1F1E9 1F1F2}
+\bxce@do{flag_do}{1F1E9 1F1F4}
+\bxce@do{flag_dz}{1F1E9 1F1FF}
+\bxce@do{flag_ea}{1F1EA 1F1E6}
+\bxce@do{flag_ec}{1F1EA 1F1E8}
+\bxce@do{flag_ee}{1F1EA 1F1EA}
+\bxce@do{flag_eg}{1F1EA 1F1EC}
+\bxce@do{flag_eh}{1F1EA 1F1ED}
+\bxce@do{flag_er}{1F1EA 1F1F7}
+\bxce@do{flag_es}{1F1EA 1F1F8}
+\bxce@do{flag_et}{1F1EA 1F1F9}
+\bxce@do{flag_eu}{1F1EA 1F1FA}
+\bxce@do{flag_fi}{1F1EB 1F1EE}
+\bxce@do{flag_fj}{1F1EB 1F1EF}
+\bxce@do{flag_fk}{1F1EB 1F1F0}
+\bxce@do{flag_fm}{1F1EB 1F1F2}
+\bxce@do{flag_fo}{1F1EB 1F1F4}
+\bxce@do{flag_fr}{1F1EB 1F1F7}
+\bxce@do{flag_ga}{1F1EC 1F1E6}
+\bxce@do{flag_gb}{1F1EC 1F1E7}
+\bxce@do{flag_gd}{1F1EC 1F1E9}
+\bxce@do{flag_ge}{1F1EC 1F1EA}
+\bxce@do{flag_gf}{1F1EC 1F1EB}
+\bxce@do{flag_gg}{1F1EC 1F1EC}
+\bxce@do{flag_gh}{1F1EC 1F1ED}
+\bxce@do{flag_gi}{1F1EC 1F1EE}
+\bxce@do{flag_gl}{1F1EC 1F1F1}
+\bxce@do{flag_gm}{1F1EC 1F1F2}
+\bxce@do{flag_gn}{1F1EC 1F1F3}
+\bxce@do{flag_gp}{1F1EC 1F1F5}
+\bxce@do{flag_gq}{1F1EC 1F1F6}
+\bxce@do{flag_gr}{1F1EC 1F1F7}
+\bxce@do{flag_gs}{1F1EC 1F1F8}
+\bxce@do{flag_gt}{1F1EC 1F1F9}
+\bxce@do{flag_gu}{1F1EC 1F1FA}
+\bxce@do{flag_gw}{1F1EC 1F1FC}
+\bxce@do{flag_gy}{1F1EC 1F1FE}
+\bxce@do{flag_hk}{1F1ED 1F1F0}
+\bxce@do{flag_hm}{1F1ED 1F1F2}
+\bxce@do{flag_hn}{1F1ED 1F1F3}
+\bxce@do{flag_hr}{1F1ED 1F1F7}
+\bxce@do{flag_ht}{1F1ED 1F1F9}
+\bxce@do{flag_hu}{1F1ED 1F1FA}
+\bxce@do{flag_ic}{1F1EE 1F1E8}
+\bxce@do{flag_id}{1F1EE 1F1E9}
+\bxce@do{flag_ie}{1F1EE 1F1EA}
+\bxce@do{flag_il}{1F1EE 1F1F1}
+\bxce@do{flag_im}{1F1EE 1F1F2}
+\bxce@do{flag_in}{1F1EE 1F1F3}
+\bxce@do{flag_io}{1F1EE 1F1F4}
+\bxce@do{flag_iq}{1F1EE 1F1F6}
+\bxce@do{flag_ir}{1F1EE 1F1F7}
+\bxce@do{flag_is}{1F1EE 1F1F8}
+\bxce@do{flag_it}{1F1EE 1F1F9}
+\bxce@do{flag_je}{1F1EF 1F1EA}
+\bxce@do{flag_jm}{1F1EF 1F1F2}
+\bxce@do{flag_jo}{1F1EF 1F1F4}
+\bxce@do{flag_jp}{1F1EF 1F1F5}
+\bxce@do{flag_ke}{1F1F0 1F1EA}
+\bxce@do{flag_kg}{1F1F0 1F1EC}
+\bxce@do{flag_kh}{1F1F0 1F1ED}
+\bxce@do{flag_ki}{1F1F0 1F1EE}
+\bxce@do{flag_km}{1F1F0 1F1F2}
+\bxce@do{flag_kn}{1F1F0 1F1F3}
+\bxce@do{flag_kp}{1F1F0 1F1F5}
+\bxce@do{flag_kr}{1F1F0 1F1F7}
+\bxce@do{flag_kw}{1F1F0 1F1FC}
+\bxce@do{flag_ky}{1F1F0 1F1FE}
+\bxce@do{flag_kz}{1F1F0 1F1FF}
+\bxce@do{flag_la}{1F1F1 1F1E6}
+\bxce@do{flag_lb}{1F1F1 1F1E7}
+\bxce@do{flag_lc}{1F1F1 1F1E8}
+\bxce@do{flag_li}{1F1F1 1F1EE}
+\bxce@do{flag_lk}{1F1F1 1F1F0}
+\bxce@do{flag_lr}{1F1F1 1F1F7}
+\bxce@do{flag_ls}{1F1F1 1F1F8}
+\bxce@do{flag_lt}{1F1F1 1F1F9}
+\bxce@do{flag_lu}{1F1F1 1F1FA}
+\bxce@do{flag_lv}{1F1F1 1F1FB}
+\bxce@do{flag_ly}{1F1F1 1F1FE}
+\bxce@do{flag_ma}{1F1F2 1F1E6}
+\bxce@do{flag_mc}{1F1F2 1F1E8}
+\bxce@do{flag_md}{1F1F2 1F1E9}
+\bxce@do{flag_me}{1F1F2 1F1EA}
+\bxce@do{flag_mf}{1F1F2 1F1EB}
+\bxce@do{flag_mg}{1F1F2 1F1EC}
+\bxce@do{flag_mh}{1F1F2 1F1ED}
+\bxce@do{flag_mk}{1F1F2 1F1F0}
+\bxce@do{flag_ml}{1F1F2 1F1F1}
+\bxce@do{flag_mm}{1F1F2 1F1F2}
+\bxce@do{flag_mn}{1F1F2 1F1F3}
+\bxce@do{flag_mo}{1F1F2 1F1F4}
+\bxce@do{flag_mp}{1F1F2 1F1F5}
+\bxce@do{flag_mq}{1F1F2 1F1F6}
+\bxce@do{flag_mr}{1F1F2 1F1F7}
+\bxce@do{flag_ms}{1F1F2 1F1F8}
+\bxce@do{flag_mt}{1F1F2 1F1F9}
+\bxce@do{flag_mu}{1F1F2 1F1FA}
+\bxce@do{flag_mv}{1F1F2 1F1FB}
+\bxce@do{flag_mw}{1F1F2 1F1FC}
+\bxce@do{flag_mx}{1F1F2 1F1FD}
+\bxce@do{flag_my}{1F1F2 1F1FE}
+\bxce@do{flag_mz}{1F1F2 1F1FF}
+\bxce@do{flag_na}{1F1F3 1F1E6}
+\bxce@do{flag_nc}{1F1F3 1F1E8}
+\bxce@do{flag_ne}{1F1F3 1F1EA}
+\bxce@do{flag_nf}{1F1F3 1F1EB}
+\bxce@do{flag_ng}{1F1F3 1F1EC}
+\bxce@do{flag_ni}{1F1F3 1F1EE}
+\bxce@do{flag_nl}{1F1F3 1F1F1}
+\bxce@do{flag_no}{1F1F3 1F1F4}
+\bxce@do{flag_np}{1F1F3 1F1F5}
+\bxce@do{flag_nr}{1F1F3 1F1F7}
+\bxce@do{flag_nu}{1F1F3 1F1FA}
+\bxce@do{flag_nz}{1F1F3 1F1FF}
+\bxce@do{flag_om}{1F1F4 1F1F2}
+\bxce@do{flag_pa}{1F1F5 1F1E6}
+\bxce@do{flag_pe}{1F1F5 1F1EA}
+\bxce@do{flag_pf}{1F1F5 1F1EB}
+\bxce@do{flag_pg}{1F1F5 1F1EC}
+\bxce@do{flag_ph}{1F1F5 1F1ED}
+\bxce@do{flag_pk}{1F1F5 1F1F0}
+\bxce@do{flag_pl}{1F1F5 1F1F1}
+\bxce@do{flag_pm}{1F1F5 1F1F2}
+\bxce@do{flag_pn}{1F1F5 1F1F3}
+\bxce@do{flag_pr}{1F1F5 1F1F7}
+\bxce@do{flag_ps}{1F1F5 1F1F8}
+\bxce@do{flag_pt}{1F1F5 1F1F9}
+\bxce@do{flag_pw}{1F1F5 1F1FC}
+\bxce@do{flag_py}{1F1F5 1F1FE}
+\bxce@do{flag_qa}{1F1F6 1F1E6}
+\bxce@do{flag_re}{1F1F7 1F1EA}
+\bxce@do{flag_ro}{1F1F7 1F1F4}
+\bxce@do{flag_rs}{1F1F7 1F1F8}
+\bxce@do{flag_ru}{1F1F7 1F1FA}
+\bxce@do{flag_rw}{1F1F7 1F1FC}
+\bxce@do{flag_sa}{1F1F8 1F1E6}
+\bxce@do{flag_sb}{1F1F8 1F1E7}
+\bxce@do{flag_sc}{1F1F8 1F1E8}
+\bxce@do{flag_sd}{1F1F8 1F1E9}
+\bxce@do{flag_se}{1F1F8 1F1EA}
+\bxce@do{flag_sg}{1F1F8 1F1EC}
+\bxce@do{flag_sh}{1F1F8 1F1ED}
+\bxce@do{flag_si}{1F1F8 1F1EE}
+\bxce@do{flag_sj}{1F1F8 1F1EF}
+\bxce@do{flag_sk}{1F1F8 1F1F0}
+\bxce@do{flag_sl}{1F1F8 1F1F1}
+\bxce@do{flag_sm}{1F1F8 1F1F2}
+\bxce@do{flag_sn}{1F1F8 1F1F3}
+\bxce@do{flag_so}{1F1F8 1F1F4}
+\bxce@do{flag_sr}{1F1F8 1F1F7}
+\bxce@do{flag_ss}{1F1F8 1F1F8}
+\bxce@do{flag_st}{1F1F8 1F1F9}
+\bxce@do{flag_sv}{1F1F8 1F1FB}
+\bxce@do{flag_sx}{1F1F8 1F1FD}
+\bxce@do{flag_sy}{1F1F8 1F1FE}
+\bxce@do{flag_sz}{1F1F8 1F1FF}
+\bxce@do{flag_ta}{1F1F9 1F1E6}
+\bxce@do{flag_tc}{1F1F9 1F1E8}
+\bxce@do{flag_td}{1F1F9 1F1E9}
+\bxce@do{flag_tf}{1F1F9 1F1EB}
+\bxce@do{flag_tg}{1F1F9 1F1EC}
+\bxce@do{flag_th}{1F1F9 1F1ED}
+\bxce@do{flag_tj}{1F1F9 1F1EF}
+\bxce@do{flag_tk}{1F1F9 1F1F0}
+\bxce@do{flag_tl}{1F1F9 1F1F1}
+\bxce@do{flag_tm}{1F1F9 1F1F2}
+\bxce@do{flag_tn}{1F1F9 1F1F3}
+\bxce@do{flag_to}{1F1F9 1F1F4}
+\bxce@do{flag_tr}{1F1F9 1F1F7}
+\bxce@do{flag_tt}{1F1F9 1F1F9}
+\bxce@do{flag_tv}{1F1F9 1F1FB}
+\bxce@do{flag_tw}{1F1F9 1F1FC}
+\bxce@do{flag_tz}{1F1F9 1F1FF}
+\bxce@do{flag_ua}{1F1FA 1F1E6}
+\bxce@do{flag_ug}{1F1FA 1F1EC}
+\bxce@do{flag_um}{1F1FA 1F1F2}
+\bxce@do{flag_us}{1F1FA 1F1F8}
+\bxce@do{flag_uy}{1F1FA 1F1FE}
+\bxce@do{flag_uz}{1F1FA 1F1FF}
+\bxce@do{flag_va}{1F1FB 1F1E6}
+\bxce@do{flag_vc}{1F1FB 1F1E8}
+\bxce@do{flag_ve}{1F1FB 1F1EA}
+\bxce@do{flag_vg}{1F1FB 1F1EC}
+\bxce@do{flag_vi}{1F1FB 1F1EE}
+\bxce@do{flag_vn}{1F1FB 1F1F3}
+\bxce@do{flag_vu}{1F1FB 1F1FA}
+\bxce@do{flag_wf}{1F1FC 1F1EB}
+\bxce@do{flag_white}{1F3F3}
+\bxce@do{flag_ws}{1F1FC 1F1F8}
+\bxce@do{flag_xk}{1F1FD 1F1F0}
+\bxce@do{flag_ye}{1F1FE 1F1EA}
+\bxce@do{flag_yt}{1F1FE 1F1F9}
+\bxce@do{flag_za}{1F1FF 1F1E6}
+\bxce@do{flag_zm}{1F1FF 1F1F2}
+\bxce@do{flag_zw}{1F1FF 1F1FC}
+\bxce@do{flags}{1F38F}
+\bxce@do{flamingo}{1F9A9}
+\bxce@do{flashlight}{1F526}
+\bxce@do{flatbread}{1FAD3}
+\bxce@do{fleur-de-lis}{269C}
+\bxce@do{floppy_disk}{1F4BE}
+\bxce@do{flower_playing_cards}{1F3B4}
+\bxce@do{flushed}{1F633}
+\bxce@do{fly}{1FAB0}
+\bxce@do{flying_disc}{1F94F}
+\bxce@do{flying_saucer}{1F6F8}
+\bxce@do{fog}{1F32B}
+\bxce@do{foggy}{1F301}
+\bxce@do{fondue}{1FAD5}
+\bxce@do{foot}{1F9B6}
+\bxce@do{foot_tone1}{1F9B6 1F3FB}
+\bxce@do{foot_tone2}{1F9B6 1F3FC}
+\bxce@do{foot_tone3}{1F9B6 1F3FD}
+\bxce@do{foot_tone4}{1F9B6 1F3FE}
+\bxce@do{foot_tone5}{1F9B6 1F3FF}
+\bxce@do{football}{1F3C8}
+\bxce@do{footprints}{1F463}
+\bxce@do{fork_and_knife}{1F374}
+\bxce@do{fork_knife_plate}{1F37D}
+\bxce@do{fortune_cookie}{1F960}
+\bxce@do{fountain}{26F2}
+\bxce@do{four}{34 20E3}
+\bxce@do{four_leaf_clover}{1F340}
+\bxce@do{fox}{1F98A}
+\bxce@do{frame_photo}{1F5BC}
+\bxce@do{free}{1F193}
+\bxce@do{french_bread}{1F956}
+\bxce@do{fried_shrimp}{1F364}
+\bxce@do{fries}{1F35F}
+\bxce@do{frog}{1F438}
+\bxce@do{frowning}{1F626}
+\bxce@do{frowning2}{2639}
+\bxce@do{fuelpump}{26FD}
+\bxce@do{full_moon}{1F315}
+\bxce@do{full_moon_with_face}{1F31D}
+\or %[2]
+\bxce@do{game_die}{1F3B2}
+\bxce@do{garlic}{1F9C4}
+\bxce@do{gear}{2699}
+\bxce@do{gem}{1F48E}
+\bxce@do{gemini}{264A}
+\bxce@do{genie}{1F9DE}
+\bxce@do{ghost}{1F47B}
+\bxce@do{gift}{1F381}
+\bxce@do{gift_heart}{1F49D}
+\bxce@do{giraffe}{1F992}
+\bxce@do{girl}{1F467}
+\bxce@do{girl_tone1}{1F467 1F3FB}
+\bxce@do{girl_tone2}{1F467 1F3FC}
+\bxce@do{girl_tone3}{1F467 1F3FD}
+\bxce@do{girl_tone4}{1F467 1F3FE}
+\bxce@do{girl_tone5}{1F467 1F3FF}
+\bxce@do{globe_with_meridians}{1F310}
+\bxce@do{gloves}{1F9E4}
+\bxce@do{goal}{1F945}
+\bxce@do{goat}{1F410}
+\bxce@do{goggles}{1F97D}
+\bxce@do{golf}{26F3}
+\bxce@do{gorilla}{1F98D}
+\bxce@do{grapes}{1F347}
+\bxce@do{green_apple}{1F34F}
+\bxce@do{green_book}{1F4D7}
+\bxce@do{green_circle}{1F7E2}
+\bxce@do{green_heart}{1F49A}
+\bxce@do{green_square}{1F7E9}
+\bxce@do{grey_exclamation}{2755}
+\bxce@do{grey_question}{2754}
+\bxce@do{grimacing}{1F62C}
+\bxce@do{grin}{1F601}
+\bxce@do{grinning}{1F600}
+\bxce@do{guard}{1F482}
+\bxce@do{guard_tone1}{1F482 1F3FB}
+\bxce@do{guard_tone2}{1F482 1F3FC}
+\bxce@do{guard_tone3}{1F482 1F3FD}
+\bxce@do{guard_tone4}{1F482 1F3FE}
+\bxce@do{guard_tone5}{1F482 1F3FF}
+\bxce@do{guide_dog}{1F9AE}
+\bxce@do{guitar}{1F3B8}
+\bxce@do{gun}{1F52B}
+\bxce@do{hamburger}{1F354}
+\bxce@do{hammer}{1F528}
+\bxce@do{hammer_pick}{2692}
+\bxce@do{hamster}{1F439}
+\bxce@do{hand_splayed}{1F590}
+\bxce@do{hand_splayed_tone1}{1F590 1F3FB}
+\bxce@do{hand_splayed_tone2}{1F590 1F3FC}
+\bxce@do{hand_splayed_tone3}{1F590 1F3FD}
+\bxce@do{hand_splayed_tone4}{1F590 1F3FE}
+\bxce@do{hand_splayed_tone5}{1F590 1F3FF}
+\bxce@do{handbag}{1F45C}
+\bxce@do{handshake}{1F91D}
+\bxce@do{hash}{23 20E3}
+\bxce@do{hatched_chick}{1F425}
+\bxce@do{hatching_chick}{1F423}
+\bxce@do{head_bandage}{1F915}
+\bxce@do{headphones}{1F3A7}
+\bxce@do{headstone}{1FAA6}
+\bxce@do{health_worker}{1F9D1 200D 2695}
+\bxce@do{health_worker_tone1}{1F9D1 1F3FB 200D 2695}
+\bxce@do{health_worker_tone2}{1F9D1 1F3FC 200D 2695}
+\bxce@do{health_worker_tone3}{1F9D1 1F3FD 200D 2695}
+\bxce@do{health_worker_tone4}{1F9D1 1F3FE 200D 2695}
+\bxce@do{health_worker_tone5}{1F9D1 1F3FF 200D 2695}
+\bxce@do{hear_no_evil}{1F649}
+\bxce@do{heart}{2764}
+\bxce@do{heart_decoration}{1F49F}
+\bxce@do{heart_exclamation}{2763}
+\bxce@do{heart_eyes}{1F60D}
+\bxce@do{heart_eyes_cat}{1F63B}
+\bxce@do{heart_on_fire}{2764 200D 1F525}
+\bxce@do{heartbeat}{1F493}
+\bxce@do{heartpulse}{1F497}
+\bxce@do{hearts}{2665}
+\bxce@do{heavy_check_mark}{2714}
+\bxce@do{heavy_division_sign}{2797}
+\bxce@do{heavy_dollar_sign}{1F4B2}
+\bxce@do{heavy_minus_sign}{2796}
+\bxce@do{heavy_multiplication_x}{2716}
+\bxce@do{heavy_plus_sign}{2795}
+\bxce@do{hedgehog}{1F994}
+\bxce@do{helicopter}{1F681}
+\bxce@do{helmet_with_cross}{26D1}
+\bxce@do{herb}{1F33F}
+\bxce@do{hibiscus}{1F33A}
+\bxce@do{high_brightness}{1F506}
+\bxce@do{high_heel}{1F460}
+\bxce@do{hiking_boot}{1F97E}
+\bxce@do{hindu_temple}{1F6D5}
+\bxce@do{hippopotamus}{1F99B}
+\bxce@do{hockey}{1F3D2}
+\bxce@do{hole}{1F573}
+\bxce@do{homes}{1F3D8}
+\bxce@do{honey_pot}{1F36F}
+\bxce@do{hook}{1FA9D}
+\bxce@do{horse}{1F434}
+\bxce@do{horse_racing}{1F3C7}
+\bxce@do{horse_racing_tone1}{1F3C7 1F3FB}
+\bxce@do{horse_racing_tone2}{1F3C7 1F3FC}
+\bxce@do{horse_racing_tone3}{1F3C7 1F3FD}
+\bxce@do{horse_racing_tone4}{1F3C7 1F3FE}
+\bxce@do{horse_racing_tone5}{1F3C7 1F3FF}
+\bxce@do{hospital}{1F3E5}
+\bxce@do{hot_face}{1F975}
+\bxce@do{hot_pepper}{1F336}
+\bxce@do{hotdog}{1F32D}
+\bxce@do{hotel}{1F3E8}
+\bxce@do{hotsprings}{2668}
+\bxce@do{hourglass}{231B}
+\bxce@do{hourglass_flowing_sand}{23F3}
+\bxce@do{house}{1F3E0}
+\bxce@do{house_abandoned}{1F3DA}
+\bxce@do{house_with_garden}{1F3E1}
+\bxce@do{hugging}{1F917}
+\bxce@do{hushed}{1F62F}
+\bxce@do{hut}{1F6D6}
+\bxce@do{ice_cream}{1F368}
+\bxce@do{ice_cube}{1F9CA}
+\bxce@do{ice_skate}{26F8}
+\bxce@do{icecream}{1F366}
+\bxce@do{id}{1F194}
+\bxce@do{ideograph_advantage}{1F250}
+\bxce@do{imp}{1F47F}
+\bxce@do{inbox_tray}{1F4E5}
+\bxce@do{incoming_envelope}{1F4E8}
+\bxce@do{infinity}{267E}
+\bxce@do{information_source}{2139}
+\bxce@do{innocent}{1F607}
+\bxce@do{interrobang}{2049}
+\bxce@do{island}{1F3DD}
+\bxce@do{izakaya_lantern}{1F3EE}
+\bxce@do{jack_o_lantern}{1F383}
+\bxce@do{japan}{1F5FE}
+\bxce@do{japanese_castle}{1F3EF}
+\bxce@do{japanese_goblin}{1F47A}
+\bxce@do{japanese_ogre}{1F479}
+\bxce@do{jeans}{1F456}
+\bxce@do{jigsaw}{1F9E9}
+\bxce@do{joy}{1F602}
+\bxce@do{joy_cat}{1F639}
+\bxce@do{joystick}{1F579}
+\bxce@do{judge}{1F9D1 200D 2696}
+\bxce@do{judge_tone1}{1F9D1 1F3FB 200D 2696}
+\bxce@do{judge_tone2}{1F9D1 1F3FC 200D 2696}
+\bxce@do{judge_tone3}{1F9D1 1F3FD 200D 2696}
+\bxce@do{judge_tone4}{1F9D1 1F3FE 200D 2696}
+\bxce@do{judge_tone5}{1F9D1 1F3FF 200D 2696}
+\bxce@do{kaaba}{1F54B}
+\bxce@do{kangaroo}{1F998}
+\bxce@do{key}{1F511}
+\bxce@do{key2}{1F5DD}
+\bxce@do{keyboard}{2328}
+\bxce@do{keycap_ten}{1F51F}
+\bxce@do{kimono}{1F458}
+\bxce@do{kiss}{1F48B}
+\bxce@do{kiss_man_man}{1F468 200D 2764 200D 1F48B 200D 1F468}
+\bxce@do{kiss_man_man_tone1}{1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FB}
+\bxce@do{kiss_man_man_tone1_tone2}{1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FC}
+\bxce@do{kiss_man_man_tone1_tone3}{1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FD}
+\bxce@do{kiss_man_man_tone1_tone4}{1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FE}
+\bxce@do{kiss_man_man_tone1_tone5}{1F468 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FF}
+\bxce@do{kiss_man_man_tone2}{1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FC}
+\bxce@do{kiss_man_man_tone2_tone1}{1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FB}
+\bxce@do{kiss_man_man_tone2_tone3}{1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FD}
+\bxce@do{kiss_man_man_tone2_tone4}{1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FE}
+\bxce@do{kiss_man_man_tone2_tone5}{1F468 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FF}
+\bxce@do{kiss_man_man_tone3}{1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FD}
+\bxce@do{kiss_man_man_tone3_tone1}{1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FB}
+\bxce@do{kiss_man_man_tone3_tone2}{1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FC}
+\bxce@do{kiss_man_man_tone3_tone4}{1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FE}
+\bxce@do{kiss_man_man_tone3_tone5}{1F468 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FF}
+\bxce@do{kiss_man_man_tone4}{1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FE}
+\bxce@do{kiss_man_man_tone4_tone1}{1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FB}
+\bxce@do{kiss_man_man_tone4_tone2}{1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FC}
+\bxce@do{kiss_man_man_tone4_tone3}{1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FD}
+\bxce@do{kiss_man_man_tone4_tone5}{1F468 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FF}
+\bxce@do{kiss_man_man_tone5}{1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FF}
+\bxce@do{kiss_man_man_tone5_tone1}{1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FB}
+\bxce@do{kiss_man_man_tone5_tone2}{1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FC}
+\bxce@do{kiss_man_man_tone5_tone3}{1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FD}
+\bxce@do{kiss_man_man_tone5_tone4}{1F468 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FE}
+\bxce@do{kiss_mm}{1F468 200D 2764 200D 1F48B 200D 1F468}
+\bxce@do{kiss_person_person}{1F48F}
+\bxce@do{kiss_person_person_tone1}{1F48F 1F3FB}
+\bxce@do{kiss_person_person_tone1_tone2}{1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FC}
+\bxce@do{kiss_person_person_tone1_tone3}{1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FD}
+\bxce@do{kiss_person_person_tone1_tone4}{1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FE}
+\bxce@do{kiss_person_person_tone1_tone5}{1F9D1 1F3FB 200D 2764 200D 1F48B 200D 1F9D1 1F3FF}
+\bxce@do{kiss_person_person_tone2}{1F48F 1F3FC}
+\bxce@do{kiss_person_person_tone2_tone1}{1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FB}
+\bxce@do{kiss_person_person_tone2_tone3}{1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FD}
+\bxce@do{kiss_person_person_tone2_tone4}{1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FE}
+\bxce@do{kiss_person_person_tone2_tone5}{1F9D1 1F3FC 200D 2764 200D 1F48B 200D 1F9D1 1F3FF}
+\bxce@do{kiss_person_person_tone3}{1F48F 1F3FD}
+\bxce@do{kiss_person_person_tone3_tone1}{1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FB}
+\bxce@do{kiss_person_person_tone3_tone2}{1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FC}
+\bxce@do{kiss_person_person_tone3_tone4}{1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FE}
+\bxce@do{kiss_person_person_tone3_tone5}{1F9D1 1F3FD 200D 2764 200D 1F48B 200D 1F9D1 1F3FF}
+\bxce@do{kiss_person_person_tone4}{1F48F 1F3FE}
+\bxce@do{kiss_person_person_tone4_tone1}{1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FB}
+\bxce@do{kiss_person_person_tone4_tone2}{1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FC}
+\bxce@do{kiss_person_person_tone4_tone3}{1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FD}
+\bxce@do{kiss_person_person_tone4_tone5}{1F9D1 1F3FE 200D 2764 200D 1F48B 200D 1F9D1 1F3FF}
+\bxce@do{kiss_person_person_tone5}{1F48F 1F3FF}
+\bxce@do{kiss_person_person_tone5_tone1}{1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FB}
+\bxce@do{kiss_person_person_tone5_tone2}{1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FC}
+\bxce@do{kiss_person_person_tone5_tone3}{1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FD}
+\bxce@do{kiss_person_person_tone5_tone4}{1F9D1 1F3FF 200D 2764 200D 1F48B 200D 1F9D1 1F3FE}
+\bxce@do{kiss_tone1}{1F48F 1F3FB}
+\bxce@do{kiss_tone2}{1F48F 1F3FC}
+\bxce@do{kiss_tone3}{1F48F 1F3FD}
+\bxce@do{kiss_tone4}{1F48F 1F3FE}
+\bxce@do{kiss_tone5}{1F48F 1F3FF}
+\bxce@do{kiss_woman_man}{1F469 200D 2764 200D 1F48B 200D 1F468}
+\bxce@do{kiss_woman_man_tone1}{1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FB}
+\bxce@do{kiss_woman_man_tone1_tone2}{1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FC}
+\bxce@do{kiss_woman_man_tone1_tone3}{1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FD}
+\bxce@do{kiss_woman_man_tone1_tone4}{1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FE}
+\bxce@do{kiss_woman_man_tone1_tone5}{1F469 1F3FB 200D 2764 200D 1F48B 200D 1F468 1F3FF}
+\bxce@do{kiss_woman_man_tone2}{1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FC}
+\bxce@do{kiss_woman_man_tone2_tone1}{1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FB}
+\bxce@do{kiss_woman_man_tone2_tone3}{1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FD}
+\bxce@do{kiss_woman_man_tone2_tone4}{1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FE}
+\bxce@do{kiss_woman_man_tone2_tone5}{1F469 1F3FC 200D 2764 200D 1F48B 200D 1F468 1F3FF}
+\bxce@do{kiss_woman_man_tone3}{1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FD}
+\bxce@do{kiss_woman_man_tone3_tone1}{1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FB}
+\bxce@do{kiss_woman_man_tone3_tone2}{1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FC}
+\bxce@do{kiss_woman_man_tone3_tone4}{1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FE}
+\bxce@do{kiss_woman_man_tone3_tone5}{1F469 1F3FD 200D 2764 200D 1F48B 200D 1F468 1F3FF}
+\bxce@do{kiss_woman_man_tone4}{1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FE}
+\bxce@do{kiss_woman_man_tone4_tone1}{1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FB}
+\bxce@do{kiss_woman_man_tone4_tone2}{1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FC}
+\bxce@do{kiss_woman_man_tone4_tone3}{1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FD}
+\bxce@do{kiss_woman_man_tone4_tone5}{1F469 1F3FE 200D 2764 200D 1F48B 200D 1F468 1F3FF}
+\bxce@do{kiss_woman_man_tone5}{1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FF}
+\bxce@do{kiss_woman_man_tone5_tone1}{1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FB}
+\bxce@do{kiss_woman_man_tone5_tone2}{1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FC}
+\bxce@do{kiss_woman_man_tone5_tone3}{1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FD}
+\bxce@do{kiss_woman_man_tone5_tone4}{1F469 1F3FF 200D 2764 200D 1F48B 200D 1F468 1F3FE}
+\bxce@do{kiss_woman_woman}{1F469 200D 2764 200D 1F48B 200D 1F469}
+\bxce@do{kiss_woman_woman_tone1}{1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FB}
+\bxce@do{kiss_woman_woman_tone1_tone2}{1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FC}
+\bxce@do{kiss_woman_woman_tone1_tone3}{1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FD}
+\bxce@do{kiss_woman_woman_tone1_tone4}{1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FE}
+\bxce@do{kiss_woman_woman_tone1_tone5}{1F469 1F3FB 200D 2764 200D 1F48B 200D 1F469 1F3FF}
+\bxce@do{kiss_woman_woman_tone2}{1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FC}
+\bxce@do{kiss_woman_woman_tone2_tone1}{1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FB}
+\bxce@do{kiss_woman_woman_tone2_tone3}{1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FD}
+\bxce@do{kiss_woman_woman_tone2_tone4}{1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FE}
+\bxce@do{kiss_woman_woman_tone2_tone5}{1F469 1F3FC 200D 2764 200D 1F48B 200D 1F469 1F3FF}
+\bxce@do{kiss_woman_woman_tone3}{1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FD}
+\bxce@do{kiss_woman_woman_tone3_tone1}{1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FB}
+\bxce@do{kiss_woman_woman_tone3_tone2}{1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FC}
+\bxce@do{kiss_woman_woman_tone3_tone4}{1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FE}
+\bxce@do{kiss_woman_woman_tone3_tone5}{1F469 1F3FD 200D 2764 200D 1F48B 200D 1F469 1F3FF}
+\bxce@do{kiss_woman_woman_tone4}{1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FE}
+\bxce@do{kiss_woman_woman_tone4_tone1}{1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FB}
+\bxce@do{kiss_woman_woman_tone4_tone2}{1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FC}
+\bxce@do{kiss_woman_woman_tone4_tone3}{1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FD}
+\bxce@do{kiss_woman_woman_tone4_tone5}{1F469 1F3FE 200D 2764 200D 1F48B 200D 1F469 1F3FF}
+\bxce@do{kiss_woman_woman_tone5}{1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FF}
+\bxce@do{kiss_woman_woman_tone5_tone1}{1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FB}
+\bxce@do{kiss_woman_woman_tone5_tone2}{1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FC}
+\bxce@do{kiss_woman_woman_tone5_tone3}{1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FD}
+\bxce@do{kiss_woman_woman_tone5_tone4}{1F469 1F3FF 200D 2764 200D 1F48B 200D 1F469 1F3FE}
+\bxce@do{kiss_ww}{1F469 200D 2764 200D 1F48B 200D 1F469}
+\bxce@do{kissing}{1F617}
+\bxce@do{kissing_cat}{1F63D}
+\bxce@do{kissing_closed_eyes}{1F61A}
+\bxce@do{kissing_heart}{1F618}
+\bxce@do{kissing_smiling_eyes}{1F619}
+\bxce@do{kite}{1FA81}
+\bxce@do{kiwi}{1F95D}
+\bxce@do{knife}{1F52A}
+\bxce@do{knot}{1FAA2}
+\bxce@do{koala}{1F428}
+\bxce@do{koko}{1F201}
+\bxce@do{lab_coat}{1F97C}
+\bxce@do{label}{1F3F7}
+\bxce@do{lacrosse}{1F94D}
+\bxce@do{ladder}{1FA9C}
+\bxce@do{lady_beetle}{1F41E}
+\bxce@do{large_blue_diamond}{1F537}
+\bxce@do{large_orange_diamond}{1F536}
+\bxce@do{last_quarter_moon}{1F317}
+\bxce@do{last_quarter_moon_with_face}{1F31C}
+\bxce@do{laughing}{1F606}
+\bxce@do{leafy_green}{1F96C}
+\bxce@do{leaves}{1F343}
+\bxce@do{ledger}{1F4D2}
+\bxce@do{left_facing_fist}{1F91B}
+\bxce@do{left_facing_fist_tone1}{1F91B 1F3FB}
+\bxce@do{left_facing_fist_tone2}{1F91B 1F3FC}
+\bxce@do{left_facing_fist_tone3}{1F91B 1F3FD}
+\bxce@do{left_facing_fist_tone4}{1F91B 1F3FE}
+\bxce@do{left_facing_fist_tone5}{1F91B 1F3FF}
+\bxce@do{left_luggage}{1F6C5}
+\bxce@do{left_right_arrow}{2194}
+\bxce@do{leftwards_arrow_with_hook}{21A9}
+\bxce@do{leg}{1F9B5}
+\bxce@do{leg_tone1}{1F9B5 1F3FB}
+\bxce@do{leg_tone2}{1F9B5 1F3FC}
+\bxce@do{leg_tone3}{1F9B5 1F3FD}
+\bxce@do{leg_tone4}{1F9B5 1F3FE}
+\bxce@do{leg_tone5}{1F9B5 1F3FF}
+\bxce@do{lemon}{1F34B}
+\bxce@do{leo}{264C}
+\bxce@do{leopard}{1F406}
+\bxce@do{level_slider}{1F39A}
+\bxce@do{levitate}{1F574}
+\bxce@do{levitate_tone1}{1F574 1F3FB}
+\bxce@do{levitate_tone2}{1F574 1F3FC}
+\bxce@do{levitate_tone3}{1F574 1F3FD}
+\bxce@do{levitate_tone4}{1F574 1F3FE}
+\bxce@do{levitate_tone5}{1F574 1F3FF}
+\bxce@do{libra}{264E}
+\bxce@do{light_rail}{1F688}
+\bxce@do{link}{1F517}
+\bxce@do{lion_face}{1F981}
+\bxce@do{lips}{1F444}
+\bxce@do{lipstick}{1F484}
+\bxce@do{lizard}{1F98E}
+\bxce@do{llama}{1F999}
+\bxce@do{lobster}{1F99E}
+\bxce@do{lock}{1F512}
+\bxce@do{lock_with_ink_pen}{1F50F}
+\bxce@do{lollipop}{1F36D}
+\bxce@do{long_drum}{1FA98}
+\bxce@do{loop}{27BF}
+\bxce@do{loud_sound}{1F50A}
+\bxce@do{loudspeaker}{1F4E2}
+\bxce@do{love_hotel}{1F3E9}
+\bxce@do{love_letter}{1F48C}
+\bxce@do{love_you_gesture}{1F91F}
+\bxce@do{love_you_gesture_tone1}{1F91F 1F3FB}
+\bxce@do{love_you_gesture_tone2}{1F91F 1F3FC}
+\bxce@do{love_you_gesture_tone3}{1F91F 1F3FD}
+\bxce@do{love_you_gesture_tone4}{1F91F 1F3FE}
+\bxce@do{love_you_gesture_tone5}{1F91F 1F3FF}
+\bxce@do{low_brightness}{1F505}
+\bxce@do{luggage}{1F9F3}
+\bxce@do{lungs}{1FAC1}
+\bxce@do{lying_face}{1F925}
+\or %[3]
+\bxce@do{m}{24C2}
+\bxce@do{mag}{1F50D}
+\bxce@do{mag_right}{1F50E}
+\bxce@do{mage}{1F9D9}
+\bxce@do{mage_tone1}{1F9D9 1F3FB}
+\bxce@do{mage_tone2}{1F9D9 1F3FC}
+\bxce@do{mage_tone3}{1F9D9 1F3FD}
+\bxce@do{mage_tone4}{1F9D9 1F3FE}
+\bxce@do{mage_tone5}{1F9D9 1F3FF}
+\bxce@do{magic_wand}{1FA84}
+\bxce@do{magnet}{1F9F2}
+\bxce@do{mahjong}{1F004}
+\bxce@do{mailbox}{1F4EB}
+\bxce@do{mailbox_closed}{1F4EA}
+\bxce@do{mailbox_with_mail}{1F4EC}
+\bxce@do{mailbox_with_no_mail}{1F4ED}
+\bxce@do{male_sign}{2642}
+\bxce@do{mammoth}{1F9A3}
+\bxce@do{man}{1F468}
+\bxce@do{man_artist}{1F468 200D 1F3A8}
+\bxce@do{man_artist_tone1}{1F468 1F3FB 200D 1F3A8}
+\bxce@do{man_artist_tone2}{1F468 1F3FC 200D 1F3A8}
+\bxce@do{man_artist_tone3}{1F468 1F3FD 200D 1F3A8}
+\bxce@do{man_artist_tone4}{1F468 1F3FE 200D 1F3A8}
+\bxce@do{man_artist_tone5}{1F468 1F3FF 200D 1F3A8}
+\bxce@do{man_astronaut}{1F468 200D 1F680}
+\bxce@do{man_astronaut_tone1}{1F468 1F3FB 200D 1F680}
+\bxce@do{man_astronaut_tone2}{1F468 1F3FC 200D 1F680}
+\bxce@do{man_astronaut_tone3}{1F468 1F3FD 200D 1F680}
+\bxce@do{man_astronaut_tone4}{1F468 1F3FE 200D 1F680}
+\bxce@do{man_astronaut_tone5}{1F468 1F3FF 200D 1F680}
+\bxce@do{man_bald}{1F468 200D 1F9B2}
+\bxce@do{man_bald_tone1}{1F468 1F3FB 200D 1F9B2}
+\bxce@do{man_bald_tone2}{1F468 1F3FC 200D 1F9B2}
+\bxce@do{man_bald_tone3}{1F468 1F3FD 200D 1F9B2}
+\bxce@do{man_bald_tone4}{1F468 1F3FE 200D 1F9B2}
+\bxce@do{man_bald_tone5}{1F468 1F3FF 200D 1F9B2}
+\bxce@do{man_beard}{1F9D4 200D 2642}
+\bxce@do{man_biking}{1F6B4 200D 2642}
+\bxce@do{man_biking_tone1}{1F6B4 1F3FB 200D 2642}
+\bxce@do{man_biking_tone2}{1F6B4 1F3FC 200D 2642}
+\bxce@do{man_biking_tone3}{1F6B4 1F3FD 200D 2642}
+\bxce@do{man_biking_tone4}{1F6B4 1F3FE 200D 2642}
+\bxce@do{man_biking_tone5}{1F6B4 1F3FF 200D 2642}
+\bxce@do{man_bouncing_ball}{26F9 200D 2642}
+\bxce@do{man_bouncing_ball_tone1}{26F9 1F3FB 200D 2642}
+\bxce@do{man_bouncing_ball_tone2}{26F9 1F3FC 200D 2642}
+\bxce@do{man_bouncing_ball_tone3}{26F9 1F3FD 200D 2642}
+\bxce@do{man_bouncing_ball_tone4}{26F9 1F3FE 200D 2642}
+\bxce@do{man_bouncing_ball_tone5}{26F9 1F3FF 200D 2642}
+\bxce@do{man_bowing}{1F647 200D 2642}
+\bxce@do{man_bowing_tone1}{1F647 1F3FB 200D 2642}
+\bxce@do{man_bowing_tone2}{1F647 1F3FC 200D 2642}
+\bxce@do{man_bowing_tone3}{1F647 1F3FD 200D 2642}
+\bxce@do{man_bowing_tone4}{1F647 1F3FE 200D 2642}
+\bxce@do{man_bowing_tone5}{1F647 1F3FF 200D 2642}
+\bxce@do{man_cartwheeling}{1F938 200D 2642}
+\bxce@do{man_cartwheeling_tone1}{1F938 1F3FB 200D 2642}
+\bxce@do{man_cartwheeling_tone2}{1F938 1F3FC 200D 2642}
+\bxce@do{man_cartwheeling_tone3}{1F938 1F3FD 200D 2642}
+\bxce@do{man_cartwheeling_tone4}{1F938 1F3FE 200D 2642}
+\bxce@do{man_cartwheeling_tone5}{1F938 1F3FF 200D 2642}
+\bxce@do{man_climbing}{1F9D7 200D 2642}
+\bxce@do{man_climbing_tone1}{1F9D7 1F3FB 200D 2642}
+\bxce@do{man_climbing_tone2}{1F9D7 1F3FC 200D 2642}
+\bxce@do{man_climbing_tone3}{1F9D7 1F3FD 200D 2642}
+\bxce@do{man_climbing_tone4}{1F9D7 1F3FE 200D 2642}
+\bxce@do{man_climbing_tone5}{1F9D7 1F3FF 200D 2642}
+\bxce@do{man_construction_worker}{1F477 200D 2642}
+\bxce@do{man_construction_worker_tone1}{1F477 1F3FB 200D 2642}
+\bxce@do{man_construction_worker_tone2}{1F477 1F3FC 200D 2642}
+\bxce@do{man_construction_worker_tone3}{1F477 1F3FD 200D 2642}
+\bxce@do{man_construction_worker_tone4}{1F477 1F3FE 200D 2642}
+\bxce@do{man_construction_worker_tone5}{1F477 1F3FF 200D 2642}
+\bxce@do{man_cook}{1F468 200D 1F373}
+\bxce@do{man_cook_tone1}{1F468 1F3FB 200D 1F373}
+\bxce@do{man_cook_tone2}{1F468 1F3FC 200D 1F373}
+\bxce@do{man_cook_tone3}{1F468 1F3FD 200D 1F373}
+\bxce@do{man_cook_tone4}{1F468 1F3FE 200D 1F373}
+\bxce@do{man_cook_tone5}{1F468 1F3FF 200D 1F373}
+\bxce@do{man_curly_haired}{1F468 200D 1F9B1}
+\bxce@do{man_curly_haired_tone1}{1F468 1F3FB 200D 1F9B1}
+\bxce@do{man_curly_haired_tone2}{1F468 1F3FC 200D 1F9B1}
+\bxce@do{man_curly_haired_tone3}{1F468 1F3FD 200D 1F9B1}
+\bxce@do{man_curly_haired_tone4}{1F468 1F3FE 200D 1F9B1}
+\bxce@do{man_curly_haired_tone5}{1F468 1F3FF 200D 1F9B1}
+\bxce@do{man_dancing}{1F57A}
+\bxce@do{man_dancing_tone1}{1F57A 1F3FB}
+\bxce@do{man_dancing_tone2}{1F57A 1F3FC}
+\bxce@do{man_dancing_tone3}{1F57A 1F3FD}
+\bxce@do{man_dancing_tone4}{1F57A 1F3FE}
+\bxce@do{man_dancing_tone5}{1F57A 1F3FF}
+\bxce@do{man_detective}{1F575 200D 2642}
+\bxce@do{man_detective_tone1}{1F575 1F3FB 200D 2642}
+\bxce@do{man_detective_tone2}{1F575 1F3FC 200D 2642}
+\bxce@do{man_detective_tone3}{1F575 1F3FD 200D 2642}
+\bxce@do{man_detective_tone4}{1F575 1F3FE 200D 2642}
+\bxce@do{man_detective_tone5}{1F575 1F3FF 200D 2642}
+\bxce@do{man_elf}{1F9DD 200D 2642}
+\bxce@do{man_elf_tone1}{1F9DD 1F3FB 200D 2642}
+\bxce@do{man_elf_tone2}{1F9DD 1F3FC 200D 2642}
+\bxce@do{man_elf_tone3}{1F9DD 1F3FD 200D 2642}
+\bxce@do{man_elf_tone4}{1F9DD 1F3FE 200D 2642}
+\bxce@do{man_elf_tone5}{1F9DD 1F3FF 200D 2642}
+\bxce@do{man_facepalming}{1F926 200D 2642}
+\bxce@do{man_facepalming_tone1}{1F926 1F3FB 200D 2642}
+\bxce@do{man_facepalming_tone2}{1F926 1F3FC 200D 2642}
+\bxce@do{man_facepalming_tone3}{1F926 1F3FD 200D 2642}
+\bxce@do{man_facepalming_tone4}{1F926 1F3FE 200D 2642}
+\bxce@do{man_facepalming_tone5}{1F926 1F3FF 200D 2642}
+\bxce@do{man_factory_worker}{1F468 200D 1F3ED}
+\bxce@do{man_factory_worker_tone1}{1F468 1F3FB 200D 1F3ED}
+\bxce@do{man_factory_worker_tone2}{1F468 1F3FC 200D 1F3ED}
+\bxce@do{man_factory_worker_tone3}{1F468 1F3FD 200D 1F3ED}
+\bxce@do{man_factory_worker_tone4}{1F468 1F3FE 200D 1F3ED}
+\bxce@do{man_factory_worker_tone5}{1F468 1F3FF 200D 1F3ED}
+\bxce@do{man_fairy}{1F9DA 200D 2642}
+\bxce@do{man_fairy_tone1}{1F9DA 1F3FB 200D 2642}
+\bxce@do{man_fairy_tone2}{1F9DA 1F3FC 200D 2642}
+\bxce@do{man_fairy_tone3}{1F9DA 1F3FD 200D 2642}
+\bxce@do{man_fairy_tone4}{1F9DA 1F3FE 200D 2642}
+\bxce@do{man_fairy_tone5}{1F9DA 1F3FF 200D 2642}
+\bxce@do{man_farmer}{1F468 200D 1F33E}
+\bxce@do{man_farmer_tone1}{1F468 1F3FB 200D 1F33E}
+\bxce@do{man_farmer_tone2}{1F468 1F3FC 200D 1F33E}
+\bxce@do{man_farmer_tone3}{1F468 1F3FD 200D 1F33E}
+\bxce@do{man_farmer_tone4}{1F468 1F3FE 200D 1F33E}
+\bxce@do{man_farmer_tone5}{1F468 1F3FF 200D 1F33E}
+\bxce@do{man_feeding_baby}{1F468 200D 1F37C}
+\bxce@do{man_feeding_baby_tone1}{1F468 1F3FB 200D 1F37C}
+\bxce@do{man_feeding_baby_tone2}{1F468 1F3FC 200D 1F37C}
+\bxce@do{man_feeding_baby_tone3}{1F468 1F3FD 200D 1F37C}
+\bxce@do{man_feeding_baby_tone4}{1F468 1F3FE 200D 1F37C}
+\bxce@do{man_feeding_baby_tone5}{1F468 1F3FF 200D 1F37C}
+\bxce@do{man_firefighter}{1F468 200D 1F692}
+\bxce@do{man_firefighter_tone1}{1F468 1F3FB 200D 1F692}
+\bxce@do{man_firefighter_tone2}{1F468 1F3FC 200D 1F692}
+\bxce@do{man_firefighter_tone3}{1F468 1F3FD 200D 1F692}
+\bxce@do{man_firefighter_tone4}{1F468 1F3FE 200D 1F692}
+\bxce@do{man_firefighter_tone5}{1F468 1F3FF 200D 1F692}
+\bxce@do{man_frowning}{1F64D 200D 2642}
+\bxce@do{man_frowning_tone1}{1F64D 1F3FB 200D 2642}
+\bxce@do{man_frowning_tone2}{1F64D 1F3FC 200D 2642}
+\bxce@do{man_frowning_tone3}{1F64D 1F3FD 200D 2642}
+\bxce@do{man_frowning_tone4}{1F64D 1F3FE 200D 2642}
+\bxce@do{man_frowning_tone5}{1F64D 1F3FF 200D 2642}
+\bxce@do{man_genie}{1F9DE 200D 2642}
+\bxce@do{man_gesturing_no}{1F645 200D 2642}
+\bxce@do{man_gesturing_no_tone1}{1F645 1F3FB 200D 2642}
+\bxce@do{man_gesturing_no_tone2}{1F645 1F3FC 200D 2642}
+\bxce@do{man_gesturing_no_tone3}{1F645 1F3FD 200D 2642}
+\bxce@do{man_gesturing_no_tone4}{1F645 1F3FE 200D 2642}
+\bxce@do{man_gesturing_no_tone5}{1F645 1F3FF 200D 2642}
+\bxce@do{man_gesturing_ok}{1F646 200D 2642}
+\bxce@do{man_gesturing_ok_tone1}{1F646 1F3FB 200D 2642}
+\bxce@do{man_gesturing_ok_tone2}{1F646 1F3FC 200D 2642}
+\bxce@do{man_gesturing_ok_tone3}{1F646 1F3FD 200D 2642}
+\bxce@do{man_gesturing_ok_tone4}{1F646 1F3FE 200D 2642}
+\bxce@do{man_gesturing_ok_tone5}{1F646 1F3FF 200D 2642}
+\bxce@do{man_getting_face_massage}{1F486 200D 2642}
+\bxce@do{man_getting_face_massage_tone1}{1F486 1F3FB 200D 2642}
+\bxce@do{man_getting_face_massage_tone2}{1F486 1F3FC 200D 2642}
+\bxce@do{man_getting_face_massage_tone3}{1F486 1F3FD 200D 2642}
+\bxce@do{man_getting_face_massage_tone4}{1F486 1F3FE 200D 2642}
+\bxce@do{man_getting_face_massage_tone5}{1F486 1F3FF 200D 2642}
+\bxce@do{man_getting_haircut}{1F487 200D 2642}
+\bxce@do{man_getting_haircut_tone1}{1F487 1F3FB 200D 2642}
+\bxce@do{man_getting_haircut_tone2}{1F487 1F3FC 200D 2642}
+\bxce@do{man_getting_haircut_tone3}{1F487 1F3FD 200D 2642}
+\bxce@do{man_getting_haircut_tone4}{1F487 1F3FE 200D 2642}
+\bxce@do{man_getting_haircut_tone5}{1F487 1F3FF 200D 2642}
+\bxce@do{man_golfing}{1F3CC 200D 2642}
+\bxce@do{man_golfing_tone1}{1F3CC 1F3FB 200D 2642}
+\bxce@do{man_golfing_tone2}{1F3CC 1F3FC 200D 2642}
+\bxce@do{man_golfing_tone3}{1F3CC 1F3FD 200D 2642}
+\bxce@do{man_golfing_tone4}{1F3CC 1F3FE 200D 2642}
+\bxce@do{man_golfing_tone5}{1F3CC 1F3FF 200D 2642}
+\bxce@do{man_guard}{1F482 200D 2642}
+\bxce@do{man_guard_tone1}{1F482 1F3FB 200D 2642}
+\bxce@do{man_guard_tone2}{1F482 1F3FC 200D 2642}
+\bxce@do{man_guard_tone3}{1F482 1F3FD 200D 2642}
+\bxce@do{man_guard_tone4}{1F482 1F3FE 200D 2642}
+\bxce@do{man_guard_tone5}{1F482 1F3FF 200D 2642}
+\bxce@do{man_health_worker}{1F468 200D 2695}
+\bxce@do{man_health_worker_tone1}{1F468 1F3FB 200D 2695}
+\bxce@do{man_health_worker_tone2}{1F468 1F3FC 200D 2695}
+\bxce@do{man_health_worker_tone3}{1F468 1F3FD 200D 2695}
+\bxce@do{man_health_worker_tone4}{1F468 1F3FE 200D 2695}
+\bxce@do{man_health_worker_tone5}{1F468 1F3FF 200D 2695}
+\bxce@do{man_in_lotus_position}{1F9D8 200D 2642}
+\bxce@do{man_in_lotus_position_tone1}{1F9D8 1F3FB 200D 2642}
+\bxce@do{man_in_lotus_position_tone2}{1F9D8 1F3FC 200D 2642}
+\bxce@do{man_in_lotus_position_tone3}{1F9D8 1F3FD 200D 2642}
+\bxce@do{man_in_lotus_position_tone4}{1F9D8 1F3FE 200D 2642}
+\bxce@do{man_in_lotus_position_tone5}{1F9D8 1F3FF 200D 2642}
+\bxce@do{man_in_manual_wheelchair}{1F468 200D 1F9BD}
+\bxce@do{man_in_manual_wheelchair_tone1}{1F468 1F3FB 200D 1F9BD}
+\bxce@do{man_in_manual_wheelchair_tone2}{1F468 1F3FC 200D 1F9BD}
+\bxce@do{man_in_manual_wheelchair_tone3}{1F468 1F3FD 200D 1F9BD}
+\bxce@do{man_in_manual_wheelchair_tone4}{1F468 1F3FE 200D 1F9BD}
+\bxce@do{man_in_manual_wheelchair_tone5}{1F468 1F3FF 200D 1F9BD}
+\bxce@do{man_in_motorized_wheelchair}{1F468 200D 1F9BC}
+\bxce@do{man_in_motorized_wheelchair_tone1}{1F468 1F3FB 200D 1F9BC}
+\bxce@do{man_in_motorized_wheelchair_tone2}{1F468 1F3FC 200D 1F9BC}
+\bxce@do{man_in_motorized_wheelchair_tone3}{1F468 1F3FD 200D 1F9BC}
+\bxce@do{man_in_motorized_wheelchair_tone4}{1F468 1F3FE 200D 1F9BC}
+\bxce@do{man_in_motorized_wheelchair_tone5}{1F468 1F3FF 200D 1F9BC}
+\bxce@do{man_in_steamy_room}{1F9D6 200D 2642}
+\bxce@do{man_in_steamy_room_tone1}{1F9D6 1F3FB 200D 2642}
+\bxce@do{man_in_steamy_room_tone2}{1F9D6 1F3FC 200D 2642}
+\bxce@do{man_in_steamy_room_tone3}{1F9D6 1F3FD 200D 2642}
+\bxce@do{man_in_steamy_room_tone4}{1F9D6 1F3FE 200D 2642}
+\bxce@do{man_in_steamy_room_tone5}{1F9D6 1F3FF 200D 2642}
+\bxce@do{man_in_tuxedo}{1F935 200D 2642}
+\bxce@do{man_in_tuxedo_tone1}{1F935 1F3FB 200D 2642}
+\bxce@do{man_in_tuxedo_tone2}{1F935 1F3FC 200D 2642}
+\bxce@do{man_in_tuxedo_tone3}{1F935 1F3FD 200D 2642}
+\bxce@do{man_in_tuxedo_tone4}{1F935 1F3FE 200D 2642}
+\bxce@do{man_in_tuxedo_tone5}{1F935 1F3FF 200D 2642}
+\bxce@do{man_judge}{1F468 200D 2696}
+\bxce@do{man_judge_tone1}{1F468 1F3FB 200D 2696}
+\bxce@do{man_judge_tone2}{1F468 1F3FC 200D 2696}
+\bxce@do{man_judge_tone3}{1F468 1F3FD 200D 2696}
+\bxce@do{man_judge_tone4}{1F468 1F3FE 200D 2696}
+\bxce@do{man_judge_tone5}{1F468 1F3FF 200D 2696}
+\bxce@do{man_juggling}{1F939 200D 2642}
+\bxce@do{man_juggling_tone1}{1F939 1F3FB 200D 2642}
+\bxce@do{man_juggling_tone2}{1F939 1F3FC 200D 2642}
+\bxce@do{man_juggling_tone3}{1F939 1F3FD 200D 2642}
+\bxce@do{man_juggling_tone4}{1F939 1F3FE 200D 2642}
+\bxce@do{man_juggling_tone5}{1F939 1F3FF 200D 2642}
+\bxce@do{man_kneeling}{1F9CE 200D 2642}
+\bxce@do{man_kneeling_tone1}{1F9CE 1F3FB 200D 2642}
+\bxce@do{man_kneeling_tone2}{1F9CE 1F3FC 200D 2642}
+\bxce@do{man_kneeling_tone3}{1F9CE 1F3FD 200D 2642}
+\bxce@do{man_kneeling_tone4}{1F9CE 1F3FE 200D 2642}
+\bxce@do{man_kneeling_tone5}{1F9CE 1F3FF 200D 2642}
+\bxce@do{man_lifting_weights}{1F3CB 200D 2642}
+\bxce@do{man_lifting_weights_tone1}{1F3CB 1F3FB 200D 2642}
+\bxce@do{man_lifting_weights_tone2}{1F3CB 1F3FC 200D 2642}
+\bxce@do{man_lifting_weights_tone3}{1F3CB 1F3FD 200D 2642}
+\bxce@do{man_lifting_weights_tone4}{1F3CB 1F3FE 200D 2642}
+\bxce@do{man_lifting_weights_tone5}{1F3CB 1F3FF 200D 2642}
+\bxce@do{man_mage}{1F9D9 200D 2642}
+\bxce@do{man_mage_tone1}{1F9D9 1F3FB 200D 2642}
+\bxce@do{man_mage_tone2}{1F9D9 1F3FC 200D 2642}
+\bxce@do{man_mage_tone3}{1F9D9 1F3FD 200D 2642}
+\bxce@do{man_mage_tone4}{1F9D9 1F3FE 200D 2642}
+\bxce@do{man_mage_tone5}{1F9D9 1F3FF 200D 2642}
+\bxce@do{man_mechanic}{1F468 200D 1F527}
+\bxce@do{man_mechanic_tone1}{1F468 1F3FB 200D 1F527}
+\bxce@do{man_mechanic_tone2}{1F468 1F3FC 200D 1F527}
+\bxce@do{man_mechanic_tone3}{1F468 1F3FD 200D 1F527}
+\bxce@do{man_mechanic_tone4}{1F468 1F3FE 200D 1F527}
+\bxce@do{man_mechanic_tone5}{1F468 1F3FF 200D 1F527}
+\bxce@do{man_mountain_biking}{1F6B5 200D 2642}
+\bxce@do{man_mountain_biking_tone1}{1F6B5 1F3FB 200D 2642}
+\bxce@do{man_mountain_biking_tone2}{1F6B5 1F3FC 200D 2642}
+\bxce@do{man_mountain_biking_tone3}{1F6B5 1F3FD 200D 2642}
+\bxce@do{man_mountain_biking_tone4}{1F6B5 1F3FE 200D 2642}
+\bxce@do{man_mountain_biking_tone5}{1F6B5 1F3FF 200D 2642}
+\bxce@do{man_office_worker}{1F468 200D 1F4BC}
+\bxce@do{man_office_worker_tone1}{1F468 1F3FB 200D 1F4BC}
+\bxce@do{man_office_worker_tone2}{1F468 1F3FC 200D 1F4BC}
+\bxce@do{man_office_worker_tone3}{1F468 1F3FD 200D 1F4BC}
+\bxce@do{man_office_worker_tone4}{1F468 1F3FE 200D 1F4BC}
+\bxce@do{man_office_worker_tone5}{1F468 1F3FF 200D 1F4BC}
+\bxce@do{man_pilot}{1F468 200D 2708}
+\bxce@do{man_pilot_tone1}{1F468 1F3FB 200D 2708}
+\bxce@do{man_pilot_tone2}{1F468 1F3FC 200D 2708}
+\bxce@do{man_pilot_tone3}{1F468 1F3FD 200D 2708}
+\bxce@do{man_pilot_tone4}{1F468 1F3FE 200D 2708}
+\bxce@do{man_pilot_tone5}{1F468 1F3FF 200D 2708}
+\bxce@do{man_playing_handball}{1F93E 200D 2642}
+\bxce@do{man_playing_handball_tone1}{1F93E 1F3FB 200D 2642}
+\bxce@do{man_playing_handball_tone2}{1F93E 1F3FC 200D 2642}
+\bxce@do{man_playing_handball_tone3}{1F93E 1F3FD 200D 2642}
+\bxce@do{man_playing_handball_tone4}{1F93E 1F3FE 200D 2642}
+\bxce@do{man_playing_handball_tone5}{1F93E 1F3FF 200D 2642}
+\bxce@do{man_playing_water_polo}{1F93D 200D 2642}
+\bxce@do{man_playing_water_polo_tone1}{1F93D 1F3FB 200D 2642}
+\bxce@do{man_playing_water_polo_tone2}{1F93D 1F3FC 200D 2642}
+\bxce@do{man_playing_water_polo_tone3}{1F93D 1F3FD 200D 2642}
+\bxce@do{man_playing_water_polo_tone4}{1F93D 1F3FE 200D 2642}
+\bxce@do{man_playing_water_polo_tone5}{1F93D 1F3FF 200D 2642}
+\bxce@do{man_police_officer}{1F46E 200D 2642}
+\bxce@do{man_police_officer_tone1}{1F46E 1F3FB 200D 2642}
+\bxce@do{man_police_officer_tone2}{1F46E 1F3FC 200D 2642}
+\bxce@do{man_police_officer_tone3}{1F46E 1F3FD 200D 2642}
+\bxce@do{man_police_officer_tone4}{1F46E 1F3FE 200D 2642}
+\bxce@do{man_police_officer_tone5}{1F46E 1F3FF 200D 2642}
+\bxce@do{man_pouting}{1F64E 200D 2642}
+\bxce@do{man_pouting_tone1}{1F64E 1F3FB 200D 2642}
+\bxce@do{man_pouting_tone2}{1F64E 1F3FC 200D 2642}
+\bxce@do{man_pouting_tone3}{1F64E 1F3FD 200D 2642}
+\bxce@do{man_pouting_tone4}{1F64E 1F3FE 200D 2642}
+\bxce@do{man_pouting_tone5}{1F64E 1F3FF 200D 2642}
+\bxce@do{man_raising_hand}{1F64B 200D 2642}
+\bxce@do{man_raising_hand_tone1}{1F64B 1F3FB 200D 2642}
+\bxce@do{man_raising_hand_tone2}{1F64B 1F3FC 200D 2642}
+\bxce@do{man_raising_hand_tone3}{1F64B 1F3FD 200D 2642}
+\bxce@do{man_raising_hand_tone4}{1F64B 1F3FE 200D 2642}
+\bxce@do{man_raising_hand_tone5}{1F64B 1F3FF 200D 2642}
+\bxce@do{man_red_haired}{1F468 200D 1F9B0}
+\bxce@do{man_red_haired_tone1}{1F468 1F3FB 200D 1F9B0}
+\bxce@do{man_red_haired_tone2}{1F468 1F3FC 200D 1F9B0}
+\bxce@do{man_red_haired_tone3}{1F468 1F3FD 200D 1F9B0}
+\bxce@do{man_red_haired_tone4}{1F468 1F3FE 200D 1F9B0}
+\bxce@do{man_red_haired_tone5}{1F468 1F3FF 200D 1F9B0}
+\bxce@do{man_rowing_boat}{1F6A3 200D 2642}
+\bxce@do{man_rowing_boat_tone1}{1F6A3 1F3FB 200D 2642}
+\bxce@do{man_rowing_boat_tone2}{1F6A3 1F3FC 200D 2642}
+\bxce@do{man_rowing_boat_tone3}{1F6A3 1F3FD 200D 2642}
+\bxce@do{man_rowing_boat_tone4}{1F6A3 1F3FE 200D 2642}
+\bxce@do{man_rowing_boat_tone5}{1F6A3 1F3FF 200D 2642}
+\bxce@do{man_running}{1F3C3 200D 2642}
+\bxce@do{man_running_tone1}{1F3C3 1F3FB 200D 2642}
+\bxce@do{man_running_tone2}{1F3C3 1F3FC 200D 2642}
+\bxce@do{man_running_tone3}{1F3C3 1F3FD 200D 2642}
+\bxce@do{man_running_tone4}{1F3C3 1F3FE 200D 2642}
+\bxce@do{man_running_tone5}{1F3C3 1F3FF 200D 2642}
+\bxce@do{man_scientist}{1F468 200D 1F52C}
+\bxce@do{man_scientist_tone1}{1F468 1F3FB 200D 1F52C}
+\bxce@do{man_scientist_tone2}{1F468 1F3FC 200D 1F52C}
+\bxce@do{man_scientist_tone3}{1F468 1F3FD 200D 1F52C}
+\bxce@do{man_scientist_tone4}{1F468 1F3FE 200D 1F52C}
+\bxce@do{man_scientist_tone5}{1F468 1F3FF 200D 1F52C}
+\bxce@do{man_shrugging}{1F937 200D 2642}
+\bxce@do{man_shrugging_tone1}{1F937 1F3FB 200D 2642}
+\bxce@do{man_shrugging_tone2}{1F937 1F3FC 200D 2642}
+\bxce@do{man_shrugging_tone3}{1F937 1F3FD 200D 2642}
+\bxce@do{man_shrugging_tone4}{1F937 1F3FE 200D 2642}
+\bxce@do{man_shrugging_tone5}{1F937 1F3FF 200D 2642}
+\bxce@do{man_singer}{1F468 200D 1F3A4}
+\bxce@do{man_singer_tone1}{1F468 1F3FB 200D 1F3A4}
+\bxce@do{man_singer_tone2}{1F468 1F3FC 200D 1F3A4}
+\bxce@do{man_singer_tone3}{1F468 1F3FD 200D 1F3A4}
+\bxce@do{man_singer_tone4}{1F468 1F3FE 200D 1F3A4}
+\bxce@do{man_singer_tone5}{1F468 1F3FF 200D 1F3A4}
+\bxce@do{man_standing}{1F9CD 200D 2642}
+\bxce@do{man_standing_tone1}{1F9CD 1F3FB 200D 2642}
+\bxce@do{man_standing_tone2}{1F9CD 1F3FC 200D 2642}
+\bxce@do{man_standing_tone3}{1F9CD 1F3FD 200D 2642}
+\bxce@do{man_standing_tone4}{1F9CD 1F3FE 200D 2642}
+\bxce@do{man_standing_tone5}{1F9CD 1F3FF 200D 2642}
+\bxce@do{man_student}{1F468 200D 1F393}
+\bxce@do{man_student_tone1}{1F468 1F3FB 200D 1F393}
+\bxce@do{man_student_tone2}{1F468 1F3FC 200D 1F393}
+\bxce@do{man_student_tone3}{1F468 1F3FD 200D 1F393}
+\bxce@do{man_student_tone4}{1F468 1F3FE 200D 1F393}
+\bxce@do{man_student_tone5}{1F468 1F3FF 200D 1F393}
+\bxce@do{man_superhero}{1F9B8 200D 2642}
+\bxce@do{man_superhero_tone1}{1F9B8 1F3FB 200D 2642}
+\bxce@do{man_superhero_tone2}{1F9B8 1F3FC 200D 2642}
+\bxce@do{man_superhero_tone3}{1F9B8 1F3FD 200D 2642}
+\bxce@do{man_superhero_tone4}{1F9B8 1F3FE 200D 2642}
+\bxce@do{man_superhero_tone5}{1F9B8 1F3FF 200D 2642}
+\bxce@do{man_supervillain}{1F9B9 200D 2642}
+\bxce@do{man_supervillain_tone1}{1F9B9 1F3FB 200D 2642}
+\bxce@do{man_supervillain_tone2}{1F9B9 1F3FC 200D 2642}
+\bxce@do{man_supervillain_tone3}{1F9B9 1F3FD 200D 2642}
+\bxce@do{man_supervillain_tone4}{1F9B9 1F3FE 200D 2642}
+\bxce@do{man_supervillain_tone5}{1F9B9 1F3FF 200D 2642}
+\bxce@do{man_surfing}{1F3C4 200D 2642}
+\bxce@do{man_surfing_tone1}{1F3C4 1F3FB 200D 2642}
+\bxce@do{man_surfing_tone2}{1F3C4 1F3FC 200D 2642}
+\bxce@do{man_surfing_tone3}{1F3C4 1F3FD 200D 2642}
+\bxce@do{man_surfing_tone4}{1F3C4 1F3FE 200D 2642}
+\bxce@do{man_surfing_tone5}{1F3C4 1F3FF 200D 2642}
+\bxce@do{man_swimming}{1F3CA 200D 2642}
+\bxce@do{man_swimming_tone1}{1F3CA 1F3FB 200D 2642}
+\bxce@do{man_swimming_tone2}{1F3CA 1F3FC 200D 2642}
+\bxce@do{man_swimming_tone3}{1F3CA 1F3FD 200D 2642}
+\bxce@do{man_swimming_tone4}{1F3CA 1F3FE 200D 2642}
+\bxce@do{man_swimming_tone5}{1F3CA 1F3FF 200D 2642}
+\bxce@do{man_teacher}{1F468 200D 1F3EB}
+\bxce@do{man_teacher_tone1}{1F468 1F3FB 200D 1F3EB}
+\bxce@do{man_teacher_tone2}{1F468 1F3FC 200D 1F3EB}
+\bxce@do{man_teacher_tone3}{1F468 1F3FD 200D 1F3EB}
+\bxce@do{man_teacher_tone4}{1F468 1F3FE 200D 1F3EB}
+\bxce@do{man_teacher_tone5}{1F468 1F3FF 200D 1F3EB}
+\bxce@do{man_technologist}{1F468 200D 1F4BB}
+\bxce@do{man_technologist_tone1}{1F468 1F3FB 200D 1F4BB}
+\bxce@do{man_technologist_tone2}{1F468 1F3FC 200D 1F4BB}
+\bxce@do{man_technologist_tone3}{1F468 1F3FD 200D 1F4BB}
+\bxce@do{man_technologist_tone4}{1F468 1F3FE 200D 1F4BB}
+\bxce@do{man_technologist_tone5}{1F468 1F3FF 200D 1F4BB}
+\bxce@do{man_tipping_hand}{1F481 200D 2642}
+\bxce@do{man_tipping_hand_tone1}{1F481 1F3FB 200D 2642}
+\bxce@do{man_tipping_hand_tone2}{1F481 1F3FC 200D 2642}
+\bxce@do{man_tipping_hand_tone3}{1F481 1F3FD 200D 2642}
+\bxce@do{man_tipping_hand_tone4}{1F481 1F3FE 200D 2642}
+\bxce@do{man_tipping_hand_tone5}{1F481 1F3FF 200D 2642}
+\bxce@do{man_tone1}{1F468 1F3FB}
+\bxce@do{man_tone1_beard}{1F9D4 1F3FB 200D 2642}
+\bxce@do{man_tone2}{1F468 1F3FC}
+\bxce@do{man_tone2_beard}{1F9D4 1F3FC 200D 2642}
+\bxce@do{man_tone3}{1F468 1F3FD}
+\bxce@do{man_tone3_beard}{1F9D4 1F3FD 200D 2642}
+\bxce@do{man_tone4}{1F468 1F3FE}
+\bxce@do{man_tone4_beard}{1F9D4 1F3FE 200D 2642}
+\bxce@do{man_tone5}{1F468 1F3FF}
+\bxce@do{man_tone5_beard}{1F9D4 1F3FF 200D 2642}
+\bxce@do{man_vampire}{1F9DB 200D 2642}
+\bxce@do{man_vampire_tone1}{1F9DB 1F3FB 200D 2642}
+\bxce@do{man_vampire_tone2}{1F9DB 1F3FC 200D 2642}
+\bxce@do{man_vampire_tone3}{1F9DB 1F3FD 200D 2642}
+\bxce@do{man_vampire_tone4}{1F9DB 1F3FE 200D 2642}
+\bxce@do{man_vampire_tone5}{1F9DB 1F3FF 200D 2642}
+\bxce@do{man_walking}{1F6B6 200D 2642}
+\bxce@do{man_walking_tone1}{1F6B6 1F3FB 200D 2642}
+\bxce@do{man_walking_tone2}{1F6B6 1F3FC 200D 2642}
+\bxce@do{man_walking_tone3}{1F6B6 1F3FD 200D 2642}
+\bxce@do{man_walking_tone4}{1F6B6 1F3FE 200D 2642}
+\bxce@do{man_walking_tone5}{1F6B6 1F3FF 200D 2642}
+\bxce@do{man_wearing_turban}{1F473 200D 2642}
+\bxce@do{man_wearing_turban_tone1}{1F473 1F3FB 200D 2642}
+\bxce@do{man_wearing_turban_tone2}{1F473 1F3FC 200D 2642}
+\bxce@do{man_wearing_turban_tone3}{1F473 1F3FD 200D 2642}
+\bxce@do{man_wearing_turban_tone4}{1F473 1F3FE 200D 2642}
+\bxce@do{man_wearing_turban_tone5}{1F473 1F3FF 200D 2642}
+\bxce@do{man_white_haired}{1F468 200D 1F9B3}
+\bxce@do{man_white_haired_tone1}{1F468 1F3FB 200D 1F9B3}
+\bxce@do{man_white_haired_tone2}{1F468 1F3FC 200D 1F9B3}
+\bxce@do{man_white_haired_tone3}{1F468 1F3FD 200D 1F9B3}
+\bxce@do{man_white_haired_tone4}{1F468 1F3FE 200D 1F9B3}
+\bxce@do{man_white_haired_tone5}{1F468 1F3FF 200D 1F9B3}
+\bxce@do{man_with_chinese_cap}{1F472}
+\bxce@do{man_with_chinese_cap_tone1}{1F472 1F3FB}
+\bxce@do{man_with_chinese_cap_tone2}{1F472 1F3FC}
+\bxce@do{man_with_chinese_cap_tone3}{1F472 1F3FD}
+\bxce@do{man_with_chinese_cap_tone4}{1F472 1F3FE}
+\bxce@do{man_with_chinese_cap_tone5}{1F472 1F3FF}
+\bxce@do{man_with_probing_cane}{1F468 200D 1F9AF}
+\bxce@do{man_with_probing_cane_tone1}{1F468 1F3FB 200D 1F9AF}
+\bxce@do{man_with_probing_cane_tone2}{1F468 1F3FC 200D 1F9AF}
+\bxce@do{man_with_probing_cane_tone3}{1F468 1F3FD 200D 1F9AF}
+\bxce@do{man_with_probing_cane_tone4}{1F468 1F3FE 200D 1F9AF}
+\bxce@do{man_with_probing_cane_tone5}{1F468 1F3FF 200D 1F9AF}
+\bxce@do{man_with_veil}{1F470 200D 2642}
+\bxce@do{man_with_veil_tone1}{1F470 1F3FB 200D 2642}
+\bxce@do{man_with_veil_tone2}{1F470 1F3FC 200D 2642}
+\bxce@do{man_with_veil_tone3}{1F470 1F3FD 200D 2642}
+\bxce@do{man_with_veil_tone4}{1F470 1F3FE 200D 2642}
+\bxce@do{man_with_veil_tone5}{1F470 1F3FF 200D 2642}
+\bxce@do{man_zombie}{1F9DF 200D 2642}
+\bxce@do{mango}{1F96D}
+\bxce@do{mans_shoe}{1F45E}
+\bxce@do{manual_wheelchair}{1F9BD}
+\bxce@do{map}{1F5FA}
+\bxce@do{maple_leaf}{1F341}
+\bxce@do{martial_arts_uniform}{1F94B}
+\bxce@do{mask}{1F637}
+\bxce@do{mate}{1F9C9}
+\bxce@do{meat_on_bone}{1F356}
+\bxce@do{mechanic}{1F9D1 200D 1F527}
+\bxce@do{mechanic_tone1}{1F9D1 1F3FB 200D 1F527}
+\bxce@do{mechanic_tone2}{1F9D1 1F3FC 200D 1F527}
+\bxce@do{mechanic_tone3}{1F9D1 1F3FD 200D 1F527}
+\bxce@do{mechanic_tone4}{1F9D1 1F3FE 200D 1F527}
+\bxce@do{mechanic_tone5}{1F9D1 1F3FF 200D 1F527}
+\bxce@do{mechanical_arm}{1F9BE}
+\bxce@do{mechanical_leg}{1F9BF}
+\bxce@do{medal}{1F3C5}
+\bxce@do{medical_symbol}{2695}
+\bxce@do{mega}{1F4E3}
+\bxce@do{melon}{1F348}
+\bxce@do{men_holding_hands}{1F46C}
+\bxce@do{men_holding_hands_tone1}{1F46C 1F3FB}
+\bxce@do{men_holding_hands_tone1_tone2}{1F468 1F3FB 200D 1F91D 200D 1F468 1F3FC}
+\bxce@do{men_holding_hands_tone1_tone3}{1F468 1F3FB 200D 1F91D 200D 1F468 1F3FD}
+\bxce@do{men_holding_hands_tone1_tone4}{1F468 1F3FB 200D 1F91D 200D 1F468 1F3FE}
+\bxce@do{men_holding_hands_tone1_tone5}{1F468 1F3FB 200D 1F91D 200D 1F468 1F3FF}
+\bxce@do{men_holding_hands_tone2}{1F46C 1F3FC}
+\bxce@do{men_holding_hands_tone2_tone1}{1F468 1F3FC 200D 1F91D 200D 1F468 1F3FB}
+\bxce@do{men_holding_hands_tone2_tone3}{1F468 1F3FC 200D 1F91D 200D 1F468 1F3FD}
+\bxce@do{men_holding_hands_tone2_tone4}{1F468 1F3FC 200D 1F91D 200D 1F468 1F3FE}
+\bxce@do{men_holding_hands_tone2_tone5}{1F468 1F3FC 200D 1F91D 200D 1F468 1F3FF}
+\bxce@do{men_holding_hands_tone3}{1F46C 1F3FD}
+\bxce@do{men_holding_hands_tone3_tone1}{1F468 1F3FD 200D 1F91D 200D 1F468 1F3FB}
+\bxce@do{men_holding_hands_tone3_tone2}{1F468 1F3FD 200D 1F91D 200D 1F468 1F3FC}
+\bxce@do{men_holding_hands_tone3_tone4}{1F468 1F3FD 200D 1F91D 200D 1F468 1F3FE}
+\bxce@do{men_holding_hands_tone3_tone5}{1F468 1F3FD 200D 1F91D 200D 1F468 1F3FF}
+\bxce@do{men_holding_hands_tone4}{1F46C 1F3FE}
+\bxce@do{men_holding_hands_tone4_tone1}{1F468 1F3FE 200D 1F91D 200D 1F468 1F3FB}
+\bxce@do{men_holding_hands_tone4_tone2}{1F468 1F3FE 200D 1F91D 200D 1F468 1F3FC}
+\bxce@do{men_holding_hands_tone4_tone3}{1F468 1F3FE 200D 1F91D 200D 1F468 1F3FD}
+\bxce@do{men_holding_hands_tone4_tone5}{1F468 1F3FE 200D 1F91D 200D 1F468 1F3FF}
+\bxce@do{men_holding_hands_tone5}{1F46C 1F3FF}
+\bxce@do{men_holding_hands_tone5_tone1}{1F468 1F3FF 200D 1F91D 200D 1F468 1F3FB}
+\bxce@do{men_holding_hands_tone5_tone2}{1F468 1F3FF 200D 1F91D 200D 1F468 1F3FC}
+\bxce@do{men_holding_hands_tone5_tone3}{1F468 1F3FF 200D 1F91D 200D 1F468 1F3FD}
+\bxce@do{men_holding_hands_tone5_tone4}{1F468 1F3FF 200D 1F91D 200D 1F468 1F3FE}
+\bxce@do{men_with_bunny_ears_partying}{1F46F 200D 2642}
+\bxce@do{men_wrestling}{1F93C 200D 2642}
+\bxce@do{mending_heart}{2764 200D 1FA79}
+\bxce@do{menorah}{1F54E}
+\bxce@do{mens}{1F6B9}
+\bxce@do{mermaid}{1F9DC 200D 2640}
+\bxce@do{mermaid_tone1}{1F9DC 1F3FB 200D 2640}
+\bxce@do{mermaid_tone2}{1F9DC 1F3FC 200D 2640}
+\bxce@do{mermaid_tone3}{1F9DC 1F3FD 200D 2640}
+\bxce@do{mermaid_tone4}{1F9DC 1F3FE 200D 2640}
+\bxce@do{mermaid_tone5}{1F9DC 1F3FF 200D 2640}
+\bxce@do{merman}{1F9DC 200D 2642}
+\bxce@do{merman_tone1}{1F9DC 1F3FB 200D 2642}
+\bxce@do{merman_tone2}{1F9DC 1F3FC 200D 2642}
+\bxce@do{merman_tone3}{1F9DC 1F3FD 200D 2642}
+\bxce@do{merman_tone4}{1F9DC 1F3FE 200D 2642}
+\bxce@do{merman_tone5}{1F9DC 1F3FF 200D 2642}
+\bxce@do{merperson}{1F9DC}
+\bxce@do{merperson_tone1}{1F9DC 1F3FB}
+\bxce@do{merperson_tone2}{1F9DC 1F3FC}
+\bxce@do{merperson_tone3}{1F9DC 1F3FD}
+\bxce@do{merperson_tone4}{1F9DC 1F3FE}
+\bxce@do{merperson_tone5}{1F9DC 1F3FF}
+\bxce@do{metal}{1F918}
+\bxce@do{metal_tone1}{1F918 1F3FB}
+\bxce@do{metal_tone2}{1F918 1F3FC}
+\bxce@do{metal_tone3}{1F918 1F3FD}
+\bxce@do{metal_tone4}{1F918 1F3FE}
+\bxce@do{metal_tone5}{1F918 1F3FF}
+\bxce@do{metro}{1F687}
+\bxce@do{microbe}{1F9A0}
+\bxce@do{microphone}{1F3A4}
+\bxce@do{microphone2}{1F399}
+\bxce@do{microscope}{1F52C}
+\bxce@do{middle_finger}{1F595}
+\bxce@do{middle_finger_tone1}{1F595 1F3FB}
+\bxce@do{middle_finger_tone2}{1F595 1F3FC}
+\bxce@do{middle_finger_tone3}{1F595 1F3FD}
+\bxce@do{middle_finger_tone4}{1F595 1F3FE}
+\bxce@do{middle_finger_tone5}{1F595 1F3FF}
+\bxce@do{military_helmet}{1FA96}
+\bxce@do{military_medal}{1F396}
+\bxce@do{milk}{1F95B}
+\bxce@do{milky_way}{1F30C}
+\bxce@do{minibus}{1F690}
+\bxce@do{minidisc}{1F4BD}
+\bxce@do{mirror}{1FA9E}
+\bxce@do{mobile_phone}{1F4F1}
+\bxce@do{mobile_phone_off}{1F4F4}
+\bxce@do{money_mouth}{1F911}
+\bxce@do{money_with_wings}{1F4B8}
+\bxce@do{moneybag}{1F4B0}
+\bxce@do{monkey}{1F412}
+\bxce@do{monkey_face}{1F435}
+\bxce@do{monorail}{1F69D}
+\bxce@do{moon_cake}{1F96E}
+\bxce@do{mortar_board}{1F393}
+\bxce@do{mosque}{1F54C}
+\bxce@do{mosquito}{1F99F}
+\bxce@do{motor_scooter}{1F6F5}
+\bxce@do{motorboat}{1F6E5}
+\bxce@do{motorcycle}{1F3CD}
+\bxce@do{motorized_wheelchair}{1F9BC}
+\bxce@do{motorway}{1F6E3}
+\bxce@do{mount_fuji}{1F5FB}
+\bxce@do{mountain}{26F0}
+\bxce@do{mountain_cableway}{1F6A0}
+\bxce@do{mountain_railway}{1F69E}
+\bxce@do{mountain_snow}{1F3D4}
+\bxce@do{mouse}{1F42D}
+\bxce@do{mouse2}{1F401}
+\bxce@do{mouse_three_button}{1F5B1}
+\bxce@do{mouse_trap}{1FAA4}
+\bxce@do{movie_camera}{1F3A5}
+\bxce@do{moyai}{1F5FF}
+\bxce@do{mrs_claus}{1F936}
+\bxce@do{mrs_claus_tone1}{1F936 1F3FB}
+\bxce@do{mrs_claus_tone2}{1F936 1F3FC}
+\bxce@do{mrs_claus_tone3}{1F936 1F3FD}
+\bxce@do{mrs_claus_tone4}{1F936 1F3FE}
+\bxce@do{mrs_claus_tone5}{1F936 1F3FF}
+\bxce@do{muscle}{1F4AA}
+\bxce@do{muscle_tone1}{1F4AA 1F3FB}
+\bxce@do{muscle_tone2}{1F4AA 1F3FC}
+\bxce@do{muscle_tone3}{1F4AA 1F3FD}
+\bxce@do{muscle_tone4}{1F4AA 1F3FE}
+\bxce@do{muscle_tone5}{1F4AA 1F3FF}
+\bxce@do{mushroom}{1F344}
+\bxce@do{musical_keyboard}{1F3B9}
+\bxce@do{musical_note}{1F3B5}
+\bxce@do{musical_score}{1F3BC}
+\bxce@do{mute}{1F507}
+\bxce@do{mx_claus}{1F9D1 200D 1F384}
+\bxce@do{mx_claus_tone1}{1F9D1 1F3FB 200D 1F384}
+\bxce@do{mx_claus_tone2}{1F9D1 1F3FC 200D 1F384}
+\bxce@do{mx_claus_tone3}{1F9D1 1F3FD 200D 1F384}
+\bxce@do{mx_claus_tone4}{1F9D1 1F3FE 200D 1F384}
+\bxce@do{mx_claus_tone5}{1F9D1 1F3FF 200D 1F384}
+\or %[4]
+\bxce@do{nail_care}{1F485}
+\bxce@do{nail_care_tone1}{1F485 1F3FB}
+\bxce@do{nail_care_tone2}{1F485 1F3FC}
+\bxce@do{nail_care_tone3}{1F485 1F3FD}
+\bxce@do{nail_care_tone4}{1F485 1F3FE}
+\bxce@do{nail_care_tone5}{1F485 1F3FF}
+\bxce@do{name_badge}{1F4DB}
+\bxce@do{nauseated_face}{1F922}
+\bxce@do{nazar_amulet}{1F9FF}
+\bxce@do{necktie}{1F454}
+\bxce@do{negative_squared_cross_mark}{274E}
+\bxce@do{nerd}{1F913}
+\bxce@do{nesting_dolls}{1FA86}
+\bxce@do{neutral_face}{1F610}
+\bxce@do{new}{1F195}
+\bxce@do{new_moon}{1F311}
+\bxce@do{new_moon_with_face}{1F31A}
+\bxce@do{newspaper}{1F4F0}
+\bxce@do{newspaper2}{1F5DE}
+\bxce@do{ng}{1F196}
+\bxce@do{night_with_stars}{1F303}
+\bxce@do{nine}{39 20E3}
+\bxce@do{ninja}{1F977}
+\bxce@do{ninja_tone1}{1F977 1F3FB}
+\bxce@do{ninja_tone2}{1F977 1F3FC}
+\bxce@do{ninja_tone3}{1F977 1F3FD}
+\bxce@do{ninja_tone4}{1F977 1F3FE}
+\bxce@do{ninja_tone5}{1F977 1F3FF}
+\bxce@do{no_bell}{1F515}
+\bxce@do{no_bicycles}{1F6B3}
+\bxce@do{no_entry}{26D4}
+\bxce@do{no_entry_sign}{1F6AB}
+\bxce@do{no_mobile_phones}{1F4F5}
+\bxce@do{no_mouth}{1F636}
+\bxce@do{no_pedestrians}{1F6B7}
+\bxce@do{no_smoking}{1F6AD}
+\bxce@do{non-potable_water}{1F6B1}
+\bxce@do{nose}{1F443}
+\bxce@do{nose_tone1}{1F443 1F3FB}
+\bxce@do{nose_tone2}{1F443 1F3FC}
+\bxce@do{nose_tone3}{1F443 1F3FD}
+\bxce@do{nose_tone4}{1F443 1F3FE}
+\bxce@do{nose_tone5}{1F443 1F3FF}
+\bxce@do{notebook}{1F4D3}
+\bxce@do{notebook_with_decorative_cover}{1F4D4}
+\bxce@do{notepad_spiral}{1F5D2}
+\bxce@do{notes}{1F3B6}
+\bxce@do{nut_and_bolt}{1F529}
+\bxce@do{o}{2B55}
+\bxce@do{o2}{1F17E}
+\bxce@do{ocean}{1F30A}
+\bxce@do{octagonal_sign}{1F6D1}
+\bxce@do{octopus}{1F419}
+\bxce@do{oden}{1F362}
+\bxce@do{office}{1F3E2}
+\bxce@do{office_worker}{1F9D1 200D 1F4BC}
+\bxce@do{office_worker_tone1}{1F9D1 1F3FB 200D 1F4BC}
+\bxce@do{office_worker_tone2}{1F9D1 1F3FC 200D 1F4BC}
+\bxce@do{office_worker_tone3}{1F9D1 1F3FD 200D 1F4BC}
+\bxce@do{office_worker_tone4}{1F9D1 1F3FE 200D 1F4BC}
+\bxce@do{office_worker_tone5}{1F9D1 1F3FF 200D 1F4BC}
+\bxce@do{oil}{1F6E2}
+\bxce@do{ok}{1F197}
+\bxce@do{ok_hand}{1F44C}
+\bxce@do{ok_hand_tone1}{1F44C 1F3FB}
+\bxce@do{ok_hand_tone2}{1F44C 1F3FC}
+\bxce@do{ok_hand_tone3}{1F44C 1F3FD}
+\bxce@do{ok_hand_tone4}{1F44C 1F3FE}
+\bxce@do{ok_hand_tone5}{1F44C 1F3FF}
+\bxce@do{older_adult}{1F9D3}
+\bxce@do{older_adult_tone1}{1F9D3 1F3FB}
+\bxce@do{older_adult_tone2}{1F9D3 1F3FC}
+\bxce@do{older_adult_tone3}{1F9D3 1F3FD}
+\bxce@do{older_adult_tone4}{1F9D3 1F3FE}
+\bxce@do{older_adult_tone5}{1F9D3 1F3FF}
+\bxce@do{older_man}{1F474}
+\bxce@do{older_man_tone1}{1F474 1F3FB}
+\bxce@do{older_man_tone2}{1F474 1F3FC}
+\bxce@do{older_man_tone3}{1F474 1F3FD}
+\bxce@do{older_man_tone4}{1F474 1F3FE}
+\bxce@do{older_man_tone5}{1F474 1F3FF}
+\bxce@do{older_woman}{1F475}
+\bxce@do{older_woman_tone1}{1F475 1F3FB}
+\bxce@do{older_woman_tone2}{1F475 1F3FC}
+\bxce@do{older_woman_tone3}{1F475 1F3FD}
+\bxce@do{older_woman_tone4}{1F475 1F3FE}
+\bxce@do{older_woman_tone5}{1F475 1F3FF}
+\bxce@do{olive}{1FAD2}
+\bxce@do{om_symbol}{1F549}
+\bxce@do{on}{1F51B}
+\bxce@do{oncoming_automobile}{1F698}
+\bxce@do{oncoming_bus}{1F68D}
+\bxce@do{oncoming_police_car}{1F694}
+\bxce@do{oncoming_taxi}{1F696}
+\bxce@do{one}{31 20E3}
+\bxce@do{one_piece_swimsuit}{1FA71}
+\bxce@do{onion}{1F9C5}
+\bxce@do{open_file_folder}{1F4C2}
+\bxce@do{open_hands}{1F450}
+\bxce@do{open_hands_tone1}{1F450 1F3FB}
+\bxce@do{open_hands_tone2}{1F450 1F3FC}
+\bxce@do{open_hands_tone3}{1F450 1F3FD}
+\bxce@do{open_hands_tone4}{1F450 1F3FE}
+\bxce@do{open_hands_tone5}{1F450 1F3FF}
+\bxce@do{open_mouth}{1F62E}
+\bxce@do{ophiuchus}{26CE}
+\bxce@do{orange_book}{1F4D9}
+\bxce@do{orange_circle}{1F7E0}
+\bxce@do{orange_heart}{1F9E1}
+\bxce@do{orange_square}{1F7E7}
+\bxce@do{orangutan}{1F9A7}
+\bxce@do{orthodox_cross}{2626}
+\bxce@do{otter}{1F9A6}
+\bxce@do{outbox_tray}{1F4E4}
+\bxce@do{owl}{1F989}
+\bxce@do{ox}{1F402}
+\bxce@do{oyster}{1F9AA}
+\bxce@do{package}{1F4E6}
+\bxce@do{page_facing_up}{1F4C4}
+\bxce@do{page_with_curl}{1F4C3}
+\bxce@do{pager}{1F4DF}
+\bxce@do{paintbrush}{1F58C}
+\bxce@do{palm_tree}{1F334}
+\bxce@do{palms_up_together}{1F932}
+\bxce@do{palms_up_together_tone1}{1F932 1F3FB}
+\bxce@do{palms_up_together_tone2}{1F932 1F3FC}
+\bxce@do{palms_up_together_tone3}{1F932 1F3FD}
+\bxce@do{palms_up_together_tone4}{1F932 1F3FE}
+\bxce@do{palms_up_together_tone5}{1F932 1F3FF}
+\bxce@do{pancakes}{1F95E}
+\bxce@do{panda_face}{1F43C}
+\bxce@do{paperclip}{1F4CE}
+\bxce@do{paperclips}{1F587}
+\bxce@do{parachute}{1FA82}
+\bxce@do{park}{1F3DE}
+\bxce@do{parking}{1F17F}
+\bxce@do{parrot}{1F99C}
+\bxce@do{part_alternation_mark}{303D}
+\bxce@do{partly_sunny}{26C5}
+\bxce@do{partying_face}{1F973}
+\bxce@do{passport_control}{1F6C2}
+\bxce@do{pause_button}{23F8}
+\bxce@do{peace}{262E}
+\bxce@do{peach}{1F351}
+\bxce@do{peacock}{1F99A}
+\bxce@do{peanuts}{1F95C}
+\bxce@do{pear}{1F350}
+\bxce@do{pen_ballpoint}{1F58A}
+\bxce@do{pen_fountain}{1F58B}
+\bxce@do{pencil}{1F4DD}
+\bxce@do{pencil2}{270F}
+\bxce@do{penguin}{1F427}
+\bxce@do{pensive}{1F614}
+\bxce@do{people_holding_hands}{1F9D1 200D 1F91D 200D 1F9D1}
+\bxce@do{people_holding_hands_tone1}{1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FB}
+\bxce@do{people_holding_hands_tone1_tone2}{1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FC}
+\bxce@do{people_holding_hands_tone1_tone3}{1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FD}
+\bxce@do{people_holding_hands_tone1_tone4}{1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FE}
+\bxce@do{people_holding_hands_tone1_tone5}{1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FF}
+\bxce@do{people_holding_hands_tone2}{1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FC}
+\bxce@do{people_holding_hands_tone2_tone1}{1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FB}
+\bxce@do{people_holding_hands_tone2_tone3}{1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FD}
+\bxce@do{people_holding_hands_tone2_tone4}{1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FE}
+\bxce@do{people_holding_hands_tone2_tone5}{1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FF}
+\bxce@do{people_holding_hands_tone3}{1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FD}
+\bxce@do{people_holding_hands_tone3_tone1}{1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FB}
+\bxce@do{people_holding_hands_tone3_tone2}{1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FC}
+\bxce@do{people_holding_hands_tone3_tone4}{1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FE}
+\bxce@do{people_holding_hands_tone3_tone5}{1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FF}
+\bxce@do{people_holding_hands_tone4}{1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FE}
+\bxce@do{people_holding_hands_tone4_tone1}{1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FB}
+\bxce@do{people_holding_hands_tone4_tone2}{1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FC}
+\bxce@do{people_holding_hands_tone4_tone3}{1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FD}
+\bxce@do{people_holding_hands_tone4_tone5}{1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FF}
+\bxce@do{people_holding_hands_tone5}{1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FF}
+\bxce@do{people_holding_hands_tone5_tone1}{1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FB}
+\bxce@do{people_holding_hands_tone5_tone2}{1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FC}
+\bxce@do{people_holding_hands_tone5_tone3}{1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FD}
+\bxce@do{people_holding_hands_tone5_tone4}{1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FE}
+\bxce@do{people_hugging}{1FAC2}
+\bxce@do{people_with_bunny_ears_partying}{1F46F}
+\bxce@do{people_wrestling}{1F93C}
+\bxce@do{performing_arts}{1F3AD}
+\bxce@do{persevere}{1F623}
+\bxce@do{person_bald}{1F9D1 200D 1F9B2}
+\bxce@do{person_biking}{1F6B4}
+\bxce@do{person_biking_tone1}{1F6B4 1F3FB}
+\bxce@do{person_biking_tone2}{1F6B4 1F3FC}
+\bxce@do{person_biking_tone3}{1F6B4 1F3FD}
+\bxce@do{person_biking_tone4}{1F6B4 1F3FE}
+\bxce@do{person_biking_tone5}{1F6B4 1F3FF}
+\bxce@do{person_bouncing_ball}{26F9}
+\bxce@do{person_bouncing_ball_tone1}{26F9 1F3FB}
+\bxce@do{person_bouncing_ball_tone2}{26F9 1F3FC}
+\bxce@do{person_bouncing_ball_tone3}{26F9 1F3FD}
+\bxce@do{person_bouncing_ball_tone4}{26F9 1F3FE}
+\bxce@do{person_bouncing_ball_tone5}{26F9 1F3FF}
+\bxce@do{person_bowing}{1F647}
+\bxce@do{person_bowing_tone1}{1F647 1F3FB}
+\bxce@do{person_bowing_tone2}{1F647 1F3FC}
+\bxce@do{person_bowing_tone3}{1F647 1F3FD}
+\bxce@do{person_bowing_tone4}{1F647 1F3FE}
+\bxce@do{person_bowing_tone5}{1F647 1F3FF}
+\bxce@do{person_climbing}{1F9D7}
+\bxce@do{person_climbing_tone1}{1F9D7 1F3FB}
+\bxce@do{person_climbing_tone2}{1F9D7 1F3FC}
+\bxce@do{person_climbing_tone3}{1F9D7 1F3FD}
+\bxce@do{person_climbing_tone4}{1F9D7 1F3FE}
+\bxce@do{person_climbing_tone5}{1F9D7 1F3FF}
+\bxce@do{person_curly_hair}{1F9D1 200D 1F9B1}
+\bxce@do{person_doing_cartwheel}{1F938}
+\bxce@do{person_doing_cartwheel_tone1}{1F938 1F3FB}
+\bxce@do{person_doing_cartwheel_tone2}{1F938 1F3FC}
+\bxce@do{person_doing_cartwheel_tone3}{1F938 1F3FD}
+\bxce@do{person_doing_cartwheel_tone4}{1F938 1F3FE}
+\bxce@do{person_doing_cartwheel_tone5}{1F938 1F3FF}
+\bxce@do{person_facepalming}{1F926}
+\bxce@do{person_facepalming_tone1}{1F926 1F3FB}
+\bxce@do{person_facepalming_tone2}{1F926 1F3FC}
+\bxce@do{person_facepalming_tone3}{1F926 1F3FD}
+\bxce@do{person_facepalming_tone4}{1F926 1F3FE}
+\bxce@do{person_facepalming_tone5}{1F926 1F3FF}
+\bxce@do{person_feeding_baby}{1F9D1 200D 1F37C}
+\bxce@do{person_feeding_baby_tone1}{1F9D1 1F3FB 200D 1F37C}
+\bxce@do{person_feeding_baby_tone2}{1F9D1 1F3FC 200D 1F37C}
+\bxce@do{person_feeding_baby_tone3}{1F9D1 1F3FD 200D 1F37C}
+\bxce@do{person_feeding_baby_tone4}{1F9D1 1F3FE 200D 1F37C}
+\bxce@do{person_feeding_baby_tone5}{1F9D1 1F3FF 200D 1F37C}
+\bxce@do{person_fencing}{1F93A}
+\bxce@do{person_frowning}{1F64D}
+\bxce@do{person_frowning_tone1}{1F64D 1F3FB}
+\bxce@do{person_frowning_tone2}{1F64D 1F3FC}
+\bxce@do{person_frowning_tone3}{1F64D 1F3FD}
+\bxce@do{person_frowning_tone4}{1F64D 1F3FE}
+\bxce@do{person_frowning_tone5}{1F64D 1F3FF}
+\bxce@do{person_gesturing_no}{1F645}
+\bxce@do{person_gesturing_no_tone1}{1F645 1F3FB}
+\bxce@do{person_gesturing_no_tone2}{1F645 1F3FC}
+\bxce@do{person_gesturing_no_tone3}{1F645 1F3FD}
+\bxce@do{person_gesturing_no_tone4}{1F645 1F3FE}
+\bxce@do{person_gesturing_no_tone5}{1F645 1F3FF}
+\bxce@do{person_gesturing_ok}{1F646}
+\bxce@do{person_gesturing_ok_tone1}{1F646 1F3FB}
+\bxce@do{person_gesturing_ok_tone2}{1F646 1F3FC}
+\bxce@do{person_gesturing_ok_tone3}{1F646 1F3FD}
+\bxce@do{person_gesturing_ok_tone4}{1F646 1F3FE}
+\bxce@do{person_gesturing_ok_tone5}{1F646 1F3FF}
+\bxce@do{person_getting_haircut}{1F487}
+\bxce@do{person_getting_haircut_tone1}{1F487 1F3FB}
+\bxce@do{person_getting_haircut_tone2}{1F487 1F3FC}
+\bxce@do{person_getting_haircut_tone3}{1F487 1F3FD}
+\bxce@do{person_getting_haircut_tone4}{1F487 1F3FE}
+\bxce@do{person_getting_haircut_tone5}{1F487 1F3FF}
+\bxce@do{person_getting_massage}{1F486}
+\bxce@do{person_getting_massage_tone1}{1F486 1F3FB}
+\bxce@do{person_getting_massage_tone2}{1F486 1F3FC}
+\bxce@do{person_getting_massage_tone3}{1F486 1F3FD}
+\bxce@do{person_getting_massage_tone4}{1F486 1F3FE}
+\bxce@do{person_getting_massage_tone5}{1F486 1F3FF}
+\bxce@do{person_golfing}{1F3CC}
+\bxce@do{person_golfing_tone1}{1F3CC 1F3FB}
+\bxce@do{person_golfing_tone2}{1F3CC 1F3FC}
+\bxce@do{person_golfing_tone3}{1F3CC 1F3FD}
+\bxce@do{person_golfing_tone4}{1F3CC 1F3FE}
+\bxce@do{person_golfing_tone5}{1F3CC 1F3FF}
+\bxce@do{person_in_bed}{1F6CC}
+\bxce@do{person_in_bed_tone1}{1F6CC 1F3FB}
+\bxce@do{person_in_bed_tone2}{1F6CC 1F3FC}
+\bxce@do{person_in_bed_tone3}{1F6CC 1F3FD}
+\bxce@do{person_in_bed_tone4}{1F6CC 1F3FE}
+\bxce@do{person_in_bed_tone5}{1F6CC 1F3FF}
+\bxce@do{person_in_lotus_position}{1F9D8}
+\bxce@do{person_in_lotus_position_tone1}{1F9D8 1F3FB}
+\bxce@do{person_in_lotus_position_tone2}{1F9D8 1F3FC}
+\bxce@do{person_in_lotus_position_tone3}{1F9D8 1F3FD}
+\bxce@do{person_in_lotus_position_tone4}{1F9D8 1F3FE}
+\bxce@do{person_in_lotus_position_tone5}{1F9D8 1F3FF}
+\bxce@do{person_in_manual_wheelchair}{1F9D1 200D 1F9BD}
+\bxce@do{person_in_manual_wheelchair_tone1}{1F9D1 1F3FB 200D 1F9BD}
+\bxce@do{person_in_manual_wheelchair_tone2}{1F9D1 1F3FC 200D 1F9BD}
+\bxce@do{person_in_manual_wheelchair_tone3}{1F9D1 1F3FD 200D 1F9BD}
+\bxce@do{person_in_manual_wheelchair_tone4}{1F9D1 1F3FE 200D 1F9BD}
+\bxce@do{person_in_manual_wheelchair_tone5}{1F9D1 1F3FF 200D 1F9BD}
+\bxce@do{person_in_motorized_wheelchair}{1F9D1 200D 1F9BC}
+\bxce@do{person_in_motorized_wheelchair_tone1}{1F9D1 1F3FB 200D 1F9BC}
+\bxce@do{person_in_motorized_wheelchair_tone2}{1F9D1 1F3FC 200D 1F9BC}
+\bxce@do{person_in_motorized_wheelchair_tone3}{1F9D1 1F3FD 200D 1F9BC}
+\bxce@do{person_in_motorized_wheelchair_tone4}{1F9D1 1F3FE 200D 1F9BC}
+\bxce@do{person_in_motorized_wheelchair_tone5}{1F9D1 1F3FF 200D 1F9BC}
+\bxce@do{person_in_steamy_room}{1F9D6}
+\bxce@do{person_in_steamy_room_tone1}{1F9D6 1F3FB}
+\bxce@do{person_in_steamy_room_tone2}{1F9D6 1F3FC}
+\bxce@do{person_in_steamy_room_tone3}{1F9D6 1F3FD}
+\bxce@do{person_in_steamy_room_tone4}{1F9D6 1F3FE}
+\bxce@do{person_in_steamy_room_tone5}{1F9D6 1F3FF}
+\bxce@do{person_in_tuxedo}{1F935}
+\bxce@do{person_in_tuxedo_tone1}{1F935 1F3FB}
+\bxce@do{person_in_tuxedo_tone2}{1F935 1F3FC}
+\bxce@do{person_in_tuxedo_tone3}{1F935 1F3FD}
+\bxce@do{person_in_tuxedo_tone4}{1F935 1F3FE}
+\bxce@do{person_in_tuxedo_tone5}{1F935 1F3FF}
+\bxce@do{person_juggling}{1F939}
+\bxce@do{person_juggling_tone1}{1F939 1F3FB}
+\bxce@do{person_juggling_tone2}{1F939 1F3FC}
+\bxce@do{person_juggling_tone3}{1F939 1F3FD}
+\bxce@do{person_juggling_tone4}{1F939 1F3FE}
+\bxce@do{person_juggling_tone5}{1F939 1F3FF}
+\bxce@do{person_kneeling}{1F9CE}
+\bxce@do{person_kneeling_tone1}{1F9CE 1F3FB}
+\bxce@do{person_kneeling_tone2}{1F9CE 1F3FC}
+\bxce@do{person_kneeling_tone3}{1F9CE 1F3FD}
+\bxce@do{person_kneeling_tone4}{1F9CE 1F3FE}
+\bxce@do{person_kneeling_tone5}{1F9CE 1F3FF}
+\bxce@do{person_lifting_weights}{1F3CB}
+\bxce@do{person_lifting_weights_tone1}{1F3CB 1F3FB}
+\bxce@do{person_lifting_weights_tone2}{1F3CB 1F3FC}
+\bxce@do{person_lifting_weights_tone3}{1F3CB 1F3FD}
+\bxce@do{person_lifting_weights_tone4}{1F3CB 1F3FE}
+\bxce@do{person_lifting_weights_tone5}{1F3CB 1F3FF}
+\bxce@do{person_mountain_biking}{1F6B5}
+\bxce@do{person_mountain_biking_tone1}{1F6B5 1F3FB}
+\bxce@do{person_mountain_biking_tone2}{1F6B5 1F3FC}
+\bxce@do{person_mountain_biking_tone3}{1F6B5 1F3FD}
+\bxce@do{person_mountain_biking_tone4}{1F6B5 1F3FE}
+\bxce@do{person_mountain_biking_tone5}{1F6B5 1F3FF}
+\bxce@do{person_playing_handball}{1F93E}
+\bxce@do{person_playing_handball_tone1}{1F93E 1F3FB}
+\bxce@do{person_playing_handball_tone2}{1F93E 1F3FC}
+\bxce@do{person_playing_handball_tone3}{1F93E 1F3FD}
+\bxce@do{person_playing_handball_tone4}{1F93E 1F3FE}
+\bxce@do{person_playing_handball_tone5}{1F93E 1F3FF}
+\bxce@do{person_playing_water_polo}{1F93D}
+\bxce@do{person_playing_water_polo_tone1}{1F93D 1F3FB}
+\bxce@do{person_playing_water_polo_tone2}{1F93D 1F3FC}
+\bxce@do{person_playing_water_polo_tone3}{1F93D 1F3FD}
+\bxce@do{person_playing_water_polo_tone4}{1F93D 1F3FE}
+\bxce@do{person_playing_water_polo_tone5}{1F93D 1F3FF}
+\bxce@do{person_pouting}{1F64E}
+\bxce@do{person_pouting_tone1}{1F64E 1F3FB}
+\bxce@do{person_pouting_tone2}{1F64E 1F3FC}
+\bxce@do{person_pouting_tone3}{1F64E 1F3FD}
+\bxce@do{person_pouting_tone4}{1F64E 1F3FE}
+\bxce@do{person_pouting_tone5}{1F64E 1F3FF}
+\bxce@do{person_raising_hand}{1F64B}
+\bxce@do{person_raising_hand_tone1}{1F64B 1F3FB}
+\bxce@do{person_raising_hand_tone2}{1F64B 1F3FC}
+\bxce@do{person_raising_hand_tone3}{1F64B 1F3FD}
+\bxce@do{person_raising_hand_tone4}{1F64B 1F3FE}
+\bxce@do{person_raising_hand_tone5}{1F64B 1F3FF}
+\bxce@do{person_red_hair}{1F9D1 200D 1F9B0}
+\bxce@do{person_rowing_boat}{1F6A3}
+\bxce@do{person_rowing_boat_tone1}{1F6A3 1F3FB}
+\bxce@do{person_rowing_boat_tone2}{1F6A3 1F3FC}
+\bxce@do{person_rowing_boat_tone3}{1F6A3 1F3FD}
+\bxce@do{person_rowing_boat_tone4}{1F6A3 1F3FE}
+\bxce@do{person_rowing_boat_tone5}{1F6A3 1F3FF}
+\bxce@do{person_running}{1F3C3}
+\bxce@do{person_running_tone1}{1F3C3 1F3FB}
+\bxce@do{person_running_tone2}{1F3C3 1F3FC}
+\bxce@do{person_running_tone3}{1F3C3 1F3FD}
+\bxce@do{person_running_tone4}{1F3C3 1F3FE}
+\bxce@do{person_running_tone5}{1F3C3 1F3FF}
+\bxce@do{person_shrugging}{1F937}
+\bxce@do{person_shrugging_tone1}{1F937 1F3FB}
+\bxce@do{person_shrugging_tone2}{1F937 1F3FC}
+\bxce@do{person_shrugging_tone3}{1F937 1F3FD}
+\bxce@do{person_shrugging_tone4}{1F937 1F3FE}
+\bxce@do{person_shrugging_tone5}{1F937 1F3FF}
+\bxce@do{person_standing}{1F9CD}
+\bxce@do{person_standing_tone1}{1F9CD 1F3FB}
+\bxce@do{person_standing_tone2}{1F9CD 1F3FC}
+\bxce@do{person_standing_tone3}{1F9CD 1F3FD}
+\bxce@do{person_standing_tone4}{1F9CD 1F3FE}
+\bxce@do{person_standing_tone5}{1F9CD 1F3FF}
+\bxce@do{person_surfing}{1F3C4}
+\bxce@do{person_surfing_tone1}{1F3C4 1F3FB}
+\bxce@do{person_surfing_tone2}{1F3C4 1F3FC}
+\bxce@do{person_surfing_tone3}{1F3C4 1F3FD}
+\bxce@do{person_surfing_tone4}{1F3C4 1F3FE}
+\bxce@do{person_surfing_tone5}{1F3C4 1F3FF}
+\bxce@do{person_swimming}{1F3CA}
+\bxce@do{person_swimming_tone1}{1F3CA 1F3FB}
+\bxce@do{person_swimming_tone2}{1F3CA 1F3FC}
+\bxce@do{person_swimming_tone3}{1F3CA 1F3FD}
+\bxce@do{person_swimming_tone4}{1F3CA 1F3FE}
+\bxce@do{person_swimming_tone5}{1F3CA 1F3FF}
+\bxce@do{person_tipping_hand}{1F481}
+\bxce@do{person_tipping_hand_tone1}{1F481 1F3FB}
+\bxce@do{person_tipping_hand_tone2}{1F481 1F3FC}
+\bxce@do{person_tipping_hand_tone3}{1F481 1F3FD}
+\bxce@do{person_tipping_hand_tone4}{1F481 1F3FE}
+\bxce@do{person_tipping_hand_tone5}{1F481 1F3FF}
+\bxce@do{person_tone1_bald}{1F9D1 1F3FB 200D 1F9B2}
+\bxce@do{person_tone1_curly_hair}{1F9D1 1F3FB 200D 1F9B1}
+\bxce@do{person_tone1_red_hair}{1F9D1 1F3FB 200D 1F9B0}
+\bxce@do{person_tone1_white_hair}{1F9D1 1F3FB 200D 1F9B3}
+\bxce@do{person_tone2_bald}{1F9D1 1F3FC 200D 1F9B2}
+\bxce@do{person_tone2_curly_hair}{1F9D1 1F3FC 200D 1F9B1}
+\bxce@do{person_tone2_red_hair}{1F9D1 1F3FC 200D 1F9B0}
+\bxce@do{person_tone2_white_hair}{1F9D1 1F3FC 200D 1F9B3}
+\bxce@do{person_tone3_bald}{1F9D1 1F3FD 200D 1F9B2}
+\bxce@do{person_tone3_curly_hair}{1F9D1 1F3FD 200D 1F9B1}
+\bxce@do{person_tone3_red_hair}{1F9D1 1F3FD 200D 1F9B0}
+\bxce@do{person_tone3_white_hair}{1F9D1 1F3FD 200D 1F9B3}
+\bxce@do{person_tone4_bald}{1F9D1 1F3FE 200D 1F9B2}
+\bxce@do{person_tone4_curly_hair}{1F9D1 1F3FE 200D 1F9B1}
+\bxce@do{person_tone4_red_hair}{1F9D1 1F3FE 200D 1F9B0}
+\bxce@do{person_tone4_white_hair}{1F9D1 1F3FE 200D 1F9B3}
+\bxce@do{person_tone5_bald}{1F9D1 1F3FF 200D 1F9B2}
+\bxce@do{person_tone5_curly_hair}{1F9D1 1F3FF 200D 1F9B1}
+\bxce@do{person_tone5_red_hair}{1F9D1 1F3FF 200D 1F9B0}
+\bxce@do{person_tone5_white_hair}{1F9D1 1F3FF 200D 1F9B3}
+\bxce@do{person_walking}{1F6B6}
+\bxce@do{person_walking_tone1}{1F6B6 1F3FB}
+\bxce@do{person_walking_tone2}{1F6B6 1F3FC}
+\bxce@do{person_walking_tone3}{1F6B6 1F3FD}
+\bxce@do{person_walking_tone4}{1F6B6 1F3FE}
+\bxce@do{person_walking_tone5}{1F6B6 1F3FF}
+\bxce@do{person_wearing_turban}{1F473}
+\bxce@do{person_wearing_turban_tone1}{1F473 1F3FB}
+\bxce@do{person_wearing_turban_tone2}{1F473 1F3FC}
+\bxce@do{person_wearing_turban_tone3}{1F473 1F3FD}
+\bxce@do{person_wearing_turban_tone4}{1F473 1F3FE}
+\bxce@do{person_wearing_turban_tone5}{1F473 1F3FF}
+\bxce@do{person_white_hair}{1F9D1 200D 1F9B3}
+\bxce@do{person_with_probing_cane}{1F9D1 200D 1F9AF}
+\bxce@do{person_with_probing_cane_tone1}{1F9D1 1F3FB 200D 1F9AF}
+\bxce@do{person_with_probing_cane_tone2}{1F9D1 1F3FC 200D 1F9AF}
+\bxce@do{person_with_probing_cane_tone3}{1F9D1 1F3FD 200D 1F9AF}
+\bxce@do{person_with_probing_cane_tone4}{1F9D1 1F3FE 200D 1F9AF}
+\bxce@do{person_with_probing_cane_tone5}{1F9D1 1F3FF 200D 1F9AF}
+\bxce@do{person_with_veil}{1F470}
+\bxce@do{person_with_veil_tone1}{1F470 1F3FB}
+\bxce@do{person_with_veil_tone2}{1F470 1F3FC}
+\bxce@do{person_with_veil_tone3}{1F470 1F3FD}
+\bxce@do{person_with_veil_tone4}{1F470 1F3FE}
+\bxce@do{person_with_veil_tone5}{1F470 1F3FF}
+\bxce@do{petri_dish}{1F9EB}
+\bxce@do{pick}{26CF}
+\bxce@do{pickup_truck}{1F6FB}
+\bxce@do{pie}{1F967}
+\bxce@do{pig}{1F437}
+\bxce@do{pig2}{1F416}
+\bxce@do{pig_nose}{1F43D}
+\bxce@do{pill}{1F48A}
+\bxce@do{pilot}{1F9D1 200D 2708}
+\bxce@do{pilot_tone1}{1F9D1 1F3FB 200D 2708}
+\bxce@do{pilot_tone2}{1F9D1 1F3FC 200D 2708}
+\bxce@do{pilot_tone3}{1F9D1 1F3FD 200D 2708}
+\bxce@do{pilot_tone4}{1F9D1 1F3FE 200D 2708}
+\bxce@do{pilot_tone5}{1F9D1 1F3FF 200D 2708}
+\bxce@do{pinched_fingers}{1F90C}
+\bxce@do{pinched_fingers_tone1}{1F90C 1F3FB}
+\bxce@do{pinched_fingers_tone2}{1F90C 1F3FC}
+\bxce@do{pinched_fingers_tone3}{1F90C 1F3FD}
+\bxce@do{pinched_fingers_tone4}{1F90C 1F3FE}
+\bxce@do{pinched_fingers_tone5}{1F90C 1F3FF}
+\bxce@do{pinching_hand}{1F90F}
+\bxce@do{pinching_hand_tone1}{1F90F 1F3FB}
+\bxce@do{pinching_hand_tone2}{1F90F 1F3FC}
+\bxce@do{pinching_hand_tone3}{1F90F 1F3FD}
+\bxce@do{pinching_hand_tone4}{1F90F 1F3FE}
+\bxce@do{pinching_hand_tone5}{1F90F 1F3FF}
+\bxce@do{pineapple}{1F34D}
+\bxce@do{ping_pong}{1F3D3}
+\bxce@do{pirate_flag}{1F3F4 200D 2620}
+\bxce@do{pisces}{2653}
+\bxce@do{pizza}{1F355}
+\bxce@do{pinata}{1FA85}
+\bxce@do{placard}{1FAA7}
+\bxce@do{place_of_worship}{1F6D0}
+\bxce@do{play_pause}{23EF}
+\bxce@do{pleading_face}{1F97A}
+\bxce@do{plunger}{1FAA0}
+\bxce@do{point_down}{1F447}
+\bxce@do{point_down_tone1}{1F447 1F3FB}
+\bxce@do{point_down_tone2}{1F447 1F3FC}
+\bxce@do{point_down_tone3}{1F447 1F3FD}
+\bxce@do{point_down_tone4}{1F447 1F3FE}
+\bxce@do{point_down_tone5}{1F447 1F3FF}
+\bxce@do{point_left}{1F448}
+\bxce@do{point_left_tone1}{1F448 1F3FB}
+\bxce@do{point_left_tone2}{1F448 1F3FC}
+\bxce@do{point_left_tone3}{1F448 1F3FD}
+\bxce@do{point_left_tone4}{1F448 1F3FE}
+\bxce@do{point_left_tone5}{1F448 1F3FF}
+\bxce@do{point_right}{1F449}
+\bxce@do{point_right_tone1}{1F449 1F3FB}
+\bxce@do{point_right_tone2}{1F449 1F3FC}
+\bxce@do{point_right_tone3}{1F449 1F3FD}
+\bxce@do{point_right_tone4}{1F449 1F3FE}
+\bxce@do{point_right_tone5}{1F449 1F3FF}
+\bxce@do{point_up}{261D}
+\bxce@do{point_up_2}{1F446}
+\bxce@do{point_up_2_tone1}{1F446 1F3FB}
+\bxce@do{point_up_2_tone2}{1F446 1F3FC}
+\bxce@do{point_up_2_tone3}{1F446 1F3FD}
+\bxce@do{point_up_2_tone4}{1F446 1F3FE}
+\bxce@do{point_up_2_tone5}{1F446 1F3FF}
+\bxce@do{point_up_tone1}{261D 1F3FB}
+\bxce@do{point_up_tone2}{261D 1F3FC}
+\bxce@do{point_up_tone3}{261D 1F3FD}
+\bxce@do{point_up_tone4}{261D 1F3FE}
+\bxce@do{point_up_tone5}{261D 1F3FF}
+\bxce@do{polar_bear}{1F43B 200D 2744}
+\bxce@do{police_car}{1F693}
+\bxce@do{police_officer}{1F46E}
+\bxce@do{police_officer_tone1}{1F46E 1F3FB}
+\bxce@do{police_officer_tone2}{1F46E 1F3FC}
+\bxce@do{police_officer_tone3}{1F46E 1F3FD}
+\bxce@do{police_officer_tone4}{1F46E 1F3FE}
+\bxce@do{police_officer_tone5}{1F46E 1F3FF}
+\bxce@do{poodle}{1F429}
+\bxce@do{poop}{1F4A9}
+\bxce@do{popcorn}{1F37F}
+\bxce@do{post_office}{1F3E3}
+\bxce@do{postal_horn}{1F4EF}
+\bxce@do{postbox}{1F4EE}
+\bxce@do{potable_water}{1F6B0}
+\bxce@do{potato}{1F954}
+\bxce@do{potted_plant}{1FAB4}
+\bxce@do{pouch}{1F45D}
+\bxce@do{poultry_leg}{1F357}
+\bxce@do{pound}{1F4B7}
+\bxce@do{pound_symbol}{23}%NA
+\bxce@do{pouting_cat}{1F63E}
+\bxce@do{pray}{1F64F}
+\bxce@do{pray_tone1}{1F64F 1F3FB}
+\bxce@do{pray_tone2}{1F64F 1F3FC}
+\bxce@do{pray_tone3}{1F64F 1F3FD}
+\bxce@do{pray_tone4}{1F64F 1F3FE}
+\bxce@do{pray_tone5}{1F64F 1F3FF}
+\bxce@do{prayer_beads}{1F4FF}
+\bxce@do{pregnant_woman}{1F930}
+\bxce@do{pregnant_woman_tone1}{1F930 1F3FB}
+\bxce@do{pregnant_woman_tone2}{1F930 1F3FC}
+\bxce@do{pregnant_woman_tone3}{1F930 1F3FD}
+\bxce@do{pregnant_woman_tone4}{1F930 1F3FE}
+\bxce@do{pregnant_woman_tone5}{1F930 1F3FF}
+\bxce@do{pretzel}{1F968}
+\bxce@do{prince}{1F934}
+\bxce@do{prince_tone1}{1F934 1F3FB}
+\bxce@do{prince_tone2}{1F934 1F3FC}
+\bxce@do{prince_tone3}{1F934 1F3FD}
+\bxce@do{prince_tone4}{1F934 1F3FE}
+\bxce@do{prince_tone5}{1F934 1F3FF}
+\bxce@do{princess}{1F478}
+\bxce@do{princess_tone1}{1F478 1F3FB}
+\bxce@do{princess_tone2}{1F478 1F3FC}
+\bxce@do{princess_tone3}{1F478 1F3FD}
+\bxce@do{princess_tone4}{1F478 1F3FE}
+\bxce@do{princess_tone5}{1F478 1F3FF}
+\bxce@do{printer}{1F5A8}
+\bxce@do{probing_cane}{1F9AF}
+\bxce@do{projector}{1F4FD}
+\bxce@do{punch}{1F44A}
+\bxce@do{punch_tone1}{1F44A 1F3FB}
+\bxce@do{punch_tone2}{1F44A 1F3FC}
+\bxce@do{punch_tone3}{1F44A 1F3FD}
+\bxce@do{punch_tone4}{1F44A 1F3FE}
+\bxce@do{punch_tone5}{1F44A 1F3FF}
+\bxce@do{purple_circle}{1F7E3}
+\bxce@do{purple_heart}{1F49C}
+\bxce@do{purple_square}{1F7EA}
+\bxce@do{purse}{1F45B}
+\bxce@do{pushpin}{1F4CC}
+\bxce@do{put_litter_in_its_place}{1F6AE}
+\or %[5]
+\bxce@do{question}{2753}
+\bxce@do{rabbit}{1F430}
+\bxce@do{rabbit2}{1F407}
+\bxce@do{raccoon}{1F99D}
+\bxce@do{race_car}{1F3CE}
+\bxce@do{racehorse}{1F40E}
+\bxce@do{radio}{1F4FB}
+\bxce@do{radio_button}{1F518}
+\bxce@do{radioactive}{2622}
+\bxce@do{rage}{1F621}
+\bxce@do{railway_car}{1F683}
+\bxce@do{railway_track}{1F6E4}
+\bxce@do{rainbow}{1F308}
+\bxce@do{rainbow_flag}{1F3F3 200D 1F308}
+\bxce@do{raised_back_of_hand}{1F91A}
+\bxce@do{raised_back_of_hand_tone1}{1F91A 1F3FB}
+\bxce@do{raised_back_of_hand_tone2}{1F91A 1F3FC}
+\bxce@do{raised_back_of_hand_tone3}{1F91A 1F3FD}
+\bxce@do{raised_back_of_hand_tone4}{1F91A 1F3FE}
+\bxce@do{raised_back_of_hand_tone5}{1F91A 1F3FF}
+\bxce@do{raised_hand}{270B}
+\bxce@do{raised_hand_tone1}{270B 1F3FB}
+\bxce@do{raised_hand_tone2}{270B 1F3FC}
+\bxce@do{raised_hand_tone3}{270B 1F3FD}
+\bxce@do{raised_hand_tone4}{270B 1F3FE}
+\bxce@do{raised_hand_tone5}{270B 1F3FF}
+\bxce@do{raised_hands}{1F64C}
+\bxce@do{raised_hands_tone1}{1F64C 1F3FB}
+\bxce@do{raised_hands_tone2}{1F64C 1F3FC}
+\bxce@do{raised_hands_tone3}{1F64C 1F3FD}
+\bxce@do{raised_hands_tone4}{1F64C 1F3FE}
+\bxce@do{raised_hands_tone5}{1F64C 1F3FF}
+\bxce@do{ram}{1F40F}
+\bxce@do{ramen}{1F35C}
+\bxce@do{rat}{1F400}
+\bxce@do{razor}{1FA92}
+\bxce@do{receipt}{1F9FE}
+\bxce@do{record_button}{23FA}
+\bxce@do{recycle}{267B}
+\bxce@do{red_car}{1F697}
+\bxce@do{red_circle}{1F534}
+\bxce@do{red_envelope}{1F9E7}
+\bxce@do{red_haired}{1F9B0}
+\bxce@do{red_square}{1F7E5}
+\bxce@do{regional_indicator_a}{1F1E6}
+\bxce@do{regional_indicator_b}{1F1E7}
+\bxce@do{regional_indicator_c}{1F1E8}
+\bxce@do{regional_indicator_d}{1F1E9}
+\bxce@do{regional_indicator_e}{1F1EA}
+\bxce@do{regional_indicator_f}{1F1EB}
+\bxce@do{regional_indicator_g}{1F1EC}
+\bxce@do{regional_indicator_h}{1F1ED}
+\bxce@do{regional_indicator_i}{1F1EE}
+\bxce@do{regional_indicator_j}{1F1EF}
+\bxce@do{regional_indicator_k}{1F1F0}
+\bxce@do{regional_indicator_l}{1F1F1}
+\bxce@do{regional_indicator_m}{1F1F2}
+\bxce@do{regional_indicator_n}{1F1F3}
+\bxce@do{regional_indicator_o}{1F1F4}
+\bxce@do{regional_indicator_p}{1F1F5}
+\bxce@do{regional_indicator_q}{1F1F6}
+\bxce@do{regional_indicator_r}{1F1F7}
+\bxce@do{regional_indicator_s}{1F1F8}
+\bxce@do{regional_indicator_t}{1F1F9}
+\bxce@do{regional_indicator_u}{1F1FA}
+\bxce@do{regional_indicator_v}{1F1FB}
+\bxce@do{regional_indicator_w}{1F1FC}
+\bxce@do{regional_indicator_x}{1F1FD}
+\bxce@do{regional_indicator_y}{1F1FE}
+\bxce@do{regional_indicator_z}{1F1FF}
+\bxce@do{registered}{AE}
+\bxce@do{relaxed}{263A}
+\bxce@do{relieved}{1F60C}
+\bxce@do{reminder_ribbon}{1F397}
+\bxce@do{repeat}{1F501}
+\bxce@do{repeat_one}{1F502}
+\bxce@do{restroom}{1F6BB}
+\bxce@do{revolving_hearts}{1F49E}
+\bxce@do{rewind}{23EA}
+\bxce@do{rhino}{1F98F}
+\bxce@do{ribbon}{1F380}
+\bxce@do{rice}{1F35A}
+\bxce@do{rice_ball}{1F359}
+\bxce@do{rice_cracker}{1F358}
+\bxce@do{rice_scene}{1F391}
+\bxce@do{right_facing_fist}{1F91C}
+\bxce@do{right_facing_fist_tone1}{1F91C 1F3FB}
+\bxce@do{right_facing_fist_tone2}{1F91C 1F3FC}
+\bxce@do{right_facing_fist_tone3}{1F91C 1F3FD}
+\bxce@do{right_facing_fist_tone4}{1F91C 1F3FE}
+\bxce@do{right_facing_fist_tone5}{1F91C 1F3FF}
+\bxce@do{ring}{1F48D}
+\bxce@do{ringed_planet}{1FA90}
+\bxce@do{robot}{1F916}
+\bxce@do{rock}{1FAA8}
+\bxce@do{rocket}{1F680}
+\bxce@do{rofl}{1F923}
+\bxce@do{roll_of_paper}{1F9FB}
+\bxce@do{roller_coaster}{1F3A2}
+\bxce@do{roller_skate}{1F6FC}
+\bxce@do{rolling_eyes}{1F644}
+\bxce@do{rooster}{1F413}
+\bxce@do{rose}{1F339}
+\bxce@do{rosette}{1F3F5}
+\bxce@do{rotating_light}{1F6A8}
+\bxce@do{round_pushpin}{1F4CD}
+\bxce@do{rugby_football}{1F3C9}
+\bxce@do{running_shirt_with_sash}{1F3BD}
+\bxce@do{sa}{1F202}
+\bxce@do{safety_pin}{1F9F7}
+\bxce@do{safety_vest}{1F9BA}
+\bxce@do{sagittarius}{2650}
+\bxce@do{sailboat}{26F5}
+\bxce@do{sake}{1F376}
+\bxce@do{salad}{1F957}
+\bxce@do{salt}{1F9C2}
+\bxce@do{sandal}{1F461}
+\bxce@do{sandwich}{1F96A}
+\bxce@do{santa}{1F385}
+\bxce@do{santa_tone1}{1F385 1F3FB}
+\bxce@do{santa_tone2}{1F385 1F3FC}
+\bxce@do{santa_tone3}{1F385 1F3FD}
+\bxce@do{santa_tone4}{1F385 1F3FE}
+\bxce@do{santa_tone5}{1F385 1F3FF}
+\bxce@do{sari}{1F97B}
+\bxce@do{satellite}{1F4E1}
+\bxce@do{satellite_orbital}{1F6F0}
+\bxce@do{sauropod}{1F995}
+\bxce@do{saxophone}{1F3B7}
+\bxce@do{scales}{2696}
+\bxce@do{scarf}{1F9E3}
+\bxce@do{school}{1F3EB}
+\bxce@do{school_satchel}{1F392}
+\bxce@do{scientist}{1F9D1 200D 1F52C}
+\bxce@do{scientist_tone1}{1F9D1 1F3FB 200D 1F52C}
+\bxce@do{scientist_tone2}{1F9D1 1F3FC 200D 1F52C}
+\bxce@do{scientist_tone3}{1F9D1 1F3FD 200D 1F52C}
+\bxce@do{scientist_tone4}{1F9D1 1F3FE 200D 1F52C}
+\bxce@do{scientist_tone5}{1F9D1 1F3FF 200D 1F52C}
+\bxce@do{scissors}{2702}
+\bxce@do{scooter}{1F6F4}
+\bxce@do{scorpion}{1F982}
+\bxce@do{scorpius}{264F}
+\bxce@do{scotland}{1F3F4 E0067 E0062 E0073 E0063 E0074 E007F}
+\bxce@do{scream}{1F631}
+\bxce@do{scream_cat}{1F640}
+\bxce@do{screwdriver}{1FA9B}
+\bxce@do{scroll}{1F4DC}
+\bxce@do{seal}{1F9AD}
+\bxce@do{seat}{1F4BA}
+\bxce@do{second_place}{1F948}
+\bxce@do{secret}{3299}
+\bxce@do{see_no_evil}{1F648}
+\bxce@do{seedling}{1F331}
+\bxce@do{selfie}{1F933}
+\bxce@do{selfie_tone1}{1F933 1F3FB}
+\bxce@do{selfie_tone2}{1F933 1F3FC}
+\bxce@do{selfie_tone3}{1F933 1F3FD}
+\bxce@do{selfie_tone4}{1F933 1F3FE}
+\bxce@do{selfie_tone5}{1F933 1F3FF}
+\bxce@do{service_dog}{1F415 200D 1F9BA}
+\bxce@do{seven}{37 20E3}
+\bxce@do{sewing_needle}{1FAA1}
+\bxce@do{shallow_pan_of_food}{1F958}
+\bxce@do{shamrock}{2618}
+\bxce@do{shark}{1F988}
+\bxce@do{shaved_ice}{1F367}
+\bxce@do{sheep}{1F411}
+\bxce@do{shell}{1F41A}
+\bxce@do{shield}{1F6E1}
+\bxce@do{shinto_shrine}{26E9}
+\bxce@do{ship}{1F6A2}
+\bxce@do{shirt}{1F455}
+\bxce@do{shopping_bags}{1F6CD}
+\bxce@do{shopping_cart}{1F6D2}
+\bxce@do{shorts}{1FA73}
+\bxce@do{shower}{1F6BF}
+\bxce@do{shrimp}{1F990}
+\bxce@do{shushing_face}{1F92B}
+\bxce@do{signal_strength}{1F4F6}
+\bxce@do{singer}{1F9D1 200D 1F3A4}
+\bxce@do{singer_tone1}{1F9D1 1F3FB 200D 1F3A4}
+\bxce@do{singer_tone2}{1F9D1 1F3FC 200D 1F3A4}
+\bxce@do{singer_tone3}{1F9D1 1F3FD 200D 1F3A4}
+\bxce@do{singer_tone4}{1F9D1 1F3FE 200D 1F3A4}
+\bxce@do{singer_tone5}{1F9D1 1F3FF 200D 1F3A4}
+\bxce@do{six}{36 20E3}
+\bxce@do{six_pointed_star}{1F52F}
+\bxce@do{skateboard}{1F6F9}
+\bxce@do{ski}{1F3BF}
+\bxce@do{skier}{26F7}
+\bxce@do{skull}{1F480}
+\bxce@do{skull_crossbones}{2620}
+\bxce@do{skunk}{1F9A8}
+\bxce@do{sled}{1F6F7}
+\bxce@do{sleeping}{1F634}
+\bxce@do{sleeping_accommodation}{1F6CC}
+\bxce@do{sleepy}{1F62A}
+\bxce@do{slight_frown}{1F641}
+\bxce@do{slight_smile}{1F642}
+\bxce@do{slot_machine}{1F3B0}
+\bxce@do{sloth}{1F9A5}
+\bxce@do{small_blue_diamond}{1F539}
+\bxce@do{small_orange_diamond}{1F538}
+\bxce@do{small_red_triangle}{1F53A}
+\bxce@do{small_red_triangle_down}{1F53B}
+\bxce@do{smile}{1F604}
+\bxce@do{smile_cat}{1F638}
+\bxce@do{smiley}{1F603}
+\bxce@do{smiley_cat}{1F63A}
+\bxce@do{smiling_face_with_3_hearts}{1F970}
+\bxce@do{smiling_face_with_tear}{1F972}
+\bxce@do{smiling_imp}{1F608}
+\bxce@do{smirk}{1F60F}
+\bxce@do{smirk_cat}{1F63C}
+\bxce@do{smoking}{1F6AC}
+\bxce@do{snail}{1F40C}
+\bxce@do{snake}{1F40D}
+\bxce@do{sneezing_face}{1F927}
+\bxce@do{snowboarder}{1F3C2}
+\bxce@do{snowboarder_tone1}{1F3C2 1F3FB}
+\bxce@do{snowboarder_tone2}{1F3C2 1F3FC}
+\bxce@do{snowboarder_tone3}{1F3C2 1F3FD}
+\bxce@do{snowboarder_tone4}{1F3C2 1F3FE}
+\bxce@do{snowboarder_tone5}{1F3C2 1F3FF}
+\bxce@do{snowflake}{2744}
+\bxce@do{snowman}{26C4}
+\bxce@do{snowman2}{2603}
+\bxce@do{soap}{1F9FC}
+\bxce@do{sob}{1F62D}
+\bxce@do{soccer}{26BD}
+\bxce@do{socks}{1F9E6}
+\bxce@do{softball}{1F94E}
+\bxce@do{soon}{1F51C}
+\bxce@do{sos}{1F198}
+\bxce@do{sound}{1F509}
+\bxce@do{space_invader}{1F47E}
+\bxce@do{spades}{2660}
+\bxce@do{spaghetti}{1F35D}
+\bxce@do{sparkle}{2747}
+\bxce@do{sparkler}{1F387}
+\bxce@do{sparkles}{2728}
+\bxce@do{sparkling_heart}{1F496}
+\bxce@do{speak_no_evil}{1F64A}
+\bxce@do{speaker}{1F508}
+\bxce@do{speaking_head}{1F5E3}
+\bxce@do{speech_balloon}{1F4AC}
+\bxce@do{speech_left}{1F5E8}
+\bxce@do{speedboat}{1F6A4}
+\bxce@do{spider}{1F577}
+\bxce@do{spider_web}{1F578}
+\bxce@do{sponge}{1F9FD}
+\bxce@do{spoon}{1F944}
+\bxce@do{squeeze_bottle}{1F9F4}
+\bxce@do{squid}{1F991}
+\bxce@do{stadium}{1F3DF}
+\bxce@do{star}{2B50}
+\bxce@do{star2}{1F31F}
+\bxce@do{star_and_crescent}{262A}
+\bxce@do{star_of_david}{2721}
+\bxce@do{star_struck}{1F929}
+\bxce@do{stars}{1F320}
+\bxce@do{station}{1F689}
+\bxce@do{statue_of_liberty}{1F5FD}
+\bxce@do{steam_locomotive}{1F682}
+\bxce@do{stethoscope}{1FA7A}
+\bxce@do{stew}{1F372}
+\bxce@do{stop_button}{23F9}
+\bxce@do{stopwatch}{23F1}
+\bxce@do{straight_ruler}{1F4CF}
+\bxce@do{strawberry}{1F353}
+\bxce@do{stuck_out_tongue}{1F61B}
+\bxce@do{stuck_out_tongue_closed_eyes}{1F61D}
+\bxce@do{stuck_out_tongue_winking_eye}{1F61C}
+\bxce@do{student}{1F9D1 200D 1F393}
+\bxce@do{student_tone1}{1F9D1 1F3FB 200D 1F393}
+\bxce@do{student_tone2}{1F9D1 1F3FC 200D 1F393}
+\bxce@do{student_tone3}{1F9D1 1F3FD 200D 1F393}
+\bxce@do{student_tone4}{1F9D1 1F3FE 200D 1F393}
+\bxce@do{student_tone5}{1F9D1 1F3FF 200D 1F393}
+\bxce@do{stuffed_flatbread}{1F959}
+\bxce@do{sun_with_face}{1F31E}
+\bxce@do{sunflower}{1F33B}
+\bxce@do{sunglasses}{1F60E}
+\bxce@do{sunny}{2600}
+\bxce@do{sunrise}{1F305}
+\bxce@do{sunrise_over_mountains}{1F304}
+\bxce@do{superhero}{1F9B8}
+\bxce@do{superhero_tone1}{1F9B8 1F3FB}
+\bxce@do{superhero_tone2}{1F9B8 1F3FC}
+\bxce@do{superhero_tone3}{1F9B8 1F3FD}
+\bxce@do{superhero_tone4}{1F9B8 1F3FE}
+\bxce@do{superhero_tone5}{1F9B8 1F3FF}
+\bxce@do{supervillain}{1F9B9}
+\bxce@do{supervillain_tone1}{1F9B9 1F3FB}
+\bxce@do{supervillain_tone2}{1F9B9 1F3FC}
+\bxce@do{supervillain_tone3}{1F9B9 1F3FD}
+\bxce@do{supervillain_tone4}{1F9B9 1F3FE}
+\bxce@do{supervillain_tone5}{1F9B9 1F3FF}
+\bxce@do{sushi}{1F363}
+\bxce@do{suspension_railway}{1F69F}
+\bxce@do{swan}{1F9A2}
+\bxce@do{sweat}{1F613}
+\bxce@do{sweat_drops}{1F4A6}
+\bxce@do{sweat_smile}{1F605}
+\bxce@do{sweet_potato}{1F360}
+\bxce@do{symbols}{1F523}
+\bxce@do{synagogue}{1F54D}
+\bxce@do{syringe}{1F489}
+\or %[6]
+\bxce@do{t_rex}{1F996}
+\bxce@do{taco}{1F32E}
+\bxce@do{tada}{1F389}
+\bxce@do{takeout_box}{1F961}
+\bxce@do{tamale}{1FAD4}
+\bxce@do{tanabata_tree}{1F38B}
+\bxce@do{tangerine}{1F34A}
+\bxce@do{taurus}{2649}
+\bxce@do{taxi}{1F695}
+\bxce@do{tea}{1F375}
+\bxce@do{teacher}{1F9D1 200D 1F3EB}
+\bxce@do{teacher_tone1}{1F9D1 1F3FB 200D 1F3EB}
+\bxce@do{teacher_tone2}{1F9D1 1F3FC 200D 1F3EB}
+\bxce@do{teacher_tone3}{1F9D1 1F3FD 200D 1F3EB}
+\bxce@do{teacher_tone4}{1F9D1 1F3FE 200D 1F3EB}
+\bxce@do{teacher_tone5}{1F9D1 1F3FF 200D 1F3EB}
+\bxce@do{teapot}{1FAD6}
+\bxce@do{technologist}{1F9D1 200D 1F4BB}
+\bxce@do{technologist_tone1}{1F9D1 1F3FB 200D 1F4BB}
+\bxce@do{technologist_tone2}{1F9D1 1F3FC 200D 1F4BB}
+\bxce@do{technologist_tone3}{1F9D1 1F3FD 200D 1F4BB}
+\bxce@do{technologist_tone4}{1F9D1 1F3FE 200D 1F4BB}
+\bxce@do{technologist_tone5}{1F9D1 1F3FF 200D 1F4BB}
+\bxce@do{teddy_bear}{1F9F8}
+\bxce@do{telephone}{260E}
+\bxce@do{telephone_receiver}{1F4DE}
+\bxce@do{telescope}{1F52D}
+\bxce@do{tennis}{1F3BE}
+\bxce@do{tent}{26FA}
+\bxce@do{test_tube}{1F9EA}
+\bxce@do{thermometer}{1F321}
+\bxce@do{thermometer_face}{1F912}
+\bxce@do{thinking}{1F914}
+\bxce@do{third_place}{1F949}
+\bxce@do{thong_sandal}{1FA74}
+\bxce@do{thought_balloon}{1F4AD}
+\bxce@do{thread}{1F9F5}
+\bxce@do{three}{33 20E3}
+\bxce@do{thumbsdown}{1F44E}
+\bxce@do{thumbsdown_tone1}{1F44E 1F3FB}
+\bxce@do{thumbsdown_tone2}{1F44E 1F3FC}
+\bxce@do{thumbsdown_tone3}{1F44E 1F3FD}
+\bxce@do{thumbsdown_tone4}{1F44E 1F3FE}
+\bxce@do{thumbsdown_tone5}{1F44E 1F3FF}
+\bxce@do{thumbsup}{1F44D}
+\bxce@do{thumbsup_tone1}{1F44D 1F3FB}
+\bxce@do{thumbsup_tone2}{1F44D 1F3FC}
+\bxce@do{thumbsup_tone3}{1F44D 1F3FD}
+\bxce@do{thumbsup_tone4}{1F44D 1F3FE}
+\bxce@do{thumbsup_tone5}{1F44D 1F3FF}
+\bxce@do{thunder_cloud_rain}{26C8}
+\bxce@do{ticket}{1F3AB}
+\bxce@do{tickets}{1F39F}
+\bxce@do{tiger}{1F42F}
+\bxce@do{tiger2}{1F405}
+\bxce@do{timer}{23F2}
+\bxce@do{tired_face}{1F62B}
+\bxce@do{tm}{2122}
+\bxce@do{toilet}{1F6BD}
+\bxce@do{tokyo_tower}{1F5FC}
+\bxce@do{tomato}{1F345}
+\bxce@do{tone1}{1F3FB}
+\bxce@do{tone2}{1F3FC}
+\bxce@do{tone3}{1F3FD}
+\bxce@do{tone4}{1F3FE}
+\bxce@do{tone5}{1F3FF}
+\bxce@do{tongue}{1F445}
+\bxce@do{toolbox}{1F9F0}
+\bxce@do{tools}{1F6E0}
+\bxce@do{tooth}{1F9B7}
+\bxce@do{toothbrush}{1FAA5}
+\bxce@do{top}{1F51D}
+\bxce@do{tophat}{1F3A9}
+\bxce@do{track_next}{23ED}
+\bxce@do{track_previous}{23EE}
+\bxce@do{trackball}{1F5B2}
+\bxce@do{tractor}{1F69C}
+\bxce@do{traffic_light}{1F6A5}
+\bxce@do{train}{1F68B}
+\bxce@do{train2}{1F686}
+\bxce@do{tram}{1F68A}
+\bxce@do{transgender_flag}{1F3F3 200D 26A7}
+\bxce@do{transgender_symbol}{26A7}
+\bxce@do{triangular_flag_on_post}{1F6A9}
+\bxce@do{triangular_ruler}{1F4D0}
+\bxce@do{trident}{1F531}
+\bxce@do{triumph}{1F624}
+\bxce@do{trolleybus}{1F68E}
+\bxce@do{trophy}{1F3C6}
+\bxce@do{tropical_drink}{1F379}
+\bxce@do{tropical_fish}{1F420}
+\bxce@do{truck}{1F69A}
+\bxce@do{trumpet}{1F3BA}
+\bxce@do{tulip}{1F337}
+\bxce@do{tumbler_glass}{1F943}
+\bxce@do{turkey}{1F983}
+\bxce@do{turtle}{1F422}
+\bxce@do{tv}{1F4FA}
+\bxce@do{twisted_rightwards_arrows}{1F500}
+\bxce@do{two}{32 20E3}
+\bxce@do{two_hearts}{1F495}
+\bxce@do{two_men_holding_hands}{1F46C}
+\bxce@do{two_women_holding_hands}{1F46D}
+\bxce@do{u5272}{1F239}
+\bxce@do{u5408}{1F234}
+\bxce@do{u55b6}{1F23A}
+\bxce@do{u6307}{1F22F}
+\bxce@do{u6708}{1F237}
+\bxce@do{u6709}{1F236}
+\bxce@do{u6e80}{1F235}
+\bxce@do{u7121}{1F21A}
+\bxce@do{u7533}{1F238}
+\bxce@do{u7981}{1F232}
+\bxce@do{u7a7a}{1F233}
+\bxce@do{umbrella}{2614}
+\bxce@do{umbrella2}{2602}
+\bxce@do{unamused}{1F612}
+\bxce@do{underage}{1F51E}
+\bxce@do{unicorn}{1F984}
+\bxce@do{united_nations}{1F1FA 1F1F3}
+\bxce@do{unlock}{1F513}
+\bxce@do{up}{1F199}
+\bxce@do{upside_down}{1F643}
+\bxce@do{urn}{26B1}
+\bxce@do{v}{270C}
+\bxce@do{v_tone1}{270C 1F3FB}
+\bxce@do{v_tone2}{270C 1F3FC}
+\bxce@do{v_tone3}{270C 1F3FD}
+\bxce@do{v_tone4}{270C 1F3FE}
+\bxce@do{v_tone5}{270C 1F3FF}
+\bxce@do{vampire}{1F9DB}
+\bxce@do{vampire_tone1}{1F9DB 1F3FB}
+\bxce@do{vampire_tone2}{1F9DB 1F3FC}
+\bxce@do{vampire_tone3}{1F9DB 1F3FD}
+\bxce@do{vampire_tone4}{1F9DB 1F3FE}
+\bxce@do{vampire_tone5}{1F9DB 1F3FF}
+\bxce@do{vertical_traffic_light}{1F6A6}
+\bxce@do{vhs}{1F4FC}
+\bxce@do{vibration_mode}{1F4F3}
+\bxce@do{video_camera}{1F4F9}
+\bxce@do{video_game}{1F3AE}
+\bxce@do{violin}{1F3BB}
+\bxce@do{virgo}{264D}
+\bxce@do{volcano}{1F30B}
+\bxce@do{volleyball}{1F3D0}
+\bxce@do{vs}{1F19A}
+\bxce@do{vulcan}{1F596}
+\bxce@do{vulcan_tone1}{1F596 1F3FB}
+\bxce@do{vulcan_tone2}{1F596 1F3FC}
+\bxce@do{vulcan_tone3}{1F596 1F3FD}
+\bxce@do{vulcan_tone4}{1F596 1F3FE}
+\bxce@do{vulcan_tone5}{1F596 1F3FF}
+\bxce@do{waffle}{1F9C7}
+\bxce@do{wales}{1F3F4 E0067 E0062 E0077 E006C E0073 E007F}
+\bxce@do{waning_crescent_moon}{1F318}
+\bxce@do{waning_gibbous_moon}{1F316}
+\bxce@do{warning}{26A0}
+\bxce@do{wastebasket}{1F5D1}
+\bxce@do{watch}{231A}
+\bxce@do{water_buffalo}{1F403}
+\bxce@do{watermelon}{1F349}
+\bxce@do{wave}{1F44B}
+\bxce@do{wave_tone1}{1F44B 1F3FB}
+\bxce@do{wave_tone2}{1F44B 1F3FC}
+\bxce@do{wave_tone3}{1F44B 1F3FD}
+\bxce@do{wave_tone4}{1F44B 1F3FE}
+\bxce@do{wave_tone5}{1F44B 1F3FF}
+\bxce@do{wavy_dash}{3030}
+\bxce@do{waxing_crescent_moon}{1F312}
+\bxce@do{waxing_gibbous_moon}{1F314}
+\bxce@do{wc}{1F6BE}
+\bxce@do{weary}{1F629}
+\bxce@do{wedding}{1F492}
+\bxce@do{whale}{1F433}
+\bxce@do{whale2}{1F40B}
+\bxce@do{wheel_of_dharma}{2638}
+\bxce@do{wheelchair}{267F}
+\bxce@do{white_check_mark}{2705}
+\bxce@do{white_circle}{26AA}
+\bxce@do{white_flower}{1F4AE}
+\bxce@do{white_haired}{1F9B3}
+\bxce@do{white_heart}{1F90D}
+\bxce@do{white_large_square}{2B1C}
+\bxce@do{white_medium_small_square}{25FD}
+\bxce@do{white_medium_square}{25FB}
+\bxce@do{white_small_square}{25AB}
+\bxce@do{white_square_button}{1F533}
+\bxce@do{white_sun_cloud}{1F325}
+\bxce@do{white_sun_rain_cloud}{1F326}
+\bxce@do{white_sun_small_cloud}{1F324}
+\bxce@do{wilted_rose}{1F940}
+\bxce@do{wind_blowing_face}{1F32C}
+\bxce@do{wind_chime}{1F390}
+\bxce@do{window}{1FA9F}
+\bxce@do{wine_glass}{1F377}
+\bxce@do{wink}{1F609}
+\bxce@do{wolf}{1F43A}
+\bxce@do{woman}{1F469}
+\bxce@do{woman_and_man_holding_hands}{1F46B}
+\bxce@do{woman_and_man_holding_hands_tone1}{1F46B 1F3FB}
+\bxce@do{woman_and_man_holding_hands_tone1_tone2}{1F469 1F3FB 200D 1F91D 200D 1F468 1F3FC}
+\bxce@do{woman_and_man_holding_hands_tone1_tone3}{1F469 1F3FB 200D 1F91D 200D 1F468 1F3FD}
+\bxce@do{woman_and_man_holding_hands_tone1_tone4}{1F469 1F3FB 200D 1F91D 200D 1F468 1F3FE}
+\bxce@do{woman_and_man_holding_hands_tone1_tone5}{1F469 1F3FB 200D 1F91D 200D 1F468 1F3FF}
+\bxce@do{woman_and_man_holding_hands_tone2}{1F46B 1F3FC}
+\bxce@do{woman_and_man_holding_hands_tone2_tone1}{1F469 1F3FC 200D 1F91D 200D 1F468 1F3FB}
+\bxce@do{woman_and_man_holding_hands_tone2_tone3}{1F469 1F3FC 200D 1F91D 200D 1F468 1F3FD}
+\bxce@do{woman_and_man_holding_hands_tone2_tone4}{1F469 1F3FC 200D 1F91D 200D 1F468 1F3FE}
+\bxce@do{woman_and_man_holding_hands_tone2_tone5}{1F469 1F3FC 200D 1F91D 200D 1F468 1F3FF}
+\bxce@do{woman_and_man_holding_hands_tone3}{1F46B 1F3FD}
+\bxce@do{woman_and_man_holding_hands_tone3_tone1}{1F469 1F3FD 200D 1F91D 200D 1F468 1F3FB}
+\bxce@do{woman_and_man_holding_hands_tone3_tone2}{1F469 1F3FD 200D 1F91D 200D 1F468 1F3FC}
+\bxce@do{woman_and_man_holding_hands_tone3_tone4}{1F469 1F3FD 200D 1F91D 200D 1F468 1F3FE}
+\bxce@do{woman_and_man_holding_hands_tone3_tone5}{1F469 1F3FD 200D 1F91D 200D 1F468 1F3FF}
+\bxce@do{woman_and_man_holding_hands_tone4}{1F46B 1F3FE}
+\bxce@do{woman_and_man_holding_hands_tone4_tone1}{1F469 1F3FE 200D 1F91D 200D 1F468 1F3FB}
+\bxce@do{woman_and_man_holding_hands_tone4_tone2}{1F469 1F3FE 200D 1F91D 200D 1F468 1F3FC}
+\bxce@do{woman_and_man_holding_hands_tone4_tone3}{1F469 1F3FE 200D 1F91D 200D 1F468 1F3FD}
+\bxce@do{woman_and_man_holding_hands_tone4_tone5}{1F469 1F3FE 200D 1F91D 200D 1F468 1F3FF}
+\bxce@do{woman_and_man_holding_hands_tone5}{1F46B 1F3FF}
+\bxce@do{woman_and_man_holding_hands_tone5_tone1}{1F469 1F3FF 200D 1F91D 200D 1F468 1F3FB}
+\bxce@do{woman_and_man_holding_hands_tone5_tone2}{1F469 1F3FF 200D 1F91D 200D 1F468 1F3FC}
+\bxce@do{woman_and_man_holding_hands_tone5_tone3}{1F469 1F3FF 200D 1F91D 200D 1F468 1F3FD}
+\bxce@do{woman_and_man_holding_hands_tone5_tone4}{1F469 1F3FF 200D 1F91D 200D 1F468 1F3FE}
+\bxce@do{woman_artist}{1F469 200D 1F3A8}
+\bxce@do{woman_artist_tone1}{1F469 1F3FB 200D 1F3A8}
+\bxce@do{woman_artist_tone2}{1F469 1F3FC 200D 1F3A8}
+\bxce@do{woman_artist_tone3}{1F469 1F3FD 200D 1F3A8}
+\bxce@do{woman_artist_tone4}{1F469 1F3FE 200D 1F3A8}
+\bxce@do{woman_artist_tone5}{1F469 1F3FF 200D 1F3A8}
+\bxce@do{woman_astronaut}{1F469 200D 1F680}
+\bxce@do{woman_astronaut_tone1}{1F469 1F3FB 200D 1F680}
+\bxce@do{woman_astronaut_tone2}{1F469 1F3FC 200D 1F680}
+\bxce@do{woman_astronaut_tone3}{1F469 1F3FD 200D 1F680}
+\bxce@do{woman_astronaut_tone4}{1F469 1F3FE 200D 1F680}
+\bxce@do{woman_astronaut_tone5}{1F469 1F3FF 200D 1F680}
+\bxce@do{woman_bald}{1F469 200D 1F9B2}
+\bxce@do{woman_bald_tone1}{1F469 1F3FB 200D 1F9B2}
+\bxce@do{woman_bald_tone2}{1F469 1F3FC 200D 1F9B2}
+\bxce@do{woman_bald_tone3}{1F469 1F3FD 200D 1F9B2}
+\bxce@do{woman_bald_tone4}{1F469 1F3FE 200D 1F9B2}
+\bxce@do{woman_bald_tone5}{1F469 1F3FF 200D 1F9B2}
+\bxce@do{woman_beard}{1F9D4 200D 2640}
+\bxce@do{woman_biking}{1F6B4 200D 2640}
+\bxce@do{woman_biking_tone1}{1F6B4 1F3FB 200D 2640}
+\bxce@do{woman_biking_tone2}{1F6B4 1F3FC 200D 2640}
+\bxce@do{woman_biking_tone3}{1F6B4 1F3FD 200D 2640}
+\bxce@do{woman_biking_tone4}{1F6B4 1F3FE 200D 2640}
+\bxce@do{woman_biking_tone5}{1F6B4 1F3FF 200D 2640}
+\bxce@do{woman_bouncing_ball}{26F9 200D 2640}
+\bxce@do{woman_bouncing_ball_tone1}{26F9 1F3FB 200D 2640}
+\bxce@do{woman_bouncing_ball_tone2}{26F9 1F3FC 200D 2640}
+\bxce@do{woman_bouncing_ball_tone3}{26F9 1F3FD 200D 2640}
+\bxce@do{woman_bouncing_ball_tone4}{26F9 1F3FE 200D 2640}
+\bxce@do{woman_bouncing_ball_tone5}{26F9 1F3FF 200D 2640}
+\bxce@do{woman_bowing}{1F647 200D 2640}
+\bxce@do{woman_bowing_tone1}{1F647 1F3FB 200D 2640}
+\bxce@do{woman_bowing_tone2}{1F647 1F3FC 200D 2640}
+\bxce@do{woman_bowing_tone3}{1F647 1F3FD 200D 2640}
+\bxce@do{woman_bowing_tone4}{1F647 1F3FE 200D 2640}
+\bxce@do{woman_bowing_tone5}{1F647 1F3FF 200D 2640}
+\bxce@do{woman_cartwheeling}{1F938 200D 2640}
+\bxce@do{woman_cartwheeling_tone1}{1F938 1F3FB 200D 2640}
+\bxce@do{woman_cartwheeling_tone2}{1F938 1F3FC 200D 2640}
+\bxce@do{woman_cartwheeling_tone3}{1F938 1F3FD 200D 2640}
+\bxce@do{woman_cartwheeling_tone4}{1F938 1F3FE 200D 2640}
+\bxce@do{woman_cartwheeling_tone5}{1F938 1F3FF 200D 2640}
+\bxce@do{woman_climbing}{1F9D7 200D 2640}
+\bxce@do{woman_climbing_tone1}{1F9D7 1F3FB 200D 2640}
+\bxce@do{woman_climbing_tone2}{1F9D7 1F3FC 200D 2640}
+\bxce@do{woman_climbing_tone3}{1F9D7 1F3FD 200D 2640}
+\bxce@do{woman_climbing_tone4}{1F9D7 1F3FE 200D 2640}
+\bxce@do{woman_climbing_tone5}{1F9D7 1F3FF 200D 2640}
+\bxce@do{woman_construction_worker}{1F477 200D 2640}
+\bxce@do{woman_construction_worker_tone1}{1F477 1F3FB 200D 2640}
+\bxce@do{woman_construction_worker_tone2}{1F477 1F3FC 200D 2640}
+\bxce@do{woman_construction_worker_tone3}{1F477 1F3FD 200D 2640}
+\bxce@do{woman_construction_worker_tone4}{1F477 1F3FE 200D 2640}
+\bxce@do{woman_construction_worker_tone5}{1F477 1F3FF 200D 2640}
+\bxce@do{woman_cook}{1F469 200D 1F373}
+\bxce@do{woman_cook_tone1}{1F469 1F3FB 200D 1F373}
+\bxce@do{woman_cook_tone2}{1F469 1F3FC 200D 1F373}
+\bxce@do{woman_cook_tone3}{1F469 1F3FD 200D 1F373}
+\bxce@do{woman_cook_tone4}{1F469 1F3FE 200D 1F373}
+\bxce@do{woman_cook_tone5}{1F469 1F3FF 200D 1F373}
+\bxce@do{woman_curly_haired}{1F469 200D 1F9B1}
+\bxce@do{woman_curly_haired_tone1}{1F469 1F3FB 200D 1F9B1}
+\bxce@do{woman_curly_haired_tone2}{1F469 1F3FC 200D 1F9B1}
+\bxce@do{woman_curly_haired_tone3}{1F469 1F3FD 200D 1F9B1}
+\bxce@do{woman_curly_haired_tone4}{1F469 1F3FE 200D 1F9B1}
+\bxce@do{woman_curly_haired_tone5}{1F469 1F3FF 200D 1F9B1}
+\bxce@do{woman_detective}{1F575 200D 2640}
+\bxce@do{woman_detective_tone1}{1F575 1F3FB 200D 2640}
+\bxce@do{woman_detective_tone2}{1F575 1F3FC 200D 2640}
+\bxce@do{woman_detective_tone3}{1F575 1F3FD 200D 2640}
+\bxce@do{woman_detective_tone4}{1F575 1F3FE 200D 2640}
+\bxce@do{woman_detective_tone5}{1F575 1F3FF 200D 2640}
+\bxce@do{woman_elf}{1F9DD 200D 2640}
+\bxce@do{woman_elf_tone1}{1F9DD 1F3FB 200D 2640}
+\bxce@do{woman_elf_tone2}{1F9DD 1F3FC 200D 2640}
+\bxce@do{woman_elf_tone3}{1F9DD 1F3FD 200D 2640}
+\bxce@do{woman_elf_tone4}{1F9DD 1F3FE 200D 2640}
+\bxce@do{woman_elf_tone5}{1F9DD 1F3FF 200D 2640}
+\bxce@do{woman_facepalming}{1F926 200D 2640}
+\bxce@do{woman_facepalming_tone1}{1F926 1F3FB 200D 2640}
+\bxce@do{woman_facepalming_tone2}{1F926 1F3FC 200D 2640}
+\bxce@do{woman_facepalming_tone3}{1F926 1F3FD 200D 2640}
+\bxce@do{woman_facepalming_tone4}{1F926 1F3FE 200D 2640}
+\bxce@do{woman_facepalming_tone5}{1F926 1F3FF 200D 2640}
+\bxce@do{woman_factory_worker}{1F469 200D 1F3ED}
+\bxce@do{woman_factory_worker_tone1}{1F469 1F3FB 200D 1F3ED}
+\bxce@do{woman_factory_worker_tone2}{1F469 1F3FC 200D 1F3ED}
+\bxce@do{woman_factory_worker_tone3}{1F469 1F3FD 200D 1F3ED}
+\bxce@do{woman_factory_worker_tone4}{1F469 1F3FE 200D 1F3ED}
+\bxce@do{woman_factory_worker_tone5}{1F469 1F3FF 200D 1F3ED}
+\bxce@do{woman_fairy}{1F9DA 200D 2640}
+\bxce@do{woman_fairy_tone1}{1F9DA 1F3FB 200D 2640}
+\bxce@do{woman_fairy_tone2}{1F9DA 1F3FC 200D 2640}
+\bxce@do{woman_fairy_tone3}{1F9DA 1F3FD 200D 2640}
+\bxce@do{woman_fairy_tone4}{1F9DA 1F3FE 200D 2640}
+\bxce@do{woman_fairy_tone5}{1F9DA 1F3FF 200D 2640}
+\bxce@do{woman_farmer}{1F469 200D 1F33E}
+\bxce@do{woman_farmer_tone1}{1F469 1F3FB 200D 1F33E}
+\bxce@do{woman_farmer_tone2}{1F469 1F3FC 200D 1F33E}
+\bxce@do{woman_farmer_tone3}{1F469 1F3FD 200D 1F33E}
+\bxce@do{woman_farmer_tone4}{1F469 1F3FE 200D 1F33E}
+\bxce@do{woman_farmer_tone5}{1F469 1F3FF 200D 1F33E}
+\bxce@do{woman_feeding_baby}{1F469 200D 1F37C}
+\bxce@do{woman_feeding_baby_tone1}{1F469 1F3FB 200D 1F37C}
+\bxce@do{woman_feeding_baby_tone2}{1F469 1F3FC 200D 1F37C}
+\bxce@do{woman_feeding_baby_tone3}{1F469 1F3FD 200D 1F37C}
+\bxce@do{woman_feeding_baby_tone4}{1F469 1F3FE 200D 1F37C}
+\bxce@do{woman_feeding_baby_tone5}{1F469 1F3FF 200D 1F37C}
+\bxce@do{woman_firefighter}{1F469 200D 1F692}
+\bxce@do{woman_firefighter_tone1}{1F469 1F3FB 200D 1F692}
+\bxce@do{woman_firefighter_tone2}{1F469 1F3FC 200D 1F692}
+\bxce@do{woman_firefighter_tone3}{1F469 1F3FD 200D 1F692}
+\bxce@do{woman_firefighter_tone4}{1F469 1F3FE 200D 1F692}
+\bxce@do{woman_firefighter_tone5}{1F469 1F3FF 200D 1F692}
+\bxce@do{woman_frowning}{1F64D 200D 2640}
+\bxce@do{woman_frowning_tone1}{1F64D 1F3FB 200D 2640}
+\bxce@do{woman_frowning_tone2}{1F64D 1F3FC 200D 2640}
+\bxce@do{woman_frowning_tone3}{1F64D 1F3FD 200D 2640}
+\bxce@do{woman_frowning_tone4}{1F64D 1F3FE 200D 2640}
+\bxce@do{woman_frowning_tone5}{1F64D 1F3FF 200D 2640}
+\bxce@do{woman_genie}{1F9DE 200D 2640}
+\bxce@do{woman_gesturing_no}{1F645 200D 2640}
+\bxce@do{woman_gesturing_no_tone1}{1F645 1F3FB 200D 2640}
+\bxce@do{woman_gesturing_no_tone2}{1F645 1F3FC 200D 2640}
+\bxce@do{woman_gesturing_no_tone3}{1F645 1F3FD 200D 2640}
+\bxce@do{woman_gesturing_no_tone4}{1F645 1F3FE 200D 2640}
+\bxce@do{woman_gesturing_no_tone5}{1F645 1F3FF 200D 2640}
+\bxce@do{woman_gesturing_ok}{1F646 200D 2640}
+\bxce@do{woman_gesturing_ok_tone1}{1F646 1F3FB 200D 2640}
+\bxce@do{woman_gesturing_ok_tone2}{1F646 1F3FC 200D 2640}
+\bxce@do{woman_gesturing_ok_tone3}{1F646 1F3FD 200D 2640}
+\bxce@do{woman_gesturing_ok_tone4}{1F646 1F3FE 200D 2640}
+\bxce@do{woman_gesturing_ok_tone5}{1F646 1F3FF 200D 2640}
+\bxce@do{woman_getting_face_massage}{1F486 200D 2640}
+\bxce@do{woman_getting_face_massage_tone1}{1F486 1F3FB 200D 2640}
+\bxce@do{woman_getting_face_massage_tone2}{1F486 1F3FC 200D 2640}
+\bxce@do{woman_getting_face_massage_tone3}{1F486 1F3FD 200D 2640}
+\bxce@do{woman_getting_face_massage_tone4}{1F486 1F3FE 200D 2640}
+\bxce@do{woman_getting_face_massage_tone5}{1F486 1F3FF 200D 2640}
+\bxce@do{woman_getting_haircut}{1F487 200D 2640}
+\bxce@do{woman_getting_haircut_tone1}{1F487 1F3FB 200D 2640}
+\bxce@do{woman_getting_haircut_tone2}{1F487 1F3FC 200D 2640}
+\bxce@do{woman_getting_haircut_tone3}{1F487 1F3FD 200D 2640}
+\bxce@do{woman_getting_haircut_tone4}{1F487 1F3FE 200D 2640}
+\bxce@do{woman_getting_haircut_tone5}{1F487 1F3FF 200D 2640}
+\bxce@do{woman_golfing}{1F3CC 200D 2640}
+\bxce@do{woman_golfing_tone1}{1F3CC 1F3FB 200D 2640}
+\bxce@do{woman_golfing_tone2}{1F3CC 1F3FC 200D 2640}
+\bxce@do{woman_golfing_tone3}{1F3CC 1F3FD 200D 2640}
+\bxce@do{woman_golfing_tone4}{1F3CC 1F3FE 200D 2640}
+\bxce@do{woman_golfing_tone5}{1F3CC 1F3FF 200D 2640}
+\bxce@do{woman_guard}{1F482 200D 2640}
+\bxce@do{woman_guard_tone1}{1F482 1F3FB 200D 2640}
+\bxce@do{woman_guard_tone2}{1F482 1F3FC 200D 2640}
+\bxce@do{woman_guard_tone3}{1F482 1F3FD 200D 2640}
+\bxce@do{woman_guard_tone4}{1F482 1F3FE 200D 2640}
+\bxce@do{woman_guard_tone5}{1F482 1F3FF 200D 2640}
+\bxce@do{woman_health_worker}{1F469 200D 2695}
+\bxce@do{woman_health_worker_tone1}{1F469 1F3FB 200D 2695}
+\bxce@do{woman_health_worker_tone2}{1F469 1F3FC 200D 2695}
+\bxce@do{woman_health_worker_tone3}{1F469 1F3FD 200D 2695}
+\bxce@do{woman_health_worker_tone4}{1F469 1F3FE 200D 2695}
+\bxce@do{woman_health_worker_tone5}{1F469 1F3FF 200D 2695}
+\bxce@do{woman_in_lotus_position}{1F9D8 200D 2640}
+\bxce@do{woman_in_lotus_position_tone1}{1F9D8 1F3FB 200D 2640}
+\bxce@do{woman_in_lotus_position_tone2}{1F9D8 1F3FC 200D 2640}
+\bxce@do{woman_in_lotus_position_tone3}{1F9D8 1F3FD 200D 2640}
+\bxce@do{woman_in_lotus_position_tone4}{1F9D8 1F3FE 200D 2640}
+\bxce@do{woman_in_lotus_position_tone5}{1F9D8 1F3FF 200D 2640}
+\bxce@do{woman_in_manual_wheelchair}{1F469 200D 1F9BD}
+\bxce@do{woman_in_manual_wheelchair_tone1}{1F469 1F3FB 200D 1F9BD}
+\bxce@do{woman_in_manual_wheelchair_tone2}{1F469 1F3FC 200D 1F9BD}
+\bxce@do{woman_in_manual_wheelchair_tone3}{1F469 1F3FD 200D 1F9BD}
+\bxce@do{woman_in_manual_wheelchair_tone4}{1F469 1F3FE 200D 1F9BD}
+\bxce@do{woman_in_manual_wheelchair_tone5}{1F469 1F3FF 200D 1F9BD}
+\bxce@do{woman_in_motorized_wheelchair}{1F469 200D 1F9BC}
+\bxce@do{woman_in_motorized_wheelchair_tone1}{1F469 1F3FB 200D 1F9BC}
+\bxce@do{woman_in_motorized_wheelchair_tone2}{1F469 1F3FC 200D 1F9BC}
+\bxce@do{woman_in_motorized_wheelchair_tone3}{1F469 1F3FD 200D 1F9BC}
+\bxce@do{woman_in_motorized_wheelchair_tone4}{1F469 1F3FE 200D 1F9BC}
+\bxce@do{woman_in_motorized_wheelchair_tone5}{1F469 1F3FF 200D 1F9BC}
+\bxce@do{woman_in_steamy_room}{1F9D6 200D 2640}
+\bxce@do{woman_in_steamy_room_tone1}{1F9D6 1F3FB 200D 2640}
+\bxce@do{woman_in_steamy_room_tone2}{1F9D6 1F3FC 200D 2640}
+\bxce@do{woman_in_steamy_room_tone3}{1F9D6 1F3FD 200D 2640}
+\bxce@do{woman_in_steamy_room_tone4}{1F9D6 1F3FE 200D 2640}
+\bxce@do{woman_in_steamy_room_tone5}{1F9D6 1F3FF 200D 2640}
+\bxce@do{woman_in_tuxedo}{1F935 200D 2640}
+\bxce@do{woman_in_tuxedo_tone1}{1F935 1F3FB 200D 2640}
+\bxce@do{woman_in_tuxedo_tone2}{1F935 1F3FC 200D 2640}
+\bxce@do{woman_in_tuxedo_tone3}{1F935 1F3FD 200D 2640}
+\bxce@do{woman_in_tuxedo_tone4}{1F935 1F3FE 200D 2640}
+\bxce@do{woman_in_tuxedo_tone5}{1F935 1F3FF 200D 2640}
+\bxce@do{woman_judge}{1F469 200D 2696}
+\bxce@do{woman_judge_tone1}{1F469 1F3FB 200D 2696}
+\bxce@do{woman_judge_tone2}{1F469 1F3FC 200D 2696}
+\bxce@do{woman_judge_tone3}{1F469 1F3FD 200D 2696}
+\bxce@do{woman_judge_tone4}{1F469 1F3FE 200D 2696}
+\bxce@do{woman_judge_tone5}{1F469 1F3FF 200D 2696}
+\bxce@do{woman_juggling}{1F939 200D 2640}
+\bxce@do{woman_juggling_tone1}{1F939 1F3FB 200D 2640}
+\bxce@do{woman_juggling_tone2}{1F939 1F3FC 200D 2640}
+\bxce@do{woman_juggling_tone3}{1F939 1F3FD 200D 2640}
+\bxce@do{woman_juggling_tone4}{1F939 1F3FE 200D 2640}
+\bxce@do{woman_juggling_tone5}{1F939 1F3FF 200D 2640}
+\bxce@do{woman_kneeling}{1F9CE 200D 2640}
+\bxce@do{woman_kneeling_tone1}{1F9CE 1F3FB 200D 2640}
+\bxce@do{woman_kneeling_tone2}{1F9CE 1F3FC 200D 2640}
+\bxce@do{woman_kneeling_tone3}{1F9CE 1F3FD 200D 2640}
+\bxce@do{woman_kneeling_tone4}{1F9CE 1F3FE 200D 2640}
+\bxce@do{woman_kneeling_tone5}{1F9CE 1F3FF 200D 2640}
+\bxce@do{woman_lifting_weights}{1F3CB 200D 2640}
+\bxce@do{woman_lifting_weights_tone1}{1F3CB 1F3FB 200D 2640}
+\bxce@do{woman_lifting_weights_tone2}{1F3CB 1F3FC 200D 2640}
+\bxce@do{woman_lifting_weights_tone3}{1F3CB 1F3FD 200D 2640}
+\bxce@do{woman_lifting_weights_tone4}{1F3CB 1F3FE 200D 2640}
+\bxce@do{woman_lifting_weights_tone5}{1F3CB 1F3FF 200D 2640}
+\bxce@do{woman_mage}{1F9D9 200D 2640}
+\bxce@do{woman_mage_tone1}{1F9D9 1F3FB 200D 2640}
+\bxce@do{woman_mage_tone2}{1F9D9 1F3FC 200D 2640}
+\bxce@do{woman_mage_tone3}{1F9D9 1F3FD 200D 2640}
+\bxce@do{woman_mage_tone4}{1F9D9 1F3FE 200D 2640}
+\bxce@do{woman_mage_tone5}{1F9D9 1F3FF 200D 2640}
+\bxce@do{woman_mechanic}{1F469 200D 1F527}
+\bxce@do{woman_mechanic_tone1}{1F469 1F3FB 200D 1F527}
+\bxce@do{woman_mechanic_tone2}{1F469 1F3FC 200D 1F527}
+\bxce@do{woman_mechanic_tone3}{1F469 1F3FD 200D 1F527}
+\bxce@do{woman_mechanic_tone4}{1F469 1F3FE 200D 1F527}
+\bxce@do{woman_mechanic_tone5}{1F469 1F3FF 200D 1F527}
+\bxce@do{woman_mountain_biking}{1F6B5 200D 2640}
+\bxce@do{woman_mountain_biking_tone1}{1F6B5 1F3FB 200D 2640}
+\bxce@do{woman_mountain_biking_tone2}{1F6B5 1F3FC 200D 2640}
+\bxce@do{woman_mountain_biking_tone3}{1F6B5 1F3FD 200D 2640}
+\bxce@do{woman_mountain_biking_tone4}{1F6B5 1F3FE 200D 2640}
+\bxce@do{woman_mountain_biking_tone5}{1F6B5 1F3FF 200D 2640}
+\bxce@do{woman_office_worker}{1F469 200D 1F4BC}
+\bxce@do{woman_office_worker_tone1}{1F469 1F3FB 200D 1F4BC}
+\bxce@do{woman_office_worker_tone2}{1F469 1F3FC 200D 1F4BC}
+\bxce@do{woman_office_worker_tone3}{1F469 1F3FD 200D 1F4BC}
+\bxce@do{woman_office_worker_tone4}{1F469 1F3FE 200D 1F4BC}
+\bxce@do{woman_office_worker_tone5}{1F469 1F3FF 200D 1F4BC}
+\bxce@do{woman_pilot}{1F469 200D 2708}
+\bxce@do{woman_pilot_tone1}{1F469 1F3FB 200D 2708}
+\bxce@do{woman_pilot_tone2}{1F469 1F3FC 200D 2708}
+\bxce@do{woman_pilot_tone3}{1F469 1F3FD 200D 2708}
+\bxce@do{woman_pilot_tone4}{1F469 1F3FE 200D 2708}
+\bxce@do{woman_pilot_tone5}{1F469 1F3FF 200D 2708}
+\bxce@do{woman_playing_handball}{1F93E 200D 2640}
+\bxce@do{woman_playing_handball_tone1}{1F93E 1F3FB 200D 2640}
+\bxce@do{woman_playing_handball_tone2}{1F93E 1F3FC 200D 2640}
+\bxce@do{woman_playing_handball_tone3}{1F93E 1F3FD 200D 2640}
+\bxce@do{woman_playing_handball_tone4}{1F93E 1F3FE 200D 2640}
+\bxce@do{woman_playing_handball_tone5}{1F93E 1F3FF 200D 2640}
+\bxce@do{woman_playing_water_polo}{1F93D 200D 2640}
+\bxce@do{woman_playing_water_polo_tone1}{1F93D 1F3FB 200D 2640}
+\bxce@do{woman_playing_water_polo_tone2}{1F93D 1F3FC 200D 2640}
+\bxce@do{woman_playing_water_polo_tone3}{1F93D 1F3FD 200D 2640}
+\bxce@do{woman_playing_water_polo_tone4}{1F93D 1F3FE 200D 2640}
+\bxce@do{woman_playing_water_polo_tone5}{1F93D 1F3FF 200D 2640}
+\bxce@do{woman_police_officer}{1F46E 200D 2640}
+\bxce@do{woman_police_officer_tone1}{1F46E 1F3FB 200D 2640}
+\bxce@do{woman_police_officer_tone2}{1F46E 1F3FC 200D 2640}
+\bxce@do{woman_police_officer_tone3}{1F46E 1F3FD 200D 2640}
+\bxce@do{woman_police_officer_tone4}{1F46E 1F3FE 200D 2640}
+\bxce@do{woman_police_officer_tone5}{1F46E 1F3FF 200D 2640}
+\bxce@do{woman_pouting}{1F64E 200D 2640}
+\bxce@do{woman_pouting_tone1}{1F64E 1F3FB 200D 2640}
+\bxce@do{woman_pouting_tone2}{1F64E 1F3FC 200D 2640}
+\bxce@do{woman_pouting_tone3}{1F64E 1F3FD 200D 2640}
+\bxce@do{woman_pouting_tone4}{1F64E 1F3FE 200D 2640}
+\bxce@do{woman_pouting_tone5}{1F64E 1F3FF 200D 2640}
+\bxce@do{woman_raising_hand}{1F64B 200D 2640}
+\bxce@do{woman_raising_hand_tone1}{1F64B 1F3FB 200D 2640}
+\bxce@do{woman_raising_hand_tone2}{1F64B 1F3FC 200D 2640}
+\bxce@do{woman_raising_hand_tone3}{1F64B 1F3FD 200D 2640}
+\bxce@do{woman_raising_hand_tone4}{1F64B 1F3FE 200D 2640}
+\bxce@do{woman_raising_hand_tone5}{1F64B 1F3FF 200D 2640}
+\bxce@do{woman_red_haired}{1F469 200D 1F9B0}
+\bxce@do{woman_red_haired_tone1}{1F469 1F3FB 200D 1F9B0}
+\bxce@do{woman_red_haired_tone2}{1F469 1F3FC 200D 1F9B0}
+\bxce@do{woman_red_haired_tone3}{1F469 1F3FD 200D 1F9B0}
+\bxce@do{woman_red_haired_tone4}{1F469 1F3FE 200D 1F9B0}
+\bxce@do{woman_red_haired_tone5}{1F469 1F3FF 200D 1F9B0}
+\bxce@do{woman_rowing_boat}{1F6A3 200D 2640}
+\bxce@do{woman_rowing_boat_tone1}{1F6A3 1F3FB 200D 2640}
+\bxce@do{woman_rowing_boat_tone2}{1F6A3 1F3FC 200D 2640}
+\bxce@do{woman_rowing_boat_tone3}{1F6A3 1F3FD 200D 2640}
+\bxce@do{woman_rowing_boat_tone4}{1F6A3 1F3FE 200D 2640}
+\bxce@do{woman_rowing_boat_tone5}{1F6A3 1F3FF 200D 2640}
+\bxce@do{woman_running}{1F3C3 200D 2640}
+\bxce@do{woman_running_tone1}{1F3C3 1F3FB 200D 2640}
+\bxce@do{woman_running_tone2}{1F3C3 1F3FC 200D 2640}
+\bxce@do{woman_running_tone3}{1F3C3 1F3FD 200D 2640}
+\bxce@do{woman_running_tone4}{1F3C3 1F3FE 200D 2640}
+\bxce@do{woman_running_tone5}{1F3C3 1F3FF 200D 2640}
+\bxce@do{woman_scientist}{1F469 200D 1F52C}
+\bxce@do{woman_scientist_tone1}{1F469 1F3FB 200D 1F52C}
+\bxce@do{woman_scientist_tone2}{1F469 1F3FC 200D 1F52C}
+\bxce@do{woman_scientist_tone3}{1F469 1F3FD 200D 1F52C}
+\bxce@do{woman_scientist_tone4}{1F469 1F3FE 200D 1F52C}
+\bxce@do{woman_scientist_tone5}{1F469 1F3FF 200D 1F52C}
+\bxce@do{woman_shrugging}{1F937 200D 2640}
+\bxce@do{woman_shrugging_tone1}{1F937 1F3FB 200D 2640}
+\bxce@do{woman_shrugging_tone2}{1F937 1F3FC 200D 2640}
+\bxce@do{woman_shrugging_tone3}{1F937 1F3FD 200D 2640}
+\bxce@do{woman_shrugging_tone4}{1F937 1F3FE 200D 2640}
+\bxce@do{woman_shrugging_tone5}{1F937 1F3FF 200D 2640}
+\bxce@do{woman_singer}{1F469 200D 1F3A4}
+\bxce@do{woman_singer_tone1}{1F469 1F3FB 200D 1F3A4}
+\bxce@do{woman_singer_tone2}{1F469 1F3FC 200D 1F3A4}
+\bxce@do{woman_singer_tone3}{1F469 1F3FD 200D 1F3A4}
+\bxce@do{woman_singer_tone4}{1F469 1F3FE 200D 1F3A4}
+\bxce@do{woman_singer_tone5}{1F469 1F3FF 200D 1F3A4}
+\bxce@do{woman_standing}{1F9CD 200D 2640}
+\bxce@do{woman_standing_tone1}{1F9CD 1F3FB 200D 2640}
+\bxce@do{woman_standing_tone2}{1F9CD 1F3FC 200D 2640}
+\bxce@do{woman_standing_tone3}{1F9CD 1F3FD 200D 2640}
+\bxce@do{woman_standing_tone4}{1F9CD 1F3FE 200D 2640}
+\bxce@do{woman_standing_tone5}{1F9CD 1F3FF 200D 2640}
+\bxce@do{woman_student}{1F469 200D 1F393}
+\bxce@do{woman_student_tone1}{1F469 1F3FB 200D 1F393}
+\bxce@do{woman_student_tone2}{1F469 1F3FC 200D 1F393}
+\bxce@do{woman_student_tone3}{1F469 1F3FD 200D 1F393}
+\bxce@do{woman_student_tone4}{1F469 1F3FE 200D 1F393}
+\bxce@do{woman_student_tone5}{1F469 1F3FF 200D 1F393}
+\bxce@do{woman_superhero}{1F9B8 200D 2640}
+\bxce@do{woman_superhero_tone1}{1F9B8 1F3FB 200D 2640}
+\bxce@do{woman_superhero_tone2}{1F9B8 1F3FC 200D 2640}
+\bxce@do{woman_superhero_tone3}{1F9B8 1F3FD 200D 2640}
+\bxce@do{woman_superhero_tone4}{1F9B8 1F3FE 200D 2640}
+\bxce@do{woman_superhero_tone5}{1F9B8 1F3FF 200D 2640}
+\bxce@do{woman_supervillain}{1F9B9 200D 2640}
+\bxce@do{woman_supervillain_tone1}{1F9B9 1F3FB 200D 2640}
+\bxce@do{woman_supervillain_tone2}{1F9B9 1F3FC 200D 2640}
+\bxce@do{woman_supervillain_tone3}{1F9B9 1F3FD 200D 2640}
+\bxce@do{woman_supervillain_tone4}{1F9B9 1F3FE 200D 2640}
+\bxce@do{woman_supervillain_tone5}{1F9B9 1F3FF 200D 2640}
+\bxce@do{woman_surfing}{1F3C4 200D 2640}
+\bxce@do{woman_surfing_tone1}{1F3C4 1F3FB 200D 2640}
+\bxce@do{woman_surfing_tone2}{1F3C4 1F3FC 200D 2640}
+\bxce@do{woman_surfing_tone3}{1F3C4 1F3FD 200D 2640}
+\bxce@do{woman_surfing_tone4}{1F3C4 1F3FE 200D 2640}
+\bxce@do{woman_surfing_tone5}{1F3C4 1F3FF 200D 2640}
+\bxce@do{woman_swimming}{1F3CA 200D 2640}
+\bxce@do{woman_swimming_tone1}{1F3CA 1F3FB 200D 2640}
+\bxce@do{woman_swimming_tone2}{1F3CA 1F3FC 200D 2640}
+\bxce@do{woman_swimming_tone3}{1F3CA 1F3FD 200D 2640}
+\bxce@do{woman_swimming_tone4}{1F3CA 1F3FE 200D 2640}
+\bxce@do{woman_swimming_tone5}{1F3CA 1F3FF 200D 2640}
+\bxce@do{woman_teacher}{1F469 200D 1F3EB}
+\bxce@do{woman_teacher_tone1}{1F469 1F3FB 200D 1F3EB}
+\bxce@do{woman_teacher_tone2}{1F469 1F3FC 200D 1F3EB}
+\bxce@do{woman_teacher_tone3}{1F469 1F3FD 200D 1F3EB}
+\bxce@do{woman_teacher_tone4}{1F469 1F3FE 200D 1F3EB}
+\bxce@do{woman_teacher_tone5}{1F469 1F3FF 200D 1F3EB}
+\bxce@do{woman_technologist}{1F469 200D 1F4BB}
+\bxce@do{woman_technologist_tone1}{1F469 1F3FB 200D 1F4BB}
+\bxce@do{woman_technologist_tone2}{1F469 1F3FC 200D 1F4BB}
+\bxce@do{woman_technologist_tone3}{1F469 1F3FD 200D 1F4BB}
+\bxce@do{woman_technologist_tone4}{1F469 1F3FE 200D 1F4BB}
+\bxce@do{woman_technologist_tone5}{1F469 1F3FF 200D 1F4BB}
+\bxce@do{woman_tipping_hand}{1F481 200D 2640}
+\bxce@do{woman_tipping_hand_tone1}{1F481 1F3FB 200D 2640}
+\bxce@do{woman_tipping_hand_tone2}{1F481 1F3FC 200D 2640}
+\bxce@do{woman_tipping_hand_tone3}{1F481 1F3FD 200D 2640}
+\bxce@do{woman_tipping_hand_tone4}{1F481 1F3FE 200D 2640}
+\bxce@do{woman_tipping_hand_tone5}{1F481 1F3FF 200D 2640}
+\bxce@do{woman_tone1}{1F469 1F3FB}
+\bxce@do{woman_tone1_beard}{1F9D4 1F3FB 200D 2640}
+\bxce@do{woman_tone2}{1F469 1F3FC}
+\bxce@do{woman_tone2_beard}{1F9D4 1F3FC 200D 2640}
+\bxce@do{woman_tone3}{1F469 1F3FD}
+\bxce@do{woman_tone3_beard}{1F9D4 1F3FD 200D 2640}
+\bxce@do{woman_tone4}{1F469 1F3FE}
+\bxce@do{woman_tone4_beard}{1F9D4 1F3FE 200D 2640}
+\bxce@do{woman_tone5}{1F469 1F3FF}
+\bxce@do{woman_tone5_beard}{1F9D4 1F3FF 200D 2640}
+\bxce@do{woman_vampire}{1F9DB 200D 2640}
+\bxce@do{woman_vampire_tone1}{1F9DB 1F3FB 200D 2640}
+\bxce@do{woman_vampire_tone2}{1F9DB 1F3FC 200D 2640}
+\bxce@do{woman_vampire_tone3}{1F9DB 1F3FD 200D 2640}
+\bxce@do{woman_vampire_tone4}{1F9DB 1F3FE 200D 2640}
+\bxce@do{woman_vampire_tone5}{1F9DB 1F3FF 200D 2640}
+\bxce@do{woman_walking}{1F6B6 200D 2640}
+\bxce@do{woman_walking_tone1}{1F6B6 1F3FB 200D 2640}
+\bxce@do{woman_walking_tone2}{1F6B6 1F3FC 200D 2640}
+\bxce@do{woman_walking_tone3}{1F6B6 1F3FD 200D 2640}
+\bxce@do{woman_walking_tone4}{1F6B6 1F3FE 200D 2640}
+\bxce@do{woman_walking_tone5}{1F6B6 1F3FF 200D 2640}
+\bxce@do{woman_wearing_turban}{1F473 200D 2640}
+\bxce@do{woman_wearing_turban_tone1}{1F473 1F3FB 200D 2640}
+\bxce@do{woman_wearing_turban_tone2}{1F473 1F3FC 200D 2640}
+\bxce@do{woman_wearing_turban_tone3}{1F473 1F3FD 200D 2640}
+\bxce@do{woman_wearing_turban_tone4}{1F473 1F3FE 200D 2640}
+\bxce@do{woman_wearing_turban_tone5}{1F473 1F3FF 200D 2640}
+\bxce@do{woman_white_haired}{1F469 200D 1F9B3}
+\bxce@do{woman_white_haired_tone1}{1F469 1F3FB 200D 1F9B3}
+\bxce@do{woman_white_haired_tone2}{1F469 1F3FC 200D 1F9B3}
+\bxce@do{woman_white_haired_tone3}{1F469 1F3FD 200D 1F9B3}
+\bxce@do{woman_white_haired_tone4}{1F469 1F3FE 200D 1F9B3}
+\bxce@do{woman_white_haired_tone5}{1F469 1F3FF 200D 1F9B3}
+\bxce@do{woman_with_headscarf}{1F9D5}
+\bxce@do{woman_with_headscarf_tone1}{1F9D5 1F3FB}
+\bxce@do{woman_with_headscarf_tone2}{1F9D5 1F3FC}
+\bxce@do{woman_with_headscarf_tone3}{1F9D5 1F3FD}
+\bxce@do{woman_with_headscarf_tone4}{1F9D5 1F3FE}
+\bxce@do{woman_with_headscarf_tone5}{1F9D5 1F3FF}
+\bxce@do{woman_with_probing_cane}{1F469 200D 1F9AF}
+\bxce@do{woman_with_probing_cane_tone1}{1F469 1F3FB 200D 1F9AF}
+\bxce@do{woman_with_probing_cane_tone2}{1F469 1F3FC 200D 1F9AF}
+\bxce@do{woman_with_probing_cane_tone3}{1F469 1F3FD 200D 1F9AF}
+\bxce@do{woman_with_probing_cane_tone4}{1F469 1F3FE 200D 1F9AF}
+\bxce@do{woman_with_probing_cane_tone5}{1F469 1F3FF 200D 1F9AF}
+\bxce@do{woman_with_veil}{1F470 200D 2640}
+\bxce@do{woman_with_veil_tone1}{1F470 1F3FB 200D 2640}
+\bxce@do{woman_with_veil_tone2}{1F470 1F3FC 200D 2640}
+\bxce@do{woman_with_veil_tone3}{1F470 1F3FD 200D 2640}
+\bxce@do{woman_with_veil_tone4}{1F470 1F3FE 200D 2640}
+\bxce@do{woman_with_veil_tone5}{1F470 1F3FF 200D 2640}
+\bxce@do{woman_zombie}{1F9DF 200D 2640}
+\bxce@do{womans_clothes}{1F45A}
+\bxce@do{womans_flat_shoe}{1F97F}
+\bxce@do{womans_hat}{1F452}
+\bxce@do{women_holding_hands}{1F46D}
+\bxce@do{women_holding_hands_tone1}{1F46D 1F3FB}
+\bxce@do{women_holding_hands_tone1_tone2}{1F469 1F3FB 200D 1F91D 200D 1F469 1F3FC}
+\bxce@do{women_holding_hands_tone1_tone3}{1F469 1F3FB 200D 1F91D 200D 1F469 1F3FD}
+\bxce@do{women_holding_hands_tone1_tone4}{1F469 1F3FB 200D 1F91D 200D 1F469 1F3FE}
+\bxce@do{women_holding_hands_tone1_tone5}{1F469 1F3FB 200D 1F91D 200D 1F469 1F3FF}
+\bxce@do{women_holding_hands_tone2}{1F46D 1F3FC}
+\bxce@do{women_holding_hands_tone2_tone1}{1F469 1F3FC 200D 1F91D 200D 1F469 1F3FB}
+\bxce@do{women_holding_hands_tone2_tone3}{1F469 1F3FC 200D 1F91D 200D 1F469 1F3FD}
+\bxce@do{women_holding_hands_tone2_tone4}{1F469 1F3FC 200D 1F91D 200D 1F469 1F3FE}
+\bxce@do{women_holding_hands_tone2_tone5}{1F469 1F3FC 200D 1F91D 200D 1F469 1F3FF}
+\bxce@do{women_holding_hands_tone3}{1F46D 1F3FD}
+\bxce@do{women_holding_hands_tone3_tone1}{1F469 1F3FD 200D 1F91D 200D 1F469 1F3FB}
+\bxce@do{women_holding_hands_tone3_tone2}{1F469 1F3FD 200D 1F91D 200D 1F469 1F3FC}
+\bxce@do{women_holding_hands_tone3_tone4}{1F469 1F3FD 200D 1F91D 200D 1F469 1F3FE}
+\bxce@do{women_holding_hands_tone3_tone5}{1F469 1F3FD 200D 1F91D 200D 1F469 1F3FF}
+\bxce@do{women_holding_hands_tone4}{1F46D 1F3FE}
+\bxce@do{women_holding_hands_tone4_tone1}{1F469 1F3FE 200D 1F91D 200D 1F469 1F3FB}
+\bxce@do{women_holding_hands_tone4_tone2}{1F469 1F3FE 200D 1F91D 200D 1F469 1F3FC}
+\bxce@do{women_holding_hands_tone4_tone3}{1F469 1F3FE 200D 1F91D 200D 1F469 1F3FD}
+\bxce@do{women_holding_hands_tone4_tone5}{1F469 1F3FE 200D 1F91D 200D 1F469 1F3FF}
+\bxce@do{women_holding_hands_tone5}{1F46D 1F3FF}
+\bxce@do{women_holding_hands_tone5_tone1}{1F469 1F3FF 200D 1F91D 200D 1F469 1F3FB}
+\bxce@do{women_holding_hands_tone5_tone2}{1F469 1F3FF 200D 1F91D 200D 1F469 1F3FC}
+\bxce@do{women_holding_hands_tone5_tone3}{1F469 1F3FF 200D 1F91D 200D 1F469 1F3FD}
+\bxce@do{women_holding_hands_tone5_tone4}{1F469 1F3FF 200D 1F91D 200D 1F469 1F3FE}
+\bxce@do{women_with_bunny_ears_partying}{1F46F 200D 2640}
+\bxce@do{women_wrestling}{1F93C 200D 2640}
+\bxce@do{womens}{1F6BA}
+\bxce@do{wood}{1FAB5}
+\bxce@do{woozy_face}{1F974}
+\bxce@do{worm}{1FAB1}
+\bxce@do{worried}{1F61F}
+\bxce@do{wrench}{1F527}
+\bxce@do{writing_hand}{270D}
+\bxce@do{writing_hand_tone1}{270D 1F3FB}
+\bxce@do{writing_hand_tone2}{270D 1F3FC}
+\bxce@do{writing_hand_tone3}{270D 1F3FD}
+\bxce@do{writing_hand_tone4}{270D 1F3FE}
+\bxce@do{writing_hand_tone5}{270D 1F3FF}
+\or %[7]
+\bxce@do{x}{274C}
+\bxce@do{yarn}{1F9F6}
+\bxce@do{yawning_face}{1F971}
+\bxce@do{yellow_circle}{1F7E1}
+\bxce@do{yellow_heart}{1F49B}
+\bxce@do{yellow_square}{1F7E8}
+\bxce@do{yen}{1F4B4}
+\bxce@do{yin_yang}{262F}
+\bxce@do{yo_yo}{1FA80}
+\bxce@do{yum}{1F60B}
+\bxce@do{zany_face}{1F92A}
+\bxce@do{zap}{26A1}
+\bxce@do{zebra}{1F993}
+\bxce@do{zero}{30 20E3}
+\bxce@do{zipper_mouth}{1F910}
+\bxce@do{zombie}{1F9DF}
+\bxce@do{zzz}{1F4A4}
+\else
+\bxce@do{1}{0}
+\bxce@do{8}{0}
+\bxce@do{a}{0}
+\bxce@do{b}{0}
+\bxce@do{c}{0}
+\bxce@do{d}{1}
+\bxce@do{e}{1}
+\bxce@do{f}{1}
+\bxce@do{g}{2}
+\bxce@do{h}{2}
+\bxce@do{i}{2}
+\bxce@do{j}{2}
+\bxce@do{k}{2}
+\bxce@do{l}{2}
+\bxce@do{m}{3}
+\bxce@do{n}{4}
+\bxce@do{o}{4}
+\bxce@do{p}{4}
+\bxce@do{q}{5}
+\bxce@do{r}{5}
+\bxce@do{s}{5}
+\bxce@do{t}{6}
+\bxce@do{u}{6}
+\bxce@do{v}{6}
+\bxce@do{w}{6}
+\bxce@do{x}{7}
+\bxce@do{y}{7}
+\bxce@do{z}{7}
+\fi
+\bxce@ndend
+%--------------------------------------- done
+%% EOF
diff --git a/Master/texmf-dist/tex/latex/bxcoloremoji/bxcoloremoji.sty b/Master/texmf-dist/tex/latex/bxcoloremoji/bxcoloremoji.sty
new file mode 100644
index 00000000000..52c281aeaa9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/bxcoloremoji/bxcoloremoji.sty
@@ -0,0 +1,2684 @@
+%%
+%% This is file 'bxcoloremoji.sty'.
+%%
+%% Copyright (c) 2017-2024 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declarations
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bxcoloremoji}[2024/11/18 v1.0a]
+\def\bxce@pkgname{bxcoloremoji}
+\providecommand\bxDebug[1]{}
+
+%% code guard
+\edef\bxce@restore@codes{%
+ \catcode33=\the\catcode33%
+ \catcode34=\the\catcode34%
+ \catcode39=\the\catcode39%
+ \catcode43=\the\catcode43%
+ \catcode45=\the\catcode45%
+ \catcode46=\the\catcode46%
+ \catcode47=\the\catcode47%
+ \catcode58=\the\catcode58%
+ \catcode59=\the\catcode59%
+ \catcode60=\the\catcode60%
+ \catcode62=\the\catcode62%
+ \catcode63=\the\catcode63%
+ \catcode96=\the\catcode96%
+ \catcode124=\the\catcode124%
+ \catcode126=\the\catcode126%
+ \endlinechar=\the\endlinechar%
+\relax}
+\catcode33=12 % <!>
+\catcode34=12 % <">
+\catcode39=12 % <'>
+\catcode43=12 % <+>
+\catcode45=12 % <->
+\catcode46=12 % <.>
+\catcode47=12 % </>
+\catcode58=12 % <:>
+\catcode59=12 % <;>
+\catcode60=12 % <<>
+\catcode62=12 % <>>
+\catcode63=12 % <?>
+\catcode96=12 % <`>
+\catcode124=12 % <|>
+\catcode126=13 % <~>
+\AtEndOfPackage{%
+ \bxce@restore@codes
+ \let\bxce@restore@codes\relax}
+
+%--------------------------------------- public settings
+
+%% packages
+\RequirePackage{etoolbox}[2011/01/03]% v2.1
+\RequirePackage{keyval}
+
+%% e-TeX check
+\ifx\numdef\@undefined % etoolbox is aborted
+ % etoolbox has already issued an error
+ \PackageWarningNoLine\bxce@pkgname
+ {Package loading is aborted}
+ \DeclareOption*{}
+ \ProcessOptions*
+\expandafter\endinput\fi\relax
+
+%%<*D> \coloremojidir : base directory
+\newcommand*\coloremojidir{emoji_images/}
+\chardef\bxce@abool@@false=0
+\chardef\bxce@abool@@auto=1
+\chardef\bxce@abool@@true=2
+%% switch bxce@nodvidriver@opt : is 'nodvidriver' given?
+\newbool{bxce@nodvidriver@opt}
+%% \bxce@bbparam@opt : 'bbparam' value
+\let\bxce@bbparam@opt\bxce@abool@@auto
+%% \bxce@jatype@opt : 'jatype' value
+\let\bxce@jatype@opt\bxce@abool@@auto
+%% switch bxce@names
+\newbool{bxce@names}
+\bxce@namestrue
+%% \bxce@preload@names@opt : 'preload-names' value
+\let\bxce@preload@names@opt\bxce@abool@@auto
+%% \bxce@bxghost@opt : 'bxghost' value
+\let\bxce@bxghost@opt\bxce@abool@@auto
+%% \bxce@output@type : output type
+\chardef\bxce@ot@@none=0 % no image
+\chardef\bxce@ot@@std=1 % use standard family
+\chardef\bxce@ot@@custom=2 % use custom family
+\chardef\bxce@ot@@twemojis=3 % use twemojis package
+\let\bxce@output@type\bxce@ot@@none
+%% switch bxce@use@pua
+\newbool{bxce@use@pua}
+%% switch bxce@twm@skip@tikz
+\newbool{bxce@twm@skip@tikz}
+\bxce@twm@skip@tikztrue
+%% bxce@family : image family
+\let\bxce@family\@undefined
+%% bxce@bb : image bbox
+\let\bxce@bb\relax
+%% bxce@ext : image file extension
+\let\bxce@ext\relax
+%% bxce@prefix : image file prefix
+\let\bxce@prefix\relax
+%% bxce@scale : image scale
+\def\bxce@scale{1}
+%% bxce@size : image size
+\let\bxce@size\@empty
+%% bxce@size@var : image size for *-form
+\let\bxce@size@var\@empty
+%% \bxce@count@from : starting value of emoji orders
+% (used in \coloremoji(code)successor(of))
+\def\bxce@count@from{1}
+
+%% switch bxce@in@command
+% Whether the key process is for command options.
+\newif\ifbxce@in@command
+
+%% \bxce@opt@in@cmd{<name>}{<code>}
+% Process a key that is only valid in command options.
+\def\bxce@opt@in@cmd#1#2{%
+ \ifbxce@in@command #2%
+ \else \bxce@err@naopt{#1}%
+ \fi
+}
+
+%% \bxce@expd{<code>}
+% Fully-expands the code and runs it.
+\def\bxce@expd#1{%
+ \edef\bxce@tmp@expd{#1}%
+ \bxce@tmp@expd
+}
+
+%% \bxce@initialize@setup
+\def\bxce@initialize@setup{%
+ \let\bxce@output@type\bxce@ot@@none
+ \let\bxce@family\relax
+ \let\bxce@bb\relax
+ \let\bxce@ext\relax
+ \let\bxce@prefix\relax
+}
+
+%% \bxce@warn@dpcmd
+\def\bxce@warn@dpcmd{%
+ \PackageWarningNoLine\bxce@pkgname
+ {Parameter '\string\coloremojidir' is DEPRECATED\MessageBreak
+ and will be abolished in future, where\MessageBreak
+ the parameter is ignored and regarded as\MessageBreak
+ always empty}%
+}
+
+%% \bxce@warn@dpopt{<name>}
+\def\bxce@warn@dpopt#1{%
+ \PackageWarningNoLine\bxce@pkgname
+ {Option '#1' is DEPRECATED\MessageBreak
+ and will be abolished in future.\MessageBreak
+ It might no longer work now}%
+}
+
+%% \bxce@err@ivval{<name>}{<value>}
+\def\bxce@err@ivval#1#2{%
+ \PackageError\bxce@pkgname
+ {Invalid value for key '#1' found\MessageBreak
+ (#2)}%
+ {\@eha}%
+}
+
+%% \bxce@err@naopt{<name>}
+\def\bxce@err@naopt#1{%
+ \PackageError\bxce@pkgname
+ {You cannot use '#1' here}%
+ {\@eha}%
+}
+
+%% \bxce@check@opt@key{<key>}{<value>}{<check>}{<true>}{<false>}
+\def\bxce@check@opt@key#1#2#3#4#5{%
+ \ifcsdef{#3#2}{#4}{%else
+ \bxce@err@ivval{#1}{#2}%
+ #5%
+ }%
+}
+
+%% \bxce@invalidate@opt@key{<name>}
+\def\bxce@invalidate@opt@key#1{%
+ \define@key{bxce}{#1}[]{\bxce@err@naopt{#1}}%
+}
+
+%% family options
+\define@key{bxce}{no-image}[]{%
+ \bxce@initialize@setup
+}
+\define@key{bxce}{twemoji-pdf}[]{%
+ \bxce@use@custom@family{twemoji-pdf}%
+}
+\define@key{bxce}{twemoji-png}[]{%
+ \bxce@use@custom@family{twemoji-png}%
+}
+%% 'twemojis'
+\define@key{bxce}{twemojis}[]{%
+ \bxce@initialize@setup
+ \let\bxce@output@type\bxce@ot@@twemojis
+ \def\bxce@family{twemojis}%
+ \def\bxce@bb{0 0 27 27}%
+}
+\define@key{bxce}{twitter}[]{% *DEPRECATED*
+ \bxce@warn@dpopt{twitter}%
+ \let\bxce@output@type\bxce@ot@@std
+ \def\bxce@family{twitter}%
+ \def\bxce@bb{0 0 38 38}%
+ \def\bxce@ext{pdf}%
+ \def\bxce@prefix{\coloremojidir twitter/}%
+}
+\define@key{bxce}{hires}[]{% *DEPRECATED*
+ \bxce@warn@dpopt{hires}%
+ \let\bxce@output@type\bxce@ot@@std
+ \def\bxce@family{hires}%
+ \def\bxce@bb{0 0 11.338600 11.338600}%
+ \def\bxce@ext{pdf}%
+ \def\bxce@prefix{\coloremojidir hires/}%
+}
+\define@key{bxce}{lowres}[]{% *DEPRECATED*
+ \bxce@warn@dpopt{lowres}%
+ \let\bxce@output@type\bxce@ot@@std
+ \def\bxce@family{lowres}%
+ \def\bxce@bb{0 0 4.535430 4.535430}%
+ \def\bxce@ext{pdf}%
+ \def\bxce@prefix{\coloremojidir lowres/}%
+}
+
+%% 'scale=<real>'
+\define@key{bxce}{scale}{%
+ \def\bxce@scale{#1}%
+}
+
+%% 'size=<length>'
+\define@key{bxce}{size}{%
+ \def\bxce@size{#1}%
+}
+%% 'size*=<length>'
+\define@key{bxce}{size*}{%
+ \def\bxce@size@var{#1}%
+}
+
+%% 'basedir=<path>'
+\define@key{bxce}{basedir}{% *DEPRECATED*
+ \bxce@warn@dpopt{basedir}%
+ \def\coloremojidir{#1}%
+}
+
+%% 'bbparam=<bool/auto>'
+\define@key{bxce}{bbparam}[true]{%
+ \bxce@check@opt@key{bbparam}{#1}{bxce@abool@@}{%
+ \letcs\bxce@bbparam@opt{bxce@abool@@#1}%
+ }{}%
+}
+
+%% 'jatype=<bool/auto>'
+\define@key{bxce}{jatype}[true]{%
+ \bxce@check@opt@key{jatype}{#1}{bxce@abool@@}{%
+ \letcs\bxce@jatype@opt{bxce@abool@@#1}%
+ }{}%
+}
+
+%% 'names=<bool>'
+\define@key{bxce}{names}[true]{%
+ \bxce@check@opt@key{names}{#1}{bxce@names}{%
+ \csuse{bxce@names#1}%
+ }{}%
+}
+
+%% 'preload-names=<bool/auto>'
+\define@key{bxce}{preload-names}[true]{%
+ \bxce@check@opt@key{preload-names}{#1}{bxce@abool@@}{%
+ \letcs\bxce@preload@names@opt{bxce@abool@@#1}%
+ }{}%
+}
+
+%% 'bxghost=<bool/auto>'
+\define@key{bxce}{bxghost}[true]{%
+ \bxce@check@opt@key{bxghost}{#1}{bxce@abool@@}{%
+ \letcs\bxce@bxghost@opt{bxce@abool@@#1}%
+ }{}%
+}
+
+%% 'pua=<bool>'
+\define@key{bxce}{pua}[true]{%
+ \bxce@check@opt@key{pua}{#1}{bxce@use@pua}{%
+ \csuse{bxce@use@pua#1}%
+ }{}%
+}
+
+%% 'twemojis-skip-tikz=<bool>'
+\define@key{bxce}{twemojis-skip-tikz}[true]{%
+ \bxce@check@opt@key{twemojis-skip-tikz}{#1}{bxce@twm@skip@tikz}{%
+ \csuse{bxce@twm@skip@tikz#1}%
+ }{}%
+}
+
+%% 'count-from=<number>'
+\define@key{bxce}{count-from}{%
+ \def\bxce@count@from{#1}%
+}
+
+%% 'family=<name>'
+\define@key{bxce}{family}{%
+ \bxce@use@custom@family{#1}%
+}
+% tentative definition, redefined later
+\def\bxce@use@custom@family#1{%
+ \bxce@initialize@setup
+ \let\bxce@output@type\bxce@ot@@custom
+ \def\bxce@family{#1}%
+}
+
+%--------------------------------------- package options
+
+%% 'nodvidriver'
+\DeclareOption{nodvidriver}{%
+ \bxce@nodvidriver@opttrue
+}
+%% 'resetdvidriver'
+\DeclareOption{resetdvidriver}{%
+ \bxce@nodvidriver@optfalse
+}
+%% keyval options
+\DeclareOption*{%
+ \bxce@expd{\noexpand\setkeys{bxce}{\CurrentOption}}%
+}
+%% dispatch
+\ProcessOptions*
+
+%% set default family
+\unless\ifdefined\bxce@family
+ \setkeys{bxce}{twemojis}
+\fi
+
+%% invalidate some keys
+\bxce@invalidate@opt@key{basedir}
+\bxce@invalidate@opt@key{bbparam}
+\bxce@invalidate@opt@key{jatype}
+\bxce@invalidate@opt@key{names}
+\bxce@invalidate@opt@key{preload-names}
+\bxce@invalidate@opt@key{bxghost}
+\bxce@invalidate@opt@key{twemoji-skip-tikz}
+
+\AtBeginDocument{%
+ \@tempswatrue
+ \def\bxce@do{\ifx\coloremojidir\bxce@tmpa\@tempswafalse\fi}%
+ \def\bxce@tmpa{emoji_images/}\bxce@do
+ \let\bxce@tmpa\@empty\bxce@do \long\def\bxce@tmpa{}\bxce@do
+ \if@tempswa \bxce@warn@dpcmd \fi
+}
+
+%--------------------------------------- environment check
+
+%% \bxce@engine : engine type
+\let\bxce@engine\relax
+%% switch 'bxce@jaok' : Japanese OK?
+\newbool{bxce@jaok}
+%% switch 'bxce@ptex' : engine is pTeX-ish?
+\newbool{bxce@ptex}
+%% switch 'bxce@ucs@avail' : '\ucs' (of pTeX) is available?
+\newbool{bxce@ucs@avail}
+%% switch 'bxce@luatexja' : LuaTeX-ja is loaded?
+\newbool{bxce@luatexja}
+%% switch 'bxce@CJK' : CJK is loaded?
+\newbool{bxce@CJK}
+%% switch 'bxce@inputenc' : use inputenc?
+\newbool{bxce@inputenc}
+%% switch 'bxce@use@image' : use images?
+\newbool{bxce@use@image}
+%% switch 'bxce@use@bb' : use bb parameter?
+\newbool{bxce@use@bb}
+%% switch 'bxce@bxghost' : use bxghost?
+\newbool{bxce@bxghost}
+
+%% set \bxce@engine
+\@onlypreamble\bxce@if@primitive
+\def\bxce@if@primitive#1#2{%
+ \edef\bxce@tmpa{\string#1}\edef\bxce@tmpb{\meaning#1}%
+ \ifx\bxce@tmpa\bxce@tmpb #2\fi
+}
+\let\bxce@engine=d
+\bxce@if@primitive\kanjiskip{\let\bxce@engine=p}
+\bxce@if@primitive\enablecjktoken{\let\bxce@engine=u}
+\bxce@if@primitive\XeTeXversion{\let\bxce@engine=x}
+\bxce@if@primitive\luatexversion{\let\bxce@engine=l}
+% Here upTeX whose internal kanji code is not Unicode
+% will be regarded as 'pTeX'.
+\if u\bxce@engine
+ \ifnum\ucs"3000="3000 \else \let\bxce@engine=p\fi
+\fi
+
+%% set switch 'bxce@ptex'
+\bxce@ptexfalse
+\if p\bxce@engine \bxce@ptextrue \fi
+\if u\bxce@engine \bxce@ptextrue \fi
+% NB. bxce@luatexja will be set at \bxce@resolve@image@metric
+
+%% set switch 'bxce@ucs@avail'
+\bxce@ucs@availfalse
+\ifbxce@ptex
+ \bxce@if@primitive\ucs{\bxce@ucs@availtrue}
+\fi
+
+%% \bxce@check@inputenc
+\let\bxce@check@inputenc\relax
+\ifnum0\ifbxce@ptex1\fi\ifx d\bxce@engine1\fi >0
+ \def\bxce@tmpa{utf8}%
+ \ifx\inputencodingname\bxce@tmpa
+ \bxce@inputenctrue
+ \else\unless\ifx u\bxce@engine
+ \def\bxce@check@inputenc{%
+ \global\let\bxce@check@inputenc\relax
+ \PackageError\bxce@pkgname
+ {You must load 'inputenc' before this package\MessageBreak
+ and use input encoding 'utf8'}\@ehc
+ }%
+ \fi\fi
+\fi
+
+%% set switch 'bxce@use@image'
+\unless\ifbxce@nodvidriver@opt
+ \bxce@use@imagetrue
+\fi
+
+%% \bxce@resolve@image@setup
+\bxce@use@bbfalse
+\def\bxce@resolve@image@setup{%
+ \global\let\bxce@resolve@image@setup\relax
+ \ifbxce@use@image
+ \@ifpackageloaded{graphicx}{}{%else
+ \PackageError\bxce@pkgname
+ {Package 'graphicx' is not loaded}\@ehc
+ \global\bxce@use@imagefalse
+ }%
+ \fi
+ \unless\ifbxce@use@image
+ \else\ifnum\bxce@bbparam@opt=\bxce@abool@@true
+ \global\bxce@use@bbtrue
+ \else\ifnum\bxce@bbparam@opt=\bxce@abool@@auto
+ \def\bxce@tmpa{dvipdfmx.def}%
+ \ifx\Gin@driver\bxce@tmpa \global\bxce@use@bbtrue \fi
+ \def\bxce@tmpa{dvipdfm.def}%
+ \ifx\Gin@driver\bxce@tmpa \global\bxce@use@bbtrue \fi
+ \fi\fi\fi
+ \bxce@resolve@image@metric
+}
+\AtBeginDocument{\bxce@resolve@image@setup}
+% auto-load graphicx if possible
+\ifbxce@use@image
+ % check if a global driver option is given
+ \chardef\bxce@do\z@
+ \@for\bxce@tmpa:=\@classoptionslist\do{%
+ \@for\bxce@tmpb:={dvipdfmx,dvipdfm,dvips}\do{%
+ \ifx\bxce@tmpa\bxce@tmpb \chardef\bxce@do\@ne \fi
+ }
+ }
+ \ifnum\ifdefined\pdfoutput \pdfoutput
+ \else\ifdefined\outputmode \outputmode
+ \else\ifx x\bxce@engine \@ne
+ \else \bxce@do \fi\fi\fi >\z@
+ \RequirePackage{graphicx}[]%
+ \@ifpackageloaded{xcolor}{}{%else
+ \@ifl@t@r\fmtversion{2021/06/01}{%
+ \RequirePackage{color}[]%
+ }{}%
+ }
+ % if 'twemojis' option is given auto-load 'twemojis' package
+ \ifnum\bxce@output@type=\bxce@ot@@twemojis
+ \@ifpackageloaded{tikz}{\bxce@twm@skip@tikzfalse}{}%
+ \ifbxce@twm@skip@tikz
+ % avoid loading tikz in twemojis
+ \cslet{ver@tikz.sty}\@empty
+ \RequirePackage{twemojis}[]%
+ \csundef{ver@tikz.sty}%
+ \else
+ \RequirePackage{twemojis}[]%
+ \fi
+ \@ifpackageloaded{twemojis}{}{%else
+ % not installed, error is already issued
+ \bxce@use@imagefalse
+ }
+ \fi
+ \fi
+\fi
+
+%% set switch 'bxce@bxghost'
+\ifnum\bxce@jatype@opt=\bxce@abool@@false % skip
+\else\ifnum\bxce@bxghost@opt=\bxce@abool@@true
+ \bxce@bxghosttrue
+\else\ifnum\bxce@bxghost@opt=\bxce@abool@@auto
+ \@ifpackageloaded{luatexja}{\let\bxce@tmpa=t}{\let\bxce@tmpa=f}
+ \if \ifbxce@ptex T\else\if t\bxce@tmpa T\else F\fi\fi T%
+ \IfFileExists{bxghost-lib.sty}{\bxce@bxghosttrue}{}
+ \fi
+\fi\fi\fi
+\ifbxce@bxghost
+ \IfFileExists{bxghost-lib.sty}{%
+ \RequirePackage{bxghost-lib}[]%
+ }{%else
+ \RequirePackage{bxghost}[]%
+ }
+ \unless\ifdefined\jghostguarded
+ % not installed, error is already issued
+ \bxce@bxghostfalse
+ \fi
+\fi
+
+%--------------------------------------- helpers
+
+%% variables
+\newbool{bxce@ok}
+\newcount\bxce@cnta
+\newcount\bxce@cnto
+\let\bxce@arg\relax
+% (flags)
+%[bxce@f/ee] : error occurred in input text expansion
+%[bxce@f/jg] : ja-geta is needed in PDF strings
+
+%% unique tokens
+\def\bxce@end{\bxce@end@}
+\def\bxce@mt{\bxce@mt@}
+\let\bxce@mk\indent
+
+%% \bxce@hex{<number>}
+\letcs\bxce@hex{int_to_Hex:n}
+\unless\ifdefined\bxce@hex
+ \input{binhex}
+ \let\bxce@hex\hex
+\fi
+
+%% \bxce@@BS
+\begingroup \lccode`\*=`\\
+\lowercase{\global\let\bxce@@BS=*}
+\endgroup
+
+%% \bxce@nihil
+\def\bxce@nihil{%
+ \vrule\@width\z@\relax
+}
+
+%% \bxce@cond\ifXXX...\fi{<true>}{<false>}
+\@gobbletwo\if\if \def\bxce@cond#1\fi{%
+ #1\expandafter\@firstoftwo
+ \else \expandafter\@secondoftwo \fi
+}
+
+%% \bxce@skip@space\CScont<space>
+\def\bxce@skip@space#1 {#1}
+
+%% \bxce@raise@flag{<name>}
+\def\bxce@raise@flag#1{%
+ \expandafter\@gobble\csname bxce@f/#1\endcsname
+}
+%% \bxce@if@flag@raised{<name>}
+\def\bxce@if@flag@raised#1{%
+ \ifcsdef{bxce@f/#1}%
+}
+
+%% \bxce@hedge@options@with\CS<options>{<arg>}
+% Expands to \CS{<options>}{<arg>}.
+\def\bxce@hedge@options@with#1#2#{% brace delimit
+ #1{#2}%
+}
+
+%% \bxce@with@star{<str>}{<true>}{<false>}
+% Checks whether the string starts with '*'.
+\def\bxce@with@star#1{%
+ \bxce@with@star@a#1.\bxce@end
+}
+\def\bxce@with@star@a#1#2\bxce@end{%
+ \bxce@cond\ifx*#1\fi
+}
+
+%% \bxce@lowercase@edef
+\def\bxce@lowercase@edef#1#2{%
+ \edef\bxce@tmp@le{\noexpand\bxce@lowercase@edef@a{#2}}%
+ \bxce@tmp@le#1%
+}
+\def\bxce@lowercase@edef@a#1#2{%
+ \lowercase{\def#2{#1}}%
+}
+
+%--------------------------------------- character database
+
+%% character properties
+\chardef\bxce@cp@base=1 % base char
+\chardef\bxce@cp@comb=2 % combining char
+\chardef\bxce@cp@mod=7 % modifier char
+\chardef\bxce@cp@ris=3 % region indicator
+\chardef\bxce@cp@evs=4 % emoji variant selector
+\chardef\bxce@cp@zwj=5 % zero width joiner
+\chardef\bxce@cp@tag=6 % tag char
+
+%% constants
+%[bxce@cp/<code>] : Unicode -> char property
+%[bxce@ju/<jis>] : JIS-code -> Unicode (for jachar trick)
+
+%% variables
+\let\bxce@cp\relax
+
+%% \bxce@@<codevalue>;
+\let\bxce@@\relax % normally unexpandable
+
+%% \bxce@csn@cp{<codevalue>}
+\def\bxce@csn@cp#1{%
+ bxce@cp/\number#1%
+}
+\ifbxce@use@pua
+ \def\bxce@csn@cp#1{%
+ bxce@cp/%
+ \ifnum#1<"E000 \number#1%
+ \else\ifnum#1<"F900 48%
+ \else\ifnum#1<"F0000 \number#1%
+ \else 48%
+ \fi\fi\fi
+ }
+\fi
+
+%% \bxce@set@cp<cp-value>{<range>,...}
+\@onlypreamble\bxce@set@cp
+\def\bxce@set@cp#1#2{%
+ \let\bxce@cp=#1%
+ \@for\bxce@arg:={#2}\do{%
+ \expandafter\bxce@set@cp@a\bxce@arg--\bxce@end}%
+}
+\@onlypreamble\bxce@set@cp@a
+\def\bxce@set@cp@a#1-#2-#3\bxce@end{%
+ \ifx-#2-\bxce@set@cp@b{#1}{#1}%
+ \else \bxce@set@cp@b{#1}{#2}%
+ \fi
+}
+\@onlypreamble\bxce@set@cp@b
+\def\bxce@set@cp@b#1#2{%
+ \bxce@cnta="#1\relax
+ \numdef\bxce@tmpb{"#2+1}%
+ \@whilenum{\bxce@cnta<\bxce@tmpb}\do{%
+ \edef\bxce@arg{{\the\bxce@cnta}{\bxce@hex{\bxce@cnta}}}%
+ \expandafter\bxce@set@cp@c\bxce@arg
+ \advance\bxce@cnta1 }%
+}
+\@onlypreamble\bxce@set@cp@c
+\def\bxce@set@cp@c#1#2{%
+ \cslet{bxce@cp/#1}\bxce@cp
+ \bxce@set@cp@d{#1}{#2}%
+}
+\@onlypreamble\bxce@set@cp@d
+\ifx u\bxce@engine
+\def\bxce@set@cp@d#1#2{%
+ \ifbxce@inputenc
+ \ifnum#1>127 \ifnum\kcatcode#1=15
+ \DeclareUnicodeCharacter{#2}{\bxce@@#2;}%
+ \fi\fi
+ \else
+ \PackageWarningNoLine\bxce@pkgname
+ {Some emoji characters might not be output.\MessageBreak
+ You must load 'inputenc' before this package\MessageBreak
+ and use input encoding 'utf8'}
+ \let\bxce@set@cp@d\@gobbletwo
+ \fi
+}
+\else
+\def\bxce@set@cp@d#1#2{%
+ \ifbxce@inputenc\ifnum#1>127
+ \DeclareUnicodeCharacter{#2}{\bxce@@#2;}%
+ \fi\fi
+}
+\fi
+
+%%-------- data
+
+%% make [bxce@cp] table
+\bxce@set@cp\bxce@cp@base{%
+ 0023,002A,0030-0039,00A9,00AE,203C,2049,2122,2139,2194-2199,%
+ 21A9-21AA,231A-231B,2328,23CF,23E9-23EC,23ED-23EE,23EF,23F0,%
+ 23F1-23F2,23F3,23F8-23FA,24C2,25AA-25AB,25B6,25C0,25FB-25FE,%
+ 2600-2601,2602-2603,2604,260E,2611,2614-2615,2618,261D,2620,%
+ 2622-2623,2626,262A,262E,262F,2638-2639,263A,2640,2642,2648-2653,%
+ 265F,2660,2663,2665-2666,2668,267B,267E,267F,2692,2693,2694,2695,%
+ 2696-2697,2699,269B-269C,26A0-26A1,26A7,26AA-26AB,26B0-26B1,%
+ 26BD-26BE,26C4-26C5,26C8,26CE,26CF,26D1,26D3,26D4,26E9,26EA,%
+ 26F0-26F1,26F2-26F3,26F4,26F5,26F7-26F9,26FA,26FD,2702,2705,%
+ 2708-270C,270D,270F,2712,2714,2716,271D,2721,2728,2733-2734,2744,%
+ 2747,274C,274E,2753-2755,2757,2763,2764,2795-2797,27A1,27B0,27BF,%
+ 2934-2935,2B05-2B07,2B1B-2B1C,2B50,2B55,3030,303D,3297,3299,1F004,%
+ 1F0CF,1F170-1F171,1F17E-1F17F,1F18E,1F191-1F19A,1F1E6-1F1FF,%
+ 1F201-1F202,1F21A,1F22F,1F232-1F23A,1F250-1F251,1F300-1F30C,%
+ 1F30D-1F30E,1F30F,1F310,1F311,1F312,1F313-1F315,1F316-1F318,1F319,%
+ 1F31A,1F31B,1F31C,1F31D-1F31E,1F31F-1F320,1F321,1F324-1F32C,%
+ 1F32D-1F32F,1F330-1F331,1F332-1F333,1F334-1F335,1F336,1F337-1F34A,%
+ 1F34B,1F34C-1F34F,1F350,1F351-1F37B,1F37C,1F37D,1F37E-1F37F,%
+ 1F380-1F393,1F396-1F397,1F399-1F39B,1F39E-1F39F,1F3A0-1F3C4,1F3C5,%
+ 1F3C6,1F3C7,1F3C8,1F3C9,1F3CA,1F3CB-1F3CE,1F3CF-1F3D3,1F3D4-1F3DF,%
+ 1F3E0-1F3E3,1F3E4,1F3E5-1F3F0,1F3F3,1F3F4,1F3F5,1F3F7,1F3F8-1F407,%
+ 1F408,1F409-1F40B,1F40C-1F40E,1F40F-1F410,1F411-1F412,1F413,1F414,%
+ 1F415,1F416,1F417-1F429,1F42A,1F42B-1F43E,1F43F,1F440,1F441,%
+ 1F442-1F464,1F465,1F466-1F46B,1F46C-1F46D,1F46E-1F4AC,1F4AD,%
+ 1F4AE-1F4B5,1F4B6-1F4B7,1F4B8-1F4EB,1F4EC-1F4ED,1F4EE,1F4EF,%
+ 1F4F0-1F4F4,1F4F5,1F4F6-1F4F7,1F4F8,1F4F9-1F4FC,1F4FD,1F4FF-1F502,%
+ 1F503,1F504-1F507,1F508,1F509,1F50A-1F514,1F515,1F516-1F52B,%
+ 1F52C-1F52D,1F52E-1F53D,1F549-1F54A,1F54B-1F54E,1F550-1F55B,%
+ 1F55C-1F567,1F56F-1F570,1F573-1F579,1F57A,1F587,1F58A-1F58D,1F590,%
+ 1F595-1F596,1F5A4,1F5A5,1F5A8,1F5B1-1F5B2,1F5BC,1F5C2-1F5C4,%
+ 1F5D1-1F5D3,1F5DC-1F5DE,1F5E1,1F5E3,1F5E8,1F5EF,1F5F3,1F5FA,%
+ 1F5FB-1F5FF,1F600,1F601-1F606,1F607-1F608,1F609-1F60D,1F60E,1F60F,%
+ 1F610,1F611,1F612-1F614,1F615,1F616,1F617,1F618,1F619,1F61A,1F61B,%
+ 1F61C-1F61E,1F61F,1F620-1F625,1F626-1F627,1F628-1F62B,1F62C,1F62D,%
+ 1F62E-1F62F,1F630-1F633,1F634,1F635,1F636,1F637-1F640,1F641-1F644,%
+ 1F645-1F64F,1F680,1F681-1F682,1F683-1F685,1F686,1F687,1F688,1F689,%
+ 1F68A-1F68B,1F68C,1F68D,1F68E,1F68F,1F690,1F691-1F693,1F694,1F695,%
+ 1F696,1F697,1F698,1F699-1F69A,1F69B-1F6A1,1F6A2,1F6A3,1F6A4-1F6A5,%
+ 1F6A6,1F6A7-1F6AD,1F6AE-1F6B1,1F6B2,1F6B3-1F6B5,1F6B6,1F6B7-1F6B8,%
+ 1F6B9-1F6BE,1F6BF,1F6C0,1F6C1-1F6C5,1F6CB,1F6CC,1F6CD-1F6CF,1F6D0,%
+ 1F6D1-1F6D2,1F6D5,1F6D6-1F6D7,1F6DD-1F6DF,1F6E0-1F6E5,1F6E9,%
+ 1F6EB-1F6EC,1F6F0,1F6F3,1F6F4-1F6F6,1F6F7-1F6F8,1F6F9,1F6FA,%
+ 1F6FB-1F6FC,1F7E0-1F7EB,1F7F0,1F90C,1F90D-1F90F,1F910-1F918,%
+ 1F919-1F91E,1F91F,1F920-1F927,1F928-1F92F,1F930,1F931-1F932,%
+ 1F933-1F93A,1F93C-1F93E,1F93F,1F940-1F945,1F947-1F94B,1F94C,%
+ 1F94D-1F94F,1F950-1F95E,1F95F-1F96B,1F96C-1F970,1F971,1F972,%
+ 1F973-1F976,1F977-1F978,1F979,1F97A,1F97B,1F97C-1F97F,1F980-1F984,%
+ 1F985-1F991,1F992-1F997,1F998-1F9A2,1F9A3-1F9A4,1F9A5-1F9AA,%
+ 1F9AB-1F9AD,1F9AE-1F9AF,1F9B0-1F9B9,1F9BA-1F9BF,1F9C0,1F9C1-1F9C2,%
+ 1F9C3-1F9CA,1F9CB,1F9CC,1F9CD-1F9CF,1F9D0-1F9E6,1F9E7-1F9FF,%
+ 1FA70-1FA73,1FA74,1FA78-1FA7A,1FA7B-1FA7C,1FA80-1FA82,1FA83-1FA86,%
+ 1FA90-1FA95,1FA96-1FAA8,1FAA9-1FAAC,1FAB0-1FAB6,1FAB7-1FABA,%
+ 1FAC0-1FAC2,1FAC3-1FAC5,1FAD0-1FAD6,1FAD7-1FAD9,1FAE0-1FAE7,%
+ 1FAF0-1FAF6}
+\bxce@set@cp\bxce@cp@comb{%
+ 20E0,20E3}
+\bxce@set@cp\bxce@cp@mod{%
+ 1F3FB-1F3FF}
+\bxce@set@cp\bxce@cp@ris{%
+ 1F1E6-1F1FF}
+\bxce@set@cp\bxce@cp@evs{%
+ FE0E-FE0F}
+\bxce@set@cp\bxce@cp@zwj{%
+ 200D}
+\bxce@set@cp\bxce@cp@tag{%
+ E0020-E007F}
+
+%% make [bxce@ju] table
+\ifx p\bxce@engine
+ \def\bxce@do#1#2{\csedef{bxce@ju/\jis"#1}{\number"#2}}
+ \bxce@do{2169}{2642}
+ \bxce@do{216A}{2640}
+\fi
+
+%--------------------------------------- user interface
+
+%%<*> \coloremojisetup{<key>=<value>,...}
+\newrobustcmd*{\coloremojisetup}[1]{%
+ \setkeys{bxce}{#1}%
+}
+
+%%<*> \coloremoji*[<option>,...]{<text>}
+\newrobustcmd*{\coloremoji}{%
+ \bxce@enghost@with@opt\bxce@coloremoji@a
+}
+\def\bxce@coloremoji@a#1{%
+ \bxce@ghost@guarded{%
+ \bxce@parse@text{#1}%
+ \bxce@output
+ }%
+}
+
+% TODO: Make \coloremojiucs an alias to \coloremojicode.
+
+%%<*> \coloremojiucs*[<option>,...]{<codevalue> ...}
+\newrobustcmd*{\coloremojiucs}{%
+ \bxce@enghost@with@opt\bxce@coloremojicode@a
+}
+\def\bxce@coloremojicode@a#1{%
+ \bxce@ghost@guarded{%
+ \bxce@parse@text@ccseq{#1}%
+ \bxce@output
+ }%
+}
+
+%%<*> \coloremojicode*[<option>,...]{<codevalue> ...}
+% An alias to \coloremojiucs.
+\newcommand*{\coloremojicode}{\coloremojiucs}
+
+%--------------------------------------- parse text
+
+%% variables
+\newbool{bxce@escape}
+\let\bxce@text\relax
+\let\bxce@cseq\@empty
+
+%% error messages
+\def\bxce@err@intcc#1#2{%
+ \PackageError\bxce@pkgname
+ {INTERNAL ERROR (#1)\MessageBreak
+ (code = U+#2)}%
+ {\@ehc}%
+}
+\def\bxce@warn@locmb#1{%
+ \PackageWarning\bxce@pkgname
+ {Lone combining character found\MessageBreak
+ (code = U+#1)}%
+}
+\def\bxce@warn@lotag#1{%
+ \PackageWarning\bxce@pkgname
+ {Lone tag character found\MessageBreak
+ (code = U+#1)}%
+}
+\def\bxce@warn@loris#1{%
+ \PackageWarning\bxce@pkgname
+ {Unpaired region indicator symbol found\MessageBreak
+ (code = U+#1)}%
+}
+\def\bxce@warn@lschr{%
+ \PackageWarning\bxce@pkgname
+ {Some characters given to \string\coloremoji\space are\MessageBreak
+ unimplemented and thus lost,}%
+}
+
+%% \bxce@expand@text{<text>}
+\def\bxce@expand@text#1{%
+ \bxce@check@inputenc
+ \begingroup
+ \ifbxce@CJK \bxce@CJK@preproc
+ \else \bxce@std@preproc
+ \fi
+ % Here protected expansion is needed, but still active UTF-8 byte
+ % sequences need to be expanded.
+ \ifdefined\UTFviii@two@octets@combine \bxce@newltx@patch \fi
+ \let\GenericError\bxce@GenericError
+ \def\bxce@@{\"}\let\IeC\@firstofone \let\"\relax
+ \protected@xdef\@gtempa{#1}%
+ \bxce@if@flag@raised{ee}{%
+ \bxce@warn@lschr
+ }{}%
+ \endgroup
+ \let\bxce@text\@gtempa
+}
+\def\bxce@GenericError#1#2#3#4{%
+ \bxce@raise@flag{ee}}
+\def\bxce@newltx@patch{%
+ \let\UTF@two@octets@noexpand\@empty
+ \let\UTF@three@octets@noexpand\@empty
+ \let\UTF@four@octets@noexpand\@empty
+}
+
+%% \bxce@parse@text{<text>}
+\def\bxce@parse@text#1{%
+ \bxce@expand@text{#1}%
+ \edef\bxce@text{\detokenize\expandafter{\bxce@text}}%
+ \expandafter\bxce@parse@first\bxce@text\bxce@end
+\bxDebug{first=\meaning\bxce@text}%
+ \expandafter\bxce@parse@second\bxce@text\bxce@end
+\bxDebug{second=\meaning\bxce@text}%
+ \expandafter\bxce@parse@third\bxce@text\bxce@end
+\bxDebug{third=\meaning\bxce@text}%
+}
+% first stage
+\let\bxce@T\relax
+\let\bxce@O\relax
+\let\bxce@S\relax
+\let\bxce@E\relax
+\let\bxce@J\relax
+\let\bxce@c\relax
+\def\bxce@parse@first{%
+ \let\bxce@text\@empty
+ \bxce@escapefalse
+ \bxce@parse@first@a
+}
+\def\bxce@parse@first@a{%
+ \futurelet\bxce@arg\bxce@parse@first@b
+}
+\def\bxce@parse@first@b{%
+ \bxce@cond\ifx\bxce@arg\bxce@end\fi{%
+ \appto\bxce@text{\bxce@T.}%
+ \@gobble
+ }{\bxce@cond\ifx\bxce@arg\@sptoken\fi{%
+ \bxce@escapefalse
+ \appto\bxce@text{\bxce@S.}%
+ \bxce@skip@space\bxce@parse@first@a
+ }{\bxce@cond\ifbxce@escape\fi{%
+ \bxce@parse@first@c
+ }{%else
+ \bxce@parse@first@d
+ }}}%
+}
+\def\bxce@parse@first@c#1{%
+ \bxce@escapefalse
+ \bxce@cond\if#1"\fi{%
+ \bxce@parse@first@f
+ }{%else
+ \bxce@parse@first@e{#1}%
+ \bxce@parse@first@a
+ }%
+}
+\def\bxce@parse@first@d#1{%
+ \bxce@cond\if#1\bxce@@BS\fi{%
+ \bxce@escapetrue
+ }{%else
+ \bxce@parse@first@e{#1}%
+ }%
+ \bxce@parse@first@a
+}
+\def\bxce@parse@first@e#1{%
+ \bxce@cnta=`#1\relax
+ \bxce@parse@first@trick#1%
+ \letcs\bxce@tmpa{\bxce@csn@cp\bxce@cnta}%
+ \ifdefined\bxce@tmpa
+ \eappto\bxce@text{\bxce@E\the\bxce@tmpa{\bxce@hex{\bxce@cnta}}}%
+ \else
+ \appto\bxce@text{\bxce@O#1}%
+ \fi
+}
+\def\bxce@parse@first@f#1;{%
+ \bxce@cnta="#1\relax
+ \letcs\bxce@tmpa{\bxce@csn@cp\bxce@cnta}%
+ \unless\ifdefined\bxce@tmpa
+ \chardef\bxce@tmpa\z@
+ \bxce@err@intcc{1}{#1}%
+ \fi
+ \eappto\bxce@text{\bxce@E\the\bxce@tmpa{#1}}%
+ \bxce@parse@first@a
+}
+% second stage
+\def\bxce@parse@second{%
+ \let\bxce@text\@empty
+ \let\bxce@T\bxce@parse@second@T
+ \let\bxce@O\bxce@parse@second@O
+ \let\bxce@S\bxce@parse@second@S
+ \let\bxce@E\bxce@parse@second@E
+}
+\protected\def\bxce@parse@second@T.\bxce@end{%
+ \appto\bxce@text{\bxce@T}%
+}
+\protected\def\bxce@parse@second@O#1{%
+ \appto\bxce@text{\bxce@O{#1}}%
+}
+\protected\def\bxce@parse@second@S#1{%
+ \appto\bxce@text{\bxce@O{ }}%
+}
+\protected\def\bxce@parse@second@E#1#2#3#4{%
+ % check if look-ahead is EVS
+ \ifnum0\ifx#3\bxce@E \ifnum#4=\bxce@cp@evs 1\fi\fi=1
+ \expandafter\bxce@parse@second@E@a
+ \else \expandafter\bxce@parse@second@E@b
+ \fi #1{#2}#3#4%
+}
+\def\bxce@parse@second@E@a#1#2#3#4#5{%
+ % purge the EVS entry and go back
+ \bxce@parse@second@E#1{#2}%
+}
+\def\bxce@parse@second@E@b#1#2#3#4{%
+ % current character: #1=cp, #2=code
+ % look-ahead character: #3=type, #4=cp
+ \ifnum#1=\bxce@cp@base
+ \ifnum0\ifx#3\bxce@E \ifnum#4=\bxce@cp@comb 1%
+ \else\ifnum#4=\bxce@cp@mod 1%
+ \else\ifnum#4=\bxce@cp@tag 1\fi\fi\fi\fi=1
+ % head of modifier/combining sequence
+ \def\bxce@cseq{#1{#2}}%
+ \else
+ % simple base character
+ \appto\bxce@text{\bxce@E{#1{#2}}}%
+ \fi
+ \else\ifnum#1=\bxce@cp@comb
+ \ifx\bxce@cseq\@empty
+ % headless combining character, fallback
+ \bxce@warn@locmb{#2}%
+ \appto\bxce@text{\bxce@O{#2}}%
+ \else\ifnum0\ifx#3\bxce@E \ifnum#4=\bxce@cp@comb 1\fi\fi=1
+ % midst of combining sequence
+ \appto\bxce@cseq{#1{#2}}%
+ \else
+ % tail of combining sequence
+ \eappto\bxce@text{\bxce@E{\bxce@cseq#1{#2}}}%
+ \let\bxce@cseq\@empty
+ \fi\fi
+ \else\ifnum#1=\bxce@cp@mod
+ \ifx\bxce@cseq\@empty
+ % baseless modifier character is a loner
+ \eappto\bxce@text{\bxce@E{\the\bxce@cp@base{#2}}}%
+ \else\ifnum0\ifx#3\bxce@E \ifnum#4=\bxce@cp@comb 1\fi\fi=1
+ % midst of combining sequence
+ \appto\bxce@cseq{#1{#2}}%
+ \else
+ % tail of modifier sequence
+ \eappto\bxce@text{\bxce@E{\bxce@cseq#1{#2}}}%
+ \let\bxce@cseq\@empty
+ \fi\fi
+ \else\ifnum#1=\bxce@cp@ris
+ \ifx\bxce@cseq\@empty
+ \ifnum0\ifx#3\bxce@E \ifnum#4=\bxce@cp@ris 1\fi\fi=1
+ % nead of region indicator sequence
+ \def\bxce@cseq{#1{#2}}%
+ \else
+ % lone region indicator characer, fallback
+ \bxce@warn@loris{#2}%
+ \eappto\bxce@text{\bxce@E{\the\bxce@cp@base{#2}}}%
+ \fi
+ \else
+ % tail of region indicator sequence
+ \eappto\bxce@text{\bxce@E{\bxce@cseq#1{#2}}}%
+ \let\bxce@cseq\@empty
+ \fi
+ \else\ifnum#1=\bxce@cp@tag
+ \ifx\bxce@cseq\@empty
+ % headless tag character, fallback
+ \bxce@warn@lotag{#2}%
+ \appto\bxce@text{\bxce@O{#2}}%
+ \else\ifnum0\ifx#3\bxce@E \ifnum#4=\bxce@cp@tag 1\fi\fi=1
+ % midst of emoji tag sequence
+ \appto\bxce@cseq{#1{#2}}%
+ \else
+ % tail of emoji tag sequence
+ \eappto\bxce@text{\bxce@E{\bxce@cseq#1{#2}}}%
+ \let\bxce@cseq\@empty
+ \fi\fi
+ \else\ifnum#1=\bxce@cp@evs
+ % currently EVS is totally ignored
+ \else\ifnum#1=\bxce@cp@zwj
+ \appto\bxce@text{\bxce@J}%
+ \fi\fi\fi\fi\fi\fi\fi
+ #3#4% NB #4 is unbraced
+}
+% third stage
+\def\bxce@parse@third{%
+ \let\bxce@text\@empty
+ \let\bxce@cseq\@empty
+ \let\bxce@T\bxce@parse@third@T
+ \let\bxce@O\bxce@parse@third@O
+ \let\bxce@E\bxce@parse@third@E
+ \let\bxce@J\bxce@parse@third@J
+}
+\protected\def\bxce@parse@third@T\bxce@end{}
+\protected\def\bxce@parse@third@O#1{%
+ \appto\bxce@text{\bxce@wr{#1}}%
+}
+\protected\def\bxce@parse@third@E#1#2{%
+ \appto\bxce@cseq{#1}%
+ \unless\ifx#2\bxce@J
+ \bxce@parse@third@out
+ \let\bxce@cseq\@empty
+ \fi
+ #2%
+}
+\protected\def\bxce@parse@third@J#1{%
+ \ifx\bxce@cseq\@empty
+ \appto\bxce@text{\bxce@put{200D}}%
+ \else\unless\ifx#1\bxce@E
+ \bxce@parse@third@out
+ \let\bxce@cseq\@empty
+ \appto\bxce@text{\bxce@put{200D}}%
+ \else
+ \eappto\bxce@cseq{\the\bxce@cp@zwj{200D}}%
+ \fi\fi
+ #1%
+}
+\def\bxce@parse@third@out{%
+ \ifnum\bxce@output@type=\bxce@ot@@twemojis
+ \bxce@twm@parse@third@out
+ \else
+ \bxce@parse@third@out@
+ \fi
+}
+\def\bxce@parse@third@out@{%
+ \let\bxce@tmpa\@empty
+ \def\bxce@tmpb{\bxce@put@cseq}%
+ \expandafter\bxce@parse@third@out@a\bxce@cseq..%
+}
+\def\bxce@parse@third@out@a#1#2{%
+ \bxce@cond\ifx.#1\fi{%
+ \eappto\bxce@text{\bxce@tmpb{\bxce@tmpa}}%
+ }{%else
+ \ifnum#1=\bxce@cp@tag
+ \def\bxce@tmpb{\bxce@put@cseqtag}%
+ \fi
+ \appto\bxce@tmpa{\bxce@c{#2}}%
+ \bxce@parse@third@out@a
+ }%
+}
+
+%% \bxce@parse@text@ccseq
+\def\bxce@parse@text@ccseq#1{%
+ \bxce@parse@first@ccseq{#1}%
+\bxDebug{first=\meaning\bxce@text}%
+ \expandafter\bxce@parse@second\bxce@text\bxce@end
+\bxDebug{second=\meaning\bxce@text}%
+ \expandafter\bxce@parse@third\bxce@text\bxce@end
+\bxDebug{third=\meaning\bxce@text}%
+}
+\def\bxce@parse@first@ccseq#1{%
+ \edef\bxce@tmpa{#1}%
+ \edef\bxce@tmpa{{\detokenize\expandafter{\bxce@tmpa}}}%
+ \expandafter\bxce@parse@ccseq\bxce@tmpa\bxce@parse@first@ccseq@a
+}
+\def\bxce@parse@first@ccseq@a#1{%
+ \let\bxce@do\bxce@parse@first@ccseq@do
+ \let\bxce@bad\bxce@warn@ivcod
+ \let\bxce@text\@empty
+ #1%
+ \appto\bxce@text{\bxce@T.}%
+}
+
+%% \bxce@parse@first@ccseq@do{<code-value>}
+\def\bxce@parse@first@ccseq@do#1{%
+ \bxce@cnta"0#1\relax
+ \letcs\bxce@tmpa{\bxce@csn@cp\bxce@cnta}%
+ \ifdefined\bxce@tmpa
+ \eappto\bxce@text{\bxce@E\the\bxce@tmpa{#1}}%
+ \else
+ \bxce@char@token\bxce@tmpa\bxce@cnta
+ \eappto\bxce@text{\bxce@O\bxce@tmpa}%
+ \fi
+}
+
+%% \bxce@parse@first@trick<char>
+% The engine-specific "trick".
+\ifx p\bxce@engine % pTeX
+ %% trick to hedge ja-chars
+ \def\bxce@parse@first@trick#1{%
+ \ifnum\bxce@cnta>\@cclv % ja-char
+ \bxce@cnta0\@nameuse{bxce@ju/\the\bxce@cnta}\relax
+ \fi
+ }
+\else\ifx x\bxce@engine % XeTeX
+ %% trick to avoid anomaly of old XeTeX
+ \def\bxce@parse@first@trick#1{%
+ \@tempcnta\bxce@cnta \divide\@tempcnta"800
+ \ifnum\@tempcnta=27 % surrogate value
+ \bxce@parse@first@surrogate
+ \fi
+ }
+ \def\bxce@parse@first@surrogate#1\bxce@parse@first@a#2{%
+ \bxce@cnta=\numexpr\bxce@cnta*"400+`#2-"35FDC00\relax
+ #1\bxce@parse@first@a % continue!
+ }
+\else
+ \let\bxce@parse@first@trick\@gobble
+\fi\fi
+
+%--------------------------------------- twemojis something
+
+%% constants
+%[bxce@cptd/<code>] : defined if text-default emoji code
+
+%% variables
+\let\bxce@twm@good@name\relax
+
+%% make [bxce@cptd] table
+\def\bxce@set@cp@c#1#2{%
+ \cslet{bxce@cptd/#1}\bxce@cp
+}
+\bxce@set@cp\@ne{%
+ 0023,002A,0030-0039,00A9,00AE,203C,2049,2122,2139,2194-2199,%
+ 21A9-21AA,2328,23CF,23ED-23EF,23F1-23F2,23F8-23FA,24C2,25AA-25AB,%
+ 25B6,25C0,25FB-25FC,2600-2604,260E,2611,2618,261D,2620,2622-2623,%
+ 2626,262A,262E-262F,2638-263A,2640,2642,265F-2660,2663,2665-2666,%
+ 2668,267B,267E,2692,2694-2697,2699,269B-269C,26A0,26A7,26B0-26B1,%
+ 26C8,26CF,26D1,26D3,26E9,26F0-26F1,26F4,26F7-26F9,2702,2708-2709,%
+ 270C-270D,270F,2712,2714,2716,271D,2721,2733-2734,2744,2747,%
+ 2763-2764,27A1,2934-2935,2B05-2B07,3030,303D,3297,3299,1F170-1F171,%
+ 1F17E-1F17F,1F202,1F237,1F321,1F324-1F32C,1F336,1F37D,1F396-1F397,%
+ 1F399-1F39B,1F39E-1F39F,1F3CB-1F3CE,1F3D4-1F3DF,1F3F3,1F3F5,1F3F7,%
+ 1F43F,1F441,1F4FD,1F549-1F54A,1F56F-1F570,1F573-1F579,1F587,%
+ 1F58A-1F58D,1F590,1F5A5,1F5A8,1F5B1-1F5B2,1F5BC,1F5C2-1F5C4,%
+ 1F5D1-1F5D3,1F5DC-1F5DE,1F5E1,1F5E3,1F5E8,1F5EF,1F5F3,1F5FA,1F6CB,%
+ 1F6CD-1F6CF,1F6E0-1F6E5,1F6E9,1F6F0,1F6F3}
+
+%% \bxce@err@nltwm
+\def\bxce@err@nltwm{%
+ \PackageError\bxce@pkgname
+ {Package 'twemojis' is not loaded}%
+ {\@ehc}%
+}
+
+%% \bxce@if@valid@twm@name{<twm-name>}
+\def\bxce@if@valid@twm@name#1{%
+ \ifcsdef{twemoji #1}%
+}
+
+%% \bxce@twm@dispatch
+\def\bxce@twm@dispatch{%
+ \twemoji
+}
+
+%% \bxce@if@twm@image@exists{<name>}
+\def\bxce@if@twm@image@exists#1{%
+ \bxce@lowercase@edef\bxce@tmpa{#1}%
+ \bxce@if@valid@twm@name\bxce@tmpa
+}
+
+%% \bxce@twm@put@image{<name>}
+\def\bxce@twm@put@image#1{%
+ \bxce@lowercase@edef\bxce@tmpa{#1}%
+\bxDebug{put@twm@image:\bxce@tmpa}%
+ \bxce@expd{%
+ \lower\bxce@disp@dim\hbox{%
+ \ifbxce@ctdir\noexpand\rotatebox[origin=c]{90}\fi{%
+ \noexpand\bxce@twm@dispatch
+ [width=\bxce@cwd
+ \ifbxce@use@bb\unless\ifx\bxce@bb\relax ,bb=\bxce@bb \fi\fi]%
+ {\bxce@tmpa}}}}%
+ \hskip\bxce@inter@skip
+}
+
+%% \bxce@twm@check@image@setup
+\def\bxce@twm@check@image@setup{%
+ \ifdefined\defineTwemoji
+ \global\let\bxce@twm@check@image@setup\bxce@oktrue
+ \bxce@oktrue
+ \else
+ \bxce@err@nltwm
+ \global\let\bxce@err@nltwm\relax
+ \bxce@okfalse
+ \fi
+}
+\AtBeginDocument{%
+ \ifnum\bxce@output@type=\bxce@ot@@twemojis
+ \bxce@twm@check@image@setup
+ \fi
+}
+
+%% \bxce@twm@parse@third@out
+% The routine that replaces \bxce@parse@third@out in twemojis mode.
+\let\bxce@c@evs\relax
+\def\bxce@twm@parse@third@out{%
+ \let\bxce@tmpa\@empty
+ \def\bxce@tmpb{\bxce@put@cseq}%
+ \expandafter\bxce@twm@parse@third@out@a\bxce@cseq..%
+}
+\def\bxce@twm@parse@third@out@a#1#2{%
+ \bxce@cond\ifx.#1\fi{%
+ \bxce@twm@find@good@name{\bxce@tmpa}%
+\bxDebug{find@good@name:\bxce@tmpa->\bxce@twm@good@name}%
+ \eappto\bxce@text{\bxce@tmpb{\bxce@twm@good@name}}%
+ }{\bxce@cond\ifnum#1=\bxce@cp@base\fi{%
+ \ifcsdef{bxce@cptd/\number"#2}{%
+ \bxce@twm@parse@third@out@c{#1}{#2}%
+ }{%else
+ \bxce@twm@parse@third@out@b{#1}{#2}%
+ }%
+ }{%else
+ \bxce@twm@parse@third@out@b{#1}{#2}%
+ }}%
+}
+\def\bxce@twm@parse@third@out@b#1#2{%
+ \ifnum#1=\bxce@cp@tag
+ \def\bxce@tmpb{\bxce@put@cseqtag}%
+ \fi
+ \appto\bxce@tmpa{\bxce@c{#2}}%
+ \bxce@twm@parse@third@out@a
+}
+\def\bxce@twm@parse@third@out@c#1#2#3{%
+ \bxce@cond\ifnum\bxce@twm@dh{#3}=\bxce@cp@mod\fi{%
+ \bxce@twm@parse@third@out@b{#1}{#2}{#3}%
+ }{%else
+ \appto\bxce@tmpa{\bxce@c{#2}\bxce@c@evs{FE0F}}%
+ \bxce@twm@parse@third@out@a{#3}%
+ }%
+}
+\def\bxce@twm@dh#1{%
+ \if.#1\m@ne\else#1\fi
+}
+
+%% \bxce@twm@find@good@name{<name>}
+% Finds the right name sequence by filling in the omitted EVSes,
+% and sets to \bxce@twm@good@name.
+\def\bxce@twm@find@good@name#1{%
+ \begingroup
+ \edef\bxce@twm@good@name{#1}%
+ \bxce@twm@find@good@name@a\bxce@c
+ \bxce@if@valid@twm@name\bxce@tmpa{}{%
+ \bxce@twm@find@good@name@a\@gobble
+ }%
+ \endgroup
+ \let\bxce@twm@good@name\bxce@g@tmpa
+}
+\def\bxce@twm@find@good@name@a#1{%
+ \let\bxce@c\relax \def\bxce@c@evs{#1}%
+ \xdef\bxce@g@tmpa{\bxce@twm@good@name}%
+ \let\bxce@c\bxce@c@hyph
+ \bxce@lowercase@edef\bxce@tmpa{\expandafter\bxce@c@first\bxce@g@tmpa}%
+}
+
+%--------------------------------------- emoji name database
+
+%% variables
+\let\bxce@ndindex\relax
+%[bxce@nd/<name>] : name -> ccseq
+%[bxce@ndi/<char>] : first char -> sector
+%[bxce@ndrs/<sector>] : the sector is already read?
+
+%% \bxce@read@name@data@file{<sector>}
+\def\bxce@read@name@data@file#1{%
+ \begingroup
+ \endlinechar\m@ne
+ \catcode13=9 \catcode32=10 \catcode64=11
+ \catcode37=14 \catcode92=0 \catcode123=1 \catcode125=2
+ \catcode45=12 \catcode46=12 \catcode47=12
+ \catcode91=12 \catcode93=12
+ \ifnum#1<\z@ % initialize
+ \let\bxce@ndindex\m@ne
+ \let\bxce@do\bxce@read@name@data@file@init@do
+ \else\ifnum#1=\@M
+ \chardef\bxce@ndindex\z@
+ \PackageInfo\bxce@pkgname
+ {Loading emoji name data file\MessageBreak
+ (at once)}%
+ \let\bxce@do\bxce@read@name@data@file@sec@do
+ \bxce@prepare@load@all
+ \else % read a sector
+ \chardef\bxce@ndindex=#1\relax
+ \PackageInfo\bxce@pkgname
+ {Loading emoji name data file\MessageBreak
+ (sector \the\bxce@ndindex)}%
+ \global\cslet{bxce@ndrs/\the\bxce@ndindex}{t}%
+ \let\bxce@do\bxce@read@name@data@file@sec@do
+ \fi\fi
+ \input{bxcoloremoji-names.def}%
+ \endgroup
+}
+\let\bxce@ndbegin\relax
+\let\bxce@ndend\relax
+\def\bxce@read@name@data@file@init@do#1#2{%
+ %\bxDebug{nd-init:#1=#2}%
+ \csgdef{bxce@ndi/#1}{#2}%
+}
+\def\bxce@read@name@data@file@sec@do#1#2{%
+ %\bxDebug{nd-sec-\the\bxce@ndindex:#1=#2}%
+ \csgdef{bxce@nd/#1}{#2}%
+}
+% if 'names' is false, annihilate
+\unless\ifbxce@names
+ \let\bxce@read@name@data@file\@gobble
+\fi
+
+%% initialize
+\bxce@read@name@data@file{-1}
+
+%% additional definitions
+\csgdef{bxce@nd/+}{200D}
+\csgdef{bxce@nd/@}{E007F}
+\csgdef{bxce@nd/!<}{2B05}
+\csgdef{bxce@nd/!>}{27A1}
+\csgdef{bxce@nd/!male}{2642}
+\csgdef{bxce@nd/!female}{2640}
+\csgdef{bxce@nd/!flag}{1F3F4}
+\csgdef{bxce@nd/!black}{2B1B}
+\csgdef{bxce@nd/!white}{2B1C}
+\csgdef{bxce@nd/!red}{1F7E5}
+\csgdef{bxce@nd/!blue}{1F7E6}
+\csgdef{bxce@nd/!orange}{1F7E7}
+\csgdef{bxce@nd/!yellow}{1F7E8}
+\csgdef{bxce@nd/!green}{1F7E9}
+\csgdef{bxce@nd/!purple}{1F7EA}
+\csgdef{bxce@nd/!brown}{1F7EB}
+\csgdef{bxce@nd//1}{1F3FB}
+\csgdef{bxce@nd//2}{1F3FC}
+\csgdef{bxce@nd//3}{1F3FD}
+\csgdef{bxce@nd//4}{1F3FE}
+\csgdef{bxce@nd//5}{1F3FF}
+\csgdef{bxce@nd/!/red}{1F9B0}
+\csgdef{bxce@nd/!/curly}{1F9B1}
+\csgdef{bxce@nd/!/bald}{1F9B2}
+\csgdef{bxce@nd/!/white}{1F9B3}
+\AtEndOfPackage{%
+ \begingroup
+ \def\bxce@do#1"#2\relax{\def\bxce@tmpa{#2}}%
+ \bxce@cnta="20
+ \@whilenum{\bxce@cnta<"7F}\do{%
+ % register '@!'--'@~' (U+E0021--E007E)
+ \chardef\bxce@tmpa\bxce@cnta
+ \expandafter\bxce@do\meaning\bxce@tmpa\relax
+ \bxce@char@token\bxce@tmpb\bxce@cnta
+ \csxdef{bxce@nd/@\bxce@tmpb}{E00\bxce@tmpa}%
+ \ifnum\bxce@cnta>"40 \ifnum\bxce@cnta<"5B
+ % register '!A'--'!Z' (U+1F1E6--1F1FF)
+ \chardef\bxce@tmpa\numexpr\bxce@cnta+"A5\relax
+ \expandafter\bxce@do\meaning\bxce@tmpa\relax
+ \csxdef{bxce@nd/!\bxce@tmpb}{1F1\bxce@tmpa}%
+ \fi\fi
+ \advance\bxce@cnta\@ne
+ }%
+ \endgroup
+}
+
+%% \bxce@load@sname@definition{<sname>}
+\def\bxce@load@sname@definition#1{%
+ \bxce@load@sname@definition@a#1\bxce@end
+}
+\def\bxce@load@sname@definition@a#1#2\bxce@end{%
+ \letcs\bxce@tmpa{bxce@ndi/#1}%
+ \ifdefined\bxce@tmpa
+ \ifcsdef{bxce@ndrs/\number\bxce@tmpa}{}{%else
+ \bxce@read@name@data@file{\bxce@tmpa}%
+ }%
+ \fi
+}
+
+%%<+> \coloremojiLoadNames{<sname> ...}
+\newrobustcmd*\coloremojiLoadNames[1]{%
+ \edef\bxce@tmpa{#1}%
+ \bxce@load@names
+}
+\def\bxce@load@names{%
+ \edef\bxce@tmpa{\detokenize\expandafter{\bxce@tmpa} @ }%
+ \expandafter\bxce@load@names@a\bxce@tmpa
+}
+\def\bxce@load@names@a#1 {%
+ \bxce@cond\ifx @#1\fi{}{%else
+ \bxce@load@names@b#1??\bxce@end
+ \bxce@load@names@a
+ }%
+}
+\def\bxce@load@names@b#1#2\bxce@end{%
+ \ifx:#1%
+ \bxce@load@sname@definition{#2}%
+ \else
+ \bxce@load@sname@definition{#1#2}%
+ \fi
+}
+
+%%<+> \coloremojiLoadAllNames
+\newrobustcmd*\coloremojiLoadAllNames{%
+ \bxce@read@name@data@file\@M
+ % annihilate
+ \global\let\bxce@read@name@data@file\@undefined
+ \global\let\bxce@load@sname@definition\@undefined
+ \global\let\bxce@load@sname@definition@a\@undefined
+ \global\let\bxce@load@names\relax
+ \global\let\bxce@load@names@a\@undefined
+ \global\let\bxce@load@names@b\@undefined
+ \global\let\coloremojiLoadAllNames\relax
+ \global\let\bxce@lookup@sname\bxce@parse@sname
+}
+
+%% \bxce@prepare@load@all
+\begingroup \catcode`\|=0
+ \gdef\bxce@prepare@load@all{%
+ \def\bxce@ndbegin{|let|bxce@org@or|or|let|or|relax}%
+ \def\bxce@ndend{|let|or|bxce@org@or}%
+ }
+\endgroup
+
+%% exercise 'preload-names'
+\ifnum0\unless\ifbxce@names 1%
+ \else\ifnum\bxce@preload@names@opt=\bxce@abool@@true 1%
+ \else\ifnum\bxce@preload@names@opt=\bxce@abool@@auto
+ \if l\bxce@engine1\fi\if x\bxce@engine1\fi\if u\bxce@engine1\fi
+ \ifcsname use:n\endcsname1\fi % expl3 is on
+ \fi\fi\fi >\z@
+ \AtEndOfPackage{\coloremojiLoadAllNames}%
+\fi
+
+%--------------------------------------- parse character code
+
+% A character code is either of the following:
+% - a hex string of the Unicode value (case-insensitive);
+% - a short name input ':<short-name>:' (in lowercase);
+% here ':' of the either side can be omitted as long as the input
+% is unambiguous (not regarded as code value).
+
+%% error message
+\def\bxce@warn@ivcod#1{%
+ \PackageWarning\bxce@pkgname
+ {Invalid character code found\MessageBreak
+ (#1)}%
+}
+
+%% \bxce@parse@ccseq{<cc> ...}\CScont
+% Parses a character code sequence and returns the
+% \bxce@do-list of the code values; i.e. it expands to
+% \CScont{\bxce@do{<cv>}...}.
+% Unknown names are converted to \bxce@bad{<name>}.
+\def\bxce@parse@ccseq#1{%{<in>}|\CScont
+ \bxce@parse@ccseq@a#1 @ @%
+}
+% (\bxce@parse@ccseq@a<in> @ <out>@\CScont)
+\def\bxce@parse@ccseq@a#1 {%<cc> |...
+ \bxce@cond\ifx @#1\fi{%
+ \bxce@parse@ccseq@e
+ }{\bxce@cond\ifx\bxce@mt#1\bxce@mt\fi{%empty-string
+ \bxce@parse@ccseq@a
+ }{%else
+ \bxce@parse@cc{#1}\bxce@parse@ccseq@b\bxce@parse@ccseq@c
+ \bxce@parse@ccseq@d{#1}%
+ }}%
+}
+\def\bxce@parse@ccseq@b#1#2#3@#4@{%{<hex>}{<cc>}<in> @ <out>@|...
+ \bxce@parse@ccseq@a#3@#4\bxce@do{#1}@%
+}
+\def\bxce@parse@ccseq@c#1#2{%{<seq>}{<cc>}|<in> @...
+ \bxce@parse@ccseq@a#1 %
+}
+\def\bxce@parse@ccseq@d#1#2@#3@{%{<cc>}<in> @ <out>@|...
+ \bxce@parse@ccseq@a#2@#3\bxce@bad{#1}@%
+}
+\def\bxce@parse@ccseq@e#1@#2{%<out>@\CScont
+ #2{#1}%
+}
+
+%% \bxce@parse@cc{<cc>}\CSok\CSrs\CSerr
+% Parses the character name or code value, and expands to:
+% \CSok{<code-value>} if <cc> is a valid hex string;
+% \CSrs{<out-cc> ...} if <Cc> is a short name; or
+% \CSerr otherwise.
+\def\bxce@parse@cc#1{%{<cc>}|...
+ \bxce@parse@hex{#1}\bxce@parse@cc@a\bxce@parse@cc@b{#1}%
+}
+\def\bxce@parse@cc@a#1#2#3#4#5{%{<hex>}{<cc>}\CSok\CSrs\CSerr
+ #3{#1}%
+}
+\def\bxce@parse@cc@b#1#2{%{<cc>}\CSok|\CSrs\CSerr
+ \bxce@trim@colons{#1}\bxce@lookup@sname
+}
+
+%% \bxce@trim@colons{<word>}\CScont
+\def\bxce@trim@colons#1{%{<word>}|\CScont
+ \bxce@trim@colons@a#1@:@\bxce@mk
+}
+\def\bxce@trim@colons@a#1#2:@#3\bxce@mk{%
+ \bxce@cond\if:#1\fi{%
+ \bxce@trim@colons@b#2@\bxce@mk
+ }{%else
+ \bxce@trim@colons@b#1#2@\bxce@mk
+ }%
+}
+\def\bxce@trim@colons@b#1@#2\bxce@mk#3{%
+ #3{#1}%
+}
+
+%% \bxce@lookup@sname{<sname>}\CSok\CSerr
+\def\bxce@lookup@sname#1{%{<sname>}|\CSok\CSerr
+ \ifcsdef{bxce@nd/#1}{%
+ \bxce@parse@sname@out{#1}%
+ }{%else
+ \bxce@load@sname@definition{#1}%
+ \bxce@parse@sname{#1}%
+ }%
+}
+
+%% \bxce@parse@sname{<sname>}\CSok\CSerr
+\def\bxce@parse@sname#1{%{<sname>}|\CSok\CSerr
+ \ifcsdef{bxce@nd/#1}{%
+ \bxce@parse@sname@out{#1}%
+ }{%else
+ \@secondoftwo
+ }%
+}
+\def\bxce@parse@sname@out#1{%{<sname>}|\CSok\CSerr
+ \expandafter\expandafter\expandafter
+ \bxce@parse@sname@out@a\csname bxce@nd/#1\endcsname\bxce@end
+}
+\def\bxce@parse@sname@out@a#1\bxce@end#2#3{%<res>\end\CSok\CSerr
+ #2{#1}%
+}
+
+%--------------------------------------- image output
+
+%% variables
+\newbool{bxce@ctdir}
+\newbool{bxce@var}% *-form is used?
+\newdimen\bxce@cwd
+\newdimen\bxce@disp@dim
+\newskip\bxce@inter@skip
+
+%% \bxce@image@path{<name>}
+\def\bxce@image@path#1{%
+ \bxce@prefix#1.\bxce@ext
+}
+
+%% \bxce@unit / \bxce@disp / \bxce@inter
+\def\bxce@unit{em}
+\def\bxce@disp{0.12}
+\def\bxce@inter{0pt plus 0.1em}
+
+%% \bxce@output
+\def\bxce@output{%
+ \ifmmode \nfss@text{\bxce@output@a}%
+ \else \bxce@output@a
+ \fi
+}
+\def\bxce@output@a{%
+ \bxce@resolve@image@setup
+ \bxce@check@image@setup
+ \bxce@iftdir{\bxce@ctdirtrue}{\bxce@ctdirfalse}%
+ \bxce@set@cwd
+ \bxce@disp@dim=\bxce@disp\bxce@cwd\relax
+ \bxce@inter@skip=\bxce@inter\relax
+ \bxce@text
+ \unskip
+}
+
+%% \bxce@check@image@setup
+\def\bxce@check@image@setup{%
+ \unless\ifbxce@use@image
+ \let\bxce@output@type\bxce@ot@@none
+ \fi
+ \ifnum\bxce@output@type=\bxce@ot@@twemojis
+ \bxce@twm@check@image@setup
+ \unless\ifbxce@ok
+ \let\bxce@output@type\bxce@ot@@none
+ \fi
+ \fi
+}
+
+%% \bxce@set@cwd
+\def\bxce@set@cwd{%
+ \ifbxce@var \let\bxce@tmpa\bxce@size@var
+ \else \let\bxce@tmpa\bxce@size
+ \fi
+ \ifx\bxce@tmpa\@empty
+ \bxce@cwd=\bxce@scale\bxce@unit\relax
+ \else
+ \begingroup
+ \let\em\bxce@set@cwd@em
+ \let\Em\bxce@set@cwd@Em
+ \setlength\bxce@cwd{\bxce@tmpa}%
+ \xdef\bxce@g@tmpa{\the\bxce@cwd}%
+ \endgroup
+ \bxce@cwd=\bxce@g@tmpa\relax \bxce@cwd=\bxce@scale\bxce@cwd
+ \fi
+}
+\def\bxce@set@cwd@em{\dimexpr1\bxce@unit\relax}
+\def\bxce@set@cwd@Em{\dimexpr\f@size\p@\relax}
+
+%% \bxce@wr{<char>}
+\def\bxce@wr#1{%
+ #1\hskip\bxce@inter@skip
+}
+
+%% \bxce@put{<code1>}
+\def\bxce@put#1{%
+ \bxce@if@image@exists{#1}{%
+ \bxce@put@image{#1}%
+ }{%else
+ \bxce@char@token\bxce@arg{"#1}%
+ \bxce@arg \hskip\bxce@inter@skip
+ }%
+}
+
+%% \bxce@put@cseq{\bxce@c<cp>{<code>}...}
+\def\bxce@c@hyph#1{-#1}
+\def\bxce@c@first#1#2{#2}
+\protected\def\bxce@put@cseq#1{%
+ \let\bxce@c\bxce@c@hyph
+ \edef\bxce@cseq{\bxce@c@first#1}%
+\bxDebug{cseq:\bxce@cseq}%
+ \bxce@if@image@exists{\bxce@cseq}{%
+ \bxce@put@image{\bxce@cseq}%
+ }{%else
+ \let\bxce@c\bxce@put@cseq@a#1%
+ }%
+}
+\def\bxce@@ZWJ@code{200D}
+\def\bxce@@EVS@code{FE0F}
+\def\bxce@put@cseq@a#1{%
+ \def\bxce@tmpa{#1}\ifx\bxce@tmpa\bxce@@ZWJ@code
+ \bxce@depict@fallback@ZWJ
+ \else\unless\ifx\bxce@tmpa\bxce@@EVS@code
+ \bxce@put{#1}%
+ \fi\fi
+}
+
+%% \bxce@put@cseqtag{\bxce@c<cp>{<code>}...}
+\protected\def\bxce@put@cseqtag#1{%
+ \let\bxce@c\bxce@c@hyph
+ \edef\bxce@cseq{\bxce@c@first#1}%
+\bxDebug{cseqtag:\bxce@cseq}%
+ \bxce@if@image@exists{\bxce@cseq}{%
+ \bxce@put@image{\bxce@cseq}%
+ }{%else
+ \bxce@put@cseqtag@a#1\bxce@end
+ }%
+}
+\def\bxce@put@cseqtag@a#1#2#3\bxce@end{%
+ \bxce@put{#2}%
+ \bxce@char@token\bxce@arg\bxce@repch
+ \bxce@arg \hskip\bxce@inter@skip
+}
+
+%% \bxce@if@image@exists{<name>}
+\def\bxce@if@image@exists#1{%
+ \bxce@cond\ifnum\bxce@output@type=\bxce@ot@@none\fi{%
+ \@secondoftwo % always false
+ }{\bxce@cond\ifnum\bxce@output@type=\bxce@ot@@twemojis\fi{%
+ \bxce@if@twm@image@exists{#1}%
+ }{%else
+ \IfFileExists{\bxce@image@path{#1}}%
+ }}%
+}
+
+%% \bxce@put@image{<name>}
+\def\bxce@put@image{%
+ \bxce@cond\ifnum\bxce@output@type=\bxce@ot@@twemojis\fi{%
+ \bxce@twm@put@image
+ }{%else
+ \bxce@put@image@
+ }%
+}
+\def\bxce@put@image@#1{%
+ \bxce@expd{%
+ \lower\bxce@disp@dim\hbox{%
+ \ifbxce@ctdir\noexpand\rotatebox[origin=c]{90}\fi{%
+ \noexpand\includegraphics
+ [width=\bxce@cwd
+ \ifbxce@use@bb\unless\ifx\bxce@bb\relax ,bb=\bxce@bb \fi\fi]%
+ {\bxce@image@path{#1}}}}}%
+ \hskip\bxce@inter@skip
+}
+
+%--------------------------------------- fallback ZWJ
+
+%%<+> \coloremojiZWJSymbolColor
+\newcommand\coloremojiZWJSymbolColor{green}
+
+\def\bxce@depict@fallback@ZWJ{%
+ \begingroup
+ \bxce@set@ZWJ@color
+ \bxce@ZWJ@sym
+ \endgroup
+}
+
+%% \bxce@ZWJ@sym
+\def\bxce@ZWJ@sym{%
+ \lower\dimexpr\bxce@disp\bxce@unit+0.2\bxce@unit\hb@xt@\z@{%
+ \kern-0.2\bxce@unit\relax
+ \vrule\@width0.1\bxce@unit\@height0.2\bxce@unit\relax
+ \vrule\@width0.2\bxce@unit\@height0.1\bxce@unit\relax
+ \vrule\@width0.1\bxce@unit\@height0.2\bxce@unit\relax
+ \hss}%
+}
+
+%% \bxce@set@ZWJ@color
+\def\bxce@set@ZWJ@color{%
+ \ifdefined\color
+ \bxce@expd{\noexpand\color{\coloremojiZWJSymbolColor}}%
+ \fi
+}
+
+%--------------------------------------- tate direction
+
+%% constants
+\chardef\bxce@luatexja@tate=3
+
+%% \bxce@iftdir{<tate>}{<yoko>}
+\let\bxce@iftdir\@secondoftwo % always yoko
+
+%% \bxce@resolve@image@metric
+% NB. This macro will be called more than once.
+\@onlypreamble\bxce@resolve@image@metric
+\def\bxce@resolve@image@metric{%
+ % set 'bxce@luatexja'
+ \if l\bxce@engine
+ \@ifpackageloaded{luatexja}{%
+ \global\bxce@luatexjatrue
+ }{}%
+ \fi
+ % jatype settings
+ \ifnum\bxce@jatype@opt=\bxce@abool@@false
+ % skip jatype settings
+ \else\ifbxce@luatexja
+ \global\bxce@jaoktrue
+ \global\chardef\bxce@zspc="3000
+ \ifdefined\ltj@curtfnt
+ \gdef\bxce@iftdir{\bxce@cond
+ \ifnum\ltjgetparameter{direction}=\bxce@luatexja@tate\fi}%
+ \fi
+ \gdef\bxce@unit{\zw}%
+ \gdef\bxce@disp{\bxce@iftdir{0.5}{0.12}}%
+ \gdef\bxce@inter{%
+ \expandafter\bxce@inter@a\number\ltjgetparameter{kanjiskip}\relax}%
+ \gdef\bxce@inter@a##1\relax{%
+ \ifdim\glueexpr##1=\maxdimen \z@skip \else ##1\fi}%
+ \else\ifbxce@ptex
+ \global\bxce@jaoktrue
+ \global\chardef\bxce@zspc=\jis"2121\relax
+ \gdef\bxce@iftdir{%
+ \ifbool{tdir}{\notbool{mdir}}{\@secondoftwo}}%
+ \gdef\bxce@unit{zw}%
+ \gdef\bxce@disp{\bxce@iftdir{0.5}{0.12}}%
+ \gdef\bxce@inter{\kanjiskip}%
+ \else\ifnum\bxce@jatype@opt=\bxce@abool@@true
+ \ifnum0\if x\bxce@engine1\fi\if l\bxce@engine1\fi >\z@
+ \global\bxce@jaoktrue
+ \global\chardef\bxce@zspc="3000
+ \fi
+ \fi\fi\fi\fi
+ \if d\bxce@engine
+ \@ifpackageloaded{CJK}{%
+ \bxce@resolve@image@metric@CJK
+ }{}%
+ \fi
+}
+%% \bxce@resolve@image@metric@CJK
+\@onlypreamble\bxce@resolve@image@metric@CJK
+\def\bxce@resolve@image@metric@CJK{%
+ \global\let\bxce@resolve@image@metric@CJK\relax
+ \unless\ifdefined\CJKhook \let\CJKhook\@empty \fi
+ \gappto\CJKhook{\bxce@CJKtrue}%
+}
+
+%% try once now
+\AtEndOfPackage{%
+ \bxce@resolve@image@metric
+}
+
+%--------------------------------------- character token
+
+%% \bxce@max@ascii
+\chardef\bxce@max@ascii="7F
+%% \bxce@max@unicode
+\protected\def\bxce@max@unicode{"10FFFF }
+
+%% \bxce@geta : geta mark
+%% \bxce@ageta : 'ASCII' geta mark
+%% \bxce@maxcc : max 'valid' codevalue
+%% \bxce@repch : replacement char
+\chardef\bxce@ageta=`\=\relax
+\ifx d\bxce@engine
+ \chardef\bxce@geta=\bxce@ageta
+ \chardef\bxce@maxcc=\bxce@max@ascii
+ \chardef\bxce@repch=\bxce@geta
+\else\ifx p\bxce@engine
+ \chardef\bxce@geta=\jis"222E\relax
+ \chardef\bxce@maxcc=\bxce@max@ascii
+ \ifbxce@ucs@avail \let\bxce@maxcc\bxce@max@unicode \fi
+ \chardef\bxce@repch=\bxce@geta
+\else
+ \chardef\bxce@geta="3013
+ \chardef\bxce@maxcc=\bxce@max@unicode
+ \chardef\bxce@repch="FFFD
+\fi\fi
+
+%% \bxce@forcecjktoken
+% Does '\forcecjktoken' if available.
+\let\bxce@forcecjktoken\relax
+\bxce@if@primitive{\forcecjktoken}{\let\bxce@forcecjktoken\forcecjktoken}
+
+%% \bxce@char@token\CS{<codvalue>}
+% Lets \CS be a macro that expands to a character token of the given
+% Unicode value. If the value is invalid, \bxce@geta is used.
+% NB. On pTeX without \ucs, only ASCII is regarded as valid.
+\def\bxce@char@token#1#2{%
+ \begingroup
+ \bxce@cnta=#2\relax
+ \ifnum\bxce@cnta<\z@ \bxce@cnta=\bxce@geta \fi
+ \ifnum\bxce@cnta>\bxce@maxcc \bxce@cnta=\bxce@geta \fi
+ \bxce@char@token@a
+ \endgroup
+ \let#1=\@gtempa
+}
+\def\bxce@char@token@al{%
+ \lccode`\*=\bxce@cnta
+ \lowercase{\xdef\@gtempa{*}}%
+}
+\let\bxce@char@token@a\bxce@char@token@al
+\ifnum0\ifx p\bxce@engine \ifbxce@ucs@avail 1\fi\fi>\z@
+ % pTeX with '\ucs'
+ \def\bxce@char@token@a{%
+ \ifnum\bxce@cnta>\bxce@max@ascii
+ \bxce@forcecjktoken
+ \bxce@cnta=\ucs\bxce@cnta\relax % -1 for non-JIS char
+ \kansujichar\@ne=\ifnum\bxce@cnta<\z@ \bxce@geta \else \bxce@cnta \fi
+ \xdef\@gtempa{\kansuji\@ne}% \kansuji trick
+ \else \bxce@char@token@al
+ \fi
+ }
+\else\ifbxce@ptex
+ % pTeX without '\ucs', or upTeX
+ \def\bxce@char@token@a{%
+ \ifnum\bxce@cnta>\bxce@max@ascii
+ \bxce@forcecjktoken
+ \kansujichar\@ne=\bxce@cnta
+ \xdef\@gtempa{\kansuji\@ne}% \kansuji trick
+ \else \bxce@char@token@al
+ \fi
+ }
+\fi\fi
+
+%% \bxce@geta@char
+%% \bxce@ageta@char
+\bxce@char@token\bxce@geta@char\bxce@geta
+\bxce@char@token\bxce@ageta@char\bxce@ageta
+
+%% \bxce@put@geta
+% Puts \bxce@geta if bxce@jaok, otherwise puts \bxce@ageta.
+\def\bxce@put@geta{%
+ \ifbxce@jaok \bxce@put@geta@do
+ \else \bxce@put@ageta
+ \fi
+}
+\protected\def\bxce@put@geta@do{%
+ \bxce@geta@char
+}
+
+%% \bxce@put@ageta
+\protected\def\bxce@put@ageta{%
+ \bxce@ageta@char
+}
+
+%% \bxce@put@geta@for{<options>}
+% The suitable geta char for given options. (fully-expandable)
+\def\bxce@put@geta@for#1{%
+ \bxce@with@star{#1}\bxce@put@ageta\bxce@put@geta
+}
+
+%--------------------------------------- ghost something
+
+%% \bxce@zspc : zenkaku space
+\let\bxce@zspc\@undefined
+
+%% \bxce@ghost
+\let\bxce@ghost\relax
+%% \bxce@postghost
+\let\bxce@postghost\relax
+
+%% \bxce@enghost\CScont*...
+% Invokes \CScont..., after resolving the star and building a ghost
+% enclosure.
+% NB. The process starting with \CScont must end with an invocation
+% of \bxce@ghost@guarded.
+\def\bxce@enghost#1{%
+ \@ifstar{%
+ \bxce@vartrue
+ \bxce@enghost@a{#1}%
+ }{%
+ \bxce@varfalse
+ \bxce@enghost@a{#1}%
+ }%
+}
+\def\bxce@enghost@a#1{%
+ \bxce@build@ghost
+ \begingroup
+ #1%
+}
+
+%% \bxce@ghost@guarded{<text>}
+\def\bxce@ghost@guarded#1{%
+ \bxce@ghost
+ #1%
+ \bxce@postghost
+ \endgroup
+}
+
+%% \bxce@build@ghost
+\def\bxce@build@ghost{%
+% NB. It could be called before \bxce@resolve@image@metric.
+% Then ghost setting could be inappropriate.
+ \ifbxce@jaok
+ \ifmmode
+ \let\bxce@ghost\relax
+ \let\bxce@postghost\relax
+ \else\ifbxce@var
+ \let\bxce@ghost\bxce@nihil
+ \let\bxce@postghost\bxce@nihil
+ \else
+ \let\bxce@ghost\bxce@ghost@jachar
+ \let\bxce@postghost\bxce@postghost@jachar
+ \fi\fi
+ \else
+ \let\bxce@ghost\leavevmode
+ \let\bxce@postghost\relax
+ \fi
+}
+
+%% \bxce@ghost@jachar
+%% \bxce@postghost@jachar
+\ifbxce@bxghost
+ \def\bxce@ghost@jachar#1\bxce@postghost{%
+ \leavevmode\jghostguarded{#1}%
+ }
+ \let\bxce@postghost@jachar\relax
+\else
+ \def\bxce@ghost@jachar{%
+ \bxce@zspc \kern-1\bxce@unit\relax
+ }
+ \def\bxce@postghost@jachar{%
+ \kern-1\bxce@unit\relax \bxce@zspc
+ }
+\fi
+
+%% \bxce@enghost@with@opt\CScont*[<option>,...]...
+% Invokes \CScont..., after resolving the star and the options
+% and preparing the ghost enclosure.
+\def\bxce@enghost@with@opt#1{%
+ \bxce@enghost{\bxce@enghost@with@opt@a{#1}}%
+}
+\def\bxce@enghost@with@opt@a#1{%
+ \@ifnextchar[%]
+ {\bxce@enghost@with@opt@b{#1}}%
+ {#1}%
+}
+\def\bxce@enghost@with@opt@b#1[#2]{%
+ \bxce@in@commandtrue
+ \setkeys{bxce}{#2}%
+ #1%
+}
+
+%--------------------------------------- preprocess for expansion
+
+%% variables
+%[bxce@n(?)] : de-protected definition of active-byte '?'
+%[bxce@n<?>] : (CJK package something)
+%[bxce@o<?>] : (CJK package something)
+
+%% \bxce@std@preproc
+\let\bxce@std@preproc\@empty
+\ifnum0\ifbxce@ptex1\fi\ifx d\bxce@engine1\fi >0
+\begingroup
+ \edef\bxce@tmp@good@prefix{\detokenize{\protected macro}}
+ \def\bxce@tmpa#1#2#3{% \[bxce@n(?)] ?13 ?12
+ \expandafter\bxce@do\meaning#2:\relax#1#2%
+ }
+ \def\bxce@do#1:#2\relax#3#4{%
+ \def\bxce@tmpb{#1}\ifx\bxce@tmpb\bxce@tmp@good@prefix
+ \expandafter\gdef\expandafter#3\expandafter{#4}%
+ \gappto\bxce@std@preproc{\let#4#3}%
+ \fi
+ }
+ \@tempcnta=194
+ \loop\ifnum\@tempcnta<245
+ \lccode`\+=\@tempcnta \lccode`\~=\@tempcnta
+ \lowercase{\expandafter\bxce@tmpa\csname bxce@n(+)\endcsname~+}%
+ \advance\@tempcnta\@ne
+ \repeat
+\endgroup
+\fi
+
+%% \bxce@CJK@preproc
+\let\bxce@CJK@preproc\@empty
+\if d\bxce@engine
+\begingroup
+ \def\bxce@tmpa#1#2#3#4{% \[bxce@n<?>]\[bxce@o<?>] ?13 ?12
+ \gappto\bxce@CJK@preproc{\let#2#3\let#3#1}%
+ \ifnum\@tempcnta<224 %2-byte
+ \gdef#1##1##2##3{\expandafter
+ \ifx\csname u8:#4\string##1\endcsname\relax
+ #2##1\else\csname u8:#4\string##1\endcsname\fi}%
+ \else\ifnum\@tempcnta<240 %3-byte
+ \gdef#1##1##2{\expandafter
+ \ifx\csname u8:#4\string##1\string##2\endcsname\relax
+ #2##1##2\else\csname u8:#4\string##1\string##2\endcsname\fi}%
+ \else %4-byte
+ \gdef#1##1##2##3{\expandafter
+ \ifx\csname u8:#4\string##1\string##2\string##3\endcsname\relax
+ #2##1##2##3\else
+ \csname u8:#4\string##1\string##2\string##3\endcsname\fi}%
+ \fi\fi
+ }
+ \@tempcnta=194
+ \loop\ifnum\@tempcnta<245
+ \lccode`\+=\@tempcnta \lccode`\~=\@tempcnta
+ \lowercase{\expandafter\bxce@tmpa\csname bxce@n<+>\expandafter
+ \endcsname\csname bxce@o<+>\endcsname~+}%
+ \advance\@tempcnta\@ne
+ \repeat
+\endgroup
+\fi
+
+%--------------------------------------- hyperref something
+
+%% add to hook
+\appto\pdfstringdefPreHook{%
+ \coloremojiLoadAllNames
+ \let\coloremoji\bxce@hy@coloremoji
+ \let\coloremojiucs\bxce@hy@coloremojicode
+ \def\bxce@@#1;{\bxce@hy@ucs{#1}}%
+ \let\bxce@do\bxce@hy@ucs
+ \def\bxce@bad#1{\bxce@hy@geta}%
+ \let\bxce@put@geta@do\bxce@geta@char
+ \let\bxce@put@ageta\bxce@ageta@char
+ \let\bxce@keycap@of@good\bxce@hy@keycap@of@good
+ \let\bxce@keycap@of@bad\bxce@hy@keycap@of@bad
+}
+
+%% \bxce@hy@coloremoji
+% \coloremoji in PDF strings. (fully-expandable)
+\def\bxce@hy@coloremoji#1#{% brace delimit
+ \@firstofone % just put the characters
+}
+
+%% \bxce@hy@ucs{<codevalue-hex>}
+% Puts the character with the given code value. (fully-expandable)
+\def\bxce@hy@ucs#1{%
+ % If 'unicode' is on, then \unichar (provided by hyperref)
+ % is availble.
+ \ifdefined\ifpdfstringunicode \expandafter\ifpdfstringunicode
+ \else \expandafter\@secondoftwo
+ \fi {\unichar{"#1}}{\bxce@hy@ucs@a{#1}}%
+}
+\def\bxce@hy@ucs@a#1{%
+ % If pxjahyper is loaded, then \Ux can be used.
+ \ifdefined\pxDeclarePdfTextCommand
+ \ifdefined\Ux \Ux{#1}%
+ \else \bxce@hy@geta
+ \fi
+ \else \bxce@put@ageta
+ \fi
+}
+
+%% \bxce@hy@geta
+\def\bxce@hy@geta{%
+ \ifbxce@jaok
+ \bxce@if@flag@raised{jg}{\bxce@geta@char}{\bxce@ageta@char}%
+ \else \bxce@ageta@char
+ \fi
+}
+
+%% \bxce@hy@coloremojicode
+% \coloremojicode in PDF strings. (fully-expandable)
+\def\bxce@hy@coloremojicode{%
+ \bxce@hedge@options@with\bxce@hy@coloremojicode@a
+}
+\def\bxce@hy@coloremojicode@a#1#2{%
+ \bxce@with@star{#1}{}{\bxce@raise@flag{jg}}%
+ \expandafter\bxce@parse@ccseq\expandafter{\detokenize{#2}}\@firstofone
+}
+
+%--------------------------------------- hex strings
+
+%% \bxce@parse@hex{<word>}\CSok\CSerr
+% Expands to \CSok{<res>} or \CSerr.
+\def\bxce@parse@hex#1{%
+ \bxce@parse@hex@a#1@@%
+}
+\def\bxce@parse@hex@a#1{%<ic>|...
+ \bxce@cond\ifx @#1\fi{%
+ \bxce@parse@hex@c
+ }{%else
+ \expandafter\expandafter\expandafter
+ \bxce@parse@hex@b\csname bxce@H/#1\endcsname
+ }%
+}
+\def\bxce@parse@hex@b#1#2@#3@{%<ic><iw>@<ow>@|\CSok\CSerr
+ \bxce@cond\ifx#1\relax\fi{% unknown char
+ \@secondoftwo
+ }{%else
+ \bxce@parse@hex@a#2@#3#1@%
+ }%
+}
+\def\bxce@parse@hex@c#1{%
+ \bxce@cond\if @#1\fi{%
+ \bxce@parse@hex@d0@%
+ }{\bxce@cond\if0#1\fi{%
+ \bxce@parse@hex@c
+ }{%else
+ \bxce@parse@hex@d#1%
+ }}%
+}
+\def\bxce@parse@hex@d#1@#2#3{%<ow>@\CSok\CSerr
+ #2{#1}%
+}
+
+%% \bxce@H/*
+\begingroup
+ \lccode`H=`H
+ \def\bxce@tmpa#1\bxce@end{%
+ \lowercase{\csgdef{bxce@H/#1}}{#1}%
+ \csgdef{bxce@H/#1}{#1}%
+ }
+ \@tfor\x:=0123456789ABCDEF\do{%
+ \expandafter\bxce@tmpa\x\bxce@end
+ }
+\endgroup
+
+%--------------------------------------- unparse
+
+%% \bxce@unparse@first{<first>}
+% The inverse of \bxce@parse@first@ccseq.
+% But here \bxce@O and \bxce@S are illegal.
+\def\bxce@unparse@first{%
+ \let\bxce@text\@empty
+ \let\bxce@T\bxce@unparse@first@T
+ \let\bxce@O\bxce@unparse@first@O
+ \let\bxce@S\bxce@unparse@first@S
+ \let\bxce@E\bxce@unparse@first@E
+}
+\def\bxce@unparse@first@a#1{%
+ \bxce@unparse@first@b#1%
+}
+\def\bxce@unparse@first@b#1.\bxce@end{%
+ \def\bxce@text{#1}%
+}
+\protected\def\bxce@unparse@first@T.\bxce@end{%
+ \expandafter\bxce@unparse@first@a\bxce@text.\bxce@end
+}
+\protected\def\bxce@unparse@first@O#1{%
+ \PackageError\bxce@pkgname
+ {Illegal character [\bxce@hex{`#1}]}{\@ehc}%
+}
+\protected\def\bxce@unparse@first@S#1{%
+ \bxce@unparse@first@O{\ }%
+}
+\protected\def\bxce@unparse@first@E#1#2{%
+ \unless\ifnum#1=\bxce@cp@evs
+ \edef\bxce@text{\bxce@text\space#2}%
+ \fi
+}
+
+%% \bxce@normalize@text{<text>}
+\def\bxce@normalize@text#1{%
+ \bxce@expand@text{#1}%
+ \edef\bxce@text{\detokenize\expandafter{\bxce@text}}%
+ \expandafter\bxce@parse@first\bxce@text\bxce@end
+ \expandafter\bxce@unparse@first\bxce@text\bxce@end
+}
+
+%% \bxce@normalize@ccseq{<ccseq>}
+\def\bxce@normalize@ccseq#1{%
+ \bxce@parse@first@ccseq{#1}%
+ \expandafter\bxce@unparse@first\bxce@text\bxce@end
+}
+
+%--------------------------------------- family config file
+
+%% variables
+\let\bxce@cfg@file\relax
+\let\bxce@config\relax
+
+%% errors
+\def\bxce@err@secfg#1{%
+ \PackageError\bxce@pkgname
+ {Problem in '\bxce@cfg@file':\MessageBreak
+ #1}%
+ {The custom family is ignored.\MessageBreak
+ \@ehc}%
+}
+
+%% \bxce@use@custom@family{<name>}
+\def\bxce@use@custom@family#1{%
+ % start from invalidated state
+ \bxce@initialize@setup
+ % load configuration file
+ \ifcsdef{bxce@config/#1}{%
+ \bxce@oktrue
+ }{%else
+ \edef\bxce@cfg@file{\bxce@pkgname-#1.cfg}%
+ \IfFileExists{\bxce@cfg@file}{%
+ \edef\bxce@family{#1}%
+ \bxce@read@cfg@file
+ }{%else
+ \ifcsdef{bxce@fbconfig/#1}{%
+ \bxce@oktrue
+ \letcs\bxce@config{bxce@fbconfig/#1}%
+ \PackageInfo\bxce@pkgname
+ {Using preset config for '#1'\@gobble}%
+ }{%
+ \bxce@okfalse
+ \PackageError\bxce@pkgname
+ {The custom family '#1' is unavaiable\MessageBreak
+ since file '\bxce@cfg@file' is not found}%
+ {\@ehc}%
+ }%
+ }%
+ \ifbxce@ok
+ \bxce@check@cfg@values
+ \fi
+ \ifbxce@ok
+ \global\cslet{bxce@config/#1}\bxce@config
+ \fi
+ }%
+ % apply configuration
+ \ifbxce@ok
+ \let\bxce@output@type\bxce@ot@@custom
+ \edef\bxce@family{#1}%
+ \csuse{bxce@config/#1}%
+ \fi
+}
+
+%% \bxce@read@cfg@file
+% Reads the file \bxce@cfg@file and stores the result to \bxce@config.
+% It sets to bxce@ok whether the reading succeeded.
+\def\bxce@read@cfg@file{%
+ \PackageInfo\bxce@pkgname
+ {Loading custom family config file\MessageBreak
+ '\bxce@cfg@file'}%
+ \bxce@okfalse
+ \let\bxce@config\relax
+ \openin\@inputcheck=\bxce@cfg@file\relax
+ \global\let\bxce@g@tmpa\@empty
+ \begingroup
+ \endlinechar\m@ne
+ \bxce@oktrue
+ \@whilesw\ifbxce@ok\fi{%
+ \ifeof\@inputcheck
+ \bxce@okfalse
+ \aftergroup\bxce@read@cfg@file@eof
+ \else
+ \readline\@inputcheck to\bxce@tmpa
+ \bxce@read@cfg@file@cc
+ \unless\ifx\bxce@tmpa\@empty
+ \expandafter\bxce@read@cfg@file@a\bxce@tmpa\bxce@mk=\bxce@end
+ \fi
+ \fi
+ }%
+ \endgroup
+ % here 'bxce@ok' means whether loading succeeded
+ \closein\@inputcheck
+}
+\def\bxce@read@cfg@file@eof{%
+ \bxce@oktrue
+ \let\bxce@config\bxce@g@tmpa
+}
+\def\bxce@read@cfg@file@a#1=#2\bxce@end{%
+ \ifx\bxce@mt#2\bxce@mt
+ \bxce@err@secfg{missing '='}\bxce@okfalse
+ \else
+ \edef\bxce@tmpa{\zap@space#1 \@empty}%
+ \bxce@read@cfg@file@b#2\bxce@end
+ \fi
+}
+\def\bxce@read@cfg@file@b#1\bxce@mk#2\bxce@end{%
+ \edef\bxce@tmpb{\@firstofone#1\@empty}%
+ \ifcsdef{bxce@read@cfg@file@@\bxce@tmpa}{%
+ \csuse{bxce@read@cfg@file@@\bxce@tmpa}%
+ }{%else
+ \bxce@err@secfg{unknown key '\bxce@tmpa'}\bxce@okfalse
+ }%
+}
+\def\bxce@tmpa#1{%
+ \def\bxce@read@cfg@file@cc{%
+ \expandafter\bxce@read@cfg@file@cc@a\bxce@tmpa#1\bxce@end}%
+ \def\bxce@read@cfg@file@cc@a##1#1##2\bxce@end{%
+ \ifblank{##1}{\let\bxce@tmpa\@empty}{%else
+ \def\bxce@tmpa{##1}}}%
+}\expandafter\bxce@tmpa\@percentchar
+% key handlers
+\def\bxce@read@cfg@file@@bbox{%
+ \xappto\bxce@g@tmpa{\def\bxce@bb{\bxce@tmpb}}%
+}
+\def\bxce@read@cfg@file@@extension{%
+ \xappto\bxce@g@tmpa{\def\bxce@ext{\bxce@tmpb}}%
+}
+\def\bxce@read@cfg@file@@prefix{%
+ \xappto\bxce@g@tmpa{\def\bxce@prefix{\bxce@tmpb}}%
+}
+
+%% \bxce@check@cfg@values
+% Checks if \bxce@config is valid and sets the result to bxce@ok.
+\def\bxce@check@cfg@values{%
+ \bxce@oktrue
+ \begingroup
+ \bxce@config
+ % NB: 'bbox' is optional.
+ \ifx\bxce@ext\relax
+ \bxce@err@secfg{'extension' is not given}%
+ \aftergroup\bxce@okfalse
+ \fi
+ \ifx\bxce@prefix\relax
+ \bxce@err@secfg{'prefix' is not given}%
+ \aftergroup\bxce@okfalse
+ \fi
+ \endgroup
+}
+
+\csdef{bxce@fbconfig/twemoji-pdf}{%
+ \def\bxce@bb{0 0 27 27}%
+ \def\bxce@ext{pdf}%
+ \def\bxce@prefix{\coloremojidir twemoji-pdf/twemoji-}%
+}
+\csdef{bxce@fbconfig/twemoji-png}{%
+ \def\bxce@bb{0 0 72 72}%
+ \def\bxce@ext{png}%
+ \def\bxce@prefix{\coloremojidir twemoji-png/twemoji-}%
+}
+
+%% invoke the custom family set by a package option
+\ifnum\bxce@output@type=\bxce@ot@@custom
+ \bxce@expd{\noexpand\bxce@use@custom@family{\bxce@family}}%
+\fi
+
+%--------------------------------------- emoji order list
+
+%% variables
+%[bxce@oen/<ccseq>]
+\let\bxce@oehead\relax
+\let\bxce@oeprev\relax
+\let\bxce@oecur\relax
+
+\AtBeginDocument{% empty should stay invalid
+ \csundef{bxce@oen/}%
+}
+
+%%<+> \bxcoloremojiDeclareOrder{<ccseq>,...}
+\@onlypreamble\bxcoloremojiDeclareOrder
+\newrobustcmd*\bxcoloremojiDeclareOrder[1]{%
+ \begingroup
+ \@for\bxce@oecur:=#1\do{%
+ \bxce@normalize@ccseq\bxce@oecur
+ \let\bxce@oecur\bxce@text
+ \ifx\bxce@oecur\@empty
+ \else\ifcsname bxce@oen/\bxce@oecur\endcsname
+ \PackageError\bxce@pkgname
+ {Already registered in some emoji order list:\MessageBreak
+ \space\space[\bxce@oecur]}%
+ {\@eha}%
+ \else
+ \ifx\bxce@oehead\relax
+ \let\bxce@oehead\bxce@oecur
+ \else
+ \global\cslet{bxce@oen/\bxce@oeprev}\bxce@oecur
+ \fi
+ \let\bxce@oeprev\bxce@oecur
+ \fi\fi}%
+ \unless\ifx\bxce@prev\relax
+ \global\cslet{bxce@oen/\bxce@oeprev}\bxce@oehead
+ \fi
+ \endgroup
+}
+
+%%<+> \bxcoloremojiUndeclareOrder{<ccseq>,...}
+\@onlypreamble\bxcoloremojiUndeclareOrder
+\newrobustcmd*\bxcoloremojiUndeclareOrder[1]{%
+ \begingroup
+ \@for\bxce@oecur:=#1\do{%
+ \bxce@normalize@ccseq\bxce@oecur
+ \let\bxce@oecur\bxce@text
+ \ifx\bxce@oecur\@empty
+ \else\ifcsname bxce@oen/\bxce@oecur\endcsname
+ \global\csundef{bxce@oen/\bxce@oecur}%
+ \fi\fi
+ }%
+ \endgroup
+}
+
+%%<+> \bxcoloremojiTestOrder{<count>}{<ccseq_0>}
+\newrobustcmd*\bxcoloremojiTestOrder[2]{%
+ \begingroup
+ \bxce@normalize@ccseq{#2}%
+ \typeout{Order for <\bxce@text>:}%
+ \ifcsname bxce@oen/\bxce@text\endcsname
+ \let\bxce@oecur\bxce@text
+ \bxce@cnto=#1\relax
+ \@whilenum{\bxce@cnto>\z@}\do{%
+ \message{<\bxce@oecur>}%
+ \coloremojicode{\bxce@oecur}\space
+ \letcs\bxce@oecur{bxce@oen/\bxce@oecur}%
+ \ifdefined\bxce@oecur \advance\bxce@cnto\m@ne
+ \else \bxce@cnto\z@
+ \fi
+ }%
+ \unskip\typeout{done}%
+ \else \typeout{(not declared)}%
+ \fi
+ \endgroup
+}
+
+%--------------------------------------- pifont-like functions
+
+%%<*> \coloremojifill{<text>}
+\newrobustcmd*{\coloremojifill}{%
+ \bxce@coloremojifill{\coloremoji*}%
+}
+%%<*> \coloremojicodefill{<ccseq>}
+\newrobustcmd*{\coloremojicodefill}{%
+ \bxce@coloremojifill{\coloremojicode*}%
+}
+\def\bxce@coloremojifill#1#2{%
+ \leavevmode
+ \leaders\hbox{\kern.375\bxce@unit{#1{#2}}\kern.375\bxce@unit}\hfill
+ \kern\z@
+}
+
+%%<*> \coloremojiline{<text>}
+\newrobustcmd*{\coloremojiline}{%
+ \bxce@coloremojiline{\coloremoji*}%
+}
+%%<*> \coloremojicodeline{<ccseq>}
+\newrobustcmd*{\coloremojicodeline}{%
+ \bxce@coloremojiline{\coloremojicode*}%
+}
+\def\bxce@coloremojiline#1#2{%
+ \par\noindent\hspace{0.5in}%
+ \bxce@coloremojifill{#1}{#2}%
+ \hspace{0.5in}\kern\z@
+ \par
+}
+
+%%<*> \begin{coloremojilist}{<text>}
+\newenvironment*{coloremojilist}[1]{%
+ \begin{list}{\coloremoji*{#1}}{}%
+}{%
+ \end{list}%
+}
+%%<*> \begin{coloremojicodelist}{<ccseq>}
+\newenvironment*{coloremojicodelist}[1]{%
+ \begin{list}{\coloremojicode*{#1}}{}%
+}{%
+ \end{list}%
+}
+
+%% \bxce@ctrformat
+\def\bxce@ctrformat#1#2{%
+ \protect\bxce@ctrformat@{#1}{\arabic{#2}}%
+}
+\def\bxce@ctrformat@#1#2{%
+ \begingroup
+ \bxce@cnto=#2\relax
+ \edef\bxce@text{#1}%
+ \bxce@get@successor
+ \ifx\bxce@text\relax
+ \bxce@put@ageta
+ \else
+ \coloremojicode*{\bxce@text}%
+ \fi
+ \endgroup
+}
+
+%%<*> \begin{coloremojiautolist}{<text_0>}
+\newenvironment*{coloremojiautolist}[1]{%
+ \bxce@normalize@text{#1}%
+ \bxce@coloremojiautolist
+}{%
+ \endlist
+}
+%%<*> \begin{coloremojicodeautolist}{<ccseq>}
+\newenvironment*{coloremojicodeautolist}[1]{%
+ \bxce@normalize@ccseq{#1}%
+ \bxce@coloremojiautolist
+}{%
+ \endlist
+}
+\def\bxce@coloremojiautolist{%
+ \unless\ifcsname bxce@oen/\bxce@text\endcsname
+ \PackageError\bxce@pkgname
+ {Not registered in any emoji order list:\MessageBreak
+ \space\space[\bxce@text]}%
+ {\@ehc}%
+ \let\bxce@text\@empty
+ \fi
+ \ifnum\@enumdepth>\thr@@
+ \@toodeep
+ \else
+ \advance\@enumdepth\@ne
+ \edef\@enumctr{enum\romannumeral\@enumdepth}%
+ \cslet{p@\@enumctr}\@empty
+ \csedef{label\@enumctr}{\noexpand\csuse{the\@enumctr}}%
+ \csedef{the\@enumctr}{%
+ \noexpand\bxce@ctrformat{\bxce@text}{\@enumctr}}%
+ \list{\csuse{label\@enumctr}}{%
+ \@nmbrlisttrue
+ \edef\@listctr{\@enumctr}%
+ \setcounter{\@enumctr}{\m@ne}%
+ \def\makelabel##1{\hss\llap{##1}}}%
+ \fi
+}
+
+%% 'coloremojiucs' aliases
+\newcommand*{\coloremojiucsfill}{\coloremojicodefill}
+\newcommand*{\coloremojiucsline}{\coloremojicodeline}
+\@ifdefinable{\coloremojiucslist}{%
+ \let\coloremojiucslist\coloremojicodelist
+ \let\endcoloremojiucslist\endcoloremojicodelist
+}
+\@ifdefinable{\coloremojiucsautolist}{%
+ \let\coloremojiucsautolist\coloremojicodeautolist
+ \let\endcoloremojiucsautolist\endcoloremojicodeautolist
+}
+
+%--------------------------------------- keycap numbering
+
+%% constants
+%[bxce@kcn/<n>] : ccseq of keycap emoji for number <n>
+
+%% make table
+\bxce@cnta\z@
+\@for\bxce@tmpa:={%
+ 0030 20E3,0031 20E3,0032 20E3,0033 20E3,0034 20E3,%
+ 0035 20E3,0036 20E3,0037 20E3,0038 20E3,0039 20E3,1F51F%
+}\do{%
+ \csedef{bxce@kcn/\the\bxce@cnta}{\bxce@tmpa}%
+ \advance\bxce@cnta\@ne
+}
+
+%%<*> \coloremojikeycapof*[<option>,...]{<number>}
+% Puts the keycap emoji for the number.
+% (It expands to an invocation of \coloremojicode.)
+\newcommand*\coloremojikeycapof{%
+ \bxce@hedge@options@with\bxce@keycap@of
+}
+\def\bxce@keycap@of#1#2{%
+ \expandafter\bxce@keycap@of@a\number#2\bxce@mk{#1}%
+}
+\def\bxce@keycap@of@a#1\bxce@mk#2{%
+ \ifnum#1<\z@
+ \bxce@put@geta@for{#2}%
+ \else\ifcsname bxce@kcn/#1\endcsname
+ \expandafter\expandafter\expandafter\bxce@keycap@of@b\csname
+ bxce@kcn/#1\endcsname\bxce@end{#1}{#2}%
+ \else
+ \bxce@keycap@of@bad{#1}%
+ \fi\fi
+}
+\def\bxce@keycap@of@b#1\bxce@end#2#3{%
+ \bxce@keycap@of@good{#3}{#1}{#2}%
+}
+
+%% \bxce@keycap@of@bad{<number>}
+\def\bxce@keycap@of@bad#1{%
+ \begingroup \fboxsep=\z@ \fboxrule=.6\p@
+ \fbox{\rule[-.1em]{0pt}{.85em}#1}% fallback
+ \endgroup
+}
+\def\bxce@hy@keycap@of@bad#1{[#1]}
+%% \bxce@keycap@of@good{...}{<codevalue>}{<number>}
+\def\bxce@keycap@of@good#1#2#3{%
+ \coloremojicode#1{#2}%
+}
+\def\bxce@hy@keycap@of@good#1#2#3{%
+ \ifdefined\ifpdfstringunicode \expandafter\ifpdfstringunicode
+ \else \expandafter\@secondoftwo
+ \fi {\coloremojicode#1{#2}}{\bxce@keycap@of@bad{#3}}%
+}
+
+%%<*> \coloremojikeycap*[<option>,...]{<counter>}
+% Puts the keycap emoji for the current counter value.
+% (It expands to an invocation of \coloremojicode.)
+\newcommand*\coloremojikeycap{%
+ \bxce@hedge@options@with\bxce@keycap
+}
+\def\bxce@keycap#1#2{%
+ \bxce@keycap@of{#1}{\value{#2}}%
+}
+
+%% \@coloremojikeycap{<number>}
+% This macro is needed for \pagenumbering.
+\def\@coloremojikeycap#1{%
+ \bxce@keycap@of{}{#1}%
+}
+
+%--------------------------------------- successor something
+
+%% \bxce@get@successor
+% Find the \bxce@cnto-th successor of ccseq \bxce@text and
+% set the result to \bxce@text.
+\def\bxce@get@successor{%
+ \ifnum\bxce@cnto<\z@ \bxce@cnto\z@ \fi
+ \@tempcnta\z@
+ \let\bxce@tmpb\bxce@text
+ \@whilenum{\bxce@cnto>\z@}\do{%
+ \letcs\bxce@tmpb{bxce@oen/\bxce@tmpb}%
+ \advance\bxce@cnto\m@ne
+ \advance\@tempcnta\@ne
+ \unless\ifdefined\bxce@tmpb
+ \bxce@cnto\z@
+ \else\ifx\bxce@text\bxce@tmpb % loop detected
+ % shortcut
+ \@tempcntb\bxce@cnto
+ \divide\@tempcntb\@tempcnta
+ \advance\bxce@cnto-\numexpr\@tempcntb*\@tempcnta\relax
+ \fi\fi
+ }%
+ \ifdefined\bxce@tmpb
+ \let\bxce@text\bxce@tmpb
+ \else
+ \let\bxce@text\relax
+ \fi
+}
+
+%--------------------------------------- emoji order database
+
+%\bxcoloremojiDeclareOrder{% snowman (for test)
+% 2603, 26C4}
+\bxcoloremojiDeclareOrder{% zodiac symbol
+ 2648, 2649, 264A, 264B, 264C, 264D, 264E, 264F, 2650, 2651,
+ 2652, 2653}
+\bxcoloremojiDeclareOrder{% playing card suit
+ 2660, 2665, 2666, 2663}
+%\bxcoloremojiDeclareOrder{% color heart (provisional)
+% 2764, 1F49B, 1F49A, 1F499, 1F49C}% cf. 1F9E1
+%\bxcoloremojiDeclareOrder{% color circle (provisional)
+% 1F534, 1F535}
+\bxcoloremojiDeclareOrder{% clock face
+ 1F550, 1F551, 1F552, 1F553, 1F554, 1F555, 1F556, 1F557, 1F558, 1F559,
+ 1F55A, 1F55B}
+\bxcoloremojiDeclareOrder{% keycap number
+ 0030 20E3, 0031 20E3, 0032 20E3, 0033 20E3, 0034 20E3,
+ 0035 20E3, 0036 20E3, 0037 20E3, 0038 20E3, 0039 20E3, 1F51F}
+
+%--------------------------------------- done
+\endinput
+%% EOF
diff --git a/Master/texmf-dist/tex/latex/calculatoritems/calculatoritems.sty b/Master/texmf-dist/tex/latex/calculatoritems/calculatoritems.sty
new file mode 100644
index 00000000000..4c99ecbb592
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/calculatoritems/calculatoritems.sty
@@ -0,0 +1,981 @@
+% Author : C. Pierquet
+% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{calculatoritems}[2025/01/25 0.1.1 Menus from classic calculators]
+
+%====HISTORIQUE
+% v 0.1.1 Sample keys + fonts config for LUA + shortcut with img pdf
+% v 0.1.0 Initial version
+
+%====OPTION
+\newif\if@xelua \@xeluafalse
+\newif\if@amssymb \@amssymbtrue
+\DeclareOption{xelua}{\@xeluatrue}
+\DeclareOption{noamssymb}{\@amssymbfalse}
+\DeclareOption*{}
+\ProcessOptions\relax
+
+%====SPECIAL FONTS
+\if@xelua
+ \@ifpackageloaded{fontspec}{}{\RequirePackage{fontspec}}
+ \newfontfamily\fontNWKS{SourceCodePro-Medium}[Scale=MatchLowercase] %numworks
+ \newfontfamily\fontCASIOA{AnonymousPro}[Scale=MatchLowercase] %casio35
+ \newfontfamily\fontCASIOB{AlegreyaSans}[Scale=MatchLowercase] %casio90
+ \newfontfamily\fontTI{AnonymousPro}[Scale=MatchLowercase] %ti
+ \newfontfamily\fontHP{AlegreyaSans}[Scale=MatchLowercase] %ti
+ \newfontfamily\fontKEY{Inconsolatazi4}[Scale=MatchLowercase] %global keys
+ \RequirePackage{xstring}
+ \RequirePackage{listofitems}
+ %===== following font files must be downloaded manually (https://packages.cpierquet.fr/packages/graphiques/calculatoritems/calculatoritems_fonts.zip)
+ \defaultfontfeatures[numworks]{Extension=.ttf,UprightFont=numworks-keys-regular,BoldFont=numworks-keys-bold}
+ \newfontfamily{\fontkeyNWKS}{numworks}[Scale=MatchLowercase]
+ \defaultfontfeatures[casiofx]{Extension=.ttf,UprightFont=CFX06}
+ \newfontfamily{\fontkeyCASIOfx}{casiofx}[Scale=MatchLowercase]
+ \defaultfontfeatures[casiocw]{Extension=.ttf,UprightFont=CASIO ClassWiz CW02}
+ \newfontfamily{\fontkeyCASIOcw}{casiocw}[Scale=MatchLowercase]
+ \defaultfontfeatures[texasfr]{Extension=.ttf,UprightFont=TI83PremiumCEKeys}
+ \newfontfamily{\fontkeyTIfr}{texasfr}[Scale=MatchLowercase]
+ \defaultfontfeatures[texasen]{Extension=.ttf,UprightFont=TI84PlusCEKeys}
+ \newfontfamily{\fontkeyTI}{texasen}[Scale=MatchLowercase]
+ %===== end external files
+\else
+ \newcommand\fontNWKS{\fontencoding{T1}\fontfamily{SourceCodePro-TLF}\selectfont} %nwks
+ \newcommand\fontCASIOA{\fontencoding{T1}\fontfamily{AnonymousPro}\fontseries{sb}\selectfont} %casio35
+ \newcommand\fontCASIOB{\fontencoding{T1}\fontfamily{AlegreyaSans-TLF}\fontseries{sb}\selectfont} %casio90
+ \newcommand\fontTI{\fontencoding{T1}\fontfamily{AnonymousPro}\fontseries{sb}\selectfont} %ti
+ \newcommand\fontHP{\fontencoding{T1}\fontfamily{AlegreyaSans-TLF}\fontseries{sb}\selectfont} %casio90
+ \newcommand\fontKEY{\fontencoding{T1}\fontfamily{SourceCodePro-TLF}\fontseries{sb}\selectfont} %global keys
+\fi
+
+%====BASE
+\if@amssymb
+ \RequirePackage{amssymb}
+ \newcommand\nwkstri{\footnotesize\textcolor{orange}{$\blacktriangleright$}}
+\fi
+\RequirePackage{xstring}
+\RequirePackage{calc}
+\RequirePackage{simplekv}
+\RequirePackage{tcolorbox}
+\RequirePackage{circledtext}
+\usetikzlibrary{calc}
+\tcbuselibrary{skins}
+
+%====DIMs & Useful
+\newlength\calcsimmenusfsep
+\setlength\calcsimmenusfsep{1pt}
+\newlength\calcsimmenusmenutc
+\newlength\calcsimmenusitemtc
+\newlength\calcsimmenusdepth
+\newcommand\tidots{\scalebox{0.44}[0.55]{...}}
+\newcommand\casiodots{\circledtext[resize=real,width=0.75em]{$\cdots$}}
+
+%====TCSTYLES
+\tcbset{casiotc/.style={%
+ enhanced,fontupper=\calcsimmenusfont,nobeforeafter,%
+ box align=base,boxsep=\calcsimmenusfsep,%
+ boxrule=0.8pt,left=0pt,right=0pt,top=0pt,%
+ bottom=\dimexpr1pt-\calcsimmenusdepth\relax,no borderline
+ }
+}
+\tcbset{casiotcmenunoir/.style={%
+ width=\calcsimmenusmenutc,colframe=black,colback=black,%
+ colupper=white,sharp corners,rounded corners=southeast,%
+ arc=3pt,arc is angular,add to width=1pt
+ }
+}
+\tcbset{casiotcmenublanc/.style={%
+ enhanced,frame hidden,width=\calcsimmenusmenutc,%
+ colframe=black,colback=white,colupper=black,%
+ sharp corners,add to width=1pt,
+ borderline north={0.75pt}{0pt}{black},
+ borderline west={0.75pt}{0pt}{black}
+ }
+}
+\tcbset{casiotcitemnoir/.style={%
+ width=\calcsimmenusmenutc,colframe=black,%
+ colback=black,colupper=white,sharp corners,add to width=1pt
+ }
+}
+\tcbset{casiotcitemsel/.style={%
+ width=\calcsimmenusitemtc,sharp corners,%
+ colframe=black,colback=black,colupper=white
+ }
+}
+
+\tcbset{casioqd/.style={%
+ fontupper=\calcsimmenusfont,nobeforeafter,%
+ box align=base,boxsep=\calcsimmenusfsep,%
+ boxrule=0.8pt,left=0pt,right=0pt,top=0pt,%
+ bottom=\dimexpr1pt-\calcsimmenusdepth\relax,%
+ }
+}
+\tcbset{casioqdmenunoir/.style={%
+ enhanced,width=\calcsimmenusmenutc,colframe=black,%
+ colback=black,colupper=white,arc=1pt,add to width=2pt
+ }
+}
+\tcbset{casioqdmenublanc/.style={%
+ width=\calcsimmenusmenutc,colframe=black,colback=white,%
+ colupper=black,rounded corners,arc=1pt,add to width=2pt
+ }
+}
+\tcbset{casioqditemnoir/.style={%
+ width=\calcsimmenusmenutc,colframe=black,colback=black,%
+ colupper=white,sharp corners,add to width=2pt
+ }
+}
+\tcbset{casioqditemsel/.style={%
+ width=\calcsimmenusitemtc,sharp corners,colframe=black,%
+ colback=black,colupper=white,sharp corners
+ }
+}
+
+\tcbset{vignettemenunwks/.style={%
+ top=\dimexpr0.45pt+0.5\calcsimmenusfsep\relax,bottom=\dimexpr1pt-\calcsimmenusdepth\relax,%
+ left=2pt,right=2pt,fontupper=\calcsimmenusfont,nobeforeafter,%
+ box align=base,boxrule=0.45pt,boxsep=0.5\calcsimmenusfsep,sharp corners=all
+ }
+}
+
+\tcbset{vignettemenuti/.style={%
+ size=tight,boxrule=0.45pt,fontupper=\calcsimmenusfont,%
+ nobeforeafter,left=0.45pt,right=0.45pt,top=0.15pt,bottom=0.15pt,box align=base
+ }
+}
+
+\tcbset{vignettemenuhp/.style={%
+ enhanced,fontupper=\calcsimmenusfont,nobeforeafter,%
+ box align=base,boxsep=\calcsimmenusfsep,%
+ boxrule=0.8pt,left=0pt,right=0pt,top=0pt,%
+ bottom=\dimexpr1pt-\calcsimmenusdepth\relax,%
+ }
+}
+
+\tcbset{vignettemenuhpnorth/.style={%
+ width=\calcsimmenusmenutc,colupper=white,colback=darkgray!90,colframe=darkgray,%
+ sharp corners=north,add to width=2pt
+ }
+}
+\tcbset{vignettemenuhpround/.style={%
+ width=\calcsimmenusmenutc,colupper=white,colback=darkgray!90,colframe=darkgray,%
+ rounded corners,arc=1pt,add to width=2pt
+ }
+}
+\tcbset{vignettemenuhpitemsel/.style={%
+ width=\calcsimmenusitemtc,sharp corners,colframe=cyan!15,%
+ colback=cyan!15,colupper=black,sharp corners
+ }
+}
+
+\tcbset{vignettemenuhpitem/.style={%
+ sharp corners,colframe=cyan!15,colback=cyan!15,colupper=black,sharp corners
+ }
+}
+
+%====KEYS
+\defKV[calcsimmenus]{%
+ model=\def\calcsimmenusmodel{#1},%
+ type=\def\calcsimmenustype{#1},%
+ fsep=\setlength\calcsimmenusfsep{#1},%
+ font=\def\calcsimmenusfont{#1},%
+ len=\def\calcsimmenuslen{#1},%
+ bg=\def\calcsimmenusbg{#1},%
+ rightsymb=\def\calcsimmenusrsymb{#1},%
+ colorfont=\def\calcsimmenuscolfont{#1}
+}
+\setKVdefault[calcsimmenus]{%
+ model={},%
+ type={},%
+ fsep=0.5pt,%
+ font={\bfseries\ttfamily},%
+ len=auto,%
+ bg=white,%
+ rightsymb={},%
+ colorfont=black
+}
+
+\NewDocumentCommand\CalcItemMenu{ O{} m }{%
+ \restoreKV[calcsimmenus]%
+ \setKV[calcsimmenus]{#1}%
+ \IfEq{\calcsimmenusmodel}{}%gen model
+ {%
+ \IfEq{\calcsimmenustype}{}%white bg
+ {%
+ {\setlength{\fboxsep}{\calcsimmenusfsep}\fcolorbox{black}{white}{\vphantom{qH}\calcsimmenusfont#2}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{black}%black bg
+ {%
+ {\setlength{\fboxsep}{\calcsimmenusfsep}\fcolorbox{black}{black}{\vphantom{qH}\calcsimmenusfont\textcolor{white}{#2}}}%
+ }%
+ {}%
+ {}%
+ }%
+ {}%
+ \IfEq{\calcsimmenusmodel}{35+}%
+ {%
+ \settowidth{\calcsimmenusmenutc}{\hbox{\calcsimmenusfont MMMM}}%
+ \addtolength{\calcsimmenusmenutc}{2pt}%
+ \settowidth{\calcsimmenusitemtc}{\hbox{\calcsimmenusfont MMMMMMMMMMMMMMMMMMM}}%
+ \settodepth{\calcsimmenusdepth}{\hbox{\calcsimmenusfont gH}}%
+ \IfEq{\calcsimmenuslen}{auto}%
+ {%
+ \StrLen{#2}[\calcsimmenusnbchar]%
+ \xdef\calcsimmenushscale{\fpeval{min(4/(\calcsimmenusnbchar),1)}}%
+ \xdef\calcsimmenusvscale{\fpeval{0.95*\calcsimmenushscale}}%
+ }%
+ {%
+ \xdef\calcsimmenushscale{\fpeval{min(4/(\calcsimmenuslen),1)}}%
+ \xdef\calcsimmenusvscale{\fpeval{0.95*\calcsimmenushscale}}%
+ }%
+ \IfEq{\calcsimmenustype}{}%white menu
+ {%
+ {\tcbox[tcbox width=minimum center,casiotc,casiotcmenublanc]{\vphantom{qH}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{bmenu}%black menu
+ {%
+ {\tcbox[tcbox width=minimum center,casiotc,casiotcmenunoir]{\vphantom{qH}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{item}%item
+ {%
+ {\tcbox[tcbox width=minimum center,casiotc,casiotcitemnoir]{\vphantom{qH}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{itemsel}%item sel
+ {%
+ {\tcbox[tcbox width=minimum left,casiotc,casiotcitemsel]{\makebox[\calcsimmenusitemtc]{\vphantom{qH}{#2}\hfill{\calcsimmenusrsymb}}}}%
+ }%
+ {}%
+ }%
+ {}%
+ \IfEq{\calcsimmenusmodel}{90+}%
+ {%
+ \settowidth{\calcsimmenusmenutc}{\hbox{\calcsimmenusfont MMMMM}}%
+ \addtolength{\calcsimmenusmenutc}{2pt}%
+ \settowidth{\calcsimmenusitemtc}{\hbox{\calcsimmenusfont MMMMMMMMMMMMMMMMMMMMMM}}%
+ \settodepth{\calcsimmenusdepth}{\hbox{\calcsimmenusfont gH}}%
+ \IfEq{\calcsimmenuslen}{auto}%
+ {%
+ \StrLen{#2}[\calcsimmenusnbchar]%
+ \xdef\calcsimmenushscale{\fpeval{min(5/(\calcsimmenusnbchar),1)}}%
+ \xdef\calcsimmenusvscale{\fpeval{0.95*\calcsimmenushscale}}%
+ }%
+ {%
+ \xdef\calcsimmenushscale{\fpeval{min(5/(\calcsimmenuslen),1)}}%
+ \xdef\calcsimmenusvscale{\fpeval{0.95*\calcsimmenushscale}}%
+ }%
+ \IfEq{\calcsimmenustype}{}%white menu
+ {%
+ {\tcbox[tcbox width=minimum center,casioqd,casioqdmenublanc]{\vphantom{qH}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{bmenu}%black menu
+ {%
+ {\tcbox[tcbox width=minimum center,casioqd,casioqdmenunoir,overlay={\path[fill=\calcsimmenusbg]($(frame.south east) + (0.1pt,-0.1pt)$) -- ++ (0pt,3.2pt) -- ++ (-3.2pt,-3.2pt) -- cycle;}]{\vphantom{qH}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{item}%item
+ {%
+ {\tcbox[tcbox width=minimum center,casioqd,casioqditemnoir]{\vphantom{qH}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{itemsel}%item
+ {%
+ {\tcbox[tcbox width=minimum left,casioqd,casioqditemsel]{\makebox[\calcsimmenusitemtc]{\vphantom{qH}{#2}\hfill{\calcsimmenusrsymb}}}}%
+ }%
+ {}%
+ }%
+ {}%
+ \IfEq{\calcsimmenusmodel}{math+}%
+ {%
+ \settowidth{\calcsimmenusmenutc}{\hbox{\calcsimmenusfont MMMMM}}%
+ \addtolength{\calcsimmenusmenutc}{2pt}%
+ \settowidth{\calcsimmenusitemtc}{\hbox{\calcsimmenusfont MMMMMMMMMMMMMMMMMMMM}}%
+ \settodepth{\calcsimmenusdepth}{\hbox{\calcsimmenusfont gH}}%
+ \IfEq{\calcsimmenuslen}{auto}%
+ {%
+ \StrLen{#2}[\calcsimmenusnbchar]%
+ \xdef\calcsimmenushscale{\fpeval{min(5/(\calcsimmenusnbchar),1)}}%
+ \xdef\calcsimmenusvscale{\fpeval{0.95*\calcsimmenushscale}}%
+ }%
+ {%
+ \xdef\calcsimmenushscale{\fpeval{min(5/(\calcsimmenuslen),1)}}%
+ \xdef\calcsimmenusvscale{\fpeval{0.95*\calcsimmenushscale}}%
+ }%
+ \IfEq{\calcsimmenustype}{}%white menu
+ {%
+ {\tcbox[tcbox width=minimum left,casioqd,casioqditemnoir]{\makebox[\calcsimmenusitemtc]{\vphantom{qH}{#2}\hfill{\calcsimmenusrsymb}}}}%
+ }%
+ {}%
+ }%
+ {}%
+ \IfEq{\calcsimmenusmodel}{nwks}%
+ {%
+ \setlength{\calcsimmenusdepth}{0.375pt}%
+ \IfEq{\calcsimmenustype}{}%white menu
+ {%
+ {\tcbox[vignettemenunwks,colframe=gray,colupper=darkgray,colback=white]{\vphantom{qH}\scalebox{0.85}[0.95]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{gmenu}%gray menu
+ {%
+ {\tcbox[vignettemenunwks,colframe=lightgray!50,colupper=black,colback=lightgray!50]{\vphantom{qH}\scalebox{0.85}[0.95]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{bmenu}%dark menu
+ {%
+ \xdef\tmplengthmenunwks{}%
+ \IfEq{\calcsimmenuslen}{auto}%
+ {%
+ \foreach \i in {1,...,22}{\xdef\tmplengthmenunwks{M\tmplengthmenunwks}}%
+ }%
+ {%
+ \foreach \i in {1,...,\calcsimmenuslen}{\xdef\tmplengthmenunwks{M\tmplengthmenunwks}}%
+ }%
+ \settowidth{\calcsimmenusitemtc}{\hbox{\calcsimmenusfont\tmplengthmenunwks}}%
+ {%
+ \tcbox[width=\calcsimmenusitemtc,tcbox width=minimum left,vignettemenunwks,colframe=gray,colupper=black,colback=lightgray!75]%
+ {\makebox[\calcsimmenusitemtc]{\vphantom{qH}\scalebox{0.85}[0.95]{#2}\hfill{\calcsimmenusrsymb}}}%
+ }%
+ }%
+ {}%
+ }%
+ {}%
+ \IfEq{\calcsimmenusmodel}{ti}%
+ {%
+ \IfEq{\calcsimmenustype}{}% black menu
+ {%
+ {\tcbox[vignettemenuti,colback=black,colframe=black,colupper=white]{\vphantom{qH}\scalebox{0.9}[1]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{menu}% menu sel
+ {%
+ {\tcbox[vignettemenuti,colback=white,colframe=black,colupper=black]{\vphantom{[A]/Fiy}\scalebox{0.9}[1]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{itemsel}%item sel
+ {%
+ \StrCut{#2}{§}{\calcsimmenusnb}{\calcsimmenuslab}%
+ {%
+ \tcbox[vignettemenuti,colback=black,colframe=black,colupper=white]{\vphantom{[A]/Fiy}\scalebox{0.9}[1]{\calcsimmenusnb:}}%
+ \hspace*{-0.225pt}%
+ \tcbox[vignettemenuti,colback=white,colframe=black,colupper=black]{\vphantom{[A]/Fiy}\scalebox{0.9}[1]{\calcsimmenuslab}}}%
+ }%
+ {}%
+ }%
+ {}%
+ \IfEq{\calcsimmenusmodel}{hp}%
+ {%
+ \settowidth{\calcsimmenusmenutc}{\hbox{\calcsimmenusfont MMMMM}}%
+ \addtolength{\calcsimmenusmenutc}{2pt}%
+ \settowidth{\calcsimmenusitemtc}{\hbox{\calcsimmenusfont MMMMMMMMMMMMMMMMMMMMM}}%
+ \settodepth{\calcsimmenusdepth}{\hbox{\calcsimmenusfont gH}}%
+ \IfEq{\calcsimmenuslen}{auto}%
+ {%
+ \StrLen{#2}[\calcsimmenusnbchar]%
+ \xdef\calcsimmenushscale{\fpeval{min(5/(\calcsimmenusnbchar),1)}}%
+ \xdef\calcsimmenusvscale{\fpeval{0.95*\calcsimmenushscale}}%
+ }%
+ {%
+ \xdef\calcsimmenushscale{\fpeval{min(5/(\calcsimmenuslen),1)}}%
+ \xdef\calcsimmenusvscale{\fpeval{0.95*\calcsimmenushscale}}%
+ }%
+ \IfEq{\calcsimmenustype}{}%bottom rounded
+ {%
+ {\tcbox[tcbox width=minimum center,vignettemenuhp,vignettemenuhpnorth]{\vphantom{qH}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{ritem}%rounded item
+ {%
+ {\tcbox[tcbox width=minimum center,vignettemenuhp,vignettemenuhpround]{\vphantom{qH}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{item}%item
+ {%
+ \StrCut{#2}{§}{\calcsimmenusnb}{\calcsimmenuslab}%
+ {%
+ \tcbox[vignettemenuhp,vignettemenuhp,vignettemenuhpitem]%
+ {\vphantom{qH}\raisebox{0.75\calcsimmenusdepth}{\scalebox{0.66}[0.66]{\calcsimmenusnb}}\,{\calcsimmenuslab}{\calcsimmenusrsymb}}%
+ }%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{itemsel}%item
+ {%
+ \StrCut{#2}{§}{\calcsimmenusnb}{\calcsimmenuslab}%
+ {%
+ \tcbox[tcbox width=minimum left,vignettemenuhp,vignettemenuhpitemsel]{%
+ \makebox[\calcsimmenusitemtc]{%
+ \vphantom{qH}\raisebox{0.75\calcsimmenusdepth}{\scalebox{0.66}[0.66]{\calcsimmenusnb}}\,{\calcsimmenuslab}\hfill{\calcsimmenusrsymb}%
+ }%
+ }%
+ }%
+ }%
+ {}%
+ }%
+ {}%
+}
+
+%TCSTYLES BUTONS & COLORS
+\definecolor{casiowhitekey}{HTML}{f5f4f4}
+\definecolor{casiobluekey}{HTML}{3f8ca6}
+\definecolor{casioblueqdkey}{HTML}{2f56c8}
+\definecolor{casiobluexe}{HTML}{2e5366}
+\definecolor{texasbluekey}{HTML}{2373c9}
+\definecolor{texasgreenkey}{HTML}{589b31}
+
+%==35+
+\tcbset{casiotckey/.style={%
+ enhanced,fontupper=\calcsimmenusfont,nobeforeafter,%
+ tcbox width=minimum center,
+ box align=base,boxsep=\calcsimmenusfsep,%
+ boxrule=0.8pt,left=0pt,right=0pt,top=0pt,%
+ bottom=\dimexpr1pt-\calcsimmenusdepth\relax,no borderline
+ }
+}
+\tcbset{casiokeytcgray/.style={%
+ width=\calcsimmenusmenutc,colframe=gray!75,colback=gray!75,%
+ colupper=\calcsimmenuscolfont,rounded corners,arc=1pt,add to width=2pt
+ }
+}
+\tcbset{casiokeytcwhite/.style={%
+ width=\calcsimmenusmenutc,colframe=casiowhitekey,colback=casiowhitekey,%
+ colupper=\calcsimmenuscolfont,rounded corners,arc=1pt,add to width=2pt
+ }
+}
+\tcbset{casiokeytcblue/.style={%
+ width=\calcsimmenusmenutc,colframe=casiobluekey,colback=casiobluekey,%
+ colupper=white,rounded corners,arc=1pt,add to width=2pt
+ }
+}
+%90+E
+\tcbset{casioqdkey/.style={%
+ enhanced,fontupper=\calcsimmenusfont,nobeforeafter,%
+ tcbox width=minimum center,
+ box align=base,boxsep=\calcsimmenusfsep,%
+ boxrule=0.8pt,left=0pt,right=0pt,top=0pt,%
+ bottom=\dimexpr1pt-\calcsimmenusdepth\relax,no borderline
+ }
+}
+\tcbset{casioqdkeygray/.style={%
+ width=\calcsimmenusmenutc,colframe=lightgray,colback=lightgray,%
+ colupper=\calcsimmenuscolfont,rounded corners,arc=1pt,add to width=2pt
+ }
+}
+\tcbset{casioqdkeywhite/.style={%
+ width=\calcsimmenusmenutc,colframe=casiowhitekey,colback=casiowhitekey,%
+ colupper=\calcsimmenuscolfont,rounded corners,arc=1pt,add to width=2pt
+ }
+}
+\tcbset{casioqdkeyblue/.style={%
+ width=\calcsimmenusmenutc,colframe=casioblueqdkey,colback=casioblueqdkey,%
+ colupper=white,rounded corners,arc=1pt,add to width=2pt
+ }
+}
+\tcbset{casioqdkeysilver/.style={%
+ width=\calcsimmenusmenutc,colframe=darkgray,colback=darkgray,%
+ colupper=lightgray,rounded corners,arc={0.25\calcsimmenusmenutc}
+ }
+}
+%83
+\tcbset{texaskey/.style={%
+ enhanced,fontupper=\calcsimmenusfont,nobeforeafter,%
+ tcbox width=minimum center,
+ box align=base,boxsep=\calcsimmenusfsep,%
+ boxrule=0.8pt,left=0pt,right=0pt,top=0pt,%
+ no borderline
+ }
+}
+\tcbset{texaskeywhite/.style={%
+ width=\calcsimmenusmenutc,colframe=casiowhitekey,colback=casiowhitekey,%
+ colupper=black,rounded corners,arc=1pt,bottom=0pt
+ %bottom=\dimexpr1pt-\calcsimmenusdepth\relax,
+ }
+}
+\tcbset{texaskeyblue/.style={%
+ width=\calcsimmenusmenutc,colframe=texasbluekey,colback=texasbluekey,%
+ colupper=white,rounded corners,arc=1pt,bottom=0pt
+ %bottom=\dimexpr1pt-\calcsimmenusdepth\relax,
+ }
+}
+\tcbset{texaskeygreen/.style={%
+ width=\calcsimmenusmenutc,colframe=texasgreenkey,colback=texasgreenkey,%
+ colupper=white,rounded corners,arc=1pt,bottom=0pt
+ %bottom=\dimexpr1pt-\calcsimmenusdepth\relax,
+ }
+}
+\tcbset{texaskeylightgray/.style={%
+ width=\calcsimmenusmenutc,colframe=lightgray!66,colback=lightgray!66,%
+ colupper=black,rounded corners,arc=1pt,bottom=0pt
+ %bottom=\dimexpr1pt-\calcsimmenusdepth\relax,
+ }
+}
+\tcbset{texaskeygray/.style={%
+ width=\calcsimmenusmenutc,colframe=gray,colback=gray,%
+ colupper=black,rounded corners,%
+ bottom=0pt,arc=1pt
+ }
+}
+
+\NewDocumentCommand\intcalckeydim{ O{1pt} m m m m }{%shortcut for compute scaling
+ \settowidth{\calcsimmenusmenutc}{\hbox{\calcsimmenusfont #2}}%
+ \addtolength{\calcsimmenusmenutc}{#1}%
+ \settodepth{\calcsimmenusdepth}{\hbox{\calcsimmenusfont #3}}%
+ \IfEq{\calcsimmenuslen}{auto}%
+ {%
+ \StrLen{#5}[\calcsimmenusnbchar]%
+ \xdef\calcsimmenushscale{\fpeval{min((#4)/(\calcsimmenusnbchar),1)}}%
+ \xdef\calcsimmenusvscale{0.95}%{\fpeval{0.975*\calcsimmenushscale}}%
+ }%
+ {%
+ \xdef\calcsimmenushscale{\fpeval{min((#4)/(\calcsimmenuslen),1)}}%
+ \xdef\calcsimmenusvscale{0.95}%{\fpeval{0.975*\calcsimmenushscale}}%
+ }%
+}
+
+%testing ??
+%\newsavebox{\jamBox}
+%\newlength{\jamWidth}
+%\newcommand{\jamIfToBig}[2]{%
+% % #1: Size to check against, like \textwidth
+% % #2: The content, like a tabular
+% \savebox{\jamBox}{#2}%
+% \settowidth{\jamWidth}{\usebox{\jamBox}}%
+% %\the\jamWidth -- \the#1
+% \ifthenelse{\jamWidth < #1}%
+% {\usebox{\jamBox}}%
+% {\resizebox{#1}{!}{\usebox{\jamBox}}%
+% }%
+%}
+
+\def\samplecharacterskeyx{azertyuiopqsdfghjklmwxcvbn123456789AZERTYUIOPQSDFGHJKLMWXCVBN}
+
+\NewDocumentCommand\CalcKey{ O{} m }{%
+ \restoreKV[calcsimmenus]%
+ \setKV[calcsimmenus]{#1}%
+ \IfEq{\calcsimmenusmodel}{35+}%
+ {%
+ \IfEq{\calcsimmenustype}{sgray}%small gray F1... 2 chars
+ {%
+ \intcalckeydim[2pt]{MMM}{\samplecharacterskeyx}{3}{#2}%
+ {\tcbox[casiotckey,casiokeytcgray]{\vphantom{\samplecharacterskeyx}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{gray}%gray bottom 3 chars
+ {%
+ \intcalckeydim[2pt]{MMM}{(\samplecharacterskeyx}{3}{#2}%
+ {\tcbox[casiotckey,casiokeytcgray]{\vphantom{(\samplecharacterskeyx}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{white}%white middle
+ {%
+ \intcalckeydim[2pt]{MMMM}{(\samplecharacterskeyx}{4}{#2}%
+ {\tcbox[casiotckey,casiokeytcwhite]{\vphantom{(\samplecharacterskeyx}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{blue}%blue DEL AC
+ {%
+ \intcalckeydim[2pt]{MMM}{(\samplecharacterskeyx}{3}{#2}%
+ {\tcbox[casiotckey,casiokeytcblue]{\vphantom{(\samplecharacterskeyx}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ }%
+ {}%
+ \IfEq{\calcsimmenusmodel}{90+}%
+ {%
+ \IfEq{\calcsimmenustype}{gray}%gray key
+ {%
+ \intcalckeydim[2pt]{MMM}{(\samplecharacterskeyx}{3}{#2}%
+ {\tcbox[casioqdkey,casioqdkeygray]{\vphantom{(\samplecharacterskeyx}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{silver}%Fn key
+ {%
+ \intcalckeydim[2pt]{MM}{(\samplecharacterskeyx}{2}{#2}%
+ {\tcbox[casioqdkey,casioqdkeysilver]{\vphantom{(\samplecharacterskeyx}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{blue}%blue DEL AC
+ {%
+ \intcalckeydim[2pt]{MMM}{(\samplecharacterskeyx}{3}{#2}%
+ {\tcbox[casioqdkey,casioqdkeyblue]{\vphantom{(\samplecharacterskeyx}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{white}%white middle
+ {%
+ \intcalckeydim[2pt]{MMMM}{(\samplecharacterskeyx}{4}{#2}%
+ {\tcbox[casioqdkey,casioqdkeywhite]{\vphantom{(\samplecharacterskeyx}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ }%
+ {}%
+ \IfEq{\calcsimmenusmodel}{83}%
+ {%
+ \IfEq{\calcsimmenustype}{swhite}%black menu
+ {%
+ \intcalckeydim[0pt]{MM}{(\samplecharacterskeyx}{2}{#2}%
+ {\tcbox[texaskey,texaskeywhite]{\vphantom{(\samplecharacterskeyx}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{white}%black menu
+ {%
+ \intcalckeydim[0pt]{MMMMM}{(\samplecharacterskeyx}{5}{#2}%
+ {\tcbox[texaskey,texaskeywhite]{\vphantom{(\samplecharacterskeyx}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{blue}%item sel
+ {%
+ \intcalckeydim{MMMM}{(\samplecharacterskeyx}{4}{#2}%
+ {\tcbox[texaskey,texaskeyblue]{\vphantom{(\samplecharacterskeyx}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{green}%item sel
+ {%
+ \intcalckeydim{MMMM}{(\samplecharacterskeyx}{4}{#2}%
+ {\tcbox[texaskey,texaskeygreen]{\vphantom{(\samplecharacterskeyx}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{lightgray}%item sel
+ {%
+ \intcalckeydim[1pt]{MMMM}{(\samplecharacterskeyx}{4}{#2}%
+ {\tcbox[texaskey,texaskeylightgray]{\vphantom{(\samplecharacterskeyx}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ \IfEq{\calcsimmenustype}{gray}%item sel
+ {%
+ \intcalckeydim{MM}{(\samplecharacterskeyx)}{2}{#2}%
+ {\tcbox[texaskey,texaskeygray]{\vphantom{(\samplecharacterskeyx}\scalebox{\calcsimmenushscale}[\calcsimmenusvscale]{#2}}}%
+ }%
+ {}%
+ }%
+ {}%
+}
+
+%CALC KEYS, WITH LUA
+\if@xelua
+
+\NewDocumentCommand\CalcKeyNwks{ s m }{%
+ \IfBooleanT{#1}{\bgroup\bfseries}%
+ \setsepchar{+}%
+ \readlist*\listkeysnwks{#2}%
+ \foreachitem\lettre\in\listkeysnwks{%
+ \IfStrEqCase{\lettre}{%
+ {left}{{\fontkeyNWKS L}}%
+ {right}{{\fontkeyNWKS R}}%
+ {up}{{\fontkeyNWKS U}}%
+ {down}{{\fontkeyNWKS D}}%
+ {home}{{\fontkeyNWKS H}}%
+ {power}{{\fontkeyNWKS P}}%
+ {ok}{{\fontkeyNWKS O}}%
+ {back}{{\fontkeyNWKS B}}%
+ {shift}{{\fontkeyNWKS S}}%
+ {alpha}{{\fontkeyNWKS A}}%
+ {xnt}{{\fontkeyNWKS x}}%
+ {var}{{\fontkeyNWKS V}}%
+ {tools}{{\fontkeyNWKS T}}%
+ {clear}{{\fontkeyNWKS d}}%
+ {exp}{{\fontkeyNWKS e}}%
+ {ln}{{\fontkeyNWKS l}}%
+ {log}{{\fontkeyNWKS g}}%
+ {i}{{\fontkeyNWKS i}}%
+ {virg}{{\fontkeyNWKS ,}}%
+ {comma}{{\fontkeyNWKS ,}}%
+ {pow}{{\fontkeyNWKS p}}%
+ {sin}{{\fontkeyNWKS s}}%
+ {cos}{{\fontkeyNWKS c}}%
+ {tan}{{\fontkeyNWKS t}}%
+ {pi}{{\fontkeyNWKS n}}%
+ {sqrt}{{\fontkeyNWKS r}}%
+ {sqr}{{\fontkeyNWKS q}}%
+ {0}{{\fontkeyNWKS 0}}%
+ {1}{{\fontkeyNWKS 1}}%
+ {2}{{\fontkeyNWKS 2}}%
+ {3}{{\fontkeyNWKS 3}}%
+ {4}{{\fontkeyNWKS 4}}%
+ {5}{{\fontkeyNWKS 5}}%
+ {6}{{\fontkeyNWKS 6}}%
+ {7}{{\fontkeyNWKS 7}}%
+ {8}{{\fontkeyNWKS 8}}%
+ {9}{{\fontkeyNWKS 9}}%
+ {dot}{{\fontkeyNWKS .}}%
+ {plus}{{\fontkeyNWKS +}}%
+ {x10p}{{\fontkeyNWKS E}}%
+ {minus}{{\fontkeyNWKS -}}%
+ {lp}{{\fontkeyNWKS (}}%
+ {rp}{{\fontkeyNWKS )}}%
+ {ans}{{\fontkeyNWKS a}}%
+ {div}{{\fontkeyNWKS /}}%
+ {exe}{{\fontkeyNWKS X}}%
+ {times}{{\fontkeyNWKS *}}%
+ }%
+ }%
+ \IfBooleanT{#1}{\egroup}%
+}%
+
+\NewDocumentCommand\CalcKeyCasioCW{ m }{%
+ \setsepchar{+}%
+ \readlist*\listkeyscasiocw{#1}%
+ \foreachitem\lettre\in\listkeyscasiocw{%
+ \IfStrEqCase{\lettre}{%
+ {on}{{\fontkeyCASIOcw W}}%
+ {home}{{\fontkeyCASIOcw w}}%
+ {ok}{{\fontkeyCASIOcw |}}%
+ {up}{{\fontkeyCASIOcw E}}%
+ {down}{{\fontkeyCASIOcw R}}%
+ {left}{{\fontkeyCASIOcw !}}%
+ {right}{{\fontkeyCASIOcw \$}}%
+ {pgup}{{\fontkeyCASIOcw \%}}%
+ {pgdown}{{\fontkeyCASIOcw \&}}%
+ {config}{{\fontkeyCASIOcw L}}%
+ {back}{{\fontkeyCASIOcw `}}%
+ %next
+ {shift}{{\fontkeyCASIOcw q}}%
+ {var}{{\fontkeyCASIOcw '}}%
+ {fx}{{\fontkeyCASIOcw Q}}%
+ {ctlg}{{\fontkeyCASIOcw T}}%
+ {tools}{{\fontkeyCASIOcw I}}%
+ %next
+ {x}{{\fontkeyCASIOcw [}}%
+ {frac}{{\fontkeyCASIOcw a}}%
+ {sqrt}{{\fontkeyCASIOcw s}}%
+ {pow}{{\fontkeyCASIOcw \char"005E}}%
+ {sqr}{{\fontkeyCASIOcw d}}%
+ {exp}{{\fontkeyCASIOcw H}}%
+ {comma}{{\fontkeyCASIOcw \#}}%
+ {virg}{{\fontkeyCASIOcw \#}}%
+ {sin}{{\fontkeyCASIOcw j}}%
+ {cos}{{\fontkeyCASIOcw k}}%
+ {tan}{{\fontkeyCASIOcw l}}%
+ {lp}{{\fontkeyCASIOcw (}}%
+ {rp}{{\fontkeyCASIOcw )}}%
+ %next
+ {7}{{\fontkeyCASIOcw 7}}%
+ {8}{{\fontkeyCASIOcw 8}}%
+ {9}{{\fontkeyCASIOcw 9}}%
+ {del}{{\fontkeyCASIOcw o}}%
+ {ac}{{\fontkeyCASIOcw C}}%
+ {4}{{\fontkeyCASIOcw 4}}%
+ {5}{{\fontkeyCASIOcw 5}}%
+ {6}{{\fontkeyCASIOcw 6}}%
+ {times}{{\fontkeyCASIOcw O}}%
+ {div}{{\fontkeyCASIOcw P}}%
+ {1}{{\fontkeyCASIOcw 1}}%
+ {2}{{\fontkeyCASIOcw 2}}%
+ {3}{{\fontkeyCASIOcw 3}}%
+ {plus}{{\fontkeyCASIOcw +}}%
+ {minus}{{\fontkeyCASIOcw p}}%
+ {0}{{\fontkeyCASIOcw 0}}%
+ {dot}{{\fontkeyCASIOcw .}}%
+ {x10p}{{\fontkeyCASIOcw K}}%
+ {fmt}{{\fontkeyCASIOcw n}}%
+ {exe}{{\fontkeyCASIOcw B}}%
+ %next
+ {semicol}{{\fontkeyCASIOcw f}}%
+ {ptvirg}{{\fontkeyCASIOcw f}}%
+ {ans}{{\fontkeyCASIOcw M}}%
+ {rep}{{\fontkeyCASIOcw u}}%
+ }%
+ }%
+}%
+
+\NewDocumentCommand\CalcKeyCasioFX{ m }{%
+ \setsepchar{+}%
+ \readlist*\listkeyscasiofx{#1}%
+ \foreachitem\lettre\in\listkeyscasiofx{%
+ \IfStrEqCase{\lettre}{%
+ {F1}{{\fontkeyCASIOfx q}}%
+ {F2}{{\fontkeyCASIOfx w}}%
+ {F3}{{\fontkeyCASIOfx e}}%
+ {F4}{{\fontkeyCASIOfx r}}%
+ {F5}{{\fontkeyCASIOfx y}}%
+ {F6}{{\fontkeyCASIOfx u}}%
+ {up}{{\fontkeyCASIOfx B}}%
+ {down}{{\fontkeyCASIOfx N}}%
+ {left}{{\fontkeyCASIOfx !}}%
+ {right}{{\fontkeyCASIOfx \$}}%
+ {shift}{{\fontkeyCASIOfx L}}%
+ {optn}{{\fontkeyCASIOfx i}}%
+ {vars}{{\fontkeyCASIOfx o}}%
+ {menu}{{\fontkeyCASIOfx p}}%
+ {alpha}{{\fontkeyCASIOfx a}}%
+ {sqr}{{\fontkeyCASIOfx s}}%
+ {pow}{{\fontkeyCASIOfx \char"005E}}%
+ {exit}{{\fontkeyCASIOfx d}}%
+ {xtt}{{\fontkeyCASIOfx f}}%
+ {log}{{\fontkeyCASIOfx g}}%
+ {ln}{{\fontkeyCASIOfx G}}%
+ {sin}{{\fontkeyCASIOfx h}}%
+ {cos}{{\fontkeyCASIOfx j}}%
+ {tan}{{\fontkeyCASIOfx k}}%
+ {frac}{{\fontkeyCASIOfx ;}}%
+ {sd}{{\fontkeyCASIOfx v}}%
+ {lp}{{\fontkeyCASIOfx (}}%
+ {rp}{{\fontkeyCASIOfx )}}%
+ {comma}{{\fontkeyCASIOfx ,}}%
+ {virg}{{\fontkeyCASIOfx ,}}%
+ {sto}{{\fontkeyCASIOfx b}}%
+ {7}{{\fontkeyCASIOfx 7}}%
+ {8}{{\fontkeyCASIOfx 8}}%
+ {9}{{\fontkeyCASIOfx 9}}%
+ {del}{{\fontkeyCASIOfx P}}%
+ {acon}{{\fontkeyCASIOfx O}}%
+ {4}{{\fontkeyCASIOfx 4}}%
+ {5}{{\fontkeyCASIOfx 5}}%
+ {6}{{\fontkeyCASIOfx 6}}%
+ {times}{{\fontkeyCASIOfx m}}%
+ {div}{{\fontkeyCASIOfx M}}%
+ {1}{{\fontkeyCASIOfx 1}}%
+ {2}{{\fontkeyCASIOfx 2}}%
+ {3}{{\fontkeyCASIOfx 3}}%
+ {plus}{{\fontkeyCASIOfx +}}%
+ {minus}{{\fontkeyCASIOfx -}}%
+ {0}{{\fontkeyCASIOfx 0}}%
+ {dot}{{\fontkeyCASIOfx .}}%
+ {x10p}{{\fontkeyCASIOfx :}}%
+ {sminus}{{\fontkeyCASIOfx n}}%
+ {exe}{{\fontkeyCASIOfx l}}%
+ }%
+ }%
+}%
+
+\NewDocumentCommand\CalcKeyTIfr{ m }{%
+ \setsepchar{+}%
+ \readlist*\listkeystiqt{#1}%
+ \foreachitem\lettre\in\listkeystiqt{%
+ \IfStrEqCase{\lettre}{%
+ {fx}{{\fontkeyTIfr o}}%
+ {fenetre}{{\fontkeyTIfr p}}%
+ {zoom}{{\fontkeyTIfr q}}%
+ {trace}{{\fontkeyTIfr r}}%
+ {graphe}{{\fontkeyTIfr s}}%
+ {2nde}{{\fontkeyTIfr y}}%
+ {mode}{{\fontkeyTIfr z}}%
+ {suppr}{{\fontkeyTIfr \char"007B}}%
+ {up}{{\fontkeyTIfr \char"007D}}%
+ {down}{{\fontkeyTIfr \char"2020}}%
+ {left}{{\fontkeyTIfr \char"007C}}%
+ {right}{{\fontkeyTIfr \char"007E}}%
+ {alpha}{{\fontkeyTIfr \char"0192}}%
+ {xttn}{{\fontkeyTIfr \char"201E}}%
+ {stats}{{\fontkeyTIfr \char"2026}}%
+ {math}{{\fontkeyTIfr \char"00BB}}%
+ {matrice}{{\fontkeyTIfr \char"00BE}}%
+ {prgm}{{\fontkeyTIfr \char"00BC}}%
+ {var}{{\fontkeyTIfr \char"00BD}}%
+ {annul}{{\fontkeyTIfr \char"2018}}%
+ {fmt}{{\fontkeyTIfr \char"2014}}%
+ {trig}{{\fontkeyTIfr \char"02DC}}%
+ {resol}{{\fontkeyTIfr \char"2122}}%
+ {frac}{{\fontkeyTIfr \char"0161}}%
+ {pow}{{\fontkeyTIfr \char"203A}}%
+ {sqr}{{\fontkeyTIfr \char"00A1}}%
+ {virg}{{\fontkeyTIfr \char"00A2}}%
+ {lp}{{\fontkeyTIfr \char"00A3}}%
+ {rp}{{\fontkeyTIfr \char"00A4}}%
+ {div}{{\fontkeyTIfr \char"00A5}}%
+ {log}{{\fontkeyTIfr \char"00AB}}%
+ {7}{{\fontkeyTIfr \char"00AC}}%
+ {8}{{\fontkeyTIfr \char"00AA}}%
+ {9}{{\fontkeyTIfr \char"00AE}}%
+ {times}{{\fontkeyTIfr \char"00AF}}%
+ {ln}{{\fontkeyTIfr \char"00B5}}%
+ {4}{{\fontkeyTIfr \char"00B6}}%
+ {5}{{\fontkeyTIfr \char"00B7}}%
+ {6}{{\fontkeyTIfr \char"00B8}}%
+ {minus}{{\fontkeyTIfr \char"00B9}}%
+ {sto}{{\fontkeyTIfr \char"00BF}}%
+ {1}{{\fontkeyTIfr \char"00C0}}%
+ {2}{{\fontkeyTIfr \char"00C1}}%
+ {3}{{\fontkeyTIfr \char"00C2}}%
+ {plus}{{\fontkeyTIfr \char"00C3}}%
+ {on}{{\fontkeyTIfr \char"00C9}}%
+ {0}{{\fontkeyTIfr \char"00CA}}%
+ {dot}{{\fontkeyTIfr \char"00CB}}%
+ {sminus}{{\fontkeyTIfr \char"00CC}}%
+ {entrer}{{\fontkeyTIfr \char"00CD}}%
+ %next
+ {apps}{{\fontkeyTI \char"0152}}%
+ {inv}{{\fontkeyTI \char"2014}}%
+ {sin}{{\fontkeyTI \char"02DC}}%
+ {cos}{{\fontkeyTI \char"2122}}%
+ {tan}{{\fontkeyTI \char"0161}}%
+ }%
+ }%
+}%
+
+\NewDocumentCommand\CalcKeyTI{ m }{%
+ \setsepchar{+}%
+ \readlist*\listkeystien{#1}%
+ \foreachitem\lettre\in\listkeystien{%
+ \IfStrEqCase{\lettre}{%
+ {y}{{\fontkeyTI o}}%
+ {window}{{\fontkeyTI p}}%
+ {zoom}{{\fontkeyTI q}}%
+ {trace}{{\fontkeyTI r}}%
+ {graph}{{\fontkeyTI s}}%
+ {2nd}{{\fontkeyTI y}}%
+ {mode}{{\fontkeyTI z}}%
+ {del}{{\fontkeyTI \char"007B}}%
+ {up}{{\fontkeyTI \char"007D}}%
+ {down}{{\fontkeyTI \char"2020}}%
+ {left}{{\fontkeyTI \char"007C}}%
+ {right}{{\fontkeyTI \char"007E}}%
+ {alpha}{{\fontkeyTI \char"0192}}%
+ {xttn}{{\fontkeyTI \char"201E}}%
+ {stat}{{\fontkeyTI \char"2026}}%
+ {math}{{\fontkeyTI \char"00BB}}%
+ {apps}{{\fontkeyTI \char"0152}}%
+ {prgm}{{\fontkeyTI \char"00BC}}%
+ {vars}{{\fontkeyTI \char"00BD}}%
+ {clear}{{\fontkeyTI \char"2018}}%
+ {inv}{{\fontkeyTI \char"2014}}%
+ {sin}{{\fontkeyTI \char"02DC}}%
+ {cos}{{\fontkeyTI \char"2122}}%
+ {tan}{{\fontkeyTI \char"0161}}%
+ {pow}{{\fontkeyTI \char"203A}}%
+ {sqr}{{\fontkeyTI \char"00A1}}%
+ {comma}{{\fontkeyTI \char"00A2}}%
+ {lp}{{\fontkeyTI \char"00A3}}%
+ {rp}{{\fontkeyTI \char"00A4}}%
+ {div}{{\fontkeyTI \char"00A5}}%
+ {log}{{\fontkeyTI \char"00AB}}%
+ {7}{{\fontkeyTI \char"00AC}}%
+ {8}{{\fontkeyTI \char"00AA}}%
+ {9}{{\fontkeyTI \char"00AE}}%
+ {times}{{\fontkeyTI \char"00AF}}%
+ {ln}{{\fontkeyTI \char"00B5}}%
+ {4}{{\fontkeyTI \char"00B6}}%
+ {5}{{\fontkeyTI \char"00B7}}%
+ {6}{{\fontkeyTI \char"00B8}}%
+ {minus}{{\fontkeyTI \char"00B9}}%
+ {sto}{{\fontkeyTI \char"00BF}}%
+ {1}{{\fontkeyTI \char"00C0}}%
+ {2}{{\fontkeyTI \char"00C1}}%
+ {3}{{\fontkeyTI \char"00C2}}%
+ {plus}{{\fontkeyTI \char"00C3}}%
+ {on}{{\fontkeyTI \char"00C9}}%
+ {0}{{\fontkeyTI \char"00CA}}%
+ {dot}{{\fontkeyTI \char"00CB}}%
+ {sminus}{{\fontkeyTI \char"00CC}}%
+ {enter}{{\fontkeyTI \char"00CD}}%
+ }%
+ }%
+}%
+
+\fi
+
+%SHORTCUTS (with pdf files, not included)
+\@ifpackageloaded{inlinegraphicx}{}{\RequirePackage{inlinegraphicx}}
+\NewDocumentCommand\inckeycalc{ s O{} m m }{%
+ \IfFileExists{calcitems_#3_#4.pdf}%
+ {%
+ \IfBooleanTF{#1}{\includegraphics[#2]{calcitems_#3_#4.pdf}}{\inlinegraphics[#2]{calcitems_#3_#4.pdf}}%
+ }%
+ {%
+ \IfBooleanTF{#1}{\includegraphics[#2]{example-image.pdf}}{\inlinegraphics[#2]{example-image.pdf}}%
+ }%
+}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/calxxxx-yyyy/calxxxx-yyyy-doc.tex b/Master/texmf-dist/tex/latex/calxxxx-yyyy/calxxxx-yyyy-doc.tex
index 178f0077bba..9051a773caf 100644
--- a/Master/texmf-dist/tex/latex/calxxxx-yyyy/calxxxx-yyyy-doc.tex
+++ b/Master/texmf-dist/tex/latex/calxxxx-yyyy/calxxxx-yyyy-doc.tex
@@ -1,7 +1,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-11-01]
\ProvidesFile{calxxxx-yyyy-doc.tex}%
- [2024-01-01 v20.24a ReadMe for calxxxx-yyyy.tex]
-\documentclass{article}[2023/05/17]% v1.4n
+ [2025-01-01 v20.25a ReadMe for calxxxx-yyyy.tex]
+\documentclass{article}[2024/06/29]% v1.4n
\usepackage[%
extension=pdf,%
plainpages=false,%
@@ -16,13 +16,13 @@
pdfstartview=Fit,%
pdfpagelayout=SinglePage,%
bookmarksopen=true%
-]{hyperref}[2023-11-26]% v7.01g
+]{hyperref}[2024-11-05]% v7.01l
\pagestyle{empty}
\begin{document}
\section*{\texttt{ReadMe} for cal$xxxx-yyyy$.tex}
-Version: v20.24a\newline
-Date: 2024-01-01\newline
-© 2010 - 2024 H.-Martin Münch (Martin dot Muench at Uni-Bonn dot de)\newline
+Version: v20.25a\newline
+Date: 2025-01-01\newline
+© 2010 -- 2025 H.-Martin Münch (Martin dot Muench at Uni-Bonn dot de)\newline
\noindent This file explains the use of the \textsf{calxxxx-yyyy.tex} file,
available at\newline
@@ -34,7 +34,7 @@ the \textsf{array}, \textsf{babel}, and \textsf{geometry} packages.
\hspace*{-1.98471pt}To print a calendar for some given years,
use the \textsf{calxxxx-yyyy.tex} file. \LaTeXe{} it, type in the year to start with
-(for example 2024), the year to end with (for example 2041), and the calendars
+(for example 2025), the year to end with (for example 2042), and the calendars
for those years are produced.
It is possible to print the calendars in different languages. Currently
diff --git a/Master/texmf-dist/tex/latex/calxxxx-yyyy/calxxxx-yyyy.tex b/Master/texmf-dist/tex/latex/calxxxx-yyyy/calxxxx-yyyy.tex
index 5c5f04be79c..59b7f653c41 100644
--- a/Master/texmf-dist/tex/latex/calxxxx-yyyy/calxxxx-yyyy.tex
+++ b/Master/texmf-dist/tex/latex/calxxxx-yyyy/calxxxx-yyyy.tex
@@ -1,8 +1,8 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{calxxxx-yyyy.tex}%
- [2024/01/01 v20.24a Print a calendar for a group of years (HMM)]
+ [2025/01/01 v20.25a Print a calendar for a group of years (HMM)]
%
-% Copyright © 2010 - 2024 H.-Martin Münch (Martin dot Muench at Uni-Bonn dot de)
+% Copyright © 2010 - 2025 H.-Martin Münch (Martin dot Muench at Uni-Bonn dot de)
% Portions of code copyrighted by Slobodan Janković.
% This file was invented in 1999 by Slobodan Janković.
% I was not able to reach him at slobodan@archimed.filfak.ni.ac.yu
@@ -37,21 +37,21 @@
% This work consists of the main source files
% calxxxx-yyyy.tex, README, and calxxxx-yyyy-doc.tex,
% and the derived files
-% calxxxx-yyyy-doc.pdf, cal2024-2041_DE.pdf, cal2024-2041_DK.pdf,
-% and cal2024-2041_EN.pdf.
+% calxxxx-yyyy-doc.pdf, cal2025-2042_DE.pdf, cal2025-2042_DK.pdf,
+% and cal2025-2042_EN.pdf.
%
% In memoriam
-% Claudia Simone Barth + 1996/01/30
-% Tommy Münch + 2014/01/02
-% Hans-Klaus Münch + 2014/08/24
+% Claudia Simone Barth + 1996-01-30
+% Tommy Münch + 2014-01-02
+% Hans-Klaus Münch + 2014-08-24
%
-\documentclass[12pt,a4paper,english,danish,german]{report}[2023/05/17]% v1.4n
+\documentclass[12pt,a4paper,danish,german,english]{report}[2024/06/29]% v1.4n
% In the options you need to place the desired language at the last position.
% Sorry for the inconvenience.
-\usepackage{babel}[2023/12/10]% v3.99
-\selectlanguage{german}% Also possible: 'english', 'german', or 'danish'
+\usepackage{babel}[2024/12/21]% v24.15
+\selectlanguage{english}% Also possible: 'english', 'german', or 'danish'
\usepackage[a4paper,textwidth=\paperwidth,textheight=\paperheight]{geometry}[2020/01/02]% v5.9
-\usepackage{array}[2023/10/16]% v2.5g
+\usepackage{array}[2024/10/17]% v2.6g
\listfiles
\thispagestyle{empty}
@@ -341,7 +341,7 @@
\message{^^J}\message{^^J}%
\newline%
\tiny{\indent Original calxxxx.\TeX{} \copyright{} 1999-12-19 Slobodan Jankovi\'{c}; %
-these calendars produced with calxxxx-yyyy 2024-01-01 v20.24a by \texttt{Martin.Muench@Uni-Bonn.de};%
+these calendars produced with calxxxx-yyyy 2025-01-01 v20.25a by \texttt{Martin.Muench@Uni-Bonn.de};%
\newline\indent%
\iflanguage{english}{English by Slobodan Jankovi\'{c}.}{%
\iflanguage{german}{Deutsch von H.-Martin M\"{u}nch.}{%
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/cfr-lm.sty b/Master/texmf-dist/tex/latex/cfr-lm/cfr-lm.sty
index db98421f720..f4b718e9d45 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/cfr-lm.sty
+++ b/Master/texmf-dist/tex/latex/cfr-lm/cfr-lm.sty
@@ -1,182 +1,217 @@
-%% Copyright 2015 Clea F. Rees
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Clea F. Rees.
-%
-% This work consists of all files listed in manifest.txt.
-%
-% Parts of this file are based on lmodern.sty which is included with
-% the Latin Modern fonts released by GUST and available from
-% http://www.gust.org.pl/projects/e-foundry/latin-modern.
-%
-% Improvements to this file in v1.2 (unpublished) and v1.3 owe almost
-% everything to Enrico Gregorio.
-%
-% v1.4 adds family-specific support for microtype. This draws also on the
-% documentation for the microtype package and MinionPro.sty. MinionPro.sty
-% is available as part of the minionpro package and can be obtain from
-% http://mirror.ctan.org/fonts/minionpro. MinionPro.sty is in the public
-% domain. The documentation for microtype is available in English and German
-% from http://ctan.org/pkg/microtype. It is part of the microtype package which
-% is itself licensed under the LPPL.
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{cfr-lm}[2015/02/01 v1.5 cfr-lm for use with LatinModern v2.004]
-\RequirePackage{xkeyval}
-\RequirePackage[T1]{fontenc}
-\RequirePackage{textcomp}
-\RequirePackage{nfssext-cfr}
-
-%:boolkeys for roman osf/lf
-\define@boolkey[cfrlm]{rm}{oldstyle}[true]{%
- \ifcfrlm@rm@oldstyle
- \def\cfrlm@rmol{j}%
- \else
- \def\cfrlm@rmol{}%
- \fi}
-\define@boolkey[cfrlm]{rm}{lining}[true]{%
- \ifcfrlm@rm@lining
- \def\cfrlm@rmol{}%
- \else
- \def\cfrlm@rmol{j}%
- \fi}
-
-%:boolkeys for roman prop/tab figures
-\define@boolkey[cfrlm]{rm}{proportional}[true]{%
- \ifcfrlm@rm@proportional
- \def\cfrlm@rmpt{2}%
- \else
- \def\cfrlm@rmpt{}%
- \fi}
-\define@boolkey[cfrlm]{rm}{tabular}[true]{%
- \ifcfrlm@rm@tabular
- \def\cfrlm@rmpt{}%
- \else
- \def\cfrlm@rmpt{2}%
- \fi}
-
-%:boolkeys for sans osf/lf
-\define@boolkey[cfrlm]{sf}{oldstyle}[true]{%
- \ifcfrlm@sf@oldstyle
- \def\cfrlm@sfol{j}%
- \else
- \def\cfrlm@sfol{}%
- \fi}
-\define@boolkey[cfrlm]{sf}{lining}[true]{%
- \ifcfrlm@sf@lining
- \def\cfrlm@sfol{}%
- \else
- \def\cfrlm@sfol{j}%
- \fi}
-
-%:boolkeys for sans prop/tab figures
-\define@boolkey[cfrlm]{sf}{proportional}[true]{%
- \ifcfrlm@sf@proportional
- \def\cfrlm@sfpt{2}%
- \else
- \def\cfrlm@sfpt{}%
- \fi}
-\define@boolkey[cfrlm]{sf}{tabular}[true]{%
- \ifcfrlm@sf@tabular
- \def\cfrlm@sfpt{}%
- \else
- \def\cfrlm@sfpt{2}%
- \fi}
-
-%:boolkeys for typewriter osf/lf
-\define@boolkey[cfrlm]{tt}{oldstyle}[true]{%
- \ifcfrlm@tt@oldstyle
- \def\cfrlm@ttol{j}%
- \else
- \def\cfrlm@ttol{}%
- \fi}
-\define@boolkey[cfrlm]{tt}{lining}[true]{%
- \ifcfrlm@tt@lining
- \def\cfrlm@ttol{}%
- \else
- \def\cfrlm@ttol{j}%
- \fi}
-
-%:boolkeys for typewriter prop/tab figures
-\define@boolkey[cfrlm]{tt}{proportional}[true]{%
- \ifcfrlm@tt@proportional
- \def\cfrlm@ttpt{2}%
- \else
- \def\cfrlm@ttpt{}%
- \fi}
-\define@boolkey[cfrlm]{tt}{tabular}[true]{%
- \ifcfrlm@tt@tabular
- \def\cfrlm@ttpt{}%
- \else
- \def\cfrlm@ttpt{2}%
- \fi}
-
-%:boolkeys for typewriter mono/variable width
-\define@boolkey[cfrlm]{tt}{monowidth}[true]{%
- \ifcfrlm@tt@monowidth
- \def\cfrlm@ttmv{t}%
- \else
- \def\cfrlm@ttmv{v}%
- \fi}
-\define@boolkey[cfrlm]{tt}{variable}[true]{%
- \ifcfrlm@tt@variable
- \def\cfrlm@ttmv{v}%
- \else
- \def\cfrlm@ttmv{t}%
- \fi}
-
-%:options for roman
-\define@key{cfr-lm.sty}{rm}{%
- \setkeys[cfrlm]{rm}{#1}}
-
-%:options for sans
-\define@key{cfr-lm.sty}{sf}{%
- \setkeys[cfrlm]{sf}{#1}}
-
-%:options for typewriter
-\define@key{cfr-lm.sty}{tt}{%
- \setkeys[cfrlm]{tt}{#1}}
+%%
+%% This is file `cfr-lm.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cfr-lm.dtx (with options: `sty')
+%% Copyright (C) 2008-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% cfr-lm. You may however distribute the package cfr-lm without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%:note that this option does nothing unless \qtfont is defined appropriately
-\define@boolkey{cfr-lm.sty}[cfrlm@]{qt}[true]{%
- \relax}
-%:defaults to ensure everything is defined to something
-\ExecuteOptionsX{rm={oldstyle,proportional},sf={oldstyle,proportional},tt={oldstyle,proportional,variable},qt=false}
-%\ExecuteOptionsX{rm={lining,tabular},sf={oldstyle,proportional},tt={oldstyle,proportional,variable},qt=false}
-%:options override defaults
-\ProcessOptionsX
-
-%:make LM default for all families, implementing options for each
-\renewcommand{\rmdefault}{clm\cfrlm@rmpt\cfrlm@rmol}
-\renewcommand{\sfdefault}{clm\cfrlm@sfpt\cfrlm@sfol s}
-\renewcommand{\ttdefault}{clm\cfrlm@ttpt\cfrlm@ttol\cfrlm@ttmv}
-
-%:handle the qt option, failing gracefully if somebody has enabled the option without defining \qtfont appropriately
-\ifcfrlm@qt
- \@ifundefined{qtfont}{%
- \PackageWarning{cfr-lm}{Option 'qt' cannot be implemented unless\MessageBreak
- the command qtfont is defined appropriately. This is not\MessageBreak
- done automatically to maximise compatibility with other\MessageBreak
- classes and packages. The suggested use is to have qtfont\MessageBreak
- redefine a command such as quotefont which is initially\MessageBreak
- set to some reasonable default and is then used in the\MessageBreak
- definition of the quote and/or quotation environments.\MessageBreak
- Since these are class and package dependent, it cannot\MessageBreak
- be done by a font package and the option is ignored here.}}{%
- \qtfont{\qtstyle}}
-\fi
-
-%:based on lmodern.sty
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{svn-prov}
+\ProvidesPackageSVN[\filebase.sty]{$Id: cfr-lm.dtx 10371 2024-09-20 15:51:48Z cfrees $}[v1.7 \revinfo][Extended support for Latin Modern 2.004]
+\DefineFileInfoSVN[clm]
+\RequirePackage[T1]{fontenc}
+\RequirePackage{nfssext-cfr}[2024/01/01]
+\IfFormatAtLeastTF {2020-02-02}{%
+ \DeclareEncodingSubset{TS1}{clm}{1}%
+ \DeclareEncodingSubset{TS1}{clm2}{1}%
+ \DeclareEncodingSubset{TS1}{clm2d}{1}%
+ \DeclareEncodingSubset{TS1}{clm2dj}{1}%
+ \DeclareEncodingSubset{TS1}{clm2j}{1}%
+ \DeclareEncodingSubset{TS1}{clm2jqs}{1}%
+ \DeclareEncodingSubset{TS1}{clm2js}{1}%
+ \DeclareEncodingSubset{TS1}{clm2jt}{1}%
+ \DeclareEncodingSubset{TS1}{clm2jv}{1}%
+ \DeclareEncodingSubset{TS1}{clm2qs}{1}%
+ \DeclareEncodingSubset{TS1}{clm2s}{1}%
+ \DeclareEncodingSubset{TS1}{clm2t}{1}%
+ \DeclareEncodingSubset{TS1}{clm2v}{1}%
+ \DeclareEncodingSubset{TS1}{clmd}{1}%
+ \DeclareEncodingSubset{TS1}{clmdj}{1}%
+ \DeclareEncodingSubset{TS1}{clmj}{1}%
+ \DeclareEncodingSubset{TS1}{clmjqs}{1}%
+ \DeclareEncodingSubset{TS1}{clmjs}{1}%
+ \DeclareEncodingSubset{TS1}{clmjt}{1}%
+ \DeclareEncodingSubset{TS1}{clmjv}{1}%
+ \DeclareEncodingSubset{TS1}{clmqs}{1}%
+ \DeclareEncodingSubset{TS1}{clms}{1}%
+ \DeclareEncodingSubset{TS1}{clmt}{1}%
+ \DeclareEncodingSubset{TS1}{clmv}{1}%
+}{%
+ \RequirePackage{textcomp}}
+\UndeclareTextCommand{\textperthousand}{T1}
+\ExplSyntaxOn
+%%
+\bool_new:N \l__clm_rm_osf_bool
+\bool_new:N \l__clm_rm_prop_bool
+\bool_new:N \l__clm_sf_osf_bool
+\bool_new:N \l__clm_sf_prop_bool
+\bool_new:N \l__clm_tt_osf_bool
+\bool_new:N \l__clm_tt_prop_bool
+\bool_new:N \l__clm_tt_mono_bool
+\bool_new:N \l__clm_qt_bool
+\keys_define:nn { clm }
+{
+ rm / oldstyle .bool_set:N = \l__clm_rm_osf_bool,
+ rm / oldstyle .default:n = true,
+ rm / oldstyle .initial:n = true,
+ rm / osf .bool_set:N = \l__clm_rm_osf_bool,
+ rm / osf .default:n = true,
+ rm / lining .bool_set_inverse:N = \l__clm_rm_osf_bool,
+ rm / lining .default:n = true,
+ rm / lf .bool_set_inverse:N = \l__clm_rm_osf_bool,
+ rm / lf .default:n = true,
+ rm / proportional .bool_set:N = \l__clm_rm_prop_bool,
+ rm / proportional .default:n = true,
+ rm / proportional .initial:n = true,
+ rm / prop .bool_set:N = \l__clm_rm_prop_bool,
+ rm / prop .default:n = true,
+ rm / tabular .bool_set_inverse:N = \l__clm_rm_prop_bool,
+ rm / tabular .default:n = true,
+ rm / tab .bool_set_inverse:N = \l__clm_rm_prop_bool,
+ rm / tab .default:n = true,
+ sf / oldstyle .bool_set:N = \l__clm_sf_osf_bool,
+ sf / oldstyle .default:n = true,
+ sf / oldstyle .initial:n = true,
+ sf / osf .bool_set:N = \l__clm_sf_osf_bool,
+ sf / osf .default:n = true,
+ sf / lining .bool_set_inverse:N = \l__clm_sf_osf_bool,
+ sf / lining .default:n = true,
+ sf / lf .bool_set_inverse:N = \l__clm_sf_osf_bool,
+ sf / lf .default:n = true,
+ sf / proportional .bool_set:N = \l__clm_sf_prop_bool,
+ sf / proportional .default:n = true,
+ sf / proportional .initial:n = true,
+ sf / prop .bool_set:N = \l__clm_sf_prop_bool,
+ sf / prop .default:n = true,
+ sf / tabular .bool_set_inverse:N = \l__clm_sf_prop_bool,
+ sf / tabular .default:n = true,
+ sf / tab .bool_set_inverse:N = \l__clm_sf_prop_bool,
+ sf / tab .default:n = true,
+ tt / oldstyle .bool_set:N = \l__clm_tt_osf_bool,
+ tt / oldstyle .default:n = true,
+ tt / oldstyle .initial:n = true,
+ tt / osf .bool_set:N = \l__clm_tt_osf_bool,
+ tt / osf .default:n = true,
+ tt / lining .bool_set_inverse:N = \l__clm_tt_osf_bool,
+ tt / lining .default:n = true,
+ tt / lf .bool_set_inverse:N = \l__clm_tt_osf_bool,
+ tt / lf .default:n = true,
+ tt / proportional .bool_set:N = \l__clm_tt_prop_bool,
+ tt / proportional .default:n = true,
+ tt / proportional .initial:n = true,
+ tt / prop .bool_set:N = \l__clm_tt_prop_bool,
+ tt / prop .default:n = true,
+ tt / tabular .bool_set_inverse:N = \l__clm_tt_prop_bool,
+ tt / tabular .default:n = true,
+ tt / tab .bool_set_inverse:N = \l__clm_tt_prop_bool,
+ tt / tab .default:n = true,
+ tt / monowidth .bool_set:N = \l__clm_tt_mono_bool,
+ tt / monowidth .default:n = true,
+ tt / monowidth .initial:n = false,
+ tt / mono .bool_set:N = \l__clm_tt_mono_bool,
+ tt / mono .default:n = true,
+ tt / variable .bool_set_inverse:N = \l__clm_tt_mono_bool,
+ tt / variable .default:n = true,
+ tt / var .bool_set_inverse:N = \l__clm_tt_mono_bool,
+ tt / var .default:n = true,
+ rm .code:n ={
+ \keys_set:nn { clm / rm } { #1 }
+ },
+ rm .value_required:n = true,
+ rm .usage:n = load,
+ sf .code:n ={
+ \keys_set:nn { clm / sf } { #1 }
+ },
+ sf .value_required:n = true,
+ sf .usage:n = load,
+ tt .code:n ={
+ \keys_set:nn { clm / tt } { #1 }
+ },
+ tt .value_required:n = true,
+ tt .usage:n = load,
+ qt .bool_set:N = \l__clm_qt_bool,
+ qt .default:n = true,
+ qt .initial:n = false,
+ qt .usage:n = load,
+}
+\providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion }
+\IfFormatAtLeastTF { 2022-06-01 }
+{
+ \ProcessKeyOptions [ clm ]
+}{
+ \RequirePackage { l3keys2e }
+ \ProcessKeysOptions { clm }
+}
+\IfFormatAtLeastTF { 2020-10-01 }{
+}{
+ \RequirePackage { xparse }
+ \providecommand \ExpandArgs [1]
+ { \cs_if_exist_use:c { exp_args:N #1 } }
+}
+\tl_gset:Ne \rmdefault
+{
+ clm \bool_if:NT \l__clm_rm_prop_bool { 2 }
+ \bool_if:NT \l__clm_rm_osf_bool { j }
+}
+\tl_gset:Ne \sfdefault
+{
+ clm \bool_if:NT \l__clm_sf_prop_bool { 2 }
+ \bool_if:NT \l__clm_sf_osf_bool { j } s
+}
+\tl_gset:Ne \ttdefault
+{
+ clm \bool_if:NT \l__clm_tt_prop_bool { 2 }
+ \bool_if:NT \l__clm_tt_osf_bool { j }
+ \bool_if:NTF \l__clm_tt_mono_bool { t } { v }
+}
+\hook_gput_code:nnn { begindocument } { . }
+{
+ \bool_if:NT \l__clm_qt_bool
+ {
+ \cs_if_exist:NTF { \qtfont }
+ {
+ \qtfont{\qtstyle}
+ }{
+ \PackageWarning{cfr-lm}
+ {
+ Option ~ 'qt' ~ cannot ~ be ~ implemented ~ unless \MessageBreak
+ '\backslash qtfont' ~ is ~ defined ~ appropriately. ~ This ~ is ~ not \MessageBreak
+ done ~ automatically ~ to ~ maximise ~ compatibility ~ with ~ other \MessageBreak
+ classes ~ and ~ packages. ~ The ~ suggested ~ use ~ is ~ to ~ have ~ '\backslash qtfont' \MessageBreak
+ redefine ~ a command ~ such ~ as ~ '\backslash quotefont' ~ which ~ is ~ initially \MessageBreak
+ set ~ to ~ some ~ reasonable ~ default ~ and ~ used ~ in ~ the \MessageBreak
+ definition ~ of ~ the ~ quote ~ and/or ~ quotation ~ environments. \MessageBreak
+ A ~ font ~ package ~ has ~ no ~ business ~ meddling ~ in ~ such \MessageBreak
+ things ~ so ~ I'm ~ going ~ to ~ ignore ~ this ~ option
+ }
+ }
+ }
+}
+\ExplSyntaxOff
\SetSymbolFont{operators} {normal}{OT1}{lmr} {m}{n}
\SetSymbolFont{letters} {normal}{OML}{lmm} {m}{it}
\SetSymbolFont{symbols} {normal}{OMS}{lmsy}{m}{n}
@@ -185,12 +220,10 @@
\SetSymbolFont{letters} {bold} {OML}{lmm} {b}{it}
\SetSymbolFont{symbols} {bold} {OMS}{lmsy}{b}{n}
\SetSymbolFont{largesymbols}{bold} {OMX}{lmex}{m}{n}
-
\DeclareFontSubstitution{OT1}{lmr}{m}{n}
\DeclareFontSubstitution{OML}{lmm}{m}{it}
\DeclareFontSubstitution{OMS}{lmsy}{m}{n}
\DeclareFontSubstitution{OMX}{lmex}{m}{n}
-
\SetMathAlphabet{\mathbf}{normal}{OT1}{lmr}{bx}{n}
\SetMathAlphabet{\mathsf}{normal}{OT1}{lmss}{m}{n}
\SetMathAlphabet{\mathit}{normal}{OT1}{lmr}{m}{it}
@@ -199,44 +232,40 @@
\SetMathAlphabet{\mathsf}{bold} {OT1}{lmss}{bx}{n}
\SetMathAlphabet{\mathit}{bold} {OT1}{lmr}{bx}{it}
\SetMathAlphabet{\mathtt}{bold} {OT1}{lmtt}{m}{n}
-
\def\mathsterling{\mathit{\mathchar"70BF}}
-
-%:new in v1.1
\DeclareRobustCommand{\dotdigitenc}{%
\not@math@alphabet\dotdigitenc\relax
\fontencoding{U}\selectfont}
\DeclareTextFontCommand{\textdde}{\dotdigitenc}
\newcommand*{\zeroslash}{\textdde{\char 250}}
-
-%:Partly from microtype docs; partly from MinionPro package
-%
-% We need to set up aliases for the font families created by cfr-lm so that
-% microtype recognises them as similar to Computer Modern Roman.
-%
-% T1 families in cfr-lm: clm clm2 clm2d clm2dj clm2j clm2jqs clm2js clm2jt
-% clm2jv clm2qs clm2s clm2t clm2v clmd clmdj clmj clmjqs clmjs clmjt clmjv
-% clmqs clms clmt clmv
-%
-% See variants set in nfssext-cfr
-%
-% Ref: http://tex.stackexchange.com/a/75440/39222
-\newcommand{\cfr@ffs}{% alias to cmr
- clm,clm2,clm2j,clmj,% roman
- clms,clm2js,clm2s,clmjs,% sans
- clmqs,clm2jqs,clm2qs,clmjqs%
-% clm2d,clm2dj,clmd,clmdj,% leave unaliased?
-% clm2jv,clmjv,clm2v,clmv,% leave unaliased?
-% clmt,clm2t,clmjt,clm2jt% leave unaliased?
+\ExplSyntaxOn
+\cs_new_nopar:Nn \__clm_microtype_hook:
+{
+ \clist_map_inline:nn
+ {
+ clm,clm2,clm2j,clmj,% roman
+ clms,clm2js,clm2s,clmjs,% sans
+ clmqs,clm2jqs,clm2qs,clmjqs%
+ % clm2d,clm2dj,clmd,clmdj,% leave unaliased?
+ % clm2jv,clmjv,clm2v,clmv,% leave unaliased?
+ % clmt,clm2t,clmjt,clm2jt% leave unaliased?
+ }{
+ \DeclareMicrotypeAlias { ##1 } { cmr }
}
-\gdef\cfrlm@MicroType@Aliases{%
- \@for \xx:=\cfr@ffs \do {%
- \DeclareMicrotypeAlias{\xx}{cmr}}%
+}
+\@ifpackageloaded{microtype}
+{
+ \__clm_microtype_hook:
+}{
+ \cs_if_free:cTF { Microtype@Hook }
+ {% MinionPro has \global before this
+ \cs_new_eq:NN \Microtype@Hook \__clm_microtype_hook:
+ }{
+ \g@addto@macro\Microtype@Hook{\__clm_microtype_hook:}
}
-\def\cfrlm@MT@Hook{\cfrlm@MicroType@Aliases}
-\@ifpackageloaded{microtype}{%
- \cfrlm@MT@Hook}{%
- \@ifundefined{Microtype@Hook}{%
- \let\Microtype@Hook\cfrlm@MT@Hook}{% MinionPro has \global before this
- \g@addto@macro\Microtype@Hook{\cfrlm@MT@Hook}}}
+}
+\ExplSyntaxOff
+%% end cfr-lm.sty
\endinput
+%%
+%% End of file `cfr-lm.sty'.
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clm.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clm.fd
index c3eebd8a758..6c08b949a34 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clm.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clm.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clm.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clm.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clm.]
\DeclareFontFamily{T1}{clm}{}
@@ -74,7 +74,8 @@
<-> clmbo8t10
}{}
-\DeclareFontShape{T1}{clm}{m}{si}{<->ssub * clm/m/scsl}{}
+\DeclareFontShape{T1}{clm}{m}{scit}{<->ssub * clm/m/scsl}{}
+\DeclareFontShape{T1}{clm}{m}{si}{<->ssub * clm/m/scit}{}
\DeclareFontShape{T1}{clm}{b}{n}{<->ssub * clm/bx/n}{}
\DeclareFontShape{T1}{clm}{bx}{sc}{<->ssub * clm/bx/n}{}
\DeclareFontShape{T1}{clm}{b}{sc}{<->ssub * clm/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2.fd
index a76b70eefee..836285f979c 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clm2.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clm2.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clm2.]
\DeclareFontFamily{T1}{clm2}{}
@@ -74,7 +74,8 @@
<-> clmb2o8t10
}{}
-\DeclareFontShape{T1}{clm2}{m}{si}{<->ssub * clm2/m/scsl}{}
+\DeclareFontShape{T1}{clm2}{m}{scit}{<->ssub * clm2/m/scsl}{}
+\DeclareFontShape{T1}{clm2}{m}{si}{<->ssub * clm2/m/scit}{}
\DeclareFontShape{T1}{clm2}{b}{n}{<->ssub * clm2/bx/n}{}
\DeclareFontShape{T1}{clm2}{bx}{sc}{<->ssub * clm2/bx/n}{}
\DeclareFontShape{T1}{clm2}{b}{sc}{<->ssub * clm2/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2d.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2d.fd
index 0844ef48c85..d710b8d3b6f 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2d.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2d.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clm2d.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clm2d.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clm2d.]
\DeclareFontFamily{T1}{clm2d}{\hyphenchar\font=45}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2dj.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2dj.fd
index aa3101bc4cb..385194bdce3 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2dj.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2dj.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clm2dj.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clm2dj.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clm2dj.]
\DeclareFontFamily{T1}{clm2dj}{\hyphenchar\font=45}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2j.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2j.fd
index 95be955b378..c77d15bda0b 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2j.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2j.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clm2j.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clm2j.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clm2j.]
\DeclareFontFamily{T1}{clm2j}{}
@@ -74,7 +74,8 @@
<-> clmb2jo8t10
}{}
-\DeclareFontShape{T1}{clm2j}{m}{si}{<->ssub * clm2j/m/scsl}{}
+\DeclareFontShape{T1}{clm2j}{m}{scit}{<->ssub * clm2j/m/scsl}{}
+\DeclareFontShape{T1}{clm2j}{m}{si}{<->ssub * clm2j/m/scit}{}
\DeclareFontShape{T1}{clm2j}{b}{n}{<->ssub * clm2j/bx/n}{}
\DeclareFontShape{T1}{clm2j}{bx}{sc}{<->ssub * clm2j/bx/n}{}
\DeclareFontShape{T1}{clm2j}{b}{sc}{<->ssub * clm2j/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2jqs.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2jqs.fd
index ab6cc5c9db8..90651b73895 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2jqs.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2jqs.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clm2jqs.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clm2jqs.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clm2jqs.]
\DeclareFontFamily{T1}{clm2jqs}{\hyphenchar\font=\m@ne}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2js.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2js.fd
index 92c96068d39..5c825ecd802 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2js.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2js.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clm2js.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clm2js.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clm2js.]
\DeclareFontFamily{T1}{clm2js}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2jt.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2jt.fd
index 689ad0ecfb7..63ca29588e9 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2jt.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2jt.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clm2jt.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clm2jt.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clm2jt.]
\DeclareFontFamily{T1}{clm2jt}{\hyphenchar\font=\m@ne}
@@ -57,7 +57,8 @@
}{}
\DeclareFontShape{T1}{clm2jt}{m}{ui}{<->ssub * clm2jt/m/it}{}
-\DeclareFontShape{T1}{clm2jt}{m}{si}{<->ssub * clm2jt/m/scsl}{}
+\DeclareFontShape{T1}{clm2jt}{m}{scit}{<->ssub * clm2jt/m/scsl}{}
+\DeclareFontShape{T1}{clm2jt}{m}{si}{<->ssub * clm2jt/m/scit}{}
\DeclareFontShape{T1}{clm2jt}{b}{n}{<->ssub * clm2jt/bx/n}{}
\DeclareFontShape{T1}{clm2jt}{bx}{sc}{<->ssub * clm2jt/bx/n}{}
\DeclareFontShape{T1}{clm2jt}{b}{sc}{<->ssub * clm2jt/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2jv.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2jv.fd
index e42a220ab56..20a096facb8 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2jv.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2jv.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clm2jv.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clm2jv.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clm2jv.]
\DeclareFontFamily{T1}{clm2jv}{\hyphenchar\font=\m@ne}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2qs.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2qs.fd
index cdc5a16a22b..bb99afb9419 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2qs.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2qs.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clm2qs.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clm2qs.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clm2qs.]
\DeclareFontFamily{T1}{clm2qs}{\hyphenchar\font=\m@ne}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2s.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2s.fd
index 005af0cd00d..3b742536929 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2s.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2s.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clm2s.fd}
- [2015/02/01 Fontinst v1.933 font definitions for T1/clm2s.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clm2s.]
\DeclareFontFamily{T1}{clm2s}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2t.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2t.fd
index 58d106eb1f6..e8d92015ae5 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2t.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2t.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clm2t.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clm2t.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clm2t.]
\DeclareFontFamily{T1}{clm2t}{\hyphenchar\font=\m@ne}
@@ -57,7 +57,8 @@
}{}
\DeclareFontShape{T1}{clm2t}{m}{ui}{<->ssub * clm2t/m/it}{}
-\DeclareFontShape{T1}{clm2t}{m}{si}{<->ssub * clm2t/m/scsl}{}
+\DeclareFontShape{T1}{clm2t}{m}{scit}{<->ssub * clm2t/m/scsl}{}
+\DeclareFontShape{T1}{clm2t}{m}{si}{<->ssub * clm2t/m/scit}{}
\DeclareFontShape{T1}{clm2t}{b}{n}{<->ssub * clm2t/bx/n}{}
\DeclareFontShape{T1}{clm2t}{bx}{sc}{<->ssub * clm2t/bx/n}{}
\DeclareFontShape{T1}{clm2t}{b}{sc}{<->ssub * clm2t/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2v.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2v.fd
index 0ff82e50d07..3971fdda528 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clm2v.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clm2v.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clm2v.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clm2v.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clm2v.]
\DeclareFontFamily{T1}{clm2v}{\hyphenchar\font=\m@ne}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clmd.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clmd.fd
index 21f6c1c2337..1a7d91cf0d8 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clmd.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clmd.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clmd.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clmd.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clmd.]
\DeclareFontFamily{T1}{clmd}{\hyphenchar\font=45}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clmdj.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clmdj.fd
index 649bb29224b..5c57dd32a80 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clmdj.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clmdj.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clmdj.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clmdj.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clmdj.]
\DeclareFontFamily{T1}{clmdj}{\hyphenchar\font=45}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clmj.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clmj.fd
index cd29597d90d..8bc6de61150 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clmj.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clmj.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clmj.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clmj.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clmj.]
\DeclareFontFamily{T1}{clmj}{}
@@ -74,7 +74,8 @@
<-> clmbjo8t10
}{}
-\DeclareFontShape{T1}{clmj}{m}{si}{<->ssub * clmj/m/scsl}{}
+\DeclareFontShape{T1}{clmj}{m}{scit}{<->ssub * clmj/m/scsl}{}
+\DeclareFontShape{T1}{clmj}{m}{si}{<->ssub * clmj/m/scit}{}
\DeclareFontShape{T1}{clmj}{b}{n}{<->ssub * clmj/bx/n}{}
\DeclareFontShape{T1}{clmj}{bx}{sc}{<->ssub * clmj/bx/n}{}
\DeclareFontShape{T1}{clmj}{b}{sc}{<->ssub * clmj/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clmjqs.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clmjqs.fd
index 7cd7b6f0776..2e6077662ab 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clmjqs.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clmjqs.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clmjqs.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clmjqs.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clmjqs.]
\DeclareFontFamily{T1}{clmjqs}{\hyphenchar\font=\m@ne}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clmjs.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clmjs.fd
index e66b4bf1611..2f1e4ff9532 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clmjs.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clmjs.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clmjs.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clmjs.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clmjs.]
\DeclareFontFamily{T1}{clmjs}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clmjt.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clmjt.fd
index bf4efdac8c0..759910ff6f0 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clmjt.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clmjt.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clmjt.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clmjt.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clmjt.]
\DeclareFontFamily{T1}{clmjt}{\hyphenchar\font=\m@ne}
@@ -57,7 +57,8 @@
}{}
\DeclareFontShape{T1}{clmjt}{m}{ui}{<->ssub * clmjt/m/it}{}
-\DeclareFontShape{T1}{clmjt}{m}{si}{<->ssub * clmjt/m/scsl}{}
+\DeclareFontShape{T1}{clmjt}{m}{scit}{<->ssub * clmjt/m/scsl}{}
+\DeclareFontShape{T1}{clmjt}{m}{si}{<->ssub * clmjt/m/scit}{}
\DeclareFontShape{T1}{clmjt}{b}{n}{<->ssub * clmjt/bx/n}{}
\DeclareFontShape{T1}{clmjt}{bx}{sc}{<->ssub * clmjt/bx/n}{}
\DeclareFontShape{T1}{clmjt}{b}{sc}{<->ssub * clmjt/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clmjv.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clmjv.fd
index ac3c5ce8e83..607edf04e45 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clmjv.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clmjv.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clmjv.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clmjv.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clmjv.]
\DeclareFontFamily{T1}{clmjv}{\hyphenchar\font=\m@ne}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clmqs.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clmqs.fd
index 5695027b188..c703b82309a 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clmqs.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clmqs.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clmqs.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clmqs.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clmqs.]
\DeclareFontFamily{T1}{clmqs}{\hyphenchar\font=\m@ne}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clms.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clms.fd
index 5a0661c5309..3ea453b3a11 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clms.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clms.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clms.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clms.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clms.]
\DeclareFontFamily{T1}{clms}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clmt.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clmt.fd
index f46090b877c..ca2b309b1ac 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clmt.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clmt.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clmt.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clmt.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clmt.]
\DeclareFontFamily{T1}{clmt}{\hyphenchar\font=\m@ne}
@@ -57,7 +57,8 @@
}{}
\DeclareFontShape{T1}{clmt}{m}{ui}{<->ssub * clmt/m/it}{}
-\DeclareFontShape{T1}{clmt}{m}{si}{<->ssub * clmt/m/scsl}{}
+\DeclareFontShape{T1}{clmt}{m}{scit}{<->ssub * clmt/m/scsl}{}
+\DeclareFontShape{T1}{clmt}{m}{si}{<->ssub * clmt/m/scit}{}
\DeclareFontShape{T1}{clmt}{b}{n}{<->ssub * clmt/bx/n}{}
\DeclareFontShape{T1}{clmt}{bx}{sc}{<->ssub * clmt/bx/n}{}
\DeclareFontShape{T1}{clmt}{b}{sc}{<->ssub * clmt/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/t1clmv.fd b/Master/texmf-dist/tex/latex/cfr-lm/t1clmv.fd
index ef3eb23ff20..cbbbf269298 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/t1clmv.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/t1clmv.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1clmv.fd}
- [2010/05/25 Fontinst v1.933 font definitions for T1/clmv.]
+ [2024/09/19 Fontinst v1.933 font definitions for T1/clmv.]
\DeclareFontFamily{T1}{clmv}{\hyphenchar\font=\m@ne}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm.fd
index 257d4adf6fc..2f957e7a637 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm.fd
@@ -1,11 +1,11 @@
%Filename: ts1clm.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clm.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clm.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clm.]
\DeclareFontFamily{TS1}{clm}{}
@@ -74,7 +74,8 @@
<-> ts1-lmbo10
}{}
-\DeclareFontShape{TS1}{clm}{m}{si}{<->ssub * clm/m/scsl}{}
+\DeclareFontShape{TS1}{clm}{m}{scit}{<->ssub * clm/m/scsl}{}
+\DeclareFontShape{TS1}{clm}{m}{si}{<->ssub * clm/m/scit}{}
\DeclareFontShape{TS1}{clm}{b}{n}{<->ssub * clm/bx/n}{}
\DeclareFontShape{TS1}{clm}{bx}{sc}{<->ssub * clm/bx/n}{}
\DeclareFontShape{TS1}{clm}{b}{sc}{<->ssub * clm/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2.fd
index 53bfebf826d..505c786af09 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2.fd
@@ -1,11 +1,11 @@
%Filename: ts1clm2.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clm2.fd}
- [2015/02/01 Fontinst v1.928 font definitions for TS1/clm2.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clm2.]
\DeclareFontFamily{TS1}{clm2}{}
@@ -74,7 +74,8 @@
<-> ts1-lmbo10
}{}
-\DeclareFontShape{TS1}{clm2}{m}{si}{<->ssub * clm2/m/scsl}{}
+\DeclareFontShape{TS1}{clm2}{m}{scit}{<->ssub * clm2/m/scsl}{}
+\DeclareFontShape{TS1}{clm2}{m}{si}{<->ssub * clm2/m/scit}{}
\DeclareFontShape{TS1}{clm2}{b}{n}{<->ssub * clm2/bx/n}{}
\DeclareFontShape{TS1}{clm2}{bx}{sc}{<->ssub * clm2/bx/n}{}
\DeclareFontShape{TS1}{clm2}{b}{sc}{<->ssub * clm2/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2d.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2d.fd
index 1d120466eaf..675a07cd4a9 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2d.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2d.fd
@@ -1,11 +1,11 @@
%Filename: ts1clm2d.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clm2d.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clm2d.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clm2d.]
\DeclareFontFamily{TS1}{clm2d}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2dj.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2dj.fd
index bc0ef8e88b8..5f779c5c5ef 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2dj.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2dj.fd
@@ -1,11 +1,11 @@
%Filename: ts1clm2dj.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clm2dj.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clm2dj.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clm2dj.]
\DeclareFontFamily{TS1}{clm2dj}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2j.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2j.fd
index 06c57ce74ce..27241a46e66 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2j.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2j.fd
@@ -1,11 +1,11 @@
%Filename: ts1clm2j.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clm2j.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clm2j.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clm2j.]
\DeclareFontFamily{TS1}{clm2j}{}
@@ -74,7 +74,8 @@
<-> ts1-lmbo10
}{}
-\DeclareFontShape{TS1}{clm2j}{m}{si}{<->ssub * clm2j/m/scsl}{}
+\DeclareFontShape{TS1}{clm2j}{m}{scit}{<->ssub * clm2j/m/scsl}{}
+\DeclareFontShape{TS1}{clm2j}{m}{si}{<->ssub * clm2j/m/scit}{}
\DeclareFontShape{TS1}{clm2j}{b}{n}{<->ssub * clm2j/bx/n}{}
\DeclareFontShape{TS1}{clm2j}{bx}{sc}{<->ssub * clm2j/bx/n}{}
\DeclareFontShape{TS1}{clm2j}{b}{sc}{<->ssub * clm2j/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2jqs.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2jqs.fd
index 952f91fb035..85e6bf0bdc0 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2jqs.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2jqs.fd
@@ -1,11 +1,11 @@
%Filename: ts1clm2jqs.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clm2jqs.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clm2jqs.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clm2jqs.]
\DeclareFontFamily{TS1}{clm2jqs}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2js.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2js.fd
index ec2c8eba0b5..206d9f1a4bf 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2js.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2js.fd
@@ -1,11 +1,11 @@
%Filename: ts1clm2js.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clm2js.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clm2js.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clm2js.]
\DeclareFontFamily{TS1}{clm2js}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2jt.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2jt.fd
index 9b2c5b172e2..5034aa1b034 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2jt.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2jt.fd
@@ -1,11 +1,11 @@
%Filename: ts1clm2jt.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clm2jt.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clm2jt.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clm2jt.]
\DeclareFontFamily{TS1}{clm2jt}{}
@@ -57,7 +57,8 @@
}{}
\DeclareFontShape{TS1}{clm2jt}{m}{ui}{<->ssub * clm2jt/m/it}{}
-\DeclareFontShape{TS1}{clm2jt}{m}{si}{<->ssub * clm2jt/m/scsl}{}
+\DeclareFontShape{TS1}{clm2jt}{m}{scit}{<->ssub * clm2jt/m/scsl}{}
+\DeclareFontShape{TS1}{clm2jt}{m}{si}{<->ssub * clm2jt/m/scit}{}
\DeclareFontShape{TS1}{clm2jt}{b}{n}{<->ssub * clm2jt/bx/n}{}
\DeclareFontShape{TS1}{clm2jt}{bx}{sc}{<->ssub * clm2jt/bx/n}{}
\DeclareFontShape{TS1}{clm2jt}{b}{sc}{<->ssub * clm2jt/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2jv.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2jv.fd
index 804e68b4423..5bef745f8af 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2jv.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2jv.fd
@@ -1,11 +1,11 @@
%Filename: ts1clm2jv.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clm2jv.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clm2jv.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clm2jv.]
\DeclareFontFamily{TS1}{clm2jv}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2qs.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2qs.fd
index 93f1e5ffc84..486e17f5996 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2qs.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2qs.fd
@@ -1,11 +1,11 @@
%Filename: ts1clm2qs.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clm2qs.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clm2qs.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clm2qs.]
\DeclareFontFamily{TS1}{clm2qs}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2s.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2s.fd
index 4f1d942bf8e..aebbbf0dc1c 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2s.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2s.fd
@@ -1,11 +1,11 @@
%Filename: ts1clm2s.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clm2s.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clm2s.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clm2s.]
\DeclareFontFamily{TS1}{clm2s}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2t.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2t.fd
index 8615e6430b9..876977bd152 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2t.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2t.fd
@@ -1,11 +1,11 @@
%Filename: ts1clm2t.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clm2t.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clm2t.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clm2t.]
\DeclareFontFamily{TS1}{clm2t}{}
@@ -57,7 +57,8 @@
}{}
\DeclareFontShape{TS1}{clm2t}{m}{ui}{<->ssub * clm2t/m/it}{}
-\DeclareFontShape{TS1}{clm2t}{m}{si}{<->ssub * clm2t/m/scsl}{}
+\DeclareFontShape{TS1}{clm2t}{m}{scit}{<->ssub * clm2t/m/scsl}{}
+\DeclareFontShape{TS1}{clm2t}{m}{si}{<->ssub * clm2t/m/scit}{}
\DeclareFontShape{TS1}{clm2t}{b}{n}{<->ssub * clm2t/bx/n}{}
\DeclareFontShape{TS1}{clm2t}{bx}{sc}{<->ssub * clm2t/bx/n}{}
\DeclareFontShape{TS1}{clm2t}{b}{sc}{<->ssub * clm2t/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2v.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2v.fd
index 7688f834b0c..e451254fc70 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2v.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clm2v.fd
@@ -1,11 +1,11 @@
%Filename: ts1clm2v.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clm2v.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clm2v.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clm2v.]
\DeclareFontFamily{TS1}{clm2v}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmd.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmd.fd
index f19706d4570..f1e8165dc1a 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmd.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmd.fd
@@ -1,11 +1,11 @@
%Filename: ts1clmd.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clmd.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clmd.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clmd.]
\DeclareFontFamily{TS1}{clmd}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmdj.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmdj.fd
index ec209e52207..f9e80d2c66f 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmdj.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmdj.fd
@@ -1,11 +1,11 @@
%Filename: ts1clmdj.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clmdj.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clmdj.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clmdj.]
\DeclareFontFamily{TS1}{clmdj}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmj.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmj.fd
index a6eb078e31b..f7e0ea7fcbf 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmj.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmj.fd
@@ -1,11 +1,11 @@
%Filename: ts1clmj.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clmj.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clmj.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clmj.]
\DeclareFontFamily{TS1}{clmj}{}
@@ -74,7 +74,8 @@
<-> ts1-lmbo10
}{}
-\DeclareFontShape{TS1}{clmj}{m}{si}{<->ssub * clmj/m/scsl}{}
+\DeclareFontShape{TS1}{clmj}{m}{scit}{<->ssub * clmj/m/scsl}{}
+\DeclareFontShape{TS1}{clmj}{m}{si}{<->ssub * clmj/m/scit}{}
\DeclareFontShape{TS1}{clmj}{b}{n}{<->ssub * clmj/bx/n}{}
\DeclareFontShape{TS1}{clmj}{bx}{sc}{<->ssub * clmj/bx/n}{}
\DeclareFontShape{TS1}{clmj}{b}{sc}{<->ssub * clmj/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmjqs.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmjqs.fd
index ed16bf5ed60..ff0e81175fd 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmjqs.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmjqs.fd
@@ -1,11 +1,11 @@
%Filename: ts1clmjqs.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clmjqs.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clmjqs.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clmjqs.]
\DeclareFontFamily{TS1}{clmjqs}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmjs.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmjs.fd
index 44a0fd54a12..e7a6e73f12b 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmjs.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmjs.fd
@@ -1,11 +1,11 @@
%Filename: ts1clmjs.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clmjs.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clmjs.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clmjs.]
\DeclareFontFamily{TS1}{clmjs}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmjt.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmjt.fd
index f8b3f0ab33e..4b2ead9c271 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmjt.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmjt.fd
@@ -1,11 +1,11 @@
%Filename: ts1clmjt.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clmjt.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clmjt.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clmjt.]
\DeclareFontFamily{TS1}{clmjt}{}
@@ -57,7 +57,8 @@
}{}
\DeclareFontShape{TS1}{clmjt}{m}{ui}{<->ssub * clmjt/m/it}{}
-\DeclareFontShape{TS1}{clmjt}{m}{si}{<->ssub * clmjt/m/scsl}{}
+\DeclareFontShape{TS1}{clmjt}{m}{scit}{<->ssub * clmjt/m/scsl}{}
+\DeclareFontShape{TS1}{clmjt}{m}{si}{<->ssub * clmjt/m/scit}{}
\DeclareFontShape{TS1}{clmjt}{b}{n}{<->ssub * clmjt/bx/n}{}
\DeclareFontShape{TS1}{clmjt}{bx}{sc}{<->ssub * clmjt/bx/n}{}
\DeclareFontShape{TS1}{clmjt}{b}{sc}{<->ssub * clmjt/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmjv.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmjv.fd
index 002b68cae40..66aa7f2da4d 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmjv.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmjv.fd
@@ -1,11 +1,11 @@
%Filename: ts1clmjv.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clmjv.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clmjv.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clmjv.]
\DeclareFontFamily{TS1}{clmjv}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmqs.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmqs.fd
index 8baed70737a..b3ff933fae6 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmqs.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmqs.fd
@@ -1,11 +1,11 @@
%Filename: ts1clmqs.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clmqs.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clmqs.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clmqs.]
\DeclareFontFamily{TS1}{clmqs}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clms.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clms.fd
index 3da7aea168a..e02646c99a3 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clms.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clms.fd
@@ -1,11 +1,11 @@
%Filename: ts1clms.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clms.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clms.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clms.]
\DeclareFontFamily{TS1}{clms}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmt.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmt.fd
index 4cc3e5243ae..9141d1ebc48 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmt.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmt.fd
@@ -1,11 +1,11 @@
%Filename: ts1clmt.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clmt.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clmt.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clmt.]
\DeclareFontFamily{TS1}{clmt}{}
@@ -57,7 +57,8 @@
}{}
\DeclareFontShape{TS1}{clmt}{m}{ui}{<->ssub * clmt/m/it}{}
-\DeclareFontShape{TS1}{clmt}{m}{si}{<->ssub * clmt/m/scsl}{}
+\DeclareFontShape{TS1}{clmt}{m}{scit}{<->ssub * clmt/m/scsl}{}
+\DeclareFontShape{TS1}{clmt}{m}{si}{<->ssub * clmt/m/scit}{}
\DeclareFontShape{TS1}{clmt}{b}{n}{<->ssub * clmt/bx/n}{}
\DeclareFontShape{TS1}{clmt}{bx}{sc}{<->ssub * clmt/bx/n}{}
\DeclareFontShape{TS1}{clmt}{b}{sc}{<->ssub * clmt/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmv.fd b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmv.fd
index 1d74461b38f..3dd4fb8c8d0 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/ts1clmv.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/ts1clmv.fd
@@ -1,11 +1,11 @@
%Filename: ts1clmv.fd
-%Created by: tex clm-drv
-%Created using fontinst v1.928
+%Created by: tex clm-ts1-drv
+%Created using fontinst v1.933
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1clmv.fd}
- [2008/02/13 Fontinst v1.928 font definitions for TS1/clmv.]
+ [2024/09/19 Fontinst v1.933 font definitions for TS1/clmv.]
\DeclareFontFamily{TS1}{clmv}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclm.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclm.fd
index 61c48f7d680..54a0050120b 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclm.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclm.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclm.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clm.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clm.]
\DeclareFontFamily{U}{clm}{}
@@ -74,7 +74,8 @@
<-> u-clmbo10
}{}
-\DeclareFontShape{U}{clm}{m}{si}{<->ssub * clm/m/scsl}{}
+\DeclareFontShape{U}{clm}{m}{scit}{<->ssub * clm/m/scsl}{}
+\DeclareFontShape{U}{clm}{m}{si}{<->ssub * clm/m/scit}{}
\DeclareFontShape{U}{clm}{b}{n}{<->ssub * clm/bx/n}{}
\DeclareFontShape{U}{clm}{bx}{sc}{<->ssub * clm/bx/n}{}
\DeclareFontShape{U}{clm}{b}{sc}{<->ssub * clm/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclm2.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclm2.fd
index 320abfe0d7f..df61503d2e5 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclm2.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclm2.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclm2.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clm2.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clm2.]
\DeclareFontFamily{U}{clm2}{}
@@ -74,7 +74,8 @@
<-> u-clmbo10
}{}
-\DeclareFontShape{U}{clm2}{m}{si}{<->ssub * clm2/m/scsl}{}
+\DeclareFontShape{U}{clm2}{m}{scit}{<->ssub * clm2/m/scsl}{}
+\DeclareFontShape{U}{clm2}{m}{si}{<->ssub * clm2/m/scit}{}
\DeclareFontShape{U}{clm2}{b}{n}{<->ssub * clm2/bx/n}{}
\DeclareFontShape{U}{clm2}{bx}{sc}{<->ssub * clm2/bx/n}{}
\DeclareFontShape{U}{clm2}{b}{sc}{<->ssub * clm2/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclm2d.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclm2d.fd
index f1a333da2b0..fe56d5b784d 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclm2d.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclm2d.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclm2d.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clm2d.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clm2d.]
\DeclareFontFamily{U}{clm2d}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclm2dj.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclm2dj.fd
index 6d4d7ade219..4e80cb04310 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclm2dj.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclm2dj.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclm2dj.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clm2dj.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clm2dj.]
\DeclareFontFamily{U}{clm2dj}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclm2j.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclm2j.fd
index cf16debfae9..842119949a7 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclm2j.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclm2j.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclm2j.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clm2j.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clm2j.]
\DeclareFontFamily{U}{clm2j}{}
@@ -74,7 +74,8 @@
<-> u-clmbo10
}{}
-\DeclareFontShape{U}{clm2j}{m}{si}{<->ssub * clm2j/m/scsl}{}
+\DeclareFontShape{U}{clm2j}{m}{scit}{<->ssub * clm2j/m/scsl}{}
+\DeclareFontShape{U}{clm2j}{m}{si}{<->ssub * clm2j/m/scit}{}
\DeclareFontShape{U}{clm2j}{b}{n}{<->ssub * clm2j/bx/n}{}
\DeclareFontShape{U}{clm2j}{bx}{sc}{<->ssub * clm2j/bx/n}{}
\DeclareFontShape{U}{clm2j}{b}{sc}{<->ssub * clm2j/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclm2jqs.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclm2jqs.fd
index 6b8b5ccc2a8..3a8970ddcd1 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclm2jqs.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclm2jqs.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclm2jqs.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clm2jqs.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clm2jqs.]
\DeclareFontFamily{U}{clm2jqs}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclm2js.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclm2js.fd
index acd57a8803e..07089240650 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclm2js.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclm2js.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclm2js.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clm2js.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clm2js.]
\DeclareFontFamily{U}{clm2js}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclm2jt.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclm2jt.fd
index 065b52776f6..61f1abd7073 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclm2jt.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclm2jt.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclm2jt.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clm2jt.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clm2jt.]
\DeclareFontFamily{U}{clm2jt}{}
@@ -57,7 +57,8 @@
}{}
\DeclareFontShape{U}{clm2jt}{m}{ui}{<->ssub * clm2jt/m/it}{}
-\DeclareFontShape{U}{clm2jt}{m}{si}{<->ssub * clm2jt/m/scsl}{}
+\DeclareFontShape{U}{clm2jt}{m}{scit}{<->ssub * clm2jt/m/scsl}{}
+\DeclareFontShape{U}{clm2jt}{m}{si}{<->ssub * clm2jt/m/scit}{}
\DeclareFontShape{U}{clm2jt}{b}{n}{<->ssub * clm2jt/bx/n}{}
\DeclareFontShape{U}{clm2jt}{bx}{sc}{<->ssub * clm2jt/bx/n}{}
\DeclareFontShape{U}{clm2jt}{b}{sc}{<->ssub * clm2jt/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclm2jv.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclm2jv.fd
index 8e9175f8b6d..e8ddcc42c32 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclm2jv.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclm2jv.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclm2jv.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clm2jv.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clm2jv.]
\DeclareFontFamily{U}{clm2jv}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclm2qs.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclm2qs.fd
index d8c67797c92..db43cb583e1 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclm2qs.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclm2qs.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclm2qs.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clm2qs.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clm2qs.]
\DeclareFontFamily{U}{clm2qs}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclm2s.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclm2s.fd
index df081eed6bb..4e20ef2d03b 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclm2s.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclm2s.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclm2s.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clm2s.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clm2s.]
\DeclareFontFamily{U}{clm2s}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclm2t.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclm2t.fd
index ad5fafb4043..1ef982690a8 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclm2t.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclm2t.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclm2t.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clm2t.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clm2t.]
\DeclareFontFamily{U}{clm2t}{}
@@ -57,7 +57,8 @@
}{}
\DeclareFontShape{U}{clm2t}{m}{ui}{<->ssub * clm2t/m/it}{}
-\DeclareFontShape{U}{clm2t}{m}{si}{<->ssub * clm2t/m/scsl}{}
+\DeclareFontShape{U}{clm2t}{m}{scit}{<->ssub * clm2t/m/scsl}{}
+\DeclareFontShape{U}{clm2t}{m}{si}{<->ssub * clm2t/m/scit}{}
\DeclareFontShape{U}{clm2t}{b}{n}{<->ssub * clm2t/bx/n}{}
\DeclareFontShape{U}{clm2t}{bx}{sc}{<->ssub * clm2t/bx/n}{}
\DeclareFontShape{U}{clm2t}{b}{sc}{<->ssub * clm2t/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclm2v.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclm2v.fd
index 0ab1a2b858b..87c7b72c5f2 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclm2v.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclm2v.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclm2v.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clm2v.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clm2v.]
\DeclareFontFamily{U}{clm2v}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclmd.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclmd.fd
index 22798578549..ba250f22e71 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclmd.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclmd.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclmd.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clmd.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clmd.]
\DeclareFontFamily{U}{clmd}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclmdj.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclmdj.fd
index 9db7ac3a7ee..0e0687f2ba5 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclmdj.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclmdj.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclmdj.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clmdj.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clmdj.]
\DeclareFontFamily{U}{clmdj}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclmj.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclmj.fd
index bd1d0557f19..789578e18f6 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclmj.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclmj.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclmj.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clmj.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clmj.]
\DeclareFontFamily{U}{clmj}{}
@@ -74,7 +74,8 @@
<-> u-clmbo10
}{}
-\DeclareFontShape{U}{clmj}{m}{si}{<->ssub * clmj/m/scsl}{}
+\DeclareFontShape{U}{clmj}{m}{scit}{<->ssub * clmj/m/scsl}{}
+\DeclareFontShape{U}{clmj}{m}{si}{<->ssub * clmj/m/scit}{}
\DeclareFontShape{U}{clmj}{b}{n}{<->ssub * clmj/bx/n}{}
\DeclareFontShape{U}{clmj}{bx}{sc}{<->ssub * clmj/bx/n}{}
\DeclareFontShape{U}{clmj}{b}{sc}{<->ssub * clmj/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclmjqs.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclmjqs.fd
index 7ff58254856..e2f4eb6aba5 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclmjqs.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclmjqs.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclmjqs.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clmjqs.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clmjqs.]
\DeclareFontFamily{U}{clmjqs}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclmjs.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclmjs.fd
index 7a3e4ea5919..28c10f7ba8c 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclmjs.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclmjs.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclmjs.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clmjs.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clmjs.]
\DeclareFontFamily{U}{clmjs}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclmjt.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclmjt.fd
index a07a76aed5c..79dff0ea513 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclmjt.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclmjt.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclmjt.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clmjt.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clmjt.]
\DeclareFontFamily{U}{clmjt}{}
@@ -57,7 +57,8 @@
}{}
\DeclareFontShape{U}{clmjt}{m}{ui}{<->ssub * clmjt/m/it}{}
-\DeclareFontShape{U}{clmjt}{m}{si}{<->ssub * clmjt/m/scsl}{}
+\DeclareFontShape{U}{clmjt}{m}{scit}{<->ssub * clmjt/m/scsl}{}
+\DeclareFontShape{U}{clmjt}{m}{si}{<->ssub * clmjt/m/scit}{}
\DeclareFontShape{U}{clmjt}{b}{n}{<->ssub * clmjt/bx/n}{}
\DeclareFontShape{U}{clmjt}{bx}{sc}{<->ssub * clmjt/bx/n}{}
\DeclareFontShape{U}{clmjt}{b}{sc}{<->ssub * clmjt/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclmjv.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclmjv.fd
index b109d77cb2e..4ab80a632c2 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclmjv.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclmjv.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclmjv.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clmjv.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clmjv.]
\DeclareFontFamily{U}{clmjv}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclmqs.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclmqs.fd
index 032bbf95dc0..2577c9a046d 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclmqs.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclmqs.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclmqs.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clmqs.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clmqs.]
\DeclareFontFamily{U}{clmqs}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclms.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclms.fd
index 4883781272d..69ac8937bf7 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclms.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclms.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclms.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clms.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clms.]
\DeclareFontFamily{U}{clms}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclmt.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclmt.fd
index 4f03f39e889..980b5f39b9d 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclmt.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclmt.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclmt.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clmt.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clmt.]
\DeclareFontFamily{U}{clmt}{}
@@ -57,7 +57,8 @@
}{}
\DeclareFontShape{U}{clmt}{m}{ui}{<->ssub * clmt/m/it}{}
-\DeclareFontShape{U}{clmt}{m}{si}{<->ssub * clmt/m/scsl}{}
+\DeclareFontShape{U}{clmt}{m}{scit}{<->ssub * clmt/m/scsl}{}
+\DeclareFontShape{U}{clmt}{m}{si}{<->ssub * clmt/m/scit}{}
\DeclareFontShape{U}{clmt}{b}{n}{<->ssub * clmt/bx/n}{}
\DeclareFontShape{U}{clmt}{bx}{sc}{<->ssub * clmt/bx/n}{}
\DeclareFontShape{U}{clmt}{b}{sc}{<->ssub * clmt/bx/sc}{}
diff --git a/Master/texmf-dist/tex/latex/cfr-lm/uclmv.fd b/Master/texmf-dist/tex/latex/cfr-lm/uclmv.fd
index 8f2ed86f727..b5dd2698595 100644
--- a/Master/texmf-dist/tex/latex/cfr-lm/uclmv.fd
+++ b/Master/texmf-dist/tex/latex/cfr-lm/uclmv.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{uclmv.fd}
- [2010/05/25 Fontinst v1.933 font definitions for U/clmv.]
+ [2024/09/19 Fontinst v1.933 font definitions for U/clmv.]
\DeclareFontFamily{U}{clmv}{}
diff --git a/Master/texmf-dist/tex/latex/changelog/changelog.sty b/Master/texmf-dist/tex/latex/changelog/changelog.sty
index 4c95edd8051..0dc42ab2eb2 100644
--- a/Master/texmf-dist/tex/latex/changelog/changelog.sty
+++ b/Master/texmf-dist/tex/latex/changelog/changelog.sty
@@ -1,5 +1,5 @@
\RequirePackage{expl3}
-\ProvidesExplPackage{changelog}{2023/02/16}{2.5.0}{Typesetting changelogs}
+\ProvidesExplPackage{changelog}{2024/12/18}{2.6.0}{Typesetting changelogs}
% Description: Provides the changelog environment for typesetting changelogs
% License: LPPL 1.3c
% Homepage: https://github.com/9999years/latex-changelog
@@ -205,29 +205,36 @@
\bool_if:NTF \g__changelog_section_bool
{
\exp_after:wN \g__changelog_sectioncmd_tl { \g__changelog_title_tl }
- \exp_after:wN \label { \g__changelog_label_tl }
+ \tl_if_empty:NF \g__changelog_label_tl
+ {
+ \exp_after:wN \label { \tl_use:N \g__changelog_label_tl }
+ }
}
{}
}
-\cs_set:Npn \changelog__short_version_define_date
+% Display the current version, which may be a version number, a date, or "Unreleased".
+\cs_set:Npn \changelog__display_version
{
- \tl_if_empty:NT \g__changelog_version_tl
+ \tl_if_empty:NTF \g__changelog_version_tl
{
\tl_if_empty:NTF \g__changelog_date_tl
{
- \tl_set:Nn \g__changelog_version_tl { \GetTranslation{changelog-Unreleased} }
+ \GetTranslation{changelog-Unreleased}
\tl_set:Nn \g__changelog_date_tl { \today }
}
{
- \tl_set_eq:NN \g__changelog_version_tl \g__changelog_date_tl
+ \tl_use:N \g__changelog_date_tl
}
}
+ {
+ \tl_use:N \g__changelog_version_tl
+ }
}
\cs_set:Npn \changelog__short_version_item
{
- \tl_use:N \g__changelog_version_tl
+ \changelog__display_version
\bool_if:NT \g__changelog_yanked_bool
{
\ \changelogyanked
@@ -247,12 +254,21 @@
\cs_set:Npn \changelog__short_version_author_date
{
+ % This might output nothing if there's no author and the date is being used
+ % as a version number, so make sure to `\leavevmode` to avoid a weird
+ % indent at the start of the item.
+ \mode_leave_vertical:
\tl_use:N \g__changelog_author_tl
\tl_if_empty:NF \g__changelog_date_tl
{
- \tl_if_empty:NF \g__changelog_author_tl
- { ~ }
- (\tl_use:N \g__changelog_date_tl)
+ % If no version number is given, the date is used instead, so we don't
+ % want to show the date twice.
+ \tl_if_empty:NF \g__changelog_version_tl
+ {
+ \tl_if_empty:NF \g__changelog_author_tl
+ { ~ }
+ (\tl_use:N \g__changelog_date_tl)
+ }
}
}
@@ -308,7 +324,6 @@
% environment
\cs_set:Npn \changelog__short_version
{
- \changelog__short_version_define_date
\bool_gset_true:N \g__changelog_seen_version_bool
\item[\changelog__short_version_item]
diff --git a/Master/texmf-dist/tex/latex/chess-problem-diagrams/diagram.sty b/Master/texmf-dist/tex/latex/chess-problem-diagrams/diagram.sty
index aa150ac3b4e..975d44975c6 100644
--- a/Master/texmf-dist/tex/latex/chess-problem-diagrams/diagram.sty
+++ b/Master/texmf-dist/tex/latex/chess-problem-diagrams/diagram.sty
@@ -36,7 +36,7 @@
%%
%%
-\ProvidesPackage{diagram}[2022/06/19]
+\ProvidesPackage{diagram}[2024/10/14]
\newcommand*{\DefaultDiagramSize}{}
\DeclareOption{10pt}{\renewcommand*{\DefaultDiagramSize}{\diagramx}}
\DeclareOption{11pt}{\renewcommand*{\DefaultDiagramSize}{\diagramxi}}
@@ -194,6 +194,7 @@
\newtoks\condition@tk\condition@tk={\relax}
\newtoks\remark@tk\remark@tk={\relax}
\newtoks\piecedefs@tk\piecedefs@tk={\relax}
+\newtoks\@cpd@emptytest
\newif\if@label\@labelfalse
\newif\if@number\@numberfalse
\newif\if@special\@specialfalse
@@ -328,6 +329,11 @@
\ignorespaces%
}
+\newboolean{@cpd@inside@diagram}
+\setboolean{@cpd@inside@diagram}{false}
+\newcommand{\insidediagram}[1]{%
+ \ifthenelse{\boolean{@cpd@inside@diagram}}{#1}{}%
+}
\def\enddiagram{%
\let\author=\orig@author%
\let\day=\orig@day%
@@ -448,6 +454,7 @@
}%
%
\global\setbox\dia@box=\hbox{\vbox{%
+ \setboolean{@cpd@inside@diagram}{true}%
\parindent\z@%
\parskip\z@%
\baselineskip11\p@\advance\baselineskip\dia@lineskip%
@@ -483,6 +490,7 @@
\dia@below%
}\hss}%
}%
+ \setboolean{@cpd@inside@diagram}{false}%
}}% End of \dia@box
\do@dia@job%
\cpd@enddiagram@hook%
@@ -619,9 +627,19 @@
\renewcommand*{\@dianumber@prefix}{#1}%
\setcounter{board@nr}{#2}%
\addtocounter{board@nr}{\m@ne}}
-\def\ra{\mbox{$\rightarrow$}}
-\def\lra{\mbox{$\leftrightarrow$}}
+\newcommand{\@cpd@pre@arrow}{}
+\newcommand{\@cpd@post@arrow}{}
+\newcommand{\ra}{\@cpd@pre@arrow\mbox{$\rightarrow$}\@cpd@post@arrow}
+\newcommand{\lra}{\@cpd@pre@arrow\mbox{$\leftrightarrow$}\@cpd@post@arrow}
\let\rla=\lra
+\newcommand*{\@cpd@prepost@arrow}[2]{%
+ \renewcommand*{\@cpd@pre@arrow}{#1}
+ \renewcommand*{\@cpd@post@arrow}{#2}
+}
+\newenvironment{arrowskip}{%
+ \@cpd@prepost@arrow%
+}{%
+}
\newcommand{\x}{\mbox{\ifmmode\times\else$\times$\fi}}
\def\set{\kern -.05em\raise .1ex\hbox{*}}
\def\@O{0\raise.25ex\hbox{-}\kern -.1em\relax}
@@ -652,10 +670,10 @@
}{%
\setboolean{@cpd@numbering@local}{true}%
\@specialtrue%
- \number@tk={#1}\@numbertrue%
- \def\thediag{#1}\def\@currentlabel{#1}%
- \ignorespaces%
}
+ \number@tk={#1}\@numbertrue%
+ \def\thediag{#1}\def\@currentlabel{#1}%
+ \ignorespaces%
}
\def\ds@label{%
\@ifstar{\ds@labelfalse\ds@xlabel}{\ds@labeltrue\ds@xlabel}%
@@ -668,6 +686,15 @@
\newcommand{\Dr}{\ds@academictitle{Dr.}}
\newcommand{\Prof}{\ds@academictitle{Prof.}}
\newcommand{\ProfDr}{\ds@academictitle{Prof.\,Dr.}}
+\def\@cpd@warnIfEmpty#1#2{%
+ \begingroup%
+ \@cpd@emptytest={#1}%
+ \edef\@cpd@param{\the\@cpd@emptytest}%
+ \expandafter\endgroup%
+ \ifx\@cpd@param\@empty\relax%
+ \message{^^JWARNING: empty '#2' argument.^^J}%
+ \fi
+}
\def\city#1{%
\city@tk={#1}\@citytrue%
\ignorespaces%
@@ -709,44 +736,29 @@
\ignorespaces%
}
\def\award#1{%
- \ifthenelse{\equal{}{#1}}{%
- \message{^^JWARNING: ignoring empty 'award' argument.^^J}%
- }{%
- \award@tk={#1}\@awardtrue%
- \ignorespaces%
- }%
+ \@cpd@warnIfEmpty{#1}{award}%
+ \award@tk={#1}\@awardtrue%
+ \ignorespaces%
}
\def\version#1{%
- \ifthenelse{\equal{}{#1}}{%
- \message{^^JWARNING: ignoring empty 'version' argument.^^J}%
- }{%
- \version@tk={#1}\@versiontrue%
- \ignorespaces%
- }%
+ \@cpd@warnIfEmpty{#1}{version}%
+ \version@tk={#1}\@versiontrue%
+ \ignorespaces%
}
\def\after#1{%
- \ifthenelse{\equal{}{#1}}{%
- \message{^^JWARNING: ignoring empty 'after' argument.^^J}%
- }{%
- \after@tk={#1}\@aftertrue%
- \ignorespaces%
- }%
+ \@cpd@warnIfEmpty{#1}{after}%
+ \after@tk={#1}\@aftertrue%
+ \ignorespaces%
}
\def\correction#1{%
- \ifthenelse{\equal{}{#1}}{%
- \message{^^JWARNING: ignoring empty 'correction' argument.^^J}%
- }{%
- \correction@tk={#1}\@correctiontrue%
- \ignorespaces%
- }%
+ \@cpd@warnIfEmpty{#1}{correction}%
+ \correction@tk={#1}\@correctiontrue%
+ \ignorespaces%
}
\def\dedication#1{%
- \ifthenelse{\equal{}{#1}}{%
- \message{^^JWARNING: ignoring empty 'correction' argument.^^J}%
- }{%
- \dedic@tk={#1}\@dedicationtrue%
- \ignorespaces%
- }%
+ \@cpd@warnIfEmpty{#1}{dedication}%
+ \dedic@tk={#1}\@dedicationtrue%
+ \ignorespaces%
}
\def\fidealbum#1{%
\fidealbum@tk={#1}\@fidealbumtrue%
@@ -1321,7 +1333,7 @@
\parskip\tw@\p@%
{\bfseries%
\noindent\if@label\showlabel{\the\label@tk}\fi%
- \the\number@tk) %
+ \if@number\the\number@tk) \fi%
\ifauth@r%
\ifnormal@names%
\the\aut@tk%
diff --git a/Master/texmf-dist/tex/latex/chessboard/chessboard-keys-main.sty b/Master/texmf-dist/tex/latex/chessboard/chessboard-keys-main.sty
index 13995fa3503..123fbc12e93 100644
--- a/Master/texmf-dist/tex/latex/chessboard/chessboard-keys-main.sty
+++ b/Master/texmf-dist/tex/latex/chessboard/chessboard-keys-main.sty
@@ -16,7 +16,7 @@
%% License, or (at your option) any later version.
%%
%% For error reports see documentation.
-\ProvidesFile{chessboard-keys-main.sty}[2020/11/01 version v1.9 key definitions for chessboard.sty]
+\ProvidesFile{chessboard-keys-main.sty}[2024/11/07 version v2.0 key definitions for chessboard.sty]
%%$Date: 2011/03/23 08:42:57 $$Version: 66142533647c $
%%file=Linie=column=vertikal=al_f_abetisch= a-h
diff --git a/Master/texmf-dist/tex/latex/chessboard/chessboard-keys-pgf.sty b/Master/texmf-dist/tex/latex/chessboard/chessboard-keys-pgf.sty
index 558f578b399..f871d3acb04 100644
--- a/Master/texmf-dist/tex/latex/chessboard/chessboard-keys-pgf.sty
+++ b/Master/texmf-dist/tex/latex/chessboard/chessboard-keys-pgf.sty
@@ -16,7 +16,7 @@
%% License, or (at your option) any later version.
%%
%% For error reports see documentation.
-\ProvidesFile{chessboard-keys-pgf.sty}[2020/11/01 version v1.9 key definitions for chessboard.sty]
+\ProvidesFile{chessboard-keys-pgf.sty}[2024/11/07 version v2.0 key definitions for chessboard.sty]
%%$Date: 2011/03/17 13:42:38 $$Version: e7ec1b100ede $
%% new 1.5.: style keys for curvemove
diff --git a/Master/texmf-dist/tex/latex/chessboard/chessboard-pgf.sty b/Master/texmf-dist/tex/latex/chessboard/chessboard-pgf.sty
index 1ebcfe94eaa..8dadd560cca 100644
--- a/Master/texmf-dist/tex/latex/chessboard/chessboard-pgf.sty
+++ b/Master/texmf-dist/tex/latex/chessboard/chessboard-pgf.sty
@@ -16,7 +16,7 @@
%% License, or (at your option) any later version.
%%
%% For error reports see documentation.
-\ProvidesFile{chessboard-pgf.sty}[2020/11/01 version v1.9 pgf code for chessboard.sty]
+\ProvidesFile{chessboard-pgf.sty}[2024/11/07 version v2.0 pgf code for chessboard.sty]
%%$Date: 2011/01/11 14:07:20 $$Version: 3d9f59c743f1 $
\newcommand\board@pgf@extrabackground{}%
@@ -129,6 +129,11 @@
\board@pgf@setanchors{mark}}%
%% getting angles/length of a point:
+%% the board len can be a decimal, so we need a better function than the primitive divide
+\ExplSyntaxOn
+\newcommand\board@divide@NN[2]{%
+ \dim_set:Nn#1 {#1*\dim_ratio:nn{1pt}{#2}}}%
+\ExplSyntaxOff
\newcommand\board@pgf@extractangle[2]{%#1 command, #2 pgfpoint
\pgfextracty{\len@board@tempy}{#2}%
@@ -136,7 +141,7 @@
\ifdim\len@board@tempx=0pt\relax
%\len@board@tempy= 1 or unchanged?
\else
- \divide \len@board@tempy by \strip@pt\len@board@tempx\relax
+ \board@divide@NN\len@board@tempy\len@board@tempx
\fi
\ifdim\len@board@tempx=0pt\relax
\ifdim\len@board@tempy=0pt\relax
diff --git a/Master/texmf-dist/tex/latex/chessboard/chessboard.sty b/Master/texmf-dist/tex/latex/chessboard/chessboard.sty
index 3ba2e5216cf..125969195af 100644
--- a/Master/texmf-dist/tex/latex/chessboard/chessboard.sty
+++ b/Master/texmf-dist/tex/latex/chessboard/chessboard.sty
@@ -17,7 +17,7 @@
%%
%% For error reports see documentation.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{chessboard}[2020/11/01 version v1.9 print chessboards]
+\ProvidesPackage{chessboard}[2024/11/07 version v2.0 print chessboards]
\DeclareOption{skaknew}{}%
\ProcessOptions
@@ -1119,12 +1119,12 @@
%% the background picture
\ifUFCB@locset@pgf
\makebox[0pt]{%
- \begin{pgfpicture}%
+ \begin{tikzpicture}%
\board@pgf@background
\begin{pgfscope}%
\board@pgf@extrabackground
\end{pgfscope}%
- \end{pgfpicture}}%
+ \end{tikzpicture}}%
\fi
%% the board
\ifUFCB@locset@inverse
@@ -1181,12 +1181,12 @@
%%the markground picture
\ifUFCB@locset@pgf
\makebox[0pt]{%
- \begin{pgfpicture}%
+ \begin{tikzpicture}%
\board@pgf@markground
\begin{pgfscope}%
\csname board@pgf@extramarkground\endcsname
\end{pgfscope}%
- \end{pgfpicture}}%
+ \end{tikzpicture}}%
\fi % end pgf
\board@do@setpsnode
%%
diff --git a/Master/texmf-dist/tex/latex/chuushaku/chuushaku.sty b/Master/texmf-dist/tex/latex/chuushaku/chuushaku.sty
new file mode 100644
index 00000000000..479ab063b1b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/chuushaku/chuushaku.sty
@@ -0,0 +1,59 @@
+\NeedsTeXFormat{LaTeX2e}%
+\ProvidesPackage{chuushaku}[2024/12/30,Ver1.0.1]%
+
+\RequirePackage{tikz,amsmath,framed,calc}%
+\usetikzlibrary{positioning,quotes}%
+
+\newcommand{\段落下げ}{\parindent=1zw}%
+\def\zw{\dimexpr1zw\relax}%
+
+\newcounter{chuubangou}%
+\setcounter{chuubangou}{0}%
+\newcommand{\chuukigouprintA}{$\dag$}%
+\newcommand{\chuukigouprintB}{▶\ignorespaces}%
+\newcommand{\chuuhabaprint}{.68}%
+\newcommand{\chuuakiprint}{.7}%
+\newcommand{\chuukigou}[2]{\renewcommand{\chuukigouprintA}{#1}\renewcommand{\chuukigouprintB}{#2}}%
+\newcommand{\chuuhaba}[1]{\renewcommand{\chuuhabaprint}{#1}}%
+\newcommand{\chuuaki}[1]{\renewcommand{\chuuakiprint}{#1}}%
+\newcommand{\chuu}[1]%
+ {%
+ \stepcounter{chuubangou}%
+ \nolinebreak$\!^{\text{\chuukigouprintA}}$%
+ \tikz[remember picture]{\coordinate (A\thechuubangou);}%
+ \expandafter\gdef\csname chuunote\thechuubangou\endcsname{#1}%
+ }%
+\newcommand{\chuuprint}%
+ {%
+ \begin{tikzpicture}[overlay, remember picture]
+ \foreach \n in {1,...,\thechuubangou}%
+ {%
+ \node[sidenote] at (A\n -| B) {\csname chuunote\n\endcsname};%
+ \node[pointer] at (A\n -| B) {\footnotesize\chuukigouprintB};%
+ }%
+ \end{tikzpicture}%
+ }%
+\NewDocumentEnvironment{chuushaku}{ O{\chuuhabaprint} D<>{\chuuakiprint} }%
+ {%
+ %TikZのスタイル定義
+ \tikzset{sidenote/.style={anchor=north west, inner sep=0pt, text width={\linewidth-#1\linewidth-#2\zw-1\zw}, font=\footnotesize, yshift=.8em}}%
+ \tikzset{pointer/.style={left, inner sep=3pt, yshift=.3em}}
+ \begin{minipage}[t]{#1\linewidth}\begin{右辺点線囲み}%
+ }%
+ {%
+ \end{右辺点線囲み}%
+ \end{minipage}\begin{minipage}[t]{#2zw+1zw}%
+ ~%
+ \end{minipage}\begin{minipage}[t]{\linewidth-#1\linewidth-#2\zw}%
+ \tikz[remember picture]{\coordinate (B);}%
+ \end{minipage}%
+ \chuuprint\setcounter{chuubangou}{0}%
+ }%
+
+\newenvironment{右辺点線囲み}%
+ {%
+ \def\FrameCommand##1{##1\hspace{10pt}\vrule width .3pt}%
+ \MakeFramed {\advance\hsize-\width \FrameRestore}%
+ \段落下げ%
+ }%
+ {\endMakeFramed} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.4-body.tex b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.4-body.tex
index fa6fb3c2a82..ca5392fa83a 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.4-body.tex
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.4-body.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.4.sty b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.4.sty
index faa09eb32f5..3d552d4eaa2 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.4.sty
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.4.sty
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.6-body.tex b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.6-body.tex
index 0630698e49a..6aee9b47e4f 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.6-body.tex
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.6-body.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.6.sty b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.6.sty
index 3d41bfcc1d6..d282f55cd51 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.6.sty
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.6.sty
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.7-body.tex b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.7-body.tex
index 91f5dabcd05..4e3ba24e3ae 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.7-body.tex
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.7-body.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.7.sty b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.7.sty
index efe138d2a28..4162977f99c 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.7.sty
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.7.sty
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.8.3-body.tex b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.8.3-body.tex
index b65bc59c8f9..e058f29ecfc 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.8.3-body.tex
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.8.3-body.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.8.3.sty b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.8.3.sty
index ccd07fea834..da59d5636b6 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.8.3.sty
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.8.3.sty
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.3-body.tex b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.3-body.tex
index dfaa1bb4d6f..0f077a1deb2 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.3-body.tex
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.3-body.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.3.sty b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.3.sty
index 2ce27f90e2a..9f90dc99bde 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.3.sty
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.3.sty
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.6-body.tex b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.6-body.tex
index 450ac4fcff0..83d7eac7039 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.6-body.tex
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.6-body.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.6.sty b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.6.sty
index 49fe5703fa2..8b357c6f918 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.6.sty
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-0.9.6.sty
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.0-body.tex b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.0-body.tex
index b4cbf9d3279..f632aefb0ae 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.0-body.tex
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.0-body.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -342,10 +342,10 @@
%%%%%%%%%
%%%%%%%%%%% Springe nach tex/pgfcirc.defines
%%%---------- open: tex/pgfcirc.defines.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -2304,10 +2304,10 @@
%%%---------- close: tex/pgfcirc.defines
%%%%%%%%%%% Springe nach tex/pgfcircutils
%%%---------- open: tex/pgfcircutils.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -2376,10 +2376,10 @@
%%%%%%%%%%% Springe nach tex/pgfcircshapes
%%%---------- open: tex/pgfcircshapes.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -3182,10 +3182,10 @@
%%%---------- close: tex/pgfcircshapes
%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
%%%---------- open: tex/pgfcircmonopoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -4198,10 +4198,10 @@
%%%---------- close: tex/pgfcircmonopoles
%%%%%%%%%%% Springe nach tex/pgfcircbipoles
%%%---------- open: tex/pgfcircbipoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -9302,10 +9302,10 @@
%%%---------- close: tex/pgfcircbipoles
%%%%%%%%%%% Springe nach tex/pgfcirctripoles
%%%---------- open: tex/pgfcirctripoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -15010,10 +15010,10 @@
%%%---------- close: tex/pgfcirctripoles
%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
%%%---------- open: tex/pgfcircquadpoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -16161,10 +16161,10 @@
%%%---------- close: tex/pgfcircquadpoles
%%%%%%%%%%% Springe nach tex/pgfcircmultipoles
%%%---------- open: tex/pgfcircmultipoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -17939,10 +17939,10 @@
%%%%%%%%%%% Springe nach tex/pgfcirclabel
%%%---------- open: tex/pgfcirclabel.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -18308,10 +18308,10 @@
%%%---------- close: tex/pgfcirclabel
%%%%%%%%%%% Springe nach tex/pgfcircvoltage
%%%---------- open: tex/pgfcircvoltage.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -18807,10 +18807,10 @@
%%%---------- close: tex/pgfcircvoltage
%%%%%%%%%%% Springe nach tex/pgfcirccurrent
%%%---------- open: tex/pgfcirccurrent.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -19022,10 +19022,10 @@
%%%---------- close: tex/pgfcirccurrent
%%%%%%%%%%% Springe nach tex/pgfcircflow
%%%---------- open: tex/pgfcircflow.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -19236,10 +19236,10 @@
%%%%%%%%%%% Springe nach tex/pgfcircpath
%%%---------- open: tex/pgfcircpath.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.0.sty b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.0.sty
index 9771552881b..b5a2c5aa666 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.0.sty
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.0.sty
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.1.2-body.tex b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.1.2-body.tex
index 9d25525027d..9219fbd4bbc 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.1.2-body.tex
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.1.2-body.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -343,10 +343,10 @@
%%%%%%%%%
%%%%%%%%%%% Springe nach tex/pgfcirc.defines
%%%---------- open: tex/pgfcirc.defines.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -2449,10 +2449,10 @@
%%%---------- close: tex/pgfcirc.defines
%%%%%%%%%%% Springe nach tex/pgfcircutils
%%%---------- open: tex/pgfcircutils.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -2535,10 +2535,10 @@
%%%%%%%%%%% Springe nach tex/pgfcircshapes
%%%---------- open: tex/pgfcircshapes.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -3341,10 +3341,10 @@
%%%---------- close: tex/pgfcircshapes
%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
%%%---------- open: tex/pgfcircmonopoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -4357,10 +4357,10 @@
%%%---------- close: tex/pgfcircmonopoles
%%%%%%%%%%% Springe nach tex/pgfcircbipoles
%%%---------- open: tex/pgfcircbipoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -10254,10 +10254,10 @@
%%%---------- close: tex/pgfcircbipoles
%%%%%%%%%%% Springe nach tex/pgfcirctripoles
%%%---------- open: tex/pgfcirctripoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -16161,10 +16161,10 @@
%%%---------- close: tex/pgfcirctripoles
%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
%%%---------- open: tex/pgfcircquadpoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -17448,10 +17448,10 @@
%%%---------- close: tex/pgfcircquadpoles
%%%%%%%%%%% Springe nach tex/pgfcircmultipoles
%%%---------- open: tex/pgfcircmultipoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -20142,10 +20142,10 @@
%%%%%%%%%%% Springe nach tex/pgfcirclabel
%%%---------- open: tex/pgfcirclabel.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -20511,10 +20511,10 @@
%%%---------- close: tex/pgfcirclabel
%%%%%%%%%%% Springe nach tex/pgfcircvoltage
%%%---------- open: tex/pgfcircvoltage.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -21060,10 +21060,10 @@
%%%---------- close: tex/pgfcircvoltage
%%%%%%%%%%% Springe nach tex/pgfcirccurrent
%%%---------- open: tex/pgfcirccurrent.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -21275,10 +21275,10 @@
%%%---------- close: tex/pgfcirccurrent
%%%%%%%%%%% Springe nach tex/pgfcircflow
%%%---------- open: tex/pgfcircflow.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -21489,10 +21489,10 @@
%%%%%%%%%%% Springe nach tex/pgfcircpath
%%%---------- open: tex/pgfcircpath.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.1.2.sty b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.1.2.sty
index 0a3ea7c7611..cdb974752fc 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.1.2.sty
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.1.2.sty
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.2.7-body.tex b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.2.7-body.tex
index e36e6ff66c4..ce976529cd4 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.2.7-body.tex
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.2.7-body.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -320,10 +320,10 @@
%%%%%%%%%
%%%%%%%%%%% Springe nach tex/pgfcirc.defines
%%%---------- open: tex/pgfcirc.defines.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -2641,10 +2641,10 @@
%%%---------- close: tex/pgfcirc.defines
%%%%%%%%%%% Springe nach tex/pgfcircutils
%%%---------- open: tex/pgfcircutils.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -2736,10 +2736,10 @@
%%%%%%%%%%% Springe nach tex/pgfcircshapes
%%%---------- open: tex/pgfcircshapes.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -3548,10 +3548,10 @@
%%%---------- close: tex/pgfcircshapes
%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
%%%---------- open: tex/pgfcircmonopoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -4650,10 +4650,10 @@
%%%---------- close: tex/pgfcircmonopoles
%%%%%%%%%%% Springe nach tex/pgfcircbipoles
%%%---------- open: tex/pgfcircbipoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -10813,10 +10813,10 @@
%%%---------- close: tex/pgfcircbipoles
%%%%%%%%%%% Springe nach tex/pgfcirctripoles
%%%---------- open: tex/pgfcirctripoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -17247,10 +17247,10 @@
%%%---------- close: tex/pgfcirctripoles
%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
%%%---------- open: tex/pgfcircquadpoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -18993,10 +18993,10 @@
%%%---------- close: tex/pgfcircquadpoles
%%%%%%%%%%% Springe nach tex/pgfcircmultipoles
%%%---------- open: tex/pgfcircmultipoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -22024,10 +22024,10 @@
%%%%%%%%%%% Springe nach tex/pgfcirclabel
%%%---------- open: tex/pgfcirclabel.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -22395,10 +22395,10 @@
%%%---------- close: tex/pgfcirclabel
%%%%%%%%%%% Springe nach tex/pgfcircvoltage
%%%---------- open: tex/pgfcircvoltage.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -23026,10 +23026,10 @@
%%%---------- close: tex/pgfcircvoltage
%%%%%%%%%%% Springe nach tex/pgfcirccurrent
%%%---------- open: tex/pgfcirccurrent.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -23256,10 +23256,10 @@
%%%---------- close: tex/pgfcirccurrent
%%%%%%%%%%% Springe nach tex/pgfcircflow
%%%---------- open: tex/pgfcircflow.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -23497,10 +23497,10 @@
%%%%%%%%%%% Springe nach tex/pgfcircpath
%%%---------- open: tex/pgfcircpath.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.2.7.sty b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.2.7.sty
index 10621785e22..ea2e861f54d 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.2.7.sty
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.2.7.sty
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.4.6-body.tex b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.4.6-body.tex
index 4182695e66e..39e989317eb 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.4.6-body.tex
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.4.6-body.tex
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -324,10 +324,10 @@
%% we have to load this before options to define the magics for compatibility
%%%%%%%%%%% Springe nach tex/pgfcirc.defines
%%%---------- open: tex/pgfcirc.defines.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -1225,10 +1225,10 @@
%%%%%%%%%%% Springe nach tex/pgfcircutils
%%%---------- open: tex/pgfcircutils.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -1630,10 +1630,10 @@
%%%---------- close: tex/pgfcircutils
%%%%%%%%%%% Springe nach tex/pgfcircpath
%%%---------- open: tex/pgfcircpath.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -1995,10 +1995,10 @@
%%%%%%%%%%% Springe nach tex/pgfcircshapes
%%%---------- open: tex/pgfcircshapes.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -2817,10 +2817,10 @@
%%%---------- close: tex/pgfcircshapes
%%%%%%%%%%% Springe nach tex/pgfcircmonopoles
%%%---------- open: tex/pgfcircmonopoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -4020,10 +4020,10 @@
%%%---------- close: tex/pgfcircmonopoles
%%%%%%%%%%% Springe nach tex/pgfcircbipoles
%%%---------- open: tex/pgfcircbipoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -10250,10 +10250,10 @@
%%%---------- close: tex/pgfcircbipoles
%%%%%%%%%%% Springe nach tex/pgfcirctripoles
%%%---------- open: tex/pgfcirctripoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -18818,10 +18818,10 @@
%%%---------- close: tex/pgfcirctripoles
%%%%%%%%%%% Springe nach tex/pgfcircquadpoles
%%%---------- open: tex/pgfcircquadpoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -22579,10 +22579,10 @@
%%%---------- close: tex/pgfcircquadpoles
%%%%%%%%%%% Springe nach tex/pgfcircmultipoles
%%%---------- open: tex/pgfcircmultipoles.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -24740,10 +24740,10 @@
%%%%%%%%%%% Springe nach tex/pgfcirclabel
%%%---------- open: tex/pgfcirclabel.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -25142,10 +25142,10 @@
%%%---------- close: tex/pgfcirclabel
%%%%%%%%%%% Springe nach tex/pgfcircvoltage
%%%---------- open: tex/pgfcircvoltage.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -25852,10 +25852,10 @@
%%%---------- close: tex/pgfcircvoltage
%%%%%%%%%%% Springe nach tex/pgfcirccurrent
%%%---------- open: tex/pgfcirccurrent.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -26098,10 +26098,10 @@
%%%---------- close: tex/pgfcirccurrent
%%%%%%%%%%% Springe nach tex/pgfcircflow
%%%---------- open: tex/pgfcircflow.tex
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.4.6.sty b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.4.6.sty
index fb63155a427..62fad943aed 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.4.6.sty
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz-1.4.6.sty
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty b/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty
index 4f5ce00a0fc..a6da82fba53 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty
@@ -1,7 +1,7 @@
-% Copyright 2018-2024 by Romano Giannetti
-% Copyright 2015-2024 by Stefan Lindner
-% Copyright 2013-2024 by Stefan Erhardt
-% Copyright 2007-2024 by Massimo Redaelli
+% Copyright 2018-2025 by Romano Giannetti
+% Copyright 2015-2025 by Stefan Lindner
+% Copyright 2013-2025 by Stefan Erhardt
+% Copyright 2007-2025 by Massimo Redaelli
%
% This file may be distributed and/or modified
%
@@ -16,8 +16,8 @@
\providecommand\DeclareRelease[3]{}
\providecommand\DeclareCurrentRelease[2]{}
-\def\pgfcircversion{1.7.0}
-\def\pgfcircversiondate{2024/08/03}
+\def\pgfcircversion{1.7.1}
+\def\pgfcircversiondate{2025/01/10}
\DeclareRelease{0.4}{2012/12/20}{circuitikz-0.4-body.tex}
\DeclareRelease{v0.4}{2012/12/20}{circuitikz-0.4-body.tex}
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-bib.sty b/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-bib.sty
index 2a2af3a7d2b..d34fbbd49dd 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-bib.sty
+++ b/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-bib.sty
@@ -1,5 +1,5 @@
%
-% Copyright (c) 2021-2024 Zeping Lee
+% Copyright (c) 2021-2025 Zeping Lee
% Released under the MIT License.
% Repository: https://github.com/zepinglee/citeproc-lua
%
@@ -17,12 +17,12 @@
\NewDocumentCommand \printbibliography { O { } }
{
\int_gincr:N \g__csl_bib_list_index_int
- \tl_gset:Nx \g__csl_bib_list_index_tl { \int_use:N \g__csl_bib_list_index_int }
+ \tl_gset:Ne \g__csl_bib_list_index_tl { \int_use:N \g__csl_bib_list_index_int }
\__csl_set_categories:
% Bibliography filter
\group_begin:
\seq_clear:N \l__csl_bib_filter_seq
- \seq_put_right:Nx \l__csl_bib_filter_seq
+ \seq_put_right:Ne \l__csl_bib_filter_seq
{ index = \g__csl_bib_list_index_tl }
\keys_set:nn { csl / bibliography } {#1}
\__csl_serialize_seq:NN \l__csl_bib_filter_seq \l__csl_bib_filter_tl
@@ -101,14 +101,10 @@
}
-% Used for debugging and testing
-\clist_new:N \g__csl_bib_items_clist
-
-
\cs_new:Npn \__csl_write_aux_bibliography:n #1
{
\if@filesw
- \iow_now:Nx \@auxout
+ \iow_now:Ne \@auxout
{
\token_to_str:N \csl@aux@bibliography
{ \int_use:N \g__csl_ref_section_index_int }
@@ -126,7 +122,7 @@
\bool_new:N \l__csl_second_field_align_margin_bool
\tl_new:N \l__csl_line_spacing_tl
\tl_new:N \l__csl_entry_spacing_tl
-\tl_new:N \l__csl_bib_wides_label_tl
+\tl_new:N \l__csl_bib_widest_label_tl
\keys_define:nn { csl / bib-options }
{
@@ -150,7 +146,7 @@
hanging-indent .bool_set:N = \l__csl_hanging_indent_bool ,
line-spacing .tl_set:N = \l__csl_line_spacing_tl ,
entry-spacing .tl_set:N = \l__csl_entry_spacing_tl ,
- widest-label .tl_set:N = \l__csl_bib_wides_label_tl ,
+ widest-label .tl_set:N = \l__csl_bib_widest_label_tl ,
}
\keys_set:nn { csl / bib-options }
@@ -176,14 +172,13 @@
\l__csl_bib_font_tl
\list { }
{
- \__csl_set_bib_label_spacing:n { \l__csl_bib_wides_label_tl }
+ \__csl_set_bib_label_spacing:n { \l__csl_bib_widest_label_tl }
\__csl_set_bib_item_sep:
}
\sloppy
\__csl_set_bib_page_break:
\frenchspacing
\__csl_bib_url_setup:
- \clist_gclear:N \g__csl_bib_items_clist
}
{
\tl_set:Nn \@noitemerr
@@ -268,7 +263,6 @@
\cs_new:Npn \__csl_lbibitem_plain:nn [#1]#2
{
- \clist_gput_right:Nn \g__csl_bib_items_clist {#2}
\item [ \@biblabel {#1} \hfill ]
\ignorespaces
}
@@ -341,7 +335,6 @@
\cs_new:Npn \__csl_bibitem_plain:n #1
{
- \clist_gput_right:Nn \g__csl_bib_items_clist {#1}
\item
\ignorespaces
}
@@ -400,13 +393,13 @@
\clist_if_empty:NF \l__csl_bib_resources_clist
% { \clist_set_eq:NN \l__csl_bib_resources_clist \g__csl_global_bib_resources_clist }
{
- \exp_args:Nx \__csl_write_aux_bibdata:n
+ \exp_args:Ne \__csl_write_aux_bibdata:n
{ \clist_use:Nn \l__csl_bib_resources_clist { , } }
}
\tl_if_empty:NTF \l__csl_locale_tl
{ \tl_set_eq:NN \l__csl_locale_tl \g__csl_global_locale_tl }
{
- \exp_args:Nx \__csl_write_aux_options:n
+ \exp_args:Ne \__csl_write_aux_options:n
{ locale = \l__csl_locale_tl }
}
\sys_if_engine_luatex:TF
@@ -436,6 +429,7 @@
{
\__csl_get_style_class:
}
+ \__csl_read_entry_ids:
}
\cs_set_eq:NN \newrefsection \refsection
@@ -446,6 +440,7 @@
\int_gzero:N \g__csl_ref_section_index_int
\sys_if_engine_luatex:T
{ \lua_now:n { csl_citation_manager:end_ref_section() } }
+ \__csl_read_entry_ids:
}
}
@@ -694,7 +689,7 @@
\sys_if_engine_luatex:T
{ \lua_now:e { csl_citation_manager:set_categories("\l_tmpa_tl") } }
{
- \tl_put_left:Nx \l_tmpa_tl { categories = \c_left_brace_str }
+ \tl_put_left:Ne \l_tmpa_tl { categories = \c_left_brace_str }
\tl_put_right:NV \l_tmpa_tl \c_right_brace_str
\exp_args:NV \__csl_write_aux_options:n \l_tmpa_tl
}
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-cite.sty b/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-cite.sty
index 38128a99d82..c299f5de9bb 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-cite.sty
+++ b/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-cite.sty
@@ -1,5 +1,5 @@
%
-% Copyright (c) 2021-2024 Zeping Lee
+% Copyright (c) 2021-2025 Zeping Lee
% Released under the MIT License.
% Repository: https://github.com/zepinglee/citeproc-lua
%
@@ -52,7 +52,8 @@
\NewDocumentCommand \citeauthor { o o m }
{ \__csl_cite_in_text:nnnn {#1} {#2} {#3} { author-only } }
-% TODO: \citeyear
+\NewDocumentCommand \citeyear{ o o m }
+ { \__csl_cite_in_text:nnnn {#1} {#2} {#3} { cite-year } }
% Suppresses the author (from `natbib`).
\NewDocumentCommand \citeyearpar { o o m }
@@ -364,7 +365,7 @@
{
\int_if_exist:NT \c@chapter
{
- \prop_put:Nnx \l__csl_citation_properties_prop { chapterIndex }
+ \prop_put:Nne \l__csl_citation_properties_prop { chapterIndex }
{ \int_use:N \c@chapter }
}
}
@@ -372,12 +373,11 @@
\tl_new:N \l__csl_back_ref_tl
\prop_new:N \g__csl_back_ref_info_prop
-\prop_new:N \l__csl_back_ref_section_pop
% Provide empty \@currentHref when hyperref is not loaded.
% LaTeX2e 2023-06-01 defines `\@currentHref` in the kernel.
\cs_if_exist:NF \@currentHref
- { \cs_new:Npn \@currentHref {} }
+ { \cs_new:Npn \@currentHref { } }
% TODO: write backref info to .brf file or .aux file
\cs_new:Npn \__csl_add_back_ref_info:
@@ -388,11 +388,11 @@
% \@currentHref: the current anchor name
\tl_if_empty:NTF \@currentlabel
{
- \tl_set:Nx \l__csl_back_ref_tl
+ \tl_set:Ne \l__csl_back_ref_tl
{ { \thepage } { (document) } { Doc-Start } }
}
{
- \tl_set:Nx \l__csl_back_ref_tl
+ \tl_set:Ne \l__csl_back_ref_tl
{ { \thepage } { \@currentlabel } { \@currentHref } }
}
\seq_map_inline:Nn \l__csl_cite_keys_seq
@@ -453,7 +453,7 @@
\group_end:
}
{
- \exp_args:Nx \__csl_print_undefined_citation:n
+ \exp_args:Ne \__csl_print_undefined_citation:n
{ \seq_use:Nn \l__csl_cite_keys_seq { ,~ } }
}
}
@@ -497,7 +497,7 @@
% Set \l__csl_citation_id_tl = "ITEM-1,ITEM-2@4".
\cs_new:Npn \__csl_process_citation_id:
{
- \tl_set:Nx \l__csl_cite_keys_tl
+ \tl_set:Ne \l__csl_cite_keys_tl
{ \seq_use:Nn \l__csl_cite_keys_seq { , } }
% \prop_show:N \g__csl_citations_count_prop
% \tl_show:N \l__csl_cite_keys_tl
@@ -510,7 +510,7 @@
{ \int_set_eq:NN \l__csl_citation_count_int \c_one_int }
\prop_gput:NVV \g__csl_citations_count_prop \l__csl_cite_keys_tl
\l__csl_citation_count_int
- \tl_set:Nx \l__csl_citation_id_tl
+ \tl_set:Ne \l__csl_citation_id_tl
{ \l__csl_cite_keys_tl @ \int_use:N \l__csl_citation_count_int }
}
@@ -524,7 +524,7 @@
% #1: \l__csl_note_index_tl
{
\bool_if:NTF \l__csl_note_bool
- { \tl_set:Nx \l__csl_note_index_tl { \int_use:c { c@ \@mpfn } } }
+ { \tl_set:Ne \l__csl_note_index_tl { \int_use:c { c@ \@mpfn } } }
{
\tl_if_empty:NTF \l__csl_class_tl
{
@@ -532,7 +532,7 @@
\int_set_eq:Nc \l_tmpa_int { c@ \@mpfn }
\int_gincr:N \g__csl_pseudo_note_index_int
\int_add:Nn \l_tmpa_int { \g__csl_pseudo_note_index_int }
- \tl_set:Nx \l__csl_note_index_tl { \int_use:N \l_tmpa_int }
+ \tl_set:Ne \l__csl_note_index_tl { \int_use:N \l_tmpa_int }
}
{ \tl_set:Nn \l__csl_note_index_tl { 0 } }
}
@@ -579,7 +579,7 @@
\clist_map_inline:nn {#1} { \__csl_warn_citation_undefined:n {##1} }
% Underscores in citation keys like `zankl_kunstliche_2019` may cause a missing $ error.
% Thus We convert them to str.
- \tl_set:Nx \l_tmpa_str { \tl_to_str:n {#1} }
+ \tl_set:Ne \l_tmpa_str { \tl_to_str:n {#1} }
\exp_args:NV \__csl_set_undefined_cite:n \l_tmpa_str
}
\bool_if:NT \l__csl_regression_test_bool
@@ -601,7 +601,7 @@
{
\G@refundefinedtrue
% The warning message is read by latexmk.
- \@latex@warning {Citation~ `#1'~ on~ page~ \thepage \space undefined}
+ \@latex@warning { Citation~ `#1'~ on~ page~ \thepage \space undefined }
}
@@ -613,13 +613,13 @@
{
\__csl_cite_init:
\__csl_collect_citation_items:nnn { } { } {#1}
- \tl_set:Nx \l__csl_cite_items_tl
+ \tl_set:Ne \l__csl_cite_items_tl
{ \seq_use:Nn \l__csl_citation_items_seq { , } }
\prop_clear:N \l__csl_citation_properties_prop
\prop_put:Nnn \l__csl_citation_properties_prop { noteIndex } { 0 }
\__csl_make_chapter_property:
\__csl_serialize_prop:NN \l__csl_citation_properties_prop \l__csl_citation_properties_tl
- \tl_set:Nx \l__csl_citation_info_tl
+ \tl_set:Ne \l__csl_citation_info_tl
{
citationID = { @nocite } ,
citationItems = { \tl_use:N \l__csl_cite_items_tl } ,
@@ -659,7 +659,7 @@
% Used in aux files to register cite items.
% #1: a citation object
-\cs_set:Npn \csl@aux@cite #1#2
+\cs_new:Npn \csl@aux@cite #1#2
{
\sys_if_engine_luatex:T
{ \lua_now:e { csl_citation_manager:register_citation_info(#1, "\lua_escape:n {#2}") } }
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-compatible.sty b/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-compatible.sty
index 8de98b6a9c6..5052318b127 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-compatible.sty
+++ b/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-compatible.sty
@@ -1,5 +1,5 @@
%
-% Copyright (c) 2021-2024 Zeping Lee
+% Copyright (c) 2021-2025 Zeping Lee
% Released under the MIT License.
% Repository: https://github.com/zepinglee/citeproc-lua
%
@@ -97,15 +97,53 @@
% ### `hyperref`
-\cs_set:Npn \__csl_hyperref_cite_item:nn #1#2
+% The hyperref package also patches \bibcite but it cannot provide hyperlinks
+% when used with csl.
+\bool_new:N \l__csl_hyperref_loaded_bool
+\hook_gput_code:nnn { package / hyperref / after } { . }
+ {
+ \bool_set_true:N \l__csl_hyperref_loaded_bool
+ % Pakcage "hyperref" redefines \@lbibitem and \bibitem and we need to
+ % recover them.
+ % In non-implicit mode (e.g., loaded by `beamer`), hyperref stops early
+ % (`\MaybeStopEarly`) and it doesn't redefine the cite internal commands.
+ \cs_if_exist:NT \@extra@b@citeb
+ {
+ \cs_gset_eq:NN \cslcite \__csl_hyperref_cite_item:nn
+ \cs_gset_eq:NN \@lbibitem \__csl_lbibitem:
+ \cs_gset_eq:NN \@bibitem \__csl_bibitem:
+ \cs_gset_eq:NN \__csl_lbibitem_plain:nn \__csl_hyperref_lbibitem:nn
+ \cs_gset_eq:NN \__csl_bibitem_plain:n \__csl_hyperref_bibitem:n
+ \cs_gset_eq:NN \__csl_process_entry_ids:n \__csl_hyperref_process_entry_ids:n
+ \cs_gset_eq:NN \__csl_process_excluded_ids:n \__csl_hyperref_process_excluded_ids:n
+ \cs_gset_eq:NN \__csl_read_entry_ids: \__csl_hyperref_read_entry_ids:
+ }
+ }
+
+\clist_new:N \l__csl_ref_section_entry_ids_clist
+\clist_new:N \l__csl_ref_section_excluded_ids_clist
+
+\cs_new:Npn \__csl_hyperref_cite_item:nn #1#2
{
- \hyper@@link [ cite ] { }
- { cite \int_use:N \g__csl_ref_section_index_int . #1 \@extra@b@citeb } { #2 }
+ % \clist_show:N \l__csl_ref_section_excluded_ids_clist
+ % \clist_show:N \l__csl_ref_section_entry_ids_clist
+ \clist_if_in:NnTF \l__csl_ref_section_excluded_ids_clist {#1}
+ {
+ \clist_if_in:NnTF \l__csl_ref_section_entry_ids_clist {#1}
+ {
+ \hyper@@link [ cite ] { }
+ { cite \int_use:N \g__csl_ref_section_index_int . #1 \@extra@b@citeb } {#2}
+ }
+ {#2}
+ }
+ {
+ \hyper@@link [ cite ] { }
+ { cite \int_use:N \g__csl_ref_section_index_int . #1 \@extra@b@citeb } {#2}
+ }
}
\cs_new:Npn \__csl_hyperref_lbibitem:nn [#1]#2
{
- \clist_gput_right:Nn \g__csl_bib_items_clist {#2}
\@skiphyperreftrue
\H@item
[
@@ -131,7 +169,6 @@
\cs_new:Npn \__csl_hyperref_bibitem:n #1
{
- \clist_gput_right:Nn \g__csl_bib_items_clist {#1}
\@skiphyperreftrue \H@item \@skiphyperreffalse
\Hy@raisedlink
{
@@ -143,26 +180,77 @@
\ignorespaces
}
-% The hyperref package also patches \bibcite but it cannot provide hyperlinks
-% when used with csl.
-\bool_new:N \l__csl_hyperref_loaded_bool
-\hook_gput_code:nnn { package / hyperref / after } { . }
+\prop_new:N \g__csl_entry_ids_prop
+\prop_new:N \g__csl_excluded_ids_prop
+
+\cs_new:Npn \__csl_hyperref_process_entry_ids:n #1
{
- \bool_set_true:N \l__csl_hyperref_loaded_bool
- % Pakcage "hyperref" redefines \@lbibitem and \bibitem and we need to
- % recover them.
- % In non-implicit mode (e.g., loaded by `beamer`), hyperref stops early
- % (`\MaybeStopEarly`) and it doesn't redefine the cite internal commands.
- \cs_if_exist:NT \@extra@b@citeb
+ \sys_if_engine_luatex:TF
{
- \cs_gset_eq:NN \@lbibitem \__csl_lbibitem:
- \cs_gset_eq:NN \@bibitem \__csl_bibitem:
- \cs_gset_eq:NN \__csl_lbibitem_plain:nn \__csl_hyperref_lbibitem:nn
- \cs_gset_eq:NN \__csl_bibitem_plain:n \__csl_hyperref_bibitem:n
- \cs_gset_eq:NN \cslcite \__csl_hyperref_cite_item:nn
+ \__csl_if_preamble:TF
+ {
+ % From `\csl@aux@options` commands in the `.aux` file
+ \exp_args:NNV \__csl_append_entry_ids:Nnn \g__csl_entry_ids_prop
+ \l__csl_ref_section_index_tl {#1}
+ }
+ {
+ % From `\csloptions` commands via `\printbibliography`
+ \__csl_write_aux_options:n { entry-ids = {#1} }
+ }
+ }
+ {
+ % Read by `\csloptions` commands from the `.bbl` file
+ \exp_args:NNV \__csl_append_entry_ids:Nnn \g__csl_entry_ids_prop
+ \l__csl_ref_section_index_tl {#1}
+ }
+ }
+
+\cs_new:Npn \__csl_hyperref_process_excluded_ids:n #1
+ {
+ \sys_if_engine_luatex:TF
+ {
+ \__csl_if_preamble:TF
+ {
+ % From `\csl@aux@options` commands in the `.aux` file
+ \exp_args:NNV \__csl_append_entry_ids:Nnn \g__csl_excluded_ids_prop
+ \l__csl_ref_section_index_tl {#1}
+ }
+ {
+ % From `\csloptions` commands via `\printbibliography`
+ \__csl_write_aux_options:n { excluded-ids = {#1} }
+ }
+ }
+ {
+ % Read by `\csloptions` commands from the `.bbl` file
+ \exp_args:NNV \__csl_append_entry_ids:Nnn \g__csl_excluded_ids_prop
+ \l__csl_ref_section_index_tl {#1}
}
}
+\cs_new:Npn \__csl_append_entry_ids:Nnn #1#2#3
+ {
+ \clist_clear:N \l_tmpa_clist
+ \prop_get:NnNT #1 {#2} \l_tmpa_tl
+ { \clist_set:NV \l_tmpa_clist \l_tmpa_tl }
+ \clist_map_inline:nn {#3}
+ {
+ \clist_if_in:NnF \l_tmpa_clist {##1}
+ { \clist_put_right:Nn \l_tmpa_clist {##1} }
+ }
+ \prop_gput:Nne #1 {#2}
+ { \clist_use:Nn \l_tmpa_clist { , } }
+ }
+
+\cs_new:Npn \__csl_hyperref_read_entry_ids:
+ {
+ \prop_get:NeNT \g__csl_entry_ids_prop
+ { \int_use:N \g__csl_ref_section_index_int } \l_tmpa_tl
+ { \clist_set:NV \l__csl_ref_section_entry_ids_clist \l_tmpa_tl }
+ \prop_get:NeNT \g__csl_excluded_ids_prop
+ { \int_use:N \g__csl_ref_section_index_int } \l_tmpa_tl
+ { \clist_set:NV \l__csl_ref_section_excluded_ids_clist \l_tmpa_tl }
+ }
+
% ### `perpage`
@@ -174,7 +262,7 @@
{
\cs_set:Npn \__csl_make_chapter_property:
{
- \prop_put:Nnx \l__csl_citation_properties_prop { chapterIndex }
+ \prop_put:Nne \l__csl_citation_properties_prop { chapterIndex }
{ \int_use:N \c@page }
}
}
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-data.sty b/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-data.sty
index e4088c7726b..4dff3657f40 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-data.sty
+++ b/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-data.sty
@@ -1,5 +1,5 @@
%
-% Copyright (c) 2021-2024 Zeping Lee
+% Copyright (c) 2021-2025 Zeping Lee
% Released under the MIT License.
% Repository: https://github.com/zepinglee/citeproc-lua
%
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-init.sty b/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-init.sty
index de5b5bed4ce..996df7b73e4 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-init.sty
+++ b/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-init.sty
@@ -1,5 +1,5 @@
%
-% Copyright (c) 2021-2024 Zeping Lee
+% Copyright (c) 2021-2025 Zeping Lee
% Released under the MIT License.
% Repository: https://github.com/zepinglee/citeproc-lua
%
@@ -18,6 +18,7 @@
\__csl_load_bbl:
\__csl_get_style_class:
}
+ \__csl_read_entry_ids:
\__csl_set_ref_section_level:
}
@@ -41,7 +42,7 @@
\clist_if_empty:NTF \l__csl_bib_resources_clist
{ \msg_warning:nn { citation-style-language } { empty-bib-resources } }
{
- \exp_args:Nx \__csl_write_aux_bibdata:n
+ \exp_args:Ne \__csl_write_aux_bibdata:n
{ \clist_use:Nn \l__csl_bib_resources_clist { , } }
}
\__csl_write_aux_csl_options:
@@ -50,7 +51,7 @@
\cs_new:Npn \__csl_write_aux_bibstyle:n #1
{
\if@filesw
- \iow_now:Nx \@auxout
+ \iow_now:Ne \@auxout
{
\token_to_str:N \csl@aux@style
{ \int_use:N \g__csl_ref_section_index_int } {#1}
@@ -62,7 +63,7 @@
{
\if@filesw
% Full expansion for files like \jobname.bib
- \iow_now:Nx \@auxout
+ \iow_now:Ne \@auxout
{
\token_to_str:N \csl@aux@data
{ \int_use:N \g__csl_ref_section_index_int } {#1}
@@ -83,7 +84,11 @@
\cs_new:Npn \__csl_initialize_lua_module:
{
- \tl_set:Nx \l_tmpa_tl { \clist_use:Nn \l__csl_bib_resources_clist { , } }
+ \bool_if:NT \l__csl_regression_test_bool
+ {
+ \lua_now:n { csl_citation_manager.regression_test = true }
+ }
+ \tl_set:Ne \l_tmpa_tl { \clist_use:Nn \l__csl_bib_resources_clist { , } }
\lua_now:e
{
csl_citation_manager:init(
@@ -125,7 +130,7 @@
\bool_set_false:N \l__csl_note_bool
\bool_if:NT \l__csl_engine_initialized_bool
{
- \tl_set:Nx \l__csl_class_tl { \lua_now:n { tex.print(csl_citation_manager:get_style_class()) } }
+ \tl_set:Ne \l__csl_class_tl { \lua_now:n { tex.print(csl_citation_manager:get_style_class()) } }
\tl_if_eq:NnT \l__csl_class_tl { note }
{ \bool_set_true:N \l__csl_note_bool }
}
@@ -134,8 +139,6 @@
}
-\clist_new:N \l__csl_options_clist
-
\bool_new:N \l__csl_engine_initialized_bool
\prop_new:N \l__csl_language_code_map_prop
@@ -259,7 +262,7 @@
\cs_new:Npn \__csl_write_aux_csl_options:
{
- \clist_clear:N \l__csl_options_clist
+ \clist_clear:N \l_tmpa_clist % list of options to write to aux file
% locale
\tl_if_empty:NT \l__csl_locale_tl
{
@@ -271,25 +274,25 @@
}
\tl_if_empty:NF \l__csl_locale_tl
{
- \clist_put_right:Nx \l__csl_options_clist
+ \clist_put_right:Ne \l_tmpa_clist
{ locale = \l__csl_locale_tl }
}
% linking
\@ifpackageloaded { hyperref }
- { \clist_put_right:Nn \l__csl_options_clist { linking = true } }
+ { \clist_put_right:Nn \l_tmpa_clist { linking = true } }
{ }
% write to aux file
- \prop_if_empty:NF \l__csl_options_clist
+ \prop_if_empty:NF \l_tmpa_clist
{
- \exp_args:Nx \__csl_write_aux_options:n
- { \clist_use:Nn \l__csl_options_clist { , } }
+ \exp_args:Ne \__csl_write_aux_options:n
+ { \clist_use:Nn \l_tmpa_clist { , } }
}
}
\cs_new:Npn \__csl_write_aux_options:n #1
{
\if@filesw
- \iow_now:Nx \@auxout
+ \iow_now:Ne \@auxout
{
\token_to_str:N \csl@aux@options
{ \int_use:N \g__csl_ref_section_index_int } {#1}
@@ -297,7 +300,13 @@
\fi
}
-\cs_new:Npn \csl@aux@options #1#2 { }
+\tl_new:N \l__csl_ref_section_index_tl
+
+\cs_new:Npn \csl@aux@options #1#2
+ {
+ \tl_set:Nn \l__csl_ref_section_index_tl {#1}
+ \keys_set:nn { csl / options } {#2}
+ }
% Load .bbl at the beginning of document to save one pass of latex.
@@ -345,15 +354,25 @@
% #1: refsection index
% #2: refsection options
\NewDocumentCommand \csloptions { m m }
- { \keys_set:nn { csl / options } { #2 } }
+ {
+ \tl_set:Nn \l__csl_ref_section_index_tl {#1}
+ \keys_set:nn { csl / options } {#2}
+ }
% The class option is in the `<style>=<class>` form
% (e.g. `\csloptions{class={apa=in-text}}`).
\keys_define:nn { csl / options }
{
class .code:n = { \prop_gput_from_keyval:Nn \g__csl_style_class_prop {#1} },
+ entry-ids .code:n = { \__csl_process_entry_ids:n {#1} } ,
+ excluded-ids .code:n = { \__csl_process_excluded_ids:n {#1} } ,
+ unknown .code:n = { } ,
}
+\cs_new:Npn \__csl_process_entry_ids:n #1 { }
+
+\cs_new:Npn \__csl_process_excluded_ids:n #1 { }
+
\prop_new:N \g__csl_style_class_prop
% The `\textcite` bahaves differently with note styles.
@@ -389,7 +408,7 @@
{
\tl_if_blank:VF \l__csl_style_tl
{
- \exp_args:NNx \ior_open:Nn \l__csl_style_ior { \l__csl_style_tl .csl }
+ \exp_args:NNe \ior_open:Nn \l__csl_style_ior { \l__csl_style_tl .csl }
\ior_map_inline:Nn \l__csl_style_ior
{
% \tl_show:n {##1}
@@ -420,6 +439,9 @@
% \msg_new:nnn { citation-style-language } { file-non-exist }
% { No~ file~ #1. }
+% This is a hook for `hyperref`.
+\cs_new:Npn \__csl_read_entry_ids: {}
+
\cs_new:Npn \__csl_set_ref_section_level:
{
\str_case:Vn \l__csl_bib_ref_section_str
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language.sty b/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language.sty
index f6039b4008c..991f027ec97 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language.sty
+++ b/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language.sty
@@ -1,5 +1,5 @@
%
-% Copyright (c) 2021-2024 Zeping Lee
+% Copyright (c) 2021-2025 Zeping Lee
% Released under the MIT License.
% Repository: https://github.com/zepinglee/citeproc-lua
%
@@ -9,7 +9,7 @@
\RequirePackage{expl3}
\RequirePackage{xparse}
-\ProvidesExplPackage {citation-style-language} {2024-08-28} {0.6.3}
+\ProvidesExplPackage {citation-style-language} {2025-01-25} {0.6.8}
{Citation Style Language for LaTeX}
\RequirePackage { l3keys2e }
@@ -100,7 +100,7 @@
locale .code:n =
{
\tl_set:Nn \l__csl_locale_tl {#1}
- \tl_gset:Nn \g__csl_global_locale {#1}
+ \tl_gset:Nn \g__csl_global_locale_tl {#1}
} ,
backref .choices:nn =
{ true, page, section, false }
@@ -123,13 +123,13 @@
\cs_new:Npn \__csl_set_back_ref:n #1
{
- \str_if_eq:nnTF {#1} {false}
+ \str_if_eq:nnTF {#1} { false }
{
\bool_set_false:N \l__csl_back_ref_bool
}
{
\bool_set_true:N \l__csl_back_ref_bool
- \str_if_eq:nnTF {#1} {true}
+ \str_if_eq:nnTF {#1} { true }
{ \str_set:Nn \l__csl_back_ref_type_str { page } }
{ \str_set:Nn \l__csl_back_ref_type_str {#1} }
}
@@ -159,7 +159,7 @@
}
\tl_new:N \g__csl_aux_bibstyle_tl
-\cs_set:Npn \csl@aux@style #1#2
+\cs_new:Npn \csl@aux@style #1#2
{
\str_if_eq:nnT {#1} { 0 }
{ \tl_gset:Nn \g__csl_aux_bibstyle_tl {#2} }
@@ -167,18 +167,27 @@
% Write to an empty `.ccf` file for use with latexmk
-\iow_new:N \l__csl_ccf_iow
-\iow_open:Nn \l__csl_ccf_iow { \c_sys_jobname_str .ccf }
-\iow_now:Nx \l__csl_ccf_iow { }
-\iow_close:N \l__csl_ccf_iow
+\sys_if_engine_luatex:F
+ {
+ \iow_new:N \l__csl_ccf_iow
+ \iow_open:Nn \l__csl_ccf_iow { \c_sys_jobname_str .ccf }
+ \iow_now:Ne \l__csl_ccf_iow
+ {
+ \c_percent_str \c_space_tl This~ file~ is~ generated~ by~
+ citation-style-language~ package. \iow_newline:
+ \c_percent_str \c_space_tl Its~ main~ purpose~ is~ to~ be~ recognized~
+ by~ latexmk.
+ }
+ \iow_close:N \l__csl_ccf_iow
+ }
% Load other modules
-\input{citation-style-language-init.sty}
-\input{citation-style-language-data.sty}
-\input{citation-style-language-cite.sty}
-\input{citation-style-language-bib.sty}
-\input{citation-style-language-compatible.sty}
+\input { citation-style-language-init.sty }
+\input { citation-style-language-data.sty }
+\input { citation-style-language-cite.sty }
+\input { citation-style-language-bib.sty }
+\input { citation-style-language-compatible.sty }
\endinput
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-af-ZA.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-af-ZA.xml
index 4f8cacbef07..b3d23f8c015 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-af-ZA.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-af-ZA.xml
@@ -2,7 +2,7 @@
<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="af-ZA">
<info>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ar.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ar.xml
index 646dadaea78..9ab7b3bf06c 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ar.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ar.xml
@@ -8,7 +8,7 @@
<name>Dr. Ayman Saleh</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
@@ -620,7 +620,18 @@
<term name="month-12">ديسمبر</term>
<!-- SHORT MONTH FORMS -->
-
+ <term name="month-01" form="short">يناير</term>
+ <term name="month-02" form="short">فبراير</term>
+ <term name="month-03" form="short">مارس</term>
+ <term name="month-04" form="short">أبريل</term>
+ <term name="month-05" form="short">مايو</term>
+ <term name="month-06" form="short">يونيو</term>
+ <term name="month-07" form="short">يوليو</term>
+ <term name="month-08" form="short">أغسطس</term>
+ <term name="month-09" form="short">سبتمبر</term>
+ <term name="month-10" form="short">أكتوبر</term>
+ <term name="month-11" form="short">نوفمبر</term>
+ <term name="month-12" form="short">ديسمبر</term>
<!-- SEASONS -->
<term name="season-01">ربيع</term>
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-bg-BG.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-bg-BG.xml
index f6a985a0075..66d72abe510 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-bg-BG.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-bg-BG.xml
@@ -2,7 +2,7 @@
<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="bg-BG">
<info>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-12T12:31:23-04:00</updated>
+ <updated>2024-03-12T14:00:50+00:00</updated>
<translator>
<name>Valeriya Simeonova</name>
<email>simeonova@fmi.uni-sofia.bg</email>
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ca-AD.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ca-AD.xml
index 44598fcb817..bedf8229516 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ca-AD.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ca-AD.xml
@@ -8,7 +8,7 @@
<name>javimat</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-cs-CZ.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-cs-CZ.xml
index 827c5bb977c..9ff4c3bc88c 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-cs-CZ.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-cs-CZ.xml
@@ -14,7 +14,7 @@
<name>Michal Hoftich</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-cy-GB.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-cy-GB.xml
index f580c3d639c..a34f1eaf532 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-cy-GB.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-cy-GB.xml
@@ -2,7 +2,7 @@
<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="cy-GB">
<info>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2014-10-08T12:00:00+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-da-DK.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-da-DK.xml
index 4ae9bafc887..b5100204ab1 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-da-DK.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-da-DK.xml
@@ -11,7 +11,7 @@
<name>hafnius</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-AT.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-AT.xml
index 833ff58f768..dae463d91dc 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-AT.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-AT.xml
@@ -19,8 +19,14 @@
<translator>
<name>Frank Bennett</name>
</translator>
+ <translator>
+ <name>Patrick O'Brien</name>
+ </translator>
+ <translator>
+ <name>Nicolas Chachereau</name>
+ </translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2023-03-28T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
@@ -34,33 +40,33 @@
<date-part name="year"/>
</date>
<terms>
- <term name="advance-online-publication">advance online publication</term>
- <term name="album">album</term>
- <term name="audio-recording">audio recording</term>
- <term name="film">film</term>
- <term name="henceforth">henceforth</term>
+ <term name="advance-online-publication">Online-Vorab-Publikation</term>
+ <term name="album">Album</term>
+ <term name="audio-recording">Audioaufzeichnung</term>
+ <term name="film">Film</term>
+ <term name="henceforth">zukünftig</term>
<term name="loc-cit">loc. cit.</term> <!-- like ibid., the abbreviated form is the regular form -->
- <term name="no-place">no place</term>
- <term name="no-place" form="short">n.p.</term>
- <term name="no-publisher">no publisher</term> <!-- sine nomine -->
- <term name="no-publisher" form="short">n.p.</term>
- <term name="on">on</term>
+ <term name="no-place">ohne Ort</term>
+ <term name="no-place" form="short">o.&#160;O.</term>
+ <term name="no-publisher">ohne Verlag</term> <!-- sine nomine -->
+ <term name="no-publisher" form="short">o.&#160;V.</term>
+ <term name="on">auf</term>
<term name="op-cit">op. cit.</term> <!-- like ibid., the abbreviated form is the regular form -->
- <term name="original-work-published">original work published</term>
+ <term name="original-work-published">Ursprünglich erschienen</term>
<term name="personal-communication">persönliche Kommunikation</term>
- <term name="podcast">podcast</term>
- <term name="podcast-episode">podcast episode</term>
+ <term name="podcast">Podcast</term>
+ <term name="podcast-episode">Podcast-Episode</term>
<term name="preprint">preprint</term>
- <term name="radio-broadcast">radio broadcast</term>
- <term name="radio-series">radio series</term>
- <term name="radio-series-episode">radio series episode</term>
- <term name="special-issue">special issue</term>
- <term name="special-section">special section</term>
- <term name="television-broadcast">television broadcast</term>
- <term name="television-series">television series</term>
- <term name="television-series-episode">television series episode</term>
- <term name="video">video</term>
- <term name="working-paper">working paper</term>
+ <term name="radio-broadcast">Radioaufzeichnung</term>
+ <term name="radio-series">Sendereihe</term>
+ <term name="radio-series-episode">Sendereihenfolge</term>
+ <term name="special-issue">Spezialausgabe</term>
+ <term name="special-section">Sonderbereich</term>
+ <term name="television-broadcast">Fernsehsendung</term>
+ <term name="television-series">Fernsehserie</term>
+ <term name="television-series-episode">Serienfolge</term>
+ <term name="video">Video</term>
+ <term name="working-paper">Arbeitspapier</term>
<term name="accessed">zugegriffen</term>
<term name="and">und</term>
<term name="and others">und andere</term>
@@ -294,8 +300,8 @@
<multiple>Zeilen</multiple>
</term>
<term name="note">
- <single>Note</single>
- <multiple>Noten</multiple>
+ <single>Anmerkung</single>
+ <multiple>Anmerkungen</multiple>
</term>
<term name="opus">
<single>Opus</single>
@@ -404,8 +410,8 @@
<term name="figure" form="short">Abb.</term>
<term name="folio" form="short">Fol.</term>
<term name="issue" form="short">Nr.</term>
- <term name="line" form="short">l.</term>
- <term name="note" form="short">n.</term>
+ <term name="line" form="short">Z.</term>
+ <term name="note" form="short">Anm.</term>
<term name="opus" form="short">op.</term>
<term name="page" form="short">
<single>S.</single>
@@ -446,7 +452,7 @@
</term>
<term name="volume" form="short">
<single>Bd.</single>
- <multiple>Bd.</multiple>
+ <multiple>Bde.</multiple>
</term>
<!-- SYMBOL LOCATOR FORMS -->
@@ -671,7 +677,7 @@
<term name="editortranslator" form="verb-short">hg.&#160;&amp; übers. von</term>
<!-- LONG MONTH FORMS -->
- <term name="month-01">Jänner</term>
+ <term name="month-01">Januar</term>
<term name="month-02">Februar</term>
<term name="month-03">März</term>
<term name="month-04">April</term>
@@ -685,7 +691,7 @@
<term name="month-12">Dezember</term>
<!-- SHORT MONTH FORMS -->
- <term name="month-01" form="short">Jän.</term>
+ <term name="month-01" form="short">Jan.</term>
<term name="month-02" form="short">Feb.</term>
<term name="month-03" form="short">März</term>
<term name="month-04" form="short">Apr.</term>
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-CH.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-CH.xml
index 47a13f2740f..7d2311b4e2a 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-CH.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-CH.xml
@@ -13,8 +13,14 @@
<translator>
<name>Sebastian Karcher</name>
</translator>
+ <translator>
+ <name>Patrick O'Brien</name>
+ </translator>
+ <translator>
+ <name>Nicolas Chachereau</name>
+ </translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2023-03-28T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
@@ -28,33 +34,33 @@
<date-part name="year"/>
</date>
<terms>
- <term name="advance-online-publication">advance online publication</term>
- <term name="album">album</term>
- <term name="audio-recording">audio recording</term>
- <term name="film">film</term>
- <term name="henceforth">henceforth</term>
+ <term name="advance-online-publication">Online-Vorab-Publikation</term>
+ <term name="album">Album</term>
+ <term name="audio-recording">Audioaufzeichnung</term>
+ <term name="film">Film</term>
+ <term name="henceforth">zukünftig</term>
<term name="loc-cit">loc. cit.</term> <!-- like ibid., the abbreviated form is the regular form -->
- <term name="no-place">no place</term>
- <term name="no-place" form="short">n.p.</term>
- <term name="no-publisher">no publisher</term> <!-- sine nomine -->
- <term name="no-publisher" form="short">n.p.</term>
- <term name="on">on</term>
+ <term name="no-place">ohne Ort</term>
+ <term name="no-place" form="short">o.&#160;O.</term>
+ <term name="no-publisher">ohne Verlag</term> <!-- sine nomine -->
+ <term name="no-publisher" form="short">o.&#160;V.</term>
+ <term name="on">auf</term>
<term name="op-cit">op. cit.</term> <!-- like ibid., the abbreviated form is the regular form -->
- <term name="original-work-published">original work published</term>
+ <term name="original-work-published">Ursprünglich erschienen</term>
<term name="personal-communication">persönliche Kommunikation</term>
- <term name="podcast">podcast</term>
- <term name="podcast-episode">podcast episode</term>
+ <term name="podcast">Podcast</term>
+ <term name="podcast-episode">Podcast-Episode</term>
<term name="preprint">preprint</term>
- <term name="radio-broadcast">radio broadcast</term>
- <term name="radio-series">radio series</term>
- <term name="radio-series-episode">radio series episode</term>
- <term name="special-issue">special issue</term>
- <term name="special-section">special section</term>
- <term name="television-broadcast">television broadcast</term>
- <term name="television-series">television series</term>
- <term name="television-series-episode">television series episode</term>
- <term name="video">video</term>
- <term name="working-paper">working paper</term>
+ <term name="radio-broadcast">Radioaufzeichnung</term>
+ <term name="radio-series">Sendereihe</term>
+ <term name="radio-series-episode">Sendereihenfolge</term>
+ <term name="special-issue">Spezialausgabe</term>
+ <term name="special-section">Sonderbereich</term>
+ <term name="television-broadcast">Fernsehsendung</term>
+ <term name="television-series">Fernsehserie</term>
+ <term name="television-series-episode">Serienfolge</term>
+ <term name="video">Video</term>
+ <term name="working-paper">Arbeitspapier</term>
<term name="accessed">zugegriffen</term>
<term name="and">und</term>
<term name="and others">und andere</term>
@@ -288,8 +294,8 @@
<multiple>Zeilen</multiple>
</term>
<term name="note">
- <single>Note</single>
- <multiple>Noten</multiple>
+ <single>Anmerkung</single>
+ <multiple>Anmerkungen</multiple>
</term>
<term name="opus">
<single>Opus</single>
@@ -397,8 +403,8 @@
<term name="figure" form="short">Abb.</term>
<term name="folio" form="short">Fol.</term>
<term name="issue" form="short">Nr.</term>
- <term name="line" form="short">l.</term>
- <term name="note" form="short">n.</term>
+ <term name="line" form="short">Z.</term>
+ <term name="note" form="short">Anm.</term>
<term name="opus" form="short">op.</term>
<term name="page" form="short">
<single>S.</single>
@@ -439,7 +445,7 @@
</term>
<term name="volume" form="short">
<single>Bd.</single>
- <multiple>Bd.</multiple>
+ <multiple>Bde.</multiple>
</term>
<!-- SYMBOL LOCATOR FORMS -->
@@ -529,6 +535,10 @@
<single>Herausgeber</single>
<multiple>Herausgeber</multiple>
</term>
+ <term name="collection-editor">
+ <single>Reihenherausgeber</single>
+ <multiple>Reihenherausgeber</multiple>
+ </term>
<term name="editorial-director">
<single>Herausgeber</single>
<multiple>Herausgeber</multiple>
@@ -595,6 +605,10 @@
<single>Hrsg.</single>
<multiple>Hrsg.</multiple>
</term>
+ <term name="collection-editor" form="short">
+ <single>Hrsg.</single>
+ <multiple>Hrsg.</multiple>
+ </term>
<term name="editorial-director" form="short">
<single>Hrsg.</single>
<multiple>Hrsg.</multiple>
@@ -630,6 +644,7 @@
<term name="container-author" form="verb">von</term>
<term name="director" form="verb">Regie von</term>
<term name="editor" form="verb">herausgegeben von</term>
+ <term name="collection-editor" form="verb">herausgegeben von</term>
<term name="editorial-director" form="verb">herausgegeben von</term>
<term name="illustrator" form="verb">illustriert von</term>
<term name="interviewer" form="verb">interviewt von</term>
@@ -654,6 +669,7 @@
<term name="series-creator" form="verb-short">cre. by</term>
<term name="director" form="verb-short">Reg.</term>
<term name="editor" form="verb-short">hg. von</term>
+ <term name="collection-editor" form="verb-short">hg. von</term>
<term name="editorial-director" form="verb-short">hg. von</term>
<term name="illustrator" form="verb-short">illus. von</term>
<term name="translator" form="verb-short">übers. von</term>
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-DE.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-DE.xml
index f7e25ad0f31..aee272e728c 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-DE.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-DE.xml
@@ -16,8 +16,14 @@
<translator>
<name>jakov</name>
</translator>
+ <translator>
+ <name>Patrick O'Brien</name>
+ </translator>
+ <translator>
+ <name>Nicolas Chachereau</name>
+ </translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2024-03-28T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
@@ -31,33 +37,33 @@
<date-part name="year"/>
</date>
<terms>
- <term name="advance-online-publication">advance online publication</term>
- <term name="album">album</term>
- <term name="audio-recording">audio recording</term>
- <term name="film">film</term>
- <term name="henceforth">henceforth</term>
+ <term name="advance-online-publication">Online-Vorab-Publikation</term>
+ <term name="album">Album</term>
+ <term name="audio-recording">Audioaufzeichnung</term>
+ <term name="film">Film</term>
+ <term name="henceforth">zukünftig</term>
<term name="loc-cit">loc. cit.</term> <!-- like ibid., the abbreviated form is the regular form -->
- <term name="no-place">no place</term>
- <term name="no-place" form="short">n.p.</term>
- <term name="no-publisher">no publisher</term> <!-- sine nomine -->
- <term name="no-publisher" form="short">n.p.</term>
- <term name="on">on</term>
+ <term name="no-place">ohne Ort</term>
+ <term name="no-place" form="short">o.&#160;O.</term>
+ <term name="no-publisher">ohne Verlag</term> <!-- sine nomine -->
+ <term name="no-publisher" form="short">o.&#160;V.</term>
+ <term name="on">auf</term>
<term name="op-cit">op. cit.</term> <!-- like ibid., the abbreviated form is the regular form -->
- <term name="original-work-published">original work published</term>
+ <term name="original-work-published">Ursprünglich erschienen</term>
<term name="personal-communication">persönliche Kommunikation</term>
- <term name="podcast">podcast</term>
- <term name="podcast-episode">podcast episode</term>
+ <term name="podcast">Podcast</term>
+ <term name="podcast-episode">Podcast-Episode</term>
<term name="preprint">preprint</term>
- <term name="radio-broadcast">radio broadcast</term>
- <term name="radio-series">radio series</term>
- <term name="radio-series-episode">radio series episode</term>
- <term name="special-issue">special issue</term>
- <term name="special-section">special section</term>
- <term name="television-broadcast">television broadcast</term>
- <term name="television-series">television series</term>
- <term name="television-series-episode">television series episode</term>
- <term name="video">video</term>
- <term name="working-paper">working paper</term>
+ <term name="radio-broadcast">Radioaufzeichnung</term>
+ <term name="radio-series">Sendereihe</term>
+ <term name="radio-series-episode">Sendereihenfolge</term>
+ <term name="special-issue">Spezialausgabe</term>
+ <term name="special-section">Sonderbereich</term>
+ <term name="television-broadcast">Fernsehsendung</term>
+ <term name="television-series">Fernsehserie</term>
+ <term name="television-series-episode">Serienfolge</term>
+ <term name="video">Video</term>
+ <term name="working-paper">Arbeitspapier</term>
<term name="accessed">zugegriffen</term>
<term name="and">und</term>
<term name="and others">und andere</term>
@@ -291,8 +297,8 @@
<multiple>Zeilen</multiple>
</term>
<term name="note">
- <single>Note</single>
- <multiple>Noten</multiple>
+ <single>Anmerkung</single>
+ <multiple>Anmerkungen</multiple>
</term>
<term name="opus">
<single>Opus</single>
@@ -401,7 +407,7 @@
<term name="folio" form="short">Fol.</term>
<term name="issue" form="short">Nr.</term>
<term name="line" form="short">Z.</term>
- <term name="note" form="short">N.</term>
+ <term name="note" form="short">Anm.</term>
<term name="opus" form="short">op.</term>
<term name="page" form="short">
<single>S.</single>
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-el-GR.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-el-GR.xml
index 0b8ba76c52c..3c8bbe092bb 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-el-GR.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-el-GR.xml
@@ -11,7 +11,7 @@
<name>Patrick O'Brien</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2013-11-08T20:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-en-GB.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-en-GB.xml
index 9a336124f7a..c668d61f769 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-en-GB.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-en-GB.xml
@@ -11,7 +11,7 @@
<name>Rintze M. Zelle</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2015-10-10T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-en-US.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-en-US.xml
index d9dd7552501..121781576ec 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-en-US.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-en-US.xml
@@ -17,7 +17,7 @@
<name>Brenton M. Wiernik</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-08-12T16:22:23-04:00</updated>
+ <updated>2024-03-12T13:41:31+00:00</updated>
</info>
<style-options punctuation-in-quote="true"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-es-CL.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-es-CL.xml
index ab56cbbd0d7..853d9eec8d0 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-es-CL.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-es-CL.xml
@@ -6,7 +6,7 @@
<uri>http://sadowsky.cl/</uri>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2013-10-28T13:57:31-04:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-es-ES.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-es-ES.xml
index 992cf526f52..8e3422454be 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-es-ES.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-es-ES.xml
@@ -5,7 +5,7 @@
<name>javimat</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-es-MX.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-es-MX.xml
index 73b4eeeeccf..bd3f1bf23e2 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-es-MX.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-es-MX.xml
@@ -6,7 +6,7 @@
<uri>https://www.mendeley.com/profiles/juan-ignacio-flores-salgado/</uri>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2015-06-13T13:57:31-04:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-et-EE.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-et-EE.xml
index c39c31df96a..c37b1b9db6d 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-et-EE.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-et-EE.xml
@@ -5,7 +5,7 @@
<name>Andrew Dunning</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-eu.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-eu.xml
index 27132a0fc55..d27e8e65a1b 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-eu.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-eu.xml
@@ -8,7 +8,7 @@
<name>Miren BZ</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fa-IR.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fa-IR.xml
index 78f2578a088..08310d5e669 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fa-IR.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fa-IR.xml
@@ -8,7 +8,7 @@
<name>abdealikhurrum</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="true"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fi-FI.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fi-FI.xml
index 48daa014a6f..a97bafa0f19 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fi-FI.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fi-FI.xml
@@ -13,8 +13,11 @@
<translator>
<name>Juhana Venäläinen</name>
</translator>
+ <translator>
+ <name>Tuomas Hietala</name>
+ </translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
@@ -29,8 +32,8 @@
</date>
<terms>
<term name="advance-online-publication">advance online publication</term>
- <term name="album">album</term>
- <term name="audio-recording">audio recording</term>
+ <term name="album">albumi</term>
+ <term name="audio-recording">äänite</term>
<term name="film">film</term>
<term name="henceforth">henceforth</term>
<term name="loc-cit">loc. cit.</term> <!-- like ibid., the abbreviated form is the regular form -->
@@ -45,14 +48,14 @@
<term name="podcast">podcast</term>
<term name="podcast-episode">podcast episode</term>
<term name="preprint">preprint</term>
- <term name="radio-broadcast">radio broadcast</term>
+ <term name="radio-broadcast">radiolähetys</term>
<term name="radio-series">radio series</term>
<term name="radio-series-episode">radio series episode</term>
- <term name="special-issue">special issue</term>
+ <term name="special-issue">erikoisnumero</term>
<term name="special-section">special section</term>
- <term name="television-broadcast">television broadcast</term>
- <term name="television-series">television series</term>
- <term name="television-series-episode">television series episode</term>
+ <term name="television-broadcast">televisiolähetys</term>
+ <term name="television-series">televisiosarja</term>
+ <term name="television-series-episode">televisiosarjan jakso</term>
<term name="video">video</term>
<term name="working-paper">working paper</term>
<term name="accessed">viitattu</term>
@@ -67,8 +70,8 @@
<term name="circa" form="short">n.</term>
<term name="cited">viitattu</term>
<term name="first-reference-note-number">
- <single>reference</single>
- <multiple>references</multiple>
+ <single>viite</single>
+ <multiple>viitteet</multiple>
</term>
<term name="number">
<single>number</single>
@@ -120,7 +123,7 @@
<term name="article-newspaper">newspaper article</term>
<term name="bill">bill</term>
<!-- book is in the list of locator terms -->
- <term name="broadcast">broadcast</term>
+ <term name="broadcast">lähetys</term>
<!-- chapter is in the list of locator terms -->
<term name="classic">classic</term>
<term name="collection">collection</term>
@@ -136,26 +139,26 @@
<term name="interview">haastattelu</term>
<term name="legal_case">legal case</term>
<term name="legislation">legislation</term>
- <term name="manuscript">manuscript</term>
- <term name="map">map</term>
- <term name="motion_picture">video recording</term>
+ <term name="manuscript">käsikirjoitus</term>
+ <term name="map">kartta</term>
+ <term name="motion_picture">videotallenne</term>
<term name="musical_score">musical score</term>
<term name="pamphlet">pamphlet</term>
<term name="paper-conference">conference paper</term>
- <term name="patent">patent</term>
- <term name="performance">performance</term>
+ <term name="patent">patentti</term>
+ <term name="performance">esitys</term>
<term name="periodical">periodical</term>
<term name="personal_communication">henkilökohtainen viestintä</term>
<term name="post">post</term>
- <term name="post-weblog">blog post</term>
+ <term name="post-weblog">blogikirjoitus</term>
<term name="regulation">regulation</term>
- <term name="report">report</term>
+ <term name="report">raportti</term>
<term name="review">review</term>
- <term name="review-book">book review</term>
- <term name="software">software</term>
- <term name="song">audio recording</term>
- <term name="speech">presentation</term>
- <term name="standard">standard</term>
+ <term name="review-book">kirja-arvostelu</term>
+ <term name="software">ohjelmisto</term>
+ <term name="song">äänite</term>
+ <term name="speech">esitys</term>
+ <term name="standard">standardi</term>
<term name="thesis">thesis</term>
<term name="treaty">treaty</term>
<term name="webpage">webpage</term>
@@ -184,10 +187,10 @@
<term name="review-book" form="verb">review of the book</term>
<!-- HISTORICAL ERA TERMS -->
- <term name="ad">jaa.</term>
- <term name="bc">eaa.</term>
- <term name="bce">BCE</term>
- <term name="ce">CE</term>
+ <term name="ad">jKr.</term>
+ <term name="bc">eKr.</term>
+ <term name="bce">eaa.</term>
+ <term name="ce">jaa.</term>
<!-- PUNCTUATION -->
<term name="open-quote">”</term>
@@ -304,8 +307,8 @@
<multiple>volumes</multiple>
</term>
<term name="page-first">
- <single>page</single>
- <multiple>pages</multiple>
+ <single>sivu</single>
+ <multiple>sivut</multiple>
</term>
<term name="printing">
<single>printing</single>
@@ -402,15 +405,15 @@
<term name="opus" form="short">op.</term>
<term name="page" form="short">
<single>s.</single>
- <multiple>ss.</multiple>
+ <multiple>s.</multiple>
</term>
<term name="number-of-volumes" form="short">
<single>vol.</single>
<multiple>vols.</multiple>
</term>
<term name="page-first" form="short">
- <single>p.</single>
- <multiple>pp.</multiple>
+ <single>s.</single>
+ <multiple>s.</multiple>
</term>
<term name="printing" form="short">
<single>print.</single>
@@ -420,7 +423,7 @@
<term name="number-of-pages" form="short">
<single>s.</single>
- <multiple>ss.</multiple>
+ <multiple>s.</multiple>
</term>
<term name="paragraph" form="short">kappale</term>
<term name="part" form="short">osa</term>
@@ -448,12 +451,12 @@
<multiple>¶¶</multiple>
</term>
<term name="chapter-number">
- <single>chapter</single>
- <multiple>chapters</multiple>
+ <single>luku</single>
+ <multiple>luvut</multiple>
</term>
<term name="citation-number">
- <single>citation</single>
- <multiple>citations</multiple>
+ <single>viite</single>
+ <multiple>viitteet</multiple>
</term>
<term name="collection-number">
<single>numero</single>
@@ -466,8 +469,8 @@
<!-- LONG ROLE FORMS -->
<term name="collection-editor">
- <single>ed.</single>
- <multiple>eds.</multiple>
+ <single>toim.</single>
+ <multiple>toim.</multiple>
</term>
<term name="chair">
<single>chair</single>
@@ -482,8 +485,8 @@
<multiple>contributors</multiple>
</term>
<term name="curator">
- <single>curator</single>
- <multiple>curators</multiple>
+ <single>kuraattori</single>
+ <multiple>kuraattorit</multiple>
</term>
<term name="executive-producer">
<single>executive producer</single>
@@ -502,24 +505,24 @@
<multiple>narrators</multiple>
</term>
<term name="organizer">
- <single>organizer</single>
- <multiple>organizers</multiple>
+ <single>järjestäjä</single>
+ <multiple>järjestäjät</multiple>
</term>
<term name="performer">
- <single>performer</single>
- <multiple>performers</multiple>
+ <single>esittäjä</single>
+ <multiple>esittäjät</multiple>
</term>
<term name="producer">
- <single>producer</single>
- <multiple>producers</multiple>
+ <single>tuottaja</single>
+ <multiple>tuottajat</multiple>
</term>
<term name="script-writer">
- <single>writer</single>
- <multiple>writers</multiple>
+ <single>käsikirjoittaja</single>
+ <multiple>käsikirjoittajat</multiple>
</term>
<term name="series-creator">
- <single>series creator</single>
- <multiple>series creators</multiple>
+ <single>sarjan luoja</single>
+ <multiple>sarjan luojat</multiple>
</term>
<term name="director">
<single>ohjaaja</single>
@@ -572,16 +575,16 @@
<multiple>orgs.</multiple>
</term>
<term name="performer" form="short">
- <single>perf.</single>
- <multiple>perfs.</multiple>
+ <single>esitt.</single>
+ <multiple>esitt.</multiple>
</term>
<term name="producer" form="short">
- <single>prod.</single>
- <multiple>prods.</multiple>
+ <single>tuott.</single>
+ <multiple>tuott.</multiple>
</term>
<term name="script-writer" form="short">
- <single>writ.</single>
- <multiple>writs.</multiple>
+ <single>käsik.</single>
+ <multiple>käsik.</multiple>
</term>
<term name="series-creator" form="short">
<single>cre.</single>
@@ -613,19 +616,19 @@
</term>
<!-- VERB ROLE FORMS -->
- <term name="collection-editor" form="verb">edited by</term>
+ <term name="collection-editor" form="verb">toimittanut</term>
<term name="chair" form="verb">chaired by</term>
<term name="compiler" form="verb">compiled by</term>
<term name="contributor" form="verb">with</term>
- <term name="curator" form="verb">curated by</term>
+ <term name="curator" form="verb">kuratoinut</term>
<term name="executive-producer" form="verb">executive produced by</term>
<term name="guest" form="verb">with guest</term>
<term name="host" form="verb">hosted by</term>
<term name="narrator" form="verb">narrated by</term>
- <term name="organizer" form="verb">organized by</term>
- <term name="performer" form="verb">performed by</term>
- <term name="producer" form="verb">produced by</term>
- <term name="script-writer" form="verb">written by</term>
+ <term name="organizer" form="verb">järjestänyt</term>
+ <term name="performer" form="verb">esittänyt</term>
+ <term name="producer" form="verb">tuottanut</term>
+ <term name="script-writer" form="verb">käsikirjoittanut</term>
<term name="series-creator" form="verb">created by</term>
<term name="container-author" form="verb"></term>
<term name="director" form="verb">ohjannut</term>
@@ -648,9 +651,9 @@
<term name="host" form="verb-short">hosted by</term>
<term name="narrator" form="verb-short">narr. by</term>
<term name="organizer" form="verb-short">org. by</term>
- <term name="performer" form="verb-short">perf. by</term>
- <term name="producer" form="verb-short">prod. by</term>
- <term name="script-writer" form="verb-short">writ. by</term>
+ <term name="performer" form="verb-short">esitt.</term>
+ <term name="producer" form="verb-short">tuott.</term>
+ <term name="script-writer" form="verb-short">käsik.</term>
<term name="series-creator" form="verb-short">cre. by</term>
<term name="director" form="verb-short">ohj.</term>
<term name="editor" form="verb-short">toim.</term>
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fr-CA.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fr-CA.xml
index b7afe55603b..3aabc821a7e 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fr-CA.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fr-CA.xml
@@ -5,7 +5,7 @@
<name>Grégoire Colly</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false" limit-day-ordinals-to-day-1="true"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fr-FR.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fr-FR.xml
index 7cf19ba13ec..23b6d80fae3 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fr-FR.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-fr-FR.xml
@@ -8,7 +8,7 @@
<name>Collectif Zotero francophone</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false" limit-day-ordinals-to-day-1="true"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-gl-ES.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-gl-ES.xml
new file mode 100644
index 00000000000..869578c5985
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-gl-ES.xml
@@ -0,0 +1,678 @@
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="gl-ES">
+ <info>
+ <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
+ <updated>2021-04-20T23:31:02+00:00</updated>
+ <translator>
+ <name>Manuel Magán</name>
+ </translator>
+ </info>
+ <style-options punctuation-in-quote="false"/>
+ <date form="text">
+ <date-part name="day" suffix=" de "/>
+ <date-part name="month" suffix=" de "/>
+ <date-part name="year"/>
+ </date>
+ <date form="numeric">
+ <date-part name="day" form="numeric-leading-zeros" suffix="/"/>
+ <date-part name="month" form="numeric-leading-zeros" suffix="/"/>
+ <date-part name="year"/>
+ </date>
+ <terms>
+ <term name="advance-online-publication">advance online publication</term>
+ <term name="album">album</term>
+ <term name="accessed">accedido</term>
+ <term name="and">e</term>
+ <term name="and others">e outros</term>
+ <term name="anonymous">anónimo</term>
+ <term name="anonymous" form="short">anón.</term>
+ <term name="audio-recording">audio recording</term>
+ <term name="at">en</term>
+ <term name="available at">dispoñíbel en</term>
+ <term name="by">por</term>
+ <term name="circa">circa</term>
+ <term name="circa" form="short">c.</term>
+ <term name="cited">citado</term>
+ <term name="first-reference-note-number">
+ <single>reference</single>
+ <multiple>references</multiple>
+ </term>
+ <term name="number">
+ <single>number</single>
+ <multiple>numbers</multiple>
+ </term>
+ <term name="edition">
+ <single>edición</single>
+ <multiple>edicións</multiple>
+ </term>
+ <term name="first-reference-note-number" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="number" form="short">
+ <single>no.</single>
+ <multiple>nos.</multiple>
+ </term>
+ <term name="edition" form="short">ed.</term>
+ <term name="film">film</term>
+ <term name="et-al">et al.</term>
+ <term name="forthcoming">a publicar</term>
+ <term name="henceforth">henceforth</term>
+ <term name="from">de</term>
+ <term name="ibid">ibid.</term>
+ <term name="in">en</term>
+ <term name="in press">no prelo</term>
+ <term name="internet">internet</term>
+ <term name="legal_case">legal case</term>
+ <term name="legislation">legislation</term>
+ <term name="manuscript">manuscript</term>
+ <term name="map">map</term>
+ <term name="motion_picture">video recording</term>
+ <term name="musical_score">musical score</term>
+ <term name="pamphlet">pamphlet</term>
+ <term name="paper-conference">conference paper</term>
+ <term name="patent">patent</term>
+ <term name="performance">performance</term>
+ <term name="periodical">periodical</term>
+ <term name="personal_communication">personal communication</term>
+ <term name="post">post</term>
+ <term name="post-weblog">blog post</term>
+ <term name="regulation">regulation</term>
+ <term name="report">report</term>
+ <term name="review">review</term>
+ <term name="review-book">book review</term>
+ <term name="software">software</term>
+ <term name="song">audio recording</term>
+ <term name="speech">presentation</term>
+ <term name="standard">standard</term>
+ <term name="thesis">thesis</term>
+ <term name="treaty">treaty</term>
+ <term name="webpage">webpage</term>
+
+ <term name="article-journal" form="short">journal art.</term>
+ <term name="article-magazine" form="short">mag. art.</term>
+ <term name="article-newspaper" form="short">newspaper art.</term>
+ <term name="document" form="short">doc.</term>
+ <term name="graphic" form="short">graph.</term>
+ <term name="manuscript" form="short">MS</term>
+ <term name="motion_picture" form="short">video rec.</term>
+ <term name="report" form="short">rep.</term>
+ <term name="review" form="short">rev.</term>
+ <term name="review-book" form="short">bk. rev.</term>
+ <term name="song" form="short">audio rec.</term>
+
+ <term name="interview">entrevista</term>
+ <term name="loc-cit">loc. cit.</term> <term name="letter">carta</term>
+ <term name="no date">sen data</term>
+ <term name="no-place">no place</term>
+ <term name="no-place" form="short">n.p.</term>
+ <term name="no-publisher">no publisher</term> <term name="no-publisher" form="short">n.p.</term>
+ <term name="on">on</term>
+ <term name="no date" form="short">sen data</term>
+ <term name="op-cit">op. cit.</term> <term name="original-work-published">original work published</term>
+ <term name="personal-communication">personal communication</term>
+ <term name="podcast">podcast</term>
+ <term name="podcast-episode">podcast episode</term>
+ <term name="preprint">preprint</term>
+ <term name="online">en liña</term>
+ <term name="radio-broadcast">radio broadcast</term>
+ <term name="radio-series">radio series</term>
+ <term name="radio-series-episode">radio series episode</term>
+ <term name="presented at">presentado na</term>
+ <term name="reference">
+ <single>referencia</single>
+ <multiple>referencias</multiple>
+ </term>
+ <term name="reference" form="short">
+ <single>ref.</single>
+ <multiple>refs.</multiple>
+ </term>
+ <term name="review-of">review of</term>
+ <term name="review-of" form="short">rev. of</term>
+ <term name="retrieved">obtido</term>
+ <term name="special-issue">special issue</term>
+ <term name="special-section">special section</term>
+ <term name="television-broadcast">television broadcast</term>
+ <term name="television-series">television series</term>
+ <term name="television-series-episode">television series episode</term>
+ <term name="video">video</term>
+ <term name="working-paper">working paper</term>
+
+ <term name="article">preprint</term>
+ <term name="article-journal">journal article</term>
+ <term name="article-magazine">magazine article</term>
+ <term name="article-newspaper">newspaper article</term>
+ <term name="bill">bill</term>
+ <term name="broadcast">broadcast</term>
+ <term name="classic">classic</term>
+ <term name="collection">collection</term>
+ <term name="dataset">dataset</term>
+ <term name="document">document</term>
+ <term name="entry">entry</term>
+ <term name="entry-dictionary">dictionary entry</term>
+ <term name="entry-encyclopedia">encyclopedia entry</term>
+ <term name="event">event</term>
+ <term name="graphic">graphic</term>
+ <term name="hearing">hearing</term>
+ <term name="scale">escala</term>
+ <term name="version">versión</term>
+
+ <!-- ANNO DOMINI; BEFORE CHRIST -->
+ <term name="ad">D.C.</term>
+ <term name="bce">BCE</term>
+ <term name="ce">CE</term>
+
+ <term name="bc">A.C.</term>
+
+ <!-- PUNCTUATION -->
+ <term name="open-quote">«</term>
+ <term name="close-quote">»</term>
+ <term name="open-inner-quote">“</term>
+ <term name="close-inner-quote">”</term>
+ <term name="colon">:</term>
+ <term name="comma">,</term>
+ <term name="semicolon">;</term>
+
+ <term name="page-range-delimiter">–</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal" gender-form="masculine" match="whole-number">.º</term>
+ <term name="ordinal" gender-form="feminine" match="whole-number">.ª</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01" gender-form="masculine">primeiro</term>
+ <term name="long-ordinal-01" gender-form="feminine">primeira</term>
+ <term name="long-ordinal-02" gender-form="masculine">segundo</term>
+ <term name="long-ordinal-02" gender-form="feminine">segunda</term>
+ <term name="long-ordinal-03" gender-form="masculine">terceiro</term>
+ <term name="long-ordinal-03" gender-form="feminine">terceira</term>
+ <term name="long-ordinal-04" gender-form="masculine">cuarto</term>
+ <term name="long-ordinal-04" gender-form="feminine">cuarta</term>
+ <term name="long-ordinal-05" gender-form="masculine">quinto</term>
+ <term name="long-ordinal-05" gender-form="feminine">quinta</term>
+ <term name="long-ordinal-06" gender-form="masculine">sexto</term>
+ <term name="long-ordinal-06" gender-form="feminine">sexta</term>
+ <term name="long-ordinal-07" gender-form="masculine">séptimo</term>
+ <term name="long-ordinal-07" gender-form="feminine">séptima</term>
+ <term name="long-ordinal-08" gender-form="masculine">oitavo</term>
+ <term name="long-ordinal-08" gender-form="feminine">oitava</term>
+ <term name="long-ordinal-09" gender-form="masculine">nono</term>
+ <term name="long-ordinal-09" gender-form="feminine">nona</term>
+ <term name="act">
+ <single>act</single>
+ <multiple>acts</multiple>
+ </term>
+ <term name="appendix">
+ <single>appendix</single>
+ <multiple>appendices</multiple>
+ </term>
+ <term name="article-locator">
+ <single>article</single>
+ <multiple>articles</multiple>
+ </term>
+ <term name="long-ordinal-10" gender-form="masculine">décimo</term>
+ <term name="long-ordinal-10" gender-form="feminine">décima</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="canon">
+ <single>c.</single>
+ <multiple>cc.</multiple>
+ </term>
+ <term name="book">
+ <single>libro</single>
+ <multiple>libros</multiple>
+ </term>
+ <term name="chapter">
+ <single>capítulo</single>
+ <multiple>capítulos</multiple>
+ </term>
+ <term name="elocation">
+ <single>location</single>
+ <multiple>locations</multiple>
+ </term>
+ <term name="equation">
+ <single>equation</single>
+ <multiple>equations</multiple>
+ </term>
+ <term name="column">
+ <single>columna</single>
+ <multiple>columnas</multiple>
+ </term>
+ <term name="figure">
+ <single>figura</single>
+ <multiple>figuras</multiple>
+ </term>
+ <term name="folio">
+ <single>folio</single>
+ <multiple>folios</multiple>
+ </term>
+ <term name="issue">
+ <single>número</single>
+ <multiple>números</multiple>
+ </term>
+ <term name="line">
+ <single>liña</single>
+ <multiple>liñas</multiple>
+ </term>
+ <term name="note">
+ <single>nota</single>
+ <multiple>notas</multiple>
+ </term>
+ <term name="opus">
+ <single>opus</single>
+ <multiple>opera</multiple>
+ </term>
+ <term name="page">
+ <single>páxina</single>
+ <multiple>páxinas</multiple>
+ </term>
+ <term name="number-of-volumes">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+ <term name="page-first">
+ <single>page</single>
+ <multiple>pages</multiple>
+ </term>
+ <term name="printing">
+ <single>printing</single>
+ <multiple>printings</multiple>
+ </term>
+
+ <term name="chapter-number" form="short">
+ <single>chap.</single>
+ <multiple>chaps.</multiple>
+ </term>
+ <term name="citation-number" form="short">
+ <single>cit.</single>
+ <multiple>cits.</multiple>
+ </term>
+ <term name="collection-number" form="short">n.</term>
+ <term name="number-of-pages">
+ <single>páxina</single>
+ <multiple>páxinas</multiple>
+ </term>
+ <term name="paragraph">
+ <single>parágrafo</single>
+ <multiple>parágrafos</multiple>
+ </term>
+ <term name="rule">
+ <single>rule</single>
+ <multiple>rules</multiple>
+ </term>
+ <term name="scene">
+ <single>scene</single>
+ <multiple>scenes</multiple>
+ </term>
+ <term name="part">
+ <single>parte</single>
+ <multiple>partes</multiple>
+ </term>
+ <term name="section">
+ <single>sección</single>
+ <multiple>seccións</multiple>
+ </term>
+ <term name="supplement">
+ <single>supplement</single>
+ <multiple>supplements</multiple>
+ </term>
+ <term name="table">
+ <single>table</single>
+ <multiple>tables</multiple>
+ </term>
+ <term name="timestamp"> <!-- generally blank -->
+ <single></single>
+ <multiple></multiple>
+ </term>
+ <term name="title-locator">
+ <single>title</single>
+ <multiple>titles</multiple>
+ </term>
+ <term name="sub-verbo">
+ <single>sub verbo</single>
+ <multiple>sub verbis</multiple>
+ </term>
+ <term name="verse">
+ <single>versículo</single>
+ <multiple>versículos</multiple>
+ </term>
+ <term name="appendix" form="short">
+ <single>app.</single>
+ <multiple>apps.</multiple>
+ </term>
+ <term name="article-locator" form="short">
+ <single>art.</single>
+ <multiple>arts.</multiple>
+ </term>
+ <term name="volume">
+ <single>volume</single>
+ <multiple>volumes</multiple>
+ </term>
+
+ <!-- SHORT LOCATOR FORMS -->
+ <term name="book" form="short">lib.</term>
+ <term name="chapter" form="short">cap.</term>
+ <term name="elocation" form="short">
+ <single>loc.</single>
+ <multiple>locs.</multiple>
+ </term>
+ <term name="equation" form="short">
+ <single>eq.</single>
+ <multiple>eqs.</multiple>
+ </term>
+ <term name="column" form="short">col.</term>
+ <term name="figure" form="short">fig.</term>
+ <term name="folio" form="short">f.</term>
+ <term name="issue" form="short">n.</term>
+ <term name="line" form="short">l.</term>
+ <term name="note" form="short">n.</term>
+ <term name="opus" form="short">op.</term>
+ <term name="page" form="short">
+ <single>p.</single>
+ <multiple>pp.</multiple>
+ </term>
+ <term name="number-of-volumes" form="short">
+ <single>vol.</single>
+ <multiple>vols.</multiple>
+ </term>
+ <term name="page-first" form="short">
+ <single>p.</single>
+ <multiple>pp.</multiple>
+ </term>
+ <term name="printing" form="short">
+ <single>print.</single>
+ <multiple>prints.</multiple>
+ </term>
+
+
+ <term name="chair">
+ <single>chair</single>
+ <multiple>chairs</multiple>
+ </term>
+ <term name="compiler">
+ <single>compiler</single>
+ <multiple>compilers</multiple>
+ </term>
+ <term name="contributor">
+ <single>contributor</single>
+ <multiple>contributors</multiple>
+ </term>
+ <term name="curator">
+ <single>curator</single>
+ <multiple>curators</multiple>
+ </term>
+ <term name="collection-editor">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="number-of-pages" form="short">
+ <single>p.</single>
+ <multiple>pp.</multiple>
+ </term>
+ <term name="paragraph" form="short">par.</term>
+ <term name="rule" form="short">
+ <single>r.</single>
+ <multiple>rr.</multiple>
+ </term>
+ <term name="scene" form="short">
+ <single>sc.</single>
+ <multiple>scs.</multiple>
+ </term>
+ <term name="part" form="short">pt.</term>
+ <term name="section" form="short">sec.</term>
+ <term name="supplement" form="short">
+ <single>supp.</single>
+ <multiple>supps.</multiple>
+ </term>
+ <term name="table" form="short">
+ <single>tbl.</single>
+ <multiple>tbls.</multiple>
+ </term>
+ <term name="title-locator" form="short">
+ <single>tit.</single>
+ <multiple>tits.</multiple>
+ </term>
+ <term name="sub-verbo" form="short">
+ <single>s.v.</single>
+ <multiple>s.vv.</multiple>
+ </term>
+ <term name="verse" form="short">
+ <single>v.</single>
+ <multiple>vv.</multiple>
+ </term>
+ <term name="volume" form="short">
+ <single>vol.</single>
+ <multiple>vols.</multiple>
+ </term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="chapter-number">
+ <single>chapter</single>
+ <multiple>chapters</multiple>
+ </term>
+ <term name="citation-number">
+ <single>citation</single>
+ <multiple>citations</multiple>
+ </term>
+ <term name="collection-number">
+ <single>número</single>
+ <multiple>números</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <term name="director">
+ <single>director</single>
+ <multiple>directores</multiple>
+ </term>
+ <term name="editor">
+ <single>editor</single>
+ <multiple>editores</multiple>
+ </term>
+ <term name="executive-producer">
+ <single>executive producer</single>
+ <multiple>executive producers</multiple>
+ </term>
+ <term name="guest">
+ <single>guest</single>
+ <multiple>guests</multiple>
+ </term>
+ <term name="host">
+ <single>host</single>
+ <multiple>hosts</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>editor</single>
+ <multiple>editores</multiple>
+ </term>
+ <term name="narrator">
+ <single>narrator</single>
+ <multiple>narrators</multiple>
+ </term>
+ <term name="organizer">
+ <single>organizer</single>
+ <multiple>organizers</multiple>
+ </term>
+ <term name="performer">
+ <single>performer</single>
+ <multiple>performers</multiple>
+ </term>
+ <term name="producer">
+ <single>producer</single>
+ <multiple>producers</multiple>
+ </term>
+ <term name="script-writer">
+ <single>writer</single>
+ <multiple>writers</multiple>
+ </term>
+ <term name="series-creator">
+ <single>series creator</single>
+ <multiple>series creators</multiple>
+ </term>
+ <term name="illustrator">
+ <single>ilustrador</single>
+ <multiple>ilustradores</multiple>
+ </term>
+ <term name="compiler" form="short">
+ <single>comp.</single>
+ <multiple>comps.</multiple>
+ </term>
+ <term name="contributor" form="short">
+ <single>contrib.</single>
+ <multiple>contribs.</multiple>
+ </term>
+ <term name="curator" form="short">
+ <single>cur.</single>
+ <multiple>curs.</multiple>
+ </term>
+ <term name="translator">
+ <single>tradutor</single>
+ <multiple>tradutores</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>editor &amp; tradutor</single>
+ <multiple>editores &amp; tradutores</multiple>
+ </term>
+
+ <!-- SHORT ROLE FORMS -->
+ <term name="director" form="short">
+ <single>dir.</single>
+ <multiple>dirs.</multiple>
+ </term>
+ <term name="editor" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="executive-producer" form="short">
+ <single>exec. prod.</single>
+ <multiple>exec. prods.</multiple>
+ </term>
+ <term name="editorial-director" form="short">
+ <single>ed.</single>
+ <multiple>eds.</multiple>
+ </term>
+ <term name="narrator" form="short">
+ <single>narr.</single>
+ <multiple>narrs.</multiple>
+ </term>
+ <term name="organizer" form="short">
+ <single>org.</single>
+ <multiple>orgs.</multiple>
+ </term>
+ <term name="performer" form="short">
+ <single>perf.</single>
+ <multiple>perfs.</multiple>
+ </term>
+ <term name="producer" form="short">
+ <single>prod.</single>
+ <multiple>prods.</multiple>
+ </term>
+ <term name="script-writer" form="short">
+ <single>writ.</single>
+ <multiple>writs.</multiple>
+ </term>
+ <term name="series-creator" form="short">
+ <single>cre.</single>
+ <multiple>cres.</multiple>
+ </term>
+ <term name="illustrator" form="short">
+ <single>il.</single>
+ <multiple>ils.</multiple>
+ </term>
+ <term name="chair" form="verb">chaired by</term>
+ <term name="collection-editor" form="verb">edited by</term>
+ <term name="compiler" form="verb">compiled by</term>
+ <term name="translator" form="short">
+ <single>trad.</single>
+ <multiple>trads.</multiple>
+ </term>
+ <term name="editortranslator" form="short">
+ <single>ed. &amp; trad.</single>
+ <multiple>eds. &amp; trads.</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="contributor" form="verb">with</term>
+ <term name="curator" form="verb">curated by</term>
+ <term name="container-author" form="verb">por</term>
+ <term name="director" form="verb">dirixido por</term>
+ <term name="editor" form="verb">editado por</term>
+ <term name="executive-producer" form="verb">executive produced by</term>
+ <term name="guest" form="verb">with guest</term>
+ <term name="host" form="verb">hosted by</term>
+ <term name="editorial-director" form="verb">editorial de</term>
+ <term name="illustrator" form="verb">ilustrado por</term>
+ <term name="narrator" form="verb">narrated by</term>
+ <term name="organizer" form="verb">organized by</term>
+ <term name="performer" form="verb">performed by</term>
+ <term name="producer" form="verb">produced by</term>
+ <term name="interviewer" form="verb">entrevistado por</term>
+ <term name="recipient" form="verb">para</term>
+ <term name="script-writer" form="verb">written by</term>
+ <term name="series-creator" form="verb">created by</term>
+ <term name="reviewed-author" form="verb">revisado por</term>
+ <term name="collection-editor" form="verb-short">ed. by</term>
+ <term name="compiler" form="verb-short">comp. by</term>
+ <term name="contributor" form="verb-short">w.</term>
+ <term name="curator" form="verb-short">cur. by</term>
+ <term name="translator" form="verb">traducido por</term>
+ <term name="editortranslator" form="verb">editado &amp; traducido por</term>
+
+ <!-- SHORT VERB ROLE FORMS -->
+ <term name="director" form="verb-short">dir.</term>
+ <term name="editor" form="verb-short">ed.</term>
+ <term name="executive-producer" form="verb-short">exec. prod. by</term>
+ <term name="guest" form="verb-short">w. guest</term>
+ <term name="editorial-director" form="verb-short">ed.</term>
+ <term name="narrator" form="verb-short">narr. by</term>
+ <term name="organizer" form="verb-short">org. by</term>
+ <term name="performer" form="verb-short">perf. by</term>
+ <term name="producer" form="verb-short">prod. by</term>
+ <term name="script-writer" form="verb-short">writ. by</term>
+ <term name="series-creator" form="verb-short">cre. by</term>
+ <term name="illustrator" form="verb-short">ilus.</term>
+ <term name="translator" form="verb-short">trad.</term>
+ <term name="editortranslator" form="verb-short">ed. &amp; trad. por</term>
+
+ <!-- LONG MONTH FORMS -->
+ <term name="month-01">Xaneiro</term>
+ <term name="month-02">Febreiro</term>
+ <term name="month-03">Marzo</term>
+ <term name="month-04">Abril</term>
+ <term name="month-05">Maio</term>
+ <term name="month-06">Xuño</term>
+ <term name="month-07">Xullo</term>
+ <term name="month-08">Agosto</term>
+ <term name="month-09">Setembro</term>
+ <term name="month-10">Outubro</term>
+ <term name="month-11">Novembro</term>
+ <term name="month-12">Decembro</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">Xan.</term>
+ <term name="month-02" form="short">Fev.</term>
+ <term name="month-03" form="short">Mar.</term>
+ <term name="month-04" form="short">Abr.</term>
+ <term name="month-05" form="short">Mai.</term>
+ <term name="month-06" form="short">Xun.</term>
+ <term name="month-07" form="short">Xul.</term>
+ <term name="month-08" form="short">Ago.</term>
+ <term name="month-09" form="short">Set.</term>
+ <term name="month-10" form="short">Out.</term>
+ <term name="month-11" form="short">Nov.</term>
+ <term name="month-12" form="short">Dec.</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">Primavera</term>
+ <term name="season-02">Verán</term>
+ <term name="season-03">Outono</term>
+ <term name="season-04">Inverno</term>
+ </terms>
+</locale>
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-he-IL.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-he-IL.xml
index 7a0722b0b53..c8bd5c78baf 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-he-IL.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-he-IL.xml
@@ -5,7 +5,7 @@
<name>roypeled1</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-hi-IN.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-hi-IN.xml
index 4286d456b11..d47e7d35f22 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-hi-IN.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-hi-IN.xml
@@ -6,7 +6,7 @@
<email>neha-srivastava@outlook.com</email>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2021-02-22T12:13:02+05:30</updated>
</info>
<style-options punctuation-in-quote="true"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-hr-HR.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-hr-HR.xml
index 5eb88b2f138..816f414867e 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-hr-HR.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-hr-HR.xml
@@ -5,7 +5,7 @@
<name>tvrbanec</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-hu-HU.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-hu-HU.xml
index 0d498e3d0ac..24a1ac250c4 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-hu-HU.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-hu-HU.xml
@@ -5,7 +5,7 @@
<name>Miklos Vajna</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2014-06-17T09:56:35+02:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-id-ID.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-id-ID.xml
index 059e20f09aa..ae09b33835d 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-id-ID.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-id-ID.xml
@@ -11,7 +11,7 @@
<name>xbypass</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2015-08-05T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="true"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-is-IS.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-is-IS.xml
index 58a6681d536..717ce4e9846 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-is-IS.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-is-IS.xml
@@ -8,7 +8,7 @@
<name>styrmirm</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-it-IT.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-it-IT.xml
index fc8617a6ad8..27e80c894c2 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-it-IT.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-it-IT.xml
@@ -6,7 +6,7 @@
<email>filippo.vomiero@unipd.it</email>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2022-07-07T17:56:02+01:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ja-JP.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ja-JP.xml
index c9e00510572..87e8e564c29 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ja-JP.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ja-JP.xml
@@ -8,7 +8,7 @@
<name>cmplstofB</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-12T12:31:23-04:00</updated>
+ <updated>2024-03-12T14:01:18+00:00</updated>
<!--
日本語化にあたって参考にした文献
* SIST 02:2007「参照文献の書き方」
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-km-KH.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-km-KH.xml
index abb8976f488..cb8c6236b9d 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-km-KH.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-km-KH.xml
@@ -2,7 +2,7 @@
<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="km-KH">
<info>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ko-KR.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ko-KR.xml
index 79de5d93962..aa4732d36c1 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ko-KR.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ko-KR.xml
@@ -2,7 +2,7 @@
<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="ko-KR">
<info>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-la.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-la.xml
index e65875b120c..2875962f3fc 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-la.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-la.xml
@@ -5,7 +5,7 @@
<name>Andrew Dunning</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2019-01-21T13:33:33+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-lt-LT.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-lt-LT.xml
index 7f5c2564cf3..60723d97f2f 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-lt-LT.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-lt-LT.xml
@@ -5,7 +5,7 @@
<name>Valdemaras Klumbys</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2017-01-18T10:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text" delimiter=" ">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-lv-LV.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-lv-LV.xml
index 824d67b9e79..534b6adcfbb 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-lv-LV.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-lv-LV.xml
@@ -5,7 +5,7 @@
<name>Andris Lupgins</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-12-27T11:40:58+02:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text" delimiter=" ">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-mn-MN.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-mn-MN.xml
index b38c0b59905..2d5c137d491 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-mn-MN.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-mn-MN.xml
@@ -2,7 +2,7 @@
<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="mn-MN">
<info>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-nb-NO.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-nb-NO.xml
index 61b92b845d8..341aa6d6dae 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-nb-NO.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-nb-NO.xml
@@ -5,7 +5,7 @@
<name>Guttorm Flatabø</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2013-03-01T12:20:00+01:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-nl-NL.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-nl-NL.xml
index 6bc9da602ee..e3038f0645b 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-nl-NL.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-nl-NL.xml
@@ -6,7 +6,7 @@
<uri>http://twitter.com/rintzezelle</uri>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2017-04-01T12:00:00+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-nn-NO.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-nn-NO.xml
index 8bb4f6b8b5c..1c669a40174 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-nn-NO.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-nn-NO.xml
@@ -5,7 +5,7 @@
<name>Guttorm Flatabø</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2013-03-01T12:20:00+01:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pa-PK.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pa-PK.xml
new file mode 100644
index 00000000000..246f8eb3890
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pa-PK.xml
@@ -0,0 +1,504 @@
+<?xml version="1.0" encoding="utf-8"?>
+<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="pa-PK">
+ <info>
+ <translator>
+ <name>عثمان</name>
+ </translator>
+ <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
+ <updated>2024-03-18T11:52:00+00:00</updated>
+ </info>
+ <style-options punctuation-in-quote="true"/>
+ <date form="text">
+ <date-part name="day" suffix="؍ "/>
+ <date-part name="month" suffix=" "/>
+ <date-part name="year" suffix="ء"/>
+ </date>
+ <date form="numeric">
+ <date-part name="day" form="numeric-leading-zeros" suffix="-"/>
+ <date-part name="month" form="numeric-leading-zeros" suffix="-"/>
+ <date-part name="year"/>
+ </date>
+ <terms>
+ <!-- GENERAL TERMS -->
+ <term name="accessed">پہنچیا</term>
+ <term name="advance-online-publication">آن لائن اگاؤں دتی اشاعت</term>
+ <term name="album">البم</term>
+ <term name="and">تے</term>
+ <term name="and others">تے ہور</term>
+ <term name="anonymous">گم نام</term>
+ <term name="at">پر</term>
+ <term name="audio-recording">آدیو ریکارڈ</term>
+ <term name="available at">دستیابی دی پتا</term>
+ <term name="by">وسیلیوں</term>
+ <term name="circa">تقریباً</term>
+ <term name="cited">حوالہ دتا</term>
+ <term name="et-al">تے ہور</term>
+ <term name="film">فلم</term>
+ <term name="forthcoming">آوݨ والا</term>
+ <term name="from">از</term>
+ <term name="henceforth">ہݨ توں</term>
+ <term name="ibid">ایضاً</term>
+ <term name="in">در</term>
+ <term name="in press">پریس وچ</term>
+ <term name="internet">انٹرنیٹ</term>
+ <term name="letter">چٹھی</term>
+ <term name="loc-cit">ایضاً</term> <!-- like ibid., the abbreviated form is the regular form -->
+ <term name="no date">بے تاریخ</term>
+ <term name="no-place">بے تھاں</term>
+ <term name="no-publisher">بے چھاپا خانہ</term> <!-- sine nomine -->
+ <term name="on">پر</term>
+ <term name="online">آن لائن</term>
+ <term name="op-cit">ایضاً</term> <!-- like ibid., the abbreviated form is the regular form -->
+ <term name="original-work-published">اصل کم چھاپیا</term>
+ <term name="personal-communication">نجی گل کرن</term>
+ <term name="podcast">پاڈ کاسٹ</term>
+ <term name="podcast-episode">پاڈ کاسٹ ایپیسوڈ</term>
+ <term name="preprint">پریپرنٹ</term>
+ <term name="presented at">کانفرنس</term>
+ <term name="radio-broadcast">ریڈیو براڈ کاسٹ</term>
+ <term name="radio-series">ریڈیو سلسلہ</term>
+ <term name="radio-series-episode">ریڈیو ایپیسوڈ</term>
+ <term name="reference">
+ <single>حوالہ</single>
+ <multiple>حوالے</multiple>
+ </term>
+ <term name="retrieved">حاصل کیتا</term>
+ <term name="review-of">ریویو از</term>
+ <term name="scale">سکیل</term>
+ <term name="special-issue">خاص شمارہ</term>
+ <term name="special-section">خاص جز</term>
+ <term name="television-broadcast">ٹیلی ویژن براڈ کاسٹ</term>
+ <term name="television-series">ٹیلی ویژن سلسلہ</term>
+ <term name="television-series-episode">ٹیلی ویژن ایپیسوڈ</term>
+ <term name="video">ویڈیو</term>
+ <term name="working-paper">ورکنگ پیپر</term>
+
+ <!-- LONG ITEM TYPE FORMS -->
+ <term name="article">پریپرنٹ</term>
+ <term name="article-journal">جرنل دا لیکھ</term>
+ <term name="article-magazine">میگزین دا لیکھ</term>
+ <term name="article-newspaper">اخبار دا لیکھ</term>
+ <term name="bill">بِل</term>
+ <!-- book is in the list of locator terms -->
+ <term name="broadcast">براڈ کاسٹ</term>
+ <!-- chapter is in the list of locator terms -->
+ <term name="classic">کلیسک</term>
+ <term name="collection">مجموعہ</term>
+ <term name="dataset">ڈیٹا سیٹ</term>
+ <term name="document">دستاویز</term>
+ <term name="entry">اندراج</term>
+ <term name="entry-dictionary">لغت وچ اندراج</term>
+ <term name="entry-encyclopedia">انسائیکلو پیڈیا وچ اندراج</term>
+ <term name="event">واقعہ</term>
+ <!-- figure is in the list of locator terms -->
+ <term name="graphic">نگاری</term>
+ <term name="hearing">سماعت</term>
+ <term name="interview">انٹرویو</term>
+ <term name="legal_case">مقدمہ</term>
+ <term name="legislation">قانون نامہ</term>
+ <term name="manuscript">مسودہ</term>
+ <term name="map">نقشہ</term>
+ <term name="motion_picture">ویڈیو ریکارڈ</term>
+ <term name="musical_score">موسیقار سکور</term>
+ <term name="pamphlet">پمفلٹ</term>
+ <term name="paper-conference">کانفرنس پیپر</term>
+ <term name="patent">پیٹنٹ</term>
+ <term name="performance">ناٹک</term>
+ <term name="periodical">رسالہ</term>
+ <term name="personal_communication">نجی گل کرن</term>
+ <term name="post">پوسٹ</term>
+ <term name="post-weblog">بلاگ پوسٹ</term>
+ <term name="regulation">ریگولیشن</term>
+ <term name="report">ریپورٹ</term>
+ <term name="review">ریویو</term>
+ <term name="review-book">کتابی ریویو</term>
+ <term name="software">سافٹویر</term>
+ <term name="song">آڈیو ریکارڈ</term>
+ <term name="speech">سپیچ</term>
+ <term name="standard">سٹینڈرڈ</term>
+ <term name="thesis">تھیسس</term>
+ <term name="treaty">معاہدہ</term>
+ <term name="webpage">ویب صفحہ</term>
+
+ <!-- VERB ITEM TYPE FORMS -->
+ <!-- Only where applicable -->
+ <term name="hearing" form="verb">ثبوت دتا از</term>
+ <term name="review" form="verb">ریویو کیتا از</term>
+ <term name="review-book" form="verb">کتاب دا ریویو کیتا</term>
+
+ <!-- HISTORICAL ERA TERMS -->
+ <term name="ad">عیسوی</term>
+ <term name="bc">قبل مسیح</term>
+ <term name="bce">قبل عام زمانہ</term>
+ <term name="ce">عام زمانہ</term>
+
+ <!-- PUNCTUATION -->
+ <term name="open-quote">”</term>
+ <term name="close-quote">“</term>
+ <term name="open-inner-quote">’</term>
+ <term name="close-inner-quote">‘</term>
+ <term name="page-range-delimiter">–</term>
+ <term name="colon">:</term>
+ <term name="comma">،</term>
+ <term name="semicolon">؛</term>
+
+ <!-- ORDINALS -->
+ <term name="ordinal" gender-form="masculine">واں</term>
+ <term name="ordinal" gender-form="feminine">ویں</term>
+ <term name="ordinal-01" gender-form="masculine">لا</term>
+ <term name="ordinal-02" gender-form="masculine">جا</term>
+ <term name="ordinal-03" gender-form="masculine">جا</term>
+ <term name="ordinal-04" gender-form="masculine">تھا</term>
+ <term name="ordinal-11" gender-form="masculine">واں</term>
+ <term name="ordinal-12" gender-form="masculine">واں</term>
+ <term name="ordinal-13" gender-form="masculine">واں</term>
+ <term name="ordinal-14" gender-form="masculine">واں</term>
+ <term name="ordinal-01" gender-form="feminine">لی</term>
+ <term name="ordinal-02" gender-form="feminine">جی</term>
+ <term name="ordinal-03" gender-form="feminine">جی</term>
+ <term name="ordinal-04" gender-form="feminine">تھی</term>
+ <term name="ordinal-11" gender-form="feminine">ویں</term>
+ <term name="ordinal-12" gender-form="feminine">ویں</term>
+ <term name="ordinal-13" gender-form="feminine">ویں</term>
+ <term name="ordinal-14" gender-form="feminine">ویں</term>
+
+ <!-- LONG ORDINALS -->
+ <term name="long-ordinal-01" gender-form="masculine">پہلا</term>
+ <term name="long-ordinal-02" gender-form="masculine">دوجا</term>
+ <term name="long-ordinal-03" gender-form="masculine">تیجا</term>
+ <term name="long-ordinal-04" gender-form="masculine">چوتھا</term>
+ <term name="long-ordinal-05" gender-form="masculine">پنجواں</term>
+ <term name="long-ordinal-06" gender-form="masculine">چھیواں</term>
+ <term name="long-ordinal-07" gender-form="masculine">ستواں</term>
+ <term name="long-ordinal-08" gender-form="masculine">اٹھواں</term>
+ <term name="long-ordinal-09" gender-form="masculine">نوواں</term>
+ <term name="long-ordinal-10" gender-form="masculine">دسواں</term>
+ <term name="long-ordinal-01" gender-form="feminine">پہلی</term>
+ <term name="long-ordinal-02" gender-form="feminine">دوجی</term>
+ <term name="long-ordinal-03" gender-form="feminine">تیجی</term>
+ <term name="long-ordinal-04" gender-form="feminine">چوتھی</term>
+ <term name="long-ordinal-05" gender-form="feminine">پنجویں</term>
+ <term name="long-ordinal-06" gender-form="feminine">چھیویں</term>
+ <term name="long-ordinal-07" gender-form="feminine">ستویں</term>
+ <term name="long-ordinal-08" gender-form="feminine">اٹھویں</term>
+ <term name="long-ordinal-09" gender-form="feminine">نوویں</term>
+ <term name="long-ordinal-10" gender-form="feminine">دسویں</term>
+
+ <!-- LONG LOCATOR FORMS -->
+ <term name="act">
+ <single>ایکٹ</single>
+ <multiple>ایکٹ</multiple>
+ </term>
+ <term name="appendix">
+ <single>ضمیمہ</single>
+ <multiple>ضمیمے</multiple>
+ </term>
+ <term name="article-locator">
+ <single>لیکھ</single>
+ <multiple>لیکھ</multiple>
+ </term>
+ <term name="book">
+ <single>کتاب</single>
+ <multiple>کتاباں</multiple>
+ </term>
+ <term name="canon">
+ <single>قانون</single>
+ <multiple>قانون</multiple>
+ </term>
+ <term name="chapter">
+ <single>کانڈ</single>
+ <multiple>کانڈ</multiple>
+ </term>
+ <term name="column">
+ <single>کالم</single>
+ <multiple>کالم</multiple>
+ </term>
+ <term name="elocation">
+ <single>تھاں</single>
+ <multiple>تھاواں</multiple>
+ </term>
+ <term name="equation">
+ <single>مساوات</single>
+ <multiple>مساواتاں</multiple>
+ </term>
+ <term name="figure">
+ <single>تصویر</single>
+ <multiple>تصویراں</multiple>
+ </term>
+ <term name="folio">
+ <single>فولیو</single>
+ <multiple>فولیو</multiple>
+ </term>
+ <term name="issue" gender="masculine">
+ <single>شمارہ</single>
+ <multiple>شمارے</multiple>
+ </term>
+ <term name="line">
+ <single>قطار</single>
+ <multiple>قطاراں</multiple>
+ </term>
+ <term name="note">
+ <single>نوٹ</single>
+ <multiple>نوٹ</multiple>
+ </term>
+ <term name="opus">
+ <single>کارنامہ</single>
+ <multiple>کارنامے</multiple>
+ </term>
+ <term name="page" gender="masculine">
+ <single>صفحہ</single>
+ <multiple>صفحے</multiple>
+ </term>
+ <term name="paragraph">
+ <single>پیرا</single>
+ <multiple>پیرے</multiple>
+ </term>
+ <term name="part" gender="masculine">
+ <single>حصہ</single>
+ <multiple>حصے</multiple>
+ </term>
+ <term name="rule">
+ <single>رول</single>
+ <multiple>رول</multiple>
+ </term>
+ <term name="scene">
+ <single>سین</single>
+ <multiple>سین</multiple>
+ </term>
+ <term name="section" gender="masculine">
+ <single>جز</single>
+ <multiple>جز</multiple>
+ </term>
+ <term name="sub-verbo">
+ <single>زیر کلمہ</single>
+ <multiple>زیر کلمے</multiple>
+ </term>
+ <term name="supplement">
+ <single>لاحق</single>
+ <multiple>لاحق</multiple>
+ </term>
+ <term name="table">
+ <single>ٹیبل</single>
+ <multiple>ٹیبل</multiple>
+ </term>
+ <term name="timestamp"> <!-- generally blank -->
+ <single></single>
+ <multiple></multiple>
+ </term>
+ <term name="title-locator">
+ <single>عنوان</single>
+ <multiple>عنوان</multiple>
+ </term>
+ <term name="verse">
+ <single>شعر</single>
+ <multiple>شعر</multiple>
+ </term>
+ <term name="version" gender="masculine">
+ <single>ورژن</single>
+ <multiple>ورژن</multiple>
+ </term>
+ <term name="volume" gender="masculine">
+ <single>جلد</single>
+ <multiple>جلد</multiple>
+ </term>
+
+ <!-- SYMBOL LOCATOR FORMS -->
+ <term name="paragraph" form="symbol">
+ <single>¶</single>
+ <multiple>¶¶</multiple>
+ </term>
+ <term name="section" form="symbol">
+ <single>§</single>
+ <multiple>§§</multiple>
+ </term>
+
+ <!-- LONG NUMBER VARIABLE FORMS -->
+ <term name="chapter-number" gender="masculine">
+ <single>کانڈ</single>
+ <multiple>کانڈ</multiple>
+ </term>
+ <term name="citation-number" gender="masculine">
+ <single>حوالہ</single>
+ <multiple>حوالے</multiple>
+ </term>
+ <term name="collection-number" gender="masculine">
+ <single>نمبر</single>
+ <multiple>نمبر</multiple>
+ </term>
+ <term name="edition" gender="feminine">
+ <single>چھپائی</single>
+ <multiple>چھپائیاں</multiple>
+ </term>
+ <term name="first-reference-note-number" gender="masculine">
+ <single>حوالہ</single>
+ <multiple>حوالے</multiple>
+ </term>
+ <term name="number" gender="masculine">
+ <single>نمبر</single>
+ <multiple>نمبر</multiple>
+ </term>
+ <term name="number-of-pages" gender="masculine">
+ <single>صفحہ</single>
+ <multiple>صفحے</multiple>
+ </term>
+ <term name="number-of-volumes" gender="masculine">
+ <single>جلد</single>
+ <multiple>جلد</multiple>
+ </term>
+ <term name="page-first" gender="masculine">
+ <single>صفحہ</single>
+ <multiple>صفحے</multiple>
+ </term>
+ <term name="printing" gender="feminine">
+ <single>چھاپ</single>
+ <multiple>چھاپاں</multiple>
+ </term>
+
+ <!-- LONG ROLE FORMS -->
+ <!-- Omitted roles:
+ author, composer, container-author, interviewer, original-author, recipient, reviewed-author
+ -->
+ <term name="chair">
+ <single>چیر</single>
+ <multiple>چیر</multiple>
+ </term>
+ <term name="collection-editor">
+ <single>سودھی</single>
+ <multiple>سودھی</multiple>
+ </term>
+ <term name="compiler">
+ <single>مرتب</single>
+ <multiple>مرتب</multiple>
+ </term>
+ <term name="contributor">
+ <single>حصہ لاوݨ والا</single>
+ <multiple>حصہ لاوݨ والے</multiple>
+ </term>
+ <term name="curator">
+ <single>کیوریٹر</single>
+ <multiple>کیوریٹر</multiple>
+ </term>
+ <term name="director">
+ <single>ڈائریکٹر</single>
+ <multiple>ڈائریکٹر</multiple>
+ </term>
+ <term name="editor">
+ <single>سودھی</single>
+ <multiple>سودھی</multiple>
+ </term>
+ <term name="editortranslator">
+ <single>سودھی &amp; مترجم</single>
+ <multiple>سودھی &amp; مترجم</multiple>
+ </term>
+ <term name="editorial-director">
+ <single>سودھی</single>
+ <multiple>سودھی</multiple>
+ </term>
+ <term name="executive-producer">
+ <single>انتظامیہ</single>
+ <multiple>انتظامیہ</multiple>
+ </term>
+ <term name="guest">
+ <single>مہمان</single>
+ <multiple>مہمان</multiple>
+ </term>
+ <term name="host">
+ <single>میزبان</single>
+ <multiple>میزبان</multiple>
+ </term>
+ <term name="illustrator">
+ <single>مصور</single>
+ <multiple>مصور</multiple>
+ </term>
+ <term name="narrator">
+ <single>راوی</single>
+ <multiple>راوی</multiple>
+ </term>
+ <term name="organizer">
+ <single>تنظیم کرن والا</single>
+ <multiple>تنظیم کرن والے</multiple>
+ </term>
+ <term name="performer">
+ <single>کلاکار</single>
+ <multiple>کلاکار</multiple>
+ </term>
+ <term name="producer">
+ <single>پروڈیوسر</single>
+ <multiple>پروڈیوسر</multiple>
+ </term>
+ <term name="script-writer">
+ <single>لکھاری</single>
+ <multiple>لکھاری</multiple>
+ </term>
+ <term name="series-creator">
+ <single>سلسلہ بݨاوݨ والا</single>
+ <multiple>سلسلہ بݨاوݨ والے</multiple>
+ </term>
+ <term name="translator">
+ <single>مترجم</single>
+ <multiple>مترجم</multiple>
+ </term>
+
+ <!-- VERB ROLE FORMS -->
+ <term name="chair" form="verb">چیر نال</term>
+ <term name="collection-editor" form="verb">سودھی نال</term>
+ <term name="compiler" form="verb">مرتب نال</term>
+ <term name="composer" form="verb">رچنا کار نال</term>
+ <term name="container-author" form="verb">بقلم</term>
+ <term name="contributor" form="verb">تے حصہ لاوݨ والے نال</term>
+ <term name="curator" form="verb">کیوریٹر نال</term>
+ <term name="director" form="verb">ڈائریکٹر نال</term>
+ <term name="editor" form="verb">سودھی نال</term>
+ <term name="editortranslator" form="verb">سودھی &amp; مترجم نال</term>
+ <term name="editorial-director" form="verb">سودھی نال</term>
+ <term name="executive-producer" form="verb">انتظامیے نال</term>
+ <term name="guest" form="verb">مہمان نال</term>
+ <term name="host" form="verb">میزبان نال</term>
+ <term name="illustrator" form="verb">مصور نال</term>
+ <term name="interviewer" form="verb">انٹرویو نال</term>
+ <term name="narrator" form="verb">راوی نال</term>
+ <term name="organizer" form="verb">تنظیم کرن والے نال</term>
+ <term name="original-author" form="verb">بقلم</term>
+ <term name="performer" form="verb">کلاکار نال</term>
+ <term name="producer" form="verb">پروڈیوسر نال</term>
+ <term name="recipient" form="verb">توں</term>
+ <term name="reviewed-author" form="verb">بقلم</term>
+ <term name="script-writer" form="verb">بقلم</term>
+ <term name="series-creator" form="verb">رچنا کار نال</term>
+ <term name="translator" form="verb">مترجم نال</term>
+
+<!-- LONG MONTH FORMS -->
+ <term name="month-01" gender="masculine">جنوری</term>
+ <term name="month-02" gender="masculine">فروری</term>
+ <term name="month-03" gender="masculine">مارچ</term>
+ <term name="month-04" gender="masculine">اپریل</term>
+ <term name="month-05" gender="masculine">مئی</term>
+ <term name="month-06" gender="masculine">جون</term>
+ <term name="month-07" gender="masculine">جولئی</term>
+ <term name="month-08" gender="masculine">اگست</term>
+ <term name="month-09" gender="masculine">ستمبر</term>
+ <term name="month-10" gender="masculine">اکتوبر</term>
+ <term name="month-11" gender="masculine">نومبر</term>
+ <term name="month-12" gender="masculine">دسمبر</term>
+
+ <!-- SHORT MONTH FORMS -->
+ <term name="month-01" form="short">جنو</term>
+ <term name="month-02" form="short">فرو</term>
+ <term name="month-03" form="short">مار</term>
+ <term name="month-04" form="short">اپر</term>
+ <term name="month-05" form="short">مئی</term>
+ <term name="month-06" form="short">جون</term>
+ <term name="month-07" form="short">جول‍</term>
+ <term name="month-08" form="short">اگس‍</term>
+ <term name="month-09" form="short">ستم‍</term>
+ <term name="month-10" form="short">اکت‍</term>
+ <term name="month-11" form="short">نوم‍</term>
+ <term name="month-12" form="short">دسم‍</term>
+
+ <!-- SEASONS -->
+ <term name="season-01">بہار</term>
+ <term name="season-02">گرمی</term>
+ <term name="season-03">پتجھڑ</term>
+ <term name="season-04">سردی</term>
+ </terms>
+</locale>
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pl-PL.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pl-PL.xml
index c59e490be51..5883d186a92 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pl-PL.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pl-PL.xml
@@ -11,7 +11,7 @@
<name>Pendzoncymisio</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pt-BR.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pt-BR.xml
index 75f3dfb1c24..c0b8d8f995c 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pt-BR.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pt-BR.xml
@@ -11,7 +11,7 @@
<name>Renato Cirino</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-12T12:31:23-04:00</updated>
+ <updated>2024-03-12T14:06:50+00:00</updated>
</info>
<style-options punctuation-in-quote="false" limit-day-ordinals-to-day-1="true"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pt-PT.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pt-PT.xml
index 8a91598dc46..528f0a20fb2 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pt-PT.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-pt-PT.xml
@@ -2,7 +2,7 @@
<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="pt-PT">
<info>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-17T21:13:27-04:00</updated>
+ <updated>2013-09-20T23:31:02+00:00</updated>
<translator>
<name>Jonadabe PT</name>
</translator>
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ro-RO.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ro-RO.xml
index 5d28c50afc8..c9aa2682c15 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ro-RO.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ro-RO.xml
@@ -10,7 +10,7 @@
<email>alin.andrei.balasa@blsalin.dev</email>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-04-14T09:09:26-04:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ru-RU.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ru-RU.xml
index 092fe510427..2a90550a857 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ru-RU.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-ru-RU.xml
@@ -6,7 +6,7 @@
<email>alexei.kouprianov@gmail.com</email>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sk-SK.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sk-SK.xml
index 79fc47dff31..b4af7357651 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sk-SK.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sk-SK.xml
@@ -8,7 +8,7 @@
<name>kohafan</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2014-03-09T22:23:31+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sl-SI.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sl-SI.xml
index 099f67de883..3d376af5a7a 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sl-SI.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sl-SI.xml
@@ -8,7 +8,7 @@
<name>ratek1</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2014-11-06T09:41:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sr-RS.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sr-RS.xml
index 650321e8bad..c20d0a05700 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sr-RS.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sr-RS.xml
@@ -2,7 +2,7 @@
<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="sr-RS">
<info>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sv-SE.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sv-SE.xml
index 4afa3581364..bc8e986496a 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sv-SE.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-sv-SE.xml
@@ -14,7 +14,7 @@
<name>Ulf Harnhammar</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-th-TH.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-th-TH.xml
index 16958781e55..381c1a93436 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-th-TH.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-th-TH.xml
@@ -5,7 +5,7 @@
<name>Dusit Laohasinnarong</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-tr-TR.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-tr-TR.xml
index 5e4a88b1e00..349d2f9afcf 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-tr-TR.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-tr-TR.xml
@@ -15,7 +15,7 @@
<email>muhammettarakci@gmail.com</email>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-uk-UA.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-uk-UA.xml
index e858a4b4c23..132e21fdecc 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-uk-UA.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-uk-UA.xml
@@ -2,7 +2,7 @@
<locale xmlns="http://purl.org/net/xbiblio/csl" version="1.0" xml:lang="uk-UA">
<info>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2018-09-17T21:00:00+02:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-vi-VN.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-vi-VN.xml
index ec07aca1970..86d5d8ab7a6 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-vi-VN.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-vi-VN.xml
@@ -5,7 +5,7 @@
<name>dowens76</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2012-07-04T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-zh-CN.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-zh-CN.xml
index 223eb2cd8c6..960d0e836de 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-zh-CN.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-zh-CN.xml
@@ -11,7 +11,7 @@
<name>Heromyth</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-03-09T15:20:54-05:00</updated>
+ <updated>2014-05-15T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-zh-TW.xml b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-zh-TW.xml
index acd44019875..41916cb0da8 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-zh-TW.xml
+++ b/Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-zh-TW.xml
@@ -5,7 +5,7 @@
<name>sati-bodhi</name>
</translator>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- <updated>2024-08-12T16:22:23-04:00</updated>
+ <updated>2014-05-15T23:31:02+00:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/styles/apa.csl b/Master/texmf-dist/tex/latex/citation-style-language/styles/apa.csl
index a78e7f315fd..4f20a15e9bd 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/styles/apa.csl
+++ b/Master/texmf-dist/tex/latex/citation-style-language/styles/apa.csl
@@ -14,7 +14,7 @@
<category citation-format="author-date"/>
<category field="psychology"/>
<category field="generic-base"/>
- <updated>2024-08-24T12:16:51-04:00</updated>
+ <updated>2025-01-22T13:45:37-05:00</updated>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
</info>
<locale xml:lang="en">
@@ -92,6 +92,11 @@
<term name="et-al">et al.</term>
</terms>
</locale>
+ <locale xml:lang="ro">
+ <terms>
+ <term name="et-al">et al.</term>
+ </terms>
+ </locale>
<!-- For Indigeneous Knowledge, assume the item is stored as `document` or `speech`
and that Nation/Community, treaty, where the Elder lives,
and topic are all stored in `title`
@@ -133,7 +138,7 @@
<!-- APA references contain four parts: author, date, title, source -->
<macro name="author-bib">
<group delimiter=" ">
- <names variable="composer" delimiter=", ">
+ <names variable="composer" delimiter=", &amp; ">
<name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/>
<substitute>
<names variable="author"/>
@@ -142,7 +147,7 @@
<!-- TODO: Replace `delimiter` with `collapse` to combine names variables when that becomes available. -->
<choose>
<if type="broadcast">
- <names variable="script-writer director" delimiter=", &amp; ">
+ <names variable="script-writer director">
<!-- Note: Actors/performers and producers [not executive] not cited in APA style. -->
<name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/>
<label form="long" prefix=" (" suffix=")" text-case="title"/>
@@ -155,7 +160,7 @@
<label form="long" prefix=" (" suffix=")" text-case="title"/>
</names>
<!-- TODO: Replace `delimiter` with `collapse` to combine names variables when that becomes available. -->
- <names variable="guest host" delimiter=", &amp; ">
+ <names variable="guest host">
<name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/>
<label form="long" prefix=" (" suffix=")" text-case="title"/>
</names>
@@ -288,7 +293,7 @@
</choose>
</else-if>
<else>
- <names variable="composer" delimiter=", ">
+ <names variable="composer" delimiter=" &amp; ">
<name form="short" and="symbol" delimiter=", " initialize-with=". "/>
<substitute>
<names variable="author"/>
@@ -296,12 +301,12 @@
<!-- TODO: Replace `delimiter` with `collapse` to combine names variables when that becomes available. -->
<choose>
<if type="broadcast">
- <names variable="script-writer director" delimiter=", &amp; "/>
+ <names variable="script-writer director"/>
</if>
</choose>
<names variable="director"/>
<!-- TODO: Replace `delimiter` with `collapse` to combine names variables when that becomes available. -->
- <names variable="guest host" delimiter=", &amp; "/>
+ <names variable="guest host"/>
<names variable="producer"/>
<choose>
<if variable="container-title">
@@ -832,7 +837,7 @@
<group delimiter=" ">
<text variable="genre" text-case="capitalize-first"/>
<group delimiter=" ">
- <text term="author" form="verb"/>
+ <text term="container-author" form="verb"/>
<names variable="interviewer">
<name and="symbol" initialize-with=". " delimiter=", "/>
</names>
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/styles/modern-humanities-research-association.csl b/Master/texmf-dist/tex/latex/citation-style-language/styles/modern-humanities-research-association.csl
index 73f0d89a108..a9c830f8afd 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/styles/modern-humanities-research-association.csl
+++ b/Master/texmf-dist/tex/latex/citation-style-language/styles/modern-humanities-research-association.csl
@@ -23,7 +23,7 @@
<category citation-format="note"/>
<category field="generic-base"/>
<summary>MHRA format with full notes and bibliography</summary>
- <updated>2024-05-14T10:11:14-04:00</updated>
+ <updated>2024-10-30T12:10:40-04:00</updated>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
</info>
<locale xml:lang="en">
@@ -102,21 +102,17 @@
</else>
</choose>
</macro>
- <macro name="disambiguate">
+ <macro name="title-subsequent">
<choose>
- <if disambiguate="true">
- <choose>
- <if variable="title" match="none">
- <text macro="issued"/>
- </if>
- <else-if type="bill book graphic legal_case legislation motion_picture report song" match="any">
- <text variable="title" font-style="italic" text-case="title" form="short"/>
- </else-if>
- <else>
- <text variable="title" quotes="true" text-case="title" form="short"/>
- </else>
- </choose>
+ <if variable="title" match="none">
+ <text macro="issued"/>
</if>
+ <else-if type="bill book graphic legal_case legislation motion_picture report song" match="any">
+ <text variable="title" font-style="italic" text-case="title" form="short"/>
+ </else-if>
+ <else>
+ <text variable="title" quotes="true" text-case="title" form="short"/>
+ </else>
</choose>
</macro>
<macro name="title-sort-substitute">
@@ -449,7 +445,7 @@
<if position="subsequent">
<group delimiter=", ">
<text macro="contributors-short"/>
- <text macro="disambiguate"/>
+ <text macro="title-subsequent"/>
<text macro="locators-specific-note"/>
</group>
<text macro="point-locators-subsequent"/>
diff --git a/Master/texmf-dist/tex/latex/clicks/clicks.sty b/Master/texmf-dist/tex/latex/clicks/clicks.sty
index ee29f813a53..0e88477d65b 100644
--- a/Master/texmf-dist/tex/latex/clicks/clicks.sty
+++ b/Master/texmf-dist/tex/latex/clicks/clicks.sty
@@ -7,7 +7,7 @@
%% clicks.dtx (with options: `package')
%% (The MIT License)
%%
-%% Copyright (c) 2021-2022 Yegor Bugayenko
+%% Copyright (c) 2021-2024 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
@@ -31,7 +31,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{clicks}
-[2022-10-03 0.4.1 Slide Deck Animation]
+[2024/12/25 0.4.3 Slide Deck Animation]
@@ -41,44 +41,55 @@
-\RequirePackage{xkeyval}
-\RequirePackage{etoolbox}
+\RequirePackage{pgfopts}
+\pgfkeys{
+ /clicks/.cd,
+ static/.store in=\clicks@static,
+}
+\ProcessPgfPackageOptions{/clicks}
\makeatletter
-\newif\ifclicks@static
-\DeclareOption{static}{\clicks@statictrue}
-\makeatother
-\ProcessOptions\relax
-
-\makeatletter\newcommand*\clicks@body{}\makeatother
-\makeatletter\newcommand\clicks@flush{%
+\newcommand*\clicks@body{}
+\newcommand\clicks@flush{%
\clicks@body\vspace*{0pt}\newpage%
-}\makeatother
+}
+\makeatother
\newcounter{minutes}
-\makeatletter\newcommand\print[1]{%
- \gappto\clicks@body{{#1\par}}%
-}\makeatother
+\RequirePackage{etoolbox}
+\makeatletter
+\newcommand\print[1]{%
+ \gappto\clicks@body{{#1}}%
+ \def\param{#1}%
+ \ifx\param\empty\else%
+ \gappto\clicks@body{{\par}}%
+ \fi%
+}
+\makeatother
-\makeatletter\newcommand\flush[1][1]{%
+\makeatletter
+\newcommand\flush[1][1]{%
\ifx\clicks@body\empty\else%
\clicks@flush%
\renewcommand*\clicks@body{}%
\fi%
- \ifclicks@static\else%
+ \ifdefined\clicks@static\else%
\addtocounter{minutes}{#1}%
\fi%
}
+\makeatother
-\makeatletter\newcommand\click[1][0]{%
- \ifclicks@static\else%
+\makeatletter
+\newcommand\click[1][0]{%
+ \ifdefined\clicks@static\else%
\addtocounter{minutes}{#1}%
\fi%
- \ifclicks@static\else%
+ \ifdefined\clicks@static\else%
\clicks@flush%
\fi%
-}\makeatother
+}
+\makeatother
\newcommand\plush[2][1]{%
\print{#2}%
diff --git a/Master/texmf-dist/tex/latex/codehigh/codehigh.sty b/Master/texmf-dist/tex/latex/codehigh/codehigh.sty
index 62438d7dac1..36463c7ca61 100644
--- a/Master/texmf-dist/tex/latex/codehigh/codehigh.sty
+++ b/Master/texmf-dist/tex/latex/codehigh/codehigh.sty
@@ -12,7 +12,7 @@
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\ProvidesExplPackage{codehigh}{2023-02-11}{2023A}
+\ProvidesExplPackage{codehigh}{2025-01-04}{2025A}
{Highlight codes and demos with l3regex and lpeg}
%\RequirePackage{xparse}
@@ -274,6 +274,7 @@
\GetCodeHighStyle{code}
\colorbox{codehigh@bg}
{\box_use:N \g__codehigh_code_box}
+ \hfill
}
}
}
@@ -603,36 +604,28 @@
%%> \section{Fake Verbatim Command}
%%% -------------------------------------------------------
-\tl_new:N \l__codehigh_fake_code_tl
+\tl_const:Nn \c__codehigh_fake_escape_tl { \\\{\}\#\^\ \% }
\NewDocumentCommand \fakeverb { +m }
{
\group_begin:
- \tl_set:Nn \l__codehigh_fake_code_tl {#1}
- \__codehigh_fake_verb:N \l__codehigh_fake_code_tl
+ \group_align_safe_begin:
+ \ttfamily \frenchspacing
+ \tl_analysis_map_inline:nn {#1}
+ {
+ \int_compare:nNnTF {##2} = { -1 }
+ {
+ \exp_args:NNo \tl_if_in:NnTF \c__codehigh_fake_escape_tl {##1}
+ { \exp_after:wN \cs_to_str:N ##1 }
+ { \exp_after:wN \token_to_str:N ##1 }
+ }
+ { \exp_after:wN \token_to_str:N ##1 }
+ \/ % disable ligatures (#17)
+ }
+ \group_align_safe_end:
\group_end:
}
-\cs_new_protected:Npn \__codehigh_fake_verb:N #1
- {
- \regex_replace_all:nnN { \c{\\} } { \\ } #1
- % use \cO to avoid errors of unmatched braces
- \regex_replace_all:nnN { \c{\{} } { \cO\{ } #1
- \regex_replace_all:nnN { \c{\}} } { \cO\} } #1
- % use \cO to avoid doubled hash characters
- \regex_replace_all:nnN { \c{\#} } { \cO\# } #1
- % need to escape ^ because ^^ and ^^^^ are special
- \regex_replace_all:nnN { \c{\^} } { \^ } #1
- % why we can not use \c{\ } instead of \c{\h}?
- \regex_replace_all:nnN { \c{\h} } { \ } #1
- \regex_replace_all:nnN { \c{\%} } { \% } #1
- % remove spaces after control words
- \regex_replace_all:nnN { . } { \c{string}\0 } #1
- \tl_set:Ne #1 { #1 }
- %\tl_log:N #1
- \ttfamily \frenchspacing \tl_to_str:N #1
- }
-
%%% -------------------------------------------------------
%%> \section{Tracing CodeHigh}
%%% -------------------------------------------------------
diff --git a/Master/texmf-dist/tex/latex/colorblind/colorblind.sty b/Master/texmf-dist/tex/latex/colorblind/colorblind.sty
index a549ea06f99..0f3401a1156 100644
--- a/Master/texmf-dist/tex/latex/colorblind/colorblind.sty
+++ b/Master/texmf-dist/tex/latex/colorblind/colorblind.sty
@@ -4,395 +4,458 @@
%% ----------------------------------------------------------------
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{colorblind}[2024/05/12 Easy colorblind-safe typesetting]
+\ProvidesPackage{colorblind}[2024/12/23 Easy colorblind-safe typesetting]
\RequirePackage{xcolor}
\RequirePackage{ifthen}
-\RequirePackage{tikz}
-\usetikzlibrary{math}
-\RequirePackage{pgfplots}
-\pgfplotsset{compat=1.18}
-\DeclareOption{Tol}{
-%>>> Color schemes by Paul Tol, source: https://personal.sron.nl/~pault
-%
-%>>> Qualitative color schemes
-%
-% Bright Qualitative color scheme
-\providecolorset{RGB}{T-Q-B}{}{%
- 1,68,119,170;%
- 2,102,204,238;%
- 3,34,136,51;%
- 4,204,187,68;%
- 5,238,102,119;%
- 6,170,51,119;%
- 0,187,187,187%
-}
-%
-% High-contrast qualitative color scheme
-\providecolorset{RGB}{T-Q-HC}{}{%
- 1,255,255,255;%
- 2,221,170,51;%
- 3,187,85,102;%
- 4,0,68,136;%
- 0,0,0,0%
-}
-%
-% Vibrant qualitative color scheme
-\providecolorset{RGB}{T-Q-V}{}{%
- 1,0,119,187;%
- 2,51,187,238;%
- 3,0,153,136;%
- 4,238,119,51;%
- 5,204,51,17;%
- 6,238,51,119;%
- 0,187,187,187%
-}
-%
-% Muted qualitative color scheme
-\providecolorset{RGB}{T-Q-M}{}{%
- 1,51,34,136;%
- 2,136,204,238;%
- 3,68,170,153;%
- 4,153,153,51;%
- 5,221,204,119;%
- 6,204,102,119;%
- 7,136,34,85;%
- 8,170,68,153;%
- 0,221,221,221%
-}
-%
-% Medium-contrast qualitative color scheme
-\providecolorset{RGB}{T-Q-MC}{}{%
- 1,255,255,255;%
- 2,238,204,102;%
- 3,238,153,170;%
- 4,102,153,204;%
- 5,153,119,0;%
- 6,153,68,85;%
- 7,0,68,136;%
- 0,0,0,0%
-}
-%
-% Pale qualitative color scheme, for highlighting
-\providecolorset{RGB}{T-Q-PH}{}{%
- 1,187,204,238;%
- 2,204,238,255;%
- 3,204,221,170;%
- 4,238,238,187;%
- 5,255,204,204;%
- 0,221,221,221%
-}
-%
-% Dark qualitative color scheme, for text colors
-\providecolorset{RGB}{T-Q-DT}{}{%
- 1,34,34,85;%
- 2,34,85,85;%
- 3,34,85,34;%
- 4,102,102,51;%
- 5,102,51,51;%
- 0,85,85,85%
-}
-%
-% Light qualitative color scheme
-\providecolorset{RGB}{T-Q-L}{}{%
- 1,119,170,221;%
- 2,153,221,255;%
- 3,68,187,153;%
- 4,187,204,51;%
- 5,170,170,0;%
- 6,238,221,136;%
- 7,238,136,102;%
- 8,255,170,187;%
- 0,221,221,221%
-}
-%
-%<<< Qualitative color schemes
-%
-%>>> Diverging color schemes
-%
-% Sunset diverging color scheme
-\providecolorset{RGB}{T-D-S}{}{%
- 1,54,75,154;%
- 2,74,123,183;%
- 3,110,166,205;%
- 4,152,202,225;%
- 5,194,228,239;%
- 6,234,236,204;%
- 7,254,218,139;%
- 8,253,179,102;%
- 9,246,126,75;%
- 10,221,61,45;%
- 11,165,0,38;%
- 0,255,255,255%
-}
-\pgfplotsset{
- colormap={T-D-S}{color(0)=(T-D-S1) color(1)=(T-D-S2) color(2)=(T-D-S3) color(3)=(T-D-S4) color(4)=(T-D-S5) color(5)=(T-D-S6) color(6)=(T-D-S7) color(7)=(T-D-S8) color(8)=(T-D-S9) color(9)=(T-D-S10) color(10)=(T-D-S11)}
-}
-%
-% Nightfall diverging color scheme
-\providecolorset{RGB}{T-D-N}{}{%
- 1,18,90,86;%
- 2,0,118,123;%
- 3,35,143,157;%
- 4,66,167,198;%
- 5,96,188,233;%
- 6,157,204,239;%
- 7,198,219,237;%
- 8,222,230,231;%
- 9,236,234,218;%
- 10,240,230,178;%
- 11,249,213,118;%
- 12,255,185,84;%
- 13,253,154,68;%
- 14,245,118,52;%
- 15,233,76,31;%
- 16,209,24,7;%
- 17,160,24,19;%
- 0,255,255,255%
-}
-\pgfplotsset{
- colormap={T-D-N}{color(0)=(T-D-N1) color(1)=(T-D-N2) color(2)=(T-D-N3) color(3)=(T-D-N4) color(4)=(T-D-N5) color(5)=(T-D-N6) color(6)=(T-D-N7) color(7)=(T-D-N8) color(8)=(T-D-N9) color(9)=(T-D-N10) color(10)=(T-D-N11) color(11)=(T-D-N12) color(12)=(T-D-N13) color(13)=(T-D-N14) color(14)=(T-D-N15) color(15)=(T-D-N16) color(16)=(T-D-N17)}
-}
-%
-% BuRd diverging color scheme
-\providecolorset{RGB}{T-D-BR}{}{%
- 1,32,102,172;%
- 2,67,147,195;%
- 3,146,197,222;%
- 4,209,229,240;%
- 5,247,247,247;%
- 6,253,219,199;%
- 7,244,165,130;%
- 8,214,96,77;%
- 9,178,24,43;%
- 0,255,238,153%
-}
-\pgfplotsset{
- colormap={T-D-BR}{color(0)=(T-D-BR1) color(1)=(T-D-BR2) color(2)=(T-D-BR3) color(3)=(T-D-BR4) color(4)=(T-D-BR5) color(5)=(T-D-BR6) color(6)=(T-D-BR7) color(7)=(T-D-BR8) color(8)=(T-D-BR9)}
-}
-%
-% PRGn diverging color scheme
-\providecolorset{RGB}{T-D-PG}{}{%
- 1,118,42,131;%
- 2,153,112,171;%
- 3,194,165,207;%
- 4,231,212,232;%
- 5,247,247,247;%
- 6,217,240,211;%
- 7,172,211,158;%
- 8,90,174,97;%
- 9,27,120,55;%
- 0,255,238,153%
-}
-\pgfplotsset{
- colormap={T-D-PG}{color(0)=(T-D-PG1) color(1)=(T-D-PG2) color(2)=(T-D-PG3) color(3)=(T-D-PG4) color(4)=(T-D-PG5) color(5)=(T-D-PG6) color(6)=(T-D-PG7) color(7)=(T-D-PG8) color(8)=(T-D-PG9)}
+\newif\iftikz
+\tikztrue
+\DeclareOption{no-tikz}{
+ \tikzfalse
}
-%
-%<<< Diverging color schemes
-%
-%>>> Sequential color schemes
-%
-% YlOrBr sequential color scheme
-\providecolorset{RGB}{T-S-YOB}{}{%
- 1,255,255,229;%
- 2,255,247,188;%
- 3,254,227,145;%
- 4,254,196,79;%
- 5,251,154,41;%
- 6,236,112,20;%
- 7,204,76,2;%
- 8,153,52,4;%
- 9,102,37,6;%
- 0,136,136,136%
-}
-\pgfplotsset{
- colormap={T-S-YOB}{color(0)=(T-S-YOB1) color(1)=(T-S-YOB2) color(2)=(T-S-YOB3) color(3)=(T-S-YOB4) color(4)=(T-S-YOB5) color(5)=(T-S-YOB6) color(6)=(T-S-YOB7) color(7)=(T-S-YOB8) color(8)=(T-S-YOB9)}
-}
-%
-% Iridescent sequential color scheme
-\providecolorset{RGB}{T-S-IR}{}{%
- 1,254,251,233;%
- 2,252,247,213;%
- 3,245,243,193;%
- 4,234,240,181;%
- 5,221,236,191;%
- 6,208,231,202;%
- 7,194,227,210;%
- 8,181,221,216;%
- 9,168,216,220;%
- 10,155,210,225;%
- 11,141,203,228;%
- 12,129,196,231;%
- 13,123,188,231;%
- 14,126,178,228;%
- 15,136,165,221;%
- 16,147,152,210;%
- 17,155,138,196;%
- 18,157,125,178;%
- 19,154,112,158;%
- 20,144,99,136;%
- 21,128,87,112;%
- 22,104,73,87;%
- 23,70,53,58;%
- 0,153,153,153%
-}
-\pgfplotsset{
- colormap={T-S-IR}{color(0)=(T-S-IR1) color(1)=(T-S-IR2) color(2)=(T-S-IR3) color(3)=(T-S-IR4) color(4)=(T-S-IR5) color(5)=(T-S-IR6) color(6)=(T-S-IR7) color(7)=(T-S-IR8) color(8)=(T-S-IR9) color(9)=(T-S-IR10) color(10)=(T-S-IR11) color(11)=(T-S-IR12) color(12)=(T-S-IR13) color(13)=(T-S-IR14) color(14)=(T-S-IR15) color(15)=(T-S-IR16) color(16)=(T-S-IR17) color(17)=(T-S-IR18) color(18)=(T-S-IR19) color(19)=(T-S-IR20) color(20)=(T-S-IR21) color(21)=(T-S-IR22) color(22)=(T-S-IR23)}
-}
-%
-% Incandescent sequential color scheme
-\providecolorset{RGB}{T-S-IN}{}{%
- 1,206,255,255;%
- 2,198,247,214;%
- 3,162,244,155;%
- 4,187,228,83;%
- 5,213,206,4;%
- 6,231,181,3;%
- 7,241,153,3;%
- 8,246,121,11;%
- 9,249,73,2;%
- 10,228,5,21;%
- 11,168,0,3;%
- 0,136,136,136%
-}
-\pgfplotsset{
- colormap={T-S-IN}{color(0)=(T-S-IN1) color(1)=(T-S-IN2) color(2)=(T-S-IN3) color(3)=(T-S-IN4) color(4)=(T-S-IN5) color(5)=(T-S-IN6) color(6)=(T-S-IN7) color(7)=(T-S-IN8) color(8)=(T-S-IN9) color(9)=(T-S-IN10) color(10)=(T-S-IN11)}
-}
-%
-% Discrete rainbow color scheme
-\providecolorset{RGB}{T-S-DR}{}{%
- 1,209,187,215;%
- 2,174,118,163;%
- 3,136,46,114;%
- 4,25,101,176;%
- 5,82,137,199;%
- 6,123,175,222;%
- 7,78,178,101;%
- 8,144,201,135;%
- 9,202,224,171;%
- 10,247,240,86;%
- 11,246,193,65;%
- 12,241,147,45;%
- 13,232,96,28;%
- 14,220,5,12;%
- 0,119,119,119%
-}
-%
-\providecolorset{RGB}{T-S-SR}{}{%
- 1,232,236,251;%
- 2,221,216,239;%
- 3,209,193,225;%
- 4,195,168,209;%
- 5,181,143,194;%
- 6,167,120,180;%
- 7,155,98,167;%
- 8,140,78,153;%
- 9,111,76,155;%
- 10,96,89,169;%
- 11,85,104,184;%
- 12,78,121,197;%
- 13,77,138,198;%
- 14,78,150,188;%
- 15,84,158,179;%
- 16,89,165,169;%
- 17,96,171,158;%
- 18,105,177,144;%
- 19,119,183,125;%
- 20,140,188,104;%
- 21,166,190,84;%
- 22,190,188,72;%
- 23,209,181,65;%
- 24,221,170,60;%
- 25,228,156,57;%
- 26,231,140,53;%
- 27,230,121,50;%
- 28,228,99,45;%
- 29,223,72,40;%
- 30,218,34,34;%
- 31,184,34,30;%
- 32,149,33,27;%
- 33,114,30,23;%
- 34,82,26,19;%
- 0,102,102,102%
+
+\newif\ifpgf
+\pgffalse
+\DeclareOption{pgf}{
+ \pgftrue
}
-\pgfplotsset{
- colormap={T-S-SR}{color(0)=(T-S-SR1) color(1)=(T-S-SR2) color(2)=(T-S-SR3) color(3)=(T-S-SR4) color(4)=(T-S-SR5) color(5)=(T-S-SR6) color(6)=(T-S-SR7) color(7)=(T-S-SR8) color(8)=(T-S-SR9) color(9)=(T-S-SR10) color(10)=(T-S-SR11) color(11)=(T-S-SR12) color(12)=(T-S-SR13) color(13)=(T-S-SR14) color(14)=(T-S-SR15) color(15)=(T-S-SR16) color(16)=(T-S-SR17) color(17)=(T-S-SR18) color(18)=(T-S-SR19) color(19)=(T-S-SR20) color(20)=(T-S-SR21) color(21)=(T-S-SR22) color(22)=(T-S-SR23) color(23)=(T-S-SR24) color(24)=(T-S-SR25) color(25)=(T-S-SR26) color(26)=(T-S-SR27) color(27)=(T-S-SR28) color(28)=(T-S-SR29) color(29)=(T-S-SR30) color(30)=(T-S-SR31) color(31)=(T-S-SR32) color(32)=(T-S-SR33) color(33)=(T-S-SR34)}
+
+\newif\ifredefinedefaults
+\redefinedefaultstrue
+\DeclareOption{keep-defaults}{
+ \redefinedefaultsfalse
}
-%
-%<<< Sequential color schemes
-%
-%<<< Color schemes by Paul Tol, source: https://personal.sron.nl/~pault
+
+\newif\ifTolColors
+\TolColorsfalse
+\DeclareOption{Tol}{
+ \TolColorstrue
+ %>>> Color schemes by Paul Tol, source: https://personal.sron.nl/~pault
+ %
+ %>>> Qualitative color schemes
+ %
+ % Bright Qualitative color scheme
+ \providecolorset{RGB}{T-Q-B}{}{%
+ 1,68,119,170;%
+ 2,102,204,238;%
+ 3,34,136,51;%
+ 4,204,187,68;%
+ 5,238,102,119;%
+ 6,170,51,119;%
+ 0,187,187,187%
+ }
+ %
+ % High-contrast qualitative color scheme
+ \providecolorset{RGB}{T-Q-HC}{}{%
+ 1,255,255,255;%
+ 2,221,170,51;%
+ 3,187,85,102;%
+ 4,0,68,136;%
+ 0,0,0,0%
+ }
+ %
+ % Vibrant qualitative color scheme
+ \providecolorset{RGB}{T-Q-V}{}{%
+ 1,0,119,187;%
+ 2,51,187,238;%
+ 3,0,153,136;%
+ 4,238,119,51;%
+ 5,204,51,17;%
+ 6,238,51,119;%
+ 0,187,187,187%
+ }
+ %
+ % Muted qualitative color scheme
+ \providecolorset{RGB}{T-Q-M}{}{%
+ 1,51,34,136;%
+ 2,136,204,238;%
+ 3,68,170,153;%
+ 4,17,119,51;%
+ 5,153,153,51;%
+ 6,221,204,119;%
+ 7,204,102,119;%
+ 8,136,34,85;%
+ 9,170,68,153;%
+ 0,221,221,221%
+ }
+ %
+ % Medium-contrast qualitative color scheme
+ \providecolorset{RGB}{T-Q-MC}{}{%
+ 1,255,255,255;%
+ 2,238,204,102;%
+ 3,238,153,170;%
+ 4,102,153,204;%
+ 5,153,119,0;%
+ 6,153,68,85;%
+ 7,0,68,136;%
+ 0,0,0,0%
+ }
+ %
+ % Pale qualitative color scheme, for highlighting
+ \providecolorset{RGB}{T-Q-PH}{}{%
+ 1,187,204,238;%
+ 2,204,238,255;%
+ 3,204,221,170;%
+ 4,238,238,187;%
+ 5,255,204,204;%
+ 0,221,221,221%
+ }
+ %
+ % Dark qualitative color scheme, for text colors
+ \providecolorset{RGB}{T-Q-DT}{}{%
+ 1,34,34,85;%
+ 2,34,85,85;%
+ 3,34,85,34;%
+ 4,102,102,51;%
+ 5,102,51,51;%
+ 0,85,85,85%
+ }
+ %
+ % Light qualitative color scheme
+ \providecolorset{RGB}{T-Q-L}{}{%
+ 1,119,170,221;%
+ 2,153,221,255;%
+ 3,68,187,153;%
+ 4,187,204,51;%
+ 5,170,170,0;%
+ 6,238,221,136;%
+ 7,238,136,102;%
+ 8,255,170,187;%
+ 0,221,221,221%
+ }
+ %
+ %<<< Qualitative color schemes
+ %
+ %>>> Diverging color schemes
+ %
+ % Sunset diverging color scheme
+ \providecolorset{RGB}{T-D-S}{}{%
+ 1,54,75,154;%
+ 2,74,123,183;%
+ 3,110,166,205;%
+ 4,152,202,225;%
+ 5,194,228,239;%
+ 6,234,236,204;%
+ 7,254,218,139;%
+ 8,253,179,102;%
+ 9,246,126,75;%
+ 10,221,61,45;%
+ 11,165,0,38;%
+ 0,255,255,255%
+ }
+ %
+ % Nightfall diverging color scheme
+ \providecolorset{RGB}{T-D-N}{}{%
+ 1,18,90,86;%
+ 2,0,118,123;%
+ 3,35,143,157;%
+ 4,66,167,198;%
+ 5,96,188,233;%
+ 6,157,204,239;%
+ 7,198,219,237;%
+ 8,222,230,231;%
+ 9,236,234,218;%
+ 10,240,230,178;%
+ 11,249,213,118;%
+ 12,255,185,84;%
+ 13,253,154,68;%
+ 14,245,118,52;%
+ 15,233,76,31;%
+ 16,209,24,7;%
+ 17,160,24,19;%
+ 0,255,255,255%
+ }
+ %
+ % BuRd diverging color scheme
+ \providecolorset{RGB}{T-D-BR}{}{%
+ 1,32,102,172;%
+ 2,67,147,195;%
+ 3,146,197,222;%
+ 4,209,229,240;%
+ 5,247,247,247;%
+ 6,253,219,199;%
+ 7,244,165,130;%
+ 8,214,96,77;%
+ 9,178,24,43;%
+ 0,255,238,153%
+ }
+ %
+ % PRGn diverging color scheme
+ \providecolorset{RGB}{T-D-PG}{}{%
+ 1,118,42,131;%
+ 2,153,112,171;%
+ 3,194,165,207;%
+ 4,231,212,232;%
+ 5,247,247,247;%
+ 6,217,240,211;%
+ 7,172,211,158;%
+ 8,90,174,97;%
+ 9,27,120,55;%
+ 0,255,238,153%
+ }
+ %
+ %<<< Diverging color schemes
+ %
+ %>>> Sequential color schemes
+ %
+ % YlOrBr sequential color scheme
+ \providecolorset{RGB}{T-S-YOB}{}{%
+ 1,255,255,229;%
+ 2,255,247,188;%
+ 3,254,227,145;%
+ 4,254,196,79;%
+ 5,251,154,41;%
+ 6,236,112,20;%
+ 7,204,76,2;%
+ 8,153,52,4;%
+ 9,102,37,6;%
+ 0,136,136,136%
+ }
+ %
+ % Iridescent sequential color scheme
+ \providecolorset{RGB}{T-S-IR}{}{%
+ 1,254,251,233;%
+ 2,252,247,213;%
+ 3,245,243,193;%
+ 4,234,240,181;%
+ 5,221,236,191;%
+ 6,208,231,202;%
+ 7,194,227,210;%
+ 8,181,221,216;%
+ 9,168,216,220;%
+ 10,155,210,225;%
+ 11,141,203,228;%
+ 12,129,196,231;%
+ 13,123,188,231;%
+ 14,126,178,228;%
+ 15,136,165,221;%
+ 16,147,152,210;%
+ 17,155,138,196;%
+ 18,157,125,178;%
+ 19,154,112,158;%
+ 20,144,99,136;%
+ 21,128,87,112;%
+ 22,104,73,87;%
+ 23,70,53,58;%
+ 0,153,153,153%
+ }
+ %
+ % Incandescent sequential color scheme
+ \providecolorset{RGB}{T-S-IN}{}{%
+ 1,206,255,255;%
+ 2,198,247,214;%
+ 3,162,244,155;%
+ 4,187,228,83;%
+ 5,213,206,4;%
+ 6,231,181,3;%
+ 7,241,153,3;%
+ 8,246,121,11;%
+ 9,249,73,2;%
+ 10,228,5,21;%
+ 11,168,0,3;%
+ 0,136,136,136%
+ }
+ %
+ % Discrete rainbow color scheme
+ \providecolorset{RGB}{T-S-DR}{}{%
+ 1,209,187,215;%
+ 2,174,118,163;%
+ 3,136,46,114;%
+ 4,25,101,176;%
+ 5,82,137,199;%
+ 6,123,175,222;%
+ 7,78,178,101;%
+ 8,144,201,135;%
+ 9,202,224,171;%
+ 10,247,240,86;%
+ 11,246,193,65;%
+ 12,241,147,45;%
+ 13,232,96,28;%
+ 14,220,5,12;%
+ 0,119,119,119%
+ }
+ %
+ % Smooth rainbow color scheme
+ \providecolorset{RGB}{T-S-SR}{}{%
+ 1,232,236,251;%
+ 2,221,216,239;%
+ 3,209,193,225;%
+ 4,195,168,209;%
+ 5,181,143,194;%
+ 6,167,120,180;%
+ 7,155,98,167;%
+ 8,140,78,153;%
+ 9,111,76,155;%
+ 10,96,89,169;%
+ 11,85,104,184;%
+ 12,78,121,197;%
+ 13,77,138,198;%
+ 14,78,150,188;%
+ 15,84,158,179;%
+ 16,89,165,169;%
+ 17,96,171,158;%
+ 18,105,177,144;%
+ 19,119,183,125;%
+ 20,140,188,104;%
+ 21,166,190,84;%
+ 22,190,188,72;%
+ 23,209,181,65;%
+ 24,221,170,60;%
+ 25,228,156,57;%
+ 26,231,140,53;%
+ 27,230,121,50;%
+ 28,228,99,45;%
+ 29,223,72,40;%
+ 30,218,34,34;%
+ 31,184,34,30;%
+ 32,149,33,27;%
+ 33,114,30,23;%
+ 34,82,26,19;%
+ 0,102,102,102%
+ }
+ %
+ %<<< Sequential color schemes
+ %
+ %<<< Color schemes by Paul Tol, source: https://personal.sron.nl/~pault
}
\DeclareOption{OkabeIto}{
-%>>> Qualitative color scheme by Okabe and Ito
-\providecolorset{RGB}{OI}{}{%
- 1,230,159,0;%
- 2,86,180,233;%
- 3,0,158,115;%
- 4,240,228,66;%
- 5,0,114,178;%
- 6,213,94,0;%
- 7,204,121,167;%
- 0,0,0,0%
-}
-%<<< Qualitative color scheme by Okabe and Ito
+ %>>> Qualitative color scheme by Okabe and Ito
+ \providecolorset{RGB}{OI}{}{%
+ 1,230,159,0;%
+ 2,86,180,233;%
+ 3,0,158,115;%
+ 4,240,228,66;%
+ 5,0,114,178;%
+ 6,213,94,0;%
+ 7,204,121,167;%
+ 0,0,0,0%
+ }
+ %<<< Qualitative color scheme by Okabe and Ito
}
\DeclareOption*{\PackageWarning{colorblind}{Unknown '\CurrentOption'}}
\ProcessOptions\relax
-%>>> Function to print a discrete color scheme
-\newcommand\@drawSchemeRadius{0.7cm}
-\newcommand\@drawSchemeOffset{1cm}
-\newcounter{ColorNum}
-\newcommand\drawScheme[1]{%
- \tikz{%
- \node[inner sep=1, fill=red] at (-1.2*\@drawSchemeRadius,2.3*\@drawSchemeRadius) {R};
- \node[inner sep=1, fill=green] at (-1.2*\@drawSchemeRadius, 1.8*\@drawSchemeRadius) {G};
- \node[inner sep=1, fill=blue] at (-1.2*\@drawSchemeRadius,1.3*\@drawSchemeRadius) {B};
- \setcounter{ColorNum}{1}%
- \whiledo{%
- \@ifundefined{\string\color@#1\theColorNum}{\boolean{false}}{\boolean{true}}%
- }{%
- \extractcolorspecs{#1\the\value{ColorNum}}{\modelspec}{\colorspec}%
- \tikzmath{
- int \r, \g, \b;
- \r = round(255*array({\colorspec},0));
- \g = round(255*array({\colorspec},1));
- \b = round(255*array({\colorspec},2));
- }%
- \node at (\value{ColorNum}*\@drawSchemeOffset-\@drawSchemeOffset,2.3*\@drawSchemeRadius) {\r};
- \node at (\value{ColorNum}*\@drawSchemeOffset-\@drawSchemeOffset,1.8*\@drawSchemeRadius) {\g};
- \node at (\value{ColorNum}*\@drawSchemeOffset-\@drawSchemeOffset,1.3*\@drawSchemeRadius) {\b};
- \draw[fill=#1\the\value{ColorNum}] (\value{ColorNum}*\@drawSchemeOffset-\@drawSchemeOffset,0) circle (\@drawSchemeRadius);%
- \node[rotate=25, anchor=north east] at (\value{ColorNum}*\@drawSchemeOffset-\@drawSchemeOffset,-1*\@drawSchemeRadius) {#1\theColorNum};%
- \stepcounter{ColorNum}%
- }%
- \extractcolorspecs{#10}{\modelspec}{\colorspec}%
- \tikzmath{
- int \r, \g, \b;
- \r = round(255*array({\colorspec},0));
- \g = round(255*array({\colorspec},1));
- \b = round(255*array({\colorspec},2));
- }%
- \node at (\value{ColorNum}*\@drawSchemeOffset-0.5*\@drawSchemeOffset,2.3*\@drawSchemeRadius) {\r};
- \node at (\value{ColorNum}*\@drawSchemeOffset-0.5*\@drawSchemeOffset,1.8*\@drawSchemeRadius) {\g};
- \node at (\value{ColorNum}*\@drawSchemeOffset-0.5*\@drawSchemeOffset,1.3*\@drawSchemeRadius) {\b};
- \draw[fill=#10] (\value{ColorNum}*\@drawSchemeOffset-0.5*\@drawSchemeOffset,0) circle(\@drawSchemeRadius);%
- \node[rotate=25, anchor=north east] at (\value{ColorNum}*\@drawSchemeOffset-0.5*\@drawSchemeOffset, -1*\@drawSchemeRadius) {#10};%
- }%
-}
-%<<< Function to print a discrete color scheme
+\ifredefinedefaults
+ % This redefines the default colors by removing most of them and setting
+ % the remaining to colors from the qualitative Vibrant color scheme by Tol.
+ \xdefinecolor{blue}{RGB}{68,119,170}
+ \xdefinecolor{cyan}{RGB}{102,204,238}
+ \xdefinecolor{green}{RGB}{34,136,51}
+ \xdefinecolor{yellow}{RGB}{204,187,68}
+ \xdefinecolor{red}{RGB}{238,102,119}
+ \xdefinecolor{violet}{RGB}{170,51,119}
+ \xdefinecolor{gray}{RGB}{187,187,187}
+ \xdefinecolor{orange}{RGB}{0,0,0}
+ \xdefinecolor{brown}{RGB}{0,0,0}
+ \xdefinecolor{darkgray}{RGB}{0,0,0}
+ \xdefinecolor{lightgray}{RGB}{0,0,0}
+ \xdefinecolor{lime}{RGB}{0,0,0}
+ \xdefinecolor{magenta}{RGB}{0,0,0}
+ \xdefinecolor{olive}{RGB}{0,0,0}
+ \xdefinecolor{pink}{RGB}{0,0,0}
+ \xdefinecolor{purple}{RGB}{0,0,0}
+ \xdefinecolor{teal}{RGB}{0,0,0}
+\fi
-%>>> Function to print a continuous color scheme
-\newcommand\drawSchemeC[2][0.5\textwidth]{%
- \tikz{%
- \pgfplotscolorbardrawstandalone[colormap name=#2, colorbar horizontal, colorbar style={width=#1, ticks=none}]%
- \draw[fill=#20] (#1+0.5*\@drawSchemeOffset,-0.55cm) circle(0.5*\@drawSchemeRadius);%
- }%
-}
-%<<< Function to print a continuous color scheme
+% define continuous colormaps and command to plot them if `pgf` option is given
+\ifpgf
+ % do nothing if option `Tol` was not provided, since then no applicable color schemes exist
+ \ifTolColors
+ \RequirePackage{pgfplots}
+ \pgfplotsset{compat=1.18}
+ % Sunset diverging colormap
+ \pgfplotsset{
+ colormap={T-D-S}{color(0)=(T-D-S1) color(1)=(T-D-S2) color(2)=(T-D-S3) color(3)=(T-D-S4) color(4)=(T-D-S5) color(5)=(T-D-S6) color(6)=(T-D-S7) color(7)=(T-D-S8) color(8)=(T-D-S9) color(9)=(T-D-S10) color(10)=(T-D-S11)}
+ }
+ % Nightfall diverging colormap
+ \pgfplotsset{
+ colormap={T-D-N}{color(0)=(T-D-N1) color(1)=(T-D-N2) color(2)=(T-D-N3) color(3)=(T-D-N4) color(4)=(T-D-N5) color(5)=(T-D-N6) color(6)=(T-D-N7) color(7)=(T-D-N8) color(8)=(T-D-N9) color(9)=(T-D-N10) color(10)=(T-D-N11) color(11)=(T-D-N12) color(12)=(T-D-N13) color(13)=(T-D-N14) color(14)=(T-D-N15) color(15)=(T-D-N16) color(16)=(T-D-N17)}
+ }
+ % BuRd diverging colormap
+ \pgfplotsset{
+ colormap={T-D-BR}{color(0)=(T-D-BR1) color(1)=(T-D-BR2) color(2)=(T-D-BR3) color(3)=(T-D-BR4) color(4)=(T-D-BR5) color(5)=(T-D-BR6) color(6)=(T-D-BR7) color(7)=(T-D-BR8) color(8)=(T-D-BR9)}
+ }
+ % PRGn diverging colormap
+ \pgfplotsset{
+ colormap={T-D-PG}{color(0)=(T-D-PG1) color(1)=(T-D-PG2) color(2)=(T-D-PG3) color(3)=(T-D-PG4) color(4)=(T-D-PG5) color(5)=(T-D-PG6) color(6)=(T-D-PG7) color(7)=(T-D-PG8) color(8)=(T-D-PG9)}
+ }
+ % YlOrBr sequential colormap
+ \pgfplotsset{
+ colormap={T-S-YOB}{color(0)=(T-S-YOB1) color(1)=(T-S-YOB2) color(2)=(T-S-YOB3) color(3)=(T-S-YOB4) color(4)=(T-S-YOB5) color(5)=(T-S-YOB6) color(6)=(T-S-YOB7) color(7)=(T-S-YOB8) color(8)=(T-S-YOB9)}
+ }
+ % Iridescent sequential colormap
+ \pgfplotsset{
+ colormap={T-S-IR}{color(0)=(T-S-IR1) color(1)=(T-S-IR2) color(2)=(T-S-IR3) color(3)=(T-S-IR4) color(4)=(T-S-IR5) color(5)=(T-S-IR6) color(6)=(T-S-IR7) color(7)=(T-S-IR8) color(8)=(T-S-IR9) color(9)=(T-S-IR10) color(10)=(T-S-IR11) color(11)=(T-S-IR12) color(12)=(T-S-IR13) color(13)=(T-S-IR14) color(14)=(T-S-IR15) color(15)=(T-S-IR16) color(16)=(T-S-IR17) color(17)=(T-S-IR18) color(18)=(T-S-IR19) color(19)=(T-S-IR20) color(20)=(T-S-IR21) color(21)=(T-S-IR22) color(22)=(T-S-IR23)}
+ }
+ % Incandescent sequential colormap
+ \pgfplotsset{
+ colormap={T-S-IN}{color(0)=(T-S-IN1) color(1)=(T-S-IN2) color(2)=(T-S-IN3) color(3)=(T-S-IN4) color(4)=(T-S-IN5) color(5)=(T-S-IN6) color(6)=(T-S-IN7) color(7)=(T-S-IN8) color(8)=(T-S-IN9) color(9)=(T-S-IN10) color(10)=(T-S-IN11)}
+ }
+ % Smooth Rainbow sequential colormap
+ \pgfplotsset{
+ colormap={T-S-SR}{color(0)=(T-S-SR1) color(1)=(T-S-SR2) color(2)=(T-S-SR3) color(3)=(T-S-SR4) color(4)=(T-S-SR5) color(5)=(T-S-SR6) color(6)=(T-S-SR7) color(7)=(T-S-SR8) color(8)=(T-S-SR9) color(9)=(T-S-SR10) color(10)=(T-S-SR11) color(11)=(T-S-SR12) color(12)=(T-S-SR13) color(13)=(T-S-SR14) color(14)=(T-S-SR15) color(15)=(T-S-SR16) color(16)=(T-S-SR17) color(17)=(T-S-SR18) color(18)=(T-S-SR19) color(19)=(T-S-SR20) color(20)=(T-S-SR21) color(21)=(T-S-SR22) color(22)=(T-S-SR23) color(23)=(T-S-SR24) color(24)=(T-S-SR25) color(25)=(T-S-SR26) color(26)=(T-S-SR27) color(27)=(T-S-SR28) color(28)=(T-S-SR29) color(29)=(T-S-SR30) color(30)=(T-S-SR31) color(31)=(T-S-SR32) color(32)=(T-S-SR33) color(33)=(T-S-SR34)}
+ }
+ %
+ %>>> Function to print a continuous color scheme
+ \newcommand\drawSchemeC[2][0.5\textwidth]{%
+ \tikz{%
+ \pgfplotscolorbardrawstandalone[colormap name=#2, colorbar horizontal, colorbar style={width=#1, ticks=none}]%
+ \draw[fill=#20] (#1+0.5*\@drawSchemeOffset,-0.55cm) circle(0.5*\@drawSchemeRadius);%
+ }%
+ }
+ %<<< Function to print a continuous color scheme
+ \fi
+\fi
+
+% define command to draw discrete color schemes when tikz is enabled
+\iftikz
+ \RequirePackage{tikz}
+ \usetikzlibrary{math}
+ %>>> Function to print a discrete color scheme
+ \newcommand\@drawSchemeRadius{0.7cm}
+ \newcommand\@drawSchemeOffset{1cm}
+ \newcounter{ColorNum}
+ \newcommand\drawScheme[1]{%
+ \tikz{%
+ \node[inner sep=1, fill=red] at (-1.2*\@drawSchemeRadius,2.3*\@drawSchemeRadius) {R};
+ \node[inner sep=1, fill=green] at (-1.2*\@drawSchemeRadius, 1.8*\@drawSchemeRadius) {G};
+ \node[inner sep=1, fill=blue] at (-1.2*\@drawSchemeRadius,1.3*\@drawSchemeRadius) {B};
+ \setcounter{ColorNum}{1}%
+ \whiledo{%
+ \@ifundefined{\string\color@#1\theColorNum}{\boolean{false}}{\boolean{true}}%
+ }{%
+ \extractcolorspecs{#1\the\value{ColorNum}}{\modelspec}{\colorspec}%
+ \tikzmath{
+ int \r, \g, \b;
+ \r = round(255*array({\colorspec},0));
+ \g = round(255*array({\colorspec},1));
+ \b = round(255*array({\colorspec},2));
+ }%
+ \node at (\value{ColorNum}*\@drawSchemeOffset-\@drawSchemeOffset,2.3*\@drawSchemeRadius) {\r};
+ \node at (\value{ColorNum}*\@drawSchemeOffset-\@drawSchemeOffset,1.8*\@drawSchemeRadius) {\g};
+ \node at (\value{ColorNum}*\@drawSchemeOffset-\@drawSchemeOffset,1.3*\@drawSchemeRadius) {\b};
+ \draw[fill=#1\the\value{ColorNum}] (\value{ColorNum}*\@drawSchemeOffset-\@drawSchemeOffset,0) circle (\@drawSchemeRadius);%
+ \node[rotate=25, anchor=north east] at (\value{ColorNum}*\@drawSchemeOffset-\@drawSchemeOffset,-1*\@drawSchemeRadius) {#1\theColorNum};%
+ \stepcounter{ColorNum}%
+ }%
+ \extractcolorspecs{#10}{\modelspec}{\colorspec}%
+ \tikzmath{
+ int \r, \g, \b;
+ \r = round(255*array({\colorspec},0));
+ \g = round(255*array({\colorspec},1));
+ \b = round(255*array({\colorspec},2));
+ }%
+ \node at (\value{ColorNum}*\@drawSchemeOffset-0.5*\@drawSchemeOffset,2.3*\@drawSchemeRadius) {\r};
+ \node at (\value{ColorNum}*\@drawSchemeOffset-0.5*\@drawSchemeOffset,1.8*\@drawSchemeRadius) {\g};
+ \node at (\value{ColorNum}*\@drawSchemeOffset-0.5*\@drawSchemeOffset,1.3*\@drawSchemeRadius) {\b};
+ \draw[fill=#10] (\value{ColorNum}*\@drawSchemeOffset-0.5*\@drawSchemeOffset,0) circle(\@drawSchemeRadius);%
+ \node[rotate=25, anchor=north east] at (\value{ColorNum}*\@drawSchemeOffset-0.5*\@drawSchemeOffset, -1*\@drawSchemeRadius) {#10};%
+ }%
+ }
+ %<<< Function to print a discrete color scheme
+\fi
\endinput
diff --git a/Master/texmf-dist/tex/latex/coloredbelts/coloredbelts.sty b/Master/texmf-dist/tex/latex/coloredbelts/coloredbelts.sty
index 06d65693a41..84a7734c071 100644
--- a/Master/texmf-dist/tex/latex/coloredbelts/coloredbelts.sty
+++ b/Master/texmf-dist/tex/latex/coloredbelts/coloredbelts.sty
@@ -1,11 +1,13 @@
% Author : C. Pierquet
% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
% licence svg : CC BY-SA 3.0 https://fr.wikipedia.org/wiki/Fichier:Judo_yellow_belt.svg
+% : Tks to Sascha Christmann for "in betweeen" colors
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{coloredbelts}[2023/10/27 0.1.0 Colored Judo's belts]
+\ProvidesPackage{coloredbelts}[2024/11/04 0.1.1 Colored Judo's belts]
%====HISTORIQUE
+% v 0.1.1 Couleurs duo
% v 0.1.0 Version initiale
%====BASE
@@ -48,6 +50,22 @@
\IfStrEq{#3}{gray}{\def\tmp@ceinture@couleur{gray}}{}%
\IfStrEq{#3}{noir}{\def\tmp@ceinture@couleur{black}}{}%
\IfStrEq{#3}{black}{\def\tmp@ceinture@couleur{black}}{}%
+ \IfStrEq{#3}{white-yellow}{\def\tmp@ceinture@couleur{white-yellow}}{}%
+ \IfStrEq{#3}{blanc-jaune}{\def\tmp@ceinture@couleur{white-yellow}}{}%
+ \IfStrEq{#3}{yellow-orange}{\def\tmp@ceinture@couleur{yellow-orange}}{}%
+ \IfStrEq{#3}{jaune-orange}{\def\tmp@ceinture@couleur{yellow-orange}}{}%
+ \IfStrEq{#3}{orange-green}{\def\tmp@ceinture@couleur{orange-green}}{}%
+ \IfStrEq{#3}{orange-vert}{\def\tmp@ceinture@couleur{orange-green}}{}%
+ \IfStrEq{#3}{green-blue}{\def\tmp@ceinture@couleur{green-blue}}{}%
+ \IfStrEq{#3}{vert-bleu}{\def\tmp@ceinture@couleur{green-blue}}{}%
+ \IfStrEq{#3}{purple-brown}{\def\tmp@ceinture@couleur{purple-brown}}{}%
+ \IfStrEq{#3}{violet-marron}{\def\tmp@ceinture@couleur{purple-brown}}{}%
+ \IfStrEq{#3}{blue-brown}{\def\tmp@ceinture@couleur{blue-brown}}{}%
+ \IfStrEq{#3}{bleu-marron}{\def\tmp@ceinture@couleur{blue-brown}}{}%
+ \IfStrEq{#3}{blue-purple}{\def\tmp@ceinture@couleur{blue-purple}}{}%
+ \IfStrEq{#3}{bleu-violet}{\def\tmp@ceinture@couleur{blue-purple}}{}%
+ \IfStrEq{#3}{brown-black}{\def\tmp@ceinture@couleur{brown-black}}{}%
+ \IfStrEq{#3}{marron-noir}{\def\tmp@ceinture@couleur{brown-black}}{}%
%étoilée := includegraphics simple
\IfBooleanTF{#1}%
{%
@@ -98,6 +116,22 @@
\IfStrEq{#3}{gray}{\def\tmp@ceinture@couleur{gray}}{}%
\IfStrEq{#3}{noir}{\def\tmp@ceinture@couleur{black}}{}%
\IfStrEq{#3}{black}{\def\tmp@ceinture@couleur{black}}{}%
+ \IfStrEq{#3}{white-yellow}{\def\tmp@ceinture@couleur{white-yellow}}{}%
+ \IfStrEq{#3}{blanc-jaune}{\def\tmp@ceinture@couleur{white-yellow}}{}%
+ \IfStrEq{#3}{yellow-orange}{\def\tmp@ceinture@couleur{yellow-orange}}{}%
+ \IfStrEq{#3}{jaune-orange}{\def\tmp@ceinture@couleur{yellow-orange}}{}%
+ \IfStrEq{#3}{orange-green}{\def\tmp@ceinture@couleur{orange-green}}{}%
+ \IfStrEq{#3}{orange-vert}{\def\tmp@ceinture@couleur{orange-green}}{}%
+ \IfStrEq{#3}{green-blue}{\def\tmp@ceinture@couleur{green-blue}}{}%
+ \IfStrEq{#3}{vert-bleu}{\def\tmp@ceinture@couleur{green-blue}}{}%
+ \IfStrEq{#3}{purple-brown}{\def\tmp@ceinture@couleur{purple-brown}}{}%
+ \IfStrEq{#3}{violet-marron}{\def\tmp@ceinture@couleur{purple-brown}}{}%
+ \IfStrEq{#3}{blue-brown}{\def\tmp@ceinture@couleur{blue-brown}}{}%
+ \IfStrEq{#3}{bleu-marron}{\def\tmp@ceinture@couleur{blue-brown}}{}%
+ \IfStrEq{#3}{blue-purple}{\def\tmp@ceinture@couleur{blue-purple}}{}%
+ \IfStrEq{#3}{bleu-violet}{\def\tmp@ceinture@couleur{blue-purple}}{}%
+ \IfStrEq{#3}{brown-black}{\def\tmp@ceinture@couleur{brown-black}}{}%
+ \IfStrEq{#3}{marron-noir}{\def\tmp@ceinture@couleur{brown-black}}{}%
%étoilée := includegraphics simple
\IfBooleanTF{#1}%
{%
diff --git a/Master/texmf-dist/tex/latex/coloredbelts/judobelt-blue-brown.pdf b/Master/texmf-dist/tex/latex/coloredbelts/judobelt-blue-brown.pdf
new file mode 100644
index 00000000000..ee212bd73d2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/coloredbelts/judobelt-blue-brown.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/coloredbelts/judobelt-blue-purple.pdf b/Master/texmf-dist/tex/latex/coloredbelts/judobelt-blue-purple.pdf
new file mode 100644
index 00000000000..246c1e7df7e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/coloredbelts/judobelt-blue-purple.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/coloredbelts/judobelt-brown-black.pdf b/Master/texmf-dist/tex/latex/coloredbelts/judobelt-brown-black.pdf
new file mode 100644
index 00000000000..5dc4db6d01b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/coloredbelts/judobelt-brown-black.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/coloredbelts/judobelt-green-blue.pdf b/Master/texmf-dist/tex/latex/coloredbelts/judobelt-green-blue.pdf
new file mode 100644
index 00000000000..11eccd24991
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/coloredbelts/judobelt-green-blue.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/coloredbelts/judobelt-orange-green.pdf b/Master/texmf-dist/tex/latex/coloredbelts/judobelt-orange-green.pdf
new file mode 100644
index 00000000000..e23cbe5c336
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/coloredbelts/judobelt-orange-green.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/coloredbelts/judobelt-purple-brown.pdf b/Master/texmf-dist/tex/latex/coloredbelts/judobelt-purple-brown.pdf
new file mode 100644
index 00000000000..6259c444672
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/coloredbelts/judobelt-purple-brown.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/coloredbelts/judobelt-white-yellow.pdf b/Master/texmf-dist/tex/latex/coloredbelts/judobelt-white-yellow.pdf
new file mode 100644
index 00000000000..e3e5aae2205
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/coloredbelts/judobelt-white-yellow.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/coloredbelts/judobelt-yellow-orange.pdf b/Master/texmf-dist/tex/latex/coloredbelts/judobelt-yellow-orange.pdf
new file mode 100644
index 00000000000..b55863b31ee
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/coloredbelts/judobelt-yellow-orange.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/coloredtheorem/coloredtheorem.sty b/Master/texmf-dist/tex/latex/coloredtheorem/coloredtheorem.sty
index c35850cc224..b6d81138286 100644
--- a/Master/texmf-dist/tex/latex/coloredtheorem/coloredtheorem.sty
+++ b/Master/texmf-dist/tex/latex/coloredtheorem/coloredtheorem.sty
@@ -1,6 +1,6 @@
%% This is file `coloredtheorem.sty',
%%
-%% Copyright (C) 2024 by João Lourenço <joao.lourenco@fct.unl.pt>
+%% Copyright (C) 2024, 2025 by João Lourenço <joao.lourenco@fct.unl.pt>
%%
%% This file may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3c of this license
@@ -12,28 +12,39 @@
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2006/05/20 or later.
%%
-\NeedsTeXFormat{LaTeX2e}[2020/06/01]
-\ProvidesPackage{coloredtheorem}
- [2024/08/28 v1.0.3 - A colorful boxed theorem environment]
+\def\cthfileversion{1.1.1}
+\def\cthfiledate {2025/01/03}
+\edef\cthfilename {\@currname}
-\RequirePackage{tcolorbox}
+\ProvidesPackage{coloredtheorem}[%
+ \cthfiledate\ v\cthfileversion (João M. Lourenço) - A colorful boxed theorem environment.]
+
+\RequirePackage[most]{tcolorbox}
\tcbuselibrary{breakable}
\gdef\tcbth{cth}
-\expandafter\NewDocumentCommand\csname\tcbth newtheorem\endcsname { m m O{} }{%
+\NewDocumentCommand{\TcbthNewDocumentCommand}{m}{%
+ \expandafter\NewDocumentCommand\csname\tcbth#1\endcsname}
+\NewDocumentCommand{\TcbthNewDocumentEnvironment}{m}{%
+ \expandafter\NewDocumentEnvironment\expandafter{\tcbth#1}}
+\NewDocumentCommand{\TcbthGdef}{O{\tcbth}mm}{%
+ \expandafter\gdef\csname#1#2\endcsname{#3}}
+
+\TcbthNewDocumentCommand{newtheorem} { m m O{} }{%
\expandafter\newcounter\expandafter{\tcbth#1}%
- \expandafter\gdef\csname\tcbth#1name\endcsname{#2}%
- \expandafter\gdef\csname\tcbth list#1name\endcsname{List of #2s}%
- \expandafter\gdef\csname#1autorefname\endcsname{#2}%
+ \TcbthGdef{#1name}{#2}%
+ \TcbthGdef{list#1name}{List of #2s}%
+ \TcbthGdef[]{#1autorefname}{#2}%
\AtEndPreamble{%
\ifdefined\crefname\expandafter\crefname\expandafter{\tcbth#1}{#2}{#2s}\fi}%
- \expandafter\gdef\csname\tcbth listof#1s\endcsname
+ \TcbthGdef{listof#1s}
{%
- \section*{\csname\tcbth list#1name\endcsname}%
+ \ifdefined\chapter\chapter*{\csname\tcbth list#1name\endcsname}%
+ \else\section*{\csname\tcbth list#1name\endcsname}\fi%
\expandafter\@starttoc\expandafter{lo#1}%
}
- \expandafter\NewDocumentEnvironment\expandafter{\tcbth#1} {O{} m O{}}%
+ \TcbthNewDocumentEnvironment{#1} {O{} m O{}}%
{% \begin{tcb<SOMETHING>}
\begin{center}%
\ifx\relax##2\relax
@@ -47,14 +58,28 @@
{\protect\numberline{\csname the\tcbth#1\endcsname}##1}%
\fi
\fi
- \begin{tcolorbox}[breakable,
+ \begin{tcolorbox}[breakable,lowerbox=ignored,left=0mm,right=0mm,top=0mm,bottom=0mm,
title={\textbf{\csname\tcbth#1name\endcsname
\ifx\relax##2\relax\else
~\csname the\tcbth#1\endcsname\fi}~~##2},
#3, ##3,
]%
- \let\origpar=\par%
- \def\par{\origpar\medskip}%
+ % \let\origpar=\par%
+ % \def\par{\origpar\medskip}%
+ \ignorespaces%
+ }{% \end{tcb<SOMETHING>}
+ \end{tcolorbox}%
+ \end{center}%
+ }%
+ \TcbthNewDocumentEnvironment{#1*} {O{} m O{}}%
+ {% \begin{tcb<SOMETHING>}
+ \begin{center}%
+ \begin{tcolorbox}[breakable,lowerbox=ignored,left=0mm,right=0mm,top=0mm,bottom=0mm,
+ title={\textbf{\csname\tcbth#1name\endcsname}~~##2},
+ #3, ##3,
+ ]%
+ % \let\origpar=\par%
+ % \def\par{\origpar\medskip}%
\ignorespaces%
}{% \end{tcb<SOMETHING>}
\end{tcolorbox}%
diff --git a/Master/texmf-dist/tex/latex/commalists-tools/commalists-tools.sty b/Master/texmf-dist/tex/latex/commalists-tools/commalists-tools.sty
new file mode 100644
index 00000000000..42208feaaa2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/commalists-tools/commalists-tools.sty
@@ -0,0 +1,269 @@
+% Author : C. Pierquet
+% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{commalists-tools}[2024/10/24 0.1.4 Basic operations for numeral comma separated lists]
+
+%------History
+% 0.1.4 Change name of macro
+% 0.1.3 Duplicate macro with ProfMaquette (so new name)
+% 0.1.2 New versions with already traited lists
+% 0.1.1 Sorting with decimals (!)
+% 0.1.0 Initial version
+
+%------Packages
+\RequirePackage{listofitems}
+\RequirePackage{xintexpr}
+\RequirePackage{xstring}
+
+%-----Macros (LaTeX3...) for sorting
+\ExplSyntaxOn
+\NewDocumentCommand\sortasclist{ s m }
+{
+ \clist_set:Nx \l_foo_clist {#2}
+ \clist_sort:Nn \l_foo_clist{
+ \fp_compare:nNnTF { ##1 } > { ##2 }
+ { \sort_return_swapped: }
+ { \sort_return_same: }
+ }
+ \IfBooleanTF{#1}%if star := just printing // if not, storing
+ {%
+ {\l_foo_clist}%
+ }%
+ {%
+ \xdef#2{\l_foo_clist}%
+ }%
+}
+
+\NewDocumentCommand\sortdeslist{ s m }
+{
+ \clist_set:Nx \l_foo_clist {#2}
+ \clist_sort:Nn \l_foo_clist{
+ \fp_compare:nNnTF { ##1 } < { ##2 }
+ { \sort_return_swapped: }
+ { \sort_return_same: }
+ }
+ \IfBooleanTF{#1}%if star := just printing // if not, storing
+ {%
+ {\l_foo_clist}%
+ }%
+ {%
+ \xdef#2{\l_foo_clist}%
+ }%
+}
+\ExplSyntaxOff
+
+%----Macros (LaTeX2)
+\NewDocumentCommand\addvalinlist{ s m m }{%
+ \IfBooleanTF{#1}%if star := just printing // if not, storing
+ {%
+ #3,#2%
+ }%
+ {%
+ \xdef#3{#3,#2}%
+ }%
+}
+
+\NewDocumentCommand\definemylist{ m m }{%
+ %1 = raw list
+ %2 = traited list with listofitems
+ \readlist*#2{#1}%
+}
+
+\NewDocumentCommand\removevalinlist{ s m m }{%
+ \readlist*\tmplistread{#3}%
+ \xdef\tmpresremovelist{}%
+ \xintFor* ##1 in {\xintSeq{1}{\tmplistreadlen}}\do{%
+ \xintifboolexpr{ \tmplistread[##1] == #2}%
+ {}%
+ {%
+ \xintifboolexpr{ ##1 == 1 }%
+ {%
+ \xdef\tmpresremovelist{\tmplistread[##1]}%
+ }%
+ {%
+ \xdef\tmpresremovelist{\tmpresremovelist,\tmplistread[##1]}%
+ }%
+ }%
+ }%
+ \IfBooleanTF{#1}%if star := just printing // if not, storing
+ {%
+ \tmpresremovelist%
+ }%
+ {%
+ \xdef#3{\tmpresremovelist}%
+ }%
+}
+
+\NewDocumentCommand\boolvalinlist{ m m O{\resisinlist} }{%
+ \IfSubStr{,#2,}{,#1,}{\def#3{1}}{\def#3{0}}%
+}
+
+\NewDocumentCommand\testifvalinlist{ m m m m }{%
+ \IfSubStr{,#2,}{,#1,}{\xdef\RESTMPVALUE{1}}{\xdef\RESTMPVALUE{0}}%
+ \xintifboolexpr{ \RESTMPVALUE == 1}{#3}{#4}%
+}
+
+\NewDocumentCommand\countvalinlist{ s m m O{\rescount} }{%
+ \readlist*\tmplistread{#3}%
+ \xdef#4{0}%
+ \xintFor* ##1 in {\xintSeq{1}{\tmplistreadlen}}\do{%
+ \xintifboolexpr{ \tmplistread[##1] == #2}%
+ {%
+ \xdef#4{\fpeval{#4+1}}%
+ }%
+ {}%
+ }%
+ \IfBooleanT{#1}%if star := just printing // if not, storing
+ {%
+ #4%
+ }%
+}
+
+\NewDocumentCommand\countvalindeflist{ s m m O{\rescount} }{%
+ %\readlist*\tmplistread{#3}%
+ \xdef#4{0}%
+ \xintFor* ##1 in {\xintSeq{1}{\csname#3len\endcsname}}\do{%
+ \xintifboolexpr{ \csname#3\endcsname[##1] == #2}%
+ {%
+ \xdef#4{\fpeval{#4+1}}%
+ }%
+ {}%
+ }%
+ \IfBooleanT{#1}%if star := just printing // if not, storing
+ {%
+ #4%
+ }%
+}
+
+\NewDocumentCommand\minoflist{ s m O{\resmin} }{%
+ \IfBooleanTF{#1}%
+ {%
+ \fpeval{min(#2)}%
+ }%
+ {%
+ \xdef#3{\fpeval{min(#2)}}%
+ }%
+}
+
+\NewDocumentCommand\maxoflist{ s m O{\resmax} }{%
+ \IfBooleanTF{#1}%
+ {%
+ \fpeval{max(#2)}%
+ }%
+ {%
+ \xdef#3{\fpeval{max(#2)}}%
+ }%
+}
+
+\NewDocumentCommand\meanoflist{ s m O{\resmean} }{%
+ \xdef#3{0}%
+ \readlist*\tmpmeanlist{#2}%
+ \xintFor* ##1 in {\xintSeq{1}{\tmpmeanlistlen}}\do{%
+ \xdef#3{\fpeval{#3+\tmpmeanlist[##1]}}%
+ }%
+ \xdef#3{\fpeval{(#3)/\tmpmeanlistlen}}%
+ \IfBooleanT{#1}%if star := just printing // if not, storing
+ {%
+ #3%
+ }%
+}
+
+\NewDocumentCommand\meanofdeflist{ s m O{\resmean} }{%
+ \xdef#3{0}%
+ %\readlist*\tmpmeanlist{#2}%
+ \xintFor* ##1 in {\xintSeq{1}{\csname#2len\endcsname}}\do{%
+ \xdef#3{\fpeval{#3+\csname#2\endcsname[##1]}}%
+ }%
+ \xdef#3{\fpeval{(#3)/\csname#2len\endcsname}}%
+ \IfBooleanT{#1}%if star := just printing // if not, storing
+ {%
+ #3%
+ }%
+}
+
+\NewDocumentCommand\sumoflist{ s m O{\ressum} }{%
+ \xdef#3{0}%
+ \readlist*\tmpsumlist{#2}%
+ \xintFor* ##1 in {\xintSeq{1}{\tmpsumlistlen}}\do{%
+ \xdef#3{\fpeval{#3+\tmpsumlist[##1]}}%
+ }%
+ \IfBooleanT{#1}%if star := just printing // if not, storing
+ {%
+ #3%
+ }%
+}
+
+\NewDocumentCommand\sumofdeflist{ s m O{\ressum} }{%
+ \xdef#3{0}%
+ %\readlist*\tmpsumlist{#2}%
+ \xintFor* ##1 in {\xintSeq{1}{\csname#2len\endcsname}}\do{%
+ \xdef#3{\fpeval{#3+\csname#2\endcsname[##1]}}%
+ }%
+ \IfBooleanT{#1}%if star := just printing // if not, storing
+ {%
+ #3%
+ }%
+}
+
+\NewDocumentCommand\prodoflist{ s m O{\resprod} }{%
+ \xdef#3{1}%
+ \readlist*\tmpprodlist{#2}%
+ \xintFor* ##1 in {\xintSeq{1}{\tmpprodlistlen}}\do{%
+ \xdef#3{\fpeval{(#3)*\tmpprodlist[##1]}}%
+ }%
+ \IfBooleanT{#1}%if star := just printing // if not, storing
+ {%
+ #3%
+ }%
+}
+
+\NewDocumentCommand\prodofdeflist{ s m O{\resprod} }{%
+ \xdef#3{1}%
+ \readlist*\tmpprodlist{#2}%
+ \xintFor* ##1 in {\xintSeq{1}{\csname#2len\endcsname}}\do{%
+ \xdef#3{\fpeval{(#3)*\csname#2\endcsname[##1]}}%
+ }%
+ \IfBooleanT{#1}%if star := just printing // if not, storing
+ {%
+ #3%
+ }%
+}
+
+\NewDocumentCommand\reverselist{ s m O{\resrevlist} }{%
+ \readlist*\tmpreverselist{#2}%
+ \xdef#3{\tmpreverselist[-1]}%
+ \xintFor* ##1 in {\xintSeq{2}{\tmpreverselistlen}}\do{%
+ \xdef#3{#3,\tmpreverselist[-##1]}%
+ }%
+ \IfBooleanT{#1}%if star := just printing // if not, storing
+ {%
+ #3%
+ }%
+}
+
+\NewDocumentCommand\getvaluefromlist{ s m m O{\resmyelt} }{%
+ \readlist*\tmpreadlist{#2}%
+ \xdef#4{\tmpreadlist[#3]}%
+ \IfBooleanT{#1}{#4}%
+}
+
+\NewDocumentCommand\getvaluefromdeflist{ s m m O{\resmyelt} }{%
+ %\readlist*\tmpreadlist{#2}%
+ \xdef#4{\csname#2\endcsname[#3]}%
+ \IfBooleanT{#1}{#4}%
+}
+
+\NewDocumentCommand\lenoflist{ s m O{\resmylen} }{%
+ \readlist*\tmpreadlist{#2}%
+ \xdef#3{\tmpreadlistlen}%
+ \IfBooleanT{#1}{#3}%
+}
+
+\NewDocumentCommand\lenofdeflist{ s m O{\resmylen} }{%
+ %\readlist*\tmpreadlist{#2}%
+ \xdef#3{\csname#2len\endcsname}%
+ \IfBooleanT{#1}{#3}%
+}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/complexpolylongdiv/complexpolylongdiv.sty b/Master/texmf-dist/tex/latex/complexpolylongdiv/complexpolylongdiv.sty
new file mode 100644
index 00000000000..6125872d275
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/complexpolylongdiv/complexpolylongdiv.sty
@@ -0,0 +1,78 @@
+%%
+%% This is file `complexpolylongdiv.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% complexpolylongdiv.dtx (with options: `table,complexpolylongdiv.sty')
+%%
+%% __________________________________________________
+%% Vafa Khalighi
+%%
+%% Copyright (c) 2024--2025 Vafa Khalighi
+%%
+%% It may be distributed and/or modified under the LaTeX Project Public License,
+%% version 1.3c or higher (your choice). The latest version of
+%% this license is at: http://www.latex-project.org/lppl.txt
+%%
+%% This work is “author-maintained” (as per LPPL maintenance status)
+%% by Vafa Khalighi.
+%%
+%% \CheckSum{52}
+%% \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 \~}
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{complexpolylongdiv}[2024/12/30 v0.2 Typesetting (complex) polynomial long division]
+\newenvironment{complexpolylongdiv}[1][c]{%
+ \let\\\@arraycr
+ \if #1t
+ \vtop
+ \else
+ \if#1b
+ \vbox
+ \else
+ \vcenter
+ \fi
+ \fi
+ \bgroup
+ \normalbaselines
+ \offinterlineskip
+ \setbox\strutbox\hbox{%
+ \vrule height 2.1ex depth .5ex width0ex}%
+ \tabskip=0pt
+ \halign\bgroup
+ \hfil$##$&$\,\hphantom{\big)}\mkern2mu ##$\hfil\strut\cr
+}{%
+ \crcr
+ \egroup
+ \egroup
+}
+\newcommand*{\complexpolyquotient}[1]{%
+ \omit$\,
+ \overline{%
+ \vphantom{\big)}%
+ \hbox{%
+ \smash{%
+ \raise3.5\fontdimen8\textfont3\hbox{$\big)$}%
+ }%
+ }%
+ \mkern2mu #1
+ }$%
+}
+\endinput
+%%
+%% End of file `complexpolylongdiv.sty'.
diff --git a/Master/texmf-dist/tex/latex/concmath-otf/concmath-otf.sty b/Master/texmf-dist/tex/latex/concmath-otf/concmath-otf.sty
index 159646bdf9b..c2c1d41e2aa 100644
--- a/Master/texmf-dist/tex/latex/concmath-otf/concmath-otf.sty
+++ b/Master/texmf-dist/tex/latex/concmath-otf/concmath-otf.sty
@@ -1,6 +1,6 @@
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\def\fileversion{0.63}
-\def\filedate{2024-03-01}
+\def\fileversion{0.64}
+\def\filedate{2024-10-25}
\ProvidesPackage{concmath-otf}[\filedate\space\fileversion]
% Ensure luatex or xetex engine
diff --git a/Master/texmf-dist/tex/latex/convert-jpfonts/convert-jpfonts.sty b/Master/texmf-dist/tex/latex/convert-jpfonts/convert-jpfonts.sty
new file mode 100644
index 00000000000..c3b160092e2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/convert-jpfonts/convert-jpfonts.sty
@@ -0,0 +1,115 @@
+\NeedsTeXFormat{LaTeX2e}%
+\ProvidesPackage{convert-jpfonts}[2025/1/19,Ver1.0.1]%
+
+\RequirePackage{ifthen,xparse,calc}%
+
+\newcommand{\@空白調整}{\hspace{0pt}\nolinebreak[4]\hspace{-.35zw+\@@空白調整}}%
+\newcommand{\@@空白調整}{0zw}%
+\newcommand{\空白調整}[1]{\def\@@空白調整{#1}}%
+\newcommand{\@fonts}[1]{\bgroup\@fonts@zap@space#1 \@empty\relax\egroup}%
+\newcounter{全角文字数}%
+\setcounter{全角文字数}{0}%
+\newcounter{半角文字数}%
+\setcounter{半角文字数}{0}%
+\newcounter{全半角交代}%
+\setcounter{全半角交代}{0}%
+\newcommand{\文頭欧文判定}%
+ {%
+ \stepcounter{半角文字数}%
+ \ifthenelse{\the全角文字数=0\AND\the半角文字数=1}{\hspace{.35zw-\@@空白調整}}{}%
+ \ifthenelse{\the全角文字数>0\AND\the全半角交代=1}{\hspace{.35zw-\@@空白調整}}{}%
+ \setcounter{全半角交代}{0}%
+ }%
+\newcommand{\@fonts@han@zen}[1]%
+ {%
+ \if#1,{\文頭欧文判定\@空白調整\hspace{.12zw},\hspace{-.25zw}}%
+ \else\if#1.{\文頭欧文判定\@空白調整\hspace{.1zw}.\hspace{-.25zw}}%
+ \else\if#1'{\文頭欧文判定\@空白調整\hspace{.08zw}’\ihspace{-1zw}}%
+ \else\if#1“{\文頭欧文判定\@空白調整“\hspace{.1zw}}%
+ \else\if#1”{\文頭欧文判定\@空白調整\hspace{.08zw}”\hspace{-.4zw}}%
+ \else\if#1*{\文頭欧文判定\@空白調整${}^{\text{*}}$}%
+ \else\if#1;{\文頭欧文判定\@空白調整;\hspace{.1zw}}%
+ \else\if#1:{\文頭欧文判定\@空白調整:\hspace{.1zw}}%
+ \else\if#1?{\文頭欧文判定\@空白調整?\hspace{-.6zw}}%
+ \else\if#1!{\文頭欧文判定\@空白調整!\hspace{-.6zw}}%
+ \else\if#1-{\文頭欧文判定\@空白調整 ー}%
+ \else\if#1({\文頭欧文判定\@空白調整 (}%
+ \else\if#1){\文頭欧文判定\@空白調整 )}%
+ \else\if#10{\文頭欧文判定\@空白調整 0}%
+ \else\if#11{\文頭欧文判定\@空白調整 1}%
+ \else\if#12{\文頭欧文判定\@空白調整 2}%
+ \else\if#13{\文頭欧文判定\@空白調整 3}%
+ \else\if#14{\文頭欧文判定\@空白調整 4}%
+ \else\if#15{\文頭欧文判定\@空白調整 5}%
+ \else\if#16{\文頭欧文判定\@空白調整 6}%
+ \else\if#17{\文頭欧文判定\@空白調整 7}%
+ \else\if#18{\文頭欧文判定\@空白調整 8}%
+ \else\if#19{\文頭欧文判定\@空白調整 9}%
+ \else\if#1A{\文頭欧文判定\@空白調整 A}%
+ \else\if#1B{\文頭欧文判定\@空白調整 B}%
+ \else\if#1C{\文頭欧文判定\@空白調整 C}%
+ \else\if#1D{\文頭欧文判定\@空白調整 D}%
+ \else\if#1E{\文頭欧文判定\@空白調整 E}%
+ \else\if#1F{\文頭欧文判定\@空白調整 F}%
+ \else\if#1G{\文頭欧文判定\@空白調整 G}%
+ \else\if#1H{\文頭欧文判定\@空白調整 H}%
+ \else\if#1I{\文頭欧文判定\@空白調整 I}%
+ \else\if#1J{\文頭欧文判定\@空白調整 J}%
+ \else\if#1K{\文頭欧文判定\@空白調整 K}%
+ \else\if#1L{\文頭欧文判定\@空白調整 L}%
+ \else\if#1M{\文頭欧文判定\@空白調整 M}%
+ \else\if#1N{\文頭欧文判定\@空白調整 N}%
+ \else\if#1O{\文頭欧文判定\@空白調整 O}%
+ \else\if#1P{\文頭欧文判定\@空白調整 P}%
+ \else\if#1Q{\文頭欧文判定\@空白調整 Q}%
+ \else\if#1R{\文頭欧文判定\@空白調整 R}%
+ \else\if#1S{\文頭欧文判定\@空白調整 S}%
+ \else\if#1T{\文頭欧文判定\@空白調整 T}%
+ \else\if#1U{\文頭欧文判定\@空白調整 U}%
+ \else\if#1V{\文頭欧文判定\@空白調整 V}%
+ \else\if#1W{\文頭欧文判定\@空白調整 W}%
+ \else\if#1X{\文頭欧文判定\@空白調整 X}%
+ \else\if#1Y{\文頭欧文判定\@空白調整 Y}%
+ \else\if#1Z{\文頭欧文判定\@空白調整 Z}%
+ \else\if#1a{\文頭欧文判定\@空白調整 a}%
+ \else\if#1b{\文頭欧文判定\@空白調整 b}%
+ \else\if#1c{\文頭欧文判定\@空白調整 c}%
+ \else\if#1d{\文頭欧文判定\@空白調整 d}%
+ \else\if#1e{\文頭欧文判定\@空白調整 e}%
+ \else\if#1f{\文頭欧文判定\@空白調整 f}%
+ \else\if#1g{\文頭欧文判定\@空白調整 g}%
+ \else\if#1h{\文頭欧文判定\@空白調整 h}%
+ \else\if#1i{\文頭欧文判定\@空白調整 i}%
+ \else\if#1j{\文頭欧文判定\@空白調整 j}%
+ \else\if#1k{\文頭欧文判定\@空白調整 k}%
+ \else\if#1l{\文頭欧文判定\@空白調整 l}%
+ \else\if#1m{\文頭欧文判定\@空白調整 m}%
+ \else\if#1n{\文頭欧文判定\@空白調整 n}%
+ \else\if#1o{\文頭欧文判定\@空白調整 o}%
+ \else\if#1p{\文頭欧文判定\@空白調整 p}%
+ \else\if#1q{\文頭欧文判定\@空白調整 q}%
+ \else\if#1r{\文頭欧文判定\@空白調整 r}%
+ \else\if#1s{\文頭欧文判定\@空白調整 s}%
+ \else\if#1t{\文頭欧文判定\@空白調整 t}%
+ \else\if#1u{\文頭欧文判定\@空白調整 u}%
+ \else\if#1v{\文頭欧文判定\@空白調整 v}%
+ \else\if#1w{\文頭欧文判定\@空白調整 w}%
+ \else\if#1x{\文頭欧文判定\@空白調整 x}%
+ \else\if#1y{\文頭欧文判定\@空白調整 y}%
+ \else\if#1z{\文頭欧文判定\@空白調整 z}%
+ \else{\stepcounter{全角文字数}\setcounter{全半角交代}{1}#1}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ }%
+\def\@fonts@zap@space#1 #2%
+ {%
+ \@tfor\han:=#1\do{\@fonts@han@zen{\han}}%
+ \ifx#2\@empty\else\@fonts@fwspace\expandafter\@fonts@zap@space\fi#2%
+ }%
+\def\@fonts@fwspace{ }%
+\NewDocumentCommand\fonts{ O{\@デフォルトフォント} m }%
+ {%
+ #1{\@fonts{#2}}%
+ \setcounter{全角文字数}{0}%
+ \setcounter{半角文字数}{0}%
+ }%
+\newcommand{\@デフォルトフォント}{\textmc}%
+\newcommand{\デフォルトフォント}[1]{\def\@デフォルトフォント{#1}}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/cora-macs/cora-macs.sty b/Master/texmf-dist/tex/latex/cora-macs/cora-macs.sty
new file mode 100644
index 00000000000..6dbb64a33ea
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/cora-macs/cora-macs.sty
@@ -0,0 +1,359 @@
+
+% package information --------------------------------------------------------------------------------------------------
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{cora-macs}[2024-12-11] % Should match the version on CTAN.
+
+% Authors: Tobias Ladner, Lukas Koller
+% TUM - Cyber-Physical Systems Group
+% Website: https://www.ce.cit.tum.de/cps
+
+% Based on: https://www.overleaf.com/learn/latex/Writing_your_own_package
+
+% required packages ----------------------------------------------------------------------------------------------------
+
+% general packages
+\RequirePackage{xifthen}
+\RequirePackage{xstring}
+\RequirePackage{amsfonts}
+\RequirePackage{keyval}
+
+% color
+\RequirePackage{xcolor}
+
+% tikz
+\RequirePackage{tikzscale}
+\RequirePackage{pgfplots}
+\RequirePackage{mathtools}
+\RequirePackage{graphics}
+\usepgfplotslibrary{external}
+
+
+% pre-processing -------------------------------------------------------------------------------------------------------
+
+% for better logging
+\newcommand{\DeclareCORAOption}[2]{
+ \DeclareOption{#1}{
+ % display information
+ \PackageInfo{cora-macs}{Loading '#1' option..}
+ % content
+ #2
+ }
+}
+
+% nice to have
+\providecommand{\R}{\ensuremath{\mathbb{R}}}
+\providecommand{\N}{\ensuremath{\mathbb{N}}}
+
+% all sets should be written in mathcal
+\newcommand{\contSet}[1]{\ensuremath{\mathcal{#1}}}
+
+% CORA macro
+\providecommand{\CORA}[0]{{\color{black}C\color{red!90!black}O\color{black}RA}}
+
+% declare options ------------------------------------------------------------------------------------------------------
+
+\DeclareCORAOption{sets}{ % --- continuous sets
+% contSet ---
+
+% formatting
+ \newcommand{\neghphantom}[1]{\settowidth{\dimen0}{#1}\hspace*{-\dimen0}}
+
+ % short-hand notation (including nice punctuation for large sets)
+ \newcommand{\shortContSet}[3][]{\ensuremath{% \defContSet[punctuation]{abbreviation}{cs parameters of set}
+ \left<#2\right>_{#3\,}%
+ \ifthenelse{\isempty{#1}}% add abbreviation
+ {} % none given
+ {\neghphantom{\scriptsize #3}#1\neghphantom{#1}\hphantom{\scriptsize #3}}
+ }}
+ \newcommand{\defContSet}[2]{\left\{ #1 \ \middle|\ #2 \right\}}
+ \newcommand{\defContSetSplit}[2]{\left\{ #1 \vphantom{#2} \ \right| \\ &\qquad \left. \vphantom{#1} #2 \right\}}
+
+ % interval ---
+ \providecommand{\I}{\contSet{I}}
+ \newcommand{\shortI}[2]{\ensuremath{\left[#1,#2\right]}}
+
+ % zonotope ---
+ \providecommand{\Z}{\contSet{Z}}
+ \newcommand{\shortZ}[3][]{\shortContSet[#1]{#2,#3}{Z}}
+ \newcommand{\defZ}{\left\{ c + \sum_{i=1}^{p} \beta_i G_{(\cdot,i)} ~\middle|~ \beta_i \in [-1,1] \right\}}
+
+ % polynomial zonotope ---
+ \providecommand{\PZ}{\contSet{PZ}}
+ \newcommand{\shortPZ}[5][]{\shortContSet[#1]{#2,#3,#4,#5}{PZ}}
+ \newcommand{\defPZmain}{c + \sum_{i=1}^h \left(\prod_{k=1}^p \alpha_k^{E_{(k,i)}}\right) G_{(\cdot, i)} + \sum_{j=1}^{q} \beta_j G_{I(\cdot, j)}}
+ \newcommand{\defPZcond}{\alpha_k, \beta_j \in \left[-1,1\right]}
+ \newcommand{\defPZ}{\defContSet{\defPZmain}{\defPZcond}}
+ \newcommand{\defPZSplit}{\defContSetSplit{\defPZmain}{\defPZcond}}
+}
+
+
+\DeclareCORAOption{operations}{ % --- operations
+
+% define monospace operator including inline operator
+ \newcommand{\operator}[3][]{%
+ \text{\normalfont\small#2}%
+ \IfSubStr{#1}{inline}% if inline
+ {(#3)}% no \left/\right
+ {\left(#3\right)}}
+ \newcommand{\operatortt}[3][]{\operator[#1]{{\ensuremath{\mathtt{#2}}}}{#3}}
+
+ % enclosure
+ \newcommand{\opEnclose}[3][]{\operatortt[#1]{enclose}{#2,#3}}
+ \newcommand{\opEnclosePrime}[3][]{\operatortt[#1]{enclose}{#2,#3}}
+ \newcommand{\opIntervalEnclosure}[2][]{\operatortt[#1]{interval}{#2}}
+ \newcommand{\opBoxEnclosure}[2][]{\operatortt[#1]{box}{#2}}
+ \newcommand{\opBound}[2][]{\operatortt[#1]{bound}{#1}}
+ \newcommand{\opZonotopeEnclosure}[2][]{\operatortt[#1]{zonotope}{#2}}
+ \newcommand{\opZonoEnclosure}[2][]{\operatortt[#1]{zono}{#2}}
+ \newcommand{\opPolyZonotopeEnclosure}[2][]{\operatortt[#1]{polyZonotope}{#2}}
+ \newcommand{\opPolyZonoEnclosure}[2][]{\operatortt[#1]{polyZono}{#2}}
+
+ % further operations
+ \newcommand{\opProject}[2][]{\operatortt{project}{#2}}
+
+ % operations that should be stantard latex operations
+ \providecommand{\diag}[2][]{\operator[#1]{diag}{#2}}
+ \providecommand{\Diag}[2][]{\operator[#1]{Diag}{#2}}
+ \providecommand{\mod}[3][]{\operator[#1]{mod}{#2,#3}}
+ \newcommand{\dia}[2][]{\operator[#1]{dia}{#2}}
+ \newcommand{\sign}[2][]{\operator[#1]{sign}{#2}}
+}
+
+
+\DeclareCORAOption{nn}{ % --- neural networks
+
+% neural network
+ \newcommand{\NN}[0]{\ensuremath{\Phi}}
+ \newcommand{\numLayers}[0]{\ensuremath{\kappa}}
+ \newcommand{\numNeurons}[0]{\ensuremath{n}}
+
+ % layers
+ \newcommand{\nnLayerName}[2][]{\ensuremath{L_{#2}^\text{#1}}}
+ \newcommand{\nnLayer}[3][]{\ensuremath{\nnLayerName[#1]{#2}\left(#3\right)}}
+ \newcommand{\nnActFun}{\ensuremath{\phi}}
+ \newcommand{\actfun}{\nnActFun} % remove?
+
+ % point propagation
+ \newcommand{\nnInput}[0]{\ensuremath{x}}
+ \newcommand{\nnHidden}[0]{\ensuremath{h}}
+ \newcommand{\nnOutput}[0]{\ensuremath{y}}
+ \newcommand{\nnGrad}{\ensuremath{g}}
+
+ % set propagation
+ \newcommand{\nnInputSet}[0]{\contSet{X}}
+ \newcommand{\nnHiddenSet}[0]{\contSet{H}}
+ \newcommand{\nnHiddenSetExact}[0]{\nnHiddenSet^*}
+ \newcommand{\nnOutputSet}[0]{\contSet{Y}}
+ \newcommand{\nnOutputSetExact}[0]{\nnOutputSet^*}
+ \newcommand{\nnGradSet}{\contSet{G}}
+
+ % set-based training
+ \newcommand{\nnTarget}{\ensuremath{t}}
+ \newcommand{\regrSub}{MSE}
+ \newcommand{\ceSub}{CE}
+ \newcommand{\pointLoss}{\ensuremath{E}}
+ \newcommand{\setLoss}{\ensuremath{\widetilde{E}}}
+
+ % other
+ \newcommand{\nnPertRadius}{\epsilon}
+
+ % specification
+ \newcommand{\unsafeSet}[0]{\contSet{S}}
+
+}
+
+%
+
+\DeclareCORAOption{colors}{% --- colors
+
+% cora colors (see CORAcolor in cora) --- cora colors
+ \definecolor{CORAcolorReachSet}{rgb}{0.2706, 0.5882, 1.0000} % blue
+ \definecolor{CORAcolorReachSet2}{rgb}{0.6902, 0.8235, 1.0000} % light-blue
+ \definecolor{CORAcolorInitialSet}{rgb}{1, 1, 1} % white
+ \definecolor{CORAcolorFinalSet}{rgb}{0.9000, 0.9000, 0.9000} % light-gray
+ \definecolor{CORAcolorSimulations}{rgb}{0.0000, 0.0000, 0.0000} % black
+ \definecolor{CORAcolorUnsafe}{rgb}{0.9451, 0.5529, 0.5686} % red
+ \definecolor{CORAcolorUnsafeLight}{rgb}{0.9059, 0.7373, 0.7373} % light red
+ \definecolor{CORAcolorSafe}{rgb}{0.4706, 0.7725, 0.4980} % light green
+ \definecolor{CORAcolorUnknown}{rgb}{0.9290, 0.6940, 0.1250} % yellow
+ \colorlet{CORAcolorInvariant}{CORAcolorSafe} % light green
+
+ % default colors (also default matlab colors)
+ \definecolor{CORAcolorBlue}{rgb}{0, 0.4470, 0.7410}
+ \definecolor{CORAcolorRed}{rgb}{0.8500, 0.3250, 0.0980}
+ \definecolor{CORAcolorYellow}{rgb}{0.9290, 0.6940, 0.1250}
+ \definecolor{CORAcolorPurple}{rgb}{0.4940, 0.1840, 0.5560}
+ \definecolor{CORAcolorGreen}{rgb}{0.4660, 0.6740, 0.1880}
+ \definecolor{CORAcolorLightBlue}{rgb}{0.3010, 0.7450, 0.9330}
+ \definecolor{CORAcolorDarkRed}{rgb}{0.6350, 0.0780, 0.1840}
+
+ % define order of colors (see useCORAcolors in cora)
+ \colorlet{CORAcolor1}{CORAcolorBlue}
+ \colorlet{CORAcolor2}{CORAcolorRed}
+ \colorlet{CORAcolor3}{CORAcolorYellow}
+ \colorlet{CORAcolor4}{CORAcolorPurple}
+ \colorlet{CORAcolor5}{CORAcolorGreen}
+ \colorlet{CORAcolor6}{CORAcolorLightBlue}
+ \colorlet{CORAcolor7}{CORAcolorDarkRed}
+
+ \definecolor{CORAcolorHighlight1}{rgb}{1.0000,0.6824,0.2980} % 'CORA:highlight1 (orange)'
+ \definecolor{CORAcolorHighlight2}{rgb}{0.3804,0.6275,1.0000} % 'CORA:highlight2 (lightblue)'
+
+ % --- TUM colors
+ \definecolor{TUMblue}{rgb}{0.00, 0.40, 0.74}
+ \definecolor{TUMgray}{rgb}{0.85, 0.85, 0.86}
+ \definecolor{TUMpantone285C}{rgb}{0.00, 0.45, 0.81}
+ \definecolor{TUMpantone300C}{RGB}{27, 94, 170} %uncorrected TUMpantone300C
+ \definecolor{lightblue}{rgb}{0.7529,0.8118,0.9333}
+
+}
+
+
+\DeclareCORAOption{tikz}{ % --- tikz
+
+% groupplots
+ \usepgfplotslibrary{groupplots}
+ \usetikzlibrary{pgfplots.groupplots}
+ \usetikzlibrary{matrix}
+ \usetikzlibrary{patterns}
+ \usetikzlibrary{arrows,arrows.meta}
+
+ % main packages
+ \pgfplotsset{compat=1.18}
+
+ % tikz externalize
+ \providecommand{\includetikzinternalpath}{./figures/externalize}
+ \providecommand{\includetikzupdatepath}[1]{\renewcommand{\includetikzinternalpath}[1]{##1}}
+ \tikzexternalize[prefix=\includetikzinternalpath/]
+ % include tikz
+ \providecommand{\includetikzinternalusetikz}[1]{%
+ \tikzset{external/export next=\CORAtikzexternalize}
+ \tikzsetnextfilename{\CORAtikzname{#1}}%
+ \input{#1.tikz}%
+ }
+ % reuse externalized pdf
+ \providecommand{\includetikzinternalusepdf}[1]{%
+ \IfSubStr{\CORAtikzexternalize}{true}{
+ % include pdf if exists
+ \IfFileExists{{\includetikzinternalpath/\CORAtikzname{#1}.pdf}}{
+ % include pdf
+ \includegraphics{\includetikzinternalpath/\CORAtikzname{#1}.pdf}
+ }{
+ % show error message
+ \texttt{
+ \tiny \sloppy
+ The file ''\expandafter\detokenize\expandafter{\includetikzinternalpath}/\expandafter\detokenize\expandafter{\CORAtikzname{#1}}.pdf`` does not exist and has to be exported first.
+ Please re-compile with tikz externalize and shell escape enabled.
+ Check the documentation for details.
+ }
+ }
+ }{
+ % call tikz
+ \includetikzinternalusetikz{#1}
+ }
+ }
+ % set up commands for tikz options (default: false)
+ \providecommand{\CORAtikzname}[1]{#1}
+ \providecommand{\CORAtikzexternalize}{true}
+ \providecommand{\CORAtikzsetupoptions}[1]{
+ % option 'animate': externalize with overlaynumber
+ \IfSubStr{#1}{animate}{
+ % have overlay number in name to have each overlay as separate pdf
+ \renewcommand{\CORAtikzname}[1]{##1-animate-\overlaynumber}
+ \mode<handout>{
+ % additionally have one pdf for handout mode
+ \renewcommand{\CORAtikzname}[1]{##1-animate-handout}
+ }
+ }{
+ \renewcommand{\CORAtikzname}[1]{##1}
+ }
+ % option 'noexternalize'/'noexport': whether figure should be externalized
+ \IfSubStr{#1}{noexternalize}{
+ \renewcommand{\CORAtikzexternalize}{false}
+ }{
+ \IfSubStr{#1}{noexport}{
+ \renewcommand{\CORAtikzexternalize}{false}
+ }{
+ \renewcommand{\CORAtikzexternalize}{true}
+ }
+ }
+ }
+ % main command to include tikz
+ \providecommand{\includetikz}[2][]{\texttt{Not yet initialized}}
+ % make tikz/pdf selectable
+ \providecommand{\CORAexternalizeusetikz}{\renewcommand{\includetikz}[2][]{\CORAtikzsetupoptions{##1}\includetikzinternalusetikz{##2}}}
+ \providecommand{\CORAexternalizeusepdf}{\renewcommand{\includetikz}[2][]{\CORAtikzsetupoptions{##1}\includetikzinternalusepdf{##2}}}
+ \CORAexternalizeusetikz
+
+ \tikzset {external/optimize=true}
+ % ensure
+ \makeatletter
+ \providecommand*{\overlaynumber}{\number\beamer@slideinframe}
+ \makeatother
+
+ % styling
+ \pgfplotsset{every axis/.append style={
+ ylabel near ticks,
+ xlabel near ticks,
+ }}
+ \tikzset{
+ >={Stealth[length=1mm]},
+ }
+
+ % frame animations - in-/visible on for tikz objects
+ \tikzset{
+ alt/.code args={<#1>#2#3}{%
+ \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path
+ },
+ invisible/.style={opacity=0},
+ visible on/.style={alt={#1{}{invisible}}},
+ invisible on/.style={alt={#1{invisible}{}}},
+}
+
+% tikz neural networks
+\tikzset{
+ pics/nn/.style n args={4}{code={ % args: number of layers, list of hidden neurons, size of neuron, distance between neurons
+ \pgfmathsetmacro{\d}{#4};
+ \pgfmathsetmacro{\hn}{#1};
+ \foreach[count=\i] \h in {#2} { % draw network
+ \foreach \ii in {1,...,\h} { % draw layer
+ \node[circle,fill=CORAcolorBlue!75,draw=CORAcolorBlue,thick,inner sep={#3}] (l\i-\ii) at ({1.0cm*(\i-1-0.5*(\hn-1))},{\d*(\ii-0.5*(\h+1))}) {}; % \d*(\ii-1+0.5*Mod(\h,2))
+ };
+ };
+ % connect neurons
+ \foreach[count=\i] \hi in {#2} { %
+ \foreach[count=\j] \hj in {#2} { %
+ \pgfmathtruncatemacro{\dji}{\j-\i};
+ \ifnum\dji=1
+ \foreach \ii in {1,...,\hi} { %
+ \foreach \jj in {1,...,\hj} { %
+ \draw (l\i-\ii.east) -- (l\j-\jj.west); %
+ };
+ };
+ \fi
+ };
+ };
+ },
+ },
+ neuron label/.style n args={1}{label={[font=\footnotesize,text=white]center:#1}},
+ pics/zono3/.style n args={2}{code={\filldraw (0,-{#1}) -- (-{#2},-{#1}) -- (-{#2},0) -- (0,{#1}) -- ({#2},{#1}) -- ({#2},0) -- cycle;}},
+ pics/lossArrows3/.style n args={2}{code={\draw (0,0) -- ({0.5*#2},{0.5*#1}) -- ({0.5*#2},{#1}) -- ({#2},{#1});}},
+}
+
+\pgfplotsset{
+ enclosurefunction/.style={color=black, forget plot},
+ enclosureset/.style={color=CORAcolorGreen, forget plot},
+ enclosuresetbounds/.style={color=CORAcolorGreen, dashed, forget plot},
+ enclosureinputbounds/.style={color=TUMgray, dashed, forget plot},
+ enclosurepolynomial/.style={color=CORAcolorBlue, forget plot},
+ enclosureerror/.style={color=CORAcolorRed, forget plot},
+}
+
+}
+
+% process options ------------------------------------------------------------------------------------------------------
+
+\ProcessOptions\relax
+
+% post-processing ------------------------------------------------------------------------------------------------------
diff --git a/Master/texmf-dist/tex/latex/create-theorem/create-theorem-preset-names-cleveref.tex b/Master/texmf-dist/tex/latex/create-theorem/create-theorem-preset-names-cleveref.tex
index e95de7e5d6a..b6e3b02c4e6 100644
--- a/Master/texmf-dist/tex/latex/create-theorem/create-theorem-preset-names-cleveref.tex
+++ b/Master/texmf-dist/tex/latex/create-theorem/create-theorem-preset-names-cleveref.tex
@@ -1485,9 +1485,11 @@
}
\NameTheorem { definition-corollary } { combined = { definition ; corollary } }
+\NameTheorem { definition-lemma } { combined = { definition ; lemma } }
\NameTheorem { definition-proposition } { combined = { definition ; proposition } }
\NameTheorem { definition-theorem } { combined = { definition ; theorem } }
\NameTheorem { corollary-definition } { combined = { corollary ; definition } }
+\NameTheorem { lemma-definition } { combined = { lemma ; definition } }
\NameTheorem { proposition-definition } { combined = { proposition ; definition } }
\NameTheorem { theorem-definition } { combined = { theorem ; definition } }
diff --git a/Master/texmf-dist/tex/latex/create-theorem/create-theorem.sty b/Master/texmf-dist/tex/latex/create-theorem/create-theorem.sty
index 01851952d46..31797488913 100644
--- a/Master/texmf-dist/tex/latex/create-theorem/create-theorem.sty
+++ b/Master/texmf-dist/tex/latex/create-theorem/create-theorem.sty
@@ -12,7 +12,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{create-theorem}
- {2024/02/25} {}
+ {2024/11/12} {}
{Initializing theorem-like environments with multilingual support}
\keys_define:nn { create-theorem }
diff --git a/Master/texmf-dist/tex/latex/creationboites/CreationBoites.sty b/Master/texmf-dist/tex/latex/creationboites/CreationBoites.sty
index d40505a12e5..ba96874ab67 100644
--- a/Master/texmf-dist/tex/latex/creationboites/CreationBoites.sty
+++ b/Master/texmf-dist/tex/latex/creationboites/CreationBoites.sty
@@ -1,12 +1,19 @@
% Author : C. Pierquet
-% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{CreationBoites}[2023/08/26 0.1.0 Macros pour creer des boites tcbox simples, avec personnalisation(s)]
+\ProvidesPackage{CreationBoites}[2025/01/13 0.1.1 Macros pour creer des boites tcbox simples, avec personnalisation(s)]
%====HISTORIQUE
+% v 0.1.1 Correction d'un bug avec [breakable] pour autoriser la coupure des boîtes + Clé pour décaler le logo CoinBasDroit + Décoration Icone
% v 0.1.0 Version initiale
+%====OPTION
+\newif\if@breakable \@breakablefalse
+\DeclareOption{breakable}{\@breakabletrue}
+\DeclareOption*{}%si option inconnue ;-)
+\ProcessOptions\relax
+
%====BASE
\RequirePackage{tcolorbox}
\tcbuselibrary{fitting,skins}
@@ -29,12 +36,23 @@
\newcommand\margeinttitreboite{3pt}
%====STYLE GÉNÉRAL DES TCBOX
-\tcbset{baseboite/.style={
+\if@breakable
+ \tcbuselibrary{breakable}
+ \tcbset{baseboite/.style={
enhanced,sharp corners=uphill,boxrule=\eptraitboite,%
+ breakable,%
before skip=0.5em,after skip=0.5em,%
colback=white,top=4mm,left={\margeboite-\margeinttitreboite-\eptraitboite},right={\margeboite-\margeinttitreboite-\eptraitboite}
- }%
-}
+ }%
+ }
+\else
+ \tcbset{baseboite/.style={
+ enhanced,sharp corners=uphill,boxrule=\eptraitboite,%
+ before skip=0.5em,after skip=0.5em,%
+ colback=white,top=4mm,left={\margeboite-\margeinttitreboite-\eptraitboite},right={\margeboite-\margeinttitreboite-\eptraitboite}
+ }%
+ }
+\fi
%====MACROS TITRE/SOUS-TITRE/LOGO
\NewDocumentCommand\TitreBoite{ m m m m }{%
@@ -49,7 +67,10 @@
\node[fill=white,anchor=east,xshift=-\margeboite,text=\couleursoustitreboite!75!black,font=\policesoustitreboite] at (frame.north east) {\vphantom{Ppé}\BoxSubTitle} ;
}
\NewDocumentCommand\LogoCoinDroit{ }{%
- \begin{tcbclipinterior}\node[opacity=\BoxOpaciteLogo,rotate=-\BoxRotationLogo] at ($(interior.south east)+(-10pt,10pt)$){\includegraphics[height=\BoxHauteurLogo]{\BoxLogo}};\end{tcbclipinterior}%
+ \begin{tcbclipinterior}\node[opacity=\BoxOpaciteLogo,rotate=-\BoxRotationLogo] at ($(interior.south east)+(\BoxOffsetLogo)$){\includegraphics[height=\BoxHauteurLogo]{\BoxLogo}};\end{tcbclipinterior}%
+}
+\NewDocumentCommand\IconeCoinDroit{ }{%
+ \begin{tcbclipinterior}\node[opacity=\BoxOpaciteIcone,rotate=-\BoxRotationIcone,scale=\BoxEchelleIcone] at ($(interior.south east)+(\BoxOffsetLogo)$){\BoxIcone};\end{tcbclipinterior}%
}
%====MACRO POUR QQUES PARAMÈTRES BASIQUES
@@ -84,7 +105,12 @@
ModifLabel=\def\BoxModifLabel{#1},%
HauteurLogo=\def\BoxHauteurLogo{#1},%
RotationLogo=\def\BoxRotationLogo{#1},%
- OpaciteLogo=\def\BoxOpaciteLogo{#1}
+ OpaciteLogo=\def\BoxOpaciteLogo{#1},%
+ OffsetDeco=\def\BoxOffsetLogo{#1},%
+ Icone=\def\BoxIcone{#1},%
+ EchelleIcone=\def\BoxEchelleIcone{#1},%
+ RotationIcone=\def\BoxRotationIcone{#1},%
+ OpaciteIcone=\def\BoxOpaciteIcone{#1}
}
\setKVdefault[Boites]{%
Pluriel=false,%
@@ -95,7 +121,12 @@
ModifLabel={},%
HauteurLogo=24pt,%
RotationLogo=45,%
- OpaciteLogo=0.33
+ OpaciteLogo=0.33,%
+ OffsetDeco={-10pt,10pt},%
+ Icone={},%
+ EchelleIcone=1,%
+ RotationIcone=30,%
+ OpaciteIcone=0.5
}
\NewDocumentCommand\CreationBoite{ O{black} m m m m }{%
@@ -114,6 +145,7 @@
\ifboolKV[Boites]{Compteur}{\stepcounter{#3}}{}%on augmente le compteur si demandé
\tcolorbox[baseboite,colframe=#1,##2,overlay={%
\IfStrEq{\BoxLogo}{}{}{\LogoCoinDroit}%logo
+ \IfStrEq{\BoxIcone}{}{}{\IconeCoinDroit}%icone
\tikzset{overlay=false}%
\TitreBoite{#1}{#4}{#5}{\arabic{#3}}%titre
\IfStrEq{\BoxSubTitle}{}{}{\SousTitreBoite}%soustitre
diff --git a/Master/texmf-dist/tex/latex/crimson/LY1Crimson-LF.fd b/Master/texmf-dist/tex/latex/crimson/LY1Crimson-LF.fd
new file mode 100644
index 00000000000..926b5a4d102
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/crimson/LY1Crimson-LF.fd
@@ -0,0 +1,130 @@
+%% Generated by autoinst on 2024/12/08
+%%
+\ProvidesFile{LY1Crimson-LF.fd}
+ [2024/12/08 (autoinst) Font definitions for LY1/Crimson-LF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname Crimson@scale\endcsname\relax
+ \let\Crimson@@scale\@empty
+\else
+ \edef\Crimson@@scale{s*[\csname Crimson@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{LY1}{Crimson-LF}{}
+
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{LY1}{Crimson-LF}{sb}{it}{
+ <-> \Crimson@@scale Crimson-SemiboldItalic-lf-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{semibold}{it}{
+ <-> alias * Crimson-LF/sb/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{sb}{n}{
+ <-> \Crimson@@scale Crimson-Semibold-lf-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{semibold}{n}{
+ <-> alias * Crimson-LF/sb/n
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{sb}{sl}{
+ <-> ssub * Crimson-LF/sb/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{semibold}{sl}{
+ <-> ssub * Crimson-LF/semibold/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{LY1}{Crimson-LF}{b}{it}{
+ <-> \Crimson@@scale Crimson-BoldItalic-lf-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{bold}{it}{
+ <-> alias * Crimson-LF/b/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{b}{sl}{
+ <-> ssub * Crimson-LF/b/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{bold}{sl}{
+ <-> ssub * Crimson-LF/bold/it
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{LY1}{Crimson-LF}{m}{sc}{
+ <-> \Crimson@@scale Crimson-Roman-lf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{regular}{sc}{
+ <-> alias * Crimson-LF/m/sc
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{m}{n}{
+ <-> \Crimson@@scale Crimson-Roman-lf-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{regular}{n}{
+ <-> alias * Crimson-LF/m/n
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{m}{it}{
+ <-> \Crimson@@scale Crimson-Italic-lf-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{regular}{it}{
+ <-> alias * Crimson-LF/m/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{m}{scit}{
+ <-> \Crimson@@scale Crimson-Italic-lf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{regular}{scit}{
+ <-> alias * Crimson-LF/m/scit
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{m}{scsl}{
+ <-> ssub * Crimson-LF/m/scit
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{regular}{scsl}{
+ <-> ssub * Crimson-LF/regular/scit
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{m}{sl}{
+ <-> ssub * Crimson-LF/m/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{regular}{sl}{
+ <-> ssub * Crimson-LF/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{LY1}{Crimson-LF}{bx}{sl}{
+ <-> ssub * Crimson-LF/b/sl
+}{}
+
+\DeclareFontShape{LY1}{Crimson-LF}{bx}{it}{
+ <-> ssub * Crimson-LF/b/it
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/crimson/LY1Crimson-OsF.fd b/Master/texmf-dist/tex/latex/crimson/LY1Crimson-OsF.fd
new file mode 100644
index 00000000000..ddc5cc007e0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/crimson/LY1Crimson-OsF.fd
@@ -0,0 +1,103 @@
+%% Generated by autoinst on 2024/12/08
+%%
+\ProvidesFile{LY1Crimson-OsF.fd}
+ [2024/12/08 (autoinst) Font definitions for LY1/Crimson-OsF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname Crimson@scale\endcsname\relax
+ \let\Crimson@@scale\@empty
+\else
+ \edef\Crimson@@scale{s*[\csname Crimson@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{LY1}{Crimson-OsF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{LY1}{Crimson-OsF}{m}{scit}{
+ <-> \Crimson@@scale Crimson-Italic-osf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-OsF}{regular}{scit}{
+ <-> alias * Crimson-OsF/m/scit
+}{}
+
+\DeclareFontShape{LY1}{Crimson-OsF}{m}{it}{
+ <-> \Crimson@@scale Crimson-Italic-osf-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-OsF}{regular}{it}{
+ <-> alias * Crimson-OsF/m/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-OsF}{m}{n}{
+ <-> \Crimson@@scale Crimson-Roman-osf-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-OsF}{regular}{n}{
+ <-> alias * Crimson-OsF/m/n
+}{}
+
+\DeclareFontShape{LY1}{Crimson-OsF}{m}{sc}{
+ <-> \Crimson@@scale Crimson-Roman-osf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-OsF}{regular}{sc}{
+ <-> alias * Crimson-OsF/m/sc
+}{}
+
+\DeclareFontShape{LY1}{Crimson-OsF}{m}{scsl}{
+ <-> ssub * Crimson-OsF/m/scit
+}{}
+
+\DeclareFontShape{LY1}{Crimson-OsF}{regular}{scsl}{
+ <-> ssub * Crimson-OsF/regular/scit
+}{}
+
+\DeclareFontShape{LY1}{Crimson-OsF}{m}{sl}{
+ <-> ssub * Crimson-OsF/m/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-OsF}{regular}{sl}{
+ <-> ssub * Crimson-OsF/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{LY1}{Crimson-OsF}{b}{it}{
+ <-> \Crimson@@scale Crimson-BoldItalic-osf-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-OsF}{bold}{it}{
+ <-> alias * Crimson-OsF/b/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-OsF}{b}{sl}{
+ <-> ssub * Crimson-OsF/b/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-OsF}{bold}{sl}{
+ <-> ssub * Crimson-OsF/bold/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{LY1}{Crimson-OsF}{bx}{sl}{
+ <-> ssub * Crimson-OsF/b/sl
+}{}
+
+\DeclareFontShape{LY1}{Crimson-OsF}{bx}{it}{
+ <-> ssub * Crimson-OsF/b/it
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/crimson/LY1Crimson-TLF.fd b/Master/texmf-dist/tex/latex/crimson/LY1Crimson-TLF.fd
index 5e3f58f7119..b6537cf27f5 100644
--- a/Master/texmf-dist/tex/latex/crimson/LY1Crimson-TLF.fd
+++ b/Master/texmf-dist/tex/latex/crimson/LY1Crimson-TLF.fd
@@ -1,7 +1,15 @@
-%% Generated by autoinst on 2016/02/19
+%% Generated by autoinst on 2024/12/08
%%
\ProvidesFile{LY1Crimson-TLF.fd}
- [2016/02/19 (autoinst) Font definitions for LY1/Crimson-TLF.]
+ [2024/12/08 (autoinst) Font definitions for LY1/Crimson-TLF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
\expandafter\ifx\csname Crimson@scale\endcsname\relax
\let\Crimson@@scale\@empty
@@ -11,40 +19,124 @@
\DeclareFontFamily{LY1}{Crimson-TLF}{}
+
+% ---- b = bold ----
+
\DeclareFontShape{LY1}{Crimson-TLF}{b}{n}{
<-> \Crimson@@scale Crimson-Bold-tlf-ly1
}{}
+\DeclareFontShape{LY1}{Crimson-TLF}{bold}{n}{
+ <-> alias * Crimson-TLF/b/n
+}{}
+
\DeclareFontShape{LY1}{Crimson-TLF}{b}{it}{
<-> \Crimson@@scale Crimson-BoldItalic-tlf-ly1
}{}
+\DeclareFontShape{LY1}{Crimson-TLF}{bold}{it}{
+ <-> alias * Crimson-TLF/b/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TLF}{b}{sc}{
+ <-> \Crimson@@scale Crimson-Bold-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TLF}{bold}{sc}{
+ <-> alias * Crimson-TLF/b/sc
+}{}
+
\DeclareFontShape{LY1}{Crimson-TLF}{b}{sl}{
- <-> ssub * Crimson-TLF/b/it
+ <-> ssub * Crimson-TLF/b/it
}{}
-\DeclareFontShape{LY1}{Crimson-TLF}{sb}{n}{
- <-> \Crimson@@scale Crimson-Semibold-tlf-ly1
+\DeclareFontShape{LY1}{Crimson-TLF}{bold}{sl}{
+ <-> ssub * Crimson-TLF/bold/it
}{}
+
+% ---- sb = semibold ----
+
\DeclareFontShape{LY1}{Crimson-TLF}{sb}{it}{
<-> \Crimson@@scale Crimson-SemiboldItalic-tlf-ly1
}{}
+\DeclareFontShape{LY1}{Crimson-TLF}{semibold}{it}{
+ <-> alias * Crimson-TLF/sb/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TLF}{sb}{n}{
+ <-> \Crimson@@scale Crimson-Semibold-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TLF}{semibold}{n}{
+ <-> alias * Crimson-TLF/sb/n
+}{}
+
\DeclareFontShape{LY1}{Crimson-TLF}{sb}{sl}{
- <-> ssub * Crimson-TLF/sb/it
+ <-> ssub * Crimson-TLF/sb/it
}{}
-\DeclareFontShape{LY1}{Crimson-TLF}{m}{n}{
- <-> \Crimson@@scale Crimson-Roman-tlf-ly1
+\DeclareFontShape{LY1}{Crimson-TLF}{semibold}{sl}{
+ <-> ssub * Crimson-TLF/semibold/it
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{LY1}{Crimson-TLF}{m}{sc}{
+ <-> \Crimson@@scale Crimson-Roman-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TLF}{regular}{sc}{
+ <-> alias * Crimson-TLF/m/sc
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TLF}{m}{scit}{
+ <-> \Crimson@@scale Crimson-Italic-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TLF}{regular}{scit}{
+ <-> alias * Crimson-TLF/m/scit
}{}
\DeclareFontShape{LY1}{Crimson-TLF}{m}{it}{
<-> \Crimson@@scale Crimson-Italic-tlf-ly1
}{}
+\DeclareFontShape{LY1}{Crimson-TLF}{regular}{it}{
+ <-> alias * Crimson-TLF/m/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TLF}{m}{n}{
+ <-> \Crimson@@scale Crimson-Roman-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TLF}{regular}{n}{
+ <-> alias * Crimson-TLF/m/n
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TLF}{m}{scsl}{
+ <-> ssub * Crimson-TLF/m/scit
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TLF}{regular}{scsl}{
+ <-> ssub * Crimson-TLF/regular/scit
+}{}
+
\DeclareFontShape{LY1}{Crimson-TLF}{m}{sl}{
- <-> ssub * Crimson-TLF/m/it
+ <-> ssub * Crimson-TLF/m/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TLF}{regular}{sl}{
+ <-> ssub * Crimson-TLF/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{LY1}{Crimson-TLF}{bx}{it}{
+ <-> ssub * Crimson-TLF/b/it
}{}
\DeclareFontShape{LY1}{Crimson-TLF}{bx}{sl}{
@@ -55,8 +147,8 @@
<-> ssub * Crimson-TLF/b/n
}{}
-\DeclareFontShape{LY1}{Crimson-TLF}{bx}{it}{
- <-> ssub * Crimson-TLF/b/it
+\DeclareFontShape{LY1}{Crimson-TLF}{bx}{sc}{
+ <-> ssub * Crimson-TLF/b/sc
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/crimson/LY1Crimson-TOsF.fd b/Master/texmf-dist/tex/latex/crimson/LY1Crimson-TOsF.fd
new file mode 100644
index 00000000000..873c09c54b8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/crimson/LY1Crimson-TOsF.fd
@@ -0,0 +1,103 @@
+%% Generated by autoinst on 2024/12/08
+%%
+\ProvidesFile{LY1Crimson-TOsF.fd}
+ [2024/12/08 (autoinst) Font definitions for LY1/Crimson-TOsF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname Crimson@scale\endcsname\relax
+ \let\Crimson@@scale\@empty
+\else
+ \edef\Crimson@@scale{s*[\csname Crimson@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{LY1}{Crimson-TOsF}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{b}{it}{
+ <-> \Crimson@@scale Crimson-BoldItalic-tosf-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{bold}{it}{
+ <-> alias * Crimson-TOsF/b/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{b}{sl}{
+ <-> ssub * Crimson-TOsF/b/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{bold}{sl}{
+ <-> ssub * Crimson-TOsF/bold/it
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{m}{sc}{
+ <-> \Crimson@@scale Crimson-Roman-tosf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{regular}{sc}{
+ <-> alias * Crimson-TOsF/m/sc
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{m}{n}{
+ <-> \Crimson@@scale Crimson-Roman-tosf-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{regular}{n}{
+ <-> alias * Crimson-TOsF/m/n
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{m}{it}{
+ <-> \Crimson@@scale Crimson-Italic-tosf-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{regular}{it}{
+ <-> alias * Crimson-TOsF/m/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{m}{scit}{
+ <-> \Crimson@@scale Crimson-Italic-tosf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{regular}{scit}{
+ <-> alias * Crimson-TOsF/m/scit
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{m}{scsl}{
+ <-> ssub * Crimson-TOsF/m/scit
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{regular}{scsl}{
+ <-> ssub * Crimson-TOsF/regular/scit
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{m}{sl}{
+ <-> ssub * Crimson-TOsF/m/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{regular}{sl}{
+ <-> ssub * Crimson-TOsF/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{bx}{it}{
+ <-> ssub * Crimson-TOsF/b/it
+}{}
+
+\DeclareFontShape{LY1}{Crimson-TOsF}{bx}{sl}{
+ <-> ssub * Crimson-TOsF/b/sl
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/crimson/OT1Crimson-LF.fd b/Master/texmf-dist/tex/latex/crimson/OT1Crimson-LF.fd
new file mode 100644
index 00000000000..ffa2ec83224
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/crimson/OT1Crimson-LF.fd
@@ -0,0 +1,130 @@
+%% Generated by autoinst on 2024/12/08
+%%
+\ProvidesFile{OT1Crimson-LF.fd}
+ [2024/12/08 (autoinst) Font definitions for OT1/Crimson-LF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname Crimson@scale\endcsname\relax
+ \let\Crimson@@scale\@empty
+\else
+ \edef\Crimson@@scale{s*[\csname Crimson@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{OT1}{Crimson-LF}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{OT1}{Crimson-LF}{b}{it}{
+ <-> \Crimson@@scale Crimson-BoldItalic-lf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{bold}{it}{
+ <-> alias * Crimson-LF/b/it
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{b}{sl}{
+ <-> ssub * Crimson-LF/b/it
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{bold}{sl}{
+ <-> ssub * Crimson-LF/bold/it
+}{}
+
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{OT1}{Crimson-LF}{sb}{it}{
+ <-> \Crimson@@scale Crimson-SemiboldItalic-lf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{semibold}{it}{
+ <-> alias * Crimson-LF/sb/it
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{sb}{n}{
+ <-> \Crimson@@scale Crimson-Semibold-lf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{semibold}{n}{
+ <-> alias * Crimson-LF/sb/n
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{sb}{sl}{
+ <-> ssub * Crimson-LF/sb/it
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{semibold}{sl}{
+ <-> ssub * Crimson-LF/semibold/it
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{OT1}{Crimson-LF}{m}{sc}{
+ <-> \Crimson@@scale Crimson-Roman-lf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{regular}{sc}{
+ <-> alias * Crimson-LF/m/sc
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{m}{n}{
+ <-> \Crimson@@scale Crimson-Roman-lf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{regular}{n}{
+ <-> alias * Crimson-LF/m/n
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{m}{scit}{
+ <-> \Crimson@@scale Crimson-Italic-lf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{regular}{scit}{
+ <-> alias * Crimson-LF/m/scit
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{m}{it}{
+ <-> \Crimson@@scale Crimson-Italic-lf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{regular}{it}{
+ <-> alias * Crimson-LF/m/it
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{m}{scsl}{
+ <-> ssub * Crimson-LF/m/scit
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{regular}{scsl}{
+ <-> ssub * Crimson-LF/regular/scit
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{m}{sl}{
+ <-> ssub * Crimson-LF/m/it
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{regular}{sl}{
+ <-> ssub * Crimson-LF/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{OT1}{Crimson-LF}{bx}{sl}{
+ <-> ssub * Crimson-LF/b/sl
+}{}
+
+\DeclareFontShape{OT1}{Crimson-LF}{bx}{it}{
+ <-> ssub * Crimson-LF/b/it
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/crimson/OT1Crimson-OsF.fd b/Master/texmf-dist/tex/latex/crimson/OT1Crimson-OsF.fd
new file mode 100644
index 00000000000..af08b9826c3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/crimson/OT1Crimson-OsF.fd
@@ -0,0 +1,103 @@
+%% Generated by autoinst on 2024/12/08
+%%
+\ProvidesFile{OT1Crimson-OsF.fd}
+ [2024/12/08 (autoinst) Font definitions for OT1/Crimson-OsF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname Crimson@scale\endcsname\relax
+ \let\Crimson@@scale\@empty
+\else
+ \edef\Crimson@@scale{s*[\csname Crimson@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{OT1}{Crimson-OsF}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{OT1}{Crimson-OsF}{b}{it}{
+ <-> \Crimson@@scale Crimson-BoldItalic-osf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-OsF}{bold}{it}{
+ <-> alias * Crimson-OsF/b/it
+}{}
+
+\DeclareFontShape{OT1}{Crimson-OsF}{b}{sl}{
+ <-> ssub * Crimson-OsF/b/it
+}{}
+
+\DeclareFontShape{OT1}{Crimson-OsF}{bold}{sl}{
+ <-> ssub * Crimson-OsF/bold/it
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{OT1}{Crimson-OsF}{m}{sc}{
+ <-> \Crimson@@scale Crimson-Roman-osf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-OsF}{regular}{sc}{
+ <-> alias * Crimson-OsF/m/sc
+}{}
+
+\DeclareFontShape{OT1}{Crimson-OsF}{m}{it}{
+ <-> \Crimson@@scale Crimson-Italic-osf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-OsF}{regular}{it}{
+ <-> alias * Crimson-OsF/m/it
+}{}
+
+\DeclareFontShape{OT1}{Crimson-OsF}{m}{scit}{
+ <-> \Crimson@@scale Crimson-Italic-osf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-OsF}{regular}{scit}{
+ <-> alias * Crimson-OsF/m/scit
+}{}
+
+\DeclareFontShape{OT1}{Crimson-OsF}{m}{n}{
+ <-> \Crimson@@scale Crimson-Roman-osf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-OsF}{regular}{n}{
+ <-> alias * Crimson-OsF/m/n
+}{}
+
+\DeclareFontShape{OT1}{Crimson-OsF}{m}{scsl}{
+ <-> ssub * Crimson-OsF/m/scit
+}{}
+
+\DeclareFontShape{OT1}{Crimson-OsF}{regular}{scsl}{
+ <-> ssub * Crimson-OsF/regular/scit
+}{}
+
+\DeclareFontShape{OT1}{Crimson-OsF}{m}{sl}{
+ <-> ssub * Crimson-OsF/m/it
+}{}
+
+\DeclareFontShape{OT1}{Crimson-OsF}{regular}{sl}{
+ <-> ssub * Crimson-OsF/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{OT1}{Crimson-OsF}{bx}{sl}{
+ <-> ssub * Crimson-OsF/b/sl
+}{}
+
+\DeclareFontShape{OT1}{Crimson-OsF}{bx}{it}{
+ <-> ssub * Crimson-OsF/b/it
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/crimson/OT1Crimson-TLF.fd b/Master/texmf-dist/tex/latex/crimson/OT1Crimson-TLF.fd
index 957716d757b..02c884d3fca 100644
--- a/Master/texmf-dist/tex/latex/crimson/OT1Crimson-TLF.fd
+++ b/Master/texmf-dist/tex/latex/crimson/OT1Crimson-TLF.fd
@@ -1,7 +1,15 @@
-%% Generated by autoinst on 2016/02/19
+%% Generated by autoinst on 2024/12/08
%%
\ProvidesFile{OT1Crimson-TLF.fd}
- [2016/02/19 (autoinst) Font definitions for OT1/Crimson-TLF.]
+ [2024/12/08 (autoinst) Font definitions for OT1/Crimson-TLF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
\expandafter\ifx\csname Crimson@scale\endcsname\relax
\let\Crimson@@scale\@empty
@@ -11,52 +19,136 @@
\DeclareFontFamily{OT1}{Crimson-TLF}{}
-\DeclareFontShape{OT1}{Crimson-TLF}{b}{n}{
- <-> \Crimson@@scale Crimson-Bold-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{Crimson-TLF}{b}{it}{
- <-> \Crimson@@scale Crimson-BoldItalic-tlf-ot1
-}{}
-\DeclareFontShape{OT1}{Crimson-TLF}{b}{sl}{
- <-> ssub * Crimson-TLF/b/it
-}{}
+% ---- sb = semibold ----
\DeclareFontShape{OT1}{Crimson-TLF}{sb}{n}{
<-> \Crimson@@scale Crimson-Semibold-tlf-ot1
}{}
+\DeclareFontShape{OT1}{Crimson-TLF}{semibold}{n}{
+ <-> alias * Crimson-TLF/sb/n
+}{}
+
\DeclareFontShape{OT1}{Crimson-TLF}{sb}{it}{
<-> \Crimson@@scale Crimson-SemiboldItalic-tlf-ot1
}{}
+\DeclareFontShape{OT1}{Crimson-TLF}{semibold}{it}{
+ <-> alias * Crimson-TLF/sb/it
+}{}
+
\DeclareFontShape{OT1}{Crimson-TLF}{sb}{sl}{
- <-> ssub * Crimson-TLF/sb/it
+ <-> ssub * Crimson-TLF/sb/it
}{}
-\DeclareFontShape{OT1}{Crimson-TLF}{m}{n}{
- <-> \Crimson@@scale Crimson-Roman-tlf-ot1
+\DeclareFontShape{OT1}{Crimson-TLF}{semibold}{sl}{
+ <-> ssub * Crimson-TLF/semibold/it
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{OT1}{Crimson-TLF}{m}{sc}{
+ <-> \Crimson@@scale Crimson-Roman-tlf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TLF}{regular}{sc}{
+ <-> alias * Crimson-TLF/m/sc
}{}
\DeclareFontShape{OT1}{Crimson-TLF}{m}{it}{
<-> \Crimson@@scale Crimson-Italic-tlf-ot1
}{}
+\DeclareFontShape{OT1}{Crimson-TLF}{regular}{it}{
+ <-> alias * Crimson-TLF/m/it
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TLF}{m}{scit}{
+ <-> \Crimson@@scale Crimson-Italic-tlf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TLF}{regular}{scit}{
+ <-> alias * Crimson-TLF/m/scit
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TLF}{m}{n}{
+ <-> \Crimson@@scale Crimson-Roman-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TLF}{regular}{n}{
+ <-> alias * Crimson-TLF/m/n
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TLF}{m}{scsl}{
+ <-> ssub * Crimson-TLF/m/scit
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TLF}{regular}{scsl}{
+ <-> ssub * Crimson-TLF/regular/scit
+}{}
+
\DeclareFontShape{OT1}{Crimson-TLF}{m}{sl}{
- <-> ssub * Crimson-TLF/m/it
+ <-> ssub * Crimson-TLF/m/it
}{}
-\DeclareFontShape{OT1}{Crimson-TLF}{bx}{sl}{
- <-> ssub * Crimson-TLF/b/sl
+\DeclareFontShape{OT1}{Crimson-TLF}{regular}{sl}{
+ <-> ssub * Crimson-TLF/regular/it
}{}
-\DeclareFontShape{OT1}{Crimson-TLF}{bx}{n}{
- <-> ssub * Crimson-TLF/b/n
+
+% ---- b = bold ----
+
+\DeclareFontShape{OT1}{Crimson-TLF}{b}{sc}{
+ <-> \Crimson@@scale Crimson-Bold-tlf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TLF}{bold}{sc}{
+ <-> alias * Crimson-TLF/b/sc
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TLF}{b}{it}{
+ <-> \Crimson@@scale Crimson-BoldItalic-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TLF}{bold}{it}{
+ <-> alias * Crimson-TLF/b/it
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TLF}{b}{n}{
+ <-> \Crimson@@scale Crimson-Bold-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TLF}{bold}{n}{
+ <-> alias * Crimson-TLF/b/n
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TLF}{b}{sl}{
+ <-> ssub * Crimson-TLF/b/it
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TLF}{bold}{sl}{
+ <-> ssub * Crimson-TLF/bold/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{OT1}{Crimson-TLF}{bx}{sc}{
+ <-> ssub * Crimson-TLF/b/sc
}{}
\DeclareFontShape{OT1}{Crimson-TLF}{bx}{it}{
<-> ssub * Crimson-TLF/b/it
}{}
+\DeclareFontShape{OT1}{Crimson-TLF}{bx}{n}{
+ <-> ssub * Crimson-TLF/b/n
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TLF}{bx}{sl}{
+ <-> ssub * Crimson-TLF/b/sl
+}{}
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/crimson/OT1Crimson-TOsF.fd b/Master/texmf-dist/tex/latex/crimson/OT1Crimson-TOsF.fd
new file mode 100644
index 00000000000..00f75bcf0d5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/crimson/OT1Crimson-TOsF.fd
@@ -0,0 +1,103 @@
+%% Generated by autoinst on 2024/12/08
+%%
+\ProvidesFile{OT1Crimson-TOsF.fd}
+ [2024/12/08 (autoinst) Font definitions for OT1/Crimson-TOsF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname Crimson@scale\endcsname\relax
+ \let\Crimson@@scale\@empty
+\else
+ \edef\Crimson@@scale{s*[\csname Crimson@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{OT1}{Crimson-TOsF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{m}{sc}{
+ <-> \Crimson@@scale Crimson-Roman-tosf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{regular}{sc}{
+ <-> alias * Crimson-TOsF/m/sc
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{m}{scit}{
+ <-> \Crimson@@scale Crimson-Italic-tosf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{regular}{scit}{
+ <-> alias * Crimson-TOsF/m/scit
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{m}{it}{
+ <-> \Crimson@@scale Crimson-Italic-tosf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{regular}{it}{
+ <-> alias * Crimson-TOsF/m/it
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{m}{n}{
+ <-> \Crimson@@scale Crimson-Roman-tosf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{regular}{n}{
+ <-> alias * Crimson-TOsF/m/n
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{m}{scsl}{
+ <-> ssub * Crimson-TOsF/m/scit
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{regular}{scsl}{
+ <-> ssub * Crimson-TOsF/regular/scit
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{m}{sl}{
+ <-> ssub * Crimson-TOsF/m/it
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{regular}{sl}{
+ <-> ssub * Crimson-TOsF/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{b}{it}{
+ <-> \Crimson@@scale Crimson-BoldItalic-tosf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{bold}{it}{
+ <-> alias * Crimson-TOsF/b/it
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{b}{sl}{
+ <-> ssub * Crimson-TOsF/b/it
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{bold}{sl}{
+ <-> ssub * Crimson-TOsF/bold/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{bx}{sl}{
+ <-> ssub * Crimson-TOsF/b/sl
+}{}
+
+\DeclareFontShape{OT1}{Crimson-TOsF}{bx}{it}{
+ <-> ssub * Crimson-TOsF/b/it
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/crimson/T1Crimson-LF.fd b/Master/texmf-dist/tex/latex/crimson/T1Crimson-LF.fd
new file mode 100644
index 00000000000..2192a4c63f5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/crimson/T1Crimson-LF.fd
@@ -0,0 +1,130 @@
+%% Generated by autoinst on 2024/12/08
+%%
+\ProvidesFile{T1Crimson-LF.fd}
+ [2024/12/08 (autoinst) Font definitions for T1/Crimson-LF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname Crimson@scale\endcsname\relax
+ \let\Crimson@@scale\@empty
+\else
+ \edef\Crimson@@scale{s*[\csname Crimson@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{Crimson-LF}{}
+
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{T1}{Crimson-LF}{sb}{n}{
+ <-> \Crimson@@scale Crimson-Semibold-lf-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{semibold}{n}{
+ <-> alias * Crimson-LF/sb/n
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{sb}{it}{
+ <-> \Crimson@@scale Crimson-SemiboldItalic-lf-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{semibold}{it}{
+ <-> alias * Crimson-LF/sb/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{sb}{sl}{
+ <-> ssub * Crimson-LF/sb/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{semibold}{sl}{
+ <-> ssub * Crimson-LF/semibold/it
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T1}{Crimson-LF}{m}{n}{
+ <-> \Crimson@@scale Crimson-Roman-lf-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{regular}{n}{
+ <-> alias * Crimson-LF/m/n
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{m}{scit}{
+ <-> \Crimson@@scale Crimson-Italic-lf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{regular}{scit}{
+ <-> alias * Crimson-LF/m/scit
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{m}{it}{
+ <-> \Crimson@@scale Crimson-Italic-lf-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{regular}{it}{
+ <-> alias * Crimson-LF/m/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{m}{sc}{
+ <-> \Crimson@@scale Crimson-Roman-lf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{regular}{sc}{
+ <-> alias * Crimson-LF/m/sc
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{m}{scsl}{
+ <-> ssub * Crimson-LF/m/scit
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{regular}{scsl}{
+ <-> ssub * Crimson-LF/regular/scit
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{m}{sl}{
+ <-> ssub * Crimson-LF/m/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{regular}{sl}{
+ <-> ssub * Crimson-LF/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T1}{Crimson-LF}{b}{it}{
+ <-> \Crimson@@scale Crimson-BoldItalic-lf-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{bold}{it}{
+ <-> alias * Crimson-LF/b/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{b}{sl}{
+ <-> ssub * Crimson-LF/b/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{bold}{sl}{
+ <-> ssub * Crimson-LF/bold/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T1}{Crimson-LF}{bx}{it}{
+ <-> ssub * Crimson-LF/b/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-LF}{bx}{sl}{
+ <-> ssub * Crimson-LF/b/sl
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/crimson/T1Crimson-OsF.fd b/Master/texmf-dist/tex/latex/crimson/T1Crimson-OsF.fd
new file mode 100644
index 00000000000..7dfae77465d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/crimson/T1Crimson-OsF.fd
@@ -0,0 +1,103 @@
+%% Generated by autoinst on 2024/12/08
+%%
+\ProvidesFile{T1Crimson-OsF.fd}
+ [2024/12/08 (autoinst) Font definitions for T1/Crimson-OsF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname Crimson@scale\endcsname\relax
+ \let\Crimson@@scale\@empty
+\else
+ \edef\Crimson@@scale{s*[\csname Crimson@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{Crimson-OsF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T1}{Crimson-OsF}{m}{n}{
+ <-> \Crimson@@scale Crimson-Roman-osf-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-OsF}{regular}{n}{
+ <-> alias * Crimson-OsF/m/n
+}{}
+
+\DeclareFontShape{T1}{Crimson-OsF}{m}{scit}{
+ <-> \Crimson@@scale Crimson-Italic-osf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-OsF}{regular}{scit}{
+ <-> alias * Crimson-OsF/m/scit
+}{}
+
+\DeclareFontShape{T1}{Crimson-OsF}{m}{it}{
+ <-> \Crimson@@scale Crimson-Italic-osf-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-OsF}{regular}{it}{
+ <-> alias * Crimson-OsF/m/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-OsF}{m}{sc}{
+ <-> \Crimson@@scale Crimson-Roman-osf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-OsF}{regular}{sc}{
+ <-> alias * Crimson-OsF/m/sc
+}{}
+
+\DeclareFontShape{T1}{Crimson-OsF}{m}{scsl}{
+ <-> ssub * Crimson-OsF/m/scit
+}{}
+
+\DeclareFontShape{T1}{Crimson-OsF}{regular}{scsl}{
+ <-> ssub * Crimson-OsF/regular/scit
+}{}
+
+\DeclareFontShape{T1}{Crimson-OsF}{m}{sl}{
+ <-> ssub * Crimson-OsF/m/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-OsF}{regular}{sl}{
+ <-> ssub * Crimson-OsF/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T1}{Crimson-OsF}{b}{it}{
+ <-> \Crimson@@scale Crimson-BoldItalic-osf-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-OsF}{bold}{it}{
+ <-> alias * Crimson-OsF/b/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-OsF}{b}{sl}{
+ <-> ssub * Crimson-OsF/b/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-OsF}{bold}{sl}{
+ <-> ssub * Crimson-OsF/bold/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T1}{Crimson-OsF}{bx}{it}{
+ <-> ssub * Crimson-OsF/b/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-OsF}{bx}{sl}{
+ <-> ssub * Crimson-OsF/b/sl
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/crimson/T1Crimson-TLF.fd b/Master/texmf-dist/tex/latex/crimson/T1Crimson-TLF.fd
index 8725f245d06..24e2cda5eda 100644
--- a/Master/texmf-dist/tex/latex/crimson/T1Crimson-TLF.fd
+++ b/Master/texmf-dist/tex/latex/crimson/T1Crimson-TLF.fd
@@ -1,7 +1,15 @@
-%% Generated by autoinst on 2016/02/19
+%% Generated by autoinst on 2024/12/08
%%
\ProvidesFile{T1Crimson-TLF.fd}
- [2016/02/19 (autoinst) Font definitions for T1/Crimson-TLF.]
+ [2024/12/08 (autoinst) Font definitions for T1/Crimson-TLF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
\expandafter\ifx\csname Crimson@scale\endcsname\relax
\let\Crimson@@scale\@empty
@@ -11,52 +19,136 @@
\DeclareFontFamily{T1}{Crimson-TLF}{}
+
+% ---- b = bold ----
+
\DeclareFontShape{T1}{Crimson-TLF}{b}{n}{
<-> \Crimson@@scale Crimson-Bold-tlf-t1
}{}
+\DeclareFontShape{T1}{Crimson-TLF}{bold}{n}{
+ <-> alias * Crimson-TLF/b/n
+}{}
+
\DeclareFontShape{T1}{Crimson-TLF}{b}{it}{
<-> \Crimson@@scale Crimson-BoldItalic-tlf-t1
}{}
+\DeclareFontShape{T1}{Crimson-TLF}{bold}{it}{
+ <-> alias * Crimson-TLF/b/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-TLF}{b}{sc}{
+ <-> \Crimson@@scale Crimson-Bold-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-TLF}{bold}{sc}{
+ <-> alias * Crimson-TLF/b/sc
+}{}
+
\DeclareFontShape{T1}{Crimson-TLF}{b}{sl}{
- <-> ssub * Crimson-TLF/b/it
+ <-> ssub * Crimson-TLF/b/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-TLF}{bold}{sl}{
+ <-> ssub * Crimson-TLF/bold/it
}{}
+
+% ---- sb = semibold ----
+
\DeclareFontShape{T1}{Crimson-TLF}{sb}{n}{
<-> \Crimson@@scale Crimson-Semibold-tlf-t1
}{}
+\DeclareFontShape{T1}{Crimson-TLF}{semibold}{n}{
+ <-> alias * Crimson-TLF/sb/n
+}{}
+
\DeclareFontShape{T1}{Crimson-TLF}{sb}{it}{
<-> \Crimson@@scale Crimson-SemiboldItalic-tlf-t1
}{}
+\DeclareFontShape{T1}{Crimson-TLF}{semibold}{it}{
+ <-> alias * Crimson-TLF/sb/it
+}{}
+
\DeclareFontShape{T1}{Crimson-TLF}{sb}{sl}{
- <-> ssub * Crimson-TLF/sb/it
+ <-> ssub * Crimson-TLF/sb/it
}{}
-\DeclareFontShape{T1}{Crimson-TLF}{m}{n}{
- <-> \Crimson@@scale Crimson-Roman-tlf-t1
+\DeclareFontShape{T1}{Crimson-TLF}{semibold}{sl}{
+ <-> ssub * Crimson-TLF/semibold/it
}{}
+
+% ---- m = regular ----
+
\DeclareFontShape{T1}{Crimson-TLF}{m}{it}{
<-> \Crimson@@scale Crimson-Italic-tlf-t1
}{}
+\DeclareFontShape{T1}{Crimson-TLF}{regular}{it}{
+ <-> alias * Crimson-TLF/m/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-TLF}{m}{scit}{
+ <-> \Crimson@@scale Crimson-Italic-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-TLF}{regular}{scit}{
+ <-> alias * Crimson-TLF/m/scit
+}{}
+
+\DeclareFontShape{T1}{Crimson-TLF}{m}{n}{
+ <-> \Crimson@@scale Crimson-Roman-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-TLF}{regular}{n}{
+ <-> alias * Crimson-TLF/m/n
+}{}
+
+\DeclareFontShape{T1}{Crimson-TLF}{m}{sc}{
+ <-> \Crimson@@scale Crimson-Roman-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-TLF}{regular}{sc}{
+ <-> alias * Crimson-TLF/m/sc
+}{}
+
+\DeclareFontShape{T1}{Crimson-TLF}{m}{scsl}{
+ <-> ssub * Crimson-TLF/m/scit
+}{}
+
+\DeclareFontShape{T1}{Crimson-TLF}{regular}{scsl}{
+ <-> ssub * Crimson-TLF/regular/scit
+}{}
+
\DeclareFontShape{T1}{Crimson-TLF}{m}{sl}{
- <-> ssub * Crimson-TLF/m/it
+ <-> ssub * Crimson-TLF/m/it
}{}
-\DeclareFontShape{T1}{Crimson-TLF}{bx}{sl}{
- <-> ssub * Crimson-TLF/b/sl
+\DeclareFontShape{T1}{Crimson-TLF}{regular}{sl}{
+ <-> ssub * Crimson-TLF/regular/it
}{}
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
\DeclareFontShape{T1}{Crimson-TLF}{bx}{n}{
<-> ssub * Crimson-TLF/b/n
}{}
+\DeclareFontShape{T1}{Crimson-TLF}{bx}{sl}{
+ <-> ssub * Crimson-TLF/b/sl
+}{}
+
\DeclareFontShape{T1}{Crimson-TLF}{bx}{it}{
<-> ssub * Crimson-TLF/b/it
}{}
+\DeclareFontShape{T1}{Crimson-TLF}{bx}{sc}{
+ <-> ssub * Crimson-TLF/b/sc
+}{}
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/crimson/T1Crimson-TOsF.fd b/Master/texmf-dist/tex/latex/crimson/T1Crimson-TOsF.fd
new file mode 100644
index 00000000000..cd67f308603
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/crimson/T1Crimson-TOsF.fd
@@ -0,0 +1,103 @@
+%% Generated by autoinst on 2024/12/08
+%%
+\ProvidesFile{T1Crimson-TOsF.fd}
+ [2024/12/08 (autoinst) Font definitions for T1/Crimson-TOsF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname Crimson@scale\endcsname\relax
+ \let\Crimson@@scale\@empty
+\else
+ \edef\Crimson@@scale{s*[\csname Crimson@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{Crimson-TOsF}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T1}{Crimson-TOsF}{b}{it}{
+ <-> \Crimson@@scale Crimson-BoldItalic-tosf-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-TOsF}{bold}{it}{
+ <-> alias * Crimson-TOsF/b/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-TOsF}{b}{sl}{
+ <-> ssub * Crimson-TOsF/b/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-TOsF}{bold}{sl}{
+ <-> ssub * Crimson-TOsF/bold/it
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T1}{Crimson-TOsF}{m}{sc}{
+ <-> \Crimson@@scale Crimson-Roman-tosf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-TOsF}{regular}{sc}{
+ <-> alias * Crimson-TOsF/m/sc
+}{}
+
+\DeclareFontShape{T1}{Crimson-TOsF}{m}{it}{
+ <-> \Crimson@@scale Crimson-Italic-tosf-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-TOsF}{regular}{it}{
+ <-> alias * Crimson-TOsF/m/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-TOsF}{m}{scit}{
+ <-> \Crimson@@scale Crimson-Italic-tosf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-TOsF}{regular}{scit}{
+ <-> alias * Crimson-TOsF/m/scit
+}{}
+
+\DeclareFontShape{T1}{Crimson-TOsF}{m}{n}{
+ <-> \Crimson@@scale Crimson-Roman-tosf-t1
+}{}
+
+\DeclareFontShape{T1}{Crimson-TOsF}{regular}{n}{
+ <-> alias * Crimson-TOsF/m/n
+}{}
+
+\DeclareFontShape{T1}{Crimson-TOsF}{m}{scsl}{
+ <-> ssub * Crimson-TOsF/m/scit
+}{}
+
+\DeclareFontShape{T1}{Crimson-TOsF}{regular}{scsl}{
+ <-> ssub * Crimson-TOsF/regular/scit
+}{}
+
+\DeclareFontShape{T1}{Crimson-TOsF}{m}{sl}{
+ <-> ssub * Crimson-TOsF/m/it
+}{}
+
+\DeclareFontShape{T1}{Crimson-TOsF}{regular}{sl}{
+ <-> ssub * Crimson-TOsF/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T1}{Crimson-TOsF}{bx}{sl}{
+ <-> ssub * Crimson-TOsF/b/sl
+}{}
+
+\DeclareFontShape{T1}{Crimson-TOsF}{bx}{it}{
+ <-> ssub * Crimson-TOsF/b/it
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/crimson/TS1Crimson-LF.fd b/Master/texmf-dist/tex/latex/crimson/TS1Crimson-LF.fd
new file mode 100644
index 00000000000..402d276b397
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/crimson/TS1Crimson-LF.fd
@@ -0,0 +1,106 @@
+%% Generated by autoinst on 2024/12/08
+%%
+\ProvidesFile{TS1Crimson-LF.fd}
+ [2024/12/08 (autoinst) Font definitions for TS1/Crimson-LF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname Crimson@scale\endcsname\relax
+ \let\Crimson@@scale\@empty
+\else
+ \edef\Crimson@@scale{s*[\csname Crimson@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{Crimson-LF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{TS1}{Crimson-LF}{m}{n}{
+ <-> \Crimson@@scale Crimson-Roman-lf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Crimson-LF}{regular}{n}{
+ <-> alias * Crimson-LF/m/n
+}{}
+
+\DeclareFontShape{TS1}{Crimson-LF}{m}{it}{
+ <-> \Crimson@@scale Crimson-Italic-lf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Crimson-LF}{regular}{it}{
+ <-> alias * Crimson-LF/m/it
+}{}
+
+\DeclareFontShape{TS1}{Crimson-LF}{m}{sl}{
+ <-> ssub * Crimson-LF/m/it
+}{}
+
+\DeclareFontShape{TS1}{Crimson-LF}{regular}{sl}{
+ <-> ssub * Crimson-LF/regular/it
+}{}
+
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{TS1}{Crimson-LF}{sb}{n}{
+ <-> \Crimson@@scale Crimson-Semibold-lf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Crimson-LF}{semibold}{n}{
+ <-> alias * Crimson-LF/sb/n
+}{}
+
+\DeclareFontShape{TS1}{Crimson-LF}{sb}{it}{
+ <-> \Crimson@@scale Crimson-SemiboldItalic-lf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Crimson-LF}{semibold}{it}{
+ <-> alias * Crimson-LF/sb/it
+}{}
+
+\DeclareFontShape{TS1}{Crimson-LF}{sb}{sl}{
+ <-> ssub * Crimson-LF/sb/it
+}{}
+
+\DeclareFontShape{TS1}{Crimson-LF}{semibold}{sl}{
+ <-> ssub * Crimson-LF/semibold/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{TS1}{Crimson-LF}{b}{it}{
+ <-> \Crimson@@scale Crimson-BoldItalic-lf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Crimson-LF}{bold}{it}{
+ <-> alias * Crimson-LF/b/it
+}{}
+
+\DeclareFontShape{TS1}{Crimson-LF}{b}{sl}{
+ <-> ssub * Crimson-LF/b/it
+}{}
+
+\DeclareFontShape{TS1}{Crimson-LF}{bold}{sl}{
+ <-> ssub * Crimson-LF/bold/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{TS1}{Crimson-LF}{bx}{sl}{
+ <-> ssub * Crimson-LF/b/sl
+}{}
+
+\DeclareFontShape{TS1}{Crimson-LF}{bx}{it}{
+ <-> ssub * Crimson-LF/b/it
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/crimson/TS1Crimson-OsF.fd b/Master/texmf-dist/tex/latex/crimson/TS1Crimson-OsF.fd
new file mode 100644
index 00000000000..e473f5b4dcd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/crimson/TS1Crimson-OsF.fd
@@ -0,0 +1,79 @@
+%% Generated by autoinst on 2024/12/08
+%%
+\ProvidesFile{TS1Crimson-OsF.fd}
+ [2024/12/08 (autoinst) Font definitions for TS1/Crimson-OsF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname Crimson@scale\endcsname\relax
+ \let\Crimson@@scale\@empty
+\else
+ \edef\Crimson@@scale{s*[\csname Crimson@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{Crimson-OsF}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{TS1}{Crimson-OsF}{b}{it}{
+ <-> \Crimson@@scale Crimson-BoldItalic-osf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Crimson-OsF}{bold}{it}{
+ <-> alias * Crimson-OsF/b/it
+}{}
+
+\DeclareFontShape{TS1}{Crimson-OsF}{b}{sl}{
+ <-> ssub * Crimson-OsF/b/it
+}{}
+
+\DeclareFontShape{TS1}{Crimson-OsF}{bold}{sl}{
+ <-> ssub * Crimson-OsF/bold/it
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{TS1}{Crimson-OsF}{m}{it}{
+ <-> \Crimson@@scale Crimson-Italic-osf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Crimson-OsF}{regular}{it}{
+ <-> alias * Crimson-OsF/m/it
+}{}
+
+\DeclareFontShape{TS1}{Crimson-OsF}{m}{n}{
+ <-> \Crimson@@scale Crimson-Roman-osf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Crimson-OsF}{regular}{n}{
+ <-> alias * Crimson-OsF/m/n
+}{}
+
+\DeclareFontShape{TS1}{Crimson-OsF}{m}{sl}{
+ <-> ssub * Crimson-OsF/m/it
+}{}
+
+\DeclareFontShape{TS1}{Crimson-OsF}{regular}{sl}{
+ <-> ssub * Crimson-OsF/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{TS1}{Crimson-OsF}{bx}{sl}{
+ <-> ssub * Crimson-OsF/b/sl
+}{}
+
+\DeclareFontShape{TS1}{Crimson-OsF}{bx}{it}{
+ <-> ssub * Crimson-OsF/b/it
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/crimson/TS1Crimson-TLF.fd b/Master/texmf-dist/tex/latex/crimson/TS1Crimson-TLF.fd
index fa959bdac65..a243635ea95 100644
--- a/Master/texmf-dist/tex/latex/crimson/TS1Crimson-TLF.fd
+++ b/Master/texmf-dist/tex/latex/crimson/TS1Crimson-TLF.fd
@@ -1,7 +1,15 @@
-%% Generated by autoinst on 2016/02/19
+%% Generated by autoinst on 2024/12/08
%%
\ProvidesFile{TS1Crimson-TLF.fd}
- [2016/02/19 (autoinst) Font definitions for TS1/Crimson-TLF.]
+ [2024/12/08 (autoinst) Font definitions for TS1/Crimson-TLF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
\expandafter\ifx\csname Crimson@scale\endcsname\relax
\let\Crimson@@scale\@empty
@@ -11,52 +19,100 @@
\DeclareFontFamily{TS1}{Crimson-TLF}{}
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{TS1}{Crimson-TLF}{sb}{n}{
+ <-> \Crimson@@scale Crimson-Semibold-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Crimson-TLF}{semibold}{n}{
+ <-> alias * Crimson-TLF/sb/n
+}{}
+
+\DeclareFontShape{TS1}{Crimson-TLF}{sb}{it}{
+ <-> \Crimson@@scale Crimson-SemiboldItalic-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Crimson-TLF}{semibold}{it}{
+ <-> alias * Crimson-TLF/sb/it
+}{}
+
+\DeclareFontShape{TS1}{Crimson-TLF}{sb}{sl}{
+ <-> ssub * Crimson-TLF/sb/it
+}{}
+
+\DeclareFontShape{TS1}{Crimson-TLF}{semibold}{sl}{
+ <-> ssub * Crimson-TLF/semibold/it
+}{}
+
+
+% ---- b = bold ----
+
\DeclareFontShape{TS1}{Crimson-TLF}{b}{n}{
<-> \Crimson@@scale Crimson-Bold-tlf-ts1
}{}
+\DeclareFontShape{TS1}{Crimson-TLF}{bold}{n}{
+ <-> alias * Crimson-TLF/b/n
+}{}
+
\DeclareFontShape{TS1}{Crimson-TLF}{b}{it}{
<-> \Crimson@@scale Crimson-BoldItalic-tlf-ts1
}{}
+\DeclareFontShape{TS1}{Crimson-TLF}{bold}{it}{
+ <-> alias * Crimson-TLF/b/it
+}{}
+
\DeclareFontShape{TS1}{Crimson-TLF}{b}{sl}{
- <-> ssub * Crimson-TLF/b/it
+ <-> ssub * Crimson-TLF/b/it
}{}
-\DeclareFontShape{TS1}{Crimson-TLF}{sb}{n}{
- <-> \Crimson@@scale Crimson-Semibold-tlf-ts1
+\DeclareFontShape{TS1}{Crimson-TLF}{bold}{sl}{
+ <-> ssub * Crimson-TLF/bold/it
}{}
-\DeclareFontShape{TS1}{Crimson-TLF}{sb}{it}{
- <-> \Crimson@@scale Crimson-SemiboldItalic-tlf-ts1
+
+% ---- m = regular ----
+
+\DeclareFontShape{TS1}{Crimson-TLF}{m}{it}{
+ <-> \Crimson@@scale Crimson-Italic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Crimson-TLF}{sb}{sl}{
- <-> ssub * Crimson-TLF/sb/it
+\DeclareFontShape{TS1}{Crimson-TLF}{regular}{it}{
+ <-> alias * Crimson-TLF/m/it
}{}
\DeclareFontShape{TS1}{Crimson-TLF}{m}{n}{
<-> \Crimson@@scale Crimson-Roman-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Crimson-TLF}{m}{it}{
- <-> \Crimson@@scale Crimson-Italic-tlf-ts1
+\DeclareFontShape{TS1}{Crimson-TLF}{regular}{n}{
+ <-> alias * Crimson-TLF/m/n
}{}
\DeclareFontShape{TS1}{Crimson-TLF}{m}{sl}{
- <-> ssub * Crimson-TLF/m/it
+ <-> ssub * Crimson-TLF/m/it
}{}
-\DeclareFontShape{TS1}{Crimson-TLF}{bx}{sl}{
- <-> ssub * Crimson-TLF/b/sl
+\DeclareFontShape{TS1}{Crimson-TLF}{regular}{sl}{
+ <-> ssub * Crimson-TLF/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{TS1}{Crimson-TLF}{bx}{it}{
+ <-> ssub * Crimson-TLF/b/it
}{}
\DeclareFontShape{TS1}{Crimson-TLF}{bx}{n}{
<-> ssub * Crimson-TLF/b/n
}{}
-\DeclareFontShape{TS1}{Crimson-TLF}{bx}{it}{
- <-> ssub * Crimson-TLF/b/it
+\DeclareFontShape{TS1}{Crimson-TLF}{bx}{sl}{
+ <-> ssub * Crimson-TLF/b/sl
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/crimson/TS1Crimson-TOsF.fd b/Master/texmf-dist/tex/latex/crimson/TS1Crimson-TOsF.fd
new file mode 100644
index 00000000000..2977e9802e2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/crimson/TS1Crimson-TOsF.fd
@@ -0,0 +1,79 @@
+%% Generated by autoinst on 2024/12/08
+%%
+\ProvidesFile{TS1Crimson-TOsF.fd}
+ [2024/12/08 (autoinst) Font definitions for TS1/Crimson-TOsF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname Crimson@scale\endcsname\relax
+ \let\Crimson@@scale\@empty
+\else
+ \edef\Crimson@@scale{s*[\csname Crimson@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{Crimson-TOsF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{TS1}{Crimson-TOsF}{m}{n}{
+ <-> \Crimson@@scale Crimson-Roman-tosf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Crimson-TOsF}{regular}{n}{
+ <-> alias * Crimson-TOsF/m/n
+}{}
+
+\DeclareFontShape{TS1}{Crimson-TOsF}{m}{it}{
+ <-> \Crimson@@scale Crimson-Italic-tosf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Crimson-TOsF}{regular}{it}{
+ <-> alias * Crimson-TOsF/m/it
+}{}
+
+\DeclareFontShape{TS1}{Crimson-TOsF}{m}{sl}{
+ <-> ssub * Crimson-TOsF/m/it
+}{}
+
+\DeclareFontShape{TS1}{Crimson-TOsF}{regular}{sl}{
+ <-> ssub * Crimson-TOsF/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{TS1}{Crimson-TOsF}{b}{it}{
+ <-> \Crimson@@scale Crimson-BoldItalic-tosf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Crimson-TOsF}{bold}{it}{
+ <-> alias * Crimson-TOsF/b/it
+}{}
+
+\DeclareFontShape{TS1}{Crimson-TOsF}{b}{sl}{
+ <-> ssub * Crimson-TOsF/b/it
+}{}
+
+\DeclareFontShape{TS1}{Crimson-TOsF}{bold}{sl}{
+ <-> ssub * Crimson-TOsF/bold/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{TS1}{Crimson-TOsF}{bx}{sl}{
+ <-> ssub * Crimson-TOsF/b/sl
+}{}
+
+\DeclareFontShape{TS1}{Crimson-TOsF}{bx}{it}{
+ <-> ssub * Crimson-TOsF/b/it
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/crimson/crimson.sty b/Master/texmf-dist/tex/latex/crimson/crimson.sty
index b0b76b79382..b8f85b0b867 100644
--- a/Master/texmf-dist/tex/latex/crimson/crimson.sty
+++ b/Master/texmf-dist/tex/latex/crimson/crimson.sty
@@ -1,5 +1,5 @@
\ProvidesPackage{crimson}[%
- 2022/09/30 (Bob Tennent) Supports crimson fonts for all LaTeX engines. ]
+ 2024/12/08 (Bob Tennent) Supports crimson fonts for all LaTeX engines. ]
\RequirePackage{ifxetex,ifluatex,textcomp}
@@ -13,16 +13,23 @@
\fi\fi
\newcommand*{\Crimson@scale}{1}
+
\RequirePackage{xkeyval}
\DeclareOptionX{scaled}{\renewcommand*{\Crimson@scale}{#1}}
\DeclareOptionX{scale}{\renewcommand*{\Crimson@scale}{#1}}
+
\newif\ifcrimson@semibold \crimson@semiboldfalse
+\newif\ifcrimson@lining \crimson@liningtrue
\DeclareOptionX{type1}{\crimson@otffalse}
\DeclareOptionX{semibold}{\crimson@semiboldtrue}
\DeclareOptionX{sb}{\crimson@semiboldtrue}
\DeclareOptionX{bold}{\crimson@semiboldfalse}
+\DeclareOptionX{lining}{\crimson@liningtrue}
+\DeclareOptionX{lf}{\crimson@liningtrue}
+\DeclareOptionX{oldstyle}{\crimson@liningfalse}
+\DeclareOptionX{osf}{\crimson@liningfalse}
\ProcessOptionsX\relax
@@ -35,12 +42,27 @@
\ifcrimson@otf
\def\crimson@boldstyle{Bold}
\ifcrimson@semibold\def\crimson@boldstyle{Semibold}\fi
+ \ifcrimson@lining
+ \def\crimson@figurestyle{Lining}
+ \else
+ \def\crimson@figurestyle{OldStyle}
+ \fi
+ \def\crimson@figurealign{Monospaced}
+
\else % type1
\def\bfseries@rm{b}
\ifcrimson@semibold\def\bfseries@rm{sb}\fi
+ \ifcrimson@lining
+ \def\crimson@figurestyle{LF}
+ \else
+ \def\crimson@figurestyle{OsF}
+ \fi
+ \def\crimson@figurealign{T}
+
+
\def\mdseries@rm{m}
\fi
@@ -52,13 +74,15 @@
Extension = .otf ,
}
\setmainfont
- [ UprightFont = *-Roman ,
+ [ Numbers = {\crimson@figurealign,\crimson@figurestyle},
+ UprightFont = *-Roman ,
ItalicFont = *-Italic ,
BoldFont = *-\crimson@boldstyle ,
BoldItalicFont = *-\crimson@boldstyle Italic ]
{Crimson}
\newfontfamily\crimson
- [ UprightFont = *-Roman ,
+ [ Numbers = {\crimson@figurealign,\crimson@figurestyle},
+ UprightFont = *-Roman ,
ItalicFont = *-Italic ,
BoldFont = *-\crimson@boldstyle ,
BoldItalicFont = *-\crimson@boldstyle Italic ]
@@ -69,13 +93,29 @@
BoldFont = *-Semibold ,
BoldItalicFont = *-SemiboldItalic ]
{Crimson}
+ \newfontfamily\crimsonoldstyle
+ [ Numbers = {\crimson@figurealign,OldStyle},
+ UprightFont = *-Roman ,
+ ItalicFont = *-Italic ,
+ BoldFont = *-\crimson@boldstyle ,
+ BoldItalicFont = *-\crimson@boldstyle Italic ]
+ {Crimson}
+ \newfontfamily\crimsonlining
+ [ Numbers = {\crimson@figurealign,Lining},
+ UprightFont = *-Roman ,
+ ItalicFont = *-Italic ,
+ BoldFont = *-\crimson@boldstyle ,
+ BoldItalicFont = *-\crimson@boldstyle Italic ]
+ {Crimson}
\else % type1
- \def\crimson@family{Crimson-TLF}
+ \def\crimson@family{Crimson-\crimson@figurealign\crimson@figurestyle}
\renewcommand*\rmdefault{\crimson@family}
- \newcommand*\crimson{\fontfamily{\crimson@family}\selectfont}
+ \def\crimson{\fontfamily{\crimson@family}\selectfont}
\def\crimsonsemibold{\fontfamily{\crimson@family}\fontseries{sb}\selectfont}
+ \def\crimsonoldstyle{\fontfamily{Crimson-TOsF}\selectfont}
+ \def\crimsonlining{\fontfamily{Crimson-TLF}\selectfont}
\fi
diff --git a/Master/texmf-dist/tex/latex/crossword/cwpuzzle.sty b/Master/texmf-dist/tex/latex/crossword/cwpuzzle.sty
index 1c5b41e7f65..c29f62cd813 100644
--- a/Master/texmf-dist/tex/latex/crossword/cwpuzzle.sty
+++ b/Master/texmf-dist/tex/latex/crossword/cwpuzzle.sty
@@ -21,8 +21,8 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
\def\filename{cwpuzzle.dtx}
-\def\fileversion{1.11}
-\def\filedate{2022/09/13}
+\def\fileversion{1.13}
+\def\filedate{2025/01/23}
\let\docversion=\fileversion
\let\docdate=\filedate
\typeout{%
@@ -38,11 +38,11 @@
%%
%%
%% Author: Gerd Neugebauer
-%% Im Lerchels\"ohl 5
-%% 64521 Gro\ss-Gerau
+%% Brechklinge 10
+%% 69256 Mauer
%% Mail: gene@gerd-neugebauer.de
%%
-%% Copyright (c) 1995-2022 Gerd Neugebauer
+%% Copyright (c) 1995-2025 Gerd Neugebauer
%%
%% cwpuzzle.dtx is distributed in the hope that it will be useful,
%% but WITHOUT ANY WARRANTY. No author or distributor accepts
@@ -333,6 +333,7 @@
\begingroup
\catcode`\|=13
\gdef\Sudoku{\begin{Puzzle}{9}{9}%
+ \def\PuzzleContent{}
\let\Puzzle@pipe=|%
\def\PPa{\Puzzle@pipe[][fS]}%
\def|##1{\ifx##1*\let\next\PPa\else
diff --git a/Master/texmf-dist/tex/latex/cs-techrep/cs-techrep.cls b/Master/texmf-dist/tex/latex/cs-techrep/cs-techrep.cls
index d84b85a3bca..842efdcfcb1 100644
--- a/Master/texmf-dist/tex/latex/cs-techrep/cs-techrep.cls
+++ b/Master/texmf-dist/tex/latex/cs-techrep/cs-techrep.cls
@@ -2,12 +2,25 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{cs-techrep}[2024/04/10 Technical Reports in Computer Science and Software Engineering v0.2]
+\ProvidesClass{cs-techrep}[2025/01/16 TechReps in CS and SWE v0.6]
+
+\newcounter{cstechrep@subfigtracker}
+\newcounter{cstechrep@subcaptiontracker}
\newcounter{cstechrep@pbalancetracker}
\newcounter{cstechrep@flushendtracker}
-\DeclareOption{onecolumn}{\OptionNotUsed} % IEEE option onecolumn will be ignored
+
+\DeclareOption{subfig}{
+ \setcounter{cstechrep@subfigtracker}{1}
+ \typeout{cs-techrep class: subfig option is set (use subfloat command).}
+}
+\DeclareOption{subcaption}{
+ \setcounter{cstechrep@subcaptiontracker}{1}
+ \typeout{cs-techrep class: subcaption option is set (use subfigure command).}
+}
+
+\DeclareOption{onecolumn}{\OptionNotUsed}
\DeclareOption{pbalance}{
\setcounter{cstechrep@pbalancetracker}{1}
@@ -19,7 +32,7 @@
}
\DeclareOption*{%
- \PassOptionsToClass{\CurrentOption}{IEEEtran}% recommended IEEE options: conference,a4paper
+ \PassOptionsToClass{\CurrentOption}{IEEEtran}
}
\ProcessOptions\relax
@@ -29,21 +42,22 @@
\makeatletter
-\newcommand*\DefcstechrepVar[1]{\@namedef{cstechrep#1}##1{\global\@namedef{cstechrep#1}{##1}}}
+\newcommand*\DefcstechrepVar[1]{%
+\@namedef{cstechrep#1}##1{\global\@namedef{cstechrep#1}{##1}}}
\makeatother
\DefcstechrepVar{AuthorListTex}
\DefcstechrepVar{AuthorListBib} % Use *and* as author separator!
\DefcstechrepVar{TitleTex}
\DefcstechrepVar{TitleBib}
-\DefcstechrepVar{Department} % e.g., Department of Electrical Engineering, Media and Computer Science
-\DefcstechrepVar{Institution} % e.g., Ostbayerische Technische Hochschule Amberg-Weiden
+\DefcstechrepVar{Department} % e.g., Department of Computer Science
+\DefcstechrepVar{Institution} % e.g., OTH Amberg-Weiden
\DefcstechrepVar{Address} % e.g., Amberg, Germany
-\DefcstechrepVar{Series} % e.g., Technical Reports
-\DefcstechrepVar{Year} % e.g., 2023
+\DefcstechrepVar{Type} % e.g., Technical Report
+\DefcstechrepVar{Year} % e.g., 2024
\DefcstechrepVar{Title}
-\DefcstechrepVar{Month} % e.g., 6 (for June)
-\DefcstechrepVar{Number} % e.g., CL-2023-42
+\DefcstechrepVar{Month} % e.g., 10 (for October)
+\DefcstechrepVar{Number} % e.g., CL-2024-42
\DefcstechrepVar{Lang} % e.g., english = en-US (or: ngerman = DE)
\RequirePackage{upquote}
@@ -51,8 +65,8 @@
\RequirePackage[ngerman,main=english]{babel}
\addto\extrasenglish{\languageshorthands{ngerman}\useshorthands{"}}
-\RequirePackage{lmodern} % CM variant with scalable font (to prevent "pdfTeX error (font expansion): auto expansion is only possible with scalable")
-\RequirePackage{times} % Times New Roman, because IEEE is based on Times (and not CM/lmodern), however, package times is not a scalable font, thus, lmodern is required additionally and must be loaded before times
+\RequirePackage{lmodern}
+\RequirePackage{times}
\RequirePackage[hyphens]{url}
@@ -69,17 +83,18 @@
\RequirePackage[T1]{fontenc}
\RequirePackage[
- babel=true, % Enable language-specific kerning. Take language-settings from the languge of the current document (see Section 6 of microtype.pdf)
+ babel=true, % Enable language-specific kerning
expansion=alltext,
- protrusion=alltext-nott, % Ensure that at listings, there is no change at the margin of the listing
+ protrusion=alltext-nott, % Ensure no changes at the edge of the listing.
nopatch=eqnum, % fix unable to apply patch eqnum
- final % Always enable microtype, even if in draft mode. This helps finding bad boxes quickly.
- % In the standard configuration, this template is always in the final mode, so this option only makes a difference if "pros" use the draft mode
+ final % Always enable microtype, even if in draft mode.
+ % This helps finding bad boxes quickly. In the standard
+ % configuration, this template is always in the final mode, so
+ % this option only makes a difference if "pros" use the draft mode.
]{microtype}
\DisableLigatures{encoding = T1, family = tt* }
-
\RequirePackage{graphicx}
\RequirePackage{ccicons}
@@ -88,7 +103,9 @@
\RequirePackage[cmyk, table]{xcolor}
-\RequirePackage[nolist]{acronym}
+\RequirePackage{relsize} % allows for \textsmaller{..}
+
+\RequirePackage[nolist,smaller]{acronym}
\RequirePackage{listings}
@@ -98,31 +115,31 @@
\lstdefinelanguage{json}{
- basicstyle=\normalfont\ttfamily,
- commentstyle=\color{eclipseStrings}, % style of comment
- stringstyle=\color{eclipseKeywords}, % style of strings
- numbers=left,
- numberstyle=\scriptsize,
- stepnumber=1,
- numbersep=8pt,
- showstringspaces=false,
- breaklines=true,
- frame=lines,
- % backgroundcolor=\color{gray}, %only if you like
- string=[s]{"}{"},
- comment=[l]{:\ "},
- morecomment=[l]{:"},
- literate=
- *{0}{{{\color{numb}0}}}{1}
- {1}{{{\color{numb}1}}}{1}
- {2}{{{\color{numb}2}}}{1}
- {3}{{{\color{numb}3}}}{1}
- {4}{{{\color{numb}4}}}{1}
- {5}{{{\color{numb}5}}}{1}
- {6}{{{\color{numb}6}}}{1}
- {7}{{{\color{numb}7}}}{1}
- {8}{{{\color{numb}8}}}{1}
- {9}{{{\color{numb}9}}}{1}
+ basicstyle=\normalfont\ttfamily,
+ commentstyle=\color{eclipseStrings}, % style of comment
+ stringstyle=\color{eclipseKeywords}, % style of strings
+ numbers=left,
+ numberstyle=\scriptsize,
+ stepnumber=1,
+ numbersep=8pt,
+ showstringspaces=false,
+ breaklines=true,
+ frame=lines,
+ % backgroundcolor=\color{gray}, %only if you like
+ string=[s]{"}{"},
+ comment=[l]{:\ "},
+ morecomment=[l]{:"},
+ literate=
+ *{0}{{{\color{numb}0}}}{1}
+ {1}{{{\color{numb}1}}}{1}
+ {2}{{{\color{numb}2}}}{1}
+ {3}{{{\color{numb}3}}}{1}
+ {4}{{{\color{numb}4}}}{1}
+ {5}{{{\color{numb}5}}}{1}
+ {6}{{{\color{numb}6}}}{1}
+ {7}{{{\color{numb}7}}}{1}
+ {8}{{{\color{numb}8}}}{1}
+ {9}{{{\color{numb}9}}}{1}
}
\lstset{
@@ -181,7 +198,7 @@
\RequirePackage{booktabs}
-\RequirePackage{paralist}
+\RequirePackage[alwaysadjust]{paralist}
\RequirePackage[
@@ -214,7 +231,7 @@
\let\blx@rerun@biber\relax
\makeatother
-\addbibresource{selfref.bib} % selfref.bib needs to be generated, containing a bibentry with key selfref
+\addbibresource{selfref.bib}
\DeclareBibliographyCategory{selfref}
\addtocategory{selfref}{selfref}
@@ -230,7 +247,6 @@
{\usebibmacro{prenote}}
{%
\let\oldabx@bibmonth\abx@bibmonth%
- %\let\abx@bibmonth\blx@imc@biblstring\typeout{CHG: abx@bibmonth \meaning\abx@bibmonth}% false: not abbreviated; but nowork
\setkeys{blx@opt@pre}{dateabbrev=false}% nowork
\mkbibmonth{\thefield{month}}%
\let\abx@bibmonth\oldabx@bibmonth% restore
@@ -239,14 +255,10 @@
{\usebibmacro{postnote}}
\makeatother
-\RequirePackage{pdfcomment}
-
-\newcommand{\commentontext}[2]{\colorbox{yellow!60}{#1}\pdfcomment[color={0.234 0.867 0.211},hoffset=-6pt,voffset=10pt,opacity=0.5]{#2}}
-\newcommand{\commentatside}[1]{\pdfcomment[color={0.045 0.278 0.643},icon=Note]{#1}}
-
-\newcommand{\todo}[1]{\commentatside{#1}}
-
-\newcommand{\TODO}[1]{\commentatside{#1}}
+%% Enable nice TODO comments
+\RequirePackage[colorinlistoftodos,prependcaption,textsize=tiny]{todonotes}
+\newcommand{\TODO}[1]{\todo[%
+linecolor=red,backgroundcolor=red!25,bordercolor=red]{#1}}
\RequirePackage{stfloats}
\fnbelowfloat
@@ -308,7 +320,6 @@
\newcommand{\hydash}{\penalty\@M-\hskip\z@skip}
\makeatother
-
\input glyphtounicode
\pdfgentounicode=1
@@ -316,7 +327,7 @@
\RequirePackage{pdflscape}
\RequirePackage{afterpage}
-\RequirePackage[shortcuts]{extdash} % Use \-/ for a breakable dash that does not prevent the remainer of the word to be hyphenated
+\RequirePackage[hyperxmp=false,lang=English]{doclicense}
\makeatletter
\def\ps@IEEEtitlepagestyle{
@@ -327,8 +338,10 @@
{\footnotesize
\begin{minipage}{0.8\textwidth}
\centering
- % Creative Commons / Open Access:
- \href{https://creativecommons.org/licenses/by/4.0/}{\ccby{} This work is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) License.}
+ % License based on doclicense package:
+ \href{\doclicenseURL}{\doclicenseIcon{}
+ This work is licensed under a \doclicenseLongNameRef{}
+ (\doclicenseNameRef{}) license.}
% Citation advice:
\\Please cite as: \fullcite{selfref}.
\end{minipage}
@@ -358,7 +371,18 @@
\cstechrepAddress
}}
-\IEEEspecialpapernotice{\cstechrepSeries: \cstechrepNumber, \citemonth{selfref} \cstechrepYear}
+\IEEEspecialpapernotice{\cstechrepType: \cstechrepNumber,
+\citemonth{selfref} \cstechrepYear}
+
+\ifnum\value{cstechrep@subfigtracker}=1
+ \typeout{cs-techrep class: load subfig package (use subfloat command).}
+ \RequirePackage[caption=false,font=footnotesize]{subfig}
+\fi
+\ifnum\value{cstechrep@subcaptiontracker}=1
+ \typeout{cs-techrep class: load subcaption package (use subfigure command).}
+ \RequirePackage{subcaption}
+ \captionsetup[subfigure]{labelformat=parens,font=footnotesize}
+\fi
\ifnum\value{cstechrep@pbalancetracker}=1
\typeout{cs-techrep class: load pbalance package.}
@@ -369,6 +393,9 @@
\RequirePackage{flushend}
\fi
+
+\RequirePackage[shortcuts]{extdash}
+
\endinput
%%
%% End of file `cs-techrep.cls'.
diff --git a/Master/texmf-dist/tex/latex/csthm/csthm.sty b/Master/texmf-dist/tex/latex/csthm/csthm.sty
index e12fbdc192e..5296a69c45d 100644
--- a/Master/texmf-dist/tex/latex/csthm/csthm.sty
+++ b/Master/texmf-dist/tex/latex/csthm/csthm.sty
@@ -21,9 +21,9 @@
%% version 2008/05/04 or later.
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-\ProvidesPackage{csthm}
- [2024/08/31 v1.2 Theorem Environments for Computer Science]
+\ProvidesPackage{csthm}[2025/01/16 v1.3 Theorem Environments for Computer Science]
\newif\if@csthm@loadcleveref
+
\DeclareOption{cleveref}{\@csthm@loadclevereftrue}
\ProcessOptions\relax
@@ -32,115 +32,151 @@
\RequirePackage{amsthm}
\RequirePackage{enumitem}
\RequirePackage{thmtools}
+\RequirePackage{xcolor}
+
+\providecommand{\accentcolor}{blue!50!black}
+\providecommand{\setaccentcolor}[1]{\renewcommand{\accentcolor}{#1}}
+
+\providecommand{\commonfont}{\color{\accentcolor}\sffamily}
+\providecommand{\commonsymb}{\ensuremath{\color{\accentcolor}\lrcorner}}
\if@csthm@loadcleveref
-\AtBeginDocument{%
-\@ifpackageloaded{hyperref}{%
-\RequirePackage{cleveref}
-}{%
-\PackageWarning{csthm}{The 'cleveref' option was set, but 'hyperref' is not loaded. Skipping 'cleveref' loading.}
-}%
-}
+ \AtBeginDocument{%
+ \@ifpackageloaded{hyperref}{%
+ \RequirePackage{cleveref}%
+ }{%
+ \PackageWarning{csthm}{%
+ The 'cleveref' option was set, but 'hyperref' is not loaded.
+ Skipping 'cleveref' loading.%
+ }%
+ }%
+ }%
\fi
-
\declaretheoremstyle[
-spaceabove=\topsep,
-spacebelow=\topsep,
-headfont=\scshape,
-notefont=\scshape,
-bodyfont=\normalfont,
-postheadspace=5pt,
-numberwithin=section,
-qed=$\scriptstyle\star$,
-headpunct={.}
+ spaceabove=\topsep,
+ spacebelow=\topsep,
+ headfont=\commonfont\ensuremath{\scriptstyle\blacktriangleright}~,
+ notefont=\commonfont,
+ bodyfont=\normalfont,
+ postheadspace=5pt,
+ numberwithin=section,
+ qed=\commonsymb,
+ headpunct={.}
]{thmstyle}
\declaretheoremstyle[
-spaceabove=\topsep,
-spacebelow=\topsep,
-headfont=\bfseries,
-notefont=\bfseries,
-bodyfont=\normalfont,
-postheadspace=5pt,
-numberwithin=section,
-qed=$\scriptstyle\maltese$,
-headpunct={.}
+ spaceabove=\topsep,
+ spacebelow=\topsep,
+ headfont=\commonfont\ensuremath{\scriptstyle\blacksquare}~,
+ notefont=\commonfont,
+ bodyfont=\normalfont,
+ postheadspace=5pt,
+ numberwithin=section,
+ qed=\commonsymb,
+ headpunct={.}
]{defstyle}
\declaretheoremstyle[
-spaceabove=\topsep,
-spacebelow=\topsep,
-headfont=\itshape,
-notefont=\itshape,
-bodyfont=\normalfont,
-postheadspace=5pt,
-numberwithin=section,
-qed=$\scriptstyle\maltese$,
-headpunct={.}
+ spaceabove=\topsep,
+ spacebelow=\topsep,
+ headfont=\commonfont\ensuremath{\scriptstyle\vartriangleright}~,
+ notefont=\commonfont,
+ bodyfont=\normalfont,
+ postheadspace=5pt,
+ numberwithin=section,
+ qed=\commonsymb,
+ headpunct={.}
]{remarkstyle}
\declaretheoremstyle[
-spaceabove=\topsep,
-spacebelow=\topsep,
-headfont=\sffamily\scshape,
-notefont=\sffamily\scshape,
-bodyfont=\normalfont\sffamily,
-postheadspace=5pt,
-numberwithin=section,
-qed=$\scriptstyle\maltese$,
-headpunct={.}
+ spaceabove=\topsep,
+ spacebelow=\topsep,
+ headfont=\commonfont\ensuremath{\scriptstyle\square}~,
+ notefont=\commonfont,
+ bodyfont=\normalfont\sffamily,
+ postheadspace=5pt,
+ numberwithin=section,
+ qed=\commonsymb,
+ headpunct={.}
]{hltstyle}
+\declaretheoremstyle[
+ headfont=\commonfont,
+ notefont=\commonfont,
+ bodyfont=\normalfont,
+ postheadspace=5pt,
+ numbered=no,
+ headpunct={.},
+ qed=$\color{\accentcolor}\scriptstyle\blacktriangleleft$
+]{proofstyle}
\declaretheorem[style=thmstyle,name=Theorem]{theorem}
-\declaretheorem[style=defstyle,sibling=theorem]{fact}
\declaretheorem[style=thmstyle,sibling=theorem]{assumption}
+\declaretheorem[style=thmstyle,sibling=theorem]{axiom}
\declaretheorem[style=thmstyle,sibling=theorem]{claim}
\declaretheorem[style=thmstyle,sibling=theorem]{conjecture}
\declaretheorem[style=thmstyle,sibling=theorem]{corollary}
+\declaretheorem[style=thmstyle,sibling=theorem]{fact}
+\declaretheorem[style=thmstyle,sibling=theorem]{hypothesis}
\declaretheorem[style=thmstyle,sibling=theorem]{lemma}
\declaretheorem[style=thmstyle,sibling=theorem]{property}
\declaretheorem[style=thmstyle,sibling=theorem]{proposition}
+\declaretheorem[style=thmstyle,unnumbered,name=Theorem]{theorem*}
+\declaretheorem[style=thmstyle,unnumbered,name=Assumption]{assumption*}
+\declaretheorem[style=thmstyle,unnumbered,name=Axiom]{axiom*}
+\declaretheorem[style=thmstyle,unnumbered,name=Claim]{claim*}
+\declaretheorem[style=thmstyle,unnumbered,name=Conjecture]{conjecture*}
+\declaretheorem[style=thmstyle,unnumbered,name=Corollary]{corollary*}
+\declaretheorem[style=thmstyle,unnumbered,name=Fact]{fact*}
+\declaretheorem[style=thmstyle,unnumbered,name=Hypothesis]{hypothesis*}
+\declaretheorem[style=thmstyle,unnumbered,name=Lemma]{lemma*}
+\declaretheorem[style=thmstyle,unnumbered,name=Property]{property*}
+\declaretheorem[style=thmstyle,unnumbered,name=Proposition]{proposition*}
+
\declaretheorem[style=defstyle,sibling=theorem]{definition}
-\declaretheorem[style=defstyle,sibling=theorem]{example}
-\declaretheorem[style=defstyle,sibling=theorem]{exercise}
+\declaretheorem[style=defstyle,sibling=theorem]{notation}
\declaretheorem[style=defstyle,sibling=theorem]{problem}
-\declaretheorem[style=defstyle,sibling=theorem]{question}
+\declaretheorem[style=defstyle,sibling=theorem]{protocol}
+
+\declaretheorem[style=defstyle,unnumbered,name=Definition]{definition*}
+\declaretheorem[style=defstyle,unnumbered,name=Notation]{notation*}
+\declaretheorem[style=defstyle,unnumbered,name=Problem]{problem*}
+\declaretheorem[style=defstyle,unnumbered,name=Protocol]{protocol*}
+\declaretheorem[style=remarkstyle,sibling=theorem]{example}
\declaretheorem[style=remarkstyle,sibling=theorem]{note}
\declaretheorem[style=remarkstyle,sibling=theorem]{remark}
-\declaretheorem[style=remarkstyle,sibling=theorem]{solution}
-\declaretheorem[style=hltstyle,name=Important]{important}
-\declaretheorem[style=hltstyle]{highlight}
-\declaretheorem[style=hltstyle]{keypoint}
+\declaretheorem[style=remarkstyle,unnumbered,name=Example]{example*}
+\declaretheorem[style=remarkstyle,unnumbered,name=Note]{note*}
+\declaretheorem[style=remarkstyle,unnumbered,name=Remark]{remark*}
-\newlist{caseList}{enumerate}{1}
-\setlist[caseList]{label=\textbf{Case~\arabic*:},leftmargin=*}
+\declaretheorem[style=hltstyle,sibling=theorem]{exercise}
+\declaretheorem[style=hltstyle,sibling=theorem]{highlight}
+\declaretheorem[style=hltstyle,sibling=theorem]{important}
+\declaretheorem[style=hltstyle,sibling=theorem]{keypoint}
-\NewDocumentEnvironment{case}{O{}}{%
-\begin{caseList}[#1]%
-}{%
-\end{caseList}%
-}
+\declaretheorem[style=hltstyle,unnumbered,name=Exercise]{exercise*}
+\declaretheorem[style=hltstyle,unnumbered,name=Highlight]{highlight*}
+\declaretheorem[style=hltstyle,unnumbered,name=Important]{important*}
+\declaretheorem[style=hltstyle,unnumbered,name=Key Point]{keypoint*}
+\let\proof\relax
+\let\endproof\relax
+\declaretheorem[style=proofstyle]{proof}
-\newlist{axiomList}{enumerate}{1}
-\setlist[axiomList]{label=\textbf{Axiom~\Alph*:}, leftmargin=*}
+\newlist{caseList}{enumerate}{1}
+\setlist[caseList]{label=\textbf{Case~\arabic*:}, leftmargin=*}
-\NewDocumentEnvironment{axiom}{O{}}{%
-\begin{axiomList}[#1]%
+\NewDocumentEnvironment{case}{O{}}{%
+ \begin{caseList}[#1]%
}{%
-\end{axiomList}%
+ \end{caseList}%
}
-\renewcommand\qedsymbol{$\scriptstyle\blacksquare$}
-
-\providecommand{\accentcolor}{black}
+\renewcommand\qedsymbol{$\scriptstyle\color{\accentcolor}\blacksquare$}
\providecommand{\csthmpkg}{\textsf{csthm}}
\providecommand{\email}[1]{\href{mailto:#1}{\texttt{#1}}}
-
-\newcommand{\setaccentcolor}[1]{\renewcommand{\accentcolor}{#1}}
\endinput
%%
%% End of file `csthm.sty'.
diff --git a/Master/texmf-dist/tex/latex/csvsimple/csvsimple-l3.sty b/Master/texmf-dist/tex/latex/csvsimple/csvsimple-l3.sty
index 849aa79aece..3d8d1484b66 100644
--- a/Master/texmf-dist/tex/latex/csvsimple/csvsimple-l3.sty
+++ b/Master/texmf-dist/tex/latex/csvsimple/csvsimple-l3.sty
@@ -1,4 +1,4 @@
-%% The LaTeX package csvsimple - version 2.6.1 (2024/05/16)
+%% The LaTeX package csvsimple - version 2.7.0 (2024/09/27)
%% csvsimple-l3.sty: Simple LaTeX CSV file processing (LaTeX3)
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README.md
%%
\NeedsTeXFormat{LaTeX2e}[2023-11-01]
-\ProvidesExplPackage{csvsimple-l3}{2024/05/16}{2.6.1}
+\ProvidesExplPackage{csvsimple-l3}{2024/09/27}{2.7.0}
{LaTeX3 CSV file processing}
@@ -148,9 +148,6 @@
Therefore,~the~macro~#2 is~not~defined.
}
-\msg_new:nnn { csvsimple }{ empty-head }
- { File~'#1'~starts~with~an~empty~line~(empty~head)!.}
-
\msg_new:nnn { csvsimple }{ file-error }
{ File~'#1'~not~existent,~not~readable,~or~empty!}
@@ -167,6 +164,8 @@
{ Call~of~CSV-Sorter~failed! }
{ See~log~file~'\l__csvsim_csvsorter_log_str'. }
+\msg_new:nnn { csvsimple }{ data-missing }
+ { File~'#1'~does~not~contain~(accepted)~data~lines!~The~result~may~be~unpleasant.}
%---- core loop processing
@@ -227,18 +226,18 @@
\cs_new_protected_nopar:Npn \__csvsim_read_head:
{
- \__csvsim_read_line:
- \tl_if_eq:NNTF \csvline \c__csvsim_par_tl
+ \bool_do_while:nn
{
- \msg_error:nne { csvsimple }{ empty-head }{ \g__csvsim_filename_str }
+ \bool_lazy_or_p:nn { \tl_if_eq_p:NN \csvline \c__csvsim_par_tl }{ \tl_if_blank_p:o \csvline }
}
{
- \int_gzero:N \g_csvsim_columncount_int
- \__csvsim_scan_line:
- \bool_if:NT \g__csvsim_colnames_detection_bool
- {
- \int_step_function:nN \g_csvsim_columncount_int \__csvsim_process_head_name:n
- }
+ \__csvsim_read_line:
+ }
+ \int_gzero:N \g_csvsim_columncount_int
+ \__csvsim_scan_line:
+ \bool_if:NT \g__csvsim_colnames_detection_bool
+ {
+ \int_step_function:nN \g_csvsim_columncount_int \__csvsim_process_head_name:n
}
}
@@ -395,10 +394,15 @@
}
\__csvsim_set_colnames:
\seq_gclear:N \g__csvsim_colname_seq
- \bool_if:NF \g__csvsim_line_firstline_bool
+ \bool_if:NT \g__csvsim_line_firstline_bool
{
- \g__csvsim_hook_late_after_last_line_tl
+ \msg_warning:nne { csvsimple }{ data-missing }{ \g__csvsim_filename_str }
+ \bool_if:NT \g__csvsim_head_bool
+ {
+ \g__csvsim_hook_late_after_head_tl
+ }
}
+ \g__csvsim_hook_late_after_last_line_tl
\g__csvsim_hook_table_end_tl
\g__csvsim_hook_after_reading_tl
\bool_if:NT \g__csvsim_collect_data_bool
diff --git a/Master/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.sty b/Master/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.sty
index ecaba4a7b06..7db0c82117c 100644
--- a/Master/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.sty
+++ b/Master/texmf-dist/tex/latex/csvsimple/csvsimple-legacy.sty
@@ -1,4 +1,4 @@
-%% The LaTeX package csvsimple - version 2.6.1 (2024/05/16)
+%% The LaTeX package csvsimple - version 2.7.0 (2024/09/27)
%% csvsimple-legacy.sty: Simple LaTeX CSV file processing (LaTeX2e)
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README.md
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{csvsimple-legacy}[2024/05/16 version 2.6.1 LaTeX2e CSV file processing]
+\ProvidesPackage{csvsimple-legacy}[2024/09/27 version 2.7.0 LaTeX2e CSV file processing]
%---- check package
diff --git a/Master/texmf-dist/tex/latex/csvsimple/csvsimple.sty b/Master/texmf-dist/tex/latex/csvsimple/csvsimple.sty
index 01ccbb3f721..a9d549f76d8 100644
--- a/Master/texmf-dist/tex/latex/csvsimple/csvsimple.sty
+++ b/Master/texmf-dist/tex/latex/csvsimple/csvsimple.sty
@@ -1,4 +1,4 @@
-%% The LaTeX package csvsimple - version 2.6.1 (2024/05/16)
+%% The LaTeX package csvsimple - version 2.7.0 (2024/09/27)
%% csvsimple.sty: Simple LaTeX CSV file processing
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README.md
%%
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
-\ProvidesExplPackage{csvsimple}{2024/05/16}{2.6.1}
+\ProvidesExplPackage{csvsimple}{2024/09/27}{2.7.0}
{LaTeX CSV file processing}
\cs_if_exist:NT \c__csvsim_package_expl_bool
diff --git a/Master/texmf-dist/tex/latex/curve2e/curve2e-v161.sty b/Master/texmf-dist/tex/latex/curve2e/curve2e-v161.sty
index 7c57e784c9b..774cc351446 100644
--- a/Master/texmf-dist/tex/latex/curve2e/curve2e-v161.sty
+++ b/Master/texmf-dist/tex/latex/curve2e/curve2e-v161.sty
@@ -6,9 +6,11 @@
%%
%% curve2e.dtx (with options: `v161')
%%
-%% Copyright (C) 2005--2023 Claudio Beccari all rights reserved.
+%% Copyright (C) 2005--2024 Claudio Beccari all
+%% rights reserved.
%% License information appended
%%
+
\NeedsTeXFormat{LaTeX2e}[2016/01/01]
\ProvidesPackage{curve2e-v161}%
[2019/02/07 v.1.61 Extension package for pict2e]
@@ -599,28 +601,24 @@
{\@sPunX\unitlength}{\@sPunY\unitlength}%
\fi}
\def\VectorArc(#1)(#2)#3{\begingroup
-\@tdA=#3\p@ \ifdim\@tdA=\z@\else
- \@VArc(#1)(#2)%
-\fi
-\endgroup\ignorespaces}%
+\edef\tempG{#3}\@tdA=#3\p@
+\fptestF{#3=0}{\@VArc(#1)(#2)}}%
+
\def\VectorARC(#1)(#2)#3{\begingroup
-\@tdA=#3\p@
-\ifdim\@tdA=\z@\else
- \@VARC(#1)(#2)%
-\fi
-\endgroup\ignorespaces}%
+\edef\tempG{#3}\@tdA=#3\p@
+\fptestF{#3=0}{\@VArc(#1)(#2)}}%
+
\def\@VArc(#1)(#2){%
-\ifdim\@tdA>\z@
- \let\Segno+%
-\else
- \@tdA=-\@tdA \let\Segno-%
-\fi \Numero\@gradi\@tdA
-\ifdim\@tdA>360\p@
- \PackageWarning{curve2e}{The arc aperture is \@gradi\space degrees
- and gets reduced\MessageBreak%
- to the range 0--360 taking the sign into consideration}%
- \@whiledim\@tdA>360\p@\do{\advance\@tdA-360\p@}%
-\fi
+\fptest{\tempG>\z@}{\let\Segno+}%
+ {\edef\tempG={-\tempG}\let\Segno-}%
+\fptestT{\tempG>360}{%
+\PackageWarning{curve2e}{The arc aperture is \tempG\space degrees
+ and gets reduced^^J%
+ to the range 0--360 taking the sign into
+ consideration}%
+ \edef\tempG{\Modulo{\tempG}{360}}}%
+\@tdA=\tempG\p@
+\Numero\@gradi\@tdA
\SubVect#1from#2to\@V \ModOfVect\@V to\@Raggio \CopyVect#2to\@pPun
\@tdE=\pIIe@FAW\@wholewidth \@tdE=\pIIe@FAL\@tdE
\DividE\@tdE by \@Raggio\unitlength to\DeltaGradi
@@ -629,13 +627,13 @@
\@tdD=\ifx\Segno--\fi\@gradi\p@ \Numero\@tempa\@tdD
\DirFromAngle\@tempa to\@Dir
\MultVect\@V by\@Dir to\@sPun
-\edef\@tempA{\ifx\Segno-\m@ne\else\@ne\fi}%
+\edef\@tempA{\ifx\Segno--\@ne\fi}%
\MultVect\@sPun by 0,\@tempA to\@vPun
\DirOfVect\@vPun to\@Dir
\AddVect\@sPun and #1 to \@sPun
\GetCoord(\@sPun)\@tdX\@tdY
\@tdD\ifx\Segno--\fi\DeltaGradi\p@
-\@tdD=.5\@tdD \Numero\DeltaGradi\@tdD
+\@tdD=0.5\@tdD \Numero\DeltaGradi\@tdD
\DirFromAngle\DeltaGradi to\@Dird
\MultVect\@Dir by*\@Dird to\@Dir
\GetCoord(\@Dir)\@xnum\@ynum
@@ -643,20 +641,20 @@
\@tdE =\ifx\Segno--\fi\DeltaGradi\p@
\advance\@tdA -\@tdE \Numero\@gradi\@tdA
\CopyVect#1to\@Cent \GetCoord(\@pPun)\@pPunX\@pPunY
-\@@Arc
-\strokepath\ignorespaces}%
+\@@Arc\strokepath\endgroup\ignorespaces}%
+
\def\@VARC(#1)(#2){%
-\ifdim\@tdA>\z@
- \let\Segno+%
-\else
- \@tdA=-\@tdA \let\Segno-%
-\fi \Numero\@gradi\@tdA
-\ifdim\@tdA>360\p@
- \PackageWarning{curve2e}{The arc aperture is \@gradi\space degrees
- and gets reduced\MessageBreak%
- to the range 0--360 taking the sign into consideration}%
- \@whiledim\@tdA>360\p@\do{\advance\@tdA-360\p@}%
-\fi
+\fptest{\tempG>\z@}{\let\Segno+}%
+ {\edef\tempG={-\tempG}\let\Segno-}%
+\@tdA=\tempG\p@
+\Numero\@gradi\@tdA
+\fptestT{\tempG>360}{%
+ \PackageWarning{curve2e}{The arc aperture is \tempG\space degrees
+ and gets reduced^^J%
+ to the range 0--360 taking the sign into
+ consideration}%
+ \edef\tempG{\Modulo{\tempG}{360}}%
+}
\SubVect#1from#2to\@V \ModOfVect\@V to\@Raggio \CopyVect#2to\@pPun
\@tdE=\pIIe@FAW\@wholewidth \@tdE=0.8\@tdE
\DividE\@tdE by \@Raggio\unitlength to\DeltaGradi
@@ -807,6 +805,7 @@
\PackageWarning{curve2e}{%
Curve specifications must contain at least two nodes!\MessageBreak
Please, control your Curve specifications\MessageBreak}}}
+
\def\@Curve(#1)<#2>{%
\CurveTo#1WithDir{#2}%
\@ifnextchar\lp@r\@Curve{%
@@ -886,15 +885,17 @@
%%
-%% Distributable under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
+%% Distributable under the LaTeX Project Public
+%% License, version 1.3c or higher (your choice).
+%% The latest version of this license is at:
+%% http://www.latex-project.org/lppl.txt
%%
%% This work is "maintained"
%%
-%% This work consists of file curve2e.dtx, and the derived files
-%% curve2e.sty and curve2e.pdf, plus the auxiliary derived files
-%% README.txt and curve2e-v161.sty.
+%% This work consists of file curve2e.dtx, and the
+%% derived files curve2e.sty and curve2e.pdf, plus
+%% the auxiliary derived files README.txt and
+%% curve2e-v161.sty.
%%
%%
%% End of file `curve2e-v161.sty'.
diff --git a/Master/texmf-dist/tex/latex/curve2e/curve2e.sty b/Master/texmf-dist/tex/latex/curve2e/curve2e.sty
index 0c3ae3fe754..ed09f467d23 100644
--- a/Master/texmf-dist/tex/latex/curve2e/curve2e.sty
+++ b/Master/texmf-dist/tex/latex/curve2e/curve2e.sty
@@ -6,12 +6,14 @@
%%
%% curve2e.dtx (with options: `package')
%%
-%% Copyright (C) 2005--2023 Claudio Beccari all rights reserved.
+%% Copyright (C) 2005--2024 Claudio Beccari all
+%% rights reserved.
%% License information appended
%%
\NeedsTeXFormat{LaTeX2e}[2019/01/01]
\ProvidesPackage{curve2e}%
- [2023-07-04 v.2.3.1 Extension package for pict2e]
+[2024-11-13 v.2.6.0 Extension package for pict2e]
+
\IfFileExists{xfp.sty}{%
\RequirePackage{graphicx,color}
\RequirePackageWithOptions{pict2e}[2014/01/01]
@@ -35,11 +37,21 @@
\ExplSyntaxOn
\AtBeginDocument{%
\ProvideExpandableDocumentCommand\fptest{m m m}{%
- \fp_compare:nTF{#1}{#2}{#3}\ignorespaces}
+ \fp_compare:nTF{#1}{#2}{#3}}
+\ProvideExpandableDocumentCommand\fptestT{m m}{%
+ \fp_compare:nTF{#1}{#2}{\relax}}
+\ProvideExpandableDocumentCommand\fptestF{m m}{%
+ \fp_compare:nTF{#1}{\relax}{#2}}
\ProvideExpandableDocumentCommand\fpdowhile{m m}{%
- \fp_do_while:nn{#1}{#2}\ignorespaces}
+ \fp_do_while:nn{#1}{#2}}
\ProvideExpandableDocumentCommand\fpwhiledo{m m}{%
- \fp_while_do:nn{#1}{#2}\ignorespaces}
+ \fp_while_do:nn{#1}{#2}}
+\ProvideExpandableDocumentCommand\Modulo{m m}{%
+ \inteval{\int_mod:nn{#1}{#2}}}
+\ProvideExpandableDocumentCommand\Ifodd{m m m}{%
+ \int_if_odd:nTF{#1}{#2}{#3}}
+\ProvideExpandableDocumentCommand\Ifequal{m m m m}%
+ {\str_if_eq:eeTF{#1}{#2}{#3}{#4}}
}
\ExplSyntaxOff
@@ -259,44 +271,73 @@
\ignorespaces}}
\def\@picture(#1,#2)(#3,#4){%
- \edef\pict@urcorner{#1,#2}% New statement
- \edef\pict@llcorner{#3,#4}% New statement
+ \edef\pict@dimen{#1,#2} % New 2.4.0
+ \edef\pict@offset{#3,#4}% New 2.4.0
\@picht#2\unitlength
\setbox\@picbox\hb@xt@#1\unitlength\bgroup
\hskip -#3\unitlength
\lower #4\unitlength\hbox\bgroup
\ignorespaces}
-\def\Gr@phGrid(#1,#2){\bgroup\textcolor{red}{\linethickness{.1\p@}%
-\RoundUp#1modulo10to\@GridWd \RoundUp#2modulo10to\@GridHt
-\@tempcnta=\@GridWd \divide\@tempcnta10\relax \advance\@tempcnta\@ne
-\multiput(0,0)(10,0){\@tempcnta}{\line(0,1){\@GridHt}}%
-\@tempcnta=\@GridHt \divide\@tempcnta10\advance\@tempcnta\@ne
-\multiput(0,0)(0,10){\@tempcnta}{\line(1,0){\@GridWd}}\thinlines}%
-\egroup\ignorespaces}
-\NewDocumentCommand\AutoGrid{d() d()}{\bgroup%
-\put(\pict@llcorner){\expandafter\Gr@phGrid\expandafter(\pict@urcorner)}%
+\newif\ifinnerlines \let\ifinnerlines\iftrue
+\def\noinnerlines{\let\ifinnerlines\iffalse}
+
+\newcommand\griglia[2]{%
+\linethickness{#1\p@}%
+\edef\ggllx{\Goffx}
+\fpdowhile{\ggllx!>\GridWd}{%
+\fptest{\ggllx=\fpeval{#2*(round(\ggllx/#2,0))}}%
+{\segment(\ggllx,\Goffy)(\ggllx,\GridHt)}{\relax}%
+\edef\ggllx{\fpeval{\ggllx+#2}}}%
+\edef\gglly{\Goffy}
+\fpdowhile{\gglly!>\GridHt}{%
+\fptest{\gglly=\fpeval{#2*(round(\gglly/#2,0))}}%
+{\segment(\Goffx,\gglly)(\GridWd,\gglly)}{\relax}
+\edef\gglly{\fpeval{\gglly+#2}}}}
+
+\NewDocumentCommand\Gr@phGrid{d() d()}{\bgroup
+\color{\GridColor}
+\edef\Gdim{#1}\edef\Goff{#2}
+\GetCoord(\Gdim)\Gllx\Glly
+\GetCoord(\Goff)\Goffx\Goffy
+\edef\GridWd{\fpeval{\Gllx+\Goffx}}%
+\edef\GridHt{\fpeval{\Glly+\Goffy}}%
+\griglia{1.0}{10}
+\ifinnerlines
+ \griglia{0.70}{5}%
+ \unless\ifdim \unitlength < 1mm
+ \griglia{0.70}{5}%
+ \griglia{0.35}{1}%
+ \fi
+\fi
+\egroup
+\ignorespaces}
+
+\NewDocumentCommand\AutoGrid%
+{D(){\pict@dimen} D(){\pict@offset} O{cyan!50!white}}{\bgroup
+\def\GridColor{#3}%
+\put(0,0){\Gr@phGrid(#1)(#2)}%
\egroup\ignorespaces}
-\NewDocumentCommand\GraphGrid{r() d()}{%
-\IfValueTF{#2}{\put(#1){\Gr@phGrid(#2)}}%
- {\put(0,0){\Gr@phGrid(#1)}}}
+\NewDocumentCommand\GraphGrid%
+{R(){\pict@dimen} D(){\pict@offset} O{cyan!50!white}}
+{\bgroup
+\def\GridColor{#3}%
+\put(#2){\Gr@phGrid(#1)(#2)}%
+\egroup\ignorespaces}
\def\RoundUp#1modulo#2to#3{\edef#3{\fpeval{(ceil(#1/#2,0))*#2}}}%
\def\Integer#1.#2??{#1}%
-%%
-%%
-%%
-%%
+
\providecommand\Pbox{}
\newlength\PbDim
\RenewDocumentCommand\Pbox{D(){0,0} O{cc} m O{0.5ex} s D<>{0}}{%
\put(#1){\rotatebox{#6}{\makebox(0,0){%
\settowidth\PbDim{#2}%
\edef\Rapp{\fpeval{\PbDim/{1ex}}}%
-\fptest{\Rapp > 1.5}{\fboxsep=0.5ex}{\fboxsep=0.75ex}%
+\fptest{\Rapp>1.5}{\fboxsep=0.5ex}{\fboxsep=0.75ex}%
\IfBooleanTF{#5}{\fboxrule=0.4pt}{\fboxrule=0pt}%
-\fptest{#4 = 0sp}%
+\fptest{#4=0sp}%
{\makebox(0,0)[#2]{\fbox{$\relax#3\relax$}}}%
{\edef\Diam{\fpeval{(#4)/\unitlength}}%
\makebox(0,0){\circle*{\Diam}}%
@@ -311,9 +352,9 @@
\providecommand\legenda{}
\newbox\legendbox
-\RenewDocumentCommand\legenda{ D(){0,0} m}{\put(#1){%
+\RenewDocumentCommand\legenda{D(){0,0} m}{\put(#1){%
\setbox\legendbox\hbox{$\relax#2\relax$}%
- \edef\@tempA{\fpeval{(\wd\legendbox + 3\p@)/\unitlength}}%
+ \edef\@tempA{\fpeval{(\wd\legendbox+3\p@)/\unitlength}}%
\edef\@tempB{\fpeval{(\ht\legendbox+\dp\legendbox+3\p@)/\unitlength}}%
\framebox(\@tempA,\@tempB){\box\legendbox}}\ignorespaces}
@@ -323,24 +364,23 @@
\let\DivideFN\DividE
\def\MultiplY#1by#2to#3{\edef#3{\fpeval{#1 * #2}}}\relax
\let\MultiplyFN\MultiplY
-\unless\ifdefined\Numero
- \def\Numero#1#2{\edef#1{\fpeval{round(#2,6)}}\ignorespaces}%
-\fi
+\providecommand\Numero[2]{\edef#1{\fpeval{round(#2,6)}}}
\def\SinOf#1to#2{\edef#2{\fpeval{round(sind#1,6)}}}\relax
\def\CosOf#1to#2{\edef#2{\fpeval{round(cosd#1,6)}}}\relax
\def\ArgOfVect#1to#2{\GetCoord(#1){\t@X}{\t@Y}%
-\fptest{\t@X=\z@ && \t@Y=\z@}{\edef#2{0}%
-\PackageWarning{curve2e}{Null vector}{Check your data\MessageBreak
-Computations go on, but the results may be meaningless}}{%
-\edef#2{\fpeval{round(atand(\t@Y,\t@X),6)}}}\ignorespaces}
-\def\MakeVectorFrom#1#2to#3{\edef#3{#1,#2}\ignorespaces}%
+\fptest{\t@X=\z@&&\t@Y=\z@}{\edef#2{0}%
+\PackageWarning{curve2e}{Null vector}{%
+Check your data\MessageBreak
+Computations go on, but the results may be meaningless}%
+}{\edef#2{\fpeval{round(atand(\t@Y,\t@X),6)}}}%
+\ignorespaces}
+\def\MakeVectorFrom#1#2to#3{\edef#3{#1,#2}}%
\def\CopyVect#1to#2{\edef#2{#1}\ignorespaces}%
\def\ModOfVect#1to#2{\GetCoord(#1)\t@X\t@Y
-\edef#2{\fpeval{round(sqrt(\t@X*\t@X + \t@Y*\t@Y),6)}}%
-\ignorespaces}%
+\edef#2{\fpeval{round(sqrt(\t@X*\t@X + \t@Y*\t@Y),6)}}\ignorespaces}%
\def\DirOfVect#1to#2{\GetCoord(#1)\t@X\t@Y
\ModOfVect#1to\@tempa
-\fptest{\@tempa=\z@}{}{%
+\fptestF{\@tempa=\z@}{%
\edef\t@X{\fpeval{round(\t@X/\@tempa,6)}}%
\edef\t@Y{\fpeval{round(\t@Y/\@tempa,6)}}%
}\MakeVectorFrom\t@X\t@Y to#2\ignorespaces}%
@@ -350,10 +390,8 @@ Computations go on, but the results may be meaningless}}{%
\def\DistanceAndDirOfVect#1minus#2to#3and#4{%
\SubVect#2from#1to\@tempa
\ModAndDirOfVect\@tempa to#3and#4\ignorespaces}%
-\def\XpartOfVect#1to#2{%
-\GetCoord(#1)#2\@tempa\ignorespaces}%
-\def\YpartOfVect#1to#2{%
-\GetCoord(#1)\@tempa#2\ignorespaces}%
+\def\XpartOfVect#1to#2{\GetCoord(#1)#2\@tempa\ignorespaces}%
+\def\YpartOfVect#1to#2{\GetCoord(#1)\@tempa#2\ignorespaces}%
\def\DirFromAngle#1to#2{%
\edef\t@X{\fpeval{round(cosd#1,6)}}%
\edef\t@Y{\fpeval{round(sind#1,6)}}%
@@ -363,8 +401,7 @@ Computations go on, but the results may be meaningless}}{%
\edef\t@Y{\fpeval{#2 * \t@Y}}%
\MakeVectorFrom\t@X\t@Y to#3\ignorespaces}%
\def\ConjVect#1to#2{\GetCoord(#1)\t@X\t@Y
-\edef\t@Y{-\t@Y}%
-\MakeVectorFrom\t@X\t@Y to#2\ignorespaces}%
+\edef\t@Y{-\t@Y}\MakeVectorFrom\t@X\t@Y to#2\ignorespaces}%
\def\AddVect#1and#2to#3{\GetCoord(#1)\tu@X\tu@Y
\GetCoord(#2)\td@X\td@Y
\edef\t@X{\fpeval{\tu@X + \td@X}}%
@@ -378,90 +415,100 @@ Computations go on, but the results may be meaningless}}{%
\def\ModAndAngleOfVect#1to#2and#3{\ModOfVect#1to#2\relax
\ArgOfVect#1to#3\ignorespaces}
\newcount\MV@C
-\NewDocumentCommand\Multvect{m s m s m}{%
-\MV@C=0
-\ModAndAngleOfVect#1to\MV@uM and\MV@uA
+\NewDocumentCommand\Multvect{m s m s m}%
+{\ModAndAngleOfVect#1to\MV@uM and\MV@uA
\ModAndAngleOfVect#3to\MV@dM and\MV@dA
-\IfBooleanT{#2}{\MV@C=1}\relax
-\IfBooleanT{#4}{\MV@C=1}\relax
-\unless\ifnum\MV@C=0\edef\MV@dA{-\MV@dA}\fi
-\edef\MV@rM{\fpeval{round((\MV@uM * \MV@dM),6)}}%
-\edef\MV@rA{\fpeval{round((\MV@uA + \MV@dA),6)}}%
-\GetCoord(\MV@rA:\MV@rM)\t@X\t@Y
-\MakeVectorFrom\t@X\t@Y to#5}
-\def\MultVect#1by{\@ifstar{\let\MV@c\@ne\@MultVect#1by}%
- {\let\MV@c\empty\@MultVect#1by}}
+\fptestT{%
+\IfBooleanTF{#2}{1}{0}+\IfBooleanTF{#4}{1}{0}!=0}%
+{\edef\MV@dA{-\MV@dA}}%
+\edef\MV@rM{\fpeval{round((\MV@uM*\MV@dM),6)}}%
+\edef\MV@rA{\fpeval{round((\MV@uA+\MV@dA),6)}}%
+\edef#5{\fpeval{\MV@rM*cosd\MV@rA},\fpeval{\MV@rM*sind\MV@rA}}}
+
+\def\MultVect#1by{\@ifstar{\let\MV@c1\@MultVect#1 by}{\let\MV@c0\@MultVect#1by}}
\def\@MultVect#1by#2to#3{%
- \unless\ifx\MV@c\empty\Multvect{#1}{#2}*{#3}\else
- \Multvect{#1}{#2}{#3}\fi}
+ \fptest{\MV@c!=0}{\Multvect{#1}{#2}*{#3}}%
+ {\Multvect{#1}{#2}{#3}}%
+}%
\def\DivVect#1by#2to#3{\Divvect{#1}{#2}{#3}}
-\NewDocumentCommand\Divvect{ m m m }{%
-\ModAndDirOfVect#2to\@Mod and\@Dir
-\edef\@Mod{\fpeval{1 / \@Mod}}%
-\ConjVect\@Dir to\@Dir
-\ScaleVect#1by\@Mod to\@tempa
-\Multvect{\@tempa}{\@Dir}#3\ignorespaces}%
+\NewDocumentCommand \Divvect{m m m}%
+{\ModOfVect#2to\DV@dD
+\fptest{\DV@dD=0}{\PackageWarning{curve2e}{^^J%
+******************************************^^J%
+Division by zero!^^J%
+Result set to maxdimen in scaled points^^J%
+******************************************^^J}%
+\edef#3{\fpeval{\maxdimen*2**16},0}}%
+{\edef\DV@sF{\fpeval{1/\DV@dD**2}}%
+\Multvect{#2}{\DV@sF,0}{\DV@dD}%
+\Multvect{#1}{\DV@dD}*{#3}}}%
\def\Arc(#1)(#2)#3{\begingroup
-\@tdA=#3\p@
-\unless\ifdim\@tdA=\z@
- \@Arc(#1)(#2)%
-\fi
-\endgroup\ignorespaces}%
+\edef\tempG{#3}%
+\fptestF{#3=0}{\@Arc(#1)(#2)}}%
+
\def\@Arc(#1)(#2){%
-\ifdim\@tdA>\z@
- \let\Segno+%
-\else
- \@tdA=-\@tdA \let\Segno-%
-\fi
-\Numero\@gradi\@tdA
-\ifdim\@tdA>360\p@
- \PackageWarning{curve2e}{The arc aperture is \@gradi\space degrees
- and gets reduced\MessageBreak%
- to the range 0--360 taking the sign into consideration}%
- \@whiledim\@tdA>360\p@\do{\advance\@tdA-360\p@}%
-\fi
+\fptest{\tempG>\z@}%
+ {\let\Segno+}%
+ {\let\Segno-%
+ \edef\tempG{\fpeval{abs(\tempG)}}%
+ }%
+\fptestT{\tempG>360}{%
+ \PackageWarning{curve2e}%
+ {The arc aperture is \tempG\space degrees
+ and gets reduced^^J%
+ to the interval 0--360 taking the sign into
+ consideration}%
+ \edef\tempG{\Modulo{\tempG}{360}}%
+ }%
\GetCoord(#2)\@pPunX\@pPunY
\ifCV@polare
\ModOfVect#2to\@Raggio
\CopyVect#1to\@Cent
- \AddVect#2and#1to\@pPun% punto da cui parte l'arco
+ \AddVect#2and#1to\@pPun% starting point
\GetCoord(\@pPun)\@pPunX\@pPunY
\else
- \SubVect#2from#1to\@V \ModOfVect\@V to\@Raggio
+ \SubVect#2from#1to\@V
+ \ModOfVect\@V to\@Raggio
\CopyVect#2to\@pPun
- \CopyVect#1to\@Cent \GetCoord(\@pPun)\@pPunX\@pPunY
+ \CopyVect#1to\@Cent
+ \GetCoord(\@pPun)\@pPunX\@pPunY
\fi
-\@@Arc\strokepath\ignorespaces}%
-\def\@@Arc{\pIIe@moveto{\@pPunX\unitlength}{\@pPunY\unitlength}%
-\ifdim\@tdA>180\p@
- \advance\@tdA-180\p@
- \Numero\@gradi\@tdA
+\@@Arc\strokepath\endgroup\ignorespaces}%
+\def\@@Arc{%
+\pIIe@moveto{\@pPunX\unitlength}%
+ {\@pPunY\unitlength}%
+\fptestT{\tempG>180}{%
+ \edef\tempG{\fpeval{\tempG-180}}%
\SubVect\@pPun from\@Cent to\@V
\AddVect\@V and\@Cent to\@sPun
- \Multvect{\@V}{0,-1.3333333}\@V
+ \Multvect{\@V}{0,-1.3333333}{\@V}%
\if\Segno-\ScaleVect\@V by-1to\@V\fi
\AddVect\@pPun and\@V to\@pcPun
\AddVect\@sPun and\@V to\@scPun
\GetCoord(\@pcPun)\@pcPunX\@pcPunY
\GetCoord(\@scPun)\@scPunX\@scPunY
\GetCoord(\@sPun)\@sPunX\@sPunY
- \pIIe@curveto{\@pcPunX\unitlength}{\@pcPunY\unitlength}%
- {\@scPunX\unitlength}{\@scPunY\unitlength}%
- {\@sPunX\unitlength}{\@sPunY\unitlength}%
- \CopyVect\@sPun to\@pPun
-\fi
-\ifdim\@tdA>\z@
- \DirFromAngle\@gradi to\@Dir \if\Segno-\ConjVect\@Dir to\@Dir \fi
+ \pIIe@curveto{\@pcPunX\unitlength}%
+ {\@pcPunY\unitlength}%
+ {\@scPunX\unitlength}%
+ {\@scPunY\unitlength}%
+ {\@sPunX\unitlength}%
+ {\@sPunY\unitlength}%
+ \CopyVect\@sPun to\@pPun}%
+\fptestT{\tempG>0}{%
+ \DirFromAngle\tempG to\@Dir
+ \if\Segno-\ConjVect\@Dir to\@Dir \fi
\SubVect\@Cent from\@pPun to\@V
\Multvect{\@V}{\@Dir}\@V
\AddVect\@Cent and\@V to\@sPun
- \@tdA=.5\@tdA \Numero\@gradi\@tdA
- \DirFromAngle\@gradi to\@Phimezzi
+ \edef\tempG{\fpeval{\tempG/2}}%
+ \DirFromAngle\tempG to\@Phimezzi
\GetCoord(\@Phimezzi)\@cosphimezzi\@sinphimezzi
\@tdB=1.3333333\p@ \@tdB=\@Raggio\@tdB
- \@tdC=\p@ \advance\@tdC -\@cosphimezzi\p@ \Numero\@tempa\@tdC
+ \@tdC=\p@ \advance\@tdC -\@cosphimezzi\p@
+ \Numero\@tempa\@tdC
\@tdB=\@tempa\@tdB
\DividE\@tdB by\@sinphimezzi\p@ to\@cZ
\ScaleVect\@Phimezzi by\@cZ to\@Phimezzi
@@ -481,39 +528,36 @@ Computations go on, but the results may be meaningless}}{%
\GetCoord(\@pcPun)\@pcPunX\@pcPunY
\GetCoord(\@scPun)\@scPunX\@scPunY
\GetCoord(\@sPun)\@sPunX\@sPunY
- \pIIe@curveto{\@pcPunX\unitlength}{\@pcPunY\unitlength}%
- {\@scPunX\unitlength}{\@scPunY\unitlength}%
- {\@sPunX\unitlength}{\@sPunY\unitlength}%
-\fi}
+ \pIIe@curveto{\@pcPunX\unitlength}%
+ {\@pcPunY\unitlength}%
+ {\@scPunX\unitlength}%
+ {\@scPunY\unitlength}%
+ {\@sPunX\unitlength}%
+ {\@sPunY\unitlength}%
+}}%
\def\VectorArc(#1)(#2)#3{\begingroup
-\@tdA=#3\p@ \ifdim\@tdA=\z@\else
- \@VArc(#1)(#2)%
-\fi
-\endgroup\ignorespaces}%
-\def\VectorARC(#1)(#2)#3{\begingroup
-\@tdA=#3\p@
-\ifdim\@tdA=\z@\else
- \@VARC(#1)(#2)%
-\fi
-\endgroup\ignorespaces}%
-\let\VVectorArc\VectorARC
+\def\tempG{#3}%
+\fptestF{#3=0}{\@VArc(#1)(#2)}}%
\def\@VArc(#1)(#2){%
-\ifdim\@tdA>\z@
- \let\Segno+%
-\else
- \@tdA=-\@tdA \let\Segno-%
-\fi \Numero\@gradi\@tdA
-\ifdim\@tdA>360\p@
- \PackageWarning{curve2e}{The arc aperture is \@gradi\space degrees
- and gets reduced\MessageBreak%
- to the range 0--360 taking the sign into consideration}%
- \@whiledim\@tdA>360\p@\do{\advance\@tdA-360\p@}%
-\fi
+\fptest{\tempG>\z@}%
+ {\let\Segno+}%
+ {\let\Segno-%
+ \edef\tempG{\fpeval{abs(\tempG)}}}%
+\let\@gradi\tempG
+\fptestT{\tempG>360}
+ {\PackageWarning{curve2e}%
+ {The arc aperture is \tempG\space degrees
+ and gets reduced^^J%
+ to the range 0--360 taking the sign into
+ consideration}%
+ \edef\tempG{\Modulo{\tempG}{360}}%
+ }%
+\let\@gradi\tempG
\GetCoord(#2)\@pPunX\@pPunY
\ifCV@polare
\ModOfVect#2to\@Raggio \CopyVect#2to\@V
\CopyVect#1to\@Cent
- \AddVect#2and#1to\@pPun% punto da cui parte l'arco
+ \AddVect#2and#1to\@pPun% punto iniziale
\GetCoord(\@pPun)\@pPunX\@pPunY
\else
\SubVect#1from#2to\@V \ModOfVect\@V to\@Raggio
@@ -542,24 +586,31 @@ Computations go on, but the results may be meaningless}}{%
\advance\@tdA -\@tdE \Numero\@gradi\@tdA
\CopyVect#1to\@Cent \GetCoord(\@pPun)\@pPunX\@pPunY
\@@Arc
-\strokepath\ignorespaces}%
+\strokepath\endgroup\ignorespaces}%
+\def\VectorARC(#1)(#2)#3{\begingroup
+\def\tempG{#3}%
+ \fptestF{#3=0}{\@VARC(#1)(#2)}}%
+\let\VVectorArc\VectorARC% alias
+
\def\@VARC(#1)(#2){%
-\ifdim\@tdA>\z@
- \let\Segno+%
-\else
- \@tdA=-\@tdA \let\Segno-%
-\fi \Numero\@gradi\@tdA
-\ifdim\@tdA>360\p@
- \PackageWarning{curve2e}{The arc aperture is \@gradi\space degrees
+\fptest{\tempG>\z@}%
+ {\let\Segno+}%
+ {\let\Segno-%
+ \edef\tempG{\fpeval{abs(\tempG)}}}%
+\let\@gradi\tempG
+\fptestT{\tempG>360}{%
+ \PackageWarning{curve2e}%
+ {The arc aperture is \@gradi\space degrees
and gets reduced\MessageBreak%
- to the range 0--360 taking the sign into consideration}%
- \@whiledim\@tdA>360\p@\do{\advance\@tdA-360\p@}%
-\fi
+ to the range 0--360 taking the sign into
+ consideration}%
+ \edef\tempG{\Modulo{\tempG}{360}\p@}}
+ \@tdA=\tempG\p@ \let\@gradi\tempG
\GetCoord(#2)\@pPunX\@pPunY
\ifCV@polare
\ModOfVect#2to\@Raggio \CopyVect#2to\@V
\CopyVect#1to\@Cent
- \AddVect#2and#1to\@pPun% punto da cui parte l'arco
+ \AddVect#2and#1to\@pPun% punto iniziale
\GetCoord(\@pPun)\@pPunX\@pPunY
\else
\SubVect#1from#2to\@V \ModOfVect\@V to\@Raggio
@@ -568,11 +619,10 @@ Computations go on, but the results may be meaningless}}{%
\fi
\@tdE=\pIIe@FAW\@wholewidth \@tdE=\pIIe@FAL\@tdE
\DividE\@tdE by \@Raggio\unitlength to\DeltaGradi
-\@tdD=\DeltaGradi\p@
-\@tdD=57.29578\@tdD \Numero\DeltaGradi\@tdD
+\edef\DeltaGradi{\fpeval{57.29578*\DeltaGradi}}
\@tdD=\if\Segno--\fi\@gradi\p@ \Numero\@tempa\@tdD
\DirFromAngle\@tempa to\@Dir
-\Multvect{\@V}{\@Dir}\@sPun% corrects the end point
+\Multvect{\@V}{\@Dir}\@sPun% correct the end point
\edef\@tempA{\if\Segno--\fi1}%
\Multvect{\@sPun}{0,\@tempA}\@vPun
\DirOfVect\@vPun to\@Dir
@@ -593,7 +643,7 @@ Computations go on, but the results may be meaningless}}{%
\@tdE\if\Segno--\fi\DeltaGradi\p@
\Numero\@tempB{0.5\@tdE}%
\DirFromAngle\@tempB to\@Dird
-\Multvect{\@vPun}{\@Dird}\@vPun% corrects the starting point
+\Multvect{\@vPun}{\@Dird}\@vPun% correct the starting point
\DirOfVect\@vPun to\@Dir\GetCoord(\@Dir)\@xnum\@ynum
\put(\@pPunX,\@pPunY){\vector(\@xnum,\@ynum){0}}% starting point arrow tip
\edef\@tempa{\if\Segno--\fi\DeltaGradi}%
@@ -603,7 +653,7 @@ Computations go on, but the results may be meaningless}}{%
\AddVect\@Cent and\@V to\@pPun
\GetCoord(\@pPun)\@pPunX\@pPunY
\@@Arc
-\strokepath\ignorespaces}%
+\strokepath\endgroup\ignorespaces}%
\def\CurveBetween#1and#2WithDirs#3and#4{%
\StartCurveAt#1WithDir{#3}\relax
@@ -623,7 +673,7 @@ Computations go on, but the results may be meaningless}}{%
\CopyVect\@tempa,\@tempb to\@Dzero
\DirOfVect\@Dzero to\@Dzero
\ignorespaces}
-\def\CurveFinish{\strokepath\endgroup\ignorespaces}%
+\def\CurveFinish{\strokepath\endgroup\ignorespaces}
\def\FillCurve{\fillpath\endgroup\ignorespaces}
\def\CurveEnd{\fillstroke\endgroup\ignorespaces}
\def\CbezierTo#1WithDir#2AndDists#3And#4{%
@@ -636,18 +686,18 @@ Computations go on, but the results may be meaningless}}{%
\GetCoord(\@Cuno)\@XCuno\@YCuno
\GetCoord(\@Puno)\@XPuno\@YPuno
\pIIe@curveto{\@XCzero\unitlength}{\@YCzero\unitlength}%
- {\@XCuno\unitlength}{\@YCuno\unitlength}%
- {\@XPuno\unitlength}{\@YPuno\unitlength}%
+ {\@XCuno\unitlength}%
+ {\@YCuno\unitlength}%
+ {\@XPuno\unitlength}%
+ {\@YPuno\unitlength}%
\CopyVect\@Puno to\@Pzero
\CopyVect\@Duno to\@Dzero
\ignorespaces}%
-\def\CbezierBetween#1And#2WithDirs#3And#4UsingDists#5And#6{%
-\StartCurveAt#1WithDir{#3}\relax
+\def\CbezierBetween#1And#2WithDirs#3And#4UsingDists#5And#6{\StartCurveAt#1WithDir{#3}\relax
\CbezierTo#2WithDir#4AndDists#5And{#6}\CurveFinish}
-
\def\@isTension#1;#2!!{\def\@tempA{#1}%
-\def\@tempB{#2}\unless\ifx\@tempB\empty\strip@semicolon#2\fi}
+\def\@tempB{#2}\unless\ifx\@tempB\empty \strip@semicolon#2\fi}
\def\strip@semicolon#1;{\def\@tempB{#1}}
\def\CurveTo#1WithDir#2{%
@@ -661,16 +711,17 @@ Computations go on, but the results may be meaningless}}{%
\GetCoord(\@Dpzero)\@DXpzero\@DYpzero
\GetCoord(\@Dpuno)\@DXpuno\@DYpuno
\DivideFN\@Chord by2 to\@semichord
-\fptest{\@DYpuno=0 && \@DYpzero=0}{\GetCoord(\@Puno)\@tX\@tY
- \pIIe@lineto{\@tX\unitlength}{\@tY\unitlength}}%
-{\ifdim\@DXpzero\p@=\z@
- \@tdA=1.333333\p@
- \Numero\@KCzero{\@semichord\@tdA}%
-\fi
-\ifdim\@DYpzero\p@=\z@
- \@tdA=1.333333\p@
- \Numero\@Kpzero{\@semichord\@tdA}%
-\fi
+\fptest{abs(\@DYpuno)<=0.01&& abs(\@DYpzero)<=0.01}
+{\GetCoord(\@Puno)\@tX\@tY
+ \pIIe@lineto{\@tX\unitlength}%
+ {\@tY\unitlength}%
+}{%
+ \fptestT{abs(\@DXpzero)<=0.01}%
+ {\@tdA=1.333333\p@
+ \Numero\@KCzero{\@semichord\@tdA}}%
+\fptestT{abs(\@DYpzero)<=0.01}%
+ {\@tdA=1.333333\p@
+ \Numero\@Kpzero{\@semichord\@tdA}}%
\unless\ifdim\@DXpzero\p@=\z@
\unless\ifdim\@DYpzero\p@=\z@
\edef\@CosDzero{\ifdim\@DXpzero\p@<\z@ -\fi\@DXpzero}%
@@ -708,9 +759,12 @@ Computations go on, but the results may be meaningless}}{%
\GetCoord(\@Puno)\@XPuno\@YPuno
\GetCoord(\@CPzero)\@XCPzero\@YCPzero
\GetCoord(\@CPuno)\@XCPuno\@YCPuno
-\pIIe@curveto{\@XCPzero\unitlength}{\@YCPzero\unitlength}%
- {\@XCPuno\unitlength}{\@YCPuno\unitlength}%
- {\@XPuno\unitlength}{\@YPuno\unitlength}}\egroup
+\pIIe@curveto{\@XCPzero\unitlength}%
+ {\@YCPzero\unitlength}%
+ {\@XCPuno\unitlength}%
+ {\@YCPuno\unitlength}%
+ {\@XPuno\unitlength}%
+ {\@YPuno\unitlength}}\egroup
\CopyVect\@Puno to\@Pzero
\CopyVect\@Duno to\@Dzero
\ignorespaces}%
@@ -721,23 +775,29 @@ Computations go on, but the results may be meaningless}}{%
\StartCurveAt#1WithDir{#2}%
\@ifnextchar\lp@r\@Curve{%
\PackageWarning{curve2e}{%
- Curve specifications must contain at least two nodes!\MessageBreak
- Please, control your \string\Curve\space specifications\MessageBreak}}}
+ Curve specifications must contain at least
+ two nodes!^^J
+ Please, control your \string\Curve\space
+ specifications^^J}}}
+
\def\@Curve(#1)<#2>{%
\CurveTo#1WithDir{#2}%
\@ifnextchar\lp@r\@Curve{%
\@ifnextchar[\@ChangeDir\CurveEnd}}
\def\@ChangeDir[#1]{\ChangeDir<#1>\@Curve}
-\def\Qurve{\@ifstar{\let\fillstroke\fillpath\Qurve@}%
-{\let\fillstroke\strokepath\Qurve@}}
+\def\Qurve{%
+ \@ifstar{\let\fillstroke\fillpath\Qurve@}%
+ {\let\fillstroke\strokepath\Qurve@}%
+}%
\def\Qurve@(#1)<#2>{%
\StartCurveAt#1WithDir{#2}%
\@ifnextchar\lp@r\@Qurve{%
\PackageWarning{curve2e}{%
- Quadratic curve specifications must contain at least
- two nodes!\MessageBreak
- Please, control your Qurve specifications\MessageBreak}}}%
+ Quadratic curve specifications must contain
+ at least two nodes!^^J
+ Please, control your Qurve
+ specifications^^J}}}%
\def\@Qurve(#1)<#2>{\QurveTo#1WithDir{#2}%
\@ifnextchar\lp@r\@Qurve{%
@@ -751,10 +811,12 @@ Computations go on, but the results may be meaningless}}{%
\YpartOfVect\@Scalar to \@YScalar
\ifdim\@YScalar\p@=\z@
\PackageWarning{curve2e}%
- {Quadratic Bezier arcs cannot have their starting\MessageBreak
- and ending directions parallel or antiparallel with\MessageBreak
- each other. This arc is skipped and replaced with
- a dotted line.\MessageBreak}%
+ {Quadratic Bezier arcs cannot have their
+ starting^^J
+ and ending directions parallel or antiparallel
+ with each other.^^J
+ This arc is skipped and replaced with
+ a dotted line.^^J}%
\Dotline(\@Pzero)(\@Puno){2}\relax
\else
\Multvect{\@Dzero}*{\@DirChord}\@Dpzero
@@ -765,23 +827,27 @@ Computations go on, but the results may be meaningless}}{%
\MultiplyFN\@DYpzero by\@DYpuno to\@YYD
\unless\ifdim\@YYD\p@<\z@\ifdim\@XXD\p@<\z@
\PackageWarning{curve2e}%
- {Quadratic Bezier arcs cannot have inflection points\MessageBreak
- Therefore the tangents to the starting and ending arc\MessageBreak
- points cannot be directed to the same half plane.\MessageBreak
- This arc is skipped and replaced by a dotted line\MessageBreak}%
+ {Quadratic Bezier arcs cannot have
+ inflection points^^J
+ Therefore the tangents to the
+ starting and ending arc^^J
+ points cannot be directed to the
+ same half plane.^^J
+ This arc is skipped and replaced by
+ a dotted line^^J}%
\Dotline(\@Pzero)(\@Puno){2}\fi
\else
\edef\@CDzero{\@DXpzero}\relax
\edef\@SDzero{\@DYpzero}\relax
\edef\@CDuno{\@DXpuno}\relax
\edef\@SDuno{\@DYpuno}\relax
-\MultiplyFN\@SDzero by\@CDuno to\@tempA
-\MultiplyFN\@SDuno by\@CDzero to\@tempB
+\MultiplY\@SDzero by\@CDuno to\@tempA
+\MultiplY\@SDuno by\@CDzero to\@tempB
\edef\@tempA{\strip@pt\dimexpr\@tempA\p@-\@tempB\p@}\relax
\@tdA=\@SDuno\p@ \@tdB=\@Chord\p@ \@tdC=\@tempA\p@
\edef\@tempC{\strip@pt\dimexpr \@tdA*\@tdB/\@tdC}\relax
-\MultiplyFN\@tempC by\@CDzero to \@XC
-\MultiplyFN\@tempC by\@SDzero to \@YC
+\MultiplY\@tempC by\@CDzero to \@XC
+\MultiplY\@tempC by\@SDzero to \@YC
\ModOfVect\@XC,\@YC to\@KC
\ScaleVect\@Dzero by\@KC to\@CP
\AddVect\@Pzero and\@CP to\@CP
@@ -802,15 +868,17 @@ Computations go on, but the results may be meaningless}}{%
\ignorespaces}
%%
-%% Distributable under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
+%% Distributable under the LaTeX Project Public
+%% License, version 1.3c or higher (your choice).
+%% The latest version of this license is at:
+%% http://www.latex-project.org/lppl.txt
%%
%% This work is "maintained"
%%
-%% This work consists of file curve2e.dtx, and the derived files
-%% curve2e.sty and curve2e.pdf, plus the auxiliary derived files
-%% README.txt and curve2e-v161.sty.
+%% This work consists of file curve2e.dtx, and the
+%% derived files curve2e.sty and curve2e.pdf, plus
+%% the auxiliary derived files README.txt and
+%% curve2e-v161.sty.
%%
%%
%% End of file `curve2e.sty'.
diff --git a/Master/texmf-dist/tex/latex/customenvs/customenvs.sty b/Master/texmf-dist/tex/latex/customenvs/customenvs.sty
index 21fefb30457..ef5f36f42f0 100644
--- a/Master/texmf-dist/tex/latex/customenvs/customenvs.sty
+++ b/Master/texmf-dist/tex/latex/customenvs/customenvs.sty
@@ -3,9 +3,13 @@
% source pencil...: CC-BY-SA 4.0 https://tex.stackexchange.com/questions/504092/replicating-a-fancy-bordered-text-style-in-latex/504145#504145
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{customenvs}[2024/09/09 0.2.2 Custom classic environments]
+\ProvidesPackage{customenvs}[2024/11/04 0.2.6 Custom classic environments]
%====HISTORIQUE
+% v 0.2.6 Roue des compétences / SkillsWheel / speedometer
+% v 0.2.5 Modification mineure des points dans l'environnement EnvtExo
+% v 0.2.4 Petite boîte marker
+% v 0.2.3 Panneau autoroutier + Panneau Soldes
% v 0.2.2 Flèche évasée, en TikZ
% v 0.2.1 Modification mineure de la gestion des étoiles tikz (baseline) + grille auto tikzpicture
% v 0.2.0 Ajout d'étoiles pour les difficultés d'exercices (2 versions)
@@ -946,8 +950,10 @@
\IfSubStr{\EnvtExoDeco}{Points}%
{%
\StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]%
- \IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
- \,\textcolor{macouleurexodeco}{(\EnvtExoPts\ \pts)}%
+ \xintifboolexpr{ \EnvtExoPts <= 1 }{\def\pts{point}}{\def\pts{points}}%
+ %\IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
+ %\,\textcolor{macouleurexodeco}{(\num{\EnvtExoPts} \pts)}%
+ \,\textcolor{macouleurexodeco}{(\StrSubstitute{\EnvtExoPts}{.}{{{,}}}\ \pts)}%
}{}%
\IfSubStr{\EnvtExoDeco}{Image}%
{%
@@ -955,6 +961,12 @@
\settototalheight{\tmp@image@hauteur@totale}{\hbox{\tmpstyleexo qB}}%
\,$\vcenter{\hbox{\includegraphics[height=\EnvtExoScaleImg\tmp@image@hauteur@totale]{\EnvtExoImg}}}$%
}{}%
+ \IfSubStr{\EnvtExoDeco}{Speedo}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoLevel]%
+ \StrCut{\EnvtExoLevel}{§}{\EnvtExoLevelSk}{\EnvtExoLevelTo}%
+ \,\MiniCompteurNiveaux[Couleurs=macouleurexodeco,Marqueur=\EnvtExoLevelSk]{\EnvtExoLevelTo}%
+ }{}%
\IfSubStr{\EnvtExoDeco}{faEtoiles}%
{%
\StrBehind{\EnvtExoDeco}{/}[\EnvtExoStars]%
@@ -1024,8 +1036,10 @@
\IfSubStr{\EnvtExoDeco}{Points}%
{%
\StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]%
- \IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
- \,\textcolor{macouleurexodeco}{(\EnvtExoPts\ \pts)}%
+ \xintifboolexpr{ \EnvtExoPts <= 1 }{\def\pts{point}}{\def\pts{points}}%
+ %\IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
+ %\,\textcolor{macouleurexodeco}{(\num{\EnvtExoPts} \pts)}%
+ \,\textcolor{macouleurexodeco}{(\StrSubstitute{\EnvtExoPts}{.}{{{,}}}\ \pts)}%
}{}%
\IfSubStr{\EnvtExoDeco}{Image}%
{%
@@ -1115,8 +1129,9 @@
\IfSubStr{\EnvtExoDeco}{Points}%
{%
\StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]%
- \IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
- \,(\EnvtExoPts\ \pts)%
+ \xintifboolexpr{ \EnvtExoPts <= 1 }{\def\pts{point}}{\def\pts{points}}%
+ %\,(\EnvtExoPts\ \pts)%
+ \,\textcolor{macouleurexodeco}{(\StrSubstitute{\EnvtExoPts}{.}{{{,}}}\ \pts)}%
}{}%
\IfSubStr{\EnvtExoDeco}{Image}%
{%
@@ -1193,8 +1208,9 @@
\IfSubStr{\EnvtExoDeco}{Points}%
{%
\StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]%
- \IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
- \,(\EnvtExoPts\ \pts)%
+ \xintifboolexpr{ \EnvtExoPts <= 1 }{\def\pts{point}}{\def\pts{points}}%
+ %\,(\EnvtExoPts\ \pts)%
+ \,\textcolor{macouleurexodeco}{(\StrSubstitute{\EnvtExoPts}{.}{{{,}}}\ \pts)}%
}{}%
\IfSubStr{\EnvtExoDeco}{Image}%
{%
@@ -2928,4 +2944,598 @@
\end{scope}
}
+%====PANO AUTOROUTE
+\newlength{\PanoTorouteStretch}
+\newlength{\PanoTorouteOffsetArrow}
+
+\defKV[PanoAutoroute]{%
+ Fleches=\def\PanoTorouteArrow{#1},%
+ CouleurFond=\def\PanoTorouteCoul{#1},%
+ CouleurTitre=\def\PanoTorouteCoulTitre{#1},%
+ Police=\def\PanoTorouteFonte{#1},%
+ PoliceCartouche=\def\PanoTorouteFonteTitre{#1},%
+ TypeFleche=\def\PanoTorouteStyleArrow{#1},%
+ EspacementV=\setlength{\PanoTorouteStretch}{#1},%
+ OffsetFleches=\setlength{\PanoTorouteOffsetArrow}{#1}
+}
+
+\setKVdefault[PanoAutoroute]{%
+ Fleches=0,%
+ CouleurFond=blue,%
+ CouleurTitre=red,%
+ Largeur=10cm,%
+ Police=\LARGE\bfseries\sffamily,%
+ PoliceCartouche=\Large\bfseries\sffamily,%
+ TypeFleche={\scalebox{1.33}[1.25]{\faArrowDown}},%
+ EspacementV={2.5mm},%
+ OffsetFleches={5mm},%
+ Dernier=true
+}
+
+\NewDocumentEnvironment{PanneauAutoroute}{ O{} D<>{} m }%
+{%
+ \restoreKV[PanoAutoroute]%
+ \setKV[PanoAutoroute]{#1}
+ \IfEq{#3}{}%
+ {%
+ \tcolorbox[enhanced,width={\useKV[PanoAutoroute]{Largeur}},fontupper=\PanoTorouteFonte,colback=\PanoTorouteCoul,colframe=\PanoTorouteCoul!5!white,coltext=white,sharp corners,boxsep=1mm,left=1mm,right=1mm,top=1mm,bottom=1mm,#2]
+ }%
+ {%
+ \tcolorbox[enhanced,width={\useKV[PanoAutoroute]{Largeur}},fontupper=\PanoTorouteFonte,colback=\PanoTorouteCoul,colframe=\PanoTorouteCoul!5!white,coltext=white,sharp corners,boxsep=1mm,left=1mm,right=1mm,top=1mm,bottom=1mm,attach boxed title to top center,fonttitle=\PanoTorouteFonteTitre,coltitle=white,boxed title style={colback=\PanoTorouteCoulTitre,size=small,sharp corners,left=0mm,right=0mm,colframe=\PanoTorouteCoulTitre!5!white},title={#3},#2]
+ }%
+ \baselineskip=-1000pt\lineskip=\PanoTorouteStretch\lineskiplimit=\maxdimen%
+}%
+{%
+ \ifnum\PanoTorouteArrow>0
+
+ \medskip
+ \hspace*{\PanoTorouteOffsetArrow}\foreach \i in {1,...,\PanoTorouteArrow}{\hfill\PanoTorouteStyleArrow}\hfill\hspace*{\PanoTorouteOffsetArrow}
+ \fi%
+ \endtcolorbox%
+ %
+ \ifboolKV[PanoAutoroute]{Dernier}{}{\vspace*{\dimexpr-\baselineskip-0.5mm\relax}}%
+}
+
+\NewDocumentCommand\VilleDist{ s m m }{%
+ \IfBooleanTF{#1}%
+ {%
+ #2\hfill~#3
+ }%
+ {%
+ #2\hfill~#3\\
+ }%
+}
+
+%====PANOSOLDES
+\newlength{\tmphautbannsold}
+\newlength{\tmphautbannsoldextra}
+\newlength{\tmplargbannsold}
+\newlength{\tmplargasold}
+\newlength{\tmplargbsold}
+\newlength{\tmplargtotsold}
+\newlength{\tmpoffsetbannsold}
+\newlength{\tmphautlignesol}
+\newlength{\tmphautsoles}
+
+\def\labelancienprix{Ancien Prix~:~}
+\def\labelnouveauprix{Nouveau Prix~:~}
+\def\labelreduction{SOLDES~:~}
+
+\defKV[PanoSoldes]{%
+ Couleur=\def\panosoldescolor{#1},%
+ Largeur=\def\panosoldeswidth{#1},%
+ PoliceEntete=\def\panosoldesfonthaut{#1},%
+ PolicePrix=\def\panosoldesfontprix{#1},%
+ PoliceReduc=\def\panosoldesfontreduc{#1},%
+ OffsetReduc=\setlength{\tmpoffsetbannsold}{#1},%
+ Titre=\def\panosoldestitre{#1},%
+ AgrandirReduc=\setlength{\tmphautbannsoldextra}{#1}
+}
+
+\setKVdefault[PanoSoldes]{%
+ Couleur=gray,
+ Largeur=auto,
+ PoliceEntete=\large\bfseries,%
+ PolicePrix=\footnotesize,%
+ PoliceReduc=\large\bfseries,%
+ Titre=GRANDE DÉMARQUE,%
+ OffsetReduc=1.25cm,%
+ AgrandirReduc=0mm
+}
+
+\NewDocumentCommand\AfficheSoldes{ O{} m m m }{%
+ \restoreKV[PanoSoldes]%
+ \setKV[PanoSoldes]{#1}%
+ %calcul de la largeur
+ \IfEq{\panosoldeswidth}{auto}%
+ {%
+ \settowidth{\tmplargbannsold}{{\panosoldesfontreduc\labelreduction-999X}}%largeur avec un peu de marge dûe à la rotation
+ \settowidth{\tmplargasold}{{\panosoldesfontprix\labelancienprix99999X}}%largeur avec un peu de marge dûe au prix "élastique"
+ \settowidth{\tmplargbsold}{{\panosoldesfontprix\labelnouveauprix99999X}}%largeur avec un peu de marge dûe au prix "élastique"
+ \pgfmathsetlength{\tmplargtotsold}{max(\tmplargbannsold,\tmplargasold,\tmplargbsold)+1mm}%on rajoute encore un peu de marge pour être sûr
+ }%
+ {%
+ \setlength{\tmplargtotsold}{\panosoldeswidth}%
+ }%
+ %calcul de la hauteur
+ \settototalheight{\tmphautlignesol}{\panosoldesfontprix\labelancienprix\labelnouveauprix0,123456789X}%
+ \settototalheight{\tmphautbannsold}{\panosoldesfontreduc\labelreduction-0,123456789X}%
+ \addtolength{\tmphautbannsold}{6mm+\tmphautbannsoldextra}%
+ \setlength{\tmphautsoles}{2\tmphautlignesol}%
+ \addtolength{\tmphautsoles}{\tmpoffsetbannsold+2mm}%
+ \addtolength{\tmphautsoles}{\tmphautbannsold}%
+ %boîte
+ \tcolorbox[%
+ enhanced,nobeforeafter,width=\tmplargtotsold,text height=\tmphautsoles,boxrule=0.5mm,boxsep=0.5mm,title={\panosoldestitre},halign title=flush center,colframe=\panosoldescolor,colback=white,top=1.25mm,bottom=1.25mm,left=1.25mm,right=1.25mm,fonttitle=\panosoldesfonthaut,%
+ overlay={%
+ \begin{tcbclipframe}
+ \draw ([shift={(1.25mm,-2mm)}]interior.north west) node[anchor=north west,font=\panosoldesfontprix,inner sep=0pt] {Ancien prix : {#2}} ;
+ \draw ([shift={(-1.25mm,2.5mm)}]interior.south east) node[anchor=south east,left,font=\panosoldesfontprix,inner sep=0pt] {Nouveau prix : {#3}} ;
+ %bannière (cf Séb Lozano)
+ \fill[line cap=rect,\panosoldescolor] ([shift={(0,2.5mm+\tmphautlignesol)}]interior.south west)--([shift={(0,2.5mm+\tmphautlignesol+\tmpoffsetbannsold)}]interior.south east)--++(0,\tmphautbannsold)--([shift={(0,2.5mm+\tmphautlignesol+\tmphautbannsold)}]interior.south west) ;
+ %petit filet
+ \draw[white,semithick] ([shift={(0,2.5mm+\tmphautlignesol+1pt)}]interior.south west)--([shift={(0,2.5mm+\tmphautlignesol+\tmpoffsetbannsold+1pt)}]interior.south east)--++(0,\tmphautbannsold-2pt)--([shift={(0,2.5mm+\tmphautlignesol+\tmphautbannsold-1pt)}]interior.south west)--cycle ;
+ %label
+ \draw[draw=none] ([shift={(0,2.5mm+\tmphautlignesol+0.5\tmphautbannsold)}]interior.south west) -- ([shift={(0,2.5mm+\tmphautlignesol+\tmpoffsetbannsold+0.5\tmphautbannsold)}]interior.south east) node[midway,sloped,font=\panosoldesfontreduc,text=white] {SOLDES : {#4}} ;
+ \end{tcbclipframe}%
+ }%
+ ]%
+ \endtcolorbox%
+}
+
+%====tcbmarker
+\defKV[tcbmarker]{%
+ Couleur=\def\tcbmarkercolor{#1},%
+ color=\def\tcbmarkercolor{#1},%
+ Police=\def\tcbmarkerfonte{#1},%
+ font=\def\tcbmarkerfonte{#1},%
+ Largeur=\def\tcbmarkerlarg{#1},%
+ width=\def\tcbmarkerlarg{#1}
+}
+\setKVdefault[tcbmarker]{%
+ Couleur=yellow,%
+ color=yellow,%
+ Police=\small\sffamily,%
+ font=\small\sffamily,%
+ Largeur=auto,%
+ width=auto
+}
+
+\NewDocumentCommand\tbcmarker{ O{} D<>{} m }{%
+ \restoreKV[tcbmarker]%
+ \setKV[tcbmarker]{#1}%
+ \IfEq{\tcbmarkerlarg}{auto}%
+ {%
+ \tcbset{tcbmarkerbase/.style={enhanced,box align=base}}
+ }%
+ {%
+ \tcbset{tcbmarkerbase/.style={enhanced,capture=minipage,width=\tcbmarkerlarg}}
+ }%
+ \tcbox[tcbmarkerbase,nobeforeafter,fontupper=\tcbmarkerfonte,%
+ boxrule=0.5pt,boxsep=0.5mm,left=2mm,right=5mm,top=0pt,bottom=0pt,colback=\tcbmarkercolor!15,colframe=\tcbmarkercolor!20!black,sharp corners,rounded corners=southeast,arc is angular,arc=3mm,%
+ underlay={\path[line width=0.5pt,fill=tcbcolback!80!black] ([yshift=3mm]interior.south east)--++(-0.4,-0.1)--++(0.1,-0.2);\path[line width=0.5pt,draw=tcbcolframe,shorten <=-0.05mm,shorten >=-0.05mm] ([yshift=3mm]interior.south east)--++(-0.4,-0.1)--++(0.1,-0.2);},drop fuzzy shadow,#2,before upper={\vphantom{(qÉ)}},#2]{#3}%
+}
+
+%====SkillsWheel [en & fr]
+\usetikzlibrary{bbox}
+\newlength{\skilwheelradius}
+\setlength\skilwheelradius{4cm}
+
+\defKV[skillswheel]{%
+ Rayon=\setlength\skilwheelradius{#1},%
+ Radius=\setlength\skilwheelradius{#1},%
+ Police=\def\skilwheelfonte{#1},%
+ Font=\def\skilwheelfonte{#1},%
+ ListeNiveaux=\def\skilwheelskills{#1},%
+ SkillsList=\def\skilwheelskills{#1},%
+ Marqueur=\def\skilwheelmark{#1},%
+ Mark=\def\skilwheelmark{#1}
+}
+\setKVdefault[skillswheel]{%
+ Rayon=3cm,Radius=3cm,
+ Police=\bfseries\sffamily,Font=\bfseries\sffamily,%
+ ListeNiveaux={},SkillsList={},%
+ Marqueur={},Mark={}
+}
+
+\NewDocumentCommand\RoueNiveaux{ O{} D<>{} m }{%
+ %1 := clés
+ %2 := liste couleurs
+ %3 := choix marqueur
+ \restoreKV[skillswheel]%
+ \setKV[skillswheel]{#1}%
+ %\IfEq{#3}{}{\xdef\skilwheelmark{-1}}{\xdef\skilwheelmark{#3}}%
+ \IfSubStr{#3}{,}%
+ {%
+ \readlist*\skilswheelcolors{#3}%
+ }%
+ {%
+ \xdef\skilswheelcolorslen{#3}%
+ }%
+ \IfEq{\skilwheelmark}{}%
+ {}%
+ {%
+ \xintifboolexpr{\skilwheelmark >= 0 'and' \skilwheelmark <= \skilswheelcolorslen}%
+ {%
+ \xdef\skilswheelposcurs{\xintfloateval{180-180*(\skilwheelmark)/\skilswheelcolorslen}}%
+ }%
+ {%
+ \xdef\skilswheelposcurs{\xintfloateval{0.5*\skilswheelcolorslen}}%
+ }%
+ }%
+ \IfEq{\skilwheelskills}{}{}{\readlist*\skilswheellstskills{\skilwheelskills}}%
+ \begin{tikzpicture}[transform shape,#2]
+ \foreach \i in {1,...,\skilswheelcolorslen}{%
+ \IfSubStr{#3}{,}%
+ {%
+ \draw[line join=mitter,line cap=rect,line width=\fpeval{0.015\skilwheelradius},fill={\skilswheelcolors[\i]}] ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) -- ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) arc({180-180*(\i-1)/\skilswheelcolorslen}:{180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) arc({180-180*(\i)/\skilswheelcolorslen}:{180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) ;
+ }%
+ {%
+ \draw[line join=mitter,line cap=rect,line width=\fpeval{0.015\skilwheelradius}] ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) -- ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) arc({180-180*(\i-1)/\skilswheelcolorslen}:{180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) arc({180-180*(\i)/\skilswheelcolorslen}:{180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) ;
+ }%
+ %label
+ \IfEq{\skilwheelskills}{}%
+ {}%
+ {%
+ \xintifboolexpr{ 180*(\i-1)/\skilswheelcolorslen <= 90}%
+ {%
+ \draw[draw=none] ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) node[inner sep=1.5pt,sloped,pos=0.033,above right,font=\skilwheelfonte] {\vphantom{()}\skilswheellstskills[\i]} ;
+ }%
+ {%
+ \draw[draw=none] ({180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) node[inner sep=1.5pt,sloped,pos=0.033,above left,font=\skilwheelfonte] {\vphantom{()}\skilswheellstskills[\i]} ;
+ }%
+ }%
+ }%
+ \IfEq{\skilwheelmark}{}%
+ {}%
+ {%
+ \node[rotate={90+\skilswheelposcurs},regular polygon,regular polygon sides=3,fill=black,inner sep=0pt,minimum size={0.125*\skilwheelradius},outer sep=0pt] at (\skilswheelposcurs:{1.0125\skilwheelradius}) {} ;
+ }%
+ \end{tikzpicture}%
+}
+
+\NewDocumentCommand\WheelOfSkills{ O{} D<>{} m }{%
+ %1 := clés
+ %2 := liste couleurs
+ %3 := choix marqueur
+ \restoreKV[skillswheel]%
+ \setKV[skillswheel]{#1}%
+ %\IfEq{#3}{}{\xdef\skilwheelmark{-1}}{\xdef\skilwheelmark{#3}}%
+ \IfSubStr{#3}{,}%
+ {%
+ \readlist*\skilswheelcolors{#3}%
+ }%
+ {%
+ \xdef\skilswheelcolorslen{#3}%
+ }%
+ \IfEq{\skilwheelmark}{}%
+ {}%
+ {%
+ \xintifboolexpr{\skilwheelmark >= 0 'and' \skilwheelmark <= \skilswheelcolorslen}%
+ {%
+ \xdef\skilswheelposcurs{\xintfloateval{180-180*(\skilwheelmark)/\skilswheelcolorslen}}%
+ }%
+ {%
+ \xdef\skilswheelposcurs{\xintfloateval{0.5*\skilswheelcolorslen}}%
+ }%
+ }%
+ \IfEq{\skilwheelskills}{}{}{\readlist*\skilswheellstskills{\skilwheelskills}}%
+ \begin{tikzpicture}[transform shape,#2]
+ \foreach \i in {1,...,\skilswheelcolorslen}{%
+ \IfSubStr{#3}{,}%
+ {%
+ \draw[line join=mitter,line cap=rect,line width=\fpeval{0.015\skilwheelradius},fill={\skilswheelcolors[\i]}] ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) -- ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) arc({180-180*(\i-1)/\skilswheelcolorslen}:{180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) arc({180-180*(\i)/\skilswheelcolorslen}:{180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) ;
+ }%
+ {%
+ \draw[line join=mitter,line cap=rect,line width=\fpeval{0.015\skilwheelradius}] ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) -- ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) arc({180-180*(\i-1)/\skilswheelcolorslen}:{180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) arc({180-180*(\i)/\skilswheelcolorslen}:{180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) ;
+ }%
+ %label
+ \IfEq{\skilwheelskills}{}%
+ {}%
+ {%
+ \xintifboolexpr{ 180*(\i-1)/\skilswheelcolorslen <= 90}%
+ {%
+ \draw[draw=none] ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) node[inner sep=1.5pt,sloped,pos=0.033,above right,font=\skilwheelfonte] {\vphantom{()}\skilswheellstskills[\i]} ;
+ }%
+ {%
+ \draw[draw=none] ({180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) node[inner sep=1.5pt,sloped,pos=0.033,above left,font=\skilwheelfonte] {\vphantom{()}\skilswheellstskills[\i]} ;
+ }%
+ }%
+ }%
+ \IfEq{\skilwheelmark}{}%
+ {}%
+ {%
+ \node[rotate={90+\skilswheelposcurs},regular polygon,regular polygon sides=3,fill=black,inner sep=0pt,minimum size={0.125*\skilwheelradius},outer sep=0pt] at (\skilswheelposcurs:{1.0125\skilwheelradius}) {} ;
+ }%
+ \end{tikzpicture}%
+}
+
+\defKV[skillswheellevel]{%
+ Pos=\def\skilswheelposlab{#1},%
+ Echelle=\def\skilswheelscalelab{#1},%
+ Scale=\def\skilswheelscalelab{#1},%
+}
+\setKVdefault[skillswheellevel]{%
+ Pos=0.80,%
+ Echelle=2,Scale=2
+}
+
+\NewDocumentCommand\PlacerIconeNiveau{ O{} m m }{%
+ \restoreKV[skillswheellevel]%
+ \setKV[skillswheellevel]{#1}%
+ \node[rotate={90-(180*(#2-0.5)/\skilswheelcolorslen)},inner sep=0pt,outer sep=0pt,scale=\skilswheelscalelab] at ({180-180*(#2-0.5)/\skilswheelcolorslen}:{\skilswheelposlab\skilwheelradius}) {#3} ;
+}
+
+\NewDocumentCommand\PutIconSkill{ O{} m m }{%
+ \restoreKV[skillswheellevel]%
+ \setKV[skillswheellevel]{#1}%
+ \node[rotate={90-(180*(#2-0.5)/\skilswheelcolorslen)},inner sep=0pt,outer sep=0pt,scale=\skilswheelscalelab] at ({180-180*(#2-0.5)/\skilswheelcolorslen}:{\skilswheelposlab\skilwheelradius}) {#3} ;
+}
+
+\NewDocumentCommand\PlacerIconesNiveaux{ O{} m }{%
+ \restoreKV[skillswheellevel]%
+ \setKV[skillswheellevel]{#1}%
+ \readlist*\skllsticon{#2}%
+ \foreach \i in {1,...,\skllsticonlen}{%
+ \node[rotate={90-(180*(\i-0.5)/\skilswheelcolorslen)},inner sep=0pt,outer sep=0pt,scale=\skilswheelscalelab] at ({180-180*(\i-0.5)/\skilswheelcolorslen}:{\skilswheelposlab\skilwheelradius}) {\skllsticon[\i]} ;
+ }
+}
+
+\NewDocumentCommand\PutIconsSkills{ O{} m }{%
+ \restoreKV[skillswheellevel]%
+ \setKV[skillswheellevel]{#1}%
+ \readlist*\skllsticon{#2}%
+ \foreach \i in {1,...,\skllsticonlen}{%
+ \node[rotate={90-(180*(\i-0.5)/\skilswheelcolorslen)},inner sep=0pt,outer sep=0pt,scale=\skilswheelscalelab] at ({180-180*(\i-0.5)/\skilswheelcolorslen}:{\skilswheelposlab\skilwheelradius}) {\skllsticon[\i]} ;
+ }
+}
+
+\NewDocumentEnvironment{EnvRoueNiveaux}{ O{} D<>{} m }%
+{%
+ %1 := clés
+ %2 := liste couleurs
+ %3 := choix marqueur
+ \restoreKV[skillswheel]%
+ \setKV[skillswheel]{#1}%
+ %\IfEq{#3}{}{\xdef\skilwheelmark{-1}}{\xdef\skilwheelmark{#3}}%
+ \IfSubStr{#3}{,}%
+ {%
+ \readlist*\skilswheelcolors{#3}%
+ }%
+ {%
+ \xdef\skilswheelcolorslen{#3}%
+ }%
+ \IfEq{\skilwheelmark}{}%
+ {}%
+ {%
+ \xintifboolexpr{\skilwheelmark >= 0 'and' \skilwheelmark <= \skilswheelcolorslen}%
+ {%
+ \xdef\skilswheelposcurs{\xintfloateval{180-180*(\skilwheelmark)/\skilswheelcolorslen}}%
+ }%
+ {%
+ \xdef\skilswheelposcurs{\xintfloateval{0.5*\skilswheelcolorslen}}%
+ }%
+ }%
+ \IfEq{\skilwheelskills}{}{}{\readlist*\skilswheellstskills{\skilwheelskills}}%
+ \begin{tikzpicture}[transform shape,#2]
+ \foreach \i in {1,...,\skilswheelcolorslen}{%
+ \IfSubStr{#3}{,}%
+ {%
+ \draw[line join=mitter,line cap=rect,line width=\fpeval{0.015\skilwheelradius},fill={\skilswheelcolors[\i]}] ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) -- ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) arc({180-180*(\i-1)/\skilswheelcolorslen}:{180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) arc({180-180*(\i)/\skilswheelcolorslen}:{180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) ;
+ }%
+ {%
+ \draw[line join=mitter,line cap=rect,line width=\fpeval{0.015\skilwheelradius}] ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) -- ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) arc({180-180*(\i-1)/\skilswheelcolorslen}:{180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) arc({180-180*(\i)/\skilswheelcolorslen}:{180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) ;
+ }%
+ %label
+ \IfEq{\skilwheelskills}{}%
+ {}%
+ {%
+ \xintifboolexpr{ 180*(\i-1)/\skilswheelcolorslen <= 90}%
+ {%
+ \draw[draw=none] ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) node[inner sep=1.5pt,sloped,pos=0.033,above right,font=\skilwheelfonte] {\vphantom{()}\skilswheellstskills[\i]} ;
+ }%
+ {%
+ \draw[draw=none] ({180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) node[inner sep=1.5pt,sloped,pos=0.033,above left,font=\skilwheelfonte] {\vphantom{()}\skilswheellstskills[\i]} ;
+ }%
+ }%
+ }%
+ \IfEq{\skilwheelmark}{}%
+ {}%
+ {%
+ \node[rotate={90+\skilswheelposcurs},regular polygon,regular polygon sides=3,fill=black,inner sep=0pt,minimum size={0.125*\skilwheelradius},outer sep=0pt] at (\skilswheelposcurs:{1.0125\skilwheelradius}) {} ;
+ }%
+}%
+{%
+ \end{tikzpicture}%
+}
+
+\NewDocumentEnvironment{SkillsWheel}{ O{} D<>{} m }%
+{%
+ %1 := clés
+ %2 := liste couleurs
+ %3 := choix marqueur
+ \restoreKV[skillswheel]%
+ \setKV[skillswheel]{#1}%
+ %\IfEq{#3}{}{\xdef\skilwheelmark{-1}}{\xdef\skilwheelmark{#3}}%
+ \IfSubStr{#3}{,}%
+ {%
+ \readlist*\skilswheelcolors{#3}%
+ }%
+ {%
+ \xdef\skilswheelcolorslen{#3}%
+ }%
+ \IfEq{\skilwheelmark}{}%
+ {}%
+ {%
+ \xintifboolexpr{\skilwheelmark >= 0 'and' \skilwheelmark <= \skilswheelcolorslen}%
+ {%
+ \xdef\skilswheelposcurs{\xintfloateval{180-180*(\skilwheelmark)/\skilswheelcolorslen}}%
+ }%
+ {%
+ \xdef\skilswheelposcurs{\xintfloateval{0.5*\skilswheelcolorslen}}%
+ }%
+ }%
+ \IfEq{\skilwheelskills}{}{}{\readlist*\skilswheellstskills{\skilwheelskills}}%
+ \begin{tikzpicture}[transform shape,#2]
+ \foreach \i in {1,...,\skilswheelcolorslen}{%
+ \IfSubStr{#3}{,}%
+ {%
+ \draw[line join=mitter,line cap=rect,line width=\fpeval{0.015\skilwheelradius},fill={\skilswheelcolors[\i]}] ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) -- ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) arc({180-180*(\i-1)/\skilswheelcolorslen}:{180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) arc({180-180*(\i)/\skilswheelcolorslen}:{180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) ;
+ }%
+ {%
+ \draw[line join=mitter,line cap=rect,line width=\fpeval{0.015\skilwheelradius}] ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) -- ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) arc({180-180*(\i-1)/\skilswheelcolorslen}:{180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) arc({180-180*(\i)/\skilswheelcolorslen}:{180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) ;
+ }%
+ %label
+ \IfEq{\skilwheelskills}{}%
+ {}%
+ {%
+ \xintifboolexpr{ 180*(\i-1)/\skilswheelcolorslen <= 90}%
+ {%
+ \draw[draw=none] ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) node[inner sep=1.5pt,sloped,pos=0.033,above right,font=\skilwheelfonte] {\vphantom{()}\skilswheellstskills[\i]} ;
+ }%
+ {%
+ \draw[draw=none] ({180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) node[inner sep=1.5pt,sloped,pos=0.033,above left,font=\skilwheelfonte] {\vphantom{()}\skilswheellstskills[\i]} ;
+ }%
+ }%
+ }%
+ \IfEq{\skilwheelmark}{}%
+ {}%
+ {%
+ \node[rotate={90+\skilswheelposcurs},regular polygon,regular polygon sides=3,fill=black,inner sep=0pt,minimum size={0.125*\skilwheelradius},outer sep=0pt] at (\skilswheelposcurs:{1.0125\skilwheelradius}) {} ;
+ }%
+}%
+{%
+ \end{tikzpicture}%
+}
+
+\newlength{\tmphauteurgradniv}
+\newlength{\tmphauteurspeedom}
+
+\defKV[miniskillswheel]{%
+ Couleurs=\def\miniskillswheelcol{#1},%
+ Colors=\def\miniskillswheelcol{#1},%
+ Marqueur=\def\miniskillswheelmark{#1},%
+ Mark=\def\miniskillswheelmark{#1},%
+ Taille=\setlength{\tmphauteurspeedom}{#1},%
+ Size=\setlength{\tmphauteurspeedom}{#1}
+}
+\setKVdefault[miniskillswheel]{%
+ Couleurs=black,%
+ Colors=black,
+ Marqueur={},%
+ Mark={},
+ Taille=4cm,%
+ Size=4cm
+}
+
+\NewDocumentCommand\MiniCompteurNiveaux{ O{} D<>{} m }{%
+ \restoreKV[miniskillswheel]%
+ \setKV[miniskillswheel]{#1}%
+ \settototalheight{\tmphauteurgradniv}{\hbox{azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN}}%
+ \setlength{\tmphauteurgradniv}{0.90\tmphauteurgradniv}%.
+ \IfEq{\miniskillswheelmark}{}%
+ {}%
+ {%
+ \xintifboolexpr{\miniskillswheelmark >= 0 'and' \miniskillswheelmark <= #3}%
+ {%
+ \xdef\miniskilswheelposcurs{\xintfloateval{180-180*(\miniskillswheelmark)/(#3)}}%
+ }%
+ {%
+ \xdef\miniskilswheelposcurs{\xintfloateval{0.5*(#3)}}%
+ }%
+ }%
+ \IfSubStr{\miniskillswheelcol}{/}%
+ {%
+ \StrCut{\miniskillswheelcol}{/}{\miniskillswheelcolp}{\miniskillswheelcols}%
+ }%
+ {%
+ \xdef\miniskillswheelcolp{\miniskillswheelcol}\xdef\miniskillswheelcols{\miniskillswheelcol}%
+ }%
+ \begin{tikzpicture}[bezier bounding box,baseline={-0.075\tmphauteurgradniv},line width={0.075\tmphauteurgradniv},#2,transform shape]
+ \draw[\miniskillswheelcolp] (-15:{0.7588\tmphauteurgradniv}) arc(-15:195:{0.7588\tmphauteurgradniv}) --cycle ;
+ \foreach \i in {0,...,#3}{%
+ \draw[\miniskillswheelcolp,line cap=round] ({180-180*(\i)/#3}:{0.55\tmphauteurgradniv})--({180-180*(\i)/#3}:{0.65\tmphauteurgradniv}) ;
+ }
+ \IfEq{\miniskillswheelmark}{}%
+ {}%
+ {%
+ \draw[\miniskillswheelcols] (0,0) circle[radius=0.1\tmphauteurgradniv] ;
+ \draw[\miniskillswheelcols,line cap=round] ({\miniskilswheelposcurs}:{0.1\tmphauteurgradniv}) -- ({\miniskilswheelposcurs}:{0.6125\tmphauteurgradniv}) ;
+ }%
+ \end{tikzpicture}%
+}
+
+\NewDocumentCommand\miniskillwheel{ O{} D<>{} m }{%
+ \restoreKV[miniskillswheel]%
+ \setKV[miniskillswheel]{#1}%
+ \settototalheight{\tmphauteurgradniv}{\hbox{azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN}}%
+ \setlength{\tmphauteurgradniv}{0.90\tmphauteurgradniv}%.
+ \IfEq{\miniskillswheelmark}{}%
+ {}%
+ {%
+ \xintifboolexpr{\miniskillswheelmark >= 0 'and' \miniskillswheelmark <= #3}%
+ {%
+ \xdef\miniskilswheelposcurs{\xintfloateval{180-180*(\miniskillswheelmark)/(#3)}}%
+ }%
+ {%
+ \xdef\miniskilswheelposcurs{\xintfloateval{0.5*(#3)}}%
+ }%
+ }%
+ \IfSubStr{\miniskillswheelcol}{/}%
+ {%
+ \StrCut{\miniskillswheelcol}{/}{\miniskillswheelcolp}{\miniskillswheelcols}%
+ }%
+ {%
+ \xdef\miniskillswheelcolp{\miniskillswheelcol}\xdef\miniskillswheelcols{\miniskillswheelcol}%
+ }%
+ \begin{tikzpicture}[bezier bounding box,baseline={-0.075\tmphauteurgradniv},line width={0.075\tmphauteurgradniv},#2,transform shape]
+ \draw[\miniskillswheelcolp] (-15:{0.7588\tmphauteurgradniv}) arc(-15:195:{0.7588\tmphauteurgradniv}) --cycle ;
+ \foreach \i in {0,...,#3}{%
+ \draw[\miniskillswheelcolp,line cap=round] ({180-180*(\i)/#3}:{0.55\tmphauteurgradniv})--({180-180*(\i)/#3}:{0.65\tmphauteurgradniv}) ;
+ }
+ \IfEq{\miniskillswheelmark}{}%
+ {}%
+ {%
+ \draw[\miniskillswheelcols] (0,0) circle[radius=0.1\tmphauteurgradniv] ;
+ \draw[\miniskillswheelcols,line cap=round] ({\miniskilswheelposcurs}:{0.1\tmphauteurgradniv}) -- ({\miniskilswheelposcurs}:{0.6125\tmphauteurgradniv}) ;
+ }%
+ \end{tikzpicture}%
+}
+
+\NewDocumentCommand\tkzspeedometer{ O{} D<>{} m }{%
+ \restoreKV[miniskillswheel]%
+ \setKV[miniskillswheel]{#1}%
+ \setlength{\tmphauteurgradniv}{0.9\tmphauteurspeedom}%
+ \IfEq{\miniskillswheelmark}{}%
+ {}%
+ {%
+ \xintifboolexpr{\miniskillswheelmark >= 0 'and' \miniskillswheelmark <= #3}%
+ {%
+ \xdef\miniskilswheelposcurs{\xintfloateval{180-180*(\miniskillswheelmark)/(#3)}}%
+ }%
+ {%
+ \xdef\miniskilswheelposcurs{\xintfloateval{0.5*(#3)}}%
+ }%
+ }%
+ \IfSubStr{\miniskillswheelcol}{/}%
+ {%
+ \StrCut{\miniskillswheelcol}{/}{\miniskillswheelcolp}{\miniskillswheelcols}%
+ }%
+ {%
+ \xdef\miniskillswheelcolp{\miniskillswheelcol}\xdef\miniskillswheelcols{\miniskillswheelcol}%
+ }%
+ \begin{tikzpicture}[bezier bounding box,line width={0.075\tmphauteurgradniv},#2,transform shape]%
+ \draw[\miniskillswheelcolp] (-15:{0.7588\tmphauteurgradniv}) arc(-15:195:{0.7588\tmphauteurgradniv}) --cycle ;
+ \foreach \i in {0,...,#3}{%
+ \draw[\miniskillswheelcolp,line cap=round] ({180-180*(\i)/#3}:{0.55\tmphauteurgradniv})--({180-180*(\i)/#3}:{0.65\tmphauteurgradniv}) ;
+ }%
+ \IfEq{\miniskillswheelmark}{}%
+ {}%
+ {%
+ \draw[\miniskillswheelcols] (0,0) circle[radius=0.1\tmphauteurgradniv] ;%
+ \draw[\miniskillswheelcols,line cap=round] ({\miniskilswheelposcurs}:{0.1\tmphauteurgradniv}) -- ({\miniskilswheelposcurs}:{0.6125\tmphauteurgradniv}) ;%
+ }%
+ \end{tikzpicture}%
+}
+
\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/dashrulex/dashrulex.sty b/Master/texmf-dist/tex/latex/dashrulex/dashrulex.sty
index 090cfe2931f..31ba58301e2 100644
--- a/Master/texmf-dist/tex/latex/dashrulex/dashrulex.sty
+++ b/Master/texmf-dist/tex/latex/dashrulex/dashrulex.sty
@@ -1,7 +1,7 @@
%
% ***************** THE DASHRULEX PACKAGE *****************
%
-% Copyright (C) 2024 by Qu Yi <toquyi@163.com>
+% Copyright (C) 2024-2025 by Qu Yi <toquyi@163.com>
%
% This work may be distributed and/or modified under the
% conditions of the CC-BY 4.0 License.
@@ -9,27 +9,33 @@
% https://creativecommons.org/licenses/by/4.0/legalcode
\NeedsTeXFormat{LaTeX2e}[2012/02/12]
\RequirePackage{xparse}
-\ProvidesExplPackage{dashrulex}{2024/07/18}{1.01a}
+\ProvidesExplPackage{dashrulex}{2025/01/18}{1.02a}
{Draw dashed rules}
\DeclareDocumentCommand{\hdashrule}{O{0pt}O{x}mmm}
{
\tl_if_blank:nTF {#5}
{ \rule[#1]{#3}{#4} }
{
- \mbox{}
- \use:c { #2leaders }
- \hbox:n
+ \drx@fill@mbox{#3}
{
- \clist_map_inline:nn {#5}
- { \drx@parse@dash{#1}{#4}{##1} }
+ \use:c { #2leaders }
+ \hbox:n
+ {
+ \clist_map_inline:nn {#5}
+ { \drx@parse@dash{#1}{#4}{##1} }
+ }
+ \skip_horizontal:n {#3}
}
- \skip_horizontal:n {#3}
\mbox{}
}
}
+\cs_new_protected:Npn \drx@fill@mbox #1
+ { \str_if_eq:nnTF {#1} { \fill } { \mbox{}\use:n } { \mbox } }
+\ExplSyntaxOff
\NewDocumentCommand{\drx@parse@dash}
- {mm>{\SplitArgument{1}{|}}m}
+ {mm>{\SplitArgument{1}{:}}m}
{\drx@parse@dash@inner{#1}{#2}#3}
+\ExplSyntaxOn
\cs_set_protected:Npn \drx@parse@dash@inner #1#2#3#4
{
\IfNoValueTF{#4}
@@ -38,10 +44,12 @@
}
\NewDocumentCommand{\hanyrule}{O{x}mm}
{
- \mbox{}
- \use:c { #1leaders }
- \hbox:n { \clist_map_inline:nn {#3} {##1} }
- \skip_horizontal:n {#2}
+ \drx@fill@mbox{#2}
+ {
+ \use:c { #1leaders }
+ \hbox:n { \clist_map_inline:nn {#3} {##1} }
+ \skip_horizontal:n {#2}
+ }
\mbox{}
}
diff --git a/Master/texmf-dist/tex/latex/dejavu-otf/dejavu-otf.sty b/Master/texmf-dist/tex/latex/dejavu-otf/dejavu-otf.sty
index 95c293473cc..51691991447 100644
--- a/Master/texmf-dist/tex/latex/dejavu-otf/dejavu-otf.sty
+++ b/Master/texmf-dist/tex/latex/dejavu-otf/dejavu-otf.sty
@@ -4,16 +4,16 @@
%% License from CTAN archives in directory macros/latex/base/lppl.txt.
%% Either version 1.3 or, at your option, any later version.
%%
-% Copyright 2017 Herbert Voss hvoss@tug.org
+% Copyright 2017-2024 Herbert Voss hvoss@tug.org
%%
\ProvidesPackage{dejavu-otf}[%
- 2017/12/05 v. 0.04 (Herbert Voss) Supports DejaVu OpenType for lualatex/xelatex.]
+ 2024/11/30 v. 0.06 (Herbert Voss) Supports DejaVu OpenType for lualatex/xelatex.]
%
-\RequirePackage{ifxetex,ifluatex,xkeyval,textcomp}
+\RequirePackage{iftex,,xkeyval,textcomp}
+\RequirePackage[no-math]{fontspec} % support opentype fonts
\RequirePackage{unicode-math} % support opentype math fonts
- % loads itself fontspec
%
-\newif\ifDejaVu@usefilenames \DejaVu@usefilenamesfalse
+\newif\ifDejaVu@usefilenames \DejaVu@usefilenamestrue
\DeclareOptionX{usefilenames}[true]{\@nameuse{DejaVu@usefilenames#1}}
\newif\ifDejaVu@mono \DejaVu@monotrue
@@ -44,8 +44,17 @@
\defaultfontfeatures{Ligatures=TeX,RawFeature={-smcp},\DejaVu@DefaultFeatures}% default in fontspec
%
\ifDejaVu@usefilenames
+% 14. DejaVuSerif-Bold.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 15. DejaVuSerif-BoldItalic.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 16. DejaVuSerif-Italic.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 17. DejaVuSerif.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 18. DejaVuSerifCondensed-Bold.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 19. DejaVuSerifCondensed-BoldItalic.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 20. DejaVuSerifCondensed-Italic.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 21. DejaVuSerifCondensed.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
%
\ifDejaVu@serif
+ \typeout{Setting DejaVu Serif as main font}%
\setmainfont{DejaVuSerif}[% main rm
\DejaVuRM@features,
Extension = .ttf,
@@ -56,11 +65,25 @@
]
\fi
%
+% 1. DejaVuSans-Bold.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 2. DejaVuSans-BoldOblique.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 3. DejaVuSans-ExtraLight.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 4. DejaVuSans-Oblique.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 5. DejaVuSans.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 6. DejaVuSansCondensed-Bold.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 7. DejaVuSansCondensed-BoldOblique.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 8. DejaVuSansCondensed-Oblique.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 9. DejaVuSansCondensed.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 10. DejaVuSansMono-Bold.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 11. DejaVuSansMono-BoldOblique.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 12. DejaVuSansMono-Oblique.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+% 13. DejaVuSansMono.ttf /usr/local/texlive/2024/texmf-dist/fonts/truetype/public/dejavu/
+%
\ifDejaVu@sans
+ \typeout{Setting DejaVu Sans as sans serif font}%
\setsansfont{DejaVuSans}[% main sans
Extension = .ttf,
\DejaVuSS@features,
- UprightFont= *,
BoldFont = *-Bold,
ItalicFont= *-Oblique,
BoldItalicFont = *-BoldOblique,
@@ -68,6 +91,7 @@
\fi
%
\ifDejaVu@mono
+ \typeout{Setting DejaVu Sans Mono as mono font}%
\setmonofont{DejaVuSansMono}[% main typewriter
UprightFont = *,
Extension = .ttf,
@@ -81,12 +105,10 @@
% Setting math
% First we have to expand the feature macros:
\ifDejaVu@math
- \edef\Set@MathNormal{\noexpand\setmathfont{texgyredejavu-math.otf}[AutoFakeBold=1.4,\DejaVuMM@features,version=normal]}%
- \Set@MathNormal
-% \ifxetex
-% \edef\Set@MathBold{\noexpand\setmathfont{texgyredejavu-math.otf}[AutoFakeBold=2,\DejaVuMMbold@features,version=bold]}%
-% \Set@MathBold
-% \fi
+ \typeout{Setting DejaVu (OpenType) as math font}%
+ \expandafter\setmathfont\expandafter[\DejaVuMM@features,version=normal]{texgyredejavu-math.otf}%
+ \expandafter\setmathfont\expandafter[\DejaVuMM@features,FakeBold=3,version=bold]{texgyredejavu-math.otf}%
+ \mathversion{normal}%
\fi
%
\newfontfamily\DejaVuSerifCondensed{DejaVuSerifCondensed}[%
@@ -108,11 +130,13 @@
\newfontfamily\DejaVuSansLight{DejaVuSans-ExtraLight}[%
Extension = .ttf,
\DejaVuSS@features,
- BoldFont = *-Bold,
- ItalicFont= *-Oblique,
- BoldItalicFont = *-BoldOblique,
+ BoldFont = *,
+ BoldFeatures = { RawFeature={embolden=3} },
+ ItalicFont = *,
+ ItalicFeatures = { FakeSlant = 0.2},
+ BoldItalicFont = *,
+ BoldItalicFeatures = { RawFeature={embolden=3},FakeSlant=0.2},
]
-
\else
%----------------------------------------- symbolic names ----------------------------
\typeout {Using symbolic names for the DejaVu font}%
@@ -158,13 +182,14 @@
% First we have to expand the feature macros:
\ifDejaVu@math
\ifxetex
- \edef\Set@MathNormal{\noexpand\setmathfont{texgyredejavu-math.otf}[AutoFakeBold=1,\DejaVuMMbold@features]}%
+ \expandafter\setmathfont\expandafter[\DejaVuMM@features,version=normal]{texgyredejavu-math.otf}%
+ \expandafter\setmathfont\expandafter[\DejaVuMM@features,FakeBold=3,version=bold]{texgyredejavu-math.otf}%
\else
- \edef\Set@MathNormal{\noexpand\setmathfont{TeXGyreDejaVuMath-Regular}[\DejaVuMM@features]%
- \noexpand\setmathfont{TeXGyreDejaVuMath-Regular}[\DejaVuMM@features,version=bold]%
+ \expandafter\setmathfont\expandafter[\DejaVuMM@features,version=normal]{TeXGyreDejaVuMath-Regular}%
+ \expandafter\setmathfont\expandafter[\DejaVuMM@features,FakeBold=3,version=bold]{TeXGyreDejaVuMath-Regular}%
}%
\fi
- \Set@MathNormal
+ \mathversion{normal}
\fi
\newfontfamily\DejaVuSerifCondensed{DejaVu Serif Condensed}[%
@@ -180,14 +205,18 @@
BoldFont = * Bold,
ItalicFont= * Oblique,
BoldItalicFont = * Bold Oblique,
- ]
+ ]
\newfontfamily\DejaVuSansLight{DejaVu Sans ExtraLight}[%
+ UprightFont = *,
\DejaVuSS@features,
- ]
-
+ BoldFont = *,
+ BoldFeatures = { RawFeature={embolden=3} },
+ ItalicFont= *,
+ ItalicFeatures = { FakeSlant = 0.2},
+ BoldItalicFont = *,
+ BoldItalicFeatures = { RawFeature={embolden=3},FakeSlant=0.2},
+ ]
\fi
\endinput
-
-
diff --git a/Master/texmf-dist/tex/latex/delimset/delimset.sty b/Master/texmf-dist/tex/latex/delimset/delimset.sty
index 28ba8ba53e3..d5650adc0d6 100644
--- a/Master/texmf-dist/tex/latex/delimset/delimset.sty
+++ b/Master/texmf-dist/tex/latex/delimset/delimset.sty
@@ -6,18 +6,18 @@
%%
%% delimset.dtx (with options: `package')
%%
-%% Copyright (C) 2016-2024 Niklas Beisert
+%% Copyright (C) 2016-2025 Niklas Beisert
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
+%% https://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
\NeedsTeXFormat{LaTeX2e}[1996/12/01]
-\ProvidesPackage{delimset}[2024/07/17 v2.0 convenient size control for delimiter sets]
+\ProvidesPackage{delimset}[2025/01/05 v2.1 convenient size control for delimiter sets]
\RequirePackage{amsmath}
\RequirePackage{keyval}
@@ -126,14 +126,23 @@
\newcommand{\dlm@var@pl}[1]{\dlm@var@l.\mathopen{#1}}
\newcommand{\dlm@var@pr}[1]{\mathclose{#1}\dlm@var@r.}
+\newcount\dlm@reg@lvl
+\dlm@reg@lvl\z@
+\def\dlm@reg@dot{.}
+\newcommand{\dlm@reg@set}[1]{\edef\dlm@reg@cur{#1}\ifx\dlm@reg@cur\dlm@reg@dot%
+ \edef\dlm@reg@cur{\dlm@reg@dot\the\dlm@reg@lvl}\fi}
+\newcommand{\dlm@reg@step}[1]{\global\advance\dlm@reg@lvl#1%
+ \ifnum\dlm@reg@lvl<\z@\PackageError{delimset}{register stack exhausted}{}%
+ \dlm@reg@lvl\z@\fi}
\newcommand{\dlm@reg@save@init}[1]{%
\xdef#1{\delimsize\the\delimsize}\ifx\dlm@inner\mathinner%
\expandafter\gdef\expandafter#1\expandafter{#1\dlm@enclose@inner}\fi}
-\newcommand{\dlm@reg@save}[2]{%
- \expandafter\dlm@reg@save@init\csname dlm@reg@init@#1\endcsname%
- \expandafter\gdef\csname dlm@reg@sel@#1\endcsname{#2}}
-\newcommand{\dlm@reg@init}[1]{\csname dlm@reg@init@#1\endcsname}
-\newcommand{\dlm@reg@sel}[1]{\csname dlm@reg@sel@#1\endcsname}
+\newcommand{\dlm@reg@save}[2]{\dlm@reg@set{#1}%
+ \expandafter\dlm@reg@save@init\csname dlm@reg@init@\dlm@reg@cur\endcsname%
+ \expandafter\gdef\csname dlm@reg@sel@\dlm@reg@cur\endcsname{#2}}
+\newcommand{\dlm@reg@init}[1]{\dlm@reg@set{#1}%
+ \csname dlm@reg@init@\dlm@reg@cur\endcsname}
+\newcommand{\dlm@reg@sel}{\csname dlm@reg@sel@\dlm@reg@cur\endcsname}
\newcommand{\parsedelimflags}{\dlm@setsize{0.6}\let\dlm@phantom\@firstofone%
\dlm@enclose@openclose\dlm@enclose@inline\dlm@parseflags}
@@ -165,11 +174,13 @@
\dlm@parsedef{)}{}{\def\selecteddelim{9}#2}
\dlm@parsedef{?}{#3}{\def\selecteddelim{#3}#2}
-\dlm@parsedef{[}{}{\dlm@reg@save{.}{#2}\def\selecteddelim{0}#2}
-\dlm@parsedef{]}{}{\dlm@reg@init{.}\def\selecteddelim{9}\dlm@reg@sel{.}}
+\dlm@parsedef{[}{}{\dlm@reg@step\@ne\dlm@reg@save\dlm@reg@dot{#2}%
+ \def\selecteddelim{0}#2}
+\dlm@parsedef{]}{}{\dlm@reg@init\dlm@reg@dot\dlm@reg@step\m@ne%
+ \def\selecteddelim{9}\dlm@reg@sel}
\dlm@parsedef{>}{#3}{\dlm@reg@save{#3}{#2}}
\dlm@parsedef{<}{#3}{\dlm@reg@init{#3}\dlm@parseflags%
- {\PackageError{delimset}{must select delimiter}{}}{\dlm@reg@sel{#3}}}
+ {\PackageError{delimset}{must select delimiter}{}}{\dlm@reg@sel}}
\dlm@parsedef{.}{}{#1}
\dlm@parsedef{:}{}{\dlm@enclose@block\dlm@parseflags{#1}{#2}}
@@ -218,8 +229,14 @@
\newcommand{\dlm@sel@delimtriple}[4]{\ifcase\selecteddelim\selectdeliml#1%
\or\selectdelim#2\or\selectdelim#3\else\selectdelimr#4\fi}
-\newcommand{\usedelim}{\@ifnextchar]{\parsedelimflags{}{}}{\parsedelimflags%
- {\PackageError{delimset}{must select delimiter}{}}{}<}}
+\newcommand{\usedelim}{%
+ \@ifnextchar]{\parsedelimflags{}{}}{%
+ \@ifnextchar({\parsedelimflags{}{}<.}{%
+ \@ifnextchar|{\parsedelimflags{}{}<.}{%
+ \@ifnextchar,{\parsedelimflags{}{}<.}{%
+ \@ifnextchar){\parsedelimflags{}{}<.}{%
+ \@ifnextchar?{\parsedelimflags{}{}<.}{%
+ \parsedelimflags{}{}<}}}}}}}
\ifdlm@std
\providecommand{\brk}[1][r]{\begingroup\def\dlm@use{\delim()}%
diff --git a/Master/texmf-dist/tex/latex/dynkin-diagrams/dynkin-diagrams.sty b/Master/texmf-dist/tex/latex/dynkin-diagrams/dynkin-diagrams.sty
index 7a92e22048e..b2af571c4c6 100644
--- a/Master/texmf-dist/tex/latex/dynkin-diagrams/dynkin-diagrams.sty
+++ b/Master/texmf-dist/tex/latex/dynkin-diagrams/dynkin-diagrams.sty
@@ -1,6 +1,6 @@
% The Dynkin Diagrams package.
%
-% Version 3.141 592 653 589 793 238 46
+% Version 3.141 592 653 589 793 238 462
%
% This package draws Dynkin diagrams in LaTeX
% documents, using the TikZ package.
@@ -13,7 +13,7 @@
% Released under the LaTeX Project Public License v1.3c or later, see
% http://www.latex-project.org/lppl.txt
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
-\ProvidesPackage{dynkin-diagrams}[2024/07/05 Dynkin diagrams]
+\ProvidesPackage{dynkin-diagrams}[2024/12/04 Dynkin diagrams]
\RequirePackage{tikz}
\RequirePackage{xstring}
\RequirePackage{etoolbox}
@@ -3460,7 +3460,8 @@
{%
\global#5=%
\stringCharacterInPosition%
- {13456782}{#4}%
+ {87654312}{#4}%
+ %% {13456782}{#4}% <-- Old error!
\relax%
}%
{Kac}%
@@ -3623,7 +3624,8 @@
{%
\global#5=%
\stringCharacterInPosition%
- {18234567}{#3}%
+ {78654321}{#3}%
+% {18234567}{#3}% <<--- Old error.
\relax%
}%
{Kac}%
@@ -3753,7 +3755,8 @@
{%
{Adams}{\global\dynkin@Root@Number=\stringCharacterInPosition{13245678}{#1}\relax}%
{Carter}{\global\dynkin@Root@Number=\stringCharacterInPosition{86754321}{#1}\relax}%
- {Dynkin}{\global\dynkin@Root@Number=\stringCharacterInPosition{18234567}{#1}\relax}%
+ {Dynkin}{\global\dynkin@Root@Number=\stringCharacterInPosition{78654321%%18234567
+}{#1}\relax}%
{Kac}{\global\dynkin@Root@Number=\stringCharacterInPosition{78654321}{#1}\relax}%
}%
[\global\dynkin@Root@Number=#1\relax]%
@@ -5044,6 +5047,12 @@
\else%
\global\dynkin@reverse@arrowstrue\relax%
\fi\relax}%
+% {Carter}{%
+% \ifdynkin@reverse@arrows%
+% \global\dynkin@reverse@arrowsfalse\relax%
+% \else%
+% \global\dynkin@reverse@arrowstrue\relax%
+% \fi\relax}%
{Carter}{\relax}%
{Dynkin}{\relax}%
{Kac}{\relax}%
@@ -5080,7 +5089,13 @@
\else%
\global\dynkin@reverse@arrowstrue\relax%
\fi\relax}%
- {Carter}{\relax}%
+% {Carter}{%
+% \ifdynkin@reverse@arrows%
+% \global\dynkin@reverse@arrowsfalse\relax%
+% \else%
+% \global\dynkin@reverse@arrowstrue\relax%
+% \fi\relax}%
+ {Carter}{\relax}% <<--- This was wrong for a long time!
{Dynkin}{\relax}%
{Kac}{\relax}%
}%
diff --git a/Master/texmf-dist/tex/latex/easybook/easybase.sty b/Master/texmf-dist/tex/latex/easybook/easybase.sty
index a600ece91d2..52de8e4cb17 100644
--- a/Master/texmf-dist/tex/latex/easybook/easybase.sty
+++ b/Master/texmf-dist/tex/latex/easybook/easybase.sty
@@ -5,7 +5,7 @@
%% The original source files were:
%%
%% easybook.dtx (with options: `package')
-%% Copyright (C) 2021-2024 by Qu Yi <toquyi@163.com>
+%% Copyright (C) 2021-2025 by Qu Yi <toquyi@163.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -20,7 +20,7 @@
%% This work has the LPPL maintenance status `maintained'.
\NeedsTeXFormat{LaTeX2e}[2021/11/15]
\RequirePackage{etoolbox}
-\ProvidesExplPackage{easybase}{2024/09/11}{2024dn}
+\ProvidesExplPackage{easybase}{2025/01/26}{2025f}
{Easily typesetting Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -30,7 +30,6 @@
\cs_generate_variant:Nn \skip_set:Nn { NV }
\cs_generate_variant:Nn \ctex_define:nn { nx }
\cs_generate_variant:Nn \eb_set_hyperref:n { x }
-\cs_generate_variant:Nn \eb_at_begin_environment:nn { o }
\cs_generate_variant:Nn \tl_if_novalue:nF { V }
\cs_set_protected:Npn \ctex_define:nn #1
@@ -44,11 +43,6 @@
{ \AddToHook{cmd/#1/before}{#2} }
\cs_new_protected:Npn \eb_appto_cmd:nn #1#2
{ \AddToHook{cmd/#1/after}{#2} }
-\cs_new_protected:Npn \eb_at_begin_environment:nn #1#2
- {
- \clist_map_inline:nn {#1}
- { \AtBeginEnvironment{##1}{#2} }
- }
\cs_set_protected:Npn \ctex_before_end_preamble:n
{ \BeforeBeginEnvironment{document} }
\cs_new_protected:Npn \eb_if_package_loaded:nnF #1#2#3
@@ -111,6 +105,7 @@
\clist_new:N \g__eb_ctex_options_clist
\cs_new_protected:Npn \eb_put_geometry:n #1
{ \PassOptionsToPackage{#1}{geometry} }
+\providebool{@openright}
\keys_define:nn { easybase }
{
@@ -122,9 +117,18 @@
floatpage .bool_set:N = \l__eb_float_page_bool,
floatpage .default:n = true,
floatpage .initial:n = false,
- theorem .bool_set:N = \l__eb_theorem_support_bool,
- theorem .default:n = true,
- theorem .initial:n = true,
+ theorem .choices:nn =
+ { thmtools,keytheorems,false }
+ { \tl_set:Nn \l__eb_theorem_support_tl {#1} },
+ theorem/true .meta:n = { theorem = thmtools },
+ theorem .default:n = thmtools,
+ theorem .initial:n = thmtools,
+ chem .choices:nn =
+ { chemformula,mhchem,false }
+ { \tl_set:Nn \l__eb_chem_support_tl {#1} },
+ chem/true .meta:n = { chem = chemformula },
+ chem .default:n = chemformula,
+ chem .initial:n = chemformula,
paper .code:n = \eb_put_geometry:n {#1},
paper .initial:n = a4paper,
class .choice:,
@@ -134,6 +138,7 @@
\bool_set_true:N \l__eb_class_mode_book_bool
\eb_put_geometry:n { twoside }
\booltrue{@titlepage}
+ \booltrue{@openright}
},
class/article .code:n =
{
@@ -141,9 +146,15 @@
\eb_put_geometry:n { twoside = false }
\boolfalse{@titlepage}
},
- class .initial:n = book,
+ class .initial:x = \cs_if_exist:NTF \chapter { book } { article },
book .meta:n = { class = book },
article .meta:n = { class = article },
+ twoside .code:n = \eb_put_geometry:n { twoside },
+ oneside .code:n = \eb_put_geometry:n { twoside = false },
+ titlepage .code:n = \booltrue{@titlepage},
+ notitlepage .code:n = \boolfalse{@titlepage},
+ openright .code:n = \booltrue{@openright},
+ openany .code:n = \boolfalse{@openright},
unknown .code:n = \clist_gput_right:NV \g__eb_ctex_options_clist \CurrentOption
}
@@ -229,11 +240,10 @@
{
[text]{spbmark},
[{shortlabels,inline}]{enumitem},
- chemformula,siunitx,pifont,
- geometry,marginnote,
- pdfpages,multicol,
+ siunitx,pifont,
+ geometry,marginnote,multicol,
fancyhdr,titletoc,caption,
- tabularray,
+ tabularray,graphicx,xcolor,
listings
}
\cs_new_protected:Npn \eb_package_date_check:nn #1#2
@@ -249,50 +259,8 @@
Please~update~your~macro~package~from~CTAN.
}
-\NewDocumentCommand{\eb_assign_tagform:n}
- {>{\SplitArgument{1}{,}}m}
- {\eb_assign_tagform_pos:nn #1}
-\cs_new_protected:Npn \eb_assign_tagform_pos:nn #1#2
- {
- \tl_set:Nn \eb@tag@brackets@left {#1}
- \tl_set:Nn \eb@tag@brackets@right {#2}
- }
-\cs_gset:Npn \tagform@ #1
- {
- \maketag@@@
- {
- \color{ctex@emph}
- \ignorespaces
- \eb@tag@brackets@left{#1}
- \unskip\@@italiccorr
- \eb@tag@brackets@right
- }
- }
-\ctex_define:nn { tools }
- {
- multoc .int_set:N = \l__eb_toc_columns_int,
- multoc .default:n = 2,
- withpart .bool_set:N = \l__eb_chap_counter_withpart_bool,
- withpart .default:n = true,
- withpart .initial:n = false,
- uppercase .tl_set:N = \l__eb_mark_uppercase_value_tl,
- uppercase .default:n = all,
- uppercase .initial:n = all,
- tagform .code:n = \eb_assign_tagform:n {#1},
- tagform .initial:n = { (,) },
- brackets .meta:n = { tagform = {#1} },
- figurepath .code:n =
- {
- \tl_if_blank:nF {#1}
- {
- \regex_match:nnTF { \cB. } {#1}
- { \graphicspath{#1} }
- { \graphicspath{{#1}} }
- }
- }
- }
-
-\includepdfset{fitpaper = true}
+\ctex_at_end_package:nn { pdfpages }
+ { \includepdfset{fitpaper = true} }
\geometry
{
vmargin = 2.54cm,
@@ -346,14 +314,16 @@
\pagenumbering{arabic}
}
\NewDocumentCommand{\markrule}
- {O{\textwidth}D(){ctex@frame}m>{\SplitArgument{1}{|}}O{}}
- {\eb_draw_markrule:nnnnn {#1} {#2} {#3} #4}
-\cs_new_protected:Npn \eb_draw_markrule:nnnnn #1#2#3#4#5
+ {O{\textwidth}D(){ctex@frame}mO{0pt}}
{
\group_begin:
- \tl_if_blank:nF {#4} { \vspace*{#4} }
- \color{#2}\hrule\@width #1\@height #3
- \tl_if_novalue:nF {#5} { \vspace*{#5} }
+ \color{#2}
+ \exp_last_unbraced:Nx \hrule
+ {
+ \@width \dim_eval:n {#1}
+ \@height \dim_eval:n {#3}
+ \@depth \dim_eval:n {#4}
+ }
\group_end:
}
\cs_new:Npn \eb_mark_uppercase_case_init:n
@@ -367,10 +337,10 @@
}
\cs_new_protected:Npn \eb@register@hdr@mark #1
{
- \exp_args:Nc \NewDocumentCommand { eb@mark@#1@label@layout }
+ \exp_args:Nc \DeclareDocumentCommand { eb@mark@#1@label@layout }
{O{\use:c { CTEXthe#1 }}m}
{\tl_set:cn { eb@mark@#1@label } {##1##2}}
- \cs_new_protected:cpn { eb_mark_#1_name_parse:n } ##1
+ \cs_set_protected:cpn { eb_mark_#1_name_parse:n } ##1
{
\regex_match:nnTF { ^\[.*\] } {##1}
{ \use:c { eb@mark@#1@label@layout }##1 }
@@ -385,6 +355,7 @@
\eb_mark_uppercase_case_init:n {##1}
},
#1-label .code:n = \use:c { eb_mark_#1_name_parse:n } {##1},
+ #1-label .initial:n = \hspace{0.5em}
}
}
\cs_new_protected:Npn \RegisterHdrMark #1
@@ -393,13 +364,7 @@
\eb@register@hdr@mark
}
\RegisterHdrMark{chapter,section,subsection}
-
-\ctex_set:nn { hdr }
- {
- chapter-label = \hspace{1em},
- section-label = \hspace{0.5em},
- subsection-label = \hspace{0.5em}
- }
+\ctex_set:nn { hdr } { chapter-label = \hspace{1em} }
\ctex_define:nn { hdr }
{
chap-mark .meta:n = { chapter-mark = {#1} },
@@ -417,22 +382,26 @@
footrule .tl_gset:N = \footrule,
footrule .initial:n = { },
footnoterule .tl_gset:N = \footnoterule,
- footnoterule .initial:n = \markrule[0.35\textwidth]{\eb@footnote@rule@wd}[|3pt]
+ footnoterule .initial:n =
+ {
+ \markrule[0.35\textwidth]{\eb@footnote@rule@wd}
+ \vspace*{3pt}
+ }
}
\cs_set:Npn \markdouble #1 { \markboth{#1}{\ifbool{@twoside}{#1}{}} }
-\cs_new:Npn \eb@level@markdouble #1#2
+\cs_new_protected:Npn \eb@level@markdouble #1#2
{ \markdouble{\use:c { eb@mark@#1@whole }{#2}} }
-\cs_new:Npn \eb@level@markright #1#2
+\cs_new_protected:Npn \eb@level@markright #1#2
{ \markright{\use:c { eb@mark@#1@whole }{#2}} }
\cs_gset:Npn \chaptermark #1 { \eb@level@markdouble{chapter}{#1} }
-\cs_gset:Npn \sectionmark #1
+\cs_gset:Npx \sectionmark #1
{
\bool_if:NTF \l__eb_class_mode_book_bool
{ \eb@level@markright{section}{#1} }
{ \eb@level@markdouble{section}{#1} }
}
-\cs_gset:Npn \subsectionmark #1
+\cs_gset:Npx \subsectionmark #1
{
\bool_if:NF \l__eb_class_mode_book_bool
{ \eb@level@markright{subsection}{#1} }
@@ -480,13 +449,13 @@
{ \tl_clear:N \l__eb_fntext_after_tl }
{ \tl_set:Nn \l__eb_fntext_after_tl {#2} }
}
-\cs_new_protected:Npn \eb_fnmarktext_counter_pifont:N #1
+\cs_new_protected:Npn \eb_fnnormal_counter_pifont:N #1
{ \ding{\int_eval:n { 171 + #1 }} }
-\cs_new_protected:Npn \eb_fnmarktext_counter_pifont_neg:N #1
+\cs_new_protected:Npn \eb_fnnormal_counter_pifont_neg:N #1
{ \ding{\int_eval:n { 181 + #1 }} }
-\cs_new_protected:Npn \eb_fnmarktext_counter_pisans:N #1
+\cs_new_protected:Npn \eb_fnnormal_counter_pisans:N #1
{ \ding{\int_eval:n { 191 + #1 }} }
-\cs_new_protected:Npn \eb_fnmarktext_counter_pisans_neg:N #1
+\cs_new_protected:Npn \eb_fnnormal_counter_pisans_neg:N #1
{ \ding{\int_eval:n { 201 + #1 }} }
\cs_new:Npn \eb_fnt_map_symbols_list:n #1
{
@@ -498,7 +467,7 @@
{
\quark_if_recursion_tail_stop:n {#1}
\quark_if_recursion_tail_stop:n {#2}
- { #1 + \int_use:N \c@footnote } {#2}
+ { #1 + \int_use:N \c@footnote } { \exp_not:n {#2} }
\eb_fnt_map_symbols_list:nn
}
\cs_new_protected:Npn \SetFntSymbsList #1#2#3
@@ -521,57 +490,74 @@
\msg_new:nnn { easybase } { undefined-fntsymbol }
{ The~list~of~footnote~symbols~'#1'~isn't~defined. }
\SetFntSymbsList{empty}{1}{}
+\SetFntSymbsList{fnsymbol}{10}
+ {
+ { 1 } { $*$ }
+ { 2 } { $\dagger$ }
+ { 3 } { $\ddagger$ }
+ { 4 } { $\mathsection$ }
+ { 5 } { $\mathparagraph$ }
+ { 6 } { $\|$ }
+ { 7 } { $**$ }
+ { 8 } { $\dagger\dagger$ }
+ { 9 } { $\ddagger\ddagger$ }
+ { 10 } { \@ctrerr }
+ }
\UseFntSymbsList{empty}
\cs_set_eq:NN \DefineFntSymbols \SetFntSymbsList
\cs_set_eq:NN \setfntsymbol \UseFntSymbsList
-\cs_new:Npn \eb_int_type_trans:NN #1
+\tl_new:N \l__eb_fnnormal_tmpa_tl
+\tl_new:N \l__eb_fnnormal_tmpb_tl
+\cs_new_protected:Npn \eb_fnnormal_normal_label_set:Nn #1#2
{
- \str_case:nn {#1}
- {
- { A } { \int_to_Alph:n }
- { a } { \int_to_alph:n }
- { 1 } { \int_to_arabic:n }
- { I } { \int_to_Roman:n }
- { i } { \int_to_roman:n }
- { c } { \exp_args:NV \zhnumber }
- { s } { \eb_int_to_symbols:n }
- }
- }
-\cs_new_protected:Npn \eb_fnmarktext_normal_label_set:Nn #1#2
- {
- \tl_set:Nn \l__eb_fnmarktext_number_type_tl {#2}
+ \tl_set:Nn \l__eb_fnnormal_tmpa_tl {#2}
\cs_set:Npx #1
{
- \str_case:VnT \l__eb_fnmarktext_number_type_tl
+ \str_case:VnT \l__eb_fnnormal_tmpa_tl
{
{ plain }
{ \exp_not:N \int_use:N }
{ pifont }
- { \eb_fnmarktext_counter_pifont:N }
+ { \eb_fnnormal_counter_pifont:N }
{ pifont* }
- { \eb_fnmarktext_counter_pifont_neg:N }
+ { \eb_fnnormal_counter_pifont_neg:N }
{ pisans }
- { \eb_fnmarktext_counter_pisans:N }
+ { \eb_fnnormal_counter_pisans:N }
{ pisans* }
- { \eb_fnmarktext_counter_pisans_neg:N }
+ { \eb_fnnormal_counter_pisans_neg:N }
}
{ \exp_not:N \c@footnote }
}
\cs_set_eq:NN \thedownfootnote \thefootnote
}
\cs_generate_variant:Nn \msg_warning:nnnn { nnnV }
-\cs_new_protected:Npn \eb_fnmarktext_short_label_set:Nn #1#2
+\cs_new:Npn \eb_footnote_int_trans:n #1
+ {
+ \prop_item:Nn \l__eb_int_trans_cmds_prop {#1}
+ \exp_not:N \c@footnote
+ }
+\prop_set_from_keyval:Nn \l__eb_int_trans_cmds_prop
{
- \tl_set:Nn \l__eb_fnmarktext_short_tokens_tl {#2}
+ A = \int_to_Alph:n,
+ a = \int_to_alph:n,
+ 1 = \int_to_arabic:n,
+ I = \int_to_Roman:n,
+ i = \int_to_roman:n,
+ c = \exp_args:NV \zhnumber,
+ s = \eb_int_to_symbols:n
+ }
+\cs_new_protected:Npn \eb_fnnormal_short_label_set:Nn #1#2
+ {
+ \tl_set:Nn \l__eb_fnnormal_tmpb_tl {#2}
\clist_map_inline:nn
{ A,a,1,I,i,c,s }
{
\regex_match:nnTF {##1} {#2}
{
\regex_replace_once:nnN {##1}
- { \c{eb_int_type_trans:NN} ##1 \c{c@footnote} }
- \l__eb_fnmarktext_short_tokens_tl
- \cs_set_eq:NN #1 \l__eb_fnmarktext_short_tokens_tl
+ { \c{eb_footnote_int_trans:n}\0 }
+ \l__eb_fnnormal_tmpb_tl
+ \cs_set:Npx #1 { \l__eb_fnnormal_tmpb_tl }
\clist_map_break:
}
{
@@ -610,7 +596,7 @@
{ \tl_set:Nn \l__eb_footnote_value_tl {#1} }
}
}
-\cs_new_protected:Npn \eb_fnmarktext_move_set:nnn #1#2#3
+\cs_new_protected:Npn \eb_fnnormal_move_set:nnn #1#2#3
{
\str_if_eq:nnTF {#1} { match }
{
@@ -629,7 +615,7 @@
}
}
-\tl_new:N \l__eb_fnmarktext_format_tl
+\tl_new:N \l__eb_fnnormal_format_tl
\tl_new:N \l__eb_fncustom_format_tl
\clist_new:N \l__eb_footnote_value_clist
\ctex_define:nn { hdr }
@@ -646,33 +632,35 @@
fntext-pos .initial:n = super,
fntext-code .code:n = \eb_assign_fntext_code:n {#1},
fntext-code .initial:n = { ,\tl_if_eq:NnF \l__eb_fntext_position_tl { super } { ~ } },
- fnmarktext-format .code:n = \eb_fnboth_format_set:nn {#1} { marktext },
+ fnnormal-format .code:n = \eb_fnboth_format_set:nn {#1} { normal },
fncustom-format .code:n = \eb_fnboth_format_set:nn {#1} { custom },
- fnboth-format .meta:n = { fnmarktext-format = {#1},fncustom-format = {#1} },
+ fnmarktext-format .meta:n = { fnnormal-format = {#1} },
+ fnboth-format .meta:n = { fnnormal-format = {#1},fncustom-format = {#1} },
footnotetype .multichoices:nn =
{ plain,hang,bottom,para,flush }
{ \eb_footnote_value_handle:n {#1} },
footnotetype .value_required:n = true,
footnotetype/default .meta:n = { footnotetype = plain },
footnotetype .initial:n = hang,
- fnmark-vmove .code:n = \eb_fnmarktext_move_set:nnn {#1} { mark } { v },
- fnmark-hmove .code:n = \eb_fnmarktext_move_set:nnn {#1} { mark } { h },
- fntext-vmove .code:n = \eb_fnmarktext_move_set:nnn {#1} { text } { v },
+ fnmark-vmove .code:n = \eb_fnnormal_move_set:nnn {#1} { mark } { v },
+ fnmark-hmove .code:n = \eb_fnnormal_move_set:nnn {#1} { mark } { h },
+ fntext-vmove .code:n = \eb_fnnormal_move_set:nnn {#1} { text } { v },
fnmark-vmove .initial:n = 0pt,
fnmark-hmove .initial:n = 0pt,
fntext-vmove .initial:n = 0pt,
fnmark-num .choices:nn =
{ plain,pifont,pifont*,pifont-sans,pifont-sans* }
- { \eb_fnmarktext_normal_label_set:Nn \theupfootnote {#1} },
+ { \eb_fnnormal_normal_label_set:Nn \theupfootnote {#1} },
fnmark-num .value_required:n = true,
- fnmark-num/unknown .code:n = \eb_fnmarktext_short_label_set:Nn \theupfootnote {#1},
+ fnmark-num/unknown .code:n = \eb_fnnormal_short_label_set:Nn \theupfootnote {#1},
fntext-num .choices:nn =
{ plain,pifont,pifont*,pifont-sans,pifont-sans* }
- { \eb_fnmarktext_normal_label_set:Nn \thefootnote {#1} },
+ { \eb_fnnormal_normal_label_set:Nn \thefootnote {#1} },
fntext-num .value_required:n = true,
- fntext-num/unknown .code:n = \eb_fnmarktext_short_label_set:Nn \thefootnote {#1},
- fnmarktext-num .meta:n = { fntext-num = {#1},fnmark-num = {#1} },
- fnmarktext-num .initial:n = plain,
+ fntext-num/unknown .code:n = \eb_fnnormal_short_label_set:Nn \thefootnote {#1},
+ fnnormal-num .meta:n = { fntext-num = {#1},fnmark-num = {#1} },
+ fnnormal-num .initial:n = plain,
+ fnmarktext-num .meta:n = { fnnormal-num = {#1} },
unknown .code:n = \eb_msg_deprecated_option:n { hdr }
}
@@ -683,7 +671,11 @@
\str_case:VnT \l__eb_fnt_parent_counter_tl
{
{ part } { \counterwithin*{footnote}{part} }
- { page } { \counterwithin*{footnote}{page} }
+ { page }
+ {
+ \RequirePackage{zref-perpage}
+ \zmakeperpage{footnote}
+ }
}
{ \counterwithout*{footnote}{chapter} }
}
@@ -717,17 +709,17 @@
}
}
\def\@outputbox@attachfloats{\@combinefloats}
-\NewHook{makecol/footins/before}
-\NewHook{makecol/footins/begin}
+\NewHook{eb/footins/before}
+\NewHook{eb/footins/begin}
\def\@outputbox@appendfootnotes
{
\@if@footnotes@TF
{
- \UseHook{makecol/footins/before}
+ \UseHook{eb/footins/before}
\@outputbox@append
{
\vskip\skip\footins
- \UseHook{makecol/footins/begin}
+ \UseHook{eb/footins/begin}
\color@begingroup
\normalcolor
\footnoterule
@@ -826,13 +818,12 @@
\l__eb_fnpara_format_tl{#1}
\tl_if_eq:NnT \l__eb_footnote_value_tl { hang } { \par }
}
-\cs_new_protected:Npn \setspread #1 { \linespread{#1}\selectfont }
\clist_map_inline:nn { \@footnotetext,\@mpfootnotetext }
{
\eb_patch_cmd:Nnn #1
{ \reset@font }
{
- \setspread{\eb@spread@footnote}
+ \usestretch{\eb@spread@footnote}
\eb@font@footnote
}
}
@@ -870,6 +861,7 @@
\cs_set_protected:Npn \footref #1
{
\group_begin:
+ \unrestored@protected@xdef\@thefnmark{\ref{#1}}
\unrestored@protected@xdef\@the@up@fnmark{\ref{#1}}
\group_end:
\H@@footnotemark
@@ -911,6 +903,7 @@
{ \@xfootnotemark }
{
\stepcounter{footnote}
+ \protected@xdef\@thefnmark{\thefootnote}
\protected@xdef\@the@up@fnmark{\theupfootnote}
\@footnotemark
}
@@ -920,7 +913,8 @@
\cs_set:Npn \@xfootnotemark [#1]
{
\group_begin:
- \setcounter{footnote}{#1}
+ \int_set:Nn \c@footnote {#1}
+ \protected@xdef\@thefnmark{\thefootnote}
\unrestored@protected@xdef\@the@up@fnmark{\theupfootnote}
\group_end:
\H@@footnotemark
@@ -929,31 +923,33 @@
\ProvideDocumentCommand{\super}{mo}{\textsuperscript{#1}}
\providecommand{\spbset}{\use_none:n}
-\NewDocumentCommand{\eb@fnmarktext@super}{sm}
+\NewDocumentCommand{\eb@fnnormal@super}{sm}
{
\IfBooleanTF{#1}
{\super{#2}[vmove = \l__eb_fntext_vmove_tl,nohmove]}
{
- \super{\l__eb_fnmarktext_format_tl{#2}}[
+ \super{\l__eb_fnnormal_format_tl{#2}}[
vmove = \l__eb_fnmark_vmove_tl,
hmove = \l__eb_fnmark_hmove_tl
]
}
}
\bool_set_true:N \l__eb_normal_footnote_bool
-\bool_new:N \l__eb_fnmarktext_format_match_bool
+\bool_new:N \l__eb_fnnormal_format_match_bool
\bool_new:N \l__eb_fncustom_format_match_bool
-\cs_new:Npn \eb_fnmarktext_format_clear:n #1
+\cs_new_protected:Npn \ifnormalfnt #1#2
+ { \bool_if:NTF \l__eb_normal_footnote_bool {#1} {#2} }
+\cs_new:Npn \eb_fnnormal_format_clear:n #1
{
\bool_if:cTF { l__eb_fn#1_format_match_bool }
- { \tl_clear:N \l__eb_fnmarktext_format_tl }
+ { \tl_clear:N \l__eb_fnnormal_format_tl }
{ \spbset{spcmd = { }} }
}
-\cs_new_protected:Npn \eb_fnmarktext_format_initial:
+\cs_new_protected:Npn \eb_fnnormal_format_initial:
{
\bool_if:NTF \l__eb_normal_footnote_bool
- { \eb_fnmarktext_format_clear:n { marktext } }
- { \eb_fnmarktext_format_clear:n { custom } }
+ { \eb_fnnormal_format_clear:n { normal } }
+ { \eb_fnnormal_format_clear:n { custom } }
\eb@font@footnote
}
\cs_new_protected:Npn \defupfntmark #1
@@ -964,18 +960,18 @@
{ \tl_if_eq:NnTF \@mpfn { footnote } }
\defupfntmark
{
- \eb_fnmarktext_format_initial:
- \eb@fnmarktext@super{\notminipage{\@the@up@fnmark}{\@thefnmark}}
+ \eb_fnnormal_format_initial:
+ \eb@fnnormal@super{\notminipage{\@the@up@fnmark}{\@thefnmark}}
}
\defdownfntmark
{
- \eb_fnmarktext_format_initial:
+ \eb_fnnormal_format_initial:
\tl_if_eq:NnTF \l__eb_fntext_position_tl { super }
- { \eb@fnmarktext@super* }
+ { \eb@fnnormal@super* }
{ \use:n }
{
\tl_use:N \l__eb_fntext_before_tl
- { \l__eb_fnmarktext_format_tl{\@thefnmark} }
+ { \l__eb_fnnormal_format_tl{\@thefnmark} }
}
\tl_use:N \l__eb_fntext_after_tl
}
@@ -987,8 +983,8 @@
\tl_if_empty:oF {#2}
{
\group_begin:
- \unrestored@protected@xdef\@the@up@fnmark{#1}
\unrestored@protected@xdef\@thefnmark{#2}
+ \unrestored@protected@xdef\@the@up@fnmark{#1}
\group_end:
}
}
@@ -998,7 +994,7 @@
\bool_if:NF \l__eb_fncustom_format_match_bool
{
\tl_set_eq:NN
- \l__eb_fnmarktext_format_tl \l__eb_fncustom_format_tl
+ \l__eb_fnnormal_format_tl \l__eb_fncustom_format_tl
}
}
\NewDocumentCommand{\Footnote}{O{#2}m+m}
@@ -1050,6 +1046,31 @@
}
}
}
+\cs_new_protected:Npn \undefinecounter #1
+ {
+ \cs_undefine:c { c@#1 }
+ \cs_undefine:c { the#1 }
+ \group_begin:
+ \exp_args:Nc \providecommand { c@@ckpt }{}
+ \@removefromreset{#1}{@ckpt}
+ \group_end:
+ }
+\ProvideDocumentCommand{\declarecounter}{mo}
+ {
+ \undefinecounter{#1}
+ \IfValueTF{#2}{\newcounter{#1}[#2]}{\newcounter{#1}}
+ }
+\ProvideDocumentCommand{\renewcounter}{mo}
+ {
+ \cs_if_exist:cTF { c@#1 }
+ { \IfValueTF{#2}{\declarecounter{#1}[#2]}{\declarecounter{#1}} }
+ { \exp_args:Nc \renewcommand { c@#1 }{} }
+ }
+\ProvideDocumentCommand{\providecounter}{mo}
+ {
+ \cs_if_exist:cF { c@#1 }
+ { \IfValueTF{#2}{\newcounter{#1}[#2]}{\newcounter{#1}} }
+ }
\cs_new:Npn \eb_section_counter_prefix:n #1
{
\int_compare:nNnT { \c@chapter } > { 0 } { \use:c { the#1chapter }. }
@@ -1059,12 +1080,12 @@
\cs_set:Npn \thebisection { \eb_section_counter_prefix:n { bi } }
\cs_set:Npn \thebisubsection { \thebisection.\@arabic\c@bisubsection }
\cs_set:Npn \thesection { \eb_section_counter_prefix:n { } }
-\tl_new:N \eb@before@bitocline@hook
+\NewHook{eb/addbitocline/begin}
+\DeclareHookRule{eb/addbitocline/begin}{chapter}{<}{code}
\NewDocumentCommand{\BeforeAddtoBitoc}{sm}
{
- \IfBooleanTF{#1}
- {\tl_gset:Nn \eb@before@bitocline@hook {#2}}
- {\tl_gput_right:Nn \eb@before@bitocline@hook {#2}}
+ \IfBooleanT{#1}{\RemoveFromHook{eb/addbitocline/begin}[code]}
+ \AddToHook{eb/addbitocline/begin}[code]{#2}
}
\cs_set_eq:NN \BeforeAddBitoc \BeforeAddtoBitoc
\cs_new_protected:Npn \CTEX@addbitocline #1#2
@@ -1073,7 +1094,7 @@
\def\CTEX@prechapter{\CTEX@prebichapter}
\def\CTEX@thechapter{\CTEX@bichapter@number}
\def\CTEX@postchapter{\CTEX@postbichapter}
- \eb@before@bitocline@hook
+ \UseHook{eb/addbitocline/begin}
\tl_if_eq:NnTF \g__eb_bilist_permute_value_tl { mix }
{ \addcontentsline{toc}{#1} }
{ \addcontentsline{tec}{#1} }
@@ -1082,7 +1103,8 @@
}
\cs_new_protected:Npn \eb@register@bititle #1
{
- \exp_args:Nc \NewDocumentCommand { bi#1 }{sO{##3}mm}
+ \providecounter{bi#1}
+ \exp_args:Nc \DeclareDocumentCommand { bi#1 }{sO{##3}mm}
{
\IfBooleanTF{##1}
{
@@ -1190,12 +1212,20 @@
}
}
-\cs_new_protected:Npn \SetTocOuter #1
- { \keys_set:nn { eb/tocouter } {#1} }
+\NewDocumentCommand{\SetTocOuter}{om}
+ {
+ \IfNoValueTF{#1}
+ {\keys_set:nn { eb/tocouter } {#2}}
+ {
+ \clist_if_exist:cF { l__eb_toc_outer_kv_#1_clist }
+ { \clist_clear_new:c { l__eb_toc_outer_kv_#1_clist } }
+ \clist_put_right:cn { l__eb_toc_outer_kv_#1_clist } {#2}
+ }
+ }
\tl_new:N \eb@bitoc@title
\bool_new:N \l__eb_toc_notitle_bool
-\newbool{bitoc}
-\cs_new:Npn \ebifbitoc { \ifbool{bitoc} }
+\newbool{@bitoc}
+\cs_new:Npn \ebifbitoc { \ifbool{@bitoc} }
\seq_new:N \l__eb_level_tmpa_seq
\tl_new:N \l__eb_level_tmpa_tl
\cs_generate_variant:Nn \regex_extract_all:nnN { no }
@@ -1242,6 +1272,7 @@
multoc .int_set:N = \l__eb_toc_columns_int,
multoc .default:n = 2,
multoc .initial:n = 1,
+ columns .meta:n = { multoc = {#1} },
plan .choice:,
plan .value_required:n = true,
plan/cn .code:n =
@@ -1260,7 +1291,6 @@
\bool_set_true:N \l__eb_toc_plan_bi_bool
},
plan .initial:n = cn,
- columns .meta:n = { multoc = {#1} },
title .code:n = \eb_assign_toc_title:n {#1},
bilist .code:n =
{
@@ -1268,9 +1298,9 @@
\str_if_eq:nnTF {#1} { mix }
{
\AddToHook{cmd/CTEX@addtocline/before}[bitoc]
- {\addtocontents{toc}{\boolfalse{bitoc}}}
+ {\addtocontents{toc}{\boolfalse{@bitoc}}}
\AddToHook{cmd/CTEX@addbitocline/before}[bitoc]
- {\addtocontents{toc}{\booltrue{bitoc}}}
+ {\addtocontents{toc}{\booltrue{@bitoc}}}
}
{
\IfHookEmptyTF{cmd/CTEX@addtocline/before}{}
@@ -1280,8 +1310,8 @@
}
}
},
- name .tl_set:N = \l__eb_print_index_name_tl,
- name .initial:n = \imki@jobname,
+ name .tl_set:N = \eb@index@name,
+ name .initial:n = \indtl@jobname,
unknown .code:n =
{
\ctex_set:ox { \l__eb_level_tmpa_tl }
@@ -1296,9 +1326,7 @@
\cs_new_protected:Npn \eb_toc_assign_title_judge:nn #1#2
{
\tl_set:Nn \eb@toc@title {#1}
- \tl_if_novalue:nTF {#2}
- { \tl_clear:N \eb@bitoc@title }
- { \tl_set:Nn \eb@bitoc@title {#2} }
+ \tl_if_novalue:nF {#2} { \tl_set:Nn \eb@bitoc@title {#2} }
}
\cs_new_protected:Npn \eb_toc_start_multi_column_ext:n #1
{
@@ -1325,11 +1353,22 @@
{ \par }
}
}
+\cs_generate_variant:Nn \keys_set:nn { nv }
+\cs_new_protected:Npn \eb_toc_outer_kv_initial:n #1
+ {
+ \clist_if_exist:cT { l__eb_toc_outer_kv_#1_clist }
+ { \keys_set:nv { eb/tocouter } { l__eb_toc_outer_kv_#1_clist } }
+ }
+\cs_new_protected:Npn \eb_toc_kv_set:nn #1#2
+ {
+ \eb_toc_outer_kv_initial:n {#1}
+ \IfValueT{#2}{\keys_set:nn { eb/tocouter } {#2}}
+ }
\cs_new_protected:Npn \eb_toc_list_struct_parse:nnnnn #1#2#3#4#5
{
\group_begin:
\tl_set_eq:Nc \eb@toc@title { list#4name }
- \IfValueT{#3}{\keys_set:nn { eb/tocouter } {#3}}
+ \eb_toc_kv_set:nn {#5} {#3}
\eb_toc_title_level_cmd:n {#1}
\eb_toc_if_title_between_hook:nn {#1} {#4}
\eb_toc_start_multi_column_ext:n {#5}
@@ -1337,12 +1376,18 @@
}
\cs_new:Npn \listnumberline #1
{
- \protect\numberline
+ \capifname
{
- \exp_args:Nnv
- \use:c { p@#1 } { the#1 }
- }
+ \protect\numberline
+ {
+ \exp_args:Nnv
+ \use:c { p@#1 } { the#1 }
+ }
+ }{}
}
+\cs_generate_variant:Nn \tl_if_blank:nTF { f }
+\cs_new:Npn \capifname #1#2
+ { \tl_if_blank:fTF { \caption@labelformat{p1}{p2} } {#2} {#1} }
\cs_new_protected:Npn \DeclareFloatList #1#2
{
\exp_args:Nc \DeclareDocumentCommand { listof#1s }{st++o}
@@ -1369,6 +1414,11 @@
}
}
\cs_new_protected:Npn \AssignCaptionExt #1#2
+ {
+ \clist_map_inline:nn {#1}
+ { \eb@assign@caption@ext{##1}{#2} }
+ }
+\cs_new_protected:Npn \eb@assign@caption@ext #1#2
{ \tl_set:cn { ext@#1 } {#2} }
\cs_set_eq:NN \AllotCaptionExt \AssignCaptionExt
\ctex_define:n
@@ -1390,17 +1440,18 @@
{ \section* }
}
}
- \IfValueT{#3}{\keys_set:nn { eb/tocouter } {#3}}
\bool_if:NT \l__eb_toc_plan_cn_bool
{
+ \eb_toc_kv_set:nn { toc } {#3}
\IfBooleanF{#1}{\eb@toc@title@level{\eb@toc@title}{}}
\eb_toc_if_title_between_hook:nn {#1} { title }
- \eb_toc_start_multi_column_ext:n { toc }#4
+ \eb_toc_start_multi_column_ext:n { toc }
}
\bool_if:NT \l__eb_toc_plan_bi_bool
{
\tl_if_eq:NnF \g__eb_bilist_permute_value_tl { mix }
{
+ \eb_toc_kv_set:nn { tec } {#3}#4
\IfBooleanF{#1}{\eb@toc@title@level{\eb@bitoc@title}{}}
\eb_toc_if_title_between_hook:nn {#1} { bititle }
\eb_toc_start_multi_column_ext:n { tec }
@@ -1409,13 +1460,29 @@
\group_end:
}
-\cs_set_eq:NN \eb@contentsuse@save \contentsuse
\RenewDocumentCommand{\contentsuse}{O{-1000}mm}
{
- \eb@contentsuse@save{#2}{#3}
+ \clist_map_inline:nn {#2}
+ { \eb@contents@use{#1}{##1}{#3} }
+ }
+\cs_new_protected:Npn \eb@contents@use #1#2#3
+ {
+ \tl_set:cn { ttlx@#2 } {#3}
\tl_set:cn { ttll@#2 } {#1}
+ \tl_if_exist:cF { l__eb_contents_use_#2_#3_tl }
+ {
+ \tl_put_right:Nn \ttl@finishall
+ { \@writefile{#3}{\contentsfinish} }
+ }
+ \tl_set:cn { l__eb_contents_use_#2_#3_tl } { used }
}
\contentsuse{lstlisting}{lol}
+\ctex_at_end_package:nn { hyperref }
+ {
+ \cs_if_exist:NTF \Hy@toclinkstart
+ { \cs_set:Npn \hytoclink #1 { \Hy@toclinkstart #1\Hy@toclinkend } }
+ { \cs_set_eq:NN \hytoclink \use:n }
+ }
\seq_put_left:Nn \c__ctex_headings_seq { chapter }
\seq_put_right:Nn \c__ctex_headings_seq { table }
\seq_put_right:Nn \c__ctex_headings_seq { figure }
@@ -1432,7 +1499,7 @@
#1/tocformat* .tl_set:c = l__eb_toc_#1_entry_nolabel_tl,
#1/tocindent .tl_set:c = l__eb_toc_#1_indent_tl,
#1/toclabel .cs_set:cp = { eb_toc_entry_#1:nnn } ##1##2##3,
- #1/tocrule .tl_set:c = l__eb_toc_#1_rule_tl,
+ #1/tocrule .cs_set:cp = { eb_toc_rule_#1:n } ##1,
#1/tocafter .tl_set:c = l__eb_toc_#1_after_tl,
#1/tocbelow .tl_set:c = l__eb_toc_#1_below_tl,
#1/tocbegin .meta:n = { #1/tocbelow = {##1} },
@@ -1454,7 +1521,7 @@
{\tl_use:c { l__eb_toc_#2_format_tl }}
{\use:c { eb_toc_entry_#2:nnn } { \thecontentslabel } {#2} {#1}}
{\tl_use:c { l__eb_toc_#2_entry_nolabel_tl }}
- {\tl_use:c { l__eb_toc_#2_rule_tl }}
+ {\use:c { eb_toc_rule_#2:n } { \thecontentspage }}
[\tl_use:c { l__eb_toc_#2_below_tl }]
}
\exp_not:o { \l__eb_toc_tmpb_tl }
@@ -1463,13 +1530,20 @@
{
tocformat = \IfBooleanT{#1}{\contentsmargin{0pt}},
tocindent = 0pt,
- tocrule = \IfBooleanTF{#1}{,~\thecontentspage}{\cdottocrule},
+ tocrule = \IfBooleanTF{#1}{,~##1}{\cdottocrule},
toclabel =
{
\bool_if:NTF \l__eb_toc_entry_hang_bool
{ \IfBooleanTF{##3}{\use:n}{\contentspush} }
{ \use:n }
- { ##1\tl_use:c { l__eb_toc_##2_after_tl } }
+ {
+ \bool_lazy_or:nnTF
+ { \str_if_eq_p:Vn \Hy@linktoc { 1 } }
+ { \str_if_eq_p:Vn \Hy@linktoc { 3 } }
+ { \hytoclink{##1} }
+ {##1}
+ \tl_use:c { l__eb_toc_##2_after_tl }
+ }
},
tocafter = \hspace{1em},
tocsep = .—,
@@ -1552,6 +1626,7 @@
}
}
\cs_set:Npn \cdottocrule { \tocrule{\textperiodcentered} }
+\bool_new:N \l__eb_toc_dot_align_bool
\ctex_define:nn { toc }
{
lolskip .skip_set:N = \eb@toc@lol@skip,
@@ -1560,7 +1635,17 @@
between .initial:n = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-1pc} },
bibetween .tl_set:N = \l__eb_toc_bititle_between_hook_tl,
bibetween .initial:n = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-1pc} },
- dotalign .bool_set:N = \l__eb_toc_dot_align_bool,
+ dotalign .choice:,
+ dotalign/true .code:n =
+ {
+ \bool_set_true:N \l__eb_toc_dot_align_bool
+ \contentsmargin{1.55em}
+ },
+ dotalign/false .code:n =
+ {
+ \bool_set_false:N \l__eb_toc_dot_align_bool
+ \contentsmargin{0pt}
+ },
dotalign .default:n = true,
dotalign .initial:n = true,
hang .bool_set:N = \l__eb_toc_entry_hang_bool,
@@ -1568,19 +1653,20 @@
hang .initial:n = true,
pagenumwd .code:n = \contentsmargin{#1},
pagenumwd .initial:n = 1.55em,
- fileopen .tl_set:N = \l__eb_fileopen_type_tl,
- fileopen .initial:n = once,
unknown .code:n = \eb_msg_deprecated_option:n { toc }
}
-\NewHookWithArguments{starttoc/after}{1}
-\AddToHookWithArguments{starttoc/after}[aux]
+\NewHookWithArguments{eb/starttoc/end}{1}
+\AddToHookWithArguments{eb/starttoc/end}[aux]
{
- \ifbool{@filesw}
+ \AddToHook{enddocument/afterlastpage}
{
- \tl_if_exist:cF { tf@#1 }
- { \iow_new:c { tf@#1 }\iow_open:cn { tf@#1 } { \jobname.#1 } }
- }{}
+ \ifbool{@filesw}
+ {
+ \tl_if_exist:cF { tf@#1 }
+ { \iow_new:c { tf@#1 }\iow_open:cn { tf@#1 } { \jobname.#1 } }
+ }{}
+ }
}
\cs_set_eq:NN \eb@starttoc \@starttoc
\cs_set:Npn \@starttoc #1
@@ -1590,21 +1676,12 @@
\group_begin:
\makeatletter
\file_if_exist_input:n { \jobname.#1 }
- \UseHookWithArguments{starttoc/after}{1}{#1}
+ \UseHookWithArguments{eb/starttoc/end}{1}{#1}
\boolfalse{@nobreak}
\group_end:
}
{ \eb@starttoc{#1} }
}
-\AddToHook{enddocument/afterlastpage}
- {
- \tl_if_eq:NnTF \l__eb_fileopen_type_tl { once }
- { \iow_now:Nn \@mainaux { \RemoveFromHook{starttoc/after}[*] } }
- {
- \IfHookEmptyTF{starttoc/after}{}
- {\iow_now:Nn \@mainaux { \RemoveFromHook{starttoc/after}[aux] }}
- }
- }
\cs_set_protected:Npn \AssignPartialExt #1#2
{
\tl_if_exist:cTF { ttl@partial#1 }
@@ -1623,35 +1700,49 @@
}
\AssignPartialExt{lol}{pll}
-\cs_new_protected:Npn \RegisterTitleIfname #1
+\cs_generate_variant:Nn \str_if_eq:nnT { x }
+\NewDocumentCommand{\RegisterTitleIfname}{O{\jobname}mm}
{
- \clist_map_function:nN {#1}
- \eb@register@title@ifname
+ \clist_map_inline:nn {#2}
+ { \eb@register@title@ifname{#1}{##1}{#3} }
}
-\cs_new_protected:Npn \eb@register@title@ifname #1
+\cs_new_protected:Npn \eb@register@title@ifname #1#2#3
{
- \AddToHookWithArguments{cmd/addcontentsline/before}[title/ifname/#1]
+ \AddToHookWithArguments{cmd/addcontentsline/before}[title/ifname/#2]
{
- \str_if_eq:nnT {##1} {#1}
+ \str_if_eq:xnT {##1} {#2}
{
\addtocontents{##1}
- {\CTEXifname{\CTEX@ifnametrue}{\CTEX@ifnamefalse}}
+ {#3{\CTEX@ifnametrue}{\CTEX@ifnamefalse}}
}
}
- \AddToHook{file/\jobname.#1/before}
+ \AddToHook{file/#1.#2/before}
{\cs_set_eq:NN \eb@title@ifname@resume \CTEXifname}
- \AddToHook{file/\jobname.#1/after}
+ \AddToHook{file/#1.#2/after}
{\cs_set_eq:NN \CTEXifname \eb@title@ifname@resume}
}
-\RegisterTitleIfname{toc}
+\NewDocumentCommand{\RegisterCapIfname}{O{\jobname}m}
+ {\RegisterTitleIfname[#1]{#2}{\capifname}}
+\RegisterTitleIfname{toc}{\CTEXifname}
+\RegisterCapIfname{lot,lof,lol,loe}
\cs_new_protected:Npn \SetTocStyle #1#2#3
{
+ \clist_map_inline:nn {#1}
+ { \eb@set@toc@style{##1}{#2}{#3} }
+ }
+\cs_new_protected:Npn \eb@set@toc@style #1#2#3
+ {
\cs_set_protected:cpn { eb@toc@style@set@#1@#2 }
{ \ctex_set:nn {#1} {#3} }
}
\cs_new_protected:Npn \UseTocStyle #1#2#3
{
+ \clist_map_inline:nn {#1}
+ { \eb@use@toc@style{##1}{#2}{#3} }
+ }
+\cs_new_protected:Npn \eb@use@toc@style #1#2#3
+ {
\cs_if_exist:cTF { eb@toc@style@set@#1@#2 }
{ \addtocontents{#3}{\string\csuse{eb@toc@style@set@#1@#2}} }
{ \msg_warning:nnnn { easybase } { undefined-toc-style } {#2} {#1} }
@@ -1690,20 +1781,19 @@
{ tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 3.8em } { 1.5em } }
}
-\ctex_at_end_package:nn { imakeidx }
+\ctex_at_end_package:nn { indextools }
{
+ \booltrue{indtl@fancyhdr}
\RenewDocumentCommand{\printindex}{st++o}
{
\group_begin:
\tl_set_eq:NN \eb@toc@title \indexname
- \cs_set_eq:NN \imki@indexlevel \use_none:n
- \IfValueT{#3}{\keys_set:nn { eb/tocouter } {#3}}
- \cs_set_protected:Npn \imki@indexheaders
- {
- \eb_toc_title_level_cmd:n {#1}
- \cs_set_eq:NN \thispagestyle \use_none:n
- }
- \imki@putindex{\l__eb_print_index_name_tl}
+ \eb_toc_kv_set:nn { idx } {#3}
+ \cs_set_protected:Npn \indtl@indexlevel ##1
+ { \eb_toc_title_level_cmd:n {#1} }
+ \@ifundefined{\csuse{eb@index@name}@idxfile}
+ {\indtl@error{\eb@index@name}}
+ {\indtl@putindex{\eb@index@name}}
\group_end:
}
}
@@ -1722,7 +1812,7 @@
\ctex_assign_heading_name:nn { biappendix } {#1}
\bool_if:NTF \l__eb_class_mode_book_bool
{
- \eb_preto_cmd:nn { eb@before@bitocline@hook }
+ \AddToHook{eb/addbitocline/begin}[chapter]
{
\def\CTEX@prechapter{\CTEX@prebiappendix}
\def\CTEX@thechapter{#2}
@@ -1788,19 +1878,46 @@
}
\cs_set_eq:NN \addtosubfont \ebaddtofont
+\cs_new_protected:Npn \usestretch #1
+ {
+ \edef\baselinestretch{#1}
+ \@currsize
+ }
+\cs_set_eq:NN \setspread \usestretch
+\cs_new_protected:Npn \restore@usespace
+ {
+ \par
+ \vskip\parskip
+ \vskip\baselineskip
+ \endgroup
+ \vskip -\parskip
+ \vskip -\baselineskip
+ }
+\NewDocumentEnvironment{usespace}{m+b}
+ {
+ \par
+ \begingroup
+ \usestretch{#1}#2
+ \restore@usespace
+ }{}
+\msg_new:nnn { easybase } { invalid-spread }
+ {
+ The~line~spacing~factor~option~'#1'~is~invalid. \\
+ Please~use~the~'usespace'~environment~to~set~the~line~spacing.
+ }
+\cs_new_protected:Npn \eb_invalid_spread_warning:
+ { \msg_warning:nnV { easybase } { invalid-spread } \l_keys_key_str }
\ctex_define:nn { space }
{
- linespread .code:n = \setspread{#1},
- tabspread .fp_set:N = \l__eb_spread_table_fp,
- tabspread .initial:n = 1.2,
- mathspread .tl_set:N = \eb@spread@math,
- mathspread .initial:n = 1.2,
+ linespread .code:n = \usestretch{#1},
+ tabspread .code:n = \eb_invalid_spread_warning:,
+ mathspread .code:n = \eb_invalid_spread_warning:,
fntspread .code:n =
{
\tl_set:Nn \eb@spread@footnote {#1}
\group_begin:
\footnotesize
- \setspread{\eb@spread@footnote}
+ \usestretch{\eb@spread@footnote}
\exp_args:NNNo \group_end:
\dim_set:Nn \footnotesep { \dim_use:N \box_ht:N \strutbox }
},
@@ -1816,8 +1933,8 @@
caption-spread .initial:n = 1.2,
everyspread .meta:n =
{
- linespread = {#1},tabspread = {#1},mathspread = {#1},
- caption-spread = {#1},fntspread = {#1}
+ linespread = {#1},caption-spread = {#1},
+ fntspread = {#1}
},
abovedisplayskip .code:n =
{ \AfterPreamble{\skip_set:Nn \abovedisplayskip {#1}} },
@@ -1836,14 +1953,8 @@
\tl_if_eq:NnT \l__ctex_scheme_tl { chinese }
{
\fp_compare:nNnTF { \l__ctex_line_spread_fp } = { 1.3 }
- {
- \ctex_set:nn { space }
- { linespread = 1.354,tabspread = 1.354 }
- }
- {
- \ctex_set:nn { space }
- { linespread = \fp_use:N \l__ctex_line_spread_fp }
- }
+ { \usestretch{1.354} }
+ { \usestretch{\fp_use:N \l__ctex_line_spread_fp} }
}
\AfterPreamble{\skip_set:Nn \abovedisplayshortskip { 0ex plus .1ex }}
@@ -1874,7 +1985,7 @@
{
\DeclareCaptionFont{eb@#1@font}
{
- \setspread{\fp_use:c { l__eb_spread_caption_#1_fp }}
+ \usestretch{\fp_use:c { l__eb_spread_caption_#1_fp }}
\tl_use:c { l__eb_font_caption_#1_tl }
}
}
@@ -1894,11 +2005,7 @@
\captionsetup[figure][bi-second]{name = Figure}
\captionsetup[table][bi-second]{name = Table}
}
-\eb_at_begin_environment:nn
- { tabular,tabularx,longtable }
- { \setspread{\fp_use:N \l__eb_spread_table_fp} }
\UseTblrLibrary{booktabs}
-
\bool_if:NF \l__eb_float_page_bool
{
\tl_gset:Nn \textfraction { 0.1 }
@@ -1914,11 +2021,6 @@
\setcounter{topnumber}{4}
\setcounter{bottomnumber}{4}
\setcounter{totalnumber}{8}
-\tl_set:Nn \fontsubfuzz { 0.5pt }
-\dim_zero_new:N \mathindent
-\allowdisplaybreaks[4]
-\everymath{\displaystyle}
-\DeclareGraphicsExtensions{.pdf,.png,.jpg,.eps,.tif}
\dim_new:N \hangwd
\cs_set_protected:Npn \hangpara #1#2
@@ -1975,7 +2077,7 @@
width .dim_set:N = \l__eb_eqsymb_width_dim,
width .initial:n = 10pt,
delim .tl_set:N = \l__eb_eqsymb_delim_tl,
- delim .initial:n = \tl_if_eq:NnTF \l__ctex_scheme_tl { chinese } { —— } { --- },
+ delim .initial:n = \tl_if_eq:NnTF \l__ctex_scheme_tl { chinese } { —— } { --- },
space .dim_set:N = \l__eb_eqsymb_space_dim,
space .initial:n = 0.25em,
item-align .tl_set:N = \l__eb_eqsymb_item_align_tl,
@@ -2047,24 +2149,39 @@
\tl_clear:N \l__eb_eqsymb_intro_tl
\ignorespaces
}
-\bool_if:NT \l__eb_theorem_support_bool
+
+\cs_new:Npn \eb_tl_exist_noempty:cT #1#2
+ { \tl_if_exist:cT {#1} { \tl_if_empty:cF {#1} {#2} } }
+\cs_new_protected:Npn \eb_theorem_load_thmtools:
{
\RequirePackage{amsthm,thmtools}
\cs_set_eq:NN \eb@declaretheoremstyle@save \declaretheoremstyle
\cs_set_eq:NN \eb@declaretheorem@save \declaretheorem
\RenewDocumentCommand{\declaretheoremstyle}{+O{}m+O{}}
- {\eb@declaretheoremstyle@save[#1,#3]{#2}}
+ {\eb@declaretheoremstyle@save[##1,##3]{##2}}
\RenewDocumentCommand{\declaretheorem}{+O{}m+O{}}
{
- \eb@declaretheorem@save[style = default,#1,#3]{#2}
- \settheoremtocline{#2}
+ \cs_undefine:c {##2}
+ \undefinecounter{##2}
+ \eb_tl_exist_noempty:cT { g__eb_thmt_##2_parent_tl }
+ {
+ \exp_args:Nnv \@removefromreset {##2}
+ { g__eb_thmt_##2_parent_tl }
+ }
+ \eb@declaretheorem@save[style = default,##1,##3]{##2}
+ \tl_gset:cV { g__eb_thmt_##2_parent_tl } \thmt@parent
+ \providebool{thmt@isstarred@##2}
+ \ifbool{thmt@isstarred}
+ {\booltrue{thmt@isstarred@##2}}
+ {\boolfalse{thmt@isstarred@##2}}
+ \settheoremtocline{##2}
{
- \listnumberline{#2}
+ \thmtifname{\listnumberline{##2}}{}
\thmtname\thmtifnote{~(\thmtnote)}{}
}
- \cs_gset:cpn { thmt@contentsline@#2 }
+ \cs_gset:cpn { thmt@contentsline@##2 }
{ \thmt@contentslineIfNamed }
- \exp_args:Nc \providecommand { p@#2 }[1]{##1}
+ \exp_args:Nc \providecommand { p@##2 }[1]{####1}
}
\ctex_define:nn { thmt }
{
@@ -2082,14 +2199,13 @@
bodyfont = \normalfont,
postheadspace = 1em
]
- \theoremstyle{default}
- \cs_undefine:N \proof
\DeclareFloatList{theorem}{loe}
\AssignPartialExt{loe}{ple}
\eb_preto_cmd:nn { listoftheorems }
{
\group_begin:
- \def\contentsline #1 {\use:c { thmt@contentsline@#1 }{#1}}
+ \let\thmt@contentsline\contentsline
+ \def\contentsline ##1 {\use:c { thmt@contentsline@##1 }{##1}}
}
\eb_appto_cmd:nn { listoftheorems } { \group_end: }
\eb_preto_cmd:nn { @chapter }
@@ -2098,72 +2214,130 @@
{ \addtocontents{loe}{\protect\addvspace{\skip_use:N \eb@thmt@loe@skip}} }
}
\def\thmtlo@chaptervspacehack{}
+ \def\thmt@mklistcmd{\thmtlo@newentry}
\def\thmtname{\thmt@thmname}
\def\thmtenvname{\thmt@envname}
\def\thmtnote{\thmt@shortoptarg}
- \def\thmtformatoptarg #1 {#1}
- \def\thmtifname #1#2 {\ifbool{thmt@isstarred}{#2}{#1}}
- \def\thmtifnote #1#2
+ \def\thmtformatoptarg ##1 {##1}
+ \def\thmtifname ##1##2 {\ifbool{thmt@isstarred@\thmt@envname}{##2}{##1}}
+ \def\thmtifnote ##1##2
{
\tl_if_empty:NTF \thmt@shortoptarg
- {#2}
- { \protect\thmtformatoptarg{#1} }
+ {##2}
+ { \protect\thmtformatoptarg{##1} }
+ }
+ \cs_new_protected:Npn \eb@settheoremtocline ##1##2##3
+ {
+ \IfBooleanT{##1}{\def\thmt@contentslineIgnore{\thmt@contentsline}}
+ \cs_set:cpn { ll@##2 } { \@bsphack ##3\@esphack }
}
\NewDocumentCommand{\settheoremtocline}{smm}
{
- \IfBooleanT{#1}{\def\thmt@contentslineIgnore{\thmt@contentsline}}
- \cs_set:cpn { ll@#2 } { \@bsphack #3\@esphack }
+ \clist_map_inline:nn {##2}
+ { \eb@settheoremtocline{##1}{####1}{##3} }
}
}
-
-\setchemformula
+\cs_new_protected:Npn \eb_theorem_load_keytheorems:
{
- math-scripts = false,
- charge-hshift = 0.25em,
- subscript-vshift = -0.2ex
+ \RequirePackage{keytheorems}
+ \DeclareFloatList{theorem}{thlist}
+ \AssignPartialExt{thlist}{ple}
}
-\IfPackageAtLeastTF{siunitx}{2021/06/22}
+\str_case:VnT \l__eb_theorem_support_tl
{
- \sisetup
+ { thmtools }
+ { \eb_theorem_load_thmtools: }
+ { keytheorems }
+ { \eb_theorem_load_keytheorems: }
+ }
+ { \cs_undefine:N \proof }
+\cs_new_protected:Npn \eb_chem_load_chemformula:
+ {
+ \RequirePackage{chemformula}
+ \setchemformula
{
- number-mode = match,
- range-phrase = \ensuremath{\sim},
- range-units = single,
- print-unity-mantissa = false,
- table-alignment-mode = none,
- group-digits = none
+ charge-hshift = 0pt,
+ subscript-vshift = -0.2ex
}
- }{}
-\eb_at_begin_environment:nn
+ }
+\cs_new_protected:Npn \eb_chem_load_mhchem:
{
- array,matrix,pmatrix,bmatrix,Bmatrix,vmatrix,Vmatrix,
- matrix*,pmatrix*,bmatrix*,Bmatrix*,vmatrix*,Vmatrix*,
- cases,cases*,dcases,dcases*,rcases,rcases*,drcases,drcases*,
- aligned,alignedat,gathered,multlined,lgathered,rgathered
+ \RequirePackage[version = 4]{mhchem}
+ \mhchemoptions{layout = stacked}
}
- { \setspread{\eb@spread@math} }
-\clist_map_inline:nn
- { \start@gather,\start@align,\start@multline }
+\str_case:VnF \l__eb_chem_support_tl
{
- \eb_patch_cmd:Nnn #1
- { \collect@body }
- {
- \setspread{\eb@spread@math}
- \collect@body
- }
+ { chemformula }
+ { \eb_chem_load_chemformula: }
+ { mhchem }
+ { \eb_chem_load_mhchem: }
}
-\eb_patch_cmd:Nnn \gather@split
- { \spread@equation }
+ { \RequirePackage{amsmath} }
+\tl_set:Nn \fontsubfuzz { 0.5pt }
+\everymath{\displaystyle}
+\dim_zero_new:N \mathindent
+\allowdisplaybreaks[4]
+\DeclareGraphicsExtensions{.pdf,.png,.jpg,.eps,.tif}
+\sisetup
{
- \setspread{\eb@spread@math}
- \spread@equation
+ number-mode = match,
+ range-phrase = \ensuremath{\sim},
+ range-units = single,
+ print-unity-mantissa = false,
+ table-alignment-mode = none,
+ group-digits = none
}
\ctex_at_end_package:nn { unicode-math }
{ \msg_redirect_module:nnn { unicode-math } { warning } { info } }
\ctex_at_end_package:nn { tcolorbox }
{ \file_if_exist_input:n { eb-tcolorbox.cfg } }
-\bool_set_true:N \l__eb_backend_bibtex_bool
+\NewDocumentCommand{\eb_assign_tagform:n}
+ {>{\SplitArgument{1}{,}}m}
+ {
+ \eb_assign_tagform_pos:nn #1
+ \cs_gset:Npn \tagform@ ##1
+ {
+ \maketag@@@
+ {
+ \color{ctex@emph}
+ \ignorespaces
+ \eb@tag@brackets@left{##1}
+ \unskip\@@italiccorr
+ \eb@tag@brackets@right
+ }
+ }
+ }
+\cs_new_protected:Npn \eb_assign_tagform_pos:nn #1#2
+ {
+ \tl_set:Nn \eb@tag@brackets@left {#1}
+ \tl_set:Nn \eb@tag@brackets@right {#2}
+ }
+\ctex_define:nn { tools }
+ {
+ multoc .int_set:N = \l__eb_toc_columns_int,
+ multoc .default:n = 2,
+ withpart .bool_set:N = \l__eb_chap_counter_withpart_bool,
+ withpart .default:n = true,
+ withpart .initial:n = false,
+ uppercase .tl_set:N = \l__eb_mark_uppercase_value_tl,
+ uppercase .default:n = all,
+ uppercase .initial:n = all,
+ tagform .code:n = \eb_assign_tagform:n {#1},
+ tagform .initial:n = { (,) },
+ brackets .meta:n = { tagform = {#1} },
+ figurepath .code:n =
+ {
+ \tl_if_blank:nF {#1}
+ {
+ \regex_match:nnTF { \cB. } {#1}
+ { \graphicspath{#1} }
+ { \graphicspath{{#1}} }
+ }
+ }
+ }
+
+\bool_new:N \l__eb_backend_bibtex_bool
\ctex_define:nn { bib }
{
backend .choice:,
@@ -2178,7 +2352,6 @@
bititle .initial:n = Bibliography,
unknown .code:n = \eb_msg_deprecated_option:n { bib }
}
-
\cs_new_protected:Npn \eb_bibtex_natbib_set:
{
\RequirePackage[sort&compress]{natbib}
@@ -2200,7 +2373,7 @@
{
\group_begin:
\tl_set_eq:NN \eb@toc@title \bibname
- \IfValueT{##3}{ \keys_set:nn { eb/tocouter } {##3} }
+ \eb_toc_kv_set:nn { bbl } {##3}
\cs_set_protected:Npn \bibsection
{
\eb_toc_title_level_cmd:n {##1}
@@ -2290,7 +2463,7 @@
\lstset{style = lst-latex}
\lstloadlanguages{C,C++,Java,Python,Matlab}
-\clist_new:N \l__eb_hyperref_clist
+\clist_new:N \l__eb_hyperref_options_clist
\cs_new_protected:Npn \eb_set_hyperref:n #1
{
\IfPackageLoadedTF{hyperref}
@@ -2298,7 +2471,7 @@
{\eb_put_hyperref:n}{#1}
}
\cs_new_protected:Npn \eb_put_hyperref:n #1
- { \clist_put_right:Nn \l__eb_hyperref_clist {#1} }
+ { \clist_put_right:Nn \l__eb_hyperref_options_clist {#1} }
\cs_new_protected:Npn \eb_define_link_color:nnn #1#2#3
{ \definecolorset{HTML}{ctex@}{}{link,#1;url,#2;cite,#3} }
\cs_new_protected:Npn \eb_define_theme_color:nnn #1#2#3
@@ -2307,21 +2480,21 @@
{ \definecolorset{HTML}{ctex@}{}{link,#1;url,#1;cite,#1} }
\cs_new_protected:Npn \eb_define_theme_color:n #1
{ \definecolorset{HTML}{ctex@}{}{frame,#1;emph,#1;verb,#1} }
-\cs_new_protected:Npn \DeclareLinkColor #1
- { \ctex_define:nx { ref } { \eb_link_color_set:n {#1} } }
-\cs_new_protected:Npn \DeclareThemeColor #1
- { \ctex_define:nx { tools } { \eb_theme_color_set:n {#1} } }
+\cs_new_protected:Npn \DeclareLinkColor #1#2
+ { \ctex_define:nx { ref } { \eb_link_color_set:nn {#1} {#2} } }
+\cs_new_protected:Npn \DeclareThemeColor #1#2
+ { \ctex_define:nx { tools } { \eb_theme_color_set:nn {#1} {#2} } }
\cs_new_protected:Npn \eb_color_assign_cmd_set:nn #1#2
{
- \cs_new:cpn { eb_#2_color_set:n } ##1
+ \cs_new:cpn { eb_#2_color_set:nn } ##1##2
{
- #1/\clist_item:nn {##1} { 1 } .code:n =
+ #1/##1 .code:n =
{
\use:c { eb_define_#2_color:nnn }
- { \clist_item:nn {##1} { 2 } }
- { \clist_item:nn {##1} { 3 } }
- { \clist_item:nn {##1} { 4 } }
- },
+ { \clist_item:nn {##2} { 1 } }
+ { \clist_item:nn {##2} { 2 } }
+ { \clist_item:nn {##2} { 3 } }
+ }
}
}
\clist_map_inline:nn
@@ -2330,35 +2503,35 @@
{ color } { theme }
}
{ \eb_color_assign_cmd_set:nn #1 }
-\ctex_define:nx { ref }
+\clist_map_inline:nn
+ {
+ { fresh } { 62d71f,0000b2,005752 },
+ { cutepink } { ea4492,ad3ccc,57b5e5 },
+ { navyblue } { 000080,4ec9ea,eb6877 },
+ { crimson } { dc143c,00c1c9,afcd20 }
+ }
+ { \DeclareLinkColor #1 }
+\ctex_define:nn { ref }
{
linkcolor .choice:,
linkcolor .value_required:n = true,
- \clist_map_function:nN
- {
- { fresh, 62d71f,0000b2,005752 },
- { cutepink, ea4492,ad3ccc,57b5e5 },
- { navyblue, 000080,4ec9ea,eb6877 },
- { crimson, dc143c,00c1c9,afcd20 }
- }
- \eb_link_color_set:n
- linkcolor .initial:n = navyblue,
- linkcolor-every .code:n = \eb_define_link_color:n { \exp_not:n {#1} }
+ linkcolor .initial:n = navyblue,
+ linkcolor-every .code:n = \eb_define_link_color:n {#1}
}
-\ctex_define:nx { tools }
+\clist_map_inline:nn
+ {
+ { none } { 000000,000000,000000 },
+ { seaside } { 333fb2,9932cc,09cc00 },
+ { energy } { f39800,00a0e9,893895 },
+ { cyberpunk } { 601986,eb6877,a4005b }
+ }
+ { \DeclareThemeColor #1 }
+\ctex_define:nn { tools }
{
color .choice:,
color .value_required:n = true,
- \clist_map_function:nN
- {
- { none, 000000,000000,000000 },
- { seaside, 333fb2,9932cc,09cc00 },
- { energy, f39800,00a0e9,893895 },
- { cyberpunk, 601986,eb6877,a4005b }
- }
- \eb_theme_color_set:n
color .initial:n = none,
- color-every .code:n = \eb_define_theme_color:n { \exp_not:n {#1} }
+ color-every .code:n = \eb_define_theme_color:n {#1}
}
\cs_new_protected:Npn \eb_link_border_set:n #1
@@ -2373,7 +2546,7 @@
}
\cs_new_protected:Npn \eb_link_colors_set:
{ \eb_set_hyperref:n { colorlinks } }
-\cs_new_protected:Npn \eb_link_toc_put:n #1
+\cs_new_protected:Npn \eb_link_toc_set:n #1
{ \eb_set_hyperref:n { linktoc = #1 } }
\ctex_define:nn { ref }
{
@@ -2386,7 +2559,7 @@
linktype .initial:n = edge,
linktoc .choice:,
linktoc .value_required:n = true,
- linktoc/unknown .code:n = \eb_link_toc_put:n {#1},
+ linktoc/unknown .code:n = \eb_link_toc_set:n {#1},
linktoc .initial:n = all,
unknown .code:n = \eb_set_hyperref:x { \eb_unknown_kv_handle: },
unknown .default:V = \c_novalue_tl
@@ -2418,7 +2591,7 @@
citecolor = ctex@cite,citebordercolor = ctex@cite
}
\hypersetup{bookmarksnumbered = true}
- \exp_args:NV \hypersetup \l__eb_hyperref_clist
+ \exp_args:NV \hypersetup \l__eb_hyperref_options_clist
}
\cs_set_eq:NN \eb@labelformat@save \labelformat
@@ -2446,7 +2619,7 @@
}
\ctex_define:n
{
- lstlistlistingname .tl_set:N = \listlstlistingname,
+ listlstlistingname .tl_set:N = \listlstlistingname,
lstlistingname .tl_set:N = \lstlistingname,
listtheoremname .tl_set:N = \listtheoremname
}
@@ -2457,15 +2630,17 @@
contentsname = 目\hspace{1em}录,
listfigurename = 插图清单,
listtablename = 附表清单,
- lstlistlistingname = 代码清单,
+ listlstlistingname = 代码清单,
lstlistingname = 代码,
listtheoremname = 定理清单
}
+ \ctex_at_end_package:nn { keytheorems }
+ { \keytheoremlistset{title = 定理清单} }
}
{
\keys_set_known:nn { ctex }
{
- lstlistlistingname = List~of~Codes,
+ listlstlistingname = List~of~Codes,
lstlistingname = Code
}
}
@@ -2513,16 +2688,18 @@
{
\renewcommand{\theupfootnote}{\@fnsymbol\c@footnote}
\renewcommand{\thefootnote}{\@fnsymbol\c@footnote}
+ \let\footnote\thanks
}
{}
- \LARGE\@title\par
+ \bgroup\LARGE\@title\par\egroup
\notbool{@titlepage}{\vskip 1.5em}{\vskip 3em}
- \large
+ \bgroup\large
\begin{tabular}[t]{c}
\@author
- \end{tabular}\par\vskip 1.5em
- \@date
- \notbool{@titlepage}{\par\vskip 1.5em}{}
+ \end{tabular}\par\egroup
+ \notbool{@titlepage}{\vskip 0.75em}{\vskip 1.5em}
+ \bgroup\large\@date\par\egroup
+ \notbool{@titlepage}{\vskip 1.5em}{}
\@thanks
},
beforecode =
diff --git a/Master/texmf-dist/tex/latex/easybook/easybook.cls b/Master/texmf-dist/tex/latex/easybook/easybook.cls
index 18052fcdd15..6ed933a2935 100644
--- a/Master/texmf-dist/tex/latex/easybook/easybook.cls
+++ b/Master/texmf-dist/tex/latex/easybook/easybook.cls
@@ -5,7 +5,7 @@
%% The original source files were:
%%
%% easybook.dtx (with options: `class')
-%% Copyright (C) 2021-2024 by Qu Yi <toquyi@163.com>
+%% Copyright (C) 2021-2025 by Qu Yi <toquyi@163.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -19,7 +19,7 @@
%%
%% This work has the LPPL maintenance status `maintained'.
\NeedsTeXFormat{LaTeX2e}[2021/11/15]
-\ProvidesExplClass{easybook}{2024/09/11}{2024dn}
+\ProvidesExplClass{easybook}{2025/01/26}{2025f}
{Easily typesetting Chinese theses or books}
\bool_new:N \l__eb_compile_draft_bool
@@ -40,16 +40,23 @@
{ \tl_set:Nn \l__eb_font_value_tl {#1} },
font .value_required:n = true,
font .initial:n = auto,
- cjkfont .code:n = \eb_put_ctexbook:n { fontset = #1 },
+ cjkfont .code:n = \eb_put_ctexbook:n { fontset = {#1} },
mathfont .tl_set:N = \l__eb_mathfont_value_tl,
mathfont .initial:n = times,
configs .clist_gset:N = \g__eb_configs_file_clist,
- paper .code:n = { },
- class.code:n = { },
- floatpage.code:n = { },
- theorem .code:n = { },
unknown .code:n = \clist_gput_right:NV \g__eb_doc_options_clist \CurrentOption
}
+\IfFormatAtLeastTF{2024/06/20}{}
+ {
+ \keys_define:nn { easybook }
+ {
+ paper .code:n = { },
+ class .code:n = { },
+ floatpage .code:n = { },
+ theorem .code:n = { },
+ chem .code:n = { }
+ }
+ }
\cs_if_exist:NTF \ProcessKeyOptions
{ \ProcessKeyOptions[easybook] }
diff --git a/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg b/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg
index d7f87995ec7..0ed5741b70b 100644
--- a/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg
+++ b/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg
@@ -5,7 +5,7 @@
%% The original source files were:
%%
%% easybook.dtx (with options: `tcolorbox')
-%% Copyright (C) 2021-2024 by Qu Yi <toquyi@163.com>
+%% Copyright (C) 2021-2025 by Qu Yi <toquyi@163.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -18,15 +18,13 @@
%% LaTeX version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
-\ProvidesExplFile{eb-tcolorbox.cfg}{2024/09/11}{2024dn}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2025/01/26}{2025f}
{Customization of tcolorbox for easybook}
\cs_set_protected:Npn \addtotcbstyle #1#2
{ \tcbset{#1/.append~style = {#2}} }
\cs_set_protected:Npn \deftcbstyle #1#2
{ \tcbset{#1/.style = {#2}} }
-\cs_new_protected:Npn \tcbappstyle
- { \@ifstar{\deftcbstyle}{\addtotcbstyle} }
\deftcbstyle{tc-easyboxi}
{
diff --git a/Master/texmf-dist/tex/latex/easyfloats/easyfloats.sty b/Master/texmf-dist/tex/latex/easyfloats/easyfloats.sty
index 33c5ae754c6..7f5c7c63583 100644
--- a/Master/texmf-dist/tex/latex/easyfloats/easyfloats.sty
+++ b/Master/texmf-dist/tex/latex/easyfloats/easyfloats.sty
@@ -28,8 +28,9 @@
%% This work consists of the files listed in easyfloats-file-list.txt.
+
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{easyfloats}[2020/12/20 v1.0.0]
+\ProvidesPackage{easyfloats}[2024/10/28 v1.1.0]
\newif\ifesf@loadgraphics
@@ -132,10 +133,12 @@
\newif\ifobject@isgraphic
\newcommand{\object@hook}{}
+\newcommand{\object@endhook}{}
\newcommand{\subobject@hook}{}
\newcommand{\object@graphic@hook}{}
\newrobustcmd{\AtBeginObject}[1]{\appto\object@hook{#1}}
+\newrobustcmd{\AtEndObject}[1]{\appto\object@endhook{#1}}
\newrobustcmd{\AtBeginSubobject}[1]{\appto\subobject@hook{#1}}
\newrobustcmd{\AtBeginGraphicObject}[1]{\appto\object@graphic@hook{#1}}
@@ -685,11 +688,13 @@ type/.code={%
\def\object@longtable@caption@sep{\ObjectDefineEnvargs{longtable}{\\}}%
}
+\newtoks\object@last@arg
\newenvironment{object}[1]{% #1: options
\if@inobject
\PackageError{easyfloats}{object environment may not be nested}{Did you mean to use the subobject environment instead?}%
\fi
\@inobjecttrue
+\object@last@arg={#1}%
\object@restorestandardfloats
\object@hook
\ifobject@isgraphic
@@ -738,11 +743,18 @@ env/.esf@mandatory=It should be the name of an environment like tabular or empty
\fi
\edef\object@floatenv@begin{\expandonce{\csname\esf@tmp@type\endcsname}}%
\edef\object@floatenv@end{\expandonce{\csname end\esf@tmp@type\endcsname}}%
+\def\esf@text@I{I}%
\pgfkeysgetvalue{/object/placement}{\esf@tmp@placement}%
\ifx \esf@tmp@placement \@empty
+\else\ifx \esf@tmp@placement \esf@text@I
+\preto\object@floatenv@begin{%
+\columnwidth = \linewidth
+\let \float@endH = \esf@float@endI
+}%
+\appto\object@floatenv@begin{[H]}%
\else
\eappto\object@floatenv@begin{[\esf@tmp@placement]}%
-\fi
+\fi \fi
\fi
\pgfkeysgetvalue{/object/details}{\object@details}%
\ifx \object@details \@empty
@@ -767,6 +779,7 @@ env/.esf@mandatory=It should be the name of an environment like tabular or empty
\fi
\global \@firstsubobjecttrue
\object@floatenv@begin
+\preto\par{\global\@firstsubobjecttrue}%
\let\esf@original@label=\label
\let\esf@original@caption=\caption
\let\label=\object@label
@@ -781,18 +794,34 @@ env/.esf@mandatory=It should be the name of an environment like tabular or empty
\PackageWarning{easyfloats}{'contains subobjects' is true but the object does not contain any subobjects.}%
\fi
\fi
+\object@endhook
\let\label=\esf@original@label
\let\caption=\esf@original@caption
\object@processCaptionAndLabel
\object@floatenv@end
}
+\newcommand\esf@float@endI{%
+\@endfloatbox
+\vskip\intextsep
+\if@flstyle
+\setbox\@currbox\float@makebox\columnwidth
+\fi
+\leavevmode% added by me
+\box\@currbox
+\vskip\intextsep\relax
+}
+
\newcommand{\object@processCaptionAndLabel}{%
\esf@ifpgfkeyhasvalue{/object/caption}{%
\esf@ifpgfkeyhasvalue{/object/list caption}%
{\pgfkeysgetvalue{/object/list caption}{\esf@tmp@caption@short}}%
{\pgfkeysgetvalue{/object/caption}{\esf@tmp@caption@short}}%
-\caption[\esf@tmp@caption@short]{\pgfkeysvalueof{/object/caption}\object@details}%
+\ifx \esf@tmp@caption@short \@empty
+\else
+\edef \esf@tmp@caption@short {{\expandonce{\esf@tmp@caption@short}}}%
+\fi
+\expandafter\caption\expandafter[\esf@tmp@caption@short]{\pgfkeysvalueof{/object/caption}\object@details}%
}{%
\ifobject@warnnocaption
\PackageWarning{easyfloats}{%
@@ -861,6 +890,17 @@ This warning occured%
}
+\newcommand{\splitobject}{%
+\expanded{%
+\noexpand\end{\@currenvir}%
+\noexpand\begin{\@currenvir}{\the\object@last@arg, warn no label=false, list caption=, exec+={\unexpanded{%
+\pgfkeyssetvalue{/object/label}{\pgfkeysnovalue}%
+\ContinuedFloat
+}}}%
+}%
+}
+
+
\newcommand{\object@lookahead@nosubobject}{%
\object@lookahead@begin
}
@@ -1115,24 +1155,27 @@ auto caption strip path/.is if=graphicobject@autocaption@strippath,
auto caption strip path=false,
auto label strip path/.is if=graphicobject@autolabel@strippath,
auto label strip path=false,
+auto label prefix/.initial=,
+auto label prefix/.value required,
warn env/.is if=graphicobject@warnenv,
warn env=true,
no env/.is if=graphicobject@noenv,
no env=true,
+before graphic/.initial=,
+before graphic/.value required,
+after graphic/.initial=,
+after graphic/.value required,
}
\newrobustcmd{\includegraphicobject}{% [#1: graphicstyle], [#2: options], #3: graphic filename without extension
-\let\includegraphicobject@after=\@empty
+\begingroup
\@ifnextchar [%
\includegraphicobject@firstarg
\includegraphicobject@parseoptions
}
\def\includegraphicobject@firstarg[#1]{%
-\begingroup
\@ifnextchar [%
{%
-\begingroup
-\let\includegraphicobject@after=\endgroup
\graphicobjectstyle{#1}%
\includegraphicobject@parseoptions
}%
@@ -1182,6 +1225,7 @@ no env=true,
\ifgraphicobject@autolabel@strippath
\protected@edef\graphicobject@label{\strippath\graphicobject@label}%
\fi
+\epreto\graphicobject@label{\pgfkeysvalueof{/graphicobject/auto label prefix}}%
\pgfkeyslet{\object@graphic@path/label}{\graphicobject@label}%
}%
\fi
@@ -1204,16 +1248,18 @@ no env=true,
\fi
,
}
+\pgfkeysvalueof{/graphicobject/before graphic}%
\expandafter\includegraphics\expandafter[\object@graphic@options@tmp]{#3}%
+\pgfkeysvalueof{/graphicobject/after graphic}%
\end{#1}%
-\includegraphicobject@after
+\endgroup
+\ignorespaces
}
\newrobustcmd{\includegraphicsubobject}{%
\begingroup
\def\object@graphic@env{subobject}%
\def\object@graphic@path{/subobject}%
-\def\includegraphicobject@after{\endgroup\ignorespaces}%
\includegraphicobject@parseoptions
}
@@ -1418,9 +1464,17 @@ env=,
\caption@iftop
{\eappto\subobject@subpage@begin{[T]}}%
{\eappto\subobject@subpage@begin{[B]}}%
+}{\ifdefstring \subobject@outerpos {auto-inverted}{%
+\caption@iftop
+{\eappto\subobject@subpage@begin{[b]}}%
+{\eappto\subobject@subpage@begin{[t]}}%
+}{\ifdefstring \subobject@outerpos {Auto-inverted}{%
+\caption@iftop
+{\eappto\subobject@subpage@begin{[B]}}%
+{\eappto\subobject@subpage@begin{[T]}}%
}{%
\eappto\subobject@subpage@begin{[\subobject@outerpos]}%
-}}\fi
+}}}}\fi
\pgfkeysgetvalue{/subobject/subpage height}{\subobject@height}%
\ifx \subobject@height \@empty
\else
diff --git a/Master/texmf-dist/tex/latex/easyfloats/my_biblatex_data_model.dbx b/Master/texmf-dist/tex/latex/easyfloats/my_biblatex_data_model.dbx
new file mode 100644
index 00000000000..34b68a7821c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/easyfloats/my_biblatex_data_model.dbx
@@ -0,0 +1,5 @@
+% default data model is included automatically
+% if undesired it would need to be cleared with
+% \ResetDatamodelEntrytypes \ResetDatamodelFields \ResetDatamodelEntryfields \ResetDatamodelConstraints
+
+\DeclareDatamodelFields[type=field, datatype=literal]{texdoc}
diff --git a/Master/texmf-dist/tex/latex/electrum/electrum.sty b/Master/texmf-dist/tex/latex/electrum/electrum.sty
deleted file mode 100644
index ff9086e8021..00000000000
--- a/Master/texmf-dist/tex/latex/electrum/electrum.sty
+++ /dev/null
@@ -1,35 +0,0 @@
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{electrum}[2010/07/17 v1.0 electrum]
-\RequirePackage{xkeyval}
-\RequirePackage[T1]{fontenc}
-\RequirePackage{textcomp}
-\UndeclareTextCommand{\textperthousand}{T1}
-\RequirePackage{nfssext-cfr}
-%:boolkeys for ligature/swash encoding as default
-\define@boolkey{electrum.sty}[electrum@]{lig}[true]{%
- \ifelectrum@lig
- \def\electrum@lig{w}%
- \else
- \def\electrum@lig{}%
- \fi}
-%:boolkeys for roman osf/lf
-\define@boolkey{electrum.sty}[electrum@]{osf}[true]{%
- \ifelectrum@osf
- \def\electrum@lfosf{j}%
- \else
- \def\electrum@lfosf{}%
- \fi}
-\define@boolkey{electrum.sty}[electrum@]{lf}[true]{%
- \ifelectrum@lf
- \def\electrum@lfosf{}%
- \else
- \def\electrum@lfosf{j}%
- \fi}
-%:defaults to ensure everything is defined to something
-\ExecuteOptionsX{lig=false,osf=true}
-%:options override defaults
-\ProcessOptionsX
-%:make ElectrumADF default roman font, implementing options for ligature/swash encoding and lf/osf as applicable
-\renewcommand{\rmdefault}{yes\electrum@lfosf\electrum@lig}%
-\endinput
-%% end electrum.sty
diff --git a/Master/texmf-dist/tex/latex/electrum/t1yes.fd b/Master/texmf-dist/tex/latex/electrum/t1yes.fd
deleted file mode 100644
index f238e30ea39..00000000000
--- a/Master/texmf-dist/tex/latex/electrum/t1yes.fd
+++ /dev/null
@@ -1,91 +0,0 @@
-%Filename: t1yes.fd
-%Created by: tex yes-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{t1yes.fd}
- [2010/07/19 Fontinst v1.933 font definitions for T1/yes.]
-
-\DeclareFontFamily{T1}{yes}{}
-
-\DeclareFontShape{T1}{yes}{m}{n}{
- <-> yesr8t
-}{}
-
-\DeclareFontShape{T1}{yes}{m}{sc}{
- <-> yesrc8t
-}{}
-
-\DeclareFontShape{T1}{yes}{m}{sl}{
- <-> yesro8t
-}{}
-
-\DeclareFontShape{T1}{yes}{m}{scsl}{
- <-> yesrco8t
-}{}
-
-\DeclareFontShape{T1}{yes}{b}{n}{
- <-> yesb8t
-}{}
-
-\DeclareFontShape{T1}{yes}{b}{sc}{
- <-> yesbc8t
-}{}
-
-\DeclareFontShape{T1}{yes}{b}{sl}{
- <-> yesbo8t
-}{}
-
-\DeclareFontShape{T1}{yes}{b}{scsl}{
- <-> yesbco8t
-}{}
-
-\DeclareFontShape{T1}{yes}{l}{n}{
- <-> yesl8t
-}{}
-
-\DeclareFontShape{T1}{yes}{l}{sc}{
- <-> yeslc8t
-}{}
-
-\DeclareFontShape{T1}{yes}{l}{sl}{
- <-> yeslo8t
-}{}
-
-\DeclareFontShape{T1}{yes}{l}{scsl}{
- <-> yeslco8t
-}{}
-
-\DeclareFontShape{T1}{yes}{sb}{n}{
- <-> yess8t
-}{}
-
-\DeclareFontShape{T1}{yes}{sb}{sc}{
- <-> yessc8t
-}{}
-
-\DeclareFontShape{T1}{yes}{sb}{sl}{
- <-> yesso8t
-}{}
-
-\DeclareFontShape{T1}{yes}{sb}{scsl}{
- <-> yessco8t
-}{}
-
-\DeclareFontShape{T1}{yes}{m}{it}{<->ssub * yes/m/sl}{}
-\DeclareFontShape{T1}{yes}{m}{si}{<->ssub * yes/m/scsl}{}
-\DeclareFontShape{T1}{yes}{bx}{n}{<->ssub * yes/b/n}{}
-\DeclareFontShape{T1}{yes}{bx}{sc}{<->ssub * yes/b/sc}{}
-\DeclareFontShape{T1}{yes}{bx}{sl}{<->ssub * yes/b/sl}{}
-\DeclareFontShape{T1}{yes}{b}{it}{<->ssub * yes/b/sl}{}
-\DeclareFontShape{T1}{yes}{bx}{it}{<->ssub * yes/b/it}{}
-\DeclareFontShape{T1}{yes}{bx}{scsl}{<->ssub * yes/b/scsl}{}
-\DeclareFontShape{T1}{yes}{b}{si}{<->ssub * yes/b/scsl}{}
-\DeclareFontShape{T1}{yes}{bx}{si}{<->ssub * yes/b/si}{}
-\DeclareFontShape{T1}{yes}{l}{it}{<->ssub * yes/l/sl}{}
-\DeclareFontShape{T1}{yes}{l}{si}{<->ssub * yes/l/scsl}{}
-\DeclareFontShape{T1}{yes}{sb}{it}{<->ssub * yes/sb/sl}{}
-\DeclareFontShape{T1}{yes}{sb}{si}{<->ssub * yes/sb/scsl}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/electrum/t1yesj.fd b/Master/texmf-dist/tex/latex/electrum/t1yesj.fd
deleted file mode 100644
index edaf2aa6fcd..00000000000
--- a/Master/texmf-dist/tex/latex/electrum/t1yesj.fd
+++ /dev/null
@@ -1,91 +0,0 @@
-%Filename: t1yesj.fd
-%Created by: tex yes-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{t1yesj.fd}
- [2010/07/19 Fontinst v1.933 font definitions for T1/yesj.]
-
-\DeclareFontFamily{T1}{yesj}{}
-
-\DeclareFontShape{T1}{yesj}{m}{n}{
- <-> yesrj8t
-}{}
-
-\DeclareFontShape{T1}{yesj}{m}{sc}{
- <-> yesrcj8t
-}{}
-
-\DeclareFontShape{T1}{yesj}{m}{sl}{
- <-> yesrjo8t
-}{}
-
-\DeclareFontShape{T1}{yesj}{m}{scsl}{
- <-> yesrcjo8t
-}{}
-
-\DeclareFontShape{T1}{yesj}{b}{n}{
- <-> yesbj8t
-}{}
-
-\DeclareFontShape{T1}{yesj}{b}{sc}{
- <-> yesbcj8t
-}{}
-
-\DeclareFontShape{T1}{yesj}{b}{sl}{
- <-> yesbjo8t
-}{}
-
-\DeclareFontShape{T1}{yesj}{b}{scsl}{
- <-> yesbcjo8t
-}{}
-
-\DeclareFontShape{T1}{yesj}{l}{n}{
- <-> yeslj8t
-}{}
-
-\DeclareFontShape{T1}{yesj}{l}{sc}{
- <-> yeslcj8t
-}{}
-
-\DeclareFontShape{T1}{yesj}{l}{sl}{
- <-> yesljo8t
-}{}
-
-\DeclareFontShape{T1}{yesj}{l}{scsl}{
- <-> yeslcjo8t
-}{}
-
-\DeclareFontShape{T1}{yesj}{sb}{n}{
- <-> yessj8t
-}{}
-
-\DeclareFontShape{T1}{yesj}{sb}{sc}{
- <-> yesscj8t
-}{}
-
-\DeclareFontShape{T1}{yesj}{sb}{sl}{
- <-> yessjo8t
-}{}
-
-\DeclareFontShape{T1}{yesj}{sb}{scsl}{
- <-> yesscjo8t
-}{}
-
-\DeclareFontShape{T1}{yesj}{m}{it}{<->ssub * yesj/m/sl}{}
-\DeclareFontShape{T1}{yesj}{m}{si}{<->ssub * yesj/m/scsl}{}
-\DeclareFontShape{T1}{yesj}{bx}{n}{<->ssub * yesj/b/n}{}
-\DeclareFontShape{T1}{yesj}{bx}{sc}{<->ssub * yesj/b/sc}{}
-\DeclareFontShape{T1}{yesj}{bx}{sl}{<->ssub * yesj/b/sl}{}
-\DeclareFontShape{T1}{yesj}{b}{it}{<->ssub * yesj/b/sl}{}
-\DeclareFontShape{T1}{yesj}{bx}{it}{<->ssub * yesj/b/it}{}
-\DeclareFontShape{T1}{yesj}{bx}{scsl}{<->ssub * yesj/b/scsl}{}
-\DeclareFontShape{T1}{yesj}{b}{si}{<->ssub * yesj/b/scsl}{}
-\DeclareFontShape{T1}{yesj}{bx}{si}{<->ssub * yesj/b/si}{}
-\DeclareFontShape{T1}{yesj}{l}{it}{<->ssub * yesj/l/sl}{}
-\DeclareFontShape{T1}{yesj}{l}{si}{<->ssub * yesj/l/scsl}{}
-\DeclareFontShape{T1}{yesj}{sb}{it}{<->ssub * yesj/sb/sl}{}
-\DeclareFontShape{T1}{yesj}{sb}{si}{<->ssub * yesj/sb/scsl}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/electrum/t1yesjw.fd b/Master/texmf-dist/tex/latex/electrum/t1yesjw.fd
deleted file mode 100644
index f06daea32ee..00000000000
--- a/Master/texmf-dist/tex/latex/electrum/t1yesjw.fd
+++ /dev/null
@@ -1,91 +0,0 @@
-%Filename: t1yesjw.fd
-%Created by: tex yes-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{t1yesjw.fd}
- [2010/07/19 Fontinst v1.933 font definitions for T1/yesjw.]
-
-\DeclareFontFamily{T1}{yesjw}{}
-
-\DeclareFontShape{T1}{yesjw}{m}{n}{
- <-> yesrjw8t
-}{}
-
-\DeclareFontShape{T1}{yesjw}{m}{sc}{
- <-> yesrcjw8t
-}{}
-
-\DeclareFontShape{T1}{yesjw}{m}{sl}{
- <-> yesrjow8t
-}{}
-
-\DeclareFontShape{T1}{yesjw}{m}{scsl}{
- <-> yesrcjow8t
-}{}
-
-\DeclareFontShape{T1}{yesjw}{b}{n}{
- <-> yesbjw8t
-}{}
-
-\DeclareFontShape{T1}{yesjw}{b}{sc}{
- <-> yesbcjw8t
-}{}
-
-\DeclareFontShape{T1}{yesjw}{b}{sl}{
- <-> yesbjow8t
-}{}
-
-\DeclareFontShape{T1}{yesjw}{b}{scsl}{
- <-> yesbcjow8t
-}{}
-
-\DeclareFontShape{T1}{yesjw}{l}{n}{
- <-> yesljw8t
-}{}
-
-\DeclareFontShape{T1}{yesjw}{l}{sc}{
- <-> yeslcjw8t
-}{}
-
-\DeclareFontShape{T1}{yesjw}{l}{sl}{
- <-> yesljow8t
-}{}
-
-\DeclareFontShape{T1}{yesjw}{l}{scsl}{
- <-> yeslcjow8t
-}{}
-
-\DeclareFontShape{T1}{yesjw}{sb}{n}{
- <-> yessjw8t
-}{}
-
-\DeclareFontShape{T1}{yesjw}{sb}{sc}{
- <-> yesscjw8t
-}{}
-
-\DeclareFontShape{T1}{yesjw}{sb}{sl}{
- <-> yessjow8t
-}{}
-
-\DeclareFontShape{T1}{yesjw}{sb}{scsl}{
- <-> yesscjow8t
-}{}
-
-\DeclareFontShape{T1}{yesjw}{m}{it}{<->ssub * yesjw/m/sl}{}
-\DeclareFontShape{T1}{yesjw}{m}{si}{<->ssub * yesjw/m/scsl}{}
-\DeclareFontShape{T1}{yesjw}{bx}{n}{<->ssub * yesjw/b/n}{}
-\DeclareFontShape{T1}{yesjw}{bx}{sc}{<->ssub * yesjw/b/sc}{}
-\DeclareFontShape{T1}{yesjw}{bx}{sl}{<->ssub * yesjw/b/sl}{}
-\DeclareFontShape{T1}{yesjw}{b}{it}{<->ssub * yesjw/b/sl}{}
-\DeclareFontShape{T1}{yesjw}{bx}{it}{<->ssub * yesjw/b/it}{}
-\DeclareFontShape{T1}{yesjw}{bx}{scsl}{<->ssub * yesjw/b/scsl}{}
-\DeclareFontShape{T1}{yesjw}{b}{si}{<->ssub * yesjw/b/scsl}{}
-\DeclareFontShape{T1}{yesjw}{bx}{si}{<->ssub * yesjw/b/si}{}
-\DeclareFontShape{T1}{yesjw}{l}{it}{<->ssub * yesjw/l/sl}{}
-\DeclareFontShape{T1}{yesjw}{l}{si}{<->ssub * yesjw/l/scsl}{}
-\DeclareFontShape{T1}{yesjw}{sb}{it}{<->ssub * yesjw/sb/sl}{}
-\DeclareFontShape{T1}{yesjw}{sb}{si}{<->ssub * yesjw/sb/scsl}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/electrum/t1yesw.fd b/Master/texmf-dist/tex/latex/electrum/t1yesw.fd
deleted file mode 100644
index ebfa31488f5..00000000000
--- a/Master/texmf-dist/tex/latex/electrum/t1yesw.fd
+++ /dev/null
@@ -1,91 +0,0 @@
-%Filename: t1yesw.fd
-%Created by: tex yes-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{t1yesw.fd}
- [2010/07/19 Fontinst v1.933 font definitions for T1/yesw.]
-
-\DeclareFontFamily{T1}{yesw}{}
-
-\DeclareFontShape{T1}{yesw}{m}{n}{
- <-> yesrw8t
-}{}
-
-\DeclareFontShape{T1}{yesw}{m}{sc}{
- <-> yesrcw8t
-}{}
-
-\DeclareFontShape{T1}{yesw}{m}{sl}{
- <-> yesrow8t
-}{}
-
-\DeclareFontShape{T1}{yesw}{m}{scsl}{
- <-> yesrcow8t
-}{}
-
-\DeclareFontShape{T1}{yesw}{b}{n}{
- <-> yesbw8t
-}{}
-
-\DeclareFontShape{T1}{yesw}{b}{sc}{
- <-> yesbcw8t
-}{}
-
-\DeclareFontShape{T1}{yesw}{b}{sl}{
- <-> yesbow8t
-}{}
-
-\DeclareFontShape{T1}{yesw}{b}{scsl}{
- <-> yesbcow8t
-}{}
-
-\DeclareFontShape{T1}{yesw}{l}{n}{
- <-> yeslw8t
-}{}
-
-\DeclareFontShape{T1}{yesw}{l}{sc}{
- <-> yeslcw8t
-}{}
-
-\DeclareFontShape{T1}{yesw}{l}{sl}{
- <-> yeslow8t
-}{}
-
-\DeclareFontShape{T1}{yesw}{l}{scsl}{
- <-> yeslcow8t
-}{}
-
-\DeclareFontShape{T1}{yesw}{sb}{n}{
- <-> yessw8t
-}{}
-
-\DeclareFontShape{T1}{yesw}{sb}{sc}{
- <-> yesscw8t
-}{}
-
-\DeclareFontShape{T1}{yesw}{sb}{sl}{
- <-> yessow8t
-}{}
-
-\DeclareFontShape{T1}{yesw}{sb}{scsl}{
- <-> yesscow8t
-}{}
-
-\DeclareFontShape{T1}{yesw}{m}{it}{<->ssub * yesw/m/sl}{}
-\DeclareFontShape{T1}{yesw}{m}{si}{<->ssub * yesw/m/scsl}{}
-\DeclareFontShape{T1}{yesw}{bx}{n}{<->ssub * yesw/b/n}{}
-\DeclareFontShape{T1}{yesw}{bx}{sc}{<->ssub * yesw/b/sc}{}
-\DeclareFontShape{T1}{yesw}{bx}{sl}{<->ssub * yesw/b/sl}{}
-\DeclareFontShape{T1}{yesw}{b}{it}{<->ssub * yesw/b/sl}{}
-\DeclareFontShape{T1}{yesw}{bx}{it}{<->ssub * yesw/b/it}{}
-\DeclareFontShape{T1}{yesw}{bx}{scsl}{<->ssub * yesw/b/scsl}{}
-\DeclareFontShape{T1}{yesw}{b}{si}{<->ssub * yesw/b/scsl}{}
-\DeclareFontShape{T1}{yesw}{bx}{si}{<->ssub * yesw/b/si}{}
-\DeclareFontShape{T1}{yesw}{l}{it}{<->ssub * yesw/l/sl}{}
-\DeclareFontShape{T1}{yesw}{l}{si}{<->ssub * yesw/l/scsl}{}
-\DeclareFontShape{T1}{yesw}{sb}{it}{<->ssub * yesw/sb/sl}{}
-\DeclareFontShape{T1}{yesw}{sb}{si}{<->ssub * yesw/sb/scsl}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/electrum/ts1yes.fd b/Master/texmf-dist/tex/latex/electrum/ts1yes.fd
deleted file mode 100644
index fa1ba42cb4d..00000000000
--- a/Master/texmf-dist/tex/latex/electrum/ts1yes.fd
+++ /dev/null
@@ -1,67 +0,0 @@
-%Filename: ts1yes.fd
-%Created by: tex yes-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{ts1yes.fd}
- [2010/07/19 Fontinst v1.933 font definitions for TS1/yes.]
-
-\DeclareFontFamily{TS1}{yes}{}
-
-\DeclareFontShape{TS1}{yes}{m}{n}{
- <-> yesr8c
-}{}
-
-\DeclareFontShape{TS1}{yes}{m}{sl}{
- <-> yesro8c
-}{}
-
-\DeclareFontShape{TS1}{yes}{b}{n}{
- <-> yesb8c
-}{}
-
-\DeclareFontShape{TS1}{yes}{b}{sl}{
- <-> yesbo8c
-}{}
-
-\DeclareFontShape{TS1}{yes}{l}{n}{
- <-> yesl8c
-}{}
-
-\DeclareFontShape{TS1}{yes}{l}{sl}{
- <-> yeslo8c
-}{}
-
-\DeclareFontShape{TS1}{yes}{sb}{n}{
- <-> yess8c
-}{}
-
-\DeclareFontShape{TS1}{yes}{sb}{sl}{
- <-> yesso8c
-}{}
-
-\DeclareFontShape{TS1}{yes}{m}{sc}{<->ssub * yes/m/n}{}
-\DeclareFontShape{TS1}{yes}{m}{it}{<->ssub * yes/m/sl}{}
-\DeclareFontShape{TS1}{yes}{m}{scsl}{<->ssub * yes/m/it}{}
-\DeclareFontShape{TS1}{yes}{m}{si}{<->ssub * yes/m/scsl}{}
-\DeclareFontShape{TS1}{yes}{bx}{n}{<->ssub * yes/b/n}{}
-\DeclareFontShape{TS1}{yes}{b}{sc}{<->ssub * yes/b/n}{}
-\DeclareFontShape{TS1}{yes}{bx}{sc}{<->ssub * yes/b/sc}{}
-\DeclareFontShape{TS1}{yes}{bx}{sl}{<->ssub * yes/b/sl}{}
-\DeclareFontShape{TS1}{yes}{b}{it}{<->ssub * yes/b/sl}{}
-\DeclareFontShape{TS1}{yes}{bx}{it}{<->ssub * yes/b/it}{}
-\DeclareFontShape{TS1}{yes}{b}{scsl}{<->ssub * yes/b/it}{}
-\DeclareFontShape{TS1}{yes}{bx}{scsl}{<->ssub * yes/b/scsl}{}
-\DeclareFontShape{TS1}{yes}{b}{si}{<->ssub * yes/b/scsl}{}
-\DeclareFontShape{TS1}{yes}{bx}{si}{<->ssub * yes/b/si}{}
-\DeclareFontShape{TS1}{yes}{l}{sc}{<->ssub * yes/l/n}{}
-\DeclareFontShape{TS1}{yes}{l}{it}{<->ssub * yes/l/sl}{}
-\DeclareFontShape{TS1}{yes}{l}{scsl}{<->ssub * yes/l/it}{}
-\DeclareFontShape{TS1}{yes}{l}{si}{<->ssub * yes/l/scsl}{}
-\DeclareFontShape{TS1}{yes}{sb}{sc}{<->ssub * yes/sb/n}{}
-\DeclareFontShape{TS1}{yes}{sb}{it}{<->ssub * yes/sb/sl}{}
-\DeclareFontShape{TS1}{yes}{sb}{scsl}{<->ssub * yes/sb/it}{}
-\DeclareFontShape{TS1}{yes}{sb}{si}{<->ssub * yes/sb/scsl}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/electrum/ts1yesj.fd b/Master/texmf-dist/tex/latex/electrum/ts1yesj.fd
deleted file mode 100644
index a8e052c56dd..00000000000
--- a/Master/texmf-dist/tex/latex/electrum/ts1yesj.fd
+++ /dev/null
@@ -1,67 +0,0 @@
-%Filename: ts1yesj.fd
-%Created by: tex yes-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{ts1yesj.fd}
- [2010/07/19 Fontinst v1.933 font definitions for TS1/yesj.]
-
-\DeclareFontFamily{TS1}{yesj}{}
-
-\DeclareFontShape{TS1}{yesj}{m}{n}{
- <-> yesrj8c
-}{}
-
-\DeclareFontShape{TS1}{yesj}{m}{sl}{
- <-> yesrjo8c
-}{}
-
-\DeclareFontShape{TS1}{yesj}{b}{n}{
- <-> yesbj8c
-}{}
-
-\DeclareFontShape{TS1}{yesj}{b}{sl}{
- <-> yesbjo8c
-}{}
-
-\DeclareFontShape{TS1}{yesj}{l}{n}{
- <-> yeslj8c
-}{}
-
-\DeclareFontShape{TS1}{yesj}{l}{sl}{
- <-> yesljo8c
-}{}
-
-\DeclareFontShape{TS1}{yesj}{sb}{n}{
- <-> yessj8c
-}{}
-
-\DeclareFontShape{TS1}{yesj}{sb}{sl}{
- <-> yessjo8c
-}{}
-
-\DeclareFontShape{TS1}{yesj}{m}{sc}{<->ssub * yesj/m/n}{}
-\DeclareFontShape{TS1}{yesj}{m}{it}{<->ssub * yesj/m/sl}{}
-\DeclareFontShape{TS1}{yesj}{m}{scsl}{<->ssub * yesj/m/it}{}
-\DeclareFontShape{TS1}{yesj}{m}{si}{<->ssub * yesj/m/scsl}{}
-\DeclareFontShape{TS1}{yesj}{bx}{n}{<->ssub * yesj/b/n}{}
-\DeclareFontShape{TS1}{yesj}{b}{sc}{<->ssub * yesj/b/n}{}
-\DeclareFontShape{TS1}{yesj}{bx}{sc}{<->ssub * yesj/b/sc}{}
-\DeclareFontShape{TS1}{yesj}{bx}{sl}{<->ssub * yesj/b/sl}{}
-\DeclareFontShape{TS1}{yesj}{b}{it}{<->ssub * yesj/b/sl}{}
-\DeclareFontShape{TS1}{yesj}{bx}{it}{<->ssub * yesj/b/it}{}
-\DeclareFontShape{TS1}{yesj}{b}{scsl}{<->ssub * yesj/b/it}{}
-\DeclareFontShape{TS1}{yesj}{bx}{scsl}{<->ssub * yesj/b/scsl}{}
-\DeclareFontShape{TS1}{yesj}{b}{si}{<->ssub * yesj/b/scsl}{}
-\DeclareFontShape{TS1}{yesj}{bx}{si}{<->ssub * yesj/b/si}{}
-\DeclareFontShape{TS1}{yesj}{l}{sc}{<->ssub * yesj/l/n}{}
-\DeclareFontShape{TS1}{yesj}{l}{it}{<->ssub * yesj/l/sl}{}
-\DeclareFontShape{TS1}{yesj}{l}{scsl}{<->ssub * yesj/l/it}{}
-\DeclareFontShape{TS1}{yesj}{l}{si}{<->ssub * yesj/l/scsl}{}
-\DeclareFontShape{TS1}{yesj}{sb}{sc}{<->ssub * yesj/sb/n}{}
-\DeclareFontShape{TS1}{yesj}{sb}{it}{<->ssub * yesj/sb/sl}{}
-\DeclareFontShape{TS1}{yesj}{sb}{scsl}{<->ssub * yesj/sb/it}{}
-\DeclareFontShape{TS1}{yesj}{sb}{si}{<->ssub * yesj/sb/scsl}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/electrum/ts1yesjw.fd b/Master/texmf-dist/tex/latex/electrum/ts1yesjw.fd
deleted file mode 100644
index 1596cf734e2..00000000000
--- a/Master/texmf-dist/tex/latex/electrum/ts1yesjw.fd
+++ /dev/null
@@ -1,67 +0,0 @@
-%Filename: ts1yesjw.fd
-%Created by: tex yes-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{ts1yesjw.fd}
- [2010/07/19 Fontinst v1.933 font definitions for TS1/yesjw.]
-
-\DeclareFontFamily{TS1}{yesjw}{}
-
-\DeclareFontShape{TS1}{yesjw}{m}{n}{
- <-> yesrj8c
-}{}
-
-\DeclareFontShape{TS1}{yesjw}{m}{sl}{
- <-> yesrjo8c
-}{}
-
-\DeclareFontShape{TS1}{yesjw}{b}{n}{
- <-> yesbj8c
-}{}
-
-\DeclareFontShape{TS1}{yesjw}{b}{sl}{
- <-> yesbjo8c
-}{}
-
-\DeclareFontShape{TS1}{yesjw}{l}{n}{
- <-> yeslj8c
-}{}
-
-\DeclareFontShape{TS1}{yesjw}{l}{sl}{
- <-> yesljo8c
-}{}
-
-\DeclareFontShape{TS1}{yesjw}{sb}{n}{
- <-> yessj8c
-}{}
-
-\DeclareFontShape{TS1}{yesjw}{sb}{sl}{
- <-> yessjo8c
-}{}
-
-\DeclareFontShape{TS1}{yesjw}{m}{sc}{<->ssub * yesjw/m/n}{}
-\DeclareFontShape{TS1}{yesjw}{m}{it}{<->ssub * yesjw/m/sl}{}
-\DeclareFontShape{TS1}{yesjw}{m}{scsl}{<->ssub * yesjw/m/it}{}
-\DeclareFontShape{TS1}{yesjw}{m}{si}{<->ssub * yesjw/m/scsl}{}
-\DeclareFontShape{TS1}{yesjw}{bx}{n}{<->ssub * yesjw/b/n}{}
-\DeclareFontShape{TS1}{yesjw}{b}{sc}{<->ssub * yesjw/b/n}{}
-\DeclareFontShape{TS1}{yesjw}{bx}{sc}{<->ssub * yesjw/b/sc}{}
-\DeclareFontShape{TS1}{yesjw}{bx}{sl}{<->ssub * yesjw/b/sl}{}
-\DeclareFontShape{TS1}{yesjw}{b}{it}{<->ssub * yesjw/b/sl}{}
-\DeclareFontShape{TS1}{yesjw}{bx}{it}{<->ssub * yesjw/b/it}{}
-\DeclareFontShape{TS1}{yesjw}{b}{scsl}{<->ssub * yesjw/b/it}{}
-\DeclareFontShape{TS1}{yesjw}{bx}{scsl}{<->ssub * yesjw/b/scsl}{}
-\DeclareFontShape{TS1}{yesjw}{b}{si}{<->ssub * yesjw/b/scsl}{}
-\DeclareFontShape{TS1}{yesjw}{bx}{si}{<->ssub * yesjw/b/si}{}
-\DeclareFontShape{TS1}{yesjw}{l}{sc}{<->ssub * yesjw/l/n}{}
-\DeclareFontShape{TS1}{yesjw}{l}{it}{<->ssub * yesjw/l/sl}{}
-\DeclareFontShape{TS1}{yesjw}{l}{scsl}{<->ssub * yesjw/l/it}{}
-\DeclareFontShape{TS1}{yesjw}{l}{si}{<->ssub * yesjw/l/scsl}{}
-\DeclareFontShape{TS1}{yesjw}{sb}{sc}{<->ssub * yesjw/sb/n}{}
-\DeclareFontShape{TS1}{yesjw}{sb}{it}{<->ssub * yesjw/sb/sl}{}
-\DeclareFontShape{TS1}{yesjw}{sb}{scsl}{<->ssub * yesjw/sb/it}{}
-\DeclareFontShape{TS1}{yesjw}{sb}{si}{<->ssub * yesjw/sb/scsl}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/electrum/ts1yesw.fd b/Master/texmf-dist/tex/latex/electrum/ts1yesw.fd
deleted file mode 100644
index 451ae08250e..00000000000
--- a/Master/texmf-dist/tex/latex/electrum/ts1yesw.fd
+++ /dev/null
@@ -1,67 +0,0 @@
-%Filename: ts1yesw.fd
-%Created by: tex yes-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{ts1yesw.fd}
- [2010/07/19 Fontinst v1.933 font definitions for TS1/yesw.]
-
-\DeclareFontFamily{TS1}{yesw}{}
-
-\DeclareFontShape{TS1}{yesw}{m}{n}{
- <-> yesr8c
-}{}
-
-\DeclareFontShape{TS1}{yesw}{m}{sl}{
- <-> yesro8c
-}{}
-
-\DeclareFontShape{TS1}{yesw}{b}{n}{
- <-> yesb8c
-}{}
-
-\DeclareFontShape{TS1}{yesw}{b}{sl}{
- <-> yesbo8c
-}{}
-
-\DeclareFontShape{TS1}{yesw}{l}{n}{
- <-> yesl8c
-}{}
-
-\DeclareFontShape{TS1}{yesw}{l}{sl}{
- <-> yeslo8c
-}{}
-
-\DeclareFontShape{TS1}{yesw}{sb}{n}{
- <-> yess8c
-}{}
-
-\DeclareFontShape{TS1}{yesw}{sb}{sl}{
- <-> yesso8c
-}{}
-
-\DeclareFontShape{TS1}{yesw}{m}{sc}{<->ssub * yesw/m/n}{}
-\DeclareFontShape{TS1}{yesw}{m}{it}{<->ssub * yesw/m/sl}{}
-\DeclareFontShape{TS1}{yesw}{m}{scsl}{<->ssub * yesw/m/it}{}
-\DeclareFontShape{TS1}{yesw}{m}{si}{<->ssub * yesw/m/scsl}{}
-\DeclareFontShape{TS1}{yesw}{bx}{n}{<->ssub * yesw/b/n}{}
-\DeclareFontShape{TS1}{yesw}{b}{sc}{<->ssub * yesw/b/n}{}
-\DeclareFontShape{TS1}{yesw}{bx}{sc}{<->ssub * yesw/b/sc}{}
-\DeclareFontShape{TS1}{yesw}{bx}{sl}{<->ssub * yesw/b/sl}{}
-\DeclareFontShape{TS1}{yesw}{b}{it}{<->ssub * yesw/b/sl}{}
-\DeclareFontShape{TS1}{yesw}{bx}{it}{<->ssub * yesw/b/it}{}
-\DeclareFontShape{TS1}{yesw}{b}{scsl}{<->ssub * yesw/b/it}{}
-\DeclareFontShape{TS1}{yesw}{bx}{scsl}{<->ssub * yesw/b/scsl}{}
-\DeclareFontShape{TS1}{yesw}{b}{si}{<->ssub * yesw/b/scsl}{}
-\DeclareFontShape{TS1}{yesw}{bx}{si}{<->ssub * yesw/b/si}{}
-\DeclareFontShape{TS1}{yesw}{l}{sc}{<->ssub * yesw/l/n}{}
-\DeclareFontShape{TS1}{yesw}{l}{it}{<->ssub * yesw/l/sl}{}
-\DeclareFontShape{TS1}{yesw}{l}{scsl}{<->ssub * yesw/l/it}{}
-\DeclareFontShape{TS1}{yesw}{l}{si}{<->ssub * yesw/l/scsl}{}
-\DeclareFontShape{TS1}{yesw}{sb}{sc}{<->ssub * yesw/sb/n}{}
-\DeclareFontShape{TS1}{yesw}{sb}{it}{<->ssub * yesw/sb/sl}{}
-\DeclareFontShape{TS1}{yesw}{sb}{scsl}{<->ssub * yesw/sb/it}{}
-\DeclareFontShape{TS1}{yesw}{sb}{si}{<->ssub * yesw/sb/scsl}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/electrumadf/electrum.sty b/Master/texmf-dist/tex/latex/electrumadf/electrum.sty
new file mode 100644
index 00000000000..c6e89eb01d0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/electrumadf/electrum.sty
@@ -0,0 +1,100 @@
+%%
+%% This is file `electrum.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% electrumadf.dtx (with options: `sty')
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% electrumadf. You may however distribute the package electrumadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% ateb Heiko Oberdiek: https://tex.stackexchange.com/a/172896/
+%% dyw hwn ddim yn gweithio tu mewn i arg macro!
+%% (*wrth gwrs* dyw e ddim yn weithio! wyt ti'n *hollol* dwp?)
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{svn-prov}
+\ProvidesPackageSVN[electrum.sty]{$Id: electrumadf.dtx 10402 2024-09-27 02:35:48Z cfrees $}[v1.1 \revinfo]
+\DefineFileInfoSVN[electrum]
+\RequirePackage[T1]{fontenc}
+\RequirePackage{nfssext-cfr}[2024/01/01]
+\IfFormatAtLeastTF {2020-02-02}{%
+ \DeclareEncodingSubset{TS1}{yes}{1}%
+ \DeclareEncodingSubset{TS1}{yesj}{1}%
+ \DeclareEncodingSubset{TS1}{yesw}{1}%
+ \DeclareEncodingSubset{TS1}{yesjw}{1}%
+ \DeclareEncodingSubset{TS1}{yes0}{1}%
+ \DeclareEncodingSubset{TS1}{yes1}{1}%
+}{%
+ \RequirePackage{textcomp}}
+\UndeclareTextCommand{\textperthousand}{T1}
+\ExplSyntaxOn
+\keys_define:nn { electrum }
+{
+ lig .bool_set:N = \g__electrum_lig_bool,
+ lig .default:n = true,
+ lig .initial:n = false,
+ lf .bool_set_inverse:N = \g__electrum_osf_bool,
+ lf .default:n = true,
+ osf .bool_set:N = \g__electrum_osf_bool,
+ osf .default:n = true,
+ osf .initial:n = true,
+ scale .tl_set:N = \yes@scale,
+ scale .initial:V = \@empty,
+}
+\ProcessKeyOptions[electrum]
+\tl_new:N \g__electrum_rm_tl
+\tl_gset:Nn \g__electrum_rm_tl {yes}
+\bool_if:NT \g__electrum_osf_bool
+{
+ \tl_gput_right:Nn \g__electrum_rm_tl {j}
+}
+\bool_if:NT \g__electrum_lig_bool
+{
+ \tl_gput_right:Nn \g__electrum_rm_tl {w}
+}
+\renewcommand{\rmdefault}{\g__electrum_rm_tl}
+\cs_if_exist:NF \infstyle
+{
+ \hook_gput_code:nnn { begindocument } { . }
+ {
+ \PackageWarning{electrum}
+ {electrum ~ requires ~ updated ~ nfssext-cfr ~ for ~ compatibility ~ with ~ hyperref}
+ \@ifpackageloaded{hyperref}{
+ \hook_gput_code:nnn { cmd/textin/before } { . }
+ {
+ \PackageWarning{electrum}{Note ~ that ~ '\protect\textin' ~ is ~ defined ~ by ~ hyperref.\MessageBreak
+ Use ~ for ~ inferior ~ digits ~ will ~ yield ~ an\MessageBreak
+ undefined ~ command ~ error ~ with ~ document ~ font ~ encodings.\MessageBreak
+ Use ~ '\protect\textinf' ~ to ~ access ~ inferior ~ digits}
+ }
+ \let\infstyle\instyle
+ \DeclareTextFontCommand{\textinf}{\infstyle}
+ }{}
+ }
+}
+\ExplSyntaxOff
+%% paid â chynnwys \endinput - docstrip yn chwilio amddo fe yn arbennigol
+%% & bydd doctrip yn ei ychwanegu fe beth bynnag
+%% (Martin Scharrer: https://tex.stackexchange.com/a/28997/)
+%% end electrum.sty
+\endinput
+%%
+%% End of file `electrum.sty'.
diff --git a/Master/texmf-dist/tex/latex/electrumadf/t1yes.fd b/Master/texmf-dist/tex/latex/electrumadf/t1yes.fd
new file mode 100644
index 00000000000..042409f642e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/electrumadf/t1yes.fd
@@ -0,0 +1,103 @@
+%Filename: t1yes.fd
+%Created by: tex yes-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{t1yes.fd}
+ [2024/07/21 Fontinst v1.933 font definitions for T1/yes.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yes@scale\endcsname\relax
+ \let\yes@@scale\@empty
+\else
+ \edef\yes@@scale{s*[\csname yes@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{yes}{}
+
+\DeclareFontShape{T1}{yes}{m}{n}{
+ <-> \yes@@scale yesr8t
+}{}
+
+\DeclareFontShape{T1}{yes}{m}{sc}{
+ <-> \yes@@scale yesrc8t
+}{}
+
+\DeclareFontShape{T1}{yes}{m}{sl}{
+ <-> \yes@@scale yesro8t
+}{}
+
+\DeclareFontShape{T1}{yes}{m}{scit}{
+ <-> \yes@@scale yesrco8t
+}{}
+
+\DeclareFontShape{T1}{yes}{b}{n}{
+ <-> \yes@@scale yesb8t
+}{}
+
+\DeclareFontShape{T1}{yes}{b}{sc}{
+ <-> \yes@@scale yesbc8t
+}{}
+
+\DeclareFontShape{T1}{yes}{b}{sl}{
+ <-> \yes@@scale yesbo8t
+}{}
+
+\DeclareFontShape{T1}{yes}{b}{scit}{
+ <-> \yes@@scale yesbco8t
+}{}
+
+\DeclareFontShape{T1}{yes}{l}{n}{
+ <-> \yes@@scale yesl8t
+}{}
+
+\DeclareFontShape{T1}{yes}{l}{sc}{
+ <-> \yes@@scale yeslc8t
+}{}
+
+\DeclareFontShape{T1}{yes}{l}{sl}{
+ <-> \yes@@scale yeslo8t
+}{}
+
+\DeclareFontShape{T1}{yes}{l}{scit}{
+ <-> \yes@@scale yeslco8t
+}{}
+
+\DeclareFontShape{T1}{yes}{sb}{n}{
+ <-> \yes@@scale yess8t
+}{}
+
+\DeclareFontShape{T1}{yes}{sb}{sc}{
+ <-> \yes@@scale yessc8t
+}{}
+
+\DeclareFontShape{T1}{yes}{sb}{sl}{
+ <-> \yes@@scale yesso8t
+}{}
+
+\DeclareFontShape{T1}{yes}{sb}{scit}{
+ <-> \yes@@scale yessco8t
+}{}
+
+\DeclareFontShape{T1}{yes}{m}{it}{<->ssub * yes/m/sl}{}
+\DeclareFontShape{T1}{yes}{m}{si}{<->ssub * yes/m/scit}{}
+\DeclareFontShape{T1}{yes}{m}{scsl}{<->ssub * yes/m/si}{}
+\DeclareFontShape{T1}{yes}{bx}{n}{<->ssub * yes/b/n}{}
+\DeclareFontShape{T1}{yes}{bx}{sc}{<->ssub * yes/b/sc}{}
+\DeclareFontShape{T1}{yes}{bx}{sl}{<->ssub * yes/b/sl}{}
+\DeclareFontShape{T1}{yes}{b}{it}{<->ssub * yes/b/sl}{}
+\DeclareFontShape{T1}{yes}{bx}{it}{<->ssub * yes/b/it}{}
+\DeclareFontShape{T1}{yes}{bx}{scit}{<->ssub * yes/b/scit}{}
+\DeclareFontShape{T1}{yes}{b}{si}{<->ssub * yes/b/scit}{}
+\DeclareFontShape{T1}{yes}{bx}{si}{<->ssub * yes/b/si}{}
+\DeclareFontShape{T1}{yes}{b}{scsl}{<->ssub * yes/b/si}{}
+\DeclareFontShape{T1}{yes}{bx}{scsl}{<->ssub * yes/b/scsl}{}
+\DeclareFontShape{T1}{yes}{l}{it}{<->ssub * yes/l/sl}{}
+\DeclareFontShape{T1}{yes}{l}{si}{<->ssub * yes/l/scit}{}
+\DeclareFontShape{T1}{yes}{l}{scsl}{<->ssub * yes/l/si}{}
+\DeclareFontShape{T1}{yes}{sb}{it}{<->ssub * yes/sb/sl}{}
+\DeclareFontShape{T1}{yes}{sb}{si}{<->ssub * yes/sb/scit}{}
+\DeclareFontShape{T1}{yes}{sb}{scsl}{<->ssub * yes/sb/si}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/electrum/t1yes0.fd b/Master/texmf-dist/tex/latex/electrumadf/t1yes0.fd
index a94370d0267..161fa06ceac 100644
--- a/Master/texmf-dist/tex/latex/electrum/t1yes0.fd
+++ b/Master/texmf-dist/tex/latex/electrumadf/t1yes0.fd
@@ -5,63 +5,60 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1yes0.fd}
- [2010/07/19 Fontinst v1.933 font definitions for T1/yes0.]
+ [2024/07/21 Fontinst v1.933 font definitions for T1/yes0.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yes@scale\endcsname\relax
+ \let\yes@@scale\@empty
+\else
+ \edef\yes@@scale{s*[\csname yes@scale\endcsname]}%
+\fi
\DeclareFontFamily{T1}{yes0}{}
\DeclareFontShape{T1}{yes0}{m}{n}{
- <-> yesr08t
+ <-> \yes@@scale yesr08t
}{}
\DeclareFontShape{T1}{yes0}{m}{sl}{
- <-> yesr0o8t
+ <-> \yes@@scale yesr0o8t
}{}
\DeclareFontShape{T1}{yes0}{b}{n}{
- <-> yesb08t
+ <-> \yes@@scale yesb08t
}{}
\DeclareFontShape{T1}{yes0}{b}{sl}{
- <-> yesb0o8t
+ <-> \yes@@scale yesb0o8t
}{}
\DeclareFontShape{T1}{yes0}{l}{n}{
- <-> yesl08t
+ <-> \yes@@scale yesl08t
}{}
\DeclareFontShape{T1}{yes0}{l}{sl}{
- <-> yesl0o8t
+ <-> \yes@@scale yesl0o8t
}{}
\DeclareFontShape{T1}{yes0}{sb}{n}{
- <-> yess08t
+ <-> \yes@@scale yess08t
}{}
\DeclareFontShape{T1}{yes0}{sb}{sl}{
- <-> yess0o8t
+ <-> \yes@@scale yess0o8t
}{}
\DeclareFontShape{T1}{yes0}{m}{sc}{<->ssub * yes0/m/n}{}
\DeclareFontShape{T1}{yes0}{m}{it}{<->ssub * yes0/m/sl}{}
-\DeclareFontShape{T1}{yes0}{m}{scsl}{<->ssub * yes0/m/it}{}
-\DeclareFontShape{T1}{yes0}{m}{si}{<->ssub * yes0/m/scsl}{}
\DeclareFontShape{T1}{yes0}{bx}{n}{<->ssub * yes0/b/n}{}
\DeclareFontShape{T1}{yes0}{b}{sc}{<->ssub * yes0/b/n}{}
\DeclareFontShape{T1}{yes0}{bx}{sc}{<->ssub * yes0/b/sc}{}
\DeclareFontShape{T1}{yes0}{bx}{sl}{<->ssub * yes0/b/sl}{}
\DeclareFontShape{T1}{yes0}{b}{it}{<->ssub * yes0/b/sl}{}
\DeclareFontShape{T1}{yes0}{bx}{it}{<->ssub * yes0/b/it}{}
-\DeclareFontShape{T1}{yes0}{b}{scsl}{<->ssub * yes0/b/it}{}
-\DeclareFontShape{T1}{yes0}{bx}{scsl}{<->ssub * yes0/b/scsl}{}
-\DeclareFontShape{T1}{yes0}{b}{si}{<->ssub * yes0/b/scsl}{}
-\DeclareFontShape{T1}{yes0}{bx}{si}{<->ssub * yes0/b/si}{}
\DeclareFontShape{T1}{yes0}{l}{sc}{<->ssub * yes0/l/n}{}
\DeclareFontShape{T1}{yes0}{l}{it}{<->ssub * yes0/l/sl}{}
-\DeclareFontShape{T1}{yes0}{l}{scsl}{<->ssub * yes0/l/it}{}
-\DeclareFontShape{T1}{yes0}{l}{si}{<->ssub * yes0/l/scsl}{}
\DeclareFontShape{T1}{yes0}{sb}{sc}{<->ssub * yes0/sb/n}{}
\DeclareFontShape{T1}{yes0}{sb}{it}{<->ssub * yes0/sb/sl}{}
-\DeclareFontShape{T1}{yes0}{sb}{scsl}{<->ssub * yes0/sb/it}{}
-\DeclareFontShape{T1}{yes0}{sb}{si}{<->ssub * yes0/sb/scsl}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/electrum/t1yes1.fd b/Master/texmf-dist/tex/latex/electrumadf/t1yes1.fd
index 004c444799d..db7e7617b7d 100644
--- a/Master/texmf-dist/tex/latex/electrum/t1yes1.fd
+++ b/Master/texmf-dist/tex/latex/electrumadf/t1yes1.fd
@@ -5,63 +5,60 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1yes1.fd}
- [2010/07/19 Fontinst v1.933 font definitions for T1/yes1.]
+ [2024/07/21 Fontinst v1.933 font definitions for T1/yes1.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yes@scale\endcsname\relax
+ \let\yes@@scale\@empty
+\else
+ \edef\yes@@scale{s*[\csname yes@scale\endcsname]}%
+\fi
\DeclareFontFamily{T1}{yes1}{}
\DeclareFontShape{T1}{yes1}{m}{n}{
- <-> yesr18t
+ <-> \yes@@scale yesr18t
}{}
\DeclareFontShape{T1}{yes1}{m}{sl}{
- <-> yesr1o8t
+ <-> \yes@@scale yesr1o8t
}{}
\DeclareFontShape{T1}{yes1}{b}{n}{
- <-> yesb18t
+ <-> \yes@@scale yesb18t
}{}
\DeclareFontShape{T1}{yes1}{b}{sl}{
- <-> yesb1o8t
+ <-> \yes@@scale yesb1o8t
}{}
\DeclareFontShape{T1}{yes1}{l}{n}{
- <-> yesl18t
+ <-> \yes@@scale yesl18t
}{}
\DeclareFontShape{T1}{yes1}{l}{sl}{
- <-> yesl1o8t
+ <-> \yes@@scale yesl1o8t
}{}
\DeclareFontShape{T1}{yes1}{sb}{n}{
- <-> yess18t
+ <-> \yes@@scale yess18t
}{}
\DeclareFontShape{T1}{yes1}{sb}{sl}{
- <-> yess1o8t
+ <-> \yes@@scale yess1o8t
}{}
\DeclareFontShape{T1}{yes1}{m}{sc}{<->ssub * yes1/m/n}{}
\DeclareFontShape{T1}{yes1}{m}{it}{<->ssub * yes1/m/sl}{}
-\DeclareFontShape{T1}{yes1}{m}{scsl}{<->ssub * yes1/m/it}{}
-\DeclareFontShape{T1}{yes1}{m}{si}{<->ssub * yes1/m/scsl}{}
\DeclareFontShape{T1}{yes1}{bx}{n}{<->ssub * yes1/b/n}{}
\DeclareFontShape{T1}{yes1}{b}{sc}{<->ssub * yes1/b/n}{}
\DeclareFontShape{T1}{yes1}{bx}{sc}{<->ssub * yes1/b/sc}{}
\DeclareFontShape{T1}{yes1}{bx}{sl}{<->ssub * yes1/b/sl}{}
\DeclareFontShape{T1}{yes1}{b}{it}{<->ssub * yes1/b/sl}{}
\DeclareFontShape{T1}{yes1}{bx}{it}{<->ssub * yes1/b/it}{}
-\DeclareFontShape{T1}{yes1}{b}{scsl}{<->ssub * yes1/b/it}{}
-\DeclareFontShape{T1}{yes1}{bx}{scsl}{<->ssub * yes1/b/scsl}{}
-\DeclareFontShape{T1}{yes1}{b}{si}{<->ssub * yes1/b/scsl}{}
-\DeclareFontShape{T1}{yes1}{bx}{si}{<->ssub * yes1/b/si}{}
\DeclareFontShape{T1}{yes1}{l}{sc}{<->ssub * yes1/l/n}{}
\DeclareFontShape{T1}{yes1}{l}{it}{<->ssub * yes1/l/sl}{}
-\DeclareFontShape{T1}{yes1}{l}{scsl}{<->ssub * yes1/l/it}{}
-\DeclareFontShape{T1}{yes1}{l}{si}{<->ssub * yes1/l/scsl}{}
\DeclareFontShape{T1}{yes1}{sb}{sc}{<->ssub * yes1/sb/n}{}
\DeclareFontShape{T1}{yes1}{sb}{it}{<->ssub * yes1/sb/sl}{}
-\DeclareFontShape{T1}{yes1}{sb}{scsl}{<->ssub * yes1/sb/it}{}
-\DeclareFontShape{T1}{yes1}{sb}{si}{<->ssub * yes1/sb/scsl}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/electrumadf/t1yesj.fd b/Master/texmf-dist/tex/latex/electrumadf/t1yesj.fd
new file mode 100644
index 00000000000..05552e2a270
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/electrumadf/t1yesj.fd
@@ -0,0 +1,103 @@
+%Filename: t1yesj.fd
+%Created by: tex yes-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{t1yesj.fd}
+ [2024/07/21 Fontinst v1.933 font definitions for T1/yesj.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yes@scale\endcsname\relax
+ \let\yes@@scale\@empty
+\else
+ \edef\yes@@scale{s*[\csname yes@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{yesj}{}
+
+\DeclareFontShape{T1}{yesj}{m}{n}{
+ <-> \yes@@scale yesrj8t
+}{}
+
+\DeclareFontShape{T1}{yesj}{m}{sc}{
+ <-> \yes@@scale yesrcj8t
+}{}
+
+\DeclareFontShape{T1}{yesj}{m}{sl}{
+ <-> \yes@@scale yesrjo8t
+}{}
+
+\DeclareFontShape{T1}{yesj}{m}{scit}{
+ <-> \yes@@scale yesrcjo8t
+}{}
+
+\DeclareFontShape{T1}{yesj}{b}{n}{
+ <-> \yes@@scale yesbj8t
+}{}
+
+\DeclareFontShape{T1}{yesj}{b}{sc}{
+ <-> \yes@@scale yesbcj8t
+}{}
+
+\DeclareFontShape{T1}{yesj}{b}{sl}{
+ <-> \yes@@scale yesbjo8t
+}{}
+
+\DeclareFontShape{T1}{yesj}{b}{scit}{
+ <-> \yes@@scale yesbcjo8t
+}{}
+
+\DeclareFontShape{T1}{yesj}{l}{n}{
+ <-> \yes@@scale yeslj8t
+}{}
+
+\DeclareFontShape{T1}{yesj}{l}{sc}{
+ <-> \yes@@scale yeslcj8t
+}{}
+
+\DeclareFontShape{T1}{yesj}{l}{sl}{
+ <-> \yes@@scale yesljo8t
+}{}
+
+\DeclareFontShape{T1}{yesj}{l}{scit}{
+ <-> \yes@@scale yeslcjo8t
+}{}
+
+\DeclareFontShape{T1}{yesj}{sb}{n}{
+ <-> \yes@@scale yessj8t
+}{}
+
+\DeclareFontShape{T1}{yesj}{sb}{sc}{
+ <-> \yes@@scale yesscj8t
+}{}
+
+\DeclareFontShape{T1}{yesj}{sb}{sl}{
+ <-> \yes@@scale yessjo8t
+}{}
+
+\DeclareFontShape{T1}{yesj}{sb}{scit}{
+ <-> \yes@@scale yesscjo8t
+}{}
+
+\DeclareFontShape{T1}{yesj}{m}{it}{<->ssub * yesj/m/sl}{}
+\DeclareFontShape{T1}{yesj}{m}{si}{<->ssub * yesj/m/scit}{}
+\DeclareFontShape{T1}{yesj}{m}{scsl}{<->ssub * yesj/m/si}{}
+\DeclareFontShape{T1}{yesj}{bx}{n}{<->ssub * yesj/b/n}{}
+\DeclareFontShape{T1}{yesj}{bx}{sc}{<->ssub * yesj/b/sc}{}
+\DeclareFontShape{T1}{yesj}{bx}{sl}{<->ssub * yesj/b/sl}{}
+\DeclareFontShape{T1}{yesj}{b}{it}{<->ssub * yesj/b/sl}{}
+\DeclareFontShape{T1}{yesj}{bx}{it}{<->ssub * yesj/b/it}{}
+\DeclareFontShape{T1}{yesj}{bx}{scit}{<->ssub * yesj/b/scit}{}
+\DeclareFontShape{T1}{yesj}{b}{si}{<->ssub * yesj/b/scit}{}
+\DeclareFontShape{T1}{yesj}{bx}{si}{<->ssub * yesj/b/si}{}
+\DeclareFontShape{T1}{yesj}{b}{scsl}{<->ssub * yesj/b/si}{}
+\DeclareFontShape{T1}{yesj}{bx}{scsl}{<->ssub * yesj/b/scsl}{}
+\DeclareFontShape{T1}{yesj}{l}{it}{<->ssub * yesj/l/sl}{}
+\DeclareFontShape{T1}{yesj}{l}{si}{<->ssub * yesj/l/scit}{}
+\DeclareFontShape{T1}{yesj}{l}{scsl}{<->ssub * yesj/l/si}{}
+\DeclareFontShape{T1}{yesj}{sb}{it}{<->ssub * yesj/sb/sl}{}
+\DeclareFontShape{T1}{yesj}{sb}{si}{<->ssub * yesj/sb/scit}{}
+\DeclareFontShape{T1}{yesj}{sb}{scsl}{<->ssub * yesj/sb/si}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/electrumadf/t1yesjw.fd b/Master/texmf-dist/tex/latex/electrumadf/t1yesjw.fd
new file mode 100644
index 00000000000..ee84ee500d6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/electrumadf/t1yesjw.fd
@@ -0,0 +1,103 @@
+%Filename: t1yesjw.fd
+%Created by: tex yes-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{t1yesjw.fd}
+ [2024/07/21 Fontinst v1.933 font definitions for T1/yesjw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yes@scale\endcsname\relax
+ \let\yes@@scale\@empty
+\else
+ \edef\yes@@scale{s*[\csname yes@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{yesjw}{}
+
+\DeclareFontShape{T1}{yesjw}{m}{n}{
+ <-> \yes@@scale yesrjw8t
+}{}
+
+\DeclareFontShape{T1}{yesjw}{m}{sc}{
+ <-> \yes@@scale yesrcjw8t
+}{}
+
+\DeclareFontShape{T1}{yesjw}{m}{sl}{
+ <-> \yes@@scale yesrjow8t
+}{}
+
+\DeclareFontShape{T1}{yesjw}{m}{scit}{
+ <-> \yes@@scale yesrcjow8t
+}{}
+
+\DeclareFontShape{T1}{yesjw}{b}{n}{
+ <-> \yes@@scale yesbjw8t
+}{}
+
+\DeclareFontShape{T1}{yesjw}{b}{sc}{
+ <-> \yes@@scale yesbcjw8t
+}{}
+
+\DeclareFontShape{T1}{yesjw}{b}{sl}{
+ <-> \yes@@scale yesbjow8t
+}{}
+
+\DeclareFontShape{T1}{yesjw}{b}{scit}{
+ <-> \yes@@scale yesbcjow8t
+}{}
+
+\DeclareFontShape{T1}{yesjw}{l}{n}{
+ <-> \yes@@scale yesljw8t
+}{}
+
+\DeclareFontShape{T1}{yesjw}{l}{sc}{
+ <-> \yes@@scale yeslcjw8t
+}{}
+
+\DeclareFontShape{T1}{yesjw}{l}{sl}{
+ <-> \yes@@scale yesljow8t
+}{}
+
+\DeclareFontShape{T1}{yesjw}{l}{scit}{
+ <-> \yes@@scale yeslcjow8t
+}{}
+
+\DeclareFontShape{T1}{yesjw}{sb}{n}{
+ <-> \yes@@scale yessjw8t
+}{}
+
+\DeclareFontShape{T1}{yesjw}{sb}{sc}{
+ <-> \yes@@scale yesscjw8t
+}{}
+
+\DeclareFontShape{T1}{yesjw}{sb}{sl}{
+ <-> \yes@@scale yessjow8t
+}{}
+
+\DeclareFontShape{T1}{yesjw}{sb}{scit}{
+ <-> \yes@@scale yesscjow8t
+}{}
+
+\DeclareFontShape{T1}{yesjw}{m}{it}{<->ssub * yesjw/m/sl}{}
+\DeclareFontShape{T1}{yesjw}{m}{si}{<->ssub * yesjw/m/scit}{}
+\DeclareFontShape{T1}{yesjw}{m}{scsl}{<->ssub * yesjw/m/si}{}
+\DeclareFontShape{T1}{yesjw}{bx}{n}{<->ssub * yesjw/b/n}{}
+\DeclareFontShape{T1}{yesjw}{bx}{sc}{<->ssub * yesjw/b/sc}{}
+\DeclareFontShape{T1}{yesjw}{bx}{sl}{<->ssub * yesjw/b/sl}{}
+\DeclareFontShape{T1}{yesjw}{b}{it}{<->ssub * yesjw/b/sl}{}
+\DeclareFontShape{T1}{yesjw}{bx}{it}{<->ssub * yesjw/b/it}{}
+\DeclareFontShape{T1}{yesjw}{bx}{scit}{<->ssub * yesjw/b/scit}{}
+\DeclareFontShape{T1}{yesjw}{b}{si}{<->ssub * yesjw/b/scit}{}
+\DeclareFontShape{T1}{yesjw}{bx}{si}{<->ssub * yesjw/b/si}{}
+\DeclareFontShape{T1}{yesjw}{b}{scsl}{<->ssub * yesjw/b/si}{}
+\DeclareFontShape{T1}{yesjw}{bx}{scsl}{<->ssub * yesjw/b/scsl}{}
+\DeclareFontShape{T1}{yesjw}{l}{it}{<->ssub * yesjw/l/sl}{}
+\DeclareFontShape{T1}{yesjw}{l}{si}{<->ssub * yesjw/l/scit}{}
+\DeclareFontShape{T1}{yesjw}{l}{scsl}{<->ssub * yesjw/l/si}{}
+\DeclareFontShape{T1}{yesjw}{sb}{it}{<->ssub * yesjw/sb/sl}{}
+\DeclareFontShape{T1}{yesjw}{sb}{si}{<->ssub * yesjw/sb/scit}{}
+\DeclareFontShape{T1}{yesjw}{sb}{scsl}{<->ssub * yesjw/sb/si}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/electrumadf/t1yesw.fd b/Master/texmf-dist/tex/latex/electrumadf/t1yesw.fd
new file mode 100644
index 00000000000..a82a7498bf3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/electrumadf/t1yesw.fd
@@ -0,0 +1,103 @@
+%Filename: t1yesw.fd
+%Created by: tex yes-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{t1yesw.fd}
+ [2024/07/21 Fontinst v1.933 font definitions for T1/yesw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yes@scale\endcsname\relax
+ \let\yes@@scale\@empty
+\else
+ \edef\yes@@scale{s*[\csname yes@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{yesw}{}
+
+\DeclareFontShape{T1}{yesw}{m}{n}{
+ <-> \yes@@scale yesrw8t
+}{}
+
+\DeclareFontShape{T1}{yesw}{m}{sc}{
+ <-> \yes@@scale yesrcw8t
+}{}
+
+\DeclareFontShape{T1}{yesw}{m}{sl}{
+ <-> \yes@@scale yesrow8t
+}{}
+
+\DeclareFontShape{T1}{yesw}{m}{scit}{
+ <-> \yes@@scale yesrcow8t
+}{}
+
+\DeclareFontShape{T1}{yesw}{b}{n}{
+ <-> \yes@@scale yesbw8t
+}{}
+
+\DeclareFontShape{T1}{yesw}{b}{sc}{
+ <-> \yes@@scale yesbcw8t
+}{}
+
+\DeclareFontShape{T1}{yesw}{b}{sl}{
+ <-> \yes@@scale yesbow8t
+}{}
+
+\DeclareFontShape{T1}{yesw}{b}{scit}{
+ <-> \yes@@scale yesbcow8t
+}{}
+
+\DeclareFontShape{T1}{yesw}{l}{n}{
+ <-> \yes@@scale yeslw8t
+}{}
+
+\DeclareFontShape{T1}{yesw}{l}{sc}{
+ <-> \yes@@scale yeslcw8t
+}{}
+
+\DeclareFontShape{T1}{yesw}{l}{sl}{
+ <-> \yes@@scale yeslow8t
+}{}
+
+\DeclareFontShape{T1}{yesw}{l}{scit}{
+ <-> \yes@@scale yeslcow8t
+}{}
+
+\DeclareFontShape{T1}{yesw}{sb}{n}{
+ <-> \yes@@scale yessw8t
+}{}
+
+\DeclareFontShape{T1}{yesw}{sb}{sc}{
+ <-> \yes@@scale yesscw8t
+}{}
+
+\DeclareFontShape{T1}{yesw}{sb}{sl}{
+ <-> \yes@@scale yessow8t
+}{}
+
+\DeclareFontShape{T1}{yesw}{sb}{scit}{
+ <-> \yes@@scale yesscow8t
+}{}
+
+\DeclareFontShape{T1}{yesw}{m}{it}{<->ssub * yesw/m/sl}{}
+\DeclareFontShape{T1}{yesw}{m}{si}{<->ssub * yesw/m/scit}{}
+\DeclareFontShape{T1}{yesw}{m}{scsl}{<->ssub * yesw/m/si}{}
+\DeclareFontShape{T1}{yesw}{bx}{n}{<->ssub * yesw/b/n}{}
+\DeclareFontShape{T1}{yesw}{bx}{sc}{<->ssub * yesw/b/sc}{}
+\DeclareFontShape{T1}{yesw}{bx}{sl}{<->ssub * yesw/b/sl}{}
+\DeclareFontShape{T1}{yesw}{b}{it}{<->ssub * yesw/b/sl}{}
+\DeclareFontShape{T1}{yesw}{bx}{it}{<->ssub * yesw/b/it}{}
+\DeclareFontShape{T1}{yesw}{bx}{scit}{<->ssub * yesw/b/scit}{}
+\DeclareFontShape{T1}{yesw}{b}{si}{<->ssub * yesw/b/scit}{}
+\DeclareFontShape{T1}{yesw}{bx}{si}{<->ssub * yesw/b/si}{}
+\DeclareFontShape{T1}{yesw}{b}{scsl}{<->ssub * yesw/b/si}{}
+\DeclareFontShape{T1}{yesw}{bx}{scsl}{<->ssub * yesw/b/scsl}{}
+\DeclareFontShape{T1}{yesw}{l}{it}{<->ssub * yesw/l/sl}{}
+\DeclareFontShape{T1}{yesw}{l}{si}{<->ssub * yesw/l/scit}{}
+\DeclareFontShape{T1}{yesw}{l}{scsl}{<->ssub * yesw/l/si}{}
+\DeclareFontShape{T1}{yesw}{sb}{it}{<->ssub * yesw/sb/sl}{}
+\DeclareFontShape{T1}{yesw}{sb}{si}{<->ssub * yesw/sb/scit}{}
+\DeclareFontShape{T1}{yesw}{sb}{scsl}{<->ssub * yesw/sb/si}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/electrumadf/ts1yes.fd b/Master/texmf-dist/tex/latex/electrumadf/ts1yes.fd
new file mode 100644
index 00000000000..c5a06367371
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/electrumadf/ts1yes.fd
@@ -0,0 +1,103 @@
+%Filename: ts1yes.fd
+%Created by: tex yes-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ts1yes.fd}
+ [2024/07/21 Fontinst v1.933 font definitions for TS1/yes.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yes@scale\endcsname\relax
+ \let\yes@@scale\@empty
+\else
+ \edef\yes@@scale{s*[\csname yes@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{yes}{}
+
+\DeclareFontShape{TS1}{yes}{m}{n}{
+ <-> \yes@@scale yesr8c
+}{}
+
+\DeclareFontShape{TS1}{yes}{m}{sl}{
+ <-> \yes@@scale yesro8c
+}{}
+
+\DeclareFontShape{TS1}{yes}{b}{n}{
+ <-> \yes@@scale yesb8c
+}{}
+
+\DeclareFontShape{TS1}{yes}{b}{sl}{
+ <-> \yes@@scale yesbo8c
+}{}
+
+\DeclareFontShape{TS1}{yes}{l}{n}{
+ <-> \yes@@scale yesl8c
+}{}
+
+\DeclareFontShape{TS1}{yes}{l}{sl}{
+ <-> \yes@@scale yeslo8c
+}{}
+
+\DeclareFontShape{TS1}{yes}{sb}{n}{
+ <-> \yes@@scale yess8c
+}{}
+
+\DeclareFontShape{TS1}{yes}{sb}{sl}{
+ <-> \yes@@scale yesso8c
+}{}
+
+\DeclareFontShape{TS1}{yes}{m}{sc}{
+ <-> \yes@@scale yesr8c
+}{}
+
+\DeclareFontShape{TS1}{yes}{m}{scit}{
+ <-> \yes@@scale yesro8c
+}{}
+
+\DeclareFontShape{TS1}{yes}{b}{sc}{
+ <-> \yes@@scale yesb8c
+}{}
+
+\DeclareFontShape{TS1}{yes}{b}{scit}{
+ <-> \yes@@scale yesbo8c
+}{}
+
+\DeclareFontShape{TS1}{yes}{l}{sc}{
+ <-> \yes@@scale yesl8c
+}{}
+
+\DeclareFontShape{TS1}{yes}{l}{scit}{
+ <-> \yes@@scale yeslo8c
+}{}
+
+\DeclareFontShape{TS1}{yes}{sb}{sc}{
+ <-> \yes@@scale yess8c
+}{}
+
+\DeclareFontShape{TS1}{yes}{sb}{scit}{
+ <-> \yes@@scale yesso8c
+}{}
+
+\DeclareFontShape{TS1}{yes}{m}{it}{<->ssub * yes/m/sl}{}
+\DeclareFontShape{TS1}{yes}{bx}{n}{<->ssub * yes/b/n}{}
+\DeclareFontShape{TS1}{yes}{bx}{sl}{<->ssub * yes/b/sl}{}
+\DeclareFontShape{TS1}{yes}{b}{it}{<->ssub * yes/b/sl}{}
+\DeclareFontShape{TS1}{yes}{bx}{it}{<->ssub * yes/b/it}{}
+\DeclareFontShape{TS1}{yes}{l}{it}{<->ssub * yes/l/sl}{}
+\DeclareFontShape{TS1}{yes}{sb}{it}{<->ssub * yes/sb/sl}{}
+\DeclareFontShape{TS1}{yes}{m}{si}{<->ssub * yes/m/scit}{}
+\DeclareFontShape{TS1}{yes}{m}{scsl}{<->ssub * yes/m/si}{}
+\DeclareFontShape{TS1}{yes}{bx}{sc}{<->ssub * yes/b/sc}{}
+\DeclareFontShape{TS1}{yes}{bx}{scit}{<->ssub * yes/b/scit}{}
+\DeclareFontShape{TS1}{yes}{b}{si}{<->ssub * yes/b/scit}{}
+\DeclareFontShape{TS1}{yes}{bx}{si}{<->ssub * yes/b/si}{}
+\DeclareFontShape{TS1}{yes}{b}{scsl}{<->ssub * yes/b/si}{}
+\DeclareFontShape{TS1}{yes}{bx}{scsl}{<->ssub * yes/b/scsl}{}
+\DeclareFontShape{TS1}{yes}{l}{si}{<->ssub * yes/l/scit}{}
+\DeclareFontShape{TS1}{yes}{l}{scsl}{<->ssub * yes/l/si}{}
+\DeclareFontShape{TS1}{yes}{sb}{si}{<->ssub * yes/sb/scit}{}
+\DeclareFontShape{TS1}{yes}{sb}{scsl}{<->ssub * yes/sb/si}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/electrum/ts1yes0.fd b/Master/texmf-dist/tex/latex/electrumadf/ts1yes0.fd
index 6c3a2aa41d1..76ce5271571 100644
--- a/Master/texmf-dist/tex/latex/electrum/ts1yes0.fd
+++ b/Master/texmf-dist/tex/latex/electrumadf/ts1yes0.fd
@@ -5,63 +5,60 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1yes0.fd}
- [2010/07/19 Fontinst v1.933 font definitions for TS1/yes0.]
+ [2024/07/21 Fontinst v1.933 font definitions for TS1/yes0.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yes@scale\endcsname\relax
+ \let\yes@@scale\@empty
+\else
+ \edef\yes@@scale{s*[\csname yes@scale\endcsname]}%
+\fi
\DeclareFontFamily{TS1}{yes0}{}
\DeclareFontShape{TS1}{yes0}{m}{n}{
- <-> yesr08c
+ <-> \yes@@scale yesr08c
}{}
\DeclareFontShape{TS1}{yes0}{m}{sl}{
- <-> yesr0o8c
+ <-> \yes@@scale yesr0o8c
}{}
\DeclareFontShape{TS1}{yes0}{b}{n}{
- <-> yesb08c
+ <-> \yes@@scale yesb08c
}{}
\DeclareFontShape{TS1}{yes0}{b}{sl}{
- <-> yesb0o8c
+ <-> \yes@@scale yesb0o8c
}{}
\DeclareFontShape{TS1}{yes0}{l}{n}{
- <-> yesl08c
+ <-> \yes@@scale yesl08c
}{}
\DeclareFontShape{TS1}{yes0}{l}{sl}{
- <-> yesl0o8c
+ <-> \yes@@scale yesl0o8c
}{}
\DeclareFontShape{TS1}{yes0}{sb}{n}{
- <-> yess08c
+ <-> \yes@@scale yess08c
}{}
\DeclareFontShape{TS1}{yes0}{sb}{sl}{
- <-> yess0o8c
+ <-> \yes@@scale yess0o8c
}{}
\DeclareFontShape{TS1}{yes0}{m}{sc}{<->ssub * yes0/m/n}{}
\DeclareFontShape{TS1}{yes0}{m}{it}{<->ssub * yes0/m/sl}{}
-\DeclareFontShape{TS1}{yes0}{m}{scsl}{<->ssub * yes0/m/it}{}
-\DeclareFontShape{TS1}{yes0}{m}{si}{<->ssub * yes0/m/scsl}{}
\DeclareFontShape{TS1}{yes0}{bx}{n}{<->ssub * yes0/b/n}{}
\DeclareFontShape{TS1}{yes0}{b}{sc}{<->ssub * yes0/b/n}{}
\DeclareFontShape{TS1}{yes0}{bx}{sc}{<->ssub * yes0/b/sc}{}
\DeclareFontShape{TS1}{yes0}{bx}{sl}{<->ssub * yes0/b/sl}{}
\DeclareFontShape{TS1}{yes0}{b}{it}{<->ssub * yes0/b/sl}{}
\DeclareFontShape{TS1}{yes0}{bx}{it}{<->ssub * yes0/b/it}{}
-\DeclareFontShape{TS1}{yes0}{b}{scsl}{<->ssub * yes0/b/it}{}
-\DeclareFontShape{TS1}{yes0}{bx}{scsl}{<->ssub * yes0/b/scsl}{}
-\DeclareFontShape{TS1}{yes0}{b}{si}{<->ssub * yes0/b/scsl}{}
-\DeclareFontShape{TS1}{yes0}{bx}{si}{<->ssub * yes0/b/si}{}
\DeclareFontShape{TS1}{yes0}{l}{sc}{<->ssub * yes0/l/n}{}
\DeclareFontShape{TS1}{yes0}{l}{it}{<->ssub * yes0/l/sl}{}
-\DeclareFontShape{TS1}{yes0}{l}{scsl}{<->ssub * yes0/l/it}{}
-\DeclareFontShape{TS1}{yes0}{l}{si}{<->ssub * yes0/l/scsl}{}
\DeclareFontShape{TS1}{yes0}{sb}{sc}{<->ssub * yes0/sb/n}{}
\DeclareFontShape{TS1}{yes0}{sb}{it}{<->ssub * yes0/sb/sl}{}
-\DeclareFontShape{TS1}{yes0}{sb}{scsl}{<->ssub * yes0/sb/it}{}
-\DeclareFontShape{TS1}{yes0}{sb}{si}{<->ssub * yes0/sb/scsl}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/electrum/ts1yes1.fd b/Master/texmf-dist/tex/latex/electrumadf/ts1yes1.fd
index d8f82655e76..334594349d1 100644
--- a/Master/texmf-dist/tex/latex/electrum/ts1yes1.fd
+++ b/Master/texmf-dist/tex/latex/electrumadf/ts1yes1.fd
@@ -5,63 +5,60 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1yes1.fd}
- [2010/07/19 Fontinst v1.933 font definitions for TS1/yes1.]
+ [2024/07/21 Fontinst v1.933 font definitions for TS1/yes1.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yes@scale\endcsname\relax
+ \let\yes@@scale\@empty
+\else
+ \edef\yes@@scale{s*[\csname yes@scale\endcsname]}%
+\fi
\DeclareFontFamily{TS1}{yes1}{}
\DeclareFontShape{TS1}{yes1}{m}{n}{
- <-> yesr18c
+ <-> \yes@@scale yesr18c
}{}
\DeclareFontShape{TS1}{yes1}{m}{sl}{
- <-> yesr1o8c
+ <-> \yes@@scale yesr1o8c
}{}
\DeclareFontShape{TS1}{yes1}{b}{n}{
- <-> yesb18c
+ <-> \yes@@scale yesb18c
}{}
\DeclareFontShape{TS1}{yes1}{b}{sl}{
- <-> yesb1o8c
+ <-> \yes@@scale yesb1o8c
}{}
\DeclareFontShape{TS1}{yes1}{l}{n}{
- <-> yesl18c
+ <-> \yes@@scale yesl18c
}{}
\DeclareFontShape{TS1}{yes1}{l}{sl}{
- <-> yesl1o8c
+ <-> \yes@@scale yesl1o8c
}{}
\DeclareFontShape{TS1}{yes1}{sb}{n}{
- <-> yess18c
+ <-> \yes@@scale yess18c
}{}
\DeclareFontShape{TS1}{yes1}{sb}{sl}{
- <-> yess1o8c
+ <-> \yes@@scale yess1o8c
}{}
\DeclareFontShape{TS1}{yes1}{m}{sc}{<->ssub * yes1/m/n}{}
\DeclareFontShape{TS1}{yes1}{m}{it}{<->ssub * yes1/m/sl}{}
-\DeclareFontShape{TS1}{yes1}{m}{scsl}{<->ssub * yes1/m/it}{}
-\DeclareFontShape{TS1}{yes1}{m}{si}{<->ssub * yes1/m/scsl}{}
\DeclareFontShape{TS1}{yes1}{bx}{n}{<->ssub * yes1/b/n}{}
\DeclareFontShape{TS1}{yes1}{b}{sc}{<->ssub * yes1/b/n}{}
\DeclareFontShape{TS1}{yes1}{bx}{sc}{<->ssub * yes1/b/sc}{}
\DeclareFontShape{TS1}{yes1}{bx}{sl}{<->ssub * yes1/b/sl}{}
\DeclareFontShape{TS1}{yes1}{b}{it}{<->ssub * yes1/b/sl}{}
\DeclareFontShape{TS1}{yes1}{bx}{it}{<->ssub * yes1/b/it}{}
-\DeclareFontShape{TS1}{yes1}{b}{scsl}{<->ssub * yes1/b/it}{}
-\DeclareFontShape{TS1}{yes1}{bx}{scsl}{<->ssub * yes1/b/scsl}{}
-\DeclareFontShape{TS1}{yes1}{b}{si}{<->ssub * yes1/b/scsl}{}
-\DeclareFontShape{TS1}{yes1}{bx}{si}{<->ssub * yes1/b/si}{}
\DeclareFontShape{TS1}{yes1}{l}{sc}{<->ssub * yes1/l/n}{}
\DeclareFontShape{TS1}{yes1}{l}{it}{<->ssub * yes1/l/sl}{}
-\DeclareFontShape{TS1}{yes1}{l}{scsl}{<->ssub * yes1/l/it}{}
-\DeclareFontShape{TS1}{yes1}{l}{si}{<->ssub * yes1/l/scsl}{}
\DeclareFontShape{TS1}{yes1}{sb}{sc}{<->ssub * yes1/sb/n}{}
\DeclareFontShape{TS1}{yes1}{sb}{it}{<->ssub * yes1/sb/sl}{}
-\DeclareFontShape{TS1}{yes1}{sb}{scsl}{<->ssub * yes1/sb/it}{}
-\DeclareFontShape{TS1}{yes1}{sb}{si}{<->ssub * yes1/sb/scsl}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/electrumadf/ts1yesj.fd b/Master/texmf-dist/tex/latex/electrumadf/ts1yesj.fd
new file mode 100644
index 00000000000..7b6254b37f0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/electrumadf/ts1yesj.fd
@@ -0,0 +1,103 @@
+%Filename: ts1yesj.fd
+%Created by: tex yes-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ts1yesj.fd}
+ [2024/07/21 Fontinst v1.933 font definitions for TS1/yesj.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yes@scale\endcsname\relax
+ \let\yes@@scale\@empty
+\else
+ \edef\yes@@scale{s*[\csname yes@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{yesj}{}
+
+\DeclareFontShape{TS1}{yesj}{m}{n}{
+ <-> \yes@@scale yesrj8c
+}{}
+
+\DeclareFontShape{TS1}{yesj}{m}{sl}{
+ <-> \yes@@scale yesrjo8c
+}{}
+
+\DeclareFontShape{TS1}{yesj}{b}{n}{
+ <-> \yes@@scale yesbj8c
+}{}
+
+\DeclareFontShape{TS1}{yesj}{b}{sl}{
+ <-> \yes@@scale yesbjo8c
+}{}
+
+\DeclareFontShape{TS1}{yesj}{l}{n}{
+ <-> \yes@@scale yeslj8c
+}{}
+
+\DeclareFontShape{TS1}{yesj}{l}{sl}{
+ <-> \yes@@scale yesljo8c
+}{}
+
+\DeclareFontShape{TS1}{yesj}{sb}{n}{
+ <-> \yes@@scale yessj8c
+}{}
+
+\DeclareFontShape{TS1}{yesj}{sb}{sl}{
+ <-> \yes@@scale yessjo8c
+}{}
+
+\DeclareFontShape{TS1}{yesj}{m}{sc}{
+ <-> \yes@@scale yesrj8c
+}{}
+
+\DeclareFontShape{TS1}{yesj}{m}{scit}{
+ <-> \yes@@scale yesrjo8c
+}{}
+
+\DeclareFontShape{TS1}{yesj}{b}{sc}{
+ <-> \yes@@scale yesbj8c
+}{}
+
+\DeclareFontShape{TS1}{yesj}{b}{scit}{
+ <-> \yes@@scale yesbjo8c
+}{}
+
+\DeclareFontShape{TS1}{yesj}{l}{sc}{
+ <-> \yes@@scale yeslj8c
+}{}
+
+\DeclareFontShape{TS1}{yesj}{l}{scit}{
+ <-> \yes@@scale yesljo8c
+}{}
+
+\DeclareFontShape{TS1}{yesj}{sb}{sc}{
+ <-> \yes@@scale yessj8c
+}{}
+
+\DeclareFontShape{TS1}{yesj}{sb}{scit}{
+ <-> \yes@@scale yessjo8c
+}{}
+
+\DeclareFontShape{TS1}{yesj}{m}{it}{<->ssub * yesj/m/sl}{}
+\DeclareFontShape{TS1}{yesj}{bx}{n}{<->ssub * yesj/b/n}{}
+\DeclareFontShape{TS1}{yesj}{bx}{sl}{<->ssub * yesj/b/sl}{}
+\DeclareFontShape{TS1}{yesj}{b}{it}{<->ssub * yesj/b/sl}{}
+\DeclareFontShape{TS1}{yesj}{bx}{it}{<->ssub * yesj/b/it}{}
+\DeclareFontShape{TS1}{yesj}{l}{it}{<->ssub * yesj/l/sl}{}
+\DeclareFontShape{TS1}{yesj}{sb}{it}{<->ssub * yesj/sb/sl}{}
+\DeclareFontShape{TS1}{yesj}{m}{si}{<->ssub * yesj/m/scit}{}
+\DeclareFontShape{TS1}{yesj}{m}{scsl}{<->ssub * yesj/m/si}{}
+\DeclareFontShape{TS1}{yesj}{bx}{sc}{<->ssub * yesj/b/sc}{}
+\DeclareFontShape{TS1}{yesj}{bx}{scit}{<->ssub * yesj/b/scit}{}
+\DeclareFontShape{TS1}{yesj}{b}{si}{<->ssub * yesj/b/scit}{}
+\DeclareFontShape{TS1}{yesj}{bx}{si}{<->ssub * yesj/b/si}{}
+\DeclareFontShape{TS1}{yesj}{b}{scsl}{<->ssub * yesj/b/si}{}
+\DeclareFontShape{TS1}{yesj}{bx}{scsl}{<->ssub * yesj/b/scsl}{}
+\DeclareFontShape{TS1}{yesj}{l}{si}{<->ssub * yesj/l/scit}{}
+\DeclareFontShape{TS1}{yesj}{l}{scsl}{<->ssub * yesj/l/si}{}
+\DeclareFontShape{TS1}{yesj}{sb}{si}{<->ssub * yesj/sb/scit}{}
+\DeclareFontShape{TS1}{yesj}{sb}{scsl}{<->ssub * yesj/sb/si}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/electrumadf/ts1yesjw.fd b/Master/texmf-dist/tex/latex/electrumadf/ts1yesjw.fd
new file mode 100644
index 00000000000..1acc1b2714c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/electrumadf/ts1yesjw.fd
@@ -0,0 +1,103 @@
+%Filename: ts1yesjw.fd
+%Created by: tex yes-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ts1yesjw.fd}
+ [2024/07/21 Fontinst v1.933 font definitions for TS1/yesjw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yes@scale\endcsname\relax
+ \let\yes@@scale\@empty
+\else
+ \edef\yes@@scale{s*[\csname yes@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{yesjw}{}
+
+\DeclareFontShape{TS1}{yesjw}{m}{n}{
+ <-> \yes@@scale yesrj8c
+}{}
+
+\DeclareFontShape{TS1}{yesjw}{m}{sl}{
+ <-> \yes@@scale yesrjo8c
+}{}
+
+\DeclareFontShape{TS1}{yesjw}{b}{n}{
+ <-> \yes@@scale yesbj8c
+}{}
+
+\DeclareFontShape{TS1}{yesjw}{b}{sl}{
+ <-> \yes@@scale yesbjo8c
+}{}
+
+\DeclareFontShape{TS1}{yesjw}{l}{n}{
+ <-> \yes@@scale yeslj8c
+}{}
+
+\DeclareFontShape{TS1}{yesjw}{l}{sl}{
+ <-> \yes@@scale yesljo8c
+}{}
+
+\DeclareFontShape{TS1}{yesjw}{sb}{n}{
+ <-> \yes@@scale yessj8c
+}{}
+
+\DeclareFontShape{TS1}{yesjw}{sb}{sl}{
+ <-> \yes@@scale yessjo8c
+}{}
+
+\DeclareFontShape{TS1}{yesjw}{m}{sc}{
+ <-> \yes@@scale yesrj8c
+}{}
+
+\DeclareFontShape{TS1}{yesjw}{m}{scit}{
+ <-> \yes@@scale yesrjo8c
+}{}
+
+\DeclareFontShape{TS1}{yesjw}{b}{sc}{
+ <-> \yes@@scale yesbj8c
+}{}
+
+\DeclareFontShape{TS1}{yesjw}{b}{scit}{
+ <-> \yes@@scale yesbjo8c
+}{}
+
+\DeclareFontShape{TS1}{yesjw}{l}{sc}{
+ <-> \yes@@scale yeslj8c
+}{}
+
+\DeclareFontShape{TS1}{yesjw}{l}{scit}{
+ <-> \yes@@scale yesljo8c
+}{}
+
+\DeclareFontShape{TS1}{yesjw}{sb}{sc}{
+ <-> \yes@@scale yessj8c
+}{}
+
+\DeclareFontShape{TS1}{yesjw}{sb}{scit}{
+ <-> \yes@@scale yessjo8c
+}{}
+
+\DeclareFontShape{TS1}{yesjw}{m}{it}{<->ssub * yesjw/m/sl}{}
+\DeclareFontShape{TS1}{yesjw}{bx}{n}{<->ssub * yesjw/b/n}{}
+\DeclareFontShape{TS1}{yesjw}{bx}{sl}{<->ssub * yesjw/b/sl}{}
+\DeclareFontShape{TS1}{yesjw}{b}{it}{<->ssub * yesjw/b/sl}{}
+\DeclareFontShape{TS1}{yesjw}{bx}{it}{<->ssub * yesjw/b/it}{}
+\DeclareFontShape{TS1}{yesjw}{l}{it}{<->ssub * yesjw/l/sl}{}
+\DeclareFontShape{TS1}{yesjw}{sb}{it}{<->ssub * yesjw/sb/sl}{}
+\DeclareFontShape{TS1}{yesjw}{m}{si}{<->ssub * yesjw/m/scit}{}
+\DeclareFontShape{TS1}{yesjw}{m}{scsl}{<->ssub * yesjw/m/si}{}
+\DeclareFontShape{TS1}{yesjw}{bx}{sc}{<->ssub * yesjw/b/sc}{}
+\DeclareFontShape{TS1}{yesjw}{bx}{scit}{<->ssub * yesjw/b/scit}{}
+\DeclareFontShape{TS1}{yesjw}{b}{si}{<->ssub * yesjw/b/scit}{}
+\DeclareFontShape{TS1}{yesjw}{bx}{si}{<->ssub * yesjw/b/si}{}
+\DeclareFontShape{TS1}{yesjw}{b}{scsl}{<->ssub * yesjw/b/si}{}
+\DeclareFontShape{TS1}{yesjw}{bx}{scsl}{<->ssub * yesjw/b/scsl}{}
+\DeclareFontShape{TS1}{yesjw}{l}{si}{<->ssub * yesjw/l/scit}{}
+\DeclareFontShape{TS1}{yesjw}{l}{scsl}{<->ssub * yesjw/l/si}{}
+\DeclareFontShape{TS1}{yesjw}{sb}{si}{<->ssub * yesjw/sb/scit}{}
+\DeclareFontShape{TS1}{yesjw}{sb}{scsl}{<->ssub * yesjw/sb/si}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/electrumadf/ts1yesw.fd b/Master/texmf-dist/tex/latex/electrumadf/ts1yesw.fd
new file mode 100644
index 00000000000..4bce6e67d32
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/electrumadf/ts1yesw.fd
@@ -0,0 +1,103 @@
+%Filename: ts1yesw.fd
+%Created by: tex yes-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ts1yesw.fd}
+ [2024/07/21 Fontinst v1.933 font definitions for TS1/yesw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yes@scale\endcsname\relax
+ \let\yes@@scale\@empty
+\else
+ \edef\yes@@scale{s*[\csname yes@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{yesw}{}
+
+\DeclareFontShape{TS1}{yesw}{m}{n}{
+ <-> \yes@@scale yesr8c
+}{}
+
+\DeclareFontShape{TS1}{yesw}{m}{sl}{
+ <-> \yes@@scale yesro8c
+}{}
+
+\DeclareFontShape{TS1}{yesw}{b}{n}{
+ <-> \yes@@scale yesb8c
+}{}
+
+\DeclareFontShape{TS1}{yesw}{b}{sl}{
+ <-> \yes@@scale yesbo8c
+}{}
+
+\DeclareFontShape{TS1}{yesw}{l}{n}{
+ <-> \yes@@scale yesl8c
+}{}
+
+\DeclareFontShape{TS1}{yesw}{l}{sl}{
+ <-> \yes@@scale yeslo8c
+}{}
+
+\DeclareFontShape{TS1}{yesw}{sb}{n}{
+ <-> \yes@@scale yess8c
+}{}
+
+\DeclareFontShape{TS1}{yesw}{sb}{sl}{
+ <-> \yes@@scale yesso8c
+}{}
+
+\DeclareFontShape{TS1}{yesw}{m}{sc}{
+ <-> \yes@@scale yesr8c
+}{}
+
+\DeclareFontShape{TS1}{yesw}{m}{scit}{
+ <-> \yes@@scale yesro8c
+}{}
+
+\DeclareFontShape{TS1}{yesw}{b}{sc}{
+ <-> \yes@@scale yesb8c
+}{}
+
+\DeclareFontShape{TS1}{yesw}{b}{scit}{
+ <-> \yes@@scale yesbo8c
+}{}
+
+\DeclareFontShape{TS1}{yesw}{l}{sc}{
+ <-> \yes@@scale yesl8c
+}{}
+
+\DeclareFontShape{TS1}{yesw}{l}{scit}{
+ <-> \yes@@scale yeslo8c
+}{}
+
+\DeclareFontShape{TS1}{yesw}{sb}{sc}{
+ <-> \yes@@scale yess8c
+}{}
+
+\DeclareFontShape{TS1}{yesw}{sb}{scit}{
+ <-> \yes@@scale yesso8c
+}{}
+
+\DeclareFontShape{TS1}{yesw}{m}{it}{<->ssub * yesw/m/sl}{}
+\DeclareFontShape{TS1}{yesw}{bx}{n}{<->ssub * yesw/b/n}{}
+\DeclareFontShape{TS1}{yesw}{bx}{sl}{<->ssub * yesw/b/sl}{}
+\DeclareFontShape{TS1}{yesw}{b}{it}{<->ssub * yesw/b/sl}{}
+\DeclareFontShape{TS1}{yesw}{bx}{it}{<->ssub * yesw/b/it}{}
+\DeclareFontShape{TS1}{yesw}{l}{it}{<->ssub * yesw/l/sl}{}
+\DeclareFontShape{TS1}{yesw}{sb}{it}{<->ssub * yesw/sb/sl}{}
+\DeclareFontShape{TS1}{yesw}{m}{si}{<->ssub * yesw/m/scit}{}
+\DeclareFontShape{TS1}{yesw}{m}{scsl}{<->ssub * yesw/m/si}{}
+\DeclareFontShape{TS1}{yesw}{bx}{sc}{<->ssub * yesw/b/sc}{}
+\DeclareFontShape{TS1}{yesw}{bx}{scit}{<->ssub * yesw/b/scit}{}
+\DeclareFontShape{TS1}{yesw}{b}{si}{<->ssub * yesw/b/scit}{}
+\DeclareFontShape{TS1}{yesw}{bx}{si}{<->ssub * yesw/b/si}{}
+\DeclareFontShape{TS1}{yesw}{b}{scsl}{<->ssub * yesw/b/si}{}
+\DeclareFontShape{TS1}{yesw}{bx}{scsl}{<->ssub * yesw/b/scsl}{}
+\DeclareFontShape{TS1}{yesw}{l}{si}{<->ssub * yesw/l/scit}{}
+\DeclareFontShape{TS1}{yesw}{l}{scsl}{<->ssub * yesw/l/si}{}
+\DeclareFontShape{TS1}{yesw}{sb}{si}{<->ssub * yesw/sb/scit}{}
+\DeclareFontShape{TS1}{yesw}{sb}{scsl}{<->ssub * yesw/sb/si}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/elsarticle/elsarticle.cls b/Master/texmf-dist/tex/latex/elsarticle/elsarticle.cls
index cdbf8e4b0c9..63e820fd3b7 100644
--- a/Master/texmf-dist/tex/latex/elsarticle/elsarticle.cls
+++ b/Master/texmf-dist/tex/latex/elsarticle/elsarticle.cls
@@ -6,7 +6,7 @@
%%
%% elsarticle.dtx (with options: `class')
%%
-%% Copyright 2007-2024 Elsevier Ltd
+%% Copyright 2007-2025 Elsevier Ltd
%%
%% This file is part of the 'Elsarticle Bundle'.
%% -------------------------------------------
@@ -21,12 +21,13 @@
%% The list of all files belonging to the 'Elsarticle Bundle' is
%% given in the file `manifest.txt'.
%%
+
%%
%%
%%
\def\RCSfile{elsarticle}%
- \def\RCSversion{3.4}%
- \def\RCSdate{2024/04/04}%
+ \def\RCSversion{3.4c}%
+ \def\RCSdate{2025/01/11}%
\def\@shortjnl{\relax}
\def\@journal{Elsevier Ltd}
\def\@company{Elsevier Ltd}
@@ -242,7 +243,7 @@
\let\authorsep\@empty
\let\prelimauthorsep\@empty
\let\sep\@empty
-\newcounter{author}
+\newcounter{elsarticle@author}
\def\author{\@ifnextchar[{\@@author}{\@author}}
\newtoks\@eadauthor
@@ -1039,10 +1040,10 @@
\else%
\ifx\@elsarticlemyfooteralign\@elsarticlemyfooteralignright%
{}\hfill\@elsarticlemyfooter%
- \else%
- Preprint submitted to \ifx\@journal\@empty%
- Elsevier%
- \else\@journal\fi\hfill\@date\fi%
+%% Removed the preprint submitted line as per the instruction
+%% received on 22 Oct 2024 from Arun Shanmugam (ELS) with the
+%% subject line "FW: Preprint sentence in EM submissions"
+ \fi%
\fi%
\fi%
\fi%
@@ -1261,8 +1262,6 @@
footskip=12pt,
footnotesep=24pt plus 2pt minus 12pt,
}
- \global\let\bibfont=\footnotesize
- \global\bibsep=0pt
\if@twocolumn\global\@twocolumnfalse\fi
\else\ifnum\jtype=3
\RequirePackage{geometry}
@@ -1278,8 +1277,6 @@
footnotesep=24pt plus 2pt minus 12pt,
columnsep=2pc
}
- \global\let\bibfont=\footnotesize
- \global\bibsep=0pt
\if@twocolumn\input{fleqn.clo}\fi
\else\ifnum\jtype=5
\RequirePackage{geometry}
@@ -1295,8 +1292,6 @@
footnotesep=24pt plus 2pt minus 12pt,
columnsep=18pt
}%
- \global\let\bibfont=\footnotesize
- \global\bibsep=0pt
\input{fleqn.clo}
\global\@twocolumntrue
%%
diff --git a/Master/texmf-dist/tex/latex/enumext/enumext.sty b/Master/texmf-dist/tex/latex/enumext/enumext.sty
new file mode 100644
index 00000000000..00188179805
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/enumext/enumext.sty
@@ -0,0 +1,6285 @@
+%%
+%% This is file `enumext.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% enumext.dtx (with options: `package')
+%%
+%% Copyright (C) 2024 by Pablo González L <pablgonz@educarchile.cl>
+%%
+%% This work may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License, either version 1.3c of this license or (at
+%% your option) any later version. The latest version of this license is in
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%%
+%% This work is "maintained" (as per the LPPL maintenance status)
+%% by Pablo González Luengo.
+%%
+%% This work consists of the files enumext.pdf , enumext.ins, enumext.dtx
+%% and the files generated from them.
+%%
+%% The released version of this package is available from CTAN.
+%%
+%% ------------------------------------------------------------------------
+%%
+%% The development version of the package can be found at
+%%
+%% https://github.com/pablgonz/enumext/
+%%
+%% for those people who are interested.
+%%
+%% ------------------------------------------------------------------------
+%%
+\NeedsTeXFormat{LaTeX2e}[2024-11-01]
+\ProvidesExplPackage {enumext} {2024-11-14} {1.1} {Enumerate exercise sheets}
+\hook_gput_code:nnn {begindocument} {enumext}
+ {
+ \IfPackageLoadedTF { multicol }
+ {
+ \msg_info:nnn { enumext } { package-load } { multicol }
+ }
+ {
+ \msg_info:nnn { enumext } { package-not-load } { multicol }
+ \RequirePackage{multicol}[2024-05-23]
+ }
+ \IfPackageLoadedTF { scontents }
+ {
+ \msg_info:nnn { enumext } { package-load } { scontents }
+ }
+ {
+ \msg_info:nnn { enumext } { package-not-load } { scontents }
+ \RequirePackage{scontents}
+ }
+ }
+%% Variable for levels and nesting off all environments and \anskey.
+\int_new:N \l__enumext_level_int
+\int_new:N \l__enumext_level_h_int
+\int_new:N \l__enumext_anskey_level_int
+\int_new:N \l__enumext_keyans_level_int
+\int_new:N \l__enumext_keyans_level_h_int
+\int_new:N \l__enumext_keyans_pic_level_int
+%% Internal vars for levels and nesting off all environments.
+\bool_new:N \l__enumext_starred_bool
+\bool_new:N \g__enumext_starred_bool
+\bool_new:N \l__enumext_starred_first_bool
+\bool_new:N \l__enumext_standar_bool
+\bool_new:N \g__enumext_standar_bool
+\bool_new:N \l__enumext_standar_first_bool
+\bool_new:N \l__enumext_anskey_env_bool
+\bool_new:N \l__enumext_keyans_env_bool
+\tl_new:N \g__enumext_start_line_tl
+\tl_new:N \g__enumext_envir_name_tl
+\tl_new:N \l__enumext_envir_name_tl
+%% Variable for counters
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \tl_new:c { l__enumext_counter_#1_tl }
+ }
+\clist_map_inline:nn { i, ii, iii, iv, v, vi, vii, viii } { \__enumext_tmp:n {#1} }
+%% Variables used by |ref| key.
+\tl_const:Nn \c__enumext_counter_style_tl
+ { { arabic } { roman } { Roman } { alph } { Alph } }
+\tl_new:N \l__enumext_ref_key_arg_tl
+\tl_new:N \l__enumext_ref_the_count_tl
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \tl_new:c { l__enumext_renew_the_count_#1_tl }
+ \tl_new:c { l__enumext_the_counter_#1_tl }
+ \tl_set:ce { l__enumext_the_counter_#1_tl } { \exp_not:c { theenumX#1 } }
+ }
+\clist_map_inline:nn { i, ii, iii, iv, v, vi, vii, viii } { \__enumext_tmp:n {#1} }
+%% Variables used by |series|, |resume| and |resume*| keys implementation.
+\int_new:N \g__enumext_resume_int
+\int_new:N \g__enumext_resume_vii_int
+\tl_new:N \l__enumext_resume_name_tl
+\bool_new:N \l__enumext_resume_active_bool
+\tl_new:N \g__enumext_standar_series_tl
+\tl_new:N \g__enumext_starred_series_tl
+%% Variables used by |label|, |ref| and |widest| keys.
+\dim_new:N \l__enumext_current_widest_dim
+\tl_new:N \g__enumext_counter_styles_tl
+\tl_new:N \g__enumext_widest_label_tl
+\box_new:N \l__enumext_label_width_by_box
+%% Add \l__enumext_leftmargin_tmp_X_bool, \l__enumext_leftmargin_tmp_X_dim,
+%% \l__enumext_leftmargin_X_dim, \l__enumext_itemindent_X_dim used by the
+%% function \enumext_calc_hspace:NNNNNNNNNNNN and |list-indent| key.
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \bool_new:c { l__enumext_leftmargin_tmp_#1_bool }
+ \dim_new:c { l__enumext_leftmargin_tmp_#1_dim }
+ \dim_new:c { l__enumext_leftmargin_#1_dim }
+ \dim_new:c { l__enumext_itemindent_#1_dim }
+ }
+\clist_map_inline:nn { i, ii, iii, iv, v, vi, vii, viii } { \__enumext_tmp:n {#1} }
+%% Variables used by |columns| and |align| keys in |enumext| and |keyans| environments.
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \skip_new:c { l__enumext_multicols_above_#1_skip }
+ \skip_new:c { l__enumext_multicols_below_#1_skip }
+ \skip_new:c { g__enumext_multicols_right_#1_skip }
+ \str_new:c { l__enumext_align_label_pos_#1_str }
+ }
+\clist_map_inline:nn { i, ii, iii, iv, v } { \__enumext_tmp:n {#1} }
+%% Variables used by |miniright|, |mini-env|, |mini-sep| and |\miniright|.
+\int_new:N \g__enumext_minipage_stat_int
+\skip_new:N \l__enumext_minipage_temp_skip
+\skip_new:N \l__enumext_minipage_left_skip
+\skip_new:N \l__enumext_minipage_right_skip
+\skip_new:N \l__enumext_minipage_after_skip
+\skip_new:N \g__enumext_minipage_right_skip
+\skip_new:N \g__enumext_minipage_after_skip
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \dim_new:c { l__enumext_minipage_left_#1_dim }
+ \bool_new:c { l__enumext_minipage_active_#1_bool }
+ }
+\clist_map_inline:nn { i, ii, iii, iv, v, vii, viii } { \__enumext_tmp:n {#1} }
+%% Internal variables used by |wrap-label|, |start*|, |start|, |align|, |above| and |below| keys.
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \bool_new:c { l__enumext_wrap_label_#1_bool }
+ \bool_new:c { l__enumext_wrap_label_opt_#1_bool }
+ \int_new:c { l__enumext_start_#1_int }
+ \tl_new:c { l__enumext_fake_item_indent_#1_tl }
+ \tl_new:c { l__enumext_label_fill_left_#1_tl }
+ \tl_new:c { l__enumext_label_fill_right_#1_tl }
+ \bool_new:c { l__enumext_vspace_a_star_#1_bool }
+ \bool_new:c { l__enumext_vspace_b_star_#1_bool }
+ }
+\clist_map_inline:nn { i, ii, iii, iv, v, vii, viii } { \__enumext_tmp:n {#1} }
+%% Variables used by |save-ans| key.
+\bool_new:N \l__enumext_store_active_bool
+\tl_new:N \l__enumext_store_name_tl
+\tl_new:N \g__enumext_store_name_tl
+\tl_new:N \l__enumext_store_anskey_arg_tl
+\tl_new:N \l__enumext_store_anskey_env_tl
+\tl_new:N \l__enumext_store_anskey_opt_tl
+\tl_new:N \l__enumext_store_current_label_tl
+\tl_new:N \l__enumext_store_current_opt_arg_tl
+\tl_new:N \l__enumext_store_current_label_tmp_tl
+%% Variables used by |\setenumext|.
+\tl_new:N \l__enumext_setkey_tmpa_tl
+\tl_new:N \l__enumext_setkey_tmpb_tl
+\int_new:N \l__enumext_setkey_tmpa_int
+\seq_new:N \l__enumext_setkey_tmpa_seq
+\seq_new:N \l__enumext_setkey_tmpb_seq
+\tl_new:N \l__enumext_meta_path_tl
+\seq_new:N \l__enumext_foreach_print_seq
+\tl_new:N \l__enumext_foreach_name_prop_tl
+\tl_new:N \g__enumext_foreach_default_keys_tl
+%% Variables used by |\printkeyans|, |mark-pos|, |item-sym*|, |save-key| and storing structure in |enumext| and |enumext*|.
+\tl_new:N \l__enumext_print_keyans_starred_tl
+\bool_new:N \l__enumext_print_keyans_star_bool
+\str_new:N \l__enumext_mark_position_str
+\str_new:N \l__enumext_mark_position_v_str
+\str_new:N \l__enumext_mark_position_viii_str
+\dim_new:N \l__enumext_mark_sep_tmpa_dim
+\dim_new:N \l__enumext_mark_sep_tmpb_dim
+\int_new:N \l__enumext_show_pos_tmp_int
+\tl_new:N \g__enumext_item_symbol_aux_tl
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \tl_new:c { l__enumext_print_keyans_#1_tl }
+ \tl_new:c { l__enumext_store_save_key_#1_tl }
+ \bool_new:c { l__enumext_store_save_key_#1_bool }
+ \bool_new:c { l__enumext_store_upper_level_#1_bool }
+ }
+\clist_map_inline:nn { i, ii, iii, iv, vii } { \__enumext_tmp:n {#1} }
+%% Variables used by |\anspic| and |keyanspic|.
+\seq_new:N \l__enumext_anspic_args_seq
+\dim_new:N \l__enumext_anspic_mini_width_dim
+\int_new:N \l__enumext_anspic_above_int
+\int_new:N \l__enumext_anspic_below_int
+\bool_new:N \l__enumext_anspic_label_above_bool
+\str_new:N \l__enumext_anspic_mini_pos_str
+\box_new:N \l__enumext_anspic_label_box
+\box_new:N \l__enumext_anspic_body_box
+\dim_new:N \l__enumext_anspic_label_htdp_dim
+\dim_new:N \l__enumext_anspic_body_htdp_dim
+%% Variables used by check-answer mechanism, |check-ans|, |wrap-ans*| and |no-store| keys.
+\bool_new:N \l__enumext_check_answers_bool
+\bool_new:N \g__enumext_check_ans_key_bool
+\tl_new:N \l__enumext_check_start_line_env_tl
+\bool_new:N \l__enumext_item_wrap_key_bool
+\int_new:N \g__enumext_check_starred_cmd_int
+\int_new:N \g__enumext_item_anskey_int
+\int_new:N \g__enumext_item_number_int
+\bool_new:N \l__enumext_item_number_bool
+\int_new:N \g__enumext_item_answer_diff_int
+%% Variables used for hyperref detection.
+\bool_new:N \l__enumext_hyperref_bool
+\bool_new:N \l__enumext_footnotes_key_bool
+%% Variables used by |save-ref| key (internal label and ref).
+\tl_new:N \l__enumext_newlabel_arg_one_tl
+\tl_new:N \l__enumext_newlabel_arg_two_tl
+\tl_new:N \l__enumext_write_aux_file_tl
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \tl_new:c { l__enumext_label_copy_#1_tl }
+ }
+\clist_map_inline:nn { i, ii, iii, iv, v, vi, vii, viii } { \__enumext_tmp:n {#1} }
+%% Variables used by |footnote| redefinition.
+\int_new:N \g__enumext_footnote_standar_int
+\int_new:N \g__enumext_footnote_starred_int
+\seq_new:N \g__enumext_footnote_standar_arg_seq
+\seq_new:N \g__enumext_footnote_starred_arg_seq
+\seq_new:N \g__enumext_footnote_standar_int_seq
+\seq_new:N \g__enumext_footnote_starred_int_seq
+%% Variables used by |enumext*| and |keyans*| environments.
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \bool_new:c { l__enumext_item_starred_#1_bool }
+ \int_new:c { l__enumext_item_column_pos_#1_int }
+ \int_new:c { g__enumext_item_count_all_#1_int }
+ \int_new:c { l__enumext_joined_item_#1_int }
+ \int_new:c { l__enumext_joined_item_aux_#1_int }
+ \int_new:c { l__enumext_tmpa_#1_int }
+ \dim_new:c { l__enumext_tmpa_#1_dim }
+ \box_new:c { l__enumext_item_text_#1_box }
+ \dim_new:c { l__enumext_joined_width_#1_dim }
+ \dim_new:c { l__enumext_item_width_#1_dim }
+ \tl_new:c { g__enumext_item_symbol_aux_#1_tl }
+ \str_new:c { l__enumext_align_label_#1_str }
+ \bool_new:c { g__enumext_minipage_active_#1_bool }
+ \box_new:c { l__enumext_miniright_code_#1_box }
+ \bool_new:c { g__enumext_minipage_center_#1_bool }
+ \dim_new:c { g__enumext_minipage_right_#1_dim }
+ \skip_new:c { g__enumext_minipage_right_#1_skip }
+ }
+\clist_map_inline:nn { vii, viii } { \__enumext_tmp:n {#1} }
+\clist_const:Nn \c__enumext_all_envs_clist
+ {
+ {level-1}{i}, {level-2}{ii}, {level-3}{iii}, {level-4}{iv},
+ {keyans}{v}, {enumext*}{vii}, {keyans*}{viii}
+ }
+\cs_generate_variant:Nn \keys_precompile:nnN { neN }
+\cs_generate_variant:Nn \seq_use:Nn { NV }
+%% A internal "hooks" functions used for copying and execute code.
+\cs_new_protected:Npn \__enumext_at_begin_document:n #1
+ {
+ \hook_gput_code:nnn {begindocument} {enumext} { #1 }
+ }
+\cs_new_protected:Npn \__enumext_after_env:nn #1 #2
+ {
+ \hook_gput_code:nnn {env/#1/after} {enumext} {#2}
+ }
+\cs_new_protected:Npn \__enumext_before_env:nn #1 #2
+ {
+ \hook_gput_code:nnn {env/#1/before} {enumext} {#2}
+ }
+%% Function to check current level.
+\cs_new:Nn \__enumext_level:
+ {
+ \int_to_roman:n { \l__enumext_level_int }
+ }
+%% Function to check integer variables used by |start| and |widest| keys.
+\prg_new_protected_conditional:Npnn \__enumext_if_is_int:n #1 { T, F, TF }
+ {
+ \regex_match:nnTF { ^[\+\-]?[\d]+$ } {#1} % $
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+%% Regex for replace '*' for |ref| key.
+\cs_new_protected:Nn \__enumext_regex_counter_style:
+ {
+ \tl_map_inline:Nn \c__enumext_counter_style_tl
+ {
+ \regex_replace_once:nnN { \c{##1}\* }
+ { \c{##1}\cB{\u{l__enumext_ref_the_count_tl}\cE} } \l__enumext_ref_key_arg_tl
+ }
+ }
+%% Function to show list lengths used by |show-length| key.
+\cs_new:Npn \__enumext_show_length:nnn #1 #2 #3
+ {
+ * ~ #2
+ \prg_replicate:nn { 14 - \str_count:n {#2} } { ~ }
+ = ~ \use:c { #1_use:c } { l__enumext_#2_#3_#1 } \\
+ }
+%% Remove last skip or kern.
+\cs_new_protected:Nn \__enumext_unskip_unkern:
+ {
+ \int_case:nnT { \lastnodetype }
+ {
+ { 11 }{ \unskip }
+ { 12 }{ \unkern }
+ }
+ }
+%% Function to check/set current environment for |enumext| and |enumext*|.
+\cs_new_protected:Nn \__enumext_is_not_nested:
+ {
+ \str_case:en { \@currenvir }
+ {
+ {enumext}
+ {
+ \tl_set:Nn \l__enumext_envir_name_tl { enumext }
+ \bool_lazy_and:nnT
+ { \bool_not_p:n { \g__enumext_standar_bool } }
+ { \int_compare_p:nNn { \l__enumext_level_h_int } = { 0 } }
+ {
+ \bool_gset_true:N \g__enumext_standar_bool
+ }
+ }
+ {enumext*}
+ {
+ \tl_set:Nn \l__enumext_envir_name_tl { enumext* }
+ \bool_lazy_and:nnT
+ { \bool_not_p:n { \g__enumext_starred_bool } }
+ { \int_compare_p:nNn { \l__enumext_level_int } = { 0 } }
+ {
+ \bool_gset_true:N \g__enumext_starred_bool
+ }
+ }
+ }
+ }
+%% Function to check/set first level vars for |enumext| and |enumext*|.
+\cs_new_protected:Nn \__enumext_is_on_first_level:
+ {
+ \bool_lazy_all:nT
+ {
+ { \bool_if_p:N \g__enumext_standar_bool }
+ { \int_compare_p:nNn { \l__enumext_level_int } = { 1 } }
+ { \int_compare_p:nNn { \l__enumext_level_h_int } = { 0 } }
+ }
+ {
+ \bool_set_true:N \l__enumext_standar_first_bool
+ \bool_set_true:N \l__enumext_anskey_env_bool
+ \tl_gset:Nn \g__enumext_envir_name_tl { enumext }
+ \tl_gset:Ne \g__enumext_start_line_tl
+ {
+ on ~ line ~ \exp_not:V \inputlineno
+ }
+ }
+ \bool_lazy_all:nT
+ {
+ { \bool_if_p:N \g__enumext_starred_bool }
+ { \int_compare_p:nNn { \l__enumext_level_h_int } = { 1 } }
+ { \int_compare_p:nNn { \l__enumext_level_int } = { 0 } }
+ }
+ {
+ \bool_set_true:N \l__enumext_starred_first_bool
+ \bool_set_true:N \l__enumext_anskey_env_bool
+ \tl_gset:Nn \g__enumext_envir_name_tl { enumext* }
+ \tl_gset:Ne \g__enumext_start_line_tl
+ {
+ on ~ line ~ \exp_not:V \inputlineno
+ }
+ }
+ }
+%% Function to save the current name and start line for |keyans|, |keyans*| and |keyanspic|.
+\cs_new_protected:Nn \__enumext_keyans_name_and_start:
+ {
+ \str_case:en { \@currenvir }
+ {
+ {keyans}
+ {
+ \tl_set:Nn \l__enumext_envir_name_tl { keyans }
+ \tl_set:Ne \l__enumext_check_start_line_env_tl
+ {
+ in ~ 'keyans' ~ start ~ on ~ line ~ \exp_not:V \inputlineno
+ }
+ }
+ {keyans*}
+ {
+ \tl_set:Nn \l__enumext_envir_name_tl { keyans* }
+ \tl_set:Ne \l__enumext_check_start_line_env_tl
+ {
+ in ~ 'keyans*' ~ start ~ on ~ line ~ \exp_not:V \inputlineno
+ }
+ }
+ {keyanspic}
+ {
+ \tl_set:Nn \l__enumext_envir_name_tl { keyanspic }
+ \tl_set:Ne \l__enumext_check_start_line_env_tl
+ {
+ in ~ 'keyanspic' ~ start ~ on ~ line ~ \exp_not:V \inputlineno
+ }
+ }
+ }
+ }
+%% Reset all global vars after use in hook function.
+\cs_new_protected:Nn \__enumext_reset_global_vars:
+ {
+ \__enumext_reset_global_int:
+ \__enumext_reset_global_bool:
+ \__enumext_reset_global_tl:
+ }
+\cs_new_protected:Nn \__enumext_reset_global_int:
+ {
+ \int_gzero:N \g__enumext_item_number_int
+ \int_gzero:N \g__enumext_item_anskey_int
+ \int_gzero:N \g__enumext_item_answer_diff_int
+ }
+\cs_new_protected:Nn \__enumext_reset_global_bool:
+ {
+ \bool_gset_false:N \g__enumext_check_ans_key_bool
+ \bool_gset_false:N \g__enumext_standar_bool
+ \bool_gset_false:N \g__enumext_starred_bool
+ }
+\cs_new_protected:Nn \__enumext_reset_global_tl:
+ {
+ \tl_gclear:N \g__enumext_store_name_tl
+ \tl_gclear:N \g__enumext_start_line_tl
+ \tl_gclear:N \g__enumext_envir_name_tl
+ }
+%% Write all global vars after use in hook function.
+\cs_new_protected:Nn \__enumext_log_global_vars:
+ {
+ \msg_log:nneeee { enumext } { prop-seq-int-hook }
+ { \g__enumext_store_name_tl }
+ { \prop_count:c { g__enumext_ \g__enumext_store_name_tl _prop } }
+ { \seq_count:c { g__enumext_ \g__enumext_store_name_tl _seq } }
+ { \int_use:c { g__enumext_resume_ \g__enumext_store_name_tl _int } }
+ }
+%% Write all global vars for check-answer after use in hook function.
+\cs_new_protected:Nn \__enumext_log_answer_vars:
+ {
+ \msg_log:nneee { enumext } { item-answer-hook }
+ { \int_use:N \g__enumext_item_number_int }
+ { \int_use:N \g__enumext_item_anskey_int }
+ { \int_eval:n { \g__enumext_item_number_int - \g__enumext_item_anskey_int} }
+ }
+%% Copy |list| environment and |\item| command.
+\__enumext_at_begin_document:n
+ {
+ \cs_new_eq:NN \__enumext_start_list:nn \list
+ \cs_new_eq:NN \__enumext_stop_list: \endlist
+ \NewCommandCopy \__enumext_item_std:w \item
+ }
+%% Copy |minipage| environment.
+\__enumext_at_begin_document:n
+ {
+ \cs_new_eq:NN \__enumext_minipage:w \minipage
+ \cs_new_eq:NN \__enumext_endminipage: \endminipage
+ }
+%% Detection off |hyperref| package with |hyperfootnotes=true|.
+\hook_gput_code:nnn { begindocument } { enumext } { \__enumext_after_hyperref: }
+\hook_gset_rule:nnnn { begindocument } { enumext } { after } { hyperref }
+\cs_new_protected:Nn \__enumext_after_hyperref:
+ {
+ \IfPackageLoadedTF { hyperref }
+ {
+ \msg_info:nnn { enumext } { package-load } { hyperref }
+ \bool_set_true:N \l__enumext_hyperref_bool
+ \IfHyperBoolean{hyperfootnotes}
+ {
+ \bool_set_true:N \l__enumext_footnotes_key_bool
+ }
+ { }
+ }
+ { }
+%% Detection off |footnotehyper| package.
+ \bool_if:NT \l__enumext_footnotes_key_bool
+ {
+ \IfPackageLoadedTF { footnotehyper }
+ {
+ \msg_info:nnn { enumext } { package-load } { footnotehyper }
+ }
+ {
+ \bool_set_false:N \l__enumext_footnotes_key_bool
+ }
+ }
+ \bool_if:NTF \l__enumext_hyperref_bool
+ {
+ \cs_new_eq:NN \__enumext_hypertarget:nn \hypertarget
+ \cs_new_eq:NN \__enumext_phantomsection: \phantomsection
+ }
+ {
+ \cs_new_eq:NN \__enumext_hypertarget:nn \use_none:nn
+ \cs_new_eq:NN \__enumext_phantomsection: \prg_do_nothing:
+ }
+ }
+%% Write internal |label| in |.aux| file for |save-ref| key.
+\cs_new_protected:Npn \__enumext_newlabel:nn #1 #2
+ {
+ \protected@write \@auxout { }
+ {
+ \token_to_str:N \newlabel {#1}
+ {
+ {#2}
+ \bool_if:NT \l__enumext_hyperref_bool
+ { { \thepage } {#2} {#1} }
+ { }
+ }
+ }
+ \__enumext_hypertarget:nn {#1} { }
+ \__enumext_phantomsection:
+ }
+%% Redefining |\footnote| for key |mini-env| in |enumext| and |keyans| environments.
+\cs_new_protected:Nn \__enumext_footnotetext:nn
+ {
+ \footnotetext[#1]{#2}
+ }
+\cs_new_protected:Nn \__enumext_renew_footnote:
+ {
+ \RenewDocumentCommand \footnote { o +m }
+ {
+ \tl_if_novalue:nTF {##1}
+ {
+ \stepcounter{footnote}
+ \int_gset_eq:Nc \g__enumext_footnote_standar_int { c@footnote }
+ }
+ {
+ \int_gset:Nn \g__enumext_footnote_standar_int { ##1 }
+ }
+ \footnotemark [ \g__enumext_footnote_standar_int ]
+ \seq_gput_right:Nn \g__enumext_footnote_standar_arg_seq { ##2 }
+ \seq_gput_right:NV
+ \g__enumext_footnote_standar_int_seq \g__enumext_footnote_standar_int
+ }
+ }
+\cs_new_protected:Nn \__enumext_print_footnote:
+ {
+ \seq_if_empty:NF \g__enumext_footnote_standar_int_seq
+ {
+ \seq_map_pairwise_function:NNN
+ \g__enumext_footnote_standar_int_seq
+ \g__enumext_footnote_standar_arg_seq
+ \__enumext_footnotetext:nn
+ }
+ \seq_gclear:N \g__enumext_footnote_standar_arg_seq
+ \seq_gclear:N \g__enumext_footnote_standar_int_seq
+ }
+%% Redefining |\footnote| for |enumext*| and |keyans*| environments.
+\cs_new_protected:Nn \__enumext_renew_footnote_mini:
+ {
+ \RenewDocumentCommand \footnote { o +m }
+ {
+ \tl_if_novalue:nTF {##1}
+ {
+ \stepcounter{footnote}
+ \int_gset_eq:Nc \g__enumext_footnote_starred_int { c@footnote }
+ }
+ {
+ \int_gset:Nn \g__enumext_footnote_starred_int { ##1 }
+ }
+ \footnotemark [ \g__enumext_footnote_starred_int ]
+ \seq_gput_right:Nn \g__enumext_footnote_starred_arg_seq { ##2 }
+ \seq_gput_right:NV
+ \g__enumext_footnote_starred_int_seq \g__enumext_footnote_starred_int
+ }
+ }
+\cs_new_protected:Nn \__enumext_print_footnote_mini:
+ {
+ \seq_if_empty:NF \g__enumext_footnote_starred_int_seq
+ {
+ \seq_map_pairwise_function:NNN
+ \g__enumext_footnote_starred_int_seq
+ \g__enumext_footnote_starred_arg_seq
+ \__enumext_footnotetext:nn
+ }
+ \seq_gclear:N \g__enumext_footnote_starred_arg_seq
+ \seq_gclear:N \g__enumext_footnote_starred_int_seq
+ }
+\cs_new_protected:Nn \__enumext_renew_footnote_standar:
+ {
+ \bool_if:NT \g__enumext_standar_bool
+ {
+ \IfDocumentMetadataTF
+ {
+ \__enumext_renew_footnote:
+ }
+ {
+ \bool_if:NF \l__enumext_footnotes_key_bool
+ {
+ \__enumext_renew_footnote:
+ }
+ }
+ }
+ }
+\cs_new_protected:Nn \__enumext_print_footnote_standar:
+ {
+ \bool_if:NT \g__enumext_standar_bool
+ {
+ \IfDocumentMetadataTF
+ {
+ \__enumext_print_footnote:
+ }
+ {
+ \bool_if:NF \l__enumext_footnotes_key_bool
+ {
+ \__enumext_print_footnote:
+ }
+ }
+ }
+ }
+\cs_new_protected:Nn \__enumext_renew_footnote_starred:
+ {
+ \IfDocumentMetadataTF
+ {
+ \__enumext_renew_footnote_mini:
+ }
+ {
+ \bool_if:NF \l__enumext_footnotes_key_bool
+ {
+ \__enumext_renew_footnote_mini:
+ }
+ }
+ }
+\cs_new_protected:Nn \__enumext_print_footnote_starred:
+ {
+ \IfDocumentMetadataTF
+ {
+ \__enumext_print_footnote_mini:
+ }
+ {
+ \bool_if:NF \l__enumext_footnotes_key_bool
+ {
+ \__enumext_print_footnote_mini:
+ }
+ }
+ }
+\__enumext_after_env:nn { enumext* }
+ {
+ \__enumext_print_footnote_starred:
+ }
+\__enumext_after_env:nn { keyans* }
+ {
+ \__enumext_print_footnote_starred:
+ }
+%% Function for define a internal |minipage| environment with |\footnote| support.
+\cs_new_protected:Nn \__enumext_internal_mini_page:
+ {
+ \int_compare:nNnT { \l__enumext_level_int } = { 0 }
+ {
+ \DeclareDocumentEnvironment{__enumext_mini_page}{ m }
+ {
+ \__enumext_renew_footnote_standar:
+ \__enumext_minipage:w [ t ] { ##1 }
+ \legacy_if_gset_false:n { @minipage }
+ \skip_vertical:N \c_zero_skip
+ }
+ {
+ \skip_vertical:N \c_zero_skip
+ \__enumext_endminipage:
+ \__enumext_print_footnote_standar:
+ }
+ }
+ }
+%% Public dimension |\itemwidth|
+\dim_zero_new:N \itemwidth
+%% Definition of counters.
+\cs_new_protected:Npn \__enumext_define_counters:Nn #1 #2
+ {
+ \cs_if_exist:cTF { c@ #2 }
+ { \msg_fatal:nnn { enumext } { counters }{ #2 } }
+ {
+ \tl_set:Nn #1 { #2 }
+ \newcounter { #2 }
+ }
+ }
+\__enumext_define_counters:Nn \l__enumext_counter_i_tl { enumXi }
+\__enumext_define_counters:Nn \l__enumext_counter_ii_tl { enumXii }
+\__enumext_define_counters:Nn \l__enumext_counter_iii_tl { enumXiii }
+\__enumext_define_counters:Nn \l__enumext_counter_iv_tl { enumXiv }
+\__enumext_define_counters:Nn \l__enumext_counter_v_tl { enumXv }
+\__enumext_define_counters:Nn \l__enumext_counter_vi_tl { enumXvi }
+\__enumext_define_counters:Nn \l__enumext_counter_vii_tl { enumXvii }
+\__enumext_define_counters:Nn \l__enumext_counter_viii_tl { enumXviii }
+%% Register of counters style.
+\cs_new_protected:Npn \__enumext_register_counter_style:Nn #1 #2
+ {
+ \tl_const:cn { c__enumext_widest_ \cs_to_str:N #1 _tl } {#2}
+ \tl_gput_right:Nn \g__enumext_counter_styles_tl {#1}
+ }
+\__enumext_register_counter_style:Nn \arabic { 0 }
+\__enumext_register_counter_style:Nn \Alph { M }
+\__enumext_register_counter_style:Nn \alph { m }
+\__enumext_register_counter_style:Nn \Roman { VIII }
+\__enumext_register_counter_style:Nn \roman { viii }
+%% Set default label width using a box width.
+\cs_new_protected:Npn \__enumext_label_width_by_box:Nn #1 #2
+ {
+ \hbox_set:Nn \l__enumext_label_width_by_box {#2}
+ \dim_set:Nn #1 { \box_wd:N \l__enumext_label_width_by_box }
+ }
+\cs_generate_variant:Nn \__enumext_label_width_by_box:Nn { cv }
+%% Function to support |*| in |label| key.
+\cs_new_protected:Npn \__enumext_label_style:Nnn #1 #2 #3
+ {
+ \tl_clear_new:N #1
+ \tl_put_right:Ne #1 { \tl_trim_spaces:n {#3} }
+ \tl_gset_eq:NN \g__enumext_widest_label_tl #1
+ \tl_map_inline:Nn \g__enumext_counter_styles_tl
+ {
+ \tl_replace_all:Nne #1 { ##1* } { \exp_not:N ##1 {#2} }
+ \tl_greplace_all:Nne \g__enumext_widest_label_tl { ##1* }
+ { \tl_use:c { c__enumext_widest_ \cs_to_str:N ##1 _tl } }
+ }
+ \__enumext_label_width_by_box:Nn \l__enumext_current_widest_dim
+ { \tl_use:N \g__enumext_widest_label_tl }
+ \tl_set_eq:cN { the #2 } #1
+ }
+\cs_generate_variant:Nn \__enumext_label_style:Nnn { cvn }
+%% Add |mode-box| key only on first level off |enumext| and |enumext*| environments.
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ mode-box .bool_set:N = \l__enumext_mode_box_bool,
+ mode-box .initial:n = false,
+ mode-box .value_forbidden:n = true,
+ }
+ }
+\clist_map_inline:nn { level-1, enumext* } { \__enumext_tmp:n {#1} }
+%% Add |font|, |labelsep|, |labelwidth|, |wrap-label| and |wrap-label*| keys.
+\cs_set_protected:Npn \__enumext_tmp:nn #1 #2
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ font .tl_set:c = { l__enumext_label_font_style_#2_tl },
+ font .value_required:n = true,
+ labelsep .dim_set:c = { l__enumext_labelsep_#2_dim },
+ labelsep .initial:n = {0.3333em},
+ labelsep .value_required:n = true,
+ labelwidth .dim_set:c = { l__enumext_labelwidth_#2_dim },
+ labelwidth .value_required:n = true,
+ wrap-label .cs_set_protected:cp = { __enumext_wrapper_label_#2:n } ##1,
+ wrap-label .initial:n = {##1},
+ wrap-label .value_required:n = true,
+ wrap-label* .code:n = {
+ \bool_set_true:c { l__enumext_wrap_label_opt_#2_bool }
+ \keys_set:nn { enumext / #1 } { wrap-label = {##1} }
+ },
+ wrap-label* .value_required:n = true,
+ }
+ }
+\clist_map_inline:Nn \c__enumext_all_envs_clist { \__enumext_tmp:nn #1 }
+%% Add |align| key for |enumext| and |keyans| environments.
+\cs_set_protected:Npn \__enumext_tmp:nn #1 #2
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ align .choice:,
+ align / left .code:n =
+ {
+ \tl_clear:c { l__enumext_label_fill_left_#2_tl }
+ \tl_set:cn { l__enumext_label_fill_right_#2_tl } { \hfill }
+ \str_set:cn { l__enumext_align_label_pos_#2_str } { l }
+ },
+ align / right .code:n =
+ {
+ \tl_set:cn { l__enumext_label_fill_left_#2_tl } { \hfill }
+ \tl_clear:c { l__enumext_label_fill_right_#2_tl }
+ \str_set:cn { l__enumext_align_label_pos_#2_str } { r }
+ },
+ align / center .code:n =
+ {
+ \tl_set:cn { l__enumext_label_fill_left_#2_tl } { \hfill }
+ \tl_set:cn { l__enumext_label_fill_right_#2_tl } { \hfill }
+ \str_set:cn { l__enumext_align_label_pos_#2_str } { c }
+ },
+ align / unknown .code:n =
+ \msg_error:nneee { enumext } { unknown-choice }
+ { align } { left, ~ right, ~ center } { \exp_not:n {##1} },
+ align .initial:n = left,
+ align .value_required:n = true,
+ }
+ }
+\clist_map_inline:nn
+ {
+ {level-1}{i}, {level-2}{ii}, {level-3}{iii}, {level-4}{iv}, {keyans}{v}
+ }
+ { \__enumext_tmp:nn #1 }
+%% Add |align| key for |enummext*| and |keyans*| environments.
+\cs_set_protected:Npn \__enumext_tmp:nn #1 #2
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ align .choice:,
+ align / left .code:n = \str_set:cn { l__enumext_align_label_#2_str } { l },
+ align / right .code:n = \str_set:cn { l__enumext_align_label_#2_str } { r },
+ align / center .code:n = \str_set:cn { l__enumext_align_label_#2_str } { c },
+ align / unknown .code:n =
+ \msg_error:nneee { enumext } { unknown-choice }
+ { align } { left, ~ right, ~ center } { \exp_not:n {##1} },
+ align .initial:n = left,
+ align .value_required:n = true,
+ }
+ }
+\clist_map_inline:nn { {enumext*}{vii}, {keyans*}{viii} } { \__enumext_tmp:nn #1 }
+%% Define and set |label| and |ref| keys for |enumext|.
+\cs_set_protected:Npn \__enumext_tmp:nnn #1 #2 #3
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ label .code:n = {
+ \__enumext_label_style:cvn { l__enumext_label_#2_tl }
+ { l__enumext_counter_#2_tl } {##1}
+ \dim_set_eq:cN { l__enumext_labelwidth_#2_dim }
+ \l__enumext_current_widest_dim
+ },
+ label .initial:n = #3,
+ label .value_required:n = true,
+ ref .code:n = \__enumext_standar_ref:n {##1},
+ ref .value_required:n = true,
+ }
+ }
+\__enumext_tmp:nnn { level-1 } { i } { \arabic*.}
+\__enumext_tmp:nnn { level-2 } { ii } { (\alph*) }
+\__enumext_tmp:nnn { level-3 } { iii } { \roman*. }
+\__enumext_tmp:nnn { level-4 } { iv } { \Alph*. }
+%% Internal function used by |ref| key in enumext environment.
+\cs_new_protected:Npn \__enumext_standar_ref:n #1
+ {
+ \tl_set:Nn \l__enumext_ref_key_arg_tl {#1}
+ \tl_if_empty:NTF \l__enumext_ref_key_arg_tl
+ {
+ \msg_error:nnn { enumext } { key-ref-empty } { enumext }
+ }
+ {
+ \tl_set_eq:Nc
+ \l__enumext_ref_the_count_tl { l__enumext_counter_ \__enumext_level: _tl }
+ \__enumext_regex_counter_style:
+ \tl_set_eq:Nc
+ \l__enumext_ref_the_count_tl { l__enumext_the_counter_ \__enumext_level: _tl }
+ \tl_put_right:ce { l__enumext_renew_the_count_ \__enumext_level: _tl }
+ {
+ \exp_not:N \renewcommand { \exp_not:V \l__enumext_ref_the_count_tl } { \exp_not:V \l__enumext_ref_key_arg_tl }
+ }
+ }
+ }
+%% Activate |ref| key in second arg of list for |enumext| environment.
+\cs_new_protected:Nn \__enumext_standar_ref:
+ {
+ \tl_if_empty:cF { l__enumext_renew_the_count_ \__enumext_level: _tl }
+ {
+ \tl_use:c { l__enumext_renew_the_count_ \__enumext_level: _tl }
+ }
+ }
+%% Define and set |label| and |ref| keys for starred environments.
+\cs_set_protected:Npn \__enumext_tmp:nnn #1 #2 #3
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ label .code:n = {
+ \__enumext_label_style:cvn { l__enumext_label_#2_tl }
+ { l__enumext_counter_#2_tl } {##1}
+ \dim_set_eq:cN { l__enumext_labelwidth_#2_dim }
+ \l__enumext_current_widest_dim
+ },
+ label .initial:n = #3,
+ label .value_required:n = true,
+ ref .code:n = \__enumext_starred_ref:n {##1},
+ ref .value_required:n = true,
+ }
+ }
+\__enumext_tmp:nnn { enumext* } { vii } { \arabic*.}
+\__enumext_tmp:nnn { keyans* } { viii } { \Alph*) }
+%% Internal function used by |ref| key in |enumext*| and |keyans*| environments.
+\cs_new_protected:Npn \__enumext_starred_ref:n #1
+ {
+ \tl_set:Nn \l__enumext_ref_key_arg_tl {#1}
+ \int_compare:nNnT { \l__enumext_level_h_int } = { 1 }
+ {
+ \tl_if_empty:NTF \l__enumext_ref_key_arg_tl
+ {
+ \msg_error:nnn { enumext } { key-ref-empty } { enumext* }
+ }
+ {
+ \tl_set_eq:NN \l__enumext_ref_the_count_tl \l__enumext_counter_vii_tl
+ \__enumext_regex_counter_style:
+ \tl_set_eq:NN \l__enumext_ref_the_count_tl \l__enumext_the_counter_vii_tl
+ \tl_put_right:Ne \l__enumext_renew_the_count_vii_tl
+ {
+ \exp_not:N \renewcommand { \exp_not:V \l__enumext_ref_the_count_tl } { \exp_not:V \l__enumext_ref_key_arg_tl }
+ }
+ }
+ }
+ \int_compare:nNnT { \l__enumext_keyans_level_h_int } = { 1 }
+ {
+ \tl_if_empty:NTF \l__enumext_ref_key_arg_tl
+ {
+ \msg_error:nnn { enumext } { key-ref-empty } { keyans* }
+ }
+ {
+ \tl_set_eq:NN \l__enumext_ref_the_count_tl \l__enumext_counter_viii_tl
+ \__enumext_regex_counter_style:
+ \tl_set_eq:NN \l__enumext_ref_the_count_tl \l__enumext_the_counter_viii_tl
+ \tl_put_right:Ne \l__enumext_renew_the_count_viii_tl
+ {
+ \exp_not:N \renewcommand { \exp_not:V \l__enumext_ref_the_count_tl } { \exp_not:V \l__enumext_ref_key_arg_tl }
+ }
+ }
+ }
+ }
+%% Activate |ref| key in second arg of list for |enumext*| and |keyans*| environments.
+\cs_new_protected:Nn \__enumext_starred_ref:
+ {
+ \int_compare:nNnT { \l__enumext_level_h_int } = { 1 }
+ {
+ \tl_if_empty:NF \l__enumext_renew_the_count_vii_tl
+ {
+ \tl_use:N \l__enumext_renew_the_count_vii_tl
+ }
+ }
+ \int_compare:nNnT { \l__enumext_keyans_level_h_int } = { 1 }
+ {
+ \tl_if_empty:NF \l__enumext_renew_the_count_viii_tl
+ {
+ \tl_use:N \l__enumext_renew_the_count_viii_tl
+ }
+ }
+ }
+%% Define and set |label| and |ref| keys for |keyans| and |keyanspic|.
+\keys_define:nn { enumext / keyans }
+ {
+ label .code:n = {
+ \__enumext_label_style:cvn { l__enumext_label_v_tl }
+ { l__enumext_counter_v_tl } {#1}
+ \__enumext_label_style:cvn { l__enumext_label_vi_tl }
+ { l__enumext_counter_vi_tl } {#1}
+ \dim_set_eq:NN
+ \l__enumext_labelwidth_v_dim \l__enumext_current_widest_dim
+ },
+ label .initial:n = \Alph*),
+ label .value_required:n = true,
+ ref .code:n = \__enumext_keyans_ref:n {#1},
+ ref .value_required:n = true,
+ }
+%% Internal function used by |ref| key in |keyans| environment.
+\cs_new_protected:Npn \__enumext_keyans_ref:n #1
+ {
+ \tl_set:Nn \l__enumext_ref_key_arg_tl {#1}
+ \tl_if_empty:NTF \l__enumext_ref_key_arg_tl
+ {
+ \msg_error:nnn { enumext } { key-ref-empty } { keyans }
+ }
+ {
+ \tl_set_eq:NN \l__enumext_ref_the_count_tl \l__enumext_counter_v_tl
+ \__enumext_regex_counter_style:
+ \tl_set_eq:NN \l__enumext_ref_the_count_tl \l__enumext_the_counter_v_tl
+ \tl_put_right:Ne \l__enumext_renew_the_count_v_tl
+ {
+ \exp_not:N \renewcommand { \exp_not:V \l__enumext_ref_the_count_tl } { \exp_not:V \l__enumext_ref_key_arg_tl }
+ }
+ }
+ }
+%% Activate |ref| key in second arg of list for |keyans| environments.
+\cs_new_protected:Nn \__enumext_keyans_ref:
+ {
+ \tl_if_empty:NF \l__enumext_renew_the_count_v_tl
+ {
+ \tl_use:N \l__enumext_renew_the_count_v_tl
+ }
+ }
+%% Internal function for |start| key.
+%% #1 \l_enumext_label_X_tl
+%% #2 \l_enumext_start_X_int
+%% #3 integer or string
+\cs_new_protected:Npn \__enumext_start_from:NNn #1 #2 #3
+ {
+ \__enumext_if_is_int:nTF { #3 }
+ {
+ \int_set:Nn #2 {#3}
+ }
+ {
+ \regex_match:nVT { \c{Alph} | \c{alph} } {#1}
+ { \int_set:Nn #2 { \int_from_alph:n {#3} } }
+ \regex_match:nVT { \c{Roman} | \c{roman} } {#1}
+ { \int_set:Nn #2 { \int_from_roman:n {#3} } }
+ }
+ }
+\cs_generate_variant:Nn \__enumext_start_from:NNn { ccn, cce }
+%% Internal function for |widest| key.
+%% #1 The counter associated with the environment level
+%% #2 \l_enumext_label_X_tl
+%% #3 \l_enumext_labelwidth_X_tl
+%% #4 integer or string
+\cs_new_protected:Npn \__enumext_widest_from:nNNn #1 #2 #3 #4
+ {
+ \__enumext_if_is_int:nTF {#4}
+ {
+ \setcounter{enumX#1} { #4 }
+ }
+ {
+ \regex_match:nVT { \c{Alph} | \c{alph} } {#2}
+ { \setcounter{enumX#1} { \int_from_alph:n {#4} } }
+ \regex_match:nVT { \c{Roman} | \c{roman} } {#2}
+ { \setcounter{enumX#1} { \int_from_roman:n {#4} } }
+ }
+ \__enumext_label_width_by_box:cv
+ { l__enumext_labelwidth_#1_dim } { l__enumext_label_#1_tl }
+ }
+\cs_generate_variant:Nn \__enumext_widest_from:nNNn { nccn }
+%% Add |start*|, |start| and |widest| key.
+\cs_set_protected:Npn \__enumext_tmp:nn #1 #2
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ start* .code:n = {
+ \__enumext_start_from:ccn
+ { l__enumext_label_#2_tl }
+ { l__enumext_start_#2_int } {##1}
+ },
+ start* .value_required:n = true,
+ start .code:n = {
+ \__enumext_start_from:cce
+ { l__enumext_label_#2_tl }
+ { l__enumext_start_#2_int } { \int_eval:n {##1} }
+ },
+ start .initial:n = 1,
+ start .value_required:n = true,
+ widest .code:n = {
+ \__enumext_widest_from:nccn {#2}
+ { l__enumext_label_#2_tl }
+ { l__enumext_labelwidth_#2_dim } {##1}
+ },
+ widest .value_required:n = true,
+ }
+ }
+\clist_map_inline:Nn \c__enumext_all_envs_clist { \__enumext_tmp:nn #1 }
+%% Add |topsep|, |partopsep|, |parsep|, |noitemsep| and |nosep| keys.
+\cs_set_protected:Npn \__enumext_tmp:nnnnnn #1 #2 #3 #4 #5 #6
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ topsep .skip_set:c = { l__enumext_topsep_#2_skip },
+ topsep .initial:n = {#3},
+ topsep .value_required:n = true,
+ partopsep .skip_set:c = { l__enumext_partopsep_#2_skip },
+ partopsep .initial:n = {#4},
+ partopsep .value_required:n = true,
+ parsep .skip_set:c = { l__enumext_parsep_#2_skip },
+ parsep .initial:n = {#5},
+ parsep .value_required:n = true,
+ itemsep .skip_set:c = { l__enumext_itemsep_#2_skip },
+ itemsep .initial:n = {#6},
+ itemsep .value_required:n = true,
+ noitemsep .meta:n = { itemsep = 0pt, parsep = 0pt },
+ noitemsep .value_forbidden:n = true,
+ nosep .meta:n = {
+ itemsep = 0pt, parsep= 0pt,
+ topsep = 0pt, partopsep = 0pt,
+ },
+ nosep .value_forbidden:n = true,
+ }
+ }
+\__enumext_tmp:nnnnnn { level-1 } { i } { 8.0pt plus 2.0pt minus 4.0pt }
+ { 2.0pt plus 1.0pt minus 1.0pt } { 4.0pt plus 2.0pt minus 1.0pt }
+ { 4.0pt plus 2.0pt minus 1.0pt }
+\__enumext_tmp:nnnnnn { level-2 } { ii } { 4.0pt plus 2.0pt minus 1.0pt }
+ { 2.0pt plus 1.0pt minus 1.0pt } { 2.0pt plus 1.0pt minus 1.0pt }
+ { 2.0pt plus 1.0pt minus 1.0pt }
+\__enumext_tmp:nnnnnn { level-3 } { iii } { 2.0pt plus 1.0pt minus 1.0pt }
+ { 1.0pt minus 1.0pt }{ 0pt }{ 2.0pt plus 1.0pt minus 1.0pt }
+\__enumext_tmp:nnnnnn { level-4 } { iv } { 2.0pt plus 1.0pt minus 1.0pt }
+ { 1.0pt minus 1.0pt }{ 0pt }{ 2.0pt plus 1.0pt minus 1.0pt }
+\__enumext_tmp:nnnnnn { keyans } { v }{ 4.0pt plus 2.0pt minus 1.0pt }
+ { 2.0pt plus 1.0pt minus 1.0pt }{ 2.0pt plus 1.0pt minus 1.0pt }
+ { 2.0pt plus 1.0pt minus 1.0pt }
+\__enumext_tmp:nnnnnn { enumext* } { vii } { 8.0pt plus 2.0pt minus 4.0pt }
+ { 2.0pt plus 1.0pt minus 1.0pt } { 4.0pt plus 2.0pt minus 1.0pt }
+ { 4.0pt plus 2.0pt minus 1.0pt }
+\__enumext_tmp:nnnnnn { keyans* } { viii } { 4.0pt plus 2.0pt minus 1.0pt }
+ { 2.0pt plus 1.0pt minus 1.0pt } { 2.0pt plus 1.0pt minus 1.0pt }
+ { 2.0pt plus 1.0pt minus 1.0pt }
+%% Add |base-fix| key only on first level off |enumext| environment.
+\keys_define:nn { enumext / level-1 }
+ {
+ base-fix .bool_set:N = \l__enumext_base_line_fix_bool,
+ base-fix .initial:n = false,
+ base-fix .value_forbidden:n = true,
+ }
+%% Internal function for |base-fix| key in |enumext| environment.
+\cs_new_protected:Nn \__enumext_nested_base_line_fix:
+ {
+ \bool_lazy_all:nT
+ {
+ { \bool_if_p:N \l__enumext_starred_first_bool }
+ { \bool_if_p:N \l__enumext_base_line_fix_bool }
+ { \bool_not_p:n { \l__enumext_print_keyans_star_bool } }
+ }
+ {
+ \mode_leave_vertical:
+ \vspace { -\dim_eval:n { \baselineskip + \parsep } }
+ \keys_set:nn { enumext / level-1 }
+ {
+ topsep = 0pt, above = 0pt, above* = 0pt,
+ }
+ }
+ \bool_lazy_and:nnT
+ { \bool_if_p:N \l__enumext_starred_first_bool }
+ { \bool_if_p:N \l__enumext_print_keyans_star_bool }
+ {
+ \mode_leave_vertical:
+ \skip_vertical:n { -\baselineskip }
+ \skip_vertical:N \c_zero_skip
+ \keys_set:nn { enumext / level-1 }
+ {
+ topsep = 0pt, above = 0pt, above* = 0pt,
+ }
+ }
+ \bool_set_false:N \l__enumext_base_line_fix_bool
+ }
+%% Add |itemindent|, |rightmargin|, |listparindent|, |list-offset| and |list-indent| keys.
+\cs_set_protected:Npn \__enumext_tmp:nn #1 #2
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ itemindent .dim_set:c = { l__enumext_fake_item_indent_#2_dim },
+ itemindent .value_required:n = true,
+ rightmargin .dim_set:c = { l__enumext_rightmargin_#2_dim },
+ rightmargin .value_required:n = true,
+ listparindent .dim_set:c = { l__enumext_listparindent_#2_dim },
+ listparindent .value_required:n = true,
+ list-offset .dim_set:c = { l__enumext_listoffset_#2_dim },
+ list-offset .value_required:n = true,
+ list-indent .code:n =
+ \bool_set_true:c { l__enumext_leftmargin_tmp_#2_bool }
+ \dim_set:cn { l__enumext_leftmargin_tmp_#2_dim } {##1},
+ list-indent .value_required:n = true,
+ }
+ }
+\clist_map_inline:nn
+ {
+ {level-1}{i}, {level-2}{ii}, {level-3}{iii}, {level-4}{iv}, {keyans}{v}
+ }
+ { \__enumext_tmp:nn #1 }
+%% Set |list-offset| and |list-indent| keys for |enumext*| and |keyans*| environments.
+\cs_set_protected:Npn \__enumext_tmp:nn #1 #2
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ itemindent .dim_set:c = { l__enumext_fake_item_indent_#2_dim },
+ itemindent .value_required:n = true,
+ rightmargin .dim_set:c = { l__enumext_rightmargin_#2_dim },
+ rightmargin .value_required:n = true,
+ listparindent .dim_set:c = { l__enumext_listparindent_#2_dim },
+ listparindent .value_required:n = true,
+ list-offset .dim_set:c = { l__enumext_listoffset_#2_dim },
+ list-offset .value_required:n = true,
+ list-indent .meta:n = { list-offset = ##1 },
+ list-indent .value_required:n = true,
+ }
+ }
+\clist_map_inline:nn
+ {
+ {enumext*}{vii}, {keyans*}{viii}
+ }
+ { \__enumext_tmp:nn #1 }
+%% Internal functions for |itemindent| key. |\mode_leave_vertical:| nor
+\cs_set_protected:Nn \__enumext_fake_item_indent:
+ {
+ \dim_compare:nNnT
+ { \dim_use:c { l__enumext_fake_item_indent_ \__enumext_level: _dim } }
+ >
+ { \c_zero_dim }
+ {
+ \tl_set:ce { l__enumext_fake_item_indent_ \__enumext_level: _tl }
+ {
+ \exp_not:N \mode_leave_vertical:
+ \exp_not:n { \skip_horizontal:n }
+ { \dim_use:c { l__enumext_fake_item_indent_ \__enumext_level: _dim } }
+ \exp_not:N \ignorespaces
+ }
+ }
+ }
+\cs_set_protected:Nn \__enumext_keyans_fake_item_indent:
+ {
+ \dim_compare:nNnT
+ { \l__enumext_fake_item_indent_v_dim } > { \c_zero_dim }
+ {
+ \tl_set:Ne \l__enumext_fake_item_indent_v_tl
+ {
+ \exp_not:N \mode_leave_vertical:
+ \exp_not:N \skip_horizontal:N \l__enumext_fake_item_indent_v_dim
+ \exp_not:N \ignorespaces
+ }
+ }
+ }
+\cs_set_protected:Nn \__enumext_fake_item_indent_vii:
+ {
+ \dim_compare:nNnT
+ { \l__enumext_fake_item_indent_vii_dim } > { \c_zero_dim }
+ {
+ \tl_set:Ne \l__enumext_fake_item_indent_vii_tl
+ {
+ \exp_not:N \skip_horizontal:N \l__enumext_fake_item_indent_vii_dim
+ \exp_not:N \ignorespaces
+ }
+ }
+ }
+\cs_set_protected:Nn \__enumext_fake_item_indent_viii:
+ {
+ \dim_compare:nNnT
+ { \l__enumext_fake_item_indent_viii_dim } > { \c_zero_dim }
+ {
+ \tl_set:Ne \l__enumext_fake_item_indent_viii_tl
+ {
+ \exp_not:N \skip_horizontal:N \l__enumext_fake_item_indent_viii_dim
+ \exp_not:N \ignorespaces
+ }
+ }
+ }
+%% Add |show-length| key for all environments..
+\cs_set_protected:Npn \__enumext_tmp:nn #1 #2
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ show-length .bool_set:c = { l__enumext_show_length_#2_bool },
+ show-length .initial:n = false,
+ }
+ }
+\clist_map_inline:Nn \c__enumext_all_envs_clist { \__enumext_tmp:nn #1 }
+%% Add |before|, |before*|, |after| and |first| keys.
+\cs_set_protected:Npn \__enumext_tmp:nn #1 #2
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ before .tl_set:c = { l__enumext_before_no_starred_key_#2_tl },
+ before .value_required:n = true,
+ before* .tl_set:c = { l__enumext_before_starred_key_#2_tl },
+ before* .value_required:n = true,
+ after .tl_set:c = { l__enumext_after_stop_list_#2_tl },
+ after .value_required:n = true,
+ first .tl_set:c = { l__enumext_after_list_args_#2_tl },
+ first .value_required:n = true,
+ }
+ }
+\clist_map_inline:Nn \c__enumext_all_envs_clist { \__enumext_tmp:nn #1 }
+%% Function for |before|, |before*|, |after| and |first| keys in |enumext|.
+\cs_new_protected:Nn \__enumext_before_args_exec:
+ {
+ \tl_use:c { l__enumext_before_starred_key_ \__enumext_level: _tl }
+ }
+\cs_new_protected:Nn \__enumext_before_keys_exec:
+ {
+ \tl_use:c { l__enumext_before_no_starred_key_ \__enumext_level: _tl }
+ }
+\cs_new_protected:Nn \__enumext_after_stop_list:
+ {
+ \tl_use:c { l__enumext_after_stop_list_ \__enumext_level: _tl }
+ }
+\cs_new_protected:Nn \__enumext_after_args_exec:
+ {
+ \tl_use:c { l__enumext_after_list_args_ \__enumext_level: _tl }
+ }
+%% Function for |before|, |before*|, |after| and |first| keys in |keyans|.
+\cs_new_protected:Nn \__enumext_before_args_exec_v:
+ {
+ \tl_use:N \l__enumext_before_starred_key_v_tl
+ }
+\cs_new_protected:Nn \__enumext_before_keys_exec_v:
+ {
+ \tl_use:N \l__enumext_before_no_starred_key_v_tl
+ }
+\cs_new_protected:Nn \__enumext_after_stop_list_v:
+ {
+ \tl_use:N \l__enumext_after_stop_list_v_tl
+ }
+\cs_new_protected:Nn \__enumext_after_args_exec_v:
+ {
+ \tl_use:N \l__enumext_after_list_args_v_tl
+ }
+%% Function for |before|, |before*|, |after| and |first| keys in |enumext*| and |keyans*|.
+\cs_new_protected:Nn \__enumext_before_args_exec_vii:
+ {
+ \tl_use:N \l__enumext_before_starred_key_vii_tl
+ }
+\cs_new_protected:Nn \__enumext_before_args_exec_viii:
+ {
+ \tl_use:N \l__enumext_before_starred_key_viii_tl
+ }
+\cs_new_protected:Nn \__enumext_before_keys_exec_vii:
+ {
+ \tl_use:N \l__enumext_before_no_starred_key_vii_tl
+ }
+\cs_new_protected:Nn \__enumext_before_keys_exec_viii:
+ {
+ \tl_use:N \l__enumext_before_no_starred_key_viii_tl
+ }
+\cs_new_protected:Nn \__enumext_after_stop_list_vii:
+ {
+ \tl_use:N \l__enumext_after_stop_list_vii_tl
+ }
+\cs_new_protected:Nn \__enumext_after_stop_list_viii:
+ {
+ \tl_use:N \l__enumext_after_stop_list_viii_tl
+ }
+\cs_new_protected:Nn \__enumext_after_args_exec_vii:
+ {
+ \tl_use:N \l__enumext_after_list_args_vii_tl
+ }
+\cs_new_protected:Nn \__enumext_after_args_exec_viii:
+ {
+ \tl_use:N \l__enumext_after_list_args_viii_tl
+ }
+%% Add |mini-env|, |mini-sep|, |columns-sep| and |columns| keys.
+\cs_set_protected:Npn \__enumext_tmp:nn #1 #2
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ mini-env .dim_set:c = { l__enumext_minipage_right_#2_dim },
+ mini-env .value_required:n = true,
+ mini-sep .dim_set:c = { l__enumext_minipage_hsep_#2_dim },
+ mini-sep .initial:n = 0.3333em,
+ mini-sep .value_required:n = true,
+ columns-sep .dim_set:c = { l__enumext_columns_sep_#2_dim },
+ columns-sep .value_required:n = true,
+ columns .int_set:c = { l__enumext_columns_#2_int },
+ columns .initial:n = 1,
+ columns .value_required:n = true,
+ }
+ }
+\clist_map_inline:Nn \c__enumext_all_envs_clist { \__enumext_tmp:nn #1 }
+%% Add |mini-right| and |mini-right*| keys for starred environments.
+\cs_set_protected:Npn \__enumext_tmp:nn #1 #2
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ mini-right .tl_gset:c = { g__enumext_miniright_code_#2_tl },
+ mini-right .value_required:n = true,
+ mini-right* .code:n = {
+ \bool_gset_true:c { g__enumext_minipage_center_#2_bool }
+ \keys_set:nn { enumext / #1 } { mini-right = {##1} }
+ },
+ mini-right* .value_required:n = true,
+ }
+ }
+\clist_map_inline:nn { {enumext*}{vii}, {keyans*}{viii} } { \__enumext_tmp:nn #1 }
+%% Adjustment of vertical spacing for |multicols| in |enumext|.
+\cs_new_protected:Nn \__enumext_multi_set_vskip:
+ {
+ \skip_set:cn { l__enumext_multicols_above_ \__enumext_level: _skip }
+ {
+ \skip_use:c { l__enumext_topsep_ \__enumext_level: _skip }
+ }
+ \skip_set:cn { l__enumext_multicols_below_ \__enumext_level: _skip }
+ {
+ \skip_use:c { l__enumext_topsep_ \__enumext_level: _skip }
+ }
+ \__enumext_add_pre_parsep:
+ }
+%% Detect |\parsep| from previous level and adjust |\l_@@_multicols_above_X_skip| for |multicols| in |enumext|.
+\cs_new_protected:Nn \__enumext_add_pre_parsep:
+ {
+ \int_case:nn { \l__enumext_level_int }
+ {
+ { 2 }{
+ \skip_if_eq:nnF { \l__enumext_parsep_i_skip } { \c_zero_skip }
+ {
+ \skip_add:Nn \l__enumext_multicols_above_ii_skip
+ {
+ \l__enumext_parsep_i_skip
+ }
+ }
+ }
+ { 3 }{
+ \skip_if_eq:nnF { \l__enumext_parsep_ii_skip } { \c_zero_skip }
+ {
+ \skip_add:Nn \l__enumext_multicols_above_iii_skip
+ {
+ \l__enumext_parsep_ii_skip
+ }
+ }
+ }
+ { 4 }{
+ \skip_if_eq:nnF { \l__enumext_parsep_iii_skip } { \c_zero_skip }
+ {
+ \skip_add:Nn \l__enumext_multicols_above_iv_skip
+ {
+ \l__enumext_parsep_iii_skip
+ }
+ }
+ }
+ }
+ }
+%% Add vertical spacing for |multicols| in |enumext| environment.
+\cs_new_protected:Nn \__enumext_multi_addvspace:
+ {
+ \__enumext_multi_set_vskip:
+ \mode_if_vertical:T
+ {
+ \skip_add:cn { l__enumext_multicols_above_ \__enumext_level: _skip }
+ {
+ \skip_use:c { l__enumext_partopsep_ \__enumext_level: _skip }
+ }
+ \skip_add:cn { l__enumext_multicols_below_ \__enumext_level: _skip }
+ {
+ \skip_use:c { l__enumext_partopsep_ \__enumext_level: _skip }
+ }
+ }
+ \par\nopagebreak
+ \addvspace{ \skip_use:c { l__enumext_multicols_above_ \__enumext_level: _skip } }
+ }
+%% Adjustment of vertical spacing for |multicols| in |keyans| environments.
+\cs_new_protected:Nn \__enumext_keyans_multi_set_vskip:
+ {
+ \skip_set:Nn \l__enumext_multicols_above_v_skip
+ {
+ \l__enumext_topsep_v_skip
+ }
+ \skip_set:Nn \l__enumext_multicols_below_v_skip
+ {
+ \l__enumext_topsep_v_skip
+ }
+ }
+\cs_new_protected:Nn \__enumext_keyans_multi_addvspace:
+ {
+ \__enumext_keyans_multi_set_vskip:
+ \mode_if_vertical:T
+ {
+ \skip_add:Nn \l__enumext_multicols_above_v_skip
+ {
+ \skip_use:N \l__enumext_partopsep_v_skip
+ }
+ \skip_add:Nn \l__enumext_multicols_below_v_skip
+ {
+ \skip_use:N \l__enumext_partopsep_v_skip
+ }
+ }
+ \par\nopagebreak
+ \addvspace{ \l__enumext_multicols_above_v_skip }
+ }
+%% Adjustment of vertical spacing for |minipage| in |enumext| environment.
+\cs_new_protected:Nn \__enumext_minipage_set_skip:
+ {
+ \skip_set:Nn \l__enumext_minipage_right_skip
+ {
+ \skip_use:c { l__enumext_topsep_ \__enumext_level: _skip }
+ }
+ \mode_if_vertical:T
+ {
+ \skip_add:Nn \l__enumext_minipage_right_skip
+ {
+ \skip_use:c { l__enumext_partopsep_ \__enumext_level: _skip }
+ }
+ }
+ \skip_set_eq:NN \l__enumext_minipage_after_skip \l__enumext_minipage_right_skip
+ \skip_set_eq:cN
+ { l__enumext_multicols_above_ \__enumext_level: _skip } \l__enumext_minipage_right_skip
+ \skip_set_eq:cN
+ { l__enumext_multicols_below_ \__enumext_level: _skip } \l__enumext_minipage_right_skip
+ \__enumext_pre_itemsep_skip:
+ \int_compare:nNnT
+ { \int_use:c { l__enumext_columns_ \__enumext_level: _int } } > { 1 }
+ {
+ \skip_zero:N \topskip
+ \skip_set_eq:Nc \multicolsep { l__enumext_multicols_above_ \__enumext_level: _skip }
+ }
+ }
+\cs_new_protected:Nn \__enumext_minipage_add_space:
+ {
+ \__enumext_minipage_set_skip:
+ \__enumext_unskip_unkern:
+ \mode_if_vertical:TF
+ {
+ \nopagebreak\nointerlineskip
+ }
+ {
+ \par\nopagebreak\nointerlineskip
+ \skip_zero:c { l__enumext_partopsep_ \__enumext_level: _skip }
+ }
+ \int_compare:nNnTF
+ { \int_use:c { l__enumext_columns_ \__enumext_level: _int } } > { 1 }
+ {
+ \addvspace{ 0.445\box_ht:N \strutbox }
+ }
+ {
+ \addvspace{ 0.250\box_ht:N \strutbox }
+ }
+ }
+\cs_new_protected:Nn \__enumext_pre_itemsep_skip:
+ {
+ \int_case:nn { \l__enumext_level_int }
+ {
+ { 2 }{
+ \skip_if_eq:nnTF
+ { \l__enumext_itemsep_i_skip } { \l__enumext_minipage_after_skip }
+ {
+ \skip_set:Nn \l__enumext_minipage_after_skip { 0.150\box_ht:N \strutbox }
+ \skip_set:Nn \l__enumext_multicols_below_ii_skip { 0.350\box_ht:N \strutbox }
+ }
+ {
+ \dim_compare:nNnT
+ { \l__enumext_itemsep_i_skip } < { \l__enumext_minipage_after_skip }
+ {
+ \skip_sub:Nn
+ \l__enumext_minipage_after_skip { \l__enumext_itemsep_i_skip }
+ \skip_sub:Nn
+ \l__enumext_multicols_below_ii_skip { \l__enumext_itemsep_i_skip }
+ \skip_add:Nn
+ \l__enumext_minipage_after_skip { 0.150\box_ht:N \strutbox }
+ \skip_add:Nn
+ \l__enumext_multicols_below_ii_skip { 0.350\box_ht:N \strutbox }
+ }
+ \dim_compare:nNnT
+ { \l__enumext_itemsep_i_skip } > { \l__enumext_minipage_after_skip }
+ {
+ \skip_set:Nn \l__enumext_minipage_temp_skip
+ {
+ \l__enumext_itemsep_i_skip - \l__enumext_minipage_after_skip
+ }
+ \skip_sub:Nn
+ \l__enumext_minipage_after_skip { \l__enumext_itemsep_i_skip }
+ \skip_sub:Nn
+ \l__enumext_multicols_below_ii_skip { \l__enumext_itemsep_i_skip }
+ \skip_add:Nn
+ \l__enumext_minipage_after_skip
+ { 0.150\box_ht:N \strutbox + \l__enumext_minipage_temp_skip }
+ \skip_add:Nn
+ \l__enumext_multicols_below_ii_skip
+ { 0.350\box_ht:N \strutbox + \l__enumext_minipage_temp_skip }
+ }
+ }
+ }
+ { 3 }{
+ \skip_if_eq:nnTF
+ { \l__enumext_itemsep_ii_skip } { \c_zero_skip }
+ {
+ \skip_set:Nn \l__enumext_minipage_after_skip { 0.150\box_ht:N \strutbox }
+ \skip_set:Nn \l__enumext_multicols_below_iii_skip { 0.350\box_ht:N \strutbox }
+ }
+ {
+ \dim_compare:nNnT
+ { \l__enumext_itemsep_ii_skip } < { \l__enumext_minipage_after_skip }
+ {
+ \skip_sub:Nn
+ \l__enumext_minipage_after_skip { \l__enumext_itemsep_ii_skip }
+ \skip_sub:Nn
+ \l__enumext_multicols_below_iii_skip { \l__enumext_itemsep_ii_skip }
+ \skip_add:Nn
+ \l__enumext_minipage_after_skip { 0.150\box_ht:N \strutbox }
+ \skip_add:Nn
+ \l__enumext_multicols_below_iii_skip { 0.350\box_ht:N \strutbox }
+ }
+ \dim_compare:nNnT
+ { \l__enumext_itemsep_ii_skip } > { \l__enumext_minipage_after_skip }
+ {
+ \skip_set:Nn \l__enumext_minipage_temp_skip
+ {
+ \l__enumext_itemsep_ii_skip - \l__enumext_minipage_after_skip
+ }
+ \skip_sub:Nn
+ \l__enumext_minipage_after_skip { \l__enumext_itemsep_ii_skip }
+ \skip_sub:Nn
+ \l__enumext_multicols_below_iii_skip { \l__enumext_itemsep_ii_skip }
+ \skip_add:Nn
+ \l__enumext_minipage_after_skip
+ { 0.150\box_ht:N \strutbox + \l__enumext_minipage_temp_skip }
+ \skip_add:Nn
+ \l__enumext_multicols_below_iii_skip
+ { 0.350\box_ht:N \strutbox + \l__enumext_minipage_temp_skip }
+ }
+ }
+ }
+ { 4 }{
+ \skip_if_eq:nnTF { \l__enumext_itemsep_iii_skip } { \c_zero_skip }
+ {
+ \skip_set:Nn \l__enumext_minipage_after_skip { 0.150\box_ht:N \strutbox }
+ \skip_set:Nn \l__enumext_multicols_below_iv_skip { 0.350\box_ht:N \strutbox }
+ }
+ {
+ \dim_compare:nNnT
+ { \l__enumext_itemsep_iii_skip } < { \l__enumext_minipage_after_skip }
+ {
+ \skip_sub:Nn
+ \l__enumext_minipage_after_skip { \l__enumext_itemsep_iii_skip }
+ \skip_sub:Nn
+ \l__enumext_multicols_below_iv_skip { \l__enumext_itemsep_iii_skip }
+ \skip_add:Nn
+ \l__enumext_minipage_after_skip { 0.150\box_ht:N \strutbox }
+ \skip_add:Nn
+ \l__enumext_multicols_below_iv_skip { 0.350\box_ht:N \strutbox }
+ }
+ \dim_compare:nNnT
+ { \l__enumext_itemsep_iii_skip } > { \l__enumext_minipage_after_skip }
+ {
+ \skip_set:Nn \l__enumext_minipage_temp_skip
+ {
+ \l__enumext_itemsep_iii_skip - \l__enumext_minipage_after_skip
+ }
+ \skip_sub:Nn
+ \l__enumext_minipage_after_skip { \l__enumext_itemsep_iii_skip }
+ \skip_sub:Nn
+ \l__enumext_multicols_below_iv_skip { \l__enumext_itemsep_iii_skip }
+ \skip_add:Nn
+ \l__enumext_minipage_after_skip
+ { 0.150\box_ht:N \strutbox + \l__enumext_minipage_temp_skip }
+ \skip_add:Nn
+ \l__enumext_multicols_below_iv_skip
+ { 0.350\box_ht:N \strutbox + \l__enumext_minipage_temp_skip }
+ }
+ }
+ }
+ }
+ }
+%% Adjustment of vertical spacing for |minipage| in |keyans| environments.
+\cs_new_protected:Nn \__enumext_keyans_minipage_set_skip:
+ {
+ \skip_zero:N \l__enumext_minipage_after_skip
+ \skip_zero:N \l__enumext_minipage_left_skip
+ \skip_zero:N \l__enumext_minipage_right_skip
+ \skip_set:Nn \l__enumext_minipage_right_skip
+ {
+ \l__enumext_topsep_v_skip
+ }
+ \mode_if_vertical:T
+ {
+ \skip_add:Nn \l__enumext_minipage_right_skip
+ {
+ \l__enumext_partopsep_v_skip
+ }
+ }
+ \skip_set_eq:NN \l__enumext_minipage_after_skip \l__enumext_minipage_right_skip
+ \skip_set_eq:NN \l__enumext_multicols_above_v_skip \l__enumext_minipage_right_skip
+ \skip_set_eq:NN \l__enumext_multicols_below_v_skip \l__enumext_minipage_right_skip
+ \__enumext_keyans_pre_itemsep_skip:
+ \int_compare:nNnT { \l__enumext_columns_v_int } > { 1 }
+ {
+ \skip_zero:N \topskip
+ \skip_set_eq:NN \multicolsep \l__enumext_minipage_right_skip
+ }
+ }
+\cs_new_protected:Nn \__enumext_keyans_minipage_add_space:
+ {
+ \__enumext_keyans_minipage_set_skip:
+ \__enumext_unskip_unkern:
+ \mode_if_vertical:TF
+ {
+ \nopagebreak\nointerlineskip
+ }
+ {
+ \par\nopagebreak\nointerlineskip
+ \skip_zero:N \l__enumext_partopsep_v_skip
+ }
+ \int_compare:nNnTF { \l__enumext_columns_v_int } > { 1 }
+ {
+ \addvspace{ 0.445\box_ht:N \strutbox }
+ }
+ {
+ \addvspace{ 0.250\box_ht:N \strutbox }
+ }
+ }
+\cs_new_protected:Nn \__enumext_keyans_pre_itemsep_skip:
+ {
+ \skip_if_eq:nnTF
+ { \l__enumext_itemsep_i_skip } { \l__enumext_minipage_after_skip }
+ {
+ \skip_set:Nn \l__enumext_minipage_after_skip { 0.150\box_ht:N \strutbox }
+ \skip_set:Nn \l__enumext_multicols_below_v_skip { 0.350\box_ht:N \strutbox }
+ }
+ {
+ \dim_compare:nNnT
+ { \l__enumext_itemsep_i_skip } < { \l__enumext_minipage_after_skip }
+ {
+ \skip_sub:Nn \l__enumext_minipage_after_skip { \l__enumext_itemsep_i_skip }
+ \skip_sub:Nn \l__enumext_multicols_below_v_skip { \l__enumext_itemsep_i_skip }
+ \skip_add:Nn \l__enumext_minipage_after_skip { 0.150\box_ht:N \strutbox }
+ \skip_add:Nn \l__enumext_multicols_below_v_skip { 0.350\box_ht:N \strutbox }
+ }
+ \dim_compare:nNnT
+ { \l__enumext_itemsep_i_skip } > { \l__enumext_minipage_after_skip }
+ {
+ \skip_set:Nn \l__enumext_minipage_temp_skip
+ {
+ \l__enumext_itemsep_i_skip - \l__enumext_minipage_after_skip
+ }
+ \skip_sub:Nn \l__enumext_minipage_after_skip { \l__enumext_itemsep_i_skip }
+ \skip_sub:Nn \l__enumext_multicols_below_v_skip { \l__enumext_itemsep_i_skip }
+ \skip_add:Nn \l__enumext_minipage_after_skip
+ { 0.150\box_ht:N \strutbox + \l__enumext_minipage_temp_skip }
+ \skip_add:Nn \l__enumext_multicols_below_v_skip
+ { 0.350\box_ht:N \strutbox + \l__enumext_minipage_temp_skip }
+ }
+ }
+ }
+%% Adjustment of vertical spacing for |minipage| in |enumext*| and |keyans*|.
+\cs_new_protected:Nn \__enumext_mini_set_vskip_vii:
+ {
+ \skip_zero_new:N \l__enumext_minipage_left_skip
+ \skip_gzero_new:N \g__enumext_minipage_right_skip
+ \skip_gzero_new:N \g__enumext_minipage_after_skip
+ \skip_if_eq:nnTF { \l__enumext_topsep_vii_skip } { \c_zero_skip }
+ {
+ \skip_set:Nn \l__enumext_minipage_left_skip { 0.5\box_dp:N \strutbox }
+ \skip_gset:Nn \g__enumext_minipage_right_skip { 0.325\box_dp:N \strutbox }
+ }
+ {
+ \skip_set:Nn \l__enumext_minipage_left_skip { 0.5875\box_dp:N \strutbox }
+ \skip_gset:Nn \g__enumext_minipage_right_skip
+ {
+ \l__enumext_topsep_vii_skip
+ }
+ \skip_gset:Nn \g__enumext_minipage_after_skip
+ {
+ 0.325\box_dp:N \strutbox + \l__enumext_topsep_vii_skip
+ }
+ }
+ }
+\cs_new_protected:Nn \__enumext_mini_set_vskip_viii:
+ {
+ \skip_zero_new:N \l__enumext_minipage_after_skip
+ \skip_zero_new:N \l__enumext_minipage_left_skip
+ \skip_zero_new:N \l__enumext_minipage_right_skip
+ \skip_if_eq:nnTF { \l__enumext_topsep_viii_skip } { \c_zero_skip }
+ {
+ \skip_set:Nn \l__enumext_minipage_left_skip
+ {
+ 0.5\box_dp:N \strutbox
+ }
+ \skip_set:Nn \l__enumext_minipage_right_skip
+ {
+ \l__enumext_partopsep_viii_skip
+ }
+ \skip_set:Nn \l__enumext_minipage_after_skip
+ {
+ 1.6\box_dp:N \strutbox
+ }
+ }
+ {
+ \skip_set:Nn \l__enumext_minipage_left_skip
+ {
+ 0.5875\box_dp:N \strutbox
+ }
+ \skip_set:Nn \l__enumext_minipage_right_skip
+ {
+ \l__enumext_topsep_viii_skip
+ }
+ \skip_set:Nn \l__enumext_minipage_after_skip
+ {
+ 0.325\box_dp:N \strutbox + \l__enumext_topsep_viii_skip
+ }
+ }
+ }
+%% Apply \addvspace above minipage for |enumext*| and |keyans*| environments.
+\cs_new_protected:Nn \__enumext_mini_addvspace_vii:
+ {
+ \__enumext_mini_set_vskip_vii:
+ \par\nopagebreak
+ \addvspace { \l__enumext_minipage_left_skip }
+ }
+\cs_new_protected:Nn \__enumext_mini_addvspace_viii:
+ {
+ \__enumext_mini_set_vskip_viii:
+ \par\nopagebreak
+ \addvspace { \l__enumext_minipage_left_skip }
+ }
+%% Definition of |\miniright| command.
+\NewDocumentCommand \miniright { s }
+ {
+ \int_compare:nNnT { \l__enumext_keyans_pic_level_int } = { 1 }
+ {
+ \msg_error:nnn { enumext } { wrong-miniright-place }
+ }
+ % outside
+ \bool_lazy_and:nnT
+ { \int_compare_p:nNn { \l__enumext_level_int } = { 0 } }
+ { \int_compare_p:nNn { \l__enumext_level_h_int } = { 0 } }
+ {
+ \msg_error:nnn { enumext } { wrong-miniright-place }
+ }
+ % starred env
+ \bool_lazy_and:nnT
+ { \bool_if_p:N \g__enumext_starred_bool }
+ { \bool_not_p:n { \l__enumext_standar_bool } }
+ {
+ \msg_error:nnn { enumext } { wrong-miniright-starred }
+ }
+ % exec
+ \int_compare:nNnTF { \l__enumext_keyans_level_int } = { 1 }
+ {
+ \__enumext_keyans_mini_right_cmd:n {#1}
+ }
+ { \__enumext_mini_right_cmd:n {#1} }
+ }
+%% Internal function for |\miniright| command in enumext.
+\cs_new_protected:Npn \__enumext_mini_right_cmd:n #1
+ {
+ \dim_compare:nNnTF
+ { \dim_use:c { l__enumext_minipage_right_ \__enumext_level: _dim } } > { \c_zero_dim }
+ {
+ \__enumext_multicols_stop:
+ \int_compare:nNnT
+ { \int_use:c { l__enumext_columns_ \__enumext_level: _int } } = { 1 }
+ {
+ \par\addvspace{ \l__enumext_minipage_after_skip }
+ }
+ \end__enumext_mini_page
+ \hfill
+ \__enumext_mini_page{ \dim_use:c { l__enumext_minipage_right_ \__enumext_level: _dim } }
+ \par\nointerlineskip
+ \addvspace { \l__enumext_minipage_right_skip }
+ \bool_if:nF {#1}
+ {
+ \centering
+ }
+ \int_gzero:N \g__enumext_minipage_stat_int
+ }
+ { \msg_error:nnn { enumext } { wrong-miniright-use } }
+ % paranoia
+ \RenewDocumentCommand \miniright { s }
+ {
+ \msg_error:nn { enumext } { many-miniright-used }
+ }
+ }
+%% Internal function for |\miniright| command in keyans.
+\cs_new_protected:Npn \__enumext_keyans_mini_right_cmd:n #1
+ {
+ \dim_compare:nNnTF { \l__enumext_minipage_right_v_dim } > { \c_zero_dim }
+ {
+ \__enumext_keyans_multicols_stop:
+ \int_compare:nNnT { \l__enumext_columns_v_int } = { 1 }
+ {
+ \par\addvspace{ \l__enumext_minipage_after_skip }
+ }
+ \end__enumext_mini_page
+ \hfill
+ \__enumext_mini_page{ \l__enumext_minipage_right_v_dim }
+ \par\nointerlineskip
+ \addvspace { \l__enumext_minipage_right_skip }
+ \bool_if:nF {#1}
+ {
+ \centering
+ }
+ \int_gzero:N \g__enumext_minipage_stat_int
+ }
+ { \msg_error:nnn { enumext } { wrong-miniright-use } }
+ % paranoia
+ \RenewDocumentCommand \miniright { s }
+ {
+ \msg_error:nn { enumext } { many-miniright-used }
+ }
+ }
+%% Add |above| and |below| keys.
+\cs_set_protected:Npn \__enumext_tmp:nn #1 #2
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ above .skip_set:c = { l__enumext_vspace_above_#2_skip },
+ above .value_required:n = true,
+ above* .code:n = \bool_set_true:c { l__enumext_vspace_a_star_#2_bool }
+ \keys_set:nn { enumext / #1 } { above = {##1} },
+ above* .value_required:n = true,
+ below .skip_set:c = { l__enumext_vspace_below_#2_skip },
+ below .value_required:n = true,
+ below* .code:n = \bool_set_true:c { l__enumext_vspace_b_star_#2_bool }
+ \keys_set:nn { enumext / #1 } { below = {##1} },
+ below* .value_required:n = true,
+ }
+ }
+\clist_map_inline:Nn \c__enumext_all_envs_clist { \__enumext_tmp:nn #1 }
+%% Function for |above|, |above*|, |below| and |below*| keys in |enumext|.
+\cs_new_protected:Nn \__enumext_vspace_above:
+ {
+ \skip_if_eq:nnF
+ { \skip_use:c { l__enumext_vspace_above_ \__enumext_level: _skip } } { \c_zero_skip }
+ {
+ \bool_if:cTF { l__enumext_vspace_a_star_ \__enumext_level: _bool }
+ {
+ \vspace*{ \skip_use:c { l__enumext_vspace_above_ \__enumext_level: _skip } }
+ }
+ {
+ \vspace { \skip_use:c { l__enumext_vspace_above_ \__enumext_level: _skip } }
+ }
+ }
+ }
+\cs_new_protected:Nn \__enumext_vspace_below:
+ {
+ \skip_if_eq:nnF
+ { \skip_use:c { l__enumext_vspace_below_ \__enumext_level: _skip } } { \c_zero_skip }
+ {
+ \bool_if:cTF { l__enumext_vspace_b_star_ \__enumext_level: _bool }
+ {
+ \vspace*{ \skip_use:c { l__enumext_vspace_below_ \__enumext_level: _skip } }
+ }
+ {
+ \vspace { \skip_use:c { l__enumext_vspace_below_ \__enumext_level: _skip } }
+ }
+ }
+ }
+%% Function for |above|, |above*|, |below| and |below*| keys in |keyans|.
+\cs_new_protected:Nn \__enumext_vspace_above_v:
+ {
+ \skip_if_eq:nnF { \l__enumext_vspace_above_v_skip } { \c_zero_skip }
+ {
+ \bool_if:NTF \l__enumext_vspace_a_star_v_bool
+ {
+ \vspace*{ \l__enumext_vspace_above_v_skip }
+ }
+ { \vspace { \l__enumext_vspace_above_v_skip } }
+ }
+ }
+\cs_new_protected:Nn \__enumext_vspace_below_v:
+ {
+ \skip_if_eq:nnF { \l__enumext_vspace_below_v_skip } { \c_zero_skip }
+ {
+ \bool_if:NTF \l__enumext_vspace_b_star_v_bool
+ {
+ \vspace*{ \l__enumext_vspace_below_v_skip }
+ }
+ { \vspace { \l__enumext_vspace_below_v_skip } }
+ }
+ }
+%% Function for |above|, |above*|, |below| and |below*| keys in |enumext*| and |keyans*|.
+\cs_new_protected:Nn \__enumext_vspace_above_vii:
+ {
+ \skip_if_eq:nnF { \l__enumext_vspace_above_vii_skip } { \c_zero_skip }
+ {
+ \bool_if:NTF \l__enumext_vspace_a_star_vii_bool
+ {
+ \vspace*{ \l__enumext_vspace_above_vii_skip }
+ }
+ { \vspace { \l__enumext_vspace_above_vii_skip } }
+ }
+ }
+\cs_new_protected:Nn \__enumext_vspace_above_viii:
+ {
+ \skip_if_eq:nnF { \l__enumext_vspace_above_viii_skip } { \c_zero_skip }
+ {
+ \bool_if:NTF \l__enumext_vspace_a_star_viii_bool
+ {
+ \vspace*{ \l__enumext_vspace_above_viii_skip }
+ }
+ { \vspace { \l__enumext_vspace_above_viii_skip } }
+ }
+ }
+\cs_new_protected:Nn \__enumext_vspace_below_vii:
+ {
+ \skip_if_eq:nnF { \l__enumext_vspace_below_vii_skip } { \c_zero_skip }
+ {
+ \bool_if:NTF \l__enumext_vspace_b_star_vii_bool
+ {
+ \vspace*{ \l__enumext_vspace_below_vii_skip }
+ }
+ { \vspace { \l__enumext_vspace_below_vii_skip } }
+ }
+ }
+\cs_new_protected:Nn \__enumext_vspace_below_viii:
+ {
+ \skip_if_eq:nnF { \l__enumext_vspace_below_viii_skip } { \c_zero_skip }
+ {
+ \bool_if:NTF \l__enumext_vspace_b_star_viii_bool
+ {
+ \vspace*{ \l__enumext_vspace_below_viii_skip }
+ }
+ { \vspace { \l__enumext_vspace_below_viii_skip } }
+ }
+ }
+%% Add |series|, |resume| and |resume*| keys only on first level off |enumext| and |enumext*|.
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ series .str_set:N = \l__enumext_series_str,
+ series .value_required:n = true,
+ resume .code:n = \__enumext_resume_series:n {##1},
+ resume* .code:n = \__enumext_resume_starred:,
+ resume* .value_forbidden:n = true,
+ }
+ }
+\clist_map_inline:nn { level-1, enumext* } { \__enumext_tmp:n {#1} }
+%% Internal function for filter keys.
+\cs_new:Npn \__enumext_filter_series:n #1
+ {
+ \use:e
+ {
+ \keyval_parse:NNn
+ \__enumext_filter_series_key:n
+ \__enumext_filter_series_pair:nn {#1}
+ }
+ }
+\cs_new:Npn \__enumext_filter_series_key:n #1
+ {
+ \str_case:nnF {#1}
+ {
+ { resume } {} { resume* } {} { base-fix } {}
+ }
+ { , { \exp_not:n {#1} } }
+ }
+\cs_new:Npn \__enumext_filter_series_pair:nn #1#2
+ {
+ \str_case:nnF {#1}
+ {
+ { series } {} { resume } {} { start } {}
+ { start* } {} { save-ans } {} { save-key } {}
+ }
+ { , { \exp_not:n {#1} } = { \exp_not:n {#2} } }
+ }
+%% Internal function for parse filter keys used by |series|, |resume| and |resume*| keys.
+\cs_new_protected:Npn \__enumext_parse_series:n #1
+ {
+ \str_if_empty:NTF \l__enumext_series_str
+ {
+ \bool_if:NF \l__enumext_resume_active_bool
+ {
+ \__enumext_resume_last:n {#1}
+ }
+ }
+ {
+ \tl_gclear_new:c { g__enumext_series_ \l__enumext_series_str _tl }
+ \tl_gset:ce { g__enumext_series_ \l__enumext_series_str _tl }
+ { \__enumext_filter_series:n {#1} }
+ \int_if_exist:cF { g__enumext_series_ \l__enumext_series_str _int }
+ {
+ \int_new:c { g__enumext_series_ \l__enumext_series_str _int }
+ }
+ }
+ }
+%% Save keys for last environment without |series|, |resume| and |resume*| keys active.
+\cs_new_protected:Npn \__enumext_resume_last:n #1
+ {
+ \bool_if:NT \l__enumext_standar_first_bool
+ {
+ \tl_gclear:N \g__enumext_standar_series_tl
+ \tl_gset:Ne \g__enumext_standar_series_tl { \__enumext_filter_series:n {#1} }
+ }
+ \bool_if:NT \l__enumext_starred_first_bool
+ {
+ \tl_gclear:N \g__enumext_starred_series_tl
+ \tl_gset:Ne \g__enumext_starred_series_tl { \__enumext_filter_series:n {#1} }
+ }
+ }
+%% Internal function to save counter value and set int vars for |series|, |resume| and |resume*| keys.
+\cs_new_protected:Nn \__enumext_resume_save_counter:
+ {
+ \bool_if:NT \g__enumext_standar_bool
+ {
+ \tl_if_empty:NF \l__enumext_series_str
+ {
+ \int_gset_eq:cN
+ { g__enumext_series_ \l__enumext_series_str _int } \value{enumXi}
+ }
+ \tl_if_empty:NTF \l__enumext_resume_name_tl
+ {
+ \str_if_empty:NT \l__enumext_series_str
+ {
+ \int_gset_eq:NN \g__enumext_resume_int \value{enumXi}
+ }
+ }
+ {
+ \int_if_exist:cT { g__enumext_series_ \l__enumext_resume_name_tl _int }
+ {
+ \int_gset_eq:cN
+ { g__enumext_series_ \l__enumext_resume_name_tl _int } \value{enumXi}
+ }
+ }
+ \int_if_exist:cT { g__enumext_resume_ \l__enumext_store_name_tl _int }
+ {
+ \int_gset_eq:cN
+ { g__enumext_resume_ \l__enumext_store_name_tl _int } \value{enumXi}
+ }
+ }
+ \bool_if:NT \g__enumext_starred_bool
+ {
+ \tl_if_empty:NF \l__enumext_series_str
+ {
+ \int_gset_eq:cN
+ { g__enumext_series_ \l__enumext_series_str _int } \value{enumXvii}
+ }
+ \tl_if_empty:NTF \l__enumext_resume_name_tl
+ {
+ \str_if_empty:NT \l__enumext_series_str
+ {
+ \int_gset_eq:NN \g__enumext_resume_vii_int \value{enumXvii}
+ }
+ }
+ {
+ \int_if_exist:cT { g__enumext_series_ \l__enumext_resume_name_tl _int }
+ {
+ \int_gset_eq:cN
+ { g__enumext_series_ \l__enumext_resume_name_tl _int } \value{enumXvii}
+ }
+ }
+ \int_if_exist:cT { g__enumext_resume_ \l__enumext_store_name_tl _int }
+ {
+ \int_gset_eq:cN
+ { g__enumext_resume_ \l__enumext_store_name_tl _int } \value{enumXvii}
+ }
+ }
+ }
+%% Internal function for |resume| key.
+\cs_new_protected:Npn \__enumext_resume_series:n #1
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \__enumext_resume_counter:n { }
+ }
+ {
+ \tl_if_exist:cTF { g__enumext_series_ \tl_to_str:n {#1} _tl }
+ {
+ \__enumext_resume_counter:n {#1}
+ \bool_if:NT \g__enumext_standar_bool
+ {
+ \keys_set:nv { enumext / level-1 }
+ { g__enumext_series_ \tl_to_str:n {#1} _tl }
+ }
+ \bool_if:NT \g__enumext_starred_bool
+ {
+ \keys_set:nv { enumext / enumext* }
+ { g__enumext_series_ \tl_to_str:n {#1} _tl }
+ }
+ }
+ {
+ \bool_if:NT \g__enumext_standar_bool
+ {
+ \msg_error:nnn { enumext } { unknown-series } {#1}
+ }
+ \bool_if:NT \g__enumext_starred_bool
+ {
+ \msg_error:nnn { enumext } { unknown-series } {#1}
+ }
+ }
+ }
+ }
+\cs_new_protected:Npn \__enumext_resume_counter:n #1
+ {
+ \bool_set_true:N \l__enumext_resume_active_bool
+ \tl_set:Nn \l__enumext_resume_name_tl {#1}
+ \tl_if_empty:NTF \l__enumext_resume_name_tl
+ {
+ \__enumext_resume_counter:
+ }
+ {
+ \__enumext_resume_counter_series:
+ }
+ \__enumext_resume_counter_save_ans:
+ }
+\cs_new_protected:Nn \__enumext_resume_counter:
+ {
+ \bool_if:NT \g__enumext_standar_bool
+ {
+ \int_gincr:N \g__enumext_resume_int
+ \int_set_eq:NN \l__enumext_start_i_int \g__enumext_resume_int
+ }
+ \bool_if:NT \g__enumext_starred_bool
+ {
+ \int_gincr:N \g__enumext_resume_vii_int
+ \int_set_eq:NN \l__enumext_start_vii_int \g__enumext_resume_vii_int
+ }
+ }
+\cs_new_protected:Nn \__enumext_resume_counter_series:
+ {
+ \bool_if:NT \g__enumext_standar_bool
+ {
+ \int_set:Nn \l__enumext_start_i_int
+ {
+ \int_use:c { g__enumext_series_ \l__enumext_resume_name_tl _int } + 1
+ }
+ }
+ \bool_if:NT \g__enumext_starred_bool
+ {
+ \int_set:Nn \l__enumext_start_vii_int
+ {
+ \int_use:c { g__enumext_series_ \l__enumext_resume_name_tl _int } + 1
+ }
+ }
+ }
+\cs_new_protected:Nn \__enumext_resume_counter_save_ans:
+ {
+ \bool_lazy_and:nnT
+ { \bool_if_p:N \l__enumext_standar_first_bool }
+ { \bool_if_p:N \l__enumext_store_active_bool }
+ {
+ \int_set:Nn \l__enumext_start_i_int
+ {
+ \int_use:c { g__enumext_resume_ \l__enumext_store_name_tl _int } + 1
+ }
+ }
+ \bool_lazy_and:nnT
+ { \bool_if_p:N \l__enumext_starred_first_bool }
+ { \bool_if_p:N \l__enumext_store_active_bool }
+ {
+ \int_set:Nn \l__enumext_start_vii_int
+ {
+ \int_use:c { g__enumext_resume_ \l__enumext_store_name_tl _int } + 1
+ }
+ }
+ }
+%% Internal function for |resume*| key.
+\cs_new_protected:Nn \__enumext_resume_starred:
+ {
+ \bool_if:NT \g__enumext_standar_bool
+ {
+ \tl_if_empty:NF \g__enumext_standar_series_tl
+ {
+ \__enumext_resume_counter:n { }
+ \keys_set:nV { enumext / level-1 } \g__enumext_standar_series_tl
+ }
+ }
+ \bool_if:NT \g__enumext_starred_bool
+ {
+ \tl_if_empty:NF \g__enumext_starred_series_tl
+ {
+ \__enumext_resume_counter:n { }
+ \keys_set:nV { enumext / enumext* } \g__enumext_starred_series_tl
+ }
+ }
+ }
+%% Add |save-ans| key only on first level off |enumext| and |enumext*|.
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ save-ans .code:n = \__enumext_storing_set:n {##1},
+ save-ans .value_required:n = true,
+ }
+ }
+\clist_map_inline:nn { level-1, enumext* } { \__enumext_tmp:n {#1} }
+%% Print/write start and stop environment with |save-ans| key active.
+\cs_new_protected:Nn \__enumext_start_save_ans_msg:
+ {
+ \msg_term:nnVV { enumext } { save-ans-log }
+ \g__enumext_envir_name_tl \l__enumext_store_name_tl
+ }
+\cs_new_protected:Nn \__enumext_stop_save_ans_msg:
+ {
+ \msg_term:nnVV { enumext } { save-ans-log-hook }
+ \g__enumext_envir_name_tl \g__enumext_store_name_tl
+ }
+%% Function to activate ALL "storing" (and |check-ans|, |no-store|, |resume|, |anskey*|) used by |save-ans| key.
+\cs_new_protected:Npn \__enumext_storing_set:n #1
+ {
+ \tl_set:Ne \l__enumext_store_name_tl {#1}
+ \tl_if_empty:NTF \l__enumext_store_name_tl
+ {
+ \bool_lazy_or:nnT
+ { \l__enumext_standar_first_bool } { \l__enumext_starred_first_bool }
+ {
+ \msg_error:nnV { enumext } { save-ans-empty } \g__enumext_envir_name_tl
+ }
+ }
+ {
+ \bool_lazy_or:nnT
+ { \l__enumext_standar_first_bool } { \l__enumext_starred_first_bool }
+ {
+ \__enumext_start_save_ans_msg:
+ \__enumext_storing_exec:
+ }
+ }
+ }
+\cs_new_protected:Nn \__enumext_storing_exec:
+ {
+ \bool_set_true:N \l__enumext_store_active_bool
+ \bool_set_true:N \l__enumext_check_answers_bool
+ \tl_gset:NV \g__enumext_store_name_tl \l__enumext_store_name_tl
+ \__enumext_anskey_env_make:V \l__enumext_store_name_tl
+ \prop_if_exist:cF { g__enumext_ \l__enumext_store_name_tl _prop }
+ {
+ \msg_log:nnV { enumext } { store-prop } \l__enumext_store_name_tl
+ \prop_new:c { g__enumext_ \l__enumext_store_name_tl _prop }
+ }
+ \seq_if_exist:cF { g__enumext_ \l__enumext_store_name_tl _seq }
+ {
+ \msg_log:nnV { enumext } { store-seq } \l__enumext_store_name_tl
+ \seq_new:c { g__enumext_ \l__enumext_store_name_tl _seq }
+ }
+ \int_if_exist:cF { g__enumext_resume_ \l__enumext_store_name_tl _int }
+ {
+ \msg_log:nnV { enumext } { store-int } \l__enumext_store_name_tl
+ \int_new:c { g__enumext_resume_ \l__enumext_store_name_tl _int }
+ }
+ }
+%% Add |check-ans| and |no-store| keys.
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ check-ans .bool_set:N = \l__enumext_check_ans_key_bool,
+ check-ans .initial:n = false,
+ check-ans .value_required:n = true,
+ no-store .code:n = {
+ \bool_set_false:N \l__enumext_check_answers_bool
+ \bool_set_false:N \l__enumext_check_ans_key_bool
+ },
+ no-store .value_forbidden:n = true,
+ }
+ }
+\clist_map_inline:nn
+ {
+ level-1, level-2, level-3, level-4, enumext*
+ }
+ { \__enumext_tmp:n {#1} }
+%% Internal function for checking answer mechanism in |enumext| and |enumext*| environments.
+\cs_new_protected:Nn \__enumext_check_ans_active:
+ {
+ \tl_if_empty:NF \l__enumext_store_name_tl
+ {
+ \bool_if:NT \l__enumext_check_answers_bool
+ {
+ \__enumext_check_ans_level:
+ }
+ }
+ }
+%% Decrementing \g_@@_item_number_int for nested level.
+\cs_new_protected:Nn \__enumext_check_ans_level:
+ {
+ \int_case:nn { \l__enumext_level_int }
+ {
+ { 1 }{
+ \bool_lazy_all:nT
+ {
+ { \bool_if_p:N \g__enumext_starred_bool }
+ { \int_compare_p:nNn { \l__enumext_level_h_int } = { 1 } }
+ }
+ {
+ \int_gdecr:N \g__enumext_item_number_int
+ \bool_set_false:N \l__enumext_item_number_bool
+ }
+ }
+ { 2 }{
+ \int_gdecr:N \g__enumext_item_number_int
+ \bool_set_false:N \l__enumext_item_number_bool
+ }
+ { 3 }{
+ \int_gdecr:N \g__enumext_item_number_int
+ \bool_set_false:N \l__enumext_item_number_bool
+ }
+ { 4 }{
+ \int_gdecr:N \g__enumext_item_number_int
+ \bool_set_false:N \l__enumext_item_number_bool
+ }
+ }
+ \int_case:nn { \l__enumext_level_h_int }
+ {
+ { 1 }{
+ \bool_lazy_all:nT
+ {
+ { \bool_if_p:N \g__enumext_standar_bool }
+ { \int_compare_p:nNn { \l__enumext_level_int } = { 1 } }
+ }
+ {
+ \int_gdecr:N \g__enumext_item_number_int
+ \bool_set_false:N \l__enumext_item_number_bool
+ }
+ }
+ }
+ }
+%% Function to export \l_@@_check_ans_key_bool for |check-ans| key.
+\cs_new_protected:Nn \__enumext_check_ans_key_hook:
+ {
+ \bool_lazy_and:nnT
+ { \bool_if_p:N \l__enumext_check_ans_key_bool }
+ { \bool_if_p:N \g__enumext_standar_bool }
+ {
+ \bool_gset_true:N \g__enumext_check_ans_key_bool
+ }
+ \bool_lazy_and:nnT
+ { \bool_if_p:N \l__enumext_check_ans_key_bool }
+ { \bool_if_p:N \g__enumext_starred_bool }
+ {
+ \bool_gset_true:N \g__enumext_check_ans_key_bool
+ }
+ }
+%% Set \g_@@_item_answer_diff_int for |check-ans| key and internal.
+\cs_new_protected:Nn \__enumext_item_answer_diff:
+ {
+ \int_gset:Nn \g__enumext_item_answer_diff_int
+ {
+ \int_sign:n { \g__enumext_item_number_int - \g__enumext_item_anskey_int }
+ }
+ }
+%% Function to print |check-ans| key.
+\cs_new_protected:Nn \__enumext_check_ans_show:
+ {
+ \int_case:nn { \g__enumext_item_answer_diff_int }
+ {
+ { -1 }{ \__enumext_check_ans_msg_less: }
+ { 0 }{ \__enumext_check_ans_msg_same_ok: }
+ { 1 }{ \__enumext_check_ans_msg_greater: }
+ }
+ }
+\cs_new_protected:Nn \__enumext_check_ans_msg_less:
+ {
+ \msg_warning:nneee { enumext } { item-less-answer } { \g__enumext_store_name_tl }
+ { \g__enumext_envir_name_tl } { \g__enumext_start_line_tl }
+ }
+\cs_new_protected:Nn \__enumext_check_ans_msg_same_ok:
+ {
+ \msg_term:nneee { enumext } { items-same-answer } { \g__enumext_store_name_tl }
+ { \g__enumext_envir_name_tl } { \g__enumext_start_line_tl }
+ }
+\cs_new_protected:Nn \__enumext_check_ans_msg_greater:
+ {
+ \msg_warning:nneee { enumext } { item-greater-answer } { \g__enumext_store_name_tl }
+ { \g__enumext_envir_name_tl } { \g__enumext_start_line_tl }
+ }
+%% Function to log check-answer mechanisms.
+\cs_new_protected:Nn \__enumext_check_ans_log:
+ {
+ \int_case:nn { \g__enumext_item_answer_diff_int }
+ {
+ { -1 }{ \__enumext_check_ans_log_msg_less: }
+ { 0 }{ \__enumext_check_ans_log_msg_same_ok: }
+ { 1 }{ \__enumext_check_ans_log_msg_greater: }
+ }
+ }
+\cs_new_protected:Nn \__enumext_check_ans_log_msg_less:
+ {
+ \msg_log:nneee { enumext } { item-less-answer } { \g__enumext_store_name_tl }
+ { \g__enumext_envir_name_tl } { \g__enumext_start_line_tl }
+ }
+\cs_new_protected:Nn \__enumext_check_ans_log_msg_same_ok:
+ {
+ \msg_log:nneee { enumext } { items-same-answer } { \g__enumext_store_name_tl }
+ { \g__enumext_envir_name_tl } { \g__enumext_start_line_tl }
+ }
+\cs_new_protected:Nn \__enumext_check_ans_log_msg_greater:
+ {
+ \msg_log:nneee { enumext } { item-greater-answer } { \g__enumext_store_name_tl }
+ { \g__enumext_envir_name_tl } { \g__enumext_start_line_tl }
+ }
+%% Function for check |\item*| and |\anspic*| commands.
+\cs_new_protected:Npn \__enumext_check_starred_cmd:n #1
+ {
+ \int_compare:nNnT
+ { \g__enumext_check_starred_cmd_int } = { 0 }
+ {
+ \msg_warning:nnnV
+ { enumext } { missing-starred }{ #1 } \l__enumext_check_start_line_env_tl
+ }
+ \int_compare:nNnT
+ { \g__enumext_check_starred_cmd_int } > { 1 }
+ {
+ \msg_warning:nnnV
+ { enumext } { many-starred }{ #1 } \l__enumext_check_start_line_env_tl
+ }
+ \int_gzero:N \g__enumext_check_starred_cmd_int
+ \tl_clear:N \l__enumext_check_start_line_env_tl
+ }
+%% Add the keys for marks style and show for |keyans| and |keyans*| environments.
+\cs_set_protected:Npn \__enumext_tmp:nn #1 #2
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ mark-ans* .tl_set:c = { l__enumext_mark_answer_sym_#2_tl },
+ mark-ans* .initial:n = \textasteriskcentered,
+ mark-ans* .value_required:n = true,
+ mark-pos* .choice:,
+ mark-pos* / left .code:n = \str_set:cn { l__enumext_mark_position_#2_str } { l },
+ mark-pos* / right .code:n = \str_set:cn { l__enumext_mark_position_#2_str } { r },
+ mark-pos* / center .code:n = \str_set:cn { l__enumext_mark_position_#2_str } { c },
+ mark-pos* / unknown .code:n =
+ \msg_error:nneee { enumext } { unknown-choice }
+ { mark-pos } { left, ~ right, ~ center } { \exp_not:n {##1} },
+ mark-pos* .initial:n = right,
+ mark-pos* .value_required:n = true,
+ mark-sep* .dim_set:c = { l__enumext_mark_sym_sep_#2_dim },
+ mark-sep* .value_required:n = true,
+ wrap-ans* .cs_set_protected:cp = { __enumext_keyans_wrapper_item_#2:n } ##1,
+ wrap-ans* .value_required:n = true,
+ wrap-opt .cs_set_protected:cp = { __enumext_keyans_wrapper_opt_#2:n } ##1,
+ wrap-opt .initial:n = [{##1}],
+ wrap-opt .value_required:n = true,
+ save-sep .tl_set:c = { l__enumext_store_keyans_item_opt_sep_#2_tl },
+ save-sep .initial:n = {, ~ },
+ save-sep .value_required:n = true,
+ show-ans .bool_set:N = \l__enumext_show_answer_bool,
+ show-ans .initial:n = false,
+ show-ans .value_required:n = true,
+ show-pos .bool_set:N = \l__enumext_show_position_bool,
+ show-pos .initial:n = false,
+ show-pos .value_required:n = true,
+ }
+ }
+\clist_map_inline:nn { {keyans}{v}, {keyans*}{viii} } { \__enumext_tmp:nn #1 }
+%% Add keys associated with mark and internal label/ref on first level of |enumext| and |enumext*| environments.
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ mark-ref .tl_set:N = \l__enumext_mark_ref_sym_tl,
+ mark-ref .initial:n = \textreferencemark,
+ mark-ref .value_required:n = true,
+ save-ref .bool_set:N = \l__enumext_store_ref_key_bool,
+ save-ref .initial:n = false,
+ save-ref .value_required:n = true,
+ show-ans .bool_set:N = \l__enumext_show_answer_bool,
+ show-ans .initial:n = false,
+ show-ans .value_required:n = true,
+ show-pos .bool_set:N = \l__enumext_show_position_bool,
+ show-pos .initial:n = false,
+ show-pos .value_required:n = true,
+ mark-ans .tl_set:N = \l__enumext_mark_answer_sym_tl,
+ mark-ans .initial:n = \textasteriskcentered,
+ mark-ans .value_required:n = true,
+ mark-sep .dim_set:N = \l__enumext_mark_sym_sep_dim,
+ mark-sep .value_required:n = true,
+ mark-pos .choice:,
+ mark-pos / left .code:n = \str_set:Nn \l__enumext_mark_position_str { l },
+ mark-pos / right .code:n = \str_set:Nn \l__enumext_mark_position_str { r },
+ mark-pos / center .code:n = \str_set:Nn \l__enumext_mark_position_str { c },
+ mark-pos / unknown .code:n =
+ \msg_error:nneee { enumext } { unknown-choice }
+ { mark-pos } { left, ~ right, ~ center } { \exp_not:n {##1} },
+ mark-pos .initial:n = right,
+ mark-pos .value_required:n = true,
+
+ wrap-ans .cs_set_protected:Np = \__enumext_anskey_wrapper:n ##1,
+ wrap-ans .initial:n =
+ {
+ \fbox{\parbox[t]{\dimeval{\itemwidth -2\fboxsep -2\fboxrule}}{##1}}
+ },
+ wrap-ans .value_required:n = true,
+ mark-ans* .code:n = {
+ \keys_set:nn { enumext / keyans } { mark-ans* = {##1} }
+ \keys_set:nn { enumext / keyans* } { mark-ans* = {##1} }
+ },
+ mark-ans* .value_required:n = true,
+ mark-pos* .code:n = {
+ \keys_set:nn { enumext / keyans } { mark-pos* = {##1} }
+ \keys_set:nn { enumext / keyans* } { mark-pos* = {##1} }
+ },
+ mark-pos* .value_required:n = true,
+ mark-sep* .code:n = {
+ \keys_set:nn { enumext / keyans } { mark-sep* = {##1} }
+ \keys_set:nn { enumext / keyans* } { mark-sep* = {##1} }
+ },
+ mark-sep* .value_required:n = true,
+ wrap-ans* .code:n = {
+ \keys_set:nn { enumext / keyans } { wrap-ans* = {##1} }
+ \keys_set:nn { enumext / keyans* } { wrap-ans* = {##1} }
+ },
+ wrap-ans* .value_required:n = true,
+ wrap-opt .code:n = {
+ \keys_set:nn { enumext / keyans } { wrap-opt = {##1} }
+ \keys_set:nn { enumext / keyans* } { wrap-opt = {##1} }
+ },
+ wrap-opt .value_required:n = true,
+ save-sep .code:n = {
+ \keys_set:nn { enumext / keyans } { save-sep = {##1} }
+ \keys_set:nn { enumext / keyans* } { save-sep = {##1} }
+ },
+ save-sep .value_required:n = true,
+ }
+ }
+\clist_map_inline:nn { level-1, enumext* } { \__enumext_tmp:n {#1} }
+%% Internal function for store optional arguments of the environments in seq.
+\cs_new_protected:Npn \__enumext_store_active_keys:n #1
+ {
+ \bool_if:cF { l__enumext_store_save_key_ \__enumext_level: _bool }
+ {
+ \tl_clear:c { l__enumext_save_key_ \__enumext_level: _tl }
+ \tl_set:ce
+ { l__enumext_store_save_key_ \__enumext_level: _tl }
+ { \__enumext_filter_save_key:n {#1} }
+ }
+ }
+\cs_new_protected:Npn \__enumext_store_active_keys_vii:n #1
+ {
+ \bool_if:NF \l__enumext_store_save_key_vii_bool
+ {
+ \tl_clear:N \l__enumext_store_save_key_vii_tl
+ \tl_set:Ne \l__enumext_store_save_key_vii_tl { \__enumext_filter_save_key:n {#1} }
+ }
+ }
+%% Add |save-key| key for |enumext| and |enumext*| environments.
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \keys_define:nn { enumext / enumext* }
+ {
+ save-key .code:n = \__enumext_parse_save_key_vii:n {##1},
+ save-key .value_required:n = true,
+ }
+ \keys_define:nn { enumext / #1 }
+ {
+ save-key .code:n = \__enumext_parse_save_key:n {##1},
+ save-key .value_required:n = true,
+ }
+ }
+\clist_map_inline:nn { level-1, level-2, level-3, level-4 } { \__enumext_tmp:n {#1} }
+%% Internal function for |save-key| key.
+\cs_new_protected:Npn \__enumext_parse_save_key:n #1
+ {
+ \bool_set_true:c { l__enumext_store_save_key_ \__enumext_level: _bool }
+ \tl_clear:c { l__enumext_save_key_ \__enumext_level: _tl }
+ \tl_set:ce
+ { l__enumext_store_save_key_ \__enumext_level: _tl }
+ { \__enumext_filter_save_key:n {#1} }
+ }
+\cs_new_protected:Npn \__enumext_parse_save_key_vii:n #1
+ {
+ \bool_set_true:N \l__enumext_store_save_key_vii_bool
+ \tl_clear:N \l__enumext_store_save_key_vii_tl
+ \tl_set:Ne \l__enumext_store_save_key_vii_tl { \__enumext_filter_save_key:n {#1} }
+ }
+%% Internal function for "filter keys" for |save-key| key.
+\cs_new:Npn \__enumext_filter_save_key:n #1
+ {
+ \use:e
+ {
+ \keyval_parse:NNn
+ \__enumext_filter_save_key_key:n
+ \__enumext_filter_save_key_pair:nn {#1}
+ }
+ }
+\cs_new:Npn \__enumext_filter_save_key_key:n #1
+ {
+ \str_case:nnF {#1}
+ {
+ { resume } {} { resume* } {} { no-store } {} { base-fix } {}
+ }
+ { , { \exp_not:n {#1} } }
+ }
+\cs_new:Npn \__enumext_filter_save_key_pair:nn #1#2
+ {
+ \str_case:nnF {#1}
+ {
+ { series } {} { resume } {} { save-ans } {} { save-ref } {}
+ { save-key } {} { check-ans } {} { show-ans } {} { show-pos } {}
+ { mark-ans } {} { mark-pos } {} { mark-sep } {} { wrap-ans } {}
+ { mark-ans* } {} { mark-pos* } {} { mark-sep* } {} { wrap-ans* } {}
+ { wrap-opt } {} { save-sep } {} { mark-ref } {} { mini-env } {}
+ { mini-sep } {} { mini-right } {} { mini-right* } {}
+ }
+ { , { \exp_not:n {#1} } = { \exp_not:n {#2} } }
+ }
+%% Function for store content to prop list.
+\cs_new_protected:Npn \__enumext_store_addto_prop:n #1
+ {
+ \prop_gput_if_not_in:cen { g__enumext_ \l__enumext_store_name_tl _prop }
+ {
+ \int_eval:n { \prop_count:c { g__enumext_ \l__enumext_store_name_tl _prop } + 1 }
+ }
+ { #1 }
+ }
+\cs_generate_variant:Nn \__enumext_store_addto_prop:n { V }
+%% Function for store content to sequence.
+\cs_new_protected:Npn \__enumext_store_addto_seq:n #1
+ {
+ \seq_gput_right:cn { g__enumext_ \l__enumext_store_name_tl _seq } { #1 }
+ }
+\cs_generate_variant:Nn \__enumext_store_addto_seq:n { v, V }
+%% Function for storing structure level execution of |\anskey| on |enumext| environment.
+\cs_new_protected:Nn \__enumext_store_level_open:
+ {
+ \bool_if:NT \l__enumext_check_answers_bool
+ {
+ \tl_if_empty:cTF { l__enumext_store_save_key_ \__enumext_level: _tl }
+ {
+ \__enumext_store_addto_seq:n
+ {
+ \item \begin{enumext}
+ }
+ }
+ {
+ \tl_put_left:cn { l__enumext_store_save_key_ \__enumext_level: _tl }
+ {
+ \item \begin{enumext} [
+ }
+ \tl_put_right:cn { l__enumext_store_save_key_ \__enumext_level: _tl }
+ {
+ ]
+ }
+ \__enumext_store_addto_seq:v { l__enumext_store_save_key_ \__enumext_level: _tl }
+ }
+ }
+ }
+\cs_new_protected:Nn \__enumext_store_level_close:
+ {
+ \bool_if:NT \l__enumext_check_answers_bool
+ {
+ \__enumext_store_addto_seq:n { \end{enumext} }
+ }
+ }
+%% Function storing structure level execution of |\anskey| and |anskey*| on |enumext*| environment.
+\cs_new_protected:Nn \__enumext_store_level_open_vii:
+ {
+ \bool_if:NT \l__enumext_check_answers_bool
+ {
+ \tl_if_empty:NTF \l__enumext_store_save_key_vii_tl
+ {
+ \__enumext_store_addto_seq:n
+ {
+ \item \begin{enumext*}
+ }
+ }
+ {
+ \tl_put_left:Nn \l__enumext_store_save_key_vii_tl
+ {
+ \item \begin{enumext*}[
+ }
+ \tl_put_right:Nn \l__enumext_store_save_key_vii_tl
+ {
+ ]
+ }
+ \__enumext_store_addto_seq:V \l__enumext_store_save_key_vii_tl
+ }
+ }
+ }
+\cs_new_protected:Nn \__enumext_store_level_close_vii:
+ {
+ \bool_if:NT \l__enumext_check_answers_bool
+ {
+ \__enumext_store_addto_seq:n { \end{enumext*} }
+ }
+ }
+%% Function for put content in box on left margin.
+\cs_new_protected:Nn \__enumext_print_keyans_box:NN
+ {
+ \mode_leave_vertical:
+ \skip_horizontal:n { -\dim_use:N #2 }
+ \hbox_overlap_left:n
+ {
+ \makebox[ \dim_use:N #1 ][ \l__enumext_mark_position_str ]
+ {
+ \tl_use:N \l__enumext_mark_answer_sym_tl
+ }
+ }
+ \skip_horizontal:n { \dim_use:N #2 }
+ }
+\cs_generate_variant:Nn \__enumext_print_keyans_box:NN { cc }
+%% Internal label and ref function for |\anskey| and |anskey*|.
+\cs_new_protected:Nn \__enumext_store_internal_ref:
+ {
+ \cs_set_protected:Npn \__enumext_tmp:n ##1
+ {
+ \tl_set_eq:cc { l__enumext_label_copy_##1_tl } { l__enumext_label_##1_tl }
+ \tl_reverse:c { l__enumext_label_copy_##1_tl }
+ \tl_remove_once:cn { l__enumext_label_copy_##1_tl } { . }
+ \tl_reverse:c { l__enumext_label_copy_##1_tl }
+ }
+ \clist_map_inline:nn { i, ii, iii, iv, vii } { \__enumext_tmp:n {##1} }
+ \cs_set:Npn \__enumext_tmp:n ##1
+ { . \tl_use:c { l__enumext_label_copy_ \int_to_roman:n {##1} _tl } }
+ \bool_lazy_all:nT
+ {
+ { \bool_if_p:N \g__enumext_starred_bool }
+ { \int_compare_p:nNn { \l__enumext_level_int } = { 0 } }
+ }
+ {
+ \tl_put_right:Ne \l__enumext_newlabel_arg_two_tl
+ { \tl_use:N \l__enumext_label_copy_vii_tl }
+ }
+ \bool_lazy_all:nT
+ {
+ { \bool_not_p:n { \g__enumext_standar_bool } }
+ { \bool_if_p:N \l__enumext_standar_bool }
+ { \int_compare_p:nNn { \l__enumext_level_int } > { 0 } }
+ }
+ {
+ \tl_put_right:Ne \l__enumext_newlabel_arg_two_tl
+ {
+ \tl_use:N \l__enumext_label_copy_vii_tl
+ \int_step_function:nnN { 1 } { \l__enumext_level_int } \__enumext_tmp:n
+ }
+ }
+ \bool_lazy_all:nT
+ {
+ { \bool_if_p:N \g__enumext_standar_bool }
+ { \int_compare_p:nNn { \l__enumext_level_int } > { 0 } }
+ { \int_compare_p:nNn { \l__enumext_level_h_int } = { 0 } }
+ }
+ {
+ \tl_put_right:Ne \l__enumext_newlabel_arg_two_tl
+ {
+ \tl_use:N \l__enumext_label_copy_i_tl
+ \int_step_function:nnN { 2 } { \l__enumext_level_int } \__enumext_tmp:n
+ }
+ }
+ \cs_set:Npn \__enumext_tmp:n ##1
+ { \tl_use:c { l__enumext_label_copy_ \int_to_roman:n {##1} _tl } . }
+ \bool_lazy_all:nT
+ {
+ { \bool_if_p:N \g__enumext_standar_bool }
+ { \bool_if_p:N \l__enumext_starred_bool }
+ { \int_compare_p:nNn { \l__enumext_level_int } > { 0 } }
+ }
+ {
+ \tl_put_right:Ne \l__enumext_newlabel_arg_two_tl
+ {
+ \int_step_function:nnN { 1 } { \l__enumext_level_int } \__enumext_tmp:n
+ \tl_use:N \l__enumext_label_copy_vii_tl
+ }
+ }
+ \tl_put_right:Ne \l__enumext_newlabel_arg_one_tl
+ {
+ \l__enumext_store_name_tl \c_colon_str
+ \int_eval:n { \prop_count:c { g__enumext_ \l__enumext_store_name_tl _prop } }
+ }
+ \tl_put_right:Ne \l__enumext_write_aux_file_tl
+ {
+ \__enumext_newlabel:nn
+ { \exp_not:V \l__enumext_newlabel_arg_one_tl }
+ { \l__enumext_newlabel_arg_two_tl }
+ }
+ \l__enumext_write_aux_file_tl
+ }
+%% Internal function of |\anskey| for store content.
+\cs_new_protected:Npn \__enumext_store_anskey_code:n #1
+ {
+ \int_gincr:N \g__enumext_item_anskey_int
+ \__enumext_store_addto_prop:n {#1}
+ \bool_if:NT \l__enumext_store_ref_key_bool
+ {
+ \__enumext_store_internal_ref:
+ }
+ \__enumext_anskey_show_wrap_left:n { #1 }
+ \tl_clear:N \l__enumext_store_anskey_arg_tl
+ \bool_lazy_and:nnT
+ { \bool_if_p:N \l__enumext_store_columns_break_bool }
+ { \bool_not_p:n { \l__enumext_starred_bool } }
+ {
+ \tl_put_left:Nn \l__enumext_store_anskey_arg_tl { \columnbreak }
+ }
+ \tl_put_right:Nn \l__enumext_store_anskey_arg_tl { \item }
+ \bool_lazy_and:nnT
+ { \bool_not_p:n { \l__enumext_starred_bool } }
+ { \int_compare_p:nNn { \l__enumext_store_item_join_int } > { 1 } }
+ {
+ \tl_put_right:Ne \l__enumext_store_anskey_arg_tl
+ {
+ ( \exp_not:V \l__enumext_store_item_join_int )
+ }
+ }
+ \bool_if:NTF \l__enumext_store_item_star_bool
+ {
+ \tl_put_right:Nn \l__enumext_store_anskey_arg_tl { * }
+ \tl_if_empty:NF \l__enumext_store_item_symbol_tl
+ {
+ \tl_put_right:Ne \l__enumext_store_anskey_arg_tl
+ {
+ [ \exp_not:V \l__enumext_store_item_symbol_tl ]
+ }
+ }
+ \dim_compare:nT
+ {
+ \l__enumext_store_item_symbol_sep_dim != \c_zero_dim
+ }
+ {
+ \tl_put_right:Ne \l__enumext_store_anskey_arg_tl
+ {
+ [ \exp_not:V \l__enumext_store_item_symbol_sep_dim ]
+ }
+ }
+ \tl_put_right:Nn \l__enumext_store_anskey_arg_tl {#1}
+ }
+ {
+ \tl_put_right:Nn \l__enumext_store_anskey_arg_tl {#1}
+ }
+ \bool_lazy_and:nnT
+ { \bool_if_p:N \l__enumext_store_ref_key_bool }
+ { \bool_if_p:N \l__enumext_hyperref_bool }
+ {
+ \tl_put_right:Ne \l__enumext_store_anskey_arg_tl
+ {
+ \hfill \exp_not:N \hyperlink { \exp_not:V \l__enumext_newlabel_arg_one_tl }
+ { \exp_not:V \l__enumext_mark_ref_sym_tl }
+ }
+ }
+ \__enumext_store_addto_seq:V \l__enumext_store_anskey_arg_tl
+ }
+%% Internal |wrap-ans| implementation for |\anskey| and |anskey*|.
+\cs_new_protected:Npn \__enumext_anskey_show_wrap_arg:n #1
+ {
+ \par
+ \bool_if:NTF \l__enumext_starred_bool
+ {
+ \dim_compare:nNnT { \l__enumext_mark_sym_sep_dim } = { \c_zero_dim }
+ {
+ \dim_set:Nn \l__enumext_mark_sym_sep_dim { \l__enumext_labelsep_vii_dim }
+ }
+ \__enumext_print_keyans_box:NN
+ \l__enumext_labelwidth_vii_dim \l__enumext_mark_sym_sep_dim
+ }
+ {
+ \dim_compare:nNnT { \l__enumext_mark_sym_sep_dim } = { \c_zero_dim }
+ {
+ \dim_set:Nn \l__enumext_mark_sym_sep_dim
+ {
+ \dim_use:c {l__enumext_labelsep_ \__enumext_level: _dim }
+ }
+ }
+ \__enumext_print_keyans_box:cc
+ { l__enumext_labelwidth_ \__enumext_level: _dim } { l__enumext_mark_sym_sep_dim }
+ }
+ \__enumext_anskey_wrapper:n { #1 }
+ }
+%% Internal |show-ans| and |show-pos| implementation for |\anskey| and |anskey*|.
+\cs_new_protected:Npn \__enumext_anskey_show_wrap_left:n #1
+ {
+ \bool_if:NT \l__enumext_show_answer_bool
+ {
+ \__enumext_anskey_show_wrap_arg:n { #1 }
+ }
+ \bool_if:NT \l__enumext_show_position_bool
+ {
+ \tl_set:Ne \l__enumext_mark_answer_sym_tl
+ {
+ \group_begin:
+ \exp_not:N \normalfont
+ \exp_not:N \footnotesize [ \int_eval:n
+ {
+ \prop_count:c { g__enumext_ \l__enumext_store_name_tl _prop }
+ }
+ ]
+ \group_end:
+ }
+ \__enumext_anskey_show_wrap_arg:n { #1 }
+ }
+ }
+%% Add |key=val| for |\anskey|.
+\keys_define:nn { enumext / anskey }
+ {
+ break-col .bool_set:N = \l__enumext_store_columns_break_bool,
+ break-col .default:n = true,
+ break-col .value_forbidden:n = true,
+ item-join .int_set:N = \l__enumext_store_item_join_int,
+ item-join .value_required:n = true,
+ item-star .bool_set:N = \l__enumext_store_item_star_bool,
+ item-star .default:n = true,
+ item-star .value_forbidden:n = true,
+ item-sym* .tl_set:N = \l__enumext_store_item_symbol_tl,
+ item-sym* .value_required:n = true,
+ item-pos* .dim_set:N = \l__enumext_store_item_symbol_sep_dim,
+ item-pos* .value_required:n = true,
+ unknown .code:n = { \__enumext_anskey_unknown:n {#1} },
+ }
+\cs_new_protected:Npn \__enumext_anskey_unknown:n #1
+ {
+ \exp_args:NV \__enumext_anskey_unknown:nn \l_keys_key_str {#1}
+ }
+\cs_new_protected:Npn \__enumext_anskey_unknown:nn #1 #2
+ {
+ \tl_if_blank:nTF {#2}
+ {
+ \msg_error:nnn { enumext } { anskey-cmd-key-unknown } {#1}
+ }
+ {
+ \msg_error:nnnn { enumext } { anskey-cmd-key-value-unknown } {#1} {#2}
+ }
+ }
+%% Define the user command |\anskey|.
+\NewDocumentCommand \anskey { o +m }
+ {
+ \__enumext_anskey_safe_outer:
+ \group_begin:
+ \bool_if:NT \l__enumext_check_answers_bool
+ {
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { enumext / anskey } {#1}
+ }
+ \tl_if_blank:nTF {#2}
+ {
+ \msg_error:nn { enumext } { anskey-empty-arg }
+ }
+ {
+ \__enumext_anskey_safe_inner:
+ \__enumext_store_anskey_code:n {#2}
+ }
+ }
+ \group_end:
+ }
+%% Internal function for msg when |\anskey| is outer.
+\cs_new_protected:Nn \__enumext_anskey_safe_outer:
+ {
+ \bool_if:NF \l__enumext_store_active_bool
+ {
+ \msg_error:nnnn { enumext } { anskey-wrong-place }{ anskey }{ enumext }
+ }
+ \int_compare:nNnT { \l__enumext_keyans_level_int } = { 1 }
+ {
+ \msg_error:nnnn { enumext } { command-wrong-place }{ anskey }{ keyans }
+ }
+ \int_compare:nNnT { \l__enumext_keyans_level_h_int } = { 1 }
+ {
+ \msg_error:nnnn { enumext } { command-wrong-place }{ anskey }{ keyans* }
+ }
+ \int_compare:nNnT { \l__enumext_keyans_pic_level_int } = { 1 }
+ {
+ \msg_error:nnnn { enumext } { command-wrong-place }{ anskey }{ keyanspic }
+ }
+ }
+%% Internal function for msg when |\anskey| is inner, math-mode or arg is empty.
+\cs_new_protected:Nn \__enumext_anskey_safe_inner:
+ {
+ \int_incr:N \l__enumext_anskey_level_int
+ \int_compare:nNnT { \l__enumext_anskey_level_int } > { 1 }
+ {
+ \msg_error:nn { enumext } { anskey-nested }
+ }
+ \bool_if:NF \l__enumext_item_number_bool
+ {
+ \msg_error:nn { enumext } { anskey-unnumber-item }
+ }
+ \mode_if_math:T
+ {
+ \msg_error:nne { enumext } { anskey-math-mode } { \c_backslash_str anskey }
+ }
+ }
+\cs_new_protected:Nn \__enumext_undefine_anskey_env:
+ {
+ \cs_undefine:c { anskey* }
+ \cs_undefine:c { endanskey* }
+ \cs_undefine:c { __scontents_anskey*_env_begin: }
+ \cs_undefine:c { __scontents_anskey*_env_end: }
+ }
+%% Hooks for |anskey*| environment out off |enumext| and |enumext*| environments.
+\__enumext_before_env:nn { enumext }
+ {
+ \bool_lazy_and:nnT
+ { \int_compare_p:nNn { \l__enumext_level_int } = { 0 } }
+ { \int_compare_p:nNn { \l__enumext_level_h_int } = { 0 } }
+ {
+ \cs_if_free:cF { __scontents_anskey*_env_begin: }
+ {
+ \msg_error:nnn { enumext } { anskey-env-error } { anskey* }
+ }
+ }
+ }
+\__enumext_before_env:nn { enumext* }
+ {
+ \bool_lazy_and:nnT
+ { \int_compare_p:nNn { \l__enumext_level_int } = { 0 } }
+ { \int_compare_p:nNn { \l__enumext_level_h_int } = { 0 } }
+ {
+ \cs_if_free:cF { __scontents_anskey*_env_begin: }
+ {
+ \msg_error:nnn { enumext } { anskey-env-error } { anskey* }
+ }
+ }
+ }
+%% Hooks for |anskey*| inside the |keyans|, |keyans*| and |keyanspic| environments, math-mode and not number |\item|.
+\__enumext_before_env:nn { anskey* }
+ {
+ \int_compare:nNnT { \l__enumext_keyans_level_int } = { 1 }
+ {
+ \msg_error:nnn { enumext } { anskey-env-wrong }{ keyans }
+ }
+ \int_compare:nNnT { \l__enumext_keyans_level_h_int } = { 1 }
+ {
+ \msg_error:nnn { enumext } { anskey-env-wrong } { keyans* }
+ }
+ \int_compare:nNnT { \l__enumext_keyans_pic_level_int } = { 1 }
+ {
+ \msg_error:nnn { enumext } { anskey-env-wrong } { keyanspic }
+ }
+ \bool_if:NF \l__enumext_item_number_bool
+ {
+ \msg_error:nn { enumext } { anskey-unnumber-item }
+ }
+ \mode_if_math:T
+ {
+ \msg_error:nnn { enumext } { anskey-math-mode } { anskey* }
+ }
+ }
+%% Function for define |anskey*| environment using scontents.
+\cs_new_protected:Npn \__enumext_anskey_env_make:n #1
+ {
+ \bool_if:NT \l__enumext_anskey_env_bool
+ {
+ \newenvsc{anskey*}[store-env=#1,print-env=false]
+ \__enumext_anskey_env_exec:
+ }
+ }
+\cs_generate_variant:Nn \__enumext_anskey_env_make:n { V }
+%% Define keys for |anskey*| environment using scontents PATH.
+\cs_new_protected:Nn \__enumext_anskey_env_define_keys:
+ {
+ \keys_define:nn { scontents / scontents }
+ {
+ break-col .bool_gset:N = \g__enumext_store_columns_break_bool,
+ break-col .default:n = true,
+ break-col .value_forbidden:n = true,
+ item-join .int_gset:N = \g__enumext_store_item_join_int,
+ item-join .value_required:n = true,
+ item-star .bool_gset:N = \g__enumext_store_item_star_bool,
+ item-star .default:n = true,
+ item-star .value_forbidden:n = true,
+ item-sym* .tl_gset:N = \g__enumext_store_item_symbol_tl,
+ item-sym* .value_required:n = true,
+ item-pos* .dim_gset:N = \g__enumext_store_item_symbol_sep_dim,
+ item-pos* .value_required:n = true,
+ print-env .undefine:,
+ store-env .undefine:,
+ write-out .undefine:,
+ unknown .code:n = { \__enumext_anskey_env_unknown:n {##1} },
+ }
+ }
+\cs_new_protected:Npn \__enumext_anskey_env_unknown:n #1
+ {
+ \exp_args:NV \__enumext_anskey_env_unknown:nn \l_keys_key_str {#1}
+ }
+\cs_new_protected:Npn \__enumext_anskey_env_unknown:nn #1#2
+ {
+ \tl_if_blank:nTF {#2}
+ {
+ \msg_error:nnn { enumext } { anskey-env-key-unknown } {#1}
+ }
+ {
+ \msg_error:nnnn { enumext } { anskey-env-key-value-unknown } {#1} {#2}
+ }
+ }
+%% Restore keys for |scontents| environment.
+\cs_new_protected:Nn \__enumext_anskey_env_reset_keys:
+ {
+ \keys_define:nn { scontents / scontents }
+ {
+ break-col .undefine:,
+ item-join .undefine:,
+ item-star .undefine:,
+ item-sym* .undefine:,
+ item-pos* .undefine:,
+ write-out .code:n = {
+ \bool_set_false:N \l__scontents_storing_bool
+ \bool_set_true:N \l__scontents_writing_bool
+ \tl_set:Nn \l__scontents_fname_out_tl {##1}
+ },
+ write-out .value_required:n = true,
+ print-env .meta:nn = { scontents } { print-env = ##1 },
+ print-env .default:n = true,
+ store-env .meta:nn = { scontents } { store-env = ##1 },
+ unknown .code:n = { \__scontents_parse_environment_keys:n {##1} },
+ }
+ }
+\cs_new_protected:Npn \__enumext_rescan_anskey_env:n #1
+ {
+ \group_begin:
+ \int_set:Nn \tex_newlinechar:D { `\^^J }
+ \__scontents_rescan_tokens:x
+ {
+ \endgroup % This assumes \catcode`\\=0... Things might go off otherwise.
+ #1
+ }
+ }
+%% Function for exec all code for |anskey*| environment.
+\cs_new_protected:Nn \__enumext_anskey_env_exec:
+ {
+ \__enumext_before_env:nn { anskey* }
+ {
+ \__enumext_anskey_env_define_keys:
+ }
+ \hook_if_empty:nF {env/anskey*/after}
+ {
+ \hook_gremove_code:nn {env/anskey*/after} { * }
+ }
+ \__enumext_after_env:nn { anskey* }
+ {
+ \__enumext_anskey_env_save_keys:
+ \tl_clear:N \l__enumext_store_anskey_env_tl
+ \tl_clear:N \l__enumext_store_anskey_opt_tl
+ \bool_if:NT \l__enumext_check_answers_bool
+ {
+ \tl_gset:Ne \l__enumext_store_anskey_env_tl
+ {
+ \seq_item:ce { g__scontents_name_ \l__enumext_store_name_tl _seq } { -1 }
+ }
+ \regex_match:nVTF
+ { ^\s* \z | ^\s* \u{c__scontents_hidden_space_str} \z }
+ \l__enumext_store_anskey_env_tl
+ {
+ \msg_error:nn { enumext } { anskey-empty-arg }
+ }
+ {
+ \__enumext_anskey_env_store:
+ }
+ }
+ \__enumext_anskey_env_clean_vars:
+ \__enumext_anskey_env_reset_keys:
+ }
+ }
+\cs_new_protected:Nn \__enumext_anskey_env_save_keys:
+ {
+ \bool_lazy_and:nnT
+ { \bool_if_p:N \g__enumext_store_columns_break_bool }
+ { \bool_not_p:n { \l__enumext_starred_bool } }
+ {
+ \tl_put_left:Ne \l__enumext_store_anskey_opt_tl { ,break-col, }
+ }
+ \bool_lazy_and:nnT
+ { \bool_not_p:n { \l__enumext_starred_bool } }
+ { \int_compare_p:nNn { \g__enumext_store_item_join_int } > { 1 } }
+ {
+ \tl_put_left::Ne \l__enumext_store_anskey_opt_tl
+ {
+ ,item-join = \exp_not:V \g__enumext_store_item_join_int,
+ }
+ }
+ \bool_if:NT \g__enumext_store_item_star_bool
+ {
+ \tl_put_left:Ne \l__enumext_store_anskey_opt_tl
+ {
+ ,item-star,
+ }
+ \tl_if_empty:NF \g__enumext_store_item_symbol_tl
+ {
+ \tl_put_left:Ne \l__enumext_store_anskey_opt_tl
+ {
+ ,item-sym* = \exp_not:V \g__enumext_store_item_symbol_tl,
+ }
+ }
+ \dim_compare:nT
+ {
+ \g__enumext_store_item_symbol_sep_dim != \c_zero_dim
+ }
+ {
+ \tl_put_left:Ne \l__enumext_store_anskey_opt_tl
+ {
+ ,item-pos* = \exp_not:V \g__enumext_store_item_symbol_sep_dim,
+ }
+ }
+ }
+ }
+\cs_new_protected:Nn \__enumext_anskey_env_store:
+ {
+ \group_begin:
+ \tl_if_empty:NTF \l__enumext_store_anskey_opt_tl
+ {
+ \exp_args:Ne
+ \__enumext_store_anskey_code:n
+ {
+ \__enumext_rescan_anskey_env:n { \l__enumext_store_anskey_env_tl }
+ }
+ }
+ {
+ \keys_set_known:nV { enumext / anskey } \l__enumext_store_anskey_opt_tl
+ \exp_args:Ne
+ \__enumext_store_anskey_code:n
+ {
+ \__enumext_rescan_anskey_env:n { \l__enumext_store_anskey_env_tl }
+ }
+ }
+ \group_end:
+ }
+\cs_new_protected:Nn \__enumext_anskey_env_clean_vars:
+ {
+ \bool_gset_false:N \g__enumext_store_columns_break_bool
+ \int_gzero:N \g__enumext_store_item_join_int
+ \bool_gset_false:N \g__enumext_store_item_star_bool
+ \tl_gclear:N \g__enumext_store_item_symbol_tl
+ \dim_gzero:N \g__enumext_store_item_symbol_sep_dim
+ }
+%% Function internal checking answer mechanism, clean vars and undefine |anskey*| environment.
+\cs_new_protected:Nn \__enumext_execute_after_env:
+ {
+ \int_compare:nNnT { \l__enumext_level_int } = { 0 }
+ {
+ \tl_if_empty:NF \g__enumext_store_name_tl
+ {
+ \__enumext_stop_save_ans_msg:
+ \__enumext_item_answer_diff:
+ \__enumext_log_global_vars:
+ \__enumext_log_answer_vars:
+ \bool_if:NTF \g__enumext_check_ans_key_bool
+ {
+ \__enumext_check_ans_show:
+ }
+ { \__enumext_check_ans_log: }
+ \__enumext_undefine_anskey_env:
+ }
+ \__enumext_reset_global_vars:
+ }
+ }
+%% Function for storing in prop list for |keyans| and |keyanspic| environments.
+\cs_new_protected:Npn \__enumext_keyans_addto_prop:n #1
+ {
+ \tl_clear:N \l__enumext_store_current_label_tl
+ \int_compare:nNnTF { \l__enumext_keyans_pic_level_int } = { 1 }
+ {
+ \tl_put_right:Ne \l__enumext_store_current_label_tl { \l__enumext_label_vi_tl }
+ }
+ {
+ \tl_put_right:Ne \l__enumext_store_current_label_tl { \l__enumext_label_v_tl }
+ }
+ \tl_if_novalue:nF { #1 }
+ {
+ \tl_if_empty:NF \l__enumext_store_keyans_item_opt_sep_v_tl
+ {
+ \tl_put_right:Ne \l__enumext_store_current_label_tl
+ {
+ \l__enumext_store_keyans_item_opt_sep_v_tl
+ }
+ }
+ \tl_put_right:Ne \l__enumext_store_current_label_tl { #1 }
+ }
+ \__enumext_store_addto_prop:V \l__enumext_store_current_label_tl
+ }
+%% Internal label and ref function for |keyans|, |keyans*| and |keyanspic| environments.
+\cs_new_protected:Nn \__enumext_keyans_store_ref:
+ {
+ \bool_if:NT \l__enumext_store_ref_key_bool
+ {
+ \cs_set_protected:Npn \__enumext_tmp:n ##1
+ {
+ \tl_set_eq:cc { l__enumext_label_copy_##1_tl } { l__enumext_label_##1_tl }
+ \tl_reverse:c { l__enumext_label_copy_##1_tl }
+ \tl_remove_once:cn { l__enumext_label_copy_##1_tl } { . }
+ \tl_reverse:c { l__enumext_label_copy_##1_tl }
+ }
+ \clist_map_inline:nn { i, v, vi, vii, viii } { \__enumext_tmp:n {##1} }
+ \__enumext_keyans_store_ref_aux_i:
+ }
+ }
+\cs_new_protected:Nn \__enumext_keyans_store_ref_aux_i:
+ {
+ \bool_if:NT \g__enumext_starred_bool
+ {
+ \tl_set_eq:NN \l__enumext_label_copy_i_tl \l__enumext_label_copy_vii_tl
+ }
+ \int_compare:nNnT { \l__enumext_keyans_pic_level_int } = { 1 }
+ {
+ \tl_put_right:Ne \l__enumext_newlabel_arg_two_tl
+ { \l__enumext_label_copy_i_tl . \l__enumext_label_copy_vi_tl }
+ }
+ \int_compare:nNnT { \l__enumext_keyans_level_int } = { 1 }
+ {
+ \tl_put_right:Ne \l__enumext_newlabel_arg_two_tl
+ { \l__enumext_label_copy_i_tl . \l__enumext_label_copy_v_tl }
+ }
+ \int_compare:nNnT { \l__enumext_keyans_level_h_int } = { 1 }
+ {
+ \tl_put_right:Ne \l__enumext_newlabel_arg_two_tl
+ { \l__enumext_label_copy_i_tl . \l__enumext_label_copy_viii_tl }
+ }
+ \tl_put_right:Ne \l__enumext_newlabel_arg_one_tl
+ {
+ \l__enumext_store_name_tl \c_colon_str
+ \int_eval:n { \prop_count:c { g__enumext_ \l__enumext_store_name_tl _prop } }
+ }
+ \__enumext_keyans_store_ref_aux_ii:
+ }
+\cs_new_protected:Nn \__enumext_keyans_store_ref_aux_ii:
+ {
+ \tl_put_right:Ne \l__enumext_write_aux_file_tl
+ {
+ \__enumext_newlabel:nn
+ { \exp_not:V \l__enumext_newlabel_arg_one_tl }
+ { \l__enumext_newlabel_arg_two_tl }
+ }
+ \l__enumext_write_aux_file_tl
+ }
+%% Function for storing in sequence for |keyans| and |keyanspic| environments.
+\cs_new_protected:Npn \__enumext_keyans_addto_seq:n #1
+ {
+ \tl_clear:N \l__enumext_store_current_label_tl
+ \int_compare:nNnTF { \l__enumext_keyans_pic_level_int } = { 1 }
+ {
+ \tl_put_right:Ne \l__enumext_store_current_label_tl { \item \l__enumext_label_vi_tl }
+ }
+ {
+ \tl_put_right:Ne \l__enumext_store_current_label_tl { \item \l__enumext_label_v_tl }
+ }
+ \tl_if_novalue:nF { #1 }
+ {
+ \tl_if_empty:NF \l__enumext_store_keyans_item_opt_sep_v_tl
+ {
+ \tl_put_right:Ne \l__enumext_store_current_label_tl
+ {
+ \l__enumext_store_keyans_item_opt_sep_v_tl
+ }
+ }
+ \tl_put_right:Ne \l__enumext_store_current_label_tl { #1 }
+ }
+ \__enumext_keyans_addto_seq_link:
+ }
+\cs_new_protected:Nn \__enumext_keyans_addto_seq_link:
+ {
+ \bool_lazy_and:nnT
+ { \bool_if_p:N \l__enumext_store_ref_key_bool }
+ { \bool_if_p:N \l__enumext_hyperref_bool }
+ {
+ \tl_put_right:Ne \l__enumext_store_current_label_tl
+ {
+ \hfill \exp_not:N \hyperlink
+ {
+ \exp_not:V \l__enumext_newlabel_arg_one_tl
+ }
+ { \exp_not:V \l__enumext_mark_ref_sym_tl }
+ }
+ }
+ \__enumext_store_addto_seq:V \l__enumext_store_current_label_tl
+ \bool_if:NT \l__enumext_check_answers_bool
+ {
+ \int_gincr:N \g__enumext_item_anskey_int
+ }
+ }
+%% Function for |wrap-opt| key for |keyans|, |keyanspic| and |keyans*| environments.
+\cs_new_protected:Npn \__enumext_keyans_save_item_opt:n #1
+ {
+ \tl_if_novalue:nF { #1 }
+ {
+ \tl_set:Ne \l__enumext_store_current_opt_arg_tl { #1 }
+ }
+ }
+\cs_new_protected:Nn \__enumext_keyans_show_item_opt:
+ {
+ \tl_if_empty:NF \l__enumext_store_current_opt_arg_tl
+ {
+ \bool_lazy_or:nnT
+ { \bool_if_p:N \l__enumext_show_answer_bool }
+ { \bool_if_p:N \l__enumext_show_position_bool }
+ {
+ \__enumext_keyans_wrapper_opt_v:n
+ { \l__enumext_store_current_opt_arg_tl } \c_space_tl
+ }
+ }
+ }
+\cs_new_protected:Nn \__enumext_keyans_show_item_opt_viii:
+ {
+ \tl_if_empty:NF \l__enumext_store_current_opt_arg_tl
+ {
+ \bool_lazy_or:nnT
+ { \bool_if_p:N \l__enumext_show_answer_bool }
+ { \bool_if_p:N \l__enumext_show_position_bool }
+ {
+ \__enumext_keyans_wrapper_opt_viii:n
+ { \l__enumext_store_current_opt_arg_tl } \c_space_tl
+ }
+ }
+ }
+%% Function for |mark-sep*|, |show-ans| and |show-pos| keys for |keyans| and |keyanspic| environments.
+\cs_new_protected:Nn \__enumext_keyans_pos_mark_set:
+ {
+ \__enumext_label_width_by_box:Nn
+ \l__enumext_mark_sep_tmpa_dim { \l__enumext_label_v_tl }
+ \str_case:Vn \l__enumext_align_label_pos_v_str
+ {
+ { l }
+ {
+ \dim_set:Nn \l__enumext_mark_sep_tmpb_dim { \c_zero_dim }
+ }
+ { r }
+ {
+ \dim_set:Nn \l__enumext_mark_sep_tmpb_dim
+ { \l__enumext_labelwidth_v_dim - \l__enumext_mark_sep_tmpa_dim }
+ }
+ { c }
+ {
+ \dim_set:Nn \l__enumext_mark_sep_tmpb_dim
+ { 0.5\l__enumext_labelwidth_v_dim - 0.5\l__enumext_mark_sep_tmpa_dim }
+ }
+ }
+ \dim_compare:nNnT { \l__enumext_mark_sym_sep_v_dim } = { \c_zero_dim }
+ {
+ \dim_set:Nn \l__enumext_mark_sym_sep_v_dim { \l__enumext_labelsep_v_dim }
+ }
+ \tl_set_eq:NN \l__enumext_mark_answer_sym_tl \l__enumext_mark_answer_sym_v_tl
+ \dim_add:Nn \l__enumext_mark_sym_sep_v_dim { \l__enumext_mark_sep_tmpb_dim }
+ \str_set_eq:NN \l__enumext_mark_position_str \l__enumext_mark_position_v_str
+ }
+\cs_new_protected:Nn \__enumext_keyans_show_ans:
+ {
+ \bool_lazy_all:nT
+ {
+ { \bool_if_p:N \l__enumext_show_answer_bool }
+ { \bool_if_p:N \l__enumext_item_wrap_key_bool }
+ }
+ {
+ \__enumext_keyans_pos_mark_set:
+ \__enumext_print_keyans_box:NN
+ \l__enumext_labelwidth_v_dim \l__enumext_mark_sym_sep_v_dim
+ }
+ }
+\cs_new_protected:Nn \__enumext_keyans_show_pos:
+ {
+ \int_compare:nNnTF { \l__enumext_keyans_level_int } = { 1 }
+ {
+ \int_incr:N \l__enumext_show_pos_tmp_int
+ }
+ {
+ \int_zero:N \l__enumext_show_pos_tmp_int
+ }
+ \bool_lazy_all:nT
+ {
+ { \bool_if_p:N \l__enumext_show_position_bool }
+ { \bool_if_p:N \l__enumext_item_wrap_key_bool }
+ }
+ {
+ \tl_set:Ne \l__enumext_mark_answer_sym_v_tl
+ {
+ \group_begin:
+ \exp_not:N \normalfont
+ \exp_not:N \footnotesize [ \int_eval:n
+ {
+ \prop_count:c { g__enumext_ \l__enumext_store_name_tl _prop }
+ + \l__enumext_show_pos_tmp_int
+ }
+ ]
+ \group_end:
+ }
+ \__enumext_keyans_pos_mark_set:
+ \__enumext_print_keyans_box:NN
+ \l__enumext_labelwidth_v_dim \l__enumext_mark_sym_sep_v_dim
+ }
+ }
+%% Internal function for |\item| with check-answer mechanism in |enumext| environment.
+\cs_new_protected:Npn \__enumext_default_item:n #1
+ {
+ \tl_if_novalue:nTF {#1}
+ {
+ \bool_if:NT \l__enumext_check_answers_bool
+ {
+ \int_gincr:N \g__enumext_item_number_int
+ \bool_set_true:N \l__enumext_item_number_bool
+ }
+ \bool_set_true:c { l__enumext_wrap_label_ \__enumext_level: _bool }
+ \__enumext_item_std:w \tl_use:c { l__enumext_fake_item_indent_ \__enumext_level: _tl }
+ }
+ {
+ \bool_set_eq:cc
+ { l__enumext_wrap_label_ \__enumext_level: _bool }
+ { l__enumext_wrap_label_opt_ \__enumext_level: _bool }
+ \__enumext_item_std:w [#1] \tl_use:c { l__enumext_fake_item_indent_ \__enumext_level: _tl }
+ }
+ }
+%% Internal function for |\item*[symb][sep]| with check-answer mechanism in |enumext| environment.
+\cs_new_protected:Npn \__enumext_item_starred_exec:nn #1 #2
+ {
+ \tl_if_novalue:nTF {#1}
+ {
+ \tl_gset_eq:Nc
+ \g__enumext_item_symbol_aux_tl { l__enumext_item_symbol_ \__enumext_level: _tl }
+ }
+ {
+ \tl_gset:Nn \g__enumext_item_symbol_aux_tl {#1}
+ }
+ \tl_if_novalue:nTF {#2}
+ {
+ \dim_set_eq:cc
+ { l__enumext_item_symbol_sep_ \__enumext_level: _dim }
+ { l__enumext_labelsep_ \__enumext_level: _dim }
+ }
+ {
+ \dim_set:cn { l__enumext_item_symbol_sep_ \__enumext_level: _dim } {#2}
+ }
+ \bool_if:NT \l__enumext_check_answers_bool
+ {
+ \int_gincr:N \g__enumext_item_number_int
+ \bool_set_true:N \l__enumext_item_number_bool
+ }
+ \bool_set_true:c { l__enumext_wrap_label_ \__enumext_level: _bool }
+ \__enumext_item_std:w \tl_use:c { l__enumext_fake_item_indent_ \__enumext_level: _tl }
+ }
+%% Function for |\item*[sym][sep]| in |\makelabel| for |enumext| environment.
+\cs_new_protected:Nn \__enumext_item_starred_exec:
+ {
+ \tl_if_empty:cF { l__enumext_item_symbol_ \__enumext_level: _tl }
+ {
+ \mode_leave_vertical:
+ \skip_horizontal:n { -\dim_use:c { l__enumext_item_symbol_sep_ \__enumext_level: _dim } }
+ \hbox_overlap_left:n { \g__enumext_item_symbol_aux_tl }
+ \skip_horizontal:n { \dim_use:c { l__enumext_item_symbol_sep_ \__enumext_level: _dim } }
+ }
+ }
+%% Redefinition of |\item| for |\item*[sym][sep]| in |enumext| environment.
+\cs_new_protected:Nn \__enumext_redefine_item:
+ {
+ \RenewDocumentCommand \item { s o o }
+ {
+ \bool_if:nTF {##1}
+ {
+ \__enumext_item_starred_exec:nn {##2} {##3}
+ }
+ { \__enumext_default_item:n {##2} }
+ }
+ }
+%% Redefinition of |\makelabel| for |\item| and |\item*[sym][sep]| in |enumext| environment.
+\cs_new_protected:Nn \__enumext_make_label:
+ {
+ \IfDocumentMetadataTF
+ {
+ \__enumext_make_label_box:
+ }
+ {
+ \bool_if:NTF \l__enumext_mode_box_bool
+ {
+ \__enumext_make_label_box:
+ }
+ {
+ \__enumext_make_label_std:
+ }
+ }
+ }
+\cs_new_protected:Nn \__enumext_make_label_std:
+ {
+ \RenewDocumentCommand \makelabel { m }
+ {
+ \tl_use:c { l__enumext_label_fill_left_ \__enumext_level: _tl }
+ \__enumext_item_starred_exec:
+ \tl_use:c { l__enumext_label_font_style_ \__enumext_level: _tl }
+ \bool_if:cTF { l__enumext_wrap_label_ \__enumext_level: _bool }
+ {
+ \use:c { __enumext_wrapper_label_ \__enumext_level: :n } { ##1 }
+ }
+ { ##1 }
+ \tl_use:c { l__enumext_label_fill_right_ \__enumext_level: _tl }
+ \tl_gclear:N \g__enumext_item_symbol_aux_tl
+ }
+ }
+\cs_new_protected:Nn \__enumext_make_label_box:
+ {
+ \RenewDocumentCommand \makelabel { m }
+ {
+ \strut\smash
+ {
+ \makebox
+ [ \dim_use:c { l__enumext_labelwidth_ \__enumext_level: _dim } ]
+ [ \str_use:c { l__enumext_align_label_pos_ \__enumext_level: _str } ]
+ {
+ \__enumext_item_starred_exec:
+ \tl_use:c { l__enumext_label_font_style_ \__enumext_level: _tl }
+ \bool_if:cTF { l__enumext_wrap_label_ \__enumext_level: _bool }
+ {
+ \use:c { __enumext_wrapper_label_ \__enumext_level: :n } { ##1 }
+ }
+ { ##1 }
+ \tl_gclear:N \g__enumext_item_symbol_aux_tl
+ }
+ } % close smash
+ }
+ }
+%% Add |item-sym*| and |item-sep*| keys.
+\cs_set_protected:Npn \__enumext_tmp:nn #1 #2
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ item-sym* .tl_set:c = { l__enumext_item_symbol_#2_tl },
+ item-sym* .value_required:n = true,
+ item-sym* .initial:n = {\textborn},
+ item-pos* .dim_set:c = { l__enumext_item_symbol_sep_#2_dim },
+ item-pos* .value_required:n = true,
+ }
+ }
+\clist_map_inline:nn
+ {
+ {level-1}{i}, {level-2}{ii}, {level-3}{iii}, {level-4}{iv}, {enumext*}{vii}
+ }
+ { \__enumext_tmp:nn #1 }
+%% Add keys |unknown| for |keyans|, |keyans*| and |keyanspic| environments.
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ unknown .code:n = {
+ \tl_set:Nn \l__enumext_envir_name_tl {#1}
+ \__enumext_keyans_unknown_keys:n {##1}
+ },
+ }
+ }
+\clist_map_inline:nn { keyans, keyans*, keyanspic } { \__enumext_tmp:n {#1} }
+\cs_new_protected:Npn \__enumext_keyans_unknown_keys:n #1
+ {
+ \exp_args:NV \__enumext_keyans_unknown_keys:nn \l_keys_key_str {#1}
+ }
+\cs_new_protected:Npn \__enumext_keyans_unknown_keys:nn #1#2
+ {
+ \tl_if_blank:nTF {#2}
+ {
+ \msg_error:nne { enumext } { keyans-unknown-key } {#1}
+ }
+ {
+ \msg_error:nnee { enumext } { keyans-unknown-key-value } {#1} {#2}
+ }
+ }
+%% Add keys |unknown| for |enumext*| environment.
+\keys_define:nn { enumext / enumext* }
+ {
+ unknown .code:n = { \__enumext_starred_unknown_keys:n {#1} },
+ }
+\cs_new_protected:Npn \__enumext_starred_unknown_keys:n #1
+ {
+ \exp_args:NV \__enumext_starred_unknown_keys:nn \l_keys_key_str {#1}
+ }
+\cs_new_protected:Npn \__enumext_starred_unknown_keys:nn #1#2
+ {
+ \tl_if_blank:nTF {#2}
+ {
+ \msg_error:nnn { enumext } { starred-unknown-key } {#1}
+ }
+ {
+ \msg_error:nnnn { enumext } { starred-unknown-key-value } {#1} {#2}
+ }
+ }
+%% Add keys |unknown| for |enumext| environment.
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ unknown .code:n = { \__enumext_standar_unknown_keys:n {##1} },
+ }
+ }
+\clist_map_inline:nn { level-1,level-2,level-3,level-4 } { \__enumext_tmp:n {#1} }
+\cs_new_protected:Npn \__enumext_standar_unknown_keys:n #1
+ {
+ \exp_args:NV \__enumext_standar_unknown_keys:nn \l_keys_key_str {#1}
+ }
+\cs_new_protected:Npn \__enumext_standar_unknown_keys:nn #1#2
+ {
+ \tl_if_blank:nTF {#2}
+ {
+ \msg_error:nnn { enumext } { standar-unknown-key } {#1}
+ }
+ {
+ \msg_error:nnnn { enumext } { standar-unknown-key-value } {#1} {#2}
+ }
+ }
+\cs_new_protected:Npn \__enumext_keyans_default_item:n #1
+ {
+ \tl_if_novalue:nTF { #1 }
+ {
+ \bool_set_true:N \l__enumext_wrap_label_v_bool
+ \__enumext_item_std:w \tl_use:N \l__enumext_fake_item_indent_v_tl
+ }
+ {
+ \bool_set_eq:NN \l__enumext_wrap_label_v_bool \l__enumext_wrap_label_opt_v_bool
+ \__enumext_item_std:w [#1] \tl_use:N \l__enumext_fake_item_indent_v_tl
+ }
+ }
+\cs_new_protected:Npn \__enumext_keyans_starred_item:n #1
+ {
+ \__enumext_keyans_save_item_opt:n { #1 }
+ \bool_set_true:N \l__enumext_wrap_label_v_bool
+ \__enumext_item_std:w \tl_use:N \l__enumext_fake_item_indent_v_tl
+ \__enumext_keyans_show_item_opt:
+ \__enumext_keyans_addto_prop:n { #1 }
+ \__enumext_keyans_store_ref:
+ \__enumext_keyans_addto_seq:n { #1 }
+ \int_gincr:N \g__enumext_check_starred_cmd_int
+ }
+%% Redefine |\item| for |keyans| environment.
+\cs_new_protected:Nn \__enumext_keyans_redefine_item:
+ {
+ \RenewDocumentCommand \item { s o }
+ {
+ \bool_if:nTF {##1}
+ {
+ \bool_set_true:N \l__enumext_item_wrap_key_bool % wrap-ans*
+ \peek_remove_spaces:n
+ {
+ \__enumext_keyans_starred_item:n {##2}
+ }
+ }
+ {
+ \bool_set_false:N \l__enumext_item_wrap_key_bool
+ \__enumext_keyans_default_item:n {##2}
+ }
+ }
+ }
+%% Redefine |\makelabel| for |keyans| environment.
+\cs_new_protected:Nn \__enumext_keyans_make_label:
+ {
+ \IfDocumentMetadataTF
+ {
+ \__enumext_keyans_make_label_box:
+ }
+ {
+ \bool_if:NTF \l__enumext_mode_box_bool
+ {
+ \__enumext_keyans_make_label_box:
+ }
+ {
+ \__enumext_keyans_make_label_std:
+ }
+ }
+ }
+\cs_new_protected:Npn \__enumext_keyans_wrapper_label:n #1
+ {
+ \bool_lazy_all:nT
+ {
+ { \bool_if_p:N \l__enumext_wrap_label_v_bool }
+ { \bool_if_p:N \l__enumext_show_answer_bool }
+ { \bool_if_p:N \l__enumext_item_wrap_key_bool }
+ { \cs_if_exist_p:N \__enumext_keyans_wrapper_item_v:n }
+ }
+ {
+ \cs_set_eq:NN \__enumext_wrapper_label_v:n \__enumext_keyans_wrapper_item_v:n
+ }
+ \bool_if:NTF \l__enumext_wrap_label_v_bool
+ {
+ \__enumext_wrapper_label_v:n { #1 }
+ }
+ { #1 }
+ }
+\cs_new_protected:Nn \__enumext_keyans_make_label_std:
+ {
+ \RenewDocumentCommand \makelabel { m }
+ {
+ \tl_use:N \l__enumext_label_fill_left_v_tl
+ \__enumext_keyans_show_ans:
+ \__enumext_keyans_show_pos:
+ \tl_use:N \l__enumext_label_font_style_v_tl
+ \__enumext_keyans_wrapper_label:n { ##1 }
+ \tl_use:N \l__enumext_label_fill_right_v_tl
+ }
+ }
+\cs_new_protected:Nn \__enumext_keyans_make_label_box:
+ {
+ \RenewDocumentCommand \makelabel { m }
+ {
+ \strut\smash
+ {
+ \makebox[ \l__enumext_labelwidth_v_dim ][ \l__enumext_align_label_pos_v_str ]
+ {
+ \__enumext_keyans_show_ans:
+ \__enumext_keyans_show_pos:
+ \tl_use:N \l__enumext_label_font_style_v_tl
+ \__enumext_keyans_wrapper_label:n { ##1 }
+ }
+ }
+ }
+ }
+%% Function to calc of horizontal length for all list environment.
+%% #1: \l__enumext_labelwidth_X_dim #2: \l__enumext_labelsep_X_dim
+%% #3: \l__enumext_listoffset_X_dim #4: \l__enumext_leftmargin_tmp_X_dim
+%% #5: \l__enumext_leftmargin_X_dim #6: \l__enumext_itemindent_X_dim
+%% #7: \l__enumext_leftmargin_tmp_X_bool
+\cs_new_protected:Npn \__enumext_calc_hspace:NNNNNNN #1 #2 #3 #4 #5 #6 #7
+ {
+ \dim_compare:nNnT { #1 } < { \c_zero_dim }
+ {
+ \msg_warning:nnnV { enumext } { width-non-positive }{ labelwidth }{ #1 }
+ \dim_set:Nn #1 { \dim_abs:n { #1 } }
+ }
+ \dim_compare:nNnT { #2 } < { \c_zero_dim }
+ {
+ \msg_warning:nnnV { enumext } { width-negative }{ labelsep }{ #2 }
+ \dim_set:Nn #2 { \dim_abs:n { #2 } }
+ }
+ \bool_if:nF #7 { \dim_set:Nn #4 { #1 + #2} }
+ \dim_compare:nNnTF { #4 } < { \c_zero_dim }
+ {
+ \dim_set:Nn #6 { #1 + #2 - #4}
+ \dim_set:Nn #5 { #1 + #2 + #3 - #6 }
+ }
+ {
+ \dim_compare:nNnT { #4 } = { #1 + #2 }
+ { \dim_set:Nn #6 { \c_zero_dim } }
+ \dim_compare:nNnT { #4 } < { #1 + #2 }
+ { \dim_set:Nn #6 { #1 + #2 - #4} }
+ \dim_compare:nNnT { #4 } > { #1 + #2 }
+ {
+ \dim_set:Nn #6 { -#1 - #2 + #4}
+ \dim_set:Nn #6 { #6*-1}
+ }
+ \dim_set:Nn #5 { #1 + #2 + #3 - #6 }
+ }
+ }
+\cs_generate_variant:Nn \__enumext_calc_hspace:NNNNNNN { ccccccc }
+%% Define "second arg" of list for |enumext| and |keyans|.
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \cs_new_protected:cpn { __enumext_list_arg_two_#1: }
+ {
+ \__enumext_calc_hspace:ccccccc
+ { l__enumext_labelwidth_#1_dim } { l__enumext_labelsep_#1_dim }
+ { l__enumext_listoffset_#1_dim } { l__enumext_leftmargin_tmp_#1_dim }
+ { l__enumext_leftmargin_#1_dim } { l__enumext_itemindent_#1_dim }
+ { l__enumext_leftmargin_tmp_#1_bool }
+ \clist_map_inline:nn
+ { labelsep, labelwidth, itemindent, leftmargin, rightmargin, listparindent }
+ { \dim_set_eq:cc {####1} { l__enumext_####1_#1_dim } }
+ \clist_map_inline:nn { topsep, parsep, partopsep, itemsep }
+ { \skip_set_eq:cc {####1} { l__enumext_####1_#1_skip } }
+ \usecounter { enumX#1 }
+ \setcounter { enumX#1 } { \int_eval:n { \int_use:c { l__enumext_start_#1_int } - 1 } }
+ \str_if_eq:nnTF {#1} { v }
+ {
+ \__enumext_keyans_redefine_item:
+ \__enumext_keyans_make_label:
+ \__enumext_keyans_ref:
+ \__enumext_keyans_fake_item_indent:
+ \bool_if:cT { l__enumext_show_length_#1_bool }
+ {
+ \msg_term:nnnn { enumext } { list-lengths-not-nested } { v } { keyans }
+ }
+ }
+ {
+ \__enumext_redefine_item:
+ \__enumext_make_label:
+ \__enumext_standar_ref:
+ \__enumext_fake_item_indent:
+ \bool_if:cT { l__enumext_show_length_#1_bool }
+ {
+ \msg_term:nnne { enumext } { list-lengths } {#1}
+ { \int_use:N \l__enumext_level_int }
+ }
+ }
+ }
+ }
+\clist_map_inline:nn { i, ii, iii, iv, v } { \__enumext_tmp:n {#1} }
+%% Define "second arg" of list for |enumext*| and |keyans*|.
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \cs_new_protected:cpn { __enumext_list_arg_two_#1: }
+ {
+ \bool_set_true:c { l__enumext_leftmargin_tmp_#1_bool }
+ \dim_zero:c { l__enumext_leftmargin_tmp_#1_dim }
+ \__enumext_calc_hspace:ccccccc
+ { l__enumext_labelwidth_#1_dim } { l__enumext_labelsep_#1_dim }
+ { l__enumext_listoffset_#1_dim } { l__enumext_leftmargin_tmp_#1_dim }
+ { l__enumext_leftmargin_#1_dim } { l__enumext_itemindent_#1_dim }
+ { l__enumext_leftmargin_tmp_#1_bool }
+ \clist_map_inline:nn
+ { labelsep, labelwidth, itemindent, leftmargin, rightmargin, listparindent }
+ { \dim_set_eq:cc {####1} { l__enumext_####1_#1_dim } }
+ \clist_map_inline:nn { topsep, parsep, partopsep, itemsep }
+ { \skip_set_eq:cc {####1} { l__enumext_####1_#1_skip } }
+ \skip_set_eq:Nc \parsep { l__enumext_itemsep_#1_skip }
+ \skip_zero:N \partopsep
+ \usecounter { enumX#1 }
+ \setcounter { enumX#1 } { \int_eval:n { \int_use:c { l__enumext_start_#1_int } - 1 } }
+ \__enumext_starred_ref:
+ \str_if_eq:nnTF {#1} { vii }
+ {
+ \__enumext_fake_item_indent_vii:
+ \bool_if:cT { l__enumext_show_length_vii_bool }
+ { \msg_term:nnnn { enumext } { list-lengths-not-nested } { vii } { enumext* } }
+ }
+ {
+ \__enumext_fake_item_indent_viii:
+ \bool_if:cT { l__enumext_show_length_#1_bool }
+ { \msg_term:nnnn { enumext } { list-lengths-not-nested } { #1 } { keyans* } }
+ }
+ }
+ }
+\clist_map_inline:nn { vii, viii } { \__enumext_tmp:n {#1} }
+%% Safe exec for |enumext| environment.
+\cs_new_protected:Nn \__enumext_safe_exec:
+ {
+ \__enumext_is_not_nested:
+ \__enumext_internal_mini_page:
+ \int_incr:N \l__enumext_level_int
+ \int_compare:nNnT { \l__enumext_level_int } > { 4 }
+ { \msg_fatal:nn { enumext } { list-too-deep } }
+ \bool_set_true:N \l__enumext_standar_bool
+ \bool_set_false:N \l__enumext_starred_bool
+ \__enumext_is_on_first_level:
+ }
+%% Parse |key=val| and set default series and store keys in seq-name for \printkeyans for |enumext| environment.
+\cs_new_protected:Npn \__enumext_parse_keys:n #1
+ {
+ \tl_if_novalue:nF {#1}
+ {
+ \str_clear:N \l__enumext_series_str
+ \int_compare:nNnTF { \l__enumext_level_int } = { 1 }
+ {
+ \keys_set:nn { enumext / level-1 } {#1}
+ \__enumext_parse_series:n {#1}
+ \__enumext_nested_base_line_fix:
+ }
+ {
+ \exp_args:Ne \keys_set:nn
+ { enumext / level-\int_use:N \l__enumext_level_int } {#1}
+ }
+ \__enumext_store_active_keys:n {#1}
+ }
+ }
+%% Start storing structure in sequence for |save-ans| key in |enumext| environment.
+\cs_new_protected:Nn \__enumext_start_store_level:
+ {
+ \bool_lazy_all:nT
+ {
+ { \bool_if_p:N \l__enumext_store_active_bool }
+ { \bool_not_p:n { \l__enumext_keyans_env_bool } }
+ { \bool_if_p:N \g__enumext_standar_bool }
+ }
+ {
+ \int_compare:nNnT { \l__enumext_level_int } > { 1 }
+ {
+ \bool_set_true:c { l__enumext_store_upper_level_ \__enumext_level: _bool }
+ \__enumext_store_level_open:
+ }
+ }
+ \bool_lazy_all:nT
+ {
+ { \bool_if_p:N \l__enumext_store_active_bool }
+ { \bool_not_p:n { \l__enumext_keyans_env_bool } }
+ { \int_compare_p:nNn { \l__enumext_level_h_int } = { 1 } }
+ }
+ {
+ \int_compare:nNnT { \l__enumext_level_int } > { 0 }
+ {
+ \bool_set_true:c { l__enumext_store_upper_level_ \__enumext_level: _bool }
+ \__enumext_store_level_open:
+ }
+ }
+ }
+%% Stop storing structure in sequence for |save-ans| key in |enumext| environment.
+\cs_new_protected:Nn \__enumext_stop_store_level:
+ {
+ \bool_if:cT { l__enumext_store_upper_level_ \__enumext_level: _bool }
+ {
+ \__enumext_store_level_close:
+ }
+ }
+\cs_new_protected:Nn \__enumext_multicols_start:
+ {
+ \int_compare:nNnT
+ { \int_use:c { l__enumext_columns_ \__enumext_level: _int } } > { 1 }
+ {
+ \dim_compare:nNnT
+ { \dim_use:c { l__enumext_columns_sep_ \__enumext_level: _dim } } = { \c_zero_dim }
+ {
+ \dim_set:cn { l__enumext_columns_sep_ \__enumext_level: _dim }
+ {
+ ( \dim_use:c { l__enumext_labelwidth_ \__enumext_level: _dim }
+ + \dim_use:c { l__enumext_labelsep_ \__enumext_level: _dim }
+ ) / \int_use:c { l__enumext_columns_ \__enumext_level: _int }
+ - \dim_use:c { l__enumext_listoffset_ \__enumext_level: _dim }
+ }
+ }
+ \dim_set_eq:Nc \columnsep { l__enumext_columns_sep_ \__enumext_level: _dim }
+ \int_compare:nNnT { \l__enumext_level_int } > { 1 }
+ {
+ \dim_zero:N \columnseprule
+ }
+ \bool_if:cF { l__enumext_minipage_active_ \__enumext_level: _bool }
+ {
+ \skip_zero:N \multicolsep
+ \__enumext_multi_addvspace:
+ }
+ \raggedcolumns
+ \begin{multicols}{ \int_use:c { l__enumext_columns_ \__enumext_level: _int } }
+ }
+ }
+\cs_new_protected:Nn \__enumext_multicols_stop:
+ {
+ \int_compare:nNnTF
+ { \int_use:c { l__enumext_columns_ \__enumext_level: _int } } > { 1 }
+ {
+ \__enumext_stop_list:
+ \__enumext_stop_store_level:
+ \end{multicols}
+ \__enumext_unskip_unkern:
+ \__enumext_unskip_unkern:
+ \par\addvspace{ \skip_use:c { l__enumext_multicols_below_ \__enumext_level: _skip } }
+ }
+ {
+ \__enumext_stop_list:
+ \__enumext_stop_store_level:
+ }
+ }
+\cs_new_protected:Nn \__enumext_before_list:
+ {
+ \__enumext_vspace_above:
+ \__enumext_before_args_exec:
+ \__enumext_check_ans_active:
+%% Set |mini-env| width value.
+ \dim_compare:nNnT
+ { \dim_use:c { l__enumext_minipage_right_ \__enumext_level: _dim } } > { \c_zero_dim }
+ {
+ \dim_set:cn { l__enumext_minipage_left_ \__enumext_level: _dim }
+ {
+ \linewidth
+ - \dim_use:c { l__enumext_minipage_right_ \__enumext_level: _dim }
+ - \dim_use:c { l__enumext_minipage_hsep_ \__enumext_level: _dim }
+ }
+%% Use internal minipage with |\nointerlineskip| and |\addvspace| here
+ \bool_set_true:c { l__enumext_minipage_active_ \__enumext_level: _bool }
+ \int_gincr:N \g__enumext_minipage_stat_int
+ \__enumext_minipage_add_space:
+ \noindent
+ \__enumext_mini_page{ \dim_use:c { l__enumext_minipage_left_ \__enumext_level: _dim } }
+ }
+ \__enumext_multicols_start:
+ }
+\cs_new_protected:Nn \__enumext_second_part:
+ {
+ \bool_if:cTF { l__enumext_minipage_active_ \__enumext_level: _bool }
+ {
+ \int_compare:nNnT { \g__enumext_minipage_stat_int } = { 1 }
+ {
+ \msg_warning:nn { enumext } { missing-miniright }
+ \miniright
+ }
+ \int_gzero:N \g__enumext_minipage_stat_int
+ \__enumext_unskip_unkern: % remove topsep + [partopsep]
+ \end__enumext_mini_page
+ }
+ {
+ \__enumext_multicols_stop:
+ }
+ \__enumext_after_stop_list:
+ \__enumext_check_ans_key_hook:
+ \__enumext_vspace_below:
+ \bool_set_false:N \l__enumext_standar_bool
+ \__enumext_resume_save_counter:
+ }
+%% Set |\itemwidth| for |enumext| environment.
+\cs_new_protected:Nn \__enumext_set_item_width:
+ {
+ \dim_set:Nn \itemwidth { \linewidth }
+ \dim_compare:nT
+ {
+ \dim_use:c { l__enumext_listoffset_ \__enumext_level: _dim } != \c_zero_dim
+ }
+ {
+ \dim_sub:Nn \itemwidth
+ {
+ \dim_use:c { l__enumext_listoffset_ \__enumext_level: _dim }
+ }
+ }
+ }
+%% Definition of |enumext| environment.
+\NewDocumentEnvironment{enumext}{ O{} }
+ {
+ \__enumext_safe_exec:
+ \__enumext_parse_keys:n {#1}
+ \__enumext_before_list:
+ \__enumext_start_store_level:
+ \__enumext_start_list:nn
+ { \tl_use:c { l__enumext_label_ \__enumext_level: _tl } }
+ {
+ \use:c { __enumext_list_arg_two_ \__enumext_level: : }
+ \__enumext_before_keys_exec:
+ }
+ \__enumext_set_item_width:
+ \__enumext_after_args_exec:
+ }
+ {
+ \__enumext_second_part:
+ }
+%% Execute |check-ans| key out of |enumext| environment.
+\__enumext_after_env:nn {enumext}
+ {
+ \__enumext_execute_after_env:
+ }
+%% Function for check nested level in |keyans| environment.
+\cs_new_protected:Nn \__enumext_keyans_safe_exec:
+ {
+ \bool_if:NF \l__enumext_store_active_bool
+ {
+ \msg_error:nnnn { enumext } { wrong-place }{ keyans }{ save-ans }
+ }
+ \int_incr:N \l__enumext_keyans_level_int
+ \bool_set_true:N \l__enumext_keyans_env_bool
+ \__enumext_keyans_name_and_start:
+ % Set false for interfering with enumext nested in keyans (yes, its possible and crayze)
+ \bool_set_false:N \l__enumext_store_active_bool
+ \int_compare:nNnT { \l__enumext_keyans_level_int } > { 1 }
+ {
+ \msg_error:nn { enumext } { keyans-nested }
+ }
+ \int_compare:nNnT { \l__enumext_level_int } > { 1 }
+ {
+ \msg_error:nn { enumext } { keyans-wrong-level }
+ }
+ }
+%% Function for parse |key=val| in |keyans|.
+\cs_new_protected:Npn \__enumext_keyans_parse_keys:n #1
+ {
+ \keys_set:nn { enumext / keyans } {#1}
+ }
+%% Internal functions for |keyans| environment.
+\cs_new_protected:Nn \__enumext_before_list_v:
+ {
+ \__enumext_vspace_above_v:
+ \__enumext_before_args_exec_v:
+ \dim_compare:nNnT { \l__enumext_minipage_right_v_dim } > { \c_zero_dim }
+ {
+ \dim_set:Nn \l__enumext_minipage_left_v_dim
+ {
+ \linewidth - \l__enumext_minipage_right_v_dim - \l__enumext_minipage_hsep_v_dim
+ }
+ \bool_set_true:N \l__enumext_minipage_active_v_bool
+ \int_gincr:N \g__enumext_minipage_stat_int
+ \__enumext_keyans_minipage_add_space:
+ \__enumext_mini_page{ \l__enumext_minipage_left_v_dim }
+ }
+ \__enumext_keyans_multicols_start:
+ }
+\cs_new_protected:Nn \__enumext_keyans_multicols_start:
+ {
+ \int_compare:nNnT { \l__enumext_columns_v_int } > { 1 }
+ {
+ \dim_compare:nNnT { \l__enumext_columns_sep_v_dim } = { \c_zero_dim }
+ {
+ \dim_set:Nn \l__enumext_columns_sep_v_dim
+ {
+ (
+ \l__enumext_labelwidth_v_dim + \l__enumext_labelsep_v_dim
+ ) / \l__enumext_columns_v_int
+ - \l__enumext_listoffset_v_dim
+ }
+ }
+ \dim_set_eq:NN \columnsep \l__enumext_columns_sep_v_dim
+ \dim_zero:N \columnseprule % no rule here
+ \bool_if:NF \l__enumext_minipage_active_v_bool
+ {
+ \skip_zero:N \multicolsep
+ \__enumext_keyans_multi_addvspace:
+ }
+ \raggedcolumns
+ \begin{multicols}{ \l__enumext_columns_v_int }
+ }
+ }
+\cs_new_protected:Nn \__enumext_keyans_multicols_stop:
+ {
+ \int_compare:nNnTF { \l__enumext_columns_v_int } > { 1 }
+ {
+ \__enumext_stop_list:
+ \end{multicols}
+ \__enumext_unskip_unkern:
+ \__enumext_unskip_unkern:
+ \par\addvspace{ \l__enumext_multicols_below_v_skip }
+ }
+ {
+ \__enumext_stop_list:
+ }
+ }
+\cs_new_protected:Nn \__enumext_second_part_v:
+ {
+ \bool_if:NTF \l__enumext_minipage_active_v_bool
+ {
+ \int_compare:nNnT { \g__enumext_minipage_stat_int } = { 1 }
+ {
+ \msg_warning:nn { enumext } { missing-miniright }
+ \miniright
+ }
+ \int_gzero:N \g__enumext_minipage_stat_int
+ \__enumext_unskip_unkern: % remove \topsep + [\partopsep]
+ \end__enumext_mini_page
+ \par\addvspace{ \l__enumext_minipage_after_skip }
+ }
+ {
+ \__enumext_keyans_multicols_stop:
+ }
+ \bool_set_false:N \l__enumext_keyans_env_bool
+ \__enumext_after_stop_list_v:
+ \__enumext_vspace_below_v:
+ }
+%% Set |\itemwidth| for |keyans| environment.
+\cs_new_protected:Nn \__enumext_keyans_set_item_width:
+ {
+ \dim_set:Nn \itemwidth { \linewidth }
+ \dim_compare:nT
+ {
+ \l__enumext_listoffset_v_dim != \c_zero_dim
+ }
+ {
+ \dim_sub:Nn \itemwidth { \l__enumext_listoffset_v_dim }
+ }
+ }
+%% Definition of |keyans| environment.
+\NewDocumentEnvironment{keyans}{ O{} }
+ {
+ \__enumext_keyans_safe_exec:
+ \__enumext_keyans_parse_keys:n {#1}
+ \__enumext_before_list_v:
+ \__enumext_start_list:nn
+ { \tl_use:N \l__enumext_label_v_tl }
+ {
+ \__enumext_list_arg_two_v:
+ \__enumext_before_keys_exec_v:
+ }
+ \__enumext_keyans_set_item_width:
+ \__enumext_after_args_exec_v:
+ }
+ {
+ \__enumext_check_starred_cmd:n { item }
+ \__enumext_second_part_v:
+ }
+%% Implement socket for tagging support in |enumext*| and |keyans*| environments.
+\socket_new:nn {tagsupport/__enumext/starred}{ 1 }
+\socket_new_plug:nnn {tagsupport/__enumext/starred} {start-list-tags}
+ {
+ \tag_resume:n {#1}
+ \tag_mc_end_push:
+ \tag_struct_begin:n {tag=LI}
+ \tag_struct_begin:n {tag=Lbl}
+ \tag_mc_begin:n {tag=Lbl}
+ }
+\socket_new_plug:nnn {tagsupport/__enumext/starred} {stop-start-tags}
+ {
+ \tag_mc_end:
+ \tag_struct_end:n {tag=Lbl}
+ \tag_struct_begin:n {tag=LBody}
+ \tag_struct_begin:n {tag=text-unit}
+ \tag_struct_begin:n {tag=text}
+ }
+\socket_new_plug:nnn {tagsupport/__enumext/starred} {stop-list-tags}
+ {
+ \tag_struct_end:n {tag=text}
+ \tag_struct_end:n {tag=text-unit}
+ \tag_struct_end:n {tag=LBody}
+ \tag_struct_end:n {tag=LI}
+ \tag_mc_begin_pop:n {}
+ \tag_suspend:n {#1}
+ }
+%% Wrap socket in conditional functions for tagging |enumext*| and |keyans*| environments.
+\cs_new_protected_nopar:Npn \__enumext_start_list_tag:n #1
+ {
+ \IfDocumentMetadataTF
+ {
+ \socket_assign_plug:nn {tagsupport/__enumext/starred} {start-list-tags}
+ \socket_use:nn {tagsupport/__enumext/starred} {#1}
+ } {}
+ }
+\cs_new_protected_nopar:Nn \__enumext_stop_start_list_tag:
+ {
+ \IfDocumentMetadataTF
+ {
+ \socket_assign_plug:nn {tagsupport/__enumext/starred} {stop-start-tags}
+ \socket_use:nn {tagsupport/__enumext/starred} { }
+ } {}
+ }
+\cs_new_protected_nopar:Npn \__enumext_stop_list_tag:n #1
+ {
+ \IfDocumentMetadataTF
+ {
+ \socket_assign_plug:nn {tagsupport/__enumext/starred} {stop-list-tags}
+ \socket_use:nn {tagsupport/__enumext/starred} {#1}
+ } {}
+ }
+%% Implement socket for tagging support in |keyanspic| environment.
+\socket_new:nn {tagsupport/__enumext/keyanspic}{ 0 }
+\socket_new_plug:nnn {tagsupport/__enumext/keyanspic} {start-list-tags}
+ {
+ \tag_resume:n {keyanspic}
+ \tag_mc_end_push:
+ \tag_struct_begin:n {tag=LI}
+ \tag_struct_begin:n {tag=Lbl}
+ \tag_mc_begin:n {tag=Lbl}
+ }
+\socket_new_plug:nnn {tagsupport/__enumext/keyanspic} {stop-start-tags}
+ {
+ \tag_mc_end:
+ \tag_struct_end:n {tag=Lbl}
+ \tag_struct_begin:n {tag=LBody}
+ \tag_struct_begin:n {tag=text-unit}
+ \tag_struct_begin:n {tag=text}
+ \tag_mc_begin:n {tag=text}
+ }
+\socket_new_plug:nnn {tagsupport/__enumext/keyanspic} {stop-list-tags}
+ {
+ \tag_mc_end:
+ \tag_struct_end:n {tag=text}
+ \tag_struct_end:n {tag=text-unit}
+ \tag_struct_end:n {tag=LBody}
+ \tag_struct_end:n {tag=LI}
+ \tag_mc_begin_pop:n {}
+ \tag_suspend:n {keyanspic}
+ }
+%% Wrap socket in conditional functions for tagging |keyanspic| environment.
+\cs_new_protected_nopar:Nn \__enumext_anspic_start_list_tag:
+ {
+ \IfDocumentMetadataTF
+ {
+ \socket_assign_plug:nn {tagsupport/__enumext/keyanspic} {start-list-tags}
+ \socket_use:n {tagsupport/__enumext/keyanspic}
+ } {}
+ }
+\cs_new_protected_nopar:Nn \__enumext_anspic_stop_start_list_tag:
+ {
+ \IfDocumentMetadataTF
+ {
+ \socket_assign_plug:nn {tagsupport/__enumext/keyanspic} {stop-start-tags}
+ \socket_use:n {tagsupport/__enumext/keyanspic}
+ } {}
+ }
+\cs_new_protected_nopar:Nn \__enumext_anspic_stop_list_tag:
+ {
+ \IfDocumentMetadataTF
+ {
+ \socket_assign_plug:nn {tagsupport/__enumext/keyanspic} {stop-list-tags}
+ \socket_use:n {tagsupport/__enumext/keyanspic}
+ } {}
+ }
+%% Add keys for |keyanspic| environment.
+\keys_define:nn { enumext / keyanspic }
+ {
+ label-pos .choice:,
+ label-pos / above .code:n =
+ \bool_set_true:N \l__enumext_anspic_label_above_bool
+ \str_set:Nn \l__enumext_anspic_mini_pos_str { t },
+ label-pos / below .code:n =
+ \bool_set_false:N \l__enumext_anspic_label_above_bool
+ \str_set:Nn \l__enumext_anspic_mini_pos_str { b },
+ label-pos / unknown .code:n =
+ \msg_error:nneee { enumext } { unknown-choice }
+ { label-pos } { above,~ below } { \exp_not:n {#1} },
+ label-pos .initial:n = below,
+ label-pos .value_required:n = true,
+ label-sep .skip_set:N = \l__enumext_anspic_label_sep_skip,
+ label-sep .value_required:n = true,
+ layout-sty .tl_set:N = \l__enumext_anspic_layout_style_tl,
+ layout-sty .value_required:n = true,
+ layout-sep .code:n = \keys_set:nn { enumext / keyans } { parsep = #1 },
+ layout-sep .value_required:n = true,
+ layout-top .code:n = \keys_set:nn { enumext / keyans } { topsep = #1 },
+ layout-top .value_required:n = true,
+ mark-ans .code:n = \keys_set:nn { enumext / keyans } { mark-ans = #1 },
+ mark-ans .value_required:n = true,
+ mark-pos .code:n = \keys_set:nn { enumext / keyans } { mark-pos = #1 },
+ mark-pos .value_required:n = true,
+ mark-sep .code:n = \keys_set:nn { enumext / keyans } { mark-sep = #1 },
+ mark-sep .value_required:n = true,
+ save-sep .code:n = \keys_set:nn { enumext / keyans } { save-sep = #1 },
+ save-sep .value_required:n = true,
+ wrap-opt .code:n = \keys_set:nn { enumext / keyans } { wrap-opt = #1 },
+ wrap-opt .value_required:n = true,
+ wrap-ans* .code:n = \keys_set:nn { enumext / keyans } { wrap-ans* = #1 },
+ wrap-ans* .value_required:n = true,
+ show-ans .code:n = \keys_set:nn { enumext / keyans } { show-ans = #1 },
+ show-ans .value_required:n = true,
+ show-pos .code:n = \keys_set:nn { enumext / keyans } { show-pos = #1 },
+ show-pos .value_required:n = true,
+ unknown .code:n = {
+ \tl_set:Nn \l__enumext_envir_name_tl { keyanspic }
+ \__enumext_keyans_unknown_keys:n {#1}
+ },
+ }
+%% Internal check code for |keyanspic| environment.
+\cs_new_protected:Nn \__enumext_keyans_pic_safe_exec:
+ {
+ \int_incr:N \l__enumext_keyans_pic_level_int
+ \int_compare:nNnT { \l__enumext_keyans_pic_level_int } > { 1 }
+ {
+ \msg_error:nn { enumext } { keyanspic-nested }
+ }
+ \__enumext_keyans_name_and_start:
+ }
+\cs_new_protected:Npn \__enumext_keyans_pic_parse_keys:n #1
+ {
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { enumext / keyanspic } {#1}
+ }
+ }
+\cs_new_protected:Npn \__enumext_keyans_pic_skip_abs:N #1
+ {
+ \dim_compare:nNnT { #1 } < { \c_zero_dim }
+ {
+ \skip_set:Nn #1 { -#1 }
+ }
+ }
+\cs_new_protected:Npn \__enumext_keyans_pic_arg_two:
+ {
+ \bool_set_false:N \l__enumext_leftmargin_tmp_v_bool
+ \__enumext_list_arg_two_v:
+ \__enumext_keyans_pic_skip_abs:N \parsep
+ \bool_if:NF \l__enumext_anspic_label_above_bool
+ {
+ \stepcounter { enumXv }
+ \hbox_set:Nn \l__enumext_anspic_label_box { \l__enumext_label_v_tl }
+ \dim_set:Nn \l__enumext_anspic_label_htdp_dim
+ {
+ \box_ht_plus_dp:N \l__enumext_anspic_label_box
+ }
+ \skip_add:Nn \parsep
+ {
+ \l__enumext_anspic_label_htdp_dim
+ + \box_dp:N \strutbox
+ + \l__enumext_anspic_label_sep_skip
+ }
+ }
+ \dim_add:Nn \leftmargin { -\l__enumext_labelwidth_v_dim - \l__enumext_labelsep_v_dim }
+ \ignorespaces
+ \skip_add:Nn \topsep { 0.5\box_dp:N \strutbox }
+ \dim_zero:N \listparindent
+ \skip_zero:N \partopsep
+ \skip_zero:N \itemsep
+ }
+%% Define |keyanspic| environment.
+\NewDocumentEnvironment{keyanspic}{ o }
+ {
+ \__enumext_keyans_pic_safe_exec:
+ \__enumext_keyans_pic_parse_keys:n {#1}
+ \begin{list} { } { \__enumext_keyans_pic_arg_two: }
+ \IfDocumentMetadataTF
+ {
+ \tag_suspend:n {list}
+ }{}
+ \item[] \scan_stop:
+ \RenewDocumentCommand \item {}
+ {
+ \msg_error:nn { enumext } { keyanspic-item-cmd }
+ }
+ \IfDocumentMetadataTF
+ {
+ \tag_resume:n {keyanspic}
+ \tag_tool:n {para/tagging=false}
+ \tag_suspend:n {keyanspic}
+ } { }
+ }
+ {
+ \IfDocumentMetadataTF
+ {
+ \tag_resume:n {keyanspic}
+ \tag_mc_end_push:
+ \tag_struct_begin:n {tag=L,attribute=enumerate}
+ } { }
+ \__enumext_anspic_exec:
+ \IfDocumentMetadataTF
+ {
+ \tag_suspend:n {keyanspic}
+ } { }
+ \end{list}
+ \IfDocumentMetadataTF
+ {
+ \tag_struct_end:n {tag=L}
+ \tag_mc_begin_pop:n {}
+ \tag_struct_end:n {tag=L}
+ \tag_mc_begin_pop:n {}
+ } { }
+ \__enumext_check_starred_cmd:n { anspic }
+ \setcounter { enumXvi } { 0 }
+ \bool_if:NTF \l__enumext_anspic_label_above_bool
+ {
+ \par\addvspace{ 0.5\box_dp:N \strutbox }
+ }
+ {
+ \par
+ \addvspace
+ {
+ \dim_eval:n
+ {
+ \l__enumext_anspic_label_htdp_dim + \box_ht_plus_dp:N \strutbox
+ + \l__enumext_anspic_label_sep_skip + \l__enumext_topsep_v_skip
+ }
+ }
+ }
+ }
+%% Define |\anspic| for |keyanspic| environment.
+\NewDocumentCommand \anspic { s o +m }
+ {
+ \bool_if:NF \l__enumext_store_active_bool
+ {
+ \msg_error:nnnn { enumext } { wrong-place }{ keyanspic }{ save-ans }
+ }
+ \int_compare:nNnT { \l__enumext_level_int } > { 1 }
+ {
+ \msg_error:nn { enumext } { keyanspic-wrong-level }
+ }
+ \int_compare:nNnT { \l__enumext_keyans_level_int } = { 1 }
+ {
+ \msg_error:nnnn { enumext } { command-wrong-place }{ anspic }{ keyans }
+ }
+ \seq_put_right:Nn \l__enumext_anspic_args_seq
+ {
+ \__enumext_anspic_args:nnn { #1 } { #2 } { #3 }
+ }
+ }
+%% Set the height plus depth off body arg in dim var for |\anspic|.
+\cs_new_protected:Npn \__enumext_anspic_body_dim:n #1
+ {
+ \bool_if:NF \l__enumext_anspic_label_above_bool
+ {
+ \IfDocumentMetadataTF
+ {
+ \tag_suspend:n {keyanspic}
+ } { }
+ \vbox_set:Nn \l__enumext_anspic_body_box { #1 }
+ \dim_set:Nn \l__enumext_anspic_body_htdp_dim
+ {
+ \box_ht_plus_dp:N \l__enumext_anspic_body_box
+ }
+ \IfDocumentMetadataTF
+ {
+ \tag_resume:n {keyanspic}
+ } { }
+ }
+ }
+%% Process and store label and [opt] for |\anspic|.
+\cs_new_protected:Npn \__enumext_anspic_label:nn #1 #2
+ {
+ \makebox[ \l__enumext_anspic_mini_width_dim ][ c ]
+ {
+ \bool_if:nTF { #1 }
+ {
+ \bool_set_true:N \l__enumext_item_wrap_key_bool
+ \bool_set_true:N \l__enumext_wrap_label_v_bool
+ \__enumext_keyans_save_item_opt:n { #2 }
+ \__enumext_keyans_addto_prop:n { #2 }
+ \__enumext_keyans_store_ref:
+ \__enumext_keyans_addto_seq:n { #2 }
+ \int_gincr:N \g__enumext_check_starred_cmd_int
+ \__enumext_keyans_show_ans:
+ \__enumext_keyans_show_pos:
+ \makebox[ \l__enumext_labelwidth_v_dim ][c]
+ {
+ \tl_use:N \l__enumext_label_font_style_v_tl
+ \__enumext_keyans_wrapper_label:n { \l__enumext_label_vi_tl }
+ }
+ \skip_horizontal:n { \l__enumext_labelsep_v_dim }
+ \__enumext_keyans_show_item_opt:
+ }
+ {
+ \bool_set_false:N \l__enumext_item_wrap_key_bool
+ \tl_use:N \l__enumext_label_font_style_v_tl
+ \__enumext_wrapper_label_v:n { \l__enumext_label_vi_tl }
+ }
+ }
+ }
+%% Set position of labels for |\anspic|.
+\cs_new_protected:Npn \__enumext_anspic_label_pos:nnn #1 #2 #3
+ {
+ \stepcounter { enumXvi }
+ \__enumext_anspic_body_dim:n { #3 }
+ \bool_if:NTF \l__enumext_anspic_label_above_bool
+ {
+ \__enumext_anspic_label:nn { #1 } { #2 }
+ }
+ {
+ \raisebox
+ {
+ -\dim_eval:n
+ {
+ \l__enumext_anspic_label_htdp_dim
+ + \l__enumext_anspic_body_htdp_dim
+ + \box_dp:N \strutbox
+ + \l__enumext_anspic_label_sep_skip
+ }
+ }
+ [ 0pt ] [ 0pt ]
+ {
+ \__enumext_anspic_label:nn { #1 } { #2 }
+ }
+ }
+ }
+%% Process all code for |\anspic| with tagging PDF support.
+\cs_new_protected:Nn \__enumext_anspic_args:nnn
+ {
+ \__enumext_anspic_start_list_tag:
+ \__enumext_anspic_label_pos:nnn { #1 } { #2 } { #3 }
+ \__enumext_anspic_stop_start_list_tag:
+ \bool_if:NTF \l__enumext_anspic_label_above_bool
+ {
+ \\[\l__enumext_anspic_label_sep_skip] #3
+ }
+ {
+ \\ #3
+ }
+ \__enumext_anspic_stop_list_tag:
+ }
+\cs_new_protected:Nn \__enumext_anspic_print:n
+ {
+ \clist_map_function:nN { #1 } \__enumext_anspic_row:n
+ }
+\cs_generate_variant:Nn \__enumext_anspic_print:n { e, V }
+\cs_new_protected:Nn \__enumext_anspic_row:n
+ {
+ \dim_set:Nn \l__enumext_anspic_mini_width_dim { \linewidth / #1 }
+ \int_set:Nn \l__enumext_anspic_above_int { \l__enumext_anspic_below_int }
+ \int_set:Nn \l__enumext_anspic_below_int { \l__enumext_anspic_above_int + #1 }
+ \int_step_inline:nnn
+ { \l__enumext_anspic_above_int + 1 }
+ { \l__enumext_anspic_below_int }
+ {
+ \IfDocumentMetadataTF
+ {
+ \tag_suspend:n {minipage}
+ } { }
+ \begin{minipage}[ \l__enumext_anspic_mini_pos_str ]{ \l__enumext_anspic_mini_width_dim }
+ \centering
+ \seq_item:Nn \l__enumext_anspic_args_seq { ##1 }
+ \end{minipage}
+ \IfDocumentMetadataTF
+ {
+ \tag_resume:n {minipage}
+ } { }
+ }
+ \par
+ }
+\cs_new_protected:Nn \__enumext_anspic_exec:
+ {
+ \tl_if_empty:NTF \l__enumext_anspic_layout_style_tl
+ {
+ \__enumext_anspic_print:e { \seq_count:N \l__enumext_anspic_args_seq }
+ }
+ {
+ \__enumext_anspic_print:V \l__enumext_anspic_layout_style_tl
+ }
+ }
+%% Define default item width (columns width) for |enumext*| and |keyans*| environments.
+\cs_new_protected:Nn \__enumext_starred_columns_set_vii:
+ {
+ \dim_compare:nNnT { \l__enumext_columns_sep_vii_dim } = { \c_zero_dim }
+ {
+ \dim_set:Nn \l__enumext_columns_sep_vii_dim
+ {
+ ( \l__enumext_labelwidth_vii_dim + \l__enumext_labelsep_vii_dim )
+ / \l__enumext_columns_vii_int
+ }
+ }
+ \int_set:Nn \l__enumext_tmpa_vii_int { \l__enumext_columns_vii_int - 1 }
+ \dim_set:Nn \l__enumext_item_width_vii_dim
+ {
+ ( \linewidth - \l__enumext_columns_sep_vii_dim * \l__enumext_tmpa_vii_int )
+ / \l__enumext_columns_vii_int
+ - \l__enumext_labelwidth_vii_dim
+ - \l__enumext_labelsep_vii_dim
+ }
+ \dim_compare:nNnT { \l__enumext_rightmargin_vii_dim } > { \c_zero_dim }
+ {
+ \dim_sub:Nn \l__enumext_item_width_vii_dim
+ {
+ ( \l__enumext_rightmargin_vii_dim * \l__enumext_tmpa_vii_int )
+ / \l__enumext_columns_vii_int
+ }
+ \dim_add:Nn \l__enumext_columns_sep_vii_dim
+ {
+ \l__enumext_rightmargin_vii_dim
+ }
+ }
+ }
+\cs_new_protected:Nn \__enumext_starred_columns_set_viii:
+ {
+ \dim_compare:nNnT { \l__enumext_columns_sep_viii_dim } = { \c_zero_dim }
+ {
+ \dim_set:Nn \l__enumext_columns_sep_viii_dim
+ {
+ ( \l__enumext_labelwidth_viii_dim + \l__enumext_labelsep_viii_dim )
+ / \l__enumext_columns_viii_int
+ }
+ }
+ \int_set:Nn \l__enumext_tmpa_viii_int { \l__enumext_columns_viii_int - 1 }
+ \dim_set:Nn \l__enumext_item_width_viii_dim
+ {
+ ( \linewidth - \l__enumext_columns_sep_viii_dim * \l__enumext_tmpa_viii_int )
+ / \l__enumext_columns_viii_int
+ - \l__enumext_labelwidth_viii_dim
+ - \l__enumext_labelsep_viii_dim
+ }
+ \dim_compare:nNnT { \l__enumext_rightmargin_viii_dim } > { \c_zero_dim }
+ {
+ \dim_sub:Nn \l__enumext_item_width_viii_dim
+ {
+ ( \l__enumext_rightmargin_viii_dim * \l__enumext_tmpa_vii_int )
+ / \l__enumext_columns_viii_int
+ }
+ \dim_add:Nn \l__enumext_columns_sep_viii_dim
+ {
+ \l__enumext_rightmargin_viii_dim
+ }
+ }
+ }
+%% Set width for joined item's for |enumext*| and |keyans*| environments.
+\cs_new_protected:Npn \__enumext_starred_joined_item_vii:n #1
+ {
+ \int_set:Nn \l__enumext_joined_item_vii_int {#1}
+ \int_compare:nNnT { \l__enumext_joined_item_vii_int } > { \l__enumext_columns_vii_int }
+ {
+ \msg_warning:nnee { enumext } { item-joined }
+ { \int_use:N \l__enumext_joined_item_vii_int }
+ { \int_use:N \l__enumext_columns_vii_int }
+ \int_set:Nn \l__enumext_joined_item_vii_int
+ {
+ \l__enumext_columns_vii_int - \l__enumext_item_column_pos_vii_int + 1
+ }
+ }
+ \int_compare:nNnT
+ { \l__enumext_joined_item_vii_int }
+ >
+ { \l__enumext_columns_vii_int - \l__enumext_item_column_pos_vii_int + 1 }
+ {
+ \msg_warning:nnee { enumext } { item-joined-columns }
+ { \int_use:N \l__enumext_joined_item_vii_int }
+ {
+ \int_eval:n
+ { \l__enumext_columns_vii_int - \l__enumext_item_column_pos_vii_int + 1 }
+ }
+ \int_set:Nn \l__enumext_joined_item_vii_int
+ {
+ \l__enumext_columns_vii_int - \l__enumext_item_column_pos_vii_int + 1
+ }
+ }
+ \int_compare:nNnTF { \l__enumext_joined_item_vii_int } > { 1 }
+ {
+ \int_set_eq:NN \l__enumext_joined_item_aux_vii_int \l__enumext_joined_item_vii_int
+ \int_decr:N \l__enumext_joined_item_aux_vii_int
+ \int_add:Nn \l__enumext_item_column_pos_vii_int { \l__enumext_joined_item_aux_vii_int }
+ \int_gadd:Nn \g__enumext_item_count_all_vii_int { \l__enumext_joined_item_aux_vii_int }
+ \dim_set:Nn \l__enumext_joined_width_vii_dim
+ {
+ \l__enumext_item_width_vii_dim * \l__enumext_joined_item_vii_int
+ + ( \l__enumext_labelwidth_vii_dim + \l__enumext_labelsep_vii_dim
+ + \l__enumext_columns_sep_vii_dim
+ )*\l__enumext_joined_item_aux_vii_int
+ }
+ \dim_set_eq:NN \itemwidth \l__enumext_joined_width_vii_dim
+ }
+ {
+ \dim_set_eq:NN \l__enumext_joined_width_vii_dim \l__enumext_item_width_vii_dim
+ \dim_set_eq:NN \itemwidth \l__enumext_item_width_vii_dim
+ }
+ }
+\cs_new_protected:Npn \__enumext_starred_joined_item_viii:n #1
+ {
+ \int_set:Nn \l__enumext_joined_item_viii_int {#1}
+ \int_compare:nNnT { \l__enumext_joined_item_viii_int } > { \l__enumext_columns_viii_int }
+ {
+ \msg_warning:nnee { enumext } { item-joined }
+ { \int_use:N \l__enumext_joined_item_viii_int }
+ { \int_use:N \l__enumext_columns_viii_int }
+ \int_set:Nn \l__enumext_joined_item_viii_int
+ {
+ \l__enumext_columns_viii_int - \l__enumext_item_column_pos_viii_int + 1
+ }
+ }
+ \int_compare:nNnT
+ { \l__enumext_joined_item_viii_int }
+ >
+ { \l__enumext_columns_viii_int - \l__enumext_item_column_pos_viii_int + 1 }
+ {
+ \msg_warning:nnee { enumext } { item-joined-columns }
+ { \int_use:N \l__enumext_joined_item_viii_int }
+ {
+ \int_eval:n
+ { \l__enumext_columns_viii_int - \l__enumext_item_column_pos_viii_int + 1 }
+ }
+ \int_set:Nn \l__enumext_joined_item_viii_int
+ {
+ \l__enumext_columns_viii_int - \l__enumext_item_column_pos_viii_int + 1
+ }
+ }
+ \int_compare:nNnTF { \l__enumext_joined_item_viii_int } > { 1 }
+ {
+ \int_set_eq:NN \l__enumext_joined_item_aux_viii_int \l__enumext_joined_item_viii_int
+ \int_decr:N \l__enumext_joined_item_aux_viii_int
+ \int_add:Nn \l__enumext_item_column_pos_viii_int { \l__enumext_joined_item_aux_viii_int }
+ \int_gadd:Nn \g__enumext_item_count_all_viii_int { \l__enumext_joined_item_aux_viii_int }
+ \dim_set:Nn \l__enumext_joined_width_viii_dim
+ {
+ \l__enumext_item_width_viii_dim * \l__enumext_joined_item_viii_int
+ + ( \l__enumext_labelwidth_viii_dim + \l__enumext_labelsep_viii_dim
+ + \l__enumext_columns_sep_viii_dim
+ )*\l__enumext_joined_item_aux_viii_int
+ }
+ \dim_set_eq:NN \itemwidth \l__enumext_joined_width_viii_dim
+ }
+ {
+ \dim_set_eq:NN \l__enumext_joined_width_viii_dim \l__enumext_item_width_viii_dim
+ \dim_set_eq:NN \itemwidth \l__enumext_item_width_viii_dim
+ }
+ }
+%% Start support for |mini-env| key in |enumext*| environment.
+\cs_new_protected:Nn \__enumext_start_mini_vii:
+ {
+ \dim_compare:nNnT { \l__enumext_minipage_right_vii_dim } > { \c_zero_dim }
+ {
+ \dim_set:Nn \l__enumext_minipage_left_vii_dim
+ {
+ \linewidth
+ - \l__enumext_minipage_right_vii_dim
+ - \l__enumext_minipage_hsep_vii_dim
+ }
+ \bool_set_true:N \l__enumext_minipage_active_vii_bool
+ \dim_gset_eq:NN
+ \g__enumext_minipage_right_vii_dim
+ \l__enumext_minipage_right_vii_dim
+ \__enumext_mini_addvspace_vii:
+ \nointerlineskip\noindent
+ \__enumext_mini_page{ \l__enumext_minipage_left_vii_dim }
+ }
+ }
+%% Stop support for |mini-env| key and stop |list| in |enumext*| environment.
+\cs_new_protected:Nn \__enumext_stop_mini_vii:
+ {
+ \bool_if:NTF \l__enumext_minipage_active_vii_bool
+ {
+ \__enumext_stop_list:
+ \__enumext_stop_store_level_vii:
+ \IfDocumentMetadataTF { \tag_resume:n {enumext*} } { }
+ \end__enumext_mini_page
+ \hfill
+ \bool_gset_true:N \g__enumext_minipage_active_vii_bool
+ }
+ {
+ \__enumext_stop_list:
+ \__enumext_stop_store_level_vii:
+ }
+ }
+%% Exec |mini-right|, |mini-right*| keys in |enumext*| environment.
+\__enumext_after_env:nn {enumext*}
+ {
+ \bool_if:NT \g__enumext_minipage_active_vii_bool
+ {
+ \__enumext_minipage:w [ t ] { \g__enumext_minipage_right_vii_dim }
+ \legacy_if_gset_false:n { @minipage }
+ \skip_vertical:N \c_zero_skip
+ \par\addvspace { \g__enumext_minipage_right_skip }
+ \bool_if:NF \g__enumext_minipage_center_vii_bool
+ {
+ \tl_put_left:Nn \g__enumext_miniright_code_vii_tl
+ {
+ \centering
+ }
+ }
+ \vbox_set_top:Nn \l__enumext_miniright_code_vii_box
+ {
+ \tl_use:N \g__enumext_miniright_code_vii_tl
+ }
+ \box_use_drop:N \l__enumext_miniright_code_vii_box
+ \skip_vertical:N \c_zero_skip
+ \__enumext_endminipage:
+ \par\addvspace{ \g__enumext_minipage_after_skip }
+ }
+ \bool_gset_false:N \g__enumext_minipage_active_vii_bool
+ \bool_gset_true:N \g__enumext_minipage_center_vii_bool
+ \tl_gclear:N \g__enumext_miniright_code_vii_tl
+ \dim_gzero:N \g__enumext_minipage_right_vii_dim
+ \bool_gset_false:N \g__enumext_starred_bool
+ }
+%% Support for |mini-env|, |mini-right| and |mini-right*| key in |keyans*| environment.
+\cs_new_protected:Nn \__enumext_start_mini_viii:
+ {
+ \dim_compare:nNnT { \l__enumext_minipage_right_viii_dim } > { \c_zero_dim }
+ {
+ \dim_set:Nn \l__enumext_minipage_left_viii_dim
+ {
+ \linewidth
+ - \l__enumext_minipage_right_viii_dim
+ - \l__enumext_minipage_hsep_viii_dim
+ }
+ \bool_set_true:N \l__enumext_minipage_active_viii_bool
+ \dim_gset_eq:NN
+ \g__enumext_minipage_right_viii_dim
+ \l__enumext_minipage_right_viii_dim
+ \__enumext_mini_addvspace_viii:
+ \nointerlineskip\noindent
+ \__enumext_mini_page{ \l__enumext_minipage_left_viii_dim }
+ }
+ }
+\cs_new_protected:Nn \__enumext_stop_mini_viii:
+ {
+ \bool_if:NTF \l__enumext_minipage_active_viii_bool
+ {
+ \__enumext_stop_list:
+ \IfDocumentMetadataTF { \tag_resume:n {keyans*} } { }
+ \end__enumext_mini_page
+ \hfill
+ \bool_gset_true:N \g__enumext_minipage_active_viii_bool
+ }
+ {
+ \__enumext_stop_list:
+ }
+ }
+\__enumext_after_env:nn {keyans*}
+ {
+ \bool_if:NT \g__enumext_minipage_active_viii_bool
+ {
+ \__enumext_mini_page{ \g__enumext_minipage_right_viii_dim }
+ \par\addvspace { \g__enumext_minipage_right_skip }
+ \bool_if:NF \g__enumext_minipage_center_viii_bool
+ {
+ \tl_put_left:Nn \g__enumext_miniright_code_viii_tl
+ {
+ \centering
+ }
+ }
+ \vbox_set_top:Nn \l__enumext_miniright_code_viii_box
+ {
+ \tl_use:N \g__enumext_miniright_code_viii_tl
+ }
+ \box_use_drop:N \l__enumext_miniright_code_viii_box
+ \end__enumext_mini_page
+ \par\addvspace{ \g__enumext_minipage_after_skip }
+ }
+ \bool_gset_false:N \g__enumext_minipage_active_viii_bool
+ \bool_gset_true:N \g__enumext_minipage_center_viii_bool
+ \tl_gclear:N \g__enumext_miniright_code_viii_tl
+ \dim_gzero:N \g__enumext_minipage_right_viii_dim
+ }
+%% Define |enumext*|
+\NewDocumentEnvironment{enumext*}{ o }
+ {
+ \__enumext_safe_exec_vii:
+ \__enumext_parse_keys_vii:n {#1}
+ \__enumext_before_list_vii:
+ \__enumext_start_store_level_vii:
+ \__enumext_start_list:nn { }
+ {
+ \__enumext_list_arg_two_vii:
+ \__enumext_before_keys_exec_vii:
+ }
+ \IfDocumentMetadataTF { \tag_suspend:n {enumext*} } { }
+ \__enumext_starred_columns_set_vii:
+ \item[] \scan_stop:
+ \cs_set_eq:NN \__enumext_stop_item_tmp_vii: \__enumext_first_item_tmp_vii:
+ \cs_set_eq:NN \item \__enumext_start_item_tmp_vii:
+ \ignorespaces
+ }
+ {
+ \IfDocumentMetadataTF { \tag_struct_end:n {tag=text-unit} } { }
+ \__enumext_stop_item_tmp_vii:
+ \__enumext_remove_extra_parsep_vii:
+ \__enumext_after_list_vii:
+ }
+%% Safe exec for |enumext*| environment (set vars for storage system).
+\cs_new_protected:Nn \__enumext_safe_exec_vii:
+ {
+ \__enumext_is_not_nested:
+ \__enumext_internal_mini_page:
+ \int_incr:N \l__enumext_level_h_int
+ \int_compare:nNnT { \l__enumext_level_h_int } > { 1 }
+ {
+ \msg_error:nn { enumext } { nested }
+ }
+ \int_compare:nNnT { \l__enumext_keyans_level_h_int } = { 1 }
+ {
+ \msg_error:nnn { enumext } { nested-horizontal } { keyans*}
+ }
+ \bool_set_true:N \l__enumext_starred_bool
+ \bool_set_false:N \l__enumext_standar_bool
+ \__enumext_is_on_first_level:
+ }
+%% Parse |key=val| and store keys for |enumext*| environment.
+\cs_new_protected:Npn \__enumext_parse_keys_vii:n #1
+ {
+ \tl_if_novalue:nF {#1}
+ {
+ \str_clear:N \l__enumext_series_str
+ \keys_set:nn { enumext / enumext* } {#1}
+ \__enumext_parse_series:n {#1}
+ \__enumext_store_active_keys_vii:n {#1}
+ }
+ }
+\cs_new_protected:Nn \__enumext_before_list_vii:
+ {
+ \__enumext_vspace_above_vii:
+ \__enumext_check_ans_active:
+ \__enumext_before_args_exec_vii:
+ \__enumext_start_mini_vii:
+ }
+\cs_new_protected:Nn \__enumext_after_list_vii:
+ {
+ \__enumext_stop_mini_vii:
+ \__enumext_after_stop_list_vii:
+ \__enumext_check_ans_key_hook:
+ \__enumext_vspace_below_vii:
+ \bool_set_false:N \l__enumext_starred_bool
+ \__enumext_resume_save_counter:
+ }
+\cs_new_protected:Nn \__enumext_start_store_level_vii:
+ {
+ \bool_if:NT \l__enumext_store_active_bool
+ {
+ \int_compare:nNnT { \l__enumext_level_int } > { 0 }
+ {
+ \__enumext_store_level_open_vii:
+ }
+ }
+ }
+\cs_new_protected:Nn \__enumext_stop_store_level_vii:
+ {
+ \bool_if:NT \l__enumext_store_active_bool
+ {
+ \int_compare:nNnT { \l__enumext_level_int } > { 0 }
+ {
+ \__enumext_store_level_close_vii:
+ }
+ }
+ }
+%% Remove |\labelwidth+\labelsep| on left in first |\item| for |enumext*| environment.
+\cs_new_protected_nopar:Nn \__enumext_first_item_tmp_vii:
+ {
+ \skip_horizontal:n
+ {
+ -\l__enumext_labelwidth_vii_dim - \l__enumext_labelsep_vii_dim
+ }
+ \ignorespaces
+ }
+%% Start boxed item's for |enumext*| environment.
+\cs_new_protected_nopar:Nn \__enumext_start_item_tmp_vii:
+ {
+ \__enumext_stop_item_tmp_vii:
+ \int_incr:N \l__enumext_item_column_pos_vii_int
+ \int_gincr:N \g__enumext_item_count_all_vii_int
+ \__enumext_item_peek_args_vii:
+ }
+%% Peek argument for \item()*[][] for |enumext*| environment.
+\cs_new_protected:Nn \__enumext_item_peek_args_vii:
+ {
+ \peek_meaning:NTF (
+ { \__enumext_joined_item_vii:w }
+ { \__enumext_joined_item_vii:w (1) }
+ }
+%% Joined item's for |enumext*| environment.
+\cs_new_protected:Npn \__enumext_joined_item_vii:w (#1)
+ {
+ \__enumext_starred_joined_item_vii:n {#1}
+ \peek_meaning_remove:NTF *
+ { \__enumext_starred_item_vii:w }
+ { \__enumext_standar_item_vii:w }
+ }
+%% Set \item[opt] for |enumext*| environment.
+\cs_new_protected:Npn \__enumext_standar_item_vii:w
+ {
+ \bool_set_false:N \l__enumext_item_starred_vii_bool
+ \peek_meaning:NTF [
+ {
+ \bool_set_eq:NN \l__enumext_wrap_label_vii_bool \l__enumext_wrap_label_opt_vii_bool
+ \__enumext_start_item_vii:w
+ }
+ {
+ \bool_set_true:N \l__enumext_wrap_label_vii_bool
+ \legacy_if_set_true:n { @noitemarg }
+ \__enumext_start_item_vii:w [ \l__enumext_label_vii_tl ] \ignorespaces
+ }
+ }
+%% Set \item*[sym][sep] for |enumext*| environment.
+\cs_new_protected:Npn \__enumext_starred_item_vii:w
+ {
+ \bool_set_true:N \l__enumext_item_starred_vii_bool
+ \bool_set_true:N \l__enumext_wrap_label_vii_bool
+ \peek_meaning:NTF [
+ { \__enumext_starred_item_vii_aux_i:w }
+ { \__enumext_starred_item_vii_aux_ii:w }
+ }
+\cs_new_protected:Npn \__enumext_starred_item_vii_aux_i:w [#1]
+ {
+ \tl_gset:Nn \g__enumext_item_symbol_aux_vii_tl {#1}
+ \__enumext_starred_item_vii_aux_ii:w
+ }
+\cs_new_protected:Npn \__enumext_starred_item_vii_aux_ii:w
+ {
+ \peek_meaning:NTF [
+ { \__enumext_starred_item_vii_aux_iii:w }
+ {
+ \dim_set_eq:NN \l__enumext_item_symbol_sep_vii_dim \l__enumext_labelsep_vii_dim
+ \legacy_if_set_true:n { @noitemarg }
+ \__enumext_start_item_vii:w [ \l__enumext_label_vii_tl ] \ignorespaces
+ }
+ }
+\cs_new_protected:Npn \__enumext_starred_item_vii_aux_iii:w [#1]
+ {
+ \dim_set:Nn \l__enumext_item_symbol_sep_vii_dim {#1}
+ \legacy_if_set_true:n { @noitemarg }
+ \__enumext_start_item_vii:w [ \l__enumext_label_vii_tl ] \ignorespaces
+ }
+%% Fake \makelabel definition for |enumext*| environment.
+\cs_new_protected_nopar:Npn \__enumext_fake_make_label_vii:n #1
+ {
+ \legacy_if:nT { @noitemarg }
+ {
+ \legacy_if_set_false:n { @noitemarg }
+ \legacy_if:nT { @nmbrlist }
+ {
+ \IfDocumentMetadataTF
+ {
+ \bool_if:NT \l__enumext_hyperref_bool
+ {
+ \legacy_if_set_true:n { @hyper@item }
+ }
+ } { }
+ \refstepcounter{enumXvii}
+ \bool_if:NT \l__enumext_check_answers_bool
+ {
+ \int_gincr:N \g__enumext_item_number_int
+ \bool_set_true:N \l__enumext_item_number_bool
+ }
+ }
+ }
+ \bool_if:NT \l__enumext_item_starred_vii_bool
+ {
+ \tl_if_blank:VT \g__enumext_item_symbol_aux_vii_tl
+ {
+ \tl_gset_eq:NN
+ \g__enumext_item_symbol_aux_vii_tl \l__enumext_item_symbol_vii_tl
+ }
+ \mode_leave_vertical:
+ \skip_horizontal:n { -\l__enumext_item_symbol_sep_vii_dim }
+ \hbox_overlap_left:n { \g__enumext_item_symbol_aux_vii_tl }
+ \skip_horizontal:N \l__enumext_item_symbol_sep_vii_dim
+ \tl_gclear:N \g__enumext_item_symbol_aux_vii_tl
+ }
+ \makebox[ \l__enumext_labelwidth_vii_dim ][ \l__enumext_align_label_vii_str ]
+ {
+ \tl_use:N \l__enumext_label_font_style_vii_tl
+ \bool_if:NTF \l__enumext_wrap_label_vii_bool
+ {
+ \__enumext_wrapper_label_vii:n {#1}
+ }
+ { #1 }
+ }
+ \skip_horizontal:N \l__enumext_labelsep_vii_dim \ignorespaces
+ }
+\cs_new_protected_nopar:Npn \__enumext_start_item_vii:w [#1]
+ {
+ \cs_set_eq:NN \__enumext_stop_item_tmp_vii: \__enumext_stop_item_vii:
+ \hbox_set_to_wd:Nnw \l__enumext_item_text_vii_box
+ {
+ \l__enumext_joined_width_vii_dim
+ + \l__enumext_labelwidth_vii_dim
+ + \l__enumext_labelsep_vii_dim
+ }
+ \__enumext_renew_footnote_starred:
+ \__enumext_start_list_tag:n {enumext*}
+ \__enumext_fake_make_label_vii:n {#1}
+ \__enumext_stop_start_list_tag:
+ \__enumext_minipage:w [ t ]{ \l__enumext_joined_width_vii_dim }
+ \dim_set_eq:NN \parindent \l__enumext_listparindent_vii_dim
+ \skip_set_eq:NN \parskip \l__enumext_parsep_vii_skip
+ \__enumext_unskip_unkern:
+ \__enumext_unskip_unkern:
+ \skip_horizontal:n { -\l__enumext_listparindent_vii_dim } \ignorespaces
+ \tl_use:N \l__enumext_fake_item_indent_vii_tl
+ \tl_use:N \l__enumext_after_list_args_vii_tl
+ }
+\cs_new_protected_nopar:Nn \__enumext_stop_item_vii:
+ {
+ \__enumext_endminipage:
+ \__enumext_stop_list_tag:n {enumext*}
+ \hbox_set_end:
+ \int_set:Nn \hbadness { 10000 }
+ \box_use_drop:N \l__enumext_item_text_vii_box
+ \int_compare:nNnTF
+ { \l__enumext_item_column_pos_vii_int } = { \l__enumext_columns_vii_int }
+ {
+ \par\noindent
+ \int_zero:N \l__enumext_item_column_pos_vii_int
+ }
+ {
+ \skip_horizontal:N \l__enumext_columns_sep_vii_dim
+ }
+ }
+%% Remove extra \parsep in |enumext*| environment.
+\cs_new_protected:Nn \__enumext_remove_extra_parsep_vii:
+ {
+ \int_compare:nNnT
+ {
+ \int_mod:nn
+ { \g__enumext_item_count_all_vii_int } { \l__enumext_columns_vii_int }
+ }
+ =
+ { 0 }
+ {
+ \para_end:
+ \skip_vertical:n { -\l__enumext_itemsep_vii_skip }
+ \skip_vertical:N \c_zero_skip
+ \int_gzero:N \g__enumext_item_count_all_vii_int
+ }
+ }
+%% Execute |check-ans| key out of |enumext*| environment.
+\__enumext_after_env:nn {enumext*}
+ {
+ \__enumext_execute_after_env:
+ }
+%% Define |keyans*| environment.
+\NewDocumentEnvironment{keyans*}{ o }
+ {
+ \__enumext_safe_exec_viii:
+ \__enumext_parse_keys_viii:n {#1}
+ \__enumext_before_list_viii:
+ \__enumext_start_list:nn { }
+ {
+ \__enumext_list_arg_two_viii:
+ \__enumext_before_keys_exec_viii:
+ }
+ \IfDocumentMetadataTF { \tag_suspend:n {keyans*} } { }
+ \__enumext_starred_columns_set_viii:
+ \item[] \scan_stop:
+ \cs_set_eq:NN \__enumext_stop_item_tmp_viii: \__enumext_first_item_tmp_viii:
+ \cs_set_eq:NN \item \__enumext_start_item_tmp_viii:
+ \ignorespaces
+ }
+ {
+ \IfDocumentMetadataTF { \tag_struct_end:n {tag=text-unit} } { }
+ \__enumext_stop_item_tmp_viii:
+ \__enumext_remove_extra_parsep_viii:
+ \__enumext_check_starred_cmd:n { item }
+ \__enumext_after_list_viii:
+ }
+%% Test deep-level for |keyans*| environment and set bool vars.
+\cs_new_protected:Nn \__enumext_safe_exec_viii:
+ {
+ \bool_if:NF \l__enumext_store_active_bool
+ {
+ \msg_error:nnnn { enumext } { wrong-place }{ keyans* }{ save-ans }
+ }
+ \int_incr:N \l__enumext_keyans_level_h_int
+ \int_compare:nNnT { \l__enumext_keyans_level_h_int } > { 1 }
+ {
+ \msg_error:nn { enumext } { nested }
+ }
+ \__enumext_keyans_name_and_start:
+ \bool_if:NT \l__enumext_starred_bool
+ {
+ \msg_error:nnn { enumext } { nested-horizontal } { enumext* }
+ }
+ \bool_set_true:N \l__enumext_starred_bool
+ % Set false for interfering with enumext nested in keyans* (yes, its possible and crayze)
+ \bool_set_false:N \l__enumext_store_active_bool
+ \int_compare:nNnT { \l__enumext_level_int } > { 1 }
+ {
+ \msg_error:nn { enumext } { keyans-wrong-level }
+ }
+ }
+%% Parse |key=val| and store keys for |keyans*| environment.
+\cs_new_protected:Npn \__enumext_parse_keys_viii:n #1
+ {
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { enumext / keyans* } {#1}
+ }
+ }
+\cs_new_protected:Nn \__enumext_before_list_viii:
+ {
+ \__enumext_vspace_above_viii:
+ \__enumext_before_args_exec_viii:
+ \__enumext_start_mini_viii:
+ }
+\cs_new_protected:Nn \__enumext_after_list_viii:
+ {
+ \__enumext_stop_mini_viii:
+ \__enumext_after_stop_list_viii:
+ \__enumext_vspace_below_viii:
+ }
+%% Remove |\labelwidth+\labelsep| on left in first |\item| for |keyans*| environment.
+\cs_new_protected_nopar:Nn \__enumext_first_item_tmp_viii:
+ {
+ \skip_horizontal:n
+ {
+ -\l__enumext_labelwidth_viii_dim - \l__enumext_labelsep_viii_dim
+ }
+ \ignorespaces
+ }
+%% Start boxed item's for |keyans*| environment.
+\cs_new_protected_nopar:Nn \__enumext_start_item_tmp_viii:
+ {
+ \__enumext_stop_item_tmp_viii:
+ \int_incr:N \l__enumext_item_column_pos_viii_int
+ \int_gincr:N \g__enumext_item_count_all_viii_int
+ \__enumext_item_peek_args_viii:
+ }
+%% Peek argument for \item(number)*[opt] for |keyans*| environment.
+\cs_new_protected:Nn \__enumext_item_peek_args_viii:
+ {
+ \peek_meaning:NTF (
+ { \__enumext_joined_item_viii:w }
+ { \__enumext_joined_item_viii:w (1) }
+ }
+%% Joined item's for |keyans*| environment.
+\cs_new_protected:Npn \__enumext_joined_item_viii:w (#1)
+ {
+ \__enumext_starred_joined_item_viii:n {#1}
+ \peek_meaning_remove:NTF *
+ { \__enumext_starred_item_viii:w }
+ { \__enumext_standar_item_viii:w }
+ }
+%% Set standard \item[opt] for |keyans*| environment.
+\cs_new_protected:Npn \__enumext_standar_item_viii:w
+ {
+ \bool_set_false:N \l__enumext_item_starred_viii_bool
+ \bool_set_false:N \l__enumext_item_wrap_key_bool
+ \peek_meaning:NTF [
+ {
+ \bool_set_eq:NN \l__enumext_wrap_label_viii_bool \l__enumext_wrap_label_opt_viii_bool
+ \__enumext_start_item_viii:w
+ }
+ {
+ \bool_set_true:N \l__enumext_wrap_label_viii_bool
+ \legacy_if_set_true:n { @noitemarg }
+ \__enumext_start_item_viii:w [ \l__enumext_label_viii_tl ] \ignorespaces
+ }
+ }
+%% Set \item*[content] for |keyans*| environment.
+\cs_new_protected:Npn \__enumext_starred_item_viii:w
+ {
+ \bool_set_true:N \l__enumext_item_starred_viii_bool
+ \bool_set_true:N \l__enumext_item_wrap_key_bool
+ \bool_set_true:N \l__enumext_wrap_label_viii_bool
+ \peek_meaning:NTF [
+ { \__enumext_starred_item_viii_aux_i:w }
+ { \__enumext_starred_item_viii_aux_ii:w }
+ }
+\cs_new_protected:Npn \__enumext_starred_item_viii_aux_i:w [#1]
+ {
+ \tl_clear:N \l__enumext_store_current_label_tl
+ \tl_if_novalue:nF { #1 }
+ {
+ \tl_if_empty:NF \l__enumext_store_keyans_item_opt_sep_viii_tl
+ {
+ \tl_put_right:Ne \l__enumext_store_current_label_tl
+ {
+ \l__enumext_store_keyans_item_opt_sep_viii_tl
+ }
+ \tl_put_right:Ne \l__enumext_store_current_label_tl { #1 }
+ }
+ \tl_set:Ne \l__enumext_store_current_opt_arg_tl { #1 }
+ }
+ \__enumext_starred_item_viii_aux_ii:w
+ }
+\cs_new_protected:Npn \__enumext_starred_item_viii_aux_ii:w
+ {
+ \legacy_if_set_true:n { @noitemarg }
+ \__enumext_start_item_viii:w [ \l__enumext_label_viii_tl ] \ignorespaces
+ }
+%% Set \item*[content] for |keyans*| environment.
+\cs_new_protected:Nn \__enumext_keyans_starred_item_star:
+ {
+ \tl_put_left:Ne \l__enumext_store_current_label_tl { \l__enumext_label_viii_tl }
+ \__enumext_store_addto_prop:V \l__enumext_store_current_label_tl
+ \__enumext_keyans_store_ref:
+ \tl_put_left:Ne \l__enumext_store_current_label_tl { \item }
+ \__enumext_keyans_addto_seq_link:
+ \int_gincr:N \g__enumext_check_starred_cmd_int
+ \dim_compare:nNnT { \l__enumext_mark_sym_sep_viii_dim } = { \c_zero_dim }
+ {
+ \dim_set:Nn \l__enumext_mark_sym_sep_viii_dim { \l__enumext_labelsep_viii_dim }
+ }
+ \bool_if:NT \l__enumext_show_answer_bool
+ {
+ \tl_set_eq:NN \l__enumext_mark_answer_sym_tl \l__enumext_mark_answer_sym_viii_tl
+ \str_set_eq:NN \l__enumext_mark_position_str \l__enumext_mark_position_viii_str
+ \__enumext_print_keyans_box:NN
+ \l__enumext_labelwidth_viii_dim \l__enumext_mark_sym_sep_viii_dim
+ }
+ \bool_if:NT \l__enumext_show_position_bool
+ {
+ \tl_set:Ne \l__enumext_mark_answer_sym_tl
+ {
+ \group_begin:
+ \exp_not:N \normalfont
+ \exp_not:N \footnotesize [ \int_eval:n
+ {
+ \prop_count:c { g__enumext_ \l__enumext_store_name_tl _prop }
+ }
+ ]
+ \group_end:
+ }
+ \str_set_eq:NN \l__enumext_mark_position_str \l__enumext_mark_position_viii_str
+ \__enumext_print_keyans_box:NN
+ \l__enumext_labelwidth_viii_dim \l__enumext_mark_sym_sep_viii_dim
+ }
+ }
+%% Define a fake |\makelabel| for |keyans*| environment.
+\cs_new_protected:Npn \__enumext_keyans_wraper_label_viii:n #1
+ {
+ \bool_lazy_all:nT
+ {
+ { \bool_if_p:N \l__enumext_wrap_label_viii_bool }
+ { \bool_if_p:N \l__enumext_show_answer_bool }
+ { \bool_if_p:N \l__enumext_item_wrap_key_bool }
+ { \cs_if_exist_p:N \__enumext_keyans_wrapper_item_viii:n }
+ }
+ {
+ \cs_set_eq:NN
+ \__enumext_wrapper_label_viii:n \__enumext_keyans_wrapper_item_viii:n
+ }
+ \bool_if:NTF \l__enumext_wrap_label_viii_bool
+ {
+ \__enumext_wrapper_label_viii:n {#1}
+ }
+ { #1 }
+ }
+\cs_new_protected_nopar:Npn \__enumext_fake_make_label_viii:n #1
+ {
+ \legacy_if:nT { @noitemarg }
+ {
+ \legacy_if_set_false:n { @noitemarg }
+ \legacy_if:nT { @nmbrlist }
+ {
+ \refstepcounter{enumXviii}
+ }
+ }
+ \bool_if:NT \l__enumext_item_starred_viii_bool
+ {
+ \__enumext_keyans_starred_item_star:
+ }
+ \makebox[ \l__enumext_labelwidth_viii_dim ][ \l__enumext_align_label_viii_str ]
+ {
+ \tl_use:N \l__enumext_label_font_style_viii_tl
+ \__enumext_keyans_wraper_label_viii:n {#1}
+ }
+ \skip_horizontal:N \l__enumext_labelsep_viii_dim \ignorespaces
+ }
+%% Real |\item| definition for |keyans*| environment.
+\cs_new_protected_nopar:Npn \__enumext_start_item_viii:w [#1]
+ {
+ \cs_set_eq:NN \__enumext_stop_item_tmp_viii: \__enumext_stop_item_viii:
+ \hbox_set_to_wd:Nnw \l__enumext_item_text_viii_box
+ {
+ \l__enumext_joined_width_viii_dim
+ + \l__enumext_labelwidth_viii_dim
+ + \l__enumext_labelsep_viii_dim
+ }
+ \__enumext_renew_footnote_starred:
+ \__enumext_start_list_tag:n {keyans*}
+ \__enumext_fake_make_label_viii:n {#1}
+ \__enumext_stop_start_list_tag:
+ \__enumext_minipage:w [ t ]{ \l__enumext_joined_width_viii_dim }
+ \dim_set_eq:NN \parindent \l__enumext_listparindent_viii_dim
+ \skip_set_eq:NN \parskip \l__enumext_parsep_viii_skip
+ \__enumext_unskip_unkern:
+ \__enumext_unskip_unkern:
+ \skip_horizontal:n { -\l__enumext_listparindent_viii_dim } \ignorespaces
+ \tl_use:N \l__enumext_fake_item_indent_viii_tl
+ \bool_if:NT \l__enumext_item_starred_viii_bool
+ {
+ \__enumext_keyans_show_item_opt_viii:
+ }
+ \tl_use:N \l__enumext_after_list_args_viii_tl
+ }
+\cs_new_protected_nopar:Nn \__enumext_stop_item_viii:
+ {
+ \__enumext_endminipage:
+ \__enumext_stop_list_tag:n {keyans*}
+ \hbox_set_end:
+ \int_set:Nn \hbadness { 10000 }
+ \box_use_drop:N \l__enumext_item_text_viii_box
+ \int_compare:nNnTF
+ { \l__enumext_item_column_pos_viii_int } = { \l__enumext_columns_viii_int }
+ {
+ \par\noindent
+ \int_zero:N \l__enumext_item_column_pos_viii_int
+ }
+ {
+ \skip_horizontal:N \l__enumext_columns_sep_viii_dim
+ }
+ }
+%% Remove extra \parsep in |keyans*| environment.
+\cs_new_protected:Nn \__enumext_remove_extra_parsep_viii:
+ {
+ \int_compare:nNnT
+ {
+ \int_mod:nn
+ { \g__enumext_item_count_all_viii_int }
+ { \l__enumext_columns_viii_int }
+ }
+ =
+ { 0 }
+ {
+ \para_end:
+ \skip_vertical:n { -\l__enumext_itemsep_viii_skip }
+ \skip_vertical:N \c_zero_skip
+ \int_gzero:N \g__enumext_item_count_all_viii_int
+ }
+ }
+%% Define |\getkeyans|.
+\NewDocumentCommand \getkeyans { m }
+ {
+ \exp_args:Ne \__enumext_getkeyans_aux:n
+ { \tl_to_str:e { \text_expand:n {#1} } }
+ }
+%% Internal functions for |\getkeyans|.
+\cs_new_protected:Npn \__enumext_getkeyans_aux:n #1
+ {
+ \str_if_in:nnTF {#1} { : }
+ {
+ \use:e
+ {
+ \cs_set:Npn \exp_not:N \__enumext_tmp:w ##1 \c_colon_str ##2 \scan_stop:
+ { {##1} {##2} }
+ }
+ \exp_after:wN \__enumext_getkeyans:nn \__enumext_tmp:w #1 \scan_stop:
+ }
+ { \msg_error:nnn { enumext } { missing-colon } {#1} }
+ }
+\cs_new_protected:Npn \__enumext_getkeyans:nn #1 #2
+ {
+ \prop_if_exist:cTF { g__enumext_#1_prop }
+ {
+ \prop_item:cn { g__enumext_#1_prop }{#2}
+ }
+ {
+ \msg_error:nnn { enumext } { undefined-storage-anskey } {#1}
+ }
+ }
+%% Add keys for |\printkeyans|.
+\keys_define:nn { enumext / print }
+ {
+ print* .code:n = \keys_precompile:neN { enumext / enumext* }
+ { \__enumext_filter_save_key:n {#1} }
+ \l__enumext_print_keyans_starred_tl, % starred cmd
+ print* .initial:n = { labelwidth=0pt, labelsep=0.3333em, itemindent=0pt, list-offset=0pt,
+ rightmargin=0pt, listparindent=0pt, nosep, label=\arabic*.,
+ columns=2, first=\small, font=\small },
+ print-1 .code:n = \keys_precompile:neN { enumext / level-1 }
+ { \__enumext_filter_save_key:n {#1} }
+ \l__enumext_print_keyans_i_tl,
+ print-1 .initial:n = { labelwidth=0pt, labelsep=0.3333em, itemindent=0pt, list-offset=0pt,
+ rightmargin=0pt, listparindent=0pt, nosep, label=\arabic*.,
+ columns=2, first=\small, font=\small },
+ print-2 .code:n = \keys_precompile:neN { enumext / level-2 }
+ { \__enumext_filter_save_key:n {#1} }
+ \l__enumext_print_keyans_ii_tl,
+ print-2 .initial:n = { labelwidth=0pt, labelsep=0.3333em, itemindent=0pt, list-offset=0pt,
+ rightmargin=0pt, listparindent=0pt, nosep, label=(\alph*),
+ first=\small, font=\small },
+ print-3 .code:n = \keys_precompile:neN { enumext / level-3 }
+ { \__enumext_filter_save_key:n {#1} }
+ \l__enumext_print_keyans_iii_tl,
+ print-3 .initial:n = { labelwidth=0pt, labelsep=0.3333em, itemindent=0pt, list-offset=0pt,
+ rightmargin=0pt, listparindent=0pt, nosep, label=\roman*.,
+ first=\small, font=\small },
+ print-4 .code:n = \keys_precompile:neN { enumext / level-4 }
+ { \__enumext_filter_save_key:n {#1} }
+ \l__enumext_print_keyans_iv_tl,
+ print-4 .initial:n = { labelwidth=0pt, labelsep=0.3333em, itemindent=0pt, list-offset=0pt,
+ rightmargin=0pt, listparindent=0pt, nosep, label=\Alph*.,
+ first=\small, font=\small },
+ print-* .code:n = \keys_precompile:neN { enumext / enumext* }
+ { \__enumext_filter_save_key:n {#1} }
+ \l__enumext_print_keyans_vii_tl, % starred nested
+ print-* .initial:n = { labelwidth=0pt, labelsep=0.3333em, itemindent=0pt, list-offset=0pt,
+ rightmargin=0pt, listparindent=0pt, nosep, label=\arabic*.,
+ first=\small, font=\small },
+ }
+%% Define |\printkeyans|.
+\NewDocumentCommand \printkeyans { s O{} m }
+ {
+ \group_begin:
+ \tl_use:N \l__enumext_print_keyans_i_tl
+ \tl_use:N \l__enumext_print_keyans_ii_tl
+ \tl_use:N \l__enumext_print_keyans_iii_tl
+ \tl_use:N \l__enumext_print_keyans_iv_tl
+ \tl_use:N \l__enumext_print_keyans_vii_tl
+ \__enumext_printkeyans:nnn { #1 } { #2 } { #3 }
+ \group_end:
+ }
+%% Internal function for |\printkeyans|.
+\cs_new_protected:Npn \__enumext_printkeyans:nnn #1 #2 #3
+ {
+ \seq_if_exist:cTF { g__enumext_#3_seq }
+ {
+ \seq_if_empty:cF { g__enumext_#3_seq }
+ {
+ \bool_if:nTF {#1}
+ {
+ \seq_if_in:cnTF { g__enumext_#3_seq } { \end{enumext*} }
+ {
+ \msg_error:nnnn { enumext } { print-starred } {#3} { enumext* }
+ }
+ {
+ \tl_use:N \l__enumext_print_keyans_starred_tl
+ \bool_set_true:N \l__enumext_base_line_fix_bool
+ \bool_set_true:N \l__enumext_print_keyans_star_bool
+ \begin{enumext*}[#2]
+ \seq_map_inline:cn { g__enumext_#3_seq } { ##1 }
+ \end{enumext*}
+ \bool_set_false:N \l__enumext_base_line_fix_bool
+ \bool_set_false:N \l__enumext_print_keyans_star_bool
+ }
+ }
+ {
+ \begin{enumext}[#2]
+ \seq_map_inline:cn { g__enumext_#3_seq } { ##1 }
+ \end{enumext}
+ }
+ }
+ }
+ {
+ \msg_error:nnn { enumext } { undefined-storage-anskey } {#3}
+ }
+ }
+%% Internal function for filter keys in |\setenumext| for first level.
+\cs_new:Npn \__enumext_filter_first_level:n #1
+ {
+ \use:e
+ {
+ \keyval_parse:NNn
+ \__enumext_filter_first_level_key:n
+ \__enumext_filter_first_level_pair:nn {#1}
+ }
+ }
+\cs_new:Npn \__enumext_filter_first_level_key:n #1
+ {
+ \str_case:nnF {#1}
+ {
+ { resume } {}
+ { resume* } {}
+ }
+ { , { \exp_not:n {#1} } }
+ }
+\cs_new:Npn \__enumext_filter_first_level_pair:nn #1#2
+ {
+ \str_case:nnF {#1}
+ {
+ { series } {}
+ { resume } {}
+ { save-ans } {}
+ }
+ { , { \exp_not:n {#1} } = { \exp_not:n {#2} } }
+ }
+%% Add keys for |\setenumext|.
+\keys_define:nn { enumext / meta-families }
+ {
+ enumext-1 .code:n =
+ {
+ \keys_set:ne { enumext / level-1 }
+ {
+ \__enumext_filter_first_level:n {#1}
+ }
+ } ,
+ enumext-2 .code:n = { \keys_set:nn { enumext / level-2 } {#1} } ,
+ enumext-3 .code:n = { \keys_set:nn { enumext / level-3 } {#1} } ,
+ enumext-4 .code:n = { \keys_set:nn { enumext / level-4 } {#1} } ,
+ keyans .code:n = { \keys_set:nn { enumext / keyans } {#1} } ,
+ enumext* .code:n =
+ {
+ \keys_set:ne { enumext / enumext* }
+ {
+ \__enumext_filter_first_level:n {#1}
+ }
+ } ,
+ keyans* .code:n = { \keys_set:nn { enumext / keyans* } {#1} } ,
+ print* .code:n = { \keys_set:nn { enumext / print } { print* = {#1} } } ,
+ print-1 .code:n = { \keys_set:nn { enumext / print } { print-1 = {#1} } } ,
+ print-2 .code:n = { \keys_set:nn { enumext / print } { print-2 = {#1} } } ,
+ print-3 .code:n = { \keys_set:nn { enumext / print } { print-3 = {#1} } } ,
+ print-4 .code:n = { \keys_set:nn { enumext / print } { print-4 = {#1} } } ,
+ print-* .code:n = { \keys_set:nn { enumext / print } { print-* = {#1} } } ,
+ unknown .code:n = { \msg_error:nn { enumext } { unknown-key-family } } ,
+ }
+\seq_const_from_clist:Nn \c__enumext_all_families_seq
+ {
+ enumext-1, enumext-2, enumext-3, enumext-4, keyans, enumext*,
+ keyans*, print-1, print-2, print-3, print-4, print-*, print*,
+ }
+%% Define |\setenumext|.
+\NewDocumentCommand \setenumext { O{enumext,1} +m }
+ {
+ \seq_clear:N \l__enumext_setkey_tmpa_seq
+ \seq_set_from_clist:Nn \l__enumext_setkey_tmpb_seq {#1}
+ \int_set:Nn \l__enumext_setkey_tmpa_int
+ {
+ \seq_count:N \l__enumext_setkey_tmpb_seq
+ }
+ \int_compare:nNnTF { \l__enumext_setkey_tmpa_int } > { 1 }
+ {
+ \seq_pop_left:NN \l__enumext_setkey_tmpb_seq \l__enumext_setkey_tmpa_tl
+ \seq_map_function:NN \l__enumext_setkey_tmpb_seq \__enumext_set_parse:n
+ \seq_set_map_e:NNn \l__enumext_setkey_tmpa_seq \l__enumext_setkey_tmpa_seq
+ {
+ \tl_use:N \l__enumext_setkey_tmpa_tl - ##1
+ }
+ }
+ {
+ \seq_put_right:Ne \l__enumext_setkey_tmpa_seq { \tl_trim_spaces:n {#1} }
+ }
+ \seq_if_empty:NTF \l__enumext_setkey_tmpa_seq
+ { \seq_map_inline:Nn \c__enumext_all_families_seq }
+ { \seq_map_inline:Nn \l__enumext_setkey_tmpa_seq }
+ {
+ \keys_set:nn { enumext / meta-families } { ##1 = {#2} }
+ }
+ }
+\cs_new_protected:Npn \__enumext_set_parse:n #1
+ {
+ \tl_set:Ne \l__enumext_setkey_tmpb_tl { \tl_trim_spaces:n {#1} }
+ \clist_map_inline:nn { 0, 1, 2, 3, 4, * } % <- max level
+ { \tl_remove_all:Nn \l__enumext_setkey_tmpb_tl {##1} }
+ \tl_if_empty:NTF \l__enumext_setkey_tmpb_tl
+ {
+ \seq_put_right:Ne \l__enumext_setkey_tmpa_seq
+ { \tl_trim_spaces:n {#1} }
+ }
+ { \__enumext_set_error:nn {#1} { } }
+ }
+\cs_new_protected:Npn \__enumext_set_error:nn #1 #2
+ { \msg_error:nnn { enumext } { invalid-key } {#1} {#2} }
+%% Define |\setenumextmeta|.
+\prop_const_from_keyval:Nn \c__enumext_meta_paths_prop
+ {
+ {enumext,1} = level-1,
+ {enumext,2} = level-2,
+ {enumext,3} = level-3,
+ {enumext,4} = level-4,
+ {enumext*} = enumext*
+ }
+\NewDocumentCommand \setenumextmeta { s O{enumext,1} m +m }
+ {
+ \str_if_eq:eeTF { \tl_trim_spaces:n {#3} } { unknown }
+ { \msg_error:nn { enumext } { prohibited-unknown } }
+ {
+ \bool_if:nTF {#1}
+ {
+ \int_step_inline:nn { 4 }
+ { \__enumext_add_meta_key:nnn { enumext, ##1 } {#3} {#4} }
+ \__enumext_add_meta_key:nnn { enumext* } {#3} {#4}
+ }
+ { \__enumext_add_meta_key:nnn {#2} {#3} {#4} }
+ }
+ }
+\cs_new_protected:Npn \__enumext_add_meta_key:nnn #1
+ {
+ \tl_set:Nn \l__enumext_meta_path_tl {#1}
+ \tl_replace_all:Nnn \l__enumext_meta_path_tl { ~ } {}
+ \prop_get:NVNTF
+ \c__enumext_meta_paths_prop \l__enumext_meta_path_tl \l__enumext_meta_path_tl
+ { \__enumext_def_meta_key:Vnn \l__enumext_meta_path_tl }
+ {
+ \msg_error:nnn { enumext } { unknown-set } {#1}
+ \use_none:nn
+ }
+ }
+\cs_new_protected:Npn \__enumext_def_meta_key:nnn #1#2#3
+ {
+ \bool_lazy_or:nnTF
+ { \keys_if_exist_p:nn { enumext / #1 } {#2} }
+ { \keys_if_exist_p:nn { enumext / enumext* } {#2} }
+ { \msg_error:nnn { enumext } { already-defined } {#2} }
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ #2 .meta:n = {#3},
+ #2 .value_forbidden:n = true
+ }
+ }
+ }
+\cs_generate_variant:Nn \__enumext_def_meta_key:nnn { V }
+%% Define |\foreachkeyans|.
+\keys_define:nn { enumext / foreach }
+ {
+ before .tl_set:N = \l__enumext_foreach_before_tl,
+ before .value_required:n = true,
+ after .tl_set:N = \l__enumext_foreach_after_tl,
+ after .value_required:n = true,
+ start .int_set:N = \l__enumext_foreach_start_int,
+ start .value_required:n = true,
+ stop .int_set:N = \l__enumext_foreach_stop_int,
+ stop .value_required:n = true,
+ step .int_set:N = \l__enumext_foreach_step_int,
+ step .value_required:n = true,
+ wrapper .cs_set_protected:Np = \__enumext_foreach_wrapper:n #1,
+ wrapper .value_required:n = true,
+ sep .tl_set:N = \l__enumext_foreach_sep_tl,
+ sep .value_required:n = true,
+ unknown .code:n = { \__enumext_parse_foreach_keys:n {#1} }
+ }
+\keys_precompile:nnN { enumext / foreach }
+ {
+ before={},after={},start=1,step=1,stop=0,wrapper=#1,sep={; }
+ }
+ \g__enumext_foreach_default_keys_tl
+\cs_new_protected:Npn \__enumext_parse_foreach_keys:nn #1#2
+ {
+ \tl_if_blank:nTF {#2}
+ {
+ \msg_error:nnn { enumext } { for-key-unknown } {#1}
+ }
+ {
+ \msg_error:nnnn { enumext } { for-key-value-unknown } {#1} {#2}
+ }
+ }
+\cs_new_protected:Npn \__enumext_parse_foreach_keys:n #1
+ {
+ \exp_args:NV \__enumext_parse_foreach_keys:nn \l_keys_key_str {#1}
+ }
+\NewDocumentCommand \foreachkeyans { +O{} m }
+ {
+ \__enumext_foreach_keyans:nn {#1} {#2}
+ }
+\cs_new_protected:Npn \__enumext_foreach_keyans:nn #1 #2
+ {
+ \tl_use:N \g__enumext_foreach_default_keys_tl
+ \keys_set:nn { enumext / foreach } {#1}
+ \tl_set:Nn \l__enumext_foreach_name_prop_tl {#2}
+ \prop_if_exist:cF { g__enumext_#2_prop }
+ {
+ \msg_error:nnn { enumext } { undefined-storage-anskey } {#2}
+ }
+ \int_compare:nNnT { \l__enumext_foreach_stop_int } = { 0 }
+ {
+ \int_set:Nn \l__enumext_foreach_stop_int
+ { \prop_count:c { g__enumext_#2_prop } }
+ }
+ \seq_clear:N \l__enumext_foreach_print_seq
+ \int_step_function:nnnN
+ { \l__enumext_foreach_start_int }
+ { \l__enumext_foreach_step_int }
+ { \l__enumext_foreach_stop_int }
+ \__enumext_foreach_add_body:n
+ \seq_use:NV \l__enumext_foreach_print_seq \l__enumext_foreach_sep_tl
+ }
+\cs_new_protected:Npn \__enumext_foreach_add_body:n #1
+ {
+ \seq_put_right:Ne \l__enumext_foreach_print_seq
+ {
+ \exp_not:V \l__enumext_foreach_before_tl
+ \__enumext_foreach_wrapper:n
+ {
+ \prop_item:cn { g__enumext_ \l__enumext_foreach_name_prop_tl _prop }{#1}
+ }
+ \exp_not:V \l__enumext_foreach_after_tl
+ }
+ }
+%% Messages.
+\msg_new:nnn { enumext } { package-load }
+ {
+ The ~ '#1' ~ package ~ is ~ already ~ loaded.
+ }
+\msg_new:nnn { enumext } { package-not-load }
+ {
+ The ~ '#1' ~ package ~ will ~ be ~ loaded ~ as ~ a ~ dependency.
+ }
+\msg_new:nnn { enumext } { package-load-foot }
+ {
+ The ~ '#1' ~ package ~ is ~ loaded ~ with ~ the ~ option ~ '#2'.
+ }
+\msg_new:nnn { enumext } { counters }
+ {
+ The ~ counter ~ '#1' ~ is ~ already ~ defined ~ by ~ some ~ \\
+ package ~ or ~ macro, ~ it ~ cannot ~ be ~ continued.
+ }
+\msg_new:nnn { enumext } { unknown-choice }
+ {
+ The ~ value ~ '#3' ~ for ~ '#1' ~ key ~ is ~ invalid ~ use ~ ('#2').
+ }
+\msg_new:nnnn { enumext } { anskey-env-error }
+ {
+ The ~ '#1' ~ environment ~is ~ reserved ~ by ~\\
+ 'enumext' ~ package, ~ It~ is~ already~ defined.
+ }
+ {
+ The ~ anskey* ~ environment ~ is ~ defined ~ internally ~
+ for ~ the ~ 'save-ans' ~ key.\\
+ }
+\msg_new:nnn { enumext } { store-prop }
+ {
+ * ~ Package ~ enumext: ~ Creating ~
+ \c_backslash_str g__enumext_#1_prop ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { store-seq }
+ {
+ * ~ Package ~ enumext: ~ Creating ~
+ \c_backslash_str g__enumext_#1_seq ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { store-int }
+ {
+ * ~ Package ~ enumext: ~ Creating ~
+ \c_backslash_str g__enumext_resume_#1_int ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { prop-seq-int-hook }
+ {
+ * ~ Package ~ enumext: ~ Elements ~ in ~
+ \c_backslash_str g__enumext_#1_prop ~ = ~ #2.\\
+ * ~ Package ~ enumext: ~ Elements ~ in ~
+ \c_backslash_str g__enumext_#1_seq ~ = ~ #3.\\
+ * ~ Package ~ enumext: ~ Value ~ off ~
+ \c_backslash_str g__enumext_resume_#1_int ~ = ~ #4.
+ }
+\msg_new:nnn { enumext } { item-answer-hook }
+ {
+ * ~ Package ~ enumext: ~ Value ~ off ~
+ \c_backslash_str g__enumext_item_number_int ~ = ~ #1.\\
+ * ~ Package ~ enumext: ~ Value ~ off ~
+ \c_backslash_str g__enumext_item_anskey_int ~ = ~ #2.\\
+ * ~ Package ~ enumext: ~ Difference ~ item_number_int ~ - ~ item_anskey_int ~ = ~ #3.
+ }
+\msg_new:nnn { enumext } { invalid-key }
+ {
+ The ~ key ~ '#1' ~ is ~ not ~ know ~ the ~ level ~ #2.
+ }
+\msg_new:nnn { enumext } { unknown-key-family }
+ {
+ Unknown~key~family~`\l_keys_key_str'~for~enumext.
+ }
+\msg_new:nnn { enumext } { width-negative }
+ {
+ Ignoring ~ negative ~ value ~ '#1=#2' ~ \msg_line_context:.\\
+ The ~ key ~ '#1'~ accepts ~ values ~ >= ~ 0pt.
+ }
+\msg_new:nnn { enumext } { width-zero }
+ {
+ Invalid ~ '#1=#2' ~ \msg_line_context:.\\
+ The ~ key ~ '#1'~ accepts ~ values ~ > ~ 0pt.
+ }
+\msg_new:nnn { enumext } { list-lengths }
+ {
+ **** ~ Lengths ~ used ~ by ~ 'enumext' ~ level ~ '#2' ~ \msg_line_context:~\c_space_tl ****\\
+ \__enumext_show_length:nnn { dim } { labelsep } {#1}
+ \__enumext_show_length:nnn { dim } { labelwidth } {#1}
+ \__enumext_show_length:nnn { dim } { itemindent } {#1}
+ \__enumext_show_length:nnn { dim } { leftmargin } {#1}
+ \__enumext_show_length:nnn { dim } { rightmargin } {#1}
+ \__enumext_show_length:nnn { dim } { listparindent } {#1}
+ \__enumext_show_length:nnn { skip } { topsep } {#1}
+ \__enumext_show_length:nnn { skip } { parsep } {#1}
+ \__enumext_show_length:nnn { skip } { partopsep } {#1}
+ \__enumext_show_length:nnn { skip } { itemsep } {#1}
+ ****************************************************
+ }
+\msg_new:nnn { enumext } { list-lengths-not-nested }
+ {
+ **** ~ Lengths ~ used ~ by ~ '#2' ~ environment ~ \msg_line_context:~\c_space_tl ****\\
+ \__enumext_show_length:nnn { dim } { labelsep } {#1}
+ \__enumext_show_length:nnn { dim } { labelwidth } {#1}
+ \__enumext_show_length:nnn { dim } { itemindent } {#1}
+ \__enumext_show_length:nnn { dim } { leftmargin } {#1}
+ \__enumext_show_length:nnn { dim } { rightmargin } {#1}
+ \__enumext_show_length:nnn { dim } { listparindent } {#1}
+ \__enumext_show_length:nnn { skip } { topsep } {#1}
+ \__enumext_show_length:nnn { skip } { parsep } {#1}
+ \__enumext_show_length:nnn { skip } { partopsep } {#1}
+ \__enumext_show_length:nnn { skip } { itemsep } {#1}
+ ****************************************************
+ }
+\msg_new:nnn { enumext } { key-ref-empty }
+ {
+ Key ~ 'ref' ~ need ~ a ~ value ~ in ~ '#1'~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { save-ans-empty }
+ {
+ Key ~ 'save-ans' ~ need ~ a ~ value ~ in ~ '#1'~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { save-ans-log }
+ {
+ * ~ Package ~ enumext: ~ Start ~ #1\c_space_tl with ~ save-ans=#2 ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { save-ans-log-hook }
+ {
+ * ~ Package ~ enumext: ~ Stop ~ #1\c_space_tl with ~ save-ans=#2 ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { save-ans-hook }
+ {
+ Stop ~ storing ~ for ~ 'save-ans=#1' ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { need-save-ans }
+ {
+ Key ~ '#1'~ works ~ only ~ with ~ the ~ 'save-ans' ~ key ~ in ~ '#2'~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { items-same-answer }
+ {
+ ****************************************\\
+ * ~ Package ~ enumext: ~ Checking ~ answers ~ in ~ '#1' ~
+ for ~ \c_left_brace_str #2 \c_right_brace_str\\
+ * ~ started ~ #3 ~ and ~ close ~ \msg_line_context: : ~
+ 'OK', ~ all ~ items ~ with ~ answer.\\
+ ****************************************
+ }
+\msg_new:nnn { enumext } { item-greater-answer }
+ {
+ Checking ~ answers ~ in ~ '#1' ~ for ~ \c_left_brace_str #2 \c_right_brace_str\\
+ started ~ #3 ~ and ~ close ~ \msg_line_context: : ~'NOT ~ OK'\\
+ Items ~ > ~ Answers.
+ }
+\msg_new:nnn { enumext } { item-less-answer }
+ {
+ Checking ~ answers ~ in ~ '#1' ~ for ~ \c_left_brace_str #2 \c_right_brace_str\\
+ started ~ #3 ~ and ~ close ~ \msg_line_context: : ~'NOT ~ OK'\\
+ Items ~ < ~ Answers.
+ }
+\msg_new:nnn { enumext } { missing-starred }
+ {
+ Missing ~ '\c_backslash_str #1*' ~ #2.
+ }
+\msg_new:nnn { enumext } { many-starred }
+ {
+ Many ~ '\c_backslash_str #1*' ~ #2.
+ }
+\msg_new:nnn { enumext } { print-starred }
+ {
+ \c_backslash_str printkeyans*:~ The ~ sequence ~ '#1' ~ already ~ contains ~
+ #2 ~ environment ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { list-too-deep }
+ {
+ Too ~ deep ~ nesting ~ for ~ 'enumext' ~ \msg_line_context:.~ \\
+ The ~ maximum ~ level ~ of ~ nesting ~ is ~ 4.
+ }
+\msg_new:nnn { enumext } { anskey-unnumber-item }
+ {
+ Can't ~ store ~ with ~ a ~ unnumbered ~ \c_backslash_str item ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { anskey-already-stored }
+ {
+ Content ~ already ~ stored ~ for ~ this ~ \c_backslash_str item ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { anskey-empty-arg }
+ {
+ Can't ~ store ~ empty ~ content ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { anskey-wrong-place }
+ {
+ Wrong ~ place ~ for ~ command ~ '\c_backslash_str #1' ~ \msg_line_context:.~ \\
+ '\c_backslash_str #1' ~ works ~ in ~ the ~ environment ~ '#2'.
+ }
+\msg_new:nnn { enumext } { anskey-nested }
+ {
+ The ~ command ~ \c_backslash_str anskey~ can't ~ be ~ nested ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { anskey-math-mode }
+ {
+ #1 ~ can't ~ work ~ in ~ math ~ mode ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { anskey-env-wrong }
+ {
+ The ~ environment ~ anskey* ~ cannot ~ use ~ in ~ '#1' ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { anspic-wrong-place }
+ {
+ Wrong ~ place ~ for ~ command ~ '\c_backslash_str #1' ~ \msg_line_context:.~ \\
+ '\c_backslash_str #1' ~ works ~ in ~ the ~ environment ~ '#2'.
+ }
+\msg_new:nnn { enumext } { command-wrong-place }
+ {
+ Wrong ~ place ~ for ~ command ~ '\c_backslash_str #1' ~ \msg_line_context:.~ \\
+ '\c_backslash_str #1' ~ works ~ outside ~ the ~ environment ~ '#2'.
+ }
+\msg_new:nnnn { enumext } { anskey-env-key-unknown }
+ {
+ The ~ key ~ '#1' ~ is ~ unknown ~ by ~ environment~
+ 'anskey*' ~ and ~ is ~ being ~ ignored.
+ }
+ {
+ The ~ environment ~ 'anskey*' ~ does ~ not ~ have ~ a ~ key ~ called ~'#1'.\\
+ Check ~ that ~ you ~ have ~ spelled ~ the ~ key ~ name ~ correctly.
+ }
+\msg_new:nnnn { enumext } { anskey-env-key-value-unknown }
+ {
+ The ~ key ~ '#1=#2' ~ is ~ unknown ~ by ~ environment ~
+ 'anskey*' ~ and ~ is ~ being ~ ignored.
+ }
+ {
+ The ~ environment ~ 'anskey*' ~ does ~ not ~ have ~ a ~ key ~ called ~'#1'.\\
+ Check ~ that ~ you ~ have ~ spelled ~ the ~ key ~ name ~ correctly.
+ }
+\msg_new:nnnn { enumext } { anskey-cmd-key-unknown }
+ { The ~ key ~'#1'~ is ~ unknown ~ by ~ '\c_backslash_str anskey' ~ and ~ is ~ being ~ ignored.}
+ {
+ The ~ command ~'\c_backslash_str anskey' ~ does ~ not ~ have ~ a ~ key ~ called ~'#1'.\\
+ Check ~ that ~ you ~ have ~ spelled ~ the ~ key ~ name ~ correctly.
+ }
+\msg_new:nnnn { enumext } { anskey-cmd-key-value-unknown }
+ { The ~ key ~ '#1=#2' ~ is ~ unknown ~ by ~ '\c_backslash_str anskey' ~ and ~ is ~ being ~ ignored. }
+ {
+ The ~ command ~ '\c_backslash_str anskey' ~ does ~ not ~ have ~ a ~ key ~ called ~'#1'.\\
+ Check ~ that ~ you ~ have ~ spelled ~ the ~ key ~ name ~ correctly.
+ }
+\msg_new:nnn { enumext } { keyans-nested }
+ {
+ The ~ environment ~ 'keyans' ~ can't ~ be ~ nested ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { keyans-wrong-level }
+ {
+ Wrong ~ level ~ position ~ for ~ 'keyans' ~ \msg_line_context:.~ \\
+ The ~ environment ~ 'keyans' ~ can ~ only ~ be ~ in ~ the ~ first ~ level.
+ }
+\msg_new:nnn { enumext } { wrong-place }
+ {
+ Wrong ~ place ~ for ~ '#1' ~ environment ~\msg_line_context:.~ \\
+ '#1' ~ is ~ only ~ found ~ with ~ '#2' ~ in ~ 'enumext.
+ }
+\msg_new:nnn { enumext } { keyanspic-nested }
+ {
+ The ~ environment ~ 'keyanspic' ~ can't ~ be ~ nested~ \msg_line_context:.~.
+ }
+\msg_new:nnn { enumext } { keyanspic-wrong-level }
+ {
+ Wrong ~ level ~ position ~ for ~ 'keyanspic' ~ \msg_line_context:.~ \\
+ The ~ environment ~ 'keyans' ~ can ~ only ~ be ~ in ~ the ~ first ~ level.
+ }
+\msg_new:nnn { enumext } { keyanspic-item-cmd }
+ {
+ Can't ~ use ~ \c_backslash_str item ~ in ~ keyanspic ~ \msg_line_context:.
+ }
+\msg_new:nnnn { enumext } { keyans-unknown-key }
+ {
+ The ~ key ~ '#1' ~ is ~ unknown ~ by ~ environment~
+ '\l__enumext_envir_name_tl' ~ and ~ is ~ being ~ ignored.
+ }
+ {
+ The ~ environment ~ '\l__enumext_envir_name_tl' ~ does ~ not
+ ~ have ~ a ~ key ~ called ~'#1'.\\
+ Check ~ that ~ you ~ have ~ spelled ~ the ~ key ~ name ~ correctly.
+ }
+\msg_new:nnnn { enumext } { keyans-unknown-key-value }
+ {
+ The ~ key ~ '#1=#2' ~ is ~ unknown ~ by ~ environment ~
+ '\l__enumext_envir_name_tl' ~ and ~ is ~ being ~ ignored.
+ }
+ {
+ The ~ environment ~ '\l__enumext_envir_name_tl' ~ does ~ not
+ ~ have ~ a ~ key ~ called ~'#1'.\\
+ Check ~ that ~ you ~ have ~ spelled ~ the ~ key ~ name ~ correctly.
+ }
+\msg_new:nnnn { enumext } { starred-unknown-key }
+ {
+ The ~ key ~ '#1' ~ is ~ unknown ~ by ~ environment~
+ '\l__enumext_envir_name_tl' ~ and ~ is ~ being ~ ignored.
+ }
+ {
+ The ~ environment ~ '\l__enumext_envir_name_tl' ~ does ~ not
+ ~ have ~ a ~ key ~ called ~'#1'.\\
+ Check ~ that ~ you ~ have ~ spelled ~ the ~ key ~ name ~ correctly.
+ }
+\msg_new:nnnn { enumext } { starred-unknown-key-value }
+ {
+ The ~ key ~ '#1=#2' ~ is ~ unknown ~ by ~ environment ~
+ '\l__enumext_envir_name_tl' ~ and ~ is ~ being ~ ignored.
+ }
+ {
+ The ~ environment ~ '\l__enumext_envir_name_tl' ~ does ~ not
+ ~ have ~ a ~ key ~ called ~'#1'.\\
+ Check ~ that ~ you ~ have ~ spelled ~ the ~ key ~ name ~ correctly.
+ }
+\msg_new:nnnn { enumext } { standar-unknown-key }
+ {
+ The ~ key ~ '#1' ~ is ~ unknown ~ by ~ environment ~ '\l__enumext_envir_name_tl' \c_space_tl
+ ~ on ~ level ~ \int_use:N \l__enumext_level_int \c_space_tl and ~ is ~ being ~ ignored.
+ }
+ {
+ The ~ environment ~ '\l__enumext_envir_name_tl' ~ does ~ not
+ ~ have ~ a ~ key ~ called ~'#1' ~ on ~ level ~ \int_use:N \l__enumext_level_int.\\
+ Check ~ that ~ you ~ have ~ spelled ~ the ~ key ~ name ~ correctly.
+ }
+\msg_new:nnnn { enumext } { standar-unknown-key-value }
+ {
+ The ~ key ~ '#1=#2' ~ is ~ unknown ~ by ~ environment ~ '\l__enumext_envir_name_tl' \c_space_tl
+ ~ on ~ level ~ \int_use:N \l__enumext_level_int \c_space_tl and ~ is ~ being ~ ignored.
+ }
+ {
+ The ~ environment ~ '\l__enumext_envir_name_tl' ~ does ~ not
+ ~ have ~ a ~ key ~ called ~'#1' ~ on ~ level ~ \int_use:N \l__enumext_level_int.\\
+ Check ~ that ~ you ~ have ~ spelled ~ the ~ key ~ name ~ correctly.
+ }
+\msg_new:nnnn { enumext } { for-key-unknown }
+ { The~key~'#1'~is~unknown~by~'\c_backslash_str foreachkeyans'~and~is~being~ignored.}
+ {
+ The~command~'\c_backslash_str foreachkeyans'~does~not~have~a~key~called~'#1'.\\
+ Check~that~you~have~spelled~the~key~name~correctly.
+ }
+\msg_new:nnnn { enumext } { for-key-value-unknown }
+ { The~key~'#1=#2'~is~unknown~by~'\c_backslash_str foreachkeyans'~and~is~being~ignored. }
+ {
+ The~command~'\c_backslash_str foreachkeyans'~does~not~have~a~key~called~'#1'.\\
+ Check~that~you~have~spelled~the~key~name~correctly.
+ }
+\msg_new:nnn { enumext } { undefined-storage-anskey }
+ {
+ Storage ~ named ~ '#1' ~ is ~ not ~ defined ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { missing-miniright }
+ {
+ Missing ~ '\c_backslash_str miniright' ~ in ~ \msg_line_context:.\\
+ The ~ key ~ 'mini-env' ~ need ~ '\c_backslash_str miniright'.
+ }
+\msg_new:nnn { enumext } { wrong-miniright-place }
+ {
+ Wrong ~ place ~ for ~ '\c_backslash_str miniright' ~ \msg_line_context:.~ \\
+ Works ~ in ~ 'enumext' ~ and ~ 'keyans' ~ with ~ key ~ 'mini-env'.
+ }
+\msg_new:nnn { enumext } { wrong-miniright-use }
+ {
+ Wrong ~ use ~ for ~ '\c_backslash_str miniright' ~ \msg_line_context:.~ \\
+ '\c_backslash_str miniright' ~ need ~ a ~ key ~ 'mini-env'.
+ }
+\msg_new:nnn { enumext } { wrong-miniright-starred }
+ {
+ Can't ~ use ~ \c_backslash_str miniright ~ in ~ starred ~ environments ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { many-miniright-used }
+ {
+ Can't ~ use ~ \c_backslash_str miniright ~ more ~ than ~ once ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { unknown-set }
+ {
+ Argument ~ [#1] ~ is ~ unknown ~ by ~ \c_backslash_str setenumextmeta ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { already-defined }
+ {
+ The ~ key ~ '#1' ~ is ~ already ~ defined ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { prohibited-unknown }
+ {
+ The ~ name ~ 'unknown' ~ can't ~ be ~ chosen~ for ~ a ~ meta ~ key ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { nested }
+ {
+ The ~ environment ~ \l__enumext_envir_name_tl \c_space_tl can't ~ be ~ nested ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { nested-horizontal }
+ {
+ The ~ environment ~ \l__enumext_envir_name_tl \c_space_tl can't ~ be ~ nested ~ in ~ '#1' ~ \msg_line_context:.
+ }
+\msg_new:nnn { enumext } { item-joined }
+ {
+ Items ~ joined ~ (#1) ~ > ~ #2 ~ columns ~\msg_line_context:.
+ }
+\msg_new:nnn { enumext } { item-joined-columns }
+ {
+ Not ~ space ~ to ~ join ~ items ~ (#1) ~ > ~ #2 ~\msg_line_context:.
+ }
+\file_input_stop:
+%%
+%%
+%% End of file `enumext.sty'.
diff --git a/Master/texmf-dist/tex/latex/enumitem/enumitem.sty b/Master/texmf-dist/tex/latex/enumitem/enumitem.sty
index 1cb7888572c..7150a22f850 100644
--- a/Master/texmf-dist/tex/latex/enumitem/enumitem.sty
+++ b/Master/texmf-dist/tex/latex/enumitem/enumitem.sty
@@ -1,5 +1,5 @@
%
-% Copyright (C) 2003-2019 Javier Bezos http://www.texnia.com
+% Copyright (C) 2003-2025 Javier Bezos http://www.texnia.com
%
% This file may be distributed and/or modified under the conditions of
% the MIT License. A version can be found at the end of this file.
@@ -10,7 +10,7 @@
% ~~~~~~~
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{enumitem}[2019/06/20 v3.9 Customized lists]
+\ProvidesPackage{enumitem}[2025/01/19 v3.10 Customized lists]
% Notes
% ~~~~~
@@ -176,7 +176,7 @@
\expandafter\@firstoftwo
\fi}}
-% Miscelaneous errors
+% Miscellaneous errors
% ===================
\def\enit@error{\PackageError{enumitem}}
@@ -204,7 +204,7 @@
\def\enit@checkseries@m{%
\ifcase\enit@resuming\else
- \enit@error{Uncompatible series settings}%
+ \enit@error{Incompatible series settings}%
{'series' and 'resume*' must not be used\MessageBreak
at the same time}%
\fi}
@@ -222,6 +222,12 @@
\csname @list\romannumeral\the\@listdepth\expandafter\endcsname
\csname @list\romannumeral\the\count@\endcsname}{}%
\fi}
+
+\def\enit@nolabelenum#1#2{%
+ \enit@error{Label undefined}%
+ {The current class doesn't define some labels\MessageBreak
+ for 'enumerate'. You have to do it yourself, as\MessageBreak
+ explained in the manual.}}
% +=============================+
% | KEYS |
@@ -231,7 +237,7 @@
%
% There are 2 keyval groups: enumitem, and enumitem-delayed.
% The latter is used to make sure a prioritary key is the latest one;
-% eg, ref, so that the ref format set by label is overriden. So, when
+% eg, ref, so that the ref format set by label is overridden. So, when
% this key is found in enumitem, nothing is done, except the key/value
% is moved to enumitem-delayed.
%
@@ -374,7 +380,7 @@
\else % series=override
\global\@namedef{enitkv@enumitem@#1}% with value
{\enit@error
- {Key '#1' has been overriden by a series}%
+ {Key '#1' has been overridden by a series}%
{Change the series name and/or deactivate series=override}}%
\global\@namedef{enitkv@enumitem@#1@default}{}%
\fi
@@ -404,6 +410,16 @@
\expandafter\let\expandafter\enit@resumekeys
\csname enit@resumekeys@\@currenvir\endcsname
\@nameuse{enit@resume@\@currenvir}\relax}
+
+\@namedef{enitkv@enumitem-resume@resume*@default}{%
+ \let\enit@resuming\thr@@
+ \enit@ifunset{enit@resumekeys@\@currenvir}%
+ {\PackageWarning{enumitem}{Nothing to resume,}%
+ \let\enit@resumekeys\@empty}
+ {\let\enit@resuming\thr@@
+ \expandafter\let\expandafter\enit@resumekeys
+ \csname enit@resumekeys@\@currenvir\endcsname
+ \@nameuse{enit@resume@\@currenvir}\relax}}
\enitkv@key{}{resume*}[]{%
\enit@checkseries{resume*}}
@@ -474,7 +490,7 @@
% Labels and refs
% ===============
-% Aligment
+% Alignment
% --------
\enitkv@key{}{align}{%
@@ -525,7 +541,7 @@
% ref is set by label, except if there is an explicit ref in the same
% hierarchy level. Explicit refs above the current hierarchy level are
-% overriden by label (besides ref), too. Since an explicit ref has
+% overridden by label (besides ref), too. Since an explicit ref has
% preference, it's delayed.
\enitkv@key{}{ref}{%
@@ -713,7 +729,7 @@
\expandafter\def\expandafter\enit@keyfirst\expandafter
{\enit@keyfirst#1}}
-% Miscelaneous keys
+% Miscellaneous keys
% ================
\enitkv@key{}{nolistsep}[true]{%
@@ -903,6 +919,15 @@
\else
\noexpand#1{#2}%
\fi}%
+
+% Suggested by @muzimuzhi, amended. See Gh36.
+
+\def\enit@refstar@ii#1#2{%
+ \if*#2\@empty
+ \noexpand\the\noexpand#1{\@enumctr}%
+ \else
+ \noexpand\the\noexpand#1{#2}%
+ \fi}
\def\enit@refstar#1#2#3#4{%
\def#2{\enit@refstar@i#2}%
@@ -910,12 +935,13 @@
\def\enit@normlabel#1#2{%
\begingroup
- \def\value{\enit@refstar@i\value}%
+ \def\value{\enit@refstar@ii\value}%
\let\enit@elt\enit@refstar
\enit@labellist
- \protected@xdef\enit@a{{#2}}% Added braces as \ref is in the
+ % Added braces as \ref is in the global scope:
+ \protected@xdef\enit@a{{#2}}%
\endgroup
- \expandafter\let#1\enit@a} % global scope.
+ \expandafter\let#1\enit@a}
% Preliminary settings and default values
% =======================================
@@ -999,7 +1025,7 @@
\expandafter\enit@setkeys@i\enit@savekeys\@@
\let\enitkv@errx\enit@savekverr}
-% Handling <> sytax for font sizes
+% Handling <> syntax for font sizes
% ================================
% The following code is based on LaTeX (\DeclareFontShape). Only the
% code for <> is preserved (no functions), and a default value can be
@@ -1116,7 +1142,7 @@
\enit@afterlist
\fi
\ifnum\enit@resuming=\thr@@ % ie, resume* list (save count only)
- \enit@setresumekeys\@currenvir\@gobblefour\global
+ \enit@setresumekeys\@currenvir\@gobblefour\@empty
\else
\enit@setresumekeys\@currenvir\@empty\@empty
\fi
@@ -1246,7 +1272,7 @@
\enit@afterlist
\fi
\ifnum\enit@resuming=\thr@@ % ie, resume* list (save count only)
- \enit@setresumekeys\@currenvir\@gobblefour\global
+ \enit@setresumekeys\@currenvir\@gobblefour\@empty
\else
\enit@setresumekeys\@currenvir\@empty\@empty
\fi
@@ -1371,6 +1397,11 @@
\csname label\@enumctr\endcsname
{\usecounter\@enumctr
\let\enit@calc\z@
+ \expandafter\ifx\expandafter\@undefined\@itemlabel
+ \enit@nolabelenum
+ \else\expandafter\ifx\expandafter\relax\@itemlabel
+ \enit@nolabelenum
+ \fi\fi
\def\makelabel##1{\enit@align{\enit@format{##1}}}%
\enit@preset{#2}{#1}{#4}%
\enit@normlabel\@itemlabel\@itemlabel
@@ -1492,7 +1523,7 @@
% ==================
%
% the next definition is somewhat tricky because labels are boxed.
-% That's fine when the label is just placed at the begining of a line
+% That's fine when the label is just placed at the beginning of a line
% of text, but when the box is placed without horizontal material,
% leading is killed. So, we need change somehow \box to \unhbox, but
% I don't want to modify \@item. The code below presumes \@item has
@@ -1508,7 +1539,7 @@
% necessary to get proper line breaks (including a \nobreak at the
% beginning of \enit@align, ie, after the first whatsit, see above).
% To "pass" the inner group added by color to the box, \enit@postlabel
-% ckecks if the following is }. ie, \egroup -- if not, the box has
+% checks if the following is }. ie, \egroup -- if not, the box has
% not reached yet its end.
\def\enit@postlabel{%
diff --git a/Master/texmf-dist/tex/latex/enverb/enverb.sty b/Master/texmf-dist/tex/latex/enverb/enverb.sty
index bb15d3fec61..e90bd222ab9 100644
--- a/Master/texmf-dist/tex/latex/enverb/enverb.sty
+++ b/Master/texmf-dist/tex/latex/enverb/enverb.sty
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% --------------------------------------------------------------
%%
-%% Copyright (C) 2023-2024 Jonathan P. Spratte
+%% Copyright (C) 2023-2025 Jonathan P. Spratte
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this license or
@@ -30,8 +30,8 @@
%% and the derived files enverb-doc.pdf
%% enverb.sty
%%
-\newcommand*\enverb@date{2024-08-28}
-\newcommand*\enverb@version{1.0}
+\newcommand*\enverb@date{2025-01-10}
+\newcommand*\enverb@version{1.1}
\ProvidesPackage{enverb}
[\enverb@date\space v\enverb@version\space read an environment verbatim]
\providecommand\@thirdofthree[3]{#3}
@@ -346,7 +346,7 @@
\fi
\@firstofone
{%
- \ifnum\catcode`\%=14
+ \ifnum\catcode#1=14
\enverb@chargen{#1}{12}%
\expandafter\enverb@stop
\fi
diff --git a/Master/texmf-dist/tex/latex/eolang/eolang.sty b/Master/texmf-dist/tex/latex/eolang/eolang.sty
index 81f70b3cf38..e74cf2f4a16 100644
--- a/Master/texmf-dist/tex/latex/eolang/eolang.sty
+++ b/Master/texmf-dist/tex/latex/eolang/eolang.sty
@@ -31,7 +31,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{eolang}
-[2024-02-14 0.18.1 Formulas and Graphs for EO Programming Language]
+[2024/10/31 0.18.2 Formulas and Graphs for EO Programming Language]
@@ -148,7 +148,7 @@
$macro = $ARGV[0];
open(my $fh, '<', $ARGV[1]);
my $tex; { local $/; $tex = <$fh>; }
-print "% This file is auto-generated by 0.18.1\n";
+print "% This file is auto-generated by eolang.sty 0.18.2\n";
print '% There are ', length($tex),
' chars in the input: ', $ARGV[1], "\n";
print '% ---', "\n";
@@ -392,7 +392,7 @@ print '\endinput';
{\eolang@tmpdir/\jobname/\hash-phiq-post.tex}
{%
\iexec[log,trace,quiet,stdout=\eolang@tmpdir/\jobname/phiq.tex]{
- /bin/echo '\clean'}%
+ printf '\%s' '\clean'}%
\iexec[quiet,null]{cp "\eolang@tmpdir/\jobname/phiq.tex"
"\eolang@tmpdir/\jobname/\hash-phiq.tex"}%
\iexec[trace,stdout=\eolang@tmpdir/\jobname/\hash-phiq-post.tex]{
diff --git a/Master/texmf-dist/tex/latex/euclidean-lattice/euclidean-lattice.sty b/Master/texmf-dist/tex/latex/euclidean-lattice/euclidean-lattice.sty
new file mode 100644
index 00000000000..a2caf0e6a6b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euclidean-lattice/euclidean-lattice.sty
@@ -0,0 +1,235 @@
+%%
+%% This is file `euclidean-lattice.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% euclidean-lattice.dtx (with options: `package')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from euclidean-lattice.sty.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file euclidean-lattice.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+%% \iffalse
+%% Copyright (C) 2024 Jerome Plut
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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-05-04 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainer of this work is Jerome Plut.
+%%
+%% This work consists of the files `euclidean-lattice.ins`
+%% and `euclidean-lattice.dtx`,
+%% as well as the derived file `euclidean-lattice.sty`.
+%% \fi
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{euclidean-lattice}[2024-07-26 Euclidean~lattices 1.0]
+\RequirePackage{tikz}
+\newdimen\la@unit \la@unit=256sp
+\def\lattice@mul#1#2{% writes #1*#2 in #1
+ \@tempdimc=#2 \divide\@tempdimc\la@unit
+ \divide #1\la@unit
+ \multiply #1\@tempdimc}%
+\def\lattice@div#1#2{%
+ \@tempdimc=#2\divide\@tempdimc\la@unit
+ \multiply #1\la@unit \divide#1\@tempdimc}%
+\def\lattice@invert#1{% writes 1/#1 in #1
+ \@tempdimc=#1 \divide\@tempdimc\la@unit
+ #1=256\p@ \divide #1\@tempdimc}%
+\newdimen\la@a \newdimen\la@b \newdimen\la@c \newdimen\la@d
+\newdimen\la@Ax\newdimen\la@Bx\newdimen\la@Ay\newdimen\la@By
+\newdimen\la@D
+\newdimen\la@Ux\newdimen\la@Uy \newdimen\la@Vx\newdimen\la@Vy
+\newdimen\la@Cx\newdimen\la@Cy
+
+\newdimen\la@sL \newdimen\la@sM
+\newdimen\la@zA \newdimen\la@zB \newdimen\la@zC
+\newdimen\la@wA \newdimen\la@wB
+\newcount\la@wM
+\def\lattice@enumerate#1#2#3#4{%
+ \la@a=#1\p@ \la@b=#2\p@ \la@c=#3\p@ \la@d=#4\p@
+ \la@D=\la@a \lattice@mul\la@D\la@d
+ \@tempdima=\la@b \lattice@mul\@tempdima\la@c
+ \advance\la@D -\@tempdima
+ \lattice@invert\la@D
+ \la@Ux=\la@Ax \advance\la@Ux-\la@Bx
+ \lattice@mul\la@Ux \la@D
+ \la@Uy=-\la@Ux
+ \lattice@mul\la@Ux \la@d \ifdim\la@Ux <\z@
+ \multiply\la@Ux -1 \multiply\la@Uy -1 \fi
+ \lattice@mul\la@Uy\la@b
+ \la@Vx=\la@By \advance\la@Vx-\la@Ay \lattice@mul\la@Vx\la@D
+ \la@Vy=-\la@Vx
+ \lattice@mul\la@Vx\la@c \ifdim\la@Vx<\z@
+ \multiply\la@Vx -1 \multiply\la@Vy -1\fi
+ \lattice@mul\la@Vy \la@a
+ \@tempdima \la@Ux
+ \@tempdimb \la@Vx
+ \ifdim\@tempdima<100\p@\else
+ \ifdim\@tempdimb<100\p@\else
+ \divide\@tempdima 1024
+ \divide\@tempdimb 1024\fi\fi
+ \lattice@mul\@tempdima\la@Vy
+ \lattice@mul\@tempdimb\la@Uy
+ \ifdim \@tempdimb>\@tempdima
+ \@tempdimc=\la@Ux \la@Ux=\la@Vx \la@Vx=\@tempdimc
+ \@tempdimc=\la@Uy \la@Uy=\la@Vy \la@Vy=\@tempdimc
+ \fi
+ \la@sL=\la@Ax \advance\la@sL\la@Bx \divide\la@sL 2
+ \la@sM=\la@Ay \advance\la@sM\la@By \divide\la@sM 2
+ \la@Cx=\la@sL \lattice@mul\la@Cx\la@d
+ \@tempdima=\la@sM \lattice@mul\@tempdima\la@c
+ \advance\la@Cx -\@tempdima
+ \la@Cy=\la@sM \lattice@mul\la@Cy\la@a
+ \@tempdima=\la@sL \lattice@mul\@tempdima\la@b
+ \advance\la@Cy -\@tempdima
+ \lattice@mul \la@Cx\la@D
+ \lattice@mul \la@Cy\la@D
+ \@tempdima\la@Ux \advance\@tempdima\la@Vx
+ \la@wA=\la@Cx \advance\la@wA -.5\@tempdima
+ \la@wB=\la@wA \advance\la@wB \@tempdima
+ \@tempdima\la@Uy \ifdim\@tempdima<\z@ \multiply\@tempdima -1\fi
+ \ifdim\la@Vy<\z@ \advance\@tempdima -\la@Vy
+ \else\advance\@tempdima\la@Vy\fi
+ \la@zA=\la@Cy \advance\la@zA -.5\@tempdima
+ \la@zB=\la@zA \advance\la@zB \@tempdima
+ \ifx\lattice@grid\@empty\else \begin{scope}%
+ \clip (\strip@pt\la@Ax,\strip@pt\la@Ay)
+ rectangle (\strip@pt\la@Bx,\strip@pt\la@By);
+ \pgftransformcm{\strip@pt\la@a}{\strip@pt\la@b}%
+ {\strip@pt\la@c}{\strip@pt\la@d}{\pgfpointorigin}%
+ \expandafter\draw\expandafter[\lattice@grid]
+ (\strip@pt\la@wA,\strip@pt\la@zA) grid (\strip@pt\la@wB,\strip@pt\la@zB);
+ \end{scope}\fi
+ \@tempdima=\la@Uy \advance\@tempdima\la@Vy
+ \@tempdimb=\la@Cy \advance\@tempdimb .5\@tempdima % z2
+ \@tempdima=\la@Ux \advance\@tempdima\la@Vx % w_2-w_1 = w(U+V)
+ \ifdim\la@Ux=\z@
+ \la@sL=\z@ \la@zC=\maxdimen \la@zA=-\maxdimen
+ \else
+ \la@sL=\la@Uy \lattice@div\la@sL\la@Ux
+ \la@zC=-\@tempdima \lattice@mul\la@zC\la@sL \advance\la@zC \@tempdimb
+ \la@zA=\@tempdimb \advance\la@zA -\la@Uy \advance\la@zA -\la@Vy
+ \fi
+ \ifdim\la@Vx=\z@
+ \la@sM=\z@ \la@zB=-\maxdimen \la@D=\maxdimen
+ \else
+ \la@sM=\la@Vy \lattice@div\la@sM\la@Vx
+ \la@zB=-\@tempdima \lattice@mul\la@zB\la@sM \advance\la@zB \@tempdimb
+ \la@D=\@tempdimb \advance\la@D -\la@Uy \advance\la@D -\la@Vy
+ \fi
+ \la@Vx=\la@wA \advance\la@Vx\expandafter\ifdim\la@Vx>\z@ -1sp\else-\p@\fi
+ \divide\la@Vx \p@
+ \ifdim\la@wB<\z@ \advance\la@wB 1sp\else\advance\la@wB\p@\fi
+ \divide\la@wB\p@
+ \@tempdima=\la@Vx \multiply\@tempdima\p@
+ \advance\@tempdima -\la@wA
+ \@tempdimb=\@tempdima \lattice@mul\@tempdimb\la@sL
+ \advance\la@zA\@tempdimb \advance\la@zC\@tempdimb
+ \@tempdimb=\@tempdima \lattice@mul\@tempdimb\la@sM
+ \advance\la@zB\@tempdimb \advance\la@D\@tempdimb
+ \la@Cx=\la@a \multiply\la@Cx\la@Vx
+ \la@Cy=\la@b \multiply\la@Cy\la@Vx
+ \loop
+ \la@Vy=\la@zA \ifdim\la@Vy<\la@zB \la@Vy=\la@zB\fi
+ \advance\la@Vy\expandafter\ifdim\la@Vy>\z@ -1sp\else-\p@\fi
+ \divide\la@Vy\p@
+ \la@wM=\la@zC \ifnum\la@wM>\la@D \la@wM=\la@D\fi
+ \advance\la@wM\expandafter\ifnum\la@wM<\z@\@ne\else\p@\fi
+ \divide\la@wM\p@
+ \la@Ux=\la@c \multiply\la@Ux\la@Vy \advance\la@Ux\la@Cx
+ \la@Uy=\la@d \multiply\la@Uy\la@Vy \advance\la@Uy\la@Cy
+ {\loop
+ \ifdim\la@Ux<\la@Ax\else\ifdim\la@Ux>\la@Bx\else
+ \ifdim\la@Uy<\la@Ay\else\ifdim\la@Uy>\la@By\else
+ \expandafter\lattice@donode\expandafter{\lattice@node}%
+ \fi\fi\fi\fi
+ \ifnum\la@Vy<\la@wM
+ \advance\la@Vy 1sp
+ \advance\la@Ux\la@c \advance\la@Uy\la@d
+ \repeat}
+ \ifnum\la@Vx<\la@wB
+ \advance\la@Vx 1sp
+ \advance\la@Cx\la@a \advance\la@Cy\la@b
+ \advance\la@zA \la@sL \advance\la@zC \la@sL
+ \advance\la@zB \la@sM \advance\la@D \la@sM
+ \repeat
+}
+\def\lattice@donode#1{%
+ \pgfkeys{/lattice/arg/each point={#1}{\strip@pt\la@Ux}{\strip@pt\la@Uy}%
+ {\number\la@Vx}{\number\la@Vy}}}
+
+\pgfqkeys{/lattice/arg}{
+ x/.store in=\lattice@x,
+ y/.store in=\lattice@y,
+ grid/.store in=\lattice@grid,
+ each point/.code n args={5}{\pgfkeys{/lattice/each point={#1}{#2}{#3}{#4}{#5}}},
+ bounding box/.store in=\lattice@bbox,
+ .unknown/.code={%
+ \expandafter\lattice@setnode\pgfkeyscurrentkey=#1\lattice@eov
+ }}
+\pgfqkeys{/lattice}{
+ x/.initial=-2:2,y/.initial=-2:2,
+ node/.initial={circle,inner sep=1pt,draw=none,fill=black},
+ grid/.style={/lattice/arg/grid/.default={#1}},
+ grid={gray,very thin},
+ bounding box/.style={/lattice/arg/bounding box/.default={#1}},
+ bounding box={cyan,thin},
+ each point/.code n args={5}{\node[#1] at (#2,#3){};},
+}
+\def\lattice@setnode/lattice/arg/#1\lattice@eov{%
+ \edef\lattice@node{\expandafter\noexpand\lattice@node,#1}}
+\def\lattice@getxy#1#2#3{%
+ \def\m@gic##1:##2:##3\end{\ifx ##3: #2=##1\p@ #3=##2\p@\else
+ #2=-##1\p@ #3=##1\p@\fi}%
+ \expandafter\m@gic\detokenize{#1:}:\end
+}
+\def\lattice{\@ifnextchar<\lattice@I{\@ifnextchar[\lattice@II{\lattice@@[]}}}
+\def\lattice@I{\ifnum\the\catcode`\;=\active\relax
+ \let\lattice@next\lattice@Iactive\else
+ \let\lattice@next\lattice@Inormal\fi
+ \lattice@next}
+\long\def\lattice@Inormal<#1>#2;{\alt<#1>{\lattice@I@#2;}{}}
+{\catcode`\;=\active
+ \long\gdef\lattice@Iactive<#1>#2;{\alt<#1>{\lattice@I@#2;}{}}
+}
+\def\lattice@I@{\@ifnextchar[\lattice@@{\lattice@@[]}}
+\def\lattice@II[#1]{\@ifnextchar<{\lattice@IIi[#1]}{\lattice@@[#1]}}
+\def\lattice@IIi[#1]<#2>{\lattice@I<#2>[#1]}
+\def\lattice@@[#1](#2,#3)#4(#5,#6)#7{
+ \let\lattice@grid\@empty%
+ \let\lattice@bbox\@empty%
+ \edef\lattice@x{\pgfkeysvalueof{/lattice/x}}%
+ \edef\lattice@y{\pgfkeysvalueof{/lattice/y}}%
+ \edef\lattice@node{\pgfkeysvalueof{/lattice/node}}%
+ \pgfqkeys{/lattice/arg}{#1}%
+ \expandafter\lattice@getxy\expandafter{\lattice@x}\la@Ax\la@Bx
+ \expandafter\lattice@getxy\expandafter{\lattice@y}\la@Ay\la@By
+ \ifx\lattice@bbox\@empty\else
+ \expandafter\draw\expandafter[\lattice@bbox]
+ (\strip@pt\la@Ax,\strip@pt\la@Ay)
+ rectangle (\strip@pt\la@Bx,\strip@pt\la@By);
+ \fi
+ \lattice@enumerate{#2}{#3}{#5}{#6}%
+}
+\endinput
+%%
+%% End of file `euclidean-lattice.sty'.
diff --git a/Master/texmf-dist/tex/latex/exesheet/exesheet.cls b/Master/texmf-dist/tex/latex/exesheet/exesheet.cls
index 334147724e1..5d920be2b19 100644
--- a/Master/texmf-dist/tex/latex/exesheet/exesheet.cls
+++ b/Master/texmf-dist/tex/latex/exesheet/exesheet.cls
@@ -22,7 +22,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesClass{exesheet}
-[2024/02/13 v2.7 .dtx Typesetting exercise or exam sheets]
+[2024/12/22 v2.8 Typesetting exercise or exam sheets]
\RequirePackage{kvoptions}
\DeclareBoolOption[true]{exetoc}
diff --git a/Master/texmf-dist/tex/latex/exesheet/exesheet.sty b/Master/texmf-dist/tex/latex/exesheet/exesheet.sty
index a57a3636bcc..2b7c96feb90 100644
--- a/Master/texmf-dist/tex/latex/exesheet/exesheet.sty
+++ b/Master/texmf-dist/tex/latex/exesheet/exesheet.sty
@@ -22,7 +22,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{exesheet}
-[2024/02/13 v2.7 .dtx Typesetting exercise or exam sheets]
+[2024/12/22 v2.8 Typesetting exercise or exam sheets]
\@ifclassloaded{exesheet}{}{
\RequirePackage{kvoptions}
@@ -302,7 +302,8 @@
\@ifundefined{frenchsetup}{}{\frenchsetup{StandardLists=true}}
% executed at begin doc if loaded before babel
\setlist[enumerate]{font=\enumfont}
- \setlist[enumerate,1]{topsep=1.5ex plus 1ex minus 1ex,leftmargin=1.5em}
+ \setlist[enumerate,1]{topsep=1.5ex plus 1ex minus 1ex,
+ leftmargin=1.5em}
\fi
\ifexesheet@setlist
@@ -336,13 +337,6 @@
item-indent=2.5em,label-offset=0.5em,
after-item-skip=0.5ex plus 0.5ex minus 0.5ex]{tablitem}[\item](2)
-\newenvironment{tablenuma*}{%
- \mbox{}\vspace{-1.667\baselineskip}\begin{tablenuma}}{
- \end{tablenuma}}
-\newenvironment{tablitem*}{%
- \mbox{}\vspace{-1.667\baselineskip}\begin{tablitem}}{
- \end{tablitem}}
-
\newenvironment{colsenum*}[2][]{%
\ifexesheet@multicol \else
\PackageError{exesheet}{The environments colsenum and colsenum*
@@ -421,7 +415,8 @@
\newcounter{@toclevel}
\newcommand{\set@toclevel}[1][]{
\ifthenelse{\equal{#1}{}}{
- \ifthenelse{\value{exercise} > \value{exe@ini}}{
+ \ifthenelse{\(\value{exercise} > \value{exe@ini}\)
+ \and \(\value{exe@ini} > 0 \)}{
\setcounter{@toclevel}{1}
}{% else
\ifthenelse{\equal{\the\@enumdepth}{0}}{
@@ -442,14 +437,14 @@
\ifexesheet@exetoc
\addcontentsline{toc}{section}{\correctionname}
\fi
- \setcounter{exercise}{0}
+ \setcounter{exercise}{\value{exe@ini}}
}{% else if
\ifthenelse{\value{@toclevel} = 2}{%
\subsection*{\correctionstyle\correctionname}
\ifexesheet@exetoc
\addcontentsline{toc}{subsection}{\correctionname}
\fi
- \setcounter{subpart}{0}
+ \setcounter{subpart}{\value{subpart@ini}}
}{% else if
\ifthenelse{\value{@toclevel} = 3}{%
\subsubsection*{\correctionstyle\correctionname}
@@ -463,9 +458,9 @@
\newenvironment{answers}[1][]{% #1 is the optional level
\ifthenelse{\boolean{exesheet@answers}}{%
- \ifthenelse{\boolean{exesheet@questions}}{
- \set@toclevel[#1]
- \typeset@correctionname
+ \ifthenelse{\boolean{exesheet@questions}}{%
+ \set@toclevel[#1]%
+ \typeset@correctionname%
\correctionstyle%
\ifexesheet@setlist
\settasks{
@@ -482,9 +477,12 @@
\renewcommand{\columnseprulecolor}{%
\color{correctioncolor}}
\fi%
- }{}
+ }{}%
}{\comment}
-}{\ifthenelse{\boolean{exesheet@answers}}{}{\endcomment}}
+}{\ifthenelse{\boolean{exesheet@answers}}{%
+ \setcounter{exe@ini}{0}
+ \setcounter{subpart@ini}{0}
+ }{\endcomment}}
\newenvironment{answers*}{
\ifthenelse{\boolean{exesheet@answers}}{\correctionstyle}{\comment}
diff --git a/Master/texmf-dist/tex/latex/exframe/exframe.sty b/Master/texmf-dist/tex/latex/exframe/exframe.sty
index 0ca87f18430..25af085764c 100644
--- a/Master/texmf-dist/tex/latex/exframe/exframe.sty
+++ b/Master/texmf-dist/tex/latex/exframe/exframe.sty
@@ -6,18 +6,18 @@
%%
%% exframe.dtx (with options: `package')
%%
-%% Copyright (C) 2011-2020 Niklas Beisert
+%% Copyright (C) 2011-2024 Niklas Beisert
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008 or later.
%%
\NeedsTeXFormat{LaTeX2e}[1996/12/01]
-\ProvidesPackage{exframe}[2020/02/24 v3.4 Framework for Exercise Problems]
+\ProvidesPackage{exframe}[2024/10/18 v3.5 Framework for Exercise Problems]
\RequirePackage{verbatim}
\RequirePackage{xkeyval}
@@ -75,10 +75,8 @@
\define@key{exframe.sty}{subproblemcounter}{\def\exf@subproblemcounter{#1}}
\define@key{exframe.sty}{solutioncounter}{\def\exf@solutioncounter{#1}}
\define@key{exframe.sty}{sheetcounter}{\def\exf@sheetcounter{#1}}
-
\define@boolkey{exframe.sty}[exf@]{extdata}[true]{}
\define@boolkey{exframe.sty}[exf@]{extstyle}[true]{}
-
\define@boolkey{exframe.sty}[exf@]{metastr}[true]{}
\define@boolkey{exf@setup}[]{solutions}[true]{}
@@ -95,6 +93,7 @@
\define@boolkey{exf@setup}[exf@]{solutionbuf}[true]{}
\exf@solutionbuftrue
\define@boolkey{exf@setup}[exf@]{problembuf}[true]{}
+\define@boolkey{exf@setup}[exf@]{subproblembuf}[true]{}
\def\exf@emptytestchar{&}
\define@key{exf@setup}{emptytestchar}{\def\exf@emptytestchar{#1}}
@@ -199,6 +198,7 @@
\exerciseconfig{insertsubproblemafter}{}
\exerciseconfig{insertsubprobleminfo}{}
\exerciseconfig{insertsubproblemsolution}{}
+\exerciseconfig{insertsubproblemselect}[1]{}
\exerciseconfig{insertsolutionbefore}{}
\exerciseconfig{insertsolutionafter}{}
\exerciseconfig{insertsolutioninfo}{}
@@ -209,28 +209,56 @@
\exerciseconfig{composemetasheet}[2]%
{\getexerciseconfig{composetitlesheet}{#1}{#2}}
\exerciseconfig{composetocsheet}[2]%
- {\exerciseifempty{#2}{\getexerciseconfig{termsheet} #1}{#1. #2}}
-\exerciseconfig{composeitemproblem}[1]{#1.}
-\exerciseconfig{composeitemproblemsep}%
- {\getexerciseconfig{composeitemsep}}
+ {\exerciseifempty{#2}{\getexerciseconfig{termsheet} #1}{#2}}
+\exerciseconfig{composeitemproblemsep}{\getexerciseconfig{composeitemsep}}
+\exerciseconfig{composeitemproblemdelim}{.}
+\exerciseconfig{composeitemproblem}[1]%
+ {#1\getexerciseconfig{composeitemproblemdelim}}
+\exerciseconfig{composebareproblemsep}{ }
+\exerciseconfig{composebareproblemdelim}{}
+\exerciseconfig{composebareproblem}[1]%
+ {\getexerciseconfig{termproblem}\getexerciseconfig{composebareproblemsep}%
+ \ifx\exf@config@composebareproblemdelim\exf@config@composeitemproblemdelim%
+ \getexerciseconfig{composeitemproblem}{#1}\else%
+ #1\getexerciseconfig{composebareproblemdelim}\fi}
+\exerciseconfig{composenamedproblemsep}{ }
+\exerciseconfig{composenamedproblemdelim}{.}
+\exerciseconfig{composenamedproblem}[2]%
+ {\ifx\exf@config@composenamedproblemdelim\exf@config@composeitemproblemdelim%
+ \getexerciseconfig{composeitemproblem}{#1}\else%
+ #1\getexerciseconfig{composenamedproblemdelim}\fi%
+ \getexerciseconfig{composenamedproblemsep}#2}
\exerciseconfig{composetitleproblem}[2]{\exerciseifempty{#1}%
{\exerciseifempty{#2}{}{#2}}%
- {\exerciseifempty{#2}{\getexerciseconfig{termproblem}\ %
- \getexerciseconfig{composeitemproblem}{#1}}%
- {\getexerciseconfig{composeitemproblem}{#1} #2}}}
+ {\exerciseifempty{#2}{\getexerciseconfig{composebareproblem}{#1}}%
+ {\getexerciseconfig{composenamedproblem}{#1}{#2}}}}
\exerciseconfig{composetocproblem}[2]%
- {\exerciseifempty{#2}{\getexerciseconfig{termproblem} #1}{#1. #2}}
-\exerciseconfig{composeitemsubproblem}[1]{#1}
-\exerciseconfig{composeitemsubproblemsep}%
- {\getexerciseconfig{composeitemsep}}
-\exerciseconfig{composetitlesubproblem}[1]{#1}
-\exerciseconfig{composeitemsolution}[2]{#1.}
-\exerciseconfig{composeitemsolutionsub}[2]{#2}
-\exerciseconfig{composeitemsolutionsep}%
- {\getexerciseconfig{composeitemsep}}
+ {\exerciseifempty{#2}{\getexerciseconfig{termproblem} #1}%
+ {#1\getexerciseconfig{composenamedproblemdelim} #2}}
+\exerciseconfig{composeitemsubproblemsep}{\getexerciseconfig{composeitemsep}}
+\exerciseconfig{composeitemsubproblemdelim}{}
+\exerciseconfig{composeitemsubproblem}[1]%
+ {#1\getexerciseconfig{composeitemsubproblemdelim}}
+\exerciseconfig{composetitlesubproblem}[1]%
+ {\getexerciseconfig{composeitemsubproblem}{#1}}
+\exerciseconfig{composeitemsolutionsep}{\getexerciseconfig{composeitemsep}}
+\exerciseconfig{composeitemsolutiondelim}{:}
+\exerciseconfig{composeitemsolution}[2]{}
+\exerciseconfig{composeitemsolutionsub}[2]%
+ {\getexerciseconfig{composeitemsubproblem}{#2}}
+\exerciseconfig{composeitemsolutionfirst}[2]%
+ {\getexerciseconfig{composeitemsolution}{#1}{#2}}
+\exerciseconfig{composeitemsolutionfirstsub}[2]%
+ {\getexerciseconfig{composeitemsolutionsub}{#1}{#2}}
\exerciseconfig{composetitlesolutionsingle}[2]%
- {\getexerciseconfig{termsolution}:}
-\exerciseconfig{composetitlesolutionmulti}[2]{#2}
+ {\getexerciseconfig{termsolution}%
+ \getexerciseconfig{composeitemsolutiondelim}}
+\exerciseconfig{composetitlesolutionproblem}[1]{}
+\exerciseconfig{composetitlesolutionsubproblem}[2]%
+ {\getexerciseconfig{composeitemsubproblem}{#2}}
+\exerciseconfig{composetitlesolutionmulti}[2]{\exerciseifempty{#2}%
+ {\getexerciseconfig{composetitlesolutionproblem}{#1}}%
+ {\getexerciseconfig{composetitlesolutionsubproblem}{#1}{#2}}}
\exerciseconfig{composetocsolution}[2]%
{\getexerciseconfig{composetocproblem}{#1}{#2}}
\exerciseconfig{composetitlesolutions}%
@@ -244,7 +272,8 @@
\exerciseconfig{composetitlesolutionsproblemsingle}[2]%
{\getexerciseconfig{termsolution}}
\exerciseconfig{composetitlesolutionsproblemmulti}[2]%
- {\exerciseifempty{#2}{\getexerciseconfig{termproblem} #1}{#1. #2}}
+ {\exerciseifempty{#2}{\getexerciseconfig{composebareproblem}{#1}}%
+ {\getexerciseconfig{composenamedproblem}{#1}{#2}}}
\exerciseconfig{composeitemsolutionlabel}[2]{#1#2}
\exerciseconfig{composepointsnum}[1]{#1}
@@ -306,9 +335,9 @@
\exerciseconfig{insertpointsmargin}[1]{\marginpar{\footnotesize #1}}
-\exerciseconfig{insertwarnpoints}[3]
+\exerciseconfig{insertwarnpoints}[3]%
{\textbf{points mismatch for #1 (#2 determined vs.\ #3 given)}}
-\exerciseconfig{insertwarnpointsrerun}[1]
+\exerciseconfig{insertwarnpointsrerun}[1]%
{\textbf{points changed for #1 (please recompile)}}
\exerciseconfig{countersheet}{\arabic{\exf@sheetcounter}}
@@ -385,6 +414,10 @@
\defexercisestyle{fracpoints}%
{\exerciseconfig{composepointsnum}[1]{\protect\showfracpoints{##1}}}
\defexercisestylearg[true]{twoside}{\exercisesetup{twoside={#1}}}
+\defexercisestyle{subproblemdelimitem}%
+ {\exerciseconfig{composeitemsubproblemdelim}{)}%
+ \exerciseconfig{countersubproblem}{\alph{\exf@subproblemcounter}}%
+ \exerciseconfig{countersubproblemmax}{m}}
\ifexf@extstyle
\defexercisestyle{contents}{%
@@ -483,6 +516,8 @@
\define@key{exf@problem}{#1}%
{\exf@csdo\def{exf@data@problem@#1}{##1}}}
\newcommand{\setproblemdata}[1]{\setkeys{exf@problem,exf@scanproblem}{#1}}
+\newcommand{\setsubproblemdata}[1]{%
+ \setkeys{exf@subproblem,exf@scansubproblem}{#1}}
\newcommand{\getproblemdata}[1]{\csname exf@data@problem@#1\endcsname}
\newcommand{\problemdataempty}[3]{\exf@csdo\ifx{exf@data@problem@#1}\exf@empty%
#2\else#3\fi}
@@ -677,10 +712,12 @@
\newtoks\exf@solbuf
\newtoks\exf@probbuf
+\newtoks\exf@subprobbuf
\newif\ifexf@solbuf@clean\exf@solbuf@cleantrue
\newif\ifexf@probbuf@clean\exf@probbuf@cleantrue
\def\exf@clear@solbuf{\global\exf@solbuf@cleantrue\global\exf@solbuf={}}
\def\exf@clear@probbuf{\global\exf@probbuf@cleantrue\global\exf@probbuf={}}
+\def\exf@clear@subprobbuf{\global\exf@subprobbuf={}}
\def\exf@append@buf#1#2{\global#1=\expandafter{\the#1#2}}
\def\exf@addline#1#2{{\protected@edef\exf@tmp{#2}%
@@ -794,8 +831,7 @@
\ifnum\exf@splitdec=375\def\exf@tmp{\exf@config@frac{\exf@splitint}{3}{8}}\fi%
\ifnum\exf@splitdec=625\def\exf@tmp{\exf@config@frac{\exf@splitint}{5}{8}}\fi%
\ifnum\exf@splitdec=875\def\exf@tmp{\exf@config@frac{\exf@splitint}{7}{8}}\fi%
- \ifx\exf@splitminus\exf@empty\else$\exf@splitminus$\fi\exf@tmp%
-}
+ \ifx\exf@splitminus\exf@empty\else$\exf@splitminus$\fi\exf@tmp}
\newcommand{\exf@config@frac}[3]{%
\ifnum#1=0\relax\else#1\fi%
@@ -997,7 +1033,7 @@
\ifexf@autolabelproblem\label{\exf@config@labelproblem{\problemtag}}\fi%
\ifdefined\exf@label\label{\exf@label}\fi%
\exf@writedata{problem}{\problemtag}{\ifdefined\sheettag\sheettag\fi}%
- \gdef\exf@problem@solnewsec{}%
+ \global\let\exf@problem@solfirst\exf@empty%
\xdef\exf@prevprob{\csname the\exf@problemcounter\endcsname}%
\ifcsname theH\exf@problemcounter\endcsname%
\xdef\exf@prevprobhref{\exf@problemcounter.%
@@ -1008,8 +1044,7 @@
\else%
\protected@xdef\exf@prevprobtitle{\exf@data@problem@rawtitle}%
\fi%
- \global\let\exf@prevsubprob\@undefined%
- \global\let\exf@prevsubprobhref\@undefined%
+ \exf@clear@prevsubprob%
\ifdefined\exf@problem@points%
\let\exf@problem@points@given\exf@empty%
\else%
@@ -1077,8 +1112,7 @@
\else\ifdefined\exf@sheet@points@total%
\PackageWarning{exframe}{no points defined for \exf@problemname}%
\fi\fi%
- \global\let\exf@prevsubprob\@undefined%
- \global\let\exf@prevsubprobhref\@undefined%
+ \exf@clear@prevsubprob%
\par\exf@close@block%
\exf@ifis\exf@solutionbelow{problem}{%
\exf@config@insertproblemsolution%
@@ -1102,9 +1136,10 @@
\newenvironment{exf@problem@scan}%
{\exf@scanblock{\exf@scanproblem}}{\endexf@scanproblem}%
\newenvironment{exf@scanproblem}[2]{%
- \exf@scanproblem@disablefalse%
+ \global\exf@scanproblem@disablefalse%
\setkeys*{exf@scanproblem}{#1}%
\exf@config@insertproblemselect{#1}%
+ \ifexf@scanproblem@disable\global\exf@scanproblem@disabletrue\fi%
\ifexf@scanproblem@disable%
\def\exf@verbatim@process{\@gobble}%
\else%
@@ -1183,7 +1218,7 @@
\define@key{exf@subproblem}{label}{\def\exf@label{#1}}
\define@key{exf@subproblem}{tag}{\def\subproblemtag{#1}}
-\newenvironment{\exf@subproblemname}[1][]{%
+\newenvironment{printsubproblem}[1]{%
\par{\exf@config@styletext\addvspace{\exf@config@skipsubproblemabove}}%
\refstepcounter{\exf@subproblemcounter}%
\exf@config@insertsubproblembefore%
@@ -1193,7 +1228,7 @@
\def\subproblemtag{\getexerciseconfig{tagsubproblem}}%
\let\exf@subproblem@points\@undefined%
\let\exf@label\@undefined%
- \setkeys{exf@subproblem,exf@probleminfo}{#1}%
+ \setkeys{exf@subproblem,exf@probleminfo,exf@scansubproblem}{#1}%
\ifexf@autolabelproblem\label{\exf@config@labelsubproblem%
{\subproblemtag}}\fi%
\ifdefined\exf@label\label{\exf@label}\fi%
@@ -1256,6 +1291,43 @@
\exf@showsolutions{\exf@config@composetitlesolutionsingle}{}}%
\ignorespacesafterend}
+\define@boolkey{exf@scansubproblem}[exf@scansubproblem@]{disable}[true]{}
+
+\newenvironment{exf@subproblem@direct}[1][]%
+ {\printsubproblem{#1}}{\endprintsubproblem\ignorespacesafterend}
+
+\newenvironment{exf@subproblem@scan}%
+ {\exf@scanblock{\exf@scansubproblem}}{\endexf@scansubproblem}%
+\newenvironment{exf@scansubproblem}[2]{%
+ \global\exf@scansubproblem@disablefalse%
+ \setkeys*{exf@scansubproblem}{#1}%
+ \exf@config@insertsubproblemselect{#1}%
+ \ifexf@scansubproblem@disable\global\exf@scansubproblem@disabletrue\fi%
+ \exf@clear@subprobbuf%
+ \ifexf@scansubproblem@disable%
+ \global\let\exf@prevsubprob\exf@empty%
+ \def\exf@verbatim@process{\@gobble}%
+ \else%
+ \exf@addline\exf@subprobbuf%
+ {\@backslashchar begin{printsubproblem}{#1}}%
+ \def\exf@verbatim@process{\exf@append@buf\exf@subprobbuf}%
+ \fi%
+ \exf@verbatim#2}%
+ {\exf@endverbatim%
+ \ifexf@scansubproblem@disable\else%
+ \exf@addline\exf@subprobbuf{\@backslashchar end{printsubproblem}}%
+ \fi%
+ \exf@source@buf\exf@subprobbuf%
+ \ignorespacesafterend}
+
+\newenvironment{\exf@subproblemname}%
+ {\ifexf@subproblembuf\let\exf@tmp\exf@subproblem@scan%
+ \else\let\exf@tmp\exf@subproblem@direct\fi%
+ \exf@tmp}%
+ {\ifexf@subproblembuf\let\exf@tmp\endexf@subproblem@scan%
+ \else\let\exf@tmp\endexf@subproblem@direct\fi%
+ \exf@tmp}
+
\define@key{exf@solution}{prob}{\def\exf@solprob{#1}}
\define@key{exf@solution}{subprob}{\def\exf@solsubprob{#1}}
\define@key{exf@solution}{problemtag}{\def\problemtag{#1}}
@@ -1264,6 +1336,7 @@
\define@key{exf@solution}{label}{\def\exf@label{#1}}
\define@key{exf@solution}{points}{\exf@scanpoints\exf@solution@points#1++@}
\define@key{exf@solution}{probtitle}{\def\exf@solprobtitle{#1}}
+\define@key{exf@solution}{firstsol}[]{\let\exf@solfirst\exf@empty}
\newenvironment{printsolution}[1]{%
\par{\exf@config@styletext\addvspace{\exf@config@skipsolutionabove}}%
@@ -1278,12 +1351,13 @@
\def\exf@in@solution{}%
\def\exf@solprob{}%
\def\exf@solsubprob{}%
+ \let\exf@solfirst\@undefined%
\let\exf@label\@undefined%
\let\exf@solution@points\@undefined%
\let\exf@solution@points@total\@undefined%
\def\exf@solhref{}%
\exf@init@block{\exf@config@skipsolutioninfo}%
- \setkeys{exf@solution,exf@probleminfo}{#1}%
+ \setkeys{exf@solution,exf@probleminfo,exf@scansolution}{#1}%
\exf@csdo\def{the\exf@solutioncounter}%
{\exf@config@composeitemsolutionlabel{\exf@solprob}{\exf@solsubprob}}%
\refstepcounter{\exf@solutioncounter}%
@@ -1306,6 +1380,8 @@
\ifdim\exf@tmp=0pt%
\protected@edef\exf@solution@title{%
\exf@composetitle{\exf@solprob}{\exf@solsubprob}}%
+ \ifx\exf@solsubprob\exf@empty\ifdefined\exf@solfirst\else%
+ \let\exf@solution@title\exf@empty\fi\fi%
\ifx\exf@solution@title\exf@empty\else%
\exf@prepend@intro{{%
\exf@config@styletitle\exf@config@styletitlesolution%
@@ -1319,25 +1395,25 @@
\settowidth\exf@addmargin{%
\exf@config@styletitle\exf@config@styletitlesolution%
\ifx\exf@solsubprob\exf@empty%
- \exf@config@composeitemsolution{\exf@config@counterproblemmax}%
- {\exf@config@countersubproblemmax}%
- \else%
- \exf@config@composeitemsolutionsub{\exf@config@counterproblemmax}%
- {\exf@config@countersubproblemmax}%
- \fi\exf@config@composeitemsolutionsep}%
- \fi%
- \ifx\exf@solsubprob\exf@empty%
- \protected@edef\exf@solution@item%
- {\exf@config@composeitemsolution{\exf@solprob}{\exf@empty}}%
- \else%
- \protected@edef\exf@solution@item%
- {\exf@config@composeitemsolutionsub{\exf@solprob}{\exf@solsubprob}}%
+ \let\exf@tmp\exf@config@composeitemsolutionfirst\else%
+ \let\exf@tmp\exf@config@composeitemsolutionfirstsub\fi%
+ \protected@edef\exf@solution@item{\exf@tmp%
+ {\exf@config@counterproblemmax}{\exf@config@countersubproblemmax}}%
+ \ifx\exf@solution@item\exf@empty\else%
+ \exf@solution@item\exf@config@composeitemsolutionsep\fi}%
\fi%
- \def\exf@introitem{\makebox[0cm][r]{%
+ \ifx\exf@solsubprob\exf@empty\ifdefined\exf@solfirst%
+ \let\exf@tmp\exf@config@composeitemsolutionfirst\else%
+ \let\exf@tmp\exf@config@composeitemsolution\fi%
+ \else\ifdefined\exf@solfirst%
+ \let\exf@tmp\exf@config@composeitemsolutionfirstsub\else%
+ \let\exf@tmp\exf@config@composeitemsolutionsub\fi\fi%
+ \protected@edef\exf@solution@item{\exf@tmp{\exf@solprob}{\exf@solsubprob}}%
+ \def\exf@introitem{\ifx\exf@solution@item\exf@empty\else\makebox[0cm][r]{%
\exf@config@styletitle\exf@config@styletitlesubproblem%
\ifexf@solutionhref\exf@href{\exf@solhref}{\exf@solution@item}%
\else\exf@solution@item\fi%
- \exf@config@composeitemproblemsep}}%
+ \exf@config@composeitemproblemsep}\fi}%
\fi%
\exf@ifis\exf@solpointsat{margin}{%
\exf@outpoints{\exf@prepend@def\exf@introitem}%
@@ -1363,41 +1439,48 @@
\def\exf@solprobtitle{}%
\let\exf@label\@undefined%
\let\exf@solhref\@undefined%
- \setkeys{exf@solution}{#1}%
- \let\exf@composetitle\exf@config@composetitlesolutionsproblemmulti%
- \exf@ifis\exf@solutionbelow{problem}{\let\exf@composetitle%
+ \setkeys{exf@solution,exf@scansolution}{#1}%
+ \let\exf@composesectitle\exf@config@composetitlesolutionsproblemmulti%
+ \exf@ifis\exf@solutionbelow{problem}{\let\exf@composesectitle%
\exf@config@composetitlesolutionsproblemsingle}%
- \exf@ifis\exf@solutionbelow{problem*}{\let\exf@composetitle%
+ \exf@ifis\exf@solutionbelow{problem*}{\let\exf@composesectitle%
\exf@config@composetitlesolutionsproblemsingle}%
\def\exf@solutionstoc{\exf@addcontentsline{\exf@config@toclevelsolution}%
{\exf@config@composetocsolution{\exf@solprob}{\exf@solprobtitle}}}%
\addvspace{\exf@config@skipsolutionsproblemabove}%
\exf@solutionssection{\exf@config@styletitlesolutionsproblem}%
- {\exf@composetitle{\exf@solprob}{\exf@solprobtitle}}%
+ {\exf@composesectitle{\exf@solprob}{\exf@solprobtitle}}%
{\exf@config@skipsolutionsproblemtitle}%
{\exf@solutionstoc}{\exf@label}{\exf@solhref}%
\endgroup}
-\newcommand{\exf@process@solnewsec}{%
- \ifdefined\exf@problem@solnewsec%
- \def\exf@probarg{\ifdefined\exf@prevprob prob={\exf@prevprob}\fi%
- \ifdefined\exf@prevprobtitle,probtitle={\exf@prevprobtitle}\fi%
- \ifdefined\exf@prevprobhref,href={\exf@prevprobhref}\fi%
- \ifdefined\exf@sollabel,label={\exf@sollabel}\fi}%
- \exf@ifis\exf@solutionbelow{here}{\let\exf@probarg\@undefined}%
- \exf@ifis\exf@solutionbelow{subproblem}{\let\exf@probarg\@undefined}%
- \exf@ifis\exf@solutionbelow{subproblem*}{\let\exf@probarg\@undefined}%
- \ifdefined\exf@probarg%
- \ifexf@lineno\exf@addline\exf@solbuf{\exf@linesep}%
- \exf@addline\exf@solbuf{\exf@lineno}\fi%
- \exf@addline\exf@solbuf{\@backslashchar solutionssection{\exf@probarg}}%
- \exf@addline\exf@solbuf{}%
- \fi%
- \global\let\exf@problem@solnewsec\@undefined%
- \fi}%
+\define@key{exf@scansolution}{forproblem}[]{\exf@clear@prevsubprob}
+\define@boolkey{exf@scansolution}[exf@scansolution@]{disable}[true]{}
+
+\newcommand{\exf@clear@prevsubprob}{%
+ \global\let\exf@prevsubprob\@undefined%
+ \global\let\exf@prevsubprobhref\@undefined%
+ \global\let\exf@prevpoints\@undefined%
+ \global\exf@scansubproblem@disablefalse}
+
+\newcommand{\exf@process@solsec}{%
+ \def\exf@probarg{\ifdefined\exf@prevprob prob={\exf@prevprob}\fi%
+ \ifdefined\exf@prevprobtitle,probtitle={\exf@prevprobtitle}\fi%
+ \ifdefined\exf@prevprobhref,href={\exf@prevprobhref}\fi%
+ \ifdefined\exf@sollabel,label={\exf@sollabel}\fi}%
+ \exf@ifis\exf@solutionbelow{here}{\let\exf@probarg\@undefined}%
+ \exf@ifis\exf@solutionbelow{subproblem}{\let\exf@probarg\@undefined}%
+ \exf@ifis\exf@solutionbelow{subproblem*}{\let\exf@probarg\@undefined}%
+ \ifdefined\exf@probarg%
+ \ifexf@lineno\exf@addline\exf@solbuf{\exf@linesep}%
+ \exf@addline\exf@solbuf{\exf@lineno}\fi%
+ \exf@addline\exf@solbuf{\@backslashchar solutionssection{\exf@probarg}}%
+ \exf@addline\exf@solbuf{}%
+ \fi}
\newcommand{\exf@generate@solprobarg}{%
\edef\exf@solprobarg{%
+ \ifdefined\exf@problem@solfirst firstsol,\fi%
\ifdefined\exf@prevprob prob={\exf@prevprob},\fi%
\ifdefined\exf@prevsubprob subprob={\exf@prevsubprob},%
\ifdefined\exf@prevsubprobhref href={\exf@prevsubprobhref},\fi%
@@ -1407,44 +1490,58 @@
\ifdefined\exf@prevpoints points=%
{\expandafter\exf@formatpoints\exf@prevpoints},\fi%
\ifdefined\sheettag sheettag={\sheettag},\fi%
- \ifdefined\problemtag problemtag={\problemtag},\fi}%
- \global\let\exf@prevsubprob\@undefined%
- \global\let\exf@prevsubprobhref\@undefined%
- \global\let\exf@prevpoints\@undefined}%
+ \ifdefined\problemtag problemtag={\problemtag},\fi}}
\newenvironment{exf@solution@direct}[1][]%
{\showpoints%
- \global\let\exf@problem@solnewsec\@undefined%
\exf@generate@solprobarg%
+ \global\let\exf@problem@solfirst\@undefined%
+ \exf@clear@prevsubprob%
\exf@showsolutionsin%
\let\exf@composetitle\exf@config@composetitlesolutionsingle%
\exf@exptwo\printsolution{\exf@solprobarg#1}}%
{\endprintsolution%
\exf@showsolutionsout%
- \ignorespacesafterend}%
+ \ignorespacesafterend}
\newenvironment{exf@solution@scan}%
{\exf@scanblock{\exf@scansolution}}{\endexf@scansolution}%
\newenvironment{exf@scansolution}[2]{%
- \exf@ifis\exf@solutionbelow{here}{\showpoints}%
- \exf@process@solnewsec%
- \exf@generate@solprobarg%
- \ifexf@lineno\exf@addline\exf@solbuf{\exf@linesep}%
- \exf@addline\exf@solbuf{\exf@lineno}\fi%
- \exf@addline\exf@solbuf%
- {\@backslashchar begin{printsolution}{\exf@solprobarg#1}}%
- \def\exf@verbatim@process{\exf@append@buf\exf@solbuf}%
+ \exf@scansolution@disablefalse%
+ \setkeys*{exf@scansolution}{#1}%
+ \ifdefined\exf@prevsubprob%
+ \ifexf@scansubproblem@disable\exf@scansolution@disabletrue\fi%
+ \else%
+ \ifexf@scanproblem@disable\exf@scansolution@disabletrue\fi%
+ \fi%
+ \ifexf@scansolution@disable%
+ \exf@clear@prevsubprob%
+ \def\exf@verbatim@process{\@gobble}%
+ \else%
+ \exf@ifis\exf@solutionbelow{here}{\showpoints}%
+ \exf@generate@solprobarg%
+ \ifdefined\exf@problem@solfirst\exf@process@solsec\fi%
+ \global\let\exf@problem@solfirst\@undefined%
+ \exf@clear@prevsubprob%
+ \ifexf@lineno\exf@addline\exf@solbuf{\exf@linesep}%
+ \exf@addline\exf@solbuf{\exf@lineno}\fi%
+ \exf@addline\exf@solbuf%
+ {\@backslashchar begin{printsolution}{\exf@solprobarg#1}}%
+ \def\exf@verbatim@process{\exf@append@buf\exf@solbuf}%
+ \fi%
\exf@verbatim#2}%
{\exf@endverbatim%
- \exf@addline\exf@solbuf{\@backslashchar end{printsolution}}%
- \global\exf@solbuf@cleanfalse%
+ \ifexf@scansolution@disable\else%
+ \exf@addline\exf@solbuf{\@backslashchar end{printsolution}}%
+ \global\exf@solbuf@cleanfalse%
+ \fi%
\ifexf@solfile@open%
\exf@write@buf\exf@solfile\exf@solbuf%
\exf@clear@solbuf%
\fi%
\ifsolutions\else\exf@clear@solbuf\fi%
- \exf@ifis\exf@solutionbelow{here}{\exf@showsolutions%
- {\exf@config@composetitlesolutionsingle}{}}%
+ \exf@ifis\exf@solutionbelow{here}{%
+ \exf@showsolutions{\exf@config@composetitlesolutionsingle}{}}%
\ifdefined\exf@in@subproblem\else%
\exf@ifis\exf@solutionbelow{subproblem}{%
\exf@showsolutions{\exf@config@composetitlesolutionsingle}{}}%
@@ -1551,8 +1648,8 @@
\metaset{author}{\exerciseifempty{\getsheetdata{author}}%
{\metapick[#1]{instructor}}{\metapick[#1]{sheetauthor}}}
\metaset{subtitle}{%
- \metaif[use]{sheettitle}
- {\metapick[#1]{sheettitle}}
+ \metaif[use]{sheettitle}%
+ {\metapick[#1]{sheettitle}}%
{\metapick[#1]{material}}}
\exerciseconfig{termsheet}{\metaterm{sheet}}
diff --git a/Master/texmf-dist/tex/latex/expkv-bundle/expkv-cs.sty b/Master/texmf-dist/tex/latex/expkv-bundle/expkv-cs.sty
index 66faca62fe7..b84419000ca 100644
--- a/Master/texmf-dist/tex/latex/expkv-bundle/expkv-cs.sty
+++ b/Master/texmf-dist/tex/latex/expkv-bundle/expkv-cs.sty
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-%% Copyright (C) 2020-2023 Jonathan P. Spratte
+%% Copyright (C) 2020-2024 Jonathan P. Spratte
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this license or
diff --git a/Master/texmf-dist/tex/latex/expkv-bundle/expkv-def.sty b/Master/texmf-dist/tex/latex/expkv-bundle/expkv-def.sty
index 300974bd57f..ae8bbb846f4 100644
--- a/Master/texmf-dist/tex/latex/expkv-bundle/expkv-def.sty
+++ b/Master/texmf-dist/tex/latex/expkv-bundle/expkv-def.sty
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-%% Copyright (C) 2020-2023 Jonathan P. Spratte
+%% Copyright (C) 2020-2024 Jonathan P. Spratte
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this license or
diff --git a/Master/texmf-dist/tex/latex/expkv-bundle/expkv-opt-2020-10-10.sty b/Master/texmf-dist/tex/latex/expkv-bundle/expkv-opt-2020-10-10.sty
index c2082261d77..45864b6021b 100644
--- a/Master/texmf-dist/tex/latex/expkv-bundle/expkv-opt-2020-10-10.sty
+++ b/Master/texmf-dist/tex/latex/expkv-bundle/expkv-opt-2020-10-10.sty
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% --------------------------------------------------------------
%%
-%% Copyright (C) 2020-2023 Jonathan P. Spratte
+%% Copyright (C) 2020-2024 Jonathan P. Spratte
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this license or
diff --git a/Master/texmf-dist/tex/latex/expkv-bundle/expkv-opt.sty b/Master/texmf-dist/tex/latex/expkv-bundle/expkv-opt.sty
index a3d3dd2a742..8b768949737 100644
--- a/Master/texmf-dist/tex/latex/expkv-bundle/expkv-opt.sty
+++ b/Master/texmf-dist/tex/latex/expkv-bundle/expkv-opt.sty
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-%% Copyright (C) 2020-2023 Jonathan P. Spratte
+%% Copyright (C) 2020-2024 Jonathan P. Spratte
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this license or
@@ -58,8 +58,8 @@
}
\DeclareRelease{v0.1}{2020/10/10}{expkv-opt-2020-10-10.sty}
\DeclareCurrentRelease{v0.2}{2021/04/04}
-\newcommand*\ekvoVersion{1.0}
-\newcommand*\ekvoDate{2023-01-23}
+\newcommand*\ekvoVersion{1.1}
+\newcommand*\ekvoDate{2024-12-16}
\ProvidesPackage{expkv-opt}
[%
\ekvoDate\space v\ekvoVersion\space
@@ -146,6 +146,19 @@
{\unexpanded\expandafter{#1}}
\protected\def\ekvo@set@handlers@local
{%
+ \ifx\@currext\@clsextension
+ \unless\ifx\@classoptionslist\relax
+ \expandafter
+ \ifx
+ \csname @raw@opt@\@currname.\@currext\endcsname
+ \@raw@classoptionslist
+ \unless\ifx\@unusedoptionlist\@empty
+ \let\ekvo@handle@defined@k\ekvo@rmfrom@unused@one
+ \let\ekvo@handle@defined@kv\ekvo@rmfrom@unused@two
+ \fi
+ \fi
+ \fi
+ \fi
\ekvo@if@need@handlers
{%
\ifx\@currext\@clsextension
@@ -159,10 +172,6 @@
\@raw@classoptionslist
\let\ekvo@handle@undefined@k\ekvo@addto@unused@one
\let\ekvo@handle@undefined@kv\ekvo@addto@unused@two
- \unless\ifx\@unusedoptionlist\@empty
- \let\ekvo@handle@defined@k\ekvo@rmfrom@unused@one
- \let\ekvo@handle@defined@kv\ekvo@rmfrom@unused@two
- \fi
\else
\let\ekvo@handle@undefined@k\@gobble
\let\ekvo@handle@undefined@kv\@gobbletwo
@@ -401,17 +410,6 @@
\let\ekvo@handle@defined@kv\@gobbletwo
}%
}
-\protected\def\ekvoProcessUnusedGlobalOptions#1%
- {%
- \PackageError{expkv-opt}%
- {%
- \noexpand
- \ekvoProcessUnusedGlobalOptions no longer works because of changes in%
- \MessageBreak
- the LaTeX2e kernel%
- }%
- {}%
- }
\IfFormatAtLeastTF{2022/11/01}
{%
\protected\def\ekvoProcessFutureOptions#1%
@@ -489,7 +487,7 @@
\csname\ekvo@name{}uN\expandafter\endcsname\expandafter
{\detokenize{##1}}{##1}%
}%
- {\@gobble}%
+ {}%
}%
\long\def\ekvo@handle@undefined@kv##1##2%
{%
diff --git a/Master/texmf-dist/tex/latex/expkv-bundle/expkv-pop.sty b/Master/texmf-dist/tex/latex/expkv-bundle/expkv-pop.sty
index d72d49d2567..28a58b43058 100644
--- a/Master/texmf-dist/tex/latex/expkv-bundle/expkv-pop.sty
+++ b/Master/texmf-dist/tex/latex/expkv-bundle/expkv-pop.sty
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-%% Copyright (C) 2020-2023 Jonathan P. Spratte
+%% Copyright (C) 2020-2024 Jonathan P. Spratte
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this license or
diff --git a/Master/texmf-dist/tex/latex/expkv-bundle/expkv.sty b/Master/texmf-dist/tex/latex/expkv-bundle/expkv.sty
index 310beff3bc9..80db4430728 100644
--- a/Master/texmf-dist/tex/latex/expkv-bundle/expkv.sty
+++ b/Master/texmf-dist/tex/latex/expkv-bundle/expkv.sty
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-%% Copyright (C) 2020-2023 Jonathan P. Spratte
+%% Copyright (C) 2020-2024 Jonathan P. Spratte
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this license or
diff --git a/Master/texmf-dist/tex/latex/ezedits/ezedits.sty b/Master/texmf-dist/tex/latex/ezedits/ezedits.sty
new file mode 100644
index 00000000000..0ad6de9f35a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/ezedits/ezedits.sty
@@ -0,0 +1,249 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% ezedits.sty
+%% Copyright 2024 J. A. Smiga
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status “maintained”.
+%
+% The Current Maintainer of this work is J. A. Smiga.
+%
+% This work consists of the file ezedits.sty
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% This package was written by Joseph A. Smiga <joseph.smiga@rochester.edu>
+%% Originally developed ca. 2018, this has been refined over the years.
+%%
+%% Some useful commands: (not up to date, see documentation)
+%% Included are a set of commands to generate comments for a LaTeX file.
+%%
+%% This package requires the following standard packages:
+%% ulem: for \sout
+%% xcolor: for coloring text.
+%% pdfcomment: if pdfcomment option is used
+%%
+%% Options are:
+%% arrows: add arrows pointing to edits in margins (in captions, a pair of arrows are added, instead).
+%% accept: accept all edits (arrows still appear).
+%% pdfcomments: write edits as pdf annotations (arrows still appear).
+
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{ezedits}[2024/11/13]
+
+% \RequirePackage{xcolor}
+
+\newif\if@accept\@acceptfalse % accept all comments (does not suppress package warnings)
+\newif\if@pdfcomm\@pdfcommfalse % write pdf comments
+\newif\if@showarrows\@showarrowsfalse
+\newif\if@importulem\@importulemtrue
+
+\DeclareOption{accept}{
+ \@accepttrue
+}
+\DeclareOption{pdfcomment}{ % add pdf comments
+ \@pdfcommtrue
+ \AtEndOfPackage{\RequirePackage{pdfcomment}}
+}
+\DeclareOption{arrows}{ % point to edits with arrows in the margin
+ \@showarrowstrue
+ \AtEndOfPackage{\RequirePackage{marginnote}}
+}
+\DeclareOption{nosout}{ % do not crossout deleted text
+ \@importulemfalse
+}
+
+\ProcessOptions\relax
+
+\if@importulem
+ \RequirePackage[normalem]{ulem}% import ulem (for sout)
+ % update \sout to work better with \cite
+ \let\old@cite\cite% remember original
+ \def\new@cite#1{\mbox{\old@cite{#1}}}% put cite in mbox
+ \def\new@sout#1{\let\cite\new@cite\sout{#1}\let\cite\old@cite}% redefine sout
+\else
+ \def\new@sout{}% do nothing
+\fi
+
+%% counters
+\newcounter{ez@totalcount}
+\newcounter{ez@tempcounter}
+
+% get page number for label (defined in .aux with \newlabel)
+% The \newlabel command defines ~\r@label to give a set of tokens. The second of which is the page number
+% Defining this avoids the issue of \pageref being overwritten (e.g., by hyperref)
+% This macro was adapted from lines in hyperref
+\def\ez@pageref#1{%
+ \expandafter\ifx\csname r@#1\endcsname\relax%
+ ?% ref not defined
+ \else%
+ \expandafter\expandafter\expandafter% evaluate "car..."
+ \expandafter\expandafter\expandafter% evaluate "gobble<...>"
+ \expandafter\@car% exapndafter holds "car" -> "\@car\@gobble<...>"
+ \expandafter\expandafter\expandafter% expand "csname...", put after "gobble"
+ \@gobble\csname r@#1\endcsname\@nil%
+ \fi%
+}
+
+%% Commands for recording edit counts
+\gdef\ez@pagelist{}
+\def\ez@geteditcount#1{%
+ \expandafter\ifx\csname ez@count@page#1\endcsname\relax%
+ % no edits on page
+ 0%
+ \else%
+ \csname ez@count@page#1\endcsname%
+ \fi%
+}
+\def\ez@addeditcount#1{%
+ \expandafter\ifx\csname ez@count@page#1\endcsname\relax%
+ % Initialize
+ \expandafter\gdef\csname ez@count@page#1\endcsname{0}%
+ % Add to (comma-separated) list
+ \xdef\ez@pagelist{\ez@pagelist\ifx\ez@pagelist\empty\else,\fi#1}
+% \xdef\ez@pagelist{\ez@pagelist#1,}
+ \fi%
+ % Add to count
+ % Note stepping needs to be "protected" (counters do not always like being changed, since this can mess up, e.g., TOC)
+ \protect\setcounter{ez@tempcounter}{\ez@geteditcount{#1}}%
+ \protect\stepcounter{ez@tempcounter}%
+ \expandafter\xdef\csname ez@count@page#1\endcsname{\number\value{ez@tempcounter}}%
+}
+
+%% edit record
+\def\ez@addeditpage{%
+ \def\ez@label{ezedit\theez@totalcount}% name of label
+ \label{\ez@label}% insert label
+ \ez@addeditcount{\ez@pageref{\ez@label}}% add to record for crnt page
+ % Note stepping needs to be "protected" (counters do not always like being changed, since this can mess up, e.g., TOC)
+ \protect\stepcounter{ez@totalcount}% update counter
+}
+
+\newcommand{\makeeditreport}{%
+ \def\@run##1{\expandafter\@process##1,\@nil,}%
+ \def\@process##1,{%
+ \ifx##1\@nil% terminate
+ \else%
+ ##1 & \csname ez@count@page##1\endcsname \\
+ \expandafter\@process\fi% end if, then process next token
+ }%
+ %
+ \begin{tabular}{l|r}
+ Page & \# edits/notes \\
+ \hline
+ \@run\ez@pagelist
+ \hline
+ Total & \arabic{ez@totalcount}
+ \end{tabular}
+}
+
+% Style of \draftnote (may be a better way to write this)
+\newcommand{\@draftstyle}[1]{
+ {\ttfamily%
+ \ifx\textcolor\undefined%
+ #1%
+ \else%
+ \textcolor{red}{#1}%
+ \fi}%
+}
+% let user change the style
+\newcommand{\setnotestyle}[1]{\let\@draftstyle#1}
+
+%% Editing commands
+\newcommand{\draftnote}[1]{%
+ \PackageWarning{ezedits}{Unresolved note: #1}%
+ \ez@addeditpage{}% update record
+ \if@showarrows%
+ \@ifundefined{@captype}%
+ {\marginnote{\@draftstyle{$\Longleftarrow$}}}%
+ {\@draftstyle{$\Longrightarrow$}}%
+ \fi%
+ \if@accept{}\relax\else%
+ \if@pdfcomm%
+ \pdfmargincomment{#1}%
+ \else%
+ \@draftstyle{[#1]}%
+ \fi%
+ \fi%
+ \if@showarrows% if in caption, draw end arrow
+ \@ifundefined{@captype}{}{\@draftstyle{$\Longleftarrow$}}%
+ \fi%
+}
+
+\newcommand{\defineEdit}[3]{%
+ % "\###Edit" for removing and adding text
+ \expandafter\newcommand\csname #1Edit\endcsname[2]{%
+ \PackageWarning{ezedits}{Unresolved modifications by #1: "##1" ---> "##2"}%
+ \ez@addeditpage{}% update record
+ \if@showarrows%
+ \@ifundefined{@captype}%
+ {\marginnote{{#3{$\Longleftarrow$}}}}%
+ {{#3{$\Longrightarrow$}}}%
+ \fi%
+ \if@accept% Display as if accepted
+ ##2%
+ \else%
+ \if@pdfcomm%
+ \pdfmarkupcomment[author=#1,markup=StrikeOut]{##1{$_\wedge$}}{##2}%
+ \else%
+ {#2{\new@sout{##1}}}{#3{##2}}%
+ \fi%
+ \fi%
+ \if@showarrows% if in caption, draw end arrow
+ \@ifundefined{@captype}{}{{#3{$\Longleftarrow$}}}%
+ \fi%
+ }%
+ % "\###Ins" for adding text
+ \expandafter\newcommand\csname #1Ins\endcsname[1]{%
+ \ez@addeditpage{}% update record
+ \PackageWarning{ezedits}{Unresolved modifications by #1: "##1" inserted.}%
+ \if@showarrows%
+ \@ifundefined{@captype}%
+ {\marginnote{{#3{$\Longleftarrow$}}}}%
+ {{#3{$\Longrightarrow$}}}%
+ \fi%
+ \if@accept% Display as if accepted
+ ##1%
+ \else%
+ \if@pdfcomm%
+ % \pdfcomment[author=#1,icon=Insert]{##1}%
+ \pdfmarkupcomment[author=#1,markup=Underline]{$_\wedge$}{##1}%
+ \else%
+ {#3{##1}}%
+ \fi%
+ \fi%
+ \if@showarrows% if in caption, draw end arrow
+ \@ifundefined{@captype}{}{{#3{$\Longleftarrow$}}}%
+ \fi%
+ }%
+ % "\###Del" for removing text
+ \expandafter\newcommand\csname #1Del\endcsname[1]{%
+ \PackageWarning{ezedits}{Unresolved modifications by #1: "##1" removed.}%
+ \ez@addeditpage{}% update record
+ \if@showarrows%
+ \@ifundefined{@captype}%
+ {\marginnote{{#3{$\Longleftarrow$}}}}%
+ {{#3{$\Longrightarrow$}}}%
+ \fi%
+ \if@accept% Display as if accepted
+ {}%
+ \else%
+ \if@pdfcomm%
+ \pdfmarkupcomment[author=#1,markup=StrikeOut,color=red]{##1}{}%
+ \else%
+ {#2{\new@sout{##1}}}%
+ \fi%
+ \fi%
+ \if@showarrows% if in caption, draw end arrow
+ \@ifundefined{@captype}{}{{#3{$\Longleftarrow$}}}%
+ \fi%
+ }%
+}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/fancyhdr/extramarks-v4.sty b/Master/texmf-dist/tex/latex/fancyhdr/extramarks-v4.sty
new file mode 100644
index 00000000000..fcac77f5ac8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/fancyhdr/extramarks-v4.sty
@@ -0,0 +1,135 @@
+%%
+%% This is file `extramarks-v4.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% fancyhdr.dtx (with options: `extramarks-v4')
+%%
+%% This is a generated file.
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3 of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{extramarks}
+ [2024/11/30 v4.5
+ Legacy version of extramarks for LaTeX]
+% Copyright (C) 1994-2024 by Pieter van Oostrum <pieter@vanoostrum.org>
+%%
+%% This is a legacy version (v4) of extramarks.sty
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifx\@temptokenb\undefined \csname newtoks\endcsname\@temptokenb\fi
+\providecommand\unrestored@protected@xdef{%
+ \let\protect\@unexpandable@protect \xdef}
+\ifdefined\ExplSyntaxOn
+\ExplSyntaxOn
+\DeclareRobustCommand*\markboth[2]{%
+ \begingroup
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \expandafter\@markboth\@themark{#1}{#2}%
+ \@temptokena \expandafter{\@themark}%
+ \ifdefined\mark_insert:nn
+ % 3 new lines to set the new marks
+ \mark_insert:nn{2e-left}{#1}
+ \mark_insert:nn{2e-right}{#2}
+ \tl_if_empty:nF{#2}{ \mark_insert:nn{2e-right-nonempty}{#2} }
+ \fi
+ \mark{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+\ExplSyntaxOff
+\else
+\def\markboth#1#2{%
+ \begingroup
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \expandafter\@markboth\@themark{#1}{#2}%
+ \@temptokena \expandafter{\@themark}%
+ \mark{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+\fi
+\ifx\@mkboth\@gobbletwo\else\def\@mkboth{\protect\markboth}\fi
+\def\@markboth#1#2#3#4#5#6{\@temptokena{{#3}{#4}}%
+ \unrestored@protected@xdef\@themark{{#5}{#6}\the\@temptokena}}
+\def\@markright#1#2#3#4#5{\@temptokena{#1}\@temptokenb{{#3}{#4}}%
+ \unrestored@protected@xdef\@themark{{\the\@temptokena}{#5}\the\@temptokenb}}
+
+\def\@leftmark#1#2#3#4{#1}
+\def\@rightmark#1#2#3#4{#2}
+\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
+\IfFormatAtLeastTF{2025-06-01}{}{%
+ \def\leftmark{\expandafter\@leftmark
+ \botmark\@empty\@empty\@empty\@empty}
+ \def\rightmark{\expandafter\@rightmark
+ \firstmark\@empty\@empty\@empty\@empty}
+}
+\def\firstleftmark{\expandafter\@leftmark
+ \firstmark\@empty\@empty\@empty\@empty}
+\def\lastrightmark{\expandafter\@rightmark
+ \botmark\@empty\@empty\@empty\@empty}
+\let\firstrightmark \rightmark
+\let\lastleftmark \leftmark
+
+\def\@themark{{}{}{}{}}
+
+\newcommand\extramarks[2]{%
+ \begingroup
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \expandafter\@markextra\@themark{#1}{#2}%
+ \@temptokena \expandafter{\@themark}%
+ \mark{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+\def\@markextra#1#2#3#4#5#6{\@temptokena {{#1}{#2}}%
+ \unrestored@protected@xdef\@themark{\the\@temptokena{#5}{#6}}}
+\def\extramarksleft#1{%
+ \begingroup
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \expandafter\@markextraleft\@themark{#1}%
+ \@temptokena \expandafter{\@themark}%
+ \mark{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+\def\@markextraleft#1#2#3#4#5{\@temptokena {{#1}{#2}}%
+ \@temptokenb {{#4}}%
+ \unrestored@protected@xdef\@themark{\the\@temptokena{#5}\the\@temptokenb}}
+\def\extramarksright#1{%
+ \begingroup
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \expandafter\@markextraright\@themark{#1}%
+ \@temptokena \expandafter{\@themark}%
+ \mark{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+\def\@markextraright#1#2#3#4#5{\@temptokena {{#1}{#2}{#3}}%
+ \unrestored@protected@xdef\@themark{\the\@temptokena{#5}}}
+\def\firstleftxmark{\expandafter\@leftxmark
+ \firstmark\@empty\@empty\@empty\@empty}
+\def\firstrightxmark{\expandafter\@rightxmark
+ \firstmark\@empty\@empty\@empty\@empty}
+\def\topleftxmark{\expandafter\@leftxmark
+ \topmark\@empty\@empty\@empty\@empty}
+\def\toprightxmark{\expandafter\@rightxmark
+ \topmark\@empty\@empty\@empty\@empty}
+\def\lastleftxmark{\expandafter\@leftxmark
+ \botmark\@empty\@empty\@empty\@empty}
+\def\lastrightxmark{\expandafter\@rightxmark
+ \botmark\@empty\@empty\@empty\@empty}
+\let\firstxmark\firstleftxmark
+\let\lastxmark\lastrightxmark
+\let\topxmark\topleftxmark
+\def\@leftxmark#1#2#3#4{#3}
+\def\@rightxmark#1#2#3#4{#4}
+\endinput
+%%
+%% End of file `extramarks-v4.sty'.
diff --git a/Master/texmf-dist/tex/latex/fancyhdr/extramarks.sty b/Master/texmf-dist/tex/latex/fancyhdr/extramarks.sty
index ab4ea7b0745..d64cc0149cc 100644
--- a/Master/texmf-dist/tex/latex/fancyhdr/extramarks.sty
+++ b/Master/texmf-dist/tex/latex/fancyhdr/extramarks.sty
@@ -21,70 +21,65 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{extramarks}
- [2024/07/23 v4.3.1
+ [2025/01/07 v5.1.1
Extra marks for LaTeX]
-% Copyright (C) 1994-2024 by Pieter van Oostrum <pieter@vanoostrum.org>
+% Copyright (C) 1994-2025 by Pieter van Oostrum <pieter@vanoostrum.org>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newtoks\@temptokenb
-\providecommand\unrestored@protected@xdef{%
- \let\protect\@unexpandable@protect \xdef}
-\def\markboth#1#2{%
- \begingroup
- \let\label\relax \let\index\relax \let\glossary\relax
- \expandafter\@markboth\@themark{#1}{#2}%
- \@temptokena \expandafter{\@themark}%
- \mark{\the\@temptokena}%
- \endgroup
- \if@nobreak\ifvmode\nobreak\fi\fi}
+\providecommand\DeclareRelease[3]{}
+\providecommand\DeclareCurrentRelease[2]{}
+\DeclareRelease{v4}{2024/11/30}{extramarks-v4.sty}
+\DeclareCurrentRelease{}{2025/01/07}
+\@ifundefined{NewMarkClass}
+ {\PackageWarningNoLine{extramarks}{%
+**************************************************\MessageBreak
+Your LaTeX installation is too old for extramarks version 5.\MessageBreak
+We will fallback to extramarks version 4 now.\MessageBreak
+Please note that some commands will not be available,\MessageBreak
+and that the functionality may be slightly different.\MessageBreak
+You are advised to update your LaTeX installation.\MessageBreak
+**************************************************}
+ \RequirePackage{extramarks-v4}\endinput}{}
+\AtBeginDocument{%
+ \IfPackageLoadedT{multicol}%
+ {\IfPackageAtLeastF{multicol}{2024-11-21}{%
+ \PackageWarningNoLine{extramarks}{%
+ You are using package `extramarks' with a version\MessageBreak
+ of `multicol' that is too old. The new version\MessageBreak
+ of `multicol' will be released on June 1, 2025.\MessageBreak
+ We will fallback to extramarks version 4 now.}%
+ \let\extramarks\undefined
+ \RequirePackage{extramarks-v4}
+ }%
+ }%
+}
\ifx\@mkboth\@gobbletwo\else\def\@mkboth{\protect\markboth}\fi
-\def\@markboth#1#2#3#4#5#6{\@temptokena{{#3}{#4}}%
- \unrestored@protected@xdef\@themark{{#5}{#6}\the\@temptokena}}
-\def\@markright#1#2#3#4#5{\@temptokena{#1}\@temptokenb{{#3}{#4}}%
- \unrestored@protected@xdef\@themark{{\the\@temptokena}{#5}\the\@temptokenb}}
-
-\def\@leftmark#1#2#3#4{#1}
-\def\@rightmark#1#2#3#4{#2}
-
-\def\leftmark{\expandafter\@leftmark
- \botmark\@empty\@empty\@empty\@empty}
-\def\rightmark{\expandafter\@rightmark
- \firstmark\@empty\@empty\@empty\@empty}
-\def\firstleftmark{\expandafter\@leftmark
- \firstmark\@empty\@empty\@empty\@empty}
-\def\lastrightmark{\expandafter\@rightmark
- \botmark\@empty\@empty\@empty\@empty}
+\NewMarkClass{extramarks-left}
+\NewMarkClass{extramarks-right}
+\newcommand\extramarks[2]{%
+ \InsertMark{extramarks-left}{#1}%
+ \InsertMark{extramarks-right}{#2}}
+\newcommand\extramarksleft[1]{%
+ \InsertMark{extramarks-left}{#1}}
+\newcommand\extramarksright[1]{%
+ \InsertMark{extramarks-right}{#1}}
+\newcommand\firstleftmark{\FirstMark{2e-left}}
+\newcommand\lastrightmark{\LastMark{2e-right}}
+\newcommand\firstrightmark{\rightmark}
\let\firstrightmark \rightmark
+\newcommand\lastleftmark{\leftmark}
\let\lastleftmark \leftmark
-
-\def\@themark{{}{}{}{}}
-
-\newcommand\extramarks[2]{%
- \begingroup
- \let\label\relax \let\index\relax \let\glossary\relax
- \expandafter\@markextra\@themark{#1}{#2}%
- \@temptokena \expandafter{\@themark}%
- \mark{\the\@temptokena}%
- \endgroup
- \if@nobreak\ifvmode\nobreak\fi\fi}
-\def\@markextra#1#2#3#4#5#6{\@temptokena {{#1}{#2}}%
- \unrestored@protected@xdef\@themark{\the\@temptokena{#5}{#6}}}
-\def\firstleftxmark{\expandafter\@leftxmark
- \firstmark\@empty\@empty\@empty\@empty}
-\def\firstrightxmark{\expandafter\@rightxmark
- \firstmark\@empty\@empty\@empty\@empty}
-\def\topleftxmark{\expandafter\@leftxmark
- \topmark\@empty\@empty\@empty\@empty}
-\def\toprightxmark{\expandafter\@rightxmark
- \topmark\@empty\@empty\@empty\@empty}
-\def\lastleftxmark{\expandafter\@leftxmark
- \botmark\@empty\@empty\@empty\@empty}
-\def\lastrightxmark{\expandafter\@rightxmark
- \botmark\@empty\@empty\@empty\@empty}
+\newcommand\firstleftxmark{\FirstMark{extramarks-left}}
+\newcommand\lastrightxmark{\LastMark{extramarks-right}}
+\newcommand\firstrightxmark{\FirstMark{extramarks-right}}
+\newcommand\topleftxmark{\TopMark{extramarks-left}}
+\newcommand\toprightxmark{\TopMark{extramarks-right}}
+\newcommand\lastleftxmark{\LastMark{extramarks-left}}
+\newcommand\firstxmark{\firstleftxmark}
\let\firstxmark\firstleftxmark
+\newcommand\lastxmark{\lastrightxmark}
\let\lastxmark\lastrightxmark
+\newcommand\topxmark{\topleftxmark}
\let\topxmark\topleftxmark
-\def\@leftxmark#1#2#3#4{#3}
-\def\@rightxmark#1#2#3#4{#4}
\endinput
%%
%% End of file `extramarks.sty'.
diff --git a/Master/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty b/Master/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty
index 9030da7b18c..8479a77750c 100644
--- a/Master/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty
+++ b/Master/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty
@@ -21,9 +21,9 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{fancyhdr}%
- [2024/07/23 v4.3.1
+ [2025/01/07 v5.1.1
Extensive control of page headers and footers]%
-% Copyright (C) 1994-2024 by Pieter van Oostrum <pieter@vanoostrum.org>
+% Copyright (C) 1994-2025 by Pieter van Oostrum <pieter@vanoostrum.org>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand\if@nch@mpty[1]{\def\temp@a{#1}\ifx\temp@a\@empty}
\newif\iff@nch@check
@@ -31,9 +31,13 @@
\DeclareOption{nocheck}{%
\f@nch@checkfalse
}
-\newif\iff@nch@compatViii
\let\f@nch@gbl\relax
+\newif\iff@nch@compatViii
\DeclareOption{compatV3}{%
+ \PackageWarningNoLine{fancyhdr}{The `compatV3' option is deprecated.\MessageBreak
+ It will disappear in one of the following releases.\MessageBreak
+ Please change your document to work\MessageBreak
+ without this option}
\let\f@nch@gbl\global
\f@nch@compatViiitrue
}
@@ -190,8 +194,41 @@
{\f@nch@forc\f@nch@lcr\f@nch@@lcr
{\f@nch@forc\f@nch@hf\f@nch@@hf
{\expandafter\setlength\csname
- f@nch@O@\f@nch@eo\f@nch@lcr\f@nch@hf\endcsname {#4}}}}}%
+ f@nch@offset@\f@nch@eo\f@nch@lcr\f@nch@hf\endcsname {#4}}}}}%
\f@nch@setoffs}
+\newcommand{\fancyheadwidth}[2][]{\f@nch@fancyhfwidth\fancyheadwidth h[#1]{#2}}%
+\newcommand{\fancyfootwidth}[2][]{\f@nch@fancyhfwidth\fancyfootwidth f[#1]{#2}}%
+\newcommand{\fancyhfwidth}[2][]{\f@nch@fancyhfwidth\fancyhfwidth {}[#1]{#2}}%
+\def\f@nch@fancyhfwidth#1#2[#3]#4{%
+ \setlength\@tempdima{#4}%
+ \def\temp@c{}%
+ \f@nch@forc\tmpf@ra{#3}%
+ {\expandafter\f@nch@ifin\tmpf@ra{eolcrhf,EOLCRHF}%
+ {}{\edef\temp@c{\temp@c\tmpf@ra}}}%
+ \ifx\@empty\temp@c\else \PackageError{fancyhdr}{Illegal char `\temp@c' in
+ \string#1 argument: [#3]}{}%
+ \fi \f@nch@for\temp@c{#3}%
+ {\f@nch@default\f@nch@@eo{eo}\temp@c
+ \f@nch@fancyhf@Echeck{#1}%
+ \f@nch@default\f@nch@@lcr{lcr}\temp@c
+ \f@nch@default\f@nch@@hf{hf}{#2\temp@c}%
+ \f@nch@forc\f@nch@eo\f@nch@@eo
+ {\f@nch@forc\f@nch@lcr\f@nch@@lcr
+ {\f@nch@forc\f@nch@hf\f@nch@@hf
+ {\expandafter\def\csname
+ f@nch@width@\f@nch@eo\f@nch@lcr\f@nch@hf\endcsname {#4}}}}}}
+\def\f@nch@width@elh{\headwidth}
+\def\f@nch@width@ech{\headwidth}
+\def\f@nch@width@erh{\headwidth}
+\def\f@nch@width@olh{\headwidth}
+\def\f@nch@width@och{\headwidth}
+\def\f@nch@width@orh{\headwidth}
+\def\f@nch@width@elf{\headwidth}
+\def\f@nch@width@ecf{\headwidth}
+\def\f@nch@width@erf{\headwidth}
+\def\f@nch@width@olf{\headwidth}
+\def\f@nch@width@ocf{\headwidth}
+\def\f@nch@width@orf{\headwidth}
\newcommand{\lhead}[2][\f@nch@olh]%
{\f@nch@def\f@nch@olh{#2}\f@nch@def\f@nch@elh{#1}}
\newcommand{\chead}[2][\f@nch@och]%
@@ -205,14 +242,14 @@
\newcommand{\rfoot}[2][\f@nch@orf]%
{\f@nch@def\f@nch@orf{#2}\f@nch@def\f@nch@erf{#1}}
\newlength{\f@nch@headwidth} \let\headwidth\f@nch@headwidth
-\newlength{\f@nch@O@elh}
-\newlength{\f@nch@O@erh}
-\newlength{\f@nch@O@olh}
-\newlength{\f@nch@O@orh}
-\newlength{\f@nch@O@elf}
-\newlength{\f@nch@O@erf}
-\newlength{\f@nch@O@olf}
-\newlength{\f@nch@O@orf}
+\newlength{\f@nch@offset@elh}
+\newlength{\f@nch@offset@erh}
+\newlength{\f@nch@offset@olh}
+\newlength{\f@nch@offset@orh}
+\newlength{\f@nch@offset@elf}
+\newlength{\f@nch@offset@erf}
+\newlength{\f@nch@offset@olf}
+\newlength{\f@nch@offset@orf}
\newcommand{\headrulewidth}{0.4pt}
\newcommand{\footrulewidth}{0pt}
\f@nch@ifundefined{headruleskip}%
@@ -227,22 +264,61 @@
\let\f@nch@raggedleft\raggedleft
\let\f@nch@raggedright\raggedright
\let\f@nch@centering\centering
+\let\f@nch@everypar\everypar
\ifdefined\ExplSyntaxOn
\ExplSyntaxOn
- \let\f@nch@everypar\tex_everypar:D
- \newcommand\f@nch@resetpar{%
- \f@nch@everypar{}%
- \cs_set_eq:NN \everypar\tex_everypar:D
- \cs_set_eq:NN \par \tex_par:D
- \cs_set_eq:NN \@@par \tex_par:D
- \cs_set_eq:NN \endgraf \tex_par:D
+ \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
+ \IfFormatAtLeastTF{2021-06-01}{
+ \prop_new:N \f@nch@empty_code_prop
+ \def\f@nch@saveclr@parhook #1{
+ \expandafter\let\csname f@nch@__hook~#1\expandafter\endcsname
+ \csname __hook~#1\endcsname
+ \expandafter\gdef\csname __hook~#1\endcsname { }
+ \expandafter\let\csname f@nch@__hook_toplevel~#1\expandafter\endcsname
+ \csname __hook_toplevel~#1\endcsname
+ \expandafter\gdef\csname __hook_toplevel~#1\endcsname { }
+ \expandafter\let\csname f@nch@__hook_next~#1\expandafter\endcsname
+ \csname __hook_next~#1\endcsname
+ \expandafter\gdef\csname __hook_next~#1\endcsname { }
+ \expandafter\let\csname f@nch@g__hook_#1_code_prop\expandafter\endcsname
+ \csname g__hook_#1_code_prop\endcsname
+ \global\expandafter\let\csname g__hook_#1_code_prop\endcsname \f@nch@empty_code_prop
+ }
+ \def\f@nch@restore@parhook #1{
+ \global\expandafter\let\csname __hook~#1\expandafter\endcsname
+ \csname f@nch@__hook~#1\endcsname
+ \global\expandafter\let\csname __hook_toplevel~#1\expandafter\endcsname
+ \csname f@nch@__hook_toplevel~#1\endcsname
+ \global\expandafter\let\csname __hook_next~#1\expandafter\endcsname
+ \csname f@nch@__hook_next~#1\endcsname
+ \global\expandafter\let\csname g__hook_#1_code_prop\expandafter\endcsname
+ \csname f@nch@g__hook_#1_code_prop\endcsname
+ }
+ \def\f@nch@resetpar{
+ \f@nch@everypar{}
+ \f@nch@saveclr@parhook{para/before}
+ \f@nch@saveclr@parhook{para/begin}
+ \f@nch@saveclr@parhook{para/end}
+ \f@nch@saveclr@parhook{para/after}
+ }
+ \def\f@nch@restorepar{
+ \f@nch@restore@parhook{para/before}
+ \f@nch@restore@parhook{para/begin}
+ \f@nch@restore@parhook{para/end}
+ \f@nch@restore@parhook{para/after}
+ }
+ }{
+ \def\f@nch@resetpar{
+ \f@nch@everypar{}
+ }
+ \def\f@nch@restorepar{}
}
\ExplSyntaxOff
\else
- \let\f@nch@everypar\everypar
- \newcommand\f@nch@resetpar{%
+ \def\f@nch@resetpar{%
\f@nch@everypar{}%
}
+ \def\f@nch@restorepar{}
\fi
\newcommand\f@nch@noUppercase[2][]{#2}
\def\f@nch@reset{\f@nch@resetpar\restorecr\endlinechar=13
@@ -307,8 +383,37 @@
\def\f@nch@headinit{#1}%
\def\f@nch@footinit{#1}%
}
+\ifdefined\NewMirroredHookPair
+ \NewMirroredHookPair{fancyhdr/before}{fancyhdr/after}
+ \NewMirroredHookPair{fancyhdr/head/begin}{fancyhdr/head/end}
+ \NewMirroredHookPair{fancyhdr/foot/begin}{fancyhdr/foot/end}
+\fi
+\newlength\f@nch@height
+\newlength\f@nch@footalignment
+\newif\iff@nch@footalign\f@nch@footalignfalse
+\newcommand{\fancyfootalign}[1]{%
+ \def\temp@a{#1}%
+ \ifx\temp@a\@empty
+ \f@nch@footalignfalse
+ \else
+ \f@nch@footaligntrue
+ \setlength\f@nch@footalignment{#1}%
+ \fi
+}
+\newcommand\fancyhdrsettoheight[2]{%
+ \expandafter\ifx\csname f@nch@#2\endcsname\fancyhdrsettoheight
+ \else\PackageError{fancyhdr}{Unknown parameter #2 in \string\fancyhdrsettoheight}{}\fi
+ \setbox\@tempboxa\hbox{{\f@nch@checkfalse\csname @#2\endcsname}}%
+ \setlength{#1}\f@nch@height
+ \setbox\@tempboxa\box\voidb@x
+}
+\let\f@nch@oddhead\fancyhdrsettoheight
+\let\f@nch@evenhead\fancyhdrsettoheight
+\let\f@nch@oddfoot\fancyhdrsettoheight
+\let\f@nch@evenfoot\fancyhdrsettoheight
\newcommand\f@nch@vbox[2]{%
\setbox0\vbox{#2}%
+ \global\f@nch@height=\ht0
\ifdim\ht0>#1\relax
\iff@nch@check
\dimen0=#1\advance\dimen0-\ht0
@@ -321,59 +426,93 @@
This may cause the page layout to be inconsistent, however
\fi
\ifx#1\headheight .\MessageBreak
- You might also make \topmargin smaller to compensate:\MessageBreak
+ You might also make \topmargin smaller:\MessageBreak
\string\addtolength{\string\topmargin}{\the\dimen0}%
\fi
\@gobble
}%
- \fi
- \iff@nch@compatViii
- \dimen0=#1\relax
- \global#1=\ht0\relax
- \ht0=\dimen0 %
+ \iff@nch@compatViii
+ \dimen0=#1\relax
+ \global#1=\ht0\relax
+ \ht0=\dimen0 %
+ \else
+ \ht0=#1\relax
+ \fi
\else
- \ht0=#1%
+ \ht0=#1\relax
\fi
\fi
\box0}
-\newcommand\f@nch@head[5]{%
+\newcommand\f@nch@head[8]{%
\f@nch@reset
+ \ifdefined\UseHook\UseHook{fancyhdr/before}\UseHook{fancyhdr/head/begin}\fi
\f@nch@headinit\relax
#1%
\hbox to\headwidth{%
\f@nch@vbox\headheight{%
- \hbox{%
- \rlap{\parbox[b]{\headwidth}{\raggedright\leavevmode\ignorespaces#2}}%
- \hfill
- \parbox[b]{\headwidth}{\centering\leavevmode\ignorespaces#3}%
- \hfill
- \llap{\parbox[b]{\headwidth}{\raggedleft\leavevmode\ignorespaces#4}}%
- }%
+ \f@nch@hfbox{#2}{#3}{#4}{b}{#6}{#7}{#8}%
\vskip\headruleskip\relax
\headrule
}%
}%
#5%
+ \ifdefined\UseHook\UseHook{fancyhdr/head/end}\UseHook{fancyhdr/after}\fi
+ \f@nch@restorepar
}
-\newcommand\f@nch@foot[5]{%
+\newcommand\f@nch@foot[8]{%
\f@nch@reset
+ \ifdefined\UseHook\UseHook{fancyhdr/before}\UseHook{fancyhdr/foot/begin}\fi
\f@nch@footinit\relax
#1%
\hbox to\headwidth{%
\f@nch@vbox\footskip{%
\setbox0=\vbox{\footrule}\unvbox0
\vskip\footruleskip
- \hbox{%
- \rlap{\parbox[t]{\headwidth}{\raggedright\leavevmode\ignorespaces#2}}%
- \hfill
- \parbox[t]{\headwidth}{\centering\leavevmode\ignorespaces#3}%
- \hfill
- \llap{\parbox[t]{\headwidth}{\raggedleft\leavevmode\ignorespaces#4}}%
- }%
+ \f@nch@hfbox{#2}{#3}{#4}{t}{#6}{#7}{#8}%
+ \iff@nch@footalign \vskip\f@nch@footalignment \fi
}%
}%
#5%
+ \ifdefined\UseHook\UseHook{fancyhdr/foot/end}\UseHook{fancyhdr/after}\fi
+ \f@nch@restorepar
+}
+\newlength\f@nch@widthL
+\newlength\f@nch@widthC
+\newlength\f@nch@widthR
+\newcommand\f@nch@hfbox[7]{%
+ \setlength\f@nch@widthL{#5}%
+ \setlength\f@nch@widthC{#6}%
+ \setlength\f@nch@widthR{#7}%
+ \let\@tempa\f@nch@hfbox@center
+ \ifdim \dimexpr \f@nch@widthL+\f@nch@widthC+\f@nch@widthR>\headwidth
+ \else
+ \ifdim \dimexpr \f@nch@widthL+0.5\f@nch@widthC>0.5\headwidth
+ \let \@tempa\f@nch@hfbox@fit
+ \fi
+ \ifdim \dimexpr \f@nch@widthR+0.5\f@nch@widthC>0.5\headwidth
+ \let \@tempa\f@nch@hfbox@fit
+ \fi
+ \fi
+ \@tempa{#1}{#2}{#3}{#4}%
+}
+\newcommand\f@nch@hfbox@center[4]{%
+ \hbox to \headwidth{%
+ \rlap{\parbox[#4]{\f@nch@widthL}{\raggedright\leavevmode\ignorespaces#1}}%
+ \hfill
+ \parbox[#4]{\f@nch@widthC}{\centering\leavevmode\ignorespaces#2}%
+ \hfill
+ \llap{\parbox[#4]{\f@nch@widthR}{\raggedleft\leavevmode\ignorespaces#3}}%
+ }%
}
+\newcommand\f@nch@hfbox@fit[4]{%
+ \hbox to \headwidth{%
+ \parbox[#4]{\f@nch@widthL}{\raggedright\leavevmode\ignorespaces#1}%
+ \hfill
+ \parbox[#4]{\f@nch@widthC}{\centering\leavevmode\ignorespaces#2}%
+ \hfill
+ \parbox[#4]{\f@nch@widthR}{\raggedleft\leavevmode\ignorespaces#3}%
+ }%
+}%
\f@nch@ifundefined{MakeUppercase}{\def\MakeUppercase{\uppercase}}{}%
\f@nch@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%
\def\f@nch@initialise{%
@@ -424,7 +563,8 @@
\def\ps@f@nch@fancycore{%
\f@nch@ps@empty
\def\@mkboth{\protect\markboth}%
- \def\f@nch@oddhead{\f@nch@head\f@nch@Oolh\f@nch@olh\f@nch@och\f@nch@orh\f@nch@Oorh}%
+ \def\f@nch@oddhead{\f@nch@head\f@nch@Oolh\f@nch@olh\f@nch@och\f@nch@orh\f@nch@Oorh
+ \f@nch@width@olh\f@nch@width@och\f@nch@width@orh}%
\def\@oddhead{%
\iff@nch@twoside
\ifodd\c@page
@@ -436,7 +576,8 @@
\f@nch@oddhead
\fi
}
- \def\f@nch@oddfoot{\f@nch@foot\f@nch@Oolf\f@nch@olf\f@nch@ocf\f@nch@orf\f@nch@Oorf}%
+ \def\f@nch@oddfoot{\f@nch@foot\f@nch@Oolf\f@nch@olf\f@nch@ocf\f@nch@orf\f@nch@Oorf
+ \f@nch@width@olf\f@nch@width@ocf\f@nch@width@orf}%
\def\@oddfoot{%
\iff@nch@twoside
\ifodd\c@page
@@ -448,14 +589,11 @@
\f@nch@oddfoot
\fi
}
- \def\@evenhead{\f@nch@head\f@nch@Oelh\f@nch@elh\f@nch@ech\f@nch@erh\f@nch@Oerh}%
- \def\@evenfoot{\f@nch@foot\f@nch@Oelf\f@nch@elf\f@nch@ecf\f@nch@erf\f@nch@Oerf}%
-}
-\def\ps@fancydefault{%
- \f@nch@initialise
- \ps@f@nch@fancyproto
+ \def\@evenhead{\f@nch@head\f@nch@Oelh\f@nch@elh\f@nch@ech\f@nch@erh\f@nch@Oerh
+ \f@nch@width@elh\f@nch@width@ech\f@nch@width@erh}%
+ \def\@evenfoot{\f@nch@foot\f@nch@Oelf\f@nch@elf\f@nch@ecf\f@nch@erf\f@nch@Oerf
+ \f@nch@width@elf\f@nch@width@ecf\f@nch@width@erf}%
}
-\@namedef{f@nch@ps@fancydefault-is-fancyhdr}{}
\def\f@nch@Oolh{\if@reversemargin\hss\else\relax\fi}
\def\f@nch@Oorh{\if@reversemargin\relax\else\hss\fi}
\let\f@nch@Oelh\f@nch@Oorh
@@ -464,36 +602,45 @@
\let\f@nch@Oorf\f@nch@Oorh
\let\f@nch@Oelf\f@nch@Oelh
\let\f@nch@Oerf\f@nch@Oerh
-\def\f@nch@offsolh{\headwidth=\textwidth\advance\headwidth\f@nch@O@olh
- \advance\headwidth\f@nch@O@orh\hskip-\f@nch@O@olh}
-\def\f@nch@offselh{\headwidth=\textwidth\advance\headwidth\f@nch@O@elh
- \advance\headwidth\f@nch@O@erh\hskip-\f@nch@O@elh}
-\def\f@nch@offsolf{\headwidth=\textwidth\advance\headwidth\f@nch@O@olf
- \advance\headwidth\f@nch@O@orf\hskip-\f@nch@O@olf}
-\def\f@nch@offself{\headwidth=\textwidth\advance\headwidth\f@nch@O@elf
- \advance\headwidth\f@nch@O@erf\hskip-\f@nch@O@elf}
+\def\f@nch@offsolh{\headwidth=\textwidth\advance\headwidth\f@nch@offset@olh
+ \advance\headwidth\f@nch@offset@orh\hskip-\f@nch@offset@olh}
+\def\f@nch@offselh{\headwidth=\textwidth\advance\headwidth\f@nch@offset@elh
+ \advance\headwidth\f@nch@offset@erh\hskip-\f@nch@offset@elh}
+\def\f@nch@offsolf{\headwidth=\textwidth\advance\headwidth\f@nch@offset@olf
+ \advance\headwidth\f@nch@offset@orf\hskip-\f@nch@offset@olf}
+\def\f@nch@offself{\headwidth=\textwidth\advance\headwidth\f@nch@offset@elf
+ \advance\headwidth\f@nch@offset@erf\hskip-\f@nch@offset@elf}
\def\f@nch@setoffs{%
\f@nch@gbl\let\headwidth\f@nch@headwidth
- \f@nch@gbl\let\f@nch@Oolh\f@nch@offsolh
- \f@nch@gbl\let\f@nch@Oelh\f@nch@offselh \f@nch@gbl\let\f@nch@Oorh\hss
- \f@nch@gbl\let\f@nch@Oerh\hss \f@nch@gbl\let\f@nch@Oolf\f@nch@offsolf
- \f@nch@gbl\let\f@nch@Oelf\f@nch@offself \f@nch@gbl\let\f@nch@Oorf\hss
- \f@nch@gbl\let\f@nch@Oerf\hss
+ \f@nch@gbl\def\f@nch@Oolh{\f@nch@offsolh}%
+ \f@nch@gbl\def\f@nch@Oelh{\f@nch@offselh}%
+ \f@nch@gbl\def\f@nch@Oorh{\hss}%
+ \f@nch@gbl\def\f@nch@Oerh{\hss}%
+ \f@nch@gbl\def\f@nch@Oolf{\f@nch@offsolf}%
+ \f@nch@gbl\def\f@nch@Oelf{\f@nch@offself}%
+ \f@nch@gbl\def\f@nch@Oorf{\hss}%
+ \f@nch@gbl\def\f@nch@Oerf{\hss}%
}
\newif\iff@nch@footnote
\AtBeginDocument{%
\let\latex@makecol\@makecol
\def\@makecol{\ifvoid\footins\f@nch@footnotefalse\else\f@nch@footnotetrue\fi
- \let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol}%
+ \let\f@nch@topfloat\@toplist\let\f@nch@botfloat\@botlist\latex@makecol}%
}
-\newcommand\iftopfloat[2]{\ifx\topfloat\@empty #2\else #1\fi}%
-\newcommand\ifbotfloat[2]{\ifx\botfloat\@empty #2\else #1\fi}%
+\newcommand\iftopfloat[2]{\ifx\f@nch@topfloat\@empty #2\else #1\fi}%
+\newcommand\ifbotfloat[2]{\ifx\f@nch@botfloat\@empty #2\else #1\fi}%
\newcommand\iffloatpage[2]{\if@fcolmade #1\else #2\fi}%
\newcommand\iffootnote[2]{\iff@nch@footnote #1\else #2\fi}%
-\newcommand{\fancypagestyle}[1]{%
- \@ifnextchar[{\f@nch@pagestyle{#1}}{\f@nch@pagestyle{#1}[f@nch@fancyproto]}%
+\ifx\@temptokenb\undefined \csname newtoks\endcsname\@temptokenb\fi
+\newif\iff@nch@pagestyle@star
+\newcommand\fancypagestyle{%
+ \@ifstar{\f@nch@pagestyle@startrue\f@nch@pagestyle}%
+ {\f@nch@pagestyle@starfalse\f@nch@pagestyle}%
}
-\long\def\f@nch@pagestyle#1[#2]#3{%
+\newcommand\f@nch@pagestyle[1]{%
+ \@ifnextchar[{\f@nch@@pagestyle{#1}}{\f@nch@@pagestyle{#1}[f@nch@fancyproto]}%
+}
+\long\def\f@nch@@pagestyle#1[#2]#3{%
\f@nch@ifundefined{ps@#2}{%
\PackageError{fancyhdr}{\string\fancypagestyle: Unknown base page style `#2'}{}%
}{%
@@ -501,11 +648,150 @@
\PackageError{fancyhdr}{\string\fancypagestyle: Base page style `#2' is not fancyhdr-based}{}%
}%
{%
- \@namedef{ps@#1}{\let\f@nch@gbl\relax\@nameuse{ps@#2}#3\relax}%
+ \f@nch@pagestyle@setup
+ \def\temp@b{\@namedef{ps@#1}}%
+ \expandafter\temp@b\expandafter{\the\@temptokenb
+ \let\f@nch@gbl\relax\@nameuse{ps@#2}#3\relax}%
\@namedef{f@nch@ps@#1-is-fancyhdr}{}%
}%
}%
-}%
+}
+\newcommand\f@nch@pagestyle@setup{%
+ \iff@nch@pagestyle@star
+ \iff@nch@check\@temptokenb={\f@nch@checktrue}\else\@temptokenb={\f@nch@checkfalse}\fi
+ \@tfor\temp@a:=
+ \f@nch@olh\f@nch@och\f@nch@orh\f@nch@elh\f@nch@ech\f@nch@erh
+ \f@nch@olf\f@nch@ocf\f@nch@orf\f@nch@elf\f@nch@ecf\f@nch@erf
+ \f@nch@width@elh\f@nch@width@ech\f@nch@width@erh\f@nch@width@olh
+ \f@nch@width@och\f@nch@width@orh\f@nch@width@elf\f@nch@width@ecf
+ \f@nch@width@erf\f@nch@width@olf\f@nch@width@ocf\f@nch@width@orf
+ \f@nch@Oolh\f@nch@Oorh\f@nch@Oelh\f@nch@Oerh
+ \f@nch@Oolf\f@nch@Oorf\f@nch@Oelf\f@nch@Oerf
+ \f@nch@headinit\f@nch@footinit
+ \headrule\headrulewidth\footrule\footrulewidth
+ \do {%
+ \toks@=\expandafter\expandafter\expandafter{\temp@a}%
+ \toks@=\expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\temp@a\expandafter{\the\toks@}}%
+ \edef\temp@b{\@temptokenb={\the\@temptokenb\the\toks@}}%
+ \temp@b
+ }%
+ \@tfor\temp@a:=
+ \f@nch@offset@olh\f@nch@offset@orh\f@nch@offset@elh\f@nch@offset@erh
+ \f@nch@offset@olf\f@nch@offset@orf\f@nch@offset@elf\f@nch@offset@erf
+ \do {%
+ \toks@=\expandafter\expandafter\expandafter{\expandafter\the\temp@a}%
+ \toks@=\expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter\setlength
+ \expandafter\expandafter\temp@a\expandafter{\the\toks@}}%
+ \edef\temp@b{\@temptokenb={\the\@temptokenb\the\toks@}}%
+ \temp@b
+ }%
+ \else
+ \@temptokenb={}%
+ \fi
+}
+\newcommand\fancypagestyleassign[2]{%
+ \f@nch@ifundefined{ps@#2}{%
+ \PackageError{fancyhdr}{\string\fancypagestyleassign: Unknown page style `#2'}{}%
+ }{%
+ \expandafter\let
+ \csname ps@#1\expandafter\endcsname
+ \csname ps@#2\endcsname
+ \f@nch@ifundefined{f@nch@ps@#2-is-fancyhdr}{%
+ \f@nch@ifundefined{f@nch@ps@#1-is-fancyhdr}{}{%
+ \PackageNote{fancyhdr}{%
+ \string\fancypagestyleassign: You overwrite the\MessageBreak
+ fancyhdr-based page style `#1' with the\MessageBreak
+ non-fancyhdr-based page style `#2'.\MessageBreak
+ This could cause unexpected problems if you\MessageBreak
+ use `#1' as the base style in \string\fancypagestyle}}%
+ \expandafter\let\csname f@nch@ps@#1-is-fancyhdr\endcsname\@undefined
+ }{%
+ \@namedef{f@nch@ps@#1-is-fancyhdr}{}%
+ }%
+ }%
+}
+\fancypagestyle*{fancydefault}{\f@nch@initialise}
+\def\f@nchdrbox@topstrut{\vrule height\ht\strutbox width\z@}
+\def\f@nchdrbox@botstrut{\vrule depth\dp\strutbox width\z@}
+\def\f@nchdrbox@nostrut{\noalign{\vspace{0pt}}\let\f@nchdrbox@@crstrut\f@nchdrbox@botstrut}
+\NewDocumentCommand{\fancyhdrbox}{ O{cl} o m }{%
+\begingroup
+ \let\f@nchdrbox@@pre\f@nchdrbox@topstrut
+ \let\f@nchdrbox@@postx\f@nchdrbox@botstrut
+ \let\f@nchdrbox@@posty\relax
+ \let\f@nchdrbox@@crstrut\strut
+ \IfNoValueTF{#2}%
+ {\let\f@nchdrbox@@halignto\@empty}%
+ {\setlength\@tempdima{#2}%
+ \def\f@nchdrbox@@halignto{to\@tempdima}}%
+ \def\@tempa{#1}%
+ \ifx\@tempa\@empty
+ \f@nchdrbox@align cl\@nil{#3}%
+ \else
+ \f@nchdrbox@align #1\@nil{#3}%
+ \fi
+\endgroup
+}
+\protected\def\f@nchdrbox@cr{%
+ {\ifnum0=`}\fi\@ifstar\@f@nchdrbox@xcr\@f@nchdrbox@xcr}
+
+\def\@f@nchdrbox@xcr{%
+ \unskip\f@nchdrbox@@crstrut
+ \@ifnextchar[\@f@nchdrbox@argc{\ifnum0=`{\fi}\cr}%
+}
+
+\def\@f@nchdrbox@argc[#1]{%
+ \ifnum0=`{\fi}%
+ \ifdim #1>\z@
+ \unskip\@f@nchdrbox@xargc{#1}%
+ \else
+ \@f@nchdrbox@yargc{#1}%
+ \fi}
+
+\def\@f@nchdrbox@xargc#1{\@tempdima #1\advance\@tempdima \dp \strutbox
+ \vrule \@height\z@ \@depth\@tempdima \@width\z@ \cr}
+
+\def\@f@nchdrbox@yargc#1{\cr\noalign{\setlength\@tempdima{#1}\vskip\@tempdima}}
+\def\f@nchdrbox@T{\let\f@nchdrbox@@pre\f@nchdrbox@nostrut
+ \f@nchdrbox@t}
+\def\f@nchdrbox@t{\def\f@nchdrbox@@v{t}\def\f@nchdrbox@@h{l}}
+\def\f@nchdrbox@c{\def\f@nchdrbox@@v{c}\def\f@nchdrbox@@h{c}}
+\def\f@nchdrbox@b{\def\f@nchdrbox@@v{b}\def\f@nchdrbox@@h{l}}
+\def\f@nchdrbox@B{\let\f@nchdrbox@@postx\relax
+ \def\f@nchdrbox@@posty{\vspace{0pt}}%
+ \f@nchdrbox@b}
+\long\def\f@nchdrbox@align#1#2\@nil#3{%
+ \f@nch@ifin{#1}{TtcbB}{%
+ \@nameuse{f@nchdrbox@#1}%
+ \def\@tempa{#2}%
+ \ifx\@tempa\@empty\else \def\f@nchdrbox@@h{#2}\fi
+ }%
+ {\def\f@nchdrbox@@v{c}\def\f@nchdrbox@@h{#1}}%
+ \let\\\f@nchdrbox@cr
+ \setbox0=\if \f@nchdrbox@@v t\vtop
+ \else \vbox
+ \fi
+ {%
+ \ialign \f@nchdrbox@@halignto
+ \bgroup \relax
+ {\if \f@nchdrbox@@h l\hskip 1sp\else \hfil \fi
+ \ignorespaces ##\unskip
+ \if\f@nchdrbox@@h r\else \hfil \fi
+ }%
+ \tabskip\z@skip \cr
+ \f@nchdrbox@@pre
+ #3\unskip \f@nchdrbox@@postx
+ \crcr
+ \egroup
+ \f@nchdrbox@@posty
+ }%
+ \if\f@nchdrbox@@v c\@tempdima=\ht0\advance\@tempdima\dp0%
+ \ht0=0.5\@tempdima\dp0=0.5\@tempdima\fi
+ \leavevmode \box0
+}
\@ifclassloaded{newlfm}
{
\let\ps@@empty\f@nch@ps@empty
diff --git a/Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-blobs.code b/Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-blobs.code
index bfc7e776ec8..9746c523766 100644
--- a/Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-blobs.code
+++ b/Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-blobs.code
@@ -3,11 +3,11 @@
\@tempcnta=\z@
\roundjoin
\roundcap
-\moveto(0,0)
+\moveto(.5,.5)
\loop
\advance\@tempcnta by 30
-\edef\rad{\fpeval{.2*\qr@modulesize+.115*\qr@modulesize*abs(rand())}}% fixed rand for both
-\lineto(\fpeval{cos(\@tempcnta)*\rad},\fpeval{sin(\@tempcnta)*\rad})
+\edef\rad{\fpeval{.1*\qr@modulesize+.13*\qr@modulesize*abs(rand())}}% fixed rand for both
+\lineto(\fpeval{cos(\@tempcnta)*\rad+.5},\fpeval{sin(\@tempcnta)*\rad+.5})
\ifnum\@tempcnta<360\relax
\repeat
\fillpath
diff --git a/Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-dots.code b/Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-dots.code
index f7fd55e1390..ced7e7a7205 100644
--- a/Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-dots.code
+++ b/Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-dots.code
@@ -1,4 +1,4 @@
-\def\fancyqr@dots@circle{\put(.5,.5){\circle*{\@ne}}}
+\def\fancyqr@dots@circle{\put(.5,.5){\circle*{\@ne}}}%
% .
\newpattern0000{\fancyqr@dots@circle}%
% | | - -
diff --git a/Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-flat.code b/Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-flat.code
index 023dd3d4a4b..649f27d1bc3 100644
--- a/Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-flat.code
+++ b/Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-flat.code
@@ -1,3 +1,4 @@
+\FancyQrHardCut%
\def\fancyqr@flat@rect{\moveto(0,0)\lineto(0,1)\lineto(1,1)\lineto(1,0)\lineto(0,0)\fillpath}
% .
\newpattern0000{\fancyqr@flat@rect}%
diff --git a/Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-swift.code b/Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-swift.code
deleted file mode 100644
index 529213f04f8..00000000000
--- a/Master/texmf-dist/tex/latex/fancyqr/fancyqr-style-swift.code
+++ /dev/null
@@ -1,2 +0,0 @@
-\PackageWarning{fancyqr}{Currently, swift is not supported :/}
-\FancyQrLoadDefault \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/fancyqr/fancyqr.sty b/Master/texmf-dist/tex/latex/fancyqr/fancyqr.sty
index bb2b9f3ebb5..88a4dc9daef 100644
--- a/Master/texmf-dist/tex/latex/fancyqr/fancyqr.sty
+++ b/Master/texmf-dist/tex/latex/fancyqr/fancyqr.sty
@@ -2,7 +2,7 @@
% Licensed under GNU General Public License version 3
% https://opensource.org/licenses/gpl-3.0.html
\def\filename{fancyqr}
-\ProvidesPackage{\filename}[2024/04/13 version v2.0 Fancy QR-Codes]
+\ProvidesPackage{\filename}[2024/11/27 version v2.2 Fancy QR-Codes]
\RequirePackage{pict2e, xfp, qrcode}
% element
@@ -32,18 +32,21 @@
\def\GetPattern{%
\ifcsname qcc\@up\@left\@right\@down\endcsname
\csname qcc\@up\@left\@right\@down\endcsname
-\else\rule\qr@modulesize\z@\fi}
+\fi}
% backwards compatibility
\def\fancyqr@clap#1{\hb@xt@\z@{\hss#1\hss}}
-\newdimen\fancyqr@edge@compensate
-\fancyqr@edge@compensate=.15\p@
+\newdimen\fancyqr@edge@compensate \fancyqr@edge@compensate=.15\p@
% is larger to be compensated by overlaps
\def\qrm{\dimexpr\qr@modulesize+\fancyqr@edge@compensate\relax}
\long\def\qr@newpattern#1#2#3#4#5{%
-\expandafter\def\csname qcc#1#2#3#4\endcsname{\parbox[b][\qr@modulesize]\qr@modulesize{\kern-\fancyqr@edge@compensate\relax\smash{\fancyqr@clap{\picture(\@ne,\@ne)#5\endpicture}}}%
-}}
+\expandafter\def\csname qcc#1#2#3#4\endcsname{% scaling happens implicitly by the unitlength
+ \put(\the\j,\the\numexpr\@max@y-\the\i){%
+ \advance\unitlength by\fancyqr@edge@compensate\relax
+ #5%
+ }}%
+}
% [#3][#2]
% [#4][#1]
@@ -97,11 +100,13 @@
\def\@fancy@qr@default@name{default}
\def\FancyQrLoad#1{%
+\protected@edef\fancyqr@loaded@style{#1}%
\def\fancyqr@rounded@rect@close{\fillpath}%
-\let\@tmp\newpattern\let\newpattern\qr@newpattern\@bsphack\def\@@tmp{#1}\ifx\@@tmp\@fancy@qr@default@name\FancyQrLoadDefault\else
+\let\@tmp\newpattern\let\newpattern\qr@newpattern\@bsphack\def\@@tmp{#1}%
+\ifx\@@tmp\@fancy@qr@default@name\FancyQrLoadDefault\else
\expandafter\edef\csname pingu@lib@#1@atcode\endcsname{\the\catcode`\@}%
\catcode`\@=11\relax
-\input{fancyqr-style-#1.code}
+\input{fancyqr-style-#1.code}%
\catcode`\@=\csname pingu@lib@#1@atcode\endcsname
\fi\@esphack\let\newpattern\@tmp\let\@tmp\relax}
@@ -116,12 +121,30 @@
\else\qr@white@format\fi
}%
-\def\FancyQrDoNotPrintSquare#1#2{\def\fancy@qr@donotprint@center@x{#1}\def\fancy@qr@donotprint@center@y{#2}}
+% #1 width
+% #2 height
+\def\FancyQrDoNotPrintSquare#1#2{%
+ \def\fancy@qr@donotprint@center@x{#1}%
+ \def\fancy@qr@donotprint@center@y{#2}%
+}
\FancyQrDoNotPrintSquare00
+% is a factor between 0 and 1
+\def\FancyQrDoNotPrintRadius#1{%
+ \def\fancy@qr@donotprint@center@r{#1}%
+}
+\FancyQrDoNotPrintRadius0
\newif\iffancy@qr@do@print@
\def\qr@fancy@updateif#1#2{\fancy@qr@do@print@true
-\ifnum#1>\@do@y@min\relax \ifnum#1<\@do@y@max\relax \ifnum#2>\@do@x@min\relax \ifnum#2<\@do@x@max\relax \fancy@qr@do@print@false \fi\fi\fi\fi}
+\ifdim\fancy@qr@donotprint@center@r\p@>\z@
+ \ifnum#1>\@do@y@min\relax \ifnum#1<\@do@y@max\relax \ifnum#2>\@do@x@min\relax \ifnum#2<\@do@x@max\relax
+ \ifdim\fpeval{sqrt((#1-\@half@max@y)^2 + (#2-\@half@max@x)^2)}\p@<\@max@rcrad\p@
+ \fancy@qr@do@print@false
+ \fi
+ \fi\fi\fi\fi
+\else
+\ifnum#1>\@do@y@min\relax \ifnum#1<\@do@y@max\relax \ifnum#2>\@do@x@min\relax \ifnum#2<\@do@x@max\relax \fancy@qr@do@print@false \fi\fi\fi\fi\fi
+}
\newif\iffancy@qr@roundcut@
\fancy@qr@roundcut@true
@@ -142,60 +165,67 @@
\newif\if@fancyqr@image@
+\def\qr@white{0}\def\qr@black{1}%
\def\fancy@qr@printmatrix#1{%
- \def\qr@white{0}\def\qr@black{1}%
\protected@edef\fancyqr@currprint{#1}%
- \let\qr@black@fixed\qr@black
- \let\qr@white@fixed\qr@white
- \let\qr@black@format\qr@black
- \let\qr@white@format\qr@white
+ \let\qr@black@fixed\qr@black \let\qr@white@fixed\qr@white
+ \let\qr@black@format\qr@black \let\qr@white@format\qr@white
%Set module size
- \qr@modulesize=\qr@desiredheight
+ \qr@modulesize=\qr@desiredheight\relax
\divide\qr@modulesize by \qr@size\relax
- \unitlength=\dimexpr\qr@modulesize+\fancyqr@edge@compensate\relax % initialize unitlength once
+ \unitlength=\dimexpr\qr@modulesize\relax % will be re-set in placement
\if@fancyqr@image@% image is in \fancyqr@imgbox
\edef\@x{\fpeval{ceil((.5\wd\fancyqr@imgbox)/\qr@modulesize)+\fancyqr@img@padding@x}}%
\edef\@y{\fpeval{ceil((.5\ht\fancyqr@imgbox+.5\dp\fancyqr@imgbox)/\qr@modulesize)+\fancyqr@img@padding@y}}%
\FancyQrDoNotPrintSquare\@x\@y
\fi
\qr@minipagewidth=\qr@desiredheight
- \ifqr@tight \advance\qr@minipagewidth by -\qr@modulesize \else \advance\qr@minipagewidth by 7\qr@modulesize \fi
- \minipage\qr@minipagewidth%
- \hfuzz=\qr@modulesize
- \baselineskip=\qr@modulesize
- \lineskiplimit=\z@ \lineskip=\z@ \parskip=\z@
- \ifqr@tight\else\rule\z@{4\qr@modulesize}\par\fi% %Blank space at top.
+ \ifqr@tight\else \advance\qr@minipagewidth by 8\qr@modulesize\relax \fi
+ \begingroup
\edef\@max@x{\qr@numberofrowsinmatrix\fancyqr@currprint}\edef\@half@max@x{\the\numexpr\@max@x/2}%
\edef\@max@y{\qr@numberofcolsinmatrix\fancyqr@currprint}\edef\@half@max@y{\the\numexpr\@max@y/2}%
+ % redefine the border to be white!
+ \qr@for \i=\@ne to \@max@y by \@ne{%
+ % redefine the limits to be white!
+ \qr@storetomatrix\fancyqr@currprint{\the\numexpr\z@}{\the\i}{\qr@white}%
+ \qr@storetomatrix\fancyqr@currprint{\the\numexpr\@max@x+\@ne}{\the\i}{\qr@white}%
+ }%
+ \qr@for \i=\@ne to \@max@x by \@ne{%
+ \qr@storetomatrix\fancyqr@currprint{\the\i}{\the\numexpr\z@}{\qr@white}%
+ \qr@storetomatrix\fancyqr@currprint{\the\i}{\the\numexpr\@max@y+\@ne}{\qr@white}%
+ }%
\edef\@do@x@min{\the\numexpr\@half@max@x-\fancy@qr@donotprint@center@x-\@ne}%
\edef\@do@x@max{\the\numexpr\@half@max@x+\fancy@qr@donotprint@center@x+\@ne}%
\edef\@do@y@min{\the\numexpr\@half@max@y-\fancy@qr@donotprint@center@y-\@ne}%
\edef\@do@y@max{\the\numexpr\@half@max@y+\fancy@qr@donotprint@center@y+\@ne}%
- \qr@for \i=\@ne to \@max@y by \@ne{%
- \ifqr@tight\else\rule{4\qr@modulesize}\z@\fi% %Blank space at left.
- \qr@for \j=\@ne to \@max@x by \@ne{%
+ \edef\@max@rcrad{\fpeval{max((\@ne-\fancy@qr@donotprint@center@r)*\fancy@qr@donotprint@center@x,(\@ne-\fancy@qr@donotprint@center@r)*\fancy@qr@donotprint@center@y)+\fancyqr@edge@compensate}}%
+ \edef\@tmp@tight{\ifqr@tight\z@\else-4\fi}%
+ \picture(\qr@minipagewidth,\qr@minipagewidth)(\the\numexpr\@ne+\@tmp@tight,\@tmp@tight)
+ \qr@for \i=\@ne to \@max@y by \@ne{\qr@for \j=\@ne to \@max@x by \@ne{%
\qr@fancy@updateif\i\j
\iffancy@qr@do@print@
- \edef\@mid{\qr@matrixentry\fancyqr@currprint{\the\i}{\the\j}}%
- \ifnum\@mid=\qr@white
- \rule\qr@modulesize\z@
- \else% if not white, get its pattern
- \iffancy@qr@roundcut@\qr@fancy@clear@surround\fancyqr@currprint{\the\i}{\the\j}\fi
- \edef\@up{\qr@matrixentry\fancyqr@currprint{\the\numexpr\the\i-1}{\the\j}}%
- \edef\@left{\qr@matrixentry\fancyqr@currprint{\the\i}{\the\numexpr\the\j-1}}%
- \edef\@right{\qr@matrixentry\fancyqr@currprint{\the\i}{\the\numexpr\the\j+1}}%
- \edef\@down{\qr@matrixentry\fancyqr@currprint{\the\numexpr\the\i+1}{\the\j}}%
- \FancyQrColor{\GetPattern}%
- \fi\else \rule\qr@modulesize\z@\fi
- }\par}%
- \ifqr@tight\else\rule\z@{4\qr@modulesize}\par\fi
- \endminipage
- \if@fancyqr@image@\nobreak
- \llap{\parbox\qr@minipagewidth{\centering\usebox\fancyqr@imgbox}%
- % if half the width is odd, offset by half a module width, done by centering
- \edef\@halfcheck{\fpeval{round(\fancy@qr@donotprint@center@x/2)}}%
- \ifodd\@halfcheck \kern.5\qr@modulesize\fi
- }\fi
+ \edef\@mid{\qr@matrixentry\fancyqr@currprint{\the\i}{\the\j}}%
+ \ifnum\@mid=\qr@black\relax
+ \iffancy@qr@roundcut@\qr@fancy@clear@surround\fancyqr@currprint{\the\i}{\the\j}\fi
+ \edef\@up{\qr@matrixentry\fancyqr@currprint{\the\numexpr\the\i-\@ne}{\the\j}}%
+ \edef\@left{\qr@matrixentry\fancyqr@currprint{\the\i}{\the\numexpr\the\j-\@ne}}%
+ \edef\@right{\qr@matrixentry\fancyqr@currprint{\the\i}{\the\numexpr\the\j+\@ne}}%
+ \edef\@down{\qr@matrixentry\fancyqr@currprint{\the\numexpr\the\i+\@ne}{\the\j}}%
+ \FancyQrColor{\GetPattern}%
+ \fi\fi
+ }}%
+ \if@fancyqr@image@
+ % floating point mid
+ \put(\fpeval{.5*\@max@x+.5},\fpeval{.5*\@max@y}){%
+ \edef\@halfcheck{\fpeval{round(\fancy@qr@donotprint@center@x/2)}}%
+ \raisebox{-.5\height}{\clap{% TODO: remove this offset
+ \ifodd\@halfcheck \else\kern\qr@modulesize\fi
+ \usebox\fancyqr@imgbox
+ }}%
+ }%
+ \fi
+ \endpicture
+ \endgroup
}%
\def\fancy@qr@setup#1{%
@@ -263,6 +293,16 @@
\define@key{fancyqr}{random color}{\@fancyqr@randomcolor@true\def\@fancyqr@random@colors{#1}}
\define@key{fancyqr}{width}{\setkeys{qr}{height=#1}}
\define@key{fancyqr}{size}{\setkeys{qr}{height=#1}}
+\define@key{fancyqr}{compensate}{\setlength\fancyqr@edge@compensate{#1}}
+% \fancyqr@loaded@style
+\def\fancyqr@flat@style{flat}
+\define@boolkey{fancyqr}[@fancyqr@]{classic}[true]{} % if@fancyqr@classic
+\def\fancyqr@classic{%
+\ifx\fancyqr@loaded@style\fancyqr@flat@style\else\FancyQrLoad{\fancyqr@flat@style}\fi
+\setkeys{fancyqr}{%
+ gradient=false,color=black,l color=black,r color=black,compensate=\z@\relax
+}%
+}
\def\fancyqrset#1{\setkeys{qr,fancyqr}{#1}}
\fancyqrset{image padding=0,gradient=true,gradient angle=135,r color=teal,l color=purple}
@@ -275,12 +315,10 @@
\newcommand\@@fancyqr[1][]{\begingroup\@fancyqr@init
\ifqr@starinvoked\qr@hyperlinkfalse\fi
\setkeys{qr,fancyqr}{#1}%
+\if@fancyqr@classic\fancyqr@classic\fi%
\if@fancyqr@randomcolor@%
\ifcsname pgfmathdeclarerandomlist\endcsname\else
\PackageError{fancyqr}{Random colors requested but pgfmath not loaded}{Please load pgfmath if you want this}\fi
\pgfmathdeclarerandomlist{@@fancyqr@@randomcol}{\@fancyqr@random@colors}\let\FancyQrColor\@@fancyqr@color@random\else\if@fancyqr@gradient\let\FancyQrColor\@@fancyqr@color@gradient\fi\fi
\bgroup\qr@verbatimcatcodes\qr@setescapedspecials\qrcode@in}
\endinput
-
-% TODO: NEGATIVE PATTERNS IF MIDDLE IS 0
-% => make rounded negative corners
diff --git a/Master/texmf-dist/tex/latex/ffcode/ffcode.sty b/Master/texmf-dist/tex/latex/ffcode/ffcode.sty
index 9ecddd78e80..0e6c0d1e816 100644
--- a/Master/texmf-dist/tex/latex/ffcode/ffcode.sty
+++ b/Master/texmf-dist/tex/latex/ffcode/ffcode.sty
@@ -7,7 +7,7 @@
%% ffcode.dtx (with options: `package')
%% (The MIT License)
%%
-%% Copyright (c) 2021-2024 Yegor Bugayenko
+%% Copyright (c) 2021-2025 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
@@ -31,7 +31,9 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{ffcode}
-[2024-03-23 0.9.3 Fixed Font Code]
+[2025/01/05 0.10.1 Fixed Font Code]
+
+
@@ -55,6 +57,7 @@
/ff/.cd,
bold/.store in=\ff@bold,
sf/.store in=\ff@sf,
+ samepage/.store in=\ff@samepage,
noframes/.store in=\ff@noframes,
nonumbers/.store in=\ff@nonumbers,
nobars/.store in=\ff@nobars,
@@ -64,30 +67,44 @@
\ProcessPgfPackageOptions{/ff}
\RequirePackage{xcolor}
+
\RequirePackage{listings}
\makeatletter
\lst@AddToHook{Init}{\setlength{\lineskip}{0pt}}
\makeatother
\makeatletter
+\newcommand\ff@set[1]{
+ \lstset{breaklines}
+ \lstset{escapeinside={(*@}{@*)}}
+ \lstset{basicstyle={\ttfamily}}
+ \lstset{columns=fullflexible}
+ \ifdefined\ff@nonumbers\else
+ \lstset{numbers=left,numbersep=.8em,numberstyle={\tiny\sffamily\color{gray}}}
+ \fi
+ \ifdefined\ff@nobars\else
+ \lstset{frame=leftline,framerule=.05em,rulecolor={\color{gray}}}
+ \fi
+ \ifdefined\ff@nocn\else
+ \lstset{firstnumber=last}
+ \fi
+ \lstset{#1}
+}
+\makeatother
+
+\makeatletter
\lstnewenvironment{ffcode}[1][]
- {
- \lstset{breaklines}
- \lstset{escapeinside={(*@}{@*)}}
- \lstset{basicstyle={\ttfamily}}
- \lstset{columns=fullflexible}
- \ifdefined\ff@nonumbers\else
- \lstset{numbers=left,numbersep=.8em,numberstyle={\tiny\sffamily\color{gray}}}
- \fi
- \ifdefined\ff@nobars\else
- \lstset{frame=leftline,framerule=.05em,rulecolor={\color{gray}}}
- \fi
- \ifdefined\ff@nocn\else
- \lstset{firstnumber=last}
- \fi
- \lstset{#1}
- }
- {}
+ {\ff@set{#1}\ifdefined\ff@samepage\noindent\minipage{\linewidth}\fi}
+ {\ifdefined\ff@samepage\endminipage\fi}
+\makeatother
+
+\makeatletter
+\newcommand\ffinput[2][]{%
+ \ff@set{#1}%
+ \ifdefined\ff@samepage\noindent\minipage{\linewidth}\fi%
+ \lstinputlisting[#1]{#2}%
+ \ifdefined\ff@samepage\endminipage\fi%
+}
\makeatother
\makeatletter
diff --git a/Master/texmf-dist/tex/latex/fillpages/fillpages.sty b/Master/texmf-dist/tex/latex/fillpages/fillpages.sty
new file mode 100644
index 00000000000..47a70ec11c3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/fillpages/fillpages.sty
@@ -0,0 +1,211 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Made by Gabriel Ruprecht %
+% %
+% This work is published under the %
+% LaTeX project public license 1.3 %
+% %
+% Package version 1.1.0 %
+% 2025-01-21 %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{fillpages}[version 1.1.0]
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Number definitions %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% How many pages were inserted in the last run
+% (at begin document) and how many pages are already
+% inserted in this run (after begin document). The
+% default value is overwritten with the content from
+% the aux file (if there had ever be a run).
+\newcount\GFM@FiPa@numberOfInsertedPages\relax
+\GFM@FiPa@numberOfInsertedPages=0\relax
+
+% To distribute the fill pages on evenly on all
+% insertion points, they must be counted. Default
+% value must be 1 to avoid division by 0. It will
+% be overwritten by the aux file value.
+\newcount\GFM@FiPa@numberOfFillPagePositions\relax
+\GFM@FiPa@numberOfFillPagePositions=1\relax
+
+% Number of pages, if there weren't any fill pages.
+\newcount\GFM@FiPa@pageCountWithoutFillPages\relax
+\GFM@FiPa@pageCountWithoutFillPages=0\relax
+
+% Self-explaining. Will be calculated. It is a
+% float number, therefore realized as a length.
+\newdimen\GFM@FiPa@pagesPerFillPosition\relax
+\GFM@FiPa@pagesPerFillPosition=0pt\relax
+
+% The currentLimit defines, how many new fill pages
+% are inserted. If there were over all 3 and current
+% limit is 5, 2 fill pages will be inserted at the
+% current insertion point.
+\newdimen\GFM@FiPa@currentLimit\relax
+\GFM@FiPa@currentLimit=0pt\relax
+
+% The number, by which the page number must be
+% divisible.
+\newcount\GFM@FiPa@Divisor\relax
+\GFM@FiPa@Divisor=4\relax
+
+% An offset, if the numbers must be i.e. divisible
+% by 4 and have 2 extra pages.
+\newcount\GFM@FiPa@DivisibleOffset\relax
+\GFM@FiPa@DivisibleOffset=0\relax
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Set the number by which the %%%
+%%% page count must be divisible %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\NewDocumentCommand\pagesDivisibleBy{m O{0}}{%
+\GFM@FiPa@Divisor=#1\relax%
+\ifnum\GFM@FiPa@Divisor<1\relax%
+ \PackageError{fillpages.sty}{line 69: Illegal number}{You can't divide a page count by zero. Replaced with 1.}%
+ \GFM@FiPa@Divisor=1\relax%
+\fi%
+\ifnum\GFM@FiPa@Divisor>50\relax%
+ \PackageWarning{fillpages.sty}{Strange number. You want your pages divisible by a number greater than 50}%
+\fi%
+\GFM@FiPa@DivisibleOffset=#2\relax%
+}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Defines fillpages %%%
+%%% %%%
+%%% i.e. \setFillPage{1}{custom Text} lets %%%
+%%% appear "custom Text" on fillpage no. 1 %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\long\def\setFillPage#1#2{%
+\expandafter\global\expandafter\def\csname GFM@FiPa@insertionFillPage#1\endcsname {%
+#2%
+}%\def\csname...
+}%\def\setFillPage
+
+\long\def\setDefaultFillPage#1{%
+\expandafter\global\expandafter\def\csname GFM@FiPa@defaultFillPage\endcsname {%
+#1%
+}%\def\csname...
+}%\def\setFillPage
+
+
+\setDefaultFillPage{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Do the calculations, after %%%
+%%% the aux file had been read. %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\AtBeginDocument{
+% From aux-file:
+% GFM@FiPa@numberOfFillPagePositions
+% GFM@FiPa@numberOfInsertedPages
+
+% Calculate pagesCountWithoutFillPages
+\GFM@FiPa@pageCountWithoutFillPages=\PreviousTotalPages\relax
+\advance\GFM@FiPa@pageCountWithoutFillPages by -\GFM@FiPa@numberOfInsertedPages\relax
+% Reset to 0 for the next counting round.
+\GFM@FiPa@numberOfInsertedPages=0\relax
+
+\GFM@FiPa@pagesPerFillPosition=\the\GFM@FiPa@pageCountWithoutFillPages pt\relax
+\advance\GFM@FiPa@pagesPerFillPosition by -\GFM@FiPa@DivisibleOffset pt\relax
+
+\ifdim\GFM@FiPa@pagesPerFillPosition>0 pt%
+\loop%
+\advance\GFM@FiPa@pagesPerFillPosition by -\GFM@FiPa@Divisor pt\relax%
+\ifdim\GFM@FiPa@pagesPerFillPosition>0 pt\repeat%
+%loop%
+\fi
+
+\multiply\GFM@FiPa@pagesPerFillPosition by -1\relax%
+
+\divide\GFM@FiPa@pagesPerFillPosition by \GFM@FiPa@numberOfFillPagePositions\relax%
+
+\GFM@FiPa@numberOfFillPagePositions=0\relax
+}%AtBeginDocument
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% This defines an insertion point %%%
+%%% where the fill pages will appear. %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\insertFillPages{%
+% i++ for GFM@FiPa@numberOfFillPagePositions%
+\advance\GFM@FiPa@numberOfFillPagePositions by 1\relax%
+%
+% calculate the GFM@FiPa@currentLimit for insertion%
+\GFM@FiPa@currentLimit=\GFM@FiPa@pagesPerFillPosition\relax%
+\multiply\GFM@FiPa@currentLimit by \GFM@FiPa@numberOfFillPagePositions\relax%
+\advance\GFM@FiPa@currentLimit by -0.98pt\relax%
+%
+% insert pages%
+\ifdim\GFM@FiPa@numberOfInsertedPages pt<\GFM@FiPa@currentLimit%
+ \loop%
+ \advance\GFM@FiPa@numberOfInsertedPages by 1\relax%
+ \clearpage%
+ % choose the content of a predefined page. If it doesn't exist, csname expands to nothing.
+ %%%%%%%%%%%%%%
+ \expandafter\ifx%
+ \csname %
+ GFM@FiPa@insertionFillPage\the\GFM@FiPa@numberOfInsertedPages%
+ \endcsname%
+ \relax% -> if x=relax
+ \GFM@FiPa@defaultFillPage%
+ \else%ifx
+ %%%%%%%%%%%%%%
+ \csname %
+ GFM@FiPa@insertionFillPage\the\GFM@FiPa@numberOfInsertedPages
+ \endcsname%
+ \fi%ifx
+ \mbox{}%
+ \clearpage%
+ \ifnum\GFM@FiPa@numberOfInsertedPages>1000\relax%
+ \PackageError{fillpages.sty}{line 156: More than 1000 fill pages produced.}{You tried to insert more than 1000 fill pages. This must be an infinite loop.}%
+ %\errmessage{Infinite loop detected}
+ \stop
+ \fi%
+ \ifdim\GFM@FiPa@numberOfInsertedPages pt<\GFM@FiPa@currentLimit\repeat%
+ %end loop%
+\fi%ifdim
+}%insertFillPages
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Do a calculation and write %%%
+%%% numbers to the aux file. %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\AtEndDocument{
+% Write to aux
+\ifnum\GFM@FiPa@numberOfFillPagePositions > 0\relax
+ \write\@auxout{%
+ \noexpand\global%
+ \noexpand\GFM@FiPa@numberOfFillPagePositions=%
+ \the\GFM@FiPa@numberOfFillPagePositions%
+ \noexpand\relax}
+\fi
+
+\write\@auxout{%
+ \noexpand\global%
+ \noexpand\GFM@FiPa@numberOfInsertedPages=%
+ \the\GFM@FiPa@numberOfInsertedPages%
+ \noexpand\relax}
+
+% Write to log:
+\wlog{Number of fill page positions: \the\GFM@FiPa@pagesPerFillPosition\relax}%
+\wlog{Number of inserted fill pages: \the\GFM@FiPa@numberOfInsertedPages\relax}%
+
+}%AtEndDocument
+
diff --git a/Master/texmf-dist/tex/latex/firstaid/latex2e-first-aid-for-external-files.ltx b/Master/texmf-dist/tex/latex/firstaid/latex2e-first-aid-for-external-files.ltx
index 1c158ec6258..33b1ba08000 100644
--- a/Master/texmf-dist/tex/latex/firstaid/latex2e-first-aid-for-external-files.ltx
+++ b/Master/texmf-dist/tex/latex/firstaid/latex2e-first-aid-for-external-files.ltx
@@ -34,8 +34,8 @@
%%
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
-\def\LaTeXFirstAidDate{2024/06/25}
-\def\LaTeXFirstAidVersion{v1.1f}
+\def\LaTeXFirstAidDate{2024/11/24}
+\def\LaTeXFirstAidVersion{v1.1j}
\ProvidesFile{latex2e-first-aid-for-external-files.ltx}
[\LaTeXFirstAidDate\space \LaTeXFirstAidVersion\space
LaTeX kernel fixes to external files and packages]
@@ -228,6 +228,26 @@
{[\@tempb][\arabic{page}][\cref@result]\thepage}{}{}{}}}% <------- five
\@esphack}%
}
+ \newcommand\firstaid@cref@smugglelabel{\let\cref@currentlabel\cref@gcurrentlabel@temp}
+ \newcommand\firstaid@cref@updatelabeldata[1]{%
+ \cref@constructprefix{#1}{\cref@result}%
+ \@ifundefined{cref@#1@alias}%
+ {\def\@tempa{#1}}%
+ {\def\@tempa{\csname cref@#1@alias\endcsname}}%
+ \protected@xdef\cref@gcurrentlabel@temp{%
+ [\@tempa][\arabic{#1}][\cref@result]%
+ \csname p@#1\endcsname\csname the#1\endcsname}%
+ \aftergroup\firstaid@cref@smugglelabel
+ }
+ \newif\iftag@
+ \AddToHook{label}[firstaid/cleveref]
+ {\ifx
+ \@currentcounter\@empty
+ \else
+ \iftag@\else
+ \firstaid@cref@updatelabeldata{\@currentcounter}%
+ \fi
+ \fi}
}%
}
\AddToHook{package/arydshln/after}[firstaid]{%
diff --git a/Master/texmf-dist/tex/latex/fixltxhyph/fixltxhyph.sty b/Master/texmf-dist/tex/latex/fixltxhyph/fixltxhyph.sty
index 1a422ed757a..71f54827668 100644
--- a/Master/texmf-dist/tex/latex/fixltxhyph/fixltxhyph.sty
+++ b/Master/texmf-dist/tex/latex/fixltxhyph/fixltxhyph.sty
@@ -5,45 +5,28 @@
%% The original source files were:
%%
%% fixltxhyph.dtx (with options: `style')
-%% ______________________________________________________
+%% ____________________________________________________
%% The FiXLtxHyph package
-%% Copyright (C) 2011-2012 Claudio Beccari
+%% Copyright (C) 2011-2024 Claudio Beccari
%% All rights reserved
%%
%% License information appended
%%
-\ProvidesPackage{fixltxhyph}[2011/04/02 v.0.4 Small fix for hyphenating
-emphasized words preceded by vocalic elision]
-\NeedsTeXFormat{LaTeX2e}[2011/06/27]
-\@ifpackageloaded{babel}{}{\@ifpackageloaded{polyglossia}{}{%
-\PackageWarning{FixLtXHyph}{This package must be loaded after babel
- or polyglossia}%
-\endinput}}
-\@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}}
+
+\ProvidesPackage{fixltxhyph}[2024/12/01 v.0.5
+ Small fix for hyphenating emphasised words]
+\NeedsTeXFormat{LaTeX2e}[2022/01/01]
\newcommand\hz{\nobreak\hskip\z@skip}
+\IfPackageLoadedF{etoolbox}{\RequirePackage{etoolbox}}
\letcs{\FLH@originalem}{em }
-\let\FLH@newem\FLH@originalem
-\preto\FLH@newem{\hz}
-\def\@tempB{catalan,french,italian,romansh,friulan,furlan}
-\@ifpackageloaded{polyglossia}%
-{\@for\@tempA:=\@tempB\do{%
-\expandafter\ifx\csname captions\@tempA\endcsname\relax\else
-\expandafter\addto\csname noextras@\@tempA\endcsname{\cslet{em }{\FLH@originalem}}%
-\expandafter\addto\csname blockextras@\@tempA\endcsname{\cslet{em }{\FLH@newem}}%
-\expandafter\addto\csname inlineextras@\@tempA\endcsname{\cslet{em }{\FLH@newem}}%
-\fi}%
-}{\@for\@tempA:=\@tempB\do{%
-\expandafter\ifx\csname captions\@tempA\endcsname\relax\else
-\expandafter\addto\csname extras\@tempA\endcsname{\cslet{em }{\FLH@newem}}%
-\expandafter\addto\csname noextras\@tempA\endcsname{\cslet{em }{\FLH@originalem}}%
-\fi}%
-}
-%%
-%% Copyright 2011-2012 Claudio Beccari
-%%
-%% Distributable under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
+\RenewDocumentCommand{\em }{m}{\FLH@originalem\hz}
+%%
+%% Copyright 2011-2024 Claudio Beccari
+%%
+%% Distributable under the LaTeX Project Public
+%% License, version 1.3c or higher (your choice).
+%% The latest version of this license is at:
+%% http://www.latex-project.org/lppl.txt
%%
%% This work is "author-maintained"
%%
@@ -52,8 +35,8 @@ emphasized words preceded by vocalic elision]
%% documentation fixltxhyph.pdf.
%%
%%
-%% By running pdflatex on fixltxhyph.dtx the user gets the .sty file,
-%% and the English documentation file in pdf format.
+%% By running pdflatex on fixltxhyph.dtx the user gets
+%% the .sty file, and the English documentation file in PDF format.
%%
%%
%% End of file `fixltxhyph.sty'.
diff --git a/Master/texmf-dist/tex/latex/fmtcount/fc-portuges.def b/Master/texmf-dist/tex/latex/fmtcount/fc-portuges.def
index ec3bc746268..b561b1025a1 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-portuges.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-portuges.def
@@ -106,7 +106,7 @@
\or vinte%
\or trinta%
\or quarenta%
- \or cinq\"uenta%
+ \or cinquenta%
\or sessenta%
\or setenta%
\or oitenta%
@@ -194,7 +194,7 @@
\or Vinte%
\or Trinta%
\or Quarenta%
- \or Cinq\"uenta%
+ \or Cinquenta%
\or Sessenta%
\or Setenta%
\or Oitenta%
@@ -351,7 +351,7 @@
\or vig\'esimo%
\or trig\'esimo%
\or quadrag\'esimo%
- \or q\"uinquag\'esimo%
+ \or quinquag\'esimo%
\or sexag\'esimo%
\or setuag\'esimo%
\or octog\'esimo%
@@ -372,7 +372,7 @@
\or ducent\'esimo%
\or trecent\'esimo%
\or quadringent\'esimo%
- \or q\"uingent\'esimo%
+ \or quingent\'esimo%
\or seiscent\'esimo%
\or setingent\'esimo%
\or octingent\'esimo%
@@ -401,7 +401,7 @@
\or vig\'esima%
\or trig\'esima%
\or quadrag\'esima%
- \or q\"uinquag\'esima%
+ \or quinquag\'esima%
\or sexag\'esima%
\or setuag\'esima%
\or octog\'esima%
@@ -415,7 +415,7 @@
\or ducent\'esima%
\or trecent\'esima%
\or quadringent\'esima%
- \or q\"uingent\'esima%
+ \or quingent\'esima%
\or seiscent\'esima%
\or setingent\'esima%
\or octingent\'esima%
@@ -444,7 +444,7 @@
\or Vig\'esimo%
\or Trig\'esimo%
\or Quadrag\'esimo%
- \or Q\"uinquag\'esimo%
+ \or Quinquag\'esimo%
\or Sexag\'esimo%
\or Setuag\'esimo%
\or Octog\'esimo%
@@ -458,7 +458,7 @@
\or Ducent\'esimo%
\or Trecent\'esimo%
\or Quadringent\'esimo%
- \or Q\"uingent\'esimo%
+ \or Quingent\'esimo%
\or Seiscent\'esimo%
\or Setingent\'esimo%
\or Octingent\'esimo%
@@ -487,7 +487,7 @@
\or Vig\'esima%
\or Trig\'esima%
\or Quadrag\'esima%
- \or Q\"uinquag\'esima%
+ \or Quinquag\'esima%
\or Sexag\'esima%
\or Setuag\'esima%
\or Octog\'esima%
@@ -501,7 +501,7 @@
\or Ducent\'esima%
\or Trecent\'esima%
\or Quadringent\'esima%
- \or Q\"uingent\'esima%
+ \or Quingent\'esima%
\or Seiscent\'esima%
\or Setingent\'esima%
\or Octingent\'esima%
@@ -531,12 +531,8 @@
\@strctr=#1 \divide\@strctr by 1000\relax
\@FCmodulo{\@strctr}{10}%
\ifnum\@strctr>0
- \ifnum\@strctr=1\relax
- \let\@@fc@numstr#2\relax
- \protected@edef#2{\@@fc@numstr\ \@andname}%
- \fi
\let\@@fc@numstr#2\relax
- \protected@edef#2{\@@fc@numstr\ \@unitstring{\@strctr}}%
+ \protected@edef#2{\@@fc@numstr\ \@andname\ \@unitstring{\@strctr}}%
\fi
\else
\@strctr=#1\relax
@@ -562,7 +558,7 @@
\ifnum\@strctr>0\relax
\ifnum#1>1000 \relax
\let\@@fc@numstr#2\relax
- \protected@edef#2{\@@fc@numstr\ }%
+ \protected@edef#2{\@@fc@numstr\ \@andname\ }%
\fi
\@tmpstrctr=#1\relax
\@FCmodulo{\@tmpstrctr}{1000}%
@@ -586,15 +582,8 @@
\protected@edef#2{\@@fc@numstr\@tenstring{\@strctr}}%
\@strctr=#1\relax \@FCmodulo{\@strctr}{10}%
\ifnum\@strctr>0
- \ifnum\@strctr=1\relax
- \let\@@fc@numstr#2\relax
- \protected@edef#2{\@@fc@numstr\ \@andname}%
- \else
- \ifnum#1>100\relax
- \let\@@fc@numstr#2\relax
- \protected@edef#2{\@@fc@numstr\ \@andname}%
- \fi
- \fi
+ \let\@@fc@numstr#2\relax
+ \protected@edef#2{\@@fc@numstr\ \@andname}%
\let\@@fc@numstr#2\relax
\protected@edef#2{\@@fc@numstr\ \@unitstring{\@strctr}}%
\fi
diff --git a/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty b/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty
index 4d43137dcae..0e382647ee0 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty
+++ b/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty
@@ -54,7 +54,7 @@
%% End:
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{fmtcount}[2024/08/31 v3.08]
+\ProvidesPackage{fmtcount}[2024/10/18 v3.09]
\RequirePackage{ifthen}
\RequirePackage{xkeyval}
\RequirePackage{etoolbox}
diff --git a/Master/texmf-dist/tex/latex/fontscale/fontscale.sty b/Master/texmf-dist/tex/latex/fontscale/fontscale.sty
index 01c9c8e8e42..faf0700b038 100644
--- a/Master/texmf-dist/tex/latex/fontscale/fontscale.sty
+++ b/Master/texmf-dist/tex/latex/fontscale/fontscale.sty
@@ -1,5 +1,5 @@
% Package : fontscale -- A flexible interface for setting font sizes
-% Copyright : 2024 (c) Oliver Beery <beeryoliver@gmail.com>
+% Copyright : 2024-2025 (c) Oliver Beery <beeryoliver@gmail.com>
% CTAN : https://ctan.org/pkg/fontscale
% Repository: https://github.com/beeryoliver/fontscale
% License : The LaTeX Project Public License 1.3c
@@ -8,8 +8,8 @@
\NeedsTeXFormat{LaTeX2e}[2023-11-01]
\ProvidesExplPackage
{fontscale}
- {2024-09-10}
- {2.4.0}
+ {2025-01-17}
+ {3.0.6}
{A flexible interface for setting font sizes}
% l3kernel version 2023-10-10 added many 'e'-variants.
@@ -26,7 +26,81 @@
% This package does not require any other packages!
-% DECLARE FONT SIZE PARAMETER VARIABLES
+% MESSAGES
+
+\msg_new:nnn { fontscale } { key-musical-base-out-of-bounds }
+ {
+ Invalid~ value~ '#1'~ \msg_line_context:. \\
+ The~ value~ of~ the~ key~ 'musical / base'~
+ must~ be~ a~ positive~ length.
+ }
+\msg_new:nnn { fontscale } { key-musical-ratio-out-of-bounds }
+ {
+ Invalid~ value~ '#1'~ \msg_line_context:. \\
+ The~ value~ of~ the~ key~ 'musical / ratio'~
+ must~ be~ greater~ than~ 1.
+ }
+\msg_new:nnn { fontscale } { key-musical-notes-out-of-bounds }
+ {
+ Invalid~ value~ '#1'~ \msg_line_context:. \\
+ The~ value~ of~ the~ key~ 'musical / notes'~
+ must~ be~ a~ positive~ integer.
+ }
+\msg_new:nnn { fontscale } { key-font-scale-out-of-bounds }
+ {
+ Invalid~ value~ '#1'~ \msg_line_context:. \\
+ The~ value~ of~ the~ key~ '#2 / scale'~
+ must~ be~ positive.
+ }
+\msg_new:nnn { fontscale } { key-font-size-out-of-bounds }
+ {
+ Invalid~ value~ '#1'~ \msg_line_context:. \\
+ The~ value~ of~ the~ key~ '#2 / size'~
+ must~ be~ a~ positive~ length.
+ }
+\msg_new:nnn { fontscale } { key-font-scale-overwritten }
+ {
+ The~ font~ size~ set~ by~ the~ key~ '#1 / scale'~
+ has~ been~ overwritten~ by~ the~ key~ '#1 / size'~ \msg_line_context:.
+ }
+\msg_new:nnn { fontscale } { font-sizes-out-of-order }
+ {
+ The~ font~ sizes~ are~ not~ in~ the~ correct~ order~ \msg_line_context:. \\
+ The~ lengths~ of~ the~ font~ sizes~ should~ be~ ordered~ from~
+ \iow_char:N \\tiny~ to~ \iow_char:N \\Huge.
+ }
+
+% This package tests for math mode only at the user level because this is not
+% necessary for programmers. To avoid confusion, this package issues a warning
+% when \fontsize + \selectfont would be used in math mode because it would not
+% change the math font size.
+\msg_new:nnn { fontscale } { math-mode-warning }
+ { '#1'~ does~ nothing~ if~ used~ in~ math~ mode~ \msg_line_context:. }
+% \@ and \par cannot be used in math mode.
+\msg_new:nnn { fontscale } { math-mode-error }
+ { '#1'~ cannot~ be~ used~ in~ math~ mode~ \msg_line_context:. }
+\msg_new:nnn { fontscale } { font-size-out-of-bounds }
+ {
+ Invalid~ font~ size~ '#1'~ \msg_line_context:. \\
+ The~ font~ size~ must~ be~ a~ positive~ length.
+ }
+\msg_new:nnn { fontscale } { font-step-out-of-bounds }
+ {
+ Invalid~ font~ step~ '#1'~ \msg_line_context:. \\
+ The~ font~ step~ must~ equal~ the~ font~ step~ of~
+ any~ font~ size~ command~ from~ \iow_char:N \\tiny~ to~ \iow_char:N \\Huge~
+ unless~ the~ value~ of~ the~ key~ 'typographic-scale'~ is~ 'musical'.
+ }
+\msg_new:nnn { fontscale } { current-font-step-out-of-bounds }
+ {
+ The~ new~ font~ step~ could~ not~ be~ calculated~
+ because~ the~ current~ font~ step~ is~ undefined~ \msg_line_context:.
+ }
+
+% SOME VARIABLES
+
+% Declares and initializes the font step, font scale, font size, and font
+% baselineskip of each font size command from \tiny to \Huge.
\fp_const:Nn \c_fontscale_tiny_step_fp { -4 }
\fp_const:Nn \c_fontscale_scriptsize_step_fp { -3 }
@@ -73,8 +147,6 @@
\skip_new:N \l_fontscale_huge_baselineskip_skip
\skip_new:N \l_fontscale_Huge_baselineskip_skip
-% INITIALIZE FONT SIZE PARAMETER VARIABLES
-
\fp_set:Nn \l_fontscale_tiny_scale_fp { 0.6 }
\fp_set:Nn \l_fontscale_scriptsize_scale_fp { 0.7 }
\fp_set:Nn \l_fontscale_footnotesize_scale_fp { 0.8 }
@@ -107,167 +179,240 @@
\skip_set:Nn \l_fontscale_huge_baselineskip_skip { 19.2pt }
\skip_set:Nn \l_fontscale_Huge_baselineskip_skip { 21.6pt }
-% SOME VARIABLES
+% Stores the current font step, font scale, font size, and font baselineskip.
+% They are set in the selectfont hook.
+\fp_new:N \l_fontscale_step_fp
+\fp_new:N \l_fontscale_scale_fp
+\dim_new:N \l_fontscale_size_dim
+\skip_new:N \l_fontscale_baselineskip_skip
+
+% For speed, \__fontscale_hook_selectfont: tries to avoid computing a floating
+% point expression by using \fp_set_eq:NN when the font size equals the font
+% size of any font size command from \tiny to \Huge. The case when the font
+% size equals that of \normalsize is optimized further because it is by far
+% the most common case. \f@size and \f@baselineskip are not used elsewhere in
+% the code.
+\hook_gput_code:nnn { selectfont } { fontscale }
+ { \__fontscale_hook_selectfont: }
+\cs_new_protected:Npn \__fontscale_hook_selectfont:
+ {
+ \dim_set:Nn \l_fontscale_size_dim { \f@size pt }
+ \skip_set:Nn \l_fontscale_baselineskip_skip { \f@baselineskip }
+ \dim_compare:nNnTF \l_fontscale_size_dim = \l_fontscale_normalsize_size_dim
+ {
+ \fp_set_eq:NN \l_fontscale_step_fp \c_fontscale_normalsize_step_fp
+ \fp_set_eq:NN \l_fontscale_scale_fp \c_fontscale_normalsize_scale_fp
+ }
+ { \__fontscale_hook_selectfont_auxi: }
+ }
+\cs_new_protected:Npn \__fontscale_hook_selectfont_auxi:
+ {
+ \dim_case:nnF { \l_fontscale_size_dim }
+ {
+ { \l_fontscale_small_size_dim }
+ {
+ \fp_set_eq:NN \l_fontscale_step_fp \c_fontscale_small_step_fp
+ \fp_set_eq:NN \l_fontscale_scale_fp \l_fontscale_small_scale_fp
+ }
+ { \l_fontscale_large_size_dim }
+ {
+ \fp_set_eq:NN \l_fontscale_step_fp \c_fontscale_large_step_fp
+ \fp_set_eq:NN \l_fontscale_scale_fp \l_fontscale_large_scale_fp
+ }
+ { \l_fontscale_footnotesize_size_dim }
+ {
+ \fp_set_eq:NN \l_fontscale_step_fp \c_fontscale_footnotesize_step_fp
+ \fp_set_eq:NN \l_fontscale_scale_fp
+ \l_fontscale_footnotesize_scale_fp
+ }
+ { \l_fontscale_Large_size_dim }
+ {
+ \fp_set_eq:NN \l_fontscale_step_fp \c_fontscale_Large_step_fp
+ \fp_set_eq:NN \l_fontscale_scale_fp \l_fontscale_Large_scale_fp
+ }
+ { \l_fontscale_scriptsize_size_dim }
+ {
+ \fp_set_eq:NN \l_fontscale_step_fp \c_fontscale_scriptsize_step_fp
+ \fp_set_eq:NN \l_fontscale_scale_fp \l_fontscale_scriptsize_scale_fp
+ }
+ { \l_fontscale_LARGE_size_dim }
+ {
+ \fp_set_eq:NN \l_fontscale_step_fp \c_fontscale_LARGE_step_fp
+ \fp_set_eq:NN \l_fontscale_scale_fp \l_fontscale_LARGE_scale_fp
+ }
+ { \l_fontscale_tiny_size_dim }
+ {
+ \fp_set_eq:NN \l_fontscale_step_fp \c_fontscale_tiny_step_fp
+ \fp_set_eq:NN \l_fontscale_scale_fp \l_fontscale_tiny_scale_fp
+ }
+ { \l_fontscale_huge_size_dim }
+ {
+ \fp_set_eq:NN \l_fontscale_step_fp \c_fontscale_huge_step_fp
+ \fp_set_eq:NN \l_fontscale_scale_fp \l_fontscale_huge_scale_fp
+ }
+ { \l_fontscale_Huge_size_dim }
+ {
+ \fp_set_eq:NN \l_fontscale_step_fp \c_fontscale_Huge_step_fp
+ \fp_set_eq:NN \l_fontscale_scale_fp \l_fontscale_Huge_scale_fp
+ }
+ }
+ { \__fontscale_hook_selectfont_auxii: }
+ }
+\cs_new_protected:Npn \__fontscale_hook_selectfont_auxii:
+ {
+ \fp_set:Nn \l_fontscale_scale_fp
+ {
+ \dim_to_fp:n { \l_fontscale_size_dim }
+ / \l__fontscale_normalsize_size_fp
+ }
+ \str_if_eq:VnTF \l__fontscale_typographic_scale_str { musical }
+ {
+ \fp_set:Nn \l_fontscale_step_fp
+ {
+ \l__fontscale_musical_selectfont_fp
+ * ln
+ (
+ \dim_compare:nNnTF \l__fontscale_musical_base_dim =
+ \l_fontscale_normalsize_size_dim
+ { \l_fontscale_scale_fp }
+ {
+ \dim_to_fp:n { \l_fontscale_size_dim }
+ / \l__fontscale_musical_base_fp
+ }
+ )
+ }
+ }
+ { \fp_set_eq:NN \l_fontscale_step_fp \c_nan_fp }
+ }
-% Used to speed up floating point calculations.
+% Used only to speed up floating point calculations.
\fp_new:N \l__fontscale_normalsize_size_fp
\fp_set:Nn \l__fontscale_normalsize_size_fp { 10 }
\fp_new:N \l__fontscale_musical_base_fp
\fp_new:N \l__fontscale_musical_notes_fp
+\fp_new:N \l__fontscale_musical_selectfont_fp
+
+\fp_const:Nn \c__fontscale_five_fp { 5 }
-% Scratch variables
-\tl_new:N \l__fontscale_tmp_tl
-\str_new:N \l__fontscale_tmp_str
-\dim_new:N \l__fontscale_tmp_dim
-\skip_new:N \l__fontscale_tmp_skip
-\fp_new:N \l__fontscale_tmp_fp
+% Scratch variable
+\fp_new:N \l__fontscale_tmp_fp
% SOME FUNCTIONS
% Variants of l3kernel functions
\cs_generate_variant:Nn \msg_error:nnnn { nnv , nne }
-% Sets a dimen/skip variable from a dimen/skip expression, appending a default
-% unit of pt. This also removes extra tokens.
-\cs_new_protected:Npn \__fontscale_dim_set_default_pt:Nn #1#2
+% Used to process user input. Sets an integer/dimen/skip variable from an
+% integer/dimen/skip expression and removes extra tokens. A default unit of
+% 'pt' is appended in the dimen/skip expressions.
+\cs_new_protected:Npn \__fontscale_int_set_from_user:Nn #1#2
+ {
+ \afterassignment \use_none_delimit_by_q_stop:w
+ #1 = \numexpr #2 \relax
+ \q_stop
+ }
+\cs_new_protected:Npn \__fontscale_dim_set_from_user:Nn #1#2
{
\afterassignment \use_none_delimit_by_q_stop:w
#1 = \dimexpr #2 pt \relax \relax
\q_stop
}
-\cs_generate_variant:Nn \__fontscale_dim_set_default_pt:Nn { c }
-\cs_new_protected:Npn \__fontscale_skip_set_default_pt:Nn #1#2
+\cs_generate_variant:Nn \__fontscale_dim_set_from_user:Nn { c }
+\cs_new_protected:Npn \__fontscale_skip_set_from_user:Nn #1#2
{
\afterassignment \use_none_delimit_by_q_stop:w
#1 = \glueexpr #2 pt \relax
\q_stop
}
-\cs_generate_variant:Nn \__fontscale_skip_set_default_pt:Nn { c }
+\cs_generate_variant:Nn \__fontscale_skip_set_from_user:Nn { c }
+% Argument processors
+\cs_new_protected:Npn \__fontscale_arg_process_dim:n #1
+ {
+ \group_begin:
+ \__fontscale_dim_set_from_user:Nn \l_tmpa_dim {#1}
+ \exp_args:NNNV \group_end:
+ \tl_set:Nn \ProcessedArgument \l_tmpa_dim
+ }
+\cs_new_protected:Npn \__fontscale_arg_process_skip:n #1
+ {
+ \group_begin:
+ \__fontscale_skip_set_from_user:Nn \l_tmpa_skip {#1}
+ \exp_args:NNNV \group_end:
+ \tl_set:Nn \ProcessedArgument \l_tmpa_skip
+ }
% Used to define \tiny to \Huge. Sets \@currsize only for compatibility. Need
-% \dim_use:N only for compatibility with the microtype package.
-\cs_new_protected:Npn \__fontscale_fontsize:NNN #1#2#3
+% \dim_use:N only for compatibility with versions of the microtype package
+% older than v3.2 2024-12-12.
+\cs_new_protected:Npn \__fontscale_name:NNN #1#2#3
{
\cs_set_eq:NN \@currsize #1
\fontsize { \dim_use:N #2 } #3 \selectfont
}
% Similar to \fontsize + \selectfont, except that it:
-% (1) Takes dimen and skip expressions as arguments.
+% (1) Takes dimen and skip expressions as arguments without appending a default
+% unit of 'pt'.
% (2) Avoids the issue where \f@size is set to the new font size before the
% second argument is expanded.
-% (3) Issues a user-friendly error message if the font size is not a positive
-% length.
-\dim_new:N \l__fontscale_fontsize_dim
-\skip_new:N \l__fontscale_fontsize_skip
-\cs_new_protected:Npn \__fontscale_fontsize:nn #1#2
- {
- \__fontscale_dim_set_default_pt:Nn \l__fontscale_fontsize_dim {#1}
- \__fontscale_skip_set_default_pt:Nn \l__fontscale_fontsize_skip {#2}
- \dim_compare:nNnTF \l__fontscale_fontsize_dim > \c_zero_dim
- {
- \fontsize \l__fontscale_fontsize_dim \l__fontscale_fontsize_skip
- \selectfont
- }
+% (3) Issues a user-friendly error message if the font size is not positive.
+\cs_new_protected:Npn \__fontscale_set_font_size:nn #1#2
+ {
+ \use:e
{
- \msg_error:nnV { fontscale } { font-size-out-of-bounds }
- \l__fontscale_fontsize_dim
+ \__fontscale_set_font_size_aux:nn { \dim_eval:n {#1} }
+ { \skip_eval:n {#2} }
}
}
-% Similar to the above function, except that it sets the font baselineskip
-% equal to the new font size times the baselineskip-size-ratio.
-\cs_new_protected:Npn \__fontscale_fontsize:n #1
+\cs_new_protected:Npn \__fontscale_set_font_size_aux:nn #1#2
+ {
+ \dim_compare:nNnTF {#1} > \c_zero_dim
+ { \fontsize {#1} {#2} \selectfont }
+ { \msg_error:nnn { fontscale } { font-size-out-of-bounds } {#1} }
+ }
+% Similar to \__fontscale_set_font_size:nn, except that it sets the font
+% baselineskip equal to the new font size times the baselineskip-size-ratio.
+\cs_new_protected:Npn \__fontscale_set_font_size:n #1
+ { \exp_args:Ne \__fontscale_set_font_size_aux:n { \dim_eval:n {#1} } }
+\cs_new_protected:Npn \__fontscale_set_font_size_aux:n #1
{
- \__fontscale_dim_set_default_pt:Nn \l__fontscale_fontsize_dim {#1}
- \dim_compare:nNnTF \l__fontscale_fontsize_dim > \c_zero_dim
+ \dim_compare:nNnTF {#1} > \c_zero_dim
{
- \fontsize \l__fontscale_fontsize_dim
+ \fontsize {#1}
{
\fp_to_dim:n
- {
- \l__fontscale_fontsize_dim
- * \l__fontscale_baselineskip_size_ratio_fp
- }
+ { \dim_to_fp:n {#1} * \l__fontscale_baselineskip_size_ratio_fp }
}
\selectfont
}
- {
- \msg_error:nnV { fontscale } { font-size-out-of-bounds }
- \l__fontscale_fontsize_dim
- }
+ { \msg_error:nnn { fontscale } { font-size-out-of-bounds } {#1} }
}
+\cs_new:Npn \__fontscale_fp_eval_round:n #1
+ { \fp_eval:n { round ( #1 , \c__fontscale_five_fp ) } }
-% MESSAGES
+% DEFINE KEYS
-\msg_new:nnn { fontscale } { key-musical-base-out-of-bounds }
- {
- Invalid~ value~ '#1'~ \msg_line_context:. \\
- The~ value~ of~ the~ key~ 'musical / base'~
- must~ be~ a~ positive~ length.
- }
-\msg_new:nnn { fontscale } { key-musical-ratio-out-of-bounds }
- {
- Invalid~ value~ '#1'~ \msg_line_context:. \\
- The~ value~ of~ the~ key~ 'musical / ratio'~
- must~ be~ greater~ than~ 1.
- }
-\msg_new:nnn { fontscale } { key-musical-notes-out-of-bounds }
- {
- Invalid~ value~ '#1'~ \msg_line_context:. \\
- The~ value~ of~ the~ key~ 'musical / notes'~
- must~ be~ a~ positive~ integer.
- }
-\msg_new:nnn { fontscale } { key-font-scale-out-of-bounds }
- {
- Invalid~ value~ '#1'~ \msg_line_context:. \\
- The~ value~ of~ the~ key~ '#2 / scale'~
- must~ be~ positive.
- }
-\msg_new:nnn { fontscale } { key-font-size-out-of-bounds }
- {
- Invalid~ value~ '#1'~ \msg_line_context:. \\
- The~ value~ of~ the~ key~ '#2 / size'~
- must~ be~ a~ positive~ length.
- }
-\msg_new:nnn { fontscale } { key-font-scale-overwritten }
- {
- The~ font~ size~ set~ by~ the~ key~ '#1 / scale'~
- has~ been~ overwritten~ by~ the~ key~ '#1 / size'~ \msg_line_context:.
- }
-\msg_new:nnn { fontscale } { font-sizes-out-of-order }
- {
- The~ font~ sizes~ are~ not~ in~ the~ correct~ order~ \msg_line_context:. \\
- The~ lengths~ of~ the~ font~ sizes~
- should~ be~ ordered~ from~ \iow_char:N \\tiny~ to~ \iow_char:N \\Huge.
- }
+\str_new:N \l__fontscale_typographic_scale_str
+\dim_new:N \l__fontscale_musical_base_dim
+\int_new:N \l__fontscale_musical_notes_int
-\msg_new:nnn { fontscale } { math-mode-warning }
- { '#1'~ does~ nothing~ if~ used~ in~ math~ mode~ \msg_line_context:. }
-\msg_new:nnn { fontscale } { math-mode-error }
- { '#1'~ cannot~ be~ used~ in~ math~ mode~ \msg_line_context:. }
-\msg_new:nnn { fontscale } { font-size-out-of-bounds }
- { The~ font~ size~ '#1'~ must~ be~ a~ positive~ length~ \msg_line_context:. }
-\msg_new:nnn { fontscale } { font-step-out-of-bounds }
+\cs_new_protected:Npn \__fontscale_keys_code_musical_base:
{
- Invalid~ font~ step~ '#1'~ \msg_line_context:. \\
- The~ font~ step~ must~ equal~ an~ integer~ from~ -4~ to~ 5,~
- unless~ the~ value~ of~ the~ key~ 'typographic-scale'~ is~ 'musical'.
+ \__fontscale_dim_set_from_user:Nn \l__fontscale_musical_base_dim
+ { \l_keys_value_tl }
}
-\msg_new:nnn { fontscale } { current-font-step-out-of-bounds }
+\cs_new_protected:Npn \__fontscale_keys_code_musical_notes:
{
- '\iow_char:N \\SetFontStep*'~ could~ not~ calculate~ the~ new~ font~ step~
- because~ the~ current~ font~ step~ is~ undefined~ \msg_line_context:.
+ \__fontscale_int_set_from_user:Nn \l__fontscale_musical_notes_int
+ { \l_keys_value_tl }
}
-
-% DEFINE KEYS
-
-\str_new:N \l__fontscale_typographic_scale_str
-\dim_new:N \l__fontscale_musical_base_dim
-
-\cs_new_protected:Npn \__fontscale_keys_name:n #1
+\cs_new_protected:Npn \__fontscale_keys_code_name:
{
- \tl_if_in:nnTF {#1} { / }
- { \__fontscale_keys_name_split:ww #1 \q_stop }
- { \tl_set:cn { l__fontscale_ \l_keys_key_str _size_tl } {#1} }
+ \tl_if_in:NnTF \l_keys_value_tl { / }
+ { \exp_after:wN \__fontscale_keys_code_name:ww \l_keys_value_tl \q_stop }
+ {
+ \tl_set_eq:cN { l__fontscale_ \l_keys_key_str _size_tl }
+ \l_keys_value_tl
+ }
}
-\cs_new_protected:Npn \__fontscale_keys_name_split:ww #1 / #2 \q_stop
+\cs_new_protected:Npn \__fontscale_keys_code_name:ww #1 / #2 \q_stop
{
\tl_set:cn { l__fontscale_ \l_keys_key_str _size_tl } {#1}
\tl_set:cn { l__fontscale_ \l_keys_key_str _baselineskip_tl } {#2}
@@ -298,14 +443,13 @@
}
\keys_define:nn { fontscale / musical }
{
- base .code:n =
- \__fontscale_dim_set_default_pt:Nn \l__fontscale_musical_base_dim {#1}
+ base .code:n = \__fontscale_keys_code_musical_base:
, base .value_required:n = true
, ratio .fp_set:N = \l__fontscale_musical_ratio_fp
, ratio .value_required:n = true
- , notes .int_set:N = \l__fontscale_musical_notes_int
+ , notes .code:n = \__fontscale_keys_code_musical_notes:
, notes .value_required:n = true
}
\keys_define:nn { fontscale / normalsize }
@@ -417,42 +561,41 @@
}
\keys_define:nn { fontscale }
{
- tiny .code:n = \__fontscale_keys_name:n {#1}
+ tiny .code:n = \__fontscale_keys_code_name:
, tiny .value_required:n = true
- , scriptsize .code:n = \__fontscale_keys_name:n {#1}
+ , scriptsize .code:n = \__fontscale_keys_code_name:
, scriptsize .value_required:n = true
- , footnotesize .code:n = \__fontscale_keys_name:n {#1}
+ , footnotesize .code:n = \__fontscale_keys_code_name:
, footnotesize .value_required:n = true
- , small .code:n = \__fontscale_keys_name:n {#1}
+ , small .code:n = \__fontscale_keys_code_name:
, small .value_required:n = true
- , normalsize .code:n = \__fontscale_keys_name:n {#1}
+ , normalsize .code:n = \__fontscale_keys_code_name:
, normalsize .value_required:n = true
- , large .code:n = \__fontscale_keys_name:n {#1}
+ , large .code:n = \__fontscale_keys_code_name:
, large .value_required:n = true
- , Large .code:n = \__fontscale_keys_name:n {#1}
+ , Large .code:n = \__fontscale_keys_code_name:
, Large .value_required:n = true
- , LARGE .code:n = \__fontscale_keys_name:n {#1}
+ , LARGE .code:n = \__fontscale_keys_code_name:
, LARGE .value_required:n = true
- , huge .code:n = \__fontscale_keys_name:n {#1}
+ , huge .code:n = \__fontscale_keys_code_name:
, huge .value_required:n = true
- , Huge .code:n = \__fontscale_keys_name:n {#1}
+ , Huge .code:n = \__fontscale_keys_code_name:
, Huge .value_required:n = true
}
-% INITIALIZE AND PRE-COMPILE KEYS
-
% Pre-compiles the keys with their initial values and then sets the keys to
% their initial values. This is significantly faster than using .initial:n and
-% \keys_precompile:nnN.
+% \keys_precompile:nnN. The special value of \q_no_value is used to test if the
+% corresponding key has been set by the user.
\cs_new_protected:Npn \__fontscale_keys_set_initial:
{
\fp_set:Nn \l__fontscale_baselineskip_size_ratio_fp { 1.2 }
@@ -514,6 +657,8 @@
{ \__fontscale_keys_set:n {#2} }
}
}
+\cs_new_protected:Npn \__fontscale_keys_reset:n
+ { \__fontscale_keys_set_initial: \__fontscale_keys_set:n }
\cs_new_protected:Npn \__fontscale_keys_set:n #1
{
\keys_set:nn { fontscale } {#1}
@@ -522,8 +667,6 @@
\prg_break:
\prg_break_point:
}
-\cs_new_protected:Npn \__fontscale_keys_reset:n
- { \__fontscale_keys_set_initial: \__fontscale_keys_set:n }
\cs_new_protected:Npn \__fontscale_keys_process:
{
\__fontscale_keys_process_start:
@@ -552,7 +695,8 @@
\prg_break:
}
}
-% Sets the font size and font baselineskip of \normalsize.
+% Sets the font size and font baselineskip of \normalsize. Its font size must
+% be set before doing any processing involving the font scale.
\cs_new_protected:Npn \__fontscale_keys_process_normalsize:
{
\quark_if_no_value:NTF \l__fontscale_normalsize_size_tl
@@ -569,7 +713,7 @@
}
}
{
- \__fontscale_dim_set_default_pt:Nn \l_fontscale_normalsize_size_dim
+ \__fontscale_dim_set_from_user:Nn \l_fontscale_normalsize_size_dim
{ \l__fontscale_normalsize_size_tl }
\dim_compare:nNnF \l_fontscale_normalsize_size_dim > \c_zero_dim
{
@@ -579,7 +723,7 @@
}
}
\fp_set:Nn \l__fontscale_normalsize_size_fp
- { \l_fontscale_normalsize_size_dim }
+ { \dim_to_fp:n { \l_fontscale_normalsize_size_dim } }
\quark_if_no_value:NTF \l__fontscale_normalsize_baselineskip_tl
{
\skip_set:Nn \l_fontscale_normalsize_baselineskip_skip
@@ -592,7 +736,7 @@
}
}
{
- \__fontscale_skip_set_default_pt:Nn
+ \__fontscale_skip_set_from_user:Nn
\l_fontscale_normalsize_baselineskip_skip
{ \l__fontscale_normalsize_baselineskip_tl }
}
@@ -679,9 +823,14 @@
\cs_set_eq:NN \__fontscale_keys_process_other_fn_aux:n
\__fontscale_keys_process_other_musical:n
\fp_set:Nn \l__fontscale_musical_base_fp
- { \l__fontscale_musical_base_dim }
+ { \dim_to_fp:n { \l__fontscale_musical_base_dim } }
\fp_set:Nn \l__fontscale_musical_notes_fp
- { \l__fontscale_musical_notes_int }
+ { \int_use:N \l__fontscale_musical_notes_int }
+ \fp_set:Nn \l__fontscale_musical_selectfont_fp
+ {
+ \int_use:N \l__fontscale_musical_notes_int
+ / ln ( \l__fontscale_musical_ratio_fp )
+ }
}
}
\tl_map_function:nN
@@ -716,7 +865,7 @@
}
\quark_if_no_value:cF { l__fontscale_#1_size_tl }
{
- \__fontscale_dim_set_default_pt:cn { l_fontscale_#1_size_dim }
+ \__fontscale_dim_set_from_user:cn { l_fontscale_#1_size_dim }
{ \use:c { l__fontscale_#1_size_tl } }
\dim_compare:nNnF { \use:c { l_fontscale_#1_size_dim } } > \c_zero_dim
{
@@ -738,21 +887,23 @@
\prg_break:
\prg_break_point:
\fp_set:cn { l_fontscale_#1_scale_fp }
- { \use:c { l_fontscale_#1_size_dim } / \l__fontscale_normalsize_size_fp }
+ {
+ \dim_to_fp:n { \use:c { l_fontscale_#1_size_dim } }
+ / \l__fontscale_normalsize_size_fp
+ }
\quark_if_no_value:cTF { l__fontscale_#1_baselineskip_tl }
{
\skip_set:cn { l_fontscale_#1_baselineskip_skip }
{
\fp_to_dim:n
{
- \use:c { l_fontscale_#1_size_dim }
+ \dim_to_fp:n { \use:c { l_fontscale_#1_size_dim } }
* \l__fontscale_baselineskip_size_ratio_fp
}
}
}
{
- \__fontscale_skip_set_default_pt:cn
- { l_fontscale_#1_baselineskip_skip }
+ \__fontscale_skip_set_from_user:cn { l_fontscale_#1_baselineskip_skip }
{ \use:c { l__fontscale_#1_baselineskip_tl } }
}
}
@@ -778,8 +929,8 @@
% DOCUMENT COMMANDS
% Defines the standard LaTeX font size commands from \tiny to \Huge and
-% initializes to \normalsize. The corresponding internal functions are not used
-% elsewhere in the code for compatibility with hooks such as
+% initializes to \normalsize. Their internal functions are not used elsewhere
+% in the code for compatibility with hooks such as
% \AddToHook{cmd/<font size command>/after}{<code>}.
\DeclareDocumentCommand \tiny { }
{
@@ -792,7 +943,7 @@
}
\cs_new_protected:Npn \__fontscale_tiny:
{
- \__fontscale_fontsize:NNN \tiny \l_fontscale_tiny_size_dim
+ \__fontscale_name:NNN \tiny \l_fontscale_tiny_size_dim
\l_fontscale_tiny_baselineskip_skip
}
\DeclareDocumentCommand \scriptsize { }
@@ -806,7 +957,7 @@
}
\cs_new_protected:Npn \__fontscale_scriptsize:
{
- \__fontscale_fontsize:NNN \scriptsize \l_fontscale_scriptsize_size_dim
+ \__fontscale_name:NNN \scriptsize \l_fontscale_scriptsize_size_dim
\l_fontscale_scriptsize_baselineskip_skip
}
\DeclareDocumentCommand \footnotesize { }
@@ -820,7 +971,7 @@
}
\cs_new_protected:Npn \__fontscale_footnotesize:
{
- \__fontscale_fontsize:NNN \footnotesize \l_fontscale_footnotesize_size_dim
+ \__fontscale_name:NNN \footnotesize \l_fontscale_footnotesize_size_dim
\l_fontscale_footnotesize_baselineskip_skip
}
\DeclareDocumentCommand \small { }
@@ -834,7 +985,7 @@
}
\cs_new_protected:Npn \__fontscale_small:
{
- \__fontscale_fontsize:NNN \small \l_fontscale_small_size_dim
+ \__fontscale_name:NNN \small \l_fontscale_small_size_dim
\l_fontscale_small_baselineskip_skip
}
\DeclareDocumentCommand \normalsize { }
@@ -848,7 +999,7 @@
}
\cs_new_protected:Npn \__fontscale_normalsize:
{
- \__fontscale_fontsize:NNN \normalsize \l_fontscale_normalsize_size_dim
+ \__fontscale_name:NNN \normalsize \l_fontscale_normalsize_size_dim
\l_fontscale_normalsize_baselineskip_skip
}
\DeclareDocumentCommand \large { }
@@ -862,7 +1013,7 @@
}
\cs_new_protected:Npn \__fontscale_large:
{
- \__fontscale_fontsize:NNN \large \l_fontscale_large_size_dim
+ \__fontscale_name:NNN \large \l_fontscale_large_size_dim
\l_fontscale_large_baselineskip_skip
}
\DeclareDocumentCommand \Large { }
@@ -876,7 +1027,7 @@
}
\cs_new_protected:Npn \__fontscale_Large:
{
- \__fontscale_fontsize:NNN \Large \l_fontscale_Large_size_dim
+ \__fontscale_name:NNN \Large \l_fontscale_Large_size_dim
\l_fontscale_Large_baselineskip_skip
}
\DeclareDocumentCommand \LARGE { }
@@ -890,7 +1041,7 @@
}
\cs_new_protected:Npn \__fontscale_LARGE:
{
- \__fontscale_fontsize:NNN \LARGE \l_fontscale_LARGE_size_dim
+ \__fontscale_name:NNN \LARGE \l_fontscale_LARGE_size_dim
\l_fontscale_LARGE_baselineskip_skip
}
\DeclareDocumentCommand \huge { }
@@ -904,7 +1055,7 @@
}
\cs_new_protected:Npn \__fontscale_huge:
{
- \__fontscale_fontsize:NNN \huge \l_fontscale_huge_size_dim
+ \__fontscale_name:NNN \huge \l_fontscale_huge_size_dim
\l_fontscale_huge_baselineskip_skip
}
\DeclareDocumentCommand \Huge { }
@@ -918,109 +1069,25 @@
}
\cs_new_protected:Npn \__fontscale_Huge:
{
- \__fontscale_fontsize:NNN \Huge \l_fontscale_Huge_size_dim
+ \__fontscale_name:NNN \Huge \l_fontscale_Huge_size_dim
\l_fontscale_Huge_baselineskip_skip
}
\normalsize
\NewExpandableDocumentCommand \CurrentFontStep { } { \__fontscale_step: }
\cs_new:Npn \__fontscale_step:
- {
- \dim_case:nnF { \f@size pt }
- {
- { \l_fontscale_tiny_size_dim } { -4 }
- { \l_fontscale_scriptsize_size_dim } { -3 }
- { \l_fontscale_footnotesize_size_dim } { -2 }
- { \l_fontscale_small_size_dim } { -1 }
- { \l_fontscale_normalsize_size_dim } { 0 }
- { \l_fontscale_large_size_dim } { 1 }
- { \l_fontscale_Large_size_dim } { 2 }
- { \l_fontscale_LARGE_size_dim } { 3 }
- { \l_fontscale_huge_size_dim } { 4 }
- { \l_fontscale_Huge_size_dim } { 5 }
- }
- {
- \str_if_eq:VnT \l__fontscale_typographic_scale_str { musical }
- {
- \fp_eval:n
- {
- \l__fontscale_musical_notes_fp
- * ln ( \f@size / \l__fontscale_musical_base_fp )
- / ln ( \l__fontscale_musical_ratio_fp )
- }
- }
- }
- }
+ { \fp_if_nan:nF { \l_fontscale_step_fp } { \fp_use:N \l_fontscale_step_fp } }
\NewExpandableDocumentCommand \CurrentFontScale { } { \__fontscale_scale: }
-\cs_new:Npn \__fontscale_scale:
- { \fp_eval:n { \f@size / \l__fontscale_normalsize_size_fp } }
+\cs_new:Npn \__fontscale_scale: { \fp_use:N \l_fontscale_scale_fp }
\NewExpandableDocumentCommand \CurrentFontSize { } { \__fontscale_size: }
-\cs_new:Npn \__fontscale_size: { \f@size pt }
+\cs_new:Npn \__fontscale_size: { \dim_use:N \l_fontscale_size_dim }
\NewExpandableDocumentCommand \CurrentFontBaselineskip { }
{ \__fontscale_baselineskip: }
-\cs_new:Npn \__fontscale_baselineskip: { \f@baselineskip }
-
-\NewExpandableDocumentCommand \CurrentFontSizeCommand { }
- { \__fontscale_name: }
-\cs_new:Npn \__fontscale_name:
- {
- \dim_case:nn { \f@size pt }
- {
- { \l_fontscale_tiny_size_dim }
- {
- \skip_if_eq:nnT { \l_fontscale_tiny_baselineskip_skip }
- { \f@baselineskip } { tiny }
- }
- { \l_fontscale_scriptsize_size_dim }
- {
- \skip_if_eq:nnT { \l_fontscale_scriptsize_baselineskip_skip }
- { \f@baselineskip } { scriptsize }
- }
- { \l_fontscale_footnotesize_size_dim }
- {
- \skip_if_eq:nnT { \l_fontscale_footnotesize_baselineskip_skip }
- { \f@baselineskip } { footnotesize }
- }
- { \l_fontscale_small_size_dim }
- {
- \skip_if_eq:nnT { \l_fontscale_small_baselineskip_skip }
- { \f@baselineskip } { small }
- }
- { \l_fontscale_normalsize_size_dim }
- {
- \skip_if_eq:nnT { \l_fontscale_normalsize_baselineskip_skip }
- { \f@baselineskip } { normalsize }
- }
- { \l_fontscale_large_size_dim }
- {
- \skip_if_eq:nnT { \l_fontscale_large_baselineskip_skip }
- { \f@baselineskip } { large }
- }
- { \l_fontscale_Large_size_dim }
- {
- \skip_if_eq:nnT { \l_fontscale_Large_baselineskip_skip }
- { \f@baselineskip } { Large }
- }
- { \l_fontscale_LARGE_size_dim }
- {
- \skip_if_eq:nnT { \l_fontscale_LARGE_baselineskip_skip }
- { \f@baselineskip } { LARGE }
- }
- { \l_fontscale_huge_size_dim }
- {
- \skip_if_eq:nnT { \l_fontscale_huge_baselineskip_skip }
- { \f@baselineskip } { huge }
- }
- { \l_fontscale_Huge_size_dim }
- {
- \skip_if_eq:nnT { \l_fontscale_Huge_baselineskip_skip }
- { \f@baselineskip } { Huge }
- }
- }
- }
+\cs_new:Npn \__fontscale_baselineskip:
+ { \skip_use:N \l_fontscale_baselineskip_skip }
\NewDocumentCommand \SetFontStep { s m }
{
@@ -1035,11 +1102,16 @@
{ \__fontscale_set_font_step:n {#2} }
}
}
-% Using \str_case: here is significantly faster (and easier to write) than
-% repeatedly testing \fp_compare:.
+\cs_new_protected:Npn \__fontscale_add_font_step:n #1
+ {
+ \fp_if_nan:nTF { \l_fontscale_step_fp }
+ { \msg_error:nn { fontscale } { current-font-step-out-of-bounds } }
+ { \__fontscale_set_font_step:n { (#1) + \l_fontscale_step_fp } }
+ }
\cs_new_protected:Npn \__fontscale_set_font_step:n #1
{
- \str_case:enF { \fp_eval:n {#1} }
+ \fp_set:Nn \l__fontscale_tmp_fp {#1}
+ \str_case:enF { \__fontscale_fp_eval_round:n { \l__fontscale_tmp_fp } }
{
{ -4 } { \tiny }
{ -3 } { \scriptsize }
@@ -1055,30 +1127,22 @@
{
\str_if_eq:VnTF \l__fontscale_typographic_scale_str { musical }
{
- \__fontscale_fontsize:n
+ \__fontscale_set_font_size:n
{
\fp_to_dim:n
{
\l__fontscale_musical_base_fp
* \l__fontscale_musical_ratio_fp
- ^ ( (#1) / \l__fontscale_musical_notes_fp )
+ ^ ( \l__fontscale_tmp_fp / \l__fontscale_musical_notes_fp )
}
}
}
{
\msg_error:nne { fontscale } { font-step-out-of-bounds }
- { \fp_eval:n {#1} }
+ { \fp_use:N \l__fontscale_tmp_fp }
}
}
}
-\cs_new_protected:Npn \__fontscale_add_font_step:n #1
- {
- \tl_set:Ne \l__fontscale_tmp_tl { \__fontscale_step: }
- \tl_if_empty:NTF \l__fontscale_tmp_tl
- { \msg_error:nn { fontscale } { current-font-step-out-of-bounds } }
- { \__fontscale_add_font_step_aux:n { (#1) + \l__fontscale_tmp_tl } }
- }
-\cs_new_eq:NN \__fontscale_add_font_step_aux:n \__fontscale_set_font_step:n
\NewDocumentCommand \SetFontScale { s m }
{
@@ -1093,18 +1157,15 @@
{ \__fontscale_set_font_scale:n {#2} }
}
}
-\cs_new_protected:Npn \__fontscale_set_font_scale:n #1
- {
- \__fontscale_fontsize:n
- { \fp_to_dim:n { \l__fontscale_normalsize_size_fp * (#1) } }
- }
\cs_new_protected:Npn \__fontscale_add_font_scale:n #1
+ { \__fontscale_set_font_scale:n { (#1) + \l_fontscale_scale_fp } }
+\cs_new_protected:Npn \__fontscale_set_font_scale:n #1
{
- \__fontscale_fontsize:n
- { \fp_to_dim:n { \l__fontscale_normalsize_size_fp * (#1) + \f@size } }
+ \__fontscale_set_font_size:n
+ { \fp_to_dim:n { (#1) * \l__fontscale_normalsize_size_fp } }
}
-\NewDocumentCommand \SetFontSize { s m }
+\NewDocumentCommand \SetFontSize { s >{ \__fontscale_arg_process_dim:n } m }
{
\mode_if_math:TF
{
@@ -1117,12 +1178,8 @@
{ \__fontscale_set_font_size:n {#2} }
}
}
-\cs_new_eq:NN \__fontscale_set_font_size:n \__fontscale_fontsize:n
\cs_new_protected:Npn \__fontscale_add_font_size:n #1
- {
- \__fontscale_dim_set_default_pt:Nn \l__fontscale_tmp_dim {#1}
- \__fontscale_fontsize:n { \l__fontscale_tmp_dim + \f@size pt }
- }
+ { \__fontscale_set_font_size:n { (#1) + \l_fontscale_size_dim } }
\NewDocumentCommand \ScaleFont { m }
{
@@ -1136,27 +1193,36 @@
\cs_new_protected:Npn \__fontscale_scale_font:n #1
{
\fp_set:Nn \l__fontscale_tmp_fp {#1}
- \__fontscale_fontsize:nn
- { \fp_to_dim:n { \f@size * \l__fontscale_tmp_fp } }
+ \__fontscale_set_font_size:nn
{
\fp_to_dim:n
- { \dim_to_fp:n { \f@baselineskip } * \l__fontscale_tmp_fp }
+ { \l__fontscale_tmp_fp * \dim_to_fp:n { \l_fontscale_size_dim } }
+ }
+ {
+ \fp_to_dim:n
+ {
+ \l__fontscale_tmp_fp
+ * \dim_to_fp:n { \l_fontscale_baselineskip_skip }
+ }
}
}
-\NewDocumentCommand \SetFontSizeBaselineskip { m m }
+\NewDocumentCommand \SetFontSizeBaselineskip
+ {
+ >{ \__fontscale_arg_process_dim:n } m
+ >{ \__fontscale_arg_process_skip:n } m
+ }
{
\mode_if_math:TF
{
\msg_warning:nne { fontscale } { math-mode-warning }
{ \token_to_str:N \SetFontSizeBaselineskip }
}
- { \__fontscale_set_font_size_baselineskip:nn {#1} {#2} }
+ { \__fontscale_set_font_size:nn {#1} {#2} }
}
-\cs_new_eq:NN \__fontscale_set_font_size_baselineskip:nn
- \__fontscale_fontsize:nn
-\NewDocumentCommand \SetFontBaselineskip { s m }
+\NewDocumentCommand \SetFontBaselineskip
+ { s >{ \__fontscale_arg_process_skip:n } m }
{
\mode_if_math:TF
{
@@ -1169,23 +1235,23 @@
{ \__fontscale_set_font_baselineskip:n {#2} }
}
}
-\cs_new_protected:Npn \__fontscale_set_font_baselineskip:n
- { \__fontscale_fontsize:nn { \f@size pt } }
\cs_new_protected:Npn \__fontscale_add_font_baselineskip:n #1
{
- \__fontscale_skip_set_default_pt:Nn \l__fontscale_tmp_skip {#1}
- \__fontscale_fontsize:nn { \f@size pt }
- { \l__fontscale_tmp_skip + \f@baselineskip }
+ \__fontscale_set_font_baselineskip:n
+ { (#1) + \l_fontscale_baselineskip_skip }
}
+\cs_new_protected:Npn \__fontscale_set_font_baselineskip:n
+ { \__fontscale_set_font_size:nn { \l_fontscale_size_dim } }
\NewDocumentCommand \PrintFontSizeParameters { }
{ \__fontscale_print_font_size_parameters: }
\cs_new_protected:Npn \__fontscale_print_font_size_parameters:
{
- step ~=~ \__fontscale_step: ,~
- scale ~=~ \__fontscale_scale: ,~
- size ~=~ \__fontscale_size: ,~
- baselineskip ~=~ \__fontscale_baselineskip:
+ step~ =~ \fp_if_nan:nF { \l_fontscale_step_fp }
+ { \__fontscale_fp_eval_round:n { \l_fontscale_step_fp } } ,~
+ scale~ =~ \__fontscale_fp_eval_round:n { \l_fontscale_scale_fp } ,~
+ size~ =~ \dim_use:N \l_fontscale_size_dim ,~
+ baselineskip~ =~ \skip_use:N \l_fontscale_baselineskip_skip
}
\NewDocumentCommand \PrintAllFontSizeParameters { }
@@ -1207,15 +1273,19 @@
{
\token_to_str:c {##1} \@ \c_colon_str \c_space_tl
step~ =~ \fp_use:c { c_fontscale_##1_step_fp } ,~
- scale~ =~ \str_if_eq:nnTF {##1} { normalsize }
- { 1 } { \fp_use:c { l_fontscale_##1_scale_fp } } ,~
+ scale~ =~ \str_if_eq:nnTF {##1} { normalsize } { 1 }
+ {
+ \__fontscale_fp_eval_round:n
+ { \use:c { l_fontscale_##1_scale_fp } }
+ }
+ ,~
size~ =~ \dim_use:c { l_fontscale_##1_size_dim } ,~
baselineskip~ =~ \skip_use:c { l_fontscale_##1_baselineskip_skip }
\str_if_eq:nnF {##1} { Huge } { \newline }
}
}
-\NewDocumentCommand \PrintSampleText { s +m }
+\NewDocumentCommand \PrintSampleText { >{ \ReverseBoolean } s +m }
{
\mode_if_math:TF
{
@@ -1223,30 +1293,32 @@
{ \token_to_str:N \PrintSampleText }
}
{
- \group_begin:
- \IfBooleanTF #1
- { \__fontscale_print_sample_text_descending_order:n {#2} }
- { \__fontscale_print_sample_text_ascending_order:n {#2} }
- \group_end:
+ \IfBooleanTF #1
+ { \__fontscale_print_sample_text_ascending_order:n {#2} }
+ { \__fontscale_print_sample_text_descending_order:n {#2} }
}
}
\cs_new_protected:Npn \__fontscale_print_sample_text_ascending_order:n #1
{
- \tl_map_inline:nn
- {
- \tiny \scriptsize \footnotesize \small \normalsize
- \large \Large \LARGE \huge \Huge
- }
- { ##1 #1 \par }
+ \group_begin:
+ \tl_map_inline:nn
+ {
+ \tiny \scriptsize \footnotesize \small \normalsize
+ \large \Large \LARGE \huge \Huge
+ }
+ { ##1 #1 \par }
+ \group_end:
}
\cs_new_protected:Npn \__fontscale_print_sample_text_descending_order:n #1
{
- \tl_map_inline:nn
- {
- \Huge \huge \LARGE \Large \large
- \normalsize \small \footnotesize \scriptsize \tiny
- }
- { ##1 #1 \par }
+ \group_begin:
+ \tl_map_inline:nn
+ {
+ \Huge \huge \LARGE \Large \large
+ \normalsize \small \footnotesize \scriptsize \tiny
+ }
+ { ##1 #1 \par }
+ \group_end:
}
\NewDocumentCommand \PrintFontSizeCommand { }
@@ -1260,10 +1332,24 @@
}
\cs_new_protected:Npn \__fontscale_print_name:
{
- \str_set:Ne \l__fontscale_tmp_str { \__fontscale_name: }
- \str_if_empty:NTF \l__fontscale_tmp_str
- { \token_to_str:N \undefined }
- { \c_backslash_str \l__fontscale_tmp_str \@ }
+ \token_to_str:c
+ {
+ \dim_case:nnF { \l_fontscale_size_dim }
+ {
+ { \l_fontscale_tiny_size_dim } { tiny }
+ { \l_fontscale_scriptsize_size_dim } { scriptsize }
+ { \l_fontscale_footnotesize_size_dim } { footnotesize }
+ { \l_fontscale_small_size_dim } { small }
+ { \l_fontscale_normalsize_size_dim } { normalsize }
+ { \l_fontscale_large_size_dim } { large }
+ { \l_fontscale_Large_size_dim } { Large }
+ { \l_fontscale_LARGE_size_dim } { LARGE }
+ { \l_fontscale_huge_size_dim } { huge }
+ { \l_fontscale_Huge_size_dim } { Huge }
+ }
+ { undefined }
+ }
+ \@
}
% TEXT PURIFY
@@ -1271,7 +1357,10 @@
\NewExpandableDocumentCommand \__fontscale_use_none_sm:w { s m } { }
\tl_map_inline:nn
{
- \fontscalesetup \SetFontStep \SetFontScale \SetFontSize
+ \fontscalesetup
+ \SetFontStep
+ \SetFontScale
+ \SetFontSize
\SetFontBaselineskip
}
{ \text_declare_purify_equivalent:Nn #1 { \__fontscale_use_none_sm:w } }
diff --git a/Master/texmf-dist/tex/latex/fontsetup/fontsetup.sty b/Master/texmf-dist/tex/latex/fontsetup/fontsetup.sty
index 659263a5291..2d3308fff3c 100644
--- a/Master/texmf-dist/tex/latex/fontsetup/fontsetup.sty
+++ b/Master/texmf-dist/tex/latex/fontsetup/fontsetup.sty
@@ -1,4 +1,4 @@
-\ProvidesPackage{fontsetup}[2024/9/11 v2.2.1 For easily using font families with mathematics]
+\ProvidesPackage{fontsetup}[2024/11/01 v2.3.0 For easily using font families with mathematics]
\RequirePackage{iflang}
\RequirePackage{iftex}
% Provide a test to know if a 16bits TeX is used.
@@ -46,40 +46,91 @@
\if@varnothing
\if@newcmbb
\setmathfont[StylisticSet=2,StylisticSet=3,CharacterVariant=1]{NewCMMath-\regularorbook.otf}%
- \setmathfont[version=bold,StylisticSet=2,StylisticSet=3,CharacterVariant=1]{NewCMMath-Bold.otf}%
+ \setmathfont{NewCMMath-Bold.otf}[version=bold,StylisticSet=2,StylisticSet=3,CharacterVariant=1]%
+ \setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMMath-\regularorbook.otf}
\else
\setmathfont[StylisticSet=2,CharacterVariant=1]{NewCMMath-\regularorbook.otf}%
- \setmathfont[version=bold,StylisticSet=2,CharacterVariant=1]{NewCMMath-Bold.otf}%
+ \setmathfont{NewCMMath-Bold.otf}[version=bold,StylisticSet=2,CharacterVariant=1]%
+ \setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMMath-\regularorbook.otf}
\fi
\else
\if@newcmbb
\setmathfont[StylisticSet=2,StylisticSet=3]{NewCMMath-\regularorbook.otf}%
- \setmathfont[version=bold,StylisticSet=2,StylisticSet=3]{NewCMMath-Bold.otf}%
+ \setmathfont{NewCMMath-Bold.otf}[version=bold,StylisticSet=2,StylisticSet=3]%
+ \setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMMath-\regularorbook.otf}
\else
\setmathfont[StylisticSet=2]{NewCMMath-\regularorbook.otf}%
- \setmathfont[version=bold,StylisticSet=2]{NewCMMath-Bold.otf}%
+ \setmathfont{NewCMMath-Bold.otf}[version=bold,StylisticSet=2]%
+ \setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMMath-\regularorbook.otf}
\fi
\fi
\else
\if@varnothing
\if@newcmbb
\setmathfont[StylisticSet=3,CharacterVariant=1]{NewCMMath-\regularorbook.otf}%
- \setmathfont[version=bold,StylisticSet=3,CharacterVariant=1]{NewCMMath-Bold.otf}%
+ \setmathfont{NewCMMath-Bold.otf}[version=bold,StylisticSet=3,CharacterVariant=1]%
+ \setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMMath-\regularorbook.otf}
\else
- \setmathfont[CharacterVariant=1]{NewCMMath-\regularorbook.otf}%
- \setmathfont[version=bold,CharacterVariant=1]{NewCMMath-Bold.otf}%
+ \setmathfont[CharacterVariant=1]{NewCMMath-\regularorbook.otf}%\
+ \setmathfont{NewCMMath-Bold.otf}[version=bold,CharacterVariant=1]%
+ \setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMMath-\regularorbook.otf}
\fi
\else
\if@newcmbb
\setmathfont[StylisticSet=3]{NewCMMath-\regularorbook.otf}%
- \setmathfont[version=bold,StylisticSet=3]{NewCMMath-Bold.otf}%
+ \setmathfont{NewCMMath-Bold.otf}[version=bold,StylisticSet=3]%
+ \setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMMath-\regularorbook.otf}
\else
\setmathfont{NewCMMath-\regularorbook.otf}%
- \setmathfont[version=bold]{NewCMMath-Bold.otf}%
+ \setmathfont{NewCMMath-Bold.otf}[version=bold]%
+ \setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMMath-\regularorbook.otf}
\fi
\fi
\fi
\IfLanguageName{greek}{\cvfoursetup}{\@ifpackageloaded{xgreek}{\cvfoursetup}{}}}
+%
+% sansdefault
+\newcommand*\ncmsanssetup{%
+ \if@upint
+ \if@varnothing
+ \if@newcmbb
+ \setmathfont[StylisticSet=2,StylisticSet=3,CharacterVariant=1]{NewCMSansMath-Regular.otf}%
+ \setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMSansMath-Regular.otf}
+ \else
+ \setmathfont[StylisticSet=2,CharacterVariant=1]{NewCMSansMath-Regular.otf}%
+ \setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMSansMath-Regular.otf}
+ \fi
+ \else
+ \if@newcmbb
+ \setmathfont[StylisticSet=2,StylisticSet=3]{NewCMSansMath-Regular.otf}%
+ \setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMSansMath-Regular.otf}
+ \else
+ \setmathfont[StylisticSet=2]{NewCMSansMath-Regular.otf}%
+ \setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMSansMath-Regular.otf}
+ \fi
+ \fi
+ \else
+ \if@varnothing
+ \if@newcmbb
+ \setmathfont[StylisticSet=3,CharacterVariant=1]{NewCMSansMath-Regular.otf}%
+ \setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMSansMath-Regular.otf}
+ \else
+ \setmathfont[CharacterVariant=1]{NewCMSansMath-Regular.otf}%\
+ \setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMSansMath-Regular.otf}
+ \fi
+ \else
+ \if@newcmbb
+ \setmathfont[StylisticSet=3]{NewCMSansMath-Regular.otf}%
+ \setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMSansMath-Regular.otf}
+ \else
+ \setmathfont{NewCMSansMath-Regular.otf}%
+ \setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMSansMath-Regular.otf}
+ \fi
+ \fi
+ \fi
+ \IfLanguageName{greek}{\cvfoursetup}{\@ifpackageloaded{xgreek}{\cvfoursetup}{}}}
+%
+%
\DeclareOption{upint}{\@upinttrue}
\DeclareOption{varnothing}{\@varnothingtrue}
\DeclareOption{newcmbb}{\@newcmbbtrue}
@@ -99,6 +150,13 @@
\endgroup
\@packagewithoptionstrue
}
+\DeclareOption{sansdefault}{%
+ \input{fspsansdefault}%
+ \begingroup
+ \ncmsanssetup
+ \endgroup
+ \@packagewithoptionstrue
+}
% Install Cambria as a system font.
% cambria.ttc, cambriai.ttf, cambriab.ttf, cambriaz.ttf
\DeclareOption{cambria}{\input{fspcambria}\@packagewithoptionstrue}
diff --git a/Master/texmf-dist/tex/latex/fontsetup/fspdefault.tex b/Master/texmf-dist/tex/latex/fontsetup/fspdefault.tex
index 7b72ba65e4a..6453568639f 100644
--- a/Master/texmf-dist/tex/latex/fontsetup/fspdefault.tex
+++ b/Master/texmf-dist/tex/latex/fontsetup/fspdefault.tex
@@ -94,8 +94,8 @@ SmallCapsFeatures={Numbers=OldStyle}]{NewCMMono10-Book.otf}
]{NewCMUncial10-Book.otf}
\newcommand{\textuncial}[1]{{\uncial #1}}
\setmathfont{NewCMMath-Book.otf}
-\setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMMath-Book.otf}
\setmathfont{NewCMMath-Bold.otf}[version=bold]
+\setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMMath-Book.otf}
\newcommand{\tttextsc}[1]{{\ttscshape#1}}
%
\let\prosgegrammeni=\undefined
diff --git a/Master/texmf-dist/tex/latex/fontsetup/fspolddefault.tex b/Master/texmf-dist/tex/latex/fontsetup/fspolddefault.tex
index 4b27d42e45a..796f3c21330 100644
--- a/Master/texmf-dist/tex/latex/fontsetup/fspolddefault.tex
+++ b/Master/texmf-dist/tex/latex/fontsetup/fspolddefault.tex
@@ -98,8 +98,8 @@ SmallCapsFeatures={Numbers=OldStyle}]{NewCMMono10-Regular.otf}
\newcommand{\textuncial}[1]{{\uncial #1}}
\setmathfont{NewCMMath-Regular.otf}
-\setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMMath-Regular.otf}
\setmathfont{NewCMMath-Bold.otf}[version=bold]
+\setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMMath-Regular.otf}
\newcommand{\tttextsc}[1]{{\ttscshape#1}}
%
diff --git a/Master/texmf-dist/tex/latex/fontsetup/fspsansdefault.tex b/Master/texmf-dist/tex/latex/fontsetup/fspsansdefault.tex
new file mode 100644
index 00000000000..34ab2824220
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/fontsetup/fspsansdefault.tex
@@ -0,0 +1,599 @@
+%% (C) Antonis Tsolomitis, GPL3.
+\setsansfont[%
+ SizeFeatures={%
+{Size=-8, Font=NewCM08-Regular.otf,
+ ItalicFont=NewCM08-Italic.otf,%
+ BoldFont=NewCM10-Bold.otf,%
+ BoldItalicFont=NewCM10-BoldItalic.otf,%
+ SlantedFont=NewCM08-Regular.otf,%
+ BoldSlantedFont=NewCM10-Bold.otf,%
+ SmallCapsFeatures={Numbers=OldStyle}},
+{Size=8, Font=NewCM08-Regular.otf,
+ ItalicFont=NewCM08-Italic.otf,%
+ BoldFont=NewCM10-Bold.otf,%
+ BoldItalicFont=NewCM10-BoldItalic.otf,%
+ SlantedFont=NewCM08-Regular.otf,%
+ BoldSlantedFont=NewCM10-Bold.otf,%
+ SmallCapsFeatures={Numbers=OldStyle}},
+{Size= 9-, Font = NewCM10-Regular.otf,
+ ItalicFont=NewCM10-Italic.otf,%
+ BoldFont=NewCM10-Bold.otf,%
+ BoldItalicFont=NewCM10-BoldItalic.otf,%
+ SlantedFont=NewCM10-Regular.otf,%
+ BoldSlantedFont=NewCM10-Bold.otf,%
+ SmallCapsFeatures={Numbers=OldStyle}}%
+ },%
+ SmallCapsFeatures={Numbers=OldStyle},%
+ BoldSlantedFont=NewCM10-Bold.otf,%
+ SlantedFont=NewCM10-Regular.otf,%
+ BoldItalicFont=NewCM10-BoldItalic.otf,%
+ BoldFont=NewCM10-Bold.otf,%
+ ItalicFont=NewCM10-Italic.otf,%
+ SlantedFeatures={FakeSlant=0.25},%
+ BoldSlantedFeatures={FakeSlant=0.25},%
+]{NewCM10-Regular.otf}
+
+\setmainfont[%
+ SizeFeatures={%
+{Size= -8, Font=NewCMSans08-Regular.otf,%
+ ItalicFont=NewCMSans08-Oblique.otf,%
+ BoldFont=NewCMSans10-Bold.otf,%
+ BoldItalicFont=NewCMSans10-BoldOblique.otf,%
+ SmallCapsFeatures={Numbers=OldStyle},%
+},
+{Size= 8, Font=NewCMSans08-Regular.otf,%
+ ItalicFont=NewCMSans08-Oblique.otf,%
+ BoldFont=NewCMSans10-Bold.otf,%
+ BoldItalicFont=NewCMSans10-BoldOblique.otf,%
+ SmallCapsFeatures={Numbers=OldStyle},%
+},
+{Size= 9-, Font=NewCMSans10-Regular.otf,%
+ ItalicFont=NewCMSans10-Oblique.otf,%
+ BoldFont=NewCMSans10-Bold.otf,%
+ BoldItalicFont=NewCMSans10-BoldOblique.otf,%
+ SmallCapsFeatures={Numbers=OldStyle},%
+}},
+ ItalicFont=NewCMSans10-Oblique.otf,%
+ BoldFont=NewCMSans10-Bold.otf,%
+ BoldItalicFont=NewCMSans10-BoldOblique.otf,%
+ SmallCapsFeatures={Numbers=OldStyle},%
+ SlantedFont=NewCMSans10-Oblique.otf,%
+ BoldSlantedFont=NewCMSans10-BoldOblique.otf,%
+]{NewCMSans10-Regular.otf}
+
+\setmonofont[%
+ItalicFont=NewCMMono10-Italic.otf,%
+BoldFont=NewCMMono10-Bold.otf,%
+BoldItalicFont=NewCMMono10-BoldOblique.otf,%
+SlantedFont=NewCMMono10-Regular.otf,%
+SlantedFeatures={FakeSlant=0.25},
+BoldSlantedFont=NewCMMono10-Bold.otf,%
+BoldSlantedFeatures={FakeSlant=0.25},
+SmallCapsFeatures={Numbers=OldStyle}]{NewCMMono10-Regular.otf}
+
+\newfontfamily\uncial[%
+ SizeFeatures={%
+{Size=-8, Font=NewCMUncial08-Regular.otf,
+ BoldFont=NewCMUncial10-Bold.otf,%
+ SlantedFont=NewCMUncial08-Regular.otf,%
+ BoldSlantedFont=NewCMUncial10-Bold.otf,%
+ },
+{Size=8, Font=NewCMUncial08-Regular.otf,
+ BoldFont=NewCMUncial08-Bold.otf,%
+ SlantedFont=NewCMUncial08-regular.otf,%
+ BoldSlantedFont=NewCMUncial10-Bold.otf,%
+ },
+{Size= 9-, Font = NewCMUncial10-Regular.otf,
+ BoldFont=NewCMUncial10-Bold.otf,%
+ SlantedFont=NewCMUncial10-Regular.otf,%
+ BoldSlantedFont=NewCMUncial10-Bold.otf,%
+ }%
+ },%
+ BoldSlantedFont=NewCMUncial10-Bold.otf,%
+ SlantedFont=NewCMUncial10-Regular.otf,%
+ BoldFont=NewCMUncial10-Bold.otf,%
+ SlantedFeatures={FakeSlant=0.25},%
+ BoldSlantedFeatures={FakeSlant=0.25},%
+ ]{NewCMUncial10-Regular.otf}
+
+\newcommand{\textuncial}[1]{{\uncial #1}}
+\setmathfont{NewCMSansMath-Regular.otf}
+\setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMSansMath-Regular.otf}
+
+
+\newcommand{\tttextsc}[1]{{\ttscshape#1}}
+%
+\let\prosgegrammeni=\undefined
+\newcommand{\prosgegrammeni}{\addfontfeature{StylisticSet=1}}
+\newcommand{\textprosgegrammeni}[1]{{\prosgegrammeni#1}}
+%
+%\newfontfamily{\ivbce}[StylisticSet=2]{NewCMSans10-Regular.otf}
+\newcommand{\ivbce}{\sffamily\addfontfeature{StylisticSet=2}}
+\newcommand{\textivbce}[1]{{\ivbce#1}}
+%
+%\newfontfamily{\ivbcealt}[StylisticSet=3]{NewCMSans10-Regular.otf}
+\newcommand{\ivbcealt}{\sffamily\addfontfeature{StylisticSet=3}}
+\newcommand{\textivbcealt}[1]{{\ivbcealt#1}}
+%
+%\newfontfamily{\vibce}[StylisticSet=4]{NewCMSans10-Regular.otf}
+\newcommand{\vibce}{\sffamily\addfontfeature{StylisticSet=4}}
+\newcommand{\textvibce}[1]{{\vibce#1}}
+%
+%% math (upright) sans Greek
+\newcommand*{\msansAlpha}{\char"E000}
+\newcommand*{\msansBeta}{\char"E001}
+\newcommand*{\msansGamma}{\char"E002}
+\newcommand*{\msansDelta}{\char"E003}
+\newcommand*{\msansEpsilon}{\char"E004}
+\newcommand*{\msansZeta}{\char"E005}
+\newcommand*{\msansEta}{\char"E006}
+\newcommand*{\msansTheta}{\char"E007}
+\newcommand*{\msansIota}{\char"E008}
+\newcommand*{\msansKappa}{\char"E009}
+\newcommand*{\msansLambda}{\char"E00A}
+\newcommand*{\msansMu}{\char"E00B}
+\newcommand*{\msansNu}{\char"E00C}
+\newcommand*{\msansXi}{\char"E00D}
+\newcommand*{\msansOmicron}{\char"E00E}
+\newcommand*{\msansPi}{\char"E00F}
+\newcommand*{\msansRho}{\char"E010}
+\newcommand*{\msansSigma}{\char"E011}
+\newcommand*{\msansTau}{\char"E012}
+\newcommand*{\msansUpsilon}{\char"E013}
+\newcommand*{\msansPhi}{\char"E014}
+\newcommand*{\msansChi}{\char"E015}
+\newcommand*{\msansPsi}{\char"E016}
+\newcommand*{\msansOmega}{\char"E017}
+\newcommand*{\msansalpha}{\char"E018}
+\newcommand*{\msansbeta}{\char"E019}
+\newcommand*{\msansgamma}{\char"E01A}
+\newcommand*{\msansdelta}{\char"E01B}
+\newcommand*{\msansepsilon}{\char"E01C}
+\newcommand*{\msanszeta}{\char"E01D}
+\newcommand*{\msanseta}{\char"E01E}
+\newcommand*{\msanstheta}{\char"E01F}
+\newcommand*{\msansiota}{\char"E020}
+\newcommand*{\msanskappa}{\char"E021}
+\newcommand*{\msanslambda}{\char"E022}
+\newcommand*{\msansmu}{\char"E023}
+\newcommand*{\msansnu}{\char"E024}
+\newcommand*{\msansxi}{\char"E025}
+\newcommand*{\msansomicron}{\char"E026}
+\newcommand*{\msanspi}{\char"E027}
+\newcommand*{\msansrho}{\char"E028}
+\newcommand*{\msansvarsigma}{\char"E029}
+\newcommand*{\msanssigma}{\char"E02A}
+\newcommand*{\msanstau}{\char"E02B}
+\newcommand*{\msansupsilon}{\char"E02C}
+\newcommand*{\msansphi}{\char"E02D}
+\newcommand*{\msanschi}{\char"E02E}
+\newcommand*{\msanspsi}{\char"E02F}
+\newcommand*{\msansomega}{\char"E030}
+\newcommand*{\msansvarepsilon}{\char"E031}
+% math italic sans Greek
+\newcommand*{\mitsansAlpha}{\char"E041}
+\newcommand*{\mitsansBeta}{\char"E042}
+\newcommand*{\mitsansGamma}{\char"E043}
+\newcommand*{\mitsansDelta}{\char"E044}
+\newcommand*{\mitsansEpsilon}{\char"E045}
+\newcommand*{\mitsansZeta}{\char"E046}
+\newcommand*{\mitsansEta}{\char"E047}
+\newcommand*{\mitsansTheta}{\char"E048}
+\newcommand*{\mitsansIota}{\char"E049}
+\newcommand*{\mitsansKappa}{\char"E04A}
+\newcommand*{\mitsansLambda}{\char"E04B}
+\newcommand*{\mitsansMu}{\char"E04C}
+\newcommand*{\mitsansNu}{\char"E04D}
+\newcommand*{\mitsansXi}{\char"E04E}
+\newcommand*{\mitsansOmicron}{\char"E04F}
+\newcommand*{\mitsansPi}{\char"E050}
+\newcommand*{\mitsansRho}{\char"E051}
+\newcommand*{\mitsansSigma}{\char"E052}
+\newcommand*{\mitsansTau}{\char"E053}
+\newcommand*{\mitsansUpsilon}{\char"E054}
+\newcommand*{\mitsansPhi}{\char"E055}
+\newcommand*{\mitsansChi}{\char"E056}
+\newcommand*{\mitsansPsi}{\char"E057}
+\newcommand*{\mitsansOmega}{\char"E058}
+\newcommand*{\mitsansalpha}{\char"E059}
+\newcommand*{\mitsansbeta}{\char"E05A}
+\newcommand*{\mitsansgamma}{\char"E05B}
+\newcommand*{\mitsansdelta}{\char"E05C}
+\newcommand*{\mitsansepsilon}{\char"E05D}
+\newcommand*{\mitsanszeta}{\char"E05E}
+\newcommand*{\mitsanseta}{\char"E05F}
+\newcommand*{\mitsanstheta}{\char"E060}
+\newcommand*{\mitsansiota}{\char"E061}
+\newcommand*{\mitsanskappa}{\char"E062}
+\newcommand*{\mitsanslambda}{\char"E063}
+\newcommand*{\mitsansmu}{\char"E064}
+\newcommand*{\mitsansnu}{\char"E065}
+\newcommand*{\mitsansxi}{\char"E066}
+\newcommand*{\mitsansomicron}{\char"E067}
+\newcommand*{\mitsanspi}{\char"E068}
+\newcommand*{\mitsansrho}{\char"E069}
+\newcommand*{\mitsansvarsigma}{\char"E06A}
+\newcommand*{\mitsanssigma}{\char"E06B}
+\newcommand*{\mitsanstau}{\char"E06C}
+\newcommand*{\mitsansupsilon}{\char"E06D}
+\newcommand*{\mitsansphi}{\char"E06E}
+\newcommand*{\mitsanschi}{\char"E06F}
+\newcommand*{\mitsanspsi}{\char"E070}
+\newcommand*{\mitsansomega}{\char"E071}
+\newcommand*{\mitsansvarepsilon}{\char"E072}
+% Ancient Greek Numerals u10140-u1018E
+\newcommand*{\atticonequarter}{\char"10140}
+\newcommand*{\atticonehalf}{\char"10141}
+\newcommand*{\atticonedrachma}{\char"10142}
+\newcommand*{\atticfive}{\char"10143}
+\newcommand*{\atticfifty}{\char"10144}
+\newcommand*{\atticfivehundred}{\char"10145}
+\newcommand*{\atticfivethousand}{\char"10146}
+\newcommand*{\atticfiftythousand}{\char"10147}
+\newcommand*{\atticfivetalents}{\char"10148}
+\newcommand*{\attictentalents}{\char"10149}
+\newcommand*{\atticfiftytalents}{\char"1014A}
+\newcommand*{\atticonehundredtalents}{\char"1014B}
+\newcommand*{\atticfivehundredtalents}{\char"1014C}
+\newcommand*{\atticonethousandtalents}{\char"1014D}
+\newcommand*{\atticfivethousandtalents}{\char"1014E}
+\newcommand*{\atticfivestaters}{\char"1014F}
+\newcommand*{\attictenstaters}{\char"10150}
+\newcommand*{\atticfiftystaters}{\char"10151}
+\newcommand*{\atticonehundredstaters}{\char"10152}
+\newcommand*{\atticfivehundredstaters}{\char"10153}
+\newcommand*{\atticonethousandstaters}{\char"10154}
+\newcommand*{\attictenthousandstaters}{\char"10155}
+\newcommand*{\atticfiftythousandstaters}{\char"10156}
+\newcommand*{\attictenmnas}{\char"10157}
+\newcommand*{\heraleumoneplethron}{\char"10158}
+\newcommand*{\thespianone}{\char"10159}
+\newcommand*{\ermionianone}{\char"1015A}
+\newcommand*{\epidauriantwo}{\char"1015B}
+\newcommand*{\thespiantwo}{\char"1015C}
+\newcommand*{\cyrenaictwodrachmas}{\char"1015D}
+\newcommand*{\epidauriantwodrachmas}{\char"1015E}
+\newcommand*{\troezenianfive}{\char"1015F}
+\newcommand*{\troezenianten}{\char"10160}
+\newcommand*{\troezeniantenalt}{\char"10161}
+\newcommand*{\hermionianten}{\char"10162}
+\newcommand*{\messenianten}{\char"10163}
+\newcommand*{\thespianten}{\char"10164}
+\newcommand*{\thespianthirty}{\char"10165}
+\newcommand*{\troezenianfifty}{\char"10166}
+\newcommand*{\troezenianfiftyalt}{\char"10167}
+\newcommand*{\hermionianfifty}{\char"10168}
+\newcommand*{\thespianfifty}{\char"10169}
+\newcommand*{\thespianonehundred}{\char"1016A}
+\newcommand*{\thespianthreehundred}{\char"1016B}
+\newcommand*{\epidaurianfivehundred}{\char"1016C}
+\newcommand*{\troezenianfivehundred}{\char"1016D}
+\newcommand*{\thespianfivehundred}{\char"1016E}
+\newcommand*{\carystianfivehundred}{\char"1016F}
+\newcommand*{\naxianfivehundred}{\char"10170}
+\newcommand*{\thespianonethousand}{\char"10171}
+\newcommand*{\thespianfivethousand}{\char"10172}
+\newcommand*{\delphicfivemnas}{\char"10173}
+\newcommand*{\stratianfiftymnas}{\char"10174}
+\newcommand*{\greekonehalfsign}{\char"10175}
+\newcommand*{\greekonehalfsignalt}{\char"10176}
+\newcommand*{\greektwothirdssign}{\char"10177}
+\newcommand*{\greekthreequarterssign}{\char"10178}
+\newcommand*{\greekyearsign}{\char"10179}
+\newcommand*{\greektalentsign}{\char"1017A}
+\newcommand*{\greekdrachmasign}{\char"1017B}
+\newcommand*{\greekobolsign}{\char"1017C}
+\newcommand*{\greektwoobolssign}{\char"1017D}
+\newcommand*{\greekthreeobolssign}{\char"1017E}
+\newcommand*{\greekfourobolssign}{\char"1017F}
+\newcommand*{\greekfiveobolssign}{\char"10180}
+\newcommand*{\greekmetretessign}{\char"10181}
+\newcommand*{\greekkyathosbasesign}{\char"10182}
+\newcommand*{\greeklytrasign}{\char"10183}
+\newcommand*{\greekounkiasign}{\char"10184}
+\newcommand*{\greekxestessign}{\char"10185}
+\newcommand*{\greekartabesign}{\char"10186}
+\newcommand*{\greekarourasign}{\char"10187}
+\newcommand*{\greekgrammasign}{\char"10188}
+\newcommand*{\greektryblionbasesign}{\char"10189}
+\newcommand*{\greekzerosign}{\char"1018A}
+\newcommand*{\greekonequartersign}{\char"1018B}
+\newcommand*{\greeksinusoidsign}{\char"1018C}
+\newcommand*{\greekindictionsign}{\char"1018D}
+\newcommand*{\nomismasign}{\char"1018E}
+%
+% some math symbols
+\DeclareRobustCommand*\nrightrightarrows{\mathrel{\char"E033}}
+\DeclareRobustCommand*\nleftleftarrows{\mathrel{\char"E032}}
+\DeclareRobustCommand*\twoheadhookrightarrow{\mathrel{\char"E034}}
+\DeclareRobustCommand*\twoheadhookleftarrow{\mathrel{\char"E035}}
+%
+%%% declare the convolution operator %%%%%%%%%%%%%%%
+\DeclareMathOperator*{\convolution}{\mathchoice{\char"E037}{\char"E036}{\char"E038}{\char"E039}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% select ss02 lookup table for IPA symbols
+%\newfontfamily{\ipatext}[StylisticSet=5,%
+%BoldFont=NewCM10-Bold.otf,%
+%SlantedFont=NewCM10-Regular.otf,%
+%SlantedFeatures={FakeSlant=0.25},
+%BoldSlantedFont=NewCM10-Bold.otf,%
+%BoldSlantedFeatures={FakeSlant=0.25},
+%SmallCapsFeatures={Numbers=OldStyle}]{NewCM10-Regular.otf}
+\newcommand{\ipatext}{\addfontfeature{StylisticSet=5}}
+\newcommand{\textipa}[1]{{\ipatext#1}}
+\newcommand{\oldipatext}{\addfontfeature{StylisticSet=5,RawFeature=+lipa}}
+\newcommand{\textoldipa}[1]{{\oldipatext#1}}
+%\newfontfamily{\ipatextsans}[StylisticSet=5,%
+%ItalicFont=NewCMSans10-Oblique.otf,%
+%BoldFont=NewCMSans10-Bold.otf,%
+%BoldItalicFont=NewCMSans10-BoldOblique.otf,%
+%SlantedFont=NewCMSans10-Oblique.otf,%
+%BoldSlantedFont=NewCMSans10-BoldOblique.otf,%
+%SmallCapsFeatures={Numbers=OldStyle}]{NewCMSans10-Regular.otf}
+%\newcommand{\ipatextsans}{\sffamily\addfontfeature{StylisticSet=5}}
+%\newcommand{\textsansipa}[1]{{\ipatextsans#1}}
+%
+% Up versions for chemistry
+\newcommand*{\chemalpha}{\textrm{α}}
+\newcommand*{\chembeta}{\textrm{β}}
+\newcommand*{\chemgamma}{\textrm{γ}}
+\newcommand*{\chemdelta}{\textrm{δ}}
+\newcommand*{\chemepsilon}{\textrm{ε}}
+\newcommand*{\chemzeta}{\textrm{ζ}}
+\newcommand*{\chemeta}{\textrm{η}}
+\newcommand*{\chemtheta}{\textrm{θ}}
+\newcommand*{\chemiota}{\textrm{ι}}
+\newcommand*{\chemkappa}{\textrm{\char"03F0}}
+\newcommand*{\chemlambda}{\textrm{λ}}
+\newcommand*{\chemmu}{\textrm{μ}}
+\newcommand*{\chemnu}{\textrm{ν}}
+\newcommand*{\chemxi}{\textrm{ξ}}
+\newcommand*{\chemomicron}{\textrm{ο}}
+\newcommand*{\chempi}{\textrm{π}}
+\newcommand*{\chemrho}{\textrm{ρ}}
+\newcommand*{\chemrhoalt}{\textrm{\char"03F1}}
+\newcommand*{\chemsigma}{\textrm{σ}}
+\newcommand*{\chemsigmaalt}{\textrm{ς}}
+\newcommand*{\chemtau}{\textrm{τ}}
+\newcommand*{\chemupsilon}{\textrm{υ}}
+\newcommand*{\chemphi}{\textrm{φ}}
+\newcommand*{\chemchi}{\textrm{χ}}
+\newcommand*{\chempsi}{\textrm{ψ}}
+\newcommand*{\chemomega}{\textrm{ω}}
+%
+\newcommand*{\chemAlpha}{\textrm{Α}}
+\newcommand*{\chemBeta}{\textrm{Β}}
+\newcommand*{\chemGamma}{\textrm{Γ}}
+\newcommand*{\chemDelta}{\textrm{Δ}}
+\newcommand*{\chemEpsilon}{\textrm{Ε}}
+\newcommand*{\chemZeta}{\textrm{Ζ}}
+\newcommand*{\chemEta}{\textrm{Η}}
+\newcommand*{\chemTheta}{\textrm{Θ}}
+\newcommand*{\chemIota}{\textrm{Ι}}
+\newcommand*{\chemKappa}{\textrm{Κ}}
+\newcommand*{\chemLambda}{\textrm{Λ}}
+\newcommand*{\chemMu}{\textrm{Μ}}
+\newcommand*{\chemNu}{\textrm{Ν}}
+\newcommand*{\chemXi}{\textrm{Ξ}}
+\newcommand*{\chemOmicron}{\textrm{Ο}}
+\newcommand*{\chemPi}{\textrm{Π}}
+\newcommand*{\chemRho}{\textrm{Ρ}}
+\newcommand*{\chemSigma}{\textrm{Σ}}
+\newcommand*{\chemTau}{\textrm{Τ}}
+\newcommand*{\chemUpsilon}{\textrm{Υ}}
+\newcommand*{\chemPhi}{\textrm{Φ}}
+\newcommand*{\chemChi}{\textrm{Χ}}
+\newcommand*{\chemPsi}{\textrm{Ψ}}
+\newcommand*{\chemOmega}{\textrm{Ω}}
+%
+%% Next block enables Devanagari letters as variables in Math font
+\Umathcode "0900 7 \symoperators "0900%
+\Umathcode "0901 7 \symoperators "0901%
+\Umathcode "0902 7 \symoperators "0902%
+\Umathcode "0903 7 \symoperators "0903%
+\Umathcode "0904 7 \symoperators "0904%
+\Umathcode "0905 7 \symoperators "0905%
+\Umathcode "0906 7 \symoperators "0906%
+\Umathcode "0907 7 \symoperators "0907%
+\Umathcode "0908 7 \symoperators "0908%
+\Umathcode "0909 7 \symoperators "0909%
+\Umathcode "090A 7 \symoperators "090A%
+\Umathcode "090B 7 \symoperators "090B%
+\Umathcode "090C 7 \symoperators "090C%
+\Umathcode "090D 7 \symoperators "090D%
+\Umathcode "090E 7 \symoperators "090E%
+\Umathcode "090F 7 \symoperators "090F%
+%
+\Umathcode "0910 7 \symoperators "0910%
+\Umathcode "0911 7 \symoperators "0911%
+\Umathcode "0912 7 \symoperators "0912%
+\Umathcode "0913 7 \symoperators "0913%
+\Umathcode "0914 7 \symoperators "0914%
+\Umathcode "0915 7 \symoperators "0915%
+\Umathcode "0916 7 \symoperators "0916%
+\Umathcode "0917 7 \symoperators "0917%
+\Umathcode "0918 7 \symoperators "0918%
+\Umathcode "0919 7 \symoperators "0919%
+\Umathcode "091A 7 \symoperators "091A%
+\Umathcode "091B 7 \symoperators "091B%
+\Umathcode "091C 7 \symoperators "091C%
+\Umathcode "091D 7 \symoperators "091D%
+\Umathcode "091E 7 \symoperators "091E%
+\Umathcode "091F 7 \symoperators "091F%
+%
+\Umathcode "0920 7 \symoperators "0920%
+\Umathcode "0921 7 \symoperators "0921%
+\Umathcode "0922 7 \symoperators "0922%
+\Umathcode "0923 7 \symoperators "0923%
+\Umathcode "0924 7 \symoperators "0924%
+\Umathcode "0925 7 \symoperators "0925%
+\Umathcode "0926 7 \symoperators "0926%
+\Umathcode "0927 7 \symoperators "0927%
+\Umathcode "0928 7 \symoperators "0928%
+\Umathcode "0929 7 \symoperators "0929%
+\Umathcode "092A 7 \symoperators "092A%
+\Umathcode "092B 7 \symoperators "092B%
+\Umathcode "092C 7 \symoperators "092C%
+\Umathcode "092D 7 \symoperators "092D%
+\Umathcode "092E 7 \symoperators "092E%
+\Umathcode "092F 7 \symoperators "092F%
+%
+\Umathcode "0930 7 \symoperators "0930%
+\Umathcode "0931 7 \symoperators "0931%
+\Umathcode "0932 7 \symoperators "0932%
+\Umathcode "0933 7 \symoperators "0933%
+\Umathcode "0934 7 \symoperators "0934%
+\Umathcode "0935 7 \symoperators "0935%
+\Umathcode "0936 7 \symoperators "0936%
+\Umathcode "0937 7 \symoperators "0937%
+\Umathcode "0938 7 \symoperators "0938%
+\Umathcode "0939 7 \symoperators "0939%
+\Umathcode "093A 7 \symoperators "093A%
+\Umathcode "093B 7 \symoperators "093B%
+\Umathcode "093C 7 \symoperators "093C%
+\Umathcode "093D 7 \symoperators "093D%
+\Umathcode "093E 7 \symoperators "093E%
+\Umathcode "093F 7 \symoperators "093F%
+%
+\Umathcode "0940 7 \symoperators "0940%
+\Umathcode "0941 7 \symoperators "0941%
+\Umathcode "0942 7 \symoperators "0942%
+\Umathcode "0943 7 \symoperators "0943%
+\Umathcode "0944 7 \symoperators "0944%
+\Umathcode "0945 7 \symoperators "0945%
+\Umathcode "0946 7 \symoperators "0946%
+\Umathcode "0947 7 \symoperators "0947%
+\Umathcode "0948 7 \symoperators "0948%
+\Umathcode "0949 7 \symoperators "0949%
+\Umathcode "094A 7 \symoperators "094A%
+\Umathcode "094B 7 \symoperators "094B%
+\Umathcode "094C 7 \symoperators "094C%
+\Umathcode "094D 7 \symoperators "094D%
+\Umathcode "094E 7 \symoperators "094E%
+\Umathcode "094F 7 \symoperators "094F%
+%
+\Umathcode "0950 7 \symoperators "0950%
+\Umathcode "0951 7 \symoperators "0951%
+\Umathcode "0952 7 \symoperators "0952%
+\Umathcode "0953 7 \symoperators "0953%
+\Umathcode "0954 7 \symoperators "0954%
+\Umathcode "0955 7 \symoperators "0955%
+\Umathcode "0956 7 \symoperators "0956%
+\Umathcode "0957 7 \symoperators "0957%
+\Umathcode "0958 7 \symoperators "0958%
+\Umathcode "0959 7 \symoperators "0959%
+\Umathcode "095A 7 \symoperators "095A%
+\Umathcode "095B 7 \symoperators "095B%
+\Umathcode "095C 7 \symoperators "095C%
+\Umathcode "095D 7 \symoperators "095D%
+\Umathcode "095E 7 \symoperators "095E%
+\Umathcode "095F 7 \symoperators "095F%
+%
+\Umathcode "0960 7 \symoperators "0960%
+\Umathcode "0961 7 \symoperators "0961%
+\Umathcode "0962 7 \symoperators "0962%
+\Umathcode "0963 7 \symoperators "0963%
+\Umathcode "0964 7 \symoperators "0964%
+\Umathcode "0965 7 \symoperators "0965%
+\Umathcode "0966 7 \symoperators "0966%
+\Umathcode "0967 7 \symoperators "0967%
+\Umathcode "0968 7 \symoperators "0968%
+\Umathcode "0969 7 \symoperators "0969%
+\Umathcode "096A 7 \symoperators "096A%
+\Umathcode "096B 7 \symoperators "096B%
+\Umathcode "096C 7 \symoperators "096C%
+\Umathcode "096D 7 \symoperators "096D%
+\Umathcode "096E 7 \symoperators "096E%
+\Umathcode "096F 7 \symoperators "096F%
+%
+\Umathcode "0970 7 \symoperators "0970%
+\Umathcode "0971 7 \symoperators "0971%
+\Umathcode "0972 7 \symoperators "0972%
+\Umathcode "0973 7 \symoperators "0973%
+\Umathcode "0974 7 \symoperators "0974%
+\Umathcode "0975 7 \symoperators "0975%
+\Umathcode "0976 7 \symoperators "0976%
+\Umathcode "0977 7 \symoperators "0977%
+\Umathcode "0978 7 \symoperators "0978%
+\Umathcode "0979 7 \symoperators "0979%
+\Umathcode "097A 7 \symoperators "097A%
+\Umathcode "097B 7 \symoperators "097B%
+\Umathcode "097C 7 \symoperators "097C%
+\Umathcode "097D 7 \symoperators "097D%
+\Umathcode "097E 7 \symoperators "097E%
+\Umathcode "097F 7 \symoperators "097F%
+%\Umathcode `ज 7 \symoperators "091C%
+%\Umathcode `अ 7 \symoperators "0905%
+%\Umathcode "0905 7 \symoperators "0905%
+%\Umathcode `क 7 \symoperators "0915%
+%\Umathcode `ख 7 \symoperators "0916%
+%\Umathcode `२ 7 \symoperators "0968%
+%\count255="0900
+% \loop\ifnum\count255<"097F
+% \advance\count255 by 1
+% \Umathcode \count255 7 \symoperators \count255\fi
+% \repeat
+%%%%%%%%%%%%%%% End Devanagari Variables block %%%%%%%%
+
+
+%%%%%%%%%% Begin Aegean Numbers #######################
+\newcommand*{\aegeanseparator}{\textsf{\char"10100}}
+\newcommand*{\aegeanseparatordot}{\textsf{\char"10101}}
+\newcommand*{\aegeancheckmark}{\textsf{\char"10102}}
+\newcommand*{\aegeanone}{\textsf{\char"10107}}
+\newcommand*{\aegeantwo}{\textsf{\char"10108}}
+\newcommand*{\aegeanthree}{\textsf{\char"10109}}
+\newcommand*{\aegeanfour}{\textsf{\char"1010A}}
+\newcommand*{\aegeanfive}{\textsf{\char"1010B}}
+\newcommand*{\aegeansix}{\textsf{\char"1010C}}
+\newcommand*{\aegeanseven}{\textsf{\char"1010D}}
+\newcommand*{\aegeaneight}{\textsf{\char"1010E}}
+\newcommand*{\aegeanine}{\textsf{\char"1010F}}
+\newcommand*{\aegeanten}{\textsf{\char"10110}}
+\newcommand*{\aegeantwenty}{\textsf{\char"10111}}
+\newcommand*{\aegeanthirty}{\textsf{\char"10112}}
+\newcommand*{\aegeanfourty}{\textsf{\char"10113}}
+\newcommand*{\aegeanfifty}{\textsf{\char"101114}}
+\newcommand*{\aegeansixty}{\textsf{\char"10115}}
+\newcommand*{\aegeanseventy}{\textsf{\char"10116}}
+\newcommand*{\aegeaneighty}{\textsf{\char"10117}}
+\newcommand*{\aegeanninety}{\textsf{\char"10118}}
+\newcommand*{\aegeanonehundred}{\textsf{\char"10119}}
+\newcommand*{\aegeantwohundred}{\textsf{\char"1011A}}
+\newcommand*{\aegeanthreehundred}{\textsf{\char"1011B}}
+\newcommand*{\aegeanfourhundred}{\textsf{\char"1011C}}
+\newcommand*{\aegeanfivehundred}{\textsf{\char"1011D}}
+\newcommand*{\aegeansixhundred}{\textsf{\char"1011E}}
+\newcommand*{\aegeansevenhundred}{\textsf{\char"1011F}}
+\newcommand*{\aegeaneighthundred}{\textsf{\char"10120}}
+\newcommand*{\aegeanninehundred}{\textsf{\char"10121}}
+\newcommand*{\aegeanonethousand}{\textsf{\char"10122}}
+\newcommand*{\aegeantwothousand}{\textsf{\char"10123}}
+\newcommand*{\aegeanthreethousand}{\textsf{\char"10124}}
+\newcommand*{\aegeanfourthousand}{\textsf{\char"10125}}
+\newcommand*{\aegeanfivethousand}{\textsf{\char"10126}}
+\newcommand*{\aegeansixthousand}{\textsf{\char"10127}}
+\newcommand*{\aegeanseventhousand}{\textsf{\char"10128}}
+\newcommand*{\aegeaneightthousand}{\textsf{\char"10129}}
+\newcommand*{\aegeanninethousand}{\textsf{\char"1012A}}
+\newcommand*{\aegeantenthousand}{\textsf{\char"1012B}}
+\newcommand*{\aegeantwentythousand}{\textsf{\char"1012C}}
+\newcommand*{\aegeanthirtythousand}{\textsf{\char"1012D}}
+\newcommand*{\aegeanfourtythousand}{\textsf{\char"1012E}}
+\newcommand*{\aegeanfiftythousand}{\textsf{\char"1012F}}
+\newcommand*{\aegeansixtythousand}{\textsf{\char"10130}}
+\newcommand*{\aegeanseventythousand}{\textsf{\char"10131}}
+\newcommand*{\aegeaneightythousand}{\textsf{\char"10132}}
+\newcommand*{\aegeanninetythousand}{\textsf{\char"10133}}
+\newcommand*{\aegeanweightbaseunit}{\textsf{\char"10137}}
+\newcommand*{\aegeanweightfirstsubunit}{\textsf{\char"10138}}
+\newcommand*{\aegeanweightsecondsubunit}{\textsf{\char"10139}}
+\newcommand*{\aegeanweightthirdsubunit}{\textsf{\char"1013A}}
+\newcommand*{\aegeanweightfourthsubunit}{\textsf{\char"1013B}}
+\newcommand*{\aegeandrymeasurefirstsubunit}{\textsf{\char"1013C}}
+\newcommand*{\aegeanliquidmeasurefirstsubunit}{\textsf{\char"1013D}}
+\newcommand*{\aegeansecondsubunit}{\textsf{\char"1013E}}
+\newcommand*{\aegeanthirdsubunit}{\textsf{\char"1013F}}
+%%%%%%%%%%%%%%%% End Aegean Numbers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/Master/texmf-dist/tex/latex/fontsize/fontsize.sty b/Master/texmf-dist/tex/latex/fontsize/fontsize.sty
index a9be75e91e4..0c11cb4f3d3 100644
--- a/Master/texmf-dist/tex/latex/fontsize/fontsize.sty
+++ b/Master/texmf-dist/tex/latex/fontsize/fontsize.sty
@@ -7,7 +7,7 @@
%% fontsize.dtx (with options: `package')
%%
%% The 'fontsize' package
-%% Copyright (C) 2020-2021 Ivan Valbusa
+%% Copyright (C) 2020-2024 Ivan Valbusa
%% <ivan dot valbusa at gmail dot com>
%%
%% All rights reserved.
@@ -26,11 +26,12 @@
%%
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{fontsize}
- [2021/08/04 v0.8.5 'fontsize' package. Set main font sizes (Ivan Valbusa)]
+ [2024/12/04 v0.9 'fontsize' package. Set main font sizes (Ivan Valbusa)]
\@ifpackageloaded{xkeyval}{}{\RequirePackage{xkeyval}}
-\@ifpackageloaded{xfp}{}{\RequirePackage{xfp}}
+\unless\ifdefined\fpeval\RequirePackage{xfp}\fi
\DeclareOptionX{cloname}[fontsize]{\def\@fontsizefilebase{#1}}
-\DeclareOptionX{parindent}[1.5\@tempdimb]{\def\@fontsizeparindent{#1}}
+\DeclareOptionX{parindent}[\fscalc{1.5\@tempdimb}]{\def\@fontsizeparindent{#1}}
+\DeclareOptionX{fsround}[5]{\def\@fsround{#1}}
\DeclareOptionX{fontsize}[10]{%
\expandafter\@defaultunits\expandafter\@tempdima#1 pt\relax\@nnil
\edef\@tempa{#1}%
@@ -55,42 +56,47 @@
}%
\noexpand\catcode`\noexpand\@=\the\catcode`\@
}%
- \expandafter\AtEndOfPackage\expandafter{\@tempa}%
+ \@ifundefined{changefontsize}{%
+ \expandafter\AtEndOfPackage\expandafter{\@tempa}%
+ }{%
+ \@tempa
}
-\ExecuteOptionsX{cloname,fontsize,parindent}
+}
+\ExecuteOptionsX{cloname,fontsize,parindent,fsround}
\ProcessOptionsX*\relax
+\NewDocumentCommand{\fscalc}{m}{\fpeval{round(#1,\@fsround)}pt}
\newcommand*\ctm@setlength[4]{%
- \ifdim #2<\ifdim #2=\z@ \z@ \else \p@\fi
- \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi
- \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi
- \setlength{#1}{\p@ \@plus\p@ \@minus\p@}%
- \else
- \setlength{#1}{\p@ \@plus\p@ \@minus#4}%
- \fi
- \else
- \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi
- \setlength{#1}{\p@ \@plus#3 \@minus\p@}%
- \else
- \setlength{#1}{\p@ \@plus#3 \@minus#4}%
- \fi
- \fi
- \else
- \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi
- \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi
- \setlength{#1}{#2 \@plus\p@ \@minus\p@}%
- \else
- \setlength{#1}{#2 \@plus\p@ \@minus#4}%
- \fi
- \else
- \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi
- \setlength{#1}{#2 \@plus#3 \@minus\p@}%
- \else
- \setlength{#1}{#2 \@plus#3 \@minus#4}%
- \fi
- \fi
- \fi
+ \ifdim #2<\ifdim #2=\z@ \z@ \else \p@\fi
+ \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi
+ \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi
+ \setlength{#1}{\p@ \@plus\p@ \@minus\p@}%
+ \else
+ \setlength{#1}{\p@ \@plus\p@ \@minus\fscalc{#4}}%
+ \fi
+ \else
+ \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi
+ \setlength{#1}{\p@ \@plus\fscalc{#3} \@minus\p@}%
+ \else
+ \setlength{#1}{\p@ \@plus\fscalc{#3} \@minus\fscalc{#4}}%
+ \fi
+ \fi
+ \else
+ \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi
+ \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi
+ \setlength{#1}{\fscalc{#2} \@plus\p@ \@minus\p@}%
+ \else
+ \setlength{#1}{\fscalc{#2} \@plus\p@ \@minus\fscalc{#4}}%
+ \fi
+ \else
+ \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi
+ \setlength{#1}{\fscalc{#2} \@plus\fscalc{#3} \@minus\p@}%
+ \else
+ \setlength{#1}{\fscalc{#2} \@plus\fscalc{#3} \@minus\fscalc{#4}}%
+ \fi
+ \fi
+ \fi
}
-\providecommand*{\changefontsize}[2][1.2\@tempdima]{%
+\providecommand*{\changefontsize}[2][\fscalc{1.2*\@tempdima}]{%
\@defaultunits\@tempdima#2pt\relax\@nnil
\setlength{\@tempdimc}{\@tempdima}%
\addtolength{\@tempdimc}{-10\p@}%
@@ -107,7 +113,7 @@
\ctm@setlength{\belowdisplayshortskip}%
{.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}%
\setlength{\belowdisplayskip}{\abovedisplayskip}%
- \edef\normalsize{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\normalsize
{\the\@tempdima}{\the\@tempdimb}%
\abovedisplayskip \the\abovedisplayskip
@@ -116,15 +122,17 @@
\belowdisplayshortskip \the\belowdisplayshortskip
\let\noexpand\@listi\noexpand\@listI
}%
- \setlength{\@tempdima}{0.9125\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \let\normalsize\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\normalsize\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{0.9125\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
\ctm@setlength{\abovedisplayskip}%
{.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}%
\ctm@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}%
\ctm@setlength{\belowdisplayshortskip}%
{.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}%
\setlength{\belowdisplayskip}{\abovedisplayskip}%
- \edef\small{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\small
{\the\@tempdima}{\the\@tempdimb}%
\abovedisplayskip \the\abovedisplayskip
@@ -133,15 +141,17 @@
\belowdisplayshortskip \the\belowdisplayshortskip
\let\noexpand\@listi\noexpand\@listi@small
}%
- \setlength{\@tempdima}{.83334\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \let\small\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\small\expandafter{\reserved@a} %
+ \setlength{\@tempdima}{\fscalc{.83334\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
\ctm@setlength{\abovedisplayskip}%
{.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}%
\ctm@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}%
\ctm@setlength{\belowdisplayshortskip}%
{.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}%
\setlength{\belowdisplayskip}{\abovedisplayskip}%
- \edef\footnotesize{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\footnotesize
{\the\@tempdima}{\the\@tempdimb}%
\abovedisplayskip \the\abovedisplayskip
@@ -150,48 +160,64 @@
\belowdisplayshortskip \the\belowdisplayshortskip
\let\noexpand\@listi\noexpand\@listi@footnotesize
}%
- \setlength{\@tempdima}{.66667\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\scriptsize{%
+ \let\footnotesize\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\footnotesize\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{.66667\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\scriptsize
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{.5\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\tiny{%
+ \let\scriptsize\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\scriptsize\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{.5\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\tiny
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{1.2\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\large{%
+ \let\tiny\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\tiny\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{1.2\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\large
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{1.44\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\Large{%
+ \let\large\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\large\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{1.44\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\Large
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{1.728\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\LARGE{%
+ \let\Large\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\Large\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{1.728\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\LARGE
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{2.074\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\huge{%
+ \let\LARGE\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\LARGE\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{2.074\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\huge
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{2.488\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\Huge{%
+ \let\huge\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\huge\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{2.488\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\Huge
{\the\@tempdima}{\the\@tempdimb}%
}%
+ \let\Huge\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\Huge\expandafter{\reserved@a}%
\def\fontsize@pre{%
\ctm@setlength{\abovedisplayskip}%
{.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}%
@@ -206,237 +232,305 @@
\belowdisplayskip \the\belowdisplayskip%
\belowdisplayshortskip \the\belowdisplayshortskip%
}
- \setlength{\@tempdima}{0.934375\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \setlength{\@tempdima}{\fscalc{0.934375\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
\fontsize@pre
- \edef\smallr{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\smallr
{\the\@tempdima}{\the\@tempdimb}%
\fontsize@app
\let\noexpand\@listi\noexpand\@listi@small
}%
- \setlength{\@tempdima}{0.95625\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \let\smallr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\smallr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{0.95625\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
\fontsize@pre
- \edef\smallrr{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\smallrr
{\the\@tempdima}{\the\@tempdimb}%
\fontsize@app
\let\noexpand\@listi\noexpand\@listi@small
}%
- \setlength{\@tempdima}{0.978125\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \let\smallrr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\smallrr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{0.978125\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
\fontsize@pre
- \edef\smallrrr{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\smallrrr
{\the\@tempdima}{\the\@tempdimb}%
\fontsize@app
\let\noexpand\@listi\noexpand\@listi@small
}%
- \setlength{\@tempdima}{0.85313\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \let\smallrrr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\smallrrr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{0.85313\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
\fontsize@pre
- \edef\footnotesizer{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\footnotesizer
{\the\@tempdima}{\the\@tempdimb}%
\fontsize@app
\let\noexpand\@listi\noexpand\@listi@footnotesize
}%
- \setlength{\@tempdima}{0.87292\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \let\footnotesizer\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\footnotesizer\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{0.87292\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
\fontsize@pre
- \edef\footnotesizerr{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\footnotesizerr
{\the\@tempdima}{\the\@tempdimb}%
\fontsize@app
\let\noexpand\@listi\noexpand\@listi@footnotesize
}%
- \setlength{\@tempdima}{0.89271\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
+ \let\footnotesizerr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\footnotesizerr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{0.89271\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
\fontsize@pre
- \edef\footnotesizerrr{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\footnotesizerrr
{\the\@tempdima}{\the\@tempdimb}%
\fontsize@app
\let\noexpand\@listi\noexpand\@listi@footnotesize
}%
- \setlength{\@tempdima}{0.7083375\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\scriptsizer{%
+ \let\footnotesizerrr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\footnotesizerrr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{0.7083375\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\scriptsizer
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{0.750005\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\scriptsizerr{%
+ \let\scriptsizer\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\scriptsizer\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{0.750005\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\scriptsizerr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{0.7916725\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\scriptsizerrr{%
+ \let\scriptsizerr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\scriptsizerr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{0.7916725\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\scriptsizerrr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{0.5416675\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\tinyr{%
+ \let\scriptsizerrr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\scriptsizerrr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{0.5416675\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\tinyr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{0.583335\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\tinyrr{%
+\let\tinyr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\tinyr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{0.583335\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\tinyrr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{0.6250025\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\tinyrrr{%
+\let\tinyrr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\tinyrr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{0.6250025\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\tinyrrr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{1.05\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
+\let\tinyrrr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\tinyrrr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{1.05\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
\fontsize@pre
- \edef\normalsizer{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\normalsizer
{\the\@tempdima}{\the\@tempdimb}%
\fontsize@app
\let\noexpand\@listi\noexpand\@listI
}%
- \setlength{\@tempdima}{1.1\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
+\let\normalsizer\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\normalsizer\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{1.1\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
\fontsize@pre
- \edef\normalsizerr{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\normalsizerr
{\the\@tempdima}{\the\@tempdimb}%
\fontsize@app
\let\noexpand\@listi\noexpand\@listI
}%
- \setlength{\@tempdima}{1.15\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
+\let\normalsizerr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\normalsizerr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{1.15\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
\fontsize@pre
- \edef\normalsizerrr{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\normalsizerrr
{\the\@tempdima}{\the\@tempdimb}%
\fontsize@app
\let\noexpand\@listi\noexpand\@listI
}%
- \setlength{\@tempdima}{1.26\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\larger{%
+\let\normalsizerrr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\normalsizerrr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{1.26\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\larger
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{1.32\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\largerr{%
+\let\larger\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\larger\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{1.32\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\largerr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{1.38\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\largerrr{%
+\let\largerr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\largerr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{1.38\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\largerrr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{1.512\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\Larger{%
+\let\largerrr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\largerrr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{1.512\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\Larger
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{1.584\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\Largerr{%
+\let\Larger\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\Larger\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{1.584\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\Largerr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{1.656\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\Largerrr{%
+\let\Largerr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\Largerr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{1.656\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\Largerrr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{1.8145\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\LARGEr{%
+\let\Largerrr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\Largerrr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{1.8145\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\LARGEr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{1.901\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\LARGErr{%
+\let\LARGEr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\LARGEr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{1.901\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\LARGErr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{1.9875\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\LARGErrr{%
+\let\LARGErr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\LARGErr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{1.9875\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\LARGErrr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{2.1775\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\huger{%
+\let\LARGErrr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\LARGErrr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{2.1775\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\huger
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{2.281\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\hugerr{%
+\let\huger\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\huger\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{2.281\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\hugerr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{2.3845\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\hugerrr{%
+\let\hugerr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\hugerr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{2.3845\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\hugerrr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{2.611\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\Huger{%
+\let\hugerrr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\hugerrr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{2.611\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\Huger
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{2.734\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\Hugerr{%
+\let\Huger\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\Huger\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{2.734\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\Hugerr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{2.857\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\Hugerrr{%
+\let\Hugerr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\Hugerr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{2.857\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\Hugerrr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{3.006\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\HUGE{%
+\let\Hugerrr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\Hugerrr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{3.006\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\HUGE
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{3.155\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\HUGEr{%
+\let\HUGE\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\HUGE\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{3.155\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\HUGEr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{3.304\@tempdimc}%
- \setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\HUGErr{%
+\let\HUGEr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\HUGEr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{3.304\@tempdimc}}%
+ \setlength{\@tempdimb}{\fscalc{\@tempb\@tempdima}}%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\HUGErr
{\the\@tempdima}{\the\@tempdimb}%
}%
- \setlength{\@tempdima}{3.453\@tempdimc}%
+\let\HUGErr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\HUGErr\expandafter{\reserved@a}%
+ \setlength{\@tempdima}{\fscalc{3.453\@tempdimc}}%
\setlength{\@tempdimb}{\@tempb\@tempdima}%
- \edef\HUGErrr{%
+ \edef\reserved@a{%
\noexpand\@setfontsize\noexpand\HUGErrr
{\the\@tempdima}{\the\@tempdimb}%
}%
+\let\HUGErrr\@undefined
+ \expandafter\DeclareRobustCommand\expandafter\HUGErrr\expandafter{\reserved@a}%
\normalsize%
\setlength\parindent{\@fontsizeparindent}%
\setlength\smallskipamount{
@@ -605,7 +699,8 @@
\the\year/\ifnum\month<10 0\fi\the\month/\ifnum\day<10 0\fi\the\day%
\space generated font size class option (#2)]}%
\immediate\write\@fontfile{%
- \string\def\string\normalsize{\@percentchar^^J%
+ \string\let\string\normalsize\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\normalsize{\@percentchar^^J%
\@ind\string\@setfontsize\string\normalsize{\f@size}{\f@baselineskip}%
\@percentchar^^J%
\@ind\string\abovedisplayskip\space \the\abovedisplayskip^^J%
@@ -617,7 +712,8 @@
}%
\begingroup\small\@listi
\immediate\write\@fontfile{%
- \string\def\string\small{\@percentchar^^J%
+ \string\let\string\small\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\small{\@percentchar^^J%
\@ind\string\@setfontsize\string\small{\f@size}{\f@baselineskip}%
\@percentchar^^J%
\@ind\string\abovedisplayskip\space \the\abovedisplayskip^^J%
@@ -635,7 +731,8 @@
\endgroup
\begingroup\footnotesize\@listi
\immediate\write\@fontfile{%
- \string\def\string\footnotesize{\@percentchar^^J%
+ \string\let\string\footnotesize\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\footnotesize{\@percentchar^^J%
\@ind\string\@setfontsize\string\footnotesize{\f@size}{\f@baselineskip}%
\@percentchar^^J%
\@ind\string\abovedisplayskip\space \the\abovedisplayskip^^J%
@@ -653,91 +750,104 @@
\endgroup
\begingroup\scriptsize
\immediate\write\@fontfile{%
- \string\def\string\scriptsize{%
+ \string\let\string\scriptsize\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\scriptsize{\@percentchar^^J%
\string\@setfontsize\string\scriptsize{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\tiny
\immediate\write\@fontfile{%
- \string\def\string\tiny{%
+ \string\let\string\tiny\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\tiny{\@percentchar^^J%
\string\@setfontsize\string\tiny{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\large
\immediate\write\@fontfile{%
- \string\def\string\large{%
+ \string\let\string\large\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\large{\@percentchar^^J%
\string\@setfontsize\string\large{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\Large
\immediate\write\@fontfile{%
- \string\def\string\Large{%
+ \string\let\string\Large\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\Large{\@percentchar^^J%
\string\@setfontsize\string\Large{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\LARGE
\immediate\write\@fontfile{%
- \string\def\string\LARGE{%
+ \string\let\string\LARGE\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\LARGE{\@percentchar^^J%
\string\@setfontsize\string\LARGE{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\huge
\immediate\write\@fontfile{%
- \string\def\string\huge{%
+ \string\let\string\huge\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\huge{\@percentchar^^J%
\string\@setfontsize\string\huge{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\Huge
\immediate\write\@fontfile{%
- \string\def\string\Huge{%
+ \string\let\string\Huge\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\Huge{\@percentchar^^J%
\string\@setfontsize\string\Huge{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\tinyr
\immediate\write\@fontfile{%
- \string\def\string\tinyr{%
+ \string\let\string\tinyr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\tinyr{\@percentchar^^J%
\string\@setfontsize\string\tinyr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\tinyrr
\immediate\write\@fontfile{%
- \string\def\string\tinyrr{%
+ \string\let\string\tinyrr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\tinyrr{\@percentchar^^J%
\string\@setfontsize\string\tinyrr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\tinyrrr
\immediate\write\@fontfile{%
- \string\def\string\tinyrrr{%
+ \string\let\string\tinyrrr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\tinyrrr{\@percentchar^^J%
\string\@setfontsize\string\tinyrrr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\scriptsizer
\immediate\write\@fontfile{%
- \string\def\string\scriptsizer{%
+ \string\let\string\scriptsizer\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\scriptsizer{\@percentchar^^J%
\string\@setfontsize\string\scriptsizer{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\scriptsizerr
\immediate\write\@fontfile{%
- \string\def\string\scriptsizerr{%
+ \string\let\string\scriptsizerr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\scriptsizerr{\@percentchar^^J%
\string\@setfontsize\string\scriptsizerr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\scriptsizerrr
\immediate\write\@fontfile{%
- \string\def\string\scriptsizerrr{%
+ \string\let\string\scriptsizerrr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\scriptsizerrr{\@percentchar^^J%
\string\@setfontsize\string\scriptsizerrr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
@@ -765,7 +875,8 @@
}
\begingroup\smallr\@listi
\immediate\write\@fontfile{%
- \string\def\string\smallr{\@percentchar^^J%
+ \string\let\string\smallr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\smallr{\@percentchar^^J%
\@ind\string\@setfontsize\string\smallr{\f@size}{\f@baselineskip}%
\fs@appsmall%
}\@percentchar%
@@ -773,7 +884,8 @@
\endgroup
\begingroup\smallrr\@listi
\immediate\write\@fontfile{%
- \string\def\string\smallrr{\@percentchar^^J%
+ \string\let\string\smallrr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\smallrr{\@percentchar^^J%
\@ind\string\@setfontsize\string\smallrr{\f@size}{\f@baselineskip}%
\fs@appsmall%
}\@percentchar%
@@ -781,7 +893,8 @@
\endgroup
\begingroup\smallrrr\@listi
\immediate\write\@fontfile{%
- \string\def\string\smallrrr{\@percentchar^^J%
+ \string\let\string\smallrrr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\smallrrr{\@percentchar^^J%
\@ind\string\@setfontsize\string\smallrrr{\f@size}{\f@baselineskip}%
\fs@appsmall%
}\@percentchar%
@@ -789,7 +902,8 @@
\endgroup
\begingroup\footnotesizer\@listi
\immediate\write\@fontfile{%
- \string\def\string\footnotesizer{\@percentchar^^J%
+ \string\let\string\footnotesizer\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\footnotesizer{\@percentchar^^J%
\@ind\string\@setfontsize\string\footnotesizer{\f@size}{\f@baselineskip}%
\fs@appsmall%
}\@percentchar%
@@ -797,7 +911,8 @@
\endgroup
\begingroup\footnotesizerr\@listi
\immediate\write\@fontfile{%
- \string\def\string\footnotesizerr{\@percentchar^^J%
+ \string\let\string\footnotesizerr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\footnotesizerr{\@percentchar^^J%
\@ind\string\@setfontsize\string\footnotesizerr{\f@size}{\f@baselineskip}%
\fs@appsmall%
}\@percentchar%
@@ -805,7 +920,8 @@
\endgroup
\begingroup\footnotesizerrr\@listi
\immediate\write\@fontfile{%
- \string\def\string\footnotesizerrr{\@percentchar^^J%
+ \string\let\string\footnotesizerrr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\footnotesizerrr{\@percentchar^^J%
\@ind\string\@setfontsize\string\footnotesizerrr{\f@size}{\f@baselineskip}%
\fs@appsmall%
}\@percentchar%
@@ -813,7 +929,8 @@
\endgroup
\begingroup\normalsizer
\immediate\write\@fontfile{%
- \string\def\string\normalsizer{\@percentchar^^J%
+ \string\let\string\normalsizer\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\normalsizer{\@percentchar^^J%
\@ind\string\@setfontsize\string\normalsizer{\f@size}{\f@baselineskip}%
\fs@appnormal%
}\@percentchar%
@@ -821,7 +938,8 @@
\endgroup
\begingroup\normalsizerr
\immediate\write\@fontfile{%
- \string\def\string\normalsizerr{\@percentchar^^J%
+ \string\let\string\normalsizerr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\normalsizerr{\@percentchar^^J%
\@ind\string\@setfontsize\string\normalsizerr{\f@size}{\f@baselineskip}%
\fs@appnormal%
}\@percentchar%
@@ -829,7 +947,8 @@
\endgroup
\begingroup\normalsizerrr
\immediate\write\@fontfile{%
- \string\def\string\normalsizerrr{\@percentchar^^J%
+ \string\let\string\normalsizerrr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\normalsizerrr{\@percentchar^^J%
\@ind\string\@setfontsize\string\normalsizerrr{\f@size}{\f@baselineskip}%
\fs@appnormal%
}\@percentchar%
@@ -837,140 +956,152 @@
\endgroup
\begingroup\larger
\immediate\write\@fontfile{%
- \string\def\string\larger{%
+ \string\let\string\larger\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\larger{\@percentchar^^J%
\string\@setfontsize\string\larger{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\largerr
\immediate\write\@fontfile{%
- \string\def\string\largerr{%
+ \string\let\string\largerr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\largerr{\@percentchar^^J%
\string\@setfontsize\string\largerr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\largerrr
\immediate\write\@fontfile{%
- \string\def\string\largerrr{%
+ \string\let\string\largerrr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\largerrr{\@percentchar^^J%
\string\@setfontsize\string\largerrr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
- \begingroup\Large
- \immediate\write\@fontfile{%
- \string\def\string\Large{%
- \string\@setfontsize\string\Large{\f@size}{\f@baselineskip}%
- }\@percentchar%
- }%
- \endgroup
\begingroup\Larger
\immediate\write\@fontfile{%
- \string\def\string\Larger{%
+ \string\let\string\Larger\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\Larger{\@percentchar^^J%
\string\@setfontsize\string\Larger{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\Largerr
\immediate\write\@fontfile{%
- \string\def\string\Largerr{%
+ \string\let\string\Largerr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\Largerr{\@percentchar^^J%
\string\@setfontsize\string\Largerr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\Largerrr
\immediate\write\@fontfile{%
- \string\def\string\Largerrr{%
+ \string\let\string\Largerrr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\Largerrr{\@percentchar^^J%
\string\@setfontsize\string\Largerrr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\LARGEr
\immediate\write\@fontfile{%
- \string\def\string\LARGEr{%
+ \string\let\string\LARGEr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\LARGEr{\@percentchar^^J%
\string\@setfontsize\string\LARGEr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\LARGErr
\immediate\write\@fontfile{%
- \string\def\string\LARGErr{%
+ \string\let\string\LARGErr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\LARGErr{\@percentchar^^J%
\string\@setfontsize\string\LARGErr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\LARGErrr
\immediate\write\@fontfile{%
- \string\def\string\LARGErrr{%
+ \string\let\string\LARGErrr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\LARGErrr{\@percentchar^^J%
\string\@setfontsize\string\LARGErrr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\huger
\immediate\write\@fontfile{%
- \string\def\string\huger{%
+ \string\let\string\huger\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\huger{\@percentchar^^J%
\string\@setfontsize\string\huger{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\hugerr
\immediate\write\@fontfile{%
- \string\def\string\hugerr{%
+ \string\let\string\hugerr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\hugerr{\@percentchar^^J%
\string\@setfontsize\string\hugerr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\hugerrr
\immediate\write\@fontfile{%
- \string\def\string\hugerrr{%
+ \string\let\string\hugerrr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\hugerrr{\@percentchar^^J%
\string\@setfontsize\string\hugerrr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\Huger
\immediate\write\@fontfile{%
- \string\def\string\Huger{%
+ \string\let\string\Huger\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\Huger{\@percentchar^^J%
\string\@setfontsize\string\Huger{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\Hugerr
\immediate\write\@fontfile{%
- \string\def\string\Hugerr{%
+ \string\let\string\Hugerr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\Hugerr{\@percentchar^^J%
\string\@setfontsize\string\Hugerr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\Hugerrr
\immediate\write\@fontfile{%
- \string\def\string\Hugerrr{%
+ \string\let\string\Hugerrr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\Hugerrr{\@percentchar^^J%
\string\@setfontsize\string\Hugerrr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\HUGE
\immediate\write\@fontfile{%
- \string\def\string\HUGE{%
+ \string\let\string\HUGE\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\HUGE{\@percentchar^^J%
\string\@setfontsize\string\HUGE{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\HUGEr
\immediate\write\@fontfile{%
- \string\def\string\HUGEr{%
+ \string\let\string\HUGEr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\HUGEr{\@percentchar^^J%
\string\@setfontsize\string\HUGEr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\HUGErr
\immediate\write\@fontfile{%
- \string\def\string\HUGErr{%
+ \string\let\string\HUGErr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\HUGErr{\@percentchar^^J%
\string\@setfontsize\string\HUGErr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
\endgroup
\begingroup\HUGErrr
\immediate\write\@fontfile{%
- \string\def\string\HUGErrr{%
+ \string\let\string\HUGErrr\string\@undefined^^J%
+ \string\DeclareRobustCommand\string\HUGErrr{\@percentchar^^J%
\string\@setfontsize\string\HUGErrr{\f@size}{\f@baselineskip}%
}\@percentchar%
}%
@@ -1160,7 +1291,7 @@
\use:c{##1} % set the font size
\noindent\texttt{\symbol{92}##1}:~ % print the font size command
\__fontsize_round_f:n {size}~on~ % print the size in points
- \__fontsize_round_f:n {baselineskip}.~ % print the baseline skip in points
+ \__fontsize_round_f:n {baselineskip}.~ % print the baseline skip in points
\fs@sampletext % sample text
\par\addvspace{\medskipamount} % finish up
}
diff --git a/Master/texmf-dist/tex/latex/footmisc/footmisc.sty b/Master/texmf-dist/tex/latex/footmisc/footmisc.sty
index 6d49c597153..ee0c9c1bb07 100644
--- a/Master/texmf-dist/tex/latex/footmisc/footmisc.sty
+++ b/Master/texmf-dist/tex/latex/footmisc/footmisc.sty
@@ -35,7 +35,7 @@
%% where one can also log issues in case there are any.
%%
%% File: footmisc.dtx (C) Copyright 1995-2011 Robin Fairbairns
-%% (C) Copyright 2018-2023 Frank Mittelbach
+%% (C) Copyright 2018-2024 Frank Mittelbach
\NeedsTeXFormat{LaTeX2e}
\providecommand\DeclareRelease[3]{}
\providecommand\DeclareCurrentRelease[2]{}
@@ -43,7 +43,7 @@
\DeclareRelease{v5}{2011-06-06}{footmisc-2011-06-06.sty}
\DeclareCurrentRelease{}{2022-02-14}
\ProvidesPackage{footmisc}%
- [2023/07/05 v6.0f
+ [2024/12/24 v6.0g
a miscellany of footnote facilities%
]
@@ -364,6 +364,7 @@
\floatingpenalty\@MM
\hsize\columnwidth
\@parboxrestore
+ \def\@currentcounter{footnote}%
\protected@edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}%
\color@begingroup
\setbox\FN@tempboxa\hbox{%
@@ -388,6 +389,7 @@
\let\baselinestretch\FN@baselinestretch
\fi
\reset@font\footnotesize
+ \def\@currentcounter{footnote}%
\protected@edef\@currentlabel{%
\csname p@footnote\endcsname\@thefnmark
}%
@@ -412,6 +414,7 @@
\floatingpenalty\@MM
\hsize\columnwidth
\@parboxrestore
+ \def\@currentcounter{footnote}%
\protected@edef\@currentlabel{%
\csname p@footnote\endcsname\@thefnmark
}%
diff --git a/Master/texmf-dist/tex/latex/footnoterange/footnoterange.sty b/Master/texmf-dist/tex/latex/footnoterange/footnoterange.sty
index 066a2e02550..f7ef0598d62 100644
--- a/Master/texmf-dist/tex/latex/footnoterange/footnoterange.sty
+++ b/Master/texmf-dist/tex/latex/footnoterange/footnoterange.sty
@@ -9,10 +9,10 @@
%% This is a generated file.
%%
%% Project: footnoterange
-%% Version: 2023-02-25 v1.1a
+%% Version: 2025-01-27 v1.1b
%% Info: References to ranges of footnotes
%%
-%% Copyright (C) 2012 - 2023 by
+%% Copyright (C) 2012 - 2025 by
%% H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de>
%% Portions of code copyrighted by other people as marked;
%% lines marked "FMi": code by Frank Mittelbach, thanks!
@@ -43,20 +43,18 @@
%% Hans-Klaus Muench + 2014-08-24
%%
\NeedsTeXFormat{LaTeX2e}[2022-11-01]
-\ProvidesPackage{footnoterange}[2023-02-25 v1.1a %
+\ProvidesPackage{footnoterange}[2025-01-27 v1.1b %
References to ranges of footnotes (HMM)]
%% Provides the footnoterange and footnoterange* environments
%% to refer to ranges of footnotes.
-\@ifl@t@r\fmtversion{2022/11/01}{% would have understood
- % \IfFormatAtLeastTF{2022-11-01}{<true code>}{<false code>}
+\@ifl@t@r\fmtversion{2024/11/01}{% would have understood
+ % \IfFormatAtLeastTF{2024-11-01}{<true code>}{<false code>}
}{\PackageError{footnoterange}{%
Newer LaTeX format needed or older footnoterange package%
- }{Needed LaTeX format version: 2022-11-01 or newer.\MessageBreak%
+ }{Needed LaTeX format version: 2024-11-01 or newer.\MessageBreak%
Found\space\space LaTeX format version: \fmtversion.\MessageBreak%
- Either update your TeX distribution\MessageBreak%
- or use an archived version of footnoterange\MessageBreak%
- (see section History in the documentation).\MessageBreak%
+ Please update your TeX distribution.%
}
}
@@ -76,20 +74,20 @@
\nolinebreak%
% no \footnotemark here
\addtocounter\@mpfn{+1}%
- \IfPackageLoadedTF{hyperref}{\fnr@ifhyperrfn}{\relax}%
+ \IfPackageLoadedT{hyperref}{\fnr@ifhyperrfn}%
\xdef\fnr@opt{#1}% contains the optional argument
\xdef\fnr@arabic{\arabic\@mpfn}%
- \protected@edef\fnr@formated{\thefootnote}%
+ \protected@edef\fnr@formatted{\thefootnote}%
\ifx\fnr@opt\empty\relax%
\footnotetext{\label{fnr:\fnr@arabic}#2}%
\else%
\PackageWarning{footnoterange}{%
Custom footnote-numbers used in a footnoterange\MessageBreak%
environment: Footnote with natural number\MessageBreak%
- \ifx\fnr@formated\fnr@arabic%
+ \ifx\fnr@formatted\fnr@arabic%
\fnr@arabic%
\else%
- \space\fnr@arabic\space (\fnr@formated )%
+ \space\fnr@arabic\space (\fnr@formatted )%
\fi%
\MessageBreak%
was renumbered to \fnr@opt\MessageBreak%
diff --git a/Master/texmf-dist/tex/latex/functional/functional.sty b/Master/texmf-dist/tex/latex/functional/functional.sty
index 65b12ba7501..aaf21371d21 100644
--- a/Master/texmf-dist/tex/latex/functional/functional.sty
+++ b/Master/texmf-dist/tex/latex/functional/functional.sty
@@ -14,11 +14,12 @@
\NeedsTeXFormat{LaTeX2e}[2018-04-01]
\RequirePackage{expl3}
-\ProvidesExplPackage{functional}{2024-02-16}{2024A}
+\ProvidesExplPackage{functional}{2024-12-18}{2024C}
{^^JIntuitive Functional Programming Interface for LaTeX2}
\cs_generate_variant:Nn \iow_log:n { V }
\cs_generate_variant:Nn \str_set:Nn { Ne }
+\cs_generate_variant:Nn \tl_const:Nn { NV }
\cs_generate_variant:Nn \tl_log:n { e }
\cs_generate_variant:Nn \tl_set:Nn { Ne }
@@ -249,6 +250,18 @@
\int_new:N \g__fun_nesting_level_int
+%% Create arg tl variables to avoid check-declarations errors
+\cs_new_protected:Npn \__fun_new_arg_tl_vars:
+ {
+ \tl_gclear_new:c
+ { g__fun_arguments_ \int_use:N \g__fun_nesting_level_int _tl }
+ \int_step_inline:nnn {1} {9}
+ {
+ \tl_gclear_new:c
+ { g__fun_one_argument_ \int_use:N \g__fun_nesting_level_int _ ##1 _tl }
+ }
+ }
+
%% #1: function name; #2: argument specifications; #3 parameters tl defined
%% Some times we need to create a function without arguments
\cs_new_protected:Npn \__fun_new_with_arg_:Nnn #1 #2 #3
@@ -256,6 +269,7 @@
\cs_new_protected:Npn #1 #3
{
\int_gincr:N \g__fun_nesting_level_int
+ \__fun_new_arg_tl_vars:
\__fun_evaluate:Nn #1 {#2}
\int_gdecr:N \g__fun_nesting_level_int
\__fun_return_result:
@@ -269,6 +283,7 @@
\cs_new_protected:Npn #1 #3
{
\int_gincr:N \g__fun_nesting_level_int
+ \__fun_new_arg_tl_vars:
\__fun_one_argument_gset:nn { 1 } { ##1 }
\__fun_evaluate:Nn #1 {#2}
\int_gdecr:N \g__fun_nesting_level_int
@@ -283,6 +298,7 @@
\cs_new_protected:Npn #1 #3
{
\int_gincr:N \g__fun_nesting_level_int
+ \__fun_new_arg_tl_vars:
\__fun_one_argument_gset:nn { 1 } { ##1 }
\__fun_one_argument_gset:nn { 2 } { ##2 }
\__fun_evaluate:Nn #1 {#2}
@@ -298,6 +314,7 @@
\cs_new_protected:Npn #1 #3
{
\int_gincr:N \g__fun_nesting_level_int
+ \__fun_new_arg_tl_vars:
\__fun_one_argument_gset:nn { 1 } { ##1 }
\__fun_one_argument_gset:nn { 2 } { ##2 }
\__fun_one_argument_gset:nn { 3 } { ##3 }
@@ -314,6 +331,7 @@
\cs_new_protected:Npn #1 #3
{
\int_gincr:N \g__fun_nesting_level_int
+ \__fun_new_arg_tl_vars:
\__fun_one_argument_gset:nn { 1 } { ##1 }
\__fun_one_argument_gset:nn { 2 } { ##2 }
\__fun_one_argument_gset:nn { 3 } { ##3 }
@@ -331,6 +349,7 @@
\cs_new_protected:Npn #1 #3
{
\int_gincr:N \g__fun_nesting_level_int
+ \__fun_new_arg_tl_vars:
\__fun_one_argument_gset:nn { 1 } { ##1 }
\__fun_one_argument_gset:nn { 2 } { ##2 }
\__fun_one_argument_gset:nn { 3 } { ##3 }
@@ -349,6 +368,7 @@
\cs_new_protected:Npn #1 #3
{
\int_gincr:N \g__fun_nesting_level_int
+ \__fun_new_arg_tl_vars:
\__fun_one_argument_gset:nn { 1 } { ##1 }
\__fun_one_argument_gset:nn { 2 } { ##2 }
\__fun_one_argument_gset:nn { 3 } { ##3 }
@@ -368,6 +388,7 @@
\cs_new_protected:Npn #1 #3
{
\int_gincr:N \g__fun_nesting_level_int
+ \__fun_new_arg_tl_vars:
\__fun_one_argument_gset:nn { 1 } { ##1 }
\__fun_one_argument_gset:nn { 2 } { ##2 }
\__fun_one_argument_gset:nn { 3 } { ##3 }
@@ -388,6 +409,7 @@
\cs_new_protected:Npn #1 #3
{
\int_gincr:N \g__fun_nesting_level_int
+ \__fun_new_arg_tl_vars:
\__fun_one_argument_gset:nn { 1 } { ##1 }
\__fun_one_argument_gset:nn { 2 } { ##2 }
\__fun_one_argument_gset:nn { 3 } { ##3 }
@@ -409,6 +431,7 @@
\cs_new_protected:Npn #1 #3
{
\int_gincr:N \g__fun_nesting_level_int
+ \__fun_new_arg_tl_vars:
\__fun_one_argument_gset:nn { 1 } { ##1 }
\__fun_one_argument_gset:nn { 2 } { ##2 }
\__fun_one_argument_gset:nn { 3 } { ##3 }
@@ -1020,9 +1043,9 @@
%%> \section{Interfaces for Token Lists (Tl)}
%%% --------------------------------------------------------
-\tl_set_eq:NN \cEmptyTl \c_empty_tl
-\tl_set_eq:NN \cSpaceTl \c_space_tl
-\tl_set_eq:NN \cNoValueTl \c_novalue_tl
+\tl_const:NV \cEmptyTl \c_empty_tl
+\tl_const:NV \cSpaceTl \c_space_tl
+\tl_const:NV \cNoValueTl \c_novalue_tl
\tl_new:N \lTmpaTl \tl_new:N \lTmpbTl \tl_new:N \lTmpcTl
\tl_new:N \lTmpiTl \tl_new:N \lTmpjTl \tl_new:N \lTmpkTl
@@ -1246,19 +1269,19 @@
%%> \section{Interfaces for Strings (Str)}
%%% --------------------------------------------------------
-\str_set_eq:NN \cAmpersandStr \c_ampersand_str
-\str_set_eq:NN \cAttignStr \c_atsign_str
-\str_set_eq:NN \cBackslashStr \c_backslash_str
-\str_set_eq:NN \cLeftBraceStr \c_left_brace_str
-\str_set_eq:NN \cRightBraceStr \c_right_brace_str
-\str_set_eq:NN \cCircumflexStr \c_circumflex_str
-\str_set_eq:NN \cColonStr \c_colon_str
-\str_set_eq:NN \cDollarStr \c_dollar_str
-\str_set_eq:NN \cHashStr \c_hash_str
-\str_set_eq:NN \cPercentStr \c_percent_str
-\str_set_eq:NN \cTildeStr \c_tilde_str
-\str_set_eq:NN \cUnderscoreStr \c_underscore_str
-\str_set_eq:NN \cZeroStr \c_zero_str
+\str_const:NV \cAmpersandStr \c_ampersand_str
+\str_const:NV \cAttignStr \c_atsign_str
+\str_const:NV \cBackslashStr \c_backslash_str
+\str_const:NV \cLeftBraceStr \c_left_brace_str
+\str_const:NV \cRightBraceStr \c_right_brace_str
+\str_const:NV \cCircumflexStr \c_circumflex_str
+\str_const:NV \cColonStr \c_colon_str
+\str_const:NV \cDollarStr \c_dollar_str
+\str_const:NV \cHashStr \c_hash_str
+\str_const:NV \cPercentStr \c_percent_str
+\str_const:NV \cTildeStr \c_tilde_str
+\str_const:NV \cUnderscoreStr \c_underscore_str
+\str_const:NV \cZeroStr \c_zero_str
\str_new:N \lTmpaStr \str_new:N \lTmpbStr \str_new:N \lTmpcStr
\str_new:N \lTmpiStr \str_new:N \lTmpjStr \str_new:N \lTmpkStr
@@ -1579,14 +1602,14 @@
%%> \section{Interfaces for Floating Point Numbers (Fp)}
%%% --------------------------------------------------------
-\fp_set_eq:NN \cZeroFp \c_zero_fp
-\fp_set_eq:NN \cMinusZeroFp \c_minus_zero_fp
-\fp_set_eq:NN \cOneFp \c_one_fp
-\fp_set_eq:NN \cInfFp \c_inf_fp
-\fp_set_eq:NN \cMinusInfFp \c_minus_inf_fp
-\fp_set_eq:NN \cEFp \c_e_fp
-\fp_set_eq:NN \cPiFp \c_pi_fp
-\fp_set_eq:NN \cOneDegreeFp \c_one_degree_fp
+\fp_const:Nn \cZeroFp { \c_zero_fp }
+\fp_const:Nn \cMinusZeroFp { \c_minus_zero_fp }
+\fp_const:Nn \cOneFp { \c_one_fp }
+\fp_const:Nn \cInfFp { \c_inf_fp }
+\fp_const:Nn \cMinusInfFp { \c_minus_inf_fp }
+\fp_const:Nn \cEFp { \c_e_fp }
+\fp_const:Nn \cPiFp { \c_pi_fp }
+\fp_const:Nn \cOneDegreeFp { \c_one_degree_fp }
\fp_new:N \lTmpaFp \fp_new:N \lTmpbFp \fp_new:N \lTmpcFp
\fp_new:N \lTmpiFp \fp_new:N \lTmpjFp \fp_new:N \lTmpkFp
@@ -1835,7 +1858,7 @@
\clist_new:N \l@FunTmpyClist \clist_new:N \g@FunTmpyClist
\clist_new:N \l@FunTmpzClist \clist_new:N \g@FunTmpzClist
-\clist_set_eq:NN \cEmptyClist \c_empty_clist
+\clist_const:Nn \cEmptyClist {}
\prgNewFunction \clistNew { M } { \clist_new:N #1 }
@@ -2059,7 +2082,7 @@
\seq_new:N \gTmpiSeq \seq_new:N \gTmpjSeq \seq_new:N \gTmpkSeq
\seq_new:N \g@FunTmpxSeq \seq_new:N \g@FunTmpySeq \seq_new:N \g@FunTmpzSeq
-\seq_set_eq:NN \cEmptySeq \c_empty_seq
+\seq_const_from_clist:Nn \cEmptySeq {}
\prgNewFunction \seqNew { M } { \seq_new:N #1 }
@@ -2888,3 +2911,20 @@
\__fun_do_assignment:Nnn \c@name
{ \legacy_if_gset:nn {#1} {#2} } { \legacy_if_set:nn {#1} {#2} }
}
+
+%%% --------------------------------------------------------
+%%> \section{Interfaces for other packages}
+%%% --------------------------------------------------------
+
+\AddToHook{package/xcolor/after}
+ {
+ \tlNew \l@Fun@Color@Tl
+ \prgNewFunction \funColor { m m }
+ {
+ %% replace commas with vertical bars
+ \tlSet \l@Fun@Color@Tl { \clistJoin { fun | #1 | #2 } { | } }
+ %% functional library in tabularray package need global colors
+ \xglobal \definecolor { \l@Fun@Color@Tl } { #1 } { #2 }
+ \prgReturn { \expValue \l@Fun@Color@Tl }
+ }
+ }
diff --git a/Master/texmf-dist/tex/latex/fvextra/fvextra.sty b/Master/texmf-dist/tex/latex/fvextra/fvextra.sty
index 03eb1dc27e3..9f9cd09c4a6 100644
--- a/Master/texmf-dist/tex/latex/fvextra/fvextra.sty
+++ b/Master/texmf-dist/tex/latex/fvextra/fvextra.sty
@@ -20,7 +20,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{fvextra}
- [2024/05/16 v1.7.0 fvextra - extensions and patches for fancyvrb]
+ [2024/11/17 v1.10.0 fvextra - extensions and patches for fancyvrb]
\RequirePackage{etoolbox}
\RequirePackage{fancyvrb}
\RequirePackage{upquote}
@@ -197,6 +197,34 @@
\FV@OuterDefSTXEmpty
\catcode`\^^C=\active
\FV@OuterDefETXEmpty
+ \begingroup
+ \catcode`\ =\FV@TmpSpaceCat\relax
+ \catcode`\{=1
+ \catcode`\}=2
+ \@ifnextchar\bgroup
+ {\endgroup
+ \catcode`\{=1
+ \catcode`\}=2
+ \catcode`\ =\active
+ \catcode`\^^I=\active
+ \FV@ReadVArg@Group{#1}}%
+ {\endgroup
+ \catcode`\ =\active
+ \catcode`\^^I=\active
+ \FV@ReadVArg@Char{#1}}}
+\def\FVExtraReadVArgSingleLine#1{%
+ \begingroup
+ \ifFV@pdfTeXinputenc
+ \ifdefstring{\inputencodingname}{utf8}%
+ {\let\FV@ReadVArg@Char\FV@ReadVArg@Char@UTF}%
+ {}%
+ \fi
+ \edef\FV@TmpSpaceCat{\the\catcode` }%
+ \let\do\@makeother\FVExtraDoSpecials
+ \catcode`\^^B=\active
+ \FV@OuterDefSTXEmpty
+ \catcode`\^^C=\active
+ \FV@OuterDefETXEmpty
\catcode`\^^M=\active
\FV@OuterDefEOLEmpty
\begingroup
@@ -209,17 +237,17 @@
\catcode`\}=2
\catcode`\ =\active
\catcode`\^^I=\active
- \FV@ReadVArg@Group{#1}\FV@EOL}%
+ \FV@ReadVArg@Group{#1}}%
{\endgroup
\catcode`\ =\active
\catcode`\^^I=\active
- \FV@ReadVArg@Char{#1}\FV@EOL}}
-\def\FV@ReadVArg@Group#1#2#3{%
+ \FV@ReadVArg@Char{#1}}}
+\def\FV@ReadVArg@Group#1#2{%
\endgroup
- #1{#3}}
-\def\FV@ReadVArg@Char#1#2#3{%
+ #1{#2}}
+\def\FV@ReadVArg@Char#1#2{%
\expandafter\expandafter\expandafter
- \if\expandafter\expandafter\expandafter\relax\expandafter\@gobble\detokenize{#3}\relax
+ \if\expandafter\expandafter\expandafter\relax\expandafter\@gobble\detokenize{#2}\relax
\expandafter\@gobble
\else
\expandafter\@firstofone
@@ -227,14 +255,14 @@
{\PackageError{fvextra}%
{Verbatim delimiters must be single characters, not commands}%
{Try a different delimiter}}%
- \def\FV@ReadVArg@Char@i##1##2##3#3{%
+ \def\FV@ReadVArg@Char@i##1##2#2{%
\endgroup
- ##1{##3}}%
- \FV@ReadVArg@Char@i{#1}\FV@EOL}%
+ ##1{##2}}%
+ \FV@ReadVArg@Char@i{#1}}%
\ifFV@pdfTeXinputenc
-\def\FV@ReadVArg@Char@UTF#1#2#3{%
+\def\FV@ReadVArg@Char@UTF#1#2{%
\expandafter\expandafter\expandafter
- \if\expandafter\expandafter\expandafter\relax\expandafter\@gobble\detokenize{#3}\relax
+ \if\expandafter\expandafter\expandafter\relax\expandafter\@gobble\detokenize{#2}\relax
\expandafter\@gobble
\else
\expandafter\@firstofone
@@ -242,20 +270,25 @@
{\PackageError{fvextra}%
{Verbatim delimiters must be single characters, not commands}%
{Try a different delimiter}}%
- \ifcsname FV@U8:\detokenize{#3}\endcsname
+ \ifcsname FV@U8:\detokenize{#2}\endcsname
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\def\FV@UTF@octets@after##1{\FV@ReadVArg@Char@UTF@i{#1}{##1}}%
- \csname FV@U8:\detokenize{#3}\endcsname#3}%
- {\FV@ReadVArg@Char@UTF@i{#1}{#3}}}
+ \csname FV@U8:\detokenize{#2}\endcsname#2}%
+ {\FV@ReadVArg@Char@UTF@i{#1}{#2}}}
\def\FV@ReadVArg@Char@UTF@i#1#2{%
- \def\FV@ReadVArg@Char@i##1##2##3#2{%
+ \def\FV@ReadVArg@Char@i##1##2#2{%
\endgroup
- ##1{##3}}%
- \FV@ReadVArg@Char@i{#1}\FV@EOL}%
+ ##1{##2}}%
+ \FV@ReadVArg@Char@i{#1}}%
\fi
+\newbool{FV@vargsingleline}
+\define@booleankey{FV}{vargsingleline}%
+ {\booltrue{FV@vargsingleline}}
+ {\boolfalse{FV@vargsingleline}}
+\fvset{vargsingleline=false}
\def\FVExtrapdfstringdef#1#2{%
\AfterPreamble{%
\ifcsname pdfstringdef\endcsname
@@ -962,7 +995,8 @@
\FV@InlineKeyValues#1,}}
\def\FV@UseInlineKeyValues{%
- \expandafter\fvset\expandafter{\FV@InlineKeyValues}}
+ \expandafter\fvset\expandafter{\FV@InlineKeyValues}%
+ \FV@ApplyBreakAnywhereInlineStretch}
\newbool{FV@extra}
\define@booleankey{FV}{extra}%
{\booltrue{FV@extra}}%
@@ -993,18 +1027,31 @@
{\FVC@Verb@Extra@i}}
\def\FVC@Verb@Extra@i{%
\begingroup
- \FVExtraReadVArg{%
+ \ifbool{FV@vargsingleline}%
+ {\let\FV@Reader\FVExtraReadVArgSingleLine}%
+ {\let\FV@Reader\FVExtraReadVArg}%
+ \FV@Reader{%
\FV@UseInlineKeyValues\FV@UseKeyValues\FV@FormattingPrep
\FVExtraDetokenizeVArg{%
\FVExtraRetokenizeVArg{\FVC@Verb@Extra@ii}{\FV@CatCodes}}}}
\def\FVC@Verb@Extra@ii#1{%
- \ifFV@breaklines
+ \ifx\FancyVerbBackgroundColor\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
- {\FV@InsertBreaks{\FancyVerbFormatInline}{#1}}%
- {\mbox{#1}}%
+ {\ifbool{FV@breaklines}%
+ {\FV@InsertBreaks{\FancyVerbFormatInline}{#1}}%
+ {\mbox{\FancyVerbFormatInline{#1}}}}%
+ {\setlength{\FV@TmpLength}{\fboxsep}%
+ \ifx\FancyVerbBackgroundColorPadding\relax
+ \setlength{\fboxsep}{0pt}%
+ \else
+ \setlength{\fboxsep}{\FancyVerbBackgroundColorPadding}%
+ \fi
+ \colorbox{\FancyVerbBackgroundColor}{%
+ \setlength{\fboxsep}{\FV@TmpLength}%
+ \FancyVerbBackgroundColorVPhantom\FancyVerbFormatInline{#1}}}%
\endgroup}
\let\FVC@SaveVerb@FV\FVC@SaveVerb
\def\FVC@SaveVerb{%
@@ -1019,7 +1066,10 @@
\@namedef{FV@SV@#1}{}%
\@namedef{FV@SVRaw@#1}{}%
\begingroup
- \FVExtraReadVArg{%
+ \ifbool{FV@vargsingleline}%
+ {\let\FV@Reader\FVExtraReadVArgSingleLine}%
+ {\let\FV@Reader\FVExtraReadVArg}%
+ \FV@Reader{%
\FVC@SaveVerb@Extra@i{#1}}}
\def\FVC@SaveVerb@Extra@i#1#2{%
\FV@UseInlineKeyValues\FV@UseKeyValues\FV@FormattingPrep
@@ -1061,15 +1111,7 @@
\def\FV@UseVerb@Extra@Retok#1{%
\FVExtraDetokenizeVArg{%
\FVExtraRetokenizeVArg{\FV@UseVerb@Extra}{\FV@CatCodes}}{#1}}
-\def\FV@UseVerb@Extra#1{%
- \ifFV@breaklines
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {\FV@InsertBreaks{\FancyVerbFormatInline}{#1}}%
- {\mbox{#1}}%
- \endgroup}
+\let\FV@UseVerb@Extra\FVC@Verb@Extra@ii
\def\EscVerb{%
\FVExtraRobustCommand\RobustEscVerb\FVExtraUnexpandedReadStarOArgBEscVArg}
\protected\def\RobustEscVerb{\FV@Command{}{EscVerb}}
@@ -1086,15 +1128,7 @@
\FV@UseInlineKeyValues\FV@UseKeyValues\FV@FormattingPrep
\FVExtraDetokenizeREscVArg{%
\FVExtraRetokenizeVArg{\FVC@EscVerb@ii}{\FV@CatCodes}}{#1}}
-\def\FVC@EscVerb@ii#1{%
- \ifFV@breaklines
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {\FV@InsertBreaks{\FancyVerbFormatInline}{#1}}%
- {\mbox{#1}}%
- \endgroup}
+\let\FVC@EscVerb@ii\FVC@Verb@Extra@ii
\def\VerbEnv{%
\ifcsname @currenvir\endcsname
\ifx\@currenvir\@empty
@@ -1238,19 +1272,21 @@
\define@key{FV}{afterbuffer}{%
\def\FV@afterbuffer{#1}}
\fvset{afterbuffer=}
-\newcounter{FancyVerbBufferIndex}
+\def\FancyVerbBufferIndex{0}
\define@key{FV}{bufferer}{%
\let\FV@Bufferer=#1\relax}
\def\FancyVerbDefaultBufferer#1{%
- \expandafter\xdef\csname\FancyVerbBufferLineName\arabic{FancyVerbBufferIndex}\endcsname{%
+ \expandafter\xdef\csname\FancyVerbBufferLineName\FancyVerbBufferIndex\endcsname{%
\detokenize{#1}}}
\fvset{bufferer=\FancyVerbDefaultBufferer}
\define@key{FV}{bufferlengthname}{%
- \ifcsname c@#1\endcsname
+ \ifcsname#1\endcsname
\else
- \newcounter{#1}%
+ \expandafter\xdef\csname#1\endcsname{0}%
\fi
- \def\FV@bufferlengthname{#1}}
+ \def\FV@bufferlengthname{#1}%
+ \expandafter\def\expandafter\FV@bufferlengthmacro\expandafter{%
+ \csname#1\endcsname}}
\fvset{bufferlengthname=FancyVerbBufferLength}
\define@key{FV}{bufferlinename}{%
\def\FancyVerbBufferLineName{#1}}
@@ -1263,9 +1299,9 @@
{\boolfalse{FV@globalbuffer}}
\fvset{globalbuffer=false}
\newcounter{FancyVerbBufferLine}
-\newcounter{FV@oldbufferlength}
\newbool{FV@globalbuffer@tmp}
-\let\FV@bufferlengthname@tmp\relax
+\let\FV@oldbufferlength\relax
+\let\FV@bufferlengthmacro@tmp\relax
\let\FancyVerbBufferLineName@tmp\relax
\let\FV@afterbuffer@tmp\relax
\def\VerbatimBuffer{%
@@ -1277,30 +1313,28 @@
\@bsphack
\begingroup
\FV@UseKeyValues
- \setcounter{FancyVerbBufferLine}%
- {\expandafter\value\expandafter{\FV@bufferlengthname}}%
+ \setcounter{FancyVerbBufferLine}{\FV@bufferlengthmacro}%
\let\c@FancyVerbLine\c@FancyVerbBufferLine
- \setcounter{FancyVerbBufferIndex}%
- {\expandafter\value\expandafter{\FV@bufferlengthname}}%
+ \xdef\FancyVerbBufferIndex{\FV@bufferlengthmacro}%
\ifbool{FV@globalbuffer}%
{\global\booltrue{FV@globalbuffer@tmp}}%
{\global\boolfalse{FV@globalbuffer@tmp}%
- \setcounter{FV@oldbufferlength}%
- {\expandafter\value\expandafter{\FV@bufferlengthname}}%
- \global\let\FV@bufferlengthname@tmp\FV@bufferlengthname
+ \expandafter\global\expandafter\let\expandafter\FV@oldbufferlength\FV@bufferlengthmacro
+ \global\let\FV@bufferlengthmacro@tmp\FV@bufferlengthmacro
\global\let\FancyVerbBufferLineName@tmp\FancyVerbBufferLineName}%
\global\let\FV@afterbuffer@tmp\FV@afterbuffer
\FV@DefineWhiteSpace
- \def\FV@ProcessLine{\stepcounter{FancyVerbBufferIndex}\FV@Bufferer}%
+ \def\FV@ProcessLine{%
+ \xdef\FancyVerbBufferIndex{\the\numexpr\FancyVerbBufferIndex+1\relax}%
+ \FV@Bufferer}%
\let\FV@FontScanPrep\relax
\let\@noligs\relax
\FancyVerbDefineActive
\FancyVerbFormatCom
\FV@Scan}
\def\FVE@VerbatimBuffer{%
- \expandafter\setcounter\expandafter{\FV@bufferlengthname}%
- {\value{FancyVerbBufferIndex}}%
- \setcounter{FancyVerbBufferIndex}{0}%
+ \expandafter\xdef\FV@bufferlengthmacro{\FancyVerbBufferIndex}%
+ \gdef\FancyVerbBufferIndex{0}%
\endgroup
\@esphack
\begingroup
@@ -1309,75 +1343,91 @@
\endgroup
\ifbool{FV@globalbuffer@tmp}%
{}%
- {\loop\unless\ifnum\expandafter\value\expandafter{\FV@bufferlengthname@tmp}=
- \value{FV@oldbufferlength}\relax
+ {\loop\unless\ifnum\FV@bufferlengthmacro@tmp=\FV@oldbufferlength\relax
\expandafter\global\expandafter\let\csname
- \FancyVerbBufferLineName@tmp
- \expandafter\arabic\expandafter{\FV@bufferlengthname@tmp}%
+ \FancyVerbBufferLineName@tmp\FV@bufferlengthmacro@tmp
\endcsname\FV@Undefined
- \expandafter\addtocounter\expandafter{\FV@bufferlengthname@tmp}{-1}%
+ \expandafter\xdef\FV@bufferlengthmacro@tmp{%
+ \the\numexpr\FV@bufferlengthmacro@tmp-1\relax}%
\repeat
- \global\let\FV@bufferlengthname@tmp\relax
- \global\let\FancyVerbBufferLineName@tmp\relax}}
+ \global\let\FV@bufferlengthmacro@tmp\relax
+ \global\let\FancyVerbBufferLineName@tmp\relax}%
+ \global\let\FV@oldbufferlength\relax}
\def\endVerbatimBuffer{\FVE@VerbatimBuffer}
-\newcommand{\VerbatimInsertBuffer}[1][]{%
- \begingroup
+\define@key{FV}{insertenvname}{%
+ \def\FV@VerbatimInsertEnvName{#1}}
+\fvset{insertenvname=Verbatim}
+\def\FV@Environment@InsertBuffer#1#2{%
\def\FV@KeyValues{#1}%
- \def\FV@Scan{%
- \FV@CatCodes
- \xdef\FV@EnvironName{Verbatim}%
- \ifnum\expandafter\value\expandafter{\FV@bufferlengthname}=\z@\relax
- \PackageError{fvextra}%
- {Buffer length counter \FV@bufferlengthname\space is invalid or zero}%
- {}%
- \let\FV@GetLine\relax
- \fi
- \FV@GetLine}%
- \let\FV@CheckScan\relax
- \setcounter{FancyVerbBufferIndex}{1}%
- \def\VerbatimInsertBuffer@def@FV@Line##1{%
- \FVExtraRetokenizeVArg{\def\FV@Line}{}{##1}}
- \def\FancyVerbGetLine{%
- \ifnum\value{FancyVerbBufferIndex}>%
- \expandafter\value\expandafter{\FV@bufferlengthname}\relax
- \global\let\FV@EnvironName\relax
- \let\next\relax
+ \FV@GetKeyValues{\@nameuse{FVB@#2}}}
+\def\FV@Scan@InsertBuffer{%
+ \FV@CatCodes
+ \xdef\FV@EnvironName{\FV@VerbatimInsertEnvName}%
+ \ifnum\FV@bufferlengthmacro=\z@\relax
+ \PackageError{fvextra}%
+ {Buffer length macro \expandafter\string\FV@bufferlengthmacro\space is invalid or zero}%
+ {}%
+ \let\FV@GetLine\relax
+ \fi
+ \FV@BeginScanning}%
+\def\VerbatimInsertBuffer@def@FV@Line#1{%
+ \FVExtraRetokenizeVArg{\def\FV@Line}{}{#1}}
+\def\FancyVerbGetLine@VerbatimInsertBuffer{%
+ \ifnum\FancyVerbBufferIndex>\FV@bufferlengthmacro\relax
+ \global\let\FV@EnvironName\relax
+ \let\next\relax
+ \else
+ \ifcsname\FancyVerbBufferLineName\FancyVerbBufferIndex\endcsname
+ \expandafter\let\expandafter\FV@Line@Buffer
+ \csname\FancyVerbBufferLineName\FancyVerbBufferIndex\endcsname
+ \expandafter\VerbatimInsertBuffer@def@FV@Line\expandafter{\FV@Line@Buffer}%
+ \def\next{\FV@PreProcessLine\FV@GetLine}%
+ \xdef\FancyVerbBufferIndex{\the\numexpr\FancyVerbBufferIndex+1\relax}%
\else
- \ifcsname\FancyVerbBufferLineName\arabic{FancyVerbBufferIndex}\endcsname
- \expandafter\let\expandafter\FV@Line@Buffer
- \csname\FancyVerbBufferLineName\arabic{FancyVerbBufferIndex}\endcsname
- \expandafter\VerbatimInsertBuffer@def@FV@Line\expandafter{\FV@Line@Buffer}%
- \def\next{\FV@PreProcessLine\FV@GetLine}%
- \stepcounter{FancyVerbBufferIndex}%
- \else
- \def\next{%
- \PackageError{fvextra}%
- {Buffer with line macro named
- "\FancyVerbBufferLineName\arabic{FancyVerbBufferIndex}" does not exist}%
- {Check bufferlinename, bufferlengthname, and globalbuffer settings}%
- }%
- \fi
+ \def\next{%
+ \PackageError{fvextra}%
+ {Buffer with line macro named
+ "\FancyVerbBufferLineName\FancyVerbBufferIndex" does not exist}%
+ {Check bufferlinename, bufferlengthname, and globalbuffer settings}%
+ }%
\fi
- \next}%
- \FVB@Verbatim
- \FVE@Verbatim
- \setcounter{FancyVerbBufferIndex}{0}%
+ \fi
+ \next}
+\newcommand{\VerbatimInsertBuffer}[1][]{%
+ \begingroup
+ \let\FV@Scan\FV@Scan@InsertBuffer
+ \let\FV@CheckScan\relax
+ \let\FV@Environment\FV@Environment@InsertBuffer
+ \let\FancyVerbGetLine\FancyVerbGetLine@VerbatimInsertBuffer
+ \gdef\FancyVerbBufferIndex{1}%
+ \VerbatimInsertBuffer@i{#1}%
+ \gdef\FancyVerbBufferIndex{0}%
\endgroup
\@doendpe}
+\begingroup
+\catcode`\^^M=\active
+\gdef\VerbatimInsertBuffer@i#1{%
+ \begingroup%
+ \fvset{#1}%
+ \global\let\FV@CurrentVerbatimInsertEnvName\FV@VerbatimInsertEnvName%
+ \endgroup%
+ \csname \FV@CurrentVerbatimInsertEnvName\endcsname[#1]^^M%
+ \csname end\FV@CurrentVerbatimInsertEnvName\endcsname%
+ \global\let\FV@CurrentVerbatimInsertEnvName\FV@Undefined}%
+\endgroup
\newcommand{\VerbatimClearBuffer}[1][]{%
\begingroup
\def\FV@KeyValues{#1}%
\FV@UseKeyValues
- \setcounter{FancyVerbBufferIndex}%
- {\expandafter\value\expandafter{\FV@bufferlengthname}}%
- \expandafter\setcounter\expandafter{\FV@bufferlengthname}{0}%
- \loop\unless\ifnum\value{FancyVerbBufferIndex}<1\relax
+ \xdef\FancyVerbBufferIndex{\FV@bufferlengthmacro}%
+ \expandafter\xdef\FV@bufferlengthmacro{0}%
+ \loop\unless\ifnum\FancyVerbBufferIndex<1\relax
\expandafter\global\expandafter\let
- \csname\FancyVerbBufferLineName\arabic{FancyVerbBufferIndex}\endcsname
+ \csname\FancyVerbBufferLineName\FancyVerbBufferIndex\endcsname
\FV@Undefined
- \addtocounter{FancyVerbBufferIndex}{-1}%
+ \xdef\FancyVerbBufferIndex{\the\numexpr\FancyVerbBufferIndex-1\relax}%
\repeat
- \setcounter{FancyVerbBufferIndex}{0}%
+ \gdef\FancyVerbBufferIndex{0}%
\endgroup}
\def\FV@Command#1#2{%
\FVExtra@ifstarVArg
@@ -1673,14 +1723,19 @@
\hbox to \linewidth{%
\FV@LeftListNumber
\FV@LeftListFrame
- \FancyVerbFormatLine{%
- \FancyVerbHighlightLine{%
- \FV@ObeyTabs{\FancyVerbFormatText{#1}}}}\hss
+ \FV@BGColor@List{%
+ \FancyVerbFormatLine{%
+ \FancyVerbHighlightLine{%
+ \FV@ObeyTabs{\FancyVerbFormatText{#1}}}}}\hss
\FV@RightListFrame
\FV@RightListNumber}%
\hss}}
\def\FV@BProcessLine#1{%
\hbox{\FancyVerbFormatLine{%
+ \ifx\FancyVerbBackgroundColor\relax
+ \else
+ \expandafter\FancyVerbBackgroundColorVPhantom
+ \fi
\FancyVerbHighlightLine{%
\FV@ObeyTabs{\FancyVerbFormatText{#1}}}}}}
\newbool{FV@NumberFirstLine}
@@ -1846,6 +1901,153 @@
\fi}{}%
\fi}%
}
+\define@key{FV}{backgroundcolor}{%
+ \def\FancyVerbBackgroundColor{#1}%
+ \ifx\FancyVerbBackgroundColor\FV@None
+ \let\FancyVerbBackgroundColor\relax
+ \else\ifx\FancyVerbBackgroundColor\@empty
+ \let\FancyVerbBackgroundColor\relax
+ \fi\fi}%
+\fvset{backgroundcolor=none}
+\define@key{FV}{bgcolor}{%
+ \fvset{backgroundcolor=#1}}
+\define@key{FV}{backgroundcolorvphantom}{%
+ \def\FancyVerbBackgroundColorVPhantom{#1}%
+ \ifx\FancyVerbBackgroundColorVPhantom\FV@None
+ \let\FancyVerbBackgroundColorVPhantom\relax
+ \else\ifx\FancyVerbBackgroundColorVPhantom\@empty
+ \let\FancyVerbBackgroundColorVPhantom\relax
+ \fi\fi}
+\fvset{backgroundcolorvphantom=\vphantom{\"Apgjy}}
+\define@key{FV}{bgcolorvphantom}{%
+ \fvset{backgroundcolorvphantom=#1}}
+\let\FancyVerbBackgroundColorPadding\relax
+\def\FV@backgroundcolorpadding@none@framenotsingle{%
+ \fvset{frame=none,framerule,rulecolor=none}}
+\def\FV@backgroundcolorpadding@dim@framenotsingle{%
+ \fvset{frame=single,framerule=0pt,rulecolor=\FancyVerbBackgroundColor}}
+\define@key{FV}{backgroundcolorpadding}{%
+ \def\FancyVerbBackgroundColorPadding{#1}%
+ \ifx\FancyVerbBackgroundColorPadding\FV@None
+ \let\FancyVerbBackgroundColorPadding\relax
+ \else\ifx\FancyVerbBackgroundColorPadding\@empty
+ \let\FancyVerbBackgroundColorPadding\relax
+ \fi\fi
+ \let\FV@Next\relax
+ \ifx\FancyVerbBackgroundColorPadding\relax
+ \ifx\FV@BeginListFrame\FV@BeginListFrame@Single
+ \else
+ \let\FV@Next\FV@backgroundcolorpadding@none@framenotsingle
+ \fi
+ \ifx\FV@LeftListFrame\FV@LeftListFrame@Single
+ \else
+ \let\FV@Next\FV@backgroundcolorpadding@none@framenotsingle
+ \fi
+ \ifx\FV@RightListFrame\FV@RightListFrame@Single
+ \else
+ \let\FV@Next\FV@backgroundcolorpadding@none@framenotsingle
+ \fi
+ \ifx\FV@EndListFrame\FV@EndListFrame@Single
+ \else
+ \let\FV@Next\FV@backgroundcolorpadding@none@framenotsingle
+ \fi
+ \FV@Next
+ \fvset{framesep,fillcolor=none}%
+ \else
+ \ifx\FV@BeginListFrame\FV@BeginListFrame@Single
+ \else
+ \let\FV@Next\FV@backgroundcolorpadding@dim@framenotsingle
+ \fi
+ \ifx\FV@LeftListFrame\FV@LeftListFrame@Single
+ \else
+ \let\FV@Next\FV@backgroundcolorpadding@dim@framenotsingle
+ \fi
+ \ifx\FV@RightListFrame\FV@RightListFrame@Single
+ \else
+ \let\FV@Next\FV@backgroundcolorpadding@dim@framenotsingle
+ \fi
+ \ifx\FV@EndListFrame\FV@EndListFrame@Single
+ \else
+ \let\FV@Next\FV@backgroundcolorpadding@dim@framenotsingle
+ \fi
+ \FV@Next
+ \fvset{framesep=#1,fillcolor=\FancyVerbBackgroundColor}%
+ \fi}
+\define@key{FV}{bgcolorpadding}{\fvset{backgroundcolorpadding=#1}}
+\def\FV@BGColor@List#1{%
+ \ifx\FancyVerbBackgroundColor\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {#1}%
+ {\setlength{\FV@TmpLength}{\fboxsep}%
+ \setlength{\fboxsep}{0pt}%
+ \colorbox{\FancyVerbBackgroundColor}{%
+ \setlength{\fboxsep}{\FV@TmpLength}%
+ \rlap{\FancyVerbBackgroundColorVPhantom\strut#1}%
+ \hspace{\linewidth}%
+ \ifx\FV@RightListFrame\relax\else
+ \hspace{-\FV@FrameSep}%
+ \hspace{-\FV@FrameRule}%
+ \fi
+ \ifx\FV@LeftListFrame\relax\else
+ \hspace{-\FV@FrameSep}%
+ \hspace{-\FV@FrameRule}%
+ \fi}%
+ \hss}}
+\let\FV@BVerbatimBegin@NoBGColor\FV@BVerbatimBegin
+\let\FV@BVerbatimEnd@NoBGColor\FV@BVerbatimEnd
+\def\FV@BVerbatimBegin{%
+ \begingroup
+ \FV@UseKeyValues
+ \FV@FormattingPrep
+ \let\FV@FormattingPrep\relax
+ \FV@ObeyTabsInit
+ \let\FV@ObeyTabsInit\relax
+ \ifx\FancyVerbBackgroundColor\relax
+ \expandafter\FV@BVerbatimBegin@NoBGColor
+ \else
+ \expandafter\FV@BVerbatimBegin@BGColor
+ \fi}
+\def\FV@BVerbatimEnd{%
+ \ifx\FancyVerbBackgroundColor\relax
+ \expandafter\FV@BVerbatimEnd@NoBGColor
+ \else
+ \expandafter\FV@BVerbatimEnd@BGColor
+ \fi
+ \endgroup}
+\def\FV@BVerbatimBegin@BGColor{%
+ \gdef\FV@TheVerbatim{}%
+ \ifx\FV@boxwidth\relax
+ \gdef\FV@boxwidth@tmp{0pt}%
+ \def\FV@ProcessLine##1{%
+ \sbox{\FV@LineBox}{\FV@BProcessLine{##1}}%
+ \ifdim\wd\FV@LineBox>\FV@boxwidth@tmp\relax
+ \xdef\FV@boxwidth@tmp{\the\wd\FV@LineBox}%
+ \fi
+ \expandafter\gdef\expandafter\FV@TheVerbatim\expandafter{%
+ \FV@TheVerbatim\FV@ProcessLine{##1}}}%
+ \else
+ \def\FV@ProcessLine##1{%
+ \expandafter\gdef\expandafter\FV@TheVerbatim\expandafter{%
+ \FV@TheVerbatim\FV@ProcessLine{##1}}}%
+ \fi}
+\def\FV@BVerbatimEnd@BGColor{%
+ \ifx\FV@boxwidth\relax
+ \let\FV@boxwidth\FV@boxwidth@tmp
+ \global\let\FV@boxwidth@tmp\FV@Undefined
+ \fi
+ \setlength{\FV@TmpLength}{\fboxsep}%
+ \ifx\FancyVerbBackgroundColorPadding\relax
+ \setlength{\fboxsep}{0pt}%
+ \else
+ \setlength{\fboxsep}{\FancyVerbBackgroundColorPadding}%
+ \fi
+ \colorbox{\FancyVerbBackgroundColor}{%
+ \setlength{\fboxsep}{\FV@TmpLength}%
+ \FV@BVerbatimBegin@NoBGColor\FV@TheVerbatim\FV@BVerbatimEnd@NoBGColor}%
+ \gdef\FV@TheVerbatim{}}
\define@key{FV}{highlightlines}{\def\FV@HighlightLinesList{#1}}%
\fvset{highlightlines=}
\define@key{FV}{highlightcolor}{\def\FancyVerbHighlightColor{#1}}%
@@ -1944,6 +2146,25 @@
\expandafter\FV@HighlightLinesParse@Range@Loop
\fi}
\g@addto@macro\FV@FormattingPrep@PreHook{\FV@HighlightLinesPrep}
+\def\FV@StepLineNo@Patch@HighlightLine{%
+ \ifcsname FV@HighlightLine:\number\c@FancyVerbLine\endcsname
+ \@tempcnta=\c@FancyVerbLine
+ \advance\@tempcnta\@ne
+ \ifcsname FV@HighlightLine:\number\@tempcnta\endcsname
+ \else
+ \expandafter\let
+ \csname FV@HighlightLine:\number\c@FancyVerbLine\endcsname\FV@Undefined
+ \fi
+ \fi}
+\patchcmd{\FV@StepLineNo}%
+ {\ifx\FV@Line\empty}%
+ {\ifx\FV@Line\empty\FV@StepLineNo@Patch@HighlightLine}%
+ {}%
+ {\PackageError{fvextra}%
+ {Failed to patch \string\FV@StepLineNo\ to make highlightlines
+ compatible with numberblanklines}%
+ {Failed to patch \string\FV@StepLineNo\ to make highlightlines
+ compatible with numberblanklines}}
\newcount\FV@LoopCount
\newbox\FV@NCharsBox
\def\FV@SetToWidthNChars#1#2{%
@@ -2073,6 +2294,22 @@
\let\FancyVerbBreakStop\relax
\let\FV@Break@DefaultToken\FV@Break@NBToken}
\fvset{breakanywhere=false}
+\define@key{FV}{breakanywhereinlinestretch}{%
+ \def\FV@breakanywhereinlinestretch{#1}%
+ \ifx\FV@breakanywhereinlinestretch\FV@None
+ \let\FV@breakanywhereinlinestretch\relax
+ \else\ifx\FV@breakanywhereinlinestretch\@empty
+ \let\FV@breakanywhereinlinestretch\relax
+ \fi\fi}
+\fvset{breakanywhereinlinestretch=none}
+\def\FV@ApplyBreakAnywhereInlineStretch{%
+ \ifx\FV@breakanywhereinlinestretch\relax
+ \else
+ \let\FancyVerbBreakAnywhereBreak@Orig\FancyVerbBreakAnywhereBreak
+ \def\FancyVerbBreakAnywhereBreak{%
+ \nobreak\hspace{0pt plus \FV@breakanywhereinlinestretch}%
+ \FancyVerbBreakAnywhereBreak@Orig}%
+ \fi}
\define@key{FV}{breakbefore}{%
\ifstrempty{#1}%
{\let\FV@BreakBefore\@empty
@@ -2220,6 +2457,15 @@
{\booltrue{FV@breaknonspaceingroup}}%
{\boolfalse{FV@breaknonspaceingroup}}
\fvset{breaknonspaceingroup=false}
+\newbool{FV@breakpreferspaces}
+\booltrue{FV@breakpreferspaces}
+\define@booleankey{FV}{breakpreferspaces}%
+ {\booltrue{FV@breakpreferspaces}}%
+ {\boolfalse{FV@breakpreferspaces}}
+\def\FV@BreakHyphenation{%
+ \finalhyphendemerits=0\relax
+ \ifbool{FV@breakpreferspaces}{}{\linepenalty=\@M\relax}}
+\g@addto@macro\FV@FormattingPrep@PreHook{\FV@BreakHyphenation}
\newsavebox{\FV@LineBox}
\newsavebox{\FV@LineIndentBox}
\let\FV@LineIndentChars\@empty
@@ -2857,8 +3103,9 @@
\FV@SaveLineBox{#1}}%
\FV@LeftListNumber
\FV@LeftListFrame
- \FancyVerbFormatLine{%
- \FancyVerbHighlightLine{\usebox{\FV@LineBox}}}%
+ \FV@BGColor@List{%
+ \FancyVerbFormatLine{%
+ \FancyVerbHighlightLine{\usebox{\FV@LineBox}}}}%
\FV@RightListFrame
\FV@RightListNumber
\ifx\FV@Tab\FV@TrueTab@UseWidth
@@ -2869,10 +3116,11 @@
\let\FancyVerbBreakStop\relax
\FV@LeftListNumber
\FV@LeftListFrame
- \FancyVerbFormatLine{%
- \FancyVerbHighlightLine{%
- \parbox[t]{\FV@LineWidth}{%
- \noindent\strut\FV@ObeyTabs{\FancyVerbFormatText{#1}}\strut}}}%
+ \FV@BGColor@List{%
+ \FancyVerbFormatLine{%
+ \FancyVerbHighlightLine{%
+ \parbox[t]{\FV@LineWidth}{%
+ \noindent\strut\FV@ObeyTabs{\FancyVerbFormatText{#1}}\strut}}}}%
\FV@RightListFrame
\FV@RightListNumber
\fi}%
diff --git a/Master/texmf-dist/tex/latex/gb4e-next/gb4e-next.sty b/Master/texmf-dist/tex/latex/gb4e-next/gb4e-next.sty
new file mode 100644
index 00000000000..5974f21feb7
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/gb4e-next/gb4e-next.sty
@@ -0,0 +1,58 @@
+\def\gbnext@version{0.5}
+\def\gbnext@date{2024-10-27}
+% The gb4e-next package provides gb4e users two relative example reference commands. \Next refers to the next
+% example in the document and \Prev refers to the previous example. No explicit label command is required.
+%
+% Copyright 2024 by Alan Munn
+%
+% This package may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This package has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this package is Alan Munn.
+%
+% This package consists of the file gb4e-next.sty and documentation files
+% gb4e-next.tex and gb4e-next.pdf.
+%
+% This package is currently experimental. Use at your own risk.
+%
+\ProvidesPackage{gb4e-next}[\gbnext@date\ Provides relative example reference to gb4e v. \gbnext@version ]
+\RequirePackage{gb4e}
+\DeclareKeys[gb4e-next]{
+fn.store = \gbnext@fnformat
+}
+\SetKeys[gb4e-next]{fn=roman}
+\ProcessKeyOptions[gb4e-next]
+\newcounter{gbnext@tmpcnt}
+\NewDocumentCommand{\Next}{o}{%
+\IfNoValueTF{#1}%
+{\save@exx}%
+{\save@exx[#1]}%
+\stepcounter{gbnext@tmpcnt}\printExNo}
+\NewDocumentCommand{\Prev}{o}{%
+\IfNoValueTF{#1}%
+{\save@exx}%
+{\save@exx[#1]}%
+\printExNo}
+\NewDocumentCommand{\save@exx}{o}{%
+\if@noftnote%
+\setcounter{gbnext@tmpcnt}{\value{exx}}%
+\IfNoValueTF{#1}%
+{\def\thegbnext@tmpcnt{\arabic{gbnext@tmpcnt}}}% default format of printed number
+{\def\thegbnext@tmpcnt{\csname#1\endcsname{gbnext@tmpcnt}}}%
+\else%
+\setcounter{gbnext@tmpcnt}{\value{fnx}}%
+\IfNoValueTF{#1}%
+{\def\thegbnext@tmpcnt{\csname\gbnext@fnformat\endcsname{gbnext@tmpcnt}}}% default format of printed number
+{\def\thegbnext@tmpcnt{\csname#1\endcsname{gbnext@tmpcnt}}}%
+\fi}
+\newcommand\printExNo{(\thegbnext@tmpcnt)}
+\endinput
+
+
diff --git a/Master/texmf-dist/tex/latex/gelasiomath/t1mingelasio.fd b/Master/texmf-dist/tex/latex/gelasiomath/t1mingelasio.fd
index da0a9da6553..2eace69615a 100644
--- a/Master/texmf-dist/tex/latex/gelasiomath/t1mingelasio.fd
+++ b/Master/texmf-dist/tex/latex/gelasiomath/t1mingelasio.fd
@@ -47,5 +47,4 @@
\DeclareFontShape{T1}{mingelasio}{bx}{it}{
<-> ssub * mingelasio/b/it
}{}
-\traceoff
\endinput
diff --git a/Master/texmf-dist/tex/latex/gelasiomath/untxmia.fd b/Master/texmf-dist/tex/latex/gelasiomath/untxmia.fd
deleted file mode 100644
index 212e5b2386e..00000000000
--- a/Master/texmf-dist/tex/latex/gelasiomath/untxmia.fd
+++ /dev/null
@@ -1,139 +0,0 @@
-%Filename: untxmia.fd
-%Created by: tex mia-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{untxmia.fd}
- [2024/04/09 Fontinst v1.933 font definitions for U/ntxmia.]
-
-\expandafter\ifx\csname ntxmath@scaled\endcsname\relax
- \let\ntxmath@scaled\@empty%
-\fi
-
-\DeclareFontFamily{U}{ntxmia}{\skewchar \font =127}
-
-\iftx@libertine
- \DeclareFontShape{U}{ntxmia}{m}{it}{
- <-> \ntxmath@scaled nxlmia
- }{}
-
- \DeclareFontShape{U}{ntxmia}{b}{it}{
- <-> \ntxmath@scaled nxlbmia
- }{}
-\else
- \iftx@minion
- \DeclareFontShape{U}{ntxmia}{m}{it}{
- <-> \ntxmath@scaled zmnmia
- }{}
-
- \DeclareFontShape{U}{ntxmia}{b}{it}{
- <-> \ntxmath@scaled zmnbmia
- }{}
- \else
- \iftx@coch
- \DeclareFontShape{U}{ntxmia}{m}{it}{
- <-> \ntxmath@scaled zcochmia
- }{}
- \DeclareFontShape{U}{ntxmia}{b}{it}{
- <-> \ntxmath@scaled zcochbmia
- }{}
- \else
- \iftx@ch
- \DeclareFontShape{U}{ntxmia}{m}{it}{
- <-> \ntxmath@scaled zchmia
- }{}
- \DeclareFontShape{U}{ntxmia}{b}{it}{
- <-> \ntxmath@scaled zchbmia
- }{}
- \else
- \iftx@stxtwo
- \DeclareFontShape{U}{ntxmia}{m}{it}{
- <-> \ntxmath@scaled ntxstx2mia
- }{}
- \DeclareFontShape{U}{ntxmia}{b}{it}{
- <-> \ntxmath@scaled ntxstx2bmia
- }{}
-
- \else
- \iftx@ebgm
- \DeclareFontShape{U}{ntxmia}{m}{it}{
- <-> \ntxmath@scaled ntxebgmia
- }{}
- \DeclareFontShape{U}{ntxmia}{b}{it}{
- <-> \ntxmath@scaled ntxebgbmia
- }{}
- \else
- \iftx@ut
- \DeclareFontShape{U}{ntxmia}{m}{it}{
- <-> \ntxmath@scaled zutmia
- }{}
- \DeclareFontShape{U}{ntxmia}{b}{it}{
- <-> \ntxmath@scaled zutbmia
- }{}
- \else
- \iftx@nc
- \iftx@fourier
- \DeclareFontShape{U}{ntxmia}{m}{it}{
- <-> \ntxmath@scaled zncfmia
- }{}
- \DeclareFontShape{U}{ntxmia}{b}{it}{
- <-> \ntxmath@scaled zncfbmia
- }{}
- \else
- \DeclareFontShape{U}{ntxmia}{m}{it}{
- <-> \ntxmath@scaled zncmia
- }{}
- \DeclareFontShape{U}{ntxmia}{b}{it}{
- <-> \ntxmath@scaled zncbmia
- }{}
- \fi
- \else
- \iftx@noto
- \DeclareFontShape{U}{ntxmia}{m}{it}{
- <-> \ntxmath@scaled notomia
- }{}
- \DeclareFontShape{U}{ntxmia}{b}{it}{
- <-> \ntxmath@scaled notobmia
- }{}
- \else
- \iftx@notosans
- \DeclareFontShape{U}{ntxmia}{m}{it}{
- <-> \ntxmath@scaled notosansmia
- }{}
- \DeclareFontShape{U}{ntxmia}{b}{it}{
- <-> \ntxmath@scaled notosansbmia
- }{}
- \else
- \iftx@gel
- \DeclareFontShape{U}{ntxmia}{m}{it}{
- <-> \ntxmath@scaled zgelmia
- }{}
- \DeclareFontShape{U}{ntxmia}{b}{it}{
- <-> \ntxmath@scaled zgelbmia
- }{}
- \else
-
- \DeclareFontShape{U}{ntxmia}{m}{it}{
- <-> \ntxmath@scaled ntxmia
- }{}
- \DeclareFontShape{U}{ntxmia}{b}{it}{
- <-> \ntxmath@scaled ntxbmia
- }{}
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
-\fi
-\DeclareFontShape{U}{ntxmia}{m}{sl}{<->ssub * ntxmia/m/it}{}
-\DeclareFontShape{U}{ntxmia}{bx}{it}{<->ssub * ntxmia/b/it}{}
-\DeclareFontShape{U}{ntxmia}{b}{sl}{<->ssub * ntxmia/b/it}{}
-\DeclareFontShape{U}{ntxmia}{bx}{sl}{<->ssub * ntxmia/b/sl}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/genealogy-profiles/genealogy-profiles.sty b/Master/texmf-dist/tex/latex/genealogy-profiles/genealogy-profiles.sty
index 69f1cf00d70..d956f1bcc03 100644
--- a/Master/texmf-dist/tex/latex/genealogy-profiles/genealogy-profiles.sty
+++ b/Master/texmf-dist/tex/latex/genealogy-profiles/genealogy-profiles.sty
@@ -1,5 +1,5 @@
\RequirePackage{expl3}[2023-10-10]
-\ProvidesExplPackage{genealogy-profiles}{2024/01/24}{0.1}{Macros for creating genealogical profiles}
+\ProvidesExplPackage{genealogy-profiles}{2024/12/05}{0.1}{Macros for creating genealogical profiles}
% License: CC-BY-SA 4.0
% Author: Mikkel Eide Eriksen <mikkel.eriksen@gmail.com>
@@ -14,7 +14,12 @@
\keys_define:nn { genealogy-profiles }
{
name~part~order .code:n = {
- \seq_gset_from_clist:Nn \g__gpr_name_part_order_seq {#1}
+ \seq_gset_from_clist:Nn \g__gpr_name_part_order_seq { #1 }
+ \seq_map_inline:Nn \g__gpr_name_part_order_seq {
+ \tl_if_exist:cF { l__gpr_#1_tl } {
+ \gpr_error:nn { name-part-missing } { #1 }
+ }
+ }
} ,
name~type .choices:nn = {
given~and~surname ,
@@ -23,11 +28,11 @@
\int_case:nn { \l_keys_choice_int } {
{1} {
\seq_gset_from_clist:Nn \g__gpr_name_part_order_seq
- { givenname, surname }
+ { given~name, surname }
}
{2} {
\seq_gset_from_clist:Nn \g__gpr_name_part_order_seq
- { givenname, patronymic, byname }
+ { given~name, patronymic, byname }
}
}
@@ -45,26 +50,48 @@
end~header .tl_set:N = \l__gpr_end_header_tl ,
begin~life~events .tl_set:N = \l__gpr_begin_life_events_tl ,
end~life~events .tl_set:N = \l__gpr_end_life_events_tl ,
+ begin~content .tl_set:N = \l__gpr_begin_content_tl ,
+ end~content .tl_set:N = \l__gpr_end_content_tl ,
+
+ layout~preset .choices:nn = {
+ clear ,
+ tcolorbox
+ } {
+ \int_case:nn { \l_keys_choice_int } {
+ {1} {
+ \tl_clear:N \l__gpr_begin_profile_tl
+ \tl_clear:N \l__gpr_end_profile_tl
+ \tl_clear:N \l__gpr_begin_header_tl
+ \tl_clear:N \l__gpr_end_header_tl
+ \tl_clear:N \l__gpr_begin_life_events_tl
+ \tl_clear:N \l__gpr_end_life_events_tl
+ \tl_clear:N \l__gpr_begin_content_tl
+ \tl_clear:N \l__gpr_end_content_tl
+ }
+ {2} {
+ \bool_set_false:N \l__gpr_auto_header_bool
+ \tl_set:Nn \l__gpr_begin_profile_tl {
+ \begin{tcolorbox}[title = \gprHeader]
+ }
+ \tl_set:Nn \l__gpr_end_life_events_tl {
+ \tcblower
+ }
+ \tl_set:Nn \l__gpr_end_profile_tl {
+ \end{tcolorbox}
+ }
+ }
+ }
+ } ,
reference~style .cs_set:Np = \gpr__reference_style_handler:nnn #1#2#3 ,
unknown~reference~style .cs_set:Np = \gpr__unknown_reference_handler:nn #1#2 ,
page~number~style .cs_set:Np = \gpr__page_number_handler:n #1 ,
- % name part styling
- givenname~style .tl_set:N = \l__gpr_givenname_style_tl ,
- patronymic~style .tl_set:N = \l__gpr_patronymic_style_tl ,
- surname~style .tl_set:N = \l__gpr_surname_style_tl ,
- byname~style .tl_set:N = \l__gpr_byname_style_tl ,
-
header~format .tl_set:N = \l__gpr_header_format_tl ,
auto~header .bool_set:N = \l__gpr_auto_header_bool ,
% indexes
- id~index .tl_set:N = \l__gpr_id_index_tl ,
- fullname~index .tl_set:N = \l__gpr_fullname_index_tl ,
- patronymic~index .tl_set:N = \l__gpr_patronymic_index_tl ,
- surname~index .tl_set:N = \l__gpr_surname_index_tl ,
- byname~index .tl_set:N = \l__gpr_byname_index_tl ,
+ full~name~index .tl_set:N = \l__gpr_full_name_index_tl ,
nest~index~entries .bool_set:N = \l__gpr_nest_index_entries_bool ,
id~in~index~entries .bool_set:N = \l__gpr_id_in_index_entries_bool ,
@@ -73,18 +100,14 @@
include~unknown~in~index .default:n = { true } ,
include~ambiguous~in~index .bool_set:N = \l__gpr_include_ambiguous_in_index_bool ,
include~ambiguous~in~index .default:n = { true } ,
+ use~styles~in~index .bool_set:N = \l__gpr_use_styles_in_index_bool ,
debug~log .bool_set:N = \l__gpr_debug_log_bool
}
\keys_define:nn { genealogy-profiles / profile }
{
- id .tl_set:N = \l__gpr_id_tl ,
- fullname .tl_set:N = \l__gpr_fullname_tl ,
- givenname .tl_set:N = \l__gpr_givenname_tl ,
- patronymic .tl_set:N = \l__gpr_patronymic_tl ,
- surname .tl_set:N = \l__gpr_surname_tl ,
- byname .tl_set:N = \l__gpr_byname_tl ,
+ full~name .tl_set:N = \l__gpr_full_name_tl ,
life~events .tl_set:N = \l__gpr_life_events_tl ,
@@ -95,13 +118,53 @@
\keys_set:nn { genealogy-profiles } { #1 }
}
+\cs_new_protected:Nn \gpr_create_style_keys:nn
+{
+ \keys_define:nn { genealogy-profiles } {
+ #1~style .tl_set:c = { l__gpr_#1_style_tl } ,
+ #1~index .tl_set:c = { l__gpr_#1_index_tl } ,
+ }
+ \keys_define:nn { genealogy-profiles / profile } {
+ #1 .tl_set:c = { l__gpr_#1_tl } ,
+ }
+
+ \tl_set:cn { l__gpr_#1_cmd_tl } { #2 }
+ \exp_args:Nc \NewDocumentCommand { #2 Style } { m } {
+ \gpr_name_part_style:nn { #1 } { ##1 }
+ }
+}
+\cs_generate_variant:Nn \gpr_create_style_keys:nn {
+ nV
+}
+
+\NewDocumentCommand { \gprCreateNamePart } { m o } {
+ \IfValueTF { #2 } {
+ \tl_set:Nn \l_tmpa_tl { #2 }
+ } {
+ \tl_set:Nn \l_tmpa_tl { gpr }
+ \seq_set_split:Nnn \l_tmpa_seq { ~ } { #1 }
+ \seq_map_inline:Nn \l_tmpa_seq {
+ \tl_put_right:Nn \l_tmpa_tl { \text_titlecase_first:n { ##1 } }
+ }
+ }
+ \gpr_create_style_keys:nV { #1 } \l_tmpa_tl
+ \seq_new:c { l__gpr_#1_index_before_seq }
+ \seq_new:c { l__gpr_#1_index_after_seq }
+}
+
+\gprCreateNamePart { given~name }
+\gprCreateNamePart { patronymic }
+\gprCreateNamePart { surname }
+\gprCreateNamePart { byname }
+\gpr_create_style_keys:nn { id } { gprID }
+
% set some defaults
\keys_set:nn { genealogy-profiles } {
auto~id ,
include~unknown~in~index ,
include~ambiguous~in~index ,
name~type = { given~and~surname } ,
- header~format = { \gprStyledName \hfill \gprID } ,
+ header~format = { \gprFullName \hfill \gprID } ,
reference~style = {
#1 \gpr_super_subscript:nn {#2} {#3}
} ,
@@ -163,6 +226,19 @@
{ Multiple ~ profiles ~ with ~ the ~ name ~ '#1', ~
you ~ will ~ need ~ to ~ use ~ IDs ~ to ~ reference ~ them }
+\msg_new:nnn
+{ genealogy-profiles } { profile-count }
+{ There ~ are ~ #1 ~ profiles ~ in ~ this ~ document. }
+
+\msg_new:nnnn
+{ genealogy-profiles } { name-part-missing }
+{ Use ~ of ~ unknown ~ name ~ part ~ "#1" ~ on ~ input ~ line ~ #2 }
+{ Create ~ it ~ with ~ gprCreateNamePart ~ first. }
+
+\msg_new:nnn
+{ genealogy-profiles } { outside-profile }
+{ The ~ #1 ~ macro ~ should ~ only ~ be ~ used ~ inside ~ profiles, ~ on ~ input ~ line ~ #2 }
+
\cs_new_protected:Nn \gpr_warning:nn
{
\msg_warning:nnee { genealogy-profiles } { #1 } { #2 } { \the\inputlineno }
@@ -182,9 +258,6 @@
% Extensions to expl3 library
%
-\prg_generate_conditional_variant:Nnn \tl_if_blank:n
- { v, V } { F }
-
\prg_generate_conditional_variant:Nnn \property_if_recorded:nn
{ en } { T, TF }
@@ -197,9 +270,9 @@
\seq_use:Nn \l__gpr_floruit_years_seq {,}
}
-\tl_clear_new:N \l__gpr_fullname_raw_tl
+\tl_clear_new:N \l__gpr_full_name_raw_tl
\property_new:nnnn { raw-name } { now } { \c_novalue_tl } {
- \tl_use:N \l__gpr_fullname_raw_tl
+ \tl_use:N \l__gpr_full_name_raw_tl
}
\prop_clear_new:N \g__gpr_name_to_id_prop % saved at end, loaded into _active at start
@@ -212,17 +285,15 @@
% Names
%
-\tl_const:Ne \c_gpr_underscore_tl { \char_generate:nn { `_ } { 8 } }
-
\cs_new_protected:Nn \gpr_name_handler:n
{
- \tl_set:Nn \l__gpr_fullname_tl {#1}
- \tl_replace_all:NVn \l__gpr_fullname_tl \c_gpr_underscore_tl { ~ }
+ \tl_set:Nn \l__gpr_full_name_tl {#1}
+ \regex_replace_all:nnN { \s*_\s* } { \ } \l__gpr_full_name_tl
\seq_set_split:Nnn \l_tmpa_seq {~} {#1}
\seq_map_indexed_inline:Nn \g__gpr_name_part_order_seq {
\tl_set:Ne \l_tmpa_tl { \seq_item:Nn \l_tmpa_seq {##1} }
- \tl_replace_all:NVn \l_tmpa_tl \c_gpr_underscore_tl { ~ }
+ \regex_replace_all:nnN { \s*_\s* } { \ } \l_tmpa_tl
\tl_if_blank:VTF \l_tmpa_tl {
\tl_clear:c { l__gpr_##2_tl }
} {
@@ -244,19 +315,19 @@
\cs_new_protected:Nn \gpr_map_name_to_id:Nnn
{
% check if name already has an associated id
- \prop_get:NVNTF #1 \l__gpr_fullname_raw_tl \l_tmpb_tl
+ \prop_get:NVNTF #1 \l__gpr_full_name_raw_tl \l_tmpb_tl
{
% mark name ambiguous if already reserved
\tl_if_eq:NNF \l__gpr_id_tl \l_tmpb_tl
{
\msg_note:nne { genealogy-profiles } { ambiguous-rawname }
- { \tl_use:N \l__gpr_fullname_raw_tl }
- \prop_gput:NVn #1 \l__gpr_fullname_raw_tl {_AMBIGUOUS_}
+ { \tl_use:N \l__gpr_full_name_raw_tl }
+ \prop_gput:NVn #1 \l__gpr_full_name_raw_tl {_AMBIGUOUS_}
}
}
{
% otherwise save raw name -> id
- \prop_gput:NVV #1 \l__gpr_fullname_raw_tl \l__gpr_id_tl
+ \prop_gput:NVV #1 \l__gpr_full_name_raw_tl \l__gpr_id_tl
}
}
\cs_generate_variant:Nn \gpr_map_name_to_id:Nnn {
@@ -371,6 +442,8 @@
\prop_map_inline:Nn \g__gpr_references_prop {
\gpr_check_backrefs:nn {##1} {##2}
}
+ \msg_note:nne { genealogy-profiles } { profile-count }
+ { \seq_count:N \g__gpr_used_profile_ids_seq }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -385,29 +458,99 @@
}
}
\cs_generate_variant:Nn \gpr_add_to_named_index:nnN {
- VVN, VeN
+ VVN, VeN, vVN
}
-\cs_new:Nn \gpr_build_index_entry:Nnnn {
- \seq_clear:N \l_tmpa_seq
- \clist_map_inline:nn {#2} {
- \tl_if_blank:vF { l__gpr_##1_tl } {
- \seq_put_right:Nv \l_tmpa_seq { l__gpr_##1_tl }
+\cs_new_protected:Nn \gpr_get_name_parts:NNN
+{
+ \seq_clear:N #1
+ \seq_map_inline:Nn #2 {
+ \tl_if_empty:cF { l__gpr_##1_tl } {
+ \bool_if:NTF #3 {
+ \seq_put_right:Ne #1 {
+ \use:c
+ { \tl_use:c { l__gpr_##1_cmd_tl } Style }
+ { \tl_use:c { l__gpr_##1_tl } }
+ }
+ } {
+ \seq_put_right:Nv #1 { l__gpr_##1_tl }
+ }
}
}
+}
+\cs_generate_variant:Nn \gpr_get_name_parts:NNN {
+ NcN
+}
+
+
+\cs_new:Nn \gpr_build_index_entry:nnN {
+ \tl_if_empty:cF { l__gpr_#1_tl } {
+ % build before/after seqs if not defined
+ \seq_if_empty:cT { l__gpr_#1_index_before_seq } {
+ \tl_set:Nn \l_tmpa_tl { l__gpr_#1_index_after_seq }
+ \seq_map_inline:Nn \g__gpr_name_part_order_seq {
+ \tl_if_eq:nnT { #1 } { ##1 } {
+ \tl_set:Nn \l_tmpa_tl { l__gpr_#1_index_before_seq }
+ }
+ \seq_put_right:cn { \tl_use:N \l_tmpa_tl } { ##1 }
+ }
+ }
- \seq_clear:N \l_tmpb_seq
- \clist_map_inline:nn {#3} {
- \tl_if_blank:vF { l__gpr_##1_tl } {
- \seq_put_right:Nv \l_tmpb_seq { l__gpr_##1_tl }
+ \gpr_get_name_parts:NcN \l_tmpa_seq { l__gpr_#1_index_before_seq } \c_false_bool
+ \tl_set:Ne \l_tmpa_tl {
+ \seq_use:Nn \l_tmpa_seq {~}
+ }
+ \bool_if:NTF \l__gpr_nest_index_entries_bool {
+ % nested entries
+ \bool_if:NT \l__gpr_use_styles_in_index_bool {
+ \gpr_get_name_parts:NcN \l_tmpb_seq { l__gpr_#1_index_before_seq } \c_true_bool
+ \tl_put_right:Ne \l_tmpa_tl { @ \seq_use:Nn \l_tmpb_seq {~} }
+ }
+
+ \gpr_get_name_parts:NcN \l_tmpa_seq { l__gpr_#1_index_after_seq } \c_false_bool
+ \tl_put_right:Ne \l_tmpa_tl {
+ !
+ \seq_use:Nn \l_tmpa_seq {~}
+ \bool_if:NT \l__gpr_id_in_index_entries_bool { ~ (#2) }
+ }
+ \bool_if:NT \l__gpr_use_styles_in_index_bool {
+ \gpr_get_name_parts:NcN \l_tmpb_seq { l__gpr_#1_index_after_seq } \c_true_bool
+ \tl_put_right:Ne \l_tmpa_tl {
+ @
+ \seq_use:Nn \l_tmpb_seq {~}
+ \bool_if:NT \l__gpr_id_in_index_entries_bool { ~ (\gprIDStyle{#2}) }
+ }
+ }
+ } {
+ % un-nested entries
+
+ % we only use a comma if there is an after seq
+ \int_compare:nNnTF { \seq_count:c { l__gpr_#1_index_after_seq } } = { 0 } {
+ \tl_set:Nn \l_tmpb_tl { }
+ } {
+ \tl_set:Nn \l_tmpb_tl { ,~ }
+ }
+
+ \gpr_get_name_parts:NcN \l_tmpb_seq { l__gpr_#1_index_after_seq } \c_false_bool
+ \tl_put_right:Ne \l_tmpa_tl {
+ \tl_use:N \l_tmpb_tl
+ \seq_use:Nn \l_tmpb_seq {~}
+ \bool_if:NT \l__gpr_id_in_index_entries_bool { ~ (#2) }
+ }
+ \bool_if:NT \l__gpr_use_styles_in_index_bool {
+ \gpr_get_name_parts:NcN \l_tmpa_seq { l__gpr_#1_index_before_seq } \c_true_bool
+ \gpr_get_name_parts:NcN \l_tmpb_seq { l__gpr_#1_index_after_seq } \c_true_bool
+ \tl_put_right:Ne \l_tmpa_tl {
+ @
+ \seq_use:Nn \l_tmpa_seq {~}
+ \tl_use:N \l_tmpb_tl
+ \seq_use:Nn \l_tmpb_seq {~}
+ \bool_if:NT \l__gpr_id_in_index_entries_bool { ~ (\gprIDStyle{#2}) }
+ }
+ }
}
- }
- \tl_set:Ne #1 {
- \seq_use:Nn \l_tmpa_seq {~}
- \bool_if:NTF \l__gpr_nest_index_entries_bool { ! } { ,~ }
- \seq_use:Nn \l_tmpb_seq {~}
- \bool_if:NT \l__gpr_id_in_index_entries_bool { ~ (#4) }
+ \gpr_add_to_named_index:vVN { l__gpr_#1_index_tl } \l_tmpa_tl #3
}
}
@@ -416,49 +559,33 @@
\tl_if_blank:VF \l__gpr_id_index_tl {
\tl_if_novalue:nF {#1} {
\gpr_add_to_named_index:VeN \l__gpr_id_index_tl
- { #1 ~ \tl_use:N \l__gpr_fullname_tl }
+ {
+ #1 ~ \tl_use:N \l__gpr_full_name_tl
+ \bool_if:NT \l__gpr_use_styles_in_index_bool {
+ @ \gprIDStyle{#1} ~ \tl_use:N \l__gpr_styled_name_tl
+ }
+ }
#2
}
}
- \tl_if_blank:VF \l__gpr_fullname_index_tl {
- \gpr_add_to_named_index:VVN
- \l__gpr_fullname_index_tl
+ \tl_if_blank:VF \l__gpr_full_name_index_tl {
+ \gpr_add_to_named_index:VeN
+ \l__gpr_full_name_index_tl
{
- \tl_use:N \l__gpr_fullname_tl
- \bool_if:NT \l__gpr_id_in_index_entries_bool { ~ (\tl_use:N #1) }
+ \bool_if:NTF \l__gpr_use_styles_in_index_bool {
+ \tl_use:N \l__gpr_styled_name_tl
+ } {
+ \tl_use:N \l__gpr_full_name_tl
+ }
+ \bool_if:NT \l__gpr_id_in_index_entries_bool { ~ (\gprIDStyle{\tl_use:N #1}) }
}
#2
}
- \tl_if_blank:VF \l__gpr_patronymic_index_tl {
- \tl_if_blank:VF \l__gpr_patronymic_tl {
- \gpr_build_index_entry:Nnnn \l_tmpa_tl
- { patronymic, surname, byname }
- { givenname }
- { #1 }
-
- \gpr_add_to_named_index:VVN \l__gpr_patronymic_index_tl \l_tmpa_tl #2
- }
- }
- \tl_if_blank:VF \l__gpr_surname_index_tl {
- \tl_if_blank:VF \l__gpr_surname_tl {
- \gpr_build_index_entry:Nnnn \l_tmpa_tl
- { surname, byname }
- { givenname, patronymic }
- { #1 }
-
- \gpr_add_to_named_index:VVN \l__gpr_surname_index_tl \l_tmpa_tl #2
- }
- }
- \tl_if_blank:VF \l__gpr_byname_index_tl {
- \tl_if_blank:VF \l__gpr_byname_tl {
- \gpr_build_index_entry:Nnnn \l_tmpa_tl
- { byname }
- { givenname, patronymic, surname }
- { #1 }
-
- \gpr_add_to_named_index:VVN \l__gpr_byname_index_tl \l_tmpa_tl #2
+ \seq_map_inline:Nn \g__gpr_name_part_order_seq {
+ \tl_if_empty:cF { l__gpr_##1_index_tl } {
+ \gpr_build_index_entry:nnN { ##1 } { #1 } #2
}
}
}
@@ -475,12 +602,11 @@
\seq_clear_new:N \l__gpr_styled_name_seq
\seq_map_inline:Nn \g__gpr_name_part_order_seq {
- \tl_if_blank:vF { l__gpr_##1_tl } {
- \seq_put_right:Nn \l__gpr_styled_name_seq {
- \group_begin:
- \tl_use:c { l__gpr_##1_style_tl }
- \tl_use:c { l__gpr_##1_tl }
- \group_end:
+ \tl_if_empty:cF { l__gpr_##1_tl } {
+ \seq_put_right:Ne \l__gpr_styled_name_seq {
+ \use:c
+ { \tl_use:c { l__gpr_##1_cmd_tl } Style }
+ { \tl_use:c { l__gpr_##1_tl } }
}
}
}
@@ -488,6 +614,17 @@
\tl_set:Nn #1 { \seq_use:Nn \l__gpr_styled_name_seq {~} }
}
+\cs_new_protected:Nn \gpr_name_part_style:nn
+{
+ \group_begin:
+ \tl_use:c { l__gpr_#1_style_tl }
+ #2
+ \group_end:
+}
+\cs_generate_variant:Nn \gpr_name_part_style:nn {
+ nv, nV
+}
+
\cs_new_protected:Nn \gpr_format_floruit:N
{
\int_compare:nNnTF { \seq_count:N \l__gpr_floruit_years_seq } = {1}
@@ -530,8 +667,8 @@
{
\hyperlink{ \property_ref:nn { gpr/#1/target } { target } } {
\gpr__reference_style_handler:nnn {
+ % render styled #3 only if present, otherwise use #2
\tl_if_blank:nTF { #3 } { #2 } {
- % render styled #3 if present
\group_begin:
\gpr_name_handler:n {#3}
\tl_use:N \l__gpr_styled_name_tl
@@ -547,13 +684,16 @@
}
}
}
+ \bool_if:NF #4 {
+ \gpr_add_to_indexes:nN { #1 } \c_false_bool
+ }
}
{
\gpr_warning:nn { unknown-reference-id } { #1 }
- \gpr__unknown_reference_handler:nn {#2} { unknown~id: ~ #1 }
- }
- \bool_if:NF #4 {
- \gpr_add_to_indexes:nN { #1 } \c_false_bool
+ \gpr__unknown_reference_handler:nn { #2 } { unknown~id: ~ #1 }
+ \bool_if:NF #4 {
+ \gpr_add_to_indexes:nN { unknown~id: ~ #1 } \c_false_bool
+ }
}
\gpr_save_reference:Vn \l__gpr_id_tl { #1 }
}
@@ -565,14 +705,24 @@
% genealogytree package integration
%
-\cs_new_protected:Nn \gpr_set_genealogytree_keys:n
+\cs_new_protected:Nn \gpr_set_gtr_keys:n
+{
+ \gtrset{ #1 }
+}
+
+\cs_new_protected:Nn \gpr_set_gtr_database_keys:n
{
- \gtrset{ database/.cd, #1 }
+ \gpr_set_gtr_keys:n{ database/.cd, #1 }
}
-\cs_generate_variant:Nn \gpr_set_genealogytree_keys:n {
+\cs_generate_variant:Nn \gpr_set_gtr_database_keys:n {
V
}
+\cs_new_protected:Nn \gpr_print_gtr_database:
+{
+ \gtrPrintDatabase
+}
+
\prg_new_protected_conditional:Nnn \gpr_if_lifespan_defined: {T,F,TF}
{
\bool_if:nTF {
@@ -600,12 +750,23 @@
\end{gtrprintlist}%
\gtr@print@infolist%
}
-\gtrset{database~format=gtr_db_format}
+\gpr_set_gtr_keys:n { database~format = gtr_db_format }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% User commands
+% Environments
%
+\cs_new_protected:Nn \gpr_create_profile_macro:nnn
+{
+ \exp_args:Nc \DeclareDocumentCommand { #1 } { s }
+ {
+ \IfBooleanTF { ##1 } { #2 } { #3 }
+ }
+}
+\cs_generate_variant:Nn \gpr_create_profile_macro:nnn {
+ vvn
+}
+
\NewDocumentEnvironment { gprProfile* } { m O{} } {
\bool_if:NT \l__gpr_debug_log_bool {
\tl_log:e {\the\inputlineno}
@@ -614,22 +775,22 @@
\group_begin:
\keys_set:nn { genealogy-profiles / profile } { #1, life~events={#2} }
- \tl_if_empty:NTF \l__gpr_fullname_tl {
+ \tl_if_empty:NTF \l__gpr_full_name_tl {
% if no full name supplied, build one from given parts
\seq_clear:N \l_tmpa_seq
\seq_map_inline:Nn \g__gpr_name_part_order_seq {
- \tl_if_blank:vF { l__gpr_##1_tl } {
+ \tl_if_empty:cF { l__gpr_##1_tl } {
\seq_put_right:Nv \l_tmpa_seq { l__gpr_##1_tl }
}
}
- \tl_set:Ne \l__gpr_fullname_tl { \seq_use:Nn \l_tmpa_seq {~} }
- \tl_set_eq:NN \l__gpr_fullname_raw_tl \l__gpr_fullname_tl
+ \tl_set:Ne \l__gpr_full_name_tl { \seq_use:Nn \l_tmpa_seq {~} }
+ \tl_set_eq:NN \l__gpr_full_name_raw_tl \l__gpr_full_name_tl
\tl_clear_new:N \l__gpr_styled_name_tl
\gpr_style_name:N \l__gpr_styled_name_tl
} {
% otherwise use full name to split into parts
- \tl_set_eq:NN \l__gpr_fullname_raw_tl \l__gpr_fullname_tl
- \gpr_name_handler:V \l__gpr_fullname_tl
+ \tl_set_eq:NN \l__gpr_full_name_raw_tl \l__gpr_full_name_tl
+ \gpr_name_handler:V \l__gpr_full_name_tl
}
% ensure unique id
@@ -637,7 +798,7 @@
\bool_if:NTF \l__gpr_autoid_bool {
\gpr_generate_unique_id:
} {
- \gpr_error:nn { missing-id } { \l__gpr_fullname_tl }
+ \gpr_error:nn { missing-id } { \l__gpr_full_name_tl }
}
} {
\seq_if_in:NVT \g__gpr_used_profile_ids_seq \l__gpr_id_tl {
@@ -645,8 +806,8 @@
}
\seq_gput_right:NV \g__gpr_used_profile_ids_seq \l__gpr_id_tl
}
- \gpr_map_name_to_id:NVV \g__gpr_name_to_id_prop \l__gpr_fullname_raw_tl \l__gpr_id_tl
- \gpr_map_name_to_id:NVV \g__gpr_name_to_id_active_prop \l__gpr_fullname_raw_tl \l__gpr_id_tl
+ \gpr_map_name_to_id:NVV \g__gpr_name_to_id_prop \l__gpr_full_name_raw_tl \l__gpr_id_tl
+ \gpr_map_name_to_id:NVV \g__gpr_name_to_id_active_prop \l__gpr_full_name_raw_tl \l__gpr_id_tl
% store raw name in aux
\property_record:ee { gpr/\tl_use:N \l__gpr_id_tl/name } { raw-name }
@@ -668,14 +829,25 @@
\seq_clear_new:N \l__gpr_floruit_years_seq
% placeholders for id and names
- \cs_set:Npe \gprID { \tl_use:N \l__gpr_id_tl }
- \cs_set:Npe \gprStyledName { \tl_use:N \l__gpr_styled_name_tl }
- \cs_set:Npe \gprFullName { \tl_use:N \l__gpr_fullname_tl }
- \cs_set:Npe \gprGivenName { \tl_use:N \l__gpr_givenname_tl }
- \cs_set:Npe \gprPatronymic { \tl_use:N \l__gpr_patronymic_tl }
- \cs_set:Npe \gprSurname { \tl_use:N \l__gpr_surname_tl }
- \cs_set:Npe \gprByname { \tl_use:N \l__gpr_byname_tl }
- \cs_set:Npe \gprHeader { \tl_use:N \l__gpr_header_format_tl }
+ \cs_set:Npn \gprHeader { \tl_use:N \l__gpr_header_format_tl }
+ \gpr_create_profile_macro:nnn { gprID } {
+ \tl_use:N \l__gpr_id_tl
+ } {
+ \gpr_name_part_style:nV { id } \l__gpr_id_tl
+ }
+ \gpr_create_profile_macro:nnn { gprFullName } {
+ \tl_use:N \l__gpr_full_name_tl
+ } {
+ \tl_use:N \l__gpr_styled_name_tl
+ }
+ % name parts
+ \seq_map_inline:Nn \g__gpr_name_part_order_seq {
+ \gpr_create_profile_macro:vvn { l__gpr_##1_cmd_tl }
+ { l__gpr_##1_tl }
+ {
+ \gpr_name_part_style:nv { ##1 } { l__gpr_##1_tl }
+ }
+ }
% set hyperref target just before typesetting
\MakeLinkTarget*{ gpr/\tl_use:N \l__gpr_id_tl/target }
@@ -701,12 +873,18 @@
\tl_if_empty:NF \l__gpr_life_events_tl {
\tl_use:N \l__gpr_begin_life_events_tl
- \gpr_set_genealogytree_keys:V \l__gpr_life_events_tl
- \gtrPrintDatabase
+ \gpr_set_gtr_database_keys:V \l__gpr_life_events_tl
+ \gpr_print_gtr_database:
\tl_use:N \l__gpr_end_life_events_tl
}
+
+ % begin content
+ \tl_use:N \l__gpr_begin_content_tl
}{
+ % end content
+ \tl_use:N \l__gpr_end_content_tl
+
% end typesetting
\tl_use:N \l__gpr_end_profile_tl
@@ -722,11 +900,15 @@
}
\NewDocumentEnvironment { gprProfile } { O{} m O{} } {
- \begin{gprProfile*}{fullname={#2}, #1}[#3]
+ \begin{gprProfile*}{full~name={#2}, #1}[#3]
}{
\end{gprProfile*}
}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Reference and name macros
+%
+
\cs_new_protected:Nn \gpr_cmd_ref:Nnn
{
\group_begin:
@@ -738,11 +920,11 @@
{
\str_if_eq:VnTF \l_tmpa_tl {_AMBIGUOUS_}
{
- \gpr_warning:nn { ambiguous-reference } { \l__gpr_fullname_tl }
+ \gpr_warning:nn { ambiguous-reference } { \l__gpr_full_name_tl }
\gpr__unknown_reference_handler:Vn \l__gpr_styled_name_tl
{ ambiguous }
\bool_if:NT \l__gpr_include_ambiguous_in_index_bool {
- \gpr_add_to_indexes:nN { ambiguous } \c_false_bool
+ \gpr_add_to_indexes:nN { ambiguous~name } \c_false_bool
}
}
{
@@ -753,7 +935,7 @@
\gpr_warning:nn { unknown-reference-name } { #3 }
\gpr__unknown_reference_handler:Vn \l__gpr_styled_name_tl { unknown~name }
\bool_if:NT \l__gpr_include_unknown_in_index_bool {
- \gpr_add_to_indexes:nN { unknown } \c_false_bool
+ \gpr_add_to_indexes:nN { unknown~name } \c_false_bool
}
}
}
@@ -790,6 +972,9 @@
\group_end:
}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Floruit macros
+%
\cs_new_protected:Nn \gpr_cmd_year:n
{
@@ -802,6 +987,10 @@
e
}
\NewDocumentCommand { \gprYear } { s m } {
+ \tl_if_empty:NT \l__gpr_id_tl {
+ \gpr_error:nn { outside-profile } { gprYear }
+ }
+
\gpr_cmd_year:e {#2}
\bool_if:NF { #1 } { #2 }
}
@@ -832,10 +1021,34 @@
e
}
\NewDocumentCommand { \gprYears } { s m } {
+ \tl_if_empty:NT \l__gpr_id_tl (
+ \gpr_error:nn { outside-profile } { gprYears }
+ )
+
\gpr_cmd_years:e {#2}
\bool_if:NF { #1 } { #2 }
}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Deprecations
+%
+
+\cs_new:Npn \gprStyledName { \gprFullName }
+
+\keys_define:nn { genealogy-profiles }
+{
+ givenname~style .tl_set:c = { l__gpr_given~name_style_tl } ,
+ givenname~index .tl_set:c = { l__gpr_given~name_index_tl } ,
+ fullname~index .tl_set:N = \l__gpr_full_name_index_tl ,
+}
+\keys_define:nn { genealogy-profiles / profile } {
+ givenname .tl_set:c = { l__gpr_given~name_tl } ,
+ fullname .tl_set:N = \l__gpr_full_name_tl ,
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Experimental!
+%
\NewDocumentCommand { \gprSpouse } { s o m o } {
\gtrsymMarried{} ~
diff --git a/Master/texmf-dist/tex/latex/gentium-otf/gentium-otf.sty b/Master/texmf-dist/tex/latex/gentium-otf/gentium-otf.sty
new file mode 100644
index 00000000000..f4250afcbe1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/gentium-otf/gentium-otf.sty
@@ -0,0 +1,132 @@
+%% $Id: gentium-otf.sty 1058 2025-01-08 08:02:06Z herbert $
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.3 or, at your option, any later version.
+%%
+%
+\ProvidesPackage{gentium-otf}[%
+ 2025/01/04 v. 0.01 (Herbert Voss) Supports gentium fonts for lualatex and xelatex.]
+
+\RequirePackage{iftex,xkeyval,textcomp,fontspec}
+
+\def\@gentium@book{}
+\DeclareOptionX{book}{\def\@gentium@book{Book}}
+
+\newcommand*\gentiumRM@scale{1}
+\DeclareOptionX{ScaleRM}{\renewcommand*{\gentiumRM@scale}{#1}}
+
+\newcommand*\gentium@math{}
+\newcommand*\gentium@math@features{}
+\DeclareOptionX{math}{\renewcommand*{\gentium@math}{#1}}
+\DeclareOptionX{mathFeatures}{\renewcommand*{\gentium@math@features}{#1}}
+
+\newcommand*\gentium@sans{}
+\newcommand*\gentium@sans@features{}
+\DeclareOptionX{sans}{\renewcommand*{\gentium@sans}{#1}}
+\DeclareOptionX{sansFeatures}{\renewcommand*{\gentium@sans@features}{#1}}
+
+\newcommand*\gentium@mono{}
+\newcommand*\gentium@mono@features{}
+\DeclareOptionX{mono}{\renewcommand*{\gentium@mono}{#1}}
+\DeclareOptionX{monoFeatures}{\renewcommand*{\gentium@mono@features}{#1}}
+
+\def\gentium@defaultfeatures{}
+\DeclareOptionX{defaultfeatures}{\def\gentium@defaultfeatures{#1}}
+
+\ProcessOptionsX\relax
+
+\ifxetex\XeTeXtracingfonts=1\fi
+\defaultfontfeatures[\rmfamily]{
+ Ligatures = TeX ,
+ SmallCapsFeatures={Letters=SmallCaps},% \ifluatex,Renderer=Basic\fi},
+ \gentium@defaultfeatures
+}
+
+%------------------------ filenames start -------------------------
+% 1. GentiumBookPlus-Bold.ttf
+% 2. GentiumBookPlus-BoldItalic.ttf
+% 3. GentiumBookPlus-Italic.ttf
+% 4. GentiumBookPlus-Regular.ttf
+% 5. GentiumPlus-Bold.ttf
+% 6. GentiumPlus-BoldItalic.ttf
+% 7. GentiumPlus-Italic.ttf
+% 8. GentiumPlus-Regular.ttf
+
+\edef\gentium@main@font{Gentium\@gentium@book Plus}% GentiumPlus or GentiumBookPlus
+
+\if$\gentium@math$\else
+ \RequirePackage{unicode-math}
+ \expandafter\setmathfont\expandafter[\gentium@math@features]{\gentium@math}
+\fi
+
+\if$\gentium@sans$\else
+ \expandafter\setsansfont\expandafter[\gentium@sans@features]{\gentium@sans}
+\fi
+
+\if$\gentium@mono$\else
+ \expandafter\setmonofont\expandafter[\gentium@mono@features]{\gentium@mono}
+\fi
+
+\setmainfont{\gentium@main@font}[
+ Scale = \gentiumRM@scale ,
+ UprightFont = *-Regular,
+ ItalicFont = *-Italic,
+ ItalicFeatures = { SmallCapsFont = *-Italic },
+ SlantedFont = *-Regular,
+ SlantedFeatures= {FakeSlant=0.2},
+ BoldFont = *-Bold,
+ BoldFeatures = { SmallCapsFont = *-Bold },
+ BoldItalicFont = *-BoldItalic,
+ BoldItalicFeatures = { SmallCapsFont = *-BoldItalic },
+ BoldSlantedFont= *-Bold,
+ BoldSlantedFeatures= {FakeSlant=0.2, SmallCapsFont = *-bold },
+ SmallCapsFont = *-Regular,
+% SmallCapsFeatures={RawFeature=+smcp},
+ SmallCapsFeatures={Letters=SmallCaps},
+ Extension = .ttf
+]
+
+\def\Lctosc#1{{\addfontfeature{RawFeature=+c2sc}#1}}
+\def\LCtoSC{\@ifnextchar-\L@CtoSC\L@@CtoSC}
+\def\L@CtoSC-{\addfontfeature{RawFeature=-c2sc}}
+\def\L@@CtoSC#1{\addfontfeature{RawFeature=+c2sc}\ifx#1+\else#1\fi}
+
+\def\Lctosmcp#1{{\addfontfeature{RawFeature={+c2sc,+smcp}}#1}}
+\def\LCtoSMCP{\@ifnextchar-\L@CtoSMCP\L@@CtoSMCP}
+\def\L@CtoSMCP-{\addfontfeature{RawFeature={-c2sc,-smcp}}}
+\def\L@@CtoSMCP#1{\addfontfeature{RawFeature={+c2sc,+smcp}}\ifx#1+\else#1\fi}
+
+\def\Lliga#1{{\addfontfeature{RawFeature=+liga}#1}}
+\def\LLIGA{\@ifnextchar-\L@LIGA\L@@LIGA}
+\def\L@LIGA-{\addfontfeature{RawFeature=-liga}}
+\def\L@@LIGA#1{\addfontfeature{RawFeature=+liga}\ifx#1+\else#1\fi}
+
+\def\Lss#1#2#3{{\addfontfeature{RawFeature=+ss#1#2}#3}}
+\def\LSS#1#2{\addfontfeature{RawFeature=+ss#1#2}}
+
+\def\Lcv{\@ifnextchar[\Lcv@i{\Lcv@i[1]}}
+\def\Lcv@i[#1]#2#3#4{{\addfontfeature{RawFeature={+cv#2#3=#1}}#4}}
+\def\LCV#1#2{\@ifnextchar[\LCV@i{\LCV@i[1]}}
+\def\LCV[#1]#2#3{\addfontfeature{RawFeature={+cv#2#3=#1}}}
+
+\def\Llang#1{\addfontfeature{Script=Cyrillic,Language=Serbian}}
+
+\def\Lsup#1{{\addfontfeature{RawFeature=+sups}#1}}
+\def\LSUP{\@ifnextchar-\L@SUP\L@@SUP}
+\def\L@SUP-{\addfontfeature{RawFeature=-sups}}
+\def\L@@SUP#1{\addfontfeature{RawFeature=+sups}\ifx#1+\else#1\fi}
+
+\def\Lsub#1{{\addfontfeature{RawFeature=+subs}#1}}
+\def\LSUB{\@ifnextchar-\L@SUB\L@@SUB}
+\def\L@SUB-{\addfontfeature{RawFeature=-subs}}
+\def\L@@SUB#1{\addfontfeature{RawFeature=+subs}\ifx#1+\else#1\fi}
+
+\def\Lfrac#1{{\addfontfeature{RawFeature=+frac}#1}}
+\def\LFRAC{\@ifnextchar-\L@FRAC\L@@FRAC}
+\def\L@FRAC-{\addfontfeature{RawFeature=-frac}}
+\def\L@@FRAC#1{\addfontfeature{RawFeature=+frac}\ifx#1+\else#1\fi}
+
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/gentium.sty b/Master/texmf-dist/tex/latex/gentium-tug/gentium.sty
deleted file mode 100644
index 149866f8d8a..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/gentium.sty
+++ /dev/null
@@ -1,16 +0,0 @@
-% This file is part of the Gentium package for TeX.
-% It is licensed under the Expat License, see doc//README for details.
-%
-\ProvidesPackage{gentium} [2022/05/09 Style file for gentium.]
-%
-% Options:
-% [scaled=0.9] --> Scale = 0.9
-%
-\RequirePackage{xkeyval}
-\newcommand*{\gentium@scale}{1}
-\DeclareOptionX{scaled}{\renewcommand*{\gentium@scale}{#1}}
-\ProcessOptionsX\relax
-
-\renewcommand{\rmdefault}{gentium}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/gentiumbook.sty b/Master/texmf-dist/tex/latex/gentium-tug/gentiumbook.sty
deleted file mode 100644
index b6e126313eb..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/gentiumbook.sty
+++ /dev/null
@@ -1,16 +0,0 @@
-% This file is part of the Gentium package for TeX.
-% It is licensed under the Expat License, see doc//README for details.
-%
-\ProvidesPackage{gentiumbook} [2022/05/09 Style file for gentiumbook.]
-%
-% Options:
-% [scaled=0.9] --> Scale = 0.9
-%
-\RequirePackage{xkeyval}
-\newcommand*{\gentiumbook@scale}{1}
-\DeclareOptionX{scaled}{\renewcommand*{\gentiumbook@scale}{#1}}
-\ProcessOptionsX\relax
-
-\renewcommand{\rmdefault}{gentiumbook}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/l7xgentium.fd b/Master/texmf-dist/tex/latex/gentium-tug/l7xgentium.fd
deleted file mode 100644
index 41c59d1ea59..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/l7xgentium.fd
+++ /dev/null
@@ -1,90 +0,0 @@
-\ProvidesFile{l7xgentium.fd}
- [2022/05/30 Font definitions for gentium.]
-
-\expandafter\ifx\csname gentium@scale\endcsname\relax
- \let\gentium@@scale\@empty
-\else
- \edef\gentium@@scale{s*[\csname gentium@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{L7x}{gentium}{}
-
-\DeclareFontShape{L7x}{gentium}{m}{n}{
- <-> \gentium@@scale l7x-gentiumplus-regular
-}{}
-
-\DeclareFontShape{L7x}{gentium}{m}{it}{
- <-> \gentium@@scale l7x-gentiumplus-italic
-}{}
-
-\DeclareFontShape{L7x}{gentium}{b}{n}{
- <-> \gentium@@scale l7x-gentiumplus-bold
-}{}
-
-\DeclareFontShape{L7x}{gentium}{b}{it}{
- <-> \gentium@@scale l7x-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{L7x}{gentium}{sb}{n}{
- <-> \gentium@@scale l7x-gentiumbook-regular
-}{}
-
-\DeclareFontShape{L7x}{gentium}{sb}{it}{
- <-> \gentium@@scale l7x-gentiumbook-italic
-}{}
-
-\DeclareFontShape{L7x}{gentium}{eb}{n}{
- <-> \gentium@@scale l7x-gentiumbook-bold
-}{}
-
-\DeclareFontShape{L7x}{gentium}{eb}{it}{
- <-> \gentium@@scale l7x-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{L7x}{gentium}{m}{sc}{
- <-> \gentium@@scale l7x-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{L7x}{gentium}{m}{scit}{
- <-> \gentium@@scale l7x-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{L7x}{gentium}{b}{sc}{
- <-> \gentium@@scale l7x-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{L7x}{gentium}{b}{scit}{
- <-> \gentium@@scale l7x-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{L7x}{gentium}{sb}{sc}{
- <-> \gentium@@scale l7x-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{L7x}{gentium}{sb}{scit}{
- <-> \gentium@@scale l7x-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{L7x}{gentium}{eb}{sc}{
- <-> \gentium@@scale l7x-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{L7x}{gentium}{eb}{scit}{
- <-> \gentium@@scale l7x-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{L7x}{gentium}{m}{sl}{<->ssub * gentium/m/it}{}
-\DeclareFontShape{L7x}{gentium}{b}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{L7x}{gentium}{bx}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{L7x}{gentium}{bx}{it}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{L7x}{gentium}{bx}{n}{<->ssub * gentium/b/n}{}
-\DeclareFontShape{L7x}{gentium}{sb}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{L7x}{gentium}{sbx}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{L7x}{gentium}{sbx}{it}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{L7x}{gentium}{sbx}{n}{<->ssub * gentium/sb/n}{}
-\DeclareFontShape{L7x}{gentium}{eb}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{L7x}{gentium}{ebx}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{L7x}{gentium}{ebx}{it}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{L7x}{gentium}{ebx}{n}{<->ssub * gentium/eb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/l7xgentiumbook.fd b/Master/texmf-dist/tex/latex/gentium-tug/l7xgentiumbook.fd
deleted file mode 100644
index 351972c61af..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/l7xgentiumbook.fd
+++ /dev/null
@@ -1,87 +0,0 @@
-\ProvidesFile{l7xgentiumbook.fd}
- [2022/05/30 Font definitions for gentiumbook.]
-
-\expandafter\ifx\csname gentiumbook@scale\endcsname\relax
- \let\gentiumbook@@scale\@empty
-\else
- \edef\gentiumbook@@scale{s*[\csname gentiumbook@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{L7x}{gentiumbook}{}
-
-\DeclareFontShape{L7x}{gentiumbook}{m}{n}{
- <-> \gentiumbook@@scale l7x-gentiumbook-regular
-}{}
-
-\DeclareFontShape{L7x}{gentiumbook}{m}{it}{
- <-> \gentiumbook@@scale l7x-gentiumbook-italic
-}{}
-
-\DeclareFontShape{L7x}{gentiumbook}{b}{n}{
- <-> \gentiumbook@@scale l7x-gentiumbook-bold
-}{}
-
-\DeclareFontShape{L7x}{gentiumbook}{b}{it}{
- <-> \gentiumbook@@scale l7x-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{L7x}{gentiumbook}{sl}{n}{
- <-> \gentiumbook@@scale l7x-gentiumplus-regular
-}{}
-
-\DeclareFontShape{L7x}{gentiumbook}{sl}{it}{
- <-> \gentiumbook@@scale l7x-gentiumplus-italic
-}{}
-
-\DeclareFontShape{L7x}{gentiumbook}{sb}{n}{
- <-> \gentiumbook@@scale l7x-gentiumplus-bold
-}{}
-
-\DeclareFontShape{L7x}{gentiumbook}{sb}{it}{
- <-> \gentiumbook@@scale l7x-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{L7x}{gentiumbook}{m}{sc}{
- <-> \gentiumbook@@scale l7x-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{L7x}{gentiumbook}{m}{scit}{
- <-> \gentiumbook@@scale l7x-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{L7x}{gentiumbook}{b}{sc}{
- <-> \gentiumbook@@scale l7x-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{L7x}{gentiumbook}{b}{scit}{
- <-> \gentiumbook@@scale l7x-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{L7x}{gentiumbook}{sl}{sc}{
- <-> \gentiumbook@@scale l7x-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{L7x}{gentiumbook}{sl}{scit}{
- <-> \gentiumbook@@scale l7x-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{L7x}{gentiumbook}{sb}{sc}{
- <-> \gentiumbook@@scale l7x-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{L7x}{gentiumbook}{sb}{scit}{
- <-> \gentiumbook@@scale l7x-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{L7x}{gentiumbook}{m}{sl}{<->ssub * gentiumbook/m/it}{}
-\DeclareFontShape{L7x}{gentiumbook}{b}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{L7x}{gentiumbook}{bx}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{L7x}{gentiumbook}{bx}{it}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{L7x}{gentiumbook}{bx}{n}{<->ssub * gentiumbook/b/n}{}
-\DeclareFontShape{L7x}{gentiumbook}{sl}{sl}{<->ssub * gentiumbook/sl/it}{}
-\DeclareFontShape{L7x}{gentiumbook}{sb}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{L7x}{gentiumbook}{sbx}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{L7x}{gentiumbook}{sbx}{it}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{L7x}{gentiumbook}{sbx}{n}{<->ssub * gentiumbook/sb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/lgrgentium.fd b/Master/texmf-dist/tex/latex/gentium-tug/lgrgentium.fd
deleted file mode 100644
index fd2caeae60f..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/lgrgentium.fd
+++ /dev/null
@@ -1,58 +0,0 @@
-\ProvidesFile{lgrgentium.fd}
- [2022/05/30 Font definitions for gentium.]
-
-\expandafter\ifx\csname gentium@scale\endcsname\relax
- \let\gentium@@scale\@empty
-\else
- \edef\gentium@@scale{s*[\csname gentium@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LGR}{gentium}{}
-
-\DeclareFontShape{LGR}{gentium}{m}{n}{
- <-> \gentium@@scale lgr-gentiumplus-regular
-}{}
-
-\DeclareFontShape{LGR}{gentium}{m}{it}{
- <-> \gentium@@scale lgr-gentiumplus-italic
-}{}
-
-\DeclareFontShape{LGR}{gentium}{b}{n}{
- <-> \gentium@@scale lgr-gentiumplus-bold
-}{}
-
-\DeclareFontShape{LGR}{gentium}{b}{it}{
- <-> \gentium@@scale lgr-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{LGR}{gentium}{sb}{n}{
- <-> \gentium@@scale lgr-gentiumbook-regular
-}{}
-
-\DeclareFontShape{LGR}{gentium}{sb}{it}{
- <-> \gentium@@scale lgr-gentiumbook-italic
-}{}
-
-\DeclareFontShape{LGR}{gentium}{eb}{n}{
- <-> \gentium@@scale lgr-gentiumbook-bold
-}{}
-
-\DeclareFontShape{LGR}{gentium}{eb}{it}{
- <-> \gentium@@scale lgr-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{LGR}{gentium}{m}{sl}{<->ssub * gentium/m/it}{}
-\DeclareFontShape{LGR}{gentium}{b}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{LGR}{gentium}{bx}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{LGR}{gentium}{bx}{it}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{LGR}{gentium}{bx}{n}{<->ssub * gentium/b/n}{}
-\DeclareFontShape{LGR}{gentium}{sb}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{LGR}{gentium}{sbx}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{LGR}{gentium}{sbx}{it}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{LGR}{gentium}{sbx}{n}{<->ssub * gentium/sb/n}{}
-\DeclareFontShape{LGR}{gentium}{eb}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{LGR}{gentium}{ebx}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{LGR}{gentium}{ebx}{it}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{LGR}{gentium}{ebx}{n}{<->ssub * gentium/eb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/lgrgentiumbook.fd b/Master/texmf-dist/tex/latex/gentium-tug/lgrgentiumbook.fd
deleted file mode 100644
index 9f40176617e..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/lgrgentiumbook.fd
+++ /dev/null
@@ -1,55 +0,0 @@
-\ProvidesFile{lgrgentiumbook.fd}
- [2022/05/30 Font definitions for gentiumbook.]
-
-\expandafter\ifx\csname gentiumbook@scale\endcsname\relax
- \let\gentiumbook@@scale\@empty
-\else
- \edef\gentiumbook@@scale{s*[\csname gentiumbook@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LGR}{gentiumbook}{}
-
-\DeclareFontShape{LGR}{gentiumbook}{m}{n}{
- <-> \gentiumbook@@scale lgr-gentiumbook-regular
-}{}
-
-\DeclareFontShape{LGR}{gentiumbook}{m}{it}{
- <-> \gentiumbook@@scale lgr-gentiumbook-italic
-}{}
-
-\DeclareFontShape{LGR}{gentiumbook}{b}{n}{
- <-> \gentiumbook@@scale lgr-gentiumbook-bold
-}{}
-
-\DeclareFontShape{LGR}{gentiumbook}{b}{it}{
- <-> \gentiumbook@@scale lgr-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{LGR}{gentiumbook}{sl}{n}{
- <-> \gentiumbook@@scale lgr-gentiumplus-regular
-}{}
-
-\DeclareFontShape{LGR}{gentiumbook}{sl}{it}{
- <-> \gentiumbook@@scale lgr-gentiumplus-italic
-}{}
-
-\DeclareFontShape{LGR}{gentiumbook}{sb}{n}{
- <-> \gentiumbook@@scale lgr-gentiumplus-bold
-}{}
-
-\DeclareFontShape{LGR}{gentiumbook}{sb}{it}{
- <-> \gentiumbook@@scale lgr-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{LGR}{gentiumbook}{m}{sl}{<->ssub * gentiumbook/m/it}{}
-\DeclareFontShape{LGR}{gentiumbook}{b}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{LGR}{gentiumbook}{bx}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{LGR}{gentiumbook}{bx}{it}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{LGR}{gentiumbook}{bx}{n}{<->ssub * gentiumbook/b/n}{}
-\DeclareFontShape{LGR}{gentiumbook}{sl}{sl}{<->ssub * gentiumbook/sl/it}{}
-\DeclareFontShape{LGR}{gentiumbook}{sb}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{LGR}{gentiumbook}{sbx}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{LGR}{gentiumbook}{sbx}{it}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{LGR}{gentiumbook}{sbx}{n}{<->ssub * gentiumbook/sb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/ly1gentium.fd b/Master/texmf-dist/tex/latex/gentium-tug/ly1gentium.fd
deleted file mode 100644
index 5eb60baf4c5..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/ly1gentium.fd
+++ /dev/null
@@ -1,90 +0,0 @@
-\ProvidesFile{ly1gentium.fd}
- [2022/05/30 Font definitions for gentium.]
-
-\expandafter\ifx\csname gentium@scale\endcsname\relax
- \let\gentium@@scale\@empty
-\else
- \edef\gentium@@scale{s*[\csname gentium@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LY1}{gentium}{}
-
-\DeclareFontShape{LY1}{gentium}{m}{n}{
- <-> \gentium@@scale texnansi-gentiumplus-regular
-}{}
-
-\DeclareFontShape{LY1}{gentium}{m}{it}{
- <-> \gentium@@scale texnansi-gentiumplus-italic
-}{}
-
-\DeclareFontShape{LY1}{gentium}{b}{n}{
- <-> \gentium@@scale texnansi-gentiumplus-bold
-}{}
-
-\DeclareFontShape{LY1}{gentium}{b}{it}{
- <-> \gentium@@scale texnansi-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{LY1}{gentium}{sb}{n}{
- <-> \gentium@@scale texnansi-gentiumbook-regular
-}{}
-
-\DeclareFontShape{LY1}{gentium}{sb}{it}{
- <-> \gentium@@scale texnansi-gentiumbook-italic
-}{}
-
-\DeclareFontShape{LY1}{gentium}{eb}{n}{
- <-> \gentium@@scale texnansi-gentiumbook-bold
-}{}
-
-\DeclareFontShape{LY1}{gentium}{eb}{it}{
- <-> \gentium@@scale texnansi-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{LY1}{gentium}{m}{sc}{
- <-> \gentium@@scale texnansi-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{LY1}{gentium}{m}{scit}{
- <-> \gentium@@scale texnansi-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{LY1}{gentium}{b}{sc}{
- <-> \gentium@@scale texnansi-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{LY1}{gentium}{b}{scit}{
- <-> \gentium@@scale texnansi-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{LY1}{gentium}{sb}{sc}{
- <-> \gentium@@scale texnansi-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{LY1}{gentium}{sb}{scit}{
- <-> \gentium@@scale texnansi-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{LY1}{gentium}{eb}{sc}{
- <-> \gentium@@scale texnansi-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{LY1}{gentium}{eb}{scit}{
- <-> \gentium@@scale texnansi-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{LY1}{gentium}{m}{sl}{<->ssub * gentium/m/it}{}
-\DeclareFontShape{LY1}{gentium}{b}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{LY1}{gentium}{bx}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{LY1}{gentium}{bx}{it}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{LY1}{gentium}{bx}{n}{<->ssub * gentium/b/n}{}
-\DeclareFontShape{LY1}{gentium}{sb}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{LY1}{gentium}{sbx}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{LY1}{gentium}{sbx}{it}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{LY1}{gentium}{sbx}{n}{<->ssub * gentium/sb/n}{}
-\DeclareFontShape{LY1}{gentium}{eb}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{LY1}{gentium}{ebx}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{LY1}{gentium}{ebx}{it}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{LY1}{gentium}{ebx}{n}{<->ssub * gentium/eb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/ly1gentiumbook.fd b/Master/texmf-dist/tex/latex/gentium-tug/ly1gentiumbook.fd
deleted file mode 100644
index 7d5a9926a44..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/ly1gentiumbook.fd
+++ /dev/null
@@ -1,87 +0,0 @@
-\ProvidesFile{ly1gentiumbook.fd}
- [2022/05/30 Font definitions for gentiumbook.]
-
-\expandafter\ifx\csname gentiumbook@scale\endcsname\relax
- \let\gentiumbook@@scale\@empty
-\else
- \edef\gentiumbook@@scale{s*[\csname gentiumbook@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LY1}{gentiumbook}{}
-
-\DeclareFontShape{LY1}{gentiumbook}{m}{n}{
- <-> \gentiumbook@@scale texnansi-gentiumbook-regular
-}{}
-
-\DeclareFontShape{LY1}{gentiumbook}{m}{it}{
- <-> \gentiumbook@@scale texnansi-gentiumbook-italic
-}{}
-
-\DeclareFontShape{LY1}{gentiumbook}{b}{n}{
- <-> \gentiumbook@@scale texnansi-gentiumbook-bold
-}{}
-
-\DeclareFontShape{LY1}{gentiumbook}{b}{it}{
- <-> \gentiumbook@@scale texnansi-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{LY1}{gentiumbook}{sl}{n}{
- <-> \gentiumbook@@scale texnansi-gentiumplus-regular
-}{}
-
-\DeclareFontShape{LY1}{gentiumbook}{sl}{it}{
- <-> \gentiumbook@@scale texnansi-gentiumplus-italic
-}{}
-
-\DeclareFontShape{LY1}{gentiumbook}{sb}{n}{
- <-> \gentiumbook@@scale texnansi-gentiumplus-bold
-}{}
-
-\DeclareFontShape{LY1}{gentiumbook}{sb}{it}{
- <-> \gentiumbook@@scale texnansi-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{LY1}{gentiumbook}{m}{sc}{
- <-> \gentiumbook@@scale texnansi-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{LY1}{gentiumbook}{m}{scit}{
- <-> \gentiumbook@@scale texnansi-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{LY1}{gentiumbook}{b}{sc}{
- <-> \gentiumbook@@scale texnansi-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{LY1}{gentiumbook}{b}{scit}{
- <-> \gentiumbook@@scale texnansi-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{LY1}{gentiumbook}{sl}{sc}{
- <-> \gentiumbook@@scale texnansi-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{LY1}{gentiumbook}{sl}{scit}{
- <-> \gentiumbook@@scale texnansi-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{LY1}{gentiumbook}{sb}{sc}{
- <-> \gentiumbook@@scale texnansi-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{LY1}{gentiumbook}{sb}{scit}{
- <-> \gentiumbook@@scale texnansi-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{LY1}{gentiumbook}{m}{sl}{<->ssub * gentiumbook/m/it}{}
-\DeclareFontShape{LY1}{gentiumbook}{b}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{LY1}{gentiumbook}{bx}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{LY1}{gentiumbook}{bx}{it}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{LY1}{gentiumbook}{bx}{n}{<->ssub * gentiumbook/b/n}{}
-\DeclareFontShape{LY1}{gentiumbook}{sl}{sl}{<->ssub * gentiumbook/sl/it}{}
-\DeclareFontShape{LY1}{gentiumbook}{sb}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{LY1}{gentiumbook}{sbx}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{LY1}{gentiumbook}{sbx}{it}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{LY1}{gentiumbook}{sbx}{n}{<->ssub * gentiumbook/sb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/ot1gentium.fd b/Master/texmf-dist/tex/latex/gentium-tug/ot1gentium.fd
deleted file mode 100644
index cfc420bfe8c..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/ot1gentium.fd
+++ /dev/null
@@ -1,90 +0,0 @@
-\ProvidesFile{ot1gentium.fd}
- [2022/05/30 Font definitions for gentium.]
-
-\expandafter\ifx\csname gentium@scale\endcsname\relax
- \let\gentium@@scale\@empty
-\else
- \edef\gentium@@scale{s*[\csname gentium@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{OT1}{gentium}{}
-
-\DeclareFontShape{OT1}{gentium}{m}{n}{
- <-> \gentium@@scale ot1-gentiumplus-regular
-}{}
-
-\DeclareFontShape{OT1}{gentium}{m}{it}{
- <-> \gentium@@scale ot1-gentiumplus-italic
-}{}
-
-\DeclareFontShape{OT1}{gentium}{b}{n}{
- <-> \gentium@@scale ot1-gentiumplus-bold
-}{}
-
-\DeclareFontShape{OT1}{gentium}{b}{it}{
- <-> \gentium@@scale ot1-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{OT1}{gentium}{sb}{n}{
- <-> \gentium@@scale ot1-gentiumbook-regular
-}{}
-
-\DeclareFontShape{OT1}{gentium}{sb}{it}{
- <-> \gentium@@scale ot1-gentiumbook-italic
-}{}
-
-\DeclareFontShape{OT1}{gentium}{eb}{n}{
- <-> \gentium@@scale ot1-gentiumbook-bold
-}{}
-
-\DeclareFontShape{OT1}{gentium}{eb}{it}{
- <-> \gentium@@scale ot1-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{OT1}{gentium}{m}{sc}{
- <-> \gentium@@scale ot1-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{OT1}{gentium}{m}{scit}{
- <-> \gentium@@scale ot1-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{OT1}{gentium}{b}{sc}{
- <-> \gentium@@scale ot1-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{OT1}{gentium}{b}{scit}{
- <-> \gentium@@scale ot1-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{OT1}{gentium}{sb}{sc}{
- <-> \gentium@@scale ot1-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{OT1}{gentium}{sb}{scit}{
- <-> \gentium@@scale ot1-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{OT1}{gentium}{eb}{sc}{
- <-> \gentium@@scale ot1-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{OT1}{gentium}{eb}{scit}{
- <-> \gentium@@scale ot1-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{OT1}{gentium}{m}{sl}{<->ssub * gentium/m/it}{}
-\DeclareFontShape{OT1}{gentium}{b}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{OT1}{gentium}{bx}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{OT1}{gentium}{bx}{it}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{OT1}{gentium}{bx}{n}{<->ssub * gentium/b/n}{}
-\DeclareFontShape{OT1}{gentium}{sb}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{OT1}{gentium}{sbx}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{OT1}{gentium}{sbx}{it}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{OT1}{gentium}{sbx}{n}{<->ssub * gentium/sb/n}{}
-\DeclareFontShape{OT1}{gentium}{eb}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{OT1}{gentium}{ebx}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{OT1}{gentium}{ebx}{it}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{OT1}{gentium}{ebx}{n}{<->ssub * gentium/eb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/ot1gentiumbook.fd b/Master/texmf-dist/tex/latex/gentium-tug/ot1gentiumbook.fd
deleted file mode 100644
index 9816eb345a2..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/ot1gentiumbook.fd
+++ /dev/null
@@ -1,87 +0,0 @@
-\ProvidesFile{ot1gentiumbook.fd}
- [2022/05/30 Font definitions for gentiumbook.]
-
-\expandafter\ifx\csname gentiumbook@scale\endcsname\relax
- \let\gentiumbook@@scale\@empty
-\else
- \edef\gentiumbook@@scale{s*[\csname gentiumbook@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{OT1}{gentiumbook}{}
-
-\DeclareFontShape{OT1}{gentiumbook}{m}{n}{
- <-> \gentiumbook@@scale ot1-gentiumbook-regular
-}{}
-
-\DeclareFontShape{OT1}{gentiumbook}{m}{it}{
- <-> \gentiumbook@@scale ot1-gentiumbook-italic
-}{}
-
-\DeclareFontShape{OT1}{gentiumbook}{b}{n}{
- <-> \gentiumbook@@scale ot1-gentiumbook-bold
-}{}
-
-\DeclareFontShape{OT1}{gentiumbook}{b}{it}{
- <-> \gentiumbook@@scale ot1-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{OT1}{gentiumbook}{sl}{n}{
- <-> \gentiumbook@@scale ot1-gentiumplus-regular
-}{}
-
-\DeclareFontShape{OT1}{gentiumbook}{sl}{it}{
- <-> \gentiumbook@@scale ot1-gentiumplus-italic
-}{}
-
-\DeclareFontShape{OT1}{gentiumbook}{sb}{n}{
- <-> \gentiumbook@@scale ot1-gentiumplus-bold
-}{}
-
-\DeclareFontShape{OT1}{gentiumbook}{sb}{it}{
- <-> \gentiumbook@@scale ot1-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{OT1}{gentiumbook}{m}{sc}{
- <-> \gentiumbook@@scale ot1-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{OT1}{gentiumbook}{m}{scit}{
- <-> \gentiumbook@@scale ot1-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{OT1}{gentiumbook}{b}{sc}{
- <-> \gentiumbook@@scale ot1-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{OT1}{gentiumbook}{b}{scit}{
- <-> \gentiumbook@@scale ot1-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{OT1}{gentiumbook}{sl}{sc}{
- <-> \gentiumbook@@scale ot1-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{OT1}{gentiumbook}{sl}{scit}{
- <-> \gentiumbook@@scale ot1-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{OT1}{gentiumbook}{sb}{sc}{
- <-> \gentiumbook@@scale ot1-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{OT1}{gentiumbook}{sb}{scit}{
- <-> \gentiumbook@@scale ot1-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{OT1}{gentiumbook}{m}{sl}{<->ssub * gentiumbook/m/it}{}
-\DeclareFontShape{OT1}{gentiumbook}{b}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{OT1}{gentiumbook}{bx}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{OT1}{gentiumbook}{bx}{it}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{OT1}{gentiumbook}{bx}{n}{<->ssub * gentiumbook/b/n}{}
-\DeclareFontShape{OT1}{gentiumbook}{sl}{sl}{<->ssub * gentiumbook/sl/it}{}
-\DeclareFontShape{OT1}{gentiumbook}{sb}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{OT1}{gentiumbook}{sbx}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{OT1}{gentiumbook}{sbx}{it}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{OT1}{gentiumbook}{sbx}{n}{<->ssub * gentiumbook/sb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/qxgentium.fd b/Master/texmf-dist/tex/latex/gentium-tug/qxgentium.fd
deleted file mode 100644
index 0ab6644e08a..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/qxgentium.fd
+++ /dev/null
@@ -1,90 +0,0 @@
-\ProvidesFile{qxgentium.fd}
- [2022/05/30 Font definitions for gentium.]
-
-\expandafter\ifx\csname gentium@scale\endcsname\relax
- \let\gentium@@scale\@empty
-\else
- \edef\gentium@@scale{s*[\csname gentium@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{QX}{gentium}{}
-
-\DeclareFontShape{QX}{gentium}{m}{n}{
- <-> \gentium@@scale qx-gentiumplus-regular
-}{}
-
-\DeclareFontShape{QX}{gentium}{m}{it}{
- <-> \gentium@@scale qx-gentiumplus-italic
-}{}
-
-\DeclareFontShape{QX}{gentium}{b}{n}{
- <-> \gentium@@scale qx-gentiumplus-bold
-}{}
-
-\DeclareFontShape{QX}{gentium}{b}{it}{
- <-> \gentium@@scale qx-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{QX}{gentium}{sb}{n}{
- <-> \gentium@@scale qx-gentiumbook-regular
-}{}
-
-\DeclareFontShape{QX}{gentium}{sb}{it}{
- <-> \gentium@@scale qx-gentiumbook-italic
-}{}
-
-\DeclareFontShape{QX}{gentium}{eb}{n}{
- <-> \gentium@@scale qx-gentiumbook-bold
-}{}
-
-\DeclareFontShape{QX}{gentium}{eb}{it}{
- <-> \gentium@@scale qx-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{QX}{gentium}{m}{sc}{
- <-> \gentium@@scale qx-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{QX}{gentium}{m}{scit}{
- <-> \gentium@@scale qx-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{QX}{gentium}{b}{sc}{
- <-> \gentium@@scale qx-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{QX}{gentium}{b}{scit}{
- <-> \gentium@@scale qx-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{QX}{gentium}{sb}{sc}{
- <-> \gentium@@scale qx-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{QX}{gentium}{sb}{scit}{
- <-> \gentium@@scale qx-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{QX}{gentium}{eb}{sc}{
- <-> \gentium@@scale qx-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{QX}{gentium}{eb}{scit}{
- <-> \gentium@@scale qx-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{QX}{gentium}{m}{sl}{<->ssub * gentium/m/it}{}
-\DeclareFontShape{QX}{gentium}{b}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{QX}{gentium}{bx}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{QX}{gentium}{bx}{it}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{QX}{gentium}{bx}{n}{<->ssub * gentium/b/n}{}
-\DeclareFontShape{QX}{gentium}{sb}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{QX}{gentium}{sbx}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{QX}{gentium}{sbx}{it}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{QX}{gentium}{sbx}{n}{<->ssub * gentium/sb/n}{}
-\DeclareFontShape{QX}{gentium}{eb}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{QX}{gentium}{ebx}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{QX}{gentium}{ebx}{it}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{QX}{gentium}{ebx}{n}{<->ssub * gentium/eb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/qxgentiumbook.fd b/Master/texmf-dist/tex/latex/gentium-tug/qxgentiumbook.fd
deleted file mode 100644
index 613f7897974..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/qxgentiumbook.fd
+++ /dev/null
@@ -1,87 +0,0 @@
-\ProvidesFile{qxgentiumbook.fd}
- [2022/05/30 Font definitions for gentiumbook.]
-
-\expandafter\ifx\csname gentiumbook@scale\endcsname\relax
- \let\gentiumbook@@scale\@empty
-\else
- \edef\gentiumbook@@scale{s*[\csname gentiumbook@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{QX}{gentiumbook}{}
-
-\DeclareFontShape{QX}{gentiumbook}{m}{n}{
- <-> \gentiumbook@@scale qx-gentiumbook-regular
-}{}
-
-\DeclareFontShape{QX}{gentiumbook}{m}{it}{
- <-> \gentiumbook@@scale qx-gentiumbook-italic
-}{}
-
-\DeclareFontShape{QX}{gentiumbook}{b}{n}{
- <-> \gentiumbook@@scale qx-gentiumbook-bold
-}{}
-
-\DeclareFontShape{QX}{gentiumbook}{b}{it}{
- <-> \gentiumbook@@scale qx-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{QX}{gentiumbook}{sl}{n}{
- <-> \gentiumbook@@scale qx-gentiumplus-regular
-}{}
-
-\DeclareFontShape{QX}{gentiumbook}{sl}{it}{
- <-> \gentiumbook@@scale qx-gentiumplus-italic
-}{}
-
-\DeclareFontShape{QX}{gentiumbook}{sb}{n}{
- <-> \gentiumbook@@scale qx-gentiumplus-bold
-}{}
-
-\DeclareFontShape{QX}{gentiumbook}{sb}{it}{
- <-> \gentiumbook@@scale qx-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{QX}{gentiumbook}{m}{sc}{
- <-> \gentiumbook@@scale qx-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{QX}{gentiumbook}{m}{scit}{
- <-> \gentiumbook@@scale qx-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{QX}{gentiumbook}{b}{sc}{
- <-> \gentiumbook@@scale qx-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{QX}{gentiumbook}{b}{scit}{
- <-> \gentiumbook@@scale qx-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{QX}{gentiumbook}{sl}{sc}{
- <-> \gentiumbook@@scale qx-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{QX}{gentiumbook}{sl}{scit}{
- <-> \gentiumbook@@scale qx-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{QX}{gentiumbook}{sb}{sc}{
- <-> \gentiumbook@@scale qx-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{QX}{gentiumbook}{sb}{scit}{
- <-> \gentiumbook@@scale qx-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{QX}{gentiumbook}{m}{sl}{<->ssub * gentiumbook/m/it}{}
-\DeclareFontShape{QX}{gentiumbook}{b}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{QX}{gentiumbook}{bx}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{QX}{gentiumbook}{bx}{it}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{QX}{gentiumbook}{bx}{n}{<->ssub * gentiumbook/b/n}{}
-\DeclareFontShape{QX}{gentiumbook}{sl}{sl}{<->ssub * gentiumbook/sl/it}{}
-\DeclareFontShape{QX}{gentiumbook}{sb}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{QX}{gentiumbook}{sbx}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{QX}{gentiumbook}{sbx}{it}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{QX}{gentiumbook}{sbx}{n}{<->ssub * gentiumbook/sb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/t1gentium.fd b/Master/texmf-dist/tex/latex/gentium-tug/t1gentium.fd
deleted file mode 100644
index 38d5d486231..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/t1gentium.fd
+++ /dev/null
@@ -1,90 +0,0 @@
-\ProvidesFile{t1gentium.fd}
- [2022/05/30 Font definitions for gentium.]
-
-\expandafter\ifx\csname gentium@scale\endcsname\relax
- \let\gentium@@scale\@empty
-\else
- \edef\gentium@@scale{s*[\csname gentium@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T1}{gentium}{}
-
-\DeclareFontShape{T1}{gentium}{m}{n}{
- <-> \gentium@@scale ec-gentiumplus-regular
-}{}
-
-\DeclareFontShape{T1}{gentium}{m}{it}{
- <-> \gentium@@scale ec-gentiumplus-italic
-}{}
-
-\DeclareFontShape{T1}{gentium}{b}{n}{
- <-> \gentium@@scale ec-gentiumplus-bold
-}{}
-
-\DeclareFontShape{T1}{gentium}{b}{it}{
- <-> \gentium@@scale ec-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{T1}{gentium}{sb}{n}{
- <-> \gentium@@scale ec-gentiumbook-regular
-}{}
-
-\DeclareFontShape{T1}{gentium}{sb}{it}{
- <-> \gentium@@scale ec-gentiumbook-italic
-}{}
-
-\DeclareFontShape{T1}{gentium}{eb}{n}{
- <-> \gentium@@scale ec-gentiumbook-bold
-}{}
-
-\DeclareFontShape{T1}{gentium}{eb}{it}{
- <-> \gentium@@scale ec-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{T1}{gentium}{m}{sc}{
- <-> \gentium@@scale ec-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{T1}{gentium}{m}{scit}{
- <-> \gentium@@scale ec-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{T1}{gentium}{b}{sc}{
- <-> \gentium@@scale ec-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{T1}{gentium}{b}{scit}{
- <-> \gentium@@scale ec-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{T1}{gentium}{sb}{sc}{
- <-> \gentium@@scale ec-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{T1}{gentium}{sb}{scit}{
- <-> \gentium@@scale ec-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{T1}{gentium}{eb}{sc}{
- <-> \gentium@@scale ec-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{T1}{gentium}{eb}{scit}{
- <-> \gentium@@scale ec-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{T1}{gentium}{m}{sl}{<->ssub * gentium/m/it}{}
-\DeclareFontShape{T1}{gentium}{b}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{T1}{gentium}{bx}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{T1}{gentium}{bx}{it}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{T1}{gentium}{bx}{n}{<->ssub * gentium/b/n}{}
-\DeclareFontShape{T1}{gentium}{sb}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{T1}{gentium}{sbx}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{T1}{gentium}{sbx}{it}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{T1}{gentium}{sbx}{n}{<->ssub * gentium/sb/n}{}
-\DeclareFontShape{T1}{gentium}{eb}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{T1}{gentium}{ebx}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{T1}{gentium}{ebx}{it}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{T1}{gentium}{ebx}{n}{<->ssub * gentium/eb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/t1gentiumbook.fd b/Master/texmf-dist/tex/latex/gentium-tug/t1gentiumbook.fd
deleted file mode 100644
index 06545a5c0a6..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/t1gentiumbook.fd
+++ /dev/null
@@ -1,87 +0,0 @@
-\ProvidesFile{t1gentiumbook.fd}
- [2022/05/30 Font definitions for gentiumbook.]
-
-\expandafter\ifx\csname gentiumbook@scale\endcsname\relax
- \let\gentiumbook@@scale\@empty
-\else
- \edef\gentiumbook@@scale{s*[\csname gentiumbook@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T1}{gentiumbook}{}
-
-\DeclareFontShape{T1}{gentiumbook}{m}{n}{
- <-> \gentiumbook@@scale ec-gentiumbook-regular
-}{}
-
-\DeclareFontShape{T1}{gentiumbook}{m}{it}{
- <-> \gentiumbook@@scale ec-gentiumbook-italic
-}{}
-
-\DeclareFontShape{T1}{gentiumbook}{b}{n}{
- <-> \gentiumbook@@scale ec-gentiumbook-bold
-}{}
-
-\DeclareFontShape{T1}{gentiumbook}{b}{it}{
- <-> \gentiumbook@@scale ec-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{T1}{gentiumbook}{sl}{n}{
- <-> \gentiumbook@@scale ec-gentiumplus-regular
-}{}
-
-\DeclareFontShape{T1}{gentiumbook}{sl}{it}{
- <-> \gentiumbook@@scale ec-gentiumplus-italic
-}{}
-
-\DeclareFontShape{T1}{gentiumbook}{sb}{n}{
- <-> \gentiumbook@@scale ec-gentiumplus-bold
-}{}
-
-\DeclareFontShape{T1}{gentiumbook}{sb}{it}{
- <-> \gentiumbook@@scale ec-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{T1}{gentiumbook}{m}{sc}{
- <-> \gentiumbook@@scale ec-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{T1}{gentiumbook}{m}{scit}{
- <-> \gentiumbook@@scale ec-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{T1}{gentiumbook}{b}{sc}{
- <-> \gentiumbook@@scale ec-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{T1}{gentiumbook}{b}{scit}{
- <-> \gentiumbook@@scale ec-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{T1}{gentiumbook}{sl}{sc}{
- <-> \gentiumbook@@scale ec-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{T1}{gentiumbook}{sl}{scit}{
- <-> \gentiumbook@@scale ec-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{T1}{gentiumbook}{sb}{sc}{
- <-> \gentiumbook@@scale ec-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{T1}{gentiumbook}{sb}{scit}{
- <-> \gentiumbook@@scale ec-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{T1}{gentiumbook}{m}{sl}{<->ssub * gentiumbook/m/it}{}
-\DeclareFontShape{T1}{gentiumbook}{b}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{T1}{gentiumbook}{bx}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{T1}{gentiumbook}{bx}{it}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{T1}{gentiumbook}{bx}{n}{<->ssub * gentiumbook/b/n}{}
-\DeclareFontShape{T1}{gentiumbook}{sl}{sl}{<->ssub * gentiumbook/sl/it}{}
-\DeclareFontShape{T1}{gentiumbook}{sb}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{T1}{gentiumbook}{sbx}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{T1}{gentiumbook}{sbx}{it}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{T1}{gentiumbook}{sbx}{n}{<->ssub * gentiumbook/sb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/t2agentium.fd b/Master/texmf-dist/tex/latex/gentium-tug/t2agentium.fd
deleted file mode 100644
index b3eff907490..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/t2agentium.fd
+++ /dev/null
@@ -1,90 +0,0 @@
-\ProvidesFile{t2agentium.fd}
- [2022/05/30 Font definitions for gentium.]
-
-\expandafter\ifx\csname gentium@scale\endcsname\relax
- \let\gentium@@scale\@empty
-\else
- \edef\gentium@@scale{s*[\csname gentium@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2A}{gentium}{}
-
-\DeclareFontShape{T2A}{gentium}{m}{n}{
- <-> \gentium@@scale t2a-gentiumplus-regular
-}{}
-
-\DeclareFontShape{T2A}{gentium}{m}{it}{
- <-> \gentium@@scale t2a-gentiumplus-italic
-}{}
-
-\DeclareFontShape{T2A}{gentium}{b}{n}{
- <-> \gentium@@scale t2a-gentiumplus-bold
-}{}
-
-\DeclareFontShape{T2A}{gentium}{b}{it}{
- <-> \gentium@@scale t2a-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{T2A}{gentium}{sb}{n}{
- <-> \gentium@@scale t2a-gentiumbook-regular
-}{}
-
-\DeclareFontShape{T2A}{gentium}{sb}{it}{
- <-> \gentium@@scale t2a-gentiumbook-italic
-}{}
-
-\DeclareFontShape{T2A}{gentium}{eb}{n}{
- <-> \gentium@@scale t2a-gentiumbook-bold
-}{}
-
-\DeclareFontShape{T2A}{gentium}{eb}{it}{
- <-> \gentium@@scale t2a-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{T2A}{gentium}{m}{sc}{
- <-> \gentium@@scale t2a-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{T2A}{gentium}{m}{scit}{
- <-> \gentium@@scale t2a-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{T2A}{gentium}{b}{sc}{
- <-> \gentium@@scale t2a-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{T2A}{gentium}{b}{scit}{
- <-> \gentium@@scale t2a-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{T2A}{gentium}{sb}{sc}{
- <-> \gentium@@scale t2a-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{T2A}{gentium}{sb}{scit}{
- <-> \gentium@@scale t2a-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{T2A}{gentium}{eb}{sc}{
- <-> \gentium@@scale t2a-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{T2A}{gentium}{eb}{scit}{
- <-> \gentium@@scale t2a-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{T2A}{gentium}{m}{sl}{<->ssub * gentium/m/it}{}
-\DeclareFontShape{T2A}{gentium}{b}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{T2A}{gentium}{bx}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{T2A}{gentium}{bx}{it}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{T2A}{gentium}{bx}{n}{<->ssub * gentium/b/n}{}
-\DeclareFontShape{T2A}{gentium}{sb}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{T2A}{gentium}{sbx}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{T2A}{gentium}{sbx}{it}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{T2A}{gentium}{sbx}{n}{<->ssub * gentium/sb/n}{}
-\DeclareFontShape{T2A}{gentium}{eb}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{T2A}{gentium}{ebx}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{T2A}{gentium}{ebx}{it}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{T2A}{gentium}{ebx}{n}{<->ssub * gentium/eb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/t2agentiumbook.fd b/Master/texmf-dist/tex/latex/gentium-tug/t2agentiumbook.fd
deleted file mode 100644
index 97f57699784..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/t2agentiumbook.fd
+++ /dev/null
@@ -1,87 +0,0 @@
-\ProvidesFile{t2agentiumbook.fd}
- [2022/05/30 Font definitions for gentiumbook.]
-
-\expandafter\ifx\csname gentiumbook@scale\endcsname\relax
- \let\gentiumbook@@scale\@empty
-\else
- \edef\gentiumbook@@scale{s*[\csname gentiumbook@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2A}{gentiumbook}{}
-
-\DeclareFontShape{T2A}{gentiumbook}{m}{n}{
- <-> \gentiumbook@@scale t2a-gentiumbook-regular
-}{}
-
-\DeclareFontShape{T2A}{gentiumbook}{m}{it}{
- <-> \gentiumbook@@scale t2a-gentiumbook-italic
-}{}
-
-\DeclareFontShape{T2A}{gentiumbook}{b}{n}{
- <-> \gentiumbook@@scale t2a-gentiumbook-bold
-}{}
-
-\DeclareFontShape{T2A}{gentiumbook}{b}{it}{
- <-> \gentiumbook@@scale t2a-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{T2A}{gentiumbook}{sl}{n}{
- <-> \gentiumbook@@scale t2a-gentiumplus-regular
-}{}
-
-\DeclareFontShape{T2A}{gentiumbook}{sl}{it}{
- <-> \gentiumbook@@scale t2a-gentiumplus-italic
-}{}
-
-\DeclareFontShape{T2A}{gentiumbook}{sb}{n}{
- <-> \gentiumbook@@scale t2a-gentiumplus-bold
-}{}
-
-\DeclareFontShape{T2A}{gentiumbook}{sb}{it}{
- <-> \gentiumbook@@scale t2a-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{T2A}{gentiumbook}{m}{sc}{
- <-> \gentiumbook@@scale t2a-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{T2A}{gentiumbook}{m}{scit}{
- <-> \gentiumbook@@scale t2a-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{T2A}{gentiumbook}{b}{sc}{
- <-> \gentiumbook@@scale t2a-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{T2A}{gentiumbook}{b}{scit}{
- <-> \gentiumbook@@scale t2a-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{T2A}{gentiumbook}{sl}{sc}{
- <-> \gentiumbook@@scale t2a-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{T2A}{gentiumbook}{sl}{scit}{
- <-> \gentiumbook@@scale t2a-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{T2A}{gentiumbook}{sb}{sc}{
- <-> \gentiumbook@@scale t2a-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{T2A}{gentiumbook}{sb}{scit}{
- <-> \gentiumbook@@scale t2a-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{T2A}{gentiumbook}{m}{sl}{<->ssub * gentiumbook/m/it}{}
-\DeclareFontShape{T2A}{gentiumbook}{b}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{T2A}{gentiumbook}{bx}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{T2A}{gentiumbook}{bx}{it}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{T2A}{gentiumbook}{bx}{n}{<->ssub * gentiumbook/b/n}{}
-\DeclareFontShape{T2A}{gentiumbook}{sl}{sl}{<->ssub * gentiumbook/sl/it}{}
-\DeclareFontShape{T2A}{gentiumbook}{sb}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{T2A}{gentiumbook}{sbx}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{T2A}{gentiumbook}{sbx}{it}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{T2A}{gentiumbook}{sbx}{n}{<->ssub * gentiumbook/sb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/t2bgentium.fd b/Master/texmf-dist/tex/latex/gentium-tug/t2bgentium.fd
deleted file mode 100644
index 256e54f399c..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/t2bgentium.fd
+++ /dev/null
@@ -1,90 +0,0 @@
-\ProvidesFile{t2bgentium.fd}
- [2022/05/30 Font definitions for gentium.]
-
-\expandafter\ifx\csname gentium@scale\endcsname\relax
- \let\gentium@@scale\@empty
-\else
- \edef\gentium@@scale{s*[\csname gentium@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2B}{gentium}{}
-
-\DeclareFontShape{T2B}{gentium}{m}{n}{
- <-> \gentium@@scale t2b-gentiumplus-regular
-}{}
-
-\DeclareFontShape{T2B}{gentium}{m}{it}{
- <-> \gentium@@scale t2b-gentiumplus-italic
-}{}
-
-\DeclareFontShape{T2B}{gentium}{b}{n}{
- <-> \gentium@@scale t2b-gentiumplus-bold
-}{}
-
-\DeclareFontShape{T2B}{gentium}{b}{it}{
- <-> \gentium@@scale t2b-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{T2B}{gentium}{sb}{n}{
- <-> \gentium@@scale t2b-gentiumbook-regular
-}{}
-
-\DeclareFontShape{T2B}{gentium}{sb}{it}{
- <-> \gentium@@scale t2b-gentiumbook-italic
-}{}
-
-\DeclareFontShape{T2B}{gentium}{eb}{n}{
- <-> \gentium@@scale t2b-gentiumbook-bold
-}{}
-
-\DeclareFontShape{T2B}{gentium}{eb}{it}{
- <-> \gentium@@scale t2b-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{T2B}{gentium}{m}{sc}{
- <-> \gentium@@scale t2b-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{T2B}{gentium}{m}{scit}{
- <-> \gentium@@scale t2b-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{T2B}{gentium}{b}{sc}{
- <-> \gentium@@scale t2b-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{T2B}{gentium}{b}{scit}{
- <-> \gentium@@scale t2b-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{T2B}{gentium}{sb}{sc}{
- <-> \gentium@@scale t2b-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{T2B}{gentium}{sb}{scit}{
- <-> \gentium@@scale t2b-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{T2B}{gentium}{eb}{sc}{
- <-> \gentium@@scale t2b-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{T2B}{gentium}{eb}{scit}{
- <-> \gentium@@scale t2b-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{T2B}{gentium}{m}{sl}{<->ssub * gentium/m/it}{}
-\DeclareFontShape{T2B}{gentium}{b}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{T2B}{gentium}{bx}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{T2B}{gentium}{bx}{it}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{T2B}{gentium}{bx}{n}{<->ssub * gentium/b/n}{}
-\DeclareFontShape{T2B}{gentium}{sb}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{T2B}{gentium}{sbx}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{T2B}{gentium}{sbx}{it}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{T2B}{gentium}{sbx}{n}{<->ssub * gentium/sb/n}{}
-\DeclareFontShape{T2B}{gentium}{eb}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{T2B}{gentium}{ebx}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{T2B}{gentium}{ebx}{it}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{T2B}{gentium}{ebx}{n}{<->ssub * gentium/eb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/t2bgentiumbook.fd b/Master/texmf-dist/tex/latex/gentium-tug/t2bgentiumbook.fd
deleted file mode 100644
index 2d12d3c83d4..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/t2bgentiumbook.fd
+++ /dev/null
@@ -1,87 +0,0 @@
-\ProvidesFile{t2bgentiumbook.fd}
- [2022/05/30 Font definitions for gentiumbook.]
-
-\expandafter\ifx\csname gentiumbook@scale\endcsname\relax
- \let\gentiumbook@@scale\@empty
-\else
- \edef\gentiumbook@@scale{s*[\csname gentiumbook@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2B}{gentiumbook}{}
-
-\DeclareFontShape{T2B}{gentiumbook}{m}{n}{
- <-> \gentiumbook@@scale t2b-gentiumbook-regular
-}{}
-
-\DeclareFontShape{T2B}{gentiumbook}{m}{it}{
- <-> \gentiumbook@@scale t2b-gentiumbook-italic
-}{}
-
-\DeclareFontShape{T2B}{gentiumbook}{b}{n}{
- <-> \gentiumbook@@scale t2b-gentiumbook-bold
-}{}
-
-\DeclareFontShape{T2B}{gentiumbook}{b}{it}{
- <-> \gentiumbook@@scale t2b-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{T2B}{gentiumbook}{sl}{n}{
- <-> \gentiumbook@@scale t2b-gentiumplus-regular
-}{}
-
-\DeclareFontShape{T2B}{gentiumbook}{sl}{it}{
- <-> \gentiumbook@@scale t2b-gentiumplus-italic
-}{}
-
-\DeclareFontShape{T2B}{gentiumbook}{sb}{n}{
- <-> \gentiumbook@@scale t2b-gentiumplus-bold
-}{}
-
-\DeclareFontShape{T2B}{gentiumbook}{sb}{it}{
- <-> \gentiumbook@@scale t2b-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{T2B}{gentiumbook}{m}{sc}{
- <-> \gentiumbook@@scale t2b-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{T2B}{gentiumbook}{m}{scit}{
- <-> \gentiumbook@@scale t2b-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{T2B}{gentiumbook}{b}{sc}{
- <-> \gentiumbook@@scale t2b-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{T2B}{gentiumbook}{b}{scit}{
- <-> \gentiumbook@@scale t2b-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{T2B}{gentiumbook}{sl}{sc}{
- <-> \gentiumbook@@scale t2b-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{T2B}{gentiumbook}{sl}{scit}{
- <-> \gentiumbook@@scale t2b-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{T2B}{gentiumbook}{sb}{sc}{
- <-> \gentiumbook@@scale t2b-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{T2B}{gentiumbook}{sb}{scit}{
- <-> \gentiumbook@@scale t2b-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{T2B}{gentiumbook}{m}{sl}{<->ssub * gentiumbook/m/it}{}
-\DeclareFontShape{T2B}{gentiumbook}{b}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{T2B}{gentiumbook}{bx}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{T2B}{gentiumbook}{bx}{it}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{T2B}{gentiumbook}{bx}{n}{<->ssub * gentiumbook/b/n}{}
-\DeclareFontShape{T2B}{gentiumbook}{sl}{sl}{<->ssub * gentiumbook/sl/it}{}
-\DeclareFontShape{T2B}{gentiumbook}{sb}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{T2B}{gentiumbook}{sbx}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{T2B}{gentiumbook}{sbx}{it}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{T2B}{gentiumbook}{sbx}{n}{<->ssub * gentiumbook/sb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/t2cgentium.fd b/Master/texmf-dist/tex/latex/gentium-tug/t2cgentium.fd
deleted file mode 100644
index 6381b98b855..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/t2cgentium.fd
+++ /dev/null
@@ -1,90 +0,0 @@
-\ProvidesFile{t2cgentium.fd}
- [2022/05/30 Font definitions for gentium.]
-
-\expandafter\ifx\csname gentium@scale\endcsname\relax
- \let\gentium@@scale\@empty
-\else
- \edef\gentium@@scale{s*[\csname gentium@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2C}{gentium}{}
-
-\DeclareFontShape{T2C}{gentium}{m}{n}{
- <-> \gentium@@scale t2c-gentiumplus-regular
-}{}
-
-\DeclareFontShape{T2C}{gentium}{m}{it}{
- <-> \gentium@@scale t2c-gentiumplus-italic
-}{}
-
-\DeclareFontShape{T2C}{gentium}{b}{n}{
- <-> \gentium@@scale t2c-gentiumplus-bold
-}{}
-
-\DeclareFontShape{T2C}{gentium}{b}{it}{
- <-> \gentium@@scale t2c-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{T2C}{gentium}{sb}{n}{
- <-> \gentium@@scale t2c-gentiumbook-regular
-}{}
-
-\DeclareFontShape{T2C}{gentium}{sb}{it}{
- <-> \gentium@@scale t2c-gentiumbook-italic
-}{}
-
-\DeclareFontShape{T2C}{gentium}{eb}{n}{
- <-> \gentium@@scale t2c-gentiumbook-bold
-}{}
-
-\DeclareFontShape{T2C}{gentium}{eb}{it}{
- <-> \gentium@@scale t2c-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{T2C}{gentium}{m}{sc}{
- <-> \gentium@@scale t2c-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{T2C}{gentium}{m}{scit}{
- <-> \gentium@@scale t2c-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{T2C}{gentium}{b}{sc}{
- <-> \gentium@@scale t2c-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{T2C}{gentium}{b}{scit}{
- <-> \gentium@@scale t2c-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{T2C}{gentium}{sb}{sc}{
- <-> \gentium@@scale t2c-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{T2C}{gentium}{sb}{scit}{
- <-> \gentium@@scale t2c-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{T2C}{gentium}{eb}{sc}{
- <-> \gentium@@scale t2c-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{T2C}{gentium}{eb}{scit}{
- <-> \gentium@@scale t2c-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{T2C}{gentium}{m}{sl}{<->ssub * gentium/m/it}{}
-\DeclareFontShape{T2C}{gentium}{b}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{T2C}{gentium}{bx}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{T2C}{gentium}{bx}{it}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{T2C}{gentium}{bx}{n}{<->ssub * gentium/b/n}{}
-\DeclareFontShape{T2C}{gentium}{sb}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{T2C}{gentium}{sbx}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{T2C}{gentium}{sbx}{it}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{T2C}{gentium}{sbx}{n}{<->ssub * gentium/sb/n}{}
-\DeclareFontShape{T2C}{gentium}{eb}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{T2C}{gentium}{ebx}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{T2C}{gentium}{ebx}{it}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{T2C}{gentium}{ebx}{n}{<->ssub * gentium/eb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/t2cgentiumbook.fd b/Master/texmf-dist/tex/latex/gentium-tug/t2cgentiumbook.fd
deleted file mode 100644
index a2177734046..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/t2cgentiumbook.fd
+++ /dev/null
@@ -1,87 +0,0 @@
-\ProvidesFile{t2cgentiumbook.fd}
- [2022/05/30 Font definitions for gentiumbook.]
-
-\expandafter\ifx\csname gentiumbook@scale\endcsname\relax
- \let\gentiumbook@@scale\@empty
-\else
- \edef\gentiumbook@@scale{s*[\csname gentiumbook@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2C}{gentiumbook}{}
-
-\DeclareFontShape{T2C}{gentiumbook}{m}{n}{
- <-> \gentiumbook@@scale t2c-gentiumbook-regular
-}{}
-
-\DeclareFontShape{T2C}{gentiumbook}{m}{it}{
- <-> \gentiumbook@@scale t2c-gentiumbook-italic
-}{}
-
-\DeclareFontShape{T2C}{gentiumbook}{b}{n}{
- <-> \gentiumbook@@scale t2c-gentiumbook-bold
-}{}
-
-\DeclareFontShape{T2C}{gentiumbook}{b}{it}{
- <-> \gentiumbook@@scale t2c-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{T2C}{gentiumbook}{sl}{n}{
- <-> \gentiumbook@@scale t2c-gentiumplus-regular
-}{}
-
-\DeclareFontShape{T2C}{gentiumbook}{sl}{it}{
- <-> \gentiumbook@@scale t2c-gentiumplus-italic
-}{}
-
-\DeclareFontShape{T2C}{gentiumbook}{sb}{n}{
- <-> \gentiumbook@@scale t2c-gentiumplus-bold
-}{}
-
-\DeclareFontShape{T2C}{gentiumbook}{sb}{it}{
- <-> \gentiumbook@@scale t2c-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{T2C}{gentiumbook}{m}{sc}{
- <-> \gentiumbook@@scale t2c-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{T2C}{gentiumbook}{m}{scit}{
- <-> \gentiumbook@@scale t2c-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{T2C}{gentiumbook}{b}{sc}{
- <-> \gentiumbook@@scale t2c-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{T2C}{gentiumbook}{b}{scit}{
- <-> \gentiumbook@@scale t2c-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{T2C}{gentiumbook}{sl}{sc}{
- <-> \gentiumbook@@scale t2c-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{T2C}{gentiumbook}{sl}{scit}{
- <-> \gentiumbook@@scale t2c-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{T2C}{gentiumbook}{sb}{sc}{
- <-> \gentiumbook@@scale t2c-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{T2C}{gentiumbook}{sb}{scit}{
- <-> \gentiumbook@@scale t2c-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{T2C}{gentiumbook}{m}{sl}{<->ssub * gentiumbook/m/it}{}
-\DeclareFontShape{T2C}{gentiumbook}{b}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{T2C}{gentiumbook}{bx}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{T2C}{gentiumbook}{bx}{it}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{T2C}{gentiumbook}{bx}{n}{<->ssub * gentiumbook/b/n}{}
-\DeclareFontShape{T2C}{gentiumbook}{sl}{sl}{<->ssub * gentiumbook/sl/it}{}
-\DeclareFontShape{T2C}{gentiumbook}{sb}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{T2C}{gentiumbook}{sbx}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{T2C}{gentiumbook}{sbx}{it}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{T2C}{gentiumbook}{sbx}{n}{<->ssub * gentiumbook/sb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/t5gentium.fd b/Master/texmf-dist/tex/latex/gentium-tug/t5gentium.fd
deleted file mode 100644
index a387d914675..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/t5gentium.fd
+++ /dev/null
@@ -1,90 +0,0 @@
-\ProvidesFile{t5gentium.fd}
- [2022/05/30 Font definitions for gentium.]
-
-\expandafter\ifx\csname gentium@scale\endcsname\relax
- \let\gentium@@scale\@empty
-\else
- \edef\gentium@@scale{s*[\csname gentium@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T5}{gentium}{}
-
-\DeclareFontShape{T5}{gentium}{m}{n}{
- <-> \gentium@@scale t5-gentiumplus-regular
-}{}
-
-\DeclareFontShape{T5}{gentium}{m}{it}{
- <-> \gentium@@scale t5-gentiumplus-italic
-}{}
-
-\DeclareFontShape{T5}{gentium}{b}{n}{
- <-> \gentium@@scale t5-gentiumplus-bold
-}{}
-
-\DeclareFontShape{T5}{gentium}{b}{it}{
- <-> \gentium@@scale t5-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{T5}{gentium}{sb}{n}{
- <-> \gentium@@scale t5-gentiumbook-regular
-}{}
-
-\DeclareFontShape{T5}{gentium}{sb}{it}{
- <-> \gentium@@scale t5-gentiumbook-italic
-}{}
-
-\DeclareFontShape{T5}{gentium}{eb}{n}{
- <-> \gentium@@scale t5-gentiumbook-bold
-}{}
-
-\DeclareFontShape{T5}{gentium}{eb}{it}{
- <-> \gentium@@scale t5-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{T5}{gentium}{m}{sc}{
- <-> \gentium@@scale t5-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{T5}{gentium}{m}{scit}{
- <-> \gentium@@scale t5-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{T5}{gentium}{b}{sc}{
- <-> \gentium@@scale t5-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{T5}{gentium}{b}{scit}{
- <-> \gentium@@scale t5-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{T5}{gentium}{sb}{sc}{
- <-> \gentium@@scale t5-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{T5}{gentium}{sb}{scit}{
- <-> \gentium@@scale t5-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{T5}{gentium}{eb}{sc}{
- <-> \gentium@@scale t5-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{T5}{gentium}{eb}{scit}{
- <-> \gentium@@scale t5-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{T5}{gentium}{m}{sl}{<->ssub * gentium/m/it}{}
-\DeclareFontShape{T5}{gentium}{b}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{T5}{gentium}{bx}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{T5}{gentium}{bx}{it}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{T5}{gentium}{bx}{n}{<->ssub * gentium/b/n}{}
-\DeclareFontShape{T5}{gentium}{sb}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{T5}{gentium}{sbx}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{T5}{gentium}{sbx}{it}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{T5}{gentium}{sbx}{n}{<->ssub * gentium/sb/n}{}
-\DeclareFontShape{T5}{gentium}{eb}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{T5}{gentium}{ebx}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{T5}{gentium}{ebx}{it}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{T5}{gentium}{ebx}{n}{<->ssub * gentium/eb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/t5gentiumbook.fd b/Master/texmf-dist/tex/latex/gentium-tug/t5gentiumbook.fd
deleted file mode 100644
index ca7c6d4a154..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/t5gentiumbook.fd
+++ /dev/null
@@ -1,87 +0,0 @@
-\ProvidesFile{t5gentiumbook.fd}
- [2022/05/30 Font definitions for gentiumbook.]
-
-\expandafter\ifx\csname gentiumbook@scale\endcsname\relax
- \let\gentiumbook@@scale\@empty
-\else
- \edef\gentiumbook@@scale{s*[\csname gentiumbook@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T5}{gentiumbook}{}
-
-\DeclareFontShape{T5}{gentiumbook}{m}{n}{
- <-> \gentiumbook@@scale t5-gentiumbook-regular
-}{}
-
-\DeclareFontShape{T5}{gentiumbook}{m}{it}{
- <-> \gentiumbook@@scale t5-gentiumbook-italic
-}{}
-
-\DeclareFontShape{T5}{gentiumbook}{b}{n}{
- <-> \gentiumbook@@scale t5-gentiumbook-bold
-}{}
-
-\DeclareFontShape{T5}{gentiumbook}{b}{it}{
- <-> \gentiumbook@@scale t5-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{T5}{gentiumbook}{sl}{n}{
- <-> \gentiumbook@@scale t5-gentiumplus-regular
-}{}
-
-\DeclareFontShape{T5}{gentiumbook}{sl}{it}{
- <-> \gentiumbook@@scale t5-gentiumplus-italic
-}{}
-
-\DeclareFontShape{T5}{gentiumbook}{sb}{n}{
- <-> \gentiumbook@@scale t5-gentiumplus-bold
-}{}
-
-\DeclareFontShape{T5}{gentiumbook}{sb}{it}{
- <-> \gentiumbook@@scale t5-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{T5}{gentiumbook}{m}{sc}{
- <-> \gentiumbook@@scale t5-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{T5}{gentiumbook}{m}{scit}{
- <-> \gentiumbook@@scale t5-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{T5}{gentiumbook}{b}{sc}{
- <-> \gentiumbook@@scale t5-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{T5}{gentiumbook}{b}{scit}{
- <-> \gentiumbook@@scale t5-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{T5}{gentiumbook}{sl}{sc}{
- <-> \gentiumbook@@scale t5-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{T5}{gentiumbook}{sl}{scit}{
- <-> \gentiumbook@@scale t5-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{T5}{gentiumbook}{sb}{sc}{
- <-> \gentiumbook@@scale t5-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{T5}{gentiumbook}{sb}{scit}{
- <-> \gentiumbook@@scale t5-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{T5}{gentiumbook}{m}{sl}{<->ssub * gentiumbook/m/it}{}
-\DeclareFontShape{T5}{gentiumbook}{b}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{T5}{gentiumbook}{bx}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{T5}{gentiumbook}{bx}{it}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{T5}{gentiumbook}{bx}{n}{<->ssub * gentiumbook/b/n}{}
-\DeclareFontShape{T5}{gentiumbook}{sl}{sl}{<->ssub * gentiumbook/sl/it}{}
-\DeclareFontShape{T5}{gentiumbook}{sb}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{T5}{gentiumbook}{sbx}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{T5}{gentiumbook}{sbx}{it}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{T5}{gentiumbook}{sbx}{n}{<->ssub * gentiumbook/sb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/ts1gentium.fd b/Master/texmf-dist/tex/latex/gentium-tug/ts1gentium.fd
deleted file mode 100644
index 86cd1ee95c0..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/ts1gentium.fd
+++ /dev/null
@@ -1,58 +0,0 @@
-\ProvidesFile{ts1gentium.fd}
- [2022/05/30 Font definitions for gentium.]
-
-\expandafter\ifx\csname gentium@scale\endcsname\relax
- \let\gentium@@scale\@empty
-\else
- \edef\gentium@@scale{s*[\csname gentium@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{TS1}{gentium}{}
-
-\DeclareFontShape{TS1}{gentium}{m}{n}{
- <-> \gentium@@scale ts1-gentiumplus-regular
-}{}
-
-\DeclareFontShape{TS1}{gentium}{m}{it}{
- <-> \gentium@@scale ts1-gentiumplus-italic
-}{}
-
-\DeclareFontShape{TS1}{gentium}{b}{n}{
- <-> \gentium@@scale ts1-gentiumplus-bold
-}{}
-
-\DeclareFontShape{TS1}{gentium}{b}{it}{
- <-> \gentium@@scale ts1-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{TS1}{gentium}{sb}{n}{
- <-> \gentium@@scale ts1-gentiumbook-regular
-}{}
-
-\DeclareFontShape{TS1}{gentium}{sb}{it}{
- <-> \gentium@@scale ts1-gentiumbook-italic
-}{}
-
-\DeclareFontShape{TS1}{gentium}{eb}{n}{
- <-> \gentium@@scale ts1-gentiumbook-bold
-}{}
-
-\DeclareFontShape{TS1}{gentium}{eb}{it}{
- <-> \gentium@@scale ts1-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{TS1}{gentium}{m}{sl}{<->ssub * gentium/m/it}{}
-\DeclareFontShape{TS1}{gentium}{b}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{TS1}{gentium}{bx}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{TS1}{gentium}{bx}{it}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{TS1}{gentium}{bx}{n}{<->ssub * gentium/b/n}{}
-\DeclareFontShape{TS1}{gentium}{sb}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{TS1}{gentium}{sbx}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{TS1}{gentium}{sbx}{it}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{TS1}{gentium}{sbx}{n}{<->ssub * gentium/sb/n}{}
-\DeclareFontShape{TS1}{gentium}{eb}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{TS1}{gentium}{ebx}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{TS1}{gentium}{ebx}{it}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{TS1}{gentium}{ebx}{n}{<->ssub * gentium/eb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/ts1gentiumbook.fd b/Master/texmf-dist/tex/latex/gentium-tug/ts1gentiumbook.fd
deleted file mode 100644
index d7ab1c50651..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/ts1gentiumbook.fd
+++ /dev/null
@@ -1,55 +0,0 @@
-\ProvidesFile{ts1gentiumbook.fd}
- [2022/05/30 Font definitions for gentiumbook.]
-
-\expandafter\ifx\csname gentiumbook@scale\endcsname\relax
- \let\gentiumbook@@scale\@empty
-\else
- \edef\gentiumbook@@scale{s*[\csname gentiumbook@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{TS1}{gentiumbook}{}
-
-\DeclareFontShape{TS1}{gentiumbook}{m}{n}{
- <-> \gentiumbook@@scale ts1-gentiumbook-regular
-}{}
-
-\DeclareFontShape{TS1}{gentiumbook}{m}{it}{
- <-> \gentiumbook@@scale ts1-gentiumbook-italic
-}{}
-
-\DeclareFontShape{TS1}{gentiumbook}{b}{n}{
- <-> \gentiumbook@@scale ts1-gentiumbook-bold
-}{}
-
-\DeclareFontShape{TS1}{gentiumbook}{b}{it}{
- <-> \gentiumbook@@scale ts1-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{TS1}{gentiumbook}{sl}{n}{
- <-> \gentiumbook@@scale ts1-gentiumplus-regular
-}{}
-
-\DeclareFontShape{TS1}{gentiumbook}{sl}{it}{
- <-> \gentiumbook@@scale ts1-gentiumplus-italic
-}{}
-
-\DeclareFontShape{TS1}{gentiumbook}{sb}{n}{
- <-> \gentiumbook@@scale ts1-gentiumplus-bold
-}{}
-
-\DeclareFontShape{TS1}{gentiumbook}{sb}{it}{
- <-> \gentiumbook@@scale ts1-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{TS1}{gentiumbook}{m}{sl}{<->ssub * gentiumbook/m/it}{}
-\DeclareFontShape{TS1}{gentiumbook}{b}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{TS1}{gentiumbook}{bx}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{TS1}{gentiumbook}{bx}{it}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{TS1}{gentiumbook}{bx}{n}{<->ssub * gentiumbook/b/n}{}
-\DeclareFontShape{TS1}{gentiumbook}{sl}{sl}{<->ssub * gentiumbook/sl/it}{}
-\DeclareFontShape{TS1}{gentiumbook}{sb}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{TS1}{gentiumbook}{sbx}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{TS1}{gentiumbook}{sbx}{it}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{TS1}{gentiumbook}{sbx}{n}{<->ssub * gentiumbook/sb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/x2gentium.fd b/Master/texmf-dist/tex/latex/gentium-tug/x2gentium.fd
deleted file mode 100644
index 5de43cb035b..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/x2gentium.fd
+++ /dev/null
@@ -1,90 +0,0 @@
-\ProvidesFile{x2gentium.fd}
- [2022/05/30 Font definitions for gentium.]
-
-\expandafter\ifx\csname gentium@scale\endcsname\relax
- \let\gentium@@scale\@empty
-\else
- \edef\gentium@@scale{s*[\csname gentium@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{X2}{gentium}{}
-
-\DeclareFontShape{X2}{gentium}{m}{n}{
- <-> \gentium@@scale x2-gentiumplus-regular
-}{}
-
-\DeclareFontShape{X2}{gentium}{m}{it}{
- <-> \gentium@@scale x2-gentiumplus-italic
-}{}
-
-\DeclareFontShape{X2}{gentium}{b}{n}{
- <-> \gentium@@scale x2-gentiumplus-bold
-}{}
-
-\DeclareFontShape{X2}{gentium}{b}{it}{
- <-> \gentium@@scale x2-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{X2}{gentium}{sb}{n}{
- <-> \gentium@@scale x2-gentiumbook-regular
-}{}
-
-\DeclareFontShape{X2}{gentium}{sb}{it}{
- <-> \gentium@@scale x2-gentiumbook-italic
-}{}
-
-\DeclareFontShape{X2}{gentium}{eb}{n}{
- <-> \gentium@@scale x2-gentiumbook-bold
-}{}
-
-\DeclareFontShape{X2}{gentium}{eb}{it}{
- <-> \gentium@@scale x2-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{X2}{gentium}{m}{sc}{
- <-> \gentium@@scale x2-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{X2}{gentium}{m}{scit}{
- <-> \gentium@@scale x2-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{X2}{gentium}{b}{sc}{
- <-> \gentium@@scale x2-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{X2}{gentium}{b}{scit}{
- <-> \gentium@@scale x2-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{X2}{gentium}{sb}{sc}{
- <-> \gentium@@scale x2-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{X2}{gentium}{sb}{scit}{
- <-> \gentium@@scale x2-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{X2}{gentium}{eb}{sc}{
- <-> \gentium@@scale x2-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{X2}{gentium}{eb}{scit}{
- <-> \gentium@@scale x2-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{X2}{gentium}{m}{sl}{<->ssub * gentium/m/it}{}
-\DeclareFontShape{X2}{gentium}{b}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{X2}{gentium}{bx}{sl}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{X2}{gentium}{bx}{it}{<->ssub * gentium/b/it}{}
-\DeclareFontShape{X2}{gentium}{bx}{n}{<->ssub * gentium/b/n}{}
-\DeclareFontShape{X2}{gentium}{sb}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{X2}{gentium}{sbx}{sl}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{X2}{gentium}{sbx}{it}{<->ssub * gentium/sb/it}{}
-\DeclareFontShape{X2}{gentium}{sbx}{n}{<->ssub * gentium/sb/n}{}
-\DeclareFontShape{X2}{gentium}{eb}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{X2}{gentium}{ebx}{sl}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{X2}{gentium}{ebx}{it}{<->ssub * gentium/eb/it}{}
-\DeclareFontShape{X2}{gentium}{ebx}{n}{<->ssub * gentium/eb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/gentium-tug/x2gentiumbook.fd b/Master/texmf-dist/tex/latex/gentium-tug/x2gentiumbook.fd
deleted file mode 100644
index d1b7860265a..00000000000
--- a/Master/texmf-dist/tex/latex/gentium-tug/x2gentiumbook.fd
+++ /dev/null
@@ -1,87 +0,0 @@
-\ProvidesFile{x2gentiumbook.fd}
- [2022/05/30 Font definitions for gentiumbook.]
-
-\expandafter\ifx\csname gentiumbook@scale\endcsname\relax
- \let\gentiumbook@@scale\@empty
-\else
- \edef\gentiumbook@@scale{s*[\csname gentiumbook@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{X2}{gentiumbook}{}
-
-\DeclareFontShape{X2}{gentiumbook}{m}{n}{
- <-> \gentiumbook@@scale x2-gentiumbook-regular
-}{}
-
-\DeclareFontShape{X2}{gentiumbook}{m}{it}{
- <-> \gentiumbook@@scale x2-gentiumbook-italic
-}{}
-
-\DeclareFontShape{X2}{gentiumbook}{b}{n}{
- <-> \gentiumbook@@scale x2-gentiumbook-bold
-}{}
-
-\DeclareFontShape{X2}{gentiumbook}{b}{it}{
- <-> \gentiumbook@@scale x2-gentiumbook-bolditalic
-}{}
-
-\DeclareFontShape{X2}{gentiumbook}{sl}{n}{
- <-> \gentiumbook@@scale x2-gentiumplus-regular
-}{}
-
-\DeclareFontShape{X2}{gentiumbook}{sl}{it}{
- <-> \gentiumbook@@scale x2-gentiumplus-italic
-}{}
-
-\DeclareFontShape{X2}{gentiumbook}{sb}{n}{
- <-> \gentiumbook@@scale x2-gentiumplus-bold
-}{}
-
-\DeclareFontShape{X2}{gentiumbook}{sb}{it}{
- <-> \gentiumbook@@scale x2-gentiumplus-bolditalic
-}{}
-
-\DeclareFontShape{X2}{gentiumbook}{m}{sc}{
- <-> \gentiumbook@@scale x2-gentiumbook-regular-sc
-}{}
-
-\DeclareFontShape{X2}{gentiumbook}{m}{scit}{
- <-> \gentiumbook@@scale x2-gentiumbook-italic-sc
-}{}
-
-\DeclareFontShape{X2}{gentiumbook}{b}{sc}{
- <-> \gentiumbook@@scale x2-gentiumbook-bold-sc
-}{}
-
-\DeclareFontShape{X2}{gentiumbook}{b}{scit}{
- <-> \gentiumbook@@scale x2-gentiumbook-bolditalic-sc
-}{}
-
-\DeclareFontShape{X2}{gentiumbook}{sl}{sc}{
- <-> \gentiumbook@@scale x2-gentiumplus-regular-sc
-}{}
-
-\DeclareFontShape{X2}{gentiumbook}{sl}{scit}{
- <-> \gentiumbook@@scale x2-gentiumplus-italic-sc
-}{}
-
-\DeclareFontShape{X2}{gentiumbook}{sb}{sc}{
- <-> \gentiumbook@@scale x2-gentiumplus-bold-sc
-}{}
-
-\DeclareFontShape{X2}{gentiumbook}{sb}{scit}{
- <-> \gentiumbook@@scale x2-gentiumplus-bolditalic-sc
-}{}
-
-\DeclareFontShape{X2}{gentiumbook}{m}{sl}{<->ssub * gentiumbook/m/it}{}
-\DeclareFontShape{X2}{gentiumbook}{b}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{X2}{gentiumbook}{bx}{sl}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{X2}{gentiumbook}{bx}{it}{<->ssub * gentiumbook/b/it}{}
-\DeclareFontShape{X2}{gentiumbook}{bx}{n}{<->ssub * gentiumbook/b/n}{}
-\DeclareFontShape{X2}{gentiumbook}{sl}{sl}{<->ssub * gentiumbook/sl/it}{}
-\DeclareFontShape{X2}{gentiumbook}{sb}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{X2}{gentiumbook}{sbx}{sl}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{X2}{gentiumbook}{sbx}{it}{<->ssub * gentiumbook/sb/it}{}
-\DeclareFontShape{X2}{gentiumbook}{sbx}{n}{<->ssub * gentiumbook/sb/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/example-glossaries-xr.tex b/Master/texmf-dist/tex/latex/glossaries-extra/example-glossaries-xr.tex
index 02d77a0e39b..24a8c0d2d73 100644
--- a/Master/texmf-dist/tex/latex/glossaries-extra/example-glossaries-xr.tex
+++ b/Master/texmf-dist/tex/latex/glossaries-extra/example-glossaries-xr.tex
@@ -7,7 +7,7 @@
%% glossaries-extra.dtx (with options: `example-glossaries-xr.tex,package')
%%
%% glossaries-extra.dtx
-%% Copyright 2023 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-2021-11-22.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-2021-11-22.sty
index 1758ebb8f6c..4e677a61d0f 100644
--- a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-2021-11-22.sty
+++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-2021-11-22.sty
@@ -7,7 +7,7 @@
%% glossaries-extra.dtx (with options: `glossaries-extra-2021-11-22.sty,package')
%%
%% glossaries-extra.dtx
-%% Copyright 2023 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-abbrstyles.def b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-abbrstyles.def
index 38278ded3fa..a60b5878cf1 100644
--- a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-abbrstyles.def
+++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-abbrstyles.def
@@ -7,7 +7,7 @@
%% glossaries-extra.dtx (with options: `glossaries-extra-abbrstyles.def,package')
%%
%% glossaries-extra.dtx
-%% Copyright 2023 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -38,7 +38,7 @@
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
-\ProvidesFile{glossaries-extra-abbrstyles.def}[2023/06/28 v1.52 (NLCT)]
+\ProvidesFile{glossaries-extra-abbrstyles.def}[2025/01/03 v1.54 (NLCT)]
\newcommand*{\glsxtrlongshortname}{%
\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}%
}
@@ -4107,30 +4107,6 @@
\renewcommand*{\GLSxtrfullplformat}[2]{%
\GLSxtrlongplformat{##1}{##2}{\glsfirstlonguserfont}%
}%
- \renewcommand*{\glsxtrinlinefullformat}[2]{%
- \glsxtruserlongshortformat{##1}{##2}%
- {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}%
- }%
- \renewcommand*{\glsxtrinlinefullplformat}[2]{%
- \glsxtruserlongshortplformat{##1}{##2}%
- {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}%
- }%
- \renewcommand*{\Glsxtrinlinefullformat}[2]{%
- \Glsxtruserlongshortformat{##1}{##2}%
- {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}%
- }%
- \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
- \Glsxtruserlongshortplformat{##1}{##2}%
- {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}%
- }%
- \renewcommand*{\GLSxtrinlinefullformat}[2]{%
- \GLSxtruserlongshortformat{##1}{##2}%
- {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}%
- }%
- \renewcommand*{\GLSxtrinlinefullplformat}[2]{%
- \GLSxtruserlongshortplformat{##1}{##2}%
- {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}%
- }%
}
\newcommand*{\glsxtrlongshortuserdescname}{%
\protect\glslonguserfont{\the\glslongtok}%
diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-bib2gls-2021-11-22.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-bib2gls-2021-11-22.sty
index 19c3d97561c..53340997e34 100644
--- a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-bib2gls-2021-11-22.sty
+++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-bib2gls-2021-11-22.sty
@@ -7,7 +7,7 @@
%% glossaries-extra.dtx (with options: `glossaries-extra-bib2gls-2021-11-22.sty,package')
%%
%% glossaries-extra.dtx
-%% Copyright 2023 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-bib2gls.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-bib2gls.sty
index d320836a2d5..07911716435 100644
--- a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-bib2gls.sty
+++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-bib2gls.sty
@@ -7,7 +7,7 @@
%% glossaries-extra.dtx (with options: `glossaries-extra-bib2gls.sty,package')
%%
%% glossaries-extra.dtx
-%% Copyright 2023 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -40,8 +40,8 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v1.48}{2021-11-22}{glossaries-extra-bib2gls-2021-11-22.sty}
-\DeclareCurrentRelease{v1.53}{2023-09-29}
-\ProvidesPackage{glossaries-extra-bib2gls}[2023/09/29 v1.53 (NLCT)]
+\DeclareCurrentRelease{v1.54}{2025-01-03}
+\ProvidesPackage{glossaries-extra-bib2gls}[2025/01/03 v1.54 (NLCT)]
\ifglsacronym
\providecommand*{\printunsrtacronyms}[1][]{%
\printunsrtglossary[type=\acronymtype,#1]}%
@@ -78,6 +78,7 @@
\robustify\glsdisplaynumberlist
\renewcommand*{\glsentrynumberlist}[1]{\glsxtrusefield{#1}{location}}
\providecommand{\IfTeXParserLib}[2]{#2}
+\providecommand{\IfNotBibGls}[2]{#1}
\newcommand*{\glshex}{\string\u}
\newcommand*{\glscapturedgroup}{\string\$}
\ifdef\glshashchar
@@ -215,6 +216,16 @@
\setentrycounter[#1]{#2}%
\glsxtrmultisupplocation{#5}{#4}{#3}%
}
+\ExplSyntaxOn
+\cs_new:Npn \glsxtr@setlocationanchor #1 #2
+ {
+ \group_begin:
+ \glswrglossdisableanchorcmds
+ \exp_args:NNNe
+ \group_end:
+ \tl_set:Nn #1 { \text_purify:n { #2 } }
+ }
+\ExplSyntaxOff
\ifundef\hyperlink
{
\newcommand*{\glsxtrdisplaylocnameref}[8]{%
@@ -224,7 +235,7 @@
{
\newcommand*{\glsxtrdisplaylocnameref}[8]{%
\def\glsxtrrecentanchor{#6}%
- \def\glsxtrlocationanchor{#2.#7}%
+ \glsxtr@setlocationanchor\glsxtrlocationanchor{#2.#7}%
\let\glsxtractualanchor\glsxtrlocationanchor
\glsxtrsetactualanchor{#2}%
\ifcsdef{glsxtr#2locfmt}%
@@ -939,6 +950,30 @@
\string=\glshex 0099\string=\glshex 009A\string=\glshex 009B\string=\glshex 009C
\string=\glshex 009D\string=\glshex 009E\string=\glshex 009F
}
+\newcommand*{\glsxtrcontrolIrules}{%
+ \string'\glshex 200B\string'\string=\glshex 200C\string=\glshex 200D
+ \string=\glshex 200E\string=\glshex 200F\string=\glshex 0001
+ \string=\glshex 0002\string=\glshex 0003\string=\glshex 0004\string=\glshex 0005
+ \string=\glshex 0006\string=\glshex 0007\string=\glshex 0008
+ \string=\string'\glshex 0009\string'\string=\string'\glshex 000B\string'
+ \string=\glshex 000E\string=\glshex 000F\string=\string'\glshex
+0010\string'\string=\glshex 0011
+ \string=\glshex 0012\string=\glshex 0013\string=\glshex 0014\string=\glshex 0015
+ \string=\glshex 0016\string=\glshex 0017\string=\glshex 0018\string=\glshex 0019
+ \string=\glshex 001A\string=\glshex 001B\string=\glshex 0080
+ \string=\glshex 0081\string=\glshex 0082\string=\glshex 0083\string=\glshex 0084
+ \string=\glshex 0085\string=\glshex 0086\string=\glshex 0087\string=\glshex 0088
+ \string=\glshex 0089\string=\glshex 008A\string=\glshex 008B\string=\glshex 008C
+ \string=\glshex 008D\string=\glshex 008E\string=\glshex 008F\string=\glshex 0090
+ \string=\glshex 0091\string=\glshex 0092\string=\glshex 0093\string=\glshex 0094
+ \string=\glshex 0095\string=\glshex 0096\string=\glshex 0097\string=\glshex 0098
+ \string=\glshex 0099\string=\glshex 009A\string=\glshex 009B\string=\glshex 009C
+ \string=\glshex 009D\string=\glshex 009E\string=\glshex 009F
+}
+\newcommand*{\glsxtrcontrolIIrules}{%
+ \glshex 001C\string<\glshex 001D
+ \string<\glshex 001E\string<\glshex 001F
+}
\newcommand*{\glsxtrspacerules}{%
\string' \string'\string;
\string'\glshex 00A0\string'\string;
diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods-2021-11-22.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods-2021-11-22.sty
index 9bd57a68124..1f2259b4d72 100644
--- a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods-2021-11-22.sty
+++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods-2021-11-22.sty
@@ -7,7 +7,7 @@
%% glossaries-extra.dtx (with options: `glossaries-extra-stylemods-2021-11-22.sty,package')
%%
%% glossaries-extra.dtx
-%% Copyright 2023 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods.sty
index eb132de50b9..14b0c5a7691 100644
--- a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods.sty
+++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods.sty
@@ -7,7 +7,7 @@
%% glossaries-extra.dtx (with options: `glossaries-extra-stylemods.sty,package')
%%
%% glossaries-extra.dtx
-%% Copyright 2023 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -40,8 +40,8 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v1.48}{2021-11-22}{glossaries-extra-stylemods-2021-11-22.sty}
-\DeclareCurrentRelease{v1.53}{2023-09-29}
-\ProvidesPackage{glossaries-extra-stylemods}[2023/09/29 v1.53 (NLCT)]
+\DeclareCurrentRelease{v1.54}{2025-01-03}
+\ProvidesPackage{glossaries-extra-stylemods}[2025/01/03 v1.54 (NLCT)]
\newcommand*{\@glsxtr@loadstyles}{}
\DeclareOption{all}{%
\appto\@glsxtr@loadstyles{%
diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty
index 3e49330d312..68dd84a7ebc 100644
--- a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty
+++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty
@@ -7,7 +7,7 @@
%% glossaries-extra.dtx (with options: `glossaries-extra.sty,package')
%%
%% glossaries-extra.dtx
-%% Copyright 2023 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -40,8 +40,8 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v1.48}{2021-11-22}{glossaries-extra-2021-11-22.sty}
-\DeclareCurrentRelease{v1.53}{2023-09-29}
-\ProvidesPackage{glossaries-extra}[2023/09/29 v1.53 (NLCT)]
+\DeclareCurrentRelease{v1.54}{2025-01-03}
+\ProvidesPackage{glossaries-extra}[2025/01/03 v1.54 (NLCT)]
\RequirePackage{xkeyval}
\RequirePackage{etoolbox}
\@ifpackageloaded{glossaries}
@@ -978,9 +978,12 @@
\providecommand{\glssentencecase}[1]{\makefirstuc{#1}}
\providecommand{\glslowercase}[1]{\MakeTextLowercase{#1}}
\providecommand{\glsuppercase}[1]{\mfirstucMakeUppercase{#1}}
-\providecommand{\@Glsentryfield}[2]{%
+\ExplSyntaxOn
+\providecommand{\glspdfsentencecase}[1]{ \exp_args:Ne \MFUsentencecase { #1 } }
+\ExplSyntaxOff
+\def\@Glsentryfield#1#2{%
\glstexorpdfstring{\@Gls@entry@field{#1}{#2}}%
- {\MFUsentencecase{\@gls@entry@field{#1}{#2}}}%
+ {\glspdfsentencecase{\@gls@entry@field{#1}{#2}}}%
}
\ifdef\glstexorpdfstring
{}
@@ -1199,19 +1202,23 @@
#2%
}%
}
+\ExplSyntaxOn
+\clist_new:N \__glossariesxtr_glolist_clist
\newcommand*{\GlsXtrIfInGlossary}[4]{%
- \ifcsdef{glolist@#2}%
- {%
- \protected@edef\@glsxtr@tmp{#1}%
- \letcs\@glsxtr@tmplist{glolist@#2}%
- \expandafter\DTLifinlist\expandafter{\@glsxtr@tmp}{\@glsxtr@tmplist}%
- {#3}{#4}%
- }%
- {%
- \glsxtrundefaction{Glossary type `#1' doesn't exist}{}%
- #4%
- }%
+ \tl_if_exist:cTF { glolist@#2 }
+ {
+ \exp_args:NNv \clist_set:Nn
+ \__glossariesxtr_glolist_clist { glolist@#2 }
+ \clist_if_in:NnTF
+ \__glossariesxtr_glolist_clist { #1 }
+ { #3 } { #4 }
+ }
+ {
+ \glsxtrundefaction{Glossary ~ type ~ `#1' ~ doesn't ~ exist}{}
+ #4
+ }
}
+\ExplSyntaxOff
\newcommand*{\glsxtrifkeydefined}[3]{%
\key@ifundefined{glossentry}{#1}{#3}{#2}%
}
@@ -5040,9 +5047,17 @@
}%
}
-\newcommand{\glsxtrhyperlink}[2]{%
- \glsdoshowtarget{#1}{\hyperlink{#1}{#2}}%
-}%
+\ifdef\glsdohyperlinkhook
+{
+ \newcommand{\glsxtrhyperlink}[2]{%
+ \glsdoshowtarget{#1}{\glsdohyperlinkhook{#1}{#2}\hyperlink{#1}{#2}}%
+ }%
+}
+{
+ \newcommand{\glsxtrhyperlink}[2]{%
+ \glsdoshowtarget{#1}{\hyperlink{#1}{#2}}%
+ }%
+}
\renewrobustcmd*{\glshyperlink}[2][\glsentrytext{\@glo@label}]{%
\glsdoifexists{#2}%
{%
@@ -6910,6 +6925,11 @@
\GlsXtrNoGlsWarningTail
}
\newcommand*{\GlsXtrDefaultResourceOptions}{}
+\NewDocumentCommand\BibGlsOptions{m}{%
+ \protected@write\@auxout{}{\string\bibgls@options{#1}}%
+}
+\newcommand{\bibgls@options}[1]{}
+\@onlypreamble\BibGlsOptions
\newcommand*{\glsxtrresourcefile}[2][]{%
\@glsxtr@if@record@only
{\renewcommand{\glsindexingsetting}{bib2gls}}%
@@ -6993,6 +7013,10 @@
\newcommand*{\glsxtr@pluralsuffixes}[4]{}
\newcommand*{\glsxtr@shortcutsval}[1]{}
\newcommand*{\glsxtr@linkprefix}[1]{}
+\ifglsautomake
+ \providecommand{\@gls@run@unrestricted@shell}[1]{\immediate\write18{#1}}
+ \providecommand{\@gls@run@output@dir}[1]{}
+\fi
\newcommand*{\glsxtr@writefields}{%
\protected@write\@auxout{}%
{\string\providecommand*{\string\glsxtr@fields}[1]{}}%
@@ -7037,7 +7061,9 @@
\let\glsxtr@writefields\relax
\ifglsautomake
\IfFileExists{\jobname.aux}%
- {\immediate\write18{bib2gls \jobname}}{}%
+ {%
+ \@gls@run@unrestricted@shell{bib2gls \@gls@run@output@dir{--dir} \jobname}%
+ }{}%
\ifx\@gls@doautomake\@gls@doautomake@err
\let\@gls@doautomake\relax
\fi
@@ -7114,6 +7140,39 @@
\newcommand*{\GlsXtrStandaloneEntryName}[1]{%
\glstarget{#1}{\glossentryname{#1}}%
}
+\newcommand*{\Glsxtrglossentry}[1]{%
+ \glsxtrtitleorpdforheading
+ {\@Glsxtrglossentry{#1}}%
+ {\GlsXtrStandaloneEntryPdfNameFirstUc{#1}}%
+ {\GlsXtrStandaloneEntryHeadNameFirstUc{#1}}%
+}
+\newrobustcmd*{\@Glsxtrglossentry}[1]{%
+ \glsxtrtitleorpdforheading
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \begingroup
+ \protected@edef\glscurrententrylabel{\glsdetoklabel{#1}}%
+ \protected@edef\currentglossary{\GlsXtrStandaloneGlossaryType}%
+ \ifglshasparent{#1}%
+ {\GlsXtrStandaloneSubEntryItem{#1}}%
+ {\glsentryitem{#1}}%
+ \GlsXtrStandaloneEntryNameFirstUc{#1}%
+ \endgroup
+ }%
+ }%
+ {\GlsXtrStandaloneEntryPdfNameFirstUc{#1}}%
+ {\GlsXtrStandaloneEntryHeadNameFirstUc{#1}}%
+}
+\newcommand*{\GlsXtrStandaloneEntryHeadNameFirstUc}[1]{%
+ \Glsxtrheadname{#1}%
+}
+\newcommand*{\GlsXtrStandaloneEntryPdfNameFirstUc}[1]{%
+ \Glsentryname{#1}%
+}
+\newcommand*{\GlsXtrStandaloneEntryNameFirstUc}[1]{%
+ \glstarget{#1}{\Glossentryname{#1}}%
+}
\newcommand{\GlsXtrStandaloneGlossaryType}{\glsentrytype{\glscurrententrylabel}}
\newcommand*{\GlsXtrStandaloneSubEntryItem}[1]{%
\GlsXtrIfFieldEqNum{level}{#1}{1}{\glssubentryitem{#1}}{}%
@@ -7133,6 +7192,24 @@
{#1}%
}%
}
+\newrobustcmd*{\@glsxtrglossentryother}[3]{%
+ \glsxtrtitleorpdforheading
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \begingroup
+ \protected@edef\glscurrententrylabel{\glsdetoklabel{#1}}%
+ \protected@edef\currentglossary{\GlsXtrStandaloneGlossaryType}%
+ \ifglshasparent{#1}%
+ {\GlsXtrStandaloneSubEntryItem{#1}}%
+ {\glsentryitem{#1}}%
+ \GlsXtrStandaloneEntryOther{#1}{#2}%
+ \endgroup
+ }%
+ }%
+ {\GlsXtrStandaloneEntryPdfOther{#1}{#2}}%
+ {#3}%
+}
\newcommand*{\GlsXtrStandaloneEntryHeadOther}[2]{%
\ifcsdef{glsxtrhead#2}%
{\csuse{glsxtrhead#2}{#1}}%
@@ -7141,7 +7218,25 @@
\newcommand*{\GlsXtrStandaloneEntryPdfOther}[2]{%
\@gls@entry@field{#1}{#2}%
}
-\newrobustcmd*{\@glsxtrglossentryother}[3]{%
+\newcommand*{\GlsXtrStandaloneEntryOther}[2]{%
+ \glstarget{#1}{\glossentrynameother{#1}{#2}}%
+}
+\newcommand*{\Glsxtrglossentryother}[3]{%
+ \ifstrempty{#1}%
+ {%
+ \glsxtrtitleorpdforheading
+ {\@Glsxtrglossentryother{#2}{#3}{\GlsXtrStandaloneEntryHeadOtherFirstUc{#3}{#2}}}%
+ {\GlsXtrStandaloneEntryPdfOtherFirstUc{#2}{#3}}%
+ {\GlsXtrStandaloneEntryHeadOtherFirstUc{#3}{#2}}%
+ }%
+ {%
+ \glsxtrtitleorpdforheading
+ {\@Glsxtrglossentryother{#2}{#3}{#1}}%
+ {\GlsXtrStandaloneEntryPdfOtherFirstUc{#2}{#3}}%
+ {#1}%
+ }%
+}
+\newrobustcmd*{\@Glsxtrglossentryother}[3]{%
\glsxtrtitleorpdforheading
{%
\glsdoifexists{#1}%
@@ -7152,23 +7247,33 @@
\ifglshasparent{#1}%
{\GlsXtrStandaloneSubEntryItem{#1}}%
{\glsentryitem{#1}}%
- \GlsXtrStandaloneEntryOther{#1}{#2}%
+ \GlsXtrStandaloneEntryOtherFirstUc{#1}{#2}%
\endgroup
}%
}%
- {\GlsXtrStandaloneEntryPdfOther{#1}{#2}}%
+ {\GlsXtrStandaloneEntryPdfOtherFirstUc{#1}{#2}}%
{#3}%
}
-\newcommand*{\GlsXtrStandaloneEntryOther}[2]{%
- \glstarget{#1}{\glossentrynameother{#1}{#2}}%
+\newcommand*{\GlsXtrStandaloneEntryHeadOtherFirstUc}[2]{%
+ \ifcsdef{glsxtrhead#2}%
+ {\csuse{glsxtrhead#2}{#1}}%
+ {\@Gls@entry@field{\NoCaseChange{#1}}{#2}}%
+}
+\newcommand*{\GlsXtrStandaloneEntryPdfOtherFirstUc}[2]{%
+ \MFUsentencecase{\@gls@entry@field{#1}{#2}}%
+}
+\newcommand*{\GlsXtrStandaloneEntryOtherFirstUc}[2]{%
+ \glstarget{#1}{\Glossentrynameother{#1}{#2}}%
}
\newcommand{\glsxtrtarget}[2]{%
\GlsXtrIfFieldUndef{\glsxtrtargetfield}{#1}%
{%
\@glstarget{\glolinkprefix #1}{#2}%
\xGlsXtrSetField{#1}{\glsxtrtargetfield}{\glolinkprefix #1}%
- }{#2}%
+ }%
+ {\glsxtrtargetdup{#1}{#2}}%
}
+\newcommand{\glsxtrtargetdup}[2]{#2}
\newcommand{\glsxtrtargetfield}{target}
\ifdef\@printgloss@checkexists
{
@@ -9825,6 +9930,7 @@ defined}{}%
\@glsdoifexistsorwarn{#1}%
{%
\glssetabbrvfmt{\glscategory{#1}}%
+ \glsxtrprenamehook{#1}%
\glshasattribute{#1}{glossnamefont}%
{%
\protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}%
@@ -9887,6 +9993,7 @@ defined}{}%
\@glsdoifexistsorwarn{#1}%
{%
\glssetabbrvfmt{\glscategory{#1}}%
+ \glsxtrprenamehook{#1}%
\glshasattribute{#1}{glossnamefont}%
{%
\protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}%
@@ -9934,6 +10041,7 @@ defined}{}%
\@glsdoifexistsorwarn{#1}%
{%
\glssetabbrvfmt{\glscategory{#1}}%
+ \glsxtrprenamehook{#1}%
\glshasattribute{#1}{glossnamefont}%
{%
\protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}%
@@ -9963,6 +10071,7 @@ defined}{}%
\@glsdoifexistsorwarn{#1}%
{%
\glssetabbrvfmt{\glscategory{#1}}%
+ \glsxtrprenamehook{#1}%
\glshasattribute{#1}{glossnamefont}%
{%
\protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}%
@@ -9983,6 +10092,7 @@ defined}{}%
}%
}
}
+\newcommand*{\glsxtrprenamehook}[1]{}
\newcommand*{\glsxtrpostnamehook}[1]{%
\let\@glsnumberformat\@glsxtr@defaultnumberformat
\glsxtrdoautoindexname{#1}{indexname}%
@@ -10024,6 +10134,7 @@ defined}{}%
{%
\glsxtr@setaccessdisplay{#2}%
\glssetabbrvfmt{\glscategory{#1}}%
+ \glsxtrprenamehook{#1}%
\glshasattribute{#1}{glossnamefont}%
{%
\protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}%
@@ -10072,6 +10183,33 @@ defined}{}%
\glsxtrpostnamehook{#1}%
}%
}
+\newrobustcmd*{\Glossentrynameother}[2]{%
+ \@glsdoifexistsorwarn{#1}%
+ {%
+ \glsxtr@setaccessdisplay{#2}%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glsxtrprenamehook{#1}%
+ \glshasattribute{#1}{glossnamefont}%
+ {%
+ \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in glossnamefont attribute
+ for entry `#1'. Reverting to default \string\glsnamefont}%
+ \let\@glsxtr@glossnamefont\glsnamefont
+ }%
+ }%
+ {\let\@glsxtr@glossnamefont\glsnamefont}%
+ \@glsxtr@accessdisplay
+ {\@glsxtr@glossnamefont{\@Gls@entry@field{#1}{#2}}}%
+ {#1}%
+ \glsxtrpostnamehook{#1}%
+ }%
+}
\newif\if@glsxtr@format@override
\@glsxtr@format@overridefalse
\@ifpackageloaded{hyperref}
@@ -12354,7 +12492,7 @@ defined}{}%
\newcommand*{\Glsfmtlong}[1]{%
\glstexorpdfstring
{\Glsxtrtitlelong{#1}}%
- {\MFUsentencecase{\glsentrylong{#1}}}%
+ {\glspdfsentencecase{\glsentrylong{#1}}}%
}
\glsmfuaddmap{\glsfmtlong}{\Glsfmtlong}
\newcommand*{\GLSfmtlong}[1]{%
@@ -12371,7 +12509,7 @@ defined}{}%
\newcommand*{\Glsfmtlongpl}[1]{%
\glstexorpdfstring
{\Glsxtrtitlelongpl{#1}}%
- {\MFUsentencecase{\glsentrylongpl{#1}}}%
+ {\glspdfsentencecase{\glsentrylongpl{#1}}}%
}
\glsmfuaddmap{\glsfmtlongpl}{\Glsfmtlongpl}
\newcommand*{\GLSfmtlongpl}[1]{%
@@ -12390,7 +12528,7 @@ defined}{}%
\newcommand*{\Glsfmtfull}[1]{%
\glstexorpdfstring
{\Glsxtrtitlefull{#1}}%
- {\MFUsentencecase{\glspdffmtfull{#1}{}}}%
+ {\glspdfsentencecase{\glspdffmtfull{#1}{}}}%
}
\glsmfuaddmap{\glsfmtfull}{\Glsfmtfull}
\ExplSyntaxOn
@@ -12409,7 +12547,7 @@ defined}{}%
\newcommand*{\Glsfmtfullpl}[1]{%
\glstexorpdfstring
{\Glsxtrtitlefullpl{#1}}%
- {\MFUsentencecase{\glspdffmtfullpl{#1}{}}}%
+ {\glspdfsentencecase{\glspdffmtfullpl{#1}{}}}%
}
\glsmfuaddmap{\glsfmtfullpl}{\Glsfmtfullpl}
\ExplSyntaxOn
@@ -12558,7 +12696,7 @@ defined}{}%
\newcommand*{\Pglsfmtshort}[1]{%
\glstexorpdfstring
{\Pglsxtrtitleshort{#1}}%
- {\MFUsentencecase{%
+ {\glspdfsentencecase{%
\pglsprefix{#1}{prefix}%
\glsentryshort{#1}}%
}%
@@ -12579,7 +12717,7 @@ defined}{}%
\newcommand*{\Pglsfmtshortpl}[1]{%
\glstexorpdfstring
{\Pglsxtrtitleshortpl{#1}}%
- {\MFUsentencecase
+ {\glspdfsentencecase
{%
\pglsprefix{#1}{prefixplural}%
\glsentryshortpl{#1}%
@@ -12602,7 +12740,7 @@ defined}{}%
\newcommand*{\Pglsfmtlong}[1]{%
\glstexorpdfstring
{\Pglsxtrtitlelong{#1}}%
- {\MFUsentencecase{%
+ {\glspdfsentencecase{%
\pglsprefix{#1}{prefixfirst}%
\glsentrylong{#1}}%
}%
@@ -12623,7 +12761,7 @@ defined}{}%
\newcommand*{\Pglsfmtlongpl}[1]{%
\glstexorpdfstring
{\Pglsxtrtitlelongpl{#1}}%
- {\MFUsentencecase
+ {\glspdfsentencecase
{%
\pglsprefix{#1}{prefixfirstplural}%
\glsentrylongpl{#1}%
@@ -14022,33 +14160,45 @@ defined}{}%
{\string\mglsWriteSeparateRefsFalse\space can only be used before
the first instance of any \string\mgls-like command}}%
}
-\newcommand{\glsxtr@newmgls}[5]{%
+\newcommand{\glsxtr@newmgls}[6][]{%
\edef\@glsxr@newmgls@do{%
- \noexpand\newrobustcmd*{\expandonce{\csname #1\endcsname}}%
- {\noexpand\@gls@hyp@opt\expandonce{\csname ns@glsxtr@#1\endcsname}}%
- \noexpand\newcommand*{\expandonce{\csname ns@glsxtr@#1\endcsname}}[2][]{%
+ \noexpand\newrobustcmd*{\expandonce{\csname #2\endcsname}}%
+ {\noexpand\@gls@hyp@opt\expandonce{\csname ns@glsxtr@#2\endcsname}}%
+ \noexpand\newcommand*{\expandonce{\csname ns@glsxtr@#2\endcsname}}[2][]{%
\noexpand\new@ifnextchar[%
- {\expandonce{\csname glsxtr@#1\endcsname}{####1}{####2}}%
- {\expandonce{\csname glsxtr@#1\endcsname}{####1}{####2}[]}%
+ {\expandonce{\csname glsxtr@#2\endcsname}{####1}{####2}}%
+ {\expandonce{\csname glsxtr@#2\endcsname}{####1}{####2}[]}%
}%
- \noexpand\def\expandonce{\csname glsxtr@#1\endcsname}####1####2[####3]{%
- \noexpand\def\noexpand\glsxtrcurrentmglscsname{#1}%
+ \noexpand\def\expandonce{\csname glsxtr@#2\endcsname}####1####2[####3]{%
+ \noexpand\@glsxtr@mgls@linkdefs{\unexpanded{#1}}%
+ \noexpand\def\noexpand\glsxtrcurrentmglscsname{#2}%
\noexpand\glsxtr@mgls@inner{####1}{####2}{####3}%
- {\noexpand#2}{\noexpand#3}{\noexpand#4}{\noexpand#5}%
+ {\noexpand#3}{\noexpand#4}{\noexpand#5}{\noexpand#6}%
}%
}%
\@glsxr@newmgls@do
\ifx\@glsxtr@record@setting\@glsxtr@record@setting@off
\else
\ifdef\@glsxtr@mglslikelist
- {\xappto\@glsxtr@mglslikelist{,#1}}%
+ {\xappto\@glsxtr@mglslikelist{,#2}}%
{%
- \gdef\@glsxtr@mglslikelist{#1}%
+ \gdef\@glsxtr@mglslikelist{#2}%
\AtEndDocument{\immediate\protected@write\@auxout{}%
{\string\@glsxtr@mglslike{\@glsxtr@mglslikelist}}}%
}%
\fi
}
+\newcommand{\@glsxtr@mgls@linkdefs}[1]{%
+ \ifstrempty{#1}%
+ {%
+ \let\glsxtrifwasglslike\@firstoftwo
+ \def\glsxtrcurrentfield{}%
+ }%
+ {%
+ \let\glsxtrifwasglslike\@secondoftwo
+ \def\glsxtrcurrentfield{#1}%
+ }%
+}
\newcommand*{\@glsxtr@mglslike}[1]{}
\newcommand*{\GlsXtrMglsOrGls}[2]{%
\def\@glsxtr@mgls@or@gls@mcs{#1}%
@@ -14124,27 +14274,27 @@ defined}{}%
\def\@Glsfullorfirst#1#2[#3]{%
\ifglshasshort{#2}{\@Glsxtr@full{#1}{#2}[#3]}{\@Glsfirst@{#1}{#2}[#3]}%
}
-\glsxtr@newmgls{mglsshort}%
+\glsxtr@newmgls[short]{mglsshort}%
{\@glsshortortext}{\@glsshortortext}{\@glsshortortext}{\@glsshortortext}%
-\glsxtr@newmgls{mglslong}%
+\glsxtr@newmgls[long]{mglslong}%
{\@glslongortext}{\@glslongortext}{\@glslongortext}{\@glslongortext}%
-\glsxtr@newmgls{mglsfull}%
+\glsxtr@newmgls[first]{mglsfull}%
{\@glsfullorfirst}{\@glsfullorfirst}{\@glsfullorfirst}{\@glsfullorfirst}%
-\glsxtr@newmgls{Mglsshort}%
+\glsxtr@newmgls[short]{Mglsshort}%
{\@Glsshortortext}{\@glsshortortext}{\@Glsshortortext}{\@glsshortortext}%
\glsmfuaddmap{\mglsshort}{\Mglsshort}
-\glsxtr@newmgls{Mglslong}%
+\glsxtr@newmgls[long]{Mglslong}%
{\@Glslongortext}{\@glslongortext}{\@Glslongortext}{\@glslongortext}%
\glsmfuaddmap{\mglslong}{\Mglslong}
-\glsxtr@newmgls{Mglsfull}%
+\glsxtr@newmgls[first]{Mglsfull}%
{\@Glsfullorfirst}{\@glsfullorfirst}{\@Glsfullorfirst}{\@glsfullorfirst}%
\glsmfuaddmap{\mglsfull}{\Mglsfull}
-\glsxtr@newmgls{mglsname}%
+\glsxtr@newmgls[name]{mglsname}%
{\@glsname@}{\@glsname@}{\@glsname@}{\@glsname@}%
-\glsxtr@newmgls{Mglsname}%
+\glsxtr@newmgls[name]{Mglsname}%
{\@Glsname@}{\@glsname@}{\@Glsname@}{\@glsname@}%
\glsmfuaddmap{\mglsname}{\Mglsname}
-\glsxtr@newmgls{MGlsname}%
+\glsxtr@newmgls[name]{MGlsname}%
{\@Glsname@}{\@Glsname@}{\@Glsname@}{\@Glsname@}%
\glsmfublocker{\MGlsname}
\def\@glssymbolorgls#1#2[#3]{%
@@ -14153,12 +14303,12 @@ defined}{}%
\def\@glssymbolorGls#1#2[#3]{%
\ifglshassymbol{#2}{\@glssymbol@{#1}{#2}[#3]}{\@Gls@{#1}{#2}[#3]}%
}
-\glsxtr@newmgls{mglssymbol}%
+\glsxtr@newmgls[symbol]{mglssymbol}%
{\@glssymbolorgls}{\@glssymbolorgls}{\@glssymbolorgls}{\@glssymbolorgls}%
-\glsxtr@newmgls{Mglssymbol}%
+\glsxtr@newmgls[symbol]{Mglssymbol}%
{\@glssymbolorGls}{\@glssymbolorgls}{\@glssymbolorGls}{\@glssymbolorgls}%
\glsmfuaddmap{\mglssymbol}{\Mglssymbol}
-\glsxtr@newmgls{MGlssymbol}%
+\glsxtr@newmgls[symbol]{MGlssymbol}%
{\@glssymbolorGls}{\@glssymbolorGls}{\@glssymbolorGls}{\@glssymbolorGls}%
\glsmfublocker{\MGlssymbol}
\newcommand{\mglsfield}{useri}
@@ -14173,12 +14323,12 @@ defined}{}%
\expandafter\glssentencecase\expandafter{\glscurrentfieldvalue#3}}}%
{\@Gls@{#1}{#2}[#3]}%
}
-\glsxtr@newmgls{mglsusefield}%
+\glsxtr@newmgls[\mglsfield]{mglsusefield}%
{\@glsfieldorgls}{\@glsfieldorgls}{\@glsfieldorgls}{\@glsfieldorgls}%
-\glsxtr@newmgls{Mglsusefield}%
+\glsxtr@newmgls[\mglsfield]{Mglsusefield}%
{\@Glsfieldorgls}{\@glsfieldorgls}{\@Glsfieldorgls}{\@glsfieldorgls}%
\glsmfuaddmap{\mglsusefield}{\Mglsusefield}
-\glsxtr@newmgls{MGlsusefield}%
+\glsxtr@newmgls[\mglsfield]{MGlsusefield}%
{\@Glsfieldorgls}{\@Glsfieldorgls}{\@Glsfieldorgls}{\@Glsfieldorgls}%
\glsmfublocker{\MGlsusefield}
\newcommand*{\mpglsWarning}{%
diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex-2021-11-22.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex-2021-11-22.sty
index 45ce9dfc835..247528db1c5 100644
--- a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex-2021-11-22.sty
+++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex-2021-11-22.sty
@@ -7,7 +7,7 @@
%% glossaries-extra.dtx (with options: `glossary-bookindex-2021-11-22.sty,package')
%%
%% glossaries-extra.dtx
-%% Copyright 2023 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex.sty
index 89a30b762b4..e5369e5aa0f 100644
--- a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex.sty
+++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex.sty
@@ -7,7 +7,7 @@
%% glossaries-extra.dtx (with options: `glossary-bookindex.sty,package')
%%
%% glossaries-extra.dtx
-%% Copyright 2023 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -40,11 +40,13 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v1.48}{2021-11-22}{glossary-bookindex-2021-11-22.sty}
-\DeclareCurrentRelease{v1.53}{2023-09-29}
-\ProvidesPackage{glossary-bookindex}[2023/09/29 v1.53 (NLCT)]
+\DeclareCurrentRelease{v1.54}{2025-01-03}
+\ProvidesPackage{glossary-bookindex}[2025/01/03 v1.54 (NLCT)]
\RequirePackage{multicol}
\RequirePackage{glossary-tree}
\newcommand{\glsxtrbookindexcols}{2}
+\newcommand*{\glsxtrbookindextarget}[2]{\glstarget{#1}{#2}}
+\newcommand*{\glsxtrbookindexsubtarget}[2]{\glsxtrbookindextarget{#1}{#2}}
\newcommand*{\glsxtrbookindexname}[1]{\glossentryname{#1}}
\newcommand*{\glsxtrbookindexsubname}[1]{\glsxtrbookindexname{#1}}
\providecommand*{\glsxtrprelocation}{\space}
@@ -72,12 +74,13 @@
\newcommand{\glsxtrbookindexpostgroupskip}{\indexspace}
\newcommand{\glsxtrbookindexpresubgroupskip}[3]{\par\medskip}
\newcommand{\glsxtrbookindexpostsubgroupskip}[2]{\par\medskip}
+\newcommand{\glsxtrbookindexsubsubitem}[1]{\glstreesubsubitem}
\newcommand*{\glsxtrbookindexformatheader}[1]{%
\par{\centering\glstreegroupheaderfmt{#1}\par}%
}
\newcommand*{\glsxtrbookindexformatsubheader}[5]{%
\ifnum#2>1\relax
- \glstreesubsubitem\glstreegroupheaderfmt{#5}%
+ \glsxtrbookindexsubsubitem{#2}\glstreegroupheaderfmt{#5}%
\else
\glstreesubitem\glstreegroupheaderfmt{#5}%
\fi
@@ -171,7 +174,7 @@
\let\@glsxtr@bookindex@subsubatendgroup\relax
\glstreeitem
\glsentryitem{##1}%
- \glstarget{##1}{\glsxtrbookindexname{##1}}%
+ \glsxtrbookindextarget{##1}{\glsxtrbookindexname{##1}}%
\glsxtrbookindexprelocation{##1}%
\glsxtrbookindexlocation{##1}{##2}%
}%
@@ -202,9 +205,9 @@
\edef\@glsxtr@bookindex@atsubsubendgroup{%
\noexpand\glsxtrbookindexatsubsubendgroup{##1}%
}%
- \glstreesubsubitem
+ \glsxtrbookindexsubsubitem{##1}%
\fi
- \glstarget{##2}{\glsxtrbookindexsubname{##2}}%
+ \glsxtrbookindexsubtarget{##2}{\glsxtrbookindexsubname{##2}}%
\glsxtrbookindexsubprelocation{##2}%
\glsxtrbookindexsublocation{##2}{##3}%
}%
diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-longextra-2021-11-22.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-longextra-2021-11-22.sty
index 88cd6f37a5f..4460b463501 100644
--- a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-longextra-2021-11-22.sty
+++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-longextra-2021-11-22.sty
@@ -7,7 +7,7 @@
%% glossaries-extra.dtx (with options: `glossary-longextra-2021-11-22.sty,package')
%%
%% glossaries-extra.dtx
-%% Copyright 2023 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-longextra.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-longextra.sty
index c6e9c4c12db..265ede1dad9 100644
--- a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-longextra.sty
+++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-longextra.sty
@@ -7,7 +7,7 @@
%% glossaries-extra.dtx (with options: `glossary-longextra.sty,package')
%%
%% glossaries-extra.dtx
-%% Copyright 2023 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -40,8 +40,8 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v1.48}{2021-11-22}{glossary-longextra-2021-11-22.sty}
-\DeclareCurrentRelease{v1.53}{2023-09-29}
-\ProvidesPackage{glossary-longextra}[2023/09/29 v1.53 (NLCT)]
+\DeclareCurrentRelease{v1.54}{2025-01-03}
+\ProvidesPackage{glossary-longextra}[2025/01/03 v1.54 (NLCT)]
\RequirePackage{glossary-longbooktabs}
\newcommand{\glslongextraNameFmt}[1]{%
\glsentryitem{#1}\glstarget{#1}{\glossentryname{#1}}%
diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-table.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-table.sty
index 529e7c904ed..9c70599a6b1 100644
--- a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-table.sty
+++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-table.sty
@@ -7,7 +7,7 @@
%% glossaries-extra.dtx (with options: `glossary-table.sty,package')
%%
%% glossaries-extra.dtx
-%% Copyright 2023 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -39,7 +39,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{glossary-table}[2023/09/29 v1.53 (NLCT)]
+\ProvidesPackage{glossary-table}[2025/01/03 v1.54 (NLCT)]
\RequirePackage{longtable}
\RequirePackage{array}
\RequirePackage{booktabs}
diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-topic-2021-11-22.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-topic-2021-11-22.sty
index 3b8e06b179b..bbb89f53581 100644
--- a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-topic-2021-11-22.sty
+++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-topic-2021-11-22.sty
@@ -7,7 +7,7 @@
%% glossaries-extra.dtx (with options: `glossary-topic-2021-11-22.sty,package')
%%
%% glossaries-extra.dtx
-%% Copyright 2023 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-topic.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-topic.sty
index 010a949ed8a..b9f63032401 100644
--- a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-topic.sty
+++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-topic.sty
@@ -7,7 +7,7 @@
%% glossaries-extra.dtx (with options: `glossary-topic.sty,package')
%%
%% glossaries-extra.dtx
-%% Copyright 2023 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -40,8 +40,8 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v1.48}{2021-11-22}{glossary-topic-2021-11-22.sty}
-\DeclareCurrentRelease{v1.53}{2023-09-29}
-\ProvidesPackage{glossary-topic}[2023/09/29 v1.53 (NLCT)]
+\DeclareCurrentRelease{v1.54}{2025-01-03}
+\ProvidesPackage{glossary-topic}[2025/01/03 v1.54 (NLCT)]
\RequirePackage{multicol}
\newglossarystyle{topic}{%
\renewenvironment{theglossary}%
diff --git a/Master/texmf-dist/tex/latex/glossaries/base/glossaries-babel.sty b/Master/texmf-dist/tex/latex/glossaries/base/glossaries-babel.sty
index ea6da858554..dc7f62e03de 100644
--- a/Master/texmf-dist/tex/latex/glossaries/base/glossaries-babel.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/base/glossaries-babel.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
@@ -41,8 +41,8 @@
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v4.46}{2020-03-19}{glossaries-babel-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossaries-babel-2021-11-01.sty}
-\DeclareCurrentRelease{v4.54}{2024-04-03}
-\ProvidesPackage{glossaries-babel}[2024/04/03 v4.54 (NLCT)]
+\DeclareCurrentRelease{v4.55}{2024-11-01}
+\ProvidesPackage{glossaries-babel}[2024/11/01 v4.55 (NLCT)]
\RequirePackage{tracklang}
\let\glsifusetranslator\@secondoftwo
\AnyTrackedLanguages
diff --git a/Master/texmf-dist/tex/latex/glossaries/base/glossaries-compatible-207.sty b/Master/texmf-dist/tex/latex/glossaries/base/glossaries-compatible-207.sty
index 2c5e7502b29..2ffc12a5492 100644
--- a/Master/texmf-dist/tex/latex/glossaries/base/glossaries-compatible-207.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/base/glossaries-compatible-207.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
@@ -41,8 +41,8 @@
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v4.46}{2020-03-19}{glossaries-compatible-207-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossaries-compatible-207-2021-11-01.sty}
-\DeclareCurrentRelease{v4.54}{2024-04-03}
-\ProvidesPackage{glossaries-compatible-207}[2024/04/03 v4.54 (NLCT)]
+\DeclareCurrentRelease{v4.55}{2024-11-01}
+\ProvidesPackage{glossaries-compatible-207}[2024/11/01 v4.55 (NLCT)]
\PackageError{glossaries}
{glossaries-compatible-207.sty no longer available. Use rollback if you need it}%
{Try \string\usepackage{glossaries}[=v4.46]}
diff --git a/Master/texmf-dist/tex/latex/glossaries/base/glossaries-compatible-307.sty b/Master/texmf-dist/tex/latex/glossaries/base/glossaries-compatible-307.sty
index d8783c80b7a..0e2e9bf3a9c 100644
--- a/Master/texmf-dist/tex/latex/glossaries/base/glossaries-compatible-307.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/base/glossaries-compatible-307.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
@@ -41,8 +41,8 @@
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v4.46}{2020-03-19}{glossaries-compatible-307-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossaries-compatible-307-2021-11-01.sty}
-\DeclareCurrentRelease{v4.54}{2024-04-03}
-\ProvidesPackage{glossaries-compatible-307}[2024/04/03 v4.54 (NLCT)]
+\DeclareCurrentRelease{v4.55}{2024-11-01}
+\ProvidesPackage{glossaries-compatible-307}[2024/11/01 v4.55 (NLCT)]
\PackageError{glossaries}
{glossaries-compatible-307.sty no longer available. Use rollback if you need it}%
{Try \string\usepackage{glossaries}[=v4.46]}
diff --git a/Master/texmf-dist/tex/latex/glossaries/base/glossaries-polyglossia.sty b/Master/texmf-dist/tex/latex/glossaries/base/glossaries-polyglossia.sty
index 6b5a9c96738..e308e353db5 100644
--- a/Master/texmf-dist/tex/latex/glossaries/base/glossaries-polyglossia.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/base/glossaries-polyglossia.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
@@ -41,8 +41,8 @@
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v4.46}{2020-03-19}{glossaries-polyglossia-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossaries-polyglossia-2021-11-01.sty}
-\DeclareCurrentRelease{v4.54}{2024-04-03}
-\ProvidesPackage{glossaries-polyglossia}[2024/04/03 v4.54 (NLCT)]
+\DeclareCurrentRelease{v4.55}{2024-11-01}
+\ProvidesPackage{glossaries-polyglossia}[2024/11/01 v4.55 (NLCT)]
\RequirePackage{tracklang}
\let\glsifusetranslator\@secondoftwo
\AnyTrackedLanguages
diff --git a/Master/texmf-dist/tex/latex/glossaries/base/glossaries-prefix.sty b/Master/texmf-dist/tex/latex/glossaries/base/glossaries-prefix.sty
index ca685a89465..550a66d82b4 100644
--- a/Master/texmf-dist/tex/latex/glossaries/base/glossaries-prefix.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/base/glossaries-prefix.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
@@ -41,8 +41,8 @@
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v4.46}{2020-03-19}{glossaries-prefix-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossaries-prefix-2021-11-01.sty}
-\DeclareCurrentRelease{v4.54}{2024-04-03}
-\ProvidesPackage{glossaries-prefix}[2024/04/03 v4.54 (NLCT)]
+\DeclareCurrentRelease{v4.55}{2024-11-01}
+\ProvidesPackage{glossaries-prefix}[2024/11/01 v4.55 (NLCT)]
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{glossaries}}
\ProcessOptions
\RequirePackage{glossaries}
diff --git a/Master/texmf-dist/tex/latex/glossaries/base/glossaries.sty b/Master/texmf-dist/tex/latex/glossaries/base/glossaries.sty
index 22513d57d1a..1fe3220a6cf 100644
--- a/Master/texmf-dist/tex/latex/glossaries/base/glossaries.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/base/glossaries.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
@@ -42,8 +42,9 @@
\DeclareRelease{v4.46}{2020-03-19}{glossaries-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossaries-2021-11-01.sty}
\DeclareRelease{v4.52}{2022-11-03}{glossaries-2022-11-03.sty}
-\DeclareCurrentRelease{v4.54}{2024-04-03}
-\ProvidesPackage{glossaries}[2024/04/03 v4.54 (NLCT)]
+\DeclareRelease{v4.54}{2024-04-03}{glossaries-2024-04-03.sty}
+\DeclareCurrentRelease{v4.55}{2024-11-01}
+\ProvidesPackage{glossaries}[2024/11/01 v4.55 (NLCT)]
\RequirePackage{ifthen}
\RequirePackage{xkeyval}[2006/11/18]
\RequirePackage{mfirstuc}
@@ -72,7 +73,6 @@
}
\ExplSyntaxOff
\RequirePackage{xfor}
-\RequirePackage{datatool-base}
\RequirePackage{amsgen}
\RequirePackage{etoolbox}
\newif\if@gls@docloaded
@@ -851,6 +851,12 @@ removed. Rollback required or use a newer alternative}
\let\@gls@usetranslator\relax
\let\glsifusetranslator\@secondoftwo
}
+\define@key{glossaries.sty}{locales}{%
+ \renewcommand{\@gls@requested@languages}{#1}%
+ \glstranslatetrue
+ \let\@gls@usetranslator\relax
+ \let\glsifusetranslator\@secondoftwo
+}
\define@boolkey{glossaries.sty}[gls]{indexonlyfirst}[true]{}
\glsindexonlyfirstfalse
\define@boolkey{glossaries.sty}[gls]{hyperfirst}[true]{}
@@ -1018,7 +1024,7 @@ removed. Rollback required or use a newer alternative}
\renewcommand{\gls@automake@makegloss}{}%
\or
\glsautomaketrue
- \renewcommand{\gls@automake@makegloss}{makeglossaries}%
+ \renewcommand{\gls@automake@makegloss}{makeglossaries \@gls@run@output@dir{-d}}%
\or
\glsautomaketrue
\renewcommand{\gls@automake@makegloss}{makeglossaries-lite}%
@@ -1042,7 +1048,7 @@ removed. Rollback required or use a newer alternative}
\renewcommand{\gls@automake@option}{automakegloss}%
\def\gls@automake@val{makegloss}%
\def\gls@automake@nr{3}%
- \renewcommand{\gls@automake@makegloss}{makeglossaries}%
+ \renewcommand{\gls@automake@makegloss}{makeglossaries \@gls@run@output@dir{-d}}%
\let\@gls@doautomake\@gls@do@automake@err
}
\@gls@declareoption{automakeglosslite}{%
@@ -1179,12 +1185,90 @@ removed. Rollback required or use a newer alternative}
\fi
}
\ProcessOptionsX
+\newcommand*{\@gls@runshell}[1]{%
+ \PackageWarning{glossaries}{Ignoring attempt to run command `#1'}%
+}
+\newcommand*{\@gls@run@unrestricted@shell}[1]{\@gls@runshell{#1}}
+\newcommand*{\@gls@run@output@dir}[1]{}
+\newcommand*{\@gls@run@output@file}[1]{#1}
\ifglsautomake
- \ifdef\directlua{\RequirePackage{shellesc}}{}
+ \newcommand*{\@gls@loadshellesc}{\ifdef\directlua{\RequirePackage{shellesc}}{}}%
+ \ExplSyntaxOn
+ \sys_if_shell:TF
+ {
+ \sys_if_shell_unrestricted:F
+ {
+ \cs_set:Npn \@gls@run@unrestricted@shell #1
+ {
+ \GlossariesWarningNoLine
+ {
+ Unrestricted ~ shell ~ required ~ for ~ current ~
+ automake ~ setting. ~
+ Either ~ remove ~ automake ~ option ~ and ~ run ~ the ~
+ system ~ command ~ outside ~ of ~ TeX ~ or ~ enable ~
+ unrestricted ~ mode ~ (but ~ be ~ aware ~ of ~ the ~
+ security ~ risks ~ in ~ doing ~ so)
+ }
+ \@gls@runshell { #1 }
+ }
+ }
+ \tl_if_exist:NF \l_glossaries_output_dir_tl
+ {
+ \tl_new:N \l_glossaries_output_dir_tl
+ \cs_if_exist:NT \sys_get_shell:nnN
+ {
+ \sys_get_shell:nnNF
+ { kpsewhich ~ --var-value=TEXMF_OUTPUT_DIRECTORY }
+ { }
+ \l_glossaries_output_dir_tl
+ {
+ \tl_clear:N \l_glossaries_output_dir_tl
+ }
+ }
+ }
+ \tl_if_empty:NF \l_glossaries_output_dir_tl
+ {
+ \cs_set:Npn \@gls@run@output@dir #1
+ {
+ #1 ~ \glsquote { \l_glossaries_output_dir_tl }
+ }
+ \sys_if_platform_windows:TF
+ {
+ \cs_set:Npn \@gls@run@output@file #1
+ {
+ \glsquote { \l_glossaries_output_dir_tl } \glsbackslash #1
+ }
+ }
+ {
+ \cs_set:Npn \@gls@run@output@file #1
+ {
+ \glsquote { \l_glossaries_output_dir_tl } / #1
+ }
+ }
+ }
+ \int_if_zero:nTF { \gls@automake@nr }
+ {
+ \cs_set:Npn \@gls@runshell #1 { \exp_args:Ne \write18 { #1 } }
+ }
+ {
+ \cs_set:Npn \@gls@runshell #1 { \sys_shell_now:e { #1 } }
+ \cs_set_eq:NN \@gls@loadshellesc \relax
+ }
+ }
+ {
+ \cs_set_eq:NN \@gls@loadshellesc \relax
+ \legacy_if_set_false:n { glsautomake }
+ \PackageWarning { glossaries }
+ {
+ Can't ~ implement ~ automake: ~ no ~ shell
+ }
+ }
+ \ExplSyntaxOff
+ \@gls@loadshellesc
\fi
\disable@keys{glossaries.sty}{compatible-2.07,%
xindy,xindygloss,xindynoglsnumbers,makeindex,%
- acronym,translate,notranslate,languages,nolong,nosuper,notree,nostyles,%
+ acronym,translate,notranslate,languages,locales,nolong,nosuper,notree,nostyles,%
nomain,noglossaryindex}
\newcommand*{\setupglossaries}[1]{%
\renewcommand*{\@gls@setacrstyle}{}%
@@ -1348,6 +1432,7 @@ removed. Rollback required or use a newer alternative}
\translate{Numbers (glossaries)}}%
}{}%
\fi
+\RequirePackage{datatool-base}
\DeclareRobustCommand*{\nopostdesc}{}
\newcommand*{\@nopostdesc}{%
\let\org@glspostdescription\glspostdescription
@@ -2173,9 +2258,12 @@ removed. Rollback required or use a newer alternative}
}
\newcommand*{\gls@set@xr@key}[3]{%
\renewcommand*{\gls@xr@key}{#1}%
- \gls@checkseeallowed
- \def#2{#3}%
- \@glo@seeautonumberlist
+ \ifstrempty{#3}{\def#2{}}%
+ {%
+ \gls@checkseeallowed
+ \def#2{#3}%
+ \@glo@seeautonumberlist
+ }%
}
\newcommand*{\gls@xr@key}{see}
\newcommand*{\gls@checkseeallowed}{%
@@ -5548,17 +5636,16 @@ has already been written}%
\ifdefvoid\gls@codepage
{\let\@@gls@codepage\@empty}%
{\def\@@gls@codepage{-C \gls@codepage\space}}%
- \edef\@gls@dothiswrite{\noexpand\write18{xindy
+ \@gls@run@unrestricted@shell{xindy
-I xindy
\@gls@order
-L \@gls@langmod\space
- -M \gls@istfilebase\space
+ -M \@gls@run@output@file{\gls@istfilebase}
\@@gls@codepage
- -t \jobname.\csuse{@glotype@#1@log}
- -o \jobname.\csuse{@glotype@#1@in}
- \jobname.\csuse{@glotype@#1@out}}%
+ -t \@gls@run@output@file{\jobname.\csuse{@glotype@#1@log}}
+ -o \@gls@run@output@file{\jobname.\csuse{@glotype@#1@in}}
+ \@gls@run@output@file{\jobname.\csuse{@glotype@#1@out}}%
}%
- \@gls@dothiswrite
}%
{%
\GlossariesWarning{Can't make glossary `#1', it doesn't exist}%
@@ -5572,13 +5659,12 @@ has already been written}%
\ifdefstring{\glsorder}{letter}%
{\def\@gls@order{-l }}%
{\let\@gls@order\@empty}%
- \edef\@gls@dothiswrite{\noexpand\write18{makeindex \@gls@order
- -s \istfilename\space
- -t \jobname.\csuse{@glotype@#1@log}
- -o \jobname.\csuse{@glotype@#1@in}
- \jobname.\csuse{@glotype@#1@out}}%
+ \@gls@runshell{makeindex \@gls@order
+ -s \@gls@run@output@file{\istfilename}
+ -t \@gls@run@output@file{\jobname.\csuse{@glotype@#1@log}}
+ -o \@gls@run@output@file{\jobname.\csuse{@glotype@#1@in}}
+ \@gls@run@output@file{\jobname.\csuse{@glotype@#1@out}}%
}%
- \@gls@dothiswrite
}%
{%
\GlossariesWarning{Can't make glossary `#1', it doesn't exist}%
@@ -5598,17 +5684,16 @@ has already been written}%
\ifdefvoid\gls@codepage
{\let\@@gls@codepage\@empty}%
{\def\@@gls@codepage{-C \gls@codepage\space}}%
- \edef\@gls@dothiswrite{\noexpand\immediate\noexpand\write18{xindy
+ \@gls@run@unrestricted@shell{xindy
-I xindy
\@gls@order
-L \@gls@langmod\space
- -M \gls@istfilebase\space
+ -M \@gls@run@output@file{\gls@istfilebase}
\@@gls@codepage
- -t \jobname.\csuse{@glotype@#1@log}
- -o \jobname.\csuse{@glotype@#1@in}
- \jobname.\csuse{@glotype@#1@out}}%
+ -t \@gls@run@output@file{\jobname.\csuse{@glotype@#1@log}}
+ -o \@gls@run@output@file{\jobname.\csuse{@glotype@#1@in}}
+ \@gls@run@output@file{\jobname.\csuse{@glotype@#1@out}}%
}%
- \@gls@dothiswrite
}%
{\GlossariesWarning{can't automake `#1': \jobname.\csuse{@glotype@#1@out}
doesn't exist. Rerun may be required}}%
@@ -5626,13 +5711,12 @@ has already been written}%
\ifdefstring{\glsorder}{letter}%
{\def\@gls@order{-l }}%
{\let\@gls@order\@empty}%
- \edef\@gls@dothiswrite{\noexpand\immediate\noexpand\write18{makeindex \@gls@order
- -s \istfilename\space
- -t \jobname.\csuse{@glotype@#1@log}
- -o \jobname.\csuse{@glotype@#1@in}
- \jobname.\csuse{@glotype@#1@out}}%
+ \@gls@runshell{makeindex \@gls@order
+ -s \@gls@run@output@file{\istfilename}
+ -t \@gls@run@output@file{\jobname.\csuse{@glotype@#1@log}}
+ -o \@gls@run@output@file{\jobname.\csuse{@glotype@#1@in}}
+ \@gls@run@output@file{\jobname.\csuse{@glotype@#1@out}}%
}%
- \@gls@dothiswrite
}%
{\GlossariesWarning{can't automake `#1': \jobname.\csuse{@glotype@#1@out}
doesn't exist. Rerun may be required}}%
@@ -5658,7 +5742,7 @@ has already been written}%
\ifdefempty\gls@automake@makegloss{}%
{%
\IfFileExists{\jobname.aux}%
- {\immediate\write18{\gls@automake@makegloss\space \jobname}}{}%
+ {\@gls@run@unrestricted@shell{\gls@automake@makegloss\space \jobname}}{}%
\glsautomakefalse
\renewcommand*{\@gls@doautomake}{}%
}%
@@ -6319,6 +6403,171 @@ you
hasn't been used,^^Jthe glossaries will not be updated}%
}%
}
+\ExplSyntaxOn
+\cs_if_exist:NTF \datatool_sortwordseq:NN
+ {
+ \seq_new:N \l__glossaries_sort_seq
+ \prop_new:N \l__glossaries_sort_prop
+ \tl_new:N \l__glossaries_sort_value_tl
+ \cs_new:Nn \__glossaries_set_sort_seq:n
+ {
+ \seq_clear:N \l__glossaries_sort_seq
+ \prop_clear:N \l__glossaries_sort_prop
+ \forlistcsloop
+ \__glossaries_add_sort_item:n
+ { @glsref@ #1 }
+ }
+ \cs_new:Nn \__glossaries_add_sort_item:n
+ {
+ \seq_if_in:NnF \l__glossaries_sort_seq { #1 }
+ {
+ \ifglshasparent { #1 }
+ {
+ \exp_args:Nv \__glossaries_add_sort_item:n
+ { glo@ #1 @parent }
+ \prop_get:NvN \l__glossaries_sort_prop
+ { glo@ #1 @parent }
+ \l__glossaries_sort_value_tl
+ \quark_if_no_value:NTF
+ \l__glossaries_sort_value_tl
+ {
+ \tl_clear:N \l__glossaries_sort_value_tl
+ }
+ {
+ \tl_put_right:Nn \l__glossaries_sort_value_tl
+ { \datatoolctrlboundary \datatoolasciistart }
+ }
+ }
+ {
+ \tl_clear:N \l__glossaries_sort_value_tl
+ }
+ \tl_put_right:Nv \l__glossaries_sort_value_tl
+ { glo@ #1 @sort }
+ \prop_put:NnV \l__glossaries_sort_prop { #1 }
+ \l__glossaries_sort_value_tl
+ \seq_put_right:Nn \l__glossaries_sort_seq { #1 }
+ }
+ }
+ \cs_new:Nn \__glossaries_sort_word:n
+ {
+ \__glossaries_do_sort:Nn
+ \__glossaries_sort_word_hander:nN
+ { #1 }
+ }
+ \cs_new:Nn \__glossaries_sort_word_hander:nN
+ {
+ \prop_get:NnN \l__glossaries_sort_prop { #1 }
+ \l__glossaries_sort_value_tl
+ \exp_args:NV \DTLsortwordhandler
+ \l__glossaries_sort_value_tl #2
+ }
+ \cs_new:Nn \__glossaries_sort_letter:n
+ {
+ \__glossaries_do_sort:Nn
+ \__glossaries_sort_letter_hander:nN
+ { #1 }
+ }
+ \cs_new:Nn \__glossaries_sort_letter_hander:nN
+ {
+ \prop_get:NnN \l__glossaries_sort_prop { #1 }
+ \l__glossaries_sort_value_tl
+ \exp_args:NV \DTLsortletterhandler
+ \l__glossaries_sort_value_tl #2
+ }
+ \cs_new:Nn \__glossaries_sort_case:n
+ {
+ \__glossaries_do_sort:Nn
+ \__glossaries_sort_case_hander:nN
+ { #1 }
+ }
+ \cs_new:Nn \__glossaries_sort_case_hander:nN
+ {
+ \prop_get:NnN \l__glossaries_sort_prop { #1 }
+ \l__glossaries_sort_value_tl
+ \exp_args:NV \DTLsortwordcasehandler
+ \l__glossaries_sort_value_tl #2
+ \datatool_sort_handler_preprocess:Nn
+ #2 { \text_lowercase:n { \l__glossaries_sort_value_tl } }
+ \tl_set:Nx #2 { \text_purify:n { #2 } \datatoolctrlboundary }
+ }
+ \cs_new:Nn \__glossaries_sort_nocase:n
+ {
+ \__glossaries_do_sort:Nn
+ \__glossaries_sort_nocase_hander:nN
+ { #1 }
+ }
+ \cs_new:Nn \__glossaries_sort_nocase_hander:nN
+ {
+ \prop_get:NnN \l__glossaries_sort_prop { #1 }
+ \l__glossaries_sort_value_tl
+ \exp_args:NV \DTLsortwordcasehandler
+ \l__glossaries_sort_value_tl #2
+ \datatool_sort_handler_preprocess:Nn
+ #2 { \l__glossaries_sort_value_tl }
+ \tl_set:Nx #2 { \text_purify:n { #2 } \datatoolctrlboundary }
+ }
+ \cs_new:Nn \__glossaries_do_sort:Nn
+ {
+ \renewcommand \dtlnonlettergroup [ 1 ] { glssymbols }
+ \renewcommand \dtlnumbergroup [ 1 ] { glsnumbers }
+ \__glossaries_set_sort_seq:n { #2 }
+ \datatool_sortwordseq:NN
+ \l__glossaries_sort_seq
+ #1
+ \tl_clear:c { @glsref@ #2 }
+ \seq_map_inline:Nn \l__glossaries_sort_seq
+ {
+ \listcseadd { @glsref@ #2 } { ##1 }
+ \tl_set:cn { glo@ ##1 @sort } { ##1 }
+ }
+ }
+ \cs_new:Npn \@gls@fetch@lettergrp
+ {
+ \tl_if_head_eq_meaning:VNTF \@gls@sort \__datatool_sorted:nnn
+ {
+ \tl_set:Nx \@glo@thislettergrp
+ { \exp_args:NV \DTLsortedletter \@gls@sort }
+ }
+ {
+ \exp_args:NVV \DTLassignlettergroup \@gls@sort \@gls@sort
+ \@glo@thislettergrp
+ }
+ }
+ }
+ {
+ \cs_new:Nn \__glossaries_sort_word:n
+ {
+ \@glo@sortentries{\@glo@sorthandler@word}{#1}
+ }
+ \cs_new:Nn \__glossaries_sort_letter:n
+ {
+ \@glo@sortentries{\@glo@sorthandler@letter}{#1}
+ }
+ \cs_new:Nn \__glossaries_sort_case:n
+ {
+ \@glo@sortentries{\@glo@sorthandler@case}{#1}
+ }
+ \cs_new:Nn \__glossaries_sort_nocase:n
+ {
+ \@glo@sortentries{\@glo@sorthandler@nocase}{#1}
+ }
+ \cs_new:Npn \@gls@fetch@lettergrp
+ {
+ \expandafter\glo@grabfirst\@gls@sort{}{}\@nil
+ }
+ }
+\cs_new:Npn \@@glo@@sortentries #1 #2
+ {
+ \cs_if_exist:cTF { __glossaries_sort_ #1 :n }
+ {
+ \use:c { __glossaries_sort_ #1 :n } { #2 }
+ }
+ {
+ \PackageError { glossaries }
+ { Unknown ~ sort ~ method ~ `#1' } { }
+ }
+ }
+\ExplSyntaxOff
\newcommand*{\@glo@sortentries}[2]{%
\glosortentrieswarning
\def\@glo@sortinglist{}%
@@ -6426,7 +6675,7 @@ you
\newcommand*{\@glo@sortmacro@word}[1]{%
\ifdefstring{\@glo@default@sorttype}{standard}%
{%
- \@glo@sortentries{\@glo@sorthandler@word}{#1}%
+ \@@glo@@sortentries{word}{#1}%
}%
{%
\PackageError{glossaries}{Conflicting sort options:^^J
@@ -6437,7 +6686,7 @@ you
\newcommand*{\@glo@sortmacro@letter}[1]{%
\ifdefstring{\@glo@default@sorttype}{standard}%
{%
- \@glo@sortentries{\@glo@sorthandler@letter}{#1}%
+ \@@glo@@sortentries{letter}{#1}%
}%
{%
\PackageError{glossaries}{Conflicting sort options:^^J
@@ -6448,13 +6697,7 @@ you
\newcommand*{\@glo@sortmacro@standard}[1]{%
\ifdefstring{\@glo@default@sorttype}{standard}%
{%
- \ifcsdef{@glo@sorthandler@\glsorder}%
- {%
- \@glo@sortentries{\csuse{@glo@sorthandler@\glsorder}}{#1}%
- }%
- {%
- \PackageError{glossaries}{Unknown sort handler `\glsorder'}{}%
- }%
+ \@@glo@@sortentries{\glsorder}{#1}%
}%
{%
\PackageError{glossaries}{Conflicting sort options:^^J
@@ -6465,7 +6708,7 @@ you
\newcommand*{\@glo@sortmacro@case}[1]{%
\ifdefstring{\@glo@default@sorttype}{standard}%
{%
- \@glo@sortentries{\@glo@sorthandler@case}{#1}%
+ \@@glo@@sortentries{case}{#1}%
}%
{%
\PackageError{glossaries}{Conflicting sort options:^^J
@@ -6476,7 +6719,7 @@ you
\newcommand*{\@glo@sortmacro@nocase}[1]{%
\ifdefstring{\@glo@default@sorttype}{standard}%
{%
- \@glo@sortentries{\@glo@sorthandler@nocase}{#1}%
+ \@@glo@@sortentries{nocase}{#1}%
}%
{%
\PackageError{glossaries}{Conflicting sort options:^^J
@@ -6584,7 +6827,7 @@ you
}%
{%
\letcs{\@gls@sort}{glo@\glsdetoklabel{#1}@sort}%
- \expandafter\glo@grabfirst\@gls@sort{}{}\@nil
+ \@gls@fetch@lettergrp
\ifdefequal{\@glo@thislettergrp}{\@gls@currentlettergroup}%
{}%
{%
diff --git a/Master/texmf-dist/tex/latex/glossaries/expl/glossaries-accsupp.sty b/Master/texmf-dist/tex/latex/glossaries/expl/glossaries-accsupp.sty
index 5ece3a4b13e..9c51f1c8342 100644
--- a/Master/texmf-dist/tex/latex/glossaries/expl/glossaries-accsupp.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/expl/glossaries-accsupp.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
@@ -41,8 +41,8 @@
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v4.46}{2020-03-19}{glossaries-accsupp-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossaries-accsupp-2021-11-01.sty}
-\DeclareCurrentRelease{v4.54}{2024-04-03}
-\ProvidesPackage{glossaries-accsupp}[2024/04/03 v4.54 (NLCT)
+\DeclareCurrentRelease{v4.55}{2024-11-01}
+\ProvidesPackage{glossaries-accsupp}[2024/11/01 v4.55 (NLCT)
Experimental glossaries accessibility]
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{glossaries}}
\ProcessOptions
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2020-03-19.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2020-03-19.sty
index f60ec810afa..bb7014cd288 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2020-03-19.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2020-03-19.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2021-11-01.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2021-11-01.sty
index fc780a553b7..4283281bdca 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2021-11-01.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2021-11-01.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2022-11-03.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2022-11-03.sty
index db057991327..6fa9e5dcb1b 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2022-11-03.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2022-11-03.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2024-04-03.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2024-04-03.sty
new file mode 100644
index 00000000000..2f70b3412ff
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-2024-04-03.sty
@@ -0,0 +1,7759 @@
+%%
+%% This is file `glossaries-2024-04-03.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% glossaries.dtx (with options: `glossaries-2024-04-03.sty,package')
+%%
+%% glossaries.dtx
+%% Copyright 2024 Nicola Talbot
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nicola Talbot.
+%%
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%%
+%% \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 \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries}[2024/04/03 v4.54 (NLCT)]
+\RequirePackage{ifthen}
+\RequirePackage{xkeyval}[2006/11/18]
+\RequirePackage{mfirstuc}[=2.08]
+\newcommand{\glssentencecase}[1]{\makefirstuc{#1}}
+\ExplSyntaxOn
+\newcommand{\glslowercase}[1]{ \text_lowercase:n { #1 } }
+\newcommand{\glsuppercase}[1]{ \text_uppercase:n { #1 } }
+\ifdef\MFUsentencecase
+{%
+ \newcommand{\glsmfuexcl}[1]{\MFUexcl{#1}}
+ \newcommand{\glsmfublocker}[1]{\MFUblocker{#1}}
+ \newcommand{\glsmfuaddmap}[2]{\MFUaddmap{#1}{#2}}
+}
+{
+ \RequirePackage{textcase}
+ \providecommand{\MFUsentencecase}[1]{ \text_titlecase_first:n { #1 } }
+ \providecommand{\glsmfuexcl}[1]{
+ \tl_if_in:NnF \l_text_case_exclude_arg_tl {#1}
+ {
+ \tl_put_right:Nn \l_text_case_exclude_arg_tl {#1}
+ }
+ }
+ \renewcommand*{\mfirstucMakeUppercase}{\MakeTextUppercase}
+ \newcommand{\glsmfublocker}[1]{\glsmfuexcl{#1}}
+ \newcommand{\glsmfuaddmap}[2]{\glsmfuexcl{#1}\glsmfublocker{#2}}
+}
+\ExplSyntaxOff
+\RequirePackage{xfor}
+\RequirePackage{datatool-base}[=2.32]
+\RequirePackage{amsgen}
+\RequirePackage{etoolbox}
+\newif\if@gls@docloaded
+\@ifpackageloaded{doc}%
+{%
+ \@gls@docloadedtrue
+}%
+{%
+ \@ifclassloaded{nlctdoc}{\@gls@docloadedtrue}{\@gls@docloadedfalse}%
+}
+\if@gls@docloaded
+ \let\glsorg@theglossary\theglossary
+ \let\glsorg@endtheglossary\endtheglossary
+ \let\glsorg@PrintChanges\PrintChanges
+ \renewcommand{\PrintChanges}{%
+ \begingroup
+ \let\theglossary\glsorg@theglossary
+ \let\endtheglossary\glsorg@endtheglossary
+ \glsorg@PrintChanges
+ \endgroup
+ }
+\fi
+\newif\if@gls@debug
+\define@choicekey{glossaries.sty}{debug}[\gls@debug@val\gls@debug@nr]%
+ {true,false,showtargets,showaccsupp}[true]{%
+ \ifcase\gls@debug@nr\relax
+ % debug=true
+ \@gls@debugtrue
+ \renewcommand*{\GlossariesWarning}[1]{%
+ \PackageWarning{glossaries}{##1}%
+ }%
+ \renewcommand*{\GlossariesWarningNoLine}[1]{%
+ \PackageWarningNoLine{glossaries}{##1}%
+ }%
+ \let\@glsshowtarget\@gobble
+ \PackageInfo{glossaries}{debug mode ON (nowarn option disabled)}%
+ \or
+ % debug=false
+ \@gls@debugfalse
+ \let\@glsshowtarget\@gobble
+ \let\@glsshowaccsupp\@gobblethree
+ \PackageInfo{glossaries}{debug mode OFF}%
+ \or
+ % debug=showtargets
+ \@gls@debugtrue
+ \renewcommand*{\GlossariesWarning}[1]{%
+ \PackageWarning{glossaries}{##1}%
+ }%
+ \renewcommand*{\GlossariesWarningNoLine}[1]{%
+ \PackageWarningNoLine{glossaries}{##1}%
+ }%
+ \PackageInfo{glossaries}{debug mode ON (nowarn option disabled)}%
+ \renewcommand{\@glsshowtarget}{\@@glsshowtarget}%
+ \or
+ % debug=showaccsupp
+ \@gls@debugtrue
+ \renewcommand*{\GlossariesWarning}[1]{%
+ \PackageWarning{glossaries}{##1}%
+ }%
+ \renewcommand*{\GlossariesWarningNoLine}[1]{%
+ \PackageWarningNoLine{glossaries}{##1}%
+ }%
+ \PackageInfo{glossaries}{debug mode ON (nowarn option disabled)}%
+ \renewcommand{\@glsshowaccsupp}{\glsshowaccsupp}%
+ \fi
+}
+\newcommand*{\glsshowtarget}[1]{%
+ \ifmmode
+ \glsshowtargetinner{#1}%
+ \else
+ \ifinner
+ \glsshowtargetinner{#1}%
+ \else
+ \glsshowtargetouter{#1}%
+ \fi
+ \fi
+}
+\newcommand*{\glsshowtargetfonttext}[1]{%
+ \ifmmode \nfss@text{\glsshowtargetfont #1}\else {\glsshowtargetfont #1}\fi
+}
+\newcommand*{\glsshowtargetinner}[1]{\glsshowtargetfonttext{[#1]}}
+\newcommand*{\glsshowtargetouter}[1]{%
+ \glsshowtargetsymbol\marginpar{\glsshowtargetsymbol\glsshowtargetfont #1}}
+\newcommand*{\glsshowtargetsymbol}{{\tiny$\triangleright$}}
+\newcommand*{\glsshowtargetfont}{\ttfamily\footnotesize}
+\newcommand*{\@glsshowtarget}[1]{}
+\newcommand*{\glsdoshowtarget}[2]{\@glsshowtarget{#1}#2}
+\newrobustcmd*{\@@glsshowtarget}[1]{%
+ \begingroup
+ \protected@edef\@gls@tmp{#1}%
+ \@onelevel@sanitize\@gls@tmp
+ \expandafter\glsshowtarget\expandafter{\@gls@tmp}%
+ \endgroup
+}
+\newcommand*{\@glsshowaccsupp}[3]{}
+\newrobustcmd*{\glsshowaccsupp}[3]{%
+ \ifstrempty{#1}%
+ {\@@glsshowtarget{/#2 (#3)}}%
+ {\@@glsshowtarget{/#2 (#3) [#1]}}%
+}
+\newcommand*{\@gls@see@noindex}{%
+ \PackageError{glossaries}%
+ {`\gls@xr@key' key may only be used after \string\makeglossaries\space
+ or \string\makenoidxglossaries\space (or move
+ \string\newglossaryentry\space
+ definitions into the preamble)}%
+ {You must use \string\makeglossaries\space
+ or \string\makenoidxglossaries\space before defining
+ any entries that have a `\gls@xr@key' key. It may
+ be that the `see' key has been written to the .glsdefs
+ file from the previous run, in which case you need to
+ move your definitions
+ to the preamble if you don't want to use
+ \string\makeglossaries\space
+ or \string\makenoidxglossaries}%
+}
+\define@choicekey{glossaries.sty}{seenoindex}%
+ [\gls@seenoindex@val\gls@seenoindex@nr]{error,warn,ignore}{%
+ \ifcase\gls@seenoindex@nr
+ \renewcommand*{\@gls@see@noindex}{%
+ \PackageError{glossaries}%
+ {`\gls@xr@key' key may only be used after \string\makeglossaries\space
+ or \string\makenoidxglossaries}%
+ {You must use \string\makeglossaries\space
+ or \string\makenoidxglossaries\space before defining
+ any entries that have a `\gls@xr@key' key}%
+ }%
+ \or
+ \renewcommand*{\@gls@see@noindex}{%
+ \GlossariesWarning{`\gls@xr@key' key ignored}%
+ }%
+ \or
+ \renewcommand*{\@gls@see@noindex}{}%
+ \fi
+}
+\define@boolkey{glossaries.sty}[gls]{toc}[true]{}
+\define@boolkey{glossaries.sty}[gls]{numberline}[true]{}
+\ifcsundef{chapter}%
+ {\newcommand*{\@@glossarysec}{section}}%
+ {\newcommand*{\@@glossarysec}{chapter}}
+\define@choicekey{glossaries.sty}{section}{part,chapter,section,%
+subsection,subsubsection,paragraph,subparagraph}[section]{%
+ \renewcommand*{\@@glossarysec}{#1}}
+\newcommand*{\@@glossarysecstar}{*}
+\newcommand*{\@@glossaryseclabel}{}
+\newcommand*{\glsautoprefix}{}
+\define@choicekey{glossaries.sty}{numberedsection}%
+ [\gls@numberedsection@val\gls@numberedsection@nr]{%
+false,nolabel,autolabel,nameref}[nolabel]{%
+ \ifcase\gls@numberedsection@nr\relax
+ \renewcommand*{\@@glossarysecstar}{*}%
+ \renewcommand*{\@@glossaryseclabel}{}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{}%
+ \renewcommand*{\@@glossaryseclabel}{}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{}%
+ \renewcommand*{\@@glossaryseclabel}{%
+ \label{\glsautoprefix\@glo@type}}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{*}%
+ \renewcommand*{\@@glossaryseclabel}{%
+ \protected@edef\@currentlabelname{\glossarytoctitle}%
+ \label{\glsautoprefix\@glo@type}}%
+ \fi
+}
+\@ifpackageloaded{classicthesis}
+{\newcommand*{\@glossary@default@style}{index}}
+{\newcommand*{\@glossary@default@style}{list}}
+\define@key{glossaries.sty}{style}{%
+ \def\@glossary@default@style{#1}%
+}
+\newcommand*{\@gls@declareoption}[2]{%
+ \DeclareOptionX{#1}{#2}%
+ \DeclareOption{#1}{#2}%
+}
+\newcommand*{\glossaryentrynumbers}[1]{#1\gls@save@numberlist{#1}}
+\@gls@declareoption{nonumberlist}{%
+ \renewcommand*{\glossaryentrynumbers}[1]{\gls@save@numberlist{#1}}%
+}
+\define@boolkey{glossaries.sty}[gls]{savenumberlist}[true]{}
+\glssavenumberlistfalse
+\newcommand*\@glo@seeautonumberlist{}
+\@gls@declareoption{seeautonumberlist}{%
+ \renewcommand*{\@glo@seeautonumberlist}{%
+ \def\@glo@prefix{\glsnextpages}%
+ }%
+}
+\define@boolkey{glossaries.sty}[gls]{esclocations}[true]{}
+\glsesclocationsfalse
+\newcommand*{\@gls@loadlong}{\RequirePackage{glossary-long}}
+\@gls@declareoption{nolong}{\renewcommand*{\@gls@loadlong}{}}
+\IfFileExists{supertabular.sty}{%
+ \newcommand*{\@gls@loadsuper}{\RequirePackage{glossary-super}}}{%
+ \newcommand*{\@gls@loadsuper}{}}
+\@ifpackageloaded{xtab}{\renewcommand*{\@gls@loadsuper}{}}{}
+\@gls@declareoption{nosuper}{\renewcommand*{\@gls@loadsuper}{}}
+\newcommand*{\@gls@loadlist}{\RequirePackage{glossary-list}}
+\@gls@declareoption{nolist}{%
+ \renewcommand*{\@gls@loadlist}{%
+ \ifdefstring{\@glossary@default@style}{list}%
+ {\let\@glossary@default@style\relax}%
+ {}%
+ }%
+}
+\newcommand*{\@gls@loadtree}{\RequirePackage{glossary-tree}}
+\@gls@declareoption{notree}{\renewcommand*{\@gls@loadtree}{}}
+\@gls@declareoption{nostyles}{%
+ \renewcommand*{\@gls@loadlong}{}%
+ \renewcommand*{\@gls@loadsuper}{}%
+ \renewcommand*{\@gls@loadlist}{}%
+ \renewcommand*{\@gls@loadtree}{}%
+ \let\@glossary@default@style\relax
+}
+\newcommand*{\glspostdescription}{%
+ \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi
+}
+\define@boolkey{glossaries.sty}[gls]{nopostdot}[true]{}
+\glsnopostdotfalse
+\define@boolkey{glossaries.sty}[gls]{nogroupskip}[true]{}
+\glsnogroupskipfalse
+\define@boolkey{glossaries.sty}[gls]{ucmark}[true]{}
+\@ifclassloaded{memoir}
+{%
+ \glsucmarktrue
+}%
+{%
+ \glsucmarkfalse
+}
+\newcommand*{\@gls@define@glossaryentrycounter}{%
+ \ifglsentrycounter
+ \ifundef\c@glossaryentry
+ {%
+ \ifx\@gls@counterwithin\@empty
+ \newcounter{glossaryentry}%
+ \else
+ \newcounter{glossaryentry}[\@gls@counterwithin]%
+ \fi
+ \def\theHglossaryentry{\currentglossary.\theglossaryentry}%
+ }%
+ {}%
+ \fi
+}
+\define@boolkey{glossaries.sty}[gls]{entrycounter}[true]{}
+\glsentrycounterfalse
+\define@key{glossaries.sty}{counterwithin}{%
+ \renewcommand*{\@gls@counterwithin}{#1}%
+ \glsentrycountertrue
+ \@gls@define@glossaryentrycounter
+}
+\newcommand*{\@gls@counterwithin}{}
+\newcommand{\@gls@define@glossarysubentrycounter}{%
+ \ifundef\c@glossarysubentry
+ {%
+ \ifglssubentrycounter
+ \ifglsentrycounter
+ \newcounter{glossarysubentry}[glossaryentry]%
+ \else
+ \newcounter{glossarysubentry}%
+ \fi
+ \def\theHglossarysubentry{\currentglossary.\currentglssubentry.\theglossarysubentry}%
+ \fi
+ }%
+ {}%
+}
+\define@boolkey{glossaries.sty}[gls]{subentrycounter}[true]{}
+\glssubentrycounterfalse
+\newcommand{\glsindexingsetting}{\ifglsxindy xindy\else makeindex\fi}
+\newcommand*{\@glo@default@sorttype}{standard}
+\define@choicekey{glossaries.sty}{sort}{standard,def,use,none,clear}{%
+ \renewcommand*{\@glo@default@sorttype}{#1}%
+ \csname @gls@setupsort@#1\endcsname
+}
+\newcommand*{\glsprestandardsort}[3]{%
+ \glsdosanitizesort
+}
+\newcommand*{\@glo@check@sortallowed}[1]{}
+\newcommand*{\@gls@setupsort@standard}{%
+ \def\do@glo@storeentry{\@glo@storeentry}%
+ \def\@gls@defsortcount##1{}%
+ \def\@gls@defsort##1##2{%
+ \ifx\@glo@sort\@glsdefaultsort
+ \let\@glo@sort\@glo@name
+ \fi
+ \let\glsdosanitizesort\@gls@sanitizesort
+ \glsprestandardsort{\@glo@sort}{##1}{##2}%
+ \expandafter\protected@xdef\csname glo@##2@sort\endcsname{\@glo@sort}%
+ }%
+ \def\@gls@setsort##1{}%
+ \let\@glo@check@sortallowed\@gobble
+}
+\@gls@setupsort@standard
+\newcommand*\glssortnumberfmt[1]{%
+ \ifnum#1<100000 0\fi
+ \ifnum#1<10000 0\fi
+ \ifnum#1<1000 0\fi
+ \ifnum#1<100 0\fi
+ \ifnum#1<10 0\fi
+ \number#1%
+}
+\newcommand*{\@gls@setupsort@def}{%
+ \def\do@glo@storeentry{\@glo@storeentry}%
+ \def\@gls@defsortcount##1{%
+ \expandafter\global
+ \expandafter\newcount\csname glossary@##1@sortcount\endcsname
+ }%
+ \def\@gls@defsort##1##2{%
+ \ifcsundef{glossary@##1@sortcount}%
+ {\@gls@defsortcount{##1}}%
+ {}%
+ \expandafter\global\expandafter
+ \advance\csname glossary@##1@sortcount\endcsname by 1\relax
+ \expandafter\protected@xdef\csname glo@##2@sort\endcsname{%
+ \expandafter\glssortnumberfmt
+ {\csname glossary@##1@sortcount\endcsname}}%
+ }%
+ \def\@gls@setsort##1{}%
+ \let\@glo@check@sortallowed\@gobble
+}
+\newcommand*{\@gls@setupsort@use}{%
+ \let\do@glo@storeentry\@gobble
+ \def\@gls@defsortcount##1{%
+ \expandafter\global
+ \expandafter\newcount\csname glossary@##1@sortcount\endcsname
+ }%
+ \def\@gls@defsort##1##2{%
+ \expandafter\gdef\csname glo@##2@sort\endcsname{}%
+ }%
+ \def\@gls@setsort##1{%
+ \protected@edef\@glo@parent{\csname glo@##1@parent\endcsname}%
+ \ifx\@glo@parent\@empty
+ \else
+ \expandafter\@gls@setsort\expandafter{\@glo@parent}%
+ \fi
+ \protected@edef\@glo@type{\csname glo@##1@type\endcsname}%
+ \protected@edef\@gls@tmp{\csname glo@##1@sort\endcsname}%
+ \ifx\@gls@tmp\@empty
+ \expandafter\global\expandafter
+ \advance\csname glossary@\@glo@type @sortcount\endcsname by 1\relax
+ \expandafter\protected@xdef\csname glo@##1@sort\endcsname{%
+ \expandafter\glssortnumberfmt
+ {\csname glossary@\@glo@type @sortcount\endcsname}}%
+ \@glo@storeentry{##1}%
+ \fi
+ }%
+ \let\@glo@check@sortallowed\@gobble
+}
+\newcommand*{\@gls@setupsort@none}{%
+ \def\glsindexingsetting{none}%
+ \def\do@glo@storeentry##1{}%
+ \def\@gls@defsortcount##1{}%
+ \def\@gls@defsort##1##2{%
+ \expandafter\global\expandafter\let\csname glo@##2@sort\endcsname\@glo@sort
+ }%
+ \def\@gls@setsort##1{}%
+ \renewcommand\@glo@check@sortallowed[1]{\PackageError{glossaries}
+ {Option sort=none not allowed with \string##1}%
+ {(Use sort=def instead)}}%
+}
+\newcommand*{\@gls@setupsort@clear}{%
+ \def\glsindexingsetting{none}%
+ \def\do@glo@storeentry##1{}%
+ \def\@gls@defsortcount##1{}%
+ \def\@gls@defsort##1##2{\csgdef{glo@##2@sort}{}}%
+ \def\@gls@setsort##1{}%
+ \renewcommand\@glo@check@sortallowed[1]{\PackageError{glossaries}
+ {Option sort=clear not allowed with \string##1}%
+ {(Use sort=def instead)}}%
+}
+\newcommand*{\glsdefmain}{%
+ \if@gls@docloaded
+ \newglossary[glg2]{main}{gls2}{glo2}{\glossaryname}%
+ \else
+ \newglossary{main}{gls}{glo}{\glossaryname}%
+ \fi
+ \newcommand*{\gls@tr@set@main@toctitle}{%
+ \translatelet{\glossarytoctitle}{Glossary}%
+ }%
+}
+\newcommand*{\glsdefaulttype}{main}
+\newcommand*{\acronymtype}{\glsdefaulttype}
+\@gls@declareoption{nomain}{%
+ \let\glsdefaulttype\relax
+ \renewcommand*{\glsdefmain}{}%
+}
+\define@boolkey{glossaries.sty}[gls]{acronym}[true]{%
+ \ifglsacronym
+ \renewcommand{\@gls@do@acronymsdef}{%
+ \DeclareAcronymList{acronym}%
+ \newglossary[alg]{acronym}{acr}{acn}{\acronymname}%
+ \renewcommand*{\acronymtype}{acronym}%
+ \newcommand*{\gls@tr@set@acronym@toctitle}{%
+ \translatelet{\glossarytoctitle}{Acronyms}%
+ }%
+ }%
+ \else
+ \let\@gls@do@acronymsdef\relax
+ \fi
+}
+\AtBeginDocument{%
+ \ifglsacronym
+ \providecommand*{\printacronyms}[1][]{%
+ \printglossary[type=\acronymtype,#1]}%
+ \fi
+}
+\newcommand*{\@gls@do@acronymsdef}{}
+\@gls@declareoption{acronyms}{%
+ \glsacronymtrue
+ \def\@gls@do@acronymsdef{%
+ \DeclareAcronymList{acronym}%
+ \newglossary[alg]{acronym}{acr}{acn}{\acronymname}%
+ \renewcommand*{\acronymtype}{acronym}%
+ \newcommand*{\gls@tr@set@acronym@toctitle}{%
+ \translatelet{\glossarytoctitle}{Acronyms}%
+ }%
+ }%
+}
+\newcommand*{\@glsacronymlists}{}
+\newcommand*{\@addtoacronymlists}[1]{%
+ \ifx\@glsacronymlists\@empty
+ \protected@xdef\@glsacronymlists{#1}%
+ \else
+ \protected@xdef\@glsacronymlists{\@glsacronymlists,#1}%
+ \fi
+}
+\newcommand*{\DeclareAcronymList}[1]{%
+ \glsIfListOfAcronyms{#1}{}{\@addtoacronymlists{#1}}%
+}
+\newcommand{\glsIfListOfAcronyms}[1]{%
+ \protected@edef\@do@gls@islistofacronyms{%
+ \noexpand\@gls@islistofacronyms{#1}{\@glsacronymlists}}%
+ \@do@gls@islistofacronyms
+}
+\newcommand{\@gls@islistofacronyms}[4]{%
+ \def\gls@islistofacronyms##1,#1,##2\end@gls@islistofacronyms{%
+ \def\@gls@before{##1}\def\@gls@after{##2}}%
+ \gls@islistofacronyms,#2,#1,\@nil\end@gls@islistofacronyms
+ \ifx\@gls@after\@nnil
+ #4%
+ \else
+ #3%
+ \fi
+}
+\newif\if@glsisacronymlist
+\newcommand*{\gls@checkisacronymlist}[1]{%
+ \glsIfListOfAcronyms{#1}%
+ {\@glsisacronymlisttrue}{\@glsisacronymlistfalse}%
+}
+\newcommand*{\SetAcronymLists}[1]{%
+ \renewcommand*{\@glsacronymlists}{#1}%
+}
+\define@key{glossaries.sty}{acronymlists}{%
+ \DeclareAcronymList{#1}%
+}
+\newcommand{\glscounter}{page}
+\define@key{glossaries.sty}{counter}{%
+ \renewcommand*{\glscounter}{#1}%
+}
+\newcommand*{\@gls@nohyperlist}{}
+\newcommand*{\GlsDeclareNoHyperList}[1]{%
+ \ifdefempty\@gls@nohyperlist
+ {%
+ \renewcommand*{\@gls@nohyperlist}{#1}%
+ }%
+ {%
+ \appto\@gls@nohyperlist{,#1}%
+ }%
+}
+\define@key{glossaries.sty}{nohypertypes}{%
+ \GlsDeclareNoHyperList{#1}%
+}
+\newcommand*{\GlossariesWarning}[1]{%
+ \PackageWarning{glossaries}{#1}%
+}
+\newcommand*{\GlossariesWarningNoLine}[1]{%
+ \PackageWarningNoLine{glossaries}{#1}%
+}
+\newcommand{\glosortentrieswarning}{%
+ \typeout{Using TeX to sort glossary entries---this may
+ take a while}%
+}
+\@gls@declareoption{nowarn}{%
+ \if@gls@debug
+ \GlossariesWarning{Warnings can't be suppressed in debug mode}%
+ \else
+ \renewcommand*{\GlossariesWarning}[1]{}%
+ \renewcommand*{\GlossariesWarningNoLine}[1]{}%
+ \renewcommand*{\glosortentrieswarning}{}%
+ \renewcommand*{\@gls@missinglang@warn}[2]{}%
+ \fi
+}
+\newcommand*{\@gls@missinglang@warn}[2]{%
+ \PackageWarningNoLine{glossaries}%
+ {No language module detected for `#1'.\MessageBreak
+ Language modules need to be installed separately.\MessageBreak
+ Please check on CTAN for a bundle called\MessageBreak
+ `glossaries-#2' or similar}%
+}
+\@gls@declareoption{nolangwarn}{%
+ \renewcommand*{\@gls@missinglang@warn}[2]{}%
+}
+\newcommand*{\@gls@warnonglossdefined}{%
+ \GlossariesWarning{Overriding \string\printglossary}%
+}
+\newcommand*{\@gls@warnontheglossdefined}{%
+ \GlossariesWarning{Overriding `theglossary' environment}%
+}
+\@gls@declareoption{noredefwarn}{%
+ \renewcommand*{\@gls@warnonglossdefined}{}%
+ \renewcommand*{\@gls@warnontheglossdefined}{}%
+}
+\newcommand*{\glssetexpandfield}[1]{%
+ \csdef{gls@assign@#1@field}##1##2{%
+ \@@gls@expand@field{##1}{#1}{##2}%
+ }%
+}
+\newcommand*{\glssetnoexpandfield}[1]{%
+ \csdef{gls@assign@#1@field}##1##2{%
+ \@@gls@noexpand@field{##1}{#1}{##2}%
+ }%
+}
+\glssetexpandfield{type}
+\glssetnoexpandfield{desc}
+\glssetnoexpandfield{descplural}
+\newcommand*{\@gls@sanitizename}{}
+\glssetnoexpandfield{name}
+\newcommand*{\@gls@sanitizesymbol}{}
+\glssetnoexpandfield{symbol}
+\glssetnoexpandfield{symbolplural}
+\newcommand*{\@gls@sanitizesort}{%
+ \ifglssanitizesort
+ \@@gls@sanitizesort
+ \else
+ \@@gls@nosanitizesort
+ \fi
+}
+\newcommand*\@@gls@sanitizesort{%
+ \@onelevel@sanitize\@glo@sort
+}
+\newcommand*{\@@gls@nosanitizesort}{}
+\newcommand*\@gls@noidx@sanitizesort{%
+ \ifdefvoid\@glo@sort
+ {}%
+ {%
+ \expandafter\@@gls@noidx@sanitizesort\@glo@sort\gls@end@sanitizesort
+ }%
+}
+\def\@@gls@noidx@sanitizesort#1#2\gls@end@sanitizesort{%
+ \def\@glo@sort{#1#2}%
+ \@onelevel@sanitize\@glo@sort
+}
+\newcommand*{\@@gls@noidx@nosanitizesort}{%
+ \ifdefvoid\@glo@sort
+ {}%
+ {%
+ \expandafter\@@gls@noidx@no@sanitizesort\@glo@sort\gls@end@sanitizesort
+ }%
+}
+\def\@@gls@noidx@no@sanitizesort#1#2\gls@end@sanitizesort{%
+ \bgroup
+ \glsnoidxstripaccents
+ \protected@xdef\@@glo@sort{#1#2}%
+ \egroup
+ \let\@glo@sort\@@glo@sort
+}
+\newcommand*\glsnoidxstripaccents{%
+ \let\IeC\@firstofone
+ \let\add@accent@\@secondoftwo
+ \let\@text@composite@x\@secondoftwo
+ \let\@tabacckludge\@secondoftwo
+ \expandafter\def\csname \encodingdefault-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname OT1-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname T1-cmd\endcsname##1##2##3{##3}%
+ \expandafter\def\csname PD1-cmd\endcsname##1##2##3{##3}%
+ \let\'\@firstofone
+ \let\`\@firstofone
+ \let\^\@firstofone
+ \let\"\@firstofone
+ \let\u\@firstofone
+ \let\t\@firstofone
+ \let\d\@firstofone
+ \let\r\@firstofone
+ \let\=\@firstofone
+ \let\.\@firstofone
+ \let\~\@firstofone
+ \let\v\@firstofone
+ \let\H\@firstofone
+ \let\c\@firstofone
+ \let\b\@firstofone
+ \let\a\@secondoftwo
+ \def\AE{AE}%
+ \def\ae{ae}%
+ \def\OE{OE}%
+ \def\oe{oe}%
+ \def\AA{AA}%
+ \def\aa{aa}%
+ \def\L{L}%
+ \def\l{l}%
+ \def\O{O}%
+ \def\o{o}%
+ \def\SS{SS}%
+ \def\ss{ss}%
+ \def\th{th}%
+ \def\TH{TH}%
+ \def\dh{dh}%
+ \def\DH{DH}%
+}
+\@ifl@t@r\fmtversion{2019/10/01}
+{%
+ \appto\glsnoidxstripaccents{\let\UTFviii@two@octets\UTFviii@two@octets@combine}%
+}
+{}
+\newcommand{\@gls@removedoption}[1]{%
+ \PackageError{glossaries}{obsolete package option `#1' has been
+removed. Rollback required or use a newer alternative}
+{Try \string\usepackage[#1]{glossaries}[=v4.46]}%
+}
+\define@boolkey[gls]{sanitize}{description}[true]{%
+ \GlossariesWarning{sanitize={description} package option deprecated}%
+ \ifgls@sanitize@description
+ \glssetnoexpandfield{desc}%
+ \glssetnoexpandfield{descplural}%
+ \else
+ \glssetexpandfield{desc}%
+ \glssetexpandfield{descplural}%
+ \fi
+}
+\define@boolkey[gls]{sanitize}{name}[true]{%
+ \GlossariesWarning{sanitize={name} package option deprecated}%
+ \ifgls@sanitize@name
+ \glssetnoexpandfield{name}%
+ \else
+ \glssetexpandfield{name}%
+ \fi
+}
+\define@boolkey[gls]{sanitize}{symbol}[true]{%
+ \GlossariesWarning{sanitize={symbol} package option deprecated}%
+ \ifgls@sanitize@symbol
+ \glssetnoexpandfield{symbol}%
+ \glssetnoexpandfield{symbolplural}%
+ \else
+ \glssetexpandfield{symbol}%
+ \glssetexpandfield{symbolplural}%
+ \fi
+}
+\define@boolkey{glossaries.sty}[gls]{sanitizesort}[true]{%
+ \ifglssanitizesort
+ \glssetnoexpandfield{sortvalue}%
+ \renewcommand*{\@gls@noidx@setsanitizesort}{%
+ \glssanitizesorttrue
+ \glssetnoexpandfield{sortvalue}%
+ }%
+ \else
+ \glssetexpandfield{sortvalue}%
+ \renewcommand*{\@gls@noidx@setsanitizesort}{%
+ \glssanitizesortfalse
+ \glssetexpandfield{sortvalue}%
+ }%
+ \fi
+}
+\glssanitizesorttrue
+\glssetnoexpandfield{sortvalue}%
+\newcommand*{\@gls@noidx@setsanitizesort}{%
+ \glssanitizesortfalse
+ \glssetexpandfield{sortvalue}%
+}
+\define@choicekey[gls]{sanitize}{sort}{true,false}[true]{%
+ \setbool{glssanitizesort}{#1}%
+ \ifglssanitizesort
+ \glssetnoexpandfield{sortvalue}%
+ \else
+ \glssetexpandfield{sortvalue}%
+ \fi
+ \GlossariesWarning{sanitize={sort} package option
+ deprecated. Use sanitizesort instead}%
+}
+\define@key{glossaries.sty}{sanitize}[description=true,symbol=true,name=true]{%
+ \ifthenelse{\equal{#1}{none}}%
+ {%
+ \GlossariesWarning{sanitize package option deprecated}%
+ \glssetexpandfield{name}%
+ \glssetexpandfield{symbol}%
+ \glssetexpandfield{symbolplural}%
+ \glssetexpandfield{desc}%
+ \glssetexpandfield{descplural}%
+ }%
+ {%
+ \setkeys[gls]{sanitize}{#1}%
+ }%
+}
+\newif\ifglstranslate
+\newcommand*\@gls@usetranslator{%
+ \@ifpackageloaded{polyglossia}%
+ {%
+ \let\glsifusetranslator\@secondoftwo
+ }%
+ {%
+ \@ifpackageloaded{babel}%
+ {%
+ \IfFileExists{translator.sty}%
+ {%
+ \RequirePackage{translator}%
+ \let\glsifusetranslator\@firstoftwo
+ }%
+ {}%
+ }%
+ {}%
+ }%
+}
+\newcommand{\glsifusedtranslatordict}[3]{%
+ \glsifusetranslator
+ {\ifcsdef{ver@glossaries-dictionary-#1.dict}{#2}{#3}}%
+ {#3}%
+}
+\@gls@declareoption{notranslate}{%
+ \glstranslatefalse
+ \let\@gls@usetranslator\relax
+ \let\glsifusetranslator\@secondoftwo
+}
+\define@choicekey{glossaries.sty}{translate}%
+ [\gls@translate@val\gls@translate@nr]%
+ {true,false,babel}[true]%
+ {%
+ \ifcase\gls@translate@nr\relax
+ \glstranslatetrue
+ \renewcommand*\@gls@usetranslator{%
+ \@ifpackageloaded{polyglossia}%
+ {%
+ \let\glsifusetranslator\@secondoftwo
+ }%
+ {%
+ \@ifpackageloaded{babel}%
+ {%
+ \IfFileExists{translator.sty}%
+ {%
+ \RequirePackage{translator}%
+ \let\glsifusetranslator\@firstoftwo
+ }%
+ {}%
+ }%
+ {}%
+ }%
+ }%
+ \or
+ \glstranslatefalse
+ \let\@gls@usetranslator\relax
+ \let\glsifusetranslator\@secondoftwo
+ \or
+ \glstranslatetrue
+ \let\@gls@usetranslator\relax
+ \let\glsifusetranslator\@secondoftwo
+ \fi
+ }
+\glstranslatefalse
+\let\glsifusetranslator\@secondoftwo
+\@ifpackageloaded{translator}%
+{%
+ \glstranslatetrue
+ \let\glsifusetranslator\@firstoftwo
+}%
+{%
+ \@for\gls@thissty:=tracklang,babel,ngerman,polyglossia\do
+ {
+ \@ifpackageloaded{\gls@thissty}%
+ {%
+ \glstranslatetrue
+ \@endfortrue
+ }%
+ {}%
+ }
+}
+\newcommand{\@gls@requested@languages}{}
+\define@key{glossaries.sty}{languages}{%
+ \renewcommand{\@gls@requested@languages}{#1}%
+ \glstranslatetrue
+ \let\@gls@usetranslator\relax
+ \let\glsifusetranslator\@secondoftwo
+}
+\define@boolkey{glossaries.sty}[gls]{indexonlyfirst}[true]{}
+\glsindexonlyfirstfalse
+\define@boolkey{glossaries.sty}[gls]{hyperfirst}[true]{}
+\glshyperfirsttrue
+\newcommand*{\@gls@setacrstyle}{}
+\define@boolkey{glossaries.sty}[glsacr]{footnote}[true]{%
+ \ifglsacrfootnote
+ \@gls@removedoption{footnote}%
+ \fi
+}
+\define@boolkey{glossaries.sty}[glsacr]{description}[true]{%
+ \ifglsacrdescription
+ \@gls@removedoption{description}%
+ \fi
+}
+\define@boolkey{glossaries.sty}[glsacr]{smallcaps}[true]{%
+ \ifglsacrsmallcaps
+ \@gls@removedoption{smallcaps}%
+ \fi
+}
+\define@boolkey{glossaries.sty}[glsacr]{smaller}[true]{%
+ \ifglsacrsmaller
+ \@gls@removedoption{smaller}%
+ \fi
+}
+\define@boolkey{glossaries.sty}[glsacr]{dua}[true]{%
+ \ifglsacrdua
+ \@gls@removedoption{dua}%
+ \fi
+}
+\define@boolkey{glossaries.sty}[glsacr]{shortcuts}[true]{}
+\newcommand*{\glsorder}{word}
+\newcommand*{\@glsorder}[1]{}
+\define@choicekey{glossaries.sty}{order}{word,letter}{%
+ \def\glsorder{#1}}
+\newif\ifglsxindy
+\glsxindyfalse
+\@gls@declareoption{makeindex}{\glsxindyfalse}
+\define@boolkey[gls]{xindy}{glsnumbers}[true]{}
+\gls@xindy@glsnumberstrue
+\def\@xdy@main@language{\languagename}%
+\newcommand*{\gls@xdy@set@lang}[1]{%
+ \ifcsundef{@xdy@#1@language}%
+ {%
+ \ifcsundef{@xdy@\glsdefaulttype @language}
+ {\let\@gls@langmod\@xdy@main@language}%
+ {\letcs\@gls@langmod{@xdy@\glsdefaulttype @language}}%
+ }%
+ {\letcs\@gls@langmod{@xdy@#1@language}}%
+}
+\define@key[gls]{xindy}{language}{\def\@xdy@main@language{#1}}
+\ifdefvoid\inputencodingname
+ {\def\gls@codepage{utf8}}%
+ {\def\gls@codepage{\inputencodingname}}
+\define@key[gls]{xindy}{codepage}{\def\gls@codepage{#1}}
+\define@key{glossaries.sty}{xindy}[]{%
+ \glsxindytrue
+ \setkeys[gls]{xindy}{#1}%
+}
+\@gls@declareoption{xindygloss}{%
+ \glsxindytrue
+}
+\@gls@declareoption{xindynoglsnumbers}{%
+ \glsxindytrue
+ \gls@xindy@glsnumbersfalse
+}
+\providecommand{\@domakeglossaries}[1]{\if@filesw #1\fi}
+\@gls@declareoption{disablemakegloss}{%
+ \ifdefequal\makeglossaries\@no@makeglossaries
+ {%
+ \GlossariesWarning{Option `disablemakegloss' has no effect
+ (\string\makenoidxglossaries\space has already been used)}%
+ }%
+ {%
+ \ifdefequal\@makeglossary\@gobble
+ {%
+ \GlossariesWarning{Option `disablemakegloss' has no effect
+ (\string\makeglossaries\space has already been used)}%
+ }%
+ {%
+ \renewcommand{\@domakeglossaries}[1]{%
+ \PackageInfo{glossaries}{\string\makeglossaries\space and
+ \string\makenoidxglossaries\space have been disabled}%
+ }%
+ }%
+ }%
+}
+\@gls@declareoption{restoremakegloss}{%
+ \ifdefequal\makeglossaries\@no@makeglossaries
+ {%
+ \GlossariesWarning{Option `restoremakegloss' has no effect
+ (\string\makenoidxglossaries\space has already been used)}%
+ }%
+ {%
+ \ifdefequal\@makeglossary\@gobble
+ {%
+ \GlossariesWarning{Option `restoremakegloss' has no effect
+ (\string\makeglossaries\space has already been used)}%
+ }%
+ {%
+ \PackageInfo{glossaries}{\string\makeglossaries\space and
+ \string\makenoidxglossaries\space have been restored}%
+ \let\@domakeglossaries\@firstofone
+ }%
+ }%
+}
+\newcommand*{\@do@write@glslabels}{%
+ \AtEndDocument{\@@do@write@glslabels}%
+ \let\@do@write@glslabels\relax
+}
+\newcommand*{\@@do@write@glslabels}{%
+ \newwrite\@gls@labelsfile
+ \immediate\openout\@gls@labelsfile=\jobname.glslabels
+ \protected@edef\@gls@fulllist{\@glo@types}%
+ \ifdefempty{\@ignored@glossaries}{}%
+ {\protected@eappto\@gls@fulllist{,\@ignored@glossaries}}%
+ \forallglsentries[\@gls@fulllist]{\@glsentry}%
+ {%
+ \ifdefempty{\@glsentry}{}%
+ {%
+ \ifx\do@write@glslabelsname\@gobble
+ \def\@gls@thisentryname{}%
+ \else
+ \letcs{\@gls@thisentryname}{glo@\glsdetoklabel{\@glsentry}@name}%
+ \@onelevel@sanitize\@gls@thisentryname
+ \fi
+ \immediate\write\@gls@labelsfile
+ {\@glsentry\do@write@glslabelsname{\@gls@thisentryname}}%
+ }%
+ }%
+ \immediate\closeout\@gls@labelsfile
+}
+\newcommand*{\do@write@glslabelsname}[1]{}
+\begingroup
+\catcode`\^^I12
+\gdef\@write@glslabelsname#1{^^I#1}
+\endgroup
+\@gls@declareoption{writeglslabels}{\@do@write@glslabels
+ \let\do@write@glslabelsname\@gobble}
+\@gls@declareoption{writeglslabelnames}{\@do@write@glslabels
+ \let\do@write@glslabelsname\@write@glslabelsname}
+\newif\ifglsautomake
+\newcommand{\gls@automake@nr}{1}
+\newcommand{\gls@automake@makegloss}{}
+\newcommand{\gls@automake@option}{automake=\gls@automake@val}
+\newcommand*{\@gls@do@automake@err}{%
+ \PackageError{glossaries}{You must use
+ \string\makeglossaries\space with \gls@automake@option}
+ {%
+ Either remove the \gls@automake@option\space setting or
+ add \string\makeglossaries\space to your document preamble.%
+ }%
+}%
+\define@choicekey{glossaries.sty}{automake}%
+ [\gls@automake@val\gls@automake@nr]{true,false,immediate,makegloss,lite,delayed}[immediate]{%
+ \ifcase\gls@automake@nr\relax
+ \GlossariesWarning{automake=true deprecated. Use automake=delayed for a delayed write}%
+ \glsautomaketrue
+ \renewcommand{\gls@automake@makegloss}{}%
+ \or
+ \glsautomakefalse
+ \renewcommand{\gls@automake@makegloss}{}%
+ \or
+ \glsautomaketrue
+ \renewcommand{\gls@automake@makegloss}{}%
+ \or
+ \glsautomaketrue
+ \renewcommand{\gls@automake@makegloss}{makeglossaries}%
+ \or
+ \glsautomaketrue
+ \renewcommand{\gls@automake@makegloss}{makeglossaries-lite}%
+ \or
+ \def\gls@automake@nr{0}%
+ \glsautomaketrue
+ \renewcommand{\gls@automake@makegloss}{}%
+ \fi
+ \renewcommand{\gls@automake@option}{automake=\gls@automake@val}%
+ \ifglsautomake
+ \let\@gls@doautomake\@gls@do@automake@err
+ \else
+ \renewcommand*{\@gls@doautomake}{}%
+ \fi
+}
+\glsautomakefalse
+\newcommand*{\@gls@doautomake}{}
+\AtEndDocument{\@gls@doautomake}
+\@gls@declareoption{automakegloss}{%
+ \glsautomaketrue
+ \renewcommand{\gls@automake@option}{automakegloss}%
+ \def\gls@automake@val{makegloss}%
+ \def\gls@automake@nr{3}%
+ \renewcommand{\gls@automake@makegloss}{makeglossaries}%
+ \let\@gls@doautomake\@gls@do@automake@err
+}
+\@gls@declareoption{automakeglosslite}{%
+ \glsautomaketrue
+ \renewcommand{\gls@automake@option}{automakeglosslite}%
+ \def\gls@automake@val{lite}%
+ \def\gls@automake@nr{4}%
+ \renewcommand{\gls@automake@makegloss}{makeglossaries-lite}%
+ \let\@gls@doautomake\@gls@do@automake@err
+}
+\define@boolkey{glossaries.sty}[gls]{savewrites}[true]{%
+ \ifglssavewrites
+ \renewcommand*{\glswritefiles}{\@glswritefiles}%
+ \else
+ \let\glswritefiles\@empty
+ \fi
+}
+\glssavewritesfalse
+\let\glswritefiles\@empty
+\define@boolkey{glossaries.sty}[gls]{compatible-3.07}[true]{%
+ \ifbool{glscompatible-3.07}%
+ {%
+ \@gls@removedoption{compatible-3.07}%
+ }%
+ {}%
+}
+\boolfalse{glscompatible-3.07}
+\define@boolkey{glossaries.sty}[gls]{compatible-2.07}[true]{%
+ \ifbool{glscompatible-2.07}%
+ {%
+ \@gls@removedoption{compatible-2.07}%
+ }%
+ {}%
+}
+\boolfalse{glscompatible-2.07}
+\let\gls@original@makeglossary\makeglossary
+\let\gls@original@glossary\glossary
+\newcommand*{\@gls@override@glossary}[1][main]{%
+ \GlossariesWarning{Use of \string\glossary\space with
+ glossaries.sty is deprecated. \MessageBreak Indexing should be performed
+ with the user level \MessageBreak commands, such as \string\gls\space or
+ \string\glsadd. If you need the \MessageBreak original definition of
+ \string\glossary\space use the package \MessageBreak options
+ kernelglossredefs=false (to restore the \MessageBreak former definition of
+ \string\glossary) and nomain (if the \MessageBreak file extensions cause a
+ conflict)}%
+ \gls@glossary{#1}%
+}
+\define@choicekey{glossaries.sty}{kernelglossredefs}%
+ [\gls@kernelglossredefs@val\gls@kernelglossredefs@nr]{true,false,nowarn}[true]%
+{%
+ \ifcase\gls@kernelglossredefs@nr\relax
+ \def\glossary{\@gls@override@glossary}%
+ \def\makeglossary{%
+ \GlossariesWarning{Use of \string\makeglossary\space with
+ glossaries.sty is deprecated. Use \string\makeglossaries\space
+ instead. If you need the original definition of
+ \string\makeglossary\space use the package options
+ kernelglossredefs=false (to prevent redefinition of
+ \string\makeglossary) and nomain (if the file extensions cause a
+ conflict)}%
+ \makeglossaries
+ }%
+ \or
+ \let\glossary\gls@original@glossary
+ \let\makeglossary\gls@original@makeglossary
+ \or
+ \def\makeglossary{\makeglossaries}%
+ \renewcommand*{\@gls@override@glossary}[1][main]{%
+ \gls@glossary{##1}%
+ }%
+ \fi
+}
+\@gls@declareoption{symbols}{%
+ \let\@gls@do@symbolsdef\@gls@symbolsdef
+}
+\newcommand*{\@gls@do@symbolsdef}{}
+\newcommand*{\@gls@symbolsdef}{%
+ \newglossary[slg]{symbols}{sls}{slo}{\glssymbolsgroupname}%
+ \newcommand*{\printsymbols}[1][]{\printglossary[type=symbols,##1]}%
+ \newcommand*{\gls@tr@set@symbols@toctitle}{%
+ \translatelet{\glossarytoctitle}{Symbols (glossaries)}%
+ }%
+}%
+\@gls@declareoption{numbers}{%
+ \let\@gls@do@numbersdef\@gls@numbersdef
+}
+\newcommand*{\@gls@do@numbersdef}{}
+\newcommand*{\@gls@numbersdef}{%
+ \newglossary[nlg]{numbers}{nls}{nlo}{\glsnumbersgroupname}%
+ \newcommand*{\printnumbers}[1][]{\printglossary[type=numbers,##1]}%
+ \newcommand*{\gls@tr@set@numbers@toctitle}{%
+ \translatelet{\glossarytoctitle}{Numbers (glossaries)}%
+ }%
+}%
+\@gls@declareoption{index}{%
+ \ifx\@gls@do@indexdef\@empty
+ \let\@gls@do@indexdef\@gls@indexdef
+ \fi
+}
+\@gls@declareoption{noglossaryindex}{%
+ \let\@gls@do@indexdef\relax
+}
+\newcommand*{\@gls@do@indexdef}{}
+\newcommand*{\@gls@indexdef}{%
+ \newglossary[ilg]{index}{ind}{idx}{\indexname}%
+ \newcommand*{\printindex}[1][]{\printglossary[type=index,##1]}%
+ \newcommand*{\newterm}[2][]{%
+ \newglossaryentry{##2}%
+ {type={index},name={##2},description={\nopostdesc},##1}}
+ \let\@gls@do@indexdef\relax
+}%
+\define@choicekey{glossaries.sty}{mfirstuc}%
+ [\gls@mfirstuc@val\gls@mfirstuc@nr]%
+ {expanded,unexpanded}%
+ {%
+ \ifcase\gls@mfirstuc@nr
+ % expanded
+ \renewcommand*{\glsmakefirstuc}[1]{\MFUsentencecase{#1}}%
+ \or
+ % unexpanded
+ \renewcommand*{\glsmakefirstuc}[1]{\MFUsentencecase{\unexpanded{#1}}}%
+ \fi
+ }
+\@for\CurrentOption :=\@declaredoptions\do{%
+ \ifx\CurrentOption\@empty
+ \else
+ \@expandtwoargs
+ \in@ {,\CurrentOption ,}{,\@classoptionslist,\@curroptions,}%
+ \ifin@
+ \@use@ption
+ \expandafter \let\csname ds@\CurrentOption\endcsname\@empty
+ \fi
+ \fi
+}
+\ProcessOptionsX
+\ifglsautomake
+ \ifdef\directlua{\RequirePackage{shellesc}}{}
+\fi
+\disable@keys{glossaries.sty}{compatible-2.07,%
+ xindy,xindygloss,xindynoglsnumbers,makeindex,%
+ acronym,translate,notranslate,languages,nolong,nosuper,notree,nostyles,%
+ nomain,noglossaryindex}
+\newcommand*{\setupglossaries}[1]{%
+ \renewcommand*{\@gls@setacrstyle}{}%
+ \ifglsacrshortcuts
+ \def\@gls@setupshortcuts{\glsacrshortcutstrue}%
+ \else
+ \def\@gls@setupshortcuts{%
+ \ifglsacrshortcuts
+ \DefineAcronymSynonyms
+ \fi
+ }%
+ \fi
+ \glsacrshortcutsfalse
+ \let\@gls@do@numbersdef\relax
+ \let\@gls@do@symbolssdef\relax
+ \let\@gls@do@indexdef\relax
+ \let\@gls@do@acronymsdef\relax
+ \ifglsentrycounter
+ \let\@gls@doentrycounterdef\relax
+ \else
+ \let\@gls@doentrycounterdef\@gls@define@glossaryentrycounter
+ \fi
+ \ifglssubentrycounter
+ \let\@gls@dosubentrycounterdef\relax
+ \else
+ \let\@gls@dosubentrycounterdef\@gls@define@glossarysubentrycounter
+ \fi
+ \setkeys{glossaries.sty}{#1}%
+ \@gls@setacrstyle
+ \@gls@setupshortcuts
+ \@gls@do@acronymsdef
+ \@gls@do@numbersdef
+ \@gls@do@symbolssdef
+ \@gls@do@indexdef
+ \@gls@doentrycounterdef
+ \@gls@dosubentrycounterdef
+}
+\ifthenelse{\equal{\glscounter}{section}}%
+{%
+ \ifcsundef{chapter}{}%
+ {%
+ \let\@gls@old@chapter\@chapter
+ \def\@chapter[#1]#2{\@gls@old@chapter[{#1}]{#2}%
+ \ifcsundef{hyperdef}{}{\hyperdef{section}{\thesection}{}}}%
+ }%
+}%
+{}
+\newcommand*{\@gls@onlypremakeg}{}
+\newcommand*{\@onlypremakeg}[1]{%
+ \ifx\@gls@onlypremakeg\@empty
+ \def\@gls@onlypremakeg{#1}%
+ \else
+ \expandafter\toks@\expandafter{\@gls@onlypremakeg}%
+ \edef\@gls@onlypremakeg{\the\toks@,\noexpand#1}%
+ \fi
+}
+\newcommand*{\@disable@onlypremakeg}{%
+\@for\@thiscs:=\@gls@onlypremakeg\do{%
+ \expandafter\@disable@premakecs\@thiscs%
+}}
+\newcommand*{\@disable@premakecs}[1]{%
+ \def#1{\PackageError{glossaries}{\string#1\space may only be
+ used before \string\makeglossaries}{You can't use
+ \string#1\space after \string\makeglossaries}}%
+}
+\providecommand*{\glossaryname}{Glossary}
+\providecommand*{\acronymname}{Acronyms}
+\newcommand*{\glssettoctitle}[1]{%
+ \def\glossarytoctitle{\csname @glotype@#1@title\endcsname}}
+\providecommand*{\entryname}{Notation}
+\providecommand*{\descriptionname}{Description}
+\providecommand*{\symbolname}{Symbol}
+\providecommand*{\pagelistname}{Page List}
+\providecommand*{\glssymbolsgroupname}{Symbols}
+\providecommand*{\glsnumbersgroupname}{Numbers}
+\newcommand*{\glspluralsuffix}{s}
+\newcommand*{\glsacrpluralsuffix}{\glspluralsuffix}
+\newcommand*{\glsupacrpluralsuffix}{\glstextup{\glsacrpluralsuffix}}
+\providecommand*{\seename}{see}
+\providecommand*{\andname}{\&}
+\newcommand*{\RequireGlossariesLang}[1]{%
+ \@ifundefined{ver@glossaries-#1.ldf}{\input{glossaries-#1.ldf}}{}%
+}
+\newcommand*{\ProvidesGlossariesLang}[1]{%
+ \ProvidesFile{glossaries-#1.ldf}%
+}
+\newcommand*{\addglossarytocaptions}[1]{}
+\ifglstranslate
+ \RequirePackage{tracklang}[2019/11/30]
+ \ifdefvoid\@gls@requested@languages{}%
+ {%
+ \@for\@gls@thislang:=\@gls@requested@languages\do{%
+ \TrackIfKnownLanguage{\@gls@thislang}{}%
+ {\GlossariesWarning{unknown language `\@gls@thislang'}}%
+ }%
+ }%
+ \@gls@usetranslator
+ \@ifpackageloaded{translator}
+ {%
+ \ifboolexpr
+ {
+ test {\ifdefstring{\trans@languages}{English}}
+ and not
+ test {\ifdefstring{bbl@loaded}{english}}
+ }
+ {%
+ \let\glsifusetranslator\@secondoftwo
+ }%
+ {%
+ \usedictionary{glossaries-dictionary}%
+ \renewcommand*{\addglossarytocaptions}[1]{%
+ \ifcsundef{captions#1}{}%
+ {%
+ \expandafter\let\expandafter\@gls@tmp\csname captions#1\endcsname
+ \expandafter\toks@\expandafter{\@gls@tmp
+ \renewcommand*{\glossaryname}{\translate{Glossary}}%
+ }%
+ \expandafter\edef\csname captions#1\endcsname{\the\toks@}%
+ }%
+ }%
+ }%
+ }%
+ {}%
+ \AnyTrackedLanguages
+ {%
+ \ForEachTrackedDialect{\this@dialect}{%
+ \IfTrackedLanguageFileExists{\this@dialect}%
+ {glossaries-}% prefix
+ {.ldf}%
+ {%
+ \RequireGlossariesLang{\CurrentTrackedTag}%
+ }%
+ {%
+ \@gls@missinglang@warn\this@dialect\CurrentTrackedLanguage
+ }%
+ }%
+ }%
+ {}%
+ \glsifusetranslator
+ {%
+ \renewcommand*{\glssettoctitle}[1]{%
+ \ifcsdef{gls@tr@set@#1@toctitle}%
+ {%
+ \csuse{gls@tr@set@#1@toctitle}%
+ }%
+ {%
+ \def\glossarytoctitle{\csname @glotype@#1@title\endcsname}%
+ }%
+ }%
+ \renewcommand*{\glossaryname}{\translate{Glossary}}%
+ \renewcommand*{\acronymname}{\translate{Acronyms}}%
+ \renewcommand*{\entryname}{\translate{Notation (glossaries)}}%
+ \renewcommand*{\descriptionname}{%
+ \translate{Description (glossaries)}}%
+ \renewcommand*{\symbolname}{\translate{Symbol (glossaries)}}%
+ \renewcommand*{\pagelistname}{%
+ \translate{Page List (glossaries)}}%
+ \renewcommand*{\glssymbolsgroupname}{%
+ \translate{Symbols (glossaries)}}%
+ \renewcommand*{\glsnumbersgroupname}{%
+ \translate{Numbers (glossaries)}}%
+ }{}%
+\fi
+\DeclareRobustCommand*{\nopostdesc}{}
+\newcommand*{\@nopostdesc}{%
+ \let\org@glspostdescription\glspostdescription
+ \def\glspostdescription{%
+ \let\glspostdescription\org@glspostdescription}%
+}
+\newcommand*{\@no@post@desc}{\nopostdesc}
+\newcommand{\glspar}{\par}
+\newcommand{\setStyleFile}[1]{%
+ \renewcommand*{\gls@istfilebase}{#1}%
+ \ifglsxindy
+ \def\istfilename{\gls@istfilebase.xdy}
+ \else
+ \def\istfilename{\gls@istfilebase.ist}
+ \fi
+}
+\@onlypremakeg\setStyleFile
+\ifglsxindy
+ \def\istfilename{\gls@istfilebase.xdy}
+\else
+ \def\istfilename{\gls@istfilebase.ist}
+\fi
+\newcommand*{\gls@istfilebase}{\jobname}
+\newcommand*{\@istfilename}[1]{}
+\newcommand*{\glscompositor}{.}
+\newcommand*{\glsSetCompositor}[1]{%
+ \renewcommand*{\glscompositor}{#1}}
+\@onlypremakeg\glsSetCompositor
+\newcommand*{\@glsAlphacompositor}{\glscompositor}
+\ifglsxindy
+ \newcommand*\glsSetAlphaCompositor[1]{%
+ \renewcommand*\@glsAlphacompositor{#1}}
+\else
+ \newcommand*\glsSetAlphaCompositor[1]{%
+ \glsnoxindywarning\glsSetAlphaCompositor}
+\fi
+\@onlypremakeg\glsSetAlphaCompositor
+\newcommand*{\gls@suffixF}{}
+\newcommand*{\glsSetSuffixF}[1]{%
+ \renewcommand*{\gls@suffixF}{#1}}
+\@onlypremakeg\glsSetSuffixF
+\newcommand*{\gls@suffixFF}{}
+\newcommand*{\glsSetSuffixFF}[1]{%
+ \renewcommand*{\gls@suffixFF}{#1}%
+}
+\ifcsundef{hyperlink}%
+{%
+ \newcommand*{\glsnumberformat}[1]{#1}%
+}%
+{%
+ \newcommand*{\glsnumberformat}[1]{\glshypernumber{#1}}%
+}
+\newcommand{\glslocationcstoencap}[3]{\csuse{#2}{\csuse{#1}{#3}}}
+\newcommand{\delimN}{, }
+\newcommand{\delimR}{--}
+\newcommand*{\glossarypreamble}{%
+ \csuse{@glossarypreamble@\currentglossary}%
+}
+\newcommand{\setglossarypreamble}[2][\glsdefaulttype]{%
+ \ifglossaryexists*{#1}%
+ {\csgdef{@glossarypreamble@#1}{#2}}%
+ {\GlossariesWarning{Glossary `#1' is not defined}}%
+}
+\newcommand*{\glossarypostamble}{}
+\newcommand*{\glossarysection}[2][\@gls@title]{%
+ \def\@gls@title{#2}%
+ \ifcsundef{phantomsection}%
+ {%
+ \@glossarysection{#1}{#2}%
+ }%
+ {%
+ \@p@glossarysection{#1}{#2}%
+ }%
+ \glsglossarymark{\glossarytoctitle}%
+}
+\ifcsundef{glossarymark}%
+{%
+ \newcommand{\glsglossarymark}[1]{\glossarymark{#1}}
+}%
+{%
+ \@ifclassloaded{memoir}
+ {%
+ \newcommand{\glsglossarymark}[1]{%
+ \ifglsucmark
+ \markboth{\memUChead{#1}}{\memUChead{#1}}%
+ \else
+ \markboth{#1}{#1}%
+ \fi
+ }
+ }%
+ {%
+ \newcommand{\glsglossarymark}[1]{%
+ \ifglsucmark
+ \@mkboth{\glsuppercase{#1}}{\glsuppercase{#1}}%
+ \else
+ \@mkboth{#1}{#1}%
+ \fi
+ }
+ }
+}
+\providecommand{\glossarymark}[1]{%
+ \ifglsucmark
+ \@mkboth{\glsuppercase{#1}}{\glsuppercase{#1}}%
+ \else
+ \@mkboth{#1}{#1}%
+ \fi
+}
+\newcommand*{\setglossarysection}[1]{%
+\setkeys{glossaries.sty}{section=#1}}
+\newcommand*{\@glossarysection}[2]{%
+ \ifdefempty\@@glossarysecstar
+ {%
+ \csname\@@glossarysec\endcsname[#1]{#2}%
+ }%
+ {%
+ \csname\@@glossarysec\endcsname*{#2}%
+ \@gls@toc{#1}{\@@glossarysec}%
+ }%
+ \@@glossaryseclabel
+}
+\newcommand*{\@p@glossarysection}[2]{%
+ \glsclearpage
+ \phantomsection
+ \ifdefempty\@@glossarysecstar
+ {%
+ \csname\@@glossarysec\endcsname{#2}%
+ }%
+ {%
+ \@gls@toc{#1}{\@@glossarysec}%
+ \csname\@@glossarysec\endcsname*{#2}%
+ }%
+ \@@glossaryseclabel
+}
+\newcommand*{\gls@doclearpage}{%
+ \ifthenelse{\equal{\@@glossarysec}{chapter}}%
+ {%
+ \ifcsundef{cleardoublepage}%
+ {%
+ \clearpage
+ }%
+ {%
+ \ifcsdef{if@openright}%
+ {%
+ \if@openright
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi
+ }%
+ {%
+ \cleardoublepage
+ }%
+ }%
+ }%
+ {}%
+}
+\newcommand*{\glsclearpage}{\gls@doclearpage}
+\newcommand*{\@gls@toc}[2]{%
+ \ifglstoc
+ \ifglsnumberline
+ \addcontentsline{toc}{#2}{\protect\numberline{}#1}%
+ \else
+ \addcontentsline{toc}{#2}{#1}%
+ \fi
+ \fi
+}
+\newcommand*{\glsnoxindywarning}[1]{%
+ \GlossariesWarning{Not in xindy mode --- ignoring \string#1}%
+}
+\newcommand*{\glsnomakeindexwarning}[1]{%
+ \GlossariesWarning{Not in makeindex mode --- ignoring \string#1}%
+}
+\ifglsxindy
+ \edef\@xdyattributes{\string"default\string"}%
+\fi
+\ifglsxindy
+ \edef\@xdyattributelist{}%
+\fi
+\ifglsxindy
+ \def\@xdylocref{}
+\fi
+\newcommand*{\@gls@ifinlist}[4]{%
+ \def\@do@ifinlist##1,#1,##2\end@doifinlist{%
+ \def\@gls@listsuffix{##2}%
+ \ifx\@gls@listsuffix\@empty
+ #4%
+ \else
+ #3%
+ \fi
+ }%
+ \@do@ifinlist,#2,#1,\end@doifinlist
+}
+\ifglsxindy
+ \newcommand*{\@xdycounters}{\glscounter}
+ \newcommand*\GlsAddXdyCounters[1]{%
+ \@for\@gls@ctr:=#1\do{%
+ \edef\@do@addcounter{%
+ \noexpand\@gls@ifinlist{\@gls@ctr}{\@xdycounters}{}%
+ {%
+ \noexpand\edef\noexpand\@xdycounters{\@xdycounters,%
+ \noexpand\@gls@ctr}%
+ }%
+ }%
+ \@do@addcounter
+ }
+ }
+ \@onlypremakeg\GlsAddXdyCounters
+\else
+ \newcommand*\GlsAddXdyCounters[1]{%
+ \glsnoxindywarning\GlsAddXdyAttribute
+ }
+\fi
+\newcommand*\@disabled@glsaddxdycounters{%
+ \PackageError{glossaries}{\string\GlsAddXdyCounters\space
+ can't be used after \string\GlsAddXdyAttribute}{Move all
+ occurrences of \string\GlsAddXdyCounters\space before the first
+ instance of \string\GlsAddXdyAttribute}%
+}
+\ifglsxindy
+ \newcommand*\@glsaddxdyattribute[2]{%
+ \edef\@xdyattributes{\@xdyattributes ^^J
+ \string"#2#1\string"}%
+ \expandafter\toks@\expandafter{\@xdylocref}%
+ \edef\@xdylocref{\the\toks@ ^^J%
+ (markup-locref
+ :open \string"\glstildechar n%
+ \expandafter\string\csname glsX#2X#1\endcsname
+ \string" ^^J
+ :close \string"\string" ^^J
+ :attr \string"#2#1\string")}%
+ \expandafter\gdef\csname glsX#2X#1\endcsname##1##2{%
+ \setentrycounter[##1]{#2}\csname #1\endcsname{##2}%
+ }%
+ }
+ \newcommand*\GlsAddXdyAttribute[1]{%
+ \ifx\@xdyattributelist\@empty
+ \edef\@xdyattributelist{#1}%
+ \else
+ \edef\@xdyattributelist{\@xdyattributelist,#1}%
+ \fi
+ \edef\@xdyattributes{\@xdyattributes ^^J
+ \string"#1\string"}%
+ \@for\@this@counter:=\@xdycounters\do{%
+ \protected@edef\gls@do@addxdyattribute{%
+ \noexpand\@glsaddxdyattribute{#1}{\@this@counter}%
+ }
+ \gls@do@addxdyattribute
+ }%
+ \let\GlsAddXdyCounters\@disabled@glsaddxdycounters
+ }
+ \@onlypremakeg\GlsAddXdyAttribute
+\else
+ \newcommand*\GlsAddXdyAttribute[1]{%
+ \glsnoxindywarning\GlsAddXdyAttribute}
+\fi
+\ifglsxindy
+\newcommand*{\@gls@addpredefinedattributes}{%
+ \GlsAddXdyAttribute{glsnumberformat}
+ \GlsAddXdyAttribute{textrm}
+ \GlsAddXdyAttribute{textsf}
+ \GlsAddXdyAttribute{texttt}
+ \GlsAddXdyAttribute{textbf}
+ \GlsAddXdyAttribute{textmd}
+ \GlsAddXdyAttribute{textit}
+ \GlsAddXdyAttribute{textup}
+ \GlsAddXdyAttribute{textsl}
+ \GlsAddXdyAttribute{textsc}
+ \GlsAddXdyAttribute{emph}
+ \GlsAddXdyAttribute{glshypernumber}
+ \GlsAddXdyAttribute{hyperrm}
+ \GlsAddXdyAttribute{hypersf}
+ \GlsAddXdyAttribute{hypertt}
+ \GlsAddXdyAttribute{hyperbf}
+ \GlsAddXdyAttribute{hypermd}
+ \GlsAddXdyAttribute{hyperit}
+ \GlsAddXdyAttribute{hyperup}
+ \GlsAddXdyAttribute{hypersl}
+ \GlsAddXdyAttribute{hypersc}
+ \GlsAddXdyAttribute{hyperemph}
+ \GlsAddXdyAttribute{glsignore}
+}
+\else
+ \let\@gls@addpredefinedattributes\relax
+\fi
+\def\@xdyuseralphabets{}
+\ifglsxindy
+ \newcommand*{\GlsAddXdyAlphabet}[2]{%
+ \edef\@xdyuseralphabets{%
+ \@xdyuseralphabets ^^J
+ (define-alphabet "#1" (#2))}}
+\else
+ \newcommand*{\GlsAddXdyAlphabet}[2]{%
+ \glsnoxindywarning\GlsAddXdyAlphabet}
+\fi
+\ifglsxindy
+ \newcommand*{\@gls@xdy@locationlist}{%
+ roman-page-numbers,%
+ Roman-page-numbers,%
+ arabic-page-numbers,%
+ alpha-page-numbers,%
+ Alpha-page-numbers,%
+ Appendix-page-numbers,%
+ arabic-section-numbers%
+ }
+ \protected@edef\@gls@roman{\@roman{0\string"
+ \string"roman-numbers-lowercase\string" :sep \string"}}%
+ \@onelevel@sanitize\@gls@roman
+ \edef\@gls@tmp{\string" \string"roman-numbers-lowercase\string"
+ :sep \string"}%
+ \@onelevel@sanitize\@gls@tmp
+ \ifx\@gls@tmp\@gls@roman
+ \expandafter
+ \edef\csname @gls@xdy@Lclass@roman-page-numbers\endcsname{%
+ \string"roman-numbers-lowercase\string"%
+ }%
+ \else
+ \expandafter
+ \edef\csname @gls@xdy@Lclass@roman-page-numbers\endcsname{
+ :sep \string"\@gls@roman\string"%
+ }%
+ \fi
+ \expandafter\def\csname @gls@xdy@Lclass@Roman-page-numbers\endcsname{%
+ \string"roman-numbers-uppercase\string"%
+ }%
+ \expandafter\def\csname @gls@xdy@Lclass@arabic-page-numbers\endcsname{%
+ \string"arabic-numbers\string"%
+ }%
+ \expandafter\def\csname @gls@xdy@Lclass@alpha-page-numbers\endcsname{%
+ \string"alpha\string"%
+ }%
+ \expandafter\def\csname @gls@xdy@Lclass@Alpha-page-numbers\endcsname{%
+ \string"ALPHA\string"%
+ }%
+ \expandafter\def\csname @gls@xdy@Lclass@Appendix-page-numbers\endcsname{%
+ \string"ALPHA\string"
+ :sep \string"\@glsAlphacompositor\string"
+ \string"arabic-numbers\string"%
+ }
+ \expandafter\def\csname @gls@xdy@Lclass@arabic-section-numbers\endcsname{%
+ \string"arabic-numbers\string"
+ :sep \string"\glscompositor\string"
+ \string"arabic-numbers\string"%
+ }%
+ \def\@xdyuserlocationdefs{}
+ \def\@xdyuserlocationnames{}
+\fi
+\ifglsxindy
+ \newcommand\@xdycrossrefhook{}
+\fi
+\ifglsxindy
+ \newcommand*{\GlsAddXdyLocation}[3][]{%
+ \def\@gls@tmp{#1}%
+ \ifx\@gls@tmp\@empty
+ \edef\@xdyuserlocationdefs{%
+ \@xdyuserlocationdefs ^^J%
+ (define-location-class \string"#2\string"^^J\space\space
+ \space(:sep \string"{}\glsopenbrace\string" #3
+ :sep \string"\glsclosebrace\string"))
+ }%
+ \else
+ \edef\@xdyuserlocationdefs{%
+ \@xdyuserlocationdefs ^^J%
+ (define-location-class \string"#2\string"^^J\space\space
+ \space(:sep "\glsopenbrace"
+ #1
+ :sep "\glsclosebrace\glsopenbrace" #3
+ :sep "\glsclosebrace"))
+ }%
+ \fi
+ \edef\@xdyuserlocationnames{%
+ \@xdyuserlocationnames^^J\space\space\space
+ \string"#2\string"}%
+ }
+ \@onlypremakeg\GlsAddXdyLocation
+\else
+ \newcommand*{\GlsAddXdyLocation}[2]{%
+ \glsnoxindywarning\GlsAddXdyLocation}
+\fi
+\ifglsxindy
+ \def\@xdylocationclassorder{^^J\space\space\space
+ \string"roman-page-numbers\string"^^J\space\space\space
+ \string"arabic-page-numbers\string"^^J\space\space\space
+ \string"arabic-section-numbers\string"^^J\space\space\space
+ \string"alpha-page-numbers\string"^^J\space\space\space
+ \string"Roman-page-numbers\string"^^J\space\space\space
+ \string"Alpha-page-numbers\string"^^J\space\space\space
+ \string"Appendix-page-numbers\string"
+ \@xdyuserlocationnames^^J\space\space\space
+ \string"see\string"
+ }
+\fi
+\ifglsxindy
+ \newcommand*\GlsSetXdyLocationClassOrder[1]{%
+ \def\@xdylocationclassorder{#1}}
+\else
+ \newcommand*\GlsSetXdyLocationClassOrder[1]{%
+ \glsnoxindywarning\GlsSetXdyLocationClassOrder}
+\fi
+\ifglsxindy
+ \def\@xdysortrules{}
+\fi
+\ifglsxindy
+ \newcommand*\GlsAddSortRule[2]{%
+ \expandafter\toks@\expandafter{\@xdysortrules}%
+ \protected@edef\@xdysortrules{\the\toks@ ^^J
+ (sort-rule \string"#1\string" \string"#2\string")}%
+ }
+\else
+ \newcommand*\GlsAddSortRule[2]{%
+ \glsnoxindywarning\GlsAddSortRule}
+\fi
+\ifglsxindy
+ \def\@xdyrequiredstyles{tex}
+\fi
+\ifglsxindy
+ \newcommand*\GlsAddXdyStyle[1]{%
+ \edef\@xdyrequiredstyles{\@xdyrequiredstyles,#1}}%
+\else
+ \newcommand*\GlsAddXdyStyle[1]{%
+ \glsnoxindywarning\GlsAddXdyStyle}
+\fi
+\ifglsxindy
+ \newcommand*\GlsSetXdyStyles[1]{%
+ \edef\@xdyrequiredstyles{#1}}
+\else
+ \newcommand*\GlsSetXdyStyles[1]{%
+ \glsnoxindywarning\GlsSetXdyStyles}
+\fi
+\def\@xdylanguage#1#2{}
+\ifglsxindy
+ \newcommand*\GlsSetXdyLanguage[2][\glsdefaulttype]{%
+ \ifglossaryexists{#1}{%
+ \expandafter\def\csname @xdy@#1@language\endcsname{#2}%
+ }{%
+ \PackageError{glossaries}{Can't set language type for
+ glossary type `#1' --- no such glossary}{%
+ You have specified a glossary type that doesn't exist}}}
+\else
+ \newcommand*\GlsSetXdyLanguage[2][]{%
+ \glsnoxindywarning\GlsSetXdyLanguage}
+\fi
+\def\@gls@codepage#1#2{}
+\ifglsxindy
+ \newcommand*{\GlsSetXdyCodePage}[1]{%
+ \renewcommand*{\gls@codepage}{#1}%
+ }
+ \AtBeginDocument{%
+ \ifx\gls@codepage\@empty
+ \@ifpackageloaded{fontspec}{\def\gls@codepage{utf8}}{}%
+ \fi
+ }
+\else
+ \newcommand*{\GlsSetXdyCodePage}[1]{%
+ \glsnoxindywarning\GlsSetXdyCodePage}
+\fi
+\ifglsxindy
+ \ifgls@xindy@glsnumbers
+ \def\@xdylettergroups{(define-letter-group
+ \string"glsnumbers\string"^^J\space\space\space
+ :prefixes (\string"0\string" \string"1\string"
+ \string"2\string" \string"3\string" \string"4\string"
+ \string"5\string" \string"6\string" \string"7\string"
+ \string"8\string" \string"9\string")^^J\space\space\space
+ \@xdynumbergrouporder)}
+ \else
+ \def\@xdylettergroups{}
+ \fi
+\fi
+ \newcommand*\GlsAddLetterGroup[2]{%
+ \expandafter\toks@\expandafter{\@xdylettergroups}%
+ \protected@edef\@xdylettergroups{\the\toks@^^J%
+ (define-letter-group \string"#1\string"^^J\space\space\space#2)}%
+ }%
+\newcommand*{\forallglossaries}[3][\@glo@types]{%
+ \@for#2:=#1\do{\ifx#2\@empty\else#3\fi}%
+}
+
+\newcommand*{\forallacronyms}[2]{%
+ \@for#1:=\@glsacronymlists\do{\ifx#1\@empty\else#2\fi}%
+}
+\newcommand*{\forglsentries}[3][\glsdefaulttype]{%
+ \protected@edef\@@glo@list{\csname glolist@#1\endcsname}%
+ \@for#2:=\@@glo@list\do
+ {%
+ \ifdefempty{#2}{}{#3}%
+ }%
+}
+\newcommand*{\forallglsentries}[3][\@glo@types]{%
+ \expandafter\forallglossaries\expandafter[#1]{\@@this@glo@}%
+ {%
+ \forglsentries[\@@this@glo@]{#2}{#3}%
+ }%
+}
+\newcommand{\ifglossaryexists}{%
+ \@ifstar\s@ifglossaryexists\@ifglossaryexists
+}
+\newcommand{\@ifglossaryexists}[3]{%
+ \ifcsundef{@glotype@#1@out}{#3}{#2}%
+}
+\newcommand{\s@ifglossaryexists}[3]{%
+ \ifcsundef{glolist@#1}{#3}{#2}%
+}
+\newcommand*{\glsdetoklabel}[1]{#1}
+\newcommand{\ifglsentryexists}[3]{%
+ \ifcsundef{glo@\glsdetoklabel{#1}@name}{#3}{#2}%
+}
+\newcommand*{\ifglsused}[3]{%
+ \ifbool{glo@\glsdetoklabel{#1}@flag}{#2}{#3}%
+}
+\newcommand{\glsdoifexists}[2]{%
+ \ifglsentryexists{#1}{#2}{%
+ \PackageError{glossaries}{Glossary entry `\glsdetoklabel{#1}'
+ has not been defined}{You need to define a glossary entry before you
+ can use it.}}%
+}
+\newcommand{\glsdoifnoexists}[2]{%
+ \ifglsentryexists{#1}{%
+ \PackageError{glossaries}{Glossary entry `\glsdetoklabel{#1}' has already
+ been defined}{}}{#2}%
+}
+\newcommand{\glsdoifexistsorwarn}[2]{%
+ \ifglsentryexists{#1}{#2}{%
+ \GlossariesWarning{Glossary entry `\glsdetoklabel{#1}'
+ has not been defined}%
+ }%
+}
+\newcommand{\glsdoifexistsordo}[3]{%
+ \ifglsentryexists{#1}{#2}{%
+ \PackageError{glossaries}{Glossary entry `\glsdetoklabel{#1}'
+ has not been defined}{You need to define a glossary entry before you
+ can use it.}%
+ #3%
+ }%
+}
+\newcommand{\doifglossarynoexistsordo}[3]{%
+ \ifglossaryexists*{#1}%
+ {%
+ \PackageError{glossaries}{Glossary type `#1' already exists}{}%
+ #3%
+ }%
+ {#2}%
+}
+\newrobustcmd{\ifglshaschildren}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \def\do@glshaschildren{#3}%
+ \protected@edef\@gls@thislabel{\glsdetoklabel{#1}}%
+ \expandafter\forglsentries\expandafter
+ [\csname glo@\@gls@thislabel @type\endcsname]
+ {\glo@label}%
+ {%
+ \letcs\glo@parent{glo@\glo@label @parent}%
+ \ifdefequal\@gls@thislabel\glo@parent
+ {%
+ \def\do@glshaschildren{#2}%
+ \@endfortrue
+ }%
+ {}%
+ }%
+ \do@glshaschildren
+ }%
+}
+\newcommand{\ifglshasparent}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \ifcsempty{glo@\glsdetoklabel{#1}@parent}{#3}{#2}%
+ }%
+}
+\newcommand*{\ifglshasdesc}[3]{%
+ \ifcsempty{glo@\glsdetoklabel{#1}@desc}%
+ {#3}%
+ {#2}%
+}
+\newcommand*{\ifglsdescsuppressed}[3]{%
+ \ifcsequal{glo@\glsdetoklabel{#1}@desc}{@no@post@desc}%
+ {#2}%
+ {#3}%
+}
+\newrobustcmd*{\ifglshassymbol}[3]{%
+ \letcs{\@glo@symbol}{glo@\glsdetoklabel{#1}@symbol}%
+ \ifdefempty\@glo@symbol
+ {#3}%
+ {%
+ \ifdefequal\@glo@symbol\@gls@default@value
+ {#3}%
+ {#2}%
+ }%
+}
+\newrobustcmd*{\ifglshaslong}[3]{%
+ \letcs{\@glo@long}{glo@\glsdetoklabel{#1}@long}%
+ \ifdefempty\@glo@long
+ {#3}%
+ {%
+ \ifdefequal\@glo@long\@gls@default@value
+ {#3}%
+ {#2}%
+ }%
+}
+\newrobustcmd*{\ifglshasshort}[3]{%
+ \letcs{\@glo@short}{glo@\glsdetoklabel{#1}@short}%
+ \ifdefempty\@glo@short
+ {#3}%
+ {%
+ \ifdefequal\@glo@short\@gls@default@value
+ {#3}%
+ {#2}%
+ }%
+}
+\newcommand{\ifglsfieldvoid}[4]{\ifcsvoid{glo@\glsdetoklabel{#2}@#1}{#3}{#4}}
+\newrobustcmd*{\ifglshasfield}[4]{%
+ \glsdoifexists{#2}%
+ {%
+ \letcs{\@glo@thisvalue}{glo@\glsdetoklabel{#2}@#1}%
+ \ifdef\@glo@thisvalue
+ {%
+ \ifdefempty\@glo@thisvalue
+ {%
+ #4%
+ }%
+ {%
+ \ifdefequal\@glo@thisvalue\@gls@default@value
+ {%
+ #4%
+ }%
+ {%
+ \let\glscurrentfieldvalue\@glo@thisvalue
+ #3%
+ }%
+ }%
+ }%
+ {%
+ \@gls@fetchfield{\@gls@thisfield}{#1}%
+ \ifdef\@gls@thisfield
+ {%
+ \letcs{\@glo@thisvalue}{glo@\glsdetoklabel{#2}@\@gls@thisfield}%
+ \ifdefempty\@glo@thisvalue
+ {%
+ #4%
+ }%
+ {%
+ \ifdefequal\@glo@thisvalue\@gls@default@value
+ {%
+ #4%
+ }%
+ {%
+ \let\glscurrentfieldvalue\@glo@thisvalue
+ #3%
+ }%
+ }%
+ }%
+ {%
+ \GlossariesWarning{Unknown entry field `#1'}%
+ #4%
+ }%
+ }%
+ }%
+}
+\newcommand*{\glscurrentfieldvalue}{}
+\newcommand*{\@glo@types}{,}
+\newcommand*\@gls@provide@newglossary{%
+ \protected@write\@auxout{}{\string\providecommand\string\@newglossary[4]{}}%
+ \let\@gls@provide@newglossary\relax
+}
+\newcommand*{\@gls@defaulttype}{\glsdefaulttype}
+\newcommand*{\defglsentryfmt}[2][\glsdefaulttype]{%
+ \protected@edef\@glo@tmp{#1}%
+ \ifx\@glo@tmp\@gls@defaulttype
+ \GlossariesWarning{\string\defglsentryfmt\space attempting to set
+ a display style for \string\glsdefaulttype\space but there
+ doesn't seem to be a default glossary. If you have used
+ `nomain', you need to define an alternative glossary}%
+ \else
+ \csgdef{gls@\@glo@tmp @entryfmt}{#2}%
+ \fi
+}
+\newcommand*{\gls@doentryfmt}[1]{\csuse{gls@#1@entryfmt}}
+\newcommand*{\@gls@forbidtexext}[1]{%
+ \ifboolexpr{test {\ifdefstring{#1}{tex}}
+ or test {\ifdefstring{#1}{TEX}}}
+ {%
+ \def#1{nottex}%
+ \PackageError{glossaries}%
+ {Forbidden `.tex' extension replaced with `.nottex'}%
+ {I'm sorry, I can't allow you to do something so reckless.\MessageBreak
+ Don't use `.tex' as an extension for a temporary file.}%
+ }%
+ {%
+ }%
+}
+\newcommand*{\gls@gobbleopt}{\new@ifnextchar[{\@gls@gobbleopt}{}}
+\def\@gls@gobbleopt[#1]{}
+\newcommand*{\newglossary}{\@ifstar\s@newglossary\ns@newglossary}
+\newcommand*{\s@newglossary}[2]{%
+ \ns@newglossary[#1-glg]{#1}{#1-gls}{#1-glo}{#2}%
+}
+\newcommand*{\ns@newglossary}[5][glg]{%
+ \doifglossarynoexistsordo{#2}%
+ {%
+ \ifundef\glsdefaulttype
+ {%
+ \gdef\glsdefaulttype{#2}%
+ }{}%
+ \toks@{#2}\protected@edef\@glo@types{\@glo@types\the\toks@,}%
+ \expandafter\gdef\csname glolist@#2\endcsname{,}%
+ \expandafter\edef\csname @glotype@#2@log\endcsname{#1}%
+ \expandafter\edef\csname @glotype@#2@in\endcsname{#3}%
+ \expandafter\edef\csname @glotype@#2@out\endcsname{#4}%
+ \expandafter\@gls@forbidtexext\csname @glotype@#2@log\endcsname
+ \expandafter\@gls@forbidtexext\csname @glotype@#2@in\endcsname
+ \expandafter\@gls@forbidtexext\csname @glotype@#2@out\endcsname
+ \expandafter\def\csname @glotype@#2@title\endcsname{#5}%
+ \@gls@provide@newglossary
+ \protected@write\@auxout{}{\string\@newglossary{#2}{#1}{#3}{#4}}%
+ \ifcsundef{gls@#2@entryfmt}%
+ {%
+ \defglsentryfmt[#2]{\glsentryfmt}%
+ }%
+ {}%
+ \@gls@defsortcount{#2}%
+ \@ifnextchar[{\@gls@setcounter{#2}}%
+ {\@gls@setcounter{#2}[\glscounter]}%
+ }%
+ {%
+ \gls@gobbleopt
+ }%
+}
+\newcommand*{\altnewglossary}[3]{%
+ \newglossary[#2-glg]{#1}{#2-gls}{#2-glo}{#3}%
+}
+\@onlypreamble{\newglossary}
+\@onlypremakeg\newglossary
+\newcommand*{\@newglossary}[4]{}
+\def\@gls@setcounter#1[#2]{%
+ \expandafter\def\csname @glotype@#1@counter\endcsname{#2}%
+ \ifglsxindy
+ \GlsAddXdyCounters{#2}%
+ \fi
+}
+\newcommand*{\@gls@getcounter}[1]{%
+ \csname @glotype@#1@counter\endcsname
+}
+\glsdefmain
+\@gls@do@acronymsdef
+\@gls@do@symbolsdef
+\@gls@do@numbersdef
+\@gls@do@indexdef
+\newcommand*{\newignoredglossary}[1]{%
+ \ifdefempty\@ignored@glossaries
+ {%
+ \protected@edef\@ignored@glossaries{#1}%
+ }%
+ {%
+ \protected@eappto\@ignored@glossaries{,#1}%
+ }%
+ \csgdef{glolist@#1}{,}%
+ \ifcsundef{gls@#1@entryfmt}%
+ {%
+ \defglsentryfmt[#1]{\glsentryfmt}%
+ }%
+ {}%
+ \ifdefempty\@gls@nohyperlist
+ {%
+ \renewcommand*{\@gls@nohyperlist}{#1}%
+ }%
+ {%
+ \protected@eappto\@gls@nohyperlist{,#1}%
+ }%
+}
+\newcommand*{\@ignored@glossaries}{}
+\newcommand*{\ifignoredglossary}[3]{%
+ \protected@edef\@gls@igtype{#1}%
+ \expandafter\DTLifinlist\expandafter
+ {\@gls@igtype}{\@ignored@glossaries}{#2}{#3}%
+}
+\define@key{glossentry}{name}{%
+\def\@glo@name{#1}%
+}
+\define@key{glossentry}{description}{%
+\def\@glo@desc{#1}%
+}
+\define@key{glossentry}{descriptionplural}{%
+\def\@glo@descplural{#1}%
+}
+\define@key{glossentry}{sort}{%
+\def\@glo@sort{#1}}
+\define@key{glossentry}{text}{%
+\def\@glo@text{#1}%
+}
+\define@key{glossentry}{plural}{%
+\def\@glo@plural{#1}%
+}
+\define@key{glossentry}{first}{%
+\def\@glo@first{#1}%
+}
+\define@key{glossentry}{firstplural}{%
+\def\@glo@firstplural{#1}%
+}
+\newcommand*{\@gls@default@value}{\relax}
+\define@key{glossentry}{symbol}{%
+\def\@glo@symbol{#1}%
+}
+\define@key{glossentry}{symbolplural}{%
+\def\@glo@symbolplural{#1}%
+}
+\define@key{glossentry}{type}{%
+\def\@glo@type{#1}}
+\define@key{glossentry}{counter}{%
+ \ifcsundef{c@#1}%
+ {%
+ \PackageError{glossaries}%
+ {There is no counter called `#1'}%
+ {%
+ The counter key should have the name of a valid counter
+ as its value%
+ }%
+ }%
+ {%
+ \def\@glo@counter{#1}%
+ }%
+}
+\define@key{glossentry}{see}{%
+ \gls@set@xr@key{see}{\@glo@see}{#1}%
+}
+\newcommand*{\gls@set@xr@key}[3]{%
+ \renewcommand*{\gls@xr@key}{#1}%
+ \gls@checkseeallowed
+ \def#2{#3}%
+ \@glo@seeautonumberlist
+}
+\newcommand*{\gls@xr@key}{see}
+\newcommand*{\gls@checkseeallowed}{%
+ \@gls@see@noindex
+}
+\newcommand*{\gls@checkseeallowed@preambleonly}{%
+ \GlossariesWarning
+ {`\gls@xr@key' key doesn't have any effect when used in the document
+ environment. Move the definition to the preamble
+ after \string\makeglossaries\space
+ or \string\makenoidxglossaries}%
+}
+\define@key{glossentry}{parent}{%
+\def\@glo@parent{#1}}
+\define@choicekey{glossentry}{nonumberlist}%
+ [\gls@nonumberlist@val\gls@nonumberlist@nr]{true,false}[true]%
+{%
+ \ifcase\gls@nonumberlist@nr\relax
+ \def\@glo@prefix{\glsnonextpages}%
+ \@gls@savenonumberlist{true}%
+ \else
+ \def\@glo@prefix{\glsnextpages}%
+ \@gls@savenonumberlist{false}%
+ \fi
+}
+\newcommand*{\gls@noidx@nonumberlist}[1]{%
+ \cslet{glo@\@glo@label @prenumberlist}\@glo@prefix
+}%
+\newcommand{\glsnoidxprenumberlist}[1]{%
+ \csuse{glo@\glsdetoklabel{#1}@prenumberlist}}
+\newcommand*{\@gls@savenonumberlist}[1]{}
+\newcommand*{\@gls@initnonumberlist}{}%
+\newcommand*{\@gls@storenonumberlist}[1]{}
+\newcommand*{\@gls@enablesavenonumberlist}{%
+ \renewcommand*{\@gls@initnonumberlist}{%
+ \undef\@glo@nonumberlist
+ }%
+ \renewcommand*{\@gls@savenonumberlist}[1]{%
+ \def\@glo@nonumberlist{##1}%
+ }%
+ \renewcommand*{\@gls@storenonumberlist}[1]{%
+ \ifdef\@glo@nonumberlist
+ {%
+ \cslet{glo@\glsdetoklabel{##1}@nonumberlist}{\@glo@nonumberlist}%
+ }%
+ {}%
+ }%
+ \appto\@gls@keymap{,{nonumberlist}{nonumberlist}}%
+}
+\define@key{glossentry}{user1}{%
+ \def\@glo@useri{#1}%
+}
+\define@key{glossentry}{user2}{%
+ \def\@glo@userii{#1}%
+}
+\define@key{glossentry}{user3}{%
+ \def\@glo@useriii{#1}%
+}
+\define@key{glossentry}{user4}{%
+ \def\@glo@useriv{#1}%
+}
+\define@key{glossentry}{user5}{%
+ \def\@glo@userv{#1}%
+}
+\define@key{glossentry}{user6}{%
+ \def\@glo@uservi{#1}%
+}
+\define@key{glossentry}{short}{%
+ \def\@glo@short{#1}%
+}
+\define@key{glossentry}{shortplural}{%
+ \def\@glo@shortpl{#1}%
+}
+\define@key{glossentry}{long}{%
+ \def\@glo@long{#1}%
+}
+\define@key{glossentry}{longplural}{%
+ \def\@glo@longpl{#1}%
+}
+\newcommand*{\@glsnoname}{%
+ \PackageError{glossaries}{name key required in
+ \string\newglossaryentry\space for entry `\@glo@label'}{You
+ haven't specified the entry name}}
+\newcommand*\@glsnodesc{%
+ \PackageError{glossaries}
+ {%
+ description key required in \string\newglossaryentry\space
+ for entry `\@glo@label'%
+ }%
+ {%
+ You haven't specified the entry description%
+ }%
+}%
+\newcommand*{\@gls@missingnumberlist}[1]{%
+ ??%
+ \ifglssavenumberlist
+ \GlossariesWarning{Missing number list for entry `#1'.
+ Maybe makeglossaries + rerun required}%
+ \else
+ \PackageError{glossaries}%
+ {Package option `savenumberlist=true' required}%
+ {%
+ You must use the `savenumberlist' package option
+ to reference location lists.%
+ }%
+ \fi
+}
+\newcommand*{\@glsdefaultsort}{\@glo@name}
+\newcount\gls@level
+\newcommand{\@@gls@noexpand@field}[3]{%
+ \expandafter\global\expandafter
+ \let\csname glo@#1@#2\endcsname#3%
+}
+\newcommand{\@gls@noexpand@fields}[4]{%
+ \ifcsdef{gls@assign@#3@field}
+ {%
+ \ifdefequal{#4}{\@gls@default@value}%
+ {%
+ \edef\@gls@value{\expandonce{#1}}%
+ \csuse{gls@assign@#3@field}{#2}{\@gls@value}%
+ }%
+ {%
+ \csuse{gls@assign@#3@field}{#2}{#4}%
+ }%
+ }%
+ {%
+ \ifdefequal{#4}{\@gls@default@value}%
+ {%
+ \edef\@gls@value{\expandonce{#1}}%
+ \@@gls@noexpand@field{#2}{#3}{\@gls@value}%
+ }%
+ {%
+ \@@gls@noexpand@field{#2}{#3}{#4}%
+ }%
+ }%
+}
+\newcommand{\@@gls@expand@field}[3]{%
+ \expandafter
+ \protected@xdef\csname glo@#1@#2\endcsname{#3}%
+}
+\newcommand{\@gls@expand@fields}[4]{%
+ \ifcsdef{gls@assign@#3@field}
+ {%
+ \ifdefequal{#4}{\@gls@default@value}%
+ {%
+ \edef\@gls@value{\expandonce{#1}}%
+ \csuse{gls@assign@#3@field}{#2}{\@gls@value}%
+ }%
+ {%
+ \expandafter\@gls@startswithexpandonce#4\relax\relax\gls@endcheck
+ {%
+ \@@gls@expand@field{#2}{#3}{#4}%
+ }%
+ {%
+ \csuse{gls@assign@#3@field}{#2}{#4}%
+ }%
+ }%
+ }%
+ {%
+ \ifdefequal{#4}{\@gls@default@value}%
+ {%
+ \@@gls@expand@field{#2}{#3}{#1}%
+ }%
+ {%
+ \@@gls@expand@field{#2}{#3}{#4}%
+ }%
+ }%
+}
+\def\@gls@expandonce{\expandonce}
+\def\@gls@startswithexpandonce#1#2\gls@endcheck#3#4{%
+ \def\@gls@tmp{#1}%
+ \ifdefequal{\@gls@expandonce}{\@gls@tmp}{#3}{#4}%
+}
+\let\gls@assign@field\@gls@expand@fields
+\newcommand*{\glsexpandfields}{%
+ \let\gls@assign@field\@gls@expand@fields
+}
+\newcommand*{\glsnoexpandfields}{%
+ \let\gls@assign@field\@gls@noexpand@fields
+}
+\newrobustcmd{\newglossaryentry}[2]{%
+ \glsdoifnoexists{#1}%
+ {%
+ \gls@defglossaryentry{#1}{#2}%
+ }%
+}
+\newcommand*{\gls@defdocnewglossaryentry}{%
+ \let\newglossaryentry\new@glossaryentry
+}
+\newrobustcmd{\provideglossaryentry}[2]{%
+ \ifglsentryexists{#1}%
+ {}%
+ {%
+ \gls@defglossaryentry{#1}{#2}%
+ }%
+}
+\@onlypreamble{\provideglossaryentry}
+\newcommand*{\gls@glsdefs@labellist}{}
+\newcommand*{\gls@glsdefs@addlabel}[1]{\listxadd{\gls@glsdefs@labellist}{#1}}
+\newcommand*{\gls@docdef@labellist}{}
+\newcommand*{\gls@docdef@addlabel}[1]{\listxadd{\gls@docdef@labellist}{#1}}
+\newrobustcmd{\new@glossaryentry}[2]{%
+ \ifundef\@gls@deffile
+ {%
+ \global\newwrite\@gls@deffile
+ \immediate\openout\@gls@deffile=\jobname.glsdefs
+ }%
+ {}%
+ \ifglsentryexists{#1}%
+ {%
+ \xifinlist{#1}{\gls@docdef@labellist}%
+ {%
+ \GlossariesWarning{Entry `#1' has already been defined in the
+ document environment (ignoring new definition)}%
+ }%
+ {%
+ \xifinlist{#1}{\gls@glsdefs@labellist}%
+ {%
+ \gls@defglossaryentry{#1}{#2}%
+ \gls@docdef@addlabel{#1}%
+ \@gls@writedef{#1}%
+ }%
+ {%
+ \GlossariesWarning{Entry `#1' has already been defined in
+ the preamble (in which case remove the duplicate definition)
+ or you have just updated to glossaries.sty
+ v4.47 (in which case delete `\jobname.glsdefs')}%
+ }%
+ }%
+ }%
+ {%
+ \gls@defglossaryentry{#1}{#2}%
+ \gls@docdef@addlabel{#1}%
+ \@gls@writedef{#1}%
+ }%
+}
+\AtBeginDocument{\gls@begindocdefs}
+\AtEndDocument{\ifdef\@gls@deffile{\closeout\@gls@deffile}{}}
+\newcommand*{\gls@begindocdefs}{%
+ \@gls@enablesavenonumberlist
+ \edef\@gls@restoreat{\noexpand\catcode`\noexpand\@=\number\catcode`\@\relax}%
+ \makeatletter
+ \InputIfFileExists{\jobname.glsdefs}{}{}%
+ \@gls@restoreat
+ \undef\@gls@restoreat
+ \gls@defdocnewglossaryentry
+}
+\newcommand*{\glsdefs@newdocentry}[2]{%
+ \ifglsentryexists{#1}%
+ {\GlossariesWarning{entry `#1' has already been defined in the preamble
+ (if you have moved the definition there from the document
+ environment, delete \jobname.glsdefs)}}%
+ {%
+ \gls@glsdefs@addlabel{#1}%
+ \gls@defglossaryentry{#1}{#2}%
+ }%
+}
+\newcommand*{\@gls@writedef}[1]{%
+ \immediate\write\@gls@deffile
+ {%
+ \string\glsdefs@newdocentry{\glsdetoklabel{#1}}\glspercentchar^^J%
+ \expandafter\@gobble\string\{\glspercentchar%
+ }%
+ \@for\@gls@map:=\@gls@keymap\do
+ {%
+ \letcs\glo@value{glo@\glsdetoklabel{#1}@\expandafter\@secondoftwo\@gls@map}%
+ \ifdef\glo@value
+ {%
+ \@onelevel@sanitize\glo@value
+ \immediate\write\@gls@deffile
+ {%
+ \expandafter\@firstoftwo\@gls@map
+ =\expandafter\@gobble\string\{\glo@value\expandafter\@gobble\string\},%
+ \glspercentchar
+ }%
+ }%
+ {}%
+ }%
+ \glswritedefhook
+ \immediate\write\@gls@deffile
+ {%
+ \glspercentchar^^J%
+ \expandafter\@gobble\string\}\glspercentchar^^J%
+ }%
+}
+\newcommand*{\@gls@keymap}{%
+ {name}{name},%
+ {sort}{sortvalue},% unescaped sort value
+ {type}{type},%
+ {first}{first},%
+ {firstplural}{firstpl},%
+ {text}{text},%
+ {plural}{plural},%
+ {description}{desc},%
+ {descriptionplural}{descplural},%
+ {symbol}{symbol},%
+ {symbolplural}{symbolplural},%
+ {user1}{useri},%
+ {user2}{userii},%
+ {user3}{useriii},%
+ {user4}{useriv},%
+ {user5}{userv},%
+ {user6}{uservi},%
+ {long}{long},%
+ {longplural}{longpl},%
+ {short}{short},%
+ {shortplural}{shortpl},%
+ {counter}{counter},%
+ {parent}{parent}%
+}
+\newcommand*{\@gls@fetchfield}[2]{%
+ \edef\@gls@thisval{#2}%
+ \@for\@gls@map:=\@gls@keymap\do{%
+ \edef\@this@key{\expandafter\@firstoftwo\@gls@map}%
+ \ifdefequal{\@this@key}{\@gls@thisval}%
+ {%
+ \edef#1{\expandafter\@secondoftwo\@gls@map}%
+ \@endfortrue
+ }%
+ {}%
+ }%
+}
+\newcommand*{\glsaddstoragekey}{\@ifstar\@sglsaddstoragekey\@glsaddstoragekey}
+\newcommand*{\@sglsaddstoragekey}[1]{%
+ \key@ifundefined{glossentry}{#1}%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname gls@assign@#1@field\endcsname}[2]{%
+ \@@gls@expand@field{##1}{#1}{##2}%
+ }%
+ }%
+ {}%
+ \@glsaddstoragekey{#1}%
+}
+\newcommand*{\@glsaddstoragekey}[3]{%
+ \key@ifundefined{glossentry}{#1}%
+ {%
+ \define@key{glossentry}{#1}{\csdef{@glo@#1}{##1}}%
+ \appto\@gls@keymap{,{#1}{#1}}%
+ \appto\@newglossaryentryprehook{\csdef{@glo@#1}{#2}}%
+ \appto\@newglossaryentryposthook{%
+ \letcs{\@glo@tmp}{@glo@#1}%
+ \gls@assign@field{#2}{\@glo@label}{#1}{\@glo@tmp}%
+ }%
+ \newcommand*{#3}[1]{\@gls@entry@field{##1}{#1}}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#1' already exists}{}%
+ }%
+}
+\newcommand*{\glsaddkey}{\@ifstar\@sglsaddkey\@glsaddkey}
+\newcommand*{\@sglsaddkey}[1]{%
+ \key@ifundefined{glossentry}{#1}%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname gls@assign@#1@field\endcsname}[2]{%
+ \@@gls@expand@field{##1}{#1}{##2}%
+ }%
+ }%
+ {}%
+ \@glsaddkey{#1}%
+}
+\newcommand*{\@glsaddkey}[7]{%
+ \key@ifundefined{glossentry}{#1}%
+ {%
+ \define@key{glossentry}{#1}{\csdef{@glo@#1}{##1}}%
+ \appto\@gls@keymap{,{#1}{#1}}%
+ \appto\@newglossaryentryprehook{\csdef{@glo@#1}{#2}}%
+ \appto\@newglossaryentryposthook{%
+ \letcs{\@glo@tmp}{@glo@#1}%
+ \gls@assign@field{#2}{\@glo@label}{#1}{\@glo@tmp}%
+ }%
+ \newcommand*{#3}[1]{\@gls@entry@field{##1}{#1}}%
+ \newcommand*{#4}[1]{\@Glsentryfield{##1}{#1}}%
+ \ifcsdef{@gls@user@#1@}%
+ {%
+ \PackageError{glossaries}%
+ {Can't define `\string#5' as helper command
+ `\expandafter\string\csname @gls@user@#1@\endcsname' already exists}%
+ {}%
+ }%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname @gls@user@#1\endcsname}[2][]{%
+ \new@ifnextchar[%
+ {\csuse{@gls@user@#1@}{##1}{##2}}%
+ {\csuse{@gls@user@#1@}{##1}{##2}[]}}%
+ \csdef{@gls@user@#1@}##1##2[##3]{%
+ \@gls@field@link{##1}{##2}{#3{##2}##3}%
+ }%
+ \newrobustcmd*{#5}{%
+ \expandafter\@gls@hyp@opt\csname @gls@user@#1\endcsname}%
+ }%
+ \ifcsdef{@Gls@user@#1@}%
+ {%
+ \PackageError{glossaries}%
+ {Can't define `\string#6' as helper command
+ `\expandafter\string\csname @Gls@user@#1@\endcsname' already exists}%
+ {}%
+ }%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname @Gls@user@#1\endcsname}[2][]{%
+ \new@ifnextchar[%
+ {\csuse{@Gls@user@#1@}{##1}{##2}}%
+ {\csuse{@Gls@user@#1@}{##1}{##2}[]}}%
+ \csdef{@Gls@user@#1@}##1##2[##3]{%
+ \@gls@field@link{##1}{##2}{#4{##2}##3}%
+ }%
+ \newrobustcmd*{#6}{%
+ \expandafter\@gls@hyp@opt\csname @Gls@user@#1\endcsname}%
+ }%
+ \ifcsdef{@GLS@user@#1@}%
+ {%
+ \PackageError{glossaries}%
+ {Can't define `\string#7' as helper command
+ `\expandafter\string\csname @GLS@user@#1@\endcsname' already exists}%
+ {}%
+ }%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname @GLS@user@#1\endcsname}[2][]{%
+ \new@ifnextchar[%
+ {\csuse{@GLS@user@#1@}{##1}{##2}}%
+ {\csuse{@GLS@user@#1@}{##1}{##2}[]}}%
+ \csdef{@GLS@user@#1@}##1##2[##3]{%
+ \@gls@field@link{##1}{##2}{\glsuppercase{#3{##2}##3}}%
+ }%
+ \newrobustcmd*{#7}{%
+ \expandafter\@gls@hyp@opt\csname @GLS@user@#1\endcsname}%
+ }%
+ \glsmfuaddmap{#3}{#4}%
+ \glsmfuaddmap{#5}{#6}%
+ \glsmfublocker{#7}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#1' already exists}{}%
+ }%
+}
+\newrobustcmd{\glsfieldxdef}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \protected@csxdef{glo@\@glo@label @#2}{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newrobustcmd{\glsfieldedef}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \protected@csedef{glo@\@glo@label @#2}{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newrobustcmd{\glsfieldgdef}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \expandafter\gdef\csname glo@\@glo@label @#2\endcsname{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newrobustcmd{\glsfielddef}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \expandafter\def\csname glo@\@glo@label @#2\endcsname{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newrobustcmd{\glsfieldfetch}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \letcs#3{glo@\@glo@label @#2}%
+ }%
+ {%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newcommand*{\glsunexpandedfieldvalue}[2]{%
+ \ifcsname glo@\glsdetoklabel{#1}@#2\endcsname
+ \expandafter\expandonce\csname glo@\glsdetoklabel{#1}@#2\expandafter\endcsname
+ \fi
+}
+\newrobustcmd{\ifglsfieldeq}[5]{%
+ \glsdoifexists{#1}%
+ {%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \ifcsstring{glo@\@glo@label @#2}{#3}{#4}{#5}%
+ }%
+ {%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newrobustcmd{\ifglsfielddefeq}[5]{%
+ \glsdoifexists{#1}%
+ {%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \expandafter\ifdefstrequal\csname glo@\@glo@label @#2\endcsname{#3}{#4}{#5}%
+ }%
+ {%
+ \PackageError{glossaries}{Field `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newcommand{\ifglsfieldcseq}[5]{%
+ \glsdoifexists{#1}%
+ {%
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \ifcsstrequal{glo@\@glo@label @#2}{#3}{#4}{#5}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ }%
+ }%
+}
+\newcommand*{\glswritedefhook}{}
+\newcommand*{\gls@assign@desc}[1]{%
+ \gls@assign@field{}{#1}{desc}{\@glo@desc}%
+ \gls@assign@field{\@glo@desc}{#1}{descplural}{\@glo@descplural}%
+}
+\newcommand{\longnewglossaryentry}[3]{%
+ \glsdoifnoexists{#1}%
+ {%
+ \bgroup
+ \let\@org@newglossaryentryprehook\@newglossaryentryprehook
+ \long\def\@newglossaryentryprehook{%
+ \long\def\@glo@desc{#3\leavevmode\unskip\nopostdesc}%
+ \@org@newglossaryentryprehook
+ }%
+ \renewcommand*{\gls@assign@desc}[1]{%
+ \global\cslet{glo@\glsdetoklabel{#1}@desc}{\@glo@desc}%
+ \global\cslet{glo@\glsdetoklabel{#1}@descplural}{\@glo@desc}%
+ }
+ \gls@defglossaryentry{#1}{#2}%
+ \egroup
+ }
+}
+\@onlypreamble{\longnewglossaryentry}
+\newcommand{\longprovideglossaryentry}[3]{%
+ \ifglsentryexists{#1}{}%
+ {\longnewglossaryentry{#1}{#2}{#3}}%
+}
+\@onlypreamble{\longprovideglossaryentry}
+\newcommand{\gls@defglossaryentry}[2]{%
+ \let\GlsSetQuote\gls@nosetquote
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \let\glslabel\@glo@label
+ \let\@glo@name\@glsnoname
+ \let\@glo@desc\@glsnodesc
+ \let\@glo@descplural\@gls@default@value
+ \let\@glo@type\@gls@default@value
+ \let\@glo@symbol\@gls@default@value
+ \let\@glo@symbolplural\@gls@default@value
+ \let\@glo@text\@gls@default@value
+ \let\@glo@plural\@gls@default@value
+ \let\@glo@first\@gls@default@value
+ \let\@glo@firstplural\@gls@default@value
+ \let\@glo@sort\@gls@default@value
+ \let\@glo@counter\@gls@default@value
+ \def\@glo@see{}%
+ \def\@glo@parent{}%
+ \def\@glo@prefix{}%
+ \@gls@initnonumberlist
+ \def\@glo@useri{}%
+ \def\@glo@userii{}%
+ \def\@glo@useriii{}%
+ \def\@glo@useriv{}%
+ \def\@glo@userv{}%
+ \def\@glo@uservi{}%
+ \def\@glo@short{}%
+ \def\@glo@shortpl{}%
+ \def\@glo@long{}%
+ \def\@glo@longpl{}%
+ \@newglossaryentryprehook
+ \setkeys{glossentry}{#2}%
+ \ifundef\glsdefaulttype
+ {%
+ \PackageError{glossaries}%
+ {No default glossary type (have you used `nomain' by mistake?)}%
+ {If you use package option `nomain' you must define
+ a new glossary before you can define entries}%
+ }%
+ {}%
+ \gls@assign@field{\glsdefaulttype}{\@glo@label}{type}{\@glo@type}%
+ \protected@edef\@glo@type{\glsentrytype{\@glo@label}}%
+ \ifcsundef{glolist@\@glo@type}%
+ {%
+ \PackageError{glossaries}%
+ {Glossary type `\@glo@type' has not been defined}%
+ {You need to define a new glossary type, before making entries
+ in it}%
+ }%
+ {%
+ \ifignoredglossary\@glo@type
+ {%
+ \ifx\@glo@desc\@glsnodesc
+ \let\@glo@desc\@empty
+ \fi
+ }%
+ {%
+ }%
+ \protected@edef\@glolist@{\csname glolist@\@glo@type\endcsname}%
+ \expandafter\protected@xdef\csname glolist@\@glo@type\endcsname{%
+ \@glolist@{\@glo@label},}%
+ }%
+ \gls@level=0\relax
+ \ifx\@glo@parent\@empty
+ \expandafter\gdef\csname glo@\@glo@label @parent\endcsname{}%
+ \else
+ \ifdefequal\@glo@label\@glo@parent%
+ {%
+ \PackageError{glossaries}{Entry `\@glo@label' can't be its own parent}{}%
+ \def\@glo@parent{}%
+ \expandafter\gdef\csname glo@\@glo@label @parent\endcsname{}%
+ }%
+ {%
+ \ifglsentryexists{\@glo@parent}%
+ {%
+ \expandafter\protected@xdef\csname glo@\@glo@label @parent\endcsname{%
+ \@glo@parent}%
+ \gls@level=\csname glo@\@glo@parent @level\endcsname\relax
+ \advance\gls@level by 1\relax
+ \ifx\@glo@name\@glsnoname
+ \expandafter\let\expandafter\@glo@name
+ \csname glo@\@glo@parent @name\endcsname
+ \ifx\@glo@plural\@gls@default@value
+ \expandafter\let\expandafter\@glo@plural
+ \csname glo@\@glo@parent @plural\endcsname
+ \fi
+ \fi
+ }%
+ {%
+ \PackageError{glossaries}%
+ {%
+ Invalid parent `\@glo@parent'
+ for entry `\@glo@label' - parent doesn't exist%
+ }%
+ {%
+ Parent entries must be defined before their children%
+ }%
+ \def\@glo@parent{}%
+ \expandafter\gdef\csname glo@\@glo@label @parent\endcsname{}%
+ }%
+ }%
+ \fi
+ \expandafter\xdef\csname glo@\@glo@label @level\endcsname{\number\gls@level}%
+ \gls@assign@field{\@glo@name}{\@glo@label}{sortvalue}{\@glo@sort}%
+ \letcs\@glo@sort{glo@\@glo@label @sortvalue}%
+ \gls@assign@field{\@glo@name}{\@glo@label}{text}{\@glo@text}%
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @text\endcsname\glspluralsuffix}%
+ {\@glo@label}{plural}{\@glo@plural}%
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @text\endcsname}%
+ {\@glo@label}{first}{\@glo@first}%
+ \ifx\@glo@first\@gls@default@value
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @plural\endcsname}%
+ {\@glo@label}{firstpl}{\@glo@firstplural}%
+ \else
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @first\endcsname\glspluralsuffix}%
+ {\@glo@label}{firstpl}{\@glo@firstplural}%
+ \fi
+ \ifcsundef{@glotype@\@glo@type @counter}%
+ {%
+ \def\@glo@defaultcounter{\glscounter}%
+ }%
+ {%
+ \letcs\@glo@defaultcounter{@glotype@\@glo@type @counter}%
+ }%
+ \gls@assign@field{\@glo@defaultcounter}{\@glo@label}{counter}{\@glo@counter}%
+ \gls@assign@field{}{\@glo@label}{useri}{\@glo@useri}%
+ \gls@assign@field{}{\@glo@label}{userii}{\@glo@userii}%
+ \gls@assign@field{}{\@glo@label}{useriii}{\@glo@useriii}%
+ \gls@assign@field{}{\@glo@label}{useriv}{\@glo@useriv}%
+ \gls@assign@field{}{\@glo@label}{userv}{\@glo@userv}%
+ \gls@assign@field{}{\@glo@label}{uservi}{\@glo@uservi}%
+ \gls@assign@field{}{\@glo@label}{short}{\@glo@short}%
+ \gls@assign@field{}{\@glo@label}{shortpl}{\@glo@shortpl}%
+ \gls@assign@field{}{\@glo@label}{long}{\@glo@long}%
+ \gls@assign@field{}{\@glo@label}{longpl}{\@glo@longpl}%
+ \ifx\@glo@name\@glsnoname
+ \@glsnoname
+ \let\@gloname\@gls@default@value
+ \fi
+ \gls@assign@field{}{\@glo@label}{name}{\@glo@name}%
+ \ifcsundef{glo@\@glo@label @numberlist}%
+ {%
+ \csxdef{glo@\@glo@label @numberlist}{%
+ \noexpand\@gls@missingnumberlist{\@glo@label}}%
+ }%
+ {}%
+ \@gls@storenonumberlist{\@glo@label}%
+ \def\@glo@@desc{\@glo@first}%
+ \ifx\@glo@desc\@glo@@desc
+ \let\@glo@desc\@glo@first
+ \fi
+ \ifx\@glo@desc\@glsnodesc
+ \@glsnodesc
+ \let\@glodesc\@gls@default@value
+ \fi
+ \gls@assign@desc{\@glo@label}%
+ \@gls@defsort{\@glo@type}{\@glo@label}%
+ \def\@glo@@symbol{\@glo@text}%
+ \ifx\@glo@symbol\@glo@@symbol
+ \let\@glo@symbol\@glo@text
+ \fi
+ \gls@assign@field{\relax}{\@glo@label}{symbol}{\@glo@symbol}%
+ \expandafter
+ \gls@assign@field\expandafter
+ {\csname glo@\@glo@label @symbol\endcsname}
+ {\@glo@label}{symbolplural}{\@glo@symbolplural}%
+ \expandafter\protected@xdef\csname glo@\@glo@label @flagfalse\endcsname{%
+ \noexpand\global
+ \noexpand\let\expandafter\noexpand
+ \csname ifglo@\@glo@label @flag\endcsname\noexpand\iffalse
+ }%
+ \expandafter\protected@xdef\csname glo@\@glo@label @flagtrue\endcsname{%
+ \noexpand\global
+ \noexpand\let\expandafter\noexpand
+ \csname ifglo@\@glo@label @flag\endcsname\noexpand\iftrue
+ }%
+ \csname glo@\@glo@label @flagfalse\endcsname
+ \@glo@autosee
+ \ifignoredglossary\@glo@type
+ {%
+ \csdef{glo@\@glo@label @index}{}%
+ }
+ {%
+ \do@glo@storeentry{\@glo@label}%
+ }%
+ \@newglossaryentry@defcounters
+ \@newglossaryentryposthook
+}
+\newcommand*{\@glo@autosee}{%
+ \ifdefvoid\@glo@see{}%
+ {%
+ \protected@edef\@do@glssee{%
+ \noexpand\@gls@fixbraces\noexpand\@glo@list\@glo@see\noexpand\@nil
+ \noexpand\expandafter\noexpand\@glssee\noexpand\@glo@list{\@glo@label}}%
+ \@do@glssee
+ }%
+ \@glo@autoseehook
+}%
+\newcommand*{\@glo@autoseehook}{}
+\newcommand*{\@newglossaryentryprehook}{}
+\newcommand*{\@newglossaryentryposthook}{}
+\newcommand*{\@newglossaryentry@defcounters}{}
+\newcommand*{\glsmoveentry}[2]{%
+ \protected@edef\@glo@thislabel{\glsdetoklabel{#1}}%
+ \protected@edef\glo@type{\csname glo@\@glo@thislabel @type\endcsname}%
+ \def\glo@list{,}%
+ \forglsentries[\glo@type]{\glo@label}%
+ {%
+ \ifdefequal\@glo@thislabel\glo@label
+ {}{\protected@eappto\glo@list{\glo@label,}}%
+ }%
+ \cslet{glolist@\glo@type}{\glo@list}%
+ \csdef{glo@\@glo@thislabel @type}{#2}%
+}
+\ifglsxindy
+ \newcommand*{\@glossaryentryfield}{\string\\glossentry}
+\else
+ \newcommand*{\@glossaryentryfield}{\string\glossentry}
+\fi
+\ifglsxindy
+ \newcommand*{\@glossarysubentryfield}{%
+ \string\\subglossentry}
+\else
+ \newcommand*{\@glossarysubentryfield}{%
+ \string\subglossentry}
+\fi
+\newcommand{\@glo@storeentry}[1]{%
+ \protected@edef\@glo@esclabel{#1}%
+ \@gls@checkmkidxchars\@glo@esclabel
+ \protected@edef\@glo@sort{\csname glo@#1@sort\endcsname}%
+ \@gls@checkmkidxchars\@glo@sort
+ \@gls@checkmkidxchars\@glo@prefix
+ \protected@edef\@glo@parent{\csname glo@#1@parent\endcsname}%
+ \ifglsxindy
+ \ifx\@glo@parent\@empty
+ \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
+ (\string"\@glo@sort\string" %
+ \string"\@glo@prefix\@glossaryentryfield{\@glo@esclabel}\string") %
+ }%
+ \else
+ \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
+ \csname glo@\@glo@parent @index\endcsname
+ (\string"\@glo@sort\string" %
+ \string"\@glo@prefix\@glossarysubentryfield
+ {\csname glo@#1@level\endcsname}{\@glo@esclabel}\string") %
+ }%
+ \fi
+ \else
+ \ifx\@glo@parent\@empty
+ \@onelevel@sanitize\@glo@prefix
+ \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
+ \@glo@sort\@gls@actualchar\@glo@prefix
+ \@glossaryentryfield{\@glo@esclabel}%
+ }%
+ \else
+ \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
+ \csname glo@\@glo@parent @index\endcsname\@gls@levelchar
+ \@glo@sort\@gls@actualchar\@glo@prefix
+ \@glossarysubentryfield
+ {\csname glo@#1@level\endcsname}{\@glo@esclabel}%
+ }%
+ \fi
+ \fi
+}
+\newcommand*{\@gls@if@measuring}[2]{%
+ \ifmeasuring@
+ #1%
+ \else
+ #2%
+ \fi
+}
+\let\gls@org@refstepcounter\refstepcounter
+\let\gls@org@label\label
+\newcommand{\gls@if@measuring}[2]{#2}
+\AtBeginDocument{%
+ \@ifpackageloaded{amsmath}%
+ {\let\gls@if@measuring\@gls@if@measuring}%
+ {}%
+ \let\gls@org@refstepcounter\refstepcounter
+ \let\gls@org@label\label
+}
+\newcommand*\gls@ifnotmeasuring[1]{\glsifmeasuring{}{#1}}
+\newcommand*{\glsifmeasuring}{\gls@if@measuring}
+\newcommand*{\gls@local@stepcounter}[1]{%
+ \ifcsdef{c@#1}%
+ {%
+ \epreto\gls@measuring@reset{\noexpand\setcounter{#1}{\number\value{#1}}}%
+ \expandafter\advance\csname c@#1\endcsname by \@ne
+ }%
+ {}%
+}
+\newcommand{\gls@start@measuring}{%
+ \ifx\glsifmeasuring\@firstoftwo
+ \else
+ \let\gls@org@target\glstarget
+ \let\gls@org@link\@glslink
+ \def\gls@measuring@reset{}%
+ \fi
+ \let\glsifmeasuring\@firstoftwo
+ \let\refstepcounter\gls@local@stepcounter
+ \let\label\@gobble
+ \let\glstarget\@secondoftwo
+ \let\@glslink\@secondoftwo
+}
+\ExplSyntaxOn
+ \tl_if_exist:NT \l_datatool_measure_hook_tl
+ {
+ \tl_put_right:Nn \l_datatool_measure_hook_tl
+ { \gls@start@measuring }
+ }
+\ExplSyntaxOff
+\newcommand{\gls@stop@measuring}{%
+ \renewcommand*{\glsifmeasuring}{\gls@if@measuring}%
+ \let\refstepcounter\gls@org@refstepcounter
+ \let\label\gls@org@label
+ \let\glstarget\gls@org@target
+ \let\@glslink\gls@org@link
+ \gls@measuring@reset
+ \def\gls@measuring@reset{}%
+}
+\newcommand{\glsmeasureheight}[2]{%
+ \settoheight{#1}{\gls@start@measuring#2\gls@stop@measuring}%
+}
+\newcommand{\glsmeasuredepth}[2]{%
+ \settodepth{#1}{\gls@start@measuring#2\gls@stop@measuring}%
+}
+\newcommand{\glsmeasurewidth}[2]{%
+ \settowidth{#1}{\gls@start@measuring#2\gls@stop@measuring}%
+}
+\def\@gls@patchtabularx#1\hbox#2#3!!{%
+ \def\TX@trial##1{#1\hbox{\gls@start@measuring#2\gls@stop@measuring}#3}%
+}
+\newcommand*\glspatchtabularx{%
+ \ifdef\TX@trial
+ {%
+ \expandafter\@gls@patchtabularx\TX@trial{##1}!!%
+ \let\glspatchtabularx\relax
+ }%
+ {}%
+}
+\newcommand*{\glsreset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \@glsreset{#1}%
+ }%
+ }%
+}
+\newcommand*{\glslocalreset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \@glslocalreset{#1}%
+ }%
+ }%
+}
+\newcommand*{\glsunset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \@glsunset{#1}%
+ }%
+ }%
+}
+\newcommand*{\glslocalunset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \@glslocalunset{#1}%
+ }%
+ }%
+}
+\newcommand*{\@glslocalunset}{\@@glslocalunset}
+\newcommand*{\@@glslocalunset}[1]{%
+ \expandafter\let\csname ifglo@\glsdetoklabel{#1}@flag\endcsname\iftrue
+}
+\newcommand*{\@glsunset}{\@@glsunset}
+\newcommand*{\@@glsunset}[1]{%
+ \expandafter\global\csname glo@\glsdetoklabel{#1}@flagtrue\endcsname
+}
+\newcommand*{\@glslocalreset}{\@@glslocalreset}
+\newcommand*{\@@glslocalreset}[1]{%
+ \expandafter\let\csname ifglo@\glsdetoklabel{#1}@flag\endcsname\iffalse
+}
+\newcommand*{\@glsreset}{\@@glsreset}
+\newcommand*{\@@glsreset}[1]{%
+ \expandafter\global\csname glo@\glsdetoklabel{#1}@flagfalse\endcsname
+}
+\newcommand*{\glsresetall}[1][\@glo@types]{%
+ \forallglsentries[#1]{\@glsentry}%
+ {%
+ \glsreset{\@glsentry}%
+ }%
+}
+\newcommand*{\glslocalresetall}[1][\@glo@types]{%
+ \forallglsentries[#1]{\@glsentry}%
+ {%
+ \glslocalreset{\@glsentry}%
+ }%
+}
+\newcommand*{\glsunsetall}[1][\@glo@types]{%
+ \forallglsentries[#1]{\@glsentry}%
+ {%
+ \glsunset{\@glsentry}%
+ }%
+}
+\newcommand*{\glslocalunsetall}[1][\@glo@types]{%
+ \forallglsentries[#1]{\@glsentry}%
+ {%
+ \glslocalunset{\@glsentry}%
+ }%
+}
+\newcommand*{\@@newglossaryentry@defcounters}{%
+ \csdef{glo@\@glo@label @currcount}{0}%
+ \csdef{glo@\@glo@label @prevcount}{0}%
+}
+\newif\ifglsresetcurrcount
+\glsresetcurrcountfalse
+\newcommand*{\glsenableentrycount}{%
+ \let\@newglossaryentry@defcounters\@@newglossaryentry@defcounters
+ \renewcommand*{\gls@defdocnewglossaryentry}{%
+ \renewcommand*\newglossaryentry[2]{%
+ \PackageError{glossaries}{\string\newglossaryentry\space
+ may only be used in the preamble when entry counting has
+ been activated}{If you use \string\glsenableentrycount\space
+ you must place all entry definitions in the preamble not in
+ the document environment}%
+ }%
+ }%
+ \newcommand*{\glsentrycurrcount}[1]{%
+ \ifcsundef{glo@\glsdetoklabel{##1}@currcount}%
+ {0}{\@gls@entry@field{##1}{currcount}}%
+ }%
+ \newcommand*{\glsentryprevcount}[1]{%
+ \ifcsundef{glo@\glsdetoklabel{##1}@prevcount}%
+ {0}{\@gls@entry@field{##1}{prevcount}}%
+ }%
+ \renewcommand*{\@glsunset}[1]{%
+ \@@glsunset{##1}%
+ \@gls@increment@currcount{##1}%
+ }%
+ \renewcommand*{\@glslocalunset}[1]{%
+ \@@glslocalunset{##1}%
+ \@gls@local@increment@currcount{##1}%
+ }%
+ \renewcommand*{\@glsreset}[1]{%
+ \@@glsreset{##1}%
+ \ifglsresetcurrcount\csgdef{glo@\glsdetoklabel{##1}@currcount}{0}\fi
+ }%
+ \renewcommand*{\@glslocalreset}[1]{%
+ \@@glslocalreset{##1}%
+ \ifglsresetcurrcount\csdef{glo@\glsdetoklabel{##1}@currcount}{0}\fi
+ }%
+ \def\@cgls@##1##2[##3]{%
+ \ifnum\glsentryprevcount{##2}=1\relax
+ \cglsformat{##2}{##3}%
+ \glsunset{##2}%
+ \else
+ \@gls@{##1}{##2}[##3]%
+ \fi
+ }%
+ \def\@cglspl@##1##2[##3]{%
+ \ifnum\glsentryprevcount{##2}=1\relax
+ \cglsplformat{##2}{##3}%
+ \glsunset{##2}%
+ \else
+ \@glspl@{##1}{##2}[##3]%
+ \fi
+ }%
+ \def\@cGls@##1##2[##3]{%
+ \ifnum\glsentryprevcount{##2}=1\relax
+ \cGlsformat{##2}{##3}%
+ \glsunset{##2}%
+ \else
+ \@Gls@{##1}{##2}[##3]%
+ \fi
+ }%
+ \def\@cGlspl@##1##2[##3]{%
+ \ifnum\glsentryprevcount{##2}=1\relax
+ \cGlsplformat{##2}{##3}%
+ \glsunset{##2}%
+ \else
+ \@Glspl@{##1}{##2}[##3]%
+ \fi
+ }%
+ \AtEndDocument{\@gls@write@entrycounts}%
+ \renewcommand*{\@gls@entry@count}[2]{%
+ \csgdef{glo@\glsdetoklabel{##1}@prevcount}{##2}%
+ }%
+ \let\glsenableentrycount\relax
+}
+\@onlypreamble\glsenableentrycount
+\newcommand*{\@gls@increment@currcount}[1]{%
+ \csxdef{glo@\glsdetoklabel{#1}@currcount}{%
+ \number\numexpr\glsentrycurrcount{#1}+1}%
+}
+\newcommand*{\@gls@local@increment@currcount}[1]{%
+ \csedef{glo@\glsdetoklabel{#1}@currcount}{%
+ \number\numexpr\glsentrycurrcount{#1}+1}%
+}
+\newcommand*{\@gls@write@entrycounts}{%
+ \immediate\write\@auxout
+ {\string\providecommand*{\string\@gls@entry@count}[2]{}}%
+ \forallglsentries{\@glsentry}{%
+ \ifglsused{\@glsentry}%
+ {\immediate\write\@auxout
+ {\string\@gls@entry@count{\@glsentry}{\glsentrycurrcount{\@glsentry}}}}%
+ {}%
+ }%
+}
+\newcommand*{\@gls@entry@count}[2]{}
+\newrobustcmd*{\cgls}{\@gls@hyp@opt\@cgls}
+\newcommand*{\@cgls}[2][]{%
+ \new@ifnextchar[{\@cgls@{#1}{#2}}{\@cgls@{#1}{#2}[]}%
+}
+\def\@cgls@#1#2[#3]{%
+ \GlossariesWarning{\string\cgls\space is defaulting to
+ \string\gls\space since you haven't enabled entry counting}%
+ \@gls@{#1}{#2}[#3]%
+}
+\newcommand*{\cglsformat}[2]{%
+ \ifglshaslong{#1}{\glsentrylong{#1}}{\glsentryfirst{#1}}#2%
+}
+\newrobustcmd*{\cGls}{\@gls@hyp@opt\@cGls}
+\glsmfuaddmap{\cgls}{\cGls}
+\newcommand*{\@cGls}[2][]{%
+ \new@ifnextchar[{\@cGls@{#1}{#2}}{\@cGls@{#1}{#2}[]}%
+}
+\def\@cGls@#1#2[#3]{%
+ \GlossariesWarning{\string\cGls\space is defaulting to
+ \string\Gls\space since you haven't enabled entry counting}%
+ \@Gls@{#1}{#2}[#3]%
+}
+\newcommand*{\cGlsformat}[2]{%
+ \ifglshaslong{#1}{\Glsentrylong{#1}}{\Glsentryfirst{#1}}#2%
+}
+\newrobustcmd*{\cglspl}{\@gls@hyp@opt\@cglspl}
+\newcommand*{\@cglspl}[2][]{%
+ \new@ifnextchar[{\@cglspl@{#1}{#2}}{\@cglspl@{#1}{#2}[]}%
+}
+\def\@cglspl@#1#2[#3]{%
+ \GlossariesWarning{\string\cglspl\space is defaulting to
+ \string\glspl\space since you haven't enabled entry counting}%
+ \@glspl@{#1}{#2}[#3]%
+}
+\newcommand*{\cglsplformat}[2]{%
+ \ifglshaslong{#1}{\glsentrylongpl{#1}}{\glsentryfirstplural{#1}}#2%
+}
+\newrobustcmd*{\cGlspl}{\@gls@hyp@opt\@cGlspl}
+\glsmfuaddmap{\cglspl}{\cGlspl}
+\newcommand*{\@cGlspl}[2][]{%
+ \new@ifnextchar[{\@cGlspl@{#1}{#2}}{\@cGlspl@{#1}{#2}[]}%
+}
+\def\@cGlspl@#1#2[#3]{%
+ \GlossariesWarning{\string\cGlspl\space is defaulting to
+ \string\Glspl\space since you haven't enabled entry counting}%
+ \@Glspl@{#1}{#2}[#3]%
+}
+\newcommand*{\cGlsplformat}[2]{%
+ \ifglshaslong{#1}{\Glsentrylongpl{#1}}{\Glsentryfirstplural{#1}}#2%
+}
+\newcommand*{\loadglsentries}[2][\@gls@default]{%
+ \let\@gls@default\glsdefaulttype
+ \def\glsdefaulttype{#1}\input{#2}%
+ \let\glsdefaulttype\@gls@default
+}
+\@onlypreamble{\loadglsentries}
+\newcommand*{\glstextformat}[1]{#1}
+\newcommand*{\glsentryfmt}{\glsgenentryfmt}
+\newcommand*{\glsgenentryfmt}{%
+ \ifdefempty\glscustomtext
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \ifglsused\glslabel
+ {%
+ \glsentryplural{\glslabel}\glsinsert
+ }%
+ {%
+ \glsentryfirstplural{\glslabel}\glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \Glsentryplural{\glslabel}\glsinsert
+ }%
+ {%
+ \Glsentryfirstplural{\glslabel}\glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \glsuppercase{\glsentryplural{\glslabel}\glsinsert}%
+ }%
+ {%
+ \glsuppercase{\glsentryfirstplural{\glslabel}\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \ifglsused\glslabel
+ {%
+ \glsentrytext{\glslabel}\glsinsert
+ }%
+ {%
+ \glsentryfirst{\glslabel}\glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \Glsentrytext{\glslabel}\glsinsert
+ }%
+ {%
+ \Glsentryfirst{\glslabel}\glsinsert
+ }%
+ }%
+ {%
+ \ifglsused\glslabel
+ {%
+ \glsuppercase{\glsentrytext{\glslabel}\glsinsert}%
+ }%
+ {%
+ \glsuppercase{\glsentryfirst{\glslabel}\glsinsert}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \glscustomtext\glsinsert
+ }%
+}
+\newcommand*{\glsgenacfmt}{%
+ \ifdefempty\glscustomtext
+ {%
+ \ifglsused\glslabel
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \acronymfont{\glsentryshortpl{\glslabel}}\glsinsert
+ }%
+ {%
+ \acronymfont{\Glsentryshortpl{\glslabel}}\glsinsert
+ }%
+ {%
+ \glsuppercase
+ {\acronymfont{\glsentryshortpl{\glslabel}}\glsinsert}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \acronymfont{\glsentryshort{\glslabel}}\glsinsert
+ }%
+ {%
+ \acronymfont{\Glsentryshort{\glslabel}}\glsinsert
+ }%
+ {%
+ \glsuppercase
+ {\acronymfont{\glsentryshort{\glslabel}}\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \genplacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \Genplacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \glsuppercase
+ {\genplacrfullformat{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \genacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \Genacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+ \glsuppercase
+ {\genacrfullformat{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \glscustomtext
+ }%
+}
+\newcommand*{\genacrfullformat}[2]{%
+ \glsentrylong{#1}#2\space
+ (\protect\firstacronymfont{\glsentryshort{#1}})%
+}
+\newcommand*{\Genacrfullformat}[2]{%
+ \protected@edef\gls@text{\genacrfullformat{#1}{#2}}%
+ \expandafter\glssentencecase\expandafter{\gls@text}%
+}
+\newcommand*{\genplacrfullformat}[2]{%
+ \glsentrylongpl{#1}#2\space
+ (\protect\firstacronymfont{\glsentryshortpl{#1}})%
+}
+\newcommand*{\Genplacrfullformat}[2]{%
+ \protected@edef\gls@text{\genplacrfullformat{#1}{#2}}%
+ \expandafter\glssentencecase\expandafter{\gls@text}%
+}
+\define@key{glslink}{counter}{%
+ \ifcsundef{c@#1}%
+ {%
+ \PackageError{glossaries}%
+ {There is no counter called `#1'}%
+ {%
+ The counter key should have the name of a valid counter
+ as its value%
+ }%
+ }%
+ {%
+ \def\@gls@counter{#1}%
+ }%
+}
+\define@key{glslink}{format}{%
+ \def\@glsnumberformat{#1}}
+\newcommand*{\@gls@glslink@hyper@update@hook}{}
+\define@boolkey{glslink}{hyper}[true]{\@gls@glslink@hyper@update@hook}
+\ifdef{\hyperlink}{\KV@glslink@hypertrue}{\KV@glslink@hyperfalse}
+\newcommand*{\@gls@save@glslocal}{%
+ \let\if@org@KV@glslink@local\ifKV@glslink@local
+}
+\newcommand*{\@gls@restore@glslocal}{%
+ \ifKV@glslink@local
+ \let\@gls@do@glsunset\glslocalunset
+ \else
+ \let\@gls@do@glsunset\glsunset
+ \fi
+ \let\ifKV@glslink@local\if@org@KV@glslink@local
+}
+\newcommand*{\@gls@do@glsunset}[1]{\glsunset{#1}}
+\define@boolkey{glslink}{local}[true]{}
+\@gls@save@glslocal
+\newcommand*{\glslinkvar}[3]{#1}
+\newcommand*{\@gls@hyp@opt}[1]{%
+ \let\glslinkvar\@firstofthree
+ \let\@gls@hyp@opt@cs#1\relax
+ \@ifstar{\s@gls@hyp@opt}%
+ {\@ifnextchar+{\@firstoftwo{\p@gls@hyp@opt}}{#1}}%
+}
+\newcommand*{\s@gls@hyp@opt}[1][]{%
+ \let\glslinkvar\@secondofthree
+ \@gls@hyp@opt@cs[hyper=false,#1]}
+\newcommand*{\p@gls@hyp@opt}[1][]{%
+ \let\glslinkvar\@thirdofthree
+ \@gls@hyp@opt@cs[hyper=true,#1]}
+\newrobustcmd*{\glslink}{%
+ \@gls@hyp@opt\@gls@@link
+}
+\newcommand*{\@gls@@link}[3][]{%
+ \glsdoifexistsordo{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \@gls@link[#1]{#2}{#3}%
+ }{%
+ \glstextformat{#3}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Glslink}{%
+ \@gls@hyp@opt\@Gls@@link
+}
+\newcommand*{\@Gls@@link}[3][]{%
+ \@gls@@link[#1]{#2}{\glssentencecase{#3}}%
+}
+\glsmfuaddmap{\glslink}{\Glslink}
+\newcommand*{\glspostlinkhook}{}
+\newcommand*{\@gls@link@checkfirsthyper}{%
+ \ifglsused{\glslabel}%
+ {%
+ }%
+ {%
+ \gls@checkisacronymlist\glstype
+ \ifglshyperfirst
+ \if@glsisacronymlist
+ \ifglsacrfootnote
+ \KV@glslink@hyperfalse
+ \fi
+ \fi
+ \else
+ \KV@glslink@hyperfalse
+ \fi
+ }%
+ \glslinkcheckfirsthyperhook
+}
+\newcommand*{\glslinkcheckfirsthyperhook}{}
+\newcommand*{\glslinkpostsetkeys}{}
+\newcommand{\glsifhyperon}[2]{\ifKV@glslink@hyper#1\else#2\fi}
+\newcommand*{\do@glsdisablehyperinlist}{%
+ \expandafter\DTLifinlist\expandafter{\glstype}{\@gls@nohyperlist}%
+ {\KV@glslink@hyperfalse}{}%
+}
+\newcommand*{\@gls@setdefault@glslink@opts}{}
+\def\@gls@link[#1]#2#3{%
+ \leavevmode
+ \protected@edef\glslabel{\glsdetoklabel{#2}}%
+ \def\@gls@link@opts{#1}%
+ \let\@gls@link@label\glslabel
+ \def\@glsnumberformat{glsnumberformat}%
+ \protected@edef\@gls@counter{\csname glo@\glslabel @counter\endcsname}%
+ \protected@edef\glstype{\csname glo@\glslabel @type\endcsname}%
+ \let\org@ifKV@glslink@hyper\ifKV@glslink@hyper
+ \@gls@save@glslocal
+ \@gls@setdefault@glslink@opts
+ \do@glsdisablehyperinlist
+ \do@gls@link@checkfirsthyper
+ \setkeys{glslink}{#1}%
+ \glslinkpostsetkeys
+ \@gls@saveentrycounter
+ \@gls@setsort{\glslabel}%
+ \glsencapwrcontent{\@do@wrglossary{#2}}%
+ \ifKV@glslink@hyper
+ \@glslink{\glolinkprefix\glslabel}{\glstextformat{#3}}%
+ \else
+ \glsdonohyperlink{\glolinkprefix\glslabel}{\glstextformat{#3}}%
+ \fi
+ \let\ifKV@glslink@hyper\org@ifKV@glslink@hyper
+ \@gls@restore@glslocal
+}
+\newcommand*{\glsencapwrcontent}[1]{{#1}}
+\newcommand*{\glolinkprefix}{glo:}
+\def\glsentrycounter{\glscounter}%
+\newcommand*{\@gls@saveentrycounter}{%
+ \def\@gls@Hcounter{}%
+ \ifthenelse{\equal{\@gls@counter}{equation}}%
+ {
+ \ifcsundef{xatlevel@}%
+ {%
+ \edef\theglsentrycounter{\expandafter\noexpand
+ \csname the\@gls@counter\endcsname}%
+ }%
+ {%
+ \ifx\xatlevel@\@empty
+ \edef\theglsentrycounter{\expandafter\noexpand
+ \csname the\@gls@counter\endcsname}%
+ \else
+ \savecounters@
+ \advance\c@equation by 1\relax
+ \edef\theglsentrycounter{\csname the\@gls@counter\endcsname}%
+ \ifcsundef{theH\@gls@counter}%
+ {%
+ \def\@gls@Hcounter{\theglsentrycounter}%
+ }%
+ {%
+ \def\@gls@Hcounter{\csname theH\@gls@counter\endcsname}%
+ }%
+ \protected@edef\theHglsentrycounter{\@gls@Hcounter}%
+ \restorecounters@
+ \fi
+ }%
+ }%
+ {%
+ \edef\theglsentrycounter{\expandafter\noexpand
+ \csname the\@gls@counter\endcsname}%
+ }%
+ \ifx\@gls@Hcounter\@empty
+ \ifcsundef{theH\@gls@counter}%
+ {%
+ \def\theHglsentrycounter{\theglsentrycounter}%
+ }%
+ {%
+ \protected@edef\theHglsentrycounter{\expandafter\noexpand
+ \csname theH\@gls@counter\endcsname}%
+ }%
+ \fi
+}
+\def\@set@glo@numformat#1#2#3#4{%
+ \expandafter\@glo@check@mkidxrangechar#3\@nil
+ \protected@edef#1{%
+ \@glo@prefix setentrycounter[#4]{#2}%
+ \expandafter\string\csname\@glo@suffix\endcsname
+ }%
+ \@gls@checkmkidxchars#1%
+}
+\def\@glo@check@mkidxrangechar#1#2\@nil{%
+\if#1(\relax
+ \def\@glo@prefix{(}%
+ \if\relax#2\relax
+ \def\@glo@suffix{glsnumberformat}%
+ \else
+ \def\@glo@suffix{#2}%
+ \fi
+\else
+ \if#1)\relax
+ \def\@glo@prefix{)}%
+ \if\relax#2\relax
+ \def\@glo@suffix{glsnumberformat}%
+ \else
+ \def\@glo@suffix{#2}%
+ \fi
+ \else
+ \def\@glo@prefix{}\def\@glo@suffix{#1#2}%
+ \fi
+\fi}
+\newcommand*{\@gls@escbsdq}[1]{%
+ \def\@gls@checkedmkidx{}%
+ \let\gls@xdystring=#1\relax
+ \@onelevel@sanitize\gls@xdystring
+ \edef\do@gls@xdycheckbackslash{%
+ \noexpand\@gls@xdycheckbackslash\gls@xdystring\noexpand\@nil
+ \@backslashchar\@backslashchar\noexpand\null}%
+ \do@gls@xdycheckbackslash
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{\gls@xdystring}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@xdycheckquote\gls@xdystring\@nil""\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{\gls@xdystring}%
+ \ifglsesclocations
+ \@for\@gls@tmp:=\gls@protected@pagefmts\do
+ {%
+ \edef\@gls@sanitized@tmp{\expandafter\@gobble\string\\\expandonce\@gls@tmp}%
+ \@onelevel@sanitize\@gls@sanitized@tmp
+ \edef\gls@dosubst{%
+ \noexpand\DTLsubstituteall\noexpand\gls@xdystring
+ {\@gls@sanitized@tmp}{\expandonce\@gls@tmp}%
+ }%
+ \gls@dosubst
+ }%
+ \fi
+ \let#1=\gls@xdystring
+}
+\newcommand{\@gls@checkmkidxchars}[1]{%
+ \ifglsxindy
+ \@gls@escbsdq{#1}%
+ \else
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkquote#1\@nil""\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkescquote#1\@nil\"\"\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkescactual#1\@nil\?\?\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkactual#1\@nil??\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkbar#1\@nil||\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkescbar#1\@nil\|\|\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checklevel#1\@nil!!\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkesclevel#1\@nil\!\!\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \edef\@do@gls@checkesc{%
+ \noexpand\@gls@checkesc\expandonce{#1}\noexpand\@nil
+ \@backslashchar\@backslashchar\noexpand\null
+ }%
+ \@do@gls@checkesc
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \fi
+}
+\def\@gls@updatechecked#1\@nil#2{\def#2{#1}}
+\newtoks\@gls@tmpb
+\def\@gls@checkquote#1"#2"#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkquote{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@quotechar\@gls@quotechar\@gls@quotechar}%
+ \def\@@gls@checkquote{\@gls@checkquote#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@quotechar}%
+ \ifx\null#3\null
+ \def\@@gls@checkquote{\@gls@checkquote#2""\null}%
+ \else
+ \def\@@gls@checkquote{\@gls@checkquote#2"#3\null}%
+ \fi
+ \fi
+ \@@gls@checkquote
+}
+\def\@gls@checkescquote#1\"#2\"#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkescquote{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@quotechar
+ \@gls@quotechar\string\"\@gls@quotechar}%
+ \def\@@gls@checkescquote{\@gls@checkescquote#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@quotechar}%
+ \ifx\null#3\null
+ \def\@@gls@checkescquote{\@gls@checkescquote#2\"\"\null}%
+ \else
+ \def\@@gls@checkescquote{\@gls@checkescquote#2\"#3\null}%
+ \fi
+ \fi
+\@@gls@checkescquote
+}
+\def\@gls@checkescactual#1\?#2\?#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkescactual{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@actualchar
+ \@gls@quotechar\string\"\@gls@actualchar}%
+ \def\@@gls@checkescactual{\@gls@checkescactual#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@actualchar}%
+ \ifx\null#3\null
+ \def\@@gls@checkescactual{\@gls@checkescactual#2\?\?\null}%
+ \else
+ \def\@@gls@checkescactual{\@gls@checkescactual#2\?#3\null}%
+ \fi
+ \fi
+\@@gls@checkescactual
+}
+\def\@gls@checkescbar#1\|#2\|#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkescbar{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@encapchar
+ \@gls@quotechar\string\"\@gls@encapchar}%
+ \def\@@gls@checkescbar{\@gls@checkescbar#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@encapchar}%
+ \ifx\null#3\null
+ \def\@@gls@checkescbar{\@gls@checkescbar#2\|\|\null}%
+ \else
+ \def\@@gls@checkescbar{\@gls@checkescbar#2\|#3\null}%
+ \fi
+ \fi
+\@@gls@checkescbar
+}
+\def\@gls@checkesclevel#1\!#2\!#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkesclevel{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@levelchar
+ \@gls@quotechar\string\"\@gls@levelchar}%
+ \def\@@gls@checkesclevel{\@gls@checkesclevel#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@levelchar}%
+ \ifx\null#3\null
+ \def\@@gls@checkesclevel{\@gls@checkesclevel#2\!\!\null}%
+ \else
+ \def\@@gls@checkesclevel{\@gls@checkesclevel#2\!#3\null}%
+ \fi
+ \fi
+\@@gls@checkesclevel
+}
+\def\@gls@checkbar#1|#2|#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkbar{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@encapchar\@gls@quotechar\@gls@encapchar}%
+ \def\@@gls@checkbar{\@gls@checkbar#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@encapchar}%
+ \ifx\null#3\null
+ \def\@@gls@checkbar{\@gls@checkbar#2||\null}%
+ \else
+ \def\@@gls@checkbar{\@gls@checkbar#2|#3\null}%
+ \fi
+ \fi
+ \@@gls@checkbar
+}
+\def\@gls@checklevel#1!#2!#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checklevel{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@levelchar\@gls@quotechar\@gls@levelchar}%
+ \def\@@gls@checklevel{\@gls@checklevel#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@levelchar}%
+ \ifx\null#3\null
+ \def\@@gls@checklevel{\@gls@checklevel#2!!\null}%
+ \else
+ \def\@@gls@checklevel{\@gls@checklevel#2!#3\null}%
+ \fi
+ \fi
+ \@@gls@checklevel
+}
+\def\@gls@checkactual#1?#2?#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkactual{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@actualchar\@gls@quotechar\@gls@actualchar}%
+ \def\@@gls@checkactual{\@gls@checkactual#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@actualchar}%
+ \ifx\null#3\null
+ \def\@@gls@checkactual{\@gls@checkactual#2??\null}%
+ \else
+ \def\@@gls@checkactual{\@gls@checkactual#2?#3\null}%
+ \fi
+ \fi
+ \@@gls@checkactual
+}
+\bgroup
+\catcode`\|0\relax
+\catcode`\\12\relax
+|gdef|@gls@checkesc#1\#2\#3|null{%
+ |@gls@tmpb=|expandafter{|@gls@checkedmkidx}%
+ |toks@={#1}%
+ |ifx|null#2|null
+ |ifx|null#3|null
+ |edef|@gls@checkedmkidx{|the|@gls@tmpb|the|toks@}%
+ |def|@@gls@checkesc{|relax}%
+ |else
+ |edef|@gls@checkedmkidx{|the|@gls@tmpb|the|toks@
+ |@gls@quotechar|@backslashchar|@gls@quotechar|@backslashchar}%
+ |def|@@gls@checkesc{|@gls@checkesc#3|null}%
+ |fi
+ |else
+ |edef|@gls@checkedmkidx{|the|@gls@tmpb|the|toks@
+ |@gls@quotechar|@backslashchar}%
+ |ifx|null#3|null
+ |def|@@gls@checkesc{|@gls@checkesc#2\\|null}%
+ |else
+ |def|@@gls@checkesc{|@gls@checkesc#2\#3|null}%
+ |fi
+ |fi
+ |@@gls@checkesc
+}
+|egroup
+\def\@gls@xdycheckquote#1"#2"#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@xdycheckquote{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \string\"\string\"}%
+ \def\@@gls@xdycheckquote{\@gls@xdycheckquote#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \string\"}%
+ \ifx\null#3\null
+ \def\@@gls@xdycheckquote{\@gls@xdycheckquote#2""\null}%
+ \else
+ \def\@@gls@xdycheckquote{\@gls@xdycheckquote#2"#3\null}%
+ \fi
+ \fi
+ \@@gls@xdycheckquote
+}
+\edef\def@gls@xdycheckbackslash{%
+ \noexpand\def\noexpand\@gls@xdycheckbackslash##1\@backslashchar
+ ##2\@backslashchar##3\noexpand\null{%
+ \noexpand\@gls@tmpb=\noexpand\expandafter
+ {\noexpand\@gls@checkedmkidx}%
+ \noexpand\toks@={##1}%
+ \noexpand\ifx\noexpand\null##2\noexpand\null
+ \noexpand\ifx\noexpand\null##3\noexpand\null
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@}%
+ \noexpand\def\noexpand\@@gls@xdycheckbackslash{\relax}%
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \@backslashchar\@backslashchar\@backslashchar\@backslashchar}%
+ \noexpand\def\noexpand\@@gls@xdycheckbackslash{%
+ \noexpand\@gls@xdycheckbackslash##3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \@backslashchar\@backslashchar}%
+ \noexpand\ifx\noexpand\null##3\noexpand\null
+ \noexpand\def\noexpand\@@gls@xdycheckbackslash{%
+ \noexpand\@gls@xdycheckbackslash##2\@backslashchar
+ \@backslashchar\noexpand\null}%
+ \noexpand\else
+ \noexpand\def\noexpand\@@gls@xdycheckbackslash{%
+ \noexpand\@gls@xdycheckbackslash##2\@backslashchar
+ ##3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\fi
+ \noexpand\@@gls@xdycheckbackslash
+ }%
+}
+\def@gls@xdycheckbackslash
+
+\newlength\gls@tmplen
+\newcommand*{\glsdohypertarget}[2]{%
+ \glsdoshowtarget{#1}%
+ {%
+ \glsmeasureheight{\gls@tmplen}{#2}%
+ \glsdohypertargethook{#1}{#2}%
+ \raisebox{\gls@tmplen}{\hypertarget{#1}{}}%
+ #2%
+ }%
+}
+\newcommand*{\glsdohypertargethook}[2]{}
+\NewDocumentCommand\glslabelhypertarget{mm}{%
+ \protected@write\@auxout
+ {\glslabelhypertargetdefs}%
+ {%
+ \string\newlabel
+ {\glslabelhypertargetprefix#1}%
+ {%
+ {\glslabelhypertargetvalue}{\thepage}{#2}{#1}{}%
+ }%
+ }%
+}
+\ExplSyntaxOn
+\newcommand\glslabelhypertargetvalue{
+ \bool_lazy_and:nnT
+ { \tl_if_exist_p:N \glscurrententrylabel }
+ { \bool_not_p:n { \tl_if_empty_p:N \glscurrententrylabel } }
+ {
+ \glsentryname \glscurrententrylabel
+ }
+}
+\ExplSyntaxOff
+\newcommand*\glslabelhypertargetprefix{}
+\newcommand*\glslabelhypertargetdefs{%
+ \let\glossentryname\glsentryname
+ \let\glossentrydesc\glsentrydesc
+ \let\glossentrysymbol\glsentrysymbol
+ \let\Glossentryname\glsentryname
+ \let\Glossentrydesc\glsentrydesc
+ \let\Glossentrysymbol\glsentrysymbol
+ \let\glossentrynameother\@gls@entry@field
+}
+\newcommand*{\glsdohyperlink}[2]{%
+ \glsdoshowtarget{#1}%
+ {%
+ \glsdohyperlinkhook{#1}{#2}%
+ \hyperlink{#1}{#2}%
+ }%
+}
+\newcommand*{\glsdohyperlinkhook}[2]{}
+\newcommand*{\glsdonohyperlink}[2]{#2}
+\ifcsundef{hyperlink}%
+{%
+ \let\@glslink\glsdonohyperlink
+}%
+{%
+ \let\@glslink\glsdohyperlink
+}
+\ifcsundef{hypertarget}%
+{%
+ \let\@glstarget\@secondoftwo
+}%
+{%
+ \let\@glstarget\glsdohypertarget
+}
+\newcommand{\glsdisablehyper}{%
+ \KV@glslink@hyperfalse
+ \let\@glslink\glsdonohyperlink
+ \let\@glstarget\@secondoftwo
+}
+\newcommand{\glsenablehyper}{%
+ \KV@glslink@hypertrue
+ \let\@glslink\glsdohyperlink
+ \let\@glstarget\glsdohypertarget
+}
+\providecommand{\@firstofthree}[3]{#1}
+\providecommand{\@secondofthree}[3]{#2}
+\newrobustcmd*{\gls}{\@gls@hyp@opt\@gls}
+\newcommand*{\@gls}[2][]{%
+ \new@ifnextchar[{\@gls@{#1}{#2}}{\@gls@{#1}{#2}[]}%
+}
+\def\@gls@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \@gls@do@glsunset{#2}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Gls}{\@gls@hyp@opt\@Gls}
+\glsmfuaddmap{\gls}{\Gls}
+\newcommand*{\@Gls}[2][]{%
+ \new@ifnextchar[{\@Gls@{#1}{#2}}{\@Gls@{#1}{#2}[]}%
+}
+\def\@Gls@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \@gls@do@glsunset{#2}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\GLS}{\@gls@hyp@opt\@GLS}
+\glsmfublocker{\GLS}
+\newcommand*{\@GLS}[2][]{%
+ \new@ifnextchar[{\@GLS@{#1}{#2}}{\@GLS@{#1}{#2}[]}%
+}
+\def\@GLS@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \@gls@do@glsunset{#2}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\glspl}{\@gls@hyp@opt\@glspl}
+\newcommand*{\@glspl}[2][]{%
+ \new@ifnextchar[{\@glspl@{#1}{#2}}{\@glspl@{#1}{#2}[]}%
+}
+\def\@glspl@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \@gls@do@glsunset{#2}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Glspl}{\@gls@hyp@opt\@Glspl}
+\glsmfuaddmap{\glspl}{\Glspl}
+\newcommand*{\@Glspl}[2][]{%
+ \new@ifnextchar[{\@Glspl@{#1}{#2}}{\@Glspl@{#1}{#2}[]}%
+}
+\def\@Glspl@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \@gls@do@glsunset{#2}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\GLSpl}{\@gls@hyp@opt\@GLSpl}
+\glsmfublocker{\GLSpl}
+\newcommand*{\@GLSpl}[2][]{%
+ \new@ifnextchar[{\@GLSpl@{#1}{#2}}{\@GLSpl@{#1}{#2}[]}%
+}
+\def\@GLSpl@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \@gls@do@glsunset{#2}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\glsdisp}{\@gls@hyp@opt\@glsdisp}
+\newcommand*{\@glsdisp}[3][]{%
+ \glsdoifexists{#2}{%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \def\glscustomtext{#3}%
+ \def\glsinsert{}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \@gls@do@glsunset{#2}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Glsdisp}{\@gls@hyp@opt\@Glsdisp}
+\newcommand*{\@Glsdisp}[3][]{%
+ \@glsdisp[#1]{#2}{\glssentencecase{#3}}%
+}
+\glsmfuaddmap{\glsdisp}{\Glsdisp}
+\newcommand*{\@gls@link@nocheckfirsthyper}{}
+\newcommand{\@gls@field@link}[3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \@gls@link[#1]{#2}{#3}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\glstext}{\@gls@hyp@opt\@glstext}
+\newcommand*{\@glstext}[2][]{%
+ \new@ifnextchar[{\@glstext@{#1}{#2}}{\@glstext@{#1}{#2}[]}}
+\def\@glstext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentrytext{#2}#3}%
+}
+\newrobustcmd*{\GLStext}{\@gls@hyp@opt\@GLStext}
+\glsmfublocker{\GLStext}
+\newcommand*{\@GLStext}[2][]{%
+ \new@ifnextchar[{\@GLStext@{#1}{#2}}{\@GLStext@{#1}{#2}[]}}
+\def\@GLStext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrytext{#2}#3}}%
+}
+\newrobustcmd*{\Glstext}{\@gls@hyp@opt\@Glstext}
+\glsmfuaddmap{\glstext}{\Glstext}
+\newcommand*{\@Glstext}[2][]{%
+ \new@ifnextchar[{\@Glstext@{#1}{#2}}{\@Glstext@{#1}{#2}[]}}
+\def\@Glstext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentrytext{#2}#3}%
+}
+\newrobustcmd*{\glsfirst}{\@gls@hyp@opt\@glsfirst}
+\newcommand*{\@glsfirst}[2][]{%
+ \new@ifnextchar[{\@glsfirst@{#1}{#2}}{\@glsfirst@{#1}{#2}[]}}
+\def\@glsfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryfirst{#2}#3}%
+}
+\newrobustcmd*{\Glsfirst}{\@gls@hyp@opt\@Glsfirst}
+\glsmfuaddmap{\glsfirst}{\Glsfirst}
+\newcommand*{\@Glsfirst}[2][]{%
+ \new@ifnextchar[{\@Glsfirst@{#1}{#2}}{\@Glsfirst@{#1}{#2}[]}}
+\def\@Glsfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryfirst{#2}#3}%
+}
+\newrobustcmd*{\GLSfirst}{\@gls@hyp@opt\@GLSfirst}
+\glsmfublocker{\GLSfirst}
+\newcommand*{\@GLSfirst}[2][]{%
+ \new@ifnextchar[{\@GLSfirst@{#1}{#2}}{\@GLSfirst@{#1}{#2}[]}}
+\def\@GLSfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryfirst{#2}#3}}%
+}
+\newrobustcmd*{\glsplural}{\@gls@hyp@opt\@glsplural}
+\newcommand*{\@glsplural}[2][]{%
+ \new@ifnextchar[{\@glsplural@{#1}{#2}}{\@glsplural@{#1}{#2}[]}}
+\def\@glsplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryplural{#2}#3}%
+}
+\newrobustcmd*{\Glsplural}{\@gls@hyp@opt\@Glsplural}
+\glsmfuaddmap{\glsplural}{\Glsplural}
+\newcommand*{\@Glsplural}[2][]{%
+ \new@ifnextchar[{\@Glsplural@{#1}{#2}}{\@Glsplural@{#1}{#2}[]}}
+\def\@Glsplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryplural{#2}#3}%
+}
+\newrobustcmd*{\GLSplural}{\@gls@hyp@opt\@GLSplural}
+\glsmfublocker{\GLSplural}
+\newcommand*{\@GLSplural}[2][]{%
+ \new@ifnextchar[{\@GLSplural@{#1}{#2}}{\@GLSplural@{#1}{#2}[]}}
+\def\@GLSplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryplural{#2}#3}}%
+}
+\newrobustcmd*{\glsfirstplural}{\@gls@hyp@opt\@glsfirstplural}
+\newcommand*{\@glsfirstplural}[2][]{%
+ \new@ifnextchar[{\@glsfirstplural@{#1}{#2}}{\@glsfirstplural@{#1}{#2}[]}}
+\def\@glsfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryfirstplural{#2}#3}%
+}
+\newrobustcmd*{\Glsfirstplural}{\@gls@hyp@opt\@Glsfirstplural}
+\glsmfuaddmap{\glsfirstplural}{\Glsfirstplural}
+\newcommand*{\@Glsfirstplural}[2][]{%
+ \new@ifnextchar[{\@Glsfirstplural@{#1}{#2}}{\@Glsfirstplural@{#1}{#2}[]}}
+\def\@Glsfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryfirstplural{#2}#3}%
+}
+\newrobustcmd*{\GLSfirstplural}{\@gls@hyp@opt\@GLSfirstplural}
+\glsmfublocker{\GLSfirstplural}
+\newcommand*{\@GLSfirstplural}[2][]{%
+ \new@ifnextchar[{\@GLSfirstplural@{#1}{#2}}{\@GLSfirstplural@{#1}{#2}[]}}
+\def\@GLSfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryfirstplural{#2}#3}}%
+}
+\newrobustcmd*{\glsname}{\@gls@hyp@opt\@glsname}
+\newcommand*{\@glsname}[2][]{%
+ \new@ifnextchar[{\@glsname@{#1}{#2}}{\@glsname@{#1}{#2}[]}}
+\def\@glsname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryname{#2}#3}%
+}
+\newrobustcmd*{\Glsname}{\@gls@hyp@opt\@Glsname}
+\glsmfuaddmap{\glsname}{\Glsname}
+\newcommand*{\@Glsname}[2][]{%
+ \new@ifnextchar[{\@Glsname@{#1}{#2}}{\@Glsname@{#1}{#2}[]}}
+\def\@Glsname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryname{#2}#3}%
+}
+\newrobustcmd*{\GLSname}{\@gls@hyp@opt\@GLSname}
+\glsmfublocker{\GLSname}
+\newcommand*{\@GLSname}[2][]{%
+ \new@ifnextchar[{\@GLSname@{#1}{#2}}{\@GLSname@{#1}{#2}[]}}
+\def\@GLSname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryname{#2}#3}}%
+}
+\newrobustcmd*{\glsdesc}{\@gls@hyp@opt\@glsdesc}
+\newcommand*{\@glsdesc}[2][]{%
+ \new@ifnextchar[{\@glsdesc@{#1}{#2}}{\@glsdesc@{#1}{#2}[]}}
+\def\@glsdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentrydesc{#2}#3}%
+}
+\newrobustcmd*{\Glsdesc}{\@gls@hyp@opt\@Glsdesc}
+\glsmfuaddmap{\glsdesc}{\Glsdesc}
+\newcommand*{\@Glsdesc}[2][]{%
+ \new@ifnextchar[{\@Glsdesc@{#1}{#2}}{\@Glsdesc@{#1}{#2}[]}}
+\def\@Glsdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentrydesc{#2}#3}%
+}
+\newrobustcmd*{\GLSdesc}{\@gls@hyp@opt\@GLSdesc}
+\glsmfublocker{\GLSdesc}
+\newcommand*{\@GLSdesc}[2][]{%
+ \new@ifnextchar[{\@GLSdesc@{#1}{#2}}{\@GLSdesc@{#1}{#2}[]}}
+\def\@GLSdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrydesc{#2}#3}}%
+}
+\newrobustcmd*{\glsdescplural}{\@gls@hyp@opt\@glsdescplural}
+\newcommand*{\@glsdescplural}[2][]{%
+ \new@ifnextchar[{\@glsdescplural@{#1}{#2}}{\@glsdescplural@{#1}{#2}[]}}
+\def\@glsdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentrydescplural{#2}#3}%
+}
+\newrobustcmd*{\Glsdescplural}{\@gls@hyp@opt\@Glsdescplural}
+\glsmfuaddmap{\glsdescplural}{\Glsdescplural}
+\newcommand*{\@Glsdescplural}[2][]{%
+ \new@ifnextchar[{\@Glsdescplural@{#1}{#2}}{\@Glsdescplural@{#1}{#2}[]}}
+\def\@Glsdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentrydescplural{#2}#3}%
+}
+\newrobustcmd*{\GLSdescplural}{\@gls@hyp@opt\@GLSdescplural}
+\glsmfublocker{\GLSdescplural}
+\newcommand*{\@GLSdescplural}[2][]{%
+ \new@ifnextchar[{\@GLSdescplural@{#1}{#2}}{\@GLSdescplural@{#1}{#2}[]}}
+\def\@GLSdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrydescplural{#2}#3}}%
+}
+\newrobustcmd*{\glssymbol}{\@gls@hyp@opt\@glssymbol}
+\newcommand*{\@glssymbol}[2][]{%
+ \new@ifnextchar[{\@glssymbol@{#1}{#2}}{\@glssymbol@{#1}{#2}[]}}
+\def\@glssymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentrysymbol{#2}#3}%
+}
+\newrobustcmd*{\Glssymbol}{\@gls@hyp@opt\@Glssymbol}
+\glsmfuaddmap{\glssymbol}{\Glssymbol}
+\newcommand*{\@Glssymbol}[2][]{%
+ \new@ifnextchar[{\@Glssymbol@{#1}{#2}}{\@Glssymbol@{#1}{#2}[]}}
+\def\@Glssymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentrysymbol{#2}#3}%
+}
+\newrobustcmd*{\GLSsymbol}{\@gls@hyp@opt\@GLSsymbol}
+\glsmfublocker{\GLSsymbol}
+\newcommand*{\@GLSsymbol}[2][]{%
+ \new@ifnextchar[{\@GLSsymbol@{#1}{#2}}{\@GLSsymbol@{#1}{#2}[]}}
+\def\@GLSsymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrysymbol{#2}#3}}%
+}
+\newrobustcmd*{\glssymbolplural}{\@gls@hyp@opt\@glssymbolplural}
+\newcommand*{\@glssymbolplural}[2][]{%
+ \new@ifnextchar[{\@glssymbolplural@{#1}{#2}}{\@glssymbolplural@{#1}{#2}[]}}
+\def\@glssymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentrysymbolplural{#2}#3}%
+}
+\newrobustcmd*{\Glssymbolplural}{\@gls@hyp@opt\@Glssymbolplural}
+\glsmfuaddmap{\glssymbolplural}{\Glssymbolplural}
+\newcommand*{\@Glssymbolplural}[2][]{%
+ \new@ifnextchar[{\@Glssymbolplural@{#1}{#2}}{\@Glssymbolplural@{#1}{#2}[]}}
+\def\@Glssymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentrysymbolplural{#2}#3}%
+}
+\newrobustcmd*{\GLSsymbolplural}{\@gls@hyp@opt\@GLSsymbolplural}
+\glsmfublocker{\GLSsymbolplural}
+\newcommand*{\@GLSsymbolplural}[2][]{%
+ \new@ifnextchar[{\@GLSsymbolplural@{#1}{#2}}{\@GLSsymbolplural@{#1}{#2}[]}}
+\def\@GLSsymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentrysymbolplural{#2}#3}}%
+}
+\newrobustcmd*{\glsuseri}{\@gls@hyp@opt\@glsuseri}
+\newcommand*{\@glsuseri}[2][]{%
+ \new@ifnextchar[{\@glsuseri@{#1}{#2}}{\@glsuseri@{#1}{#2}[]}}
+\def\@glsuseri@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuseri{#2}#3}%
+}
+\newrobustcmd*{\Glsuseri}{\@gls@hyp@opt\@Glsuseri}
+\glsmfuaddmap{\glsuseri}{\Glsuseri}
+\newcommand*{\@Glsuseri}[2][]{%
+ \new@ifnextchar[{\@Glsuseri@{#1}{#2}}{\@Glsuseri@{#1}{#2}[]}}
+\def\@Glsuseri@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuseri{#2}#3}%
+}
+\newrobustcmd*{\GLSuseri}{\@gls@hyp@opt\@GLSuseri}
+\glsmfublocker{\GLSuseri}
+\newcommand*{\@GLSuseri}[2][]{%
+ \new@ifnextchar[{\@GLSuseri@{#1}{#2}}{\@GLSuseri@{#1}{#2}[]}}
+\def\@GLSuseri@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuseri{#2}#3}}%
+}
+\newrobustcmd*{\glsuserii}{\@gls@hyp@opt\@glsuserii}
+\newcommand*{\@glsuserii}[2][]{%
+ \new@ifnextchar[{\@glsuserii@{#1}{#2}}{\@glsuserii@{#1}{#2}[]}}
+\def\@glsuserii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuserii{#2}#3}%
+}
+\newrobustcmd*{\Glsuserii}{\@gls@hyp@opt\@Glsuserii}
+\glsmfuaddmap{\glsuserii}{\Glsuserii}
+\newcommand*{\@Glsuserii}[2][]{%
+ \new@ifnextchar[{\@Glsuserii@{#1}{#2}}{\@Glsuserii@{#1}{#2}[]}}
+\def\@Glsuserii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuserii{#2}#3}%
+}
+\newrobustcmd*{\GLSuserii}{\@gls@hyp@opt\@GLSuserii}
+\glsmfublocker{\GLSuserii}
+\newcommand*{\@GLSuserii}[2][]{%
+ \new@ifnextchar[{\@GLSuserii@{#1}{#2}}{\@GLSuserii@{#1}{#2}[]}}
+\def\@GLSuserii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuserii{#2}#3}}%
+}
+\newrobustcmd*{\glsuseriii}{\@gls@hyp@opt\@glsuseriii}
+\newcommand*{\@glsuseriii}[2][]{%
+ \new@ifnextchar[{\@glsuseriii@{#1}{#2}}{\@glsuseriii@{#1}{#2}[]}}
+\def\@glsuseriii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuseriii{#2}#3}%
+}
+\newrobustcmd*{\Glsuseriii}{\@gls@hyp@opt\@Glsuseriii}
+\glsmfuaddmap{\glsuseriii}{\Glsuseriii}
+\newcommand*{\@Glsuseriii}[2][]{%
+ \new@ifnextchar[{\@Glsuseriii@{#1}{#2}}{\@Glsuseriii@{#1}{#2}[]}}
+\def\@Glsuseriii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuseriii{#2}#3}%
+}
+\newrobustcmd*{\GLSuseriii}{\@gls@hyp@opt\@GLSuseriii}
+\glsmfublocker{\GLSuseriii}
+\newcommand*{\@GLSuseriii}[2][]{%
+ \new@ifnextchar[{\@GLSuseriii@{#1}{#2}}{\@GLSuseriii@{#1}{#2}[]}}
+\def\@GLSuseriii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuseriii{#2}#3}}%
+}
+\newrobustcmd*{\glsuseriv}{\@gls@hyp@opt\@glsuseriv}
+\newcommand*{\@glsuseriv}[2][]{%
+ \new@ifnextchar[{\@glsuseriv@{#1}{#2}}{\@glsuseriv@{#1}{#2}[]}}
+\def\@glsuseriv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuseriv{#2}#3}%
+}
+\newrobustcmd*{\Glsuseriv}{\@gls@hyp@opt\@Glsuseriv}
+\glsmfuaddmap{\glsuseriv}{\Glsuseriv}
+\newcommand*{\@Glsuseriv}[2][]{%
+ \new@ifnextchar[{\@Glsuseriv@{#1}{#2}}{\@Glsuseriv@{#1}{#2}[]}}
+\def\@Glsuseriv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuseriv{#2}#3}%
+}
+\newrobustcmd*{\GLSuseriv}{\@gls@hyp@opt\@GLSuseriv}
+\glsmfublocker{\GLSuseriv}
+\newcommand*{\@GLSuseriv}[2][]{%
+ \new@ifnextchar[{\@GLSuseriv@{#1}{#2}}{\@GLSuseriv@{#1}{#2}[]}}
+\def\@GLSuseriv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuseriv{#2}#3}}%
+}
+\newrobustcmd*{\glsuserv}{\@gls@hyp@opt\@glsuserv}
+\newcommand*{\@glsuserv}[2][]{%
+ \new@ifnextchar[{\@glsuserv@{#1}{#2}}{\@glsuserv@{#1}{#2}[]}}
+\def\@glsuserv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuserv{#2}#3}%
+}
+\newrobustcmd*{\Glsuserv}{\@gls@hyp@opt\@Glsuserv}
+\glsmfuaddmap{\glsuserv}{\Glsuserv}
+\newcommand*{\@Glsuserv}[2][]{%
+\new@ifnextchar[{\@Glsuserv@{#1}{#2}}{\@Glsuserv@{#1}{#2}[]}}
+\def\@Glsuserv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuserv{#2}#3}%
+}
+\newrobustcmd*{\GLSuserv}{\@gls@hyp@opt\@GLSuserv}
+\glsmfublocker{\GLSuserv}
+\newcommand*{\@GLSuserv}[2][]{%
+\new@ifnextchar[{\@GLSuserv@{#1}{#2}}{\@GLSuserv@{#1}{#2}[]}}
+\def\@GLSuserv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuserv{#2}#3}}%
+}
+\newrobustcmd*{\glsuservi}{\@gls@hyp@opt\@glsuservi}
+\newcommand*{\@glsuservi}[2][]{%
+ \new@ifnextchar[{\@glsuservi@{#1}{#2}}{\@glsuservi@{#1}{#2}[]}}
+\def\@glsuservi@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuservi{#2}#3}%
+}
+\newrobustcmd*{\Glsuservi}{\@gls@hyp@opt\@Glsuservi}
+\glsmfuaddmap{\glsuservi}{\Glsuservi}
+\newcommand*{\@Glsuservi}[2][]{%
+ \new@ifnextchar[{\@Glsuservi@{#1}{#2}}{\@Glsuservi@{#1}{#2}[]}}
+\def\@Glsuservi@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuservi{#2}#3}%
+}
+\newrobustcmd*{\GLSuservi}{\@gls@hyp@opt\@GLSuservi}
+\glsmfublocker{\GLSuservi}
+\newcommand*{\@GLSuservi}[2][]{%
+ \new@ifnextchar[{\@GLSuservi@{#1}{#2}}{\@GLSuservi@{#1}{#2}[]}}
+\def\@GLSuservi@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsuppercase{\glsentryuservi{#2}#3}}%
+}
+\newrobustcmd*{\acrshort}{\@gls@hyp@opt\ns@acrshort}
+\newcommand*{\ns@acrshort}[2][]{%
+ \new@ifnextchar[{\@acrshort{#1}{#2}}{\@acrshort{#1}{#2}[]}%
+}
+\def\@acrshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsentryshort{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Acrshort}{\@gls@hyp@opt\ns@Acrshort}
+\glsmfuaddmap{\Acrshort}{\Acrshort}
+\newcommand*{\ns@Acrshort}[2][]{%
+ \new@ifnextchar[{\@Acrshort{#1}{#2}}{\@Acrshort{#1}{#2}[]}%
+}
+\def\@Acrshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\Glsentryshort{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\ACRshort}{\@gls@hyp@opt\ns@ACRshort}
+\glsmfublocker{\ACRshort}
+\newcommand*{\ns@ACRshort}[2][]{%
+ \new@ifnextchar[{\@ACRshort{#1}{#2}}{\@ACRshort{#1}{#2}[]}%
+}
+\def\@ACRshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsuppercase{\acronymfont{\glsentryshort{#2}}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\acrshortpl}{\@gls@hyp@opt\ns@acrshortpl}
+\newcommand*{\ns@acrshortpl}[2][]{%
+ \new@ifnextchar[{\@acrshortpl{#1}{#2}}{\@acrshortpl{#1}{#2}[]}%
+}
+\def\@acrshortpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsentryshortpl{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Acrshortpl}{\@gls@hyp@opt\ns@Acrshortpl}
+\glsmfuaddmap{\Acrshortpl}{\Acrshortpl}
+\newcommand*{\ns@Acrshortpl}[2][]{%
+ \new@ifnextchar[{\@Acrshortpl{#1}{#2}}{\@Acrshortpl{#1}{#2}[]}%
+}
+\def\@Acrshortpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\Glsentryshortpl{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\ACRshortpl}{\@gls@hyp@opt\ns@ACRshortpl}
+\glsmfublocker{\ACRshortpl}
+\newcommand*{\ns@ACRshortpl}[2][]{%
+ \new@ifnextchar[{\@ACRshortpl{#1}{#2}}{\@ACRshortpl{#1}{#2}[]}%
+}
+\def\@ACRshortpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsuppercase{\acronymfont{\glsentryshortpl{#2}}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\acrlong}{\@gls@hyp@opt\ns@acrlong}
+\newcommand*{\ns@acrlong}[2][]{%
+ \new@ifnextchar[{\@acrlong{#1}{#2}}{\@acrlong{#1}{#2}[]}%
+}
+\def\@acrlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsentrylong{#2}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Acrlong}{\@gls@hyp@opt\ns@Acrlong}
+\glsmfuaddmap{\Acrlong}{\Acrlong}
+\newcommand*{\ns@Acrlong}[2][]{%
+ \new@ifnextchar[{\@Acrlong{#1}{#2}}{\@Acrlong{#1}{#2}[]}%
+}
+\def\@Acrlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \Glsentrylong{#2}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\ACRlong}{\@gls@hyp@opt\ns@ACRlong}
+\glsmfublocker{\ACRlong}
+\newcommand*{\ns@ACRlong}[2][]{%
+ \new@ifnextchar[{\@ACRlong{#1}{#2}}{\@ACRlong{#1}{#2}[]}%
+}
+\def\@ACRlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsuppercase{\glsentrylong{#2}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\acrlongpl}{\@gls@hyp@opt\ns@acrlongpl}
+\newcommand*{\ns@acrlongpl}[2][]{%
+ \new@ifnextchar[{\@acrlongpl{#1}{#2}}{\@acrlongpl{#1}{#2}[]}%
+}
+\def\@acrlongpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsentrylongpl{#2}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\Acrlongpl}{\@gls@hyp@opt\ns@Acrlongpl}
+\glsmfuaddmap{\Acrlongpl}{\Acrlongpl}
+\newcommand*{\ns@Acrlongpl}[2][]{%
+ \new@ifnextchar[{\@Acrlongpl{#1}{#2}}{\@Acrlongpl{#1}{#2}[]}%
+}
+\def\@Acrlongpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \Glsentrylongpl{#2}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newrobustcmd*{\ACRlongpl}{\@gls@hyp@opt\ns@ACRlongpl}
+\glsmfublocker{\ACRlongpl}
+\newcommand*{\ns@ACRlongpl}[2][]{%
+ \new@ifnextchar[{\@ACRlongpl{#1}{#2}}{\@ACRlongpl{#1}{#2}[]}%
+}
+\def\@ACRlongpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsuppercase{\glsentrylongpl{#2}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+\newcommand*{\@gls@entry@field}[2]{%
+ \csuse{glo@\glsdetoklabel{#1}@#2}%
+}
+\newcommand*{\glsletentryfield}[3]{%
+ \letcs{#1}{glo@\glsdetoklabel{#2}@#3}%
+}
+\newrobustcmd*{\@Gls@entry@field}[2]{%
+ \glsdoifexistsordo{#1}%
+ {%
+ \letcs\@glo@text{glo@\glsdetoklabel{#1}@#2}%
+ \ifdef\@glo@text
+ {%
+ \expandafter\glssentencecase\expandafter{\@glo@text}%
+ }%
+ {%
+ ??\PackageError{glossaries}{The field `#2' doesn't exist for glossary
+ entry `\glsdetoklabel{#1}'}{Check you have correctly spelt the entry
+ label and the field name}%
+ }%
+ }%
+ {%
+ ??%
+ }%
+}
+\newcommand{\@Glsentryfield}[2]{%
+ \glstexorpdfstring{\@Gls@entry@field{#1}{#2}}%
+ {\MFUsentencecase{\@gls@entry@field{#1}{#2}}}%
+}
+\ifdef\texorpdfstring
+{\newcommand{\glstexorpdfstring}{\texorpdfstring}}
+{\newcommand{\glstexorpdfstring}[2]{#1}}
+\newcommand*{\glsentryname}[1]{\@gls@entry@field{#1}{name}}
+\newcommand*{\Glsentryname}[1]{%
+ \glstexorpdfstring{\protect\@Gls@entryname{#1}}%
+ {\MFUsentencecase{\@gls@entry@field{#1}{name}}}%
+}
+\glsmfuexcl{\Glsentryname}
+\newcommand*{\@Gls@entryname}[1]{%
+ \@Gls@entry@field{#1}{name}%
+}
+\newrobustcmd*{\@Gls@acrentryname}[1]{%
+ \ifglshaslong{#1}%
+ {%
+ \protected@edef\@glo@text{\@gls@entry@field{#1}{name}}%
+ \expandafter\glssentencecase\expandafter{\@glo@text}%
+ }%
+ {%
+ \@Gls@entry@field{#1}{name}%
+ }%
+}
+\newcommand*{\@org@Gls@acrentryname}[1]{%
+ \ifglshaslong{#1}%
+ {%
+ \letcs\@glo@text{glo@\glsdetoklabel{#1}@name}%
+ \expandafter\@gls@getbody\@glo@text{}\@nil
+ \expandafter\ifx\@gls@body\glsentrylong\relax
+ \expandafter\Glsentrylong\@gls@rest
+ \else
+ \expandafter\ifx\@gls@body\glsentryshort\relax
+ \expandafter\Glsentryshort\@gls@rest
+ \else
+ \expandafter\ifx\@gls@body\acronymfont\relax
+ {%
+ \let\glsentryshort\Glsentryshort
+ \@glo@text
+ }%
+ \else
+ \expandafter\ifx\@gls@body\glsshortaccessdisplay\relax
+ {%
+ \let\glsentryshort\Glsentryshort
+ \@glo@text
+ }%
+ \else
+ \expandafter\glssentencecase\expandafter{\@glo@text}%
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ {%
+ \@Gls@entry@field{#1}{name}%
+ }%
+}
+\newcommand*{\glsentrydesc}[1]{\@gls@entry@field{#1}{desc}}
+\newcommand*{\Glsentrydesc}[1]{\@Glsentryfield{#1}{desc}}
+\glsmfuexcl{\Glsentrydesc}
+\newcommand*{\glsentrydescplural}[1]{%
+ \@gls@entry@field{#1}{descplural}%
+}
+\newcommand*{\Glsentrydescplural}[1]{%
+ \@Glsentryfield{#1}{descplural}%
+}
+\glsmfuexcl{\Glsentrydescplural}
+\newcommand*{\glsentrytext}[1]{\@gls@entry@field{#1}{text}}
+\newcommand*{\Glsentrytext}[1]{%
+ \@Glsentryfield{#1}{text}%
+}
+\glsmfuexcl{\Glsentrytext}
+\newcommand*{\glsentryplural}[1]{%
+ \@gls@entry@field{#1}{plural}%
+}
+\newcommand*{\Glsentryplural}[1]{%
+ \@Glsentryfield{#1}{plural}%
+}
+\glsmfuexcl{\Glsentryplural}
+\newcommand*{\glsentrysymbol}[1]{%
+ \@gls@entry@field{#1}{symbol}%
+}
+\newcommand*{\Glsentrysymbol}[1]{%
+ \@Glsentryfield{#1}{symbol}%
+}
+\glsmfuexcl{\Glsentrysymbol}
+\newcommand*{\glsentrysymbolplural}[1]{%
+ \@gls@entry@field{#1}{symbolplural}%
+}
+\newcommand*{\Glsentrysymbolplural}[1]{%
+ \@Glsentryfield{#1}{symbolplural}%
+}
+\glsmfuexcl{\Glsentrysymbolplural}
+\newcommand*{\glsentryfirst}[1]{%
+ \@gls@entry@field{#1}{first}%
+}
+\newcommand*{\Glsentryfirst}[1]{%
+ \@Glsentryfield{#1}{first}%
+}
+\glsmfuexcl{\Glsentryfirst}
+\newcommand*{\glsentryfirstplural}[1]{%
+ \@gls@entry@field{#1}{firstpl}%
+}
+\newcommand*{\Glsentryfirstplural}[1]{%
+ \@Glsentryfield{#1}{firstpl}%
+}
+\glsmfuexcl{\Glsentryfirstplural}
+\newcommand{\glscapitalisewords}[1]{%
+ \capitalisewords{#1}%
+}
+\newcommand*{\glsentrytitlecase}[2]{%
+ \glstexorpdfstring
+ {\@glsentrytitlecase{#1}{#2}}%
+ {\MFUsentencecase{\@gls@entry@field{#1}{#2}}}%
+}
+\newrobustcmd*{\@glsentrytitlecase}[2]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsfieldfetch{#1}{#2}{\@gls@value}%
+ \expandafter\glscapitalisewords\expandafter{\@gls@value}%
+ }%
+}
+\newcommand*{\glsentrytype}[1]{\@gls@entry@field{#1}{type}}
+\newcommand*{\glsentrysort}[1]{%
+ \@gls@entry@field{#1}{sort}%
+}
+\newcommand*{\glsentryparent}[1]{%
+ \@gls@entry@field{#1}{parent}%
+}
+\newcommand*{\glsentryuseri}[1]{%
+ \@gls@entry@field{#1}{useri}%
+}
+\newcommand*{\Glsentryuseri}[1]{%
+ \@Glsentryfield{#1}{useri}%
+}
+\glsmfuexcl{\Glsentryuseri}
+\newcommand*{\glsentryuserii}[1]{%
+ \@gls@entry@field{#1}{userii}%
+}
+\newcommand*{\Glsentryuserii}[1]{%
+ \@Glsentryfield{#1}{userii}%
+}
+\glsmfuexcl{\Glsentryuserii}
+\newcommand*{\glsentryuseriii}[1]{%
+ \@gls@entry@field{#1}{useriii}%
+}
+\newcommand*{\Glsentryuseriii}[1]{%
+ \@Glsentryfield{#1}{useriii}%
+}
+\glsmfuexcl{\Glsentryuseriii}
+\newcommand*{\glsentryuseriv}[1]{%
+ \@gls@entry@field{#1}{useriv}%
+}
+\newcommand*{\Glsentryuseriv}[1]{%
+ \@Glsentryfield{#1}{useriv}%
+}
+\glsmfuexcl{\Glsentryuseriv}
+\newcommand*{\glsentryuserv}[1]{%
+ \@gls@entry@field{#1}{userv}%
+}
+\newcommand*{\Glsentryuserv}[1]{%
+ \@Glsentryfield{#1}{userv}%
+}
+\glsmfuexcl{\Glsentryuserv}
+\newcommand*{\glsentryuservi}[1]{%
+ \@gls@entry@field{#1}{uservi}%
+}
+\newcommand*{\Glsentryuservi}[1]{%
+ \@Glsentryfield{#1}{uservi}%
+}
+\glsmfuexcl{\Glsentryuservi}
+\newcommand*{\glsentryshort}[1]{\@gls@entry@field{#1}{short}}
+\newcommand*{\Glsentryshort}[1]{%
+ \@Glsentryfield{#1}{short}%
+}
+\glsmfuexcl{\Glsentryshort}
+\newcommand*{\glsentryshortpl}[1]{\@gls@entry@field{#1}{shortpl}}
+\newcommand*{\Glsentryshortpl}[1]{%
+ \@Glsentryfield{#1}{shortpl}%
+}
+\glsmfuexcl{\Glsentryshortpl}
+\newcommand*{\glsentrylong}[1]{\@gls@entry@field{#1}{long}}
+\newcommand*{\Glsentrylong}[1]{%
+ \@Glsentryfield{#1}{long}%
+}
+\glsmfuexcl{\Glsentrylong}
+\newcommand*{\glsentrylongpl}[1]{\@gls@entry@field{#1}{longpl}}
+\newcommand*{\Glsentrylongpl}[1]{%
+ \@Glsentryfield{#1}{longpl}%
+}
+\glsmfuexcl{\Glsentrylongpl}
+\newcommand*{\glsentryfull}[1]{%
+ \glsentrylong{#1} (\glsentryshort{#1})%
+}
+\newcommand*{\Glsentryfull}[1]{%
+ \Glsentrylong{#1} (\glsentryshort{#1})%
+}
+\glsmfuexcl{\Glsentryfull}
+\newcommand*{\glsentryfullpl}[1]{%
+ \acrfullformat{\glsentrylongpl{#1}}{\acronymfont{\glsentryshortpl{#1}}}%
+}
+\newcommand*{\Glsentryfullpl}[1]{%
+ \Glsentrylongpl{#1} (\glsentryshortpl{#1})%
+}
+\glsmfuexcl{\Glsentryfullpl}
+\newcommand*{\glsentrynumberlist}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \@gls@entry@field{#1}{numberlist}%
+ }%
+}
+\@ifpackageloaded{hyperref} {%
+ \newcommand*{\glsdisplaynumberlist}[1]{%
+ \GlossariesWarning
+ {%
+ \string\glsdisplaynumberlist\space
+ doesn't work with hyperref.^^JUsing
+ \string\glsentrynumberlist\space instead%
+ }%
+ \glsentrynumberlist{#1}%
+ }%
+}%
+{%
+ \newcommand*{\glsdisplaynumberlist}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \bgroup
+ \protected@edef\@glo@label{\glsdetoklabel{#1}}%
+ \let\@org@glsnumberformat\glsnumberformat
+ \def\glsnumberformat##1{##1}%
+ \protected@edef\the@numberlist{%
+ \csname glo@\@glo@label @numberlist\endcsname}%
+ \def\@gls@numlist@sep{}%
+ \def\@gls@numlist@nextsep{}%
+ \def\@gls@numlist@lastsep{}%
+ \def\@gls@thislist{}%
+ \def\@gls@donext@def{}%
+ \renewcommand\do[1]{%
+ \protected@edef\@gls@thislist{%
+ \@gls@thislist
+ \noexpand\@gls@numlist@sep
+ ##1%
+ }%
+ \let\@gls@numlist@sep\@gls@numlist@nextsep
+ \def\@gls@numlist@nextsep{\glsnumlistsep}%
+ \@gls@donext@def
+ \def\@gls@donext@def{%
+ \def\@gls@numlist@lastsep{\glsnumlistlastsep}%
+ }%
+ }%
+ \expandafter \glsnumlistparser \expandafter{\the@numberlist}%
+ \let\@gls@numlist@sep\@gls@numlist@lastsep
+ \@gls@thislist
+ \egroup
+ }%
+ }
+}
+\newcommand*{\glsnumlistsep}{, }
+\newcommand*{\glsnumlistlastsep}{ \& }
+\newcommand*{\glshyperlink}[2][\glsentrytext{\@glo@label}]{%
+ \def\@glo@label{#2}%
+ \@glslink{\glolinkprefix\glsdetoklabel{#2}}{#1}}
+\define@key{glossadd}{counter}{\def\@gls@counter{#1}}
+\define@key{glossadd}{format}{\def\@glsnumberformat{#1}}
+\define@key{glossadd}{types}{\def\@glo@type{#1}}
+\newrobustcmd*{\glsadd}[2][]{%
+ \@gls@adjustmode
+ \glsdoifexists{#2}%
+ {%
+ \def\@glsnumberformat{glsnumberformat}%
+ \protected@edef\@gls@counter{\csname glo@\glsdetoklabel{#2}@counter\endcsname}%
+ \setkeys{glossadd}{#1}%
+ \@gls@saveentrycounter
+ \@gls@setsort{#2}%
+ \@@do@wrglossary{#2}%
+ }%
+}
+\glsmfuexcl{\glsadd}
+\newcommand*{\@gls@adjustmode}{}
+\AtBeginDocument{\renewcommand*{\@gls@adjustmode}{\ifvmode\mbox{}\fi}}
+\newrobustcmd*{\glsaddall}[1][]{%
+ \protected@edef\@glo@type{\@glo@types}%
+ \setkeys{glossadd}{#1}%
+ \forallglsentries[\@glo@type]{\@glo@entry}{%
+ \glsadd[#1]{\@glo@entry}%
+ }%
+}
+\newrobustcmd*{\glsaddallunused}[1][\@glo@types]{%
+ \forallglsentries[#1]{\@glo@entry}%
+ {%
+ \ifglsused{\@glo@entry}{}{\glsadd[format=glsignore]{\@glo@entry}}%
+ }%
+}
+\newcommand*{\glsignore}[1]{}
+\edef\glsopenbrace{\expandafter\@gobble\string\{}
+\edef\glsclosebrace{\expandafter\@gobble\string\}}
+\edef\glsbackslash{\expandafter\@gobble\string\\}
+\edef\glsquote#1{\string"#1\string"}
+\edef\glspercentchar{\expandafter\@gobble\string\%}
+\edef\glstildechar{\string~}
+\ifglsxindy
+ \newcommand*{\@glsfirstletter}{A}
+\fi
+\newcommand*{\GlsSetXdyFirstLetterAfterDigits}{%
+ \@ifstar\s@GlsSetXdyFirstLetterAfterDigits\@GlsSetXdyFirstLetterAfterDigits}
+\ifglsxindy
+ \newcommand*{\@GlsSetXdyFirstLetterAfterDigits}[1]{%
+ \renewcommand*{\@glsfirstletter}{#1}}
+ \newcommand*{\s@GlsSetXdyFirstLetterAfterDigits}[1]{%
+ \renewcommand*{\@glsfirstletter}{#1}%
+ \@onelevel@sanitize\@glsfirstletter
+ }
+\else
+ \newcommand*{\@GlsSetXdyFirstLetterAfterDigits}[1]{%
+ \glsnoxindywarning\GlsSetXdyFirstLetterAfterDigits}
+ \newcommand*{\s@GlsSetXdyFirstLetterAfterDigits}{%
+ \@GlsSetXdyFirstLetterAfterDigits
+ }
+\fi
+\ifglsxindy
+ \newcommand*{\@xdynumbergrouporder}{:before \string"\@glsfirstletter\string"}
+\fi
+\newcommand*{\GlsSetXdyNumberGroupOrder}[1]{%
+ \@ifstar\s@GlsSetXdyNumberGroupOrder\@GlsSetXdyNumberGroupOrder
+}
+\ifglsxindy
+ \newcommand*{\@GlsSetXdyNumberGroupOrder}[1]{%
+ \renewcommand*{\@xdynumbergrouporder}{#1}%
+ }
+ \newcommand*{\s@GlsSetXdyNumberGroupOrder}[1]{%
+ \renewcommand*{\@xdynumbergrouporder}{#1}%
+ \@onelevel@sanitize\@xdynumbergrouporder
+ }
+\else
+ \newcommand*{\@GlsSetXdyNumberGroupOrder}[1]{%
+ \glsnoxindywarning\GlsSetXdyNumberGroupOrder}
+ \newcommand*{\s@GlsSetXdyNumberGroupOrder}{%
+ \@GlsSetXdyNumberGroupOrder}
+\fi
+\newcommand*{\@glsminrange}{2}
+\ifglsxindy
+ \newcommand*{\GlsSetXdyMinRangeLength}[1]{%
+ \renewcommand*{\@glsminrange}{#1}}
+\else
+ \newcommand*{\GlsSetXdyMinRangeLength}[1]{%
+ \glsnoxindywarning\GlsSetXdyMinRangeLength}
+\fi
+
+\ifglsxindy
+ \def\writeist{%
+ \ifundef{\glswrite}{\newwrite\glswrite}{}%
+ \@gls@addpredefinedattributes
+ \openout\glswrite=\istfilename
+ \write\glswrite{;; xindy style file created by the glossaries
+ package}%
+ \write\glswrite{;; for document '\jobname' on
+ \the\year-\the\month-\the\day}%
+ \write\glswrite{^^J; required styles^^J}
+ \@for\@xdystyle:=\@xdyrequiredstyles\do{%
+ \ifx\@xdystyle\@empty
+ \else
+ \protected@write\glswrite{}{(require
+ \string"\@xdystyle.xdy\string")}%
+ \fi
+ }%
+ \write\glswrite{^^J%
+ ; list of allowed attributes (number formats)^^J}%
+ \write\glswrite{(define-attributes ((\@xdyattributes)))}%
+ \write\glswrite{^^J; user defined alphabets^^J}%
+ \write\glswrite{\@xdyuseralphabets}%
+ \write\glswrite{^^J; location class definitions^^J}%
+ \@for\@gls@classI:=\@gls@xdy@locationlist\do{%
+ \protected@write\glswrite{}{(define-location-class
+ \string"\@gls@classI\string"^^J\space\space\space
+ (
+ :sep "{}{"
+ \csname @gls@xdy@Lclass@\@gls@classI\endcsname\space
+ :sep "}"
+ )
+ ^^J\space\space\space
+ :min-range-length \@glsminrange^^J%
+ )
+ }%
+ {%
+ \@for\@gls@classII:=\@gls@xdy@locationlist\do{%
+ \protected@write\glswrite{}{(define-location-class
+ \string"\@gls@classII-\@gls@classI\string"
+ ^^J\space\space\space
+ (
+ :sep "{"
+ \csname @gls@xdy@Lclass@\@gls@classII\endcsname\space
+ :sep "}{"
+ \csname @gls@xdy@Lclass@\@gls@classI\endcsname\space
+ :sep "}"
+ )
+ ^^J\space\space\space
+ :min-range-length \@glsminrange^^J%
+ )
+ }%
+ }%
+ }%
+ }%
+ \write\glswrite{^^J; user defined location classes}%
+ \write\glswrite{\@xdyuserlocationdefs}%
+ \write\glswrite{^^J; define cross-reference class^^J}%
+ \write\glswrite{(define-crossref-class \string"see\string"
+ :unverified )}%
+ \write\glswrite{(markup-crossref-list
+ :class \string"see\string"^^J\space\space\space
+ :open \string"\string\glsseeformat\string"
+ :close \string"{}\string")}%
+ \@xdycrossrefhook
+ \write\glswrite{^^J; define the order of the location classes}%
+ \write\glswrite{(define-location-class-order
+ (\@xdylocationclassorder))}%
+ \write\glswrite{^^J; define the glossary markup^^J}%
+ \write\glswrite{(markup-index^^J\space\space\space
+ :open \string"\string
+ \glossarysection[\string\glossarytoctitle]{\string
+ \glossarytitle}\string\glossarypreamble}%
+ \@for\@this@ctr:=\@xdycounters\do{%
+ {%
+ \@for\@this@attr:=\@xdyattributelist\do{%
+ \protected@write\glswrite{}{\string\providecommand*%
+ \expandafter\string
+ \csname glsX\@this@ctr X\@this@attr\endcsname[2]%
+ {%
+ \string\setentrycounter
+ [\expandafter\@gobble\string\#1]{\@this@ctr}%
+ \expandafter\string
+ \csname\@this@attr\endcsname
+ {\expandafter\@gobble\string\#2}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ \write\glswrite{%
+ \string\begin
+ {theglossary}\string\glossaryheader\glstildechar n\string" ^^J\space
+ \space\space:close \string"\glspercentchar\glstildechar n\string
+ \end{theglossary}\string\glossarypostamble
+ \glstildechar n\string" ^^J\space\space\space
+ :tree)}%
+ \write\glswrite{(markup-letter-group-list
+ :sep \string"\string\glsgroupskip\glstildechar n\string")}%
+ \write\glswrite{(markup-indexentry
+ :open \string"\string\relax \string\glsresetentrylist
+ \glstildechar n\string")}%
+ \write\glswrite{(markup-locclass-list :open
+ \string"\glsopenbrace\string\glossaryentrynumbers
+ \glsopenbrace\string\relax\space \string"^^J\space\space\space
+ :sep \string", \string"
+ :close \string"\glsclosebrace\glsclosebrace\string")}%
+ \write\glswrite{(markup-locref-list
+ :sep \string"\string\delimN\space\string")}%
+ \write\glswrite{(markup-range
+ :sep \string"\string\delimR\space\string")}%
+ \@onelevel@sanitize\gls@suffixF
+ \@onelevel@sanitize\gls@suffixFF
+ \ifx\gls@suffixF\@empty
+ \else
+ \write\glswrite{(markup-range
+ :close "\gls@suffixF" :length 1 :ignore-end)}%
+ \fi
+ \ifx\gls@suffixFF\@empty
+ \else
+ \write\glswrite{(markup-range
+ :close "\gls@suffixFF" :length 2 :ignore-end)}%
+ \fi
+ \write\glswrite{^^J; define format to use for locations^^J}%
+ \write\glswrite{\@xdylocref}%
+ \write\glswrite{^^J; define letter group list format^^J}%
+ \write\glswrite{(markup-letter-group-list
+ :sep \string"\string\glsgroupskip\glstildechar n\string")}%
+ \write\glswrite{^^J; letter group headings^^J}%
+ \write\glswrite{(markup-letter-group
+ :open-head \string"\string\glsgroupheading
+ \glsopenbrace\string"^^J\space\space\space
+ :close-head \string"\glsclosebrace\string")}%
+ \write\glswrite{^^J; additional letter groups^^J}%
+ \write\glswrite{\@xdylettergroups}%
+ \write\glswrite{^^J; additional sort rules^^J}
+ \write\glswrite{\@xdysortrules}%
+ \@gls@writeisthook
+ \closeout\glswrite
+ \let\writeist\relax
+ \let\noist\@gls@noist@toolate
+ }
+\else
+ \edef\@gls@actualchar{\string?}
+ \edef\@gls@encapchar{\string|}
+ \edef\@gls@levelchar{\string!}
+ \edef\@gls@quotechar{\string"}%
+ \let\GlsSetQuote\gls@nosetquote
+ \def\writeist{\relax
+ \ifundef{\glswrite}{\newwrite\glswrite}{}\relax
+ \openout\glswrite=\istfilename
+ \write\glswrite{\glspercentchar\space makeindex style file
+ created by the glossaries package}
+ \write\glswrite{\glspercentchar\space for document
+ '\jobname' on \the\year-\the\month-\the\day}
+ \write\glswrite{actual '\@gls@actualchar'}
+ \write\glswrite{encap '\@gls@encapchar'}
+ \write\glswrite{level '\@gls@levelchar'}
+ \write\glswrite{quote '\@gls@quotechar'}
+ \write\glswrite{keyword \string"\string\\glossaryentry\string"}
+ \write\glswrite{preamble \string"\string\\glossarysection[\string
+ \\glossarytoctitle]{\string\\glossarytitle}\string
+ \\glossarypreamble\string\n\string\\begin{theglossary}\string
+ \\glossaryheader\string\n\string"}
+ \write\glswrite{postamble \string"\string\%\string\n\string
+ \\end{theglossary}\string\\glossarypostamble\string\n
+ \string"}
+ \write\glswrite{group_skip \string"\string\\glsgroupskip\string\n
+ \string"}
+ \write\glswrite{item_0 \string"\string\%\string\n\string"}
+ \write\glswrite{item_1 \string"\string\%\string\n\string"}
+ \write\glswrite{item_2 \string"\string\%\string\n\string"}
+ \write\glswrite{item_01 \string"\string\%\string\n\string"}
+ \write\glswrite{item_x1
+ \string"\string\\relax \string\\glsresetentrylist\string\n
+ \string"}
+ \write\glswrite{item_12 \string"\string\%\string\n\string"}
+ \write\glswrite{item_x2
+ \string"\string\\relax \string\\glsresetentrylist\string\n
+ \string"}
+ \write\glswrite{delim_0 \string"\string\{\string
+ \\glossaryentrynumbers\string\{\string\\relax \string"}
+ \write\glswrite{delim_1 \string"\string\{\string
+ \\glossaryentrynumbers\string\{\string\\relax \string"}
+ \write\glswrite{delim_2 \string"\string\{\string
+ \\glossaryentrynumbers\string\{\string\\relax \string"}
+ \write\glswrite{delim_t \string"\string\}\string\}\string"}
+ \write\glswrite{delim_n \string"\string\\delimN \string"}
+ \write\glswrite{delim_r \string"\string\\delimR \string"}
+ \write\glswrite{headings_flag 1}
+ \write\glswrite{heading_prefix
+ \string"\string\\glsgroupheading\string\{\string"}
+ \write\glswrite{heading_suffix
+ \string"\string\}\string\\relax
+ \string\\glsresetentrylist \string"}
+ \write\glswrite{symhead_positive \string"glssymbols\string"}
+ \write\glswrite{numhead_positive \string"glsnumbers\string"}
+ \write\glswrite{page_compositor \string"\glscompositor\string"}
+ \@gls@escbsdq\gls@suffixF
+ \@gls@escbsdq\gls@suffixFF
+ \ifx\gls@suffixF\@empty
+ \else
+ \write\glswrite{suffix_2p \string"\gls@suffixF\string"}
+ \fi
+ \ifx\gls@suffixFF\@empty
+ \else
+ \write\glswrite{suffix_3p \string"\gls@suffixFF\string"}
+ \fi
+ \@gls@writeisthook
+ \closeout\glswrite
+ \let\writeist\relax
+ \let\noist\@gls@noist@toolate
+ }
+\fi
+\newcommand*{\GlsSetWriteIstHook}[1]{\renewcommand*{\@gls@writeisthook}{#1}}
+\@onlypremakeg\GlsSetWriteIstHook
+\newcommand*{\@gls@writeisthook}{}
+\ifglsxindy
+ \newcommand*{\GlsSetQuote}[1]{\glsnomakeindexwarning\GlsSetQuote}
+ \newcommand*{\gls@nosetquote}[1]{\glsnomakeindexwarning\GlsSetQuote}
+\else
+ \newcommand*{\GlsSetQuote}[1]{\edef\@gls@quotechar{\string#1}%
+ \@ifpackageloaded{tracklang}%
+ {%
+ \IfTrackedLanguage{german}%
+ {%
+ \def\@@gls@extramakeindexopts{-g}%
+ }%
+ {}%
+ }%
+ {}%
+ \edef\@gls@docheckquotedef{%
+ \noexpand\def\noexpand\@gls@checkquote####1#1####2#1####3\noexpand\null{%
+ \noexpand\@gls@tmpb=\noexpand\expandafter{\noexpand\@gls@checkedmkidx}%
+ \noexpand\toks@={####1}%
+ \noexpand\ifx\noexpand\null####2\noexpand\null
+ \noexpand\ifx\noexpand\null####3\noexpand\null
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@}%
+ \noexpand\def\noexpand\@@gls@checkquote{\noexpand\relax}%
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \noexpand\@gls@quotechar\noexpand\@gls@quotechar
+ \noexpand\@gls@quotechar\noexpand\@gls@quotechar}%
+ \noexpand\def\noexpand\@@gls@checkquote{%
+ \noexpand\@gls@checkquote####3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \noexpand\@gls@quotechar\noexpand\@gls@quotechar}%
+ \noexpand\ifx\noexpand\null####3\noexpand\null
+ \noexpand\def\noexpand\@@gls@checkquote{%
+ \noexpand\@gls@checkquote####2#1#1\noexpand\null}%
+ \noexpand\else
+ \noexpand\def\noexpand\@@gls@checkquote{%
+ \noexpand\@gls@checkquote####2#1####3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\fi
+ \noexpand\@@gls@checkquote
+ }%
+ }%
+ \@gls@docheckquotedef
+ \edef\@gls@docheckquotedef{%
+ \noexpand\renewcommand{\noexpand\@gls@checkmkidxchars}[1]{%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkquote####1\noexpand\@nil
+ #1#1\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkescquote####1\noexpand\@nil
+ \expandonce{\csname#1\endcsname}\expandonce{\csname#1\endcsname}%
+ \noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkescactual####1\noexpand\@nil
+ \noexpand\?\noexpand\?\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkactual####1\noexpand\@nil
+ \noexpand?\noexpand?\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkbar####1\noexpand\@nil
+ \noexpand|\noexpand|\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkescbar####1\noexpand\@nil
+ \noexpand\|\noexpand\|\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checklevel####1\noexpand\@nil
+ \noexpand!\noexpand!\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkesclevel####1\noexpand\@nil
+ \noexpand\!\noexpand\!\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkesc####1\noexpand\@nil
+ \@backslashchar\@backslashchar\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ }%
+ }%
+ \@gls@docheckquotedef
+ \edef\@gls@docheckquotedef{%
+ \noexpand\def\noexpand\@gls@checkescquote####1%
+ \expandonce{\csname#1\endcsname}####2\expandonce{\csname#1\endcsname}%
+ ####3\noexpand\null{%
+ \noexpand\@gls@tmpb=\noexpand\expandafter{\noexpand\@gls@checkedmkidx}%
+ \noexpand\toks@={####1}%
+ \noexpand\ifx\noexpand\null####2\noexpand\null
+ \noexpand\ifx\noexpand\null####3\noexpand\null
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@}%
+ \noexpand\def\noexpand\@@gls@checkescquote{\noexpand\relax}%
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \noexpand\@gls@quotechar\noexpand\string\expandonce{%
+ \csname#1\endcsname}\noexpand\@gls@quotechar
+ \noexpand\@gls@quotechar\noexpand\string\expandonce{%
+ \csname#1\endcsname}\noexpand\@gls@quotechar}%
+ \noexpand\def\noexpand\@@gls@checkescquote{%
+ \noexpand\@gls@checkescquote####3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \noexpand\@gls@quotechar\noexpand\string
+ \expandonce{\csname#1\endcsname}\noexpand\@gls@quotechar}%
+ \noexpand\ifx\noexpand\null####3\noexpand\null
+ \noexpand\def\noexpand\@@gls@checkescquote{%
+ \noexpand\@gls@checkescquote####2\expandonce{\csname#1\endcsname}%
+ \expandonce{\csname#1\endcsname}\noexpand\null}%
+ \noexpand\else
+ \noexpand\def\noexpand\@@gls@checkescquote{%
+ \noexpand\@gls@checkescquote####2\expandonce{\csname#1\endcsname}%
+ ####3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\fi
+ \noexpand\@@gls@checkescquote
+ }%
+ }%
+ \@gls@docheckquotedef
+ }
+ \newcommand*{\gls@nosetquote}[1]{\PackageError{glossaries}%
+ {\string\GlsSetQuote\space not permitted here}%
+ {Move \string\GlsSetQuote\space earlier in the preamble, as
+ soon as possible after glossaries.sty has been loaded}}
+\fi
+\newcommand*{\@gls@extramakeindexopts}[1]{}
+\newcommand{\noist}{%
+ \@gls@addpredefinedattributes
+ \let\writeist\relax
+}
+\newcommand{\@gls@noist@toolate}{%
+ \GlossariesWarning{too late to use \string\noist. The style file
+has already been written}%
+}
+\newcommand*{\@makeglossary}[1]{%
+ \ifglossaryexists{#1}%
+ {%
+ \ifglssavewrites
+ \expandafter\newtoks\csname glo@#1@filetok\endcsname
+ \else
+ \expandafter\newwrite\csname glo@#1@file\endcsname
+ \expandafter\@glsopenfile\csname glo@#1@file\endcsname{#1}%
+ \fi
+ \@gls@renewglossary
+ \writeist
+ }%
+ {%
+ \PackageError{glossaries}%
+ {Glossary type `#1' not defined}%
+ {New glossaries must be defined before using \string\makeglossaries}%
+ }%
+}
+\newcommand*{\@glsopenfile}[2]{%
+ \immediate\openout#1=\jobname.\csname @glotype@#2@out\endcsname
+ \PackageInfo{glossaries}{Writing glossary file
+ \jobname.\csname @glotype@#2@out\endcsname}%
+}
+\newcommand*{\@closegls}[1]{%
+ \closeout\csname glo@#1@file\endcsname
+}
+\ifglsxindy
+ \newcommand*{\@gls@automake}[1]{%
+ \ifglossaryexists{#1}
+ {%
+ \@closegls{#1}%
+ \ifdefstring{\glsorder}{letter}%
+ {\def\@gls@order{-M ord/letorder }}%
+ {\let\@gls@order\@empty}%
+ \gls@xdy@set@lang{#1}%
+ \ifdefvoid\gls@codepage
+ {\let\@@gls@codepage\@empty}%
+ {\def\@@gls@codepage{-C \gls@codepage\space}}%
+ \edef\@gls@dothiswrite{\noexpand\write18{xindy
+ -I xindy
+ \@gls@order
+ -L \@gls@langmod\space
+ -M \gls@istfilebase\space
+ \@@gls@codepage
+ -t \jobname.\csuse{@glotype@#1@log}
+ -o \jobname.\csuse{@glotype@#1@in}
+ \jobname.\csuse{@glotype@#1@out}}%
+ }%
+ \@gls@dothiswrite
+ }%
+ {%
+ \GlossariesWarning{Can't make glossary `#1', it doesn't exist}%
+ }%
+ }
+\else
+ \newcommand*{\@gls@automake}[1]{%
+ \ifglossaryexists{#1}
+ {%
+ \@closegls{#1}%
+ \ifdefstring{\glsorder}{letter}%
+ {\def\@gls@order{-l }}%
+ {\let\@gls@order\@empty}%
+ \edef\@gls@dothiswrite{\noexpand\write18{makeindex \@gls@order
+ -s \istfilename\space
+ -t \jobname.\csuse{@glotype@#1@log}
+ -o \jobname.\csuse{@glotype@#1@in}
+ \jobname.\csuse{@glotype@#1@out}}%
+ }%
+ \@gls@dothiswrite
+ }%
+ {%
+ \GlossariesWarning{Can't make glossary `#1', it doesn't exist}%
+ }%
+ }
+\fi
+\ifglsxindy
+ \newcommand*{\@gls@automake@immediate}[1]{%
+ \ifglossaryexists{#1}
+ {%
+ \IfFileExists{\jobname.\csuse{@glotype@#1@out}}%
+ {%
+ \ifdefstring{\glsorder}{letter}%
+ {\def\@gls@order{-M ord/letorder }}%
+ {\let\@gls@order\@empty}%
+ \gls@xdy@set@lang{#1}%
+ \ifdefvoid\gls@codepage
+ {\let\@@gls@codepage\@empty}%
+ {\def\@@gls@codepage{-C \gls@codepage\space}}%
+ \edef\@gls@dothiswrite{\noexpand\immediate\noexpand\write18{xindy
+ -I xindy
+ \@gls@order
+ -L \@gls@langmod\space
+ -M \gls@istfilebase\space
+ \@@gls@codepage
+ -t \jobname.\csuse{@glotype@#1@log}
+ -o \jobname.\csuse{@glotype@#1@in}
+ \jobname.\csuse{@glotype@#1@out}}%
+ }%
+ \@gls@dothiswrite
+ }%
+ {\GlossariesWarning{can't automake `#1': \jobname.\csuse{@glotype@#1@out}
+ doesn't exist. Rerun may be required}}%
+ }%
+ {%
+ \GlossariesWarning{Can't make glossary `#1', it doesn't exist}%
+ }%
+ }
+\else
+ \newcommand*{\@gls@automake@immediate}[1]{%
+ \ifglossaryexists{#1}
+ {%
+ \IfFileExists{\jobname.\csuse{@glotype@#1@out}}%
+ {%
+ \ifdefstring{\glsorder}{letter}%
+ {\def\@gls@order{-l }}%
+ {\let\@gls@order\@empty}%
+ \edef\@gls@dothiswrite{\noexpand\immediate\noexpand\write18{makeindex \@gls@order
+ -s \istfilename\space
+ -t \jobname.\csuse{@glotype@#1@log}
+ -o \jobname.\csuse{@glotype@#1@in}
+ \jobname.\csuse{@glotype@#1@out}}%
+ }%
+ \@gls@dothiswrite
+ }%
+ {\GlossariesWarning{can't automake `#1': \jobname.\csuse{@glotype@#1@out}
+ doesn't exist. Rerun may be required}}%
+ }%
+ {%
+ \GlossariesWarning{Can't make glossary `#1', it doesn't exist}%
+ }%
+ }
+\fi
+\newcommand*{\@warn@nomakeglossaries}{}
+\newcommand*{\warn@nomakeglossaries}{\@warn@nomakeglossaries}
+\newcommand{\@gls@automake@types}{\@glo@types}
+\newcommand{\@gls@@automake@immediate}{%
+ \ifnum\gls@automake@nr=2\relax
+ \protected@edef\gls@tmp{\@gls@automake@types}%
+ \@for\@gls@type:=\gls@tmp\do{%
+ \ifdefempty{\@gls@type}{}%
+ {\@gls@automake@immediate{\@gls@type}}%
+ }%
+ \glsautomakefalse
+ \renewcommand*{\@gls@doautomake}{}%
+ \else
+ \ifdefempty\gls@automake@makegloss{}%
+ {%
+ \IfFileExists{\jobname.aux}%
+ {\immediate\write18{\gls@automake@makegloss\space \jobname}}{}%
+ \glsautomakefalse
+ \renewcommand*{\@gls@doautomake}{}%
+ }%
+ \fi
+}
+\newcommand*{\makeglossaries}{%
+ \ifglsxindy
+ \def\glsindexingsetting{xindy}%
+ \else
+ \def\glsindexingsetting{makeindex}%
+ \fi
+ \@domakeglossaries
+ {%
+ \@gls@@automake@immediate
+ \ifundef{\glswrite}{\newwrite\glswrite}{}%
+ \protected@write\@auxout{}{\string\providecommand\string\@glsorder[1]{}}
+ \protected@write\@auxout{}{\string\providecommand\string\@istfilename[1]{}}
+ \ifundef\@@gls@extramakeindexopts
+ {}%
+ {%
+ \protected@write\@auxout{}{\string\providecommand
+ \string\@gls@extramakeindexopts[1]{}}
+ \protected@write\@auxout{}{\string\@gls@extramakeindexopts
+ {\@@gls@extramakeindexopts}}%
+ }%
+ \protected@write\@auxout{}{\string\@istfilename{\istfilename}}%
+ \protected@write\@auxout{}{\string\@glsorder{\glsorder}}
+ \@for\@glo@type:=\@glo@types\do{%
+ \ifthenelse{\equal{\@glo@type}{}}{}{%
+ \@makeglossary{\@glo@type}}%
+ }%
+ \renewcommand*\newglossary[4][]{%
+ \PackageError{glossaries}{New glossaries
+ must be created before \string\makeglossaries}{You need
+ to move \string\makeglossaries\space after all your
+ \string\newglossary\space commands}}%
+ \let\@makeglossary\@gobble
+ \let\makeglossaries\relax
+ \@disable@onlypremakeg
+ \let\gls@checkseeallowed\relax
+ \let\warn@nomakeglossaries\relax
+ \let\warn@noprintglossary\@makeglossaries@warn@noprintglossary
+ \ifglssavenumberlist
+ \edef\@gls@dodeflistparser{\noexpand\DeclareListParser
+ {\noexpand\glsnumlistparser}{\delimN}}%
+ \@gls@dodeflistparser
+ \fi
+ \let\makenoidxglossaries\@no@makeglossaries
+ \renewcommand*{\@printgloss@setsort}{%
+ \let\@glo@assign@sortkey\@glo@no@assign@sortkey
+ }%
+ \ifglsautomake
+ \renewcommand*{\@gls@doautomake}{%
+ \protected@edef\gls@tmp{\@gls@automake@types}%
+ \@for\@gls@type:=\gls@tmp\do{%
+ \ifdefempty{\@gls@type}{}%
+ {\@gls@automake{\@gls@type}}%
+ }%
+ }%
+ \fi
+ \@glo@check@sortallowed\makeglossaries
+ }%
+}
+\@onlypreamble{\makeglossaries}
+\newcommand\@makeglossaries@warn@noprintglossary{%
+ \ifdefstring{\@glo@types}{,}%
+ {%
+ \GlossariesWarningNoLine{No glossaries have been defined}%
+ }%
+ {%
+ \GlossariesWarningNoLine{No \string\printglossary\space
+ or \string\printglossaries\space
+ found. ^^J(Remove \string\makeglossaries\space if you
+ don't want any glossaries.) ^^JThis document will not
+ have a glossary}%
+ }%
+}%
+\AtEndDocument{%
+ \warn@nomakeglossaries
+ \warn@noprintglossary
+}
+\newcommand*{\makenoidxglossaries}{%
+ \def\glsindexingsetting{noidx}%
+ \@domakeglossaries
+ {%
+ \renewcommand{\@gls@noref@warn}[1]{%
+ \GlossariesWarning{Empty glossary for
+ \string\printnoidxglossary[type={##1}].
+ Rerun may be required (or you may have forgotten to use
+ commands like \string\gls)}%
+ }%
+ \let\@gls@checkmkidxchars\@gobble
+ \glsesclocationsfalse
+ \let\@@do@@wrglossary\gls@noidxglossary
+ \let\@gls@getgrouptitle\@gls@noidx@getgrouptitle
+ \let\gls@checkseeallowed\relax
+ \renewcommand{\@do@seeglossary}[2]{%
+ \protected@edef\@gls@label{\glsdetoklabel{##1}}%
+ \protected@write\@auxout{}{%
+ \string\@gls@reference
+ {\csname glo@\@gls@label @type\endcsname}%
+ {\@gls@label}%
+ {%
+ \string\glsseeformat##2{}%
+ }%
+ }%
+ }%
+ \AtBeginDocument
+ {%
+ \write\@auxout{\string\providecommand\string\@gls@reference[3]{}}%
+ }%
+ \def\warn@noprintglossary{%
+ \GlossariesWarningNoLine{No \string\printnoidxglossary\space
+ or \string\printnoidxglossaries ^^J
+ found. (Remove \string\makenoidxglossaries\space if you
+ don't want any glossaries.)^^JThis document will not have a glossary}%
+ }%
+ \let\warn@nomakeglossaries\relax
+ \let\makeglossaries\@no@makeglossaries
+ \renewcommand*{\@printgloss@setsort}{%
+ \let\@glo@assign@sortkey\@@glo@assign@sortkey
+ \def\@glo@sorttype{\@glo@default@sorttype}%
+ }%
+ \renewcommand*\new@glossaryentry[2]{%
+ \PackageError{glossaries}{Glossary entries must be
+ defined in the preamble^^Jwhen you use
+ \string\makenoidxglossaries}%
+ {Either move your definitions to the preamble or use
+ \string\makeglossaries}%
+ }%
+ \renewcommand*{\glsentrynumberlist}[1]{%
+ \letcs{\@gls@loclist}{glo@\glsdetoklabel{##1}@loclist}%
+ \ifdef\@gls@loclist
+ {%
+ \glsnoidxloclist{\@gls@loclist}%
+ }%
+ {%
+ ??\glsdoifexists{##1}%
+ {%
+ \GlossariesWarning{Missing location list for `##1'. Either
+ a rerun is required or you haven't referenced the entry}%
+ }%
+ }%
+ }%
+ \renewcommand*{\glsdisplaynumberlist}[1]{%
+ \letcs{\@gls@loclist}{glo@\glsdetoklabel{##1}@loclist}%
+ \ifdef\@gls@loclist
+ {%
+ \def\@gls@noidxloclist@sep{%
+ \def\@gls@noidxloclist@sep{%
+ \def\@gls@noidxloclist@sep{%
+ \glsnumlistsep
+ }%
+ \def\@gls@noidxloclist@finalsep{\glsnumlistlastsep}%
+ }%
+ }%
+ \def\@gls@noidxloclist@finalsep{}%
+ \def\@gls@noidxloclist@prev{}%
+ \forlistloop{\glsnoidxdisplayloclisthandler}{\@gls@loclist}%
+ \@gls@noidxloclist@finalsep
+ \@gls@noidxloclist@prev
+ }%
+ {%
+ ??\glsdoifexists{##1}%
+ {%
+ \GlossariesWarning{Missing location list for `##1'. Either
+ a rerun is required or you haven't referenced the entry}%
+ }%
+ }%
+ }%
+ \renewcommand*{\glsnumberlistloop}[3]{%
+ \letcs{\@gls@loclist}{glo@\glsdetoklabel{##1}@loclist}%
+ \let\@gls@org@glsnoidxdisplayloc\glsnoidxdisplayloc
+ \let\@gls@org@glsseeformat\glsseeformat
+ \let\glsnoidxdisplayloc##2\relax
+ \let\glsseeformat##3\relax
+ \ifdef\@gls@loclist
+ {%
+ \forlistloop{\glsnoidxnumberlistloophandler}{\@gls@loclist}%
+ }%
+ {%
+ ??\glsdoifexists{##1}%
+ {%
+ \GlossariesWarning{Missing location list for `##1'. Either
+ a rerun is required or you haven't referenced the entry}%
+ }%
+ }%
+ \let\glsnoidxdisplayloc\@gls@org@glsnoidxdisplayloc
+ \let\glsseeformat\@gls@org@glsseeformat
+ }%
+ \let\@@gls@sanitizesort\@gls@noidx@sanitizesort
+ \let\@@gls@nosanitizesort\@@gls@noidx@nosanitizesort
+ \@gls@noidx@setsanitizesort
+ \@glo@check@sortallowed\makenoidxglossaries
+ \let\@gls@savenonumberlist\gls@noidx@nonumberlist
+ }%
+}
+\@onlypreamble{\makenoidxglossaries}
+\newcommand*{\glsnumberlistloop}[3]{%
+ \PackageError{glossaries}{\string\glsnumberlistloop\space
+ only works with \string\makenoidxglossaries}{}%
+}
+\newcommand*{\glsnoidxnumberlistloophandler}[1]{%
+ #1%
+}
+\newcommand*{\@no@makeglossaries}{%
+ \PackageError{glossaries}{You can't use both
+ \string\makeglossaries\space and \string\makenoidxglossaries}%
+ {Either use one or other (or none) of those commands but not both
+ together.}%
+}
+\newcommand{\@gls@noref@warn}[1]{%
+ \GlossariesWarning{\string\makenoidxglossaries\space
+ is required to make \string\printnoidxglossary[type={#1}] work}%
+}
+\newcommand*{\gls@noidxglossary}{%
+ \protected@write\@auxout{\glswrglossdisablelocationcmds}{%
+ \string\@gls@reference
+ {\csname glo@\@gls@label @type\endcsname}%
+ {\@gls@label}%
+ {\string\glsnoidxdisplayloc
+ {\@glo@counterprefix}%
+ {\@gls@counter}%
+ {\@glsnumberformat}%
+ {\@glslocref}%
+ }%
+ }%
+}
+\AtEndDocument{%
+ \glswritefiles
+}
+\newcommand*{\@glswritefiles}{%
+ \forallglossaries{\@glo@type}{%
+ \ifcsundef{glo@\@glo@type @filetok}%
+ {%
+ \def\gls@tmp{}%
+ }%
+ {%
+ \edef\gls@tmp{\expandafter\the
+ \csname glo@\@glo@type @filetok\endcsname}%
+ }%
+ \ifx\gls@tmp\@empty
+ \ifx\@glo@type\glsdefaulttype
+ \GlossariesWarningNoLine{Glossary `\@glo@type' has no
+ entries.^^JRemember to use package option `nomain' if
+you
+ don't want to^^Juse the main glossary}%
+ \else
+ \GlossariesWarningNoLine{Glossary `\@glo@type' has no
+ entries}%
+ \fi
+ \else
+ \@glsopenfile{\glswrite}{\@glo@type}%
+ \immediate\write\glswrite{%
+ \expandafter\the
+ \csname glo@\@glo@type @filetok\endcsname}%
+ \immediate\closeout\glswrite
+ \fi
+ }%
+}
+\newcommand*{\gls@glossary}[1]{%
+ \@gls@glossary{#1}%
+}
+\newcommand*{\@gls@glossary}[2]{%
+ \if@gls@debug
+ \PackageInfo{glossaries}{wrglossary(#1)(#2)}%
+ \fi
+}
+\newcommand{\@gls@renewglossary}{%
+ \gdef\@gls@glossary##1{\@bsphack\begingroup\gls@wrglossary{##1}}%
+ \let\@gls@renewglossary\@empty
+}
+\newcommand*{\gls@wrglossary}[2]{%
+ \ifglssavewrites
+ \protected@edef\@gls@tmp{\the\csname glo@#1@filetok\endcsname#2}%
+ \expandafter\global\expandafter\csname glo@#1@filetok\endcsname
+ \expandafter{\@gls@tmp^^J}%
+ \else
+ \ifcsdef{glo@#1@file}%
+ {%
+ \expandafter\protected@write\csname glo@#1@file\endcsname{%
+ \gls@disablepagerefexpansion}{#2}%
+ }%
+ {%
+ \ifignoredglossary{#1}{}%
+ {%
+ \GlossariesWarning{No file defined for glossary `#1'}%
+ }%
+ }%
+ \fi
+ \endgroup\@esphack
+}
+\newcommand*{\@do@wrglossary}[1]{%
+ \gls@ifnotmeasuring{\glswriteentry{#1}{\@@do@wrglossary{#1}}}%
+}
+\newcommand*{\glswriteentry}[2]{%
+ \ifglsindexonlyfirst
+ \ifglsused{#1}{}{#2}%
+ \else
+ #2%
+ \fi
+}
+\newcommand{\gls@protected@pagefmts}{\gls@numberpage,\gls@alphpage,%
+ \gls@Alphpage,\gls@romanpage,\gls@Romanpage,\gls@arabicpage}
+\newcommand*{\gls@disablepagerefexpansion}{%
+ \glswrglossdisablelocationcmds
+ \ifglsesclocations
+ \@for\@gls@this:=\gls@protected@pagefmts\do
+ {%
+ \expandafter\let\@gls@this\relax
+ }%
+ \fi
+}
+\newcommand{\glswrglossdisablelocationcmds}{}
+\newcommand*{\gls@alphpage}{\@alph\c@page}
+\newcommand*{\gls@Alphpage}{\@Alph\c@page}
+\newcommand*{\gls@numberpage}{\number\c@page}
+\newcommand*{\gls@arabicpage}{\@arabic\c@page}
+\newcommand*{\gls@romanpage}{\romannumeral\c@page}
+\newcommand*{\gls@Romanpage}{\@Roman\c@page}
+\newcommand*{\glsaddprotectedpagefmt}[1]{%
+ \ifglsesclocations
+ \protected@eappto\gls@protected@pagefmts{,\expandonce{\csname gls#1page\endcsname}}%
+ \csedef{gls#1page}{\expandonce{\csname#1\endcsname}\noexpand\c@page}%
+ \protected@eappto\@wrglossarynumberhook{%
+ \noexpand\let\expandonce{\csname org@gls#1\endcsname}%
+ \expandonce{\csname#1\endcsname}%
+ \noexpand\def\expandonce{\csname#1\endcsname}{%
+ \noexpand\@wrglossary@pageformat
+ \expandonce{\csname gls#1page\endcsname}%
+ \expandonce{\csname org@gls#1\endcsname}%
+ }%
+ }%
+ \else
+ \GlsWarnAddProtectedPageFmt
+ \fi
+}
+\newcommand{\GlsWarnAddProtectedPageFmt}{%
+ \GlossariesWarning{\string\glsaddprotectedpagefmt\space has no
+ effect with esclocations=false}%
+}
+\newcommand*\@wrglossarynumberhook{}
+\newcommand{\@wrglossary@pageformat}[3]{%
+ \ifx#3\c@page #1\else #2#3\fi
+}
+\newcommand*{\@@do@wrglossary}[1]{%
+ \ifglsesclocations
+ \@@do@esc@wrglossary{#1}%
+ \else
+ \@@do@noesc@wrglossary{#1}%
+ \fi
+}
+\newcommand{\glswrglossdisableanchorcmds}{\let\glstexorpdfstring\@secondoftwo}
+\ifdef\texorpdfstring
+ {\appto\glswrglossdisableanchorcmds{\let\texorpdfstring\@secondoftwo}}{}
+\ifdef\pdfstringdefPreHook
+ {\appto\glswrglossdisableanchorcmds{\pdfstringdefPreHook}}{}
+\newcommand{\glswrglosslocationtarget}[1]{#1}
+\newcommand{\glswrglosslocationtextfmt}[1]{#1}
+\newcommand*{\@@do@noesc@wrglossary}[1]{%
+ \expandafter\def\expandafter\@glslocref\expandafter{\theglsentrycounter}%
+ \expandafter\def\expandafter\@glsHlocref\expandafter{\theHglsentrycounter}%
+ \ifx\@glsHlocref\@glslocref
+ \def\@glo@counterprefix{}%
+ \else
+ \@xp@gls@getcounterprefix{\@glslocref}{\@glsHlocref}%
+ \fi
+ \protected@edef\@gls@label{\glsdetoklabel{#1}}%
+ \@@do@@wrglossary
+}
+\newif\ifglswrallowprimitivemods
+\glswrallowprimitivemodsfalse
+\newcommand*{\@@do@esc@wrglossary}[1]{% please read documented code!
+ \begingroup
+ \let\gls@orgthe\the
+ \let\gls@orgnumber\number
+ \let\gls@orgarabic\@arabic
+ \let\gls@orgromannumeral\romannumeral
+ \let\gls@orgalph\@alph
+ \let\gls@orgAlph\@Alph
+ \let\gls@orgRoman\@Roman
+ \ifglswrallowprimitivemods
+ \def\gls@the##1{%
+ \ifx##1\c@page \gls@numberpage\else\gls@orgthe##1\fi}%
+ \def\the{\expandafter\gls@the}%
+ \def\gls@number##1{%
+ \ifx##1\c@page \gls@numberpage\else\gls@orgnumber##1\fi}%
+ \def\number{\expandafter\gls@number}%
+ \def\romannumeral##1{%
+ \ifx##1\c@page \gls@romanpage \else \gls@orgromannumeral##1\fi}%
+ \fi
+ \def\@arabic##1{%
+ \ifx##1\c@page \gls@arabicpage\else\gls@orgarabic##1\fi}%
+ \def\@Roman##1{%
+ \ifx##1\c@page \gls@Romanpage\else\gls@orgRoman##1\fi}%
+ \def\@alph##1{%
+ \ifx##1\c@page \gls@alphpage\else\gls@orgalph##1\fi}%
+ \def\@Alph##1{%
+ \ifx##1\c@page \gls@Alphpage\else\gls@orgAlph##1\fi}%
+ \@wrglossarynumberhook
+ \gls@disablepagerefexpansion
+ \protected@xdef\@glslocref{\theglsentrycounter}%
+ \endgroup
+ \@gls@checkmkidxchars\@glslocref
+ \expandafter\ifx\theHglsentrycounter\theglsentrycounter\relax
+ \def\@glo@counterprefix{}%
+ \else
+ \protected@edef\@glsHlocref{\theHglsentrycounter}%
+ \@gls@checkmkidxchars\@glsHlocref
+ \@xp@gls@getcounterprefix{\@glslocref}{\@glsHlocref}%
+ \fi
+ \protected@edef\@gls@label{\glsdetoklabel{#1}}%
+ \@@do@@wrglossary
+}
+\newcommand*{\@@do@@wrglossary}{%
+ \ifglsxindy
+ \expandafter\@glo@check@mkidxrangechar\@glsnumberformat\@nil
+ \def\@glo@range{}%
+ \expandafter\if\@glo@prefix(\relax
+ \def\@glo@range{:open-range}%
+ \else
+ \expandafter\if\@glo@prefix)\relax
+ \def\@glo@range{:close-range}%
+ \fi
+ \fi
+ \gls@glossary{\csname glo@\@gls@label @type\endcsname}{%
+ (indexentry :tkey (\csname glo@\@gls@label @index\endcsname)
+ :locref \string"{\@glo@counterprefix}{\@glslocref}\string" %
+ :attr \string"\@gls@counter\@glo@suffix\string"
+ \@glo@range
+ )
+ }%
+ \else
+ \@set@glo@numformat{\@glo@numfmt}{\@gls@counter}{\@glsnumberformat}%
+ {\@glo@counterprefix}%
+ \gls@glossary{\csname glo@\@gls@label @type\endcsname}{%
+ \string\glossaryentry{\csname glo@\@gls@label @index\endcsname
+ \@gls@encapchar\@glo@numfmt}{\@glslocref}}%
+ \fi
+}
+\newcommand*\@xp@gls@getcounterprefix[2]{%
+ \bgroup
+ \glswrglossdisableanchorcmds
+ \protected@edef\@do@gls@getcounterprefix{%
+ \noexpand\egroup
+ \noexpand\@gls@getcounterprefix{#1}{#2}%
+ }%
+ \@do@gls@getcounterprefix
+}
+\newcommand*\@gls@getcounterprefix[2]{%
+ \def\@gls@thisloc{#1}\def\@gls@thisHloc{#2}%
+ \ifx\@gls@thisloc\@gls@thisHloc
+ \def\@glo@counterprefix{}%
+ \else
+ \def\@gls@get@counterprefix##1.#1##2\end@getprefix{%
+ \def\@glo@tmp{##2}%
+ \ifx\@glo@tmp\@empty
+ \def\@glo@counterprefix{}%
+ \else
+ \def\@glo@counterprefix{##1}%
+ \fi
+ }%
+ \@gls@get@counterprefix#2.#1\end@getprefix
+ \ifx\@glo@counterprefix\@empty
+ \GlossariesWarning{Hyper target `#2' can't be formed by
+ prefixing^^Jlocation `#1'. You need to modify the
+ definition of \string\theH\@gls@counter^^Jotherwise you
+ will get the warning: "`name{\@gls@counter.#1}' has been^^J
+ referenced but does not exist"}%
+ \fi
+ \fi
+}
+\newcommand{\@do@seeglossary}[2]{%
+\def\@gls@xref{#2}%
+\@onelevel@sanitize\@gls@xref
+\@gls@checkmkidxchars\@gls@xref
+\ifglsxindy
+ \gls@glossary{\csname glo@#1@type\endcsname}{%
+ (indexentry
+ :tkey (\csname glo@#1@index\endcsname)
+ :xref (\string"\@gls@xref\string")
+ :attr \string"see\string"
+ )
+ }%
+\else
+ \gls@glossary{\csname glo@#1@type\endcsname}{%
+ \string\glossaryentry{\csname glo@#1@index\endcsname
+ \@gls@encapchar glsseeformat\@gls@xref}{Z}}%
+\fi
+}
+\def\@gls@fixbraces#1#2#3\@nil{%
+ \ifx#2[\relax
+ \@@gls@fixbraces#1#2#3\@end@fixbraces
+ \else
+ \def#1{{#2#3}}%
+ \fi
+}
+\def\@@gls@fixbraces#1[#2]#3\@end@fixbraces{%
+ \def#1{[#2]{#3}}%
+}
+\newrobustcmd*{\glssee}[3][\seename]{%
+ \@do@seeglossary{#2}{[#1]{#3}}}
+\newcommand*{\@glssee}[3][\seename]{%
+ \glssee[#1]{#3}{#2}}
+\newrobustcmd*{\glsseeformat}[3][\seename]{%
+ \emph{#1} \glsseelist{#2}}
+\newrobustcmd*{\glsseelist}[1]{%
+ \let\@gls@dolast\relax
+ \let\@gls@donext\relax
+ \@for\@gls@thislabel:=#1\do{%
+ \ifx\@xfor@nextelement\@nnil
+ \@gls@dolast
+ \else
+ \@gls@donext
+ \fi
+ \expandafter\glsseeitem\expandafter{\@gls@thislabel}%
+ \let\@gls@dolast\glsseelastsep
+ \let\@gls@donext\glsseesep
+ }%
+}
+\newcommand*{\glsseelastsep}{\space\andname\space}
+\newcommand*{\glsseesep}{, }
+\newrobustcmd*{\glsseeitem}[1]{\glshyperlink[\glsseeitemformat{#1}]{#1}}
+\newcommand*{\glsseeitemformat}[1]{%
+ \ifglshasshort{#1}{\glsentrytext{#1}}{\glsentryname{#1}}%
+}
+\newcommand*{\gls@save@numberlist}[1]{%
+ \ifglssavenumberlist
+ \toks@{#1}%
+ \protected@edef\@do@writeaux@info{%
+ \noexpand\csgdef{glo@\glscurrententrylabel @numberlist}{\the\toks@}%
+ }%
+ \@onelevel@sanitize\@do@writeaux@info
+ \protected@write\@auxout{}{\@do@writeaux@info}%
+ \fi
+}
+\newcommand*{\warn@noprintglossary}{}%
+\ifcsundef{printglossary}{}%
+{%
+ \@gls@warnonglossdefined
+ \undef\printglossary
+}
+\newcommand*{\@printgloss@checkexists@noignored}[2]{%
+ \@ifglossaryexists{#1}%
+ {#2}%
+ {%
+ \ifignoredglossary{#1}%
+ {\GlossariesWarning{Glossary `#1' is an ignored glossary}}%
+ {\GlossariesWarning{Glossary `#1' doesn't exist}}%
+ }%
+}
+\newcommand*{\@printgloss@checkexists@allowignored}[2]{%
+ \s@ifglossaryexists{#1}%
+ {#2}%
+ {\GlossariesWarning{Glossary `#1' doesn't exist}}%
+}
+\let\@printgloss@checkexists\@printgloss@checkexists@noignored
+\newcommand*{\printglossary}[1][type=\glsdefaulttype]{%
+ \let\@printgloss@checkexists\@printgloss@checkexists@noignored
+ \@printglossary{#1}{\@print@glossary}%
+}
+\newcommand*{\printglossaries}{%
+ \forallglossaries{\@@glo@type}{\printglossary[type=\@@glo@type]}%
+}
+\newcommand*{\printnoidxglossary}[1][type=\glsdefaulttype]{%
+ \let\@printgloss@checkexists\@printgloss@checkexists@noignored
+ \@printglossary{#1}{\@print@noidx@glossary}%
+}
+\newcommand*{\printnoidxglossaries}{%
+ \forallglossaries{\@@glo@type}{\printnoidxglossary[type=\@@glo@type]}%
+}
+\newcommand*{\@printgloss@setsort}{}
+\newcommand*{\@gls@preglossaryhook}{}
+\newcommand{\@printglossary}[2]{%
+ \def\@glo@type{\glsdefaulttype}%
+ \def\glossarytitle{\csname @glotype@\@glo@type @title\endcsname}%
+ \def\glossarytoctitle{\glossarytitle}%
+ \let\org@glossarytitle\glossarytitle
+ \def\@glossarystyle{%
+ \ifx\@glossary@default@style\relax
+ \GlossariesWarning{No default glossary style provided \MessageBreak
+ for the glossary `\@glo@type'. \MessageBreak
+ Using fallback. \MessageBreak
+ To fix this set the style with \MessageBreak
+ \string\setglossarystyle\space or use the \MessageBreak
+ style key=value option}%
+ \fi
+ }%
+ \def\gls@dotoctitle{\glssettoctitle{\@glo@type}}%
+ \let\@org@glossaryentrynumbers\glossaryentrynumbers
+ \gls@printglossary@begin
+ \@printgloss@setsort
+ \setkeys{printgloss}{#1}%
+ \@printgloss@checkexists{\@glo@type}%
+ {%
+ \ifx\glossarytitle\org@glossarytitle
+ \else
+ \expandafter\let\csname @glotype@\@glo@type @title\endcsname
+ \glossarytitle
+ \fi
+ \let\currentglossary\@glo@type
+ \let\org@glossaryentrynumbers\glossaryentrynumbers
+ \let\glsnonextpages\@glsnonextpages
+ \let\glsnextpages\@glsnextpages
+ \let\nopostdesc\@nopostdesc
+ \gls@dotoctitle
+ \@glossarystyle
+ \let\gls@org@glossaryentryfield\glossentry
+ \let\gls@org@glossarysubentryfield\subglossentry
+ \renewcommand{\glossentry}[1]{%
+ \protected@xdef\glscurrententrylabel{\glsdetoklabel{##1}}%
+ \gls@org@glossaryentryfield{##1}%
+ }%
+ \renewcommand{\subglossentry}[2]{%
+ \protected@xdef\glscurrententrylabel{\glsdetoklabel{##2}}%
+ \gls@org@glossarysubentryfield{##1}{##2}%
+ }%
+ \@gls@preglossaryhook
+ #2%
+ }%
+ \gls@printglossary@end
+ \global\let\glossaryentrynumbers\@org@glossaryentrynumbers
+ \global\let\warn@noprintglossary\relax
+}
+\newcommand{\gls@printglossary@begin}{\begingroup}
+\newcommand{\gls@printglossary@end}{%
+ \expandafter\endgroup\if@endpe\@doendpe\fi
+}
+\newcommand{\@print@glossary}{%
+ \makeatletter
+ \@input@{\jobname.\csname @glotype@\@glo@type @in\endcsname}%
+ \IfFileExists{\jobname.\csname @glotype@\@glo@type @in\endcsname}%
+ {}%
+ {\null}%
+ \ifglsxindy
+ \gls@xdy@set@lang{\@glo@type}%
+ \edef\@do@auxoutstuff{%
+ \noexpand\AtEndDocument{%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\providecommand\string\@xdylanguage[2]{}}%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\@xdylanguage{\@glo@type}{\@gls@langmod}}%
+ }%
+ }%
+ \@do@auxoutstuff
+ \edef\@do@auxoutstuff{%
+ \noexpand\AtEndDocument{%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\providecommand\string\@gls@codepage[2]{}}%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\@gls@codepage{\@glo@type}{\gls@codepage}}%
+ }%
+ }%
+ \@do@auxoutstuff
+ \fi
+ \renewcommand*{\@warn@nomakeglossaries}{%
+ \GlossariesWarningNoLine{\string\makeglossaries\space
+ hasn't been used,^^Jthe glossaries will not be updated}%
+ }%
+}
+\newcommand*{\@glo@sortentries}[2]{%
+ \glosortentrieswarning
+ \def\@glo@sortinglist{}%
+ \def\@glo@sortinghandler{#1}%
+ \protected@edef\@glo@type{#2}%
+ \forlistcsloop{\@glo@do@sortentries}{@glsref@#2}%
+ \csdef{@glsref@#2}{}%
+ \@for\@this@label:=\@glo@sortinglist\do{%
+ \xifinlistcs{\@this@label}{@glsref@#2}%
+ {}%
+ {%
+ \listcsxadd{@glsref@#2}{\@this@label}%
+ }%
+ \ifcsdef{@glo@sortingchildren@\@this@label}%
+ {%
+ \@glo@addchildren{#2}{\@this@label}%
+ }%
+ {}%
+ }%
+}
+\newcommand*{\@glo@addchildren}[2]{%
+ \bgroup
+ \letcs{\@glo@childlist}{@glo@sortingchildren@#2}%
+ \@for\@this@childlabel:=\@glo@childlist\do
+ {%
+ \xifinlistcs{\@this@childlabel}{@glsref@#1}%
+ {}%
+ {%
+ \listcsxadd{@glsref@#1}{\@this@childlabel}%
+ }%
+ \ifcsdef{@glo@sortingchildren@\@this@childlabel}%
+ {%
+ \@glo@addchildren{#1}{\@this@childlabel}%
+ }%
+ {%
+ }%
+ }%
+ \egroup
+}
+\newcommand*{\@glo@do@sortentries}[1]{%
+ \ifglshasparent{#1}%
+ {%
+ \protected@edef\@glo@parent{\csuse{glo@\glsdetoklabel{#1}@parent}}%
+ \ifcsundef{@glo@sortingchildren@\@glo@parent}%
+ {%
+ \csdef{@glo@sortingchildren@\@glo@parent}{}%
+ }%
+ {}%
+ \expandafter\@glo@sortedinsert
+ \csname @glo@sortingchildren@\@glo@parent\endcsname{#1}%
+ \xifinlistcs{\@glo@parent}{@glsref@\@glo@type}%
+ {%
+ }%
+ {%
+ \expandafter\@glo@do@sortentries\expandafter{\@glo@parent}%
+ }%
+ }%
+ {%
+ \@glo@sortedinsert{\@glo@sortinglist}{#1}%
+ }%
+}
+\newcommand*{\@glo@sortedinsert}[2]{%
+ \dtl@insertinto{#2}{#1}{\@glo@sortinghandler}%
+}%
+\newcommand*{\@glo@sorthandler@word}[2]{%
+ \letcs\@gls@sort@A{glo@\glsdetoklabel{#1}@sort}%
+ \letcs\@gls@sort@B{glo@\glsdetoklabel{#2}@sort}%
+ \edef\glo@do@compare{%
+ \noexpand\dtlwordindexcompare{\noexpand\dtl@sortresult}%
+ {\expandonce\@gls@sort@B}%
+ {\expandonce\@gls@sort@A}%
+ }%
+ \glo@do@compare
+}
+\newcommand*{\@glo@sorthandler@letter}[2]{%
+ \letcs\@gls@sort@A{glo@\glsdetoklabel{#1}@sort}%
+ \letcs\@gls@sort@B{glo@\glsdetoklabel{#2}@sort}%
+ \edef\glo@do@compare{%
+ \noexpand\dtlletterindexcompare{\noexpand\dtl@sortresult}%
+ {\expandonce\@gls@sort@B}%
+ {\expandonce\@gls@sort@A}%
+ }%
+ \glo@do@compare
+}
+\newcommand*{\@glo@sorthandler@case}[2]{%
+ \letcs\@gls@sort@A{glo@\glsdetoklabel{#1}@sort}%
+ \letcs\@gls@sort@B{glo@\glsdetoklabel{#2}@sort}%
+ \edef\glo@do@compare{%
+ \noexpand\dtlcompare{\noexpand\dtl@sortresult}%
+ {\expandonce\@gls@sort@B}%
+ {\expandonce\@gls@sort@A}%
+ }%
+ \glo@do@compare
+}
+\newcommand*{\@glo@sorthandler@nocase}[2]{%
+ \letcs\@gls@sort@A{glo@\glsdetoklabel{#1}@sort}%
+ \letcs\@gls@sort@B{glo@\glsdetoklabel{#2}@sort}%
+ \edef\glo@do@compare{%
+ \noexpand\dtlicompare{\noexpand\dtl@sortresult}%
+ {\expandonce\@gls@sort@B}%
+ {\expandonce\@gls@sort@A}%
+ }%
+ \glo@do@compare
+}
+\newcommand*{\@glo@sortmacro@word}[1]{%
+ \ifdefstring{\@glo@default@sorttype}{standard}%
+ {%
+ \@glo@sortentries{\@glo@sorthandler@word}{#1}%
+ }%
+ {%
+ \PackageError{glossaries}{Conflicting sort options:^^J
+ \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J
+ \string\printnoidxglossary[sort=word]}{}%
+ }%
+}
+\newcommand*{\@glo@sortmacro@letter}[1]{%
+ \ifdefstring{\@glo@default@sorttype}{standard}%
+ {%
+ \@glo@sortentries{\@glo@sorthandler@letter}{#1}%
+ }%
+ {%
+ \PackageError{glossaries}{Conflicting sort options:^^J
+ \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J
+ \string\printnoidxglossary[sort=letter]}{}%
+ }%
+}
+\newcommand*{\@glo@sortmacro@standard}[1]{%
+ \ifdefstring{\@glo@default@sorttype}{standard}%
+ {%
+ \ifcsdef{@glo@sorthandler@\glsorder}%
+ {%
+ \@glo@sortentries{\csuse{@glo@sorthandler@\glsorder}}{#1}%
+ }%
+ {%
+ \PackageError{glossaries}{Unknown sort handler `\glsorder'}{}%
+ }%
+ }%
+ {%
+ \PackageError{glossaries}{Conflicting sort options:^^J
+ \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J
+ \string\printnoidxglossary[sort=standard]}{}%
+ }%
+}
+\newcommand*{\@glo@sortmacro@case}[1]{%
+ \ifdefstring{\@glo@default@sorttype}{standard}%
+ {%
+ \@glo@sortentries{\@glo@sorthandler@case}{#1}%
+ }%
+ {%
+ \PackageError{glossaries}{Conflicting sort options:^^J
+ \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J
+ \string\printnoidxglossary[sort=case]}{}%
+ }%
+}
+\newcommand*{\@glo@sortmacro@nocase}[1]{%
+ \ifdefstring{\@glo@default@sorttype}{standard}%
+ {%
+ \@glo@sortentries{\@glo@sorthandler@nocase}{#1}%
+ }%
+ {%
+ \PackageError{glossaries}{Conflicting sort options:^^J
+ \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J
+ \string\printnoidxglossary[sort=nocase]}{}%
+ }%
+}
+\newcommand*{\@glo@sortmacro@def}[1]{%
+ \def\@glo@sortinglist{}%
+ \forglsentries[#1]{\@gls@thislabel}%
+ {%
+ \xifinlistcs{\@gls@thislabel}{@glsref@#1}%
+ {%
+ \listeadd{\@glo@sortinglist}{\@gls@thislabel}%
+ }%
+ {%
+ }%
+ }%
+ \cslet{@glsref@#1}{\@glo@sortinglist}%
+}
+\newcommand*{\@glo@sortmacro@def@do}[1]{%
+ \ifinlistcs{#1}{@glsref@\@glo@type}%
+ {}%
+ {%
+ \listcsadd{@glsref@\@glo@type}{#1}%
+ }%
+ \ifcsdef{@glo@sortingchildren@#1}%
+ {%
+ \@glo@addchildren{\@glo@type}{#1}%
+ }%
+ {}%
+}
+\newcommand*{\@glo@sortmacro@use}[1]{}
+\newcommand*{\@print@noidx@glossary}{%
+ \ifcsdef{@glsref@\@glo@type}%
+ {%
+ \ifcsdef{@glo@sortmacro@\@glo@sorttype}%
+ {%
+ \csuse{@glo@sortmacro@\@glo@sorttype}{\@glo@type}%
+ }%
+ {%
+ \PackageError{glossaries}{Unknown sort handler `\@glo@sorttype'}{}%
+ }%
+ \glossarysection[\glossarytoctitle]{\glossarytitle}%
+ \glossarypreamble
+ \def\@gls@currentlettergroup{}%
+ \begin{theglossary}%
+ \glossaryheader
+ \glsresetentrylist
+ \forlistcsloop{\@gls@noidx@do}{@glsref@\@glo@type}%
+ \end{theglossary}%
+ \glossarypostamble
+ }%
+ {%
+ \@gls@noref@warn{\@glo@type}%
+ }%
+}
+\def\glo@grabfirst#1#2\@nil{%
+ \def\@gls@firsttok{#1}%
+ \ifdefempty\@gls@firsttok
+ {%
+ \def\@glo@thislettergrp{0}%
+ }%
+ {%
+ \@onelevel@sanitize\@gls@firsttok
+ \expandafter\@glo@grabfirst\@gls@firsttok{}{}\@nil
+ }%
+}
+\def\@glo@grabfirst#1#2\@nil{%
+ \ifdefempty\@glo@thislettergrp
+ {%
+ \def\@glo@thislettergrp{glssymbols}%
+ }%
+ {%
+ \count@=\uccode`#1\relax
+ \ifnum\count@=0\relax
+ \def\@glo@thislettergrp{glssymbols}%
+ \else
+ \ifdefstring\@glo@sorttype{case}%
+ {%
+ \count@=`#1\relax
+ }%
+ {%
+ }%
+ \edef\@glo@thislettergrp{\the\count@}%
+ \fi
+ }%
+}
+\newcommand{\@gls@noidx@do}[1]{%
+ \global\letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}%
+ \ifglshasparent{#1}%
+ {%
+ \gls@level=\csuse{glo@\glsdetoklabel{#1}@level}\relax
+ \ifdefvoid{\@gls@loclist}
+ {%
+ \subglossentry{\gls@level}{#1}{}%
+ }%
+ {%
+ \subglossentry{\gls@level}{#1}%
+ {%
+ \glsnoidxprenumberlist{#1}%
+ \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}%
+ }%
+ }%
+ }%
+ {%
+ \letcs{\@gls@sort}{glo@\glsdetoklabel{#1}@sort}%
+ \expandafter\glo@grabfirst\@gls@sort{}{}\@nil
+ \ifdefequal{\@glo@thislettergrp}{\@gls@currentlettergroup}%
+ {}%
+ {%
+ \ifdefempty{\@gls@currentlettergroup}{}%
+ {%
+ \global\let\@glo@thislettergrp\@glo@thislettergrp
+ \glsgroupskip
+ }%
+ \glsgroupheading{\@glo@thislettergrp}%
+ }%
+ \global\let\@gls@currentlettergroup\@glo@thislettergrp
+ \ifdefvoid{\@gls@loclist}
+ {%
+ \glossentry{#1}{}%
+ }%
+ {%
+ \glossentry{#1}%
+ {%
+ \glsnoidxprenumberlist{#1}%
+ \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}%
+ }%
+ }%
+ }%
+}
+\newcommand*{\glsnoidxloclist}[1]{%
+ \def\@gls@noidxloclist@sep{}%
+ \def\@gls@noidxloclist@prev{}%
+ \forlistloop{\glsnoidxloclisthandler}{#1}%
+}
+\newcommand*{\glsnoidxloclisthandler}[1]{%
+ \ifdefstring{\@gls@noidxloclist@prev}{#1}%
+ {%
+ }%
+ {%
+ \@gls@noidxloclist@sep
+ #1%
+ \def\@gls@noidxloclist@sep{\delimN}%
+ \def\@gls@noidxloclist@prev{#1}%
+ }%
+}
+\newcommand*{\glsnoidxdisplayloclisthandler}[1]{%
+ \ifdefstring{\@gls@noidxloclist@prev}{#1}%
+ {%
+ }%
+ {%
+ \@gls@noidxloclist@sep
+ \@gls@noidxloclist@prev
+ \def\@gls@noidxloclist@prev{#1}%
+ }%
+}
+\newcommand*\glsnoidxdisplayloc[4]{%
+ \setentrycounter[#1]{#2}%
+ \csuse{#3}{#4}%
+}
+\newcommand*{\@gls@reference}[3]{%
+ \glsdoifexistsorwarn{#2}%
+ {%
+ \ifcsundef{@glsref@#1}{\csgdef{@glsref@#1}{}}{}%
+ \ifinlistcs{#2}{@glsref@#1}%
+ {}%
+ {\listcsgadd{@glsref@#1}{#2}}%
+ \ifcsundef{glo@\glsdetoklabel{#2}@loclist}%
+ {\csgdef{glo@\glsdetoklabel{#2}@loclist}{}}%
+ {}%
+ \listcsgadd{glo@\glsdetoklabel{#2}@loclist}{#3}%
+ }%
+}
+\define@key{printgloss}{type}{\def\@glo@type{#1}}
+\define@key{printgloss}{title}{%
+ \def\glossarytitle{#1}%
+ \let\gls@dotoctitle\relax
+}
+\define@key{printgloss}{toctitle}{%
+ \def\glossarytoctitle{#1}%
+ \let\gls@dotoctitle\relax
+}
+\define@key{printgloss}{style}{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \PackageError{glossaries}%
+ {Glossary style `#1' undefined}{}%
+ }%
+ {%
+ \def\@glossarystyle{\setglossarystyle{#1}}%
+ }%
+}
+\define@choicekey{printgloss}{numberedsection}%
+ [\gls@numberedsection@val\gls@numberedsection@nr]%
+ {false,nolabel,autolabel,nameref}[nolabel]%
+{%
+ \ifcase\gls@numberedsection@nr\relax
+ \renewcommand*{\@@glossarysecstar}{*}%
+ \renewcommand*{\@@glossaryseclabel}{}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{}%
+ \renewcommand*{\@@glossaryseclabel}{}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{}%
+ \renewcommand*{\@@glossaryseclabel}{\label{\glsautoprefix\@glo@type}}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{*}%
+ \renewcommand*{\@@glossaryseclabel}{%
+ \protected@edef\@currentlabelname{\glossarytoctitle}%
+ \label{\glsautoprefix\@glo@type}}%
+ \fi
+}
+\define@choicekey{printgloss}{nogroupskip}{true,false}[true]{%
+ \csuse{glsnogroupskip#1}%
+}
+\define@choicekey{printgloss}{nopostdot}{true,false}[true]{%
+ \csuse{glsnopostdot#1}%
+}
+\newcommand*{\GlsEntryCounterLabelPrefix}{glsentry-}
+\define@choicekey{printgloss}{entrycounter}{true,false}[true]{%
+ \csuse{glsentrycounter#1}%
+ \@gls@define@glossaryentrycounter
+}
+\define@choicekey{printgloss}{subentrycounter}{true,false}[true]{%
+ \csuse{glssubentrycounter#1}%
+ \@gls@define@glossarysubentrycounter
+}
+\define@boolkey{printgloss}[gls]{nonumberlist}[true]{%
+\ifglsnonumberlist
+ \def\glossaryentrynumbers##1{}%
+\else
+ \def\glossaryentrynumbers##1{##1}%
+\fi}
+\define@key{printgloss}{sort}{\@glo@assign@sortkey{#1}}
+\newcommand*{\@glo@no@assign@sortkey}[1]{%
+ \PackageError{glossaries}{`sort' key not permitted with
+ \string\printglossary}%
+ {The `sort' key may only be used with \string\printnoidxglossary}%
+}
+\newcommand*{\@@glo@assign@sortkey}[1]{%
+ \def\@glo@sorttype{#1}%
+}
+\newcommand*{\@glsnonextpages}{%
+ \gdef\glossaryentrynumbers##1{%
+ \glsresetentrylist
+ }%
+}
+\newcommand*{\@glsnextpages}{%
+ \gdef\glossaryentrynumbers##1{%
+ ##1\glsresetentrylist}}
+\newcommand*{\glsresetentrylist}{%
+ \global\let\glossaryentrynumbers\org@glossaryentrynumbers}
+\newcommand*{\glsnonextpages}{}
+\newcommand*{\glsnextpages}{}
+\@gls@define@glossaryentrycounter
+\@gls@define@glossarysubentrycounter
+\newcommand*{\glsresetsubentrycounter}{%
+ \ifglssubentrycounter
+ \setcounter{glossarysubentry}{0}%
+ \fi
+}
+\newcommand*{\glsresetentrycounter}{%
+ \ifglsentrycounter
+ \setcounter{glossaryentry}{0}%
+ \fi
+}
+\newcommand*{\glsstepentry}[1]{%
+ \ifglsentrycounter
+ \refstepcounter{glossaryentry}%
+ \label{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}%
+ \fi
+}
+\newcommand*{\glsstepsubentry}[1]{%
+ \ifglssubentrycounter
+ \protected@edef\currentglssubentry{\glsdetoklabel{#1}}%
+ \refstepcounter{glossarysubentry}%
+ \label{\GlsEntryCounterLabelPrefix\currentglssubentry}%
+ \fi
+}
+\newcommand*{\glsrefentry}[1]{%
+ \ifglsentrycounter
+ \ref{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}%
+ \else
+ \ifglssubentrycounter
+ \ref{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}%
+ \else
+ \gls{#1}%
+ \fi
+ \fi
+}
+\newcommand*{\glsentrycounterlabel}{%
+ \ifglsentrycounter
+ \theglossaryentry.\space
+ \fi
+}
+\newcommand*{\glssubentrycounterlabel}{%
+ \ifglssubentrycounter
+ \theglossarysubentry)\space
+ \fi
+}
+\newcommand*{\glsentryitem}[1]{%
+ \ifglsentrycounter
+ \glsstepentry{#1}\glsentrycounterlabel
+ \else
+ \glsresetsubentrycounter
+ \fi
+}
+\newcommand*{\glssubentryitem}[1]{%
+ \ifglssubentrycounter
+ \glsstepsubentry{#1}\glssubentrycounterlabel
+ \fi
+}
+\ifcsundef{theglossary}%
+{%
+ \newenvironment{theglossary}{}{}%
+}%
+{%
+ \@gls@warnontheglossdefined
+ \renewenvironment{theglossary}{}{}%
+}
+\newcommand*{\glossaryheader}{}
+\newcommand*{\glstarget}[2]{\@glstarget{\glolinkprefix#1}{#2}}
+\newcommand{\glossentry}[2]{\glossentryname{#1} #2}
+\newcommand*{\glossentryname}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
+ \expandafter\glsnamefont\expandafter{\glo@name}%
+ }%
+}
+\newcommand*{\Glossentryname}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glsnamefont{\Glsentryname{#1}}%
+ }%
+}
+\glsmfuaddmap{\glossentryname}{\Glossentryname}
+\newcommand*{\glossentrydesc}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glsentrydesc{#1}%
+ }%
+}
+\newcommand*{\Glossentrydesc}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \Glsentrydesc{#1}%
+ }%
+}
+\glsmfuaddmap{\glossentrydesc}{\Glossentrydesc}
+\newcommand*{\glossentrysymbol}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glsentrysymbol{#1}%
+ }%
+}
+\newcommand*{\Glossentrysymbol}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \Glsentrysymbol{#1}%
+ }%
+}
+\glsmfuaddmap{\glossentrysymbol}{\Glossentrysymbol}
+\newcommand{\subglossentry}[3]{\glossentryname{#2} #3}
+\newcommand*{\glsgroupskip}{}
+\newcommand*{\glsgroupheading}[1]{}
+\newrobustcmd*{\glsgetgrouptitle}[1]{%
+ \@gls@getgrouptitle{#1}{\@gls@grptitle}%
+ \@gls@grptitle
+}
+\ExplSyntaxOn
+\newcommand*{\@gls@getgrouptitle}[2]{%
+ \def#2{#1}%
+ \regex_match:nnT { ^\A(.|glsnumbers|glssymbols)\Z } { #1 }
+ { \ifcsundef{#1groupname}{}{\letcs#2{#1groupname}} }
+}
+\ExplSyntaxOff
+\newcommand*{\@gls@noidx@getgrouptitle}[2]{%
+ \DTLifint{#1}%
+ {\edef#2{\char#1\relax}}%
+ {%
+ \ifcsundef{#1groupname}{\def#2{#1}}{\letcs#2{#1groupname}}%
+ }%
+}
+\ExplSyntaxOn
+\newcommand*{\glsgetgrouplabel}[1]{%
+ \str_if_eq:eeTF {#1} { \glssymbolsgroupname }
+ { glssymbols }
+ {
+ \str_if_eq:eeTF {#1} { \glsnumbersgroupname }
+ { glsnumbers }
+ { #1 }
+ }
+}
+\ExplSyntaxOff
+\newcommand*{\setentrycounter}[2][]{%
+ \def\@glo@counterprefix{#1}%
+ \ifx\@glo@counterprefix\@empty
+ \def\@glo@counterprefix{.}%
+ \else
+ \def\@glo@counterprefix{.#1.}%
+ \fi
+ \def\glsentrycounter{#2}%
+}
+\newcommand*{\setglossarystyle}[1]{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \PackageError{glossaries}{Glossary style `#1' undefined}{}%
+ }%
+ {%
+ \csname @glsstyle@#1\endcsname
+ }%
+ \ifx\@glossary@default@style\relax
+ \protected@edef\@glossary@default@style{#1}%
+ \fi
+}
+\newcommand{\newglossarystyle}[2]{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \expandafter\def\csname @glsstyle@#1\endcsname{#2}%
+ }%
+ {%
+ \PackageError{glossaries}{Glossary style `#1' is already defined}{}%
+ }%
+}
+\newcommand{\renewglossarystyle}[2]{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \PackageError{glossaries}{Glossary style `#1' isn't already defined}{}%
+ }%
+ {%
+ \csdef{@glsstyle@#1}{#2}%
+ }%
+}
+\newcommand*{\glsnamefont}[1]{#1}
+\ifcsundef{hyperlink}%
+{%
+ \def\glshypernumber#1{#1}%
+}%
+{%
+ \def\glshypernumber#1{\@xp@glshypernumber{#1}}
+}
+\newrobustcmd{\@xp@glshypernumber}[1]{%
+ \@glshypernumber#1\nohyperpage{}\@nil
+}
+\def\@glshypernumber#1\nohyperpage#2#3\@nil{%
+ \ifx\\#1\\%
+ \else
+ \gls@delimR#1\delimR\delimR\\%
+ \fi
+ \ifx\\#2\\%
+ \else
+ #2%
+ \fi
+ \ifx\\#3\\%
+ \else
+ \@glshypernumber#3\@nil
+ \fi
+}
+\def\gls@delimR#1\delimR #2\delimR #3\\{%
+ \ifx\\#2\\%
+ \gls@delimN{#1}%
+ \else
+ \@gls@numberlink{#1}\delimR\@gls@numberlink{#2}%
+ \fi
+}
+\def\gls@delimN#1{\gls@@delimN#1\delimN \delimN\\}
+\def\gls@@delimN#1\delimN #2\delimN#3\\{%
+ \ifx\\#3\\%
+ \@gls@numberlink{#1}%
+ \else
+ \@gls@numberlink{#1}\delimN\@gls@numberlink{#2}%
+ \fi
+}
+\def\@gls@numberlink#1{%
+ \begingroup
+ \toks@={}%
+ \@gls@removespaces#1 \@nil
+ \endgroup
+}
+\def\@gls@removespaces#1 #2\@nil{%
+ \toks@=\expandafter{\the\toks@#1}%
+ \ifx\\#2\\%
+ \edef\@gls@x{\the\toks@}%
+ \ifx\@gls@x\empty
+ \else
+ \bgroup
+ \glswrglossdisableanchorcmds
+ \protected@edef\@gls@tmp{\glsentrycounter\@glo@counterprefix
+ \glswrglosslocationtarget{\@gls@x}}%
+ \@onelevel@sanitize\@gls@tmp
+ \edef\@gls@x{\noexpand\egroup
+ \noexpand\hyperlink{\@gls@tmp}%
+ {\noexpand\glswrglosslocationtextfmt{\the\toks@}}%
+ }%
+ \@gls@x
+ \fi
+ \else
+ \@gls@ReturnAfterFi{%
+ \@gls@removespaces#2\@nil
+ }%
+ \fi
+}
+\long\def\@gls@ReturnAfterFi#1\fi{\fi#1}
+\newcommand*{\hyperrm}[1]{\textrm{\glshypernumber{#1}}}
+\newcommand*{\hypersf}[1]{\textsf{\glshypernumber{#1}}}
+\newcommand*{\hypertt}[1]{\texttt{\glshypernumber{#1}}}
+\newcommand*{\hyperbf}[1]{\textbf{\glshypernumber{#1}}}
+\newcommand*{\hypermd}[1]{\textmd{\glshypernumber{#1}}}
+\newcommand*{\hyperit}[1]{\textit{\glshypernumber{#1}}}
+\newcommand*{\hypersl}[1]{\textsl{\glshypernumber{#1}}}
+\newcommand*{\hyperup}[1]{\textup{\glshypernumber{#1}}}
+\newcommand*{\hypersc}[1]{\textsc{\glshypernumber{#1}}}
+\newcommand*{\hyperemph}[1]{\emph{\glshypernumber{#1}}}
+\newcommand{\oldacronym}[4][\gls@label]{%
+ \def\gls@label{#2}%
+ \newacronym[#4]{#1}{#2}{#3}%
+ \ifcsundef{xspace}%
+ {%
+ \expandafter\edef\csname#1\endcsname{%
+ \noexpand\@ifstar{\noexpand\Gls{#1}}{\noexpand\gls{#1}}%
+ }%
+ }%
+ {%
+ \expandafter\edef\csname#1\endcsname{%
+ \noexpand\@ifstar{\noexpand\Gls{#1}\noexpand\xspace}{%
+ \noexpand\gls{#1}\noexpand\xspace}%
+ }%
+ }%
+}
+\newcommand{\newacronym}[4][]{%
+ \gls@newacronym{#1}{#2}{#3}{#4}%
+}
+\newcommand{\gls@newacronym}[4]{%
+ \renewcommand{\gls@newacronym}[4]{%
+ \PackageError{glossaries}{incompatible acronym style:
+ rollback may be required}%
+ {something has gone wrong with \string\newacronym. Try
+ \string\usepackage{glossaries}[=v4.49]}%
+ }%
+ \setacronymstyle{long-short}%
+ \newacronym[#1]{#2}{#3}{#4}%
+}
+\newcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}
+\newrobustcmd*{\glstextup}[1]{\ifdef\textulc{\textulc{#1}}{\textup{#1}}}
+\newcommand*{\glsshortkey}{short}
+\newcommand*{\glsshortpluralkey}{shortplural}
+\newcommand*{\glslongkey}{long}
+\newcommand*{\glslongpluralkey}{longplural}
+\newcommand{\acrlinkfullformat}[5]{%
+ \acrfullformat{#1{#3}{#4}[#5]}{#2{#3}{#4}[]}%
+}
+\newcommand{\acrfullformat}[2]{#1\glsspace(#2)}
+\newrobustcmd{\glsspace}{\space}
+\newcommand*{\acrfullfmt}[3]{%
+ \acrlinkfullformat{\@acrlong}{\@acrshort}{#1}{#2}{#3}%
+}
+\newcommand*{\Acrfullfmt}[3]{%
+ \acrlinkfullformat{\@Acrlong}{\@acrshort}{#1}{#2}{#3}%
+}
+\newcommand*{\ACRfullfmt}[3]{%
+ \acrlinkfullformat{\@ACRlong}{\@ACRshort}{#1}{#2}{#3}%
+}
+\newcommand*{\acrfullplfmt}[3]{%
+ \acrlinkfullformat{\@acrlongpl}{\@acrshortpl}{#1}{#2}{#3}%
+}
+\newcommand*{\Acrfullplfmt}[3]{%
+ \acrlinkfullformat{\@Acrlongpl}{\@acrshortpl}{#1}{#2}{#3}%
+}
+\newcommand*{\ACRfullplfmt}[3]{%
+ \acrlinkfullformat{\@ACRlongpl}{\@ACRshortpl}{#1}{#2}{#3}%
+}
+\newrobustcmd*{\acrfull}{\@gls@hyp@opt\ns@acrfull}
+\newcommand*\ns@acrfull[2][]{%
+ \new@ifnextchar[{\@acrfull{#1}{#2}}%
+ {\@acrfull{#1}{#2}[]}%
+}
+\def\@acrfull#1#2[#3]{%
+ \acrfullfmt{#1}{#2}{#3}%
+}
+\newrobustcmd*{\Acrfull}{\@gls@hyp@opt\ns@Acrfull}
+\glsmfuaddmap{\acrfull}{\Acrfull}
+\newcommand*\ns@Acrfull[2][]{%
+ \new@ifnextchar[{\@Acrfull{#1}{#2}}%
+ {\@Acrfull{#1}{#2}[]}%
+}
+\def\@Acrfull#1#2[#3]{%
+ \Acrfullfmt{#1}{#2}{#3}%
+}
+\newrobustcmd*{\ACRfull}{\@gls@hyp@opt\ns@ACRfull}
+\newcommand*\ns@ACRfull[2][]{%
+ \new@ifnextchar[{\@ACRfull{#1}{#2}}%
+ {\@ACRfull{#1}{#2}[]}%
+}
+\def\@ACRfull#1#2[#3]{%
+ \ACRfullfmt{#1}{#2}{#3}%
+}
+\newrobustcmd*{\acrfullpl}{\@gls@hyp@opt\ns@acrfullpl}
+\newcommand*\ns@acrfullpl[2][]{%
+ \new@ifnextchar[{\@acrfullpl{#1}{#2}}%
+ {\@acrfullpl{#1}{#2}[]}%
+}
+\def\@acrfullpl#1#2[#3]{%
+ \acrfullplfmt{#1}{#2}{#3}%
+}
+\newrobustcmd*{\Acrfullpl}{\@gls@hyp@opt\ns@Acrfullpl}
+\glsmfuaddmap{\acrfullpl}{\Acrfullpl}
+\newcommand*\ns@Acrfullpl[2][]{%
+ \new@ifnextchar[{\@Acrfullpl{#1}{#2}}%
+ {\@Acrfullpl{#1}{#2}[]}%
+}
+\def\@Acrfullpl#1#2[#3]{%
+ \Acrfullplfmt{#1}{#2}{#3}%
+}
+\newrobustcmd*{\ACRfullpl}{\@gls@hyp@opt\ns@ACRfullpl}
+\newcommand*\ns@ACRfullpl[2][]{%
+ \new@ifnextchar[{\@ACRfullpl{#1}{#2}}%
+ {\@ACRfullpl{#1}{#2}[]}%
+}
+\def\@ACRfullpl#1#2[#3]{%
+ \ACRfullplfmt{#1}{#2}{#3}%
+}
+\newcommand{\acronymfont}[1]{#1}
+\newcommand{\firstacronymfont}[1]{\acronymfont{#1}}
+\newcommand*{\acrnameformat}[2]{\acronymfont{#1}}
+\newtoks\glskeylisttok
+\newtoks\glslabeltok
+\newtoks\glsshorttok
+\newtoks\glslongtok
+\newcommand*{\newacronymhook}{}
+\newcommand*{\SetGenericNewAcronym}{%
+ \let\@Gls@entryname\@Gls@acrentryname
+ \renewcommand{\newacronym}[4][]{%
+ \ifdefempty{\@glsacronymlists}%
+ {%
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ }%
+ {}%
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \protected@edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\expandonce{\acronymentry{##2}}},%
+ sort={\acronymsort{\the\glsshorttok}{\the\glslongtok}},%
+ text={\the\glsshorttok},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\glspluralsuffix},%
+ \GenericAcronymFields,%
+ \the\glskeylisttok
+ }%
+ }%
+ \@do@newglossaryentry
+ }%
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\genacrfullformat{##2}{##3}}}%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\Genacrfullformat{##2}{##3}}}%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsuppercase{\genacrfullformat{##2}{##3}}}}%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\genplacrfullformat{##2}{##3}}}%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\Genplacrfullformat{##2}{##3}}}%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsuppercase{\genplacrfullformat{##2}{##3}}}}%
+ \renewcommand*{\glsentryfull}[1]{\genacrfullformat{##1}{}}%
+ \renewcommand*{\Glsentryfull}[1]{\Genacrfullformat{##1}{}}%
+ \renewcommand*{\glsentryfullpl}[1]{\genplacrfullformat{##1}{}}%
+ \renewcommand*{\Glsentryfullpl}[1]{\Genplacrfullformat{##1}{}}%
+}
+\newcommand*{\GenericAcronymFields}{description={\the\glslongtok}}
+\newcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{#1}}}
+\newcommand*{\acronymsort}[2]{#1}
+\newcommand*{\setacronymstyle}[1]{%
+ \ifcsundef{@glsacr@dispstyle@#1}
+ {%
+ \PackageError{glossaries}{Undefined acronym style `#1'}{}%
+ }%
+ {%
+ \ifdefempty{\@glsacronymlists}%
+ {%
+ \DeclareAcronymList{\acronymtype}%
+ }%
+ {}%
+ \SetGenericNewAcronym
+ \GlsUseAcrStyleDefs{#1}%
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \defglsentryfmt[\@gls@type]{\GlsUseAcrEntryDispStyle{#1}}%
+ }%
+ }%
+}
+\newcommand*{\newacronymstyle}[3]{%
+ \ifcsdef{@glsacr@dispstyle@#1}%
+ {%
+ \PackageError{glossaries}{Acronym style `#1' already exists}{}%
+ }%
+ {%
+ \csdef{@glsacr@dispstyle@#1}{#2}%
+ \csdef{@glsacr@styledefs@#1}{#3}%
+ }%
+}
+\newcommand*{\renewacronymstyle}[3]{%
+ \ifcsdef{@glsacr@dispstyle@#1}%
+ {%
+ \csdef{@glsacr@dispstyle@#1}{#2}%
+ \csdef{@glsacr@styledefs@#1}{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Acronym style `#1' doesn't exist}{}%
+ }%
+}
+\newcommand*{\GlsUseAcrEntryDispStyle}[1]{\csuse{@glsacr@dispstyle@#1}}
+\newcommand*{\GlsUseAcrStyleDefs}[1]{\csuse{@glsacr@styledefs@#1}}
+\newacronymstyle{long-short}%
+{%
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \Glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \Glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+\newacronymstyle{long-sp-short}%
+{%
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsentrylong{##1}##2\glsacspace{##1}%
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \Glsentrylong{##1}##2\glsacspace{##1}%
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glsentrylongpl{##1}##2\glsacspace{##1}%
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \Glsentrylongpl{##1}##2\glsacspace{##1}%
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+\newcommand*{\glsacspace}[1]{%
+ \settowidth{\dimen@}{(\firstacronymfont{\glsentryshort{#1}})}%
+ \ifdim\dimen@<3em~\else\space\fi
+}
+\newacronymstyle{short-long}%
+{%
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \protect\firstacronymfont{\glsentryshort{##1}}##2\space
+ (\glsentrylong{##1})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \protect\firstacronymfont{\Glsentryshort{##1}}##2\space
+ (\glsentrylong{##1})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \protect\firstacronymfont{\glsentryshortpl{##1}}##2\space
+ (\glsentrylongpl{##1})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \protect\firstacronymfont{\Glsentryshortpl{##1}}##2\space
+ (\glsentrylongpl{##1})%
+ }%
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+\newacronymstyle{long-sc-short}%
+{%
+ \GlsUseAcrEntryDispStyle{long-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-short}%
+ \renewcommand{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
+}
+\newacronymstyle{long-sm-short}%
+{%
+ \GlsUseAcrEntryDispStyle{long-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-short}%
+ \renewcommand{\acronymfont}[1]{\textsmaller{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
+}
+\newacronymstyle{sc-short-long}%
+{%
+ \GlsUseAcrEntryDispStyle{short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{short-long}%
+ \renewcommand{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
+}
+\newacronymstyle{sm-short-long}%
+{%
+ \GlsUseAcrEntryDispStyle{short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{short-long}%
+ \renewcommand{\acronymfont}[1]{\textsmaller{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
+}
+\newacronymstyle{long-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{long-sp-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-sp-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-sp-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\glsacspace{##1}(\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{long-sc-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-sc-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-sc-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{long-sm-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-sm-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-sm-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{sc-short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{sc-short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{sc-short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{sm-short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{sm-short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{sm-short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{dua}%
+{%
+ \ifdefempty\glscustomtext
+ {%
+ \ifglshaslong{\glslabel}%
+ {%
+ \glsifplural
+ {%
+ \glscapscase
+ {%
+ \glsentrylongpl{\glslabel}\glsinsert
+ }%
+ {%
+ \Glsentrylongpl{\glslabel}\glsinsert
+ }%
+ {%
+ \glsuppercase
+ {\glsentrylongpl{\glslabel}\glsinsert}%
+ }%
+ }%
+ {%
+ \glscapscase
+ {%
+ \glsentrylong{\glslabel}\glsinsert
+ }%
+ {%
+ \Glsentrylong{\glslabel}\glsinsert
+ }%
+ {%
+ \glsuppercase
+ {\glsentrylong{\glslabel}\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+ \glsgenentryfmt
+ }%
+ }%
+ {\glscustomtext\glsinsert}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\glsentrylong{##2}##3\space
+ (\acronymfont{\glsentryshort{##2}})}}%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\Glsentrylong{##2}##3\space
+ (\acronymfont{\glsentryshort{##2}})}}%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsuppercase{\glsentrylong{##2}##3\space
+ (\acronymfont{\glsentryshort{##2}})}}}%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})}}%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\Glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})}}%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsuppercase{\glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})}}}%
+ \renewcommand*{\glsentryfull}[1]{%
+ \glsentrylong{##1}\space(\acronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\Glsentryfull}[1]{%
+ \Glsentrylong{##1}\space(\acronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\glsentryfullpl}[1]{%
+ \glsentrylongpl{##1}\space(\acronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\Glsentryfullpl}[1]{%
+ \Glsentrylongpl{##1}\space(\acronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
+}
+\newacronymstyle{dua-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{dua}%
+}%
+{%
+ \GlsUseAcrStyleDefs{dua}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymentry}[1]{\glsentrylong{##1}}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+}%
+\newacronymstyle{footnote}%
+{%
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \glshyperfirstfalse
+ \renewcommand*{\genacrfullformat}[2]{%
+ \protect\firstacronymfont{\glsentryshort{##1}}##2%
+ \protect\footnote{\glsentrylong{##1}}%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \firstacronymfont{\Glsentryshort{##1}}##2%
+ \protect\footnote{\glsentrylong{##1}}%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \protect\firstacronymfont{\glsentryshortpl{##1}}##2%
+ \protect\footnote{\glsentrylongpl{##1}}%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \protect\firstacronymfont{\Glsentryshortpl{##1}}##2%
+ \protect\footnote{\glsentrylongpl{##1}}%
+ }%
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\acronymfont{\glsentryshort{##2}}##3\space
+ (\glsentrylong{##2})}}%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\acronymfont{\Glsentryshort{##2}}##3\space
+ (\glsentrylong{##2})}}%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsuppercase{\acronymfont{\glsentryshort{##2}}##3\space
+ (\glsentrylong{##2})}}}%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\acronymfont{\glsentryshortpl{##2}}##3\space
+ (\glsentrylongpl{##2})}}%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\acronymfont{\Glsentryshortpl{##2}}##3\space
+ (\glsentrylongpl{##2})}}%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsuppercase{\acronymfont{\glsentryshortpl{##2}}##3\space
+ (\glsentrylongpl{##2})}}}%
+ \renewcommand*{\glsentryfull}[1]{%
+ \acronymfont{\glsentryshort{##1}}\space(\glsentrylong{##1})}%
+ \renewcommand*{\Glsentryfull}[1]{%
+ \acronymfont{\Glsentryshort{##1}}\space(\glsentrylong{##1})}%
+ \renewcommand*{\glsentryfullpl}[1]{%
+ \acronymfont{\glsentryshortpl{##1}}\space(\glsentrylongpl{##1})}%
+ \renewcommand*{\Glsentryfullpl}[1]{%
+ \acronymfont{\Glsentryshortpl{##1}}\space(\glsentrylongpl{##1})}%
+}
+\newacronymstyle{footnote-sc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}
+ \renewcommand{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
+}%
+\newacronymstyle{footnote-sm}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}
+ \renewcommand{\acronymfont}[1]{\textsmaller{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
+}%
+\newacronymstyle{footnote-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{footnote-sc-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote-sc}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote-sc}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newacronymstyle{footnote-sm-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote-sm}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote-sm}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+\newcommand*{\DefineAcronymSynonyms}{%
+ \let\acs\acrshort
+ \let\Acs\Acrshort
+ \let\acsp\acrshortpl
+ \let\Acsp\Acrshortpl
+ \let\acl\acrlong
+ \let\aclp\acrlongpl
+ \let\Acl\Acrlong
+ \let\Aclp\Acrlongpl
+ \let\acf\acrfull
+ \let\acfp\acrfullpl
+ \let\Acf\Acrfull
+ \let\Acfp\Acrfullpl
+ \let\ac\gls
+ \let\Ac\Gls
+ \let\acp\glspl
+ \let\Acp\Glspl
+}
+\ifglsacrshortcuts
+ \DefineAcronymSynonyms
+\fi
+\newcommand*{\SetDefaultAcronymDisplayStyle}[1]{%
+ \defglsentryfmt[#1]{\glsgenentryfmt}%
+}
+\newcommand*{\acrfootnote}[3]{\acrlinkfootnote{#1}{#2}{#3}}
+\newcommand*{\acrlinkfootnote}[3]{%
+ \footnote{\glslink[#1]{#2}{#3}}%
+}
+\newcommand*{\acrnolinkfootnote}[3]{%
+ \footnote{#3}%
+}
+\newrobustcmd*{\glsdoparenifnotempty}[2]{%
+ \protected@edef\gls@tmp{#1}%
+ \ifdefempty\gls@tmp
+ {}%
+ {%
+ \ifx\gls@tmp\@gls@default@value
+ \else
+ \space (#2{#1})%
+ \fi
+ }%
+}
+\newcommand*{\@gls@deprecated@acr@warning}[3]{%
+ \GlossariesWarning{Acronym style option #1 deprecated.
+ Use \string\setacronymstyle{#2} with just glossaries.sty or
+ use \string\setabbreviationstyle[acronym]{#3} with
+ glossaries-extra.sty}%
+}
+\RequirePackage{glossary-hypernav}
+\@gls@loadlist
+\@gls@loadlong
+\@gls@loadsuper
+\@gls@loadtree
+\ifx\@glossary@default@style\relax
+\else
+ \setglossarystyle{\@glossary@default@style}
+\fi
+\newcommand*{\showgloparent}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@parent\endcsname
+}
+\newcommand*{\showglolevel}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@level\endcsname
+}
+\newcommand*{\showglotext}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@text\endcsname
+}
+\newcommand*{\showgloplural}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@plural\endcsname
+}
+\newcommand*{\showglofirst}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@first\endcsname
+}
+\newcommand*{\showglofirstpl}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@firstpl\endcsname
+}
+\newcommand*{\showglotype}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@type\endcsname
+}
+\newcommand*{\showglocounter}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@counter\endcsname
+}
+\newcommand*{\showglouseri}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@useri\endcsname
+}
+\newcommand*{\showglouserii}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@userii\endcsname
+}
+\newcommand*{\showglouseriii}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@useriii\endcsname
+}
+\newcommand*{\showglouseriv}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@useriv\endcsname
+}
+\newcommand*{\showglouserv}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@userv\endcsname
+}
+\newcommand*{\showglouservi}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@uservi\endcsname
+}
+\newcommand*{\showgloname}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@name\endcsname
+}
+\newcommand*{\showglodesc}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@desc\endcsname
+}
+\newcommand*{\showglodescplural}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@descplural\endcsname
+}
+\newcommand*{\showglosort}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@sort\endcsname
+}
+\newcommand*{\showglosymbol}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@symbol\endcsname
+}
+\newcommand*{\showglosymbolplural}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@symbolplural\endcsname
+}
+\newcommand*{\showgloshort}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@short\endcsname
+}
+\newcommand*{\showglolong}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@long\endcsname
+}
+\newcommand*{\showgloindex}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@index\endcsname
+}
+\newcommand*{\showgloflag}[1]{%
+ \expandafter\show\csname ifglo@\glsdetoklabel{#1}@flag\endcsname
+}
+\newcommand*{\showgloloclist}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@loclist\endcsname
+}
+\newcommand*{\showglofield}[2]{%
+ \csshow{glo@\glsdetoklabel{#1}@#2}%
+}
+\newcommand*{\showacronymlists}{%
+ \show\@glsacronymlists
+}
+\newcommand*{\showglossaries}{%
+ \show\@glo@types
+}
+\newcommand*{\showglossaryin}[1]{%
+ \expandafter\show\csname @glotype@#1@in\endcsname
+}
+\newcommand*{\showglossaryout}[1]{%
+ \expandafter\show\csname @glotype@#1@out\endcsname
+}
+\newcommand*{\showglossarytitle}[1]{%
+ \expandafter\show\csname @glotype@#1@title\endcsname
+}
+\newcommand*{\showglossarycounter}[1]{%
+ \expandafter\show\csname @glotype@#1@counter\endcsname
+}
+\newcommand*{\showglossaryentries}[1]{%
+ \expandafter\show\csname glolist@#1\endcsname
+}
+\endinput
+%%
+%% End of file `glossaries-2024-04-03.sty'.
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-accsupp-2020-03-19.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-accsupp-2020-03-19.sty
index 95a0764e925..647cc620c4f 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-accsupp-2020-03-19.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-accsupp-2020-03-19.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-accsupp-2021-11-01.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-accsupp-2021-11-01.sty
index 926b5322107..64792b33eca 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-accsupp-2021-11-01.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-accsupp-2021-11-01.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-babel-2020-03-19.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-babel-2020-03-19.sty
index 109d7937896..6db298b0cb4 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-babel-2020-03-19.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-babel-2020-03-19.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-babel-2021-11-01.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-babel-2021-11-01.sty
index 5eb81d9f46a..7ea42203a46 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-babel-2021-11-01.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-babel-2021-11-01.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-207-2020-03-19.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-207-2020-03-19.sty
index 3cdc88a282a..b9473803dbb 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-207-2020-03-19.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-207-2020-03-19.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-207-2021-11-01.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-207-2021-11-01.sty
index c1075469750..352d82ab75c 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-207-2021-11-01.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-207-2021-11-01.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-307-2020-03-19.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-307-2020-03-19.sty
index a2d9e60b0d6..58847ac58fb 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-307-2020-03-19.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-307-2020-03-19.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-307-2021-11-01.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-307-2021-11-01.sty
index b5dc8098065..207a4430961 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-307-2021-11-01.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-307-2021-11-01.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-polyglossia-2020-03-19.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-polyglossia-2020-03-19.sty
index 063764b6c55..704044ce414 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-polyglossia-2020-03-19.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-polyglossia-2020-03-19.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-polyglossia-2021-11-01.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-polyglossia-2021-11-01.sty
index d04f4501219..f421a4743a2 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-polyglossia-2021-11-01.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-polyglossia-2021-11-01.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-prefix-2020-03-19.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-prefix-2020-03-19.sty
index f7982c7e219..bb15189cc32 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-prefix-2020-03-19.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-prefix-2020-03-19.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-prefix-2021-11-01.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-prefix-2021-11-01.sty
index 674e99848a0..312282b9b34 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-prefix-2021-11-01.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossaries-prefix-2021-11-01.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-hypernav-2020-03-19.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-hypernav-2020-03-19.sty
index ebfae4fe3f6..953eb87d3bc 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-hypernav-2020-03-19.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-hypernav-2020-03-19.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-hypernav-2021-11-01.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-hypernav-2021-11-01.sty
index 042e493e5fc..5a474528ec0 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-hypernav-2021-11-01.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-hypernav-2021-11-01.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-hypernav-2022-11-03.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-hypernav-2022-11-03.sty
index 854751d705c..3b4699505b4 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-hypernav-2022-11-03.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-hypernav-2022-11-03.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-inline-2020-03-19.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-inline-2020-03-19.sty
index bafb86af5c4..557a252ac74 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-inline-2020-03-19.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-inline-2020-03-19.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-inline-2021-11-01.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-inline-2021-11-01.sty
index 8fedf17bf21..823523a112c 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-inline-2021-11-01.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-inline-2021-11-01.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-list-2020-03-19.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-list-2020-03-19.sty
index c8eb121d103..e37c055030d 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-list-2020-03-19.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-list-2020-03-19.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-list-2021-11-01.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-list-2021-11-01.sty
index ddedb48496c..ac0c34a328c 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-list-2021-11-01.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-list-2021-11-01.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-long-2020-03-19.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-long-2020-03-19.sty
index 93730b58562..a75499f62ad 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-long-2020-03-19.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-long-2020-03-19.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-long-2021-11-01.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-long-2021-11-01.sty
index b406f42fd5e..5ea17b01cd1 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-long-2021-11-01.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-long-2021-11-01.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longbooktabs-2020-03-19.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longbooktabs-2020-03-19.sty
index 623403a377c..1f417384f72 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longbooktabs-2020-03-19.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longbooktabs-2020-03-19.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longbooktabs-2021-11-01.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longbooktabs-2021-11-01.sty
index 0b39a893787..8d648c6e38d 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longbooktabs-2021-11-01.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longbooktabs-2021-11-01.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longragged-2020-03-19.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longragged-2020-03-19.sty
index 1b785bcbab9..1de445a25b7 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longragged-2020-03-19.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longragged-2020-03-19.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longragged-2021-11-01.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longragged-2021-11-01.sty
index ced9aba3831..70098822489 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longragged-2021-11-01.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-longragged-2021-11-01.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-mcols-2020-03-19.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-mcols-2020-03-19.sty
index 5e6e5b61f95..689c1f391c5 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-mcols-2020-03-19.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-mcols-2020-03-19.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-mcols-2021-11-01.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-mcols-2021-11-01.sty
index f08e37dd185..28260deda5d 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-mcols-2021-11-01.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-mcols-2021-11-01.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-super-2020-03-19.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-super-2020-03-19.sty
index a3da26f4eca..54aebae175c 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-super-2020-03-19.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-super-2020-03-19.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-super-2021-11-01.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-super-2021-11-01.sty
index 42903eb605a..02930774462 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-super-2021-11-01.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-super-2021-11-01.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-superragged-2020-03-19.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-superragged-2020-03-19.sty
index 5ce1d72f6f2..623805265b3 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-superragged-2020-03-19.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-superragged-2020-03-19.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-superragged-2021-11-01.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-superragged-2021-11-01.sty
index 350e6f7126f..89a4821aada 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-superragged-2021-11-01.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-superragged-2021-11-01.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-tree-2020-03-19.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-tree-2020-03-19.sty
index f253737e2ca..e1f310689f0 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-tree-2020-03-19.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-tree-2020-03-19.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-tree-2021-11-01.sty b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-tree-2021-11-01.sty
index 8e01aa4a392..b592506428b 100644
--- a/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-tree-2021-11-01.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/rollback/glossary-tree-2021-11-01.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
diff --git a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-hypernav.sty b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-hypernav.sty
index 5f30b4a1866..6b86b14c044 100644
--- a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-hypernav.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-hypernav.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
@@ -42,8 +42,8 @@
\DeclareRelease{v4.46}{2020-03-19}{glossary-hypernav-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-hypernav-2021-11-01.sty}
\DeclareRelease{v4.52}{2022-11-03}{glossary-hypernav-2022-11-03.sty}
-\DeclareCurrentRelease{v4.54}{2024-04-03}
-\ProvidesPackage{glossary-hypernav}[2024/04/03 v4.54 (NLCT)]
+\DeclareCurrentRelease{v4.55}{2024-11-01}
+\ProvidesPackage{glossary-hypernav}[2024/11/01 v4.55 (NLCT)]
\newcommand*{\glsnavhyperlink}[3][\currentglossary]{%
\protected@edef\gls@grplabel{#2}\protected@edef\@gls@grptitle{#3}%
\@glslink{\glsnavhyperlinkname{#1}{#2}}{#3}%
diff --git a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-inline.sty b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-inline.sty
index 7132b7213bc..0b5f0751a04 100644
--- a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-inline.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-inline.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
@@ -41,8 +41,8 @@
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v4.46}{2020-03-19}{glossary-inline-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-inline-2021-11-01.sty}
-\DeclareCurrentRelease{v4.54}{2024-04-03}
-\ProvidesPackage{glossary-inline}[2024/04/03 v4.54 (NLCT)]
+\DeclareCurrentRelease{v4.55}{2024-11-01}
+\ProvidesPackage{glossary-inline}[2024/11/01 v4.55 (NLCT)]
\newglossarystyle{inline}{%
\renewenvironment{theglossary}%
{%
diff --git a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-list.sty b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-list.sty
index 14ef6aa2648..6ac58f45f75 100644
--- a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-list.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-list.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
@@ -41,8 +41,8 @@
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v4.46}{2020-03-19}{glossary-list-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-list-2021-11-01.sty}
-\DeclareCurrentRelease{v4.54}{2024-04-03}
-\ProvidesPackage{glossary-list}[2024/04/03 v4.54 (NLCT)]
+\DeclareCurrentRelease{v4.55}{2024-11-01}
+\ProvidesPackage{glossary-list}[2024/11/01 v4.55 (NLCT)]
\providecommand{\indexspace}{%
\par \vskip 10\p@ \@plus 5\p@ \@minus 3\p@ \relax
}
diff --git a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-long.sty b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-long.sty
index daa04883524..df82cdb9052 100644
--- a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-long.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-long.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
@@ -41,8 +41,8 @@
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v4.46}{2020-03-19}{glossary-long-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-long-2021-11-01.sty}
-\DeclareCurrentRelease{v4.54}{2024-04-03}
-\ProvidesPackage{glossary-long}[2024/04/03 v4.54 (NLCT)]
+\DeclareCurrentRelease{v4.55}{2024-11-01}
+\ProvidesPackage{glossary-long}[2024/11/01 v4.55 (NLCT)]
\RequirePackage{longtable}
\@ifundefined{glsdescwidth}{%
\newlength\glsdescwidth
diff --git a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-longbooktabs.sty b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-longbooktabs.sty
index f82b073a7da..e1cc6181071 100644
--- a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-longbooktabs.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-longbooktabs.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
@@ -41,8 +41,8 @@
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v4.46}{2020-03-19}{glossary-longbooktabs-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-longbooktabs-2021-11-01.sty}
-\DeclareCurrentRelease{v4.54}{2024-04-03}
-\ProvidesPackage{glossary-longbooktabs}[2024/04/03 v4.54 (NLCT)]
+\DeclareCurrentRelease{v4.55}{2024-11-01}
+\ProvidesPackage{glossary-longbooktabs}[2024/11/01 v4.55 (NLCT)]
\RequirePackage{booktabs}
\RequirePackage{glossary-long}
\RequirePackage{glossary-longragged}
diff --git a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-longragged.sty b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-longragged.sty
index 97320884b73..db987ca44a2 100644
--- a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-longragged.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-longragged.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
@@ -41,8 +41,8 @@
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v4.46}{2020-03-19}{glossary-longragged-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-longragged-2021-11-01.sty}
-\DeclareCurrentRelease{v4.54}{2024-04-03}
-\ProvidesPackage{glossary-longragged}[2024/04/03 v4.54 (NLCT)]
+\DeclareCurrentRelease{v4.55}{2024-11-01}
+\ProvidesPackage{glossary-longragged}[2024/11/01 v4.55 (NLCT)]
\RequirePackage{array}
\RequirePackage{longtable}
\@ifundefined{glsdescwidth}{%
diff --git a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-mcols.sty b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-mcols.sty
index c5217e3a361..78cc3d34ee1 100644
--- a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-mcols.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-mcols.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
@@ -41,8 +41,8 @@
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v4.46}{2020-03-19}{glossary-mcols-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-mcols-2021-11-01.sty}
-\DeclareCurrentRelease{v4.54}{2024-04-03}
-\ProvidesPackage{glossary-mcols}[2024/04/03 v4.54 (NLCT)]
+\DeclareCurrentRelease{v4.55}{2024-11-01}
+\ProvidesPackage{glossary-mcols}[2024/11/01 v4.55 (NLCT)]
\RequirePackage{multicol}
\RequirePackage{glossary-tree}
\providecommand{\indexspace}{%
diff --git a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-super.sty b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-super.sty
index 0312575d780..6b15e759811 100644
--- a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-super.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-super.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
@@ -41,8 +41,8 @@
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v4.46}{2020-03-19}{glossary-super-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-super-2021-11-01.sty}
-\DeclareCurrentRelease{v4.54}{2024-04-03}
-\ProvidesPackage{glossary-super}[2024/04/03 v4.54 (NLCT)]
+\DeclareCurrentRelease{v4.55}{2024-11-01}
+\ProvidesPackage{glossary-super}[2024/11/01 v4.55 (NLCT)]
\RequirePackage{supertabular}
\@ifundefined{glsdescwidth}{%
\newlength\glsdescwidth
diff --git a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-superragged.sty b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-superragged.sty
index 1c310b46128..a616d35b384 100644
--- a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-superragged.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-superragged.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
@@ -41,8 +41,8 @@
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v4.46}{2020-03-19}{glossary-superragged-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-superragged-2021-11-01.sty}
-\DeclareCurrentRelease{v4.54}{2024-04-03}
-\ProvidesPackage{glossary-superragged}[2024/04/03 v4.54 (NLCT)]
+\DeclareCurrentRelease{v4.55}{2024-11-01}
+\ProvidesPackage{glossary-superragged}[2024/11/01 v4.55 (NLCT)]
\RequirePackage{array}
\RequirePackage{supertabular}
\@ifundefined{glsdescwidth}{%
diff --git a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-tree.sty b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-tree.sty
index 4c1b5eab192..6337133a44e 100644
--- a/Master/texmf-dist/tex/latex/glossaries/styles/glossary-tree.sty
+++ b/Master/texmf-dist/tex/latex/glossaries/styles/glossary-tree.sty
@@ -21,7 +21,7 @@
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
-%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
+%% This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-polyglossia.sty, glossaries-prefix.sty, glossaries-accsupp.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-2020-03-19.sty, glossaries-accsupp-2020-03-19.sty, glossaries-babel-2020-03-19.sty, glossaries-compatible-207-2020-03-19.sty, glossaries-compatible-307-2020-03-19.sty, glossaries-polyglossia-2020-03-19.sty, glossaries-prefix-2020-03-19.sty, glossary-hypernav-2020-03-19.sty, glossary-inline-2020-03-19.sty, glossary-list-2020-03-19.sty, glossary-long-2020-03-19.sty, glossary-longbooktabs-2020-03-19.sty, glossary-longragged-2020-03-19.sty, glossary-mcols-2020-03-19.sty, glossary-super-2020-03-19.sty, glossary-superragged-2020-03-19.sty, glossary-tree-2020-03-19.sty, glossaries-2021-11-01.sty, glossaries-accsupp-2021-11-01.sty, glossaries-babel-2021-11-01.sty, glossaries-compatible-207-2021-11-01.sty, glossaries-compatible-307-2021-11-01.sty, glossaries-polyglossia-2021-11-01.sty, glossaries-prefix-2021-11-01.sty, glossary-hypernav-2021-11-01.sty, glossary-inline-2021-11-01.sty, glossary-list-2021-11-01.sty, glossary-long-2021-11-01.sty, glossary-longbooktabs-2021-11-01.sty, glossary-longragged-2021-11-01.sty, glossary-mcols-2021-11-01.sty, glossary-super-2021-11-01.sty, glossary-superragged-2021-11-01.sty, glossary-tree-2021-11-01.sty, glossaries-2022-11-03.sty, glossary-hypernav-2022-11-03.sty, glossaries-2024-04-03.sty, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childmultipar.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-longchild.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, example-glossaries-user.tex, example-glossaries-utf8.tex, glossaries.l2h.
%%
%% \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
@@ -41,8 +41,8 @@
\NeedsTeXFormat{LaTeX2e}
\DeclareRelease{v4.46}{2020-03-19}{glossary-tree-2020-03-19.sty}
\DeclareRelease{v4.49}{2021-11-01}{glossary-tree-2021-11-01.sty}
-\DeclareCurrentRelease{v4.54}{2024-04-03}
-\ProvidesPackage{glossary-tree}[2024/04/03 v4.54 (NLCT)]
+\DeclareCurrentRelease{v4.55}{2024-11-01}
+\ProvidesPackage{glossary-tree}[2024/11/01 v4.55 (NLCT)]
\providecommand{\indexspace}{%
\par \vskip 10\p@ \@plus 5\p@ \@minus 3\p@ \relax
}
diff --git a/Master/texmf-dist/tex/latex/graphics/color.sty b/Master/texmf-dist/tex/latex/graphics/color.sty
index 7083345d319..6eac5d7e41a 100644
--- a/Master/texmf-dist/tex/latex/graphics/color.sty
+++ b/Master/texmf-dist/tex/latex/graphics/color.sty
@@ -25,7 +25,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{color}
- [2024/01/14 v1.3d Standard LaTeX Color (DPC)]
+ [2024/06/23 v1.3e Standard LaTeX Color (DPC)]
\edef\Gin@codes{%
\catcode`\noexpand\^^A\the\catcode`\^^A\relax
\catcode`\noexpand\"\the\catcode`\"\relax
@@ -170,7 +170,7 @@
\input{mathcolor.ltx}
\def\color@setgroup{\begingroup\set@color}
\let\color@begingroup\begingroup
-\def\color@endgroup{\endgraf\endgroup}
+\def\color@endgroup{\endgraf\@endpefalse\endgroup}
\def\color@hbox{\hbox\bgroup\color@begingroup}
\def\color@vbox{\vbox\bgroup\color@begingroup}
\def\color@endbox{\color@endgroup\egroup}
diff --git a/Master/texmf-dist/tex/latex/graphics/graphics.sty b/Master/texmf-dist/tex/latex/graphics/graphics.sty
index 9d6e6c3b176..bbbe11f3325 100644
--- a/Master/texmf-dist/tex/latex/graphics/graphics.sty
+++ b/Master/texmf-dist/tex/latex/graphics/graphics.sty
@@ -30,7 +30,7 @@
\DeclareCurrentRelease{}{2019-10-01}
\ProvidesPackage{graphics}
- [2024/05/23 v1.4g Standard LaTeX Graphics (DPC,SPQR)]
+ [2024/08/06 v1.4g Standard LaTeX Graphics (DPC,SPQR)]
\edef\Gin@codes{%
\catcode`\noexpand\^^A\the\catcode`\^^A\relax
\catcode`\noexpand\"\the\catcode`\"\relax
diff --git a/Master/texmf-dist/tex/latex/gratzer-color-scheme/Gratzer-Color-Scheme.sty b/Master/texmf-dist/tex/latex/gratzer-color-scheme/Gratzer-Color-Scheme.sty
new file mode 100644
index 00000000000..61708048bed
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/gratzer-color-scheme/Gratzer-Color-Scheme.sty
@@ -0,0 +1,55 @@
+% Gratzer-Color-Scheme.sty Version 1.0
+% Distributed under the LaTeX Project Public Licence 1.3c
+\ProvidesPackage{Gratzer-Color-Scheme}
+
+% Load necessary packages
+\RequirePackage{xcolor} % For coloring text
+\RequirePackage{amsthm} % For theorem environment customization
+
+% Define color styles for each environment
+\newtheoremstyle{redStyle} % name
+ {} % Space above
+ {} % Space below
+ {\color{red}} % Body font
+ {} % Indent amount
+ {\bfseries\color{red}} % Theorem head font
+ {.} % Punctuation after theorem head
+ { } % Space after theorem head
+ {} % Theorem head spec
+
+\newtheoremstyle{blueStyle}
+ {}
+ {}
+ {\color{blue}}
+ {}
+ {\bfseries\color{blue}}
+ {.}
+ { }
+ {}
+
+\newtheoremstyle{darkGreenStyle}
+ {}
+ {}
+ {\color{darkgreen}}
+ {}
+ {\bfseries\color{darkgreen}}
+ {.}
+ { }
+ {}
+
+% Define dark green color if not predefined
+\definecolor{darkgreen}{rgb}{0.0, 0.5, 0.0}
+
+% Apply styles to theorem-like environments
+\theoremstyle{redStyle}
+\newtheorem{theorem}{Theorem}
+\newtheorem{corollary}{Corollary}
+
+\theoremstyle{blueStyle}
+\newtheorem{lemma}{Lemma}
+\newtheorem{proposition}{Proposition}
+
+\theoremstyle{darkGreenStyle}
+\newtheorem{definition}{Definition}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/hep-acronym/hep-acronym.sty b/Master/texmf-dist/tex/latex/hep-acronym/hep-acronym.sty
index 73c72b50973..39c980a91d2 100644
--- a/Master/texmf-dist/tex/latex/hep-acronym/hep-acronym.sty
+++ b/Master/texmf-dist/tex/latex/hep-acronym/hep-acronym.sty
@@ -15,7 +15,7 @@
%% and version 1.3c or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{hep-acronym}[2023/07/01 v1.2 Acronyms using glossaries]
+\ProvidesPackage{hep-acronym}[2024/11/01 v1.3 Acronyms using glossaries]
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
@@ -30,9 +30,9 @@
\glssetcategoryattribute{abbreviation}{entrycount}{1}
\AtBeginDocument{
\@ifpackageloaded{hyperref}{
- \providecommand{\glsxtrusefield}[2]{\@gls@entry@field{#1}{#2}}
- \providecommand{\glsxtrsetfieldifexists}[3]{\glsdoifexists{#1}{#3}}
- \providecommand{\gGlsXtrSetField}[3]{%
+ \providecommand*{\glsxtrusefield}[2]{\@gls@entry@field{#1}{#2}}
+ \providecommand*{\glsxtrsetfieldifexists}[3]{\glsdoifexists{#1}{#3}}
+ \providecommand*{\gGlsXtrSetField}[3]{%
\glsxtrsetfieldifexists{#1}{#2}{%
\csgdef{glo@\glsdetoklabel{#1}@#2}{#3}%
}%
@@ -49,7 +49,7 @@
}}
}{}
}
-\newcommand{\hep@disable}[1]{%
+\newcommand*{\hep@disable}[1]{%
\@ifpackageloaded{hyperref}{\pdfstringdefDisableCommands{#1}}{}%
}
\ifhepacronym@hyper\else
@@ -57,9 +57,9 @@
\fi
\PassOptionsToPackage{excludeor}{everyhook}
\RequirePackage{everyhook}
-\newcommand{\begin@sentence}{1001}
-\newcommand{\sentence}{\spacefactor=\begin@sentence}
-\hep@disable{\renewcommand\sentence{}}
+\newcommand*{\begin@sentence}{1001}
+\newcommand*{\sentence}{\spacefactor=\begin@sentence}
+\hep@disable{\renewcommand*\sentence{}}
\PushPostHook{par}{{\sentence}}
\gdef\ttl@case{\leavevmode\sentence}
\def\frenchspacing{%
@@ -67,7 +67,7 @@
\sfcode`\!\begin@sentence \sfcode`\:\begin@sentence
\sfcode`\;\@m \sfcode`\,\@m
}
-\newcommand{\if@begin@of@sentence}[2]{\leavevmode\protecting{%
+\newcommand*{\hep@if@begin@of@sentence}[2]{\leavevmode\protecting{%
\ifboolexpr{ test {\ifnumcomp{\spacefactor}{=}{3000}} or%
test {\ifnumcomp{\spacefactor}{=}{2000}} or%
test {\ifnumcomp{\spacefactor}{=}{\begin@sentence}}%
@@ -76,7 +76,8 @@
\RequirePackage{xparse}
\ProvideDocumentCommand{\mathdef}{mO{0}m}{%
\expandafter\let\csname hep@text\string#1\endcsname=#1
- \expandafter\newcommand\csname hep@math\string#1\endcsname[#2]{#3}
+ \expandafter\newcommand\expandafter*%
+ \csname hep@math\string#1\endcsname[#2]{#3}
\DeclareRobustCommand#1{%
\ifmmode
\expandafter\let\expandafter\next\csname%
@@ -97,8 +98,8 @@
\glsshortpluralkey=\IfBooleanTF{#1}{#3}{\IfNoValueTF{#2}{#3s}{#2s}},
longplural=\IfNoValueTF{#6}{#5s}{#6}
]{#3}{\IfNoValueTF{#2}{#3}{#2}}{#5}
- \expandafter\newcommand\csname#3\endcsname[1][]{%
- \if@begin@of@sentence{%
+ \expandafter\newcommand\expandafter*\csname#3\endcsname[1][]{%
+ \hep@if@begin@of@sentence{%
\ifglsused{#3}{\cgls{#3}[##1]}{\cGls{#3}[##1]}%
}{\cgls{#3}[##1]}%
\ifnum\glsentrycurrcount{#3}>1\relax
@@ -111,8 +112,8 @@
\expandafter\mathdef\csname#3\endcsname{%
\mathinner{\text{\glsxtrshort{#3}}}\@gls@increment@currcount{#3}%
}
- \expandafter\newcommand\csname#3s\endcsname[1][]{%
- \if@begin@of@sentence{\cGlspl{#3}[##1]}{\cglspl{#3}[##1]}%
+ \expandafter\newcommand\expandafter*\csname#3s\endcsname[1][]{%
+ \hep@if@begin@of@sentence{\cGlspl{#3}[##1]}{\cglspl{#3}[##1]}%
\IfBooleanTF{#4}{}{\@\xspace}%
}
\hep@disable{\expandafter\def\csname#3s\endcsname{%
@@ -121,13 +122,13 @@
\expandafter\mathdef\csname#3s\endcsname{%
\mathinner{\text{\glsxtrshortpl{#3}}}\@gls@increment@currcount{#3}%
}
- \expandafter\newcommand\csname#3long\endcsname[1][]{%
- \if@begin@of@sentence{\Glsdesc*{#3}[##1]}{\glsdesc*{#3}[##1]}%
+ \expandafter\newcommand\expandafter*\csname#3long\endcsname[1][]{%
+ \hep@if@begin@of@sentence{\Glsdesc*{#3}[##1]}{\glsdesc*{#3}[##1]}%
\IfBooleanTF{#4}{}{\@\xspace}%
}
\hep@disable{\expandafter\def\csname#3long\endcsname{#5 }}
- \expandafter\newcommand\csname#3slong\endcsname[1][]{%
- \if@begin@of@sentence{%
+ \expandafter\newcommand\expandafter*\csname#3slong\endcsname[1][]{%
+ \hep@if@begin@of@sentence{%
\Glsxtrlongpl*{#3}[##1]}{\glsxtrlongpl*{#3}[##1]%
}%
\IfBooleanTF{#4}{}{\@\xspace}%
@@ -137,7 +138,7 @@
}
}
\NewDocumentCommand{\shortacronym}{somsmo}{
- \expandafter\newcommand\csname#3\endcsname[1][]{%
+ \expandafter\newcommand\expandafter*\csname#3\endcsname[1][]{%
\IfNoValueTF{#2}{#3}{#2}\IfBooleanTF{#4}{}{\@\xspace}##1%
}
\hep@disable{\expandafter\def\csname#3\endcsname{%
@@ -146,7 +147,7 @@
\expandafter\mathdef\csname#3\endcsname{%
\mathinner{\text{\IfNoValueTF{#2}{#3}{#2}}}%
}
- \expandafter\newcommand\csname#3s\endcsname[1][]{%
+ \expandafter\newcommand\expandafter*\csname#3s\endcsname[1][]{%
\IfBooleanTF{#1}{#3}{\IfNoValueTF{#2}{#3s}{#2s}}%
\IfBooleanTF{#4}{}{\@\xspace}##1%
}
@@ -160,13 +161,13 @@
\expandafter\let\csname#3slong\expandafter\endcsname\csname#3s\endcsname
}
\NewDocumentCommand{\longacronym}{somsmo}{
- \expandafter\newcommand\csname#3\endcsname[1][]{%
- \if@begin@of@sentence{\MakeUppercase#5}{#5}%
+ \expandafter\newcommand\expandafter*\csname#3\endcsname[1][]{%
+ \hep@if@begin@of@sentence{\MakeUppercase#5}{#5}%
\IfBooleanTF{#4}{}{\@\xspace}##1%
}
\hep@disable{\expandafter\def\csname#3\endcsname{#5 }}
- \expandafter\newcommand\csname#3s\endcsname[1][]{%
- \if@begin@of@sentence{%
+ \expandafter\newcommand\expandafter*\csname#3s\endcsname[1][]{%
+ \hep@if@begin@of@sentence{%
\IfNoValueTF{#6}{\MakeUppercase#5s}{\MakeUppercase#6}%
}{%
\IfNoValueTF{#6}{#5s}{#6}}\IfBooleanTF{#4}{}{\@\xspace}##1%
@@ -180,12 +181,12 @@
\NewDocumentCommand{\acronymalternative}{mmsm}{%
\GlsXtrSetField{#1}{useri}{#4}%
- \expandafter\newcommand\csname#2\endcsname[1][]{%
+ \expandafter\newcommand\expandafter*\csname#2\endcsname[1][]{%
\let\hep@glsaccesslong\glsaccesslong%
\let\hep@Glsaccesslong\Glsaccesslong%
\let\glsaccesslong\glsuseri%
\let\Glsaccesslong\Glsuseri%
- \if@begin@of@sentence{%
+ \hep@if@begin@of@sentence{%
\ifglsused{#1}{\cgls{#1}[##1]}{\cGls{#1}[##1]}%
}{\cgls{#1}[##1]}%
\let\glsaccesslong\hep@glsaccesslong%
@@ -200,12 +201,12 @@
\expandafter\mathdef\csname#2\endcsname{%
\mathinner{\text{\glsxtrshort{#1}}}\@gls@increment@currcount{#1}%
}
- \expandafter\newcommand\csname#2long\endcsname[1][]{%
+ \expandafter\newcommand\expandafter*\csname#2long\endcsname[1][]{%
\let\hep@glsentrydesc\glsentrydesc%
\let\hep@Glsentrydesc\Glsentrydesc%
\renewrobustcmd*{\glsentrydesc}[1]{\@gls@entry@field{#1}{useri}}%
\renewrobustcmd*{\Glsentrydesc}[1]{\@Gls@entry@field{#1}{useri}}%
- \if@begin@of@sentence{\Glsdesc*{#1}[##1]}{\glsdesc*{#1}[##1]}%
+ \hep@if@begin@of@sentence{\Glsdesc*{#1}[##1]}{\glsdesc*{#1}[##1]}%
\IfBooleanTF{#3}{}{\@\xspace}%
\let\glsentrydesc\hep@glsentrydesc%
\let\Glsentrydesc\hep@Glsentrydesc%
@@ -233,31 +234,19 @@
}{}%
}%
}
-\newcommand{\resetacronym}[1]{\protect\glsreset{#1}}
-\newcommand{\dummyacronym}[1]{\protect\glsunset{#1}}
+\newcommand*{\resetacronym}[1]{\protect\glsreset{#1}}
+\newcommand*{\dummyacronym}[1]{\protect\glsunset{#1}}
\@ifundefined{endabstract}{}{%
\let\end@hep@abstract\endabstract%
- \renewcommand\endabstract{\glsresetall\end@hep@abstract}%
-}
-\let\hep@table@of@contents\tableofcontents
-\renewcommand\tableofcontents{%
- \glsunsetall\hep@table@of@contents\glsresetall%
-}
-\let\hep@list@of@figures\listoffigures
-\renewcommand\listoffigures{%
- \glsunsetall\hep@list@of@figures\glsresetall%
-}
-\let\hep@list@of@tables\listoftables
-\renewcommand\listoftables{%
- \glsunsetall\hep@list@of@tables\glsresetall%
+ \renewcommand*\endabstract{\glsresetall\end@hep@abstract}%
}
\NewDocumentCommand{\acronyms}{om}{%
\IfNoValueTF{#1}{
\newglossary{#2}{#2.in}{#2.out}{#2}%
- \renewcommand{\acronymtype}{#2}%
+ \renewcommand*{\acronymtype}{#2}%
}{
\newglossary{#1}{#1.in}{#1.out}{#2}%
- \renewcommand{\acronymtype}{#1}%
+ \renewcommand*{\acronymtype}{#1}%
}
}
diff --git a/Master/texmf-dist/tex/latex/hep-bibliography/hep-bibliography.dbx b/Master/texmf-dist/tex/latex/hep-bibliography/hep-bibliography.dbx
index fff713c9706..afb27e0ace8 100644
--- a/Master/texmf-dist/tex/latex/hep-bibliography/hep-bibliography.dbx
+++ b/Master/texmf-dist/tex/latex/hep-bibliography/hep-bibliography.dbx
@@ -15,7 +15,7 @@
%% and version 1.3c or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
-\ProvidesFile{hep-bibliography.dbx}[2023/07/01 v1.2 HEP-Bibliography biblatex data model]
+\ProvidesFile{hep-bibliography.dbx}[2024/11/01 v1.3 HEP-Bibliography biblatex data model]
\DeclareDatamodelFields[type=field, datatype=literal]{
collaboration, pmid, pmcid, pmc,
diff --git a/Master/texmf-dist/tex/latex/hep-bibliography/hep-bibliography.sty b/Master/texmf-dist/tex/latex/hep-bibliography/hep-bibliography.sty
index fef88484549..4eb777c5874 100644
--- a/Master/texmf-dist/tex/latex/hep-bibliography/hep-bibliography.sty
+++ b/Master/texmf-dist/tex/latex/hep-bibliography/hep-bibliography.sty
@@ -16,7 +16,7 @@
%% LaTeX version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{hep-bibliography}[2023/07/01 v1.2 HEP-Bibliography]
+\ProvidesPackage{hep-bibliography}[2024/11/01 v1.3 HEP-Bibliography]
\RequirePackage{kvoptions}
@@ -118,8 +118,6 @@
\providecommand{\relateddelimerratum}{\addsemicolon\space}
\DefineBibliographyExtras{british}{\def\finalandcomma{\addcomma}}
\renewcommand{\subtitlepunct}{\addcolon\addspace}
-\let\hep@printbibliography\printbibliography
-\renewcommand{\printbibliography}{\sloppy\hep@printbibliography}
\newcommand{\hep@reg@exp@one}{\regexp{\A(\p{L}+)?\d+(\p{L}+)?\Z}}
\newcommand{\hep@reg@exp@two}{\regexp{\A(\p{L}+)?(\d+)(\p{L}+)?\Z}}
diff --git a/Master/texmf-dist/tex/latex/hep-float/hep-float.sty b/Master/texmf-dist/tex/latex/hep-float/hep-float.sty
index 99c08cb29db..d1ba33f9094 100644
--- a/Master/texmf-dist/tex/latex/hep-float/hep-float.sty
+++ b/Master/texmf-dist/tex/latex/hep-float/hep-float.sty
@@ -16,7 +16,7 @@
%% LaTeX version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{hep-float}[2023/07/01 v1.2 Float adjustments]
+\ProvidesPackage{hep-float}[2024/11/01 v1.3 Float adjustments]
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
@@ -153,6 +153,7 @@
}
\RequirePackage{booktabs}
\RequirePackage{multirow}
+\newcommand\header[1]{\multicolumn{1}{c}{#1}}
\RequirePackage{graphicx}
\providecommand{\tikzsetnextfilename}[1]{}
diff --git a/Master/texmf-dist/tex/latex/hep-font/hep-font.sty b/Master/texmf-dist/tex/latex/hep-font/hep-font.sty
index 4c8751ea7b9..92daf089140 100644
--- a/Master/texmf-dist/tex/latex/hep-font/hep-font.sty
+++ b/Master/texmf-dist/tex/latex/hep-font/hep-font.sty
@@ -15,7 +15,7 @@
%% and version 1.3c or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{hep-font}[2023/07/01 v1.2 hep-font]
+\ProvidesPackage{hep-font}[2024/11/01 v1.3 hep-font]
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
@@ -85,6 +85,7 @@
\RequirePackage{xparse}
\ProvideDocumentCommand{\code}{v}{{\codestyle #1}}
\g@addto@macro\@floatboxreset{\tlstyle}
+\pretocmd{\theequation}{\tstyle}{}{}
\RequirePackage{textcomp}
\newcommand{\hepfont@sf@shape}[3]{%
\DeclareFontShape{\hepfont@encoding}{\sfdefault}{#1}{#2}{#3}{}%
diff --git a/Master/texmf-dist/tex/latex/hep-graphic/hep-feynman.sty b/Master/texmf-dist/tex/latex/hep-graphic/hep-feynman.sty
index 56a95116f4a..53d45811b5e 100644
--- a/Master/texmf-dist/tex/latex/hep-graphic/hep-feynman.sty
+++ b/Master/texmf-dist/tex/latex/hep-graphic/hep-feynman.sty
@@ -14,7 +14,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
-\ProvidesPackage{hep-feynman}[2023/07/01 v1.0 Feynman diagrams in High Energy Physics]
+\ProvidesPackage{hep-feynman}[2024/11/01 v1.3 Feynman diagrams in High Energy Physics]
\RequirePackage{tikz-feynman}
\tikzfeynmanset{
diff --git a/Master/texmf-dist/tex/latex/hep-graphic/hep-graphic.sty b/Master/texmf-dist/tex/latex/hep-graphic/hep-graphic.sty
index 7da2a032401..a2047bc62b0 100644
--- a/Master/texmf-dist/tex/latex/hep-graphic/hep-graphic.sty
+++ b/Master/texmf-dist/tex/latex/hep-graphic/hep-graphic.sty
@@ -15,39 +15,42 @@
%% and version 1.3c or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{hep-graphic}[2023/07/01 v1.0 Graphics in High Energy Physics]
+\ProvidesPackage{hep-graphic}[2024/11/01 v1.3 Graphics in High Energy Physics]
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
family=hepgraphic,
prefix=hepgraphic@
}
+\DeclareStringOption{extern}[.]
\DeclareBoolOption[false]{plot}
\DeclareBoolOption[false]{feynman}
\ProcessKeyvalOptions*
\ifhepgraphic@plot\RequirePackage{hep-plot}\fi
\ifhepgraphic@feynman\RequirePackage{hep-feynman}\fi
\RequirePackage{tikz}
-\usetikzlibrary{external}
-\tikzexternalize[
- optimize=false,
- only named=true,
-]
-\RequirePackage{standalone}
+\ifx\hepgraphic@extern\@empty\else
+ \usetikzlibrary{external}
+ \tikzexternalize[
+ only named=true,
+ ]
+ \tikzsetexternalprefix{\hepgraphic@extern/}
+\fi
+\RequirePackage{tikzscale}
\def\hep@graphic@path{.}
\newcommand{\graphicpath}[1]{\def\hep@graphic@path{#1}}
\RequirePackage{xparse}
-\NewDocumentCommand{\includetikz}{sO{1}m}{%
+\NewDocumentCommand{\includepgf}{sO{}m}{%
\tikzsetnextfilename{#3}%
\IfBooleanTF{#1}{%
- \includestandalone{\hep@graphic@path/#3}%
+ \includegraphics{\hep@graphic@path/#3}%
}{%
- \linewidth=#2\linewidth
- \includestandalone[width=\linewidth]{\hep@graphic@path/#3}%
+ \pgfplotsset{#2}
+ \includegraphics[#2]{\hep@graphic@path/#3}%
}%
}
\newcommand{\includefeynman}[1]{%
- \vcenter{\hbox{\includestandalone{\hep@graphic@path/#1}}}%
+ \vcenter{\hbox{\includegraphics{\hep@graphic@path/#1}}}%
}
\endinput
diff --git a/Master/texmf-dist/tex/latex/hep-graphic/hep-plot.sty b/Master/texmf-dist/tex/latex/hep-graphic/hep-plot.sty
index 3a64f41e479..007100c5664 100644
--- a/Master/texmf-dist/tex/latex/hep-graphic/hep-plot.sty
+++ b/Master/texmf-dist/tex/latex/hep-graphic/hep-plot.sty
@@ -14,7 +14,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
-\ProvidesPackage{hep-plot}[2023/07/01 v1.0 Plots in High Energy Physics]
+\ProvidesPackage{hep-plot}[2024/11/01 v1.3 Plots in High Energy Physics]
\RequirePackage{tikz}
\tikzset{
@@ -26,6 +26,12 @@
on \the\pgflinewidth off 2pt on \the\pgflinewidth off 2pt
on \the\pgflinewidth off 2pt on \the\pgflinewidth off 2pt
},
+ dotdotdashed/.style={dash pattern=on 3pt off 2pt
+ on 3pt off 2pt on \the\pgflinewidth off 2pt
+ },
+ dotdotdotdashed/.style={dash pattern=on 3pt off 2pt
+ on 3pt off 2pt on 3pt off 2pt on \the\pgflinewidth off 2pt
+ },
}%
\pgfkeys{/pgf/number format/.cd,1000 sep={\,}}%
\RequirePackage{pgfplots}
@@ -64,24 +70,28 @@
}
\colorlet{darkgreen}{green!50!black}
\pgfplotscreateplotcyclelist{colors}{
- blue, red, darkgreen, violet, orange, yellow!25!orange,
+ blue, red, darkgreen, violet, orange, yellow!75!orange,
brown, black
}
\pgfplotscreateplotcyclelist{line styles}{
solid, dashed, {densely dotted, semithick}, dashdotted,
- dashdotdotted, dashdotdotdotted, dashdotdotdotdotted
+ dashdotdotted, dotdotdashed, dashdotdotdotted, dotdotdotdashed, dashdotdotdotdotted
}
\pgfplotscreateplotcyclelist{marks}{
- -, |, Mercedes star flipped, Mercedes star, +, x, star,
- asterisk, 10-pointed star
+ mark=-, mark=|, mark=Mercedes star flipped, mark=Mercedes star, mark=+,
+ mark=x, mark=star, mark=asterisk, mark=10-pointed star
}
\pgfplotscreateplotcyclelist{vertical marks}{
- |, Mercedes star flipped, Mercedes star, x, star,
- asterisk, 10-pointed star
+ mark=|, mark=Mercedes star flipped, mark=Mercedes star, mark=x, mark=star,
+ mark=asterisk, mark=10-pointed star
}
\pgfplotscreateplotcyclelist{horizontal marks}{
- -, Mercedes star flipped, Mercedes star, x, star, %asterisk,
- 10-pointed star
+ mark=-, mark=Mercedes star flipped, mark=Mercedes star, mark=x, mark=star,
+ mark=asterisk, mark=10-pointed star
+}
+\pgfplotscreateplotcyclelist{star marks}{
+ mark=Mercedes star flipped, mark=Mercedes star, mark=x, mark=star,
+ mark=asterisk, mark=10-pointed star
}
\pgfplotsset{
cycle multiindex* list={colors\nextlist line styles},
@@ -94,6 +104,12 @@
\globaldefs=0\relax
}
\pgfplotsset{
+ colormap={rainbow}{
+ color(0)=(violet); color(1)=(blue); color(2)=(darkgreen);
+ color(3)=(yellow); color(4)=(orange); color(5)=(red)
+ },
+}
+\pgfplotsset{
legend cell align=left,
legend style={
at={(1,1)},
@@ -110,7 +126,6 @@
}
\pgfplotsset{
contour legend/.style={
- contour prepared={labels=false},
colorbar sampled line,
colorbar style={
mark size=7pt,
@@ -120,11 +135,10 @@
},
},
}
-\usepgfplotslibrary{colormaps}
\pgfplotsset{
contour legend x/.style={
colorbar horizontal,
- colormap/jet,
+ colormap name=rainbow,
contour legend,
colorbar style={
at={(0.5,1.025)},
diff --git a/Master/texmf-dist/tex/latex/hep-math-font/hep-math-font.sty b/Master/texmf-dist/tex/latex/hep-math-font/hep-math-font.sty
index 39b6d808750..796cd412e7b 100644
--- a/Master/texmf-dist/tex/latex/hep-math-font/hep-math-font.sty
+++ b/Master/texmf-dist/tex/latex/hep-math-font/hep-math-font.sty
@@ -16,7 +16,7 @@
%% LaTeX version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{hep-math-font}[2023/07/01 v1.2 selection of math fonts for latin modern]
+\ProvidesPackage{hep-math-font}[2024/11/01 v1.3 selection of math fonts for latin modern]
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
@@ -84,8 +84,8 @@
\AtBeginDocument{%
\@ifpackageloaded{esint}{%
\DeclareSymbolFont{largesymbolsA}{U}{ssesint}{m}{n}
- }{}
- }
+}{}
+}
\DeclareSymbolFontAlphabet{\mathrm}{operators}
\DeclareSymbolFontAlphabet{\mathnormal}{letters}
\ifhep@minion\else
@@ -103,83 +103,83 @@
\RequirePackage{textalpha}
\def\hep@Greek#1#2#3{
\protected\def#1{\TextOrMath{#3}{\ifnum\fam=0 \text{#3}\else#2\fi}}%
- }
+}
\def\hep@greek#1#2#3{\let#2=#1\hep@Greek#1#2#3}
- \providecommand*{\Alpha}{\textAlpha}
- \providecommand*{\Beta}{\textBeta}
- \hep@greek\Gamma\mathGamma\textGamma
- \hep@greek\Delta\mathDelta\textDelta
- \providecommand*{\Epsilon}{\textEpsilon}
- \providecommand*{\Zeta}{\textZeta}
- \providecommand*{\Eta}{\textEta}
- \hep@greek\Theta\mathTheta\textTheta
- \providecommand*{\Iota}{\textIota}
- \providecommand*{\Kappa}{\textKappa}
- \hep@greek\Lambda\mathLambda\textLambda
- \providecommand*{\Mu}{\textMu}
- \providecommand*{\Nu}{\textNu}
- \hep@greek\Xi\mathXi\textXi
- \providecommand*{\Omicron}{\textOmicron}
- \hep@greek\Pi\mathPi\textPi
- \providecommand*{\Rho}{\textRho}
- \hep@greek\Sigma\mathSigma\textSigma
- \providecommand*{\Tau}{\textTau}
- \hep@greek\Upsilon\mathUpsilon\textUpsilon
- \hep@greek\Phi\mathPhi\textPhi
- \providecommand*{\Chi}{\textChi}
- \hep@greek\Psi\mathPsi\textPsi
- \hep@greek\Omega\mathOmega\textOmega
- \hep@greek\alpha\mathalpha\textalpha
- \hep@greek\beta\mathbeta\textbeta
- \hep@greek\gamma\mathgamma\textgamma
- \hep@greek\delta\mathdelta\textdelta
- \hep@greek\epsilon\mathepsilon\textepsilon
- \hep@greek\zeta\mathzeta\textzeta
- \hep@greek\eta\matheta\texteta
- \hep@greek\theta\maththeta\texttheta
- \hep@greek\iota\mathiota\textiota
- \hep@greek\kappa\mathkappa\textkappa
- \hep@greek\lambda\mathlambda\textlambda
- \hep@greek\mu\mathmu\textmu
- \hep@greek\nu\mathnu\textnu
- \hep@greek\xi\mathxi\textxi
- \providecommand*{\omicron}{\textomicron}
- \hep@greek\pi\mathpi\textpi
- \hep@greek\rho\mathrho\textrho
- \hep@greek\sigma\mathsigma\textsigma
- \hep@greek\varsigma\mathvarsigma\textvarsigma
- \providecommand*{\finalsigma}{\varsigma}
- \hep@greek\tau\mathtau\texttau
- \hep@greek\upsilon\mathupsilon\textupsilon
- \hep@greek\phi\mathphi\textphi
- \hep@greek\chi\mathchi\textchi
- \hep@greek\psi\mathpsi\textpsi
- \hep@greek\omega\mathomega\textomega
- \hep@greek\digamma\mathdigamma\textdigamma
- \providecommand*{\Digamma}{\textDigamma}
- \providecommand*{\stigma}{\textstigma}
- \providecommand*{\varstigma}{\textvarstigma}
- \providecommand*{\koppa}{\textkoppa}
- \providecommand*{\Koppa}{\textKoppa}
- \providecommand*{\qoppa}{\textqoppa}
- \providecommand*{\Qoppa}{\textQoppa}
- \providecommand*{\Stigma}{\textStigma}
- \providecommand*{\Sampi}{\textSampi}
- \providecommand*{\sampi}{\textsampi}
- \hep@greek\varpi\mathvarpi\textpisymbol
- \providecommand*{\pisymbol}{\varpi}
- \hep@greek\varrho\mathvarrho\textrhosymbol
- \hep@greek\rhosymbol\mathvarrho\textrhosymbol
- \hep@greek\vartheta\mathvartheta\textthetasymbol
- \providecommand*{\thetasymbol}{\vartheta}
- \hep@greek\varepsilon\mathvarepsilon\textepsilon
- \hep@Greek\epsilonsymbol\mathepsilon\textepsilonsymbol
- \hep@greek\varphi\mathvarphi\textphi
- \hep@Greek\phisymbol\mathphi\textphisymbol
+ \providecommand*{\Alpha}{\textAlpha} % Α
+ \providecommand*{\Beta}{\textBeta} % Β
+ \hep@greek\Gamma\mathGamma\textGamma % Γ
+ \hep@greek\Delta\mathDelta\textDelta % Δ
+ \providecommand*{\Epsilon}{\textEpsilon} % Ε
+ \providecommand*{\Zeta}{\textZeta} % Ζ
+ \providecommand*{\Eta}{\textEta} % Η
+ \hep@greek\Theta\mathTheta\textTheta % Θ
+ \providecommand*{\Iota}{\textIota} % Ι
+ \providecommand*{\Kappa}{\textKappa} % Κ
+ \hep@greek\Lambda\mathLambda\textLambda % Λ
+ \providecommand*{\Mu}{\textMu} % Μ
+ \providecommand*{\Nu}{\textNu} % Ν
+ \hep@greek\Xi\mathXi\textXi % Ξ
+ \providecommand*{\Omicron}{\textOmicron} % Ο
+ \hep@greek\Pi\mathPi\textPi % Π
+ \providecommand*{\Rho}{\textRho} % Ρ
+ \hep@greek\Sigma\mathSigma\textSigma % Σ
+ \providecommand*{\Tau}{\textTau} % Τ
+ \hep@greek\Upsilon\mathUpsilon\textUpsilon % Υ
+ \hep@greek\Phi\mathPhi\textPhi % Φ
+ \providecommand*{\Chi}{\textChi} % Χ
+ \hep@greek\Psi\mathPsi\textPsi % Ψ
+ \hep@greek\Omega\mathOmega\textOmega % Ω
+ \hep@greek\alpha\mathalpha\textalpha % α
+ \hep@greek\beta\mathbeta\textbeta % β
+ \hep@greek\gamma\mathgamma\textgamma % γ
+ \hep@greek\delta\mathdelta\textdelta % δ
+ \hep@greek\epsilon\mathepsilon\textepsilon % ε
+ \hep@greek\zeta\mathzeta\textzeta % ζ
+ \hep@greek\eta\matheta\texteta % η
+ \hep@greek\theta\maththeta\texttheta % θ
+ \hep@greek\iota\mathiota\textiota % ι
+ \hep@greek\kappa\mathkappa\textkappa % κ
+ \hep@greek\lambda\mathlambda\textlambda % λ
+ \hep@greek\mu\mathmu\textmu % μ
+ \hep@greek\nu\mathnu\textnu % ν
+ \hep@greek\xi\mathxi\textxi % ξ
+ \providecommand*{\omicron}{\textomicron} % ο
+ \hep@greek\pi\mathpi\textpi % π
+ \hep@greek\rho\mathrho\textrho % ρ
+ \hep@greek\sigma\mathsigma\textsigma % σ
+ \hep@greek\varsigma\mathvarsigma\textvarsigma % ς
+ \providecommand*{\finalsigma}{\varsigma} % ς
+ \hep@greek\tau\mathtau\texttau % τ
+ \hep@greek\upsilon\mathupsilon\textupsilon % υ
+ \hep@greek\phi\mathphi\textphi % φ
+ \hep@greek\chi\mathchi\textchi % χ
+ \hep@greek\psi\mathpsi\textpsi % ψ
+ \hep@greek\omega\mathomega\textomega % ω
+ \hep@greek\digamma\mathdigamma\textdigamma % ϝ
+ \providecommand*{\Digamma}{\textDigamma} % Ϝ
+ \providecommand*{\stigma}{\textstigma} % ϛ
+ \providecommand*{\varstigma}{\textvarstigma} % ϛ stigma variant (CB.enc, teubner) not in LM
+ \providecommand*{\koppa}{\textkoppa} % ϟ (greek small letter koppa)
+ \providecommand*{\Koppa}{\textKoppa} % Ϟ (greek letter koppa)
+ \def\qoppa{\textqoppa} % ϙ (archaic koppa)
+ \providecommand*{\Qoppa}{\textQoppa} % Ϙ (archaic Koppa)
+ \providecommand*{\Stigma}{\textStigma} % Ϛ (in some fonts CT ligature)
+ \providecommand*{\Sampi}{\textSampi} % Ϡ
+ \providecommand*{\sampi}{\textsampi} % ϡ
+ \hep@greek\varpi\mathvarpi\textpisymbol %
+ \providecommand*{\pisymbol}{\varpi} %
+ \hep@greek\varrho\mathvarrho\textrhosymbol %
+ \hep@greek\rhosymbol\mathvarrho\textrhosymbol %
+ \hep@greek\vartheta\mathvartheta\textthetasymbol %
+ \providecommand*{\thetasymbol}{\vartheta} %
+ \hep@greek\varepsilon\mathvarepsilon\textepsilon %
+ \hep@Greek\epsilonsymbol\mathepsilon\textepsilonsymbol %
+ \hep@greek\varphi\mathvarphi\textphi %
+ \hep@Greek\phisymbol\mathphi\textphisymbol %
\ifdefined\varbeta
- \hep@greek\varbeta\mathvarbeta\textbetasymbol
+ \hep@greek\varbeta\mathvarbeta\textbetasymbol %
\else
- \providecommand*{\varbeta}{\textbetasymbol}
+ \providecommand*{\varbeta}{\textbetasymbol} %
\fi
\providecommand*{\betasymbol}{\varbeta}
\ifdefined\varkappa
@@ -189,46 +189,279 @@
\fi
\providecommand*{\kappasymbol}{\varkappa}
\providecommand*{\Thetasymbol}{\textThetasymbol}
- \@ifl@aded{def}{tuenc-greek}{\input{alphabeta-tuenc.def}}{}
- \@ifl@aded{def}{lgrenc}{\input{alphabeta-lgr.def}}{}
+\newcommand*{\alphabeta@select@precomposed}[1]{
+ \DeclareTextCompositeCommand{\accvaria}{#1}{\alpha}{\accvaria\textalpha}
+ \DeclareTextCompositeCommand{\accdasia}{#1}{\alpha}{\accdasia\textalpha}
+ \DeclareTextCompositeCommand{\accpsili}{#1}{\alpha}{\accpsili\textalpha}
+ \DeclareTextCompositeCommand{\accdasiavaria}{#1}{\alpha}{\accdasiavaria\textalpha}
+ \DeclareTextCompositeCommand{\acctonos}{#1}{\alpha}{\acctonos\textalpha}
+ \DeclareTextCompositeCommand{\accdasiaoxia}{#1}{\alpha}{\accdasiaoxia\textalpha}
+ \DeclareTextCompositeCommand{\accpsilioxia}{#1}{\alpha}{\accpsilioxia\textalpha}
+ \DeclareTextCompositeCommand{\accpsilivaria}{#1}{\alpha}{\accpsilivaria\textalpha}
+ \DeclareTextCompositeCommand{\accperispomeni}{#1}{\alpha}{\accperispomeni\textalpha}
+ \DeclareTextCompositeCommand{\accdasiaperispomeni}{#1}{\alpha}{\accdasiaperispomeni\textalpha}
+ \DeclareTextCompositeCommand{\accpsiliperispomeni}{#1}{\alpha}{\accpsiliperispomeni\textalpha}
+ \DeclareTextCompositeCommand{\accvaria}{#1}{\eta}{\accvaria\texteta}
+ \DeclareTextCompositeCommand{\accdasia}{#1}{\eta}{\accdasia\texteta}
+ \DeclareTextCompositeCommand{\accpsili}{#1}{\eta}{\accpsili\texteta}
+ \DeclareTextCompositeCommand{\acctonos}{#1}{\eta}{\acctonos\texteta}
+ \DeclareTextCompositeCommand{\accdasiaoxia}{#1}{\eta}{\accdasiaoxia\texteta}
+ \DeclareTextCompositeCommand{\accpsilioxia}{#1}{\eta}{\accpsilioxia\texteta}
+ \DeclareTextCompositeCommand{\accdasiavaria}{#1}{\eta}{\accdasiavaria\texteta}
+ \DeclareTextCompositeCommand{\accperispomeni}{#1}{\eta}{\accperispomeni\texteta}
+ \DeclareTextCompositeCommand{\accdasiaperispomeni}{#1}{\eta}{\accdasiaperispomeni\texteta}
+ \DeclareTextCompositeCommand{\accpsiliperispomeni}{#1}{\eta}{\accpsiliperispomeni\texteta}
+ \DeclareTextCompositeCommand{\accpsilivaria}{#1}{\eta}{\accpsilivaria\texteta}
+ \DeclareTextCompositeCommand{\accvaria}{#1}{\omega}{\accvaria\textomega}
+ \DeclareTextCompositeCommand{\accdasia}{#1}{\omega}{\accdasia\textomega}
+ \DeclareTextCompositeCommand{\accpsili}{#1}{\omega}{\accpsili\textomega}
+ \DeclareTextCompositeCommand{\accdasiavaria}{#1}{\omega}{\accdasiavaria\textomega}
+ \DeclareTextCompositeCommand{\acctonos}{#1}{\omega}{\acctonos\textomega}
+ \DeclareTextCompositeCommand{\accdasiaoxia}{#1}{\omega}{\accdasiaoxia\textomega}
+ \DeclareTextCompositeCommand{\accpsilioxia}{#1}{\omega}{\accpsilioxia\textomega}
+ \DeclareTextCompositeCommand{\accpsilivaria}{#1}{\omega}{\accpsilivaria\textomega}
+ \DeclareTextCompositeCommand{\accperispomeni}{#1}{\omega}{\accperispomeni\textomega}
+ \DeclareTextCompositeCommand{\accdasiaperispomeni}{#1}{\omega}{\accdasiaperispomeni\textomega}
+ \DeclareTextCompositeCommand{\accpsiliperispomeni}{#1}{\omega}{\accpsiliperispomeni\textomega}
+ \DeclareTextCompositeCommand{\accvaria}{#1}{\iota}{\accvaria\textiota}
+ \DeclareTextCompositeCommand{\accdasia}{#1}{\iota}{\accdasia\textiota}
+ \DeclareTextCompositeCommand{\accpsili}{#1}{\iota}{\accpsili\textiota}
+ \DeclareTextCompositeCommand{\accdasiavaria}{#1}{\iota}{\accdasiavaria\textiota}
+ \DeclareTextCompositeCommand{\acctonos}{#1}{\iota}{\acctonos\textiota}
+ \DeclareTextCompositeCommand{\accdasiaoxia}{#1}{\iota}{\accdasiaoxia\textiota}
+ \DeclareTextCompositeCommand{\accpsilioxia}{#1}{\iota}{\accpsilioxia\textiota}
+ \DeclareTextCompositeCommand{\accpsilivaria}{#1}{\iota}{\accpsilivaria\textiota}
+ \DeclareTextCompositeCommand{\accperispomeni}{#1}{\iota}{\accperispomeni\textiota}
+ \DeclareTextCompositeCommand{\accdasiaperispomeni}{#1}{\iota}{\accdasiaperispomeni\textiota}
+ \DeclareTextCompositeCommand{\accpsiliperispomeni}{#1}{\iota}{\accpsiliperispomeni\textiota}
+ \DeclareTextCompositeCommand{\accdialytika}{#1}{\iota}{\accdialytika\textiota}
+ \DeclareTextCompositeCommand{\accdialytikavaria}{#1}{\iota}{\accdialytikavaria\textiota}
+ \DeclareTextCompositeCommand{\accdialytikatonos}{#1}{\iota}{\accdialytikatonos\textiota}
+ \DeclareTextCompositeCommand{\accdialytikaperispomeni}{#1}{\iota}{\accdialytikaperispomeni\textiota}
+ \DeclareTextCompositeCommand{\accvaria}{#1}{\upsilon}{\accvaria\textupsilon}
+ \DeclareTextCompositeCommand{\accdasia}{#1}{\upsilon}{\accdasia\textupsilon}
+ \DeclareTextCompositeCommand{\accpsili}{#1}{\upsilon}{\accpsili\textupsilon}
+ \DeclareTextCompositeCommand{\accdasiavaria}{#1}{\upsilon}{\accdasiavaria\textupsilon}
+ \DeclareTextCompositeCommand{\acctonos}{#1}{\upsilon}{\acctonos\textupsilon}
+ \DeclareTextCompositeCommand{\accdasiaoxia}{#1}{\upsilon}{\accdasiaoxia\textupsilon}
+ \DeclareTextCompositeCommand{\accpsilioxia}{#1}{\upsilon}{\accpsilioxia\textupsilon}
+ \DeclareTextCompositeCommand{\accpsilivaria}{#1}{\upsilon}{\accpsilivaria\textupsilon}
+ \DeclareTextCompositeCommand{\accperispomeni}{#1}{\upsilon}{\accperispomeni\textupsilon}
+ \DeclareTextCompositeCommand{\accdasiaperispomeni}{#1}{\upsilon}{\accdasiaperispomeni\textupsilon}
+ \DeclareTextCompositeCommand{\accpsiliperispomeni}{#1}{\upsilon}{\accpsiliperispomeni\textupsilon}
+ \DeclareTextCompositeCommand{\accdialytika}{#1}{\upsilon}{\accdialytika\textupsilon}
+ \DeclareTextCompositeCommand{\accdialytikavaria}{#1}{\upsilon}{\accdialytikavaria\textupsilon}
+ \DeclareTextCompositeCommand{\accdialytikatonos}{#1}{\upsilon}{\accdialytikatonos\textupsilon}
+ \DeclareTextCompositeCommand{\accdialytikaperispomeni}{#1}{\upsilon}{\accdialytikaperispomeni\textupsilon}
+ \DeclareTextCompositeCommand{\accvaria}{#1}{\epsilon}{\accvaria\textepsilon}
+ \DeclareTextCompositeCommand{\accdasia}{#1}{\epsilon}{\accdasia\textepsilon}
+ \DeclareTextCompositeCommand{\accpsili}{#1}{\epsilon}{\accpsili\textepsilon}
+ \DeclareTextCompositeCommand{\accdasiavaria}{#1}{\epsilon}{\accdasiavaria\textepsilon}
+ \DeclareTextCompositeCommand{\acctonos}{#1}{\epsilon}{\acctonos\textepsilon}
+ \DeclareTextCompositeCommand{\accdasiaoxia}{#1}{\epsilon}{\accdasiaoxia\textepsilon}
+ \DeclareTextCompositeCommand{\accpsilioxia}{#1}{\epsilon}{\accpsilioxia\textepsilon}
+ \DeclareTextCompositeCommand{\accpsilivaria}{#1}{\epsilon}{\accpsilivaria\textepsilon}
+ \DeclareTextCompositeCommand{\accvaria}{#1}{\omicron}{\accvaria\textomicron}
+ \DeclareTextCompositeCommand{\accdasia}{#1}{\omicron}{\accdasia\textomicron}
+ \DeclareTextCompositeCommand{\accpsili}{#1}{\omicron}{\accpsili\textomicron}
+ \DeclareTextCompositeCommand{\accdasiavaria}{#1}{\omicron}{\accdasiavaria\textomicron}
+ \DeclareTextCompositeCommand{\acctonos}{#1}{\omicron}{\acctonos\textomicron}
+ \DeclareTextCompositeCommand{\accdasiaoxia}{#1}{\omicron}{\accdasiaoxia\textomicron}
+ \DeclareTextCompositeCommand{\accpsilioxia}{#1}{\omicron}{\accpsilioxia\textomicron}
+ \DeclareTextCompositeCommand{\accpsilivaria}{#1}{\omicron}{\accpsilivaria\textomicron}
+ \DeclareTextCompositeCommand{\accdasia}{#1}{\Alpha}{\accdasia\textAlpha}
+ \DeclareTextCompositeCommand{\accdasiavaria}{#1}{\Alpha}{\accdasiavaria\textAlpha}
+ \DeclareTextCompositeCommand{\accdasiaoxia}{#1}{\Alpha}{\accdasiaoxia\textAlpha}
+ \DeclareTextCompositeCommand{\accdasiaperispomeni}{#1}{\Alpha}{\accdasiaperispomeni\textAlpha}
+ \DeclareTextCompositeCommand{\accpsili}{#1}{\Alpha}{\accpsili\textAlpha}
+ \DeclareTextCompositeCommand{\accpsilivaria}{#1}{\Alpha}{\accpsilivaria\textAlpha}
+ \DeclareTextCompositeCommand{\accpsilioxia}{#1}{\Alpha}{\accpsilioxia\textAlpha}
+ \DeclareTextCompositeCommand{\accpsiliperispomeni}{#1}{\Alpha}{\accpsiliperispomeni\textAlpha}
+ \DeclareTextCompositeCommand{\acctonos}{#1}{\Alpha}{\acctonos\textAlpha}
+ \DeclareTextCompositeCommand{\accvaria}{#1}{\Alpha}{\accvaria\textAlpha}
+ \DeclareTextCompositeCommand{\accdasia}{#1}{\Epsilon}{\accdasia\textEpsilon}
+ \DeclareTextCompositeCommand{\accdasiaoxia}{#1}{\Epsilon}{\accdasiaoxia\textEpsilon}
+ \DeclareTextCompositeCommand{\accdasiavaria}{#1}{\Epsilon}{\accdasiavaria\textEpsilon}
+ \DeclareTextCompositeCommand{\accpsili}{#1}{\Epsilon}{\accpsili\textEpsilon}
+ \DeclareTextCompositeCommand{\accpsilioxia}{#1}{\Epsilon}{\accpsilioxia\textEpsilon}
+ \DeclareTextCompositeCommand{\accpsilivaria}{#1}{\Epsilon}{\accpsilivaria\textEpsilon}
+ \DeclareTextCompositeCommand{\acctonos}{#1}{\Epsilon}{\acctonos\textEpsilon}
+ \DeclareTextCompositeCommand{\accvaria}{#1}{\Epsilon}{\accvaria\textEpsilon}
+ \DeclareTextCompositeCommand{\accdasia}{#1}{\Eta}{\accdasia\textEta}
+ \DeclareTextCompositeCommand{\accdasiavaria}{#1}{\Eta}{\accdasiavaria\textEta}
+ \DeclareTextCompositeCommand{\accdasiaoxia}{#1}{\Eta}{\accdasiaoxia\textEta}
+ \DeclareTextCompositeCommand{\accdasiaperispomeni}{#1}{\Eta}{\accdasiaperispomeni\textEta}
+ \DeclareTextCompositeCommand{\accpsili}{#1}{\Eta}{\accpsili\textEta}
+ \DeclareTextCompositeCommand{\accpsilivaria}{#1}{\Eta}{\accpsilivaria\textEta}
+ \DeclareTextCompositeCommand{\accpsilioxia}{#1}{\Eta}{\accpsilioxia\textEta}
+ \DeclareTextCompositeCommand{\accpsiliperispomeni}{#1}{\Eta}{\accpsiliperispomeni\textEta}
+ \DeclareTextCompositeCommand{\acctonos}{#1}{\Eta}{\acctonos\textEta}
+ \DeclareTextCompositeCommand{\accvaria}{#1}{\Eta}{\accvaria\textEta}
+ \DeclareTextCompositeCommand{\accdasia}{#1}{\Iota}{\accdasia\textIota}
+ \DeclareTextCompositeCommand{\accdasiavaria}{#1}{\Iota}{\accdasiavaria\textIota}
+ \DeclareTextCompositeCommand{\accdasiaoxia}{#1}{\Iota}{\accdasiaoxia\textIota}
+ \DeclareTextCompositeCommand{\accdasiaperispomeni}{#1}{\Iota}{\accdasiaperispomeni\textIota}
+ \DeclareTextCompositeCommand{\accdialytika}{#1}{\Iota}{\accdialytika\textIota}
+ \DeclareTextCompositeCommand{\accpsili}{#1}{\Iota}{\accpsili\textIota}
+ \DeclareTextCompositeCommand{\accpsilivaria}{#1}{\Iota}{\accpsilivaria\textIota}
+ \DeclareTextCompositeCommand{\accpsilioxia}{#1}{\Iota}{\accpsilioxia\textIota}
+ \DeclareTextCompositeCommand{\accpsiliperispomeni}{#1}{\Iota}{\accpsiliperispomeni\textIota}
+ \DeclareTextCompositeCommand{\acctonos}{#1}{\Iota}{\acctonos\textIota}
+ \DeclareTextCompositeCommand{\accvaria}{#1}{\Iota}{\accvaria\textIota}
+ \DeclareTextCompositeCommand{\accdasia}{#1}{\Omicron}{\accdasia\textOmicron}
+ \DeclareTextCompositeCommand{\accdasiavaria}{#1}{\Omicron}{\accdasiavaria\textOmicron}
+ \DeclareTextCompositeCommand{\accdasiaoxia}{#1}{\Omicron}{\accdasiaoxia\textOmicron}
+ \DeclareTextCompositeCommand{\accpsili}{#1}{\Omicron}{\accpsili\textOmicron}
+ \DeclareTextCompositeCommand{\accpsilivaria}{#1}{\Omicron}{\accpsilivaria\textOmicron}
+ \DeclareTextCompositeCommand{\accpsilioxia}{#1}{\Omicron}{\accpsilioxia\textOmicron}
+ \DeclareTextCompositeCommand{\acctonos}{#1}{\Omicron}{\acctonos\textOmicron}
+ \DeclareTextCompositeCommand{\accvaria}{#1}{\Omicron}{\accvaria\textOmicron}
+ \DeclareTextCompositeCommand{\accdasia}{#1}{\Upsilon}{\accdasia\textUpsilon}
+ \DeclareTextCompositeCommand{\accdasiavaria}{#1}{\Upsilon}{\accdasiavaria\textUpsilon}
+ \DeclareTextCompositeCommand{\accdasiaoxia}{#1}{\Upsilon}{\accdasiaoxia\textUpsilon}
+ \DeclareTextCompositeCommand{\accdasiaperispomeni}{#1}{\Upsilon}{\accdasiaperispomeni\textUpsilon}
+ \DeclareTextCompositeCommand{\accdialytika}{#1}{\Upsilon}{\accdialytika\textUpsilon}
+ \DeclareTextCompositeCommand{\acctonos}{#1}{\Upsilon}{\acctonos\textUpsilon}
+ \DeclareTextCompositeCommand{\accvaria}{#1}{\Upsilon}{\accvaria\textUpsilon}
+ \DeclareTextCompositeCommand{\accdasia}{#1}{\Rho}{\accdasia\textRho}
+ \DeclareTextCompositeCommand{\accdasia}{#1}{\Omega}{\accdasia\textOmega}
+ \DeclareTextCompositeCommand{\accdasiavaria}{#1}{\Omega}{\accdasiavaria\textOmega}
+ \DeclareTextCompositeCommand{\accdasiaoxia}{#1}{\Omega}{\accdasiaoxia\textOmega}
+ \DeclareTextCompositeCommand{\accdasiaperispomeni}{#1}{\Omega}{\accdasiaperispomeni\textOmega}
+ \DeclareTextCompositeCommand{\accpsili}{#1}{\Omega}{\accpsili\textOmega}
+ \DeclareTextCompositeCommand{\accpsilivaria}{#1}{\Omega}{\accpsilivaria\textOmega}
+ \DeclareTextCompositeCommand{\accpsilioxia}{#1}{\Omega}{\accpsilioxia\textOmega}
+ \DeclareTextCompositeCommand{\accpsiliperispomeni}{#1}{\Omega}{\accpsiliperispomeni\textOmega}
+ \DeclareTextCompositeCommand{\acctonos}{#1}{\Omega}{\acctonos\textOmega}
+ \DeclareTextCompositeCommand{\accvaria}{#1}{\Omega}{\accvaria\textOmega}
+}
+
+\newcommand*{\alphabeta@drop@capital@accents}[1]{
+ \DeclareTextCompositeCommand{\accACUTE}{#1}{\Alpha}{\alphabeta@alpha@hiatus}
+ \DeclareTextCompositeCommand{\accACUTE}{#1}{\Epsilon}{\alphabeta@epsilon@hiatus}
+ \DeclareTextCompositeCommand{\accACUTE}{#1}{\Eta}{\textEta}
+ \DeclareTextCompositeCommand{\accACUTE}{#1}{\Iota}{\textIota}
+ \DeclareTextCompositeCommand{\accACUTE}{#1}{\Upsilon}{\textUpsilon}
+ \DeclareTextCompositeCommand{\accACUTE}{#1}{\Omega}{\textOmega}
+ \DeclareTextCompositeCommand{\accGRAVE}{#1}{\Alpha}{\textAlpha}
+ \DeclareTextCompositeCommand{\accGRAVE}{#1}{\Epsilon}{\textEpsilon}
+ \DeclareTextCompositeCommand{\accGRAVE}{#1}{\Eta}{\textEta}
+ \DeclareTextCompositeCommand{\accGRAVE}{#1}{\Iota}{\textIota}
+ \DeclareTextCompositeCommand{\accGRAVE}{#1}{\Upsilon}{\textUpsilon}
+ \DeclareTextCompositeCommand{\accGRAVE}{#1}{\Omega}{\textOmega}
+ \DeclareTextCompositeCommand{\accTILDE}{#1}{\Alpha}{\textAlpha}
+ \DeclareTextCompositeCommand{\accTILDE}{#1}{\Eta}{\textEta}
+ \DeclareTextCompositeCommand{\accTILDE}{#1}{\Iota}{\textIota}
+ \DeclareTextCompositeCommand{\accTILDE}{#1}{\Upsilon}{\textUpsilon}
+ \DeclareTextCompositeCommand{\accTILDE}{#1}{\Omega}{\textOmega}
+}
+
+
+\newcommand*{\alphabeta@hiatus@composites}[1]{
+ \DeclareTextCommand{\alphabeta@alpha@hiatus}{#1}{%
+ \csname LGR@ifnextchar\endcsname {\Iota}{\Alpha\"}{%
+ \csname LGR@ifnextchar\endcsname {\Upsilon}{\Alpha\"}{\Alpha}%
+}%
+}
+ \DeclareTextCommand{\alphabeta@epsilon@hiatus}{#1}{%
+ \csname LGR@ifnextchar\endcsname {\Iota}{\Epsilon\"}{%
+ \csname LGR@ifnextchar\endcsname {\Upsilon}{\Epsilon\"}{\Epsilon}%
+}%
+}
+ \DeclareTextCompositeCommand{\LGR@hiatus}{#1}{\Alpha}{\alphabeta@alpha@hiatus}
+ \DeclareTextCompositeCommand{\LGR@hiatus}{#1}{\Epsilon}{\alphabeta@epsilon@hiatus}
+}
+
+
+\@ifl@aded{def}{tuenc-greek}{
+ \DeclareUnicodeComposite{\~}{\alpha}{"1FB6} % ᾶ
+ \DeclareUnicodeComposite{\~}{\eta}{"1FC6} % ῆ
+ \DeclareUnicodeComposite{\~}{\iota}{"1FD6} % ῖ
+ \DeclareUnicodeComposite{\~}{\upsilon}{"1FE6} % ῦ
+ \DeclareUnicodeComposite{\~}{\omega}{"1FF6} % ῶ
+ \alphabeta@drop@capital@accents{\UnicodeEncodingName}
+ \alphabeta@hiatus@composites{\UnicodeEncodingName}
+}{}
+
+
+\@ifl@aded{def}{lgrenc}{
+ \alphabeta@select@precomposed{LGR}
+ \alphabeta@hiatus@composites{LGR}
+}{}
+
+\@ifl@aded{def}{puenc}{
+ \alphabeta@select@precomposed{PU}
+ \alphabeta@drop@capital@accents{PU}
+ \DeclareTextCompositeCommand{\LGR@hiatus}{PU}{\Alpha}{\textAlpha}
+ \DeclareTextCompositeCommand{\LGR@hiatus}{PU}{\Epsilon}{\textEpsilon}
+ \DeclareTextCompositeCommand{\accACUTE}{PU}{\Alpha}{\textAlpha}
+ \DeclareTextCompositeCommand{\accACUTE}{PU}{\Epsilon}{\textEpsilon}
+}{}
+\renewcommand*{\alphabeta@select@precomposed}{\relax}
+\renewcommand*{\alphabeta@drop@capital@accents}{\relax}
+\renewcommand*{\alphabeta@hiatus@composites}{\relax}
+
+
+\providecommand*\alphabeta@update@uclclist{%
+ \expandafter\def\expandafter\@uclclist\expandafter{%
+ \@uclclist
+ \alpha \Alpha
+ \epsilon \Epsilon
+ \epsilonsymbol \Epsilon
+ \varepsilon \Epsilon
+ \eta \Eta
+ \iota \Iota
+ \omicron \Omicron
+ \rho \Rho
+ \varrho \Rho
+ \rhosymbol \Rho
+ \upsilon \Upsilon
+ \omega \Omega
+ \epsilon \Epsilon
+ \rho \Rho
+}%
+ \let\alphabeta@update@uclclist\relax
+}
+\alphabeta@update@uclclist
+
\ifdefined\DeclareUnicodeCharacter
- \DeclareUnicodeCharacter{0393}{\Gamma}
- \DeclareUnicodeCharacter{0394}{\Delta}
- \DeclareUnicodeCharacter{0398}{\Theta}
- \DeclareUnicodeCharacter{039B}{\Lambda}
- \DeclareUnicodeCharacter{039E}{\Xi}
- \DeclareUnicodeCharacter{03A0}{\Pi}
- \DeclareUnicodeCharacter{03A3}{\Sigma}
- \DeclareUnicodeCharacter{03A5}{\Upsilon}
- \DeclareUnicodeCharacter{03A6}{\Phi}
- \DeclareUnicodeCharacter{03A8}{\Psi}
- \DeclareUnicodeCharacter{03A9}{\Omega}
- \DeclareUnicodeCharacter{03B1}{\alpha}
- \DeclareUnicodeCharacter{03B2}{\beta}
- \DeclareUnicodeCharacter{03B3}{\gamma}
- \DeclareUnicodeCharacter{03B4}{\delta}
- \DeclareUnicodeCharacter{03B5}{\varepsilon}
- \DeclareUnicodeCharacter{03B6}{\zeta}
- \DeclareUnicodeCharacter{03B7}{\eta}
- \DeclareUnicodeCharacter{03B8}{\theta}
- \DeclareUnicodeCharacter{03B9}{\iota}
- \DeclareUnicodeCharacter{03BA}{\kappa}
- \DeclareUnicodeCharacter{03BB}{\lambda}
- \DeclareUnicodeCharacter{03BC}{\mu}
- \DeclareUnicodeCharacter{03BD}{\nu}
- \DeclareUnicodeCharacter{03BE}{\xi}
- \DeclareUnicodeCharacter{03C0}{\pi}
- \DeclareUnicodeCharacter{03C1}{\rho}
- \DeclareUnicodeCharacter{03C2}{\varsigma}
- \DeclareUnicodeCharacter{03C3}{\sigma}
- \DeclareUnicodeCharacter{03C4}{\tau}
- \DeclareUnicodeCharacter{03C5}{\upsilon}
- \DeclareUnicodeCharacter{03C6}{\varphi}
- \DeclareUnicodeCharacter{03C7}{\chi}
- \DeclareUnicodeCharacter{03C8}{\psi}
- \DeclareUnicodeCharacter{03C9}{\omega}
- \DeclareUnicodeCharacter{03D1}{\thetasymbol}
- \DeclareUnicodeCharacter{03D5}{\phisymbol}
+ \DeclareUnicodeCharacter{0393}{\Gamma} % Γ
+ \DeclareUnicodeCharacter{0394}{\Delta} % Δ
+ \DeclareUnicodeCharacter{0398}{\Theta} % Θ
+ \DeclareUnicodeCharacter{039B}{\Lambda} % Λ
+ \DeclareUnicodeCharacter{039E}{\Xi} % Ξ
+ \DeclareUnicodeCharacter{03A0}{\Pi} % Π
+ \DeclareUnicodeCharacter{03A3}{\Sigma} % Σ
+ \DeclareUnicodeCharacter{03A5}{\Upsilon} % Υ
+ \DeclareUnicodeCharacter{03A6}{\Phi} % Φ
+ \DeclareUnicodeCharacter{03A8}{\Psi} % Ψ
+ \DeclareUnicodeCharacter{03A9}{\Omega} % Ω
+ \DeclareUnicodeCharacter{03B1}{\alpha} % α
+ \DeclareUnicodeCharacter{03B2}{\beta} % β
+ \DeclareUnicodeCharacter{03B3}{\gamma} % γ
+ \DeclareUnicodeCharacter{03B4}{\delta} % δ
+ \DeclareUnicodeCharacter{03B5}{\varepsilon} % ε textepsilon/varepsilon
+ \DeclareUnicodeCharacter{03B6}{\zeta} % ζ
+ \DeclareUnicodeCharacter{03B7}{\eta} % η
+ \DeclareUnicodeCharacter{03B8}{\theta} % θ
+ \DeclareUnicodeCharacter{03B9}{\iota} % ι
+ \DeclareUnicodeCharacter{03BA}{\kappa} % κ
+ \DeclareUnicodeCharacter{03BB}{\lambda} % λ
+ \DeclareUnicodeCharacter{03BC}{\mu} % μ
+ \DeclareUnicodeCharacter{03BD}{\nu} % ν
+ \DeclareUnicodeCharacter{03BE}{\xi} % ξ
+ \DeclareUnicodeCharacter{03C0}{\pi} % π
+ \DeclareUnicodeCharacter{03C1}{\rho} % ρ
+ \DeclareUnicodeCharacter{03C2}{\varsigma} % ς
+ \DeclareUnicodeCharacter{03C3}{\sigma} % σ
+ \DeclareUnicodeCharacter{03C4}{\tau} % τ
+ \DeclareUnicodeCharacter{03C5}{\upsilon} % υ
+ \DeclareUnicodeCharacter{03C6}{\varphi} % φ textphi/varphi
+ \DeclareUnicodeCharacter{03C7}{\chi} % χ
+ \DeclareUnicodeCharacter{03C8}{\psi} % ψ
+ \DeclareUnicodeCharacter{03C9}{\omega} % ω
+ \DeclareUnicodeCharacter{03D1}{\thetasymbol} %
+ \DeclareUnicodeCharacter{03D5}{\phisymbol} %
\DeclareUnicodeCharacter{03D6}{\pisymbol}
\DeclareUnicodeCharacter{03DD}{\digamma}
\DeclareUnicodeCharacter{03F1}{\rhosymbol}
@@ -238,15 +471,14 @@
\ifxetexorluatex
% missing code
\else
- \RequirePackage{substitutefont}
- \substitutefont{LGR}{\rmdefault}{lmr}
+ \DeclareFontFamilySubstitution{LGR}{\rmdefault}{lmr}
\DeclareFontFamily{LGR}{\rmdefault}{}
\DeclareFontShape{LGR}{\rmdefault}{b}{n}{<->ssub*lmr/bx/n}{}
\DeclareFontShape{LGR}{\rmdefault}{b}{sc}{<->ssub*lmr/bx/sc}{}
- \substitutefont{LGR}{\ttdefault}{lmtt}
+ \DeclareFontFamilySubstitution{LGR}{\ttdefault}{lmtt}
\DeclareFontFamily{LGR}{\ttdefault}{}
\DeclareFontShape{LGR}{\ttdefault}{b}{n}{<->ssub*lmtt/bx/n}{}
- \substitutefont{LGR}{\sfdefault}{lmss}
+ \DeclareFontFamilySubstitution{LGR}{\sfdefault}{lmss}
\DeclareFontFamily{LGR}{\sfdefault}{}
\DeclareFontShape{LGR}{\sfdefault}{b}{n}{<->ssub*lmss/bx/n}{}
\DeclareFontShape{LGR}{\sfdefault}{b}{sc}{<->ssub*lmss/bx/sc}{}
@@ -266,12 +498,12 @@
\ifhep@minion
\DeclareMathAlphabet{\mathbb}{U}{%
\ifhepmathfont@serif dsrom\else dsss\fi%
- }{m}{n}
+}{m}{n}
\else
\ifhep@ams\else
\SetMathAlphabet{\mathbb}{normal}{U}{%
\ifhepmathfont@serif dsrom\else dsss\fi%
- }{m}{n}
+}{m}{n}
\fi
\fi
\fi
diff --git a/Master/texmf-dist/tex/latex/hep-math/hep-math.sty b/Master/texmf-dist/tex/latex/hep-math/hep-math.sty
index 78703dd14f4..4743a1d115e 100644
--- a/Master/texmf-dist/tex/latex/hep-math/hep-math.sty
+++ b/Master/texmf-dist/tex/latex/hep-math/hep-math.sty
@@ -16,7 +16,7 @@
%% LaTeX version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{hep-math}[2023/07/01 v1.2 Math and physics macros]
+\ProvidesPackage{hep-math}[2024/11/01 v1.3 Math and physics macros]
\RequirePackage{mathtools}
\mathtoolsset{centercolon}
@@ -41,7 +41,7 @@
}
\newcommand{\imaginaryunit}{\text{i}}
\AtBeginDocument{\mathdef{\i}{\imaginaryunit}}
-\RequirePackage{soulutf8}
+\RequirePackage{soul}
\newcommand\textoverline[1]{{\setul{-1.9ex}{}\ul{#1}}}
\let\overline\textoverline
\DeclareRobustCommand{\over@line}[1]{\@@overline{#1}}
@@ -126,11 +126,6 @@
}%
}%
}
-\let\hep@int\int
-\RenewDocumentCommand{\int}{oe{_^}}{%
- \def\temp{\hep@int_{\IfValueT{#2}{#2}}^{\IfValueT{#3}{#3}}}%
- \IfValueTF{#1}{\mathop{\temp#1}}{\temp}%
-}
\newcommand{\differential}[1]{\mathop{}\!#1}
\newcommand\newderivative[2]{
\NewDocumentCommand{#1}{somse{^}}{%
@@ -141,7 +136,7 @@
}{%
\differential#2\IfValueT{##5}{^{##5\!}}\IfValueT{##2}{##2}%
}{%
- \differential#2{##3}\IfValueT{##5}{^{##5}}%
+ \differential#2{{}##3}\IfValueT{##5}{^{##5}}%
}%
}
}
@@ -158,7 +153,7 @@
\differential#2\ifnum\hep@sum=1\relax\else{^{\hep@sum\!}}\fi
\IfValueT{##2}{##2}%
}{%
- \differential#2{##3}\ifnum##5=1\relax\else{^{##5}}\fi%
+ \differential#2{{}##3}\ifnum##5=1\relax\else{^{##5}}\fi%
\IfValueT{##6}{#2##6\ifnum##7=1\relax\else{^{##7}}\fi}%
\IfValueT{##8}{#2##8\ifnum##9=1\relax\else{^{##9}}\fi}%
}%
@@ -170,6 +165,8 @@
\newderivative{\derivative}{\diffsymbol}
\newcommand\dv{\derivative}
\newcommand\partialdifferential{\differential\partial}
+\newcommand\slashedpartialdifferential{\differential{\slashed\partial}}
+\newcommand\spd{\slashedpartialdifferential}
\newcommand\pd{\partialdifferential}
\newpartialderivative{\partialderivative}{\partial}
\newcommand\pdv{\partialderivative}
@@ -185,8 +182,9 @@
\RequirePackage{cancel}
\RequirePackage{slashed}
\declareslashed{}{/}{.14}{0}{L}
-\declareslashed{}{/}{.06}{0}{\D}
-\declareslashed{}{/}{.055}{0}{\pd}
+\declareslashed{}{/}{.055}{0}{\partial}
+\declareslashed{}{/}{.06}{0}{\gaugediff}
+\declareslashed{}{/}{.055}{0}{\partialdifferential}
\RequirePackage{mleftright}
\mleftright
\RequirePackage{etoolbox}
@@ -230,11 +228,16 @@
\begin{matrix}\seq_use:Nn\hep@seq{\\}\end{matrix}%
}
\ExplSyntaxOff
-\DeclarePairedDelimiterX{\row}[1]{(}{)}{\hep@row{#1}}
-\NewDocumentCommand{\column}{me{^}e{_}}{%
+\DeclarePairedDelimiterX{\hep@row@}[1]{(}{)}{\hep@row{#1}}
+\NewDocumentCommand{\hep@column@}{me{^}e{_}}{%
\left(\hep@column{#1}\right)%
\IfValueT{#2}{^{\!\!\!#2}}\IfValueT{#3}{_{\!\!\!#3}}%
}
+\providecommand{\column}{}
+\providecommand{\row}{}
+\mathdef{\column}{\hep@column@}
+\providecommand{\row}{}
+\mathdef{\row}{\hep@row@}
\newcommand\hep@left@delim{\mathopen{}}
\providecommand{\midbar}[1][]{%
diff --git a/Master/texmf-dist/tex/latex/hep-paper/hep-paper.sty b/Master/texmf-dist/tex/latex/hep-paper/hep-paper.sty
index eeaf89fa151..9ae39709a2f 100644
--- a/Master/texmf-dist/tex/latex/hep-paper/hep-paper.sty
+++ b/Master/texmf-dist/tex/latex/hep-paper/hep-paper.sty
@@ -15,7 +15,7 @@
%% and version 1.3c or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{hep-paper}[2023/07/01 v2.2 Publications in High Energy Physics]
+\ProvidesPackage{hep-paper}[2024/11/01 v2.3 Publications in High Energy Physics]
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
@@ -75,12 +75,14 @@
\fi
\@ifclassloaded{PoS}{\setkeys{hep}{pos}}{}
\ifhep@pos
- \setkeys{hep}{defaults, title=false}
+ \setkeys{hep}{defaults, title=false, references=false, font=default}
\DeclareRobustCommand\boldmath{\@nomath\boldmath\mathversion{bold}}
+ \PassOptionsToPackage{hidelinks}{hyperref}
+ \RequirePackage{hyperref}
\fi
\@ifclassloaded{beamer}{\setkeys{hep}{beamer}}{}
\ifhep@beamer
- \setkeys{hep}{defaults, title=false, references=false, sansserif}
+ \setkeys{hep}{defaults, title=false, references=false, sansserif, font=default}
\@ifpackageloaded{beamerbasefont}{\usefonttheme{professionalfonts}}{}
\setbeamertemplate{navigation symbols}{}
\fi
diff --git a/Master/texmf-dist/tex/latex/hep-reference/hep-reference.sty b/Master/texmf-dist/tex/latex/hep-reference/hep-reference.sty
index 9aeb281f86f..b8d82b7566b 100644
--- a/Master/texmf-dist/tex/latex/hep-reference/hep-reference.sty
+++ b/Master/texmf-dist/tex/latex/hep-reference/hep-reference.sty
@@ -15,7 +15,7 @@
%% and version 1.3c or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{hep-reference}[2023/07/01 v1.2 Convenience macros for references]
+\ProvidesPackage{hep-reference}[2024/11/01 v1.3 Convenience macros for references]
\RequirePackage{hyperref}
\hypersetup{
diff --git a/Master/texmf-dist/tex/latex/hep-text/hep-text.sty b/Master/texmf-dist/tex/latex/hep-text/hep-text.sty
index ec7be682a45..9edeb49fb96 100644
--- a/Master/texmf-dist/tex/latex/hep-text/hep-text.sty
+++ b/Master/texmf-dist/tex/latex/hep-text/hep-text.sty
@@ -16,7 +16,7 @@
%% LaTeX version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{hep-text}[2023/07/01 v1.2 Some text macros]
+\ProvidesPackage{hep-text}[2024/11/01 v1.3 Some text macros]
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
@@ -29,7 +29,7 @@
\RequirePackage{babel}
\PassOptionsToPackage{autostyle}{csquotes}
\RequirePackage{csquotes}
-\RequirePackage{soulutf8}
+\RequirePackage{soul}
\let\underline\textul
\RequirePackage{pdftexcmds}
\ifnum\pdf@strcmp{\heptext@lang}{american}=0
diff --git a/Master/texmf-dist/tex/latex/hep-title/hep-title.sty b/Master/texmf-dist/tex/latex/hep-title/hep-title.sty
index c248924dfc1..d53a9e46c30 100644
--- a/Master/texmf-dist/tex/latex/hep-title/hep-title.sty
+++ b/Master/texmf-dist/tex/latex/hep-title/hep-title.sty
@@ -16,7 +16,7 @@
%% LaTeX version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{hep-title}[2023/07/01 v1.2 Extend title page macros]
+\ProvidesPackage{hep-title}[2024/11/01 v1.3 Extend title page macros]
\providecommand{\online}[2]{\texttt{#2}}%
\providecommand{\hep@email}[1]{\online{mailto:#1}{#1}}
diff --git a/Master/texmf-dist/tex/latex/hideanswer/hideanswer.sty b/Master/texmf-dist/tex/latex/hideanswer/hideanswer.sty
index ea1bc70983d..94f2b529235 100644
--- a/Master/texmf-dist/tex/latex/hideanswer/hideanswer.sty
+++ b/Master/texmf-dist/tex/latex/hideanswer/hideanswer.sty
@@ -1,16 +1,16 @@
%%
%% hideanswer.sty
%%
-%% Copyright (C) 2022 Yukoh KUSAKABE (screen-name)
+%% Copyright (C) 2022--2024 Yukoh KUSAKABE (screen-name)
%% https://www.metaphysica.info/
-%% https://twitter.com/metaphysicainfo
+%% https://x.com/metaphysicainfo
%%
%% This package released under
%% [the MIT license](https://ctan.org/license/mit).
%%
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{hideanswer}[2022/07/09 v1.1]
+\ProvidesPackage{hideanswer}[2024/11/23 v1.2]
%
%% for \color
\RequirePackage{color}
diff --git a/Master/texmf-dist/tex/latex/highlightx/highlightx.sty b/Master/texmf-dist/tex/latex/highlightx/highlightx.sty
index d9af8868c2e..1d2387a5857 100644
--- a/Master/texmf-dist/tex/latex/highlightx/highlightx.sty
+++ b/Master/texmf-dist/tex/latex/highlightx/highlightx.sty
@@ -3,9 +3,10 @@
% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{highlightx}[2023/11/09 0.1.5 Macros pour surligner du texte, meme en mode paragraphe]
+\ProvidesPackage{highlightx}[2024/10/22 0.1.6 Macros pour surligner du texte, meme en mode paragraphe]
%====HISTORIQUE
+% v 0.1.6 Ajout d'une clé pour l'opacité du texte d'une formule
% v 0.1.5 Mise à jour de la doc
% v 0.1.4 Passage \tikzstyle vers \tikzset (merci à Sam C.)
% v 0.1.3 Correction d'un bug avec le caractère ; (merci à Denis B.)
@@ -38,16 +39,18 @@
Fond=\def\surlignformulefond{#1},%
Bord=\def\surlignformulebord{#1},%
Texte=\def\surlignformuletexte{#1},%
- Offset=\def\surlignformuleoffset{#1}
+ Offset=\def\surlignformuleoffset{#1},%
+ OpaciteTexte=\def\surlignformuleopac{#1}
}
\setKVdefault[surlignformule]{%
Fond=hlcolback,%
Bord=none,%
Texte=black,%
- Offset=1pt/2pt
+ Offset=1pt/2pt,%
+ OpaciteTexte=1
}
-\NewDocumentCommand\SurlignerFormule{ s O{\surlignformulefond} m D<>{} }{%
+\NewDocumentCommand\SurlignerFormule{ s O{} m D<>{} }{%
\useKVdefault[surlignformule]%
\setKV[surlignformule]{#2}%
\IfSubStr{\surlignformuleoffset}{/}%
@@ -61,11 +64,11 @@
\begin{tikzpicture}[remember picture,overlay]
\IfBooleanTF{#1}%
{%
- \fill[\surlignformulefond,draw=\surlignformulebord,#4] ([xshift=-\surlignformuleoffsetH,yshift=-\surlignformuleoffsetV]formule.south west) rectangle ([xshift=\surlignformuleoffsetH,yshift=\surlignformuleoffsetV]formule.north east) node[text=\surlignformuletexte,midway] {\ensuremath{#3}} ;
+ \fill[\surlignformulefond,draw=\surlignformulebord,#4] ([xshift=-\surlignformuleoffsetH,yshift=-\surlignformuleoffsetV]formule.south west) rectangle ([xshift=\surlignformuleoffsetH,yshift=\surlignformuleoffsetV]formule.north east) node[text=\surlignformuletexte,midway,text opacity=\surlignformuleopac] {\ensuremath{#3}} ;
}%
{%
- \fill[\surlignformulefond,draw=\surlignformulebord,encadreformule,#4] ([xshift=-\surlignformuleoffsetH,yshift=-\surlignformuleoffsetV]formule.south west) rectangle ([xshift=\surlignformuleoffsetH,yshift=\surlignformuleoffsetV]formule.north east) node[text=\surlignformuletexte,midway] {\ensuremath{#3}} ;
- }
+ \fill[\surlignformulefond,draw=\surlignformulebord,encadreformule,#4] ([xshift=-\surlignformuleoffsetH,yshift=-\surlignformuleoffsetV]formule.south west) rectangle ([xshift=\surlignformuleoffsetH,yshift=\surlignformuleoffsetV]formule.north east) node[text=\surlignformuletexte,midway,text opacity=\surlignformuleopac] {\ensuremath{#3}} ;
+ }%
\end{tikzpicture}%
}
@@ -73,13 +76,15 @@
bg=\def\hlformulabg{#1},%
border=\def\hlformulaborder{#1},%
text=\def\surlignformulatext{#1},%
- offset=\def\hlformulaoffset{#1}
+ offset=\def\hlformulaoffset{#1},%
+ textopacity=\def\hlformulaopac{#1}
}
\setKVdefault[hlformula]{%
bg=hlcolback,%
border=none,%
text=black,%
- offset=1pt/2pt
+ offset=1pt/2pt,%
+ textopacity=1
}
\NewDocumentCommand\HighlightFormula{ s O{\surlignformulefond} m D<>{} }{%
@@ -96,10 +101,10 @@
\begin{tikzpicture}[remember picture,overlay]
\IfBooleanTF{#1}%
{%
- \fill[\hlformulabg,draw=\hlformulaborder,#4] ([xshift=-\hlformulaoffsetH,yshift=-\hlformulaoffsetV]formula.south west) rectangle ([xshift=\hlformulaoffsetH,yshift=\hlformulaoffsetV]formula.north east) node[text=\surlignformulatext,midway] {\ensuremath{#3}} ;
+ \fill[\hlformulabg,draw=\hlformulaborder,#4] ([xshift=-\hlformulaoffsetH,yshift=-\hlformulaoffsetV]formula.south west) rectangle ([xshift=\hlformulaoffsetH,yshift=\hlformulaoffsetV]formula.north east) node[text=\surlignformulatext,midway,text opacity=\hlformulaopac] {\ensuremath{#3}} ;
}%
{%
- \fill[\hlformulabg,draw=\hlformulaborder,borderformula,#4] ([xshift=-\hlformulaoffsetH,yshift=-\hlformulaoffsetV]formula.south west) rectangle ([xshift=\hlformulaoffsetH,yshift=\hlformulaoffsetV]formula.north east) node[text=\surlignformulatext,midway] {\ensuremath{#3}} ;
+ \fill[\hlformulabg,draw=\hlformulaborder,borderformula,#4] ([xshift=-\hlformulaoffsetH,yshift=-\hlformulaoffsetV]formula.south west) rectangle ([xshift=\hlformulaoffsetH,yshift=\hlformulaoffsetV]formula.north east) node[text=\surlignformulatext,midway,text opacity=\hlformulaopac] {\ensuremath{#3}} ;
}
\end{tikzpicture}%
}
diff --git a/Master/texmf-dist/tex/latex/homework/homework.cls b/Master/texmf-dist/tex/latex/homework/homework.cls
index 576cd354535..7bc5adcf855 100644
--- a/Master/texmf-dist/tex/latex/homework/homework.cls
+++ b/Master/texmf-dist/tex/latex/homework/homework.cls
@@ -12,7 +12,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplClass
{homework}
- {2024/02/21} {}
+ {2024/09/30} {}
{Document class for writing homework}
\keys_define:nn { homework }
@@ -58,6 +58,22 @@
, remove~qed .bool_set:N = \l__homework_no_qed_bool
, remove qed .bool_set:N = \l__homework_no_qed_bool
+ , remove-problem-qed .bool_set:N = \l__homework_no_qed_problem_bool
+ , remove-problem-qed .initial:n = { false }
+ , remove~problem~qed .bool_set:N = \l__homework_no_qed_problem_bool
+ , remove problem qed .bool_set:N = \l__homework_no_qed_problem_bool
+ , remove-question-qed .bool_set:N = \l__homework_no_qed_problem_bool
+ , remove~question~qed .bool_set:N = \l__homework_no_qed_problem_bool
+ , remove question qed .bool_set:N = \l__homework_no_qed_problem_bool
+
+ , remove-solution-qed .bool_set:N = \l__homework_no_qed_solution_bool
+ , remove-solution-qed .initial:n = { false }
+ , remove~solution~qed .bool_set:N = \l__homework_no_qed_solution_bool
+ , remove solution qed .bool_set:N = \l__homework_no_qed_solution_bool
+ , remove-answer-qed .bool_set:N = \l__homework_no_qed_solution_bool
+ , remove~answer~qed .bool_set:N = \l__homework_no_qed_solution_bool
+ , remove answer qed .bool_set:N = \l__homework_no_qed_solution_bool
+
, unknown .code:n = {
\PassOptionsToClass { \CurrentOption } { minimart }
\PassOptionsToClass { \CurrentOption } { einfart }
@@ -70,9 +86,15 @@
%% Load the base class
%%================================
+\bool_if:NT \l__homework_no_qed_bool
+ {
+ \bool_set_true:N \l__homework_no_qed_problem_bool
+ \bool_set_true:N \l__homework_no_qed_solution_bool
+ }
+
\sys_if_engine_pdftex:TF
{
- \bool_if:NF \l__homework_no_qed_bool
+ \bool_if:NF \l__homework_no_qed_problem_bool
{
\PassOptionsToClass { theorem with qed } { minimart }
}
@@ -80,7 +102,7 @@
\LoadClass { minimart }
}
{
- \bool_if:NF \l__homework_no_qed_bool
+ \bool_if:NF \l__homework_no_qed_problem_bool
{
\PassOptionsToClass { theorem with qed } { einfart }
}
@@ -271,8 +293,11 @@
\ignorespaces
}
{
- \pushQED{\qed}
- \popQED\endtrivlist\@endpefalse
+ \bool_if:NF \l__homework_no_qed_solution_bool
+ {
+ \pushQED{\qed}
+ \popQED\endtrivlist\@endpefalse
+ }
}
\NewDocumentEnvironment { answer } { O{ \l__homework_answer_tl } }
diff --git a/Master/texmf-dist/tex/latex/href-ul/href-ul.sty b/Master/texmf-dist/tex/latex/href-ul/href-ul.sty
index 0b350fcda47..c6d75c57873 100644
--- a/Master/texmf-dist/tex/latex/href-ul/href-ul.sty
+++ b/Master/texmf-dist/tex/latex/href-ul/href-ul.sty
@@ -31,7 +31,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{href-ul}
-[09.01.20240 0.4.0 Underlined Hyperlinks]
+[2024/11/01 0.4.1 Underlined Hyperlinks]
@@ -54,6 +54,7 @@
\makeatother
\PassOptionsToPackage{hidelinks}{hyperref}
+\PassOptionsToPackage{hyphens}{url}
\RequirePackage{hyperref}
\makeatletter%
diff --git a/Master/texmf-dist/tex/latex/hrefhide/hrefhide.sty b/Master/texmf-dist/tex/latex/hrefhide/hrefhide.sty
index 4aecfc47618..804dde7fdea 100644
--- a/Master/texmf-dist/tex/latex/hrefhide/hrefhide.sty
+++ b/Master/texmf-dist/tex/latex/hrefhide/hrefhide.sty
@@ -9,10 +9,10 @@
%% This is a generated file.
%%
%% Project: hrefhide
-%% Version: 2023-02-26 v1.1a
+%% Version: 2025-01-27 v1.1b
%% Info: Hiding hyperrefs when printing pdf files
%%
-%% Copyright (C) 2010 - 2023 by
+%% Copyright (C) 2010 - 2025 by
%% H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de>
%%
%% This work may be distributed and/or modified under the
@@ -40,37 +40,40 @@
%% Tommy Muench + 2014-01-02
%% Hans-Klaus Muench + 2014-08-24
%%
-\NeedsTeXFormat{LaTeX2e}[2022-11-01]
-\ProvidesPackage{hrefhide}[2023-02-26 v1.1a
- Hiding hyperrefs when printing pdf files (HMM)]
+\NeedsTeXFormat{LaTeX2e}[2024-11-01]
+\ProvidesPackage{hrefhide}[2025-01-27 v1.1b %
+ Hiding hyperrefs when printing pdf files (HMM)]
%% Allows to "hide" hyperlinked text in a pdf file when printing
%% ("Click here" does not work on physical paper)
%% by providing the command \hrefdisplayonly
%% and allows simulating to switch on/off ocgcolourlinks
%% of the hyperref package.
-\@ifl@t@r\fmtversion{2022/11/01}{% would have understood
- % \IfFormatAtLeastTF{2022-11-01}{<true code>}{<false code>}
+\@ifl@t@r\fmtversion{2024/11/01}{% would have understood
+ % \IfFormatAtLeastTF{2024-11-01}{<true code>}{<false code>}
}{\PackageError{hrefhide}{%
Newer LaTeX format needed or older hrefhide package%
- }{Needed LaTeX format version: 2022-11-01 or newer.\MessageBreak%
+ }{Needed LaTeX format version: 2024-11-01 or newer.\MessageBreak%
Found\space\space LaTeX format version: \fmtversion.\MessageBreak%
- Either update your TeX distribution\MessageBreak%
- or use an archived version of hrefhide\MessageBreak%
- (see section History in the documentation).\MessageBreak%
+ Please update your TeX distribution.
}
}
-\RequirePackage{xcolor}[2022/06/12]% v2.14 LaTeX color extensions (UK)
-\RequirePackage[ocgcolorlinks]{hyperref}[2023-02-07]% v7.00v Hypertext links for LaTeX
-\RequirePackage{kvoptions}[2022-06-15]% v3.15 Key value format for package options (HO)
+\RequirePackage{xcolor}[2024/09/29]% v3.02 LaTeX color extensions (UK)
+\RequirePackage[ocgcolorlinks]{hyperref}[2024-11-05]% v7.01l Hypertext links for LaTeX
-\SetupKeyvalOptions{family=hrefhide,prefix=hrefhide@}
-\DeclareStringOption[black]{linktextcolour}[black]
-\DeclareStringOption[white]{backgroundcolour}[white]
-\DeclareStringOption[{0 0 1}]{pdfborder}[{0 0 1}]
+\DeclareKeys[hrefhide]
+ {linktextcolour .store = \hrefhide@linktextcolour ,
+ linktextcolour .usage = preamble ,
+ backgroundcolour .store = \hrefhide@backgroundcolour ,
+ backgroundcolour .usage = preamble ,
+ pdfborder .store = \hrefhide@pdfborder ,
+ pdfborder .usage = preamble
+ }
-\ProcessKeyvalOptions*
+\SetKeys[hrefhide]{linktextcolour=black,backgroundcolour=white,pdfborder={0 0 1}}
+
+\ProcessKeyOptions[hrefhide]
\newif\ifhrefhide
diff --git a/Master/texmf-dist/tex/latex/huawei/huawei.cls b/Master/texmf-dist/tex/latex/huawei/huawei.cls
index 2f3df4b5a05..9686f84812d 100644
--- a/Master/texmf-dist/tex/latex/huawei/huawei.cls
+++ b/Master/texmf-dist/tex/latex/huawei/huawei.cls
@@ -32,7 +32,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{huawei}
-[2024-02-14 0.18.3 Template for Huawei Documents]
+[2024-12-17 0.19.1 Template for Huawei Documents]
@@ -84,6 +84,7 @@
\RequirePackage{pgfopts}
\pgfkeys{
/huawei/.cd,
+ boring/.store in=\huawei@boring,
breaks/.store in=\huawei@breaks,
slides/.store in=\huawei@slides,
nosecurity/.store in=\huawei@nosecurity,
@@ -97,15 +98,33 @@
}
\ProcessPgfPackageOptions{/huawei}
-\makeatletter\ifdefined\huawei@breaks
-\let\huawei@oldsection\section
-\renewcommand\section{\clearpage\huawei@oldsection}
-\fi\makeatother
+\ifdefined\huawei@boring
+ \usepackage[scaled]{helvet}
+ \renewcommand\familydefault{\sfdefault}
+\fi
+
+\RequirePackage{titlesec}
+\ifdefined\huawei@boring
+ \def\huawei@sectioncolor{red}
+\else
+ \def\huawei@sectioncolor{black}
+\fi
+\makeatletter
+\titleformat
+ {\section}
+ {\color{\huawei@sectioncolor}\ifdefined\huawei@breaks\clearpage\fi\normalfont\Large\bfseries}
+ {\color{\huawei@sectioncolor}\thesection}{1em}{}
+\makeatother
\RequirePackage{geometry}
\makeatletter\ifdefined\huawei@landscape
- \geometry{paperwidth=16in, paperheight=9in,
- left=4in, right=2in, top=1.5in, bottom=1.5in}
+ \ifdefined\huawei@boring
+ \geometry{paperwidth=16in, paperheight=9in,
+ left=3in, right=2.5in, top=1in, bottom=1.8in}
+ \else
+ \geometry{paperwidth=16in, paperheight=9in,
+ left=4in, right=2in, top=1.5in, bottom=1.5in}
+ \fi
\else
\geometry{a4paper, left=1.5in, right=1in,
top=1.2in, bottom=1.2in}
@@ -129,12 +148,13 @@
\RequirePackage{array}
\RequirePackage[abspath]{currfile}
\RequirePackage{wrapfig}
-\RequirePackage{lastpage}
\RequirePackage{tikz}
\RequirePackage{tabularx}
\RequirePackage{titling}
\RequirePackage{svg}
+\RequirePackage{lastpage}
+
\PassOptionsToPackage{tt=false,type1=true}{libertine}
\RequirePackage{libertine}
@@ -180,13 +200,27 @@
\PassOptionsToPackage{table}{xcolor}
\RequirePackage{xcolor}
-\definecolor{red}{HTML}{CF0A2C}
-\definecolor{black}{HTML}{232527}
-\definecolor{gray}{HTML}{878C8F}
-\definecolor{yellow}{HTML}{F2DC5D}
-\definecolor{blue}{HTML}{2274A5}
-\definecolor{green}{HTML}{499167}
-\definecolor{orange}{HTML}{F06543}
+\makeatletter
+\ifdefined\huawei@boring
+ \definecolor{red}{HTML}{8C1A11}
+ \definecolor{black}{HTML}{000000}
+ \definecolor{gray}{HTML}{878C8F}
+ \definecolor{lightgray}{HTML}{DCDDDF}
+ \definecolor{yellow}{HTML}{F6C342}
+ \definecolor{blue}{HTML}{2B62BA}
+ \definecolor{green}{HTML}{499167}
+ \definecolor{orange}{HTML}{F7CEA1}
+\else
+ \definecolor{red}{HTML}{CF0A2C}
+ \definecolor{black}{HTML}{232527}
+ \definecolor{gray}{HTML}{878C8F}
+ \definecolor{lightgray}{HTML}{DCDDDF}
+ \definecolor{yellow}{HTML}{F2DC5D}
+ \definecolor{blue}{HTML}{2274A5}
+ \definecolor{green}{HTML}{499167}
+ \definecolor{orange}{HTML}{F06543}
+\fi
+\makeatother
\makeatletter\newcommand\huawei@header[1]{{%
\ifdefined\huawei@slides%
@@ -200,15 +234,47 @@
}}\makeatother
\makeatletter\newcommand\huawei@bar{%
- \begin{textblock}{1}[0,0](0,0)%
- \tikz \node[fill=red,minimum width=\TPHorizModule,
- minimum height=16\TPVertModule] {};%
- \end{textblock}%
+ \ifdefined\huawei@boring%
+ \begin{textblock}{16}[0,1](0,16)%
+ \tikz \node[fill=lightgray,minimum width=16\TPHorizModule,
+ minimum height=1.5\TPVertModule] {};%
+ \end{textblock}%
+ \begin{textblock}{8}[1,0.5](15,15.25)%
+ \raggedleft\huawei@logo{1.4}
+ \end{textblock}%
+ \ifdefined\huawei@nobrand\else%
+ \begin{textblock}{8}[0,0.5](1,15.25)%
+ \fontsize{16}{16}\selectfont%
+ \textcolor{gray}{\thecompany{}}%
+ \end{textblock}%
+ \fi%
+ \ifdefined\huawei@nosecurity\else%
+ \begin{textblock}{8}[0.5,0.5](7,15.25)%
+ \fontsize{16}{16}\selectfont%
+ \centering\textcolor{gray}{\thesecurity}%
+ \end{textblock}%
+ \fi%
+ \ifdefined\huawei@nopaging\else%
+ \begin{textblock}{8}[1,0.5](12,15.25)%
+ \raggedleft\fontsize{16}{16}\selectfont%
+ \textcolor{gray}{Page \#\thepage{} of \pageref*{LastPage}}%
+ \end{textblock}%
+ \fi%
+ \begin{textblock}{2}[1,0.5](14,15.25)%
+ \tikz \path[scale=0.3, draw=none, rotate=40, fill=white] (0,0) .. controls (3,1) .. (16,0) -- (16,3) .. controls (8, 2) .. (0, 3) -- (0,0);
+ \end{textblock}%
+ \else%
+ \begin{textblock}{1}[0,0](0,0)%
+ \tikz \node[fill=red,minimum width=\TPHorizModule,
+ minimum height=16\TPVertModule] {};%
+ \end{textblock}%
+ \fi%
}\makeatother
\makeatletter\newcommand\huawei@logo[1]{
\def\BLACK{\ifdefined\huawei@dark white\else black\fi}
\def\BLANK{\ifdefined\huawei@dark black\else white\fi}
+\definecolor{logo-red}{HTML}{CF0A2C}
\begin{tikzpicture}[y=0.80pt, x=0.80pt, yscale=-#1,
xscale=#1, inner sep=0pt, outer sep=0pt]
\begin{scope}[even odd rule,line width=0.800pt]
@@ -247,7 +313,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
\path[fill=\BLANK] (15.8594,31.7207) -- (16.7149,33.7008) --
(16.7119,33.7008) -- (16.7701,33.8374) -- (14.9552,33.8374) --
(15.0127,33.7008) -- (15.0117,33.7008) -- cycle;
-\path[fill=red] (15.2113,0.0001) .. controls (14.7353,0.0422) and
+\path[fill=logo-red] (15.2113,0.0001) .. controls (14.7353,0.0422) and
(13.4491,0.3349) .. (13.4491,0.3349) -- (13.4486,0.3349) .. controls
(10.5495,1.0843) and (9.8643,3.7151) .. (9.8643,3.7151) .. controls
(9.7227,4.1575) and (9.6584,4.6109) .. (9.6395,5.0380) --
@@ -259,7 +325,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
(16.8633,19.9296) .. (16.8633,19.9296) --
(16.8654,19.9301) .. controls (18.4416,4.1760) and
(15.2113,0.0001) .. (15.2113,0.0001) -- (15.2113,0.0001) -- cycle;
-\path[fill=red] (20.4192,0.0000) .. controls (20.4192,0.0000) and
+\path[fill=logo-red] (20.4192,0.0000) .. controls (20.4192,0.0000) and
(17.1748,4.1782) .. (18.7521,19.9415) --
(18.7542,19.9415) .. controls (18.7664,20.0416) and
(18.8374,20.0624) ..(18.8374,20.0624) .. controls
@@ -270,7 +336,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
(25.7636,3.7150) and (25.0470,1.0434) ..(22.1442,0.3375) .. controls
(22.1442,0.3375) and (21.3077,0.1251) .. (20.4193,0.0000) --
(20.4192,0.0000) -- cycle;
-\path[fill=red] (5.4542,4.7294) .. controls (5.4542,4.7294) and
+\path[fill=logo-red] (5.4542,4.7294) .. controls (5.4542,4.7294) and
(2.6920,7.3513) .. (2.5547,10.1307) -- (2.5558,10.1307) --
(2.5558,10.5519) .. controls (2.5579,10.5836) and
(2.5595,10.6157) .. (2.5615,10.6480) .. controls
@@ -284,7 +350,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
(15.3683,20.8109) .. (15.3663,20.8065) --
(15.3669,20.8065) .. controls (11.1809,11.6620) and
(5.4543,4.7294) .. (5.4543,4.7294) -- (5.4542,4.7294) -- cycle;
-\path[fill=red] (30.1695,4.7294) .. controls (30.1695,4.7294) and
+\path[fill=logo-red] (30.1695,4.7294) .. controls (30.1695,4.7294) and
(24.4602,11.6403) .. (20.2761,20.7662) --
(20.2777,20.7657) .. controls (20.2777,20.7657) and
(20.2283,20.8715) .. (20.3082,20.9399) .. controls
@@ -296,7 +362,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
(31.2563,14.2162) and (32.9686,12.8412) ..
(33.0583,10.6334) .. controls (33.2560,7.5672) and
(30.1696,4.7294) .. (30.1696,4.7294) -- (30.1695,4.7294) -- cycle;
-\path[fill=red] (35.3082,13.8080) .. controls (35.3082,13.8080) and
+\path[fill=logo-red] (35.3082,13.8080) .. controls (35.3082,13.8080) and
(26.0003,18.8031) .. (21.1876,22.0494) -- (21.1882,22.0499) --
(21.1893,22.0509) .. controls (21.1893,22.0509) and
(21.1019,22.1081) .. (21.1324,22.2106) .. controls
@@ -310,7 +376,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
(35.6246,15.7531) .. controls (35.6206,15.1563) and
(35.5365,14.4957) .. (35.3083,13.8080) --
(35.3082,13.8080) -- cycle;
-\path[fill=red] (0.3129,13.8313) .. controls (-0.5339,16.4531) and
+\path[fill=logo-red] (0.3129,13.8313) .. controls (-0.5339,16.4531) and
(0.6062,18.5656) .. (0.6080,18.5690) .. controls
(1.7962,21.0795) and (4.0641,21.8401) ..
(4.0641,21.8401) .. controls (5.1112,22.2703) and
@@ -323,7 +389,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
(14.4439,22.0584) .. (14.4439,22.0584) --
(14.4450,22.0578) .. controls (9.6347,18.8126) and
(0.3130,13.8315) .. (0.3130,13.8315) -- (0.3129,13.8313) -- cycle;
-\path[fill=red] (14.1782,23.1010) -- (3.2285,23.4850) .. controls
+\path[fill=logo-red] (14.1782,23.1010) -- (3.2285,23.4850) .. controls
(4.4160,25.6018) and (6.4158,27.2469) ..
(8.4990,26.7416) .. controls (9.9366,26.3822) and
(13.1935,24.1105) .. (14.2687,23.3429) --
@@ -331,7 +397,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
(14.3188,23.2045) .. (14.3188,23.2045) .. controls
(14.2913,23.1062) and (14.1783,23.1063) .. (14.1783,23.1063) --
(14.1782,23.1010) -- cycle;
-\path[fill=red] (21.4305,23.1090) -- (21.4294,23.1130) .. controls
+\path[fill=logo-red] (21.4305,23.1090) -- (21.4294,23.1130) .. controls
(21.4294,23.1130) and (21.3333,23.1252) ..
(21.3064,23.1972) .. controls (21.3064,23.1972) and
(21.2831,23.2956) .. (21.3478,23.3445) --
@@ -364,55 +430,61 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
\makeatletter\fancyhead[L]{
\ifnum\value{page}=1\else%
\ifdefined\huawei@nobrand\else%
- \begin{textblock}{8}[0,0](1.2,0.2)%
- \huawei@logo{\ifdefined\huawei@slides 1.8\else 1\fi}%
- \end{textblock}%
+ \ifdefined\huawei@boring\else%
+ \begin{textblock}{8}[0,0](1.2,0.2)%
+ \huawei@logo{\ifdefined\huawei@slides 1.8\else 1\fi}%
+ \end{textblock}%
+ \fi
\fi%
\fi%
}\makeatother
\makeatletter\fancyhead[R]{
- \begin{textblock}{8}[1,0](15.8,0.2)%
- \raggedleft\huawei@header{%
- \ifdefined\huawei@nosecurity\else%
- \thesecurity%
- \fi%
- }%
- \end{textblock}%
+ \ifdefined\huawei@boring\else%
+ \begin{textblock}{8}[1,0](15.8,0.2)%
+ \raggedleft\huawei@header{%
+ \ifdefined\huawei@nosecurity\else%
+ \thesecurity%
+ \fi%
+ }%
+ \end{textblock}%
+ \fi%
}\makeatother
\makeatletter\fancyfoot[R]{
- \begin{textblock}{8}[0,1](1.2,15.8)%
- \ifnum\value{page}=1\else%
- \huawei@header{\raggedright%
- \ifdefined\huawei@anonymous\else%
- \theauthor%
- \ifdefined\huawei@nosecurity\else%
- \ifx\theid\empty\else, \theid\fi%
+ \ifdefined\huawei@boring\else%
+ \begin{textblock}{8}[0,1](1.2,15.8)%
+ \ifnum\value{page}=1\else%
+ \huawei@header{\raggedright%
+ \ifdefined\huawei@anonymous\else%
+ \theauthor%
+ \ifdefined\huawei@nosecurity\else%
+ \ifx\theid\empty\else, \theid\fi%
+ \fi%
+ \ifdefined\huawei@nobrand\else%
+ \newline
+ \fi%
\fi%
\ifdefined\huawei@nobrand\else%
- \newline
+ \thecompany{}%
+ \fi%
+ }%
+ \fi%
+ \end{textblock}%
+ \begin{textblock}{8}[1,1](15.8,15.8)%
+ \raggedleft\huawei@header{%
+ \ifnum\value{page}=1\else%
+ \ifdefined\huawei@nopaging\else%
+ Page \#\thepage{} of \pageref*{LastPage}%
+ \ifdefined\huawei@nodate\else%
+ \\
+ \fi%
\fi%
\fi%
- \ifdefined\huawei@nobrand\else%
- \thecompany{}%
+ \ifdefined\huawei@nodate\else%
+ \today{} \settimeformat{daytime}\currenttime{}%
\fi%
}%
- \fi%
- \end{textblock}%
- \begin{textblock}{8}[1,1](15.8,15.8)%
- \raggedleft\huawei@header{%
- \ifnum\value{page}=1\else%
- \ifdefined\huawei@nopaging\else%
- Page \#\thepage{} of \pageref*{LastPage}%
- \ifdefined\huawei@nodate\else%
- \\
- \fi%
- \fi%
- \fi%
- \ifdefined\huawei@nodate\else%
- \today{} \settimeformat{daytime}\currenttime{}%
- \fi%
- }%
- \end{textblock}%
+ \end{textblock}%
+ \fi%
}\makeatother
\RequirePackage{changepage}
@@ -422,7 +494,13 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
\makeatletter\renewcommand\maketitle{%
\vspace*{18pt}%
- {\bfseries{\begin{spacing}{.9}\Huge\raggedright\thetitle\par\end{spacing}}}%
+ {%
+ \bfseries{\begin{spacing}{.9}\Huge\raggedright%
+ \ifdefined\huawei@boring%
+ \color{red}%
+ \fi%
+ \thetitle\par\end{spacing}}%
+ }%
\ifx\thesubtitle\empty\else%
{\color{gray!50!black}\large\raggedright\thesubtitle\par}%
\fi%
@@ -531,7 +609,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
\newpage%
\vspace*{1in}%
\begin{center}%
- \begin{minipage}{0.6\columnwidth}\raggedright%
+ \begin{minipage}{0.8\columnwidth}\raggedright%
\normalsize%
\setlength{\parskip}{6pt}%
{\Huge\color{red}\textbf{Thank you!}}%
diff --git a/Master/texmf-dist/tex/latex/hvfloat/hvfloat-0.inc b/Master/texmf-dist/tex/latex/hvfloat/hvfloat-0.inc
index e4d8b07cf0e..74bddea179e 100644
--- a/Master/texmf-dist/tex/latex/hvfloat/hvfloat-0.inc
+++ b/Master/texmf-dist/tex/latex/hvfloat/hvfloat-0.inc
@@ -1,10 +1,11 @@
%% Herbert Voss <hvoss@tug.org>
-%% Copyright (C) 2023
+%% Copyright (C) 2024
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
%%
+%% width=2\paperwidth, height=variable
%%
%% ||1in+evenside --- |1in+oddside ---|| Image is 2\paperwidth wide, height is variable or user set
%
@@ -26,6 +27,7 @@
\let\c@hv@tempCNTtabA\c@table
\checkoddpage
\ifoddpage
+ \test@typeout{>>>>Befehl auf ungerader Seite, kein Test auf Anfang für Doppelseite!}%
\if@twocolumn
\if@firstcolumn
\afterpage{afterpage{\do@hvFloat@doubleFullPage@ObjectAndCaption}}% 2nd Col and newpage
@@ -37,21 +39,27 @@
\fi % end \if@twocolumn
\else% evenpage
%---------
+ \global\savebox{\hvObjectBox}{\ifhv@useOBox\usebox{\hvOBox}\else\hv@floatObject\fi}%
+ %\typeout{Boxmaße: \the\wd\hvObjectBox;\the\ht\hvObjectBox}%
%\typeout{>>>>Setze hv@atPageBeginfalse}%
\global\hv@atPageBeginfalse
+ \hv@float@head=\the\dimexpr+1in+\topmargin+\headheight+\headsep
+ \hv@float@foot=\the\dimexpr\paperheight-\hv@float@head-\textheight
+ %\typeout{Kopf: \the\hv@float@head}%
+ %\typeout{Fuß: \the\hv@float@foot}%
\stepcounter{hvfloat@ref}%
\zsavepos{\thehvfloat@ref}%
- \@tempy=\dimexpr-\zposy{\thehvfloat@ref} sp+\paperheight-1in-\topmargin-\headheight-\headsep\relax
+ \@tempy=\dimexpr\paperheight-\zposy{\thehvfloat@ref} sp-1in-\topmargin-\headheight-\headsep\relax
\@tempx=\dimexpr-\zposx{\thehvfloat@ref} sp+\evensidemargin+1in\relax
- %\typeout{>>>>\the\@tempx >>>>>\the\@tempy >>>>\f@size}%
- \ifdim\@tempy > \dimexpr\f@size pt + 2pt
- %\typeout{>>>>Case 0, Leere Box oder Text auf der Seite \thehvfloat@ref}%
+ \ifdim\@tempy > \dimexpr\f@size pt + 2pt % Test, ob Abbildung oben
+ \expandafter\ifdefined\csname HV@float@ref@\thehvfloat@ref\endcsname % already on top from last run?
+ \global\hv@atPageBegintrue
+ \immediate\write\@auxout{\expandafter\gdef\csname HV@float@ref@\thehvfloat@ref\endcsname{1}}%
+ \fi
\else
- \ifdim\@tempx = \z@
- %\typeout{>>>>Case 2, Absolut oben links auf der Seite \thehvfloat@ref }%
+ \ifdim\@tempx = \z@%
\global\hv@atPageBegintrue
- \else
- %\typeout{>>>>Case 1, Oben auf der Seite \thehvfloat@ref, aber nicht am Anfang der Zeile}%
+ \immediate\write\@auxout{\expandafter\gdef\csname HV@float@ref@\thehvfloat@ref\endcsname{1}}%
\fi
\fi
%---------
diff --git a/Master/texmf-dist/tex/latex/hvfloat/hvfloat-1.inc b/Master/texmf-dist/tex/latex/hvfloat/hvfloat-1.inc
index effd6aec611..3eda3db0f16 100644
--- a/Master/texmf-dist/tex/latex/hvfloat/hvfloat-1.inc
+++ b/Master/texmf-dist/tex/latex/hvfloat/hvfloat-1.inc
@@ -1,10 +1,11 @@
%% Herbert Voss <hvoss@tug.org>
-%% Copyright (C) 2023
+%% Copyright (C) 2024
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
%%
+%% width=2\paperwidth, height=\paperheight
%%
%% ||1in+evenside --- |1in+oddside ---||
%
diff --git a/Master/texmf-dist/tex/latex/hvfloat/hvfloat-2.inc b/Master/texmf-dist/tex/latex/hvfloat/hvfloat-2.inc
index a6c498e2b3e..dc4879f4e12 100644
--- a/Master/texmf-dist/tex/latex/hvfloat/hvfloat-2.inc
+++ b/Master/texmf-dist/tex/latex/hvfloat/hvfloat-2.inc
@@ -1,11 +1,14 @@
%%
%% Herbert Voss <hvoss@tug.org>
-%% Copyright (C) 2023
+%% Copyright (C) 2024
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
%%
+%% width=2\textwidth+\leftmargin+\rightmargin height=variable
+%% _Without_ additional text on the doublepage
+%%
%% ||1in+evenside --- |1in+oddside ---||
%
@@ -34,24 +37,28 @@
\hvfloat@typeout{do@hvFloat@doublePAGE: evenpage}%
%---------
\hv@atPageBeginfalse
- \stepcounter{hvfloat@ref}%
+% \stepcounter{hvfloat@ref}%
\zsavepos{\thehvfloat@ref}%
\@tempy=\dimexpr-\zposy{\thehvfloat@ref} sp+\paperheight-1in-\topmargin-\headheight-\headsep\relax
\@tempx=\dimexpr-\zposx{\thehvfloat@ref} sp+\evensidemargin+1in\relax
- %\typeout{>>>>\the\@tempx >>>>>\the\@tempy >>>>\f@size}%
+ \ifhv@test\marginnote{>>\the\@tempx >>\the\@tempy >>\f@size}\fi
\ifdim\@tempy > \z@
- %\typeout{>>>>Case 0, Leere Box oder Text auf der Seite \thehvfloat@ref}%
+ \test@typeout{>>>>Case 0, Leere Box oder Text auf der Seite \thehvfloat@ref}%
\ifdim\@tempx < \z@
- %\typeout{>>>>Case 0-1, Text oben auf der Seite \thehvfloat@ref}%
+ \test@typeout{>>>>Case 0-1, Text oben auf der Seite \thehvfloat@ref}%
+ \typeout{>>>>>-2.inc NEUER TEST: \the\@tempy; \the\ht\hvObjectBox}%
+ \ifdim\@tempy=\ht\hvObjectBox % Annnahme, dass nur die Abbildung oben ist
+ \hv@atPageBegintrue
+ \fi
\else
- %\typeout{>>>>Case 0-2, Absolut oben links auf der Seite \thehvfloat@ref}%
+ \test@typeout{>>>>Case 0-2, Absolut oben links auf der Seite \thehvfloat@ref}%
\hv@atPageBegintrue
\fi
\else
\ifdim\@tempx > \z@
- %\typeout{>>>>Case 1, Oben auf der Seite \thehvfloat@ref, aber nicht am Anfang der Zeile}%
+ \test@typeout{>>>>Case 1, Oben auf der Seite \thehvfloat@ref, aber nicht am Anfang der Zeile}%
\else
- %\typeout{>>>>Case 2, Absolut oben links auf der Seite \thehvfloat@ref }%
+ \test@typeout{>>>>Case 2, Absolut oben links auf der Seite \thehvfloat@ref }%
\hv@atPageBegintrue
\fi
\fi
diff --git a/Master/texmf-dist/tex/latex/hvfloat/hvfloat-3.inc b/Master/texmf-dist/tex/latex/hvfloat/hvfloat-3.inc
index d3544cbe3e4..e47cf188f5d 100644
--- a/Master/texmf-dist/tex/latex/hvfloat/hvfloat-3.inc
+++ b/Master/texmf-dist/tex/latex/hvfloat/hvfloat-3.inc
@@ -1,10 +1,12 @@
%% Herbert Voss <hvoss@tug.org>
-%% Copyright (C) 2023
+%% Copyright (C) 2024
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
%%
+%% width=2\textwidth+\leftmargin+\rightmargin height=variable
+%% _With_ additional text on the doublepage
%%
%% ------------------------------------- the doublepage obejcts ---------------------------
%% ||1in+evenside --- |1in+oddside ---||
@@ -46,11 +48,11 @@
\do@hvFloat@doublePAGECaptionRight{#1}% no cheque
\else
\checkoddpage
- \ifoddpage
+ \ifoddpage % we are on the right page
\hvfloat@typeout{do@hvFloat@doublePage:oddpage}%
\if@twocolumn
\hvfloat@typeout{do@hvFloat@doublePage: oddpage/twocolumn}%
- \if@firstcolumn
+ \if@firstcolumn % we are in the left column of the right page
\hvfloat@typeout{do@hvFloat@doublePage:oddpage->twocolumn->firstcolumn}%
\ifhv@switchType
\hvfloat@typeout{hvfloat: switched to floattype p}%
@@ -59,12 +61,12 @@
\do@hvFloat@doublePAGECaptionRight{#1}}%
\else
\hvfloat@typeout{calling do@hvFloat@doublePageCaptionRight}%
- %\afterpage{%
\afterpage{%
+ \afterpage{%
\global\savebox\hvObjectBox{\ifhv@useOBox\usebox{\hvOBox}\else\hv@floatObject\fi}%
- \do@hvFloat@doublePageCaptionRight{#1}}%}%
+ \do@hvFloat@doublePageCaptionRight{#1}}}%
\fi
- \else
+ \else % we are in the right column of the right page
% \hvfloat@typeout{do@hvFloat@doublePage:oddpage->twocolumn->secondcolumn}%
\ifhv@tugboat
\do@hvFloat@doublePageCaptionRight{#1}%
@@ -96,48 +98,51 @@
\fi
\else% we have an even page
\hvfloat@typeout{do@hvFloat@doublePage:evenpage -> (\thepage)}%
- %\typeout{>>>>Setze hv@atPageBeginfalse}%
\global\hv@atPageBeginfalse
- \stepcounter{hvfloat@ref}%
+\iffalse
+ \test@typeout{>>>>Setze hv@atPageBeginfalse}%
+% \stepcounter{hvfloat@ref}%
\zsavepos{\thehvfloat@ref}%
\@tempy=\dimexpr-\zposy{\thehvfloat@ref} sp+\paperheight-1in-\topmargin-\headheight-\headsep\relax
\@tempx=\dimexpr-\zposx{\thehvfloat@ref} sp+\evensidemargin+1in\relax
- %\typeout{>>>>\the\@tempx >>>>>\the\@tempy >>>>\f@size}%
+ \ifhv@test\marginnote{>>\the\@tempx >>\the\@tempy >>\f@size}\fi
\ifdim\@tempy > \dimexpr\f@size pt + 2pt % Interlinespace
- %\typeout{>>>>Case 0, Leere Box oder Text auf der Seite \thehvfloat@ref}%
+ \test@typeout{>>>>Case 0, Leere Box oder Text auf der Seite \thehvfloat@ref}%
+ \typeout{>>>>>-3.inc NEUER TEST Y:\the\@tempy; BOX:\the\ht\hvObjectBox}%
+ \ifdim\dimexpr\ht\hvObjectBox-\@tempy < \f@size pt % Annnahme, dass nur die Abbildung oben ist
+ \hv@atPageBegintrue
+ \fi
\else
\ifdim\@tempx = \z@
- %\typeout{>>>>Case 2, Absolut oben links auf der Seite \thehvfloat@ref }%
+ \test@typeout{>>>>Case 2, Absolut oben links auf der Seite \thehvfloat@ref }%
\global\hv@atPageBegintrue
- \else
- %\typeout{>>>>Case 1, Oben auf der Seite \thehvfloat@ref, aber nicht am Anfang der Zeile}%
\fi
\fi
%---------
+\fi
\ifhv@atPageBegin% At the top left of the even page -> output image
\do@hvFloat@doublePageCaptionRight{#1}
\else
\if@twocolumn
- \if@firstcolumn
+ \if@firstcolumn % We are in the left column of the left page
\ifhv@switchType
\afterpage{\afterpage{%
\global\savebox\hvObjectBox{\ifhv@useOBox\usebox{\hvOBox}\else\hv@floatObject\fi}%
\do@hvFloat@doublePAGECaptionRight{#1}}}%
- \else
+ \else %
\afterpage{\afterpage{\afterpage{%
- \global\savebox\hvObjectBox{\ifhv@useOBox\usebox{\hvOBox}\else\hv@floatObject\fi}%
- \do@hvFloat@doublePageCaptionRight{#1}}}}%
+ \global\savebox\hvObjectBox{\ifhv@useOBox\usebox{\hvOBox}\else\hv@floatObject\fi}%
+ \do@hvFloat@doublePageCaptionRight{#1}}}}%
\fi
- \else% second column
+ \else% second column(right column on left page)
\ifhv@switchType
\afterpage{%
\global\savebox\hvObjectBox{\ifhv@useOBox\usebox{\hvOBox}\else\hv@floatObject\fi}%
\do@hvFloat@doublePAGECaptionRight{#1}}%
\else
- %\afterpage{
- \afterpage{%
+ \afterpage{\afterpage{%
\global\savebox\hvObjectBox{\ifhv@useOBox\usebox{\hvOBox}\else\hv@floatObject\fi}%
- \do@hvFloat@doublePageCaptionRight{#1}}%}%
+ \do@hvFloat@doublePageCaptionRight{#1}}}%
\fi
\fi
\else% onecolumn
diff --git a/Master/texmf-dist/tex/latex/hvfloat/hvfloat-4.inc b/Master/texmf-dist/tex/latex/hvfloat/hvfloat-4.inc
new file mode 100644
index 00000000000..fe1aa2f20ea
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/hvfloat/hvfloat-4.inc
@@ -0,0 +1,211 @@
+%% Herbert Voss <hvoss@tug.org>
+%% Copyright (C) 2024
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN archives
+%% in directory macros/latex/base/lppl.txt.
+%%
+%% Option FULLPAGE, complete paperarea on _one_ page even/odd
+%%
+%% width=\textwidth+\leftmargin+\rightmargin height=variable --> FULLPAGE
+%% _With_ no additional text on the doublepage
+%%
+%% ------------------------------------- the fullpage obejcts ---------------------------
+%% ||1in+evenside --- |1in+oddside ---||
+%
+%\def\do@@@@hvFloat{% special float page: caption <-> FULLPAGE images
+ \hvfloat@typeout{>>>do@@@@hvFloat: special float page}%
+ \ifx\hvSet@capPos\hv@After \global\hv@@capPos=1
+ \else
+ \ifx\hvSet@capPos\hv@Even \global\hv@@capPos=2
+ \else
+ \ifx\hvSet@capPos\hv@Odd \global\hv@@capPos=3
+ \else
+ \ifx\hvSet@capPos\hv@Inner \global\hv@@capPos=4
+ \else
+ \ifx\hvSet@capPos\hv@Outer \global\hv@@capPos=5
+ \else
+ \ifx\hvSet@capPos\hv@Right \global\hv@@capPos=6% only for twocolumn mode
+ \else
+ \ifx\hvSet@capPos\hv@Left \global\hv@@capPos=7% only for twocolumn mode
+ \else
+ \global\hv@@capPos=0
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \hvfloat@typeout{>>>do@@@@hvFloat: hv@capPos is \the\hv@@capPos}%
+% \checkoddpage
+ \hvfloat@typeout{>>>do@@@@hvFloat: set floattype}%
+ \set@caption@object{\hv@floatType}% set caption and object into a box
+%
+ \ifcase\hv@@capPos% caption before object 0-> _always_ left
+ \hvfloat@typeout{>>>do@@@@hvFloat: setBottomCaption and setPageObject (0)}%
+ \setBottomCaption\setPageObject
+ \or% caption after object 1-> _always_ right
+ \hvfloat@typeout{>>>do@@@@hvFloat: setPageObject and setBottomCaption (1)}%
+ \setPageObject\setBottomCaption
+ \or% caption on even page 2-> left page
+ \ifoddpage
+ \hvfloat@typeout{>>>do@@@@hvFloat: afterpage-> oddpage/setBottomCaption and setPageObject (2)}%
+ \afterpage{\setBottomCaption\setPageObject}%
+ \else% we are on an even page
+ \hvfloat@typeout{>>>do@@@@hvFloat: evenpage/setBottomCaption and setPageObject (2)}%
+ \setBottomCaption\setPageObject
+ \fi
+ \or% caption on odd page 3->right page
+ \if@twoside
+ \hvfloat@typeout{>>>do@@@@hvFloat: twoside and caption on oddpage (3)}%
+ \if@twocolumn
+ \hvfloat@typeout{>>>do@@@@hvFloat: twoside/twocolumn and caption on oddpage (3)}%
+ \ifoddpage
+ \hvfloat@typeout{>>>do@@@@hvFloat: twoside/twocolumn/oddpage and caption on oddpage (3)}%
+ \if@firstcolumn% on right side
+ \hvfloat@typeout{>>>do@@@@hvFloat: twoside/twocolumn/oddpage/firstcolumn and caption on oddpage (3)}%
+ \setBottomCaption\setPageObject
+ \else
+ \hvfloat@typeout{>>>do@@@@hvFloat: afterpage->twoside/twocolumn/oddpage/secondcolumn and caption on oddpage (3)}%
+ \afterpage{\setPageObject\setBottomCaption}% start next column
+ \fi
+ \else% left (even) page
+ \hvfloat@typeout{>>>do@@@@hvFloat: twoside/twocolumn/oddpage and caption on evenpage (3)}%
+ \if@firstcolumn
+ \hvfloat@typeout{>>>do@@@@hvFloat: afterpage->twoside/twocolumn/evenpage/firstcolumn and caption on oddpage (3)}%
+ \afterpage{\setPageObject\setBottomCaption}% start next column
+ \else
+ \hvfloat@typeout{>>>do@@@@hvFloat: twoside/twocolumn/evenage/secondcolumn and caption on oddpage (3)}%
+ \setPageObject\setBottomCaption
+ \fi
+ \fi
+ \else% onecolumn
+ \hvfloat@typeout{>>>do@@@@hvFloat: twoside/onecolumn and caption on oddpage (3)}%
+ \ifoddpage
+ \hvfloat@typeout{>>>do@@@@hvFloat: twoside/onecolumn/oddpage and caption on oddpage (3)}%
+ \setPageObject\setBottomCaption
+ \else% even page
+ \hvfloat@typeout{>>>do@@@@hvFloat: afterpage->twoside/onecolumn/evenpage and caption on oddpage (3)}%
+ \afterpage{\setPageObject\setBottomCaption}%
+ \fi
+ \fi
+ \else% oneside
+ \hvfloat@typeout{>>>do@@@@hvFloat: oneside and caption on oddpage (3)}%
+ \if@twocolumn
+ \hvfloat@typeout{>>>do@@@@hvFloat: oneside/twocolumn and caption on oddpage (3)}%
+ \ifoddpage
+ \hvfloat@typeout{>>>do@@@@hvFloat: oneside/twocolumn/oddpage and caption on oddpage (3)}%
+ \if@firstcolumn% on right side
+ \hvfloat@typeout{>>>do@@@@hvFloat: oneside/twocolumn/oddpage/firstcolumn and caption on oddpage (3)}%
+ \setBottomCaption\setPageObject
+ \else
+ \hvfloat@typeout{>>>do@@@@hvFloat: oneside/twocolumn/oddpage/secondcolumn and caption on oddpage (3)}%
+ \setPageObject\setBottomCaption
+ \fi
+ \else
+ \hvfloat@typeout{>>>do@@@@hvFloat: oneside/twocolumn/evenpage and caption on oddpage (3)}%
+ \if@firstcolumn% on left side
+ \hvfloat@typeout{>>>do@@@@hvFloat: afterpage->oneside/twocolumn/evenpage/firstcolumn and caption on oddpage (3)}%
+ \afterpage{\setPageObject\setBottomCaption}%
+ \else
+ \hvfloat@typeout{>>>do@@@@hvFloat: oneside/twocolumn/evenpage/secondcolumn and caption on oddpage (3)}%
+ \setPageObject\setBottomCaption
+ \fi
+ \fi
+ \else % onecolumn
+ \hvfloat@typeout{>>>do@@@@hvFloat: oneside/onecolumn and caption on oddpage (3)}%
+ \ifoddpage
+ \hvfloat@typeout{>>>do@@@@hvFloat: oneside/onecolumn/oddpage and caption on oddpage (3)}%
+ \setBottomCaption\setPageObject%
+ \else
+ \hvfloat@typeout{>>>do@@@@hvFloat: afterpage->oneside/onecolumn/evenpage and caption on oddpage (3)}%
+ \afterpage{\setBottomCaption\setPageObject}%
+ \fi
+ \fi
+ \fi
+ \or% caption on the inner column 4->inner
+% \set@caption@object
+ \if@twocolumn
+ \hvfloat@typeout{>>>do@@@@hvFloat: twocolumn and caption on inner column (4)}%
+ \ifoddpage
+ \hvfloat@typeout{>>>do@@@@hvFloat: twoside/oddpage and caption on inner column (4)}%
+ \if@firstcolumn% on right side
+ \hvfloat@typeout{>>>do@@@@hvFloat: twoside/oddpage/firstcolumn and caption on inner column (4)}%
+ \setBottomCaption\setPageObject
+ \else % right column on right side
+ \hvfloat@typeout{>>>do@@@@hvFloat: twoside/oddpage/secondcolumn and caption on inner column (4)}%
+ \setPageObject\setBottomCaption% start next firstcolumn next page
+ \fi
+ \else
+ \hvfloat@typeout{>>>do@@@@hvFloat: twoside/evenpage and caption on inner column (4)}%
+ \if@firstcolumn% on left side
+ \hvfloat@typeout{>>>do@@@@hvFloat: afterpage^2 -> twoside/evenpage/firstcolumn and caption on inner column (4)}%
+ \afterpage{\afterpage{\setBottomCaption\setPageObject}}% start next page/first column
+ \else% left page/column
+ \hvfloat@typeout{>>>do@@@@hvFloat: twoside/evenpage/secondcolumn and caption on inner column (4)}%
+ \setBottomCaption\setPageObject% start on same page/column
+ \fi
+ \fi
+ \else% onecolumn
+ \hvfloat@typeout{>>>do@@@@hvFloat: onecolumn and caption on inner column (4)}%
+ \setBottomCaption\setPageObject
+ \fi
+ \or% caption on the outer column 5->outer
+% \set@caption@object
+ \if@twocolumn
+ \hvfloat@typeout{>>>do@@@@hvFloat: twocolumn and caption on outer column (5)}%
+ \ifoddpage
+ \hvfloat@typeout{>>>do@@@@hvFloat: twocolumn/oddpage and caption on outer column (5)}%
+ \if@firstcolumn
+ \hvfloat@typeout{>>>do@@@@hvFloat: afterpage^2 -> firstcolumn/oddpage/twocolumn and caption on outer column (5)}%
+ \afterpage{\afterpage{\setBottomCaption\setPageObject}}%
+ \else
+ \hvfloat@typeout{>>>do@@@@hvFloat: afterpage -> twocolumn/oddpage/secondcolumn and caption on outer column (5)}%
+ \afterpage{\setBottomCaption\setPageObject}%
+ \fi
+ \else% even page (left)
+ \hvfloat@typeout{>>>do@@@@hvFloat: twocolumn/evenpage and caption on outer column (5)}%
+ \if@firstcolumn
+ \hvfloat@typeout{>>>do@@@@hvFloat: twocolumn/evenpage/firstcolumn and caption on outer column (5)}%
+ \setBottomCaption\setPageObject
+ \else
+ \hvfloat@typeout{>>>do@@@@hvFloat: twocolumn/evenpage/secondolumn and caption on outer column (5)}%
+%%% !!!! to-do: !!!!
+ \fi
+ \fi
+ \else% onecolumn
+ \setBottomCaption\setPageObject
+ \fi
+ \or% caption after object on same page 6->right for twocolumn
+ \if@twocolumn
+ \hvfloat@typeout{>>>do@@@@hvFloat: twocolumn and caption after object (6)}%
+ \if@firstcolumn
+ \hvfloat@typeout{>>>do@@@@hvFloat: afterpage -> twocolumn/firstcolumn and caption after object (6)}%
+ \afterpage{\setPageObject\setBottomCaption}%
+ \else
+ \hvfloat@typeout{>>>do@@@@hvFloat: twocolumn/secondcolumn and caption after object (6)}%
+ \setPageObject\setBottomCaption
+ \fi
+ \else% always caption _after_ object for onecolumn
+ \hvfloat@typeout{>>>do@@@@hvFloat: onecolumn and caption after object (6)}%
+ \setPageObject\setBottomCaption
+ \fi
+ \or% caption before object on same page 7->left for twocolumn
+ \if@twocolumn
+ \hvfloat@typeout{>>>do@@@@hvFloat: twocolumn and caption before object (7)}%
+ \if@firstcolumn
+ \hvfloat@typeout{>>>do@@@@hvFloat: twocolumn/firstcolumn and caption before object (7)}%
+ \setBottomCaption\setPageObject
+ \else
+ \hvfloat@typeout{>>>do@@@@hvFloat: afterpage -> twocolumn/secondcolumn and caption before object (7)}%
+ \afterpage{\setBottomCaption\setPageObject}%
+ \fi
+ \else% onecolumn -> same as before
+ \hvfloat@typeout{>>>do@@@@hvFloat: onecolumn and caption before object (7)}%
+ \setBottomCaption\setPageObject
+ \fi
+ \fi
+ \endgroup% startet at main \hvFloat
+%}
+%
diff --git a/Master/texmf-dist/tex/latex/hvfloat/hvfloat.sty b/Master/texmf-dist/tex/latex/hvfloat/hvfloat.sty
index 5c4539a9b25..f38a302146a 100644
--- a/Master/texmf-dist/tex/latex/hvfloat/hvfloat.sty
+++ b/Master/texmf-dist/tex/latex/hvfloat/hvfloat.sty
@@ -1,4 +1,4 @@
-%% $Id: hvfloat.sty 879 2024-03-17 10:44:09Z herbert $
+%% $Id: hvfloat.sty 1046 2024-12-15 09:30:17Z herbert $
%%
%%
%% IMPORTANT NOTICE:
@@ -16,8 +16,8 @@
%% `hvfloat' offers rotating of captions and objects for floats
%%
\NeedsTeXFormat{LaTeX2e}
-\def\fileversion{2.49}
-\def\filedate{2024/03/17}
+\def\fileversion{2.52}
+\def\filedate{2024/12/15}
\ProvidesPackage{hvfloat}[\filedate\space v\fileversion\space special floating objects (hv)]
\let\hvFloatFileVersion\fileversion
%
@@ -60,6 +60,8 @@
\newdimen\@tempy
\newcounter{hvfloat@testCtr}
\newcounter{hvfloat@ref}
+\newdimen\hv@float@head
+\newdimen\hv@float@foot
\renewcommand\thehvfloat@ref{tmp@\arabic{hvfloat@ref}}
\setcounter{hvfloat@ref}{0}
\newif\ifhv@atPageBegin
@@ -86,6 +88,7 @@
\newlength\hvCapWidth
\newlength\hvWideWidth
\newlength\hvMultiFloatSkip
+\newlength\hvNonFloatTopSkip
\newlength\hvMaxCapWidth
\newlength\hvFloatFullWidth % only for user purpose
\AtBeginDocument{\hvFloatFullWidth=\the\dimexpr\textwidth+\marginparwidth+\marginparsep\relax}
@@ -188,10 +191,14 @@
\define@key{hvSet}{multiFloatSkip}[\normalbaselineskip]{% a width with the unit pt
\setlength\hvMultiFloatSkip{#1}%
}
+\define@key{hvSet}{nonFloatTopSkip}[\medskipamount]{% a topskip for nonfloats with the unit pt
+ \setlength\hvNonFloatTopSkip{#1}%
+}
\define@boolkey{hvSet}[hv@]{useOBox}[true]{}% use of the hvOBox contents
\define@boolkey{hvSet}[hv@]{nonFloat}[true]{}% Do not use float environment
\define@boolkey{hvSet}[hv@]{inMargin}[true]{}% use of the hvOBox contents
\define@boolkey{hvSet}[hv@]{onlyText}[true]{}% Write the caption only as text
+\define@boolkey{hvSet}[hv@]{onlyTextInTOC}[true]{}% caption without number into TOC
\define@boolkey{hvSet}[hv@]{wide}[true]{}% Write the caption only as text
\define@boolkey{hvSet}[hv@]{forceLeft}[true]{}% use only one \afterpage instead of \afterpage{\afterpage{..
\define@boolkey{hvSet}[hv@]{twoColumnCaption}[true]\global\@nameuse{hv@twoColumnCaption#1}{}% Write the caption only as text
@@ -304,7 +311,7 @@
floatPos=, rotAngle=0, capWidth=n, capAngle=0, objectAngle=0,
capPos=bottom, capVPos=center, objectPos=center, capHPos=center,
floatCapSep=5pt, useOBox=false, forceLeft=false,
- onlyText=false, wide=false, fullpage=false, FULLPAGE=false,
+ onlyText=false, onlyTextInTOC=false, wide=false, fullpage=false, FULLPAGE=false,
doubleFULLPAGE=false, doublePage=false, doublePAGE=false,
multiFloat=false,subFloat=false,inMargin=false,
separatorLine,objectFrame=false, fboxLines={ltrb}, fboxSep=0pt,
@@ -312,6 +319,7 @@
capFormat={}, subcapFormat={}, twoColumnCaption=false,
sameHeight=false,
bindCorr=\z@,sepLineskip=0pt,
+ nonFloatTopSkip=\medskipamount,
vFill=false, minTextlines=2,
forceOutput=false, nonFloat=false,
}%
@@ -541,7 +549,6 @@
\def\hvFloat@i*{\@ifnextchar[{\do@hvFloat}{\do@hvFloat[]}}
\def\do@hvFloat[#1]{%
- \ifhv@Debug\marginnote{\textbf{hvFloat}}\fi%
%\marginnote{\textbf{hvFloat}}%
\savebox\hvObjectBox{}%
\begingroup
@@ -568,6 +575,7 @@
{\hv@subcaption@format}%
\fi
\gdef\hv@floatType{figure}% presetting
+ \ifhv@Debug\marginnote{\textbf{hvFloat}}\fi%
\@ifnextchar+{\do@multiFloat}{\hvFloat@ii[#1]}%
}
@@ -642,7 +650,7 @@
\ifhv@capbeside\def\@@temp{1}\else\def\@@temp{0}\fi
\ifhv@sameHeight\global\hv@global@sameHeighttrue\else\global\hv@global@sameHeightfalse\fi
\global\hvSet@bindCorrection=\hvSet@bindCorr% for doublepage objects
- \global\hv@floatCapSep=\hvSet@floatCapSep%
+ \global\hv@floatCapSep=\hvSet@floatCapSep
%
\ifhv@fullpage
\hvfloat@typeout{>>>> do@@hvFloat: fullpage true}%
@@ -662,11 +670,11 @@
\ifhv@doubleFullPage
\hvfloat@typeout{>>>> do@@hvFloat: doubleFullPage true}%
\setlength\hvCapWidth{\textwidth}%
- \expandafter\do@hvFloat@doubleFullPage\@@temp% fullpage with caption under an odd page
+ \expandafter\do@hvFloat@doubleFullPage\@@temp % fullpage with caption under an odd page
\else
\ifhv@doublePAGE
\hvfloat@typeout{>>>> do@@hvFloat: doublePAGE true}%
- \expandafter\do@hvFloat@doublePAGE\@@temp% fullpage with caption rotated or under on an odd page
+ \expandafter\do@hvFloat@doublePAGE\@@temp % fullpage with caption rotated or under on an odd page
\else
\ifhv@doublePage
\hvfloat@typeout{>>>> do@@hvFloat: doublePage true}%
@@ -689,11 +697,15 @@
%
\def\do@@@hvFloat{% no special float page, caption and image on top of each other or side by side
\def\@tempa{90}%
+ \setlength\hvWideWidth{\dimexpr\textwidth+\marginparsep+\marginparwidth-10pt}% Mehr Platz rechts
\ifx\hvSet@rotAngle\@tempa
\setlength\hvMaxCapWidth{\textheight}%
\else
\setlength\hvMaxCapWidth{\hvWideWidth}%
\fi
+ \ifhv@nonFloat
+ \ifx\hvSet@capPos\hv@Top\else\vspace{\hvNonFloatTopSkip}\fi
+ \fi
%
% First we save the object in \hvObjectBox
%
@@ -742,14 +754,12 @@
\ifhv@capbeside
\ifhv@wide
\setlength\hvCapWidth{\hvSet@capWidth\hvWideWidth}%
- \@tempdima=\the\dimexpr\hvWideWidth-\hvObjectWidth-\hv@floatCapSep\relax
+ \@tempdima=\the\dimexpr\hvWideWidth-\hvObjectWidth-\hv@floatCapSep\relax % 2, damit nicht zu dicht am Rand
\else
\setlength\hvCapWidth{\hvSet@capWidth\columnwidth}%
\@tempdima=\the\dimexpr\columnwidth-\hvObjectWidth-\hv@floatCapSep\relax
\fi
- \ifdim\hvCapWidth>\@tempdima
- \hvCapWidth=\@tempdima
- \fi
+ \ifdim\hvCapWidth>\@tempdima \hvCapWidth=\@tempdima\fi
\else
\ifhv@wide
\setlength\hvCapWidth{\hvSet@capWidth\hvWideWidth}%
@@ -768,7 +778,8 @@
% \ifx\relax\hv@caption@format\relax\else\expandafter\captionsetup\expandafter{\hv@caption@format}\fi
\ifhv@nonFloat
\ifhv@onlyText
- \hv@longCap
+ \hv@longCap
+ \ifhv@onlyTextInTOC\captionlistentry{\hv@longCap}\fi
\else
\ifx\hv@floatType\hv@figure
\ifx\relax\hv@shortCap\relax
@@ -786,9 +797,10 @@
\fi
\else
\ifhv@onlyText
- \hv@longCap
+ \hv@longCap
+ \ifhv@onlyTextInTOC\captionlistentry{\hv@longCap}\fi
\else
- \expandafter\ifx\hv@longCap\@empty \else
+ \expandafter\ifx\hv@longCap\@empty \else
\let\@captype\hv@floatType
\ifx\hv@shortCap\@empty\caption{\hv@longCap}\else\caption[\hv@shortCap]{\hv@longCap}\fi
\ifx\hv@label\@empty\else\label{\hv@label}\fi
@@ -804,7 +816,8 @@
% \ifx\relax\hv@caption@format\relax\else\expandafter\captionsetup\expandafter{\hv@caption@format}\fi
\ifhv@nonFloat
\ifhv@onlyText
- \hv@longCap
+ \hv@longCap
+ \ifhv@onlyTextInTOC\captionlistentry{\hv@longCap}\fi
\else
\ifx\hv@floatType\hv@figure
\ifx\hv@shortCap\@empty \figcaption{\hv@longCap}\else\figcaption[\hv@shortCap]{\hv@longCap}\fi
@@ -815,7 +828,8 @@
\else
\expandafter\ifx\hv@longCap\@empty \else
\ifhv@onlyText
- \hv@longCap
+ \hv@longCap
+ \ifhv@onlyTextInTOC\captionlistentry{\hv@longCap}\fi
\else
\let\@captype\hv@floatType
\ifx\hv@shortCap\@empty \caption{\hv@longCap}\else\caption[\hv@shortCap]{\hv@longCap}%
@@ -1647,7 +1661,8 @@
\setlength\belowcaptionskip{5pt}%
\setlength\abovecaptionskip{0pt}%
\ifhv@onlyText
- \hv@longCap
+ \hv@longCap
+ \ifhv@onlyTextInTOC\captionlistentry{\hv@longCap}\fi
\else
\edef\@captype{\hv@floatType}%
\expandafter\ifx\expandafter\relax\hv@shortCap\relax
diff --git a/Master/texmf-dist/tex/latex/hvindex/hvindex.sty b/Master/texmf-dist/tex/latex/hvindex/hvindex.sty
index f6dba8e127a..8cdc8c0c8e0 100644
--- a/Master/texmf-dist/tex/latex/hvindex/hvindex.sty
+++ b/Master/texmf-dist/tex/latex/hvindex/hvindex.sty
@@ -1,11 +1,11 @@
-% $Id: deIndex.sty 737 2009-10-12 08:59:10Z herbert $
+% $Id: hvindex.sty 1062 2025-01-24 15:26:18Z herbert $
%%
%% IMPORTANT NOTICE:
%%
%% This is file `hvindex.sty',
%%
%% Herbert Voss <herbert@dante.de>
-%% October 01, 2009-
+%% 2009-2025
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
@@ -15,8 +15,8 @@
%% `hvindex' offers macros for simplifing indexing of words
%%
\NeedsTeXFormat{LaTeX2e}
-\def\fileversion{0.04}
-\def\filedate{2017/12/12}
+\def\fileversion{0.04a}
+\def\filedate{2025/01/24}
\message{`hvindex' v\fileversion, \filedate\space (hv)}
%
\ProvidesPackage{hvindex}[\filedate~Index macros (hv)]
@@ -40,20 +40,25 @@
\let\hvIDXfont\hvIDXfontDefault
%
\makeatother
-\def\Index#1{\expandafter\IndexXi#1!!!\IndexNIL}
+\def\Index#1{\expandafter\IndexXi#1!!!\IndexNIL}%
\def\IndexXi#1!#2!#3!#4\IndexNIL{%
- \ifx\relax#3\relax% % no 3rd argument
- \ifx\relax#2\relax% % no 2nd argument
- \IndexXXi#1@@==%\IndexNIL% % scan #1 for @
+ \ifx\relax#3\relax % no 3rd argument
+ \ifx\relax#2\relax % no 2nd argument
+ \IndexXXi#1@@==\IndexNIL % % scan #1 for @
\else\IndexXXii#1!#2@@\IndexNIL\fi% % scan #2 for @
\else\IndexXXiii#1!\noexpand#2!#3@@\IndexNIL% scan #3 for @
\fi}
\def\IndexXXi#1@#2@#3\IndexNIL{%
\ifx\relax#2\relax% no @ in last arg
- \ifx\hvIDXfont\hvIDXfontDefault
- \index{#1}#1%
- \else\index{#1@\hvIDXfont{#1}}\hvIDXfont{#1}\fi%#1
- \else\index{#1@#2}#2\fi}% % #1@#2
+ \ifx\hvIDXfont\hvIDXfontDefault%
+ #1\index{#1}%
+ \else
+ \index{#1@\hvIDXfont{#1}}\hvIDXfont{#1}%
+ \fi%#1
+ \else
+ #2\index{#1@#2}%
+ \fi
+}% % #1@#2
%
\def\IndexXXii#1!#2@#3@#4\IndexNIL{%
\ifx\relax#3\relax % no @ in last arg
diff --git a/Master/texmf-dist/tex/latex/hvlogos/hvlogos.sty b/Master/texmf-dist/tex/latex/hvlogos/hvlogos.sty
index bfdf9332b02..444e4e05e45 100644
--- a/Master/texmf-dist/tex/latex/hvlogos/hvlogos.sty
+++ b/Master/texmf-dist/tex/latex/hvlogos/hvlogos.sty
@@ -10,7 +10,7 @@
%
%
% -------------------------------------
-\ProvidesPackage{hvlogos}[2024/01/24 v. 0.12 Logos (hv)]
+\ProvidesPackage{hvlogos}[2024/10/13 v. 0.12a Logos (hv)]
%
\newif\if@dtk@newengine \@dtk@newenginetrue
%
@@ -22,6 +22,7 @@
\RequirePackage{unicode-math}
\setmathfont[version=LM]{LatinModernMath-Regular}
\setmathfont[version=XITS]{XITSMath-Regular.otf}
+ \setmathfont[version=STIX]{STIX Two Math}
\fi
%
\iffalse
diff --git a/Master/texmf-dist/tex/latex/hyperref/hdvipdfm.def b/Master/texmf-dist/tex/latex/hyperref/hdvipdfm.def
index 8fdce7b068b..26d778ea0d6 100644
--- a/Master/texmf-dist/tex/latex/hyperref/hdvipdfm.def
+++ b/Master/texmf-dist/tex/latex/hyperref/hdvipdfm.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{hdvipdfm.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref driver for dvipdfm]
\Hy@VersionCheck{hdvipdfm.def}
\special{pdf:majorversion \Hy@pdf@majorversion}
diff --git a/Master/texmf-dist/tex/latex/hyperref/hdvips.def b/Master/texmf-dist/tex/latex/hyperref/hdvips.def
index 62c4d56cf25..807a805b9d9 100644
--- a/Master/texmf-dist/tex/latex/hyperref/hdvips.def
+++ b/Master/texmf-dist/tex/latex/hyperref/hdvips.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{hdvips.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref driver for dvips]
\Hy@VersionCheck{hdvips.def}
\providecommand*{\XR@ext}{pdf}
diff --git a/Master/texmf-dist/tex/latex/hyperref/hdvipson.def b/Master/texmf-dist/tex/latex/hyperref/hdvipson.def
index ba81a7bada2..f3c3c3c5a98 100644
--- a/Master/texmf-dist/tex/latex/hyperref/hdvipson.def
+++ b/Master/texmf-dist/tex/latex/hyperref/hdvipson.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{hdvipson.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref driver for dvipsone]
\Hy@VersionCheck{hdvipson.def}
\providecommand*{\XR@ext}{pdf}
diff --git a/Master/texmf-dist/tex/latex/hyperref/hdviwind.def b/Master/texmf-dist/tex/latex/hyperref/hdviwind.def
index 5ff71600070..61776273d1c 100644
--- a/Master/texmf-dist/tex/latex/hyperref/hdviwind.def
+++ b/Master/texmf-dist/tex/latex/hyperref/hdviwind.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{hdviwind.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref driver for dviwindo]
\Hy@VersionCheck{hdviwind.def}
\begingroup
diff --git a/Master/texmf-dist/tex/latex/hyperref/hluatex.def b/Master/texmf-dist/tex/latex/hyperref/hluatex.def
index b681ab1c33d..e728c2e17e4 100644
--- a/Master/texmf-dist/tex/latex/hyperref/hluatex.def
+++ b/Master/texmf-dist/tex/latex/hyperref/hluatex.def
@@ -34,10 +34,10 @@
%%
%% File: hyperref.dtx
\ProvidesFile{hluatex.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref driver for luaTeX]
\Hy@VersionCheck{hluatex.def}
-%% 2024-07-10 v7.01j
+%% 2024-11-05 v7.01l
%% force unicode encoding, see issue #101
%% code mostly copied from hxetex.def
\HyPsd@LoadUnicode
diff --git a/Master/texmf-dist/tex/latex/hyperref/hpdftex.def b/Master/texmf-dist/tex/latex/hyperref/hpdftex.def
index bc8b4b84fb5..8bae80420d2 100644
--- a/Master/texmf-dist/tex/latex/hyperref/hpdftex.def
+++ b/Master/texmf-dist/tex/latex/hyperref/hpdftex.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{hpdftex.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref driver for pdfTeX]
\Hy@VersionCheck{hpdftex.def}
\pdf@ifdraftmode{%
diff --git a/Master/texmf-dist/tex/latex/hyperref/htex4ht.cfg b/Master/texmf-dist/tex/latex/hyperref/htex4ht.cfg
index a007ef5e83d..ade0f1a4a20 100644
--- a/Master/texmf-dist/tex/latex/hyperref/htex4ht.cfg
+++ b/Master/texmf-dist/tex/latex/hyperref/htex4ht.cfg
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{htex4ht.cfg}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref configuration file for TeX4ht]
\IfFileExists{\jobname.cfg}{\endinput}{}
\Preamble{html}
diff --git a/Master/texmf-dist/tex/latex/hyperref/htex4ht.def b/Master/texmf-dist/tex/latex/hyperref/htex4ht.def
index 3b707e5232d..34061d352ea 100644
--- a/Master/texmf-dist/tex/latex/hyperref/htex4ht.def
+++ b/Master/texmf-dist/tex/latex/hyperref/htex4ht.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{htex4ht.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref driver for TeX4ht]
\Hy@VersionCheck{htex4ht.def}
\providecommand*{\XR@ext}{html}
diff --git a/Master/texmf-dist/tex/latex/hyperref/htexture.def b/Master/texmf-dist/tex/latex/hyperref/htexture.def
index 7473dbf4b40..5107f59ff40 100644
--- a/Master/texmf-dist/tex/latex/hyperref/htexture.def
+++ b/Master/texmf-dist/tex/latex/hyperref/htexture.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{htexture.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref driver for Textures]
\Hy@VersionCheck{htexture.def}
\providecommand*{\XR@ext}{pdf}
diff --git a/Master/texmf-dist/tex/latex/hyperref/hvtex.def b/Master/texmf-dist/tex/latex/hyperref/hvtex.def
index fda74743b20..d43dc4adde2 100644
--- a/Master/texmf-dist/tex/latex/hyperref/hvtex.def
+++ b/Master/texmf-dist/tex/latex/hyperref/hvtex.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{hvtex.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref driver for VTeX in PDF/PS mode]
\Hy@VersionCheck{hvtex.def}
\providecommand*{\XR@ext}{pdf}
diff --git a/Master/texmf-dist/tex/latex/hyperref/hvtexhtm.def b/Master/texmf-dist/tex/latex/hyperref/hvtexhtm.def
index ddda3f9c1a7..bc1606c3397 100644
--- a/Master/texmf-dist/tex/latex/hyperref/hvtexhtm.def
+++ b/Master/texmf-dist/tex/latex/hyperref/hvtexhtm.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{hvtexhtml.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref driver for VTeX in HTML mode]
\Hy@VersionCheck{hvtexhtm.def}
\providecommand*{\XR@ext}{htm}
diff --git a/Master/texmf-dist/tex/latex/hyperref/hvtexmrk.def b/Master/texmf-dist/tex/latex/hyperref/hvtexmrk.def
index 007d5fc37e0..57e6f82a898 100644
--- a/Master/texmf-dist/tex/latex/hyperref/hvtexmrk.def
+++ b/Master/texmf-dist/tex/latex/hyperref/hvtexmrk.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{hvtexmrk.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref driver for VTeX in PDF/PS mode (pdfmark specials)]
\Hy@VersionCheck{hvtexmrk.def}
\providecommand*{\XR@ext}{pdf}
diff --git a/Master/texmf-dist/tex/latex/hyperref/hxetex.def b/Master/texmf-dist/tex/latex/hyperref/hxetex.def
index a53590216eb..a19ac132c8e 100644
--- a/Master/texmf-dist/tex/latex/hyperref/hxetex.def
+++ b/Master/texmf-dist/tex/latex/hyperref/hxetex.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{hxetex.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref driver for XeTeX]
\Hy@VersionCheck{hxetex.def}
\HyPsd@LoadUnicode
diff --git a/Master/texmf-dist/tex/latex/hyperref/hyperref-patches.sty b/Master/texmf-dist/tex/latex/hyperref/hyperref-patches.sty
index 3874009f17e..4e8624a0c3f 100644
--- a/Master/texmf-dist/tex/latex/hyperref/hyperref-patches.sty
+++ b/Master/texmf-dist/tex/latex/hyperref/hyperref-patches.sty
@@ -56,7 +56,6 @@
%%
%% The list of all files belonging to the `Hyperref Bundle' is
%% given in the file `manifest.txt'.
-
\ProvidesPackage{hyperref-patches}[2021-06-29 v0.9 old hyperref patches]
\newif\ifHy@patches@foiltex
\Hy@patches@foiltextrue
diff --git a/Master/texmf-dist/tex/latex/hyperref/hyperref.sty b/Master/texmf-dist/tex/latex/hyperref/hyperref.sty
index fd16d9ff212..0303b3ed591 100644
--- a/Master/texmf-dist/tex/latex/hyperref/hyperref.sty
+++ b/Master/texmf-dist/tex/latex/hyperref/hyperref.sty
@@ -36,7 +36,7 @@
%% File: hyperref.dtx
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\ProvidesPackage{hyperref}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hypertext links for LaTeX]
\begingroup
\@makeother\`%
@@ -6521,7 +6521,7 @@
\cs_new_protected:Npn \__hyp_target_counter_doc:nn #1 #2
{
- \bool_lazy_and:nnTF { \cs_if_free_p:c {c@#2} } { \cs_if_free_p:c {theH#2} }
+ \bool_lazy_or:nnTF { \cs_if_free_p:c {c@#2} } { \cs_if_free_p:c {theH#2} }
{
\PackageWarning {hyperref}{Counter~'#2'~or~the~representation~'\string\theH#2`\MessageBreak
don't~exist.~No~target~created.}{}
@@ -6567,58 +6567,76 @@
\fi
\fi
}
-\Hy@CounterExists{section}{%
- \providecommand\theHequation{\theHsection.\arabic{equation}}%
-}
-\providecommand\theHequation{\arabic{equation}}%
-\Hy@CounterExists{part}{%
- \providecommand\theHpart{\arabic{part}}%
-}
-\@ifundefined{thechapter}{%
- \providecommand\theHsection {\arabic{section}}%
- \providecommand\theHfigure {\arabic{figure}}%
- \providecommand\theHtable {\arabic{table}}%
-}{%
- \providecommand\theHchapter {\arabic{chapter}}%
- \providecommand\theHfigure {\theHchapter.\arabic{figure}}%
- \providecommand\theHtable {\theHchapter.\arabic{table}}%
- \providecommand\theHsection {\theHchapter.\arabic{section}}%
-}
-\providecommand\theHsubsection {\theHsection.\arabic{subsection}}
-\providecommand\theHsubsubsection{\theHsubsection.\arabic{subsubsection}}
-\providecommand\theHparagraph {\theHsubsubsection.\arabic{paragraph}}
-\providecommand\theHsubparagraph {\theHparagraph.\arabic{subparagraph}}
-\providecommand\theHtheorem {\theHsection.\arabic{theorem}}
-\providecommand\theHthm {\theHsection.\arabic{thm}}
+\IfFormatAtLeastTF{2024-11-01}{}
+ {
+ \Hy@CounterExists{section}{%
+ \providecommand\theHequation{\theHsection.\arabic{equation}}%
+ }
+ \providecommand\theHequation{\arabic{equation}}%
+ \Hy@CounterExists{part}{%
+ \providecommand\theHpart{\arabic{part}}%
+ }
+ \@ifundefined{thechapter}{%
+ \providecommand\theHsection {\arabic{section}}%
+ \providecommand\theHfigure {\arabic{figure}}%
+ \providecommand\theHtable {\arabic{table}}%
+ }{%
+ \providecommand\theHchapter {\arabic{chapter}}%
+ \providecommand\theHfigure {\theHchapter.\arabic{figure}}%
+ \providecommand\theHtable {\theHchapter.\arabic{table}}%
+ \providecommand\theHsection {\theHchapter.\arabic{section}}%
+ }
+ \providecommand\theHsubsection {\theHsection.\arabic{subsection}}
+ \providecommand\theHsubsubsection{\theHsubsection.\arabic{subsubsection}}
+ \providecommand\theHparagraph {\theHsubsubsection.\arabic{paragraph}}
+ \providecommand\theHsubparagraph {\theHparagraph.\arabic{subparagraph}}
+ \providecommand\theHtheorem {\theHsection.\arabic{theorem}}
+ \providecommand\theHthm {\theHsection.\arabic{thm}}
+ }
\let\H@item\item
\newcounter{Item}
-\def\theHItem{\arabic{Item}}
+\IfFormatAtLeastTF{2024-11-01}{}
+ {\def\theHItem{\arabic{Item}}}
\def\item{%
\@hyper@itemfalse
\if@nmbrlist\@hyper@itemtrue\fi
\H@item
}
-\providecommand\theHenumi {\theHItem}
-\providecommand\theHenumii {\theHItem}
-\providecommand\theHenumiii {\theHItem}
-\providecommand\theHenumiv {\theHItem}
-\providecommand\theHHfootnote {\arabic{Hfootnote}}
-\providecommand\theHmpfootnote{\arabic{mpfootnote}}
-\@ifundefined{theHHmpfootnote}{%
- \let\theHHmpfootnote\theHHfootnote
-}{}
-\let\H@refstepcounter\refstepcounter
+\IfFormatAtLeastTF{2024-11-01}{}
+ {
+ \providecommand\theHenumi {\theHItem}
+ \providecommand\theHenumii {\theHItem}
+ \providecommand\theHenumiii {\theHItem}
+ \providecommand\theHenumiv {\theHItem}
+ \providecommand\theHHfootnote {\arabic{Hfootnote}}
+ \providecommand\theHmpfootnote{\arabic{mpfootnote}}
+ }
+\let\H@refstepcounter\@kernel@refstepcounter
\edef\name@of@eq{equation}%
\newif\if@hyper@item
\newif\if@skiphyperref
\@hyper@itemfalse
\@skiphyperreffalse
\ExplSyntaxOn
-\def\refstepcounter#1{%
- \legacy_if:nF {Hy@pdfstring}
+\IfFormatAtLeastTF{2024-11-01}
+ {
+ \NewSocketPlug{refstepcounter}{hyperref}{\ifHy@pdfstring\else#1\fi}
+ \AssignSocketPlug{refstepcounter}{hyperref}
+ \AddToHook{package/cleveref/after}
{
- \H@refstepcounter{#1}%
- \bool_lazy_and:nnT
+ \@ifpackagelater{cleveref}{2018/03/28}{}
+ {
+ \NewSocketPlug{refstepcounter}{hyperref/fixcleveref}
+ {\ifHy@pdfstring\else
+ #1%
+ {\firstaid@cref@updatelabeldata{\@currentcounter}}%
+ \fi}
+ \AssignSocketPlug{refstepcounter}{hyperref/fixcleveref}
+ }
+ }
+ \NewSocketPlug{refstepcounter/target}{hyperref}
+ {
+ \bool_lazy_and:nnT
{ \l__hyp_target_create_bool }
{ ! \legacy_if_p:n{@skiphyperref} }
{
@@ -6629,11 +6647,34 @@
\@hyper@itemfalse
}
{
- \hyper@refstepcounter{#1}%
+ \hyper@refstepcounter{\@currentcounter}%
}
- }
- }
-}
+ }
+ }
+ \AssignSocketPlug{refstepcounter/target}{hyperref}
+ }
+ {
+ \def\refstepcounter#1{%
+ \legacy_if:nF {Hy@pdfstring}
+ {
+ \H@refstepcounter{#1}%
+ \bool_lazy_and:nnT
+ { \l__hyp_target_create_bool }
+ { ! \legacy_if_p:n{@skiphyperref} }
+ {
+ \legacy_if:nTF {@hyper@item}
+ {
+ \stepcounter{Item}%
+ \hyper@refstepcounter{Item}%
+ \@hyper@itemfalse
+ }
+ {
+ \hyper@refstepcounter{#1}%
+ }
+ }
+ }
+ }
+ }
\ExplSyntaxOff
\let\Hy@saved@refstepcounter\refstepcounter
\newif\ifmeasuring@\measuring@false
@@ -7033,7 +7074,16 @@
}}}{}
\@ifundefined{hyper@nopatch@footnote}{%
\ifHy@hyperfootnotes
- \newcounter{Hfootnote}%
+ \@ifundefined{theHfootnote}
+ {\newcounter{Hfootnote}}
+ {\let\H@@theHfootnote\theHfootnote
+ \let\theHfootnote\undefined
+ \newcounter{Hfootnote}
+ \let\theHfootnote\H@@theHfootnote
+ }%
+ \@ifundefined{theHHmpfootnote}{%
+ \let\theHHmpfootnote\theHHfootnote
+ }{}
\let\H@@footnotetext\@footnotetext
\let\H@@footnotemark\@footnotemark
\def\@xfootnotenext[#1]{%
@@ -7299,6 +7349,7 @@
}%
#3%
\fi
+ \IfFormatAtLeastTF{2024-11-01}{\UseTaggingSocket{recordtarget}}{}%
}%
\fi
\par
@@ -7712,6 +7763,7 @@
\fi
}
}{}
+\IfFormatAtLeastTF{2024-11-01}{\def\hyper@nopatch@counter{}}{}
\@ifundefined{hyper@nopatch@counter}
{
\let\H@definecounter\@definecounter
diff --git a/Master/texmf-dist/tex/latex/hyperref/hypertex.def b/Master/texmf-dist/tex/latex/hyperref/hypertex.def
index b03da7b3665..89fbca240ee 100644
--- a/Master/texmf-dist/tex/latex/hyperref/hypertex.def
+++ b/Master/texmf-dist/tex/latex/hyperref/hypertex.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{hypertex.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref driver for HyperTeX specials]
\Hy@VersionCheck{hypertex.def}
\providecommand*{\XR@ext}{dvi}
diff --git a/Master/texmf-dist/tex/latex/hyperref/nohyperref.sty b/Master/texmf-dist/tex/latex/hyperref/nohyperref.sty
index e6c8822b185..c030a7c0b74 100644
--- a/Master/texmf-dist/tex/latex/hyperref/nohyperref.sty
+++ b/Master/texmf-dist/tex/latex/hyperref/nohyperref.sty
@@ -34,7 +34,7 @@
%% File: hyperref.dtx
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\ProvidesPackage{nohyperref}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Dummy hyperref (SR)]
\let\hyper@@anchor\@gobble
\def\hyper@link#1#2#3{#3}%
diff --git a/Master/texmf-dist/tex/latex/hyperref/pd1enc.def b/Master/texmf-dist/tex/latex/hyperref/pd1enc.def
index d202fd12697..b932ce39d49 100644
--- a/Master/texmf-dist/tex/latex/hyperref/pd1enc.def
+++ b/Master/texmf-dist/tex/latex/hyperref/pd1enc.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{pd1enc.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref: PDFDocEncoding definition (HO)]
\DeclareFontEncoding{PD1}{}{}
\DeclareTextAccent{\`}{PD1}{\textasciigrave}
diff --git a/Master/texmf-dist/tex/latex/hyperref/pdfmark.def b/Master/texmf-dist/tex/latex/hyperref/pdfmark.def
index 761f6527e91..3ffdebac1d8 100644
--- a/Master/texmf-dist/tex/latex/hyperref/pdfmark.def
+++ b/Master/texmf-dist/tex/latex/hyperref/pdfmark.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{pdfmark.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref definitions for pdfmark specials]
\Hy@VersionCheck{pdfmark.def}
\begingroup
diff --git a/Master/texmf-dist/tex/latex/hyperref/psdextra.def b/Master/texmf-dist/tex/latex/hyperref/psdextra.def
index 50f3e63126c..5a1073a510c 100644
--- a/Master/texmf-dist/tex/latex/hyperref/psdextra.def
+++ b/Master/texmf-dist/tex/latex/hyperref/psdextra.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{psdextra.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref: Additions to PDF string support]
\Hy@VersionCheck{psdextra.def}
\DeclareTextCommand{\textGamma}{PU}{\83\223}%* U+0393
diff --git a/Master/texmf-dist/tex/latex/hyperref/puarenc.def b/Master/texmf-dist/tex/latex/hyperref/puarenc.def
index 5e04cf4ad2b..ef45b901be0 100644
--- a/Master/texmf-dist/tex/latex/hyperref/puarenc.def
+++ b/Master/texmf-dist/tex/latex/hyperref/puarenc.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{puarenc.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref: Additions to puenc.def for Arabi]
\DeclareTextCommand{\hamza}{PU}{\86\041}% U+0621
\DeclareTextCommand{\alefmadda}{PU}{\86\042}% U+0622
diff --git a/Master/texmf-dist/tex/latex/hyperref/puenc-extra.def b/Master/texmf-dist/tex/latex/hyperref/puenc-extra.def
index 6e983121159..95b4df4a945 100644
--- a/Master/texmf-dist/tex/latex/hyperref/puenc-extra.def
+++ b/Master/texmf-dist/tex/latex/hyperref/puenc-extra.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{puenc-extra.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref: PDF Unicode extra definition (HO)]
\DeclareTextCommand{\G}{PU}[1]{#1\83\017}% U+030F
\DeclareTextCompositeCommand{\G}{PU}{\@empty}{\textdoublegrave}%
diff --git a/Master/texmf-dist/tex/latex/hyperref/puenc.def b/Master/texmf-dist/tex/latex/hyperref/puenc.def
index 8aedd0b78c8..7774f4952f6 100644
--- a/Master/texmf-dist/tex/latex/hyperref/puenc.def
+++ b/Master/texmf-dist/tex/latex/hyperref/puenc.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{puenc.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref: PDF Unicode definition (HO)]
\DeclareFontEncoding{PU}{}{}
\DeclareTextCommand{\`}{PU}[1]{#1\83\000}% U+0300
diff --git a/Master/texmf-dist/tex/latex/hyperref/puvnenc.def b/Master/texmf-dist/tex/latex/hyperref/puvnenc.def
index e0323c4eb86..4af47357dd0 100644
--- a/Master/texmf-dist/tex/latex/hyperref/puvnenc.def
+++ b/Master/texmf-dist/tex/latex/hyperref/puvnenc.def
@@ -33,7 +33,7 @@
%%
%% File: hyperref.dtx
\ProvidesFile{puvnenc.def}
- [2024-07-10 v7.01j %
+ [2024-11-05 v7.01l %
Hyperref: Additions to puenc.def for VnTeX]
\DeclareTextCommand{\abreve}{PU}{\81\003}% U+0103
\DeclareTextCommand{\acircumflex}{PU}{\80\342}% U+00E2
diff --git a/Master/texmf-dist/tex/latex/hyperref/xr-hyper.sty b/Master/texmf-dist/tex/latex/hyperref/xr-hyper.sty
index 25b1f757bdd..1b292a9b9d9 100644
--- a/Master/texmf-dist/tex/latex/hyperref/xr-hyper.sty
+++ b/Master/texmf-dist/tex/latex/hyperref/xr-hyper.sty
@@ -34,7 +34,7 @@
%% File: xr-hyper.dtx Copyright (C) 1993-2024 David Carlisle
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{xr-hyper}
- [2024-07-10 v7.01j eXternal References (DPC)]
+ [2024-11-05 v7.01l eXternal References (DPC)]
\def\externaldocument{\@testopt\XR@cite{}}
\let\externalcitedocument\externaldocument
\def\XR@cite[#1]{\@testopt{\XR@[#1]}{}}
diff --git a/Master/texmf-dist/tex/latex/iaria-lite/iaria-lite.cls b/Master/texmf-dist/tex/latex/iaria-lite/iaria-lite.cls
index 8d868395cc7..ba646c6dd2f 100644
--- a/Master/texmf-dist/tex/latex/iaria-lite/iaria-lite.cls
+++ b/Master/texmf-dist/tex/latex/iaria-lite/iaria-lite.cls
@@ -2,12 +2,24 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{iaria-lite}[2024/04/10 unofficial IARIA-lite conference template v0.2]
+\ProvidesClass{iaria-lite}[2025/01/16 IARIA-lite template v0.6]
+\newcounter{iaria@subfigtracker}
+\newcounter{iaria@subcaptiontracker}
\newcounter{iaria@pbalancetracker}
\newcounter{iaria@flushendtracker}
-\DeclareOption{onecolumn}{\OptionNotUsed} % IEEE option onecolumn will be ignored
+
+\DeclareOption{subfig}{
+ \setcounter{iaria@subfigtracker}{1}
+ \typeout{iaria class: subfig option is set (use subfloat command).}
+}
+\DeclareOption{subcaption}{
+ \setcounter{iaria@subcaptiontracker}{1}
+ \typeout{iaria class: subcaption option is set (use subfigure command).}
+}
+
+\DeclareOption{onecolumn}{\OptionNotUsed}
\DeclareOption{pbalance}{
\setcounter{iaria@pbalancetracker}{1}
@@ -19,7 +31,7 @@
}
\DeclareOption*{%
- \PassOptionsToClass{\CurrentOption}{IEEEtran}% required IEEE options: conference (for IARIA purposes)
+ \PassOptionsToClass{\CurrentOption}{IEEEtran}
}
\ProcessOptions\relax
@@ -52,22 +64,14 @@
\renewcommand{\IEEEauthorblockN}[1]{%
\relax\@IEEEauthorblockNstyle% set the default text style
\gdef\@IEEEauthorblockXinterlinespace{0pt}% disable strut for spacer row
- % the \expandafter hides the \cr in conditional tex, see the array.sty docs
- % for details, probably not needed here as the \cr is in a macro
- % do a spacer row if needed
\if@IEEEprevauthorblockincol\expandafter\@IEEEauthorblockNtopspaceline\fi
\global\@IEEEprevauthorblockincoltrue% we now have a block in this column
- %restore the correct strut value
\gdef\@IEEEauthorblockXinterlinespace{\@IEEEauthorblockNinterlinespace}%
- % input the author names
\large
#1%
- % end the row if the user did not already
\crcr}
\makeatother
-\RequirePackage[caption=false,font=footnotesize]{subfig}
-
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@makecaption}
@@ -77,6 +81,32 @@
{}
\makeatother
+\RequirePackage{caption}
+\captionsetup[table]{
+ name=TABLE,
+ position=above,
+ justification=centering,
+ labelsep=period,
+ textfont={footnotesize, sc},
+ labelfont=footnotesize}
+\captionsetup[figure]{
+ position=below,
+ justification=centering,
+ labelsep=period,
+ font={footnotesize,rm}}
+
+\ifnum\value{iaria@subfigtracker}=1
+ \typeout{iaria class: load subfig package (use subfloat command).}
+ \RequirePackage[caption=false,font=footnotesize]{subfig}
+\fi
+\ifnum\value{iaria@subcaptiontracker}=1
+ \typeout{iaria class: load subcaption package (use subfigure command).}
+ \RequirePackage{subcaption}
+ % IARIA requires subfigure caption to number them with
+ % parentheses around latin chars (like "(a)" and "(b)")
+ \captionsetup[subfigure]{labelformat=parens,font=footnotesize}
+\fi
+
\ifnum\value{iaria@pbalancetracker}=1
\typeout{iaria class: load pbalance package.}
\RequirePackage{pbalance}
@@ -86,6 +116,9 @@
\RequirePackage{flushend}
\fi
+
+\RequirePackage[shortcuts]{extdash}
+
\endinput
%%
%% End of file `iaria-lite.cls'.
diff --git a/Master/texmf-dist/tex/latex/iaria/iaria.cls b/Master/texmf-dist/tex/latex/iaria/iaria.cls
index a8e4a472a67..c7a22fd644b 100644
--- a/Master/texmf-dist/tex/latex/iaria/iaria.cls
+++ b/Master/texmf-dist/tex/latex/iaria/iaria.cls
@@ -3,12 +3,24 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{iaria}[2024/04/10 unofficial IARIA conference template v0.2]
+\ProvidesClass{iaria}[2025/01/16 IARIA template v0.6]
+\newcounter{iaria@subfigtracker}
+\newcounter{iaria@subcaptiontracker}
\newcounter{iaria@pbalancetracker}
\newcounter{iaria@flushendtracker}
-\DeclareOption{onecolumn}{\OptionNotUsed} % IEEE option onecolumn will be ignored
+
+\DeclareOption{subfig}{
+ \setcounter{iaria@subfigtracker}{1}
+ \typeout{iaria class: subfig option is set (use subfloat command).}
+}
+\DeclareOption{subcaption}{
+ \setcounter{iaria@subcaptiontracker}{1}
+ \typeout{iaria class: subcaption option is set (use subfigure command).}
+}
+
+\DeclareOption{onecolumn}{\OptionNotUsed}
\DeclareOption{pbalance}{
\setcounter{iaria@pbalancetracker}{1}
@@ -20,7 +32,7 @@
}
\DeclareOption*{%
- \PassOptionsToClass{\CurrentOption}{IEEEtran}% required IEEE options: conference (for IARIA purposes)
+ \PassOptionsToClass{\CurrentOption}{IEEEtran}
}
\ProcessOptions\relax
@@ -42,40 +54,57 @@
\RequirePackage{hyperref}
\hypersetup{hidelinks,unicode}
-\RequirePackage[style=ieee, backend=biber, url=false, hyperref, maxnames=5, minnames=1, maxcitenames=2, mincitenames=1]{biblatex}
+\RequirePackage[
+ defernumbers=true,
+ style=ieee,
+ backend=biber,
+ url=false,
+ hyperref,
+ maxnames=5,
+ minnames=1,
+ maxcitenames=2,
+ mincitenames=1
+]{biblatex}
+
+\makeatletter
+\let\blx@rerun@biber\relax
+\makeatother
+
+\renewcommand*{\multicitedelim}{}
+
\renewcommand*{\bibfont}{\small}
\DeclareBibliographyDriver{online}{%
- \usebibmacro{bibindex}%
- \usebibmacro{begentry}%
- \usebibmacro{author/editor+others/translator+others}
- \setunit{\labelnamepunct}\newblock
- \usebibmacro{title}%
- \newunit
- \printlist{language}%
- \newunit\newblock
- \usebibmacro{byauthor}%
- \newunit\newblock
- \usebibmacro{byeditor+others}%
- \newunit\newblock
- \printfield{version}%
- \newunit
- \printfield{note}%
- \newunit\newblock
- \printlist{organization}
- \newunit\newblock
- \usebibmacro{date}%
- \newunit\newblock
- \iftoggle{bbx:eprint}
- {\usebibmacro{eprint}}
- {}%
- \newunit\newblock
- \usebibmacro{url+urldate}%
- \newunit\newblock
- \usebibmacro{addendum+pubstate}%
- \setunit{\bibpagerefpunct}\newblock
- \usebibmacro{pageref}%
- \usebibmacro{finentry}}
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}
+ \setunit{\labelnamepunct}\newblock
+ \usebibmacro{title}%
+ \newunit
+ \printlist{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}%
+ \newunit\newblock
+ \usebibmacro{byeditor+others}%
+ \newunit\newblock
+ \printfield{version}%
+ \newunit
+ \printfield{note}%
+ \newunit\newblock
+ \printlist{organization}
+ \newunit\newblock
+ \usebibmacro{date}%
+ \newunit\newblock
+ \iftoggle{bbx:eprint}
+ {\usebibmacro{eprint}}
+ {}%
+ \newunit\newblock
+ \usebibmacro{url+urldate}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \usebibmacro{finentry}}
\makeatletter
\renewcommand{\fnum@figure}{Figure~\thefigure}
@@ -93,22 +122,14 @@
\renewcommand{\IEEEauthorblockN}[1]{%
\relax\@IEEEauthorblockNstyle% set the default text style
\gdef\@IEEEauthorblockXinterlinespace{0pt}% disable strut for spacer row
- % the \expandafter hides the \cr in conditional tex, see the array.sty docs
- % for details, probably not needed here as the \cr is in a macro
- % do a spacer row if needed
\if@IEEEprevauthorblockincol\expandafter\@IEEEauthorblockNtopspaceline\fi
\global\@IEEEprevauthorblockincoltrue% we now have a block in this column
- %restore the correct strut value
\gdef\@IEEEauthorblockXinterlinespace{\@IEEEauthorblockNinterlinespace}%
- % input the author names
\large
#1%
- % end the row if the user did not already
\crcr}
\makeatother
-\RequirePackage[caption=false,font=footnotesize]{subfig}
-
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@makecaption}
@@ -118,7 +139,31 @@
{}
\makeatother
-\RequirePackage[shortcuts]{extdash} % Use \-/ for a breakable dash that does not prevent the remainer of the word to be hyphenated
+\RequirePackage{caption}
+\captionsetup[table]{
+ name=TABLE,
+ position=above,
+ justification=centering,
+ labelsep=period,
+ textfont={footnotesize, sc},
+ labelfont=footnotesize}
+\captionsetup[figure]{
+ position=below,
+ justification=centering,
+ labelsep=period,
+ font={footnotesize,rm}}
+
+\ifnum\value{iaria@subfigtracker}=1
+ \typeout{iaria class: load subfig package (use subfloat command).}
+ \RequirePackage[caption=false,font=footnotesize]{subfig}
+\fi
+\ifnum\value{iaria@subcaptiontracker}=1
+ \typeout{iaria class: load subcaption package (use subfigure command).}
+ \RequirePackage{subcaption}
+ % IARIA requires subfigure caption to number them with
+ % parentheses around latin chars (like "(a)" and "(b)")
+ \captionsetup[subfigure]{labelformat=parens,font=footnotesize}
+\fi
\ifnum\value{iaria@pbalancetracker}=1
\typeout{iaria class: load pbalance package.}
@@ -129,6 +174,9 @@
\RequirePackage{flushend}
\fi
+
+\RequirePackage[shortcuts]{extdash}
+
\endinput
%%
%% End of file `iaria.cls'.
diff --git a/Master/texmf-dist/tex/latex/iexec/iexec.sty b/Master/texmf-dist/tex/latex/iexec/iexec.sty
index 00036d6feca..2a3797fccbb 100644
--- a/Master/texmf-dist/tex/latex/iexec/iexec.sty
+++ b/Master/texmf-dist/tex/latex/iexec/iexec.sty
@@ -7,7 +7,7 @@
%% iexec.dtx (with options: `package')
%% (The MIT License)
%%
-%% Copyright (c) 2021-2024 Yegor Bugayenko
+%% Copyright (c) 2021-2025 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
@@ -31,7 +31,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{iexec}
-[2024-01-14 0.14.0 Inputable Shell Executions]
+[2025/01/16 0.15.0 Inputable Shell Executions]
@@ -128,7 +128,8 @@
{\PackageError{iexec}{The "\iexec@stdout" file is absent
after processing, looks like some internal error}{}}%
\ifdefined\iexec@log%
- \message{iexec: This is the content of '\iexec@stdout':^^J}%
+ \message{iexec: This is the content of '\iexec@stdout'\ifdefined\pdffilesize
+ \space(\pdffilesize{\iexec@stdout} bytes)\else\fi:^^J}%
\IfFileExists
{\iexec@stdout}
{\iexec@typeout{\iexec@stdout}}
@@ -138,7 +139,8 @@
\else%
\ifnum\iexec@code=0\else%
\ifdefined\iexec@ignore\else%
- \message{iexec: See the content of '\iexec@stdout'
+ \message{iexec: See the content of '\iexec@stdout'\ifdefined\pdffilesize
+ \space(\pdffilesize{\iexec@stdout} bytes)\fi
after failure:^^J}%
\iexec@typeout{\iexec@stdout}%
\message{<EOF>^^J}%
@@ -213,8 +215,6 @@
\endgroup%
}\makeatother
-
-
\endinput
%%
%% End of file `iexec.sty'.
diff --git a/Master/texmf-dist/tex/latex/inlinegraphicx/inlinegraphicx.sty b/Master/texmf-dist/tex/latex/inlinegraphicx/inlinegraphicx.sty
new file mode 100644
index 00000000000..d4b696c2e4e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/inlinegraphicx/inlinegraphicx.sty
@@ -0,0 +1,48 @@
+% Author : C. Pierquet
+% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{inlinegraphicx}[2024/11/06 0.1.0 Insert inline graphicx]
+
+%====HISTORY
+% v 0.1.0 Initial version
+
+%====BASE
+\RequirePackage{graphicx}
+\RequirePackage{calc}
+\RequirePackage{simplekv}
+
+%====DIMENSIONS
+\newlength{\totheightinlinegraphicx}
+\newlength{\depthinlinegraphicx}
+\newlength{\inlinedepthgraphicsscale}
+
+%====KEYS
+\defKV[inlinegraphics]{scale=\def\inlinegraphicsscale{#1},strut=\def\inlinegraphicstrut{#1}}
+\setKVdefault[inlinegraphics]{scale=1,strut={qH}}
+
+%====MACRO
+\NewDocumentCommand\inlinegraphics{ s O{} m }{%
+ %1 = no depth/raisebox
+ %2 = keys (scale + strut)
+ %3 = file
+ \restoreKV[inlinegraphics]%
+ \setKV[inlinegraphics]{#2}%
+ \IfBooleanTF{#1}%
+ {%
+ \settoheight{\totheightinlinegraphicx}{\hbox{\inlinegraphicstrut}}%
+ \includegraphics[height=\inlinegraphicsscale\totheightinlinegraphicx]{#3}%
+ }%
+ {%
+ \settototalheight{\totheightinlinegraphicx}{\hbox{\inlinegraphicstrut}}%
+ \settodepth{\depthinlinegraphicx}{\hbox{\inlinegraphicstrut}}%
+ \xdef\inlinegraphicsinvscale{\fpeval{0.5*(1-\inlinegraphicsscale)}}%
+ \setlength{\inlinedepthgraphicsscale}%
+ {\dimexpr\depthinlinegraphicx-\inlinegraphicsinvscale\totheightinlinegraphicx\relax}%
+ \raisebox{-\inlinedepthgraphicsscale}{%
+ \includegraphics[height=\inlinegraphicsscale\totheightinlinegraphicx]{#3}%
+ }%
+ }%
+}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/isphysicalmath/isphysicalmath.sty b/Master/texmf-dist/tex/latex/isphysicalmath/isphysicalmath.sty
index c16db962b60..13fb44a43c5 100644
--- a/Master/texmf-dist/tex/latex/isphysicalmath/isphysicalmath.sty
+++ b/Master/texmf-dist/tex/latex/isphysicalmath/isphysicalmath.sty
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 2024 by Mario Fantini <marfant7@gmail.com>
+%% Copyright (C) 2024 by Mario Fantini <ing.mariofantini@gmail.com>
%%
%% This file may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3 of this license
@@ -22,7 +22,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{isphysicalmath}
-[2024/01/03 v1.1.0 .dtx isphysicalmath file]
+[2024/12/27 v2.0.0 .dtx isphysicalmath file]
\RequirePackage{xstring}
%
% Notation section:
@@ -32,9 +32,10 @@
\def\ispmrc#1,#2{{#1.#2}}
}
%
-% option [comma]: scientific international notation for thousands and their multiples.
-\DeclareOption{comma}{
-\def\ispmc#1{%
+\ExecuteOptions{dc}
+%
+% command \ispmcomma: scientific international notation for thousands and their multiples.
+\newcommand{\ispmcomma}[1]{%
\StrLen{#1}[\temp]%
\ifnum\temp=4%
\StrChar{#1}{1}[\unoq]%
@@ -94,29 +95,727 @@
\unoq\dueq\treq,\quattroq\cinqueq\seiq,\setteq\ottoq\noveq%
\fi%
}
+%
+%
+% Formatting section:
+% a small space between value and measurement unit
+\newcommand{\ispms}{\,}
+% normal text rendering for first measurement unit
+\newcommand{\ispmntone}[1]{\textnormal{#1}}
+% jolly: the default setting consists in --- a $0.15\ispmone{mm}$ of space
+% and normal text rendering for a generic 'entity'.
+% If you are a developer, you can modify it when and how you want.
+\newcommand{\ispm}[1]{\hspace{0.15mm}\textnormal{#1}}
+% normal text rendering for first and second measurement units
+\newcommand{\ispmnttwo}[2]{\textnormal{#1}\textnormal{#2}}
+% space between first and second measurement units
+\newcommand{\ispmss}{\hspace{0.15mm}}
+% \ispm if you have only a measurement unit
+% e.g. $F = 20 \ispmone{N}$
+\newcommand{\ispmone}{\ispms\ispmntone}
+% \ispm if you have two measurement units
+% e.g. $L = 20 \ispmtwo{N}{m}$
+\newcommand{\ispmtwo}[2]{\ispms\ispmnttwo\ispmss{#1}\ispmnttwo\ispmss{#2}}
+% ispm if you have three measurement units
+% e.g. $V = 8 \ispmtwo{m}{m}\ispmthird{m}$
+\newcommand{\ispmthird}[1]{\ispmss\ispm{#1}}
+% and so on until ninth measurement unit
+\newcommand{\ispmfourth}[1]{\ispmss\ispm{#1}}
+\newcommand{\ispmfifth}[1]{\ispmss\ispm{#1}}
+\newcommand{\ispmsixth}[1]{\ispmss\ispm{#1}}
+\newcommand{\ispmseventh}[1]{\ispmss\ispm{#1}}
+\newcommand{\ispmeighth}[1]{\ispmss\ispm{#1}}
+\newcommand{\ispmninth}[1]{\ispmss\ispm{#1}}
+% If you don't want numerical order, you could use generic \ispmn command
+\newcommand{\ispmn}[1]{\ispmss\ispm{#1}}
+
+
+%% Delete digits after dot
+\DeclareOption{flushpostdot}{
+% e.g. \ispmflushpd 1.2 = 1
+\def\ispmflushpd#1.#2{{#1}}
}
-\ExecuteOptions{dc}
-\ExecuteOptions{comma}
-\ProcessOptions\relax
+\ExecuteOptions{flushpostdot}
+
+
+%% Potenze del numero dieci
+\newcommand{\ispmpl}{(}
+\newcommand{\ispmpr}{)}
+\newcommand{\ispmten}{10}
+\newcommand{\ispmtenf}{\ispmpl\ispmten\ispmpr}
+
+%% Esponenti positivi con la prima cifra "leading": numeri interi
+% commentato perché limitante, quello per i numeri reali è invece completo (universale)
+%\newcommand{\ispmdexpp}[1]{%
+%\StrLen{#1}[\temp]%
+%\ifnum\temp=2%
+%\StrChar{#1}{1}[\unoq]%
+%\StrChar{#1}{2}[\dueq]%
+%\ispmpl{\unoq}.{\dueq}\ispmpr\ispmtenf%
+%\fi%
+%\ifnum\temp=3%
+%\StrChar{#1}{1}[\unoq]%
+%\StrChar{#1}{2}[\dueq]%
+%\StrChar{#1}{3}[\treq]%
+%\ispmpl{\unoq}.{\dueq}{\treq}\ispmpr\ispmtenf$^2$%
+%\fi%
+%\ifnum\temp=4%
+%\StrChar{#1}{1}[\unoq]%
+%\StrChar{#1}{2}[\dueq]%
+%\StrChar{#1}{3}[\treq]%
+%\StrChar{#1}{4}[\quattroq]%
+%\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}\ispmpr\ispmtenf$^3$%
+%\fi%
+%\ifnum\temp=5%
+%\StrChar{#1}{1}[\unoq]%
+%\StrChar{#1}{2}[\dueq]%
+%\StrChar{#1}{3}[\treq]%
+%\StrChar{#1}{4}[\quattroq]%
+%\StrChar{#1}{5}[\cinqueq]%
+%\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\cinqueq}\ispmpr\ispmtenf$^4$%
+%\fi%
+%\ifnum\temp=6%
+%\StrChar{#1}{1}[\unoq]%
+%\StrChar{#1}{2}[\dueq]%
+%\StrChar{#1}{3}[\treq]%
+%\StrChar{#1}{4}[\quattroq]%
+%\StrChar{#1}{5}[\cinqueq]%
+%\StrChar{#1}{6}[\seiq]%
+%\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\cinqueq}{\seiq}\ispmpr\ispmtenf$^5$%
+%\fi%
+%\ifnum\temp=7%
+%\StrChar{#1}{1}[\unoq]%
+%\StrChar{#1}{2}[\dueq]%
+%\StrChar{#1}{3}[\treq]%
+%\StrChar{#1}{4}[\quattroq]%
+%\StrChar{#1}{5}[\cinqueq]%
+%\StrChar{#1}{6}[\seiq]%
+%\StrChar{#1}{7}[\setteq]%
+%\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\cinqueq}{\seiq}{\setteq}\ispmpr\ispmtenf$^6$%
+%\fi%
+%\ifnum\temp=8%
+%\StrChar{#1}{1}[\unoq]%
+%\StrChar{#1}{2}[\dueq]%
+%\StrChar{#1}{3}[\treq]%
+%\StrChar{#1}{4}[\quattroq]%
+%\StrChar{#1}{5}[\cinqueq]%
+%\StrChar{#1}{6}[\seiq]%
+%\StrChar{#1}{7}[\setteq]%
+%\StrChar{#1}{8}[\ottoq]%
+%\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\cinqueq}{\seiq}{\setteq}{\ottoq}\ispmpr\ispmtenf$^7$%
+%\fi%
+%\ifnum\temp=9%
+%\StrChar{#1}{1}[\unoq]%
+%\StrChar{#1}{2}[\dueq]%
+%\StrChar{#1}{3}[\treq]%
+%\StrChar{#1}{4}[\quattroq]%
+%\StrChar{#1}{5}[\cinqueq]%
+%\StrChar{#1}{6}[\seiq]%
+%\StrChar{#1}{7}[\setteq]%
+%\StrChar{#1}{8}[\ottoq]%
+%\StrChar{#1}{9}[\noveq]%
+%\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\cinqueq}{\seiq}{\setteq}{\ottoq}{\noveq}\ispmpr\ispmtenf$^8$%
+%\fi%
+%}
%
-% command \ispmcomma: scientific international notation for thousands and their multiples.
-\newcommand{\ispmcomma}[1]{%
+%% Esponenti positivi Reali con la prima cifra "leading"
+\newcommand{\ispmdexpp}[1]{%
+%
+%% Two digits, two arguments
\StrLen{#1}[\temp]%
+\ifnum\temp=2%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\ispmpl{\unoq}.{\dueq}\ispmpr\ispmtenf%
+\fi%
+%
+% Three arguments
+\ifnum\temp=3%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+% if A.1
+\ifx\dueq\undefined
+indefinito
+% else A.1
+\else
+% Two digits, three arguments \\
+% if A.1.1
+\if\dueq.
+\unoq\dueq\treq%
+% else A.1.1
+\else
+% Three digits, three arguments \\
+\ispmpl{\unoq}.{\dueq}{\treq}\ispmpr\ispmtenf$^2$%
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi%
+%
+%
+% if A
\ifnum\temp=4%
\StrChar{#1}{1}[\unoq]%
\StrChar{#1}{2}[\dueq]%
\StrChar{#1}{3}[\treq]%
\StrChar{#1}{4}[\quattroq]%
-\unoq,\dueq\treq\quattroq%
+% if A.1
+\ifx\dueq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\dueq.
+\unoq\dueq\treq\quattroq%
+% else A.1.1
+\else
+% if A.1.1.1
+\ifx\treq\undefined
+indefinito
+% else A.1.1.1
+\else
+% if A.1.1.1.1
+\if\treq.
+\ispmpl{\unoq}.{\dueq}{\quattroq}\ispmpr\ispmtenf%
+% else A.1.1.1.1
+\else
+\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}\ispmpr\ispmtenf$^3$%
+% fi A.1.1.1.1
+\fi
+% fi A.1.1.1
+\fi
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
\fi%
+%
+% if A
\ifnum\temp=5%
\StrChar{#1}{1}[\unoq]%
\StrChar{#1}{2}[\dueq]%
\StrChar{#1}{3}[\treq]%
\StrChar{#1}{4}[\quattroq]%
\StrChar{#1}{5}[\cinqueq]%
-\unoq\dueq,\treq\quattroq\cinqueq%
+% if A.1
+\ifx\dueq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\dueq.
+\unoq\dueq\treq\quattroq\cinqueq%
+% else A.1.1
+\else
+% if A.1.1.1
+\ifx\treq\undefined
+indefinito
+% else A.1.1.1
+\else
+% if A.1.1.1.1
+\if\treq.
+% 12.3 -> 1.23(10)
+\ispmpl{\unoq}.{\dueq}{\quattroq}\ispmpr\ispmtenf%
+% else A.1.1.1.1
+\else
+% if A.1.1.1.1.1
+\ifx\quattroq\undefined
+indefinito
+% else A.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1
+\if\quattroq.
+\ispmpl{\unoq}.{\dueq}{\treq}{\cinqueq}\ispmpr\ispmtenf$^2$%
+% else A.1.1.1.1.1.1
+\else
+\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\cinqueq}\ispmpr\ispmtenf$^4$%
+% fi A.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1
+\fi
+% fi A.1.1.1.1
+\fi
+% fi A.1.1.1
+\fi
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi
+%
+\ifnum\temp=6%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+\StrChar{#1}{5}[\cinqueq]%
+\StrChar{#1}{6}[\seiq]%
+% if A.1
+\ifx\dueq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\dueq.
+\unoq\dueq\treq\quattroq\cinqueq\seiq%
+% else A.1.1
+\else
+% if A.1.1.1
+\ifx\treq\undefined
+indefinito
+% else A.1.1.1
+\else
+% if A.1.1.1.1
+\if\treq.
+% 12.3 -> 1.23(10)
+\ispmpl{\unoq}.{\dueq}{\quattroq}\ispmpr\ispmtenf%
+% else A.1.1.1.1
+\else
+% if A.1.1.1.1.1
+\ifx\quattroq\undefined
+indefinito
+% else A.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1
+\if\quattroq.
+%123.4 -> 1.234(10)^2
+\ispmpl{\unoq}.{\dueq}{\treq}{\cinqueq}\ispmpr\ispmtenf$^2$%
+% else A.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1
+\ifx\cinqueq\undefined
+indefinito
+% else A.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1
+\if\cinqueq.
+%1234.5 -> 1.2345(10)^3
+\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\seiq}\ispmpr\ispmtenf$^3$%
+% else A.1.1.1.1.1.1.1.1
+\else
+\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\cinqueq}{\seiq}\ispmpr\ispmtenf$^5$%
+% fi A.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1
+\fi
+% fi A.1.1.1.1
+\fi
+% fi A.1.1.1
+\fi
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi%
+%
+%
+% if A
+\ifnum\temp=7%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+\StrChar{#1}{5}[\cinqueq]%
+\StrChar{#1}{6}[\seiq]%
+\StrChar{#1}{7}[\setteq]%
+% if A.1
+\ifx\dueq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\dueq.
+\unoq\dueq\treq\quattroq\cinqueq\seiq\setteq%
+% else A.1.1
+\else
+% if A.1.1.1
+\ifx\treq\undefined
+indefinito
+% else A.1.1.1
+\else
+% if A.1.1.1.1
+\if\treq.
+% 12.3 -> 1.23(10)
+\ispmpl{\unoq}.{\dueq}{\quattroq}\ispmpr\ispmtenf%
+% else A.1.1.1.1
+\else
+% if A.1.1.1.1.1
+\ifx\quattroq\undefined
+indefinito
+% else A.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1
+\if\quattroq.
+%123.4 -> 1.234(10)^2
+\ispmpl{\unoq}.{\dueq}{\treq}{\cinqueq}\ispmpr\ispmtenf$^2$%
+% else A.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1
+\ifx\cinqueq\undefined
+indefinito
+% else A.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1
+\if\cinqueq.
+%1234.5 -> 1.2345(10)^3
+\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\seiq}\ispmpr\ispmtenf$^3$%
+% else A.1.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1.1
+\if\seiq.
+%12345.6 -> 1.23456(10)^4
+\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\cinqueq}{\setteq}\ispmpr\ispmtenf$^4$%
+% else A.1.1.1.1.1.1.1.1.1
+\else
+\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\cinqueq}{\seiq}{\setteq}\ispmpr\ispmtenf$^6$%
+% fi A.1.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1
+\fi
+% fi A.1.1.1.1
+\fi
+% fi A.1.1.1
+\fi
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
\fi%
+%
+%
+% if A
+\ifnum\temp=8%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+\StrChar{#1}{5}[\cinqueq]%
+\StrChar{#1}{6}[\seiq]%
+\StrChar{#1}{7}[\setteq]%
+\StrChar{#1}{8}[\ottoq]%
+% if A.1
+\ifx\dueq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\dueq.
+\unoq\dueq\treq\quattroq\cinqueq\seiq\setteq\ottoq%
+% else A.1.1
+\else
+% if A.1.1.1
+\ifx\treq\undefined
+indefinito
+% else A.1.1.1
+\else
+% if A.1.1.1.1
+\if\treq.
+% 12.3 -> 1.23(10)
+\ispmpl{\unoq}.{\dueq}{\quattroq}\ispmpr\ispmtenf%
+% else A.1.1.1.1
+\else
+% if A.1.1.1.1.1
+\ifx\quattroq\undefined
+indefinito
+% else A.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1
+\if\quattroq.
+\ispmpl{\unoq}.{\dueq}{\treq}{\cinqueq}\ispmpr\ispmtenf$^2$%
+% else A.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1
+\ifx\cinqueq\undefined
+indefinito
+% else A.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1
+\if\cinqueq.
+\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\seiq}\ispmpr\ispmtenf$^3$%
+% else A.1.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1.1
+\if\seiq.
+%12345.6 -> 1.23456(10)^4
+\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\cinqueq}{\setteq}\ispmpr\ispmtenf$^4$%
+% else A.1.1.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1.1.1
+\if\setteq.
+\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\cinqueq}{\seiq}{\ottoq}\ispmpr\ispmtenf$^5$%
+% else A.1.1.1.1.1.1.1.1.1.1
+\else
+\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\cinqueq}{\seiq}{\setteq}{\ottoq}\ispmpr\ispmtenf$^7$%
+% fi A.1.1.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1
+\fi
+% fi A.1.1.1.1
+\fi
+% fi A.1.1.1
+\fi
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi%
+%
+%
+% if A
+\ifnum\temp=9%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+\StrChar{#1}{5}[\cinqueq]%
+\StrChar{#1}{6}[\seiq]%
+\StrChar{#1}{7}[\setteq]%
+\StrChar{#1}{8}[\ottoq]%
+\StrChar{#1}{9}[\noveq]%
+% if A.1
+\ifx\dueq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\dueq.
+\unoq\dueq\treq\quattroq\cinqueq\seiq\setteq\ottoq\noveq%
+% else A.1.1
+\else
+% if A.1.1.1
+\ifx\treq\undefined
+indefinito
+% else A.1.1.1
+\else
+% if A.1.1.1.1
+\if\treq.
+% 12.3 -> 1.23(10)
+\ispmpl{\unoq}.{\dueq}{\quattroq}\ispmpr\ispmtenf%
+% else A.1.1.1.1
+\else
+% if A.1.1.1.1.1
+\ifx\quattroq\undefined
+indefinito
+% else A.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1
+\if\quattroq.
+%123.4 -> 1.234(10)^2
+\ispmpl{\unoq}.{\dueq}{\treq}{\cinqueq}\ispmpr\ispmtenf$^2$%
+% else A.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1
+\ifx\cinqueq\undefined
+indefinito
+% else A.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1
+\if\cinqueq.
+%1234.5 -> 1.2345(10)^3
+\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\seiq}\ispmpr\ispmtenf$^3$%
+% else A.1.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1.1
+\if\seiq.
+%12345.6 -> 1.23456(10)^4
+\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\cinqueq}{\setteq}\ispmpr\ispmtenf$^4$%
+% else A.1.1.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1.1.1
+\if\setteq.
+%123456.7 -> 1.234567(10)^5
+\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\cinqueq}{\seiq}{\ottoq}\ispmpr\ispmtenf$^5$%
+% else A.1.1.1.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1.1.1.1
+\if\ottoq.
+%1234567.8 -> 1.2345678(10)^6
+\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\cinqueq}{\seiq}{\setteq}{\noveq}\ispmpr\ispmtenf$^6$%
+% else A.1.1.1.1.1.1.1.1.1.1.1
+\else
+\ispmpl{\unoq}.{\dueq}{\treq}{\quattroq}{\cinqueq}{\seiq}{\setteq}{\ottoq}{\noveq}\ispmpr\ispmtenf$^8$%
+% fi A.1.1.1.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1
+\fi
+% fi A.1.1.1.1
+\fi
+% fi A.1.1.1
+\fi
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi%
+%
+}
+%
+%
+%
+%% Esponenti positivi Reali con la prima cifra "leading", quelle a dx invece troncate
+\newcommand{\ispmdexppt}[1]{%
+%
+%% Two digits, two arguments
+\StrLen{#1}[\temp]%
+\ifnum\temp=2%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\ispmpl{\unoq}\ispmpr\ispmtenf%
+\fi%
+%
+% Three arguments
+\ifnum\temp=3%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+% if A.1
+\ifx\dueq\undefined
+indefinito
+% else A.1
+\else
+% Two digits, three arguments \\
+% if A.1.1
+\if\dueq.
+\unoq%
+% else A.1.1
+\else
+% Three digits, three arguments \\
+\ispmpl{\unoq}\ispmpr\ispmtenf$^2$%
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi%
+%
+%
+% if A
+\ifnum\temp=4%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+% if A.1
+\ifx\dueq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\dueq.
+\unoq%
+% else A.1.1
+\else
+% if A.1.1.1
+\ifx\treq\undefined
+indefinito
+% else A.1.1.1
+\else
+% if A.1.1.1.1
+\if\treq.
+\ispmpl{\unoq}\ispmpr\ispmtenf%
+% else A.1.1.1.1
+\else
+\ispmpl{\unoq}\ispmpr\ispmtenf$^3$%
+% fi A.1.1.1.1
+\fi
+% fi A.1.1.1
+\fi
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi%
+%
+% if A
+\ifnum\temp=5%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+\StrChar{#1}{5}[\cinqueq]%
+% if A.1
+\ifx\dueq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\dueq.
+\unoq%
+% else A.1.1
+\else
+% if A.1.1.1
+\ifx\treq\undefined
+indefinito
+% else A.1.1.1
+\else
+% if A.1.1.1.1
+\if\treq.
+\ispmpl{\unoq}\ispmpr\ispmtenf%
+% else A.1.1.1.1
+\else
+% if A.1.1.1.1.1
+\ifx\quattroq\undefined
+indefinito
+% else A.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1
+\if\quattroq.
+\ispmpl{\unoq}\ispmpr\ispmtenf$^2$%
+% else A.1.1.1.1.1.1
+\else
+\ispmpl{\unoq}\ispmpr\ispmtenf$^4$%
+% fi A.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1
+\fi
+% fi A.1.1.1.1
+\fi
+% fi A.1.1.1
+\fi
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi
+%
\ifnum\temp=6%
\StrChar{#1}{1}[\unoq]%
\StrChar{#1}{2}[\dueq]%
@@ -124,8 +823,68 @@
\StrChar{#1}{4}[\quattroq]%
\StrChar{#1}{5}[\cinqueq]%
\StrChar{#1}{6}[\seiq]%
-\unoq\dueq\treq,\quattroq\cinqueq\seiq%
+% if A.1
+\ifx\dueq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\dueq.
+\unoq%
+% else A.1.1
+\else
+% if A.1.1.1
+\ifx\treq\undefined
+indefinito
+% else A.1.1.1
+\else
+% if A.1.1.1.1
+\if\treq.
+\ispmpl{\unoq}\ispmpr\ispmtenf%
+% else A.1.1.1.1
+\else
+% if A.1.1.1.1.1
+\ifx\quattroq\undefined
+indefinito
+% else A.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1
+\if\quattroq.
+\ispmpl{\unoq}\ispmpr\ispmtenf$^2$%
+% else A.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1
+\ifx\cinqueq\undefined
+indefinito
+% else A.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1
+\if\cinqueq.
+\ispmpl{\unoq}\ispmpr\ispmtenf$^3$%
+% else A.1.1.1.1.1.1.1.1
+\else
+\ispmpl{\unoq}\ispmpr\ispmtenf$^5$%
+% fi A.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1
+\fi
+% fi A.1.1.1.1
+\fi
+% fi A.1.1.1
+\fi
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
\fi%
+%
+%
+% if A
\ifnum\temp=7%
\StrChar{#1}{1}[\unoq]%
\StrChar{#1}{2}[\dueq]%
@@ -134,8 +893,75 @@
\StrChar{#1}{5}[\cinqueq]%
\StrChar{#1}{6}[\seiq]%
\StrChar{#1}{7}[\setteq]%
-\unoq,\dueq\treq\quattroq,\cinqueq\seiq\setteq%
+% if A.1
+\ifx\dueq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\dueq.
+\unoq%
+% else A.1.1
+\else
+% if A.1.1.1
+\ifx\treq\undefined
+indefinito
+% else A.1.1.1
+\else
+% if A.1.1.1.1
+\if\treq.
+\ispmpl{\unoq}\ispmpr\ispmtenf%
+% else A.1.1.1.1
+\else
+% if A.1.1.1.1.1
+\ifx\quattroq\undefined
+indefinito
+% else A.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1
+\if\quattroq.
+\ispmpl{\unoq}\ispmpr\ispmtenf$^2$%
+% else A.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1
+\ifx\cinqueq\undefined
+indefinito
+% else A.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1
+\if\cinqueq.
+\ispmpl{\unoq}\ispmpr\ispmtenf$^3$%
+% else A.1.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1.1
+\if\seiq.
+\ispmpl{\unoq}\ispmpr\ispmtenf$^4$%
+% else A.1.1.1.1.1.1.1.1.1
+\else
+\ispmpl{\unoq}\ispmpr\ispmtenf$^6$%
+% fi A.1.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1
+\fi
+% fi A.1.1.1.1
+\fi
+% fi A.1.1.1
+\fi
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
\fi%
+%
+%
+% if A
\ifnum\temp=8%
\StrChar{#1}{1}[\unoq]%
\StrChar{#1}{2}[\dueq]%
@@ -145,8 +971,82 @@
\StrChar{#1}{6}[\seiq]%
\StrChar{#1}{7}[\setteq]%
\StrChar{#1}{8}[\ottoq]%
-\unoq\dueq,\treq\quattroq\cinqueq,\seiq\setteq\ottoq%
+% if A.1
+\ifx\dueq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\dueq.
+\unoq%
+% else A.1.1
+\else
+% if A.1.1.1
+\ifx\treq\undefined
+indefinito
+% else A.1.1.1
+\else
+% if A.1.1.1.1
+\if\treq.
+\ispmpl{\unoq}\ispmpr\ispmtenf%
+% else A.1.1.1.1
+\else
+% if A.1.1.1.1.1
+\ifx\quattroq\undefined
+indefinito
+% else A.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1
+\if\quattroq.
+\ispmpl{\unoq}\ispmpr\ispmtenf$^2$%
+% else A.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1
+\ifx\cinqueq\undefined
+indefinito
+% else A.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1
+\if\cinqueq.
+\ispmpl{\unoq}\ispmpr\ispmtenf$^3$%
+% else A.1.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1.1
+\if\seiq.
+\ispmpl{\unoq}\ispmpr\ispmtenf$^4$%
+% else A.1.1.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1.1.1
+\if\setteq.
+\ispmpl{\unoq}\ispmpr\ispmtenf$^5$%
+% else A.1.1.1.1.1.1.1.1.1.1
+\else
+\ispmpl{\unoq}\ispmpr\ispmtenf$^7$%
+% fi A.1.1.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1
+\fi
+% fi A.1.1.1.1
+\fi
+% fi A.1.1.1
+\fi
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
\fi%
+%
+%
+% if A
\ifnum\temp=9%
\StrChar{#1}{1}[\unoq]%
\StrChar{#1}{2}[\dueq]%
@@ -157,42 +1057,709 @@
\StrChar{#1}{7}[\setteq]%
\StrChar{#1}{8}[\ottoq]%
\StrChar{#1}{9}[\noveq]%
-\unoq\dueq\treq,\quattroq\cinqueq\seiq,\setteq\ottoq\noveq%
+% if A.1
+\ifx\dueq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\dueq.
+\unoq%
+% else A.1.1
+\else
+% if A.1.1.1
+\ifx\treq\undefined
+indefinito
+% else A.1.1.1
+\else
+% if A.1.1.1.1
+\if\treq.
+\ispmpl{\unoq}\ispmpr\ispmtenf%
+% else A.1.1.1.1
+\else
+% if A.1.1.1.1.1
+\ifx\quattroq\undefined
+indefinito
+% else A.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1
+\if\quattroq.
+\ispmpl{\unoq}\ispmpr\ispmtenf$^2$%
+% else A.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1
+\ifx\cinqueq\undefined
+indefinito
+% else A.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1
+\if\cinqueq.
+\ispmpl{\unoq}\ispmpr\ispmtenf$^3$%
+% else A.1.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1.1
+\if\seiq.
+\ispmpl{\unoq}\ispmpr\ispmtenf$^4$%
+% else A.1.1.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1.1.1
+\if\setteq.
+\ispmpl{\unoq}\ispmpr\ispmtenf$^5$%
+% else A.1.1.1.1.1.1.1.1.1.1
+\else
+% if A.1.1.1.1.1.1.1.1.1.1.1
+\if\ottoq.
+\ispmpl{\unoq}\ispmpr\ispmtenf$^6$%
+% else A.1.1.1.1.1.1.1.1.1.1.1
+\else
+\ispmpl{\unoq}\ispmpr\ispmtenf$^8$%
+% fi A.1.1.1.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1.1
+\fi
+% fi A.1.1.1.1.1
+\fi
+% fi A.1.1.1.1
+\fi
+% fi A.1.1.1
+\fi
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi%
+%
+}
+
+%% Esponenti positivi con la prima cifra "leading", cifre troncate a dx
+% Commentato perché limitante, quello per i numeri reali invece è completo (universale).
+%\newcommand{\ispmdexppt}[1]{%
+%\StrLen{#1}[\temp]%
+%\ifnum\temp=2%
+%\StrChar{#1}{1}[\unoq]%
+%\StrChar{#1}{2}[\dueq]%
+%\ispmpl{\unoq}\ispmpr\ispmtenf%
+%\fi%
+%\ifnum\temp=3%
+%\StrChar{#1}{1}[\unoq]%
+%\StrChar{#1}{2}[\dueq]%
+%\StrChar{#1}{3}[\treq]%
+%\ispmpl{\unoq}\ispmpr\ispmtenf$^2$%
+%\fi%
+%\ifnum\temp=4%
+%\StrChar{#1}{1}[\unoq]%
+%\StrChar{#1}{2}[\dueq]%
+%\StrChar{#1}{3}[\treq]%
+%\StrChar{#1}{4}[\quattroq]%
+%\ispmpl{\unoq}\ispmpr\ispmtenf$^3$%
+%\fi%
+%\ifnum\temp=5%
+%\StrChar{#1}{1}[\unoq]%
+%\StrChar{#1}{2}[\dueq]%
+%\StrChar{#1}{3}[\treq]%
+%\StrChar{#1}{4}[\quattroq]%
+%\StrChar{#1}{5}[\cinqueq]%
+%\ispmpl{\unoq}\ispmpr\ispmtenf$^4$%
+%\fi%
+%\ifnum\temp=6%
+%\StrChar{#1}{1}[\unoq]%
+%\StrChar{#1}{2}[\dueq]%
+%\StrChar{#1}{3}[\treq]%
+%\StrChar{#1}{4}[\quattroq]%
+%\StrChar{#1}{5}[\cinqueq]%
+%\StrChar{#1}{6}[\seiq]%
+%\ispmpl{\unoq}\ispmpr\ispmtenf$^5$%
+%\fi%
+%\ifnum\temp=7%
+%\StrChar{#1}{1}[\unoq]%
+%\StrChar{#1}{2}[\dueq]%
+%\StrChar{#1}{3}[\treq]%
+%\StrChar{#1}{4}[\quattroq]%
+%\StrChar{#1}{5}[\cinqueq]%
+%\StrChar{#1}{6}[\seiq]%
+%\StrChar{#1}{7}[\setteq]%
+%\ispmpl{\unoq}\ispmpr\ispmtenf$^6$%
+%\fi%
+%\ifnum\temp=8%
+%\StrChar{#1}{1}[\unoq]%
+%\StrChar{#1}{2}[\dueq]%
+%\StrChar{#1}{3}[\treq]%
+%\StrChar{#1}{4}[\quattroq]%
+%\StrChar{#1}{5}[\cinqueq]%
+%\StrChar{#1}{6}[\seiq]%
+%\StrChar{#1}{7}[\setteq]%
+%\StrChar{#1}{8}[\ottoq]%
+%\ispmpl{\unoq}\ispmpr\ispmtenf$^7$%
+%\fi%
+%\ifnum\temp=9%
+%\StrChar{#1}{1}[\unoq]%
+%\StrChar{#1}{2}[\dueq]%
+%\StrChar{#1}{3}[\treq]%
+%\StrChar{#1}{4}[\quattroq]%
+%\StrChar{#1}{5}[\cinqueq]%
+%\StrChar{#1}{6}[\seiq]%
+%\StrChar{#1}{7}[\setteq]%
+%\StrChar{#1}{8}[\ottoq]%
+%\StrChar{#1}{9}[\noveq]%
+%\ispmpl{\unoq}\ispmpr\ispmtenf$^8$%
+%\fi%
+%}
+
+%% Esponenti negativi di numeri razionali (che si risolvono in numeri non interi)
+% senza cifre troncate a dx del punto
+\newcommand{\ispmdexpm}[1]{%
+\StrLen{#1}[\temp]%
+%% Inizio con 3 perché il punto è considerato argomento,
+% quindi e.g. 0.1 ha tre argomenti.
+\ifnum\temp=3%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\ispmpl{\treq}\ispmpr\ispmtenf$^{-1}$%
\fi%
+\ifnum\temp=4%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+\ifx\treq\undefined
+indefinito
+\else
+ \if\treq0
+\ispmpl{\quattroq}\ispmpr\ispmtenf$^{-2}$%
+ \else
+\ispmpl{\treq.\quattroq}\ispmpr\ispmtenf$^{-1}$%
+ \fi
+\fi
+\fi%
+% if A
+\ifnum\temp=5%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+\StrChar{#1}{5}[\cinqueq]%
+% if A.1
+\ifx\treq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\treq0
+% if A.1.1.1
+\if\quattroq0
+\ispmpl{\cinqueq}\ispmpr\ispmtenf$^{-3}$%
+% else A.1.1.1
+\else
+\ispmpl{\quattroq.\cinqueq}\ispmpr\ispmtenf$^{-2}$%
+% fi A.1.1.1
+\fi
+% else A.1.1
+\else
+\ispmpl{\treq.\quattroq\cinqueq}\ispmpr\ispmtenf$^{-1}$%
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi
+%
+%
+% if A
+\ifnum\temp=6%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+\StrChar{#1}{5}[\cinqueq]%
+\StrChar{#1}{6}[\seiq]%
+% if A.1
+\ifx\treq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\treq0
+% if A.1.1.1
+\if\quattroq0
+% if A.1.1.1.1
+\if\cinqueq0
+\ispmpl{\seiq}\ispmpr\ispmtenf$^{-4}$%
+% else A.1.1.1.1
+\else
+\ispmpl{\cinqueq.\seiq}\ispmpr\ispmtenf$^{-3}$%
+% fi A.1.1.1.1
+\fi
+% else A.1.1.1
+\else
+\ispmpl{\quattroq.\cinqueq\seiq}\ispmpr\ispmtenf$^{-2}$%
+% fi A.1.1.1
+\fi
+% else A.1.1
+\else
+\ispmpl{\treq.\quattroq\cinqueq\seiq}\ispmpr\ispmtenf$^{-1}$%
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi
+%
+%
+% if A
+\ifnum\temp=7%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+\StrChar{#1}{5}[\cinqueq]%
+\StrChar{#1}{6}[\seiq]%
+\StrChar{#1}{7}[\setteq]%
+% if A.1
+\ifx\treq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\treq0
+% if A.1.1.1
+\if\quattroq0
+% if A.1.1.1.1
+\if\cinqueq0
+% if A.1.1.1.1.1
+\if\seiq0
+\ispmpl{\setteq}\ispmpr\ispmtenf$^{-5}$%
+% else A.1.1.1.1.1
+\else
+\ispmpl{\seiq.\setteq}\ispmpr\ispmtenf$^{-4}$%
+% fi A.1.1.1.1.1
+\fi
+% else A.1.1.1.1
+\else
+\ispmpl{\cinqueq.\seiq\setteq}\ispmpr\ispmtenf$^{-3}$%
+% fi A.1.1.1.1
+\fi
+% else A.1.1.1
+\else
+\ispmpl{\quattroq.\cinqueq\seiq\setteq}\ispmpr\ispmtenf$^{-2}$%
+% fi A.1.1.1
+\fi
+% else A.1.1
+\else
+\ispmpl{\treq.\quattroq\cinqueq\seiq\setteq}\ispmpr\ispmtenf$^{-1}$%
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi
+%
+%
+% if A
+\ifnum\temp=8%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+\StrChar{#1}{5}[\cinqueq]%
+\StrChar{#1}{6}[\seiq]%
+\StrChar{#1}{7}[\setteq]%
+\StrChar{#1}{8}[\ottoq]%
+% if A.1
+\ifx\treq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\treq0
+% if A.1.1.1
+\if\quattroq0
+% if A.1.1.1.1
+\if\cinqueq0
+% if A.1.1.1.1.1
+\if\seiq0
+% if A.1.1.1.1.1.1
+\if\setteq0
+\ispmpl{\ottoq}\ispmpr\ispmtenf$^{-6}$%
+% else A.1.1.1.1.1.1
+\else
+\ispmpl{\setteq.\ottoq}\ispmpr\ispmtenf$^{-5}$%
+% fi A.1.1.1.1.1.1
+\fi
+% else A.1.1.1.1.1
+\else
+\ispmpl{\seiq.\setteq\ottoq}\ispmpr\ispmtenf$^{-4}$%
+% fi A.1.1.1.1.1
+\fi
+% else A.1.1.1.1
+\else
+\ispmpl{\cinqueq.\seiq\setteq\ottoq}\ispmpr\ispmtenf$^{-3}$%
+% fi A.1.1.1.1
+\fi
+% else A.1.1.1
+\else
+\ispmpl{\quattroq.\cinqueq\seiq\setteq\ottoq}\ispmpr\ispmtenf$^{-2}$%
+% fi A.1.1.1
+\fi
+% else A.1.1
+\else
+\ispmpl{\treq.\quattroq\cinqueq\seiq\setteq\ottoq}\ispmpr\ispmtenf$^{-1}$%
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi
+%
+%
+% if A
+\ifnum\temp=9%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+\StrChar{#1}{5}[\cinqueq]%
+\StrChar{#1}{6}[\seiq]%
+\StrChar{#1}{7}[\setteq]%
+\StrChar{#1}{8}[\ottoq]%
+\StrChar{#1}{9}[\noveq]%
+% if A.1
+\ifx\treq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\treq0
+% if A.1.1.1
+\if\quattroq0
+% if A.1.1.1.1
+\if\cinqueq0
+% if A.1.1.1.1.1
+\if\seiq0
+% if A.1.1.1.1.1.1
+\if\setteq0
+% if A.1.1.1.1.1.1.1
+\if\ottoq0
+\ispmpl{\noveq}\ispmpr\ispmtenf$^{-7}$%
+% else A.1.1.1.1.1.1.1
+\else
+\ispmpl{\ottoq.\noveq}\ispmpr\ispmtenf$^{-6}$%
+% if A.1.1.1.1.1.1.1
+\fi
+% else A.1.1.1.1.1.1
+\else
+\ispmpl{\setteq.\ottoq\noveq}\ispmpr\ispmtenf$^{-5}$%
+% fi A.1.1.1.1.1.1
+\fi
+% else A.1.1.1.1.1
+\else
+\ispmpl{\seiq.\setteq\ottoq\noveq}\ispmpr\ispmtenf$^{-4}$%
+% fi A.1.1.1.1.1
+\fi
+% else A.1.1.1.1
+\else
+\ispmpl{\cinqueq.\seiq\setteq\ottoq\noveq}\ispmpr\ispmtenf$^{-3}$%
+% fi A.1.1.1.1
+\fi
+% else A.1.1.1
+\else
+\ispmpl{\quattroq.\cinqueq\seiq\setteq\ottoq\noveq}\ispmpr\ispmtenf$^{-2}$%
+% fi A.1.1.1
+\fi
+% else A.1.1
+\else
+\ispmpl{\treq.\quattroq\cinqueq\seiq\setteq\ottoq\noveq}\ispmpr\ispmtenf$^{-1}$%
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi
+%
}
%
+% Esponenti negativi di numeri razionali (che si risolvono in numeri non interi), con cifre troncate a dx del punto
+\newcommand{\ispmdexpmt}[1]{%
+\StrLen{#1}[\temp]%
+%% Inizio con 3 perché il punto è considerato argomento,
+% quindi e.g. 0.1 ha tre argomenti.
+\ifnum\temp=3%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\ispmpl{\treq}\ispmpr\ispmtenf$^{-1}$%
+\fi%
+\ifnum\temp=4%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+\ifx\treq\undefined
+indefinito
+\else
+ \if\treq0
+\ispmpl{\quattroq}\ispmpr\ispmtenf$^{-2}$%
+ \else
+\ispmpl{\treq}\ispmpr\ispmtenf$^{-1}$%
+ \fi
+\fi
+\fi%
+% if A
+\ifnum\temp=5%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+\StrChar{#1}{5}[\cinqueq]%
+% if A.1
+\ifx\treq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\treq0
+% if A.1.1.1
+\if\quattroq0
+\ispmpl{\cinqueq}\ispmpr\ispmtenf$^{-3}$%
+% else A.1.1.1
+\else
+\ispmpl{\quattroq}\ispmpr\ispmtenf$^{-2}$%
+% fi A.1.1.1
+\fi
+% else A.1.1
+\else
+\ispmpl{\treq}\ispmpr\ispmtenf$^{-1}$%
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi
%
-% Formatting section:
-% a small space between value and measurement unit
-\newcommand{\ispms}{\,}
-% normal text rendering for first measurement unit
-\newcommand{\ispmntone}[1]{\textnormal{#1}}
-% jolly: the default setting consists in --- a $0.15\ispmone{mm}$ of space
-% and normal text rendering for a generic 'entity'.
-% If you are a developer, you can modify it when and how you want.
-\newcommand{\ispm}[1]{\hspace{0.15mm}\textnormal{#1}}
-% normal text rendering for first and second measurement units
-\newcommand{\ispmnttwo}[2]{\textnormal{#1}\textnormal{#2}}
-% space between first and second measurement units
-\newcommand{\ispmss}{\hspace{0.15mm}}
-% \ispm if you have only a measurement unit
-% e.g. $F = 20 \ispmone{N}$
-\newcommand{\ispmone}{\ispms\ispmntone}
-% \ispm if you have two measurement units
-% e.g. $L = 20 \ispmtwo{N}{m}$
-\newcommand{\ispmtwo}[2]{\ispms\ispmnttwo\ispmss{#1}\ispmnttwo\ispmss{#2}}
-% ispm if you have three measurement units
-% e.g. $V = 8 \ispmtwo{m}{m}\ispmthird{m}$
-\newcommand{\ispmthird}[1]{\ispmss\ispm{#1}}
-% and so on until ninth measurement unit
-\newcommand{\ispmfourth}[1]{\ispmss\ispm{#1}}
-\newcommand{\ispmfifth}[1]{\ispmss\ispm{#1}}
-\newcommand{\ispmsixth}[1]{\ispmss\ispm{#1}}
-\newcommand{\ispmseventh}[1]{\ispmss\ispm{#1}}
-\newcommand{\ispmeighth}[1]{\ispmss\ispm{#1}}
-\newcommand{\ispmninth}[1]{\ispmss\ispm{#1}}
-% If you don't want numerical order, you could use generic \ispmn command
-\newcommand{\ispmn}[1]{\ispmss\ispm{#1}}
+%
+% if A
+\ifnum\temp=6%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+\StrChar{#1}{5}[\cinqueq]%
+\StrChar{#1}{6}[\seiq]%
+% if A.1
+\ifx\treq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\treq0
+% if A.1.1.1
+\if\quattroq0
+% if A.1.1.1.1
+\if\cinqueq0
+\ispmpl{\seiq}\ispmpr\ispmtenf$^{-4}$%
+% else A.1.1.1.1
+\else
+\ispmpl{\cinqueq}\ispmpr\ispmtenf$^{-3}$%
+% fi A.1.1.1.1
+\fi
+% else A.1.1.1
+\else
+\ispmpl{\quattroq}\ispmpr\ispmtenf$^{-2}$%
+% fi A.1.1.1
+\fi
+% else A.1.1
+\else
+\ispmpl{\treq}\ispmpr\ispmtenf$^{-1}$%
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi
+%
+%
+% if A
+\ifnum\temp=7%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+\StrChar{#1}{5}[\cinqueq]%
+\StrChar{#1}{6}[\seiq]%
+\StrChar{#1}{7}[\setteq]%
+% if A.1
+\ifx\treq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\treq0
+% if A.1.1.1
+\if\quattroq0
+% if A.1.1.1.1
+\if\cinqueq0
+% if A.1.1.1.1.1
+\if\seiq0
+\ispmpl{\setteq}\ispmpr\ispmtenf$^{-5}$%
+% else A.1.1.1.1.1
+\else
+\ispmpl{\seiq}\ispmpr\ispmtenf$^{-4}$%
+% fi A.1.1.1.1.1
+\fi
+% else A.1.1.1.1
+\else
+\ispmpl{\cinqueq}\ispmpr\ispmtenf$^{-3}$%
+% fi A.1.1.1.1
+\fi
+% else A.1.1.1
+\else
+\ispmpl{\quattroq}\ispmpr\ispmtenf$^{-2}$%
+% fi A.1.1.1
+\fi
+% else A.1.1
+\else
+\ispmpl{\treq}\ispmpr\ispmtenf$^{-1}$%
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi
+%
+%
+% if A
+\ifnum\temp=8%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+\StrChar{#1}{5}[\cinqueq]%
+\StrChar{#1}{6}[\seiq]%
+\StrChar{#1}{7}[\setteq]%
+\StrChar{#1}{8}[\ottoq]%
+% if A.1
+\ifx\treq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\treq0
+% if A.1.1.1
+\if\quattroq0
+% if A.1.1.1.1
+\if\cinqueq0
+% if A.1.1.1.1.1
+\if\seiq0
+% if A.1.1.1.1.1.1
+\if\setteq0
+\ispmpl{\ottoq}\ispmpr\ispmtenf$^{-6}$%
+% else A.1.1.1.1.1.1
+\else
+\ispmpl{\setteq}\ispmpr\ispmtenf$^{-5}$%
+% fi A.1.1.1.1.1.1
+\fi
+% else A.1.1.1.1.1
+\else
+\ispmpl{\seiq}\ispmpr\ispmtenf$^{-4}$%
+% fi A.1.1.1.1.1
+\fi
+% else A.1.1.1.1
+\else
+\ispmpl{\cinqueq}\ispmpr\ispmtenf$^{-3}$%
+% fi A.1.1.1.1
+\fi
+% else A.1.1.1
+\else
+\ispmpl{\quattroq}\ispmpr\ispmtenf$^{-2}$%
+% fi A.1.1.1
+\fi
+% else A.1.1
+\else
+\ispmpl{\treq}\ispmpr\ispmtenf$^{-1}$%
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi
+%
+%
+% if A
+\ifnum\temp=9%
+\StrChar{#1}{1}[\unoq]%
+\StrChar{#1}{2}[\dueq]%
+\StrChar{#1}{3}[\treq]%
+\StrChar{#1}{4}[\quattroq]%
+\StrChar{#1}{5}[\cinqueq]%
+\StrChar{#1}{6}[\seiq]%
+\StrChar{#1}{7}[\setteq]%
+\StrChar{#1}{8}[\ottoq]%
+\StrChar{#1}{9}[\noveq]%
+% if A.1
+\ifx\treq\undefined
+indefinito
+% else A.1
+\else
+% if A.1.1
+\if\treq0
+% if A.1.1.1
+\if\quattroq0
+% if A.1.1.1.1
+\if\cinqueq0
+% if A.1.1.1.1.1
+\if\seiq0
+% if A.1.1.1.1.1.1
+\if\setteq0
+% if A.1.1.1.1.1.1.1
+\if\ottoq0
+\ispmpl{\noveq}\ispmpr\ispmtenf$^{-7}$%
+% else A.1.1.1.1.1.1.1
+\else
+\ispmpl{\ottoq}\ispmpr\ispmtenf$^{-6}$%
+% if A.1.1.1.1.1.1.1
+\fi
+% else A.1.1.1.1.1.1
+\else
+\ispmpl{\setteq}\ispmpr\ispmtenf$^{-5}$%
+% fi A.1.1.1.1.1.1
+\fi
+% else A.1.1.1.1.1
+\else
+\ispmpl{\seiq}\ispmpr\ispmtenf$^{-4}$%
+% fi A.1.1.1.1.1
+\fi
+% else A.1.1.1.1
+\else
+\ispmpl{\cinqueq}\ispmpr\ispmtenf$^{-3}$%
+% fi A.1.1.1.1
+\fi
+% else A.1.1.1
+\else
+\ispmpl{\quattroq}\ispmpr\ispmtenf$^{-2}$%
+% fi A.1.1.1
+\fi
+% else A.1.1
+\else
+\ispmpl{\treq}\ispmpr\ispmtenf$^{-1}$%
+% fi A.1.1
+\fi
+% fi A.1
+\fi
+% fi A
+\fi
+%
+}
+\ProcessOptions\relax
+%%\subsubsection{Rendering by negative exponents of number ten powers}
\endinput
%%
%% End of file `isphysicalmath.sty'.
diff --git a/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode-extralight.fontspec b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode-extralight.fontspec
new file mode 100644
index 00000000000..c75f36d79b8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode-extralight.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[jetbrainscode-extralight]
+ {Extension=.otf,
+ UprightFont=JetBrainsMono-ExtraLight,
+ ItalicFont=JetBrainsMono-ExtraLightItalic,
+ BoldFont=JetBrainsMono-Medium,
+ BoldItalicFont=JetBrainsMono-MediumItalic,
+ Contextuals=Alternate
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode-light.fontspec b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode-light.fontspec
new file mode 100644
index 00000000000..3eea8a87dcf
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode-light.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[jetbrainscode-light]
+ {Extension=.otf,
+ UprightFont=JetBrainsMono-Light,
+ ItalicFont=JetBrainsMono-LightItalic,
+ BoldFont=JetBrainsMono-SemiBold,
+ BoldItalicFont=JetBrainsMono-SemiBoldItalic,
+ Contextuals=Alternate
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode-medium.fontspec b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode-medium.fontspec
new file mode 100644
index 00000000000..2073accd6a2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode-medium.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[jetbrainscode-medium]
+ {Extension=.otf,
+ UprightFont=JetBrainsMono-Medium,
+ ItalicFont=JetBrainsMono-MediumItalic,
+ BoldFont=JetBrainsMono-ExtraBold,
+ BoldItalicFont=JetBrainsMono-ExtraBoldItalic,
+ Contextuals=Alternate
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode-thin.fontspec b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode-thin.fontspec
new file mode 100644
index 00000000000..7c7672da69d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode-thin.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[jetbrainscode-thin]
+ {Extension=.otf,
+ UprightFont=JetBrainsMono-Thin,
+ ItalicFont=JetBrainsMono-ThinItalic,
+ BoldFont=JetBrainsMono-Regular,
+ BoldItalicFont=JetBrainsMono-Italic,
+ Contextuals=Alternate
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode.fontspec b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode.fontspec
new file mode 100644
index 00000000000..19ce3c96535
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainscode.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[jetbrainscode]
+ {Extension=.otf,
+ UprightFont=JetBrainsMono-Regular,
+ ItalicFont=JetBrainsMono-Italic,
+ BoldFont=JetBrainsMono-Bold,
+ BoldItalicFont=JetBrainsMono-BoldItalic,
+ Contextuals=Alternate
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-extralight.fontspec b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-extralight.fontspec
new file mode 100644
index 00000000000..f8db94300ea
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-extralight.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[jetbrainsmono-extralight]
+ {Extension=.otf,
+ UprightFont=JetBrainsMono-ExtraLight,
+ ItalicFont=JetBrainsMono-ExtraLightItalic,
+ BoldFont=JetBrainsMono-Medium,
+ BoldItalicFont=JetBrainsMono-MediumItalic,
+ Contextuals=AlternateOff
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-light.fontspec b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-light.fontspec
new file mode 100644
index 00000000000..06e231035fb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-light.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[jetbrainsmono-light]
+ {Extension=.otf,
+ UprightFont=JetBrainsMono-Light,
+ ItalicFont=JetBrainsMono-LightItalic,
+ BoldFont=JetBrainsMono-SemiBold,
+ BoldItalicFont=JetBrainsMono-SemiBoldItalic,
+ Contextuals=AlternateOff
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-medium.fontspec b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-medium.fontspec
new file mode 100644
index 00000000000..5e020f661b4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-medium.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[jetbrainsmono-medium]
+ {Extension=.otf,
+ UprightFont=JetBrainsMono-Medium,
+ ItalicFont=JetBrainsMono-MediumItalic,
+ BoldFont=JetBrainsMono-ExtraBold,
+ BoldItalicFont=JetBrainsMono-ExtraBoldItalic,
+ Contextuals=AlternateOff
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-otf.sty b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-otf.sty
new file mode 100644
index 00000000000..17dc7f39e6c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-otf.sty
@@ -0,0 +1,33 @@
+% jetbrainsmono-otf.sty
+% C. Pierquet 2025
+% JetBrains Mono typeface is available under the SIL Open Font License 1.1 license
+%
+% This file is distributed under the terms of the LaTeX Project Public
+% License from CTAN archives in directory macros/latex/base/lppl.txt.
+% Either version 1.3 or, at your option, any later version.
+
+\ProvidesPackage{jetbrainsmono-otf}[2025/01/10 v0.1 Supports JetBrainsMono fonts for lualatex and xelatex.]
+
+\RequirePackage{xkeyval}
+
+\newcommand*{\JetBrainsMono@scale}{MatchLowercase}
+\DeclareOptionX{scale}{\renewcommand*{\JetBrainsMono@scale}{#1}}
+\ProcessOptionsX\relax
+
+\RequirePackage{fontspec}
+\defaultfontfeatures{
+ HyphenChar=None,
+ Scale =\JetBrainsMono@scale}
+\newfontfamily\jetbrainsmono{jetbrainsmono}
+\newfontfamily\jetbrainsmonoextralight{jetbrainsmono-extralight}
+\newfontfamily\jetbrainsmonolight{jetbrainsmono-light}
+\newfontfamily\jetbrainsmonomedium{jetbrainsmono-medium}
+\newfontfamily\jetbrainsmonothin{jetbrainsmono-thin}
+\newfontfamily\jetbrainscode{jetbrainscode}
+\newfontfamily\jetbrainscodeextralight{jetbrainscode-extralight}
+\newfontfamily\jetbrainscodelight{jetbrainscode-light}
+\newfontfamily\jetbrainscodemedium{jetbrainscode-medium}
+\newfontfamily\jetbrainscodethin{jetbrainscode-thin}
+\defaultfontfeatures{}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-thin.fontspec b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-thin.fontspec
new file mode 100644
index 00000000000..d79ba8c9e20
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono-thin.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[jetbrainsmono-thin]
+ {Extension=.otf,
+ UprightFont=JetBrainsMono-Thin,
+ ItalicFont=JetBrainsMono-ThinItalic,
+ BoldFont=JetBrainsMono-Regular,
+ BoldItalicFont=JetBrainsMono-Italic,
+ Contextuals=AlternateOff
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono.fontspec b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono.fontspec
new file mode 100644
index 00000000000..51e0f01ff4d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/jetbrainsmono-otf/jetbrainsmono.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[jetbrainsmono]
+ {Extension=.otf,
+ UprightFont=JetBrainsMono-Regular,
+ ItalicFont=JetBrainsMono-Italic,
+ BoldFont=JetBrainsMono-Bold,
+ BoldItalicFont=JetBrainsMono-BoldItalic,
+ Contextuals=AlternateOff
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/jlreq/jlreq.cls b/Master/texmf-dist/tex/latex/jlreq/jlreq.cls
index 8f14372b389..efde6158b8c 100644
--- a/Master/texmf-dist/tex/latex/jlreq/jlreq.cls
+++ b/Master/texmf-dist/tex/latex/jlreq/jlreq.cls
@@ -5,7 +5,7 @@
%%
% (based on JLReq 20200811 https://www.w3.org/TR/2020/NOTE-jlreq-20200811/)
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{jlreq}[2024/08/23 jlreq]
+\ProvidesClass{jlreq}[2024/10/04 jlreq]
\RequirePackage{etoolbox}
\RequirePackage{jlreq-helpers}[2024/02/13]
diff --git a/Master/texmf-dist/tex/latex/jpneduenumerate/jpneduenumerate.sty b/Master/texmf-dist/tex/latex/jpneduenumerate/jpneduenumerate.sty
index 9208b099611..b46a4226c37 100644
--- a/Master/texmf-dist/tex/latex/jpneduenumerate/jpneduenumerate.sty
+++ b/Master/texmf-dist/tex/latex/jpneduenumerate/jpneduenumerate.sty
@@ -2,16 +2,16 @@
%% jpneduenumerate.sty
%% for making handouts of Japanese high school mathematics
%%
-%% Copyright (C) 2022 Yukoh KUSAKABE (screen-name)
+%% Copyright (C) 2022--2024 Yukoh KUSAKABE (screen-name)
%% https://www.metaphysica.info/
-%% https://twitter.com/metaphysicainfo
+%% https://x.com/metaphysicainfo
%%
%% This package released under
%% [the MIT license](https://ctan.org/license/mit).
%%
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{jpneduenumerate}[2022/07/15 v1.2]
+\ProvidesPackage{jpneduenumerate}[2024/11/19 v1.3]
%
%% [lua]
\newif\if@jpnedu@enumerate@lua
@@ -72,13 +72,17 @@
\newenvironment{romanenumerate}%
{\begin{enumerate}[nosep,leftmargin=2\zw,itemindent=1\zw,labelsep=1.15\zw,listparindent=1\zw]%
\renewcommand{\labelenumi}{(\ajLabel\ajroman{enumi})}%
-\renewcommand{\labelenumii}{(\alph{enumii})}%
+\renewcommand{\labelenumii}{(\ajLabel\ajroman{enumii})}%
+\renewcommand{\labelenumiii}{(\ajLabel\ajroman{enumiii})}%
+%\renewcommand{\labelenumii}{(\alph{enumii})}%
}%
{\end{enumerate}}
\newenvironment{romanenumerate*}%
{\begin{enumerate}[nosep,leftmargin=3\zw,itemindent=0\zw,labelsep=1.15\zw]%
\renewcommand{\labelenumi}{(\ajLabel\ajroman{enumi})}%
-\renewcommand{\labelenumii}{(\alph{enumii})}%
+\renewcommand{\labelenumii}{(\ajLabel\ajroman{enumii})}%
+\renewcommand{\labelenumiii}{(\ajLabel\ajroman{enumiii})}%
+%\renewcommand{\labelenumii}{(\alph{enumii})}%
}%
{\end{enumerate}}
%
@@ -87,13 +91,17 @@
\newenvironment{Romanenumerate}%
{\begin{enumerate}[nosep,leftmargin=2\zw,itemindent=1\zw,labelsep=1.15\zw,listparindent=1\zw]%
\renewcommand{\labelenumi}{(\ajLabel\ajRoman{enumi})}%
-\renewcommand{\labelenumii}{(\alph{enumii})}%
+\renewcommand{\labelenumii}{(\ajLabel\ajRoman{enumii})}%
+\renewcommand{\labelenumiii}{(\ajLabel\ajRoman{enumiii})}%
+%\renewcommand{\labelenumii}{(\alph{enumii})}%
}%
{\end{enumerate}}
\newenvironment{Romanenumerate*}%
{\begin{enumerate}[nosep,leftmargin=3\zw,itemindent=0\zw,labelsep=1.15\zw]%
\renewcommand{\labelenumi}{(\ajLabel\ajRoman{enumi})}%
-\renewcommand{\labelenumii}{(\alph{enumii})}%
+\renewcommand{\labelenumii}{(\ajLabel\ajRoman{enumii})}%
+\renewcommand{\labelenumiii}{(\ajLabel\ajRoman{enumiii})}%
+%\renewcommand{\labelenumii}{(\alph{enumii})}%
}%
{\end{enumerate}}
%
@@ -160,13 +168,17 @@
\newenvironment{romanenumerate}%
{\begin{enumerate}[nosep,leftmargin=2zw,itemindent=1zw,labelsep=1.15zw,listparindent=1zw]%
\renewcommand{\labelenumi}{(\ajLabel\ajroman{enumi})}%
-\renewcommand{\labelenumii}{(\alph{enumii})}%
+\renewcommand{\labelenumii}{(\ajLabel\ajroman{enumii})}%
+\renewcommand{\labelenumiii}{(\ajLabel\ajroman{enumiii})}%
+%\renewcommand{\labelenumii}{(\alph{enumii})}%
}%
{\end{enumerate}}
\newenvironment{romanenumerate*}%
{\begin{enumerate}[nosep,leftmargin=3zw,itemindent=0zw,labelsep=1.15zw]%
\renewcommand{\labelenumi}{(\ajLabel\ajroman{enumi})}%
-\renewcommand{\labelenumii}{(\alph{enumii})}%
+\renewcommand{\labelenumii}{(\ajLabel\ajroman{enumii})}%
+\renewcommand{\labelenumiii}{(\ajLabel\ajroman{enumiii})}%
+%\renewcommand{\labelenumii}{(\alph{enumii})}%
}%
{\end{enumerate}}
%
@@ -175,13 +187,17 @@
\newenvironment{Romanenumerate}%
{\begin{enumerate}[nosep,leftmargin=2zw,itemindent=1zw,labelsep=1.15zw,listparindent=1zw]%
\renewcommand{\labelenumi}{(\ajLabel\ajRoman{enumi})}%
-\renewcommand{\labelenumii}{(\alph{enumii})}%
+\renewcommand{\labelenumii}{(\ajLabel\ajRoman{enumii})}%
+\renewcommand{\labelenumiii}{(\ajLabel\ajRoman{enumiii})}%
+%\renewcommand{\labelenumii}{(\alph{enumii})}%
}%
{\end{enumerate}}
\newenvironment{Romanenumerate*}%
{\begin{enumerate}[nosep,leftmargin=3zw,itemindent=0zw,labelsep=1.15zw]%
\renewcommand{\labelenumi}{(\ajLabel\ajRoman{enumi})}%
-\renewcommand{\labelenumii}{(\alph{enumii})}%
+\renewcommand{\labelenumii}{(\ajLabel\ajRoman{enumii})}%
+\renewcommand{\labelenumiii}{(\ajLabel\ajRoman{enumiii})}%
+%\renewcommand{\labelenumii}{(\alph{enumii})}%
}%
{\end{enumerate}}
%
diff --git a/Master/texmf-dist/tex/latex/jpnedumathsymbols/jpnedumathsymbols.sty b/Master/texmf-dist/tex/latex/jpnedumathsymbols/jpnedumathsymbols.sty
index e120232a92a..3b376d95eae 100644
--- a/Master/texmf-dist/tex/latex/jpnedumathsymbols/jpnedumathsymbols.sty
+++ b/Master/texmf-dist/tex/latex/jpnedumathsymbols/jpnedumathsymbols.sty
@@ -2,16 +2,16 @@
%% jpnedumathsymbols.sty
%% for making handouts in Japanese Education
%%
-%% Copyright (C) 2022 Yukoh KUSAKABE (screen-name)
+%% Copyright (C) 2022--2024 Yukoh KUSAKABE (screen-name)
%% https://www.metaphysica.info/
-%% https://twitter.com/metaphysicainfo
+%% https://x.com/metaphysicainfo
%%
%% This package released under
%% [the MIT license](https://ctan.org/license/mit).
%%
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{jpnedumathsymbols}[2022/07/10 v1.1]
+\ProvidesPackage{jpnedumathsymbols}[2024/11/24 v1.3]
%
%% [nofrac]
\newif\if@jpnedu@symbol@nofrac
@@ -64,6 +64,11 @@
\@jpnedu@symbol@cvecbracketfalse
\DeclareOption{cvecbracket}{\@jpnedu@symbol@cvecbrackettrue}
+%% [vvecbracket]
+\newif\if@jpnedu@symbol@vvecbracket%
+\@jpnedu@symbol@vvecbracketfalse
+\DeclareOption{vvecbracket}{\@jpnedu@symbol@vvecbrackettrue}
+
%% [innerproductbracket]
\newif\if@jpnedu@symbol@innerproductbracket%
\@jpnedu@symbol@innerproductbracketfalse
@@ -119,9 +124,17 @@
\let\originalsqrt\sqrt
%
%% \sqrt
-\renewcommand{\sqrt}[2][\phantom{1}]{\mathchoice%
-{\!\originalsqrt[\leftroot{-1}\uproot{0}#1]{\vphantom{(}#2\hspace{1pt}}}%
-{\!\originalsqrt[\leftroot{-1}\uproot{0}#1]{\vphantom{(}#2\hspace{1pt}}}%
+\renewcommand{\sqrt}{\@ifstar{\@jpnedu@symbol@sqrt@star}{\@jpnedu@symbol@sqrt@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@sqrt@nostar}
+[2][\phantom{1}]{\mathchoice%
+{\hspace{-0.08em}\originalsqrt[\leftroot{0}\uproot{0}#1]{\vphantom{b}\vphantom{M}#2\hspace{0.08em}}}%
+{\hspace{-0.08em}\originalsqrt[\leftroot{0}\uproot{0}#1]{\vphantom{b}\vphantom{M}#2\hspace{0.08em}}}%
+{\originalsqrt[#1]{#2}}%
+{\originalsqrt[#1]{#2}}}
+\DeclareRobustCommand{\@jpnedu@symbol@sqrt@star}
+[2][\phantom{1}]{\mathchoice%
+{\hspace{-0.08em}\originalsqrt[\leftroot{0}\uproot{0}#1]{\vphantom{b}\vphantom{M}\smash{#2}\hspace{0.08em}}}%
+{\hspace{-0.08em}\originalsqrt[\leftroot{0}\uproot{0}#1]{\vphantom{b}\vphantom{M}\smash{#2}\hspace{0.08em}}}%
{\originalsqrt[#1]{#2}}%
{\originalsqrt[#1]{#2}}}
%
@@ -154,7 +167,8 @@
%
%% \vec
\DeclareRobustCommand{\vec}[1]%
-{\hspace{-1pt}\overrightarrow{\hspace{1pt}\vphantom{T}#1\hspace{1pt}}\hspace{-1pt}}
+{\overrightarrow{\hspace{0.08em}\vphantom{b}\vphantom{M}#1\hspace{0.08em}}}
+%{\overrightarrow{\hspace{0.08em}\vphantom{b}\vphantom{M}#1\hspace{0.16em}}}
%{\overrightarrow{\hspace{1pt}\vphantom{T}#1\hspace{1pt}}}
%
\fi
@@ -316,7 +330,7 @@
%% \comma
\DeclareRobustCommand{\comma}{\@ifstar{\@jpnedu@symbol@comma@star}{\@jpnedu@symbol@comma@nostar}}
\DeclareRobustCommand{\@jpnedu@symbol@comma@nostar}{,\,}
-\DeclareRobustCommand{\@jpnedu@symbol@comma@star}{\,,\,}
+\DeclareRobustCommand{\@jpnedu@symbol@comma@star}{,\ }
%% \period
\DeclareRobustCommand{\period}{\@ifstar{\@jpnedu@symbol@period@star}{\@jpnedu@symbol@period@nostar}}
\DeclareRobustCommand{\@jpnedu@symbol@period@nostar}{\text{。}\quad}
@@ -354,8 +368,15 @@
\DeclareRobustCommand{\tor}{\ensuremath{\mathbin{\text{または}}}}
%% \eand
%% \eor
-\DeclareRobustCommand{\eand}{\ensuremath{\mathbin{\text{and}}}}
-\DeclareRobustCommand{\eor}{\ensuremath{\mathbin{\text{or}}}}
+%\DeclareRobustCommand{\eand}{\ensuremath{\mathbin{\text{and}}}}
+%\DeclareRobustCommand{\eor}{\ensuremath{\mathbin{\text{or}}}}
+\DeclareRobustCommand{\eand}
+{\@ifstar{\@jpnedu@symbol@eand@star}{\@jpnedu@symbol@eand@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@eand@nostar}{\ensuremath{\mathbin{\mathrm{and}}}}
+\DeclareRobustCommand{\@jpnedu@symbol@eand@star}{\ensuremath{\mathbin{\ \mathrm{and}\ }}}
+\DeclareRobustCommand{\eor}{\@ifstar{\@jpnedu@symbol@eor@star}{\@jpnedu@symbol@eor@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@eor@nostar}{\ensuremath{\mathbin{\mathrm{or}}}}
+\DeclareRobustCommand{\@jpnedu@symbol@eor@star}{\ensuremath{\mathbin{\ \mathrm{or}\ }}}
%
%% \lto
%% \lfrom
@@ -422,6 +443,12 @@
{\vspace{0.25\baselineskip}\begin{empheq}[left=\empheqlbrace\,]{#1}{#2}\end{empheq}}%
{\par\vspace{0.25\baselineskip}\noindent}
%
+\newenvironment{simul*}[1][0.8]%
+{\renewcommand{\arraystretch}{#1}\left\{\hspace{-0.375em}\begin{array}{l}}
+{\end{array}\right.\renewcommand{\arraystretch}{1}}
+%{\left\{\begin{gathered}}%
+%{\end{gathered}\right.}
+%
%% \begin{signchart}{<columns>}
\newenvironment{signchart}[1]%
{\vspace{0.25\baselineskip}\begin{equation*}\begin{array}{c|*#1{c}}\hline}%
@@ -513,6 +540,50 @@ $#4$&$#5$&$\to$&$#6$
\DeclareRobustCommand{\@jpnedu@symbol@cvec@nostar}[2]{\begin{pmatrix}\,#1\,\\\,#2\,\end{pmatrix}}
\fi%
%
+%% \vvec{}{}
+%% \vvec{}{}{}
+\if@jpnedu@symbol@vvecbracket%
+\DeclareRobustCommand{\vvec}
+{\@ifstar{\@jpnedu@symbol@vvec@star}{\@jpnedu@symbol@vvec@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@vvec@star}[4][0.65]{\left[\!\!
+\renewcommand{\arraystretch}{#1}
+\begin{array}{c}
+#2\\
+#3\\
+#4
+\end{array}
+\renewcommand{\arraystretch}{1}
+\!\!\right]}
+\DeclareRobustCommand{\@jpnedu@symbol@vvec@nostar}[3][0.65]{\left[\!\!
+\renewcommand{\arraystretch}{#1}
+\begin{array}{c}
+#2\\
+#3
+\end{array}
+\renewcommand{\arraystretch}{1}
+\!\!\right]}
+\else%
+\DeclareRobustCommand{\vvec}
+{\@ifstar{\@jpnedu@symbol@vvec@star}{\@jpnedu@symbol@vvec@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@vvec@star}[4][0.65]{\left(\!\!
+\renewcommand{\arraystretch}{#1}
+\begin{array}{c}
+#2\\
+#3\\
+#4
+\end{array}
+\renewcommand{\arraystretch}{1}
+\!\!\right)}
+\DeclareRobustCommand{\@jpnedu@symbol@vvec@nostar}[3][0.65]{\left(\!\!
+\renewcommand{\arraystretch}{#1}
+\begin{array}{c}
+#2\\
+#3
+\end{array}
+\renewcommand{\arraystretch}{1}
+\!\!\right)}
+\fi%
+%
%% \innerproduct{}{} \inp{}{}
\let\originalinp\inp
\if@jpnedu@symbol@innerproductbracket
@@ -527,6 +598,8 @@ $#4$&$#5$&$\to$&$#6$
\DeclareRobustCommand{\@jpnedu@symbol@innerproduct@nostar}[2]{#1\cdot #2\relax}
\fi%
\let\inp\innerproduct
+%% \vinp{}{}
+\DeclareRobustCommand{\vinp}[2]{\inp{\vec{#1}}{\vec{#2}}}
%
%% \sequence{} \seq{}
\let\originalseq\seq
@@ -539,6 +612,7 @@ $#4$&$#5$&$\to$&$#6$
{\@ifstar{\@jpnedu@symbol@sum@star}{\@jpnedu@symbol@sum@nostar}}
\DeclareRobustCommand{\@jpnedu@symbol@sum@star}{\textstyle\sum}
\DeclareRobustCommand{\@jpnedu@symbol@sum@nostar}{\originalsum}
+\DeclareRobustCommand{\tsum}{\textstyle\sum}
%
%% \GCD
%% \LCM
@@ -558,20 +632,30 @@ $#4$&$#5$&$\to$&$#6$
\overset{\rotatebox{-90}{\ensuremath{\left(\rule{0pt}{\dimen0}\right.\!}}}{#1}%
}
%
-%% \parallel
+%% \jparallel
% https://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/8814.html
\let\originalparallel\parallel
+%\DeclareRobustCommand{\jparallel}{%
+%\mathrel{\raise.3ex\hbox{\scalebox{.7}{%
+%\rotatebox[origin=c]{-7}{/}\kern-.35em\rotatebox[origin=c]{-7}{/}}}}}%
+%\DeclareRobustCommand{\jnotparallel}
+%{\mathrel{\raise.3ex\hbox{\scalebox{.7}{%
+%\ooalign{\rotatebox[origin=c]{-7}{/}\kern-.35em\rotatebox[origin=c]{-7}{/}\crcr%
+%\hfil\raisebox{.0ex}{$\backslash$}\hfil}}}}}%
+%
+% fix
\DeclareRobustCommand{\parallel}{%
-\mathrel{\raise.3ex\hbox{\scalebox{.7}{%
-\rotatebox[origin=c]{-7}{/}\kern-.35em\rotatebox[origin=c]{-7}{/}}}}}%
+\mathrel{\kern-.075em\raise.1ex\hbox{\scalebox{.9}{%
+\rotatebox[origin=c]{-7}{/}\kern-.35em\rotatebox[origin=c]{-7}{/}}}}\kern-.075em}%
\DeclareRobustCommand{\notparallel}
-{\mathrel{\raise.3ex\hbox{\scalebox{.7}{%
+{\mathrel{\kern-.075em\raise.1ex\hbox{\scalebox{.9}{%
\ooalign{\rotatebox[origin=c]{-7}{/}\kern-.35em\rotatebox[origin=c]{-7}{/}\crcr%
-\hfil\raisebox{.0ex}{$\backslash$}\hfil}}}}}%
+\hfil\raisebox{.15ex}{\kern.075em\scalebox{.8}{$\backslash$}}\hfil}}}\kern-.075em}}%
+%
%
%% \similar
\let\originalsimilar\similar
-\DeclareRobustCommand{\similar}[1][1.3]{\mathrel{\lower.2ex\hbox{\scalebox{#1}{∽}}}}
+\DeclareRobustCommand{\similar}[1][1.1]{\mathrel{\lower.2ex\hbox{\scalebox{#1}{∽}}}}
%
%% \permutation{}{}
%% \combination{}{}
@@ -584,12 +668,30 @@ $#4$&$#5$&$\to$&$#6$
\let\repeatedcombination\homogeneous
%
%% \expectedvalue{}
+%% \expectation{}
+%% \variance{}
+%% \deviation{}
%% ([mathbb])
\if@jpnedu@symbol@mathbb
-\DeclareRobustCommand{\expectedvalue}[1]{\mathbb{E}\left(#1\right)}
+\DeclareRobustCommand{\expectedvalue}{\@ifstar{\@jpnedu@symbol@expectedvalue@star}{\@jpnedu@symbol@expectedvalue@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@expectedvalue@star}{\mathbb{E}}
+\DeclareRobustCommand{\@jpnedu@symbol@expectedvalue@nostar}[1]{\mathbb{E}\left(#1\right)}
+\let\expectation\expectedvalue
+\DeclareRobustCommand{\variance}{\@ifstar{\@jpnedu@symbol@variance@star}{\@jpnedu@symbol@variance@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@variance@star}{\mathbb{V}}
+\DeclareRobustCommand{\@jpnedu@symbol@variance@nostar}[1]{\mathbb{V}\left(#1\right)}
\else
-\DeclareRobustCommand{\expectedvalue}[1]{\mathbf{E}\left(#1\right)}
+\DeclareRobustCommand{\expectedvalue}{\@ifstar{\@jpnedu@symbol@expectedvalue@star}{\@jpnedu@symbol@expectedvalue@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@expectedvalue@star}{\mathbf{E}}
+\DeclareRobustCommand{\@jpnedu@symbol@expectedvalue@nostar}[1]{\mathbf{E}\left(#1\right)}
+\let\expectation\expectedvalue
+\DeclareRobustCommand{\variance}{\@ifstar{\@jpnedu@symbol@variance@star}{\@jpnedu@symbol@variance@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@variance@star}{\mathbf{V}}
+\DeclareRobustCommand{\@jpnedu@symbol@variance@nostar}[1]{\mathbf{V}\left(#1\right)}
\fi
+\DeclareRobustCommand{\deviation}{\@ifstar{\@jpnedu@symbol@deviation@star}{\@jpnedu@symbol@deviation@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@deviation@star}{\sigma}
+\DeclareRobustCommand{\@jpnedu@symbol@deviation@nostar}[1]{\sigma\left(#1\right)}
%
%% \Re
%% \Im
@@ -622,7 +724,9 @@ $#4$&$#5$&$\to$&$#6$
\DeclareRobustCommand{\lltextend}{\text{』}}
%
%% \nomination{}
-\DeclareRobustCommand{\nomination}{\parentext}
+\DeclareRobustCommand{\nomination}{\@ifstar{\@jpnedu@symbol@nomination@star}{\@jpnedu@symbol@nomination@nostar}}
+\DeclareRobustCommand{\@jpnedu@symbol@nomination@nostar}{\parentext}
+\DeclareRobustCommand{\@jpnedu@symbol@nomination@star}[1]{(\text{#1})}
%
%% \condition
\DeclareRobustCommand{\condition}{\@ifstar{\@jpnedu@symbol@condition@star}{\@jpnedu@symbol@condition@nostar}}
@@ -647,5 +751,36 @@ $#4$&$#5$&$\to$&$#6$
%
%% \QED
\DeclareRobustCommand{\QED}{■}
+\DeclareRobustCommand{\qedsym}{■}
+%
+% for \NewDocumentEnvironment
+\RequirePackage{xparse}
+%
+\NewDocumentEnvironment{equation**}{m +b}
+{\begin{equation}#2\label{#1}\end{equation}}{}
+%
+%% \begin{align**}{<label>}
+\NewDocumentEnvironment{align**}{m +b}
+{\begin{equation}\begin{aligned}[b]#2\end{aligned}\label{#1}\end{equation}}{}
+%
+%% \begin{gather**}{<label>}
+\NewDocumentEnvironment{gather**}{m +b}
+{\begin{equation}\begin{gathered}[b]#2\end{gathered}\label{#1}\end{equation}}{}
+% https://tex.stackexchange.com/questions/272930/conflicts-between-fleqn-and-gathered
+\renewenvironment{gathered}[1][c]{%
+\RIfM@\else
+\nonmatherr@{\begin{gathered}}%
+\fi
+\null\,%
+\if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi \bgroup
+\Let@ \chardef\dspbrk@context\@ne \restore@math@cr
+\spread@equation
+\ialign\bgroup
+%%% In the original there is just \hfil
+\if@fleqn\else\hfil\fi\strut@$\m@th\displaystyle##$\hfil
+\crcr
+}{%
+\endaligned
+}
%
%% EOF \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/jslectureplanner/cologne.lps b/Master/texmf-dist/tex/latex/jslectureplanner/cologne.lps
index 85ed5b31e0a..2510052b0b2 100644
--- a/Master/texmf-dist/tex/latex/jslectureplanner/cologne.lps
+++ b/Master/texmf-dist/tex/latex/jslectureplanner/cologne.lps
@@ -23,7 +23,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Version: 1.13 -- 2024/03/06
+% Version: 1.14 -- 2025/01/29
% Additional lecture types
\DefLecType{evl}{EVL}{Einf\"uhrungsvorlesung}{Vorlesung}% introductory lecture
diff --git a/Master/texmf-dist/tex/latex/jslectureplanner/english.lps b/Master/texmf-dist/tex/latex/jslectureplanner/english.lps
index dec42983db1..37a1ab45598 100644
--- a/Master/texmf-dist/tex/latex/jslectureplanner/english.lps
+++ b/Master/texmf-dist/tex/latex/jslectureplanner/english.lps
@@ -27,7 +27,7 @@
% English localization of the default strings used by the jslectureplanner package
%
-% Version: 1.13 -- 2024/03/06
+% Version: 1.14 -- 2025/01/29
% Lecture types
\DefLecType{vl}{LEC}{Lecture}{Lecture}% lecture
diff --git a/Master/texmf-dist/tex/latex/jslectureplanner/german-default.lps b/Master/texmf-dist/tex/latex/jslectureplanner/german-default.lps
index b09edaf673c..d16d6cfc6e3 100644
--- a/Master/texmf-dist/tex/latex/jslectureplanner/german-default.lps
+++ b/Master/texmf-dist/tex/latex/jslectureplanner/german-default.lps
@@ -27,7 +27,7 @@
% Default strings (German) used by the jslectureplanner package
%
-% Version: 1.13 -- 2024/03/06
+% Version: 1.14 -- 2025/01/29
% Lecture types
\DefLecType{vl}{VL}{Vorlesung}{Vorlesung}% lecture
diff --git a/Master/texmf-dist/tex/latex/jslectureplanner/jslectureplanner.sty b/Master/texmf-dist/tex/latex/jslectureplanner/jslectureplanner.sty
index 270f9b48cbc..b16a27faecc 100644
--- a/Master/texmf-dist/tex/latex/jslectureplanner/jslectureplanner.sty
+++ b/Master/texmf-dist/tex/latex/jslectureplanner/jslectureplanner.sty
@@ -23,8 +23,8 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\filedate{2024/03/06}
-\def\fileversion{1.13}
+\def\filedate{2025/01/29}
+\def\fileversion{1.14}
\def\filename{jslectureplanner.sty}
\NeedsTeXFormat{LaTeX2e}
@@ -86,8 +86,9 @@
\def\sesnr{}
\def\programlist{}
+\def\programlist@instr{}
\def\programlistexam{}
-\def\programlistbeamer{}
+\def\programlistbeamer@instr{}
\def\programlistbeamerexam{}
\def\programblocklistbeamer{}
\def\jsbiblist{}
@@ -580,13 +581,24 @@
}{}
%
% Program generation
-\newcommand\makeprogram{%
+\newcommand*\makeprogram{%
+ \@ifstar{\@makeinstrprogram}{\@makeprogram}%
+}
+
+\newcommand\@makeprogram{%
\raggedright
\begin{ProgramList}
\programlist
\end{ProgramList}
}
+\newcommand\@makeinstrprogram{%
+ \raggedright
+ \begin{ProgramList}
+ \programlist@instr
+ \end{ProgramList}
+}
+
% Exam schedule generation
\newcommand\makeexamprogram{%
\raggedright
@@ -674,6 +686,7 @@
\newif\if@jslp@beamerprogram@alerted\@jslp@beamerprogram@alertedfalse
\newif\if@jslp@beamerprogram@blocksonly\@jslp@beamerprogram@blocksonlyfalse
\newif\if@jslp@beamerprogram@uncover\@jslp@beamerprogram@uncoverfalse
+\newif\if@jslp@beamerprogram@instr\@jslp@beamerprogram@instrfalse
\DeclareKeys[beamerprogram]
{
@@ -696,7 +709,9 @@
% blocksonly = <true|false>
blocksonly.if = @jslp@beamerprogram@blocksonly,
% uncover = <true|false>
- uncover.if = @jslp@beamerprogram@uncover
+ uncover.if = @jslp@beamerprogram@uncover,
+ % instructors = <true|false>
+ instructors.if = @jslp@beamerprogram@instr
}
% Overlay specifications for uncover programs
@@ -712,6 +727,7 @@
\SetKeys[beamerprogram]{alerted=false}
\SetKeys[beamerprogram]{blocksonly=false}
\SetKeys[beamerprogram]{uncover=false}
+ \SetKeys[beamerprogram]{instructors=false}
\SetKeys[beamerprogram]{#1}
\def\bpdescbeg{\begin{BeamerProgramList}}
\providebool{alerted}
@@ -781,7 +797,11 @@
}%
\ifbool{uncoveredlist}{\beameruncoverspec}{\beameralertspec}
\begin{BeamerProgramList}
- \programlistbeamerii
+ \if@jslp@beamerprogram@instr
+ \programlistbeamerii@instr
+ \else
+ \programlistbeamerii
+ \fi
\end{BeamerProgramList}
\end{frame}
}
@@ -804,7 +824,11 @@
}%
\ifbool{uncoveredlist}{\beameruncoverffslidesspec}{\beameralertspec}
\begin{BeamerProgramList}
- \programlistbeameriii
+ \if@jslp@beamerprogram@instr
+ \programlistbeameriii@instr
+ \else
+ \programlistbeameriii
+ \fi
\end{BeamerProgramList}
\end{frame}
}
@@ -827,7 +851,11 @@
}%
\ifbool{uncoveredlist}{\beameruncoverffslidesspec}{\beameralertspec}
\begin{BeamerProgramList}
- \programlistbeameriv
+ \if@jslp@beamerprogram@instr
+ \programlistbeameriv@instr
+ \else
+ \programlistbeameriv
+ \fi
\end{BeamerProgramList}
\end{frame}
}
@@ -904,7 +932,11 @@
}%
\ifbool{uncoveredlist}{\beameruncoverffslidesspec}{\beameralertspec}
\begin{BeamerProgramList}
- \programlistbeamer
+ \if@jslp@beamerprogram@instr
+ \programlistbeamer@instr
+ \else
+ \programlistbeamer
+ \fi
\end{BeamerProgramList}
\end{frame}
\fi%\else\if@jslp@beamerprogram@blocksonly
@@ -1129,7 +1161,9 @@
\if@jslp@session@cancel
\stepcounter{cancellations}
\protected@eappto\programlist{\noexpand\ProgramListCancelItem{\csuse{sesshortdate\thesnum}}{\csuse{sestitle\thesnum}}{\csuse{@sestitlesep}}{\csuse{@sessubtitle}}}
+ \protected@eappto\programlist@instr{\noexpand\ProgramListCancelItem{\csuse{sesshortdate\thesnum}}{\csuse{sestitle\thesnum}}{\csuse{@sestitlesep}}{\csuse{@sessubtitle}}}
\protected@eappto\programlistbeamer{\noexpand\BeamerProgramListCancelItem{\csuse{sesshortdate\thesnum}}{\csuse{sestitle\thesnum}}{\csuse{@sestitlesep}}{\csuse{@sessubtitle}}}
+ \protected@eappto\programlistbeamer@instr{\noexpand\BeamerProgramListCancelItem{\csuse{sesshortdate\thesnum}}{\csuse{sestitle\thesnum}}{\csuse{@sestitlesep}}{\csuse{@sessubtitle}}}
\else
\if@jslp@session@exam
\stepcounter{exams}
@@ -1147,7 +1181,11 @@
\ifcsempty{@sestitle}{\protected@csxdef{sestitle\thesnum}{\sestopic}}{}
\fi
\protected@eappto\programlist{\noexpand\ProgramListItem{\csuse{sesshortdate\thesnum}}{\csuse{sestitle\thesnum}}{\csuse{@sestitlesep}}{\csuse{@sessubtitle}}}
+ \protected@eappto\programlist@instr{\noexpand\ProgramListItem{\csuse{sesshortdate\thesnum}}{\csuse{sestitle\thesnum}}{\csuse{@sestitlesep}}{\csuse{@sessubtitle}}%
+ \ifcsempty{usesinstructor\thesnum}{}{\ [\csuse{usesinstructor\thesnum}]}}
\protected@eappto\programlistbeamer{\noexpand\BeamerProgramListItem{\csuse{sesshortdate\thesnum}}{\csuse{sestitle\thesnum}}{\csuse{@sestitlesep}}{\csuse{@sessubtitle}}}
+ \protected@eappto\programlistbeamer@instr{\noexpand\BeamerProgramListItem{\csuse{sesshortdate\thesnum}}{\csuse{sestitle\thesnum}}{\csuse{@sestitlesep}}{\csuse{@sessubtitle}}%
+ \ifcsempty{usesinstructor\thesnum}{}{\ [\csuse{usesinstructor\thesnum}]}}
\ifcsempty{sesbib\thesnum}{}{%
\xappto\jsbiblist{\noexpand\section{\csuse{sestitle\thesnum}\csuse{@sestitlesep}\csuse{@sessubtitle}}%
\noexpand\nocite{*}%
@@ -1172,9 +1210,13 @@
\ifx\empty#1
\protected@eappto\programlist{\noexpand\ProgramListBreak{#2}}
\protected@eappto\programlistbeamer{\noexpand\begin{center} (#2) \noexpand\end{center}}
+ \protected@eappto\programlist@instr{\noexpand\ProgramListBreak{#2}}
+ \protected@eappto\programlistbeamer@instr{\noexpand\begin{center} (#2) \noexpand\end{center}}
\else
\protected@eappto\programlist{\noexpand\ProgramListBreak[#1]{#2}}
\protected@eappto\programlistbeamer{\noexpand\begin{center} (#1: #2) \noexpand\end{center}}
+ \protected@eappto\programlist@instr{\noexpand\ProgramListBreak[#1]{#2}}
+ \protected@eappto\programlistbeamer@instr{\noexpand\begin{center} (#1: #2) \noexpand\end{center}}
\fi
}
@@ -1213,9 +1255,13 @@
\ifcsempty{@breakspan}{%
\protected@eappto\programlist{\noexpand\ProgramListBreak{#2}}
\protected@eappto\programlistbeamer{\noexpand\begin{center} (#2) \noexpand\end{center}}
+ \protected@eappto\programlist@instr{\noexpand\ProgramListBreak{#2}}
+ \protected@eappto\programlistbeamer@instr{\noexpand\begin{center} (#2) \noexpand\end{center}}
}{%
\protected@eappto\programlist{\noexpand\ProgramListBreak[\csuse{@breakspan}]{#2}}
\protected@eappto\programlistbeamer{\noexpand\begin{center} (\csuse{@breakspan}: #2) \noexpand\end{center}}
+ \protected@eappto\programlist@instr{\noexpand\ProgramListBreak[\csuse{@breakspan}]{#2}}
+ \protected@eappto\programlistbeamer@instr{\noexpand\begin{center} (\csuse{@breakspan}: #2) \noexpand\end{center}}
}
}
@@ -1239,6 +1285,9 @@
\protected@eappto\programlist{\noexpand\begin{ProgramListBlock}{\Roman{blocks}}{#1}}
\protected@eappto\programlistbeamer{\noexpand\BeamerProgramBlockItem{\Roman{blocks}}{#1}}%
\gappto\programlistbeamer{\begin{BeamerProgramList}}
+ \protected@eappto\programlist@instr{\noexpand\begin{ProgramListBlock}{\Roman{blocks}}{#1}}
+ \protected@eappto\programlistbeamer@instr{\noexpand\BeamerProgramBlockItem{\Roman{blocks}}{#1}}%
+ \gappto\programlistbeamer@instr{\begin{BeamerProgramList}}
\protected@xappto\programblocklistbeamer{\noexpand\BeamerProgramBlockBlocksOnlyItem{\Roman{blocks}}{#1}}%
\csxdef{@currentblock}{#1}%
\csxdef{@currentblockno}{\Roman{blocks}}%
@@ -1248,6 +1297,8 @@
\newcommand*\EndBlock{%
\gappto\programlist{\end{ProgramListBlock}}
\gappto\programlistbeamer{\end{BeamerProgramList}}
+ \gappto\programlist@instr{\end{ProgramListBlock}}
+ \gappto\programlistbeamer@instr{\end{BeamerProgramList}}
\csxdef{@currentblock}{}%
\csxdef{@currentblockno}{}%
\global\togglefalse{inblock}%
@@ -1260,11 +1311,13 @@
\newcommand*\@PauseBlock{%
\gappto\programlistbeamer{\end{BeamerProgramList}}
+ \gappto\programlistbeamer@instr{\end{BeamerProgramList}}
}
\newcommand*\@ResumeBlock{%
- % the \item here is necessary since this is nested immediately into another list
- \gappto\programlistbeamer{\item \begin{BeamerProgramList}}
+ % the \item here is necessary since this is nested immediately into an
+ \gappto\programlistbeamer{\item \begin{BeamerProgramList}}other list
+ \gappto\programlistbeamer@instr{\item \begin{BeamerProgramList}}
}
\newenvironment{SessionBlock}[1]{\StartBlock{#1}}{\EndBlock}
@@ -1278,19 +1331,24 @@
\ifdefined\programlistbeamerii
\ifdefined\programlistbeameriii
\global\let\programlistbeameriv\programlistbeamer
+ \global\let\programlistbeameriv@instr\programlistbeamer@instr
\else
\global\let\programlistbeameriii\programlistbeamer
+ \global\let\programlistbeameriii@instr\programlistbeamer@instr
\fi
\else%
\global\let\programlistbeamerii\programlistbeamer
+ \global\let\programlistbeamerii@instr\programlistbeamer@instr
\fi
\global\let\programlistbeamer\empty
+ \global\let\programlistbeamer@instr\empty
\iftoggle{inblock}{\@ResumeBlock}{}%
}
% Beamer program hook
\newcommand*\SetBeamerHook[1]{%
\protected@eappto\programlistbeamer{\noexpand#1}
+ \protected@eappto\programlistbeamer@instr{\noexpand#1}
}
% 5) Infrastructure
diff --git a/Master/texmf-dist/tex/latex/jslectureplanner/jsmembertable.sty b/Master/texmf-dist/tex/latex/jslectureplanner/jsmembertable.sty
index 0c8c1ee2bb2..f21891088bc 100644
--- a/Master/texmf-dist/tex/latex/jslectureplanner/jsmembertable.sty
+++ b/Master/texmf-dist/tex/latex/jslectureplanner/jsmembertable.sty
@@ -24,8 +24,8 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\filedate{2024/03/06}
-\def\fileversion{1.13}
+\def\filedate{2025/01/29}
+\def\fileversion{1.14}
\def\filename{jsmembertable.sty}
\NeedsTeXFormat{LaTeX2e}
@@ -76,6 +76,11 @@
\fi
%
+% HOOKS
+%
+\NewHook{jsmembertable/followuptable/before}
+
+%
% STRETCH ROW HEIGHT
%
@@ -664,7 +669,8 @@
\printtabtoks
\end{longtable}
\ifnum\thesnum>7
- \clearpage
+ \clearpage%
+ \UseHook{jsmembertable/followuptable/before}%
\setcounter{tabrow}{0}
\ifx\relax#1\relax\else
% test if the input is a number
diff --git a/Master/texmf-dist/tex/latex/jsonparse/jsonparse.sty b/Master/texmf-dist/tex/latex/jsonparse/jsonparse.sty
index 7905c53d790..0a401ee9bf5 100644
--- a/Master/texmf-dist/tex/latex/jsonparse/jsonparse.sty
+++ b/Master/texmf-dist/tex/latex/jsonparse/jsonparse.sty
@@ -1,23 +1,36 @@
-% File: jsonparse.sty
-% Copyright 2024 Jasper Habicht (mail(at)jasperhabicht.de).
-%
+% File: jsonparse.sty
+% Copyright 2024-2025 Jasper Habicht (mail(at)jasperhabicht.de).
+%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
% available at http://www.latex-project.org/lppl/.
-%
+%
% This file is part of the `jsonparse' package (The Work in LPPL)
% and all files in that bundle must be distributed together.
-%
+%
% This work has the LPPL maintenance status `maintained'.
-%
-\ProvidesExplPackage {jsonparse} {2024-08-27} {0.9.0}
- {JSON Parse}
+%
+\ProvidesExplPackage {jsonparse} {2025-01-26} {1.0.3}
+ {A handy way to parse, store and access JSON data from files or strings in LaTeX documents}
+
+\msg_new:nnn { jsonparse } { old-kernel } {
+ LaTeX ~ kernel ~ too ~ old. \iow_newline:
+ The ~ jsonparse ~ package ~ does ~ not ~ support ~ this ~ LaTeX ~ version. \iow_newline:
+ Please ~ update ~ to ~ a ~ newer ~ version.
+}
+
+\cs_if_exist:NF \ProcessKeyOptions {
+ \msg_critical:nn { jsonparse } { old-kernel }
+}
+
+% ===
\bool_new:N \l__jsonparse_debug_mode_bool
-\keys_define:nn { jsonparse / global } {
- debug .bool_set:N = \l__jsonparse_debug_mode_bool ,
- debug .default:n = { true } ,
- debug .initial:n = { false }
+
+\keys_define:nn { jsonparse / global } {
+ debug .bool_set:N = \l__jsonparse_debug_mode_bool ,
+ debug .default:n = { true } ,
+ debug .initial:n = { false }
}
\ProcessKeyOptions [ jsonparse / global ]
@@ -28,13 +41,13 @@
\msg_new:nnn { jsonparse } { parsing-error } {
\msg_error_text:n { jsonparse } \iow_newline:
Could ~ not ~ parse ~ JSON. \iow_newline:
- Parsing ~ error ~ at ~ key ~ `#1` ~ with ~ value ~ `#2`.
+ Parsing ~ error ~ at ~ key ~ `#1` ~ with ~ value ~ `#2`.
}
\msg_new:nnn { jsonparse } { nested-non-expandable } {
\msg_error_text:n { jsonparse } \iow_newline:
Nested ~ use ~ of ~ \token_to_str:N \JSONParseValue \c_space_tl not ~ allowed. \iow_newline:
- Use ~ \token_to_str:N \JSONParseExpandableValue \c_space_tl instead.
+ Use ~ \token_to_str:N \JSONParseExpandableValue \c_space_tl instead.
}
\msg_new:nnn { jsonparse } { file-not-found } {
@@ -44,7 +57,7 @@
\msg_new:nnn { jsonparse } { file-exists } {
\msg_error_text:n { jsonparse } \iow_newline:
- File ~ #1 ~ already ~ existing.
+ File ~ #1 ~ already ~ existing.
}
\msg_new:nnn { jsonparse } { escape-in-key } {
@@ -57,6 +70,16 @@
Escape ~ character ~ #1 ~ not ~ found.
}
+\msg_new:nnn { jsonparse } { prop-undefined } {
+ \msg_error_text:n { jsonparse } \iow_newline:
+ Property ~ list ~ undefined: ~ #1.
+}
+
+\msg_new:nnn { jsonparse } { cs-undefined } {
+ \msg_error_text:n { jsonparse } \iow_newline:
+ Control ~ sequence ~ undefined: ~ #1.
+}
+
\msg_new:nnn { jsonparse } { unknown-key } {
\msg_warning_text:n { jsonparse } \iow_newline:
Ignoring ~ unknown ~ key: ~ #1.
@@ -64,7 +87,7 @@
\msg_new:nnn { jsonparse } { saving-external } {
\msg_info_text:n { jsonparse } \iow_newline:
- Saving ~ external ~ file: ~ #1.
+ Saving ~ to ~ external ~ file: ~ #1.
}
\msg_new:nnn { jsonparse } { loading-external } {
@@ -72,12 +95,18 @@
Loading ~ from ~ external ~ file: ~ #1.
}
+\msg_new:nnn { jsonparse } { not-array-item } {
+ \msg_info_text:n { jsonparse } \iow_newline:
+ Key ~ does ~ not ~ represent ~ an ~ array ~ item: ~ #1
+}
+
% ===
\str_new:N \l_jsonparse_externalize_prefix_str
\str_new:N \l_jsonparse_current_prop_str
\tl_new:N \l__jsonparse_externalize_file_name_tl
+\tl_new:N \l__jsonparse_externalize_file_data_tl
\str_new:N \l__jsonparse_child_sep_str
\str_new:N \l__jsonparse_array_sep_left_str
@@ -86,6 +115,7 @@
\str_new:N \l__jsonparse_false_str
\str_new:N \l__jsonparse_null_str
\bool_new:N \l__jsonparse_zero_based_bool
+\bool_new:N \l__jsonparse_check_num_bool
\bool_new:N \l__jsonparse_rescan_bool
\bool_new:N \l__jsonparse_externalize_bool
@@ -97,19 +127,18 @@
\clist_new:N \l__jsonparse_unused_keys_clist
-\clist_new:N \l__jsonparse_escape_tex_chars_clist
-\clist_set:Nn \l__jsonparse_escape_tex_chars_clist {
+\clist_const:Nn \c__jsonparse_escape_tex_chars_clist {
number_sign ,
- dollar_sign ,
+ dollar_sign ,
percent_sign ,
ampersand ,
- circumflex_accent ,
- low_line ,
- tilde
+ circumflex_accent ,
+ low_line ,
+ tilde
}
\str_new:N \l__jsonparse_escape_temp_str
-\clist_map_inline:Nn \l__jsonparse_escape_tex_chars_clist {
+\clist_map_inline:Nn \c__jsonparse_escape_tex_chars_clist {
\bool_new:c { l__jsonparse_escape_ #1 _bool }
}
@@ -120,7 +149,7 @@
externalize ~ prefix .str_set:N = \l_jsonparse_externalize_prefix_str ,
externalize ~ prefix .initial:n = { } ,
externalize ~ file ~ name .tl_set:N = \l__jsonparse_externalize_file_name_tl ,
- externalize ~ file ~ name .initial:n = {
+ externalize ~ file ~ name .initial:n = {
\l_jsonparse_externalize_prefix_str \c_sys_jobname_str \c_underscore_str \l_jsonparse_current_prop_str
} ,
separator .code:n = { \keys_set:nn { jsonparse / parse / separator } {#1} } ,
@@ -133,13 +162,16 @@
zero-based .bool_set:N = \l__jsonparse_zero_based_bool ,
zero-based .default:n = { true } ,
zero-based .initial:n = { true } ,
+ check ~ num .bool_set:N = \l__jsonparse_check_num_bool ,
+ check ~ num .default:n = { true } ,
+ check ~ num .initial:n = { true } ,
replace .code:n = { \keys_set:nn { jsonparse / parse / replace } {#1} } ,
replace / true .str_set:N = \l__jsonparse_true_str ,
replace / true .initial:n = { true } ,
replace / false .str_set:N = \l__jsonparse_false_str ,
replace / false .initial:n = { false } ,
replace / null .str_set:N = \l__jsonparse_null_str ,
- replace / null .initial:n = { null }
+ replace / null .initial:n = { null }
}
\keys_define:nn { jsonparse / typeset } {
@@ -154,15 +186,15 @@
replace / carriage ~ return .initial:n = { ~ } ,
replace / horizontal ~ tab .str_set:N = \l__jsonparse_horizontal_tab_str ,
replace / horizontal ~ tab .initial:n = { ~ } ,
- escape .code:n = {
- \str_case:nnF {#1} {
+ escape .code:n = {
+ \str_case:nnF {#1} {
{ all } {
- \clist_map_inline:Nn \l__jsonparse_escape_tex_chars_clist {
+ \clist_map_inline:Nn \c__jsonparse_escape_tex_chars_clist {
\bool_set_true:c { l__jsonparse_escape_ ##1 _bool }
}
- }
+ }
{ none } {
- \clist_map_inline:Nn \l__jsonparse_escape_tex_chars_clist {
+ \clist_map_inline:Nn \c__jsonparse_escape_tex_chars_clist {
\bool_set_false:c { l__jsonparse_escape_ ##1 _bool }
}
}
@@ -173,7 +205,7 @@
\bool_if_exist:cTF { l__jsonparse_escape_ \l__jsonparse_escape_temp_str _bool } {
\bool_set_true:c { l__jsonparse_escape_ \l__jsonparse_escape_temp_str _bool }
} {
- \str_case:nnF {##1} {
+ \str_case:nnF {##1} {
{ hash } {
\bool_set_true:c { l__jsonparse_escape_number_sign_bool }
}
@@ -204,29 +236,31 @@
rescan .groups:n = { output }
}
-\cs_new:Npn \__jsonparse_warning_unused_keys: {
+\cs_new_protected:Npn \__jsonparse_warning_unused_keys: {
\clist_map_inline:Nn \l__jsonparse_unused_keys_clist {
\msg_warning:nne { jsonparse } { unknown-key } {
##1
- }
+ }
}
}
\NewDocumentCommand { \JSONParseSet } { m } {
\keys_set_known:nnN { jsonparse / global } {#1} \l__jsonparse_unused_keys_clist
- \keys_set_known:noN { jsonparse / parse } { \l__jsonparse_unused_keys_clist } \l__jsonparse_unused_keys_clist
+ \keys_set_known:noN { jsonparse / parse } { \l__jsonparse_unused_keys_clist } \l__jsonparse_unused_keys_clist
\keys_set_known:noN { jsonparse / typeset } { \l__jsonparse_unused_keys_clist } \l__jsonparse_unused_keys_clist
\__jsonparse_warning_unused_keys:
}
% ===
-\cs_if_exist:NF \str_casefold:n {
- \cs_new:Npn \str_casefold:n { \str_foldcase:n }
+\cs_if_exist:NF \str_casefold:n {
+ \cs_new_eq:NN \str_casefold:n \str_foldcase:n
+ \cs_new:Npn \str_foldcase:n { \str_casefold:n }
}
\cs_generate_variant:Nn \file_input:n { e }
-\cs_generate_variant:Nn \tl_gset_rescan:Nnn { Nne }
+\cs_generate_variant:Nn \tl_gset:Nn { Ne , ce }
+\cs_generate_variant:Nn \tl_gset_rescan:Nnn { Nno , Nne }
\cs_generate_variant:Nn \tl_range:nnn { nne , nen }
\cs_generate_variant:Nn \tl_range:Nnn { Nne , Nen }
\cs_generate_variant:Nn \tl_remove_once:Nn { NV }
@@ -239,6 +273,9 @@
\cs_generate_variant:Nn \str_casefold:n { o }
\cs_generate_variant:Nn \str_head_ignore_spaces:n { o }
\cs_generate_variant:Nn \str_set:Nn { Ne }
+\cs_generate_variant:Nn \int_step_function:nnN { nVN }
+\cs_generate_variant:Nn \clist_const:Nn { Ne }
+\cs_generate_variant:Nn \seq_put_right:Nn { Ne }
\cs_generate_variant:Nn \prop_gput:Nnn { Nee }
\cs_generate_variant:Nn \prop_item:Nn { Ne , ce }
\cs_generate_variant:Nn \prop_put:Nnn { Nen , Nee }
@@ -252,17 +289,40 @@
\cs_generate_variant:Nn \msg_warning:nnn { nne }
\prg_generate_conditional_variant:Nnn \file_if_exist:n { e } { T , TF }
-\prg_generate_conditional_variant:Nnn \tl_if_eq:nn { en } { T }
\prg_generate_conditional_variant:Nnn \tl_if_head_eq_charcode:nN { oN } { T , TF }
\prg_generate_conditional_variant:Nnn \tl_if_in:nn { nV } { F }
-\prg_generate_conditional_variant:Nnn \str_if_eq:nn { en , eV } { T , TF }
+\prg_generate_conditional_variant:Nnn \seq_if_in:Nn { Ne } { F }
+\prg_generate_conditional_variant:Nnn \str_if_eq:nn { en , eV } { T , F , TF }
+\prg_generate_conditional_variant:Nnn \str_if_eq:nn { Vn } { p }
+
+% ===
+
+\bool_new:N \l__jsonparse_compat_bool
+
+\cs_if_exist:NF \IfExplAtLeastTF {
+ \cs_new:Npn \IfExplAtLeastTF #1#2#3 { }
+ \bool_set_true:N \l__jsonparse_compat_bool
+}
-\prop_new:N \g_jsonparse_entries_prop
-\prop_new:N \l__jsonparse_temp_prop
+\IfExplAtLeastTF { 2024-12-09 } { } {
+ \bool_set_true:N \l__jsonparse_compat_bool
+}
+
+% ===
+
+\bool_if:NTF \l__jsonparse_compat_bool {
+ \prop_new:N \g_jsonparse_entries_prop
+ \prop_new:N \l__jsonparse_temp_prop
+} {
+ \prop_new_linked:N \g_jsonparse_entries_prop
+ \prop_new_linked:N \l__jsonparse_temp_prop
+}
\tl_new:N \g__jsonparse_json_tl
\tl_new:N \l__jsonparse_input_tl
\tl_new:N \l__jsonparse_temp_tl
+\tl_new:N \l__jsonparse_keys_tl
+\tl_new:N \l__jsonparse_keys_array_tl
\tl_new:N \l__jsonparse_prefix_tl
\tl_new:N \l__jsonparse_key_tl
\tl_new:N \l__jsonparse_val_tl
@@ -272,18 +332,30 @@
\int_new:N \l__jsonparse_array_index_int
\int_new:N \l__jsonparse_array_count_int
-\int_new:N \l__jsonparse_array_count_last_int
+\int_new:N \l__jsonparse_array_count_aux_int
+\seq_new:N \l__jsonparse_array_count_last_seq
+
+\str_new:N \l__jsonparse_filter_key_str
+
+\int_new:N \l__jsonparse_array_keys_index_int
+\tl_new:N \l__jsonparse_array_keys_index_roman_tl
+
+\str_new:N \l__jsonparse_array_values_key_str
+\tl_new:N \l__jsonparse_array_values_insert_tl
+
+\clist_new:N \l__jsonparse_array_map_keys_clist
+\str_new:N \l__jsonparse_array_map_function_str
\bool_new:N \l__jsonparse_prop_map_first_bool
\bool_new:N \l__jsonparse_externalize_load_bool
-\ior_new:N \l__jsonparse_json_ior
\iow_new:N \g__jsonparse_externalize_iow
% ===
\cctab_const:Nn \c__jsonparse_json_escape_cctab {
\cctab_select:N \c_str_cctab
+ \char_set_catcode_space:n { 9 }
\char_set_catcode_escape:n { 92 }
\bool_lazy_or:nnF
{ \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: }
@@ -292,88 +364,289 @@
% ===
-\cs_new_protected:Npn \jsonparse_parse_to_prop:Nn #1#2 {
- \bool_if:NT \l__jsonparse_debug_mode_bool {
- \msg_log:nne { jsonparse } { debug-info } {
- \iow_newline:
- Parsing ~ JSON ~ ...
- }
+\clist_const:Nn \c__jsonparse_num_nonzero_digits_clist {
+ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9
+}
+
+\clist_const:Ne \c__jsonparse_num_digits_clist {
+ 0 , \c__jsonparse_num_nonzero_digits_clist
+}
+
+\clist_const:Ne \c__jsonparse_num_exponent_clist {
+ \tl_to_str:n { e } ,
+ \tl_to_str:n { E }
+}
+
+\clist_const:Ne \c__jsonparse_num_plus_minus_clist {
+ \tl_to_str:n { + } ,
+ \tl_to_str:n { - }
+}
+
+\prg_new_conditional:Npnn \jsonparse_if_num:n #1 { p , T , F , TF } {
+ \exp_last_unbraced:Ne
+ \__jsonparse_parse_num:w { \tl_to_str:e { \tl_trim_spaces:n {#1} } } \q_stop
+}
+
+\cs_new:Npn \__jsonparse_parse_num:w #1#2 \q_stop {
+ \cs_if_exist_use:cTF { __jsonparse_parse_num_first_ #1 :w } {
+ #2 \q_stop
+ } {
+ \prg_return_false:
}
- \prop_gclear:N \g_jsonparse_entries_prop
- \jsonparse_parse:n {#2}
- \prop_gset_eq:NN #1 \g_jsonparse_entries_prop
- \bool_if:NT \l__jsonparse_debug_mode_bool {
- \msg_log:nne { jsonparse } { debug-info } {
- JSON ~ parsing ~ done. \iow_newline:
- }
+}
+
+\cs_new:cpn { __jsonparse_parse_num_first_ - :w } #1 \q_stop {
+ \tl_if_blank:nTF {#1} {
+ \prg_return_false:
+ } {
+ \__jsonparse_parse_num_first_minus:w #1 \q_stop
+ }
+}
+
+\cs_new:cpn { __jsonparse_parse_num_first_ 0 :w } #1 \q_stop {
+ \tl_if_blank:nTF {#1} {
+ \prg_return_true:
+ } {
+ \__jsonparse_parse_num_first_zero:w #1 \q_stop
+ }
+}
+
+\clist_map_inline:Nn \c__jsonparse_num_nonzero_digits_clist {
+ \cs_new:cpn { __jsonparse_parse_num_first_ #1 :w } ##1 \q_stop {
+ \tl_if_blank:nTF {##1} {
+ \prg_return_true:
+ } {
+ \__jsonparse_parse_num_digit:w ##1 \q_stop
+ }
+ }
+}
+
+\cs_new:Npn \__jsonparse_parse_num_first_minus:w #1#2 \q_stop {
+ \str_if_eq:nnTF {#1} { - } {
+ \prg_return_false:
+ } {
+ \cs_if_exist_use:cTF { __jsonparse_parse_num_first_ #1 :w } {
+ #2 \q_stop
+ } {
+ \prg_return_false:
+ }
+ }
+}
+
+\cs_new:Npn \__jsonparse_parse_num_first_zero:w #1#2 \q_stop {
+ \clist_if_in:NnTF \c__jsonparse_num_digits_clist {#1} {
+ \prg_return_false:
+ } {
+ \cs_if_exist_use:cTF { __jsonparse_parse_num_ #1 :w } {
+ #2 \q_stop
+ } {
+ \prg_return_false:
+ }
+ }
+}
+
+\cs_new:Npn \__jsonparse_parse_num_digit:w #1#2 \q_stop {
+ \cs_if_exist_use:cTF { __jsonparse_parse_num_ #1 :w } {
+ #2 \q_stop
+ } {
+ \prg_return_false:
+ }
+}
+
+\cs_new:cpn { __jsonparse_parse_num_ . :w } #1 \q_stop {
+ \tl_if_blank:nTF {#1} {
+ \prg_return_false:
+ } {
+ \__jsonparse_parse_num_fraction:w #1 \q_stop
+ }
+}
+
+\clist_map_inline:Nn \c__jsonparse_num_exponent_clist {
+ \cs_new:cpn { __jsonparse_parse_num_ #1 :w } ##1 \q_stop {
+ \tl_if_blank:nTF {##1} {
+ \prg_return_false:
+ } {
+ \__jsonparse_parse_num_exponent:w ##1 \q_stop
+ }
+ }
+}
+
+\clist_map_inline:Nn \c__jsonparse_num_digits_clist {
+ \cs_new:cpn { __jsonparse_parse_num_ #1 :w } ##1 \q_stop {
+ \tl_if_blank:nTF {##1} {
+ \prg_return_true:
+ } {
+ \__jsonparse_parse_num_digit:w ##1 \q_stop
+ }
+ }
+}
+
+\cs_new:Npn \__jsonparse_parse_num_fraction:w #1#2 \q_stop {
+ \cs_if_exist_use:cTF { __jsonparse_parse_num_fraction_ #1 :w } {
+ #2 \q_stop
+ } {
+ \prg_return_false:
+ }
+}
+
+\clist_map_inline:Nn \c__jsonparse_num_digits_clist {
+ \cs_new:cpn { __jsonparse_parse_num_fraction_ #1 :w } ##1 \q_stop {
+ \tl_if_blank:nTF {##1} {
+ \prg_return_true:
+ } {
+ \__jsonparse_parse_num_fraction_digit:w ##1 \q_stop
+ }
+ }
+}
+
+\cs_new:Npn \__jsonparse_parse_num_fraction_digit:w #1#2 \q_stop {
+ \clist_if_in:NnTF \c__jsonparse_num_exponent_clist {#1} {
+ \__jsonparse_parse_num_exponent:w #2 \q_stop
+ } {
+ \cs_if_exist_use:cTF { __jsonparse_parse_num_fraction_ #1 :w } {
+ #2 \q_stop
+ } {
+ \prg_return_false:
+ }
+ }
+}
+
+\cs_new:Npn \__jsonparse_parse_num_exponent:w #1#2 \q_stop {
+ \cs_if_exist_use:cTF { __jsonparse_parse_num_exponent_ #1 :w } {
+ #2 \q_stop
+ } {
+ \prg_return_false:
+ }
+}
+
+\clist_map_inline:Nn \c__jsonparse_num_plus_minus_clist {
+ \cs_new:cpn { __jsonparse_parse_num_exponent_ #1 :w } ##1 \q_stop {
+ \tl_if_blank:nTF {##1} {
+ \prg_return_false:
+ } {
+ \__jsonparse_parse_num_exponent_plus_minus:w ##1 \q_stop
+ }
+ }
+}
+
+\cs_new:Npn \__jsonparse_parse_num_exponent_plus_minus:w #1#2 \q_stop {
+ \clist_if_in:NnTF \c__jsonparse_num_plus_minus_clist {#1} {
+ \prg_return_false:
+ } {
+ \cs_if_exist_use:cTF { __jsonparse_parse_num_exponent_ #1 :w } {
+ #2 \q_stop
+ } {
+ \prg_return_false:
+ }
+ }
+}
+
+\clist_map_inline:Nn \c__jsonparse_num_digits_clist {
+ \cs_new:cpn { __jsonparse_parse_num_exponent_ #1 :w } ##1 \q_stop {
+ \tl_if_blank:nTF {##1} {
+ \prg_return_true:
+ } {
+ \__jsonparse_parse_num_exponent_digit:w ##1 \q_stop
+ }
+ }
+}
+
+\cs_new:Npn \__jsonparse_parse_num_exponent_digit:w #1#2 \q_stop {
+ \clist_if_in:NnTF \c__jsonparse_num_plus_minus_clist {#1} {
+ \prg_return_false:
+ } {
+ \cs_if_exist_use:cTF { __jsonparse_parse_num_exponent_ #1 :w } {
+ #2 \q_stop
+ } {
+ \prg_return_false:
+ }
}
}
+% ===
+
\cs_new_protected:Npn \jsonparse_parse:n #1 {
\tl_set:Ne \l__jsonparse_input_tl { \tl_trim_spaces:e {#1} }
- \cs_if_exist_use:cTF { __jsonparse_parse_ \str_head_ignore_spaces:o { \l__jsonparse_input_tl } :w } {
+ \cs_if_exist_use:cTF { __jsonparse_parse_ \str_head_ignore_spaces:o { \l__jsonparse_input_tl } :w } {
\l__jsonparse_input_tl \q_stop
} {
% other
- \exp_last_unbraced:No
- \__jsonparse_parse_other:w \l__jsonparse_input_tl \q_stop
+ \exp_last_unbraced:No
+ \__jsonparse_parse_other:w \l__jsonparse_input_tl \q_stop
+ }
+}
+
+\cs_new_protected:Npn \jsonparse_parse_to_prop:Nn #1#2 {
+ \bool_if:NT \l__jsonparse_debug_mode_bool {
+ \msg_log:nne { jsonparse } { debug-info } {
+ \iow_newline:
+ Parsing ~ JSON ~ ...
+ }
+ }
+ \prop_gclear:N \g_jsonparse_entries_prop
+ \jsonparse_parse:n {#2}
+ \prop_gset_eq:NN #1 \g_jsonparse_entries_prop
+ \bool_if:NT \l__jsonparse_debug_mode_bool {
+ \msg_log:nne { jsonparse } { debug-info } {
+ JSON ~ parsing ~ done. \iow_newline:
+ }
}
}
% ===
-\cs_new:cpn { __jsonparse_parse_ \c_left_brace_str :w } #1 \q_stop {
- \exp_last_unbraced:No
+\cs_new_protected:cpn { __jsonparse_parse_ \c_left_brace_str :w } #1 \q_stop {
+ \exp_last_unbraced:No
\__jsonparse_parse_object_begin:w #1 \q_stop
}
-\cs_new:cpn { __jsonparse_parse_ \c_right_brace_str :w } #1 \q_stop {
- \exp_last_unbraced:No
+\cs_new_protected:cpn { __jsonparse_parse_ \c_right_brace_str :w } #1 \q_stop {
+ \exp_last_unbraced:No
\__jsonparse_parse_object_end:w #1 \q_stop
}
-\cs_new:cpn { __jsonparse_parse_ [ :w } #1 \q_stop {
- \exp_last_unbraced:No
+\cs_new_protected:cpn { __jsonparse_parse_ [ :w } #1 \q_stop {
+ \exp_last_unbraced:No
\__jsonparse_parse_array_begin:w #1 \q_stop
}
-\cs_new:cpn { __jsonparse_parse_ ] :w } #1 \q_stop {
- \exp_last_unbraced:No
+\cs_new_protected:cpn { __jsonparse_parse_ ] :w } #1 \q_stop {
+ \exp_last_unbraced:No
\__jsonparse_parse_array_end:w #1 \q_stop
}
-\cs_new:cpn { __jsonparse_parse_ " :w } #1 \q_stop {
- \exp_last_unbraced:No
+\cs_new_protected:cpn { __jsonparse_parse_ " :w } #1 \q_stop {
+ \exp_last_unbraced:No
\__jsonparse_parse_string_key:w #1 \q_stop
}
-\cs_new:Npn \__jsonparse_array_key_set: {
- \str_if_eq:eVT {
- \tl_range:Nen \l__jsonparse_prefix_tl {
- \int_eval:n {
- -1 * \tl_count:N \l__jsonparse_array_sep_left_str
- }
+\cs_new_protected:Npn \__jsonparse_array_key_set: {
+ \str_if_eq:eVT {
+ \tl_range:Nen \l__jsonparse_prefix_tl {
+ \int_eval:n {
+ -1 * \tl_count:N \l__jsonparse_array_sep_left_str
+ }
} { -1 }
} \l__jsonparse_array_sep_left_str {
\int_incr:N \l__jsonparse_array_index_int
- \tl_set:Ne \l__jsonparse_key_tl {
- \l__jsonparse_prefix_tl \int_use:N \l__jsonparse_array_index_int \l__jsonparse_array_sep_right_str
+ \tl_set:Ne \l__jsonparse_key_tl {
+ \l__jsonparse_prefix_tl \int_use:N \l__jsonparse_array_index_int \l__jsonparse_array_sep_right_str
}
}
}
-\exp_last_unbraced:NNo \cs_new:Npn \__jsonparse_parse_object_begin:w \c_left_brace_str #1 \q_stop {
+\exp_last_unbraced:NNo \cs_new_protected:Npn \__jsonparse_parse_object_begin:w \c_left_brace_str #1 \q_stop {
\__jsonparse_array_key_set:
\group_begin:
\tl_set:Nn \l__jsonparse_remainder_tl {#1}
% object begin
\bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nnn { jsonparse } { debug-info } {
- (obj ~ begin)
- }
+ (obj ~ begin)
+ }
}
\tl_if_empty:NTF \l__jsonparse_key_tl {
- \tl_set_eq:NN \l__jsonparse_object_array_key_tl \l__jsonparse_child_sep_str
+ \tl_set_eq:NN \l__jsonparse_object_array_key_tl \l__jsonparse_child_sep_str
} {
\tl_set_eq:NN \l__jsonparse_object_array_key_tl \l__jsonparse_key_tl
\tl_set:Ne \l__jsonparse_prefix_tl { \l__jsonparse_key_tl \l__jsonparse_child_sep_str }
@@ -382,103 +655,107 @@
\__jsonparse_parse_remainder:
}
-\exp_last_unbraced:NNo \cs_new:Npn \__jsonparse_parse_object_end:w \c_right_brace_str #1 \q_stop {
- \tl_set:Ne \l__jsonparse_object_array_val_tl {
+\exp_last_unbraced:NNo \cs_new_protected:Npn \__jsonparse_parse_object_end:w \c_right_brace_str #1 \q_stop {
+ \tl_set:Ne \l__jsonparse_object_array_val_tl {
\tl_range:Nne \l__jsonparse_object_array_val_tl { 1 } {
\int_eval:n {
-1 * \tl_count:n {#1} - 1
}
}
}
- \prop_gput:Nee \g_jsonparse_entries_prop
+ \prop_gput:Nee \g_jsonparse_entries_prop
{ \l__jsonparse_object_array_key_tl } { \l__jsonparse_object_array_val_tl }
\bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nne { jsonparse } { debug-info } {
(key) ~ \str_use:N \l__jsonparse_object_array_key_tl : \iow_newline:
- \iow_char:N \ \iow_char:N \ (obj) ~ \str_use:N \l__jsonparse_object_array_val_tl
- }
- }
+ \iow_char:N \ \iow_char:N \ (obj) ~ \str_use:N \l__jsonparse_object_array_val_tl
+ }
+ }
\group_end:
% object end
\bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nnn { jsonparse } { debug-info } {
- (obj ~ end)
- }
+ (obj ~ end)
+ }
}
\tl_set:Nn \l__jsonparse_remainder_tl {#1}
\__jsonparse_parse_remainder:
}
-\cs_new:Npn \__jsonparse_parse_array_begin:w [ #1 \q_stop {
+\cs_new_protected:Npn \__jsonparse_parse_array_begin:w [ #1 \q_stop {
\__jsonparse_array_key_set:
\group_begin:
\tl_set:Nn \l__jsonparse_remainder_tl {#1}
% array begin
\bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nnn { jsonparse } { debug-info } {
- (arr ~ begin)
+ (arr ~ begin)
}
}
\int_zero:N \l__jsonparse_array_index_int
\bool_if:NT \l__jsonparse_zero_based_bool {
\int_decr:N \l__jsonparse_array_index_int
}
- \tl_set_eq:NN \l__jsonparse_object_array_key_tl \l__jsonparse_key_tl
+ \tl_if_empty:NTF \l__jsonparse_key_tl {
+ \tl_set_eq:NN \l__jsonparse_object_array_key_tl \l__jsonparse_child_sep_str
+ } {
+ \tl_set_eq:NN \l__jsonparse_object_array_key_tl \l__jsonparse_key_tl
+ }
\tl_set:Nn \l__jsonparse_object_array_val_tl { [ #1 }
\tl_set:Ne \l__jsonparse_prefix_tl { \l__jsonparse_key_tl \l__jsonparse_array_sep_left_str }
\__jsonparse_parse_remainder:
}
-\cs_new:Npn \__jsonparse_parse_array_end:w ] #1 \q_stop {
- \tl_set:Ne \l__jsonparse_object_array_val_tl {
+\cs_new_protected:Npn \__jsonparse_parse_array_end:w ] #1 \q_stop {
+ \tl_set:Ne \l__jsonparse_object_array_val_tl {
\tl_range:Nne \l__jsonparse_object_array_val_tl { 1 } {
\int_eval:n {
-1 * \tl_count:n {#1} - 1
}
}
}
- \prop_gput:Nee \g_jsonparse_entries_prop
+ \prop_gput:Nee \g_jsonparse_entries_prop
{ \l__jsonparse_object_array_key_tl } { \l__jsonparse_object_array_val_tl }
\bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nne { jsonparse } { debug-info } {
(key) ~ \str_use:N \l__jsonparse_object_array_key_tl : \iow_newline:
\iow_char:N \ \iow_char:N \ (arr) ~ \str_use:N \l__jsonparse_object_array_val_tl
- }
- }
+ }
+ }
\group_end:
% array end
\bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nnn { jsonparse } { debug-info } {
- (arr ~ end)
- }
+ (arr ~ end)
+ }
}
\tl_set:Nn \l__jsonparse_remainder_tl {#1}
\__jsonparse_parse_remainder:
}
-\cs_new:Npn \__jsonparse_parse_string_key:w " #1 " #2 \q_stop {
+\cs_new_protected:Npn \__jsonparse_parse_string_key:w " #1 " #2 \q_stop {
\__jsonparse_array_key_set:
\tl_set:Ne \l__jsonparse_remainder_tl { \tl_trim_spaces:n {#2} }
% key or string?
\tl_if_head_eq_charcode:oNTF { \l__jsonparse_remainder_tl } : {
- \tl_remove_once:NV \l__jsonparse_remainder_tl \c_colon_str
+ \tl_remove_once:NV \l__jsonparse_remainder_tl \c_colon_str
\tl_set:Ne \l__jsonparse_key_tl { \l__jsonparse_prefix_tl #1 }
} {
\tl_set:Nn \l__jsonparse_val_tl {#1}
- \prop_gput:Nee \g_jsonparse_entries_prop
+ \prop_gput:Nee \g_jsonparse_entries_prop
{ \l__jsonparse_key_tl } { \l__jsonparse_val_tl }
% string
\bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nne { jsonparse } { debug-info } {
(key) ~ \str_use:N \l__jsonparse_key_tl : \iow_newline:
\iow_char:N \ \iow_char:N \ (str) ~ \str_use:N \l__jsonparse_val_tl
- }
+ }
}
}
\__jsonparse_parse_remainder:
}
-\cs_new:Npn \__jsonparse_parse_other:w #1 \q_stop {
+\cs_new_protected:Npn \__jsonparse_parse_other:w #1 \q_stop {
\__jsonparse_array_key_set:
\tl_set:Nn \l__jsonparse_remainder_tl {#1}
\tl_set:Nn \l__jsonparse_temp_tl { #1 , }
@@ -488,77 +765,90 @@
\__jsonparse_parse_other_aux:w \l__jsonparse_temp_tl \q_stop
}
-\cs_new:Npn \__jsonparse_parse_other_aux:w #1 , #2 \q_stop {
+\cs_new_protected:Npn \__jsonparse_parse_other_aux:w #1 , #2 \q_stop {
\tl_set:Ne \l__jsonparse_temp_tl { \tl_trim_spaces:n {#1} }
\cs_if_exist_use:cF { __jsonparse_parse_ \str_casefold:o { \l__jsonparse_temp_tl } : } {
- \fp_if_nan:nTF {#1} {
- % nan
- \msg_error:nnoo { jsonparse } { parsing-error }
- { \l__jsonparse_key_tl } {#1}
- } {
+ \bool_if:NTF \l__jsonparse_check_num_bool {
+ \jsonparse_if_num:nTF {#1} {
+ \tl_set:Nn \l__jsonparse_val_tl {#1}
+ \prop_gput:Nee \g_jsonparse_entries_prop
+ { \l__jsonparse_key_tl } { \l__jsonparse_val_tl }
+ % number
+ \bool_if:NT \l__jsonparse_debug_mode_bool {
+ \msg_log:nne { jsonparse } { debug-info } {
+ (key) ~ \str_use:N \l__jsonparse_key_tl : \iow_newline:
+ \iow_char:N \ \iow_char:N \ (num) ~ \str_use:N \l__jsonparse_val_tl
+ }
+ }
+ } {
+ % not a valid JSON number
+ \msg_error:nnoo { jsonparse } { parsing-error }
+ { \l__jsonparse_key_tl } {#1}
+ }
+ } {
\tl_set:Nn \l__jsonparse_val_tl {#1}
- \prop_gput:Nee \g_jsonparse_entries_prop
+ \prop_gput:Nee \g_jsonparse_entries_prop
{ \l__jsonparse_key_tl } { \l__jsonparse_val_tl }
% number
\bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nne { jsonparse } { debug-info } {
(key) ~ \str_use:N \l__jsonparse_key_tl : \iow_newline:
\iow_char:N \ \iow_char:N \ (num) ~ \str_use:N \l__jsonparse_val_tl
- }
+ }
}
}
}
\tl_set:Ne \l__jsonparse_remainder_tl { \tl_trim_spaces:e { \l__jsonparse_remainder_tl } }
- \tl_set:Ne \l__jsonparse_remainder_tl {
- \tl_range:Nen \l__jsonparse_remainder_tl {
+ \tl_set:Ne \l__jsonparse_remainder_tl {
+ \tl_range:Nen \l__jsonparse_remainder_tl {
\int_eval:n {
- \tl_count:n {#1} + 1
+ \tl_count:n {#1} + 1
}
} { -1 }
}
\__jsonparse_parse_remainder:
}
-\cs_new:Npn \__jsonparse_parse_true: {
- \tl_set_eq:NN \l__jsonparse_val_tl \l__jsonparse_true_str
- \prop_gput:Nee \g_jsonparse_entries_prop
+\cs_new_protected:Npn \__jsonparse_parse_true: {
+ \tl_set_eq:NN \l__jsonparse_val_tl \l__jsonparse_true_str
+ \prop_gput:Nee \g_jsonparse_entries_prop
{ \l__jsonparse_key_tl } { \l__jsonparse_val_tl }
% true
\bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nne { jsonparse } { debug-info } {
(key) ~ \str_use:N \l__jsonparse_key_tl : \iow_newline:
\iow_char:N \ \iow_char:N \ (tru) ~ \str_use:N \l__jsonparse_val_tl
- }
+ }
}
}
-\cs_new:Npn \__jsonparse_parse_false: {
- \tl_set_eq:NN \l__jsonparse_val_tl \l__jsonparse_false_str
- \prop_gput:Nee \g_jsonparse_entries_prop
+\cs_new_protected:Npn \__jsonparse_parse_false: {
+ \tl_set_eq:NN \l__jsonparse_val_tl \l__jsonparse_false_str
+ \prop_gput:Nee \g_jsonparse_entries_prop
{ \l__jsonparse_key_tl } { \l__jsonparse_val_tl }
% false
\bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nne { jsonparse } { debug-info } {
(key) ~ \str_use:N \l__jsonparse_key_tl : \iow_newline:
\iow_char:N \ \iow_char:N \ (fal) ~ \str_use:N \l__jsonparse_val_tl
- }
+ }
}
}
-\cs_new:Npn \__jsonparse_parse_null: {
+\cs_new_protected:Npn \__jsonparse_parse_null: {
\tl_set_eq:NN \l__jsonparse_val_tl \l__jsonparse_null_str
- \prop_gput:Nee \g_jsonparse_entries_prop
+ \prop_gput:Nee \g_jsonparse_entries_prop
{ \l__jsonparse_key_tl } { \l__jsonparse_val_tl }
% null
\bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nne { jsonparse } { debug-info } {
(key) ~ \str_use:N \l__jsonparse_key_tl : \iow_newline:
\iow_char:N \ \iow_char:N \ (nul) ~ \str_use:N \l__jsonparse_val_tl
- }
+ }
}
}
-\cs_new:Npn \__jsonparse_parse_remainder: {
+\cs_new_protected:Npn \__jsonparse_parse_remainder: {
\tl_set:Ne \l__jsonparse_remainder_tl { \tl_trim_spaces:e { \l__jsonparse_remainder_tl } }
\tl_if_head_eq_charcode:oNT { \l__jsonparse_remainder_tl } , {
\tl_remove_once:Nn \l__jsonparse_remainder_tl { , }
@@ -568,35 +858,70 @@
}
}
+\cs_new_protected:Npn \__jsonparse_filter:nn #1#2 {
+ \str_case_e:en {
+ \tl_range:nne {#1} { 1 } { \int_eval:n {
+ \tl_count:o { \l__jsonparse_filter_key_str } + 1
+ } }
+ } {
+ { \l__jsonparse_filter_key_str \l__jsonparse_child_sep_str } {
+ \prop_put:Nen \l__jsonparse_temp_prop
+ { \tl_range:nen {#1} { \int_eval:n {
+ \tl_count:o { \l__jsonparse_filter_key_str } + 2
+ } } { -1 } } {#2}
+ }
+ { \l__jsonparse_filter_key_str \l__jsonparse_array_sep_left_str } {
+ \prop_put:Nen \l__jsonparse_temp_prop
+ { \tl_range:nen {#1} { \int_eval:n {
+ \tl_count:o { \l__jsonparse_filter_key_str } + 1
+ } } { -1 } } {#2}
+ }
+ }
+}
+
+\cs_new_protected:Npn \__jsonparse_warning_undefined_prop:N #1 {
+ \prop_if_exist:NF #1 {
+ \msg_error:nnn { jsonparse } { prop-undefined }
+ {#1}
+ }
+}
+
\cs_new_protected:Npn \jsonparse_filter:Nn #1#2 {
\prop_clear:N \l__jsonparse_temp_prop
- \prop_map_inline:Nn #1 {
- \str_case_e:en {
- \tl_range:nne {##1} { 1 } { \int_eval:n { \tl_count:n {#2} + 1 } }
- } {
- { #2 \l__jsonparse_child_sep_str } {
- \prop_put:Nen \l__jsonparse_temp_prop
- { \tl_range:nen {##1} { \int_eval:n { \tl_count:n {#2} + 2 } } { -1 } } {##2}
- }
- { #2 \l__jsonparse_array_sep_left_str } {
- \prop_put:Nen \l__jsonparse_temp_prop
- { \tl_range:nen {##1} { \int_eval:n { \tl_count:n {#2} + 1 } } { -1 } } {##2}
- }
- }
+ \str_set:Ne \l__jsonparse_filter_key_str {#2}
+ \str_if_eq:NNTF \l__jsonparse_filter_key_str \l__jsonparse_child_sep_str {
+ \prop_set_eq:NN \l__jsonparse_temp_prop #1
+ \prop_remove:Ne \l__jsonparse_temp_prop { \l__jsonparse_child_sep_str }
+ } {
+ \prop_map_function:NN #1 \__jsonparse_filter:nn
}
\prop_set_eq:NN #1 \l__jsonparse_temp_prop
}
+\NewDocumentCommand { \JSONParseFilter } { m m m } {
+ \__jsonparse_warning_undefined_prop:N #2
+ \group_begin:
+ \tl_set_eq:NN \l__jsonparse_temp_tl #2
+ \jsonparse_filter:Nn \l__jsonparse_temp_tl {#3}
+ \exp_last_unbraced:Nf
+ \group_end:
+ \tl_set:NV #1 \l__jsonparse_temp_tl
+}
+
% ===
\NewDocumentCommand { \JSONParsePut } { m m +v } {
\prop_if_exist:NF #1 {
- \prop_new:N #1
- }
+ \bool_if:NTF \l__jsonparse_compat_bool {
+ \prop_new:N #1
+ } {
+ \prop_new_linked:N #1
+ }
+ }
\prop_gput:Nnn #1 {#2} {#3}
}
-\cs_new:Npn \__jsonparse_externalize:Nn #1#2 {
+\cs_new_protected:Npn \__jsonparse_externalize:Nn #1#2 {
\file_if_exist:eTF {#2} {
\msg_error:nne { jsonparse } { file-exists }
{#2}
@@ -615,18 +940,18 @@
% ===
-\cs_new:Npn \__json_nested_construct_cs:Nnn #1 #2 #3 {
+\cs_new_protected:Npn \__jsonparse_nested_construct_cs:Nnn #1#2#3 {
\cs_set:Npn #1 #2 ##1 #3 #2 ##2 #3 {
\prop_item:ce {##1} {##2}
}
}
-\cs_generate_variant:Nn \__json_nested_construct_cs:Nnn { Noo }
+\cs_generate_variant:Nn \__jsonparse_nested_construct_cs:Nnn { Noo }
\NewDocumentCommand { \JSONParse } { O{} m +v } {
\group_begin:
\str_set:Ne \l_jsonparse_current_prop_str { \cs_to_str:N #2 }
\keys_set_known:nnN { jsonparse / global } {#1} \l__jsonparse_unused_keys_clist
- \keys_set_known:noN { jsonparse / parse } { \l__jsonparse_unused_keys_clist } \l__jsonparse_unused_keys_clist
+ \keys_set_known:noN { jsonparse / parse } { \l__jsonparse_unused_keys_clist } \l__jsonparse_unused_keys_clist
\__jsonparse_warning_unused_keys:
\bool_set_false:N \l__jsonparse_externalize_load_bool
\bool_if:NT \l__jsonparse_externalize_bool {
@@ -639,7 +964,11 @@
{ \l__jsonparse_externalize_file_name_tl .jsonparse }
\file_input:e { \l__jsonparse_externalize_file_name_tl .jsonparse }
} {
- \prop_new:N #2
+ \bool_if:NTF \l__jsonparse_compat_bool {
+ \prop_new:N #2
+ } {
+ \prop_new_linked:N #2
+ }
\tl_gclear:N \g__jsonparse_json_tl
\group_begin:
\cs_set:Npn \" { \exp_not:N \" }
@@ -651,10 +980,10 @@
\cs_set:Npn \r { \exp_not:N \r }
\cs_set:Npn \t { \exp_not:N \t }
\cs_set:Npn \u { \exp_not:N \u }
- \__json_nested_construct_cs:Noo \x \c_left_brace_str \c_right_brace_str
+ \__jsonparse_nested_construct_cs:Noo \x \c_left_brace_str \c_right_brace_str
\tl_set:Nn \obeyedline { ~ }
- \tl_gset_rescan:Nne \g__jsonparse_json_tl { \cctab_select:N \c__jsonparse_json_escape_cctab } {#3}
- \exp_args:NNe \jsonparse_parse_to_prop:Nn #2 { \g__jsonparse_json_tl }
+ \tl_gset_rescan:Nne \g__jsonparse_json_tl { \cctab_select:N \c__jsonparse_json_escape_cctab } {#3}
+ \exp_args:NNe \jsonparse_parse_to_prop:Nn #2 { \g__jsonparse_json_tl }
\group_end:
\bool_if:NT \l__jsonparse_externalize_bool {
\__jsonparse_externalize:Nn #2 { \l__jsonparse_externalize_file_name_tl .jsonparse }
@@ -671,8 +1000,8 @@
\group_begin:
\str_set:Ne \l_jsonparse_current_prop_str { \cs_to_str:N #2 }
\keys_set_known:nnN { jsonparse / global } {#1} \l__jsonparse_unused_keys_clist
- \keys_set_known:noN { jsonparse / parse } { \l__jsonparse_unused_keys_clist } \l__jsonparse_unused_keys_clist
- \__jsonparse_warning_unused_keys:
+ \keys_set_known:noN { jsonparse / parse } { \l__jsonparse_unused_keys_clist } \l__jsonparse_unused_keys_clist
+ \__jsonparse_warning_unused_keys:
\bool_set_false:N \l__jsonparse_externalize_load_bool
\bool_if:NT \l__jsonparse_externalize_bool {
\file_if_exist:eT { \l__jsonparse_externalize_file_name_tl .jsonparse } {
@@ -684,7 +1013,11 @@
{ \l__jsonparse_externalize_file_name_tl .jsonparse }
\file_input:e { \l__jsonparse_externalize_file_name_tl .jsonparse }
} {
- \prop_new:N #2
+ \bool_if:NTF \l__jsonparse_compat_bool {
+ \prop_new:N #2
+ } {
+ \prop_new_linked:N #2
+ }
\tl_gclear:N \g__jsonparse_json_tl
\group_begin:
\cs_set:Npn \" { \exp_not:N \" }
@@ -696,9 +1029,9 @@
\cs_set:Npn \r { \exp_not:N \r }
\cs_set:Npn \t { \exp_not:N \t }
\cs_set:Npn \u { \exp_not:N \u }
- \cs_set:Npn \x [ ##1 ] [ ##2 ] { \prop_item:ce {##1} {##2} }
- \file_get:nnN {#3} { \cctab_select:N \c__jsonparse_json_escape_cctab } \g__jsonparse_json_tl
- \exp_args:NNe \jsonparse_parse_to_prop:Nn #2 { \g__jsonparse_json_tl }
+ \file_get:nnN {#3} { \cctab_select:N \c__jsonparse_json_escape_cctab } \l__jsonparse_externalize_file_data_tl
+ \tl_gset_eq:NN \g__jsonparse_json_tl \l__jsonparse_externalize_file_data_tl
+ \exp_args:NNe \jsonparse_parse_to_prop:Nn #2 { \g__jsonparse_json_tl }
\group_end:
\bool_if:NT \l__jsonparse_externalize_bool {
\__jsonparse_externalize:Nn #2 { \l__jsonparse_externalize_file_name_tl .jsonparse }
@@ -707,158 +1040,433 @@
\group_end:
}
-\NewExpandableDocumentCommand { \JSONParseExpandableValue } { m m } {
- \prop_item:Ne #1 {#2}
+\cs_new_eq:NN \__jsonparse_tex_quote: \"
+\cs_new_eq:NN \__jsonparse_tex_backslash: \\
+
+\prg_new_conditional:Npnn \jsonparse_unicode_if_high_surrogate:n #1 { p , T , F , TF } {
+ \int_compare:nNnTF {#1} > { "D7FF } {
+ \int_compare:nNnTF {#1} < { "DC00 } {
+ \prg_return_true:
+ } {
+ \prg_return_false:
+ }
+ } {
+ \prg_return_false:
+ }
+}
+
+\prg_new_conditional:Npnn \jsonparse_unicode_if_low_surrogate:n #1 { p , T , F , TF } {
+ \int_compare:nNnTF {#1} > { "DBFF } {
+ \int_compare:nNnTF {#1} < { "E000 } {
+ \prg_return_true:
+ } {
+ \prg_return_false:
+ }
+ } {
+ \prg_return_false:
+ }
}
-\cs_set_eq:NN \__jsonparse_tex_quote \"
-\cs_set_eq:NN \__jsonparse_tex_backslash \\
+\cs_new:Npn \jsonparse_unicode_convert_surrogate_pair:nn #1#2 {
+ \int_eval:n { ( #1 - "D800 ) * "0400 + ( #2 - "DC00 ) + "10000 }
+}
-\cs_new:Npn \__jsonparse_rescan:n #1 {
- \group_begin:
- \cs_set:Npn \" { " }
- \cs_set:Npn \/ { / }
- \cs_set:Npn \\ { \c_backslash_str }
- \cs_set:Npn \b { \l__jsonparse_backspace_str }
- \cs_set:Npn \f { \l__jsonparse_formfeed_str }
- \cs_set:Npn \n { \l__jsonparse_linefeed_str }
- \cs_set:Npn \r { \l__jsonparse_carriage_return_str }
- \cs_set:Npn \t { \l__jsonparse_horizontal_tab_str }
- \cs_set:Npn \u { \char" }
- \tl_set:Ne \l__jsonparse_temp_tl {#1}
- \cs_set_eq:NN \" \__jsonparse_tex_quote
- \cs_set_eq:NN \\ \__jsonparse_tex_backslash
- \bool_if:NT \l__jsonparse_escape_number_sign_bool {
- \tl_replace_all:Noe \l__jsonparse_temp_tl { \c_hash_str } { \c_backslash_str \c_hash_str }
- }
- \bool_if:NT \l__jsonparse_escape_dollar_sign_bool {
- \tl_replace_all:Noe \l__jsonparse_temp_tl { \c_dollar_str } { \c_backslash_str \c_dollar_str }
- }
- \bool_if:NT \l__jsonparse_escape_percent_sign_bool {
- \tl_replace_all:Noe \l__jsonparse_temp_tl { \c_percent_str } { \c_backslash_str \c_percent_str }
- }
- \bool_if:NT \l__jsonparse_escape_ampersand_bool {
- \tl_replace_all:Noe \l__jsonparse_temp_tl { \c_ampersand_str } { \c_backslash_str \c_ampersand_str }
- }
- \bool_if:NT \l__jsonparse_escape_circumflex_accent_bool {
- \tl_replace_all:Non \l__jsonparse_temp_tl { \c_circumflex_str } { \textasciicircum }
- }
- \bool_if:NT \l__jsonparse_escape_low_line_bool {
- \tl_replace_all:Noe \l__jsonparse_temp_tl { \c_underscore_str } { \c_backslash_str \c_underscore_str }
- }
- \bool_if:NT \l__jsonparse_escape_tilde_bool {
- \tl_replace_all:Non \l__jsonparse_temp_tl { \c_tilde_str } { \textasciitilde }
+\cs_new:Npn \__jsonparse_unicode_char:NNNNN #1#2#3#4#5 {
+ \__jsonparse_unicode_char_aux:nNNNN { } #1#2#3#4
+ \cs_if_eq:NNTF #5 \u {
+ \__jsonparse_unicode_char_aux:nNNNN { " #1#2#3#4 }
+ } {
+ #5
+ }
+}
+
+\cs_new:Npn \__jsonparse_unicode_char_aux:nNNNN #1#2#3#4#5 {
+ \tl_if_empty:nTF {#1} {
+ \exp_args:Ne \jsonparse_unicode_if_high_surrogate:nF { " \str_uppercase:n {#2#3#4#5} } {
+ \exp_args:Ne \codepoint_generate:nn { " \str_uppercase:n {#2#3#4#5} } { 12 }
+ }
+ } {
+ \exp_args:Ne \jsonparse_unicode_if_low_surrogate:nTF { " \str_uppercase:n {#2#3#4#5} } {
+ \codepoint_generate:nn {
+ \exp_args:Nne \jsonparse_unicode_convert_surrogate_pair:nn {#1} { " \str_uppercase:n {#2#3#4#5} }
+ } { 12 }
+ } {
+ \exp_args:Ne \codepoint_generate:nn { " \str_uppercase:n {#2#3#4#5} } { 12 }
}
+ }
+}
+
+\cs_new_protected:Npn \__jsonparse_rescan_setup:Nn #1#2 {
+ \cs_set:Npn \" { " }
+ \cs_set:Npn \/ { / }
+ \cs_set:Npn \\ { \c_backslash_str }
+ \cs_set:Npn \b { \l__jsonparse_backspace_str }
+ \cs_set:Npn \f { \l__jsonparse_formfeed_str }
+ \cs_set:Npn \n { \l__jsonparse_linefeed_str }
+ \cs_set:Npn \r { \l__jsonparse_carriage_return_str }
+ \cs_set:Npn \t { \l__jsonparse_horizontal_tab_str }
+ \cs_set_eq:NN \u \__jsonparse_unicode_char:NNNNN
+ \tl_set:Ne #1 {#2}
+ \cs_set_eq:NN \" \__jsonparse_tex_quote:
+ \cs_set_eq:NN \\ \__jsonparse_tex_backslash:
+ \bool_if:NT \l__jsonparse_escape_number_sign_bool {
+ \tl_replace_all:Noe #1 { \c_hash_str } { \c_backslash_str \c_hash_str }
+ }
+ \bool_if:NT \l__jsonparse_escape_dollar_sign_bool {
+ \tl_replace_all:Noe #1 { \c_dollar_str } { \c_backslash_str \c_dollar_str }
+ }
+ \bool_if:NT \l__jsonparse_escape_percent_sign_bool {
+ \tl_replace_all:Noe #1 { \c_percent_str } { \c_backslash_str \c_percent_str }
+ }
+ \bool_if:NT \l__jsonparse_escape_ampersand_bool {
+ \tl_replace_all:Noe #1 { \c_ampersand_str } { \c_backslash_str \c_ampersand_str }
+ }
+ \bool_if:NT \l__jsonparse_escape_circumflex_accent_bool {
+ \tl_replace_all:Non #1 { \c_circumflex_str } { \codepoint_generate:nn { "5E } { 12 } }
+ }
+ \bool_if:NT \l__jsonparse_escape_low_line_bool {
+ \tl_replace_all:Noe #1 { \c_underscore_str } { \c_backslash_str \c_underscore_str }
+ }
+ \bool_if:NT \l__jsonparse_escape_tilde_bool {
+ \tl_replace_all:Non #1 { \c_tilde_str } { \codepoint_generate:nn { "7E } { 12 } }
+ }
+}
+
+\cs_new_protected:Npn \__jsonparse_rescan:n #1 {
+ \group_begin:
+ \__jsonparse_rescan_setup:Nn \l__jsonparse_temp_tl {#1}
\tl_rescan:no { } { \l__jsonparse_temp_tl }
\group_end:
}
+\cs_new_protected:Npn \__jsonparse_gset_rescan:Nn #1#2 {
+ \group_begin:
+ \__jsonparse_rescan_setup:Nn \l__jsonparse_temp_tl {#2}
+ \tl_gset_rescan:Nno #1 { } { \l__jsonparse_temp_tl }
+ \group_end:
+}
+\cs_generate_variant:Nn \__jsonparse_gset_rescan:Nn { Ne }
+
\NewDocumentCommand { \JSONParseValue } { O{} m m } {
+ \__jsonparse_warning_undefined_prop:N #2
\group_begin:
\keys_set_known:nn { jsonparse / typeset } {#1} \l__jsonparse_unused_keys_clist
\__jsonparse_warning_unused_keys:
\bool_if:NTF \l__jsonparse_rescan_bool {
- \exp_args:Ne \__jsonparse_rescan:n { \prop_item:Ne #2 {#3} }
+ \exp_args:Ne \__jsonparse_rescan:n { \prop_item:Ne #2 {#3} }
} {
\prop_item:Ne #2 {#3}
}
\group_end:
}
+\NewExpandableDocumentCommand { \JSONParseExpandableValue } { m m } {
+ \prop_item:Ne #1 {#2}
+}
+
+\NewDocumentCommand { \JSONParseSetValue } { m m m } {
+ \__jsonparse_warning_undefined_prop:N #2
+ \tl_if_exist:NF #1 {
+ \tl_new:N #1
+ }
+ \tl_set:Ne #1 { \prop_item:Ne #2 {#3} }
+}
+
+\NewDocumentCommand { \JSONParseSetRescanValue } { m m m } {
+ \__jsonparse_warning_undefined_prop:N #2
+ \tl_if_exist:NF #1 {
+ \tl_new:N #1
+ }
+ \__jsonparse_gset_rescan:Ne #1 { \prop_item:Ne #2 {#3} }
+}
+
+\cs_new_protected:Npn \__jsonparse_parse_keys:nn #1#2 {
+ \tl_if_in:nVF {#1} \l__jsonparse_child_sep_str {
+ \bool_if:NTF \l__jsonparse_prop_map_first_bool {
+ \bool_set_false:N \l__jsonparse_prop_map_first_bool
+ } {
+ \tl_put_right:Nn \l__jsonparse_keys_array_tl { , }
+ }
+ \tl_put_right:Nn \l__jsonparse_keys_array_tl { " #1 " }
+ }
+}
+
+\cs_new_protected:Npn \jsonparse_parse_keys:NN #1#2 {
+ \tl_set:Nn \l__jsonparse_keys_array_tl { [ }
+ \prop_map_function:NN #1 \__jsonparse_parse_keys:nn
+ \tl_put_right:Nn \l__jsonparse_keys_array_tl { ] }
+ \tl_set_eq:NN #2 \l__jsonparse_keys_array_tl
+}
+
\NewDocumentCommand { \JSONParseKeys } { m m } {
- \tl_if_exist:NF #2 {
- \tl_new:N #2
+ \__jsonparse_warning_undefined_prop:N #1
+ \group_begin:
+ \tl_set_eq:NN \l__jsonparse_temp_tl #1
+ \jsonparse_filter:Nn \l__jsonparse_temp_tl {#2}
+ \bool_set_true:N \l__jsonparse_prop_map_first_bool
+ \jsonparse_parse_keys:NN \l__jsonparse_temp_tl \l__jsonparse_keys_tl
+ \tl_use:N \l__jsonparse_keys_tl
+ \group_end:
+}
+
+\NewDocumentCommand { \JSONParseSetKeys } { m m m } {
+ \__jsonparse_warning_undefined_prop:N #2
+ \tl_if_exist:NF #1 {
+ \tl_new:N #1
}
- \bool_set_true:N \l__jsonparse_prop_map_first_bool
- \tl_set:Nn \l__jsonparse_temp_tl { [ }
- \prop_map_inline:Nn #1 {
- \tl_if_in:nVF {##1} \l__jsonparse_child_sep_str {
- \bool_if:NTF \l__jsonparse_prop_map_first_bool {
- \bool_set_false:N \l__jsonparse_prop_map_first_bool
+ \group_begin:
+ \tl_set_eq:NN \l__jsonparse_temp_tl #2
+ \jsonparse_filter:Nn \l__jsonparse_temp_tl {#3}
+ \bool_set_true:N \l__jsonparse_prop_map_first_bool
+ \jsonparse_parse_keys:NN \l__jsonparse_temp_tl \l__jsonparse_keys_tl
+ \exp_last_unbraced:Nf
+ \group_end:
+ \exp_args:NNe \jsonparse_parse_to_prop:Nn #1 { \l__jsonparse_keys_tl }
+}
+
+\cs_new:Npn \__jsonparse_get_array_index:w [ #1 ] #2 \q_stop {
+ #1
+}
+
+\cs_new_protected:Npn \__jsonparse_array_count:nn #1#2 {
+ \str_if_eq:eVF { \tl_head:n {#1} } \l__jsonparse_array_sep_left_str {
+ \msg_error:nnn { jsonparse } { not-array-item }
+ {#1}
+ }
+ \seq_if_in:NeF \l__jsonparse_array_count_last_seq {
+ \__jsonparse_get_array_index:w #1 \q_stop
+ } {
+ \int_incr:N \l__jsonparse_array_count_aux_int
+ \seq_put_right:Ne \l__jsonparse_array_count_last_seq {
+ \__jsonparse_get_array_index:w #1 \q_stop
+ }
+ }
+}
+
+\cs_new_protected:Npn \jsonparse_array_count:NN #1#2 {
+ \int_zero:N \l__jsonparse_array_count_aux_int
+ \seq_clear:N \l__jsonparse_array_count_last_seq
+ \prop_map_function:NN #1 \__jsonparse_array_count:nn
+ \int_set_eq:NN #2 \l__jsonparse_array_count_aux_int
+}
+
+\NewDocumentCommand { \JSONParseArrayCount } { m m } {
+ \__jsonparse_warning_undefined_prop:N #1
+ \group_begin:
+ \tl_set_eq:NN \l__jsonparse_temp_tl #1
+ \jsonparse_filter:Nn \l__jsonparse_temp_tl {#2}
+ \jsonparse_array_count:NN \l__jsonparse_temp_tl \l__jsonparse_array_count_int
+ \int_use:N \l__jsonparse_array_count_int
+ \group_end:
+}
+
+\NewDocumentCommand { \JSONParseSetArrayCount } { m m m } {
+ \__jsonparse_warning_undefined_prop:N #2
+ \tl_if_exist:NF #1 {
+ \tl_new:N #1
+ }
+ \group_begin:
+ \tl_set_eq:NN \l__jsonparse_temp_tl #2
+ \jsonparse_filter:Nn \l__jsonparse_temp_tl {#3}
+ \jsonparse_array_count:NN \l__jsonparse_temp_tl \l__jsonparse_array_count_int
+ \exp_last_unbraced:Nf
+ \group_end:
+ \tl_set:NV #1 \l__jsonparse_array_count_int
+}
+
+\cs_new_protected:Npn \__jsonparse_array_values:n #1 {
+ \bool_if:NTF \l__jsonparse_prop_map_first_bool {
+ \bool_set_false:N \l__jsonparse_prop_map_first_bool
+ } {
+ \l__jsonparse_array_values_insert_tl
+ }
+ \bool_if:NTF \l__jsonparse_rescan_bool {
+ \exp_args:Ne \__jsonparse_rescan:n {
+ \prop_item:Ne \l__jsonparse_temp_tl {
+ \l__jsonparse_array_sep_left_str
+ \bool_if:NTF \l__jsonparse_zero_based_bool {
+ \int_eval:n { #1 - 1 }
} {
- \tl_put_right:Nn \l__jsonparse_temp_tl { , }
+ #1
}
- \tl_put_right:Nn \l__jsonparse_temp_tl { " ##1 " }
+ \l__jsonparse_array_sep_right_str
+ \str_if_empty:NF \l__jsonparse_array_values_key_str {
+ \l__jsonparse_child_sep_str
+ \l__jsonparse_array_values_key_str
+ }
+ }
+ }
+ } {
+ \prop_item:Ne \l__jsonparse_temp_tl {
+ \l__jsonparse_array_sep_left_str
+ \bool_if:NTF \l__jsonparse_zero_based_bool {
+ \int_eval:n { #1 - 1 }
+ } {
+ #1
+ }
+ \l__jsonparse_array_sep_right_str
+ \str_if_empty:NF \l__jsonparse_array_values_key_str {
+ \l__jsonparse_child_sep_str
+ \l__jsonparse_array_values_key_str
}
}
- \tl_put_right:Nn \l__jsonparse_temp_tl { ] }
- \tl_set_eq:NN #2 \l__jsonparse_temp_tl
+ }
}
\NewDocumentCommand { \JSONParseArrayValues } { O{} m m O{} m } {
+ \__jsonparse_warning_undefined_prop:N #2
\group_begin:
\keys_set_known:nn { jsonparse / typeset } {#1} \l__jsonparse_unused_keys_clist
\__jsonparse_warning_unused_keys:
- \tl_set:Nn \l__jsonparse_temp_tl {#2}
+ \tl_set_eq:NN \l__jsonparse_temp_tl #2
\jsonparse_filter:Nn \l__jsonparse_temp_tl {#3}
+ \jsonparse_array_count:NN \l__jsonparse_temp_tl \l__jsonparse_array_count_int
+ \str_set:Ne \l__jsonparse_array_values_key_str {#4}
+ \tl_set:Nn \l__jsonparse_array_values_insert_tl {#5}
\bool_set_true:N \l__jsonparse_prop_map_first_bool
- \prop_map_inline:Nn \l__jsonparse_temp_tl {
- \str_if_eq:enT {
- \tl_range:nen {##1} { \int_eval:n { -1 * \tl_count:n {#4} } } { -1 }
- } {#4} {
- \bool_if:NTF \l__jsonparse_prop_map_first_bool {
- \bool_set_false:N \l__jsonparse_prop_map_first_bool
- } {
- #5
- }
- \bool_if:NTF \l__jsonparse_rescan_bool {
- \__jsonparse_rescan:n {##2}
- } {
- ##2
- }
- }
- }
+ \int_step_function:nN { \l__jsonparse_array_count_int }
+ \__jsonparse_array_values:n
\group_end:
}
-\cs_new:Npn \__jsonparse_get_array_index:w [ #1 ] #2 \q_stop {
- #1
+\tl_new:N \JSONParseArrayIndex
+\tl_new:N \JSONParseArrayKey
+\tl_new:N \JSONParseArrayValue
+
+\cs_new_protected:Npn \__jsonparse_array_values_map_keys:n #1 {
+ \int_incr:N \l__jsonparse_array_keys_index_int
+ \tl_set:Ne \l__jsonparse_array_keys_index_roman_tl {
+ \int_to_Roman:n { \l__jsonparse_array_keys_index_int }
+ }
+ \tl_gset:ce { JSONParseArrayKey \l__jsonparse_array_keys_index_roman_tl } {
+ \l__jsonparse_array_sep_left_str
+ \JSONParseArrayIndex
+ \l__jsonparse_array_sep_right_str
+ \l__jsonparse_child_sep_str
+ #1
+ }
+ \bool_if:NTF \l__jsonparse_rescan_bool {
+ \tl_gset:cn { JSONParseArrayValue \l__jsonparse_array_keys_index_roman_tl } {
+ \exp_args:Ne \__jsonparse_rescan:n {
+ \prop_item:Ne \l__jsonparse_temp_tl {
+ \l__jsonparse_array_sep_left_str
+ \JSONParseArrayIndex
+ \l__jsonparse_array_sep_right_str
+ \l__jsonparse_child_sep_str
+ #1
+ }
+ }
+ }
+ } {
+ \tl_gset:ce { JSONParseArrayValue \l__jsonparse_array_keys_index_roman_tl } {
+ \prop_item:Ne \l__jsonparse_temp_tl {
+ \l__jsonparse_array_sep_left_str
+ \JSONParseArrayIndex
+ \l__jsonparse_array_sep_right_str
+ \l__jsonparse_child_sep_str
+ #1
+ }
+ }
+ }
}
-\NewDocumentCommand { \JSONParseArrayCount } { m m } {
- \group_begin:
- \jsonparse_filter:Nn #1 {#2}
- \int_zero:N \l__jsonparse_array_count_int
- \int_set:Nn \l__jsonparse_array_count_last_int { -1 }
- \prop_map_inline:Nn #1 {
- \int_compare:nNnF {
- \__jsonparse_get_array_index:w ##1 \q_stop
- } = { \l__jsonparse_array_count_last_int } {
- \int_incr:N \l__jsonparse_array_count_int
+\cs_new_protected:Npn \__jsonparse_array_values_map:n #1 {
+ \bool_if:NTF \l__jsonparse_zero_based_bool {
+ \tl_gset:Nn \JSONParseArrayIndex { \int_eval:n { #1 - 1 } }
+ } {
+ \tl_gset:Nn \JSONParseArrayIndex {#1}
+ }
+ \clist_if_empty:NTF \l__jsonparse_array_map_keys_clist {
+ \tl_gset:Ne \JSONParseArrayKey {
+ \l__jsonparse_array_sep_left_str
+ \JSONParseArrayIndex
+ \l__jsonparse_array_sep_right_str
+ }
+ \bool_if:NTF \l__jsonparse_rescan_bool {
+ \tl_gset:Nn \JSONParseArrayValue {
+ \exp_args:Ne \__jsonparse_rescan:n {
+ \prop_item:Ne \l__jsonparse_temp_tl {
+ \l__jsonparse_array_sep_left_str
+ \JSONParseArrayIndex
+ \l__jsonparse_array_sep_right_str
+ }
+ }
}
- \int_set:Nn \l__jsonparse_array_count_last_int {
- \__jsonparse_get_array_index:w ##1 \q_stop
+ } {
+ \tl_gset:Ne \JSONParseArrayValue {
+ \prop_item:Ne \l__jsonparse_temp_tl {
+ \l__jsonparse_array_sep_left_str
+ \JSONParseArrayIndex
+ \l__jsonparse_array_sep_right_str
+ }
}
- }
- \int_use:N \l__jsonparse_array_count_int
- \group_end:
+ }
+ } {
+ \int_zero:N \l__jsonparse_array_keys_index_int
+ \clist_map_function:NN \l__jsonparse_array_map_keys_clist
+ \__jsonparse_array_values_map_keys:n
+ \tl_gset_eq:NN \JSONParseArrayKey \JSONParseArrayKeyI
+ \tl_gset_eq:NN \JSONParseArrayValue \JSONParseArrayValueI
+ }
+ \use:c { \l__jsonparse_array_map_function_str }
}
-\tl_new:N \JSONParseArrayIndex
-\tl_new:N \JSONParseArrayKey
-\tl_new:N \JSONParseArrayValue
+\cs_set_protected:Npn \__jsonparse_array_map_generate_cs:n #1 {
+ \int_incr:N \l__jsonparse_array_keys_index_int
+ \tl_set:Ne \l__jsonparse_array_keys_index_roman_tl {
+ \int_to_Roman:n { \l__jsonparse_array_keys_index_int }
+ }
+ \tl_if_exist:cF { JSONParseArrayKey \l__jsonparse_array_keys_index_roman_tl } {
+ \tl_new:c { JSONParseArrayKey \l__jsonparse_array_keys_index_roman_tl }
+ }
+ \tl_if_exist:cF { JSONParseArrayValue \l__jsonparse_array_keys_index_roman_tl } {
+ \tl_new:c { JSONParseArrayValue \l__jsonparse_array_keys_index_roman_tl }
+ }
+}
-\NewDocumentCommand { \JSONParseArrayValuesMap } { O{} m m O{} m } {
+\NewDocumentCommand { \JSONParseArrayValuesMap } { O{} m m O{} m O{} O{} } {
+ \__jsonparse_warning_undefined_prop:N #2
+ \cs_if_exist:cF {#5} {
+ \msg_error:nne { jsonparse } { cs-undefined }
+ { \c_backslash_str #5 }
+ }
\group_begin:
\keys_set_known:nn { jsonparse / typeset } {#1} \l__jsonparse_unused_keys_clist
\__jsonparse_warning_unused_keys:
- \jsonparse_filter:Nn #2 {#3}
- \prop_map_inline:Nn #2 {
- \str_if_eq:enT {
- \tl_range:nen {##1} { \int_eval:n { -1 * \tl_count:n {#4} } } { -1 }
- } {#4} {
- \int_incr:N \l__jsonparse_array_index_int
- \tl_set:Ne \JSONParseArrayIndex { \__jsonparse_get_array_index:w ##1 \q_stop }
- \tl_set:Nn \JSONParseArrayKey {##1}
- \bool_if:NTF \l__jsonparse_rescan_bool {
- \tl_set:Nn \JSONParseArrayValue { \exp_args:Ne \__jsonparse_rescan:n { \prop_item:Nn #2 {##1} } }
- } {
- \tl_set:Nn \JSONParseArrayValue { \prop_item:Nn #2 {##1} }
- }
- \use:c {#5}
- }
- }
+ \tl_set_eq:NN \l__jsonparse_temp_tl #2
+ \jsonparse_filter:Nn \l__jsonparse_temp_tl {#3}
+ \jsonparse_array_count:NN \l__jsonparse_temp_tl \l__jsonparse_array_count_int
+ \clist_set:Nn \l__jsonparse_array_map_keys_clist {#4}
+ \str_set:Nn \l__jsonparse_array_map_function_str {#5}
+ \clist_if_empty:NF \l__jsonparse_array_map_keys_clist {
+ \int_zero:N \l__jsonparse_array_keys_index_int
+ \clist_map_function:NN \l__jsonparse_array_map_keys_clist
+ \__jsonparse_array_map_generate_cs:n
+ }
+ #6
+ \int_step_function:nN { \l__jsonparse_array_count_int }
+ \__jsonparse_array_values_map:n
+ #7
+ \group_end:
+}
+
+\cs_new:Npn \__jsonparse_array_map_inline:n #1 { }
+
+\NewDocumentCommand { \JSONParseArrayMapInline } { m m +m } {
+ \__jsonparse_warning_undefined_prop:N #1
+ \cs_gset:Npn \__jsonparse_array_map_inline:n ##1 {#3}
+ \group_begin:
+ \tl_set_eq:NN \l__jsonparse_temp_tl #1
+ \jsonparse_filter:Nn \l__jsonparse_temp_tl {#2}
+ \jsonparse_array_count:NN \l__jsonparse_temp_tl \l__jsonparse_array_count_int
+ \bool_if:NT \l__jsonparse_zero_based_bool {
+ \int_decr:N \l__jsonparse_array_count_int
+ }
+ \exp_last_unbraced:Nf
\group_end:
+ \int_step_function:nVN {
+ \bool_if:NTF \l__jsonparse_zero_based_bool { 0 } { 1 }
+ } \l__jsonparse_array_count_int \__jsonparse_array_map_inline:n
}
-% EOF
+% ===
diff --git a/Master/texmf-dist/tex/latex/jupynotex/jupynotex.py b/Master/texmf-dist/tex/latex/jupynotex/jupynotex.py
index 036be088ce5..53f27dec913 100644
--- a/Master/texmf-dist/tex/latex/jupynotex/jupynotex.py
+++ b/Master/texmf-dist/tex/latex/jupynotex/jupynotex.py
@@ -1,64 +1,202 @@
-# Copyright 2020 Facundo Batista
+# Copyright 2020-2024 Facundo Batista
# All Rights Reserved
# Licensed under Apache 2.0
-"""USAGE: jupynote.py notebook.ipynb cells
-
- cells is a string with which cells to include, separate groups
- with comma, ranges with dash (with defaults to start and end.
-"""
+"""Convert a jupyter notebook into latex for inclusion in documents."""
+import argparse
import base64
import json
+import pathlib
+import re
+import subprocess
import sys
import tempfile
+import textwrap
import traceback
+# message to help people to report potential problems
+REPORT_MSG = """
+
+Please report the issue in
+https://github.com/facundobatista/jupynotex/issues/new
+including the latex log. Thanks!
+"""
+
+# basic verbatim start/end
+VERBATIM_BEGIN = [r"\begin{footnotesize}", r"\begin{verbatim}"]
+VERBATIM_END = [r"\end{verbatim}", r"\end{footnotesize}"]
+
+# highlighers for different languages (block beginning and ending)
+HIGHLIGHTERS = {
+ 'python': ([r'\begin{minted}[fontsize=\footnotesize]{python}'], [r'\end{minted}']),
+ None: (VERBATIM_BEGIN, VERBATIM_END),
+}
+
+# the different formats to be used when error or all ok
+FORMAT_ERROR = r"colback=red!5!white,colframe=red!75!"
+FORMAT_OK = (
+ r"coltitle=red!75!black, colbacktitle=black!10!white, "
+ r"halign title=right, fonttitle=\sffamily\mdseries\scshape\footnotesize")
+
+# a little mark to put in the continuation line(s) when text is wrapped
+WRAP_MARK = "↳"
+
+# the options available for command line
+CMDLINE_OPTION_NAMES = {
+ "output-text-limit": "The column limit for the output text of a cell",
+}
+
+
+def _validator_positive_int(value):
+ """Validate value is a positive integer."""
+ value = value.strip()
+ if not value:
+ return
-def _verbatimize(lines):
+ value = int(value)
+ if value <= 0:
+ raise ValueError("Value must be greater than zero.")
+ return value
+
+
+def _process_plain_text(lines, config_options=None):
"""Wrap a series of lines around a verbatim indication."""
- result = [r"\begin{verbatim}"]
+ if config_options is None:
+ config_options = {}
+
+ result = []
+ result.extend(VERBATIM_BEGIN)
for line in lines:
- result.append(line.rstrip())
- result.append(r"\end{verbatim}")
+ line = line.rstrip()
+
+ # clean color escape codes (\u001b plus \[Nm where N are one or more digits)
+ line = re.sub(r"\x1b\[[\d;]+m", "", line)
+
+ # split too long lines
+ limit = config_options.get("output-text-limit")
+ if limit and line:
+ firstline, *restlines = textwrap.wrap(line, limit)
+ lines = [firstline]
+ for line in restlines:
+ lines.append(f" {WRAP_MARK} {line}")
+ else:
+ lines = [line]
+
+ result.extend(lines)
+ result.extend(VERBATIM_END)
return result
-def _save_content(data):
- """Save the received b64encoded data to a temp file."""
- _, fname = tempfile.mkstemp(suffix='.png')
- with open(fname, 'wb') as fh:
- fh.write(base64.b64decode(data))
- return fname
+class ItemProcessor:
+ """Process each item according to its type with a (series of) function(s)."""
+
+ def __init__(self, cell_options, config_options):
+ self.cell_options = cell_options
+ self.config_options = config_options
+
+ def get_item_data(self, item):
+ """Extract item information using different processors."""
+
+ data = item['data']
+ for mimetype, *functions in self.PROCESSORS:
+ if mimetype in data:
+ content = data[mimetype]
+ break
+ else:
+ raise ValueError("Image type not supported: {}".format(data.keys()))
+
+ for func in functions:
+ content = func(self, content)
+
+ return content
+
+ def process_plain_text(self, lines):
+ """Process plain text."""
+ return _process_plain_text(lines, self.config_options)
+
+ def process_png(self, image_data):
+ """Process a PNG: just save the received b64encoded data to a temp file."""
+ _, fname = tempfile.mkstemp(suffix='.png')
+ with open(fname, 'wb') as fh:
+ fh.write(base64.b64decode(image_data))
+ return fname
+
+ def process_svg(self, image_data):
+ """Process a SVG: save the data, transform to PDF, and then use that."""
+ _, svg_fname = tempfile.mkstemp(suffix='.svg')
+ _, pdf_fname = tempfile.mkstemp(suffix='.pdf')
+ raw_svg = ''.join(image_data).encode('utf8')
+ with open(svg_fname, 'wb') as fh:
+ fh.write(raw_svg)
+
+ cmd = ['inkscape', '--export-text-to-path', '--export-pdf={}'.format(pdf_fname), svg_fname]
+ subprocess.run(cmd)
+
+ return pdf_fname
+
+ def include_graphics(self, fname):
+ """Wrap a filename in an includegraphics structure."""
+ fname_no_backslashes = fname.replace("\\", "/") # do not leave backslashes in Windows
+ width = self.cell_options.get("output-image-size", r"1\textwidth")
+ return r"\includegraphics[width={}]{{{}}}".format(width, fname_no_backslashes)
+
+ def listwrap(self, item):
+ """Wrap an item in a list for processors that return that single item."""
+ return [item]
+
+ # mimetype and list of functions to apply; order is important here as we want to
+ # prioritize getting some mimetypes over others when multiple are present
+ PROCESSORS = [
+ ('text/latex',),
+ ('image/svg+xml', process_svg, include_graphics, listwrap),
+ ('image/png', process_png, include_graphics, listwrap),
+ ('text/plain', process_plain_text),
+ ]
class Notebook:
"""The notebook converter to latex."""
- def __init__(self, path):
- with open(path, 'rt', encoding='utf8') as fh:
- nb_data = json.load(fh)
+ GLOBAL_CONFIGS = {
+ "output-text-limit": _validator_positive_int,
+ }
+
+ def __init__(self, notebook_path, config_options):
+ self.config_options = self._validate_config(config_options)
+ self.cell_options = {}
+ nb_data = json.loads(notebook_path.read_text())
- self._cells = nb_data['cells']
+ # get the languaje, to highlight
+ lang = nb_data['metadata']['language_info']['name']
+ self._highlight_delimiters = HIGHLIGHTERS.get(lang, HIGHLIGHTERS[None])
- def __len__(self):
- return len(self._cells)
+ # get all cells excluding markdown ones
+ self._cells = [x for x in nb_data['cells'] if x['cell_type'] != 'markdown']
+
+ def _validate_config(self, config):
+ """Validate received configuration."""
+ for key, value in list(config.items()):
+ validator = self.GLOBAL_CONFIGS[key]
+ new_value = validator(value)
+ config[key] = new_value
+ return config
def _proc_src(self, content):
"""Process the source of a cell."""
source = content['source']
result = []
if content['cell_type'] == 'code':
- result.extend(_verbatimize(source))
- elif content['cell_type'] == 'markdown':
- # XXX: maybe we could parse this?
- result.extend(_verbatimize(source))
+ begin, end = self._highlight_delimiters
+ result.extend(begin)
+ result.extend(line.rstrip() for line in source)
+ result.extend(end)
else:
raise ValueError(
"Cell type not supported when processing source: {!r}".format(
content['cell_type']))
- return '\n'.join(result) + '\n'
+ return '\n'.join(result)
def _proc_out(self, content):
"""Process the output of a cell."""
@@ -67,27 +205,30 @@ class Notebook:
return
result = []
+ processor = ItemProcessor(self.cell_options, self.config_options)
for item in outputs:
output_type = item['output_type']
- if output_type == 'execute_result':
- data = item['data']
- if 'image/png' in data:
- fname = _save_content(data['image/png'])
- result.append(r"\includegraphics{{{}}}".format(fname))
- elif 'text/latex' in data:
- result.extend(data["text/latex"])
- else:
- result.extend(_verbatimize(data["text/plain"]))
+ if output_type in ('execute_result', 'display_data'):
+ more_content = processor.get_item_data(item)
elif output_type == 'stream':
- result.extend(_verbatimize(x.rstrip() for x in item["text"]))
- elif output_type == 'display_data':
- data = item['data']
- fname = _save_content(data['image/png'])
- result.append(r"\includegraphics{{{}}}".format(fname))
+ more_content = processor.process_plain_text(item["text"])
+ elif output_type == 'error':
+ raw_traceback = item['traceback']
+ tback_lines = []
+ for raw_line in raw_traceback:
+ internal_lines = raw_line.split('\n')
+ for line in internal_lines:
+ line = re.sub(r"\x1b\[\d.*?m", "", line) # sanitize
+ if set(line) == {'-'}:
+ # ignore separator, as our graphical box already has one
+ continue
+ tback_lines.append(line)
+ more_content = processor.process_plain_text(tback_lines)
else:
raise ValueError("Output type not supported in item {!r}".format(item))
+ result.extend(more_content)
- return '\n'.join(result) + '\n'
+ return '\n'.join(result)
def get(self, cell_idx):
"""Return the content from a specific cell in the notebook.
@@ -99,58 +240,71 @@ class Notebook:
output = self._proc_out(content)
return source, output
+ def parse_cells(self, spec):
+ """Convert the cells spec to a range of ints."""
+ if not spec:
+ raise ValueError("Empty cells spec not allowed")
+
+ maxlen = len(self._cells)
+
+ cells = set()
+ options = {}
+ groups = [x.strip() for x in spec.split(',')]
+ valid_chars = set('0123456789-,')
+ for group in groups:
+ if '=' in group:
+ k, v = group.split("=", maxsplit=1)
+ options[k] = v
+ continue
-def _parse_cells(spec, maxlen):
- """Convert the cells spec to a range of ints."""
- if not spec:
- raise ValueError("Empty cells spec not allowed")
- if set(spec) - set('0123456789-,'):
- raise ValueError(
- "Found forbidden characters in cells definition (allowed digits, '-' and ',')")
-
- cells = set()
- groups = spec.split(',')
- for group in groups:
- if '-' in group:
- cfrom, cto = group.split('-')
- cfrom = 1 if cfrom == '' else int(cfrom)
- cto = maxlen if cto == '' else int(cto)
- if cfrom >= cto:
+ if set(group) - valid_chars:
raise ValueError(
- "Range 'from' need to be smaller than 'to' (got {!r})".format(group))
- cells.update(range(cfrom, cto + 1))
- else:
- cells.add(int(group))
- cells = sorted(cells)
+ "Found forbidden characters in cells definition (allowed digits, '-' and ',')")
+
+ if '-' in group:
+ cfrom, cto = group.split('-')
+ cfrom = 1 if cfrom == '' else int(cfrom)
+ cto = maxlen if cto == '' else int(cto)
+ if cfrom >= cto:
+ raise ValueError(
+ "Range 'from' need to be smaller than 'to' (got {!r})".format(group))
+ cells.update(range(cfrom, cto + 1))
+ else:
+ cells.add(int(group))
+ cells = sorted(cells)
- if any(x < 1 for x in cells):
- raise ValueError("Cells need to be >=1")
- if maxlen < cells[-1]:
- raise ValueError(
- "Notebook loaded of len {}, smaller than requested cells: {}".format(maxlen, cells))
+ if any(x < 1 for x in cells):
+ raise ValueError("Cells need to be >=1")
+ if maxlen < cells[-1]:
+ raise ValueError(
+ f"Notebook loaded of len {maxlen}, smaller than requested cells: {cells}")
- return cells
+ self.cell_options = options
+ return cells
-def main(notebook_path, cells_spec):
+def main(notebook_path, cells_spec, config_options):
"""Main entry point."""
- nb = Notebook(notebook_path)
- cells = _parse_cells(cells_spec, len(nb))
+ nb = Notebook(notebook_path, config_options)
+ cells = nb.parse_cells(cells_spec)
for cell in cells:
try:
src, out = nb.get(cell)
- except Exception:
+ except Exception as exc:
title = "ERROR when parsing cell {}".format(cell)
- print(
- r"\begin{{tcolorbox}}"
- r"[colback=red!5!white,colframe=red!75!,title={{{}}}]".format(title))
- tb = traceback.format_exc()
- print('\n'.join(_verbatimize(tb.split('\n'))))
+ print(r"\begin{{tcolorbox}}[{}, title={{{}}}]".format(FORMAT_ERROR, title))
+ print(exc)
+ _parts = _process_plain_text(REPORT_MSG.split('\n'))
+ print('\n'.join(_parts))
print(r"\end{tcolorbox}")
+
+ # send title and traceback to stderr, which will appear in compilation log
+ tb = traceback.format_exc()
+ print(tb, file=sys.stderr)
continue
- print(r"\begin{{tcolorbox}}[title=Cell {{{:02d}}}]".format(cell))
+ print(r"\begin{{tcolorbox}}[{}, title=Cell {{{:02d}}}]".format(FORMAT_OK, cell))
print(src)
if out:
print(r"\tcblower")
@@ -159,8 +313,19 @@ def main(notebook_path, cells_spec):
if __name__ == "__main__":
- if len(sys.argv) != 3:
- print(__doc__)
- exit()
+ parser = argparse.ArgumentParser()
+ parser.add_argument("notebook_path", type=pathlib.Path, help="The path to the notebook.")
+ parser.add_argument(
+ "cells_spec",
+ type=str,
+ help=(
+ "A string specifying which cells to include; use comma to separate groups, "
+ "dash for ranges (with defaults to start and end)"
+ )
+ )
+ for option, explanation in CMDLINE_OPTION_NAMES.items():
+ parser.add_argument(option, type=str, help=explanation)
+ args = parser.parse_args()
- main(*sys.argv[1:3])
+ config_options = {option: getattr(args, option) for option in CMDLINE_OPTION_NAMES}
+ main(args.notebook_path, args.cells_spec, config_options)
diff --git a/Master/texmf-dist/tex/latex/jupynotex/jupynotex.sty b/Master/texmf-dist/tex/latex/jupynotex/jupynotex.sty
index 205343d0974..b79f622af60 100644
--- a/Master/texmf-dist/tex/latex/jupynotex/jupynotex.sty
+++ b/Master/texmf-dist/tex/latex/jupynotex/jupynotex.sty
@@ -1,7 +1,21 @@
-\ProvidesPackage{jupynotex}[0.1]
+\ProvidesPackage{jupynotex}[1.0]
\usepackage{tcolorbox}
+\usepackage{pgfopts}
+
+\newcommand*\jupynotex@outputtextlimit@value{}
+
+
+\pgfkeys{
+ /jupynotex/.cd ,
+ output-text-limit/.store in=\jupynotex@outputtextlimit@value
+}
+
+\ProcessPgfPackageOptions{/jupynotex}
\newcommand{\jupynotex}[2][-]{
- \input|"python3 jupynotex.py #2 #1"
+ \input|"python3 jupynotex.py '#2' '#1' '\jupynotex@outputtextlimit@value'"
}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/latex/jwjournal/jwjournal.cls b/Master/texmf-dist/tex/latex/jwjournal/jwjournal.cls
index 3e84c935ba2..b71a35a5b65 100644
--- a/Master/texmf-dist/tex/latex/jwjournal/jwjournal.cls
+++ b/Master/texmf-dist/tex/latex/jwjournal/jwjournal.cls
@@ -12,7 +12,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplClass
{jwjournal}
- {2024/09/01} {}
+ {2024/11/05} {}
{JW's journal class}
\keys_define:nn { jwjournal }
@@ -603,7 +603,7 @@
marginparwidth=.75in,
footnotesep=2em plus 2pt minus 2pt,
}
- \hook_gput_code:nnn { begindocument } { jwjournal }
+ \hook_gput_code:nnn { begindocument/end } { jwjournal }
{
\setbox0=\vbox
\bgroup
@@ -632,7 +632,7 @@
marginparwidth=.75in,
footnotesep=2em plus 2pt minus 2pt,
}
- \hook_gput_code:nnn { begindocument } { jwjournal }
+ \hook_gput_code:nnn { begindocument/end } { jwjournal }
{
\begin { jwjournal }
}
diff --git a/Master/texmf-dist/tex/latex/kdpcover/kdpcover.cls b/Master/texmf-dist/tex/latex/kdpcover/kdpcover.cls
index 125fa6c0526..5ec4f4ac5e4 100644
--- a/Master/texmf-dist/tex/latex/kdpcover/kdpcover.cls
+++ b/Master/texmf-dist/tex/latex/kdpcover/kdpcover.cls
@@ -7,7 +7,7 @@
%% kdpcover.dtx (with options: `class')
%% (The MIT License)
%%
-%% Copyright (c) 2021-2022 Yegor Bugayenko
+%% Copyright (c) 2021-2024 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
@@ -31,7 +31,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{kdpcover}
-[2022.11.30 0.5.1 Cover for Kindle Direct Publishing books]
+[2025/01/02 0.6.0 Cover for Kindle Direct Publishing books]
@@ -58,35 +58,47 @@
\LoadClass{article}
\makeatletter
-\newcommand*\kdp@pages{100}
+\newcount\kdp@pages
+ \kdp@pages=100
\newlength\kdp@xsize
-\setlength\kdp@xsize{6in}
+ \setlength\kdp@xsize{6in}
\newlength\kdp@ysize
-\setlength\kdp@ysize{9in}
+ \setlength\kdp@ysize{9in}
\makeatother
\RequirePackage{iexec}
-\RequirePackage{xkeyval}
+\RequirePackage{pgfopts}
\makeatletter
-\DeclareOptionX{6x9}
- {\setlength\kdp@xsize{6in}\setlength\kdp@ysize{9in}}
-\DeclareOptionX{7x10}
- {\setlength\kdp@xsize{7in}\setlength\kdp@ysize{10in}}
-\DeclareOptionX{8x10}
- {\setlength\kdp@xsize{8in}\setlength\kdp@ysize{10in}}
-\DeclareOptionX{pages}
- {\renewcommand*\kdp@pages{#1}}
-\newif\ifkdp@barless
-\DeclareOptionX{barless}{\kdp@barlesstrue}
-\DeclareOptionX{pdf}{%
- \iexec[trace,quiet,stdout=kdpcover-pages-count.txt]
- {qpdf --show-npages #1 | tr -d '[[:space:]]' | \{ cat; echo \%; \}}%
- \newread\kdp@pagescount%
- \openin\kdp@pagescount=kdpcover-pages-count.txt
- \read\kdp@pagescount to \kdp@pages%
+\pgfkeys{
+ /kdp/.cd,
+ barless/.store in = \kdp@barless,
+ pdf/.code = {
+ \iexec[trace,quiet,stdout=kdpcover-pages-count.txt]
+ {qpdf --show-npages --no-warn #1 | tr -d '[[:space:]]'}
+ \openin1=kdpcover-pages-count.txt
+ \read1 to \temp
+ \closein1
+ \kdp@pages=\temp
+ },
+ 6x9/.code = {
+ \setlength\kdp@xsize{6in}
+ \setlength\kdp@ysize{9in}
+ },
+ 7x10/.code = {
+ \setlength\kdp@xsize{7in}
+ \setlength\kdp@ysize{10in}
+ },
+ 8x10/.code = {
+ \setlength\kdp@xsize{8in}
+ \setlength\kdp@ysize{10in}
+ },
+ pages/.code = {
+ \kdp@pages=#1
+ }
}
-\ProcessOptionsX\relax\makeatother
+\ProcessPgfPackageOptions{/kdp}
+\makeatother
\RequirePackage{anyfontsize}
\RequirePackage{tikz}
@@ -99,26 +111,33 @@
\setstretch{1.2}
\makeatletter
- \newlength\kdp@height
+\newlength\kdp@height
\setlength\kdp@height{0.125in + \kdp@ysize + 0.125in}
- \newlength\kdp@width
+\newlength\kdp@width
\setlength\kdp@width{
0.125in + \kdp@xsize
- + 0.0025in * \kdp@pages
- + \kdp@xsize + 0.125in}
+ + 0.125in + \kdp@xsize
+ + 0.0025in * \kdp@pages}
\makeatother
\RequirePackage{geometry}
\makeatletter
-\geometry{paperwidth=\kdp@width,paperheight=\kdp@height,
- left=0pt,right=0pt,top=0pt,bottom=0pt}
+\geometry{
+ paperwidth=\kdp@width,
+ paperheight=\kdp@height,
+ left=0pt,
+ right=0pt,
+ top=0pt,
+ bottom=0pt
+}
\makeatother
\RequirePackage[absolute]{textpos}
\TPGrid{16}{16}
-\makeatletter\newcommand\putSpine[2][kdpcover-signature]{%
- \ifkdp@barless\else
+\makeatletter
+\newcommand\putSpine[2][kdpcover-signature]{%
+ \ifdefined\kdp@barless\else%
\begin{textblock}{2.4}[0.5,0](8,0)%
\begin{tikzpicture}%
\node [rectangle, inner sep=0em, fill=black,
@@ -126,19 +145,20 @@
minimum height=16\TPVertModule] at (0,0) {};
\end{tikzpicture}%
\end{textblock}%
- \fi
+ \fi%
\begin{textblock}{1}[0.5,0](8,2)%
\begin{tikzpicture}%
\node [color=white, inner sep=0cm, outer sep=0cm,
rotate=270, minimum height=\TPHorizModule] at (0,0) {
- \Large #2
- };%
+ \Large #2%
+ };
\end{tikzpicture}%
\end{textblock}%
\begin{textblock}{2.4}[0.5,1](8,14)%
\centerline{\includegraphics[width=0.32in]{#1}}%
\end{textblock}%
-}\makeatother
+}
+\makeatother
\newcommand\putPicture[1]{%
\begin{textblock}{4}(10,2)%
@@ -148,54 +168,54 @@
\newcommand\putVolume[1]{%
\begin{textblock}{2}[1,1](15,14)%
- \raggedleft
- \includegraphics[height=0.4in]{kdpcover-vol-#1}
+ \raggedleft%
+ \includegraphics[height=0.4in]{kdpcover-vol-#1}%
\end{textblock}%
}
\newcommand\putPrice[1]{%
\begin{textblock}{4}[0,1](1,2)%
- \small #1
+ \small #1%
\end{textblock}%
}
\newcommand\putBack[1]{%
\begin{textblock}{5}[0,0](1,3)%
- \small #1
+ \small #1%
\end{textblock}%
}
\newcommand\putTitle[1]{%
\begin{textblock}{5}(10,9)%
- \fontsize{32}{32}\selectfont #1
+ \fontsize{32}{32}\selectfont #1%
\end{textblock}%
}
\newcommand\putAuthor[1]{%
\begin{textblock}{4}(10,10)%
- \large by #1
+ \large by #1%
\end{textblock}%
}
\newcommand\putTLDR[1]{%
\begin{textblock}{5}(10,11)%
- TL;DR #1
+ TL;DR #1%
\end{textblock}%
}
\newcommand\putVersion[1]{%
\begin{textblock}{4}[0,1](10,14)%
- #1
+ #1%
\IfFileExists{.git}
{\quad\iexec{git log -n 1 --pretty='format:\%ad' --date='format:\%e-\%b-\%Y'}}
- {}
+ {}%
\end{textblock}%
}
\newcommand\putCopyright[2]{%
\begin{textblock}{4}[0,1](1,14)%
- \small (c)
- #1 #2
+ \small (c)%
+ #1 #2%
\end{textblock}%
}
@@ -206,8 +226,6 @@
\setlength\parskip{0pt}%
\interfootnotelinepenalty=10000%
}
-
-
\endinput
%%
%% End of file `kdpcover.cls'.
diff --git a/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-IEEEtran-support.tex b/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-IEEEtran-support.tex
new file mode 100644
index 00000000000..503850bef7b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-IEEEtran-support.tex
@@ -0,0 +1,15 @@
+% Maintained by Matthew Bertucci, 2024-present
+% Please report all issues and feature requests at https://github.com/mbertucci47/keytheorems
+% This work is licensed under the LPPL version 1.3c or later: https://www.latex-project.org/lppl.txt
+\ProvidesExplFile{keythms-IEEEtran-support}{\@keythms@date}{\@keythms@version}
+ {keytheorems~support~for~the~IEEEtran~class}
+
+\keys_define:nn { keytheorems/listof }
+ {
+ indent .initial:n = 0pt,
+ numwidth .initial:n = 2.75em,
+ }
+
+% IEEEtran has it's own way of doing theorems that amsthm overwrites.
+% Not sure if we should attempt to copy its style.
+\file_input_stop: \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-amsart-support.tex b/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-amsart-support.tex
new file mode 100644
index 00000000000..71bef2420e3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-amsart-support.tex
@@ -0,0 +1,74 @@
+% Maintained by Matthew Bertucci, 2024-present
+% Please report all issues and feature requests at https://github.com/mbertucci47/keytheorems
+% This work is licensed under the LPPL version 1.3c or later: https://www.latex-project.org/lppl.txt
+\ProvidesExplFile{keythms-amsart-support}{\@keythms@date}{\@keythms@version}
+ {keytheorems~support~for~the~amsart~class}
+
+\__keythms_support_AMSshared_code:
+
+% redefine inherit-style=remark
+\tl_gset:Nn \g__keythms_thmstyle_remark_metakeys_tl
+ {
+ bodyfont = \normalfont,
+ headfont = \itshape,
+ }
+
+\bool_case:nF
+ {
+ { \__keythms_if_classloaded_p:n { acmart } }
+ {
+ \keytheoremset{overload} % since acmart predefines several theorems at begindocument
+ \prop_gput_from_keyval:Nn \g__keythms_thmstyle_defaultkeys_prop
+ {
+ bodyfont = \@acmplainbodyfont,
+ headfont = \@acmplainheadfont,
+ headindent = \@acmplainindent,
+ notefont = \@acmplainnotefont,
+ postheadspace = .5em,
+ }
+ \tl_new:N \g__keythms_thmstyle_acmplain_metakeys_tl
+ \tl_new:N \g__keythms_thmstyle_acmdefinition_metakeys_tl
+ \tl_gset:Nn \g__keythms_thmstyle_acmdefinition_metakeys_tl
+ {
+ bodyfont = \@acmdefinitionbodyfont,
+ headindent = \@acmdefinitionindent,
+ headfont = \@acmdefinitionheadfont,
+ notefont = \@acmdefinitionnotefont,
+ }
+ }
+ { \__keythms_if_classloaded_p:n { aomart } }
+ {
+ \prop_gput_from_keyval:Nn \g__keythms_thmstyle_defaultkeys_prop
+ {
+ bodyfont = \sishape,
+ headfont = \scshape,
+ headindent = \parindent,
+ notefont = \normalfont,
+ postheadspace = 0.5em,
+ spaceabove = 0.5\linespacing,
+ spacebelow = 0.5\linespacing,
+ }
+ \tl_gset:Nn \g__keythms_thmstyle_definition_metakeys_tl
+ {
+ bodyfont = \upshape,
+ headfont = \sishape,
+ headindent = \parindent,
+ notefont = \normalfont,
+ postheadspace = 0.5em,
+ spaceabove = 0.5\linespacing,
+ spacebelow = 0.5\linespacing,
+ }
+ \tl_gset:Nn \g__keythms_thmstyle_remark_metakeys_tl
+ {
+ bodyfont = \upshape,
+ headfont = \sishape,
+ headindent = \parindent,
+ notefont = \normalfont,
+ postheadspace = 0.5em,
+ spaceabove = 0.5\linespacing,
+ spacebelow = 0.5\linespacing,
+ }
+ }
+ }
+
+\file_input_stop: \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-amsbook-support.tex b/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-amsbook-support.tex
new file mode 100644
index 00000000000..dacc567bddb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-amsbook-support.tex
@@ -0,0 +1,18 @@
+% Maintained by Matthew Bertucci, 2024-present
+% Please report all issues and feature requests at https://github.com/mbertucci47/keytheorems
+% This work is licensed under the LPPL version 1.3c or later: https://www.latex-project.org/lppl.txt
+\ProvidesExplFile{keythms-amsbook-support}{\@keythms@date}{\@keythms@version}
+ {keytheorems~support~for~the~amsbook~class}
+
+\__keythms_support_AMSshared_code:
+
+\prop_gput_from_keyval:Nn \g__keythms_thmstyle_defaultkeys_prop
+ {
+ headfont = \scshape,
+ headindent = \parindent,
+ }
+
+% redefine inherit-style=remark
+\tl_gset:Nn \g__keythms_thmstyle_remark_metakeys_tl { bodyfont = \normalfont }
+
+\file_input_stop: \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-amsproc-support.tex b/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-amsproc-support.tex
new file mode 100644
index 00000000000..4c6105428bc
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-amsproc-support.tex
@@ -0,0 +1,18 @@
+% Maintained by Matthew Bertucci, 2024-present
+% Please report all issues and feature requests at https://github.com/mbertucci47/keytheorems
+% This work is licensed under the LPPL version 1.3c or later: https://www.latex-project.org/lppl.txt
+\ProvidesExplFile{keythms-amsproc-support}{\@keythms@date}{\@keythms@version}
+ {keytheorems~support~for~the~amsproc~class}
+
+\__keythms_support_AMSshared_code:
+
+\prop_gput_from_keyval:Nn \g__keythms_thmstyle_defaultkeys_prop
+ {
+ headfont = \scshape,
+ headindent = \parindent,
+ }
+
+% redefine inherit-style=remark
+\tl_gset:Nn \g__keythms_thmstyle_remark_metakeys_tl { bodyfont = \normalfont }
+
+\file_input_stop: \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-beamer-support.tex b/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-beamer-support.tex
new file mode 100644
index 00000000000..8aef1cab3fd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-beamer-support.tex
@@ -0,0 +1,395 @@
+% Maintained by Matthew Bertucci, 2024-present
+% Please report all issues and feature requests at https://github.com/mbertucci47/keytheorems
+% This work is licensed under the LPPL version 1.3c or later: https://www.latex-project.org/lppl.txt
+\ProvidesExplFile{keythms-beamer-support}{\@keythms@date}{\@keythms@version}
+ {keytheorems~support~for~the~beamer~class}
+
+% disable \listofkeytheorems, add warning
+\msg_new:nnn { keytheorems } { beamer-listof }
+ {
+ \protect\listofkeytheorems\space not~supported~with~beamer
+ }
+\RenewDocumentCommand \listofkeytheorems { +o }
+ {
+ \msg_warning:nn { keytheorems } { beamer-listof }
+ }
+
+% besides above, do nothing if noamsthm loaded
+\IfClassLoadedWithOptionsT{ beamer }{ noamsthm }{ \file_input_stop: }
+
+\tl_new:N \g__keythms_thmstyle_example_metakeys_tl
+\tl_gset:Nn \g__keythms_thmstyle_example_metakeys_tl
+ {
+ bodyfont = \normalfont,
+ headfont = \def\inserttheoremblockenv{exampleblock},
+ }
+
+\cs_set_protected:Npn \__keythms_thm_tcbcode:nn #1#2
+ { % #1 = name, #2 = tcolorbox keys
+ \__keythms_thm_tcbshared:nn { #1 } { #2 }
+ \tl_gput_left:cn { g__keythms_thm_preheadfromkeys_#1_tl }
+ {
+ \cs_set:Npn \inserttheoremblockenv { keythms_beamer_tcb }
+ }
+ }
+\cs_set_protected:Npn \__keythms_thm_tcbnotitlebarcode:nn #1#2
+ { % #1 = name, #2 = tcolorbox keys
+ \__keythms_thm_tcbshared:nn { #1 } { #2 }
+ \tl_gput_left:cn { g__keythms_thm_preheadfromkeys_#1_tl }
+ {
+ \cs_set:Npn \inserttheoremblockenv { keythms_beamer_tcbnotitlebar }
+ }
+ }
+\cs_set_protected:Npn \__keythms_thm_tcbshared:nn #1#2
+ {
+ \RequirePackage{tcolorbox}
+ \AddToHook{env/#1/begin}
+ { % fix labels adding extra space
+ \keys_define:nn { keytheorems/thmuse }
+ { label .code:n = \tcbset{ phantom = { \label{##1} } } }
+ }
+ \tcbset
+ {
+ keythms_tcb_#1/.style =
+ {
+ savedelimiter=#1,
+ #2
+ }
+ }
+ \tl_if_empty:NTF \l__keythms_thm_style_tl
+ {
+ \tl_set_eq:NN \l__keythms_thm_tempstyle_tl
+ \l__keythms_thm_currentthmstyle_tl
+ }
+ { \tl_set_eq:NN \l__keythms_thm_tempstyle_tl \l__keythms_thm_style_tl }
+ \tl_gput_right:ce { g__keythms_thm_preheadfromkeys_#1_tl }
+ { % don't mess with tcolorbox defaults unless explicitly asked to in style
+ \exp_not:N \tl_put_right:cn { th@ \l__keythms_thm_tempstyle_tl }
+ { \thm@preskip=0pt \thm@postskip=0pt }
+ }
+ \tl_if_exist:cT
+ { g__keythms_thmstyle_ \l__keythms_thm_tempstyle_tl _tcbspaceabove_skip }
+ {
+ \exp_args:Ne \tcbset
+ {
+ keythms_tcb_#1/.prefix~style =
+ {
+ before~skip =
+ \skip_use:c { g__keythms_thmstyle_ \l__keythms_thm_tempstyle_tl _tcbspaceabove_skip }
+ }
+ }
+ }
+ \tl_if_exist:cT
+ { g__keythms_thmstyle_ \l__keythms_thm_tempstyle_tl _tcbspacebelow_skip }
+ {
+ \exp_args:Ne \tcbset
+ {
+ keythms_tcb_#1/.prefix~style =
+ {
+ after~skip =
+ \skip_use:c { g__keythms_thmstyle_ \l__keythms_thm_tempstyle_tl _tcbspacebelow_skip }
+ }
+ }
+ }
+ }
+\NewDocumentEnvironment{ keythms_beamer_tcb }{ m d<> }
+ {
+ \tl_if_novalue:nF { #2 } { \begin{actionenv}<#2> }
+ \begin{tcolorbox}[
+ title={\usebeamerfont*{block title} #1},
+ keythms_tcb_\l_keythms_thmuse_envname_tl
+ ]
+ }
+ {
+ \end{tcolorbox}
+ \tl_if_novalue:nF { #2 } { \end{actionenv} }
+ }
+\NewDocumentEnvironment{ keythms_beamer_tcbnotitlebar }{ m d<> }
+ {
+ \tl_if_novalue:nF { #2 } { \begin{actionenv}<#2> }
+ \begin{tcolorbox}[ keythms_tcb_\l_keythms_thmuse_envname_tl ]
+ \group_begin:
+ \usebeamerfont*{block title} #1
+ \thmheadnl
+ \hskip\thm@headsep
+ \group_end:
+ }
+ {
+ \end{tcolorbox}
+ \tl_if_novalue:nF { #2 } { \end{actionenv} }
+ }
+
+\cs_set_protected:Npn \keythms_keyify_theorem:n #1
+ { % #1 = theorem name
+ \DeclareEnvironmentCopy { keythms_orig_#1 } { #1 }
+ \DeclareDocumentEnvironment { keythms_beamer_grab_#1 } { m m m +b }
+ { % ##1 = keys, ##2 = note, ##3 = action spec, ##4 = theorem body
+ \__keythms_thm_prehead_code:n { #1 }
+ \tl_if_empty:nTF { ##3 }
+ { \begin{keythms_orig_#1}[{##2}] }
+ { \begin{keythms_orig_#1}[{##2}]<##3> }
+ \clist_map_inline:Nn \g__keythms_restatecounters_clist
+ {
+ \prop_gput:Nne \g__keythms_thmuse_othercounters_prop { ####1 }
+ { \the\value{####1} }
+ }
+ \__keythms_thm_posthead_code:n { #1 }
+ % below needs to come after posthead so that correct \@currentHref
+ % is stored for tcolorbox theorems
+ \__keythms_thm_addcontentsdata:nnnn { #1 }
+ { \prop_to_keyval:N \g__keythms_thmuse_othercounters_prop }
+ { ##1 } { ##4 }
+ \__keythms_thm_tempstorerestatedata:nnn { #1 } { ##1 } { ##4 }
+ ##4
+ \__keythms_thm_prefoot_code:n { #1 }
+ \end{keythms_orig_#1}
+ \__keythms_thm_postfoot_code:n { #1 }
+ }
+ {}
+ \DeclareDocumentEnvironment { keythms_beamer_grabreversed_#1 } { m m m +b }
+ { % ##1 = keys, ##2 = note, ##3 = action spec, ##4 = theorem body
+ \tl_if_exist:cTF
+ { c__keythms_storeatbegin_ \l__keythms_thmuse_storereversed_tl _restatecounters_tl }
+ {
+ \bool_set_true:N \l__keythms_thmuse_restating_bool
+ \prop_set_from_keyval:Ne \l__keythms_restate_counters_prop
+ { \tl_use:c { c__keythms_storeatbegin_ \l__keythms_thmuse_storereversed_tl _restatecounters_tl } }
+ \prop_map_inline:Nn \l__keythms_restate_counters_prop
+ {
+ \tl_set:ce { l_keythms_restate_current_####1_tl }
+ { \the\value{####1} }
+ \setcounter { ####1 } { ####2 }
+ % ^ FIX: what if eq's numbered by section, theorem, etc.? The
+ % thmtools code is opaque.... Or maybe should be up to the
+ % user to say "restate-counters={section,chapter,...}".
+ \cs_set:cpn { theH ####1 }
+ { \use:c { the ####1 } . \theHkeythms_restate_dummyctr }
+ }
+ \tl_if_empty:cTF
+ { c__keythms_storeatbegin_ \l__keythms_thmuse_storereversed_tl _label_tl }
+ { \refstepcounter{keythms_restate_dummyctr} } % for unnumbered theorems
+ {
+ \cs_set:cpn { the #1 }
+ { \tl_use:c { c__keythms_storeatbegin_ \l__keythms_thmuse_storereversed_tl _label_tl } }
+ \cs_set_eq:cN { c@ #1 } \c@keythms_restate_dummyctr
+ \cs_set_eq:cN { theH #1 } \theHkeythms_restate_dummyctr
+ % ^ why are the last two lines here? We shouldn't be referencing
+ % restated theorems. Think it's a remnant of thmtools
+ % WRONG: needed to make numbering correct after restated theorem.
+ % not sure about theH. <- this is needed to prevent duplicate anchors
+ }
+ }
+ {
+ \msg_warning:nnV { keytheorems } { store-reversed-not-got }
+ \l__keythms_thmuse_storereversed_tl
+ }
+ \__keythms_thm_prehead_code:n { #1 }
+ \hook_use:n { keytheorems/#1/restated }
+ \hook_use:n { keytheorems/allthms/restated }
+ \tl_if_empty:nTF { ##3 }
+ { \begin{keythms_orig_#1}[{##2}] }
+ { \begin{keythms_orig_#1}[{##2}]<##3> }
+ \__keythms_thm_posthead_code:n { #1 }
+ % below needs to come after posthead so that correct \@currentHref
+ % is stored for tcolorbox theorems
+ \__keythms_thm_addstoredreverseddata:nnn { #1 } { ##1 } { ##4 }
+ \__keythms_thm_tempstorerestatedatareversed:nnn { #1 } { ##1 } { ##4 }
+ ##4
+ \__keythms_thm_prefoot_code:n { #1 }
+ \end{keythms_orig_#1}
+ \__keythms_thm_postfoot_code:n { #1 }
+ \prop_map_inline:Nn \l__keythms_restate_counters_prop
+ {
+ \exp_args:Nnc \setcounter { ####1 }
+ { l_keythms_restate_current_####1_tl }
+ }
+ }
+ { }
+ % NOTE: have to do a lot of shenanigans to make sure the begin/end of grabbed
+ % theorem env captures only the body and no package code.
+ % This is the price of on-the-fly redefining the env to grab body
+ \RenewDocumentEnvironment { #1 } { D<>{} ={note} O{} D<>{} }
+ {
+ \tl_set:Nn \l_keythms_thmuse_envname_tl { #1 }
+ \keys_set:nn { keytheorems/thmuse } { ##2 }
+ \tl_if_empty:NTF \l__keythms_thmuse_store_tl
+ {
+ \tl_if_empty:NTF \l__keythms_thmuse_storereversed_tl
+ { \__keythms_thm_prehead_code:n { #1 } }
+ {
+ % \bool_gset_true:N \g__keythms_listof_writefile_bool % disable writing to file
+ \cs_set_eq:NN \__keythms_beamer_withhooks_begin:nnnn \__keythms_beamer_grabreversed_begin:nnnn
+ \cs_set_eq:NN \__keythms_beamer_withhooks_end:n \__keythms_beamer_grabreversed_end:n
+ }
+ }
+ {
+ % \bool_gset_true:N \g__keythms_listof_writefile_bool % disable writing to file
+ \cs_set_eq:NN \__keythms_beamer_withhooks_begin:nnnn \__keythms_beamer_grab_begin:nnnn
+ \cs_set_eq:NN \__keythms_beamer_withhooks_end:n \__keythms_beamer_grab_end:n
+ }
+ \tl_if_empty:nTF { ##3 }
+ { % if ##3 empty, just pass ##1 and withhooks_begin will check if empty
+ \__keythms_beamer_withhooks_begin:nnVn { #1 } { ##2 }
+ \l__keythms_thmuse_note_tl { ##1 }
+ }
+ { % if ##3 nonempty, always use it (beamer defaults to second <> if both given)
+ \__keythms_beamer_withhooks_begin:nnVn { #1 } { ##2 }
+ \l__keythms_thmuse_note_tl { ##3 }
+ }
+ }
+ {
+ \__keythms_beamer_withhooks_end:n { #1 }
+ \tl_if_empty:NF \l__keythms_thmuse_store_tl
+ {
+ \cs_if_exist:cF
+ { __keythms_getthm_ \l__keythms_thmuse_store_tl _theorem }
+ {
+ \cs_new:cpe
+ { __keythms_getthm_ \l__keythms_thmuse_store_tl _theorem }
+ {
+ \exp_not:N \__keythms_getthm_theorem:nnnnn
+ \exp_not:o { \g__keythms_thmuse_temprestatedata_tl }
+ }
+ \cs_new:cpe
+ { __keythms_getthm_ \l__keythms_thmuse_store_tl _body }
+ {
+ \exp_not:N \__keythms_getthm_body:nnn
+ \exp_args:No \exp_not:o
+ {
+ \exp_after:wN \__keythms_use_i_iii_v_braced:nnnnn
+ \g__keythms_thmuse_temprestatedata_tl
+ }
+ }
+ }
+ }
+ \tl_if_empty:NF \l__keythms_thmuse_storereversed_tl
+ {
+ \cs_if_exist:cF
+ { __keythms_getthm_ \l__keythms_thmuse_storereversed_tl _theorem }
+ {
+ \cs_new:cpe
+ { __keythms_getthm_ \l__keythms_thmuse_storereversed_tl _theorem }
+ {
+ \exp_not:N \__keythms_getthmreversed_theorem:nnn
+ \exp_not:o { \g__keythms_thmuse_temprestatedatareversed_tl }
+ }
+ \cs_new:cpn
+ { __keythms_getthm_ \l__keythms_thmuse_storereversed_tl _body }
+ {
+ \textbf{??}
+ \msg_warning:nnn { keytheorems } { restate-body-never-got }
+ { #1 }
+ }
+ }
+ }
+ }
+ }
+
+\cs_new_protected:Npn \__keythms_beamer_withhooks_begin:nnnn #1#2#3#4
+ { % #1 = theorem name, #2 = keys, #3 = note, #4 = action spec
+ \tl_if_empty:nTF { #4 }
+ { \begin{keythms_orig_#1}[{#3}] }
+ { \begin{keythms_orig_#1}[{#3}]<#4> }
+ \__keythms_thm_posthead_code:n { #1 }
+ \__keythms_thm_addcontentsdata:nnnn { #1 } { } { #2 } { }
+ \ignorespaces % I hope this is alright
+ }
+\cs_generate_variant:Nn \__keythms_beamer_withhooks_begin:nnnn { nnV }
+\cs_new_eq:NN \__keythms_beamer_withhooks_end:n \__keythms_withhooks_end:n
+
+\cs_new_protected:Npn \__keythms_beamer_grab_begin:nnnn #1#2#3#4
+ { % #1 = theorem name, #2 = keys, #3 = note
+ \begin{keythms_beamer_grab_#1}{#2}{#3}{#4}
+ }
+\cs_generate_variant:Nn \__keythms_beamer_grab_begin:nnnn { nnV }
+\cs_new_protected:Npn \__keythms_beamer_grab_end:n #1 { \end{keythms_beamer_grab_#1} }
+
+\cs_new_protected:Npn \__keythms_beamer_grabreversed_begin:nnnn #1#2#3#4
+ { % #1 = theorem name, #2 = keys, #3 = note
+ \begin{keythms_beamer_grabreversed_#1}{#2}{#3}{#4}
+ }
+\cs_generate_variant:Nn \__keythms_beamer_grabreversed_begin:nnnn { nnV }
+\cs_new_protected:Npn \__keythms_beamer_grabreversed_end:n #1
+ { \end{keythms_beamer_grabreversed_#1} }
+
+% for now, just disable writing to file
+\cs_set_eq:NN \__keythms_thm_addcontentsdata:nnnn \use_none:nnnn
+\cs_set_eq:NN \__keythms_thm_addstoredreverseddata:nnn \use_none:nnn
+
+\cs_new_protected:Npn \__keythms_beamer_reversedauxdata:nnnn #1#2#3#4
+ {
+ \iow_shipout:Ne \@auxout
+ {
+ \token_to_str:N \KeyThmsBeamerReversedData { \l__keythms_thmuse_storereversed_tl }
+ { \@currentlabel }
+ { #2 }
+ }
+ }
+\cs_new_protected:Npn \KeyThmsBeamerReversedData #1#2#3
+ {
+ \tl_if_exist:cF { c__keythms_storeatbegin_#1_label_tl }
+ {
+ \tl_const:cn { c__keythms_storeatbegin_#1_label_tl } { #2 }
+ }
+ \tl_if_exist:cF { c__keythms_storeatbegin_#1_restatecounters_tl }
+ {
+ \tl_const:cn { c__keythms_storeatbegin_#1_restatecounters_tl } { #3 }
+ }
+ \bool_if_exist:cF { g__keythms_restate_#1_called_bool }
+ { \bool_new:c { g__keythms_restate_#1_called_bool } }
+ }
+\cs_new_eq:NN \__keythms_ORIGgetthmreversed_theorem:nnn
+ \__keythms_getthmreversed_theorem:nnn
+\cs_set_protected:Npn \__keythms_getthmreversed_theorem:nnn #1#2#3
+ {
+ \group_begin:
+ \cs_set_eq:NN \__keythms_thm_addcontentsdata:nnnn \__keythms_beamer_reversedauxdata:nnnn
+ \__keythms_ORIGgetthmreversed_theorem:nnn { #1 } { #2 } { #3 }
+ \group_end:
+ }
+
+% restatable and restatable* environments need redefinition
+\bool_if:NT \g__keythms_thmtoolscompat_bool
+ {
+ \RenewDocumentEnvironment { restatable } { O{} m m }
+ {
+ % set store outside [] so keyless note is recognized
+ \keys_set:nn { keytheorems/thmuse } { store=#3 }
+ \begin{#2}[#1]
+ }
+ {
+ \end{#2}
+ \cs_gset_protected:cpn { #3 }
+ { % make \foo and \foo* identical
+ \peek_meaning_remove:NTF *
+ { \getkeytheorem{ #3 } }
+ { \getkeytheorem{ #3 } }
+ }
+ }
+ \RenewDocumentEnvironment { restatable* } { O{} m m }
+ {
+ \cs_set_protected:Npn \__keythms_thm_tempstorerestatedatareversed:nnn ##1##2##3
+ {
+ \tl_gset:Ne \g__keythms_thmuse_temprestatedatareversed_tl % needs to be global to get out of env
+ {
+ { ##1 }
+ { store*=\l__keythms_thmuse_storereversed_tl,\exp_not:n { ##2 } }
+ { \exp_not:n { ##3 } }
+ }
+ }
+ % set store* outside [] so keyless note is recognized
+ \keys_set:nn { keytheorems/thmuse } { store*=#3 }
+ \begin{#2}[#1]
+ }
+ {
+ \end{#2}
+ \cs_gset_protected:cpn { #3 }
+ { % make \foo and \foo* identical
+ \peek_meaning_remove:NTF *
+ { \getkeytheorem{ #3 } }
+ { \getkeytheorem{ #3 } }
+ }
+ }
+ }
+
+\file_input_stop: \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-jlreq-support.tex b/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-jlreq-support.tex
new file mode 100644
index 00000000000..0f45ef4adeb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-jlreq-support.tex
@@ -0,0 +1,34 @@
+% Maintained by Matthew Bertucci, 2024-present
+% Please report all issues and feature requests at https://github.com/mbertucci47/keytheorems
+% This work is licensed under the LPPL version 1.3c or later: https://www.latex-project.org/lppl.txt
+\ProvidesExplFile{keythms-jlreq-support}{\@keythms@date}{\@keythms@version}
+ {keytheorems~support~for~the~jlreq~class}
+
+\prop_gput_from_keyval:Nn \g__keythms_thmstyle_defaultkeys_prop
+ {
+ bodyfont = \prop_item:Nn \g__jlreq_complements_theorem_prop { font },
+ headfont =
+ \prop_item:Nn \g__jlreq_complements_theorem_prop { label_font },
+ headindent =
+ \dimexpr\prop_item:Nn \g__jlreq_complements_theorem_prop { indent },
+ headpunct = {},
+ postheadspace = 1\jlreq@zw,
+ notebraces = {(}{)},
+ notefont =
+ \prop_item:Nn \g__jlreq_complements_theorem_prop { label_font },
+ noteseparator = {},
+ spaceabove =
+ \dimexpr\prop_item:Nn \g__jlreq_complements_theorem_prop { beforeafter_space } \relax,
+ spacebelow =
+ \dimexpr\prop_item:Nn \g__jlreq_complements_theorem_prop { beforeafter_space } \relax,
+ }
+
+\tl_new:N \g__keythms_thmstyle_jlreq_metakeys_tl
+
+\keys_define:nn { keytheorems/listof }
+ {
+ indent .initial:n = 0\jlreq@gol,
+ numwidth .initial:n = 2\jlreq@gol,
+ }
+
+\file_input_stop: \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-memoir-support.tex b/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-memoir-support.tex
new file mode 100644
index 00000000000..0140580c660
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/keytheorems/class-support/keythms-memoir-support.tex
@@ -0,0 +1,51 @@
+% Maintained by Matthew Bertucci, 2024-present
+% Please report all issues and feature requests at https://github.com/mbertucci47/keytheorems
+% This work is licensed under the LPPL version 1.3c or later: https://www.latex-project.org/lppl.txt
+\ProvidesExplFile{keythms-memoir-support}{\@keythms@date}{\@keythms@version}
+ {keytheorems~support~for~the~memoir~class}
+
+\bool_new:N \l__keythms_support_titlecode_bool
+
+\keys_define:nn { keytheorems/listof }
+ {
+ indent .initial:n = 0pt,
+ title-code .code:n =
+ {
+ \bool_set_true:N \l__keythms_support_titlecode_bool
+ \cs_set:Npn \__keythms_listof_titlecmd:n ##1 { #1 }
+ },
+ }
+
+% use memoir's list function; not using \newlistentry, though
+\newlistof{ keythms_support_memoir_listof:w }{ thlist }
+ { \l__keythms_listof_title_tl }
+
+\RenewDocumentCommand \listofkeytheorems { +O{} }
+ {
+ \bool_gset_true:N \g__keythms_listof_writefile_bool
+ \group_begin:
+ \keys_set:nn { keytheorems/listof } { #1 }
+ \cs_set_protected:Npn \KeyThmsContentsLine ##1 { ##1 }
+ \bool_if:NF \l__keythms_listof_nochapskip_bool
+ {
+ \cs_set_eq:NN \KeyThmsAddvspace \addvspace
+ }
+ \bool_if:NTF \l__keythms_listof_notitle_bool
+ {
+ \cs_set:Npn \@thlistmaketitle {}
+ \keythms_support_memoir_listof:w*
+ }
+ {
+ \bool_if:NT \l__keythms_support_titlecode_bool
+ {
+ \cs_set:Npn \@thlistmaketitle
+ { \__keythms_listof_titlecmd:n { \l__keythms_listof_title_tl } }
+ }
+ \bool_if:NTF \l__keythms_listof_notoc_bool
+ { \keythms_support_memoir_listof:w* }
+ { \keythms_support_memoir_listof:w }
+ }
+ \group_end:
+ }
+
+\file_input_stop: \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/keytheorems/keytheorems.sty b/Master/texmf-dist/tex/latex/keytheorems/keytheorems.sty
index 540a2ca800b..4f1d145935a 100644
--- a/Master/texmf-dist/tex/latex/keytheorems/keytheorems.sty
+++ b/Master/texmf-dist/tex/latex/keytheorems/keytheorems.sty
@@ -1,5 +1,11 @@
+% Maintained by Matthew Bertucci, 2024-present
+% Please report all issues and feature requests at https://github.com/mbertucci47/keytheorems
+% This work is licensed under the LPPL version 1.3c or later: https://www.latex-project.org/lppl.txt
\NeedsTeXFormat{LaTeX2e}[2023-06-01]
-\ProvidesExplPackage{keytheorems}{2024-09-09}{0.1.1}{l3keys interface to amsthm}
+\def\@keythms@date{2025-01-21}
+\def\@keythms@version{0.2.4}
+\ProvidesExplPackage{keytheorems}{\@keythms@date}{\@keythms@version}
+ {l3keys interface to amsthm}
\IfFormatAtLeastTF { 2024-06-01 } { }
{
@@ -7,15 +13,24 @@
\cs_generate_variant:Nn \cs_set:Npn { Npe }
\cs_generate_variant:Nn \iow_shipout:Nn { Ne }
\cs_generate_variant:Nn \keys_set:nn { ne }
+ \cs_generate_variant:Nn \msg_warning:nnn { nne }
\cs_generate_variant:Nn \tl_put_right:Nn { Ne }
- \ProvideDocumentCommand \IfPackageLoadedT { m m }
+ \cs_generate_variant:Nn \tl_gput_right:Nn { ce }
+ \ProvideDocumentCommand \IfPackageLoadedT { m +m }
{ \IfPackageLoadedTF{#1}{#2}{ } }
- }
-\RequirePackage{aliascnt} % for sibling theorems
-\RequirePackage{amsthm}
-% ^ ams classes have way of ignoring this so don't need to check if they're loaded
-\RequirePackage{refcount} % for \getrefnumber
-\RequirePackage{translations} % for translating "List of Theorems"
+ \ProvideDocumentCommand \IfPackageLoadedF { m +m }
+ { \IfPackageLoadedTF{#1}{ }{#2} }
+ \ProvideDocumentCommand \IfClassLoadedT { m +m }
+ { \IfClassLoadedTF{#1}{#2}{ } }
+ \ProvideDocumentCommand \IfClassLoadedWithOptionsT { m m +m }
+ { \IfClassLoadedWithOptionsTF{#1}{#2}{#3}{ } }
+ \ProvideDocumentCommand \IfPackageLoadedWithOptionsT { m m +m }
+ { \IfPackageLoadedWithOptionsTF{#1}{#2}{#3}{ } }
+ }
+\RequirePackage{aliascnt}
+\RequirePackage{amsthm} % ams classes have way of ignoring this
+\RequirePackage{refcount}
+\RequirePackage{translations}
%%%%%%%%%%%%%%%%%%%%%%
%%% Error Messages %%%
@@ -40,6 +55,25 @@
Try~compiling~again.~If~that~doesn't~work,~
check~the~spelling~of~'#1'.
}
+\msg_new:nnn { keytheorems } { no-prop-for-stored-theorem }
+ {
+ No~property~'#1'~found~for~stored~theorem~'#2'.
+ }
+\msg_new:nnn { keytheorems } { store-reversed-not-got }
+ {
+ 'store*=#1'~only~makes~sense~if~you've~called~\protect\getkeytheorem{#1}.~
+ Check~that~\protect\getkeytheorem{#1}~is~called~and~compile~again.
+ }
+\msg_new:nnn { keytheorems } { restate-body-never-got }
+ {
+ With~'store*=#1',~\protect\getkeytheorem[body]{#1}~only~makes~sense~if~
+ \protect\getkeytheorem{#1}~has~been~called.~
+ Check~that~\protect\getkeytheorem{#1}~is~called~and~compile~again.
+ }
+\msg_new:nnn { keytheorems } { store-reversed-called-twice }
+ {
+ With~'store*=#1',~\protect\getkeytheorem{#1}~can~be~called~only~once.
+ }
\msg_new:nnn { keytheorems } { undefined-thm-hook }
{
No~theorem~hook~'#1'.~Check~the~spelling.~
@@ -65,6 +99,19 @@
Theorem~style~'#1'~already~defined.~
Use~\protect\renewkeytheoremstyle\space instead.
}
+\msg_new:nnn { keytheorems } { inherit-thmstyle-undefined }
+ {
+ Theorem~style~'#1'~undefined.
+ }
+\msg_new:nnn { keytheorems } { thm-undefined }
+ {
+ Command~\c_backslash_str #1~undefined.~
+ Use~\protect\newkeytheorem\space instead.
+ }
+\msg_new:nnn { keytheorems } { title-code-with-AMS }
+ {
+ The~'title-code'~key~has~no~effect~with~an~AMS~class.
+ }
% Error if thmtools loaded since compilation hangs.
% If thmtools loaded after, produce warning.
@@ -83,30 +130,39 @@
%%% Declare Variables %%%
%%%%%%%%%%%%%%%%%%%%%%%%%
+\dim_new:N \l__keythms_tmpa_dim
+\iow_new:N \g__keythms_tmpa_iow
\tl_new:N \l__keythms_tmpa_tl
\bool_new:N \g__keythms_listof_writefile_bool
\bool_gset_false:N \g__keythms_listof_writefile_bool
\bool_new:N \g__keythms_thmtoolscompat_bool
\bool_gset_false:N \g__keythms_thmtoolscompat_bool
+\bool_new:N \l__keythms_listofheading_storereversed_bool
\bool_new:N \l__keythms_thm_numbered_bool
\bool_new:N \l__keythms_thm_unlessunique_bool
\bool_new:N \l__keythms_thmuse_listhack_bool
\bool_new:N \l__keythms_thmuse_restating_bool
\clist_new:N \g__keythms_restatecounters_clist
\clist_new:N \l__keythms_thmstyle_savedkeys_clist
-\iow_new:N \g__keythms_listof_stream
+\dim_new:N \l__keythms_thm_currparindent_dim
+\dim_new:N \l__keythms_thm_currparskip_dim
+\int_new:N \l__keythms_thm_tcbstate_int
\prop_new:N \g__keythms_thmnames_prop
+\prop_new:N \g__keythms_thmstyle_defaultkeys_prop
\prop_new:N \g__keythms_thmuse_othercounters_prop
\prop_new:N \l__keythms_restate_counters_prop
\tl_new:N \l__keythms_thm_currentthmstyle_tl
\tl_new:N \l__keythms_thm_defaultkeys_tl
\tl_new:N \l__keythms_thm_envname_tl
+\tl_new:N \l__keythms_thm_tcbkeys_tl
+\tl_new:N \l__keythms_thm_tempstyle_tl
\tl_new:N \l__keythms_thmstyle_defaultkeys_tl
\tl_new:N \l__keythms_thmstyle_lnotebrace_tl
\tl_new:N \l__keythms_thmstyle_rnotebrace_tl
-\tl_new:N \l__keythms_thmuse_envname_tl
+\tl_new:N \l_keythms_thmuse_envname_tl
\tl_new:N \g__keythms_thmuse_temprestatedata_tl
+\tl_new:N \g__keythms_thmuse_temprestatedatareversed_tl
\newcounter{keythms_restate_dummyctr}
\cs_gset:Npn \theHkeythms_restate_dummyctr
@@ -120,40 +176,31 @@
\cs_gset:Npn \theHkeythms_unnumbered_dummyctr
{ unnumbered.\arabic{keythms_unnumbered_dummyctr} }
\cs_gset:Npn \thekeythms_unnumbered_dummyctr { }
+\newcounter{keythms_manualnum_dummyctr}
+\cs_gset:Npn \theHkeythms_manualnum_dummyctr
+ { manualnum.\arabic{keythms_manualnum_dummyctr} }
+\cs_gset:Npn \thekeythms_manualnum_dummyctr { }
-\cs_generate_variant:Nn \hook_gput_code:nnn { nnV }
-\cs_generate_variant:Nn \keys_precompile:nnN { nv, nVc }
-
-% for detecting AMS classes
-\prg_new_conditional:Npnn \keythms_if_amsclass: { T, TF }
- {
- \IfClassLoadedTF { amsart } { \prg_return_true: }
- {
- \IfClassLoadedTF { amsbook } { \prg_return_true: }
- {
- \IfClassLoadedTF { amsproc } { \prg_return_true: }
- { \prg_return_false: }
- }
- }
- }
+\cs_generate_variant:Nn \hook_gput_code:nnn { nnv }
+\cs_generate_variant:Nn \keys_precompile:nnN { ne, nVc }
+\cs_generate_variant:Nn \prop_set_from_keyval:Nn { Ne }
%%%%%%%%%%%%%%
%%% Styles %%%
%%%%%%%%%%%%%%
-% \__keythms_thmstyle_setbraces:nn { <left brace> } { <right brace> }
\cs_new_protected:Npn \__keythms_thmstyle_setbraces:nn #1#2
- {
+ { % #1 = left brace, #2 = right brace
\tl_set:Nn \l__keythms_thmstyle_lnotebrace_tl { #1 }
\tl_set:Nn \l__keythms_thmstyle_rnotebrace_tl { #2 }
}
-\cs_new_protected:Npn \keythms_thmstyle_savethmkey_reqval:n #1
- {
+\cs_new_protected:Npn \__keythms_thmstyle_savethmkey_reqval:n #1
+ { % #1 = key value
\clist_put_right:No \l__keythms_thmstyle_savedkeys_clist
{ \l_keys_key_str = { #1 } }
}
-\cs_new_protected:Npn \keythms_thmstyle_savethmkey_optval:n #1
- {
+\cs_new_protected:Npn \__keythms_thmstyle_savethmkey_optval:n #1
+ { % #1 = key value
\tl_if_empty:NTF \l_keys_value_tl
{
\clist_put_right:No \l__keythms_thmstyle_savedkeys_clist
@@ -167,235 +214,147 @@
\keys_define:nn { keytheorems/thmstyle }
{
- spaceabove .tl_set:N = \l__keythms_thmstyle_spaceabove_tl,
- spacebelow .tl_set:N = \l__keythms_thmstyle_spacebelow_tl,
bodyfont .tl_set:N = \l__keythms_thmstyle_bodyfont_tl,
- headindent .tl_set:N = \l__keythms_thmstyle_headindent_tl,
- headfont .tl_set:N = \l__keythms_thmstyle_headfont_tl,
- headpunct .tl_set:N = \l__keythms_thmstyle_headpunct_tl,
- postheadspace .tl_set:N = \l__keythms_thmstyle_postheadspace_tl,
break .meta:n = { postheadspace = \newline }, % add error if postheadspace set
break .value_forbidden:n = true,
- notefont .tl_set:N = \l__keythms_thmstyle_notefont_tl,
- notebraces .code:n = \exp_after:wN \__keythms_thmstyle_setbraces:nn #1,
+ headfont .tl_set:N = \l__keythms_thmstyle_headfont_tl,
+ headformat .meta:n = { headstyle = {#1} }, % extra braces are necessary! Otherwise breaks if #1 contains comma
+ headindent .tl_set:N = \l__keythms_thmstyle_headindent_tl,
+ headpunct .tl_set:N = \l__keythms_thmstyle_headpunct_tl,
headstyle .choice:,
headstyle / margin .code:n =
{
\cs_set:Nn \keythms_thmstyle_headcmd:nnn
- { \makebox[0pt][r]{\NUMBER\ }\NAME\NOTE }
+ {
+ \makebox[0pt][r]{
+ \keythms_thmstyle_thmnumber:n {
+ \group_begin: \exp_not:V \l__keythms_thmstyle_numberfont_tl
+ ##2 ~ \group_end: }
+ }
+ \NAME\NOTE
+ }
},
headstyle / swapnumber .code:n =
{
- \cs_set:Nn \keythms_thmstyle_headcmd:nnn { \NUMBER\ \NAME\NOTE }
+ \cs_set:Nn \keythms_thmstyle_headcmd:nnn
+ {
+ \keythms_thmstyle_thmnumber:n {
+ \group_begin: \exp_not:V \l__keythms_thmstyle_numberfont_tl
+ ##2 ~ \group_end: }
+ \NAME\NOTE
+ }
},
headstyle / unknown .cs_set:Np = \keythms_thmstyle_headcmd:nnn #1#2#3,
- headformat .meta:n = { headstyle = #1 },
- inherit-style .choice:,
- inherit-style / plain .meta:n = {},
- inherit-style / definition .meta:n = { bodyfont = \normalfont },
- inherit-style / remark .meta:n =
- {
- headfont = \itshape,
- bodyfont = \normalfont,
- spaceabove = 0.5\topsep,
- spacebelow = 0.5\topsep,
+ inherit-style .code:n =
+ {
+ \tl_if_exist:cTF { g__keythms_thmstyle_#1_metakeys_tl }
+ {
+ \keys_set:nv { keytheorems/thmstyle }
+ { g__keythms_thmstyle_#1_metakeys_tl }
+ }
+ { \msg_error:nnn { keytheorems } { inherit-thmstyle-undefined } { #1 } }
},
+ notebraces .code:n = \exp_after:wN \__keythms_thmstyle_setbraces:nn #1,
+ notefont .tl_set:N = \l__keythms_thmstyle_notefont_tl,
+ noteseparator .tl_set:N = \l__keythms_thmstyle_noteseparator_tl,
+ numberfont .tl_set:N = \l__keythms_thmstyle_numberfont_tl,
+ postheadspace .tl_set:N = \l__keythms_thmstyle_postheadspace_tl,
+ spaceabove .tl_set:N = \l__keythms_thmstyle_spaceabove_tl,
+ spacebelow .tl_set:N = \l__keythms_thmstyle_spacebelow_tl,
% thm keys that are saved for later
- numbered .code:n = \keythms_thmstyle_savethmkey_optval:n { #1 },
- parent .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 },
- numberwithin .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 },
- within .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 },
- sibling .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 },
- numberlike .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 },
- sharenumber .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 },
- preheadhook .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 },
- postheadhook .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 },
- prefoothook .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 },
- postfoothook .code:n = \keythms_thmstyle_savethmkey_reqval:n { #1 },
- qed .code:n = \keythms_thmstyle_savethmkey_optval:n { #1 },
- tcolorbox .code:n = \keythms_thmstyle_savethmkey_optval:n { #1 },
- tcolorbox-no-titlebar .code:n = \keythms_thmstyle_savethmkey_optval:n { #1 },
+ leftmargin .code:n = \__keythms_thmstyle_savethmkey_reqval:n { #1 },
+ numbered .code:n = \__keythms_thmstyle_savethmkey_optval:n { #1 },
+ numberlike .code:n = \__keythms_thmstyle_savethmkey_reqval:n { #1 },
+ numberwithin .code:n = \__keythms_thmstyle_savethmkey_reqval:n { #1 },
+ parent .code:n = \__keythms_thmstyle_savethmkey_reqval:n { #1 },
+ postfoothook .code:n = \__keythms_thmstyle_savethmkey_reqval:n { #1 },
+ postheadhook .code:n = \__keythms_thmstyle_savethmkey_reqval:n { #1 },
+ prefoothook .code:n = \__keythms_thmstyle_savethmkey_reqval:n { #1 },
+ preheadhook .code:n = \__keythms_thmstyle_savethmkey_reqval:n { #1 },
+ qed .code:n =
+ { % qed needs special treatment to distinguish qed from qed={}
+ \tl_if_novalue:nTF { #1 }
+ {
+ \clist_put_right:No \l__keythms_thmstyle_savedkeys_clist
+ { \l_keys_key_str }
+ }
+ {
+ \clist_put_right:No \l__keythms_thmstyle_savedkeys_clist
+ { \l_keys_key_str = { #1 } }
+ }
+ },
+ qed .default:o = \c_novalue_tl,
+ rightmargin .code:n = \__keythms_thmstyle_savethmkey_reqval:n { #1 },
+ sharenumber .code:n = \__keythms_thmstyle_savethmkey_reqval:n { #1 },
+ sibling .code:n = \__keythms_thmstyle_savethmkey_reqval:n { #1 },
+ tcolorbox .code:n = \__keythms_thmstyle_savethmkey_optval:n { #1 },
+ tcolorbox-no-titlebar .code:n = \__keythms_thmstyle_savethmkey_optval:n { #1 },
+ within .code:n = \__keythms_thmstyle_savethmkey_reqval:n { #1 },
}
\cs_new_protected:Nn \keythms_thmstyle_thmname:n { \thmname{#1} }
\cs_new_protected:Nn \keythms_thmstyle_thmnumber:n { \thmnumber{#1} }
\cs_new_protected:Nn \keythms_thmstyle_thmnote:n { \thmnote{#1} }
-%% NOTE: if these are used, user is in charge of spacing with \NAME and \NUMBER
-%% QUESTION: should these be moved into def of \newkeytheoremstyle?
-\cs_new:Npn \NAME { \keythms_thmstyle_thmname:n { ##1 } }
-\cs_new:Npn \NUMBER
- {
- \keythms_thmstyle_thmnumber:n { \textup { ##2 } }
- }
-\cs_new:Npn \NOTE
- {
- \keythms_thmstyle_thmnote:n
- { ~ \group_begin: % group so notefont doesn't affect headpunct
- \exp_not:V \l__keythms_thmstyle_notefont_tl
- \l__keythms_thmstyle_lnotebrace_tl ##3 \l__keythms_thmstyle_rnotebrace_tl
- \group_end:
- }
- }
-
\cs_new:Npn \keythms_thmstyle_headcmd_default:nnn #1#2#3
{
\keythms_thmstyle_thmname:n { #1 }
\keythms_thmstyle_thmnumber:n
- { \tl_if_empty:nF { #1 } { ~ } \exp_not:N \textup { #2 } }
- % ^ this \tl_if_empty has no effect...
+ { ~
+ \group_begin:
+ \exp_not:V \l__keythms_thmstyle_numberfont_tl
+ #2
+ \group_end:
+ }
\keythms_thmstyle_thmnote:n
- { ~ \group_begin: % group so notefont doesn't affect headpunct
+ { \exp_not:V \l__keythms_thmstyle_noteseparator_tl
+ \group_begin: % group so notefont doesn't affect headpunct
\exp_not:V \l__keythms_thmstyle_notefont_tl
\l__keythms_thmstyle_lnotebrace_tl #3 \l__keythms_thmstyle_rnotebrace_tl
\group_end:
}
}
-%%% <SURELY A BETTER WAY>
-\cs_new_protected:Npn \__keythms_thmstyle_definekeylist:nn #1#2
- {
- \clist_const:cn { c__keythms_thmstyle_defaultkeys_ #1 _clist } { #2 }
- }
-
-\cs_new_protected:Npn \__keythms_thmstyle_setdefaultkeys:n #1
- {
- \keys_precompile:nvN { keytheorems/thmstyle }
- { c__keythms_thmstyle_defaultkeys_ #1 _clist }
- \l__keythms_thmstyle_defaultkeys_tl
- }
-
-\__keythms_thmstyle_definekeylist:nn { default }
- {
- spaceabove = \topsep,
- spacebelow = \topsep,
+\prop_gset_from_keyval:Nn \g__keythms_thmstyle_defaultkeys_prop
+ { % support files may overwrite these defaults
bodyfont = \itshape,
- headindent = 0pt,
headfont = \bfseries,
- headpunct = {.},
- postheadspace = 5pt plus 1pt minus 1pt,
- notefont = \fontseries\mddefault\upshape,
- notebraces = {(}{)},
- headstyle = \keythms_thmstyle_headcmd_default:nnn{#1}{#2}{#3},
- }
-\__keythms_thmstyle_definekeylist:nn { amsart }
- {
- spaceabove = .5\baselineskip plus .2\baselineskip minus .2\baselineskip,
- spacebelow = .5\baselineskip plus .2\baselineskip minus .2\baselineskip,
- bodyfont = \itshape,
headindent = 0pt,
- headfont = \bfseries,
headpunct = {.},
- postheadspace = 5pt plus 1pt minus 1pt,
- notefont = \fontseries\mddefault\upshape,
- notebraces = {(}{)},
headstyle = \keythms_thmstyle_headcmd_default:nnn{#1}{#2}{#3},
- }
-\__keythms_thmstyle_definekeylist:nn { amsproc }
- {
- spaceabove = .5\baselineskip plus .2\baselineskip minus .2\baselineskip,
- spacebelow = .5\baselineskip plus .2\baselineskip minus .2\baselineskip,
- bodyfont = \itshape,
- headindent = \parindent,
- headfont = \scshape,
- headpunct = {.},
- postheadspace = 5pt plus 1pt minus 1pt,
- notefont = \fontseries\mddefault\upshape,
notebraces = {(}{)},
- headstyle = \keythms_thmstyle_headcmd_default:nnn{#1}{#2}{#3},
- }
-\__keythms_thmstyle_definekeylist:nn { amsbook }
- {
- spaceabove = .5\baselineskip plus .2\baselineskip minus .2\baselineskip,
- spacebelow = .5\baselineskip plus .2\baselineskip minus .2\baselineskip,
- bodyfont = \itshape,
- headindent = \parindent,
- headfont = \scshape,
- headpunct = {.},
- postheadspace = 5pt plus 1pt minus 1pt,
notefont = \fontseries\mddefault\upshape,
- notebraces = {(}{)},
- headstyle = \keythms_thmstyle_headcmd_default:nnn{#1}{#2}{#3},
- }
-\__keythms_thmstyle_definekeylist:nn { acmart }
- {
- spaceabove = .5\baselineskip plus .2\baselineskip minus .2\baselineskip,
- spacebelow = .5\baselineskip plus .2\baselineskip minus .2\baselineskip,
- bodyfont = \@acmplainbodyfont,
- headindent = \@acmplainindent,
- headfont = \@acmplainheadfont,
- headpunct = {.},
- postheadspace = .5em,
- notefont = \@acmplainnotefont,
- notebraces = {(}{)},
- headstyle = \keythms_thmstyle_headcmd_default:nnn{#1}{#2}{#3},
- }
-
-\IfClassLoadedTF { amsart }
- {
- \IfClassLoadedTF { acmart } % acmart loads amsart
- {
- \__keythms_thmstyle_setdefaultkeys:n { acmart }
- }
- {
- \__keythms_thmstyle_setdefaultkeys:n { amsart }
- \keys_define:nn { keytheorems/thmstyle }
- {
- inherit-style / remark .meta:n =
- {
- headfont = \itshape,
- bodyfont = \normalfont,
- }
- }
- }
+ noteseparator = {~},
+ numberfont = \upshape,
+ postheadspace = 5pt plus 1pt minus 1pt,
+ spaceabove = {}, % empty means default (works for AMS classes too)
+ spacebelow = {}, % empty means default (works for AMS classes too)
}
- {
- \IfClassLoadedTF { amsbook }
- {
- \__keythms_thmstyle_setdefaultkeys:n { amsbook }
- \keys_define:nn { keytheorems/thmstyle }
- {
- inherit-style / remark .meta:n =
- {
- bodyfont = \normalfont,
- },
- }
- }
- {
- \IfClassLoadedTF { amsproc }
- {
- \__keythms_thmstyle_setdefaultkeys:n { amsproc }
- \keys_define:nn { keytheorems/thmstyle }
- {
- inherit-style / remark .meta:n =
- {
- bodyfont = \normalfont,
- },
- }
- }
- { \__keythms_thmstyle_setdefaultkeys:n { default } }
- }
+\hook_gput_code:nnn { package/keytheorems/after } { . }
+ { % need to defer to wait for support files
+ \keys_precompile:neN { keytheorems/thmstyle }
+ { \prop_to_keyval:N \g__keythms_thmstyle_defaultkeys_prop }
+ \l__keythms_thmstyle_defaultkeys_tl
}
-%%% </SURELY A BETTER WAY>
-\NewDocumentCommand \newkeytheoremstyle { m m }
+\NewDocumentCommand \newkeytheoremstyle { m +m }
{
\cs_if_free:cTF { th@ #1 }
{ \keythms_thmstyle_declarestyle:nn { #1 } { #2 } }
{ \msg_error:nnn { keytheorems } { thmstyle-defined } { #1 } }
}
-\NewDocumentCommand \renewkeytheoremstyle { m m }
+\NewDocumentCommand \renewkeytheoremstyle { m +m }
{
\cs_if_free:cTF { th@ #1 }
{ \msg_error:nnn { keytheorems } { thmstyle-undefined } { #1 } }
{ \keythms_thmstyle_declarestyle:nn { #1 } { #2 } }
}
-\NewDocumentCommand \providekeytheoremstyle { m m }
+\NewDocumentCommand \providekeytheoremstyle { m +m }
{
\cs_if_free:cT { th@ #1 }
{ \keythms_thmstyle_declarestyle:nn { #1 } { #2 } }
}
-\NewDocumentCommand \declarekeytheoremstyle { m m }
+\NewDocumentCommand \declarekeytheoremstyle { m +m }
{
\keythms_thmstyle_declarestyle:nn { #1 } { #2 }
}
@@ -405,15 +364,40 @@
\@onlypreamble \providekeytheoremstyle
\@onlypreamble \declarekeytheoremstyle
-\cs_new_eq:NN \keythms_thmstyle_new:nnnnnnnnn \newtheoremstyle
-\cs_generate_variant:Nn \keythms_thmstyle_new:nnnnnnnnn { nVVVVVVVe }
+\cs_new_eq:NN \__keythms_thmstyle_new:nnnnnnnnn \newtheoremstyle
+\cs_generate_variant:Nn \__keythms_thmstyle_new:nnnnnnnnn { nVVVVVVVe }
+\tl_put_right:Nn \l_text_expand_exclude_tl { \thmnote \thmnumber \thmname }
+% ^ allows \thmnote, etc. to work in headstyle; hope no bad side effects!
\cs_new_protected:Npn \keythms_thmstyle_declarestyle:nn #1#2
- {
+ { % user is in charge of spacing with \NAME and \NUMBER (thmtools compat...)
+ \cs_set:Npn \NAME { \keythms_thmstyle_thmname:n { ####1 } }
+ \cs_set:Npn \NUMBER
+ {
+ \keythms_thmstyle_thmnumber:n
+ {
+ \group_begin:
+ \exp_not:V \l__keythms_thmstyle_numberfont_tl
+ ####2
+ \group_end:
+ }
+ }
+ \cs_set:Npn \NOTE
+ {
+ \keythms_thmstyle_thmnote:n
+ { \exp_not:V \l__keythms_thmstyle_noteseparator_tl
+ \group_begin: % group so notefont doesn't affect headpunct
+ \exp_not:V \l__keythms_thmstyle_notefont_tl
+ \l__keythms_thmstyle_lnotebrace_tl
+ ####3
+ \l__keythms_thmstyle_rnotebrace_tl
+ \group_end:
+ }
+ }
\clist_clear:N \l__keythms_thmstyle_savedkeys_clist
\tl_use:N \l__keythms_thmstyle_defaultkeys_tl
\keys_set:nn { keytheorems/thmstyle } { #2 }
- \keythms_thmstyle_new:nVVVVVVVe { #1 }
+ \__keythms_thmstyle_new:nVVVVVVVe { #1 }
\l__keythms_thmstyle_spaceabove_tl
\l__keythms_thmstyle_spacebelow_tl
\l__keythms_thmstyle_bodyfont_tl
@@ -422,14 +406,41 @@
\l__keythms_thmstyle_headpunct_tl
\l__keythms_thmstyle_postheadspace_tl
{ \text_expand:n { \keythms_thmstyle_headcmd:nnn{##1}{##2}{##3} } }
- % Define new inherit-style key
- \keys_define:nn { keytheorems/thmstyle }
- { inherit-style / #1 .meta:n = { #2 } }
- \tl_if_exist:cF { l__keythms_thmstyle_ #1 _savedkeys_tl }
- { \tl_new:c { l__keythms_thmstyle_ #1 _savedkeys_tl } }
+ % Define inherit-style key
+ \tl_gclear_new:c { g__keythms_thmstyle_#1_metakeys_tl }
+ \tl_gset:cn { g__keythms_thmstyle_#1_metakeys_tl } { #2 }
+ \tl_clear_new:c { l__keythms_thmstyle_#1_savedthmkeys_tl }
\keys_precompile:nVc { keytheorems/thm }
\l__keythms_thmstyle_savedkeys_clist
- { l__keythms_thmstyle_ #1 _savedkeys_tl }
+ { l__keythms_thmstyle_#1_savedthmkeys_tl }
+ \tl_if_empty:NF \l__keythms_thmstyle_spaceabove_tl
+ {
+ \skip_zero_new:c { g__keythms_thmstyle_#1_tcbspaceabove_skip }
+ \skip_set_eq:cN { g__keythms_thmstyle_#1_tcbspaceabove_skip }
+ \l__keythms_thmstyle_spaceabove_tl
+ }
+ \tl_if_empty:NF \l__keythms_thmstyle_spacebelow_tl
+ {
+ \skip_zero_new:c { g__keythms_thmstyle_#1_tcbspacebelow_skip }
+ \skip_set_eq:cN { g__keythms_thmstyle_#1_tcbspacebelow_skip }
+ \l__keythms_thmstyle_spacebelow_tl
+ }
+ \cs_undefine:N \NAME % undefine to prevent conflicts
+ \cs_undefine:N \NUMBER
+ \cs_undefine:N \NOTE
+ }
+
+% set up plain, definition, and remark for inherit-style
+\tl_new:N \g__keythms_thmstyle_plain_metakeys_tl
+\tl_new:N \g__keythms_thmstyle_definition_metakeys_tl
+\tl_new:N \g__keythms_thmstyle_remark_metakeys_tl
+\tl_gset:Nn \g__keythms_thmstyle_definition_metakeys_tl { bodyfont=\normalfont }
+\tl_gset:Nn \g__keythms_thmstyle_remark_metakeys_tl
+ {
+ bodyfont = \normalfont,
+ headfont = \itshape,
+ spaceabove = 0.5\topsep,
+ spacebelow = 0.5\topsep,
}
%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -437,10 +448,8 @@
%%%%%%%%%%%%%%%%%%%%%%%%%
% FIX: reimplement these without \NewDocumentCommand and \SplitArgument
-
-% \keythms_thm_setrefnames:n { <envname> } { <refname> or <sing,plural> }
\NewDocumentCommand \keythms_thm_setrefnames:nn
- { m >{\SplitArgument{1}{,}} m }
+ { m >{\SplitArgument{1}{,}} m } % #1 = envname, #2 = <refname> or <sing,plural>
{ \__keythms_thm_setrefnames_aux:nnn{#1}#2 }
\cs_new_protected:Npn \__keythms_thm_setrefnames_aux:nnn #1#2#3
{
@@ -451,12 +460,17 @@
{ \crefname{#1}{#2}{\textbf{??~(pl.~#2)}} }
{ \crefname{#1}{#2}{#3} }
}
+ \IfPackageLoadedT { zref-clever }
+ {
+ \tl_if_novalue:nTF { #3 }
+ { \zcRefTypeSetup{#1}{ name-sg=#2 } }
+ { \zcRefTypeSetup{#1}{ name-sg=#2, name-pl=#3 } }
+ }
}
\cs_generate_variant:Nn \keythms_thm_setrefnames:nn { nV }
-% \keythms_thm_setRefnames:n { <envname> } { <refname> or <sing,plural> }
\NewDocumentCommand \keythms_thm_setRefnames:nn
- { m >{\SplitArgument{1}{,}} m }
+ { m >{\SplitArgument{1}{,}} m } % #1 = envname, #2 = <refname> or <sing,plural>
{ \__keythms_thm_setRefnames_aux:nnn{#1}#2 }
\cs_new_protected:Npn \__keythms_thm_setRefnames_aux:nnn #1#2#3
{
@@ -467,173 +481,167 @@
{ \Crefname{#1}{#2}{\textbf{??~(pl.~#2)}} }
{ \Crefname{#1}{#2}{#3} }
}
+ \IfPackageLoadedT { zref-clever }
+ {
+ \tl_if_novalue:nTF { #3 }
+ { \zcRefTypeSetup{#1}{ Name-sg=#2 } }
+ { \zcRefTypeSetup{#1}{ Name-sg=#2, Name-pl=#3 } }
+ }
}
\cs_generate_variant:Nn \keythms_thm_setRefnames:nn { nV }
\keys_define:nn { keytheorems/thm }
{
+ heading .meta:n = { name = {#1} },
+ leftmargin .dim_set:N = \l__keythms_thm_leftmargin_dim,
name .tl_set:N = \l__keythms_thm_name_tl,
- title .meta:n = { name = #1 },
- heading .meta:n = { name = #1 },
- refname .tl_set:N = \l__keythms_thm_refname_tl,
- Refname .tl_set:N = \l__keythms_thm_Refname_tl,
numbered .choice:,
- numbered / true .code:n = \bool_set_true:N \l__keythms_thm_numbered_bool,
+ numbered .default:n = true,
numbered / false .code:n = \bool_set_false:N \l__keythms_thm_numbered_bool,
- numbered / yes .meta:n = { numbered = true },
- numbered / no .meta:n = { numbered = false },
+ numbered / no .meta:n = { numbered = false },
+ numbered / true .code:n = \bool_set_true:N \l__keythms_thm_numbered_bool,
numbered / unless-unique .code:n =
{
\bool_set_true:N \l__keythms_thm_unlessunique_bool
},
numbered / unless~unique .meta:n = { numbered = unless-unique },
- numbered .default:n = true,
+ numbered / yes .meta:n = { numbered = true },
+ numberlike .meta:n = { sibling = {#1} },
+ numberwithin .meta:n = { parent = {#1} },
parent .tl_set:N = \l__keythms_thm_parent_tl,
- numberwithin .meta:n = { parent = #1 },
- within .meta:n = { parent = #1 },
- sibling .tl_set:N = \l__keythms_thm_sibling_tl,
- numberlike .meta:n = { sibling = #1 },
- sharenumber .meta:n = { sibling = #1 },
- style .tl_set:N = \l__keythms_thm_style_tl,
- style .groups:n = { style-comes-first },
- preheadhook .tl_set:N = \l__keythms_thm_preheadhook_tl,
+ postfoothook .tl_set:N = \l__keythms_thm_postfoothook_tl,
postheadhook .tl_set:N = \l__keythms_thm_postheadhook_tl,
prefoothook .tl_set:N = \l__keythms_thm_prefoothook_tl,
- postfoothook .tl_set:N = \l__keythms_thm_postfoothook_tl,
+ preheadhook .tl_set:N = \l__keythms_thm_preheadhook_tl,
qed .tl_set:N = \l__keythms_thm_qed_tl,
- qed .default:n = \c_novalue_tl,
+ qed .default:o = \c_novalue_tl,
% ^ distinguish between 'qed' and 'qed={}'
- tcolorbox .tl_set:N = \l__keythms_thm_tcbkeys_tl,
+ refname .tl_set:N = \l__keythms_thm_refname_tl,
+ Refname .tl_set:N = \l__keythms_thm_Refname_tl,
+ rightmargin .dim_set:N = \l__keythms_thm_rightmargin_dim,
+ sharenumber .meta:n = { sibling = {#1} },
+ sibling .tl_set:N = \l__keythms_thm_sibling_tl,
+ style .tl_set:N = \l__keythms_thm_style_tl,
+ style .groups:n = { style-comes-first },
+ tcolorbox .code:n =
+ {
+ \int_set:Nn \l__keythms_thm_tcbstate_int { 1 }
+ \tl_set:Nn \l__keythms_thm_tcbkeys_tl { #1 }
+ },
tcolorbox .default:n = {},
- tcolorbox-no-titlebar .meta:n =
+ tcolorbox-no-titlebar .code:n =
{
- tcolorbox={
- notitle,
- before~upper={
- \group_begin:
- \__keythms_thm_tcboxtemphead:
- \group_end:
- },
- #1
- }
+ \int_set:Nn \l__keythms_thm_tcbstate_int { 2 }
+ \tl_set:Nn \l__keythms_thm_tcbkeys_tl { #1 }
},
tcolorbox-no-titlebar .default:n = {},
- }
-
-% what below is unnecessary? I really don't understand this code.
-\cs_new_protected:Npn \__keythms_thm_storedeferredthmhead:n #1
- {
- \if@inlabel \indent \par \fi % eject a section head if one is pending
- \if@nobreak
- \adjust@parskip@nobreak
- \else
- \addpenalty\@beginparpenalty
- \addvspace\@topsep
- \addvspace{-\parskip}
- \fi
- % \global\@inlabeltrue % MY COMMENT: if this is uncommented then spacing after sections is wrong
- \everypar\dth@everypar
- \cs_set:Npn \__keythms_thm_tcboxtemphead: { \normalfont #1 }
- \ignorespaces
+ title .meta:n = { name = {#1} },
+ within .meta:n = { parent = {#1} },
}
\keys_precompile:nnN { keytheorems/thm }
{
+ leftmargin = 0pt,
name = \q_no_value,
- refname = \q_no_value,
- Refname = \q_no_value,
numbered = true,
parent = {},
- sibling = {},
- style = {},
- preheadhook = {},
+ postfoothook = {},
postheadhook = {},
prefoothook = {},
- postfoothook = {},
+ preheadhook = {},
qed = \q_no_value,
- tcolorbox = \q_no_value,
+ refname = \q_no_value,
+ Refname = \q_no_value,
+ rightmargin = 0pt,
+ sibling = {},
+ style = {},
}
\l__keythms_thm_defaultkeys_tl
\cs_new_protected:Npn \__keythms_thm_makethmhooks:n #1
{
- \hook_new:n { keytheorems/#1/prehead }
- \hook_new:n { keytheorems/#1/posthead }
- \hook_new_reversed:n { keytheorems/#1/prefoot }
- \hook_new_reversed:n { keytheorems/#1/postfoot }
+ \hook_new_pair:nn { keytheorems/#1/prehead } { keytheorems/#1/postfoot }
+ \hook_new_pair:nn { keytheorems/#1/posthead } { keytheorems/#1/prefoot }
\hook_new:n { keytheorems/#1/restated }
}
% Make generic theorem hooks
\__keythms_thm_makethmhooks:n { allthms }
-% \newkeytheorem{<name>}{<keys>}
-\NewDocumentCommand \newkeytheorem { m O{} }
- {
+\NewDocumentCommand \newkeytheorem { m +O{} }
+ { % #1 = name, #2 = keys
\clist_map_inline:nn { #1 } % define multiple theorems at once
{ \keythms_thm_newkeythm:nn { ##1 } { #2 } }
}
-
+\NewDocumentCommand \renewkeytheorem { m +O{} }
+ { % #1 = name, #2 = keys
+ \clist_map_inline:nn { #1 }
+ { \keythms_thm_renewkeythm:nn { ##1 } { #2 } }
+ }
+\NewDocumentCommand \providekeytheorem { m +O{} }
+ { % #1 = name, #2 = keys
+ \clist_map_inline:nn { #1 }
+ { \keythms_thm_providekeythm:nn { ##1 } { #2 } }
+ }
+\NewDocumentCommand \declarekeytheorem { m +O{} }
+ { % #1 = name, #2 = keys
+ \clist_map_inline:nn { #1 }
+ { \keythms_thm_declarekeythm:nn { ##1 } { #2 } }
+ }
\@onlypreamble \newkeytheorem
+\@onlypreamble \renewkeytheorem
+\@onlypreamble \providekeytheorem
+\@onlypreamble \declarekeytheorem
% to prevent error when plain, remark, or definition style used
-\tl_new:N \l__keythms_thmstyle_plain_savedkeys_tl
-\tl_new:N \l__keythms_thmstyle_remark_savedkeys_tl
-\tl_new:N \l__keythms_thmstyle_definition_savedkeys_tl
+\tl_new:N \l__keythms_thmstyle_plain_savedthmkeys_tl
+\tl_new:N \l__keythms_thmstyle_remark_savedthmkeys_tl
+\tl_new:N \l__keythms_thmstyle_definition_savedthmkeys_tl
-% \keythms_thm_newkeythm:nn { <envname> } { <keys> }
\cs_new_protected:Npn \keythms_thm_newkeythm:nn #1#2
- {
+ { % #1 = name, #2 = keys
% Store envname
\tl_set:Nn \l__keythms_thm_envname_tl { #1 }
+ % Set up tl's for hooks; hooks will be created and added to at begindocument
+ \tl_gclear_new:c { g__keythms_thm_preheadfromkeys_#1_tl }
+ \tl_gclear_new:c { g__keythms_thm_postheadfromkeys_#1_tl }
+ \tl_gclear_new:c { g__keythms_thm_prefootfromkeys_#1_tl }
+ \tl_gclear_new:c { g__keythms_thm_postfootfromkeys_#1_tl }
% Make unless-unique false by default (can't precompile this)
\bool_set_false:N \l__keythms_thm_unlessunique_bool
% Set default keys
\tl_use:N \l__keythms_thm_defaultkeys_tl
+ % Initialize tcb state to zero (1 is with title bar, 2 is without title bar)
+ \int_zero:N \l__keythms_thm_tcbstate_int
% First set style so we can pick up additional thm keys, then overwrite if necessary
\keys_set_groups:nnn { keytheorems/thm } { style-comes-first } { #2 }
- \tl_if_empty:NF \l__keythms_thm_style_tl
+ % Store theorem style
+ \tl_set:Ne \l__keythms_thm_currentthmstyle_tl { \the\thm@style }
+ \tl_if_empty:NTF \l__keythms_thm_style_tl
+ { % if \theoremstyle set, also use saved thm keys
+ \tl_if_exist:cT {l__keythms_thmstyle_ \l__keythms_thm_currentthmstyle_tl _savedthmkeys_tl}
+ { \tl_use:c {l__keythms_thmstyle_ \l__keythms_thm_currentthmstyle_tl _savedthmkeys_tl} }
+ }
{
- % Store theorem style
- \tl_set:Ne \l__keythms_thm_currentthmstyle_tl { \the\thm@style }
% Temporarily set theorem style
\__keythms_theoremstyle:n { \l__keythms_thm_style_tl }
% If thm keys given in style, call now (possibly overwritten in next step)
% but don't error if user uses a style defined with just \newtheoremstyle
- \tl_if_exist:cT { l__keythms_thmstyle_ \l__keythms_thm_style_tl _savedkeys_tl }
- { \tl_use:c { l__keythms_thmstyle_ \l__keythms_thm_style_tl _savedkeys_tl } }
+ \tl_if_exist:cT { l__keythms_thmstyle_ \l__keythms_thm_style_tl _savedthmkeys_tl }
+ { \tl_use:c { l__keythms_thmstyle_ \l__keythms_thm_style_tl _savedthmkeys_tl } }
}
% Set env-specific keys
\keys_set:nn { keytheorems/thm } { #2 }
- % Set up env-specific hooks
- \__keythms_thm_makethmhooks:n { #1 }
- % Add to env-specific hooks (use label so code given in keys is outermost)
- % NOTE: faster to check if empty than add empty code to hook
- \tl_if_empty:NF \l__keythms_thm_preheadhook_tl
- {
- \hook_gput_code:nnV { keytheorems/#1/prehead }
- { keythms_hook_keys } \l__keythms_thm_preheadhook_tl
- }
- \tl_if_empty:NF \l__keythms_thm_postheadhook_tl
- {
- \hook_gput_code:nnV { keytheorems/#1/posthead }
- { keythms_hook_keys } \l__keythms_thm_postheadhook_tl
- }
- \tl_if_empty:NF \l__keythms_thm_prefoothook_tl
- {
- \hook_gput_code:nnV { keytheorems/#1/prefoot }
- { keythms_hook_keys } \l__keythms_thm_prefoothook_tl
- }
- \tl_if_empty:NF \l__keythms_thm_postfoothook_tl
- {
- \hook_gput_code:nnV { keytheorems/#1/postfoot }
- { keythms_hook_keys } \l__keythms_thm_postfoothook_tl
- }
+ % Build tl for env-specific hooks; will be added to hooks at begindocument
+ \tl_gput_right:cV { g__keythms_thm_preheadfromkeys_#1_tl } \l__keythms_thm_preheadhook_tl
+ \tl_gput_right:cV { g__keythms_thm_postheadfromkeys_#1_tl } \l__keythms_thm_postheadhook_tl
+ \tl_gput_right:cV { g__keythms_thm_prefootfromkeys_#1_tl } \l__keythms_thm_prefoothook_tl
+ \tl_gput_right:cV { g__keythms_thm_postfootfromkeys_#1_tl } \l__keythms_thm_postfoothook_tl
% Set name if none given
\quark_if_no_value:NT \l__keythms_thm_name_tl % use quark so name={} is valid
{
% use e so \text_titlecase called only once per theorem definition,
- % not each time the theorem is used
+ % not each time the theorem is used
\tl_set:Ne \l__keythms_thm_name_tl
{ \text_titlecase_first:n { #1 } }
}
@@ -647,8 +655,8 @@
\RequirePackage[unq]{unique}
\tl_if_empty:NTF \l__keythms_thm_parent_tl
{
- \hook_gput_code:nnn { keytheorems/#1/prehead }
- { keythms_hook_keys } { \setuniqmark { #1 } }
+ \tl_gput_right:cn { g__keythms_thm_preheadfromkeys_#1_tl }
+ { \setuniqmark { #1 } }
\ifuniq{ #1 }
{ \bool_set_false:N \l__keythms_thm_numbered_bool }
{ \bool_set_true:N \l__keythms_thm_numbered_bool }
@@ -667,7 +675,7 @@
}
{
\__keythms_thm_new_unnumbered:nV { #1 } \l__keythms_thm_name_tl
- \hook_gput_code:nnn { keytheorems/#1/prehead } { keythms_hook_keys }
+ \tl_gput_right:cn { g__keythms_thm_preheadfromkeys_#1_tl }
{
\keythms_if_restating:F
{ \refstepcounter{ keythms_unnumbered_dummyctr } }
@@ -702,7 +710,7 @@
}
{
\__keythms_thm_new_unnumbered:nV { #1 } \l__keythms_thm_name_tl
- \hook_gput_code:nnn { keytheorems/#1/prehead } { keythms_hook_keys }
+ \tl_gput_right:cn { g__keythms_thm_preheadfromkeys_#1_tl }
{
\keythms_if_restating:F
{ \refstepcounter{ keythms_unnumbered_dummyctr } }
@@ -719,107 +727,252 @@
{ \keythms_thm_setrefnames:nV { #1 } \l__keythms_thm_refname_tl }
\quark_if_no_value:NF \l__keythms_thm_Refname_tl
{ \keythms_thm_setRefnames:nV { #1 } \l__keythms_thm_Refname_tl }
+ % Set margins if needed
+ \bool_lazy_or:nnT
+ { ! \dim_compare_p:nNn { \l__keythms_thm_leftmargin_dim } = { 0pt } }
+ { ! \dim_compare_p:nNn { \l__keythms_thm_rightmargin_dim } = { 0pt } }
+ {
+ \exp_args:NnVV \__keythms_thm_margincode:nnn { #1 }
+ \l__keythms_thm_leftmargin_dim \l__keythms_thm_rightmargin_dim
+ }
% Set up qed if needed
\quark_if_no_value:NF \l__keythms_thm_qed_tl
{
\exp_args:Nno \__keythms_thm_qedcode:nn { #1 } { \l__keythms_thm_qed_tl }
}
% Set up tcolorbox if needed
- \quark_if_no_value:NF \l__keythms_thm_tcbkeys_tl
+ \int_compare:nNnTF { \l__keythms_thm_tcbstate_int } = { 1 }
{
- \exp_args:Nno \__keythms_thm_tcboxcode:nn { #1 }
+ \exp_args:Nno \__keythms_thm_tcbcode:nn { #1 }
{ \l__keythms_thm_tcbkeys_tl }
}
+ {
+ \int_compare:nNnT { \l__keythms_thm_tcbstate_int } = { 2 }
+ {
+ \exp_args:Nno \__keythms_thm_tcbnotitlebarcode:nn { #1 }
+ { \l__keythms_thm_tcbkeys_tl }
+ }
+ }
+ % Set up list-of definition
+ \cs_set_eq:cN { l@ #1 } \keythms_listof_tocline:
% Set default list-of display command
\__keythms_listof_show_aux:n { #1 }
% Set theorem style back to original state if needed
\tl_if_empty:NF \l__keythms_thm_style_tl
+ { \__keythms_theoremstyle:V \l__keythms_thm_currentthmstyle_tl }
+ }
+
+\hook_gput_code:nnn { begindocument } { . }
+ {
+ \prop_map_inline:Nn \g__keythms_thmnames_prop
{
- \__keythms_theoremstyle:V \l__keythms_thm_currentthmstyle_tl
+ \__keythms_thm_makethmhooks:n { #1 }
+ \clist_map_inline:nn { prehead, posthead, prefoot, postfoot }
+ {
+ \tl_if_empty:cF { g__keythms_thm_##1fromkeys_#1_tl }
+ {
+ \hook_gput_code:nnv { keytheorems/#1/##1 } { keythms_hook_keys }
+ { g__keythms_thm_##1fromkeys_#1_tl }
+ }
+ }
+ \use:c { g__keythms_thm_tcbpatch_#1_tl }
}
+ \cs_set_eq:NN \__keythms_thm_origtrivlist: \trivlist % for margin code below
}
-\cs_new_protected:Npn \__keythms_thm_tcboxcode:nn #1#2
+\cs_new_protected:Npn \__keythms_thm_margincode:nnn #1#2#3
{
- \RequirePackage{tcolorbox}
- \hook_gput_code:nnn { keytheorems/#1/prehead }
- { keythms_tcbox }
+ \tl_gput_right:cn { g__keythms_thm_preheadfromkeys_#1_tl }
{
- \cs_set_eq:NN \deferred@thm@head \__keythms_thm_storedeferredthmhead:n
+ \dim_set_eq:NN \l__keythms_thm_currparindent_dim \parindent
+ \dim_set_eq:NN \l__keythms_thm_currparskip_dim \parskip
+ \cs_set_protected:Npn \trivlist
+ {
+ \list{ }
+ {
+ \dim_set:Nn \leftmargin { #2 }
+ \dim_set:Nn \rightmargin { #3 }
+ \dim_zero:N \labelwidth % trivlist does this; important for tcb-no-title
+ % need to revert some adjustments \list makes (any more?)
+ \int_gdecr:N \@listdepth % avoid changing format of inner lists
+ \dim_set_eq:NN \listparindent \l__keythms_thm_currparindent_dim
+ \dim_set_eq:NN \parsep \l__keythms_thm_currparskip_dim
+ }
+ }
+ }
+ \tl_gput_right:cn { g__keythms_thm_postheadfromkeys_#1_tl }
+ { \cs_set_eq:NN \trivlist \__keythms_thm_origtrivlist: }
+ }
+
+\hook_gput_code:nnn { begindocument/end } { . }
+ { % use /end because hyperref redefines \Hy@theorem@makelinktarget in begindocument
+ \cs_new_eq:NN \__keythms_thm_origdeferred@thm@head:n \deferred@thm@head
+ \cs_new_eq:NN \__keythms_thm_origHy@theorem@makelinktarget:n \Hy@theorem@makelinktarget
+ }
+\cs_new_protected:Npn \__keythms_thm_tcbcode:nn #1#2
+ { % #1 = name, #2 = tcolorbox keys
+ \tl_gput_right:cn { g__keythms_thm_preheadfromkeys_#1_tl }
+ {
+ \cs_set_eq:NN \deferred@thm@head \__keythms_thm_storedeferred@thm@head:n
\cs_set_eq:NN \Hy@theorem@makelinktarget \use_none:n
- % ^ don't like playing with hyperref internals... but don't see around
- % it because hyperref tries to add to para hook which doesn't work
- % when title set up the way we do it
- \cs_set_protected:Npn \thm@space@setup { \thm@preskip=0pt \thm@postskip=0pt }
- % ^ to match tcolorbox defaults; shouldn't interfere with user styles
- }
- \hook_gset_rule:nnnn { keytheorems/#1/posthead }
- { keythms_tcbox } { before } { keythms_hook_keys }
- \hook_gset_rule:nnnn { keytheorems/#1/prefoot }
- { keythms_tcbox } { after } { keythms_hook_keys }
- \hook_gset_rule:nnnn { keytheorems/#1/prefoot }
- { keythms_tcbox } { after } { keythms_qed }
- \bool_if:NTF \l__keythms_thm_numbered_bool
- {
- \hook_gput_code:nnn { begindocument } { . }
- {
- \IfPackageLoadedTF{cleveref}
+ % % ^ don't like playing with hyperref internals... but don't see around
+ % % it because hyperref tries to add to para hook which doesn't work
+ % % when title set up the way we do it
+ }
+ \tl_gput_right:cn { g__keythms_thm_postheadfromkeys_#1_tl }
+ {
+ \cs_set_eq:NN \deferred@thm@head \__keythms_thm_origdeferred@thm@head:n
+ \cs_set_eq:NN \Hy@theorem@makelinktarget \__keythms_thm_origHy@theorem@makelinktarget:n
+ }
+ \__keythms_thm_tcbshared:nn { #1 }
+ {
+ title={ \__keythms_thm_tcbtemphead: },
+ #2
+ }
+ \bool_if:NT \l__keythms_thm_numbered_bool
+ {
+ \tl_gclear_new:c { g__keythms_thm_tcbpatch_#1_tl }
+ \tl_gset:cn { g__keythms_thm_tcbpatch_#1_tl }
+ {
+ \IfPackageLoadedF { cleveref }
{ % hyperref doesn't patch \@thm if cleveref loaded
- \hook_gput_code:nnn { keytheorems/#1/posthead }
- { keythms_tcbox }
+ \tcbset
{
- \begin{tcolorbox}[
- savedelimiter=#1,
- title={ \__keythms_thm_tcboxtemphead: },
- #2]
+ keythms_tcb_#1/.append~style = % fix hyperlinking
+ { phantom={ \MakeLinkTarget*{\@currentHref} } }
}
}
+ }
+ }
+ \tl_gput_left:cn { g__keythms_thm_postheadfromkeys_#1_tl }
+ { \begin{tcolorbox}[keythms_tcb_#1] }
+ \tl_gput_right:cn { g__keythms_thm_prefootfromkeys_#1_tl }
+ { \end{tcolorbox} }
+ }
+\cs_new_protected:Npn \__keythms_thm_tcbnotitlebarcode:nn #1#2
+ { % #1 = name, #2 = tcolorbox keys
+ \__keythms_thm_tcbshared:nn { #1 } { #2 }
+ \tl_gclear_new:c { g__keythms_thm_#1_tcbprehead_tl }
+ \tl_gset:cn { g__keythms_thm_#1_tcbprehead_tl }
+ { \begin{tcolorbox}[keythms_tcb_#1] }
+ \tl_gclear_new:c { g__keythms_thm_#1_tcbpostfoot_tl }
+ \tl_gset:cn { g__keythms_thm_#1_tcbpostfoot_tl }
+ { \end{tcolorbox} }
+ }
+\cs_new_protected:Npn \__keythms_thm_tcbshared:nn #1#2
+ {
+ \RequirePackage{tcolorbox}
+ \tcbset
+ {
+ keythms_tcb_#1/.style =
+ {
+ savedelimiter=#1,
+ #2
+ }
+ }
+ \tl_if_empty:NTF \l__keythms_thm_style_tl
+ {
+ \tl_set_eq:NN \l__keythms_thm_tempstyle_tl
+ \l__keythms_thm_currentthmstyle_tl
+ }
+ { \tl_set_eq:NN \l__keythms_thm_tempstyle_tl \l__keythms_thm_style_tl }
+ \tl_gput_right:ce { g__keythms_thm_preheadfromkeys_#1_tl }
+ { % don't mess with tcolorbox defaults unless explicitly asked to in style
+ \exp_not:N \tl_put_right:cn { th@ \l__keythms_thm_tempstyle_tl }
+ { \thm@preskip=0pt \thm@postskip=0pt }
+ }
+ \tl_if_exist:cT
+ { g__keythms_thmstyle_ \l__keythms_thm_tempstyle_tl _tcbspaceabove_skip }
+ {
+ \exp_args:Ne \tcbset
+ {
+ keythms_tcb_#1/.prefix~style =
{
- \hook_gput_code:nnn { keytheorems/#1/posthead }
- { keythms_tcbox }
- {
- \begin{tcolorbox}[
- savedelimiter=#1,
- title={ \__keythms_thm_tcboxtemphead: },
- phantom={ \MakeLinkTarget*{\@currentHref} }, % fix hyperlinking
- #2]
- }
+ before~skip =
+ \skip_use:c { g__keythms_thmstyle_ \l__keythms_thm_tempstyle_tl _tcbspaceabove_skip }
}
}
}
+ \tl_if_exist:cT
+ { g__keythms_thmstyle_ \l__keythms_thm_tempstyle_tl _tcbspacebelow_skip }
{
- \hook_gput_code:nnn { keytheorems/#1/posthead }
- { keythms_tcbox }
+ \exp_args:Ne \tcbset
{
- \begin{tcolorbox}[
- savedelimiter=#1,
- title={ \__keythms_thm_tcboxtemphead: },
- #2]
+ keythms_tcb_#1/.prefix~style =
+ {
+ after~skip =
+ \skip_use:c { g__keythms_thmstyle_ \l__keythms_thm_tempstyle_tl _tcbspacebelow_skip }
+ }
}
}
- \hook_gput_code:nnn { keytheorems/#1/prefoot }
- { keythms_tcbox } { \end{tcolorbox} }
}
-\cs_new_protected:Npn \__keythms_thm_qedcode:nn #1#2
+
+\cs_new_protected:Npn \__keythms_thm_storedeferred@thm@head:n #1
{
- \hook_gput_code:nnn { keytheorems/#1/posthead }
- { keythms_qed }
+ \cs_set:Npn \__keythms_thm_tcbtemphead: { \normalfont #1 }
+ \ignorespaces
+ }
+\cs_new_protected:Npn \__keythms_thm_qedcode:nn #1#2
+ { % #1 = name, #2 = symbol
+ \tl_gput_right:cn { g__keythms_thm_postheadfromkeys_#1_tl }
{
- \exp_args:No \tl_if_novalue:nF { #2 } { \protected@edef\qedsymbol{#2} }
+ \tl_if_novalue:nF { #2 } { \protected@edef\qedsymbol{#2} }
\pushQED{\qed}
}
- \hook_gput_code:nnn { keytheorems/#1/prefoot }
- { keythms_qed }
+ \tl_gput_left:cn { g__keythms_thm_prefootfromkeys_#1_tl }
{
- \exp_args:No \tl_if_novalue:nF { #2 } { \protected@edef\qedsymbol{#2} }
+ \tl_if_novalue:nF { #2 } { \protected@edef\qedsymbol{#2} }
\popQED
}
}
+\cs_new_protected:Npn \__keythms_nocheck_removefromreset:nn #1#2
+ { % need to fake @ckpt counter
+ \group_begin:
+ \cs_if_exist:cF { c@#2 } { \cs_set:cpn { c@#2 } { } }
+ \@removefromreset{#1}{#2}
+ \group_end:
+ }
+
+\cs_new_protected:Npn \keythms_thm_renewkeythm:nn #1#2
+ { % #1 = name, #2 = keys
+ \cs_if_exist:cTF { #1 }
+ {
+ \cs_undefine:c { #1 }
+ \cs_undefine:c { c@ #1 }
+ \cs_undefine:c { the #1 }
+ \tl_if_exist:cT { g__keythms_thm_#1_parent_tl }
+ { % remove parent counter binding
+ \exp_args:Nnv \@removefromreset { #1 } { g__keythms_thm_#1_parent_tl }
+ }
+ \__keythms_nocheck_removefromreset:nn { #1 } { @ckpt }
+ \keythms_thm_newkeythm:nn { #1 } { #2 }
+ }
+ { \msg_error:nnn { keytheorems } { thm-undefined} { #1 } }
+ }
+\cs_new_protected:Npn \keythms_thm_providekeythm:nn #1#2
+ { % #1 = name, #2 = keys
+ \cs_if_free:cT { #1 }
+ {
+ \keythms_thm_newkeythm:nn { #1 } { #2 }
+ }
+ }
+\cs_new_protected:Npn \keythms_thm_declarekeythm:nn #1#2
+ { % #1 = name, #2 = keys
+ \cs_undefine:c { #1 }
+ \cs_undefine:c { c@ #1 }
+ \cs_undefine:c { the #1 }
+ \tl_if_exist:cT { g__keythms_thm_#1_parent_tl }
+ { % remove parent counter binding
+ \exp_args:Nnv \@removefromreset { #1 } { g__keythms_thm_#1_parent_tl }
+ }
+ \__keythms_nocheck_removefromreset:nn { #1 } { @ckpt }
+ \keythms_thm_newkeythm:nn { #1 } { #2 }
+ }
+
\cs_new_eq:NN \__keythms_theoremstyle:n \theoremstyle
\cs_generate_variant:Nn \__keythms_theoremstyle:n { V }
-% \newtheorem variants
\cs_new_eq:NN \__keythms_thm_new:w \newtheorem
\cs_new_protected:Npn \__keythms_thm_new_numbered:nn #1#2
@@ -831,7 +984,12 @@
\cs_generate_variant:Nn \__keythms_thm_new_unnumbered:nn { nV }
\cs_new_protected:Npn \__keythms_thm_new_parent:nnn #1#2#3
- { \__keythms_thm_new:w { #1 } { #2 } [ #3 ] }
+ {
+ % for \renewkeytheorem need to know parent key if set
+ \tl_gclear_new:c { g__keythms_thm_#1_parent_tl }
+ \tl_gset:cn { g__keythms_thm_#1_parent_tl } { #3 }
+ \__keythms_thm_new:w { #1 } { #2 } [ #3 ]
+ }
\cs_generate_variant:Nn \__keythms_thm_new_parent:nnn { nVV }
\cs_new_protected:Npn \__keythms_thm_new_sibling:nnn #1#2#3
@@ -846,11 +1004,14 @@
\DeclareEnvironmentCopy { keythms_orig_withparent_#1 } { #1 }
\renewenvironment { #1 } % opt arg is implicit
{
- \setuniqmark{ #1. \use:c {the #3} }
- \ifuniq{ #1. \use:c {the #3} }
+ \setuniqmark{ #1. \use:c { the #3 } }
+ \ifuniq{ #1. \use:c { the #3 } }
{
\keythms_if_restating:F
{ \refstepcounter{ keythms_unnumbered_dummyctr } }
+ \IfPackageLoadedT { tcolorbox }
+ { \tcbset{keythms_tcb_#1/.append~style=nophantom} }
+ % ^ otherwise we try to set two identical anchors
\begin{keythms_orig_nonumber_#1}
}
{
@@ -858,7 +1019,7 @@
}
}
{
- \ifuniq{ #1. \use:c {the #3} }
+ \ifuniq{ #1. \use:c { the #3 } }
{ \end{keythms_orig_nonumber_#1} }
{ \end{keythms_orig_withparent_#1} }
}
@@ -879,11 +1040,6 @@
{
\property_new:nnnn { keytheorems/recordednote } { now } { }
{ \l__keythms_thmuse_note_tl }
- \cs_new:Npn \__keythms_getrecordednote:n #1
- {
- \property_ref:nn { keythms_recordednote_#1 }
- { keytheorems/recordednote }
- }
\cs_new:Npn \__keythms_thmuse_recordnote:
{
\tl_if_empty:NF \l__keythms_thmuse_note_tl
@@ -893,17 +1049,16 @@
{ keytheorems/recordednote }
}
}
+ \cs_new:Npn \__keythms_getrecordednote:n #1
+ {
+ \property_ref:nn { keythms_recordednote_#1 }
+ { keytheorems/recordednote }
+ }
}
}
\keys_define:nn { keytheorems/thmuse }
{
- label .tl_set:N = \l__keythms_thmuse_label_tl,
- note .tl_set:N = \l__keythms_thmuse_note_tl,
- name .meta:n = { note = #1 },
- % ^ for compatibility. "name" is ambiguous and doesn't match amsthm language
- short-note .code:n = {}, % these do nothing at point of use
- short-name .code:n = {}, % ^ worthwhile compatibility?
continues .tl_set:N = \l__keythms_thmuse_contlabel_tl,
continues* .code:n =
{
@@ -915,21 +1070,30 @@
{ note = \l__keythms_tmpa_tl }
}
},
- store .tl_set:N = \l__keythms_thmuse_store_tl,
- %store .default:n = \q_no_value, % ={name} causes issues
- restate .meta:n = { store = #1 },
- % ^ thmtools compatibility
- listhack .choice:, % need equals sign
+ label .tl_set:N = \l__keythms_thmuse_label_tl,
+ listhack .choice:, % needs equals sign
listhack / true .code:n = \bool_set_true:N \l__keythms_thmuse_listhack_bool,
listhack / false .code:n = \bool_set_false:N \l__keythms_thmuse_listhack_bool,
listhack .initial:n = false,
- seq .code:n = {},
+ name .meta:n = { note = {#1} },
+ % ^ for compatibility. "name" is ambiguous and doesn't match amsthm language
+ note .tl_set:N = \l__keythms_thmuse_note_tl,
+ note .initial:n = {},
+ manual-num .tl_set:N = \l__keythms_thmuse_manualnum_tl,
+ restate .meta:n = { store = {#1} }, % thmtools compatibility
+ restate* .meta:n = { store* = {#1} },
+ restate-keys .clist_set:N = \l__keythms_thmuse_restatekeys_clist,
+ seq .code:n = {},
+ short-note .code:n = {}, % these do nothing at point of use
+ short-name .code:n = {},
+ store .tl_set:N = \l__keythms_thmuse_store_tl, % should this be .tl_set_e:N ?
+ store* .tl_set:N = \l__keythms_thmuse_storereversed_tl,
}
\cs_new_protected:Npn \keythms_keyify_theorem:n #1
{ % #1 = theorem name
\DeclareEnvironmentCopy { keythms_orig_#1 } { #1 }
- \DeclareDocumentEnvironment { keythms_grab_#1 } { m O{} +b }
+ \DeclareDocumentEnvironment { keythms_grab_#1 } { m m +b }
{ % ##1 = keys, ##2 = note, ##3 = theorem body
\__keythms_thm_prehead_code:n { #1 }
\begin{keythms_orig_#1}[{##2}]
@@ -951,27 +1115,86 @@
\__keythms_thm_postfoot_code:n { #1 }
}
{}
+ \DeclareDocumentEnvironment { keythms_grabreversed_#1 } { m m +b }
+ { % ##1 = keys, ##2 = note, ##3 = theorem body
+ \tl_if_exist:cTF
+ { c__keythms_storeatbegin_ \l__keythms_thmuse_storereversed_tl _restatecounters_tl }
+ {
+ \bool_set_true:N \l__keythms_thmuse_restating_bool
+ \prop_set_from_keyval:Ne \l__keythms_restate_counters_prop
+ { \tl_use:c { c__keythms_storeatbegin_ \l__keythms_thmuse_storereversed_tl _restatecounters_tl } }
+ \prop_map_inline:Nn \l__keythms_restate_counters_prop
+ {
+ \tl_set:ce { l_keythms_restate_current_####1_tl }
+ { \the\value{####1} }
+ \setcounter { ####1 } { ####2 }
+ % ^ FIX: what if eq's numbered by section, theorem, etc.? The
+ % thmtools code is opaque.... Or maybe should be up to the
+ % user to say "restate-counters={section,chapter,...}".
+ \cs_set:cpn { theH ####1 }
+ { \use:c { the ####1 } . \theHkeythms_restate_dummyctr }
+ }
+ \tl_if_empty:cTF
+ { c__keythms_storeatbegin_ \l__keythms_thmuse_storereversed_tl _label_tl }
+ { \refstepcounter{keythms_restate_dummyctr} } % for unnumbered theorems
+ {
+ \cs_set:cpn { the #1 }
+ { \tl_use:c { c__keythms_storeatbegin_ \l__keythms_thmuse_storereversed_tl _label_tl } }
+ \cs_set_eq:cN { c@ #1 } \c@keythms_restate_dummyctr
+ \cs_set_eq:cN { theH #1 } \theHkeythms_restate_dummyctr
+ % ^ why are the last two lines here? We shouldn't be referencing
+ % restated theorems. Think it's a remnant of thmtools
+ % WRONG: needed to make numbering correct after restated theorem.
+ % not sure about theH. <- this is needed to prevent duplicate anchors
+ }
+ }
+ {
+ \msg_warning:nnV { keytheorems } { store-reversed-not-got }
+ \l__keythms_thmuse_storereversed_tl
+ }
+ \__keythms_thm_prehead_code:n { #1 }
+ \hook_use:n { keytheorems/#1/restated }
+ \hook_use:n { keytheorems/allthms/restated }
+ \begin{keythms_orig_#1}[{##2}]
+ \__keythms_thm_posthead_code:n { #1 }
+ % below needs to come after posthead so that correct \@currentHref
+ % is stored for tcolorbox theorems
+ \__keythms_thm_addstoredreverseddata:nnn { #1 } { ##1 } { ##3 }
+ \__keythms_thm_tempstorerestatedatareversed:nnn { #1 } { ##1 } { ##3 }
+ ##3
+ \__keythms_thm_prefoot_code:n { #1 }
+ \end{keythms_orig_#1}
+ \__keythms_thm_postfoot_code:n { #1 }
+ \prop_map_inline:Nn \l__keythms_restate_counters_prop
+ {
+ \exp_args:Nnc \setcounter { ####1 }
+ { l_keythms_restate_current_####1_tl }
+ }
+ }
+ { }
% NOTE: have to do a lot of shenanigans to make sure the begin/end of grabbed
% theorem env captures only the body and no package code.
% This is the price of on-the-fly redefining the env to grab body
\RenewDocumentEnvironment { #1 } { ={note} O{} }
{
+ \tl_set:Nn \l_keythms_thmuse_envname_tl { #1 }
\keys_set:nn { keytheorems/thmuse } { ##1 }
- \tl_if_empty:NF \l__keythms_thmuse_store_tl
+ \tl_if_empty:NTF \l__keythms_thmuse_store_tl
+ {
+ \tl_if_empty:NTF \l__keythms_thmuse_storereversed_tl
+ { \__keythms_thm_prehead_code:n { #1 } }
+ {
+ \bool_gset_true:N \g__keythms_listof_writefile_bool
+ \cs_set_eq:NN \__keythms_withhooks_begin:nnn \__keythms_grabreversed_begin:nnn
+ \cs_set_eq:NN \__keythms_withhooks_end:n \__keythms_grabreversed_end:n
+ }
+ }
{
\bool_gset_true:N \g__keythms_listof_writefile_bool
- \cs_set_eq:NN \__keythms_withhooks_begin:nn \__keythms_grab_begin:nn
\cs_set_eq:NN \__keythms_withhooks_begin:nnn \__keythms_grab_begin:nnn
- \cs_set_eq:NN \__keythms_withhooks_begin:nnV \__keythms_grab_begin:nnV
\cs_set_eq:NN \__keythms_withhooks_end:n \__keythms_grab_end:n
}
- \__keythms_thm_prehead_continues_code:n { #1 }
- \tl_if_empty:NTF \l__keythms_thmuse_note_tl
- { \__keythms_withhooks_begin:nn { #1 } { ##1 } }
- {
- \__keythms_withhooks_begin:nnV { #1 } { ##1 }
- \l__keythms_thmuse_note_tl
- }
+ \__keythms_withhooks_begin:nnV { #1 } { ##1 } \l__keythms_thmuse_note_tl
}
{
\__keythms_withhooks_end:n { #1 }
@@ -989,30 +1212,42 @@
\cs_new:cpe
{ __keythms_getthm_ \l__keythms_thmuse_store_tl _body }
{
- \exp_not:N \__keythms_getthm_body:nn
+ \exp_not:N \__keythms_getthm_body:nnn
\exp_args:No \exp_not:o
{
- \exp_after:wN \__keythms_use_iii_v_braced:nnnnn
+ \exp_after:wN \__keythms_use_i_iii_v_braced:nnnnn
\g__keythms_thmuse_temprestatedata_tl
}
}
}
}
+ \tl_if_empty:NF \l__keythms_thmuse_storereversed_tl
+ {
+ \cs_if_exist:cF
+ { __keythms_getthm_ \l__keythms_thmuse_storereversed_tl _theorem }
+ {
+ \cs_new:cpe
+ { __keythms_getthm_ \l__keythms_thmuse_storereversed_tl _theorem }
+ {
+ \exp_not:N \__keythms_getthmreversed_theorem:nnn
+ \exp_not:o { \g__keythms_thmuse_temprestatedatareversed_tl }
+ }
+ \cs_new:cpn
+ { __keythms_getthm_ \l__keythms_thmuse_storereversed_tl _body }
+ {
+ \textbf{??}
+ \msg_warning:nnn { keytheorems } { restate-body-never-got }
+ { #1 }
+ }
+ }
+ }
}
}
-\cs_new:Npn \__keythms_use_iii_v_braced:nnnnn #1#2#3#4#5 { {#3}{#5} }
+\cs_new:Npn \__keythms_use_i_iii_v_braced:nnnnn #1#2#3#4#5 { {#1}{#3}{#5} }
-\cs_new_protected:Npn \__keythms_withhooks_begin:nn #1#2
- { % #1 = theorem name, #2 = keys
- \__keythms_thm_prehead_code:n { #1 }
- \begin{keythms_orig_#1}
- \__keythms_thm_posthead_code:n { #1 }
- \__keythms_thm_addcontentsdata:nnnn { #1 } { } { #2 } { }
- \ignorespaces % I hope this is alright
- }
+% withhooks_begin does not include prehead hook because we want to be able to access note
\cs_new_protected:Npn \__keythms_withhooks_begin:nnn #1#2#3
{ % #1 = theorem name, #2 = keys, #3 = note
- \__keythms_thm_prehead_code:n { #1 }
\begin{keythms_orig_#1}[{#3}]
\__keythms_thm_posthead_code:n { #1 }
\__keythms_thm_addcontentsdata:nnnn { #1 } { } { #2 } { }
@@ -1025,32 +1260,29 @@
\end{keythms_orig_#1}
\__keythms_thm_postfoot_code:n { #1 }
}
-\cs_new_protected:Npn \__keythms_grab_begin:nn #1#2
- { % #1 = theorem name, #2 = keys
- \begin{keythms_grab_#1}{#2}
- }
\cs_new_protected:Npn \__keythms_grab_begin:nnn #1#2#3
{ % #1 = theorem name, #2 = keys, #3 = note
- \begin{keythms_grab_#1}{#2}[{#3}]
+ \begin{keythms_grab_#1}{#2}{#3}
}
\cs_generate_variant:Nn \__keythms_grab_begin:nnn { nnV }
\cs_new_protected:Npn \__keythms_grab_end:n #1 { \end{keythms_grab_#1} }
-\cs_new_protected:Npn \__keythms_orig_begin:n #1 { \begin{keythms_orig_#1} }
+\cs_new_protected:Npn \__keythms_grabreversed_begin:nnn #1#2#3
+ { % #1 = theorem name, #2 = keys, #3 = note
+ \begin{keythms_grabreversed_#1}{#2}{#3}
+ }
+\cs_generate_variant:Nn \__keythms_grabreversed_begin:nnn { nnV }
+\cs_new_protected:Npn \__keythms_grabreversed_end:n #1
+ { \end{keythms_grabreversed_#1} }
+
\cs_new_protected:Npn \__keythms_orig_begin:nn #1#2
{ \begin{keythms_orig_#1}[{#2}] }
\cs_generate_variant:Nn \__keythms_orig_begin:nn { nV }
\cs_new_protected:Npn \__keythms_orig_end:n #1 { \end{keythms_orig_#1} }
-\cs_new_protected:Npn \__keythms_thm_prehead_code:n #1
- { % #1 = theorem name
- \tl_set:Nn \l__keythms_thmuse_envname_tl { #1 }
- \hook_use:n { keytheorems/#1/prehead }
- \hook_use:n { keytheorems/allthms/prehead }
- }
-%% this below has to be separate from prehead_code above since we need to add
+%% this below has to be separate from withhooks_begin above since we need to add
%% continues-code to note before retrieving it in \__keythms_withhooks_begin:nnV
-\cs_new_protected:Npn \__keythms_thm_prehead_continues_code:n #1
+\cs_new_protected:Npn \__keythms_thm_prehead_code:n #1
{ % #1 = theorem name
\tl_if_empty:NF \l__keythms_thmuse_contlabel_tl
{
@@ -1066,6 +1298,19 @@
\cs_set_eq:cN { theH #1 } \theHkeythms_continues_dummyctr
%\cs_set_eq:NN \setuniqmark \use_none:n % not the right fix
}
+ \tl_if_empty:NF \l__keythms_thmuse_manualnum_tl
+ {
+ \cs_set:cpn { the #1 }
+ { % prevent expansion for unexpandable tokens in \the<counter>
+ \exp_not:N \exp_not:n { \l__keythms_thmuse_manualnum_tl }
+ }
+ \cs_set_eq:cN { c@ #1 } \c@keythms_manualnum_dummyctr
+ \cs_set_eq:cN { theH #1 } \theHkeythms_manualnum_dummyctr
+ }
+ \hook_use:n { keytheorems/#1/prehead }
+ \hook_use:n { keytheorems/allthms/prehead }
+ % \use:c instead of \tl_use:c so doesn't error if tl doesn't exist
+ \use:c { g__keythms_thm_#1_tcbprehead_tl }
}
\cs_new_protected:Npn \__keythms_thm_posthead_code:n #1
{ % #1 = theorem name
@@ -1091,6 +1336,7 @@
}
\cs_new_protected:Npn \__keythms_thm_postfoot_code:n #1
{ % #1 = theorem name
+ \use:c { g__keythms_thm_#1_tcbpostfoot_tl }
\hook_use:n { keytheorems/allthms/postfoot }
\hook_use:n { keytheorems/#1/postfoot }
}
@@ -1099,9 +1345,9 @@
\keythms_listof_chaptervspacehack:
\iow_shipout:Ne \@auxout
{
- \exp_not:N \@writefile { thlist }
+ \token_to_str:N \@writefile { thlist }
{
- \KeyThmsSavedTheorem{ #1 }
+ \token_to_str:N \KeyThmsSavedTheorem{ #1 }
{ \@currentlabel }
{ \@currentHref }
{ \thepage }
@@ -1111,6 +1357,19 @@
}
}
}
+\cs_new_protected:Npn \__keythms_thm_addstoredreverseddata:nnn #1#2#3
+ { % #1 = theorem name, #2 = keys, #3 = body
+ \iow_shipout:Ne \@auxout
+ {
+ \token_to_str:N \@writefile { thlist }
+ {
+ \token_to_str:N \KeyThmsSavedTheoremReversed { \l__keythms_thmuse_storereversed_tl }
+ { #1 }
+ { \exp_not:n { #2 } }
+ { \exp_not:n { #3 } }
+ }
+ }
+ }
\cs_new_protected:Npn \__keythms_thm_tempstorerestatedata:nnn #1#2#3
{ % #1 = theorem name, #2 = keys, #3 = body
\tl_gset:Ne \g__keythms_thmuse_temprestatedata_tl % needs to be global to get out of env
@@ -1122,6 +1381,15 @@
{ \exp_not:n { #3 } } % with \text_expand:n ?
}
}
+\cs_new_protected:Npn \__keythms_thm_tempstorerestatedatareversed:nnn #1#2#3
+ {
+ \tl_gset:Ne \g__keythms_thmuse_temprestatedatareversed_tl % needs to be global to get out of env
+ {
+ { #1 }
+ { \exp_not:n { #2 } }
+ { \exp_not:n { #3 } }
+ }
+ }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Retrieving Theorem Data %%%
@@ -1129,16 +1397,20 @@
\cs_new_protected:Npn \KeyThmsSavedTheorem #1#2#3#4#5#6#7 % 7th arg is body
{ \use:c { __keythms_thmitem_#1:nnnnnn } {#2}{#3}{#4}{#5}{#6}{#7} }
+\cs_new_protected:Npn \KeyThmsSavedTheoremReversed #1#2#3#4 { } % gobble by default
\keys_define:nn { keytheorems/storeatbegin }
{
- store .tl_set:N = \l__keythms_storeatbegin_store_tl,
- restate .meta:n = { store=#1 },
- unknown .code:n = { } % do nothing with unknown keys
+ restate .meta:n = { store = {#1} },
+ restate* .meta:n = { store* = {#1} },
+ store .tl_set:N = \l__keythms_storeatbegin_store_tl,
+ store* .tl_set:N = \l__keythms_storeatbegin_storereversed_tl,
+ unknown .code:n = { } % do nothing with unknown keys
}
-\cs_new_protected:Npn \KeyThmsContentsLine #1 { #1 }
-\NewDocumentCommand \addtheoremcontentsline { m m }
+\cs_new_protected:Npn \KeyThmsContentsLine #1 { }
+% ^ initially a no-op, redefined where needed; important it's protected!
+\NewDocumentCommand \addtheoremcontentsline { m +m }
{
\addtocontents { thlist }
{
@@ -1149,7 +1421,7 @@
}
}
}
-\NewDocumentCommand \addtotheoremcontents { m }
+\NewDocumentCommand \addtotheoremcontents { +m }
{
\addtocontents { thlist }
{
@@ -1160,8 +1432,6 @@
\hook_gput_code:nnn { begindocument } { . }
{
\group_begin:
- \cs_set_eq:NN \KeyThmsContentsLine \use_none:n
- \cs_set_eq:NN \KeyThmsAddvspace \use_none:n
\cs_set_protected:Npn \KeyThmsSavedTheorem #1#2#3#4#5#6#7
{
\group_begin:
@@ -1177,11 +1447,42 @@
\cs_new_protected:cpn
{ __keythms_getthm_ \l__keythms_storeatbegin_store_tl _body }
{
- \__keythms_getthm_body:nn {#5}{#7}
+ \__keythms_getthm_body:nnn {#1}{#5}{#7}
+ }
+ }
+ \tl_if_empty:NF \l__keythms_storeatbegin_storereversed_tl
+ {
+ \tl_const:cn
+ { c__keythms_storeatbegin_ \l__keythms_storeatbegin_storereversed_tl _label_tl }
+ { #2 }
+ \tl_const:cn
+ { c__keythms_storeatbegin_ \l__keythms_storeatbegin_storereversed_tl _restatecounters_tl }
+ { #5 }
+ \cs_new_protected:cpn
+ { __keythms_getthm_ \l__keythms_storeatbegin_storereversed_tl _body }
+ {
+ \__keythms_getthm_body:nnn {#1}{#5}{#7}
}
}
\group_end:
}
+ \cs_set_protected:Npn \KeyThmsSavedTheoremReversed #1#2#3#4
+ {
+ \bool_new:c { g__keythms_restate_#1_called_bool }
+ \cs_gset:cpn { __keythms_getthm_#1_theorem }
+ { \__keythms_getthmreversed_theorem:nnn { #2 } { #3 } { #4 } }
+ \hook_gput_code:nnn { begindocument/end } { . }
+ {
+ \cs_if_exist:cF { __keythms_getthm_#1_body }
+ {
+ \cs_new_protected:cpn { __keythms_getthm_#1_body }
+ {
+ \textbf{??}
+ \msg_warning:nnn { keytheorems } { restate-body-never-got } { #1 }
+ }
+ }
+ }
+ }
\file_if_exist_input:n { \c_sys_jobname_str.thlist }
\group_end:
}
@@ -1193,6 +1494,17 @@
{ \prg_return_false: }
}
\NewDocumentCommand \IfRestatingTF { } { \keythms_if_restating:TF }
+\NewDocumentCommand \IfRestatingT { } { \keythms_if_restating:T }
+\NewDocumentCommand \IfRestatingF { } { \keythms_if_restating:F }
+
+\hook_gput_code:nnn { keytheorems/allthms/restated } { . }
+ { % code to disable things in restated theorems
+ \renewcommand\label[2][]{} % opt arg in case cleveref loaded
+ \cs_set_eq:NN \ltx@label \use_none:n % thmtools does this; why?
+ \cs_set_eq:NN \property_record:nn \use_none:nn
+ \cs_set_eq:NN \setuniqmark \use_none:n % work with numbered=unless-unique
+ % QUESTION: also disable \hyper@@anchor? \MakeLinkTarget?
+ }
\cs_new_protected:Npn \__keythms_getthm_theorem:nnnnn #1#2#3#4#5
{ % #1 = name, #2 = number, #3 = restate counters, #4 = keys, #5 = theorem body
@@ -1206,7 +1518,8 @@
% ^ FIX: what if eq's numbered by section, theorem, etc.? The
% thmtools code is opaque.... Or maybe should be up to the
% user to say "restate-counters={section,chapter,...}".
- \cs_set:cpn { theH ##1 } { \use:c { the ##1 } . \theHkeythms_restate_dummyctr }
+ \cs_set:cpn { theH ##1 }
+ { \use:c { the ##1 } . \theHkeythms_restate_dummyctr }
}
\tl_if_empty:nTF { #2 }
{ \refstepcounter{keythms_restate_dummyctr} } % for unnumbered theorems
@@ -1219,19 +1532,13 @@
% WRONG: needed to make numbering correct after restated theorem.
% not sure about theH. <- this is needed to prevent duplicate anchors
}
- \renewcommand\label[2][]{} % disable \label (opt arg in case cleveref loaded)
- \cs_set_eq:NN \ltx@label \use_none:n % disable \ltx@label
- \cs_set_eq:NN \property_record:nn \use_none:nn % disable \RecordProperties
- \cs_set_eq:NN \setuniqmark \use_none:n % work with numbered=unless-unique
- % QUESTION: also disable \hyper@@anchor? \MakeLinkTarget?
+ \tl_set:Nn \l_keythms_thmuse_envname_tl { #1 }
\keys_set:nn { keytheorems/thmuse } { #4 }
+ \keys_set:no { keytheorems/thmuse } { \l__keythms_thmuse_restatekeys_clist }
+ \__keythms_thm_prehead_code:n { #1 }
\hook_use:n { keytheorems/#1/restated }
\hook_use:n { keytheorems/allthms/restated }
- \__keythms_thm_prehead_continues_code:n { #1 }
- \__keythms_thm_prehead_code:n { #1 }
- \tl_if_empty:NTF \l__keythms_thmuse_note_tl
- { \__keythms_orig_begin:n { #1 } }
- { \__keythms_orig_begin:nV { #1 } \l__keythms_thmuse_note_tl }
+ \__keythms_orig_begin:nV { #1 } \l__keythms_thmuse_note_tl
\__keythms_thm_posthead_code:n { #1 }
#5
\__keythms_thm_prefoot_code:n { #1 }
@@ -1245,11 +1552,11 @@
\group_end:
}
-\cs_new_protected:Npn \__keythms_getthm_body:nn #1#2
- { % #1 = restate counters, #2 = theorem body
+\cs_new_protected:Npn \__keythms_getthm_body:nnn #1#2#3
+ { % #1 = name, #2 = restate counters, #3 = theorem body
\group_begin:
\bool_set_true:N \l__keythms_thmuse_restating_bool
- \prop_set_from_keyval:Nn \l__keythms_restate_counters_prop { #1 }
+ \prop_set_from_keyval:Nn \l__keythms_restate_counters_prop { #2 }
\prop_map_inline:Nn \l__keythms_restate_counters_prop
{
\tl_set:ce { l_keythms_restate_current_##1_tl } { \the\value{##1} }
@@ -1257,15 +1564,13 @@
% ^ FIX: what if eq's numbered by section, theorem, etc.? The
% thmtools code is opaque.... Or maybe should be up to the
% user to say "restate-counters={section,chapter,...}".
- \cs_set:cpn { theH ##1 } { \use:c { the ##1 } . \theHkeythms_restate_dummyctr }
+ \cs_set:cpn { theH ##1 }
+ { \use:c { the ##1 } . \theHkeythms_restate_dummyctr }
}
\refstepcounter{keythms_restate_dummyctr}
- \renewcommand\label[2][]{} % disable \label (opt arg in case cleveref loaded)
- \cs_set_eq:NN \ltx@label \use_none:n % disable \ltx@label
- \cs_set_eq:NN \property_record:nn \use_none:nn % disable \RecordProperties
\hook_use:n { keytheorems/#1/restated }
\hook_use:n { keytheorems/allthms/restated }
- #2
+ #3
\prop_map_inline:Nn \l__keythms_restate_counters_prop
{
\exp_args:Nnc \setcounter { ##1 }
@@ -1274,18 +1579,77 @@
\group_end:
}
-% \getkeytheorem[<property>]{<tag>}
-\NewDocumentCommand \getkeytheorem { o m }
- {
- \cs_if_exist:cTF { __keythms_getthm_#2_theorem }
+\cs_new_protected:Npn \__keythms_getthmreversed_theorem:nnn #1#2#3
+ { % #1 = envname, #2 = keys, #3 = theorem body
+ \group_begin:
+ \bool_set_false:N \l__keythms_thmuse_restating_bool
+ \tl_set:Nn \l_keythms_thmuse_envname_tl { #1 }
+ \keys_set:nn { keytheorems/thmuse } { #2 }
+ \keys_set:no { keytheorems/thmuse } { \l__keythms_thmuse_restatekeys_clist }
+ \__keythms_thm_prehead_code:n { #1 }
+ \__keythms_orig_begin:nV { #1 } \l__keythms_thmuse_note_tl
+ \clist_map_inline:Nn \g__keythms_restatecounters_clist
+ {
+ \prop_gput:Nne \g__keythms_thmuse_othercounters_prop { ##1 }
+ { \the\value{##1} }
+ }
+ \__keythms_thm_posthead_code:n { #1 }
+ \__keythms_thm_addcontentsdata:nnnn { #1 }
+ { \prop_to_keyval:N \g__keythms_thmuse_othercounters_prop }
+ { #2 } { #3 }
+ \__keythms_thm_tempstorerestatedata:nnn { #1 } { #2 } { #3 } % for defining getthm_body
+ #3
+ \__keythms_thm_prefoot_code:n { #1 }
+ \__keythms_orig_end:n { #1 }
+ \__keythms_thm_postfoot_code:n { #1 }
+ % While we're here, define getthm_body
+ \cs_if_exist:cF
+ { __keythms_getthm_ \l__keythms_thmuse_storereversed_tl _body }
+ {
+ \cs_new:cpe
+ { __keythms_getthm_ \l__keythms_thmuse_storereversed_tl _body }
+ {
+ \exp_not:N \__keythms_getthm_body:nnn
+ \exp_args:No \exp_not:o
+ {
+ \exp_after:wN \__keythms_use_i_iii_v_braced:nnnnn
+ \g__keythms_thmuse_temprestatedata_tl
+ }
+ }
+ }
+ \bool_gset_true:c
+ { g__keythms_restate_ \l__keythms_thmuse_storereversed_tl _called_bool }
+ \group_end:
+ }
+
+\NewDocumentCommand \getkeytheorem { O{theorem} m }
+ { % #1 = property, #2 = tag
+ \cs_if_exist:cTF { __keythms_getthm_#2_#1 }
{
- \IfNoValueTF { #1 }
- { \use:c { __keythms_getthm_#2_theorem } }
+ \bool_if_exist:cTF { g__keythms_restate_#2_called_bool }
+ {
+ \str_if_eq:nnTF { #1 } { theorem }
+ {
+ \bool_if:cTF
+ { g__keythms_restate_#2_called_bool }
+ {
+ \msg_error:nnn { keytheorems }
+ { store-reversed-called-twice } { #2 }
+ }
+ { \use:c { __keythms_getthm_#2_#1 } }
+ }
+ { \use:c { __keythms_getthm_#2_#1 } }
+ }
{ \use:c { __keythms_getthm_#2_#1 } }
}
{
\textbf{??}
- \msg_warning:nnn { keytheorems } { no-stored-theorem } { #2 }
+ \cs_if_exist:cTF { __keythms_getthm_#2_theorem }
+ {
+ \msg_warning:nnnn { keytheorems } { no-prop-for-stored-theorem }
+ { #1 } { #2 } % should this be an error?
+ }
+ { \msg_warning:nnn { keytheorems } { no-stored-theorem } { #2 } }
}
}
@@ -1293,20 +1657,16 @@
%%% Theorem Hooks %%%
%%%%%%%%%%%%%%%%%%%%%
-%%% \addtotheoremhook[<envname>]{<hook>}{<code>}
-\NewDocumentCommand \addtotheoremhook { o m +m }
- {
+\NewDocumentCommand \addtotheoremhook { O{allthms} m +m }
+ { % #1 = envname, #2 = hook, #3 = code
\__hook_if_declared:nTF { keytheorems/allthms/#2 }
{
- \IfNoValueTF { #1 }
- { \hook_gput_code:nnn { keytheorems/allthms/#2 } { . } { #3 } }
- { \hook_gput_code:nnn { keytheorems/#1/#2 } { . } { #3 } }
+ \hook_gput_code:nnn { keytheorems/#1/#2 } { . } { #3 }
}
{
\msg_error:nnn { keytheorems } { undefined-thm-hook } { #2 }
}
}
-
% NOTE: I think it's OK we use the internal \__hook_if_declared:nTF above
% since we don't need to worry about the user creating new theorem hooks
% so, as we're only checking the existence of hooks created by us, it's OK.
@@ -1317,102 +1677,107 @@
\keys_define:nn { keytheorems/listof }
{
- numwidth .dim_set:N = \l__keythms_listof_numwidth_dim,
- numwidth .initial:n = 2.3em,
- ignore .code:n =
+ chapter-skip-length .dim_set:N = \keythms@listof@chaptervspace@dim,
+ chapter-skip-length .initial:n = 10pt,
+ format-code .cs_set:Np = \__keythms_listof_misdirect:nnn #1#2#3,
+ format-code .initial:n = \numberline{#2}#1#3,
+ ignore .code:n =
{
\hook_gput_code:nnn { begindocument/before } { keytheorems }
{ \keythms_listof_ignore:n { #1 } }
},
- show .code:n =
- {
+ ignoreall .code:n =
+ { % in case called before theorem defined
\hook_gput_code:nnn { begindocument/before } { keytheorems }
- { \keythms_listof_show:n { #1 } }
+ {
+ \prop_map_inline:Nn \g__keythms_thmnames_prop
+ { \__keythms_listof_ignore_aux:n { ##1 } }
+ }
},
- onlynamed .code:n =
+ indent .dim_set:N = \l__keythms_listof_indent_dim,
+ indent .initial:n = 1.5em,
+ no-chapter-skip .bool_set:N = \l__keythms_listof_nochapskip_bool,
+ no-chapter-skip .initial:n = false,
+ no-continues .bool_set:N = \l__keythms_listof_nocont_bool,
+ no-continues .initial:n = false,
+ no-title .bool_set:N = \l__keythms_listof_notitle_bool,
+ no-title .initial:n = false,
+ no-toc .bool_set:N = \l__keythms_listof_notoc_bool,
+ no-toc .initial:n = false, % false does not mean "to-toc" for standard classes
+ note-code .cs_set:Np = \__keythms_listof_notecmd:n #1,
+ note-code .initial:n = { ~ (#1) },
+ numwidth .dim_set:N = \l__keythms_listof_numwidth_dim,
+ numwidth .initial:n = 2.3em,
+ onlynamed .code:n =
{
\hook_gput_code:nnn { begindocument/before } { keytheorems }
{ \keythms_listof_onlynamed:n { #1 } }
},
- onlynamed .default:n = \q_no_value,
- onlynumbered .code:n =
+ onlynamed .default:n = \q_no_value,
+ onlynumbered .code:n =
{
\hook_gput_code:nnn { begindocument/before } { keytheorems }
{ \keythms_listof_onlynumbered:n { #1 } }
},
- onlynumbered .default:n = \q_no_value,
- ignoreall .code:n =
+ onlynumbered .default:n = \q_no_value,
+ print-body .code:n =
{
- \hook_gput_code:nnn { begindocument/before } { keytheorems } % in case called before theorem defined
+ \cs_set_protected:Nn \keythms_listof_listcmd:nnnnnnn
{
- \prop_map_inline:Nn \g__keythms_thmnames_prop
- { \__keythms_listof_ignore_aux:n { ##1 } }
+ \tl_if_empty:nF { ##7 }
+ { \__keythms_getthm_theorem:nnnnn {##1}{##2}{##5}{##6}{##7} }
}
},
- showall .code:n =
+ seq .code:n =
{
- \hook_gput_code:nnn { begindocument/before } { keytheorems } % in case called before theorem defined
- {
- \prop_map_inline:Nn \g__keythms_thmnames_prop
- { \__keythms_listof_show_aux:n { ##1 } }
- }
+ \hook_gput_code:nnn { begindocument/before } { keytheorems }
+ { \keythms_listof_showseq:n { #1 } }
},
- title .tl_set:N = \l__keythms_listof_title_tl,
- title .initial:n = \GetTranslation{keythms_listof_title},
- swapnumber .bool_set:N = \l__keythms_listof_swapnumber_bool,
- swapnumber .initial:n = false,
- title-code .cs_set:Np = \__keythms_listof_titlecmd:n #1,
- no-title .bool_set:N = \l__keythms_listof_notitle_bool,
- no-title .initial:n = false,
- print-body .code:n =
+ show .code:n =
{
- \cs_set_protected:Nn \keythms_listof_listcmd:nnnnnnn
+ \hook_gput_code:nnn { begindocument/before } { keytheorems }
+ { \keythms_listof_show:n { #1 } }
+ },
+ showall .code:n =
+ { % in case called before theorem defined
+ \hook_gput_code:nnn { begindocument/before } { keytheorems }
{
- \tl_if_empty:nF { ##7 }
- {
- \__keythms_getthm_theorem:nnnnn
- {##1}{##2}{##5}{##6}{##7}
- }
+ \prop_map_inline:Nn \g__keythms_thmnames_prop
+ { \__keythms_listof_show_aux:n { ##1 } }
}
- \cs_set_eq:NN \KeyThmsContentsLine \use_none:n
- % ^ I assume we want this?
- \cs_set_eq:NN \KeyThmsAddvspace \use_none:n
},
- note-code .cs_set:Np = \__keythms_listof_notecmd:n #1,
- note-code .initial:n = { ~ (#1) },
- no-continues .bool_set:N = \l__keythms_listof_nocont_bool,
- no-continues .initial:n = false,
- no-chapter-skip .bool_set:N = \l__keythms_listof_nochapskip_bool,
- no-chapter-skip .initial:n = false,
- chapter-skip-length .dim_set:N = \keythms@listof@chaptervspace@dim,
- chapter-skip-length .initial:n = 10pt,
+ swapnumber .bool_set:N = \l__keythms_listof_swapnumber_bool,
+ swapnumber .initial:n = false,
+ title .tl_set:N = \l__keythms_listof_title_tl,
+ title .initial:n = \GetTranslation{keythms_listof_title},
+ title-code .cs_set:Np = \__keythms_listof_titlecmd:n #1,
}
-\hook_gput_code:nnn { begindocument } { . } % redefine these keys at begindocument
- {
+\hook_gput_code:nnn { begindocument } { . }
+ { % redefine these keys at begindocument
\keys_define:nn { keytheorems/listof }
{
- ignore .code:n = \keythms_listof_ignore:n { #1 },
- show .code:n = \keythms_listof_show:n { #1 },
- onlynamed .code:n = \keythms_listof_onlynamed:n { #1 },
- onlynamed .default:n = \q_no_value,
- onlynumbered .code:n = \keythms_listof_onlynumbered:n { #1 },
- onlynumbered .default:n = \q_no_value,
- ignoreall .code:n =
+ ignore .code:n = \keythms_listof_ignore:n { #1 },
+ ignoreall .code:n =
{
\prop_map_inline:Nn \g__keythms_thmnames_prop
{ \__keythms_listof_ignore_aux:n { ##1 } }
},
- showall .code:n =
+ onlynamed .code:n = \keythms_listof_onlynamed:n { #1 },
+ onlynamed .default:n = \q_no_value,
+ onlynumbered .code:n = \keythms_listof_onlynumbered:n { #1 },
+ onlynumbered .default:n = \q_no_value,
+ seq .code:n = \keythms_listof_showseq:n { #1 },
+ show .code:n = \keythms_listof_show:n { #1 },
+ showall .code:n =
{
\prop_map_inline:Nn \g__keythms_thmnames_prop
{ \__keythms_listof_show_aux:n { ##1 } }
},
- seq .code:n = \keythms_listof_showseq:n { #1 },
}
}
-\NewDocumentCommand \keytheoremlistset { m }
+\NewDocumentCommand \keytheoremlistset { +m }
{
\keys_set:nn { keytheorems/listof } { #1 }
}
@@ -1517,18 +1882,14 @@
}
}
-% Seems unnecessary to repeat all this for reading the keyvals from seq.
+% Seems unnecessary to repeat all this for reading the keyvals from file.
% In thmtools they just hook the "thmitem" definition into the theorem declaration.
%% NOTE ON ABOVE: this gives more flexibility to define different kinds of lists.
%% See acro.sty for template idea.
\keys_define:nn { keytheorems/listofheading }
{
- note .tl_set:N = \l__keythms_listofheading_note_tl,
- name .meta:n = { note = #1 },
- short-note .tl_set:N = \l__keythms_listofheading_shortnote_tl,
- short-name .meta:n = { short-note = #1 },
- continues .tl_set:N = \l__keythms_listofheading_contlabel_tl,
- continues* .code:n =
+ continues .tl_set:N = \l__keythms_listofheading_contlabel_tl,
+ continues* .code:n =
{
\keys_set:nn { keytheorems/listofheading } { continues = #1 }
\protected@edef \l__keythms_tmpa_tl { \__keythms_getrecordednote:n{#1} }
@@ -1538,13 +1899,21 @@
{ note = \l__keythms_tmpa_tl }
}
},
- seq .tl_set:N = \l__keythms_listofheading_seq_tl,
- unknown .code:n = { } % do nothing with unknown keys
- % ^ this is OK because we have total control over possible keys; if invalid
- % key is given to theorem then an error will be raised there
+ name .meta:n = { note = {#1} },
+ note .tl_set:N = \l__keythms_listofheading_note_tl,
+ restate* .meta:n = { store* = {#1} },
+ restate-keys .clist_set:N = \l__keythms_listofheading_restatekeys_clist,
+ seq .tl_set:N = \l__keythms_listofheading_seq_tl,
+ short-note .tl_set:N = \l__keythms_listofheading_shortnote_tl,
+ short-name .meta:n = { short-note = {#1} },
+ store* .code:n =
+ {
+ \bool_set_true:N \l__keythms_listofheading_storereversed_bool
+ },
+ unknown .code:n = { } % do nothing with unknown keys
}
-\cs_new:Npn \__keythms_listof_printheading:
+\cs_new:Npn \__keythms_listof_printnote:
{
\tl_if_empty:NTF \l__keythms_listofheading_shortnote_tl
{
@@ -1556,28 +1925,31 @@
}
}
-\cs_new:Npn \__keythms_listof_default_listcmd:nnnnnnn #1#2#3#4#5#6#7
- {
+\cs_new:Npn \keythms_listof_listcmd:nnnnnnn #1#2#3#4#5#6#7
+ { % #1=name, #2=number, #3=Href, #4=page, #5=restate counters, #6=keys, #7=body
\contentsline{ #1 }
{
- \bool_if:NTF \l__keythms_listof_swapnumber_bool
- {
- \prop_item:Nn \g__keythms_thmnames_prop { #1 } ~ #2
- }
- {
- \numberline{ #2 }
- \prop_item:Nn \g__keythms_thmnames_prop { #1 }
- }
- \__keythms_listof_printheading:
+ \__keythms_listof_misdirect:nnn
+ { \prop_item:Nn \g__keythms_thmnames_prop { #1 } }
+ { #2 }
+ { \__keythms_listof_printnote: }
}
{ #4 }{ #3 }
}
+\NewDocumentCommand \__keythms_listof_pagerefnolink:w { s m }
+ { \getpagerefnumber{#2} } % tagging does not like links within link
+
% NOTE: We still need to do this setup for [print-body] so that onlynamed works
\cs_new_protected:Npn \__keythms_listof_listcmd_setup:nn #1#2
{ % #1 = keys, #2 = list command
\group_begin:
\keys_set:nn { keytheorems/listofheading } { #1 }
+ \bool_if:NT \l__keythms_listofheading_storereversed_bool
+ {
+ \keys_set:no { keytheorems/listofheading }
+ { \l__keythms_listofheading_restatekeys_clist }
+ }
\tl_if_empty:NTF \l__keythms_listofheading_contlabel_tl
{ #2 }
{
@@ -1591,93 +1963,48 @@
{
\__keythms_thmuse_continues:V \l__keythms_listofheading_contlabel_tl
}
+ \cs_set_eq:NN \pageref \__keythms_listof_pagerefnolink:w % always no link
#2
}
}
\group_end:
}
-% set default listcmd
-\cs_new_eq:NN \keythms_listof_listcmd:nnnnnnn
- \__keythms_listof_default_listcmd:nnnnnnn
-
\cs_if_exist:NTF \chapter
{ \cs_set_protected:Npn \__keythms_listof_titlecmd:n #1 { \chapter*{#1} } }
{ \cs_set_protected:Npn \__keythms_listof_titlecmd:n #1 { \section*{#1} } }
-\hook_gput_code:nnn { begindocument } { . }
- { % try to detect ams classes
- \keythms_if_amsclass:TF
- {
- \prop_map_inline:Nn \g__keythms_thmnames_prop
- {
- \cs_set:cpn { l@ #1 }
- {
- \@tocline{ 0 }{ 3pt plus 2pt }{ 0pt }
- { \l__keythms_listof_numwidth_dim }{ }
- }
- }
- }
- {
- \prop_map_inline:Nn \g__keythms_thmnames_prop
- {
- \cs_set:cpn { l@ #1 }
- {
- \@dottedtocline{ 1 }{ 1.5em }
- { \l__keythms_listof_numwidth_dim }
- }
- }
- }
- }
+\cs_new_protected:Npn \__keythms_listof_default_tocline:
+ {
+ \@dottedtocline{ 1 }{ \l__keythms_listof_indent_dim }
+ { \l__keythms_listof_numwidth_dim }
+ }
+\cs_new_eq:NN \keythms_listof_tocline: \__keythms_listof_default_tocline:
-\keythms_if_amsclass:TF
+\NewDocumentCommand \listofkeytheorems { +O{} }
{
- \keys_define:nn { keytheorems/listof } % adjust to class
+ \bool_gset_true:N \g__keythms_listof_writefile_bool
+ \group_begin:
+ \keys_set:nn { keytheorems/listof } { #1 }
+ \cs_set_protected:Npn \KeyThmsContentsLine ##1 { ##1 }
+ \bool_if:NF \l__keythms_listof_nochapskip_bool
{
- numwidth .initial:n = 1.5pc,
+ \cs_set_protected:Npn \KeyThmsAddvspace { \addvspace }
}
- \NewDocumentCommand \listofkeytheorems { O{} }
- { % title command not customizable here
- \bool_gset_true:N \g__keythms_listof_writefile_bool
- \group_begin:
- \keys_set:nn { keytheorems/listof } { #1 }
- \bool_if:NT \l__keythms_listof_nochapskip_bool
- {
- \cs_set_eq:NN \KeyThmsAddvspace \use_none:n
- }
- \legacy_if_set_false:n { @filesw }
- \bool_if:NTF \l__keythms_listof_notitle_bool
- {
- \@starttoc{ thlist }{ }
- }
- { % ams classes don't expand title enough
- \protected@edef \l__keythms_tmpa_tl { \l__keythms_listof_title_tl }
- \@starttoc{ thlist }{ \l__keythms_tmpa_tl }
- }
- \group_end:
+ \bool_if:NF \l__keythms_listof_notitle_bool
+ {
+ \__keythms_listof_titlecmd:n { \l__keythms_listof_title_tl }
+ \@mkboth % QUESTION: should this go in titlecmd ?
+ { \MakeUppercase \l__keythms_listof_title_tl }
+ { \MakeUppercase \l__keythms_listof_title_tl }
}
- }
- {
- \NewDocumentCommand \listofkeytheorems { O{} }
+ \bool_if:NT \l__keythms_listof_swapnumber_bool
{
- \bool_gset_true:N \g__keythms_listof_writefile_bool
- \group_begin:
- \keys_set:nn { keytheorems/listof } { #1 }
- \bool_if:NT \l__keythms_listof_nochapskip_bool
- {
- \cs_set_eq:NN \KeyThmsAddvspace \use_none:n
- }
- \bool_if:NF \l__keythms_listof_notitle_bool
- {
- \__keythms_listof_titlecmd:n { \l__keythms_listof_title_tl }
- \@mkboth % QUESTION: should this go in titlecmd ?
- { \MakeUppercase \l__keythms_listof_title_tl }
- { \MakeUppercase \l__keythms_listof_title_tl }
- }
- \legacy_if_set_false:n { @filesw }
- \@starttoc{ thlist }
- \group_end:
+ \cs_set:Npn \__keythms_listof_misdirect:nnn ##1##2##3 { ##1 ~ ##2##3 }
}
+ \legacy_if_set_false:n { @filesw }
+ \@starttoc{ thlist }
+ \group_end:
}
% ^ unlike thmtools we don't use the class's style of \listoffigures because
% we want control over title-code, no-title, etc. But this means we have to guess
@@ -1696,34 +2023,32 @@
{ % if .thlist file left over from previous run but not needed, clear it
\file_if_exist:nT { \c_sys_jobname_str.thlist }
{
- \iow_open:Nn \g_tmpa_iow { \c_sys_jobname_str.thlist }
- \iow_close:N \g_tmpa_iow
+ \iow_open:Nn \g__keythms_tmpa_iow { \c_sys_jobname_str.thlist }
+ \iow_close:N \g__keythms_tmpa_iow
}
}
}
% chaptervspacehack (code translated from thmtools)
-\cs_new_eq:NN \KeyThmsAddvspace \addvspace
+\cs_new_protected:Npn \KeyThmsAddvspace #1 { } % initially no-op, redefined where needed
\int_new:N \g_keythms_listof_prevchapter_int
\int_gset:Nn \g_keythms_listof_prevchapter_int { 1 }
-% ^ if this is zero, bad things happen if title-code is changed; anyways don't
-% need addvspace at top
+% ^ if this is zero, bad things happen if title-code is changed;
+% anyways don't need addvspace at top
\cs_new_protected:Npn \keythms_listof_chaptervspacehack: { }
\cs_if_exist:cT { c@chapter }
{
- \cs_if_eq:NNF \c@chapter \relax
+ \cs_set_protected:Npn \keythms_listof_chaptervspacehack:
{
- \cs_set_protected:Npn \keythms_listof_chaptervspacehack:
+ \int_compare:nNnF
+ { \value{chapter} } = { \g_keythms_listof_prevchapter_int }
{
- \int_compare:nNnF { \value{chapter} } = { \g_keythms_listof_prevchapter_int }
+ \addtocontents{ thlist }
{
- \addtocontents{ thlist }
- {
- \protect\KeyThmsAddvspace
- { \keythms@listof@chaptervspace@dim }
- }
- \int_gset:Nn \g_keythms_listof_prevchapter_int { \value{chapter} }
+ \KeyThmsAddvspace
+ { \keythms@listof@chaptervspace@dim }
}
+ \int_gset:Nn \g_keythms_listof_prevchapter_int { \value{chapter} }
}
}
}
@@ -1763,47 +2088,62 @@
\keys_define:nn { keytheorems }
{
- restate-counters .code:n =
+ auto-translate .bool_gset:N = \g__keythms_autotranslate_bool,
+ auto-translate .initial:n = true,
+ continues-code .cs_set:Np = \__keythms_thmuse_continues:n #1,
+ continues-code .initial:n =
+ { % not sure how best to handle this translation
+ \GetTranslation{keythms_continues}\pageref{#1}
+ },
+ overload .code:n = \__keythms_overload_code:,
+ overload .value_forbidden:n = true,
+ overload .usage:n = preamble,
+ qed-symbol .cs_set_protected:Np = \qedsymbol,
+ restate-counters .code:n =
{
\clist_map_inline:nn { #1 }
{ \tl_new:c { l_keythms_restate_current_##1_tl } }
\clist_gput_right:Nn \g__keythms_restatecounters_clist { #1 }
},
- restate-counters .initial:n = equation,
- continues-code .cs_set:Np = \__keythms_thmuse_continues:n #1,
- continues-code .initial:n =
- { % not sure how best to handle this translation
- \GetTranslation{keythms_continues}\pageref{#1}
+ restate-counters .initial:n = equation,
+ store-all .code:n = \__keythms_storeall_code:,
+ store-all .value_forbidden:n = true,
+ store-all .usage:n = preamble,
+ store-sets-label .code:n =
+ {
+ \keys_define:nn { keytheorems/thmuse }
+ {
+ store .code:n =
+ {
+ \tl_set:Nn \l__keythms_thmuse_label_tl { ##1 }
+ \tl_set:Nn \l__keythms_thmuse_store_tl { ##1 }
+ },
+ store* .code:n =
+ {
+ \tl_set:Nn \l__keythms_thmuse_label_tl { ##1 }
+ \tl_set:Nn \l__keythms_thmuse_storereversed_tl { ##1 }
+ },
+ }
},
- qed-symbol .cs_set_protected:Np = \qedsymbol,
- overload .code:n = \__keythms_overload_code:,
- overload .value_forbidden:n = true,
- overload .usage:n = preamble,
- thmtools-compat .code:n =
+ thmtools-compat .code:n =
{ % prevent loading the code again if key called twice
\bool_if:NF \g__keythms_thmtoolscompat_bool
{ \__keythms_thmtoolscompat_code: }
},
- thmtools-compat .value_forbidden:n = true,
- thmtools-compat .usage:n = preamble,
- store-all .code:n = \__keythms_storeall_code:,
- store-all .value_forbidden:n = true,
- store-all .usage:n = preamble,
- auto-translate .bool_gset:N = \g__keythms_autotranslate_bool,
- auto-translate .initial:n = true,
+ thmtools-compat .value_forbidden:n = true,
+ thmtools-compat .usage:n = preamble,
}
\cs_generate_variant:Nn \__keythms_thmuse_continues:n { V }
-% \keytheoremset{<options>}
-\NewDocumentCommand \keytheoremset { m }
- {
+\NewDocumentCommand \keytheoremset { +m }
+ { % #1 = keys
\keys_set:nn { keytheorems } { #1 }
}
\cs_new_protected:Npn \__keythms_overload_code:
{
- \RenewDocumentCommand { \newtheorem } { smomo }
+ \RenewDocumentCommand { \newtheorem } { s m o m o }
{
\IfBooleanTF { ##1 }
{ \keythms_thm_newkeythm:nn { ##2 } { name=##4, numbered=no } }
@@ -1823,16 +2163,34 @@
{
\bool_gset_true:N \g__keythms_thmtoolscompat_bool
\__keythms_overload_code: % since thmtools overwrites \newtheorem
- \ProvideDocumentCommand { \declaretheoremstyle } { O{} m }
+ \ProvideDocumentCommand { \declaretheoremstyle } { +O{} m }
{
\declarekeytheoremstyle { ##2 } { ##1 }
}
- \ProvideDocumentCommand { \declaretheorem } { O{} m }
+ \ProvideDocumentCommand { \declaretheorem } { +O{} m }
{
\newkeytheorem { ##2 } [ ##1 ]
}
\ProvideDocumentEnvironment { restatable } { O{} m m }
- { % set store outside [] so keyless note is recognized
+ { % need to redefine this to add store to thlist since we set it outside env
+ \cs_set_protected:Npn \__keythms_thm_addcontentsdata:nnnn ####1####2####3####4
+ { % ####1 = theorem name, ####2 = stored counters, ####3 = keys, ####4 = body
+ \keythms_listof_chaptervspacehack:
+ \iow_shipout:Ne \@auxout
+ {
+ \token_to_str:N \@writefile { thlist }
+ {
+ \token_to_str:N \KeyThmsSavedTheorem{ ####1 }
+ { \@currentlabel }
+ { \@currentHref }
+ { \thepage }
+ { ####2 }
+ { store=\l__keythms_thmuse_store_tl,\exp_not:n { ####3 } } % this line is changed
+ { \exp_not:n { ####4 } }
+ }
+ }
+ }
+ % set store outside [] so keyless note is recognized
\keys_set:nn { keytheorems/thmuse } { store=##3 }
\begin{##2}[##1]
}
@@ -1841,47 +2199,89 @@
\cs_new_protected:cpn { ##3 }
{ % make \foo and \foo* identical
\peek_meaning_remove:NTF *
- { \use:c { __keythms_getthm_ ##3 _theorem } }
- { \use:c { __keythms_getthm_ ##3 _theorem } }
+ { \getkeytheorem{ ##3 } }
+ { \getkeytheorem{ ##3 } }
+ }
+ }
+ \ProvideDocumentEnvironment { restatable* } { O{} m m }
+ { % need to redefine this to add store* to thlist since we set it outside env
+ \cs_set_protected:Npn \__keythms_thm_addstoredreverseddata:nnn ####1####2####3
+ { % ####1 = theorem name, ####2 = keys, ####3 = body
+ \iow_shipout:Ne \@auxout
+ {
+ \token_to_str:N \@writefile { thlist }
+ {
+ \token_to_str:N \KeyThmsSavedTheoremReversed { \l__keythms_thmuse_storereversed_tl }
+ { ####1 }
+ { store*=\l__keythms_thmuse_storereversed_tl,\exp_not:n { ####2 } } % this line is changed
+ { \exp_not:n { ####3 } }
+ }
+ }
+ } % and this because otherwise adds an extra run; not needed for unstarred
+ \cs_set_protected:Npn \__keythms_thm_tempstorerestatedatareversed:nnn ####1####2####3
+ {
+ \tl_gset:Ne \g__keythms_thmuse_temprestatedatareversed_tl % needs to be global to get out of env
+ {
+ { ####1 }
+ { store*=\l__keythms_thmuse_storereversed_tl,\exp_not:n { ####2 } }
+ { \exp_not:n { ####3 } }
+ }
+ }
+ % set store* outside [] so keyless note is recognized
+ \keys_set:nn { keytheorems/thmuse } { store*=##3 }
+ \begin{##2}[##1]
+ }
+ {
+ \end{##2}
+ \cs_new_protected:cpn { ##3 }
+ { % make \foo and \foo* identical
+ \peek_meaning_remove:NTF *
+ { \getkeytheorem{ ##3 } }
+ { \getkeytheorem{ ##3 } }
}
}
\ProvideDocumentCommand { \listoftheorems } { } { \listofkeytheorems }
- \ProvideDocumentCommand { \addtotheorempreheadhook } { o m }
+ \ProvideDocumentCommand { \listtheoremname } { }
+ { \GetTranslation{keythms_listof_title} }
+ \keys_define:nn { keytheorems/listof }
+ { % redefine since thmtools way is \renewcommand\listtheoremname{...}
+ title .initial:n = \listtheoremname
+ }
+ \ProvideDocumentCommand { \addtotheorempreheadhook } { O{allthms} +m }
{
- \IfNoValueTF { ##1 }
- { \addtotheoremhook { prehead } { ##2 } }
- { \addtotheoremhook [ ##1 ] { prehead } { ##2 } }
+ \addtotheoremhook [ ##1 ] { prehead } { ##2 }
}
- \ProvideDocumentCommand { \addtotheorempostheadhook } { o m }
+ \ProvideDocumentCommand { \addtotheorempostheadhook } { O{allthms} +m }
{
- \IfNoValueTF { ##1 }
- { \addtotheoremhook { posthead } { ##2 } }
- { \addtotheoremhook [ ##1 ] { posthead } { ##2 } }
+ \addtotheoremhook [ ##1 ] { posthead } { ##2 }
}
- \ProvideDocumentCommand { \addtotheoremprefoothook } { o m }
+ \ProvideDocumentCommand { \addtotheoremprefoothook } { O{allthms} +m }
{
- \IfNoValueTF { ##1 }
- { \addtotheoremhook { prefoot } { ##2 } }
- { \addtotheoremhook [ ##1 ] { prefoot } { ##2 } }
+ \addtotheoremhook [ ##1 ] { prefoot } { ##2 }
}
- \ProvideDocumentCommand { \addtotheorempostfoothook } { o m }
+ \ProvideDocumentCommand { \addtotheorempostfoothook } { O{allthms} +m }
{
- \IfNoValueTF { ##1 }
- { \addtotheoremhook { postfoot } { ##2 } }
- { \addtotheoremhook [ ##1 ] { postfoot } { ##2 } }
+ \addtotheoremhook [ ##1 ] { postfoot } { ##2 }
}
\clist_new:N \l__keythms_tcbshaded_keys_clist
\clist_new:N \l__keythms_tcbthmbox_keys_clist
\keys_define:nn { keytheorems/thm/shaded }
{
- textwidth .code:n = \clist_put_right:Nn \l__keythms_tcbshaded_keys_clist { width=##1 },
- bgcolor .code:n = \clist_put_right:Nn \l__keythms_tcbshaded_keys_clist { colback=##1 },
- rulewidth .code:n = \clist_put_right:Nn \l__keythms_tcbshaded_keys_clist { boxrule=##1 },
- rulecolor .code:n = \clist_put_right:Nn \l__keythms_tcbshaded_keys_clist { colframe=##1 },
- margin .code:n = \clist_put_right:Nn \l__keythms_tcbshaded_keys_clist { boxsep=##1 },
+ textwidth .code:n =
+ \clist_put_right:Nn \l__keythms_tcbshaded_keys_clist { width=##1 },
+ bgcolor .code:n =
+ \clist_put_right:Nn \l__keythms_tcbshaded_keys_clist { colback=##1 },
+ rulewidth .code:n =
+ \clist_put_right:Nn \l__keythms_tcbshaded_keys_clist { boxrule=##1 },
+ rulecolor .code:n =
+ \clist_put_right:Nn \l__keythms_tcbshaded_keys_clist { colframe=##1 },
+ margin .code:n =
+ \clist_put_right:Nn \l__keythms_tcbshaded_keys_clist { boxsep=##1 },
padding .meta:n = { margin=##1 },
- leftmargin .code:n = \clist_put_right:Nn \l__keythms_tcbshaded_keys_clist { left~skip=##1 },
- rightmargin .code:n = \clist_put_right:Nn \l__keythms_tcbshaded_keys_clist { right~skip=##1 },
+ leftmargin .code:n =
+ \clist_put_right:Nn \l__keythms_tcbshaded_keys_clist { left~skip=##1 },
+ rightmargin .code:n =
+ \clist_put_right:Nn \l__keythms_tcbshaded_keys_clist { right~skip=##1 },
}
\keys_define:nn { keytheorems/thm/thmbox }
{
@@ -1917,34 +2317,29 @@
},
cut .default:n = true,
nocut .meta:n = { cut=false },
- thickness .code:n = % could also add keys to clist with changed dimens; which is better?
- {
- \hook_gput_code:nnn { keytheorems/\l__keythms_thm_envname_tl/prehead }
- { keythms_tcbox }
+ thickness .code:n =
+ { % could also add keys to clist with changed dimens; which is better?
+ \tl_gput_right:cn { g__keythms_thm_preheadfromkeys_ \l__keythms_thm_envname_tl _tl }
{ \dim_set:Nn \l_keythms_tcbthmbox_thickness_dim { ##1 } }
},
leftmargin .code:n =
{
- \hook_gput_code:nnn { keytheorems/\l__keythms_thm_envname_tl/prehead }
- { keythms_tcbox }
+ \tl_gput_right:cn { g__keythms_thm_preheadfromkeys_ \l__keythms_thm_envname_tl _tl }
{ \dim_set:Nn \l_keythms_tcbthmbox_leftmargin_dim { ##1 } }
},
rightmargin .code:n =
{
- \hook_gput_code:nnn { keytheorems/\l__keythms_thm_envname_tl/prehead }
- { keythms_tcbox }
+ \tl_gput_right:cn { g__keythms_thm_preheadfromkeys_ \l__keythms_thm_envname_tl _tl }
{ \dim_set:Nn \l_keythms_tcbthmbox_rightmargin_dim { ##1 } }
},
hskip .code:n =
{
- \hook_gput_code:nnn { keytheorems/\l__keythms_thm_envname_tl/prehead }
- { keythms_tcbox }
+ \tl_gput_right:cn { g__keythms_thm_preheadfromkeys_ \l__keythms_thm_envname_tl _tl }
{ \dim_set:Nn \l_keythms_tcbthmbox_hskip_dim { ##1 } }
},
vskip .code:n =
{
- \hook_gput_code:nnn { keytheorems/\l__keythms_thm_envname_tl/prehead }
- { keythms_tcbox }
+ \tl_gput_right:cn { g__keythms_thm_preheadfromkeys_ \l__keythms_thm_envname_tl _tl }
{ \dim_set:Nn \l_keythms_tcbthmbox_vskip_dim { ##1 } }
},
}
@@ -2151,13 +2546,17 @@
thmbox .default:n = M,
mdframed .code:n = \msg_error:nn { keytheorems } { mdframed-undefined },
}
+ \keys_define:nn { keytheorems/thmstyle }
+ {
+ shaded .code:n = \__keythms_thmstyle_savethmkey_optval:n { ##1 },
+ thmbox .code:n = \__keythms_thmstyle_savethmkey_optval:n { ##1 },
+ mdframed .code:n = \msg_error:nn { keytheorems } { mdframed-undefined },
+ }
}
\cs_new_protected:Npn \__keythms_storeall_code:
{
- \cs_set_eq:NN \__keythms_withhooks_begin:nn \__keythms_grab_begin:nn
\cs_set_eq:NN \__keythms_withhooks_begin:nnn \__keythms_grab_begin:nnn
- \cs_set_eq:NN \__keythms_withhooks_begin:nnV \__keythms_grab_begin:nnV
\cs_set_eq:NN \__keythms_withhooks_end:n \__keythms_grab_end:n
}
@@ -2170,15 +2569,229 @@
\ProvideTranslation { English } { keythms_listof_title } { List~of~Theorems }
\ProvideTranslation { English } { keythms_continues } { continuing~from~p.\, }
% from DeepL; I don't know these languages!
+ \ProvideTranslation { Albanian } { keythms_listof_title } { Lista~e~teoremave }
+ \ProvideTranslation { Bulgarian } { keythms_listof_title } { Списък~на~теоремите }
+ \ProvideTranslation { Czech } { keythms_listof_title } { Seznam~teorémů }
+ \ProvideTranslation { Czech } { keythms_continues } { pokračování~ze~strany~ }
+ \ProvideTranslation { Croatian } { keythms_listof_title } { Popis~teorema }
+ \ProvideTranslation { Croatian } { keythms_continues } { nastavak~od~stranice~ }
+ \ProvideTranslation { Danish } { keythms_listof_title } { Liste~over~sætninger }
+ \ProvideTranslation { Danish } { keythms_continues } { fortsætter~fra~side~ }
+ \ProvideTranslation { Dutch } { keythms_listof_title } { Liste~over~sætninger }
+ \ProvideTranslation { Dutch } { keythms_continues } { fortsætter~fra~side~ }
+ \ProvideTranslation { Estonian } { keythms_listof_title } { Teoreemide~loetelu }
+ \ProvideTranslation { Estonian } { keythms_continues } { jätkub~leheküljelt~ }
+ \ProvideTranslation { Finnish } { keythms_listof_title } { Luettelo~teoreemoista }
+ \ProvideTranslation { Finnish } { keythms_continues } { jatkuu~sivulta~ }
\ProvideTranslation { French } { keythms_listof_title } { Liste~des~théorèmes }
\ProvideTranslation { French } { keythms_continues } { suite~de~la~p.\, }
\ProvideTranslation { German } { keythms_listof_title } { Liste~der~Theoreme }
\ProvideTranslation { German } { keythms_continues } { weiter~von~Seite~ }
+ \ProvideTranslation { Greek } { keythms_listof_title } { Κατάλογος~θεωρημάτων }
+ \ProvideTranslation { Hungarian } { keythms_listof_title } { A~tételek~listája }
+ \ProvideTranslation { Icelandic } { keythms_listof_title } { Listi~yfir~setningar }
+ \ProvideTranslation { Indonesian } { keythms_listof_title } { Daftar~Teorema }
+ \ProvideTranslation { Italian } { keythms_listof_title } { Elenco~dei~teoremi }
+ \ProvideTranslation { Italian } { keythms_continues } { continua~da~p.\, }
+ \ProvideTranslation { Latvian } { keythms_listof_title } { Teorēmu~saraksts }
+ \ProvideTranslation { Lithuanian } { keythms_listof_title } { Teoremų~sąrašas }
+ \ProvideTranslation { Macedonian } { keythms_listof_title } { Список~на~теореми }
+ \ProvideTranslation { Norwegian } { keythms_listof_title } { Liste~over~teoremer }
+ \ProvideTranslation { Norwegian } { keythms_continues } { fortsetter~fra~side~ }
\ProvideTranslation { Spanish } { keythms_listof_title } { Lista~de~teoremas }
\ProvideTranslation { Spanish } { keythms_continues } { continúa~de~la~p.\, }
+ \ProvideTranslation { Polish } { keythms_listof_title } { Lista~twierdzeń }
+ \ProvideTranslation { Polish } { keythms_continues } { ciąg~dalszy~ze~strony~ }
+ \ProvideTranslation { Portuguese } { keythms_listof_title } { Lista~de~teoremas }
+ \ProvideTranslation { Portuguese } { keythms_continues } { continua~da~p.\, }
+ \ProvideTranslation { Romanian } { keythms_listof_title } { Lista~teoremelor }
+ \ProvideTranslation { Romanian } { keythms_continues } { continuare~de~la~p.\, }
+ \ProvideTranslation { Russian } { keythms_listof_title } { Список~теорем }
+ \ProvideTranslation { Slovak } { keythms_listof_title } { Zoznam~teorém }
+ \ProvideTranslation { Slovak } { keythms_continues } { pokračovanie~zo~strany~ }
+ \ProvideTranslation { Slovenian } { keythms_listof_title } { Seznam~trditev }
+ \ProvideTranslation { Slovenian } { keythms_continues } { nadaljevanje~s~strani~ }
+ \ProvideTranslation { Swedish } { keythms_listof_title } { Lista~över~teorem }
+ \ProvideTranslation { Swedish } { keythms_continues } { fortsättning~från~sidan~ }
+ \ProvideTranslation { Turkish } { keythms_listof_title } { Teoremler~Listesi }
+ \ProvideTranslation { Ukrainian } { keythms_listof_title } { Список~теорем }
+ \ProvideTranslation { Welsh } { keythms_listof_title } { Rhestr~o~Theoremau }
+ \ProvideTranslation { Welsh } { keythms_continues } { yn~parhau~o~dudalen~ }
}
}
\ProcessKeyOptions[keytheorems]
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Support for non-default classes %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\cs_new_protected:Npn \__keythms_support_AMSshared_code:
+ {
+ \keys_define:nn { keytheorems/listof } % adjust to AMS classes
+ {
+ indent .initial:n = 0pt,
+ numwidth .initial:n = 1.5pc,
+ title-code .code:n =
+ { % warn but set titlecmd just in case
+ \msg_warning:nn { keytheorems } { title-code-with-AMS }
+ \cs_set_protected:Npn \__keythms_listof_titlecmd:n ####1 { ##1 }
+ },
+ }
+ \RenewDocumentCommand \listofkeytheorems { +O{} }
+ { % title command not customizable here
+ \bool_gset_true:N \g__keythms_listof_writefile_bool
+ \group_begin:
+ \keys_set:nn { keytheorems/listof } { ##1 }
+ \cs_set_protected:Npn \KeyThmsContentsLine ####1 { ####1 }
+ \bool_if:NF \l__keythms_listof_nochapskip_bool
+ {
+ \cs_set_protected:Npn \KeyThmsAddvspace { \addvspace }
+ }
+ \legacy_if_set_false:n { @filesw }
+ \bool_if:NTF \l__keythms_listof_notitle_bool
+ { % hacky!
+ \cs_set_eq:NN \@startsection \use_none:nnnnnnn
+ \@starttoc{ thlist }{ }
+ }
+ { % ams classes don't expand title enough
+ \protected@edef \l__keythms_tmpa_tl { \l__keythms_listof_title_tl }
+ \bool_if:NT \l__keythms_listof_notoc_bool
+ { \cs_set_eq:NN \addcontentsline \use_none:nnn } % hacky!
+ \@starttoc{ thlist }{ \l__keythms_tmpa_tl }
+ }
+ \group_end:
+ }
+ \cs_new:Npn \__keythms_listof_ams_tocline:
+ {
+ \@tocline{ 0 }{ 3pt plus 2pt }{ \l__keythms_listof_indent_dim }
+ { \l__keythms_listof_numwidth_dim }{ }
+ }
+ \cs_set_eq:NN \keythms_listof_tocline: \__keythms_listof_ams_tocline:
+ }
+
+\prg_new_conditional:Npnn \__keythms_if_classloaded:n #1 { p }
+ {
+ \IfClassLoadedTF { #1 } { \prg_return_true: } { \prg_return_false: }
+ }
+
+\cs_new_protected:Npn \__keythms_support_input:n #1
+ {
+ \file_input:n { class-support/keythms-#1-support }
+ }
+
+% acmart and aomart defaults also handled in amsart support file
+\bool_case:n
+ {
+ { \__keythms_if_classloaded_p:n { amsart } }
+ { \__keythms_support_input:n { amsart } }
+ { \__keythms_if_classloaded_p:n { amsbook } }
+ { \__keythms_support_input:n { amsbook } }
+ { \__keythms_if_classloaded_p:n { amsproc } }
+ { \__keythms_support_input:n { amsproc } }
+ { \__keythms_if_classloaded_p:n { beamer } }
+ { \__keythms_support_input:n { beamer } }
+ { \__keythms_if_classloaded_p:n { IEEEtran } }
+ { \__keythms_support_input:n { IEEEtran } }
+ { \__keythms_if_classloaded_p:n { jlreq } }
+ { \__keythms_support_input:n { jlreq } }
+ { \__keythms_if_classloaded_p:n { memoir } }
+ { \__keythms_support_input:n { memoir } }
+ }
+
+% now deal with font packages that change plain style
+\cs_new_protected:Npn \__keythms_support_fontpkg:nn #1#2
+ {
+ \clist_map_inline:nn { #1 }
+ {
+ \hook_gput_code:nnn { package/##1/after } { . }
+ {
+ \IfPackageLoadedWithOptionsT { ##1 } { theoremfont }
+ {
+ \prop_gput_from_keyval:Nn \g__keythms_thmstyle_defaultkeys_prop { #2 }
+ \keys_precompile:neN { keytheorems/thmstyle }
+ { \prop_to_keyval:N \g__keythms_thmstyle_defaultkeys_prop }
+ \l__keythms_thmstyle_defaultkeys_tl
+ }
+ }
+ }
+ }
+
+\__keythms_support_fontpkg:nn { baskervillef,cochineal } { bodyfont = \slshape }
+\__keythms_support_fontpkg:nn { libertinust1math,newpxtext,newtxtext,XCharter }
+ {
+ bodyfont = \thfamily,
+ spaceabove = \medskipamount,
+ spacebelow = \medskipamount,
+ }
+\__keythms_support_fontpkg:nn { scholax } { bodyfont = \thfamily }
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%%% Tagging Support %%%
+%%%%%%%%%%%%%%%%%%%%%%%
+
+\IfDocumentMetadataTF
+ {
+ \tag_if_active:T
+ {
+ \msg_new:nnn { keytheorems } { tag-incompat-key }
+ {
+ The~key~'#1'~does~not~currently~work~with~
+ tagging.~Ignoring~this~key.
+ }
+ \keys_define:nn { keytheorems/thm }
+ {
+ tcolorbox .code:n =
+ {
+ \msg_warning:nn { keytheorems } { tag-incompat-key }
+ { tcolorbox }
+ },
+ tcolorbox-no-titlebar .code:n =
+ {
+ \msg_warning:nn { keytheorems } { tag-incompat-key }
+ { tcolorbox-no-titlebar }
+ },
+ }
+ \keys_define:nn { keytheorems/listof }
+ {
+ print-body .code:n =
+ {
+ \cs_set_protected:Nn \keythms_listof_listcmd:nnnnnnn
+ {
+ \tl_if_empty:nF { ##7 }
+ {
+ \__keythms_getthm_theorem:nnnnn
+ {##1}{##2}{##5}{##6}{##7}
+ }
+ }
+ % with tagging, make \@starttoc same as input
+ \cs_set_protected:Npn \@starttoc ##1
+ { \makeatletter \@input { \jobname.##1 } }
+ },
+ }
+ \IfFormatAtLeastTF { 2025-06-01 }
+ { % dev formats use theoremblock instance
+ \tl_const:Nn \c__keythms_tagging_instance_tl { theoremblock-0 }
+ }
+ { % current format uses displayblock instance
+ \tl_const:Nn \c__keythms_tagging_instance_tl { displayblock-0 }
+ }
+ \cs_set_protected:Npn \__keythms_thm_margincode:nnn #1#2#3
+ { % tagging code does not define theorems with lists
+ \tl_gput_right:cn { g__keythms_thm_preheadfromkeys_#1_tl }
+ {
+ \exp_args:Nne \EditInstance { block }
+ { \c__keythms_tagging_instance_tl }
+ {
+ leftmargin = #2,
+ rightmargin = #3,
+ }
+ % hack until https://github.com/latex3/tagging-project/issues/755 is fixed
+ \EditInstance { block } { list-1 } { rightmargin = 0pt }
+ }
+ }
+ }
+ }
+ { }
+
\file_input_stop: \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/koma-script/DIN.lco b/Master/texmf-dist/tex/latex/koma-script/DIN.lco
index f44228d7071..23171ef1b57 100644
--- a/Master/texmf-dist/tex/latex/koma-script/DIN.lco
+++ b/Master/texmf-dist/tex/latex/koma-script/DIN.lco
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: scrkernel-letterclassoptions.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: head)
\ProvidesFile{%
diff --git a/Master/texmf-dist/tex/latex/koma-script/DIN5008A.lco b/Master/texmf-dist/tex/latex/koma-script/DIN5008A.lco
index 944e5186430..c5efd253353 100644
--- a/Master/texmf-dist/tex/latex/koma-script/DIN5008A.lco
+++ b/Master/texmf-dist/tex/latex/koma-script/DIN5008A.lco
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: scrkernel-letterclassoptions.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: head)
\ProvidesFile{%
diff --git a/Master/texmf-dist/tex/latex/koma-script/DIN5008B.lco b/Master/texmf-dist/tex/latex/koma-script/DIN5008B.lco
index ffa8a1da652..15747b34e97 100644
--- a/Master/texmf-dist/tex/latex/koma-script/DIN5008B.lco
+++ b/Master/texmf-dist/tex/latex/koma-script/DIN5008B.lco
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: scrkernel-letterclassoptions.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: head)
\ProvidesFile{%
diff --git a/Master/texmf-dist/tex/latex/koma-script/DINmtext.lco b/Master/texmf-dist/tex/latex/koma-script/DINmtext.lco
index 84365e1fabf..4d8d50ae26a 100644
--- a/Master/texmf-dist/tex/latex/koma-script/DINmtext.lco
+++ b/Master/texmf-dist/tex/latex/koma-script/DINmtext.lco
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: scrkernel-letterclassoptions.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: head)
\ProvidesFile{%
diff --git a/Master/texmf-dist/tex/latex/koma-script/KOMAold.lco b/Master/texmf-dist/tex/latex/koma-script/KOMAold.lco
index 8a1e86bf845..4329b13c28b 100644
--- a/Master/texmf-dist/tex/latex/koma-script/KOMAold.lco
+++ b/Master/texmf-dist/tex/latex/koma-script/KOMAold.lco
@@ -41,30 +41,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: scrkernel-letterclassoptions.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: head)
\ProvidesFile{%
@@ -218,7 +196,7 @@
\@ObsoleteCommand{\subjectafteron}{subject=afteropening}}
\def\subjectafteroff{%
\@ObsoleteCommand{\subjectafteroff}{subject=beforeopening}}
-%%% From File: $Id: scrkernel-notepaper.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-notepaper.dtx 4113 2024-06-07 08:20:20Z kohm $
%%% (run: body)
\def\setpresigskip{\setplength{sigbeforevskip}}
\endinput
diff --git a/Master/texmf-dist/tex/latex/koma-script/KakuLL.lco b/Master/texmf-dist/tex/latex/koma-script/KakuLL.lco
index 66cea582665..fe5fc676ea2 100644
--- a/Master/texmf-dist/tex/latex/koma-script/KakuLL.lco
+++ b/Master/texmf-dist/tex/latex/koma-script/KakuLL.lco
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: japanlco.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: Kaku,LATE,LOW,head)
\ProvidesFile{%
@@ -71,7 +49,7 @@
L%
L%
}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
Japanese letter-class-option]
\providecommand*\LCOWarningNoLine[2]{%
\LCOWarning{#1}{#2\@gobble}%
diff --git a/Master/texmf-dist/tex/latex/koma-script/NF.lco b/Master/texmf-dist/tex/latex/koma-script/NF.lco
index d6007e636e6..03be7cf8eab 100644
--- a/Master/texmf-dist/tex/latex/koma-script/NF.lco
+++ b/Master/texmf-dist/tex/latex/koma-script/NF.lco
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: scrkernel-letterclassoptions.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: head)
\ProvidesFile{%
diff --git a/Master/texmf-dist/tex/latex/koma-script/NipponEH.lco b/Master/texmf-dist/tex/latex/koma-script/NipponEH.lco
index ea4af7f3e3f..f1e5a5ce460 100644
--- a/Master/texmf-dist/tex/latex/koma-script/NipponEH.lco
+++ b/Master/texmf-dist/tex/latex/koma-script/NipponEH.lco
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: japanlco.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: Ni,EARLY,HIGH,head)
\ProvidesFile{%
@@ -71,7 +49,7 @@
E%
H%
}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
Japanese letter-class-option]
\providecommand*\LCOWarningNoLine[2]{%
\LCOWarning{#1}{#2\@gobble}%
diff --git a/Master/texmf-dist/tex/latex/koma-script/NipponEL.lco b/Master/texmf-dist/tex/latex/koma-script/NipponEL.lco
index 3454aa524a3..e9855e48fbe 100644
--- a/Master/texmf-dist/tex/latex/koma-script/NipponEL.lco
+++ b/Master/texmf-dist/tex/latex/koma-script/NipponEL.lco
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: japanlco.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: Ni,EARLY,LOW,head)
\ProvidesFile{%
@@ -71,7 +49,7 @@
E%
L%
}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
Japanese letter-class-option]
\providecommand*\LCOWarningNoLine[2]{%
\LCOWarning{#1}{#2\@gobble}%
diff --git a/Master/texmf-dist/tex/latex/koma-script/NipponLH.lco b/Master/texmf-dist/tex/latex/koma-script/NipponLH.lco
index d83d79dc8e9..279ec63b8c3 100644
--- a/Master/texmf-dist/tex/latex/koma-script/NipponLH.lco
+++ b/Master/texmf-dist/tex/latex/koma-script/NipponLH.lco
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: japanlco.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: Ni,LATE,HIGH,head)
\ProvidesFile{%
@@ -71,7 +49,7 @@
L%
H%
}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
Japanese letter-class-option]
\providecommand*\LCOWarningNoLine[2]{%
\LCOWarning{#1}{#2\@gobble}%
diff --git a/Master/texmf-dist/tex/latex/koma-script/NipponLL.lco b/Master/texmf-dist/tex/latex/koma-script/NipponLL.lco
index 20497be7241..3f68e7adfc6 100644
--- a/Master/texmf-dist/tex/latex/koma-script/NipponLL.lco
+++ b/Master/texmf-dist/tex/latex/koma-script/NipponLL.lco
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: japanlco.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: Ni,LATE,LOW,head)
\ProvidesFile{%
@@ -71,7 +49,7 @@
L%
L%
}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
Japanese letter-class-option]
\providecommand*\LCOWarningNoLine[2]{%
\LCOWarning{#1}{#2\@gobble}%
diff --git a/Master/texmf-dist/tex/latex/koma-script/NipponRL.lco b/Master/texmf-dist/tex/latex/koma-script/NipponRL.lco
index 15ca5788154..702aaa16827 100644
--- a/Master/texmf-dist/tex/latex/koma-script/NipponRL.lco
+++ b/Master/texmf-dist/tex/latex/koma-script/NipponRL.lco
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: japanlco.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: Ni,RIGHT,LOW,head)
\ProvidesFile{%
@@ -71,7 +49,7 @@
R%
L%
}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
Japanese letter-class-option]
\providecommand*\LCOWarningNoLine[2]{%
\LCOWarning{#1}{#2\@gobble}%
diff --git a/Master/texmf-dist/tex/latex/koma-script/SN.lco b/Master/texmf-dist/tex/latex/koma-script/SN.lco
index a62f7332090..9fba37cc844 100644
--- a/Master/texmf-dist/tex/latex/koma-script/SN.lco
+++ b/Master/texmf-dist/tex/latex/koma-script/SN.lco
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: scrkernel-letterclassoptions.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: head)
\ProvidesFile{%
diff --git a/Master/texmf-dist/tex/latex/koma-script/SNleft.lco b/Master/texmf-dist/tex/latex/koma-script/SNleft.lco
index f9e23642a36..e8d2e6ebf77 100644
--- a/Master/texmf-dist/tex/latex/koma-script/SNleft.lco
+++ b/Master/texmf-dist/tex/latex/koma-script/SNleft.lco
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: scrkernel-letterclassoptions.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: head)
\ProvidesFile{%
diff --git a/Master/texmf-dist/tex/latex/koma-script/UScommercial9.lco b/Master/texmf-dist/tex/latex/koma-script/UScommercial9.lco
index e69d559e056..d42f86801f6 100644
--- a/Master/texmf-dist/tex/latex/koma-script/UScommercial9.lco
+++ b/Master/texmf-dist/tex/latex/koma-script/UScommercial9.lco
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: scrkernel-letterclassoptions.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: head)
\ProvidesFile{%
diff --git a/Master/texmf-dist/tex/latex/koma-script/UScommercial9DW.lco b/Master/texmf-dist/tex/latex/koma-script/UScommercial9DW.lco
index 69a88f18e2f..55603d8f86b 100644
--- a/Master/texmf-dist/tex/latex/koma-script/UScommercial9DW.lco
+++ b/Master/texmf-dist/tex/latex/koma-script/UScommercial9DW.lco
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: scrkernel-letterclassoptions.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: head)
\ProvidesFile{%
diff --git a/Master/texmf-dist/tex/latex/koma-script/lscape.hak b/Master/texmf-dist/tex/latex/koma-script/lscape.hak
deleted file mode 100644
index ae5e175728e..00000000000
--- a/Master/texmf-dist/tex/latex/koma-script/lscape.hak
+++ /dev/null
@@ -1,94 +0,0 @@
-%%
-%% This is file `lscape.hak',
-%% generated with the docstrip utility, extended by scrdocstrip.
-%%
-%% The original source files were:
-%%
-%% scrkernel-version.dtx (with options: `file,lscape.hak')
-%% scrhack.dtx (with options: `hack,lscape,identify')
-%% scrhack.dtx (with options: `hack,lscape,body')
-%%
-%% Copyright (c) 2008-2022 Markus Kohm [komascript at gmx info]
-%%
-%% This file was generated from file(s) of the KOMA-Script bundle.
-%% ---------------------------------------------------------------
-%%
-%% It may be distributed under the conditions of the
-%% LaTeX Project Public License in the version distributed together
-%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'.
-%%
-%% This file may only be distributed together with a copy of the
-%% KOMA-Script bundle. You may however distribute the
-%% KOMA-Script bundle without all such generated files. See also
-%% `lppl.txt' or `lppl-de.txt' for additional information.
-%%
-%% The list of files belonging to KOMA-Script distribution is given in
-%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for
-%% additional information.
-%%
-%% If this file is a beta version, you may not be allowed to distribute
-%% it. Look at the comments below to see if this is the case.
-%%
-%% English and German manuals are part of KOMA-Script bundle.
-%% ----------------------------------------------------------
-%%
-%% See `README'.
-%%
-%% The KOMA-Script bundle (but maybe not this file) was based upon the
-%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e
-%% standard classes created by The LaTeX3 Project 1994-1996. You can
-%% find a complete unmodified copy of LaTeX2e at
-%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
-%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
-\ProvidesFile{lscape.hak}[%
- 2023/07/07 v3.41 KOMA-Script
- scrhack part
- (hacking package
- lscape)%
-]
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
-\xpatchcmd{\landscape}{\textheight=\vsize}{%
- \if@scrhack@lscape
- \scrh@LT@textheight=\vsize
- \let\scrh@LT@outputpage\@outputpage
- \def\@outputpage{\scrh@LT@outputpage\global\@colht\scrh@LT@textheight}%
- \else
- \textheight=\vsize
- \fi
-}{%
- \PackageInfo{scrhack}{\string\landscape\space patched to make
- \string\textheight\space change optional}%
-}{%
- \PackageWarning{scrhack}{Cannot patch \string\landscape!\MessageBreak
- Maybe you are using a unsupported lscape version}%
- \@scrhack@lscapefalse
-}
-\newlength{\scrh@LT@textheight}
-\endinput
-%%
-%% End of file `lscape.hak'.
diff --git a/Master/texmf-dist/tex/latex/koma-script/scraddr.sty b/Master/texmf-dist/tex/latex/koma-script/scraddr.sty
index 96dca358d3f..dac68336935 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scraddr.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scraddr.sty
@@ -39,7 +39,7 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scraddr.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scraddr.dtx 4104 2024-02-01 09:52:39Z kohm $
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{scraddr}
[2022/01/24 v1.1d KOMA-Script
@@ -88,11 +88,15 @@
\expandafter\gdef\csname ##9.FIV\endcsname{##8}
\fi}
\InputIfFileExists{#1.adr}
- {\typeout{Load addressfile: #1.adr.}}
- {\PackageError{scraddr}
- {File #1.adr not found}
- {The addressfile you wanted is not
- available}}
+ {%
+ \@ifundefined{PackageNote}{\PackageInfo}{\PackageNote}%
+ {scraddr}{Address file `#1.adr' loaded}%
+ }%
+ {%
+ \PackageError{scraddr}
+ {File `#1.adr' not found}
+ {The address file you wanted is not available}%
+ }
\endgroup}
\newcommand*{\Name}[1]{\FirstName{#1}\ \LastName{#1}}
\newcommand*{\FirstName}[1]{\csname #1.FN\endcsname}
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrartcl.cls b/Master/texmf-dist/tex/latex/koma-script/scrartcl.cls
index bd3ae7023bc..b92b66a0373 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrartcl.cls
+++ b/Master/texmf-dist/tex/latex/koma-script/scrartcl.cls
@@ -84,30 +84,32 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\providecommand*{\@CheckKOMAScriptVersion}{%
+ \begingroup
+ \ExplSyntaxOff
+ \@@CheckKOMAScriptVersion
+}
+\providecommand*{\@@CheckKOMAScriptVersion}[1]{%
+ \@ifundefined{KOMAScriptVersion}{%
\gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ }{%
\def\@tempa{#1}%
\ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
+ \GenericWarning{\space\@spaces\@spaces\@spaces\@spaces}{%
+ Version warning:
+ \noexpand\KOMAScriptVersion is
+ `\csname KOMAScriptVersion\endcsname',\MessageBreak
but `#1' was expected!\MessageBreak
You should not use classes, packages or files
from\MessageBreak
- different KOMA-Script versions%
+ different KOMA-Script versions\@gobble
}%
\fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+ }%
+ \endgroup
+}
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
\providecommand*{\scr@clsextension}{\@clsextension}
\AtBeginDocument{%
\let\scr@clsextension\@clsextension
@@ -119,16 +121,16 @@
article%
}
\ProvidesClass{\KOMAClassName}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
document class (\ClassName)%
]
-%%% From File: $Id: scrkernel-basics.dtx 4051 2023-04-26 16:01:28Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 4074 2023-07-14 15:56:59Z kohm $
%%% (run: load)
\RequirePackage{scrkbase}[\KOMAScriptVersion]
-%%% From File: $Id: scrkernel-listsof.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-listsof.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: prepare)
\RequirePackage{tocbasic}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
]
\addtotoclist[ToC]{toc}
\Ifstr{\ext@toc}{toc}{}{%
@@ -138,7 +140,7 @@
}
%%% From File: $Id: scrkernel-tocstyle.dtx 4060 2023-06-20 08:59:01Z kohm $
%%% (run: prepare)
-%%% From File: $Id: scrkernel-sections.dtx 4069 2023-06-29 08:55:54Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: prepare)
\newcommand*{\scr@dotchangeatdocument}[1]{%
\ClassError{\KOMAClassName}{%
@@ -199,7 +201,7 @@
\newcommand*{\size@subparagraph}{}
\newcommand*{\scr@fnt@subparagraph}{\size@subparagraph}
\newcommand*{\sectfont}{\normalcolor\maybesffamily\bfseries}
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: init)
\newcommand*
{\scr@compatibility}{\scr@v@last}
@@ -288,10 +290,12 @@
\@namedef{scr@v@3.39}{20}
\@namedef{scr@v@3.40}{20}
\@namedef{scr@v@3.41}{21}
-\@namedef{scr@v@last}{21}
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+\@namedef{scr@v@3.42}{21}
+\@namedef{scr@v@3.43}{3430}
+\@namedef{scr@v@last}{3430}
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: init)
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: option)
\newif\if@scr@emulatestandardclasses
\let\scr@emulatestandardclassestrue\relax
@@ -348,7 +352,7 @@
old KOMA-Script release. However, in that case you\MessageBreak
could also need old releases of other packages and\MessageBreak
even of the LaTeX kernel.\MessageBreak
- You should also note, that the KOMA-Script developers\MessageBreak
+ Please also note, that the KOMA-Script developers\MessageBreak
refuse support for documents using `version=#1'.\MessageBreak
We recommend to eliminate all deprecated options\MessageBreak
and commands. We also recommend to not use option\MessageBreak
@@ -385,7 +389,7 @@
\newcommand*{\scr@v@is@eq}[1]{%
\scr@compatibility=\@nameuse{scr@v@#1}
}
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: option)
\KOMA@key{draft}[true]{%
\KOMA@set@ifkey{draft}{@tempswa}{#1}%
@@ -437,7 +441,7 @@
\KOMA@kav@add{\KOMAClassFileName}{overfullrule}{false}
\DeclareOption{leqno}{\input{leqno.clo}}
\DeclareOption{fleqn}{\input{fleqn.clo}}
-%%% From File: $Id: scrkernel-language.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-language.dtx 4107 2024-04-10 17:24:53Z kohm $
%%% (run: option)
%%% From File: $Id: scrkernel-fonts.dtx 4034 2023-04-20 08:03:46Z kohm $
%%% (run: option)
@@ -596,7 +600,7 @@
{sfdefaults}{\if@sfdefaults true\else false\fi}%
\fi
}
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: options)
\KOMA@key{twoside}[true]{%
\if@atdocument\else\PassOptionsToPackage{twoside=#1}{typearea}\fi%
@@ -928,7 +932,7 @@
\KOMA@DeclareDeprecatedOption{abstractoff}{abstract=false}
%%% From File: $Id: scrkernel-tocstyle.dtx 4060 2023-06-20 08:59:01Z kohm $
%%% (run: option)
-%%% From File: $Id: scrkernel-sections.dtx 4069 2023-06-29 08:55:54Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: option)
\KOMA@key{numbers}{%
\KOMA@set@ncmdkey{numbers}{@tempa}{%
@@ -964,6 +968,26 @@
\AtBeginDocument{%
\@ifpackageloaded{bookmark}{}{%
\if@scr@autoloadbookmarkpackage
+ \IfFileExists{bookmark.sty}{}{%
+ \ClassWarningNoLine{\KOMAClassName}{%
+ Using `bookmark' together with `hyperref' is
+ recommended,\MessageBreak
+ because of handling of possible bookmark level gaps.\MessageBreak
+ However, the package seems not to be installed and\MessageBreak
+ therefore cannot be loaded automatically.\MessageBreak
+ It is recommended to install package `bookmark'!\MessageBreak
+ However, you can avoid this warning without\MessageBreak
+ installation of package `bookmark', if you'd
+ deactivate\MessageBreak
+ automatically loading of `bookmark' using KOMA-Script\MessageBreak
+ option `bookmarkpackage=false' before
+ \string\begin{document}%
+ }%
+ \@scr@autoloadbookmarkpackagefalse
+ \KOMA@kav@replacevalue{\KOMAClassFileName}{bookmarkpackage}{false}%
+ }%
+ \fi
+ \if@scr@autoloadbookmarkpackage
\scr@ifundefinedorrelax{Hy@driver}{%
\ClassWarning{\KOMAClassName}{%
`hyperref' loaded but `\string\Hy@driver' undefined.\MessageBreak
@@ -1027,7 +1051,8 @@
\if@filesw
\ClassWarning{\KOMAClassName}{%
seems someone has broken package `auxhook'.\MessageBreak
- Usually this happens, if `auxhook' is loaded or used\MessageBreak
+ Usually this happens, if `auxhook' is loaded or
+ used\MessageBreak
implicitly or explicitly by patching
\string\document%
\scr@ifundefinedorrelax{AtEndPreamble}{}{%
@@ -1457,7 +1482,7 @@
\csname FN@mf@prepare\endcsname
\ifhmode\spacefactor\@x@sf\fi
\relax}
-%%% From File: $Id: scrkernel-listsof.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-listsof.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: option)
\newif\if@tocleft
\KOMA@key{toc}{%
@@ -1968,17 +1993,17 @@
\KOMA@DeclareDeprecatedOption{idxtotoc}{index=totoc}
%%% From File: $Id: scrkernel-listsandtabulars.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: option)
-%%% From File: $Id: scrkernel-sections.dtx 4069 2023-06-29 08:55:54Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: execoption)
\KOMAExecuteOptions{numbers=autoendperiod}
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: execoption)
\KOMAExecuteOptions{%
parskip=false,%
headings=big%
}
\KOMAProcessOptions\relax
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: body)
\AtBeginDocument{%
\begingroup
@@ -2528,13 +2553,13 @@
\@nomath\sfb}
\DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal}
-%%% From File: $Id: scrkernel-language.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-language.dtx 4107 2024-04-10 17:24:53Z kohm $
%%% (run: body)
\def\today{\ifcase\month\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or December\fi
\space\number\day, \number\year}%
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: body)
\let\@BCOR =\relax
\let\@@BCOR =\relax
@@ -3222,7 +3247,7 @@
%%% From File: $Id: scrkernel-tocstyle.dtx 4060 2023-06-20 08:59:01Z kohm $
%%% (run: class,style,default)
\CloneTOCEntryStyle{subsection}{default}
-%%% From File: $Id: scrkernel-sections.dtx 4069 2023-06-29 08:55:54Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: body)
\BeforeClosingMainAux{%
\if@autodot\if@filesw\immediate\write\@mainaux{%
@@ -5136,7 +5161,7 @@
\fi
\newcommand*{\scr@fnt@disposition}{\sectfont}
\aliaskomafont{sectioning}{disposition}
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: body)
\newif\if@restonecol
\newcommand{\dictum}[2][]{\par%
@@ -5195,9 +5220,9 @@
\endgroup
\edef\is@thispageodd@setlabel{%
\if@filesw
- \unexpanded{\protected@write\@auxout{\let\arabic\relax}}{%
+ \unexpanded{\protected@write\@auxout{\let\number\relax}}{%
\noexpand\string
- \noexpand\new@tpo@label{\scr@tpo}{\noexpand\arabic{page}}}%
+ \noexpand\new@tpo@label{\scr@tpo}{\noexpand\number\c@page}}%
\fi
\noexpand\def\noexpand\is@thispageodd@setlabel
{\unexpanded\expandafter{\is@thispageodd@setlabel}}%
@@ -5252,7 +5277,7 @@
\reserved@a
\ifin@\expandafter\@gobble\else\expandafter\@firstofone\fi
}{%
- \BeforePackage{#1}{%
+ \expandafter\providecommand\csname scr@class@#1@warning\endcsname{%
\ClassWarning{\KOMAClassName}{%
Usage of package `#1' together\MessageBreak
with a KOMA-Script class is not recommended.\MessageBreak
@@ -5263,6 +5288,9 @@
package `#1'%
}%
}%
+ \BeforePackage{#1}{%
+ \csname scr@class@#1@warning\endcsname
+ }%
}%
}%
\scr@package@not@recommended{emptypage}{%
@@ -5547,7 +5575,7 @@
\newcommand*{\indexpagestyle}{plain}
\pagestyle{plain}
\pagenumbering{arabic}
-%%% From File: $Id: scrlayer.dtx 4058 2023-06-16 08:32:27Z kohm $
+%%% From File: $Id: scrlayer.dtx 4118 2024-09-02 12:05:30Z kohm $
%%% (run: body)
\providecommand*{\@mkleft}{%
\IfActiveMkBoth{\markleft}{\@gobble}%
@@ -6487,7 +6515,7 @@
\endgroup
\@footnotemark
}
-%%% From File: $Id: scrkernel-listsof.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-listsof.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: body)
\g@addto@macro{\numberline@numberpostfix}{\autodot}
\usetocbasicnumberline[%
@@ -6590,17 +6618,34 @@
}
\newcommand*{\scr@float@listhead@warning}{%
\ClassWarning{\KOMAClassName}{%
- \string\float@listhead\space detected!\MessageBreak
+ Usage of \string\float@listhead\space detected!\MessageBreak
+ This could be, because you are using\MessageBreak
+ \@ifpackageloaded{floatrow}{%
+ \@ifpackageloaded{floatrowbytocbasic}{%
+ a package that does not support the KOMA-Script\MessageBreak
+ interface of KOMA-Script package `tocbasic`.\MessageBreak
+ }{%
+ package `floatrow` without `floatrowbytocbasic`.\MessageBreak
+ }%
+ }{%
+ \@ifpackageloaded{float}{%
+ \@ifpackageloaded{floatbytocbasic}{%
+ a package that does not support the KOMA-Script\MessageBreak
+ interface of KOMA-Script package `tocbasic`.\MessageBreak
+ }{%
+ package `float` without `floatbytocbasic`.\MessageBreak
+ }%
+ }{%
+ a package that does not support the KOMA-Script\MessageBreak
+ interface of KOMA-Script package `tocbasic`.\MessageBreak
+ }%
+ }%
Implementation of \string\float@listhead\space became\MessageBreak
deprecated in KOMA-Script v3.01 2008/11/14 and\MessageBreak
has been replaced by several more flexible\MessageBreak
features of package `tocbasic`.\MessageBreak
- Maybe implementation of \string\float@listhead\space will\MessageBreak
- be removed from KOMA-Script soon.\MessageBreak
- Loading of package `scrhack' may help to\MessageBreak
- avoid this warning, if you are using a\MessageBreak
- a package that still implements the\MessageBreak
- deprecated \string\float@listhead\space interface%
+ Implementation of \string\float@listhead\space will\MessageBreak
+ be removed from KOMA-Script soon%
}%
}
\newcommand*{\scr@float@addtolists@warning}{%
@@ -6614,10 +6659,9 @@
\string\float@addtolist\space interface has been\MessageBreak
restricted to only some of the KOMA-Script\MessageBreak
features and been removed from others.\MessageBreak
- Loading of package `scrhack' may help to\MessageBreak
- avoid this warning, if you are using a\MessageBreak
- a package that still implements the\MessageBreak
- deprecated \string\float@addtolist\space interface%
+ Since Version 3.43 support for deprecated\MessageBreak
+ \string\float@addtolist\space interface has been\MessageBreak
+ removed from all KOMA-Script classes%
}%
\global\let\scr@float@addtolists@warning\relax
}
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrarticle.cls b/Master/texmf-dist/tex/latex/koma-script/scrarticle.cls
index 2d9b3800c52..5af76cf313c 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrarticle.cls
+++ b/Master/texmf-dist/tex/latex/koma-script/scrarticle.cls
@@ -38,30 +38,32 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\providecommand*{\@CheckKOMAScriptVersion}{%
+ \begingroup
+ \ExplSyntaxOff
+ \@@CheckKOMAScriptVersion
+}
+\providecommand*{\@@CheckKOMAScriptVersion}[1]{%
+ \@ifundefined{KOMAScriptVersion}{%
\gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ }{%
\def\@tempa{#1}%
\ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
+ \GenericWarning{\space\@spaces\@spaces\@spaces\@spaces}{%
+ Version warning:
+ \noexpand\KOMAScriptVersion is
+ `\csname KOMAScriptVersion\endcsname',\MessageBreak
but `#1' was expected!\MessageBreak
You should not use classes, packages or files
from\MessageBreak
- different KOMA-Script versions%
+ different KOMA-Script versions\@gobble
}%
\fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+ }%
+ \endgroup
+}
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
\providecommand*{\scr@clsextension}{\@clsextension}
\AtBeginDocument{%
\let\scr@clsextension\@clsextension
@@ -75,7 +77,7 @@
\newcommand*{\KOMALongClassFileName}{\KOMALongClassName.\@clsextension}
\edef\KOMALongClassFileName{\KOMALongClassFileName}
\ProvidesClass{\KOMALongClassName}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
document class (\ClassName)%
]
\let\ClassName\relax
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrbase.sty b/Master/texmf-dist/tex/latex/koma-script/scrbase.sty
index 23b1c3208c7..3d23734caae 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrbase.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scrbase.sty
@@ -44,41 +44,43 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\providecommand*{\@CheckKOMAScriptVersion}{%
+ \begingroup
+ \ExplSyntaxOff
+ \@@CheckKOMAScriptVersion
+}
+\providecommand*{\@@CheckKOMAScriptVersion}[1]{%
+ \@ifundefined{KOMAScriptVersion}{%
\gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ }{%
\def\@tempa{#1}%
\ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
+ \GenericWarning{\space\@spaces\@spaces\@spaces\@spaces}{%
+ Version warning:
+ \noexpand\KOMAScriptVersion is
+ `\csname KOMAScriptVersion\endcsname',\MessageBreak
but `#1' was expected!\MessageBreak
You should not use classes, packages or files
from\MessageBreak
- different KOMA-Script versions%
+ different KOMA-Script versions\@gobble
}%
\fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+ }%
+ \endgroup
+}
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
\providecommand*{\scr@pkgextension}{\@pkgextension}
\AtBeginDocument{%
\let\scr@pkgextension\@pkgextension
}
-%%% From File: $Id: scrkernel-basics.dtx 4051 2023-04-26 16:01:28Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 4074 2023-07-14 15:56:59Z kohm $
%%% (run: prepare)
\NeedsTeXFormat{LaTeX2e}[1995/06/01]
\ProvidesPackage{%
scrbase%
}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
package
(%
KOMA-Script-independent
@@ -409,7 +411,7 @@
\let\AtEndOfFamilyOptions\scr@AtEndOfFamilyOptions
\fi
\let\ds@\@empty
- \edef\@curroptions{\@ptionlist{\@currname.\@currext}}%
+ \protected@edef\@curroptions{\@ptionlist{\@currname.\@currext}}%
\ifx\@currext\@clsextension\else
\let\@globaloptionslist\@classoptionslist
\scr@ifundefinedorrelax{XKV@classoptionslist}{%
@@ -597,7 +599,7 @@
\long\def\l@addto@macro#1#2{%
\edef#1{\unexpanded\expandafter{#1#2}}%
}%
-%%% From File: $Id: scrkernel-basics.dtx 4051 2023-04-26 16:01:28Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 4074 2023-07-14 15:56:59Z kohm $
%%% (run: option)
\DefineFamily{KOMA}
\DefineFamilyMember{KOMA}
@@ -609,9 +611,9 @@
\RelaxFamilyKey[.scrbase.sty]{KOMA}{internalonly}%
}
\FamilyProcessOptions{KOMA}\relax
-%%% From File: $Id: scrkernel-language.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-language.dtx 4107 2024-04-10 17:24:53Z kohm $
%%% (run: option)
-%%% From File: $Id: scrkernel-basics.dtx 4051 2023-04-26 16:01:28Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 4074 2023-07-14 15:56:59Z kohm $
%%% (run: body)
\newcommand*{\XdivY}[2]{%
\numexpr ( #1 + #2 / 2 ) / #2 - 1\relax
@@ -2496,7 +2498,7 @@
}%
}%
}
-%%% From File: $Id: scrkernel-language.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-language.dtx 4107 2024-04-10 17:24:53Z kohm $
%%% (run: body)
\newcommand*{\defcaptionname}{%
\kernel@ifstar\scr@def@scaptionname\scr@def@captionname
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrbook.cls b/Master/texmf-dist/tex/latex/koma-script/scrbook.cls
index 978a437f953..aba07aac0e6 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrbook.cls
+++ b/Master/texmf-dist/tex/latex/koma-script/scrbook.cls
@@ -84,30 +84,32 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\providecommand*{\@CheckKOMAScriptVersion}{%
+ \begingroup
+ \ExplSyntaxOff
+ \@@CheckKOMAScriptVersion
+}
+\providecommand*{\@@CheckKOMAScriptVersion}[1]{%
+ \@ifundefined{KOMAScriptVersion}{%
\gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ }{%
\def\@tempa{#1}%
\ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
+ \GenericWarning{\space\@spaces\@spaces\@spaces\@spaces}{%
+ Version warning:
+ \noexpand\KOMAScriptVersion is
+ `\csname KOMAScriptVersion\endcsname',\MessageBreak
but `#1' was expected!\MessageBreak
You should not use classes, packages or files
from\MessageBreak
- different KOMA-Script versions%
+ different KOMA-Script versions\@gobble
}%
\fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+ }%
+ \endgroup
+}
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
\providecommand*{\scr@clsextension}{\@clsextension}
\AtBeginDocument{%
\let\scr@clsextension\@clsextension
@@ -119,16 +121,16 @@
book%
}
\ProvidesClass{\KOMAClassName}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
document class (\ClassName)%
]
-%%% From File: $Id: scrkernel-basics.dtx 4051 2023-04-26 16:01:28Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 4074 2023-07-14 15:56:59Z kohm $
%%% (run: load)
\RequirePackage{scrkbase}[\KOMAScriptVersion]
-%%% From File: $Id: scrkernel-listsof.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-listsof.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: prepare)
\RequirePackage{tocbasic}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
]
\AtAddToTocList[\@currname.\@currext]{\setuptoc{\@currext}{onecolumn}}%
\AtAddToTocList[ToC]{\setuptoc{\@currext}{onecolumn}}%
@@ -141,7 +143,7 @@
\AtAddToTocList[float]{\setuptoc{\@currext}{onecolumn}}%
%%% From File: $Id: scrkernel-tocstyle.dtx 4060 2023-06-20 08:59:01Z kohm $
%%% (run: prepare)
-%%% From File: $Id: scrkernel-sections.dtx 4069 2023-06-29 08:55:54Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: prepare)
\newif\if@openright
\@openrighttrue
@@ -228,7 +230,7 @@
\newcommand*{\size@subparagraph}{}
\newcommand*{\scr@fnt@subparagraph}{\size@subparagraph}
\newcommand*{\sectfont}{\normalcolor\maybesffamily\bfseries}
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: init)
\newcommand*
{\scr@compatibility}{\scr@v@last}
@@ -317,10 +319,12 @@
\@namedef{scr@v@3.39}{20}
\@namedef{scr@v@3.40}{20}
\@namedef{scr@v@3.41}{21}
-\@namedef{scr@v@last}{21}
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+\@namedef{scr@v@3.42}{21}
+\@namedef{scr@v@3.43}{3430}
+\@namedef{scr@v@last}{3430}
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: init)
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: option)
\newif\if@scr@emulatestandardclasses
\let\scr@emulatestandardclassestrue\relax
@@ -376,7 +380,7 @@
old KOMA-Script release. However, in that case you\MessageBreak
could also need old releases of other packages and\MessageBreak
even of the LaTeX kernel.\MessageBreak
- You should also note, that the KOMA-Script developers\MessageBreak
+ Please also note, that the KOMA-Script developers\MessageBreak
refuse support for documents using `version=#1'.\MessageBreak
We recommend to eliminate all deprecated options\MessageBreak
and commands. We also recommend to not use option\MessageBreak
@@ -413,7 +417,7 @@
\newcommand*{\scr@v@is@eq}[1]{%
\scr@compatibility=\@nameuse{scr@v@#1}
}
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: option)
\KOMA@key{draft}[true]{%
\KOMA@set@ifkey{draft}{@tempswa}{#1}%
@@ -465,7 +469,7 @@
\KOMA@kav@add{\KOMAClassFileName}{overfullrule}{false}
\DeclareOption{leqno}{\input{leqno.clo}}
\DeclareOption{fleqn}{\input{fleqn.clo}}
-%%% From File: $Id: scrkernel-language.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-language.dtx 4107 2024-04-10 17:24:53Z kohm $
%%% (run: option)
%%% From File: $Id: scrkernel-fonts.dtx 4034 2023-04-20 08:03:46Z kohm $
%%% (run: option)
@@ -624,7 +628,7 @@
{sfdefaults}{\if@sfdefaults true\else false\fi}%
\fi
}
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: options)
\KOMA@key{twoside}[true]{%
\if@atdocument\else\PassOptionsToPackage{twoside=#1}{typearea}\fi%
@@ -953,7 +957,7 @@
{notitlepage}{titlepage=false}
%%% From File: $Id: scrkernel-tocstyle.dtx 4060 2023-06-20 08:59:01Z kohm $
%%% (run: option)
-%%% From File: $Id: scrkernel-sections.dtx 4069 2023-06-29 08:55:54Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: option)
\KOMA@key{open}{%
\KOMA@set@ncmdkey{open}{@tempa}{%
@@ -1017,6 +1021,26 @@
\AtBeginDocument{%
\@ifpackageloaded{bookmark}{}{%
\if@scr@autoloadbookmarkpackage
+ \IfFileExists{bookmark.sty}{}{%
+ \ClassWarningNoLine{\KOMAClassName}{%
+ Using `bookmark' together with `hyperref' is
+ recommended,\MessageBreak
+ because of handling of possible bookmark level gaps.\MessageBreak
+ However, the package seems not to be installed and\MessageBreak
+ therefore cannot be loaded automatically.\MessageBreak
+ It is recommended to install package `bookmark'!\MessageBreak
+ However, you can avoid this warning without\MessageBreak
+ installation of package `bookmark', if you'd
+ deactivate\MessageBreak
+ automatically loading of `bookmark' using KOMA-Script\MessageBreak
+ option `bookmarkpackage=false' before
+ \string\begin{document}%
+ }%
+ \@scr@autoloadbookmarkpackagefalse
+ \KOMA@kav@replacevalue{\KOMAClassFileName}{bookmarkpackage}{false}%
+ }%
+ \fi
+ \if@scr@autoloadbookmarkpackage
\scr@ifundefinedorrelax{Hy@driver}{%
\ClassWarning{\KOMAClassName}{%
`hyperref' loaded but `\string\Hy@driver' undefined.\MessageBreak
@@ -1080,7 +1104,8 @@
\if@filesw
\ClassWarning{\KOMAClassName}{%
seems someone has broken package `auxhook'.\MessageBreak
- Usually this happens, if `auxhook' is loaded or used\MessageBreak
+ Usually this happens, if `auxhook' is loaded or
+ used\MessageBreak
implicitly or explicitly by patching
\string\document%
\scr@ifundefinedorrelax{AtEndPreamble}{}{%
@@ -1654,7 +1679,7 @@
\csname FN@mf@prepare\endcsname
\ifhmode\spacefactor\@x@sf\fi
\relax}
-%%% From File: $Id: scrkernel-listsof.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-listsof.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: option)
\newif\if@tocleft
\KOMA@key{toc}{%
@@ -2210,18 +2235,18 @@
\KOMA@DeclareDeprecatedOption{idxtotoc}{index=totoc}
%%% From File: $Id: scrkernel-listsandtabulars.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: option)
-%%% From File: $Id: scrkernel-sections.dtx 4069 2023-06-29 08:55:54Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: execoption)
\KOMAExecuteOptions{headings=openright}
\KOMAExecuteOptions{numbers=autoendperiod}
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: execoption)
\KOMAExecuteOptions{%
parskip=false,%
headings=big%
}
\KOMAProcessOptions\relax
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: body)
\AtBeginDocument{%
\begingroup
@@ -2778,13 +2803,13 @@
\@nomath\sfb}
\DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal}
-%%% From File: $Id: scrkernel-language.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-language.dtx 4107 2024-04-10 17:24:53Z kohm $
%%% (run: body)
\def\today{\ifcase\month\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or December\fi
\space\number\day, \number\year}%
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: body)
\let\@BCOR =\relax
\let\@@BCOR =\relax
@@ -3438,7 +3463,7 @@
%%% From File: $Id: scrkernel-tocstyle.dtx 4060 2023-06-20 08:59:01Z kohm $
%%% (run: class,style,default)
\CloneTOCEntryStyle{section}{default}
-%%% From File: $Id: scrkernel-sections.dtx 4069 2023-06-29 08:55:54Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: body)
\BeforeClosingMainAux{%
\if@autodot\if@filesw\immediate\write\@mainaux{%
@@ -5558,10 +5583,12 @@
\addtocontents{\@currext}{\protect\addvspace{\@chapterlistsgap}}%
}{}%
}%
- \@ifundefined{float@addtolists}{}{%
- \scr@float@addtolists@warning
- \float@addtolists{\protect\addvspace{\@chapterlistsgap}}%
- }%
+ \expandafter\ifnum \scr@v@is@lt{3.43}\relax
+ \@ifundefined{float@addtolists}{}{%
+ \scr@float@addtolists@warning
+ \float@addtolists{\protect\addvspace{\@chapterlistsgap}}%
+ }%
+ \fi
\fi
\scr@t@st@nd@w@rn@m@k@ch@pt@rh@@d{#1}%
\if@twocolumn
@@ -5822,7 +5849,6 @@
\addxcontentsline{\@currext}{chapteratlist}[{#1}]{#2}%
}{}%
}%
- \@ifundefined{float@addtolists}{}{\scr@float@addtolists@warning}%
\fi
}
\newcommand\addchap{%
@@ -6056,7 +6082,7 @@
\fi
\newcommand*{\scr@fnt@disposition}{\sectfont}
\aliaskomafont{sectioning}{disposition}
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: body)
\@addtoreset{equation}{chapter}
\renewcommand*{\theequation}{%
@@ -6125,9 +6151,9 @@
\endgroup
\edef\is@thispageodd@setlabel{%
\if@filesw
- \unexpanded{\protected@write\@auxout{\let\arabic\relax}}{%
+ \unexpanded{\protected@write\@auxout{\let\number\relax}}{%
\noexpand\string
- \noexpand\new@tpo@label{\scr@tpo}{\noexpand\arabic{page}}}%
+ \noexpand\new@tpo@label{\scr@tpo}{\noexpand\number\c@page}}%
\fi
\noexpand\def\noexpand\is@thispageodd@setlabel
{\unexpanded\expandafter{\is@thispageodd@setlabel}}%
@@ -6182,7 +6208,7 @@
\reserved@a
\ifin@\expandafter\@gobble\else\expandafter\@firstofone\fi
}{%
- \BeforePackage{#1}{%
+ \expandafter\providecommand\csname scr@class@#1@warning\endcsname{%
\ClassWarning{\KOMAClassName}{%
Usage of package `#1' together\MessageBreak
with a KOMA-Script class is not recommended.\MessageBreak
@@ -6193,6 +6219,9 @@
package `#1'%
}%
}%
+ \BeforePackage{#1}{%
+ \csname scr@class@#1@warning\endcsname
+ }%
}%
}%
\scr@package@not@recommended{emptypage}{%
@@ -6479,7 +6508,7 @@
\newcommand*{\indexpagestyle}{plain}
\pagestyle{headings}
\pagenumbering{arabic}
-%%% From File: $Id: scrlayer.dtx 4058 2023-06-16 08:32:27Z kohm $
+%%% From File: $Id: scrlayer.dtx 4118 2024-09-02 12:05:30Z kohm $
%%% (run: body)
\providecommand*{\@mkleft}{%
\IfActiveMkBoth{\markleft}{\@gobble}%
@@ -7422,7 +7451,7 @@
\endgroup
\@footnotemark
}
-%%% From File: $Id: scrkernel-listsof.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-listsof.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: body)
\g@addto@macro{\numberline@numberpostfix}{\autodot}
\usetocbasicnumberline[%
@@ -7531,17 +7560,34 @@
}
\newcommand*{\scr@float@listhead@warning}{%
\ClassWarning{\KOMAClassName}{%
- \string\float@listhead\space detected!\MessageBreak
+ Usage of \string\float@listhead\space detected!\MessageBreak
+ This could be, because you are using\MessageBreak
+ \@ifpackageloaded{floatrow}{%
+ \@ifpackageloaded{floatrowbytocbasic}{%
+ a package that does not support the KOMA-Script\MessageBreak
+ interface of KOMA-Script package `tocbasic`.\MessageBreak
+ }{%
+ package `floatrow` without `floatrowbytocbasic`.\MessageBreak
+ }%
+ }{%
+ \@ifpackageloaded{float}{%
+ \@ifpackageloaded{floatbytocbasic}{%
+ a package that does not support the KOMA-Script\MessageBreak
+ interface of KOMA-Script package `tocbasic`.\MessageBreak
+ }{%
+ package `float` without `floatbytocbasic`.\MessageBreak
+ }%
+ }{%
+ a package that does not support the KOMA-Script\MessageBreak
+ interface of KOMA-Script package `tocbasic`.\MessageBreak
+ }%
+ }%
Implementation of \string\float@listhead\space became\MessageBreak
deprecated in KOMA-Script v3.01 2008/11/14 and\MessageBreak
has been replaced by several more flexible\MessageBreak
features of package `tocbasic`.\MessageBreak
- Maybe implementation of \string\float@listhead\space will\MessageBreak
- be removed from KOMA-Script soon.\MessageBreak
- Loading of package `scrhack' may help to\MessageBreak
- avoid this warning, if you are using a\MessageBreak
- a package that still implements the\MessageBreak
- deprecated \string\float@listhead\space interface%
+ Implementation of \string\float@listhead\space will\MessageBreak
+ be removed from KOMA-Script soon%
}%
}
\newcommand*{\scr@float@addtolists@warning}{%
@@ -7555,10 +7601,9 @@
\string\float@addtolist\space interface has been\MessageBreak
restricted to only some of the KOMA-Script\MessageBreak
features and been removed from others.\MessageBreak
- Loading of package `scrhack' may help to\MessageBreak
- avoid this warning, if you are using a\MessageBreak
- a package that still implements the\MessageBreak
- deprecated \string\float@addtolist\space interface%
+ Since Version 3.43 support for deprecated\MessageBreak
+ \string\float@addtolist\space interface has been\MessageBreak
+ removed from all KOMA-Script classes%
}%
\global\let\scr@float@addtolists@warning\relax
}
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrdate.sty b/Master/texmf-dist/tex/latex/koma-script/scrdate.sty
index 64eeb1a8cf4..81d927bdf6b 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrdate.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scrdate.sty
@@ -43,46 +43,48 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\providecommand*{\@CheckKOMAScriptVersion}{%
+ \begingroup
+ \ExplSyntaxOff
+ \@@CheckKOMAScriptVersion
+}
+\providecommand*{\@@CheckKOMAScriptVersion}[1]{%
+ \@ifundefined{KOMAScriptVersion}{%
\gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ }{%
\def\@tempa{#1}%
\ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
+ \GenericWarning{\space\@spaces\@spaces\@spaces\@spaces}{%
+ Version warning:
+ \noexpand\KOMAScriptVersion is
+ `\csname KOMAScriptVersion\endcsname',\MessageBreak
but `#1' was expected!\MessageBreak
You should not use classes, packages or files
from\MessageBreak
- different KOMA-Script versions%
+ different KOMA-Script versions\@gobble
}%
\fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+ }%
+ \endgroup
+}
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
\providecommand*{\scr@pkgextension}{\@pkgextension}
\AtBeginDocument{%
\let\scr@pkgextension\@pkgextension
}
-%%% From File: $Id: scrtime.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrtime.dtx 4099 2024-02-01 09:36:51Z kohm $
\NeedsTeXFormat{LaTeX2e}[1995/06/01]
\ProvidesPackage{scrdate}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
package
(day of the week)%
]
-%%% From File: $Id: scrkernel-basics.dtx 4051 2023-04-26 16:01:28Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 4074 2023-07-14 15:56:59Z kohm $
%%% (run: load)
\RequirePackage{scrkbase}[\KOMAScriptVersion]
-%%% From File: $Id: scrtime.dtx 4032 2023-04-17 09:45:11Z kohm $
-%%% From File: $Id: scrtime.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrtime.dtx 4099 2024-02-01 09:36:51Z kohm $
+%%% From File: $Id: scrtime.dtx 4099 2024-02-01 09:36:51Z kohm $
\newcommand*{\CenturyPart}[1]{\XdivY{#1}{100}}
\newcommand*{\DecadePart}[1]{\XmodY{#1}{100}}
\newcommand*{\@GaussYear}[3]{%
@@ -244,10 +246,10 @@
{\v{S}tvrtok}{Piatok}{Sobota}{Nede\v{l}a}
\let\@dayname\dayname@english
\InputIfFileExists{scrdate.cfg}
- {\typeout{*************************************^^J%
- * Local config file scrdate.cfg used^^J%
- *************************************}}
- {}
+ {%
+ \@ifundefined{PackageNote}{\PackageInfo}{\PackageNote}%
+ {scrdate}{Local configuration file scrdate.cfg loaded}%
+ }{}
%%% From File: $Id: scrlogo.dtx 4032 2023-04-17 09:45:11Z kohm $
\RequirePackage{scrlogo}
\endinput
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrdoc.cls b/Master/texmf-dist/tex/latex/koma-script/scrdoc.cls
deleted file mode 100644
index c80ada60783..00000000000
--- a/Master/texmf-dist/tex/latex/koma-script/scrdoc.cls
+++ /dev/null
@@ -1,354 +0,0 @@
-% ======================================================================
-% scrdoc.cls
-% Copyright (c) Markus Kohm, 2002-2022
-%
-% This file is part of the LaTeX2e KOMA-Script bundle.
-%
-% This work may be distributed and/or modified under the conditions of
-% the LaTeX Project Public License, version 1.3c of the license.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3c or later is part of all distributions of LaTeX
-% version 2005/12/01 or later and of this work.
-%
-% This work has the LPPL maintenance status "author-maintained".
-%
-% The Current Maintainer and author of this work is Markus Kohm.
-%
-% This work consists of all files listed in MANIFEST.md.
-% ======================================================================
-% Note: This class was made to shrink size of dtx files.
-% Do not use this class for anything because it may change
-% incompatible from distribution to distribution
-% ======================================================================
-% $Id: scrdoc.cls 3900 2022-06-24 08:00:42Z kohm $
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesClass{scrdoc}[%
- 2022/06/24 v0.1j KOMA-Script source documentation class (deprecated)]
-
-\ClassWarningNoLine{scrdoc}{%
- This class is depreacted since KOMA-Script 3.36!\MessageBreak
- The internal KOMA-Script source documentation class\MessageBreak
- scrdoc is not used any longer for the implementation\MessageBreak
- documentation of KOMA-Script.\MessageBreak
- It is also not compatible with version 3 of the\MessageBreak
- doc package and currently only a workaround is used to\MessageBreak
- force using doc version 2 and to ignore ltxdoc.cfg.\MessageBreak
- You should replace this class urgently, because it will\MessageBreak
- be removed from KOMA-Script soon%
-}
-
-% scrdoc is incompatible with doc v3. Several changes would be needed
-% to improve this. However, currently a kind of emergency workaround can be
-% used.
-\PassOptionsToClass{nocfg,doc2}{scrdoc}
-
-% Replace article class by scrartcl class.
-\newcommand*{\sd@saved@LoadClass}{}
-\let\sd@saved@LoadClass=\LoadClass
-\renewcommand*{\LoadClass}[2][]{%
- \begingroup
- \edef\@tempc{#2}\def\@tempb{article}%
- \ifx\@tempc\@tempb
- \let\LoadClass\sd@saved@LoadClass
- \def\@tempc{scrartcl}%
- \fi
- \edef\@tempc{%
- \noexpand\endgroup\noexpand\sd@saved@LoadClass[{#1}]{\@tempc}}%
- \@tempc
-}
-\newcommand*{\sd@saved@PassOptionsToClass}{}
-\let\sd@saved@PassOptionsToClass=\PassOptionsToClass
-\renewcommand*{\PassOptionsToClass}[2]{%
- \begingroup
- \edef\@tempc{#2}\def\@tempb{article}%
- \ifx\@tempc\@tempb
- \def\@tempc{scrartcl}%
- \fi
- \edef\@tempc{%
- \noexpand\endgroup\noexpand\sd@saved@PassOptionsToClass{#1}{%
- \@tempc}}%
- \@tempc
-}
-\LoadClassWithOptions{ltxdoc}[2022/06/14]
-\@ifundefined{cs}{\DeclareRobustCommand\cs[1]{\texttt{\bslash #1}}}{}
-
-% Use two columns at index
-\setcounter{IndexColumns}{2}
-
-% If \EnableCrossrefs is used, we don't want following macros to be
-% indexed:
-
-\DoNotIndex{\.,\\,\ ,\@Alph,\@M}
-\DoNotIndex{\@abstrtfalse,\@abstrttrue,\@addtoreset,\@afterheading}
-\DoNotIndex{\@afterindentfalse,\@alph,\@arabic}
-\DoNotIndex{\@beginparpenalty}
-\DoNotIndex{\@car,\@cdr,\@centercr}
-\DoNotIndex{\@dblfloat,\@dotsep}
-\DoNotIndex{\@dottedtocline,\@empty,\@endparpenalty}
-\DoNotIndex{\@float,\@fontswitch}
-\DoNotIndex{\@gobbletwo}
-\DoNotIndex{\@hangfrom,\@highpenalty}
-\DoNotIndex{\@ifnextchar,\@ifundefined,\@itempenalty}
-\DoNotIndex{\@latex@warning}
-\DoNotIndex{\@m,\@medpenalty,\@minus,\@mkboth,\@mparswitchfalse}
-\DoNotIndex{\@mparswitchtrue}
-\DoNotIndex{\@ne,\@nil,\@nobreakfalse,\@nobreaktrue,\@nomath}
-\DoNotIndex{\@plus}
-\DoNotIndex{\@tempa,\@tempcnta,\@tempdima,\@tempskipka}
-\DoNotIndex{\@tempswafalse,\@tempswatrue}
-\DoNotIndex{\@tempb,\@tempcntb,\@tempdimb,\@tempskipkb}
-\DoNotIndex{\@tempswbfalse,\@tempswbtrue}
-\DoNotIndex{\@tempc,\@tempcntc,\@tempdimc,\@tempskipkc}
-\DoNotIndex{\@tocrmarg,\@topnewpage,\@topnum,\@twocolumnfalse}
-\DoNotIndex{\@twocolumntrue,\@twosidefalse,\@twosidetrue}
-\DoNotIndex{\@whiledim,\@whilenum}
-\DoNotIndex{\addcontentsline,\addpenalty,\addtocontents,\addtolength}
-\DoNotIndex{\addvspace,\advance}
-\DoNotIndex{\begin,\begingroup,\bfseries,\box,\bullet}
-\DoNotIndex{\c@figure,\c@page,\c@secnumdepth,\c@table,\c@tocdepth}
-\DoNotIndex{\cdot,\centering,\changes,\cleardoublepage,\clearpage}
-\DoNotIndex{\cmd,\col@number,\CurrentOption,\CodelineIndex,\cs}
-\DoNotIndex{\day,\dblfloatpagefraction,\dbltopfraction}
-\DoNotIndex{\DeclareOldFontCommand,\DeclareOption,\def,\DisableCrossrefs}
-\DoNotIndex{\divide,\DoNotIndex}
-\DoNotIndex{\ifdim,\else,\fi,\empty,\em,\EnableCrossrefs,\end}
-\DoNotIndex{\end@dblfloat}
-\DoNotIndex{\end@float,\endgroup,\endlist,\endquotation,\endtitlepage}
-\DoNotIndex{\everypar,\ExecuteOptions,\expandafter}
-\DoNotIndex{\fboxrule,\fboxsep}
-\DoNotIndex{\gdef,\global}
-\DoNotIndex{\hangindent,\hbox,\hfil,\hrule,\hsize,\hskip,\hspace,\hss}
-\DoNotIndex{\if@tempswa,\ifcase,\or,\fi,\fi}
-\DoNotIndex{\ifnum,\ifodd,\ifx,\fi,\fi,\fi}
-\DoNotIndex{\include,\input,\InputIfFileExists,\item,\itshape}
-\DoNotIndex{\kern,\kernel@ifnextchar}
-\DoNotIndex{\leavevmode,\leftmark,\leftskip,\let,\lineskip}
-\DoNotIndex{\list,\long}
-\DoNotIndex{\m@ne,\m@th,\marginpar,\markboth,\markright,\mathbf,\mathcal}
-\DoNotIndex{\mathit,\mathnormal,\mathrm,\mathsf,\mathtt,\MessageBreak}
-\DoNotIndex{\month}
-\DoNotIndex{\newblock,\newcommand,\newcount,\newcounter,\newdimen}
-\DoNotIndex{\newenvironment,\newlength,\newpage,\nobreak,\noindent}
-\DoNotIndex{\normalfont,\normallineskip,\normalsize,\null,\number}
-\DoNotIndex{\numberline,\normalcolor}
-\DoNotIndex{\OldMakeindex,\OnlyDescription,\overfullrule}
-\DoNotIndex{\p@,\PackageError,\PackageInfo,\PackageWarningNoLine}
-\DoNotIndex{\pagenumbering,\pagestyle,\par,\paragraph,\parbox}
-\DoNotIndex{\PassOptionsToPackage,\pcal,\penalty,\pmit,\PrintChanges}
-\DoNotIndex{\PrintIndex,\ProcessOptions,\protect,\providecommand}
-\DoNotIndex{\ProvidesClass}
-\DoNotIndex{\raggedbottom,\raggedleft,\raggedright,\refstepcounter,\relax}
-\DoNotIndex{\renewcommand,\RequirePackage,\reset@font}
-\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rmfamily,\@Roman,\@roman}
-\DoNotIndex{\scshape,\secdef,\setbox,\setcounter,\setlength}
-\DoNotIndex{\settowidth,\sfcode,\sffamily,\skip,\sloppy,\slshape,\space}
-\DoNotIndex{\string}
-\DoNotIndex{\the,\thispagestyle,\triangleright,\ttfamily}
-\DoNotIndex{\twocolumn,\typeout}
-\DoNotIndex{\undefined,\usecounter}
-\DoNotIndex{\vfil,\vfill,\vspace}
-\DoNotIndex{\wd,\xdef,\year,\z@}
-% More may be set by the source files.
-
-% Redefine some defaults to handle not only macros and environments
-% but also options, Length, Counters, KOMAvars. Also define some new.
-\def\macro{\begingroup
- \catcode`\\12
- \MakePrivateLetters \m@cro@{0}}
-\def\environment{\begingroup
- \catcode`\\12
- \MakePrivateLetters \m@cro@{1}}
-\def\option{\begingroup
- \catcode`\\12
- \MakePrivateLetters \m@cro@{2}}
-\def\Length{\begingroup
- \catcode`\\12
- \MakePrivateLetters \m@cro@{3}}
-\def\Counter{\begingroup
- \catcode`\\12
- \MakePrivateLetters \m@cro@{4}}
-\def\KOMAvar{\begingroup
- \catcode`\\12
- \MakePrivateLetters \m@cro@{5}}
-\def\KOMAfont{\begingroup
- \catcode`\\12
- \MakePrivateLetters \m@cro@{6}}
-\long\def\m@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist
- \edef\saved@macroname{\string#2}%
- \ifcase #1
- \edef\saved@indexname{\expandafter\@gobble\string#2}%
- \else
- \let\saved@indexname\saved@macroname
- \fi
- \def\makelabel##1{\llap{##1}}%
- \if@inlabel
- \let\@tempa\@empty \count@\macro@cnt
- \loop \ifnum\count@>\z@
- \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne
- \repeat
- \edef\makelabel##1{\llap{\vtop to\baselineskip
- {\@tempa\hbox{##1}\vss}}}%
- \advance \macro@cnt \@ne
- \else \macro@cnt\@ne \fi
- \edef\@tempa{\noexpand\item[%
- \ifcase #1
- \noexpand\PrintMacroName
- \or
- \noexpand\PrintEnvName
- \or
- \noexpand\PrintOptionName
- \or
- \noexpand\PrintLengthName
- \or
- \noexpand\PrintCounterName
- \or
- \noexpand\PrintKOMAvarName
- \or
- \noexpand\PrintKOMAfontName
- \fi
- {\string#2}]}%
- \@tempa
- \global\advance\c@CodelineNo\@ne
- \ifcase #1
- \SpecialMainIndex{#2}\nobreak
- \DoNotIndex{#2}%
- \or
- \SpecialMainEnvIndex{#2}\nobreak
- \or
- \SpecialMainOptionIndex{#2}\nobreak
- \or
- \SpecialMainLengthIndex{#2}\nobreak
- \DoNotIndex{#2}%
- \or
- \SpecialMainCounterIndex{#2}\nobreak
- \or
- \SpecialMainKOMAvarIndex{#2}\nobreak
- \or
- \SpecialMainKOMAfontIndex{#2}\nobreak
- \fi
- \global\advance\c@CodelineNo\m@ne
- \ignorespaces}
-\let\endoption\endmacro
-\let\endLength\endmacro
-\let\endCounter\endmacro
-\let\endKOMAvar\endmacro
-
-% Some new command
-\newcommand*{\File}[1]{\texttt{\mbox{#1}}}
-\newcommand*{\Class}{\File}
-\newcommand*{\Package}{\File}
-\newcommand*{\Macro}{\cs}
-\newcommand*{\Option}{\File}
-
-% The new names we need
-\providecommand*{\EnvName}{Umgebung}% This is german
-\providecommand*{\EnvsName}{Umgebungen}% This is german
-\providecommand*{\OptionName}{Option}% This is german
-\providecommand*{\OptionsName}{Optionen}% This is german
-\providecommand*{\PrintOptionName}[1]{\strut \MacroFont #1\ }
-\providecommand*{\PrintDescribeOption}[1]{\strut \MacroFont #1\ }
-\providecommand*{\LengthName}{L\"ange}% This is german
-\providecommand*{\LengthsName}{L\"angen}% This is german
-\providecommand*{\PrintLengthName}[1]{\strut \MacroFont \string #1\ }
-\providecommand*{\PrintDescribeLength}[1]{\strut \MacroFont \string #1\ }
-\providecommand*{\CounterName}{Z\"ahler}% This is german
-\providecommand*{\CountersName}{Z\"ahler}% This is german
-\providecommand*{\PrintCounterName}[1]{\strut \MacroFont #1\ }
-\providecommand*{\PrintDescribeCounter}[1]{\strut \MacroFont #1\ }
-\providecommand*{\KOMAvarName}{Variable}% This is german
-\providecommand*{\KOMAvarsName}{Variablen}% This is german
-\providecommand*{\PrintKOMAvarName}[1]{\strut \MacroFont #1\ }
-\providecommand*{\PrintDescribeKOMAvar}[1]{\strut \MacroFont #1\ }
-\providecommand*{\KOMAfontName}{Element mit Schrift}% This is german
-\providecommand*{\KOMAfontsName}{Elemente mit Schrift}% This is german
-\providecommand*{\PrintKOMAfontName}[1]{\strut \MacroFont #1\ }
-\providecommand*{\PrintDescribeKOMAfont}[1]{\strut \MacroFont #1\ }
-
-% Defining new main index commands
-\newcommand*{\SpecialMainIndex@Type}[3]{%
- \@bsphack\special@index{%
- #1\actualchar
- {\string\ttfamily\space#1}
- (\string #2)%
- \encapchar main}%
- \special@index{%
- #3:\levelchar{%
- \string\ttfamily\space#1}\encapchar
- main}\@esphack}
-\renewcommand*{\SpecialMainEnvIndex}[1]{%
- \SpecialMainIndex@Type{#1}{\EnvName}{\EnvsName}}
-\newcommand*{\SpecialMainOptionIndex}[1]{%
- \SpecialMainIndex@Type{#1}{\OptionName}{\OptionsName}}
-\newcommand*{\SpecialMainLengthIndex}[1]{%
- \@bsphack\SpecialIndex@{#1}{(\string\LengthName )\encapchar main}%
- \@esphack}
-\newcommand*{\SpecialMainCounterIndex}[1]{%
- \SpecialMainIndex@Type{#1}{\CounterName}{\CountersName}}
-\newcommand*{\SpecialMainKOMAvarIndex}[1]{%
- \SpecialMainIndex@Type{#1}{\KOMAvarName}{\KOMAvarsName}}
-\newcommand*{\SpecialMainKOMAfontIndex}[1]{%
- \SpecialMainIndex@Type{#1}{\KOMAfontName}{\KOMAfontsName}}
-
-% Defining new usage index commands
-\newcommand*{\SpecialIndex@Type}[3]{%
- \@bsphack
- \index{#1\actualchar{\protect\ttfamily#1}
- (#2)\encapchar usage}%
- \index{#3:\levelchar{\protect\ttfamily#1}\encapchar
- usage}\@esphack}
-\renewcommand{\SpecialEnvIndex}[1]{%
- \SpecialIndex@Type{#1}{\EnvName}{\EnvsName}}
-\newcommand*{\SpecialOptionIndex}[1]{%
- \SpecialMainIndex@Type{#1}{\OptionName}{\OptionsName}}
-\newcommand*{\SpecialLengthIndex}[1]{\@bsphack%
- {\let\special@index\index
- \SpecialIndex@{#1}{(\string\LengthName )\encapchar usage}}%
- \@esphack}
-\newcommand*{\SpecialCounterIndex}[1]{%
- \SpecialMainIndex@Type{#1}{\CounterName}{\CountersName}}
-\newcommand*{\SpecialKOMAvarIndex}[1]{%
- \SpecialMainIndex@Type{#1}{\KOMAvarName}{\KOMAvarsName}}
-
-% Define new describe commands
-\newcommand*{\newDescribe}[1]{%
- \expandafter\newcommand\expandafter*\csname Describe#1\endcsname{%
- \leavevmode\@bsphack\begingroup\MakePrivateLetters
- \csname Describe@#1\endcsname}%
- \expandafter\newcommand\expandafter*\csname Describe@#1\endcsname[1]{%
- \endgroup
- \marginpar{\raggedleft\csname PrintDescribe#1\endcsname{##1}}%
- \csname Special#1Index\endcsname{##1}\@esphack\ignorespaces}%
-}
-\newDescribe{Option}
-
-% We use left margin very much, so shift everything to the right
-\if@twoside
-\else
-\addtolength{\oddsidemargin}{1in}
-\setlength{\oddsidemargin}{1.5\oddsidemargin}
-\addtolength{\oddsidemargin}{-1in}
-\fi
-
-% We need some logos:
-\providecommand*{\eTeX}{$\m@th\varepsilon$-\TeX}
-
-% Terms for other languages:
-\AtBeginDocument{%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname addto\endcsname\relax
- \ClassWarning{scrdoc}{Package babel not loaded}%
- \else
- \addto\captionsenglish{%
- \def\partname{File}%
- }%
- \addto\captionsngerman{%
- \def\partname{Datei}%
- }%
- \ClassInfo{scrdoc}{Select language \languagename}%
- \expandafter\selectlanguage\expandafter{\languagename}%
- \fi
-}
-
-\endinput
-% end of ``scrdoc.cls''
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrextend.sty b/Master/texmf-dist/tex/latex/koma-script/scrextend.sty
index 7a8a9a9d391..9c6d10cc9ba 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrextend.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scrextend.sty
@@ -78,30 +78,32 @@
}%
\expandafter\endinput
\fi
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\providecommand*{\@CheckKOMAScriptVersion}{%
+ \begingroup
+ \ExplSyntaxOff
+ \@@CheckKOMAScriptVersion
+}
+\providecommand*{\@@CheckKOMAScriptVersion}[1]{%
+ \@ifundefined{KOMAScriptVersion}{%
\gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ }{%
\def\@tempa{#1}%
\ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
+ \GenericWarning{\space\@spaces\@spaces\@spaces\@spaces}{%
+ Version warning:
+ \noexpand\KOMAScriptVersion is
+ `\csname KOMAScriptVersion\endcsname',\MessageBreak
but `#1' was expected!\MessageBreak
You should not use classes, packages or files
from\MessageBreak
- different KOMA-Script versions%
+ different KOMA-Script versions\@gobble
}%
\fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+ }%
+ \endgroup
+}
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
\providecommand*{\scr@pkgextension}{\@pkgextension}
\AtBeginDocument{%
\let\scr@pkgextension\@pkgextension
@@ -109,7 +111,7 @@
%%% From File: $Id: scrextend.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: prepare)
\ProvidesPackage{scrextend}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
package (extend other classes with features of KOMA-Script classes)%
]
\newcommand*{\scr@ext@activate}[1]{%
@@ -133,13 +135,13 @@
\expandafter\g@addto@macro\csname scr@ext@activate@#1\endcsname
}%
}
-%%% From File: $Id: scrkernel-basics.dtx 4051 2023-04-26 16:01:28Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 4074 2023-07-14 15:56:59Z kohm $
%%% (run: load)
\RequirePackage{scrkbase}[\KOMAScriptVersion]
-%%% From File: $Id: scrkernel-sections.dtx 4069 2023-06-29 08:55:54Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: prepare)
\newcommand*{\sectfont}{\normalcolor\maybesffamily\bfseries}
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: init)
\providecommand*
{\scr@compatibility}{\scr@v@last}
@@ -228,7 +230,9 @@
\@namedef{scr@v@3.39}{20}
\@namedef{scr@v@3.40}{20}
\@namedef{scr@v@3.41}{21}
-\@namedef{scr@v@last}{21}
+\@namedef{scr@v@3.42}{21}
+\@namedef{scr@v@3.43}{3430}
+\@namedef{scr@v@last}{3430}
%%% From File: $Id: scrextend.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: option)
\KOMA@key{extendedfeature}{%
@@ -253,7 +257,7 @@
\def\FamilyKeyState{Option `extendedfeature' too late}%
}%
}
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: option)
\KOMA@key{version}[last]{%
\scr@ifundefinedorrelax{scr@v@#1}{%
@@ -291,7 +295,7 @@
old KOMA-Script release. However, in that case you\MessageBreak
could also need old releases of other packages and\MessageBreak
even of the LaTeX kernel.\MessageBreak
- You should also note, that the KOMA-Script developers\MessageBreak
+ Please also note, that the KOMA-Script developers\MessageBreak
refuse support for documents using `version=#1'.\MessageBreak
We recommend to eliminate all deprecated options\MessageBreak
and commands. We also recommend to not use option\MessageBreak
@@ -329,7 +333,7 @@
\newcommand*{\scr@v@is@eq}[1]{%
\scr@compatibility=\@nameuse{scr@v@#1}
}
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: option)
\KOMA@key{draft}[true]{%
\KOMA@set@ifkey{draft}{@tempswa}{#1}%
@@ -536,7 +540,7 @@
\KOMA@DeclareStandardOption%
[scrextend]%
{notitlepage}{titlepage=false}
-%%% From File: $Id: scrkernel-sections.dtx 4069 2023-06-29 08:55:54Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: option)
%%% From File: $Id: scrkernel-pagestyles.dtx 4058 2023-06-16 08:32:27Z kohm $
%%% (run: option)
@@ -697,12 +701,12 @@
\relax}
%%% From File: $Id: scrkernel-listsandtabulars.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: option)
-%%% From File: $Id: scrkernel-sections.dtx 4069 2023-06-29 08:55:54Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: execoption)
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: execoption)
\KOMAProcessOptions\relax
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: body)
\AtBeginDocument{%
\begingroup
@@ -1517,11 +1521,11 @@
\newcommand*{\scr@fnt@title}{\titlefont}%
\newcommand*{\subject@font}{\normalfont\normalcolor\bfseries\Large}%
\newcommand*{\scr@fnt@subject}{\subject@font}%
-%%% From File: $Id: scrkernel-sections.dtx 4069 2023-06-29 08:55:54Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: body)
\newcommand*{\scr@fnt@disposition}{\sectfont}
\aliaskomafont{sectioning}{disposition}
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: body)
\scr@ifundefinedorrelax{if@restonecol}{%
\expandafter\newif\csname if@restonecol\endcsname
@@ -1580,9 +1584,9 @@
\endgroup
\edef\is@thispageodd@setlabel{%
\if@filesw
- \unexpanded{\protected@write\@auxout{\let\arabic\relax}}{%
+ \unexpanded{\protected@write\@auxout{\let\number\relax}}{%
\noexpand\string
- \noexpand\new@tpo@label{\scr@tpo}{\noexpand\arabic{page}}}%
+ \noexpand\new@tpo@label{\scr@tpo}{\noexpand\number\c@page}}%
\fi
\noexpand\def\noexpand\is@thispageodd@setlabel
{\unexpanded\expandafter{\is@thispageodd@setlabel}}%
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrfontsizes.sty b/Master/texmf-dist/tex/latex/koma-script/scrfontsizes.sty
index 7de61ad9163..0031cfe6557 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrfontsizes.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scrfontsizes.sty
@@ -42,30 +42,32 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\providecommand*{\@CheckKOMAScriptVersion}{%
+ \begingroup
+ \ExplSyntaxOff
+ \@@CheckKOMAScriptVersion
+}
+\providecommand*{\@@CheckKOMAScriptVersion}[1]{%
+ \@ifundefined{KOMAScriptVersion}{%
\gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ }{%
\def\@tempa{#1}%
\ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
+ \GenericWarning{\space\@spaces\@spaces\@spaces\@spaces}{%
+ Version warning:
+ \noexpand\KOMAScriptVersion is
+ `\csname KOMAScriptVersion\endcsname',\MessageBreak
but `#1' was expected!\MessageBreak
You should not use classes, packages or files
from\MessageBreak
- different KOMA-Script versions%
+ different KOMA-Script versions\@gobble
}%
\fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+ }%
+ \endgroup
+}
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
\providecommand*{\scr@pkgextension}{\@pkgextension}
\AtBeginDocument{%
\let\scr@pkgextension\@pkgextension
@@ -73,7 +75,7 @@
%%% From File: $Id: scrkernel-fonts.dtx 4034 2023-04-20 08:03:46Z kohm $
%%% (run: identify)
\ProvidesPackage{scrfontsizes}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
package (font size file generator)]
%%% From File: $Id: scrkernel-fonts.dtx 4034 2023-04-20 08:03:46Z kohm $
%%% (run: option)
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrhack.sty b/Master/texmf-dist/tex/latex/koma-script/scrhack.sty
deleted file mode 100644
index b0d4b05ed65..00000000000
--- a/Master/texmf-dist/tex/latex/koma-script/scrhack.sty
+++ /dev/null
@@ -1,218 +0,0 @@
-%%
-%% This is file `scrhack.sty',
-%% generated with the docstrip utility, extended by scrdocstrip.
-%%
-%% The original source files were:
-%%
-%% scrkernel-version.dtx (with options: `package,scrhack')
-%% scrhack.dtx (with options: `package,identify')
-%% scrkernel-basics.dtx (with options: `load')
-%% scrhack.dtx (with options: `package,option')
-%% scrhack.dtx (with options: `package,body')
-%% scrlogo.dtx (with options: `logo')
-%%
-%% Copyright (c) 2008-2022 Markus Kohm [komascript at gmx info]
-%%
-%% This file was generated from file(s) of the KOMA-Script bundle.
-%% ---------------------------------------------------------------
-%%
-%% It may be distributed under the conditions of the
-%% LaTeX Project Public License in the version distributed together
-%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'.
-%%
-%% This file may only be distributed together with a copy of the
-%% KOMA-Script bundle. You may however distribute the
-%% KOMA-Script bundle without all such generated files. See also
-%% `lppl.txt' or `lppl-de.txt' for additional information.
-%%
-%% The list of files belonging to KOMA-Script distribution is given in
-%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for
-%% additional information.
-%%
-%% If this file is a beta version, you may not be allowed to distribute
-%% it. Look at the comments below to see if this is the case.
-%%
-%% English and German manuals are part of KOMA-Script bundle.
-%% ----------------------------------------------------------
-%%
-%% See `README'.
-%%
-%% The KOMA-Script bundle (but maybe not this file) was based upon the
-%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e
-%% standard classes created by The LaTeX3 Project 1994-1996. You can
-%% find a complete unmodified copy of LaTeX2e at
-%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
-%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
-\providecommand*{\scr@pkgextension}{\@pkgextension}
-\AtBeginDocument{%
- \let\scr@pkgextension\@pkgextension
-}
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
-%%% using: package,identify
-\ProvidesPackage{scrhack}[%
- 2023/07/07 v3.41 KOMA-Script
- package (hacking other packages)%
-]
-%%% From File: $Id: scrkernel-basics.dtx 4051 2023-04-26 16:01:28Z kohm $
-%%% (run: load)
-\RequirePackage{scrkbase}[\KOMAScriptVersion]
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
-%%% using: package,option
-\KOMA@ifkey{hyperref}{@scrhack@hyperref}%
-\KOMAExecuteOptions{hyperref=true}%
-\KOMA@ifkey{floatrow}{@scrhack@floatrow}
-\KOMAExecuteOptions{floatrow=true}
-\KOMA@ifkey{float}{@scrhack@float}%
-\KOMAExecuteOptions{float=true}%
-\KOMA@ifkey{listings}{@scrhack@listings}
-\KOMAExecuteOptions{listings=true}
-\RequirePackage{xpatch}%
-\KOMA@ifkey{nomencl}{@scrhack@nomencl}
-\KOMAExecuteOptions{nomencl=true}
-\KOMA@ifkey{setspace}{@scrhack@setspace}
-\KOMAExecuteOptions{setspace=true}
-\RequirePackage{xpatch}%
-\KOMA@ifkey{lscape}{@scrhack@lscape}%
-\KOMAExecuteOptions{lscape=true}%
-\KOMA@ifkey{standardsections}{@scrhack@standardsections}
-\KOMAExecuteOptions{standardsections=false}
-\KOMAProcessOptions\relax
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
-%%% using: package,body
-\newcommand{\scr@ifexpected}[2]{%
- \begingroup
- \let\@tempa#1
- #2
- \ifx\@tempa#1
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- \endgroup
-}
-\newcommand*{\scr@hack@load}[2]{%
- \expandafter\ifx\csname ver@#2.#1\endcsname\relax
- \expandafter\@secondoftwo
- \else
- \expandafter\ifx\csname ver@#2.hak\endcsname\relax
- \expandafter\expandafter\expandafter\@firstoftwo
- \else
- \expandafter\expandafter\expandafter\@secondoftwo
- \fi
- \fi
- {%
- \PackageInfo{scrhack}{loading #2 hack}%
- \edef\reserved@a{%
- \noexpand\makeatletter\noexpand\input{#2.hak}%
- \noexpand\catcode`\noexpand\@\the\catcode`\@\relax
- }\reserved@a
- }{%
- \PackageInfo{scrhack}{ignorring #2 hack}%
- }%
-}
-\BeforePackage{hyperref}{%
- \scr@ifundefinedorrelax{hy@insteadofrefstepcounter}{}{%
- \PackageInfo{scrhack}{hyperref hack deactivated because of\MessageBreak
- detection of KOMA-Script class, that doesn't\MessageBreak
- need that hack,}%
- \KOMAExecuteOptions[scrhack.sty]{hyperref=false}%
- }%
-}
-\AfterPackage*{hyperref}{%
- \if@scrhack@hyperref
- \@ifpackagelater{hyperref}{2009/11/24}{%
- \PackageInfo{scrhack}{hyperref hack deactivated because of\MessageBreak
- detection of hyperref version, that doesn't\MessageBreak
- need that hack,}%
- \KOMAExecuteOptions[scrhack.sty]{hyperref=false}%
- }{%
- \AtEndOfPackage{%
- \KOMA@key[scrhack.sty]{hyperref}{%
- \PackageWarning{scrhack}{option `hyperref=#1' ignored}%
- \FamilyKeyStateProcessed
- }%
- \if@scrhack@hyperref\scr@hack@load\@pkgextension{hyperref}\fi
- }%
- }%
- \fi
-}
-\AfterPackage*{floatrow}{%
- \KOMAoptions{float=false}%
- \PackageInfo{scrhack}{option `float' deactivated}%
- \KOMA@key[scrhack.sty]{floatrow}{%
- \PackageWarning{scrhack}{option `floatrow' ignored}%
- \FamilyKeyStateProcessed
- }%
- \if@scrhack@floatrow\scr@hack@load\@pkgextension{floatrow}\fi
-}
-\AfterPackage*{float}{%
- \KOMA@key[scrhack.sty]{float}{%
- \PackageWarning{scrhack}{option `float' ignored}%
- \FamilyKeyStateProcessed
- }%
- \if@scrhack@float\scr@hack@load\@pkgextension{float}\fi
-}
-\AfterPackage*{listings}{%
- \KOMA@key[scrhack.sty]{listings}{%
- \PackageWarning{scrhack}{option `listings' ignored}%
- \FamilyKeyStateProcessed
- }%
- \if@scrhack@listings\scr@hack@load\@pkgextension{listings}\fi
-}
-\AfterPackage*{nomencl}{%
- \KOMA@key[scrhack.sty]{nomencl}{%
- \PackageWarning{scrhack}{option `nomencl' ignored}%
- \FamilyKeyStateProcessed
- }%
- \if@scrhack@nomencl\scr@hack@load\@pkgextension{nomencl}\fi
-}
-\AfterPackage*{setspace}{%
- \KOMA@key[scrhack.sty]{setspace}{%
- \PackageWarning{scrhack}{option `setspace' ignored}%
- \FamilyKeyStateProcessed
- }%
- \if@scrhack@setspace\scr@hack@load\@pkgextension{setspace}\fi
-}
-\AfterPackage*{lscape}{%
- \if@scrhack@lscape\scr@hack@load\@pkgextension{lscape}\else
- \KOMA@key[scrhack.sty]{lscape}{%
- \PackageWarning{scrhack}{option `lscape' ignored}%
- \FamilyKeyStateProcessed
- }%
- \fi
-}
-\AtEndOfPackage{%
- \if@scrhack@standardsections
- \PackageInfo{scrhack}{loading standard classes sections hack}%
- \input{standardsections.hak}%
- \fi
-}
-%%% From File: $Id: scrlogo.dtx 4032 2023-04-17 09:45:11Z kohm $
-\RequirePackage{scrlogo}
-\endinput
-%%
-%% End of file `scrhack.sty'.
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrjura.sty b/Master/texmf-dist/tex/latex/koma-script/scrjura.sty
index f09f5f8796b..95392776eb3 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrjura.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scrjura.sty
@@ -5,11 +5,7 @@
%% The original source files were:
%%
%% scrjura.dtx (with options: `package,identify')
-%% scrjura.dtx (with options: `package,init')
-%% scrjura.dtx (with options: `package,options')
-%% scrjura.dtx (with options: `package,postoptions')
%% scrjura.dtx (with options: `package,body')
-%% scrjura.dtx (with options: `package,final')
%% scrlogo.dtx (with options: `logo')
%%
%% Copyright (c) 2007-2022 Markus Kohm [komascript at gmx info]
@@ -44,1085 +40,21 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrjura.dtx 4062 2023-06-24 15:55:11Z kohm $
+%%% From File: $Id: scrjura.dtx 4106 2024-02-13 15:06:28Z kohm $
%%% (run: identify)
-\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\ProvidesPackage{scrjura}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
package
(for jurists)
]
-%%% From File: $Id: scrjura.dtx 4062 2023-06-24 15:55:11Z kohm $
-%%% (run: init)
-\@ifpackageloaded{hyperref}{%
- \PackageError{scrjura}{Package hyperref already loaded}{%
- If you want to use package scrjura with package hyperref, you have
- to\MessageBreak
- load package scrjura before package hyperref.\MessageBreak
- To solve the problem, you just should move the loading of package
- hyperref\MessageBreak
- behind the loading of package scrjura.}%
-}
-\RequirePackage{scrkbase}[2013/03/26]
-\RequirePackage{tocbasic}
-\DeclareTOCStyleEntry[%
- indent=1.5em,
- numwidth=2em,
- level=\maxdimen
-]{default}{cpar}
-%%% From File: $Id: scrjura.dtx 4062 2023-06-24 15:55:11Z kohm $
-%%% (run: options)
-\KOMA@ifkey{contract}{@documentcontract}
-\IfLTXAtLeastTF{2020/10/01}{%
- \AddToHook{begindocument/end}{%
- \RelaxFamilyKey[.scrjura.sty]{KOMA}{contract}%
- \if@documentcontract\expandafter\contract\fi
- }%
-}{%
- \g@addto@macro\document{%
- \RelaxFamilyKey[.scrjura.sty]{KOMA}{contract}%
- \if@documentcontract\expandafter\contract\fi
- }%
-}
-\KOMA@key{juratotoc}[true]{%
- \KOMA@set@ifkey{juratotoc}{@tempswa}{#1}%
- \ifx\FamilyKeyState\FamilyKeyStateProcessed
- \if@tempswa
- \DeclareTOCStyleEntry[level=2]{default}{cpar}%
- \else
- \DeclareTOCStyleEntry[level=\maxdimen]{default}{cpar}%
- \fi
- \else
- \DeclareTOCStyleEntry[level=#1]{default}{cpar}%
- \fi
- \KOMA@kav@xreplacevalue{scrjura.sty}{juratotoc}{\cpartocdepth}%
-}
-\KOMA@kav@xadd{scrjura.sty}{juratotoc}{\cpartocdepth}%
-\KOMA@key{juratocnumberwidth}{%
- \DeclareTOCStyleEntry[numwidth=#1]{default}{cpar}%
- \FamilyKeyStateProcessed
- \KOMA@kav@replacevalue{scrjura.sty}{juratocnumberwidth}{#1}%
-}
-\KOMA@kav@add{scrjura.sty}{juratocnumberwidth}{2em}
-\KOMA@key{juratocindent}{%
- \DeclareTOCStyleEntry[indent=#1]{default}{cpar}%
- \FamilyKeyStateProcessed
- \KOMA@kav@replacevalue{scrjura.sty}{juratocindent}{#1}%
-}
-\KOMA@kav@add{scrjura.sty}{juratocindent}{1.5em}%
-\KOMA@ifkey{juratitlepagebreak}{@juratitlepagebreak}
-\newif\ifparnumber
-\KOMA@key{parnumber}[true]{%
- \Ifstr{#1}{auto}{%
- \AutoPar
- \FamilyKeyStateProcessed
- \KOMA@kav@remove{scrjura.sty}{parnumber}{manual}%
- \KOMA@kav@remove{scrjura.sty}{parnumber}{auto}%
- \KOMA@kav@add{scrjura.sty}{parnumber}{auto}%
- }{%
- \Ifstr{#1}{manual}{%
- \ManualPar
- \FamilyKeyStateProcessed
- \KOMA@kav@remove{scrjura.sty}{parnumber}{manual}%
- \KOMA@kav@remove{scrjura.sty}{parnumber}{auto}%
- \KOMA@kav@add{scrjura.sty}{parnumber}{manual}%
- }{%
- \KOMA@set@ifkey{parnumber}{parnumber}{#1}%
- \KOMA@kav@replacebool{scrjura.sty}{parnumber}{parnumber}%
- }%
- }%
-}
-\KOMA@kav@add{scrjura.sty}{parnumber}{true}
-\KOMA@kav@add{scrjura.sty}{parnumber}{auto}
-\newcommand*{\Clausemark}[1]{}
-\KOMA@key{clausemark}{%
- \begingroup
- \KOMA@set@ncmdkey{clausemark}{@tempa}{%
- {false}{0},{off}{0},{no}{0},%
- {forceright}{1},%
- {forceboth}{2},%
- {right}{3},%
- {both}{4}%
- }{#1}%
- \ifx\FamilyKeyState\FamilyKeyStateProcessed
- \ifcase\number\@tempa
- \endgroup
- \let\Clausemark\@gobble
- \or
- \endgroup
- \renewcommand*{\Clausemark}[1]{%
- \markright{\csname MakeMarkcase\endcsname{##1}}}%
- \or
- \endgroup
- \renewcommand*{\Clausemark}[1]{%
- \markboth{\csname MakeMarkcase\endcsname{##1}}%
- {\csname MakeMarkcase\endcsname{##1}}}%
- \or
- \endgroup
- \renewcommand*{\Clausemark}[1]{%
- \ifx
- \@mkboth\@gobbletwo
- \else
- \markright{\csname MakeMarkcase\endcsname{##1}}%
- \fi}%
- \or
- \endgroup
- \renewcommand*{\Clausemark}[1]{%
- \@mkboth{\csname MakeMarkcase\endcsname{##1}}%
- {\csname MakeMarkcase\endcsname{##1}}}%
- \else
- \endgroup
- \fi
- \FamilyKeyStateProcessed
- \else
- \endgroup
- \FamilyKeyStateUnknownValue
- \fi
- \KOMA@kav@xreplacevalue{scrjura.sty}{clausemark}{#1}%
-}
-\KOMA@kav@add{scrjura.sty}{clausemark}{false}
-\@ifundefined{KOMA@DeclareDeprecatedOption}{}{%
- \KOMA@DeclareDeprecatedOption[scrjura]{markright}{clausemark=forceright}%
- \KOMA@DeclareDeprecatedOption[scrjura]{markboth}{clausemark=forceboth}%
-}
-\KOMA@key{paragraphmark}{%
- \PackageWarningNoLine{scrjura}{%
- You've used obsolete option `paragraphmark'.\MessageBreak
- Usage of this option is deprecated.\MessageBreak
- You should simply replace `paragraphmark'\MessageBreak
- by `clausemark'%
- }%
- \KOMAExecuteOptions[.scrjura.sty]{clausemark=#1}%
-}
-\newcommand*{\parcite@format}{0}
-\newcommand*{\sentencecite@format}{0}
-\KOMA@key{ref}{%
- \begingroup
- \KOMA@set@ncmdkey{ref}{@tempa}{%
- {parlong}{1},{longpar}{1},{ParL}{1},%
- {parshort}{2},{shortpar}{2},{ParS}{2},%
- {parnumeric}{3},{numericpar}{3},{ParN}{3},%
- {paroff}{4},{nopar}{4},%
- {sentencelong}{10},{longsentence}{10},{SentenceL}{10},%
- {sentenceshort}{20},{shortsentence}{20},{SentenceS}{20},%
- {sentencenumeric}{30},{numericsentence}{30},{SentenceN}{30},%
- {sentenceoff}{40},{nosentence}{40},%
- {long}{11},%
- {short}{22},%
- {numeric}{33},%
- {paragraphonly}{44},{onlyparagraph}{44},%
- {ParagraphOnly}{44},{OnlyParagraph}{44}%
- }{#1}%
- \ifx\FamilyKeyState\FamilyKeyStateProcessed
- \aftergroup\FamilyKeyStateProcessed
- \@tempcnta=\@tempa\relax
- \@tempcntb=\z@
- \@whilenum \@tempcnta>9 \do{%
- \advance\@tempcnta -10\relax
- \advance\@tempcntb \@ne\relax
- }%
- \ifcase \@tempcnta
- \or
- \aftergroup\def\aftergroup\parcite@format
- \aftergroup{\aftergroup0\aftergroup}%
- \or
- \aftergroup\def\aftergroup\parcite@format
- \aftergroup{\aftergroup1\aftergroup}%
- \or
- \aftergroup\def\aftergroup\parcite@format
- \aftergroup{\aftergroup2\aftergroup}%
- \or
- \aftergroup\def\aftergroup\parcite@format
- \aftergroup{\aftergroup-\aftergroup1\aftergroup}%
- \fi
- \ifcase \@tempcntb
- \or
- \aftergroup\def\aftergroup\sentencecite@format
- \aftergroup{\aftergroup0\aftergroup}%
- \or
- \aftergroup\def\aftergroup\sentencecite@format
- \aftergroup{\aftergroup1\aftergroup}%
- \or
- \aftergroup\def\aftergroup\sentencecite@format
- \aftergroup{\aftergroup2\aftergroup}%
- \or
- \aftergroup\def\aftergroup\sentencecite@format
- \aftergroup{\aftergroup-\aftergroup1\aftergroup}%
- \fi
- \else
- \aftergroup\FamilyKeyStateUnknownValue
- \fi
- \endgroup
- \ifx\FamilyKeyState\FamilyKeyStateProcessed
- \KOMA@kav@removekey{scrjura.sty}{ref}%
- \ifcase\parcite@format
- \KOMA@kav@add{scrjura.sty}{ref}{parlong}%
- \or
- \KOMA@kav@add{scrjura.sty}{ref}{parshort}%
- \or
- \KOMA@kav@add{scrjura.sty}{ref}{parnumeric}%
- \or
- \KOMA@kav@add{scrjura.sty}{ref}{paroff}%
- \fi
- \ifcase\sentencecite@format
- \KOMA@kav@add{scrjura.sty}{ref}{sentencelong}%
- \or
- \KOMA@kav@add{scrjura.sty}{ref}{sentenceshort}%
- \or
- \KOMA@kav@add{scrjura.sty}{ref}{sentencenumeric}%
- \or
- \KOMA@kav@add{scrjura.sty}{ref}{sentenceoff}%
- \fi
- \fi
-}
-\KOMA@kav@add{scrjura.sty}{ref}{parlong}%
-\KOMA@kav@add{scrjura.sty}{ref}{sentencelong}%
-\@ifundefined{KOMA@DeclareDeprecatedOption}{}{%
- \KOMA@DeclareDeprecatedOption[scrjura]{parcitename}{ref=parlong}
- \KOMA@DeclareDeprecatedOption[scrjura]{sentencecitename}{ref=sentencelong}
-}
-%%% From File: $Id: scrjura.dtx 4062 2023-06-24 15:55:11Z kohm $
-%%% (run: postoptions)
-\KOMAProcessOptions\relax
-%%% From File: $Id: scrjura.dtx 4062 2023-06-24 15:55:11Z kohm $
+%%% From File: $Id: scrjura.dtx 4106 2024-02-13 15:06:28Z kohm $
%%% (run: body)
-\providecommand*{\DeprecatedParagraph}{%
- \PackageError{scrjura}{modification of old document needed}{%
- It seem that this document was made for scrjura up to version
- 0.7a.\MessageBreak
- Since scrjura version 0.9 \string\Paragraph, \string\SubParagraph, and all
- depending\MessageBreak
- commands, options, and counters have been renamed.\MessageBreak
- You should replace the terms `Paragraph' and `paragraph` by `Clause`
- and\MessageBreak
- `clause` if they are part of the name of a scrjura feature, otherwise
- this\MessageBreak
- document may produce severall additional error messages and maybe the
- wrong\MessageBreak
- result. Sorry for the inconvenience.%
- }%
- \ParagraphCompatibilityHacks
-}
-\newcommand*{\ParagraphCompatibilityHacks}{%
- \PackageWarning{scrjura}{compatibility hacks for `\string\Paragraph'
- executed.\MessageBreak
- There is no support for documents using these hacks!\MessageBreak
- There is no warranty for real compatibility!\MessageBreak
- Even if the LaTeX run of the document doesn't report\MessageBreak
- any error, the result may be completely wrong.\MessageBreak
- Therefore it is recommended to solve the problem,\MessageBreak
- instead of trying to work around using the\MessageBreak
- compatibility hacks%
- }%
- \gdef\Paragraph{\Clause}%
- \gdef\SubParagraph{\SubClause}%
- \gdef\c@Paragraph{\c@Clause}%
- \gdef\cl@Paragraph{\cl@Clause}%
- \gdef\c@SubParagraph{\c@SubClause}%
- \gdef\cl@SubParagraph{\cl@SubClause}%
- \gdef\theParagraph{\theClause}%
- \gdef\theSubParagraph{\theSubClause}%
- \gdef\refParagraph{\refClause}%
- \gdef\refParagraphN{\refClauseN}%
- \aliaskomafont{Paragraph}{Clause}%
- \scr@ifundefinedorrelax{Paragraphmark}{}{%
- \global\let\Clausemark\Paragraphmark
- }%
-}
-\providecommand*{\Paragraph}{\DeprecatedParagraph\Paragraph}
-\providecommand*{\SubParagraph}{\DeprecatedParagraph\SubParagraph}
-\providecommand*{\refParagraph}{\DeprecatedParagraph\refParagraph}
-\providecommand*{\refParagraphN}{\DeprecatedParagraph\refParagraphN}
-\newcommand*{\scrjura@env@type}{}
-\newcommand*{\ellipsispar}[1][1]{%
- \begingroup
- \KOMAoptions{parnumber=manual}\parellipsis\par
- \addtocounter{par}{#1}%
- \if@filesw
- \protected@write\@auxout{}{%
- \string\newmaxpar{\scrjura@env@type}%
- {\csname the\scrjura@env@type
- AbsoluteClause\endcsname}%
- {\thepar}%
- }%
- \fi
- \endgroup
- \addtocounter{par}{-1}\refstepcounter{par}%
- \ignorespaces
-}
-\newcommand*{\parellipsis}{%
- \scr@ifundefinedorrelax{textellipsis}{\dots}{\textellipsis}%
-}
-\newenvironment{contract}{%
- \ifx\scrjura@env@type\@empty
- \let\@doendpe\scrjura@doendpe
- \let\Clause\contract@paragraph
- \let\c@Clause\c@contractClause
- \edef\cl@Clause{\cl@Clause\cl@contractClause}%
- \let\SubClause\contract@subparagraph
- \let\c@SubClause\c@contractSubClause
- \edef\cl@SubClause{\cl@SubClause\cl@contractSubClause}%
- \let\Sentence\contract@sentence
- \renewcommand*{\scrjura@env@type}{contract}%
- \aliaskomafont{Clause}{contract.Clause}%
- \else
- \PackageError{scrjura}{nested `contract` detected}{%
- You may not use a `contract' environment inside\MessageBreak
- a `\scrjura@env@type' environment or after loading\MessageBreak
- package `scrjura' with option `\scrjura@env@type'!}%
- \fi
-}{}
-\let\if@scrjura@skiphyperref\iftrue
-\let\cl@Clause\@empty
-\let\cl@SubClause\@empty
-\newcounter{contractClause}
-\renewcommand*{\thecontractClause}{%
- {\contract@Clauseformat{\arabic{Clause}}}}
-\DeclareRobustCommand*{\contract@Clauseformat}[1]{\Clauseformat{#1}}
-\newcommand*{\Clauseformat}[1]{\S~#1}
-\newcounter{contractSubClause}
-\@addtoreset{SubClause}{Clause}
-\renewcommand*{\thecontractSubClause}{%
- {\theClause\alph{SubClause}}}
-\newcounter{contractAbsoluteClause}
-\newcommand*{\DeclareNewJuraEnvironment}[1]{%
- \@ifundefined{#1}{\expandafter\let\csname #1\expandafter\endcsname
- \csname end#1\endcsname}{}%
- \@ifundefined{#1}{\let\reserved@defjuraenvironment\@defjuraenvironment}{%
- \PackageError{scrjura}{ignorring declaration of `#1'}{%
- You've tried to declare jura environment `#1', but
- environment\MessageBreak
- `#1' or command
- \expandafter\string\csname #1\endcsname\space or
- \expandafter\string\csname end#1\endcsname\MessageBreak
- already exists.\MessageBreak
- Declaration will be ignored}%
- \long\def\reserved@defjuraenvironment##1[##2]##3##4{}%
- }%
- \kernel@ifnextchar [%]
- {\reserved@defjuraenvironment{#1}}{\reserved@defjuraenvironment{#1}[]}%
-}
-\@onlypreamble\DeclareNewJuraEnvironment
-\DefineFamily{KOMAarg}
-\DefineFamilyMember{KOMAarg}
-\newcommand{\@defjuraenvironment}{}
-\long\def\@defjuraenvironment#1[#2]#3#4{%
- \let\reserved@defjuraenvironment\relax
- \newcounter{#1Clause}%
- \newcounter{#1AbsoluteClause}%
- \newcounter{#1SubClause}%
- \FamilyCSKey[.scrjura.sty]{KOMAarg}{Clause}{#1@Clause}%
- \FamilyCSKey[.scrjura.sty]{KOMAarg}{SubClause}{#1@SubClause}%
- \FamilyCSKey[.scrjura.sty]{KOMAarg}{Sentence}{#1@Sentence}%
- \DefineFamilyKey[.scrjura.sty]{KOMAarg}{ClauseNumberFormat}{%
- \expandafter\def\csname #1@Clauseformat \endcsname####1{##1{####1}}%
- \expandafter\edef\csname #1@Clauseformat\endcsname{%
- \noexpand\protect\expandafter\noexpand\csname #1@Clauseformat \endcsname
- }%
- \FamilyKeyStateProcessed
- }
- \DefineFamilyKey[.scrjura.sty]{KOMAarg}{ClauseFont}{%
- \IfExistskomafont{#1.Clause}{%
- \IfIsAliaskomafont{#1.Clause}{%
- \expandafter\let\csname scr@fnt@instead@#1.Clause\endcsname\relax
- \newkomafont{#1.Clause}{##1}%
- }{\setkomafont{#1.Clause}{##1}}%
- }{%
- \newkomafont{#1.Clause}{##1}%
- }%
- }
- \FamilyExecuteOptions[.scrjura.sty]{KOMAarg}{#2}%
- \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{ClauseFont}%
- \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{ClauseNumberFormat}%
- \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{Sentence}%
- \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{SubClause}%
- \RelaxFamilyKey[.scrjura.sty]{KOMAarg}{Clause}%
- \@ifundefined{#1@Clauseformat}{%
- \expandafter\DeclareRobustCommand\expandafter*%
- \csname #1@Clauseformat\endcsname[1]{\Clauseformat{##1}}%
- }{}%
- \expandafter\renewcommand\expandafter*\csname the#1Clause\endcsname{%
- \protect\@nameuse{#1@Clauseformat}{\arabic{#1Clause}}}%
- \newenvironment{#1}{%
- \par
- \ifx\scrjura@env@type\@empty
- \edef\scrjura@env@type{#1}%
- \let\@doendpe\scrjura@doendpe
- \expandafter\let\expandafter\c@Clause\csname c@#1Clause\endcsname
- \edef\cl@Clause{\cl@Clause\csname cl@#1Clause\endcsname}%
- \expandafter\let\expandafter\c@SubClause
- \csname c@#1SubClause\endcsname
- \edef\cl@SubClause{\cl@SubClause
- \csname cl@#1SubClause\endcsname}%
- \@ifundefined{#1@Clause}{%
- \let\Clause\contract@paragraph
- }{%
- \expandafter\let\expandafter\Clause
- \csname #1@Clause\endcsname
- }%
- \@ifundefined{#1@SubClause}{%
- \let\SubClause\contract@subparagraph
- }{%
- \expandafter\let\expandafter\SubClause
- \csname #1@SubClause\endcsname
- }%
- \@ifundefined{#1@Sentence}{%
- \let\Sentence\contract@sentence
- }{%
- \expandafter\let\expandafter\Sentence\csname #1@Sentence\endcsname
- }%
- \@ifundefined{\scrjura@env@type @everypar}{%
- \expandafter\let
- \csname \scrjura@env@type @everypar\endcsname
- \contract@everypar
- }{}%
- \IfExistskomafont{#1.Clause}{%
- \IfIsAliaskomafont{#1.Clause}{%
- \aliaskomafont{Clause}{\csname scr@fnt@instead@#1.Clause\endcsname}%
- }{%
- \aliaskomafont{Clause}{#1.Clause}%
- }%
- }{%
- \aliaskomafont{Clause}{contract.Clause}%
- }%
- #3%
- \else
- \PackageError{scrjura}{nested scrjura environments detected}{%
- You must not use a `#1' environment inside\MessageBreak
- a `\scrjura@env@type' environment or after loading\MessageBreak
- package `scrjura' with option `\scrjura@env@type'!}%
- \fi
- }{%
- #4%
- \par
- }%
-}
-\define@key{contract}{title}{%
- \def\contract@title{#1}%
- \ifx\contract@entry\relax\def\contract@entry{\contract@title}\fi
- \ifx\contract@head\relax\def\contract@head{\contract@title}\fi
-}
-\define@key{contract}{entry}{%
- \PackageWarning{scrjura}{deprecated option `entry'.\MessageBreak
- You should use option `tocentry' instead of\MessageBreak
- option `entry'%
- }%
- \def\contract@entry{#1}}
-\define@key{contract}{tocentry}{\def\contract@entry{#1}}
-\define@key{contract}{noentry}[]{%
- \PackageWarning{scrjura}{deprecated option `noentry'.\MessageBreak
- You should use option `notocentry' instead of\MessageBreak
- option `noentry'%
- }%
- \let\contract@entry\relax}
-\define@key{contract}{notocentry}[]{\let\contract@entry\relax}
-\define@key{contract}{head}{\def\contract@head{#1}}
-\define@key{contract}{nohead}[]{\let\contract@head\relax}
-\define@key{contract}{number}{\def\contract@number{#1}}
-\newcommand*{\contract@preskip}{2\baselineskip}
-\newcommand*{\contract@postskip}{\baselineskip}
-\define@key{contract}{preskip}{\def\contract@preskip{#1}}
-\define@key{contract}{postskip}{\def\contract@postskip{#1}}
-\newif\ifcontract@dummy
-\define@key{contract}{dummy}[true]{\csname contract@dummy#1\endcsname}
-\newkomafont{contract.Clause}{\sffamily\bfseries\large}
-\newcommand*{\contract@paragraph@font}{\usekomafont{Clause}%
- \@hangfrom}
-\newcounter{@AbsClause}
-\def\theH@AbsClause{P-\arabic{@AbsClause}}
-\def\theHClause{\theH@AbsClause}
-\def\theHSubClause{\theH@AbsClause}
-\newcommand*{\contract@paragraph}[1]{%
- \stepcounter{\scrjura@env@type AbsoluteClause}%
- \ManualPar\parnumbertrue
- \let\contract@title\relax
- \let\contract@entry\relax
- \let\contract@head\relax
- \let\contract@number\relax
- \contract@dummyfalse
- \ifx\relax#1\relax\else\setkeys{contract}{#1}\fi
- \ifcontract@dummy\else
- \par
- \@afterindentfalse
- \addvspace{\contract@preskip}%
- \fi
- \ifx\contract@number\relax
- \let\p@Clause\@empty
- \expandafter\let\expandafter\theClause
- \csname the\scrjura@env@type Clause\endcsname
- \refstepcounter{Clause}%
- \else
- \begingroup
- \let\@elt\@stpelt
- \cl@Clause
- \endgroup
- \protected@edef\theClause{%
- \protect\@nameuse{\scrjura@env@type @Clauseformat}{\contract@number}%
- }%
- \protected@edef\@currentlabel{\theClause}%
- \def\@currentcounter{Clause}%
- \fi
- \stepcounter{@AbsClause}%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname if@skiphyperref\endcsname\relax
- \else
- \expandafter\let\csname if@scrjura@skiphyperref\expandafter\endcsname
- \csname if@skiphyperref\endcsname
- \fi
- \if@scrjura@skiphyperref\else
- \hyper@refstepcounter{@AbsClause}%
- \typeout{absolute Nummer: \the@AbsClause^^JLabel: `\@currentHref'}%
- \fi
- \let\theSubClause\theClause
- \ifcontract@dummy\else
- \begingroup
- \if@juratitlepagebreak\else\interlinepenalty\@M\fi
- \contract@paragraph@font{\theClause
- \ifx\contract@title\relax\else\enskip\fi}%
- \contract@title
- \ifx\contract@entry\relax\else
- \expandafter\addxcontentsline\expandafter{\ext@toc}%
- {cpar}[\theClause]\contract@entry
- \addxcontentsline{cpa}{cpar}[\theClause]\contract@entry
- \fi
- \ifx\contract@head\relax\else
- \expandafter\Clausemark\expandafter{%
- \expandafter\theSubClause\expandafter\enskip\contract@head}%
- \fi
- \par
- \endgroup\nobreak\vskip\contract@postskip
- \scrjura@afterheading
- \fi
-}
-\newcommand*{\contract@subparagraph}[1]{%
- \stepcounter{\scrjura@env@type AbsoluteClause}%
- \ManualPar\parnumbertrue
- \let\contract@title\relax
- \let\contract@entry\relax
- \let\contract@head\relax
- \let\contract@number\relax
- \contract@dummyfalse
- \ifx\relax#1\relax\else\setkeys{contract}{#1}\fi
- \ifcontract@dummy\else
- \par
- \@afterindentfalse
- \vskip\contract@preskip
- \fi
- \ifx\contract@number\relax
- \let\p@SubClause\@empty
- \let\theSubClause\thecontractSubClause
- \refstepcounter{SubClause}%
- \else
- \begingroup
- \let\@elt\@stpelt
- \cl@SubClause
- \endgroup
- \protected@edef\theSubClause{\theClause\contract@number}%
- \protected@edef\@currentlabel{\theSubClause}%
- \def\@currentcounter{SubClause}%
- \fi
- \stepcounter{@AbsClause}%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname if@skiphyperref\endcsname\relax
- \else
- \expandafter\let\csname if@scrjura@skiphyperref\expandafter\endcsname
- \csname if@skiphyperref\endcsname
- \fi
- \if@scrjura@skiphyperref\else
- \hyper@refstepcounter{@AbsClause}%
- \typeout{absolute Nummer: \the@AbsClause^^JLabel: `\@currentHref'}%
- \fi
- \ifcontract@dummy\else
- \begingroup
- \if@juratitlepagebreak\else\interlinepenalty\@M\fi
- \contract@paragraph@font{\theSubClause
- \ifx\contract@title\relax\else\enskip\fi}%
- \contract@title
- \ifx\contract@entry\relax\else
- \expandafter\addxcontentsline\expandafter{\ext@toc}%
- {cpar}[\theSubClause]\contract@entry
- \addxcontentsline{cpa}{cpar}[\theSubClause]\contract@entry
- \fi
- \ifx\contract@head\relax\else
- \expandafter\Clausemark\expandafter{%
- \expandafter\theSubClause\expandafter\enskip\contract@head}%
- \fi
- \par
- \endgroup
- \nobreak\vskip\contract@postskip
- \scrjura@afterheading
- \fi
-}
-\newcommand*{\AutoPar}{%
- \expandafter\let\expandafter\scrjura@everypar
- \csname \scrjura@env@type @everypar\endcsname
-}
-\newcommand*{\ManualPar}{%
- \let\scrjura@everypar\relax
-}
-\CheckCommand*{\@afterheading}{%
- \@nobreaktrue
- \everypar{%
- \if@nobreak
- \@nobreakfalse
- \clubpenalty \@M
- \if@afterindent \else
- {\setbox\z@\lastbox}%
- \fi
- \else
- \clubpenalty \@clubpenalty
- \everypar{}%
- \fi}%
-}
-\newcommand*{\scrjura@afterheading}{%
- \@nobreaktrue
- \everypar{%
- \if@nobreak
- \@nobreakfalse
- \clubpenalty \@M
- \if@afterindent \else
- {\setbox\z@\lastbox}%
- \fi
- \else
- \clubpenalty \@clubpenalty
- \everypar{%
- \scrjura@everypar
- }%
- \fi
- \scrjura@everypar
- }%
- \AutoPar
-}
-\newcommand*{\scrjura@everypar}{}
-\providecommand*{\IncludeInRelease}[3]{%
- \PackageInfo{scrjura}{temporary definition of \string\IncludeInRelease}%
- \Ifstr{#1}{0000/00/00}{%
- \let\IncludeInRelease\@undefined
- \def\EndIncludeInRelease{\let\EndIncludeInRelease\@undefined}%
- }{%
- \let\EndIncludeInRelease\relax
- \long\def\@gobble@IncludeInRelease##1\EndIncludeInRelease{%
- \let\@gobble@IncludeInRelease\@undefined
- }%
- \expandafter\@gobble@IncludeInRelease
- }%
-}
-\IncludeInRelease{2015/01/01}{\@doendpe}{clubpenalty fix}
-\CheckCommand*\@doendpe{\@endpetrue
- \def\par{\@restorepar
- \clubpenalty\@clubpenalty
- \everypar{}\par\@endpefalse}\everypar
- {{\setbox\z@\lastbox}%
- \everypar{}\@endpefalse}}
-\newcommand*{\scrjura@doendpe}{%
- \@endpetrue
- \def\par{%
- \@restorepar
- \clubpenalty\@clubpenalty
- \everypar{%
- \csname scrjura@everypar\endcsname
- }%
- \par\@endpefalse
- }%
- \everypar{%
- {\setbox\z@\lastbox}\everypar{%
- \csname scrjura@everypar\endcsname
- }%
- \@endpefalse
- }%
-}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}{\@doendpe}{clubpenalty fix}
-\CheckCommand*\@doendpe{\@endpetrue
- \def\par{\@restorepar\everypar{}\par\@endpefalse}\everypar
- {{\setbox\z@\lastbox}\everypar{}\@endpefalse}}
-\newcommand*{\scrjura@doendpe}{%
- \@endpetrue
- \def\par{%
- \@restorepar\everypar{%
- \csname scrjura@everypar\endcsname
- }%
- \par\@endpefalse
- }%
- \everypar{%
- {\setbox\z@\lastbox}\everypar{%
- \csname scrjura@everypar\endcsname
- }%
- \@endpefalse
- }%
-}
-\EndIncludeInRelease
-\DeclareRobustCommand*{\scrjura@separator}[1]{#1}
-\DeclareRobustCommand*{\scrjura@usetype}[1]{\scrjura@@usetype{#1}}
-\newcommand*{\scrjura@@usetype}[1]{}
-\newcounter{par}
-\renewcommand*{\thepar}{\arabic{par}}
-\def\theHpar{\theH@AbsClause-\Roman{par}}
-\newcommand*{\parformat}{(\thepar)}
-\newcommand*{\parformatseparation}{\nobreakspace}
-\newkomafont{parnumber}{}
-\renewcommand*\p@par{{\scrjura@usetype{\scrjura@env@type}\theSubClause\scrjura@separator{\nobreakspace}}}
-\@addtoreset{par}{Clause}
-\@addtoreset{par}{SubClause}
-\newcommand*{\withoutparnumber}{}
-\newcommand*{\contract@everypar}{%
- \ifparnumber
- \ifx\scrjura@special@par\relax
- \ifx\scrjura@special@reset@par\relax\else
- \global\let\thepar\scrjura@special@reset@par
- \global\let\scrjura@special@reset@par\relax
- \fi
- \refstepcounter{par}%
- \refstepcounter{sentence}%
- \else
- \ifx\scrjura@special@reset@par\relax
- \global\let\scrjura@special@reset@par\thepar
- \fi
- \global\let\thepar\scrjura@special@par
- \global\let\scrjura@special@par\relax
- \setcounter{sentence}{0}\refstepcounter{sentence}%
- \fi
- \begingroup
- \if@filesw
- \protected@write\@auxout{%
- \expandafter\let\csname \scrjura@env@type @Clauseformat\endcsname
- \@firstofone
- }{%
- \string\newmaxpar{\scrjura@env@type}%
- {\csname the\scrjura@env@type
- AbsoluteClause\endcsname}%
- {\thepar}%
- }%
- \fi
- \getmaxpar\@tempa{\scrjura@env@type}%
- {\csname the\scrjura@env@type AbsoluteClause\endcsname}%
- \typeout{Stored max is \@tempa}%
- \def\reserved@a##1\@nnil{\def\@tempa{##1}}%
- \afterassignment\reserved@a\@tempcnta=0\@tempa\relax\@nnil
- \ifnum \@tempcnta>\@ne
- {\usekomafont{parnumber}{\parformat\parformatseparation}}%
- \else
- \def\reserved@a{\relax}%
- \ifx\@tempa\reserved@a
- \withoutparnumber
- \else
- {\usekomafont{parnumber}{\parformat\parformatseparation}}%
- \fi
- \fi
- \endgroup
- \else
- \begingroup\withoutparnumber\endgroup
- \setcounter{sentence}{-1}\refstepcounter{sentence}%
- \fi
-}
-\newcommand*{\thisparnumber}[1]{%
- \def\scrjura@special@par{#1}%
-}
-\newcommand*{\scrjura@special@par}{}
-\let\scrjura@special@par\relax
-\newcommand*{\scrjura@special@reset@par}{}
-\let\scrjura@special@reset@par\relax
-\newcommand*{\refL}{\kernel@ifstar {\ref@L*}{\ref@L{}}}
-\newcommand*{\ref@L}[2]{%
- \begingroup
- \def\parcite@format{0}%
- \let\sentencecite@format\parcite@format
- \ref#1{#2}%
- \endgroup
-}
-\newcommand*{\refS}{\kernel@ifstar {\ref@S*}{\ref@S{}}}
-\newcommand*{\ref@S}[2]{%
- \begingroup
- \def\parcite@format{1}%
- \let\sentencecite@format\parcite@format
- \ref#1{#2}%
- \endgroup
-}
-\newcommand*{\refN}{\kernel@ifstar {\ref@N*}{\ref@N{}}}
-\newcommand*{\ref@N}[2]{%
- \begingroup
- \def\parcite@format{2}%
- \let\sentencecite@format\parcite@format
- \ref#1{#2}%
- \endgroup
-}
-\newcommand*{\refClause}{%
- \kernel@ifstar {\ref@Clause*}{\ref@Clause{}}
-}
-\newcommand*{\ref@Clause}[2]{%
- \expandafter\ifx\csname r@#2\endcsname\relax
- \ref#1{#2}%
- \else
- \begingroup
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\def
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\@tempb
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter\@gobble\csname r@#2\endcsname}%
- \def\@tempc##1##2\@nil{##1}%
- \let\scrjura@separator\@gobble
- \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
- \csname r@#2\endcsname\noexpand\@nil}%
- \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
- \@tempa\@nil}%
- \let\@@protect\protect
- \let\protect\noexpand
- \expandafter\edef\csname r@#2\endcsname{{\@tempa}\@tempb}%
- \let\protect\@@protect
- \ref#1{#2}%
- \endgroup
- \fi
-}
-\newcommand*{\refClauseN}{%
- \kernel@ifstar {\ref@ClauseN*}{\ref@ClauseN{}}
-}
-\newcommand*{\ref@ClauseN}[2]{%
- \begingroup
- \let\Clauseformat\relax
- \ref@Clause{#1}{#2}%
- \endgroup
-}
-\newcommand*{\refPar}{%
- \kernel@ifstar {\ref@Par*}{\ref@Par{}}
-}
-\newcommand*{\ref@Par}[2]{%
- \expandafter\ifx\csname r@#2\endcsname\relax
- \ref#1{#2}%
- \else
- \begingroup
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\def
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\@tempb
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter\@gobble\csname r@#2\endcsname}%
- \def\@tempc##1##2\@nil{##1}%
- \let\scrjura@separator\@gobble
- \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
- \csname r@#2\endcsname\noexpand\@nil}%
- \def\@tempc##1##2##3\@nil{##2}%
- \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
- \@tempa{%
- \protect\G@refundefinedtrue
- \nfss@text{\reset@font\bfseries ??}%
- \@latex@warning{Reference `#2' on page \thepage \space
- with undefined par number}%
- }\noexpand\@nil}%
- \let\@@protect\protect
- \let\protect\noexpand
- \expandafter\edef\csname r@#2\endcsname{{\@tempa}\@tempb}%
- \let\protect\@@protect
- \ref#1{#2}%
- \endgroup
- \fi
-}
-\newcommand*{\refParL}{%
- \kernel@ifstar {\ref@ParX0*}{\ref@ParX0{}}
-}
-\newcommand*{\ref@ParX}[3]{%
- \begingroup
- \def\parcite@format{#1}%
- \let\sentencecite@format\parcite@format
- \ref@Par{#2}{#3}%
- \endgroup
-}
-\newcommand*{\refParS}{%
- \kernel@ifstar {\ref@ParX1*}{\ref@ParX1{}}
-}
-\newcommand*{\refParN}{%
- \kernel@ifstar {\ref@ParN2*}{\ref@ParN2{}}
-}
-\newcommand*{\ref@ParN}[2]{%
- \kernel@ifnextchar [%]
- {\ref@@ParN{#1}{#2}}%
- {\ref@ParX{#1}{#2}}%
-}
-\newcommand*{\ref@@ParN}{}
-\def\ref@@ParN#1#2[#3]#4{%
- \begingroup
- \renewcommand*{\parnumericformat}[1]{%
- \csname @#3\endcsname{\number ##1\relax}%
- }%
- \ref@ParX{#1}{#2}{#4}%
- \endgroup
-}
-\newcommand*{\refSentence}{%
- \kernel@ifstar {\ref@Sentence*}{\ref@Sentence{}}
-}
-\newcommand*{\ref@Sentence}[2]{%
- \expandafter\ifx\csname r@#2\endcsname\relax
- \ref#1{#2}%
- \else
- \begingroup
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\def
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter\@tempb
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter\@gobble\csname r@#2\endcsname}%
- \def\@tempc##1##2\@nil{##1}%
- \let\scrjura@separator\@gobble
- \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
- \csname r@#2\endcsname\noexpand\@nil}%
- \def\@tempc##1##2##3##4\@nil{##3}%
- \protected@edef\@tempa{\expandafter\expandafter\expandafter\@tempc
- \@tempa{}{%
- \protect\G@refundefinedtrue
- \nfss@text{\reset@font\bfseries ??}%
- \@latex@warning{Reference `#2' on page \thepage \space
- with undefined sentence number}%
- }\noexpand\@nil}%
- \let\@@protect\protect
- \let\protect\noexpand
- \expandafter\edef\csname r@#2\endcsname{{\@tempa}\@tempb}%
- \let\protect\@@protect
- \ref#1{#2}%
- \endgroup
- \fi
-}
-\newcommand*{\refSentenceL}{%
- \kernel@ifstar {\ref@SentenceX0*}{\ref@SentenceX0{}}
-}
-\newcommand*{\ref@SentenceX}[3]{%
- \begingroup
- \def\parcite@format{#1}%
- \let\sentencecite@format\parcite@format
- \ref@Sentence{#2}{#3}%
- \endgroup
-}
-\newcommand*{\refSentenceS}{%
- \kernel@ifstar {\ref@SentenceX1*}{\ref@SentenceX1{}}
-}
-\newcommand*{\refSentenceN}{%
- \kernel@ifstar {\ref@SentenceX2*}{\ref@SentenceX2{}}
-}
-\newcounter{sentence}[par]
-\renewcommand*{\thesentence}{\arabic{sentence}}
-\def\theHsentence{\theHpar-\arabic{sentence}}
-\scr@ifundefinedorrelax{labelformat}{%
- \renewcommand*{\p@sentence}{\expandafter\p@@sentence}
- \newcommand*{\p@@sentence}[1]{\p@par{{\par@cite{\thepar}}%
- \scrjura@separator{\nobreakspace}}{\sentence@cite{#1}}}%
-}{%
- \labelformat{sentence}{\p@par{{\par@cite{\thepar}}%
- \scrjura@separator{\nobreakspace}}{\sentence@cite{#1}}}%
-}
-\newcommand*{\contract@sentence}{%
- \ifvmode
- \if@endpe
- \refstepcounter{sentence}%
- \else
- \leavevmode
- \fi
- \else
- \refstepcounter{sentence}%
- \fi
- {\usekomafont{sentencenumber}{\sentencenumberformat}}%
- \nobreak\hskip\z@
-}
-\newkomafont{sentencenumber}{}
-\newcommand*{\sentencenumberformat}{\textsuperscript{\thesentence}}
-\DeclareRobustCommand*{\par@cite}[1]{\parciteformat{#1}}
-\newcommand*{\parciteformat}[1]{%
- \ifcase \parcite@format
- \expandafter\parlongformat
- \or
- \expandafter\parshortformat
- \or
- \expandafter\parnumericformat
- \else
- \unskip\expandafter\@gobble
- \fi
- {#1}%
-}
-\DeclareRobustCommand*{\sentence@cite}[1]{\sentenceciteformat{#1}}
-\newcommand*{\sentenceciteformat}[1]{%
- \ifcase \sentencecite@format
- \expandafter\sentencelongformat
- \or
- \expandafter\sentenceshortformat
- \or
- \expandafter\sentencenumericformat
- \else
- \unskip\expandafter\@gobble
- \fi
- {#1}%
-}
-\newcommand*{\parlongformat}[1]{\parname~#1}
-\newcommand*{\parshortformat}[1]{\parshortname~#1}
-\newcommand*{\parnumericformat}[1]{\@Roman{\number #1\relax}}
-\newcommand*{\sentencelongformat}[1]{\sentencename~#1}
-\newcommand*{\sentenceshortformat}[1]{\sentenceshortname~#1}
-\newcommand*{\sentencenumericformat}[1]{\@arabic{\number #1\relax}.}
-\newcommand*{\parname}{Paragraph}
-\AtBeginDocument{%
- \providecaptionname{german,ngerman,austrian,naustrian}\parname{Absatz}%
- \providecaptionname{german,ngerman,austrian,naustrian}\parshortname{Abs.}%
- \providecaptionname{german,ngerman,austrian,naustrian}\sentencename{Satz}%
- \providecaptionname{german,ngerman,austrian,naustrian}\sentenceshortname{S.}%
- \providecaptionname{english,american,british,canadian,%
- USenglish,UKenglish,usenglish,ukenglish}\parname{paragraph}%
- \providecaptionname{english,american,british,canadian,%
- USenglish,UKenglish,usenglish,ukenglish}\parshortname{par.}%
- \providecaptionname{english,american,british,canadian,%
- USenglish,UKenglish,usenglish,ukenglish}\sentencename{sentence}%
- \providecaptionname{english,american,british,canadian,%
- USenglish,UKenglish,usenglish,ukenglish}\sentenceshortname{sent.}%
-}
-\providecommand*{\parname}{\scrjura@lang@error{\parname}}
-\providecommand*{\parshortname}{\scrjura@lang@error{\parshortname}}
-\providecommand*{\sentencename}{\scrjura@lang@error{\sentencename}}
-\providecommand*{\sentenceshortname}{\scrjura@lang@error{\sentenceshortname}}
-\newcommand*{\scrjura@lang@error}[1]{%
- \PackageError{scrjura}{%
- current language not supported%
- }{%
- Currently scrjura only supports languages `german', `ngerman',
- `austrian',\MessageBreak
- `naustrian', `english', `american', `british', `canadian',
- `USenglish',\MessageBreak
- `UKenglish', `usenglish`, and `ukenglish'.\MessageBreak
- It seems, that you are using another language (maybe `\languagename') or
- that\MessageBreak
- your language selection isn't compatible to package `babel'.\MessageBreak
- Because of this you have to define `\string#1' by yourself!\MessageBreak
- It would be nice if you'll send your definitions to the author.%
- }%
- \textbf{??}%
-}
-\newcommand*{\newmaxpar}[3]{%
- \begingroup
- \expandafter\let\csname #1@Clauseformat\endcsname\@firstofone
- \protected@edef\@tempa{#2}\@onelevel@sanitize\@tempa
- \expandafter\xdef\csname max@#1@\@tempa\endcsname{#3}%
- \endgroup
-}
-\newcommand*{\getmaxpar}[3]{%
- \begingroup
- \expandafter\let\csname #2@Clauseformat\endcsname\@firstofone
- \protected@edef\@tempa{#3}%
- \@onelevel@sanitize\@tempa
- \expandafter\ifx \csname max@#2@\@tempa\endcsname\relax
- \edef\@tempa{\endgroup\edef\noexpand#1{\expandafter\the\value{par}}}%
- \else
- \edef\@tempa{\endgroup
- \edef\noexpand#1{\csname max@#2@\@tempa\endcsname}}%
- \fi
- \@tempa
-}
-\AtBeginDocument{%
- \if@filesw
- \immediate\write\@auxout{%
- \string\providecommand*\string\newmaxpar[3]{}
- }%
- \fi
-}
-%%% From File: $Id: scrjura.dtx 4062 2023-06-24 15:55:11Z kohm $
-%%% (run: final)
+\RequirePackageWithOptions{contract}[=v0.9]
+\NewCommandCopy{\scrjura@paragraph}{\contract@paragraph}
+\NewCommandCopy{\scrjura@subparagraph}{\contract@subparagraph}
+\RenewDocumentCommand\contract@paragraph{m}{\scrjura@paragraph[{#1}]}
+\RenewDocumentCommand\contract@subparagraph{m}{\scrjura@subparagraph[{#1}]}
%%% From File: $Id: scrlogo.dtx 4032 2023-04-17 09:45:11Z kohm $
\RequirePackage{scrlogo}
\endinput
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrkbase.sty b/Master/texmf-dist/tex/latex/koma-script/scrkbase.sty
index 8a564281db9..759c2eba631 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrkbase.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scrkbase.sty
@@ -44,41 +44,43 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\providecommand*{\@CheckKOMAScriptVersion}{%
+ \begingroup
+ \ExplSyntaxOff
+ \@@CheckKOMAScriptVersion
+}
+\providecommand*{\@@CheckKOMAScriptVersion}[1]{%
+ \@ifundefined{KOMAScriptVersion}{%
\gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ }{%
\def\@tempa{#1}%
\ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
+ \GenericWarning{\space\@spaces\@spaces\@spaces\@spaces}{%
+ Version warning:
+ \noexpand\KOMAScriptVersion is
+ `\csname KOMAScriptVersion\endcsname',\MessageBreak
but `#1' was expected!\MessageBreak
You should not use classes, packages or files
from\MessageBreak
- different KOMA-Script versions%
+ different KOMA-Script versions\@gobble
}%
\fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+ }%
+ \endgroup
+}
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
\providecommand*{\scr@pkgextension}{\@pkgextension}
\AtBeginDocument{%
\let\scr@pkgextension\@pkgextension
}
-%%% From File: $Id: scrkernel-basics.dtx 4051 2023-04-26 16:01:28Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 4074 2023-07-14 15:56:59Z kohm $
%%% (run: prepare)
\NeedsTeXFormat{LaTeX2e}[1995/06/01]
\ProvidesPackage{%
scrkbase%
}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
package
(%
KOMA-Script-dependent
@@ -242,12 +244,12 @@
}
\newcommand*{\KOMAProcessOptions}{\FamilyProcessOptions{KOMA}}
\@onlypreamble\KOMAProcessOptions
-%%% From File: $Id: scrkernel-basics.dtx 4051 2023-04-26 16:01:28Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 4074 2023-07-14 15:56:59Z kohm $
%%% (run: option)
\KOMAProcessOptions\relax
%%% From File: $Id: scrkernel-fonts.dtx 4034 2023-04-20 08:03:46Z kohm $
%%% (run: option)
-%%% From File: $Id: scrkernel-basics.dtx 4051 2023-04-26 16:01:28Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 4074 2023-07-14 15:56:59Z kohm $
%%% (run: body)
\newcommand*{\KOMAExecuteOptions}[1][\@currname.\@currext]{%
\Ifstrstart{#1}{.}{%
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrlayer-notecolumn.sty b/Master/texmf-dist/tex/latex/koma-script/scrlayer-notecolumn.sty
index 86838a940b1..34f5b4ef3f7 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrlayer-notecolumn.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scrlayer-notecolumn.sty
@@ -66,7 +66,7 @@
2023/04/17 v0.3.4032 KOMA-Script
package
(end user interface for scrlayer)]
-%%% From File: $Id: scrlayer.dtx 4058 2023-06-16 08:32:27Z kohm $
+%%% From File: $Id: scrlayer.dtx 4118 2024-09-02 12:05:30Z kohm $
%%% (run: init)
\RequirePackage{scrlayer}
\scr@ifundefinedorrelax{scrlayer@AtEndOfPackage}{%
@@ -110,7 +110,7 @@
}%
\batchmode\csname @@end\endcsname\end
\fi
-%%% From File: $Id: scrlayer.dtx 4058 2023-06-16 08:32:27Z kohm $
+%%% From File: $Id: scrlayer.dtx 4118 2024-09-02 12:05:30Z kohm $
%%% (run: options)
\KOMA@key{markcase}{%
\begingroup
@@ -267,7 +267,7 @@
%%% (run: options)
\KOMA@ifkey{autoclearnotecolumns}{slnc@autoclearnotecolumns}
\slnc@autoclearnotecolumnstrue
-%%% From File: $Id: scrlayer.dtx 4058 2023-06-16 08:32:27Z kohm $
+%%% From File: $Id: scrlayer.dtx 4118 2024-09-02 12:05:30Z kohm $
%%% (run: body)
\KOMAProcessOptions\relax
\expandafter\let
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrlayer-scrpage.sty b/Master/texmf-dist/tex/latex/koma-script/scrlayer-scrpage.sty
index 722452297f4..e3715c5bede 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrlayer-scrpage.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scrlayer-scrpage.sty
@@ -49,10 +49,10 @@
%%% (run: identify)
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{scrlayer-scrpage}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
package
(end user interface for scrlayer)]
-%%% From File: $Id: scrlayer.dtx 4058 2023-06-16 08:32:27Z kohm $
+%%% From File: $Id: scrlayer.dtx 4118 2024-09-02 12:05:30Z kohm $
%%% (run: init)
\RequirePackage{scrlayer}
\scr@ifundefinedorrelax{scrlayer@AtEndOfPackage}{%
@@ -76,7 +76,7 @@
{pagestyleset=KOMA-Script}%
}%
}
-%%% From File: $Id: scrlayer.dtx 4058 2023-06-16 08:32:27Z kohm $
+%%% From File: $Id: scrlayer.dtx 4118 2024-09-02 12:05:30Z kohm $
%%% (run: options)
\KOMA@key{markcase}{%
\scrlayer@AtEndOfPackage{%
@@ -644,7 +644,7 @@
\KOMA@ifkey{hmode}{sls@leavevmode}
\KOMA@ifkey{autoenlargeheadfoot}{sls@autoenlarge}
\KOMAExecuteOptions{autoenlargeheadfoot=true}
-%%% From File: $Id: scrlayer.dtx 4058 2023-06-16 08:32:27Z kohm $
+%%% From File: $Id: scrlayer.dtx 4118 2024-09-02 12:05:30Z kohm $
%%% (run: body)
\KOMAProcessOptions\relax
\expandafter\let
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrlayer.sty b/Master/texmf-dist/tex/latex/koma-script/scrlayer.sty
index 399e38813e1..a365e0be033 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrlayer.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scrlayer.sty
@@ -43,14 +43,14 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrlayer.dtx 4058 2023-06-16 08:32:27Z kohm $
+%%% From File: $Id: scrlayer.dtx 4118 2024-09-02 12:05:30Z kohm $
%%% (run: identify)
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{scrlayer}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
package
(defining layers and page styles)]
-%%% From File: $Id: scrlayer.dtx 4058 2023-06-16 08:32:27Z kohm $
+%%% From File: $Id: scrlayer.dtx 4118 2024-09-02 12:05:30Z kohm $
%%% (run: init)
\newcommand*{\scrlayer@@inherited@options@cslist}{}
\newcommand*{\scrlayer@@add@inherited@option}[1]{%
@@ -145,7 +145,7 @@
\@namedef{scrlayer@deprecated@reported@for@#1}{\string #2}%
}{}%
}
-%%% From File: $Id: scrlayer.dtx 4058 2023-06-16 08:32:27Z kohm $
+%%% From File: $Id: scrlayer.dtx 4118 2024-09-02 12:05:30Z kohm $
%%% (run: options)
\KOMA@key{markcase}{%
\begingroup
@@ -341,7 +341,7 @@
\scrlayer@@add@inherited@option{forceoverwrite}
\KOMA@ifkey{autoremoveinterfaces}{scrlayer@autoremoveinterfaces}
\scrlayer@@add@inherited@option{autoremoveinterfaces}
-%%% From File: $Id: scrlayer.dtx 4058 2023-06-16 08:32:27Z kohm $
+%%% From File: $Id: scrlayer.dtx 4118 2024-09-02 12:05:30Z kohm $
%%% (run: body)
\KOMAProcessOptions\relax
\newcommand*{\rightfirstmark}{\expandafter\@rightmark\firstmark\@empty\@empty}
@@ -530,6 +530,16 @@
}%
\else
\expandafter\def\csname #1mark\endcsname##1{%
+ \@mkboth{}{%
+ \ifnum \c@secnumdepth
+ < \numexpr \csname #1numdepth\endcsname +0\relax
+ \else
+ \if@mainmatter \MakeMarkcase{\csname #1markformat\endcsname}\fi
+ \fi
+ \MakeMarkcase{##1}%
+ }%
+ }%
+ \expandafter\def\csname #2mark\endcsname##1{%
\begingroup
\@tempswafalse
\if@twoside\@tempswatrue
@@ -538,31 +548,20 @@
\if@tempswa
\@mkleft{%
\ifnum \c@secnumdepth
- < \numexpr\csname #1numdepth\endcsname +0\relax
+ < \numexpr\csname #2numdepth\endcsname +0\relax
\else
- \if@mainmatter \MakeMarkcase{\csname #1markformat\endcsname}\fi
+ \if@mainmatter \MakeMarkcase{\csname #2markformat\endcsname}\fi
\fi
\MakeMarkcase{##1}%
}%
\fi
}%
- \expandafter\def\csname #2mark\endcsname##1{%
- \@mkboth{}{%
- \ifnum \c@secnumdepth
- < \numexpr \csname #2numdepth\endcsname +0\relax
- \else
- \if@mainmatter \MakeMarkcase{\csname #2markformat\endcsname}\fi
- \fi
- \MakeMarkcase{##1}%
- }%
- }%
\fi
\fi
}{}%
}{}%
}
\newcommand*{\ifscrlayer@level@prepared}[1]{%
- \typeout{1: \detokenize{#1}}%
\scr@ifundefinedorrelax{#1numdepth}{%
\PackageError{scrlayer}{numbering depth of `#1' unknown}{%
Someone told me to use a section mark for level `#1',\MessageBreak
@@ -2363,7 +2362,7 @@
\@ifundefined{scrlayer@#1@onremove}{\@namedef{scrlayer@#1@onremove}{}}{}%
\expandafter\l@addto@macro\csname scrlayer@#1@onremove\endcsname{#2}%
}
-%%% From File: $Id: scrlayer.dtx 4058 2023-06-16 08:32:27Z kohm $
+%%% From File: $Id: scrlayer.dtx 4118 2024-09-02 12:05:30Z kohm $
%%% (run: final)
\DeclareNewPageStyleByLayers{@everystyle@}{}
\RedeclarePageStyleByLayers{empty}{}
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrletter.cls b/Master/texmf-dist/tex/latex/koma-script/scrletter.cls
index f303d672c09..3d2f4befa9a 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrletter.cls
+++ b/Master/texmf-dist/tex/latex/koma-script/scrletter.cls
@@ -38,30 +38,32 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\providecommand*{\@CheckKOMAScriptVersion}{%
+ \begingroup
+ \ExplSyntaxOff
+ \@@CheckKOMAScriptVersion
+}
+\providecommand*{\@@CheckKOMAScriptVersion}[1]{%
+ \@ifundefined{KOMAScriptVersion}{%
\gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ }{%
\def\@tempa{#1}%
\ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
+ \GenericWarning{\space\@spaces\@spaces\@spaces\@spaces}{%
+ Version warning:
+ \noexpand\KOMAScriptVersion is
+ `\csname KOMAScriptVersion\endcsname',\MessageBreak
but `#1' was expected!\MessageBreak
You should not use classes, packages or files
from\MessageBreak
- different KOMA-Script versions%
+ different KOMA-Script versions\@gobble
}%
\fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+ }%
+ \endgroup
+}
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
\providecommand*{\scr@clsextension}{\@clsextension}
\AtBeginDocument{%
\let\scr@clsextension\@clsextension
@@ -75,7 +77,7 @@
\newcommand*{\KOMALongClassFileName}{\KOMALongClassName.\@clsextension}
\edef\KOMALongClassFileName{\KOMALongClassFileName}
\ProvidesClass{\KOMALongClassName}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
document class (\ClassName)%
]
\let\ClassName\relax
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrletter.sty b/Master/texmf-dist/tex/latex/koma-script/scrletter.sty
index 622fb816bf8..5d14d4236e8 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrletter.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scrletter.sty
@@ -62,42 +62,44 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\providecommand*{\@CheckKOMAScriptVersion}{%
+ \begingroup
+ \ExplSyntaxOff
+ \@@CheckKOMAScriptVersion
+}
+\providecommand*{\@@CheckKOMAScriptVersion}[1]{%
+ \@ifundefined{KOMAScriptVersion}{%
\gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ }{%
\def\@tempa{#1}%
\ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
+ \GenericWarning{\space\@spaces\@spaces\@spaces\@spaces}{%
+ Version warning:
+ \noexpand\KOMAScriptVersion is
+ `\csname KOMAScriptVersion\endcsname',\MessageBreak
but `#1' was expected!\MessageBreak
You should not use classes, packages or files
from\MessageBreak
- different KOMA-Script versions%
+ different KOMA-Script versions\@gobble
}%
\fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+ }%
+ \endgroup
+}
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
\providecommand*{\scr@pkgextension}{\@pkgextension}
\AtBeginDocument{%
\let\scr@pkgextension\@pkgextension
}
\ProvidesPackage{scrletter}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
letter package extending any KOMA-Script class%
]
-%%% From File: $Id: scrkernel-basics.dtx 4051 2023-04-26 16:01:28Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 4074 2023-07-14 15:56:59Z kohm $
%%% (run: load)
\RequirePackage{scrkbase}[\KOMAScriptVersion]
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: init)
\scr@ifundefinedorrelax{KOMAClassName}{%
\PackageWarningNoLine{scrletter}{%
@@ -121,15 +123,15 @@
}
\providecommand*{\par@updaterelative}{}
}{}
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: init)
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: option)
%%% From File: $Id: scrkernel-letterclassoptions.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: option)
\AtEndOfPackage
{\LoadLetterOption{DIN}}
-%%% From File: $Id: scrkernel-language.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-language.dtx 4107 2024-04-10 17:24:53Z kohm $
%%% (run: option)
\newif\if@orgdate\@orgdatetrue
\KOMA@key{numericaldate}[true]{%
@@ -147,11 +149,11 @@
\KOMA@DeclareDeprecatedOption{orgdate}{numericaldate=false}
%%% From File: $Id: scrkernel-fonts.dtx 4034 2023-04-20 08:03:46Z kohm $
%%% (run: option)
-%%% From File: $Id: scrkernel-variables.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-variables.dtx 4129 2024-10-23 19:02:04Z texhackse $
%%% (run: option)
%%% From File: $Id: scrkernel-pseudolengths.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: option)
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: options)
\providecommand*{\PaperNameToSize}[2][warning]{%
\Ifstr{#2}{letter}{%
@@ -244,7 +246,7 @@
}
%%% From File: $Id: scrkernel-pagestyles.dtx 4058 2023-06-16 08:32:27Z kohm $
%%% (run: option)
-%%% From File: $Id: scrkernel-notepaper.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-notepaper.dtx 4113 2024-06-07 08:20:20Z kohm $
%%% (run: option)
\KOMA@ifkey{firsthead}{@firsthead}
\KOMAExecuteOptions{firsthead=true}
@@ -372,6 +374,7 @@
\begingroup
\KOMA@set@ncmdkey{locfield}{@tempa}{{wide}{0},{narrow}{1}}{#1}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \aftergroup\FamilyKeyStateProcessed
\ifcase\@tempa
\endgroup
\@bigloctrue
@@ -752,7 +755,7 @@
\def\scr@symbol@fax{\FAX}%
\def\scr@symbol@email{\Email}%
\def\scr@symbol@mobilephone{\Mobilefone}%
- \def\scr@symbol@www{\@empty}%
+ \let\scr@symbol@www\@empty
}{%
\def\scr@symbol@phone{\faPhone}%
\def\scr@symbol@fax{\faFax}%
@@ -814,12 +817,12 @@
\newcommand*{\scr@symbol@www}{\undefined}
%%% From File: $Id: scrkernel-addressfiles.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: option)
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: execoption)
\KOMAProcessOptions\relax
%%% From File: $Id: scrkernel-fonts.dtx 4034 2023-04-20 08:03:46Z kohm $
%%% (run: body)
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: body)
\providecommand*{\scr@endstrut}{\unskip\ifhmode\nobreak\strut\fi}
%%% From File: $Id: scrkernel-letterclassoptions.dtx 4032 2023-04-17 09:45:11Z kohm $
@@ -995,7 +998,7 @@
\newcommand*{\LetterOptionNeedsPapersize}[2]{%
\edef\LOPNP@size{#2}\edef\LOPNP@option{#1}%
}
-%%% From File: $Id: scrkernel-language.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-language.dtx 4107 2024-04-10 17:24:53Z kohm $
%%% (run: body)
\newcommand*{\g@addnumerical@date}[2]{%
\@ifundefined{date#1}{%
@@ -1006,12 +1009,31 @@
}%
}{%
\expandafter\g@addto@macro\csname date#1\endcsname{%
- \let\sym@date=\today%
\def\num@date{#2}%
- \def\today{\if@orgdate\sym@date\else\num@date\fi}%
+ \ifx\today\sym@num@date
+ \@ifundefined{DTMtoday}{%
+ \PackageWarning{scrletter}
+ {%
+ no original date found for language `#1'\MessageBreak
+ --> using numerical date%
+ }%
+ \let\sym@date\num@date
+ }{%
+ \begingroup
+ \gdef\scr@global@tempa{\let\sym@date\DTMtoday}%
+ \def\today{\gdef\scr@global@tempa{\let\sym@date\num@date}}%
+ \sbox\@tempboxa{\sym@date}%
+ \endgroup
+ \scr@global@tempa
+ }%
+ \else
+ \DeclareCommandCopy{\sym@date}{\today}%
+ \let\today=\sym@num@date
+ \fi
}%
}%
}
+\newcommand*{\sym@num@date}{\if@orgdate\sym@date\else\num@date\fi}
\AtBeginDocument{%
\@ifundefined{captionsenglish}{\let\captionsenglish\@empty}{}%
\@ifundefined{dateenglish}{\def\dateenglish{%
@@ -1566,26 +1588,20 @@
\fi
\fi
}
-%%% From File: $Id: scrkernel-variables.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-variables.dtx 4129 2024-10-23 19:02:04Z texhackse $
%%% (run: body)
-\newcommand*{\newkomavar}{%
- \kernel@ifstar {\@tempswatrue\@newkomavar}{\@tempswafalse\@newkomavar}}
-\newcommand*{\@newkomavar}[2][\relax]{%
- \@ifundefined{scr@#2@name}{%
- \@ifundefined{scr@#2@var}{%
- \begingroup
- \def\@tempa{#1}\def\@tempb{\relax}%
- \ifx\@tempa\@tempb\endgroup\else
- \endgroup\@namedef{scr@#2@name}{#1}%
- \fi%
- \expandafter\let\csname scr@#2@var\endcsname=\@empty
- \if@tempswa\addtoreffields{#2}\fi
+\NewDocumentCommand{\newkomavar}{som}{%
+ \@ifundefined{scr@#3@name}{%
+ \@ifundefined{scr@#3@var}{%
+ \IfValueT{#2}{\@namedef{scr@#3@name}{#2}}%
+ \@namedef{scr@#3@var}{}%
+ \IfBooleanT{#1}{\addtoreffields{#3}}%
}{%
\PackageError{scrletter}
{%
This should never happen%
}{%
- The contents of the KOMA-Script variable `#2'\MessageBreak
+ The description of the KOMA-Script variable `#3'\MessageBreak
is undefined, but the name of the variable is
defined.\MessageBreak
This should never happen. So someone crashs me!%
@@ -1594,38 +1610,19 @@
}{%
\PackageError{scrletter}
{%
- Variable `#2' already defined%
+ Variable `#3' already defined%
}{%
I'll ignore this command, if you'll continue.%
}%
}%
}
-\newcommand*{\setkomavar}{%
- \kernel@ifstar {\@setkomaname}{\@setkomavar}}
-\newcommand*{\@setkomavar}[1]{%
- \kernel@ifnextchar [%]
- {\@@setkomavar{#1}}{\@@setkomavar{#1}[\relax]}}
-\newcommand*{\@setkomaname}[2]{%
- \@ifundefined{scr@#1@var}{%
- \@komavar@err{set}{#1}%
- }{%
- \@namedef{scr@#1@name}{#2}%
- \csname scr@#1@postsetname\endcsname
- }%
-}
-\newcommand*{\@@setkomavar}{}
-\long\def\@@setkomavar#1[#2]#3{%
- \@ifundefined{scr@#1@var}{%
- \@komavar@err{set}{#1}%
+\NewDocumentCommand{\setkomavar}{smo+m}{%
+ \Ifkomavar{#2}{%
+ \IfValueT{#3}{\@namedef{scr@#2@name}{#3}}%
+ \@namedef{scr@#2@\IfBooleanTF{#1}{name}{var}}{#4}%
+ \csname scr@#2@postset\IfBooleanTF{#1}{name}{var}\endcsname
}{%
- \@namedef{scr@#1@var}{#3}%
- \csname scr@#1@postsetvar\endcsname
- \begingroup
- \def\@tempa{#2}\def\@tempb{\relax}%
- \ifx\@tempa\@tempb\endgroup\else
- \endgroup\@namedef{scr@#1@name}{#2}%
- \csname scr@#1@postsetname\endcsname
- \fi
+ \@koma@var@err{set}{#2}%
}%
}
\newcommand*{\@komavar@err}[2]{%
@@ -1640,20 +1637,15 @@
you do this.%
}%
}
-\DeclareRobustCommand*{\usekomavar}{%
- \kernel@ifstar {\@usekomaname}{\@usekomavar}}
-\newcommand*{\@usekomavar}[2][\@firstofone]{%
- \@ifundefined{scr@#2@var}{%
- \@komavar@err{use}{#2}%
- }{%
- #1{\@nameuse{scr@#2@var}}%
- }%
-}
-\newcommand*{\@usekomaname}[2][\@firstofone]{%
- \@ifundefined{scr@#2@var}{%
- \@komavar@err{use}{#2}%
+\NewDocumentCommand{\usekomavar}{sO{\@firstofone}m}{%
+ \Ifkomavar{#3}{%
+ \IfBooleanTF{#1}{%
+ #2{\@nameuse{scr@#3@name}}%
+ }{%
+ #2{\@nameuse{scr@#3@var}}%
+ }%
}{%
- #1{\@nameuse{scr@#2@name}}%
+ \@koma@var@err{use}{#3}%
}%
}
\newcommand*{\ifkomavar}{%
@@ -1681,35 +1673,41 @@
}%
\Ifkomavarempty
}
-\DeclareRobustCommand*{\Ifkomavarempty}{%
- \begingroup
- \kernel@ifstar {\@tempswatrue\@ifkomavarempty}%
- {\@tempswafalse\@ifkomavarempty}%
-}
-\newcommand{\@ifkomavarempty}[1]{%
- \Ifkomavar{#1}{%
- \if@tempswa
- \@ifundefined{scr@#1@name}{%
- \aftergroup\@firstoftwo
- }{%
- \expandafter\ifx\csname scr@#1@name\endcsname\@empty
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- }%
- \else
- \expandafter\ifx\csname scr@#1@var\endcsname\@empty
- \aftergroup\@firstoftwo
+\NewDocumentCommand{\Ifkomavarempty}{sm}{%
+ \Ifkomavar{#2}{%
+ \IfBooleanTF{#1}{%
+ \@ifundefined{scr@#2@name}\@firstoftwo{%
+ \expandafter\ifx\csname scr@#2@name\endcsname\@empty
+ \expandafter\@firstoftwo
\else
- \aftergroup\@secondoftwo
+ \expandafter\@secondoftwo
\fi
+ }%
+ }{%
+ \expandafter\ifx\csname scr@#2@var\endcsname\@empty
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
\fi
+ }
+ }{%
+ \@komavar@err{use}{#2}%
+ \@gobbletwo
+ }%
+}
+\NewDocumentCommand{\Ifkomavarxempty}{sm}{%
+ \Ifkomavar{#2}{%
+ \IfBooleanTF{#1}{%
+ \@ifundefined{scr@#2@name}\@firstoftwo{%
+ \Ifstr{\@nameuse{scr@#2@name}}{}%
+ }%
}{%
- \@komavar@err{use}{#1}%
- \aftergroup\@gobbletwo
+ \Ifstr{\@nameuse{scr@#2@var}}{}%
}%
- \endgroup
+ }{%
+ \@komavar@err{use}{#2}%
+ \@gobbletwo
+ }%
}
\newcommand*{\foreachkomavar}[2]{%
\@for \reserved@a:=#1\do{%
@@ -1902,7 +1900,7 @@
\rofoot[\ifnum\@pageat=5 \pagemark\fi]%
{}%
}
-%%% From File: $Id: scrkernel-notepaper.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-notepaper.dtx 4113 2024-06-07 08:20:20Z kohm $
%%% (run: body)
\newkomavar{firsthead}
@@ -2207,7 +2205,6 @@
}
\newcommand*{\@foldmarks}{%
\if@fold%
- \typeout{Foldmarks: yes}%
\move@topt
\ifdim \useplength{pfoldmarklength}=\z@
\setplength{pfoldmarklength}{4mm}%
@@ -2235,8 +2232,6 @@
\@hfoldmark{B}%
\@vfoldmark{L}%
\move@frompt
- \else
- \typeout{Foldmarks: no}%
\fi%
}
\newif\if@savevbox@warning\@savevbox@warningtrue
@@ -2263,7 +2258,6 @@
}
\newcommand*{\@firstheadfootfield}{%
\if@firsthead
- \typeout{Head of first page}%
\move@topt\vskip\useplength{firstheadvpos}%
\vb@t@z{%
\rlap{\move@topl
@@ -2299,11 +2293,9 @@
}%
\vskip-\useplength{firstheadvpos}\move@frompt
\else
- \typeout{No head at first page}%
\fi
\move@topt
\if@firstfoot
- \typeout{Foot of first page}%
\vb@t@z{%
\rlap{\move@topl
\ifdim\useplength{firstfoothpos}<\paperwidth
@@ -2333,8 +2325,6 @@
}%
}%
}%
- \else
- \typeout{No foot at first page}%
\fi
\move@frompt%
{%
@@ -2354,7 +2344,6 @@
}
\newcommand*{\@addrfield}{%
\ifcase \ifnum\@afieldmode=5 \@ne\else\@afieldmode\fi\relax
- \typeout{Address: No}%
\or
\begingroup%
\if@baddr
@@ -2375,7 +2364,6 @@
\or
\edef\@tempa{\@tempa\@tempb A-Priority}\def\@tempb{,\space}%
\fi
- \typeout{Address (\@tempa\@tempb addressee)}%
\endgroup%
\move@topt\vskip\useplength{toaddrvpos}%
\vb@t@z{{\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative
@@ -2462,7 +2450,6 @@
\or
\edef\@tempa{\@tempa\@tempb A-Priority}\def\@tempb{,\space}%
\fi
- \typeout{Address (\@tempa\@tempb addressee)}%
\endgroup%
\move@topt\vskip\useplength{toaddrvpos}%
\vb@t@z{{%
@@ -2616,9 +2603,7 @@
\Ifkomavarempty{location}{\setkomavar{location}{\null}}{}%
\fi
\Ifkomavarempty{location}{%
- \typeout{Location field: empty}%
}{%
- \typeout{Location field: yes}%
\ifdim \useplength{lochpos}=\z@%
\setplength{lochpos}{\useplength{toaddrhpos}}%
\fi
@@ -2860,9 +2845,7 @@
}
\newcommand*{\@makelettertitle}{%
\Ifkomavarempty{title}{%
- \typeout{Title: no}%
}{%
- \typeout{Title: yes}%
{\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative
\centering\LARGE\usekomafont{lettertitle}\usekomavar{title}\par}%
\vskip\baselineskip%
@@ -2871,19 +2854,15 @@
\newcommand*{\@subjfield}{{%
\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative
\Ifkomavarempty{subject}{%
- \typeout{Subject: no}%
}{%
\ifx\raggedsubject\@empty
\ifdim\useplength{subjectvpos}=\z@
\if@subjafter%
- \typeout{Subject: after opening}%
\let\raggedsubject\centering%
\else
- \typeout{Subject: before opening}%
\def\raggedsubject{\noindent\@hangfrom}%
\fi
\else
- \typeout{Subject: at absolute vertical position}%
\def\raggedsubject{\noindent\@hangfrom}%
\fi
\fi
@@ -3125,17 +3104,25 @@
\newkomavar{backaddressseparator}
\setkomavar{backaddressseparator}{,\nobreakspace}
\newkomavar[\if@scrsymbols\scr@symbol@phone\else\phonename\fi]{phoneseparator}
-\setkomavar{phoneseparator}{\if@scrsymbols\else:\fi\nobreakspace}
+\setkomavar{phoneseparator}{%
+ \Ifkomavarxempty*{phoneseparator}{}{\if@scrsymbols\else:\fi\nobreakspace}%
+}
\newkomavar[%
\if@scrsymbols\scr@symbol@mobilephone\else\mobilephonename\fi
]{mobilephoneseparator}
\setkomavar{mobilephoneseparator}{\usekomavar{phoneseparator}}
\newkomavar[\if@scrsymbols\scr@symbol@fax\else\faxname\fi]{faxseparator}
-\setkomavar{faxseparator}{\if@scrsymbols\else:\fi\nobreakspace}
+\setkomavar{faxseparator}{%
+ \Ifkomavarxempty*{faxseparator}{}{\if@scrsymbols\else:\fi\nobreakspace}%
+}
\newkomavar[\if@scrsymbols\scr@symbol@email\else\emailname\fi]{emailseparator}
-\setkomavar{emailseparator}{\if@scrsymbols\else:\fi\nobreakspace}
+\setkomavar{emailseparator}{%
+ \Ifkomavarxempty*{emailseparator}{}{\if@scrsymbols\else:\fi\nobreakspace}%
+}
\newkomavar[\if@scrsymbols\scr@symbol@www\else\wwwname\fi]{urlseparator}
-\setkomavar{urlseparator}{\if@scrsymbols\else:\nobreakspace\fi}
+\setkomavar{urlseparator}{%
+ \Ifkomavarxempty*{urlseparator}{}{\if@scrsymbols\else:\fi\nobreakspace}%
+}
\newkomavar{zipcodeseparator}
\setkomavar{zipcodeseparator}{\,--\,}
\newkomavar[\headfromname]{fromname}
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrlfile-hook-3.34.sty b/Master/texmf-dist/tex/latex/koma-script/scrlfile-hook-3.34.sty
index be28704e714..8c3386f60a8 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrlfile-hook-3.34.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scrlfile-hook-3.34.sty
@@ -41,7 +41,7 @@
%%
%%% From File: $Id: scrlfile-hook.dtx$
\ProvidesPackage{scrlfile-hook-3.34}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
package
(using LaTeX hooks)]
\@ifundefined{IfFormatAtLeastTF}{%
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty b/Master/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty
index ed3b81a451f..c4d3a1765ed 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty
@@ -41,7 +41,7 @@
%%
%%% From File: $Id: scrlfile-hook.dtx$
\ProvidesPackage{scrlfile-hook}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
package
(using LaTeX hooks)]
\@ifundefined{IfFormatAtLeastTF}{%
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrlfile-patcholdlatex.sty b/Master/texmf-dist/tex/latex/koma-script/scrlfile-patcholdlatex.sty
index b5046e193cb..434b6a43b50 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrlfile-patcholdlatex.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scrlfile-patcholdlatex.sty
@@ -41,7 +41,7 @@
%%
%%% From File: $Id: scrlfile-patcholdlatex.dtx 3874 2022-06-05 10:38:02Z kohm $
\ProvidesPackage{scrlfile-patcholdlatex}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
package
(patching old LaTeX kernels)]
\@ifundefined{IfFormatAtLeastTF}{}{%
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrlfile.sty b/Master/texmf-dist/tex/latex/koma-script/scrlfile.sty
index 3dfa9be6ae2..74ca12e7911 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrlfile.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scrlfile.sty
@@ -41,7 +41,7 @@
%%
%%% From File: $Id: scrlfile.dtx 4032 2023-04-17 09:45:11Z kohm $
\ProvidesPackage{scrlfile}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
package
(file load hooks)]
\@ifundefined{IfFormatAtLeastTF}{%
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrlogo.sty b/Master/texmf-dist/tex/latex/koma-script/scrlogo.sty
index d8397b31618..6612f093d9a 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrlogo.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scrlogo.sty
@@ -40,7 +40,7 @@
%%
%%% From File: $Id: scrlogo.dtx 4032 2023-04-17 09:45:11Z kohm $
\ProvidesPackage{scrlogo}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
package
(logo)]
\@ifundefined{KOMAScript}{%
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrlttr2.cls b/Master/texmf-dist/tex/latex/koma-script/scrlttr2.cls
index 3b4f674a440..6966c359eb8 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrlttr2.cls
+++ b/Master/texmf-dist/tex/latex/koma-script/scrlttr2.cls
@@ -73,30 +73,32 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\providecommand*{\@CheckKOMAScriptVersion}{%
+ \begingroup
+ \ExplSyntaxOff
+ \@@CheckKOMAScriptVersion
+}
+\providecommand*{\@@CheckKOMAScriptVersion}[1]{%
+ \@ifundefined{KOMAScriptVersion}{%
\gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ }{%
\def\@tempa{#1}%
\ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
+ \GenericWarning{\space\@spaces\@spaces\@spaces\@spaces}{%
+ Version warning:
+ \noexpand\KOMAScriptVersion is
+ `\csname KOMAScriptVersion\endcsname',\MessageBreak
but `#1' was expected!\MessageBreak
You should not use classes, packages or files
from\MessageBreak
- different KOMA-Script versions%
+ different KOMA-Script versions\@gobble
}%
\fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+ }%
+ \endgroup
+}
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
\providecommand*{\scr@clsextension}{\@clsextension}
\AtBeginDocument{%
\let\scr@clsextension\@clsextension
@@ -108,13 +110,13 @@
letter%
}
\ProvidesClass{\KOMAClassName}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
document class (\ClassName)%
]
-%%% From File: $Id: scrkernel-basics.dtx 4051 2023-04-26 16:01:28Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 4074 2023-07-14 15:56:59Z kohm $
%%% (run: load)
\RequirePackage{scrkbase}[\KOMAScriptVersion]
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: init)
\newcommand*
{\scr@compatibility}{\scr@v@last}
@@ -203,10 +205,12 @@
\@namedef{scr@v@3.39}{20}
\@namedef{scr@v@3.40}{20}
\@namedef{scr@v@3.41}{21}
-\@namedef{scr@v@last}{21}
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+\@namedef{scr@v@3.42}{21}
+\@namedef{scr@v@3.43}{3430}
+\@namedef{scr@v@last}{3430}
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: init)
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: option)
\KOMA@key{version}[last]{%
\scr@ifundefinedorrelax{scr@v@#1}{%
@@ -238,7 +242,7 @@
old KOMA-Script release. However, in that case you\MessageBreak
could also need old releases of other packages and\MessageBreak
even of the LaTeX kernel.\MessageBreak
- You should also note, that the KOMA-Script developers\MessageBreak
+ Please also note, that the KOMA-Script developers\MessageBreak
refuse support for documents using `version=#1'.\MessageBreak
We recommend to eliminate all deprecated options\MessageBreak
and commands. We also recommend to not use option\MessageBreak
@@ -275,7 +279,7 @@
\newcommand*{\scr@v@is@eq}[1]{%
\scr@compatibility=\@nameuse{scr@v@#1}
}
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: option)
\KOMA@key{draft}[true]{%
\KOMA@set@ifkey{draft}{@tempswa}{#1}%
@@ -350,7 +354,7 @@
}
\AtEndOfClass
{\LoadLetterOption{DIN}}
-%%% From File: $Id: scrkernel-language.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-language.dtx 4107 2024-04-10 17:24:53Z kohm $
%%% (run: option)
\newif\if@orgdate\@orgdatetrue
\KOMA@key{numericaldate}[true]{%
@@ -523,11 +527,11 @@
{sfdefaults}{\if@sfdefaults true\else false\fi}%
\fi
}
-%%% From File: $Id: scrkernel-variables.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-variables.dtx 4129 2024-10-23 19:02:04Z texhackse $
%%% (run: option)
%%% From File: $Id: scrkernel-pseudolengths.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: option)
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: options)
\KOMA@key{twoside}[true]{%
\if@atdocument\else\PassOptionsToPackage{twoside=#1}{typearea}\fi%
@@ -1004,7 +1008,7 @@
\relax}
%%% From File: $Id: scrkernel-listsandtabulars.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: option)
-%%% From File: $Id: scrkernel-notepaper.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-notepaper.dtx 4113 2024-06-07 08:20:20Z kohm $
%%% (run: option)
\KOMA@ifkey{firsthead}{@firsthead}
\KOMAExecuteOptions{firsthead=true}
@@ -1132,6 +1136,7 @@
\begingroup
\KOMA@set@ncmdkey{locfield}{@tempa}{{wide}{0},{narrow}{1}}{#1}%
\ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \aftergroup\FamilyKeyStateProcessed
\ifcase\@tempa
\endgroup
\@bigloctrue
@@ -1500,7 +1505,7 @@
\def\scr@symbol@fax{\FAX}%
\def\scr@symbol@email{\Email}%
\def\scr@symbol@mobilephone{\Mobilefone}%
- \def\scr@symbol@www{\@empty}%
+ \let\scr@symbol@www\@empty
}{%
\def\scr@symbol@phone{\faPhone}%
\def\scr@symbol@fax{\faFax}%
@@ -1562,13 +1567,13 @@
\newcommand*{\scr@symbol@www}{\undefined}
%%% From File: $Id: scrkernel-addressfiles.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: option)
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: execoption)
\KOMAExecuteOptions{%
parskip=false,%
}
\KOMAProcessOptions\relax
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: body)
\AtBeginDocument{%
\begingroup
@@ -2129,7 +2134,7 @@
\@nomath\sfb}
\DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal}
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: body)
\setlength{\skip\@mpfootins}{\skip\footins}
\setlength\fboxsep{3\p@}
@@ -2165,9 +2170,9 @@
\endgroup
\edef\is@thispageodd@setlabel{%
\if@filesw
- \unexpanded{\protected@write\@auxout{\let\arabic\relax}}{%
+ \unexpanded{\protected@write\@auxout{\let\number\relax}}{%
\noexpand\string
- \noexpand\new@tpo@label{\scr@tpo}{\noexpand\arabic{page}}}%
+ \noexpand\new@tpo@label{\scr@tpo}{\noexpand\number\c@page}}%
\fi
\noexpand\def\noexpand\is@thispageodd@setlabel
{\unexpanded\expandafter{\is@thispageodd@setlabel}}%
@@ -2222,7 +2227,7 @@
\reserved@a
\ifin@\expandafter\@gobble\else\expandafter\@firstofone\fi
}{%
- \BeforePackage{#1}{%
+ \expandafter\providecommand\csname scr@class@#1@warning\endcsname{%
\ClassWarning{\KOMAClassName}{%
Usage of package `#1' together\MessageBreak
with a KOMA-Script class is not recommended.\MessageBreak
@@ -2233,6 +2238,9 @@
package `#1'%
}%
}%
+ \BeforePackage{#1}{%
+ \csname scr@class@#1@warning\endcsname
+ }%
}%
}%
\scr@package@not@recommended{emptypage}{%
@@ -2428,7 +2436,7 @@
\newcommand*{\LetterOptionNeedsPapersize}[2]{%
\edef\LOPNP@size{#2}\edef\LOPNP@option{#1}%
}
-%%% From File: $Id: scrkernel-language.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-language.dtx 4107 2024-04-10 17:24:53Z kohm $
%%% (run: body)
\newcommand*{\g@addnumerical@date}[2]{%
\@ifundefined{date#1}{%
@@ -2439,12 +2447,31 @@
}%
}{%
\expandafter\g@addto@macro\csname date#1\endcsname{%
- \let\sym@date=\today%
\def\num@date{#2}%
- \def\today{\if@orgdate\sym@date\else\num@date\fi}%
+ \ifx\today\sym@num@date
+ \@ifundefined{DTMtoday}{%
+ \ClassWarning{scrlttr2}
+ {%
+ no original date found for language `#1'\MessageBreak
+ --> using numerical date%
+ }%
+ \let\sym@date\num@date
+ }{%
+ \begingroup
+ \gdef\scr@global@tempa{\let\sym@date\DTMtoday}%
+ \def\today{\gdef\scr@global@tempa{\let\sym@date\num@date}}%
+ \sbox\@tempboxa{\sym@date}%
+ \endgroup
+ \scr@global@tempa
+ }%
+ \else
+ \DeclareCommandCopy{\sym@date}{\today}%
+ \let\today=\sym@num@date
+ \fi
}%
}%
}
+\newcommand*{\sym@num@date}{\if@orgdate\sym@date\else\num@date\fi}
\AtBeginDocument{%
\@ifundefined{captionsenglish}{\let\captionsenglish\@empty}{}%
\@ifundefined{dateenglish}{\def\dateenglish{%
@@ -2999,26 +3026,20 @@
\fi
\fi
}
-%%% From File: $Id: scrkernel-variables.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-variables.dtx 4129 2024-10-23 19:02:04Z texhackse $
%%% (run: body)
-\newcommand*{\newkomavar}{%
- \kernel@ifstar {\@tempswatrue\@newkomavar}{\@tempswafalse\@newkomavar}}
-\newcommand*{\@newkomavar}[2][\relax]{%
- \@ifundefined{scr@#2@name}{%
- \@ifundefined{scr@#2@var}{%
- \begingroup
- \def\@tempa{#1}\def\@tempb{\relax}%
- \ifx\@tempa\@tempb\endgroup\else
- \endgroup\@namedef{scr@#2@name}{#1}%
- \fi%
- \expandafter\let\csname scr@#2@var\endcsname=\@empty
- \if@tempswa\addtoreffields{#2}\fi
+\NewDocumentCommand{\newkomavar}{som}{%
+ \@ifundefined{scr@#3@name}{%
+ \@ifundefined{scr@#3@var}{%
+ \IfValueT{#2}{\@namedef{scr@#3@name}{#2}}%
+ \@namedef{scr@#3@var}{}%
+ \IfBooleanT{#1}{\addtoreffields{#3}}%
}{%
\ClassError{scrlttr2}
{%
This should never happen%
}{%
- The contents of the KOMA-Script variable `#2'\MessageBreak
+ The description of the KOMA-Script variable `#3'\MessageBreak
is undefined, but the name of the variable is
defined.\MessageBreak
This should never happen. So someone crashs me!%
@@ -3027,38 +3048,19 @@
}{%
\ClassError{scrlttr2}
{%
- Variable `#2' already defined%
+ Variable `#3' already defined%
}{%
I'll ignore this command, if you'll continue.%
}%
}%
}
-\newcommand*{\setkomavar}{%
- \kernel@ifstar {\@setkomaname}{\@setkomavar}}
-\newcommand*{\@setkomavar}[1]{%
- \kernel@ifnextchar [%]
- {\@@setkomavar{#1}}{\@@setkomavar{#1}[\relax]}}
-\newcommand*{\@setkomaname}[2]{%
- \@ifundefined{scr@#1@var}{%
- \@komavar@err{set}{#1}%
- }{%
- \@namedef{scr@#1@name}{#2}%
- \csname scr@#1@postsetname\endcsname
- }%
-}
-\newcommand*{\@@setkomavar}{}
-\long\def\@@setkomavar#1[#2]#3{%
- \@ifundefined{scr@#1@var}{%
- \@komavar@err{set}{#1}%
+\NewDocumentCommand{\setkomavar}{smo+m}{%
+ \Ifkomavar{#2}{%
+ \IfValueT{#3}{\@namedef{scr@#2@name}{#3}}%
+ \@namedef{scr@#2@\IfBooleanTF{#1}{name}{var}}{#4}%
+ \csname scr@#2@postset\IfBooleanTF{#1}{name}{var}\endcsname
}{%
- \@namedef{scr@#1@var}{#3}%
- \csname scr@#1@postsetvar\endcsname
- \begingroup
- \def\@tempa{#2}\def\@tempb{\relax}%
- \ifx\@tempa\@tempb\endgroup\else
- \endgroup\@namedef{scr@#1@name}{#2}%
- \csname scr@#1@postsetname\endcsname
- \fi
+ \@koma@var@err{set}{#2}%
}%
}
\newcommand*{\@komavar@err}[2]{%
@@ -3073,20 +3075,15 @@
you do this.%
}%
}
-\DeclareRobustCommand*{\usekomavar}{%
- \kernel@ifstar {\@usekomaname}{\@usekomavar}}
-\newcommand*{\@usekomavar}[2][\@firstofone]{%
- \@ifundefined{scr@#2@var}{%
- \@komavar@err{use}{#2}%
- }{%
- #1{\@nameuse{scr@#2@var}}%
- }%
-}
-\newcommand*{\@usekomaname}[2][\@firstofone]{%
- \@ifundefined{scr@#2@var}{%
- \@komavar@err{use}{#2}%
+\NewDocumentCommand{\usekomavar}{sO{\@firstofone}m}{%
+ \Ifkomavar{#3}{%
+ \IfBooleanTF{#1}{%
+ #2{\@nameuse{scr@#3@name}}%
+ }{%
+ #2{\@nameuse{scr@#3@var}}%
+ }%
}{%
- #1{\@nameuse{scr@#2@name}}%
+ \@koma@var@err{use}{#3}%
}%
}
\newcommand*{\ifkomavar}{%
@@ -3114,35 +3111,41 @@
}%
\Ifkomavarempty
}
-\DeclareRobustCommand*{\Ifkomavarempty}{%
- \begingroup
- \kernel@ifstar {\@tempswatrue\@ifkomavarempty}%
- {\@tempswafalse\@ifkomavarempty}%
-}
-\newcommand{\@ifkomavarempty}[1]{%
- \Ifkomavar{#1}{%
- \if@tempswa
- \@ifundefined{scr@#1@name}{%
- \aftergroup\@firstoftwo
- }{%
- \expandafter\ifx\csname scr@#1@name\endcsname\@empty
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- }%
- \else
- \expandafter\ifx\csname scr@#1@var\endcsname\@empty
- \aftergroup\@firstoftwo
+\NewDocumentCommand{\Ifkomavarempty}{sm}{%
+ \Ifkomavar{#2}{%
+ \IfBooleanTF{#1}{%
+ \@ifundefined{scr@#2@name}\@firstoftwo{%
+ \expandafter\ifx\csname scr@#2@name\endcsname\@empty
+ \expandafter\@firstoftwo
\else
- \aftergroup\@secondoftwo
+ \expandafter\@secondoftwo
\fi
+ }%
+ }{%
+ \expandafter\ifx\csname scr@#2@var\endcsname\@empty
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
\fi
+ }
+ }{%
+ \@komavar@err{use}{#2}%
+ \@gobbletwo
+ }%
+}
+\NewDocumentCommand{\Ifkomavarxempty}{sm}{%
+ \Ifkomavar{#2}{%
+ \IfBooleanTF{#1}{%
+ \@ifundefined{scr@#2@name}\@firstoftwo{%
+ \Ifstr{\@nameuse{scr@#2@name}}{}%
+ }%
}{%
- \@komavar@err{use}{#1}%
- \aftergroup\@gobbletwo
+ \Ifstr{\@nameuse{scr@#2@var}}{}%
}%
- \endgroup
+ }{%
+ \@komavar@err{use}{#2}%
+ \@gobbletwo
+ }%
}
\newcommand*{\foreachkomavar}[2]{%
\@for \reserved@a:=#1\do{%
@@ -3303,7 +3306,7 @@
Internal macro `\string\@addtoplength' is deprecated.\MessageBreak
Please use `\string\addtoplength' instead}%
\addtoplength}
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: body)
\let\@BCOR =\relax
\let\@@BCOR =\relax
@@ -3906,7 +3909,7 @@
\setlength\arrayrulewidth{.4\p@}
\setlength\doublerulesep{2\p@}
\setlength\tabbingsep{\labelsep}
-%%% From File: $Id: scrkernel-notepaper.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-notepaper.dtx 4113 2024-06-07 08:20:20Z kohm $
%%% (run: body)
\newkomavar{firsthead}
@@ -4260,7 +4263,6 @@
}
\newcommand*{\@foldmarks}{%
\if@fold%
- \typeout{Foldmarks: yes}%
\move@topt
\ifdim \useplength{pfoldmarklength}=\z@
\setplength{pfoldmarklength}{4mm}%
@@ -4288,8 +4290,6 @@
\@hfoldmark{B}%
\@vfoldmark{L}%
\move@frompt
- \else
- \typeout{Foldmarks: no}%
\fi%
}
\newif\if@savevbox@warning\@savevbox@warningtrue
@@ -4316,7 +4316,6 @@
}
\newcommand*{\@firstheadfootfield}{%
\if@firsthead
- \typeout{Head of first page}%
\move@topt\vskip\useplength{firstheadvpos}%
\vb@t@z{%
\rlap{\move@topl
@@ -4352,11 +4351,9 @@
}%
\vskip-\useplength{firstheadvpos}\move@frompt
\else
- \typeout{No head at first page}%
\fi
\move@topt
\if@firstfoot
- \typeout{Foot of first page}%
\vb@t@z{%
\rlap{\move@topl
\ifdim\useplength{firstfoothpos}<\paperwidth
@@ -4386,8 +4383,6 @@
}%
}%
}%
- \else
- \typeout{No foot at first page}%
\fi
\move@frompt%
{%
@@ -4407,7 +4402,6 @@
}
\newcommand*{\@addrfield}{%
\ifcase \ifnum\@afieldmode=5 \@ne\else\@afieldmode\fi\relax
- \typeout{Address: No}%
\or
\begingroup%
\if@baddr
@@ -4428,7 +4422,6 @@
\or
\edef\@tempa{\@tempa\@tempb A-Priority}\def\@tempb{,\space}%
\fi
- \typeout{Address (\@tempa\@tempb addressee)}%
\endgroup%
\move@topt\vskip\useplength{toaddrvpos}%
\vb@t@z{{\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative
@@ -4515,7 +4508,6 @@
\or
\edef\@tempa{\@tempa\@tempb A-Priority}\def\@tempb{,\space}%
\fi
- \typeout{Address (\@tempa\@tempb addressee)}%
\endgroup%
\move@topt\vskip\useplength{toaddrvpos}%
\vb@t@z{{%
@@ -4669,9 +4661,7 @@
\Ifkomavarempty{location}{\setkomavar{location}{\null}}{}%
\fi
\Ifkomavarempty{location}{%
- \typeout{Location field: empty}%
}{%
- \typeout{Location field: yes}%
\ifdim \useplength{lochpos}=\z@%
\setplength{lochpos}{\useplength{toaddrhpos}}%
\fi
@@ -4913,9 +4903,7 @@
}
\newcommand*{\@makelettertitle}{%
\Ifkomavarempty{title}{%
- \typeout{Title: no}%
}{%
- \typeout{Title: yes}%
{\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative
\centering\LARGE\usekomafont{lettertitle}\usekomavar{title}\par}%
\vskip\baselineskip%
@@ -4924,19 +4912,15 @@
\newcommand*{\@subjfield}{{%
\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative
\Ifkomavarempty{subject}{%
- \typeout{Subject: no}%
}{%
\ifx\raggedsubject\@empty
\ifdim\useplength{subjectvpos}=\z@
\if@subjafter%
- \typeout{Subject: after opening}%
\let\raggedsubject\centering%
\else
- \typeout{Subject: before opening}%
\def\raggedsubject{\noindent\@hangfrom}%
\fi
\else
- \typeout{Subject: at absolute vertical position}%
\def\raggedsubject{\noindent\@hangfrom}%
\fi
\fi
@@ -5208,17 +5192,25 @@
\newkomavar{backaddressseparator}
\setkomavar{backaddressseparator}{,\nobreakspace}
\newkomavar[\if@scrsymbols\scr@symbol@phone\else\phonename\fi]{phoneseparator}
-\setkomavar{phoneseparator}{\if@scrsymbols\else:\fi\nobreakspace}
+\setkomavar{phoneseparator}{%
+ \Ifkomavarxempty*{phoneseparator}{}{\if@scrsymbols\else:\fi\nobreakspace}%
+}
\newkomavar[%
\if@scrsymbols\scr@symbol@mobilephone\else\mobilephonename\fi
]{mobilephoneseparator}
\setkomavar{mobilephoneseparator}{\usekomavar{phoneseparator}}
\newkomavar[\if@scrsymbols\scr@symbol@fax\else\faxname\fi]{faxseparator}
-\setkomavar{faxseparator}{\if@scrsymbols\else:\fi\nobreakspace}
+\setkomavar{faxseparator}{%
+ \Ifkomavarxempty*{faxseparator}{}{\if@scrsymbols\else:\fi\nobreakspace}%
+}
\newkomavar[\if@scrsymbols\scr@symbol@email\else\emailname\fi]{emailseparator}
-\setkomavar{emailseparator}{\if@scrsymbols\else:\fi\nobreakspace}
+\setkomavar{emailseparator}{%
+ \Ifkomavarxempty*{emailseparator}{}{\if@scrsymbols\else:\fi\nobreakspace}%
+}
\newkomavar[\if@scrsymbols\scr@symbol@www\else\wwwname\fi]{urlseparator}
-\setkomavar{urlseparator}{\if@scrsymbols\else:\nobreakspace\fi}
+\setkomavar{urlseparator}{%
+ \Ifkomavarxempty*{urlseparator}{}{\if@scrsymbols\else:\fi\nobreakspace}%
+}
\newkomavar{zipcodeseparator}
\setkomavar{zipcodeseparator}{\,--\,}
\newkomavar[\headfromname]{fromname}
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrreport.cls b/Master/texmf-dist/tex/latex/koma-script/scrreport.cls
index cb85666c92e..bae13b1f54d 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrreport.cls
+++ b/Master/texmf-dist/tex/latex/koma-script/scrreport.cls
@@ -38,30 +38,32 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\providecommand*{\@CheckKOMAScriptVersion}{%
+ \begingroup
+ \ExplSyntaxOff
+ \@@CheckKOMAScriptVersion
+}
+\providecommand*{\@@CheckKOMAScriptVersion}[1]{%
+ \@ifundefined{KOMAScriptVersion}{%
\gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ }{%
\def\@tempa{#1}%
\ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
+ \GenericWarning{\space\@spaces\@spaces\@spaces\@spaces}{%
+ Version warning:
+ \noexpand\KOMAScriptVersion is
+ `\csname KOMAScriptVersion\endcsname',\MessageBreak
but `#1' was expected!\MessageBreak
You should not use classes, packages or files
from\MessageBreak
- different KOMA-Script versions%
+ different KOMA-Script versions\@gobble
}%
\fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+ }%
+ \endgroup
+}
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
\providecommand*{\scr@clsextension}{\@clsextension}
\AtBeginDocument{%
\let\scr@clsextension\@clsextension
@@ -75,7 +77,7 @@
\newcommand*{\KOMALongClassFileName}{\KOMALongClassName.\@clsextension}
\edef\KOMALongClassFileName{\KOMALongClassFileName}
\ProvidesClass{\KOMALongClassName}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
document class (\ClassName)%
]
\let\ClassName\relax
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrreprt.cls b/Master/texmf-dist/tex/latex/koma-script/scrreprt.cls
index 9d4d0622269..8d6bc8f213e 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrreprt.cls
+++ b/Master/texmf-dist/tex/latex/koma-script/scrreprt.cls
@@ -84,30 +84,32 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\providecommand*{\@CheckKOMAScriptVersion}{%
+ \begingroup
+ \ExplSyntaxOff
+ \@@CheckKOMAScriptVersion
+}
+\providecommand*{\@@CheckKOMAScriptVersion}[1]{%
+ \@ifundefined{KOMAScriptVersion}{%
\gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ }{%
\def\@tempa{#1}%
\ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
+ \GenericWarning{\space\@spaces\@spaces\@spaces\@spaces}{%
+ Version warning:
+ \noexpand\KOMAScriptVersion is
+ `\csname KOMAScriptVersion\endcsname',\MessageBreak
but `#1' was expected!\MessageBreak
You should not use classes, packages or files
from\MessageBreak
- different KOMA-Script versions%
+ different KOMA-Script versions\@gobble
}%
\fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+ }%
+ \endgroup
+}
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
\providecommand*{\scr@clsextension}{\@clsextension}
\AtBeginDocument{%
\let\scr@clsextension\@clsextension
@@ -119,16 +121,16 @@
report%
}
\ProvidesClass{\KOMAClassName}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
document class (\ClassName)%
]
-%%% From File: $Id: scrkernel-basics.dtx 4051 2023-04-26 16:01:28Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 4074 2023-07-14 15:56:59Z kohm $
%%% (run: load)
\RequirePackage{scrkbase}[\KOMAScriptVersion]
-%%% From File: $Id: scrkernel-listsof.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-listsof.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: prepare)
\RequirePackage{tocbasic}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
]
\AtAddToTocList[\@currname.\@currext]{\setuptoc{\@currext}{onecolumn}}%
\AtAddToTocList[ToC]{\setuptoc{\@currext}{onecolumn}}%
@@ -141,7 +143,7 @@
\AtAddToTocList[float]{\setuptoc{\@currext}{onecolumn}}%
%%% From File: $Id: scrkernel-tocstyle.dtx 4060 2023-06-20 08:59:01Z kohm $
%%% (run: prepare)
-%%% From File: $Id: scrkernel-sections.dtx 4069 2023-06-29 08:55:54Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: prepare)
\newif\if@openright
\@openrightfalse
@@ -228,7 +230,7 @@
\newcommand*{\size@subparagraph}{}
\newcommand*{\scr@fnt@subparagraph}{\size@subparagraph}
\newcommand*{\sectfont}{\normalcolor\maybesffamily\bfseries}
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: init)
\newcommand*
{\scr@compatibility}{\scr@v@last}
@@ -317,10 +319,12 @@
\@namedef{scr@v@3.39}{20}
\@namedef{scr@v@3.40}{20}
\@namedef{scr@v@3.41}{21}
-\@namedef{scr@v@last}{21}
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+\@namedef{scr@v@3.42}{21}
+\@namedef{scr@v@3.43}{3430}
+\@namedef{scr@v@last}{3430}
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: init)
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: option)
\newif\if@scr@emulatestandardclasses
\let\scr@emulatestandardclassestrue\relax
@@ -377,7 +381,7 @@
old KOMA-Script release. However, in that case you\MessageBreak
could also need old releases of other packages and\MessageBreak
even of the LaTeX kernel.\MessageBreak
- You should also note, that the KOMA-Script developers\MessageBreak
+ Please also note, that the KOMA-Script developers\MessageBreak
refuse support for documents using `version=#1'.\MessageBreak
We recommend to eliminate all deprecated options\MessageBreak
and commands. We also recommend to not use option\MessageBreak
@@ -414,7 +418,7 @@
\newcommand*{\scr@v@is@eq}[1]{%
\scr@compatibility=\@nameuse{scr@v@#1}
}
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: option)
\KOMA@key{draft}[true]{%
\KOMA@set@ifkey{draft}{@tempswa}{#1}%
@@ -466,7 +470,7 @@
\KOMA@kav@add{\KOMAClassFileName}{overfullrule}{false}
\DeclareOption{leqno}{\input{leqno.clo}}
\DeclareOption{fleqn}{\input{fleqn.clo}}
-%%% From File: $Id: scrkernel-language.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-language.dtx 4107 2024-04-10 17:24:53Z kohm $
%%% (run: option)
%%% From File: $Id: scrkernel-fonts.dtx 4034 2023-04-20 08:03:46Z kohm $
%%% (run: option)
@@ -625,7 +629,7 @@
{sfdefaults}{\if@sfdefaults true\else false\fi}%
\fi
}
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: options)
\KOMA@key{twoside}[true]{%
\if@atdocument\else\PassOptionsToPackage{twoside=#1}{typearea}\fi%
@@ -957,7 +961,7 @@
\KOMA@DeclareDeprecatedOption{abstractoff}{abstract=false}
%%% From File: $Id: scrkernel-tocstyle.dtx 4060 2023-06-20 08:59:01Z kohm $
%%% (run: option)
-%%% From File: $Id: scrkernel-sections.dtx 4069 2023-06-29 08:55:54Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: option)
\KOMA@key{open}{%
\KOMA@set@ncmdkey{open}{@tempa}{%
@@ -1021,6 +1025,26 @@
\AtBeginDocument{%
\@ifpackageloaded{bookmark}{}{%
\if@scr@autoloadbookmarkpackage
+ \IfFileExists{bookmark.sty}{}{%
+ \ClassWarningNoLine{\KOMAClassName}{%
+ Using `bookmark' together with `hyperref' is
+ recommended,\MessageBreak
+ because of handling of possible bookmark level gaps.\MessageBreak
+ However, the package seems not to be installed and\MessageBreak
+ therefore cannot be loaded automatically.\MessageBreak
+ It is recommended to install package `bookmark'!\MessageBreak
+ However, you can avoid this warning without\MessageBreak
+ installation of package `bookmark', if you'd
+ deactivate\MessageBreak
+ automatically loading of `bookmark' using KOMA-Script\MessageBreak
+ option `bookmarkpackage=false' before
+ \string\begin{document}%
+ }%
+ \@scr@autoloadbookmarkpackagefalse
+ \KOMA@kav@replacevalue{\KOMAClassFileName}{bookmarkpackage}{false}%
+ }%
+ \fi
+ \if@scr@autoloadbookmarkpackage
\scr@ifundefinedorrelax{Hy@driver}{%
\ClassWarning{\KOMAClassName}{%
`hyperref' loaded but `\string\Hy@driver' undefined.\MessageBreak
@@ -1084,7 +1108,8 @@
\if@filesw
\ClassWarning{\KOMAClassName}{%
seems someone has broken package `auxhook'.\MessageBreak
- Usually this happens, if `auxhook' is loaded or used\MessageBreak
+ Usually this happens, if `auxhook' is loaded or
+ used\MessageBreak
implicitly or explicitly by patching
\string\document%
\scr@ifundefinedorrelax{AtEndPreamble}{}{%
@@ -1658,7 +1683,7 @@
\csname FN@mf@prepare\endcsname
\ifhmode\spacefactor\@x@sf\fi
\relax}
-%%% From File: $Id: scrkernel-listsof.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-listsof.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: option)
\newif\if@tocleft
\KOMA@key{toc}{%
@@ -2214,18 +2239,18 @@
\KOMA@DeclareDeprecatedOption{idxtotoc}{index=totoc}
%%% From File: $Id: scrkernel-listsandtabulars.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: option)
-%%% From File: $Id: scrkernel-sections.dtx 4069 2023-06-29 08:55:54Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: execoption)
\KOMAExecuteOptions{headings=openany}
\KOMAExecuteOptions{numbers=autoendperiod}
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: execoption)
\KOMAExecuteOptions{%
parskip=false,%
headings=big%
}
\KOMAProcessOptions\relax
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: body)
\AtBeginDocument{%
\begingroup
@@ -2775,13 +2800,13 @@
\@nomath\sfb}
\DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal}
-%%% From File: $Id: scrkernel-language.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-language.dtx 4107 2024-04-10 17:24:53Z kohm $
%%% (run: body)
\def\today{\ifcase\month\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or December\fi
\space\number\day, \number\year}%
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: body)
\let\@BCOR =\relax
\let\@@BCOR =\relax
@@ -3471,7 +3496,7 @@
%%% From File: $Id: scrkernel-tocstyle.dtx 4060 2023-06-20 08:59:01Z kohm $
%%% (run: class,style,default)
\CloneTOCEntryStyle{section}{default}
-%%% From File: $Id: scrkernel-sections.dtx 4069 2023-06-29 08:55:54Z kohm $
+%%% From File: $Id: scrkernel-sections.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: body)
\BeforeClosingMainAux{%
\if@autodot\if@filesw\immediate\write\@mainaux{%
@@ -5577,10 +5602,12 @@
\addtocontents{\@currext}{\protect\addvspace{\@chapterlistsgap}}%
}{}%
}%
- \@ifundefined{float@addtolists}{}{%
- \scr@float@addtolists@warning
- \float@addtolists{\protect\addvspace{\@chapterlistsgap}}%
- }%
+ \expandafter\ifnum \scr@v@is@lt{3.43}\relax
+ \@ifundefined{float@addtolists}{}{%
+ \scr@float@addtolists@warning
+ \float@addtolists{\protect\addvspace{\@chapterlistsgap}}%
+ }%
+ \fi
\fi
\scr@t@st@nd@w@rn@m@k@ch@pt@rh@@d{#1}%
\if@twocolumn
@@ -5840,7 +5867,6 @@
\addxcontentsline{\@currext}{chapteratlist}[{#1}]{#2}%
}{}%
}%
- \@ifundefined{float@addtolists}{}{\scr@float@addtolists@warning}%
\fi
}
\newcommand\addchap{%
@@ -6060,7 +6086,7 @@
\fi
\newcommand*{\scr@fnt@disposition}{\sectfont}
\aliaskomafont{sectioning}{disposition}
-%%% From File: $Id: scrkernel-miscellaneous.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-miscellaneous.dtx 4094 2023-12-05 16:17:40Z kohm $
%%% (run: body)
\@addtoreset{equation}{chapter}
\renewcommand*{\theequation}{%
@@ -6125,9 +6151,9 @@
\endgroup
\edef\is@thispageodd@setlabel{%
\if@filesw
- \unexpanded{\protected@write\@auxout{\let\arabic\relax}}{%
+ \unexpanded{\protected@write\@auxout{\let\number\relax}}{%
\noexpand\string
- \noexpand\new@tpo@label{\scr@tpo}{\noexpand\arabic{page}}}%
+ \noexpand\new@tpo@label{\scr@tpo}{\noexpand\number\c@page}}%
\fi
\noexpand\def\noexpand\is@thispageodd@setlabel
{\unexpanded\expandafter{\is@thispageodd@setlabel}}%
@@ -6182,7 +6208,7 @@
\reserved@a
\ifin@\expandafter\@gobble\else\expandafter\@firstofone\fi
}{%
- \BeforePackage{#1}{%
+ \expandafter\providecommand\csname scr@class@#1@warning\endcsname{%
\ClassWarning{\KOMAClassName}{%
Usage of package `#1' together\MessageBreak
with a KOMA-Script class is not recommended.\MessageBreak
@@ -6193,6 +6219,9 @@
package `#1'%
}%
}%
+ \BeforePackage{#1}{%
+ \csname scr@class@#1@warning\endcsname
+ }%
}%
}%
\scr@package@not@recommended{emptypage}{%
@@ -6477,7 +6506,7 @@
\newcommand*{\indexpagestyle}{plain}
\pagestyle{plain}
\pagenumbering{arabic}
-%%% From File: $Id: scrlayer.dtx 4058 2023-06-16 08:32:27Z kohm $
+%%% From File: $Id: scrlayer.dtx 4118 2024-09-02 12:05:30Z kohm $
%%% (run: body)
\providecommand*{\@mkleft}{%
\IfActiveMkBoth{\markleft}{\@gobble}%
@@ -7420,7 +7449,7 @@
\endgroup
\@footnotemark
}
-%%% From File: $Id: scrkernel-listsof.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-listsof.dtx 4130 2024-10-24 08:14:37Z kohm $
%%% (run: body)
\g@addto@macro{\numberline@numberpostfix}{\autodot}
\usetocbasicnumberline[%
@@ -7529,17 +7558,34 @@
}
\newcommand*{\scr@float@listhead@warning}{%
\ClassWarning{\KOMAClassName}{%
- \string\float@listhead\space detected!\MessageBreak
+ Usage of \string\float@listhead\space detected!\MessageBreak
+ This could be, because you are using\MessageBreak
+ \@ifpackageloaded{floatrow}{%
+ \@ifpackageloaded{floatrowbytocbasic}{%
+ a package that does not support the KOMA-Script\MessageBreak
+ interface of KOMA-Script package `tocbasic`.\MessageBreak
+ }{%
+ package `floatrow` without `floatrowbytocbasic`.\MessageBreak
+ }%
+ }{%
+ \@ifpackageloaded{float}{%
+ \@ifpackageloaded{floatbytocbasic}{%
+ a package that does not support the KOMA-Script\MessageBreak
+ interface of KOMA-Script package `tocbasic`.\MessageBreak
+ }{%
+ package `float` without `floatbytocbasic`.\MessageBreak
+ }%
+ }{%
+ a package that does not support the KOMA-Script\MessageBreak
+ interface of KOMA-Script package `tocbasic`.\MessageBreak
+ }%
+ }%
Implementation of \string\float@listhead\space became\MessageBreak
deprecated in KOMA-Script v3.01 2008/11/14 and\MessageBreak
has been replaced by several more flexible\MessageBreak
features of package `tocbasic`.\MessageBreak
- Maybe implementation of \string\float@listhead\space will\MessageBreak
- be removed from KOMA-Script soon.\MessageBreak
- Loading of package `scrhack' may help to\MessageBreak
- avoid this warning, if you are using a\MessageBreak
- a package that still implements the\MessageBreak
- deprecated \string\float@listhead\space interface%
+ Implementation of \string\float@listhead\space will\MessageBreak
+ be removed from KOMA-Script soon%
}%
}
\newcommand*{\scr@float@addtolists@warning}{%
@@ -7553,10 +7599,9 @@
\string\float@addtolist\space interface has been\MessageBreak
restricted to only some of the KOMA-Script\MessageBreak
features and been removed from others.\MessageBreak
- Loading of package `scrhack' may help to\MessageBreak
- avoid this warning, if you are using a\MessageBreak
- a package that still implements the\MessageBreak
- deprecated \string\float@addtolist\space interface%
+ Since Version 3.43 support for deprecated\MessageBreak
+ \string\float@addtolist\space interface has been\MessageBreak
+ removed from all KOMA-Script classes%
}%
\global\let\scr@float@addtolists@warning\relax
}
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrsize10pt.clo b/Master/texmf-dist/tex/latex/koma-script/scrsize10pt.clo
index 2e849d1cad0..5c22cb12245 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrsize10pt.clo
+++ b/Master/texmf-dist/tex/latex/koma-script/scrsize10pt.clo
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: scrkernel-fonts.dtx 4034 2023-04-20 08:03:46Z kohm $
%%% (run: 10pt)
\ProvidesFile{%
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrsize11pt.clo b/Master/texmf-dist/tex/latex/koma-script/scrsize11pt.clo
index ae05792619a..bf8618459d5 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrsize11pt.clo
+++ b/Master/texmf-dist/tex/latex/koma-script/scrsize11pt.clo
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: scrkernel-fonts.dtx 4034 2023-04-20 08:03:46Z kohm $
%%% (run: 11pt)
%%% (run: 12pt)
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrsize12pt.clo b/Master/texmf-dist/tex/latex/koma-script/scrsize12pt.clo
index 0474d0a3aac..eeb47ada578 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrsize12pt.clo
+++ b/Master/texmf-dist/tex/latex/koma-script/scrsize12pt.clo
@@ -40,30 +40,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: scrkernel-fonts.dtx 4034 2023-04-20 08:03:46Z kohm $
\ProvidesFile{%
scrsize12pt.clo%
diff --git a/Master/texmf-dist/tex/latex/koma-script/scrtime.sty b/Master/texmf-dist/tex/latex/koma-script/scrtime.sty
index 64a6cfc7e37..301934245f8 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrtime.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/scrtime.sty
@@ -43,52 +43,54 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\providecommand*{\@CheckKOMAScriptVersion}{%
+ \begingroup
+ \ExplSyntaxOff
+ \@@CheckKOMAScriptVersion
+}
+\providecommand*{\@@CheckKOMAScriptVersion}[1]{%
+ \@ifundefined{KOMAScriptVersion}{%
\gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ }{%
\def\@tempa{#1}%
\ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
+ \GenericWarning{\space\@spaces\@spaces\@spaces\@spaces}{%
+ Version warning:
+ \noexpand\KOMAScriptVersion is
+ `\csname KOMAScriptVersion\endcsname',\MessageBreak
but `#1' was expected!\MessageBreak
You should not use classes, packages or files
from\MessageBreak
- different KOMA-Script versions%
+ different KOMA-Script versions\@gobble
}%
\fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+ }%
+ \endgroup
+}
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
\providecommand*{\scr@pkgextension}{\@pkgextension}
\AtBeginDocument{%
\let\scr@pkgextension\@pkgextension
}
-%%% From File: $Id: scrtime.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrtime.dtx 4099 2024-02-01 09:36:51Z kohm $
\NeedsTeXFormat{LaTeX2e}[1995/06/01]
\ProvidesPackage{scrtime}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
package
(time of LaTeX run)%
]
-%%% From File: $Id: scrkernel-basics.dtx 4051 2023-04-26 16:01:28Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 4074 2023-07-14 15:56:59Z kohm $
%%% (run: load)
\RequirePackage{scrkbase}[\KOMAScriptVersion]
-%%% From File: $Id: scrtime.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrtime.dtx 4099 2024-02-01 09:36:51Z kohm $
\newif\if@Hxii
\KOMA@ifkey{12h}{@Hxii}
\@ifundefined{KOMA@DeclareDeprecatedOption}{}{%
\KOMA@DeclareDeprecatedOption[scrtime]{24h}{12h=false}%
}
\KOMAProcessOptions\relax
-%%% From File: $Id: scrtime.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrtime.dtx 4099 2024-02-01 09:36:51Z kohm $
\def\thistime{%
\kernel@ifstar
{\let\@tempif\iffalse\@thistime}
diff --git a/Master/texmf-dist/tex/latex/koma-script/tocbasic.sty b/Master/texmf-dist/tex/latex/koma-script/tocbasic.sty
index 10050bf0f1b..945de014d41 100644
--- a/Master/texmf-dist/tex/latex/koma-script/tocbasic.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/tocbasic.sty
@@ -52,27 +52,159 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: tocbasic.dtx 4067 2023-06-28 14:37:03Z kohm $
+%%% From File: $Id: tocbasic.dtx 4132 2024-10-24 09:32:44Z kohm $
%%% (run: identify)
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{tocbasic}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
package
(handling toc-files)%
]
-%%% From File: $Id: tocbasic.dtx 4067 2023-06-28 14:37:03Z kohm $
+%%% From File: $Id: tocbasic.dtx 4132 2024-10-24 09:32:44Z kohm $
%%% (run: prepare)
+\newif\if@tocbasic@old@latex@found
+\ifnum 0=\ifcsname IfFormatAtLeastTF\endcsname
+ \IfFormatAtLeastTF{2022-06-01}{1}{0}
+ \else
+ 0
+ \fi\relax
+ \PackageWarningNoLine{tocbasic}{%
+ LaTeX kernel too old!\MessageBreak
+ For full functionality the package needs at least\MessageBreak
+ LaTeX 2022-06-01.\MessageBreak
+ You are using an older LaTeX version.\MessageBreak
+ So the functionality will be limited.\MessageBreak
+ Note that this also can result in error messages,\MessageBreak
+ that would not raise with an up-to-date LaTeX%
+ }
+ \@tocbasic@old@latex@foundtrue
+\fi
\RequirePackage{scrbase}
\scr@ifundefinedorrelax{NewDocumentCommand}{%
\RequirePackage{xparse}[2018-04-12]%
}{}
-%%% From File: $Id: tocbasic.dtx 4067 2023-06-28 14:37:03Z kohm $
+%%% From File: $Id: tocbasic.dtx 4132 2024-10-24 09:32:44Z kohm $
%%% (run: option)
-%%% From File: $Id: tocbasic.dtx 4067 2023-06-28 14:37:03Z kohm $
+\if@tocbasic@old@latex@found\else
+ \ExplSyntaxOn
+
+ \bool_new:N \__tocbasic_patch_all_bool
+ \bool_new:N \__tocbasic_patch_starttoc_bool
+ \bool_new:N \__tocbasic_patch_chapter_bool
+ \bool_new:N \__tocbasic_patch_listoffigures_bool
+ \bool_new:N \__tocbasic_patch_listoftables_bool
+
+ \DeclareKeys
+ {
+ enablepatch .code = \__tocbasic_endisable_patch:nn {#1} \c_true_bool,
+ enablepatch .usage = preamble,
+ enablepatch .value_required:n = true,
+ disablepatch .code = \__tocbasic_endisable_patch:nn {#1} \c_false_bool,
+ disablepatch .usage = preamble,
+ disablepatch .value_required:n = true,
+ }
+
+ \msg_new:nnnn { tocbasic } { unknown-patch }
+ {
+ \text_uppercase:n #1bling~of~unknown~patch~#2~ignored.
+ }
+ {
+ You've~tried~to~#1able~patch~#2,~
+ but~this~is~not~a~known~patch.~
+ Because~of~this~your~attempt~is~ignored.~
+ See~the~KOMA-Script~user~manual~for~more~information~about~known~patches.
+ }
+
+ \cs_new:Nn \__tocbasic_endisable_patch:nn
+ {
+ \clist_map_inline:nn { #1 }
+ {
+ \cs_if_exist:cTF { __tocbasic_patch_##1_bool }
+ {
+ \bool_set_eq:cN { __tocbasic_patch_##1_bool } #2
+ }
+ {
+ \exp_args:Nnnx \msg_warning:nnnn { tocbasic } { unknown-patch }
+ { \bool_if:NTF #2 { en } { dis } } { ##1 }
+ }
+ }
+ }
+
+ \ExplSyntaxOff
+\fi
+%%% From File: $Id: tocbasic.dtx 4132 2024-10-24 09:32:44Z kohm $
%%% (run: execoption)
-\ProcessOptions\relax
-%%% From File: $Id: tocbasic.dtx 4067 2023-06-28 14:37:03Z kohm $
+\if@tocbasic@old@latex@found
+ \ProcessOptions
+\else
+ \ProcessKeyOptions
+\fi
+%%% From File: $Id: tocbasic.dtx 4132 2024-10-24 09:32:44Z kohm $
%%% (run: body)
+\if@tocbasic@old@latex@found\else
+ \ExplSyntaxOn
+ \msg_new:nnnn { tocbasic } { dangerous-patch }
+ {
+ Dangerous~#2~patch~enabled \str_if_empty:nF { #1 } { ~using~#1 } .
+ }
+ {
+ \str_if_empty:nF { #1 } { Class~#1~does~not~need~the~#2~patch.~ }
+ Using~this~patch~can~even~result~in~harm.~
+ If~you~are~not~sure~that~this~patch~is~needed,~
+ you~should~not~enable~it.~
+ Please,~see~the~KOMA-Script~user~manual~for~more~information~about~
+ the~#2~patch.
+ }
+
+ \AtBeginDocument
+ {
+
+ \bool_if:NT \__tocbasic_patch_all_bool
+ {
+ \bool_set_true:N \__tocbasic_patch_starttoc_bool
+ \cs_if_exist:NF \KOMAClassName
+ { \bool_set_true:N \__tocbasic_patch_chapter_bool }
+ \bool_set_true:N \__tocbasic_patch_listoffigures_bool
+ \bool_set_true:N \__tocbasic_patch_listoftables_bool
+ }
+
+ \bool_if:NT \__tocbasic_patch_chapter_bool
+ {
+ \cs_if_exist:NTF \KOMAClassName
+ {
+ \exp_args:Nnnx \msg_warn:nnnn { tocbasic } { dangerous-patch }
+ { \KOMAClassName } { chapter }
+ }
+ {
+ \exp_args:Nnnx \msg_note:nnnn { tocbasic } { dangerous-patch }
+ { } { chapter }
+ }
+ \hook_gput_code:nnn { cmd/@makechapterhead/before } { tocbasic }
+ {
+ \doforeachtocfile[float]{
+ \addtocontents{\@currext}{\protect\addvspace{10\p@}}
+ }
+ }
+ }
+
+ \bool_if:NT \__tocbasic_patch_starttoc_bool \tocbasicautomode
+
+ \bool_if:NT \__tocbasic_patch_listoffigures_bool
+ {
+ \renewcommand*{\listoffigures}{\listoftoc{\ext@figure}}%
+ \providecommand*{\listoflofname}{\listfigurename}%
+ }
+
+ \bool_if:NT \__tocbasic_patch_listoftables_bool
+ {
+ \renewcommand*{\listoftables}{\listoftoc{\ext@table}}%
+ \providecommand*{\listoflotname}{\listtablename}%
+ }
+
+ }
+
+ \ExplSyntaxOff
+\fi
\AfterPackage*{multitoc}{%
\@ifpackagelater{multitoc}{2022/02/10}{}{%
\PackageWarningNoLine{tocbasic}{%
@@ -2909,7 +3041,7 @@
%%% From File: $Id: scrkernel-tocstyle.dtx 4060 2023-06-20 08:59:01Z kohm $
%%% (run: style,dottedtocline)
\CloneTOCEntryStyle{dottedtocline}{default}
-%%% From File: $Id: tocbasic.dtx 4067 2023-06-28 14:37:03Z kohm $
+%%% From File: $Id: tocbasic.dtx 4132 2024-10-24 09:32:44Z kohm $
%%% (run: exit)
\AtBeginDocument{%
\@ifundefined{MakeMarkcase}{%
diff --git a/Master/texmf-dist/tex/latex/koma-script/typearea.sty b/Master/texmf-dist/tex/latex/koma-script/typearea.sty
index b9792f414d9..986a759a528 100644
--- a/Master/texmf-dist/tex/latex/koma-script/typearea.sty
+++ b/Master/texmf-dist/tex/latex/koma-script/typearea.sty
@@ -48,45 +48,47 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\providecommand*{\@CheckKOMAScriptVersion}{%
+ \begingroup
+ \ExplSyntaxOff
+ \@@CheckKOMAScriptVersion
+}
+\providecommand*{\@@CheckKOMAScriptVersion}[1]{%
+ \@ifundefined{KOMAScriptVersion}{%
\gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
+ }{%
\def\@tempa{#1}%
\ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
+ \GenericWarning{\space\@spaces\@spaces\@spaces\@spaces}{%
+ Version warning:
+ \noexpand\KOMAScriptVersion is
+ `\csname KOMAScriptVersion\endcsname',\MessageBreak
but `#1' was expected!\MessageBreak
You should not use classes, packages or files
from\MessageBreak
- different KOMA-Script versions%
+ different KOMA-Script versions\@gobble
}%
\fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+ }%
+ \endgroup
+}
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
\providecommand*{\scr@pkgextension}{\@pkgextension}
\AtBeginDocument{%
\let\scr@pkgextension\@pkgextension
}
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: identify)
\NeedsTeXFormat{LaTeX2e}[1995/06/01]
\ProvidesPackage{typearea}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024/10/24 v3.43 KOMA-Script
package
(type area)]
-%%% From File: $Id: scrkernel-basics.dtx 4051 2023-04-26 16:01:28Z kohm $
+%%% From File: $Id: scrkernel-basics.dtx 4074 2023-07-14 15:56:59Z kohm $
%%% (run: load)
\RequirePackage{scrkbase}[\KOMAScriptVersion]
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: init)
\providecommand*
{\scr@compatibility}{\scr@v@last}
@@ -176,13 +178,15 @@
\@namedef{scr@v@3.39}{20}
\@namedef{scr@v@3.40}{20}
\@namedef{scr@v@3.41}{21}
-\@namedef{scr@v@last}{21}
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+\@namedef{scr@v@3.42}{21}
+\@namedef{scr@v@3.43}{3430}
+\@namedef{scr@v@last}{3430}
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: init)
\providecommand\ta@divlist{{}{}{}{}{}{}{}{}{}{8}{10}{12}}
\providecommand\ta@divlistelse{1}
\newcommand*{\@lastdiv}{\z@}\let\@lastdiv\relax
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: option)
\KOMA@key{version}[last]{%
\scr@ifundefinedorrelax{scr@v@#1}{%
@@ -220,7 +224,7 @@
old KOMA-Script release. However, in that case you\MessageBreak
could also need old releases of other packages and\MessageBreak
even of the LaTeX kernel.\MessageBreak
- You should also note, that the KOMA-Script developers\MessageBreak
+ Please also note, that the KOMA-Script developers\MessageBreak
refuse support for documents using `version=#1'.\MessageBreak
We recommend to eliminate all deprecated options\MessageBreak
and commands. We also recommend to not use option\MessageBreak
@@ -255,7 +259,7 @@
\newcommand*{\scr@ta@v@is@ge}[1]{%
\numexpr\scr@ta@compatibility+\@ne >\@nameuse{scr@v@#1}
}
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: options)
\providecommand*{\PaperNameToSize}[2][warning]{%
\Ifstr{#2}{letter}{%
@@ -1027,11 +1031,8 @@
\DeclareOption*{%
\x@paper}
\InputIfFileExists{typearea.cfg}{%
- \typeout{%
- ***************************************^^J%
- * Local config file typearea.cfg used^^J%
- ***************************************%
- }
+ \@ifundefined{PackageNote}{\PackageInfo}{\PackageNote}%
+ {typearea}{Local configuration file typearea.cfg loaded}%
}{}
\providecommand*{\defaultpapersize}{A4}
\KOMAExecuteOptions{paper=\defaultpapersize,pagesize}
@@ -1045,9 +1046,9 @@
\KOMAExecuteOptions{twoside=false}
\fi
\KOMAProcessOptions\relax
-%%% From File: $Id: scrkernel-compatibility.dtx 4054 2023-05-10 14:35:36Z kohm $
+%%% From File: $Id: scrkernel-compatibility.dtx 4133 2024-10-24 09:54:28Z kohm $
%%% (run: body)
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: body)
\newcommand*{\ta@divfor}[1]{%
\ta@div=\z@
@@ -1407,7 +1408,8 @@
\ta@divfor{\@ptsize}%
\fi
\ifnum\ta@div=3
- \typeout{DIV calculation for classic typearea.}%
+ \@ifundefined{PackageNote}{\PackageInfo}{\PackageNote}%
+ {typearea}{DIV calculation for classic typearea.}%
\setlength{\ta@temp}{\paperwidth}%
\addtolength{\ta@temp}{-\ta@bcor}%
\if@hincl\else
@@ -1432,7 +1434,8 @@
\fi
\fi
\ifnum\ta@div <4
- \typeout{DIV calculation for typearea with good linewidth.}%
+ \@ifundefined{PackageNote}{\PackageInfo}{\PackageNote}%
+ {typearea}{DIV calculation for classic typearea.}%
\setlength{\textwidth}{\paperwidth}%
\addtolength{\textwidth}{-\ta@bcor}%
\ta@temp@goodwidth
@@ -1794,7 +1797,7 @@
\kernel@ifstar \l@addto@macro \g@addto@macro \@areaset@end
}
\newcommand*{\@areaset@end}{}
-%%% From File: $Id: scrkernel-typearea.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-typearea.dtx 4100 2024-02-01 09:40:30Z kohm $
%%% (run: final)
\typearea[current]{current}
%%% From File: $Id: scrlogo.dtx 4032 2023-04-17 09:45:11Z kohm $
diff --git a/Master/texmf-dist/tex/latex/koma-script/visualize.lco b/Master/texmf-dist/tex/latex/koma-script/visualize.lco
index 8be3cbbd097..1814eb604f8 100644
--- a/Master/texmf-dist/tex/latex/koma-script/visualize.lco
+++ b/Master/texmf-dist/tex/latex/koma-script/visualize.lco
@@ -41,30 +41,8 @@
%% find a complete unmodified copy of LaTeX2e at
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
+%%% From File: $Id: scrkernel-version.dtx 4133 2024-10-24 09:54:28Z kohm $
+\@CheckKOMAScriptVersion{2024/10/24 v3.43 KOMA-Script}%
%%% From File: $Id: scrkernel-letterclassoptions.dtx 4032 2023-04-17 09:45:11Z kohm $
%%% (run: head)
\ProvidesFile{%
@@ -577,7 +555,7 @@
\newcommand*{\showUScheck}{%
\showenvelope(8.625in,3.625in)%
}
-%%% From File: $Id: scrkernel-notepaper.dtx 4032 2023-04-17 09:45:11Z kohm $
+%%% From File: $Id: scrkernel-notepaper.dtx 4113 2024-06-07 08:20:20Z kohm $
%%% (run: body)
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/kpfonts-otf/kpfonts-otf.sty b/Master/texmf-dist/tex/latex/kpfonts-otf/kpfonts-otf.sty
index 61c1adae968..60a7a3d5701 100644
--- a/Master/texmf-dist/tex/latex/kpfonts-otf/kpfonts-otf.sty
+++ b/Master/texmf-dist/tex/latex/kpfonts-otf/kpfonts-otf.sty
@@ -1,6 +1,6 @@
\NeedsTeXFormat{LaTeX2e}[2019-01-01]
-\def\fileversion{0.63}
-\def\filedate{2024-05-02}
+\def\fileversion{0.65}
+\def\filedate{2025-01-15}
\ProvidesPackage{kpfonts-otf}[\filedate\space\fileversion]
% Ensure luatex or xetex engine
diff --git a/Master/texmf-dist/tex/latex/kpfonts/kpfonts.sty b/Master/texmf-dist/tex/latex/kpfonts/kpfonts.sty
index e1929626d07..8572fffd3ab 100644
--- a/Master/texmf-dist/tex/latex/kpfonts/kpfonts.sty
+++ b/Master/texmf-dist/tex/latex/kpfonts/kpfonts.sty
@@ -5,7 +5,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
%
-\ProvidesPackage{kpfonts}[ 2023/01/18 v3.35]
+\ProvidesPackage{kpfonts}[ 2024/10/27 v3.36]
%
% This version prepaired by hvoss@tug.org
%----- hv 20220919
@@ -16,7 +16,7 @@
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{kpfonts-otf}}
\ProcessOptions\relax
\RequirePackage{kpfonts-otf}
- \endinput
+ \expandafter\endinput
\fi
%----- end hv
diff --git a/Master/texmf-dist/tex/latex/l3build/regression-test.tex b/Master/texmf-dist/tex/latex/l3build/regression-test.tex
index 513dc8771ec..ceda2db3e74 100644
--- a/Master/texmf-dist/tex/latex/l3build/regression-test.tex
+++ b/Master/texmf-dist/tex/latex/l3build/regression-test.tex
@@ -70,8 +70,8 @@
\ifnum\currentgrouplevel>0 %
\LONGTYPEOUT{Bad grouping: \the\currentgrouplevel!}%
\fi
- \ifnum\currentiflevel>2 %
- \LONGTYPEOUT{Bad conditionals: \the\numexpr\currentiflevel-2!}%
+ \ifnum\currentiflevel>1 %
+ \LONGTYPEOUT{Bad conditionals: \the\numexpr\currentiflevel-1!}%
\fi
\LONGTYPEOUT{^^JEND-TEST-LOG^^J}%
\@@@end
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index d91b505758d..fd8da0a356d 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -75,7 +75,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-08-30}%
+\def\ExplFileDate{2024-12-25}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -716,7 +716,6 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__kernel_primitive:NN \pdfoutline \tex_pdfoutline:D
\__kernel_primitive:NN \pdfoutput \tex_pdfoutput:D
\__kernel_primitive:NN \pdfpageattr \tex_pdfpageattr:D
- \__kernel_primitive:NN \pdfpagesattr \tex_pdfpagesattr:D
\__kernel_primitive:NN \pdfpagebox \tex_pdfpagebox:D
\__kernel_primitive:NN \pdfpageref \tex_pdfpageref:D
\__kernel_primitive:NN \pdfpageresources \tex_pdfpageresources:D
@@ -1313,13 +1312,11 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__kernel_primitive:NN \ybaselineshift \tex_ybaselineshift:D
\__kernel_primitive:NN \yoko \tex_yoko:D
\__kernel_primitive:NN \vfi \tex_vfi:D
- \__kernel_primitive:NN \currentcjktoken \tex_currentcjktoken:D
\__kernel_primitive:NN \disablecjktoken \tex_disablecjktoken:D
\__kernel_primitive:NN \enablecjktoken \tex_enablecjktoken:D
\__kernel_primitive:NN \forcecjktoken \tex_forcecjktoken:D
\__kernel_primitive:NN \kchar \tex_kchar:D
\__kernel_primitive:NN \kchardef \tex_kchardef:D
- \__kernel_primitive:NN \kuten \tex_kuten:D
\__kernel_primitive:NN \uptexrevision \tex_uptexrevision:D
\__kernel_primitive:NN \uptexversion \tex_uptexversion:D
\__kernel_primitive:NN \odelcode \tex_odelcode:D
@@ -3476,7 +3473,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__kernel_chk_if_free_cs:N #1
\cs_gset_nopar:Npe #1 { \__kernel_exp_not:w {#2} }
}
-\cs_generate_variant:Nn \tl_const:Nn { Ne , c , ce }
+\cs_generate_variant:Nn \tl_const:Nn { NV , Ne , c , cV , ce }
\cs_generate_variant:Nn \tl_const:Nn { Nx , cx }
\cs_new_protected:Npn \tl_clear:N #1
{ \tex_let:D #1 = ~ \c_empty_tl }
@@ -3867,6 +3864,37 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__tl_replace_next_aux:w { \__tl_replace_next:w { } { } }
\cs_new_eq:NN \__tl_replace_wrap:w ?
\cs_new_eq:NN \__tl_replace_next:w ?
+\cs_new_protected:Npn \tl_regex_replace_once:Nnn #1#2#3
+ { \regex_replace_once:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \tl_regex_replace_once:Nnn { c }
+\cs_new_protected:Npn \tl_regex_replace_once:NNn #1#2#3
+ { \regex_replace_once:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \tl_regex_replace_once:NNn { c }
+\cs_new_protected:Npn \tl_regex_replace_all:Nnn #1#2#3
+ { \regex_replace_all:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \tl_regex_replace_all:Nnn { c }
+\cs_new_protected:Npn \tl_regex_replace_all:NNn #1#2#3
+ { \regex_replace_all:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \tl_regex_replace_all:NNn { c }
+\group_begin:
+ \cs_set_protected:Npn \__tl_tmp:w #1#2#3
+ {
+ \cs_new_protected:cpe { tl_regex_greplace_ #1 :N #2 n } ##1##2##3
+ {
+ \group_begin:
+ \tl_set_eq:NN \exp_not:N \l__tl_internal_a_tl ##1
+ \exp_not:c { regex_replace_ #1 :Nn #2 }
+ #3 {##2} {##3} \exp_not:N \l__tl_internal_a_tl
+ \tl_gset_eq:NN ##1 \exp_not:N \l__tl_internal_a_tl
+ \group_end:
+ }
+ \cs_generate_variant:cn { tl_regex_greplace_ #1 :N #2 n } { c }
+ }
+ \__tl_tmp:w { once } n { }
+ \__tl_tmp:w { once } N \use:n
+ \__tl_tmp:w { all } n { }
+ \__tl_tmp:w { all } N \use:n
+\group_end:
\cs_new_protected:Npn \tl_remove_once:Nn #1#2
{ \tl_replace_once:Nnn #1 {#2} { } }
\cs_new_protected:Npn \tl_gremove_once:Nn #1#2
@@ -4019,6 +4047,20 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prg_return_false:
\fi:
}
+\prg_new_protected_conditional:Npnn \tl_if_regex_match:nn #1#2 { TF , T , F }
+ {
+ \regex_match:nnTF {#2} {#1}
+ \prg_return_true: \prg_return_false:
+ }
+\prg_generate_conditional_variant:Nnn \tl_if_regex_match:nn
+ { V } { TF , T , F }
+\prg_new_protected_conditional:Npnn \tl_if_regex_match:nN #1#2 { TF , T , F }
+ {
+ \regex_match:nNTF {#2} #1
+ \prg_return_true: \prg_return_false:
+ }
+\prg_generate_conditional_variant:Nnn \tl_if_regex_match:nN
+ { V } { TF , T , F }
\cs_new:Npn \tl_map_function:nN #1#2
{
\__tl_map_function:Nnnnnnnnn #2 #1
@@ -5622,6 +5664,45 @@ Type H <return> for immediate help}\def~{\errmessage{%
#1 #2 { #3 }
\__seq_pop_item_def:
}
+\cs_new_protected:Npn \seq_set_regex_extract_once:Nnn #1#2#3
+ { \regex_extract_once:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_extract_once:Nnn { c }
+\cs_new_protected:Npn \seq_set_regex_extract_once:NNn #1#2#3
+ { \regex_extract_once:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_extract_once:NNn { c }
+\cs_new_protected:Npn \seq_set_regex_extract_all:Nnn #1#2#3
+ { \regex_extract_all:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_extract_all:Nnn { c }
+\cs_new_protected:Npn \seq_set_regex_extract_all:NNn #1#2#3
+ { \regex_extract_all:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_extract_all:NNn { c }
+\cs_new_protected:Npn \seq_set_regex_split:Nnn #1#2#3
+ { \regex_split:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_split:Nnn { c }
+\cs_new_protected:Npn \seq_set_regex_split:NNn #1#2#3
+ { \regex_split:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \seq_set_regex_split:NNn { c }
+\group_begin:
+ \cs_set_protected:Npn \__seq_tmp:w #1#2#3
+ {
+ \cs_new_protected:cpe { seq_gset_regex_ #1 :N #2 n } ##1##2##3
+ {
+ \group_begin:
+ \seq_set_eq:NN \exp_not:N \l__seq_tmp_seq ##1
+ \exp_not:c { regex_ #1 :Nn #2 }
+ #3 {##2} {##3} \exp_not:N \l__seq_tmp_seq
+ \seq_gset_eq:NN ##1 \exp_not:N \l__seq_tmp_seq
+ \group_end:
+ }
+ \cs_generate_variant:cn { seq_gset_regex_ #1 :N #2 n } { c }
+ }
+ \__seq_tmp:w { extract_once } n { }
+ \__seq_tmp:w { extract_once } N \use:n
+ \__seq_tmp:w { extract_all } n { }
+ \__seq_tmp:w { extract_all } N \use:n
+ \__seq_tmp:w { split } n { }
+ \__seq_tmp:w { split } N \use:n
+\group_end:
\cs_new_protected:Npn \seq_concat:NNN #1#2#3
{ \tl_set:Nf #1 { \exp_after:wN \use_i:nn \exp_after:wN #2 #3 } }
\cs_new_protected:Npn \seq_gconcat:NNN #1#2#3
@@ -5662,20 +5743,20 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_generate_variant:Nn \seq_gput_right:Nn { NV , Nv , Ne , No , Nx }
\cs_generate_variant:Nn \seq_gput_right:Nn { c , cV , cv , ce , co , cx }
\cs_new:Npn \__seq_wrap_item:n #1 { \exp_not:n { \__seq_item:n {#1} } }
-\seq_new:N \l__seq_remove_seq
+\seq_new:N \l__seq_tmp_seq
\cs_new_protected:Npn \seq_remove_duplicates:N
{ \__seq_remove_duplicates:NN \seq_set_eq:NN }
\cs_new_protected:Npn \seq_gremove_duplicates:N
{ \__seq_remove_duplicates:NN \seq_gset_eq:NN }
\cs_new_protected:Npn \__seq_remove_duplicates:NN #1#2
{
- \seq_clear:N \l__seq_remove_seq
+ \seq_clear:N \l__seq_tmp_seq
\seq_map_inline:Nn #2
{
- \seq_if_in:NnF \l__seq_remove_seq {##1}
- { \seq_put_right:Nn \l__seq_remove_seq {##1} }
+ \seq_if_in:NnF \l__seq_tmp_seq {##1}
+ { \seq_put_right:Nn \l__seq_tmp_seq {##1} }
}
- #1 #2 \l__seq_remove_seq
+ #1 #2 \l__seq_tmp_seq
}
\cs_generate_variant:Nn \seq_remove_duplicates:N { c }
\cs_generate_variant:Nn \seq_gremove_duplicates:N { c }
@@ -6138,6 +6219,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN \__seq_map_pairwise_function:wNw #2 \s__seq_stop #3
#1 { ? \prg_break: } { }
\prg_break_point:
+ \prg_break_point:Nn \seq_map_break: { }
}
\cs_new:Npn \__seq_map_pairwise_function:wNw \s__seq #1 \s__seq_stop #2
{
@@ -6470,8 +6552,32 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ #1 = \__int_eval:w #2 \__int_eval_end: }
\cs_new_protected:Npn \int_gset:Nn #1#2
{ \tex_global:D #1 = \__int_eval:w #2 \__int_eval_end: }
-\cs_generate_variant:Nn \int_set:Nn { c }
-\cs_generate_variant:Nn \int_gset:Nn { c }
+\cs_generate_variant:Nn \int_set:Nn { NV , c , cV }
+\cs_generate_variant:Nn \int_gset:Nn { NV , c , cV }
+\cs_new_protected:Npn \int_set_regex_count:Nnn #1#2#3
+ { \regex_count:nnN {#2} {#3} #1 }
+\cs_generate_variant:Nn \int_set_regex_count:Nnn { c }
+\cs_new_protected:Npn \int_gset_regex_count:Nnn #1#2#3
+ {
+ \group_begin:
+ \int_set_eq:NN \l__int_internal_a_int #1
+ \regex_count:nnN {#2} {#3} \l__int_internal_a_int
+ \int_gset_eq:NN #1 \l__int_internal_a_int
+ \group_end:
+ }
+\cs_generate_variant:Nn \int_gset_regex_count:Nnn { c }
+\cs_new_protected:Npn \int_set_regex_count:NNn #1#2#3
+ { \regex_count:NnN #2 {#3} #1 }
+\cs_generate_variant:Nn \int_set_regex_count:Nnn { c }
+\cs_new_protected:Npn \int_gset_regex_count:NNn #1#2#3
+ {
+ \group_begin:
+ \int_set_eq:NN \l__int_internal_a_int #1
+ \regex_count:NnN #2 {#3} \l__int_internal_a_int
+ \int_gset_eq:NN #1 \l__int_internal_a_int
+ \group_end:
+ }
+\cs_generate_variant:Nn \int_gset_regex_count:NNn { c }
\cs_new_eq:NN \int_use:N \tex_the:D
\cs_new:Npn \int_use:c #1 { \tex_the:D \cs:w #1 \cs_end: }
\cs_new_protected:Npn \__int_compare_error:
@@ -7584,6 +7690,9 @@ Type H <return> for immediate help}\def~{\errmessage{%
\__sys_const:nn { sys_if_engine_ #1 }
{ \str_if_eq_p:Vn \c_sys_engine_str {#1} }
}
+\__sys_const:nn
+ { sys_if_engine_opentype }
+ { \cs_if_exist_p:N \tex_Umathcode:D }
\group_begin:
\cs_set_eq:NN \lua_now:e \tex_directlua:D
\str_const:Ne \c_sys_engine_exec_str
@@ -8640,6 +8749,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \clist_use:Nn #1#2
{ \clist_use:Nnnn #1 {#2} {#2} {#2} }
\cs_generate_variant:Nn \clist_use:Nn { c }
+\cs_new_eq:NN \clist_use:N \tl_use:N
+\cs_generate_variant:Nn \clist_use:N { c }
\cs_new:Npn \clist_use:nnnn #1#2#3#4
{
\__clist_use:Nw \__clist_use_none_delimit_by_s_stop:w
@@ -9074,7 +9185,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\group_end:
\group_begin:
\char_set_catcode_active:N \*
- \tl_const:Nn \c_catcode_active_tl { \exp_not:N * }
+ \tl_const:Nn \c__token_active_tl { \exp_not:N * }
\group_end:
\prg_new_conditional:Npnn \token_if_group_begin:N #1 { p , T , F , TF }
{
@@ -9132,7 +9243,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\prg_new_conditional:Npnn \token_if_active:N #1 { p , T , F , TF }
{
- \if_catcode:w \exp_not:N #1 \c_catcode_active_tl
+ \if_catcode:w \exp_not:N #1 \c__token_active_tl
\prg_return_true: \else: \prg_return_false: \fi:
}
\prg_new_eq_conditional:NNn \token_if_eq_meaning:NN \cs_if_eq:NN
@@ -9934,7 +10045,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_after:wN { \tl_to_str:n {#2} }
}
}
- { \exp_after:wN \__prop_get_linked:w #1 {#2} \use:n { } { } }
+ { \exp_after:wN \__prop_get_linked:w #1 {#2} \exp_not:n { } { } }
}
\cs_new:Npn \__prop_item:nnn #1#2#3
{
@@ -12363,6 +12474,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{#3}
}
}
+\cs_new_protected:Npn \file_forget:n #1
+ { \cs_undefine:c { __file_seen_ \file_full_name:n {#1} : } }
\cs_new_protected:Npn \file_get_full_name:nN #1#2
{
\file_get_full_name:nNF {#1} #2
@@ -12952,8 +13065,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ #1 = \__dim_eval:w #2 \__dim_eval_end: \scan_stop: }
\cs_new_protected:Npn \dim_gset:Nn #1#2
{ \tex_global:D #1 = \__dim_eval:w #2 \__dim_eval_end: \scan_stop: }
-\cs_generate_variant:Nn \dim_set:Nn { c }
-\cs_generate_variant:Nn \dim_gset:Nn { c }
+\cs_generate_variant:Nn \dim_set:Nn { NV , c , cV }
+\cs_generate_variant:Nn \dim_gset:Nn { NV , c , cV }
\cs_new_protected:Npn \dim_set_eq:NN #1#2
{ #1 = #2 \scan_stop: }
\cs_generate_variant:Nn \dim_set_eq:NN { c , Nc , cc }
@@ -13379,8 +13492,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ #1 = \tex_glueexpr:D #2 \scan_stop: }
\cs_new_protected:Npn \skip_gset:Nn #1#2
{ \tex_global:D #1 = \tex_glueexpr:D #2 \scan_stop: }
-\cs_generate_variant:Nn \skip_set:Nn { c }
-\cs_generate_variant:Nn \skip_gset:Nn { c }
+\cs_generate_variant:Nn \skip_set:Nn { NV , c , cV }
+\cs_generate_variant:Nn \skip_gset:Nn { NV , c , cV }
\cs_new_protected:Npn \skip_set_eq:NN #1#2 { #1 = #2 }
\cs_generate_variant:Nn \skip_set_eq:NN { c , Nc , cc }
\cs_new_protected:Npn \skip_gset_eq:NN #1#2 { \tex_global:D #1 = #2 }
@@ -13472,8 +13585,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ #1 = \tex_muexpr:D #2 \scan_stop: }
\cs_new_protected:Npn \muskip_gset:Nn #1#2
{ \tex_global:D #1 = \tex_muexpr:D #2 \scan_stop: }
-\cs_generate_variant:Nn \muskip_set:Nn { c }
-\cs_generate_variant:Nn \muskip_gset:Nn { c }
+\cs_generate_variant:Nn \muskip_set:Nn { NV , c , cV }
+\cs_generate_variant:Nn \muskip_gset:Nn { NV , c , cV }
\cs_new_protected:Npn \muskip_set_eq:NN #1#2 { #1 = #2 }
\cs_generate_variant:Nn \muskip_set_eq:NN { c , Nc , cc }
\cs_new_protected:Npn \muskip_gset_eq:NN #1#2 { \tex_global:D #1 = #2 }
@@ -17437,8 +17550,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \__kernel_tl_gset:Nx #1 { \exp_not:f { \__fp_parse:n {#2} } } }
\cs_new_protected:Npn \fp_const:Nn #1#2
{ \tl_const:Ne #1 { \exp_not:f { \__fp_parse:n {#2} } } }
-\cs_generate_variant:Nn \fp_set:Nn {c}
-\cs_generate_variant:Nn \fp_gset:Nn {c}
+\cs_generate_variant:Nn \fp_set:Nn { NV , c , cV }
+\cs_generate_variant:Nn \fp_gset:Nn { NV , c , cV }
\cs_generate_variant:Nn \fp_const:Nn {c}
\cs_new_eq:NN \fp_set_eq:NN \tl_set_eq:NN
\cs_new_eq:NN \fp_gset_eq:NN \tl_gset_eq:NN
@@ -22287,6 +22400,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_generate_variant:Nn \bitset_to_arabic:N { c }
\cs_generate_variant:Nn \bitset_to_bin:N { c }
+\cs_new_eq:NN \bitset_use:N \tl_use:N
+\cs_generate_variant:Nn \bitset_use:N { c }
\cs_new:Npn \bitset_item:Nn #1#2
{
\prop_if_in:cnTF { g__bitset_ \cs_to_str:N #1 _name_prop } {#2}
@@ -22669,8 +22784,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\group_begin:
\int_set:Nn \tex_endlinechar:D { 32 }
\char_set_catcode_invalid:n { 0 }
- \bool_lazy_or:nnTF
- { \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: }
+ \sys_if_engine_opentype:TF
{ \int_step_function:nN { 31 } \char_set_catcode_invalid:n }
{ \int_step_function:nN { 31 } \char_set_catcode_active:n }
\int_step_function:nnN { 33 } { 64 } \char_set_catcode_other:n
@@ -22695,8 +22809,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\char_set_catcode_group_end:n { 125 } % right brace
\char_set_catcode_space:n { 126 } % tilde
\char_set_catcode_invalid:n { 127 } % ^^?
- \bool_lazy_or:nnF
- { \sys_if_engine_xetex_p: } { \sys_if_engine_luatex_p: }
+ \sys_if_engine_opentype:F
{ \int_step_function:nnN { 128 } { 255 } \char_set_catcode_active:n }
\__cctab_gset:n { \c_code_cctab }
\group_end:
@@ -24475,9 +24588,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\exp_args:Ne \tl_to_str:n
{ \str_map_function:nN {#1} \__str_convert_pdfname:n }
}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\cs_new:Npn \__str_convert_pdfname:n #1
{
@@ -30569,11 +30680,19 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new_protected:Npn \color_select:nn #1#2
{
- \__color_select_main:Nw \l__color_current_tl
- #1 / / \s__color_mark #2 / / \s__color_stop
+ \__color_select_main:Nnn \l__color_current_tl {#1} {#2}
\__color_finalise_current:
\__color_select:N \l__color_current_tl
}
+\cs_new_protected:Npn \__color_select_main:Nnn #1#2#3
+ {
+ \use:e
+ {
+ \exp_not:N \__color_select_main:Nw \exp_not:N #1
+ \exp_not:n {#2} / / \exp_not:N \s__color_mark
+ #3 / / \exp_not:N \s__color_stop
+ }
+ }
\cs_new_protected:Npn \__color_select_main:Nw
#1 #2 / #3 / #4 \s__color_mark #5 / #6 / #7 \s__color_stop
{
@@ -30620,10 +30739,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_protected:Npn \color_math:nnn #1#2#3
{
\__color_math:nn {#3}
- {
- \__color_select_main:Nw \l__color_current_tl
- #1 / / \s__color_mark #2 / / \s__color_stop
- }
+ { \__color_select_main:Nnn \l__color_current_tl {#1} {#2} }
}
\cs_new_protected:Npn \__color_math:nn #1#2
{
@@ -30721,14 +30837,12 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new_protected:Npn \color_fill:nn #1#2
{
- \__color_select_main:Nw \l__color_current_tl
- #1 / / \s__color_mark #2 / / \s__color_stop
+ \__color_select_main:Nnn \l__color_current_tl {#1} {#2}
\exp_after:wN \__color_draw:nnn \l__color_current_tl { fill }
}
\cs_new_protected:Npn \color_stroke:nn #1#2
{
- \__color_select_main:Nw \l__color_current_tl
- #1 / / \s__color_mark #2 / / \s__color_stop
+ \__color_select_main:Nnn \l__color_current_tl {#1} {#2}
\exp_after:wN \__color_draw:nnn \l__color_current_tl { stroke }
}
\cs_new_protected:Npn \__color_draw:nnn #1#2#3
@@ -30857,6 +30971,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prop_new:c { l__color_named_._prop }
\tl_new:c { l__color_named_._tl }
\tl_set:ce { l__color_named_._tl } { \__color_model:N \l__color_current_tl }
+\prop_put:cve { l__color_named_._prop } { l__color_named_._tl }
+ { \__color_values:N \l__color_current_tl }
\cs_new_protected:Npn \color_export:nnN #1#2#3
{
\group_begin:
@@ -30869,8 +30985,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
\cs_new_protected:Npn \color_export:nnnN #1#2#3#4
{
- \__color_select_main:Nw #4
- #1 / / \s__color_mark #2 / / \s__color_stop
+ \__color_select_main:Nnn #4 {#1} {#2}
\__color_export:nN {#3} #4
}
\cs_new_protected:Npn \__color_export:nN #1#2
@@ -32263,7 +32378,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_protected:Npn \vcoffin_gset_end: { }
\cs_new_protected:Npn \coffin_set_eq:NN #1#2
{
- \__coffin_if_exist:NT #1
+ \__coffin_if_exist:NT #2
{
\box_set_eq:NN #1 #2
\prop_set_eq:cc { coffin ~ \__coffin_to_value:N #1 ~ corners }
@@ -32275,7 +32390,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_generate_variant:Nn \coffin_set_eq:NN { c , Nc , cc }
\cs_new_protected:Npn \coffin_gset_eq:NN #1#2
{
- \__coffin_if_exist:NT #1
+ \__coffin_if_exist:NT #2
{
\box_gset_eq:NN #1 #2
\prop_gset_eq:cc { coffin ~ \__coffin_to_value:N #1 ~ corners }
@@ -32296,6 +32411,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new_eq:NN \coffin_dp:c \box_dp:c
\cs_new_eq:NN \coffin_ht:N \box_ht:N
\cs_new_eq:NN \coffin_ht:c \box_ht:c
+\cs_new_eq:NN \coffin_ht_plus_dp:N \box_ht_plus_dp:N
+\cs_new_eq:NN \coffin_ht_plus_dp:c \box_ht_plus_dp:c
\cs_new_eq:NN \coffin_wd:N \box_wd:N
\cs_new_eq:NN \coffin_wd:c \box_wd:c
\cs_new_protected:Npn \__coffin_get_pole:NnN #1#2#3
@@ -33360,9 +33477,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\prop_gput:Nnn \g_msg_module_name_prop { luatex } { LaTeX }
\prop_gput:Nnn \g_msg_module_type_prop { luatex } { }
%% File: l3unicode.dtx
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\cs_new:Npn \codepoint_str_generate:n #1
{
@@ -33540,9 +33655,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \exp_args:Ne \__codepoint_to_nfd:n { \int_eval:n {#1} } }
\cs_new:Npn \__codepoint_to_nfd:n #1
{ \__codepoint_to_nfd:nn {#1} { \char_value_catcode:n {#1} } }
-\bool_lazy_or:nnF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:F
{
\cs_gset:Npn \__codepoint_to_nfd:n #1
{
@@ -34130,9 +34243,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
{ \prg_return_false: }
}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\cs_new:Npn \__text_codepoint_process:nN #1#2 { #1 {#2} }
}
@@ -34170,9 +34281,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__text_codepoint_process:nNNNN #1#2#3#4#5
{ #1 {#2#3#4#5} }
}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\prg_new_conditional:Npnn
\__text_codepoint_compare:nNn #1#2#3 { TF , p }
@@ -35164,9 +35273,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:TF
{
\cs_new:Npn \__text_change_case_catcode:nn #1#2
{ \__text_char_catcode:N #1 }
@@ -36280,9 +36387,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
}
}
-\bool_lazy_or:nnF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
+\sys_if_engine_opentype:F
{
\text_declare_uppercase_mapping:nn { "01F0 } { \v { J } }
}
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
index c94195297d0..e63ad6c9a29 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-08-30}%
+\def\ExplFileDate{2024-12-25}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
index 4a7cb9d4142..29b9700c170 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-08-30}%
+\def\ExplFileDate{2024-12-25}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
index 50f6fa4466d..7f73b6bdd6f 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-08-30}%
+\def\ExplFileDate{2024-12-25}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3debug.def b/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
index 7ee8497d7b1..7b5724918d0 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: l3debug.dtx
-\ProvidesExplFile{l3debug.def}{2024-08-30}{}{L3 Debugging support}
+\ProvidesExplFile{l3debug.def}{2024-12-25}{}{L3 Debugging support}
\scan_new:N \s__debug_stop
\cs_new:Npn \__debug_use_i_delimit_by_s_stop:nw #1 #2 \s__debug_stop {#1}
\quark_new:N \q__debug_recursion_tail
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
index bedee4686bf..0649af9fbbd 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
@@ -20,7 +20,7 @@
%%
%% File: l3doc.dtx
\RequirePackage{calc}
-\ProvidesExplClass{l3doc}{2024-08-30}{}
+\ProvidesExplClass{l3doc}{2024-12-25}{}
{L3 Experimental documentation class}
\clist_new:N \g_docinput_clist
\seq_new:N \g_doc_functions_seq
@@ -91,8 +91,8 @@
\bool_new:N \l__codedoc_in_implementation_bool
\bool_new:N \g__codedoc_typeset_documentation_bool
\bool_new:N \g__codedoc_typeset_implementation_bool
-\bool_set_true:N \g__codedoc_typeset_documentation_bool
-\bool_set_true:N \g__codedoc_typeset_implementation_bool
+\bool_gset_true:N \g__codedoc_typeset_documentation_bool
+\bool_gset_true:N \g__codedoc_typeset_implementation_bool
\tl_new:N \g__codedoc_base_name_tl
\prop_new:N \l__codedoc_variants_prop
\clist_new:N \l__codedoc_function_label_clist
@@ -439,12 +439,22 @@
\raggedbottom
\bool_if:NT \g__codedoc_lmodern_bool
{
- \RequirePackage[T1]{fontenc}
- \RequirePackage{lmodern}
- \group_begin:
- \ttfamily
- \DeclareFontShape{T1}{lmtt}{m}{it}{<->ec-lmtto10}{}
- \group_end:
+ \sys_if_engine_opentype:TF
+ {
+ \group_begin:
+ \ttfamily
+ \DeclareFontShape{TU}{lmtt}{m}{it}
+ {<-> \UnicodeFontFile{lmmonoslant10-regular}{}}{}
+ \group_end:
+ }
+ {
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage{lmodern}
+ \group_begin:
+ \ttfamily
+ \DeclareFontShape{T1}{lmtt}{m}{it}{<->ec-lmtto10}{}
+ \group_end:
+ }
}
\RequirePackage{hypdoc}
\cs_gset:Npn \MakePrivateLetters
@@ -1026,7 +1036,7 @@
\cs_new_protected:Npn \__codedoc_function_typeset_stop:
{
\par
- \dim_set:Nn \prevdepth { \box_dp:N \l__codedoc_descr_coffin }
+ \dim_set:Nn \prevdepth { \coffin_dp:N \l__codedoc_descr_coffin }
\allowbreak
}
\cs_new_protected:Npn \__codedoc_function_init:
@@ -1062,7 +1072,7 @@
\dim_zero:N \l__codedoc_trial_width_dim
\hcoffin_set:Nn \l__codedoc_functions_coffin { \__codedoc_typeset_functions: }
\dim_set:Nn \l__codedoc_trial_width_dim
- { \box_wd:N \l__codedoc_functions_coffin }
+ { \coffin_wd:N \l__codedoc_functions_coffin }
\bool_set:Nn \l__codedoc_long_name_bool
{ \dim_compare_p:nNn \l__codedoc_trial_width_dim > \marginparwidth }
}
@@ -1090,7 +1100,7 @@
\coffin_join:NnnNnnnn
\l__codedoc_output_coffin {l} {b}
\l__codedoc_descr_coffin {l} {t}
- {0.75\marginparwidth + \marginparsep} {-\medskipamount}
+ {\marginparwidth + \marginparsep} {-\medskipamount}
\coffin_typeset:Nnnnn \l__codedoc_output_coffin
{\l__codedoc_descr_coffin-l} {\l__codedoc_descr_coffin-t}
{0pt} {0pt}
@@ -1236,7 +1246,7 @@
{
\textwidth
\bool_if:NT \l__codedoc_long_name_bool
- { + 0.75 \marginparwidth - \l__codedoc_trial_width_dim }
+ { + \marginparwidth - \l__codedoc_trial_width_dim }
}
\hbox_gset:Nw \g__codedoc_syntax_box
\small \ttfamily
@@ -1709,7 +1719,7 @@
\AddToHook{env/variable/begin}{\def\footnote{\__codedoc_fn_footnote:nn{variable}}}
\newenvironment{TemplateInterfaceDescription}[1]
{
- \subsection{The~object~type~`#1'}
+ \subsection{The~template~type~`#1'}
\begingroup
\@beginparpenalty\@M
\description
@@ -1725,7 +1735,7 @@
}
\newenvironment{TemplateDescription}[2]
{
- \subsection{The~template~`#2'~(object~type~#1)}
+ \subsection{The~template~`#2'~(template~type~#1)}
\subsubsection*{Attributes:}
\begingroup
\@beginparpenalty\@M
@@ -1791,7 +1801,7 @@
{
\clist_map_inline:nn {#1}
{
- \clist_put_right:Nn \g_docinput_clist {##1}
+ \clist_gput_right:Nn \g_docinput_clist {##1}
\__codedoc_input:n {##1}
}
}
@@ -1885,7 +1895,7 @@
{ MMMMV - \filesep \int_use:N \c@CodelineNo }
}
}
-\tl_gclear:N \filesep
+\tl_clear_new:N \filesep
\cs_new_protected:Npn \__codedoc_index_page_hc:nn #1#2
{
\protected@write \@indexfile {}
diff --git a/Master/texmf-dist/tex/latex/lastpage/lastpage.sty b/Master/texmf-dist/tex/latex/lastpage/lastpage.sty
index ccbf32b59c4..4636d199305 100644
--- a/Master/texmf-dist/tex/latex/lastpage/lastpage.sty
+++ b/Master/texmf-dist/tex/latex/lastpage/lastpage.sty
@@ -9,10 +9,10 @@
%% This is a generated file.
%%
%% Project: lastpage
-%% Version: 2024-07-07 v2.1c
+%% Version: 2025-01-27 v2.1e
%% Info: Refers to last page's name
%%
-%% Copyright (C) 2010 - 2024 by
+%% Copyright (C) 2010 - 2025 by
%% H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de>
%% Portions of code copyrighted by other people as marked.
%%
@@ -31,7 +31,7 @@
%% The Current Maintainer of this work is H.-Martin Muench.
%%
%% This package was invented by Jeffrey P. Goldberg.
-%% I thought that a replacement was needed and therefore created the pageslts package,
+%% I thought that an enhancement was needed and therefore created the pageslts package,
%% https://ctan.org/pkg/pageslts. Nevertheless, for compatibility with existing
%% documents/packages as well as for the low amount of resources needed by the
%% lastpage package (no new counter!), I updated this package.
@@ -59,7 +59,7 @@
%% Part of the "lastpage" package
%% loads either lastpage2.09.sty for TeX 2.09 or lastpage2e.sty for LaTeX 2e
%% with code from https://groups.google.com/g/comp.text.tex/c/-Qmhj1ZI4xM
-\def\loadlastpage{\ProvidesPackage{lastpage}[2024/07/07 v2.1c lastpage: 2.09 or 2e? (HMM)]\relax\RequirePackage{lastpage2e}}
+\def\loadlastpage{\ProvidesPackage{lastpage}[2025/01/27 v2.1e lastpage: 2.09 or 2e? (HMM)]\relax\RequirePackage{lastpage2e}}
\begingroup \expandafter \ifx \csname documentclass\endcsname\relax
\endgroup \expandafter \input{lastpage209.sty}
\else \endgroup \expandafter \loadlastpage
diff --git a/Master/texmf-dist/tex/latex/lastpage/lastpage209.sty b/Master/texmf-dist/tex/latex/lastpage/lastpage209.sty
index feb652121fa..8cf970bccbd 100644
--- a/Master/texmf-dist/tex/latex/lastpage/lastpage209.sty
+++ b/Master/texmf-dist/tex/latex/lastpage/lastpage209.sty
@@ -9,10 +9,10 @@
%% This is a generated file.
%%
%% Project: lastpage
-%% Version: 2024-07-07 v2.1c
+%% Version: 2025-01-27 v2.1e
%% Info: Refers to last page's name
%%
-%% Copyright (C) 2010 - 2024 by
+%% Copyright (C) 2010 - 2025 by
%% H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de>
%% Portions of code copyrighted by other people as marked.
%%
@@ -31,7 +31,7 @@
%% The Current Maintainer of this work is H.-Martin Muench.
%%
%% This package was invented by Jeffrey P. Goldberg.
-%% I thought that a replacement was needed and therefore created the pageslts package,
+%% I thought that an enhancement was needed and therefore created the pageslts package,
%% https://ctan.org/pkg/pageslts. Nevertheless, for compatibility with existing
%% documents/packages as well as for the low amount of resources needed by the
%% lastpage package (no new counter!), I updated this package.
diff --git a/Master/texmf-dist/tex/latex/lastpage/lastpage2e.sty b/Master/texmf-dist/tex/latex/lastpage/lastpage2e.sty
index e3b40d7be58..b5839f6fe00 100644
--- a/Master/texmf-dist/tex/latex/lastpage/lastpage2e.sty
+++ b/Master/texmf-dist/tex/latex/lastpage/lastpage2e.sty
@@ -9,10 +9,10 @@
%% This is a generated file.
%%
%% Project: lastpage
-%% Version: 2024-07-07 v2.1c
+%% Version: 2025-01-27 v2.1e
%% Info: Refers to last page's name
%%
-%% Copyright (C) 2010 - 2024 by
+%% Copyright (C) 2010 - 2025 by
%% H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de>
%% Portions of code copyrighted by other people as marked.
%%
@@ -31,7 +31,7 @@
%% The Current Maintainer of this work is H.-Martin Muench.
%%
%% This package was invented by Jeffrey P. Goldberg.
-%% I thought that a replacement was needed and therefore created the pageslts package,
+%% I thought that an enhancement was needed and therefore created the pageslts package,
%% https://ctan.org/pkg/pageslts. Nevertheless, for compatibility with existing
%% documents/packages as well as for the low amount of resources needed by the
%% lastpage package (no new counter!), I updated this package.
@@ -58,9 +58,9 @@
%%
%% Part of the "lastpage" package
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\ProvidesPackage{lastpage2e}[2024/07/07 v2.1c %
- Decide which 2e lastpage version to use (HMM)]
-\@ifl@t@r\fmtversion{2023/06/01}{\RequirePackage{lastpagemodern}}{%
+\ProvidesPackage{lastpage2e}[2025/01/27 v2.1e %
+ Decide which 2e lastpage version to use (HMM)]
+\@ifl@t@r\fmtversion{2024/06/01}{\RequirePackage{lastpagemodern}}{%
\RequirePackage{lastpageclassic}}
\message{^^J}
\endinput
diff --git a/Master/texmf-dist/tex/latex/lastpage/lastpageclassic.sty b/Master/texmf-dist/tex/latex/lastpage/lastpageclassic.sty
index 88285efc2c6..d2ee79f0c38 100644
--- a/Master/texmf-dist/tex/latex/lastpage/lastpageclassic.sty
+++ b/Master/texmf-dist/tex/latex/lastpage/lastpageclassic.sty
@@ -9,10 +9,10 @@
%% This is a generated file.
%%
%% Project: lastpage
-%% Version: 2024-07-07 v2.1c
+%% Version: 2025-01-27 v2.1e
%% Info: Refers to last page's name
%%
-%% Copyright (C) 2010 - 2024 by
+%% Copyright (C) 2010 - 2025 by
%% H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de>
%% Portions of code copyrighted by other people as marked.
%%
@@ -31,7 +31,7 @@
%% The Current Maintainer of this work is H.-Martin Muench.
%%
%% This package was invented by Jeffrey P. Goldberg.
-%% I thought that a replacement was needed and therefore created the pageslts package,
+%% I thought that an enhancement was needed and therefore created the pageslts package,
%% https://ctan.org/pkg/pageslts. Nevertheless, for compatibility with existing
%% documents/packages as well as for the low amount of resources needed by the
%% lastpage package (no new counter!), I updated this package.
@@ -58,7 +58,7 @@
%%
%% Part of the "lastpage" package
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\ProvidesPackage{lastpageclassic}[2024/07/07 v2.1c %
+\ProvidesPackage{lastpageclassic}[2025/01/27 v2.1e %
Refers to last page's name (HMM; JPG)]
%% allows for things like "Page \thepage{} of \pageref{LastPage}"
%% to get "Page 7 of 9"
@@ -197,8 +197,7 @@
Press Ctrl+Z to exit.\MessageBreak%
But it is OK if the .aux file was already updated\MessageBreak%
by a previous compiler run\MessageBreak%
- and would not have changed anyway.\MessageBreak%
- }%
+ and would not have changed anyway.}%
\fi%
\fi%
}
diff --git a/Master/texmf-dist/tex/latex/lastpage/lastpagemodern.sty b/Master/texmf-dist/tex/latex/lastpage/lastpagemodern.sty
index abdec5b0852..c5c19bbba42 100644
--- a/Master/texmf-dist/tex/latex/lastpage/lastpagemodern.sty
+++ b/Master/texmf-dist/tex/latex/lastpage/lastpagemodern.sty
@@ -9,10 +9,10 @@
%% This is a generated file.
%%
%% Project: lastpage
-%% Version: 2024-07-07 v2.1c
+%% Version: 2025-01-27 v2.1e
%% Info: Refers to last page's name
%%
-%% Copyright (C) 2010 - 2024 by
+%% Copyright (C) 2010 - 2025 by
%% H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de>
%% Portions of code copyrighted by other people as marked.
%%
@@ -31,7 +31,7 @@
%% The Current Maintainer of this work is H.-Martin Muench.
%%
%% This package was invented by Jeffrey P. Goldberg.
-%% I thought that a replacement was needed and therefore created the pageslts package,
+%% I thought that an enhancement was needed and therefore created the pageslts package,
%% https://ctan.org/pkg/pageslts. Nevertheless, for compatibility with existing
%% documents/packages as well as for the low amount of resources needed by the
%% lastpage package (no new counter!), I updated this package.
@@ -57,8 +57,8 @@
%% Hans-Klaus Muench + 2014-08-24
%%
%% Part of the "lastpage" package
-\NeedsTeXFormat{LaTeX2e}[2023-06-01]
-\ProvidesPackage{lastpagemodern}[2024-07-07 v2.1c %
+\NeedsTeXFormat{LaTeX2e}[2024-11-01]
+\ProvidesPackage{lastpagemodern}[2025-01-27 v2.1e %
Refers to last page's name (HMM; JPG)]
%% allows for things like "Page \thepage{} of \pageref{LastPage}"
%% to get "Page 7 of 9" or "Page VII of IX";
@@ -79,10 +79,15 @@
\else#2% is numeric
\fi}
-\AddToHook{begindocument/end}{\gdef\lastpage@putlabel{\relax}}
+\AddToHook{begindocument/end}{%
+ \IfPackageLoadedT{pageslts}{%
+ \PackageNoteNoLine{lastpage}{Packages pageslts and lastpage used.\MessageBreak%
+ lastpage is not necessary when loading pageslts}%
+ }%
+ \gdef\lastpage@putlabel{\relax}%
+ }
-%% from https://tex.stackexchange.com/a/12811/542425
-%% with thanks to Prof. Enrico Gregorio
+%% Code provided by Prof. Enrico Gregorio at https://tex.stackexchange.com/a/542425
\long\def\protected@iwrite#1#2#3{%
\begingroup%
#2%
@@ -94,34 +99,39 @@
}
\newcommand{\lastpage@makeHy}{%
- \gdef\lastpage@Hy{}%
- \IfPackageLoadedTF{hyperref}{%
- \ifHy@pageanchor%
- \@ifundefined{@currentHpage}{%
- \PackageError{lastpage}{%
- Kernel command \string\@currentHpage\space is undefined}{%
- Please contact the lastpage maintainer.}%
- }{\xdef\lastpage@Hptest{Doc-Start}%
- \ifx\lastpage@Hptest\@currentHpage\relax%
- \gdef\lastpage@Hy{\@currentHpage}%
- \else%
- \edef\lastpage@Hptest{\@currentHpage}%
- \ifx\lastpage@Hptest\empty\relax%
- \else%
- \gdef\lastpage@Hy{\lastpage@rmpage{\@currentHpage}}%
- \ifx\lastpage@lastpageHy\empty\relax%
- \PackageWarningNoLine{lastpage}{%
- \string\@currentHpage\space is\MessageBreak%
- \meaning\@currentHpage\MessageBreak%
- not beginning with "page.",\MessageBreak%
- \string\lastpage@lastpageHy\space is now let empty.}%
- \fi%
+ \def\lastpage@Hptest{Doc-Start}%
+ \ifx\lastpage@Hptest\@currentHpage\relax%
+ \gdef\lastpage@Hy{\@currentHpage}%
+ \else%
+ \edef\lastpage@Hptest{\@currentHpage}%
+ \ifx\lastpage@Hptest\empty\relax%
+ \else%
+ \def\lastpage@Hptest{page.}%
+ \ifx\lastpage@Hptest\@currentHpage\relax
+ \def\lastpage@Hptest{\csname @fnsymbol\endcsname \c@page }%
+ \ifx\lastpage@Hptest\thepage\relax%
+ \ifnum\value{page}=3\else%
+ \PackageWarningNoLine{lastpage}{You should add a\MessageBreak
+ \string\ProvideTextCommand{...}{PD1}{...}\MessageBreak%
+ (see the lastpage package manual, 3.13 %
+ \string\pagenumbering{fnsymbol})\MessageBreak%
+ to your document's preamble}%
\fi%
\fi%
- }%
- \fi%
- }{}%
- }%
+ \PackageWarningNoLine{lastpage}{%
+ \string\@currentHpage\space is\MessageBreak%
+ just "page." without number,\MessageBreak%
+ \string\lastpage@lastpageHy\space is now let empty}%
+ \else%
+ \gdef\lastpage@Hy{\lastpage@rmpage{\@currentHpage}}%
+ \ifx\lastpage@lastpageHy\empty\relax%
+ \PackageWarningNoLine{lastpage}{%
+ \string\@currentHpage\space is\MessageBreak%
+ \meaning\@currentHpage\MessageBreak%
+ not beginning with "page.",\MessageBreak%
+ \string\lastpage@lastpageHy\space is now let empty}%
+ \fi\fi\fi\fi%
+ }
%% Code provided by David Carlisle at https://tex.stackexchange.com/a/721877
\def\lastpage@rmpage#1{%
@@ -132,38 +142,39 @@
\fi}
\newcommand{\lastpage@putl@bel}{%
- \IfPackageLoadedTF{pageslts}{\relax}{%
- \IfPackageLoadedTF{hyperref}{%
- \IfPackageAtLeastTF{hyperref}{2023-11-07}{\relax}{%
- \PackageError{lastpage}{hyperref package version too old}{%
- required version: 2023-11-07 or newer, found version:\MessageBreak%
- \csname ver@hyperref.sty\endcsname\MessageBreak%
- Update hyperref or use lastpageclassic.sty instead of\MessageBreak%
- lastpagemodern.sty!}}%
- \ifHy@pageanchor\else%
- \PackageWarningNoLine{lastpage}{%
- The \string\pageref{LastPage} link does not work\MessageBreak%
- using hyperref with disabled option `pageanchor'.\MessageBreak%
- Better enable `pageanchor' or use\MessageBreak%
- \string\pageref*{LastPage} (not generating a link)}%
- \fi%
- }{}%
- \begingroup%
- \addtocounter{page}{-1}%
- \protected@iwrite\@auxout{}{\string\newlabel{LastPage}{%
- {\@currentlabel}{\thepage}{\@currentlabelname}%
- {\IfPackageLoadedTF{hyperref}{\ifHy@pageanchor\@currentHpage\fi%
- }{\@currentHref}}%
- {\@kernel@reserved@label@data}}%
- }%
- \protected@iwrite\@auxout{}{%
- \string\gdef\string\lastpage@lastpage{\thepage}}%
- \lastpage@makeHy%
- \protected@iwrite\@auxout{}{%
- \string\gdef\string\lastpage@lastpageHy{\lastpage@Hy}}%
- \addtocounter{page}{+1}%
- \endgroup%
+ \IfPackageLoadedT{hyperref}{%
+ \IfPackageAtLeastF{hyperref}{2024-10-30}{%
+ \PackageError{lastpage}{hyperref package version too old}{%
+ required version: 2024-10-30 or newer, found version:\MessageBreak%
+ \csname ver@hyperref.sty\endcsname\MessageBreak%
+ Update hyperref or use lastpageclassic.sty instead of\MessageBreak%
+ lastpagemodern.sty!}}%
+ \ifHy@pageanchor\else%
+ \PackageWarningNoLine{lastpage}{%
+ The \string\pageref{LastPage} link does not work\MessageBreak%
+ using hyperref with disabled option `pageanchor'.\MessageBreak%
+ Better enable `pageanchor' or use\MessageBreak%
+ \string\pageref*{LastPage} (not generating a link)}%
+ \fi%
}%
+ \begingroup%
+ \addtocounter{page}{-1}%
+ \IfPackageLoadedTF{pageslts}{% then pageslts writes the label for "LastPage".
+ }{\protected@iwrite\@auxout{}{\string\newlabel{LastPage}{%
+ {\@currentlabel}{\thepage}{\@currentlabelname}%
+ {\IfPackageLoadedTF{hyperref}{\ifHy@pageanchor\@currentHpage\fi%
+ }{\@currentHref}}%
+ {\@kernel@reserved@label@data}}%
+ }%
+ }%
+ \protected@iwrite\@auxout{}{%
+ \string\gdef\string\lastpage@lastpage{\thepage}}%
+ \gdef\lastpage@Hy{}%
+ \IfPackageLoadedT{hyperref}{\ifHy@pageanchor\lastpage@makeHy\fi}%
+ \protected@iwrite\@auxout{}{%
+ \string\gdef\string\lastpage@lastpageHy{\lastpage@Hy}}%
+ \addtocounter{page}{+1}%
+ \endgroup%
}
\newcommand{\lastpage@fileswtest}[2]{%
@@ -201,17 +212,15 @@
}
\AddToHook{enddocument/afterlastpage}{%
- \IfPackageLoadedTF{pageslts}{\relax}{%
- \gdef\lastpage@putlabel{??}%
- \ifx\lastpage@lastpage\lastpage@putlabel\relax%
- \AddToHook{enddocument/info}{%
- \PackageWarning{lastpage}{Rerun to get the references right}%
- }%
- \fi%
- }%
+ \gdef\lastpage@putlabel{??}%
+ \ifx\lastpage@lastpage\lastpage@putlabel\relax%
+ \AddToHook{enddocument/info}{%
+ \PackageWarning{lastpage}{Rerun to get the references right}%
+ }%
+ \fi%
\gdef\lastpage@putlabel{\relax}%
\if@filesw%
- \message{^^Jenddocument/afterlastpage: lastpage setting LastPage.^^J}%
+ \message{^^Jenddocument/afterlastpage (AED): lastpage setting LastPage.^^J}%
\IfPackageLoadedTF{french}{%
\addtocounter{page}{+1}\lastpage@putl@bel\addtocounter{page}{-1}%
}{\IfPackageLoadedTF{frenchle}{%
@@ -220,10 +229,8 @@
}%
}%
\else%
- \IfPackageLoadedTF{pageslts}{\relax}{%
- \lastpage@fileswtest{\thepage}{\lastpage@lastpage}%
- \IfPackageLoadedTF{hyperref}{\lastpage@fileswtestHy}{\relax}%
- }%
+ \lastpage@fileswtest{\thepage}{\lastpage@lastpage}%
+ \IfPackageLoadedT{hyperref}{\lastpage@fileswtestHy}%
\fi%
}
\endinput
diff --git a/Master/texmf-dist/tex/latex/latex-lab/bib-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/bib-latex-lab-testphase.ltx
index ee69798ec39..d0fb0b78fa5 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/bib-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/bib-latex-lab-testphase.ltx
@@ -33,7 +33,7 @@
%%
%%
%% File: latex-lab-bib.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabbibdate{2024-02-12}
+\def\ltlabbibdate{2024-07-05}
\def\ltlabbibversion{0.81b}
\ProvidesFile{bib-latex-lab-testphase.ltx}
[\ltlabbibdate\space v\ltlabbibversion\space
diff --git a/Master/texmf-dist/tex/latex/latex-lab/block-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/block-latex-lab-testphase.ltx
index 937f08d1e1c..f48c2429104 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/block-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/block-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-block.dtx (C) Copyright 2021-2024 LaTeX Project
-\def\ltlabblockdate{2024-03-23}
-\def\ltlabblockversion{0.8n}
+\def\ltlabblockdate{2024-10-11}
+\def\ltlabblockversion{0.8v}
\ProvidesFile{block-latex-lab-testphase.ltx}
[\ltlabblockdate\space v\ltlabblockversion\space
blockenv implementation]
diff --git a/Master/texmf-dist/tex/latex/latex-lab/documentmetadata-support.ltx b/Master/texmf-dist/tex/latex/latex-lab/documentmetadata-support.ltx
index 91ae548e191..765755ee106 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/documentmetadata-support.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/documentmetadata-support.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: documentmetadata-support.dtx
-\def\documentmetadatasupportversion{1.0h}
-\def\documentmetadatasupportdate{2024-03-26}
+\def\documentmetadatasupportversion{1.0j}
+\def\documentmetadatasupportdate{2024-09-13}
\RequirePackage{pdfmanagement-testphase}
@@ -44,12 +44,20 @@
{ \clist_new:N \g__pdfmanagement_firstaidoff_clist }
\tl_if_exist:NF \g__pdfmanagement_testphase_tl
{ \tl_new:N \g__pdfmanagement_testphase_tl }
+\cs_new_protected:Npn \@kernel@before@DocumentMetadata
+ {
+ \ifx\Umathcode\@undefined
+ \fontencoding{T1}
+ \renewcommand\encodingdefault{T1}
+ \fi
+ }
\cs_set_protected:Npn \DocumentMetadata #1
{
\cs_if_eq:NNTF \documentclass \@twoclasseserror
{ \msg_error:nn { meta } { after-class } }
{
+ \@kernel@before@DocumentMetadata
\bool_gset_true:N \g__pdfmanagement_active_bool
\keys_set_groups:nnn { document / metadata} {init}{ #1 }
%if no backend has been loaded force it now:
@@ -163,7 +171,7 @@
}
,_pdfstandard / unknown .code:n =
{
- \msg_warning:nnn{pdf}{unknown-standard}{#1}
+ \msg_error:nnn{pdf}{unknown-standard}{#1}
}
,testphase .multichoice:
,testphase / tagpdf .code:n =
diff --git a/Master/texmf-dist/tex/latex/latex-lab/firstaid-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/firstaid-latex-lab-testphase.ltx
index 7003ae1856d..aed5cf0cc79 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/firstaid-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/firstaid-latex-lab-testphase.ltx
@@ -33,9 +33,8 @@
%%
%%
%% File: latex-lab-firstaid.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabfirstaiddate{2024-05-25}
-\def\ltlabfirstaidversion{0.85d}
-
+\def\ltlabfirstaiddate{2024-10-16}
+\def\ltlabfirstaidversion{0.85h}
\ProvidesFile{firstaid-latex-lab-testphase.ltx}
[\ltlabfirstaiddate\space v\ltlabfirstaidversion\space
latex-lab wrapper firstaid]
diff --git a/Master/texmf-dist/tex/latex/latex-lab/float-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/float-latex-lab-testphase.ltx
index 59fdaa63d95..1f8d3044969 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/float-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/float-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-float.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabfloatdate{2024-03-23}
-\def\ltlabfloatversion{0.81e}
+\def\ltlabfloatdate{2024-09-20}
+\def\ltlabfloatversion{0.81f}
\ProvidesFile{float-latex-lab-testphase.ltx}
[\ltlabfloatdate\space v\ltlabfloatversion\space latex-lab wrapper float]
diff --git a/Master/texmf-dist/tex/latex/latex-lab/graphic-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/graphic-latex-lab-testphase.ltx
index 3cc259063d4..30d6cd9efd0 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/graphic-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/graphic-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-graphic.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabgraphicdate{2024-03-13}
-\def\ltlabgraphicversion{0.80d}
+\def\ltlabgraphicdate{2024-09-18}
+\def\ltlabgraphicversion{0.80e}
\ProvidesFile{graphic-latex-lab-testphase.ltx}
[\ltlabgraphicdate\space v\ltlabgraphicversion\space latex-lab wrapper graphic]
diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-amsmath.ltx b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-amsmath.ltx
index cab7e10f301..0ca17cffdce 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-amsmath.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-amsmath.ltx
@@ -34,7 +34,7 @@
%%
%% File: latex-lab-amsmath.dtx
\ProvidesFile{latex-lab-amsmath.ltx}
- [2024-02-12 v0.1b amsmath adaptions]
+ [2024-09-18 v0.1c amsmath adaptions]
\RequirePackage{tagpdf-base}
\ExplSyntaxOn
\AddToHook{package/amsmath/after}
@@ -45,7 +45,7 @@
\noalign{%
\penalty\postdisplaypenalty\vskip-\belowdisplayskip
\vbox{
- \ifmeasuring@\tag_stop:\fi
+ \ifmeasuring@\tag_suspend:n{\measuring}\fi
\normalbaselines
\ifdim\linewidth=\columnwidth
\else \parshape\@ne \@totalleftmargin \linewidth
@@ -84,7 +84,7 @@
\def\text@#1
{{
\int_gincr:N\g__math_mathchoice_int
- \tag_stop:
+ \tag_suspend:n{\text@}
\mathchoice
{
\__math_tag_if_mathstyle:en{mathchoice-\int_use:N\g__math_mathchoice_int}{0}
diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footmisc.ltx b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footmisc.ltx
index 954efe086a5..3fb53a3934a 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footmisc.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footmisc.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-footnotes.dtx
-\def\ltlabfootnotedate{2024-03-12}
-\def\ltlabfootnoteversion{0.8d}
+\def\ltlabfootnotedate{2024-09-30}
+\def\ltlabfootnoteversion{0.8g}
%%
%% Copyright (c) 1995-2011 Robin Fairbairns
diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footnotes.ltx b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footnotes.ltx
index 2277a40c6f8..85a3b2b32a7 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footnotes.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footnotes.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-footnotes.dtx
-\def\ltlabfootnotedate{2024-03-12}
-\def\ltlabfootnoteversion{0.8d}
+\def\ltlabfootnotedate{2024-09-30}
+\def\ltlabfootnoteversion{0.8g}
\ProvidesFile{latex-lab-footnotes.ltx}
[\ltlabfootnotedate\space v\ltlabfootnoteversion\space
@@ -57,7 +57,7 @@
\bool_new:N \l__fnote_autodetect_bool
\bool_set_true:N \l__fnote_autodetect_bool
\tl_new:N \l__fnote_currentstruct_tl
-\tl_set:Nn \l__fnote_currentstruct_tl {1}
+\tl_set:Nn \l__fnote_currentstruct_tl {2}
\cs_generate_variant:Nn \hook_gput_code:nnn{nne}
\cs_generate_variant:Nn \tag_struct_use:n {e}
\cs_new_protected:Npn \fnote_step_fnmark:nn #1#2 {
@@ -157,6 +157,17 @@
\cs_new_eq:NN \__fnote_footnotemark_finish: \__fnote_footnotemark_default_finish:
\NewSocket{tagsupport/fnmark}{1}
\cs_set_eq:NN \@footnotemark \fnote_footnotemark:
+\str_if_exist:cF { l__socket_tagsupport/para/restore_plug_str }
+ {
+ \NewSocket{tagsupport/para/restore}{0}
+ \NewSocketPlug{tagsupport/para/restore}{default}
+ {
+ \tl_set:Nn \l__tag_para_main_tag_tl {text-unit}
+ \tl_set_eq:NN \l__tag_para_tag_tl\l__tag_para_tag_default_tl
+ \bool_set_false:N\l__tag_para_flattened_bool
+ }
+ \AssignSocketPlug{tagsupport/para/restore}{default}
+ }
\cs_new_protected:Npn \fnote_footnotetext:n #1 {
\__fnote_debug_footnotetext:
\hook_use:n {fntext/before}
@@ -172,6 +183,7 @@
\floatingpenalty \@MM
\hsize\columnwidth
\@parboxrestore
+ \UseTaggingSocket{para/restore}
\parindent 1em % typical default used in \@makefntext moved up here
\def\@currentcounter{footnote}
\protected@edef \@currentlabel { \p@footnote \@thefnmark }
@@ -454,10 +466,7 @@
\cs_new_protected:Npn \__fnote_gput_ref:nn #1 #2 %#1 the structure number receiving the ref #2
{
- \tag_if_active:T
- {
- \tag_struct_gput:nne {#1}{ref}{\tag_struct_object_ref:e { #2 }}
- }
+ \tag_struct_gput:nnn {#1}{ref_num}{#2}
}
\cs_new_protected:Npn \fnote_gput_refs:nn #1 #2 % pair of numbers
{
@@ -465,8 +474,6 @@
\__fnote_gput_ref:nn {#2}{#1}
}
\cs_generate_variant:Nn \fnote_gput_refs:nn {ee}
-\tl_new:N \l__fnote_dflt_struct_tl
-\tl_set:Nn \l__fnote_dflt_struct_tl {1}
\NewSocketPlug{tagsupport/fntext/begin}{FENote}
{
\tag_mc_end_push:
@@ -475,10 +482,13 @@
\tag_struct_begin:n { tag=footnote }
}
{
- \tag_struct_begin:n { tag=footnote,parent=\l__fnote_dflt_struct_tl }
+ \tag_struct_begin:n
+ {
+ tag=footnote,
+ parent=\int_max:nn{2}{\tag_get:n{current_Sect}+0}
+ }
}
\tl_set:Ne \l__fnote_currentstruct_tl { \tag_get:n{struct_num} }
- \tag_struct_begin:n { tag=footnotelabel }\tag_struct_end:
\bool_if:NTF \l__fnote_autodetect_bool
{
\fnote_mark_gpop_all:ooN { \@thefnmark }{ \l_fnote_type_tl } \l__fnote_currentrefs_seq
@@ -505,7 +515,7 @@
%\seq_show:N\l__fnote_currentrefs_seq
\seq_map_inline:Nn\l__fnote_currentrefs_seq {\MakeLinkTarget*{footnote*.##1}}
\MakeLinkTarget*{footnote*.\l__fnote_currentstruct_tl}
- \tag_struct_begin:n { tag=NonStruct,parent=\l__fnote_currentstruct_tl +1 }
+ \tag_struct_begin:n { tag=footnotelabel,parent=\l__fnote_currentstruct_tl,firstkid }
\tag_mc_begin:n { tag=Lbl }
#1
\tag_mc_end:
diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-kernel-changes.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-kernel-changes.sty
index 1282f9d899c..762391f091f 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-kernel-changes.sty
+++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-kernel-changes.sty
@@ -34,39 +34,13 @@
%%
%%
%% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabkerneldate{2024-02-12}
-\def\ltlabkernelversion{0.85c}
+\def\ltlabkerneldate{2024-07-11}
+\def\ltlabkernelversion{0.85d}
\ProvidesPackage{latex-lab-kernel-changes}
[\ltlabkerneldate\space v\ltlabkernelversion\space
General kernel and class changes]
\def\hyper@nopatch@counter{}
-\def\@definecounter#1{\expandafter\newcount\csname c@#1\endcsname
- \setcounter{#1}\z@
- \global\expandafter\let\csname cl@#1\endcsname\@empty
- \@addtoreset{#1}{@ckpt}%
- \global\expandafter\let\csname p@#1\endcsname\@empty
- \expandafter\gdef\csname theH#1\endcsname{\the\value{#1}}%new
- \expandafter
- \gdef\csname the#1\expandafter\endcsname\expandafter
- {\expandafter\@arabic\csname c@#1\endcsname}}
-\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}%
- \expandafter\gdef\csname theH#1\endcsname{\csname theH#2\endcsname.\the\value{#1}}%
-}
-\gdef\theHenumi{\the\value{enumi}}
-\gdef\theHenumii{\the\value{enumii}}
-\gdef\theHenumiii{\the\value{enumiii}}
-\gdef\theHenumiv{\the\value{enumiv}}
-\gdef\theHequation{\the\value{equation}}
-\gdef\theHfootnote{\the\value{footnote}}
-\gdef\theHmpfootnote{\the\value{mpfootnote}}
-\def\@currentHref{}
-\def\refstepcounter#1{\stepcounter{#1}%
- \edef\@currentcounter{#1}%
- \xdef\@currentHref {#1.\csname theH#1\endcsname}%
- \protected@edef\@currentlabel
- {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}%
-}
-\let\@kernel@refstepcounter\refstepcounter
+
\def\toclevel@document{-10}
\def\toclevel@part{-1}
\def\toclevel@chapter{0}
@@ -78,20 +52,23 @@
\def\toclevel@figure{1}
\def\toclevel@table{1}
\ExplSyntaxOn
-\AddToHookWithArguments{cmd/MakeLinkTarget/after}
- {
- \tag_if_active:T
- {
- \tl_if_blank:VF \@currentHref
- {
- \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
- }
- }
+\str_if_exist:cF { l__socket_tagsupport/recordtarget_str }
+ {
+ \AddToHookWithArguments{cmd/MakeLinkTarget/after}
+ {
+ \tag_if_active:T
+ {
+ \tl_if_blank:VF \@currentHref
+ {
+ \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
+ }
+ }
+ }
}
\ExplSyntaxOff
%% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabsecdate{2024-02-12}
-\def\ltlabsecversion{0.84c}
+\def\ltlabsecdate{2024-10-04}
+\def\ltlabsecversion{0.84f}
\ifdefined\directlua
\ifnum\outputmode > 0
\pdfvariable gentounicode =1
@@ -104,23 +81,26 @@
\input{glyphtounicode-cmex}
\fi
\ExplSyntaxOn
-\int_new:N\g__kernel_target_int
-\RenewDocumentCommand\MakeLinkTarget{sO{}m}
- {%
- \ifvmode
- \special{}%
- \else
- \@savsf\spacefactor
- \smash{}%
- \spacefactor\@savsf
- \fi
- \IfBooleanTF {#1}
- {
- \tl_gset:Ne \@currentHref {#3}
- }
- {
- \int_gincr:N\g__kernel_target_int
- \tl_gset:Ne \@currentHref {target*.\int_use:N\g__kernel_target_int}
+\str_if_exist:cF { l__socket_tagsupport/recordtarget_plug_str }
+ {
+ \int_new:N\g__kernel_target_int
+ \RenewDocumentCommand\MakeLinkTarget{sO{}m}
+ {%
+ \ifvmode
+ \special{}%
+ \else
+ \@savsf\spacefactor
+ \smash{}%
+ \spacefactor\@savsf
+ \fi
+ \IfBooleanTF {#1}
+ {
+ \tl_gset:Ne \@currentHref {#3}
+ }
+ {
+ \int_gincr:N\g__kernel_target_int
+ \tl_gset:Ne \@currentHref {target*.\int_use:N\g__kernel_target_int}
+ }
}
}
\ExplSyntaxOff
diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-math.ltx b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-math.ltx
index 343a184d379..1064a98ee32 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-math.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-math.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-math.dtx
-\def\ltlabmathdate{2024-04-16}
-\def\ltlabmathversion{0.5j}
+\def\ltlabmathdate{2024-10-25}
+\def\ltlabmathversion{0.6i}
\ProvidesFile{latex-lab-math.ltx}
[\ltlabmathdate\space
v\ltlabmathversion\space
@@ -48,6 +48,7 @@
\tl_new:N \g__math_grabbed_math_tl
\tl_new:N \l__math_tmpa_tl
\skip_new:N \l__math_tmpa_skip
+\str_new:N \l__math_tmpa_str
\tl_new:N \l__math_content_alt_tl
\tl_new:N \l__math_content_actual_tl
\tl_new:N \l__math_content_AF_source_tl
@@ -74,14 +75,16 @@
\bool_new:N\g__tag_math_mathml_AF_bool
\bool_new:N\l__tag_math_mathml_pane_bool
\bool_new:N\l__tag_math_alt_bool
+\tl_new:N\g__tag_math_luamml_tl
+\tl_gset:Nn\g__tag_math_luamml_tl {0}
\int_new:N\g__math_mathml_total_int
\int_new:N\g__math_mathml_int
\int_new:N\g__math_math_total_int
\int_new:N\g__math_mathml_AF_found_int
\int_new:N\g__math_mathml_AF_attached_int
\clist_new:N\l__tag_math_mathml_files_clist
-\clist_put_right:Ne\l__tag_math_mathml_files_clist {\c_sys_jobname_str-mathml}
-
+\clist_put_right:Ne\l__tag_math_mathml_files_clist
+ {\c_sys_jobname_str-mathml,\c_sys_jobname_str-luamml-mathml}
\cs_new_protected:Npn \__math_AF_mml:nnnn #1 #2 #3 #4
{
\int_gincr:N \g__math_mathml_total_int
@@ -108,28 +111,295 @@
\endgroup
\__math_AF_mml:nnnn{#1}{#2}{#3}{#4}
}
+\tl_const:Nn \c__math_mathml_write_init_tl
+ {
+ <!DOCTYPE~html>
+ \iow_newline:
+ <html>
+ \iow_newline:
+ }
+\tl_new:N \l__math_mathml_write_before_tl
+\tl_const:Nn \c__math_mathml_write_after_tl
+ {
+ \iow_newline:
+ </div>
+ \iow_newline:
+ }
+\tl_const:Nn \c__math_mathml_write_final_tl
+ {
+ </html>
+ }
-\socket_new:nn {tagsupport/math/mathml/write}{0}
-\socket_new_plug:nnn{tagsupport/math/mathml/write}{On}
- {
+\socket_new:nn {tagsupport/math/mathml/write/prepare}{0}
+\socket_new_plug:nnn{tagsupport/math/mathml/write/prepare}{On}
+ {
\str_set:NV\l__math_tmpa_str\l__math_content_AF_source_tl
\str_replace_all:Nnn\l__math_tmpa_str{&}{&amp;}
\str_replace_all:Nnn\l__math_tmpa_str{<}{&lt;}
+ \tl_set:Nn \l__math_mathml_write_before_tl
+ {
+ <div>
+ \iow_newline:
+ <h2>\c_backslash_str mml\c_space_tl \int_use:N \g__math_math_total_int </h2>
+ \iow_newline:
+ <p>\l__math_tmpa_str</p>
+ \iow_newline:
+ <p>\l__math_content_hash_tl </p>
+ \iow_newline:
+ }
+ }
+\cs_new_protected:Npn\__math_provide_luamml_commands:
+ {
+ \providecommand\luamml_flag_structelem:{}
+ \cs_if_free:NT \luamml_structelem:
+ {
+ \cs_set_eq:NN\luamml_structelem:\luamml_flag_structelem:
+ }
+ \providecommand\luamml_flag_process:{}
+ \cs_if_free:NT \luamml_process:
+ {
+ \cs_set_eq:NN\luamml_process:\luamml_flag_process:
+ }
+ \providecommand\luamml_flag_ignore:{}
+ \cs_if_free:NT \luamml_ignore:
+ {
+ \cs_set_eq:NN\luamml_ignore:\luamml_flag_ignore:
+ }
+ }
+\sys_if_engine_luatex:TF
+ {
+ \cs_new_protected:Npn \__math_correct_luamml_array_patches:
+ {
+ \AddToHook{package/array/after}
+ {
+ \cs_set:Npn \endarray
+ {
+ \tbl_crcr:n{endarray}
+ \__luamml_array_save_array:
+ \egroup
+ \UseTaggingSocket{tbl/finalize}
+ \tbl_restore_outer_cell_data:
+ \egroup
+ \mode_if_math:T { \__luamml_array_finalize_array: }
+ \@arrayright
+ \gdef \@preamble {}
+ }
+ \cs_set:Npn \@classz
+ {
+ \@classx
+ \@tempcnta \count@
+ \prepnext@tok
+ \@addtopreamble {
+ \ifcase \@chnum
+ \hfil
+ \hskip 1sp
+ \d@llarbegin
+ \cs_if_eq:NNTF \d@llarbegin \begingroup {
+ \insert@column
+ \d@llarend
+ } {
+ \__luamml_array_init_col:
+ \insert@column
+ \luamml_flag_save:nn {} {mtd}
+ \d@llarend
+ \__luamml_array_finalize_col:w 0~
+ }
+ \do@row@strut
+ \hfil
+ \or
+ \hskip 1sp
+ \d@llarbegin
+ \cs_if_eq:NNTF \d@llarbegin \begingroup {
+ \insert@column
+ \d@llarend
+ } {
+ \__luamml_array_init_col:
+ \insert@column
+ \luamml_flag_save:nn {} {mtd}
+ \d@llarend
+ \__luamml_array_finalize_col:w 1~
+ }
+ \do@row@strut
+ \hfil
+ \or
+ \hfil
+ \hskip 1sp
+ \d@llarbegin
+ \cs_if_eq:NNTF \d@llarbegin \begingroup {
+ \insert@column
+ \d@llarend
+ } {
+ \__luamml_array_init_col:
+ \insert@column
+ \luamml_flag_save:nn {} {mtd}
+ \d@llarend
+ \__luamml_array_finalize_col:w 2~
+ }
+ \do@row@strut
+ \or
+ \setbox \ar@mcellbox \vbox \@startpbox { \@nextchar }
+ \insert@pcolumn
+ \@endpbox
+ \ar@align@mcell
+ \do@row@strut
+ \or
+ \vtop \@startpbox { \@nextchar }
+ \insert@pcolumn
+ \@endpbox
+ \do@row@strut
+ \or
+ \vbox \@startpbox { \@nextchar }
+ \insert@pcolumn
+ \@endpbox
+ \do@row@strut
+ \fi
+ }
+ \prepnext@tok
+ }
+ }
+ }
+ \AddToHook{begindocument/before}
+ {
+ \str_case:on \g__math_luamml_load_tl
+ {
+ { 1 } {
+ \RequirePackage { luamml }
+ \__math_correct_luamml_array_patches:
+ \AddToHook{begindocument/end}
+ {
+ \__math_luamml_activate_write:
+ }
+ }
+ {-1 } {
+ \AddToHook{begindocument/end}
+ {
+ \msg_note:nnnn { tag }
+ { luamml-status }{ disabled }{ not~create }
+ }
+ }
+ { 0 }
+ {
+ \@ifpackageloaded { unicode-math }
+ {
+ \RequirePackage { luamml }
+ \__math_correct_luamml_array_patches:
+ \AddToHook{begindocument/end}
+ {
+ \__math_luamml_activate_write:
+ }
+ }
+ { \msg_warning:nn { tag }{ unicode-math-missing } }
+ }
+ }
+ \__math_provide_luamml_commands:
+ }
+ }
+ {
+ \__math_provide_luamml_commands:
+ }
+\msg_new:nnn { tag }{ luamml-status }
+ {
+ luamml~has~been~#1~and~will~#2~an~MathML~file.
+ }
+
+\msg_new:nnn { tag }{ unicode-math-missing }
+ {
+ The~package~unicode-math~is~missing\\
+ luamml~will~not~create~an~MathML~file.\\
+ To~avoid~this~warning~load~unicode-math~\\
+ or~disable~luamml~with~\\
+ \tl_to_str:n{\tagpdfsetup{math/mathml/luamml/load=false}}\\
+ or~force~luamml~with~\\
+ \tl_to_str:n{\tagpdfsetup{math/mathml/luamml/load=true}}
+ }
+\cs_new_protected:Npn \__math_luamml_activate_write:
+ {
+ \bool_if:NT \g__math_luamml_write_bool
+ {
+ \bool_gset_true:N\g__tag_math_mathml_AF_bool
+ \AssignSocketPlug{tagsupport/math/struct/begin}{mathml-AF}
+ \AssignSocketPlug{tagsupport/math/struct/end}{mathml-AF}
+ \AssignSocketPlug{tagsupport/math/substruct/begin}{single}
+ \AssignSocketPlug{tagsupport/math/substruct/end}{single}
+ \int_set:Nn \l__luamml_pretty_int { 7 }
+ \RegisterFamilyMapping\symsymbols{oms}
+ \RegisterFamilyMapping\symletters{oml}
+ \AssignSocketPlug{tagsupport/math/mathml/write/prepare}{On}
+ \iow_new:N \g__math_luamml_iow
+ \iow_open:Nn \g__math_luamml_iow {\c_sys_jobname_str-luamml-mathml.html}
+ \iow_now:Ne \g__math_luamml_iow { \c__math_mathml_write_init_tl }
+ \cs_new:Npn \__math_luamml_output_hook:n ##1
+ {
+ \tl_if_empty:NF \l__math_mathml_write_before_tl
+ {
+ \iow_now:Ne \g__math_luamml_iow
+ {
+ \l__math_mathml_write_before_tl
+ ##1
+ \c__math_mathml_write_after_tl
+ }
+ }
+ }
+ \__luamml_register_output_hook:N \__math_luamml_output_hook:n
+ \AddToHook{enddocument/afterlastpage}
+ {
+ \iow_now:Ne \g__math_luamml_iow
+ { \c__math_mathml_write_final_tl }
+ \iow_close:N \g__math_luamml_iow
+ }
+ \msg_note:nnnn { tag }
+ { luamml-status }{ enabled }{ create }
+ }
+ }
+\tl_new:N \g__math_luamml_load_tl
+\tl_gset:Nn \g__math_luamml_load_tl {0}
+\bool_new:N \g__math_luamml_write_bool
+\bool_gset_true:N \g__math_luamml_write_bool
+\msg_new:nnn { tag }{ PDF-2.0-recommended }
+ {
+ The~key~#1~will~not~work~properly~with~PDF~#2.\\
+ Switching~to~PDF~2.0~is~recommended.
+ }
+\keys_define:nn { __tag / setup }
+ {
+ math/mathml/luamml/load .choice: ,
+ math/mathml/luamml/load/true .code:n = {\tl_gset:Nn \g__math_luamml_load_tl{1}},
+ math/mathml/luamml/load/false .code:n = {\tl_gset:Nn \g__math_luamml_load_tl{-1}},
+ math/mathml/luamml/load .default:n = true,
+ math/mathml/luamml/load .usage:n=preamble,
+ math/mathml/structelem .code:n =
+ {
+ \pdf_version_compare:NnT < {2.0}
+ {
+ \msg_warning:nnne { tag }{ PDF-2.0-recommended }
+ { math/mathml/structelem }{ \pdf_version: }
+ }
+ \AddToHook{begindocument/end}{\luamml_structelem:}
+ },
+ math/mathml/ignore .code:n = {\luamml_ignore:},
+ math/mathml/luamml/write .choice:,
+ math/mathml/luamml/write/true .code:n =
+ {
+ \tl_gset:Nn \g__math_luamml_load_tl{1}
+ \bool_gset_true:N \g__math_luamml_write_bool
+ },
+ math/mathml/luamml/write/false .code:n =
+ {
+ \bool_gset_false:N \g__math_luamml_write_bool
+ },
+ math/mathml/luamml/write .default:n = true,
+ math/mathml/luamml/write .usage:n=preamble,
+ math/mathml/luamml .bool_gset:N = \g__math_luamml_write_bool,
+ math/mathml/luamml .usage:n=preamble
+ }
+\socket_new:nn {tagsupport/math/mathml/write}{0}
+\socket_new_plug:nnn{tagsupport/math/mathml/write}{On}
+ {
\iow_now:Ne \g__math_writedummy_iow
{
- \iow_newline:
- <div>
- \iow_newline:
- <h2>\c_backslash_str mml\c_space_tl \int_use:N \g__math_math_total_int </h2>
- \iow_newline:
- <p>\l__math_tmpa_str</p>
- \iow_newline:
- <p>\l__math_content_hash_tl </p>
- \iow_newline:
+ \l__math_mathml_write_before_tl
<math></math>
- \iow_newline:
- </div>
- \iow_newline:
+ \c__math_mathml_write_after_tl
}
}
@@ -147,14 +417,14 @@
}
\iow_now:Ne \g__math_writedummy_iow
{
- <!DOCTYPE~html>
- \iow_newline:
- <html>
+ \c__math_mathml_write_init_tl
}
+ \AssignSocketPlug {tagsupport/math/mathml/write/prepare}{On}
\AssignSocketPlug {tagsupport/math/mathml/write}{On}
\AddToHook{enddocument/afterlastpage}
{
- \iow_now:Nn \g__math_writedummy_iow {</html>}
+ \iow_now:Ne \g__math_writedummy_iow
+ { \c__math_mathml_write_final_tl }
\iow_close:N \g__math_writedummy_iow
}
}
@@ -188,8 +458,8 @@
\bool_if:NT\g__tag_math_mathml_AF_bool
{
\typeout{Info:~Activating~mathml~support}
- \AssignSocketPlug{tagsupport/math/struct/begin}{test-mathml}
- \AssignSocketPlug{tagsupport/math/struct/end}{test-mathml}
+ \AssignSocketPlug{tagsupport/math/struct/begin}{mathml-AF}
+ \AssignSocketPlug{tagsupport/math/struct/end}{mathml-AF}
\AssignSocketPlug{tagsupport/math/substruct/begin}{single}
\AssignSocketPlug{tagsupport/math/substruct/end}{single}
\AddToHook{enddocument/info}
@@ -220,13 +490,13 @@
\int_set:Nn \l__math_mathstyle_int {#2}
\property_record:nn {#1} { mathstyle }
\int_compare:nNnTF { \property_ref:nn {#1}{ mathstyle} } = { #2 }
- { \tag_start: }{ \tag_stop: }
+ { \tag_resume:n{\mathchoice} }{ \tag_suspend:n{\mathchoice} }
}
\cs_generate_variant:Nn \__math_tag_if_mathstyle:nn {en}
\keys_define:nn { __tag / setup }
{
math/mathml/sources .clist_set:N = \l__tag_math_mathml_files_clist,
- math/alt/use .bool_set:N = \l__tag_math_alt_bool,
+ math/alt/use .bool_set:N = \l__tag_math_alt_bool,
viewer/pane/mathml .bool_set:N = \l__tag_math_mathml_pane_bool,
viewer/pane/mathml .initial:n = true,
viewer/pane/mathsource .bool_set:N = \l__tag_math_texsource_pane_bool,
@@ -235,6 +505,23 @@
math/tex/AF .bool_set:N = \l__tag_math_texsource_AF_bool,
math/tex/AF .initial:n = true
}
+\AddToHook{begindocument/end}
+ {
+ \str_if_eq:eeT
+ {1}
+ {
+ \exp_last_unbraced:Ne\use_i:nn
+ {\GetDocumentProperties{document/pdfstandard-UA}}
+ \c_empty_tl\c_empty_tl
+ }
+ {
+ \bool_if:NF \l__tag_math_alt_bool
+ {
+ \typeout{PDF/UA-1~detected.~Enabling~alt~text~on~Formula}
+ }
+ \bool_set_true:N\l__tag_math_alt_bool
+ }
+ }
\socket_new:nn {tagsupport/math/inline/begin}{0}
\socket_new:nn {tagsupport/math/inline/end}{0}
\socket_new:nn {tagsupport/math/inline/formula/begin}{1} %
@@ -250,13 +537,13 @@
\socket_new_plug:nnn
{tagsupport/math/inline/formula/begin}
{default}
- {
- \socket_use:n{tagsupport/math/content}
- \socket_use:n{tagsupport/math/struct/begin}
+ { \tagpdfparaOff
+ \tag_socket_use:n{math/content}
+ \tag_socket_use:n{math/struct/begin}
% inner formula if multiple parts (not really implemented yet)
- \socket_use:n{tagsupport/math/substruct/begin}
+ \tag_socket_use:n{math/substruct/begin}
#1
- \socket_use:n{tagsupport/math/end}
+ \tag_socket_use:n{math/end}
}
\socket_new_plug:nnn
{tagsupport/math/inline/formula/end}
@@ -284,11 +571,11 @@
{tagsupport/math/display/formula/begin}
{default}
{
- \socket_use:n{tagsupport/math/content}
- \socket_use:n{tagsupport/math/struct/begin}
- \socket_use:n{tagsupport/math/substruct/begin}
+ \tag_socket_use:n{math/content}
+ \tag_socket_use:n{math/struct/begin}
+ \tag_socket_use:n{math/substruct/begin}
#1
- \socket_use:n{tagsupport/math/end}
+ \tag_socket_use:n{math/end}
}
\socket_new_plug:nnn
{tagsupport/math/display/formula/end}
@@ -367,9 +654,19 @@
\bool_if:NTF\l__tag_math_texsource_AF_bool
{ \tl_set_eq:NN \l__math_content_AF_source_tmpa_tl \l__math_content_AF_source_tl }
{ \tl_clear:N \l__math_content_AF_source_tmpa_tl }
+ \tl_if_eq:NnTF\g__math_grabbed_env_tl {math}
+ {
+ \tl_set:Nn\l__math_attribute_class_tl{inline}
+ }
+ {
+ \tl_set:Nn\l__math_attribute_class_tl{display}
+ }
+ \bool_if:NF\l__tag_math_alt_bool
+ { \tl_set:Nn \l__math_content_alt_tl{} }
\tag_struct_begin:n
{
tag=Formula,
+ attribute-class=\l__math_attribute_class_tl,
texsource = \l__math_content_AF_source_tmpa_tl,
title-o = \g__math_grabbed_env_tl,
actualtext = \l__math_content_actual_tl,
@@ -388,7 +685,7 @@
\tl_new:N\l__math_grabbed_math_tl
\socket_new_plug:nnn
{tagsupport/math/struct/begin}
- {test-mathml}
+ {mathml-AF}
{
\int_gincr:N\g__math_math_total_int
\tl_set:Ne\l__math_content_hash_tl
@@ -404,20 +701,24 @@
\bool_if:NF\l__tag_math_alt_bool
{ \tl_set:Nn \l__math_content_alt_tl{} }
\tl_if_exist:cTF { g__math_mathml_ \l__math_content_hash_tl _tl }
- {
- \int_gincr:N\g__math_mathml_AF_found_int
- \bool_if:NTF \l__tag_math_mathml_AF_bool
- {
- \int_gincr:N\g__math_mathml_AF_attached_int
- \typeout {Inserting~mathml~with~Hash~\l__math_content_hash_tl}
- }
- {
- \typeout {Ignoring~mathml~with~Hash~\l__math_content_hash_tl}
- }
- }
- {
- \typeout{WARNING:~mathml~missing~for~hash~\l__math_content_hash_tl}
- }
+ {
+ \int_gincr:N\g__math_mathml_AF_found_int
+ \bool_if:NTF \l__tag_math_mathml_AF_bool
+ {
+ \int_gincr:N\g__math_mathml_AF_attached_int
+ \typeout {Inserting~mathml~with~Hash~\l__math_content_hash_tl}
+ }
+ {
+ \typeout {Ignoring~mathml~with~Hash~\l__math_content_hash_tl}
+ }
+ }
+ {
+ \bool_if:NT \l__tag_math_mathml_AF_bool
+ {
+ \typeout {WARNING:~mathml~missing~for~hash~\l__math_content_hash_tl}
+ }
+ }
+ \socket_use:n {tagsupport/math/mathml/write/prepare}
\socket_use:n {tagsupport/math/mathml/write} % write hash if request
\bool_if:NTF\l__tag_math_texsource_AF_bool
{ \tl_set_eq:NN \l__math_content_AF_source_tmpa_tl \l__math_content_AF_source_tl }
@@ -438,7 +739,7 @@
}
\socket_new_plug:nnn
{tagsupport/math/struct/end}
- {test-mathml}
+ {mathml-AF}
{
\tag_struct_end:
}
@@ -516,35 +817,39 @@
\cs_new_protected:Npn \__math_process_auxii:nn #1#2 { }
\cs_new_protected:Npn \math_processor:n #1
{ \cs_set_protected:Npn \__math_process_auxii:nn ##1##2 {#1} }
-\cs_new_protected:Npn \__math_grab_dollar:w % $
- #1 $
+\cs_new_protected:Npn \__math_grab_dollar:w { \__math_grab_dollar_delim:w }
+\cs_new_protected:Npn \__math_grab_dollar:n #1
{
- \tl_if_blank:nF {#1}
- {
- \__math_process:nn { math } {#1} % $
- \bool_lazy_or:nnTF
- {\legacy_if_p:n { measuring@ }}
- { \l__math_fakemath_bool }
- { #1 $ }
+ \__math_process:nn { math } {#1}
+ \bool_lazy_any:nTF
+ {
+ {\legacy_if_p:n { measuring@ }}
+ { \l__math_fakemath_bool }
+ { \tl_if_blank_p:n {#1} }
+ }
+ {
+ #1 $ % $
+ }
{
\tag_socket_use:n {math/inline/begin} %end P-MC
- \tag_socket_use:nn {math/inline/formula/begin}{#1}
- $
+ \socket_use:nn {tagsupport/math/inline/formula/begin}{#1}
+ $ % $
\tag_socket_use:n {math/inline/formula/end}
\tag_socket_use:n {math/inline/end} % restart P-MC
}
- }
}
+\cs_new_protected:Npn \__math_grab_dollar_delim:w #1 $ % $
+ { \__math_grab_dollar:n {#1} }
\cs_new_protected:Npn \__math_grab_dollardollar:w % $$
#1 $$
{
\tl_if_blank:nF {#1}
{
\__math_process:nn { equation* } {#1}
- \socket_use:n {tagsupport/math/display/begin}
+ \tag_socket_use:n {math/display/begin}
\socket_use:nn{tagsupport/math/display/formula/begin}{#1}
- $$
}
+ $$
}
\cs_new_protected:Npn \__math_tag_dollardollar_display_end:
{
@@ -553,9 +858,11 @@
\para_raw_end:
\tagpdfparaOn
\l__math_tmpa_skip \lastskip
- \socket_use:n{tagsupport/math/display/formula/end}
+ \tag_socket_use:n{math/display/formula/end}
+ \nobreak
+ \skip_vertical:n { -\l__math_tmpa_skip } % remove the negative belowdisplayskip
\penalty \postdisplaypenalty
- \skip_vertical:n { -\l__math_tmpa_skip * 2 }
+ \skip_vertical:n { -\l__math_tmpa_skip } % insert the correct skip
\@doendpe % this has no \end{...} to take care of it
}
@@ -573,6 +880,82 @@
{
\begin { equation* } #1 \end { equation* }
}
+\tl_new:N \l__math_grabbed_tl
+\int_new:N \l__math_grab_env_int
+\cs_new_protected:Npn \__math_grab_dollar_loop:
+ {
+ \group_begin:
+ \tl_clear:N \l__math_grabbed_tl
+ \__math_grab_loop:
+ }
+\cs_new_protected:Npn \__math_grab_loop:
+ {
+ \peek_remove_spaces:n
+ {
+ \peek_meaning:NTF \c_group_begin_token
+ { \__math_grab_loop_group:n }
+ { \__math_grab_loop_token:N }
+ }
+ }
+\cs_new_protected:Npn \__math_grab_loop_group:n #1
+ { \__math_grab_loop_store:n { {#1} } }
+\cs_new_protected:Npn \__math_grab_loop_store:n #1
+ {
+ \tl_put_right:Nn \l__math_grabbed_tl {#1}
+ \__math_grab_loop:
+ }
+\cs_new_protected:Npn \__math_grab_loop_token:N #1
+ {
+ \cs_if_exist_use:cF
+ { __math_grab_loop_ \token_to_str:N #1 : }
+ { \__math_grab_loop_store:n {#1} }
+ }
+\cs_new_protected:cpn { __math_grab_loop_ \token_to_str:N $ : }
+ { \__math_grab_loop_end: }
+\cs_new_protected:cpn { __math_grab_loop_ \token_to_str:N \\ : }
+ {
+ \int_compare:nNnTF \l__math_grab_env_int = 0
+ { \__math_grab_loop_newline: }
+ { \__math_grab_loop_store:n { \\ } }
+ }
+\cs_new_protected:cpn { __math_grab_loop_ \token_to_str:N \begin : }
+ {
+ \int_incr:N \l__math_grab_env_int
+ \__math_grab_loop_store:n { \begin }
+ }
+\cs_new_protected:cpn { __math_grab_loop_ \token_to_str:N \end : }
+ {
+ \int_compare:nNnTF \l__math_grab_env_int = 0
+ {
+ \__math_grab_loop_newline:
+ \end
+ }
+ {
+ \int_decr:N \l__math_grab_env_int
+ \__math_grab_loop_store:n { \end }
+ }
+ }
+\tl_map_inline:nn { \ignorespaces \unskip \textonly@unskip }
+ {
+ \cs_new_protected:cpn { __math_grab_loop_ \token_to_str:N #1 : }
+ { \__math_grab_loop: }
+ }
+\cs_new_protected:Npn \__math_grab_loop_newline:
+ {
+ \if_false: { \fi:
+ \cs_set_protected:Npn \cr
+ {
+ \__math_grab_loop:
+ \tex_cr:D
+ }
+ \if_false: } \fi:
+ \\
+ }
+\cs_new_protected:Npn \__math_grab_loop_end:
+ {
+ \exp_args:NNV \group_end:
+ \__math_grab_dollar:n \l__math_grabbed_tl
+ }
\tl_new:N \l__math_env_name_tl
\keys_define:nn { __math }
{
@@ -781,6 +1164,7 @@
\bool_set_false:N \l__math_collected_bool
\col@sep\tabcolsep \let\d@llarbegin\begingroup
\let\d@llarend\endgroup
+ \cs_set_protected:Npn \__math_grab_dollar:w { \__math_grab_dollar_loop: }
\@tabarray}
}
\cs_new_eq:NN \__math_m@th: \m@th
@@ -870,7 +1254,7 @@
\iftagsleft@ \@xp\lendmultline@ \else \@xp\rendmultline@ \fi
\ignorespacesafterend
}
-\def\measuring@true{\let\ifmeasuring@\iftrue\tag_stop:}
+\def\measuring@true{\let\ifmeasuring@\iftrue\tag_suspend:n{\measuring}}
\math_register_halign_env:nn {align}{}
\math_register_halign_env:nn {align*}{}
\math_register_halign_env:nn {alignat}{}
diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-mathtools.ltx b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-mathtools.ltx
index 43663b8f9ef..ec0624be4d6 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-mathtools.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-mathtools.ltx
@@ -33,8 +33,10 @@
%%
%%
%% File: latex-lab-mathtools.dtx
+\def\ltlabmathtoolsdate{2024-09-18}
+\def\ltlabmathtoolsversion{0.80a}
\ProvidesFile{latex-lab-mathtools.ltx}
- [2023-01-05 v0.1a mathtools adaptions]
+ [2024-07-13 v0.1a mathtools adaptions]
\RequirePackage{tagpdf-base}
\ExplSyntaxOn
\tl_new:N\l__math_mathtools_init_tl
@@ -65,7 +67,7 @@
\vskip\normallineskiplimit % CCS
\vskip\l_MT_above_intertext_sep
\vbox{%
- \ifmeasuring@\tag_stop:\fi
+ \ifmeasuring@\tag_suspend:n{\measuring}\fi
\normalbaselines
\ifdim
\ifdim\@totalleftmargin=\z@
@@ -93,7 +95,7 @@
\noalign{%
\penalty\postdisplaypenalty\vskip\abovedisplayshortskip
\vbox{%
- \ifmeasuring@\tag_stop:\fi
+ \ifmeasuring@\tag_suspend:n{\measuring}\fi
\normalbaselines
\MH_if_dim:w
\MH_if_dim:w \@totalleftmargin=\z@
@@ -122,7 +124,7 @@
\vskip\normallineskiplimit
\vskip\l_MT_above_shortintertext_sep
\vbox{%
- \ifmeasuring@\tag_stop:\fi
+ \ifmeasuring@\tag_suspend:n{\measuring}\fi
\normalbaselines
\MH_if_dim:w
\MH_if_dim:w \@totalleftmargin=\z@
diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-bib.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-bib.sty
index 4cfa0b055c8..49f0207bc39 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-bib.sty
+++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-bib.sty
@@ -33,7 +33,7 @@
%%
%%
%% File: latex-lab-bib.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabbibdate{2024-02-12}
+\def\ltlabbibdate{2024-07-05}
\def\ltlabbibversion{0.81b}
\ProvidesExplPackage {latex-lab-testphase-bib} {\ltlabbibdate} {\ltlabbibversion}
{Code related to the tagging of bibliography and cite command}
diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-block.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-block.sty
index a4d646636fc..5a819df9846 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-block.sty
+++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-block.sty
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-block.dtx (C) Copyright 2021-2024 LaTeX Project
-\def\ltlabblockdate{2024-03-23}
-\def\ltlabblockversion{0.8n}
+\def\ltlabblockdate{2024-10-11}
+\def\ltlabblockversion{0.8v}
\ProvidesPackage {latex-lab-testphase-block}
[\ltlabblockdate\space v\ltlabblockversion\space
blockenv implementation]
@@ -58,8 +58,6 @@
}
}
\cs_new_eq:NN \__kernel_displayblock_doendpe: \prg_do_nothing:
-\def\@endpetrue {\global\let\if@endpe\iftrue}
-\def\@endpefalse{\global\let\if@endpe\iffalse}
\NewTemplateType{blockenv}{1}
\NewTemplateType{block}{1}
\NewTemplateType{para}{1}
@@ -90,6 +88,7 @@
par-skip : skip = \parsep ,
end-skip : skip = \KeyValue{beginsep} , % conflict with name below
end-par-skip : skip = \KeyValue{begin-par-skip} ,
+ item-skip : skip = \itemsep ,
beginpenalty : integer = \UseName{@beginparpenalty} ,
endpenalty : integer = \UseName{@endparpenalty} ,
leftmargin : length = \leftmargin ,
@@ -257,19 +256,19 @@
\AddToHook{begindocument/before}{
\RenewDocumentEnvironment{list}{O{} m m }
{
- \tl_set:Nn \@itemlabel {#2}
- \tl_set:Nn \l__block_legacy_env_params_tl {#3}
+ \tl_set:Nn \l__block_legacy_env_params_tl
+ {
+ \tl_set:Nn \@itemlabel {#2}
+ #3
+ }
\UseInstance{blockenv}{list} {#1}
}
{ \endblockenv }
}
-\tl_new:N \l__block_env_params_tl
\cs_new:Npn \legacylistsetupcode {
\dim_zero:N \listparindent
\dim_zero:N \rightmargin
\dim_zero:N \itemindent
- \tl_set:Nn \@listctr {}
- \legacy_if_set_false:n { @nmbrlist } % needed if lists are nested
\let\makelabel\@mklab % TODO: customize
\l__block_legacy_env_params_tl
\legacy_if:nTF { @nmbrlist }
@@ -407,14 +406,14 @@
\__block_debug_typeout:n{\l__block_env_name_tl -env-start}
\tl_if_empty:nF {#1} { \SetTemplateKeys{blockenv}{display}{#1} }
% \begin{macrocode}
- \int_compare:nNnTF \l__block_flattened_level_int > 0
+ \int_compare:nNnTF \l__tag_block_flattened_level_int > 0
{
- \int_incr:N \l__block_flattened_level_int
+ \int_incr:N \l__tag_block_flattened_level_int
}
{
\bool_if:NT \l__tag_para_flattened_bool
{
- \int_incr:N \l__block_flattened_level_int
+ \int_incr:N \l__tag_block_flattened_level_int
}
}
\tl_if_empty:NF \l__block_inner_level_counter_tl
@@ -435,6 +434,9 @@
}
}
\tag_if_active:T { \use:c { __block_recipe_ \l__block_tagging_recipe_tl : } }
+ \tl_clear:N \@itemlabel
+ \tl_clear:N \@listctr
+ \legacy_if_set_false:n { @nmbrlist }
\l__block_setup_code_tl
\__block_debug_typeout:n{use~ instance:~
\l__block_block_instance_tl - \int_use:N \g_block_nesting_depth_int }
@@ -462,7 +464,10 @@
}
\l__block_final_code_tl
}
-\int_new:N \l__block_flattened_level_int
+\int_if_exist:NF \l__tag_block_flattened_level_int
+ {
+ \int_new:N \l__tag_block_flattened_level_int
+ }
\newcounter{maxblocklevels}
\setcounter{maxblocklevels}{6}
\cs_new:Npn \endblockenv {
@@ -474,15 +479,12 @@
\mode_leave_vertical:
\legacy_if_gset_false:n { @inlabel }
}
- \legacy_if:nT { @newlist }
- {
- \@noitemerr
- \legacy_if_gset_false:n { @newlist }
- }
+ \__block_if_list:T { \legacy_if:nT { @newlist } { \@noitemerr } }
\mode_if_horizontal:TF
{ \__block_skip_remove_last: \__block_skip_remove_last: \par }
{ \@inmatherr{\end{\@currenvir}} }
\__kernel_displayblock_end:
+ \__block_if_list:T { \legacy_if_gset_false:n { @newlist } }
\legacy_if:nF { @noparlist }
{
\__block_skip_set_to_last:N \l_tmpa_skip
@@ -496,14 +498,16 @@
}
\socket_use:n {tagsupport/block-endpe}
}
+\cs_new:Npn \__block_if_list:T
+ { \tl_if_eq:NnT \l__block_block_instance_tl {list} }
\cs_new:Npn \__kernel_displayblock_end: {
\__block_debug_typeout:n{\detokenize{__kernel_displayblock_end:}}
}
\socket_new:nn {tagsupport/block-endpe}{0}
\socket_new_plug:nnn{tagsupport/block-endpe}{on}
- { \legacy_if_gset_true:n { @endpe } }
+ { \@endpetrue }
\socket_new_plug:nnn{tagsupport/block-endpe}{off}
- { \legacy_if_gset_false:n { @endpe } }
+ { \@endpefalse }
\socket_assign_plug:nn{tagsupport/block-endpe}{on}
\DeclareTemplateCode{para}{std}{1}
{
@@ -529,6 +533,7 @@
par-skip = \parsep ,
end-skip = \l__block_botsep_skip ,
end-par-skip = \l__block_parbotsep_skip ,
+ item-skip = \itemsep ,
beginpenalty = \@beginparpenalty ,
endpenalty = \@endparpenalty ,
rightmargin = \rightmargin ,
@@ -629,6 +634,7 @@
}
\tl_new:N \@itemlabel % should have a top-level definition
\tl_new:N \@listctr % should have a top-level definition
+\cs_new_eq:NN \__block_evaluate_saved_user_keys:nn \use_none:nn
\DeclareTemplateCode{list}{std}{1}
{
counter = \l__block_counter_tl,
@@ -645,18 +651,23 @@
}
{
\__block_debug_typeout:n{template:list:std}
- \tl_if_empty:nF {#1} { \SetTemplateKeys{list}{std}{#1} }
+ \tl_if_empty:nTF {#1}
+ { \cs_set_eq:NN \__block_evaluate_saved_user_keys:nn \use_none:nn }
+ {
+ \SetTemplateKeys{list}{std}{#1}
+ \cs_set:Npe \__block_evaluate_saved_user_keys:nn ##1##2
+ { \SetTemplateKeys{##1}{##2}{ \exp_not:n{#1} } }
+ }
\tl_if_empty:NTF \l__block_counter_tl
{
- \tl_if_blank:oF \@listctr
- {
+ \legacy_if:nT { @nmbrlist }
+ {
\bool_if:NF \l__block_resume_bool
{
\int_gset:cn{ c@ \@listctr }
{ \l__block_counter_start_int - 1 }
}
- }
- { \@nmbrlistfalse }
+ }
}
{
\@nmbrlisttrue
@@ -672,6 +683,7 @@
\tl_set_eq:NN \@itemlabel \l__block_item_label_tl
}
\legacy_if_gset_true:n { @newlist }
+ \cs_set_eq:NN \__block_item_everypar: \__block_item_everypar_first:
\__block_debug_typeout:n{template:list:std~end}
}
\keys_define:nn { template/list/std }
@@ -708,6 +720,7 @@
{
\__block_debug_typeout:n{template:item:std}
\tl_set_eq:NN \l__block_label_given_tl \c_novalue_tl
+ \__block_evaluate_saved_user_keys:nn {item}{std}
\tl_if_empty:nF{#1}{ \SetTemplateKeys{item}{std}{#1} }
\tl_if_novalue:oTF \l__block_label_given_tl
{
@@ -779,8 +792,8 @@
\cs_new_eq:NN \__kernel_list_label_begin: \prg_do_nothing:
\cs_new_eq:NN \__kernel_list_label_end: \prg_do_nothing:
\cs_new_eq:NN \__block_item_everypar: \prg_do_nothing:
-\AddToHook{para/begin}[lists]{\__block_item_everypar:}
-\DeclareHookRule{para/begin}{lists}{after}{tagpdf}
+\AddToHook{para/begin}[items]{\__block_item_everypar:}
+\DeclareHookRule{para/begin}{items}{after}{tagpdf}
\cs_new_protected:Npn \__block_item_everypar_std: {
\__block_debug_typeout:n{item~ everypar \on@line }
\legacy_if_set_false:n { @minipage }
@@ -804,6 +817,9 @@
\cs_set_eq:NN \__block_item_everypar: \prg_do_nothing:
}
}
+\cs_new:Npn \__block_item_everypar_first: {
+ \legacy_if:nT { @newlist } { \@noitemerr }
+}
\cs_new_eq:NN \__kernel_list_label_after: \prg_do_nothing:
\skip_new:N \l__block_tmpa_skip
\skip_new:N \l__block_topsepadd_skip
@@ -819,8 +835,11 @@
}
{
\legacy_if:nTF { @newlist }
- { \__kernel_list_item_begin: }
- { \__block_inter_item: }
+ {
+ \__kernel_list_item_begin:
+ \legacy_if_gset_false:n { @newlist }
+ }
+ { \__block_inter_item: }
\tl_if_novalue:nTF {#1} % avoids reparsing label={}
{ \__block_item_instance:n { } }
{ \__block_item_instance:n {#1} }
@@ -1011,6 +1030,7 @@
block-instance = verbatimblock ,
inner-instance = ,
final-code = \legacyverbatimsetup ,
+ para-instance = justify
}
\DeclareInstance{blockenv}{itemize}{display}
{
@@ -1203,7 +1223,7 @@
\legacy_if_gset_false:n { @endpe }
}
{
- \int_compare:nNnT \l__block_flattened_level_int < 2
+ \int_compare:nNnT \l__tag_block_flattened_level_int < 2
{
\__tag_gincr_para_main_begin_int:
\tag_struct_begin:n
@@ -1436,13 +1456,16 @@
\tagstructend \tagstructend % end LBody, LI
}
\cs_set:Npn \__block_list_end: {
- \legacy_if:nT { @endpe }
+ \legacy_if:nF { @newlist }
{
- \__tag_gincr_para_main_end_int:
- \tagstructend % text-unit
- \__block_debug_typeout:n{Structure-end~ P~ at~ list-end \on@line }
+ \legacy_if:nT { @endpe }
+ {
+ \__tag_gincr_para_main_end_int:
+ \tagstructend % text-unit
+ \__block_debug_typeout:n{Structure-end~ P~ at~ list-end \on@line }
+ }
+ \tagstructend\tagstructend % end LBody, LI
}
- \tagstructend\tagstructend % end LBody, LI
\tagstructend % end L
}
}
diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-firstaid.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-firstaid.sty
index 552dfee1832..d960bdf65b4 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-firstaid.sty
+++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-firstaid.sty
@@ -33,9 +33,8 @@
%%
%%
%% File: latex-lab-firstaid.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabfirstaiddate{2024-05-25}
-\def\ltlabfirstaidversion{0.85d}
-
+\def\ltlabfirstaiddate{2024-10-16}
+\def\ltlabfirstaidversion{0.85h}
\ProvidesPackage {latex-lab-testphase-firstaid} [%
\ltlabfirstaiddate\space v\ltlabfirstaiddate\space
Temporary patches to external packages needed for the tagging project]
@@ -51,12 +50,118 @@
} }
\exp_args:Ncx\str_if_eq:onT{ver@#1.#2}{#3}
}
-\ExplSyntaxOff
\AddToHook{class/amsart/after}
{\def\@author{\authors}}
\AddToHook{class/amsbook/after}
{\def\@author{\authors}}
+\AddToHook{class/amsproc/after}
+ {\def\@author{\authors}}
+\AddToHook{class/amsart/after}[latex-lab-testphase-firstaid/amsthm]
+ {\tag_if_active:T{\__tag_firstaid_amsthm:}}
+\AddToHook{class/amsbook/after}[latex-lab-testphase-firstaid/amsthm]
+ {\tag_if_active:T{\__tag_firstaid_amsthm:}}
+\AddToHook{class/amsproc/after}[latex-lab-testphase-firstaid/amsthm]
+ {\tag_if_active:T{\__tag_firstaid_amsthm:}}
+\AddToHook{package/amsthm/after}[latex-lab-testphase-firstaid/amsthm]
+ {\tag_if_active:T{\__tag_firstaid_amsthm:}}
+\cs_new_protected:Npn \__tag_firstaid_amsthm:
+ {
+ \def\@endtheorem{\endblockenv}
+ \RenewDocumentCommand\@thm{mmmO{}}{%
+ \ifhmode\unskip\unskip\par\fi
+ \normalfont
+ \let\thmheadnl\relax
+ \let\thm@swap\@gobble
+ \thm@notefont{\fontseries\mddefault\upshape}%
+ \thm@headpunct{.}% add period after heading
+ \thm@headsep 5\p@ plus\p@ minus\p@\relax
+ \thm@space@setup
+ ##1% style overrides
+ \@topsep \thm@preskip % used by thm head
+ \@topsepadd \thm@postskip % used by \@endparenv
+ \tl_set:Nn \l__block_thm_current_counter_tl{##2}
+ \tl_if_empty:nTF{##2}
+ {
+ \@begintheorem{##3}{}[##4]
+ }
+ {
+ \@kernel@refstepcounter{##2}
+ \@begintheorem{##3}{\csname the##2\endcsname}[##4]
+ }
+ }
+ \def\@begintheorem##1##2[##3]{%
+ \UseInstance{blockenv}{theorem}{beginsep=\thm@preskip}
+ \skip_set:Nn\l__block_topsepadd_skip { \thm@postskip }
+ \tagpdfparaOff
+ \mode_leave_vertical:
+ \tl_if_empty:NTF \l__block_thm_current_counter_tl
+ {\MakeLinkTarget[theorem]{}}
+ {\MakeLinkTarget{\l__block_thm_current_counter_tl}}
+ \group_begin:
+ \normalfont
+ \the\thm@headfont \thm@indent
+ \@ifempty{##1}
+ {\let\thmname\@gobble}
+ {\def\thmname####1{\tag_mc_begin:n {}####1\tag_mc_end:}}%
+ \@ifempty{##2}
+ {\let\thmnumber\@gobble}
+ {\def\thmnumber####1
+ {\tag_struct_begin:n{tag=Lbl}\tag_mc_begin:n {}
+ ####1
+ \tag_mc_end:\tag_struct_end:}}%
+ \@ifempty{##3}
+ {\let\thmnote\@gobble}
+ {\def\thmnote####1{\tag_mc_begin:n{}####1\tag_mc_end:}}%
+ \tag_struct_begin:n{tag=Caption}
+ \thm@swap\swappedhead\thmhead{##1}{##2}{##3}%
+ \tag_mc_begin:n{}\the\thm@headpunct\tag_mc_end:
+ \tag_struct_end:
+ \thmheadnl % possibly a newline.
+ \hskip\thm@headsep
+ \group_end:
+ \tagpdfparaOn
+ \UseTaggingSocket{para/begin} %
+ \ignorespaces}
+ \def\thmhead@plain##1##2##3{%
+ \thmname{##1}
+ \thmnumber{
+ \@ifnotempty{##1}{~}\@upn{##2}
+ }%
+ \thmnote{\pdffakespace\space{\the\thm@notefont(##3)}}
+ }
+ \let\thmhead\thmhead@plain
+ \def\swappedhead##1##2##3{%
+ \thmnumber{##2}
+ \thmname{\@ifnotempty{##2}{\nobreakspace}##1}
+ \thmnote{\pdffakespace\space{\the\thm@notefont(##3)}}
+ }
+ \let\swappedhead@plain=\swappedhead
+ \renewcommand{\openbox}{\leavevmode
+ \hbox to.77778em{\pdf_bdc:nn{Span}{/ActualText<FEFF220E>}%
+ \pdffakespace\hfil\vrule
+ \vbox to.675em{\hrule width.6em\vfil\hrule}%
+ \vrule\hfil\pdf_emc:}}
+ \renewenvironment{proof}[1][\proofname]{\par
+ \pushQED{\qed}%
+ \UseInstance{blockenv}{theorem}{beginsep=6\p@\@plus6\p@}
+ \normalfont
+ \tagpdfparaOff
+ \AddToHookNext{para/begin}
+ {\tag_struct_begin:n{tag=Caption}
+ \tag_mc_begin:n{}%
+ \textit{##1\@addpunct{.}}%
+ \tag_mc_end:
+ \tag_struct_end:
+ \tagpdfparaOn
+ \UseTaggingSocket{para/begin}
+ \pdffakespace\hspace{\labelsep}}
+ \ignorespaces
+ }{%
+ \popQED\endblockenv\par
+ }
+ }
+\ExplSyntaxOff
\AddToHook{package/verse/after}[latex-lab-firstaid]{%
\FirstAidNeededT{verse}{sty}{2014/05/10 v2.4b verse typesetting}%
{%
@@ -85,41 +190,6 @@
}%
}%
}
-\AddToHook{file/blindtext.sty/after}[latex-lab-firstaid]{%
- \FirstAidNeededT{blindtext}{sty}{\blindfiledate\space\blindfileversion\space%
- blindtext-Package}%
- {%
- \renewcommand{\blind@items}{%
- \setcounter{blind@listcount}{1}%
- \loop
- \ifblind@optional
- \ifblind@long
- \item[\blindtext@countitem] \blindtext@text
- \else
- \item[\blindtext@count] \blindtext@item
- \fi
- \else % \blind@optionalfalse
- \ifblind@long
- \item \blindtext@text
- \else
- \item \blindtext@countitem
- \fi
- \fi % \ifblind@optional
- {%
- \loop
- \ifnum\value{blindlistlevel}>\value{blindlist@level}%
- \stepcounter{blind@levelcount}%
- \blind@list[\value{blindlist}]\relax
- \addtocounter{blind@levelcount}{-1}%
- \setcounter{blind@listcount}{1}%
- \repeat
- \expandafter}\if@endpe\@doendpe\fi % <----------changed
- \ifnum\value{blind@listcount}<\value{blindlist}%
- \stepcounter{blind@listcount}%
- \repeat
- }
- }%
- }
\AddToHook{package/cleveref/after}
{
\let\@makefntext\cref@old@makefntext
@@ -128,11 +198,6 @@
\protected@edef\cref@currentlabel{%
[footnote][\arabic{footnote}][\cref@result]%
\p@footnote\@thefnmark}}
- \RenewDocumentCommand\refstepcounter{om}{%
- \IfNoValueTF{#1}%
- {\refstepcounter@noarg{#2}}%
- {\refstepcounter@optarg[#1]{#2}}%
- }%
}
\ExplSyntaxOn
\AddToHook{package/booktabs/after}
@@ -159,6 +224,102 @@
\cr}
}
\ExplSyntaxOff
+
+\ExplSyntaxOn
+\AddToHook{package/fancyvrb/after}
+{
+ \def\FV@LeaveVMode{%
+ \if@noskipsec
+ \leavevmode
+ \else
+ \if@FV@ResetMargins\if@inlabel\leavevmode\fi\fi
+ \fi
+ \ifvmode
+ \@noparlisttrue
+ \__tag_gincr_para_main_begin_int:
+ \tag_struct_begin:n{tag=\l__tag_para_main_tag_tl}
+ \else
+ \bool_set_true:N\l__tag_para_flattened_bool
+ \@noparlistfalse
+ \unskip\par
+ \fi
+ }
+ \def\FV@List#1{%
+ \begingroup
+ \FV@UseKeyValues
+ \FV@LeaveVMode
+ \if@inlabel\else\setbox\@labels=\box\voidb@x\fi
+ \FV@ListNesting{#1}%
+ \FV@ListParameterHook
+ \FV@ListVSpace
+ \FV@SetLineWidth
+ \FV@InterLinePenalty
+ \let\FV@ProcessLine\FV@ListProcessLine@i
+ \FV@CatCodes
+ \FV@FormattingPrep
+ \FV@ObeyTabsInit
+ \cs_if_exist:NT \FV@BeginListFrame
+ {
+ \tag_mc_begin:n{artifact}
+ \FV@BeginListFrame
+ \tag_mc_end:
+ }
+ \tag_struct_begin:n{tag=verbatim}
+ }
+ \def\FV@EndList{%
+ \FV@ListProcessLastLine
+ \tag_struct_end:
+ \cs_if_exist:NT \FV@EndListFrame
+ {
+ \tag_mc_begin:n{artifact}
+ \FV@EndListFrame
+ \tag_mc_end:
+ }
+ \@endparenv
+ \endgroup
+ \@endpetrue
+ }
+ \def\FV@ListProcessLine#1{%
+ \hbox to \hsize{%
+ \kern\leftmargin
+ \hbox to \linewidth{%
+ \cs_if_exist:NT \FV@LeftListNumber
+ {
+ \tag_struct_begin:n{tag=Lbl}
+ \tag_mc_begin:n{}
+ \FV@LeftListNumber
+ \tag_mc_end:
+ \tag_struct_end:
+ }
+ \cs_if_exist:NT \FV@LeftListFrame
+ {
+ \tag_mc_begin:n{artifact}
+ \FV@LeftListFrame
+ \tag_mc_end:
+ }
+ \tag_struct_begin:n{tag=codeline}
+ \tag_mc_begin:n{}%
+ \FancyVerbFormatLine{#1}%
+ \tag_mc_end:
+ \tag_struct_end:\hss
+ \cs_if_exist:NT \FV@RightListFrame
+ {
+ \tag_mc_begin:n{artifact}
+ \FV@RightListFrame
+ \tag_mc_end:
+ }
+ \cs_if_exist:NT \FV@RightListNumber
+ {
+ \tag_struct_begin:n{tag=Lbl}
+ \tag_mc_begin:n{}
+ \FV@RightListNumber
+ \tag_mc_begin:n{}
+ \tag_struct_end:
+ }
+ }
+ \hss}}
+ }
+\ExplSyntaxOff
\endinput
%%
%% End of file `latex-lab-testphase-firstaid.sty'.
diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-float.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-float.sty
index a944c944b20..f170b7c35f8 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-float.sty
+++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-float.sty
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-float.dtx (C) Copyright 2023 LaTeX Project
-\def\ltlabfloatdate{2024-03-23}
-\def\ltlabfloatversion{0.81e}
+\def\ltlabfloatdate{2024-09-20}
+\def\ltlabfloatversion{0.81f}
\ProvidesExplPackage {latex-lab-testphase-float} {\ltlabfloatdate} {\ltlabfloatversion}
{Code related to the tagging of floats}
\prop_new:N \g__tag_float_sect_prop
@@ -42,8 +42,14 @@
\seq_gput_right:Nn \g__tag_float_types_seq {figure}
\seq_gput_right:Nn \g__tag_float_types_seq {table}
\tl_new:N\@current@float@struct
+\int_new:N\g__tag_float_int
\bool_new:N \g__tag_float_sect_bool
\bool_gset_true:N \g__tag_float_sect_bool
+\cs_new_protected:Npn \__tag_float_init:
+ {
+ \int_gincr:N \g__tag_float_int
+ \tl_set:Ne \@current@float@struct { \int_use:N \g__tag_float_int}
+ }
\cs_new_protected:Npn\__tag_float_init_collect:
{
\bool_if:NT\g__tag_float_sect_bool
@@ -91,12 +97,39 @@
{
split-float .code:n =
{
- \__tag_float_end:
- \__tag_float_begin:
- \MakeLinkTarget*{floatstructure.\int_use:N\c@g__tag_struct_abs_int}
+ \UseTaggingSocket{float/end}
+ \__tag_float_init:
+ \UseTaggingSocket{float/begin}
+ \MakeLinkTarget*{floatstructure.\@current@float@struct}
}
}
-
+\str_if_exist:cF { l__socket_tagsupport/float/begin_plug_str }
+ {
+ \NewSocket{tagsupport/float/hmode/begin}{0}
+ \NewSocket{tagsupport/float/hmode/end}{0}
+ \NewSocket{tagsupport/float/begin}{0}
+ \NewSocket{tagsupport/float/end}{0}
+ }
+\NewSocketPlug {tagsupport/float/hmode/begin}{default}
+ {
+ \__tag_float_stop_par:
+ }
+\AssignSocketPlug{tagsupport/float/hmode/begin}{default}
+\NewSocketPlug{tagsupport/float/hmode/end}{default}
+ {
+ \__tag_float_start_par:
+ }
+\AssignSocketPlug{tagsupport/float/hmode/end}{default}
+\NewSocketPlug{tagsupport/float/begin}{default}
+ {
+ \__tag_float_begin:
+ }
+\AssignSocketPlug{tagsupport/float/begin}{default}
+\NewSocketPlug{tagsupport/float/end}{default}
+ {
+ \__tag_float_end:
+ }
+\AssignSocketPlug{tagsupport/float/end}{default}
\cs_new_protected:Npn \__tag_float_stop_par:
{
\tag_mc_end:
@@ -113,7 +146,6 @@
}
\tag_mc_begin:n{tag=P}
}
-
\cs_new_protected:Npn \__tag_float_begin:
{%
\bool_if:NTF\g__tag_float_sect_bool
@@ -147,7 +179,7 @@
\fi
\ifhmode
\@bsphack
- \@nameuse{__tag_float_stop_par:}% <---end P
+ \UseTaggingSocket{float/hmode/begin}%
\@floatpenalty -\@Mii
\else
\@floatpenalty-\@Miii
@@ -190,7 +222,8 @@
}%
\@fltovf
\fi
- \@nameuse{__tag_float_begin:}%
+ \csname __tag_float_init:\endcsname
+ \UseTaggingSocket{float/begin}%
\global \setbox\@currbox
\color@vbox
\normalcolor
@@ -198,11 +231,11 @@
\hsize\columnwidth
\@parboxrestore
\@floatboxreset
- \MakeLinkTarget*{floatstructure.\number\value{g__tag_struct_abs_int}}%
+ \MakeLinkTarget*{\@captype.struct.\@current@float@struct}%
}%
\def\end@float{%
\@endfloatbox
- \@nameuse{__tag_float_end:}%
+ \UseTaggingSocket{float/end}%
\ifnum\@floatpenalty <\z@
\@largefloatcheck
\@cons\@currlist\@currbox
@@ -214,14 +247,14 @@
\penalty\@floatpenalty
\else
\vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@Esphack
- \@nameuse{__tag_float_start_par:}% restart P safe here??
+ \UseTaggingSocket{float/hmode/end}%
\fi
\fi
}
\def\end@dblfloat{%
\if@twocolumn
\@endfloatbox
- \@nameuse{__tag_float_end:}%
+ \UseTaggingSocket{float/end}%
\ifnum\@floatpenalty <\z@
\@largefloatcheck
\global\dp\@currbox1sp %
@@ -234,7 +267,7 @@
\penalty\@floatpenalty
\else
\vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@Esphack
- \@nameuse{__tag_float_start_par:}% restart P safe here??
+ \UseTaggingSocket{float/hmode/end}%
\fi
\fi
\else
@@ -243,7 +276,55 @@
}%
\ExplSyntaxOn
\def\hyper@nopatch@caption{}
-\let\@kernel@refstepcounter\refstepcounter %as long it is not in the kernel
+\str_if_exist:cF { l__socket_tagsupport/caption/begin_plug_str }
+ {
+ \NewSocket{tagsupport/caption/begin}{1}
+ \NewSocket{tagsupport/caption/end}{0}
+ \NewSocket{tagsupport/caption/label/begin}{0}
+ \NewSocket{tagsupport/caption/label/end}{0}
+ }
+\str_if_exist:cF { l__socket_tagsupport/para/begin_plug_str }
+ {
+ \NewSocket{tagsupport/para/begin}
+ \NewSocket{tagsupport/para/end}
+ }
+\NewSocket{caption/label}{1}
+\NewSocketPlug{caption/label}{kernel}
+ {
+ #1:~
+ }
+\AssignSocketPlug{caption/label}{kernel}
+\NewSocketPlug {tagsupport/caption/begin}{default}
+ {
+ \tl_if_empty:eTF {#1}
+ {
+ \tag_struct_begin:n{tag=Caption,firstkid}
+ }
+ {
+ \tag_struct_begin:n{tag=Caption,parent=#1,firstkid}
+ }
+ \bool_set_true:N \l__tag_para_flattened_bool
+ }
+\AssignSocketPlug{tagsupport/caption/begin}{default}
+\NewSocketPlug {tagsupport/caption/end}{default}
+ {
+ \tag_struct_end:
+ }
+\AssignSocketPlug{tagsupport/caption/end}{default}
+\NewSocketPlug {tagsupport/caption/label/begin}{default}
+ {
+ \tagpdfparaOff
+ \tag_struct_begin:n{tag=Lbl}
+ \tag_mc_begin:n{}
+ }
+\AssignSocketPlug{tagsupport/caption/label/begin}{default}
+\NewSocketPlug {tagsupport/caption/label/end}{default}
+ {
+ \tag_mc_end:
+ \tag_struct_end:
+ \tagpdfparaOn
+ }
+\AssignSocketPlug{tagsupport/caption/label/end}{default}
\def\caption{%
\ifx\@captype\@undefined
\@latex@error{\noexpand\caption\c_space_tl outside~float}\@ehd
@@ -255,52 +336,39 @@
}
{
\@kernel@refstepcounter\@captype
- \xdef\@currentHref{floatstructure.\@current@float@struct}%
+ \xdef\@currentHref{\@captype.struct.\@current@float@struct}%
}
\expandafter\@firstofone
\fi
{\@dblarg{\@caption\@captype}}%
}
-\providecommand\theHg__tag_struct_abs_int{\int_use:N\c@g__tag_struct_abs_int}
-
\AddToHook{begindocument}
{
\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
- \tag_stop:n{caption}
+ \SuspendTagging{\@makecaption}
\sbox\@tempboxa{#1:~#2}%
- \tag_start:n{caption}
- \tagtool{para=false}
- \tl_if_empty:NT \@current@float@struct
- { \tl_set:Ne \@current@float@struct {\tag_get:n{struct_num}} }
- \tag_struct_begin:n{tag=Caption,parent=\@current@float@struct}
- \tag_if_active:T
- {
- \seq_gpop_right:cN {g__tag_struct_kids_\@current@float@struct _seq}\l__tag_tmpa_tl
- \seq_gput_left:cV {g__tag_struct_kids_\@current@float@struct _seq}\l__tag_tmpa_tl
- }
+ \ResumeTagging{\@makecaption}
+ \UseTaggingSocket{caption/begin}{\@current@float@struct}
\ifdim \wd\@tempboxa >\hsize
- \tag_struct_begin:n{tag=Lbl}
- \tag_mc_begin:n{}
- #1:~
- \tag_mc_end:
- \tag_struct_end:
- \tag_mc_begin:n{}
- #2\par
- \tag_mc_end:
+ \UseTaggingSocket{caption/label/begin}
+ \UseSocket{caption/label}{#1}
+ \UseTaggingSocket{caption/label/end}
+ \UseTaggingSocket{para/begin}
+ #2
+ \par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil
- \tag_struct_begin:n{tag=Lbl}
- \tag_mc_begin:n{}
- #1:~
- \tag_mc_end:
- \tag_struct_end:
- \tag_mc_begin:n{}
+ \UseTaggingSocket{caption/label/begin}
+ \UseSocket{caption/label}{#1}
+ \UseTaggingSocket{caption/label/end}
+ \UseTaggingSocket{para/begin}
#2
- \tag_mc_end:\hfil}%
+ \UseTaggingSocket{para/end}
+ \hfil}%
\fi
- \tag_struct_end: %caption
+ \UseTaggingSocket{caption/end}
\vskip\belowcaptionskip}
}
diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-graphic.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-graphic.sty
index 2ea6e529d73..942f2deeddf 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-graphic.sty
+++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-graphic.sty
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-graphic.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabgraphicdate{2024-03-13}
-\def\ltlabgraphicversion{0.80d}
+\def\ltlabgraphicdate{2024-09-18}
+\def\ltlabgraphicversion{0.80e}
\ProvidesExplPackage {latex-lab-testphase-graphic} {\ltlabgraphicdate} {\ltlabgraphicversion}
{Code related to the tagging of graphics}
\RequirePackage{l3opacity}
@@ -222,7 +222,7 @@
\bool_set_true:N \l__tag_graphic_artifact_bool
\bool_set_false:N \l__tag_graphic_BBox_bool
}
- {false}{\tag_stop:}
+ {false}{\tag_suspend:n{Gin}}
}
{\tl_set:Nn\l__tag_graphic_struct_tl{#1}}
}
@@ -257,7 +257,7 @@
\bool_set_true:N \l__tag_graphic_artifact_bool
\bool_set_false:N \l__tag_graphic_BBox_bool
}
- {false}{\tag_stop:}
+ {false}{\tag_suspend:n{picture}}
}
{\tl_set:Nn\l__tag_graphic_struct_tl{#1}}
}
@@ -657,7 +657,7 @@
\@defaultunitsset\@tempdimc{#1}\unitlength
\Gin@tag@struct@begin
\setbox\@picbox\hb@xt@\@tempdimc\bgroup
- \tag_stop: %do not tag inside the picture box
+ \tag_suspend:n{\@picture} %do not tag inside the picture box
\@defaultunitsset\@tempdimc{#3}\unitlength
\hskip -\@tempdimc
\@defaultunitsset\@tempdimc{#4}\unitlength
diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-marginpar.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-marginpar.sty
index e40ab0ca2a8..0f8001ce861 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-marginpar.sty
+++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-marginpar.sty
@@ -34,19 +34,35 @@
%%
%% File: latex-lab-marginpar.dtx
%%
-\def\ltlabmarginpardate{2024-02-12}
-\def\ltlabmarginparversion{0.85b}
+\def\ltlabmarginpardate{2024-09-18}
+\def\ltlabmarginparversion{0.85d}
\ProvidesExplPackage {latex-lab-testphase-marginpar} {\ltlabmarginpardate} {\ltlabmarginparversion}
{Changes related to the tagging of the margin notes}
\int_new:N \g__kernel_marginpar_int
\socket_new:nn {tagsupport/marginpar/begin}{0}
\socket_new:nn {tagsupport/marginpar/end}{0}
+\cs_new_protected:Npn\__tag_get_marginpar_parent_aux:nn #1 #2
+ {
+ \str_if_eq:eeT{\use_ii:nn #1}{Part}{\seq_put_right:Nn\l__tag_tmpa_seq {#2}}
+ }
+\cs_new_protected:Npn \__tag_get_marginpar_parent:N #1
+ {
+ \seq_clear:N\l__tag_tmpa_seq
+ \seq_map_pairwise_function:NNN
+ \g__tag_struct_tag_stack_seq
+ \g__tag_struct_stack_seq
+ \__tag_get_marginpar_parent_aux:nn
+ \seq_put_right:Nn\l__tag_tmpa_seq {2}
+ \seq_get_left:NN \l__tag_tmpa_seq #1
+ }
+\cs_generate_variant:Nn \tag_struct_begin:n {e}
\socket_new_plug:nnn {tagsupport/marginpar/begin}{default}
{
\if_mode_horizontal:
\tag_mc_end:
- \tag_struct_begin:n{tag=Aside,parent=\g__tag_para_main_struct_tl}%
+ \__tag_get_marginpar_parent:N \l__tag_tmpa_tl
+ \tag_struct_begin:e{tag=Aside,parent=\l__tag_tmpa_tl}%
\else:
\tag_struct_begin:n{tag=Aside}%
\fi:
@@ -77,9 +93,9 @@
\long\def\@ympar#1{%
\@savemarbox\@marbox{#1}%
\global\setbox\@currbox\copy\@marbox
- \tag_stop:
+ \tag_suspend:n{\@ympar}
\@xympar
- \tag_start:}
+ \tag_resume:n{\@ympar}}
\long\def\@xmpar[#1]#2{%
\int_gincr:N\g__kernel_marginpar_int
\property_if_recorded:eTF { tag_marginpar-opt-\int_use:N\g__kernel_marginpar_int }
@@ -88,21 +104,21 @@
\property_record:ee
{ tag_marginpar-opt-\int_use:N\g__kernel_marginpar_int }{page}
}%
- \tag_stop:
+ \tag_suspend:n{\@xmpar}
\@savemarbox\@currbox{#2}%
- \tag_start:
+ \tag_resume:n{\@xmpar}
}
{
\@savemarbox\@currbox{#2}%
- \tag_stop:
+ \tag_suspend:n{\@xmpar}
\@savemarbox\@marbox{#1
\property_record:ee
{ tag_marginpar-opt-\int_use:N\g__kernel_marginpar_int }{page}}
- \tag_start:
+ \tag_resume:n{\@xmpar}
}
- \tag_stop:
+ \tag_suspend:n{\@xmpar}
\@xympar
- \tag_start:
+ \tag_resume:n{\@xmpar}
}
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-minipage.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-minipage.sty
index 3b35a7beb38..a82944e5d10 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-minipage.sty
+++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-minipage.sty
@@ -34,8 +34,8 @@
%%
%% File: latex-lab-minipage.dtx
%%
-\def\ltlabminipagedate{2023-10-30}
-\def\ltlabminipageversion{0.81c}
+\def\ltlabminipagedate{2024-09-18}
+\def\ltlabminipageversion{0.81e}
\ProvidesExplPackage {latex-lab-testphase-minipage}
{\ltlabminipagedate} {\ltlabminipageversion}
{Code related to the tagging of minipages and parboxes}
@@ -54,12 +54,13 @@
\@pboxswfalse
\setlength\@tempdima{#4}%
\def\@mpargs{{#1}{#2}[#3]{#4}}%
- \socket_use:n{tagsupport/minipage/before}% new
+ \UseTaggingSocket{minipage/before}% new
\setbox\@tempboxa\vbox\bgroup
\color@begingroup
\hsize\@tempdima
\textwidth\hsize \columnwidth\hsize
\@parboxrestore
+ \UseTaggingSocket{para/restore}
\def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@
\socket_assign_plug:nn{fntext/process}{mp}%
\let\@listdepth\@mplistdepth \@mplistdepth\z@
@@ -77,18 +78,20 @@
\@minipagefalse %% added 24 May 89
\color@endgroup
\egroup
- \tag_stop:n{minipage}
+ \tag_suspend:n{minipage}
\expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}%
- \tag_start:n{minipage}
- \socket_use:n{tagsupport/minipage/after} %new end ...
+ \tag_resume:n{minipage}
+ \UseTaggingSocket{minipage/after} %new end ...
}
\long\def\@iiiparbox#1#2[#3]#4#5{%
\@kernel@init@parbox
\leavevmode
\@pboxswfalse
\setlength\@tempdima{#4}%
- \socket_use:n{tagsupport/parbox/before}
- \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}%
+ \UseTaggingSocket{parbox/before}
+ \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore
+ \UseTaggingSocket{para/restore}
+ #5\@@par}%
\ifx\relax#2\else
\setlength\@tempdimb{#2}%
\edef\@parboxto{to\the\@tempdimb}%
@@ -102,23 +105,36 @@
\csname bm@#3\endcsname}%
\if@pboxsw \m@th$\fi
\@end@tempboxa%
- \socket_use:n{tagsupport/parbox/after}
+ \UseTaggingSocket{parbox/after}
}
\tl_new:N \l__ltboxes_tag_tl
\tl_set:Nn \l__ltboxes_tag_tl {Div}
\socket_new_plug:nnn{tagsupport/minipage/before}{tag/dflt}
{
- \tag_mc_end_push:\tag_struct_end:
+ \tag_mc_end_push:
+ \bool_if:NT \l__tag_para_bool {\tag_struct_end:}
\tag_struct_begin:n{tag=\l__ltboxes_tag_tl}
}
\socket_new_plug:nnn{tagsupport/minipage/after}{tag/dflt}
- {\tag_struct_end:\tag_struct_begin:n{tag=\l__tag_para_tag_tl}\tag_mc_begin_pop:n{}}
+ {
+ \tag_struct_end:
+ \bool_if:NT \l__tag_para_bool {\tag_struct_begin:n{tag=\l__tag_para_tag_tl}}
+ \tag_mc_begin_pop:n{}
+ }
\socket_new_plug:nnn{tagsupport/parbox/before}{tag/dflt}
- {\tag_mc_end_push:\tag_struct_end:\tag_struct_begin:n{tag=\l__ltboxes_tag_tl}}
+ {
+ \tag_mc_end_push:
+ \bool_if:NT \l__tag_para_bool {\tag_struct_end:}
+ \tag_struct_begin:n{tag=\l__ltboxes_tag_tl}
+ }
\socket_new_plug:nnn{tagsupport/parbox/after}{tag/dflt}
- {\tag_struct_end:\tag_struct_begin:n{tag=\l__tag_para_tag_tl}\tag_mc_begin_pop:n{}}
+ {
+ \tag_struct_end:
+ \bool_if:NT \l__tag_para_bool {\tag_struct_begin:n{tag=\l__tag_para_tag_tl}}
+ \tag_mc_begin_pop:n{}
+ }
\socket_assign_plug:nn{tagsupport/minipage/before}{tag/dflt}
\socket_assign_plug:nn{tagsupport/minipage/after} {tag/dflt}
\socket_assign_plug:nn{tagsupport/parbox/before} {tag/dflt}
diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-sec.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-sec.sty
index 6fee3cc5a94..b0c5a1c2fd4 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-sec.sty
+++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-sec.sty
@@ -33,16 +33,19 @@
%%
%%
%% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabsecdate{2024-02-12}
-\def\ltlabsecversion{0.84c}
+\def\ltlabsecdate{2024-10-04}
+\def\ltlabsecversion{0.84f}
\ProvidesExplPackage {latex-lab-testphase-sec} {\ltlabsecdate} {\ltlabsecversion}
{Code related to the tagging of sectioning commands}
\RequirePackage{latex-lab-kernel-changes}
\seq_new:N \g__tag_sec_stack_seq
-\seq_gpush:Nn\g__tag_sec_stack_seq {{Document}{-100}}
+\seq_gpush:Nn\g__tag_sec_stack_seq {{Document}{-100}{2}}
+\cs_new:Npn \__tag_get_data_current_Sect:
+ {
+ \exp_last_unbraced:Ne\use_iii:nnn{\seq_item:Nn\g__tag_sec_stack_seq{1}}
+ }
\bool_new:N \l__tag_sec_Sect_bool
\bool_set_true:N\l__tag_sec_Sect_bool
-
\cs_new_protected:Npn\__tag_sec_begin:nn #1 #2 %#1 level #2 keyval
{
\tag_struct_begin:n
@@ -50,7 +53,8 @@
tag= {\int_compare:nNnTF {#1}={-1}{Part}{Sect}}
,#2
}
- \seq_gpush:Ne \g__tag_sec_stack_seq {{\g__tag_struct_tag_tl}{\int_eval:n{#1}}}
+ \seq_gpush:Ne \g__tag_sec_stack_seq
+ {{\g__tag_struct_tag_tl}{\int_eval:n{#1}}{\g__tag_struct_stack_current_tl}}
}
\msg_new:nnn { tag } {wrong-sect-nesting}
{
@@ -61,12 +65,12 @@
\cs_new_protected:Npn\__tag_sec_end:n #1 % #1 level
{
\seq_get:NN \g__tag_sec_stack_seq \l__tag_tmpa_tl
- \int_compare:nNnT {#1}<{\exp_last_unbraced:NV\use_ii:nn\l__tag_tmpa_tl+1}
+ \int_compare:nNnT {#1}<{\exp_last_unbraced:NV\use_ii:nnn\l__tag_tmpa_tl+1}
{
\seq_get:NN\g__tag_struct_tag_stack_seq \l__tag_tmpb_tl
\exp_args:Nee
\tl_if_eq:nnTF
- {\exp_last_unbraced:NV\use_i:nn\l__tag_tmpa_tl}
+ {\exp_last_unbraced:NV\use_i:nnn\l__tag_tmpa_tl}
{\exp_last_unbraced:NV\use_i:nn\l__tag_tmpb_tl}
{
\seq_gpop:NN \g__tag_sec_stack_seq \l__tag_tmpa_tl
@@ -75,7 +79,7 @@
}
{
\msg_warning:nnee {tag}{wrong-sect-nesting}
- { \exp_last_unbraced:NV\use_i:nn \l__tag_tmpa_tl }
+ { \exp_last_unbraced:NV\use_i:nnn \l__tag_tmpa_tl }
{ \exp_last_unbraced:NV\use_i:nn \l__tag_tmpb_tl }
}
}
@@ -187,7 +191,7 @@
\IfBooleanTF
{#1}
{ \@spart {#3} }
- { \@part [#2]{#3} }
+ { \@part [{#2}]{#3} }
\tag_tool:n {sec-stop-part}
}
}
@@ -219,7 +223,7 @@
\IfBooleanTF
{#1}
{ \@schapter {#3} }
- { \@chapter [#2]{#3} }
+ { \@chapter [{#2}]{#3} }
\tag_tool:n {sec-stop-chapter}
}
\RenewDocumentCommand\part{ s O{#3} m }
@@ -257,7 +261,7 @@
\IfBooleanTF
{#1}
{ \@spart {#3} }
- { \@part [#2]{#3} }
+ { \@part [{#2}]{#3} }
\tag_tool:n{sec-stop-part}
}
}
@@ -303,9 +307,9 @@
{\tagmcbegin{tag=Lbl}}
{#1}
}
- \tag_stop:n{hangfrom}
+ \tag_suspend:n{hangfrom}
\hangindent \wd\@tempboxa\noindent
- \tag_start:n{hangfrom}
+ \tag_resume:n{hangfrom}
\tagmcbegin{}\box\@tempboxa\tagmcend\tagstructend\tagmcbegin{}}
\cs_new_protected:Npn \@kernel@tag@svsec
{
@@ -329,7 +333,7 @@
\@tempskipa #5\relax
\ifdim \@tempskipa>\z@
\begingroup
- \tagtool{para-flattened=true} % or \bool_set_true\l__tag_para_flattened_bool
+ \tagtool{para-flattened=true} % or \bool_set_true\l_@@_para_flattened_bool
#6{%
\ifnum #2>\c@secnumdepth
\@hangfrom {\hskip #3\relax\@svsec}%
diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-table.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-table.sty
index 4af648e77c4..91a750b20a5 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-table.sty
+++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-table.sty
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtbldate{2024-05-25}
-\def\ltlabtblversion{0.85i}
+\def\ltlabtbldate{2024-09-18}
+\def\ltlabtblversion{0.85n}
\ProvidesExplPackage {latex-lab-testphase-table} {\ltlabtbldate} {\ltlabtblversion}
{Code related to the tagging of tables}
\RequirePackage{array}
@@ -50,47 +50,97 @@
\tl_set:Nn \l__tbl_cellattribute_tl {}
\tl_new:N \l__tbl_rowattribute_tl
\tl_set:Nn \l__tbl_rowattribute_tl {}
+\prop_new:N\g__tbl_untagged_cells_prop
+\prop_new:N\l__tbl_saved_untagged_cells_prop
\clist_new:N \l__tbl_tmpa_clist
\tl_new:N \l__tbl_tmpa_tl
+\str_new:N \l__tbl_tmpa_str
+\str_if_exist:cF { l__socket_tagsupport/tbl/init/celldata_plug_str }
+ {
+ \NewSocket{tagsupport/tbl/init/celldata}{0}
+ \NewSocket{tagsupport/tbl/restore/celldata}{0}
+ }
+\NewSocketPlug{tagsupport/tbl/init/celldata}{default}
+ {
+ \prop_set_eq:NN\l__tbl_saved_untagged_cells_prop \g__tbl_untagged_cells_prop
+ \prop_gclear:N \g__tbl_untagged_cells_prop
+ }
+\AssignSocketPlug{tagsupport/tbl/init/celldata}{default}
+
+\NewSocketPlug{tagsupport/tbl/restore/celldata}{default}
+ {
+ \prop_gset_eq:NN\g__tbl_untagged_cells_prop \l__tbl_saved_untagged_cells_prop
+ }
+\AssignSocketPlug{tagsupport/tbl/restore/celldata}{default}
\NewSocketPlug{tagsupport/tbl/cell/begin}{TD}
{
\__tbl_show_curr_cell_data:
- \tag_struct_begin:n
+ \__tbl_if_tag_cell:nnT {\g__tbl_row_int } { \g__tbl_col_int }
{
- tag =\l__tbl_celltag_tl,
- attribute-class =\l__tbl_cellattribute_tl
- }
- \seq_gput_right:Ne \g__tbl_struct_cur_seq { \tag_get:n {struct_num} }
- \int_step_inline:nn { \g__tbl_span_tl - 1 }
- {
- \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} }
+ \clist_if_in:NVT \l__tbl_header_columns_clist\g__tbl_col_int
+ {
+ \tl_set:Nn \l__tbl_celltag_tl {TH}
+ \tl_set:Ne \l__tbl_cellattribute_tl {\l__tbl_cellattribute_tl,TH-row}
+ }
+ \tl_set:Ne \l__tbl_tmpa_tl {\int_eval:n { \g__tbl_col_int - 1 - \g__tbl_table_cols_tl }}
+ \clist_if_in:NoT \l__tbl_header_columns_clist { \l__tbl_tmpa_tl }
+ {
+ \tl_set:Nn \l__tbl_celltag_tl {TH}
+ \tl_set:Ne \l__tbl_cellattribute_tl {\l__tbl_cellattribute_tl,TH-row}
+ }
+ \tag_struct_begin:n
+ {
+ tag =\l__tbl_celltag_tl,
+ attribute-class ={\l__tbl_cellattribute_tl}
+ }
+ \seq_gput_right:Ne \g__tbl_struct_cur_seq { \tag_get:n {struct_num} }
+ \int_step_inline:nn { \g__tbl_span_tl - 1 }
+ {
+ \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} }
+ }
+ \tag_mc_begin:n{}
}
- \tag_mc_begin:n{}
}
\NewSocketPlug{tagsupport/tbl/cell/end}{TD}
{
- \tag_mc_end:
- \tag_struct_end:
+ \__tbl_if_tag_cell:nnT {\g__tbl_row_int } { \g__tbl_col_int }
+ {
+ \tag_mc_end:
+ \tag_struct_end:
+ }
}
\NewSocketPlug{tagsupport/tbl/pcell/begin}{TDpbox}
{
\__tbl_show_curr_cell_data:
- \tag_struct_begin:n
- {
- tag =\l__tbl_pcelltag_tl,
- attribute-class =\l__tbl_cellattribute_tl
- }
- \seq_gput_right:Ne \g__tbl_struct_cur_seq { \tag_get:n {struct_num} }
- \int_step_inline:nn { \g__tbl_span_tl - 1 }
+ \__tbl_if_tag_cell:nnT {\g__tbl_row_int } { \g__tbl_col_int }
{
- \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} }
- }
- \tagpdfparaOn
- \tl_set:Nn \l__tag_para_main_tag_tl {Div}
+ \clist_if_in:NVT \l__tbl_header_columns_clist\g__tbl_col_int
+ {
+ \tl_set:Nn \l__tbl_celltag_tl {TH}
+ \tl_set:Ne \l__tbl_cellattribute_tl {\l__tbl_cellattribute_tl,TH-row}
+ }
+ \tag_struct_begin:n
+ {
+ tag =\l__tbl_pcelltag_tl,
+ attribute-class ={\l__tbl_cellattribute_tl}
+ }
+ \seq_gput_right:Ne \g__tbl_struct_cur_seq { \tag_get:n {struct_num} }
+ \int_step_inline:nn { \g__tbl_span_tl - 1 }
+ {
+ \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} }
+ }
+ \tagpdfparaOn
+ \tl_set:Nn \l__tag_para_main_tag_tl {Div}
+ }
}
\NewSocketPlug{tagsupport/tbl/pcell/end}{TDpbox}
{
- \tag_struct_end:
+ \__tbl_if_tag_cell:nnT {\g__tbl_row_int } { \g__tbl_col_int }
+ {
+ \tag_struct_end:
+ \legacy_if:nT {@endpe}{\par}
+ \mode_if_vertical:T{ \tagpdfparaOff }
+ }
}
\NewSocketPlug{tagsupport/tbl/row/begin}{TR}
{
@@ -116,7 +166,7 @@
{
\__tbl_trace:n
{==>~
- stucture~stored~for~row~\int_use:N\g__tbl_row_int :~
+ structure~stored~for~row~\int_use:N\g__tbl_row_int :~
\seq_use:Nn \g__tbl_struct_cur_seq {,}
}
}
@@ -124,13 +174,23 @@
\tag_struct_end:
}
}
+\int_if_exist:NF \l__tag_block_flattened_level_int
+ {
+ \int_new:N \l__tag_block_flattened_level_int
+ }
+\NewSocketPlug{tagsupport/para/restore}{Table}
+ {
+ \tl_set:Nn \l__tag_para_main_tag_tl {Div}
+ \tl_set_eq:NN \l__tag_para_tag_tl\l__tag_para_tag_default_tl
+ \bool_set_true:N \l__tag_para_bool
+ \bool_set_false:N \l__tag_para_flattened_bool
+ \int_zero:N \l__tag_block_flattened_level_int
+ }
\NewSocketPlug{tagsupport/tbl/init}{Table}
{
- \tag_if_active:T
- {
- \bool_set_false:N \l__tag_para_bool
- \__tbl_init_struct_data:
- }
+ \bool_set_false:N \l__tag_para_bool
+ \AssignSocketPlug{tagsupport/para/restore}{Table}
+ \__tbl_init_struct_data:
}
\NewSocketPlug{tagsupport/tbl/finalize}{Table}
{
@@ -190,7 +250,7 @@
\prop_if_exist:cT
{ g__tag_struct_ \l__tbl_tmpa_tl _prop }
{
- \exp_args:No \__tag_struct_prop_gput:nnn {\l__tbl_tmpa_tl} {S}{/Artifact}
+ \__tag_struct_prop_gput:onn { \l__tbl_tmpa_tl } {S}{/Artifact}
}
}
}
@@ -261,7 +321,7 @@
\prop_if_exist:cT
{ g__tag_struct_ \l__tbl_tmpa_tl _prop }
{
- \exp_args:No\__tag_struct_prop_gput:nnn {\l__tbl_tmpa_tl} {S}{/Artifact}
+ \__tag_struct_prop_gput:onn {\l__tbl_tmpa_tl} {S}{/Artifact}
}
}
}
@@ -320,14 +380,21 @@
{/O /Table /ColSpan~\int_eval:n{#1}}
}
\tl_set:Ne \l__tbl_cellattribute_tl
- {colspan-\int_eval:n{#1}}
+ {\l__tbl_cellattribute_tl,colspan-\int_eval:n{#1}}
}
}
-\tag_if_active:T
- { \cs_generate_variant:Nn \__tag_attr_new_entry:nn {ee} }
-
+\str_if_exist:cF { l__socket_tagsupport/tbl/leaders/end_plug_str }
+ {
+ \NewSocket{tagsupport/tbl/leaders/begin}{0}
+ \NewSocket{tagsupport/tbl/leaders/end}{0}
+ }
+\NewSocketPlug{tagsupport/tbl/leaders/begin}{code}
+ { \tag_mc_begin:n{artifact} }
+\NewSocketPlug{tagsupport/tbl/leaders/end}{code}
+ { \tag_mc_end: }
\AddToHook{cmd/array/before}{\__tag_tbl_disable:}
+
\cs_new_protected:Npn \__tag_tbl_disable:
{
\AssignSocketPlug{tagsupport/tbl/cell/begin}{noop}
@@ -347,6 +414,8 @@
\AssignSocketPlug{tagsupport/tbl/vmode/begin}{noop}
\AssignSocketPlug{tagsupport/tbl/vmode/end}{noop}
\AssignSocketPlug{tagsupport/tbl/colspan}{noop}
+ \AssignSocketPlug{tagsupport/tbl/leaders/begin}{noop}
+ \AssignSocketPlug{tagsupport/tbl/leaders/end}{noop}
}
\cs_new_protected:Npn \__tag_tbl_enable:
@@ -368,6 +437,8 @@
\AssignSocketPlug{tagsupport/tbl/vmode/begin}{Table}
\AssignSocketPlug{tagsupport/tbl/vmode/end}{Table}
\AssignSocketPlug{tagsupport/tbl/colspan}{code}
+ \AssignSocketPlug{tagsupport/tbl/leaders/begin}{code}
+ \AssignSocketPlug{tagsupport/tbl/leaders/end}{code}
}
\keys_define:nn { __tag / setup }
@@ -385,6 +456,7 @@
\tl_set:Nn\l__tbl_celltag_tl {text}
\tl_set:Nn\l__tbl_tabletag_tl {Div}
\clist_clear:N \l__tbl_header_rows_clist
+ \clist_clear:N \l__tbl_header_columns_clist
},
table/tagging .default:n = true,
table/tagging .initial:n = true
@@ -416,6 +488,7 @@
}
\clist_new:N \l__tbl_header_rows_clist
+\clist_new:N \l__tbl_header_columns_clist
\cs_new_protected:Npn \__tbl_set_header_rows:
{
\clist_map_inline:Nn \l__tbl_header_rows_clist
@@ -433,7 +506,19 @@
{ g__tag_struct_####1_prop }
{ C }
\l__tbl_tmpa_tl
- {\__tag_struct_prop_gput:nne{ ####1 }{C}{[/TH-col~\l__tbl_tmpa_tl]} }
+ {
+ \str_set:Ne \l__tbl_tmpa_str {\l__tbl_tmpa_tl}
+ \str_remove_once:Nn \l__tbl_tmpa_str {[}
+ \str_remove_once:Nn \l__tbl_tmpa_str {]}
+ \str_if_in:NnTF\l__tbl_tmpa_str{/TH-row}
+ {
+ \str_replace_once:Nnn \l__tbl_tmpa_str {/TH-row}{/TH-both}
+ \__tag_struct_prop_gput:nne{ ####1 }{C}{[\l__tbl_tmpa_str]}
+ }
+ {
+ \__tag_struct_prop_gput:nne{ ####1 }{C}{[/TH-col~\l__tbl_tmpa_str]}
+ }
+ }
{\__tag_struct_prop_gput:nnn{ ####1 }{C}{/TH-col}}
}
}
@@ -442,8 +527,68 @@
\keys_define:nn { __tag / setup }
{
table/header-rows .clist_set:N = \l__tbl_header_rows_clist,
+ table/header-columns .clist_set:N = \l__tbl_header_columns_clist,
table-header-rows .meta:n = {table/header-rows={#1}}
}
+\cs_if_exist:NT \__tag_struct_prop_gput:nnn
+ {
+ \cs_generate_variant:Nn \__tag_struct_prop_gput:nnn {one}
+ }
+\cs_new_protected:Npn \__tbl_multirow:n #1
+ {
+ \prop_get:NeNF \g__tag_attr_entries_prop
+ {rowspan-\int_eval:n{#1}}
+ \l__tbl_tmpa_tl
+ {
+ \__tag_attr_new_entry:ee
+ {rowspan-\int_eval:n{#1}}
+ {/O /Table /RowSpan~\int_eval:n{#1}}
+ }
+ \seq_gput_left:Ne\g__tag_attr_class_used_seq
+ {\pdf_name_from_unicode_e:n{rowspan-\int_eval:n{#1}}}
+ \seq_get_right:NN\g__tbl_struct_cur_seq \l__tbl_tmpb_tl
+ \tl_set:Ne \l__tbl_tmpb_tl { \int_abs:n{\l__tbl_tmpb_tl} }
+ \prop_get:cnNTF
+ { g__tag_struct_\l__tbl_tmpb_tl _prop }
+ { C }
+ \l__tbl_tmpa_tl
+ {
+ \tl_remove_once:Nn \l__tbl_tmpa_tl {[}
+ \tl_remove_once:Nn \l__tbl_tmpa_tl {]}
+ \__tag_struct_prop_gput:one{ \l__tbl_tmpb_tl }
+ {C}
+ {[/rowspan-\int_eval:n{#1}~\l__tbl_tmpa_tl]}
+ }
+ {
+ \__tag_struct_prop_gput:one{ \l__tbl_tmpb_tl }
+ {C}
+ {[/rowspan-\int_eval:n{#1}]}
+ }
+ \__tbl_gset_untagged_row_cells:nn {#1-1}{\g__tbl_span_tl}
+ }
+\keys_define:nn{ __tag / setup }
+ { table/multirow .code:n = {\__tbl_multirow:n {#1} }
+ ,table/multirow .default:n = 1
+ }
+\cs_new_protected:Npn \__tbl_gset_untagged_row_cells:nn #1 #2 % #1 number of rows, #2 number of columns
+ {
+ \int_step_inline:nn {#1}
+ {
+ \int_step_inline:nn {#2}
+ {
+ \prop_gput:Nee \g__tbl_untagged_cells_prop
+ { \int_eval:n {\g__tbl_row_int + ##1},\int_eval:n{\g__tbl_col_int + ####1 -1 } }{}
+ }
+ }
+ }
+\prg_new_protected_conditional:Npnn\__tbl_if_tag_cell:nn #1 #2 %#1 row, #2 col
+ { T,TF }
+ {
+ \prop_get:NeNTF \g__tbl_untagged_cells_prop
+ {\int_eval:n{#1},\int_eval:n{#2}}\l__tbl_tmpa_tl
+ { \prg_return_false:}
+ { \prg_return_true: }
+ }
\cs_new_protected:Npn \__tbl_show_curr_cell_data: {
\__tbl_trace:n { ==>~ current~cell~data:~
\int_use:N \g__tbl_row_int ,
@@ -451,10 +596,6 @@
\g__tbl_span_tl
}
}
-\NewSocket{tbl/celldata/missingcount}{1}
-\NewSocketPlug{tbl/celldata/missingcount}{code}{\tbl_count_missing_cells:n{#1}}
-\AssignSocketPlug{tbl/celldata/missingcount}{code}
-
\cs_new:Npn \__tbl_add_missing_cells:
{
\int_compare:nNnT \g__tbl_missing_cells_int > 0
@@ -464,6 +605,7 @@
additional~cell(s)~into~previous~row:}
\int_step_inline:nn { \g__tbl_missing_cells_int }
{
+ \int_gincr:N\g__tbl_col_int
\UseTaggingSocket{tbl/cell/begin}
\UseTaggingSocket{tbl/cell/end}
}
@@ -505,9 +647,9 @@
}
\hbox to\z@{\hss\parbox[t]\LTcapwidth{%
\reset@font
- \tag_stop:n{caption}
+ \tag_suspend:n{caption}
\sbox\@tempboxa{#1{#2:~}#3}%
- \tag_start:n{caption}
+ \tag_resume:n{caption}
\ifdim\wd\@tempboxa>\hsize
#1{#2:~}#3%
\else
diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-text.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-text.sty
index 749ab3aa08a..2eea229b6d5 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-text.sty
+++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-text.sty
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-text.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtextdate{2023-07-20}
-\def\ltlabtextversion{0.85a}
+\def\ltlabtextdate{2024-09-18}
+\def\ltlabtextversion{0.85b}
\ProvidesExplPackage {latex-lab-testphase-text} {\ltlabtextdate} {\ltlabtextversion}
{Code related to the tagging of various small text commands}
@@ -45,11 +45,11 @@
\tag_mc_end_push:
\tag_struct_begin:n{tag=Span,actualtext=LaTeX}
\tag_mc_begin:n{}
- \tag_stop:n{LaTeX}
+ \tag_suspend:n{LaTeX}
}
\AddToHook{cmd/LaTeX/after}
{
- \tag_start:n{LaTeX}
+ \tag_resume:n{LaTeX}
\tag_mc_end:
\tag_struct_end:
\tag_mc_begin_pop:n{}
diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-toc.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-toc.sty
index e4cb035ba10..558041fccc4 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-toc.sty
+++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-toc.sty
@@ -36,35 +36,41 @@
%%
%%
%% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabtocdate{2023-10-16}
-\def\ltlabtocversion{0.85b}
+\def\ltlabtocdate{2024-09-26}
+\def\ltlabtocversion{0.85e}
\ProvidesExplPackage {latex-lab-testphase-toc} {\ltlabtocdate} {\ltlabtocversion}
{ Code related to the tagging of toc-like lists}
%% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabkerneldate{2024-02-12}
-\def\ltlabkernelversion{0.85c}
+\def\ltlabkerneldate{2024-07-11}
+\def\ltlabkernelversion{0.85d}
\RequirePackage{latex-lab-kernel-changes}
-\def\@contentsline@cfgpoint@before#1#2#3#4{}
-\def\@contentsline@cfgpoint@after#1#2#3#4{}
+\str_if_exist:cF { l__socket_tagsupport/toc/contentsline/before_plug_str }
+ {
+ \NewSocket{tagsupport/toc/contentsline/before}{1}
+ \NewSocket{tagsupport/toc/contentsline/after}{1}
+ }
\def\contentsline#1#2#3#4%
{%
- \@contentsline@cfgpoint@before{#1}{#2}{#3}{#4}%
+ \UseTaggingSocket{toc/contentsline/before}{{#1}{#2}{#3}{#4}}%
\gdef\@contentsline@destination{#4}%
\csname l@#1\endcsname{#2}{#3}%
- \@contentsline@cfgpoint@after{#1}{#2}{#3}{#4}%
+ \UseTaggingSocket{toc/contentsline/after}{{#1}{#2}{#3}{#4}}%
}
\def\addcontentsline#1#2#3{% #1=toc extension, #2= heading type, tag
\addtocontents{#1}{%
\protect\contentsline{#2}{#3}{\thepage}{\@currentHref}\protected@file@percent
}}
-\def\@starttoc@cfgpoint@before#1{}
-\def\@starttoc@cfgpoint@after#1{}
+\str_if_exist:cF { l__socket_tagsupport/toc/starttoc/before_plug_str }
+ {
+ \NewSocket{tagsupport/toc/starttoc/before}{1}
+ \NewSocket{tagsupport/toc/starttoc/after}{1}
+ }
\def\@starttoc#1{%
\begingroup
\makeatletter
- \@starttoc@cfgpoint@before{#1}%
+ \UseTaggingSocket{toc/starttoc/before}{#1}%
\@input{\jobname.#1}%
- \@starttoc@cfgpoint@after{#1}%
+ \UseTaggingSocket{toc/starttoc/after}{#1}%
\if@filesw
\expandafter\newwrite\csname tf@#1\endcsname
\immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
@@ -74,8 +80,11 @@
\NewMirroredHookPairWithArguments{contentsline/number/before}{contentsline/number/after}{1}%
\NewMirroredHookPairWithArguments{contentsline/text/before}{contentsline/text/after}{4}%
\NewMirroredHookPairWithArguments{contentsline/page/before}{contentsline/page/after}{4}%
-\def\@dottedtocline@cfgpoint@leaders#1{#1}
-
+\str_if_exist:cF { l__socket_tagsupport/toc/leaders/before_plug_str }
+ {
+ \NewSocket{tagsupport/toc/leaders/before}{0}
+ \NewSocket{tagsupport/toc/leaders/after}{0}
+ }
\def\@dottedtocline#1#2#3#4#5{%
\ifnum #1>\c@tocdepth \else
\vskip \z@ \@plus.2\p@
@@ -89,10 +98,11 @@
\csname contentsline@text@#1@format\endcsname{#4}%
\UseHookWithArguments{contentsline/text/after}{4}{#1}{#4}{#5}{\@contentsline@destination}%
\nobreak
- \@dottedtocline@cfgpoint@leaders{%
+ \UseTaggingSocket{toc/leaders/before}\SuspendTagging{toc/leaders}%
\leaders\hbox{$\m@th
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep
- mu$}\hfill}%
+ mu$}\hfill
+ \ResumeTagging{toc/leaders}\UseTaggingSocket{toc/leaders/after}%
\nobreak
\hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor
\UseHookWithArguments{contentsline/page/before}{4}{#1}{#4}{#5}{\@contentsline@destination}%
@@ -276,45 +286,26 @@
\fi}
}
%% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabtocdate{2023-10-16}
-\def\ltlabtocversion{0.85b}
+\def\ltlabtocdate{2024-09-26}
+\def\ltlabtocversion{0.85e}
\tl_new:N \l__tag_toc_tmpa_tl
-\AddToHook{cmd/refstepcounter/after}
- {
- \tl_if_blank:VF \@currentHref
- {
- \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
- }
- }
-\AddToHook{cmd/H@refstepcounter/after}
- {
- \tl_if_blank:VF \@currentHref
- {
- \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
- }
- }
-\msg_new:nnn { tag } {struct-dest-unknown}
- {
- Destination~#1~has~no~related~structure.\\
- /Ref~for~structure~#2~not~updated
- }
-
-\cs_new_protected:Npn \g__tag_struct_ref_by_dest:
+\str_if_exist:cF { l__socket_tagsupport/recordtarget_plug_str }
{
- \prop_map_inline:Nn\g__tag_struct_ref_by_dest_prop
- {
- \prop_get:NnNTF \g__tag_struct_dest_num_prop {##2} \l__tag_tmpa_tl
- {
- \__tag_struct_gput_data_ref:ee
- { ##1 }
- { \tag_struct_object_ref:e{ \l__tag_tmpa_tl }}
- }
- {
- \msg_warning:nnnn {tag}{struct-dest-unknown}{##2}{ ##1}
- }
- }
- }
-\hook_gput_code:nnn {tagpdf/finish/before}{tagpdf/struct/Ref}{\g__tag_struct_ref_by_dest:}
+ \AddToHook{cmd/refstepcounter/after}
+ {
+ \tl_if_blank:VF \@currentHref
+ {
+ \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
+ }
+ }
+ \AddToHook{cmd/H@refstepcounter/after}
+ {
+ \tl_if_blank:VF \@currentHref
+ {
+ \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
+ }
+ }
+ }
\int_new:N \g__tag_toc_level_int
\seq_new:N \g__tag_toc_stack_seq
@@ -325,10 +316,11 @@
\int_gset:Nn \g__tag_toc_level_int {-100}
\tag_struct_begin:n{tag=TOC,title=#1}
}
-\cs_set_protected:Npn\@starttoc@cfgpoint@before#1
- {
- \__tag_toc_starttoc_init:n{#1}
- }
+\NewSocketPlug{tagsupport/toc/starttoc/before}{default}
+ {
+ \__tag_toc_starttoc_init:n{#1}
+ }
+\AssignSocketPlug{tagsupport/toc/starttoc/before}{default}
\cs_new_protected:Npn \__tag_toc_starttoc_finalize:
{
\int_step_inline:nn
@@ -337,11 +329,11 @@
\tag_struct_end:
\seq_gclear:N \g__tag_toc_stack_seq
}
-\cs_set_protected:Npn\@starttoc@cfgpoint@after#1
- {
- \__tag_toc_starttoc_finalize:
- }
-
+\NewSocketPlug{tagsupport/toc/starttoc/after}{default}
+ {
+ \__tag_toc_starttoc_finalize:
+ }
+\AssignSocketPlug{tagsupport/toc/starttoc/after}{default}
\cs_new_protected:Npn \__tag_toc_end:n #1
{
\seq_get:NNT\g__tag_toc_stack_seq \l__tag_toc_tmpa_tl
@@ -361,7 +353,8 @@
}
}
\cs_generate_variant:Nn \__tag_toc_end:n {e}
-\cs_new_protected:Npn \__tag_toc_contentsline_begin:nnn #1 #2 #3 %#1 level, #2 content, #3 destination
+\cs_new_protected:Npn \__tag_toc_contentsline_begin:nnnn #1 #2 #3 #4
+ %#1 level, #2 content, #3 page number (unused) #4 destination
{
\tag_if_active:T
{
@@ -383,21 +376,22 @@
\int_gset:Nn \g__tag_toc_level_int { \use:c{toclevel@#1} }
\group_begin:
\text_declare_expand_equivalent:Nn \numberline \use_none:n
- \exp_args:Ne \tag_struct_begin:n{tag=TOCI,title={\text_purify:n {#2}}}
- \prop_gput:Nee \g__tag_struct_ref_by_dest_prop
- { \tag_get:n {struct_num} }{#3}
+ \exp_args:Ne
+ \tag_struct_begin:n{tag=TOCI,title={\text_purify:n {#2}}}
+ \tag_struct_gput:nnn { \tag_get:n {struct_num} }{ref_dest}{#4}
\seq_gpush:Ne \g__tag_toc_stack_seq {{TOCI}\use:c{toclevel@#1}}
\group_end:
}
}
}
-\cs_set_protected:Npn\@contentsline@cfgpoint@before#1#2#3#4
+\NewSocketPlug{tagsupport/toc/contentsline/before}{default}
{
- \__tag_toc_contentsline_begin:nnn {#1}{#2}{#4}
+ \__tag_toc_contentsline_begin:nnnn #1
}
+\AssignSocketPlug{tagsupport/toc/contentsline/before}{default}
\msg_new:nnn {tag}{toc-no-TOCI}{Missing~TOCI~structure~on~toc~stack}
-\cs_new_protected:Npn \__tag_toc_contentsline_end:n #1 %#1 level name
+\cs_new_protected:Npn \__tag_toc_contentsline_end:nnnn #1 #2 #3 #4
{
\int_compare:nNnF { \use:c{toclevel@#1} } > {\use:c{c@tocdepth}}
{
@@ -413,10 +407,11 @@
}
}
}
-\cs_set_protected:Npn \@contentsline@cfgpoint@after #1#2#3#4
- {
- \__tag_toc_contentsline_end:n {#1}
- }
+\NewSocketPlug{tagsupport/toc/contentsline/after}{default}
+ {
+ \__tag_toc_contentsline_end:nnnn #1
+ }
+\AssignSocketPlug{tagsupport/toc/contentsline/after}{default}
\AddToHook{contentsline/text/before}[tagpdf]{%
\tag_struct_begin:n{tag=Reference}%
\tag_mc_begin:n{tag=Reference}}
@@ -435,9 +430,12 @@
\tag_mc_end:
\tag_struct_end:
\tag_mc_begin:n{tag=Reference}}
-\def\@dottedtocline@cfgpoint@leaders#1{%
- \tag_mc_begin:n{artifact}\tag_stop:n{leaders}\nobreak#1\nobreak\tag_start:n{leaders}\tag_mc_end:}
-
+\NewSocketPlug{tagsupport/toc/leaders/before}{artifact}
+ {\tag_mc_begin:n{artifact}\nobreak}
+\NewSocketPlug{tagsupport/toc/leaders/after}{artifact}
+ {\nobreak\tag_mc_end:}
+\AssignSocketPlug{tagsupport/toc/leaders/before}{artifact}
+\AssignSocketPlug{tagsupport/toc/leaders/after}{artifact}
%% File: latex-lab-toc-hyperref-changes.dtx (C) Copyright 2022-2024 LaTeX Project
\def\ltlabtochyperdate{2023-07-20}
\def\ltlabtochyperversion{0.85a}
diff --git a/Master/texmf-dist/tex/latex/latex-lab/marginpar-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/marginpar-latex-lab-testphase.ltx
index a74a5f65ef3..0c55110f9d5 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/marginpar-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/marginpar-latex-lab-testphase.ltx
@@ -34,8 +34,8 @@
%%
%% File: latex-lab-marginpar.dtx
%%
-\def\ltlabmarginpardate{2024-02-12}
-\def\ltlabmarginparversion{0.85b}
+\def\ltlabmarginpardate{2024-09-18}
+\def\ltlabmarginparversion{0.85d}
\ProvidesFile{marginpar-latex-lab-testphase.ltx}
[\ltlabmarginpardate\space v\ltlabmarginparversion\space
diff --git a/Master/texmf-dist/tex/latex/latex-lab/minipage-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/minipage-latex-lab-testphase.ltx
index 0cf1da13360..b11a23987c1 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/minipage-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/minipage-latex-lab-testphase.ltx
@@ -34,8 +34,8 @@
%%
%% File: latex-lab-minipage.dtx
%%
-\def\ltlabminipagedate{2023-10-30}
-\def\ltlabminipageversion{0.81c}
+\def\ltlabminipagedate{2024-09-18}
+\def\ltlabminipageversion{0.81e}
\ProvidesFile{minipage-latex-lab-testphase.ltx}
[\ltlabminipagedate\space v\ltlabminipageversion
diff --git a/Master/texmf-dist/tex/latex/latex-lab/sec-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/sec-latex-lab-testphase.ltx
index 5cd6edae269..fa037aca3bf 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/sec-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/sec-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-sec.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabsecdate{2024-02-12}
-\def\ltlabsecversion{0.84c}
+\def\ltlabsecdate{2024-10-04}
+\def\ltlabsecversion{0.84f}
\ProvidesFile{sec-latex-lab-testphase.ltx}
[\ltlabsecdate\space v\ltlabsecversion\space latex-lab wrapper sec]
diff --git a/Master/texmf-dist/tex/latex/latex-lab/table-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/table-latex-lab-testphase.ltx
index b01da95717e..eee19904436 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/table-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/table-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtbldate{2024-05-25}
-\def\ltlabtblversion{0.85i}
+\def\ltlabtbldate{2024-09-18}
+\def\ltlabtblversion{0.85n}
\ProvidesFile{table-latex-lab-testphase.ltx}
[\ltlabtbldate\space v\ltlabtblversion\space latex-lab wrapper table]
\RequirePackage{latex-lab-testphase-table}
diff --git a/Master/texmf-dist/tex/latex/latex-lab/tabular-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/tabular-latex-lab-testphase.ltx
index 67a80c992ab..093b38ef924 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/tabular-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/tabular-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-table.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtbldate{2024-05-25}
-\def\ltlabtblversion{0.85i}
+\def\ltlabtbldate{2024-09-18}
+\def\ltlabtblversion{0.85n}
\ProvidesFile{tabular-latex-lab-testphase.ltx}
[\ltlabtbldate\space v\ltlabtblversion\space latex-lab wrapper tabular]
diff --git a/Master/texmf-dist/tex/latex/latex-lab/text-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/text-latex-lab-testphase.ltx
index 2615850378c..290c185f0d2 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/text-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/text-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-text.dtx (C) Copyright 2023-2024 LaTeX Project
-\def\ltlabtextdate{2023-07-20}
-\def\ltlabtextversion{0.85a}
+\def\ltlabtextdate{2024-09-18}
+\def\ltlabtextversion{0.85b}
\ProvidesFile{text-latex-lab-testphase.ltx}
[\ltlabtextdate\space v\ltlabtextversion\space
diff --git a/Master/texmf-dist/tex/latex/latex-lab/toc-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/toc-latex-lab-testphase.ltx
index 8b2c05d329c..8985e57bc7b 100644
--- a/Master/texmf-dist/tex/latex/latex-lab/toc-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex/latex-lab/toc-latex-lab-testphase.ltx
@@ -33,8 +33,8 @@
%%
%%
%% File: latex-lab-toc.dtx (C) Copyright 2022-2024 LaTeX Project
-\def\ltlabtocdate{2023-10-16}
-\def\ltlabtocversion{0.85b}
+\def\ltlabtocdate{2024-09-26}
+\def\ltlabtocversion{0.85e}
\ProvidesFile{toc-latex-lab-testphase.ltx}
[\ltlabtocdate\space v\ltlabtocversion latex-lab wrapper toc]
diff --git a/Master/texmf-dist/tex/latex/latex2pydata/latex2pydata.sty b/Master/texmf-dist/tex/latex/latex2pydata/latex2pydata.sty
index 0baabc93df6..c7ca945dc3b 100644
--- a/Master/texmf-dist/tex/latex/latex2pydata/latex2pydata.sty
+++ b/Master/texmf-dist/tex/latex/latex2pydata/latex2pydata.sty
@@ -20,7 +20,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{latex2pydata}
- [2024/05/16 v0.2.0 latex2pydata - write data to file in Python literal format]
+ [2024/11/17 v0.4.0 latex2pydata - write data to file in Python literal format]
\def\pydata@error#1{%
\PackageError{latex2pydata}{#1}{}%
\batchmode\read -1 to \pydata@exitnow}
@@ -155,8 +155,7 @@
\else
\pydata@error{Unknown file name "#1"}%
\fi}
-\newcounter{pydata@bufferindex}
-\setcounter{pydata@bufferindex}{0}
+\def\pydata@bufferindex{0}
\def\pydatasetbuffername#1{%
\ifbool{pydata@bufferhaskey}%
{\pydata@error{Cannot change buffers when a buffered key is waiting for a value}}%
@@ -164,13 +163,15 @@
\gdef\pydata@buffername{#1}%
\gdef\pydata@bufferlinename{#1line}%
\gdef\pydata@bufferlengthname{#1length}%
- \ifcsname c@\pydata@bufferlengthname\endcsname
+ \ifcsname\pydata@bufferlengthname\endcsname
\else
- \expandafter\newcounter\expandafter{\pydata@bufferlengthname}%
- \fi}
+ \expandafter\gdef\csname\pydata@bufferlengthname\endcsname{0}%
+ \fi
+ \expandafter\gdef\expandafter\pydata@bufferlengthmacro\expandafter{%
+ \csname\pydata@bufferlengthname\endcsname}}
\pydatasetbuffername{pydata@defaultbuffer}
\def\pydatawritebuffer{%
- \ifnum\expandafter\value\expandafter{\pydata@bufferlengthname}<1\relax
+ \ifnum\pydata@bufferlengthmacro<1\relax
\pydata@error{Cannot write empty buffer}%
\fi
\pydata@checkfilehandle
@@ -179,34 +180,33 @@
{\pydata@error{Cannot write buffer when file has a key waiting for a value}}{}%
\ifbool{pydata@bufferhaskey}%
{\pydata@error{Cannot write buffer when a buffered key is waiting for a value}}{}%
- \setcounter{pydata@bufferindex}{1}%
- \loop\unless\ifnum\value{pydata@bufferindex}>%
- \expandafter\value\expandafter{\pydata@bufferlengthname}\relax
+ \gdef\pydata@bufferindex{1}%
+ \loop\unless\ifnum\pydata@bufferindex>\pydata@bufferlengthmacro\relax
\immediate\write\pydata@filehandle{%
- \csname\pydata@bufferlinename\arabic{pydata@bufferindex}\endcsname}%
- \stepcounter{pydata@bufferindex}%
+ \csname\pydata@bufferlinename\pydata@bufferindex\endcsname}%
+ \xdef\pydata@bufferindex{\the\numexpr\pydata@bufferindex+1\relax}%
\repeat
- \setcounter{pydata@bufferindex}{0}}
+ \gdef\pydata@bufferindex{0}}
\def\pydataclearbuffername#1{%
\def\pydata@clearbuffername{#1}%
- \ifcsname c@#1length\endcsname
+ \ifcsname#1length\endcsname
\else
\pydata@error{Buffer #1 does not exist}%
\fi
- \setcounter{pydata@bufferindex}{1}%
- \loop\unless\ifnum\value{pydata@bufferindex}>\value{#1length}\relax
+ \gdef\pydata@bufferindex{1}%
+ \loop\unless\ifnum\pydata@bufferindex>\csname#1length\endcsname\relax
\expandafter\global\expandafter\let
- \csname#1line\arabic{pydata@bufferindex}\endcsname\pydata@undefined
- \stepcounter{pydata@bufferindex}%
+ \csname#1line\pydata@bufferindex\endcsname\pydata@undefined
+ \xdef\pydata@bufferindex{\the\numexpr\pydata@bufferindex+1\relax}%
\repeat
- \setcounter{#1length}{0}%
- \setcounter{pydata@bufferindex}{0}%
+ \expandafter\gdef\csname#1length\endcsname{0}%
+ \gdef\pydata@bufferindex{0}%
\ifx\pydata@clearbuffername\pydata@buffername
\boolfalse{pydata@bufferhaskey}%
\fi}
\def\pydatabuffermdfivesum{%
\pdf@mdfivesum{%
- \ifnum\expandafter\value\expandafter{\pydata@bufferlengthname}<1
+ \ifnum\pydata@bufferlengthmacro<1
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
@@ -214,12 +214,12 @@
{}{\pydatabuffermdfivesum@i{1}}}}
\def\pydatabuffermdfivesum@i#1{%
\csname\pydata@bufferlinename#1\endcsname^^J%
- \ifnum\expandafter\value\expandafter{\pydata@bufferlengthname}=#1
+ \ifnum\pydata@bufferlengthmacro=#1
\expandafter\@gobble
\else
\expandafter\@firstofone
\fi
- {\expandafter\pydatabuffermdfivesum@i\expandafter{\the\numexpr#1+1 }}}
+ {\expandafter\pydatabuffermdfivesum@i\expandafter{\the\numexpr#1+1\relax}}}
\begingroup
\catcode`\"=12\relax
\begingroup
@@ -372,10 +372,9 @@
\gdef\pydatabufferkey@i#1{%
\ifbool{pydata@bufferhaskey}%
{\pydata@error{Cannot buffer a key when waiting for a value}}{}%
- \expandafter\stepcounter\expandafter{\pydata@bufferlengthname}%
- \expandafter\xdef\csname
- \pydata@bufferlinename\expandafter\arabic\expandafter{\pydata@bufferlengthname}%
- \endcsname{%
+ \expandafter\xdef\pydata@bufferlengthmacro{%
+ \the\numexpr\pydata@bufferlengthmacro+1\relax}%
+ \expandafter\xdef\csname\pydata@bufferlinename\pydata@bufferlengthmacro\endcsname{%
\pydata@quotestr{#1}:%
}%
\booltrue{pydata@bufferhaskey}}
@@ -395,10 +394,9 @@
\gdef\pydatabuffervalue@i#1{%
\ifbool{pydata@bufferhaskey}%
{}{\pydata@error{Cannot buffer value when waiting for a key}}%
- \expandafter\stepcounter\expandafter{\pydata@bufferlengthname}%
- \expandafter\xdef\csname
- \pydata@bufferlinename\expandafter\arabic\expandafter{\pydata@bufferlengthname}%
- \endcsname{%
+ \expandafter\xdef\pydata@bufferlengthmacro{%
+ \the\numexpr\pydata@bufferlengthmacro+1\relax}%
+ \expandafter\xdef\csname\pydata@bufferlinename\pydata@bufferlengthmacro\endcsname{%
\pydata@quotestr{#1},%
}%
\boolfalse{pydata@bufferhaskey}}
@@ -430,10 +428,9 @@
\gdef\pydatabufferkeyvalue@ii#1#2{%
\ifbool{pydata@bufferhaskey}%
{\pydata@error{Cannot buffer a key when waiting for a value}}{}%
- \expandafter\stepcounter\expandafter{\pydata@bufferlengthname}%
- \expandafter\xdef\csname
- \pydata@bufferlinename\expandafter\arabic\expandafter{\pydata@bufferlengthname}%
- \endcsname{%
+ \expandafter\xdef\pydata@bufferlengthmacro{%
+ \the\numexpr\pydata@bufferlengthmacro+1\relax}%
+ \expandafter\xdef\csname\pydata@bufferlinename\pydata@bufferlengthmacro\endcsname{%
\pydata@quotestr{#1}: \pydata@quotestr{#2},%
}}
\gdef\pydatabufferkeyedefvalue{%
@@ -465,28 +462,25 @@
\gdef\pydatabuffermlvaluestart{%
\ifbool{pydata@bufferhaskey}%
{}{\pydata@error{Cannot buffer value when waiting for a key}}%
- \expandafter\stepcounter\expandafter{\pydata@bufferlengthname}%
- \expandafter\xdef\csname
- \pydata@bufferlinename\expandafter\arabic\expandafter{\pydata@bufferlengthname}%
- \endcsname{%
+ \expandafter\xdef\pydata@bufferlengthmacro{%
+ \the\numexpr\pydata@bufferlengthmacro+1\relax}%
+ \expandafter\xdef\csname\pydata@bufferlinename\pydata@bufferlengthmacro\endcsname{%
\pydata@mlstropen
}}
\gdef\pydatabuffermlvalueline#1{%
\ifbool{pydata@bufferhaskey}%
{}{\pydata@error{Cannot buffer value when waiting for a key}}%
- \expandafter\stepcounter\expandafter{\pydata@bufferlengthname}%
- \expandafter\xdef\csname
- \pydata@bufferlinename\expandafter\arabic\expandafter{\pydata@bufferlengthname}%
- \endcsname{%
+ \expandafter\xdef\pydata@bufferlengthmacro{%
+ \the\numexpr\pydata@bufferlengthmacro+1\relax}%
+ \expandafter\xdef\csname\pydata@bufferlinename\pydata@bufferlengthmacro\endcsname{%
\pydata@escstrtext{#1}%
}}
\gdef\pydatabuffermlvalueend{%
\ifbool{pydata@bufferhaskey}%
{}{\pydata@error{Cannot buffer value when waiting for a key}}%
- \expandafter\stepcounter\expandafter{\pydata@bufferlengthname}%
- \expandafter\xdef\csname
- \pydata@bufferlinename\expandafter\arabic\expandafter{\pydata@bufferlengthname}%
- \endcsname{%
+ \expandafter\xdef\pydata@bufferlengthmacro{%
+ \the\numexpr\pydata@bufferlengthmacro+1\relax}%
+ \expandafter\xdef\csname\pydata@bufferlinename\pydata@bufferlengthmacro\endcsname{%
\pydata@mlstrclose,%
}%
\boolfalse{pydata@bufferhaskey}}
diff --git a/Master/texmf-dist/tex/latex/latexbug/latexbug.sty b/Master/texmf-dist/tex/latex/latexbug/latexbug.sty
index 65f33718c1f..d42625c3bb7 100644
--- a/Master/texmf-dist/tex/latex/latexbug/latexbug.sty
+++ b/Master/texmf-dist/tex/latex/latexbug/latexbug.sty
@@ -30,7 +30,7 @@
%% version 2005/12/01 or later.
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{latexbug}[2024/06/17 v1.0o Bug-classification]
+\ProvidesPackage{latexbug}[2024/07/16 v1.0p Bug-classification]
\def\latexbug@empty{}
\def\latexbug@us{us}
\def\latexbug@usstar{us*}
@@ -69,6 +69,8 @@ cp858.def = us ,
cp865.def = us ,
decmulti.def = us ,
doc-v3beta.sty = us ,
+doc-2016-02-15.sty = us,
+doc-2021-06-01.sty = us,
doc.sty = us ,
docstrip.tex = us ,
exscale.sty = us ,
@@ -214,6 +216,7 @@ x2enc.dfu = us ,
afterpage.sty = us ,
array-2016-10-06.sty = us ,
array-2020-02-10.sty = us ,
+array-2023-11-01.sty = us ,
array.sty = us ,
bm.sty = us ,
calc.sty = us ,
@@ -231,12 +234,14 @@ layout.sty = us ,
longtable-2020-01-07.sty = us ,
longtable.sty = us ,
multicol-2017-04-11.sty = us ,
+multicol-2019-10-01.sty = us ,
multicol.sty = us ,
q.tex = us ,
r.tex = us ,
rawfonts.sty = us ,
s.tex = us ,
shellesc.sty = us ,
+showkeys-2014-10-28.sty = us ,
showkeys.sty = us ,
somedefs.sty = us ,
tabularx.sty = us ,
@@ -253,6 +258,7 @@ varioref.sty = us ,
verbatim.sty = us ,
verbtest.tex = us ,
x.tex = us ,
+xr-2023-07-04.sty = us ,
xr.sty = us ,
xspace.sty = us ,
babel-slovenian.tex = ignore ,
@@ -1284,6 +1290,7 @@ l3str-enc-iso88599.def = us* ,
xcoffins.sty = us* ,
xgalley.sty = us* ,
xparse.sty = us* ,
+xtemplate-2023-10-10.sty = us* ,
xtemplate.sty = us* ,
pdfmanagement-testphase.sty = us*
\Contact https://github.com/latex3/tagging-project/issues ,
diff --git a/Master/texmf-dist/tex/latex/lete-sans-math/lete-sans-math.sty b/Master/texmf-dist/tex/latex/lete-sans-math/lete-sans-math.sty
index c7ab26fb3f0..52c4f105596 100644
--- a/Master/texmf-dist/tex/latex/lete-sans-math/lete-sans-math.sty
+++ b/Master/texmf-dist/tex/latex/lete-sans-math/lete-sans-math.sty
@@ -1,6 +1,6 @@
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\def\fileversion{0.41}
-\def\filedate{2024-07-17}
+\def\fileversion{0.45}
+\def\filedate{2024-12-14}
\ProvidesPackage{lete-sans-math}[\filedate\space\fileversion]
% Ensure luatex or xetex engine
@@ -47,6 +47,10 @@
[\unexpanded\expandafter{\the\LeteMtoks}]%
}
\temp
+% For Maths operators in case Lato isn't the main text font.
+\setmathfontface\mathrm{Lato-Regular.ttf}
+\setmathfontface\mathit{Lato-Italic.ttf}
+\setmathfontface\mathbf{Lato-Bold.ttf}
%
\ifLete@tight
\thinmuskip=2mu
diff --git a/Master/texmf-dist/tex/latex/letterswitharrows/letterswitharrows.sty b/Master/texmf-dist/tex/latex/letterswitharrows/letterswitharrows.sty
index a22a7cabd4a..5b5332dca6f 100644
--- a/Master/texmf-dist/tex/latex/letterswitharrows/letterswitharrows.sty
+++ b/Master/texmf-dist/tex/latex/letterswitharrows/letterswitharrows.sty
@@ -7,7 +7,7 @@
%% letterswitharrows.dtx (with options: `package')
%%
%% File: letterswitharrows.dtx
-%% Copyright 2019-2020 J. Maximilian Teegen
+%% Copyright 2019-2024 J. Maximilian Teegen
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -41,7 +41,7 @@
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\ProvidesExplPackage {letterswitharrows} {2021/07/19} {} {Draw arrows over math letters.}
+\ProvidesExplPackage {letterswitharrows} {2024/10/31} {} {Draw arrows over math letters.}
\RequirePackage{xparse,l3keys2e,mathtools}
\msg_new:nnn {letterswitharrows} {pdf-only} {Only~pdf~output~is~supported.}
@@ -110,18 +110,50 @@
\cs_new_eq:NN \__jmt_lwa_arrow_draw:nnn \use_none:nnn
+\cs_new:Nn \__jmt_lwa_arrow_draw_double:nn
+{
+ \tex_special:D {pdf:~
+ q~
+ 1~J~1~j~
+ 1~0~0~\dim_to_decimal:n{#2pt/10}~0~0~cm~
+ \fp_use:c{g__jmt_lwa_line_width}~w~
+ q~
+ \dim_to_decimal:n{#2pt/10}~0~0~1~0~0~cm~
+ 1~0~0~1~-1~0~cm~
+ 0~1~m~
+ .25~0~1~0~1~0~c~
+ 1~0~.25~0~0~-1~c~
+ S~
+ Q~
+ 0~0~m~
+ -1~0~0~1~0~0~cm~
+ \dim_to_decimal:n{#1}~0~l~S~
+ \dim_to_decimal:n{#2pt/10}~0~0~1~\dim_to_decimal:n{#1}~0~cm~
+ 1~0~0~1~-1~0~cm~
+ 0~1~m~
+ .25~0~1~0~1~0~c~
+ 1~0~.25~0~0~-1~c~
+ S~
+ Q
+ }
+}
+
\cs_new:Nn \__jmt_lwa_arrow_right:nn {
\skip_horizontal:n {#1}
- % \rule[\dimexpr -#2pt/6\relax]{#1}{\dimexpr #2pt/3\relax}
\__jmt_lwa_arrow_draw:nnn {#1} {#2} {}
}
\cs_new:Nn \__jmt_lwa_arrow_left:nn {
\__jmt_lwa_arrow_draw:nnn {#1} {#2} {-}
\skip_horizontal:n {#1}
- % \rule[\dimexpr -#2pt/6\relax]{#1}{\dimexpr #2pt/3\relax}
}
+\cs_new:Nn \__jmt_lwa_arrow_double:nn {
+ \skip_horizontal:n {#1}
+ \__jmt_lwa_arrow_draw_double:nn {#1} {#2}
+}
+
+
\cs_new:Npn \__jmt_lwa_arrow_overset_style:Nnncnnn #1#2#3#4#5#6#7 {
\hbox_set:Nn \l_tmpa_box {$\m@th#1#3$}
\dim_set:Nn \l_tmpa_dim {#2 pt/10}
@@ -171,27 +203,27 @@
}
\exp_args:NNx \NewDocumentCommand \__jmt_lwa_arrow_overset_aux:w
- {s O{0mu} O{1} O{0ex} m t' e{\char_generate:nn {95}{8}} t'} {
+ {s s O{0mu} O{1} O{0ex} m t' e{\char_generate:nn {95}{8}} t'} {
\__jmt_lwa_arrow_overset:nnnnn
{
- #5
- \exp_args:Nf\bool_if:nT{\__jmt_lwa_bool_convert:n{#6} || \__jmt_lwa_bool_convert:n{#8}} {
+ #6
+ \exp_args:Nf\bool_if:nT{\__jmt_lwa_bool_convert:n{#7} || \__jmt_lwa_bool_convert:n{#9}} {
\c_math_superscript_token {
- \scriptscriptstyle\IfBooleanT{#6}{\prime}\IfBooleanT{#8}{\prime}
+ \scriptscriptstyle\IfBooleanT{#7}{\prime}\IfBooleanT{#9}{\prime}
}
} % TODO: Better positioning etc?
- \exp_args:Nf\IfValueT{\use:n#7} {
+ \exp_args:Nf\IfValueT{\use:n#8} {
\c_math_subscript_token {
- \mathrlap{#7}
+ \mathrlap{#8}
}
}
}
- {\IfBooleanTF{#1}{left}{right}}
- {#2} {#3} {#4}
+ {\IfBooleanTF{#1}{\IfBooleanTF{#2}{double}{left}}{right}}
+ {#3} {#4} {#5}
- \exp_args:Nf\IfValueTF{\use:n#7}{
+ \exp_args:Nf\IfValueTF{\use:n#8}{
% TODO: Better way to do this? This is all kinds of wrong.
- \hphantom{\c_math_subscript_token{#7}}
+ \hphantom{\c_math_subscript_token{#8}}
} {}
\c_group_end_token
}
@@ -246,6 +278,9 @@
\cs_new:cpx {vleft} {
\exp_not:N\__jmt_lwa_arrow_overset:w*{v}
}
+ \cs_new:cpx {vvv} {
+ \exp_not:N\__jmt_lwa_arrow_overset:w**{v}
+ }
} {
\cs_new:cpx {v\int_to_alph:n{#1}} {
\exp_not:N\__jmt_lwa_arrow_overset:w{\int_to_alph:n{#1}}
@@ -253,6 +288,9 @@
\cs_new:cpx {\int_to_alph:n{#1}v} {
\exp_not:N\__jmt_lwa_arrow_overset:w*{\int_to_alph:n{#1}}
}
+ \cs_new:cpx {v\int_to_alph:n{#1}v} {
+ \exp_not:N\__jmt_lwa_arrow_overset:w**{\int_to_alph:n{#1}}
+ }
}
}
} {}
@@ -264,6 +302,9 @@
\cs_new:cpx {\int_to_Alph:n{#1}v} {
\exp_not:N\__jmt_lwa_arrow_overset:w*{\int_to_Alph:n{#1}}
}
+ \cs_new:cpx {v\int_to_Alph:n{#1}v} {
+ \exp_not:N\__jmt_lwa_arrow_overset:w**{\int_to_Alph:n{#1}}
+ }
}
} {}
\prop_if_in:NnTF \g__jmt_lwa_selected_presets_prop {cAcBcC} {
@@ -274,6 +315,9 @@
\cs_new:cpx {c\int_to_Alph:n{#1}v} {
\exp_not:N\__jmt_lwa_arrow_overset:w*{\exp_not:N\mathcal{\int_to_Alph:n{#1}}}
}
+ \cs_new:cpx {vc\int_to_Alph:n{#1}v} {
+ \exp_not:N\__jmt_lwa_arrow_overset:w**{\exp_not:N\mathcal{\int_to_Alph:n{#1}}}
+ }
}
} {}
\prop_if_in:NnTF \g__jmt_lwa_selected_presets_prop {vec-cev} {
@@ -283,6 +327,9 @@
\DeclareDocumentCommand \cev {m} {
\__jmt_lwa_arrow_overset:w* {#1} \scan_stop:
}
+ \DeclareDocumentCommand \vecev {m} {
+ \__jmt_lwa_arrow_overset:w** {#1} \scan_stop:
+ }
} {}
\bool_if:NTF \g__jmt_lwa_tweak_shortcuts_bool {
\prop_if_in:NnTF \g__jmt_lwa_selected_presets_prop {ABC} {
@@ -293,10 +340,16 @@
\cs_set:cpx {\int_to_Alph:n{#1}v} {
\exp_not:N\__jmt_lwa_arrow_overset:w*[2.5mu][7/10]{\int_to_Alph:n{#1}}
}
+ \cs_set:cpx {v\int_to_Alph:n{#1}v} {
+ \exp_not:N\__jmt_lwa_arrow_overset:w**[1.5mu][9/10]{\int_to_Alph:n{#1}}
+ }
}
\cs_set:cpn {vS} {
\__jmt_lwa_arrow_overset:w[3mu][7/10]{S}
}
+ \cs_set:cpn {vSv} {
+ \__jmt_lwa_arrow_overset:w**[2mu][9/10]{S}
+ }
\cs_set:cpn {vT} {
\__jmt_lwa_arrow_overset:w[2mu][8/10]{T}
}
@@ -309,6 +362,9 @@
\cs_set:cpn {Uv} {
\__jmt_lwa_arrow_overset:w*[2mu][7/10]{U}
}
+ \cs_set:cpn {vUv} {
+ \__jmt_lwa_arrow_overset:w**[1.5mu][8/10]{U}
+ }
\cs_set:cpn {vV} {
\__jmt_lwa_arrow_overset:w[2.5mu][7/10]{V}
}
@@ -340,7 +396,10 @@
\__jmt_lwa_arrow_overset:w{\ell}
}
\cs_new:cpn {ellv} {
- \__jmt_lwa_arrow_overset:w{\ell}
+ \__jmt_lwa_arrow_overset:w*{\ell}
+ }
+ \cs_new:cpn {vellv} {
+ \__jmt_lwa_arrow_overset:w**{\ell}
}
} {}
} {}
diff --git a/Master/texmf-dist/tex/latex/lettrine/lettrine.sty b/Master/texmf-dist/tex/latex/lettrine/lettrine.sty
index 21aa3290e51..49c3d13405d 100644
--- a/Master/texmf-dist/tex/latex/lettrine/lettrine.sty
+++ b/Master/texmf-dist/tex/latex/lettrine/lettrine.sty
@@ -11,7 +11,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesFile{lettrine.sty}
- [2024-06-26 v2.61 (Daniel Flipo)]
+ [2024-11-14 v2.70 (Daniel Flipo)]
\DeclareRelease{v1.6}{1999-03-03}{lettrine-2006-03-17.sty}
\DeclareRelease{v1.9}{2012-07-20}{lettrine-2015-08-31.sty}
@@ -111,6 +111,30 @@
refstring.default:n = \L@initial ,
refstring.store = \L@refstring
}
+\AtBeginDocument{%
+ \if\DefaultOptionsFile\relax
+ \else
+ \InputIfFileExists{\DefaultOptionsFile}%
+ {}%
+ {\PackageWarning{lettrine.sty}%
+ {File \DefaultOptionsFile\space not found}%
+ }%
+ \fi}
+\newtoks\Lettrine@tweaks
+\newcommand*{\LettrineOptionsFor}[2]{%
+ \Lettrine@tweaks=\expandafter{\the\Lettrine@tweaks
+ \@lettrine@optionsfor{#1}{#2,}}}
+\newcommand*{\@lettrine@optionsfor}[2]{%
+ \edef\L@tmpa{#1}%
+ \begingroup
+ \def\color##1##{\L@color{##1}}%
+ \let\L@color\@gobbletwo
+ \def\textcolor##1##{\L@textcolor{##1}}%
+ \def\L@textcolor##1##2##3{##3}%
+ \xdef\L@tmpb{\L@initial}%
+ \endgroup
+ \ifx\L@tmpa\L@tmpb \SetKeys[LettrineLocal]{#2}\fi
+ }
\newcommand*{\LettrineTextFont}{\scshape}
\newcommand*{\LettrineSecondString}{x}
\newcommand*{\LettrineFontHook}{}
@@ -169,17 +193,6 @@
\sbox{\L@lbox}{\LettrineFont \L@initial}%
\fi
}
-\newcommand*{\LettrineOptionsFor}[2]{%
- \edef\L@tmpa{#1}%
- \begingroup
- \def\color##1##{\L@color{##1}}%
- \let\L@color\@gobbletwo
- \def\textcolor##1##{\L@textcolor{##1}}%
- \def\L@textcolor##1##2##3{##3}%
- \xdef\L@tmpb{\L@initial}%
- \endgroup
- \ifx\L@tmpa\L@tmpb \SetKeys[LettrineLocal]{#2}\fi
- }
\def\lettrine{\@ifnextchar[\@lettrine{\@lettrine[]}}
\def\@lettrine[#1]#2#3{%
\def\L@initial{#2}\def\L@refstring{}\def\L@viewport{}%
@@ -208,17 +221,10 @@
\sbox{\L@tbox}{{\LettrineTextFont{#3}}}%
\fi
\fi
- \if\DefaultOptionsFile\relax
- \else
- \setupL@lbox
- \setlength{\LettrineWidth}{\wd\L@lbox}%
- \InputIfFileExists{\DefaultOptionsFile}%
- {}%
- {\PackageWarning{lettrine.sty}%
- {File \DefaultOptionsFile\space not found}%
- }%
- \SetKeys[LettrineLocal]{#1}%
- \fi
+ \setupL@lbox
+ \setlength{\LettrineWidth}{\wd\L@lbox}%
+ \the\Lettrine@tweaks
+ \SetKeys[LettrineLocal]{#1}%
\setupL@lbox
\setlength{\LettrineWidth}{\wd\L@lbox}%
\setlength{\LettrineHeight}{\ht\L@lbox}%
diff --git a/Master/texmf-dist/tex/latex/libertine/LY1LinuxBiolinumO-LF.fd b/Master/texmf-dist/tex/latex/libertine/LY1LinuxBiolinumO-LF.fd
deleted file mode 100644
index ae6963e7963..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/LY1LinuxBiolinumO-LF.fd
+++ /dev/null
@@ -1,72 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{LY1LinuxBiolinumO-LF.fd}
- [2012/11/01 (autoinst) Font definitions for LY1/LinuxBiolinumO-LF.]
-
-\expandafter\ifx\csname LinuxBiolinumO@scale\endcsname\relax
- \let\LinuxBiolinumO@@scale\@empty
-\else
- \edef\LinuxBiolinumO@@scale{s*[\csname LinuxBiolinumO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LY1}{LinuxBiolinumO-LF}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{b}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-lf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{b}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-lf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{b}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-lf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{b}{sl}{
- <-> ssub * LinuxBiolinumO-LF/b/it
-}{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{b}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-lf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{b}{scsl}{
- <-> ssub * LinuxBiolinumO-LF/b/scit
-}{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{m}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-lf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{m}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-lf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{m}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-lf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{m}{sl}{
- <-> ssub * LinuxBiolinumO-LF/m/it
-}{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{m}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-lf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{m}{scsl}{
- <-> ssub * LinuxBiolinumO-LF/m/scit
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{bx}{sc}{ <-> ssub * LinuxBiolinumO-LF/b/sc }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{bx}{n}{ <-> ssub * LinuxBiolinumO-LF/b/n }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{bx}{it}{ <-> ssub * LinuxBiolinumO-LF/b/it }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{bx}{sl}{ <-> ssub * LinuxBiolinumO-LF/b/it }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{bx}{scit}{ <-> ssub * LinuxBiolinumO-LF/b/scit }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{bx}{scsl}{ <-> ssub * LinuxBiolinumO-LF/b/scit }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{sb}{sc}{ <-> ssub * LinuxBiolinumO-LF/b/sc }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{sb}{n}{ <-> ssub * LinuxBiolinumO-LF/b/n }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{sb}{it}{ <-> ssub * LinuxBiolinumO-LF/b/it }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{sb}{sl}{ <-> ssub * LinuxBiolinumO-LF/b/it }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{sb}{scit}{ <-> ssub * LinuxBiolinumO-LF/b/scit }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-LF}{sb}{scsl}{ <-> ssub * LinuxBiolinumO-LF/b/scit }{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/LY1LinuxBiolinumO-OsF.fd b/Master/texmf-dist/tex/latex/libertine/LY1LinuxBiolinumO-OsF.fd
deleted file mode 100644
index 45ad0bbbe46..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/LY1LinuxBiolinumO-OsF.fd
+++ /dev/null
@@ -1,72 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{LY1LinuxBiolinumO-OsF.fd}
- [2012/11/01 (autoinst) Font definitions for LY1/LinuxBiolinumO-OsF.]
-
-\expandafter\ifx\csname LinuxBiolinumO@scale\endcsname\relax
- \let\LinuxBiolinumO@@scale\@empty
-\else
- \edef\LinuxBiolinumO@@scale{s*[\csname LinuxBiolinumO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LY1}{LinuxBiolinumO-OsF}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{b}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-osf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{b}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-osf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{b}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-osf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{b}{sl}{
- <-> ssub * LinuxBiolinumO-OsF/b/it
-}{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{b}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-osf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{b}{scsl}{
- <-> ssub * LinuxBiolinumO-OsF/b/scit
-}{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{m}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-osf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{m}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-osf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{m}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-osf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{m}{sl}{
- <-> ssub * LinuxBiolinumO-OsF/m/it
-}{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{m}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-osf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{m}{scsl}{
- <-> ssub * LinuxBiolinumO-OsF/m/scit
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{bx}{sc}{ <-> ssub * LinuxBiolinumO-OsF/b/sc }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{bx}{n}{ <-> ssub * LinuxBiolinumO-OsF/b/n }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{bx}{it}{ <-> ssub * LinuxBiolinumO-OsF/b/it }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{bx}{sl}{ <-> ssub * LinuxBiolinumO-OsF/b/it }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{bx}{scit}{ <-> ssub * LinuxBiolinumO-OsF/b/scit }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{bx}{scsl}{ <-> ssub * LinuxBiolinumO-OsF/b/scit }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{sb}{sc}{ <-> ssub * LinuxBiolinumO-OsF/b/sc }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{sb}{n}{ <-> ssub * LinuxBiolinumO-OsF/b/n }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{sb}{it}{ <-> ssub * LinuxBiolinumO-OsF/b/it }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{sb}{sl}{ <-> ssub * LinuxBiolinumO-OsF/b/it }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{sb}{scit}{ <-> ssub * LinuxBiolinumO-OsF/b/scit }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-OsF}{sb}{scsl}{ <-> ssub * LinuxBiolinumO-OsF/b/scit }{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/LY1LinuxBiolinumO-TLF.fd b/Master/texmf-dist/tex/latex/libertine/LY1LinuxBiolinumO-TLF.fd
deleted file mode 100644
index 5d0bcc593ee..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/LY1LinuxBiolinumO-TLF.fd
+++ /dev/null
@@ -1,72 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{LY1LinuxBiolinumO-TLF.fd}
- [2012/11/01 (autoinst) Font definitions for LY1/LinuxBiolinumO-TLF.]
-
-\expandafter\ifx\csname LinuxBiolinumO@scale\endcsname\relax
- \let\LinuxBiolinumO@@scale\@empty
-\else
- \edef\LinuxBiolinumO@@scale{s*[\csname LinuxBiolinumO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LY1}{LinuxBiolinumO-TLF}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{b}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-tlf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{b}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-tlf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{b}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-tlf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{b}{sl}{
- <-> ssub * LinuxBiolinumO-TLF/b/it
-}{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{b}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-tlf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{b}{scsl}{
- <-> ssub * LinuxBiolinumO-TLF/b/scit
-}{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{m}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-tlf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{m}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-tlf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{m}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-tlf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{m}{sl}{
- <-> ssub * LinuxBiolinumO-TLF/m/it
-}{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{m}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-tlf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{m}{scsl}{
- <-> ssub * LinuxBiolinumO-TLF/m/scit
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{bx}{sc}{ <-> ssub * LinuxBiolinumO-TLF/b/sc }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{bx}{n}{ <-> ssub * LinuxBiolinumO-TLF/b/n }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{bx}{it}{ <-> ssub * LinuxBiolinumO-TLF/b/it }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{bx}{sl}{ <-> ssub * LinuxBiolinumO-TLF/b/it }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{bx}{scit}{ <-> ssub * LinuxBiolinumO-TLF/b/scit }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{bx}{scsl}{ <-> ssub * LinuxBiolinumO-TLF/b/scit }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{sb}{sc}{ <-> ssub * LinuxBiolinumO-TLF/b/sc }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{sb}{n}{ <-> ssub * LinuxBiolinumO-TLF/b/n }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{sb}{it}{ <-> ssub * LinuxBiolinumO-TLF/b/it }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{sb}{sl}{ <-> ssub * LinuxBiolinumO-TLF/b/it }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{sb}{scit}{ <-> ssub * LinuxBiolinumO-TLF/b/scit }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TLF}{sb}{scsl}{ <-> ssub * LinuxBiolinumO-TLF/b/scit }{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/LY1LinuxBiolinumO-TOsF.fd b/Master/texmf-dist/tex/latex/libertine/LY1LinuxBiolinumO-TOsF.fd
deleted file mode 100644
index 4d1c7f698f6..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/LY1LinuxBiolinumO-TOsF.fd
+++ /dev/null
@@ -1,71 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{LY1LinuxBiolinumO-TOsF.fd}
- [2012/11/01 (autoinst) Font definitions for LY1/LinuxBiolinumO-TOsF.]
-
-\expandafter\ifx\csname LinuxBiolinumO@scale\endcsname\relax
- \let\LinuxBiolinumO@@scale\@empty
-\else
- \edef\LinuxBiolinumO@@scale{s*[\csname LinuxBiolinumO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LY1}{LinuxBiolinumO-TOsF}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{b}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-tosf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{b}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-tosf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{b}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-tosf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{b}{sl}{
- <-> ssub * LinuxBiolinumO-TOsF/b/it
-}{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{b}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-tosf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{b}{scsl}{
- <-> ssub * LinuxBiolinumO-TOsF/b/scit
-}{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{m}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-tosf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{m}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-tosf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{m}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-tosf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{m}{sl}{
- <-> ssub * LinuxBiolinumO-TOsF/m/it
-}{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{m}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-tosf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{m}{scsl}{
- <-> ssub * LinuxBiolinumO-TOsF/m/scit
-}{}
-
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{bx}{sc}{ <-> ssub * LinuxBiolinumO-TOsF/b/sc }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{bx}{n}{ <-> ssub * LinuxBiolinumO-TOsF/b/n }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{bx}{it}{ <-> ssub * LinuxBiolinumO-TOsF/b/it }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{bx}{sl}{ <-> ssub * LinuxBiolinumO-TOsF/b/it }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{bx}{scit}{ <-> ssub * LinuxBiolinumO-TOsF/b/scit }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{bx}{scsl}{ <-> ssub * LinuxBiolinumO-TOsF/b/scit }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{sb}{sc}{ <-> ssub * LinuxBiolinumO-TOsF/b/sc }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{sb}{n}{ <-> ssub * LinuxBiolinumO-TOsF/b/n }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{sb}{it}{ <-> ssub * LinuxBiolinumO-TOsF/b/it }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{sb}{sl}{ <-> ssub * LinuxBiolinumO-TOsF/b/it }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{sb}{scit}{ <-> ssub * LinuxBiolinumO-TOsF/b/scit }{}
-\DeclareFontShape{LY1}{LinuxBiolinumO-TOsF}{sb}{scsl}{ <-> ssub * LinuxBiolinumO-TOsF/b/scit }{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/LY1LinuxLibertineO-LF.fd b/Master/texmf-dist/tex/latex/libertine/LY1LinuxLibertineO-LF.fd
deleted file mode 100644
index df3e41ce9f0..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/LY1LinuxLibertineO-LF.fd
+++ /dev/null
@@ -1,80 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{LY1LinuxLibertineO-LF.fd}
- [2012/11/01 (autoinst) Font definitions for LY1/LinuxLibertineO-LF.]
-
-\expandafter\ifx\csname LinuxLibertineO@scale\endcsname\relax
- \let\LinuxLibertineO@@scale\@empty
-\else
- \edef\LinuxLibertineO@@scale{s*[\csname LinuxLibertineO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LY1}{LinuxLibertineO-LF}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{b}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-lf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{b}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-lf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{b}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-lf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{b}{sl}{
- <-> ssub * LinuxLibertineO-LF/b/it
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{b}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-lf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{b}{scsl}{
- <-> ssub * LinuxLibertineO-LF/b/scit
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{sb}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-lf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{sb}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-lf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{sb}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-lf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{sb}{sl}{
- <-> ssub * LinuxLibertineO-LF/sb/it
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{sb}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-lf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{sb}{scsl}{
- <-> ssub * LinuxLibertineO-LF/sb/scit
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{m}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineO-lf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{m}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineO-lf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{m}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-lf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{m}{sl}{
- <-> ssub * LinuxLibertineO-LF/m/it
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{m}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-lf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-LF}{m}{scsl}{
- <-> ssub * LinuxLibertineO-LF/m/scit
-}{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/LY1LinuxLibertineO-OsF.fd b/Master/texmf-dist/tex/latex/libertine/LY1LinuxLibertineO-OsF.fd
deleted file mode 100644
index 7f02a7252e5..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/LY1LinuxLibertineO-OsF.fd
+++ /dev/null
@@ -1,80 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{LY1LinuxLibertineO-OsF.fd}
- [2012/11/01 (autoinst) Font definitions for LY1/LinuxLibertineO-OsF.]
-
-\expandafter\ifx\csname LinuxLibertineO@scale\endcsname\relax
- \let\LinuxLibertineO@@scale\@empty
-\else
- \edef\LinuxLibertineO@@scale{s*[\csname LinuxLibertineO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LY1}{LinuxLibertineO-OsF}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{b}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-osf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{b}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-osf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{b}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-osf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{b}{sl}{
- <-> ssub * LinuxLibertineO-OsF/b/it
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{b}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-osf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{b}{scsl}{
- <-> ssub * LinuxLibertineO-OsF/b/scit
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{sb}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-osf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{sb}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-osf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{sb}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-osf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{sb}{sl}{
- <-> ssub * LinuxLibertineO-OsF/sb/it
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{sb}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-osf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{sb}{scsl}{
- <-> ssub * LinuxLibertineO-OsF/sb/scit
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{m}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineO-osf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{m}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineO-osf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{m}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-osf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{m}{sl}{
- <-> ssub * LinuxLibertineO-OsF/m/it
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{m}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-osf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-OsF}{m}{scsl}{
- <-> ssub * LinuxLibertineO-OsF/m/scit
-}{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/LY1LinuxLibertineO-TLF.fd b/Master/texmf-dist/tex/latex/libertine/LY1LinuxLibertineO-TLF.fd
deleted file mode 100644
index 51d340d1ddd..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/LY1LinuxLibertineO-TLF.fd
+++ /dev/null
@@ -1,80 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{LY1LinuxLibertineO-TLF.fd}
- [2012/11/01 (autoinst) Font definitions for LY1/LinuxLibertineO-TLF.]
-
-\expandafter\ifx\csname LinuxLibertineO@scale\endcsname\relax
- \let\LinuxLibertineO@@scale\@empty
-\else
- \edef\LinuxLibertineO@@scale{s*[\csname LinuxLibertineO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LY1}{LinuxLibertineO-TLF}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{b}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-tlf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{b}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-tlf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{b}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-tlf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{b}{sl}{
- <-> ssub * LinuxLibertineO-TLF/b/it
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{b}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-tlf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{b}{scsl}{
- <-> ssub * LinuxLibertineO-TLF/b/scit
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{sb}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-tlf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{sb}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-tlf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{sb}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-tlf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{sb}{sl}{
- <-> ssub * LinuxLibertineO-TLF/sb/it
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{sb}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-tlf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{sb}{scsl}{
- <-> ssub * LinuxLibertineO-TLF/sb/scit
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{m}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineO-tlf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{m}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineO-tlf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{m}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-tlf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{m}{sl}{
- <-> ssub * LinuxLibertineO-TLF/m/it
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{m}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-tlf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TLF}{m}{scsl}{
- <-> ssub * LinuxLibertineO-TLF/m/scit
-}{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/LY1LinuxLibertineO-TOsF.fd b/Master/texmf-dist/tex/latex/libertine/LY1LinuxLibertineO-TOsF.fd
deleted file mode 100644
index db81fa8e796..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/LY1LinuxLibertineO-TOsF.fd
+++ /dev/null
@@ -1,80 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{LY1LinuxLibertineO-TOsF.fd}
- [2012/11/01 (autoinst) Font definitions for LY1/LinuxLibertineO-TOsF.]
-
-\expandafter\ifx\csname LinuxLibertineO@scale\endcsname\relax
- \let\LinuxLibertineO@@scale\@empty
-\else
- \edef\LinuxLibertineO@@scale{s*[\csname LinuxLibertineO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LY1}{LinuxLibertineO-TOsF}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{b}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-tosf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{b}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-tosf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{b}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-tosf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{b}{sl}{
- <-> ssub * LinuxLibertineO-TOsF/b/it
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{b}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-tosf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{b}{scsl}{
- <-> ssub * LinuxLibertineO-TOsF/b/scit
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{sb}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-tosf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{sb}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-tosf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{sb}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-tosf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{sb}{sl}{
- <-> ssub * LinuxLibertineO-TOsF/sb/it
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{sb}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-tosf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{sb}{scsl}{
- <-> ssub * LinuxLibertineO-TOsF/sb/scit
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{m}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineO-tosf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{m}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineO-tosf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{m}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-tosf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{m}{sl}{
- <-> ssub * LinuxLibertineO-TOsF/m/it
-}{}
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{m}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-tosf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LinuxLibertineO-TOsF}{m}{scsl}{
- <-> ssub * LinuxLibertineO-TOsF/m/scit
-}{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/OT1LinuxBiolinumO-LF.fd b/Master/texmf-dist/tex/latex/libertine/OT1LinuxBiolinumO-LF.fd
deleted file mode 100644
index 74c509900f7..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/OT1LinuxBiolinumO-LF.fd
+++ /dev/null
@@ -1,71 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{OT1LinuxBiolinumO-LF.fd}
- [2012/11/01 (autoinst) Font definitions for OT1/LinuxBiolinumO-LF.]
-
-\expandafter\ifx\csname LinuxBiolinumO@scale\endcsname\relax
- \let\LinuxBiolinumO@@scale\@empty
-\else
- \edef\LinuxBiolinumO@@scale{s*[\csname LinuxBiolinumO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{OT1}{LinuxBiolinumO-LF}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{b}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{b}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-lf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{b}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-lf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{b}{sl}{
- <-> ssub * LinuxBiolinumO-LF/b/it
-}{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{b}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{b}{scsl}{
- <-> ssub * LinuxBiolinumO-LF/b/scit
-}{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{m}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{m}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-lf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{m}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-lf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{m}{sl}{
- <-> ssub * LinuxBiolinumO-LF/m/it
-}{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{m}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{m}{scsl}{
- <-> ssub * LinuxBiolinumO-LF/m/scit
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{bx}{sc}{ <-> ssub * LinuxBiolinumO-LF/b/sc }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{bx}{n}{ <-> ssub * LinuxBiolinumO-LF/b/n }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{bx}{it}{ <-> ssub * LinuxBiolinumO-LF/b/it }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{bx}{sl}{ <-> ssub * LinuxBiolinumO-LF/b/it }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{bx}{scit}{ <-> ssub * LinuxBiolinumO-LF/b/scit }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{bx}{scsl}{ <-> ssub * LinuxBiolinumO-LF/b/scit }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{sb}{sc}{ <-> ssub * LinuxBiolinumO-LF/b/sc }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{sb}{n}{ <-> ssub * LinuxBiolinumO-LF/b/n }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{sb}{it}{ <-> ssub * LinuxBiolinumO-LF/b/it }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{sb}{sl}{ <-> ssub * LinuxBiolinumO-LF/b/it }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{sb}{scit}{ <-> ssub * LinuxBiolinumO-LF/b/scit }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-LF}{sb}{scsl}{ <-> ssub * LinuxBiolinumO-LF/b/scit }{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/OT1LinuxBiolinumO-OsF.fd b/Master/texmf-dist/tex/latex/libertine/OT1LinuxBiolinumO-OsF.fd
deleted file mode 100644
index 8e3d525ff2a..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/OT1LinuxBiolinumO-OsF.fd
+++ /dev/null
@@ -1,72 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{OT1LinuxBiolinumO-OsF.fd}
- [2012/11/01 (autoinst) Font definitions for OT1/LinuxBiolinumO-OsF.]
-
-\expandafter\ifx\csname LinuxBiolinumO@scale\endcsname\relax
- \let\LinuxBiolinumO@@scale\@empty
-\else
- \edef\LinuxBiolinumO@@scale{s*[\csname LinuxBiolinumO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{OT1}{LinuxBiolinumO-OsF}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{b}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-osf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{b}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-osf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{b}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-osf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{b}{sl}{
- <-> ssub * LinuxBiolinumO-OsF/b/it
-}{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{b}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-osf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{b}{scsl}{
- <-> ssub * LinuxBiolinumO-OsF/b/scit
-}{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{m}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-osf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{m}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-osf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{m}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-osf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{m}{sl}{
- <-> ssub * LinuxBiolinumO-OsF/m/it
-}{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{m}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-osf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{m}{scsl}{
- <-> ssub * LinuxBiolinumO-OsF/m/scit
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{bx}{sc}{ <-> ssub * LinuxBiolinumO-OsF/b/sc }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{bx}{n}{ <-> ssub * LinuxBiolinumO-OsF/b/n }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{bx}{it}{ <-> ssub * LinuxBiolinumO-OsF/b/it }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{bx}{sl}{ <-> ssub * LinuxBiolinumO-OsF/b/it }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{bx}{scit}{ <-> ssub * LinuxBiolinumO-OsF/b/scit }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{bx}{scsl}{ <-> ssub * LinuxBiolinumO-OsF/b/scit }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{sb}{sc}{ <-> ssub * LinuxBiolinumO-OsF/b/sc }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{sb}{n}{ <-> ssub * LinuxBiolinumO-OsF/b/n }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{sb}{it}{ <-> ssub * LinuxBiolinumO-OsF/b/it }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{sb}{sl}{ <-> ssub * LinuxBiolinumO-OsF/b/it }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{sb}{scit}{ <-> ssub * LinuxBiolinumO-OsF/b/scit }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-OsF}{sb}{scsl}{ <-> ssub * LinuxBiolinumO-OsF/b/scit }{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/OT1LinuxBiolinumO-TLF.fd b/Master/texmf-dist/tex/latex/libertine/OT1LinuxBiolinumO-TLF.fd
deleted file mode 100644
index 7c4dae0bbeb..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/OT1LinuxBiolinumO-TLF.fd
+++ /dev/null
@@ -1,71 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{OT1LinuxBiolinumO-TLF.fd}
- [2012/11/01 (autoinst) Font definitions for OT1/LinuxBiolinumO-TLF.]
-
-\expandafter\ifx\csname LinuxBiolinumO@scale\endcsname\relax
- \let\LinuxBiolinumO@@scale\@empty
-\else
- \edef\LinuxBiolinumO@@scale{s*[\csname LinuxBiolinumO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{OT1}{LinuxBiolinumO-TLF}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{b}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-tlf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{b}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{b}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{b}{sl}{
- <-> ssub * LinuxBiolinumO-TLF/b/it
-}{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{b}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-tlf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{b}{scsl}{
- <-> ssub * LinuxBiolinumO-TLF/b/scit
-}{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{m}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-tlf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{m}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{m}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{m}{sl}{
- <-> ssub * LinuxBiolinumO-TLF/m/it
-}{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{m}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-tlf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{m}{scsl}{
- <-> ssub * LinuxBiolinumO-TLF/m/scit
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{bx}{sc}{ <-> ssub * LinuxBiolinumO-TLF/b/sc }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{bx}{n}{ <-> ssub * LinuxBiolinumO-TLF/b/n }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{bx}{it}{ <-> ssub * LinuxBiolinumO-TLF/b/it }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{bx}{sl}{ <-> ssub * LinuxBiolinumO-TLF/b/it }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{bx}{scit}{ <-> ssub * LinuxBiolinumO-TLF/b/scit }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{bx}{scsl}{ <-> ssub * LinuxBiolinumO-TLF/b/scit }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{sb}{sc}{ <-> ssub * LinuxBiolinumO-TLF/b/sc }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{sb}{n}{ <-> ssub * LinuxBiolinumO-TLF/b/n }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{sb}{it}{ <-> ssub * LinuxBiolinumO-TLF/b/it }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{sb}{sl}{ <-> ssub * LinuxBiolinumO-TLF/b/it }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{sb}{scit}{ <-> ssub * LinuxBiolinumO-TLF/b/scit }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TLF}{sb}{scsl}{ <-> ssub * LinuxBiolinumO-TLF/b/scit }{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/OT1LinuxBiolinumO-TOsF.fd b/Master/texmf-dist/tex/latex/libertine/OT1LinuxBiolinumO-TOsF.fd
deleted file mode 100644
index 5d02991698f..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/OT1LinuxBiolinumO-TOsF.fd
+++ /dev/null
@@ -1,71 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{OT1LinuxBiolinumO-TOsF.fd}
- [2012/11/01 (autoinst) Font definitions for OT1/LinuxBiolinumO-TOsF.]
-
-\expandafter\ifx\csname LinuxBiolinumO@scale\endcsname\relax
- \let\LinuxBiolinumO@@scale\@empty
-\else
- \edef\LinuxBiolinumO@@scale{s*[\csname LinuxBiolinumO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{OT1}{LinuxBiolinumO-TOsF}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{b}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-tosf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{b}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-tosf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{b}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-tosf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{b}{sl}{
- <-> ssub * LinuxBiolinumO-TOsF/b/it
-}{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{b}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-tosf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{b}{scsl}{
- <-> ssub * LinuxBiolinumO-TOsF/b/scit
-}{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{m}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-tosf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{m}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-tosf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{m}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-tosf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{m}{sl}{
- <-> ssub * LinuxBiolinumO-TOsF/m/it
-}{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{m}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-tosf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{m}{scsl}{
- <-> ssub * LinuxBiolinumO-TOsF/m/scit
-}{}
-
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{bx}{sc}{ <-> ssub * LinuxBiolinumO-TOsF/b/sc }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{bx}{n}{ <-> ssub * LinuxBiolinumO-TOsF/b/n }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{bx}{it}{ <-> ssub * LinuxBiolinumO-TOsF/b/it }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{bx}{sl}{ <-> ssub * LinuxBiolinumO-TOsF/b/it }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{bx}{scit}{ <-> ssub * LinuxBiolinumO-TOsF/b/scit }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{bx}{scsl}{ <-> ssub * LinuxBiolinumO-TOsF/b/scit }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{sb}{sc}{ <-> ssub * LinuxBiolinumO-TOsF/b/sc }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{sb}{n}{ <-> ssub * LinuxBiolinumO-TOsF/b/n }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{sb}{it}{ <-> ssub * LinuxBiolinumO-TOsF/b/it }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{sb}{sl}{ <-> ssub * LinuxBiolinumO-TOsF/b/it }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{sb}{scit}{ <-> ssub * LinuxBiolinumO-TOsF/b/scit }{}
-\DeclareFontShape{OT1}{LinuxBiolinumO-TOsF}{sb}{scsl}{ <-> ssub * LinuxBiolinumO-TOsF/b/scit }{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/OT1LinuxLibertineO-LF.fd b/Master/texmf-dist/tex/latex/libertine/OT1LinuxLibertineO-LF.fd
deleted file mode 100644
index ca6ca92890f..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/OT1LinuxLibertineO-LF.fd
+++ /dev/null
@@ -1,80 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{OT1LinuxLibertineO-LF.fd}
- [2012/11/01 (autoinst) Font definitions for OT1/LinuxLibertineO-LF.]
-
-\expandafter\ifx\csname LinuxLibertineO@scale\endcsname\relax
- \let\LinuxLibertineO@@scale\@empty
-\else
- \edef\LinuxLibertineO@@scale{s*[\csname LinuxLibertineO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{OT1}{LinuxLibertineO-LF}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{b}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{b}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-lf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{b}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-lf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{b}{sl}{
- <-> ssub * LinuxLibertineO-LF/b/it
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{b}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{b}{scsl}{
- <-> ssub * LinuxLibertineO-LF/b/scit
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{sb}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{sb}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-lf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{sb}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-lf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{sb}{sl}{
- <-> ssub * LinuxLibertineO-LF/sb/it
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{sb}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{sb}{scsl}{
- <-> ssub * LinuxLibertineO-LF/sb/scit
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{m}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineO-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{m}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineO-lf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{m}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-lf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{m}{sl}{
- <-> ssub * LinuxLibertineO-LF/m/it
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{m}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-LF}{m}{scsl}{
- <-> ssub * LinuxLibertineO-LF/m/scit
-}{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/OT1LinuxLibertineO-OsF.fd b/Master/texmf-dist/tex/latex/libertine/OT1LinuxLibertineO-OsF.fd
deleted file mode 100644
index 98a3ea27d3b..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/OT1LinuxLibertineO-OsF.fd
+++ /dev/null
@@ -1,80 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{OT1LinuxLibertineO-OsF.fd}
- [2012/11/01 (autoinst) Font definitions for OT1/LinuxLibertineO-OsF.]
-
-\expandafter\ifx\csname LinuxLibertineO@scale\endcsname\relax
- \let\LinuxLibertineO@@scale\@empty
-\else
- \edef\LinuxLibertineO@@scale{s*[\csname LinuxLibertineO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{OT1}{LinuxLibertineO-OsF}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{b}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-osf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{b}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-osf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{b}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-osf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{b}{sl}{
- <-> ssub * LinuxLibertineO-OsF/b/it
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{b}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-osf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{b}{scsl}{
- <-> ssub * LinuxLibertineO-OsF/b/scit
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{sb}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-osf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{sb}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-osf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{sb}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-osf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{sb}{sl}{
- <-> ssub * LinuxLibertineO-OsF/sb/it
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{sb}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-osf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{sb}{scsl}{
- <-> ssub * LinuxLibertineO-OsF/sb/scit
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{m}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineO-osf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{m}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineO-osf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{m}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-osf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{m}{sl}{
- <-> ssub * LinuxLibertineO-OsF/m/it
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{m}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-osf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-OsF}{m}{scsl}{
- <-> ssub * LinuxLibertineO-OsF/m/scit
-}{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/OT1LinuxLibertineO-TLF.fd b/Master/texmf-dist/tex/latex/libertine/OT1LinuxLibertineO-TLF.fd
deleted file mode 100644
index 1a403ebb8d8..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/OT1LinuxLibertineO-TLF.fd
+++ /dev/null
@@ -1,80 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{OT1LinuxLibertineO-TLF.fd}
- [2012/11/01 (autoinst) Font definitions for OT1/LinuxLibertineO-TLF.]
-
-\expandafter\ifx\csname LinuxLibertineO@scale\endcsname\relax
- \let\LinuxLibertineO@@scale\@empty
-\else
- \edef\LinuxLibertineO@@scale{s*[\csname LinuxLibertineO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{OT1}{LinuxLibertineO-TLF}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{b}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-tlf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{b}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{b}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{b}{sl}{
- <-> ssub * LinuxLibertineO-TLF/b/it
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{b}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-tlf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{b}{scsl}{
- <-> ssub * LinuxLibertineO-TLF/b/scit
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{sb}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-tlf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{sb}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{sb}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{sb}{sl}{
- <-> ssub * LinuxLibertineO-TLF/sb/it
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{sb}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-tlf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{sb}{scsl}{
- <-> ssub * LinuxLibertineO-TLF/sb/scit
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{m}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineO-tlf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{m}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineO-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{m}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{m}{sl}{
- <-> ssub * LinuxLibertineO-TLF/m/it
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{m}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-tlf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TLF}{m}{scsl}{
- <-> ssub * LinuxLibertineO-TLF/m/scit
-}{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/OT1LinuxLibertineO-TOsF.fd b/Master/texmf-dist/tex/latex/libertine/OT1LinuxLibertineO-TOsF.fd
deleted file mode 100644
index 54956237e4b..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/OT1LinuxLibertineO-TOsF.fd
+++ /dev/null
@@ -1,80 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{OT1LinuxLibertineO-TOsF.fd}
- [2012/11/01 (autoinst) Font definitions for OT1/LinuxLibertineO-TOsF.]
-
-\expandafter\ifx\csname LinuxLibertineO@scale\endcsname\relax
- \let\LinuxLibertineO@@scale\@empty
-\else
- \edef\LinuxLibertineO@@scale{s*[\csname LinuxLibertineO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{OT1}{LinuxLibertineO-TOsF}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{b}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-tosf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{b}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-tosf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{b}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-tosf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{b}{sl}{
- <-> ssub * LinuxLibertineO-TOsF/b/it
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{b}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-tosf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{b}{scsl}{
- <-> ssub * LinuxLibertineO-TOsF/b/scit
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{sb}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-tosf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{sb}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-tosf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{sb}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-tosf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{sb}{sl}{
- <-> ssub * LinuxLibertineO-TOsF/sb/it
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{sb}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-tosf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{sb}{scsl}{
- <-> ssub * LinuxLibertineO-TOsF/sb/scit
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{m}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineO-tosf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{m}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineO-tosf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{m}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-tosf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{m}{sl}{
- <-> ssub * LinuxLibertineO-TOsF/m/it
-}{}
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{m}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-tosf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LinuxLibertineO-TOsF}{m}{scsl}{
- <-> ssub * LinuxLibertineO-TOsF/m/scit
-}{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/T1LinuxBiolinumO-LF.fd b/Master/texmf-dist/tex/latex/libertine/T1LinuxBiolinumO-LF.fd
deleted file mode 100644
index 8b89dc66104..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/T1LinuxBiolinumO-LF.fd
+++ /dev/null
@@ -1,71 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{T1LinuxBiolinumO-LF.fd}
- [2012/11/01 (autoinst) Font definitions for T1/LinuxBiolinumO-LF.]
-
-\expandafter\ifx\csname LinuxBiolinumO@scale\endcsname\relax
- \let\LinuxBiolinumO@@scale\@empty
-\else
- \edef\LinuxBiolinumO@@scale{s*[\csname LinuxBiolinumO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T1}{LinuxBiolinumO-LF}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{b}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-lf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{b}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-lf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{b}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-lf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{b}{sl}{
- <-> ssub * LinuxBiolinumO-LF/b/it
-}{}
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{b}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-lf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{b}{scsl}{
- <-> ssub * LinuxBiolinumO-LF/b/scit
-}{}
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{m}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-lf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{m}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-lf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{m}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-lf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{m}{sl}{
- <-> ssub * LinuxBiolinumO-LF/m/it
-}{}
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{m}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-lf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{m}{scsl}{
- <-> ssub * LinuxBiolinumO-LF/m/scit
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{bx}{sc}{ <-> ssub * LinuxBiolinumO-LF/b/sc }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{bx}{n}{ <-> ssub * LinuxBiolinumO-LF/b/n }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{bx}{it}{ <-> ssub * LinuxBiolinumO-LF/b/it }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{bx}{sl}{ <-> ssub * LinuxBiolinumO-LF/b/it }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{bx}{scit}{ <-> ssub * LinuxBiolinumO-LF/b/scit }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{bx}{scsl}{ <-> ssub * LinuxBiolinumO-LF/b/scit }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{sb}{sc}{ <-> ssub * LinuxBiolinumO-LF/b/sc }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{sb}{n}{ <-> ssub * LinuxBiolinumO-LF/b/n }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{sb}{it}{ <-> ssub * LinuxBiolinumO-LF/b/it }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{sb}{sl}{ <-> ssub * LinuxBiolinumO-LF/b/it }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{sb}{scit}{ <-> ssub * LinuxBiolinumO-LF/b/scit }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-LF}{sb}{scsl}{ <-> ssub * LinuxBiolinumO-LF/b/scit }{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/T1LinuxBiolinumO-OsF.fd b/Master/texmf-dist/tex/latex/libertine/T1LinuxBiolinumO-OsF.fd
deleted file mode 100644
index f9e33aefd46..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/T1LinuxBiolinumO-OsF.fd
+++ /dev/null
@@ -1,71 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{T1LinuxBiolinumO-OsF.fd}
- [2012/11/01 (autoinst) Font definitions for T1/LinuxBiolinumO-OsF.]
-
-\expandafter\ifx\csname LinuxBiolinumO@scale\endcsname\relax
- \let\LinuxBiolinumO@@scale\@empty
-\else
- \edef\LinuxBiolinumO@@scale{s*[\csname LinuxBiolinumO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T1}{LinuxBiolinumO-OsF}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{b}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-osf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{b}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-osf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{b}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-osf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{b}{sl}{
- <-> ssub * LinuxBiolinumO-OsF/b/it
-}{}
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{b}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-osf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{b}{scsl}{
- <-> ssub * LinuxBiolinumO-OsF/b/scit
-}{}
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{m}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-osf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{m}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-osf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{m}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-osf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{m}{sl}{
- <-> ssub * LinuxBiolinumO-OsF/m/it
-}{}
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{m}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-osf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{m}{scsl}{
- <-> ssub * LinuxBiolinumO-OsF/m/scit
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{bx}{sc}{ <-> ssub * LinuxBiolinumO-OsF/b/sc }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{bx}{n}{ <-> ssub * LinuxBiolinumO-OsF/b/n }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{bx}{it}{ <-> ssub * LinuxBiolinumO-OsF/b/it }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{bx}{sl}{ <-> ssub * LinuxBiolinumO-OsF/b/it }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{bx}{scit}{ <-> ssub * LinuxBiolinumO-OsF/b/scit }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{bx}{scsl}{ <-> ssub * LinuxBiolinumO-OsF/b/scit }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{sb}{sc}{ <-> ssub * LinuxBiolinumO-OsF/b/sc }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{sb}{n}{ <-> ssub * LinuxBiolinumO-OsF/b/n }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{sb}{it}{ <-> ssub * LinuxBiolinumO-OsF/b/it }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{sb}{sl}{ <-> ssub * LinuxBiolinumO-OsF/b/it }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{sb}{scit}{ <-> ssub * LinuxBiolinumO-OsF/b/scit }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-OsF}{sb}{scsl}{ <-> ssub * LinuxBiolinumO-OsF/b/scit }{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/T1LinuxBiolinumO-TLF.fd b/Master/texmf-dist/tex/latex/libertine/T1LinuxBiolinumO-TLF.fd
deleted file mode 100644
index a49d0b78b95..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/T1LinuxBiolinumO-TLF.fd
+++ /dev/null
@@ -1,71 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{T1LinuxBiolinumO-TLF.fd}
- [2012/11/01 (autoinst) Font definitions for T1/LinuxBiolinumO-TLF.]
-
-\expandafter\ifx\csname LinuxBiolinumO@scale\endcsname\relax
- \let\LinuxBiolinumO@@scale\@empty
-\else
- \edef\LinuxBiolinumO@@scale{s*[\csname LinuxBiolinumO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T1}{LinuxBiolinumO-TLF}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{b}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-tlf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{b}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{b}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{b}{sl}{
- <-> ssub * LinuxBiolinumO-TLF/b/it
-}{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{b}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-tlf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{b}{scsl}{
- <-> ssub * LinuxBiolinumO-TLF/b/scit
-}{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{m}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-tlf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{m}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{m}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{m}{sl}{
- <-> ssub * LinuxBiolinumO-TLF/m/it
-}{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{m}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-tlf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{m}{scsl}{
- <-> ssub * LinuxBiolinumO-TLF/m/scit
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{bx}{sc}{ <-> ssub * LinuxBiolinumO-TLF/b/sc }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{bx}{n}{ <-> ssub * LinuxBiolinumO-TLF/b/n }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{bx}{it}{ <-> ssub * LinuxBiolinumO-TLF/b/it }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{bx}{sl}{ <-> ssub * LinuxBiolinumO-TLF/b/it }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{bx}{scit}{ <-> ssub * LinuxBiolinumO-TLF/b/scit }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{bx}{scsl}{ <-> ssub * LinuxBiolinumO-TLF/b/scit }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{sb}{sc}{ <-> ssub * LinuxBiolinumO-TLF/b/sc }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{sb}{n}{ <-> ssub * LinuxBiolinumO-TLF/b/n }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{sb}{it}{ <-> ssub * LinuxBiolinumO-TLF/b/it }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{sb}{sl}{ <-> ssub * LinuxBiolinumO-TLF/b/it }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{sb}{scit}{ <-> ssub * LinuxBiolinumO-TLF/b/scit }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TLF}{sb}{scsl}{ <-> ssub * LinuxBiolinumO-TLF/b/scit }{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/T1LinuxBiolinumO-TOsF.fd b/Master/texmf-dist/tex/latex/libertine/T1LinuxBiolinumO-TOsF.fd
deleted file mode 100644
index b2b43f65056..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/T1LinuxBiolinumO-TOsF.fd
+++ /dev/null
@@ -1,71 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{T1LinuxBiolinumO-TOsF.fd}
- [2012/11/01 (autoinst) Font definitions for T1/LinuxBiolinumO-TOsF.]
-
-\expandafter\ifx\csname LinuxBiolinumO@scale\endcsname\relax
- \let\LinuxBiolinumO@@scale\@empty
-\else
- \edef\LinuxBiolinumO@@scale{s*[\csname LinuxBiolinumO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T1}{LinuxBiolinumO-TOsF}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{b}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-tosf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{b}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-tosf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{b}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-tosf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{b}{sl}{
- <-> ssub * LinuxBiolinumO-TOsF/b/it
-}{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{b}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-tosf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{b}{scsl}{
- <-> ssub * LinuxBiolinumO-TOsF/b/scit
-}{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{m}{sc}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-tosf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{m}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-tosf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{m}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-tosf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{m}{sl}{
- <-> ssub * LinuxBiolinumO-TOsF/m/it
-}{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{m}{scit}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-tosf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{m}{scsl}{
- <-> ssub * LinuxBiolinumO-TOsF/m/scit
-}{}
-
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{bx}{sc}{ <-> ssub * LinuxBiolinumO-TOsF/b/sc }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{bx}{n}{ <-> ssub * LinuxBiolinumO-TOsF/b/n }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{bx}{it}{ <-> ssub * LinuxBiolinumO-TOsF/b/it }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{bx}{sl}{ <-> ssub * LinuxBiolinumO-TOsF/b/it }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{bx}{scit}{ <-> ssub * LinuxBiolinumO-TOsF/b/scit }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{bx}{scsl}{ <-> ssub * LinuxBiolinumO-TOsF/b/scit }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{sb}{sc}{ <-> ssub * LinuxBiolinumO-TOsF/b/sc }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{sb}{n}{ <-> ssub * LinuxBiolinumO-TOsF/b/n }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{sb}{it}{ <-> ssub * LinuxBiolinumO-TOsF/b/it }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{sb}{sl}{ <-> ssub * LinuxBiolinumO-TOsF/b/it }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{sb}{scit}{ <-> ssub * LinuxBiolinumO-TOsF/b/scit }{}
-\DeclareFontShape{T1}{LinuxBiolinumO-TOsF}{sb}{scsl}{ <-> ssub * LinuxBiolinumO-TOsF/b/scit }{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/T1LinuxLibertineO-LF.fd b/Master/texmf-dist/tex/latex/libertine/T1LinuxLibertineO-LF.fd
deleted file mode 100644
index 6a94c839e61..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/T1LinuxLibertineO-LF.fd
+++ /dev/null
@@ -1,80 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{T1LinuxLibertineO-LF.fd}
- [2012/11/01 (autoinst) Font definitions for T1/LinuxLibertineO-LF.]
-
-\expandafter\ifx\csname LinuxLibertineO@scale\endcsname\relax
- \let\LinuxLibertineO@@scale\@empty
-\else
- \edef\LinuxLibertineO@@scale{s*[\csname LinuxLibertineO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T1}{LinuxLibertineO-LF}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{b}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-lf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{b}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-lf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{b}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-lf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{b}{sl}{
- <-> ssub * LinuxLibertineO-LF/b/it
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{b}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-lf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{b}{scsl}{
- <-> ssub * LinuxLibertineO-LF/b/scit
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{sb}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-lf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{sb}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-lf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{sb}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-lf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{sb}{sl}{
- <-> ssub * LinuxLibertineO-LF/sb/it
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{sb}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-lf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{sb}{scsl}{
- <-> ssub * LinuxLibertineO-LF/sb/scit
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{m}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineO-lf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{m}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineO-lf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{m}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-lf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{m}{sl}{
- <-> ssub * LinuxLibertineO-LF/m/it
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{m}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-lf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-LF}{m}{scsl}{
- <-> ssub * LinuxLibertineO-LF/m/scit
-}{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/T1LinuxLibertineO-OsF.fd b/Master/texmf-dist/tex/latex/libertine/T1LinuxLibertineO-OsF.fd
deleted file mode 100644
index 11b52123fd6..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/T1LinuxLibertineO-OsF.fd
+++ /dev/null
@@ -1,80 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{T1LinuxLibertineO-OsF.fd}
- [2012/11/01 (autoinst) Font definitions for T1/LinuxLibertineO-OsF.]
-
-\expandafter\ifx\csname LinuxLibertineO@scale\endcsname\relax
- \let\LinuxLibertineO@@scale\@empty
-\else
- \edef\LinuxLibertineO@@scale{s*[\csname LinuxLibertineO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T1}{LinuxLibertineO-OsF}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{b}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-osf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{b}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-osf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{b}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-osf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{b}{sl}{
- <-> ssub * LinuxLibertineO-OsF/b/it
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{b}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-osf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{b}{scsl}{
- <-> ssub * LinuxLibertineO-OsF/b/scit
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{sb}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-osf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{sb}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-osf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{sb}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-osf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{sb}{sl}{
- <-> ssub * LinuxLibertineO-OsF/sb/it
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{sb}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-osf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{sb}{scsl}{
- <-> ssub * LinuxLibertineO-OsF/sb/scit
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{m}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineO-osf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{m}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineO-osf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{m}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-osf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{m}{sl}{
- <-> ssub * LinuxLibertineO-OsF/m/it
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{m}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-osf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-OsF}{m}{scsl}{
- <-> ssub * LinuxLibertineO-OsF/m/scit
-}{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/T1LinuxLibertineO-TLF.fd b/Master/texmf-dist/tex/latex/libertine/T1LinuxLibertineO-TLF.fd
deleted file mode 100644
index 7b476f38df2..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/T1LinuxLibertineO-TLF.fd
+++ /dev/null
@@ -1,80 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{T1LinuxLibertineO-TLF.fd}
- [2012/11/01 (autoinst) Font definitions for T1/LinuxLibertineO-TLF.]
-
-\expandafter\ifx\csname LinuxLibertineO@scale\endcsname\relax
- \let\LinuxLibertineO@@scale\@empty
-\else
- \edef\LinuxLibertineO@@scale{s*[\csname LinuxLibertineO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T1}{LinuxLibertineO-TLF}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{b}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-tlf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{b}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{b}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{b}{sl}{
- <-> ssub * LinuxLibertineO-TLF/b/it
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{b}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-tlf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{b}{scsl}{
- <-> ssub * LinuxLibertineO-TLF/b/scit
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{sb}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-tlf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{sb}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{sb}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{sb}{sl}{
- <-> ssub * LinuxLibertineO-TLF/sb/it
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{sb}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-tlf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{sb}{scsl}{
- <-> ssub * LinuxLibertineO-TLF/sb/scit
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{m}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineO-tlf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{m}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineO-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{m}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{m}{sl}{
- <-> ssub * LinuxLibertineO-TLF/m/it
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{m}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-tlf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TLF}{m}{scsl}{
- <-> ssub * LinuxLibertineO-TLF/m/scit
-}{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/T1LinuxLibertineO-TOsF.fd b/Master/texmf-dist/tex/latex/libertine/T1LinuxLibertineO-TOsF.fd
deleted file mode 100644
index b1366cf7ad1..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/T1LinuxLibertineO-TOsF.fd
+++ /dev/null
@@ -1,80 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{T1LinuxLibertineO-TOsF.fd}
- [2012/11/01 (autoinst) Font definitions for T1/LinuxLibertineO-TOsF.]
-
-\expandafter\ifx\csname LinuxLibertineO@scale\endcsname\relax
- \let\LinuxLibertineO@@scale\@empty
-\else
- \edef\LinuxLibertineO@@scale{s*[\csname LinuxLibertineO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T1}{LinuxLibertineO-TOsF}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{b}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-tosf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{b}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-tosf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{b}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-tosf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{b}{sl}{
- <-> ssub * LinuxLibertineO-TOsF/b/it
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{b}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-tosf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{b}{scsl}{
- <-> ssub * LinuxLibertineO-TOsF/b/scit
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{sb}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-tosf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{sb}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-tosf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{sb}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-tosf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{sb}{sl}{
- <-> ssub * LinuxLibertineO-TOsF/sb/it
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{sb}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-tosf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{sb}{scsl}{
- <-> ssub * LinuxLibertineO-TOsF/sb/scit
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{m}{sc}{
- <-> \LinuxLibertineO@@scale LinLibertineO-tosf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{m}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineO-tosf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{m}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-tosf-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{m}{sl}{
- <-> ssub * LinuxLibertineO-TOsF/m/it
-}{}
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{m}{scit}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-tosf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LinuxLibertineO-TOsF}{m}{scsl}{
- <-> ssub * LinuxLibertineO-TOsF/m/scit
-}{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/TS1LinuxBiolinumO-LF.fd b/Master/texmf-dist/tex/latex/libertine/TS1LinuxBiolinumO-LF.fd
deleted file mode 100644
index 18bbedae73c..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/TS1LinuxBiolinumO-LF.fd
+++ /dev/null
@@ -1,43 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{TS1LinuxBiolinumO-LF.fd}
- [2012/11/01 (autoinst) Font definitions for TS1/LinuxBiolinumO-LF.]
-
-\expandafter\ifx\csname LinuxBiolinumO@scale\endcsname\relax
- \let\LinuxBiolinumO@@scale\@empty
-\else
- \edef\LinuxBiolinumO@@scale{s*[\csname LinuxBiolinumO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{TS1}{LinuxBiolinumO-LF}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-LF}{b}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-LF}{b}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-LF}{b}{sl}{
- <-> ssub * LinuxBiolinumO-LF/b/it
-}{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-LF}{m}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-LF}{m}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-LF}{m}{sl}{
- <-> ssub * LinuxBiolinumO-LF/m/it
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-LF}{bx}{n}{ <-> ssub * LinuxBiolinumO-LF/b/n }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-LF}{bx}{it}{ <-> ssub * LinuxBiolinumO-LF/b/it }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-LF}{bx}{sl}{ <-> ssub * LinuxBiolinumO-LF/b/it }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-LF}{sb}{n}{ <-> ssub * LinuxBiolinumO-LF/b/n }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-LF}{sb}{it}{ <-> ssub * LinuxBiolinumO-LF/b/it }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-LF}{sb}{sl}{ <-> ssub * LinuxBiolinumO-LF/b/it }{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/TS1LinuxBiolinumO-OsF.fd b/Master/texmf-dist/tex/latex/libertine/TS1LinuxBiolinumO-OsF.fd
deleted file mode 100644
index 5a83b6e3da9..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/TS1LinuxBiolinumO-OsF.fd
+++ /dev/null
@@ -1,43 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{TS1LinuxBiolinumO-OsF.fd}
- [2012/11/01 (autoinst) Font definitions for TS1/LinuxBiolinumO-OsF.]
-
-\expandafter\ifx\csname LinuxBiolinumO@scale\endcsname\relax
- \let\LinuxBiolinumO@@scale\@empty
-\else
- \edef\LinuxBiolinumO@@scale{s*[\csname LinuxBiolinumO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{TS1}{LinuxBiolinumO-OsF}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-OsF}{b}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-osf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-OsF}{b}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-osf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-OsF}{b}{sl}{
- <-> ssub * LinuxBiolinumO-OsF/b/it
-}{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-OsF}{m}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-osf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-OsF}{m}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-osf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-OsF}{m}{sl}{
- <-> ssub * LinuxBiolinumO-OsF/m/it
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-OsF}{bx}{n}{ <-> ssub * LinuxBiolinumO-OsF/b/n }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-OsF}{bx}{it}{ <-> ssub * LinuxBiolinumO-OsF/b/it }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-OsF}{bx}{sl}{ <-> ssub * LinuxBiolinumO-OsF/b/it }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-OsF}{sb}{n}{ <-> ssub * LinuxBiolinumO-OsF/b/n }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-OsF}{sb}{it}{ <-> ssub * LinuxBiolinumO-OsF/b/it }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-OsF}{sb}{sl}{ <-> ssub * LinuxBiolinumO-OsF/b/it }{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/TS1LinuxBiolinumO-TLF.fd b/Master/texmf-dist/tex/latex/libertine/TS1LinuxBiolinumO-TLF.fd
deleted file mode 100644
index 89ff0578faf..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/TS1LinuxBiolinumO-TLF.fd
+++ /dev/null
@@ -1,43 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{TS1LinuxBiolinumO-TLF.fd}
- [2012/11/01 (autoinst) Font definitions for TS1/LinuxBiolinumO-TLF.]
-
-\expandafter\ifx\csname LinuxBiolinumO@scale\endcsname\relax
- \let\LinuxBiolinumO@@scale\@empty
-\else
- \edef\LinuxBiolinumO@@scale{s*[\csname LinuxBiolinumO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{TS1}{LinuxBiolinumO-TLF}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-TLF}{b}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-TLF}{b}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-TLF}{b}{sl}{
- <-> ssub * LinuxBiolinumO-TLF/b/it
-}{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-TLF}{m}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-TLF}{m}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-TLF}{m}{sl}{
- <-> ssub * LinuxBiolinumO-TLF/m/it
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-TLF}{bx}{n}{ <-> ssub * LinuxBiolinumO-TLF/b/n }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-TLF}{bx}{it}{ <-> ssub * LinuxBiolinumO-TLF/b/it }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-TLF}{bx}{sl}{ <-> ssub * LinuxBiolinumO-TLF/b/it }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-TLF}{sb}{n}{ <-> ssub * LinuxBiolinumO-TLF/b/n }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-TLF}{sb}{it}{ <-> ssub * LinuxBiolinumO-TLF/b/it }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-TLF}{sb}{sl}{ <-> ssub * LinuxBiolinumO-TLF/b/it }{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/TS1LinuxBiolinumO-TOsF.fd b/Master/texmf-dist/tex/latex/libertine/TS1LinuxBiolinumO-TOsF.fd
deleted file mode 100644
index 58ef5c478ba..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/TS1LinuxBiolinumO-TOsF.fd
+++ /dev/null
@@ -1,43 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{TS1LinuxBiolinumO-TOsF.fd}
- [2012/11/01 (autoinst) Font definitions for TS1/LinuxBiolinumO-TOsF.]
-
-\expandafter\ifx\csname LinuxBiolinumO@scale\endcsname\relax
- \let\LinuxBiolinumO@@scale\@empty
-\else
- \edef\LinuxBiolinumO@@scale{s*[\csname LinuxBiolinumO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{TS1}{LinuxBiolinumO-TOsF}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-TOsF}{b}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOB-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-TOsF}{b}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOBO-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-TOsF}{b}{sl}{
- <-> ssub * LinuxBiolinumO-TOsF/b/it
-}{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-TOsF}{m}{n}{
- <-> \LinuxBiolinumO@@scale LinBiolinumO-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-TOsF}{m}{it}{
- <-> \LinuxBiolinumO@@scale LinBiolinumOI-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-TOsF}{m}{sl}{
- <-> ssub * LinuxBiolinumO-TOsF/m/it
-}{}
-
-\DeclareFontShape{TS1}{LinuxBiolinumO-TOsF}{bx}{n}{ <-> ssub * LinuxBiolinumO-TOsF/b/n }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-TOsF}{bx}{it}{ <-> ssub * LinuxBiolinumO-TOsF/b/it }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-TOsF}{bx}{sl}{ <-> ssub * LinuxBiolinumO-TOsF/b/it }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-TOsF}{sb}{n}{ <-> ssub * LinuxBiolinumO-TOsF/b/n }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-TOsF}{sb}{it}{ <-> ssub * LinuxBiolinumO-TOsF/b/it }{}
-\DeclareFontShape{TS1}{LinuxBiolinumO-TOsF}{sb}{sl}{ <-> ssub * LinuxBiolinumO-TOsF/b/it }{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/TS1LinuxLibertineO-LF.fd b/Master/texmf-dist/tex/latex/libertine/TS1LinuxLibertineO-LF.fd
deleted file mode 100644
index 103bbd10c75..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/TS1LinuxLibertineO-LF.fd
+++ /dev/null
@@ -1,47 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{TS1LinuxLibertineO-LF.fd}
- [2012/11/01 (autoinst) Font definitions for TS1/LinuxLibertineO-LF.]
-
-\expandafter\ifx\csname LinuxLibertineO@scale\endcsname\relax
- \let\LinuxLibertineO@@scale\@empty
-\else
- \edef\LinuxLibertineO@@scale{s*[\csname LinuxLibertineO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{TS1}{LinuxLibertineO-LF}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-LF}{b}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-LF}{b}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-LF}{b}{sl}{
- <-> ssub * LinuxLibertineO-LF/b/it
-}{}
-\DeclareFontShape{TS1}{LinuxLibertineO-LF}{sb}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-LF}{sb}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-LF}{sb}{sl}{
- <-> ssub * LinuxLibertineO-LF/sb/it
-}{}
-\DeclareFontShape{TS1}{LinuxLibertineO-LF}{m}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineO-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-LF}{m}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-LF}{m}{sl}{
- <-> ssub * LinuxLibertineO-LF/m/it
-}{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/TS1LinuxLibertineO-OsF.fd b/Master/texmf-dist/tex/latex/libertine/TS1LinuxLibertineO-OsF.fd
deleted file mode 100644
index 6abd29f6df6..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/TS1LinuxLibertineO-OsF.fd
+++ /dev/null
@@ -1,47 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{TS1LinuxLibertineO-OsF.fd}
- [2012/11/01 (autoinst) Font definitions for TS1/LinuxLibertineO-OsF.]
-
-\expandafter\ifx\csname LinuxLibertineO@scale\endcsname\relax
- \let\LinuxLibertineO@@scale\@empty
-\else
- \edef\LinuxLibertineO@@scale{s*[\csname LinuxLibertineO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{TS1}{LinuxLibertineO-OsF}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-OsF}{b}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-osf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-OsF}{b}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-osf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-OsF}{b}{sl}{
- <-> ssub * LinuxLibertineO-OsF/b/it
-}{}
-\DeclareFontShape{TS1}{LinuxLibertineO-OsF}{sb}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-osf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-OsF}{sb}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-osf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-OsF}{sb}{sl}{
- <-> ssub * LinuxLibertineO-OsF/sb/it
-}{}
-\DeclareFontShape{TS1}{LinuxLibertineO-OsF}{m}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineO-osf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-OsF}{m}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-osf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-OsF}{m}{sl}{
- <-> ssub * LinuxLibertineO-OsF/m/it
-}{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/TS1LinuxLibertineO-TLF.fd b/Master/texmf-dist/tex/latex/libertine/TS1LinuxLibertineO-TLF.fd
deleted file mode 100644
index 46777d38946..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/TS1LinuxLibertineO-TLF.fd
+++ /dev/null
@@ -1,47 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{TS1LinuxLibertineO-TLF.fd}
- [2012/11/01 (autoinst) Font definitions for TS1/LinuxLibertineO-TLF.]
-
-\expandafter\ifx\csname LinuxLibertineO@scale\endcsname\relax
- \let\LinuxLibertineO@@scale\@empty
-\else
- \edef\LinuxLibertineO@@scale{s*[\csname LinuxLibertineO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{TS1}{LinuxLibertineO-TLF}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-TLF}{b}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-TLF}{b}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-TLF}{b}{sl}{
- <-> ssub * LinuxLibertineO-TLF/b/it
-}{}
-\DeclareFontShape{TS1}{LinuxLibertineO-TLF}{sb}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-TLF}{sb}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-TLF}{sb}{sl}{
- <-> ssub * LinuxLibertineO-TLF/sb/it
-}{}
-\DeclareFontShape{TS1}{LinuxLibertineO-TLF}{m}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineO-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-TLF}{m}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-TLF}{m}{sl}{
- <-> ssub * LinuxLibertineO-TLF/m/it
-}{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertine/TS1LinuxLibertineO-TOsF.fd b/Master/texmf-dist/tex/latex/libertine/TS1LinuxLibertineO-TOsF.fd
deleted file mode 100644
index 5ca21fdb4c9..00000000000
--- a/Master/texmf-dist/tex/latex/libertine/TS1LinuxLibertineO-TOsF.fd
+++ /dev/null
@@ -1,47 +0,0 @@
-%% Generated by autoinst on 2012/11/01
-%%
-\ProvidesFile{TS1LinuxLibertineO-TOsF.fd}
- [2012/11/01 (autoinst) Font definitions for TS1/LinuxLibertineO-TOsF.]
-
-\expandafter\ifx\csname LinuxLibertineO@scale\endcsname\relax
- \let\LinuxLibertineO@@scale\@empty
-\else
- \edef\LinuxLibertineO@@scale{s*[\csname LinuxLibertineO@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{TS1}{LinuxLibertineO-TOsF}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-TOsF}{b}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOB-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-TOsF}{b}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOBI-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-TOsF}{b}{sl}{
- <-> ssub * LinuxLibertineO-TOsF/b/it
-}{}
-\DeclareFontShape{TS1}{LinuxLibertineO-TOsF}{sb}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineOZ-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-TOsF}{sb}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOZI-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-TOsF}{sb}{sl}{
- <-> ssub * LinuxLibertineO-TOsF/sb/it
-}{}
-\DeclareFontShape{TS1}{LinuxLibertineO-TOsF}{m}{n}{
- <-> \LinuxLibertineO@@scale LinLibertineO-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-TOsF}{m}{it}{
- <-> \LinuxLibertineO@@scale LinLibertineOI-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LinuxLibertineO-TOsF}{m}{sl}{
- <-> ssub * LinuxLibertineO-TOsF/m/it
-}{}
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusMono-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusMono-TLF.fd
new file mode 100644
index 00000000000..f45795d4973
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusMono-TLF.fd
@@ -0,0 +1,36 @@
+%% Generated by autoinst on 2024/09/22
+%%
+\ProvidesFile{LGRLibertinusMono-TLF.fd}
+ [2024/09/22 (autoinst) Font definitions for LGR/LibertinusMono-TLF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname LibertinusMono@scale\endcsname\relax
+ \let\LibertinusMono@@scale\@empty
+\else
+ \edef\LibertinusMono@@scale{s*[\csname LibertinusMono@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{LGR}{LibertinusMono-TLF}{\hyphenchar\font=-1}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{LGR}{LibertinusMono-TLF}{m}{n}{
+ <-> \LibertinusMono@@scale LibertinusMono-Regular-tlf-lgr
+}{}
+
+\DeclareFontShape{LGR}{LibertinusMono-TLF}{regular}{n}{
+ <-> alias * LibertinusMono-TLF/m/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-LF.fd
index fc819eff45d..115e899f2c6 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LGRLibertinusSans-LF.fd}
- [2022/11/07 (autoinst) Font definitions for LGR/LibertinusSans-LF.]
+ [2024/09/22 (autoinst) Font definitions for LGR/LibertinusSans-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,6 +20,25 @@
\DeclareFontFamily{LGR}{LibertinusSans-LF}{}
+% ---- b = bold ----
+
+\DeclareFontShape{LGR}{LibertinusSans-LF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-lgr
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSans-LF}{bold}{n}{
+ <-> alias * LibertinusSans-LF/b/n
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSans-LF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-sc-lgr
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSans-LF}{bold}{sc}{
+ <-> alias * LibertinusSans-LF/b/sc
+}{}
+
+
% ---- m = regular ----
\DeclareFontShape{LGR}{LibertinusSans-LF}{m}{it}{
@@ -30,14 +49,6 @@
<-> alias * LibertinusSans-LF/m/it
}{}
-\DeclareFontShape{LGR}{LibertinusSans-LF}{m}{scit}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-lf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-LF}{regular}{scit}{
- <-> alias * LibertinusSans-LF/m/scit
-}{}
-
\DeclareFontShape{LGR}{LibertinusSans-LF}{m}{sc}{
<-> \LibertinusSans@@scale LibertinusSans-Regular-lf-sc-lgr
}{}
@@ -46,6 +57,14 @@
<-> alias * LibertinusSans-LF/m/sc
}{}
+\DeclareFontShape{LGR}{LibertinusSans-LF}{m}{scit}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-lf-sc-lgr
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSans-LF}{regular}{scit}{
+ <-> alias * LibertinusSans-LF/m/scit
+}{}
+
\DeclareFontShape{LGR}{LibertinusSans-LF}{m}{n}{
<-> \LibertinusSans@@scale LibertinusSans-Regular-lf-lgr
}{}
@@ -71,81 +90,14 @@
}{}
-% ---- b = bold ----
-
-\DeclareFontShape{LGR}{LibertinusSans-LF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-lf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-LF}{bold}{scsl}{
- <-> alias * LibertinusSans-LF/b/scsl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-LF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-lf-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-LF}{bold}{sl}{
- <-> alias * LibertinusSans-LF/b/sl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-LF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-LF}{bold}{n}{
- <-> alias * LibertinusSans-LF/b/n
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-LF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-LF}{bold}{sc}{
- <-> alias * LibertinusSans-LF/b/sc
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-LF}{b}{it}{
- <-> ssub * LibertinusSans-LF/b/sl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-LF}{bold}{it}{
- <-> ssub * LibertinusSans-LF/bold/sl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-LF}{b}{scit}{
- <-> ssub * LibertinusSans-LF/b/scsl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-LF}{bold}{scit}{
- <-> ssub * LibertinusSans-LF/bold/scsl
-}{}
-
-
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{LGR}{LibertinusSans-LF}{bx}{scsl}{
- <-> ssub * LibertinusSans-LF/b/scsl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-LF}{bx}{it}{
- <-> ssub * LibertinusSans-LF/b/it
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-LF}{bx}{scit}{
- <-> ssub * LibertinusSans-LF/b/scit
+\DeclareFontShape{LGR}{LibertinusSans-LF}{bx}{n}{
+ <-> ssub * LibertinusSans-LF/b/n
}{}
\DeclareFontShape{LGR}{LibertinusSans-LF}{bx}{sc}{
<-> ssub * LibertinusSans-LF/b/sc
}{}
-\DeclareFontShape{LGR}{LibertinusSans-LF}{bx}{sl}{
- <-> ssub * LibertinusSans-LF/b/sl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-LF}{bx}{n}{
- <-> ssub * LibertinusSans-LF/b/n
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-OsF.fd
index 862b5a34f6f..dfd9716617f 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LGRLibertinusSans-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for LGR/LibertinusSans-OsF.]
+ [2024/09/22 (autoinst) Font definitions for LGR/LibertinusSans-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,16 +20,27 @@
\DeclareFontFamily{LGR}{LibertinusSans-OsF}{}
-% ---- m = regular ----
+% ---- b = bold ----
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{m}{scit}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-osf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSans-OsF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{regular}{scit}{
- <-> alias * LibertinusSans-OsF/m/scit
+\DeclareFontShape{LGR}{LibertinusSans-OsF}{bold}{n}{
+ <-> alias * LibertinusSans-OsF/b/n
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSans-OsF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-sc-lgr
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSans-OsF}{bold}{sc}{
+ <-> alias * LibertinusSans-OsF/b/sc
}{}
+
+% ---- m = regular ----
+
\DeclareFontShape{LGR}{LibertinusSans-OsF}{m}{it}{
<-> \LibertinusSans@@scale LibertinusSans-Italic-osf-lgr
}{}
@@ -46,6 +57,14 @@
<-> alias * LibertinusSans-OsF/m/n
}{}
+\DeclareFontShape{LGR}{LibertinusSans-OsF}{m}{scit}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-osf-sc-lgr
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSans-OsF}{regular}{scit}{
+ <-> alias * LibertinusSans-OsF/m/scit
+}{}
+
\DeclareFontShape{LGR}{LibertinusSans-OsF}{m}{sc}{
<-> \LibertinusSans@@scale LibertinusSans-Regular-osf-sc-lgr
}{}
@@ -71,79 +90,12 @@
}{}
-% ---- b = bold ----
-
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-osf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{bold}{scsl}{
- <-> alias * LibertinusSans-OsF/b/scsl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-osf-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{bold}{sl}{
- <-> alias * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{bold}{n}{
- <-> alias * LibertinusSans-OsF/b/n
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{bold}{sc}{
- <-> alias * LibertinusSans-OsF/b/sc
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{b}{it}{
- <-> ssub * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{bold}{it}{
- <-> ssub * LibertinusSans-OsF/bold/sl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{b}{scit}{
- <-> ssub * LibertinusSans-OsF/b/scsl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{bold}{scit}{
- <-> ssub * LibertinusSans-OsF/bold/scsl
-}{}
-
-
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{bx}{it}{
- <-> ssub * LibertinusSans-OsF/b/it
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{bx}{scsl}{
- <-> ssub * LibertinusSans-OsF/b/scsl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{bx}{scit}{
- <-> ssub * LibertinusSans-OsF/b/scit
-}{}
-
\DeclareFontShape{LGR}{LibertinusSans-OsF}{bx}{sc}{
<-> ssub * LibertinusSans-OsF/b/sc
}{}
-\DeclareFontShape{LGR}{LibertinusSans-OsF}{bx}{sl}{
- <-> ssub * LibertinusSans-OsF/b/sl
-}{}
-
\DeclareFontShape{LGR}{LibertinusSans-OsF}{bx}{n}{
<-> ssub * LibertinusSans-OsF/b/n
}{}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-Sup.fd
index 063022ae8fd..c9dfe420b77 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-Sup.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LGRLibertinusSans-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for LGR/LibertinusSans-Sup.]
+ [2024/09/22 (autoinst) Font definitions for LGR/LibertinusSans-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -57,35 +57,11 @@
<-> alias * LibertinusSans-Sup/b/n
}{}
-\DeclareFontShape{LGR}{LibertinusSans-Sup}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-sup-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-Sup}{bold}{sl}{
- <-> alias * LibertinusSans-Sup/b/sl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-Sup}{b}{it}{
- <-> ssub * LibertinusSans-Sup/b/sl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-Sup}{bold}{it}{
- <-> ssub * LibertinusSans-Sup/bold/sl
-}{}
-
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{LGR}{LibertinusSans-Sup}{bx}{sl}{
- <-> ssub * LibertinusSans-Sup/b/sl
-}{}
-
\DeclareFontShape{LGR}{LibertinusSans-Sup}{bx}{n}{
<-> ssub * LibertinusSans-Sup/b/n
}{}
-\DeclareFontShape{LGR}{LibertinusSans-Sup}{bx}{it}{
- <-> ssub * LibertinusSans-Sup/b/it
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-TLF.fd
index 0f54bc2d48e..328f60b7bed 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LGRLibertinusSans-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for LGR/LibertinusSans-TLF.]
+ [2024/09/22 (autoinst) Font definitions for LGR/LibertinusSans-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,16 +20,27 @@
\DeclareFontFamily{LGR}{LibertinusSans-TLF}{}
-% ---- m = regular ----
+% ---- b = bold ----
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{m}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-tlf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSans-TLF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{regular}{sc}{
- <-> alias * LibertinusSans-TLF/m/sc
+\DeclareFontShape{LGR}{LibertinusSans-TLF}{bold}{sc}{
+ <-> alias * LibertinusSans-TLF/b/sc
}{}
+\DeclareFontShape{LGR}{LibertinusSans-TLF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-lgr
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSans-TLF}{bold}{n}{
+ <-> alias * LibertinusSans-TLF/b/n
+}{}
+
+
+% ---- m = regular ----
+
\DeclareFontShape{LGR}{LibertinusSans-TLF}{m}{n}{
<-> \LibertinusSans@@scale LibertinusSans-Regular-tlf-lgr
}{}
@@ -38,12 +49,12 @@
<-> alias * LibertinusSans-TLF/m/n
}{}
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-tlf-lgr
+\DeclareFontShape{LGR}{LibertinusSans-TLF}{m}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{regular}{it}{
- <-> alias * LibertinusSans-TLF/m/it
+\DeclareFontShape{LGR}{LibertinusSans-TLF}{regular}{sc}{
+ <-> alias * LibertinusSans-TLF/m/sc
}{}
\DeclareFontShape{LGR}{LibertinusSans-TLF}{m}{scit}{
@@ -54,6 +65,14 @@
<-> alias * LibertinusSans-TLF/m/scit
}{}
+\DeclareFontShape{LGR}{LibertinusSans-TLF}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-tlf-lgr
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSans-TLF}{regular}{it}{
+ <-> alias * LibertinusSans-TLF/m/it
+}{}
+
\DeclareFontShape{LGR}{LibertinusSans-TLF}{m}{scsl}{
<-> ssub * LibertinusSans-TLF/m/scit
}{}
@@ -71,81 +90,14 @@
}{}
-% ---- b = bold ----
-
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tlf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{bold}{scsl}{
- <-> alias * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tlf-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{bold}{sl}{
- <-> alias * LibertinusSans-TLF/b/sl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{bold}{n}{
- <-> alias * LibertinusSans-TLF/b/n
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{bold}{sc}{
- <-> alias * LibertinusSans-TLF/b/sc
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{b}{it}{
- <-> ssub * LibertinusSans-TLF/b/sl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{bold}{it}{
- <-> ssub * LibertinusSans-TLF/bold/sl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{b}{scit}{
- <-> ssub * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{bold}{scit}{
- <-> ssub * LibertinusSans-TLF/bold/scsl
-}{}
-
-
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{bx}{sl}{
- <-> ssub * LibertinusSans-TLF/b/sl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{bx}{sc}{
- <-> ssub * LibertinusSans-TLF/b/sc
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{bx}{scit}{
- <-> ssub * LibertinusSans-TLF/b/scit
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{bx}{it}{
- <-> ssub * LibertinusSans-TLF/b/it
-}{}
-
\DeclareFontShape{LGR}{LibertinusSans-TLF}{bx}{n}{
<-> ssub * LibertinusSans-TLF/b/n
}{}
-\DeclareFontShape{LGR}{LibertinusSans-TLF}{bx}{scsl}{
- <-> ssub * LibertinusSans-TLF/b/scsl
+\DeclareFontShape{LGR}{LibertinusSans-TLF}{bx}{sc}{
+ <-> ssub * LibertinusSans-TLF/b/sc
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-TOsF.fd
index 2011188e636..08cf3a25659 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSans-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LGRLibertinusSans-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for LGR/LibertinusSans-TOsF.]
+ [2024/09/22 (autoinst) Font definitions for LGR/LibertinusSans-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,67 +20,8 @@
\DeclareFontFamily{LGR}{LibertinusSans-TOsF}{}
-% ---- b = bold ----
-
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tosf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{bold}{scsl}{
- <-> alias * LibertinusSans-TOsF/b/scsl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{bold}{n}{
- <-> alias * LibertinusSans-TOsF/b/n
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tosf-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{bold}{sl}{
- <-> alias * LibertinusSans-TOsF/b/sl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{bold}{sc}{
- <-> alias * LibertinusSans-TOsF/b/sc
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{b}{it}{
- <-> ssub * LibertinusSans-TOsF/b/sl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{bold}{it}{
- <-> ssub * LibertinusSans-TOsF/bold/sl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{b}{scit}{
- <-> ssub * LibertinusSans-TOsF/b/scsl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{bold}{scit}{
- <-> ssub * LibertinusSans-TOsF/bold/scsl
-}{}
-
-
% ---- m = regular ----
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{m}{scit}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-tosf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{regular}{scit}{
- <-> alias * LibertinusSans-TOsF/m/scit
-}{}
-
\DeclareFontShape{LGR}{LibertinusSans-TOsF}{m}{it}{
<-> \LibertinusSans@@scale LibertinusSans-Italic-tosf-lgr
}{}
@@ -105,6 +46,14 @@
<-> alias * LibertinusSans-TOsF/m/sc
}{}
+\DeclareFontShape{LGR}{LibertinusSans-TOsF}{m}{scit}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-tosf-sc-lgr
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSans-TOsF}{regular}{scit}{
+ <-> alias * LibertinusSans-TOsF/m/scit
+}{}
+
\DeclareFontShape{LGR}{LibertinusSans-TOsF}{m}{scsl}{
<-> ssub * LibertinusSans-TOsF/m/scit
}{}
@@ -122,20 +71,27 @@
}{}
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+% ---- b = bold ----
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{bx}{scsl}{
- <-> ssub * LibertinusSans-TOsF/b/scsl
+\DeclareFontShape{LGR}{LibertinusSans-TOsF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{bx}{it}{
- <-> ssub * LibertinusSans-TOsF/b/it
+\DeclareFontShape{LGR}{LibertinusSans-TOsF}{bold}{n}{
+ <-> alias * LibertinusSans-TOsF/b/n
}{}
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{bx}{scit}{
- <-> ssub * LibertinusSans-TOsF/b/scit
+\DeclareFontShape{LGR}{LibertinusSans-TOsF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-sc-lgr
}{}
+\DeclareFontShape{LGR}{LibertinusSans-TOsF}{bold}{sc}{
+ <-> alias * LibertinusSans-TOsF/b/sc
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
\DeclareFontShape{LGR}{LibertinusSans-TOsF}{bx}{sc}{
<-> ssub * LibertinusSans-TOsF/b/sc
}{}
@@ -144,8 +100,4 @@
<-> ssub * LibertinusSans-TOsF/b/n
}{}
-\DeclareFontShape{LGR}{LibertinusSans-TOsF}{bx}{sl}{
- <-> ssub * LibertinusSans-TOsF/b/sl
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-LF.fd
index 27328a567a1..97047a6ad16 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LGRLibertinusSerif-LF.fd}
- [2022/11/07 (autoinst) Font definitions for LGR/LibertinusSerif-LF.]
+ [2024/09/22 (autoinst) Font definitions for LGR/LibertinusSerif-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -30,12 +30,12 @@
<-> alias * LibertinusSerif-LF/b/sc
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{bold}{it}{
- <-> alias * LibertinusSerif-LF/b/it
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{bold}{scit}{
+ <-> alias * LibertinusSerif-LF/b/scit
}{}
\DeclareFontShape{LGR}{LibertinusSerif-LF}{b}{n}{
@@ -46,20 +46,12 @@
<-> alias * LibertinusSerif-LF/b/n
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{bold}{scit}{
- <-> alias * LibertinusSerif-LF/b/scit
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{b}{sl}{
- <-> ssub * LibertinusSerif-LF/b/it
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{bold}{sl}{
- <-> ssub * LibertinusSerif-LF/bold/it
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{bold}{it}{
+ <-> alias * LibertinusSerif-LF/b/it
}{}
\DeclareFontShape{LGR}{LibertinusSerif-LF}{b}{scsl}{
@@ -70,106 +62,114 @@
<-> ssub * LibertinusSerif-LF/bold/scit
}{}
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{b}{sl}{
+ <-> ssub * LibertinusSerif-LF/b/it
+}{}
-% ---- m = regular ----
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-LF/bold/it
+}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-sc-lgr
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{regular}{sc}{
- <-> alias * LibertinusSerif-LF/m/sc
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{semibold}{it}{
+ <-> alias * LibertinusSerif-LF/sb/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{regular}{it}{
- <-> alias * LibertinusSerif-LF/m/it
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{semibold}{n}{
+ <-> alias * LibertinusSerif-LF/sb/n
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{regular}{scit}{
- <-> alias * LibertinusSerif-LF/m/scit
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-LF/sb/sc
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{regular}{n}{
- <-> alias * LibertinusSerif-LF/m/n
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-LF/sb/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{m}{sl}{
- <-> ssub * LibertinusSerif-LF/m/it
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-LF/sb/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{regular}{sl}{
- <-> ssub * LibertinusSerif-LF/regular/it
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-LF/semibold/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{m}{scsl}{
- <-> ssub * LibertinusSerif-LF/m/scit
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-LF/sb/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-LF/regular/scit
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-LF/semibold/it
}{}
-% ---- sb = semibold ----
+% ---- m = regular ----
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{semibold}{sc}{
- <-> alias * LibertinusSerif-LF/sb/sc
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{regular}{sc}{
+ <-> alias * LibertinusSerif-LF/m/sc
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{semibold}{it}{
- <-> alias * LibertinusSerif-LF/sb/it
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{regular}{scit}{
+ <-> alias * LibertinusSerif-LF/m/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{semibold}{n}{
- <-> alias * LibertinusSerif-LF/sb/n
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{regular}{n}{
+ <-> alias * LibertinusSerif-LF/m/n
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{semibold}{scit}{
- <-> alias * LibertinusSerif-LF/sb/scit
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{regular}{it}{
+ <-> alias * LibertinusSerif-LF/m/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{sb}{sl}{
- <-> ssub * LibertinusSerif-LF/sb/it
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-LF/m/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-LF/semibold/it
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-LF/regular/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-LF/sb/scit
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{m}{sl}{
+ <-> ssub * LibertinusSerif-LF/m/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-LF/semibold/scit
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-LF/regular/it
}{}
@@ -183,6 +183,10 @@
<-> ssub * LibertinusSerif-LF/b/scit
}{}
+\DeclareFontShape{LGR}{LibertinusSerif-LF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-LF/b/scsl
+}{}
+
\DeclareFontShape{LGR}{LibertinusSerif-LF}{bx}{it}{
<-> ssub * LibertinusSerif-LF/b/it
}{}
@@ -195,8 +199,4 @@
<-> ssub * LibertinusSerif-LF/b/sl
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-LF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-LF/b/scsl
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-OsF.fd
index 81f0108e13a..886ed1c7daf 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LGRLibertinusSerif-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for LGR/LibertinusSerif-OsF.]
+ [2024/09/22 (autoinst) Font definitions for LGR/LibertinusSerif-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,118 +20,110 @@
\DeclareFontFamily{LGR}{LibertinusSerif-OsF}{}
-% ---- b = bold ----
+% ---- m = regular ----
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bold}{sc}{
- <-> alias * LibertinusSerif-OsF/b/sc
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{regular}{it}{
+ <-> alias * LibertinusSerif-OsF/m/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bold}{it}{
- <-> alias * LibertinusSerif-OsF/b/it
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{regular}{n}{
+ <-> alias * LibertinusSerif-OsF/m/n
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bold}{scit}{
- <-> alias * LibertinusSerif-OsF/b/scit
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{regular}{sc}{
+ <-> alias * LibertinusSerif-OsF/m/sc
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bold}{n}{
- <-> alias * LibertinusSerif-OsF/b/n
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{regular}{scit}{
+ <-> alias * LibertinusSerif-OsF/m/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{b}{sl}{
- <-> ssub * LibertinusSerif-OsF/b/it
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/m/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bold}{sl}{
- <-> ssub * LibertinusSerif-OsF/bold/it
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/regular/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{b}{scsl}{
- <-> ssub * LibertinusSerif-OsF/b/scit
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{m}{sl}{
+ <-> ssub * LibertinusSerif-OsF/m/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bold}{scsl}{
- <-> ssub * LibertinusSerif-OsF/bold/scit
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-OsF/regular/it
}{}
-% ---- m = regular ----
+% ---- b = bold ----
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{regular}{it}{
- <-> alias * LibertinusSerif-OsF/m/it
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bold}{sc}{
+ <-> alias * LibertinusSerif-OsF/b/sc
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{regular}{n}{
- <-> alias * LibertinusSerif-OsF/m/n
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bold}{scit}{
+ <-> alias * LibertinusSerif-OsF/b/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{regular}{scit}{
- <-> alias * LibertinusSerif-OsF/m/scit
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bold}{n}{
+ <-> alias * LibertinusSerif-OsF/b/n
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{regular}{sc}{
- <-> alias * LibertinusSerif-OsF/m/sc
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bold}{it}{
+ <-> alias * LibertinusSerif-OsF/b/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{m}{sl}{
- <-> ssub * LibertinusSerif-OsF/m/it
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{b}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/b/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{regular}{sl}{
- <-> ssub * LibertinusSerif-OsF/regular/it
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bold}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/bold/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{m}{scsl}{
- <-> ssub * LibertinusSerif-OsF/m/scit
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{b}{sl}{
+ <-> ssub * LibertinusSerif-OsF/b/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-OsF/regular/scit
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-OsF/bold/it
}{}
% ---- sb = semibold ----
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{semibold}{n}{
- <-> alias * LibertinusSerif-OsF/sb/n
-}{}
-
\DeclareFontShape{LGR}{LibertinusSerif-OsF}{sb}{scit}{
<-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-sc-lgr
}{}
@@ -140,14 +132,6 @@
<-> alias * LibertinusSerif-OsF/sb/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{semibold}{it}{
- <-> alias * LibertinusSerif-OsF/sb/it
-}{}
-
\DeclareFontShape{LGR}{LibertinusSerif-OsF}{sb}{sc}{
<-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-sc-lgr
}{}
@@ -156,12 +140,20 @@
<-> alias * LibertinusSerif-OsF/sb/sc
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{sb}{sl}{
- <-> ssub * LibertinusSerif-OsF/sb/it
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-OsF/semibold/it
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{semibold}{n}{
+ <-> alias * LibertinusSerif-OsF/sb/n
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-lgr
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{semibold}{it}{
+ <-> alias * LibertinusSerif-OsF/sb/it
}{}
\DeclareFontShape{LGR}{LibertinusSerif-OsF}{sb}{scsl}{
@@ -172,15 +164,23 @@
<-> ssub * LibertinusSerif-OsF/semibold/scit
}{}
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-OsF/sb/it
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-OsF/semibold/it
+}{}
+
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bx}{sc}{
- <-> ssub * LibertinusSerif-OsF/b/sc
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bx}{n}{
+ <-> ssub * LibertinusSerif-OsF/b/n
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bx}{sl}{
- <-> ssub * LibertinusSerif-OsF/b/sl
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bx}{scit}{
+ <-> ssub * LibertinusSerif-OsF/b/scit
}{}
\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bx}{scsl}{
@@ -191,12 +191,12 @@
<-> ssub * LibertinusSerif-OsF/b/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bx}{n}{
- <-> ssub * LibertinusSerif-OsF/b/n
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bx}{sl}{
+ <-> ssub * LibertinusSerif-OsF/b/sl
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bx}{scit}{
- <-> ssub * LibertinusSerif-OsF/b/scit
+\DeclareFontShape{LGR}{LibertinusSerif-OsF}{bx}{sc}{
+ <-> ssub * LibertinusSerif-OsF/b/sc
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-Sup.fd
index ae77f5926b5..ed955074ee8 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-Sup.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LGRLibertinusSerif-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for LGR/LibertinusSerif-Sup.]
+ [2024/09/22 (autoinst) Font definitions for LGR/LibertinusSerif-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,14 +22,6 @@
% ---- b = bold ----
-\DeclareFontShape{LGR}{LibertinusSerif-Sup}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-sup-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSerif-Sup}{bold}{it}{
- <-> alias * LibertinusSerif-Sup/b/it
-}{}
-
\DeclareFontShape{LGR}{LibertinusSerif-Sup}{b}{n}{
<-> \LibertinusSerif@@scale LibertinusSerif-Bold-sup-lgr
}{}
@@ -38,6 +30,14 @@
<-> alias * LibertinusSerif-Sup/b/n
}{}
+\DeclareFontShape{LGR}{LibertinusSerif-Sup}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-sup-lgr
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSerif-Sup}{bold}{it}{
+ <-> alias * LibertinusSerif-Sup/b/it
+}{}
+
\DeclareFontShape{LGR}{LibertinusSerif-Sup}{b}{sl}{
<-> ssub * LibertinusSerif-Sup/b/it
}{}
@@ -47,72 +47,72 @@
}{}
-% ---- m = regular ----
+% ---- sb = semibold ----
-\DeclareFontShape{LGR}{LibertinusSerif-Sup}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-sup-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-Sup}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-sup-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-Sup}{regular}{n}{
- <-> alias * LibertinusSerif-Sup/m/n
+\DeclareFontShape{LGR}{LibertinusSerif-Sup}{semibold}{it}{
+ <-> alias * LibertinusSerif-Sup/sb/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-Sup}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-sup-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-Sup}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-sup-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-Sup}{regular}{it}{
- <-> alias * LibertinusSerif-Sup/m/it
+\DeclareFontShape{LGR}{LibertinusSerif-Sup}{semibold}{n}{
+ <-> alias * LibertinusSerif-Sup/sb/n
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-Sup}{m}{sl}{
- <-> ssub * LibertinusSerif-Sup/m/it
+\DeclareFontShape{LGR}{LibertinusSerif-Sup}{sb}{sl}{
+ <-> ssub * LibertinusSerif-Sup/sb/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-Sup}{regular}{sl}{
- <-> ssub * LibertinusSerif-Sup/regular/it
+\DeclareFontShape{LGR}{LibertinusSerif-Sup}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-Sup/semibold/it
}{}
-% ---- sb = semibold ----
+% ---- m = regular ----
-\DeclareFontShape{LGR}{LibertinusSerif-Sup}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-sup-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-Sup}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-sup-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-Sup}{semibold}{n}{
- <-> alias * LibertinusSerif-Sup/sb/n
+\DeclareFontShape{LGR}{LibertinusSerif-Sup}{regular}{n}{
+ <-> alias * LibertinusSerif-Sup/m/n
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-Sup}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-sup-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-Sup}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-sup-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-Sup}{semibold}{it}{
- <-> alias * LibertinusSerif-Sup/sb/it
+\DeclareFontShape{LGR}{LibertinusSerif-Sup}{regular}{it}{
+ <-> alias * LibertinusSerif-Sup/m/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-Sup}{sb}{sl}{
- <-> ssub * LibertinusSerif-Sup/sb/it
+\DeclareFontShape{LGR}{LibertinusSerif-Sup}{m}{sl}{
+ <-> ssub * LibertinusSerif-Sup/m/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-Sup}{semibold}{sl}{
- <-> ssub * LibertinusSerif-Sup/semibold/it
+\DeclareFontShape{LGR}{LibertinusSerif-Sup}{regular}{sl}{
+ <-> ssub * LibertinusSerif-Sup/regular/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{LGR}{LibertinusSerif-Sup}{bx}{it}{
- <-> ssub * LibertinusSerif-Sup/b/it
+\DeclareFontShape{LGR}{LibertinusSerif-Sup}{bx}{sl}{
+ <-> ssub * LibertinusSerif-Sup/b/sl
}{}
\DeclareFontShape{LGR}{LibertinusSerif-Sup}{bx}{n}{
<-> ssub * LibertinusSerif-Sup/b/n
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-Sup}{bx}{sl}{
- <-> ssub * LibertinusSerif-Sup/b/sl
+\DeclareFontShape{LGR}{LibertinusSerif-Sup}{bx}{it}{
+ <-> ssub * LibertinusSerif-Sup/b/it
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-TLF.fd
index 1f51644fe32..1bfe8c9f53a 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LGRLibertinusSerif-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for LGR/LibertinusSerif-TLF.]
+ [2024/09/22 (autoinst) Font definitions for LGR/LibertinusSerif-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,118 +20,110 @@
\DeclareFontFamily{LGR}{LibertinusSerif-TLF}{}
-% ---- sb = semibold ----
+% ---- m = regular ----
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{semibold}{n}{
- <-> alias * LibertinusSerif-TLF/sb/n
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{regular}{scit}{
+ <-> alias * LibertinusSerif-TLF/m/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{semibold}{scit}{
- <-> alias * LibertinusSerif-TLF/sb/scit
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{regular}{sc}{
+ <-> alias * LibertinusSerif-TLF/m/sc
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{semibold}{it}{
- <-> alias * LibertinusSerif-TLF/sb/it
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{regular}{n}{
+ <-> alias * LibertinusSerif-TLF/m/n
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{semibold}{sc}{
- <-> alias * LibertinusSerif-TLF/sb/sc
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{regular}{it}{
+ <-> alias * LibertinusSerif-TLF/m/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{sb}{sl}{
- <-> ssub * LibertinusSerif-TLF/sb/it
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/m/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-TLF/semibold/it
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/regular/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-TLF/sb/scit
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{m}{sl}{
+ <-> ssub * LibertinusSerif-TLF/m/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-TLF/semibold/scit
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-TLF/regular/it
}{}
-% ---- m = regular ----
+% ---- sb = semibold ----
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{regular}{sc}{
- <-> alias * LibertinusSerif-TLF/m/sc
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-TLF/sb/sc
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{regular}{it}{
- <-> alias * LibertinusSerif-TLF/m/it
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-TLF/sb/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{regular}{n}{
- <-> alias * LibertinusSerif-TLF/m/n
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{semibold}{n}{
+ <-> alias * LibertinusSerif-TLF/sb/n
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{regular}{scit}{
- <-> alias * LibertinusSerif-TLF/m/scit
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{semibold}{it}{
+ <-> alias * LibertinusSerif-TLF/sb/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{m}{sl}{
- <-> ssub * LibertinusSerif-TLF/m/it
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/sb/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{regular}{sl}{
- <-> ssub * LibertinusSerif-TLF/regular/it
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/semibold/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{m}{scsl}{
- <-> ssub * LibertinusSerif-TLF/m/scit
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-TLF/sb/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-TLF/regular/scit
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-TLF/semibold/it
}{}
% ---- b = bold ----
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{bold}{sc}{
- <-> alias * LibertinusSerif-TLF/b/sc
-}{}
-
\DeclareFontShape{LGR}{LibertinusSerif-TLF}{b}{it}{
<-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tlf-lgr
}{}
@@ -140,14 +132,6 @@
<-> alias * LibertinusSerif-TLF/b/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{bold}{n}{
- <-> alias * LibertinusSerif-TLF/b/n
-}{}
-
\DeclareFontShape{LGR}{LibertinusSerif-TLF}{b}{scit}{
<-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tlf-sc-lgr
}{}
@@ -156,12 +140,20 @@
<-> alias * LibertinusSerif-TLF/b/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{b}{sl}{
- <-> ssub * LibertinusSerif-TLF/b/it
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{bold}{sl}{
- <-> ssub * LibertinusSerif-TLF/bold/it
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{bold}{sc}{
+ <-> alias * LibertinusSerif-TLF/b/sc
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-lgr
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{bold}{n}{
+ <-> alias * LibertinusSerif-TLF/b/n
}{}
\DeclareFontShape{LGR}{LibertinusSerif-TLF}{b}{scsl}{
@@ -172,6 +164,14 @@
<-> ssub * LibertinusSerif-TLF/bold/scit
}{}
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{b}{sl}{
+ <-> ssub * LibertinusSerif-TLF/b/it
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-TLF/bold/it
+}{}
+
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
@@ -183,20 +183,20 @@
<-> ssub * LibertinusSerif-TLF/b/sl
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-TLF/b/scsl
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{bx}{it}{
- <-> ssub * LibertinusSerif-TLF/b/it
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{bx}{scit}{
+ <-> ssub * LibertinusSerif-TLF/b/scit
}{}
\DeclareFontShape{LGR}{LibertinusSerif-TLF}{bx}{n}{
<-> ssub * LibertinusSerif-TLF/b/n
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TLF}{bx}{scit}{
- <-> ssub * LibertinusSerif-TLF/b/scit
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{bx}{it}{
+ <-> ssub * LibertinusSerif-TLF/b/it
+}{}
+
+\DeclareFontShape{LGR}{LibertinusSerif-TLF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/b/scsl
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-TOsF.fd
index 2989dba1eeb..3a60f6c7109 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerif-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LGRLibertinusSerif-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for LGR/LibertinusSerif-TOsF.]
+ [2024/09/22 (autoinst) Font definitions for LGR/LibertinusSerif-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,20 +22,20 @@
% ---- b = bold ----
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bold}{sc}{
- <-> alias * LibertinusSerif-TOsF/b/sc
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bold}{scit}{
+ <-> alias * LibertinusSerif-TOsF/b/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bold}{it}{
- <-> alias * LibertinusSerif-TOsF/b/it
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bold}{sc}{
+ <-> alias * LibertinusSerif-TOsF/b/sc
}{}
\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{b}{n}{
@@ -46,20 +46,12 @@
<-> alias * LibertinusSerif-TOsF/b/n
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bold}{scit}{
- <-> alias * LibertinusSerif-TOsF/b/scit
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{b}{sl}{
- <-> ssub * LibertinusSerif-TOsF/b/it
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bold}{sl}{
- <-> ssub * LibertinusSerif-TOsF/bold/it
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bold}{it}{
+ <-> alias * LibertinusSerif-TOsF/b/it
}{}
\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{b}{scsl}{
@@ -70,133 +62,141 @@
<-> ssub * LibertinusSerif-TOsF/bold/scit
}{}
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{b}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/b/it
+}{}
-% ---- m = regular ----
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/bold/it
+}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-lgr
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{regular}{it}{
- <-> alias * LibertinusSerif-TOsF/m/it
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-TOsF/sb/sc
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{regular}{scit}{
- <-> alias * LibertinusSerif-TOsF/m/scit
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-TOsF/sb/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{regular}{n}{
- <-> alias * LibertinusSerif-TOsF/m/n
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{semibold}{n}{
+ <-> alias * LibertinusSerif-TOsF/sb/n
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{regular}{sc}{
- <-> alias * LibertinusSerif-TOsF/m/sc
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{semibold}{it}{
+ <-> alias * LibertinusSerif-TOsF/sb/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{m}{sl}{
- <-> ssub * LibertinusSerif-TOsF/m/it
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/sb/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{regular}{sl}{
- <-> ssub * LibertinusSerif-TOsF/regular/it
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/semibold/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{m}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/m/scit
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/sb/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/regular/scit
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/semibold/it
}{}
-% ---- sb = semibold ----
+% ---- m = regular ----
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{semibold}{sc}{
- <-> alias * LibertinusSerif-TOsF/sb/sc
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{regular}{it}{
+ <-> alias * LibertinusSerif-TOsF/m/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{semibold}{n}{
- <-> alias * LibertinusSerif-TOsF/sb/n
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{regular}{n}{
+ <-> alias * LibertinusSerif-TOsF/m/n
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-sc-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{semibold}{scit}{
- <-> alias * LibertinusSerif-TOsF/sb/scit
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{regular}{sc}{
+ <-> alias * LibertinusSerif-TOsF/m/sc
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-lgr
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{semibold}{it}{
- <-> alias * LibertinusSerif-TOsF/sb/it
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{regular}{scit}{
+ <-> alias * LibertinusSerif-TOsF/m/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{sb}{sl}{
- <-> ssub * LibertinusSerif-TOsF/sb/it
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/m/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-TOsF/semibold/it
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/regular/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/sb/scit
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{m}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/m/it
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/semibold/scit
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/regular/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bx}{it}{
- <-> ssub * LibertinusSerif-TOsF/b/it
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/b/scsl
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bx}{scit}{
- <-> ssub * LibertinusSerif-TOsF/b/scit
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bx}{it}{
+ <-> ssub * LibertinusSerif-TOsF/b/it
}{}
\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bx}{n}{
<-> ssub * LibertinusSerif-TOsF/b/n
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/b/scsl
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bx}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/b/sl
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bx}{sc}{
- <-> ssub * LibertinusSerif-TOsF/b/sc
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bx}{scit}{
+ <-> ssub * LibertinusSerif-TOsF/b/scit
}{}
-\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bx}{sl}{
- <-> ssub * LibertinusSerif-TOsF/b/sl
+\DeclareFontShape{LGR}{LibertinusSerif-TOsF}{bx}{sc}{
+ <-> ssub * LibertinusSerif-TOsF/b/sc
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-LF.fd
deleted file mode 100644
index 6aba524166c..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-LF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{LGRLibertinusSerifDisplay-LF.fd}
- [2022/11/07 (autoinst) Font definitions for LGR/LibertinusSerifDisplay-LF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LGR}{LibertinusSerifDisplay-LF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{LGR}{LibertinusSerifDisplay-LF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-lf-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSerifDisplay-LF}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-LF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-OsF.fd
deleted file mode 100644
index c28fadb8c52..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-OsF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{LGRLibertinusSerifDisplay-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for LGR/LibertinusSerifDisplay-OsF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LGR}{LibertinusSerifDisplay-OsF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{LGR}{LibertinusSerifDisplay-OsF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-osf-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSerifDisplay-OsF}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-OsF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-Sup.fd
deleted file mode 100644
index 4ca7f39724f..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-Sup.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{LGRLibertinusSerifDisplay-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for LGR/LibertinusSerifDisplay-Sup.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LGR}{LibertinusSerifDisplay-Sup}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{LGR}{LibertinusSerifDisplay-Sup}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-sup-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSerifDisplay-Sup}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-Sup/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-TLF.fd
deleted file mode 100644
index a31baf6fba5..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-TLF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{LGRLibertinusSerifDisplay-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for LGR/LibertinusSerifDisplay-TLF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LGR}{LibertinusSerifDisplay-TLF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{LGR}{LibertinusSerifDisplay-TLF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-tlf-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSerifDisplay-TLF}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-TLF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-TOsF.fd
deleted file mode 100644
index d19f1c2f758..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifDisplay-TOsF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{LGRLibertinusSerifDisplay-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for LGR/LibertinusSerifDisplay-TOsF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LGR}{LibertinusSerifDisplay-TOsF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{LGR}{LibertinusSerifDisplay-TOsF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-tosf-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSerifDisplay-TOsF}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-TOsF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifInitials-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifInitials-TLF.fd
deleted file mode 100644
index 2c8271fddec..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LGRLibertinusSerifInitials-TLF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{LGRLibertinusSerifInitials-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for LGR/LibertinusSerifInitials-TLF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifInitials@scale\endcsname\relax
- \let\LibertinusSerifInitials@@scale\@empty
-\else
- \edef\LibertinusSerifInitials@@scale{s*[\csname LibertinusSerifInitials@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LGR}{LibertinusSerifInitials-TLF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{LGR}{LibertinusSerifInitials-TLF}{m}{n}{
- <-> \LibertinusSerifInitials@@scale LibertinusSerifInitials-Regular-tlf-lgr
-}{}
-
-\DeclareFontShape{LGR}{LibertinusSerifInitials-TLF}{regular}{n}{
- <-> alias * LibertinusSerifInitials-TLF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusMono-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusMono-TLF.fd
index b0a34cd620b..f83d384b3e0 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusMono-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusMono-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/11
%%
\ProvidesFile{LY1LibertinusMono-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusMono-TLF.]
+ [2025/01/11 (autoinst) Font definitions for LY1/LibertinusMono-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,6 +22,14 @@
% ---- m = regular ----
+\DeclareFontShape{LY1}{LibertinusMono-TLF}{m}{it}{
+ <-> \LibertinusMono@@scale LibertinusMono-Italic-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{LibertinusMono-TLF}{regular}{it}{
+ <-> alias * LibertinusMono-TLF/m/it
+}{}
+
\DeclareFontShape{LY1}{LibertinusMono-TLF}{m}{n}{
<-> \LibertinusMono@@scale LibertinusMono-Regular-tlf-ly1
}{}
@@ -31,19 +39,11 @@
}{}
\DeclareFontShape{LY1}{LibertinusMono-TLF}{m}{sl}{
- <-> \LibertinusMono@@scale LibertinusMono-Oblique-tlf-ly1
+ <-> ssub * LibertinusMono-TLF/m/it
}{}
\DeclareFontShape{LY1}{LibertinusMono-TLF}{regular}{sl}{
- <-> alias * LibertinusMono-TLF/m/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusMono-TLF}{m}{it}{
- <-> ssub * LibertinusMono-TLF/m/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusMono-TLF}{regular}{it}{
- <-> ssub * LibertinusMono-TLF/regular/sl
+ <-> ssub * LibertinusMono-TLF/regular/it
}{}
@@ -57,25 +57,29 @@
<-> alias * LibertinusMono-TLF/b/n
}{}
-\DeclareFontShape{LY1}{LibertinusMono-TLF}{b}{sl}{
- <-> \LibertinusMono@@scale LibertinusMono-BoldOblique-tlf-ly1
+\DeclareFontShape{LY1}{LibertinusMono-TLF}{b}{it}{
+ <-> \LibertinusMono@@scale LibertinusMono-BoldItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusMono-TLF}{bold}{sl}{
- <-> alias * LibertinusMono-TLF/b/sl
+\DeclareFontShape{LY1}{LibertinusMono-TLF}{bold}{it}{
+ <-> alias * LibertinusMono-TLF/b/it
}{}
-\DeclareFontShape{LY1}{LibertinusMono-TLF}{b}{it}{
- <-> ssub * LibertinusMono-TLF/b/sl
+\DeclareFontShape{LY1}{LibertinusMono-TLF}{b}{sl}{
+ <-> ssub * LibertinusMono-TLF/b/it
}{}
-\DeclareFontShape{LY1}{LibertinusMono-TLF}{bold}{it}{
- <-> ssub * LibertinusMono-TLF/bold/sl
+\DeclareFontShape{LY1}{LibertinusMono-TLF}{bold}{sl}{
+ <-> ssub * LibertinusMono-TLF/bold/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+\DeclareFontShape{LY1}{LibertinusMono-TLF}{bx}{sl}{
+ <-> ssub * LibertinusMono-TLF/b/sl
+}{}
+
\DeclareFontShape{LY1}{LibertinusMono-TLF}{bx}{n}{
<-> ssub * LibertinusMono-TLF/b/n
}{}
@@ -84,8 +88,4 @@
<-> ssub * LibertinusMono-TLF/b/it
}{}
-\DeclareFontShape{LY1}{LibertinusMono-TLF}{bx}{sl}{
- <-> ssub * LibertinusMono-TLF/b/sl
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-LF.fd
index 8b6004a304b..b40fd45c6ef 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LY1LibertinusSans-LF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusSans-LF.]
+ [2024/09/22 (autoinst) Font definitions for LY1/LibertinusSans-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,22 +22,6 @@
% ---- b = bold ----
-\DeclareFontShape{LY1}{LibertinusSans-LF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-lf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-LF}{bold}{sl}{
- <-> alias * LibertinusSans-LF/b/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-LF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-LF}{bold}{n}{
- <-> alias * LibertinusSans-LF/b/n
-}{}
-
\DeclareFontShape{LY1}{LibertinusSans-LF}{b}{sc}{
<-> \LibertinusSans@@scale LibertinusSans-Bold-lf-sc-ly1
}{}
@@ -46,28 +30,12 @@
<-> alias * LibertinusSans-LF/b/sc
}{}
-\DeclareFontShape{LY1}{LibertinusSans-LF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-lf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-LF}{bold}{scsl}{
- <-> alias * LibertinusSans-LF/b/scsl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-LF}{b}{it}{
- <-> ssub * LibertinusSans-LF/b/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-LF}{bold}{it}{
- <-> ssub * LibertinusSans-LF/bold/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-LF}{b}{scit}{
- <-> ssub * LibertinusSans-LF/b/scsl
+\DeclareFontShape{LY1}{LibertinusSans-LF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSans-LF}{bold}{scit}{
- <-> ssub * LibertinusSans-LF/bold/scsl
+\DeclareFontShape{LY1}{LibertinusSans-LF}{bold}{n}{
+ <-> alias * LibertinusSans-LF/b/n
}{}
@@ -81,12 +49,12 @@
<-> alias * LibertinusSans-LF/m/it
}{}
-\DeclareFontShape{LY1}{LibertinusSans-LF}{m}{scit}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-lf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSans-LF}{m}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-lf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSans-LF}{regular}{scit}{
- <-> alias * LibertinusSans-LF/m/scit
+\DeclareFontShape{LY1}{LibertinusSans-LF}{regular}{n}{
+ <-> alias * LibertinusSans-LF/m/n
}{}
\DeclareFontShape{LY1}{LibertinusSans-LF}{m}{sc}{
@@ -97,12 +65,12 @@
<-> alias * LibertinusSans-LF/m/sc
}{}
-\DeclareFontShape{LY1}{LibertinusSans-LF}{m}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-lf-ly1
+\DeclareFontShape{LY1}{LibertinusSans-LF}{m}{scit}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSans-LF}{regular}{n}{
- <-> alias * LibertinusSans-LF/m/n
+\DeclareFontShape{LY1}{LibertinusSans-LF}{regular}{scit}{
+ <-> alias * LibertinusSans-LF/m/scit
}{}
\DeclareFontShape{LY1}{LibertinusSans-LF}{m}{scsl}{
@@ -124,28 +92,12 @@
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{LY1}{LibertinusSans-LF}{bx}{sc}{
- <-> ssub * LibertinusSans-LF/b/sc
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-LF}{bx}{sl}{
- <-> ssub * LibertinusSans-LF/b/sl
-}{}
-
\DeclareFontShape{LY1}{LibertinusSans-LF}{bx}{n}{
<-> ssub * LibertinusSans-LF/b/n
}{}
-\DeclareFontShape{LY1}{LibertinusSans-LF}{bx}{scsl}{
- <-> ssub * LibertinusSans-LF/b/scsl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-LF}{bx}{it}{
- <-> ssub * LibertinusSans-LF/b/it
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-LF}{bx}{scit}{
- <-> ssub * LibertinusSans-LF/b/scit
+\DeclareFontShape{LY1}{LibertinusSans-LF}{bx}{sc}{
+ <-> ssub * LibertinusSans-LF/b/sc
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-OsF.fd
index db2abe49902..8da5ddb9b34 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LY1LibertinusSans-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusSans-OsF.]
+ [2024/09/22 (autoinst) Font definitions for LY1/LibertinusSans-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,6 +20,25 @@
\DeclareFontFamily{LY1}{LibertinusSans-OsF}{}
+% ---- b = bold ----
+
+\DeclareFontShape{LY1}{LibertinusSans-OsF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-ly1
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSans-OsF}{bold}{n}{
+ <-> alias * LibertinusSans-OsF/b/n
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSans-OsF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSans-OsF}{bold}{sc}{
+ <-> alias * LibertinusSans-OsF/b/sc
+}{}
+
+
% ---- m = regular ----
\DeclareFontShape{LY1}{LibertinusSans-OsF}{m}{it}{
@@ -30,14 +49,6 @@
<-> alias * LibertinusSans-OsF/m/it
}{}
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{m}{scit}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-osf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{regular}{scit}{
- <-> alias * LibertinusSans-OsF/m/scit
-}{}
-
\DeclareFontShape{LY1}{LibertinusSans-OsF}{m}{sc}{
<-> \LibertinusSans@@scale LibertinusSans-Regular-osf-sc-ly1
}{}
@@ -46,6 +57,14 @@
<-> alias * LibertinusSans-OsF/m/sc
}{}
+\DeclareFontShape{LY1}{LibertinusSans-OsF}{m}{scit}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-osf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSans-OsF}{regular}{scit}{
+ <-> alias * LibertinusSans-OsF/m/scit
+}{}
+
\DeclareFontShape{LY1}{LibertinusSans-OsF}{m}{n}{
<-> \LibertinusSans@@scale LibertinusSans-Regular-osf-ly1
}{}
@@ -71,81 +90,14 @@
}{}
-% ---- b = bold ----
-
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-osf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{bold}{scsl}{
- <-> alias * LibertinusSans-OsF/b/scsl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{bold}{sc}{
- <-> alias * LibertinusSans-OsF/b/sc
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{bold}{n}{
- <-> alias * LibertinusSans-OsF/b/n
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-osf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{bold}{sl}{
- <-> alias * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{b}{it}{
- <-> ssub * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{bold}{it}{
- <-> ssub * LibertinusSans-OsF/bold/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{b}{scit}{
- <-> ssub * LibertinusSans-OsF/b/scsl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{bold}{scit}{
- <-> ssub * LibertinusSans-OsF/bold/scsl
-}{}
-
-
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{bx}{sl}{
- <-> ssub * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{bx}{n}{
- <-> ssub * LibertinusSans-OsF/b/n
-}{}
-
\DeclareFontShape{LY1}{LibertinusSans-OsF}{bx}{sc}{
<-> ssub * LibertinusSans-OsF/b/sc
}{}
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{bx}{scit}{
- <-> ssub * LibertinusSans-OsF/b/scit
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{bx}{it}{
- <-> ssub * LibertinusSans-OsF/b/it
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-OsF}{bx}{scsl}{
- <-> ssub * LibertinusSans-OsF/b/scsl
+\DeclareFontShape{LY1}{LibertinusSans-OsF}{bx}{n}{
+ <-> ssub * LibertinusSans-OsF/b/n
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-Sup.fd
index faaa4225cb0..896ca2095ef 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-Sup.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LY1LibertinusSans-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusSans-Sup.]
+ [2024/09/22 (autoinst) Font definitions for LY1/LibertinusSans-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,14 +22,6 @@
% ---- m = regular ----
-\DeclareFontShape{LY1}{LibertinusSans-Sup}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-sup-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-Sup}{regular}{it}{
- <-> alias * LibertinusSans-Sup/m/it
-}{}
-
\DeclareFontShape{LY1}{LibertinusSans-Sup}{m}{n}{
<-> \LibertinusSans@@scale LibertinusSans-Regular-sup-ly1
}{}
@@ -38,6 +30,14 @@
<-> alias * LibertinusSans-Sup/m/n
}{}
+\DeclareFontShape{LY1}{LibertinusSans-Sup}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSans-Sup}{regular}{it}{
+ <-> alias * LibertinusSans-Sup/m/it
+}{}
+
\DeclareFontShape{LY1}{LibertinusSans-Sup}{m}{sl}{
<-> ssub * LibertinusSans-Sup/m/it
}{}
@@ -57,22 +57,6 @@
<-> alias * LibertinusSans-Sup/b/n
}{}
-\DeclareFontShape{LY1}{LibertinusSans-Sup}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-sup-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-Sup}{bold}{sl}{
- <-> alias * LibertinusSans-Sup/b/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-Sup}{b}{it}{
- <-> ssub * LibertinusSans-Sup/b/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-Sup}{bold}{it}{
- <-> ssub * LibertinusSans-Sup/bold/sl
-}{}
-
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
@@ -80,12 +64,4 @@
<-> ssub * LibertinusSans-Sup/b/n
}{}
-\DeclareFontShape{LY1}{LibertinusSans-Sup}{bx}{sl}{
- <-> ssub * LibertinusSans-Sup/b/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-Sup}{bx}{it}{
- <-> ssub * LibertinusSans-Sup/b/it
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-TLF.fd
index 001b5eb5d5b..0d32a54d929 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LY1LibertinusSans-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusSans-TLF.]
+ [2024/09/22 (autoinst) Font definitions for LY1/LibertinusSans-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,14 +22,6 @@
% ---- b = bold ----
-\DeclareFontShape{LY1}{LibertinusSans-TLF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tlf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TLF}{bold}{sl}{
- <-> alias * LibertinusSans-TLF/b/sl
-}{}
-
\DeclareFontShape{LY1}{LibertinusSans-TLF}{b}{n}{
<-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-ly1
}{}
@@ -46,41 +38,9 @@
<-> alias * LibertinusSans-TLF/b/sc
}{}
-\DeclareFontShape{LY1}{LibertinusSans-TLF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tlf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TLF}{bold}{scsl}{
- <-> alias * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TLF}{b}{it}{
- <-> ssub * LibertinusSans-TLF/b/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TLF}{bold}{it}{
- <-> ssub * LibertinusSans-TLF/bold/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TLF}{b}{scit}{
- <-> ssub * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TLF}{bold}{scit}{
- <-> ssub * LibertinusSans-TLF/bold/scsl
-}{}
-
% ---- m = regular ----
-\DeclareFontShape{LY1}{LibertinusSans-TLF}{m}{scit}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-tlf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TLF}{regular}{scit}{
- <-> alias * LibertinusSans-TLF/m/scit
-}{}
-
\DeclareFontShape{LY1}{LibertinusSans-TLF}{m}{it}{
<-> \LibertinusSans@@scale LibertinusSans-Italic-tlf-ly1
}{}
@@ -97,6 +57,14 @@
<-> alias * LibertinusSans-TLF/m/n
}{}
+\DeclareFontShape{LY1}{LibertinusSans-TLF}{m}{scit}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSans-TLF}{regular}{scit}{
+ <-> alias * LibertinusSans-TLF/m/scit
+}{}
+
\DeclareFontShape{LY1}{LibertinusSans-TLF}{m}{sc}{
<-> \LibertinusSans@@scale LibertinusSans-Regular-tlf-sc-ly1
}{}
@@ -124,28 +92,12 @@
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{LY1}{LibertinusSans-TLF}{bx}{n}{
- <-> ssub * LibertinusSans-TLF/b/n
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TLF}{bx}{sl}{
- <-> ssub * LibertinusSans-TLF/b/sl
-}{}
-
\DeclareFontShape{LY1}{LibertinusSans-TLF}{bx}{sc}{
<-> ssub * LibertinusSans-TLF/b/sc
}{}
-\DeclareFontShape{LY1}{LibertinusSans-TLF}{bx}{scit}{
- <-> ssub * LibertinusSans-TLF/b/scit
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TLF}{bx}{scsl}{
- <-> ssub * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TLF}{bx}{it}{
- <-> ssub * LibertinusSans-TLF/b/it
+\DeclareFontShape{LY1}{LibertinusSans-TLF}{bx}{n}{
+ <-> ssub * LibertinusSans-TLF/b/n
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-TOsF.fd
index 9c1ba02dc65..e6b2e7ee92c 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSans-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LY1LibertinusSans-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusSans-TOsF.]
+ [2024/09/22 (autoinst) Font definitions for LY1/LibertinusSans-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,22 +22,6 @@
% ---- b = bold ----
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{bold}{sc}{
- <-> alias * LibertinusSans-TOsF/b/sc
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tosf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{bold}{sl}{
- <-> alias * LibertinusSans-TOsF/b/sl
-}{}
-
\DeclareFontShape{LY1}{LibertinusSans-TOsF}{b}{n}{
<-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-ly1
}{}
@@ -46,39 +30,23 @@
<-> alias * LibertinusSans-TOsF/b/n
}{}
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tosf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{bold}{scsl}{
- <-> alias * LibertinusSans-TOsF/b/scsl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{b}{it}{
- <-> ssub * LibertinusSans-TOsF/b/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{bold}{it}{
- <-> ssub * LibertinusSans-TOsF/bold/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{b}{scit}{
- <-> ssub * LibertinusSans-TOsF/b/scsl
+\DeclareFontShape{LY1}{LibertinusSans-TOsF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{bold}{scit}{
- <-> ssub * LibertinusSans-TOsF/bold/scsl
+\DeclareFontShape{LY1}{LibertinusSans-TOsF}{bold}{sc}{
+ <-> alias * LibertinusSans-TOsF/b/sc
}{}
% ---- m = regular ----
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{m}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-tosf-ly1
+\DeclareFontShape{LY1}{LibertinusSans-TOsF}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{regular}{n}{
- <-> alias * LibertinusSans-TOsF/m/n
+\DeclareFontShape{LY1}{LibertinusSans-TOsF}{regular}{it}{
+ <-> alias * LibertinusSans-TOsF/m/it
}{}
\DeclareFontShape{LY1}{LibertinusSans-TOsF}{m}{sc}{
@@ -97,12 +65,12 @@
<-> alias * LibertinusSans-TOsF/m/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-tosf-ly1
+\DeclareFontShape{LY1}{LibertinusSans-TOsF}{m}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-tosf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{regular}{it}{
- <-> alias * LibertinusSans-TOsF/m/it
+\DeclareFontShape{LY1}{LibertinusSans-TOsF}{regular}{n}{
+ <-> alias * LibertinusSans-TOsF/m/n
}{}
\DeclareFontShape{LY1}{LibertinusSans-TOsF}{m}{scsl}{
@@ -124,28 +92,12 @@
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{bx}{sc}{
- <-> ssub * LibertinusSans-TOsF/b/sc
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{bx}{sl}{
- <-> ssub * LibertinusSans-TOsF/b/sl
-}{}
-
\DeclareFontShape{LY1}{LibertinusSans-TOsF}{bx}{n}{
<-> ssub * LibertinusSans-TOsF/b/n
}{}
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{bx}{scsl}{
- <-> ssub * LibertinusSans-TOsF/b/scsl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{bx}{it}{
- <-> ssub * LibertinusSans-TOsF/b/it
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSans-TOsF}{bx}{scit}{
- <-> ssub * LibertinusSans-TOsF/b/scit
+\DeclareFontShape{LY1}{LibertinusSans-TOsF}{bx}{sc}{
+ <-> ssub * LibertinusSans-TOsF/b/sc
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-LF.fd
index bee6acf0c49..31693e9b978 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LY1LibertinusSerif-LF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusSerif-LF.]
+ [2024/09/22 (autoinst) Font definitions for LY1/LibertinusSerif-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,59 +20,24 @@
\DeclareFontFamily{LY1}{LibertinusSerif-LF}{}
-% ---- b = bold ----
-
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{bold}{it}{
- <-> alias * LibertinusSerif-LF/b/it
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{bold}{n}{
- <-> alias * LibertinusSerif-LF/b/n
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{bold}{scit}{
- <-> alias * LibertinusSerif-LF/b/scit
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{bold}{sc}{
- <-> alias * LibertinusSerif-LF/b/sc
-}{}
+% ---- m = regular ----
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{b}{sl}{
- <-> ssub * LibertinusSerif-LF/b/it
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{bold}{sl}{
- <-> ssub * LibertinusSerif-LF/bold/it
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{regular}{it}{
+ <-> alias * LibertinusSerif-LF/m/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{b}{scsl}{
- <-> ssub * LibertinusSerif-LF/b/scit
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{bold}{scsl}{
- <-> ssub * LibertinusSerif-LF/bold/scit
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{regular}{n}{
+ <-> alias * LibertinusSerif-LF/m/n
}{}
-
-% ---- m = regular ----
-
\DeclareFontShape{LY1}{LibertinusSerif-LF}{m}{sc}{
<-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-sc-ly1
}{}
@@ -81,14 +46,6 @@
<-> alias * LibertinusSerif-LF/m/sc
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{regular}{it}{
- <-> alias * LibertinusSerif-LF/m/it
-}{}
-
\DeclareFontShape{LY1}{LibertinusSerif-LF}{m}{scit}{
<-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-sc-ly1
}{}
@@ -97,12 +54,12 @@
<-> alias * LibertinusSerif-LF/m/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-LF/m/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{regular}{n}{
- <-> alias * LibertinusSerif-LF/m/n
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-LF/regular/scit
}{}
\DeclareFontShape{LY1}{LibertinusSerif-LF}{m}{sl}{
@@ -113,16 +70,16 @@
<-> ssub * LibertinusSerif-LF/regular/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{m}{scsl}{
- <-> ssub * LibertinusSerif-LF/m/scit
-}{}
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-LF/regular/scit
-}{}
+% ---- sb = semibold ----
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-sc-ly1
+}{}
-% ---- sb = semibold ----
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-LF/sb/scit
+}{}
\DeclareFontShape{LY1}{LibertinusSerif-LF}{sb}{sc}{
<-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-sc-ly1
@@ -140,14 +97,6 @@
<-> alias * LibertinusSerif-LF/sb/n
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{semibold}{scit}{
- <-> alias * LibertinusSerif-LF/sb/scit
-}{}
-
\DeclareFontShape{LY1}{LibertinusSerif-LF}{sb}{it}{
<-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-ly1
}{}
@@ -156,6 +105,14 @@
<-> alias * LibertinusSerif-LF/sb/it
}{}
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-LF/sb/scit
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-LF/semibold/scit
+}{}
+
\DeclareFontShape{LY1}{LibertinusSerif-LF}{sb}{sl}{
<-> ssub * LibertinusSerif-LF/sb/it
}{}
@@ -164,21 +121,72 @@
<-> ssub * LibertinusSerif-LF/semibold/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-LF/sb/scit
+
+% ---- b = bold ----
+
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-LF/semibold/scit
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{bold}{scit}{
+ <-> alias * LibertinusSerif-LF/b/scit
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{bold}{sc}{
+ <-> alias * LibertinusSerif-LF/b/sc
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-ly1
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{bold}{n}{
+ <-> alias * LibertinusSerif-LF/b/n
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-ly1
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{bold}{it}{
+ <-> alias * LibertinusSerif-LF/b/it
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{b}{scsl}{
+ <-> ssub * LibertinusSerif-LF/b/scit
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{bold}{scsl}{
+ <-> ssub * LibertinusSerif-LF/bold/scit
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{b}{sl}{
+ <-> ssub * LibertinusSerif-LF/b/it
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-LF/bold/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{bx}{sl}{
+ <-> ssub * LibertinusSerif-LF/b/sl
+}{}
+
\DeclareFontShape{LY1}{LibertinusSerif-LF}{bx}{scit}{
<-> ssub * LibertinusSerif-LF/b/scit
}{}
+\DeclareFontShape{LY1}{LibertinusSerif-LF}{bx}{sc}{
+ <-> ssub * LibertinusSerif-LF/b/sc
+}{}
+
\DeclareFontShape{LY1}{LibertinusSerif-LF}{bx}{n}{
<-> ssub * LibertinusSerif-LF/b/n
}{}
@@ -191,12 +199,4 @@
<-> ssub * LibertinusSerif-LF/b/scsl
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{bx}{sl}{
- <-> ssub * LibertinusSerif-LF/b/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-LF}{bx}{sc}{
- <-> ssub * LibertinusSerif-LF/b/sc
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-OsF.fd
index c2da55da2ab..e496570419e 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LY1LibertinusSerif-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusSerif-OsF.]
+ [2024/09/22 (autoinst) Font definitions for LY1/LibertinusSerif-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,175 +20,167 @@
\DeclareFontFamily{LY1}{LibertinusSerif-OsF}{}
-% ---- b = bold ----
+% ---- sb = semibold ----
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bold}{sc}{
- <-> alias * LibertinusSerif-OsF/b/sc
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{semibold}{it}{
+ <-> alias * LibertinusSerif-OsF/sb/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bold}{scit}{
- <-> alias * LibertinusSerif-OsF/b/scit
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{semibold}{n}{
+ <-> alias * LibertinusSerif-OsF/sb/n
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bold}{n}{
- <-> alias * LibertinusSerif-OsF/b/n
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-OsF/sb/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bold}{it}{
- <-> alias * LibertinusSerif-OsF/b/it
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-OsF/sb/sc
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{b}{sl}{
- <-> ssub * LibertinusSerif-OsF/b/it
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/sb/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bold}{sl}{
- <-> ssub * LibertinusSerif-OsF/bold/it
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/semibold/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{b}{scsl}{
- <-> ssub * LibertinusSerif-OsF/b/scit
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-OsF/sb/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bold}{scsl}{
- <-> ssub * LibertinusSerif-OsF/bold/scit
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-OsF/semibold/it
}{}
-% ---- m = regular ----
+% ---- b = bold ----
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{regular}{sc}{
- <-> alias * LibertinusSerif-OsF/m/sc
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bold}{scit}{
+ <-> alias * LibertinusSerif-OsF/b/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{regular}{it}{
- <-> alias * LibertinusSerif-OsF/m/it
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bold}{sc}{
+ <-> alias * LibertinusSerif-OsF/b/sc
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{regular}{n}{
- <-> alias * LibertinusSerif-OsF/m/n
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bold}{n}{
+ <-> alias * LibertinusSerif-OsF/b/n
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{regular}{scit}{
- <-> alias * LibertinusSerif-OsF/m/scit
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bold}{it}{
+ <-> alias * LibertinusSerif-OsF/b/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{m}{sl}{
- <-> ssub * LibertinusSerif-OsF/m/it
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{b}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/b/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{regular}{sl}{
- <-> ssub * LibertinusSerif-OsF/regular/it
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bold}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/bold/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{m}{scsl}{
- <-> ssub * LibertinusSerif-OsF/m/scit
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{b}{sl}{
+ <-> ssub * LibertinusSerif-OsF/b/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-OsF/regular/scit
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-OsF/bold/it
}{}
-% ---- sb = semibold ----
+% ---- m = regular ----
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{semibold}{sc}{
- <-> alias * LibertinusSerif-OsF/sb/sc
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{regular}{it}{
+ <-> alias * LibertinusSerif-OsF/m/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{semibold}{it}{
- <-> alias * LibertinusSerif-OsF/sb/it
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{regular}{scit}{
+ <-> alias * LibertinusSerif-OsF/m/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{semibold}{scit}{
- <-> alias * LibertinusSerif-OsF/sb/scit
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{regular}{sc}{
+ <-> alias * LibertinusSerif-OsF/m/sc
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{semibold}{n}{
- <-> alias * LibertinusSerif-OsF/sb/n
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{regular}{n}{
+ <-> alias * LibertinusSerif-OsF/m/n
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{sb}{sl}{
- <-> ssub * LibertinusSerif-OsF/sb/it
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/m/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-OsF/semibold/it
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/regular/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-OsF/sb/scit
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{m}{sl}{
+ <-> ssub * LibertinusSerif-OsF/m/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-OsF/semibold/scit
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-OsF/regular/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-OsF/b/scsl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bx}{sc}{
- <-> ssub * LibertinusSerif-OsF/b/sc
-}{}
-
\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bx}{sl}{
<-> ssub * LibertinusSerif-OsF/b/sl
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bx}{it}{
- <-> ssub * LibertinusSerif-OsF/b/it
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bx}{sc}{
+ <-> ssub * LibertinusSerif-OsF/b/sc
}{}
\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bx}{scit}{
@@ -199,4 +191,12 @@
<-> ssub * LibertinusSerif-OsF/b/n
}{}
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bx}{it}{
+ <-> ssub * LibertinusSerif-OsF/b/it
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSerif-OsF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/b/scsl
+}{}
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-Sup.fd
index 543ad7a18d4..65e6f6d1e1d 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-Sup.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LY1LibertinusSerif-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusSerif-Sup.]
+ [2024/09/22 (autoinst) Font definitions for LY1/LibertinusSerif-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,33 +20,6 @@
\DeclareFontFamily{LY1}{LibertinusSerif-Sup}{}
-% ---- sb = semibold ----
-
-\DeclareFontShape{LY1}{LibertinusSerif-Sup}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-sup-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-Sup}{semibold}{it}{
- <-> alias * LibertinusSerif-Sup/sb/it
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-Sup}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-sup-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-Sup}{semibold}{n}{
- <-> alias * LibertinusSerif-Sup/sb/n
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-Sup}{sb}{sl}{
- <-> ssub * LibertinusSerif-Sup/sb/it
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-Sup}{semibold}{sl}{
- <-> ssub * LibertinusSerif-Sup/semibold/it
-}{}
-
-
% ---- b = bold ----
\DeclareFontShape{LY1}{LibertinusSerif-Sup}{b}{it}{
@@ -74,16 +47,35 @@
}{}
-% ---- m = regular ----
+% ---- sb = semibold ----
-\DeclareFontShape{LY1}{LibertinusSerif-Sup}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-sup-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-Sup}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-sup-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-Sup}{regular}{it}{
- <-> alias * LibertinusSerif-Sup/m/it
+\DeclareFontShape{LY1}{LibertinusSerif-Sup}{semibold}{it}{
+ <-> alias * LibertinusSerif-Sup/sb/it
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSerif-Sup}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSerif-Sup}{semibold}{n}{
+ <-> alias * LibertinusSerif-Sup/sb/n
}{}
+\DeclareFontShape{LY1}{LibertinusSerif-Sup}{sb}{sl}{
+ <-> ssub * LibertinusSerif-Sup/sb/it
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSerif-Sup}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-Sup/semibold/it
+}{}
+
+
+% ---- m = regular ----
+
\DeclareFontShape{LY1}{LibertinusSerif-Sup}{m}{n}{
<-> \LibertinusSerif@@scale LibertinusSerif-Regular-sup-ly1
}{}
@@ -92,6 +84,14 @@
<-> alias * LibertinusSerif-Sup/m/n
}{}
+\DeclareFontShape{LY1}{LibertinusSerif-Sup}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSerif-Sup}{regular}{it}{
+ <-> alias * LibertinusSerif-Sup/m/it
+}{}
+
\DeclareFontShape{LY1}{LibertinusSerif-Sup}{m}{sl}{
<-> ssub * LibertinusSerif-Sup/m/it
}{}
@@ -103,16 +103,16 @@
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{LY1}{LibertinusSerif-Sup}{bx}{it}{
- <-> ssub * LibertinusSerif-Sup/b/it
+\DeclareFontShape{LY1}{LibertinusSerif-Sup}{bx}{sl}{
+ <-> ssub * LibertinusSerif-Sup/b/sl
}{}
\DeclareFontShape{LY1}{LibertinusSerif-Sup}{bx}{n}{
<-> ssub * LibertinusSerif-Sup/b/n
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-Sup}{bx}{sl}{
- <-> ssub * LibertinusSerif-Sup/b/sl
+\DeclareFontShape{LY1}{LibertinusSerif-Sup}{bx}{it}{
+ <-> ssub * LibertinusSerif-Sup/b/it
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-TLF.fd
index fd437f00363..2301082b284 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LY1LibertinusSerif-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusSerif-TLF.]
+ [2024/09/22 (autoinst) Font definitions for LY1/LibertinusSerif-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -30,6 +30,14 @@
<-> alias * LibertinusSerif-TLF/sb/n
}{}
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-TLF/sb/sc
+}{}
+
\DeclareFontShape{LY1}{LibertinusSerif-TLF}{sb}{scit}{
<-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-sc-ly1
}{}
@@ -46,12 +54,12 @@
<-> alias * LibertinusSerif-TLF/sb/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/sb/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{semibold}{sc}{
- <-> alias * LibertinusSerif-TLF/sb/sc
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/semibold/scit
}{}
\DeclareFontShape{LY1}{LibertinusSerif-TLF}{sb}{sl}{
@@ -62,114 +70,106 @@
<-> ssub * LibertinusSerif-TLF/semibold/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-TLF/sb/scit
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-TLF/semibold/scit
-}{}
+% ---- b = bold ----
-% ---- m = regular ----
-
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{regular}{sc}{
- <-> alias * LibertinusSerif-TLF/m/sc
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bold}{scit}{
+ <-> alias * LibertinusSerif-TLF/b/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{regular}{it}{
- <-> alias * LibertinusSerif-TLF/m/it
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bold}{sc}{
+ <-> alias * LibertinusSerif-TLF/b/sc
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{regular}{n}{
- <-> alias * LibertinusSerif-TLF/m/n
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bold}{n}{
+ <-> alias * LibertinusSerif-TLF/b/n
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{regular}{scit}{
- <-> alias * LibertinusSerif-TLF/m/scit
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bold}{it}{
+ <-> alias * LibertinusSerif-TLF/b/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{m}{sl}{
- <-> ssub * LibertinusSerif-TLF/m/it
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{b}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/b/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{regular}{sl}{
- <-> ssub * LibertinusSerif-TLF/regular/it
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bold}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/bold/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{m}{scsl}{
- <-> ssub * LibertinusSerif-TLF/m/scit
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{b}{sl}{
+ <-> ssub * LibertinusSerif-TLF/b/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-TLF/regular/scit
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-TLF/bold/it
}{}
-% ---- b = bold ----
+% ---- m = regular ----
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bold}{sc}{
- <-> alias * LibertinusSerif-TLF/b/sc
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{regular}{n}{
+ <-> alias * LibertinusSerif-TLF/m/n
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bold}{scit}{
- <-> alias * LibertinusSerif-TLF/b/scit
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{regular}{scit}{
+ <-> alias * LibertinusSerif-TLF/m/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bold}{n}{
- <-> alias * LibertinusSerif-TLF/b/n
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{regular}{sc}{
+ <-> alias * LibertinusSerif-TLF/m/sc
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tlf-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bold}{it}{
- <-> alias * LibertinusSerif-TLF/b/it
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{regular}{it}{
+ <-> alias * LibertinusSerif-TLF/m/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{b}{sl}{
- <-> ssub * LibertinusSerif-TLF/b/it
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/m/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bold}{sl}{
- <-> ssub * LibertinusSerif-TLF/bold/it
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/regular/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{b}{scsl}{
- <-> ssub * LibertinusSerif-TLF/b/scit
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{m}{sl}{
+ <-> ssub * LibertinusSerif-TLF/m/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bold}{scsl}{
- <-> ssub * LibertinusSerif-TLF/bold/scit
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-TLF/regular/it
}{}
@@ -179,24 +179,24 @@
<-> ssub * LibertinusSerif-TLF/b/n
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bx}{sl}{
- <-> ssub * LibertinusSerif-TLF/b/sl
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bx}{scit}{
+ <-> ssub * LibertinusSerif-TLF/b/scit
}{}
\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bx}{sc}{
<-> ssub * LibertinusSerif-TLF/b/sc
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bx}{it}{
- <-> ssub * LibertinusSerif-TLF/b/it
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bx}{scit}{
- <-> ssub * LibertinusSerif-TLF/b/scit
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bx}{sl}{
+ <-> ssub * LibertinusSerif-TLF/b/sl
}{}
\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bx}{scsl}{
<-> ssub * LibertinusSerif-TLF/b/scsl
}{}
+\DeclareFontShape{LY1}{LibertinusSerif-TLF}{bx}{it}{
+ <-> ssub * LibertinusSerif-TLF/b/it
+}{}
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-TOsF.fd
index af0477e1fbf..1bd6b192563 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerif-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{LY1LibertinusSerif-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusSerif-TOsF.]
+ [2024/09/22 (autoinst) Font definitions for LY1/LibertinusSerif-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,161 +20,165 @@
\DeclareFontFamily{LY1}{LibertinusSerif-TOsF}{}
-% ---- m = regular ----
+% ---- b = bold ----
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{regular}{it}{
- <-> alias * LibertinusSerif-TOsF/m/it
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bold}{n}{
+ <-> alias * LibertinusSerif-TOsF/b/n
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{regular}{scit}{
- <-> alias * LibertinusSerif-TOsF/m/scit
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bold}{sc}{
+ <-> alias * LibertinusSerif-TOsF/b/sc
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{regular}{n}{
- <-> alias * LibertinusSerif-TOsF/m/n
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bold}{scit}{
+ <-> alias * LibertinusSerif-TOsF/b/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{regular}{sc}{
- <-> alias * LibertinusSerif-TOsF/m/sc
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bold}{it}{
+ <-> alias * LibertinusSerif-TOsF/b/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{m}{sl}{
- <-> ssub * LibertinusSerif-TOsF/m/it
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{b}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/b/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{regular}{sl}{
- <-> ssub * LibertinusSerif-TOsF/regular/it
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bold}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/bold/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{m}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/m/scit
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{b}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/b/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/regular/scit
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/bold/it
}{}
-% ---- b = bold ----
+% ---- sb = semibold ----
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bold}{scit}{
- <-> alias * LibertinusSerif-TOsF/b/scit
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{semibold}{n}{
+ <-> alias * LibertinusSerif-TOsF/sb/n
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bold}{n}{
- <-> alias * LibertinusSerif-TOsF/b/n
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-TOsF/sb/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bold}{it}{
- <-> alias * LibertinusSerif-TOsF/b/it
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-TOsF/sb/sc
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bold}{sc}{
- <-> alias * LibertinusSerif-TOsF/b/sc
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{semibold}{it}{
+ <-> alias * LibertinusSerif-TOsF/sb/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{b}{sl}{
- <-> ssub * LibertinusSerif-TOsF/b/it
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/sb/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bold}{sl}{
- <-> ssub * LibertinusSerif-TOsF/bold/it
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/semibold/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{b}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/b/scit
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/sb/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bold}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/bold/scit
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/semibold/it
}{}
-% ---- sb = semibold ----
+% ---- m = regular ----
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{semibold}{it}{
- <-> alias * LibertinusSerif-TOsF/sb/it
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{regular}{n}{
+ <-> alias * LibertinusSerif-TOsF/m/n
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{semibold}{scit}{
- <-> alias * LibertinusSerif-TOsF/sb/scit
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{regular}{scit}{
+ <-> alias * LibertinusSerif-TOsF/m/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{semibold}{n}{
- <-> alias * LibertinusSerif-TOsF/sb/n
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{regular}{sc}{
+ <-> alias * LibertinusSerif-TOsF/m/sc
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-sc-ly1
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{semibold}{sc}{
- <-> alias * LibertinusSerif-TOsF/sb/sc
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{regular}{it}{
+ <-> alias * LibertinusSerif-TOsF/m/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{sb}{sl}{
- <-> ssub * LibertinusSerif-TOsF/sb/it
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/m/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-TOsF/semibold/it
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/regular/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/sb/scit
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{m}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/m/it
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/semibold/scit
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/regular/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/b/scsl
+}{}
+
\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bx}{it}{
<-> ssub * LibertinusSerif-TOsF/b/it
}{}
@@ -187,16 +191,12 @@
<-> ssub * LibertinusSerif-TOsF/b/scit
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bx}{sc}{
- <-> ssub * LibertinusSerif-TOsF/b/sc
-}{}
-
\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bx}{sl}{
<-> ssub * LibertinusSerif-TOsF/b/sl
}{}
-\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/b/scsl
+\DeclareFontShape{LY1}{LibertinusSerif-TOsF}{bx}{sc}{
+ <-> ssub * LibertinusSerif-TOsF/b/sc
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-LF.fd
index b4e9517df7a..675b5c520b0 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{LY1LibertinusSerifDisplay-LF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusSerifDisplay-LF.]
+ [2025/01/06 (autoinst) Font definitions for LY1/LibertinusSerifDisplay-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-OsF.fd
index 18326283433..0585155d823 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{LY1LibertinusSerifDisplay-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusSerifDisplay-OsF.]
+ [2025/01/06 (autoinst) Font definitions for LY1/LibertinusSerifDisplay-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-Sup.fd
index 69538630459..c6245ad52fc 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-Sup.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{LY1LibertinusSerifDisplay-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusSerifDisplay-Sup.]
+ [2025/01/06 (autoinst) Font definitions for LY1/LibertinusSerifDisplay-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-TLF.fd
index 1fa7456ccd6..4dbd5ed45df 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{LY1LibertinusSerifDisplay-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusSerifDisplay-TLF.]
+ [2025/01/06 (autoinst) Font definitions for LY1/LibertinusSerifDisplay-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-TOsF.fd
index 1d2ce714c30..9daa7c9def8 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{LY1LibertinusSerifDisplay-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusSerifDisplay-TOsF.]
+ [2025/01/06 (autoinst) Font definitions for LY1/LibertinusSerifDisplay-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifInitials-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifInitials-TLF.fd
deleted file mode 100644
index 62efd441c85..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifInitials-TLF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{LY1LibertinusSerifInitials-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusSerifInitials-TLF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifInitials@scale\endcsname\relax
- \let\LibertinusSerifInitials@@scale\@empty
-\else
- \edef\LibertinusSerifInitials@@scale{s*[\csname LibertinusSerifInitials@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{LY1}{LibertinusSerifInitials-TLF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{LY1}{LibertinusSerifInitials-TLF}{m}{n}{
- <-> \LibertinusSerifInitials@@scale LibertinusSerifInitials-Regular-tlf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusSerifInitials-TLF}{regular}{n}{
- <-> alias * LibertinusSerifInitials-TLF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusMono-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusMono-TLF.fd
index 443e55c3315..84a95405335 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusMono-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusMono-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/11
%%
\ProvidesFile{OT1LibertinusMono-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusMono-TLF.]
+ [2025/01/11 (autoinst) Font definitions for OT1/LibertinusMono-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -30,25 +30,33 @@
<-> alias * LibertinusMono-TLF/b/n
}{}
-\DeclareFontShape{OT1}{LibertinusMono-TLF}{b}{sl}{
- <-> \LibertinusMono@@scale LibertinusMono-BoldOblique-tlf-ot1
+\DeclareFontShape{OT1}{LibertinusMono-TLF}{b}{it}{
+ <-> \LibertinusMono@@scale LibertinusMono-BoldItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusMono-TLF}{bold}{sl}{
- <-> alias * LibertinusMono-TLF/b/sl
+\DeclareFontShape{OT1}{LibertinusMono-TLF}{bold}{it}{
+ <-> alias * LibertinusMono-TLF/b/it
}{}
-\DeclareFontShape{OT1}{LibertinusMono-TLF}{b}{it}{
- <-> ssub * LibertinusMono-TLF/b/sl
+\DeclareFontShape{OT1}{LibertinusMono-TLF}{b}{sl}{
+ <-> ssub * LibertinusMono-TLF/b/it
}{}
-\DeclareFontShape{OT1}{LibertinusMono-TLF}{bold}{it}{
- <-> ssub * LibertinusMono-TLF/bold/sl
+\DeclareFontShape{OT1}{LibertinusMono-TLF}{bold}{sl}{
+ <-> ssub * LibertinusMono-TLF/bold/it
}{}
% ---- m = regular ----
+\DeclareFontShape{OT1}{LibertinusMono-TLF}{m}{it}{
+ <-> \LibertinusMono@@scale LibertinusMono-Italic-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{LibertinusMono-TLF}{regular}{it}{
+ <-> alias * LibertinusMono-TLF/m/it
+}{}
+
\DeclareFontShape{OT1}{LibertinusMono-TLF}{m}{n}{
<-> \LibertinusMono@@scale LibertinusMono-Regular-tlf-ot1
}{}
@@ -58,32 +66,24 @@
}{}
\DeclareFontShape{OT1}{LibertinusMono-TLF}{m}{sl}{
- <-> \LibertinusMono@@scale LibertinusMono-Oblique-tlf-ot1
+ <-> ssub * LibertinusMono-TLF/m/it
}{}
\DeclareFontShape{OT1}{LibertinusMono-TLF}{regular}{sl}{
- <-> alias * LibertinusMono-TLF/m/sl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusMono-TLF}{m}{it}{
- <-> ssub * LibertinusMono-TLF/m/sl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusMono-TLF}{regular}{it}{
- <-> ssub * LibertinusMono-TLF/regular/sl
+ <-> ssub * LibertinusMono-TLF/regular/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{OT1}{LibertinusMono-TLF}{bx}{sl}{
- <-> ssub * LibertinusMono-TLF/b/sl
-}{}
-
\DeclareFontShape{OT1}{LibertinusMono-TLF}{bx}{it}{
<-> ssub * LibertinusMono-TLF/b/it
}{}
+\DeclareFontShape{OT1}{LibertinusMono-TLF}{bx}{sl}{
+ <-> ssub * LibertinusMono-TLF/b/sl
+}{}
+
\DeclareFontShape{OT1}{LibertinusMono-TLF}{bx}{n}{
<-> ssub * LibertinusMono-TLF/b/n
}{}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-LF.fd
index 59ba34390ac..45ef327f7ba 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{OT1LibertinusSans-LF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusSans-LF.]
+ [2024/09/22 (autoinst) Font definitions for OT1/LibertinusSans-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,59 +20,24 @@
\DeclareFontFamily{OT1}{LibertinusSans-LF}{}
-% ---- b = bold ----
-
-\DeclareFontShape{OT1}{LibertinusSans-LF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-LF}{bold}{scsl}{
- <-> alias * LibertinusSans-LF/b/scsl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-LF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-LF}{bold}{sc}{
- <-> alias * LibertinusSans-LF/b/sc
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-LF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-LF}{bold}{n}{
- <-> alias * LibertinusSans-LF/b/n
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-LF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-lf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-LF}{bold}{sl}{
- <-> alias * LibertinusSans-LF/b/sl
-}{}
+% ---- m = regular ----
-\DeclareFontShape{OT1}{LibertinusSans-LF}{b}{it}{
- <-> ssub * LibertinusSans-LF/b/sl
+\DeclareFontShape{OT1}{LibertinusSans-LF}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-lf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSans-LF}{bold}{it}{
- <-> ssub * LibertinusSans-LF/bold/sl
+\DeclareFontShape{OT1}{LibertinusSans-LF}{regular}{it}{
+ <-> alias * LibertinusSans-LF/m/it
}{}
-\DeclareFontShape{OT1}{LibertinusSans-LF}{b}{scit}{
- <-> ssub * LibertinusSans-LF/b/scsl
+\DeclareFontShape{OT1}{LibertinusSans-LF}{m}{scit}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSans-LF}{bold}{scit}{
- <-> ssub * LibertinusSans-LF/bold/scsl
+\DeclareFontShape{OT1}{LibertinusSans-LF}{regular}{scit}{
+ <-> alias * LibertinusSans-LF/m/scit
}{}
-
-% ---- m = regular ----
-
\DeclareFontShape{OT1}{LibertinusSans-LF}{m}{sc}{
<-> \LibertinusSans@@scale LibertinusSans-Regular-lf-sc-ot1
}{}
@@ -89,22 +54,6 @@
<-> alias * LibertinusSans-LF/m/n
}{}
-\DeclareFontShape{OT1}{LibertinusSans-LF}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-lf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-LF}{regular}{it}{
- <-> alias * LibertinusSans-LF/m/it
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-LF}{m}{scit}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-LF}{regular}{scit}{
- <-> alias * LibertinusSans-LF/m/scit
-}{}
-
\DeclareFontShape{OT1}{LibertinusSans-LF}{m}{scsl}{
<-> ssub * LibertinusSans-LF/m/scit
}{}
@@ -122,30 +71,33 @@
}{}
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+% ---- b = bold ----
-\DeclareFontShape{OT1}{LibertinusSans-LF}{bx}{n}{
- <-> ssub * LibertinusSans-LF/b/n
+\DeclareFontShape{OT1}{LibertinusSans-LF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSans-LF}{bx}{sl}{
- <-> ssub * LibertinusSans-LF/b/sl
+\DeclareFontShape{OT1}{LibertinusSans-LF}{bold}{sc}{
+ <-> alias * LibertinusSans-LF/b/sc
}{}
-\DeclareFontShape{OT1}{LibertinusSans-LF}{bx}{sc}{
- <-> ssub * LibertinusSans-LF/b/sc
+\DeclareFontShape{OT1}{LibertinusSans-LF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSans-LF}{bx}{scit}{
- <-> ssub * LibertinusSans-LF/b/scit
+\DeclareFontShape{OT1}{LibertinusSans-LF}{bold}{n}{
+ <-> alias * LibertinusSans-LF/b/n
}{}
-\DeclareFontShape{OT1}{LibertinusSans-LF}{bx}{it}{
- <-> ssub * LibertinusSans-LF/b/it
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{OT1}{LibertinusSans-LF}{bx}{n}{
+ <-> ssub * LibertinusSans-LF/b/n
}{}
-\DeclareFontShape{OT1}{LibertinusSans-LF}{bx}{scsl}{
- <-> ssub * LibertinusSans-LF/b/scsl
+\DeclareFontShape{OT1}{LibertinusSans-LF}{bx}{sc}{
+ <-> ssub * LibertinusSans-LF/b/sc
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-OsF.fd
index f445d38ba90..15d9a000789 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{OT1LibertinusSans-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusSans-OsF.]
+ [2024/09/22 (autoinst) Font definitions for OT1/LibertinusSans-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,20 +22,12 @@
% ---- m = regular ----
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{m}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-osf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{regular}{n}{
- <-> alias * LibertinusSans-OsF/m/n
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{m}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-osf-sc-ot1
+\DeclareFontShape{OT1}{LibertinusSans-OsF}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-osf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{regular}{sc}{
- <-> alias * LibertinusSans-OsF/m/sc
+\DeclareFontShape{OT1}{LibertinusSans-OsF}{regular}{it}{
+ <-> alias * LibertinusSans-OsF/m/it
}{}
\DeclareFontShape{OT1}{LibertinusSans-OsF}{m}{scit}{
@@ -46,12 +38,20 @@
<-> alias * LibertinusSans-OsF/m/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-osf-ot1
+\DeclareFontShape{OT1}{LibertinusSans-OsF}{m}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{regular}{it}{
- <-> alias * LibertinusSans-OsF/m/it
+\DeclareFontShape{OT1}{LibertinusSans-OsF}{regular}{sc}{
+ <-> alias * LibertinusSans-OsF/m/sc
+}{}
+
+\DeclareFontShape{OT1}{LibertinusSans-OsF}{m}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-osf-ot1
+}{}
+
+\DeclareFontShape{OT1}{LibertinusSans-OsF}{regular}{n}{
+ <-> alias * LibertinusSans-OsF/m/n
}{}
\DeclareFontShape{OT1}{LibertinusSans-OsF}{m}{scsl}{
@@ -73,22 +73,6 @@
% ---- b = bold ----
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{bold}{n}{
- <-> alias * LibertinusSans-OsF/b/n
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-osf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{bold}{sl}{
- <-> alias * LibertinusSans-OsF/b/sl
-}{}
-
\DeclareFontShape{OT1}{LibertinusSans-OsF}{b}{sc}{
<-> \LibertinusSans@@scale LibertinusSans-Bold-osf-sc-ot1
}{}
@@ -97,55 +81,23 @@
<-> alias * LibertinusSans-OsF/b/sc
}{}
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-osf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{bold}{scsl}{
- <-> alias * LibertinusSans-OsF/b/scsl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{b}{it}{
- <-> ssub * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{bold}{it}{
- <-> ssub * LibertinusSans-OsF/bold/sl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{b}{scit}{
- <-> ssub * LibertinusSans-OsF/b/scsl
+\DeclareFontShape{OT1}{LibertinusSans-OsF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{bold}{scit}{
- <-> ssub * LibertinusSans-OsF/bold/scsl
+\DeclareFontShape{OT1}{LibertinusSans-OsF}{bold}{n}{
+ <-> alias * LibertinusSans-OsF/b/n
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{bx}{n}{
- <-> ssub * LibertinusSans-OsF/b/n
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{bx}{scsl}{
- <-> ssub * LibertinusSans-OsF/b/scsl
-}{}
-
\DeclareFontShape{OT1}{LibertinusSans-OsF}{bx}{sc}{
<-> ssub * LibertinusSans-OsF/b/sc
}{}
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{bx}{sl}{
- <-> ssub * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{bx}{it}{
- <-> ssub * LibertinusSans-OsF/b/it
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-OsF}{bx}{scit}{
- <-> ssub * LibertinusSans-OsF/b/scit
+\DeclareFontShape{OT1}{LibertinusSans-OsF}{bx}{n}{
+ <-> ssub * LibertinusSans-OsF/b/n
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-Sup.fd
index 4820f1ea116..559a95301e5 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-Sup.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{OT1LibertinusSans-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusSans-Sup.]
+ [2024/09/22 (autoinst) Font definitions for OT1/LibertinusSans-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,16 +20,19 @@
\DeclareFontFamily{OT1}{LibertinusSans-Sup}{}
-% ---- m = regular ----
+% ---- b = bold ----
-\DeclareFontShape{OT1}{LibertinusSans-Sup}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-sup-ot1
+\DeclareFontShape{OT1}{LibertinusSans-Sup}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-sup-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSans-Sup}{regular}{it}{
- <-> alias * LibertinusSans-Sup/m/it
+\DeclareFontShape{OT1}{LibertinusSans-Sup}{bold}{n}{
+ <-> alias * LibertinusSans-Sup/b/n
}{}
+
+% ---- m = regular ----
+
\DeclareFontShape{OT1}{LibertinusSans-Sup}{m}{n}{
<-> \LibertinusSans@@scale LibertinusSans-Regular-sup-ot1
}{}
@@ -38,54 +41,27 @@
<-> alias * LibertinusSans-Sup/m/n
}{}
-\DeclareFontShape{OT1}{LibertinusSans-Sup}{m}{sl}{
- <-> ssub * LibertinusSans-Sup/m/it
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-Sup}{regular}{sl}{
- <-> ssub * LibertinusSans-Sup/regular/it
-}{}
-
-
-% ---- b = bold ----
-
-\DeclareFontShape{OT1}{LibertinusSans-Sup}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-sup-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-Sup}{bold}{sl}{
- <-> alias * LibertinusSans-Sup/b/sl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-Sup}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-sup-ot1
+\DeclareFontShape{OT1}{LibertinusSans-Sup}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-sup-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSans-Sup}{bold}{n}{
- <-> alias * LibertinusSans-Sup/b/n
+\DeclareFontShape{OT1}{LibertinusSans-Sup}{regular}{it}{
+ <-> alias * LibertinusSans-Sup/m/it
}{}
-\DeclareFontShape{OT1}{LibertinusSans-Sup}{b}{it}{
- <-> ssub * LibertinusSans-Sup/b/sl
+\DeclareFontShape{OT1}{LibertinusSans-Sup}{m}{sl}{
+ <-> ssub * LibertinusSans-Sup/m/it
}{}
-\DeclareFontShape{OT1}{LibertinusSans-Sup}{bold}{it}{
- <-> ssub * LibertinusSans-Sup/bold/sl
+\DeclareFontShape{OT1}{LibertinusSans-Sup}{regular}{sl}{
+ <-> ssub * LibertinusSans-Sup/regular/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{OT1}{LibertinusSans-Sup}{bx}{sl}{
- <-> ssub * LibertinusSans-Sup/b/sl
-}{}
-
\DeclareFontShape{OT1}{LibertinusSans-Sup}{bx}{n}{
<-> ssub * LibertinusSans-Sup/b/n
}{}
-\DeclareFontShape{OT1}{LibertinusSans-Sup}{bx}{it}{
- <-> ssub * LibertinusSans-Sup/b/it
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-TLF.fd
index fe4b0fe5374..4e82ff28a6f 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{OT1LibertinusSans-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusSans-TLF.]
+ [2024/09/22 (autoinst) Font definitions for OT1/LibertinusSans-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -30,12 +30,12 @@
<-> alias * LibertinusSans-TLF/m/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSans-TLF}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-tlf-ot1
+\DeclareFontShape{OT1}{LibertinusSans-TLF}{m}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSans-TLF}{regular}{it}{
- <-> alias * LibertinusSans-TLF/m/it
+\DeclareFontShape{OT1}{LibertinusSans-TLF}{regular}{sc}{
+ <-> alias * LibertinusSans-TLF/m/sc
}{}
\DeclareFontShape{OT1}{LibertinusSans-TLF}{m}{n}{
@@ -46,12 +46,12 @@
<-> alias * LibertinusSans-TLF/m/n
}{}
-\DeclareFontShape{OT1}{LibertinusSans-TLF}{m}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-tlf-sc-ot1
+\DeclareFontShape{OT1}{LibertinusSans-TLF}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSans-TLF}{regular}{sc}{
- <-> alias * LibertinusSans-TLF/m/sc
+\DeclareFontShape{OT1}{LibertinusSans-TLF}{regular}{it}{
+ <-> alias * LibertinusSans-TLF/m/it
}{}
\DeclareFontShape{OT1}{LibertinusSans-TLF}{m}{scsl}{
@@ -73,14 +73,6 @@
% ---- b = bold ----
-\DeclareFontShape{OT1}{LibertinusSans-TLF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TLF}{bold}{sl}{
- <-> alias * LibertinusSans-TLF/b/sl
-}{}
-
\DeclareFontShape{OT1}{LibertinusSans-TLF}{b}{n}{
<-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-ot1
}{}
@@ -97,55 +89,15 @@
<-> alias * LibertinusSans-TLF/b/sc
}{}
-\DeclareFontShape{OT1}{LibertinusSans-TLF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tlf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TLF}{bold}{scsl}{
- <-> alias * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TLF}{b}{it}{
- <-> ssub * LibertinusSans-TLF/b/sl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TLF}{bold}{it}{
- <-> ssub * LibertinusSans-TLF/bold/sl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TLF}{b}{scit}{
- <-> ssub * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TLF}{bold}{scit}{
- <-> ssub * LibertinusSans-TLF/bold/scsl
-}{}
-
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{OT1}{LibertinusSans-TLF}{bx}{it}{
- <-> ssub * LibertinusSans-TLF/b/it
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TLF}{bx}{scsl}{
- <-> ssub * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TLF}{bx}{scit}{
- <-> ssub * LibertinusSans-TLF/b/scit
+\DeclareFontShape{OT1}{LibertinusSans-TLF}{bx}{n}{
+ <-> ssub * LibertinusSans-TLF/b/n
}{}
\DeclareFontShape{OT1}{LibertinusSans-TLF}{bx}{sc}{
<-> ssub * LibertinusSans-TLF/b/sc
}{}
-\DeclareFontShape{OT1}{LibertinusSans-TLF}{bx}{sl}{
- <-> ssub * LibertinusSans-TLF/b/sl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TLF}{bx}{n}{
- <-> ssub * LibertinusSans-TLF/b/n
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-TOsF.fd
index 925f75936b4..e4fa1afdb01 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSans-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{OT1LibertinusSans-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusSans-TOsF.]
+ [2024/09/22 (autoinst) Font definitions for OT1/LibertinusSans-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,6 +22,14 @@
% ---- m = regular ----
+\DeclareFontShape{OT1}{LibertinusSans-TOsF}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-tosf-ot1
+}{}
+
+\DeclareFontShape{OT1}{LibertinusSans-TOsF}{regular}{it}{
+ <-> alias * LibertinusSans-TOsF/m/it
+}{}
+
\DeclareFontShape{OT1}{LibertinusSans-TOsF}{m}{n}{
<-> \LibertinusSans@@scale LibertinusSans-Regular-tosf-ot1
}{}
@@ -46,14 +54,6 @@
<-> alias * LibertinusSans-TOsF/m/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSans-TOsF}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-tosf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TOsF}{regular}{it}{
- <-> alias * LibertinusSans-TOsF/m/it
-}{}
-
\DeclareFontShape{OT1}{LibertinusSans-TOsF}{m}{scsl}{
<-> ssub * LibertinusSans-TOsF/m/scit
}{}
@@ -73,22 +73,6 @@
% ---- b = bold ----
-\DeclareFontShape{OT1}{LibertinusSans-TOsF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tosf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TOsF}{bold}{scsl}{
- <-> alias * LibertinusSans-TOsF/b/scsl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TOsF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TOsF}{bold}{sc}{
- <-> alias * LibertinusSans-TOsF/b/sc
-}{}
-
\DeclareFontShape{OT1}{LibertinusSans-TOsF}{b}{n}{
<-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-ot1
}{}
@@ -97,55 +81,23 @@
<-> alias * LibertinusSans-TOsF/b/n
}{}
-\DeclareFontShape{OT1}{LibertinusSans-TOsF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tosf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TOsF}{bold}{sl}{
- <-> alias * LibertinusSans-TOsF/b/sl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TOsF}{b}{it}{
- <-> ssub * LibertinusSans-TOsF/b/sl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TOsF}{bold}{it}{
- <-> ssub * LibertinusSans-TOsF/bold/sl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TOsF}{b}{scit}{
- <-> ssub * LibertinusSans-TOsF/b/scsl
+\DeclareFontShape{OT1}{LibertinusSans-TOsF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSans-TOsF}{bold}{scit}{
- <-> ssub * LibertinusSans-TOsF/bold/scsl
+\DeclareFontShape{OT1}{LibertinusSans-TOsF}{bold}{sc}{
+ <-> alias * LibertinusSans-TOsF/b/sc
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{OT1}{LibertinusSans-TOsF}{bx}{it}{
- <-> ssub * LibertinusSans-TOsF/b/it
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TOsF}{bx}{scsl}{
- <-> ssub * LibertinusSans-TOsF/b/scsl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TOsF}{bx}{scit}{
- <-> ssub * LibertinusSans-TOsF/b/scit
+\DeclareFontShape{OT1}{LibertinusSans-TOsF}{bx}{n}{
+ <-> ssub * LibertinusSans-TOsF/b/n
}{}
\DeclareFontShape{OT1}{LibertinusSans-TOsF}{bx}{sc}{
<-> ssub * LibertinusSans-TOsF/b/sc
}{}
-\DeclareFontShape{OT1}{LibertinusSans-TOsF}{bx}{sl}{
- <-> ssub * LibertinusSans-TOsF/b/sl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSans-TOsF}{bx}{n}{
- <-> ssub * LibertinusSans-TOsF/b/n
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-LF.fd
index b3ab2a88cc1..58d2b629cd1 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{OT1LibertinusSerif-LF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusSerif-LF.]
+ [2024/09/22 (autoinst) Font definitions for OT1/LibertinusSerif-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,12 +22,12 @@
% ---- sb = semibold ----
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{semibold}{it}{
- <-> alias * LibertinusSerif-LF/sb/it
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-LF/sb/sc
}{}
\DeclareFontShape{OT1}{LibertinusSerif-LF}{sb}{scit}{
@@ -46,20 +46,12 @@
<-> alias * LibertinusSerif-LF/sb/n
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{semibold}{sc}{
- <-> alias * LibertinusSerif-LF/sb/sc
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{sb}{sl}{
- <-> ssub * LibertinusSerif-LF/sb/it
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-LF/semibold/it
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{semibold}{it}{
+ <-> alias * LibertinusSerif-LF/sb/it
}{}
\DeclareFontShape{OT1}{LibertinusSerif-LF}{sb}{scsl}{
@@ -70,106 +62,114 @@
<-> ssub * LibertinusSerif-LF/semibold/scit
}{}
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-LF/sb/it
+}{}
-% ---- m = regular ----
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-LF/semibold/it
+}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-sc-ot1
+
+% ---- b = bold ----
+
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{regular}{sc}{
- <-> alias * LibertinusSerif-LF/m/sc
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{bold}{it}{
+ <-> alias * LibertinusSerif-LF/b/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{regular}{it}{
- <-> alias * LibertinusSerif-LF/m/it
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{bold}{sc}{
+ <-> alias * LibertinusSerif-LF/b/sc
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-sc-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{regular}{scit}{
- <-> alias * LibertinusSerif-LF/m/scit
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{bold}{scit}{
+ <-> alias * LibertinusSerif-LF/b/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{regular}{n}{
- <-> alias * LibertinusSerif-LF/m/n
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{bold}{n}{
+ <-> alias * LibertinusSerif-LF/b/n
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{m}{sl}{
- <-> ssub * LibertinusSerif-LF/m/it
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{b}{scsl}{
+ <-> ssub * LibertinusSerif-LF/b/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{regular}{sl}{
- <-> ssub * LibertinusSerif-LF/regular/it
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{bold}{scsl}{
+ <-> ssub * LibertinusSerif-LF/bold/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{m}{scsl}{
- <-> ssub * LibertinusSerif-LF/m/scit
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{b}{sl}{
+ <-> ssub * LibertinusSerif-LF/b/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-LF/regular/scit
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-LF/bold/it
}{}
-% ---- b = bold ----
+% ---- m = regular ----
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-sc-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{bold}{sc}{
- <-> alias * LibertinusSerif-LF/b/sc
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{regular}{n}{
+ <-> alias * LibertinusSerif-LF/m/n
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-sc-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{bold}{scit}{
- <-> alias * LibertinusSerif-LF/b/scit
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{regular}{scit}{
+ <-> alias * LibertinusSerif-LF/m/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{bold}{n}{
- <-> alias * LibertinusSerif-LF/b/n
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{regular}{sc}{
+ <-> alias * LibertinusSerif-LF/m/sc
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{bold}{it}{
- <-> alias * LibertinusSerif-LF/b/it
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{regular}{it}{
+ <-> alias * LibertinusSerif-LF/m/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{b}{sl}{
- <-> ssub * LibertinusSerif-LF/b/it
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-LF/m/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{bold}{sl}{
- <-> ssub * LibertinusSerif-LF/bold/it
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-LF/regular/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{b}{scsl}{
- <-> ssub * LibertinusSerif-LF/b/scit
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{m}{sl}{
+ <-> ssub * LibertinusSerif-LF/m/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{bold}{scsl}{
- <-> ssub * LibertinusSerif-LF/bold/scit
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-LF/regular/it
}{}
@@ -179,18 +179,14 @@
<-> ssub * LibertinusSerif-LF/b/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{bx}{scit}{
- <-> ssub * LibertinusSerif-LF/b/scit
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSerif-LF}{bx}{n}{
- <-> ssub * LibertinusSerif-LF/b/n
-}{}
-
\DeclareFontShape{OT1}{LibertinusSerif-LF}{bx}{scsl}{
<-> ssub * LibertinusSerif-LF/b/scsl
}{}
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{bx}{scit}{
+ <-> ssub * LibertinusSerif-LF/b/scit
+}{}
+
\DeclareFontShape{OT1}{LibertinusSerif-LF}{bx}{sc}{
<-> ssub * LibertinusSerif-LF/b/sc
}{}
@@ -199,4 +195,8 @@
<-> ssub * LibertinusSerif-LF/b/sl
}{}
+\DeclareFontShape{OT1}{LibertinusSerif-LF}{bx}{n}{
+ <-> ssub * LibertinusSerif-LF/b/n
+}{}
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-OsF.fd
index bc32a36b84d..1a92bbcde8a 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{OT1LibertinusSerif-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusSerif-OsF.]
+ [2024/09/22 (autoinst) Font definitions for OT1/LibertinusSerif-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,6 +22,14 @@
% ---- sb = semibold ----
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-ot1
+}{}
+
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{semibold}{n}{
+ <-> alias * LibertinusSerif-OsF/sb/n
+}{}
+
\DeclareFontShape{OT1}{LibertinusSerif-OsF}{sb}{sc}{
<-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-sc-ot1
}{}
@@ -38,14 +46,6 @@
<-> alias * LibertinusSerif-OsF/sb/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{semibold}{n}{
- <-> alias * LibertinusSerif-OsF/sb/n
-}{}
-
\DeclareFontShape{OT1}{LibertinusSerif-OsF}{sb}{it}{
<-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-ot1
}{}
@@ -54,14 +54,6 @@
<-> alias * LibertinusSerif-OsF/sb/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{sb}{sl}{
- <-> ssub * LibertinusSerif-OsF/sb/it
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-OsF/semibold/it
-}{}
-
\DeclareFontShape{OT1}{LibertinusSerif-OsF}{sb}{scsl}{
<-> ssub * LibertinusSerif-OsF/sb/scit
}{}
@@ -70,15 +62,23 @@
<-> ssub * LibertinusSerif-OsF/semibold/scit
}{}
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-OsF/sb/it
+}{}
+
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-OsF/semibold/it
+}{}
+
% ---- b = bold ----
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{bold}{it}{
- <-> alias * LibertinusSerif-OsF/b/it
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{bold}{n}{
+ <-> alias * LibertinusSerif-OsF/b/n
}{}
\DeclareFontShape{OT1}{LibertinusSerif-OsF}{b}{scit}{
@@ -89,14 +89,6 @@
<-> alias * LibertinusSerif-OsF/b/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{bold}{n}{
- <-> alias * LibertinusSerif-OsF/b/n
-}{}
-
\DeclareFontShape{OT1}{LibertinusSerif-OsF}{b}{sc}{
<-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-sc-ot1
}{}
@@ -105,12 +97,12 @@
<-> alias * LibertinusSerif-OsF/b/sc
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{b}{sl}{
- <-> ssub * LibertinusSerif-OsF/b/it
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{bold}{sl}{
- <-> ssub * LibertinusSerif-OsF/bold/it
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{bold}{it}{
+ <-> alias * LibertinusSerif-OsF/b/it
}{}
\DeclareFontShape{OT1}{LibertinusSerif-OsF}{b}{scsl}{
@@ -121,17 +113,17 @@
<-> ssub * LibertinusSerif-OsF/bold/scit
}{}
-
-% ---- m = regular ----
-
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-sc-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{b}{sl}{
+ <-> ssub * LibertinusSerif-OsF/b/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{regular}{sc}{
- <-> alias * LibertinusSerif-OsF/m/sc
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-OsF/bold/it
}{}
+
+% ---- m = regular ----
+
\DeclareFontShape{OT1}{LibertinusSerif-OsF}{m}{it}{
<-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-ot1
}{}
@@ -148,20 +140,20 @@
<-> alias * LibertinusSerif-OsF/m/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{regular}{n}{
- <-> alias * LibertinusSerif-OsF/m/n
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{regular}{sc}{
+ <-> alias * LibertinusSerif-OsF/m/sc
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{m}{sl}{
- <-> ssub * LibertinusSerif-OsF/m/it
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{regular}{sl}{
- <-> ssub * LibertinusSerif-OsF/regular/it
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{regular}{n}{
+ <-> alias * LibertinusSerif-OsF/m/n
}{}
\DeclareFontShape{OT1}{LibertinusSerif-OsF}{m}{scsl}{
@@ -172,9 +164,21 @@
<-> ssub * LibertinusSerif-OsF/regular/scit
}{}
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{m}{sl}{
+ <-> ssub * LibertinusSerif-OsF/m/it
+}{}
+
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-OsF/regular/it
+}{}
+
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{bx}{scit}{
+ <-> ssub * LibertinusSerif-OsF/b/scit
+}{}
+
\DeclareFontShape{OT1}{LibertinusSerif-OsF}{bx}{sl}{
<-> ssub * LibertinusSerif-OsF/b/sl
}{}
@@ -183,20 +187,16 @@
<-> ssub * LibertinusSerif-OsF/b/sc
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-OsF/b/scsl
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{bx}{n}{
+ <-> ssub * LibertinusSerif-OsF/b/n
}{}
\DeclareFontShape{OT1}{LibertinusSerif-OsF}{bx}{it}{
<-> ssub * LibertinusSerif-OsF/b/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{bx}{n}{
- <-> ssub * LibertinusSerif-OsF/b/n
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSerif-OsF}{bx}{scit}{
- <-> ssub * LibertinusSerif-OsF/b/scit
+\DeclareFontShape{OT1}{LibertinusSerif-OsF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/b/scsl
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-Sup.fd
index 50c36b02c58..70fcdfa342b 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-Sup.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{OT1LibertinusSerif-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusSerif-Sup.]
+ [2024/09/22 (autoinst) Font definitions for OT1/LibertinusSerif-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,70 +20,62 @@
\DeclareFontFamily{OT1}{LibertinusSerif-Sup}{}
-% ---- sb = semibold ----
+% ---- b = bold ----
-\DeclareFontShape{OT1}{LibertinusSerif-Sup}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-sup-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-Sup}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-Sup}{semibold}{it}{
- <-> alias * LibertinusSerif-Sup/sb/it
+\DeclareFontShape{OT1}{LibertinusSerif-Sup}{bold}{it}{
+ <-> alias * LibertinusSerif-Sup/b/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-Sup}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-sup-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-Sup}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-sup-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-Sup}{semibold}{n}{
- <-> alias * LibertinusSerif-Sup/sb/n
+\DeclareFontShape{OT1}{LibertinusSerif-Sup}{bold}{n}{
+ <-> alias * LibertinusSerif-Sup/b/n
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-Sup}{sb}{sl}{
- <-> ssub * LibertinusSerif-Sup/sb/it
+\DeclareFontShape{OT1}{LibertinusSerif-Sup}{b}{sl}{
+ <-> ssub * LibertinusSerif-Sup/b/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-Sup}{semibold}{sl}{
- <-> ssub * LibertinusSerif-Sup/semibold/it
+\DeclareFontShape{OT1}{LibertinusSerif-Sup}{bold}{sl}{
+ <-> ssub * LibertinusSerif-Sup/bold/it
}{}
-% ---- b = bold ----
+% ---- sb = semibold ----
-\DeclareFontShape{OT1}{LibertinusSerif-Sup}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-sup-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-Sup}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-sup-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-Sup}{bold}{n}{
- <-> alias * LibertinusSerif-Sup/b/n
+\DeclareFontShape{OT1}{LibertinusSerif-Sup}{semibold}{n}{
+ <-> alias * LibertinusSerif-Sup/sb/n
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-Sup}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-sup-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-Sup}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-Sup}{bold}{it}{
- <-> alias * LibertinusSerif-Sup/b/it
+\DeclareFontShape{OT1}{LibertinusSerif-Sup}{semibold}{it}{
+ <-> alias * LibertinusSerif-Sup/sb/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-Sup}{b}{sl}{
- <-> ssub * LibertinusSerif-Sup/b/it
+\DeclareFontShape{OT1}{LibertinusSerif-Sup}{sb}{sl}{
+ <-> ssub * LibertinusSerif-Sup/sb/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-Sup}{bold}{sl}{
- <-> ssub * LibertinusSerif-Sup/bold/it
+\DeclareFontShape{OT1}{LibertinusSerif-Sup}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-Sup/semibold/it
}{}
% ---- m = regular ----
-\DeclareFontShape{OT1}{LibertinusSerif-Sup}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-sup-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSerif-Sup}{regular}{n}{
- <-> alias * LibertinusSerif-Sup/m/n
-}{}
-
\DeclareFontShape{OT1}{LibertinusSerif-Sup}{m}{it}{
<-> \LibertinusSerif@@scale LibertinusSerif-Italic-sup-ot1
}{}
@@ -92,6 +84,14 @@
<-> alias * LibertinusSerif-Sup/m/it
}{}
+\DeclareFontShape{OT1}{LibertinusSerif-Sup}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{LibertinusSerif-Sup}{regular}{n}{
+ <-> alias * LibertinusSerif-Sup/m/n
+}{}
+
\DeclareFontShape{OT1}{LibertinusSerif-Sup}{m}{sl}{
<-> ssub * LibertinusSerif-Sup/m/it
}{}
@@ -107,12 +107,12 @@
<-> ssub * LibertinusSerif-Sup/b/sl
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-Sup}{bx}{it}{
- <-> ssub * LibertinusSerif-Sup/b/it
-}{}
-
\DeclareFontShape{OT1}{LibertinusSerif-Sup}{bx}{n}{
<-> ssub * LibertinusSerif-Sup/b/n
}{}
+\DeclareFontShape{OT1}{LibertinusSerif-Sup}{bx}{it}{
+ <-> ssub * LibertinusSerif-Sup/b/it
+}{}
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-TLF.fd
index 92ff3f610e6..5dfded227ec 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{OT1LibertinusSerif-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusSerif-TLF.]
+ [2024/09/22 (autoinst) Font definitions for OT1/LibertinusSerif-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,124 +20,116 @@
\DeclareFontFamily{OT1}{LibertinusSerif-TLF}{}
-% ---- sb = semibold ----
+% ---- m = regular ----
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{semibold}{it}{
- <-> alias * LibertinusSerif-TLF/sb/it
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{regular}{it}{
+ <-> alias * LibertinusSerif-TLF/m/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-sc-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{semibold}{scit}{
- <-> alias * LibertinusSerif-TLF/sb/scit
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{regular}{n}{
+ <-> alias * LibertinusSerif-TLF/m/n
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{semibold}{n}{
- <-> alias * LibertinusSerif-TLF/sb/n
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{regular}{scit}{
+ <-> alias * LibertinusSerif-TLF/m/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-sc-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{semibold}{sc}{
- <-> alias * LibertinusSerif-TLF/sb/sc
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{regular}{sc}{
+ <-> alias * LibertinusSerif-TLF/m/sc
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{sb}{sl}{
- <-> ssub * LibertinusSerif-TLF/sb/it
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/m/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-TLF/semibold/it
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/regular/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-TLF/sb/scit
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{m}{sl}{
+ <-> ssub * LibertinusSerif-TLF/m/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-TLF/semibold/scit
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-TLF/regular/it
}{}
-% ---- m = regular ----
+% ---- sb = semibold ----
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-sc-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{regular}{sc}{
- <-> alias * LibertinusSerif-TLF/m/sc
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{semibold}{n}{
+ <-> alias * LibertinusSerif-TLF/sb/n
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{regular}{n}{
- <-> alias * LibertinusSerif-TLF/m/n
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-TLF/sb/sc
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-sc-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{regular}{scit}{
- <-> alias * LibertinusSerif-TLF/m/scit
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-TLF/sb/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{regular}{it}{
- <-> alias * LibertinusSerif-TLF/m/it
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{semibold}{it}{
+ <-> alias * LibertinusSerif-TLF/sb/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{m}{sl}{
- <-> ssub * LibertinusSerif-TLF/m/it
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/sb/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{regular}{sl}{
- <-> ssub * LibertinusSerif-TLF/regular/it
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/semibold/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{m}{scsl}{
- <-> ssub * LibertinusSerif-TLF/m/scit
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-TLF/sb/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-TLF/regular/scit
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-TLF/semibold/it
}{}
% ---- b = bold ----
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bold}{sc}{
- <-> alias * LibertinusSerif-TLF/b/sc
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tlf-sc-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bold}{scit}{
- <-> alias * LibertinusSerif-TLF/b/scit
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bold}{it}{
+ <-> alias * LibertinusSerif-TLF/b/it
}{}
\DeclareFontShape{OT1}{LibertinusSerif-TLF}{b}{n}{
@@ -148,20 +140,20 @@
<-> alias * LibertinusSerif-TLF/b/n
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tlf-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bold}{it}{
- <-> alias * LibertinusSerif-TLF/b/it
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bold}{sc}{
+ <-> alias * LibertinusSerif-TLF/b/sc
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{b}{sl}{
- <-> ssub * LibertinusSerif-TLF/b/it
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bold}{sl}{
- <-> ssub * LibertinusSerif-TLF/bold/it
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bold}{scit}{
+ <-> alias * LibertinusSerif-TLF/b/scit
}{}
\DeclareFontShape{OT1}{LibertinusSerif-TLF}{b}{scsl}{
@@ -172,31 +164,39 @@
<-> ssub * LibertinusSerif-TLF/bold/scit
}{}
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bx}{n}{
- <-> ssub * LibertinusSerif-TLF/b/n
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{b}{sl}{
+ <-> ssub * LibertinusSerif-TLF/b/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bx}{scit}{
- <-> ssub * LibertinusSerif-TLF/b/scit
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-TLF/bold/it
}{}
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bx}{it}{
<-> ssub * LibertinusSerif-TLF/b/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bx}{sl}{
- <-> ssub * LibertinusSerif-TLF/b/sl
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/b/scsl
}{}
\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bx}{sc}{
<-> ssub * LibertinusSerif-TLF/b/sc
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-TLF/b/scsl
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bx}{scit}{
+ <-> ssub * LibertinusSerif-TLF/b/scit
+}{}
+
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bx}{sl}{
+ <-> ssub * LibertinusSerif-TLF/b/sl
+}{}
+
+\DeclareFontShape{OT1}{LibertinusSerif-TLF}{bx}{n}{
+ <-> ssub * LibertinusSerif-TLF/b/n
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-TOsF.fd
index 299e1ed5c1f..56b7226794e 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerif-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{OT1LibertinusSerif-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusSerif-TOsF.]
+ [2024/09/22 (autoinst) Font definitions for OT1/LibertinusSerif-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,126 +20,110 @@
\DeclareFontFamily{OT1}{LibertinusSerif-TOsF}{}
-% ---- sb = semibold ----
+% ---- b = bold ----
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{semibold}{n}{
- <-> alias * LibertinusSerif-TOsF/sb/n
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bold}{n}{
+ <-> alias * LibertinusSerif-TOsF/b/n
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-sc-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{semibold}{scit}{
- <-> alias * LibertinusSerif-TOsF/sb/scit
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bold}{scit}{
+ <-> alias * LibertinusSerif-TOsF/b/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{semibold}{it}{
- <-> alias * LibertinusSerif-TOsF/sb/it
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bold}{sc}{
+ <-> alias * LibertinusSerif-TOsF/b/sc
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-sc-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{semibold}{sc}{
- <-> alias * LibertinusSerif-TOsF/sb/sc
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bold}{it}{
+ <-> alias * LibertinusSerif-TOsF/b/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{sb}{sl}{
- <-> ssub * LibertinusSerif-TOsF/sb/it
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{b}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/b/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-TOsF/semibold/it
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bold}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/bold/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/sb/scit
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{b}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/b/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/semibold/scit
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/bold/it
}{}
-% ---- b = bold ----
+% ---- sb = semibold ----
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bold}{n}{
- <-> alias * LibertinusSerif-TOsF/b/n
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-TOsF/sb/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-sc-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bold}{scit}{
- <-> alias * LibertinusSerif-TOsF/b/scit
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-TOsF/sb/sc
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bold}{it}{
- <-> alias * LibertinusSerif-TOsF/b/it
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{semibold}{n}{
+ <-> alias * LibertinusSerif-TOsF/sb/n
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-sc-ot1
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bold}{sc}{
- <-> alias * LibertinusSerif-TOsF/b/sc
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{semibold}{it}{
+ <-> alias * LibertinusSerif-TOsF/sb/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{b}{sl}{
- <-> ssub * LibertinusSerif-TOsF/b/it
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/sb/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bold}{sl}{
- <-> ssub * LibertinusSerif-TOsF/bold/it
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/semibold/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{b}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/b/scit
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/sb/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bold}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/bold/scit
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/semibold/it
}{}
% ---- m = regular ----
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{regular}{sc}{
- <-> alias * LibertinusSerif-TOsF/m/sc
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{regular}{it}{
- <-> alias * LibertinusSerif-TOsF/m/it
-}{}
-
\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{m}{n}{
<-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-ot1
}{}
@@ -148,6 +132,14 @@
<-> alias * LibertinusSerif-TOsF/m/n
}{}
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{regular}{sc}{
+ <-> alias * LibertinusSerif-TOsF/m/sc
+}{}
+
\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{m}{scit}{
<-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-sc-ot1
}{}
@@ -156,12 +148,12 @@
<-> alias * LibertinusSerif-TOsF/m/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{m}{sl}{
- <-> ssub * LibertinusSerif-TOsF/m/it
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{regular}{sl}{
- <-> ssub * LibertinusSerif-TOsF/regular/it
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{regular}{it}{
+ <-> alias * LibertinusSerif-TOsF/m/it
}{}
\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{m}{scsl}{
@@ -172,6 +164,14 @@
<-> ssub * LibertinusSerif-TOsF/regular/scit
}{}
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{m}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/m/it
+}{}
+
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/regular/it
+}{}
+
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
@@ -179,24 +179,24 @@
<-> ssub * LibertinusSerif-TOsF/b/scsl
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bx}{sl}{
- <-> ssub * LibertinusSerif-TOsF/b/sl
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bx}{it}{
+ <-> ssub * LibertinusSerif-TOsF/b/it
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bx}{sc}{
- <-> ssub * LibertinusSerif-TOsF/b/sc
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bx}{n}{
+ <-> ssub * LibertinusSerif-TOsF/b/n
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bx}{it}{
- <-> ssub * LibertinusSerif-TOsF/b/it
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bx}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/b/sl
}{}
\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bx}{scit}{
<-> ssub * LibertinusSerif-TOsF/b/scit
}{}
-\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bx}{n}{
- <-> ssub * LibertinusSerif-TOsF/b/n
+\DeclareFontShape{OT1}{LibertinusSerif-TOsF}{bx}{sc}{
+ <-> ssub * LibertinusSerif-TOsF/b/sc
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-LF.fd
index b9ad0dd86ba..18e075c4c17 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{OT1LibertinusSerifDisplay-LF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusSerifDisplay-LF.]
+ [2025/01/06 (autoinst) Font definitions for OT1/LibertinusSerifDisplay-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-OsF.fd
index e0f64e3cdbf..1a93dc4556f 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{OT1LibertinusSerifDisplay-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusSerifDisplay-OsF.]
+ [2025/01/06 (autoinst) Font definitions for OT1/LibertinusSerifDisplay-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-Sup.fd
index 0e368df70ae..94017ea5ea9 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-Sup.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{OT1LibertinusSerifDisplay-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusSerifDisplay-Sup.]
+ [2025/01/06 (autoinst) Font definitions for OT1/LibertinusSerifDisplay-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-TLF.fd
index 3430d6e7c8f..d28a6d314e4 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{OT1LibertinusSerifDisplay-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusSerifDisplay-TLF.]
+ [2025/01/06 (autoinst) Font definitions for OT1/LibertinusSerifDisplay-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-TOsF.fd
index a92cfe5fe3c..665713dd765 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{OT1LibertinusSerifDisplay-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusSerifDisplay-TOsF.]
+ [2025/01/06 (autoinst) Font definitions for OT1/LibertinusSerifDisplay-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifInitials-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifInitials-TLF.fd
deleted file mode 100644
index a5707fc5c4a..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifInitials-TLF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{OT1LibertinusSerifInitials-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusSerifInitials-TLF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifInitials@scale\endcsname\relax
- \let\LibertinusSerifInitials@@scale\@empty
-\else
- \edef\LibertinusSerifInitials@@scale{s*[\csname LibertinusSerifInitials@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{OT1}{LibertinusSerifInitials-TLF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{OT1}{LibertinusSerifInitials-TLF}{m}{n}{
- <-> \LibertinusSerifInitials@@scale LibertinusSerifInitials-Regular-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusSerifInitials-TLF}{regular}{n}{
- <-> alias * LibertinusSerifInitials-TLF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusMono-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusMono-TLF.fd
index dcce12f2ac5..c77a0a4e35f 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusMono-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusMono-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/11
%%
\ProvidesFile{T1LibertinusMono-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusMono-TLF.]
+ [2025/01/11 (autoinst) Font definitions for T1/LibertinusMono-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,70 +20,70 @@
\DeclareFontFamily{T1}{LibertinusMono-TLF}{\hyphenchar\font=-1}
-% ---- m = regular ----
+% ---- b = bold ----
-\DeclareFontShape{T1}{LibertinusMono-TLF}{m}{sl}{
- <-> \LibertinusMono@@scale LibertinusMono-Oblique-tlf-t1
+\DeclareFontShape{T1}{LibertinusMono-TLF}{b}{n}{
+ <-> \LibertinusMono@@scale LibertinusMono-Bold-tlf-t1
}{}
-\DeclareFontShape{T1}{LibertinusMono-TLF}{regular}{sl}{
- <-> alias * LibertinusMono-TLF/m/sl
+\DeclareFontShape{T1}{LibertinusMono-TLF}{bold}{n}{
+ <-> alias * LibertinusMono-TLF/b/n
}{}
-\DeclareFontShape{T1}{LibertinusMono-TLF}{m}{n}{
- <-> \LibertinusMono@@scale LibertinusMono-Regular-tlf-t1
+\DeclareFontShape{T1}{LibertinusMono-TLF}{b}{it}{
+ <-> \LibertinusMono@@scale LibertinusMono-BoldItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{LibertinusMono-TLF}{regular}{n}{
- <-> alias * LibertinusMono-TLF/m/n
+\DeclareFontShape{T1}{LibertinusMono-TLF}{bold}{it}{
+ <-> alias * LibertinusMono-TLF/b/it
}{}
-\DeclareFontShape{T1}{LibertinusMono-TLF}{m}{it}{
- <-> ssub * LibertinusMono-TLF/m/sl
+\DeclareFontShape{T1}{LibertinusMono-TLF}{b}{sl}{
+ <-> ssub * LibertinusMono-TLF/b/it
}{}
-\DeclareFontShape{T1}{LibertinusMono-TLF}{regular}{it}{
- <-> ssub * LibertinusMono-TLF/regular/sl
+\DeclareFontShape{T1}{LibertinusMono-TLF}{bold}{sl}{
+ <-> ssub * LibertinusMono-TLF/bold/it
}{}
-% ---- b = bold ----
+% ---- m = regular ----
-\DeclareFontShape{T1}{LibertinusMono-TLF}{b}{n}{
- <-> \LibertinusMono@@scale LibertinusMono-Bold-tlf-t1
+\DeclareFontShape{T1}{LibertinusMono-TLF}{m}{it}{
+ <-> \LibertinusMono@@scale LibertinusMono-Italic-tlf-t1
}{}
-\DeclareFontShape{T1}{LibertinusMono-TLF}{bold}{n}{
- <-> alias * LibertinusMono-TLF/b/n
+\DeclareFontShape{T1}{LibertinusMono-TLF}{regular}{it}{
+ <-> alias * LibertinusMono-TLF/m/it
}{}
-\DeclareFontShape{T1}{LibertinusMono-TLF}{b}{sl}{
- <-> \LibertinusMono@@scale LibertinusMono-BoldOblique-tlf-t1
+\DeclareFontShape{T1}{LibertinusMono-TLF}{m}{n}{
+ <-> \LibertinusMono@@scale LibertinusMono-Regular-tlf-t1
}{}
-\DeclareFontShape{T1}{LibertinusMono-TLF}{bold}{sl}{
- <-> alias * LibertinusMono-TLF/b/sl
+\DeclareFontShape{T1}{LibertinusMono-TLF}{regular}{n}{
+ <-> alias * LibertinusMono-TLF/m/n
}{}
-\DeclareFontShape{T1}{LibertinusMono-TLF}{b}{it}{
- <-> ssub * LibertinusMono-TLF/b/sl
+\DeclareFontShape{T1}{LibertinusMono-TLF}{m}{sl}{
+ <-> ssub * LibertinusMono-TLF/m/it
}{}
-\DeclareFontShape{T1}{LibertinusMono-TLF}{bold}{it}{
- <-> ssub * LibertinusMono-TLF/bold/sl
+\DeclareFontShape{T1}{LibertinusMono-TLF}{regular}{sl}{
+ <-> ssub * LibertinusMono-TLF/regular/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T1}{LibertinusMono-TLF}{bx}{sl}{
- <-> ssub * LibertinusMono-TLF/b/sl
-}{}
-
\DeclareFontShape{T1}{LibertinusMono-TLF}{bx}{it}{
<-> ssub * LibertinusMono-TLF/b/it
}{}
+\DeclareFontShape{T1}{LibertinusMono-TLF}{bx}{sl}{
+ <-> ssub * LibertinusMono-TLF/b/sl
+}{}
+
\DeclareFontShape{T1}{LibertinusMono-TLF}{bx}{n}{
<-> ssub * LibertinusMono-TLF/b/n
}{}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-LF.fd
index 7b11780b201..8736e2047c7 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T1LibertinusSans-LF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusSans-LF.]
+ [2024/09/22 (autoinst) Font definitions for T1/LibertinusSans-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,14 +20,33 @@
\DeclareFontFamily{T1}{LibertinusSans-LF}{}
+% ---- b = bold ----
+
+\DeclareFontShape{T1}{LibertinusSans-LF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{LibertinusSans-LF}{bold}{sc}{
+ <-> alias * LibertinusSans-LF/b/sc
+}{}
+
+\DeclareFontShape{T1}{LibertinusSans-LF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-t1
+}{}
+
+\DeclareFontShape{T1}{LibertinusSans-LF}{bold}{n}{
+ <-> alias * LibertinusSans-LF/b/n
+}{}
+
+
% ---- m = regular ----
-\DeclareFontShape{T1}{LibertinusSans-LF}{m}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-lf-sc-t1
+\DeclareFontShape{T1}{LibertinusSans-LF}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-lf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSans-LF}{regular}{sc}{
- <-> alias * LibertinusSans-LF/m/sc
+\DeclareFontShape{T1}{LibertinusSans-LF}{regular}{it}{
+ <-> alias * LibertinusSans-LF/m/it
}{}
\DeclareFontShape{T1}{LibertinusSans-LF}{m}{n}{
@@ -38,12 +57,12 @@
<-> alias * LibertinusSans-LF/m/n
}{}
-\DeclareFontShape{T1}{LibertinusSans-LF}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-lf-t1
+\DeclareFontShape{T1}{LibertinusSans-LF}{m}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-lf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSans-LF}{regular}{it}{
- <-> alias * LibertinusSans-LF/m/it
+\DeclareFontShape{T1}{LibertinusSans-LF}{regular}{sc}{
+ <-> alias * LibertinusSans-LF/m/sc
}{}
\DeclareFontShape{T1}{LibertinusSans-LF}{m}{scit}{
@@ -71,81 +90,14 @@
}{}
-% ---- b = bold ----
-
-\DeclareFontShape{T1}{LibertinusSans-LF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-LF}{bold}{sc}{
- <-> alias * LibertinusSans-LF/b/sc
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-LF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-LF}{bold}{n}{
- <-> alias * LibertinusSans-LF/b/n
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-LF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-lf-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-LF}{bold}{sl}{
- <-> alias * LibertinusSans-LF/b/sl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-LF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-lf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-LF}{bold}{scsl}{
- <-> alias * LibertinusSans-LF/b/scsl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-LF}{b}{it}{
- <-> ssub * LibertinusSans-LF/b/sl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-LF}{bold}{it}{
- <-> ssub * LibertinusSans-LF/bold/sl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-LF}{b}{scit}{
- <-> ssub * LibertinusSans-LF/b/scsl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-LF}{bold}{scit}{
- <-> ssub * LibertinusSans-LF/bold/scsl
-}{}
-
-
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T1}{LibertinusSans-LF}{bx}{sc}{
- <-> ssub * LibertinusSans-LF/b/sc
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-LF}{bx}{sl}{
- <-> ssub * LibertinusSans-LF/b/sl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-LF}{bx}{it}{
- <-> ssub * LibertinusSans-LF/b/it
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-LF}{bx}{scit}{
- <-> ssub * LibertinusSans-LF/b/scit
-}{}
-
\DeclareFontShape{T1}{LibertinusSans-LF}{bx}{n}{
<-> ssub * LibertinusSans-LF/b/n
}{}
-\DeclareFontShape{T1}{LibertinusSans-LF}{bx}{scsl}{
- <-> ssub * LibertinusSans-LF/b/scsl
+\DeclareFontShape{T1}{LibertinusSans-LF}{bx}{sc}{
+ <-> ssub * LibertinusSans-LF/b/sc
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-OsF.fd
index f18d1086d2d..5772c9a709c 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T1LibertinusSans-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusSans-OsF.]
+ [2024/09/22 (autoinst) Font definitions for T1/LibertinusSans-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,30 +22,6 @@
% ---- b = bold ----
-\DeclareFontShape{T1}{LibertinusSans-OsF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-osf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-OsF}{bold}{scsl}{
- <-> alias * LibertinusSans-OsF/b/scsl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-OsF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-osf-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-OsF}{bold}{sl}{
- <-> alias * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-OsF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-OsF}{bold}{n}{
- <-> alias * LibertinusSans-OsF/b/n
-}{}
-
\DeclareFontShape{T1}{LibertinusSans-OsF}{b}{sc}{
<-> \LibertinusSans@@scale LibertinusSans-Bold-osf-sc-t1
}{}
@@ -54,20 +30,12 @@
<-> alias * LibertinusSans-OsF/b/sc
}{}
-\DeclareFontShape{T1}{LibertinusSans-OsF}{b}{it}{
- <-> ssub * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-OsF}{bold}{it}{
- <-> ssub * LibertinusSans-OsF/bold/sl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-OsF}{b}{scit}{
- <-> ssub * LibertinusSans-OsF/b/scsl
+\DeclareFontShape{T1}{LibertinusSans-OsF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSans-OsF}{bold}{scit}{
- <-> ssub * LibertinusSans-OsF/bold/scsl
+\DeclareFontShape{T1}{LibertinusSans-OsF}{bold}{n}{
+ <-> alias * LibertinusSans-OsF/b/n
}{}
@@ -81,12 +49,12 @@
<-> alias * LibertinusSans-OsF/m/it
}{}
-\DeclareFontShape{T1}{LibertinusSans-OsF}{m}{scit}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-osf-sc-t1
+\DeclareFontShape{T1}{LibertinusSans-OsF}{m}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-osf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSans-OsF}{regular}{scit}{
- <-> alias * LibertinusSans-OsF/m/scit
+\DeclareFontShape{T1}{LibertinusSans-OsF}{regular}{n}{
+ <-> alias * LibertinusSans-OsF/m/n
}{}
\DeclareFontShape{T1}{LibertinusSans-OsF}{m}{sc}{
@@ -97,12 +65,12 @@
<-> alias * LibertinusSans-OsF/m/sc
}{}
-\DeclareFontShape{T1}{LibertinusSans-OsF}{m}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-osf-t1
+\DeclareFontShape{T1}{LibertinusSans-OsF}{m}{scit}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSans-OsF}{regular}{n}{
- <-> alias * LibertinusSans-OsF/m/n
+\DeclareFontShape{T1}{LibertinusSans-OsF}{regular}{scit}{
+ <-> alias * LibertinusSans-OsF/m/scit
}{}
\DeclareFontShape{T1}{LibertinusSans-OsF}{m}{scsl}{
@@ -124,28 +92,12 @@
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T1}{LibertinusSans-OsF}{bx}{scsl}{
- <-> ssub * LibertinusSans-OsF/b/scsl
+\DeclareFontShape{T1}{LibertinusSans-OsF}{bx}{sc}{
+ <-> ssub * LibertinusSans-OsF/b/sc
}{}
\DeclareFontShape{T1}{LibertinusSans-OsF}{bx}{n}{
<-> ssub * LibertinusSans-OsF/b/n
}{}
-\DeclareFontShape{T1}{LibertinusSans-OsF}{bx}{scit}{
- <-> ssub * LibertinusSans-OsF/b/scit
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-OsF}{bx}{it}{
- <-> ssub * LibertinusSans-OsF/b/it
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-OsF}{bx}{sl}{
- <-> ssub * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-OsF}{bx}{sc}{
- <-> ssub * LibertinusSans-OsF/b/sc
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-Sup.fd
index dbb3a0aeffe..da44dcffabe 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-Sup.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T1LibertinusSans-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusSans-Sup.]
+ [2024/09/22 (autoinst) Font definitions for T1/LibertinusSans-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,14 +22,6 @@
% ---- b = bold ----
-\DeclareFontShape{T1}{LibertinusSans-Sup}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-sup-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-Sup}{bold}{sl}{
- <-> alias * LibertinusSans-Sup/b/sl
-}{}
-
\DeclareFontShape{T1}{LibertinusSans-Sup}{b}{n}{
<-> \LibertinusSans@@scale LibertinusSans-Bold-sup-t1
}{}
@@ -38,16 +30,16 @@
<-> alias * LibertinusSans-Sup/b/n
}{}
-\DeclareFontShape{T1}{LibertinusSans-Sup}{b}{it}{
- <-> ssub * LibertinusSans-Sup/b/sl
-}{}
-\DeclareFontShape{T1}{LibertinusSans-Sup}{bold}{it}{
- <-> ssub * LibertinusSans-Sup/bold/sl
-}{}
+% ---- m = regular ----
+\DeclareFontShape{T1}{LibertinusSans-Sup}{m}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-sup-t1
+}{}
-% ---- m = regular ----
+\DeclareFontShape{T1}{LibertinusSans-Sup}{regular}{n}{
+ <-> alias * LibertinusSans-Sup/m/n
+}{}
\DeclareFontShape{T1}{LibertinusSans-Sup}{m}{it}{
<-> \LibertinusSans@@scale LibertinusSans-Italic-sup-t1
@@ -57,14 +49,6 @@
<-> alias * LibertinusSans-Sup/m/it
}{}
-\DeclareFontShape{T1}{LibertinusSans-Sup}{m}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-sup-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-Sup}{regular}{n}{
- <-> alias * LibertinusSans-Sup/m/n
-}{}
-
\DeclareFontShape{T1}{LibertinusSans-Sup}{m}{sl}{
<-> ssub * LibertinusSans-Sup/m/it
}{}
@@ -76,16 +60,8 @@
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T1}{LibertinusSans-Sup}{bx}{sl}{
- <-> ssub * LibertinusSans-Sup/b/sl
-}{}
-
\DeclareFontShape{T1}{LibertinusSans-Sup}{bx}{n}{
<-> ssub * LibertinusSans-Sup/b/n
}{}
-\DeclareFontShape{T1}{LibertinusSans-Sup}{bx}{it}{
- <-> ssub * LibertinusSans-Sup/b/it
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-TLF.fd
index 1a32b643c9d..6b82fa2161a 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T1LibertinusSans-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusSans-TLF.]
+ [2024/09/22 (autoinst) Font definitions for T1/LibertinusSans-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,14 +20,33 @@
\DeclareFontFamily{T1}{LibertinusSans-TLF}{}
+% ---- b = bold ----
+
+\DeclareFontShape{T1}{LibertinusSans-TLF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{LibertinusSans-TLF}{bold}{n}{
+ <-> alias * LibertinusSans-TLF/b/n
+}{}
+
+\DeclareFontShape{T1}{LibertinusSans-TLF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{LibertinusSans-TLF}{bold}{sc}{
+ <-> alias * LibertinusSans-TLF/b/sc
+}{}
+
+
% ---- m = regular ----
-\DeclareFontShape{T1}{LibertinusSans-TLF}{m}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-tlf-t1
+\DeclareFontShape{T1}{LibertinusSans-TLF}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-tlf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSans-TLF}{regular}{n}{
- <-> alias * LibertinusSans-TLF/m/n
+\DeclareFontShape{T1}{LibertinusSans-TLF}{regular}{it}{
+ <-> alias * LibertinusSans-TLF/m/it
}{}
\DeclareFontShape{T1}{LibertinusSans-TLF}{m}{sc}{
@@ -46,12 +65,12 @@
<-> alias * LibertinusSans-TLF/m/scit
}{}
-\DeclareFontShape{T1}{LibertinusSans-TLF}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-tlf-t1
+\DeclareFontShape{T1}{LibertinusSans-TLF}{m}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-tlf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSans-TLF}{regular}{it}{
- <-> alias * LibertinusSans-TLF/m/it
+\DeclareFontShape{T1}{LibertinusSans-TLF}{regular}{n}{
+ <-> alias * LibertinusSans-TLF/m/n
}{}
\DeclareFontShape{T1}{LibertinusSans-TLF}{m}{scsl}{
@@ -71,81 +90,14 @@
}{}
-% ---- b = bold ----
-
-\DeclareFontShape{T1}{LibertinusSans-TLF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TLF}{bold}{sl}{
- <-> alias * LibertinusSans-TLF/b/sl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TLF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TLF}{bold}{n}{
- <-> alias * LibertinusSans-TLF/b/n
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TLF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TLF}{bold}{sc}{
- <-> alias * LibertinusSans-TLF/b/sc
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TLF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tlf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TLF}{bold}{scsl}{
- <-> alias * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TLF}{b}{it}{
- <-> ssub * LibertinusSans-TLF/b/sl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TLF}{bold}{it}{
- <-> ssub * LibertinusSans-TLF/bold/sl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TLF}{b}{scit}{
- <-> ssub * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TLF}{bold}{scit}{
- <-> ssub * LibertinusSans-TLF/bold/scsl
-}{}
-
-
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T1}{LibertinusSans-TLF}{bx}{sl}{
- <-> ssub * LibertinusSans-TLF/b/sl
-}{}
-
\DeclareFontShape{T1}{LibertinusSans-TLF}{bx}{sc}{
<-> ssub * LibertinusSans-TLF/b/sc
}{}
-\DeclareFontShape{T1}{LibertinusSans-TLF}{bx}{scit}{
- <-> ssub * LibertinusSans-TLF/b/scit
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TLF}{bx}{it}{
- <-> ssub * LibertinusSans-TLF/b/it
-}{}
-
\DeclareFontShape{T1}{LibertinusSans-TLF}{bx}{n}{
<-> ssub * LibertinusSans-TLF/b/n
}{}
-\DeclareFontShape{T1}{LibertinusSans-TLF}{bx}{scsl}{
- <-> ssub * LibertinusSans-TLF/b/scsl
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-TOsF.fd
index 0cd8c9d2a8c..263258b5254 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSans-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T1LibertinusSans-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusSans-TOsF.]
+ [2024/09/22 (autoinst) Font definitions for T1/LibertinusSans-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,22 +22,6 @@
% ---- m = regular ----
-\DeclareFontShape{T1}{LibertinusSans-TOsF}{m}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-tosf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TOsF}{regular}{sc}{
- <-> alias * LibertinusSans-TOsF/m/sc
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TOsF}{m}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-tosf-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TOsF}{regular}{n}{
- <-> alias * LibertinusSans-TOsF/m/n
-}{}
-
\DeclareFontShape{T1}{LibertinusSans-TOsF}{m}{it}{
<-> \LibertinusSans@@scale LibertinusSans-Italic-tosf-t1
}{}
@@ -54,6 +38,22 @@
<-> alias * LibertinusSans-TOsF/m/scit
}{}
+\DeclareFontShape{T1}{LibertinusSans-TOsF}{m}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-tosf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{LibertinusSans-TOsF}{regular}{sc}{
+ <-> alias * LibertinusSans-TOsF/m/sc
+}{}
+
+\DeclareFontShape{T1}{LibertinusSans-TOsF}{m}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-tosf-t1
+}{}
+
+\DeclareFontShape{T1}{LibertinusSans-TOsF}{regular}{n}{
+ <-> alias * LibertinusSans-TOsF/m/n
+}{}
+
\DeclareFontShape{T1}{LibertinusSans-TOsF}{m}{scsl}{
<-> ssub * LibertinusSans-TOsF/m/scit
}{}
@@ -81,14 +81,6 @@
<-> alias * LibertinusSans-TOsF/b/sc
}{}
-\DeclareFontShape{T1}{LibertinusSans-TOsF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tosf-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TOsF}{bold}{sl}{
- <-> alias * LibertinusSans-TOsF/b/sl
-}{}
-
\DeclareFontShape{T1}{LibertinusSans-TOsF}{b}{n}{
<-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-t1
}{}
@@ -97,55 +89,15 @@
<-> alias * LibertinusSans-TOsF/b/n
}{}
-\DeclareFontShape{T1}{LibertinusSans-TOsF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tosf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TOsF}{bold}{scsl}{
- <-> alias * LibertinusSans-TOsF/b/scsl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TOsF}{b}{it}{
- <-> ssub * LibertinusSans-TOsF/b/sl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TOsF}{bold}{it}{
- <-> ssub * LibertinusSans-TOsF/bold/sl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TOsF}{b}{scit}{
- <-> ssub * LibertinusSans-TOsF/b/scsl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TOsF}{bold}{scit}{
- <-> ssub * LibertinusSans-TOsF/bold/scsl
-}{}
-
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T1}{LibertinusSans-TOsF}{bx}{n}{
- <-> ssub * LibertinusSans-TOsF/b/n
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TOsF}{bx}{sl}{
- <-> ssub * LibertinusSans-TOsF/b/sl
-}{}
-
\DeclareFontShape{T1}{LibertinusSans-TOsF}{bx}{sc}{
<-> ssub * LibertinusSans-TOsF/b/sc
}{}
-\DeclareFontShape{T1}{LibertinusSans-TOsF}{bx}{scit}{
- <-> ssub * LibertinusSans-TOsF/b/scit
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TOsF}{bx}{it}{
- <-> ssub * LibertinusSans-TOsF/b/it
-}{}
-
-\DeclareFontShape{T1}{LibertinusSans-TOsF}{bx}{scsl}{
- <-> ssub * LibertinusSans-TOsF/b/scsl
+\DeclareFontShape{T1}{LibertinusSans-TOsF}{bx}{n}{
+ <-> ssub * LibertinusSans-TOsF/b/n
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-LF.fd
index 12a98776fd1..6386d6efe10 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T1LibertinusSerif-LF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusSerif-LF.]
+ [2024/09/22 (autoinst) Font definitions for T1/LibertinusSerif-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,126 +20,110 @@
\DeclareFontFamily{T1}{LibertinusSerif-LF}{}
-% ---- sb = semibold ----
+% ---- m = regular ----
-\DeclareFontShape{T1}{LibertinusSerif-LF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-LF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{semibold}{scit}{
- <-> alias * LibertinusSerif-LF/sb/scit
+\DeclareFontShape{T1}{LibertinusSerif-LF}{regular}{scit}{
+ <-> alias * LibertinusSerif-LF/m/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-t1
+\DeclareFontShape{T1}{LibertinusSerif-LF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{semibold}{n}{
- <-> alias * LibertinusSerif-LF/sb/n
+\DeclareFontShape{T1}{LibertinusSerif-LF}{regular}{sc}{
+ <-> alias * LibertinusSerif-LF/m/sc
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-t1
+\DeclareFontShape{T1}{LibertinusSerif-LF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{semibold}{it}{
- <-> alias * LibertinusSerif-LF/sb/it
+\DeclareFontShape{T1}{LibertinusSerif-LF}{regular}{n}{
+ <-> alias * LibertinusSerif-LF/m/n
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-LF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{semibold}{sc}{
- <-> alias * LibertinusSerif-LF/sb/sc
+\DeclareFontShape{T1}{LibertinusSerif-LF}{regular}{it}{
+ <-> alias * LibertinusSerif-LF/m/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{sb}{sl}{
- <-> ssub * LibertinusSerif-LF/sb/it
+\DeclareFontShape{T1}{LibertinusSerif-LF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-LF/m/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-LF/semibold/it
+\DeclareFontShape{T1}{LibertinusSerif-LF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-LF/regular/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-LF/sb/scit
+\DeclareFontShape{T1}{LibertinusSerif-LF}{m}{sl}{
+ <-> ssub * LibertinusSerif-LF/m/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-LF/semibold/scit
+\DeclareFontShape{T1}{LibertinusSerif-LF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-LF/regular/it
}{}
-% ---- m = regular ----
+% ---- sb = semibold ----
-\DeclareFontShape{T1}{LibertinusSerif-LF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-t1
+\DeclareFontShape{T1}{LibertinusSerif-LF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{regular}{it}{
- <-> alias * LibertinusSerif-LF/m/it
+\DeclareFontShape{T1}{LibertinusSerif-LF}{semibold}{it}{
+ <-> alias * LibertinusSerif-LF/sb/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-t1
+\DeclareFontShape{T1}{LibertinusSerif-LF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{regular}{n}{
- <-> alias * LibertinusSerif-LF/m/n
+\DeclareFontShape{T1}{LibertinusSerif-LF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-LF/sb/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-LF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{regular}{scit}{
- <-> alias * LibertinusSerif-LF/m/scit
+\DeclareFontShape{T1}{LibertinusSerif-LF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-LF/sb/sc
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-LF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{regular}{sc}{
- <-> alias * LibertinusSerif-LF/m/sc
+\DeclareFontShape{T1}{LibertinusSerif-LF}{semibold}{n}{
+ <-> alias * LibertinusSerif-LF/sb/n
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{m}{sl}{
- <-> ssub * LibertinusSerif-LF/m/it
+\DeclareFontShape{T1}{LibertinusSerif-LF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-LF/sb/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{regular}{sl}{
- <-> ssub * LibertinusSerif-LF/regular/it
+\DeclareFontShape{T1}{LibertinusSerif-LF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-LF/semibold/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{m}{scsl}{
- <-> ssub * LibertinusSerif-LF/m/scit
+\DeclareFontShape{T1}{LibertinusSerif-LF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-LF/sb/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-LF/regular/scit
+\DeclareFontShape{T1}{LibertinusSerif-LF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-LF/semibold/it
}{}
% ---- b = bold ----
-\DeclareFontShape{T1}{LibertinusSerif-LF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSerif-LF}{bold}{scit}{
- <-> alias * LibertinusSerif-LF/b/scit
-}{}
-
-\DeclareFontShape{T1}{LibertinusSerif-LF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSerif-LF}{bold}{n}{
- <-> alias * LibertinusSerif-LF/b/n
-}{}
-
\DeclareFontShape{T1}{LibertinusSerif-LF}{b}{it}{
<-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-t1
}{}
@@ -156,12 +140,20 @@
<-> alias * LibertinusSerif-LF/b/sc
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{b}{sl}{
- <-> ssub * LibertinusSerif-LF/b/it
+\DeclareFontShape{T1}{LibertinusSerif-LF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{bold}{sl}{
- <-> ssub * LibertinusSerif-LF/bold/it
+\DeclareFontShape{T1}{LibertinusSerif-LF}{bold}{scit}{
+ <-> alias * LibertinusSerif-LF/b/scit
+}{}
+
+\DeclareFontShape{T1}{LibertinusSerif-LF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-t1
+}{}
+
+\DeclareFontShape{T1}{LibertinusSerif-LF}{bold}{n}{
+ <-> alias * LibertinusSerif-LF/b/n
}{}
\DeclareFontShape{T1}{LibertinusSerif-LF}{b}{scsl}{
@@ -172,17 +164,17 @@
<-> ssub * LibertinusSerif-LF/bold/scit
}{}
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\DeclareFontShape{T1}{LibertinusSerif-LF}{bx}{scit}{
- <-> ssub * LibertinusSerif-LF/b/scit
+\DeclareFontShape{T1}{LibertinusSerif-LF}{b}{sl}{
+ <-> ssub * LibertinusSerif-LF/b/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-LF}{bx}{n}{
- <-> ssub * LibertinusSerif-LF/b/n
+\DeclareFontShape{T1}{LibertinusSerif-LF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-LF/bold/it
}{}
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
\DeclareFontShape{T1}{LibertinusSerif-LF}{bx}{it}{
<-> ssub * LibertinusSerif-LF/b/it
}{}
@@ -191,6 +183,14 @@
<-> ssub * LibertinusSerif-LF/b/scsl
}{}
+\DeclareFontShape{T1}{LibertinusSerif-LF}{bx}{scit}{
+ <-> ssub * LibertinusSerif-LF/b/scit
+}{}
+
+\DeclareFontShape{T1}{LibertinusSerif-LF}{bx}{n}{
+ <-> ssub * LibertinusSerif-LF/b/n
+}{}
+
\DeclareFontShape{T1}{LibertinusSerif-LF}{bx}{sc}{
<-> ssub * LibertinusSerif-LF/b/sc
}{}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-OsF.fd
index bb4d3a94eae..c7454cbae16 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T1LibertinusSerif-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusSerif-OsF.]
+ [2024/09/22 (autoinst) Font definitions for T1/LibertinusSerif-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,183 +20,183 @@
\DeclareFontFamily{T1}{LibertinusSerif-OsF}{}
-% ---- sb = semibold ----
+% ---- b = bold ----
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-t1
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{semibold}{it}{
- <-> alias * LibertinusSerif-OsF/sb/it
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{bold}{sc}{
+ <-> alias * LibertinusSerif-OsF/b/sc
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-t1
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{semibold}{n}{
- <-> alias * LibertinusSerif-OsF/sb/n
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{bold}{scit}{
+ <-> alias * LibertinusSerif-OsF/b/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{semibold}{scit}{
- <-> alias * LibertinusSerif-OsF/sb/scit
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{bold}{n}{
+ <-> alias * LibertinusSerif-OsF/b/n
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{semibold}{sc}{
- <-> alias * LibertinusSerif-OsF/sb/sc
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{bold}{it}{
+ <-> alias * LibertinusSerif-OsF/b/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{sb}{sl}{
- <-> ssub * LibertinusSerif-OsF/sb/it
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{b}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/b/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-OsF/semibold/it
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{bold}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/bold/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-OsF/sb/scit
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{b}{sl}{
+ <-> ssub * LibertinusSerif-OsF/b/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-OsF/semibold/scit
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-OsF/bold/it
}{}
-% ---- m = regular ----
+% ---- sb = semibold ----
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{regular}{sc}{
- <-> alias * LibertinusSerif-OsF/m/sc
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{semibold}{it}{
+ <-> alias * LibertinusSerif-OsF/sb/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-t1
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{regular}{it}{
- <-> alias * LibertinusSerif-OsF/m/it
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-OsF/sb/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-t1
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{regular}{n}{
- <-> alias * LibertinusSerif-OsF/m/n
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-OsF/sb/sc
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{regular}{scit}{
- <-> alias * LibertinusSerif-OsF/m/scit
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{semibold}{n}{
+ <-> alias * LibertinusSerif-OsF/sb/n
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{m}{sl}{
- <-> ssub * LibertinusSerif-OsF/m/it
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/sb/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{regular}{sl}{
- <-> ssub * LibertinusSerif-OsF/regular/it
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/semibold/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{m}{scsl}{
- <-> ssub * LibertinusSerif-OsF/m/scit
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-OsF/sb/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-OsF/regular/scit
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-OsF/semibold/it
}{}
-% ---- b = bold ----
+% ---- m = regular ----
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{bold}{scit}{
- <-> alias * LibertinusSerif-OsF/b/scit
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{regular}{n}{
+ <-> alias * LibertinusSerif-OsF/m/n
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-t1
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{bold}{n}{
- <-> alias * LibertinusSerif-OsF/b/n
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{regular}{scit}{
+ <-> alias * LibertinusSerif-OsF/m/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-t1
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{bold}{it}{
- <-> alias * LibertinusSerif-OsF/b/it
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{regular}{sc}{
+ <-> alias * LibertinusSerif-OsF/m/sc
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{bold}{sc}{
- <-> alias * LibertinusSerif-OsF/b/sc
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{regular}{it}{
+ <-> alias * LibertinusSerif-OsF/m/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{b}{sl}{
- <-> ssub * LibertinusSerif-OsF/b/it
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/m/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{bold}{sl}{
- <-> ssub * LibertinusSerif-OsF/bold/it
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/regular/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{b}{scsl}{
- <-> ssub * LibertinusSerif-OsF/b/scit
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{m}{sl}{
+ <-> ssub * LibertinusSerif-OsF/m/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{bold}{scsl}{
- <-> ssub * LibertinusSerif-OsF/bold/scit
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-OsF/regular/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{bx}{sc}{
- <-> ssub * LibertinusSerif-OsF/b/sc
-}{}
-
\DeclareFontShape{T1}{LibertinusSerif-OsF}{bx}{sl}{
<-> ssub * LibertinusSerif-OsF/b/sl
}{}
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-OsF/b/scsl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSerif-OsF}{bx}{n}{
- <-> ssub * LibertinusSerif-OsF/b/n
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{bx}{sc}{
+ <-> ssub * LibertinusSerif-OsF/b/sc
}{}
\DeclareFontShape{T1}{LibertinusSerif-OsF}{bx}{scit}{
<-> ssub * LibertinusSerif-OsF/b/scit
}{}
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{bx}{n}{
+ <-> ssub * LibertinusSerif-OsF/b/n
+}{}
+
\DeclareFontShape{T1}{LibertinusSerif-OsF}{bx}{it}{
<-> ssub * LibertinusSerif-OsF/b/it
}{}
+\DeclareFontShape{T1}{LibertinusSerif-OsF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/b/scsl
+}{}
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-Sup.fd
index 900fc0ec905..40e48768b65 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-Sup.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T1LibertinusSerif-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusSerif-Sup.]
+ [2024/09/22 (autoinst) Font definitions for T1/LibertinusSerif-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,14 +22,6 @@
% ---- sb = semibold ----
-\DeclareFontShape{T1}{LibertinusSerif-Sup}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-sup-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSerif-Sup}{semibold}{n}{
- <-> alias * LibertinusSerif-Sup/sb/n
-}{}
-
\DeclareFontShape{T1}{LibertinusSerif-Sup}{sb}{it}{
<-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-sup-t1
}{}
@@ -38,6 +30,14 @@
<-> alias * LibertinusSerif-Sup/sb/it
}{}
+\DeclareFontShape{T1}{LibertinusSerif-Sup}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-sup-t1
+}{}
+
+\DeclareFontShape{T1}{LibertinusSerif-Sup}{semibold}{n}{
+ <-> alias * LibertinusSerif-Sup/sb/n
+}{}
+
\DeclareFontShape{T1}{LibertinusSerif-Sup}{sb}{sl}{
<-> ssub * LibertinusSerif-Sup/sb/it
}{}
@@ -103,6 +103,10 @@
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+\DeclareFontShape{T1}{LibertinusSerif-Sup}{bx}{n}{
+ <-> ssub * LibertinusSerif-Sup/b/n
+}{}
+
\DeclareFontShape{T1}{LibertinusSerif-Sup}{bx}{sl}{
<-> ssub * LibertinusSerif-Sup/b/sl
}{}
@@ -111,8 +115,4 @@
<-> ssub * LibertinusSerif-Sup/b/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-Sup}{bx}{n}{
- <-> ssub * LibertinusSerif-Sup/b/n
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-TLF.fd
index e8dd2d8be95..33d59bfcaad 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T1LibertinusSerif-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusSerif-TLF.]
+ [2024/09/22 (autoinst) Font definitions for T1/LibertinusSerif-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,14 +22,6 @@
% ---- m = regular ----
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{regular}{sc}{
- <-> alias * LibertinusSerif-TLF/m/sc
-}{}
-
\DeclareFontShape{T1}{LibertinusSerif-TLF}{m}{it}{
<-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-t1
}{}
@@ -46,20 +38,20 @@
<-> alias * LibertinusSerif-TLF/m/n
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{regular}{scit}{
- <-> alias * LibertinusSerif-TLF/m/scit
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{regular}{sc}{
+ <-> alias * LibertinusSerif-TLF/m/sc
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{m}{sl}{
- <-> ssub * LibertinusSerif-TLF/m/it
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{regular}{sl}{
- <-> ssub * LibertinusSerif-TLF/regular/it
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{regular}{scit}{
+ <-> alias * LibertinusSerif-TLF/m/scit
}{}
\DeclareFontShape{T1}{LibertinusSerif-TLF}{m}{scsl}{
@@ -70,17 +62,17 @@
<-> ssub * LibertinusSerif-TLF/regular/scit
}{}
-
-% ---- b = bold ----
-
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{m}{sl}{
+ <-> ssub * LibertinusSerif-TLF/m/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{bold}{sc}{
- <-> alias * LibertinusSerif-TLF/b/sc
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-TLF/regular/it
}{}
+
+% ---- b = bold ----
+
\DeclareFontShape{T1}{LibertinusSerif-TLF}{b}{scit}{
<-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tlf-sc-t1
}{}
@@ -89,6 +81,14 @@
<-> alias * LibertinusSerif-TLF/b/scit
}{}
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{bold}{sc}{
+ <-> alias * LibertinusSerif-TLF/b/sc
+}{}
+
\DeclareFontShape{T1}{LibertinusSerif-TLF}{b}{n}{
<-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-t1
}{}
@@ -105,14 +105,6 @@
<-> alias * LibertinusSerif-TLF/b/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{b}{sl}{
- <-> ssub * LibertinusSerif-TLF/b/it
-}{}
-
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{bold}{sl}{
- <-> ssub * LibertinusSerif-TLF/bold/it
-}{}
-
\DeclareFontShape{T1}{LibertinusSerif-TLF}{b}{scsl}{
<-> ssub * LibertinusSerif-TLF/b/scit
}{}
@@ -121,6 +113,14 @@
<-> ssub * LibertinusSerif-TLF/bold/scit
}{}
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{b}{sl}{
+ <-> ssub * LibertinusSerif-TLF/b/it
+}{}
+
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-TLF/bold/it
+}{}
+
% ---- sb = semibold ----
@@ -140,14 +140,6 @@
<-> alias * LibertinusSerif-TLF/sb/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{semibold}{it}{
- <-> alias * LibertinusSerif-TLF/sb/it
-}{}
-
\DeclareFontShape{T1}{LibertinusSerif-TLF}{sb}{sc}{
<-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-sc-t1
}{}
@@ -156,12 +148,12 @@
<-> alias * LibertinusSerif-TLF/sb/sc
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{sb}{sl}{
- <-> ssub * LibertinusSerif-TLF/sb/it
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-TLF/semibold/it
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{semibold}{it}{
+ <-> alias * LibertinusSerif-TLF/sb/it
}{}
\DeclareFontShape{T1}{LibertinusSerif-TLF}{sb}{scsl}{
@@ -172,31 +164,39 @@
<-> ssub * LibertinusSerif-TLF/semibold/scit
}{}
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-TLF/sb/it
+}{}
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{bx}{it}{
- <-> ssub * LibertinusSerif-TLF/b/it
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-TLF/semibold/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{bx}{scit}{
- <-> ssub * LibertinusSerif-TLF/b/scit
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{bx}{sl}{
+ <-> ssub * LibertinusSerif-TLF/b/sl
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{bx}{n}{
- <-> ssub * LibertinusSerif-TLF/b/n
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{bx}{sc}{
+ <-> ssub * LibertinusSerif-TLF/b/sc
}{}
\DeclareFontShape{T1}{LibertinusSerif-TLF}{bx}{scsl}{
<-> ssub * LibertinusSerif-TLF/b/scsl
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{bx}{sl}{
- <-> ssub * LibertinusSerif-TLF/b/sl
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{bx}{it}{
+ <-> ssub * LibertinusSerif-TLF/b/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TLF}{bx}{sc}{
- <-> ssub * LibertinusSerif-TLF/b/sc
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{bx}{n}{
+ <-> ssub * LibertinusSerif-TLF/b/n
+}{}
+
+\DeclareFontShape{T1}{LibertinusSerif-TLF}{bx}{scit}{
+ <-> ssub * LibertinusSerif-TLF/b/scit
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-TOsF.fd
index 7585a0b6f1b..fa8de6350a8 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerif-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T1LibertinusSerif-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusSerif-TOsF.]
+ [2024/09/22 (autoinst) Font definitions for T1/LibertinusSerif-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,163 +20,167 @@
\DeclareFontFamily{T1}{LibertinusSerif-TOsF}{}
-% ---- b = bold ----
+% ---- sb = semibold ----
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bold}{sc}{
- <-> alias * LibertinusSerif-TOsF/b/sc
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-TOsF/sb/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-t1
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bold}{n}{
- <-> alias * LibertinusSerif-TOsF/b/n
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-TOsF/sb/sc
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bold}{scit}{
- <-> alias * LibertinusSerif-TOsF/b/scit
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{semibold}{n}{
+ <-> alias * LibertinusSerif-TOsF/sb/n
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-t1
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bold}{it}{
- <-> alias * LibertinusSerif-TOsF/b/it
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{semibold}{it}{
+ <-> alias * LibertinusSerif-TOsF/sb/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{b}{sl}{
- <-> ssub * LibertinusSerif-TOsF/b/it
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/sb/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bold}{sl}{
- <-> ssub * LibertinusSerif-TOsF/bold/it
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/semibold/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{b}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/b/scit
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/sb/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bold}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/bold/scit
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/semibold/it
}{}
-% ---- m = regular ----
+% ---- b = bold ----
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{regular}{sc}{
- <-> alias * LibertinusSerif-TOsF/m/sc
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bold}{n}{
+ <-> alias * LibertinusSerif-TOsF/b/n
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-t1
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{regular}{n}{
- <-> alias * LibertinusSerif-TOsF/m/n
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bold}{sc}{
+ <-> alias * LibertinusSerif-TOsF/b/sc
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{regular}{scit}{
- <-> alias * LibertinusSerif-TOsF/m/scit
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bold}{scit}{
+ <-> alias * LibertinusSerif-TOsF/b/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-t1
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{regular}{it}{
- <-> alias * LibertinusSerif-TOsF/m/it
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bold}{it}{
+ <-> alias * LibertinusSerif-TOsF/b/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{m}{sl}{
- <-> ssub * LibertinusSerif-TOsF/m/it
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{b}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/b/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{regular}{sl}{
- <-> ssub * LibertinusSerif-TOsF/regular/it
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bold}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/bold/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{m}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/m/scit
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{b}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/b/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/regular/scit
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/bold/it
}{}
-% ---- sb = semibold ----
+% ---- m = regular ----
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{semibold}{sc}{
- <-> alias * LibertinusSerif-TOsF/sb/sc
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{regular}{it}{
+ <-> alias * LibertinusSerif-TOsF/m/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-t1
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{semibold}{n}{
- <-> alias * LibertinusSerif-TOsF/sb/n
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{regular}{sc}{
+ <-> alias * LibertinusSerif-TOsF/m/sc
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-sc-t1
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{semibold}{scit}{
- <-> alias * LibertinusSerif-TOsF/sb/scit
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{regular}{scit}{
+ <-> alias * LibertinusSerif-TOsF/m/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-t1
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-t1
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{semibold}{it}{
- <-> alias * LibertinusSerif-TOsF/sb/it
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{regular}{n}{
+ <-> alias * LibertinusSerif-TOsF/m/n
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{sb}{sl}{
- <-> ssub * LibertinusSerif-TOsF/sb/it
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/m/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-TOsF/semibold/it
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/regular/scit
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/sb/scit
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{m}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/m/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/semibold/scit
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/regular/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bx}{it}{
- <-> ssub * LibertinusSerif-TOsF/b/it
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bx}{sc}{
+ <-> ssub * LibertinusSerif-TOsF/b/sc
+}{}
+
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bx}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/b/sl
}{}
\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bx}{scit}{
@@ -187,16 +191,12 @@
<-> ssub * LibertinusSerif-TOsF/b/n
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/b/scsl
-}{}
-
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bx}{sc}{
- <-> ssub * LibertinusSerif-TOsF/b/sc
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bx}{it}{
+ <-> ssub * LibertinusSerif-TOsF/b/it
}{}
-\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bx}{sl}{
- <-> ssub * LibertinusSerif-TOsF/b/sl
+\DeclareFontShape{T1}{LibertinusSerif-TOsF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/b/scsl
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-LF.fd
index 4d1d656cb30..0969b057446 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{T1LibertinusSerifDisplay-LF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusSerifDisplay-LF.]
+ [2025/01/06 (autoinst) Font definitions for T1/LibertinusSerifDisplay-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-OsF.fd
index 4db691dfa04..e7f27072c1d 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{T1LibertinusSerifDisplay-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusSerifDisplay-OsF.]
+ [2025/01/06 (autoinst) Font definitions for T1/LibertinusSerifDisplay-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-Sup.fd
index 2e0bb89039c..c8be09520a5 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-Sup.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{T1LibertinusSerifDisplay-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusSerifDisplay-Sup.]
+ [2025/01/06 (autoinst) Font definitions for T1/LibertinusSerifDisplay-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-TLF.fd
index 22ca1f0e29f..c1ab0fca6b3 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{T1LibertinusSerifDisplay-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusSerifDisplay-TLF.]
+ [2025/01/06 (autoinst) Font definitions for T1/LibertinusSerifDisplay-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-TOsF.fd
index a311ff85802..4c7f62718b9 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{T1LibertinusSerifDisplay-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusSerifDisplay-TOsF.]
+ [2025/01/06 (autoinst) Font definitions for T1/LibertinusSerifDisplay-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifInitials-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifInitials-TLF.fd
deleted file mode 100644
index 8af996d58af..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifInitials-TLF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T1LibertinusSerifInitials-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusSerifInitials-TLF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifInitials@scale\endcsname\relax
- \let\LibertinusSerifInitials@@scale\@empty
-\else
- \edef\LibertinusSerifInitials@@scale{s*[\csname LibertinusSerifInitials@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T1}{LibertinusSerifInitials-TLF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T1}{LibertinusSerifInitials-TLF}{m}{n}{
- <-> \LibertinusSerifInitials@@scale LibertinusSerifInitials-Regular-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusSerifInitials-TLF}{regular}{n}{
- <-> alias * LibertinusSerifInitials-TLF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusMono-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusMono-TLF.fd
new file mode 100644
index 00000000000..2fde6e166f2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusMono-TLF.fd
@@ -0,0 +1,36 @@
+%% Generated by autoinst on 2024/09/22
+%%
+\ProvidesFile{T2ALibertinusMono-TLF.fd}
+ [2024/09/22 (autoinst) Font definitions for T2A/LibertinusMono-TLF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname LibertinusMono@scale\endcsname\relax
+ \let\LibertinusMono@@scale\@empty
+\else
+ \edef\LibertinusMono@@scale{s*[\csname LibertinusMono@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T2A}{LibertinusMono-TLF}{\hyphenchar\font=-1}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T2A}{LibertinusMono-TLF}{m}{n}{
+ <-> \LibertinusMono@@scale LibertinusMono-Regular-tlf-t2a
+}{}
+
+\DeclareFontShape{T2A}{LibertinusMono-TLF}{regular}{n}{
+ <-> alias * LibertinusMono-TLF/m/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-LF.fd
index de49abb93f5..3a7b880807f 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2ALibertinusSans-LF.fd}
- [2022/11/07 (autoinst) Font definitions for T2A/LibertinusSans-LF.]
+ [2024/09/22 (autoinst) Font definitions for T2A/LibertinusSans-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,59 +20,24 @@
\DeclareFontFamily{T2A}{LibertinusSans-LF}{}
-% ---- b = bold ----
-
-\DeclareFontShape{T2A}{LibertinusSans-LF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-lf-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-LF}{bold}{sl}{
- <-> alias * LibertinusSans-LF/b/sl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-LF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-LF}{bold}{n}{
- <-> alias * LibertinusSans-LF/b/n
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-LF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-sc-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-LF}{bold}{sc}{
- <-> alias * LibertinusSans-LF/b/sc
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-LF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-lf-sc-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-LF}{bold}{scsl}{
- <-> alias * LibertinusSans-LF/b/scsl
-}{}
+% ---- m = regular ----
-\DeclareFontShape{T2A}{LibertinusSans-LF}{b}{it}{
- <-> ssub * LibertinusSans-LF/b/sl
+\DeclareFontShape{T2A}{LibertinusSans-LF}{m}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-lf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSans-LF}{bold}{it}{
- <-> ssub * LibertinusSans-LF/bold/sl
+\DeclareFontShape{T2A}{LibertinusSans-LF}{regular}{n}{
+ <-> alias * LibertinusSans-LF/m/n
}{}
-\DeclareFontShape{T2A}{LibertinusSans-LF}{b}{scit}{
- <-> ssub * LibertinusSans-LF/b/scsl
+\DeclareFontShape{T2A}{LibertinusSans-LF}{m}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-lf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSans-LF}{bold}{scit}{
- <-> ssub * LibertinusSans-LF/bold/scsl
+\DeclareFontShape{T2A}{LibertinusSans-LF}{regular}{sc}{
+ <-> alias * LibertinusSans-LF/m/sc
}{}
-
-% ---- m = regular ----
-
\DeclareFontShape{T2A}{LibertinusSans-LF}{m}{scit}{
<-> \LibertinusSans@@scale LibertinusSans-Italic-lf-sc-t2a
}{}
@@ -89,22 +54,6 @@
<-> alias * LibertinusSans-LF/m/it
}{}
-\DeclareFontShape{T2A}{LibertinusSans-LF}{m}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-lf-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-LF}{regular}{n}{
- <-> alias * LibertinusSans-LF/m/n
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-LF}{m}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-lf-sc-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-LF}{regular}{sc}{
- <-> alias * LibertinusSans-LF/m/sc
-}{}
-
\DeclareFontShape{T2A}{LibertinusSans-LF}{m}{scsl}{
<-> ssub * LibertinusSans-LF/m/scit
}{}
@@ -122,30 +71,33 @@
}{}
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+% ---- b = bold ----
-\DeclareFontShape{T2A}{LibertinusSans-LF}{bx}{it}{
- <-> ssub * LibertinusSans-LF/b/it
+\DeclareFontShape{T2A}{LibertinusSans-LF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSans-LF}{bx}{scsl}{
- <-> ssub * LibertinusSans-LF/b/scsl
+\DeclareFontShape{T2A}{LibertinusSans-LF}{bold}{sc}{
+ <-> alias * LibertinusSans-LF/b/sc
}{}
-\DeclareFontShape{T2A}{LibertinusSans-LF}{bx}{scit}{
- <-> ssub * LibertinusSans-LF/b/scit
+\DeclareFontShape{T2A}{LibertinusSans-LF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSans-LF}{bx}{sc}{
- <-> ssub * LibertinusSans-LF/b/sc
+\DeclareFontShape{T2A}{LibertinusSans-LF}{bold}{n}{
+ <-> alias * LibertinusSans-LF/b/n
}{}
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
\DeclareFontShape{T2A}{LibertinusSans-LF}{bx}{n}{
<-> ssub * LibertinusSans-LF/b/n
}{}
-\DeclareFontShape{T2A}{LibertinusSans-LF}{bx}{sl}{
- <-> ssub * LibertinusSans-LF/b/sl
+\DeclareFontShape{T2A}{LibertinusSans-LF}{bx}{sc}{
+ <-> ssub * LibertinusSans-LF/b/sc
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-OsF.fd
index 6ef263fc13d..187bf1a74a7 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2ALibertinusSans-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2A/LibertinusSans-OsF.]
+ [2024/09/22 (autoinst) Font definitions for T2A/LibertinusSans-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,6 +20,25 @@
\DeclareFontFamily{T2A}{LibertinusSans-OsF}{}
+% ---- b = bold ----
+
+\DeclareFontShape{T2A}{LibertinusSans-OsF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-sc-t2a
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSans-OsF}{bold}{sc}{
+ <-> alias * LibertinusSans-OsF/b/sc
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSans-OsF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-t2a
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSans-OsF}{bold}{n}{
+ <-> alias * LibertinusSans-OsF/b/n
+}{}
+
+
% ---- m = regular ----
\DeclareFontShape{T2A}{LibertinusSans-OsF}{m}{scit}{
@@ -30,12 +49,12 @@
<-> alias * LibertinusSans-OsF/m/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-osf-t2a
+\DeclareFontShape{T2A}{LibertinusSans-OsF}{m}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-osf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{regular}{it}{
- <-> alias * LibertinusSans-OsF/m/it
+\DeclareFontShape{T2A}{LibertinusSans-OsF}{regular}{sc}{
+ <-> alias * LibertinusSans-OsF/m/sc
}{}
\DeclareFontShape{T2A}{LibertinusSans-OsF}{m}{n}{
@@ -46,12 +65,12 @@
<-> alias * LibertinusSans-OsF/m/n
}{}
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{m}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-osf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSans-OsF}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-osf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{regular}{sc}{
- <-> alias * LibertinusSans-OsF/m/sc
+\DeclareFontShape{T2A}{LibertinusSans-OsF}{regular}{it}{
+ <-> alias * LibertinusSans-OsF/m/it
}{}
\DeclareFontShape{T2A}{LibertinusSans-OsF}{m}{scsl}{
@@ -71,81 +90,14 @@
}{}
-% ---- b = bold ----
-
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-sc-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{bold}{sc}{
- <-> alias * LibertinusSans-OsF/b/sc
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-osf-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{bold}{sl}{
- <-> alias * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{bold}{n}{
- <-> alias * LibertinusSans-OsF/b/n
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-osf-sc-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{bold}{scsl}{
- <-> alias * LibertinusSans-OsF/b/scsl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{b}{it}{
- <-> ssub * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{bold}{it}{
- <-> ssub * LibertinusSans-OsF/bold/sl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{b}{scit}{
- <-> ssub * LibertinusSans-OsF/b/scsl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{bold}{scit}{
- <-> ssub * LibertinusSans-OsF/bold/scsl
-}{}
-
-
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{bx}{scsl}{
- <-> ssub * LibertinusSans-OsF/b/scsl
+\DeclareFontShape{T2A}{LibertinusSans-OsF}{bx}{sc}{
+ <-> ssub * LibertinusSans-OsF/b/sc
}{}
\DeclareFontShape{T2A}{LibertinusSans-OsF}{bx}{n}{
<-> ssub * LibertinusSans-OsF/b/n
}{}
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{bx}{scit}{
- <-> ssub * LibertinusSans-OsF/b/scit
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{bx}{it}{
- <-> ssub * LibertinusSans-OsF/b/it
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{bx}{sl}{
- <-> ssub * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-OsF}{bx}{sc}{
- <-> ssub * LibertinusSans-OsF/b/sc
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-Sup.fd
index 55f0a6d963d..d4581fd5082 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-Sup.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2ALibertinusSans-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for T2A/LibertinusSans-Sup.]
+ [2024/09/22 (autoinst) Font definitions for T2A/LibertinusSans-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,35 +20,16 @@
\DeclareFontFamily{T2A}{LibertinusSans-Sup}{}
-% ---- b = bold ----
-
-\DeclareFontShape{T2A}{LibertinusSans-Sup}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-sup-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-Sup}{bold}{n}{
- <-> alias * LibertinusSans-Sup/b/n
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-Sup}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-sup-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-Sup}{bold}{sl}{
- <-> alias * LibertinusSans-Sup/b/sl
-}{}
+% ---- m = regular ----
-\DeclareFontShape{T2A}{LibertinusSans-Sup}{b}{it}{
- <-> ssub * LibertinusSans-Sup/b/sl
+\DeclareFontShape{T2A}{LibertinusSans-Sup}{m}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-sup-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSans-Sup}{bold}{it}{
- <-> ssub * LibertinusSans-Sup/bold/sl
+\DeclareFontShape{T2A}{LibertinusSans-Sup}{regular}{n}{
+ <-> alias * LibertinusSans-Sup/m/n
}{}
-
-% ---- m = regular ----
-
\DeclareFontShape{T2A}{LibertinusSans-Sup}{m}{it}{
<-> \LibertinusSans@@scale LibertinusSans-Italic-sup-t2a
}{}
@@ -57,14 +38,6 @@
<-> alias * LibertinusSans-Sup/m/it
}{}
-\DeclareFontShape{T2A}{LibertinusSans-Sup}{m}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-sup-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-Sup}{regular}{n}{
- <-> alias * LibertinusSans-Sup/m/n
-}{}
-
\DeclareFontShape{T2A}{LibertinusSans-Sup}{m}{sl}{
<-> ssub * LibertinusSans-Sup/m/it
}{}
@@ -74,18 +47,21 @@
}{}
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+% ---- b = bold ----
-\DeclareFontShape{T2A}{LibertinusSans-Sup}{bx}{n}{
- <-> ssub * LibertinusSans-Sup/b/n
+\DeclareFontShape{T2A}{LibertinusSans-Sup}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-sup-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSans-Sup}{bx}{sl}{
- <-> ssub * LibertinusSans-Sup/b/sl
+\DeclareFontShape{T2A}{LibertinusSans-Sup}{bold}{n}{
+ <-> alias * LibertinusSans-Sup/b/n
}{}
-\DeclareFontShape{T2A}{LibertinusSans-Sup}{bx}{it}{
- <-> ssub * LibertinusSans-Sup/b/it
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T2A}{LibertinusSans-Sup}{bx}{n}{
+ <-> ssub * LibertinusSans-Sup/b/n
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-TLF.fd
index 2b1da877b6f..e9a00a000f5 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2ALibertinusSans-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T2A/LibertinusSans-TLF.]
+ [2024/09/22 (autoinst) Font definitions for T2A/LibertinusSans-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,14 +22,6 @@
% ---- b = bold ----
-\DeclareFontShape{T2A}{LibertinusSans-TLF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tlf-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TLF}{bold}{sl}{
- <-> alias * LibertinusSans-TLF/b/sl
-}{}
-
\DeclareFontShape{T2A}{LibertinusSans-TLF}{b}{n}{
<-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-t2a
}{}
@@ -46,39 +38,15 @@
<-> alias * LibertinusSans-TLF/b/sc
}{}
-\DeclareFontShape{T2A}{LibertinusSans-TLF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tlf-sc-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TLF}{bold}{scsl}{
- <-> alias * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TLF}{b}{it}{
- <-> ssub * LibertinusSans-TLF/b/sl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TLF}{bold}{it}{
- <-> ssub * LibertinusSans-TLF/bold/sl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TLF}{b}{scit}{
- <-> ssub * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TLF}{bold}{scit}{
- <-> ssub * LibertinusSans-TLF/bold/scsl
-}{}
-
% ---- m = regular ----
-\DeclareFontShape{T2A}{LibertinusSans-TLF}{m}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-tlf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSans-TLF}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-tlf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSans-TLF}{regular}{sc}{
- <-> alias * LibertinusSans-TLF/m/sc
+\DeclareFontShape{T2A}{LibertinusSans-TLF}{regular}{it}{
+ <-> alias * LibertinusSans-TLF/m/it
}{}
\DeclareFontShape{T2A}{LibertinusSans-TLF}{m}{n}{
@@ -89,14 +57,6 @@
<-> alias * LibertinusSans-TLF/m/n
}{}
-\DeclareFontShape{T2A}{LibertinusSans-TLF}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-tlf-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TLF}{regular}{it}{
- <-> alias * LibertinusSans-TLF/m/it
-}{}
-
\DeclareFontShape{T2A}{LibertinusSans-TLF}{m}{scit}{
<-> \LibertinusSans@@scale LibertinusSans-Italic-tlf-sc-t2a
}{}
@@ -105,6 +65,14 @@
<-> alias * LibertinusSans-TLF/m/scit
}{}
+\DeclareFontShape{T2A}{LibertinusSans-TLF}{m}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-tlf-sc-t2a
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSans-TLF}{regular}{sc}{
+ <-> alias * LibertinusSans-TLF/m/sc
+}{}
+
\DeclareFontShape{T2A}{LibertinusSans-TLF}{m}{scsl}{
<-> ssub * LibertinusSans-TLF/m/scit
}{}
@@ -124,28 +92,12 @@
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T2A}{LibertinusSans-TLF}{bx}{sl}{
- <-> ssub * LibertinusSans-TLF/b/sl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TLF}{bx}{n}{
- <-> ssub * LibertinusSans-TLF/b/n
-}{}
-
\DeclareFontShape{T2A}{LibertinusSans-TLF}{bx}{sc}{
<-> ssub * LibertinusSans-TLF/b/sc
}{}
-\DeclareFontShape{T2A}{LibertinusSans-TLF}{bx}{scit}{
- <-> ssub * LibertinusSans-TLF/b/scit
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TLF}{bx}{scsl}{
- <-> ssub * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TLF}{bx}{it}{
- <-> ssub * LibertinusSans-TLF/b/it
+\DeclareFontShape{T2A}{LibertinusSans-TLF}{bx}{n}{
+ <-> ssub * LibertinusSans-TLF/b/n
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-TOsF.fd
index d482ea4a37b..c8840ac612e 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSans-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2ALibertinusSans-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2A/LibertinusSans-TOsF.]
+ [2024/09/22 (autoinst) Font definitions for T2A/LibertinusSans-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,14 +20,33 @@
\DeclareFontFamily{T2A}{LibertinusSans-TOsF}{}
+% ---- b = bold ----
+
+\DeclareFontShape{T2A}{LibertinusSans-TOsF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-sc-t2a
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSans-TOsF}{bold}{sc}{
+ <-> alias * LibertinusSans-TOsF/b/sc
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSans-TOsF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-t2a
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSans-TOsF}{bold}{n}{
+ <-> alias * LibertinusSans-TOsF/b/n
+}{}
+
+
% ---- m = regular ----
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{m}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-tosf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSans-TOsF}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-tosf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{regular}{sc}{
- <-> alias * LibertinusSans-TOsF/m/sc
+\DeclareFontShape{T2A}{LibertinusSans-TOsF}{regular}{it}{
+ <-> alias * LibertinusSans-TOsF/m/it
}{}
\DeclareFontShape{T2A}{LibertinusSans-TOsF}{m}{n}{
@@ -38,12 +57,12 @@
<-> alias * LibertinusSans-TOsF/m/n
}{}
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-tosf-t2a
+\DeclareFontShape{T2A}{LibertinusSans-TOsF}{m}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-tosf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{regular}{it}{
- <-> alias * LibertinusSans-TOsF/m/it
+\DeclareFontShape{T2A}{LibertinusSans-TOsF}{regular}{sc}{
+ <-> alias * LibertinusSans-TOsF/m/sc
}{}
\DeclareFontShape{T2A}{LibertinusSans-TOsF}{m}{scit}{
@@ -71,81 +90,14 @@
}{}
-% ---- b = bold ----
-
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-sc-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{bold}{sc}{
- <-> alias * LibertinusSans-TOsF/b/sc
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{bold}{n}{
- <-> alias * LibertinusSans-TOsF/b/n
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tosf-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{bold}{sl}{
- <-> alias * LibertinusSans-TOsF/b/sl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tosf-sc-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{bold}{scsl}{
- <-> alias * LibertinusSans-TOsF/b/scsl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{b}{it}{
- <-> ssub * LibertinusSans-TOsF/b/sl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{bold}{it}{
- <-> ssub * LibertinusSans-TOsF/bold/sl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{b}{scit}{
- <-> ssub * LibertinusSans-TOsF/b/scsl
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{bold}{scit}{
- <-> ssub * LibertinusSans-TOsF/bold/scsl
-}{}
-
-
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{bx}{scsl}{
- <-> ssub * LibertinusSans-TOsF/b/scsl
-}{}
-
\DeclareFontShape{T2A}{LibertinusSans-TOsF}{bx}{n}{
<-> ssub * LibertinusSans-TOsF/b/n
}{}
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{bx}{it}{
- <-> ssub * LibertinusSans-TOsF/b/it
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{bx}{scit}{
- <-> ssub * LibertinusSans-TOsF/b/scit
-}{}
-
\DeclareFontShape{T2A}{LibertinusSans-TOsF}{bx}{sc}{
<-> ssub * LibertinusSans-TOsF/b/sc
}{}
-\DeclareFontShape{T2A}{LibertinusSans-TOsF}{bx}{sl}{
- <-> ssub * LibertinusSans-TOsF/b/sl
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-LF.fd
index f8f12574c19..804ae028ab4 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2ALibertinusSerif-LF.fd}
- [2022/11/07 (autoinst) Font definitions for T2A/LibertinusSerif-LF.]
+ [2024/09/22 (autoinst) Font definitions for T2A/LibertinusSerif-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,20 +22,20 @@
% ---- b = bold ----
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{bold}{sc}{
- <-> alias * LibertinusSerif-LF/b/sc
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{bold}{scit}{
+ <-> alias * LibertinusSerif-LF/b/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{bold}{it}{
- <-> alias * LibertinusSerif-LF/b/it
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{bold}{sc}{
+ <-> alias * LibertinusSerif-LF/b/sc
}{}
\DeclareFontShape{T2A}{LibertinusSerif-LF}{b}{n}{
@@ -46,20 +46,12 @@
<-> alias * LibertinusSerif-LF/b/n
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-sc-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{bold}{scit}{
- <-> alias * LibertinusSerif-LF/b/scit
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{b}{sl}{
- <-> ssub * LibertinusSerif-LF/b/it
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{bold}{sl}{
- <-> ssub * LibertinusSerif-LF/bold/it
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{bold}{it}{
+ <-> alias * LibertinusSerif-LF/b/it
}{}
\DeclareFontShape{T2A}{LibertinusSerif-LF}{b}{scsl}{
@@ -70,106 +62,114 @@
<-> ssub * LibertinusSerif-LF/bold/scit
}{}
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{b}{sl}{
+ <-> ssub * LibertinusSerif-LF/b/it
+}{}
-% ---- m = regular ----
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-LF/bold/it
+}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-sc-t2a
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{regular}{sc}{
- <-> alias * LibertinusSerif-LF/m/sc
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{semibold}{n}{
+ <-> alias * LibertinusSerif-LF/sb/n
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{regular}{it}{
- <-> alias * LibertinusSerif-LF/m/it
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-LF/sb/sc
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{regular}{scit}{
- <-> alias * LibertinusSerif-LF/m/scit
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-LF/sb/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{regular}{n}{
- <-> alias * LibertinusSerif-LF/m/n
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{semibold}{it}{
+ <-> alias * LibertinusSerif-LF/sb/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{m}{sl}{
- <-> ssub * LibertinusSerif-LF/m/it
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-LF/sb/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{regular}{sl}{
- <-> ssub * LibertinusSerif-LF/regular/it
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-LF/semibold/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{m}{scsl}{
- <-> ssub * LibertinusSerif-LF/m/scit
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-LF/sb/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-LF/regular/scit
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-LF/semibold/it
}{}
-% ---- sb = semibold ----
+% ---- m = regular ----
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{semibold}{sc}{
- <-> alias * LibertinusSerif-LF/sb/sc
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{regular}{sc}{
+ <-> alias * LibertinusSerif-LF/m/sc
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{semibold}{it}{
- <-> alias * LibertinusSerif-LF/sb/it
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{regular}{scit}{
+ <-> alias * LibertinusSerif-LF/m/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{semibold}{scit}{
- <-> alias * LibertinusSerif-LF/sb/scit
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{regular}{n}{
+ <-> alias * LibertinusSerif-LF/m/n
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{semibold}{n}{
- <-> alias * LibertinusSerif-LF/sb/n
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{regular}{it}{
+ <-> alias * LibertinusSerif-LF/m/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{sb}{sl}{
- <-> ssub * LibertinusSerif-LF/sb/it
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-LF/m/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-LF/semibold/it
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-LF/regular/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-LF/sb/scit
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{m}{sl}{
+ <-> ssub * LibertinusSerif-LF/m/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-LF/semibold/scit
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-LF/regular/it
}{}
@@ -179,24 +179,24 @@
<-> ssub * LibertinusSerif-LF/b/n
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{bx}{sc}{
- <-> ssub * LibertinusSerif-LF/b/sc
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{bx}{scit}{
+ <-> ssub * LibertinusSerif-LF/b/scit
}{}
\DeclareFontShape{T2A}{LibertinusSerif-LF}{bx}{sl}{
<-> ssub * LibertinusSerif-LF/b/sl
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{bx}{scit}{
- <-> ssub * LibertinusSerif-LF/b/scit
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-LF}{bx}{it}{
- <-> ssub * LibertinusSerif-LF/b/it
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{bx}{sc}{
+ <-> ssub * LibertinusSerif-LF/b/sc
}{}
\DeclareFontShape{T2A}{LibertinusSerif-LF}{bx}{scsl}{
<-> ssub * LibertinusSerif-LF/b/scsl
}{}
+\DeclareFontShape{T2A}{LibertinusSerif-LF}{bx}{it}{
+ <-> ssub * LibertinusSerif-LF/b/it
+}{}
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-OsF.fd
index 5654bcd2d5d..544e0425279 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2ALibertinusSerif-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2A/LibertinusSerif-OsF.]
+ [2024/09/22 (autoinst) Font definitions for T2A/LibertinusSerif-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,179 +20,179 @@
\DeclareFontFamily{T2A}{LibertinusSerif-OsF}{}
-% ---- sb = semibold ----
+% ---- b = bold ----
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{semibold}{it}{
- <-> alias * LibertinusSerif-OsF/sb/it
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bold}{it}{
+ <-> alias * LibertinusSerif-OsF/b/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{semibold}{scit}{
- <-> alias * LibertinusSerif-OsF/sb/scit
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bold}{n}{
+ <-> alias * LibertinusSerif-OsF/b/n
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{semibold}{n}{
- <-> alias * LibertinusSerif-OsF/sb/n
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bold}{scit}{
+ <-> alias * LibertinusSerif-OsF/b/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{semibold}{sc}{
- <-> alias * LibertinusSerif-OsF/sb/sc
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bold}{sc}{
+ <-> alias * LibertinusSerif-OsF/b/sc
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{sb}{sl}{
- <-> ssub * LibertinusSerif-OsF/sb/it
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{b}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/b/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-OsF/semibold/it
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bold}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/bold/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-OsF/sb/scit
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{b}{sl}{
+ <-> ssub * LibertinusSerif-OsF/b/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-OsF/semibold/scit
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-OsF/bold/it
}{}
-% ---- m = regular ----
+% ---- sb = semibold ----
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{regular}{scit}{
- <-> alias * LibertinusSerif-OsF/m/scit
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{semibold}{it}{
+ <-> alias * LibertinusSerif-OsF/sb/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{regular}{n}{
- <-> alias * LibertinusSerif-OsF/m/n
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{semibold}{n}{
+ <-> alias * LibertinusSerif-OsF/sb/n
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{regular}{it}{
- <-> alias * LibertinusSerif-OsF/m/it
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-OsF/sb/sc
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{regular}{sc}{
- <-> alias * LibertinusSerif-OsF/m/sc
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-OsF/sb/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{m}{sl}{
- <-> ssub * LibertinusSerif-OsF/m/it
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/sb/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{regular}{sl}{
- <-> ssub * LibertinusSerif-OsF/regular/it
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/semibold/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{m}{scsl}{
- <-> ssub * LibertinusSerif-OsF/m/scit
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-OsF/sb/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-OsF/regular/scit
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-OsF/semibold/it
}{}
-% ---- b = bold ----
+% ---- m = regular ----
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bold}{sc}{
- <-> alias * LibertinusSerif-OsF/b/sc
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{regular}{scit}{
+ <-> alias * LibertinusSerif-OsF/m/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bold}{n}{
- <-> alias * LibertinusSerif-OsF/b/n
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{regular}{sc}{
+ <-> alias * LibertinusSerif-OsF/m/sc
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bold}{scit}{
- <-> alias * LibertinusSerif-OsF/b/scit
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{regular}{n}{
+ <-> alias * LibertinusSerif-OsF/m/n
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bold}{it}{
- <-> alias * LibertinusSerif-OsF/b/it
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{regular}{it}{
+ <-> alias * LibertinusSerif-OsF/m/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{b}{sl}{
- <-> ssub * LibertinusSerif-OsF/b/it
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/m/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bold}{sl}{
- <-> ssub * LibertinusSerif-OsF/bold/it
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/regular/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{b}{scsl}{
- <-> ssub * LibertinusSerif-OsF/b/scit
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{m}{sl}{
+ <-> ssub * LibertinusSerif-OsF/m/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bold}{scsl}{
- <-> ssub * LibertinusSerif-OsF/bold/scit
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-OsF/regular/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-OsF/b/scsl
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bx}{n}{
+ <-> ssub * LibertinusSerif-OsF/b/n
}{}
\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bx}{sl}{
<-> ssub * LibertinusSerif-OsF/b/sl
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bx}{sc}{
- <-> ssub * LibertinusSerif-OsF/b/sc
-}{}
-
\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bx}{scit}{
<-> ssub * LibertinusSerif-OsF/b/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bx}{n}{
- <-> ssub * LibertinusSerif-OsF/b/n
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bx}{sc}{
+ <-> ssub * LibertinusSerif-OsF/b/sc
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/b/scsl
}{}
\DeclareFontShape{T2A}{LibertinusSerif-OsF}{bx}{it}{
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-Sup.fd
index ede58c58bb5..5c11bf7bca5 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-Sup.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2ALibertinusSerif-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for T2A/LibertinusSerif-Sup.]
+ [2024/09/22 (autoinst) Font definitions for T2A/LibertinusSerif-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,33 +20,6 @@
\DeclareFontFamily{T2A}{LibertinusSerif-Sup}{}
-% ---- m = regular ----
-
-\DeclareFontShape{T2A}{LibertinusSerif-Sup}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-sup-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-Sup}{regular}{n}{
- <-> alias * LibertinusSerif-Sup/m/n
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-Sup}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-sup-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-Sup}{regular}{it}{
- <-> alias * LibertinusSerif-Sup/m/it
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-Sup}{m}{sl}{
- <-> ssub * LibertinusSerif-Sup/m/it
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-Sup}{regular}{sl}{
- <-> ssub * LibertinusSerif-Sup/regular/it
-}{}
-
-
% ---- b = bold ----
\DeclareFontShape{T2A}{LibertinusSerif-Sup}{b}{it}{
@@ -76,14 +49,6 @@
% ---- sb = semibold ----
-\DeclareFontShape{T2A}{LibertinusSerif-Sup}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-sup-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-Sup}{semibold}{n}{
- <-> alias * LibertinusSerif-Sup/sb/n
-}{}
-
\DeclareFontShape{T2A}{LibertinusSerif-Sup}{sb}{it}{
<-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-sup-t2a
}{}
@@ -92,6 +57,14 @@
<-> alias * LibertinusSerif-Sup/sb/it
}{}
+\DeclareFontShape{T2A}{LibertinusSerif-Sup}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-sup-t2a
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-Sup}{semibold}{n}{
+ <-> alias * LibertinusSerif-Sup/sb/n
+}{}
+
\DeclareFontShape{T2A}{LibertinusSerif-Sup}{sb}{sl}{
<-> ssub * LibertinusSerif-Sup/sb/it
}{}
@@ -101,12 +74,35 @@
}{}
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+% ---- m = regular ----
-\DeclareFontShape{T2A}{LibertinusSerif-Sup}{bx}{it}{
- <-> ssub * LibertinusSerif-Sup/b/it
+\DeclareFontShape{T2A}{LibertinusSerif-Sup}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-sup-t2a
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-Sup}{regular}{it}{
+ <-> alias * LibertinusSerif-Sup/m/it
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-Sup}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-sup-t2a
}{}
+\DeclareFontShape{T2A}{LibertinusSerif-Sup}{regular}{n}{
+ <-> alias * LibertinusSerif-Sup/m/n
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-Sup}{m}{sl}{
+ <-> ssub * LibertinusSerif-Sup/m/it
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-Sup}{regular}{sl}{
+ <-> ssub * LibertinusSerif-Sup/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
\DeclareFontShape{T2A}{LibertinusSerif-Sup}{bx}{n}{
<-> ssub * LibertinusSerif-Sup/b/n
}{}
@@ -115,4 +111,8 @@
<-> ssub * LibertinusSerif-Sup/b/sl
}{}
+\DeclareFontShape{T2A}{LibertinusSerif-Sup}{bx}{it}{
+ <-> ssub * LibertinusSerif-Sup/b/it
+}{}
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-TLF.fd
index d91cdfc37f6..c6aa91ec91e 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2ALibertinusSerif-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T2A/LibertinusSerif-TLF.]
+ [2024/09/22 (autoinst) Font definitions for T2A/LibertinusSerif-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,6 +20,57 @@
\DeclareFontFamily{T2A}{LibertinusSerif-TLF}{}
+% ---- sb = semibold ----
+
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-sc-t2a
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-TLF/sb/sc
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-sc-t2a
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-TLF/sb/scit
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-t2a
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{semibold}{n}{
+ <-> alias * LibertinusSerif-TLF/sb/n
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-t2a
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{semibold}{it}{
+ <-> alias * LibertinusSerif-TLF/sb/it
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/sb/scit
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/semibold/scit
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-TLF/sb/it
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-TLF/semibold/it
+}{}
+
+
% ---- b = bold ----
\DeclareFontShape{T2A}{LibertinusSerif-TLF}{b}{scit}{
@@ -30,6 +81,14 @@
<-> alias * LibertinusSerif-TLF/b/scit
}{}
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-sc-t2a
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{bold}{sc}{
+ <-> alias * LibertinusSerif-TLF/b/sc
+}{}
+
\DeclareFontShape{T2A}{LibertinusSerif-TLF}{b}{n}{
<-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-t2a
}{}
@@ -46,12 +105,12 @@
<-> alias * LibertinusSerif-TLF/b/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{b}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/b/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{bold}{sc}{
- <-> alias * LibertinusSerif-TLF/b/sc
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{bold}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/bold/scit
}{}
\DeclareFontShape{T2A}{LibertinusSerif-TLF}{b}{sl}{
@@ -62,14 +121,6 @@
<-> ssub * LibertinusSerif-TLF/bold/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{b}{scsl}{
- <-> ssub * LibertinusSerif-TLF/b/scit
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{bold}{scsl}{
- <-> ssub * LibertinusSerif-TLF/bold/scit
-}{}
-
% ---- m = regular ----
@@ -89,14 +140,6 @@
<-> alias * LibertinusSerif-TLF/m/n
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-sc-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{regular}{scit}{
- <-> alias * LibertinusSerif-TLF/m/scit
-}{}
-
\DeclareFontShape{T2A}{LibertinusSerif-TLF}{m}{sc}{
<-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-sc-t2a
}{}
@@ -105,12 +148,12 @@
<-> alias * LibertinusSerif-TLF/m/sc
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{m}{sl}{
- <-> ssub * LibertinusSerif-TLF/m/it
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{regular}{sl}{
- <-> ssub * LibertinusSerif-TLF/regular/it
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{regular}{scit}{
+ <-> alias * LibertinusSerif-TLF/m/scit
}{}
\DeclareFontShape{T2A}{LibertinusSerif-TLF}{m}{scsl}{
@@ -121,62 +164,31 @@
<-> ssub * LibertinusSerif-TLF/regular/scit
}{}
-
-% ---- sb = semibold ----
-
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-sc-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{semibold}{sc}{
- <-> alias * LibertinusSerif-TLF/sb/sc
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{semibold}{it}{
- <-> alias * LibertinusSerif-TLF/sb/it
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-sc-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{semibold}{scit}{
- <-> alias * LibertinusSerif-TLF/sb/scit
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{m}{sl}{
+ <-> ssub * LibertinusSerif-TLF/m/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-TLF/regular/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{semibold}{n}{
- <-> alias * LibertinusSerif-TLF/sb/n
-}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{sb}{sl}{
- <-> ssub * LibertinusSerif-TLF/sb/it
-}{}
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-TLF/semibold/it
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{bx}{it}{
+ <-> ssub * LibertinusSerif-TLF/b/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-TLF/sb/scit
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/b/scsl
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-TLF/semibold/scit
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{bx}{scit}{
+ <-> ssub * LibertinusSerif-TLF/b/scit
}{}
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-TLF/b/scsl
+\DeclareFontShape{T2A}{LibertinusSerif-TLF}{bx}{n}{
+ <-> ssub * LibertinusSerif-TLF/b/n
}{}
\DeclareFontShape{T2A}{LibertinusSerif-TLF}{bx}{sc}{
@@ -187,16 +199,4 @@
<-> ssub * LibertinusSerif-TLF/b/sl
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{bx}{it}{
- <-> ssub * LibertinusSerif-TLF/b/it
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{bx}{scit}{
- <-> ssub * LibertinusSerif-TLF/b/scit
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-TLF}{bx}{n}{
- <-> ssub * LibertinusSerif-TLF/b/n
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-TOsF.fd
index dee7c2f94fc..d9dff0ab5fe 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerif-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2ALibertinusSerif-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2A/LibertinusSerif-TOsF.]
+ [2024/09/22 (autoinst) Font definitions for T2A/LibertinusSerif-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,105 +20,105 @@
\DeclareFontFamily{T2A}{LibertinusSerif-TOsF}{}
-% ---- sb = semibold ----
+% ---- b = bold ----
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{semibold}{sc}{
- <-> alias * LibertinusSerif-TOsF/sb/sc
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bold}{it}{
+ <-> alias * LibertinusSerif-TOsF/b/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{semibold}{scit}{
- <-> alias * LibertinusSerif-TOsF/sb/scit
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bold}{scit}{
+ <-> alias * LibertinusSerif-TOsF/b/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{semibold}{n}{
- <-> alias * LibertinusSerif-TOsF/sb/n
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bold}{sc}{
+ <-> alias * LibertinusSerif-TOsF/b/sc
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{semibold}{it}{
- <-> alias * LibertinusSerif-TOsF/sb/it
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bold}{n}{
+ <-> alias * LibertinusSerif-TOsF/b/n
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{sb}{sl}{
- <-> ssub * LibertinusSerif-TOsF/sb/it
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{b}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/b/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-TOsF/semibold/it
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bold}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/bold/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/sb/scit
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{b}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/b/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/semibold/scit
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/bold/it
}{}
-% ---- b = bold ----
+% ---- sb = semibold ----
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bold}{sc}{
- <-> alias * LibertinusSerif-TOsF/b/sc
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{semibold}{n}{
+ <-> alias * LibertinusSerif-TOsF/sb/n
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-sc-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bold}{scit}{
- <-> alias * LibertinusSerif-TOsF/b/scit
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-TOsF/sb/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-sc-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bold}{n}{
- <-> alias * LibertinusSerif-TOsF/b/n
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-TOsF/sb/sc
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bold}{it}{
- <-> alias * LibertinusSerif-TOsF/b/it
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{semibold}{it}{
+ <-> alias * LibertinusSerif-TOsF/sb/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{b}{sl}{
- <-> ssub * LibertinusSerif-TOsF/b/it
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/sb/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bold}{sl}{
- <-> ssub * LibertinusSerif-TOsF/bold/it
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/semibold/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{b}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/b/scit
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/sb/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bold}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/bold/scit
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/semibold/it
}{}
@@ -132,14 +132,6 @@
<-> alias * LibertinusSerif-TOsF/m/sc
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{regular}{n}{
- <-> alias * LibertinusSerif-TOsF/m/n
-}{}
-
\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{m}{scit}{
<-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-sc-t2a
}{}
@@ -148,20 +140,20 @@
<-> alias * LibertinusSerif-TOsF/m/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-t2a
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{regular}{it}{
- <-> alias * LibertinusSerif-TOsF/m/it
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{regular}{n}{
+ <-> alias * LibertinusSerif-TOsF/m/n
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{m}{sl}{
- <-> ssub * LibertinusSerif-TOsF/m/it
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-t2a
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{regular}{sl}{
- <-> ssub * LibertinusSerif-TOsF/regular/it
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{regular}{it}{
+ <-> alias * LibertinusSerif-TOsF/m/it
}{}
\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{m}{scsl}{
@@ -172,31 +164,39 @@
<-> ssub * LibertinusSerif-TOsF/regular/scit
}{}
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bx}{n}{
- <-> ssub * LibertinusSerif-TOsF/b/n
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{m}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/m/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bx}{sl}{
- <-> ssub * LibertinusSerif-TOsF/b/sl
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/regular/it
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bx}{sc}{
- <-> ssub * LibertinusSerif-TOsF/b/sc
-}{}
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bx}{it}{
<-> ssub * LibertinusSerif-TOsF/b/it
}{}
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/b/scsl
+}{}
+
\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bx}{scit}{
<-> ssub * LibertinusSerif-TOsF/b/scit
}{}
-\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/b/scsl
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bx}{n}{
+ <-> ssub * LibertinusSerif-TOsF/b/n
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bx}{sc}{
+ <-> ssub * LibertinusSerif-TOsF/b/sc
+}{}
+
+\DeclareFontShape{T2A}{LibertinusSerif-TOsF}{bx}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/b/sl
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-LF.fd
deleted file mode 100644
index 9d4efd426af..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-LF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2ALibertinusSerifDisplay-LF.fd}
- [2022/11/07 (autoinst) Font definitions for T2A/LibertinusSerifDisplay-LF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2A}{LibertinusSerifDisplay-LF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2A}{LibertinusSerifDisplay-LF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-lf-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerifDisplay-LF}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-LF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-OsF.fd
deleted file mode 100644
index 952f2bdb851..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-OsF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2ALibertinusSerifDisplay-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2A/LibertinusSerifDisplay-OsF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2A}{LibertinusSerifDisplay-OsF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2A}{LibertinusSerifDisplay-OsF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-osf-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerifDisplay-OsF}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-OsF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-Sup.fd
deleted file mode 100644
index cef64ce7771..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-Sup.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2ALibertinusSerifDisplay-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for T2A/LibertinusSerifDisplay-Sup.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2A}{LibertinusSerifDisplay-Sup}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2A}{LibertinusSerifDisplay-Sup}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-sup-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerifDisplay-Sup}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-Sup/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-TLF.fd
deleted file mode 100644
index 900213e7942..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-TLF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2ALibertinusSerifDisplay-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T2A/LibertinusSerifDisplay-TLF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2A}{LibertinusSerifDisplay-TLF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2A}{LibertinusSerifDisplay-TLF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-tlf-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerifDisplay-TLF}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-TLF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-TOsF.fd
deleted file mode 100644
index 7bdac3ddbf5..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifDisplay-TOsF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2ALibertinusSerifDisplay-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2A/LibertinusSerifDisplay-TOsF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2A}{LibertinusSerifDisplay-TOsF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2A}{LibertinusSerifDisplay-TOsF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-tosf-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerifDisplay-TOsF}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-TOsF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifInitials-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifInitials-TLF.fd
deleted file mode 100644
index def3d5dcba5..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2ALibertinusSerifInitials-TLF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2ALibertinusSerifInitials-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T2A/LibertinusSerifInitials-TLF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifInitials@scale\endcsname\relax
- \let\LibertinusSerifInitials@@scale\@empty
-\else
- \edef\LibertinusSerifInitials@@scale{s*[\csname LibertinusSerifInitials@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2A}{LibertinusSerifInitials-TLF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2A}{LibertinusSerifInitials-TLF}{m}{n}{
- <-> \LibertinusSerifInitials@@scale LibertinusSerifInitials-Regular-tlf-t2a
-}{}
-
-\DeclareFontShape{T2A}{LibertinusSerifInitials-TLF}{regular}{n}{
- <-> alias * LibertinusSerifInitials-TLF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusMono-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusMono-TLF.fd
new file mode 100644
index 00000000000..0d945da3ba5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusMono-TLF.fd
@@ -0,0 +1,36 @@
+%% Generated by autoinst on 2024/09/22
+%%
+\ProvidesFile{T2BLibertinusMono-TLF.fd}
+ [2024/09/22 (autoinst) Font definitions for T2B/LibertinusMono-TLF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname LibertinusMono@scale\endcsname\relax
+ \let\LibertinusMono@@scale\@empty
+\else
+ \edef\LibertinusMono@@scale{s*[\csname LibertinusMono@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T2B}{LibertinusMono-TLF}{\hyphenchar\font=-1}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T2B}{LibertinusMono-TLF}{m}{n}{
+ <-> \LibertinusMono@@scale LibertinusMono-Regular-tlf-t2b
+}{}
+
+\DeclareFontShape{T2B}{LibertinusMono-TLF}{regular}{n}{
+ <-> alias * LibertinusMono-TLF/m/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-LF.fd
index c165c2ede19..63bdb754ead 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2BLibertinusSans-LF.fd}
- [2022/11/07 (autoinst) Font definitions for T2B/LibertinusSans-LF.]
+ [2024/09/22 (autoinst) Font definitions for T2B/LibertinusSans-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,20 +22,12 @@
% ---- m = regular ----
-\DeclareFontShape{T2B}{LibertinusSans-LF}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-lf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-LF}{regular}{it}{
- <-> alias * LibertinusSans-LF/m/it
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-LF}{m}{scit}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-lf-sc-t2b
+\DeclareFontShape{T2B}{LibertinusSans-LF}{m}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-lf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSans-LF}{regular}{scit}{
- <-> alias * LibertinusSans-LF/m/scit
+\DeclareFontShape{T2B}{LibertinusSans-LF}{regular}{n}{
+ <-> alias * LibertinusSans-LF/m/n
}{}
\DeclareFontShape{T2B}{LibertinusSans-LF}{m}{sc}{
@@ -46,12 +38,20 @@
<-> alias * LibertinusSans-LF/m/sc
}{}
-\DeclareFontShape{T2B}{LibertinusSans-LF}{m}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-lf-t2b
+\DeclareFontShape{T2B}{LibertinusSans-LF}{m}{scit}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-lf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSans-LF}{regular}{n}{
- <-> alias * LibertinusSans-LF/m/n
+\DeclareFontShape{T2B}{LibertinusSans-LF}{regular}{scit}{
+ <-> alias * LibertinusSans-LF/m/scit
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSans-LF}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-lf-t2b
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSans-LF}{regular}{it}{
+ <-> alias * LibertinusSans-LF/m/it
}{}
\DeclareFontShape{T2B}{LibertinusSans-LF}{m}{scsl}{
@@ -73,22 +73,6 @@
% ---- b = bold ----
-\DeclareFontShape{T2B}{LibertinusSans-LF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-sc-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-LF}{bold}{sc}{
- <-> alias * LibertinusSans-LF/b/sc
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-LF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-lf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-LF}{bold}{sl}{
- <-> alias * LibertinusSans-LF/b/sl
-}{}
-
\DeclareFontShape{T2B}{LibertinusSans-LF}{b}{n}{
<-> \LibertinusSans@@scale LibertinusSans-Bold-lf-t2b
}{}
@@ -97,55 +81,23 @@
<-> alias * LibertinusSans-LF/b/n
}{}
-\DeclareFontShape{T2B}{LibertinusSans-LF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-lf-sc-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-LF}{bold}{scsl}{
- <-> alias * LibertinusSans-LF/b/scsl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-LF}{b}{it}{
- <-> ssub * LibertinusSans-LF/b/sl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-LF}{bold}{it}{
- <-> ssub * LibertinusSans-LF/bold/sl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-LF}{b}{scit}{
- <-> ssub * LibertinusSans-LF/b/scsl
+\DeclareFontShape{T2B}{LibertinusSans-LF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSans-LF}{bold}{scit}{
- <-> ssub * LibertinusSans-LF/bold/scsl
+\DeclareFontShape{T2B}{LibertinusSans-LF}{bold}{sc}{
+ <-> alias * LibertinusSans-LF/b/sc
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T2B}{LibertinusSans-LF}{bx}{scsl}{
- <-> ssub * LibertinusSans-LF/b/scsl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-LF}{bx}{it}{
- <-> ssub * LibertinusSans-LF/b/it
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-LF}{bx}{scit}{
- <-> ssub * LibertinusSans-LF/b/scit
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-LF}{bx}{sc}{
- <-> ssub * LibertinusSans-LF/b/sc
-}{}
-
\DeclareFontShape{T2B}{LibertinusSans-LF}{bx}{n}{
<-> ssub * LibertinusSans-LF/b/n
}{}
-\DeclareFontShape{T2B}{LibertinusSans-LF}{bx}{sl}{
- <-> ssub * LibertinusSans-LF/b/sl
+\DeclareFontShape{T2B}{LibertinusSans-LF}{bx}{sc}{
+ <-> ssub * LibertinusSans-LF/b/sc
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-OsF.fd
index 39f6795c73c..1bdce9e21a6 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2BLibertinusSans-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2B/LibertinusSans-OsF.]
+ [2024/09/22 (autoinst) Font definitions for T2B/LibertinusSans-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,16 +20,27 @@
\DeclareFontFamily{T2B}{LibertinusSans-OsF}{}
-% ---- m = regular ----
+% ---- b = bold ----
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{m}{scit}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-osf-sc-t2b
+\DeclareFontShape{T2B}{LibertinusSans-OsF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{regular}{scit}{
- <-> alias * LibertinusSans-OsF/m/scit
+\DeclareFontShape{T2B}{LibertinusSans-OsF}{bold}{n}{
+ <-> alias * LibertinusSans-OsF/b/n
}{}
+\DeclareFontShape{T2B}{LibertinusSans-OsF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-sc-t2b
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSans-OsF}{bold}{sc}{
+ <-> alias * LibertinusSans-OsF/b/sc
+}{}
+
+
+% ---- m = regular ----
+
\DeclareFontShape{T2B}{LibertinusSans-OsF}{m}{it}{
<-> \LibertinusSans@@scale LibertinusSans-Italic-osf-t2b
}{}
@@ -38,12 +49,12 @@
<-> alias * LibertinusSans-OsF/m/it
}{}
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{m}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-osf-t2b
+\DeclareFontShape{T2B}{LibertinusSans-OsF}{m}{scit}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-osf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{regular}{n}{
- <-> alias * LibertinusSans-OsF/m/n
+\DeclareFontShape{T2B}{LibertinusSans-OsF}{regular}{scit}{
+ <-> alias * LibertinusSans-OsF/m/scit
}{}
\DeclareFontShape{T2B}{LibertinusSans-OsF}{m}{sc}{
@@ -54,6 +65,14 @@
<-> alias * LibertinusSans-OsF/m/sc
}{}
+\DeclareFontShape{T2B}{LibertinusSans-OsF}{m}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-osf-t2b
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSans-OsF}{regular}{n}{
+ <-> alias * LibertinusSans-OsF/m/n
+}{}
+
\DeclareFontShape{T2B}{LibertinusSans-OsF}{m}{scsl}{
<-> ssub * LibertinusSans-OsF/m/scit
}{}
@@ -71,79 +90,12 @@
}{}
-% ---- b = bold ----
-
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{bold}{n}{
- <-> alias * LibertinusSans-OsF/b/n
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-osf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{bold}{sl}{
- <-> alias * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-sc-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{bold}{sc}{
- <-> alias * LibertinusSans-OsF/b/sc
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-osf-sc-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{bold}{scsl}{
- <-> alias * LibertinusSans-OsF/b/scsl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{b}{it}{
- <-> ssub * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{bold}{it}{
- <-> ssub * LibertinusSans-OsF/bold/sl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{b}{scit}{
- <-> ssub * LibertinusSans-OsF/b/scsl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{bold}{scit}{
- <-> ssub * LibertinusSans-OsF/bold/scsl
-}{}
-
-
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{bx}{it}{
- <-> ssub * LibertinusSans-OsF/b/it
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{bx}{scit}{
- <-> ssub * LibertinusSans-OsF/b/scit
-}{}
-
\DeclareFontShape{T2B}{LibertinusSans-OsF}{bx}{sc}{
<-> ssub * LibertinusSans-OsF/b/sc
}{}
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{bx}{sl}{
- <-> ssub * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-OsF}{bx}{scsl}{
- <-> ssub * LibertinusSans-OsF/b/scsl
-}{}
-
\DeclareFontShape{T2B}{LibertinusSans-OsF}{bx}{n}{
<-> ssub * LibertinusSans-OsF/b/n
}{}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-Sup.fd
index a557da421fe..c1e39348775 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-Sup.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2BLibertinusSans-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for T2B/LibertinusSans-Sup.]
+ [2024/09/22 (autoinst) Font definitions for T2B/LibertinusSans-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -30,22 +30,6 @@
<-> alias * LibertinusSans-Sup/b/n
}{}
-\DeclareFontShape{T2B}{LibertinusSans-Sup}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-sup-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-Sup}{bold}{sl}{
- <-> alias * LibertinusSans-Sup/b/sl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-Sup}{b}{it}{
- <-> ssub * LibertinusSans-Sup/b/sl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-Sup}{bold}{it}{
- <-> ssub * LibertinusSans-Sup/bold/sl
-}{}
-
% ---- m = regular ----
@@ -76,16 +60,8 @@
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T2B}{LibertinusSans-Sup}{bx}{sl}{
- <-> ssub * LibertinusSans-Sup/b/sl
-}{}
-
\DeclareFontShape{T2B}{LibertinusSans-Sup}{bx}{n}{
<-> ssub * LibertinusSans-Sup/b/n
}{}
-\DeclareFontShape{T2B}{LibertinusSans-Sup}{bx}{it}{
- <-> ssub * LibertinusSans-Sup/b/it
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-TLF.fd
index bd99d4415bc..7ea2eece959 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2BLibertinusSans-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T2B/LibertinusSans-TLF.]
+ [2024/09/22 (autoinst) Font definitions for T2B/LibertinusSans-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,65 +20,14 @@
\DeclareFontFamily{T2B}{LibertinusSans-TLF}{}
-% ---- b = bold ----
-
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{bold}{n}{
- <-> alias * LibertinusSans-TLF/b/n
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tlf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{bold}{sl}{
- <-> alias * LibertinusSans-TLF/b/sl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-sc-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{bold}{sc}{
- <-> alias * LibertinusSans-TLF/b/sc
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tlf-sc-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{bold}{scsl}{
- <-> alias * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{b}{it}{
- <-> ssub * LibertinusSans-TLF/b/sl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{bold}{it}{
- <-> ssub * LibertinusSans-TLF/bold/sl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{b}{scit}{
- <-> ssub * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{bold}{scit}{
- <-> ssub * LibertinusSans-TLF/bold/scsl
-}{}
-
-
% ---- m = regular ----
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{m}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-tlf-t2b
+\DeclareFontShape{T2B}{LibertinusSans-TLF}{m}{scit}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-tlf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{regular}{n}{
- <-> alias * LibertinusSans-TLF/m/n
+\DeclareFontShape{T2B}{LibertinusSans-TLF}{regular}{scit}{
+ <-> alias * LibertinusSans-TLF/m/scit
}{}
\DeclareFontShape{T2B}{LibertinusSans-TLF}{m}{sc}{
@@ -89,12 +38,12 @@
<-> alias * LibertinusSans-TLF/m/sc
}{}
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{m}{scit}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-tlf-sc-t2b
+\DeclareFontShape{T2B}{LibertinusSans-TLF}{m}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-tlf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{regular}{scit}{
- <-> alias * LibertinusSans-TLF/m/scit
+\DeclareFontShape{T2B}{LibertinusSans-TLF}{regular}{n}{
+ <-> alias * LibertinusSans-TLF/m/n
}{}
\DeclareFontShape{T2B}{LibertinusSans-TLF}{m}{it}{
@@ -122,30 +71,33 @@
}{}
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+% ---- b = bold ----
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{bx}{sc}{
- <-> ssub * LibertinusSans-TLF/b/sc
+\DeclareFontShape{T2B}{LibertinusSans-TLF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{bx}{n}{
- <-> ssub * LibertinusSans-TLF/b/n
+\DeclareFontShape{T2B}{LibertinusSans-TLF}{bold}{n}{
+ <-> alias * LibertinusSans-TLF/b/n
}{}
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{bx}{sl}{
- <-> ssub * LibertinusSans-TLF/b/sl
+\DeclareFontShape{T2B}{LibertinusSans-TLF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{bx}{it}{
- <-> ssub * LibertinusSans-TLF/b/it
+\DeclareFontShape{T2B}{LibertinusSans-TLF}{bold}{sc}{
+ <-> alias * LibertinusSans-TLF/b/sc
}{}
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{bx}{scsl}{
- <-> ssub * LibertinusSans-TLF/b/scsl
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T2B}{LibertinusSans-TLF}{bx}{sc}{
+ <-> ssub * LibertinusSans-TLF/b/sc
}{}
-\DeclareFontShape{T2B}{LibertinusSans-TLF}{bx}{scit}{
- <-> ssub * LibertinusSans-TLF/b/scit
+\DeclareFontShape{T2B}{LibertinusSans-TLF}{bx}{n}{
+ <-> ssub * LibertinusSans-TLF/b/n
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-TOsF.fd
index 7fef592030e..1f446048fc3 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSans-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2BLibertinusSans-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2B/LibertinusSans-TOsF.]
+ [2024/09/22 (autoinst) Font definitions for T2B/LibertinusSans-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,30 +22,6 @@
% ---- b = bold ----
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tosf-sc-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{bold}{scsl}{
- <-> alias * LibertinusSans-TOsF/b/scsl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tosf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{bold}{sl}{
- <-> alias * LibertinusSans-TOsF/b/sl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{bold}{n}{
- <-> alias * LibertinusSans-TOsF/b/n
-}{}
-
\DeclareFontShape{T2B}{LibertinusSans-TOsF}{b}{sc}{
<-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-sc-t2b
}{}
@@ -54,20 +30,12 @@
<-> alias * LibertinusSans-TOsF/b/sc
}{}
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{b}{it}{
- <-> ssub * LibertinusSans-TOsF/b/sl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{bold}{it}{
- <-> ssub * LibertinusSans-TOsF/bold/sl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{b}{scit}{
- <-> ssub * LibertinusSans-TOsF/b/scsl
+\DeclareFontShape{T2B}{LibertinusSans-TOsF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{bold}{scit}{
- <-> ssub * LibertinusSans-TOsF/bold/scsl
+\DeclareFontShape{T2B}{LibertinusSans-TOsF}{bold}{n}{
+ <-> alias * LibertinusSans-TOsF/b/n
}{}
@@ -81,12 +49,12 @@
<-> alias * LibertinusSans-TOsF/m/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-tosf-t2b
+\DeclareFontShape{T2B}{LibertinusSans-TOsF}{m}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-tosf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{regular}{it}{
- <-> alias * LibertinusSans-TOsF/m/it
+\DeclareFontShape{T2B}{LibertinusSans-TOsF}{regular}{sc}{
+ <-> alias * LibertinusSans-TOsF/m/sc
}{}
\DeclareFontShape{T2B}{LibertinusSans-TOsF}{m}{n}{
@@ -97,12 +65,12 @@
<-> alias * LibertinusSans-TOsF/m/n
}{}
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{m}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-tosf-sc-t2b
+\DeclareFontShape{T2B}{LibertinusSans-TOsF}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-tosf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{regular}{sc}{
- <-> alias * LibertinusSans-TOsF/m/sc
+\DeclareFontShape{T2B}{LibertinusSans-TOsF}{regular}{it}{
+ <-> alias * LibertinusSans-TOsF/m/it
}{}
\DeclareFontShape{T2B}{LibertinusSans-TOsF}{m}{scsl}{
@@ -124,26 +92,10 @@
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{bx}{scsl}{
- <-> ssub * LibertinusSans-TOsF/b/scsl
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{bx}{it}{
- <-> ssub * LibertinusSans-TOsF/b/it
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{bx}{scit}{
- <-> ssub * LibertinusSans-TOsF/b/scit
-}{}
-
\DeclareFontShape{T2B}{LibertinusSans-TOsF}{bx}{sc}{
<-> ssub * LibertinusSans-TOsF/b/sc
}{}
-\DeclareFontShape{T2B}{LibertinusSans-TOsF}{bx}{sl}{
- <-> ssub * LibertinusSans-TOsF/b/sl
-}{}
-
\DeclareFontShape{T2B}{LibertinusSans-TOsF}{bx}{n}{
<-> ssub * LibertinusSans-TOsF/b/n
}{}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-LF.fd
index 38f578e1852..6c695ee3ad7 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2BLibertinusSerif-LF.fd}
- [2022/11/07 (autoinst) Font definitions for T2B/LibertinusSerif-LF.]
+ [2024/09/22 (autoinst) Font definitions for T2B/LibertinusSerif-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,14 +22,6 @@
% ---- sb = semibold ----
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{semibold}{it}{
- <-> alias * LibertinusSerif-LF/sb/it
-}{}
-
\DeclareFontShape{T2B}{LibertinusSerif-LF}{sb}{scit}{
<-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-sc-t2b
}{}
@@ -38,14 +30,6 @@
<-> alias * LibertinusSerif-LF/sb/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{semibold}{n}{
- <-> alias * LibertinusSerif-LF/sb/n
-}{}
-
\DeclareFontShape{T2B}{LibertinusSerif-LF}{sb}{sc}{
<-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-sc-t2b
}{}
@@ -54,12 +38,20 @@
<-> alias * LibertinusSerif-LF/sb/sc
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{sb}{sl}{
- <-> ssub * LibertinusSerif-LF/sb/it
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-LF/semibold/it
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{semibold}{n}{
+ <-> alias * LibertinusSerif-LF/sb/n
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-t2b
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{semibold}{it}{
+ <-> alias * LibertinusSerif-LF/sb/it
}{}
\DeclareFontShape{T2B}{LibertinusSerif-LF}{sb}{scsl}{
@@ -70,24 +62,16 @@
<-> ssub * LibertinusSerif-LF/semibold/scit
}{}
-
-% ---- b = bold ----
-
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-sc-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-LF/sb/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{bold}{sc}{
- <-> alias * LibertinusSerif-LF/b/sc
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-LF/semibold/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-t2b
-}{}
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{bold}{it}{
- <-> alias * LibertinusSerif-LF/b/it
-}{}
+% ---- b = bold ----
\DeclareFontShape{T2B}{LibertinusSerif-LF}{b}{n}{
<-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-t2b
@@ -105,12 +89,20 @@
<-> alias * LibertinusSerif-LF/b/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{b}{sl}{
- <-> ssub * LibertinusSerif-LF/b/it
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{bold}{sl}{
- <-> ssub * LibertinusSerif-LF/bold/it
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{bold}{sc}{
+ <-> alias * LibertinusSerif-LF/b/sc
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-t2b
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{bold}{it}{
+ <-> alias * LibertinusSerif-LF/b/it
}{}
\DeclareFontShape{T2B}{LibertinusSerif-LF}{b}{scsl}{
@@ -121,24 +113,16 @@
<-> ssub * LibertinusSerif-LF/bold/scit
}{}
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{b}{sl}{
+ <-> ssub * LibertinusSerif-LF/b/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{regular}{n}{
- <-> alias * LibertinusSerif-LF/m/n
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-LF/bold/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-sc-t2b
-}{}
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{regular}{scit}{
- <-> alias * LibertinusSerif-LF/m/scit
-}{}
+% ---- m = regular ----
\DeclareFontShape{T2B}{LibertinusSerif-LF}{m}{it}{
<-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-t2b
@@ -156,12 +140,20 @@
<-> alias * LibertinusSerif-LF/m/sc
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{m}{sl}{
- <-> ssub * LibertinusSerif-LF/m/it
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{regular}{sl}{
- <-> ssub * LibertinusSerif-LF/regular/it
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{regular}{scit}{
+ <-> alias * LibertinusSerif-LF/m/scit
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-t2b
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{regular}{n}{
+ <-> alias * LibertinusSerif-LF/m/n
}{}
\DeclareFontShape{T2B}{LibertinusSerif-LF}{m}{scsl}{
@@ -172,19 +164,31 @@
<-> ssub * LibertinusSerif-LF/regular/scit
}{}
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{m}{sl}{
+ <-> ssub * LibertinusSerif-LF/m/it
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-LF/regular/it
+}{}
+
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-LF/b/scsl
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{bx}{scit}{
+ <-> ssub * LibertinusSerif-LF/b/scit
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{bx}{n}{
+ <-> ssub * LibertinusSerif-LF/b/n
}{}
\DeclareFontShape{T2B}{LibertinusSerif-LF}{bx}{it}{
<-> ssub * LibertinusSerif-LF/b/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{bx}{scit}{
- <-> ssub * LibertinusSerif-LF/b/scit
+\DeclareFontShape{T2B}{LibertinusSerif-LF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-LF/b/scsl
}{}
\DeclareFontShape{T2B}{LibertinusSerif-LF}{bx}{sc}{
@@ -195,8 +199,4 @@
<-> ssub * LibertinusSerif-LF/b/sl
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-LF}{bx}{n}{
- <-> ssub * LibertinusSerif-LF/b/n
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-OsF.fd
index a1eba5ef239..33da18e7f78 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2BLibertinusSerif-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2B/LibertinusSerif-OsF.]
+ [2024/09/22 (autoinst) Font definitions for T2B/LibertinusSerif-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,165 +20,161 @@
\DeclareFontFamily{T2B}{LibertinusSerif-OsF}{}
-% ---- m = regular ----
+% ---- b = bold ----
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{regular}{it}{
- <-> alias * LibertinusSerif-OsF/m/it
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bold}{it}{
+ <-> alias * LibertinusSerif-OsF/b/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{regular}{n}{
- <-> alias * LibertinusSerif-OsF/m/n
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bold}{n}{
+ <-> alias * LibertinusSerif-OsF/b/n
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-sc-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{regular}{scit}{
- <-> alias * LibertinusSerif-OsF/m/scit
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bold}{scit}{
+ <-> alias * LibertinusSerif-OsF/b/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-sc-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{regular}{sc}{
- <-> alias * LibertinusSerif-OsF/m/sc
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bold}{sc}{
+ <-> alias * LibertinusSerif-OsF/b/sc
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{m}{sl}{
- <-> ssub * LibertinusSerif-OsF/m/it
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{b}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/b/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{regular}{sl}{
- <-> ssub * LibertinusSerif-OsF/regular/it
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bold}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/bold/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{m}{scsl}{
- <-> ssub * LibertinusSerif-OsF/m/scit
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{b}{sl}{
+ <-> ssub * LibertinusSerif-OsF/b/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-OsF/regular/scit
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-OsF/bold/it
}{}
-% ---- b = bold ----
+% ---- sb = semibold ----
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bold}{it}{
- <-> alias * LibertinusSerif-OsF/b/it
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{semibold}{it}{
+ <-> alias * LibertinusSerif-OsF/sb/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-sc-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bold}{scit}{
- <-> alias * LibertinusSerif-OsF/b/scit
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{semibold}{n}{
+ <-> alias * LibertinusSerif-OsF/sb/n
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bold}{n}{
- <-> alias * LibertinusSerif-OsF/b/n
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-OsF/sb/sc
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-sc-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bold}{sc}{
- <-> alias * LibertinusSerif-OsF/b/sc
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-OsF/sb/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{b}{sl}{
- <-> ssub * LibertinusSerif-OsF/b/it
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/sb/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bold}{sl}{
- <-> ssub * LibertinusSerif-OsF/bold/it
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/semibold/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{b}{scsl}{
- <-> ssub * LibertinusSerif-OsF/b/scit
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-OsF/sb/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bold}{scsl}{
- <-> ssub * LibertinusSerif-OsF/bold/scit
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-OsF/semibold/it
}{}
-% ---- sb = semibold ----
+% ---- m = regular ----
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-sc-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{semibold}{sc}{
- <-> alias * LibertinusSerif-OsF/sb/sc
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{regular}{it}{
+ <-> alias * LibertinusSerif-OsF/m/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{semibold}{n}{
- <-> alias * LibertinusSerif-OsF/sb/n
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{regular}{n}{
+ <-> alias * LibertinusSerif-OsF/m/n
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-sc-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{semibold}{scit}{
- <-> alias * LibertinusSerif-OsF/sb/scit
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{regular}{scit}{
+ <-> alias * LibertinusSerif-OsF/m/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{semibold}{it}{
- <-> alias * LibertinusSerif-OsF/sb/it
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{regular}{sc}{
+ <-> alias * LibertinusSerif-OsF/m/sc
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{sb}{sl}{
- <-> ssub * LibertinusSerif-OsF/sb/it
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/m/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-OsF/semibold/it
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/regular/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-OsF/sb/scit
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{m}{sl}{
+ <-> ssub * LibertinusSerif-OsF/m/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-OsF/semibold/scit
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-OsF/regular/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-OsF/b/scsl
-}{}
-
\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bx}{sc}{
<-> ssub * LibertinusSerif-OsF/b/sc
}{}
@@ -187,6 +183,14 @@
<-> ssub * LibertinusSerif-OsF/b/sl
}{}
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bx}{it}{
+ <-> ssub * LibertinusSerif-OsF/b/it
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/b/scsl
+}{}
+
\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bx}{scit}{
<-> ssub * LibertinusSerif-OsF/b/scit
}{}
@@ -195,8 +199,4 @@
<-> ssub * LibertinusSerif-OsF/b/n
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-OsF}{bx}{it}{
- <-> ssub * LibertinusSerif-OsF/b/it
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-Sup.fd
index e75d7fbb321..a81a953ec9b 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-Sup.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2BLibertinusSerif-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for T2B/LibertinusSerif-Sup.]
+ [2024/09/22 (autoinst) Font definitions for T2B/LibertinusSerif-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,14 +22,6 @@
% ---- b = bold ----
-\DeclareFontShape{T2B}{LibertinusSerif-Sup}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-sup-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerif-Sup}{bold}{n}{
- <-> alias * LibertinusSerif-Sup/b/n
-}{}
-
\DeclareFontShape{T2B}{LibertinusSerif-Sup}{b}{it}{
<-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-sup-t2b
}{}
@@ -38,6 +30,14 @@
<-> alias * LibertinusSerif-Sup/b/it
}{}
+\DeclareFontShape{T2B}{LibertinusSerif-Sup}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-sup-t2b
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-Sup}{bold}{n}{
+ <-> alias * LibertinusSerif-Sup/b/n
+}{}
+
\DeclareFontShape{T2B}{LibertinusSerif-Sup}{b}{sl}{
<-> ssub * LibertinusSerif-Sup/b/it
}{}
@@ -47,62 +47,66 @@
}{}
-% ---- m = regular ----
+% ---- sb = semibold ----
-\DeclareFontShape{T2B}{LibertinusSerif-Sup}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-sup-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-Sup}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-sup-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-Sup}{regular}{n}{
- <-> alias * LibertinusSerif-Sup/m/n
+\DeclareFontShape{T2B}{LibertinusSerif-Sup}{semibold}{n}{
+ <-> alias * LibertinusSerif-Sup/sb/n
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-Sup}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-sup-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-Sup}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-sup-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-Sup}{regular}{it}{
- <-> alias * LibertinusSerif-Sup/m/it
+\DeclareFontShape{T2B}{LibertinusSerif-Sup}{semibold}{it}{
+ <-> alias * LibertinusSerif-Sup/sb/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-Sup}{m}{sl}{
- <-> ssub * LibertinusSerif-Sup/m/it
+\DeclareFontShape{T2B}{LibertinusSerif-Sup}{sb}{sl}{
+ <-> ssub * LibertinusSerif-Sup/sb/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-Sup}{regular}{sl}{
- <-> ssub * LibertinusSerif-Sup/regular/it
+\DeclareFontShape{T2B}{LibertinusSerif-Sup}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-Sup/semibold/it
}{}
-% ---- sb = semibold ----
+% ---- m = regular ----
-\DeclareFontShape{T2B}{LibertinusSerif-Sup}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-sup-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-Sup}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-sup-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-Sup}{semibold}{it}{
- <-> alias * LibertinusSerif-Sup/sb/it
+\DeclareFontShape{T2B}{LibertinusSerif-Sup}{regular}{it}{
+ <-> alias * LibertinusSerif-Sup/m/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-Sup}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-sup-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-Sup}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-sup-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-Sup}{semibold}{n}{
- <-> alias * LibertinusSerif-Sup/sb/n
+\DeclareFontShape{T2B}{LibertinusSerif-Sup}{regular}{n}{
+ <-> alias * LibertinusSerif-Sup/m/n
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-Sup}{sb}{sl}{
- <-> ssub * LibertinusSerif-Sup/sb/it
+\DeclareFontShape{T2B}{LibertinusSerif-Sup}{m}{sl}{
+ <-> ssub * LibertinusSerif-Sup/m/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-Sup}{semibold}{sl}{
- <-> ssub * LibertinusSerif-Sup/semibold/it
+\DeclareFontShape{T2B}{LibertinusSerif-Sup}{regular}{sl}{
+ <-> ssub * LibertinusSerif-Sup/regular/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+\DeclareFontShape{T2B}{LibertinusSerif-Sup}{bx}{it}{
+ <-> ssub * LibertinusSerif-Sup/b/it
+}{}
+
\DeclareFontShape{T2B}{LibertinusSerif-Sup}{bx}{sl}{
<-> ssub * LibertinusSerif-Sup/b/sl
}{}
@@ -111,8 +115,4 @@
<-> ssub * LibertinusSerif-Sup/b/n
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-Sup}{bx}{it}{
- <-> ssub * LibertinusSerif-Sup/b/it
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-TLF.fd
index 4079a7d1910..ba3ab35ab0f 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2BLibertinusSerif-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T2B/LibertinusSerif-TLF.]
+ [2024/09/22 (autoinst) Font definitions for T2B/LibertinusSerif-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,105 +20,105 @@
\DeclareFontFamily{T2B}{LibertinusSerif-TLF}{}
-% ---- sb = semibold ----
+% ---- m = regular ----
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-sc-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{semibold}{sc}{
- <-> alias * LibertinusSerif-TLF/sb/sc
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{regular}{sc}{
+ <-> alias * LibertinusSerif-TLF/m/sc
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-sc-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{semibold}{scit}{
- <-> alias * LibertinusSerif-TLF/sb/scit
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{regular}{scit}{
+ <-> alias * LibertinusSerif-TLF/m/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{semibold}{n}{
- <-> alias * LibertinusSerif-TLF/sb/n
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{regular}{n}{
+ <-> alias * LibertinusSerif-TLF/m/n
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{semibold}{it}{
- <-> alias * LibertinusSerif-TLF/sb/it
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{regular}{it}{
+ <-> alias * LibertinusSerif-TLF/m/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{sb}{sl}{
- <-> ssub * LibertinusSerif-TLF/sb/it
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/m/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-TLF/semibold/it
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/regular/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-TLF/sb/scit
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{m}{sl}{
+ <-> ssub * LibertinusSerif-TLF/m/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-TLF/semibold/scit
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-TLF/regular/it
}{}
-% ---- m = regular ----
+% ---- sb = semibold ----
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-sc-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{regular}{sc}{
- <-> alias * LibertinusSerif-TLF/m/sc
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{semibold}{it}{
+ <-> alias * LibertinusSerif-TLF/sb/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{regular}{it}{
- <-> alias * LibertinusSerif-TLF/m/it
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{semibold}{n}{
+ <-> alias * LibertinusSerif-TLF/sb/n
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{regular}{n}{
- <-> alias * LibertinusSerif-TLF/m/n
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-TLF/sb/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-sc-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{regular}{scit}{
- <-> alias * LibertinusSerif-TLF/m/scit
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-TLF/sb/sc
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{m}{sl}{
- <-> ssub * LibertinusSerif-TLF/m/it
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/sb/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{regular}{sl}{
- <-> ssub * LibertinusSerif-TLF/regular/it
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/semibold/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{m}{scsl}{
- <-> ssub * LibertinusSerif-TLF/m/scit
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-TLF/sb/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-TLF/regular/scit
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-TLF/semibold/it
}{}
@@ -156,14 +156,6 @@
<-> alias * LibertinusSerif-TLF/b/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{b}{sl}{
- <-> ssub * LibertinusSerif-TLF/b/it
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{bold}{sl}{
- <-> ssub * LibertinusSerif-TLF/bold/it
-}{}
-
\DeclareFontShape{T2B}{LibertinusSerif-TLF}{b}{scsl}{
<-> ssub * LibertinusSerif-TLF/b/scit
}{}
@@ -172,29 +164,37 @@
<-> ssub * LibertinusSerif-TLF/bold/scit
}{}
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{b}{sl}{
+ <-> ssub * LibertinusSerif-TLF/b/it
+}{}
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{bx}{scit}{
- <-> ssub * LibertinusSerif-TLF/b/scit
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-TLF/bold/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{bx}{n}{
- <-> ssub * LibertinusSerif-TLF/b/n
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/b/scsl
}{}
\DeclareFontShape{T2B}{LibertinusSerif-TLF}{bx}{it}{
<-> ssub * LibertinusSerif-TLF/b/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TLF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-TLF/b/scsl
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{bx}{n}{
+ <-> ssub * LibertinusSerif-TLF/b/n
}{}
\DeclareFontShape{T2B}{LibertinusSerif-TLF}{bx}{sc}{
<-> ssub * LibertinusSerif-TLF/b/sc
}{}
+\DeclareFontShape{T2B}{LibertinusSerif-TLF}{bx}{scit}{
+ <-> ssub * LibertinusSerif-TLF/b/scit
+}{}
+
\DeclareFontShape{T2B}{LibertinusSerif-TLF}{bx}{sl}{
<-> ssub * LibertinusSerif-TLF/b/sl
}{}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-TOsF.fd
index 7fe87fa18c4..8d871fe53fd 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerif-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2BLibertinusSerif-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2B/LibertinusSerif-TOsF.]
+ [2024/09/22 (autoinst) Font definitions for T2B/LibertinusSerif-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,59 +20,16 @@
\DeclareFontFamily{T2B}{LibertinusSerif-TOsF}{}
-% ---- m = regular ----
-
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-sc-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{regular}{sc}{
- <-> alias * LibertinusSerif-TOsF/m/sc
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{regular}{it}{
- <-> alias * LibertinusSerif-TOsF/m/it
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-sc-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{regular}{scit}{
- <-> alias * LibertinusSerif-TOsF/m/scit
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{regular}{n}{
- <-> alias * LibertinusSerif-TOsF/m/n
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{m}{sl}{
- <-> ssub * LibertinusSerif-TOsF/m/it
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{regular}{sl}{
- <-> ssub * LibertinusSerif-TOsF/regular/it
-}{}
+% ---- b = bold ----
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{m}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/m/scit
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/regular/scit
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{bold}{n}{
+ <-> alias * LibertinusSerif-TOsF/b/n
}{}
-
-% ---- b = bold ----
-
\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{b}{sc}{
<-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-sc-t2b
}{}
@@ -89,14 +46,6 @@
<-> alias * LibertinusSerif-TOsF/b/scit
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{bold}{n}{
- <-> alias * LibertinusSerif-TOsF/b/n
-}{}
-
\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{b}{it}{
<-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-t2b
}{}
@@ -105,14 +54,6 @@
<-> alias * LibertinusSerif-TOsF/b/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{b}{sl}{
- <-> ssub * LibertinusSerif-TOsF/b/it
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{bold}{sl}{
- <-> ssub * LibertinusSerif-TOsF/bold/it
-}{}
-
\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{b}{scsl}{
<-> ssub * LibertinusSerif-TOsF/b/scit
}{}
@@ -121,17 +62,17 @@
<-> ssub * LibertinusSerif-TOsF/bold/scit
}{}
-
-% ---- sb = semibold ----
-
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-sc-t2b
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{b}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/b/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{semibold}{sc}{
- <-> alias * LibertinusSerif-TOsF/sb/sc
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/bold/it
}{}
+
+% ---- sb = semibold ----
+
\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{sb}{n}{
<-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-t2b
}{}
@@ -148,6 +89,14 @@
<-> alias * LibertinusSerif-TOsF/sb/scit
}{}
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-sc-t2b
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-TOsF/sb/sc
+}{}
+
\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{sb}{it}{
<-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-t2b
}{}
@@ -156,6 +105,14 @@
<-> alias * LibertinusSerif-TOsF/sb/it
}{}
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/sb/scit
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/semibold/scit
+}{}
+
\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{sb}{sl}{
<-> ssub * LibertinusSerif-TOsF/sb/it
}{}
@@ -164,39 +121,82 @@
<-> ssub * LibertinusSerif-TOsF/semibold/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/sb/scit
+
+% ---- m = regular ----
+
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/semibold/scit
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{regular}{it}{
+ <-> alias * LibertinusSerif-TOsF/m/it
}{}
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-t2b
+}{}
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{regular}{n}{
+ <-> alias * LibertinusSerif-TOsF/m/n
+}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{bx}{sc}{
- <-> ssub * LibertinusSerif-TOsF/b/sc
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-sc-t2b
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{bx}{sl}{
- <-> ssub * LibertinusSerif-TOsF/b/sl
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{regular}{sc}{
+ <-> alias * LibertinusSerif-TOsF/m/sc
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/b/scsl
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-sc-t2b
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{regular}{scit}{
+ <-> alias * LibertinusSerif-TOsF/m/scit
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/m/scit
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/regular/scit
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{m}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/m/it
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/regular/it
}{}
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{bx}{it}{
<-> ssub * LibertinusSerif-TOsF/b/it
}{}
-\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{bx}{n}{
- <-> ssub * LibertinusSerif-TOsF/b/n
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/b/scsl
}{}
\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{bx}{scit}{
<-> ssub * LibertinusSerif-TOsF/b/scit
}{}
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{bx}{n}{
+ <-> ssub * LibertinusSerif-TOsF/b/n
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{bx}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/b/sl
+}{}
+
+\DeclareFontShape{T2B}{LibertinusSerif-TOsF}{bx}{sc}{
+ <-> ssub * LibertinusSerif-TOsF/b/sc
+}{}
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-LF.fd
deleted file mode 100644
index c2f0cea29b7..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-LF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2BLibertinusSerifDisplay-LF.fd}
- [2022/11/07 (autoinst) Font definitions for T2B/LibertinusSerifDisplay-LF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2B}{LibertinusSerifDisplay-LF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2B}{LibertinusSerifDisplay-LF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-lf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerifDisplay-LF}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-LF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-OsF.fd
deleted file mode 100644
index c2b632583c7..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-OsF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2BLibertinusSerifDisplay-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2B/LibertinusSerifDisplay-OsF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2B}{LibertinusSerifDisplay-OsF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2B}{LibertinusSerifDisplay-OsF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-osf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerifDisplay-OsF}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-OsF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-Sup.fd
deleted file mode 100644
index 4aad9b7b211..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-Sup.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2BLibertinusSerifDisplay-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for T2B/LibertinusSerifDisplay-Sup.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2B}{LibertinusSerifDisplay-Sup}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2B}{LibertinusSerifDisplay-Sup}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-sup-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerifDisplay-Sup}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-Sup/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-TLF.fd
deleted file mode 100644
index e87af08ba80..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-TLF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2BLibertinusSerifDisplay-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T2B/LibertinusSerifDisplay-TLF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2B}{LibertinusSerifDisplay-TLF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2B}{LibertinusSerifDisplay-TLF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-tlf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerifDisplay-TLF}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-TLF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-TOsF.fd
deleted file mode 100644
index 05d22180f04..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifDisplay-TOsF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2BLibertinusSerifDisplay-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2B/LibertinusSerifDisplay-TOsF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2B}{LibertinusSerifDisplay-TOsF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2B}{LibertinusSerifDisplay-TOsF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-tosf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerifDisplay-TOsF}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-TOsF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifInitials-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifInitials-TLF.fd
deleted file mode 100644
index 217efac00f6..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2BLibertinusSerifInitials-TLF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2BLibertinusSerifInitials-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T2B/LibertinusSerifInitials-TLF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifInitials@scale\endcsname\relax
- \let\LibertinusSerifInitials@@scale\@empty
-\else
- \edef\LibertinusSerifInitials@@scale{s*[\csname LibertinusSerifInitials@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2B}{LibertinusSerifInitials-TLF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2B}{LibertinusSerifInitials-TLF}{m}{n}{
- <-> \LibertinusSerifInitials@@scale LibertinusSerifInitials-Regular-tlf-t2b
-}{}
-
-\DeclareFontShape{T2B}{LibertinusSerifInitials-TLF}{regular}{n}{
- <-> alias * LibertinusSerifInitials-TLF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusMono-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusMono-TLF.fd
new file mode 100644
index 00000000000..4ffdf5330dd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusMono-TLF.fd
@@ -0,0 +1,36 @@
+%% Generated by autoinst on 2024/09/22
+%%
+\ProvidesFile{T2CLibertinusMono-TLF.fd}
+ [2024/09/22 (autoinst) Font definitions for T2C/LibertinusMono-TLF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname LibertinusMono@scale\endcsname\relax
+ \let\LibertinusMono@@scale\@empty
+\else
+ \edef\LibertinusMono@@scale{s*[\csname LibertinusMono@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T2C}{LibertinusMono-TLF}{\hyphenchar\font=-1}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T2C}{LibertinusMono-TLF}{m}{n}{
+ <-> \LibertinusMono@@scale LibertinusMono-Regular-tlf-t2c
+}{}
+
+\DeclareFontShape{T2C}{LibertinusMono-TLF}{regular}{n}{
+ <-> alias * LibertinusMono-TLF/m/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-LF.fd
index b7b73fa3ed4..65836df9174 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2CLibertinusSans-LF.fd}
- [2022/11/07 (autoinst) Font definitions for T2C/LibertinusSans-LF.]
+ [2024/09/22 (autoinst) Font definitions for T2C/LibertinusSans-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,57 +20,6 @@
\DeclareFontFamily{T2C}{LibertinusSans-LF}{}
-% ---- b = bold ----
-
-\DeclareFontShape{T2C}{LibertinusSans-LF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-lf-sc-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-LF}{bold}{scsl}{
- <-> alias * LibertinusSans-LF/b/scsl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-LF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-lf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-LF}{bold}{sl}{
- <-> alias * LibertinusSans-LF/b/sl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-LF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-LF}{bold}{n}{
- <-> alias * LibertinusSans-LF/b/n
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-LF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-sc-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-LF}{bold}{sc}{
- <-> alias * LibertinusSans-LF/b/sc
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-LF}{b}{it}{
- <-> ssub * LibertinusSans-LF/b/sl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-LF}{bold}{it}{
- <-> ssub * LibertinusSans-LF/bold/sl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-LF}{b}{scit}{
- <-> ssub * LibertinusSans-LF/b/scsl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-LF}{bold}{scit}{
- <-> ssub * LibertinusSans-LF/bold/scsl
-}{}
-
-
% ---- m = regular ----
\DeclareFontShape{T2C}{LibertinusSans-LF}{m}{n}{
@@ -122,30 +71,33 @@
}{}
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+% ---- b = bold ----
-\DeclareFontShape{T2C}{LibertinusSans-LF}{bx}{n}{
- <-> ssub * LibertinusSans-LF/b/n
+\DeclareFontShape{T2C}{LibertinusSans-LF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSans-LF}{bx}{sl}{
- <-> ssub * LibertinusSans-LF/b/sl
+\DeclareFontShape{T2C}{LibertinusSans-LF}{bold}{sc}{
+ <-> alias * LibertinusSans-LF/b/sc
}{}
-\DeclareFontShape{T2C}{LibertinusSans-LF}{bx}{sc}{
- <-> ssub * LibertinusSans-LF/b/sc
+\DeclareFontShape{T2C}{LibertinusSans-LF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSans-LF}{bx}{scit}{
- <-> ssub * LibertinusSans-LF/b/scit
+\DeclareFontShape{T2C}{LibertinusSans-LF}{bold}{n}{
+ <-> alias * LibertinusSans-LF/b/n
}{}
-\DeclareFontShape{T2C}{LibertinusSans-LF}{bx}{it}{
- <-> ssub * LibertinusSans-LF/b/it
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T2C}{LibertinusSans-LF}{bx}{sc}{
+ <-> ssub * LibertinusSans-LF/b/sc
}{}
-\DeclareFontShape{T2C}{LibertinusSans-LF}{bx}{scsl}{
- <-> ssub * LibertinusSans-LF/b/scsl
+\DeclareFontShape{T2C}{LibertinusSans-LF}{bx}{n}{
+ <-> ssub * LibertinusSans-LF/b/n
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-OsF.fd
index 5a14b62fd88..74558f20c67 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2CLibertinusSans-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2C/LibertinusSans-OsF.]
+ [2024/09/22 (autoinst) Font definitions for T2C/LibertinusSans-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,57 +20,6 @@
\DeclareFontFamily{T2C}{LibertinusSans-OsF}{}
-% ---- b = bold ----
-
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-osf-sc-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{bold}{scsl}{
- <-> alias * LibertinusSans-OsF/b/scsl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-osf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{bold}{sl}{
- <-> alias * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{bold}{n}{
- <-> alias * LibertinusSans-OsF/b/n
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-sc-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{bold}{sc}{
- <-> alias * LibertinusSans-OsF/b/sc
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{b}{it}{
- <-> ssub * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{bold}{it}{
- <-> ssub * LibertinusSans-OsF/bold/sl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{b}{scit}{
- <-> ssub * LibertinusSans-OsF/b/scsl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{bold}{scit}{
- <-> ssub * LibertinusSans-OsF/bold/scsl
-}{}
-
-
% ---- m = regular ----
\DeclareFontShape{T2C}{LibertinusSans-OsF}{m}{scit}{
@@ -81,12 +30,12 @@
<-> alias * LibertinusSans-OsF/m/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-osf-t2c
+\DeclareFontShape{T2C}{LibertinusSans-OsF}{m}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-osf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{regular}{it}{
- <-> alias * LibertinusSans-OsF/m/it
+\DeclareFontShape{T2C}{LibertinusSans-OsF}{regular}{sc}{
+ <-> alias * LibertinusSans-OsF/m/sc
}{}
\DeclareFontShape{T2C}{LibertinusSans-OsF}{m}{n}{
@@ -97,12 +46,12 @@
<-> alias * LibertinusSans-OsF/m/n
}{}
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{m}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-osf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSans-OsF}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-osf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{regular}{sc}{
- <-> alias * LibertinusSans-OsF/m/sc
+\DeclareFontShape{T2C}{LibertinusSans-OsF}{regular}{it}{
+ <-> alias * LibertinusSans-OsF/m/it
}{}
\DeclareFontShape{T2C}{LibertinusSans-OsF}{m}{scsl}{
@@ -122,30 +71,33 @@
}{}
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+% ---- b = bold ----
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{bx}{n}{
- <-> ssub * LibertinusSans-OsF/b/n
+\DeclareFontShape{T2C}{LibertinusSans-OsF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{bx}{scsl}{
- <-> ssub * LibertinusSans-OsF/b/scsl
+\DeclareFontShape{T2C}{LibertinusSans-OsF}{bold}{n}{
+ <-> alias * LibertinusSans-OsF/b/n
}{}
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{bx}{sc}{
- <-> ssub * LibertinusSans-OsF/b/sc
+\DeclareFontShape{T2C}{LibertinusSans-OsF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-osf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{bx}{sl}{
- <-> ssub * LibertinusSans-OsF/b/sl
+\DeclareFontShape{T2C}{LibertinusSans-OsF}{bold}{sc}{
+ <-> alias * LibertinusSans-OsF/b/sc
}{}
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{bx}{it}{
- <-> ssub * LibertinusSans-OsF/b/it
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T2C}{LibertinusSans-OsF}{bx}{n}{
+ <-> ssub * LibertinusSans-OsF/b/n
}{}
-\DeclareFontShape{T2C}{LibertinusSans-OsF}{bx}{scit}{
- <-> ssub * LibertinusSans-OsF/b/scit
+\DeclareFontShape{T2C}{LibertinusSans-OsF}{bx}{sc}{
+ <-> ssub * LibertinusSans-OsF/b/sc
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-Sup.fd
index 0ec106c58a7..1e79ce917c5 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-Sup.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2CLibertinusSans-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for T2C/LibertinusSans-Sup.]
+ [2024/09/22 (autoinst) Font definitions for T2C/LibertinusSans-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,14 +22,6 @@
% ---- b = bold ----
-\DeclareFontShape{T2C}{LibertinusSans-Sup}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-sup-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-Sup}{bold}{sl}{
- <-> alias * LibertinusSans-Sup/b/sl
-}{}
-
\DeclareFontShape{T2C}{LibertinusSans-Sup}{b}{n}{
<-> \LibertinusSans@@scale LibertinusSans-Bold-sup-t2c
}{}
@@ -38,14 +30,6 @@
<-> alias * LibertinusSans-Sup/b/n
}{}
-\DeclareFontShape{T2C}{LibertinusSans-Sup}{b}{it}{
- <-> ssub * LibertinusSans-Sup/b/sl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-Sup}{bold}{it}{
- <-> ssub * LibertinusSans-Sup/bold/sl
-}{}
-
% ---- m = regular ----
@@ -80,12 +64,4 @@
<-> ssub * LibertinusSans-Sup/b/n
}{}
-\DeclareFontShape{T2C}{LibertinusSans-Sup}{bx}{sl}{
- <-> ssub * LibertinusSans-Sup/b/sl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-Sup}{bx}{it}{
- <-> ssub * LibertinusSans-Sup/b/it
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-TLF.fd
index c6f519ce4da..57706057c4c 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2CLibertinusSans-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T2C/LibertinusSans-TLF.]
+ [2024/09/22 (autoinst) Font definitions for T2C/LibertinusSans-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,16 +20,27 @@
\DeclareFontFamily{T2C}{LibertinusSans-TLF}{}
-% ---- m = regular ----
+% ---- b = bold ----
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{m}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-tlf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSans-TLF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{regular}{sc}{
- <-> alias * LibertinusSans-TLF/m/sc
+\DeclareFontShape{T2C}{LibertinusSans-TLF}{bold}{sc}{
+ <-> alias * LibertinusSans-TLF/b/sc
}{}
+\DeclareFontShape{T2C}{LibertinusSans-TLF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-t2c
+}{}
+
+\DeclareFontShape{T2C}{LibertinusSans-TLF}{bold}{n}{
+ <-> alias * LibertinusSans-TLF/b/n
+}{}
+
+
+% ---- m = regular ----
+
\DeclareFontShape{T2C}{LibertinusSans-TLF}{m}{n}{
<-> \LibertinusSans@@scale LibertinusSans-Regular-tlf-t2c
}{}
@@ -38,12 +49,12 @@
<-> alias * LibertinusSans-TLF/m/n
}{}
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-tlf-t2c
+\DeclareFontShape{T2C}{LibertinusSans-TLF}{m}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-tlf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{regular}{it}{
- <-> alias * LibertinusSans-TLF/m/it
+\DeclareFontShape{T2C}{LibertinusSans-TLF}{regular}{sc}{
+ <-> alias * LibertinusSans-TLF/m/sc
}{}
\DeclareFontShape{T2C}{LibertinusSans-TLF}{m}{scit}{
@@ -54,6 +65,14 @@
<-> alias * LibertinusSans-TLF/m/scit
}{}
+\DeclareFontShape{T2C}{LibertinusSans-TLF}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-tlf-t2c
+}{}
+
+\DeclareFontShape{T2C}{LibertinusSans-TLF}{regular}{it}{
+ <-> alias * LibertinusSans-TLF/m/it
+}{}
+
\DeclareFontShape{T2C}{LibertinusSans-TLF}{m}{scsl}{
<-> ssub * LibertinusSans-TLF/m/scit
}{}
@@ -71,81 +90,14 @@
}{}
-% ---- b = bold ----
-
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tlf-sc-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{bold}{scsl}{
- <-> alias * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-sc-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{bold}{sc}{
- <-> alias * LibertinusSans-TLF/b/sc
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{bold}{n}{
- <-> alias * LibertinusSans-TLF/b/n
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tlf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{bold}{sl}{
- <-> alias * LibertinusSans-TLF/b/sl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{b}{it}{
- <-> ssub * LibertinusSans-TLF/b/sl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{bold}{it}{
- <-> ssub * LibertinusSans-TLF/bold/sl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{b}{scit}{
- <-> ssub * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{bold}{scit}{
- <-> ssub * LibertinusSans-TLF/bold/scsl
-}{}
-
-
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
\DeclareFontShape{T2C}{LibertinusSans-TLF}{bx}{sc}{
<-> ssub * LibertinusSans-TLF/b/sc
}{}
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{bx}{sl}{
- <-> ssub * LibertinusSans-TLF/b/sl
-}{}
-
\DeclareFontShape{T2C}{LibertinusSans-TLF}{bx}{n}{
<-> ssub * LibertinusSans-TLF/b/n
}{}
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{bx}{it}{
- <-> ssub * LibertinusSans-TLF/b/it
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{bx}{scsl}{
- <-> ssub * LibertinusSans-TLF/b/scsl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TLF}{bx}{scit}{
- <-> ssub * LibertinusSans-TLF/b/scit
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-TOsF.fd
index 9ccbe774444..0752edeb1fe 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSans-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2CLibertinusSans-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2C/LibertinusSans-TOsF.]
+ [2024/09/22 (autoinst) Font definitions for T2C/LibertinusSans-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,59 +20,24 @@
\DeclareFontFamily{T2C}{LibertinusSans-TOsF}{}
-% ---- b = bold ----
-
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{b}{sc}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-sc-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{bold}{sc}{
- <-> alias * LibertinusSans-TOsF/b/sc
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tosf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{bold}{sl}{
- <-> alias * LibertinusSans-TOsF/b/sl
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{bold}{n}{
- <-> alias * LibertinusSans-TOsF/b/n
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{b}{scsl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tosf-sc-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{bold}{scsl}{
- <-> alias * LibertinusSans-TOsF/b/scsl
-}{}
+% ---- m = regular ----
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{b}{it}{
- <-> ssub * LibertinusSans-TOsF/b/sl
+\DeclareFontShape{T2C}{LibertinusSans-TOsF}{m}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-tosf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{bold}{it}{
- <-> ssub * LibertinusSans-TOsF/bold/sl
+\DeclareFontShape{T2C}{LibertinusSans-TOsF}{regular}{n}{
+ <-> alias * LibertinusSans-TOsF/m/n
}{}
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{b}{scit}{
- <-> ssub * LibertinusSans-TOsF/b/scsl
+\DeclareFontShape{T2C}{LibertinusSans-TOsF}{m}{scit}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-tosf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{bold}{scit}{
- <-> ssub * LibertinusSans-TOsF/bold/scsl
+\DeclareFontShape{T2C}{LibertinusSans-TOsF}{regular}{scit}{
+ <-> alias * LibertinusSans-TOsF/m/scit
}{}
-
-% ---- m = regular ----
-
\DeclareFontShape{T2C}{LibertinusSans-TOsF}{m}{sc}{
<-> \LibertinusSans@@scale LibertinusSans-Regular-tosf-sc-t2c
}{}
@@ -81,14 +46,6 @@
<-> alias * LibertinusSans-TOsF/m/sc
}{}
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{m}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-tosf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{regular}{n}{
- <-> alias * LibertinusSans-TOsF/m/n
-}{}
-
\DeclareFontShape{T2C}{LibertinusSans-TOsF}{m}{it}{
<-> \LibertinusSans@@scale LibertinusSans-Italic-tosf-t2c
}{}
@@ -97,14 +54,6 @@
<-> alias * LibertinusSans-TOsF/m/it
}{}
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{m}{scit}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-tosf-sc-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{regular}{scit}{
- <-> alias * LibertinusSans-TOsF/m/scit
-}{}
-
\DeclareFontShape{T2C}{LibertinusSans-TOsF}{m}{scsl}{
<-> ssub * LibertinusSans-TOsF/m/scit
}{}
@@ -122,30 +71,33 @@
}{}
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+% ---- b = bold ----
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{bx}{sc}{
- <-> ssub * LibertinusSans-TOsF/b/sc
+\DeclareFontShape{T2C}{LibertinusSans-TOsF}{b}{sc}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{bx}{sl}{
- <-> ssub * LibertinusSans-TOsF/b/sl
+\DeclareFontShape{T2C}{LibertinusSans-TOsF}{bold}{sc}{
+ <-> alias * LibertinusSans-TOsF/b/sc
}{}
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{bx}{n}{
- <-> ssub * LibertinusSans-TOsF/b/n
+\DeclareFontShape{T2C}{LibertinusSans-TOsF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{bx}{scsl}{
- <-> ssub * LibertinusSans-TOsF/b/scsl
+\DeclareFontShape{T2C}{LibertinusSans-TOsF}{bold}{n}{
+ <-> alias * LibertinusSans-TOsF/b/n
}{}
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{bx}{it}{
- <-> ssub * LibertinusSans-TOsF/b/it
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T2C}{LibertinusSans-TOsF}{bx}{sc}{
+ <-> ssub * LibertinusSans-TOsF/b/sc
}{}
-\DeclareFontShape{T2C}{LibertinusSans-TOsF}{bx}{scit}{
- <-> ssub * LibertinusSans-TOsF/b/scit
+\DeclareFontShape{T2C}{LibertinusSans-TOsF}{bx}{n}{
+ <-> ssub * LibertinusSans-TOsF/b/n
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-LF.fd
index cec46eb7fbb..21cd0e6a545 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2CLibertinusSerif-LF.fd}
- [2022/11/07 (autoinst) Font definitions for T2C/LibertinusSerif-LF.]
+ [2024/09/22 (autoinst) Font definitions for T2C/LibertinusSerif-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,67 +20,59 @@
\DeclareFontFamily{T2C}{LibertinusSerif-LF}{}
-% ---- m = regular ----
+% ---- sb = semibold ----
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{regular}{n}{
- <-> alias * LibertinusSerif-LF/m/n
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{semibold}{n}{
+ <-> alias * LibertinusSerif-LF/sb/n
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{regular}{scit}{
- <-> alias * LibertinusSerif-LF/m/scit
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-LF/sb/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{regular}{it}{
- <-> alias * LibertinusSerif-LF/m/it
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-LF/sb/sc
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{regular}{sc}{
- <-> alias * LibertinusSerif-LF/m/sc
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{semibold}{it}{
+ <-> alias * LibertinusSerif-LF/sb/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{m}{sl}{
- <-> ssub * LibertinusSerif-LF/m/it
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-LF/sb/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{regular}{sl}{
- <-> ssub * LibertinusSerif-LF/regular/it
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-LF/semibold/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{m}{scsl}{
- <-> ssub * LibertinusSerif-LF/m/scit
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-LF/sb/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-LF/regular/scit
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-LF/semibold/it
}{}
% ---- b = bold ----
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-sc-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{bold}{sc}{
- <-> alias * LibertinusSerif-LF/b/sc
-}{}
-
\DeclareFontShape{T2C}{LibertinusSerif-LF}{b}{it}{
<-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-t2c
}{}
@@ -89,14 +81,6 @@
<-> alias * LibertinusSerif-LF/b/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{bold}{n}{
- <-> alias * LibertinusSerif-LF/b/n
-}{}
-
\DeclareFontShape{T2C}{LibertinusSerif-LF}{b}{scit}{
<-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-sc-t2c
}{}
@@ -105,12 +89,20 @@
<-> alias * LibertinusSerif-LF/b/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{b}{sl}{
- <-> ssub * LibertinusSerif-LF/b/it
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{bold}{sl}{
- <-> ssub * LibertinusSerif-LF/bold/it
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{bold}{sc}{
+ <-> alias * LibertinusSerif-LF/b/sc
+}{}
+
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-t2c
+}{}
+
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{bold}{n}{
+ <-> alias * LibertinusSerif-LF/b/n
}{}
\DeclareFontShape{T2C}{LibertinusSerif-LF}{b}{scsl}{
@@ -121,82 +113,90 @@
<-> ssub * LibertinusSerif-LF/bold/scit
}{}
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{b}{sl}{
+ <-> ssub * LibertinusSerif-LF/b/it
+}{}
-% ---- sb = semibold ----
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-LF/bold/it
+}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-sc-t2c
+
+% ---- m = regular ----
+
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{semibold}{sc}{
- <-> alias * LibertinusSerif-LF/sb/sc
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{regular}{n}{
+ <-> alias * LibertinusSerif-LF/m/n
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{semibold}{it}{
- <-> alias * LibertinusSerif-LF/sb/it
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{regular}{scit}{
+ <-> alias * LibertinusSerif-LF/m/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-lf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-lf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{semibold}{scit}{
- <-> alias * LibertinusSerif-LF/sb/scit
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{regular}{sc}{
+ <-> alias * LibertinusSerif-LF/m/sc
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-lf-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-lf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{semibold}{n}{
- <-> alias * LibertinusSerif-LF/sb/n
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{regular}{it}{
+ <-> alias * LibertinusSerif-LF/m/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{sb}{sl}{
- <-> ssub * LibertinusSerif-LF/sb/it
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-LF/m/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-LF/semibold/it
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-LF/regular/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-LF/sb/scit
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{m}{sl}{
+ <-> ssub * LibertinusSerif-LF/m/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-LF/semibold/scit
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-LF/regular/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{bx}{it}{
- <-> ssub * LibertinusSerif-LF/b/it
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{bx}{n}{
+ <-> ssub * LibertinusSerif-LF/b/n
}{}
\DeclareFontShape{T2C}{LibertinusSerif-LF}{bx}{scit}{
<-> ssub * LibertinusSerif-LF/b/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{bx}{n}{
- <-> ssub * LibertinusSerif-LF/b/n
-}{}
-
\DeclareFontShape{T2C}{LibertinusSerif-LF}{bx}{scsl}{
<-> ssub * LibertinusSerif-LF/b/scsl
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-LF}{bx}{sc}{
- <-> ssub * LibertinusSerif-LF/b/sc
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{bx}{it}{
+ <-> ssub * LibertinusSerif-LF/b/it
}{}
\DeclareFontShape{T2C}{LibertinusSerif-LF}{bx}{sl}{
<-> ssub * LibertinusSerif-LF/b/sl
}{}
+\DeclareFontShape{T2C}{LibertinusSerif-LF}{bx}{sc}{
+ <-> ssub * LibertinusSerif-LF/b/sc
+}{}
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-OsF.fd
index 6a9738dfa22..284730fa4e8 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2CLibertinusSerif-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2C/LibertinusSerif-OsF.]
+ [2024/09/22 (autoinst) Font definitions for T2C/LibertinusSerif-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,175 +20,175 @@
\DeclareFontFamily{T2C}{LibertinusSerif-OsF}{}
-% ---- b = bold ----
+% ---- m = regular ----
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bold}{sc}{
- <-> alias * LibertinusSerif-OsF/b/sc
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{regular}{scit}{
+ <-> alias * LibertinusSerif-OsF/m/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bold}{scit}{
- <-> alias * LibertinusSerif-OsF/b/scit
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{regular}{sc}{
+ <-> alias * LibertinusSerif-OsF/m/sc
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bold}{n}{
- <-> alias * LibertinusSerif-OsF/b/n
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{regular}{n}{
+ <-> alias * LibertinusSerif-OsF/m/n
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bold}{it}{
- <-> alias * LibertinusSerif-OsF/b/it
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{regular}{it}{
+ <-> alias * LibertinusSerif-OsF/m/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{b}{sl}{
- <-> ssub * LibertinusSerif-OsF/b/it
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/m/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bold}{sl}{
- <-> ssub * LibertinusSerif-OsF/bold/it
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/regular/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{b}{scsl}{
- <-> ssub * LibertinusSerif-OsF/b/scit
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{m}{sl}{
+ <-> ssub * LibertinusSerif-OsF/m/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bold}{scsl}{
- <-> ssub * LibertinusSerif-OsF/bold/scit
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-OsF/regular/it
}{}
-% ---- m = regular ----
+% ---- sb = semibold ----
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{regular}{sc}{
- <-> alias * LibertinusSerif-OsF/m/sc
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{semibold}{it}{
+ <-> alias * LibertinusSerif-OsF/sb/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{regular}{it}{
- <-> alias * LibertinusSerif-OsF/m/it
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-OsF/sb/sc
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-osf-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{regular}{n}{
- <-> alias * LibertinusSerif-OsF/m/n
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-OsF/sb/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-osf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{regular}{scit}{
- <-> alias * LibertinusSerif-OsF/m/scit
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{semibold}{n}{
+ <-> alias * LibertinusSerif-OsF/sb/n
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{m}{sl}{
- <-> ssub * LibertinusSerif-OsF/m/it
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/sb/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{regular}{sl}{
- <-> ssub * LibertinusSerif-OsF/regular/it
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/semibold/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{m}{scsl}{
- <-> ssub * LibertinusSerif-OsF/m/scit
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-OsF/sb/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-OsF/regular/scit
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-OsF/semibold/it
}{}
-% ---- sb = semibold ----
+% ---- b = bold ----
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{semibold}{sc}{
- <-> alias * LibertinusSerif-OsF/sb/sc
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bold}{it}{
+ <-> alias * LibertinusSerif-OsF/b/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{semibold}{n}{
- <-> alias * LibertinusSerif-OsF/sb/n
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bold}{sc}{
+ <-> alias * LibertinusSerif-OsF/b/sc
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{semibold}{scit}{
- <-> alias * LibertinusSerif-OsF/sb/scit
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bold}{scit}{
+ <-> alias * LibertinusSerif-OsF/b/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{semibold}{it}{
- <-> alias * LibertinusSerif-OsF/sb/it
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bold}{n}{
+ <-> alias * LibertinusSerif-OsF/b/n
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{sb}{sl}{
- <-> ssub * LibertinusSerif-OsF/sb/it
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{b}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/b/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-OsF/semibold/it
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bold}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/bold/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-OsF/sb/scit
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{b}{sl}{
+ <-> ssub * LibertinusSerif-OsF/b/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-OsF/semibold/scit
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-OsF/bold/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bx}{it}{
- <-> ssub * LibertinusSerif-OsF/b/it
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-OsF/b/scsl
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bx}{scit}{
- <-> ssub * LibertinusSerif-OsF/b/scit
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bx}{it}{
+ <-> ssub * LibertinusSerif-OsF/b/it
}{}
\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bx}{n}{
<-> ssub * LibertinusSerif-OsF/b/n
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-OsF/b/scsl
+\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bx}{scit}{
+ <-> ssub * LibertinusSerif-OsF/b/scit
}{}
\DeclareFontShape{T2C}{LibertinusSerif-OsF}{bx}{sl}{
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-Sup.fd
index b05bbead11e..031ba1720db 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-Sup.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2CLibertinusSerif-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for T2C/LibertinusSerif-Sup.]
+ [2024/09/22 (autoinst) Font definitions for T2C/LibertinusSerif-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -47,62 +47,66 @@
}{}
-% ---- b = bold ----
+% ---- sb = semibold ----
-\DeclareFontShape{T2C}{LibertinusSerif-Sup}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-sup-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-Sup}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-sup-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-Sup}{bold}{n}{
- <-> alias * LibertinusSerif-Sup/b/n
+\DeclareFontShape{T2C}{LibertinusSerif-Sup}{semibold}{it}{
+ <-> alias * LibertinusSerif-Sup/sb/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-Sup}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-sup-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-Sup}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-sup-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-Sup}{bold}{it}{
- <-> alias * LibertinusSerif-Sup/b/it
+\DeclareFontShape{T2C}{LibertinusSerif-Sup}{semibold}{n}{
+ <-> alias * LibertinusSerif-Sup/sb/n
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-Sup}{b}{sl}{
- <-> ssub * LibertinusSerif-Sup/b/it
+\DeclareFontShape{T2C}{LibertinusSerif-Sup}{sb}{sl}{
+ <-> ssub * LibertinusSerif-Sup/sb/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-Sup}{bold}{sl}{
- <-> ssub * LibertinusSerif-Sup/bold/it
+\DeclareFontShape{T2C}{LibertinusSerif-Sup}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-Sup/semibold/it
}{}
-% ---- sb = semibold ----
+% ---- b = bold ----
-\DeclareFontShape{T2C}{LibertinusSerif-Sup}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-sup-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-Sup}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-sup-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-Sup}{semibold}{it}{
- <-> alias * LibertinusSerif-Sup/sb/it
+\DeclareFontShape{T2C}{LibertinusSerif-Sup}{bold}{it}{
+ <-> alias * LibertinusSerif-Sup/b/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-Sup}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-sup-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-Sup}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-sup-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-Sup}{semibold}{n}{
- <-> alias * LibertinusSerif-Sup/sb/n
+\DeclareFontShape{T2C}{LibertinusSerif-Sup}{bold}{n}{
+ <-> alias * LibertinusSerif-Sup/b/n
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-Sup}{sb}{sl}{
- <-> ssub * LibertinusSerif-Sup/sb/it
+\DeclareFontShape{T2C}{LibertinusSerif-Sup}{b}{sl}{
+ <-> ssub * LibertinusSerif-Sup/b/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-Sup}{semibold}{sl}{
- <-> ssub * LibertinusSerif-Sup/semibold/it
+\DeclareFontShape{T2C}{LibertinusSerif-Sup}{bold}{sl}{
+ <-> ssub * LibertinusSerif-Sup/bold/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+\DeclareFontShape{T2C}{LibertinusSerif-Sup}{bx}{n}{
+ <-> ssub * LibertinusSerif-Sup/b/n
+}{}
+
\DeclareFontShape{T2C}{LibertinusSerif-Sup}{bx}{sl}{
<-> ssub * LibertinusSerif-Sup/b/sl
}{}
@@ -111,8 +115,4 @@
<-> ssub * LibertinusSerif-Sup/b/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-Sup}{bx}{n}{
- <-> ssub * LibertinusSerif-Sup/b/n
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-TLF.fd
index 2859d534551..09408904d01 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2CLibertinusSerif-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T2C/LibertinusSerif-TLF.]
+ [2024/09/22 (autoinst) Font definitions for T2C/LibertinusSerif-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,65 +20,14 @@
\DeclareFontFamily{T2C}{LibertinusSerif-TLF}{}
-% ---- sb = semibold ----
-
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-sc-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{semibold}{scit}{
- <-> alias * LibertinusSerif-TLF/sb/scit
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{semibold}{n}{
- <-> alias * LibertinusSerif-TLF/sb/n
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{semibold}{it}{
- <-> alias * LibertinusSerif-TLF/sb/it
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-sc-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{semibold}{sc}{
- <-> alias * LibertinusSerif-TLF/sb/sc
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{sb}{sl}{
- <-> ssub * LibertinusSerif-TLF/sb/it
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-TLF/semibold/it
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-TLF/sb/scit
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-TLF/semibold/scit
-}{}
-
-
% ---- m = regular ----
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{regular}{it}{
- <-> alias * LibertinusSerif-TLF/m/it
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{regular}{n}{
+ <-> alias * LibertinusSerif-TLF/m/n
}{}
\DeclareFontShape{T2C}{LibertinusSerif-TLF}{m}{scit}{
@@ -89,14 +38,6 @@
<-> alias * LibertinusSerif-TLF/m/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{regular}{n}{
- <-> alias * LibertinusSerif-TLF/m/n
-}{}
-
\DeclareFontShape{T2C}{LibertinusSerif-TLF}{m}{sc}{
<-> \LibertinusSerif@@scale LibertinusSerif-Regular-tlf-sc-t2c
}{}
@@ -105,12 +46,12 @@
<-> alias * LibertinusSerif-TLF/m/sc
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{m}{sl}{
- <-> ssub * LibertinusSerif-TLF/m/it
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tlf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{regular}{sl}{
- <-> ssub * LibertinusSerif-TLF/regular/it
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{regular}{it}{
+ <-> alias * LibertinusSerif-TLF/m/it
}{}
\DeclareFontShape{T2C}{LibertinusSerif-TLF}{m}{scsl}{
@@ -121,6 +62,14 @@
<-> ssub * LibertinusSerif-TLF/regular/scit
}{}
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{m}{sl}{
+ <-> ssub * LibertinusSerif-TLF/m/it
+}{}
+
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-TLF/regular/it
+}{}
+
% ---- b = bold ----
@@ -140,6 +89,14 @@
<-> alias * LibertinusSerif-TLF/b/scit
}{}
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-sc-t2c
+}{}
+
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{bold}{sc}{
+ <-> alias * LibertinusSerif-TLF/b/sc
+}{}
+
\DeclareFontShape{T2C}{LibertinusSerif-TLF}{b}{it}{
<-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tlf-t2c
}{}
@@ -148,12 +105,12 @@
<-> alias * LibertinusSerif-TLF/b/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{b}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/b/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{bold}{sc}{
- <-> alias * LibertinusSerif-TLF/b/sc
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{bold}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/bold/scit
}{}
\DeclareFontShape{T2C}{LibertinusSerif-TLF}{b}{sl}{
@@ -164,39 +121,82 @@
<-> ssub * LibertinusSerif-TLF/bold/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{b}{scsl}{
- <-> ssub * LibertinusSerif-TLF/b/scit
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{bold}{scsl}{
- <-> ssub * LibertinusSerif-TLF/bold/scit
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{semibold}{it}{
+ <-> alias * LibertinusSerif-TLF/sb/it
+}{}
+
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-sc-t2c
+}{}
+
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-TLF/sb/scit
+}{}
+
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-sc-t2c
+}{}
+
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-TLF/sb/sc
+}{}
+
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-t2c
+}{}
+
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{semibold}{n}{
+ <-> alias * LibertinusSerif-TLF/sb/n
+}{}
+
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/sb/scit
+}{}
+
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/semibold/scit
+}{}
+
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-TLF/sb/it
+}{}
+
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-TLF/semibold/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{bx}{sl}{
- <-> ssub * LibertinusSerif-TLF/b/sl
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{bx}{scit}{
+ <-> ssub * LibertinusSerif-TLF/b/scit
}{}
\DeclareFontShape{T2C}{LibertinusSerif-TLF}{bx}{sc}{
<-> ssub * LibertinusSerif-TLF/b/sc
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{bx}{scsl}{
- <-> ssub * LibertinusSerif-TLF/b/scsl
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{bx}{sl}{
+ <-> ssub * LibertinusSerif-TLF/b/sl
}{}
\DeclareFontShape{T2C}{LibertinusSerif-TLF}{bx}{n}{
<-> ssub * LibertinusSerif-TLF/b/n
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TLF}{bx}{scit}{
- <-> ssub * LibertinusSerif-TLF/b/scit
-}{}
-
\DeclareFontShape{T2C}{LibertinusSerif-TLF}{bx}{it}{
<-> ssub * LibertinusSerif-TLF/b/it
}{}
+\DeclareFontShape{T2C}{LibertinusSerif-TLF}{bx}{scsl}{
+ <-> ssub * LibertinusSerif-TLF/b/scsl
+}{}
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-TOsF.fd
index d1c799135c8..6672738dff5 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerif-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{T2CLibertinusSerif-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2C/LibertinusSerif-TOsF.]
+ [2024/09/22 (autoinst) Font definitions for T2C/LibertinusSerif-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,173 +20,177 @@
\DeclareFontFamily{T2C}{LibertinusSerif-TOsF}{}
-% ---- sb = semibold ----
+% ---- m = regular ----
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{sb}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{m}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{semibold}{sc}{
- <-> alias * LibertinusSerif-TOsF/sb/sc
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{regular}{it}{
+ <-> alias * LibertinusSerif-TOsF/m/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{m}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{semibold}{n}{
- <-> alias * LibertinusSerif-TOsF/sb/n
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{regular}{scit}{
+ <-> alias * LibertinusSerif-TOsF/m/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{sb}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{m}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{semibold}{scit}{
- <-> alias * LibertinusSerif-TOsF/sb/scit
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{regular}{sc}{
+ <-> alias * LibertinusSerif-TOsF/m/sc
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{m}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{semibold}{it}{
- <-> alias * LibertinusSerif-TOsF/sb/it
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{regular}{n}{
+ <-> alias * LibertinusSerif-TOsF/m/n
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{sb}{sl}{
- <-> ssub * LibertinusSerif-TOsF/sb/it
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{m}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/m/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-TOsF/semibold/it
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{regular}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/regular/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{sb}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/sb/scit
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{m}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/m/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{semibold}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/semibold/scit
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{regular}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/regular/it
}{}
-% ---- b = bold ----
+% ---- sb = semibold ----
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bold}{it}{
- <-> alias * LibertinusSerif-TOsF/b/it
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{semibold}{n}{
+ <-> alias * LibertinusSerif-TOsF/sb/n
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{b}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{sb}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bold}{scit}{
- <-> alias * LibertinusSerif-TOsF/b/scit
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{semibold}{scit}{
+ <-> alias * LibertinusSerif-TOsF/sb/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{sb}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bold}{n}{
- <-> alias * LibertinusSerif-TOsF/b/n
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{semibold}{sc}{
+ <-> alias * LibertinusSerif-TOsF/sb/sc
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{b}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bold}{sc}{
- <-> alias * LibertinusSerif-TOsF/b/sc
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{semibold}{it}{
+ <-> alias * LibertinusSerif-TOsF/sb/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{b}{sl}{
- <-> ssub * LibertinusSerif-TOsF/b/it
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{sb}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/sb/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bold}{sl}{
- <-> ssub * LibertinusSerif-TOsF/bold/it
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{semibold}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/semibold/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{b}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/b/scit
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/sb/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bold}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/bold/scit
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/semibold/it
}{}
-% ---- m = regular ----
+% ---- b = bold ----
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{m}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{b}{sc}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{regular}{n}{
- <-> alias * LibertinusSerif-TOsF/m/n
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bold}{sc}{
+ <-> alias * LibertinusSerif-TOsF/b/sc
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{m}{scit}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{b}{scit}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-sc-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{regular}{scit}{
- <-> alias * LibertinusSerif-TOsF/m/scit
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bold}{scit}{
+ <-> alias * LibertinusSerif-TOsF/b/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{m}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Italic-tosf-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{regular}{it}{
- <-> alias * LibertinusSerif-TOsF/m/it
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bold}{n}{
+ <-> alias * LibertinusSerif-TOsF/b/n
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{m}{sc}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Regular-tosf-sc-t2c
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-t2c
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{regular}{sc}{
- <-> alias * LibertinusSerif-TOsF/m/sc
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bold}{it}{
+ <-> alias * LibertinusSerif-TOsF/b/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{m}{sl}{
- <-> ssub * LibertinusSerif-TOsF/m/it
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{b}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/b/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{regular}{sl}{
- <-> ssub * LibertinusSerif-TOsF/regular/it
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bold}{scsl}{
+ <-> ssub * LibertinusSerif-TOsF/bold/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{m}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/m/scit
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{b}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/b/it
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{regular}{scsl}{
- <-> ssub * LibertinusSerif-TOsF/regular/scit
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/bold/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bx}{sl}{
- <-> ssub * LibertinusSerif-TOsF/b/sl
-}{}
-
\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bx}{sc}{
<-> ssub * LibertinusSerif-TOsF/b/sc
}{}
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bx}{sl}{
+ <-> ssub * LibertinusSerif-TOsF/b/sl
+}{}
+
\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bx}{scsl}{
<-> ssub * LibertinusSerif-TOsF/b/scsl
}{}
+\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bx}{it}{
+ <-> ssub * LibertinusSerif-TOsF/b/it
+}{}
+
\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bx}{n}{
<-> ssub * LibertinusSerif-TOsF/b/n
}{}
@@ -195,8 +199,4 @@
<-> ssub * LibertinusSerif-TOsF/b/scit
}{}
-\DeclareFontShape{T2C}{LibertinusSerif-TOsF}{bx}{it}{
- <-> ssub * LibertinusSerif-TOsF/b/it
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-LF.fd
deleted file mode 100644
index 76a2621167d..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-LF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2CLibertinusSerifDisplay-LF.fd}
- [2022/11/07 (autoinst) Font definitions for T2C/LibertinusSerifDisplay-LF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2C}{LibertinusSerifDisplay-LF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2C}{LibertinusSerifDisplay-LF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-lf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerifDisplay-LF}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-LF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-OsF.fd
deleted file mode 100644
index b8fd91ab984..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-OsF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2CLibertinusSerifDisplay-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2C/LibertinusSerifDisplay-OsF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2C}{LibertinusSerifDisplay-OsF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2C}{LibertinusSerifDisplay-OsF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-osf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerifDisplay-OsF}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-OsF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-Sup.fd
deleted file mode 100644
index 49ccd52ed64..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-Sup.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2CLibertinusSerifDisplay-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for T2C/LibertinusSerifDisplay-Sup.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2C}{LibertinusSerifDisplay-Sup}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2C}{LibertinusSerifDisplay-Sup}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-sup-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerifDisplay-Sup}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-Sup/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-TLF.fd
deleted file mode 100644
index c87ad846a03..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-TLF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2CLibertinusSerifDisplay-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T2C/LibertinusSerifDisplay-TLF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2C}{LibertinusSerifDisplay-TLF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2C}{LibertinusSerifDisplay-TLF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-tlf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerifDisplay-TLF}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-TLF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-TOsF.fd
deleted file mode 100644
index ddbafaf8d8a..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifDisplay-TOsF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2CLibertinusSerifDisplay-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for T2C/LibertinusSerifDisplay-TOsF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifDisplay@scale\endcsname\relax
- \let\LibertinusSerifDisplay@@scale\@empty
-\else
- \edef\LibertinusSerifDisplay@@scale{s*[\csname LibertinusSerifDisplay@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2C}{LibertinusSerifDisplay-TOsF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2C}{LibertinusSerifDisplay-TOsF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-tosf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerifDisplay-TOsF}{regular}{n}{
- <-> alias * LibertinusSerifDisplay-TOsF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifInitials-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifInitials-TLF.fd
deleted file mode 100644
index 022bc9059a2..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T2CLibertinusSerifInitials-TLF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T2CLibertinusSerifInitials-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T2C/LibertinusSerifInitials-TLF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifInitials@scale\endcsname\relax
- \let\LibertinusSerifInitials@@scale\@empty
-\else
- \edef\LibertinusSerifInitials@@scale{s*[\csname LibertinusSerifInitials@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{T2C}{LibertinusSerifInitials-TLF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T2C}{LibertinusSerifInitials-TLF}{m}{n}{
- <-> \LibertinusSerifInitials@@scale LibertinusSerifInitials-Regular-tlf-t2c
-}{}
-
-\DeclareFontShape{T2C}{LibertinusSerifInitials-TLF}{regular}{n}{
- <-> alias * LibertinusSerifInitials-TLF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusMono-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusMono-TLF.fd
index c2a92fbe304..7ef5d8dac62 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusMono-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusMono-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/11
%%
\ProvidesFile{TS1LibertinusMono-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/LibertinusMono-TLF.]
+ [2025/01/11 (autoinst) Font definitions for TS1/LibertinusMono-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,66 +20,62 @@
\DeclareFontFamily{TS1}{LibertinusMono-TLF}{\hyphenchar\font=-1}
-% ---- b = bold ----
+% ---- m = regular ----
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{b}{sl}{
- <-> \LibertinusMono@@scale LibertinusMono-BoldOblique-tlf-ts1
+\DeclareFontShape{TS1}{LibertinusMono-TLF}{m}{it}{
+ <-> \LibertinusMono@@scale LibertinusMono-Italic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{bold}{sl}{
- <-> alias * LibertinusMono-TLF/b/sl
+\DeclareFontShape{TS1}{LibertinusMono-TLF}{regular}{it}{
+ <-> alias * LibertinusMono-TLF/m/it
}{}
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{b}{n}{
- <-> \LibertinusMono@@scale LibertinusMono-Bold-tlf-ts1
+\DeclareFontShape{TS1}{LibertinusMono-TLF}{m}{n}{
+ <-> \LibertinusMono@@scale LibertinusMono-Regular-tlf-ts1
}{}
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{bold}{n}{
- <-> alias * LibertinusMono-TLF/b/n
+\DeclareFontShape{TS1}{LibertinusMono-TLF}{regular}{n}{
+ <-> alias * LibertinusMono-TLF/m/n
}{}
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{b}{it}{
- <-> ssub * LibertinusMono-TLF/b/sl
+\DeclareFontShape{TS1}{LibertinusMono-TLF}{m}{sl}{
+ <-> ssub * LibertinusMono-TLF/m/it
}{}
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{bold}{it}{
- <-> ssub * LibertinusMono-TLF/bold/sl
+\DeclareFontShape{TS1}{LibertinusMono-TLF}{regular}{sl}{
+ <-> ssub * LibertinusMono-TLF/regular/it
}{}
-% ---- m = regular ----
+% ---- b = bold ----
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{m}{n}{
- <-> \LibertinusMono@@scale LibertinusMono-Regular-tlf-ts1
+\DeclareFontShape{TS1}{LibertinusMono-TLF}{b}{it}{
+ <-> \LibertinusMono@@scale LibertinusMono-BoldItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{regular}{n}{
- <-> alias * LibertinusMono-TLF/m/n
+\DeclareFontShape{TS1}{LibertinusMono-TLF}{bold}{it}{
+ <-> alias * LibertinusMono-TLF/b/it
}{}
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{m}{sl}{
- <-> \LibertinusMono@@scale LibertinusMono-Oblique-tlf-ts1
+\DeclareFontShape{TS1}{LibertinusMono-TLF}{b}{n}{
+ <-> \LibertinusMono@@scale LibertinusMono-Bold-tlf-ts1
}{}
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{regular}{sl}{
- <-> alias * LibertinusMono-TLF/m/sl
+\DeclareFontShape{TS1}{LibertinusMono-TLF}{bold}{n}{
+ <-> alias * LibertinusMono-TLF/b/n
}{}
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{m}{it}{
- <-> ssub * LibertinusMono-TLF/m/sl
+\DeclareFontShape{TS1}{LibertinusMono-TLF}{b}{sl}{
+ <-> ssub * LibertinusMono-TLF/b/it
}{}
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{regular}{it}{
- <-> ssub * LibertinusMono-TLF/regular/sl
+\DeclareFontShape{TS1}{LibertinusMono-TLF}{bold}{sl}{
+ <-> ssub * LibertinusMono-TLF/bold/it
}{}
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{bx}{it}{
- <-> ssub * LibertinusMono-TLF/b/it
-}{}
-
\DeclareFontShape{TS1}{LibertinusMono-TLF}{bx}{n}{
<-> ssub * LibertinusMono-TLF/b/n
}{}
@@ -88,4 +84,8 @@
<-> ssub * LibertinusMono-TLF/b/sl
}{}
+\DeclareFontShape{TS1}{LibertinusMono-TLF}{bx}{it}{
+ <-> ssub * LibertinusMono-TLF/b/it
+}{}
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-LF.fd
index 31df8f6be77..e8e5f46bceb 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{TS1LibertinusSans-LF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/LibertinusSans-LF.]
+ [2024/09/22 (autoinst) Font definitions for TS1/LibertinusSans-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,35 +20,16 @@
\DeclareFontFamily{TS1}{LibertinusSans-LF}{}
-% ---- b = bold ----
-
-\DeclareFontShape{TS1}{LibertinusSans-LF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-LF}{bold}{sl}{
- <-> alias * LibertinusSans-LF/b/sl
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-LF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-LF}{bold}{n}{
- <-> alias * LibertinusSans-LF/b/n
-}{}
+% ---- m = regular ----
-\DeclareFontShape{TS1}{LibertinusSans-LF}{b}{it}{
- <-> ssub * LibertinusSans-LF/b/sl
+\DeclareFontShape{TS1}{LibertinusSans-LF}{m}{it}{
+ <-> \LibertinusSans@@scale LibertinusSans-Italic-lf-ts1
}{}
-\DeclareFontShape{TS1}{LibertinusSans-LF}{bold}{it}{
- <-> ssub * LibertinusSans-LF/bold/sl
+\DeclareFontShape{TS1}{LibertinusSans-LF}{regular}{it}{
+ <-> alias * LibertinusSans-LF/m/it
}{}
-
-% ---- m = regular ----
-
\DeclareFontShape{TS1}{LibertinusSans-LF}{m}{n}{
<-> \LibertinusSans@@scale LibertinusSans-Regular-lf-ts1
}{}
@@ -57,14 +38,6 @@
<-> alias * LibertinusSans-LF/m/n
}{}
-\DeclareFontShape{TS1}{LibertinusSans-LF}{m}{it}{
- <-> \LibertinusSans@@scale LibertinusSans-Italic-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-LF}{regular}{it}{
- <-> alias * LibertinusSans-LF/m/it
-}{}
-
\DeclareFontShape{TS1}{LibertinusSans-LF}{m}{sl}{
<-> ssub * LibertinusSans-LF/m/it
}{}
@@ -74,16 +47,19 @@
}{}
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+% ---- b = bold ----
-\DeclareFontShape{TS1}{LibertinusSans-LF}{bx}{it}{
- <-> ssub * LibertinusSans-LF/b/it
+\DeclareFontShape{TS1}{LibertinusSans-LF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-lf-ts1
}{}
-\DeclareFontShape{TS1}{LibertinusSans-LF}{bx}{sl}{
- <-> ssub * LibertinusSans-LF/b/sl
+\DeclareFontShape{TS1}{LibertinusSans-LF}{bold}{n}{
+ <-> alias * LibertinusSans-LF/b/n
}{}
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
\DeclareFontShape{TS1}{LibertinusSans-LF}{bx}{n}{
<-> ssub * LibertinusSans-LF/b/n
}{}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-OsF.fd
index 7f012e77dab..d51210d6357 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{TS1LibertinusSans-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/LibertinusSans-OsF.]
+ [2024/09/22 (autoinst) Font definitions for TS1/LibertinusSans-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,14 +22,6 @@
% ---- m = regular ----
-\DeclareFontShape{TS1}{LibertinusSans-OsF}{m}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Regular-osf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-OsF}{regular}{n}{
- <-> alias * LibertinusSans-OsF/m/n
-}{}
-
\DeclareFontShape{TS1}{LibertinusSans-OsF}{m}{it}{
<-> \LibertinusSans@@scale LibertinusSans-Italic-osf-ts1
}{}
@@ -38,6 +30,14 @@
<-> alias * LibertinusSans-OsF/m/it
}{}
+\DeclareFontShape{TS1}{LibertinusSans-OsF}{m}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Regular-osf-ts1
+}{}
+
+\DeclareFontShape{TS1}{LibertinusSans-OsF}{regular}{n}{
+ <-> alias * LibertinusSans-OsF/m/n
+}{}
+
\DeclareFontShape{TS1}{LibertinusSans-OsF}{m}{sl}{
<-> ssub * LibertinusSans-OsF/m/it
}{}
@@ -57,35 +57,11 @@
<-> alias * LibertinusSans-OsF/b/n
}{}
-\DeclareFontShape{TS1}{LibertinusSans-OsF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-osf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-OsF}{bold}{sl}{
- <-> alias * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-OsF}{b}{it}{
- <-> ssub * LibertinusSans-OsF/b/sl
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-OsF}{bold}{it}{
- <-> ssub * LibertinusSans-OsF/bold/sl
-}{}
-
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{TS1}{LibertinusSans-OsF}{bx}{it}{
- <-> ssub * LibertinusSans-OsF/b/it
-}{}
-
\DeclareFontShape{TS1}{LibertinusSans-OsF}{bx}{n}{
<-> ssub * LibertinusSans-OsF/b/n
}{}
-\DeclareFontShape{TS1}{LibertinusSans-OsF}{bx}{sl}{
- <-> ssub * LibertinusSans-OsF/b/sl
-}{}
-
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-TLF.fd
index 61e2f2cea9c..07f719efac2 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{TS1LibertinusSans-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/LibertinusSans-TLF.]
+ [2024/09/22 (autoinst) Font definitions for TS1/LibertinusSans-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,33 +20,6 @@
\DeclareFontFamily{TS1}{LibertinusSans-TLF}{}
-% ---- b = bold ----
-
-\DeclareFontShape{TS1}{LibertinusSans-TLF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-TLF}{bold}{sl}{
- <-> alias * LibertinusSans-TLF/b/sl
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-TLF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-TLF}{bold}{n}{
- <-> alias * LibertinusSans-TLF/b/n
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-TLF}{b}{it}{
- <-> ssub * LibertinusSans-TLF/b/sl
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-TLF}{bold}{it}{
- <-> ssub * LibertinusSans-TLF/bold/sl
-}{}
-
-
% ---- m = regular ----
\DeclareFontShape{TS1}{LibertinusSans-TLF}{m}{n}{
@@ -74,16 +47,19 @@
}{}
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+% ---- b = bold ----
-\DeclareFontShape{TS1}{LibertinusSans-TLF}{bx}{it}{
- <-> ssub * LibertinusSans-TLF/b/it
+\DeclareFontShape{TS1}{LibertinusSans-TLF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tlf-ts1
}{}
-\DeclareFontShape{TS1}{LibertinusSans-TLF}{bx}{sl}{
- <-> ssub * LibertinusSans-TLF/b/sl
+\DeclareFontShape{TS1}{LibertinusSans-TLF}{bold}{n}{
+ <-> alias * LibertinusSans-TLF/b/n
}{}
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
\DeclareFontShape{TS1}{LibertinusSans-TLF}{bx}{n}{
<-> ssub * LibertinusSans-TLF/b/n
}{}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-TOsF.fd
index ac6407d56ec..ac4da99f41e 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSans-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{TS1LibertinusSans-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/LibertinusSans-TOsF.]
+ [2024/09/22 (autoinst) Font definitions for TS1/LibertinusSans-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,33 +20,6 @@
\DeclareFontFamily{TS1}{LibertinusSans-TOsF}{}
-% ---- b = bold ----
-
-\DeclareFontShape{TS1}{LibertinusSans-TOsF}{b}{sl}{
- <-> \LibertinusSans@@scale LibertinusSans-BoldOblique-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-TOsF}{bold}{sl}{
- <-> alias * LibertinusSans-TOsF/b/sl
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-TOsF}{b}{n}{
- <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-TOsF}{bold}{n}{
- <-> alias * LibertinusSans-TOsF/b/n
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-TOsF}{b}{it}{
- <-> ssub * LibertinusSans-TOsF/b/sl
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSans-TOsF}{bold}{it}{
- <-> ssub * LibertinusSans-TOsF/bold/sl
-}{}
-
-
% ---- m = regular ----
\DeclareFontShape{TS1}{LibertinusSans-TOsF}{m}{n}{
@@ -74,18 +47,21 @@
}{}
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+% ---- b = bold ----
-\DeclareFontShape{TS1}{LibertinusSans-TOsF}{bx}{it}{
- <-> ssub * LibertinusSans-TOsF/b/it
+\DeclareFontShape{TS1}{LibertinusSans-TOsF}{b}{n}{
+ <-> \LibertinusSans@@scale LibertinusSans-Bold-tosf-ts1
}{}
-\DeclareFontShape{TS1}{LibertinusSans-TOsF}{bx}{n}{
- <-> ssub * LibertinusSans-TOsF/b/n
+\DeclareFontShape{TS1}{LibertinusSans-TOsF}{bold}{n}{
+ <-> alias * LibertinusSans-TOsF/b/n
}{}
-\DeclareFontShape{TS1}{LibertinusSans-TOsF}{bx}{sl}{
- <-> ssub * LibertinusSans-TOsF/b/sl
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{TS1}{LibertinusSans-TOsF}{bx}{n}{
+ <-> ssub * LibertinusSans-TOsF/b/n
}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-LF.fd
index 57a9bde0b0e..9ca671dbe96 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{TS1LibertinusSerif-LF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/LibertinusSerif-LF.]
+ [2024/09/22 (autoinst) Font definitions for TS1/LibertinusSerif-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -49,14 +49,6 @@
% ---- b = bold ----
-\DeclareFontShape{TS1}{LibertinusSerif-LF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSerif-LF}{bold}{it}{
- <-> alias * LibertinusSerif-LF/b/it
-}{}
-
\DeclareFontShape{TS1}{LibertinusSerif-LF}{b}{n}{
<-> \LibertinusSerif@@scale LibertinusSerif-Bold-lf-ts1
}{}
@@ -65,6 +57,14 @@
<-> alias * LibertinusSerif-LF/b/n
}{}
+\DeclareFontShape{TS1}{LibertinusSerif-LF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-lf-ts1
+}{}
+
+\DeclareFontShape{TS1}{LibertinusSerif-LF}{bold}{it}{
+ <-> alias * LibertinusSerif-LF/b/it
+}{}
+
\DeclareFontShape{TS1}{LibertinusSerif-LF}{b}{sl}{
<-> ssub * LibertinusSerif-LF/b/it
}{}
@@ -103,10 +103,6 @@
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{TS1}{LibertinusSerif-LF}{bx}{sl}{
- <-> ssub * LibertinusSerif-LF/b/sl
-}{}
-
\DeclareFontShape{TS1}{LibertinusSerif-LF}{bx}{it}{
<-> ssub * LibertinusSerif-LF/b/it
}{}
@@ -115,4 +111,8 @@
<-> ssub * LibertinusSerif-LF/b/n
}{}
+\DeclareFontShape{TS1}{LibertinusSerif-LF}{bx}{sl}{
+ <-> ssub * LibertinusSerif-LF/b/sl
+}{}
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-OsF.fd
index a44478f9e7d..4958192fa88 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{TS1LibertinusSerif-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/LibertinusSerif-OsF.]
+ [2024/09/22 (autoinst) Font definitions for TS1/LibertinusSerif-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,33 +20,6 @@
\DeclareFontFamily{TS1}{LibertinusSerif-OsF}{}
-% ---- b = bold ----
-
-\DeclareFontShape{TS1}{LibertinusSerif-OsF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSerif-OsF}{bold}{n}{
- <-> alias * LibertinusSerif-OsF/b/n
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSerif-OsF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSerif-OsF}{bold}{it}{
- <-> alias * LibertinusSerif-OsF/b/it
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSerif-OsF}{b}{sl}{
- <-> ssub * LibertinusSerif-OsF/b/it
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSerif-OsF}{bold}{sl}{
- <-> ssub * LibertinusSerif-OsF/bold/it
-}{}
-
-
% ---- m = regular ----
\DeclareFontShape{TS1}{LibertinusSerif-OsF}{m}{n}{
@@ -76,14 +49,6 @@
% ---- sb = semibold ----
-\DeclareFontShape{TS1}{LibertinusSerif-OsF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSerif-OsF}{semibold}{it}{
- <-> alias * LibertinusSerif-OsF/sb/it
-}{}
-
\DeclareFontShape{TS1}{LibertinusSerif-OsF}{sb}{n}{
<-> \LibertinusSerif@@scale LibertinusSerif-Semibold-osf-ts1
}{}
@@ -92,6 +57,14 @@
<-> alias * LibertinusSerif-OsF/sb/n
}{}
+\DeclareFontShape{TS1}{LibertinusSerif-OsF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-osf-ts1
+}{}
+
+\DeclareFontShape{TS1}{LibertinusSerif-OsF}{semibold}{it}{
+ <-> alias * LibertinusSerif-OsF/sb/it
+}{}
+
\DeclareFontShape{TS1}{LibertinusSerif-OsF}{sb}{sl}{
<-> ssub * LibertinusSerif-OsF/sb/it
}{}
@@ -101,18 +74,45 @@
}{}
+% ---- b = bold ----
+
+\DeclareFontShape{TS1}{LibertinusSerif-OsF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-osf-ts1
+}{}
+
+\DeclareFontShape{TS1}{LibertinusSerif-OsF}{bold}{it}{
+ <-> alias * LibertinusSerif-OsF/b/it
+}{}
+
+\DeclareFontShape{TS1}{LibertinusSerif-OsF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-osf-ts1
+}{}
+
+\DeclareFontShape{TS1}{LibertinusSerif-OsF}{bold}{n}{
+ <-> alias * LibertinusSerif-OsF/b/n
+}{}
+
+\DeclareFontShape{TS1}{LibertinusSerif-OsF}{b}{sl}{
+ <-> ssub * LibertinusSerif-OsF/b/it
+}{}
+
+\DeclareFontShape{TS1}{LibertinusSerif-OsF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-OsF/bold/it
+}{}
+
+
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
\DeclareFontShape{TS1}{LibertinusSerif-OsF}{bx}{it}{
<-> ssub * LibertinusSerif-OsF/b/it
}{}
-\DeclareFontShape{TS1}{LibertinusSerif-OsF}{bx}{n}{
- <-> ssub * LibertinusSerif-OsF/b/n
-}{}
-
\DeclareFontShape{TS1}{LibertinusSerif-OsF}{bx}{sl}{
<-> ssub * LibertinusSerif-OsF/b/sl
}{}
+\DeclareFontShape{TS1}{LibertinusSerif-OsF}{bx}{n}{
+ <-> ssub * LibertinusSerif-OsF/b/n
+}{}
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-TLF.fd
index e055ddc164e..15b33224f5d 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{TS1LibertinusSerif-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/LibertinusSerif-TLF.]
+ [2024/09/22 (autoinst) Font definitions for TS1/LibertinusSerif-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -47,57 +47,57 @@
}{}
-% ---- b = bold ----
+% ---- sb = semibold ----
-\DeclareFontShape{TS1}{LibertinusSerif-TLF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tlf-ts1
+\DeclareFontShape{TS1}{LibertinusSerif-TLF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{LibertinusSerif-TLF}{bold}{it}{
- <-> alias * LibertinusSerif-TLF/b/it
+\DeclareFontShape{TS1}{LibertinusSerif-TLF}{semibold}{it}{
+ <-> alias * LibertinusSerif-TLF/sb/it
}{}
-\DeclareFontShape{TS1}{LibertinusSerif-TLF}{b}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-ts1
+\DeclareFontShape{TS1}{LibertinusSerif-TLF}{sb}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-ts1
}{}
-\DeclareFontShape{TS1}{LibertinusSerif-TLF}{bold}{n}{
- <-> alias * LibertinusSerif-TLF/b/n
+\DeclareFontShape{TS1}{LibertinusSerif-TLF}{semibold}{n}{
+ <-> alias * LibertinusSerif-TLF/sb/n
}{}
-\DeclareFontShape{TS1}{LibertinusSerif-TLF}{b}{sl}{
- <-> ssub * LibertinusSerif-TLF/b/it
+\DeclareFontShape{TS1}{LibertinusSerif-TLF}{sb}{sl}{
+ <-> ssub * LibertinusSerif-TLF/sb/it
}{}
-\DeclareFontShape{TS1}{LibertinusSerif-TLF}{bold}{sl}{
- <-> ssub * LibertinusSerif-TLF/bold/it
+\DeclareFontShape{TS1}{LibertinusSerif-TLF}{semibold}{sl}{
+ <-> ssub * LibertinusSerif-TLF/semibold/it
}{}
-% ---- sb = semibold ----
+% ---- b = bold ----
-\DeclareFontShape{TS1}{LibertinusSerif-TLF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tlf-ts1
+\DeclareFontShape{TS1}{LibertinusSerif-TLF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{LibertinusSerif-TLF}{semibold}{it}{
- <-> alias * LibertinusSerif-TLF/sb/it
+\DeclareFontShape{TS1}{LibertinusSerif-TLF}{bold}{it}{
+ <-> alias * LibertinusSerif-TLF/b/it
}{}
-\DeclareFontShape{TS1}{LibertinusSerif-TLF}{sb}{n}{
- <-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tlf-ts1
+\DeclareFontShape{TS1}{LibertinusSerif-TLF}{b}{n}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-Bold-tlf-ts1
}{}
-\DeclareFontShape{TS1}{LibertinusSerif-TLF}{semibold}{n}{
- <-> alias * LibertinusSerif-TLF/sb/n
+\DeclareFontShape{TS1}{LibertinusSerif-TLF}{bold}{n}{
+ <-> alias * LibertinusSerif-TLF/b/n
}{}
-\DeclareFontShape{TS1}{LibertinusSerif-TLF}{sb}{sl}{
- <-> ssub * LibertinusSerif-TLF/sb/it
+\DeclareFontShape{TS1}{LibertinusSerif-TLF}{b}{sl}{
+ <-> ssub * LibertinusSerif-TLF/b/it
}{}
-\DeclareFontShape{TS1}{LibertinusSerif-TLF}{semibold}{sl}{
- <-> ssub * LibertinusSerif-TLF/semibold/it
+\DeclareFontShape{TS1}{LibertinusSerif-TLF}{bold}{sl}{
+ <-> ssub * LibertinusSerif-TLF/bold/it
}{}
@@ -107,12 +107,12 @@
<-> ssub * LibertinusSerif-TLF/b/n
}{}
-\DeclareFontShape{TS1}{LibertinusSerif-TLF}{bx}{it}{
- <-> ssub * LibertinusSerif-TLF/b/it
-}{}
-
\DeclareFontShape{TS1}{LibertinusSerif-TLF}{bx}{sl}{
<-> ssub * LibertinusSerif-TLF/b/sl
}{}
+\DeclareFontShape{TS1}{LibertinusSerif-TLF}{bx}{it}{
+ <-> ssub * LibertinusSerif-TLF/b/it
+}{}
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-TOsF.fd
index 4ca20bd9260..831c4cab254 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerif-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2024/09/22
%%
\ProvidesFile{TS1LibertinusSerif-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/LibertinusSerif-TOsF.]
+ [2024/09/22 (autoinst) Font definitions for TS1/LibertinusSerif-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,14 +22,6 @@
% ---- sb = semibold ----
-\DeclareFontShape{TS1}{LibertinusSerif-TOsF}{sb}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSerif-TOsF}{semibold}{it}{
- <-> alias * LibertinusSerif-TOsF/sb/it
-}{}
-
\DeclareFontShape{TS1}{LibertinusSerif-TOsF}{sb}{n}{
<-> \LibertinusSerif@@scale LibertinusSerif-Semibold-tosf-ts1
}{}
@@ -38,6 +30,14 @@
<-> alias * LibertinusSerif-TOsF/sb/n
}{}
+\DeclareFontShape{TS1}{LibertinusSerif-TOsF}{sb}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-SemiboldItalic-tosf-ts1
+}{}
+
+\DeclareFontShape{TS1}{LibertinusSerif-TOsF}{semibold}{it}{
+ <-> alias * LibertinusSerif-TOsF/sb/it
+}{}
+
\DeclareFontShape{TS1}{LibertinusSerif-TOsF}{sb}{sl}{
<-> ssub * LibertinusSerif-TOsF/sb/it
}{}
@@ -49,14 +49,6 @@
% ---- b = bold ----
-\DeclareFontShape{TS1}{LibertinusSerif-TOsF}{b}{it}{
- <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSerif-TOsF}{bold}{it}{
- <-> alias * LibertinusSerif-TOsF/b/it
-}{}
-
\DeclareFontShape{TS1}{LibertinusSerif-TOsF}{b}{n}{
<-> \LibertinusSerif@@scale LibertinusSerif-Bold-tosf-ts1
}{}
@@ -65,6 +57,14 @@
<-> alias * LibertinusSerif-TOsF/b/n
}{}
+\DeclareFontShape{TS1}{LibertinusSerif-TOsF}{b}{it}{
+ <-> \LibertinusSerif@@scale LibertinusSerif-BoldItalic-tosf-ts1
+}{}
+
+\DeclareFontShape{TS1}{LibertinusSerif-TOsF}{bold}{it}{
+ <-> alias * LibertinusSerif-TOsF/b/it
+}{}
+
\DeclareFontShape{TS1}{LibertinusSerif-TOsF}{b}{sl}{
<-> ssub * LibertinusSerif-TOsF/b/it
}{}
@@ -103,14 +103,14 @@
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{TS1}{LibertinusSerif-TOsF}{bx}{n}{
- <-> ssub * LibertinusSerif-TOsF/b/n
-}{}
-
\DeclareFontShape{TS1}{LibertinusSerif-TOsF}{bx}{it}{
<-> ssub * LibertinusSerif-TOsF/b/it
}{}
+\DeclareFontShape{TS1}{LibertinusSerif-TOsF}{bx}{n}{
+ <-> ssub * LibertinusSerif-TOsF/b/n
+}{}
+
\DeclareFontShape{TS1}{LibertinusSerif-TOsF}{bx}{sl}{
<-> ssub * LibertinusSerif-TOsF/b/sl
}{}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-LF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-LF.fd
index a0a7969b5ee..c4294297aef 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-LF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{TS1LibertinusSerifDisplay-LF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/LibertinusSerifDisplay-LF.]
+ [2025/01/06 (autoinst) Font definitions for TS1/LibertinusSerifDisplay-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-OsF.fd
index c5054d35c07..10f8081082e 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-OsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{TS1LibertinusSerifDisplay-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/LibertinusSerifDisplay-OsF.]
+ [2025/01/06 (autoinst) Font definitions for TS1/LibertinusSerifDisplay-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-TLF.fd
index df70e220c08..2ebdfae07b6 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-TLF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{TS1LibertinusSerifDisplay-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/LibertinusSerifDisplay-TLF.]
+ [2025/01/06 (autoinst) Font definitions for TS1/LibertinusSerifDisplay-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-TOsF.fd
index f7248d4a802..b85286beaa2 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2022/11/07
+%% Generated by autoinst on 2025/01/06
%%
\ProvidesFile{TS1LibertinusSerifDisplay-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/LibertinusSerifDisplay-TOsF.]
+ [2025/01/06 (autoinst) Font definitions for TS1/LibertinusSerifDisplay-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifInitials-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifInitials-TLF.fd
deleted file mode 100644
index c1f580b71ef..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifInitials-TLF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{TS1LibertinusSerifInitials-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/LibertinusSerifInitials-TLF.]
-
-\ifcsname s@fct@alias\endcsname\else
-\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
-\gdef\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space will
- \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
-}
-\fi
-
-\expandafter\ifx\csname LibertinusSerifInitials@scale\endcsname\relax
- \let\LibertinusSerifInitials@@scale\@empty
-\else
- \edef\LibertinusSerifInitials@@scale{s*[\csname LibertinusSerifInitials@scale\endcsname]}%
-\fi
-
-\DeclareFontFamily{TS1}{LibertinusSerifInitials-TLF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{TS1}{LibertinusSerifInitials-TLF}{m}{n}{
- <-> \LibertinusSerifInitials@@scale LibertinusSerifInitials-Regular-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusSerifInitials-TLF}{regular}{n}{
- <-> alias * LibertinusSerifInitials-TLF/m/n
-}{}
-
-
-% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/libertinus-type1/libertinus-type1.sty b/Master/texmf-dist/tex/latex/libertinus-type1/libertinus-type1.sty
index 701a702771b..c809d41b796 100644
--- a/Master/texmf-dist/tex/latex/libertinus-type1/libertinus-type1.sty
+++ b/Master/texmf-dist/tex/latex/libertinus-type1/libertinus-type1.sty
@@ -1,5 +1,5 @@
\ProvidesPackage{libertinus-type1}[%
- 2023/06/23 (Bob Tennent) Supports libertinus fonts for latex/pdflatex.]
+ 2025/01/06 (Bob Tennent) Supports libertinus fonts for latex/pdflatex.]
\RequirePackage{ifxetex,ifluatex,xkeyval,textcomp}
\newif\iflibertinus@otf
@@ -137,10 +137,8 @@ use libertinus.sty or libertinus-otf.sty.\MessageBreak
\fi}
\newcommand*\LibertinusSerif@scale{1}
-\newcommand*\LibertinusSerifDisplayT@scale{1}
\newcommand*\LibertinusSans@scale{1}
\newcommand*\LibertinusMono@scale{0.85} % cf. MatchLowerCase
-\newcommand*\LibertinusSerifInitials@scale{1}
\DeclareOptionX{ScaleRM}{\renewcommand*{\LibertinusSerif@scale}{#1}}
\DeclareOptionX{ScaleSF}{\renewcommand*{\LibertinusSans@scale}{#1}}
\DeclareOptionX{ScaleTT}{\renewcommand*{\LibertinusMono@scale}{#1}}
@@ -198,9 +196,6 @@ use libertinus.sty or libertinus-otf.sty.\MessageBreak
\def\LibertinusSansTLF{\fontfamily{LibertinusSans-TLF}\selectfont}
\def\LibertinusSansLF{\fontfamily{LibertinusSans-LF}\selectfont}
\def\LibertinusMono{\fontfamily{LibertinusMono-TLF}\selectfont}
-\def\Libertinusinitials{\fontfamily{LibertinusSerifInitials-\libertinusserif@figurealign\libertinusserif@figurestyle}\selectfont}
-\def\LibertinusInitials{\fontfamily{LibertinusSerifInitials-\libertinusserif@figurealign\libertinusserif@figurestyle}\selectfont}
-\def\LibertinusDisplay{\fontfamily{LibertinusSerifDisplay-\libertinusserif@figurealign\libertinusserif@figurestyle}\selectfont}
\def\LibertinusKeyboard{\fontfamily{LibertinusKeyboard-TLF}\selectfont}
\fa@naming@exception{figures}{{superior}{proportional}}{Sup}
@@ -213,5 +208,7 @@ use libertinus.sty or libertinus-otf.sty.\MessageBreak
\DeclareTextFontCommand{\textsup}{\sufigures}
\let\textsuperior\textsup
+\providecommand*\libertinusDisplay{\fontfamily{LibertinusSerifDisplay-\libertinusserif@figurealign\libertinusserif@figurestyle}\selectfont}
+
\def\libertinusseriflgr{\fontencoding{LGR}\fontfamily{\libertinusserif@family}\selectfont}
\def\libertinussanslgr{\fontencoding{LGR}\fontfamily{\libertinussans@family}\selectfont}
diff --git a/Master/texmf-dist/tex/latex/libris/libris.sty b/Master/texmf-dist/tex/latex/libris/libris.sty
index 9dc634b3b42..4f1fa147786 100644
--- a/Master/texmf-dist/tex/latex/libris/libris.sty
+++ b/Master/texmf-dist/tex/latex/libris/libris.sty
@@ -1,23 +1,54 @@
-%% Copyright 2008 Clea F. Rees
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Clea F. Rees.
-%
-% This work consists of all files listed in manifest.txt.
+%%
+%% This is file `libris.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% librisadf.dtx (with options: `sty')
+%% Copyright (C) 2008-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% librisadf. You may however distribute the package librisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{libris}[2008/12/13 v1.0 libris]
+\RequirePackage{svn-prov}
+\ProvidesPackageSVN[libris.sty]{$Id: librisadf.dtx 10402 2024-09-27 02:35:48Z cfrees $}[v1.1 \revinfo]
+\DefineFileInfoSVN[libris]
\RequirePackage[T1]{fontenc}
-\RequirePackage{textcomp}
-\RequirePackage{nfssext-cfr}
+\RequirePackage{nfssext-cfr}[2024/01/01]
+\IfFormatAtLeastTF {2020-02-02}{%
+ \DeclareEncodingSubset{TS1}{yly}{1}%
+ \DeclareEncodingSubset{TS1}{ylyw}{1}%
+}{%
+ \RequirePackage{textcomp}}
+\UndeclareTextCommand{\textperthousand}{T1}
+\ExplSyntaxOn
+\keys_define:nn { libris }
+{
+ scale .tl_set:N = \yly@scale,
+ scale .initial:V = \@empty,
+}
+\ProcessKeyOptions[libris]
+\ExplSyntaxOff
\renewcommand{\sfdefault}{yly}
-\endinput
%% end libris.sty
+%% end libris.sty
+\endinput
+%%
+%% End of file `libris.sty'.
diff --git a/Master/texmf-dist/tex/latex/libris/t1yly.fd b/Master/texmf-dist/tex/latex/libris/t1yly.fd
index 93220b3c665..425d3fa6a33 100644
--- a/Master/texmf-dist/tex/latex/libris/t1yly.fd
+++ b/Master/texmf-dist/tex/latex/libris/t1yly.fd
@@ -5,36 +5,49 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1yly.fd}
- [2010/06/27 Fontinst v1.933 font definitions for T1/yly.]
+ [2024/09/27 Fontinst v1.933 font definitions for T1/yly.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yly@scale\endcsname\relax
+ \let\yly@@scale\@empty
+\else
+ \edef\yly@@scale{s*[\csname yly@scale\endcsname]}%
+\fi
\DeclareFontFamily{T1}{yly}{}
\DeclareFontShape{T1}{yly}{m}{n}{
- <-> ylyr8t
+ <-> \yly@@scale ylyr8t
}{}
\DeclareFontShape{T1}{yly}{m}{it}{
- <-> ylyri8t
+ <-> \yly@@scale ylyri8t
}{}
\DeclareFontShape{T1}{yly}{b}{n}{
- <-> ylyb8t
+ <-> \yly@@scale ylyb8t
}{}
\DeclareFontShape{T1}{yly}{b}{it}{
- <-> ylybi8t
+ <-> \yly@@scale ylybi8t
}{}
\DeclareFontShape{T1}{yly}{m}{sc}{<->ssub * yly/m/n}{}
-\DeclareFontShape{T1}{yly}{m}{si}{<->ssub * yly/m/it}{}
-\DeclareFontShape{T1}{yly}{m}{sl}{<->ssub * yly/m/si}{}
+\DeclareFontShape{T1}{yly}{m}{sl}{<->ssub * yly/m/it}{}
+\DeclareFontShape{T1}{yly}{m}{scsl}{<->ssub * yly/m/sl}{}
+\DeclareFontShape{T1}{yly}{m}{scit}{<->ssub * yly/m/scsl}{}
+\DeclareFontShape{T1}{yly}{m}{si}{<->ssub * yly/m/scit}{}
\DeclareFontShape{T1}{yly}{bx}{n}{<->ssub * yly/b/n}{}
\DeclareFontShape{T1}{yly}{b}{sc}{<->ssub * yly/b/n}{}
\DeclareFontShape{T1}{yly}{bx}{sc}{<->ssub * yly/b/sc}{}
\DeclareFontShape{T1}{yly}{bx}{it}{<->ssub * yly/b/it}{}
-\DeclareFontShape{T1}{yly}{b}{si}{<->ssub * yly/b/it}{}
-\DeclareFontShape{T1}{yly}{bx}{si}{<->ssub * yly/b/si}{}
-\DeclareFontShape{T1}{yly}{b}{sl}{<->ssub * yly/b/si}{}
+\DeclareFontShape{T1}{yly}{b}{sl}{<->ssub * yly/b/it}{}
\DeclareFontShape{T1}{yly}{bx}{sl}{<->ssub * yly/b/sl}{}
+\DeclareFontShape{T1}{yly}{b}{scsl}{<->ssub * yly/b/sl}{}
+\DeclareFontShape{T1}{yly}{bx}{scsl}{<->ssub * yly/b/scsl}{}
+\DeclareFontShape{T1}{yly}{b}{scit}{<->ssub * yly/b/scsl}{}
+\DeclareFontShape{T1}{yly}{bx}{scit}{<->ssub * yly/b/scit}{}
+\DeclareFontShape{T1}{yly}{b}{si}{<->ssub * yly/b/scit}{}
+\DeclareFontShape{T1}{yly}{bx}{si}{<->ssub * yly/b/si}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libris/t1ylyw.fd b/Master/texmf-dist/tex/latex/libris/t1ylyw.fd
index 87b4a276f18..247d8136ad7 100644
--- a/Master/texmf-dist/tex/latex/libris/t1ylyw.fd
+++ b/Master/texmf-dist/tex/latex/libris/t1ylyw.fd
@@ -5,36 +5,49 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1ylyw.fd}
- [2010/06/27 Fontinst v1.933 font definitions for T1/ylyw.]
+ [2024/09/27 Fontinst v1.933 font definitions for T1/ylyw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yly@scale\endcsname\relax
+ \let\yly@@scale\@empty
+\else
+ \edef\yly@@scale{s*[\csname yly@scale\endcsname]}%
+\fi
\DeclareFontFamily{T1}{ylyw}{}
\DeclareFontShape{T1}{ylyw}{m}{n}{
- <-> ylyrw8t
+ <-> \yly@@scale ylyrw8t
}{}
\DeclareFontShape{T1}{ylyw}{m}{it}{
- <-> ylyriw8t
+ <-> \yly@@scale ylyriw8t
}{}
\DeclareFontShape{T1}{ylyw}{b}{n}{
- <-> ylybw8t
+ <-> \yly@@scale ylybw8t
}{}
\DeclareFontShape{T1}{ylyw}{b}{it}{
- <-> ylybiw8t
+ <-> \yly@@scale ylybiw8t
}{}
\DeclareFontShape{T1}{ylyw}{m}{sc}{<->ssub * ylyw/m/n}{}
-\DeclareFontShape{T1}{ylyw}{m}{si}{<->ssub * ylyw/m/it}{}
-\DeclareFontShape{T1}{ylyw}{m}{sl}{<->ssub * ylyw/m/si}{}
+\DeclareFontShape{T1}{ylyw}{m}{sl}{<->ssub * ylyw/m/it}{}
+\DeclareFontShape{T1}{ylyw}{m}{scsl}{<->ssub * ylyw/m/sl}{}
+\DeclareFontShape{T1}{ylyw}{m}{scit}{<->ssub * ylyw/m/scsl}{}
+\DeclareFontShape{T1}{ylyw}{m}{si}{<->ssub * ylyw/m/scit}{}
\DeclareFontShape{T1}{ylyw}{bx}{n}{<->ssub * ylyw/b/n}{}
\DeclareFontShape{T1}{ylyw}{b}{sc}{<->ssub * ylyw/b/n}{}
\DeclareFontShape{T1}{ylyw}{bx}{sc}{<->ssub * ylyw/b/sc}{}
\DeclareFontShape{T1}{ylyw}{bx}{it}{<->ssub * ylyw/b/it}{}
-\DeclareFontShape{T1}{ylyw}{b}{si}{<->ssub * ylyw/b/it}{}
-\DeclareFontShape{T1}{ylyw}{bx}{si}{<->ssub * ylyw/b/si}{}
-\DeclareFontShape{T1}{ylyw}{b}{sl}{<->ssub * ylyw/b/si}{}
+\DeclareFontShape{T1}{ylyw}{b}{sl}{<->ssub * ylyw/b/it}{}
\DeclareFontShape{T1}{ylyw}{bx}{sl}{<->ssub * ylyw/b/sl}{}
+\DeclareFontShape{T1}{ylyw}{b}{scsl}{<->ssub * ylyw/b/sl}{}
+\DeclareFontShape{T1}{ylyw}{bx}{scsl}{<->ssub * ylyw/b/scsl}{}
+\DeclareFontShape{T1}{ylyw}{b}{scit}{<->ssub * ylyw/b/scsl}{}
+\DeclareFontShape{T1}{ylyw}{bx}{scit}{<->ssub * ylyw/b/scit}{}
+\DeclareFontShape{T1}{ylyw}{b}{si}{<->ssub * ylyw/b/scit}{}
+\DeclareFontShape{T1}{ylyw}{bx}{si}{<->ssub * ylyw/b/si}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libris/ts1yly.fd b/Master/texmf-dist/tex/latex/libris/ts1yly.fd
index 33c01ff57fc..e43a62bec62 100644
--- a/Master/texmf-dist/tex/latex/libris/ts1yly.fd
+++ b/Master/texmf-dist/tex/latex/libris/ts1yly.fd
@@ -5,36 +5,49 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1yly.fd}
- [2010/06/27 Fontinst v1.933 font definitions for TS1/yly.]
+ [2024/09/27 Fontinst v1.933 font definitions for TS1/yly.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yly@scale\endcsname\relax
+ \let\yly@@scale\@empty
+\else
+ \edef\yly@@scale{s*[\csname yly@scale\endcsname]}%
+\fi
\DeclareFontFamily{TS1}{yly}{}
\DeclareFontShape{TS1}{yly}{m}{n}{
- <-> ylyr8c
+ <-> \yly@@scale ylyr8c
}{}
\DeclareFontShape{TS1}{yly}{m}{it}{
- <-> ylyri8c
+ <-> \yly@@scale ylyri8c
}{}
\DeclareFontShape{TS1}{yly}{b}{n}{
- <-> ylyb8c
+ <-> \yly@@scale ylyb8c
}{}
\DeclareFontShape{TS1}{yly}{b}{it}{
- <-> ylybi8c
+ <-> \yly@@scale ylybi8c
}{}
\DeclareFontShape{TS1}{yly}{m}{sc}{<->ssub * yly/m/n}{}
-\DeclareFontShape{TS1}{yly}{m}{si}{<->ssub * yly/m/it}{}
-\DeclareFontShape{TS1}{yly}{m}{sl}{<->ssub * yly/m/si}{}
+\DeclareFontShape{TS1}{yly}{m}{sl}{<->ssub * yly/m/it}{}
+\DeclareFontShape{TS1}{yly}{m}{scsl}{<->ssub * yly/m/sl}{}
+\DeclareFontShape{TS1}{yly}{m}{scit}{<->ssub * yly/m/scsl}{}
+\DeclareFontShape{TS1}{yly}{m}{si}{<->ssub * yly/m/scit}{}
\DeclareFontShape{TS1}{yly}{bx}{n}{<->ssub * yly/b/n}{}
\DeclareFontShape{TS1}{yly}{b}{sc}{<->ssub * yly/b/n}{}
\DeclareFontShape{TS1}{yly}{bx}{sc}{<->ssub * yly/b/sc}{}
\DeclareFontShape{TS1}{yly}{bx}{it}{<->ssub * yly/b/it}{}
-\DeclareFontShape{TS1}{yly}{b}{si}{<->ssub * yly/b/it}{}
-\DeclareFontShape{TS1}{yly}{bx}{si}{<->ssub * yly/b/si}{}
-\DeclareFontShape{TS1}{yly}{b}{sl}{<->ssub * yly/b/si}{}
+\DeclareFontShape{TS1}{yly}{b}{sl}{<->ssub * yly/b/it}{}
\DeclareFontShape{TS1}{yly}{bx}{sl}{<->ssub * yly/b/sl}{}
+\DeclareFontShape{TS1}{yly}{b}{scsl}{<->ssub * yly/b/sl}{}
+\DeclareFontShape{TS1}{yly}{bx}{scsl}{<->ssub * yly/b/scsl}{}
+\DeclareFontShape{TS1}{yly}{b}{scit}{<->ssub * yly/b/scsl}{}
+\DeclareFontShape{TS1}{yly}{bx}{scit}{<->ssub * yly/b/scit}{}
+\DeclareFontShape{TS1}{yly}{b}{si}{<->ssub * yly/b/scit}{}
+\DeclareFontShape{TS1}{yly}{bx}{si}{<->ssub * yly/b/si}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/libris/ts1ylyw.fd b/Master/texmf-dist/tex/latex/libris/ts1ylyw.fd
index e1f188edabe..3611eafc32e 100644
--- a/Master/texmf-dist/tex/latex/libris/ts1ylyw.fd
+++ b/Master/texmf-dist/tex/latex/libris/ts1ylyw.fd
@@ -5,36 +5,49 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1ylyw.fd}
- [2010/06/27 Fontinst v1.933 font definitions for TS1/ylyw.]
+ [2024/09/27 Fontinst v1.933 font definitions for TS1/ylyw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yly@scale\endcsname\relax
+ \let\yly@@scale\@empty
+\else
+ \edef\yly@@scale{s*[\csname yly@scale\endcsname]}%
+\fi
\DeclareFontFamily{TS1}{ylyw}{}
\DeclareFontShape{TS1}{ylyw}{m}{n}{
- <-> ylyr8c
+ <-> \yly@@scale ylyr8c
}{}
\DeclareFontShape{TS1}{ylyw}{m}{it}{
- <-> ylyri8c
+ <-> \yly@@scale ylyri8c
}{}
\DeclareFontShape{TS1}{ylyw}{b}{n}{
- <-> ylyb8c
+ <-> \yly@@scale ylyb8c
}{}
\DeclareFontShape{TS1}{ylyw}{b}{it}{
- <-> ylybi8c
+ <-> \yly@@scale ylybi8c
}{}
\DeclareFontShape{TS1}{ylyw}{m}{sc}{<->ssub * ylyw/m/n}{}
-\DeclareFontShape{TS1}{ylyw}{m}{si}{<->ssub * ylyw/m/it}{}
-\DeclareFontShape{TS1}{ylyw}{m}{sl}{<->ssub * ylyw/m/si}{}
+\DeclareFontShape{TS1}{ylyw}{m}{sl}{<->ssub * ylyw/m/it}{}
+\DeclareFontShape{TS1}{ylyw}{m}{scsl}{<->ssub * ylyw/m/sl}{}
+\DeclareFontShape{TS1}{ylyw}{m}{scit}{<->ssub * ylyw/m/scsl}{}
+\DeclareFontShape{TS1}{ylyw}{m}{si}{<->ssub * ylyw/m/scit}{}
\DeclareFontShape{TS1}{ylyw}{bx}{n}{<->ssub * ylyw/b/n}{}
\DeclareFontShape{TS1}{ylyw}{b}{sc}{<->ssub * ylyw/b/n}{}
\DeclareFontShape{TS1}{ylyw}{bx}{sc}{<->ssub * ylyw/b/sc}{}
\DeclareFontShape{TS1}{ylyw}{bx}{it}{<->ssub * ylyw/b/it}{}
-\DeclareFontShape{TS1}{ylyw}{b}{si}{<->ssub * ylyw/b/it}{}
-\DeclareFontShape{TS1}{ylyw}{bx}{si}{<->ssub * ylyw/b/si}{}
-\DeclareFontShape{TS1}{ylyw}{b}{sl}{<->ssub * ylyw/b/si}{}
+\DeclareFontShape{TS1}{ylyw}{b}{sl}{<->ssub * ylyw/b/it}{}
\DeclareFontShape{TS1}{ylyw}{bx}{sl}{<->ssub * ylyw/b/sl}{}
+\DeclareFontShape{TS1}{ylyw}{b}{scsl}{<->ssub * ylyw/b/sl}{}
+\DeclareFontShape{TS1}{ylyw}{bx}{scsl}{<->ssub * ylyw/b/scsl}{}
+\DeclareFontShape{TS1}{ylyw}{b}{scit}{<->ssub * ylyw/b/scsl}{}
+\DeclareFontShape{TS1}{ylyw}{bx}{scit}{<->ssub * ylyw/b/scit}{}
+\DeclareFontShape{TS1}{ylyw}{b}{si}{<->ssub * ylyw/b/scit}{}
+\DeclareFontShape{TS1}{ylyw}{bx}{si}{<->ssub * ylyw/b/si}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/lie-hasse/lie-hasse.sty b/Master/texmf-dist/tex/latex/lie-hasse/lie-hasse.sty
index 6d727c841cd..7e74fa73ca7 100644
--- a/Master/texmf-dist/tex/latex/lie-hasse/lie-hasse.sty
+++ b/Master/texmf-dist/tex/latex/lie-hasse/lie-hasse.sty
@@ -1,5 +1,5 @@
% The Lie Hasse package.
-% Version 1.01
+% Version 1.02
%
%
% This package draws Hasse diagrams of root system posets of simple
@@ -11,7 +11,7 @@
% Released under the LaTeX Project Public License v1.3c or later, see
% http://www.latex-project.org/lppl.txt
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
-\ProvidesPackage{lie-hasse}[2024/07/09 Lie Hasse]
+\ProvidesPackage{lie-hasse}[2024/12/04 Lie Hasse]
\RequirePackage[rgb]{xcolor}
\RequirePackage{dynkin-diagrams}
\RequirePackage[outline]{contour}
@@ -263,14 +263,33 @@
}%
\fi%
}%
+%\NewDocumentCommand\hasseAttachGtwoBackwards{}%
+%{%
+% \dynkin[vertical shift=0,%
+% edge length=\lie@hasse@edge@length,%
+% reverse arrows]{G}{\dynkin@roots}%
+%}%
+%\NewDocumentCommand\hasseAttachGtwoForwards{}%
+%{%
+% \dynkin[vertical shift=0,%
+% edge length=\lie@hasse@edge@length]{G}{\dynkin@roots}%
+%}%
\NewDocumentCommand\hasseAttachGtwo{}%
{%
\dynkin[vertical shift=0,%
- edge length=\lie@hasse@edge@length,%
-% label,%
-% backwards,%
-% x shift in edge lengths=-1
-]{G}{\dynkin@roots}%
+ edge length=\lie@hasse@edge@length]{G}{\dynkin@roots}%
+%\IfStrEqCase{\dynkin@ordering}{%
+% {Adams}{\hasseAttachGtwoForwards}%
+% {Bourbaki}{\hasseAttachGtwoForwards}%
+% {Carter}{\hasseAttachGtwoBackwards}%
+% {Dynkin}{\hasseAttachGtwoBackwards}%
+% {Kac}{\hasseAttachGtwoBackwards}%
+%}%
+%[\ClassError%
+% {Lie Hasse}%
+% {Root ordering \dynkin@ordering{} %
+% not Adams, Bourbaki, Carter, Dynkin or Kac when attaching G2 Dynkin diagram}%
+% {}]%
}%
\newcount\lie@hasse@E@shift%
\NewDocumentCommand\attachDynkin{}%
@@ -372,6 +391,7 @@
%%%
%%% Package internals:
%%%
+\tikzset{/Dynkin diagram/ordering=Carter}
\pgfdeclarelayer{Dynkin middle}
\pgfdeclarelayer{Dynkin above}
\pgfsetlayers{background,Dynkin behind,Dynkin middle,Dynkin above,main}
@@ -1833,9 +1853,29 @@
#2 1%
\fi\fi\fi%
}%
+\NewDocumentCommand\hasse@G@AB{}%
+{%
+\hasse@X{{0,2},{1},{1},{1},{1}}{{1+2<1,2+1>1},{1+1<1},{1+1<1},{1+2<1}}%AB
+}%
+\NewDocumentCommand\hasse@G@CDK{}%
+{%
+\hasse@X{{0,2},{1},{1},{1},{1}}{{1+2<1,2+1>1},{1+2<1},{1+2<1},{1+1<1}}%CDK
+}%
\NewDocumentCommand\hasse@G{}%
{%
-\hasse@X{{0,2},{1},{1},{1},{1}}{{1+2<1,2+1>1},{1+1<1},{1+1<1},{1+2<1}}%
+\IfStrEqCase{\dynkin@ordering}%
+{%
+ {Adams}{\hasse@G@AB}%
+ {Bourbaki}{\hasse@G@AB}%
+ {Carter}{\hasse@G@CDK}%
+ {Dynkin}{\hasse@G@CDK}%
+ {Kac}{\hasse@G@CDK}%
+}%
+[\ClassError%
+ {Lie Hasse}%
+ {Root ordering ``\dynkin@ordering'' %
+ not Adams, Bourbaki, Carter, Dynkin or Kac when attaching G2 Dynkin diagram}%
+ {}]%
}%
\ExplSyntaxOn
\DeclareExpandableDocumentCommand{\lie@hasse@repeat@string}{O{}mm}
@@ -2479,7 +2519,7 @@
10;1=1.3.4.2,%
11;1=2.3.4.2}%
}%
-\NewDocumentCommand\hasse@set@G@root@sums{}%
+\NewDocumentCommand\hasse@set@G@root@sums@AB{}%
{%
\forcsvlist{\do@hasse@list}{%
1;1=1.0,%
@@ -2489,6 +2529,32 @@
4;1=3.1,%
5;1=3.2}%
}%
+\NewDocumentCommand\hasse@set@G@root@sums@CDK{}%
+{%
+\forcsvlist{\do@hasse@list}{%
+1;1=1.0,%
+1;2=0.1,%
+2;1=1.1,%
+3;1=1.2,%
+4;1=1.3,%
+5;1=2.3}%
+}%
+\NewDocumentCommand\hasse@set@G@root@sums{}%
+{%
+\IfStrEqCase{\dynkin@ordering}%
+{%
+ {Adams}{\hasse@set@G@root@sums@AB}%
+ {Bourbaki}{\hasse@set@G@root@sums@AB}%
+ {Carter}{\hasse@set@G@root@sums@CDK}%
+ {Dynkin}{\hasse@set@G@root@sums@CDK}%
+ {Kac}{\hasse@set@G@root@sums@CDK}%
+}%
+[\ClassError%
+ {Lie Hasse}%
+ {Root ordering ``\dynkin@ordering'' %
+ not Adams, Bourbaki, Carter, Dynkin or Kac when setting root sums for G2 Dynkin diagram}%
+ {}]%
+}%
\NewDocumentCommand\forAllPositiveRoots{m}%
{%
\rootSystemHeight{\lie@hasse@height}%
diff --git a/Master/texmf-dist/tex/latex/liederbuch/liederbuch-babel.sty b/Master/texmf-dist/tex/latex/liederbuch/liederbuch-babel.sty
new file mode 100644
index 00000000000..88aac3cc13f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/liederbuch/liederbuch-babel.sty
@@ -0,0 +1,783 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Made by Gabriel Ruprecht %
+% %
+% This work is published under the %
+% LaTeX project public license 1.3 %
+% %
+% Package version 1.1.0 %
+% 2025-01-20 %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%acadian%
+\addto\captionsacadian{\def\listofsongsname{Chansonier}}%
+\addto\captionsacadian{\def\LBsongComposer{Compositeur}}%
+\addto\captionsacadian{\def\LBsongLyricist{Parolier}}%
+\addto\captionsacadian{\def\LBsongEditor{Éditor}}%
+\addto\captionsacadian{\def\LBsongYear{An}}%
+\addto\captionsacadian{\def\LBsongCopyright{Drets d'autor}}%
+\addto\captionsacadian{\def\LBsongEditorialOffice{Redaksyon}}%
+\addto\captionsacadian{\def\LBsongEditon{Edision}}%
+\addto\captionsacadian{\def\LBsongPrint{Imprenta}}%
+%
+%afrikaans%
+\addto\captionsafrikaans{\def\listofsongsname{Liedjieboek}}%
+\addto\captionsafrikaans{\def\LBsongComposer{Komponis}}%
+\addto\captionsafrikaans{\def\LBsongLyricist{Lirikus}}%
+\addto\captionsafrikaans{\def\LBsongEditor{Redakteur}}%
+\addto\captionsafrikaans{\def\LBsongYear{Jaar}}%
+\addto\captionsafrikaans{\def\LBsongCopyright{Kopiereg}}%
+\addto\captionsafrikaans{\def\LBsongEditorialOffice{Redaksie}}%
+\addto\captionsafrikaans{\def\LBsongEditon{Uitgawe}}%
+\addto\captionsafrikaans{\def\LBsongPrint{Druk}}%
+%
+%albanian%
+\addto\captionsalbanian{\def\listofsongsname{Regjistër këngësh}}%
+\addto\captionsalbanian{\def\LBsongComposer{Kompozitor}}%
+\addto\captionsalbanian{\def\LBsongLyricist{Tekstshkrues}}%
+\addto\captionsalbanian{\def\LBsongEditor{Redaktor}}%
+\addto\captionsalbanian{\def\LBsongYear{Vit}}%
+\addto\captionsalbanian{\def\LBsongCopyright{Të drejtat e autorit}}%
+\addto\captionsalbanian{\def\LBsongEditorialOffice{Redaksia}}%
+\addto\captionsalbanian{\def\LBsongEditon{Botim}}%
+\addto\captionsalbanian{\def\LBsongPrint{Shtypje}}%
+%
+%american%
+\addto\captionsamerican{\def\listofsongsname{Song list}}%
+\addto\captionsamerican{\def\LBsongComposer{Composer}}%
+\addto\captionsamerican{\def\LBsongLyricist{Lyricist}}%
+\addto\captionsamerican{\def\LBsongEditor{Editor}}%
+\addto\captionsamerican{\def\LBsongYear{Year}}%
+\addto\captionsamerican{\def\LBsongCopyright{Copyright}}%
+\addto\captionsamerican{\def\LBsongEditorialOffice{Editorial office}}%
+\addto\captionsamerican{\def\LBsongEditon{Edition}}%
+\addto\captionsamerican{\def\LBsongPrint{Print}}%
+%
+%australian%
+\addto\captionsaustralian{\def\listofsongsname{Song list}}%
+\addto\captionsaustralian{\def\LBsongComposer{Composer}}%
+\addto\captionsaustralian{\def\LBsongLyricist{Lyricist}}%
+\addto\captionsaustralian{\def\LBsongEditor{Editor}}%
+\addto\captionsaustralian{\def\LBsongYear{Year}}%
+\addto\captionsaustralian{\def\LBsongCopyright{Copyright}}%
+\addto\captionsaustralian{\def\LBsongEditorialOffice{Editorial office}}%
+\addto\captionsaustralian{\def\LBsongEditon{Edition}}%
+\addto\captionsaustralian{\def\LBsongPrint{Print}}%
+%
+%austrian%
+\addto\captionsaustrian{\def\listofsongsname{Liederverzeichnis}}%
+\addto\captionsaustrian{\def\LBsongComposer{Komponist}}%
+\addto\captionsaustrian{\def\LBsongLyricist{Textdichter}}%
+\addto\captionsaustrian{\def\LBsongEditor{Herausgeber}}%
+\addto\captionsaustrian{\def\LBsongYear{Jahr}}%
+\addto\captionsaustrian{\def\LBsongCopyright{Urheberrecht}}%
+\addto\captionsaustrian{\def\LBsongEditorialOffice{Redaktion}}%
+\addto\captionsaustrian{\def\LBsongEditon{Auflage}}%
+\addto\captionsaustrian{\def\LBsongPrint{Druck}}%
+%
+%bahasa%
+\addto\captionsbahasa{\def\listofsongsname{Daftar lagu}}%
+\addto\captionsbahasa{\def\LBsongComposer{Komposer}}%
+\addto\captionsbahasa{\def\LBsongLyricist{Penulis lirik}}%
+\addto\captionsbahasa{\def\LBsongEditor{Editor}}%
+\addto\captionsbahasa{\def\LBsongYear{Tahun}}%
+\addto\captionsbahasa{\def\LBsongCopyright{Hak cipta}}%
+\addto\captionsbahasa{\def\LBsongEditorialOffice{Pejabat editorial}}%
+\addto\captionsbahasa{\def\LBsongEditon{Edisi}}%
+\addto\captionsbahasa{\def\LBsongPrint{Cetak}}%
+%
+%bahasai%
+\addto\captionsbahasai{\def\listofsongsname{Daftar lagu}}%
+\addto\captionsbahasai{\def\LBsongComposer{Komposer}}%
+\addto\captionsbahasai{\def\LBsongLyricist{Penulis lirik}}%
+\addto\captionsbahasai{\def\LBsongEditor{Editor}}%
+\addto\captionsbahasai{\def\LBsongYear{Tahun}}%
+\addto\captionsbahasai{\def\LBsongCopyright{Hak cipta}}%
+\addto\captionsbahasai{\def\LBsongEditorialOffice{Pejabat editorial}}%
+\addto\captionsbahasai{\def\LBsongEditon{Edisi}}%
+\addto\captionsbahasai{\def\LBsongPrint{Cetak}}%
+%
+%bahasam%
+\addto\captionsbahasam{\def\listofsongsname{Senarai lagu}}%
+\addto\captionsbahasam{\def\LBsongComposer{Komposer}}%
+\addto\captionsbahasam{\def\LBsongLyricist{Penulis lirik}}%
+\addto\captionsbahasam{\def\LBsongEditor{Editor}}%
+\addto\captionsbahasam{\def\LBsongYear{Tahun}}%
+\addto\captionsbahasam{\def\LBsongCopyright{Hak cipta}}%
+\addto\captionsbahasam{\def\LBsongEditorialOffice{Pejabat editorial}}%
+\addto\captionsbahasam{\def\LBsongEditon{Edisi}}%
+\addto\captionsbahasam{\def\LBsongPrint{Cetak}}%
+%
+%basque%
+\addto\captionsbasque{\def\listofsongsname{Abesti zerrenda}}%
+\addto\captionsbasque{\def\LBsongComposer{Konposatzailea}}%
+\addto\captionsbasque{\def\LBsongLyricist{Letra idazlea}}%
+\addto\captionsbasque{\def\LBsongEditor{Editorea}}%
+\addto\captionsbasque{\def\LBsongYear{Urtea}}%
+\addto\captionsbasque{\def\LBsongCopyright{Egile eskubideak}}%
+\addto\captionsbasque{\def\LBsongEditorialOffice{Editore bulegoa}}%
+\addto\captionsbasque{\def\LBsongEditon{Argitalpen}}%
+\addto\captionsbasque{\def\LBsongPrint{Inpresio}}%
+%
+%brazil%
+\addto\captionsbrazil{\def\listofsongsname{Índice de canções}}%
+\addto\captionsbrazil{\def\LBsongComposer{Compositor}}%
+\addto\captionsbrazil{\def\LBsongLyricist{Letrista}}%
+\addto\captionsbrazil{\def\LBsongEditor{Editor}}%
+\addto\captionsbrazil{\def\LBsongYear{Ano}}%
+\addto\captionsbrazil{\def\LBsongCopyright{Direitos autorais}}%
+\addto\captionsbrazil{\def\LBsongEditorialOffice{Editoria}}%
+\addto\captionsbrazil{\def\LBsongEditon{Edição}}%
+\addto\captionsbrazil{\def\LBsongPrint{Impressão}}%
+%
+%brazilian%
+\addto\captionsbrazilian{\def\listofsongsname{Índice de canções}}%
+\addto\captionsbrazilian{\def\LBsongComposer{Compositor}}%
+\addto\captionsbrazilian{\def\LBsongLyricist{Letrista}}%
+\addto\captionsbrazilian{\def\LBsongEditor{Editor}}%
+\addto\captionsbrazilian{\def\LBsongYear{Ano}}%
+\addto\captionsbrazilian{\def\LBsongCopyright{Direitos autorais}}%
+\addto\captionsbrazilian{\def\LBsongEditorialOffice{Editoria}}%
+\addto\captionsbrazilian{\def\LBsongEditon{Edição}}%
+\addto\captionsbrazilian{\def\LBsongPrint{Impressão}}%
+%
+%breton%
+\addto\captionsbreton{\def\listofsongsname{Roll songs}}%
+\addto\captionsbreton{\def\LBsongComposer{Kompozitour}}%
+\addto\captionsbreton{\def\LBsongLyricist{Skrivadur baladenn}}%
+\addto\captionsbreton{\def\LBsongEditor{Merour}}%
+\addto\captionsbreton{\def\LBsongYear{Bloaz}}%
+\addto\captionsbreton{\def\LBsongCopyright{Hiziv aotrouiezh}}%
+\addto\captionsbreton{\def\LBsongEditorialOffice{Burev lezenn}}%
+\addto\captionsbreton{\def\LBsongEditon{Vugeladenn}}%
+\addto\captionsbreton{\def\LBsongPrint{Presañ}}%
+%
+%british%
+\addto\captionsbritish{\def\listofsongsname{Song list}}%
+\addto\captionsbritish{\def\LBsongComposer{Composer}}%
+\addto\captionsbritish{\def\LBsongLyricist{Lyricist}}%
+\addto\captionsbritish{\def\LBsongEditor{Editor}}%
+\addto\captionsbritish{\def\LBsongYear{Year}}%
+\addto\captionsbritish{\def\LBsongCopyright{Copyright}}%
+\addto\captionsbritish{\def\LBsongEditorialOffice{Editorial office}}%
+\addto\captionsbritish{\def\LBsongEditon{Edition}}%
+\addto\captionsbritish{\def\LBsongPrint{Print}}%
+%
+%bulgarian%
+\addto\captionsbulgarian{\def\listofsongsname{Списък на песни}}%
+\addto\captionsbulgarian{\def\LBsongComposer{Композитор}}%
+\addto\captionsbulgarian{\def\LBsongLyricist{Текстописец}}%
+\addto\captionsbulgarian{\def\LBsongEditor{Редактор}}%
+\addto\captionsbulgarian{\def\LBsongYear{Година}}%
+\addto\captionsbulgarian{\def\LBsongCopyright{Aвторски права}}%
+\addto\captionsbulgarian{\def\LBsongEditorialOffice{Pедакция}}%
+\addto\captionsbulgarian{\def\LBsongEditon{Издание}}%
+\addto\captionsbulgarian{\def\LBsongPrint{Печат}}%
+%
+%canadian%
+\addto\captionscanadian{\def\listofsongsname{Chansonniers}}%
+\addto\captionscanadian{\def\LBsongComposer{Composer}}%
+\addto\captionscanadian{\def\LBsongLyricist{Lyricist}}%
+\addto\captionscanadian{\def\LBsongEditor{Editor}}%
+\addto\captionscanadian{\def\LBsongYear{Year}}%
+\addto\captionscanadian{\def\LBsongCopyright{Copyright}}%
+\addto\captionscanadian{\def\LBsongEditorialOffice{Editorial office}}%
+\addto\captionscanadian{\def\LBsongEditon{Edition}}%
+\addto\captionscanadian{\def\LBsongPrint{Print}}%
+%
+%canadien%
+\addto\captionscanadien{\def\listofsongsname{Liste de chansons}}%
+\addto\captionscanadien{\def\LBsongComposer{Compositeur}}%
+\addto\captionscanadien{\def\LBsongLyricist{Parolier}}%
+\addto\captionscanadien{\def\LBsongEditor{Éditeur}}%
+\addto\captionscanadien{\def\LBsongYear{Année}}%
+\addto\captionscanadien{\def\LBsongCopyright{Droit d'auteur}}%
+\addto\captionscanadien{\def\LBsongEditorialOffice{Rédaction}}%
+\addto\captionscanadien{\def\LBsongEditon{Édition}}%
+\addto\captionscanadien{\def\LBsongPrint{Impression}}%
+%
+%catalan%
+\addto\captionscatalan{\def\listofsongsname{Llistat de cançons}}%
+\addto\captionscatalan{\def\LBsongComposer{Compositor}}%
+\addto\captionscatalan{\def\LBsongLyricist{Letrista}}%
+\addto\captionscatalan{\def\LBsongEditor{Editor}}%
+\addto\captionscatalan{\def\LBsongYear{Any}}%
+\addto\captionscatalan{\def\LBsongCopyright{Drets d'autor}}%
+\addto\captionscatalan{\def\LBsongEditorialOffice{Redacció}}%
+\addto\captionscatalan{\def\LBsongEditon{Edició}}%
+\addto\captionscatalan{\def\LBsongPrint{Impressió}}%
+%
+%croatian%
+\addto\captionscroatian{\def\listofsongsname{Popis pjesama}}%
+\addto\captionscroatian{\def\LBsongComposer{Kompozitor}}%
+\addto\captionscroatian{\def\LBsongLyricist{Tekstopisac}}%
+\addto\captionscroatian{\def\LBsongEditor{Urednik}}%
+\addto\captionscroatian{\def\LBsongYear{Godina}}%
+\addto\captionscroatian{\def\LBsongCopyright{Autorska prava}}%
+\addto\captionscroatian{\def\LBsongEditorialOffice{Uredništvo}}%
+\addto\captionscroatian{\def\LBsongEditon{Izdanje}}%
+\addto\captionscroatian{\def\LBsongPrint{Tisak}}%
+%
+%czech%
+\addto\captionsczech{\def\listofsongsname{Seznam písní}}%
+\addto\captionsczech{\def\LBsongComposer{Skladatel}}%
+\addto\captionsczech{\def\LBsongLyricist{Textař}}%
+\addto\captionsczech{\def\LBsongEditor{Editor}}%
+\addto\captionsczech{\def\LBsongYear{Rok}}%
+\addto\captionsczech{\def\LBsongCopyright{Autorská práva}}%
+\addto\captionsczech{\def\LBsongEditorialOffice{Redakce}}%
+\addto\captionsczech{\def\LBsongEditon{Vydání}}%
+\addto\captionsczech{\def\LBsongPrint{Tisk}}%
+%
+%danish%
+\addto\captionsdanish{\def\listofsongsname{Sangliste}}%
+\addto\captionsdanish{\def\LBsongComposer{Komponist}}%
+\addto\captionsdanish{\def\LBsongLyricist{Tekstforfatter}}%
+\addto\captionsdanish{\def\LBsongEditor{Redaktør}}%
+\addto\captionsdanish{\def\LBsongYear{År}}%
+\addto\captionsdanish{\def\LBsongCopyright{Ophavsret}}%
+\addto\captionsdanish{\def\LBsongEditorialOffice{Redaktion}}%
+\addto\captionsdanish{\def\LBsongEditon{Udgave}}%
+\addto\captionsdanish{\def\LBsongPrint{Tryk}}%
+%
+%dutch%
+\addto\captionsdutch{\def\listofsongsname{Liedjeslijst}}%
+\addto\captionsdutch{\def\LBsongComposer{Componist}}%
+\addto\captionsdutch{\def\LBsongLyricist{Tekstschrijver}}%
+\addto\captionsdutch{\def\LBsongEditor{Redacteur}}%
+\addto\captionsdutch{\def\LBsongYear{Jaar}}%
+\addto\captionsdutch{\def\LBsongCopyright{Auteursrecht}}%
+\addto\captionsdutch{\def\LBsongEditorialOffice{Redactie}}%
+\addto\captionsdutch{\def\LBsongEditon{Editie}}%
+\addto\captionsdutch{\def\LBsongPrint{Druk}}%
+%
+%english%
+\addto\captionsenglish{\def\listofsongsname{Song list}}%
+\addto\captionsenglish{\def\LBsongComposer{Composer}}%
+\addto\captionsenglish{\def\LBsongLyricist{Lyricist}}%
+\addto\captionsenglish{\def\LBsongEditor{Editor}}%
+\addto\captionsenglish{\def\LBsongYear{Year}}%
+\addto\captionsenglish{\def\LBsongCopyright{Copyright}}%
+\addto\captionsenglish{\def\LBsongEditorialOffice{Editorial office}}%
+\addto\captionsenglish{\def\LBsongEditon{Edition}}%
+\addto\captionsenglish{\def\LBsongPrint{Print}}%
+%
+%esperanto%
+\addto\captionsesperanto{\def\listofsongsname{Kanto registro}}%
+\addto\captionsesperanto{\def\LBsongComposer{Kompozitoro}}%
+\addto\captionsesperanto{\def\LBsongLyricist{Tekstverkisto}}%
+\addto\captionsesperanto{\def\LBsongEditor{Redaktoro}}%
+\addto\captionsesperanto{\def\LBsongYear{Jaro}}%
+\addto\captionsesperanto{\def\LBsongCopyright{Kopirajto}}%
+\addto\captionsesperanto{\def\LBsongEditorialOffice{Redaktejo}}%
+\addto\captionsesperanto{\def\LBsongEditon{Eldono}}%
+\addto\captionsesperanto{\def\LBsongPrint{Presado}}%
+%
+%estonian%
+\addto\captionsestonian{\def\listofsongsname{Laulude loend}}%
+\addto\captionsestonian{\def\LBsongComposer{Koomposiitor}}%
+\addto\captionsestonian{\def\LBsongLyricist{Laulusõnade autor}}%
+\addto\captionsestonian{\def\LBsongEditor{Toimetaja}}%
+\addto\captionsestonian{\def\LBsongYear{Aasta}}%
+\addto\captionsestonian{\def\LBsongCopyright{Autoriõigus}}%
+\addto\captionsestonian{\def\LBsongEditorialOffice{Toimetus}}%
+\addto\captionsestonian{\def\LBsongEditon{Väljaanne}}%
+\addto\captionsestonian{\def\LBsongPrint{Trükk}}%
+%
+%finnish%
+\addto\captionsfinnish{\def\listofsongsname{Laululuettelo}}%
+\addto\captionsfinnish{\def\LBsongComposer{Kocomposer}}%
+\addto\captionsfinnish{\def\LBsongLyricist{Sanoittaja}}%
+\addto\captionsfinnish{\def\LBsongEditor{Toimittaja}}%
+\addto\captionsfinnish{\def\LBsongYear{Vuosi}}%
+\addto\captionsfinnish{\def\LBsongCopyright{Tekijänoikeus}}%
+\addto\captionsfinnish{\def\LBsongEditorialOffice{Toimitus}}%
+\addto\captionsfinnish{\def\LBsongEditon{Painos}}%
+\addto\captionsfinnish{\def\LBsongPrint{Painatus}}%
+%
+%francais%
+\addto\captionsfrancais{\def\listofsongsname{Répertoire de chansons}}%
+\addto\captionsfrancais{\def\LBsongComposer{Compositeur}}%
+\addto\captionsfrancais{\def\LBsongLyricist{Parolier}}%
+\addto\captionsfrancais{\def\LBsongEditor{Éditeur}}%
+\addto\captionsfrancais{\def\LBsongYear{Année}}%
+\addto\captionsfrancais{\def\LBsongCopyright{Droit d'auteur}}%
+\addto\captionsfrancais{\def\LBsongEditorialOffice{Rédaction}}%
+\addto\captionsfrancais{\def\LBsongEditon{Édition}}%
+\addto\captionsfrancais{\def\LBsongPrint{Impression}}%
+%
+%french%
+\addto\captionsfrench{\def\listofsongsname{Répertoire de chansons}}%
+\addto\captionsfrench{\def\LBsongComposer{Compositeur}}%
+\addto\captionsfrench{\def\LBsongLyricist{Parolier}}%
+\addto\captionsfrench{\def\LBsongEditor{Éditeur}}%
+\addto\captionsfrench{\def\LBsongYear{Année}}%
+\addto\captionsfrench{\def\LBsongCopyright{Droit d'auteur}}%
+\addto\captionsfrench{\def\LBsongEditorialOffice{Rédaction}}%
+\addto\captionsfrench{\def\LBsongEditon{Édition}}%
+\addto\captionsfrench{\def\LBsongPrint{Impression}}%
+%
+%frenchb%
+\addto\captionsfrenchb{\def\listofsongsname{Répertoire de chansons}}%
+\addto\captionsfrenchb{\def\LBsongComposer{Compositeur}}%
+\addto\captionsfrenchb{\def\LBsongLyricist{Parolier}}%
+\addto\captionsfrenchb{\def\LBsongEditor{Éditeur}}%
+\addto\captionsfrenchb{\def\LBsongYear{Année}}%
+\addto\captionsfrenchb{\def\LBsongCopyright{Droit d'auteur}}%
+\addto\captionsfrenchb{\def\LBsongEditorialOffice{Rédaction}}%
+\addto\captionsfrenchb{\def\LBsongEditon{Édition}}%
+\addto\captionsfrenchb{\def\LBsongPrint{Impression}}%
+%
+%galician%
+\addto\captionsgalician{\def\listofsongsname{Lista de cancións}}%
+\addto\captionsgalician{\def\LBsongComposer{Compositor}}%
+\addto\captionsgalician{\def\LBsongLyricist{Letrista}}%
+\addto\captionsgalician{\def\LBsongEditor{Editor}}%
+\addto\captionsgalician{\def\LBsongYear{Ano}}%
+\addto\captionsgalician{\def\LBsongCopyright{Dereitos de autor}}%
+\addto\captionsgalician{\def\LBsongEditorialOffice{Redacción}}%
+\addto\captionsgalician{\def\LBsongEditon{Edición}}%
+\addto\captionsgalician{\def\LBsongPrint{Impressión}}%
+%
+%german%
+\addto\captionsgerman{\def\listofsongsname{Liederverzeichnis}}%
+\addto\captionsgerman{\def\LBsongComposer{Komponist}}%
+\addto\captionsgerman{\def\LBsongLyricist{Texter}}%
+\addto\captionsgerman{\def\LBsongEditor{Herausgeber}}%
+\addto\captionsgerman{\def\LBsongYear{Jahr}}%
+\addto\captionsgerman{\def\LBsongCopyright{Urheberrecht}}%
+\addto\captionsgerman{\def\LBsongEditorialOffice{Redaktion}}%
+\addto\captionsgerman{\def\LBsongEditon{Auflage}}%
+\addto\captionsgerman{\def\LBsongPrint{Druck}}%
+%
+%germanb%
+\addto\captionsgermanb{\def\listofsongsname{Liederverzeichnis}}%
+\addto\captionsgermanb{\def\LBsongComposer{Komponist}}%
+\addto\captionsgermanb{\def\LBsongLyricist{Texter}}%
+\addto\captionsgermanb{\def\LBsongEditor{Herausgeber}}%
+\addto\captionsgermanb{\def\LBsongYear{Jahr}}%
+\addto\captionsgermanb{\def\LBsongCopyright{Urheberrecht}}%
+\addto\captionsgermanb{\def\LBsongEditorialOffice{Redaktion}}%
+\addto\captionsgermanb{\def\LBsongEditon{Auflage}}%
+\addto\captionsgermanb{\def\LBsongPrint{Druck}}%
+%
+%greek%
+\addto\captionsgreek{\def\listofsongsname{Κατάλογος τραγουδιών}}%
+\addto\captionsgreek{\def\LBsongComposer{Συνθέτης}}%
+\addto\captionsgreek{\def\LBsongLyricist{Στιχουργός}}%
+\addto\captionsgreek{\def\LBsongEditor{Eκδότης}}%
+\addto\captionsgreek{\def\LBsongYear{Χρόνος}}%
+\addto\captionsgreek{\def\LBsongCopyright{Πνευματικά δικαιώματα}}%
+\addto\captionsgreek{\def\LBsongEditorialOffice{Συντακτική ομάδα}}%
+\addto\captionsgreek{\def\LBsongEditon{Éκδοση}}%
+\addto\captionsgreek{\def\LBsongPrint{Εκτύπωση}}%
+%
+%hebrew%
+\addto\captionshebrew{\def\listofsongsname{רשימת שירים}}%
+\addto\captionshebrew{\def\LBsongComposer{מלחין}}%
+\addto\captionshebrew{\def\LBsongLyricist{מחבר מילים}}%
+\addto\captionshebrew{\def\LBsongEditor{עורך}}%
+\addto\captionshebrew{\def\LBsongYear{שנה}}%
+\addto\captionshebrew{\def\LBsongCopyright{זכויות יוצרים}}%
+\addto\captionshebrew{\def\LBsongEditorialOffice{מערכת}}%
+\addto\captionshebrew{\def\LBsongEditon{מהדורה}}%
+\addto\captionshebrew{\def\LBsongPrint{הדפסה}}%
+%
+%hungarian%
+\addto\captionshungarian{\def\listofsongsname{Daljegyzék}}%
+\addto\captionshungarian{\def\LBsongComposer{Komponista}}%
+\addto\captionshungarian{\def\LBsongLyricist{Szövegíró}}%
+\addto\captionshungarian{\def\LBsongEditor{Szerkesztő}}%
+\addto\captionshungarian{\def\LBsongYear{Év}}%
+\addto\captionshungarian{\def\LBsongCopyright{Szerzői jog}}%
+\addto\captionshungarian{\def\LBsongEditorialOffice{Szerkesztőség}}%
+\addto\captionshungarian{\def\LBsongEditon{Kiadás}}%
+\addto\captionshungarian{\def\LBsongPrint{Nyomtatás}}%
+%
+%icelandic%
+\addto\captionsicelandic{\def\listofsongsname{Söngskrá}}%
+\addto\captionsicelandic{\def\LBsongComposer{Tonlistarmaður}}%
+\addto\captionsicelandic{\def\LBsongLyricist{Söngtextahöfundur}}%
+\addto\captionsicelandic{\def\LBsongEditor{Útgefandi}}%
+\addto\captionsicelandic{\def\LBsongYear{Ár}}%
+\addto\captionsicelandic{\def\LBsongCopyright{Höfundarréttur}}%
+\addto\captionsicelandic{\def\LBsongEditorialOffice{Ritstjórn}}%
+\addto\captionsicelandic{\def\LBsongEditon{Útgáfa}}%
+\addto\captionsicelandic{\def\LBsongPrint{Prentun}}%
+%
+%indon%
+\addto\captionsindon{\def\listofsongsname{Daftar lagu}}%
+\addto\captionsindon{\def\LBsongComposer{Komposer}}%
+\addto\captionsindon{\def\LBsongLyricist{Penulis lirik}}%
+\addto\captionsindon{\def\LBsongEditor{Editor}}%
+\addto\captionsindon{\def\LBsongYear{Tahun}}%
+\addto\captionsindon{\def\LBsongCopyright{Hak cipta}}%
+\addto\captionsindon{\def\LBsongEditorialOffice{Kantor editorial}}%
+\addto\captionsindon{\def\LBsongEditon{Edisi}}%
+\addto\captionsindon{\def\LBsongPrint{Cetak}}%
+%
+%indonesian%
+\addto\captionsindonesian{\def\listofsongsname{Daftar lagu}}%
+\addto\captionsindonesian{\def\LBsongComposer{Komposer}}%
+\addto\captionsindonesian{\def\LBsongLyricist{Penulis lirik}}%
+\addto\captionsindonesian{\def\LBsongEditor{Editor}}%
+\addto\captionsindonesian{\def\LBsongYear{Tahun}}%
+\addto\captionsindonesian{\def\LBsongCopyright{Hak cipta}}%
+\addto\captionsindonesian{\def\LBsongEditorialOffice{Kantor editorial}}%
+\addto\captionsindonesian{\def\LBsongEditon{Edisi}}%
+\addto\captionsindonesian{\def\LBsongPrint{Cetak}}%
+%
+%interlingua%
+\addto\captionsinterlingua{\def\listofsongsname{Indice de cantos}}%
+\addto\captionsinterlingua{\def\LBsongComposer{Compositor}}%
+\addto\captionsinterlingua{\def\LBsongLyricist{Scribitor de textos}}%
+\addto\captionsinterlingua{\def\LBsongEditor{Editor}}%
+\addto\captionsinterlingua{\def\LBsongYear{Anno}}%
+\addto\captionsinterlingua{\def\LBsongCopyright{Derectos de autor}}%
+\addto\captionsinterlingua{\def\LBsongEditorialOffice{Officio editorial}}%
+\addto\captionsinterlingua{\def\LBsongEditon{Edition}}%
+\addto\captionsinterlingua{\def\LBsongPrint{Impression}}%
+%
+%irish%
+\addto\captionsirish{\def\listofsongsname{Liosta amhrán}}%
+\addto\captionsirish{\def\LBsongComposer{Comhalóir}}%
+\addto\captionsirish{\def\LBsongLyricist{File}}%
+\addto\captionsirish{\def\LBsongEditor{Eagarthóir}}%
+\addto\captionsirish{\def\LBsongYear{Bliain}}%
+\addto\captionsirish{\def\LBsongCopyright{Cearta údar}}%
+\addto\captionsirish{\def\LBsongEditorialOffice{Na hiriseoirí}}%
+\addto\captionsirish{\def\LBsongEditon{Eagrán}}%
+\addto\captionsirish{\def\LBsongPrint{Priontáil}}%
+%
+%italian%
+\addto\captionsitalian{\def\listofsongsname{Elenco delle canzoni}}%
+\addto\captionsitalian{\def\LBsongComposer{Compositore}}%
+\addto\captionsitalian{\def\LBsongLyricist{Saggista}}%
+\addto\captionsitalian{\def\LBsongEditor{Editore}}%
+\addto\captionsitalian{\def\LBsongYear{Anno}}%
+\addto\captionsitalian{\def\LBsongCopyright{Diritti d'autore}}%
+\addto\captionsitalian{\def\LBsongEditorialOffice{Redazione}}%
+\addto\captionsitalian{\def\LBsongEditon{Edizione}}%
+\addto\captionsitalian{\def\LBsongPrint{Stampa}}%
+%
+%latin%
+\addto\captionslatin{\def\listofsongsname{Index carminum}}%
+\addto\captionslatin{\def\LBsongComposer{Componista}}%
+\addto\captionslatin{\def\LBsongLyricist{Versificator}}%
+\addto\captionslatin{\def\LBsongEditor{Editor}}%
+\addto\captionslatin{\def\LBsongYear{Annus}}%
+\addto\captionslatin{\def\LBsongCopyright{Iura auctoris}}%
+\addto\captionslatin{\def\LBsongEditorialOffice{Redactio}}%
+\addto\captionslatin{\def\LBsongEditon{Editio}}%
+\addto\captionslatin{\def\LBsongPrint{Impressio}}%
+%
+%lowersorbian%
+\addto\captionslowersorbian{\def\listofsongsname{Lědowe zapiska}}%
+\addto\captionslowersorbian{\def\LBsongComposer{Kompozytor}}%
+\addto\captionslowersorbian{\def\LBsongLyricist{Tekstowy pisar}}%
+\addto\captionslowersorbian{\def\LBsongEditor{Redaktora}}%
+\addto\captionslowersorbian{\def\LBsongYear{Rok}}%
+\addto\captionslowersorbian{\def\LBsongCopyright{Autorowe prawa}}%
+\addto\captionslowersorbian{\def\LBsongEditorialOffice{Redakcija}}%
+\addto\captionslowersorbian{\def\LBsongEditon{Wudowa}}%
+\addto\captionslowersorbian{\def\LBsongPrint{Druk}}%
+%
+%magyar%
+\addto\captionsmagyar{\def\listofsongsname{Daljegyzék}}%
+\addto\captionsmagyar{\def\LBsongComposer{Komponista}}%
+\addto\captionsmagyar{\def\LBsongLyricist{Szövegíró}}%
+\addto\captionsmagyar{\def\LBsongEditor{Szerkesztő}}%
+\addto\captionsmagyar{\def\LBsongYear{Év}}%
+\addto\captionsmagyar{\def\LBsongCopyright{Szerzői jog}}%
+\addto\captionsmagyar{\def\LBsongEditorialOffice{Szerkesztőség}}%
+\addto\captionsmagyar{\def\LBsongEditon{Kibocsátás}}%
+\addto\captionsmagyar{\def\LBsongPrint{Nyomtatás}}%
+%
+%malay%
+\addto\captionsmalay{\def\listofsongsname{Senarai lagu}}%
+\addto\captionsmalay{\def\LBsongComposer{Komposer}}%
+\addto\captionsmalay{\def\LBsongLyricist{Penulis lirik}}%
+\addto\captionsmalay{\def\LBsongEditor{Editor}}%
+\addto\captionsmalay{\def\LBsongYear{Tahun}}%
+\addto\captionsmalay{\def\LBsongCopyright{Hak cipta}}%
+\addto\captionsmalay{\def\LBsongEditorialOffice{Pejabat editorial}}%
+\addto\captionsmalay{\def\LBsongEditon{Edisi}}%
+\addto\captionsmalay{\def\LBsongPrint{Cetak}}%
+%
+%meyalu%
+\addto\captionsmeyalu{\def\listofsongsname{Senarai lagu}}%
+\addto\captionsmeyalu{\def\LBsongComposer{Komposer}}%
+\addto\captionsmeyalu{\def\LBsongLyricist{Penulis lirik}}%
+\addto\captionsmeyalu{\def\LBsongEditor{Editor}}%
+\addto\captionsmeyalu{\def\LBsongYear{Tahun}}%
+\addto\captionsmeyalu{\def\LBsongCopyright{Hak cipta}}%
+\addto\captionsmeyalu{\def\LBsongEditorialOffice{Pejabat editorial}}%
+\addto\captionsmeyalu{\def\LBsongEditon{Edisi}}%
+\addto\captionsmeyalu{\def\LBsongPrint{Cetak}}%
+%
+%naustrian%
+\addto\captionsnaustrian{\def\listofsongsname{Liederverzeichnis}}%
+\addto\captionsnaustrian{\def\LBsongComposer{Komponist}}%
+\addto\captionsnaustrian{\def\LBsongLyricist{Textdichter}}%
+\addto\captionsnaustrian{\def\LBsongEditor{Herausgeber}}%
+\addto\captionsnaustrian{\def\LBsongYear{Jahr}}%
+\addto\captionsnaustrian{\def\LBsongCopyright{Urheberrecht}}%
+\addto\captionsnaustrian{\def\LBsongEditorialOffice{Redaktion}}%
+\addto\captionsnaustrian{\def\LBsongEditon{Auflage}}%
+\addto\captionsnaustrian{\def\LBsongPrint{Druck}}%
+%
+%newzealand%
+\addto\captionsnewzealand{\def\listofsongsname{Song list}}%
+\addto\captionsnewzealand{\def\LBsongComposer{Composer}}%
+\addto\captionsnewzealand{\def\LBsongLyricist{Lyricist}}%
+\addto\captionsnewzealand{\def\LBsongEditor{Editor}}%
+\addto\captionsnewzealand{\def\LBsongYear{Year}}%
+\addto\captionsnewzealand{\def\LBsongCopyright{Copyright}}%
+\addto\captionsnewzealand{\def\LBsongEditorialOffice{Editorial office}}%
+\addto\captionsnewzealand{\def\LBsongEditon{Edition}}%
+\addto\captionsnewzealand{\def\LBsongPrint{Print}}%
+%
+%ngerman%
+\addto\captionsngerman{\def\listofsongsname{Liederverzeichnis}}%
+\addto\captionsngerman{\def\LBsongComposer{Komponist}}%
+\addto\captionsngerman{\def\LBsongLyricist{Texter}}%
+\addto\captionsngerman{\def\LBsongEditor{Herausgeber}}%
+\addto\captionsngerman{\def\LBsongYear{Jahr}}%
+\addto\captionsngerman{\def\LBsongCopyright{Urheberrecht}}%
+\addto\captionsngerman{\def\LBsongEditorialOffice{Redaktion}}%
+\addto\captionsngerman{\def\LBsongEditon{Auflage}}%
+\addto\captionsngerman{\def\LBsongPrint{Druck}}%
+%
+%norsk%
+\addto\captionsnorsk{\def\listofsongsname{Sangliste}}%
+\addto\captionsnorsk{\def\LBsongComposer{Komponist}}%
+\addto\captionsnorsk{\def\LBsongLyricist{Tekstforfatter}}%
+\addto\captionsnorsk{\def\LBsongEditor{Redaktør}}%
+\addto\captionsnorsk{\def\LBsongYear{År}}%
+\addto\captionsnorsk{\def\LBsongCopyright{Opphavsrett}}%
+\addto\captionsnorsk{\def\LBsongEditorialOffice{Redaksjon}}%
+\addto\captionsnorsk{\def\LBsongEditon{Utgave}}%
+\addto\captionsnorsk{\def\LBsongPrint{Trykk}}%
+%
+%nynorsk%
+\addto\captionsnynorsk{\def\listofsongsname{Songliste}}%
+\addto\captionsnynorsk{\def\LBsongComposer{Komponist}}%
+\addto\captionsnynorsk{\def\LBsongLyricist{Tekstforfattar}}%
+\addto\captionsnynorsk{\def\LBsongEditor{Redaktør}}%
+\addto\captionsnynorsk{\def\LBsongYear{År}}%
+\addto\captionsnynorsk{\def\LBsongCopyright{Opphavsrett}}%
+\addto\captionsnynorsk{\def\LBsongEditorialOffice{Redaksjon}}%
+\addto\captionsnynorsk{\def\LBsongEditon{Utgåve}}%
+\addto\captionsnynorsk{\def\LBsongPrint{Trykk}}%
+%
+%polish%
+\addto\captionspolish{\def\listofsongsname{Wykaz piosenek}}%
+\addto\captionspolish{\def\LBsongComposer{Kompozytor}}%
+\addto\captionspolish{\def\LBsongLyricist{Autor tekstów}}%
+\addto\captionspolish{\def\LBsongEditor{Redaktor}}%
+\addto\captionspolish{\def\LBsongYear{Rok}}%
+\addto\captionspolish{\def\LBsongCopyright{Prawo autorskie}}%
+\addto\captionspolish{\def\LBsongEditorialOffice{Redakcja}}%
+\addto\captionspolish{\def\LBsongEditon{Wydanie}}%
+\addto\captionspolish{\def\LBsongPrint{Druk}}%
+%
+%polutonikogreek%
+\addto\captionspolutonikogreek{\def\listofsongsname{Kατάλογος τραγουδιών}}%
+\addto\captionspolutonikogreek{\def\LBsongComposer{Συνθέτης}}%
+\addto\captionspolutonikogreek{\def\LBsongLyricist{Στιχουργός}}%
+\addto\captionspolutonikogreek{\def\LBsongEditor{Eκδότης}}%
+\addto\captionspolutonikogreek{\def\LBsongYear{Xρόνος}}%
+\addto\captionspolutonikogreek{\def\LBsongCopyright{Πνευματικά δικαιώματα}}%
+\addto\captionspolutonikogreek{\def\LBsongEditorialOffice{Συντακτική ομάδα}}%
+\addto\captionspolutonikogreek{\def\LBsongEditon{Éκδοση}}%
+\addto\captionspolutonikogreek{\def\LBsongPrint{Eκτύπωση}}%
+%
+%portuges%
+\addto\captionsportugues{\def\listofsongsname{Índice de canções}}%
+\addto\captionsportuges{\def\LBsongComposer{Compositor}}%
+\addto\captionsportuges{\def\LBsongLyricist{Letrista}}%
+\addto\captionsportuges{\def\LBsongEditor{Editor}}%
+\addto\captionsportuges{\def\LBsongYear{Ano}}%
+\addto\captionsportuges{\def\LBsongCopyright{Direitos autorais}}%
+\addto\captionsportuges{\def\LBsongEditorialOffice{Redação}}%
+\addto\captionsportuges{\def\LBsongEditon{Edição}}%
+\addto\captionsportuges{\def\LBsongPrint{Impressão}}%
+%
+%portuguese%
+\addto\captionsportuguese{\def\listofsongsname{Índice de canções}}%
+\addto\captionsportuguese{\def\LBsongComposer{Compositor}}%
+\addto\captionsportuguese{\def\LBsongLyricist{Letrista}}%
+\addto\captionsportuguese{\def\LBsongEditor{Editor}}%
+\addto\captionsportuguese{\def\LBsongYear{Ano}}%
+\addto\captionsportuguese{\def\LBsongCopyright{Direitos autorais}}%
+\addto\captionsportuguese{\def\LBsongEditorialOffice{Redação}}%
+\addto\captionsportuguese{\def\LBsongEditon{Edição}}%
+\addto\captionsportuguese{\def\LBsongPrint{Impressão}}%
+%
+%romanian%
+\addto\captionsromanian{\def\listofsongsname{Listă de cântece}}%
+\addto\captionsromanian{\def\LBsongComposer{Compozitor}}%
+\addto\captionsromanian{\def\LBsongLyricist{Textier}}%
+\addto\captionsromanian{\def\LBsongEditor{Editor}}%
+\addto\captionsromanian{\def\LBsongYear{An}}%
+\addto\captionsromanian{\def\LBsongCopyright{Drepturi de autor}}%
+\addto\captionsromanian{\def\LBsongEditorialOffice{Redacție}}%
+\addto\captionsromanian{\def\LBsongEditon{Ediție}}%
+\addto\captionsromanian{\def\LBsongPrint{Tipărire}}%
+%
+%russian%
+\addto\captionsrussian{\def\listofsongsname{Cписок песен}}%
+\addto\captionsrussian{\def\LBsongComposer{Kомпозитор}}%
+\addto\captionsrussian{\def\LBsongLyricist{Aвтор текстов}}%
+\addto\captionsrussian{\def\LBsongEditor{Pедактор}}%
+\addto\captionsrussian{\def\LBsongYear{Год}}%
+\addto\captionsrussian{\def\LBsongCopyright{Aвторские права}}%
+\addto\captionsrussian{\def\LBsongEditorialOffice{Pедакция}}%
+\addto\captionsrussian{\def\LBsongEditon{Издание}}%
+\addto\captionsrussian{\def\LBsongPrint{Печать}}%
+%
+%samin%
+\addto\captionssamin{\def\listofsongsname{Lávvut bokte}}%
+\addto\captionssamin{\def\LBsongComposer{Kompozitør}}%
+\addto\captionssamin{\def\LBsongLyricist{Lyrikforfattar}}%
+\addto\captionssamin{\def\LBsongEditor{Editor}}%
+\addto\captionssamin{\def\LBsongYear{År}}%
+\addto\captionssamin{\def\LBsongCopyright{Forfattarréttindi}}%
+\addto\captionssamin{\def\LBsongEditorialOffice{Ritstjórn}}%
+\addto\captionssamin{\def\LBsongEditon{Útgåva}}%
+\addto\captionssamin{\def\LBsongPrint{Prentun}}%
+%
+%scottish%
+\addto\captionsscottish{\def\listofsongsname{Song list}}%
+\addto\captionsscottish{\def\LBsongComposer{Composer}}%
+\addto\captionsscottish{\def\LBsongLyricist{Lyricist}}%
+\addto\captionsscottish{\def\LBsongEditor{Editor}}%
+\addto\captionsscottish{\def\LBsongYear{Year}}%
+\addto\captionsscottish{\def\LBsongCopyright{Copyright}}%
+\addto\captionsscottish{\def\LBsongEditorialOffice{Editorial office}}%
+\addto\captionsscottish{\def\LBsongEditon{Edition}}%
+\addto\captionsscottish{\def\LBsongPrint{Print}}%
+%
+%serbian%
+\addto\captionsserbian{\def\listofsongsname{Листа песама}}%
+\addto\captionsserbian{\def\LBsongComposer{Kомпозитор}}%
+\addto\captionsserbian{\def\LBsongLyricist{Tекстописац}}%
+\addto\captionsserbian{\def\LBsongEditor{Уредник}}%
+\addto\captionsserbian{\def\LBsongYear{Година}}%
+\addto\captionsserbian{\def\LBsongCopyright{Aуторска права}}%
+\addto\captionsserbian{\def\LBsongEditorialOffice{Pедакција}}%
+\addto\captionsserbian{\def\LBsongEditon{Іzdanje}}%
+\addto\captionsserbian{\def\LBsongPrint{Печат}}%
+%
+%slovak%
+\addto\captionsslovak{\def\listofsongsname{Zoznam piesní}}%
+\addto\captionsslovak{\def\LBsongComposer{Skladateľ}}%
+\addto\captionsslovak{\def\LBsongLyricist{Textár}}%
+\addto\captionsslovak{\def\LBsongEditor{Editor}}%
+\addto\captionsslovak{\def\LBsongYear{Rok}}%
+\addto\captionsslovak{\def\LBsongCopyright{Autorské práva}}%
+\addto\captionsslovak{\def\LBsongEditorialOffice{Redakcia}}%
+\addto\captionsslovak{\def\LBsongEditon{Vydanie}}%
+\addto\captionsslovak{\def\LBsongPrint{Tlač}}%
+%
+%slovene%
+\addto\captionsslovene{\def\listofsongsname{Seznam pesmi}}%
+\addto\captionsslovene{\def\LBsongComposer{Kompozitor}}%
+\addto\captionsslovene{\def\LBsongLyricist{Besedni pisec}}%
+\addto\captionsslovene{\def\LBsongEditor{Urednik}}%
+\addto\captionsslovene{\def\LBsongYear{Leto}}%
+\addto\captionsslovene{\def\LBsongCopyright{Avtorska pravica}}%
+\addto\captionsslovene{\def\LBsongEditorialOffice{Uredništvo}}%
+\addto\captionsslovene{\def\LBsongEditon{Izdaja}}%
+\addto\captionsslovene{\def\LBsongPrint{Tiskanje}}%
+%
+%spanish%
+\addto\captionsspanish{\def\listofsongsname{Lista de canciones}}%
+\addto\captionsspanish{\def\LBsongComposer{Compositor}}%
+\addto\captionsspanish{\def\LBsongLyricist{Letrista}}%
+\addto\captionsspanish{\def\LBsongEditor{Editor}}%
+\addto\captionsspanish{\def\LBsongYear{Año}}%
+\addto\captionsspanish{\def\LBsongCopyright{Derechos de autor}}%
+\addto\captionsspanish{\def\LBsongEditorialOffice{Redacción}}%
+\addto\captionsspanish{\def\LBsongEditon{Edición}}%
+\addto\captionsspanish{\def\LBsongPrint{Impresión}}%
+%
+%swedish%
+\addto\captionsswedish{\def\listofsongsname{Låtlista}}%
+\addto\captionsswedish{\def\LBsongComposer{Kompositör}}%
+\addto\captionsswedish{\def\LBsongLyricist{Textförfattare}}%
+\addto\captionsswedish{\def\LBsongEditor{Redaktör}}%
+\addto\captionsswedish{\def\LBsongYear{År}}%
+\addto\captionsswedish{\def\LBsongCopyright{Upphovsrätt}}%
+\addto\captionsswedish{\def\LBsongEditorialOffice{Redaktion}}%
+\addto\captionsswedish{\def\LBsongEditon{Upplaga}}%
+\addto\captionsswedish{\def\LBsongPrint{Tryck}}%
+%
+%turkish%
+\addto\captionsturkish{\def\listofsongsname{Şarkı listesi}}%
+\addto\captionsturkish{\def\LBsongComposer{Besteci}}%
+\addto\captionsturkish{\def\LBsongLyricist{Şarkı sözleri yazarı}}%
+\addto\captionsturkish{\def\LBsongEditor{Editör}}%
+\addto\captionsturkish{\def\LBsongYear{Yıl}}%
+\addto\captionsturkish{\def\LBsongCopyright{Telif hakkı}}%
+\addto\captionsturkish{\def\LBsongEditorialOffice{Editörlük}}%
+\addto\captionsturkish{\def\LBsongEditon{Basım}}%
+\addto\captionsturkish{\def\LBsongPrint{Basım}}%
+%
+%ukrainian%
+\addto\captionsukrainian{\def\listofsongsname{Cписок пісень}}%
+\addto\captionsukrainian{\def\LBsongComposer{Kомпозитор}}%
+\addto\captionsukrainian{\def\LBsongLyricist{Aвтор текстів}}%
+\addto\captionsukrainian{\def\LBsongEditor{Pедактор}}%
+\addto\captionsukrainian{\def\LBsongYear{Pік}}%
+\addto\captionsukrainian{\def\LBsongCopyright{Aвторські права}}%
+\addto\captionsukrainian{\def\LBsongEditorialOffice{Pедакція}}%
+\addto\captionsukrainian{\def\LBsongEditon{Видання}}%
+\addto\captionsukrainian{\def\LBsongPrint{Друк}}%
+%
+%uppersorbian%
+\addto\captionsuppersorbian{\def\listofsongsname{Lědowe zapiska}}%
+\addto\captionsuppersorbian{\def\LBsongComposer{Kompozytor}}%
+\addto\captionsuppersorbian{\def\LBsongLyricist{Tekstowy pisar}}%
+\addto\captionsuppersorbian{\def\LBsongEditor{Redaktora}}%
+\addto\captionsuppersorbian{\def\LBsongYear{Rok}}%
+\addto\captionsuppersorbian{\def\LBsongCopyright{Autorowe prawa}}%
+\addto\captionsuppersorbian{\def\LBsongEditorialOffice{Redakcija}}%
+\addto\captionsuppersorbian{\def\LBsongEditon{Wudowa}}%
+\addto\captionsuppersorbian{\def\LBsongPrint{Druk}}%
+%
+%welsh%
+\addto\captionswelsh{\def\listofsongsname{Rhestr cân}}%
+\addto\captionswelsh{\def\LBsongComposer{Compositor}}%
+\addto\captionswelsh{\def\LBsongLyricist{Cyfansoddwr geiriau}}%
+\addto\captionswelsh{\def\LBsongEditor{Golygydd}}%
+\addto\captionswelsh{\def\LBsongYear{Blwyddyn}}%
+\addto\captionswelsh{\def\LBsongCopyright{Hawlfraint}}%
+\addto\captionswelsh{\def\LBsongEditorialOffice{Ystafell golygydd}}%
+\addto\captionswelsh{\def\LBsongEditon{Argraffiad}}%
+\addto\captionswelsh{\def\LBsongPrint{Argraffu}}%
+%
+%UKenglish%
+\addto\captionsUKenglish{\def\listofsongsname{Song list}}%
+\addto\captionsUKenglish{\def\LBsongComposer{Composer}}%
+\addto\captionsUKenglish{\def\LBsongLyricist{Lyricist}}%
+\addto\captionsUKenglish{\def\LBsongEditor{Editor}}%
+\addto\captionsUKenglish{\def\LBsongYear{Year}}%
+\addto\captionsUKenglish{\def\LBsongCopyright{Copyright}}%
+\addto\captionsUKenglish{\def\LBsongEditorialOffice{Editorial office}}%
+\addto\captionsUKenglish{\def\LBsongEditon{Edition}}%
+\addto\captionsUKenglish{\def\LBsongPrint{Print}}%
+%
+%USenglish%
+\addto\captionsUSenglish{\def\listofsongsname{Song list}}%
+\addto\captionsUSenglish{\def\LBsongComposer{Composer}}%
+\addto\captionsUSenglish{\def\LBsongLyricist{Lyricist}}%
+\addto\captionsUSenglish{\def\LBsongEditor{Editor}}%
+\addto\captionsUSenglish{\def\LBsongYear{Year}}%
+\addto\captionsUSenglish{\def\LBsongCopyright{Copyright}}%
+\addto\captionsUSenglish{\def\LBsongEditorialOffice{Editorial office}}%
+\addto\captionsUSenglish{\def\LBsongEditon{Edition}}%
+\addto\captionsUSenglish{\def\LBsongPrint{Print}}%
+%
+%EOF%
diff --git a/Master/texmf-dist/tex/latex/liederbuch/liederbuch-listofsongs.sty b/Master/texmf-dist/tex/latex/liederbuch/liederbuch-listofsongs.sty
new file mode 100644
index 00000000000..007e24e819d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/liederbuch/liederbuch-listofsongs.sty
@@ -0,0 +1,202 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Made by Gabriel Ruprecht %
+% %
+% This work is published under the %
+% LaTeX project public license 1.3 %
+% %
+% Package version 1.1.0 %
+% 2025-01-20 %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{liederbuch-listofsongs}[version 1.1.0]
+
+% Default names; Has Babel support in liederbuch.sty
+\def\listofsongsname{List of Songs}
+\def\LBsongComposer{composer}%
+\def\LBsongLyricist{lyricist}%
+\def\LBsongEditor{editor}%
+\def\LBsongYear{year}%
+\def\LBsongCopyright{copyright}%
+\def\LBsongEditorialOffice{editorial office}%
+\def\LBsongEditon{edition}%
+\def\LBsongPrint{print}%
+
+
+% The command, that outputs the list of songs. Mostly taken from listoffigures
+\def\listofsongs{%
+ \newif\ifGFM@LB@chapterExists%
+ \GFM@LB@chapterExiststrue%
+ %
+ \ifx\undefined\chapter\relax%
+ \GFM@LB@chapterExistsfalse%
+ \fi%
+ %
+ \if@twocolumn%
+ \@restonecoltrue%
+ \onecolumn %
+ \else%
+ \@restonecolfalse%
+ \fi%
+ \ifGFM@LB@chapterExists\relax%
+ %starred/unstarred?%
+ \chapter*{\listofsongsname}%
+ \else%
+ \section*{\listofsongsname}%
+ \fi%
+ \@mkboth{\MakeUppercase \listofsongsname }{\MakeUppercase \listofsongsname }%
+ %Print nothing for one run, when the los style is changed
+ \ifx\listofsongsstyleprevrun\listofsongsstylevalue%
+ \else%
+ \def\l@song##1##2{}%
+ \fi%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %Most important line is here:
+ \@starttoc{los}%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \if@restonecol%
+ \twocolumn%
+ \fi%
+}
+
+
+% This is needed to check, if the same style is used than last
+% time. If not, there will be no output for one compilation.
+\AtEndDocument{
+\write\@auxout{\noexpand\gdef\noexpand\listofsongsstyleprevrun{\listofsongsstylevalue}}
+}
+
+
+% For checking, if a valid style had been selected.
+\newif\iflistofsongsstyleExists\relax
+\listofsongsstyleExistsfalse
+
+% Selects the style. Contains the default styles.
+\def\listofsongsstyle#1{%
+ \edef\listofsongsstylevalue{#1}%
+ \def\GFM@compareB{twolines}%
+ \ifx\listofsongsstylevalue\GFM@compareB\relax%
+ \listofsongsstyleTwolines\relax%
+ \listofsongsstyleExiststrue%
+ \fi%
+ \def\GFM@compareB{semitwolines}%
+ \ifx\listofsongsstylevalue\GFM@compareB\relax%
+ \listofsongsstyleSemiTwolines\relax%
+ \listofsongsstyleExiststrue%
+ \fi%
+ \def\GFM@compareB{simple}%
+ \ifx\listofsongsstylevalue\GFM@compareB\relax%
+ \listofsongsstyleSimple\relax%
+ \listofsongsstyleExiststrue%
+ \fi%
+ \def\GFM@compareB{simple with number}%
+ \ifx\listofsongsstylevalue\GFM@compareB\relax%
+ \listofsongsstyleSimplewithnumber\relax%
+ \listofsongsstyleExiststrue%
+ \fi%
+ \def\GFM@compareB{simple with document number}%
+ \ifx\listofsongsstylevalue\GFM@compareB\relax%
+ \listofsongsstyleSimplewithdocumentnumber\relax%
+ \listofsongsstyleExiststrue%
+ \fi%
+ % TODO: create style registering and
+ \iflistofsongsstyleExists%
+ \else%
+ \PackageError{liederbuch}{liederbuch-listofsongs.sty, line 102: You tried to call a style for the list of songs, that is not defined.}{Did you make a typo? The default style is 'simple' and will automatically be used, if you don't use the command listofsongsstyle.}%
+ \fi%
+ \listofsongsstyleExistsfalse%
+}
+
+\@onlypreamble\listofsongsstyle
+
+% Default style twolines:
+% The definion of this is 90% taken from l@figure:
+\def\listofsongsstyleTwolines{%
+ \newdimen\GFM@LB@losDimA\relax%
+ \newdimen\GFM@LB@losDimB\relax%
+ \GFM@LB@losDimA=1.5em\relax%
+ \GFM@LB@losDimB=2.3em\relax%
+ %
+% \let\l@song\l@figure
+ \def\l@song##1##2{%
+ \show##1\relax%
+ \wlog{This is a marker}
+% \show##2\relax%
+ \def\GFM@LB@extract####1\csname ####2@title\endcsname####3{
+ \def\GFM@LB@expandedNamePre{####1}%
+ \def\GFM@LB@expandedName{####2}%
+ \def\GFM@LB@expandedNameAfter{####3}%
+ }%
+ \expandafter\GFM@LB@extract##1\relax%
+%
+%% \def\split####1={%
+% % \def\GFM@LB@expandedName{####1}%
+% % }\split##1@title=\relax%
+ \show\GFM@LB@expandedName%
+ \vskip 0.5em plus 0.05em minus 0.02em\relax%
+ \vskip \z@ \@plus .2\p@ %
+ {\leftskip \GFM@LB@losDimA\relax\rightskip \@tocrmarg \parfillskip -\rightskip \parindent \GFM@LB@losDimA\relax \@afterindenttrue \interlinepenalty \@M \leavevmode \@tempdima \GFM@LB@losDimB\relax \advance \leftskip \@tempdima \null \nobreak \hskip -\leftskip {\csname \GFM@LB@expandedName @title\endcsname }\newline\null%
+ \expandafter\ifx\csname \GFM@LB@expandedName @composer\endcsname \empty%
+ \else%
+ \csname \GFM@LB@expandedName @composer\endcsname\ -- \fi\csname%
+ \GFM@LB@expandedName @lyricist\endcsname%
+ \nobreak \leaders \hbox {$\m@th \mkern \@dotsep mu\hbox {.}\mkern \@dotsep mu$}\hfill \nobreak \hb@xt@ \@pnumwidth {\hfil \normalfont \normalcolor ##2\kern -\p@ \kern \p@ }\par }%
+ }%
+ \def\GFM@LB@addcontentsline{%
+ \addcontentsline{los}{song}{\unexpanded{\unexpanded{\csname}}\GFM@LB@expandedName @title\unexpanded{\unexpanded{\endcsname}}}%
+ }%
+}
+
+% Default style semitwolines
+% The definion of this is 90% taken from l@figure:
+\def\listofsongsstyleSemiTwolines{%
+ \newdimen\GFM@LB@losDimA\relax%
+ \newdimen\GFM@LB@losDimB\relax%
+ \GFM@LB@losDimA=1.5em\relax%
+ \GFM@LB@losDimB=2.3em\relax%
+ %
+ \def\l@song##1##2{%
+ \def\split####1&####2&####3={%
+ \def\GFM@LB@losTitle{####1}%
+ \def\GFM@LB@losComposer{####2}%
+ \def\GFM@LB@losLyricist{####3}%
+ }\split##1=\relax%
+ \vskip 0.5em plus 0.05em minus 0.02em\relax%
+ \vskip \z@ \@plus .2\p@ %
+ {\leftskip \GFM@LB@losDimA\relax\rightskip \@tocrmarg \parfillskip -\rightskip \parindent \GFM@LB@losDimA\relax \@afterindenttrue \interlinepenalty \@M \leavevmode \@tempdima \GFM@LB@losDimB\relax \advance \leftskip \@tempdima \null \nobreak \hskip -\leftskip {\GFM@LB@losTitle}\ifx\GFM@LB@losComposer\empty\else\newline\null\GFM@LB@losComposer\ -- \fi\GFM@LB@losLyricist%
+ \nobreak \leaders \hbox {$\m@th \mkern \@dotsep mu\hbox {.}\mkern \@dotsep mu$}\hfill \nobreak \hb@xt@ \@pnumwidth {\hfil \normalfont \normalcolor ##2\kern -\p@ \kern \p@ }\par }%
+ }%
+ \def\GFM@LB@addcontentsline{%
+ \addcontentsline{los}{song}{%
+ \csname \GFM@LB@expandedName @title\endcsname &\csname \GFM@LB@expandedName @composer\endcsname &\csname \GFM@LB@expandedName @lyricist\endcsname%
+ }%
+ }%
+}
+
+
+% Default style simple:
+\def\listofsongsstyleSimple{%
+ \let\l@song\l@figure\relax%
+ \def\GFM@LB@addcontentsline{%
+ \addcontentsline{los}{song}{\csname \GFM@LB@expandedName @title\endcsname }%
+ }%
+}
+
+% Default style simple with number
+\def\listofsongsstyleSimplewithnumber{%
+ \let\l@song\l@figure\relax%
+ \def\GFM@LB@addcontentsline{%
+ \addcontentsline{los}{song}{\numberline{\GFM@LB@number }\csname \GFM@LB@expandedName @title\endcsname }%
+ }%
+}
+
+% Default style simple with document number
+\def\listofsongsstyleSimplewithdocumentnumber{%
+ \let\l@song\l@figure\relax%
+ \def\GFM@LB@addcontentsline{%
+ \addcontentsline{los}{song}{\numberline {\arabic{liedcounter}}\csname \GFM@LB@expandedName @title\endcsname }%
+ }%
+}
+
+%default value:
+\listofsongsstyle{simple}
diff --git a/Master/texmf-dist/tex/latex/liederbuch/liederbuch.sty b/Master/texmf-dist/tex/latex/liederbuch/liederbuch.sty
new file mode 100644
index 00000000000..698877522c7
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/liederbuch/liederbuch.sty
@@ -0,0 +1,724 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Made by Gabriel Ruprecht %
+% %
+% This work is published under the %
+% LaTeX project public license 1.3 %
+% %
+% Package version 1.1.0 %
+% 2025-01-20 %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{liederbuch}[version 1.1.0]
+\RequirePackage{etoolbox}
+\RequirePackage{environ}
+\RequirePackage{xparse}
+\RequirePackage{pgfmath}
+
+\RequirePackage{liederbuch-listofsongs}
+
+%expands twice:
+%\edef\expandhere{\unexpanded\expandafter\expandafter\expandafter{\xy}}
+
+
+%%%%%%%%%%%%%
+%%% Babel %%%
+%%%%%%%%%%%%%
+
+%Make sure Babel is loaded before Liederbuch - part 1
+\newif\ifGFM@babel@loaded@before@LB
+\GFM@babel@loaded@before@LBfalse
+
+
+\@ifpackageloaded{babel}
+{%
+%Make sure Babel is loaded before Liederbuch - part 2
+\GFM@babel@loaded@before@LBtrue
+%
+\input{liederbuch-babel.sty}%
+%
+%%%This is obsolete code now:
+%%Make German quotes less fragile - part 1:
+%\let\GFM@protect@glqq\glqq%
+%\let\GFM@protect@grqq\grqq%
+%%
+%\def\glqq{\unexpanded{\glqq}}%
+%\def\grqq{\unexpanded{\grqq}}%
+%%
+%%
+%%
+%\AtBeginDocument{%
+%%
+%%Make German quotes less fragile - part 2:
+%\let\glqq\GFM@protect@glqq%
+%\let\grqq\GFM@protect@grqq%
+%%
+%}%
+%
+%
+}{}%@ifpackageloaded{babel}
+
+\AtBeginDocument{%
+%Make sure Babel is loaded before Liederbuch - part 3
+\ifGFM@babel@loaded@before@LB%
+\else%
+ \@ifpackageloaded{babel}{%
+ \PackageError{liederbuch.sty}{You must load babel before liederbuch, not after}{I will continue anyway and hope for the best. Some things might break.}%
+ }{}%
+\fi%
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Special music characters %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\repeatleft}{\raisebox{-0.28em}{\hspace{0.075em}\rule{0.075em}{1em}\hspace{0.075em}\rule{0.025em}{1em}\hspace{-0.01em}}:}
+\newcommand{\repeatright}{:\raisebox{-0.28em}{\hspace{-0.01em}\rule{0.025em}{1em}\hspace{0.075em}\rule{0.075em}{1em}\hspace{0.075em}}}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Handling of the metadata %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% parse metadata
+%unpackages a list of data in the form of [first=xy & second = xz& third= som3thing ...]
+%This creates the macros:
+%\GFM@LB@lied@<songbookname>@<song variant>@<song number>@first{xy}
+%\GFM@LB@lied@<songbookname>@<song variant>@<song number>@second{xz}
+%\GFM@LB@lied@<songbookname>@<song variant>@<song number>@third{som3thing}
+%...
+\NewDocumentCommand{\GFM@LB@unpackage}{m}{{%
+ %As '=' is not available in the tag text, we make it available again. & stays available via \&
+ \gdef\equals{=}%
+ \@ifundefined{inputList}{%
+ \DeclareListParser{\inputList}{&}%
+ }{}%
+ %
+ %
+ %
+ {%
+ \newcount\ipp\relax%
+ \ipp=0\relax%
+ \renewcommand{\do}[1]{%
+ \csdef{tempList\the\ipp}{##1&}%
+ \global\advance\ipp by1\relax%
+ }%
+ \inputList{#1}%
+ \def\choppyA##1=##2&{##1}%
+ \def\choppyB##1=##2&{##2}%
+ \newif\iflooping\relax%
+ \loopingtrue\relax%
+ \ipp=0\relax%
+ \loop%
+ \ifnum\ipp>1000\relax%
+ \loopingfalse\relax%
+ \PackageError{liederbuch}{Too many metadata elements (>1000 elements)}{Check your metadata definitions in your source songbook, the one you imported / built in the preamble.}%
+ \fi%
+ \expandafter\ifx\csname tempList\the\ipp\endcsname\relax%
+ \loopingfalse\relax%
+ \else%
+ %select parse list element and copy to temp:
+ \expandafter\let%
+ \expandafter\temp%
+ \csname tempList\the\ipp\endcsname\relax%
+ \edef\tempA{\expandafter\choppyA\temp}%
+ %expand temp twice and save to tempB,
+ %weird stuff, don't touch:
+ \edef\tempB{%
+ \unexpanded\expandafter%
+ \expandafter\expandafter%
+ {%
+ \expandafter\choppyB\temp%
+ }%
+ }%
+ %trim spaces on both:
+ \trim@spaces@in{\tempA}%
+ \trim@spaces@in{\tempB}%
+ %
+ %Most important line is here:
+ %
+ \global\cslet{GFM@LB@lied@\GFM@LB@songbook @\GFM@LB@variant @\GFM@LB@number @\tempA}{\tempB}%songbook@song variant@song number
+ \advance\ipp by1\relax%
+ \fi%
+ \iflooping\repeat%
+ }%
+}}%
+
+
+%tweakMetadata allows completing or editing metadata of a certain song.
+\def\tweakMetadata#1#2#3#4{{%structure is analogue to \LBsong
+ \def\GFM@LB@LiederbuchNameTmp{#1}%songbook
+ \def\GFM@LB@LiederbuchNumberTmp{#2}%song number
+ \def\GFM@LB@LiederbuchVariantTmp{#3}%song variant
+ \GFM@LB@unpackage{#4}%
+}}%
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Environment and commands for %%%
+%%% notes + lyrics in native LaTeX font %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newdimen\GFM@LB@NT@tempDimA%
+\newdimen\GFM@LB@NT@tempDimB%
+\newdimen\GFM@LB@NT@tempDimC%
+
+
+\newcommand{\GFM@LB@songLyrics}[1]{%
+ \vskip 0pt%backwards compability
+ \nopagebreak[4]%
+ {% make commands local
+ \nopagebreak[4]%
+ \GFM@LB@NT@tempDimA=0pt%
+ \noindent%
+ %If no unit is given (i.e. [10] instead of [10pt]),
+ %percent linewidth is assumed ([10] = 0.1\linewidth)
+ \DeclareDocumentCommand{\nspace}{s m}{%
+ \pgfmathparse{##2}%
+ \ifpgfmathunitsdeclared%
+ \ifx##1\BooleanTrue%
+ \hspace*{##2}%
+ \else%
+ \hspace{##2}%
+ \fi%
+ \else%
+ \GFM@LB@NT@tempDimC=0.01\linewidth\relax%
+ \ifx##1\BooleanTrue%
+ \hspace*{##2\GFM@LB@NT@tempDimC}%
+ \else%
+ \hspace{##2\GFM@LB@NT@tempDimC}%
+ \fi%
+ \fi%
+ }%
+ \DeclareDocumentCommand{\ns}{s O{0 pt}}{%
+ \pgfmathparse{##2}%
+ \ifpgfmathunitsdeclared%
+ \GFM@LB@NT@tempDimB=\dimexpr##2\relax%
+ \else%
+ \GFM@LB@NT@tempDimB=##2\linewidth\relax%
+ \divide\GFM@LB@NT@tempDimB by 100\relax%
+ \fi%
+ \ifx##1\BooleanTrue%
+ {%
+ \divide\GFM@LB@NT@tempDimA by2\relax%
+ \divide\GFM@LB@NT@tempDimB by2\relax%
+ \hskip 0pt plus 1fill minus 1fill\relax%
+ \hspace{\dimexpr\GFM@LB@NT@tempDimB - \GFM@LB@NT@tempDimA}%
+ -%
+ \hspace{\dimexpr\GFM@LB@NT@tempDimB - \GFM@LB@NT@tempDimA}%
+ \hskip 0pt plus 1fill minus 1fill\relax%
+ }%
+ \else%
+ \hspace*{0.5\dimexpr\f@size pt}%
+ %compensates the - in ns* (not totally)
+ \hskip 0pt plus 2fill minus 2fill%
+ \hspace{\dimexpr\GFM@LB@NT@tempDimB - \GFM@LB@NT@tempDimA}%
+ \fi%
+ \global\GFM@LB@NT@tempDimA=\dimexpr\GFM@LB@NT@tempDimB\relax%
+ }%\ns
+ %%%%%%%%%% most important line is here:
+ \makebox[\linewidth]{%
+ \GFM@LB@NT@tempDimC=\dimexpr\f@size pt\relax%
+% \parbox[t][0.5\GFM@LB@NT@tempDimC]{0pt}{}% orig. statt 0.5 war 1.65
+ #1}%
+ %%%%%%%%%% most important line END
+ \GFM@LB@NT@tempDimA=0pt%
+ %reset to avoid sideeffects otherwhere.
+ \pagebreak[3]%
+ }% END make commands local
+ \pagebreak[3]%
+ \vskip 0pt\relax%backward compatibility?
+}%
+
+\newdimen\tempdimA%
+
+\newcounter{staveLineNumber}%
+\setcounter{staveLineNumber}{1}%
+
+\newcounter{GFM@staveLineNumberBreakPointA}%
+\newcounter{GFM@staveLineNumberBreakPointB}%
+\newcounter{GFM@staveLineNumberBreakPointC}%
+\newcounter{GFM@staveLineNumberBreakPointD}%
+\newcounter{GFM@staveLineNumberBreakPointE}%
+\newcounter{GFM@staveLineNumberBreakPointF}%
+
+
+%usage: \forcePageBreakAfterStaveLine{3}[4][2]...
+\NewDocumentCommand\forcePageBreakAfterStaveLine{m O{0} O{0} O{0} O{0} O{0}}{
+\setcounter{GFM@staveLineNumberBreakPointA}{#1}
+\setcounter{GFM@staveLineNumberBreakPointB}{#2}
+\setcounter{GFM@staveLineNumberBreakPointC}{#3}
+\setcounter{GFM@staveLineNumberBreakPointD}{#4}
+\setcounter{GFM@staveLineNumberBreakPointE}{#5}
+\setcounter{GFM@staveLineNumberBreakPointF}{#6}
+}
+
+
+\NewDocumentCommand\notenzeile{O{\linewidth} m m o o o o o}{%
+ {%
+ %Multilines
+% \ifx\multiline\undefined%
+ \DeclareDocumentCommand{\multiline}{m m m o o o o}{%
+ \parbox[c]{##1}{%
+ \newdimen\temp%
+ \temp=\dimexpr\f@size pt%
+ \vskip 0.27\temp\relax%
+ \makebox[\linewidth]{##2}%
+ \spaceBetweenSongLyrics%
+ \makebox[\linewidth]{##3}%
+ \IfNoValueTF{##4}{}{%
+ \spaceBetweenSongLyrics%
+ \makebox[\linewidth]{##4}%
+ }%
+ \IfNoValueTF{##5}{}{%
+ \spaceBetweenSongLyrics%
+ \makebox[\linewidth]{##5}%
+ }%
+ \IfNoValueTF{##6}{}{%
+ \spaceBetweenSongLyrics%
+ \makebox[\linewidth]{##6}%
+ }%
+ \IfNoValueTF{##7}{}{%
+ \spaceBetweenSongLyrics%
+ \makebox[\linewidth]{##7}%
+ }%
+% \vskip 0.27\temp%%
+ }%
+ }%
+% \fi% multiline undefined?
+ %
+ \noindent%
+ \begin{minipage}{#1}%
+ \relax%
+ \spaceBeforeNotes%
+ \makebox[\linewidth]{#2}%
+ \relax\mbox{}\spaceAfterNotes%
+ \spaceBeforeSongLyrics%
+ \GFM@LB@songLyrics{#3}%
+ \IfNoValueTF{#4}{}{%
+ \spaceBetweenSongLyrics%
+ \GFM@LB@songLyrics{#4}%
+ }%
+ \IfNoValueTF{#5}{}{%
+ \spaceBetweenSongLyrics%
+ \GFM@LB@songLyrics{#5}%
+ }%
+ \IfNoValueTF{#6}{}{%
+ \spaceBetweenSongLyrics%
+ \GFM@LB@songLyrics{#6}%
+ }%
+ \IfNoValueTF{#7}{}{%
+ \spaceBetweenSongLyrics%
+ \GFM@LB@songLyrics{#7}%
+ }%
+ \IfNoValueTF{#8}{}{%
+ \spaceBetweenSongLyrics%
+ \GFM@LB@songLyrics{#8}%
+ }%
+ \spaceAfterSongLyrics%
+ \end{minipage}\vskip0pt%
+ \ifnum\c@GFM@staveLineNumberBreakPointA=\c@staveLineNumber\relax%
+ \newpage%
+ \fi%
+ \ifnum\c@GFM@staveLineNumberBreakPointB=\c@staveLineNumber\relax%
+ \newpage%
+ \fi%
+ \ifnum\c@GFM@staveLineNumberBreakPointC=\c@staveLineNumber\relax%
+ \newpage%
+ \fi%
+ \ifnum\c@GFM@staveLineNumberBreakPointD=\c@staveLineNumber\relax%
+ \newpage%
+ \fi%
+ \ifnum\c@GFM@staveLineNumberBreakPointE=\c@staveLineNumber\relax%
+ \newpage%
+ \fi%
+ \ifnum\c@GFM@staveLineNumberBreakPointF=\c@staveLineNumber\relax%
+ \newpage%
+ \fi%
+ \stepcounter{staveLineNumber}%Counter for the current stave line
+ }%
+}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Environment for strophes %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%%% Control of the page break in strophes
+\newif\ifpageBreakAllowed
+\pageBreakAllowedfalse %default
+\newlength{\GFM@LB@indent@temp@length}
+
+%automatic strophe numbering
+\newcounter{GFM@strophe@counter}
+\setcounter{GFM@strophe@counter}{-1}
+
+\newcounter{GFM@stropheNumberBreakPointA}
+\newcounter{GFM@stropheNumberBreakPointB}
+\newcounter{GFM@stropheNumberBreakPointC}
+\newcounter{GFM@stropheNumberBreakPointD}
+\newcounter{GFM@stropheNumberBreakPointE}
+\newcounter{GFM@stropheNumberBreakPointF}
+
+
+%usage: \forcePageBreakAfterStrophe{3}[4][2]...
+\NewDocumentCommand\forcePageBreakAfterStrophe{m O{0} O{0} O{0} O{0} O{0}}{
+\setcounter{GFM@stropheNumberBreakPointA}{#1}
+\setcounter{GFM@stropheNumberBreakPointB}{#2}
+\setcounter{GFM@stropheNumberBreakPointC}{#3}
+\setcounter{GFM@stropheNumberBreakPointD}{#4}
+\setcounter{GFM@stropheNumberBreakPointE}{#5}
+\setcounter{GFM@stropheNumberBreakPointF}{#6}
+}
+
+
+%Set a verse separator
+\long\def\setVerseSeparator#1{%
+ \long\def\GFM@LB@verseSeparator{#1}%
+}
+
+%default value
+\long\def\GFM@LB@verseSeparator{ }%
+
+%strophe environment
+\NewEnviron{strophe}[1][-1]{%
+ % The verse command shall only be available inside strophe to minimize possible interference.
+ \DeclareDocumentCommand{\verse}{o}{%
+ \unskip\null\IfNoValueTF{##1}{\GFM@LB@verseSeparator}{##1%
+ \null\ignorespaces}%
+ }%
+%
+%
+%
+ \ifnum#1=-1%
+ %leer
+ \else%
+ \setcounter{GFM@strophe@counter}{#1}%
+ \fi%
+ \penalty-1500\relax%
+ \ifpageBreakAllowed%
+ \penalty1500\relax%
+ \spaceBeforeStrophe%
+ \arabic{GFM@strophe@counter}.~\BODY%
+ \penalty1500\relax%
+ \spaceAfterStrophe%
+ \else%
+%% Alternative (worse) implementation:
+%% \GFM@LB@indent@temp@length\parindent%
+%% \noindent%
+%% \parbox{\linewidth}{%
+ \begin{samepage}%
+ \parindent \GFM@LB@indent@temp@length\indent%
+ \penalty1500\relax%
+ \spaceBeforeStrophe%
+ \arabic{GFM@strophe@counter}.~\BODY%
+ \penalty1500\relax%
+ \spaceAfterStrophe%
+%% }%parbox
+ \end{samepage}%
+ \fi%
+ \ifnum\c@GFM@stropheNumberBreakPointA=\c@GFM@strophe@counter\relax%
+ \newpage%
+ \fi%
+ \ifnum\c@GFM@stropheNumberBreakPointB=\c@GFM@strophe@counter\relax%
+ \newpage%
+ \fi%
+ \ifnum\c@GFM@stropheNumberBreakPointC=\c@GFM@strophe@counter\relax%
+ \newpage%
+ \fi%
+ \ifnum\c@GFM@stropheNumberBreakPointD=\c@GFM@strophe@counter\relax%
+ \newpage%
+ \fi%
+ \ifnum\c@GFM@stropheNumberBreakPointE=\c@GFM@strophe@counter\relax%
+ \newpage%
+ \fi%
+ \ifnum\c@GFM@stropheNumberBreakPointF=\c@GFM@strophe@counter\relax%
+ \newpage%
+ \fi%
+ \stepcounter{GFM@strophe@counter}%
+}%
+
+
+
+%%%%%%%%%%%%%%%
+%%% Spacing %%%
+%%%%%%%%%%%%%%%
+
+%%% Head
+\def\setSpaceBeforeHeadValue#1{\def\spaceBeforeHeadValue{#1}}
+\def\setSpaceAfterHeadValue#1{\def\spaceAfterHeadValue{#1}}
+
+%%% Notes
+\def\setSpaceBeforeNotesValue#1{\def\spaceBeforeNotesValue{#1}}
+\def\setSpaceAfterNotesValue#1{\def\spaceAfterNotesValue{#1}}
+
+%%% Strophes
+\def\setSpaceBeforeStropheValue#1{\def\spaceBeforeStropheValue{#1}}
+\def\setSpaceAfterStropheValue#1{\def\spaceAfterStropheValue{#1}}
+
+%%% Song lyrics
+\def\setSpaceBeforeSongLyricsValue#1{\def\spaceBeforeSongLyricsValue{#1}}
+\def\setSpaceBetweenSongLyricsValue#1{\def\spaceBetweenSongLyricsValue{#1}}
+\def\setSpaceAfterSongLyricsValue#1{\def\spaceAfterSongLyricsValue{#1}}
+
+
+%%% Foot
+\def\setSpaceBeforeFootValue#1{\def\spaceBeforeFootValue{#1}}
+\def\setSpaceAfterFootValue#1{\def\spaceAfterFootValue{#1}}
+
+
+
+
+%%% Horizontal spacing
+\def\setSpaceStropheIndentValue#1{\def\spaceStropheIndentValue{#1}}
+\def\setSpaceHeadIndentValue#1{\def\spaceHeadIndentValue{#1}}
+\def\setSpaceFootIndentValue#1{\def\spaceFootIndentValue{#1}}
+
+
+%%% Arranging the space values
+\def\spaceBeforeHead{\vskip\spaceBeforeHeadValue\relax\noindent\mbox{}\hskip\spaceHeadIndentValue\mbox{}}
+
+\def\spaceAfterHead{\relax\vskip\spaceAfterHeadValue\relax}
+
+\def\spaceBeforeNotes{\relax\vskip\spaceBeforeNotesValue\relax}
+
+\def\spaceAfterNotes{\relax\vskip\spaceAfterNotesValue\relax}
+
+\def\spaceBeforeStrophe{\relax\vskip\spaceBeforeStropheValue\noindent\hskip\spaceStropheIndentValue\relax}
+
+\def\spaceAfterStrophe{\relax\vskip\spaceAfterStropheValue\relax}
+
+\def\spaceBeforeSongLyrics{\relax\vskip\spaceBeforeSongLyricsValue\relax}
+
+\def\spaceBetweenSongLyrics{\relax\vskip\spaceBetweenSongLyricsValue\relax}
+
+\def\spaceAfterSongLyrics{\relax\vskip\spaceAfterSongLyricsValue \relax}
+
+\def\spaceBeforeFoot{\relax\vskip\spaceBeforeFootValue \noindent \hskip\spaceFootIndentValue\relax}
+
+\def\spaceAfterFoot{\relax\vskip\spaceAfterFootValue\relax}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Styling of header and footer %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\LBHead}[1]{%
+\long\def\GFM@LB@Head{\spaceBeforeHead #1\relax\spaceAfterHead\mbox{}}%
+}%
+
+
+\newcommand{\LBFoot}[1]{%
+\long\def\GFM@LB@Foot{\spaceBeforeFoot #1\relax\spaceAfterFoot}%
+}%
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+%%% %%%
+%%% Automatic labels %%%
+%%% %%%
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\newif\ifGFM@LB@duplicate@label@warning%
+\GFM@LB@duplicate@label@warningtrue
+
+\def\LBduplicateLabelWarningOn{%
+ \GFM@LB@duplicate@label@warningtrue%
+}%
+
+\def\LBduplicateLabelWarningOff{%
+ \GFM@LB@duplicate@label@warningoff%
+}%
+
+\def\GFM@LB@iteratedLabel#1{%
+ \ifcsundef{c@#1counter}{%
+ \newcounter{#1counter}%
+ \setcounter{#1counter}{1}%
+ \label{#1}%
+ }{%
+ \label{#1_\alph{#1counter}}%
+ \stepcounter{#1counter}%
+ \ifGFM@LB@duplicate@label@warning%
+ \PackageWarning{liederbuch.sty - line 546}{You included [Songbook: \GFM@LB@songbook ][Number: \GFM@LB@number ][Variant: \GFM@LB@variant ] more than once. Is this intentional? You can switch this message off via \unexpanded{\LBduplicateLabelWarningOff}. Warning occured}%
+ \fi%
+ }%
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Environments for creating %%%
+%%% the songbooks (liederbuch) %%%
+%%% and the songs (lied) %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcounter{liedcounter}
+\setcounter{liedcounter}{0}
+
+%liederbuch environment
+\NewEnviron{liederbuch}[2][]{%
+\def\GFM@LB@songbook{#2}%
+%%lied environment %cslet
+\NewEnviron{lied}[3][]{%
+%##1=metadata ##2=variant ##3=nummer
+\def\GFM@LB@variant{##2}%
+\def\GFM@LB@number{##3}%
+\edef\GFM@LB@expandedName{GFM@LB@lied@\GFM@LB@songbook @\GFM@LB@variant @\GFM@LB@number}%
+\GFM@LB@unpackage{##1}%
+\GFM@LB@unpackage{#1}%
+\global\cslet{\GFM@LB@expandedName liedBody}\BODY%
+}%
+\BODY% Without this, the command sequences inside the environment won't be defined. That means, the whole content of the songbook (liederbuch) is thrown away.
+}
+
+
+%Forward onto environment
+\newcommand{\LBsong}[3]{%
+%#1=songbook #2=number #3=variant
+{%local
+\def\GFM@LB@songbook{#1}%
+\def\GFM@LB@number{#2}%
+\def\GFM@LB@variant{#3}%
+\edef\GFM@LB@expandedName{GFM@LB@lied@\GFM@LB@songbook @\GFM@LB@variant @\GFM@LB@number}%
+\setlength{\parindent}{0pt}%
+\setlength{\parskip}{0pt}%
+%
+%
+\NewDocumentCommand{\print}{O{\empty} m}{%
+ \expandafter\ifx\csname \GFM@LB@expandedName @##2\endcsname\relax%
+ \else%
+ ##1%
+ \fi%
+ \csname \GFM@LB@expandedName @##2\endcsname%
+ \mbox{}%
+}%
+%
+\expandafter\ifx\csname\GFM@LB@expandedName liedBody\endcsname\relax%
+ \PackageError{liederbuch}{You tried to call the song \GFM@LB@expandedName , but it doesn't exist.}{Verify, that the song exists. Check songbook, songnumber and variant.}%
+\else%
+ %
+ \GFM@LB@Head%
+ %
+ \xdef\@currentlabelname{%
+ \csname%
+ \GFM@LB@expandedName @title%
+ \endcsname%
+ }%
+ %
+ % (Hyper)ref functionality:
+ \refstepcounter{liedcounter}%
+% \let\GFM@currentlabel\@currentlabel%
+ %
+ % Labeling, so each song can be referred to
+ % by a well-known label:
+ \GFM@LB@iteratedLabel{%
+ LBsong%
+ _\GFM@LB@songbook %
+ _\GFM@LB@variant %
+ _\GFM@LB@number %
+ }%
+ %
+ % adds song to list of songs
+ \csname GFM@LB@addcontentsline\endcsname% For safety, in case an invalid style name was selected.
+ %
+ \setcounter{staveLineNumber}{1}%reset note line counter
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%
+ \csuse{\GFM@LB@expandedName liedBody}%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ \GFM@LB@Foot%
+ %
+ %
+\fi%
+%
+%reset page break points = no page breaks:
+\setcounter{GFM@staveLineNumberBreakPointA}{0}%
+\setcounter{GFM@staveLineNumberBreakPointB}{0}%
+\setcounter{GFM@staveLineNumberBreakPointC}{0}%
+\setcounter{GFM@staveLineNumberBreakPointD}{0}%
+\setcounter{GFM@staveLineNumberBreakPointE}{0}%
+\setcounter{GFM@staveLineNumberBreakPointF}{0}%
+\setcounter{GFM@stropheNumberBreakPointA}{0}%
+\setcounter{GFM@stropheNumberBreakPointB}{0}%
+\setcounter{GFM@stropheNumberBreakPointC}{0}%
+\setcounter{GFM@stropheNumberBreakPointD}{0}%
+\setcounter{GFM@stropheNumberBreakPointE}{0}%
+\setcounter{GFM@stropheNumberBreakPointF}{0}%
+%
+%
+}%local
+%\let\@currentlabel\GFM@currentlabel
+\penalty-3500%
+}%
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%%% %%%
+%%% Default values %%%
+%%% %%%
+%%%%%%%%%%%%%%%%%%%%%%
+
+
+%%% Default header and footer %%%
+\long\def\GFM@LB@Head{\spaceBeforeHead\mbox{}\print{title} \ \newline \print{composer}\spaceAfterHead }%Standardwerte
+\long\def\GFM@LB@Foot{\spaceBeforeFoot\mbox{}\print{source} \hfill \print{date}\spaceAfterFoot}%Standardwerte
+
+\setSpaceBeforeHeadValue{0pt plus 3pt}
+\setSpaceAfterHeadValue{0pt plus 3pt}
+\setSpaceBeforeNotesValue{0pt plus 1pt}
+\setSpaceAfterNotesValue{0pt plus 1pt}
+\setSpaceBeforeStropheValue{0pt plus 1pt}
+\setSpaceAfterStropheValue{0pt plus 3pt}
+\setSpaceBetweenSongLyricsValue{0pt plus 3pt}
+\setSpaceBeforeSongLyricsValue{0pt plus 1pt}
+\setSpaceAfterSongLyricsValue{3pt plus 3pt}
+\setSpaceBeforeFootValue{0pt plus 3pt}
+\setSpaceAfterFootValue{0pt plus 70pt}
+
+\setSpaceStropheIndentValue{0pt}
+\setSpaceHeadIndentValue{0pt}
+\setSpaceFootIndentValue{0pt}
+
+
+
+
+
+%%%%%%%%%%%%%%
+%%% Styles %%%
+%%%%%%%%%%%%%%
+
+%\moderncvstyle{casual}
+%\moderncvcolor{blue}
+%
+%\def\GFMliederbuchStyle#1#2{%
+%%openStyle
+%
+%
+%
+%
+%%test if
+%}
+%
+%\GFM@LB@color#1#2{%
+%%if #1 = '0' => ifndef \farbzähler => def + \fz=0 : \fz=0 : \fz++
+%
+%}
+
+%number of colors used in a style. It has to match the number defined in the color scheme
+\newcount\GFM@LB@numberOfColors
+\GFM@LB@numberOfColors=3
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%Altlasten
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
diff --git a/Master/texmf-dist/tex/latex/liederbuch/printliederbuch.sty b/Master/texmf-dist/tex/latex/liederbuch/printliederbuch.sty
new file mode 100644
index 00000000000..d5b37bfb568
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/liederbuch/printliederbuch.sty
@@ -0,0 +1,105 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Made by Gabriel Ruprecht %
+% %
+% This work is published under the %
+% LaTeX project public license 1.3 %
+% %
+% Package version 1.1.0 %
+% 2025-01-20 %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{printliederbuch}[version 1.1.0]
+
+\RequirePackage{liederbuch}
+\RequirePackage{hyperref}
+
+\listofsongsstyle{simple with number}
+
+\ExplSyntaxOn
+
+
+\newcommand{\printLiederbuch}[1]{
+% Select the highest toc level
+% depending on the document class
+\ifx\chapter\undefined
+\section{#1}
+\else
+\chapter{#1}
+\fi
+ \fbox
+ {
+ % Print songbook metadata
+ \begin{tabular}{l l}
+ Meta ~ data ~ name & Meta ~ data ~ value ~ \\
+ \hline
+ \tl_use:N \csuse{liederbuchMeta;#1}
+ \end{tabular}
+ }%fbox
+
+\csuse{liederbuchBody;#1}
+}
+
+
+\RenewEnviron{liederbuch}[2][]{
+ \gdef\equals{=}
+ \xdef\GFM@LB@songbook{#2}
+ \global\cslet{liederbuchBody;#2}\BODY
+ \tl_set:Nn \l_tmpa_tl { #1 }
+ \tl_replace_all:Nnn \l_tmpa_tl { & } { \\ }
+ \tl_replace_all:Nnn \l_tmpa_tl { = } { & }
+ \global\cslet{liederbuchMeta;#2}\l_tmpa_tl
+}
+
+
+\NewDocumentEnvironment{lied}{O{}mm +b}
+ {
+ %Meta data unboxing is necessary to fill the listofsongs with content:
+ \def\GFM@LB@number{#2}%
+ \def\GFM@LB@variant{#3}%
+ \edef\GFM@LB@expandedName{GFM@LB@lied@\GFM@LB@songbook @\GFM@LB@variant @\GFM@LB@number}%
+ \GFM@LB@unpackage{#1}%
+ \def\GFM@LB@number{#3}%
+ \def\GFM@LB@variant{#2}%
+
+ % Select the second highest toc level
+ % depending on the document class
+ \ifx\chapter\undefined
+ \subsection{#3\ --\ Variant:\ #2}
+ \else
+ \section{#3\ --\ Variant:\ #2}
+ \fi
+
+ % Print song metadata
+ \tl_set:Nn \l_tmpa_tl { #1 }
+ \tl_replace_all:Nnn \l_tmpa_tl { & } { \\ }
+ \tl_replace_all:Nnn \l_tmpa_tl { = } { & }
+ \fbox
+ {
+ \begin{tabular}{l l}
+ Meta ~ data ~ name & Meta ~ data ~ value ~ \\
+ \hline
+ \tl_use:N \l_tmpa_tl
+ \end{tabular}
+ }%fbox
+
+ % list of songs:
+ \xdef\@currentlabelname{\csname \GFM@LB@expandedName @title\endcsname}
+ \refstepcounter{liedcounter}
+ \addcontentsline{los}{song}{
+ \expandafter\ifx\csname \GFM@LB@expandedName @title\endcsname\relax
+ $<$ ~ No ~ title ~ $>$
+ \else
+ \csname \GFM@LB@expandedName @title\endcsname
+ \fi
+ }
+
+ % Actual content
+ \par#4\par
+}{}
+
+
+\ExplSyntaxOff
+
+
+
diff --git a/Master/texmf-dist/tex/latex/linearregression/linearregression.sty b/Master/texmf-dist/tex/latex/linearregression/linearregression.sty
index f9d86096202..081f8b79ea6 100644
--- a/Master/texmf-dist/tex/latex/linearregression/linearregression.sty
+++ b/Master/texmf-dist/tex/latex/linearregression/linearregression.sty
@@ -6,7 +6,7 @@
%%
%% linearregression.dtx (with options: `package')
%% ------------------------------------------------------------------------
-%% [2024-06-10]
+%% [2024-12-14]
%% This file is part of the (expanded) distribution of linearregression
%% The author of linearregression is Battista Benciolini
%% <benciolinibattista at gmail dot com >
@@ -18,7 +18,7 @@
%% the conditions of the LaTeX Project Public License.
%% (see: http://www.latex-project.org/lppl.txt)
%% ------------------------------------------------------------------------
-\ProvidesPackage{linearregression}[2024-06-10]
+\ProvidesPackage{linearregression}[2024-12-14]
\RequirePackage{pict2e}
\ExplSyntaxOn
\ior_new:N \g_BBLR_file_ior
@@ -58,24 +58,30 @@
\str_const:Nn \c_BBLR_comma_str {,}
\str_const:Nn \c_BBLR_plus_str {+}
\str_const:Nn \c_BBLR_minus_str {-}
-\bool_new:N \g_BBLR_plot_points_bool
-\bool_new:N \g_BBLR_plot_lineA_bool
-\bool_new:N \g_BBLR_plot_lineB_bool
-\bool_new:N \g_BBLR_plot_lineS_bool
+\bool_new:N \g_BBLR_plot_points_bool
+\bool_new:N \g_BBLR_plot_lineA_bool
+\bool_new:N \g_BBLR_plot_lineB_bool
+\bool_new:N \g_BBLR_plot_lineS_bool
+\bool_new:N \g_BBLR_two_scale_bool
+\bool_gset_false:N \g_BBLR_two_scale_bool
\fp_new:N \g_BBLR_base_fp
\fp_new:N \g_BBLR_height_fp
\fp_new:N \g_BBLR_Xbase_fp
\fp_new:N \g_BBLR_Xheight_fp
+\fp_new:N \g_BBLR_XXheight_fp
\fp_new:N \g_BBLR_Dabscissa_fp
\fp_new:N \g_BBLR_Dordinate_fp
\fp_new:N \g_BBLR_diameter_fp
\fp_gset:Nn \g_BBLR_diameter_fp{0.2}
\fp_new:N \g_BBLR_line_base_length_fp
\fp_new:N \g_BBLR_scale_factor_fp
-\str_new:N \c_BBLR_point_code_str
+\fp_new:N \g_BBLR_scale_factor_H_fp
+\str_new:N \g_BBLR_point_code_str
\str_new:N \g_BBLR_labelA_str
\str_new:N \g_BBLR_labelB_str
\str_new:N \g_BBLR_labelS_str
+\int_new:N \g_BBLR_num_dec_dig_int
+\int_gset:Nn \g_BBLR_num_dec_dig_int{4}
\NewDocumentCommand{\lrfilename}{m}{
\tl_gset:Nn \g_BBLR_file_name_tl {#1}
}
@@ -164,7 +170,7 @@
{\g_BBLR_abscissa_SecOrdMoment_fp - \g_BBLR_ordinate_SecOrdMoment_fp}
\fp_gset:Nn \g_BBLR_eig_diff_fp
{sqrt(\g_BBLR_diag_diff_fp * \g_BBLR_diag_diff_fp +
- 4 * \g_BBLR_mixed_SecOrdMoment_fp * \g_BBLR_mixed_SecOrdMoment_fp)}
+ 4 * \g_BBLR_mixed_SecOrdMoment_fp * \g_BBLR_mixed_SecOrdMoment_fp)}
\fp_gset:Nn \g_BBLR_cos_fp%
{sqrt((1 + \g_BBLR_diag_diff_fp / \g_BBLR_eig_diff_fp) / 2)}
\fp_gset:Nn \g_BBLR_sig_sin_fp {\fp_sign:n {\g_BBLR_mixed_SecOrdMoment_fp}}
@@ -173,46 +179,68 @@
\fp_gset:Nn \g_BBLR_slope_S_fp
{\g_BBLR_sin_fp / \g_BBLR_cos_fp }
\fp_gset:Nn \g_BBLR_intercept_S_fp
-{\g_BBLR_mean_ordinate_fp - \g_BBLR_slope_S_fp * \g_BBLR_mean_abscissa_fp}
+{\g_BBLR_mean_ordinate_fp -
+\g_BBLR_slope_S_fp * \g_BBLR_mean_abscissa_fp}
}
\NewDocumentCommand{\lrprint}{}{
\begin{center}
\begin{tabular}{| l | r |} \hline
- Data~File: & \g_BBLR_file_name_tl \\ \hline
- Number~of~points: & \int_use:N\g_BBLR_number_of_points_int \\ \hline
- Mean~values~of~the~coordinates: &%
- $\fp_use:N \g_BBLR_mean_abscissa_fp$ \\ &
- $\fp_use:N \g_BBLR_mean_ordinate_fp$ \\ \hline
- Minimum~values~of~the~coordinates: &%
- $\fp_use:N \g_BBLR_min_abscissa_fp$ \\ &
- $\fp_use:N \g_BBLR_min_ordinate_fp$ \\ \hline
- Maximum~values~of~the~coordinates: &%
- $\fp_use:N \g_BBLR_max_abscissa_fp$ \\ &
- $\fp_use:N \g_BBLR_max_ordinate_fp$ \\ \hline
+ Data~File & \g_BBLR_file_name_tl \\
+ \hline
+ Number~of~points & \int_use:N\g_BBLR_number_of_points_int \\
+ \hline
+ Mean~values~of~the~coordinates &%
+ $\BBLR_print_fp:N \g_BBLR_mean_abscissa_fp$ \\ &
+ $\BBLR_print_fp:N \g_BBLR_mean_ordinate_fp$ \\ \hline
+ Minimum~values~of~the~coordinates &%
+ $\BBLR_print_fp:N \g_BBLR_min_abscissa_fp$ \\ &
+ $\BBLR_print_fp:N \g_BBLR_min_ordinate_fp$ \\ \hline
+ Maximum~values~of~the~coordinates &%
+ $\BBLR_print_fp:N \g_BBLR_max_abscissa_fp$ \\ &
+ $\BBLR_print_fp:N \g_BBLR_max_ordinate_fp$ \\ \hline
{Second~order~moments}\phantom{xxxxxxxxx}{abscissa} &%
- $\fp_use:N \g_BBLR_abscissa_SecOrdMoment_fp$ \\
+ $\BBLR_print_fp:N \g_BBLR_abscissa_SecOrdMoment_fp$ \\
\multicolumn{1}{|r|}{mixed} & %
-$\fp_use:N \g_BBLR_mixed_SecOrdMoment_fp$ ~ \\
+$\BBLR_print_fp:N \g_BBLR_mixed_SecOrdMoment_fp$ ~ \\
\multicolumn{1}{|r|}{ordinate} & %
-$\fp_use:N \g_BBLR_ordinate_SecOrdMoment_fp$ \\ \hline
- Slope~and~intercept~of~optimal~line & $\fp_use:N \g_BBLR_slope_A_fp$ \\
- (estimated~with~errors~in~ordinate)&$\fp_use:N \g_BBLR_intercept_A_fp$\\ \hline
- Slope~and~intercept~of~optimal~line & $\fp_use:N \g_BBLR_slope_B_fp$ \\
- (estimated~with~errors~in~abscissa)&$\fp_use:N \g_BBLR_intercept_B_fp$\\ \hline
- Components~of~unit~vector~along~the~line & $\fp_use:N \g_BBLR_cos_fp$ \\
- & $\fp_use:N \g_BBLR_sin_fp$ \\
- Slope~and~intercept~of~optimal~line &$\fp_use:N \g_BBLR_slope_S_fp$ \\
+$\BBLR_print_fp:N \g_BBLR_ordinate_SecOrdMoment_fp$ \\ \hline
+ Slope~and~intercept~of~optimal~line & $\BBLR_print_fp:N
+ \g_BBLR_slope_A_fp$ \\
+ (estimated~with~errors~in~ordinate)&$\BBLR_print_fp:N
+ \g_BBLR_intercept_A_fp$\\ \hline
+ Slope~and~intercept~of~optimal~line & $\BBLR_print_fp:N
+ \g_BBLR_slope_B_fp$ \\
+ (estimated~with~errors~in~abscissa)&$\BBLR_print_fp:N
+ \g_BBLR_intercept_B_fp$\\ \hline
+ Unit~vector~along~the~line & $\BBLR_print_fp:N
+ \g_BBLR_cos_fp$ \\
+ & $\BBLR_print_fp:N \g_BBLR_sin_fp$ \\
+ Slope~and~intercept~of~optimal~line &$\BBLR_print_fp:N
+ \g_BBLR_slope_S_fp$ \\
(estimated~with~symmetric~regression) &
- $\fp_use:N \g_BBLR_intercept_S_fp$\\ \hline
+ $\BBLR_print_fp:N \g_BBLR_intercept_S_fp$\\ \hline
\end{tabular}
\end{center}
}
+\NewDocumentCommand{\lrnumdigit}{m}{
+\int_gset:Nn \g_BBLR_num_dec_dig_int{#1}
+}
\NewDocumentCommand{\lrplot}{mmmmm}{%
\fp_gset:Nn \g_BBLR_base_fp {#1}
\fp_gset:Nn \g_BBLR_Xbase_fp {\g_BBLR_base_fp - 0.6}
-\fp_gset:Nn \g_BBLR_scale_factor_fp{\g_BBLR_Xbase_fp / \g_BBLR_Dabscissa_fp}
-\fp_gset:Nn \g_BBLR_Xheight_fp {\g_BBLR_Dordinate_fp * \g_BBLR_scale_factor_fp}
+\fp_gset:Nn \g_BBLR_scale_factor_fp{\g_BBLR_Xbase_fp /
+\g_BBLR_Dabscissa_fp}
+\bool_if:NTF \g_BBLR_two_scale_bool
+{\fp_gset:Nn \g_BBLR_height_fp {\g_BBLR_XXheight_fp}
+\fp_gset:Nn \g_BBLR_Xheight_fp {\g_BBLR_height_fp - 0.6}
+\fp_gset:Nn \g_BBLR_scale_factor_H_fp{\g_BBLR_Xheight_fp /
+\g_BBLR_Dordinate_fp}
+}
+{\fp_gset:Nn \g_BBLR_Xheight_fp {\g_BBLR_Dordinate_fp *
+\g_BBLR_scale_factor_fp}
\fp_gset:Nn \g_BBLR_height_fp {\g_BBLR_Xheight_fp + 0.6}
+\fp_gset:Nn \g_BBLR_scale_factor_H_fp {\g_BBLR_scale_factor_fp }
+}
\str_gset:Nn \g_BBLR_point_code_str {#2}
\str_gset:Nn \g_BBLR_labelA_str {#3}
\str_gset:Nn \g_BBLR_labelB_str {#4}
@@ -238,13 +266,22 @@ $\fp_use:N \g_BBLR_ordinate_SecOrdMoment_fp$ \\ \hline
\thicklines
\bool_if:nT {\g_BBLR_plot_points_bool}{\BBLR_plot_points:}
\bool_if:nT {\g_BBLR_plot_lineA_bool}{
-\BBLR_draw_line:NNN \g_BBLR_slope_A_fp\g_BBLR_intercept_A_fp\g_BBLR_labelA_str}
+\BBLR_draw_line:NNN \g_BBLR_slope_A_fp\g_BBLR_intercept_A_fp
+\g_BBLR_labelA_str}
\bool_if:nT {\g_BBLR_plot_lineB_bool}{
-\BBLR_draw_line:NNN \g_BBLR_slope_B_fp\g_BBLR_intercept_B_fp\g_BBLR_labelB_str}
+\BBLR_draw_line:NNN \g_BBLR_slope_B_fp\g_BBLR_intercept_B_fp
+\g_BBLR_labelB_str}
\bool_if:nT {\g_BBLR_plot_lineS_bool}{
-\BBLR_draw_line:NNN \g_BBLR_slope_S_fp\g_BBLR_intercept_S_fp\g_BBLR_labelS_str}
+\BBLR_draw_line:NNN \g_BBLR_slope_S_fp\g_BBLR_intercept_S_fp
+\g_BBLR_labelS_str}
\end{picture}
}%
+\NewDocumentCommand{\lrplotparameters}{mm}{
+\fp_gset:Nn \g_BBLR_diameter_fp{#1}
+\fp_gset:Nn \g_BBLR_XXheight_fp{#2}
+\bool_gset:Nn \g_BBLR_two_scale_bool
+{\fp_compare_p:nNn {\g_BBLR_XXheight_fp}>{0.}}
+}
\cs_new_protected:Nn \BBLR_decode_data: {
\tl_trim_spaces:N \g_BBLR_file_line_tl
\int_gzero:N \g_tmpa_int
@@ -283,7 +320,7 @@ $\fp_use:N \g_BBLR_ordinate_SecOrdMoment_fp$ \\ \hline
\fp_gset:Nn \g_tmpa_fp{(\g_BBLR_abscissa_fp-\g_BBLR_min_abscissa_fp)*
\g_BBLR_scale_factor_fp}
\fp_gset:Nn \g_tmpb_fp{(\g_BBLR_ordinate_fp-\g_BBLR_min_ordinate_fp)*
- \g_BBLR_scale_factor_fp}
+ \g_BBLR_scale_factor_H_fp}
\put(\fp_use:N\g_tmpa_fp, \fp_use:N\g_tmpb_fp){
{\circle*{\fp_use:N\g_BBLR_diameter_fp}}}
}
@@ -311,11 +348,13 @@ $\fp_use:N \g_BBLR_ordinate_SecOrdMoment_fp$ \\ \hline
\fp_gset:Nn \fp_tmpa_fp {(\g_BBLR_min_draw_abscissa_fp -
\g_BBLR_min_abscissa_fp)* \g_BBLR_scale_factor_fp}
\fp_gset:Nn \fp_tmpb_fp {(#1 * \g_BBLR_min_draw_abscissa_fp + #2 -
-\g_BBLR_min_ordinate_fp)* \g_BBLR_scale_factor_fp}
+\g_BBLR_min_ordinate_fp)* \g_BBLR_scale_factor_H_fp}
\fp_gset:Nn \fp_BBLR_line_base_length_fp{(\g_BBLR_max_draw_abscissa_fp -
\g_BBLR_min_draw_abscissa_fp) * \g_BBLR_scale_factor_fp}
+\fp_gset:Nn \fp_scaled_slope_fp
+{(#1 * \g_BBLR_scale_factor_H_fp / \g_BBLR_scale_factor_fp)}
\put(\fp_use:N\fp_tmpa_fp, \fp_use:N\fp_tmpb_fp){
-\line(1.,\fp_use:N #1){\fp_use:N\fp_BBLR_line_base_length_fp}}
+\line(1.,\fp_use:N\fp_scaled_slope_fp){\fp_use:N\fp_BBLR_line_base_length_fp}}
\bool_if:nF {\str_if_eq_p:NN #3 \c_BBLR_plus_str}{
\fp_gset:Nn \fp_tmpa_fp
{0.08 * \g_BBLR_min_draw_abscissa_fp + 0.92 * \g_BBLR_max_draw_abscissa_fp}
@@ -329,6 +368,9 @@ $\fp_use:N \g_BBLR_ordinate_SecOrdMoment_fp$ \\ \hline
\put(\fp_use:N\fp_tmpa_fp, \fp_use:N\fp_tmpb_fp){#3}
}
}
+\cs_new_protected:Nn \BBLR_print_fp:N {%
+{\fp_eval:n{trunc(#1 ,\g_BBLR_num_dec_dig_int)}}
+}
\ExplSyntaxOff
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/lineno/edtable.sty b/Master/texmf-dist/tex/latex/lineno/edtable.sty
index e7865229b2a..a3f07625d72 100644
--- a/Master/texmf-dist/tex/latex/lineno/edtable.sty
+++ b/Master/texmf-dist/tex/latex/lineno/edtable.sty
@@ -23,7 +23,7 @@
%
% The package is made for the background of the LaTeX2e macro
% package and enhances functionality of the following packages:
-% 1.) Stephan I. B"ottcher's `lineno.sty' for printing line
+% 1.) Stephan I. Böttcher's `lineno.sty' for printing line
% numbers in the margin and a \label version \linelabel
% relating labels to line numbers;
% 2.) our `ednotes.sty' for indicating variant readings and
@@ -178,7 +178,7 @@
%
%% * Acknowledgements: *
%
-% Stephan I. B"ottcher told us how to do it in extensive discussion
+% Stephan I. Böttcher told us how to do it in extensive discussion
% and by providing some first code lines. We changed these essentially
% in some respects, but kept his general ideas and some parts of his
% macros, the latter even without knowing what we are doing.
diff --git a/Master/texmf-dist/tex/latex/lineno/fnlineno.sty b/Master/texmf-dist/tex/latex/lineno/fnlineno.sty
index fc4dee61524..9868963aba8 100644
--- a/Master/texmf-dist/tex/latex/lineno/fnlineno.sty
+++ b/Master/texmf-dist/tex/latex/lineno/fnlineno.sty
@@ -20,7 +20,7 @@
%% by the Deutsche Forschungsgemeinschaft (DFG),
%% organized %% 2010/12/18 TODO!?
%% by Prof.~Dr.\ Dr.\ Christian Tapp
-%% at Ruhr-Universit\"at Bochum, Germany.}
+%% at Ruhr-Universität Bochum, Germany.}
%% %% 2010/12/18:
%% Christian also has constructed some critical tests.
%%
diff --git a/Master/texmf-dist/tex/latex/lineno/lineno.sty b/Master/texmf-dist/tex/latex/lineno/lineno.sty
index 440cd7bf868..c814a1048bc 100644
--- a/Master/texmf-dist/tex/latex/lineno/lineno.sty
+++ b/Master/texmf-dist/tex/latex/lineno/lineno.sty
@@ -3,11 +3,11 @@
Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
\fi
-\def\fileversion{v5.3} \def\filedate{2023/05/20} %VERSION
+\def\fileversion{v5.4} \def\filedate{2025/01/29} %VERSION
%%% Copyright 1995--2003 Stephan I. Böttcher
%%% Copyright 2002--2005 Uwe Lück for versions 4.x and code from former Ednotes
-%%% Copyright 2021--2023 Karl Wette for versions 5.x
+%%% Copyright 2021--2025 Karl Wette for versions 5.x
%%%
%%% This file can be redistributed and/or modified under
%%% the terms of the LaTeX Project Public License; either
@@ -26,8 +26,8 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
% A \LaTeX\ package to attach
% \\ line numbers to paragraphs
% \unskip}\author{%
-% Stephan I. B\"ottcher
-% \\ Uwe L\"uck
+% Stephan I. Böttcher
+% \\ Uwe Lück
% \\ Karl Wette
% \unskip}\date{%
% \url{https://github.com/latex-lineno/lineno}
@@ -41,8 +41,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
%% %% Beware math!? (/New v4.00)
% \def~{\verb~}
% \let\lessthan<
-% \catcode`\<\active
-% \def<#1>{$\langle${\itshape#1}\/$\rangle$}
+% \def\angle#1{$\langle${\itshape#1}\/$\rangle$}
% \catcode`\|\active
%% (New v4.1: \tt star; in box anyway.)
% \def|#1{\ttfamily\string#1}
@@ -130,10 +129,10 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
%
% ~lineno.sty~ has been maintained by Stephan until version_v3.14.
% From version_v4.00 onwards, maintenance is shifting towards
-% Uwe L\"uck (UL), who is the author of v4\dots code and of v4\dots
+% Uwe Lück (UL), who is the author of v4\dots code and of v4\dots
% changes in documentation. This came about as follows.
%
-% Since late 2002, Christian Tapp and Uwe L\"uck have employed
+% Since late 2002, Christian Tapp and Uwe Lück have employed
% ~lineno.sty~ for their ~ednotes.sty~, a package supporting
% critical editions, while you find ~ednotes.sty~ and surrounding files in
% CTAN folder \path{macros/latex/contrib/ednotes}.
@@ -289,7 +288,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
%% v3.08b 2002/01/27 SiB: enquotation typo fix
%% v3.09 2003/01/14 SIB: hyperref detection fix
%% v3.10 2003/04/15 FMi: \MakeLineNo fix for deep boxes
-%% v3.10a 2003/11/12 Uwe Lck: \lineref typo fix
+%% v3.10a 2003/11/12 Uwe Lück: \lineref typo fix
%% v4.00 2004/09/02 UL: included linenox0, linenox1, lnopatch code with
%% documentation, usually indicated by `New v4.00';
%% discussions of old code, indicated by `UL';
@@ -394,6 +393,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
%% Add package options `sep' and `width' for
%% setting line number separation and width.
%% Add `twocolumn` support for `bframe` env.
+%% v5.4 2025/01/29 KW: Option to allow ~\linelabel~ with ~\nolinenumbers~.
%%
%% Acknowledgements:
%% v3.06: Donald Arseneau, pointed to mparhack.sty.
@@ -1051,7 +1051,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
% ~\@par~ and ~\par~ are only touched, when they are ~\let~
% to ~\@@@par~/~\linenumberpar~. The line number may be
% reset to 1 with the star-form, or set by an optional
-% argument ~[~<number>~]~.
+% argument ~[~\angle{number}~]~.
%
% (New v4.00) We add ~\ifLineNumbers~ etc.\ since
% a number of our new adjustments need to know whether
@@ -1294,7 +1294,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
% % numbered float was considered to be a marginpar.
% %
% % The float box number ~\@currbox~ is used to transfer the
-% % label name in a macro called ~\@LNL@~<box-number>.
+% % label name in a macro called ~\@LNL@~\angle{box-number}.
% \end{verbatim}
% \end{old}
% A ~\newlabel~ is written to the aux-file. The reference
@@ -1366,8 +1366,8 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
% \subsection{%
% The \scs{linelabel} command
% \unskip}\label{ss:LL}
-% To refer to a place in line ~\ref{~<foo>~}~ at page
-% ~\pageref{~<foo>~}~ you place a ~\linelabel{~<foo>~}~ at
+% To refer to a place in line ~\ref{~\angle{foo}~}~ at page
+% ~\pageref{~\angle{foo}~}~ you place a ~\linelabel{~\angle{foo}~}~ at
% that place.
%
% \linelabel{demo}
@@ -1719,7 +1719,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
% Each numbered line gives a line to the aux file
% \begin{verse}
-% ~\@LN{~<line>~}{~<page>~}~
+% ~\@LN{~\angle{line}~}{~\angle{page}~}~
% \end{verse}
% very similar to the ~\newlabel~ business, except that we need
% an arabic representation of the page number, not what
@@ -1778,7 +1778,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
% it for list macros anyway.
% (/UL) (/New v4.00)
%
-% From the aux-file we get one macro ~\LN@P~<page> for each
+% From the aux-file we get one macro ~\LN@P~\angle{page} for each
% page with line numbers on it. This macro calls four other
% macros with one argument each. These macros are
% dynamically defined to do tests and actions, to find out
@@ -1806,10 +1806,10 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
% Now, this is the tricky part. First of all, the whole
% definition of ~\@LN~ is grouped, to avoid accumulation
-% on the save stack. Somehow ~\csname~<cs>~\endcsname~ pushes
-% an entry, which stays after an ~\xdef~ to that <cs>.
+% on the save stack. Somehow ~\csname~\angle{cs}~\endcsname~ pushes
+% an entry, which stays after an ~\xdef~ to that \angle{cs}.
%
-% If ~\LN@P~<page> is undefined, initialize it with the
+% If ~\LN@P~\angle{page} is undefined, initialize it with the
% current page and line number, with the
% \emph{pointer-to-the-next-page} pointing to nothing. And
% the macro for the previous page will be redefined to point
@@ -1839,7 +1839,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
% The previous page macro gets its pointer to the
% current one, replacing the ~\relax~ with the cs-token
-% ~\LN@P~<page>.
+% ~\LN@P~\angle{page}.
\def\@@@LN#1#2{{\def\nextLN##1{\noexpand\nextLN\noexpand#2}%
\xdef#1{#1}}}
@@ -2215,7 +2215,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
%%
% No counter, little values allowed only---OK?---(UL)
% The change is local---OK? The good thing is that
-% ~\global\firstlinenumber{~<number>~}~ works. Moreover,
+% ~\global\firstlinenumber{~\angle{number}~}~ works. Moreover,
% ~\modulolinenumbers~ acts locally as well. (/UL)
%
% (New v4.31)
@@ -2596,6 +2596,13 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
}%
}%
}
+%%
+% (New 5.4) Option to allow ~\linelabel~ with ~\nolinenumbers~.
+
+\DeclareVoidOption{nolinelabelerror}{\def\@LN@LLerror{\relax}}
+
+% (/New 5.4)
+%%
% (/New v4.3)
%
@@ -2781,16 +2788,16 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
%
% To refer to a pagewise line number with offset:
% \begin{quote}
-% ~\linerefp[~<OFFSET>~]{~<LABEL>~}~
+% ~\linerefp[~\angle{OFFSET}~]{~\angle{LABEL}~}~
% \end{quote}
% To refer to a running line number with offset:
% \begin{quote}
-% ~\linerefr[~<OFFSET>~]{~<LABEL>~}~
+% ~\linerefr[~\angle{OFFSET}~]{~\angle{LABEL}~}~
% \end{quote}
% To refer to a line number labeled in the same mode as currently
% selected:
% \begin{quote}
-% ~\lineref[~<OFFSET>~]{~<LABEL>~}~
+% ~\lineref[~\angle{OFFSET}~]{~\angle{LABEL}~}~
% \end{quote}
\newcommand\lineref{%
@@ -2938,67 +2945,67 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
%
\ifdefined\AddToHook
- \def\linenoamsmath@patches#1{\AddToHook{package/amsmath/after}{#1}}
+ \def\@LN@amsmath@patches#1{\AddToHook{package/amsmath/after}{#1}}
\else
\ifdefined\endgather
- \def\linenoamsmath@patches#1{#1}
+ \def\@LN@amsmath@patches#1{#1}
\else
\PackageWarningNoLine{lineno}%
{`amsmath' must be loaded before `lineno' for patches to be applied}
- \def\linenoamsmath@patches#1{\relax}
+ \def\@LN@amsmath@patches#1{\relax}
\fi
\fi
-\linenoamsmath@patches{
- \newcommand*\linenoamsmath@patch[1]{%
+\@LN@amsmath@patches{
+ \newcommand*\@LN@amsmath@patch[1]{%
\cspreto{#1}{\linenomath}%
\cspreto{#1*}{\linenomath}%
\csappto{end#1}{\endlinenomath}%
\csappto{end#1*}{\endlinenomath}%
}
- \newcount\linenoamsmath@ams@eqpen
+ \newcount\@LN@amsmath@ams@eqpen
\cspreto{math@cr@}{%
%%% Uncommenting the following 2 lines restores the line number on a line
%%% ended with \\*, by making \\* act just like \\. This is probably
%%% undesirable, however, so these lines are disabled.
% \global\@eqpen%
% \ifnum\dspbrk@lvl <\z@ \interdisplaylinepenalty \else -\@getpen\dspbrk@lvl \fi%
- \advance\@eqpen\linenoamsmath@ams@eqpen\relax%
+ \advance\@eqpen\@LN@amsmath@ams@eqpen\relax%
}
- \newcommand*\linenoamsmath@patch@ams[1]{%
+ \newcommand*\@LN@amsmath@patch@ams[1]{%
\cspreto{#1}{%
\linenomath%
\postdisplaypenalty=0%
- \global\linenoamsmath@ams@eqpen\interdisplaylinepenalty%
+ \global\@LN@amsmath@ams@eqpen\interdisplaylinepenalty%
}%
\cspreto{#1*}{%
\linenomath%
\postdisplaypenalty=0%
- \global\linenoamsmath@ams@eqpen\interdisplaylinepenalty%
+ \global\@LN@amsmath@ams@eqpen\interdisplaylinepenalty%
}%
\csappto{end#1}{%
- \global\linenoamsmath@ams@eqpen\z@%
+ \global\@LN@amsmath@ams@eqpen\z@%
\endlinenomath%
}%
\csappto{end#1*}{%
- \global\linenoamsmath@ams@eqpen\z@%
+ \global\@LN@amsmath@ams@eqpen\z@%
\endlinenomath%
}%
}
- \linenoamsmath@patch{equation}
- \linenoamsmath@patch@ams{multline}
- \linenoamsmath@patch@ams{gather}
- \linenoamsmath@patch@ams{align}
- \linenoamsmath@patch@ams{alignat}
- \linenoamsmath@patch@ams{flalign}
- \let\linenoamsmath@ams@mmeasure\mmeasure@
+ \@LN@amsmath@patch{equation}
+ \@LN@amsmath@patch@ams{multline}
+ \@LN@amsmath@patch@ams{gather}
+ \@LN@amsmath@patch@ams{align}
+ \@LN@amsmath@patch@ams{alignat}
+ \@LN@amsmath@patch@ams{flalign}
+ \let\@LN@amsmath@ams@mmeasure\mmeasure@
\def\mmeasure@#1{%
- \global\linenoamsmath@ams@eqpen\z@%
+ \global\@LN@amsmath@ams@eqpen\z@%
\begingroup%
\interdisplaylinepenalty=0%
- \linenoamsmath@ams@mmeasure{#1\\}%
+ \@LN@amsmath@ams@mmeasure{#1\\}%
\endgroup%
- \global\linenoamsmath@ams@eqpen\interdisplaylinepenalty%
+ \global\@LN@amsmath@ams@eqpen\interdisplaylinepenalty%
}
}
@@ -3260,10 +3267,10 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
% \item
% [|\linenumbers*] \ \par$\qquad$
% and reset the line number to 1.
-% \def\NL{<number>]}\item
+% \def\NL{\angle{number}]}\item
%% %% Boldface italic occurs here, which is evil. (UL)
% [|\linenumbers[\NL] \ \par$\qquad$
-% and start with <number>.
+% and start with \angle{number}.
% \item
% [|\nolinenumbers] \ \par
% Turn off line numbering.
@@ -3283,7 +3290,7 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
% \item
% [|\resetlinenumber[\NL] \ \par
% Reset ~[~Set~]~ the line number to 1
-% ~[~<number>~]~.
+% ~[~\angle{number}~]~.
% \item
% [|\setrunninglinenumbers] \ \par
% Switch to ~running~ line number mode. Do \emph{not}
@@ -3317,9 +3324,9 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
% \item
% [|\modulolinenumbers[\NL] \ \par
% Give a number only to lines which are multiples of
-% ~[~<number>~]~. If <number> is not specified, the
+% ~[~\angle{number}~]~. If \angle{number} is not specified, the
% current value in the counter ~linenumbermodulo~ is
-% retained. <number>=1 turns this off without changing
+% retained. \angle{number}=1 turns this off without changing
% ~linenumbermodulo~. The counter is initialized to 5.
%%
%% %% TODO v4.4+: `counter', he says. Cf._above.
@@ -3342,13 +3349,13 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
%% (New v4.00)
% \item
% [|\firstlinenumber] \ \par
-% ~\firstlinenumber{~<filino>~}~ brings about that
-% (after it) line numbers less than <filino> do
+% ~\firstlinenumber{~\angle{filino}~}~ brings about that
+% (after it) line numbers less than \angle{filino} do
% \emph{not} appear in the margin. Moreover, with
-% ~\modulolinenumbers[~<number>~]~, just the line
-% numbers which are <filino> plus a multiple of
-% <number> are printed.---If you had
-% ~\firstlinenumber{~<pos>~}~ with some $\mbox{<pos>}>0$
+% ~\modulolinenumbers[~\angle{number}~]~, just the line
+% numbers which are \angle{filino} plus a multiple of
+% \angle{number} are printed.---If you had
+% ~\firstlinenumber{~\angle{pos}~}~ with some $\mbox{\angle{pos}}>0$
% and want to switch to printing multiples of, e.g.,
% 4, you best do ~\modulolinenumbers[4]~ and
% ~\firstlinenumber{0}~. (See subsection_\ref{ss:Mod}
@@ -3367,10 +3374,10 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
% ~{linenomath*}~ environment. This is the default.
% \item
% [|\linelabel] \ \par
-% Set a ~\linelabel{~<foo>~}~ to the line number where
+% Set a ~\linelabel{~\angle{foo}~}~ to the line number where
% this commands is in. Refer to it with the \LaTeX\
-% referencing commands ~\ref{~<foo>~}~ and
-% ~\pageref{~<foo>~}~.
+% referencing commands ~\ref{~\angle{foo}~}~ and
+% ~\pageref{~\angle{foo}~}~.
% \end{description}
% The commands can be used globally, locally within groups
% or as environments. It is important to know that they
@@ -3381,29 +3388,29 @@ Macro file lineno.sty for LaTeX: attach line numbers, refer to them.
%%
%% %% TODO: sure? ~\modulo...~, e.g.? well, in a sense ...
%%
-% ~\end{~<mode>~linenumbers}~ commands provide a ~\par~.
+% ~\end{~\angle{mode}~linenumbers}~ commands provide a ~\par~.
% Examples:
% \begin{verse}
-% ~{\linenumbers~ <text> ~\par}~ \\
+% ~{\linenumbers~ \angle{text} ~\par}~ \\
% \ \\
% ~\begin{linenumbers}~ \\
-% <text> \\
+% \angle{text} \\
% ~\end{linenumbers}~ \\
% \ \\
-% <paragraph> ~{\linenumbers\par}~ \\
+% \angle{paragraph} ~{\linenumbers\par}~ \\
% \ \\
% ~\linenumbers~ \\
-% <text> ~\par~ \\
+% \angle{text} ~\par~ \\
% ~\nolinenumbers~ \\
% \ \\
% ~\linenumbers~ \\
-% <paragraph> ~{\nolinenumbers\par}~ \\
+% \angle{paragraph} ~{\nolinenumbers\par}~ \\
% \end{verse}
% (New v4.00)
-% However, the examples containing <paragraph> show what you
+% However, the examples containing \angle{paragraph} show what you
% should \emph{not} do, at least if you use ~\pagebreak~,
% ~\nopagebreak~, ~\vspace~, ~\\*~ or
-% ~\\[~<space>~]~---cf._section_\ref{s:MVadj}.
+% ~\\[~\angle{space}~]~---cf._section_\ref{s:MVadj}.
%
% The same care should be applied to the ``wizard'' devices
% ~\ifLineNumbers~ (subsection_\ref{ss:OnOff}) and
diff --git a/Master/texmf-dist/tex/latex/lisp-on-tex/lisp-mod-l3regex.sty b/Master/texmf-dist/tex/latex/lisp-on-tex/lisp-mod-l3regex.sty
index 03b278d3865..53637d55b43 100644
--- a/Master/texmf-dist/tex/latex/lisp-on-tex/lisp-mod-l3regex.sty
+++ b/Master/texmf-dist/tex/latex/lisp-on-tex/lisp-mod-l3regex.sty
@@ -1,5 +1,5 @@
% wrapper for l3regex
-\RequirePackage{l3regex}
+\RequirePackage{expl3}
% \regex_match:nnTF
\@lisp@env@add@global\regMatch{\@tlabel@func{\@lisp@func@check@args{2}{\@lisp@regex@match}}}
diff --git a/Master/texmf-dist/tex/latex/lisp-on-tex/lisp-string.sty b/Master/texmf-dist/tex/latex/lisp-on-tex/lisp-string.sty
index 9c0c011a2c3..3d6f79d1c9a 100644
--- a/Master/texmf-dist/tex/latex/lisp-on-tex/lisp-string.sty
+++ b/Master/texmf-dist/tex/latex/lisp-on-tex/lisp-string.sty
@@ -23,6 +23,12 @@
\@lisp@env@add@global\intTOstring{\@tlabel@func{\@lisp@func@check@args{1}{\@conv@intTOstr}}}
\def\@conv@intTOstr#1\@tlabel@int#2{\gdef#1{\@tlabel@string{#2}}}
+%% STRING2INT : string -> int
+%% (\stringTOint 'i') -> i
+
+\@lisp@env@add@global\stringTOint{\@tlabel@func{\@lisp@func@check@args{1}{\@conv@strTOint}}}
+\def\@conv@strTOint#1\@tlabel@string#2{\gdef#1{\@tlabel@int{#2}}}
+
%% IMMEDIATEWRITE : () -> ()
%% It outputs the output buffer immediately.
%% It cause error if the buffer is incomplete.
diff --git a/Master/texmf-dist/tex/latex/listings/listings-acm.prf b/Master/texmf-dist/tex/latex/listings/listings-acm.prf
index dc28dfa2298..1c37f1cecf7 100644
--- a/Master/texmf-dist/tex/latex/listings/listings-acm.prf
+++ b/Master/texmf-dist/tex/latex/listings/listings-acm.prf
@@ -22,7 +22,7 @@
%% programming languages to Jobst Hoffmann at <j.hoffmann@fh-aachen.de>.
%%
\ProvidesFile{listings-acm.prf}
- [2024/05/25 1.10b listings language file]
+ [2024/09/23 1.10c listings language file]
\usepackage[rgb, x11names]{xcolor}
\definecolor{Comments}{rgb}{0.00,0.50,0.00}
diff --git a/Master/texmf-dist/tex/latex/listings/listings-bash.prf b/Master/texmf-dist/tex/latex/listings/listings-bash.prf
index f79b2e4152a..d6a9673d240 100644
--- a/Master/texmf-dist/tex/latex/listings/listings-bash.prf
+++ b/Master/texmf-dist/tex/latex/listings/listings-bash.prf
@@ -22,7 +22,7 @@
%% programming languages to Jobst Hoffmann at <j.hoffmann@fh-aachen.de>.
%%
\ProvidesFile{listings-bash.prf}
- [2024/05/25 1.10b listings language file]
+ [2024/09/23 1.10c listings language file]
\usepackage[rgb, x11names]{xcolor}
\lstset{%
diff --git a/Master/texmf-dist/tex/latex/listings/listings-fortran.prf b/Master/texmf-dist/tex/latex/listings/listings-fortran.prf
index 52a2a0db65e..92e34d76107 100644
--- a/Master/texmf-dist/tex/latex/listings/listings-fortran.prf
+++ b/Master/texmf-dist/tex/latex/listings/listings-fortran.prf
@@ -22,7 +22,7 @@
%% programming languages to Jobst Hoffmann at <j.hoffmann@fh-aachen.de>.
%%
\ProvidesFile{listings-fortran.prf}
- [2024/05/25 1.10b listings language file]
+ [2024/09/23 1.10c listings language file]
\usepackage[rgb, x11names]{xcolor}
\lstset{%
diff --git a/Master/texmf-dist/tex/latex/listings/listings-hansl.prf b/Master/texmf-dist/tex/latex/listings/listings-hansl.prf
index f5e3d6bb9d6..f581320a43a 100644
--- a/Master/texmf-dist/tex/latex/listings/listings-hansl.prf
+++ b/Master/texmf-dist/tex/latex/listings/listings-hansl.prf
@@ -22,7 +22,7 @@
%% programming languages to Jobst Hoffmann at <j.hoffmann@fh-aachen.de>.
%%
\ProvidesFile{listings-hansl.prf}
- [2024/05/25 1.10b listings language file]
+ [2024/09/23 1.10c listings language file]
\usepackage[rgb, x11names]{xcolor}
\lstdefinestyle{hanslbw}{%
diff --git a/Master/texmf-dist/tex/latex/listings/listings-lua.prf b/Master/texmf-dist/tex/latex/listings/listings-lua.prf
index 7fdeea59d81..8ab08205f85 100644
--- a/Master/texmf-dist/tex/latex/listings/listings-lua.prf
+++ b/Master/texmf-dist/tex/latex/listings/listings-lua.prf
@@ -22,7 +22,7 @@
%% programming languages to Jobst Hoffmann at <j.hoffmann@fh-aachen.de>.
%%
\ProvidesFile{listings-lua.prf}
- [2024/05/25 1.10b listings language file]
+ [2024/09/23 1.10c listings language file]
\usepackage[rgb, x11names]{xcolor}
\lstdefinestyle{Lua}{%
language=[5.2]Lua,
diff --git a/Master/texmf-dist/tex/latex/listings/listings-python.prf b/Master/texmf-dist/tex/latex/listings/listings-python.prf
index 3d8ef9a3c9f..dbee3a2fe2e 100644
--- a/Master/texmf-dist/tex/latex/listings/listings-python.prf
+++ b/Master/texmf-dist/tex/latex/listings/listings-python.prf
@@ -22,7 +22,7 @@
%% programming languages to Jobst Hoffmann at <j.hoffmann@fh-aachen.de>.
%%
\ProvidesFile{listings-python.prf}
- [2024/05/25 1.10b listings language file]
+ [2024/09/23 1.10c listings language file]
\usepackage{xcolor}
\usepackage{textcomp}
diff --git a/Master/texmf-dist/tex/latex/listings/listings-rexx.prf b/Master/texmf-dist/tex/latex/listings/listings-rexx.prf
index 0548072e97e..1562ab9f39c 100644
--- a/Master/texmf-dist/tex/latex/listings/listings-rexx.prf
+++ b/Master/texmf-dist/tex/latex/listings/listings-rexx.prf
@@ -22,7 +22,7 @@
%% programming languages to Jobst Hoffmann at <j.hoffmann@fh-aachen.de>.
%%
\ProvidesFile{listings-rexx.prf}
- [2024/05/25 1.10b listings language file]
+ [2024/09/23 1.10c listings language file]
\usepackage{xcolor} % needed for colors like yellow!10
\usepackage{textcomp} % needed for upquote
diff --git a/Master/texmf-dist/tex/latex/listings/listings.cfg b/Master/texmf-dist/tex/latex/listings/listings.cfg
index 3024c431afa..2928f82c6e8 100644
--- a/Master/texmf-dist/tex/latex/listings/listings.cfg
+++ b/Master/texmf-dist/tex/latex/listings/listings.cfg
@@ -21,7 +21,7 @@
%% Send comments and ideas on the package, error reports and additional
%% programming languages to Jobst Hoffmann at <j.hoffmann@fh-aachen.de>.
%%
-\ProvidesFile{listings.cfg}[2024/05/25 1.10b listings configuration]
+\ProvidesFile{listings.cfg}[2024/09/23 1.10c listings configuration]
\def\lstlanguagefiles
{lstlang0.sty,lstlang1.sty,lstlang2.sty,lstlang3.sty}
\lstset{defaultdialect=[R/3 6.10]ABAP,
diff --git a/Master/texmf-dist/tex/latex/listings/listings.sty b/Master/texmf-dist/tex/latex/listings/listings.sty
index 28fc678ad55..e056a98e86e 100644
--- a/Master/texmf-dist/tex/latex/listings/listings.sty
+++ b/Master/texmf-dist/tex/latex/listings/listings.sty
@@ -16,8 +16,8 @@
%% Send comments and ideas on the package, error reports and additional
%% programming languages to Jobst Hoffmann at <j.hoffmann@fh-aachen.de>.
%%
-\def\filedate{2024/05/25}
-\def\fileversion{1.10b}
+\def\filedate{2024/09/23}
+\def\fileversion{1.10c}
\NeedsTeXFormat{LaTeX2e}
\AtEndOfPackage{\ProvidesPackage{listings}
[\filedate\space\fileversion\space(Carsten Heinz)]}
@@ -920,6 +920,8 @@
\def#2{#6}}
\def\lst@UM#1{\csname\@lst @um#1@\endcsname}
\lst@CCPutMacro
+ \lst@ProcessOther {"22}{\lst@ifupquote \textquotedbl
+ \else \char34\relax \fi}
\lst@ProcessOther {"23}\#
\lst@ProcessLetter{"24}\textdollar
\lst@ProcessOther {"25}\%
@@ -1435,28 +1437,29 @@
\def\lst@linerange{#2}\lst@GLI@#1--\@nil%
}
\def\lst@GLI@#1-#2-#3\@nil{%
+
\lst@IfNumber{#1}%
{%
\ifx\@empty#1\@empty
\let\lst@firstline\@ne
\else
- \def\lst@firstline{#1\relax}%
+ \def\lst@firstline{#1\relax}
\fi
- \ifx\@empty#3\@empty%
- \def\lst@lastline{9999999\relax}%
+ \ifx\@empty#3\@empty
+ \def\lst@lastline{9999999\relax}
\ifx\@empty#2\@empty
- \let\lst@lastline\lst@firstline%
+ \let\lst@lastline\lst@firstline
\fi
\else%
\ifx\@empty#2\@empty
\def\lst@lastline{9999999\relax}
\else % doesn't happen(?)
- \def\lst@lastline{#2\relax}%
+ \def\lst@lastline{#2\relax}
\fi
\fi
}%
{%
- \def\lst@firstline{9999999\relax}%
+ \def\lst@firstline{9999999\relax}
\let\lst@lastline\lst@firstline
\let\lst@rangebegin\lst@rangebeginprefix
\lst@AddTo\lst@rangebegin{#1}%
@@ -1506,10 +1509,10 @@
\ifnum\@tempcnta=\z@ \else
\lst@nololtrue
\advance\@tempcnta\lst@advancenumber
- \edef\lst@firstnumber{\the\@tempcnta\relax}%
- \fi%
- \fi%
- }%
+ \edef\lst@firstnumber{\the\@tempcnta\relax}
+ \fi
+ \fi
+ }
}
\def\lst@InitLstNumber{%
\global\c@lstnumber\lst@firstnumber
@@ -1681,14 +1684,17 @@
\def\lst@maketitle{\caption@startrue\@makecaption\@empty}}%
}
\def\lst@HRefStepCounter#1{%
- \begingroup
- \c@lstlisting\lst@neglisting
- \advance\c@lstlisting\m@ne \xdef\lst@neglisting{\the\c@lstlisting}%
- \ifx\hyper@refstepcounter\@undefined\else
- \hyper@refstepcounter{#1}%
- \fi
- \endgroup}
-\gdef\lst@neglisting{\z@}% init
+ \begingroup
+ \c@lstlisting\lst@neglisting
+ \advance\c@lstlisting\m@ne \xdef\lst@neglisting{\the\c@lstlisting}%
+ \ifx\hyper@refstepcounter\@undefined\else
+ \hyper@refstepcounter{#1}%
+ \fi
+ \endgroup
+}
+\gdef\lst@neglisting{\z@}% init, \z@ can be used both for 0pt and 0,
+ % remember: _neg_ative number, but no
+ % counter!
\lst@Key{boxpos}{c}{\def\lst@boxpos{#1}}
\def\lst@boxtrue{\let\lst@ifbox\iftrue}
\let\lst@ifbox\iffalse
diff --git a/Master/texmf-dist/tex/latex/listings/lstdoc.sty b/Master/texmf-dist/tex/latex/listings/lstdoc.sty
index 5de8d7ec5ab..3023a1a2974 100644
--- a/Master/texmf-dist/tex/latex/listings/lstdoc.sty
+++ b/Master/texmf-dist/tex/latex/listings/lstdoc.sty
@@ -6,8 +6,8 @@
%%
%% listings.dtx (with options: `doc')
%%
-\def\filedate{2024/05/25}
-\def\fileversion{1.10b}
+\def\filedate{2024/09/23}
+\def\fileversion{1.10c}
\ProvidesPackage{lstdoc}
[\filedate\space\fileversion\space(Carsten Heinz)]
\let\lstdoc@currversion\fileversion
@@ -32,7 +32,7 @@
\ifalgorithmicpkg \RequirePackage{algorithmic}\fi
\iflgrind \RequirePackage{lgrind}\fi
\RequirePackage{nameref}
-\RequirePackage{url}
+\RequirePackage{xurl} % allow URL breaks
\renewcommand\ref{\protect\T@ref}
\renewcommand\pageref{\protect\T@pageref}
\def\lst@BeginRemark#1{%
diff --git a/Master/texmf-dist/tex/latex/listings/lstlang1.sty b/Master/texmf-dist/tex/latex/listings/lstlang1.sty
index 97481e7d77b..e22121fbc01 100644
--- a/Master/texmf-dist/tex/latex/listings/lstlang1.sty
+++ b/Master/texmf-dist/tex/latex/listings/lstlang1.sty
@@ -22,7 +22,7 @@
%% programming languages to Jobst Hoffmann at <j.hoffmann@fh-aachen.de>.
%%
\ProvidesFile{lstlang1.sty}
- [2024/05/25 1.10b listings language file]
+ [2024/09/23 1.10c listings language file]
%%
%% ACSL definition (c) 2000 by Andreas Matthias
%%
diff --git a/Master/texmf-dist/tex/latex/listings/lstlang2.sty b/Master/texmf-dist/tex/latex/listings/lstlang2.sty
index 711754208fa..e00818eb63f 100644
--- a/Master/texmf-dist/tex/latex/listings/lstlang2.sty
+++ b/Master/texmf-dist/tex/latex/listings/lstlang2.sty
@@ -22,7 +22,7 @@
%% programming languages to Jobst Hoffmann at <j.hoffmann@fh-aachen.de>.
%%
\ProvidesFile{lstlang2.sty}
- [2024/05/25 1.10b listings language file]
+ [2024/09/23 1.10c listings language file]
%%
%% Abap definition by Knut Lickert
%%
diff --git a/Master/texmf-dist/tex/latex/listings/lstlang3.sty b/Master/texmf-dist/tex/latex/listings/lstlang3.sty
index 751259d95d7..0fb43a4c370 100644
--- a/Master/texmf-dist/tex/latex/listings/lstlang3.sty
+++ b/Master/texmf-dist/tex/latex/listings/lstlang3.sty
@@ -22,7 +22,7 @@
%% programming languages to Jobst Hoffmann at <j.hoffmann@fh-aachen.de>.
%%
\ProvidesFile{lstlang3.sty}
- [2024/05/25 1.10b listings language file]
+ [2024/09/23 1.10c listings language file]
\lst@definelanguage[68]{Algol}%
{morekeywords={abs,and,arg,begin,bin,bits,bool,by,bytes,case,channel,%
char,co,comment,compl,conj,divab,do,down,elem,elif,else,empty,%
diff --git a/Master/texmf-dist/tex/latex/listings/lstmisc.sty b/Master/texmf-dist/tex/latex/listings/lstmisc.sty
index 9e663303727..d3bf1fbf58e 100644
--- a/Master/texmf-dist/tex/latex/listings/lstmisc.sty
+++ b/Master/texmf-dist/tex/latex/listings/lstmisc.sty
@@ -16,8 +16,8 @@
%% Send comments and ideas on the package, error reports and additional
%% programming languages to Jobst Hoffmann at <j.hoffmann@fh-aachen.de>.
%%
-\def\filedate{2024/05/25}
-\def\fileversion{1.10b}
+\def\filedate{2024/09/23}
+\def\fileversion{1.10c}
\ProvidesFile{lstmisc.sty}
[\filedate\space\fileversion\space(Carsten Heinz)]
\lst@CheckVersion\fileversion%
@@ -1186,14 +1186,14 @@
right:\def\lst@PlaceNumber{\rlap{\normalfont
\kern\linewidth \kern\lst@numbersep
\lst@numberstyle{\thelstnumber}}}%
- }{\PackageError{Listings}{Numbers #1 unknown}\@ehc}}
+ }{\PackageError{Listings}{value `#1' for keyword `numbers' not supported}\@ehc}}
+\lst@Key{stepnumber}{1}{\def\lst@stepnumber{#1\relax}}
+\lst@Key{numberfirstline}{f}[t]{\lstKV@SetIf{#1}\lst@ifnumberfirstline}
\lst@Key{numberstyle}{}{\def\lst@numberstyle{#1}}
\lst@Key{numbersep}{10pt}{\def\lst@numbersep{#1}}
-\lst@Key{stepnumber}{1}{\def\lst@stepnumber{#1\relax}}
-\lst@AddToHook{EmptyStyle}{\let\lst@stepnumber\@ne}
\lst@Key{numberblanklines}{true}[t]
{\lstKV@SetIf{#1}\lst@ifnumberblanklines}
-\lst@Key{numberfirstline}{f}[t]{\lstKV@SetIf{#1}\lst@ifnumberfirstline}
+\lst@AddToHook{EmptyStyle}{\let\lst@stepnumber\@ne}
\gdef\lst@numberfirstlinefalse{\let\lst@ifnumberfirstline\iffalse}
\lst@Key{firstnumber}{auto}{%
\lstKV@SwitchCases{#1}%
diff --git a/Master/texmf-dist/tex/latex/listparskip/listparskip.sty b/Master/texmf-dist/tex/latex/listparskip/listparskip.sty
new file mode 100644
index 00000000000..6d2bc7e85bc
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/listparskip/listparskip.sty
@@ -0,0 +1,112 @@
+%%
+%% This is file `listparskip.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% listparskip_code.dtx (with options: `package')
+%%
+%% This file is from version 1.0 of the free and open-source
+%% LaTeX package "listparskip," released December 2024.
+%%
+%% Copyright 2024 Conrad Kosowsky
+%%
+%% This file may be used, distributed, and modified under the
+%% terms of the LaTeX Public Project License, version 1.3c or
+%% any later version. The most recent version of this license
+%% is available online at
+%%
+%% https://www.latex-project.org/lppl/
+%%
+%% This work has the LPPL status "maintained," and the current
+%% maintainer is the package author, Conrad Kosowsky. He can
+%% be reached at kosowsky.latex@gmail.com.
+%%
+%% PLEASE KNOW THAT THIS FREE SOFTWARE IS PROVIDED WITHOUT
+%% ANY WARRANTY. SPECIFICALLY, THE "NO WARRANTY" SECTION OF
+%% THE LATEX PROJECT PUBLIC LICENSE STATES THE FOLLOWING:
+%%
+%% THERE IS NO WARRANTY FOR THE WORK. EXCEPT WHEN OTHERWISE
+%% STATED IN WRITING, THE COPYRIGHT HOLDER PROVIDES THE WORK
+%% `AS IS’, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+%% OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+%% WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+%% PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
+%% OF THE WORK IS WITH YOU. SHOULD THE WORK PROVE DEFECTIVE,
+%% YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR
+%% CORRECTION.
+%%
+%% IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED
+%% TO IN WRITING WILL THE COPYRIGHT HOLDER, OR ANY AUTHOR
+%% NAMED IN THE COMPONENTS OF THE WORK, OR ANY OTHER PARTY
+%% WHO MAY DISTRIBUTE AND/OR MODIFY THE WORK AS PERMITTED
+%% ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
+%% SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT
+%% OF ANY USE OF THE WORK OR OUT OF INABILITY TO USE THE WORK
+%% (INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA, DATA BEING
+%% RENDERED INACCURATE, OR LOSSES SUSTAINED BY ANYONE AS A
+%% RESULT OF ANY FAILURE OF THE WORK TO OPERATE WITH ANY
+%% OTHER PROGRAMS), EVEN IF THE COPYRIGHT HOLDER OR SAID
+%% AUTHOR OR SAID OTHER PARTY HAS BEEN ADVISED OF THE
+%% POSSIBILITY OF SUCH DAMAGES.
+%%
+%% For more information, see the LaTeX Project Public License.
+%% Derivative works based on this software may come with their
+%% own license or terms of use, and the package author is not
+%% responsible for any third-party software.
+%%
+%% Happy TeXing!
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{listparskip}[2024/12/17 v. 1.0 Package listparskip]
+\newdimen\@saveparskip
+\long\def\patch@trivlist#1\ifvmode#2\else#3%
+ \advance\@topsep\parskip#4\@nil{%
+ #1%
+ \ifvmode
+ \advance\@topsepadd\partopsep
+ \advance\@topsepadd\parskip
+ \else
+ #3#4}
+\toks@\expandafter\expandafter\expandafter
+ {\expandafter\patch@trivlist\@trivlist\@nil}
+\edef\@trivlist{\the\toks@}
+\def\@endparenv{%
+ \addpenalty\@endparpenalty
+ \addvspace\topsep
+ \global\@tempskipa\glueexpr\topsep+\partopsep\relax
+ \@endpetrue}
+\let\@restoreparskip\relax
+\def\@doendpe{%
+ \@endpetrue
+ \@saveparskip\parskip
+ \parskip\z@
+ \def\@restoreparskip{%
+ \parskip\@saveparskip
+ \let\@restoreparskip\relax}
+ \edef\par{%
+ \unexpanded{\clubpenalty\@clubpenalty
+ \everypar{}%
+ \@restorepar\par
+ \@restoreparskip
+ \@endpefalse}%
+ \noexpand\addvspace{\the\@tempskipa}}%
+ \everypar{\@restorepar
+ \@restoreparskip
+ {\setbox\z@\lastbox}%
+ \everypar{}%
+ \@endpefalse}}
+\def\patch@item#1{%
+ \edef#1{\noexpand\@restorepar
+ \noexpand\@restoreparskip
+ \expandafter\unexpanded\expandafter{#1}}}
+\@ifpackageloaded{hyperref}{%
+ \ifHy@implicit
+ \patch@item\H@item
+ \else
+ \patch@item\item
+ \fi}{\patch@item\item}
+\def\nullline{\ifvmode\nointerlineskip\leavevmode\par\fi}
+\endinput
+%%
+%% End of file `listparskip.sty'.
diff --git a/Master/texmf-dist/tex/latex/litebook/litebook.cls b/Master/texmf-dist/tex/latex/litebook/litebook.cls
deleted file mode 100644
index 0489b2f031f..00000000000
--- a/Master/texmf-dist/tex/latex/litebook/litebook.cls
+++ /dev/null
@@ -1,200 +0,0 @@
-%% ****************************************************************************************************
-%% Copyright 2024 by Mingyu Hsia <xiamyphys@gmail.com> *
-%% *
-%% This work may be distributed and/or modified under * ***** * * *
-%% the conditions of the LaTeX Project Public License * ** * * *** * * *
-%% * * ** * * * ** *
-%% http://www.latex-project.org/lppl.txt * * * * ***** ** *
-%% * * ** * * * * *
-%% either version 1.3c of this license or any later ***** ** * * *** * * *
-%% version. *
-%% *
-%% This work has the LPPL maintenance status `maintained'. *
-%% *
-%% The Current Maintainer of this work is Mingyu Hsia. *
-%% *
-%% This work consists of the files litebook.cls, *
-%% and README.md. *
-%% available at https://github.com/xiamyphys/LiteBook *
-%% ****************************************************************************************************
-% !Mode:: "TeX:UTF-8"
-\NeedsTeXFormat{LaTeX2e}
-\PassOptionsToPackage{quiet}{xeCJK}
-\ProvidesClass{litebook}[2024/03/26 v0.2b LiteBook document class]
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{family=LITE, prefix=LITE@, setkeys=\kvsetkeys}
-\def\ekv#1{\kvsetkeys{LITE}{#1}}
-
-\DeclareStringOption[newtx]{math}
-\DeclareVoidOption{newtx}{\ekv{math=newtx}}
-\DeclareVoidOption{mtpro2}{\ekv{math=mtpro2}}
-
-\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{book}}
-\ProcessKeyvalOptions*\relax
-\LoadClass[letterpaper,11pt,openright]{book}
-
-\RequirePackage{geometry,indentfirst,setspace,enumitem,booktabs,tabularx,diagbox,multicol,multirow}
-\geometry{lmargin = .8 in,rmargin = 1.2 in,tmargin = 1 in,bmargin = 1 in}
-\setlength{\headheight}{13.6pt}
-
-\RequirePackage{lipsum,hologo}
-\hologoFontSetup{general=\sffamily}
-\RequirePackage{ifxetex}
-\ifXeTeX
- \RequirePackage{ctex}
- \RequirePackage[quiet,no-math]{fontspec}
- \RequirePackage{zhlipsum}
-\else
- \usepackage[T1]{fontenc}
-\fi
-
-\RequirePackage{graphics,graphicx}
-\graphicspath{{./figure/}{./figures/}{./image/}{./images/}{./graphics/}{./graphic/}{./pictures/}{./picture/}}
-
-\RequirePackage[labelsep=period,labelfont={bf,sf},font=small]{caption}
-\RequirePackage[nokeyprefix]{refstyle}
-\newref{eq}{refcmd=(\ref{#1}),name={\sffamily eq.~},Name={\sffamily Eq.~}}
-\newref{fig}{name={\sffamily fig.~},Name={\sffamily Fig.~}}
-\newref{tab}{name={\sffamily tab.~},Name={\sffamily Tab.~}}
-
-\RequirePackage{tocloft}
-\setlength{\cftbeforetoctitleskip}{6\p@}
-\setlength{\cftaftertoctitleskip}{24\p@}
-\setlength{\cftbeforesecskip}{3\p@}
-\def\contentsname{\sffamily\scshape\hfill Contents\hfill}
-\setcounter{tocdepth}{1}
-
-\def\@makechapterhead#1{%
- \vspace*{\p@}{%
- \parindent \z@ \raggedright \normalfont
- \ifnum \c@secnumdepth >\m@ne
- \if@mainmatter
- \parbox{1 in}
- {\centering\HUGE\normalfont\bfseries\textcolor{darkgray}\thechapter\vskip10\p@\normalsize\bfseries\textcolor{darkgray}{\bfseries\sffamily\scshape \@chapapp}}%
- \tikz[baseline,overlay]
- \draw[line width=3pt,dotted,dash pattern=on 0pt off 8pt, gray](0,-.8)--(0,1.2);
- \fi
- \fi
- \interlinepenalty\@M\hspace*{2em}
- \huge\bfseries\sffamily #1\par\nobreak
- \vskip 36\p@
-}}
-\def\@makeschapterhead#1{%
- \gdef\s@chapter{#1}
- \addcontentsline{toc}{chapter}{\s@chapter}
- \vspace*{4\p@}%
- {\parindent \z@ \raggedright
- \normalfont
- \interlinepenalty\@M
- \huge \bfseries \sffamily #1\par\nobreak
- \vskip 40\p@
-}}
-\let\cleardoublepage=\clearpage
-\renewcommand*{\cleardoublepage}{\clearpage\if@twoside \ifodd\c@page\else
-\ifnum \thechapter=0
- \vspace*{\fill}
- {\centering\itshape\Large This page was intentionally left blank.\par}
- \vspace{\fill}
-\else
- \clearpage%
- \thispagestyle{empty}%
- \null\clearpage
-\fi
-\thispagestyle{empty}\newpage
-\if@twocolumn\hbox{}\newpage\fi\fi\fi}
-
-\RequirePackage{fancyhdr}
-\pagestyle{fancy}
- \let\oldheadrule\headrule
- \renewcommand{\headrule}{{\color{gray}\oldheadrule}}
- \renewcommand{\headrulewidth}{1pt}
- \fancyhead[OL]{\textsc{\color{darkgray}\sffamily\nouppercase\leftmark}}
- \fancyhead[OR]{\color{darkgray}\sffamily\thepage}
- \fancyhead[ER]{\textsc{\color{darkgray}\sffamily\nouppercase\rightmark}}
- \fancyhead[EL]{\color{darkgray}\sffamily\thepage}
- \cfoot{}
-
-\RequirePackage{tikz}
-\usetikzlibrary{arrows,tikzmark,patterns,calc}
-\RequirePackage{fadingimage}
-\tikzset{>=stealth',
-every picture/.append style={%
- line join = round,
- line cap = round,
- thick
-}}
-
-\RequirePackage[fixed]{fontawesome5}
-\AddToHook{cmd/faIcon/before}{%
- \begingroup\fontsize{\fpeval{\f@size*.9}}{0}\selectfont
-}
-\AddToHook{cmd/faIcon/after}{\endgroup}
-
-\RequirePackage[svgnames]{xcolor}
-\RequirePackage[colorlinks,linkcolor=DarkGreen,urlcolor=Teal]{hyperref}
-\def\pkg#1{\textcolor{DarkGreen}{\textsf{#1}}}
-\def\mode#1{\textcolor{Indigo}{\textsf{#1}}}
-\def\cmd#1{\textcolor{MidnightBlue}{\texttt{\string#1}}}
-
-\RequirePackage{datetime}\yyyymmdddate
-\def\subtitle#1{\gdef\@subtitle{#1}}
-\def\cover#1{\gdef\@cover{#1}}
-\def\bioinfo#1{\gdef\@bioinfo{#1}}
-\def\press#1{\gdef\@press{#1}}
-\RequirePackage{anyfontsize}
-\def\HUGE{\@setfontsize\HUGE{40}{50}}
-\def\HUge{\@setfontsize\HUGE{35}{45}}
-
-\renewcommand*\maketitle{%
-\begin{titlepage}
- \newgeometry{margin = 0 in}
- \ifcsname @cover\endcsname\@cover\vskip80\p@\else\vspace*{80\p@}\fi
- \parindent=0pt
- \centering\sffamily\bfseries
- \HUge\@title\normalfont
- \ifcsname @subtitle\endcsname
- \vskip2ex\LARGE\sffamily\bfseries\@subtitle\normalfont\fi
- \ifcsname @author\endcsname
- \vskip4ex\LARGE\sffamily\bfseries\@author\normalfont\fi
- \ifcsname @bioinfo\endcsname
- \vskip2ex\Large\sffamily\bfseries\@bioinfo\normalfont\fi
- \ifcsname @press\endcsname\vfill
- \parbox[t]{\textwidth}{\centering
- \sffamily\bfseries\large\@press\normalfont\vskip75\p@}\fi
- \clearpage
- \vspace*{\fill}
- {\centering \Huge\sffamily\bfseries\itshape\@title\par}
- \vspace{\fill}
- \restoregeometry
-\end{titlepage}}
-
-\ifdefstring{\LITE@math}{mtpro2}{%
- \RequirePackage{amssymb}
- \let\Bbbk\relax
- \RequirePackage[mtpscr,mtpccal,mtpfrak]{mtpro2}
- \RequirePackage[mono=false]{libertine}
-}{\relax}
-\ifdefstring{\LITE@math}{newtx}{%
- \RequirePackage[libertine,mono=false]{newtx}
-}{\relax}
-\let\openbox\relax\def\hmmax{0}\def\bmmax{0}
-\RequirePackage{physics2,bm,fixdif,derivative,cancel,extarrows,siunitx,nicefrac,nicematrix}
-\usephysicsmodule{ab,braket,diagmat,doubleprod,xmat,ab.legacy,op.legacy}
-\RequirePackage[e]{esvect}
-\def\i{\mathrm i}
-\def\e{\mathrm e}
-\def\T{\mathsf T}
-\AtBeginDocument{%
- \setlength{\abovedisplayskip}{9pt}
- \setlength{\belowdisplayskip}{9pt}
-}
-\numberwithin{equation}{section}
-\RequirePackage[amscounter=section,amsstyle=definition,
- mdfcounter=section,mdfstyle=mdflist]{thmlist}
-\mdfsetup{skipabove=2pt,skipbelow=2pt}
-\mdfdefinestyle{mdflist}{%
- hidealllines=true, leftline=true,
- linewidth=.5ex, innerleftmargin=1.5ex,
- innerrightmargin=0pt, innertopmargin=-1.75ex,
- innerbottommargin=0pt} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/litesolution/litesolution.cls b/Master/texmf-dist/tex/latex/litesolution/litesolution.cls
deleted file mode 100644
index 2b7a3ecb345..00000000000
--- a/Master/texmf-dist/tex/latex/litesolution/litesolution.cls
+++ /dev/null
@@ -1,307 +0,0 @@
-%% ***********************************************************
-%% Copyright 2024 by Mingyu XIA <xiamyphys@gmail.com> *
-%% *
-%% This work may be distributed and/or modified under *
-%% the conditions of the LaTeX Project Public License *
-%% *
-%% http://www.latex-project.org/lppl.txt *
-%% *
-%% either version 1.3c of this license or any later *
-%% version. *
-%% *
-%% This work has the LPPL maintenance status `maintained'. *
-%% *
-%% The Current Maintainer of this work is Mingyu XIA. *
-%% *
-%% This work consists of the files litesolution.cls, *
-%% and README.md. *
-%% available at https://github.com/xiamyphys/litesolution *
-%% ***********************************************************
-% !Mode:: "TeX:UTF-8"
-\NeedsTeXFormat{LaTeX2e}
-\PassOptionsToPackage{no-math}{fontspec}
-\PassOptionsToPackage{svgnames}{xcolor}
-\ProvidesClass{litesolution}[2024/08/15 v2.4a LiteSolution document class]
-\RequirePackage{kvoptions,etoolbox,keyval}
-\SetupKeyvalOptions{family=LITE, prefix=LITE@, setkeys=\kvsetkeys}
-\def\ekv#1{\kvsetkeys{LITE}{#1}}
-
-\DeclareStringOption{answer}
-\DeclareVoidOption{hideanswer}{\ekv{answer=hideanswer}}
-
-\DeclareStringOption[newtx]{math}
-\DeclareVoidOption{newtx}{\ekv{math=newtx}}
-\DeclareVoidOption{newtxsf}{\ekv{math=newtxsf}}
-\DeclareVoidOption{mtpro2}{\ekv{math=mtpro2}}
-
-\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{book}}
-\ProcessKeyvalOptions*\relax
-\LoadClass[letterpaper,11pt]{book}
-
-\RequirePackage{setspace,datetime,tabularx,caption,subcaption,anyfontsize,booktabs,multicol,diagbox,paracol}
-\linespread{1.3}
-\ddmmyyyydate
-\captionsetup{labelsep=period,labelfont={bf,sf},font=small}
-\AtBeginEnvironment{figure}{\vspace*{-1ex}}
-\AfterEndEnvironment{figure}{\vspace*{-2ex}}
-\AtBeginEnvironment{paracol}{\nointerlineskip}
-\AfterEndEnvironment{paracol}{\nointerlineskip}
-\columnratio{.64}
-\RequirePackage[inline]{enumitem}
-\setlist[enumerate]{itemsep=.5ex}
-\setlist[itemize]{itemsep=.5ex}
-\RequirePackage[notelinecolor=MidnightBlue,notemargin=.75in]{notebeamer}
-\geometry{margin=1in,headheight=14pt}
-\RequirePackage[nokeyprefix]{refstyle}
-\newref{eq}{refcmd=(\ref{#1}),name={\sffamily eq.~},Name={\sffamily Eq.~}}
-\newref{fig}{name={\sffamily fig.~},Name={\sffamily Fig.~}}
-\newref{tab}{name={\sffamily tab.~},Name={\sffamily Tab.~}}
-
-\RequirePackage{graphicx,magicwatermark,pagecolor}
-\graphicspath{{./figure/}{./figures/}{./image/}{./images/}{./graphics/}{./graphic/}{./pictures/}{./picture/}}
-
-\RequirePackage{ifxetex}
-\ifXeTeX
- \RequirePackage[quiet,CJKmath,CheckSingle,PlainEquation]{xeCJK}
- \RequirePackage{zhlipsum}
- \setlength{\parindent}{2em}
-\fi
-
-\ifdefstring{\LITE@math}{mtpro2}{%
- \RequirePackage[mtpscr,mtpccal,mtpfrak]{mtpro2}
- \let\Bbbk\relax
- \RequirePackage[mono=false]{libertine}
-}{\relax}
-\ifdefstring{\LITE@math}{newtx}{%
- \RequirePackage[libertine,mono=false]{newtx}
- \let\Bbbk\relax
-}{\relax}
-\ifdefstring{\LITE@math}{newtxsf}{%
- \RequirePackage{newtxsf,mathrsfs}
- \RequirePackage[mono=false]{libertine}
-}{\relax}
-\let\openbox\relax\def\hmmax{0}\def\bmmax{0}
-\RequirePackage{amssymb,mathtools,physics2,bm,fixdif,derivative,cancel,extarrows,siunitx,xfrac,nicematrix}
-\usephysicsmodule{ab,braket,diagmat,doubleprod,xmat,ab.legacy,op.legacy}
-\RequirePackage[e]{esvect}
-\let\vec\vv
-\renewcommand*\env@cases[1][.84]{%
- \let\@ifnextchar\new@ifnextchar
- \left\lbrace
- \def\arraystretch{#1}%
- \array{@{}l@{\quad}l@{}}%
-}
-\AtBeginDocument{%
- \def\i{\mathrm i}\def\e{\mathrm e}\def\T{\mathsf T}
- \let\leq\leqslant\let\geq\geqslant
- \setlength{\abovedisplayskip}{9pt}
- \setlength{\belowdisplayskip}{9pt}
-}
-
-\RequirePackage[hidelinks]{hyperref}
-\def\mailto#1{\href{mailto:#1}{\ttfamily #1}}
-\RequirePackage{fontawesome5}
-\AddToHook{cmd/faIcon/before}{%
- \begingroup\fontsize{\fpeval{\f@size*.8}}{0}\selectfont
-}
-\AddToHook{cmd/faIcon/after}{\endgroup}
-
-\RequirePackage{circuitikz,pgfplots,fadingimage}
-\RequirePackage[version=4]{mhchem}
-\usetikzlibrary{arrows,tikzmark,patterns,calc,angles,quotes,intersections}
-\tikzset{>=stealth',
- every picture/.append style={%
- line join=round,line cap=round,thick
- }}
-\pgfplotsset{compat=1.8}
-\ctikzset{capacitors/width=.12,capacitors/height=.3}
-\NewDocumentCommand\length{ O{} m m m m m }{%
- \node [#1] at ($.5*($#3+#2$)$) {#4}#6
- \draw [->|,thick] ($.5*($#3+#2+#5$)$) -- #3#6
- \draw [->|,thick] ($.5*($#3+#2-#5$)$) -- #2#6
-}
-\NewDocumentCommand\wall{ m m m }{
- \fill [pattern=north east lines] #1 rectangle #2#3
- \draw [very thick,line cap=butt] let \p1=#1, \p2=#2 in (\x1,\y1) (\x2,\y2) (\x1,\y1) -- (\x2,\y1)#3
-}
-
-\RequirePackage{tasks,lipsum,hologo,qrcode}
-\settasks{label=\sffamily\Alph*.,label-width=1.25em,item-indent=2em,label-offset=.25em}
-\hologoFontSetup{general=\sffamily}
-\def\pkg#1{\textcolor{DarkGreen}{\textsf{#1}}}
-\def\mode#1{\textcolor{Indigo}{\textsf{#1}}}
-\def\cmd#1{\textcolor{MidnightBlue}{\texttt{\string#1}}}
-
-\define@key{coverset}{title}{\gdef\@title{#1}}
-\define@key{coverset}{subtitle}{\gdef\@subtitle{#1}}
-\define@key{coverset}{bioinfo}{\gdef\@bioinfo{#1}}
-\define@key{coverset}{covercolor}{\gdef\@covercolor{#1}}
-\define@key{coverset}{coverhead}{\gdef\@coverhead{#1}}
-\define@key{coverset}{coverhead.rotate}{\gdef\@coverheadrotate{#1}}
-\define@key{coverset}{cover}{\gdef\@cover{#1}}
-\define@key{coverset}{cover.pattern}{\gdef\@coverpattern{#1}}
-\def\coverset#1{
- \setkeys{coverset}{#1}
- \ifcsname @covercolor\endcsname
- \relax
- \else
- \gdef\@covercolor{DarkSlateGray}
- \fi
-}
-
-\renewcommand*\maketitle{
- \begin{titlepage}
- \newgeometry{margin=0in}
- \newpagecolor{\@covercolor!15}
- \gdef\@covercolor{DarkSlateGray}
- \tikz[remember picture,overlay]{
- \fill [white,opacity=.5] ($(current page.south west)+(.2*\paperwidth,.6*\paperheight)$) rectangle (current page.south east);
- \fill [white,opacity=.5] ($(current page.south west)+(.3*\paperwidth,.7*\paperheight)$) rectangle (current page.south east);
- \node [darkgray] at ($(current page.south west)+(.65*\paperwidth,.65*\paperheight)$) {\Huge\bfseries\@title};
- \ifcsname @subtitle\endcsname
- \node [rotate=90,gray,opacity=.6] at ($(current page.south west)+(.25*\paperwidth,.3*\paperheight)$) {\huge\bfseries\@subtitle};
- \fi
- \ifcsname @bioinfo\endcsname
- \node [gray,opacity=.4] at ($(current page.south)+(.15*\paperwidth,.075*\paperheight)$) {\large\@bioinfo};
- \fi
- \ifcsname @coverhead\endcsname
- \ifcsname @coverheadrotate\endcsname
- \relax
- \else
- \gdef\@coverheadrotate{0}
- \fi
- \node [rotate=\@coverheadrotate] at ($(current page.center)+(0,.35*\paperheight)$) {\includegraphics[width=\paperwidth]{\@coverhead}};
- \fi
- \ifcsname @cover\endcsname
- \node (@cover) at ($(current page.south west)+(.65*\paperwidth,.3*\paperheight)$) {\includegraphics[height=.3\paperheight]{\@cover}};
- \ifcsname @coverpattern\endcsname
- \fill [scope fading=south,pattern=\@coverpattern,pattern color=\@covercolor!15!white!25] (@cover.south west) rectangle (@cover.north east);
- \fi\fi}
- \end{titlepage}
- \restoregeometry
- \restorepagecolor
- \if@twoside
- \clearpage%
- \newpagecolor{\@covercolor!15!white!25}
- \thispagestyle{empty}%
- \null\clearpage
- \fi
- \restorepagecolor
-}
-
-\RequirePackage{tocloft}
-\setlength{\cftbeforetoctitleskip}{6\p@}
-\setlength{\cftaftertoctitleskip}{24\p@}
-\AddToHook{cmd/tableofcontents/before}{
- \begingroup
- \setstretch{1.5}
-}
-\AddToHook{cmd/tableofcontents/after}{\endgroup}
-\renewcommand\contentsname{\sffamily\scshape Contents}
-\setcounter{tocdepth}{1}
-
-\let\@chapapptmp\@chapapp
-\gdef\@chapapp{\textsc{\@chapapptmp}}
-\def\chapterimage#1{\gdef\@chapterimage{#1}}
-\def\@makechapterhead#1{%
- \def\thesection{\arabic{chapter}.\arabic{section}}
- \def\theproblem{\thechapter.\arabic{problem}}
- \vspace*{-36\p@}{%
- \parindent \z@ \raggedright \normalfont
- \ifcsname @chapterimage\endcsname
- \@chapterimage
- \else\leavevmode
- \fi
- \ifnum \c@secnumdepth >\m@ne
- \if@mainmatter
- \parbox{6em}
- {\centering\@setfontsize\HUGE{30}{40}\normalfont\bfseries\textcolor{darkgray}\thechapter\vskip4\p@\normalsize\bfseries\textcolor{darkgray}{\bfseries\sffamily\@chapapp}}%
- \fi
- \fi
- \interlinepenalty\@M\hspace*{3ex}
- \huge\bfseries #1\par\nobreak
- \vskip 36\p@
-}}
-\def\@makeschapterhead#1{%
-\def\thesection{\arabic{section}}
-\def\theproblem{\arabic{problem}}
-\setcounter{section}{0}
-\setcounter{problem}{0}
-{\centering
-\ifcsname @chapterimage\endcsname
- \@chapterimage
-\fi\vskip-40\p@
- \parindent \z@ \normalfont
- \interlinepenalty\@M
- \huge \bfseries #1\par\nobreak
- \vskip 28\p@}}
-\let\cleardoublepage=\clearpage
-\renewcommand*\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
-\ifnum \thechapter=0
- \vspace*{\fill}
- {\centering\itshape\Large This page was intentionally left blank.\par}
- \vspace{\fill}
-\else
- \clearpage%
- \thispagestyle{empty}%
- \null\clearpage
-\fi
-\thispagestyle{empty}\newpage
-\if@twocolumn\hbox{}\newpage\fi\fi\fi}
-
-\RequirePackage{fancyhdr}
-\pagestyle{fancy}
-\let\oldheadrule\headrule
-\renewcommand{\headrule}{{\color{gray}\oldheadrule}}
-\renewcommand{\headrulewidth}{1pt}
-\fancyfoot[L]{\footnotesize\fbox{Unauthorized copying or reuse of any part of this page is illegal}}
-\fancyfoot[OR]{\sffamily\bfseries GO ON TO THE NEXT PAGE}
-\if@twoside\cfoot{}
- \fancyhead[OL]{\color{darkgray}\nouppercase\leftmark}
- \fancyhead[OR]{\color{darkgray}\sffamily\thepage}
- \fancyhead[ER]{\color{darkgray}\nouppercase\rightmark}
- \fancyhead[EL]{\color{darkgray}\sffamily\thepage}
-\else
- \fancyhead[L]{\color{darkgray}\nouppercase\leftmark}
- \fancyhead[R]{\color{darkgray}\nouppercase\rightmark}
- \cfoot{\color{darkgray}\sffamily\thepage}
-\fi
-
-\RequirePackage{amsthm}
-\renewcommand\qedsymbol{$\color{gray}\blacksquare$}
-\theoremstyle{definition}
-\newtheorem{problem}{\color{DarkGreen}\faIcon{pen-square}~\textsc{\textsf{Problem}}}[chapter]
-\newtheorem*{solution}{\color{MidnightBlue}\faIcon{check-square}~\textsc{\textsf{Solution}}}
-\newtheorem*{scratch}{\color{MidnightBlue}\faIcon{check-square}~\textsc{\textsf{Scratch}}}
-\newtheorem*{note}{\color{DarkRed}\faIcon{info-circle}~\textsc{\textsf{Note}}}
-\RequirePackage{comment,ulem,soul}
-\ifxetex
- \RequirePackage{xeCJKfntef}
- \def\@emph#1{\CJKsout*[thickness=2.5ex, format=\color{\@covercolor!15}]{#1}}
- \def\s@emph#1{\CJKunderwave{#1}}
-\else
- \def\@emph#1{\sethlcolor{\@covercolor!15}\hl{#1}}
- \def\s@emph#1{\uwave{#1}}
-\fi
-\ifdefstring{\LITE@answer}{hideanswer}{%
- \def\ans#1{\underline{\phantom{#1}}}
- \def\choiceans#1{\phantom{#1}}
- \def\s@solute#1{\begin{scratch}#1\end{scratch}}
- \def\@solute#1{\begin{scratch}\leavevmode\vspace*{#1ex}\end{scratch}}
- \AtBeginDocument{%
- \excludecomment{solution}\excludecomment{note}
- \let\endsolution\relax\let\endnote\relax}
- \def\true{\addtocounter{task}{1}\thetask}
- \DeclareRobustCommand\emph{\@ifstar\s@emph\s@emph}
-}{
- \def\ans#1{\underline{~#1~}}
- \def\s@solute#1{\relax}\def\@solute#1{\relax}
- \AtBeginDocument{%
- \excludecomment{scratch}
- \let\endscratch\relax}
- \def\true{\addtocounter{task}{1}\faIcon{check-circle}}
- \DeclareRobustCommand\emph{\@ifstar\s@emph\@emph}
-}
-\DeclareRobustCommand\solute{\@ifstar\s@solute\@solute}
-%%
-%% End of file `litesolution.cls'.
diff --git a/Master/texmf-dist/tex/latex/litetable/litetable.cls b/Master/texmf-dist/tex/latex/litetable/litetable.cls
index a52c0d5abd8..e880e33b7d2 100644
--- a/Master/texmf-dist/tex/latex/litetable/litetable.cls
+++ b/Master/texmf-dist/tex/latex/litetable/litetable.cls
@@ -1,314 +1,459 @@
-%% ************************************************************************************************************
-%% ****************************************************** *
-%% * This work may be distributed and/or modified under * * ***** * * *
-%% * the conditions of the LaTeX Project Public License * * ** * * *** * * *
-%% * http://www.latex-project.org/lppl.txt * * * ** * ***** * *
-%% * either version 1.3c of this license or any later * * * ** * ***** * *
-%% * version. * * * ** * * * * *
-%% ****************************************************** ***** ** * * *** * * *
-%% start of file `litetable.cls'. *
-%% Copyright 2023-2024 LiteLaTeX (xiamyphys@gmail.com) *
-%% available at https://github.com/xiamyphys/LiteTable *
-% !Mode:: "TeX:UTF-8" *
-%% ************************************************************************************************************
-\NeedsTeXFormat{LaTeX2e}
-\PassOptionsToPackage{quiet}{xeCJK}
-\PassOptionsToPackage{no-math}{fontspec}
-\ProvidesClass{litetable}[2024/03/03/ v2.4c LiteTable document class]
+%% *********************************************************************
+%% Copyright 2024 by M.Y. XIA <xiamyphys@gmail.com> *
+%% *
+%% This work may be distributed and/or modified under the *
+%% conditions of the LaTeX Project Public License *
+%% *
+%% http://www.latex-project.org/lppl.txt *
+%% *
+%% either version 1.3c of this license or any later version. *
+%% *
+%% This work has the LPPL maintenance status `maintained'. *
+%% *
+%% The Current Maintainers of this work are M.Y. XIA & L.J. Guo *
+%% *
+%% This work consists of the files litetable.cls, *
+%% and README.md. *
+%% available at https://github.com/xiamyphys/litetable *
+%% *********************************************************************
+\RequirePackage{xparse}% For TeX Live 2019 - 2020 Compatibility
+\ProvidesExplClass {litetable} {2024/10/13} {3.1D} {Course Schedule}
-% ---------- 全局选项 ---------- %
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{family=LITE, prefix=LITE@, setkeys=\kvsetkeys}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
+\ProcessOptions\relax
+\LoadClass{article}
-\DeclareStringOption[portiait]{direction}
-\DeclareVoidOption{portiait}{\kvsetkeys{LITE}{direction=portiait}}
-\DeclareVoidOption{landscape}{\kvsetkeys{LITE}{direction=landscape}}
+\pagestyle{empty}
+\RequirePackage{tikz}
-\DeclareStringOption[times]{font}
-\DeclareVoidOption{times}{\kvsetkeys{LITE}{font=times}}
-\DeclareVoidOption{libertinus}{\kvsetkeys{LITE}{font=libertinus}}
-
-\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{standalone}}
-\ProcessKeyvalOptions*\relax
-
-\LoadClass[tikz]{standalone}
-
-% ---- 文本中的数字 & 字母设置 ---- %
-\RequirePackage{xeCJK}
-\setCJKfamilyfont{zhhei}{Heiti SC}
-\newcommand*\heiti{\CJKfamily{zhhei}}
-\ifdefstring{\LITE@font}{libertinus}{
-\RequirePackage{libertine}
-}{\relax}
-\ifdefstring{\LITE@font}{times}{
-\ifXeTeX
- \RequirePackage[no-math]{fontspec}
- \setmainfont{texgyretermes}[
- UprightFont = *-regular ,
- BoldFont = *-bold ,
- ItalicFont = *-italic ,
- BoldItalicFont = *-bolditalic ,
- Extension = .otf ,
- Scale = 1.0]
- \setsansfont{texgyreheros}[
- UprightFont = *-regular ,
- BoldFont = *-bold ,
- ItalicFont = *-italic ,
- BoldItalicFont = *-bolditalic ,
- Extension = .otf ,
- Scale = 0.9]
-\else
- \RequirePackage{newtxtext}
- \RequirePackage[scaled=.90]{helvet}
-\fi
-}{\relax}
-
-% ---------- 色彩组合 ---------- %
-\definecolor{darkgray}{HTML}{727477} % 时间颜色
-\definecolor{darkergray}{HTML}{F1F3F5} % 深色块
-\definecolor{lightergray}{HTML}{FCFDFE} % 浅色块
-\definecolor{blackgray}{HTML}{1A1D21} % 序号颜色
-\definecolor{SEM}{HTML}{DEEAF8} % 学期按钮
-\definecolor{SEM*}{HTML}{3085F3}
-\definecolor{SEM**}{HTML}{007DC3}
-\pagecolor{lightergray}
-\definecolor{H1}{HTML}{74A7A2} % 深绿
-\definecolor{H1*}{HTML}{E9EEED}
-\definecolor{H1**}{HTML}{009787}
-\definecolor{H2}{HTML}{50C9BD} % 浅绿
-\definecolor{H2*}{HTML}{E1F3F2}
-\definecolor{H2**}{HTML}{009D8F}
-\definecolor{H3}{HTML}{86AFFE} % 深蓝
-\definecolor{H3*}{HTML}{DBE7FF}
-\definecolor{H3**}{HTML}{1663F5}
-\definecolor{H4}{HTML}{6BC0EB} % 浅蓝
-\definecolor{H4*}{HTML}{D8EFFA}
-\definecolor{H4**}{HTML}{0072B1}
-\definecolor{H5}{HTML}{D58DFB} % 深紫
-\definecolor{H5*}{HTML}{F2E3FB}
-\definecolor{H5**}{HTML}{A83FDF}
-\definecolor{H6}{HTML}{FF9393} % 浅紫
-\definecolor{H6*}{HTML}{FFDEDE}
-\definecolor{H6**}{HTML}{E73030}
-\definecolor{H7}{HTML}{FFA17D} % 深橙
-\definecolor{H7*}{HTML}{F5E1DA}
-\definecolor{H7**}{HTML}{E2612F}
-\definecolor{H8}{HTML}{F3C06A} % 浅橙
-\definecolor{H8*}{HTML}{F3EADB}
-\definecolor{H8**}{HTML}{E09B14}
-\definecolor{H9}{HTML}{D09966} % 棕色
-\definecolor{H9*}{HTML}{F2E0D0}
-\definecolor{H9**}{HTML}{C96F1C}
-\definecolor{W1}{HTML}{CCAD52}
-\definecolor{W2}{HTML}{8FCC52}
-\definecolor{W3}{HTML}{52CC70}
-\definecolor{W4}{HTML}{52CCCC}
-\definecolor{W5}{HTML}{5270CC}
-\definecolor{W6}{HTML}{8F52CC}
-\definecolor{W7}{HTML}{CC52AD}
-
-\usetikzlibrary{calc}
-\ifdefstring{\LITE@direction}{portiait}{
- \def\pagewidth{8.5 in}
- \def\pageheight{-11 in}
- \def\rotatepage{
- \def\pagewidth{11 in}
- \def\pageheight{-8.5 in}
- }
- \def\rerotatepage{
- \def\pagewidth{8.5 in}
- \def\pageheight{-11 in}
+% Module for texlive 2021 and later (by @ljguo)
+\cs_if_exist:NF \clist_put_right:Ne
+ { \cs_generate_variant:Nn \clist_put_right:Nn { Ne } }
+\cs_if_exist:NF \clist_set:Ne
+ { \cs_generate_variant:Nn \clist_set:Nn { Ne } }
+\cs_if_exist:NT \clist_count:e
+ { \cs_generate_variant:Nn \clist_count:n { e } }
+\cs_if_exist:NF \exp_args:NNNe
+ {
+ \cs_new:Npn \exp_args:NNNe #1#2#3#4
+ {
+ \exp_after:wN #1
+ \exp_after:wN #2
+ \exp_after:wN #3
+ \tex_expanded:D { {#4} }
+ }
}
-}{\relax}
-\ifdefstring{\LITE@direction}{landscape}{
- \def\pagewidth{11 in}
- \def\pageheight{-8.5 in}
- \def\rotatepage{
- \def\pagewidth{8.5 in}
- \def\pageheight{-11 in}
+% Module for left -> right data structure (by @ljguo)
+\cs_new_protected_nopar:Npn \__litetable_get_left:nN #1#2
+ {
+ \group_begin:
+ \seq_set_split:Nnn \l__litetable_tmpa_seq { -> } {#1}
+ \exp_args:NNNe \group_end: \tl_set:Nn #2
+ { \seq_item:Nn \l__litetable_tmpa_seq { 1 } }
}
- \def\rerotatepage{
- \def\pagewidth{11 in}
- \def\pageheight{-8.5 in}
+\cs_new_protected_nopar:Npn \__litetable_get_right:nN #1#2
+ {
+ \group_begin:
+ \seq_set_split:Nnn \l__litetable_tmpa_seq { -> } {#1}
+ \exp_args:NNNe \group_end: \tl_set:Nn #2
+ { \seq_item:Nn \l__litetable_tmpa_seq { 2 } }
}
-}{\relax}
-
-\ExplSyntaxOn % 数组
-% 1. Set up arrays
-\def\definearray#1#2
- {
- \seq_clear_new:c { l__litetable_array_#1_seq }
- \seq_set_split:cnn { l__litetable_array_#1_seq } { ; } { #2 }
- }
-
-\cs_generate_variant:Nn \seq_set_split:Nnn { c }
+\cs_generate_variant:Nn \__litetable_get_left:nN { e }
+\cs_generate_variant:Nn \__litetable_get_right:nN { e }
-% 2. Define commands to work with arrays
-\NewExpandableDocumentCommand{\arraycount}{ o m }
- {
- \IfNoValueTF { #1 }
- {
- \litetable_array_count_full:n { #2 }
- }
- {
- \litetable_array_count_item:nn { #2 } { #1 }
- }
- }
-
-\cs_new:Nn \litetable_array_count_item:nn
- {
- \clist_count:e { \seq_item:cn { l__litetable_array_#1_seq } { #2 } }
- }
+\int_new:N \l__time_num_int
+\dim_new:N \l__time_vunit_dim
+\cs_new_protected:Npn \litetable_msg_new:nn #1#2
+ { \msg_new:nnn { litetable } {#1} {#2} }
+\cs_new_protected:Npn \litetable_msg_warning:n #1
+ { \msg_warning:nn { litetable } {#1} }
+\litetable_msg_new:nn { timelist }
+ { \exp_not:N \timelist~extra~time~group(s)~were~ignored }
+\cs_new_protected_nopar:Npn \litetable_timelist:nn #1#2
+ {
+ \clist_set:Nn \l__litetable_timelist_clist {#2}
+ \tl_if_empty:nTF {#1}
+ {
+ \int_set:Nn \l__time_num_int
+ { \clist_count:N \l__litetable_timelist_clist }
+ }
+ {
+ \int_set:Nn \l__time_num_int {#1}
+ \int_compare:nNnTF {#1} <
+ { \clist_count:N \l__litetable_timelist_clist }
+ {
+ \int_set:Nn \l__time_num_int
+ { \clist_count:N \l__litetable_timelist_clist }
+ \litetable_msg_warning:n { timelist }
+ }
+ { \int_set:Nn \l__time_num_int {#1} }
+ }
+ \dim_set:Nn \l__time_vunit_dim
+ { \fp_eval:n { 1/( 2\l__time_num_int + 3.5 ) } \paperheight }
+ }
+\NewDocumentCommand \timelist { O{} m O{} }
+ { \litetable_timelist:nn { #1 #3 } {#2} }
-\NewExpandableDocumentCommand{\arrayitem}{ m m m }
- {
- \clist_item:en { \seq_item:cn { l__litetable_array_#1_seq } { #2 } } { #3 }
- }
+\clist_new:N \l__week_ratio_clist
+\clist_new:N \l__week_accum_clist
+\int_new:N \l__week_num_int
+\dim_new:N \l__week_hunit_dim
+\cs_new_protected_nopar:Npn \litetable_weeklist:nn #1#2
+ {
+ \tl_set:Nn \l__default_weeks_tl {#1}
+ \clist_set:Nn \l__litetable_weeklist_clist {#2}
+ \int_step_inline:nn
+ { \clist_count:N \l__litetable_weeklist_clist }
+ {
+ \__litetable_get_right:eN
+ {
+ \clist_item:Nn \l__litetable_weeklist_clist {##1}
+ } \l__litetable_tmpb_tl
+ \clist_put_right:Ne \l__week_ratio_clist
+ { \l__litetable_tmpb_tl }
+ }
+ \int_step_inline:nn
+ { \clist_count:N \l__litetable_weeklist_clist }
+ {
+ \clist_clear:N \l__week_accumtmp_clist
+ \int_step_inline:nn {##1}
+ {
+ \clist_put_right:Ne \l__week_accumtmp_clist
+ { \clist_item:Nn \l__week_ratio_clist {####1} }
+ }
+ \clist_put_right:Ne \l__week_accum_clist
+ { \int_eval:n { \clist_use:Nn \l__week_accumtmp_clist { + } } }
+ }
+ \int_set:Nn \l__week_num_int
+ {
+ \clist_item:Nn \l__week_accum_clist
+ { \clist_count:N \l__litetable_weeklist_clist }
+ }
+ \dim_set:Nn \l__week_hunit_dim
+ { \fp_eval:n { 1/\l__week_num_int * 14/15 } \paperwidth }
+ }
+\NewDocumentCommand \weeklist { O{} m O{} }
+ { \litetable_weeklist:nn { #1 #3 } {#2} }
-\ExplSyntaxOff
+\NewDocumentCommand \more { m }
+ { \tl_set:Nn \l__litetable_comment_tl {#1} }
-\NewDocumentCommand{\timelist}{ o m }
-{
- \gdef\@timelist{#2}
- \definearray{timelist}{#2}
- \IfNoValueTF{#1}{
- \ifnum \arraycount[2]{timelist}<\arraycount[1]{timelist}
- \def\@classnum{\arraycount[1]{timelist}}
- \else
- \def\@classnum{\arraycount[2]{timelist}}
- \fi
- }{\def\@classnum{#1}}
-}
-\ifcsname @timelist\endcsname
- \relax
- \else
- \def\@classnum{12}
-\fi
-\def\weeklist#1{
- \gdef\@weeklist{#1}
- \definearray{weeklist}{#1}
-}
-\gdef\@weeknum{\arraycount[1]{weeklist}}
+\int_new:N \l__litetable_week_day_int
+\int_set:Nn \l__litetable_week_day_int { 1 }
+\NewDocumentCommand \newday { O{1} }
+ { \int_add:Nn \l__litetable_week_day_int {#1} }
-\RequirePackage{fontawesome5}
-\RequirePackage[hidelinks]{hyperref}
-\newcounter{number}
-\tikzset{
- hyperlink node/.style={
- alias=sourcenode,
- append after command={
- let \p1 = (sourcenode.north west),
- \p2 = (sourcenode.south east),
- \n1 = {\x2-\x1}, \n2 = {\y1-\y2} in
- node [inner sep=0pt, outer sep=auto, anchor=north west,at=(\p1)]
- {\Acrobatmenu{#1}{\XeTeXLinkBox{\phantom{\rule{\n1}{\n2}}}}}
- }
+\keys_define:nn { litetable / frame }
+ {
+ sem.tl_set:N = \l__bg_sem_tl,
+ color.tl_set:N = \l__bg_color_tl,
+ color.initial:n = gray
}
-}
-\NewDocumentCommand{\makeframe}{ o m }{
- \draw [lightergray] (0,0) rectangle (\pagewidth,\pageheight);
- \fill [fill=darkergray] (0,0) rectangle (\pagewidth,{1.5*\pageheight/(2*\@classnum+3.5)});% 顶部深灰色块
- \node at (.5*\pagewidth,{.75*\pageheight/(2*\@classnum+3.5)}) {\huge\bfseries\sffamily #2}; % 标题
- \IfNoValueF{#1}{
- \node [outer sep=auto,hyperlink node=NextPage,left,rectangle,fill=SEM,text=SEM*,draw=none,inner sep=1.75ex,rounded corners=6pt] at (.98*\pagewidth,{.75*\pageheight/(2*\@classnum+3.5)}) {\large\sffamily\;$\rightleftharpoons$~#1\;}; % 学期
+\cs_new_protected_nopar:Npn \litetable_maketable:nn #1
+ {
+ \fill [ \l__bg_color_tl!5 ]
+ (current~page.north~west) rectangle +
+ (\paperwidth, -1.5\l__time_vunit_dim)
+ node [ midway, black, font = \huge\bfseries ] {#1};
+ \tl_if_empty:NF { \l__bg_sem_tl }
+ {
+ \node [ shift = {(-.02\paperwidth, -.75\l__time_vunit_dim)},
+ left, rectangle, fill = DarkBlue!10, text = DarkBlue!60,
+ inner~sep = 2ex, rounded~corners = 8pt, font = \large
+ ] at (current~page.north~east)
+ { \ensuremath\rightleftharpoons\ \l__bg_sem_tl };
+ }
+ % Darker Blocks
+ \int_step_inline:nnnn { 0 } { 2 } { \l__time_num_int }
+ {
+ \filldraw
+ [ fill = \l__bg_color_tl!5, draw = gray,
+ thick, densely~dashed, line~cap = round
+ ]
+ ([shift = {(-.4pt, \fp_eval:n { - 2 * ##1 - 2.5 } \l__time_vunit_dim)}]
+ current~page.north~west
+ ) rectangle + (\paperwidth + .8pt, -2\l__time_vunit_dim);
+ }
+ % Classes numbering
+ \clist_if_empty:NTF { \l__litetable_timelist_clist }
+ {
+ \int_step_inline:nn { \l__time_num_int }
+ {
+ \node
+ [ shift =
+ {(
+ \paperwidth/30,
+ \fp_eval:n { - 2 * ##1 - 1.5 } \l__time_vunit_dim
+ )}, darkgray!80, font = \large\ttfamily\bfseries
+ ] at (current~page.north~west) {##1};
+ }
+ }
+ {
+ \int_step_inline:nn { \l__time_num_int }
+ {
+ \node
+ [ shift =
+ {(
+ \paperwidth/30,
+ \fp_eval:n { - 2 * ##1 - 1 } \l__time_vunit_dim
+ )}, darkgray!80, font = \large\ttfamily\bfseries
+ ] at (current~page.north~west) {##1};
+ }
+ % Classes time
+ \int_step_inline:nn
+ { \clist_count:N \l__litetable_timelist_clist }
+ {
+ \__litetable_get_left:eN
+ {
+ \clist_item:Nn \l__litetable_timelist_clist {##1}
+ } \l__litetable_tmpa_tl
+ \__litetable_get_right:eN
+ {
+ \clist_item:Nn \l__litetable_timelist_clist {##1}
+ } \l__litetable_tmpb_tl
+ \node
+ [ shift =
+ {(
+ \paperwidth/30,
+ \fp_eval:n { - 1.9 - 2 * ##1 } \l__time_vunit_dim
+ )}, gray, font = \ttfamily, align = center
+ ] at (current~page.north~west)
+ { \l__litetable_tmpa_tl\\\l__litetable_tmpb_tl };
+ }
+ }
+ % Weekdays
+ \int_step_inline:nn
+ { \clist_count:N \l__litetable_weeklist_clist }
+ {
+ \__litetable_get_left:eN
+ {
+ \clist_item:Nn \l__litetable_weeklist_clist {##1}
+ } \l__litetable_tmpa_tl
+ \node
+ [ shift =
+ {(\fp_eval:n
+ {(
+ \clist_item:Nn \l__week_accum_clist {##1} -
+ \clist_item:Nn \l__week_ratio_clist {##1}/2
+ )/\l__week_num_int * 14/15 + 1/15
+ } \paperwidth, -2\l__time_vunit_dim
+ )},
+ font = \large\bfseries
+ ] at (current~page.north~west) { \l__litetable_tmpa_tl };
+ }
+ % Comment
+ \tl_if_empty:NF \l__litetable_comment_tl
+ {
+ \node [ yshift = .5\l__time_vunit_dim, left = 1ex,
+ darkgray, font = \small\bfseries
+ ] at (current~page.south~east)
+ { \l__litetable_comment_tl };
+ }
+ \tl_gclear:N \l__litetable_comment_tl
+ }
+\NewDocumentCommand \maketable { O{} m O{} }
+ {
+ \group_begin:
+ \keys_set:nn { litetable / frame } { #1 #3 }
+ \litetable_maketable:nn {#2}
+ \group_end:
}
- \ifodd\@classnum
- \foreach \a in {2,4,...,\@classnum,\@classnum+2}
- \fill [fill=darkergray,yshift=(2*\a-1.5)*\pageheight/(2*\@classnum+3.5)] (0,0) rectangle (\pagewidth,{2*\pageheight/(2*\@classnum+3.5)}); % 中间深灰色块(循环)
- \else
- \foreach \a in {2,4,...,\@classnum}
- \fill [fill=darkergray,yshift=(2*\a-1.5)*\pageheight/(2*\@classnum+3.5)] (0,0) rectangle (\pagewidth,{2*\pageheight/(2*\@classnum+3.5)}); % 中间深灰色块(循环)
- \fill [fill=darkergray,yshift=(2.5+2*\@classnum)*\pageheight/(2*\@classnum+3.5)] (0,0) rectangle (\pagewidth,{\pageheight/(2*\@classnum+3.5)}); % 底部深灰色块
- \fi
- \foreach \a in {0,1,2,...,\@classnum}
- \draw [densely dashed,gray!75,yshift=(2.5+2*\a)*\pageheight/(2*\@classnum+3.5)] (0,0)--(\pagewidth,0); % 分割虚线
-
- % 时间标注
- \setcounter{number}{0}
- \ifcsempty{@timelist}{
- \foreach \a in {1,2,...,\@classnum}
- {
- \node [yshift=(1.5+2*\a)*\pageheight/(2*\@classnum+3.5)] at(\pagewidth/32,0)
- {\bfseries\large\color{blackgray}\texttt{\refstepcounter{number}\thenumber}};
- }
- }{
- \foreach \x in {1,2,...,\@classnum}
+\keys_define:nn { litetable / course }
+ {
+ color.tl_set:N = \l__course_color_tl,
+ color.initial:n = teal,
+ subject.tl_set:N = \l__course_subject_tl,
+ teacher.tl_set:N = \l__course_teacher_tl,
+ location.tl_set:N = \l__course_location_tl,
+ weeks.tl_set:N = \l__default_weeks_tl,
+ weeks.initial:n = \l__default_weeks_tl,
+ }
+\dim_new:N \l__course_infoshift_dim
+\cs_new_protected_nopar:Npn \__litetable_course_box_aux:nn #1#2
+ {
+ % Course box fg
+ \begin{scope}
+ \clip [ preaction = { draw, ultra~thick, \l__course_color_tl!60 },
+ preaction = { fill, \l__course_color_tl!10 },
+ rounded~corners = 8pt
+ ] ([shift =
+ {(
+ \fp_eval:n
+ {
+ \clist_item:Nn \l__week_accum_clist
+ { \l__litetable_week_day_int } -
+ \clist_item:Nn \l__week_ratio_clist
+ { \l__litetable_week_day_int }
+ } \l__week_hunit_dim + \paperwidth/15 + 1.2pt,
+ \fp_eval:n { - .5 - 2 * #1 } \l__time_vunit_dim - 1.2pt
+ )}
+ ]current~page.north~west) rectangle +
+ (
+ \clist_item:Nn \l__week_ratio_clist
+ { \l__litetable_week_day_int } \l__week_hunit_dim - 2.4pt,
+ \fp_eval:n { 2 * ( #1 - #2 - 1 ) } \l__time_vunit_dim + 2.4pt
+ );
+ % Course box bg
+ \fill [ \l__course_color_tl!60 ]
+ ([shift =
+ {(
+ \fp_eval:n
+ {
+ \clist_item:Nn \l__week_accum_clist
+ { \l__litetable_week_day_int } -
+ \clist_item:Nn \l__week_ratio_clist
+ { \l__litetable_week_day_int }
+ } \l__week_hunit_dim + \paperwidth/15,
+ \fp_eval:n { - .5 - 2 * #1 } \l__time_vunit_dim
+ )}
+ ]current~page.north~west) rectangle +
+ (
+ \clist_item:Nn \l__week_ratio_clist
+ { \l__litetable_week_day_int } \l__week_hunit_dim,
+ -\l__time_vunit_dim/2
+ );
+ \end{scope}
+ % Course info
+ \tl_if_eq:NNTF {#1} {#2}% Single-unit height course box
{
- \node [yshift=(2*\x+.9)*\pageheight/(2*\@classnum+3.5)] at (\pagewidth/32,0)
- {\bfseries\color{blackgray}\texttt{\refstepcounter{number}\thenumber}};
- \node[yshift=(2*\x+1.55)*\pageheight/(2*\@classnum+3.5)] at (\pagewidth/32,0)
- {\color{darkgray}\texttt{\arrayitem{timelist}{1}{\x}}};
- \node[yshift=(2*\x+2.1)*\pageheight/(2*\@classnum+3.5)] at (\pagewidth/32,0)
- {\color{darkgray}\texttt{\arrayitem{timelist}{2}{\x}}};
- }
+ \bool_if:nTF
+ {
+ \tl_if_empty_p:N \l__course_location_tl &&
+ \tl_if_empty_p:N \l__course_teacher_tl
+ }
+ { \tl_set:Nn \l_shortcourse_anchor_tl { } }
+ { \tl_set:Nn \l_shortcourse_anchor_tl { above } }
+ \cs_if_exist:NT { \l__course_subject_tl }
+ {
+ \node
+ [ shift =
+ {(
+ \fp_eval:n
+ {
+ \clist_item:Nn \l__week_accum_clist
+ { \l__litetable_week_day_int } -
+ \clist_item:Nn \l__week_ratio_clist
+ { \l__litetable_week_day_int }/2
+ } \l__week_hunit_dim + \paperwidth/15,
+ \fp_eval:n { - 1.75 - #1 - #2 } \l__time_vunit_dim
+ )}, align = center, font = \large\bfseries,
+ \l_shortcourse_anchor_tl, \l__course_color_tl!60
+ ] at (current~page.north~west) { \l__course_subject_tl };
+ }
+ \bool_if:nTF
+ {
+ !\tl_if_empty_p:N \l__course_location_tl &&
+ !\tl_if_empty_p:N \l__course_teacher_tl
+ }
+ { \tl_set:Nn \l_shortcourse_sep_tl { ,~ } }
+ { \tl_set:Nn \l_shortcourse_sep_tl { } }
+ \node
+ [ shift =
+ {(
+ \fp_eval:n
+ {
+ \clist_item:Nn \l__week_accum_clist
+ { \l__litetable_week_day_int } -
+ \clist_item:Nn \l__week_ratio_clist
+ { \l__litetable_week_day_int }/2
+ } \l__week_hunit_dim + \paperwidth/15,
+ \fp_eval:n { - 1.75 - #1 - #2 } \l__time_vunit_dim
+ )}, below, \l__course_color_tl!60, align = center
+ ] at (current~page.north~west)
+ {
+ \tl_if_exist:NT { \l__course_location_tl }
+ { \l__course_location_tl }
+ \l_shortcourse_sep_tl
+ \tl_if_exist:NT { \l__course_teacher_tl }
+ { \l__course_teacher_tl }
+ };
+ }
+ {
+ \bool_if:nTF% Multiply-unit height course box
+ {
+ \tl_if_empty_p:N \l__course_location_tl &&
+ \tl_if_empty_p:N \l__course_teacher_tl
+ }
+ {
+ \tl_set:Nn \l_course_anchor_tl { }
+ \dim_set:Nn \l__course_infoshift_dim { 0pt }
+ }
+ {
+ \tl_set:Nn \l_course_anchor_tl { above }
+ \dim_set:Nn \l__course_infoshift_dim { \l__time_vunit_dim/8 }
+ }
+ \cs_if_exist:NT { \l__course_subject_tl }
+ {
+ \node
+ [ shift =
+ {(
+ \fp_eval:n
+ {
+ \clist_item:Nn \l__week_accum_clist
+ { \l__litetable_week_day_int } -
+ \clist_item:Nn \l__week_ratio_clist
+ { \l__litetable_week_day_int }/2
+ } \l__week_hunit_dim + \paperwidth/15,
+ \fp_eval:n { - 1.5 - #1 - #2 } \l__time_vunit_dim +
+ \l__course_infoshift_dim
+ )}, font = \large\bfseries, \l_course_anchor_tl,
+ \l__course_color_tl!60, align = center
+ ] at (current~page.north~west) { \l__course_subject_tl };
+ }
+ \bool_if:nTF
+ {
+ !\tl_if_empty_p:N \l__course_location_tl &&
+ !\tl_if_empty_p:N \l__course_teacher_tl
+ }
+ { \tl_set:Nn \l_courseinfo_sep_tl { \\ } }
+ { \tl_set:Nn \l_courseinfo_sep_tl { } }
+ \node
+ [ shift =
+ {(
+ \fp_eval:n
+ {
+ \clist_item:Nn \l__week_accum_clist
+ { \l__litetable_week_day_int } -
+ \clist_item:Nn \l__week_ratio_clist
+ { \l__litetable_week_day_int }/2
+ } \l__week_hunit_dim + \paperwidth/15,
+ \fp_eval:n { - 1.625 - #1 - #2 } \l__time_vunit_dim
+ )}, below, \l__course_color_tl!60, align = center
+ ] at (current~page.north~west)
+ {
+ \tl_if_exist:NT { \l__course_location_tl }
+ { \l__course_location_tl }
+ \l_courseinfo_sep_tl
+ \tl_if_exist:NT { \l__course_teacher_tl }
+ { \l__course_teacher_tl }
+ };
+ \node
+ [ shift =
+ {(\clist_item:Nn \l__week_accum_clist
+ { \l__litetable_week_day_int }
+ \l__week_hunit_dim + \paperwidth/15,
+ \fp_eval:n { - 2.5 - 2 * #2 } \l__time_vunit_dim
+ )}, above~left, \l__course_color_tl!60, outer~sep = .5ex
+ ] at (current~page.north~west) { \l__default_weeks_tl };
+ }
+ }
+\litetable_msg_new:nn { course }
+ { \exp_not:N \course~box(s)~exceed~workdays~were~ignored }
+\NewDocumentCommand \course { O{} m O{} m O{} }
+ {
+ \group_begin:
+ \int_compare:nNnTF { \l__litetable_week_day_int - 1 } <
+ { \clist_count:N \l__litetable_weeklist_clist }
+ {
+ \keys_set:nn { litetable / course } { #1 #3 #5 }
+ \__litetable_course_box_aux:nn {#2} {#4}
+ }
+ { \litetable_msg_warning:n { course } }
+ \group_end:
}
- % 星期标注
- \foreach \a in {1,2,...,\@weeknum}
- \node [xshift=\pagewidth/16] at ({.5*(\arrayitem{weeklist}{2}{\a}+\arrayitem{weeklist}{2}{\a+1})*15*\pagewidth/16},{2*\pageheight/(2*\@classnum+3.5)})
- {\arrayitem{weeklist}{1}{\a}};
-
- \ifcsname @sticker\endcsname
- \node [opacity=.3,above left,yshift=(1.5+2*\@classnum)*\pageheight/(2*\@classnum+3.5),inner sep=0pt,outer sep=auto,scale=15] at (\pagewidth,{\pageheight/(2*\@classnum+3.5)}) {\includegraphics[width=\dimeval{\pagewidth/16/\@weeknum}]{\@sticker}};\fi
-}
-
-\newcounter{weekday}
-\def\newday{\addtocounter{weekday}{1}}
-\AtEndEnvironment{tikzpicture}{\setcounter{weekday}{0}}
-\def\sticker#1{\gdef\@sticker{#1}}
-\def\corner#1{\gdef\@corner{#1}}
-\def\weeks#1{\gdef\@weeks{#1}}
-
-\NewDocumentCommand{\course}{O{H1} m m m m m O{\@weeks}}
-{
- \ifcsname @corner\endcsname
- \tikzset{corner/.style={rounded corners=\@corner}}
- \else
- \tikzset{corner/.style={}}
- \fi
- \fill [#1,corner,
- yshift=(2*(#2-1))*\pageheight/(2*\@classnum+3.5),
- xshift=\pagewidth/16]
- ({\arrayitem{weeklist}{2}{\theweekday+1}*15*\pagewidth/16},{2.5*\pageheight/(2*\@classnum+3.5)}) rectangle ++
- ({(\arrayitem{weeklist}{2}{\theweekday+2}-\arrayitem{weeklist}{2}{\theweekday+1})*15*\pagewidth/16},{(2+2*(#3-#2))*\pageheight/(2*\@classnum+3.5)}); % frame
-
- \fill [#1*,
- yshift=(2*(#2-1)+.5)*\pageheight/(2*\@classnum+3.5),
- xshift=\pagewidth/16]
- ({\arrayitem{weeklist}{2}{\theweekday+1}*15*\pagewidth/16},{2.5*\pageheight/(2*\@classnum+3.5)}) --++
- ({(\arrayitem{weeklist}{2}{\theweekday+2}-\arrayitem{weeklist}{2}{\theweekday+1})*15*\pagewidth/16},0)
- { [corner] --++ (0,{(1.5+2*(#3-#2))*\pageheight/(2*\@classnum+3.5)}) --++
- ({(-\arrayitem{weeklist}{2}{\theweekday+2}+\arrayitem{weeklist}{2}{\theweekday+1})*15*\pagewidth/16},0)} -- cycle; % content
-
- \node [#1**,yshift=(#2+#3-1.25)*\pageheight/(2*\@classnum+3.5),
- xshift=\pagewidth/16] at
- ({.5*(\arrayitem{weeklist}{2}{\theweekday+1}+\arrayitem{weeklist}{2}{\theweekday+2})*15*\pagewidth/16},{2.5*\pageheight/(2*\@classnum+3.5)})
- {\heiti\large\bfseries #4}; % course
-
- \node [#1**,above,
- yshift=(#2+#3-.2)*\pageheight/(2*\@classnum+3.5),
- xshift=\pagewidth/16] at
- ({.5*(\arrayitem{weeklist}{2}{\theweekday+1}+\arrayitem{weeklist}{2}{\theweekday+2})*15*\pagewidth/16},{2.5*\pageheight/(2*\@classnum+3.5)})
- {\heiti\bfseries\small #5}; % location
-
- \node [#1**,below,
- yshift=(#2+#3-.2)*\pageheight/(2*\@classnum+3.5),
- xshift=\pagewidth/16] at
- ({.5*(\arrayitem{weeklist}{2}{\theweekday+1}+\arrayitem{weeklist}{2}{\theweekday+2})*15*\pagewidth/16},{2.5*\pageheight/(2*\@classnum+3.5)})
- {\heiti\bfseries\small #6}; % teacher
-
- \ifcsname @weeks\endcsname
- \node [#1**,above left,
- yshift=2*#3*\pageheight/(2*\@classnum+3.5),
- xshift=\pagewidth/16] at
- ({\arrayitem{weeklist}{2}{\theweekday+2}*15*\pagewidth/16},{2.5*\pageheight/(2*\@classnum+3.5)})
- {\heiti\footnotesize #7};
- \fi % weeks
-}
+\endinput
-\def\more#1{
- \node [xshift=-1em,yshift=(2.5+2*\@classnum)*\pageheight/(2*\@classnum+3.5),left] at (\pagewidth,{.5*\pageheight/(2*\@classnum+3.5)}){\small\bfseries\color{darkgray}#1};
-} \ No newline at end of file
+% End of file litetable.cls
diff --git a/Master/texmf-dist/tex/latex/llncs/llncs.cls b/Master/texmf-dist/tex/latex/llncs/llncs.cls
index ea17bb35f5b..e2e2225282c 100644
--- a/Master/texmf-dist/tex/latex/llncs/llncs.cls
+++ b/Master/texmf-dist/tex/latex/llncs/llncs.cls
@@ -1,4 +1,4 @@
-% LLNCS DOCUMENT CLASS -- version 2.24 (29-Jan-2024)
+% LLNCS DOCUMENT CLASS -- version 2.25 (21-Oct-2024)
% Springer Verlag LaTeX2e support for Lecture Notes in Computer Science
%
%%
@@ -19,7 +19,7 @@
%% Right brace \} Tilde \~}
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesClass{llncs}[2024/01/29 v2.24
+\ProvidesClass{llncs}[2024/10/21 v2.25
^^J LaTeX document class for Lecture Notes in Computer Science]
% Options
\let\if@envcntreset\iffalse
@@ -77,123 +77,123 @@
\fi}
%
\def\switcht@albion{%
-\def\abstractname{Abstract.}
-\def\ackname{Acknowledgments.}
-\def\andname{and}
-\def\lastandname{\unskip, and}
-\def\appendixname{Appendix}
-\def\chaptername{Chapter}
-\def\claimname{Claim}
-\def\conjecturename{Conjecture}
-\def\contentsname{Table of Contents}
-\def\corollaryname{Corollary}
-\def\definitionname{Definition}
-\def\discintname{Disclosure of Interests.}
-\def\examplename{Example}
-\def\exercisename{Exercise}
-\def\figurename{Fig.}
-\def\keywordname{{\bf Keywords:}}
-\def\indexname{Index}
-\def\lemmaname{Lemma}
-\def\contriblistname{List of Contributors}
-\def\listfigurename{List of Figures}
-\def\listtablename{List of Tables}
-\def\mailname{{\it Correspondence to\/}:}
-\def\noteaddname{Note added in proof}
-\def\notename{Note}
-\def\partname{Part}
-\def\problemname{Problem}
-\def\proofname{Proof}
-\def\propertyname{Property}
-\def\propositionname{Proposition}
-\def\questionname{Question}
-\def\remarkname{Remark}
-\def\seename{see}
-\def\solutionname{Solution}
-\def\subclassname{{\it Subject Classifications\/}:}
-\def\tablename{Table}
-\def\theoremname{Theorem}}
+\def\abstractname{Abstract.}%
+\def\ackname{Acknowledgments.}%
+\def\andname{and}%
+\def\lastandname{\unskip, and}%
+\def\appendixname{Appendix}%
+\def\chaptername{Chapter}%
+\def\claimname{Claim}%
+\def\conjecturename{Conjecture}%
+\def\contentsname{Table of Contents}%
+\def\corollaryname{Corollary}%
+\def\definitionname{Definition}%
+\def\discintname{Disclosure of Interests.}%
+\def\examplename{Example}%
+\def\exercisename{Exercise}%
+\def\figurename{Fig.}%
+\def\keywordname{{\bf Keywords:}}%
+\def\indexname{Index}%
+\def\lemmaname{Lemma}%
+\def\contriblistname{List of Contributors}%
+\def\listfigurename{List of Figures}%
+\def\listtablename{List of Tables}%
+\def\mailname{{\it Correspondence to\/}:}%
+\def\noteaddname{Note added in proof}%
+\def\notename{Note}%
+\def\partname{Part}%
+\def\problemname{Problem}%
+\def\proofname{Proof}%
+\def\propertyname{Property}%
+\def\propositionname{Proposition}%
+\def\questionname{Question}%
+\def\remarkname{Remark}%
+\def\seename{see}%
+\def\solutionname{Solution}%
+\def\subclassname{{\it Subject Classifications\/}:}%
+\def\tablename{Table}%
+\def\theoremname{Theorem}}%
\switcht@albion
% Names of theorem like environments are already defined
% but must be translated if another language is chosen
%
% French section
\def\switcht@francais{%\typeout{On parle francais.}%
- \def\abstractname{R\'esum\'e.}%
- \def\ackname{Remerciements.}%
- \def\andname{et}%
- \def\lastandname{ et}%
- \def\appendixname{Appendice}%
- \def\chaptername{Chapitre}%
- \def\claimname{Pr\'etention}%
- \def\conjecturename{Hypoth\`ese}%
- \def\contentsname{Table des mati\`eres}%
- \def\corollaryname{Corollaire}%
- \def\definitionname{D\'efinition}%
- \def\discintname{Mention des Int\'{e}r\^{e}ts.}
- \def\examplename{Exemple}%
- \def\exercisename{Exercice}%
- \def\figurename{Fig.}%
- \def\keywordname{{\bf Mots-cl\'e:}}%
- \def\indexname{Index}%
- \def\lemmaname{Lemme}%
- \def\contriblistname{Liste des contributeurs}%
- \def\listfigurename{Liste des figures}%
- \def\listtablename{Liste des tables}%
- \def\mailname{{\it Correspondence to\/}:}%
- \def\noteaddname{Note ajout\'ee \`a l'\'epreuve}%
- \def\notename{Remarque}%
- \def\partname{Partie}%
- \def\problemname{Probl\`eme}%
- \def\proofname{Preuve}%
- \def\propertyname{Caract\'eristique}%
+\def\abstractname{R\'esum\'e.}%
+\def\ackname{Remerciements.}%
+\def\andname{et}%
+\def\lastandname{ et}%
+\def\appendixname{Appendice}%
+\def\chaptername{Chapitre}%
+\def\claimname{Pr\'etention}%
+\def\conjecturename{Hypoth\`ese}%
+\def\contentsname{Table des mati\`eres}%
+\def\corollaryname{Corollaire}%
+\def\definitionname{D\'efinition}%
+\def\discintname{Mention des Int\'{e}r\^{e}ts.}%
+\def\examplename{Exemple}%
+\def\exercisename{Exercice}%
+\def\figurename{Fig.}%
+\def\keywordname{{\bf Mots-cl\'e:}}%
+\def\indexname{Index}%
+\def\lemmaname{Lemme}%
+\def\contriblistname{Liste des contributeurs}%
+\def\listfigurename{Liste des figures}%
+\def\listtablename{Liste des tables}%
+\def\mailname{{\it Correspondence to\/}:}%
+\def\noteaddname{Note ajout\'ee \`a l'\'epreuve}%
+\def\notename{Remarque}%
+\def\partname{Partie}%
+\def\problemname{Probl\`eme}%
+\def\proofname{Preuve}%
+\def\propertyname{Caract\'eristique}%
%\def\propositionname{Proposition}%
- \def\questionname{Question}%
- \def\remarkname{Remarque}%
- \def\seename{voir}%
- \def\solutionname{Solution}%
- \def\subclassname{{\it Subject Classifications\/}:}%
- \def\tablename{Tableau}%
- \def\theoremname{Th\'eor\`eme}%
+\def\questionname{Question}%
+\def\remarkname{Remarque}%
+\def\seename{voir}%
+\def\solutionname{Solution}%
+\def\subclassname{{\it Subject Classifications\/}:}%
+\def\tablename{Tableau}%
+\def\theoremname{Th\'eor\`eme}%
}
%
% German section
\def\switcht@deutsch{%\typeout{Man spricht deutsch.}%
- \def\abstractname{Zusammenfassung.}%
- \def\ackname{Danksagung.}%
- \def\andname{und}%
- \def\lastandname{ und}%
- \def\appendixname{Anhang}%
- \def\chaptername{Kapitel}%
- \def\claimname{Behauptung}%
- \def\conjecturename{Hypothese}%
- \def\contentsname{Inhaltsverzeichnis}%
- \def\corollaryname{Korollar}%
+\def\abstractname{Zusammenfassung.}%
+\def\ackname{Danksagung.}%
+\def\andname{und}%
+\def\lastandname{ und}%
+\def\appendixname{Anhang}%
+\def\chaptername{Kapitel}%
+\def\claimname{Behauptung}%
+\def\conjecturename{Hypothese}%
+\def\contentsname{Inhaltsverzeichnis}%
+\def\corollaryname{Korollar}%
%\def\definitionname{Definition}%
- \def\discintname{Offenlegung von Interessen.}
- \def\examplename{Beispiel}%
- \def\exercisename{\"Ubung}%
- \def\figurename{Abb.}%
- \def\keywordname{{\bf Schl\"usselw\"orter:}}%
- \def\indexname{Index}%
+\def\discintname{Offenlegung von Interessen.}%
+\def\examplename{Beispiel}%
+\def\exercisename{\"Ubung}%
+\def\figurename{Abb.}%
+\def\keywordname{{\bf Schl\"usselw\"orter:}}%
+\def\indexname{Index}%
%\def\lemmaname{Lemma}%
- \def\contriblistname{Mitarbeiter}%
- \def\listfigurename{Abbildungsverzeichnis}%
- \def\listtablename{Tabellenverzeichnis}%
- \def\mailname{{\it Correspondence to\/}:}%
- \def\noteaddname{Nachtrag}%
- \def\notename{Anmerkung}%
- \def\partname{Teil}%
+\def\contriblistname{Mitarbeiter}%
+\def\listfigurename{Abbildungsverzeichnis}%
+\def\listtablename{Tabellenverzeichnis}%
+\def\mailname{{\it Correspondence to\/}:}%
+\def\noteaddname{Nachtrag}%
+\def\notename{Anmerkung}%
+\def\partname{Teil}%
%\def\problemname{Problem}%
- \def\proofname{Beweis}%
- \def\propertyname{Eigenschaft}%
+\def\proofname{Beweis}%
+\def\propertyname{Eigenschaft}%
%\def\propositionname{Proposition}%
- \def\questionname{Frage}%
- \def\remarkname{Anmerkung}%
- \def\seename{siehe}%
- \def\solutionname{L\"osung}%
- \def\subclassname{{\it Subject Classifications\/}:}%
- \def\tablename{Tabelle}%
+\def\questionname{Frage}%
+\def\remarkname{Anmerkung}%
+\def\seename{siehe}%
+\def\solutionname{L\"osung}%
+\def\subclassname{{\it Subject Classifications\/}:}%
+\def\tablename{Tabelle}%
%\def\theoremname{Theorem}%
}
diff --git a/Master/texmf-dist/tex/latex/luatikz/luatikz.lua b/Master/texmf-dist/tex/latex/luatikz/luatikz.lua
new file mode 100644
index 00000000000..1c18f2f6278
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/luatikz/luatikz.lua
@@ -0,0 +1,1999 @@
+local _version = '2.12.0'
+
+if tikz
+then
+ if tikz.version ~= _version
+ then
+ error( 'version chaos' )
+ end
+ return
+end
+
+tikz = { version = _version }
+
+--==========================================================================--
+-- DEFINES
+--==========================================================================--
+
+-- directions
+tikz.north = 'north'
+tikz.north_east = 'north east'
+tikz.east = 'east'
+tikz.south_east = 'south east'
+tikz.south = 'south'
+tikz.south_west = 'south west'
+tikz.west = 'west'
+tikz.north_west = 'north west'
+
+-- colors
+tikz.black = 'black'
+tikz.blue = 'blue'
+tikz.brown = 'brown'
+tikz.cyan = 'cyan'
+tikz.darkgray = 'darkgray'
+tikz.gray = 'gray'
+tikz.green = 'green'
+tikz.lightgray = 'lightgray'
+tikz.lime = 'lime'
+tikz.magenta = 'magenta'
+tikz.olive = 'olive'
+tikz.orange = 'orange'
+tikz.pink = 'pink'
+tikz.purple = 'purple'
+tikz.red = 'red'
+tikz.teal = 'teal'
+tikz.violet = 'violet'
+tikz.yellow = 'yellow'
+tikz.white = 'white'
+
+-- align
+tikz.center = 'center'
+tikz.left = 'left'
+tikz.right = 'right'
+
+tikz.none = 'none'
+
+-- line caps
+tikz.round = 'round'
+
+--==========================================================================--
+-- HELPERS --
+--==========================================================================--
+
+-- if defined writes output here
+local outfile
+
+--
+-- Prints arguments to tex and to stdout.
+--
+local function tprint( ... )
+ local args = {...}
+ print( table.concat( args ) )
+
+ if tex
+ then
+ tex.print( table.concat( args ) )
+ end
+
+ if outfile
+ then
+ outfile:write( table.concat( args ) )
+ outfile:write( '\n%%% DO NOT EDIT THIS FILE %%%\n' )
+ end
+end
+tikz.tprint = tprint
+
+--
+-- Flattens an object stack.
+--
+-- The content of all numerated unclassed objects
+-- are put into a copy of obj.
+--
+local function flatten( o )
+ local r = { }
+ for _, v in ipairs( o )
+ do
+ if type( v ) == 'table' and getmetatable( v ) == nil
+ then
+ local fv = flatten( v )
+ for _, fvv in ipairs( fv )
+ do
+ table.insert( r, fvv )
+ end
+ for k, vv in pairs( fv )
+ do
+ if type( k ) ~= 'number'
+ then
+ r[ k ] = vv
+ end
+ end
+ else
+ table.insert( r, v )
+ end
+ end
+ -- copies (and overwrites) all named attributes
+ for k, v in pairs( o )
+ do
+ if type( k ) ~= 'number'
+ then
+ r[ k ] = v
+ end
+ end
+ return r
+end
+
+--
+-- A key marking an object having a zString function.
+--
+local _zString = { }
+
+--
+-- Converts everything to a tikz string.
+--
+local function zString( v )
+ if type( v ) == 'table' and v[ _zString ]
+ then
+ return v[ _zString ]( v )
+ end
+ return tostring( v )
+end
+
+--
+-- Creates an immutable class.
+--
+local function immutable( definer )
+ local def = { }
+ local lazy = { }
+ local proto = { }
+ def.lazy = lazy
+ def.proto = proto
+ definer( def ) -- the callee fills in data
+ local k = { } -- key the hidden table
+
+ local mt = { }
+ mt.__index =
+ function( self, key )
+ if key == 'id' then return def.id end
+
+ -- first check if native value
+ local v = self[ k ][ key ]
+ if v then return v end
+
+ -- then if a lazy function
+ local f = lazy[ key ]
+ if f
+ then
+ local v = f( self )
+ self[ k ][ key ] = v -- cache
+ return v
+ end
+
+ -- then if a proto value
+ v = proto[ key ]
+ if v
+ then
+ if type( v ) == 'function'
+ then
+ return(
+ function(...)
+ return v( self, table.unpack( {...} ) )
+ end
+ )
+ else
+ return v
+ end
+ end
+
+ -- otherwise
+ -- error( 'invalid property' )
+ end
+
+ mt.__newindex =
+ function( )
+ error( 'this is an immutable' )
+ end
+
+ if def.add
+ then
+ mt.__add = def.add
+ end
+
+ if def.concat
+ then
+ mt.__concat = def.concat
+ end
+
+ if def.div
+ then
+ mt.__div = def.div
+ end
+
+ if def.mul
+ then
+ mt.__mul = def.mul
+ end
+
+ if def.sub
+ then
+ mt.__sub = def.sub
+ end
+
+ if def.tostring
+ then
+ mt.__tostring = def.tostring
+ end
+
+ return function(...)
+ local args = {...}
+ local nt = def.constructor( table.unpack( args ) )
+ local o = { [ k ] = nt, [ _zString ] = def.zString }
+ setmetatable( o, mt )
+ return o
+ end
+end
+tikz.immutable = immutable
+
+--
+-- writes out direct options
+--
+local function _opts( s, _opts, haveOpts )
+ if not _opts
+ then
+ return haveOpts
+ end
+
+ for k, v in pairs( _opts )
+ do
+ if not haveOpts
+ then
+ table.insert( s, '[' )
+ else
+ table.insert( s, ',' )
+ end
+ haveOpts = true
+ if type( k ) == 'number'
+ then
+ table.insert( s, v )
+ else
+ table.insert( s, k..'='..v )
+ end
+ end
+ return haveOpts
+end
+
+-------------------------------------------------------------------------------
+-- Point.
+-------------------------------------------------------------------------------
+tikz.p =
+immutable( function( def )
+ def.id = 'point'
+
+ def.add =
+ function( left, right )
+ if right.id == 'line'
+ or right.id == 'bezier3'
+ then
+ return right + left
+ end
+
+ return tikz.p{ left.x + right.x, left.y + right.y }
+ end
+
+ def.concat =
+ function( left, right )
+ return zString( left )..zString( right )
+ end
+
+ -- constructor
+ def.constructor =
+ function( args )
+ return { x = args[ 1 ], y = args[ 2 ] }
+ end
+
+ -- divisor
+ def.div =
+ function( left, right )
+ return tikz.p{ left.x / right, left.y / right }
+ end
+
+ def.mul =
+ function( left, right )
+ if type( right ) == 'number'
+ then
+ return tikz.p{ left.x * right, left.y * right }
+ elseif type( left ) == 'number'
+ then
+ return tikz.p{ left * right.x, left * right.y }
+ elseif type( right ) == 'table'
+ then
+ if right.id == 'point'
+ then
+ return tikz.p{ left.x * right.x, left.y * right.y }
+ end
+ end
+ error( 'invalid operation' )
+ end
+
+ def.sub =
+ function( left, right )
+ return tikz.p{ left.x - right.x, left.y - right.y }
+ end
+
+ def.tostring =
+ function( self )
+ return 'p{ '..self.x..', '..self.y..' }'
+ end
+
+ -- converts to a tikz string.
+ def.zString =
+ function( self )
+ return '('..self.x..','..self.y..')'
+ end
+end )
+
+-------------------------------------------------------------------------------
+-- A full circle.
+-------------------------------------------------------------------------------
+tikz.circle =
+immutable( function( def )
+ def.id = 'circle'
+
+ -- constructor
+ def.constructor =
+ function( args )
+ return {
+ at = args.at,
+ radius = args.radius,
+ }
+ end
+
+ -- converts to a tikz string.
+ def.zString =
+ function( self )
+ return zString( self.at )..' circle ('.. self.radius .. ')'
+ end
+end )
+
+-------------------------------------------------------------------------------
+-- A quadratic bezier curve.
+-------------------------------------------------------------------------------
+tikz.bezier2 =
+immutable( function( def )
+ def.id = 'bezier2'
+
+ -- constructor
+ def.constructor =
+ function( args )
+ local p1 = args.p1
+ local pc = args.pc
+ local p2 = args.p2
+
+ return {
+ p1 = p1,
+ pc = pc,
+ p2 = p2,
+ }
+ end
+
+ -- draws helping information
+ def.proto.drawHelpers =
+ function( self, prefix )
+ tikz.draw{ draw = 'red', tikz.line{ self.p1, self.pc } }
+ tikz.draw{ draw = 'blue', tikz.line{ self.pc, self.p2 } }
+ if prefix ~= nil
+ then
+ tikz.put{ tikz.node{
+ at = self.p1,
+ anchor = 'north west',
+ text = prefix .. '1',
+ } }
+ tikz.put{ tikz.node{
+ at = self.pc,
+ anchor = 'north west',
+ text = prefix .. 'c',
+ } }
+ tikz.put{ tikz.node{
+ at = self.p2,
+ anchor = 'north west',
+ text = prefix .. '2',
+ } }
+ end
+ end
+
+ -- converts to a tikz string.
+ def.zString =
+ function( self )
+ local s = { }
+ table.insert( s, zString( self.p1 ) )
+ table.insert( s, '.. controls' )
+ table.insert( s, zString( self.pc ) )
+ table.insert( s, '..' )
+ table.insert( s, zString( self.p2 ) )
+ return table.concat( s, ' ' )
+ end
+end )
+
+-------------------------------------------------------------------------------
+-- A cubic bezier curve.
+-------------------------------------------------------------------------------
+tikz.bezier3 =
+immutable( function( def )
+ def.id = 'bezier3'
+
+ def.add =
+ function( left, right )
+ if right.id == 'point'
+ then
+ return tikz.bezier3{
+ p1 = left.p1 + right,
+ pc1 = left.pc1 + right,
+ pc2 = left.pc2 + right,
+ p2 = left.p2 + right,
+ }
+ end
+ error( 'unknown operation' )
+ end
+
+ -- constructor
+ def.constructor =
+ function( args )
+ local p1 = args.p1
+ local pc1 = args.pc1
+ local pc2 = args.pc2
+ local p2 = args.p2
+
+ return {
+ p1 = p1,
+ pc1 = pc1,
+ pc2 = pc2,
+ p2 = p2,
+ }
+ end
+
+ -- draws helping information
+ def.proto.drawHelpers =
+ function( self, prefix )
+ tikz.draw{ draw = 'red', tikz.line{ self.p1, self.pc1 } }
+ tikz.draw{ draw = 'yellow', tikz.line{ self.pc1, self.pc2 } }
+ tikz.draw{ draw = 'blue', tikz.line{ self.pc2, self.p2 } }
+ if prefix ~= nil
+ then
+ tikz.put{ tikz.node{
+ at = self.p1,
+ anchor = 'north west',
+ text = prefix .. '1',
+ } }
+ tikz.put{ tikz.node{
+ at = self.pc1,
+ anchor = 'north west',
+ text = prefix .. 'c1',
+ } }
+ tikz.put{ tikz.node{
+ at = self.pc2,
+ anchor = 'north west',
+ text = prefix .. 'c2',
+ } }
+ tikz.put{ tikz.node{
+ at = self.p2,
+ anchor = 'north west',
+ text = prefix .. '2',
+ } }
+ end
+ end
+
+ def.mul =
+ function( left, right )
+ if type( right ) == 'number'
+ then
+ return tikz.bezier3 {
+ p1 = left.p1 * right,
+ pc1 = left.pc1 * right,
+ pc2 = left.pc2 * right,
+ p2 = left.p2 * right,
+ }
+ elseif type( left ) == 'number'
+ then
+ return tikz.bezier3 {
+ p1 = right.p1 * left,
+ pc1 = right.pc1 * left,
+ pc2 = right.pc2 * left,
+ p2 = right.p2 * left,
+ }
+ else
+ error( 'invalid operation' )
+ end
+ end
+
+ -- point in center
+ def.lazy.pc =
+ function( self )
+ return self.pt( 0.5 )
+ end
+
+ -- gets angle at t (0-1)
+ def.proto.phit =
+ function( self, t )
+ local p1 = self.p1
+ local pc1 = self.pc1
+ local pc2 = self.pc2
+ local p2 = self.p2
+
+ local u = 1 - t
+ local uu3 = 3 * u * u
+ local ut6 = 6 * u * t
+ local tt3 = 3 * t * t
+
+ return math.atan2(
+ -uu3 * p1.y + uu3 * pc1.y - ut6 * pc1.y + ut6 * pc2.y - tt3 * pc2.y + tt3 * p2.y,
+ -uu3 * p1.x + uu3 * pc1.x - ut6 * pc1.x + ut6 * pc2.x - tt3 * pc2.x + tt3 * p2.x
+ )
+ end
+
+ -- reverts p1 and p2 and pc1 and pc2 respectively
+ def.lazy.revert =
+ function( self )
+ return tikz.bezier3{
+ p1 = self.p2,
+ pc1 = self.pc2,
+ pc2 = self.pc1,
+ p2 = self.p1,
+ }
+ end
+
+ -- gets point at t (0-1)
+ def.proto.pt =
+ function( self, t )
+ if type( t ) ~= 'number' or t < 0 or t > 1
+ then
+ error( 'invalid pt' )
+ end
+
+ local p1 = self.p1
+ local pc1 = self.pc1
+ local pc2 = self.pc2
+ local p2 = self.p2
+ local t1 = 1 - t
+
+ return(
+ tikz.p{
+ t1^3*p1.x + 3*t*t1^2*pc1.x + 3 *t^2*t1*pc2.x + t^3*p2.x,
+ t1^3*p1.y + 3*t*t1^2*pc1.y + 3 *t^2*t1*pc2.y + t^3*p2.y
+ }
+ )
+ end
+
+ def.sub =
+ function( left, right )
+ if right.id == 'point'
+ then
+ return tikz.bezier3{
+ p1 = left.p1 - right,
+ pc1 = left.pc1 - right,
+ pc2 = left.pc2 - right,
+ p2 = left.p2 - right,
+ }
+ end
+ error( 'unknown operation' )
+ end
+
+ -- converts to a tikz string.
+ def.zString =
+ function( self )
+ local s = { }
+ table.insert( s, zString( self.p1 ) )
+ table.insert( s, '.. controls' )
+ table.insert( s, zString( self.pc1 ) )
+ table.insert( s, 'and' )
+ table.insert( s, zString( self.pc2 ) )
+ table.insert( s, '..' )
+ table.insert( s, zString( self.p2 ) )
+ return table.concat( s, ' ' )
+ end
+end )
+
+-------------------------------------------------------------------------------
+-- A bend line
+-------------------------------------------------------------------------------
+tikz.bline =
+immutable( function( def )
+ def.id = 'bline'
+
+ -- moves the line.
+ def.add =
+ function( left, right )
+ if right.id == 'point'
+ then
+ return tikz.line{ p1 = left.p1 + right, p2 = left.p2 + right }
+ end
+ error( 'unknown operation' )
+ end
+
+ -- constructor
+ --
+ -- either
+ -- { p1, p2 }, (a list )
+ -- { p1 = ..., p2 = ... },
+ -- { pc = ..., phi = ..., length = ... },
+ def.constructor =
+ function( args )
+ local p1
+ local p2
+
+ if #args > 1
+ then
+ -- list
+ p1 = args[ 1 ]
+ p2 = args[ 2 ]
+ elseif type( args.p1 ) ~= 'nil' and type( args.p2 ) ~= 'nil'
+ then
+ p1 = args.p1
+ p2 = args.p2
+ elseif args.phi ~= nil
+ then
+ local phi = args.phi
+ if args.pc ~= nil
+ then
+ if args.p1 ~= nil
+ or args.p2 ~= nil
+ then
+ error( 'invalid line options', 2 )
+ end
+ local pc = args.pc
+ local len05 = args.length / 2
+ p1 = pc + tikz.p{ math.cos( phi ), math.sin( phi ) } * len05
+ p2 = pc - tikz.p{ math.cos( phi ), math.sin( phi ) } * len05
+ elseif type( args.p1 ) ~= 'nil'
+ then
+ if args.pc ~= nil
+ or args.p2 ~= nil
+ then
+ error( 'invalid line options', 2 )
+ end
+ p1 = args.p1
+ p2 = p1 + tikz.p{ math.cos( phi ), math.sin( phi ) } * args.length
+ else
+ error( 'invalid line options', 2 )
+ end
+ else
+ error( 'invalid line options', 2 )
+ end
+
+ return {
+ bend_left = args.bend_left,
+ bend_right = args.bend_right,
+ p1 = p1,
+ p2 = p2,
+ }
+ end
+
+ -- converts to a cubic bezier (that should look the same)
+ def.lazy.bezier3 =
+ function( self )
+ local phi
+ if self.bend_right ~= nil then
+ phi = self.bend_right * math.pi / 180
+ else
+ phi = -self.bend_left * math.pi / 180
+ end
+ local line = self.line
+ local phil = line.phi
+ local len = line.length * 0.3915
+ local lt1 =
+ tikz.line{
+ p1 = line.p1,
+ phi = phil-phi,
+ length = len
+ }
+ local lt2 =
+ tikz.line{
+ p1 = line.p2,
+ phi = phil+phi+math.pi,
+ length = len
+ }
+
+ return tikz.bezier3{
+ p1 = line.p1,
+ pc1 = lt1.p2,
+ pc2 = lt2.p2,
+ p2 = line.p2,
+ }
+ end
+
+ -- converts to a straight line.
+ def.lazy.line =
+ function( self )
+ return tikz.line{
+ p1 = self.p1,
+ p2 = self.p2,
+ }
+ end
+
+ -- point in center
+ def.lazy.pc =
+ function( self )
+ return self.bezier3.pc
+ end
+
+ -- gets point at t (0-1).
+ def.proto.pt =
+ function( self, t )
+ return self.bezier3.pt( t )
+ end
+
+ -- converts to a tikz string.
+ def.zString =
+ function( self )
+ local s = { }
+ table.insert( s, zString( self.p1 ) )
+ table.insert( s, 'to' )
+ if self.bend_left ~= nil
+ then
+ table.insert( s, '[bend left='..self.bend_left..']' )
+ end
+ if self.bend_right ~= nil
+ then
+ table.insert( s, '[bend right='..self.bend_right..']' )
+ end
+ table.insert( s, zString( self.p2 ) )
+ return table.concat( s, ' ' )
+ end
+end )
+
+-------------------------------------------------------------------------------
+-- A curve is defined by a list of points.
+-------------------------------------------------------------------------------
+curve =
+immutable( function( def )
+ def.id = 'curve'
+
+ -- constructor
+ def.constructor =
+ function( args )
+ return {
+ points = args.points,
+ tension = args.tension,
+ cycle = args.cycle,
+ }
+ end
+
+ -- draws helping information
+ def.proto.drawHelpers =
+ function( self, prefix )
+ local points = self.points
+ for i, pi in ipairs( points )
+ do
+ tikz.draw{
+ fill = 'black',
+ tikz.circle{
+ at = pi,
+ radius = 0.05,
+ }
+ }
+ if prefix ~= nil
+ then
+ tikz.put{ tikz.node{
+ at = pi,
+ anchor = 'north west',
+ text = prefix .. i,
+ } }
+ end
+ end
+ end
+
+ -- converts to a tikz string.
+ def.zString =
+ function( self )
+ local s = { 'plot' }
+ table.insert( s, '[' )
+ if self.cycle
+ then
+ table.insert( s, 'smooth cycle' )
+ else
+ table.insert( s, 'smooth' )
+ end
+ if self.tension then
+ table.insert( s, ',tension='..self.tension )
+ end
+ table.insert( s, ']' )
+ local points = self.points
+ table.insert( s, 'coordinates' )
+ table.insert( s, '{' )
+ for _, p in ipairs( points )
+ do
+ table.insert( s, zString( p ) )
+ end
+ table.insert( s, '}' )
+ return table.concat( s, ' ' )
+ end
+end )
+
+-------------------------------------------------------------------------------
+-- A full ellipse.
+-------------------------------------------------------------------------------
+tikz.ellipse =
+immutable( function( def )
+ def.id = 'ellipse'
+
+ -- constructor
+ def.constructor =
+ function( args )
+ local at = args.at
+ local xradius = args.xradius
+ local yradius = args.yradius
+
+ return {
+ at = at,
+ xradius = xradius,
+ yradius = yradius,
+ }
+ end
+
+ -- intersect with a line.
+ def.proto.intersectLine =
+ function( self, line )
+ local at = self.at
+ local rx = self.xradius
+ local ry = self.yradius
+ local p1 = line.p1
+ local p2 = line.p2
+
+ local x0 = p1.x
+ local y0 = p1.y
+ local x1 = p2.x
+ local y1 = p2.y
+ local cx = at.x
+ local cy = at.y
+
+ x0 = x0 - cx
+ y0 = y0 - cy
+ x1 = x1 - cx
+ y1 = y1 - cy
+
+ local A = ((x1 - x0) * (x1 - x0)) / rx / rx + ((y1 - y0) * (y1 - y0)) / ry / ry
+ local B = (2 * x0 * (x1 - x0)) / rx / rx + (2 * y0 * (y1 - y0)) / ry / ry
+ local C = (x0 * x0) / rx / rx + (y0 * y0) / ry / ry - 1
+ local D = B * B - 4 * A * C
+
+ local tv = { }
+ if D == 0
+ then
+ table.insert( tv, -B / 2 / A )
+ else
+ table.insert( tv, (-B + math.sqrt(D)) / 2 / A )
+ table.insert( tv, (-B - math.sqrt(D)) / 2 / A )
+ end
+
+ local r = { }
+ for _, t in ipairs( tv )
+ do
+ if t >= 0 and t <= 1
+ then
+ table.insert(
+ r,
+ p1 + tikz.p{ t * line.length * math.cos( line.phi ), t * line.length * math.sin( line.phi ) }
+ )
+ end
+ end
+
+ if #r == 0
+ then
+ return
+ elseif #r == 1
+ then
+ return r[ 1 ]
+ else
+ return r
+ end
+ end
+
+ -- converts to a tikz string.
+ def.zString =
+ function( self )
+ s = { }
+ table.insert( s, zString( self.at ) )
+ table.insert( s, 'ellipse' )
+ table.insert( s, '[' )
+ table.insert( s, 'x radius =' )
+ table.insert( s, zString( self.xradius ) )
+ table.insert( s, ', y radius =' )
+ table.insert( s, zString( self.yradius ) )
+ table.insert( s, ']' )
+ return table.concat( s, ' ' )
+ end
+end )
+
+-------------------------------------------------------------------------------
+-- An ellipse part.
+-------------------------------------------------------------------------------
+tikz.ellipseArc =
+immutable( function( def )
+ def.id = 'ellipseArc'
+
+ -- constructor
+ def.constructor =
+ function( args )
+ return {
+ at = args.at,
+ from = args.from,
+ to = args.to,
+ xradius = args.xradius,
+ yradius = args.yradius,
+ }
+ end
+
+ -- converts to a tikz string.
+ def.zString =
+ function( self )
+ s = { }
+ table.insert( s, 'plot' )
+ table.insert( s, '[domain =' )
+ table.insert( s, self.from )
+ table.insert( s, ':' )
+ table.insert( s, self.to )
+ table.insert( s, ',variable = \\phi,smooth]' )
+ table.insert( s,
+ '({ '..zString(self.at.x)..'+'..zString(self.xradius)..'*cos(\\phi)},'
+ ..'{ '..zString(self.at.y)..'+'..zString(self.yradius)..'*sin(\\phi)})'
+ )
+ return table.concat( s, ' ' )
+ end
+end )
+
+-------------------------------------------------------------------------------
+-- Single line (segment).
+-------------------------------------------------------------------------------
+tikz.line =
+immutable( function( def )
+ def.id = 'line'
+
+ -- moves the line.
+ def.add =
+ function( left, right )
+ if right.id == 'point'
+ then
+ return tikz.line{
+ p1 = left.p1 + right,
+ p2 = left.p2 + right,
+ }
+ end
+ error( 'unknown operation' )
+ end
+
+ -- multiplicator
+ def.mul =
+ function( left, right )
+ if type( left ) == 'number'
+ then
+ return tikz.line{
+ p1 = right.p1 * left,
+ p2 = right.p2 * left,
+ }
+ elseif type( right ) == 'number'
+ then
+ return tikz.line{
+ p1 = left.p1 * right,
+ p2 = left.p2 * right,
+ }
+ end
+ error( 'unknown operation' )
+ end
+
+ -- constructor
+ --
+ -- either
+ -- { p1, p2 }, (a list )
+ -- { p1 = ..., p2 = ... },
+ -- { pc = ..., phi = ..., length = ... },
+ def.constructor =
+ function( args )
+ local p1
+ local p2
+
+ if #args > 1
+ then
+ -- list
+ p1 = args[ 1 ]
+ p2 = args[ 2 ]
+ elseif type( args.p1 ) ~= 'nil' and type( args.p2 ) ~= 'nil'
+ then
+ p1 = args.p1
+ p2 = args.p2
+ elseif args.phi ~= nil
+ then
+ local phi = args.phi
+ if args.pc ~= nil
+ then
+ if args.p1 ~= nil
+ or args.p2 ~= nil
+ then
+ error( 'invalid line options', 2 )
+ end
+ local pc = args.pc
+ local len05 = args.length / 2
+ p1 = pc + tikz.p{ math.cos( phi ), math.sin( phi ) } * len05
+ p2 = pc - tikz.p{ math.cos( phi ), math.sin( phi ) } * len05
+ elseif type( args.p1 ) ~= 'nil'
+ then
+ if args.pc ~= nil
+ or args.p2 ~= nil
+ then
+ error( 'invalid line options', 2 )
+ end
+ p1 = args.p1
+ p2 = p1 + tikz.p{ math.cos( phi ), math.sin( phi ) } * args.length
+ else
+ error( 'invalid line options', 2 )
+ end
+ else
+ error( 'invalid line options', 2 )
+ end
+
+ return {
+ p1 = p1,
+ p2 = p2,
+ }
+ end
+
+ -- divisor
+ def.div =
+ function( left, right )
+ if type( right ) == 'number'
+ then
+ return tikz.line{
+ p1 = left.p1 / right,
+ p2 = left.p2 / right,
+ }
+ end
+ error( 'unknown operation' )
+ end
+
+ -- length of line.
+ def.lazy.length =
+ function( self )
+ local p1 = self.p1
+ local p2 = self.p2
+ local dx = p2.x - p1.x
+ local dy = p2.y - p1.y
+ local result = math.sqrt( dx*dx + dy*dy )
+ return result
+ end
+
+ -- center of line.
+ def.lazy.pc =
+ function( self )
+ local p1 = self.p1
+ local p2 = self.p2
+ local result = tikz.p{ ( p1.x + p2.x ) / 2, ( p1.y + p2.y ) / 2 }
+ return result
+ end
+
+ -- angle of line.
+ def.lazy.phi =
+ function( self )
+ local p1 = self.p1
+ local p2 = self.p2
+ local result = math.atan2( p2.y - p1.y, p2.x - p1.x )
+ return result
+ end
+
+ -- gets point at t (0-1).
+ def.proto.pt =
+ function( self, t )
+ if type( t ) ~= 'number' or t < 0 or t > 1
+ then
+ error( 'invalid pt' )
+ end
+
+ local p1 = self.p1
+ local p2 = self.p2
+ local phi = self.phi
+ local lt = self.length * t
+
+ return(
+ tikz.p{
+ p1.x + lt * math.cos( phi ),
+ p1.y + lt * math.sin( phi ),
+ }
+ )
+ end
+
+ -- intersects the line with another.
+ def.proto.intersectLine =
+ function( self, line )
+ local p1 = self.p1
+ local p2 = self.p2
+ local p3 = line.p1
+ local p4 = line.p2
+
+ if p1.x == p3.x and p1.y == p3.y then return p1 end
+ if p1.x == p4.x and p1.y == p4.y then return p1 end
+ if p2.x == p3.x and p2.y == p3.y then return p2 end
+ if p2.x == p4.x and p2.y == p4.y then return p2 end
+
+ local den = ( p1.x - p2.x )*( p3.y - p4.y ) - ( p1.y - p2.y )*( p3.x - p4.x );
+ if den == 0
+ then
+ -- doesn't intersect
+ return
+ end
+
+ local a = p1.x*p2.y - p1.y*p2.x;
+ local b = p3.x*p4.y - p3.y*p4.x;
+ local x = ( a*( p3.x - p4.x ) - ( p1.x - p2.x )*b ) / den;
+ local y = ( a*( p3.y - p4.y ) - ( p1.y - p2.y )*b ) / den;
+
+ if
+ (
+ ( x >= p1.x and x <= p2.x or x <= p1.x and x >= p2.x )
+ and ( x >= p3.x and x <= p4.x or x <= p3.x and x >= p4.x )
+ )
+ or
+ (
+ ( y >= p1.y and y <= p2.y or y <= p1.y and y >= p2.y )
+ and ( y >= p3.y and y <= p4.y or y <= p3.y and y >= p4.y )
+ )
+ then
+ return tikz.p{ x, y }
+ end
+ end
+
+ -- converts to a tikz string.
+ def.zString =
+ function( self )
+ local s = { }
+ table.insert( s, zString( self.p1 ) )
+ table.insert( s, '--' )
+ table.insert( s, zString( self.p2 ) )
+ return table.concat( s, ' ' )
+ end
+end )
+
+-------------------------------------------------------------------------------
+-- Function plot.
+-------------------------------------------------------------------------------
+tikz.plot =
+immutable( function( def )
+ def.id = 'plot'
+
+ -- constructor
+ def.constructor =
+ function( args )
+ return {
+ at = args.at,
+ from = args.from,
+ to = args.to,
+ step = args.step,
+ tension = args.tension,
+ func = args.func,
+ }
+ end
+
+ def.lazy.points =
+ function( self )
+ local from = self.from
+ local to = self.to
+ local step = self.step
+ if step == nil
+ then
+ step = ( to - from ) / 100
+ end
+ local points = { }
+ local d
+ local at = self.at or tikz.p0
+ for d = from, to, step
+ do
+ table.insert( points, at + self.func( d ) )
+ end
+ return points
+ end
+
+ -- converts to a tikz string.
+ def.zString =
+ function( self )
+ local s = { 'plot' }
+ table.insert( s, '[' )
+ table.insert( s, 'smooth' )
+ if self.tension
+ then
+ table.insert( s, ',tension='..self.tension )
+ end
+ table.insert( s, ']' )
+
+ local points = self.points
+
+ table.insert( s, 'coordinates' )
+ table.insert( s, '{' )
+ for _, p in ipairs( points )
+ do
+ table.insert( s, zString( p ) )
+ end
+ table.insert( s, '}' )
+ return table.concat( s, ' ' )
+ end
+end )
+
+-------------------------------------------------------------------------------
+-- A superEllipse
+-------------------------------------------------------------------------------
+tikz.superEllipse =
+immutable( function( def )
+ def.id = 'superEllipse'
+
+ -- constructor
+ def.constructor =
+ function( args )
+ local at = args.at
+ local n = args.n
+ local xradius = args.xradius
+ local yradius = args.yradius
+
+ return {
+ at = at,
+ n = n,
+ xradius = xradius,
+ yradius = yradius,
+ }
+ end
+
+ -- returns p on degree (0-360)
+ def.proto.pdeg =
+ function( self, t )
+ if type( t ) ~= 'number' or t < 0 or t > 360
+ then
+ error( 'invalid pdeg' )
+ end
+
+ local at = self.at
+ local n = self.n
+ local xo = self.xradius * math.abs( math.cos( t * math.pi / 180 ) )^(2/n)
+ local yo = self.yradius * math.abs( math.sin( t * math.pi / 180 ) )^(2/n)
+
+ if t <= 90
+ then
+ return tikz.p{ at.x + xo, at.y + yo }
+ elseif t <= 180
+ then
+ return tikz.p{ at.x - xo, at.y + yo }
+ elseif t <= 270
+ then
+ return tikz.p{ at.x - xo, at.y - yo }
+ else
+ return tikz.p{ at.x + xo, at.y - yo }
+ end
+ end
+
+ -- converts to a tikz string.
+ def.zString =
+ function( self )
+ local s = { }
+ local at = self.at
+ local xa = at.x
+ local ya = at.y
+ local n = self.n
+ local xr = self.xradius
+ local yr = self.yradius
+ table.insert( s, 'plot[domain=0:90,variable=\\t,smooth]' )
+ table.insert( s, '({'..xr..'*cos(\\t)^(2/'..n..')+'..xa..'},{'..yr..'*sin(\\t)^(2/'..n..')+'..ya..'})' )
+ table.insert( s, '--' )
+ table.insert( s, 'plot[domain=90:0,variable=\\t,smooth]' )
+ table.insert( s, '({-'..xr..'*cos(\\t)^(2/'..n..')+'..xa..'},{'..yr..'*sin(\\t)^(2/'..n..')+'..ya..'})' )
+ table.insert( s, '--' )
+ table.insert( s, 'plot[domain=0:90,variable=\\t,smooth]' )
+ table.insert( s, '({-'..xr..'*cos(\\t)^(2/'..n..')+'..xa..'},{-'..yr..'*sin(\\t)^(2/'..n..')+'..ya..'})' )
+ table.insert( s, '--' )
+ table.insert( s, 'plot[domain=90:0,variable=\\t,smooth]' )
+ table.insert( s, '({'..xr..'*cos(\\t)^(2/'..n..')+'..xa..'},{-'..yr..'*sin(\\t)^(2/'..n..')+'..ya..'})' )
+ table.insert( s, '-- cycle' )
+ return table.concat( s, ' ' )
+ end
+end )
+
+-------------------------------------------------------------------------------
+-- A reference to a named node.
+-------------------------------------------------------------------------------
+local optionsNamed =
+{
+ ref = false,
+ xshift = 'xshift',
+ yshift = 'yshift',
+}
+
+tikz.named =
+immutable( function( def )
+ def.id = 'named'
+
+ -- constructor
+ def.constructor =
+ function( args )
+ local s = { }
+ _doOptions( s, args, optionsNamed, false, 2 )
+ return {
+ opts = table.concat( s, ' ' ),
+ ref = args.ref,
+ }
+ end
+
+ -- converts to a tikz string.
+ def.zString =
+ function( self )
+ local s = { }
+ table.insert( s, '(' )
+ if self.opts
+ then
+ table.insert( s, self.opts )
+ end
+ table.insert( s, self.ref )
+ table.insert( s, ')' )
+ return table.concat( s )
+ end
+end )
+
+-------------------------------------------------------------------------------
+-- Multiple connected lines.
+-------------------------------------------------------------------------------
+tikz.polyline =
+immutable( function( def )
+ def.id = 'polyline'
+
+ -- constructor
+ def.constructor =
+ function( args )
+ local o = { }
+ for _, v in ipairs( args )
+ do
+ table.insert( o, v )
+ end
+ return o
+ end
+
+ -- converts to a tikz string.
+ def.zString =
+ function( self )
+ local s = { '' }
+ for k, v in ipairs( self )
+ do
+ if k > 1 then table.insert( s, '--' ) end
+ table.insert( s, zString( v ) )
+ end
+ return table.concat( s, ' ' )
+ end
+end )
+
+-------------------------------------------------------------------------------
+-- A rectangle
+-------------------------------------------------------------------------------
+tikz.rect =
+immutable( function( def )
+ def.id = 'rect'
+
+ -- constructor
+ def.constructor =
+ function( args )
+ local psw
+ local pne
+
+ if args.pnw ~= nil
+ then
+ if args.pse ~= nil
+ then
+ psw = tikz.p{ args.pnw.x, args.pse.y }
+ pne = tikz.p{ args.pse.x, args.pnw.y }
+ elseif args.size ~= nil
+ then
+ psw = tikz.p{ args.pnw.x, args.pnw.y - args.size.y }
+ pne = tikz.p{ args.pnw.x + args.size.x, args.pnw.y }
+ else
+ error( 'invalid rect options', 2 )
+ end
+ elseif args.psw ~= nil
+ then
+ psw = args.psw
+ if args.pne ~= nil
+ then
+ pne = args.pne
+ elseif args.size ~= nil
+ then
+ pne = psw + args.size
+ else
+ error( 'invalid rect options', 2 )
+ end
+ elseif args.pse ~= nil
+ then
+ if args.size ~= nil
+ then
+ psw = tikz.p{ args.pse.x - args.size.x, args.pse.y }
+ pne = tikz.p{ args.pse.x, args.pse.y + args.size.y }
+ else
+ error( 'invalid rect options', 2 )
+ end
+ elseif args.pc ~= nil
+ then
+ if args.size ~= nil
+ then
+ psw = tikz.p{ args.pc.x - args.size.x / 2, args.pc.y - args.size.y / 2 }
+ pne = tikz.p{ args.pc.x + args.size.x / 2, args.pc.y + args.size.y / 2 }
+ else
+ error( 'invalid rect options', 2 )
+ end
+ else
+ error( 'invalid rect options', 2 )
+ end
+
+ return {
+ psw = psw,
+ pne = pne,
+ }
+ end
+
+ def.zString =
+ function( self )
+ local s = { }
+ table.insert( s, zString( self.psw ) )
+ table.insert( s, 'rectangle' )
+ table.insert( s, zString( self.pne ) )
+ return table.concat( s, ' ' )
+ end
+
+ def.lazy.e =
+ function( self )
+ return self.pne.x
+ end
+
+ def.lazy.height =
+ function( self )
+ return self.pne.y - self.psw.y
+ end
+
+ def.lazy.n =
+ function( self )
+ return self.pne.y
+ end
+
+ def.lazy.pc =
+ function( self )
+ return tikz.p{ self.psw.x + self.width / 2, self.psw.y + self.height / 2 }
+ end
+
+ def.lazy.pe =
+ function( self )
+ return tikz.p{ self.pne.x, self.psw.y + self.height / 2 }
+ end
+
+ def.lazy.pn =
+ function( self )
+ return tikz.p{ self.psw.x + self.width / 2, self.pne.y }
+ end
+
+ def.lazy.pnw =
+ function( self )
+ return tikz.p{ self.psw.x, self.pne.y }
+ end
+
+ def.lazy.ps =
+ function( self )
+ return tikz.p{ self.psw.x + self.width / 2, self.psw.y }
+ end
+
+ def.lazy.pse =
+ function( self )
+ return tikz.p{ self.pne.x, self.psw.y }
+ end
+
+ def.lazy.pw =
+ function( self )
+ return tikz.p{ self.psw.x, self.psw.y + self.height / 2 }
+ end
+
+ def.lazy.s =
+ function( self )
+ return self.psw.y
+ end
+
+ def.lazy.size =
+ function( self )
+ return tikz.p{ self.width, self.height }
+ end
+
+ def.lazy.w =
+ function( self )
+ return self.psw.x
+ end
+
+ def.lazy.width =
+ function( self )
+ return self.pne.x - self.psw.x
+ end
+end )
+
+
+--==========================================================================--
+-- STYLES --
+--==========================================================================--
+tikz.style =
+immutable( function( def )
+ def.id = 'style'
+
+ -- constructor
+ def.constructor =
+ function( name )
+ return { name=name }
+ end
+end )
+
+tikz.above = tikz.style( 'above' )
+tikz.arrow = tikz.style( '-{Latex}' )
+tikz.below = tikz.style( 'below' )
+tikz.dashed = tikz.style( 'dashed' )
+tikz.dotted = tikz.style( 'dotted' )
+tikz.double_arrow = tikz.style( '{Latex}-{Latex}' )
+tikz.even_odd_rule = tikz.style( 'even odd rule' )
+tikz.midway = tikz.style( 'midway' )
+
+--==========================================================================--
+-- OUTPUT ---
+--==========================================================================--
+
+--
+-- Writes out a named option.
+--
+-- ~s: string to build
+-- ~args: arguments
+-- ~name: name of option
+-- ~haveOpts: true if had options
+-- ~rename: if defined rename options on output
+--
+local function optionNamed( s, args, name, haveOpts, rename )
+
+ local v = args[ name ]
+
+ if not v
+ then
+ return haveOpts
+ end
+
+ if not rename
+ then
+ return haveOpts
+ end
+
+ if not haveOpts
+ then
+ table.insert( s, '[' )
+ else
+ table.insert( s, ',' )
+ end
+
+ if v == true
+ then
+ table.insert( s, rename )
+ else
+ table.insert( s, rename..'='..v )
+ end
+
+ return true
+end
+
+--
+-- Writes out an unnamed option.
+--
+-- ~s: string to build
+-- ~name: name of option
+-- ~haveOpts: true if had options
+--
+local function unnamedOption( s, name, haveOpts )
+ if not haveOpts
+ then
+ table.insert( s, '[' )
+ else
+ table.insert( s, ',' )
+ end
+ table.insert( s, name )
+ return true
+end
+
+--
+-- Custom key compare.
+--
+-- keys to put on top
+local topKeys =
+{
+ node_distance = true,
+}
+
+local function kcompare( ka, kb )
+ local ta = topKeys[ ka ]
+ local tb = topKeys[ kb ]
+ if ta and not tb then return true end
+ if not ta and tb then return false end
+ return ka < kb
+end
+
+--
+-- A helper to parse arguments to pass as drawing options to hand to tikz.
+--
+-- s: string to build
+-- args: the arguments to parse.
+-- opts: named options to pass on
+-- haveOpts: true [ has already been built
+-- level: call level for error throwing
+--
+local function _doOptions( s, args, opts, haveOpts, level )
+ args = flatten( args )
+
+ for _, v in ipairs( args )
+ do
+ if v.id == 'style'
+ then
+ haveOpts = unnamedOption( s, v.name, haveOpts )
+ end
+ end
+
+ local nkeys = { }
+ for key in pairs( args )
+ do
+ if type( key ) ~= 'number'
+ then
+ table.insert( nkeys, key )
+ end
+ end
+ table.sort( nkeys, kcompare )
+
+ for _, k in ipairs( nkeys )
+ do
+ local ok = opts[ k ]
+ if ok
+ then
+ haveOpts = optionNamed( s, args, k, haveOpts, ok )
+ elseif ok == nil
+ then
+ error( 'unknown option '..k, level + 1 )
+ end
+ end
+
+ haveOpts = _opts( s, args._opts, haveOpts )
+
+ if haveOpts
+ then
+ table.insert( s, ']' )
+ end
+end
+
+-------------------------------------------------------------------------------
+-- Drawing shapes.
+-------------------------------------------------------------------------------
+local optionsDraw =
+{
+ decorate = 'decorate',
+ decoration = 'decoration',
+ dash_pattern = 'dash pattern',
+ color = 'color',
+ draw = 'draw',
+ fill = 'fill',
+ line_cap = 'line cap',
+ line_width = 'line width',
+ opacity = 'opacity',
+ pattern = 'pattern',
+ rotate = 'rotate',
+ transform_canvas = 'transform canvas',
+ xshift = 'xshift',
+ yshift = 'yshift',
+ _butt_cap = '-Butt Cap',
+ butt_cap_ = 'Butt Cap-',
+ _round_cap = '-{Round Cap[]}',
+ round_cap_ = '{Round Cap[]}-',
+ _round_cap_ = '{Round Cap[]}-{Round Cap[]}',
+}
+
+--
+-- Puts out a bounding box command
+--
+tikz.boundingbox =
+function( args )
+ tprint( '\\pgfresetboundingbox' )
+ local s = { '\\path [use as bounding box] ' }
+ for _, v in ipairs( args )
+ do
+ if v.id ~= 'style'
+ then
+ table.insert( s, zString( v ) )
+ end
+ end
+ table.insert( s, ';' )
+ tprint( table.unpack( s ) )
+end
+
+--
+-- Puts out a draw command.
+--
+tikz.draw =
+function( args )
+ local s = { '\\draw ' }
+ _doOptions( s, args, optionsDraw, false, 2 )
+
+ for _, v in ipairs( args )
+ do
+ if v.id ~= 'style'
+ then
+ table.insert( s, zString( v ) )
+ end
+ end
+
+ table.insert( s, ';' )
+ tprint( table.unpack( s ) )
+end
+
+--
+-- Puts out a path command.
+--
+tikz.path =
+function( args )
+ local s = { '\\path' }
+ _doOptions( s, args, optionsDraw, false, 2 )
+
+ for _, v in ipairs( args )
+ do
+ if v.id ~= 'style'
+ then
+ table.insert( s, zString( v ) )
+ end
+ end
+ table.insert( s, ';' )
+ tprint( table.unpack( s ) )
+end
+
+--
+-- Puts out a bounding box.
+--
+tikz.clip =
+function( args )
+ local s = { '\\begin{pgfinterruptboundingbox}', '\\clip' }
+ _doOptions( s, args, optionsDraw, false, 2 )
+
+ for _, v in ipairs( args )
+ do
+ if v.id ~= 'style' then table.insert( s, zString( v ) ) end
+ end
+ table.insert( s, ';' )
+ table.insert( s, '\\end{pgfinterruptboundingbox}' )
+ tprint( table.unpack( s ) )
+end
+
+local shadeOptions =
+{
+ ball_color = 'ball color',
+ left_color = 'left color',
+ lower_left_color = 'lower left',
+ lower_right_color = 'lower right',
+ opacity = 'opacity',
+ right_color = 'right color',
+ shading = 'shading',
+ upper_left_color = 'upper left',
+ upper_right_color = 'upper right',
+}
+
+--
+-- Puts out a shade command.
+--
+tikz.shade =
+function( args )
+ local s = { '\\shade' }
+ _doOptions( s, args, shadeOptions, false, 2 )
+
+ for _, v in ipairs( args )
+ do
+ if v.id ~= 'style' then table.insert( s, zString( v ) ) end
+ end
+ table.insert( s, ';' )
+ tprint( table.unpack( s ) )
+end
+
+--
+-- Puts out z stuff.
+--
+tikz.put =
+function( args )
+ for _, v in ipairs( args )
+ do
+ local s = { }
+ if v.id == 'node'
+ then
+ table.insert( s, '\\' )
+ table.insert( s, zString( v ) )
+ table.insert( s, ';' )
+ else
+ error( 'unknown: ' .. v.id, 1 )
+ end
+ tprint( table.unpack( s ) )
+ end
+end
+
+tikz.declarehorizonalshading =
+function( args )
+ local steps = args.steps
+ local name = args.name
+ local s = { '\\pgfdeclarehorizontalshading{' .. name .. '}{100bp}{' }
+
+ local keys = { }
+ for k, _ in pairs( steps )
+ do
+ table.insert( keys, k )
+ end
+
+ table.sort( keys )
+ for _, k in ipairs( keys )
+ do
+ if _ > 1 then table.insert( s, ';' ) end
+ table.insert( s, 'color(' .. k .. 'bp)=(' .. steps[ k ] .. ')' )
+ end
+ table.insert( s, '}' )
+
+ tprint( table.unpack( s ) )
+end
+
+-------------------------------------------------------------------------------
+-- A node to be defined to tikZ
+-------------------------------------------------------------------------------
+local optionsNode =
+{
+ above = 'above',
+ anchor = 'anchor',
+ align = 'align',
+ at = false,
+ below = 'below',
+ color = 'color',
+ draw = 'draw',
+ left = 'left',
+ minimum_height = 'minimum height',
+ node_distance = 'node distance',
+ name = false,
+ right = 'right',
+ rotate = 'rotate',
+ text = false,
+ text_width = 'text width',
+}
+
+tikz.node =
+immutable( function( def )
+ def.id = 'node';
+
+ def.zString =
+ function( self )
+ local s = { 'node' }
+
+ table.insert( s, self.opts )
+ if self.name
+ then
+ table.insert( s, ' (' )
+ table.insert( s, self.name )
+ table.insert( s, ')' )
+ end
+
+ if self.at
+ then
+ table.insert( s, ' at ' )
+ table.insert( s, zString( self.at ) )
+ end
+
+ if self.text
+ then
+ table.insert( s, ' {' )
+ local text = string.gsub( self.text, '\n', '' )
+ table.insert( s, text )
+ table.insert( s, '}' )
+ end
+
+ return table.concat( s )
+ end
+
+ -- constructor
+ def.constructor =
+ function( args )
+ local s = { }
+ _doOptions( s, args, optionsNode, false, 2 )
+ return {
+ at = args.at,
+ name = args.name,
+ opts = table.concat( s, ' ' ),
+ text = args.text
+ }
+ end
+end )
+
+tikz.outfile =
+function( filename )
+ outfile = io.open( filename, 'w' )
+ outfile:write( '%%% DO NOT EDIT THIS FILE %%%\n' )
+end
+
+--
+-- Hacking help.
+--
+function _direct( args )
+ tprint( table.unpack( args ) )
+end
+
+--
+-- Checks version metch.
+--
+tikz.checkVersion =
+function( v )
+ if v ~= tikz.version
+ then
+ error( 'version mismatch', 1 )
+ end
+end
+
+--
+-- Creates a color.
+--
+tikz.colorRGB =
+function( red, green, blue )
+ return '{rgb,255:red,'..red..'; green,'..green..'; blue,'..blue..'}'
+end
+
+--
+-- Makes a tikz scope.
+-- Argument must be a function to call.
+--
+tikz.scope =
+function( args )
+ args = flatten( args )
+ if #args ~= 1 or type( args[ 1 ] ) ~= 'function'
+ then
+ error( 'scope needs a function parameter' )
+ end
+ _direct{ [[\begin{scope}]] }
+ args[ 1 ]( )
+ _direct{ [[\end{scope}]] }
+end
+
+--==========================================================================--
+-- SHORTCUTS
+--==========================================================================--
+tikz.p0 = tikz.p{ 0, 0 }
+
+
+--==========================================================================--
+-- Running code within tikz environment.
+--==========================================================================--
+
+local env_nesting = 0
+local org_env
+tikz.within =
+function( version )
+ if version ~= '*' and version ~= tikz.version
+ then
+ error( 'version mismatch', 1 )
+ end
+
+ env_nesting = env_nesting + 1
+ if env_nesting > 1
+ then
+ return
+ end
+
+ org_env = _ENV
+ local nenv = { }
+ local mt = { }
+ mt.__index =
+ function( _, key )
+ local zk = tikz[ key ]
+ if zk ~= nil
+ then
+ return zk
+ else
+ return org_env[ key ]
+ end
+ end
+ setmetatable( nenv, mt )
+ local func = debug.getinfo( 2 ).func
+ debug.setupvalue( func, 1, nenv )
+end
+
+tikz.without =
+function( )
+ env_nesting = env_nesting - 1
+ if env_nesting > 0 then return end
+ local func = debug.getinfo( 2 ).func
+ debug.setupvalue( func, 1, org_env )
+end
diff --git a/Master/texmf-dist/tex/latex/luatikz/luatikz.sty b/Master/texmf-dist/tex/latex/luatikz/luatikz.sty
new file mode 100644
index 00000000000..5847ab888a1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/luatikz/luatikz.sty
@@ -0,0 +1,5 @@
+\ProvidesPackage{luatikz}[2024/12/04 2.12.0 Luatikz]
+%This package is just wrapper to load the luatikz code.
+\RequirePackage{luacode}
+\directlua{require('luatikz')}
+\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-2in1.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-2in1.sty
index ecd0903d90b..03ef152c828 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-2in1.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-2in1.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `2in1')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{2in1}
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-2up.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-2up.sty
index 8b3bcefd089..c8f605dad1e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-2up.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-2up.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `2up')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{2up}[2010/05/15]
\def\source#1#2#3{}
\def\target#1#2#3{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-CJK.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-CJK.sty
index b19d0411678..8d7ad013bf8 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-CJK.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-CJK.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `CJK')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\IfPackageLoadedTF{xeCJK}{}{
\LWR@loadnever{CJK}{ctex, xeCJK}
}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-CJKutf8.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-CJKutf8.sty
index c87e4523265..c78387c107b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-CJKutf8.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-CJKutf8.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `CJKutf8')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\IfPackageLoadedTF{xeCJK}{}{
\LWR@loadnever{CJKutf8}{ctex, xeCJK}
}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-DotArrow.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-DotArrow.sty
index 9ea2578a2c3..5d1780b637f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-DotArrow.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-DotArrow.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `DotArrow')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{DotArrow}[2007/02/12]
\xpretocmd{\dotarrow}{\settowidth{\oneWidth}{\onePartX}}{}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-SIunits.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-SIunits.sty
index e09ac024345..98a8832e7da 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-SIunits.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-SIunits.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `SIunits')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{SIunits}[2007/12/02]
\ifbool{mathjax}{
\DeclareRobustCommand{\LWR@HTML@unit}[2]{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-a4.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-a4.sty
index 106221522d6..5581f267418 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-a4.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-a4.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `a4')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{a4}[2004/04/15]
\newcommand*{\WideMargins}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-a4wide.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-a4wide.sty
index eb700ebc23e..e1ad32ca364 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-a4wide.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-a4wide.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `a4wide')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{a4wide}[1994/08/30]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-a5comb.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-a5comb.sty
index 6d9604c422d..8f745dc91e8 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-a5comb.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-a5comb.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `a5comb')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{a5comb}
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-abstract.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-abstract.sty
index 2d1b515447a..6df804900e4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-abstract.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-abstract.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `abstract')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\ProvideDocumentEnvironment{abstract}{}{}{}
\LWR@ProvidesPackagePass{abstract}[2009/06/08]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-academicons.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-academicons.sty
index 92e97f76fcb..6a98d6e4d2e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-academicons.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-academicons.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `academicons')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{academicons}[2018/06/27]
\LetLtxMacro\LWR@orig@symbol\symbol
@@ -35,7 +36,7 @@
\renewcommand*{\aiicon}[1]
{%
- \begin{lateximage}*[#1 icon][academicons#1]%
+ \begin{lateximage}*[#1 icon]?[academicons#1]%
\AI\csname aiicon@#1\endcsname%
\end{lateximage}%
}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-accents.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-accents.sty
index b090f043862..de32463fecc 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-accents.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-accents.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `accents')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{accents}[2006/05/12]
\begin{warpMathJax}
\LWR@infoprocessingmathjax{accents}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-accessibility.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-accessibility.sty
index 2f09129078c..8fc38530e10 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-accessibility.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-accessibility.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `accessibility')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{accessibility}[2019/10/14]
\newcommand{\alt}[1]{\ThisAltText{#1}}
\newcommand{\newhref}[3]{\ThisAltText{#2}\LWR@href{#1}{#3}}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-accsupp.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-accsupp.sty
index cec9397a431..90741caaec7 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-accsupp.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-accsupp.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `accsupp')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{accsupp}[2018/03/28]
\newcommand*{\BeginAccSupp}[1]{}
\newcommand*{\EndAccSupp}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-acro.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-acro.sty
index 7c508f56309..b0e3e364f12 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-acro.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-acro.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `acro')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{acro}[2019/10/12]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-acronym.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-acronym.sty
index 953e729e9cc..5b1b00e222a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-acronym.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-acronym.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `acronym')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{acronym}[2020/04/17]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-addlines.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-addlines.sty
index 18789246176..f8a07a18238 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-addlines.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-addlines.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `addlines')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{addlines}[2018/12/05]
\newcommand\addlines{\@ifstar\addlines@a\addlines@a}
\newcommand\addlines@a[1][1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-adjmulticol.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-adjmulticol.sty
index ef0cb4dc760..4f9c78c8c07 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-adjmulticol.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-adjmulticol.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `adjmulticol')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{adjmulticol}[2012/01/20]
\RequirePackage{multicol}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-afterpage.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-afterpage.sty
index f8502178603..eeda97b8228 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-afterpage.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-afterpage.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `afterpage')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{afterpage}[2014/10/28]
\newcommand{\afterpage}[1]{#1}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithm2e.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithm2e.sty
index 63693e8b0bc..e3942d0eb84 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithm2e.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithm2e.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `algorithm2e')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{algorithm2e}[2017/07/18]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithmicx.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithmicx.sty
index bd1e945b82e..7cc5848dc16 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithmicx.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithmicx.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `algorithmicx')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{algorithmicx}[2005/04/27]
\AtBeginEnvironment{algorithmic}{%
\let\origALG@doentity\ALG@doentity%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-alltt.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-alltt.sty
index ea34e44b01d..28d038430d3 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-alltt.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-alltt.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `alltt')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{alltt}[1997/06/16]
\AfterEndPreamble{
\LWR@traceinfo{Patching alltt.}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-amscdx.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-amscdx.sty
index 4898184f640..4661656ece7 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-amscdx.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-amscdx.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `amscdx')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{amscdx}[2019/07/02]
\begin{warpMathJax}
\CustomizeMathJax{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty
index 8ea2860143a..6f3fcc94a2d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `amsmath')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{amsmath}[2017/09/02]
\newcommand*{\LWR@HTML@dotso}{\textellipsis\ }
\LWR@formatted{dotso}
@@ -62,7 +63,7 @@
}
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
- \begin{lateximage}[\LWR@amsmathbodynumbered{#2}]*%
+ \begin{lateximage}[\LWR@amsmathbodynumbered{#2}]*?%
\LWR@applyxfakebold%
}
\NewDocumentCommand{\LWR@amsmathenv@before}{s m}{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty
index d3cebead9d2..1fe3cf3061b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `amsthm')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\IfPackageLoadedTF{mdframed}{
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-anonchap.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-anonchap.sty
index 4b9f0551f52..f7af9fc2268 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-anonchap.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-anonchap.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `anonchap')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{anonchap}[2009/08/03]
\newcommand{\simplechapter}[1][\@empty]{%
\def\@chapcntformat##1{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-anysize.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-anysize.sty
index c05ce95c575..804410f84e4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-anysize.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-anysize.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `anysize')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{anysize}[1994/08/13]
\def\papersize#1#2{}
\def\marginsize#1#2#3#4{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-appendix.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-appendix.sty
index 5d680be5f93..296e2395ccd 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-appendix.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-appendix.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `appendix')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{appendix}[2009/09/02]
\renewcommand*{\@chap@pppage}{%
\part*{\appendixpagename}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-apxproof.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-apxproof.sty
index 207aa40d2d8..e64c1735272 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-apxproof.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-apxproof.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `apxproof')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{apxproof}[2022/10/14]
\VerifyCommand[lwarp][apxproof]{\FVB@axp@VerbatimOut}{ADA4853FD25696EB39CD005CF44C7B5C}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ar.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ar.sty
index 5adb660883e..ca5f5224ecb 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ar.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ar.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ar')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{ar}[2012/01/23]
\newlength{\LWR@ar@width}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-arabicfront.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-arabicfront.sty
index f50ca334a9e..da717ad7d8e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-arabicfront.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-arabicfront.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `arabicfront')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{arabicfront}[2006/09/03]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-array.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-array.sty
index 170fb3e6126..4bf4c58eae3 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-array.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-array.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `array')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\IfPackageLoadedTF{array}{}{%
\let\firsthline\relax
\let\lasthline\relax
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-arydshln.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-arydshln.sty
index 32d8e545c29..95ff2483d9f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-arydshln.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-arydshln.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `arydshln')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\RequirePackage{array}
\LWR@ProvidesPackageDrop{arydshln}[2018/09/26]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-asymptote.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-asymptote.sty
index 832e2b690cf..29624f70f40 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-asymptote.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-asymptote.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `asymptote')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,9 +15,10 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{asymptote}[2016/11/26]
\BeforeBeginEnvironment{asy}{%
- \begin{lateximage}[-asymptote-~\PackageDiagramAltText]%
+ \begin{lateximage}[-asymptote-~\PackageDiagramAltText]?%
}
\AfterEndEnvironment{asy}{\end{lateximage}}
@@ -25,7 +26,7 @@
\xpatchcmd{\asyinclude}
{\begingroup}
- {\begin{lateximage}[-asymptote-~\PackageDiagramAltText]}
+ {\begin{lateximage}[-asymptote-~\PackageDiagramAltText]?}
{}
{\LWR@patcherror{asymptote}{asyinclude-begingroup}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-atbegshi.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-atbegshi.sty
index 0134ea5c664..d750255eba6 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-atbegshi.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-atbegshi.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `atbegshi')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{atbegshi}[2011/10/05]
\let\AtBeginShipout\relax
\let\AtBeginShipoutNext\relax
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile.sty
index 27be0cfa2cc..da57e07fecf 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `attachfile')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{attachfile}[2016/09/18]
\newenvironment*{LWR@attachfile@icon}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile2.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile2.sty
index 41882348b12..418fdeab193 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile2.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile2.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `attachfile2')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{attachfile2}[2016/05/16]
\def\LWR@attachfiletwo@color{}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-authblk.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-authblk.sty
index 25b4f1cff5d..f73ad875757 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-authblk.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-authblk.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `authblk')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\IfPackageLoadedTF{titling}{
\PackageError{lwarp-authblk}
{Package authblk must be loaded before titling}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-autobreak.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-autobreak.sty
index 6893208fd43..50a0000d583 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-autobreak.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-autobreak.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `autobreak')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{autobreak}[2017/02/23]
\begin{warpMathJax}
\renewenvironment{autobreak}{\newcommand{\MoveEqLeft}[1]{}}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-autonum.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-autonum.sty
index 490473db9a3..1739a8744c1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-autonum.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-autonum.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `autonum')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{autonum}[2015/01/18]
\RequirePackage{amsmath}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-awesomebox.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-awesomebox.sty
index e48e699a613..2b6b36e675f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-awesomebox.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-awesomebox.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `awesomebox')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{awesomebox}[2019/07/27]
\newcommand*{\LWR@awesomebox@boxborders}{}%
\newcommand*{\LWR@awesomebox@contentsborders}{}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-axessibility.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-axessibility.sty
index f79148592a7..1616328b687 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-axessibility.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-axessibility.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `axessibility')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\PackageInfo{lwarp}{Using the lwarp version of package `axessibility'.}%
\ProvidesPackage{lwarp-axessibility}% no date is declared by the original
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-axodraw2.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-axodraw2.sty
index 6954a0ee9f7..42015c9b727 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-axodraw2.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-axodraw2.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `axodraw2')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,11 +15,12 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{axodraw2}[2018/02/15]
\BeforeBeginEnvironment{axopicture}{%
- \begin{lateximage}[-axopicture-~\PackageDiagramAltText]%
+ \begin{lateximage}[-axopicture-~\PackageDiagramAltText]?%
}
\AfterEndEnvironment{axopicture}{\end{lateximage}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-backnaur.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-backnaur.sty
index 680e6d77c9d..615d23d6cb0 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-backnaur.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-backnaur.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `backnaur')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{backnaur}[2019/06/18]
\renewenvironment{bnf}{\eqnarray}{\endeqnarray}
\renewenvironment{bnf*}{\csuse{eqnarray*}}{\csuse{endeqnarray*}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-backref.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-backref.sty
index 27471770b28..71a71519656 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-backref.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-backref.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `backref')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,17 +15,25 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
-\LWR@ProvidesPackagePass{backref}[2016/05/21]
+\LWR@ProvidesPackagePass{backref}[2023-11-26]
\def\backref{}
-\long\def\hyper@section@backref#1#2#3{%
- \LWR@refwithsection{#3}%
-}
+\long\def\hyper@section@backref#1#2#3{\LWR@refwithsection{#3}}
\let\backrefxxx\hyper@section@backref
+\VerifyCommand[lwarp][backref]{\Hy@backout}
+ {277444C1A7F4620D9563D82EFD29877E}
+
+\xpatchcmd{\Hy@backout}
+ {\@currentHref}%
+ {\BaseJobname-autopage-\arabic{LWR@previousautopagelabel}}
+ {}
+ {\LWR@patcherror{backref}{Hy@backout}}
+
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-balance.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-balance.sty
index 2be075cd5f7..2de5fd1d15d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-balance.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-balance.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `balance')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{balance}[1999/02/23]
\newcommand*{\balance}{}
\newcommand*{\nobalance}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-bbding.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-bbding.sty
index 1ce63340a3f..43252ddc0e8 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-bbding.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-bbding.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `bbding')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{bbding}[1999/04/15]
\newcommand*{\LWR@bbdingsymbol}[2]{\HTMLunicode{#2}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-beamerarticle.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-beamerarticle.sty
index f2fb7188dde..5e878d3d3fb 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-beamerarticle.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-beamerarticle.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `beamerarticle')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{beamerarticle}[2021/05/26]
\renewcommand<>{\textcolor}{\only#1{\beameroriginal{\textcolor}}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty
index e47ab7ce5ee..cb1799c16de 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `biblatex')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\ifdef{\newfloat@addtocontents@ORI}{
\let\addtocontents\newfloat@addtocontents@ORI
}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-bibunits.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-bibunits.sty
index 8ae6462e7fd..015a7f208df 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-bibunits.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-bibunits.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `bibunits')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{bibunits}[2004/05/12]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-bigdelim.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-bigdelim.sty
index 2908bf3cf77..b2f188981ed 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-bigdelim.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-bigdelim.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `bigdelim')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\let\ldelim\relax
\let\rdelim\relax
\LWR@ProvidesPackagePass{bigdelim}[2021/03/15]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-bigfoot.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-bigfoot.sty
index abf8494b642..f0acba0912f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-bigfoot.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-bigfoot.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `bigfoot')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{bigfoot}[2015/08/30]
\RequirePackage{manyfoot}
\RequirePackage{perpage}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-bigstrut.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-bigstrut.sty
index 7b690f87bf5..cf75778b0d1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-bigstrut.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-bigstrut.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `bigstrut')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{bigstrut}[2018/08/03]
\LetLtxMacro\LWR@origbigstrut\bigstrut
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-bitpattern.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-bitpattern.sty
index d77032c0348..51d391ae885 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-bitpattern.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-bitpattern.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `bitpattern')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,12 +15,13 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{bitpattern}[2015/12/11]
\VerifyCommand[lwarp][bitpattern]{\bitpattern}{379A39416C9C5E48DBCEEF730D51C5BF}
\xpatchcmd{\bitpattern}
{\begingroup}
- {\begin{lateximage}[-bitpattern-~\PackageDiagramAltText]}
+ {\begin{lateximage}[-bitpattern-~\PackageDiagramAltText]?}%
{}
{\LWR@patcherror{bitpattern}{bitpattern}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-blowup.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-blowup.sty
index 1e7024eda09..5e669d15dad 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-blowup.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-blowup.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `blowup')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{blowup}[2018/01/02]
\newcommand*\blowUp[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-bm.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-bm.sty
index 9b4758a32e4..08ea57b8dc9 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-bm.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-bm.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `bm')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{bm}[2019/07/24]
\begin{warpMathJax}
\LetLtxMacro\LWR@orig@DeclareBoldMathCommand\DeclareBoldMathCommand
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-booklet.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-booklet.sty
index 456655c6f74..be2bb1adee2 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-booklet.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-booklet.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `booklet')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{booklet}[2009/09/02]
\newdimen\pageseplength
\newdimen\pagesepwidth
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-bookmark.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-bookmark.sty
index 977369628ec..7d0fa8ee4a4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-bookmark.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-bookmark.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `bookmark')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-booktabs.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-booktabs.sty
index 8d0667dc596..3f9bfcef82e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-booktabs.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-booktabs.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `booktabs')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\IfPackageLoadedTF{booktabs}{}{
\LetLtxMacro\toprule\relax
\LetLtxMacro\midrule\relax
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-bophook.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-bophook.sty
index 2784fc92c20..fa6a677bfca 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-bophook.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-bophook.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `bophook')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{bophook}[2001/03/29]
\newcommand*{\AtBeginPage}[1]{}
\newcommand*{\PageLayout}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-bounddvi.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-bounddvi.sty
index d36833c63e1..639a3211be3 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-bounddvi.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-bounddvi.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `bounddvi')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{bounddvi}[2016/12/28]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage.sty
index 8394818f420..1a35cf94c60 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `boxedminipage')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{boxedminipage}[2020/04/19]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage2e.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage2e.sty
index 01c6f10d326..ba38e8d8d2a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage2e.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage2e.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `boxedminipage2e')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{boxedminipage2e}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-braket.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-braket.sty
index f9f4567ce3a..8db02cfb13c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-braket.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-braket.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `braket')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{braket}% No date is provided by the file.
\begin{warpMathJax}
\CustomizeMathJax{\require{braket}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-breakurl.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-breakurl.sty
index f8f2a28a68a..d8991c1dd9a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-breakurl.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-breakurl.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `breakurl')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{breakurl}[2013/04/10]
\LetLtxMacro\burl\LWR@url
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-breqn.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-breqn.sty
index 7995c6c343f..317fdf3bb40 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-breqn.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-breqn.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `breqn')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{breqn}[2017/01/27]
\setkeys{breqn}{spread={5pt}}
@@ -24,7 +25,7 @@
\begin{BlockClass}{displaymathnumbered}
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
- \begin{lateximage}[-breqn dmath- \MathImageAltText]
+ \begin{lateximage}[-breqn dmath- \MathImageAltText]?%
}
\AfterEndEnvironment{dmath}{
@@ -35,7 +36,7 @@
\begin{BlockClass}{displaymath}
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
- \begin{lateximage}[-breqn dmath*- \MathImageAltText]
+ \begin{lateximage}[-breqn dmath*- \MathImageAltText]?%
}
\AfterEndEnvironment{dmath*}{
@@ -46,7 +47,7 @@
\begin{BlockClass}{displaymathnumbered}
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
- \begin{lateximage}[-breqn dseries- \MathImageAltText]
+ \begin{lateximage}[-breqn dseries- \MathImageAltText]?%
}
\AfterEndEnvironment{dseries}{
@@ -57,7 +58,7 @@
\begin{BlockClass}{displaymath}
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
- \begin{lateximage}[-breqn dseries*- \MathImageAltText]
+ \begin{lateximage}[-breqn dseries*- \MathImageAltText]?%
}
\AfterEndEnvironment{dseries*}{
@@ -68,7 +69,7 @@
\begin{BlockClass}{displaymath}
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
- \begin{lateximage}[-breqn dgroup- \MathImageAltText]
+ \begin{lateximage}[-breqn dgroup- \MathImageAltText]?%
}
\AfterEndEnvironment{dgroup}{
@@ -79,7 +80,7 @@
\begin{BlockClass}{displaymath}
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
- \begin{lateximage}[-breqn dgroup*- \MathImageAltText]
+ \begin{lateximage}[-breqn dgroup*- \MathImageAltText]?%
}
\AfterEndEnvironment{dgroup*}{
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-bsheaders.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-bsheaders.sty
index 39d88a227de..d880adb1a3b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-bsheaders.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-bsheaders.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `bsheaders')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{bsheaders}[1997/10/06]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-bussproofs.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-bussproofs.sty
index 367db4592ee..b48f154ad6c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-bussproofs.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-bussproofs.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `bussproofs')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{bussproofs}% no date in file
\ifbool{mathjax}{
\CustomizeMathJax{\require{bussproofs}}
@@ -28,7 +29,7 @@
\LWR@formattedenv{prooftree}
}{% SVG HTML
\BeforeBeginEnvironment{prooftree}{%
- \begin{lateximage}[-bussproofs-~\PackageDiagramAltText]%
+ \begin{lateximage}[-bussproofs-~\PackageDiagramAltText]?%
}
\AfterEndEnvironment{prooftree}{\end{lateximage}}
}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-bxpapersize.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-bxpapersize.sty
index f38cfdaab05..1c77474534c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-bxpapersize.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-bxpapersize.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `bxpapersize')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{bxpapersize}[2017/10/08]
\providecommand*\papersizesetup{\bxpapersizesetup}
\newcommand*\bxpapersizesetup[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-bytefield.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-bytefield.sty
index 5523e5a5d03..07ee451fe0c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-bytefield.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-bytefield.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `bytefield')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,11 +15,12 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{bytefield}[2017/09/15]
\BeforeBeginEnvironment{bytefield}{%
- \begin{lateximage}[-bytefield-~\PackageDiagramAltText]%
+ \begin{lateximage}[-bytefield-~\PackageDiagramAltText]?%
}
\AfterEndEnvironment{bytefield}{\end{lateximage}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-cancel.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-cancel.sty
index 30c80d7a2f5..2ad9afb3472 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-cancel.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-cancel.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `cancel')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,23 +15,24 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@origRequirePackage{lwarp-xcolor}% for \convertcolorspec
\LWR@ProvidesPackagePass{cancel}[2013/04/12]
\newcommand{\LWR@cancelcolor}[5]{%
-\ifcsempty{#2}%
-{\InlineClass(#5){#3}{#1}}%
-{\LWR@htmlspanclass[#5;#4:\LWR@origpound\LWR@tempcolor]{#3}{#1}}%
+ \ifcsempty{#2}%
+ {\InlineClass(#5){#3}{#1}}%
+ {\LWR@htmlspanclass[#5;#4:\LWR@origpound\LWR@tempcolor]{#3}{#1}}%
}
\DeclareRobustCommand{\LWR@HTML@cancel}[1]{%
-\begingroup%
-\CancelColor%
-\LWR@findcurrenttextcolor%
-\color{black}%
-\LWR@cancelcolor{#1}{LWR@tempcolor}{sout}{text-decoration-color}%
- {text-decoration:line-through}%
-\endgroup%
+ \begingroup%
+ \CancelColor%
+ \LWR@findcurrenttextcolor%
+ \color{black}%
+ \LWR@cancelcolor{#1}{LWR@tempcolor}{sout}{text-decoration-color}%
+ {text-decoration:line-through}%
+ \endgroup%
}
\LWR@formatted{cancel}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-canoniclayout.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-canoniclayout.sty
index 92fcaa4b4b6..1797fbcbce7 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-canoniclayout.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-canoniclayout.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `canoniclayout')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
s%
\LWR@ProvidesPackageDrop{canoniclayout}[2011/11/05]
\newcommand*{\currentfontletters}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty
index 2e269d74b31..55e414468fe 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `caption')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\typeout{---}
\typeout{Packages lwarp and caption:}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-caption3.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-caption3.sty
index 52c803a74cb..f191785684f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-caption3.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-caption3.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `caption3')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{caption3}[2023/07/31]
\IfPackageAtLeastTF{caption3}{2020/08/23}{
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-cases.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-cases.sty
index e66156861d6..1a54285d283 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-cases.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-cases.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `cases')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,12 +15,13 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{cases}[2020/03/29]
\BeforeBeginEnvironment{numcases}{
\begin{BlockClass}{displaymathnumbered}
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
- \begin{lateximage}[-cases- \MathImageAltText]
+ \begin{lateximage}[-cases- \MathImageAltText]?%
}
\AfterEndEnvironment{numcases}{
@@ -31,7 +32,7 @@
\begin{BlockClass}{displaymathnumbered}
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
- \begin{lateximage}[-cases- \MathImageAltText]
+ \begin{lateximage}[-cases- \MathImageAltText]?%
}
\AfterEndEnvironment{subnumcases}{
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ccicons.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ccicons.sty
index 58a5c840c31..59c88b0082a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ccicons.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ccicons.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ccicons')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,9 +15,10 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{ccicons}[2017/10/30]
\newcommand{\LWR@ccicons}[2]{%
- {\begin{lateximage}*[#1]\ccicons@font\char#2\end{lateximage}}
+ {\begin{lateximage}*[#1]?\ccicons@font\char#2\end{lateximage}}%
}
\renewcommand{\ccicons@logo}{\LWR@ccicons{ccLogo}{0}}
\renewcommand{\ccicons@by}{\LWR@ccicons{ccAttribution}{1}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-centerlastline.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-centerlastline.sty
index ed7f7fa662e..c2d1b766eea 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-centerlastline.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-centerlastline.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `centerlastline')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{centerlastline}[2020/10/12]
\providecommand{\centerlastline}{}
\def\endcenterlastline{\par}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-centernot.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-centernot.sty
index 44bfbc6de0e..f6fcc56b73f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-centernot.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-centernot.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `centernot')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{centernot}[2016/05/16]
\begin{warpMathJax}
\CustomizeMathJax{\require{centernot}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-changebar.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-changebar.sty
index e8c8261e769..11257bed4eb 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-changebar.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-changebar.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `changebar')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{changebar}[2018/03/09]
\newcommand*{\cbstart}{}
\newcommand*{\cbend}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-changelayout.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-changelayout.sty
index c9ee8877309..91af7e5c75e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-changelayout.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-changelayout.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `changelayout')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{changelayout}[2009/10/07]
\renewrobustcmd\cpl@backtodefaults{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-changepage.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-changepage.sty
index d212c65cde9..7081363db58 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-changepage.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-changepage.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `changepage')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{changepage}[2009/10/20]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-changes.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-changes.sty
index 41e3110d8e8..321b65f9b59 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-changes.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-changes.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `changes')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{changes}[2021/07/15]
\renewcommand{\ChangesListline}[4]{%
\IfIsInList{#1}{\Changes@loc@show}{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-chappg.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-chappg.sty
index 92d40de51e4..9fb1f5f15aa 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-chappg.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-chappg.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `chappg')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{chappg}[2006/05/09]
\renewcommand{\pagenumbering}[2][]{}
\providecommand{\chappgsep}{--}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-chapterbib.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-chapterbib.sty
index f3e969d0945..afa20b055ff 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-chapterbib.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-chapterbib.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `chapterbib')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{chapterbib}[2010/09/18]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-chemfig.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-chemfig.sty
index ed59845231f..70a2aab40a3 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-chemfig.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-chemfig.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `chemfig')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{chemfig}[2021/02/28]
@@ -22,9 +23,9 @@
\IfPackageAtLeastTF{chemfig}{2020/03/05}
{
- \xpretocmd\charge{\begin{lateximage}[-chemfig-~\PackageDiagramAltText]}
+ \xpretocmd\charge{\begin{lateximage}[-chemfig-~\PackageDiagramAltText]?}%
{}{\LWR@patcherror{chemfig}{charge}}
- \xpretocmd\Charge{\begin{lateximage}[-chemfig-~\PackageDiagramAltText]}
+ \xpretocmd\Charge{\begin{lateximage}[-chemfig-~\PackageDiagramAltText]?}%
{}{\LWR@patcherror{chemfig}{Charge}}
\xapptocmd\charge_c{\end{lateximage}}
{}{\LWR@patcherror{chemfig}{charge_c}}
@@ -33,7 +34,7 @@
\IfPackageAtLeastTF{chemfig}{2019/04/18}%
{% 2019/04/18 or newer
\xpretocmd{\CF_chemfiga}
- {\begin{lateximage}[-chemfig-~\PackageDiagramAltText]}
+ {\begin{lateximage}[-chemfig-~\PackageDiagramAltText]?}%
{}{\LWR@patcherror{chemfig}{CF_chemfiga}}
\VerifyCommand[lwarp][chemfig]{\CF_chemfigb}{7B199210755F37B1BCD036567614BA34}
@@ -45,13 +46,13 @@
\GlobalLetLtxMacro\LWR@chemfig@origCF_lewisc\CF_lewisc
\gdef\CF_lewisc#1,#2\_nil{%
- \begin{lateximage}[-chemfig-~\PackageDiagramAltText]%
+ \begin{lateximage}[-chemfig-~\PackageDiagramAltText?]%
\LWR@chemfig@origCF_lewisc#1,#2\_nil
\end{lateximage}
}
\gpreto{\schemestart}{%
- \begin{lateximage}[-chemfig-~\PackageDiagramAltText]%
+ \begin{lateximage}[-chemfig-~\PackageDiagramAltText]?%
}
\gappto{\CF_schemestop}{\end{lateximage}}
@@ -61,7 +62,7 @@
\LetLtxMacro\LWR@chemfig@origchemfig\chemfig
\DeclareDocumentCommand\chemfig{s O{} O{} m}{%
- \begin{lateximage}[-chemfig-~\PackageDiagramAltText]%
+ \begin{lateximage}[-chemfig-~\PackageDiagramAltText]?%
\IfBooleanTF{#1}{%
\LWR@chemfig@origchemfig*[#2][#3]{#4}%
}{%
@@ -73,13 +74,13 @@
\LetLtxMacro\LWR@chemfig@origCF@lewis@b\CF@lewis@b
\def\CF@lewis@b#1#2{%
- \begin{lateximage}[-chemfig-~\PackageDiagramAltText]%
+ \begin{lateximage}[-chemfig-~\PackageDiagramAltText]?%
\LWR@chemfig@origCF@lewis@b{#1}{#2}%
\end{lateximage}%
}
\preto{\schemestart}{%
- \begin{lateximage}[-chemfig-~\PackageDiagramAltText]%
+ \begin{lateximage}[-chemfig-~\PackageDiagramAltText]?%
}
\appto{\CF@schemestop}{\end{lateximage}}
@@ -90,7 +91,7 @@
\LetLtxMacro\LWR@chemfig@origchemleft\chemleft
\def\chemleft#1#2\chemright#3{%
-\begin{lateximage}[-chemfig-~\PackageDiagramAltText]%
+\begin{lateximage}[-chemfig-~\PackageDiagramAltText]?%
\LWR@chemfig@origchemleft#1#2\chemright#3%
\end{lateximage}%
}
@@ -98,7 +99,7 @@
\LetLtxMacro\LWR@chemfig@origchemup\chemup
\def\chemup#1#2\chemdown#3{%
-\begin{lateximage}[-chemfig-~\PackageDiagramAltText]%
+\begin{lateximage}[-chemfig-~\PackageDiagramAltText]?%
\LWR@chemfig@origchemup#1#2\chemdown#3%
\end{lateximage}%
}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-chemformula.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-chemformula.sty
index 4313b0aa1c9..5f04d34a925 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-chemformula.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-chemformula.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `chemformula')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{chemformula}[2022/01/23]
@@ -24,10 +25,10 @@
\RenewDocumentCommand \ch { O{}m }
{%
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}% lwarp
- {
+ {%
\chemformula_ch:nn {#1} {#2}% original
- }
- {
+ }%
+ {%
\begingroup%
\boolfalse{mathjax}%
\LWR@subsingledollar*{% lwarp
@@ -45,7 +46,7 @@
\chemformula_ch:nn {#1} {#2}% original
}%
\endgroup%
- }
+ }%
}
\IfPackageAtLeastTF{chemformula}{2019/10/13}{
@@ -57,7 +58,7 @@
\begingroup%
\boolfalse{mathjax}%
\LWR@subsingledollar*{% lwarp
- \textbackslash{}%
+ \textbackslash{}% alt tag
chcpd%
\{%
\LWR@HTMLsanitizedetokenized{\detokenize{#2}}%
@@ -92,7 +93,7 @@
\begingroup%
\boolfalse{mathjax}%
\LWR@subsingledollar*{% lwarp
- \textbackslash{}%
+ \textbackslash{}% alt tag
chcpd%
\{%
\LWR@HTMLsanitizedetokenized{\detokenize{#2}}%
@@ -140,9 +141,9 @@
chname%
(\LWR@HTMLsanitizedetokenized{\detokenize{#1}})%
(\LWR@HTMLsanitizedetokenized{\detokenize{#2}})%
- ]*%
- \chemformula_chwritebelow:nn {#1} {#2}
- \end{lateximage}
+ ]*?%
+ \chemformula_chwritebelow:nn {#1} {#2}%
+ \end{lateximage}%
}
\VerifyCommand[lwarp][chemformula]{\chlewis}
{371F2DD32AA98170F43CFDA71177226B}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-chemgreek.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-chemgreek.sty
index 97e5c2a44bf..b70e7556f29 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-chemgreek.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-chemgreek.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `chemgreek')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{chemgreek}[2020/01/16]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-chemmacros.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-chemmacros.sty
index 341235f1876..c7fba245d07 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-chemmacros.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-chemmacros.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `chemmacros')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{chemmacros}[2022/02/13]
\ExplSyntaxOn
@@ -72,7 +73,7 @@
}
\VerifyCommand[lwarp][chemmacros]{\pH}
- {89B9008750937C7614F2A5204D5DDD16}
+ {BA70E24367521CBBF282F40F65758016}
\RenewDocumentCommand \pH {} {
\begingroup
@@ -84,7 +85,7 @@
}
\VerifyCommand[lwarp][chemmacros]{\pOH}
- {3193E23422822579C0D2B2C10371BF84}
+ {EFBC86417A28B1777F8A783D68225A3C}
\RenewDocumentCommand \pOH {} {
\begingroup
@@ -238,8 +239,8 @@
{D7A87543D1C944168CBAC59E9F45DF9A}
\RenewDocumentCommand \Sconf { O{S} } {
-\begin{lateximage}[\textbackslash{}Sconf{[}#1{]}]*
- \chemmacros_sconf:n {#1}
+\begin{lateximage}[\textbackslash{}Sconf{[}#1{]}]*?%
+ \chemmacros_sconf:n {#1}%
\end{lateximage}
}
@@ -247,8 +248,8 @@
{AB922016338B2F2C2635E6104311DAF2}
\RenewDocumentCommand \Rconf { O{R} } {
-\begin{lateximage}[\textbackslash{}Rconf{[}#1{]}]*
- \chemmacros_rconf:n {#1}
+\begin{lateximage}[\textbackslash{}Rconf{[}#1{]}]*?%
+ \chemmacros_rconf:n {#1}%
\end{lateximage}
}
\VerifyCommand[lwarp][chemmacros]{\chemmacros_hapto:n}
@@ -500,8 +501,8 @@
\RenewDocumentCommand \newman {od()m}%
{
\IfValueTF{#2}
- {\begin{lateximage}[\textbackslash{}newman(#2)\{#3\}]*}
- {\begin{lateximage}[\textbackslash{}newman\{#3\}]*}
+ {\begin{lateximage}[\textbackslash{}newman(#2)\{#3\}]*?}%
+ {\begin{lateximage}[\textbackslash{}newman\{#3\}]*?}%
\group_begin:
\IfNoValueF {#1} { \chemmacros_set_keys:nn {newman} {#1} }
\IfNoValueTF {#2}
@@ -529,12 +530,12 @@
orbital{[}%
\LWR@HTMLsanitizedetokenized{\detokenize{#1}}%
{]}\{#2\}%
- ]*[][margin-left: 1em ; margin-right: 1em]
+ ]*?[][margin-left: 1em ; margin-right: 1em]%
}
{
\begin{lateximage}[%
\textbackslash{}orbital\{#2\}%
- ]*[][margin-left: 1em ; margin-right: 1em]
+ ]*?[][margin-left: 1em ; margin-right: 1em]%
}
\group_begin:
\chemmacros_set_keys:nn {orbital/type} {#2}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-chemnum.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-chemnum.sty
index a6b16336e26..f84b2422658 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-chemnum.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-chemnum.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `chemnum')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{chemnum}[2016/04/14]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-chkfloat.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-chkfloat.sty
index 00308abd789..3530f326b23 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-chkfloat.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-chkfloat.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `chkfloat')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{chkfloat}[2012/08/19]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-chngpage.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-chngpage.sty
index cca25e5ce52..f68cfdc0c3c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-chngpage.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-chngpage.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `chngpage')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{chngpage}[2009/10/20]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-cite.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-cite.sty
index c056db5090a..4814591d637 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-cite.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-cite.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `cite')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{cite}[2015/02/27]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-citeref.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-citeref.sty
index efcb91675f6..4769c6e165c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-citeref.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-citeref.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `citeref')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{citeref}[1999/27/05]
\def\@cprwrite#1={%
\write\@auxout{\string\citepageref{#1}{\theLWR@previousautopagelabel}}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-classicthesis.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-classicthesis.sty
index f99265c49d0..e48c84d7e6c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-classicthesis.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-classicthesis.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `classicthesis')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{classicthesis}[2018/06/03]
\RequirePackage{scrlayer-scrpage} % provides headers and footers (KOMA Script)
\RequirePackage{scrtime} % time access
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-cleveref.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-cleveref.sty
index e9369eac735..b66369598c3 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-cleveref.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-cleveref.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `cleveref')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{cleveref}[2018/03/27]
\def\LWR@orig@@@setcref#1#2{\cref@getlabel{#2}{\@templabel}#1{\@templabel}{}{}}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-clrdblpg.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-clrdblpg.sty
index 698b9a7d9ec..f0025ad24f1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-clrdblpg.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-clrdblpg.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `clrdblpg')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{clrdblpg}[2018/04/21]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-cmbright.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-cmbright.sty
index a636f92f7fe..3255e01dfaf 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-cmbright.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-cmbright.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `cmbright')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{cmbright}[2005/04/13]
\LWR@infoprocessingmathjax{cmbright}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-cmdtrack.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-cmdtrack.sty
index 84d98ffdb42..81985bb4483 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-cmdtrack.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-cmdtrack.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `cmdtrack')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{cmdtrack}[2012/12/18]
\newcommand{\untrack}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-colonequals.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-colonequals.sty
index 47e39ebaf40..3355f7db334 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-colonequals.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-colonequals.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `colonequals')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{colonequals}[2016/05/16]
\begin{warpMathJax}
\LWR@infoprocessingmathjax{colonequals}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-color.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-color.sty
index f61e4ff31c9..1ac12a09267 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-color.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-color.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `color')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{color}[2016/07/10]
\RequirePackage{xcolor}
\let\color@endgroup\endgroup
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-colortbl.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-colortbl.sty
index 7c301c6b674..a3e207db85d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-colortbl.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-colortbl.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `colortbl')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\let\rowcolor\relax
\LWR@ProvidesPackagePass{colortbl}[2022/06/20]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-letters.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-letters.sty
index f18374dd680..76a789afe21 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-letters.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-letters.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `common-mathjax-letters')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\ProvidesPackage{lwarp-common-mathjax-letters}[2020/08/10]
\begin{warpMathJax}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-newpxtxmath.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-newpxtxmath.sty
index 85c30988b7b..f5f3af2dd6a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-newpxtxmath.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-newpxtxmath.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `common-mathjax-newpxtxmath')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\ProvidesPackage{lwarp-common-mathjax-newpxtxmath}[2020/09/20]
\LWR@origRequirePackage{lwarp-common-mathjax-nonunicode}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-nonunicode.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-nonunicode.sty
index 636d51d991a..c51de1734c3 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-nonunicode.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-nonunicode.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `common-mathjax-nonunicode')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\ProvidesPackage{lwarp-common-mathjax-nonunicode}[2020/09/20]
\LWR@origRequirePackage{lwarp-common-mathjax-overlaysymbols}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-overlaysymbols.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-overlaysymbols.sty
index e271418ff5a..b6609072bf2 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-overlaysymbols.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-overlaysymbols.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `common-mathjax-overlaysymbols')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\ProvidesPackage{lwarp-common-mathjax-overlaysymbols}[2020/08/17]
\begin{warpMathJax}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-siunitx.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-siunitx.sty
index 877fa487e04..6285c2c0be7 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-siunitx.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-siunitx.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `common-mathjax-siunitx')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\begin{warpMathJax}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-common-multimedia.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-common-multimedia.sty
index c3011a417b0..7196bcf6081 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-common-multimedia.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-common-multimedia.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `common-multimedia')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\ProvidesPackage{lwarp-common-multimedia}[2019/04/22]
\RequirePackage{xkeyval}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-continue.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-continue.sty
index 73e9e02e31a..22c761869cc 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-continue.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-continue.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `continue')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{continue}}[2018/12/09]
\newcommand*{\flagcont}{}
\newcommand*{\flagend}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-copyrightbox.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-copyrightbox.sty
index 4b65a21044f..162e84488b5 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-copyrightbox.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-copyrightbox.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `copyrightbox')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{copyrightbox}[2011/11/27]
\newcommand{\copyrightbox}[3][r]{%
\begin{BlockClass}[
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-crop.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-crop.sty
index 22ff2a91aff..300faad16a2 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-crop.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-crop.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `crop')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{crop}[2003/05/20]
\newcommand*{\crop}[1][]{}
\newcommand*{\cropdef}[6][]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ctable.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ctable.sty
index 998c135f52f..c0615f4f388 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ctable.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ctable.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ctable')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{ctable}[2015/10/17]
\newcommand{\LWR@HTML@ctable}[4][]{%
\let\@CTtaborfig \@dfltCTtaborfig
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-cuted.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-cuted.sty
index 89db97690d2..6e87a3f3e46 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-cuted.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-cuted.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `cuted')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{cuted}[2021/10/04]
\newenvironment{strip}{}{}
\newskip\stripsep
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-cutwin.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-cutwin.sty
index 0b10b6051fd..572cff63b03 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-cutwin.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-cutwin.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `cutwin')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{cutwin}[2010/09/29]
\newcommand*{\opencutleft}{}
\newcommand*{\opencutright}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-dblfloatfix.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-dblfloatfix.sty
index d45e137728b..79d7bcdca5d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-dblfloatfix.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-dblfloatfix.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `dblfloatfix')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{dblfloatfix}[2012/12/31]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-dblfnote.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-dblfnote.sty
index abf8335a74c..12850757652 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-dblfnote.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-dblfnote.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `dblfnote')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{dblfnote}[1999/07/14]
\newcounter{DFNsloppiness}
\newdimen\DFNcolumnsep
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-dcolumn.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-dcolumn.sty
index 9f73db6afd5..1836649e7f1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-dcolumn.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-dcolumn.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `dcolumn')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{dcolumn}[2014/10/28]
\newcommand*{\LWR@HTML@DC@}[3]{}
\LWR@formatted{DC@}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-decimal.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-decimal.sty
index c43494b23cc..db04f4fc951 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-decimal.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-decimal.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `decimal')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{decimal}[2011/06/03]
\begin{warpMathJax}
\CustomizeMathJax{\def\.{\mbox{.}}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-decorule.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-decorule.sty
index d5ee07731db..704fc59276b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-decorule.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-decorule.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `decorule')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{decorule}[2020/04/01]
\xpretocmd{\decorule}
{\begin{lateximage}*[decorule]}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-diagbox.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-diagbox.sty
index 21adbb0799d..d3c7ff648be 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-diagbox.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-diagbox.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `diagbox')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{diagbox}[2016/12/28]
\LetLtxMacro\LWR@origdiagbox@double\diagbox@double
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-dingbat.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-dingbat.sty
index 62f4a1d103e..4aacdc3280b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-dingbat.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-dingbat.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `dingbat')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{dingbat}[2001/04/27]
\newcommand*{\LWR@dingbatsymbol}[1]{\HTMLunicode{#1}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-doipubmed.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-doipubmed.sty
index e8f29a7e8c2..df32a34cc61 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-doipubmed.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-doipubmed.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `doipubmed')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{doipubmed}[2007/08/20]
\VerifyCommand[lwarp][doipubmed]{\doi}{13FFCBAF4F1414B838B6C3AD344117A8}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-dotlessi.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-dotlessi.sty
index 49a499f8e1d..384419032b8 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-dotlessi.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-dotlessi.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `dotlessi')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{dotlessi}[1999/10/12]
\begin{warpMathJax}
\CustomizeMathJax{\let\dotlessi\imath}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-dprogress.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-dprogress.sty
index 15ff87031e8..79b7c4240ca 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-dprogress.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-dprogress.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `dprogress')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{dprogress}[2008/02/21]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-draftcopy.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-draftcopy.sty
index fe06e6b7459..dd7e7364372 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-draftcopy.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-draftcopy.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `draftcopy')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{draftcopy}[2002/02/25]
\newcommand{\draftcopyVersion}[1]{}
\newcommand{\draftcopySetGrey}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-draftfigure.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-draftfigure.sty
index a7a0bafc6e7..3d086c1b6e4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-draftfigure.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-draftfigure.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `draftfigure')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{draftfigure}[2017/07/19]
\RequirePackage{xkeyval}
\define@key{draftfigure}{code}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-draftwatermark.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-draftwatermark.sty
index 7f973499264..5d87cca92ef 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-draftwatermark.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-draftwatermark.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `draftwatermark')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-drftcite.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-drftcite.sty
index 7820c896e00..e358bb635dd 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-drftcite.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-drftcite.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `drftcite')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{drftcite}[1995/01/23]
\VerifyCommand[lwarp][drftcite]{\@lbibitem}{43265BD7F1B9C9818D873D651C19485C}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-easy-todo.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-easy-todo.sty
index 2b1142f46bc..37972f22802 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-easy-todo.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-easy-todo.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `easy-todo')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{easy-todo}[2014/01/01]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ebook.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ebook.sty
index 228569bdf4c..b29ef8af2fb 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ebook.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ebook.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ebook')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{ebook}
\setcounter{secnumdepth}{0}
\setcounter{tocdepth}{2}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-econometrics.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-econometrics.sty
index 229ef38ba10..d5804f33bf4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-econometrics.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-econometrics.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `econometrics')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{econometrics}% no date specified in the original
\LWR@origRequirePackage{lwarp-common-mathjax-letters}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ed.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ed.sty
index 920fb6f6db3..40905ccde97 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ed.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ed.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ed')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{ed}[2012/01/29]
\RequirePackage{xcolor}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ellipsis.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ellipsis.sty
index a7600ca5176..54dfd586065 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ellipsis.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ellipsis.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ellipsis')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-embrac.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-embrac.sty
index 2066afa6db7..dd139b35ed4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-embrac.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-embrac.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `embrac')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,7 +15,8 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
-\LWR@ProvidesPackagePass{embrac}[2017/07/04]
+%%
+\LWR@ProvidesPackagePass{embrac}[2021/02/20]
\ExplSyntaxOn
\RenewDocumentCommand{\embrac_kern:n}{m}{}
\ExplSyntaxOff
@@ -28,19 +29,18 @@
\LetLtxMacro\LWR@orig@HTML@textsl\LWR@HTML@textsl
\RenewDocumentCommand{\LWR@HTML@textsl}{s m}{\LWR@orig@HTML@textsl{#2}}
-\ifxetexorluatex
- \LetLtxMacro\LWR@orig@HTML@textsi\LWR@HTML@textsi
- \RenewDocumentCommand{\LWR@HTML@textsi}{s m}{%
- \LWR@orig@HTML@textsi{#2}}
-\fi
-
\AtBeginDocument{
\LWR@formatted{emph}
\LWR@formatted{textit}
\LWR@formatted{textsl}
- \ifxetexorluatex
+ \ifdef{\textsi}
+ {
+ \LetLtxMacro\LWR@orig@HTML@textsi\LWR@HTML@textsi
+ \RenewDocumentCommand{\LWR@HTML@textsi}{s m}{%
+ \LWR@orig@HTML@textsi{#2}%
+ }
\LWR@formatted{textsi}
- \fi
+ }{}
}
\newcommand{\LWR@HTML@EmbracOff}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-emptypage.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-emptypage.sty
index 4068eecc376..e5def11283f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-emptypage.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-emptypage.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `emptypage')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{emptypage}[2010/05/30]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-endfloat.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-endfloat.sty
index a5e14cab928..5395292f356 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-endfloat.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-endfloat.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `endfloat')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{endfloat}[2019/04/15]
\newcommand\figureplace{}
\newcommand\tableplace{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-endheads.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-endheads.sty
index bca625da08f..ea3958e807a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-endheads.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-endheads.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `endheads')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{endheads}[2017/04/06]
\newcommand{\changesinglepageabbrev}[1]{}
\newcommand{\changemultiplepageabbrev}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-endnotes.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-endnotes.sty
index 575240cdfd2..0b04ee2da59 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-endnotes.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-endnotes.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `endnotes')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,8 +15,9 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
-\LWR@ProvidesPackagePass{endnotes}
+\LWR@ProvidesPackagePass{endnotes}[2020-01-02]
\def\enoteformat{%
\leavevmode
\makeenmark
@@ -29,6 +30,42 @@
\renewcommand{\endnote}[2][]{}%
\renewcommand{\endnotemark}[1]{}%
}{}{}
+\def\theendnotes{\immediate\closeout\@enotes \global\@enotesopenfalse
+ \begingroup
+ \makeatletter
+ %
+ % The machinery with \@ResetGT and > here ensures that
+ % \@doanenote works properly even if > is an active character
+ % at the point where \theendnotes is invoked. > needs to have
+ % catcode 12 when the arguments of \@doanenote are scanned, so
+ % that the > in the string "macro:->" is matched. The actual
+ % footnote text is not an argument to \@doanenote, but just
+ % follows it in the .ent file; so \@ResetGT can reset the
+ % category code for > that should be used when processing
+ % that text. That resetting takes place within a
+ % \begingroup-\endgroup block set up by \@doanenote and
+ % \@endanenote, so the catcode for > is back to 12 for the
+ % next note.
+ %
+ \edef\@tempa{`\string >}%
+ \ifnum\catcode\@tempa=12%
+ \let\@ResetGT\relax
+ \else
+ \edef\@ResetGT{\noexpand\catcode\@tempa=\the\catcode\@tempa}%
+ \@makeother\>%
+ \fi
+ \def\@doanenote##1##2>{\def\@theenmark{##1}\par\begingroup
+ \@ResetGT
+ \def\@currentcounter{endnote}%
+ \edef\@currentlabel{\csname p@endnote\endcsname\@theenmark}%
+ \enoteformat}
+ \def\@endanenote{\par\endgroup}%
+ \enoteheading
+ \enotesize
+ \InputIfFileExists{\jobname.ent}{}{%
+ \PackageWarning{endnotes}{No endnotes found (file \jobname.ent does not exist)\MessageBreak}
+ }%
+ \endgroup}
\begin{warpMathJax}
\def\endnotename{endnote}
\appto\LWR@syncnotenumbers{\LWR@synconenotenumber{LWRendnote}{\theendnote}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-engtlc.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-engtlc.sty
index 4a9f36a87bf..b233f58f3dd 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-engtlc.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-engtlc.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `engtlc')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{engtlc}[2012/12/18]
\newcommand{\LWR@HTML@finees}{%
\begin{BlockClass}[text-align:right]{exerend}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-enotez.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-enotez.sty
index b485e503944..ce5431bc3f3 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-enotez.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-enotez.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `enotez')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{enotez}[2020/12/13]
\ExplSyntaxOn
\AtBeginDocument{
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-enumerate.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-enumerate.sty
index 1ab76345fd4..d61526a7373 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-enumerate.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-enumerate.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `enumerate')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{enumerate}[2015/07/23]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-enumitem.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-enumitem.sty
index ee2e07c0ba1..a1719ac9bf7 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-enumitem.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-enumitem.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `enumitem')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{enumitem}[2018/11/30]
\let\LWR@enumitem@orignewlist\newlist
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-epigraph.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-epigraph.sty
index 3ec74a30eac..3f605abd2a1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-epigraph.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-epigraph.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `epigraph')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-epsf.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-epsf.sty
index 988515177e1..e8a765fec72 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-epsf.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-epsf.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `epsf')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{epsf}% not date given
\xpretocmd{\epsfsetgraph}
{\begin{lateximage}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-epsfig.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-epsfig.sty
index e9934b58cce..5478259bc9e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-epsfig.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-epsfig.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `epsfig')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{epsfig}[2017/06/25]
\RequirePackage{graphics}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf-base.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf-base.sty
index e27757c702f..121bf19b374 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf-base.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf-base.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `epstopdf-base')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{epstopdf-base}[2020-01-24]
\newcommand*{\LWR@HTML@ETE@OrgGin@setfile}[3]{%
\edef\LWR@tempone{#3}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf.sty
index 8f520d2ae40..586bba5bfbb 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `epstopdf')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{epstopdf}[2020-01-24]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-eqlist.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-eqlist.sty
index 780739d7e53..0dfad3f994d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-eqlist.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-eqlist.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `eqlist')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{eqlist}[2002/08/15]
\newenvironment{eqlist}[1][]{\description}{\enddescription}
\newenvironment{eqlist*}[1][]{\description}{\enddescription}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-eqparbox.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-eqparbox.sty
index 5e0f78d6b10..ce2ec4c0c08 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-eqparbox.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-eqparbox.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `eqparbox')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{eqparbox}[2017/09/03]
\NewDocumentCommand{\LWR@HTML@eqparbox}{O{t} O{} O{t} m +m}{%
{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-errata.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-errata.sty
index b374217cfc4..ab3f91cd8ef 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-errata.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-errata.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `errata')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\StartDefiningMath
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-eso-pic.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-eso-pic.sty
index 0aa05a7baf1..a42b96c065a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-eso-pic.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-eso-pic.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `eso-pic')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-esvect.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-esvect.sty
index f1b36490791..8a630e792d7 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-esvect.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-esvect.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `esvect')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{esvect}% no date given
\begin{warpMathJax}
\CustomizeMathJax{\newcommand{\LWResvectvv}[1]{\overrightarrow{#1}}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-etoc.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-etoc.sty
index cb1e4f5e50f..81ea7207e81 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-etoc.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-etoc.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `etoc')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{etoc}[2019/11/17]
\def\etocsetlevel#1#2{}
\def\etocskipfirstprefix{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-eurosym.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-eurosym.sty
index a3875d05549..580b4ed1552 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-eurosym.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-eurosym.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `eurosym')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{eurosym}[1998/08/06]
\renewrobustcmd\officialeuro{\HTMLentity{euro}}
\let\geneuro\officialeuro
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-everypage.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-everypage.sty
index d51bbaae003..5b5613f3e94 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-everypage.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-everypage.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `everypage')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-everyshi.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-everyshi.sty
index 90e42432227..b925e951817 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-everyshi.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-everyshi.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `everyshi')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{everyshi}[2001/05/15]
\let\EveryShipout\relax
\newcommand*{\EveryShipout}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-extarrows.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-extarrows.sty
index 4ecc2aaa976..97e3bdf01f1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-extarrows.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-extarrows.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `extarrows')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{extarrows}[2008/05/15]
\begin{warpMathJax}
\CustomizeMathJax{\Newextarrow\xLongleftarrow{10,10}{0x21D0}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-extramarks.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-extramarks.sty
index 2bebb2e9941..a71eb9f1c8f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-extramarks.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-extramarks.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `extramarks')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,11 +15,14 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
-\LWR@ProvidesPackageDrop{extramarks}[2019/01/31]
+\LWR@ProvidesPackageDrop{extramarks}[2025/01/07]
\newcommand*{\extramarks}[2]{}
+\newcommand\extramarksleft[1]{}
+\newcommand\extramarksright[1]{}
\newcommand*{\firstleftxmark}{}
\newcommand*{\lastleftxmark}{}
\newcommand*{\firstrightxmark}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fancybox.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fancybox.sty
index c0d6940d99a..8309e00be55 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fancybox.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fancybox.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fancybox')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{fancybox}[2010/05/15]
\AfterEndPreamble{
\LWR@traceinfo{Patching fancybox.}
@@ -30,6 +31,11 @@
\protected@edef\@currentlabel{%
\csname p@footnote\endcsname\@thefnmark%
}% @currentlabel
+%% \protected@edef\cref@currentlabel{%
+%% [footnote]%
+%% [\arabic{footnote}]%
+%% []%
+%% \csname p@footnote\endcsname\@thefnmark}%
\renewrobustcmd{\textsuperscript}[1]{\LWR@htmlspan{sup}{##1}}%
\LWR@htmltagc{\LWR@tagregularparagraph}\LWR@orignewline%
\@makefntext{}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyhdr.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyhdr.sty
index 2886bad3cba..4615b881f1c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyhdr.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyhdr.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fancyhdr')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,9 +15,10 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
-\LWR@ProvidesPackageDrop{fancyhdr}[2021/01/04]
+\LWR@ProvidesPackageDrop{fancyhdr}[2025/01/07]
\newcommand*{\fancyhead}[2][]{}
\newcommand*{\fancyfoot}[2][]{}
@@ -51,10 +52,15 @@
\newcommand*{\iffbotfloat}[2]{#2}
\newcommand*{\iffootnote}[2]{#2}
-\newcommand{\fancypagestyle}[1]{%
- \@ifnextchar[{\f@nch@pagestyle{#1}}{\f@nch@pagestyle{#1}[]}%
-}
-\long\def\f@nch@pagestyle#1[#2]#3{}
+\NewDocumentCommand{\fancypagestyle}{s m o m}{}
+
+\newcommand\fancyhdrsettoheight[2]{}
+\newcommand{\fancyfootalign}[1]{}
+\NewDocumentCommand{\fancyhdrbox}{ O{cl} o m }{}
+\newcommand\fancypagestyleassign[2]{}
+\newcommand{\fancyheadwidth}[2][]{}
+\newcommand{\fancyfootwidth}[2][]{}
+\newcommand{\fancyhfwidth}[2][]{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fancypar.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fancypar.sty
index 4d531583f46..987f2582a5a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fancypar.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fancypar.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fancypar')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{fancypar}[2019/01/18]
\begin{warpHTML}
\makeatletter
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyref.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyref.sty
index f624416ae60..6963ace409f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyref.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyref.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fancyref')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{fancyref}[1999/02/03]
\newcommand*{\LWRfref@parenfancyrefhook}[1]{(#1)}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fancytabs.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fancytabs.sty
index d9b447f0e43..0b032a6abf8 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fancytabs.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fancytabs.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fancytabs')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{fancytabs}[2016/03/29]
\newcommand{\fancytab}[3][RIGHT]{}
\newcommand{\fancytabsStyle}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyvrb.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyvrb.sty
index 2ee10d8c92a..96bd787b55c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyvrb.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyvrb.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fancyvrb')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,9 +15,17 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\AtBeginDocument{\RequirePackage{xcolor}}% for \convertcolorspec
-\LWR@ProvidesPackagePass{fancyvrb}[2023/11/06]
+\LWR@ProvidesPackagePass{fancyvrb}[2024/01/20]
+
+\newcommand*{\LWR@currentFVbackstyle}{}
+
+\newcommand*{\LWR@find@currentFVbackstyle}{%
+ \renewcommand*{\LWR@currentFVbackstyle}{}%
+}%
+
\fvset{frame=none}%
\define@key{FV}{gobble}{%
@@ -196,6 +204,38 @@
\fi}
\endgroup
\newcommand*{\LWR@FVstyle}{}
+\newcommand*{\LWR@new@FVstyle}{\renewcommand*{\LWR@FVstyle}{}}
+\newcommand*{\LWR@addto@FVstyle}[1]{%
+ \apptocmd{\LWR@FVstyle}{\protect\LWR@indentHTMLtwo#1}%
+ {}%
+ {%
+ \PackageWarning{lwarp}{%
+ \string\LWR@addto@FVstyle\space was not
+ able to patch an HTML style.\MessageBreak
+ Pathching !#1!\MessageBreak%
+ Currently is !\LWR@FVstyle!\MessageBreak%
+ HTML styles may be not be complete%
+ }%
+ }%
+}
+\newcommand*{\LWR@addFVtextcolorstyle}{%
+ \LWR@findcurrenttextcolor%
+ \ifdefstring{\LWR@tempcolor}{000000}%
+ {}%
+ {\LWR@addto@FVstyle{color: \LWR@origpound\LWR@tempcolor ; }}%
+}
+\newcommand*{\LWR@addFVbackgroundstyle}{%
+ \ifdefempty{\LWR@currentFVbackstyle}%
+ {}%
+ {\LWR@addto@FVstyle{\LWR@currentFVbackstyle}}%
+}
+
+\newcommand*{\LWR@addFVborderstyle}[1]{%
+ \LWR@addto@FVstyle{\LWR@FVborderstyle{#1}}%
+}
+
+\newcommand*{\LWR@addFVborderstyles}{}
+
\AfterEndPreamble{
\LWR@traceinfo{Patching fancyvrb.}
@@ -260,16 +300,14 @@
\newcommand*{\LWR@fvstartnone}{%
\LWR@traceinfo{fvstartnone}%
- \ifdefstring{\LWR@FVstyle}{\LWR@currenttextcolorstyle}%
- {%
- \LWR@findcurrenttextcolor%
- \ifdefstring{\LWR@tempcolor}{000000}%
- {\BlockClass{fancyvrb}}%
- {\BlockClass[\LWR@FVstyle]{fancyvrb}}%
- }%
- {%
- \BlockClass[\LWR@FVstyle]{fancyvrb}%
- }%
+ \LWR@find@currentFVbackstyle% lwarp
+ \LWR@new@FVstyle% lwarp
+ \LWR@addFVtextcolorstyle% lwarp
+ \LWR@addFVbackgroundstyle% lwarp
+ \LWR@addFVborderstyles% lwarp
+ \ifdefempty{\LWR@FVstyle}%
+ {\BlockClass{fancyvrb}}%
+ {\BlockClass[\LWR@FVstyle]{fancyvrb}}%
\LWR@stoppars
\ifx\FV@LabelPositionTopLine\relax\else
\ifx\FV@LabelBegin\relax\else
@@ -355,22 +393,20 @@
\LWR@fvendnone%
}
\newcommand*{\LWR@FVfindbordercolor}{%
-\FancyVerbRuleColor%
-\LWR@findcurrenttextcolor%
-\color{black}%
+ \FancyVerbRuleColor%
+ \LWR@findcurrenttextcolor%
+ \color{black}%
}
\newcommand*{\LWR@FVborderstyle}[1]{%
-padding#1: \strip@pt\dimexpr \FV@FrameSep\relax\relax pt ; % space
-\LWR@FVfindbordercolor\LWR@indentHTMLtwo%
-border#1: \strip@pt\dimexpr \FV@FrameRule\relax\relax pt % space
-solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
+ padding#1: \strip@pt\dimexpr \FV@FrameSep\relax\relax pt ; % space
+ \LWR@FVfindbordercolor\LWR@indentHTMLtwo%
+ border#1: \strip@pt\dimexpr \FV@FrameRule\relax\relax pt % space
+ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
}
-
\VerifyCommand[lwarp][fancyvrb]{\FV@Frame@none}{C60E1656944AB4C4D2B74410E88FE7C0}
\def\LWR@HTML@FV@Frame@none{%
-\renewcommand*{\LWR@FVstyle}{\LWR@currenttextcolorstyle}% lwarp
\let\FV@BeginListFrame\LWR@fvstartnone%
\let\FV@LeftListFrame\relax%
\let\FV@RightListFrame\relax%
@@ -378,68 +414,54 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
\LWR@formatted{FV@Frame@none}
\FV@Frame@none% default values
-
\VerifyCommand[lwarp][fancyvrb]{\FV@Frame@single}{CDF78DB9C6408F48D05302D07091C629}
\def\LWR@HTML@FV@Frame@single{%
-\renewcommand*{\LWR@FVstyle}{%
- \LWR@currenttextcolorstyle\LWR@indentHTMLtwo%
- \LWR@FVborderstyle{}%
-}%
+\renewcommand{\LWR@addFVborderstyles}{\LWR@addFVborderstyle{}}% lwarp
\let\FV@BeginListFrame\LWR@fvstartsingle%
\let\FV@LeftListFrame\FV@LeftListFrame@Single%
\let\FV@RightListFrame\FV@RightListFrame@Single%
\let\FV@EndListFrame\LWR@fvendsingle}
-\LWR@formatted{FV@Frame@single}
+\LWR@formatted{FV@Frame@single}
\VerifyCommand[lwarp][fancyvrb]{\FV@Frame@lines}{1AADD6691DA93C9A66227F5C5B34EAE4}
\def\LWR@HTML@FV@Frame@lines{%
-\renewcommand*{\LWR@FVstyle}{%
- \LWR@currenttextcolorstyle\LWR@indentHTMLtwo%
- \LWR@FVborderstyle{-top}%
- \LWR@indentHTMLtwo%
- \LWR@FVborderstyle{-bottom}%
-}%
+\renewcommand{\LWR@addFVborderstyles}{%
+ \LWR@addFVborderstyle{-top}%
+ \LWR@addFVborderstyle{-bottom}%
+}% lwarp
\let\FV@BeginListFrame\LWR@fvstartline%
\let\FV@LeftListFrame\relax%
\let\FV@RightListFrame\relax%
\let\FV@EndListFrame\LWR@fvendline}
-\LWR@formatted{FV@Frame@lines}
+\LWR@formatted{FV@Frame@lines}
\VerifyCommand[lwarp][fancyvrb]{\FV@Frame@topline}{7E102D81F4FD367B398B8E85F48A7754}
\def\LWR@HTML@FV@Frame@topline{%
-\renewcommand*{\LWR@FVstyle}{%
- \LWR@currenttextcolorstyle\LWR@indentHTMLtwo%
- \LWR@FVborderstyle{-top}%
-}%
+\renewcommand{\LWR@addFVborderstyles}{\LWR@addFVborderstyle{-top}}% lwarp
\let\FV@BeginListFrame\LWR@fvstartline%
\let\FV@LeftListFrame\relax%
\let\FV@RightListFrame\relax%
\let\FV@EndListFrame\LWR@fvendnone}
-\LWR@formatted{FV@Frame@topline}
+\LWR@formatted{FV@Frame@topline}
\VerifyCommand[lwarp][fancyvrb]{\FV@Frame@bottomline}{A51600F812F57F4211EF9E34F261564A}
\def\LWR@HTML@FV@Frame@bottomline{%
-\renewcommand*{\LWR@FVstyle}{%
- \LWR@currenttextcolorstyle\LWR@indentHTMLtwo%
- \LWR@FVborderstyle{-bottom}%
-}%
+\renewcommand{\LWR@addFVborderstyles}{\LWR@addFVborderstyle{-bottom}}% lwarp
\let\FV@BeginListFrame\LWR@fvstartnone%
\let\FV@LeftListFrame\relax%
\let\FV@RightListFrame\relax%
\let\FV@EndListFrame\LWR@fvendline}
+
\LWR@formatted{FV@Frame@bottomline}
\def\FV@FrameFillLine{}
\VerifyCommand[lwarp][fancyvrb]{\FV@Frame@leftline}{2A77982C6520FD64F6DBFA1C03B670BA}
\def\LWR@HTML@FV@Frame@leftline{%
-\renewcommand*{\LWR@FVstyle}{%
- \LWR@currenttextcolorstyle\LWR@indentHTMLtwo%
- \LWR@FVborderstyle{-left}%
-}%
+\renewcommand{\LWR@addFVborderstyles}{\LWR@addFVborderstyle{-left}}% lwarp
\ifx\FancyVerbFillColor\relax%
\let\FV@FrameFillLine\relax%
\else%
@@ -453,6 +475,7 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
\let\FV@LeftListFrame\FV@LeftListFrame@Single%
\let\FV@RightListFrame\relax%
\let\FV@EndListFrame\LWR@fvendnone}
+
\LWR@formatted{FV@Frame@leftline}
\VerifyCommand[lwarp][fancyvrb]{\FV@SingleFrameLine}{2D8B1DAED851500F255E357437FF065C}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fbox.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fbox.sty
index bdf98aea243..1b3813184bc 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fbox.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fbox.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fbox')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{fbox}[2022/02/20]
\LetLtxMacro\LWR@HTML@fbox\fbox
\renewcommand*{\orig@fbox}{\FBox@i[tblr]}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fewerfloatpages.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fewerfloatpages.sty
index a2f04afee75..dda2cfe6016 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fewerfloatpages.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fewerfloatpages.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fewerfloatpages')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{fewerfloatpages}[2020/02/14]
\newcommand\floatpagekeepfraction{\textfraction}
\newcounter{floatpagedeferlimit}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-figcaps.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-figcaps.sty
index 470ce9b0b3f..da0aaff0818 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-figcaps.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-figcaps.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `figcaps')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{figcaps}[1999/02/23]
\newcommand*{\figcapson}{}
\newcommand*{\figcapsoff}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-figsize.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-figsize.sty
index a04b47ce080..4502a8fe16a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-figsize.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-figsize.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `figsize')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{figsize}[2002/03/18]
\newlength{\figwidth}
\newlength{\figheight}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fitbox.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fitbox.sty
index fd9d23180f2..285850a9f92 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fitbox.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fitbox.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fitbox')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{fitbox}[2019/02/20]
\NewDocumentCommand{\fitbox}{s o m}{%
\begin{BlockClass}{fitbox}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fix2col.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fix2col.sty
index 4f9b4f98d28..f54223def75 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fix2col.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fix2col.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fix2col')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{fix2col}[2015/11/13]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fixmath.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fixmath.sty
index 6eea0d0c635..72f5c723b56 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fixmath.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fixmath.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fixmath')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{fixmath}[2000/04/11]
\LWR@origRequirePackage{lwarp-common-mathjax-letters}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fixme.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fixme.sty
index da776add99d..853d1a910b0 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fixme.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fixme.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fixme')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{fixme}[2019/01/03]
\let\@wrindex\LWR@wrindex
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fixmetodonotes.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fixmetodonotes.sty
index c439693d3bb..5e1e7f05b90 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fixmetodonotes.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fixmetodonotes.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fixmetodonotes')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{fixmetodonotes}[2013/04/28]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-flafter.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-flafter.sty
index f907c8486fd..789179e040d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-flafter.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-flafter.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `flafter')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{flafter}[2018/01/08]
\providecommand\fl@trace[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-flippdf.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-flippdf.sty
index f0a9f27a1fd..73d3f5b17c8 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-flippdf.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-flippdf.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `flippdf')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{flippdf}[2006/06/30]
\newcommand\FlipPDF{}
\newcommand\UnFlipPDF{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty
index 4fa7466c954..a95f363c573 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `float')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{float}[2001/11/08]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-floatflt.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-floatflt.sty
index 30ab5404e83..7ccbf71442e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-floatflt.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-floatflt.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `floatflt')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{floatflt}[1997/07/16]
\NewDocumentEnvironment{KFLTfloatflt@marginfloat}{O{-1.2ex} m m}
{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-floatpag.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-floatpag.sty
index 3cdc10622e3..751a6125763 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-floatpag.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-floatpag.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `floatpag')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{floatpag}[2012/05/29]
\newcommand*{\floatpagestyle}[1]{}
\newcommand*{\rotfloatpagestyle}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-floatrow.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-floatrow.sty
index 7fa0aa3b711..7aba045a6b3 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-floatrow.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-floatrow.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `floatrow')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fltrace.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fltrace.sty
index 37213652016..a393b96de67 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fltrace.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fltrace.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fltrace')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{fltrace}[2018/01/08]
\def\tracefloats{}
\def\tracefloatsoff{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-flushend.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-flushend.sty
index 2149e96ecd9..1a5fa7147ed 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-flushend.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-flushend.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `flushend')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{flushend}[2021/10/04]
\newcommand*{\flushend}{}
\newcommand*{\raggedend}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fnbreak.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fnbreak.sty
index 262229634b4..f0e7488a3b6 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fnbreak.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fnbreak.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fnbreak')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{fnbreak}[2012/01/01]
\newcommand*{\fnbreakverbose}{}
\newcommand*{\fnbreaknonverbose}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fncychap.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fncychap.sty
index 9b40f562b59..4162bc2072c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fncychap.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fncychap.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fncychap')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{fncychap}[2007/07/30]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fnlineno.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fnlineno.sty
index e8b8204e429..942ec8a9a47 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fnlineno.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fnlineno.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fnlineno')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{fnlineno}[2011/01/07]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fnpara.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fnpara.sty
index 638bcc2880d..cc6406cc985 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fnpara.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fnpara.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fnpara')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{fnpara}
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fnpos.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fnpos.sty
index cd3407aa672..56e4423f5c1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fnpos.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fnpos.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fnpos')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{fnpos}[1999/07/14]
\newcommand*{\makeFNbottom}{}
\newcommand*{\makeFNmid}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome.sty
index 8eeac060b1d..9d4024e866c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fontawesome')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{fontawesome}[2016/05/15]
\LetLtxMacro\LWR@orig@symbol\symbol
@@ -24,7 +25,8 @@
\newcommand*{\LWR@fontawesome@xelatex@symbol}[1]{%
\LWR@findcurrenttextcolor%
- \begin{lateximage}*[icon][fontawesomexetex#1SZ\LWR@font@size{}CL\LWR@tempcolor]%
+ \begin{lateximage}*[icon]%
+ [fontawesomexetex#1SZ\LWR@font@size{}CL\LWR@tempcolor]%
\csuse{\LWR@font@size}%
\LWR@orig@FA%
\LWR@orig@symbol{#1}%
@@ -39,7 +41,8 @@
\newcommand*{\LWR@fontawesome@symbolX}[2]{%
\LWR@findcurrenttextcolor%
- \begin{lateximage}*[icon #1][fontawesome#2#1SZ\LWR@font@size{}CL\LWR@tempcolor]%
+ \begin{lateximage}*[icon #1]?%
+ [fontawesome#2#1SZ\LWR@font@size{}CL\LWR@tempcolor]%
\csuse{\LWR@font@size}%
\fontencoding{U}\fontfamily{fontawesome#2}\selectfont%
\LWR@orig@symbol{#1}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome5-generic-helper.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome5-generic-helper.sty
index ae26625b80b..319d560fe41 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome5-generic-helper.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome5-generic-helper.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fontawesome5-generic-helper')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{fontawesome5-generic-helper}[2022/05/02]
\ExplSyntaxOn
@@ -24,8 +25,9 @@
\cs_set:Nn\fontawesome_use_icon:nn{
\LWR@findcurrenttextcolor
\cs_if_exist:cTF{c__fontawesome_slot_#2_tl}{
- \begin{lateximage}*[#2][fontawesome5#1SZ\LWR@font@size{}CL\LWR@tempcolor]% lwarp
- \csuse{\LWR@font@size}% lwarp
+ \begin{lateximage}*[#2]?% lwarp
+ [fontawesome5#1SZ\LWR@font@size{}CL\LWR@tempcolor]% lwarp
+ \csuse{\LWR@font@size}% lwarp
\bool_if:NTF\c__fontawesome_fixed_bool{
\makebox[1.5em][c]
}{
@@ -37,7 +39,7 @@
{c__fontawesome_slot_#2_tl}
{#1}{#2}
}
- \end{lateximage}% lwarp
+ \end{lateximage}% lwarp
}{
\msg_error:nnxx{fontawesome5}{icon-not-found}{#2}{#1}
}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome5-utex-helper.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome5-utex-helper.sty
index 4c4f4d7d752..e84c6770f98 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome5-utex-helper.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome5-utex-helper.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fontawesome5-utex-helper')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{fontawesome5-utex-helper}[2022/05/02]
\ExplSyntaxOn
@@ -55,8 +56,9 @@
\msg_warning:nnxx{fontawesome5}{style-substitution}{#2}{#1}
}
}
- \begin{lateximage}*[#2][fontawesome5#1SZ\LWR@font@size{}CL\LWR@tempcolor]% lwarp
- \csuse{\LWR@font@size}% lwarp
+ \begin{lateximage}*[#2]?% lwarp
+ [fontawesome5#1SZ\LWR@font@size{}CL\LWR@tempcolor]% lwarp
+ \csuse{\LWR@font@size}% lwarp
\bool_if:NTF\c__fontawesome_fixed_bool{
\makebox[1.5em][c]
}{
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome5.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome5.sty
index 704286bcfb7..1cc22e7af50 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome5.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fontawesome5.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fontawesome5')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{fontawesome5}[2022/05/02]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fontaxes.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fontaxes.sty
index 22bfcdf92d4..0577fa071e3 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fontaxes.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fontaxes.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fontaxes')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{fontaxes}[2014/03/23]
\ifdef{\LWR@HTML@swshape}{}{% duplicated by nfssext-cfr
\newcommand{\LWR@HTML@swshape}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fontenc.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fontenc.sty
index e49a1b3fa3a..723f574077d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fontenc.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fontenc.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fontenc')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{fontenc}[2017/04/05]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-footmisc.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-footmisc.sty
index 03df9e28ce3..ee025bdaf62 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-footmisc.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-footmisc.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `footmisc')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{footmisc}[2011/06/06]
\newcommand{\footnotelayout}{}
\newcommand{\setfnsymbol}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-footnote.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-footnote.sty
index 9fbe6cb5513..531fd7d52cc 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-footnote.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-footnote.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `footnote')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\long\def\@makefntext#1{\textsuperscript{\@thefnmark}~#1}
\LWR@ProvidesPackagePass{footnote}[1997/01/28]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-footnotebackref.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-footnotebackref.sty
index 01e2e615bd1..8e4b52020e1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-footnotebackref.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-footnotebackref.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `footnotebackref')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{footnotebackref}[2012/07/01]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-footnotehyper.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-footnotehyper.sty
index 4edb3bfb909..0f21ef02364 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-footnotehyper.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-footnotehyper.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `footnotehyper')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\RequirePackage{footnote}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-footnoterange.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-footnoterange.sty
index b990b0ca911..5d82c07bcdf 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-footnoterange.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-footnoterange.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `footnoterange')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{footnoterange}[2012/02/17]
\csletcs{footnoterange}{footnoterange*}
\csletcs{endfootnoterange}{endfootnoterange*}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-footnpag.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-footnpag.sty
index 699db6d9d6c..365b72e680b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-footnpag.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-footnpag.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `footnpag')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{footnpag}
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-foreign.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-foreign.sty
index 7b85e94195e..1a5e938a21a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-foreign.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-foreign.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `foreign')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{foreign}[2012/09/25]
\renewcommand\foreignabbrfont{\emph}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-forest.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-forest.sty
index b23e8f45a06..6f54de231a4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-forest.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-forest.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `forest')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,11 +15,12 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{forest}[2017/07/14]
\BeforeBeginEnvironment{forest}{%
- \begin{lateximage}[-forest-~\PackageDiagramAltText]%
+ \begin{lateximage}[-forest-~\PackageDiagramAltText]?%
}
\AfterEndEnvironment{forest}{\end{lateximage}}
@@ -35,7 +36,7 @@
but \protect\Forest* cannot work in an environment.}%
\let\forest@next\forest@env%
}{\let\forest@next\forest@group@env}%
- \begin{lateximage}[-forest-~\PackageDiagramAltText]% lwarp
+ \begin{lateximage}[-forest-~\PackageDiagramAltText]?% lwarp
\forest@next{#3}%
\end{lateximage}% lwarp
}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fouridx.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fouridx.sty
index 99333d4f099..788923be0df 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fouridx.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fouridx.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fouridx')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{fouridx}[2013/11/21]
\begin{warpMathJax}
\CustomizeMathJax{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fourier.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fourier.sty
index f0d8426d783..303366f11a1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fourier.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fourier.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fourier')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{fourier}[2020/03/03]
\LWR@infoprocessingmathjax{fourier}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-framed.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-framed.sty
index cb8745d5baa..95fdb3591d4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-framed.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-framed.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `framed')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{framed}[2011/10/22]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-froufrou.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-froufrou.sty
index 4979ae0814a..fb59d8bb3c4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-froufrou.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-froufrou.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `froufrou')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{froufrou}[2020/12/22]
\ExplSyntaxOn
\xpretocmd{\setfroufrou}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ftcap.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ftcap.sty
index ca96fb96a3f..a22a1baa2db 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ftcap.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ftcap.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ftcap')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{ftcap}
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ftnright.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ftnright.sty
index d4aff4a7ec2..58277b2fd89 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ftnright.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ftnright.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ftnright')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{ftnright}[2014/10/28]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fullminipage.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fullminipage.sty
index c776a935dc1..018ecbc621c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fullminipage.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fullminipage.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fullminipage')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{fullminipage}[2014/07/06]
\newenvironment{fullminipage}[1][]{}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fullpage.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fullpage.sty
index c00c8fa8ea9..6331ef6837a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fullpage.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fullpage.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fullpage')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{fullpage}[1994/06/01]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fullwidth.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fullwidth.sty
index 9b3f9a95466..1b808490d2b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fullwidth.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fullwidth.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fullwidth')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{fullwidth}[2011/11/18]
\newenvironment*{fullwidth}[1][]{%
\minipagefullwidth%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fvextra.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fvextra.sty
index aa859482fc7..efd115d0e0c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fvextra.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fvextra.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fvextra')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,7 +15,8 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
-\LWR@ProvidesPackagePass{fvextra}[2023/11/28]
+%%
+\LWR@ProvidesPackagePass{fvextra}[2024/11/17]
\define@booleankey{FV}{obeytabs}%
{\let\FV@ObeyTabsInit\relax}% lwarp
{\let\FV@ObeyTabsInit\relax}
@@ -86,14 +87,44 @@
{\def\FancyVerbSpace{\verbvisiblespace}}
\fi
-\VerifyCommand[lwarp][fvextra]{\FV@ListProcessLine@NoBreak}{935C1C5101F15E02B916295A66862714}
+
+\renewcommand*{\LWR@find@currentFVbackstyle}{%
+ \ifundef{\FancyVerbBackgroundColor}%
+ {%
+ \renewcommand*{\LWR@currentFVbackstyle}{}%
+ }%
+ {%
+ \protect\colorlet{LWR@current@color}{\FancyVerbBackgroundColor}%
+ \protect\convertcolorspec%
+ {named}{LWR@current@color}{HTML}%
+ \LWR@currentFVbackcolor\relax%
+ \renewcommand*{\LWR@currentFVbackstyle}{%
+ background:\LWR@origpound\LWR@currentFVbackcolor ; %
+ }%
+ }%
+}%
+
+\def\FV@BGColor@List#1{%
+ \ifx\FancyVerbBackgroundColor\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {#1}%
+ {%
+ #1% lwarp
+}}
+
+\VerifyCommand[lwarp][fvextra]{\FV@ListProcessLine@NoBreak}
+ {CF94595D40774FB18D2002C3C9276956}
\def\FV@ListProcessLine@NoBreak#1{%
\FV@LeftListNumber%
\FV@LeftListFrame%
+ \FV@BGColor@List{%
\FancyVerbFormatLine{%
\FancyVerbHighlightLine{%
- \FV@ObeyTabs{\FancyVerbFormatText{#1}}}}%\hss
+ \FV@ObeyTabs{\FancyVerbFormatText{#1}}}}}%\hss
\FV@RightListFrame%
\FV@RightListNumber%
\null\par% lwarp
@@ -110,7 +141,8 @@
{\hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}}%
}
-\VerifyCommand[lwarp][fvextra]{\FV@Numbers@left}{57A16473A8AA4214529F6BABEC435311}
+\VerifyCommand[lwarp][fvextra]{\FV@Numbers@left}
+ {57A16473A8AA4214529F6BABEC435311}
\xpatchcmd{\FV@Numbers@left}%
{\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}}
@@ -130,7 +162,8 @@
{}
{\LWR@patcherror{fvextra}{FV@Numbers@left C}}
-\VerifyCommand[lwarp][fvextra]{\FV@Numbers@right}{6D0F98326BCB22695874D94BEC12E32F}
+\VerifyCommand[lwarp][fvextra]{\FV@Numbers@right}
+ {6D0F98326BCB22695874D94BEC12E32F}
\xpatchcmd{\FV@Numbers@right}%
{\hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}}
@@ -150,7 +183,8 @@
{}
{\LWR@patcherror{fvextra}{FV@Numbers@right C}}
-\VerifyCommand[lwarp][fvextra]{\FV@Numbers@both}{C349DC2B800D5DD085FFB7620A6289EA}
+\VerifyCommand[lwarp][fvextra]{\FV@Numbers@both}
+ {C349DC2B800D5DD085FFB7620A6289EA}
\xpatchcmd{\FV@Numbers@both}%
{\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}}
@@ -188,7 +222,8 @@
{}
{\LWR@patcherror{fvextra}{FV@Numbers@both F}}
-\VerifyCommand[lwarp][fvextra]{\FVC@SaveVerb@Extra@ii}{BCE88217BA577F70BAC8158E110E404C}
+\VerifyCommand[lwarp][fvextra]{\FVC@SaveVerb@Extra@ii}
+ {BCE88217BA577F70BAC8158E110E404C}
\def\FVC@SaveVerb@Extra@ii#1#2#3{%
\global\let\FV@AfterSave\FancyVerbAfterSave
@@ -197,65 +232,49 @@
\@namedef{FV@SVRaw@#1}{\LWR@HTMLsanitize@use@tmpb{#2}}% lwarp
\FV@AfterSave}%
-\VerifyCommand[lwarp][fvextra]{\FV@UseVerb@Extra}{8B4DAB7A789CAB11394A35D2BA864FE4}
+\VerifyCommand[lwarp][fvextra]{\FVC@Verb@Extra@ii}
+ {C81AC0F7DFE7FBB55CF8B5B7F24FA56A}
-\def\FV@UseVerb@Extra#1{%
+\def\FVC@Verb@Extra@ii#1{%
+ \def\tmpb{#1}% lwarp
\ifbool{LWR@verbtags}% lwarp
{\LWR@htmltag{span class=\textquotedbl{}fancyvrb\textquotedbl}}% lwarp
{}% lwarp
- \ifFV@breaklines
+ \LWR@HTMLsanitize@tmpb% lwarp
+ \ifx\FancyVerbBackgroundColor\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
- {\FV@InsertBreaks{\FancyVerbFormatInline}{#1}}%
- {\mbox{#1}}%
+ {\ifbool{FV@breaklines}%
+ {\FV@InsertBreaks{\FancyVerbFormatInline}{\tmpb}}% lwarp
+ {\mbox{\FancyVerbFormatInline{\tmpb}}}}% lwarp
+ {\setlength{\FV@TmpLength}{\fboxsep}%
+ \ifx\FancyVerbBackgroundColorPadding\relax
+ \setlength{\fboxsep}{0pt}%
+ \else
+ \setlength{\fboxsep}{\FancyVerbBackgroundColorPadding}%
+ \fi
+ \colorbox{\FancyVerbBackgroundColor}{%
+ \setlength{\fboxsep}{\FV@TmpLength}%
+ \FancyVerbBackgroundColorVPhantom\FancyVerbFormatInline{\tmpb}}}% lwarp
\ifbool{LWR@verbtags}% lwarp
{\LWR@htmltag{/span}}% lwarp
{}% lwarp
\endgroup}
-\VerifyCommand[lwarp][fvextra]{\FVC@Verb@Extra@ii}{8B4DAB7A789CAB11394A35D2BA864FE4}
+\VerifyCommand[lwarp][fvextra]{\FV@UseVerb@Extra}
+ {C81AC0F7DFE7FBB55CF8B5B7F24FA56A}
-\def\FVC@Verb@Extra@ii#1{%
- \def\tmpb{#1}% lwarp
- \ifbool{LWR@verbtags}% lwarp
- {\LWR@htmltag{span class=\textquotedbl{}fancyvrb\textquotedbl}}% lwarp
- {}% lwarp
- \LWR@HTMLsanitize@tmpb% lwarp
- \ifFV@breaklines
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {\FV@InsertBreaks{\FancyVerbFormatInline}{\tmpb}}% lwarp
- {\mbox{\tmpb}}% lwarp
- \ifbool{LWR@verbtags}% lwarp
- {\LWR@htmltag{/span}}% lwarp
- {}% lwarp
- \endgroup}
+\let\FV@UseVerb@Extra\FVC@Verb@Extra@ii%
-\VerifyCommand[lwarp][fvextra]{\FVC@EscVerb@ii}{8B4DAB7A789CAB11394A35D2BA864FE4}
+\VerifyCommand[lwarp][fvextra]{\FVC@EscVerb@ii}
+ {C81AC0F7DFE7FBB55CF8B5B7F24FA56A}
-\def\FVC@EscVerb@ii#1{%
- \def\tmpb{#1}% lwarp
- \ifbool{LWR@verbtags}% lwarp
- {\LWR@htmltag{span class=\textquotedbl{}fancyvrb\textquotedbl}}% lwarp
- {}% lwarp
- \LWR@HTMLsanitize@tmpb% lwarp
- \ifFV@breaklines
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {\FV@InsertBreaks{\FancyVerbFormatInline}{\tmpb}}% lwarp
- {\mbox{\tmpb}}% lwarp
- \ifbool{LWR@verbtags}% lwarp
- {\LWR@htmltag{/span}}% lwarp
- {}% lwarp
- \endgroup}
+\let\FVC@EscVerb@ii\FVC@Verb@Extra@ii%
-\VerifyCommand[lwarp][fvextra]{\FVB@VerbatimWrite}{B092E8AB57DB2ABBA815BC39DB5256DC}
+\VerifyCommand[lwarp][fvextra]{\FVB@VerbatimWrite}
+ {B092E8AB57DB2ABBA815BC39DB5256DC}
\xpatchcmd{\FVB@VerbatimWrite}
{\FV@Scan}
@@ -263,7 +282,8 @@
{}
{\LWR@patcherror{fvextra}{FVB@VerbatimWrite}}
-\VerifyCommand[lwarp][fvextra]{\FVB@VerbatimBuffer}{048525348EC4D60E258FD5DD74434BB1}
+\VerifyCommand[lwarp][fvextra]{\FVB@VerbatimBuffer}
+ {151F97F8D2944BDA11300CBF70FB40C9}
\xpatchcmd{\FVB@VerbatimBuffer}
{\FV@Scan}
@@ -271,55 +291,15 @@
{}
{\LWR@patcherror{fvextra}{FVB@VerbatimBuffer}}
-\VerifyCommand[lwarp][fvextra]{\VerbatimInsertBuffer}{4582BD54720B56AD050042DD9FC0E289}
-
-\renewcommand{\VerbatimInsertBuffer}[1][]{%
- \begingroup
- \def\FV@KeyValues{#1}%
- \def\FV@Scan{%
- \FV@CatCodes
- \xdef\FV@EnvironName{Verbatim}%
- \ifnum\expandafter\value\expandafter{\FV@bufferlengthname}=\z@\relax
- \PackageError{fvextra}%
- {Buffer length counter \FV@bufferlengthname\space is invalid or zero}%
- {}%
- \let\FV@GetLine\relax
- \fi
- \FV@GetLine}%
- \let\FV@CheckScan\relax
- \setcounter{FancyVerbBufferIndex}{1}%
- \def\VerbatimInsertBuffer@def@FV@Line##1{%
- \FVExtraRetokenizeVArg{\def\FV@Line}{}{##1}%
+\VerifyCommand[lwarp][fvextra]{\VerbatimInsertBuffer@def@FV@Line}
+ {5C6EACB0FB4432BEA081C784456845CD}
+
+\def\VerbatimInsertBuffer@def@FV@Line#1{%
+ \FVExtraRetokenizeVArg{\def\FV@Line}{}{#1}%
\LetLtxMacro\tmpb\FV@Line% lwarp
\LWR@HTMLsanitize@tmpb% lwarp
\LetLtxMacro\FV@Line\tmpb% lwarp
- }%
- \def\FancyVerbGetLine{%
- \ifnum\value{FancyVerbBufferIndex}>%
- \expandafter\value\expandafter{\FV@bufferlengthname}\relax
- \global\let\FV@EnvironName\relax
- \let\next\relax
- \else
- \ifcsname \FancyVerbBufferLineName\arabic{FancyVerbBufferIndex}\endcsname
- \expandafter\let\expandafter\FV@Line@Buffer
- \csname\FancyVerbBufferLineName\arabic{FancyVerbBufferIndex}\endcsname
- \expandafter\VerbatimInsertBuffer@def@FV@Line\expandafter{\FV@Line@Buffer}%
- \def\next{\FV@PreProcessLine\FV@GetLine}%
- \stepcounter{FancyVerbBufferIndex}%
- \else
- \def\next{%
- \PackageError{fvextra}%
- {Buffer with line macro named
- "\FancyVerbBufferLineName\arabic{FancyVerbBufferIndex}" does not exist}%
- {Check bufferlinename, bufferlengthname, and globalbuffer settings}%
- }%
- \fi
- \fi
- \next}%
- \FVB@Verbatim
- \FVE@Verbatim
- \setcounter{FancyVerbBufferIndex}{0}%
- \endgroup}
+}%
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-fwlw.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-fwlw.sty
index c60ad7be120..124e560d602 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-fwlw.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-fwlw.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `fwlw')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{fwlw}
\newbox\FirstWordBox \global\setbox\FirstWordBox\hbox{}
\newbox\NextWordBox \global\setbox\NextWordBox\hbox{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-gensymb.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-gensymb.sty
index 4299f6f08e2..941883ccf6b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-gensymb.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-gensymb.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `gensymb')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{gensymb}[2003/07/02]
\begin{warpMathJax}
\CustomizeMathJax{\require{gensymb}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-gentombow.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-gentombow.sty
index 42e417a213c..9ad31039a3f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-gentombow.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-gentombow.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `gentombow')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{gentombow}[2018/05/17]
\newcommand{\settombowbanner}[1]{}
\newcommand{\settombowbannerfont}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-geometry.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-geometry.sty
index d7038a9c251..82c4b576b49 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-geometry.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-geometry.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `geometry')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDropA{geometry}{2018/04/16}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ghsystem.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ghsystem.sty
index b0df0e9770d..90d3cf0719a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ghsystem.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ghsystem.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ghsystem')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{ghsystem}[2020/02/17]
\ExplSyntaxOn
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-gindex.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-gindex.sty
index 7af41f6fd12..de3dfa1efba 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-gindex.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-gindex.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `gindex')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{gindex}[2019/10/07]
\AtBeginDocument{
\robustify{\indexpagessep}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-gloss.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-gloss.sty
index 4dd6e32d0ec..4026a38ae8e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-gloss.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-gloss.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `gloss')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{gloss}[2002/07/26]
\VerifyCommand[lwarp][gloss]{\gls@gloss@iii}{96590CC8FAE12295596B9F664BE4AF8C}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-glossaries.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-glossaries.sty
index 9ad6b447ab7..56e78d53d4d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-glossaries.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-glossaries.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `glossaries')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\PassOptionsToPackage{xindy}{glossaries}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-gmeometric.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-gmeometric.sty
index 9c91bf1d623..2e6b67bd9b5 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-gmeometric.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-gmeometric.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `gmeometric')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{gmeometric}[2008/11/22]
\RequirePackageWithOptions{geometry}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty
index 8b0d5432dd6..118d6ff3eac 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `graphics')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{graphics}[2020/08/30]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-graphicx.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-graphicx.sty
index ab3aefa093b..e479bafcc04 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-graphicx.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-graphicx.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `graphicx')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{graphicx}[2020/09/09]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-grffile.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-grffile.sty
index c43a41b306b..63a8eacf8f2 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-grffile.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-grffile.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `grffile')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{grffile}[2017/06/30]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-grid-system.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-grid-system.sty
index d9f54704cbd..a1cc640d00c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-grid-system.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-grid-system.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `grid-system')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{grid-system}[2014/02/16]
\AtBeginEnvironment{Row}{\setlength{\linewidth}{6in}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-grid.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-grid.sty
index 21df230e063..dd6073943b4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-grid.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-grid.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `grid')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{grid}[2009/06/16]
\newenvironment*{gridenv}{}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-gridset.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-gridset.sty
index dd9326d8940..c59f981c569 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-gridset.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-gridset.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `gridset')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{gridset}[2020-02-12]
\newcommand*{\gridbase}{}
\newcommand*{\gridinterval}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-hang.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-hang.sty
index cb4719b4503..51128a6c10b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-hang.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-hang.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `hang')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{hang}[2017/02/18]
\newlength{\hangingindent}
\setlength{\hangingindent}{1em}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-hanging.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-hanging.sty
index 47f4c011e0a..3386f2d72e7 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-hanging.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-hanging.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `hanging')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{hanging}[2009/09/02]
\IfClassLoadedTF{memoir}{
\let\hangpara\relax
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-hepunits.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-hepunits.sty
index e734e93b8ac..00a516720fc 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-hepunits.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-hepunits.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `hepunits')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{hepunits}[2020/04/10]
\begin{warpMathJax}
\LWR@infoprocessingmathjax{hepunits}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-hhline.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-hhline.sty
index ae32805c9b3..79125cb90d1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-hhline.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-hhline.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `hhline')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{hhline}[2014/10/28]
\newrobustcmd*{\LWR@HTML@hhline}[1]{%
\edef\LWR@tempone{\detokenize\expandafter{#1}}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-hhtensor.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-hhtensor.sty
index 5194a28dddd..c7f496d5f2b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-hhtensor.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-hhtensor.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `hhtensor')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{hhtensor}[2011/12/29]
\begin{warpMathJax}
\iftensor@bold
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-hypbmsec.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-hypbmsec.sty
index ebdd0af15ee..2d0886dbc4f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-hypbmsec.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-hypbmsec.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `hypbmsec')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{hypbmsec}[2016/05/16]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-hypcap.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-hypcap.sty
index 62e7c7f3265..db1326d7393 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-hypcap.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-hypcap.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `hypcap')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{hypcap}[2016/05/16]
\newcommand*{\capstart}{}
\newcommand*{\hypcapspace}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-hypdestopt.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-hypdestopt.sty
index ece1abb356a..878ec57866d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-hypdestopt.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-hypdestopt.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `hypdestopt')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{hypdestopt}[2016/05/21]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-hypernat.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-hypernat.sty
index 0caa2ca16b4..e18701b0bce 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-hypernat.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-hypernat.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `hypernat')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{hypernat}[2001/07/09]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty
index 4addf49152a..6e24462f8f4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `hyperref')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
@@ -269,6 +270,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
\ifLWR@hyperref@pagebackref
\RequirePackage{backref}
\fi
+\newdimen\XeTeXLinkMargin
+\newcommand*{\XeTeXLinkBox}[1]{#1}
\LetLtxMacro\href\LWR@href
\LetLtxMacro\nolinkurl\LWR@nolinkurl
\LetLtxMacro\url\LWR@url
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperxmp.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperxmp.sty
index 74fbdf999fc..7123bb6d587 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperxmp.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperxmp.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `hyperxmp')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{hyperxmp}[2018/11/27]
\define@key{LWR@hyperref}{pdfdate}[]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-hyphenat.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-hyphenat.sty
index ed7a9f8aab2..65a88340a32 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-hyphenat.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-hyphenat.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `hyphenat')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{hyphenat}[2009/09/02]
\LetLtxMacro\LWRHYNAT@origtextnhtt\textnhtt
\LetLtxMacro\LWRHYNAT@orignhttfamily\nhttfamily
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-idxlayout.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-idxlayout.sty
index 8b14d57f668..86b23027e70 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-idxlayout.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-idxlayout.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `idxlayout')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{idxlayout}[2012/03/30]
\newcommand{\LWR@indexprenote}{}
\AtBeginDocument{
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ifoddpage.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ifoddpage.sty
index cc6a7a73d10..397552d4554 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ifoddpage.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ifoddpage.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ifoddpage')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{ifoddpage}[2016/04/23]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-imakeidx.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-imakeidx.sty
index 774ccf6c769..ca4f41761df 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-imakeidx.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-imakeidx.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `imakeidx')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{imakeidx}[2016/10/15]
\catcode`\_=12%
\define@key{imki}{name}{\def\imki@name{#1_html}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-index.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-index.sty
index f00e9dff6c8..24bdf1c2e94 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-index.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-index.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `index')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{index}[2004/01/20]
\VerifyCommand[lwarp][index]{\newindex}{F714216FA78BCC8DB70B7BB92BE05F3C}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-inputtrc.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-inputtrc.sty
index 9db6a518ac5..75866a0fd7c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-inputtrc.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-inputtrc.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `inputtrc')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{inputtrc}[2012/10/10]
\VerifyCommand[lwarp][inputtrc]{\IT@prim@input}{03F74081468CFB6308896BDEB61D1E23}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-intopdf.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-intopdf.sty
index bf117564993..b589d368d4e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-intopdf.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-intopdf.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `intopdf')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{intopdf}[2019/05/28]
\NewDocumentCommand{\attachandlink}{o m o m m}{%
\LWR@href{#2}{#5}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-isomath.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-isomath.sty
index 012332016da..1e4affc1270 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-isomath.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-isomath.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `isomath')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{isomath}[2012/09/04]
\begin{warpMathJax}
\CustomizeMathJax{\let\mathbfit\boldsymbol}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-isotope.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-isotope.sty
index 6feda2b60be..ebe89bdbb41 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-isotope.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-isotope.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `isotope')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{isotope}[2011/08/26]
\newcommand{\LWR@HTML@isotope@two}[2][]{%
\renewcommand{\isotope@atomicnumber}{#1}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-jurabib.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-jurabib.sty
index 4a923f7bc23..99d465cc49a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-jurabib.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-jurabib.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `jurabib')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{jurabib}[2004/01/25]
\renewrobustcmd{\jblangle}{\textless}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-karnaugh-map.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-karnaugh-map.sty
index 38e2c7ce142..901c280471a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-karnaugh-map.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-karnaugh-map.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `karnaugh-map')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{karnaugh-map}[2017/02/20]
\VerifyEnvironment[lwarp][karnaugh-map]{karnaugh-map}
{FFA0270032620E79C8344E63AEDBF925}{08A76B622DBB34F033284513743C5F8C}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-keyfloat.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-keyfloat.sty
index 706cfd3c937..1b98ee418ee 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-keyfloat.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-keyfloat.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `keyfloat')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{keyfloat}[2019/09/23]
@@ -78,7 +79,7 @@
}% nested
{}% not nested
}
-\VerifyCommand[lwarp][keyfloat]{\KFLT@onefigureimage}{C14A907612A43563404BEEC3F9FB10A8}
+\VerifyCommand[lwarp][keyfloat]{\KFLT@onefigureimage}{803E82896F8D49700946B1A6CB132A55}
\RenewDocumentCommand{\KFLT@onefigureimage}{m}
{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-keystroke.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-keystroke.sty
index 16b81228f4c..72eec7d79d2 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-keystroke.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-keystroke.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `keystroke')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{keystroke}[2010/04/23]
\newcommand*{\LWR@HTML@keystroke}[1]{
\InlineClass{keystroke}{#1}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts-otf.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts-otf.sty
index ab875d0669d..092e938bb3f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts-otf.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts-otf.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `kpfonts-otf')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{kpfonts-otf}[2020/06/20]
\LWR@infoprocessingmathjax{kpfonts-otf}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts.sty
index 0b48ce3c50e..7f40ffc0279 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `kpfonts')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{kpfonts}[2010/08/20]
\LWR@infoprocessingmathjax{kpfonts}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-layaureo.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-layaureo.sty
index 5cb2789747b..39f3c6c1a53 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-layaureo.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-layaureo.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `layaureo')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{layaureo}[2004/09/16]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-layout.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-layout.sty
index 0261958eb64..7c016ac8960 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-layout.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-layout.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `layout')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{layout}[2014/10/28]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-layouts.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-layouts.sty
index 3128ef1903f..4ce5d3384c4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-layouts.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-layouts.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `layouts')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{layouts}[2009/09/02]
\newif\ifoddpagelayout
\oddpagelayouttrue
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-leading.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-leading.sty
index f414ac75225..dafaf2339ec 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-leading.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-leading.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `leading')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{leading}[2008/12/11]
\newcommand\leading[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-leftidx.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-leftidx.sty
index 154ce2ac6ec..445ed0de79b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-leftidx.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-leftidx.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `leftidx')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{leftidx}[2003/09/24]
\begin{warpMathJax}
\CustomizeMathJax{\newcommand{\leftidx}[3]{{\vphantom{#2}}#1#2#3}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-letterspace.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-letterspace.sty
index 73bd1926030..7a3c700f07d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-letterspace.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-letterspace.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `letterspace')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-lettrine.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-lettrine.sty
index 6e9bcadc168..4f9a5618e16 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-lettrine.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-lettrine.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `lettrine')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{lettrine}[2018-08-28]
\DeclareDocumentCommand{\lettrine}{o m m}{%
\InlineClass{lettrine}{#2}\InlineClass{lettrinetext}{#3} % extra space
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-libertinust1math.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-libertinust1math.sty
index 0962afd03bd..78d87bcd779 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-libertinust1math.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-libertinust1math.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `libertinust1math')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{libertinust1math}[2020/06/10]
\LWR@infoprocessingmathjax{libertinust1math}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-lineno.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-lineno.sty
index 7f5808de559..f1a98381163 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-lineno.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-lineno.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `lineno')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{lineno}[2005/11/02]
\newcommand*\resetlinenumber[1][\@ne]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-lips.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-lips.sty
index 8ce737ac908..b4f9e1b53b6 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-lips.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-lips.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `lips')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-lipsum.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-lipsum.sty
index 6b30d400155..3d00e045a90 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-lipsum.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-lipsum.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `lipsum')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,11 +15,14 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
-\LWR@ProvidesPackagePass{lipsum}[2021-03-03]
-\SetLipsumParListItemEnd{%
- \LWR@closeparagraph%
- \leavevmode\LWR@orignewline%
-}
+%%
+\LWR@ProvidesPackagePass{lipsum}[2021-09-20]
+\ExplSyntaxOn
+\xapptocmd{\__lipsum_do:nnnn}
+ {\warpHTMLonly{\LWR@closeparagraph\leavevmode\LWR@orignewline}}
+ {}
+ {\LWR@patcherror{lipsum}{lipsum_do:nnnn}}
+\ExplSyntaxOff
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty
index d1be2875bbe..59121db791c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `listings')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,9 +15,10 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
-\LWR@ProvidesPackagePass{listings}[2023/02/27]
+\LWR@ProvidesPackagePass{listings}[2024/09/23]
\lst@column@flexible
\let\LWR@origlst@Init\lst@Init
@@ -149,7 +150,7 @@
}
{}
{\LWR@patcherror{listings}{lst@DeInit}}
-\VerifyCommand[lwarp][listings]{\lst@MakeCaption}{58505F418EA5E42B63D92AD0ED0C433C}
+\VerifyCommand[lwarp][listings]{\lst@MakeCaption}{2B8D898FA33039FBAB7D1772D544153D}
\def\lst@MakeCaption#1{%
\LWR@traceinfo{lst@MakeCaption at #1}%
@@ -174,7 +175,7 @@
\fi
\else
\LWR@traceinfo{lst@MakeCaption: addcontents lst@@caption: -\lst@@caption-}%
- \addcontentsline{lol}{lstlisting}%
+ \addcontentsline{\ext@lstlisting}{lstlisting}%
{\protect\numberline{\thelstlisting}%
{\protect\ignorespaces \LWR@isolate{\lst@@caption} \protect\relax}}%
\fi
@@ -195,13 +196,13 @@
\end{BlockClass}% lwarp
\fi%
\LWR@traceinfo{lst@MakeCaption: About to assign label: !\lst@label!}%
- \ifx\lst@label\@empty\else%
+ \ifx\lst@label\@empty\else% lwarp
\leavevmode% gets rid of bad space factor error
-\GetTitleStringExpand{\lst@caption}%
-\edef\LWR@lntemp{\GetTitleStringResult}%
-\edef\@currentlabelname{\detokenize\expandafter{\LWR@lntemp}}%
-\label{\lst@label}\fi%
-\LWR@traceinfo{lst@MakeCaption: Finished assigning the label.}%
+\GetTitleStringExpand{\lst@caption}% lwarp
+\edef\LWR@lntemp{\GetTitleStringResult}% lwarp
+\edef\@currentlabelname{\detokenize\expandafter{\LWR@lntemp}}% lwarp
+\label{\lst@label}\fi% lwarp
+\LWR@traceinfo{lst@MakeCaption: Finished assigning the label.}% lwarp
\endgroup}{}%
\fi
\LWR@traceinfo{lst@MakeCaption: end of making a listings display caption}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-listliketab.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-listliketab.sty
index df03554c86f..41f203dc87f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-listliketab.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-listliketab.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `listliketab')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{listliketab}[2005/01/09]
\newcommand*{\storestyleof}[1]{}
\newcommand*{\storeliststyle}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-lltjext.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-lltjext.sty
index 1795dece5a6..9a9fdb5b3b4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-lltjext.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-lltjext.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `lltjext')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{lltjext}[2018/10/07]
\protected\def\yoko{%
\directlua{luatexja.direction.set_list_direction(4, 'yoko')}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-lltjp-siunitx.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-lltjp-siunitx.sty
index 9828adf1355..f4e5f09e34a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-lltjp-siunitx.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-lltjp-siunitx.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `lltjp-siunitx')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{lltjp-siunitx}% 2022-12-14, no date assigned in file
\ExplSyntaxOn
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-lltjp-tascmac.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-lltjp-tascmac.sty
index 71c1d5fa107..820e018289f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-lltjp-tascmac.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-lltjp-tascmac.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `lltjp-tascmac')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{lltjp-tascmac}[2020/12/24]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-longtable.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-longtable.sty
index 5f3f529c53a..b7c99e5116a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-longtable.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-longtable.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `longtable')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-lpic.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-lpic.sty
index 304fbe3e610..100de0ace65 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-lpic.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-lpic.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `lpic')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,9 +15,10 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{lpic}[2010/12/23]
\BeforeBeginEnvironment{lpic}{%
- \begin{lateximage}[-lpic-~\PackageDiagramAltText]%
+ \begin{lateximage}[-lpic-~\PackageDiagramAltText]?%
}
\AfterEndEnvironment{lpic}{\end{lateximage}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-lscape.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-lscape.sty
index b59aa6c2f35..f2ef39b157d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-lscape.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-lscape.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `lscape')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{lscape}[2000/10/22]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ltablex.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ltablex.sty
index e70e683245e..e827c73fc90 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ltablex.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ltablex.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ltablex')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\RequirePackage{longtable}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ltcaption.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ltcaption.sty
index 1e36074a378..9f19a617db3 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ltcaption.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ltcaption.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ltcaption')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ltxgrid.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ltxgrid.sty
index 30c789895dc..56b311bc495 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ltxgrid.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ltxgrid.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ltxgrid')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{ltxgrid}[2010/07/25]
\newcommand*{\onecolumngrid}{}
\newcommand*{\twocolumngrid}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ltxtable.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ltxtable.sty
index 8e0c7148427..b2ffa680a1f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ltxtable.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ltxtable.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ltxtable')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\RequirePackage{tabularx,longtable}
\LWR@ProvidesPackageDrop{ltxtable}[1995/12/11]
\newcommand*{\LTXtable}[2]{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-lua-check-hyphen.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-lua-check-hyphen.sty
index e901aad015b..ae023d36a4c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-lua-check-hyphen.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-lua-check-hyphen.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `lua-check-hyphen')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{lua-check-hyphen}[2018/04/19]
\newcommand*{\LuaCheckHyphen}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-lua-visual-debug.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-lua-visual-debug.sty
index 7d26258806b..a583a56b7b2 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-lua-visual-debug.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-lua-visual-debug.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `lua-visual-debug')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{lua-visual-debug}[2016/05/30]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-luacolor.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-luacolor.sty
index 32ec3769875..346ce0afecf 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-luacolor.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-luacolor.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `luacolor')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{luacolor}[2016/05/16]
\newcommand{\luacolorProcessBox}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-luamplib.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-luamplib.sty
index 51fe5b5aef7..0c43240e2f9 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-luamplib.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-luamplib.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `luamplib')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,9 +15,10 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{luamplib}[2020/02/24]
\BeforeBeginEnvironment{mplibcode}{%
- \begin{lateximage}[-mplibcode-~\PackageDiagramAltText]%
+ \begin{lateximage}[-mplibcode-~\PackageDiagramAltText]?%
}
\AfterEndEnvironment{mplibcode}{\end{lateximage}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-luatexko.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-luatexko.sty
index b72d67f75bb..d5a1f28dee2 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-luatexko.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-luatexko.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `luatexko')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{luatexko}[2021/07/10]
\protected\def\typesetvertical{}
\protected\def\typesethorizontal{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-luatodonotes.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-luatodonotes.sty
index 9bcdf868e75..b4fc7ba54ad 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-luatodonotes.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-luatodonotes.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `luatodonotes')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{luatodonotes}[2017/09/30]
\@todonotes@additionalMarginEnabledfalse
\if@todonotes@disabled
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-luavlna.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-luavlna.sty
index d79fed4efd8..b0b0c7d67c8 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-luavlna.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-luavlna.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `luavlna')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{luavlna}[2019/10/30]
\preventsingleoff
\LetLtxMacro\preventsingleon\preventsingleoff
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-lyluatex.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-lyluatex.sty
index ec2a5442000..056a6920cfb 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-lyluatex.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-lyluatex.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `lyluatex')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@origRequirePackage{luacode}
\LWR@ProvidesPackagePass{lyluatex}[2023/04/18]
@@ -28,7 +29,7 @@
\LWR@print@normalsize%
\renewcommand{\includegraphics}[2][]{%
\InlineClass{lyluatex}{%
- \begin{lateximage}[\LyluatexImageAltText]%
+ \begin{lateximage}[\LyluatexImageAltText]?%
\LWR@addbaselinemarker%
\LWR@origincludegraphics{##2}%
\end{lateximage}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-magaz.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-magaz.sty
index 4e8838340ba..9e9bc31fde1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-magaz.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-magaz.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `magaz')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{magaz}[2011/11/24]
\newcommand\FirstLine[1]{%
\begingroup%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-makeidx.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-makeidx.sty
index aca8d1f235f..19dc1cf1f9d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-makeidx.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-makeidx.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `makeidx')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{makeidx}[2014/09/29]
\preto\printindex{%
\LWR@maybe@orignewpage%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-manyfoot.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-manyfoot.sty
index 688d57ecf50..53a3a3a4620 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-manyfoot.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-manyfoot.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `manyfoot')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{manyfoot}[2005/09/11]
\RequirePackage{nccfoots}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-marginal.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-marginal.sty
index 7e80b797b4b..b2cfe7e3197 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-marginal.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-marginal.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `marginal')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{marginal}
\newcommand*{\showlostmarginals}{}
\newcommand*{\enlargefreelist}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-marginfit.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-marginfit.sty
index 924ca258735..c41626bb3f2 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-marginfit.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-marginfit.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `marginfit')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{marginfit}[2018/06/08]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-marginfix.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-marginfix.sty
index f2f5804a5bb..29fefbc405b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-marginfix.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-marginfix.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `marginfix')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{marginfix}[2013/09/08]
\newcommand*{\marginskip}[1]{}
\newcommand*{\clearmargin}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-marginnote.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-marginnote.sty
index f21a2117491..2bee5e46fc4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-marginnote.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-marginnote.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `marginnote')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{marginnote}[2018/08/09]
\NewDocumentCommand{\marginnote}{+o +m o}{\marginpar{#2}}
\newcommand*{\marginnoteleftadjust}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-marvosym.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-marvosym.sty
index 184a5ac359a..82181be3f0d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-marvosym.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-marvosym.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `marvosym')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,9 +15,10 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{marvosym}[2011/07/20]
\renewcommand{\mvchr}[1]{%
- \begin{lateximage}*[symbol #1][marvosym #1]%
+ \begin{lateximage}*[symbol #1]?[marvosym #1]%
\mvs\char#1%
\end{lateximage}%
}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathalpha.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathalpha.sty
index 902413dd82e..4a5ea1dd809 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathalpha.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathalpha.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mathalpha')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{mathalpha}[2021/11/18]
\begin{warpMathJax}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathastext.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathastext.sty
index 41c5c653e92..98abf6a96c2 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathastext.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathastext.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mathastext')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{mathastext}[2019/11/16]
\LWR@origRequirePackage{lwarp-common-mathjax-letters}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathcomp.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathcomp.sty
index 83f83c30651..ec8507d568b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathcomp.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathcomp.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mathcomp')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{mathcomp}[2001/01/07]
\begin{warpMathJax}
\CustomizeMathJax{\newcommand{\tcohm}{\mathrm{\Omega}}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdesign.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdesign.sty
index ac1bfe73877..2b113271094 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdesign.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdesign.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mathdesign')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{mathdesign}[2013/08/29]
\LWR@origRequirePackage{lwarp-common-mathjax-letters}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdots.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdots.sty
index 90a9fd87f88..68685c081fc 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdots.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdots.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mathdots')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{mathdots}[2014/06/11]
\begin{warpMathJax}
\CustomizeMathJax{\newcommand{\iddots}{\mathinner{\unicode{x22F0}}}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathfixs.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathfixs.sty
index a46995ef6f3..f271814ef25 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathfixs.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathfixs.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mathfixs')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{mathfixs}[2018/12/30]
\begin{warpMathJax}
\CustomizeMathJax{\newcommand{\rfrac}[2]{\tfrac{#1}{#2}}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathpazo.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathpazo.sty
index 8ed4e44b83b..e03e2a810be 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathpazo.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathpazo.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mathpazo')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{mathpazo}[2020/03/25]
\LWR@origRequirePackage{lwarp-common-mathjax-letters}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathptmx.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathptmx.sty
index aff33efdf0b..578325f3127 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathptmx.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathptmx.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mathptmx')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{mathptmx}[2020/03/25]
\LWR@origRequirePackage{lwarp-common-mathjax-letters}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathspec.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathspec.sty
index 1ab1c13eec1..5de543ec4d2 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathspec.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathspec.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mathspec')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{mathspec}[2016/12/22]
\LWR@origRequirePackage{lwarp-common-mathjax-letters}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathtools.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathtools.sty
index e3ad1274155..6e251a07d0e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mathtools.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mathtools.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mathtools')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,7 +15,8 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
-\LWR@ProvidesPackagePass{mathtools}[2018/01/08]
+%%
+\LWR@ProvidesPackagePass{mathtools}[2024/10/04]
\RequirePackage{graphicx}
\MHInternalSyntaxOn
\renewcommand*\MT_showonlyrefs_true:{%
@@ -39,6 +40,20 @@
\LWR@infoprocessingmathjax{mathtools}
+\CustomizeMathJax{\newcommand{\vcentcolon}{\mathrel{\unicode{x2236}}}}
+
+\CustomizeMathJax{\newcommand{\approxcolon}{\approx\vcentcolon}}
+\CustomizeMathJax{\newcommand{\Approxcolon}{\approx\dblcolon}}
+
+\CustomizeMathJax{\newcommand{\simcolon}{\sim\vcentcolon}}
+\CustomizeMathJax{\newcommand{\Simcolon}{\sim\dblcolon}}
+
+\CustomizeMathJax{\newcommand{\dashcolon}{\mathrel{-}\vcentcolon}}
+\CustomizeMathJax{\newcommand{\Dashcolon}{\mathrel{-}\dblcolon}}
+
+\CustomizeMathJax{\newcommand{\colondash}{\vcentcolon\mathrel{-}}}
+\CustomizeMathJax{\newcommand{\Colondash}{\dblcolon\mathrel{-}}}
+
\CustomizeMathJax{\newenvironment{crampedsubarray}[1]{}{}}
\CustomizeMathJax{\newcommand{\smashoperator}[2][]{#2\limits}}
@@ -48,6 +63,11 @@
\CustomizeMathJax{\newcommand{\LaTeXunderbrace}[1]{\underbrace{#1}}}
\CustomizeMathJax{\newcommand{\LaTeXoverbrace}[1]{\overbrace{#1}}}
+\CustomizeMathJax{\Newextarrow\xLongleftarrow{10,10}{0x21D0}}
+\CustomizeMathJax{\Newextarrow\xLongrightarrow{10,10}{0x21D2}}
+\CustomizeMathJax{\let\xlongleftarrow\xleftarrow}
+\CustomizeMathJax{\let\xlongrightarrow\xrightarrow}
+
\CustomizeMathJax{\newcommand{\LWRmultlined}[1][]{\begin{multline*}}}
\CustomizeMathJax{\newenvironment{multlined}[1][]{\LWRmultlined}{\end{multline*}}}
@@ -154,8 +174,6 @@
\@onlypreamble\DeclareParedDelimiterXPP
\@onlypreamble\DeclareParedDelimiterX
-\CustomizeMathJax{\newcommand{\vcentcolon}{\mathrel{\unicode{x2236}}}}
-
\LetLtxMacro\LWR@mathtools@orig@newgathered\newgathered
\renewcommand{\newgathered}[4]{%
\LWR@mathtools@orig@newgathered{#1}{#2}{#3}{#4}%
@@ -167,6 +185,18 @@
}
\@onlypreamble\newgathered
+\LetLtxMacro\LWR@mathtools@MakeAboxedCommand\MakeAboxedCommand
+\renewcommand{\MakeAboxedCommand}[2]{%
+ \LWR@mathtools@MakeAboxedCommand{#1}{#2}%
+ \appto\LWR@customizedMathJax{\LWRbackslash(}
+ \appto\LWR@customizedMathJax{%
+ \LWRbackslash{}let%
+ \LWRbackslash\macrotocsname{#1}%
+ \LWRbackslash{}Aboxed%
+ }%
+ \appto\LWR@customizedMathJax{\LWRbackslash)\par}%
+}
+
\end{warpMathJax}
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mattens.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mattens.sty
index a323b0b1ed5..b5ef6a67915 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mattens.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mattens.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mattens')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{mattens}[2010/03/26]
\begin{warpMathJax}
\CustomizeMathJax{\newcommand{\LWRmattensnull}{}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-maybemath.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-maybemath.sty
index 225ca84111e..44948aa77f1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-maybemath.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-maybemath.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `maybemath')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{maybemath}[2005/2/22]
\begin{warpMathJax}
\CustomizeMathJax{\newcommand{\mayberm}[1]{{#1}}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mcaption.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mcaption.sty
index bcb5bb667ae..d19f1a216ca 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mcaption.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mcaption.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mcaption')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{mcaption}[2009/03/13]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty
index 433ecf29a85..7cd82843dee 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mdframed')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\RequirePackage{xcolor}% for \convertcolorspec
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mdwmath.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mdwmath.sty
index 08e89fd5af8..342fc3d6c3b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mdwmath.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mdwmath.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mdwmath')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{mdwmath}[1996/04/11]
\begin{warpMathJax}
\CustomizeMathJax{\let\LWRmdwmathsqrt\sqrt}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-media9.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-media9.sty
index 9ad463338d6..0cb7df98b0b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-media9.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-media9.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `media9')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{media9}[2019/02/21]
\LWR@origRequirePackage{lwarp-common-multimedia}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-memhfixc.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-memhfixc.sty
index 7261d6a3bce..9b7a6f75e42 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-memhfixc.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-memhfixc.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `memhfixc')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{memhfixc}[2013/05/30]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-menukeys.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-menukeys.sty
index 35d1feacc59..967762a276b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-menukeys.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-menukeys.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `menukeys')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,13 +15,14 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{menukeys}[2020/12/19]
\VerifyCommand[lwarp][menukeys]{\tw@define@menu@macro@}{A3C988E47073504556D744EF08443B1D}
\xpatchcmd{\tw@define@menu@macro@}
{\@nameuse{tw@style@#4@pre}}
{%
- \begin{lateximage}*[\detokenize{##2}]%
+ \begin{lateximage}*[\detokenize{##2}]?%
\@nameuse{tw@style@#4@pre}%
}
{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-metalogo.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-metalogo.sty
index c9174a77604..987d6678611 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-metalogo.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-metalogo.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `metalogo')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{metalogo}[2010/05/29]
\newcommand*{\LWR@HTML@setlogokern}[2]{}
\newcommand*{\LWR@HTML@setlogodrop}[2][XeTeX]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-metalogox.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-metalogox.sty
index 40eaedc47cd..59573763f84 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-metalogox.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-metalogox.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `metalogox')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{metalogox}[2019/01/20]
\AtBeginDocument{
\let\LWR@metalogox@currentformatting\LWR@formatting
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mhchem.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mhchem.sty
index b8f8790c921..3e354e8df5f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mhchem.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mhchem.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mhchem')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,25 +15,28 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
-\LWR@ProvidesPackagePass{mhchem}[2018/06/22]
+\LWR@ProvidesPackagePass{mhchem}[2024/01/29]
\LetLtxMacro\LWR@mhchem@origce\ce
\newcommand{\LWR@mhchem@HTML@ce}[1]{%
\LWR@findcurrenttextcolor% sets \LWR@tempcolor
+ \edef\LWR@mhchemalt{\LWR@HTMLsanitizedetokenized{\detokenize{#1}}}%
\ifbool{LWR@xfakebold}%
{\def\LWR@tempone{Y}}%
{\def\LWR@tempone{N}}%
\begin{lateximage}%
- *%
- [%
+ *% hash
+ [% alt
\textbackslash{}%
ce%
- \{\LWR@HTMLsanitizedetokenized{\detokenize{#1}}\}%
+ \{\LWR@mhchemalt\}%
]%
- *%
- [%
+ *% no open close tags in alt
+ ?% do not detokenize alt
+ [% add'l alt
FM\LWR@f@family%
SR\LWR@f@series%
SH\LWR@f@shape%
@@ -69,14 +72,15 @@
{\def\LWR@tempone{Y}}%
{\def\LWR@tempone{N}}%
\begin{lateximage}%
- *%
- [%
+ *% hash
+ [% alt
\textbackslash{}%
cesplit%
\{\LWR@HTMLsanitizedetokenized{\detokenize{#2}}\}%
]%
- *%
- [%
+ *% no open/close tags in alt
+ ?% no detokenize alt
+ [% add'l alt
FM\LWR@f@family%
SR\LWR@f@series%
SH\LWR@f@shape%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-microtype.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-microtype.sty
index 275dd614ec6..8500e14c5ed 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-microtype.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-microtype.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `microtype')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-midfloat.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-midfloat.sty
index 37504944d1f..b2a6ecba7b9 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-midfloat.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-midfloat.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `midfloat')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{midfloat}[2012/05/29]
\newenvironment{strip}[1][]{}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-midpage.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-midpage.sty
index 1d70d575e0f..32bd9b9c9a6 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-midpage.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-midpage.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `midpage')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{midpage}[2009/09/03]
\newenvironment{midpage}
{\begin{BlockClass}[%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-minibox.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-minibox.sty
index e6891385da9..5ccca20fbf5 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-minibox.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-minibox.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `minibox')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{minibox}[2013/06/21]
\ExplSyntaxOn
\newcommand\LWR@HTML@minibox[2][]{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-minitoc.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-minitoc.sty
index 945b543c03a..bcd6b588887 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-minitoc.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-minitoc.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `minitoc')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{minitoc}[2018/07/12]
\usepackage{mtcoff}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-minted.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-minted.sty
index 1006f44b2fd..ba456d65e4e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-minted.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-minted.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `minted')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,102 +15,143 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
-\LWR@ProvidesPackagePass{minted}[2023/09/12]
-\renewcommand{\setminted}[2][]{%
- \ifthenelse{\equal{#1}{}}%
- {\setkeys{minted@opt@g}{%
- #2,
- mathescape=false,breaklines,texcomments=false,highlightlines={}% lwarp
- }}%
- {\minted@configlang{#1}%
- \setkeys{minted@opt@lang}{%
- #2,
- mathescape=false,breaklines,texcomments=false,highlightlines={}% lwarp
- }}}
-
-\renewcommand{\setmintedinline}[2][]{%
- \ifthenelse{\equal{#1}{}}%
- {\setkeys{minted@opt@g@i}{%
- #2,
- mathescape=false,breaklines,texcomments=false,highlightlines={}% lwarp
- }}%
- {\minted@configlang{#1}%
- \setkeys{minted@opt@lang@i}{%
- #2,
- mathescape=false,breaklines,texcomments=false,highlightlines={}% lwarp
- }}}
-\xpatchcmd{\RobustMintInlineProcess}
- {\setkeys{minted@opt@cmd}{#1}}
+%%
+\LWR@ProvidesPackagePass{minted}[2024/11/17]
+\newcommand*{\LWR@minted@forcekeys}{%
+ \pgfkeys{/minted/cmd/.cd,mathescape=false}%
+ \pgfkeys{/minted/cmd/.cd,texcomments=false}%
+ \pgfkeys{/minted/cmd/.cd,highlightlines=false}%
+ \pgfkeys{/minted/cmd/.cd,breaklines}%
+ \boolfalse{LWR@HTMLsanitize@tmpb@enable}% lwarp
+}
+\VerifyCommand[lwarp][minted]{\minted@highlight@i}{B3E47D0B3B8933CCB16FAB0735F408A8}
+
+\xpretocmd{\minted@highlight@i}
+ {\fvset{breaklines}}
+ {}
+ {\LWR@patcherror{minted}{minted@highlight@i}}
+\VerifyCommand[lwarp][minted]{\RobustMintInlineProcess@verbatim}
+ {A6C5557F26D2A7E2C8DC542A2ABD892B}
+
+\xpatchcmd{\RobustMintInlineProcess@verbatim}
+ {\edef\minted@lexer{#2}}
+ {%
+ \LWR@minted@forcekeys% lwarp
+ \edef\minted@lexer{#2}%
+ }
+ {}
+ {\LWR@patcherror{minted}{RobustMintInlineProcess@verbatim}}
+
+\VerifyCommand[lwarp][minted]{\RobustMintInlineProcess@highlight}
+ {6374066A5D0D1CF9636E667AAFAF81AB}
+
+\xpatchcmd{\RobustMintInlineProcess@highlight}
+ {\edef\minted@lexer{#2}}
{%
- \setkeys{minted@opt@cmd}{%
- #1,%
- mathescape=false,breaklines,texcomments=false,highlightlines={}%
- }%
- \ifbool{minted@draft}%
- {\booltrue{LWR@HTMLsanitize@tmpb@enable}}%
- {\boolfalse{LWR@HTMLsanitize@tmpb@enable}}%
+ \LWR@minted@forcekeys% lwarp
+ \edef\minted@lexer{#2}%
}
{}
- {\LWR@patcherror{minted}{minted}}
+ {\LWR@patcherror{minted}{RobustMintInlineProcess@highlight}}
+
+\VerifyCommand[lwarp][minted]{\RobustMintProcess@verbatim}
+ {C1C8E870B5E8E3E8E572CA50ADF69953}
-\xpatchcmd{\RobustMintProcess}
- {\setkeys{minted@opt@cmd}{#1}}
+\xpatchcmd{\RobustMintProcess@verbatim}
+ {\edef\minted@lexer{#2}}
{%
- \setkeys{minted@opt@cmd}{%
- #1,%
- mathescape=false,breaklines,texcomments=false,highlightlines={}%
- }%
- \ifbool{minted@draft}%
- {\booltrue{LWR@HTMLsanitize@tmpb@enable}}%
- {\boolfalse{LWR@HTMLsanitize@tmpb@enable}}%
+ \LWR@minted@forcekeys% lwarp
+ \edef\minted@lexer{#2}%
}
{}
- {\LWR@patcherror{minted}{minted}}
+ {\LWR@patcherror{minted}{RobustMintProcess@verbatim}}
+
+\VerifyCommand[lwarp][minted]{\RobustMintProcess@highlight}
+ {D426304D27561EE1139B30E897A7C2CA}
-\xpatchcmd{\minted}
- {\setkeys{minted@opt@cmd}{#1}}
+\xpatchcmd{\RobustMintProcess@highlight}
+ {\edef\minted@lexer{#2}}
{%
- \setkeys{minted@opt@cmd}{%
- #1,%
- mathescape=false,breaklines,texcomments=false,highlightlines={}%
- }%
- \ifbool{minted@draft}%
- {\booltrue{LWR@HTMLsanitize@tmpb@enable}}%
- {\boolfalse{LWR@HTMLsanitize@tmpb@enable}}%
+ \LWR@minted@forcekeys% lwarp
+ \edef\minted@lexer{#2}%
}
{}
- {\LWR@patcherror{minted}{minted}}
-
-\xpatchcmd{\inputminted}
- {\setkeys{minted@opt@cmd}{#1}}
- {\setkeys{minted@opt@cmd}{%
- #1,%
- mathescape=false,breaklines,texcomments=false,highlightlines={}%
- }%
- \ifbool{minted@draft}%
- {\booltrue{LWR@HTMLsanitize@tmpb@enable}}%
- {\boolfalse{LWR@HTMLsanitize@tmpb@enable}}%
+ {\LWR@patcherror{minted}{RobustMintProcess@highlight}}
+
+\VerifyCommand[lwarp][minted]{\MintedBegin@verbatim}
+ {B16E0A3A51DBF9F39609F2135572D7C2}
+
+\xpatchcmd{\MintedBegin@verbatim}
+ {\edef\minted@lexer{#2}}
+ {%
+ \LWR@minted@forcekeys% lwarp
+ \edef\minted@lexer{#2}%
}
{}
- {\LWR@patcherror{minted}{inputminted}}
+ {\LWR@patcherror{minted}{MintedBegin@verbatim}}
-\renewenvironment{minted@snugshade*}[1]%
-{%
- \colorlet{shadecolor}{#1}%
- \begin{snugshade*}%
-}
-{%
- \end{snugshade*}%
-}
+\VerifyCommand[lwarp][minted]{\MintedBegin@highlight}
+ {A8C3A60BE3C6AF3A401071A9C5FE8B39}
+
+\xpatchcmd{\MintedBegin@highlight}
+ {\edef\minted@lexer{#2}}
+ {%
+ \LWR@minted@forcekeys% lwarp
+ \edef\minted@lexer{#2}%
+ }
+ {}
+ {\LWR@patcherror{minted}{MintedBegin@highlight}}
+
+\ifbool{minted@placeholder}%
+ {\let\MintedBegin\MintedBegin@placeholder
+ \let\MintedEnd\MintedEnd@placeholder}%
+ {\ifbool{minted@verbatim}%
+ {\let\MintedBegin\MintedBegin@verbatim
+ \let\MintedEnd\MintedEnd@verbatim}%
+ {\let\MintedBegin\MintedBegin@highlight
+ \let\MintedEnd\MintedEnd@highlight}}
+
+\VerifyCommand[lwarp][minted]{\RobustInputMintedProcess@verbatim}
+ {8B475FE3FD41C8026A8447C5C984AE9F}
+
+\xpatchcmd{\RobustInputMintedProcess@verbatim}
+ {\edef\minted@lexer{#2}}
+ {%
+ \LWR@minted@forcekeys% lwarp
+ \edef\minted@lexer{#2}%
+ }
+ {}
+ {\LWR@patcherror{minted}{RobustInputMintedProcess@verbatim}}
+
+\VerifyCommand[lwarp][minted]{\RobustInputMintedProcess@highlight}
+ {A3D22F5B26557361E26D55FD0E8701CD}
+
+\xpatchcmd{\RobustInputMintedProcess@highlight}
+ {\edef\minted@lexer{#2}}
+ {%
+ \LWR@minted@forcekeys% lwarp
+ \edef\minted@lexer{#2}%
+ }
+ {}
+ {\LWR@patcherror{minted}{RobustInputMintedProcess@highlight}}
+
+\xpatchcmd{\minted@highlight@i}
+ {\input{\minted@highlightfilepath}}
+ {%
+ \LWR@minted@overrides% lwarp
+ \input{\minted@highlightfilepath}%
+ }
+ {}
+ {\LWR@patcherror{minted}{minted@highlight@i}}
-\xpatchcmd{\minted@input}
- {\input{#1}}
+\xpatchcmd{\minted@highlight@create}
+ {\input{\minted@highlightfilepath}}
{%
- \LWR@minted@overrides%
- \input{#1}%
+ \LWR@minted@overrides% lwarp
+ \input{\minted@highlightfilepath}%
}
{}
- {\LWR@patcherror{minted}{minted@input}}
+ {\LWR@patcherror{minted}{minted@highlight@create}}
\newcommand*{\LWR@minted@overrides}{
\def\PYGZam{\char`\&amp;}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mismath.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mismath.sty
index a8bc81af9ce..389c4e6d701 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mismath.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mismath.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mismath')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,7 +15,8 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
-\LWR@ProvidesPackagePass{mismath}[2023/02/24]
+%%
+\LWR@ProvidesPackagePass{mismath}[2024/06/16]
\ifbool{mathjax}{
\RenewEnviron{mathcols}{%
\preto\BODY{\begin{aligned}\displaystyle}
@@ -41,6 +42,8 @@
}
\begin{warpMathJax}
+\CustomizeMathJax{\require{upgreek}}% for \Updelta
+
\CustomizeMathJax{\newcommand{\mathup}[1]{\mathrm{#1}}}
\CustomizeMathJax{\newcommand{\e}{\mathrm{e}}}
\CustomizeMathJax{\newcommand{\i}{\mathrm{i}}}
@@ -59,6 +62,10 @@
}
\CustomizeMathJax{\newcommand{\di}{\mathop{}\!\mathrm{d}}}
+\CustomizeMathJax{\newcommand{\upDelta}{\Updelta}}
+\CustomizeMathJax{\newcommand{\opDelta}{\Updelta}}
+\CustomizeMathJax{\newcommand{\opdelta}{\updelta}}
+
\CustomizeMathJax{\newcommand{\P}{\operatorname{\probastyle{P}}}}
\CustomizeMathJax{\newcommand{\E}{\operatorname{\probastyle{E}}}}
\CustomizeMathJax{\newcommand{\V}{\operatorname{\probastyle{V}}}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mleftright.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mleftright.sty
index 643b72d50f6..265e7421301 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mleftright.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mleftright.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mleftright')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{mleftright}[2019/12/03]
\begin{warpMathJax}
\CustomizeMathJax{\newcommand{\mleft}{\left}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-morefloats.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-morefloats.sty
index 713676072a3..93034835156 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-morefloats.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-morefloats.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `morefloats')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{morefloats}[2015/07/22]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-moreverb.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-moreverb.sty
index 84e429409f8..b1654679130 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-moreverb.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-moreverb.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `moreverb')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{moreverb}[2008/06/03]
\BeforeBeginEnvironment{verbatimtab}{%
\LWR@forcenewpage
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-movie15.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-movie15.sty
index 8c2ca77414b..9b0144db5b7 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-movie15.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-movie15.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `movie15')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{movie15}[2012/05/16]
\LWR@origRequirePackage{lwarp-common-multimedia}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mparhack.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mparhack.sty
index 316ebc35df2..8c73763811e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mparhack.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mparhack.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mparhack')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{mparhack}[2005/04/17]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-multibib.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-multibib.sty
index 17a11933d82..9de74a0542d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-multibib.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-multibib.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `multibib')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{multibib}[2008/12/10]
\VerifyCommand[lwarp][multibib]{\newcites}{77893319F9935670F2FF2E524075CB71}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-multicap.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-multicap.sty
index bb6442d5dd7..6279dfac677 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-multicap.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-multicap.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `multicap')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{multicap}[2002/05/04]
\newcommand*{\mfcaption}{\captionof{figure}}
\newcommand*{\mtcaption}{\captionof{table}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-multicol.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-multicol.sty
index 2f60078791b..90a6048caab 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-multicol.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-multicol.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `multicol')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-multicolrule.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-multicolrule.sty
index 1bedd79716f..6cb8e8ac4e6 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-multicolrule.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-multicolrule.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `multicolrule')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\RequirePackage{multicol}
\LWR@ProvidesPackageDrop{multicolrule}[2019/01/01]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-multimedia.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-multimedia.sty
index ef78932f9ef..e981976d375 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-multimedia.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-multimedia.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `multimedia')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{multimedia}[2012/05/02]
\LWR@origRequirePackage{lwarp-common-multimedia}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-multiobjective.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-multiobjective.sty
index 8debd739520..b5d6977a2f6 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-multiobjective.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-multiobjective.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `multiobjective')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{multiobjective}[2008/08/19]
\begin{warpMathJax}
\CustomizeMathJax{\newcommand{\dom}{\prec}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty
index bd87c102b5b..eaaba43e3d7 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `multirow')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LetLtxMacro\multirow\relax
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-multitoc.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-multitoc.sty
index 6e69b601204..c672e46a091 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-multitoc.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-multitoc.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `multitoc')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{multitoc}[1999/06/08]
\newcommand{\multicolumntoc}{2}
\newcommand{\multicolumnlot}{2}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-musicography.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-musicography.sty
index a124053dc8e..3359ea5d5b0 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-musicography.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-musicography.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `musicography')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,7 +15,8 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
-\LWR@ProvidesPackagePass{musicography}[2019/05/28]
+%%
+\LWR@ProvidesPackagePass{musicography}[2023/09/08]
\NewDocumentCommand{\LWR@HTML@musSymbol}{ O{\musFont} m m m m }{%
\begin{lateximage}%
{#1\kern#2\raisebox{#3}{#5}\kern#4}%
@@ -49,16 +50,16 @@
\LWR@formatted{musDottedNote}
-\NewDocumentCommand{\LWR@HTML@musMeter}{ m m }{%
-\begin{lateximage}*[#1/#2]*[#1#2]%
-\musStack{#1 #2}\kern0.05em%
+\NewDocumentCommand{\LWR@HTML@musMeter}{ O{\musNumFont} m m }{%
+\begin{lateximage}*[#2/#3]*?[#1#2#3]%
+\musStack{#2 #3}\kern0.05em%
\end{lateximage}%
}
\LWR@formatted{musMeter}
\NewDocumentCommand{\LWR@HTML@meterCplus}{ m }{%
-\begin{lateximage}*[C#1]*%
+\begin{lateximage}*[C#1]*?%
\meterC{}\kern-0.7pt#1%
\end{lateximage}%
}
@@ -81,6 +82,46 @@
\LWR@formatted{meterCutC}
+\NewDocumentCommand{\LWR@HTML@meterThree}{}{%
+\begin{lateximage}*[3|]*%
+ {\musNumFont{3}}%
+\end{lateximage}%
+}
+
+\LWR@formatted{meterThree}
+
+\NewDocumentCommand{\LWR@HTML@meterThreeTwo}{}{%
+\begin{lateximage}*[3/2]*%
+ \raisebox{-0.26ex}{\musMeter{3}{2}}%
+\end{lateximage}%
+}
+
+\LWR@formatted{meterThreeTwo}
+
+\NewDocumentCommand{\LWR@HTML@meterCutCThree}{}{%
+\begin{lateximage}*[C|3]*%
+ \meterCutCplus{\meterThree}%
+\end{lateximage}%
+}
+
+\LWR@formatted{meterCutCThree}
+
+\NewDocumentCommand{\LWR@HTML@meterCutCThreeTwo}{}{%
+\begin{lateximage}*[C|3/2]*%
+ \meterCutCplus{\meterThreeTwo}%
+\end{lateximage}%
+}
+
+\LWR@formatted{meterCutCThreeTwo}
+
+\NewDocumentCommand{\LWR@HTML@meterCThree}{}{%
+\begin{lateximage}*[C3]*%
+ \meterCplus{\meterThree}%
+\end{lateximage}%
+}
+
+\LWR@formatted{meterCThree}
+
\NewDocumentCommand{\LWR@HTML@meterCThreeTwo}{}{%
\begin{lateximage}*[C3/2]*%
\meterCplus{\musStack{3 2}}%
@@ -89,42 +130,50 @@
\LWR@formatted{meterCThreeTwo}
+\NewDocumentCommand{\LWR@HTML@meterCZ}{}{%
+\begin{lateximage}*[CZ]*%
+ \meterCplus{\meterZsymbol}%
+\end{lateximage}%
+}
+
+\LWR@formatted{meterCZ}
+
\NewDocumentCommand{\LWR@HTML@meterO}{}{\HTMLunicode{25EF}}
\LWR@formatted{meterO}
-\newcommand{\LWR@null@noFig}[1][]{}%
+\NewDocumentCommand{\LWR@HTML@noFig}{ O{5} }{}%
+\newcommand*{\LWR@HTML@musFlat} {\HTMLunicode{266D}}
+\newcommand*{\LWR@HTML@musDoubleFlat} {\HTMLunicode{1D12B}}
+\newcommand*{\LWR@HTML@musSharp} {\HTMLunicode{266F}}
+\newcommand*{\LWR@HTML@musDoubleSharp}{\HTMLunicode{1D12A}}
+\newcommand*{\LWR@HTML@musNatural} {\HTMLunicode{266E}}
-\NewDocumentCommand{\LWR@HTML@musFig}{ m }{%
+\LWR@formatted{noFig}
+\LWR@formatted{musFlat}
+\LWR@formatted{musDoubleFlat}
+\LWR@formatted{musSharp}
+\LWR@formatted{musDoubleSharp}
+\LWR@formatted{musNatural}
+
+\NewDocumentCommand{\LWR@HTML@musFig}{ O{r} m }{%
\begin{lateximage}*[%
{% ALT text for copy/paste
- \LetLtxMacro\noFig\LWR@null@noFig%
- \LetLtxMacro\musSharp\LWR@HTML@musSharp%
- \LetLtxMacro\musDoubleSharp\LWR@HTML@musDoubleSharp%
- \LetLtxMacro\musFlat\LWR@HTML@musFlat%
- \LetLtxMacro\musDoubleFlat\LWR@HTML@musDoubleFlat%
- \LetLtxMacro\musNatural\LWR@HTML@musNatural%
- {#1}% braces here because \noFig uses []
+ \RenewDocumentCommand{\noFig}{O{5}}{\LWR@HTML@noFig}%
+ \RenewDocumentCommand{\musSharp}{}{\LWR@HTML@musSharp}%
+ \RenewDocumentCommand{\musDoubleSharp}{}{\LWR@HTML@musDoubleSharp}%
+ \RenewDocumentCommand{\musFlat}{}{\LWR@HTML@musFlat}%
+ \RenewDocumentCommand{\musDoubleFlat}{}{\LWR@HTML@musDoubleFlat}%
+ \RenewDocumentCommand{\musNatural}{}{\LWR@HTML@musNatural}%
+ {#2}% braces here because \noFig uses []
}%
-]*%
- \musStack[\musFigFont]{#1}%
+]*?%
+ {\musFigSize\musStack[\musFigFont]{#2}[#1]}%
\end{lateximage}%
}
\LWR@formatted{musFig}
-\NewDocumentCommand{\LWR@HTML@musFlat} {}{\HTMLunicode{266D}}
-\NewDocumentCommand{\LWR@HTML@musDoubleFlat} {}{\HTMLunicode{1D12B}}
-\NewDocumentCommand{\LWR@HTML@musSharp} {}{\HTMLunicode{266F}}
-\NewDocumentCommand{\LWR@HTML@musDoubleSharp}{}{\HTMLunicode{1D12A}}
-\NewDocumentCommand{\LWR@HTML@musNatural} {}{\HTMLunicode{266E}}
-
-\LWR@formatted{musFlat}
-\LWR@formatted{musDoubleFlat}
-\LWR@formatted{musSharp}
-\LWR@formatted{musDoubleSharp}
-\LWR@formatted{musNatural}
-
\NewDocumentCommand{\LWR@HTML@musWhole} {}{\HTMLunicode{1D15D}}
\NewDocumentCommand{\LWR@HTML@musHalf} {}{\HTMLunicode{1D15E}}
\NewDocumentCommand{\LWR@HTML@musQuarter} {}{\HTMLunicode{1D15F}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mwe.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mwe.sty
index adfa8107123..fcd5ab56926 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mwe.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mwe.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `mwe')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{mwe}[2018/03/30]
\AtEndDocument{%
\PackageWarningNoLine{lwarp}{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-nameauth.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-nameauth.sty
index bcc9c5b2894..1c870825c05 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-nameauth.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-nameauth.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `nameauth')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{nameauth}[2023/02/03]
\VerifyCommand[lwarp][nameauth]{\@nameauth@Hook}{E665BBD1C138AA37AF2AF5E3C3565584}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-nameref.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-nameref.sty
index 3aded682c47..31566b3168c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-nameref.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-nameref.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `nameref')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{nameref}[2023-08-07]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-natbib.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-natbib.sty
index e3485f1aec7..5772e00bd30 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-natbib.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-natbib.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `natbib')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{natbib}[2010/09/13]
\newcommand{\LWRNB@NAT@open}{$<$}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-nccfancyhdr.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-nccfancyhdr.sty
index a1e3785f6c8..628c4667bd7 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-nccfancyhdr.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-nccfancyhdr.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `nccfancyhdr')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{nccfancyhdr}[2004/12/07]
\newcommand*{\headrulewidth}{}
\newcommand*{\footrulewidth}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-nccfoots.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-nccfoots.sty
index 608a1188e8f..b53dd630c8f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-nccfoots.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-nccfoots.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `nccfoots')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{nccfoots}[2005/02/03]
\apptocmd{\LWR@nullifyfootnotes}{%
\renewcommand*{\Footnote}[1]{}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-nccmath.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-nccmath.sty
index 887a72edeef..05406613f28 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-nccmath.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-nccmath.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `nccmath')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{nccmath}[2006/01/20]
\let\LWR@origeqnarray\eqnarray
\let\LWR@origendeqnarray\endeqnarray
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-needspace.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-needspace.sty
index e3ec51b3201..1f86bca2e4f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-needspace.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-needspace.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `needspace')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{needspace}[2010/09/12]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-newpxmath.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-newpxmath.sty
index bbd5ffd0a10..5a99d1c98db 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-newpxmath.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-newpxmath.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `newpxmath')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{newpxmath}[2020/01/09]
\LWR@infoprocessingmathjax{newpxmath}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-newtxmath.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-newtxmath.sty
index de49ad7e1f0..c3b3f980439 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-newtxmath.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-newtxmath.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `newtxmath')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{newtxmath}[2020/08/04]
\LWR@infoprocessingmathjax{newtxmath}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-newtxsf.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-newtxsf.sty
index 162af2e2f5a..138c2d207b6 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-newtxsf.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-newtxsf.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `newtxsf')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{newtxsf}[2020/05/02]
\LWR@infoprocessingmathjax{newtxsf}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-nextpage.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-nextpage.sty
index 47adb834f4e..b21e10eb0bd 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-nextpage.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-nextpage.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `nextpage')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{nextpage}[2009/09/03]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-nfssext-cfr.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-nfssext-cfr.sty
index 5d7aca834da..21b53211c23 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-nfssext-cfr.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-nfssext-cfr.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `nfssext-cfr')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{nfssext-cfr}[2017/03/28]
\newrobustcmd{\LWR@HTML@lnstyle}{}
\newrobustcmd{\LWR@HTML@osstyle}{\LWR@HTML@scshape}
@@ -181,6 +182,7 @@
\newrobustcmd{\LWR@HTML@textln}[1]{\InlineClass{textln}{#1}}
\newrobustcmd{\LWR@HTML@textos}[1]{\textsc{#1}}
\newrobustcmd{\LWR@HTML@textin}[1]{#1}
+\providerobustcmd{\textin}[1]{}
\newrobustcmd{\LWR@HTML@textsu}[1]{#1}
\newrobustcmd{\LWR@HTML@textdf}[1]{#1}
\ifdef{\LWR@HTML@textsw}{}{% duplicated by fontaxes
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-nicefrac.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-nicefrac.sty
index 04ea28ad7d6..52c4ea28af4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-nicefrac.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-nicefrac.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `nicefrac')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{nicefrac}[1998/08/04]
\DeclareRobustCommand*{\LWR@HTML@@UnitsNiceFrac}[3][]{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-niceframe.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-niceframe.sty
index c6f35896f67..d320009a0e5 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-niceframe.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-niceframe.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `niceframe')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{niceframe}% the original date is in yyyy/dd/mm format
\newcommand{\LWR@niceframe}[3]{%
\begin{LWR@setvirtualpage}*%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-nicematrix.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-nicematrix.sty
index 8c2dde5fae8..fc84992e4e2 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-nicematrix.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-nicematrix.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `nicematrix')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,17 +15,18 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\PassOptionsToPackage{no-test-for-array}{nicematrix}
\LWR@ProvidesPackagePass{nicematrix}[2022/10/06]
\begin{warpHTML}
\BeforeBeginEnvironment{NiceTabular}{%
- \begin{lateximage}[-nicematrix-~\PackageDiagramAltText]%
+ \begin{lateximage}[-nicematrix-~\PackageDiagramAltText]?%
}
\AfterEndEnvironment{NiceTabular}{\end{lateximage}}
\BeforeBeginEnvironment{NiceTabular*}{%
- \begin{lateximage}[-nicematrix-~\PackageDiagramAltText]%
+ \begin{lateximage}[-nicematrix-~\PackageDiagramAltText]?%
}
\AfterEndEnvironment{NiceTabular*}{\end{lateximage}}
\end{warpHTML}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-noitcrul.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-noitcrul.sty
index ea0705327a3..bbd39c7275d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-noitcrul.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-noitcrul.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `noitcrul')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{noitcrul}[2006/04/11]
\begin{warpMathJax}
\CustomizeMathJax{\newcommand{\noitUnderline}[1]{\underline{#1}\!}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-nolbreaks.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-nolbreaks.sty
index 142ac18bca8..55606ed79ed 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-nolbreaks.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-nolbreaks.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `nolbreaks')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{nolbreaks}[2012/05/31]
\NewDocumentCommand{\nolbreaks}{s m}{\InlineClass{nolbreaks}{#2}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-nomencl.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-nomencl.sty
index 30e58c0dd67..11621557b36 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-nomencl.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-nomencl.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `nomencl')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{nomencl}[2021/11/10]
\xpatchcmd{\@@@nomenclature}
{\thepage}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-nonfloat.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-nonfloat.sty
index 7f49da319d6..296eebe30dc 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-nonfloat.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-nonfloat.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `nonfloat')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{nonfloat}[1999/07/05]
\LetLtxMacro\topcaption\caption
\newcommand{\figcaption}{\def\@captype{figure}\caption}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-nonumonpart.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-nonumonpart.sty
index 9da34b14c8d..d732871c161 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-nonumonpart.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-nonumonpart.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `nonumonpart')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{nonumonpart}[2011/04/15]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-nopageno.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-nopageno.sty
index fdde6ea90b2..f8eb068cc6f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-nopageno.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-nopageno.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `nopageno')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{nopageno}[1989/01/01]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-notes.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-notes.sty
index aeb0b2d049f..aa5eb6a5e2c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-notes.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-notes.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `notes')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{notes}[2002/10/29]
\newcommand*{\LWR@notes@onenote}[2]{%
\newenvironment{#1}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-notespages.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-notespages.sty
index fd4c071b3d4..187c39a482d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-notespages.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-notespages.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `notespages')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{notespages}[2016/08/21]
\newcommand*{\npnotesname}{}
\newcommand*{\npnotestext}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-nowidow.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-nowidow.sty
index 37779862ff4..732ebd7f083 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-nowidow.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-nowidow.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `nowidow')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{nowidow}[2011/09/20]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ntheorem.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ntheorem.sty
index 6d3915b47c1..3d94fd9b9d5 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ntheorem.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ntheorem.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ntheorem')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\DeclareOption{thref}{
\AtEndDocument{
@@ -51,6 +52,8 @@
\newcommand{\LWR@newtheoremstyle}{plain}
\AtBeginDocument{
\IfPackageLoadedTF{cleveref}{
+\VerifyCommand[lwarp][ntheorem-cleveref]{\@thm}
+ {24EBE14DBADF0B9992C3EDE1D70BA897}
\gdef\@thm#1#2#3{%
\if@thmmarks
\stepcounter{end\InTheoType ctr}%
@@ -126,6 +129,8 @@
}
}
}% AtBeginDocument
+\VerifyCommand[lwarp][ntheorem]{\theoremstyle}
+ {A735E431A49EB3A7B4BABD9AEAEE7E10}
\gdef\theoremstyle#1{%
\@ifundefined{th@#1}{\@warning
{Unknown theoremstyle `#1'. Using `plain'}%
@@ -357,6 +362,8 @@
}% not amsthm
\ifbool{LWR@ntheoremamsthm}{
+\VerifyCommand[lwarp][ntheorem-amsthm]{\th@plain}
+ {1FB8AE22BD4090F90D9031CFFC57DAFB}
\gdef\th@plain{%
\def\theorem@headerfont{\normalfont\bfseries}\itshape%
\def\@begintheorem##1##2{%
@@ -370,6 +377,8 @@
\InlineClass{theoremheaderplain}{##1\ ##2\ (##3).}
]}}
+\VerifyCommand[lwarp][ntheorem-amsthm]{\th@nonumberplain}
+ {3E82A39A222021777BF8221C490E86EC}
\gdef\th@nonumberplain{%
\def\theorem@headerfont{\normalfont\bfseries}\itshape%
\def\@begintheorem##1##2{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-octave.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-octave.sty
index 99df5ad9190..790f513d112 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-octave.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-octave.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `octave')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{octave}[2017/10/31]
\VerifyCommand[lwarp][octave]{\@PrintTicks}{26490A1A3593981987395ED149B4D54D}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-orcidlink.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-orcidlink.sty
index b6df9539d51..946a9235195 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-orcidlink.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-orcidlink.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `orcidlink')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,29 +15,33 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\RequirePackage{lwarp-scalerel}
-\LWR@ProvidesPackagePass{orcidlink}[2023/12/30]
-\VerifyCommand[lwarp][orcidlink]{\orcidlink}{3158910F15AD114F9C397A208315B6D2}
+\LWR@ProvidesPackagePass{orcidlink}[2024/06/26]
+\xpretocmd{\orcidlogo}
+ {\begin{lateximage}[orcidlogo]}
+ {}
+ {\LWR@patcherror{orcidlink}{orcidlogo pre}}
+
+\xapptocmd{\orcidlogo}
+ {\end{lateximage}}
+ {}
+ {\LWR@patcherror{orcidlink}{orcidlogo post}}
+
+\VerifyCommand[lwarp][orcidlink]{\orcidlinkX}
+ {3CDD2DC196F113AE4758968E937D7D08}
-\renewcommand\orcidlink[1]{%
- \texorpdfstring%
+\renewrobustcmd{\orcidlinkX}[3]{%
+ \href%
+ {https://orcid.org/#2}%
{%
- \href%
- {https://orcid.org/#1}%
- {%
- \begin{lateximage}[orcid #1]% lwarp
- \mbox{%
- \scalerel*{%
- \begin{tikzpicture}[yscale=-1,transform shape]
- \pic{orcidlogo};
- \end{tikzpicture}
- }{|}%
- }%
- \end{lateximage}% lwarp
- }%
+ \ifstrempty{#1}{}{#1\,}%
+ \begin{lateximage}*[orcid #2]?%
+ \orcidlogo%
+ \end{lateximage}% lwarp
+ \ifstrempty{#3}{}{\,#3}%
}%
- {}%
}
\begin{warpMathJax}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-overpic.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-overpic.sty
index 33f0f2120c3..24fa094178e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-overpic.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-overpic.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `overpic')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{overpic}[2017/10/06]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pagegrid.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pagegrid.sty
index 8bcd8bbaa90..c14dcc49c3b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pagegrid.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pagegrid.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pagegrid')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pagegrid}[2016/05/16]
\newcommand*{\pagegridsetup}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pagenote.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pagenote.sty
index 6ac7d3c7208..eaf4fd79a79 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pagenote.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pagenote.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pagenote')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\DeclareOption{page}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pagesel.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pagesel.sty
index 83723495931..4a0ccb807c6 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pagesel.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pagesel.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pagesel')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pagesel}[2016/05/16]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-paralist.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-paralist.sty
index b1eda3c3f7e..3fc1d1ab127 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-paralist.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-paralist.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `paralist')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{paralist}[2017/01/22]
\LetLtxMacro\compactitem\itemize
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-parallel.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-parallel.sty
index e028afe518d..8f20a67d677 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-parallel.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-parallel.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `parallel')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{parallel}[2003/04/13]
\newcounter{LWR@parallel@Lwidth}
\newcounter{LWR@parallel@Rwidth}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-parcolumns.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-parcolumns.sty
index 7eef39fb6cf..3c91440af10 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-parcolumns.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-parcolumns.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `parcolumns')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\RequirePackage{keyval}%
\LWR@ProvidesPackageDrop{parcolumns}[2004/11/25]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-parnotes.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-parnotes.sty
index 1adbc4d7be1..6c254b71948 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-parnotes.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-parnotes.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `parnotes')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{parnotes}[2019/07/23]
\VerifyCommand[lwarp][parnotes]{\PN@parnote@real}{91361D751D6393BA644478FDE4A764DA}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-parskip.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-parskip.sty
index f3a818c22c6..e3489edd0e4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-parskip.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-parskip.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `parskip')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{parskip}[2001/04/09]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-komascript.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-komascript.sty
index f8de8ce57e9..4326911ee56 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-komascript.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-komascript.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `patch-komascript')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\ProvidesPackage{lwarp-patch-komascript}
\RequirePackage{lwarp-typearea}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-memoir.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-memoir.sty
index 629acc2d0e3..30993fee073 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-memoir.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-memoir.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `patch-memoir')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\ProvidesPackage{lwarp-patch-memoir}
\RequirePackage{lwarp-abstract}% req'd
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pbalance.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pbalance.sty
index ec6afe91acb..36f7cb77206 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pbalance.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pbalance.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pbalance')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\RequirePackage{balance}
\LWR@ProvidesPackageDrop{pbalance}[2022/07/28]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pbox.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pbox.sty
index 2f8aa23fbe8..cba8aadc798 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pbox.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pbox.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pbox')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pbox}[2011/12/07]
\NewDocumentCommand{\pbox}{O{t} O{} O{t} m +m}{%
\global\booltrue{LWR@minipagefullwidth}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcol.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcol.sty
index 4e25a5237e7..661c8d94c6c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcol.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcol.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pdfcol')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pdfcol}[2018/11/01]
\ltx@newif\ifpdfcolAvailable
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolfoot.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolfoot.sty
index 2ef178f3f1b..6b5eb805729 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolfoot.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolfoot.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pdfcolfoot')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pdfcolfoot}[2016/05/16]
\newcommand*{\pdfcolfoot@switch}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolmk.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolmk.sty
index 6bd2d663023..e768cc11557 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolmk.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolmk.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pdfcolmk')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pdfcolmk}[2016/05/16]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolparallel.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolparallel.sty
index dcec3e203e3..6dc54819b2a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolparallel.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolparallel.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pdfcolparallel')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\RequirePackage{keyval}%
\LWR@ProvidesPackageDropA{pdfcolparallel}{2016/05/16}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolparcolumns.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolparcolumns.sty
index 4fb9dcd85ae..c11b7a4f638 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolparcolumns.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcolparcolumns.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pdfcolparcolumns')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDropA{pdfcolparcolumns}{2016/05/16}
\DeclareOption*{%
\PassoptionsToPackage{\CurrentOption}{parcolumns}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcomment.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcomment.sty
index 45f53c3b084..304a933459a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcomment.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcomment.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pdfcomment')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pdfcomment}[2016/06/13]
\newenvironment{pdfsidelinecomment}[2][]{}{}
\newcommand{\pdfcomment}[2][]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcrypt.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcrypt.sty
index 982876533db..d88690f0866 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcrypt.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfcrypt.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pdfcrypt')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pdfcrypt}[2016/05/16]
\newcommand*{\pdfcryptsetup}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdflscape.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdflscape.sty
index e7d308a506c..0cd9f2fea61 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdflscape.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdflscape.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pdflscape')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pdflscape}[2019/12/05]
\let\landscape\relax
\let\endlandscape\relax
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfmarginpar.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfmarginpar.sty
index 955942a37f2..9c5cdb8ef0c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfmarginpar.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfmarginpar.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pdfmarginpar')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pdfmarginpar}[2011/08/05]
\newcommand{\pdfmarginpar}[2][]{}
\newcommand{\pdfmarginparset}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfpages.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfpages.sty
index beaa91264de..431e740bb08 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfpages.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfpages.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pdfpages')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,7 +15,8 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
-\LWR@ProvidesPackagePass{pdfpages}[2024-01-21]
+%%
+\LWR@ProvidesPackagePass{pdfpages}[2024-10-28]
\define@key{pdfpages}{fitpaper}[false]{}
\define@key{pdfpages}{landscape}[false]{}
\define@key{pdfpages}{openright}[false]{}
@@ -62,7 +63,7 @@
\global\let\ESO@HookIIBG\@empty%
}
}
-\VerifyCommand[lwarp][pdfpages]{\AM@output@i}{A962EC58215FABF2447E4ADEEDC3D3D5}
+\VerifyCommand[lwarp][pdfpages]{\AM@output@i}{99E594CC8DCDD915D63CB1C8E41BE427}
\xpatchcmd{\AM@output@i}
{\clearpage}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfprivacy.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfprivacy.sty
index ea5ee180eed..8eb0794c061 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfprivacy.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfprivacy.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pdfprivacy')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pdfprivacy}[2017/12/03]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfrender.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfrender.sty
index 981f65acdb8..9ed13cfea23 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfrender.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfrender.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pdfrender')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{pdfrender}[2019/12/29]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfsync.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfsync.sty
index 7d2751ef844..7a0e497df9b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfsync.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfsync.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pdfsync')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pdfsync}[2008/01/26]
\newcommand*{\pdfsync}{}
\newcommand*{\pdfsyncstart}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdftricks.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdftricks.sty
index ede0c067476..6a1cc7b9522 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdftricks.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdftricks.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pdftricks')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{pdftricks}[2003/08/10]
\def\PDFTfigname{\BaseJobname-fig\thepsfig}
\PackageWarning{lwarp-pdftricks}{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfx.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfx.sty
index bedaa97f0d4..5bcd1be4b23 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfx.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfx.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pdfx')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pdfx}[2017/05/18]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-perpage.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-perpage.sty
index 964c8fcd085..32cd5f7a8d6 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-perpage.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-perpage.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `perpage')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{perpage}[2014/10/25]
\newcommand\AddAbsoluteCounter[1]
{
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pfnote.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pfnote.sty
index 780c7fd385c..c7df584b800 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pfnote.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pfnote.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pfnote')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pfnote}[1999/07/14]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-phfqit.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-phfqit.sty
index 80f96175b63..3accfbc576e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-phfqit.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-phfqit.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `phfqit')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{phfqit}[2017/08/16]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-physics.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-physics.sty
index 2c8e444cdb7..321140c1ddd 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-physics.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-physics.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `physics')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{physics}% No date is provided by the package.
\begin{warpMathJax}
\PackageNoteNoLine{lwarp, physics}{The MathJax v3 extension will be used}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-physunits.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-physunits.sty
index 1ea1254154c..316559347b3 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-physunits.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-physunits.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `physunits')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{physunits}[2020/03/26]
\begin{warpMathJax}
\LWR@infoprocessingmathjax{physunits}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-picinpar.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-picinpar.sty
index 5193c734722..9db1234e359 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-picinpar.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-picinpar.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `picinpar')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{picinpar}% No date is assigned.
\long\def\LWR@HTML@window[#1,#2,#3,#4] {%
\if #2r%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pifont.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pifont.sty
index dde59ed93e9..28ec5d0ae70 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pifont.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pifont.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pifont')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{pifont}[2005/04/12]
\renewcommand{\Pisymbol}[2]{%
\begin{lateximage}*[Pisymbol][pisymbol#1#2]%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pinlabel.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pinlabel.sty
index 4e0da83e715..2a3247d80d3 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pinlabel.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pinlabel.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pinlabel')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,9 +15,10 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{pinlabel}% no date given
\xpretocmd{\psfig}
- {\begin{lateximage}[-pinlabel-~\PackageDiagramAltText]}
+ {\begin{lateximage}[-pinlabel-~\PackageDiagramAltText]?}%
{}
{\LWR@patcherror{pinlabel}{psfigA}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-placeins.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-placeins.sty
index 26211c34139..e18ebfb3b9a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-placeins.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-placeins.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `placeins')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{placeins}[2005/04/18]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-plarydshln.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-plarydshln.sty
index 94ec0a4041e..eb3d6fd1850 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-plarydshln.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-plarydshln.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `plarydshln')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{plarydshln}[2018/10/20]
\LWR@origRequirePackage{lwarp-arydshln}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-plext.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-plext.sty
index a4a3d685688..e16806b751a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-plext.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-plext.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `plext')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@loadbefore{plext}
\LWR@ProvidesPackagePass{plext}[2017/07/21]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-plextarydshln.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-plextarydshln.sty
index b7737b460da..da455effaee 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-plextarydshln.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-plextarydshln.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `plextarydshln')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{plextarydshln}[2018/10/20]
\LWR@origRequirePackage{lwarp-arydshln}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-plextcolorbl.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-plextcolorbl.sty
index 35bbfa2158d..323fb5a7e9b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-plextcolorbl.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-plextcolorbl.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `plextcolortbl')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{plextcolortbl}[2018/09/19]
\LWR@origRequirePackage{lwarp-colortbl}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-plimsoll.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-plimsoll.sty
index 42f4c998856..496e2768b1a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-plimsoll.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-plimsoll.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `plimsoll')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{plimsoll}[2020/10/09]
\begin{warpMathJax}
\CustomizeMathJax{\newcommand{\plimsollroman}{\unicode{x029B5}}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-prelim2e.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-prelim2e.sty
index 2cf2b6791ff..217cf93ef0e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-prelim2e.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-prelim2e.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `prelim2e')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{prelim2e}[2009/05/29]
\newcommand{\PrelimText}{}
\newcommand{\PrelimTextStyle}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-prettyref.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-prettyref.sty
index 98d4f28acb0..90a305b831d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-prettyref.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-prettyref.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `prettyref')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{prettyref}[1998/07/09]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-preview.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-preview.sty
index 3177066bc4e..07075e6a343 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-preview.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-preview.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `preview')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{preview}[2017/04/24]
\newenvironment{preview}{}{}
\newenvironment{nopreview}{}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-psfrag.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-psfrag.sty
index 82c8803796c..6a4549947e4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-psfrag.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-psfrag.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `psfrag')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,9 +15,10 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{psfrag}[1998/04/11]
\BeforeBeginEnvironment{psfrags}{%
- \begin{lateximage}[-psfrags-~\PackageDiagramAltText]%
+ \begin{lateximage}[-psfrags-~\PackageDiagramAltText]?%
}
\AfterEndEnvironment{psfrags}{\end{lateximage}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-psfragx.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-psfragx.sty
index 92cac9404cf..3e1970a5ae5 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-psfragx.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-psfragx.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `psfragx')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,11 +15,12 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{psfragx}[2012/05/02]
\VerifyCommand[lwarp][psfragx]{\pfx@includegraphicx}{45FCF58D66C0BFFC685913A78CADF20D}
\def\pfx@includegraphicx#1#2{%
- \begin{lateximage}[-psfragx-~\PackageDiagramAltText]%
+ \begin{lateximage}[-psfragx-~\PackageDiagramAltText]?%
\mbox{\pfx@overpix{#1}{#2}\endpfx@overpix}%
\end{lateximage}%
}
@@ -27,7 +28,7 @@
\VerifyCommand[lwarp][psfragx]{\@@@overpix}{DD69D71E9C551D4D568AE4269AAAC1C0}
\def\@@@overpix[#1]<#2>[#3]#4{%
- \begin{lateximage}[-psfragx-~\PackageDiagramAltText]%
+ \begin{lateximage}[-psfragx-~\PackageDiagramAltText]?%
\pfx@overpix{#1,ovpfgd={#2},ovpbgd={#3}}{#4}%
}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pst-eps.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pst-eps.sty
index e40a312ddc9..7cbd11ddfc2 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pst-eps.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pst-eps.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pst-eps')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{pst-eps}[2005/05/20]
\renewenvironment{TeXtoEPS}{}{}
\renewcommand{\PSTtoEPS}[3][]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pstool.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pstool.sty
index 71930c265ae..ba3629e4d8d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pstool.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pstool.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pstool')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,9 +15,10 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{pstool}[2018/01/20]
\renewcommand\pstool@alwaysprocess[3][]{%
- \begin{lateximage}[-pstool-~\PackageDiagramAltText]%
+ \begin{lateximage}[-pstool-~\PackageDiagramAltText]?%
\includegraphics{#2.pdf}%
\end{lateximage}%
}
@@ -25,7 +26,7 @@
\LetLtxMacro\pstool@maybeprocess\pstool@alwaysprocess
\renewcommand\pstool@@psfragfig[4]{%
- \begin{lateximage}[-pstool-~\PackageDiagramAltText]%
+ \begin{lateximage}[-pstool-~\PackageDiagramAltText]?%
\includegraphics{#2.pdf}%
\end{lateximage}%
}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pstricks.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pstricks.sty
index 9150394737e..401bfed3c06 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pstricks.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pstricks.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pstricks')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{pstricks}[2018/01/06]
\BeforeBeginEnvironment{pspicture}{%
\begin{lateximage}[pspicture]%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pxatbegshi.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pxatbegshi.sty
index 91349c50c49..fa47e61aac1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pxatbegshi.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pxatbegshi.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pxatbegshi')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pxatbegshi}[2017/11/04]
\LWR@origRequirePackage{lwarp-atbegshi}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pxeveryshi.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pxeveryshi.sty
index 114bfbbfa68..cffaa56ebb3 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pxeveryshi.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pxeveryshi.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pxeveryshi')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pxeveryshi}[2012/05/19]
\LWR@origRequirePackage{lwarp-everyshi}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pxfonts.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pxfonts.sty
index 5a2d1e3281e..952e2ba975d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pxfonts.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pxfonts.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pxfonts')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{pxfonts}[2008/01/22]
\LWR@origRequirePackage{lwarp-common-mathjax-letters}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pxftnright.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pxftnright.sty
index 1f7c21682b1..ad2c3b062ca 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pxftnright.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pxftnright.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pxftnright')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pxftnright}[2017/02/28]
\LWR@origRequirePackage{lwarp-ftnright}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-pxjahyper.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-pxjahyper.sty
index 9904e6c5452..2d455b99c20 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-pxjahyper.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-pxjahyper.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `pxjahyper')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{pxjahyper}[2018/07/15]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-quotchap.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-quotchap.sty
index 787baabb2dc..17e97747c7c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-quotchap.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-quotchap.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `quotchap')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{quotchap}[2019/07/09]
\newcommand{\@quotchap}{}
\newlength{\LWR@quotchapwidth}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-quoting.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-quoting.sty
index 704851b84bf..5c39faeb201 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-quoting.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-quoting.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `quoting')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{quoting}[2014/01/28]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ragged2e.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ragged2e.sty
index 13e0f69dc1a..745f3e92251 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ragged2e.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ragged2e.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ragged2e')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{ragged2e}[2009/05/21]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-realscripts.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-realscripts.sty
index 6e3d3136fd3..fbbeedb9fa6 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-realscripts.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-realscripts.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `realscripts')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{realscripts}[2016/02/13]
\ExplSyntaxOn
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-refcheck.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-refcheck.sty
index 5bdd680cfbe..1e2837e3733 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-refcheck.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-refcheck.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `refcheck')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{refcheck}[2013/02/14]
\def\showrefnames{}
\def\norefnames{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-register.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-register.sty
index 11035300b90..48bb52bbd5b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-register.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-register.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `register')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{register}[2019/01/01]
@@ -22,7 +23,7 @@
{\centering}
{%
\begin{center}%
- \begin{lateximage}[-register-~\PackageDiagramAltText]%
+ \begin{lateximage}[-register-~\PackageDiagramAltText]?%
}
{}
{\LWR@patcherror{register}{register}}
@@ -39,7 +40,7 @@
\expandafter\xapptocmd\csname register*\endcsname
{%
\begin{center}%
- \begin{lateximage}[-register-~\PackageDiagramAltText]%
+ \begin{lateximage}[-register-~\PackageDiagramAltText]?%
}
{}
{\LWR@patcherror{register}{register*}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-relsize.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-relsize.sty
index 24abcb55e10..b26cf1eeef4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-relsize.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-relsize.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `relsize')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{relsize}[2013/03/29]
\let\LWR@origrelsize\relsize
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-repeatindex.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-repeatindex.sty
index 7fb68fd6897..9df6f6fde75 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-repeatindex.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-repeatindex.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `repeatindex')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{repeatindex}[2001/10/13]
\RequirePackage{makeidx}
\def\entryprefix{\itshape}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-repltext.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-repltext.sty
index bf1438e4351..06153188d63 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-repltext.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-repltext.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `repltext')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{repltext}[2020/09/25]
\newcommand{\repltext}[2]{#2}
\newcommand*{\prevrepl}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-resizegather.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-resizegather.sty
index fce26c2f9f3..690942f1d5a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-resizegather.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-resizegather.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `resizegather')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{resizegather}[2016/05/16]
\newcommand*{\resizegathersetup}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-returntogrid.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-returntogrid.sty
index 13355523432..9f683e4991d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-returntogrid.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-returntogrid.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `returntogrid')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{returntogrid}[2018/08/21]
\NewDocumentCommand\returntogrid{ O {} }{}
\NewDocumentCommand\returntogridsetup { m } {}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-rlepsf.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-rlepsf.sty
index d6a979b1e00..43b5755d3c2 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-rlepsf.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-rlepsf.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `rlepsf')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{rlepsf}% No date given.
\xpretocmd{\relabelbox}
{\begin{lateximage}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-rmathbr.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-rmathbr.sty
index 234ef6fba6b..b1c55c97c3a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-rmathbr.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-rmathbr.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `rmathbr')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{rmathbr}[2020/12/11]
\begin{warpMathJax}
\CustomizeMathJax{\def\*{~}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-rmpage.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-rmpage.sty
index 3ad1a36d766..32bdc830cb8 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-rmpage.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-rmpage.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `rmpage')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{rmpage}[1997/09/29]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-romanbar.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-romanbar.sty
index c7e36dac59b..a613c0c0b09 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-romanbar.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-romanbar.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `romanbar')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{romanbar}[2012/01/01]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-romanbarpagenumber.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-romanbarpagenumber.sty
index 52ac46ca201..dfa23812f4d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-romanbarpagenumber.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-romanbarpagenumber.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `romanbarpagenumber')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{romanbarpagenumber}[2015/02/06]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-rotating.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-rotating.sty
index e3b3dbfdd9d..a9e2e068049 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-rotating.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-rotating.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `rotating')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{rotating}[2016/08/11]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-rotfloat.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-rotfloat.sty
index 3935810498c..8d7863586b8 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-rotfloat.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-rotfloat.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `rotfloat')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{rotfloat}[2004/01/04]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-rviewport.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-rviewport.sty
index 2d02df7993e..552e265ee1c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-rviewport.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-rviewport.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `rviewport')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{rviewport}[2011/08/27]
\define@key{igraph}{rviewport}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-savetrees.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-savetrees.sty
index e9b7d2d5c3f..918747c47ed 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-savetrees.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-savetrees.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `savetrees')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{savetrees}[2016/04/13]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-scalefnt.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-scalefnt.sty
index 891903a0458..9957174efa2 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-scalefnt.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-scalefnt.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `scalefnt')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{scalefnt}
\DeclareRobustCommand\scalefont[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-scalerel.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-scalerel.sty
index eddeefa14c8..58cd14cc239 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-scalerel.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-scalerel.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `scalerel')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{scalerel}[2016/12/29]
\begin{warpMathJax}
\LWR@infoprocessingmathjax{scalerel}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-schemata.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-schemata.sty
index ad44570b6d8..507b099b18f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-schemata.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-schemata.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `schemata')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{schemata}[2020/11/23]
@@ -22,14 +23,14 @@
\LetLtxMacro\LWR@schemata@origSchema\Schema
\renewcommand{\schema}[3][open]{%
- \begin{lateximage}[-schemata-~\PackageDiagramAltText]%
+ \begin{lateximage}[-schemata-~\PackageDiagramAltText]?%
\LWR@print@normalsize%
\LWR@schemata@origschema[#1]{#2}{#3}%
\end{lateximage}%
}
\renewcommand{\Schema}[5][open]{%
- \begin{lateximage}[-schemata-~\PackageDiagramAltText]%
+ \begin{lateximage}[-schemata-~\PackageDiagramAltText]?%
\LWR@print@normalsize%
\LWR@schemata@origSchema[#1]{#2}{#3}{#4}{#5}%
\end{lateximage}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-scrextend.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-scrextend.sty
index 395b7c813b9..84bf57aea04 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-scrextend.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-scrextend.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `scrextend')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{scrextend}[2020/01/24]
\DeclareDocumentCommand{\setkomafont}{m m}{}
\DeclareDocumentCommand{\addkomafont}{m m}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-scrhack.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-scrhack.sty
index d459ef2054e..ae61da1d75e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-scrhack.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-scrhack.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `scrhack')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{scrhack}[2018/03/30]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-scrlayer-notecolumn.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-scrlayer-notecolumn.sty
index 23fd9ed53ae..6a8dfb0993d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-scrlayer-notecolumn.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-scrlayer-notecolumn.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `scrlayer-notecolumn')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{scrlayer-notecolumn}[2018/02/02]
\newcommand*{\DeclareNoteColumn}[2][]{}
\newcommand*{\DeclareNewNoteColumn}[2][]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-scrlayer-scrpage.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-scrlayer-scrpage.sty
index dc3d8f2a9b1..3c0701f1597 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-scrlayer-scrpage.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-scrlayer-scrpage.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `scrlayer-scrpage')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{scrlayer-scrpage}[2018/03/30]
\@ifundefined{footheight}{\newlength\footheight}{}
\NewDocumentCommand{\lehead}{s o m}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-scrlayer.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-scrlayer.sty
index a6d320189c7..a9b766ef1a8 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-scrlayer.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-scrlayer.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `scrlayer')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{scrlayer}[2018/03/30]
\newcommand*{\DeclareSectionNumberDepth}[2]{}
\newcommand*{\DeclareLayer}[2][]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-scrpage2.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-scrpage2.sty
index 22ff49d18f4..cb435ad0a2e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-scrpage2.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-scrpage2.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `scrpage2')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{scrpage2}[2018/03/30]
\@ifundefined{footheight}{\newlength\footheight}{}
\NewDocumentCommand{\lehead}{o m}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-section.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-section.sty
index 5d0d462586c..45321e0db4a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-section.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-section.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `section')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{section}
\ifx\chapter\undefined
\def\chsize{\Large}\def\hdsize{\huge}\else
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-sectionbreak.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-sectionbreak.sty
index 364c4e9099c..06515c3869f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-sectionbreak.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-sectionbreak.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `sectionbreak')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{sectionbreak}[2018-01-03]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-sectsty.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-sectsty.sty
index 379a6c04fc8..150fed6e1d0 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-sectsty.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-sectsty.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `sectsty')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{sectsty}[2002/02/25]
\newcommand*{\partfont} [1] {}
\newcommand*{\partnumberfont} [1] {}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-selectp.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-selectp.sty
index 3e2e96e8fa4..8b98d9eec17 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-selectp.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-selectp.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `selectp')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{selectp}% no date given
\newcommand*{\outputonly}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-semantic-markup.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-semantic-markup.sty
index f04193617b6..8c3165b285d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-semantic-markup.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-semantic-markup.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `semantic-markup')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{semantic-markup}[2018/05/21]
\ifendnotes
\RenewDocumentCommand{\SetupEndnotes}{}{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-seqsplit.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-seqsplit.sty
index 42e6059db04..571a1b5d33f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-seqsplit.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-seqsplit.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `seqsplit')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{seqsplit}[2006/08/07]
\begin{warpHTML}
\LetLtxMacro\LWR@orig@seqsplit\seqsplit
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-setspace.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-setspace.sty
index 59f09b97fc4..3c38d376ee7 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-setspace.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-setspace.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `setspace')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-shadethm.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-shadethm.sty
index 703e53ea3b4..ed263b7f14d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-shadethm.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-shadethm.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `shadethm')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{shadethm}[1999/11/23]
\newenvironment{LWR@HTML@shadebox}
{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-shadow.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-shadow.sty
index b9fd5ccef10..848225410ae 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-shadow.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-shadow.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `shadow')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{shadow}[2003/02/19]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-shapepar.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-shapepar.sty
index 572c7490405..a1ed1293e38 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-shapepar.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-shapepar.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `shapepar')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{shapepar}[2013/03/26]
\newcommand*{\LWR@HTML@shapepar}[2][]{}
\LWR@formatted{shapepar}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-showidx.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-showidx.sty
index 7007604fd14..95f4fc43728 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-showidx.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-showidx.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `idx')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-showkeys.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-showkeys.sty
index 3a4259904c1..a57387f8073 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-showkeys.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-showkeys.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `showkeys')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{showkeys}[2014/10/28]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-showlabels.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-showlabels.sty
index 2f075e0d86c..0d4a276daeb 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-showlabels.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-showlabels.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `showlabels')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{showlabels}[2021/10/27]
\providecommand{\showlabelfont}{}
\providecommand{\showlabelsetlabel}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-showtags.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-showtags.sty
index 0b604d34824..8676bf4d05e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-showtags.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-showtags.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `showtags')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{showtags}% no version is given
\newcommand{\thecitetag}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-shuffle.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-shuffle.sty
index 1d63feaa390..d51890bc312 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-shuffle.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-shuffle.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `shuffle')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{shuffle}[2008/10/27]
\LWR@origRequirePackage{lwarp-common-mathjax-overlaysymbols}
\newcommand*{\LWR@shuffle@start}{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-sidecap.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-sidecap.sty
index b42b04ee3f5..0f27efe9189 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-sidecap.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-sidecap.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `sidecap')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{sidecap}[2003/06/06]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-sidenotes.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-sidenotes.sty
index f0501ea653b..16d1560049a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-sidenotes.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-sidenotes.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `sidenotes')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{sidenotes}
\VerifyCommand[lwarp][sidenotes]{\sidecaption}{2EFE2196F612943BCF13746EC12E69D6}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-simplebnf.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-simplebnf.sty
index 638da482091..138bf564d73 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-simplebnf.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-simplebnf.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `simplebnf')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{simplebnf}[2023-11-25]
\ExplSyntaxOn
@@ -23,7 +24,7 @@
\RenewDocumentEnvironment { bnf } { d() O{llcll} +b }
{
- \begin{lateximage}[bnf:\space\detokenize{#3}]% lwarp
+ \begin{lateximage}[bnf:\space\detokenize{#3}]?%
\IfNoValueF { #1 }
{ \keys_set:nn { simplebnf } { #1 } }
@@ -44,7 +45,7 @@
{
\msg_warning:nn { simplebnf } { dep }
\begin{center}
- \begin{lateximage}[bnf:\space\detokenize{#4}]% lwarp
+ \begin{lateximage}[bnf:\space\detokenize{#4}]?%
\begin{tabular}{#1}
\@dep__simplebnf_typeset_grammar:nnn { #2 } { #3 } { #4 }
\tl_use:N \l__simplebnf_table_tl
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-siunitx-v2.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-siunitx-v2.sty
index 889c941e52e..ca3d637dfaa 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-siunitx-v2.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-siunitx-v2.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `siunitx-v2')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\RequirePackage{xcolor}% for \convertcolorspec
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-siunitx.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-siunitx.sty
index 3d5529abea2..2c9bedd9fb7 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-siunitx.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-siunitx.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `siunitx')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\providecommand\DeclareRelease[3]{}
\providecommand\DeclareCurrentRelease[2]{}
@@ -25,12 +26,12 @@
\RequirePackage{xcolor}% for \convertcolorspec
-\LWR@ProvidesPackagePass{siunitx}[2023-11-14]
+\LWR@ProvidesPackagePass{siunitx}[2025-01-21]
\ExplSyntaxOn
-\VerifyCommand[lwarp][siunitx]{\siunitx_number_format:nN}{33A1ECC8D70AC60AEB82D78E598155E6}
+\VerifyCommand[lwarp][siunitx]{\siunitx_number_format:nN}{76C110239433A6FC6441704392C40200}
\cs_set_protected:Npn \siunitx_number_format:nN #1#2
{
@@ -38,9 +39,12 @@
\bool_if:NTF \l_siunitx_number_parse_bool
{
\siunitx_number_parse:nN {#1} \l__siunitx_number_parsed_tl
- \siunitx_number_process:NN \l__siunitx_number_parsed_tl \l__siunitx_number_parsed_tl
- \tl_set:Nx \l__siunitx_number_outputted_tl
- { \siunitx_number_output:N \l__siunitx_number_parsed_tl }
+ \tl_if_empty:NF \l__siunitx_number_parsed_tl
+ {
+ \siunitx_number_process:NN \l__siunitx_number_parsed_tl \l__siunitx_number_parsed_tl
+ \tl_set:Nx \l__siunitx_number_outputted_tl
+ { \siunitx_number_output:N \l__siunitx_number_parsed_tl }
+ }
}
{
\tl_set:Nn \l__siunitx_number_outputted_tl
@@ -83,7 +87,7 @@
\newcommand*{\LWR@siunitx@mathrm}[1]{%
\ifmmode{\LWR@siunitx@orig@mathrm{#1}}\else{#1}\fi%
}
-\VerifyCommand[lwarp][siunitx]{\__siunitx_print_aux:nn}{FD2679699363E8095304C0665CAC4072}
+\VerifyCommand[lwarp][siunitx]{\__siunitx_print_aux:nn}{4D81B79284057560BC61DF11EF723AC8}
\cs_set_protected:Npn \__siunitx_print_aux:nn #1#2
{
@@ -98,9 +102,8 @@
{
\use:c
{
- siunitx_print_
- \tl_use:c { l__siunitx_print_ #1 _mode_tl } :n
- }
+ __siunitx_print _ #1 :n
+ }
{#2}
}
{
@@ -201,77 +204,91 @@
\exp_not:V \l__siunitx_complex_exp_tl
}
}
-\VerifyCommand[lwarp][siunitx]{\__siunitx_angle_arc_print_auxii:nw}
- {7CEE155CD4C7A9CDFEAE3AF8DD154B03}
-
-\cs_set_protected:Npn \__siunitx_angle_arc_print_auxii:nw
- #1#2 \q_nil #3 \q_nil #4 \q_nil #5 \q_nil #6 \q_nil #7 \q_nil #8 \q_stop
+\VerifyCommand[lwarp][siunitx]{\__siunitx_angle_arc_print_auxiv:nnnnn}%
+ {BA9FCDF6D4868323669F0F8C61412508}
+\cs_set_protected:Npn \__siunitx_angle_arc_print_auxiv:nnnnn #1#2#3#4#5
{
\mode_if_math:TF
{ \bool_set_true:N \l__siunitx_angle_tmp_bool }
{ \bool_set_false:N \l__siunitx_angle_tmp_bool }
- \siunitx_print_number:n {#2#3#4}
+ \siunitx_print_number:n {#3}
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}% lwarp
- {% lwarp
- \tl_if_blank:nTF {#6}
- { \__siunitx_angle_arc_print_auxvi:n {#1} }
- {
- \hbox_set:Nn \l__siunitx_angle_marker_box
- {
- \__siunitx_angle_arc_print_auxiii:n
- { \siunitx_print_number:n {#5} }
- }
- \hbox_set:Nn \l__siunitx_angle_unit_box
- {
- \__siunitx_angle_arc_print_auxiii:n
- {
- \siunitx_unit_format:nN {#1} \l__siunitx_angle_tmp_tl
- \siunitx_print_unit:V \l__siunitx_angle_tmp_tl
- \skip_horizontal:n { -\scriptspace }
- }
- }
- \dim_compare:nNnTF { \box_wd:N \l__siunitx_angle_marker_box } >
- { \box_wd:N \l__siunitx_angle_unit_box }
- {
- \__siunitx_angle_arc_print_auxiv:NN
- \l__siunitx_angle_marker_box
- \l__siunitx_angle_unit_box
- }
- {
- \__siunitx_angle_arc_print_auxiv:NN
- \l__siunitx_angle_unit_box
- \l__siunitx_angle_marker_box
- }
- \hbox_set_to_wd:Nnn \l__siunitx_angle_marker_box
- \l__siunitx_angle_tmp_dim
- {
- \hbox_overlap_right:n
- { \box_use_drop:N \l__siunitx_angle_marker_box }
- \hbox_overlap_right:n
- { \box_use_drop:N \l__siunitx_angle_unit_box }
- \tex_hfil:D
- }
- \box_use:N \l__siunitx_angle_marker_box
- \skip_horizontal:N \scriptspace
- \siunitx_print_number:n {#6}
- }
- }%
- {% lwarp: not in a lateximage, simplify for HTML
- \tl_if_blank:nTF {#6}
- { \__siunitx_angle_arc_print_auxvi:n {#1} }
- {
- \__siunitx_angle_arc_print_auxiii:n
- {
- \siunitx_print_number:n {#5}
- }
- \__siunitx_angle_arc_print_auxiii:n
- {
- \siunitx_unit_format:nN {#1} \l__siunitx_angle_tmp_tl
+ {% lwarp: lateximage
+ \tl_if_blank:nTF {#1}% decimal part of angle
+ {
+ \siunitx_print_number:n {#2}%
+ \__siunitx_angle_arc_print_auxix:n {#5}% deg/min/sec char
+ }
+ {
+ \hbox_set:Nn \l__siunitx_angle_marker_box
+ {
+ \__siunitx_angle_arc_print_auxv:n
+ { \siunitx_print_number:n {#4} }% decimal point char
+ }
+ \hbox_set:Nn \l__siunitx_angle_unit_box
+ {
+ \__siunitx_angle_arc_print_auxv:n
+ {
+ \siunitx_unit_format:nN {#5} \l__siunitx_angle_tmp_tl% deg/min/sec char
\siunitx_print_unit:V \l__siunitx_angle_tmp_tl
- }
- \siunitx_print_number:n {#6}
- }
- }% lwarp
+ \skip_horizontal:n { -\scriptspace }
+ }
+ }
+ \dim_compare:nNnTF { \box_wd:N \l__siunitx_angle_marker_box } >
+ { \box_wd:N \l__siunitx_angle_unit_box }
+ {
+ \__siunitx_angle_arc_print_auxvi:NN
+ \l__siunitx_angle_marker_box
+ \l__siunitx_angle_unit_box
+ }
+ {
+ \__siunitx_angle_arc_print_auxvi:NN
+ \l__siunitx_angle_unit_box
+ \l__siunitx_angle_marker_box
+ }
+ \hbox_set_to_wd:Nnn \l__siunitx_angle_marker_box
+ \l__siunitx_angle_tmp_dim
+ {
+ \hbox_overlap_right:n
+ { \box_use_drop:N \l__siunitx_angle_marker_box }
+ \hbox_overlap_right:n
+ { \box_use_drop:N \l__siunitx_angle_unit_box }
+ \tex_hfil:D
+ }
+ \box_use:N \l__siunitx_angle_marker_box
+ \skip_horizontal:N \scriptspace
+ \siunitx_print_number:n {#1#2}% decimal part of angle
+ }
+ }% lwarp: latex image
+ {% lwarp: not latex iamge
+ \tl_if_blank:nTF {#1}% decimal part of angle
+ {
+ \siunitx_print_number:n {#2}%
+ \__siunitx_angle_arc_print_auxix:n {#5}% deg/min/sec char
+ }
+ {
+ \__siunitx_angle_arc_print_auxv:n
+ { \siunitx_print_number:n {#4} }% decimal point char
+ \__siunitx_angle_arc_print_auxv:n
+ {
+ \siunitx_unit_format:nN {#5} \l__siunitx_angle_tmp_tl% deg/min/sec char
+ \siunitx_print_unit:V \l__siunitx_angle_tmp_tl
+ }
+ \siunitx_print_number:n {#1#2}% decimal part of angle
+ }
+ }% lwarp: not latex image
+ }
+\VerifyCommand[lwarp][siunitx]{\__siunitx_angle_arc_print_auxix:n}
+ {603807F80B4E40084CC07396DBC89FC1}
+
+\cs_set_protected:Npn \__siunitx_angle_arc_print_auxix:n #1
+ {
+ \group_begin:
+ \siunitx_unit_options_apply:n {#1}
+ \keys_set:nn { siunitx }{quantity-product={}}% lwarp
+ \siunitx_unit_format:nN {#1} \l__siunitx_angle_tmp_tl
+ \siunitx_quantity_print:nV { } \l__siunitx_angle_tmp_tl
+ \group_end:
}
\VerifyCommand[lwarp][siunitx]{\__siunitx_print_text_fraction:Nnn}
{F47521F256C661719258012969E7AE04}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-skmath.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-skmath.sty
index 2dc7eb4f89c..ece6a4fb4ce 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-skmath.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-skmath.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `skmath')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{skmath}[2019/10/15]
\begin{warpMathJax}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-slantsc.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-slantsc.sty
index da7f1eab605..dbf23587a67 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-slantsc.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-slantsc.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `slantsc')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{slantsc}[2012/01/01]
\newcommand*{\LWR@HTML@noscshape}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-slashed.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-slashed.sty
index dab213a6fd1..0fedc1472b4 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-slashed.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-slashed.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `slashed')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{slashed}[1997/01/16]
\begin{warpMathJax}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-soul.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-soul.sty
index 1a8a95c1cb8..ea0f2e3277a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-soul.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-soul.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `soul')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{soul}[2003/11/17]
\RequirePackage{xcolor}% for \convertcolorspec
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-soulpos.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-soulpos.sty
index 9dafb9420bd..f2090489d51 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-soulpos.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-soulpos.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `soulpos')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\RequirePackage{soul}
\RequirePackage{soulutf8}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-soulutf8.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-soulutf8.sty
index af258910048..b5880dcf839 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-soulutf8.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-soulutf8.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `soulutf8')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{soulutf8}[2016/05/16]
\RequirePackage{soul}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-splitbib.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-splitbib.sty
index b48d499c9aa..8c34785a87f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-splitbib.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-splitbib.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `splitbib')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{splitbib}[2005/12/22]
\def\NMSB@stylebox#1#2{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-splitidx.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-splitidx.sty
index 2f0e4fd7dd9..c5c9bcb5ae9 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-splitidx.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-splitidx.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `splitidx')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{splitidx}[2016/02/18]
\VerifyCommand[lwarp][splitidx]{\newindex}{84695DF9965D5007036BA0B4023C59B5}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-srcltx.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-srcltx.sty
index fbac728419d..05648c7b20d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-srcltx.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-srcltx.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `srcltx')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{srcltx}[2006/11/12]
\newif\ifSRCOK \SRCOKfalse
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-srctex.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-srctex.sty
index 144ac4c3547..3e007918e5d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-srctex.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-srctex.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `srctex')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{srctex}[2006/11/12]
\LWR@origRequirePackage{lwarp-srcltx}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-stabular.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-stabular.sty
index 8a88471a9d0..c5876186f9d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-stabular.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-stabular.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `stabular')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{stabular}[2014/03/20]
\newenvironment{stabular}[2][c]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-stackengine.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-stackengine.sty
index e1466402747..9c30111d1a6 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-stackengine.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-stackengine.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `stackengine')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,13 +15,14 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{stackengine}[2017/02/13]
\LetLtxMacro\LWR@orig@stackengine\stackengine
\renewcommand*{\stackengine}[8]{%
\ifstrequal{#4}{O}%
- {\begin{lateximage}[\ImageAltText]}%
- {\begin{lateximage}[\ImageAltText][][vertical-align:top]}%
+ {\begin{lateximage}[\ImageAltText]?}%
+ {\begin{lateximage}[\ImageAltText]?[][vertical-align:top]}%
\LWR@orig@stackengine{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}%
\end{lateximage}%
}
@@ -33,8 +34,8 @@
\renewcommand*{\@stack}[4]{%
\ifstrequal{#3}{O}%
- {\begin{lateximage}[\ImageAltText]}%
- {\begin{lateximage}[\ImageAltText][][vertical-align:top]}%
+ {\begin{lateximage}[\ImageAltText]?}%
+ {\begin{lateximage}[\ImageAltText]?[][vertical-align:top]}%
\LWR@orig@@stack{#1}{#2}{#3}{#4}%
\end{lateximage}%
}
@@ -49,7 +50,7 @@
{\LWR@patcherror{stackengine}{stackanchor patch 2}}
\xpretocmd{\stackanchor}
- {\begin{lateximage}[\ImageAltText][][vertical-align:middle]}
+ {\begin{lateximage}[\ImageAltText]?[][vertical-align:middle]}%
{}
{\LWR@patcherror{stackengine}{stackanchor pre}}
@@ -57,7 +58,7 @@
{}
{\LWR@patcherror{stackengine}{stackanchor app}}
\xpretocmd{\Centerstack}
- {\begin{lateximage}[\ImageAltText][][vertical-align:middle]}
+ {\begin{lateximage}[\ImageAltText]?[][vertical-align:middle]}%
{}
{\LWR@patcherror{stackengine}{Centerstack pre}}
@@ -73,7 +74,7 @@
}{}%
\begingroup% lwarp
\LWR@restoreorigformatting% lwarp
- \RenewDocumentEnvironment{lateximage}{s o s o o d()}{}{}% lwarp: inside group
+ \RenewDocumentEnvironment{lateximage}{s o s t? o o d()}{}{}% lwarp: inside group
\expandafter\LWR@gsavebox\csname\sv@name content\endcsname{#2}%
\expandafter\gdef\expandafter#1\expandafter{%
\expandafter\begin\expandafter{lateximage\expandafter}% lwarp
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-stackrel.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-stackrel.sty
index a9f96a9c678..3045b2f9188 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-stackrel.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-stackrel.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `stackrel')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{stackrel}[2016/05/16]
\begin{warpMathJax}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-statex2.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-statex2.sty
index f2b71d57ca4..052b9737c69 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-statex2.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-statex2.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `statex2')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{statex2}[2011/09/14]
\newcommand*{\LWR@HTML@Alpha}[1][]{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-statistics.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-statistics.sty
index d08ae763242..9a13fe8c576 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-statistics.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-statistics.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `statistics')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{statistics}[2019/09/29]
\ExplSyntaxOn
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-statmath.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-statmath.sty
index cf9c76bd500..c309ca47030 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-statmath.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-statmath.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `statmath')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{statmath}[2018/03/08]
\LWR@origRequirePackage{lwarp-common-mathjax-letters}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-steinmetz.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-steinmetz.sty
index 434c5f7d914..bbf703d7e6c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-steinmetz.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-steinmetz.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `steinmetz')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,10 +15,11 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{steinmetz}[2009/06/14]
\renewcommand{\phase}[2][]{%
- \begin{lateximage}*[steinmetz\{\detokenize{#2}\}]
+ \begin{lateximage}*[steinmetz\{\detokenize{#2}\}]?%
\ensuremath{\underline{/#2}}
\end{lateximage}
}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-stfloats.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-stfloats.sty
index d28058417b0..fea5eb96b79 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-stfloats.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-stfloats.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `stfloats')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{stfloats}[2017/03/27]
\providecommand*{\fnbelowfloat}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-struktex.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-struktex.sty
index 023e56a4add..f4992aa6496 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-struktex.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-struktex.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `struktex')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,10 +15,11 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{struktex}
\BeforeBeginEnvironment{struktogramm}{%
- \begin{lateximage}[-struktex-~\PackageDiagramAltText]%
+ \begin{lateximage}[-struktex-~\PackageDiagramAltText]?%
}
\AfterEndEnvironment{struktogramm}{\end{lateximage}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-subcaption.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-subcaption.sty
index b2c3990da02..f39fd4ed69e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-subcaption.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-subcaption.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `subcaption')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{subcaption}[2018/05/01]
\xpretocmd{\subcaption@iiminipage}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-subfig.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-subfig.sty
index e60e875d5b3..f45144e1f3b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-subfig.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-subfig.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `subfig')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{subfig}[2005/06/28]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-subfigure.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-subfigure.sty
index 8f2eab6a25f..a0d53c7f1c8 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-subfigure.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-subfigure.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `subfigure')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{subfigure}[2002/03/15]
\RequirePackage{subfig}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-subsupscripts.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-subsupscripts.sty
index 06980dab82d..b5126267f7e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-subsupscripts.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-subsupscripts.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `subsupscripts')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{subsupscripts}[2009/10/27]
\begin{warpMathJax}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-supertabular.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-supertabular.sty
index bc65430b4c3..1a4fb694192 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-supertabular.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-supertabular.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `supertabular')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-svg.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-svg.sty
index 6586c03f33f..8532112d45d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-svg.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-svg.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `svg')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{svg}[2020/10/23]
\xpretocmd{\includesvg}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-swfigure.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-swfigure.sty
index 752fce7715a..0b5220f7703 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-swfigure.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-swfigure.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `swfigure')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{swfigure}[2020-11-10]
\NewDocumentEnvironment{DFimage}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-sympytex.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-sympytex.sty
index 628310d5073..42abce1aa55 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-sympytex.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-sympytex.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `sympytex')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{sympytex}[2014/05/16]
\AfterEndPreamble{
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-syntonly.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-syntonly.sty
index d745fd24eaf..7533b1d5849 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-syntonly.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-syntonly.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `syntonly')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{syntonly}[2017/06/30]
\newif\ifsyntax@
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tabfigures.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tabfigures.sty
index 22a28adf6e7..b0e8d62b3f1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tabfigures.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tabfigures.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tabfigures')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{tabfigures}[2012/01/24]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tablefootnote.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tablefootnote.sty
index 3686fb3c743..9c2cab1069c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tablefootnote.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tablefootnote.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tablefootnote')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{tablefootnote}[2014/01/26]
\LetLtxMacro\tablefootnote\footnote
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tabls.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tabls.sty
index ecffdcc3137..806a3e236b1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tabls.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tabls.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tabls')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{tabls}
\newdimen\tablinesep
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tabularx.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tabularx.sty
index 8ecca14a082..b24f8b12e97 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tabularx.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tabularx.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tabularx')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tabulary.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tabulary.sty
index ed1abcea10b..2f79cc84a6b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tabulary.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tabulary.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tabulary')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf-base.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf-base.sty
index 42a2b149fda..48542a67eeb 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf-base.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf-base.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tagpdf-base')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,16 +15,18 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{tagpdf-base}[2022-08-24]
\ExplSyntaxOn
\newcommand*{\LWR@tagpdf@deactivate}{
\keys_set:nn { __tag / setup } {
- activate-space = false ,
- activate-mc = false ,
- activate-tree = false ,
- activate-struct = false
+ activate/spaces = false ,
+ activate/mc = false ,
+ activate/tree = false ,
+ activate/struct = false ,
+ activate/struct-dest = false
}
}
@@ -33,33 +35,24 @@
\LWR@tagpdf@deactivate
}
-\RenewDocumentCommand \tagmcbegin { m }
- {
- \keys_set:nn { __tag / mc } {#1}
- }
+\cs_set_protected:Npn \__tag_whatsits: {}% *88* new
+
+%% \tag_mc_begin:n {#1}
-\RenewDocumentCommand \tagmcend { }
- {
+%% \tag_mc_end:
+\cs_set_protected:Nn \tag_mc_end:{% *8* probably not needed because whatsits disabled above
\ThisAltText{}% lwarp
- }
+}
-\RenewDocumentCommand \tagmcuse { m }
- {
- }
+%% \tag_mc_use:n {#1}
-\RenewDocumentCommand \tagstructbegin { m }
- {
- \keys_set:nn { __tag / struct} { #1 }% lwarp
- }
+%% *88* \keys_set:nn { __tag / struct} { #1 }% lwarp
-\RenewDocumentCommand \tagstructend { }
- {
+%% \tag_struct_end:
+\cs_set_protected:Npn \tag_struct_end:{% *88* maybe not needed
\ThisAltText{}% lwarp
- }
+}
-\RenewDocumentCommand \tagstructuse { m }
- {
- }
\ExplSyntaxOff
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf-mc-code-generic.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf-mc-code-generic.sty
index 3ae8b913642..a5738355912 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf-mc-code-generic.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf-mc-code-generic.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tagpdf-mc-code-generic')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,16 +15,32 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{tagpdf-mc-code-generic}[2022-08-24]
\ExplSyntaxOn
\keys_define:nn { __tag / mc }
{
+ tag .code:n = % the name (H,P,Span) etc
+ {
+ },
+ raw .code:n =
+ {
+ },
alt .code:n = % Alt property
{
\gdef\LWR@ThisAltText{\detokenize\expandafter{#1}}% lwarp
},
+ alttext .meta:n = {alt=#1},
+ actualtext .code:n = % ActualText property
+ {
+ },
+ label .tl_set:N = \l__tag_mc_key_label_tl,
+ artifact .code:n =
+ {
+ },
+ artifact .default:n = {notype}
}
\ExplSyntaxOff
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf-mc-code-lua.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf-mc-code-lua.sty
index 5a83e7d070f..80064d7f268 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf-mc-code-lua.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf-mc-code-lua.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tagpdf-mc-code-lua')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,16 +15,37 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{tagpdf-mc-code-lua}[2022-08-24]
\ExplSyntaxOn
\keys_define:nn { __tag / mc }
{
+ tag .code:n = %
+ {
+ },
+ raw .code:n =
+ {
+ },
alt .code:n = % Alt property
{
\gdef\LWR@ThisAltText{\detokenize\expandafter{#1}}% lwarp
},
+ alttext .meta:n = {alt=#1},
+ actualtext .code:n = % Alt property
+ {
+ },
+ label .code:n =
+ {
+ },
+ __artifact-store .code:n =
+ {
+ },
+ artifact .code:n =
+ {
+ },
+ artifact .default:n = { notype }
}
\ExplSyntaxOff
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf.sty
index caf6224a130..5c5aa96cf75 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tagpdf.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tagpdf')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,7 +15,9 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
+\RequirePackage{tagpdf-base}% *88*
\LWR@ProvidesPackagePass{tagpdf}[2022-08-24]
\ExplSyntaxOn
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tascmac.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tascmac.sty
index 5a3003cc9a3..3ee34967b69 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tascmac.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tascmac.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tascmac')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{tascmac}[2018/03/09]
\newenvironment*{boxnote}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tcolorbox.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tcolorbox.sty
index 9d8e51f517a..4df7764ccad 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tcolorbox.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tcolorbox.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tcolorbox')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{tcolorbox}[2023/06/19]
\newbool{LWR@havetcblower}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tensor.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tensor.sty
index 688518dabc3..d0aad3ad62b 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tensor.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tensor.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tensor')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{tensor}[2004/12/20]
\begin{warpMathJax}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-termcal.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-termcal.sty
index 73a670f0f56..c2b33c2553f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-termcal.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-termcal.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `termcal')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{termcal}% questionable date in the .sty file
\xpatchcmd{\endcalendar}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-textarea.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-textarea.sty
index d9b764e6a2f..d5adc3af6c1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-textarea.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-textarea.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `textarea')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{textarea}[2005/12/26]
\newcommand\StartFromTextArea{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-textcomp.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-textcomp.sty
index 3b517e286dd..286c74216be 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-textcomp.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-textcomp.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `textcomp')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-textfit.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-textfit.sty
index d340354fa1f..af8ae37870c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-textfit.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-textfit.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `textfit')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{textfit}[1994/04/15]
\newsavebox{\LWR@textfitbox}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-textpos.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-textpos.sty
index fcc0706854c..883b22376cf 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-textpos.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-textpos.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `textpos')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-theorem.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-theorem.sty
index fc7e9a043b8..c64982de644 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-theorem.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-theorem.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `theorem')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{theorem}[2023/07/05]
@@ -182,6 +183,8 @@
{\@ythm{#1}{#2}}%
{\@begintheorem{#2}{\csname the#1\endcsname}\ignorespaces}}
+\VerifyCommand[lwarp][theorem]{\@endtheorem}
+ {9798301819F2CA2E46673F8937BABE99}
\gdef\@endtheorem{%
\endtrivlist
\LWR@printpendingfootnotes% lwarp
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-thinsp.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-thinsp.sty
index 8b614ad5ab4..84ec106e5bf 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-thinsp.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-thinsp.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `thinsp')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{thinsp}[2016/10/02]
\AtBeginDocument{
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-listof.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-listof.sty
index e2c6db6b835..db056ae74dd 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-listof.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-listof.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `thm-listof')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{thm-listof}[2019/12/22]
\IfPackageAtLeastTF{thm-listof}{2020/08/01}{% v0.72
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-restate.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-restate.sty
index 9688a3eff03..a57ad05bf1d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-restate.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-restate.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `thm-restate')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{thm-restate}[2020/08/01]
\VerifyCommand[lwarp][thm-restate]{\thmt@restatable}{C912622BBA051C5F22994335F66976AB}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-thmbox.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-thmbox.sty
index fac0ff145bb..30a532d569c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-thmbox.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-thmbox.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `thmbox')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{thmbox}[2005/04/24]
\renewenvironment{thmbox}[2][]%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-thmtools.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-thmtools.sty
index cdf42efe2ce..fc24a7e501d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-thmtools.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-thmtools.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `thmtools')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{thmtools}[2020/08/01]
\def\thmt@headstyle@margin{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-threadcol.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-threadcol.sty
index a840853ccf1..47d70aba27a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-threadcol.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-threadcol.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `threadcol')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{threadcol}[2013/01/06]
\newcommand{\setthreadname}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-threeparttable.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-threeparttable.sty
index bbcf0a1f546..f59c6985f51 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-threeparttable.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-threeparttable.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `threeparttable')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-threeparttablex.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-threeparttablex.sty
index 7bcad923dbf..d8d618f5ccc 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-threeparttablex.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-threeparttablex.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `threeparttablex')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{threeparttablex}[2013/07/23]
\renewcommand\insertTableNotes{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-thumb.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-thumb.sty
index 89516f8715a..0c3d029daf5 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-thumb.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-thumb.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `thumb')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{thumb}[1997/12/24]
\newcommand*{\Overviewpage}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-thumbs.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-thumbs.sty
index 6894fd9e04e..ceada60c598 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-thumbs.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-thumbs.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `thumbs')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{thumbs}[2014/03/09]
\newcommand{\addthumb}[4]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tikz-imagelabels.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tikz-imagelabels.sty
index f65278787f4..d5c6348fca9 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tikz-imagelabels.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tikz-imagelabels.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tikz-imagelabels')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,10 +15,11 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{tikz-imagelabels}[2019/06/27]
\BeforeBeginEnvironment{annotationimage}{%
- \begin{lateximage}[-tikz-imagelabels-~\PackageDiagramAltText]%
+ \begin{lateximage}[-tikz-imagelabels-~\PackageDiagramAltText]?%
}
\AfterEndEnvironment{annotationimage}{\end{lateximage}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tikz.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tikz.sty
index ffa8d363f45..0398956bd9d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tikz.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tikz.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tikz')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{tikz}[2015/08/07]
@@ -27,7 +28,7 @@
{\boolfalse{LWR@tikzbabel}}
\preto\pgfpicture{%
- \begin{lateximage}[-tikz-~\PackageDiagramAltText]%
+ \begin{lateximage}[-tikz-~\PackageDiagramAltText]?%
\ifbool{LWR@tikzbabel}% Test for Tikz version v3.0.0
{}%
{\catcode`\$=3}% dollar sign is math shift
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-titleps.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-titleps.sty
index f9ef4eef367..a10141707e0 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-titleps.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-titleps.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `titleps')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-titleref.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-titleref.sty
index ad438676bdf..27965de9978 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-titleref.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-titleref.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `titleref')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{titleref}[2001/04/05]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-titlesec.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-titlesec.sty
index f97191464f4..5e107372d4f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-titlesec.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-titlesec.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `titlesec')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-titletoc.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-titletoc.sty
index a6db0cbe279..8ebec0ad676 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-titletoc.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-titletoc.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `titletoc')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-titling.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-titling.sty
index 59116b06d09..f84731216c6 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-titling.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-titling.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `titling')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tocbasic.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tocbasic.sty
index 817ad180b91..52c99330f36 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tocbasic.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tocbasic.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tocbasic')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{tocbasic}[2018/12/30]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tocbibind.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tocbibind.sty
index 01743997142..216511e9526 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tocbibind.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tocbibind.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tocbibind')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\let\simplechapterdelim\relax
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tocdata.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tocdata.sty
index eaa3c5ee3dc..ffe547e3bb5 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tocdata.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tocdata.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tocdata')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{tocdata}[2019/07/06]
\renewcommand*{\LWR@maybetocdata}{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tocenter.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tocenter.sty
index f47c016ab73..cba64d335e1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tocenter.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tocenter.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tocenter')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{tocenter}[2004/12/09]
\NewDocumentCommand{\ToCenter}{s o m m}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tocloft.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tocloft.sty
index 2bf56023141..b2fe521fd67 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tocloft.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tocloft.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tocloft')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tocstyle.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tocstyle.sty
index 138eb10de75..b8a3b39059a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tocstyle.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tocstyle.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tocstyle')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{tocstyle}[2017/02/23]
\newcommand*{\usetocstyle}[2][]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-todo.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-todo.sty
index 6c42cafbd7f..b5c055ac4aa 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-todo.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-todo.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `todo')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{todo}[2010/03/31]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-todonotes.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-todonotes.sty
index 0fe25ef835d..e10cee58f62 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-todonotes.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-todonotes.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `todonotes')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{todonotes}[2012/07/25]
\if@todonotes@disabled
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-topcapt.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-topcapt.sty
index e1a47e66859..0ba2490e243 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-topcapt.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-topcapt.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `topcapt')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{topcapt}[2004/12/11]
\LetLtxMacro\topcaption\caption
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tram.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tram.sty
index 5d6626bccc7..411e7d67510 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-tram.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tram.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `tram')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{tram}[2013/04/04]
\newenvironment{tram}[1][]%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-transparent.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-transparent.sty
index 0d6fcff259b..b7753d6a8d8 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-transparent.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-transparent.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `transparent')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{transparent}[2019/11/29]
\newcommand*{\LWR@HTML@transparent}[1]{\edef\LWR@opacity{#1}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-trimclip.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-trimclip.sty
index 8e9d3698ee2..a595e91e54e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-trimclip.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-trimclip.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `trimclip')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{trimclip}[2018/04/08]
\csdef{trimbox}{\@ifstar\@gobble\@gobble}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-trivfloat.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-trivfloat.sty
index 111fee7bf1a..f0f0e62e5b2 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-trivfloat.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-trivfloat.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `trivfloat')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-truncate.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-truncate.sty
index 284f57a0d11..3f7a19afd11 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-truncate.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-truncate.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `truncate')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{truncate}[2001/08/20]
\providecommand{\TruncateMarker}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-turnthepage.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-turnthepage.sty
index 34dfa3ab106..688fba8016f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-turnthepage.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-turnthepage.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `turnthepage')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{turnthepage}[2011/03/24]
\newcommand{\turnthepage}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-twoup.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-twoup.sty
index 9cab4c454e3..ea60f632d09 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-twoup.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-twoup.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `twoup')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{twoup}[2007/02/26]
\newcommand{\cleartolastpage}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-txfonts.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-txfonts.sty
index 793f0397778..19a4389e4e1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-txfonts.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-txfonts.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `txfonts')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{txfonts}[2008/01/22]
\LWR@origRequirePackage{lwarp-common-mathjax-letters}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-txgreeks.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-txgreeks.sty
index e26ed823aad..40d2ec22c2f 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-txgreeks.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-txgreeks.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `txgreeks')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{txgreeks}[2011/03/16]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-typearea.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-typearea.sty
index 8e92d42d42e..9bf05fe3cdd 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-typearea.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-typearea.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `typearea')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{typearea}[2018/03/30]
\DeclareDocumentCommand{\typearea}{o m}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-typicons.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-typicons.sty
index 1ce12b18eaa..cddf15c04ab 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-typicons.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-typicons.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `typicons')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{typicons}[2015/05/20]
\LetLtxMacro\LWR@orig@symbol\symbol
@@ -36,7 +37,7 @@
\renewcommand*{\ticon}[1]
{%
- \begin{lateximage}*[#1 icon][typicon#1]%
+ \begin{lateximage}*[#1 icon]?[typicon#1]%
\TI\csname ticon@#1\endcsname%
\end{lateximage}%
}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ulem.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ulem.sty
index 7ea8e346ece..a8991cc899e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ulem.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ulem.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ulem')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{ulem}[2012/05/18]
\NewDocumentCommand{\LWR@HTML@uline}{+m}{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-umoline.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-umoline.sty
index 9fe191c0166..1fde738f030 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-umoline.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-umoline.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `umoline')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{umoline}[2000/07/11]
\newcommand*{\LWR@HTML@Underline}[1]{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-underscore.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-underscore.sty
index 92db1d30963..bb2abdef6da 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-underscore.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-underscore.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `underscore')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{underscore}[2006/09/13]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-unicode-math.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-unicode-math.sty
index 3beb1fce0d3..b53e91e9e61 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-unicode-math.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-unicode-math.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `unicode-math')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{unicode-math}[2019/09/26]
\LWR@origRequirePackage{lwarp-common-mathjax-letters}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-units.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-units.sty
index 2a376ef9104..7e0e0d0c458 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-units.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-units.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `units')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{units}[1998/08/04]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-unitsdef.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-unitsdef.sty
index 7e74e7948b3..22a44739152 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-unitsdef.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-unitsdef.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `unitsdef')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{unitsdef}[2005/01/04]
\newcommand{\LWR@HTML@unitvaluesep}{\,}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-upgreek.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-upgreek.sty
index 625dfd43fc8..633276ffc07 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-upgreek.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-upgreek.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `upgreek')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{upgreek}[2003/02/12]
\begin{warpMathJax}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-upref.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-upref.sty
index a065fec80fb..4939d9396c0 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-upref.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-upref.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `upref')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{upref}[2007/03/14]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-url.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-url.sty
index f01f2bc98c0..9fe25824218 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-url.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-url.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `url')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LetLtxMacro\LWR@url@orig@url\LWR@url
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ushort.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ushort.sty
index 3332d1238c2..252f90d8eff 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ushort.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ushort.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `ushort')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{ushort}[2001/06/13]
\begin{warpMathJax}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-uspace.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-uspace.sty
index 5d93ab045ec..c9cabe5833a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-uspace.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-uspace.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `uspace')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{uspace}[2016/11/06]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-varioref.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-varioref.sty
index 2f49dd5a10d..ad01dd31f40 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-varioref.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-varioref.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `varioref')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{varioref}[2020/01/23]
\def\reftextfaceafter {\unskip}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-verse.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-verse.sty
index db1d1f3a1c3..b1412cbf0df 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-verse.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-verse.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `verse')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{verse}[2009/09/04]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-versonotes.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-versonotes.sty
index 3f0c0681279..522698c610a 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-versonotes.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-versonotes.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `versonotes')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{versonotes}[2019/07/06]
\newcommand{\versonote}[1]{\marginpar{#1}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-vertbars.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-vertbars.sty
index 5dbc5ecf4d3..251695c4291 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-vertbars.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-vertbars.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `vertbars')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{vertbars}[2010/11/27]
\newlength{\barwidth}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-vmargin.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-vmargin.sty
index 4780b7c740d..1e1d6e11b60 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-vmargin.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-vmargin.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `vmargin')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{vmargin}[2004/07/15]
\newcommand*{\LWRVM@customsize}[2]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-vowel.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-vowel.sty
index a23a8c46288..4651d3bdaa7 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-vowel.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-vowel.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `vowel')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,13 +15,14 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{vowel}[2002/08/08]
\renewenvironment{vowel}[1][]
{%
- \begin{lateximage}[-vowel-~\PackageDiagramAltText]%
+ \begin{lateximage}[-vowel-~\PackageDiagramAltText]?%
\@vowel[#1]%
}
{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-vpe.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-vpe.sty
index c58647e0047..1a91fb54530 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-vpe.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-vpe.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `vpe')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{vpe}[2012/04/18]
\endinput
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-vwcol.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-vwcol.sty
index 0247a68eb44..dba3deb7ab5 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-vwcol.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-vwcol.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `vwcol')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{vwcol}[2015/02/10]
\newcommand*{\LWR@vwcol@addrule}[1]{%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-wallpaper.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-wallpaper.sty
index e4d94680986..6c219204cfe 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-wallpaper.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-wallpaper.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `wallpaper')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-watermark.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-watermark.sty
index a8349ad253b..6275789ef10 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-watermark.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-watermark.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `watermark')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{watermark}[2004/12/09]
\newcommand{\watermark}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-widetable.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-widetable.sty
index 8352d4745a2..f2cd2a12c11 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-widetable.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-widetable.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `widetable')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{widetable}[2019-06-25]
\newenvironment{widetable}{\begin{tabular*}}{\end{tabular*}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-widows-and-orphans.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-widows-and-orphans.sty
index a0629b3e089..7f66254c524 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-widows-and-orphans.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-widows-and-orphans.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `widows-and-orphans')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{widows-and-orphans}[2018/09/01]
\NewDocumentCommand\WaOsetup{m}{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-witharrows.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-witharrows.sty
index 5e2669efd9d..b778c2fb9b3 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-witharrows.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-witharrows.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `witharrows')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,13 +15,13 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
-\LWR@ProvidesPackagePass{witharrows}[2019/12/27]
+\LWR@ProvidesPackagePass{witharrows}[2024/10/19]
\ifbool{mathjax}{
- % For the hidden print version in the HTML:
\newcommand{\Arrow}[2][]{}
\newcommand{\unicode}[1]{}
- \NewDocumentEnvironment { DispWithArrows } { ! d < > ! O { } +b}
+ \NewDocumentEnvironment { LWR@HTML@DispWithArrows } { ! d < > ! O { } +b}
{
\IfValueTF{#1}{
\begin{displaymath}
@@ -40,7 +40,8 @@
}
}
{}
- \NewDocumentEnvironment { DispWithArrows* } { ! d < > ! O { } +b}
+ \LWR@formattedenv{DispWithArrows}
+ \NewDocumentEnvironment { LWR@HTML@DispWithArrows* } { ! d < > ! O { } +b}
{
\IfValueTF{#1}{
\begin{displaymath}
@@ -59,8 +60,9 @@
}
}
{}
-}{
- % If not MathJax, use SVG images.
+ \LWR@formattedenv{DispWithArrows*}
+}% MathJax
+{% SVG
\BeforeBeginEnvironment{WithArrows}{\global\booltrue{LWR@unknownmathsize}}
\BeforeBeginEnvironment{DispWithArrows}{%
\begin{BlockClass}{displaymathnumbered}%
@@ -72,8 +74,7 @@
\begin{lateximage}%
}
\AfterEndEnvironment{DispWithArrows*}{\end{lateximage}\end{BlockClass}}
-}
-
+}% SVG
\begin{warpMathJax}
\CustomizeMathJax{\newenvironment{WithArrows}[1][]{\begin{aligned}}{\end{aligned}}}
\CustomizeMathJax{\newcommand{\Arrow}[2][]{&{\Large\unicode{x2938}}~\textit{#2}}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-wrapfig.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-wrapfig.sty
index 3c4f6ce5b0b..929dd85cc7c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-wrapfig.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-wrapfig.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `wrapfig')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-wrapfig2.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-wrapfig2.sty
index f65567fa7ea..205f659b9d9 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-wrapfig2.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-wrapfig2.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `wrapfig2')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xbmks.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xbmks.sty
index 508e73f0a36..f85bc7106e2 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xbmks.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xbmks.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xbmks')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{xbmks}[2018/07/04]
\newcommand{\xbmksetup}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xcolor.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xcolor.sty
index 844fe5e0e73..dd289a275c5 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xcolor.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xcolor.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xcolor')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,10 +15,11 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
-\LWR@ProvidesPackagePass{xcolor}[2016/05/11]
+\LWR@ProvidesPackagePass{xcolor}[2023-11-15]
\let\color@endgroup\endgroup
@@ -38,13 +39,6 @@
\protect\convertcolorspec{named}{LWR@current@color}{HTML}\LWR@tempcolor\relax%
\LWR@traceinfo{LWR@findcurrenttextcolor: done}%
}
-
-\newcommand*{\LWR@currenttextcolorstyle}{%
- \LWR@findcurrenttextcolor%
- \ifdefstring{\LWR@tempcolor}{000000}%
- {}%
- {color: \LWR@origpound\LWR@tempcolor ; }%
-}
\DeclareDocumentCommand{\LWR@textcurrentcolor}{m}{%
\begingroup%
\LWR@hook@processingtags%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xechangebar.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xechangebar.sty
index 0667caf4d96..18dadbc6879 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xechangebar.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xechangebar.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xechangebar')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{xechangebar}[2017/08/03]
\LWR@origRequirePackage{lwarp-changebar}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xellipsis.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xellipsis.sty
index 90d146c5164..f2ee668a9c9 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xellipsis.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xellipsis.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xellipsis')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{xellipsis}[2015/11/01]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xetexko.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xetexko.sty
index c048cf71c5c..cf5e285503e 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xetexko.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xetexko.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xetexko')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@loadbefore{xetexko}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xevlna.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xevlna.sty
index 364728156bb..88ea66c19ea 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xevlna.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xevlna.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xevlna')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{xevlna}[2016/09/05]
\def\ProcessCSpreposition{\ifx\next\xevlnaXeTeXspace\HTMLentity{nbsp}\fi}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xfakebold.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xfakebold.sty
index 9d2c46f308e..ca26e27b8b5 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xfakebold.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xfakebold.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xfakebold')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{xfakebold}[2020/06/24]
\newcommand*{\LWR@HTML@setBold}{\booltrue{LWR@xfakebold}}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xfrac.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xfrac.sty
index cb62a293363..a6b21d52840 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xfrac.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xfrac.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xfrac')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xltabular.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xltabular.sty
index 8b025456c87..8c1d4694a27 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xltabular.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xltabular.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xltabular')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xltxtra.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xltxtra.sty
index db6ef4b328f..eb87f35043c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xltxtra.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xltxtra.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xltxtra')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{xltxtra}[2016/01/21]
\RequirePackage{realscripts}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xmpincl.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xmpincl.sty
index dd0e3884bb2..e39e97b10dd 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xmpincl.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xmpincl.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xmpincl')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{xmpincl}[2008/05/10]
\newcommand*{\includexmp}[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xpiano.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xpiano.sty
index 4a77671ebfa..6d26a5baafc 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xpiano.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xpiano.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xpiano')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{xpiano}
@@ -30,7 +31,7 @@
\begin{lateximage}*
[%
-xpiano-~\PackageDiagramAltText{}: \detokenize\expandafter{#2}%
- ]
+ ]?%
[\detokenize\expandafter{#1}]
\xpiano_keyboard:nn { #1 } { #2 }
\end{lateximage}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xpinyin.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xpinyin.sty
index 799d5985afb..3524e879f95 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xpinyin.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xpinyin.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xpinyin')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{xpinyin}[2019-04-07]
\ExplSyntaxOn
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xr-hyper.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xr-hyper.sty
index a47bd44d6dd..481d127714d 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xr-hyper.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xr-hyper.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xr-hyper')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{xr-hyper}[2019/10/03]%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xr.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xr.sty
index 1ccc157edef..65fe648deaa 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xr.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xr.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xr')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,17 +15,11 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
-\LWR@ProvidesPackagePass{xr}[2019/07/22]%
-\LetLtxMacro\LWR@orig@externaldocument\externaldocument
-
-\RenewDocumentCommand{\externaldocument}{O{} O{} m O{}}{%
- \ifblank{#1}{%
- \LWR@orig@externaldocument{#3_html}%
- }{%
- \LWR@orig@externaldocument[#1]{#3_html}%
- }%
-}
+\LWR@ProvidesPackagePass{xr}[2024-04-10]%
+\VerifyCommand{\XR@}{56D2754CF8EDBB8863B603F708D65CE9}
+\def\XR@[#1][#2]#3{\@testopt{\XR@@{#1}{#2}{#3_html}}{#3_html.\XR@ext}}
\endinput
%%
%% End of file `lwarp-xr.sty'.
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xtab.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xtab.sty
index 929efe2cd12..992bb6c2480 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xtab.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xtab.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xtab')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xunicode.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xunicode.sty
index 614c3bc691b..e880ec381b1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xunicode.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xunicode.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xunicode')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@loadbefore{xunicode}%
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xurl.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xurl.sty
index c4b16fff0e3..2bfbb90459c 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xurl.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xurl.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xurl')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{xurl}[2020/01/14]
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-xy.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-xy.sty
index 4a3f3e3de5f..32bca12fd77 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-xy.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-xy.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `xy')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackagePass{xy}[2013/10/06]
@@ -26,7 +27,7 @@
\renewcommand*{\xy}{%
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
{\addtocounter{LWR@lateximagedepth}{1}}%
- {\begin{lateximage}[-xy-~\PackageDiagramAltText]}%
+ {\begin{lateximage}[-xy-~\PackageDiagramAltText]?}%
\LWR@orig@xy%
}
@@ -46,7 +47,7 @@
\LetLtxMacro\LWR@origxygraph\xygraph
\renewcommand{\xygraph}[1]{%
- \begin{lateximage}[-xy- xygraph \PackageDiagramAltText]
+ \begin{lateximage}[-xy- xygraph \PackageDiagramAltText]?%
\LWR@origxygraph{#1}
\end{lateximage}
}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-zhlineskip.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-zhlineskip.sty
index 3c8fabaadc9..6a25854bebf 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-zhlineskip.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-zhlineskip.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `zhlineskip')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{zhlineskip}[2019/05/15]
\newcommand*\SetTextEnvironmentSinglespace[1]{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-zwpagelayout.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-zwpagelayout.sty
index f151ceb86a6..c539207ae61 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-zwpagelayout.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-zwpagelayout.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `zwpagelayout')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,6 +15,7 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\LWR@ProvidesPackageDrop{zwpagelayout}[2013/01/13]
\def\noBboxes{}
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp.sty
index 3aa12bd1b4d..2d4d2adc6ee 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp.sty
@@ -6,7 +6,7 @@
%%
%% lwarp.dtx (with options: `package')
%% This is a generated file.
-%% Copyright 2016-2022 Brian Dunn
+%% Copyright 2016-2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -17,7 +17,8 @@
%% version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{lwarp}
- [2024/02/22 v0.916 Allows LaTeX to directly produce HTML5 output.]
+ [2025/01/28 v0.918 Allows LaTeX to directly produce HTML5 output.]
+%%
@@ -27,6 +28,17 @@
+\NeedsTeXFormat{LaTeX2e}[2021/06/01]
+\IfPackageLoadedTF{tagpdf-base}% *88*
+ {%
+ \PackageError{lwarp}
+ {%
+ PDF tagging is not supported yet.\MessageBreak%
+ Comment out \string\DocumentMetadata\space for HTML%
+ }
+ {Still in development!}
+ }
+ {}
\RequirePackage{iftex}[2019/11/07]
\RequirePackage{ifpdf}
\RequirePackage{ifptex}% in case TL2019 or earlier
@@ -735,9 +747,6 @@
\LWR@loadafter{tablefootnote}
\LWR@notmemoirloadafter{tabularx}
\LWR@loadafter{tabulary}
-\LWR@loadafter{tagpdf}
-\LWR@loadafter{tagpdf-mc-code-generic}
-\LWR@loadafter{tagpdf-mc-code-lua}
\LWR@loadafter{tascmac}
\LWR@loadafter{tcolorbox}
\LWR@loadafter{tensor}
@@ -1478,7 +1487,7 @@
\begin{warpall}
-\RequirePackage{xparse}
+\IfFormatAtLeastTF{2020-10-01}{}{\RequirePackage{xparse}}
\RequirePackage{calc}
@@ -1626,7 +1635,7 @@
}%
}%
}%
- {%
+ {% lwarp-* file not found
\ifdefvoid{\LWR@parsedrequirepackagenames}{%
\edef\LWR@parsedrequirepackagenames{\LWR@strresulttwo}%
}{%
@@ -1848,11 +1857,11 @@
\newbool{LWR@tracinglwarp}
\newcommand{\tracinglwarp}{\booltrue{LWR@tracinglwarp}}
\newcommand{\LWR@traceinfo}[1]{%
-\ifbool{LWR@tracinglwarp}%
-{%
- \typeout{*** lwarp: #1}%
-}%
-{}%
+ \ifbool{LWR@tracinglwarp}%
+ {%
+ \typeout{*** lwarp: #1}%
+ }%
+ {}%
}
\newbool{HTMLDebugComments}
@@ -2026,7 +2035,9 @@
\renewcommand*{\LWR@tagsubsubsectionend}{/h5}
\renewcommand*{\LWR@tagparagraph}{h6}
\renewcommand*{\LWR@tagparagraphend}{/h6}
-\renewcommand*{\LWR@tagsubparagraph}{span class=\textquotedbl{}subparagraph\textquotedbl}
+\renewcommand*{\LWR@tagsubparagraph}{%
+ span class=\textquotedbl{}subparagraph\textquotedbl%
+}
\renewcommand*{\LWR@tagsubparagraphend}{/span}
}% WPTitleHeading
{% not WPTitleHeading, part and section starting at h1
@@ -2119,7 +2130,7 @@
\let\LWR@orignewline\newline
-\AtBeginDocument{% in case packages change definition
+\AtBeginDocument{% in case packages change definitions
\let\LWR@orig@trivlist\@trivlist
\let\LWR@origtrivlist\trivlist
\let\LWR@origendtrivlist\endtrivlist
@@ -2439,9 +2450,81 @@
\begin{filecontents*}[overwrite]{lwarp.css}
/*
CSS stylesheet for the LaTeX Lwarp package
- Copyright 2016-2022 Brian Dunn — BD Tech Concepts LLC
+ Copyright 2016-2025 Brian Dunn — BD Tech Concepts LLC
*/
+/* Page layout */
+
+div.sidetoccontainer {
+ font-family: "DejaVu Serif", "Bitstream Vera Serif",
+ "Lucida Bright", Georgia, serif;
+ float: left ;
+ width: 19%; /* room for border-right next to 80% main */
+ margin: 0pt 0em 3ex 0pt ;
+ border-right: 1px solid silver;
+ border-bottom: 1px solid silver;
+ background: #FAF7F4 ;
+ font-size:.9em ;
+ border-radius: 0px 0px 20px 0px ;
+ max-height: 100vh ;
+ overflow-y: auto ;
+}
+
+div.sidetoccontents {
+ overflow-y: auto ;
+ width: 100% ;
+ text-align: left ;
+}
+
+nav.sidetoc p {line-height:1.2 ; margin: 1ex .5em 1ex .5em ;
+ text-indent: 0 ; }
+
+nav.sidetoc p a {color:black ; font-size: .7em ;}
+
+div.sidetoctitle {font-size: 1.2em; font-weight:bold; text-align:center;
+ border-bottom: 1px solid silver ; }
+
+nav.sidetoc a:hover {text-decoration: underline ; }
+
+nav.topnavigation{
+ text-align: left ;
+ padding: 0.5ex 1em 0.5ex 1em ;
+/* margin: 2ex 0em 3ex 0em ; */
+ margin: 0 ;
+ border-bottom: 1px solid silver ;
+ border-top: 1px solid silver ;
+ clear:both ;
+}
+
+nav.botnavigation{
+ text-align: left ;
+ padding: 0.5ex 1em 0.5ex 1em ;
+/* margin: 3ex 0em 2ex 0em ; */
+ margin: 0 ;
+ border-top: 1px solid silver ;
+ border-bottom: 1px solid silver ;
+ clear:both ;
+}
+
+header {
+ line-height: 1.2 ;
+ font-size: 1em ;
+ border-bottom: 1px solid silver ;
+ margin: 0px ;
+ padding: 2ex 1em 2ex 1em ;
+ text-align:left ;
+}
+
+footer {
+ font-size: .85em ;
+ line-height: 1.2 ;
+ margin-top: 1ex ;
+ border-top: 1px solid silver ;
+ padding: 2ex 1em 2ex 1em ;
+ clear:both ;
+ text-align:left ;
+}
+
/* a fix for older browsers: */
header, section, footer, aside, nav, main,
article, figure { display: block; }
@@ -3308,6 +3391,8 @@ dl {
line-height: 1.3;
}
+li dl { margin-left: 2em }
+
dl dt {
display: block ;
float:left ;
@@ -3708,45 +3793,6 @@ div.titledate {
margin: 1ex 0em 1ex 0em ;
}
-nav.topnavigation{
- text-align: left ;
- padding: 0.5ex 1em 0.5ex 1em ;
-/* margin: 2ex 0em 3ex 0em ; */
- margin: 0 ;
- border-bottom: 1px solid silver ;
- border-top: 1px solid silver ;
- clear:both ;
-}
-
-nav.botnavigation{
- text-align: left ;
- padding: 0.5ex 1em 0.5ex 1em ;
-/* margin: 3ex 0em 2ex 0em ; */
- margin: 0 ;
- border-top: 1px solid silver ;
- border-bottom: 1px solid silver ;
- clear:both ;
-}
-
-header {
- line-height: 1.2 ;
- font-size: 1em ;
- border-bottom: 1px solid silver ;
- margin: 0px ;
- padding: 2ex 1em 2ex 1em ;
- text-align:left ;
-}
-
-footer {
- font-size: .85em ;
- line-height: 1.2 ;
- margin-top: 1ex ;
- border-top: 1px solid silver ;
- padding: 2ex 1em 2ex 1em ;
- clear:both ;
- text-align:left ;
-}
-
/* for \LinkHome, \LinkPrevious, and \LinkNext: */
a.linkhome { font-weight:bold ; font-size: 1em ;}
@@ -3763,35 +3809,6 @@ img.lateximage{
border: none ;
}
-div.sidetoccontainer {
- font-family: "DejaVu Serif", "Bitstream Vera Serif",
- "Lucida Bright", Georgia, serif;
- float: left ;
- width: 19%; /* room for border-right next to 80% main */
- margin: 0pt 0em 3ex 0pt ;
- border-right: 1px solid silver;
- border-bottom: 1px solid silver;
- background: #FAF7F4 ;
- font-size:.9em ;
- border-radius: 0px 0px 20px 0px ;
-}
-
-div.sidetoccontents {
- overflow-y: auto ;
- width: 100% ;
- text-align: left ;
-}
-
-nav.sidetoc p {line-height:1.2 ; margin: 1ex .5em 1ex .5em ;
- text-indent: 0 ; }
-
-nav.sidetoc p a {color:black ; font-size: .7em ;}
-
-div.sidetoctitle {font-size: 1.2em; font-weight:bold; text-align:center;
- border-bottom: 1px solid silver ; }
-
-nav.sidetoc a:hover {text-decoration: underline ; }
-
section.textbody { margin: 0ex 1em 0ex 1em ;}
div.multicolsheading { -webkit-column-span: all;
@@ -4893,9 +4910,9 @@ MathJax = {
\begin{filecontents*}[overwrite]{lwarpmk.lua}
#!/usr/bin/env texlua
--- Copyright 2016-2024 Brian Dunn
+-- Copyright 2016-2025 Brian Dunn
-printversion = "v0.916"
+printversion = "v0.918"
requiredconfversion = "2" -- also at *lwarpmk.conf
function printhelp ()
@@ -6102,6 +6119,9 @@ end -- not --version
\let\LWR@origtextgreater\textgreater
\renewrobustcmd*{\textgreater}{\HTMLentity{gt}}
+\let\LWR@origpercent\%
+\renewrobustcmd*{\%}{\HTMLentity{percnt}}
+
\end{warpHTML}
@@ -6463,9 +6483,12 @@ end -- not --version
\LWR@hook@processingtags%
\LWR@fontfortags{LWR@htmltagc}{\detokenize{#1}}%
\protect\LWR@origtextless%
+ \LWR@traceinfo{LWR@htmltagc B}%
\LWR@isolate{#1}%
+ \LWR@traceinfo{LWR@htmltagc C}%
\protect\LWR@origtextgreater%
\endgroup%
+ \LWR@traceinfo{LWR@htmltagc done}%
}
\newcommand*{\LWR@spanwarnformat}[1]{%
@@ -7087,6 +7110,7 @@ end -- not --version
\let\LWR@newautopagelabel\LWR@null@newautopagelabel%
\global\setbox\csname #2\endcsname=\vbox{%
\unvbox\csname #2\endcsname%
+ \def\@currentcounter{footnote}%
\protected@edef\@currentlabel{%
\csname p@footnote\endcsname\@thefnmark%
}% @currentlabel
@@ -7118,6 +7142,7 @@ end -- not --version
\reset@font\footnotesize%
\hsize\columnwidth%
\@parboxrestore%
+ \def\@currentcounter{mpfootnote}%
\protected@edef\@currentlabel%
{\csname p@mpfootnote\endcsname\@thefnmark}%
\color@begingroup%
@@ -7485,9 +7510,11 @@ end -- not --version
\expandafter\LWR@replacestrings\expandafter{\LWRbackslash"}{}%
\LWR@replacestrings{"}{}%
}%
- {\LWR@replacestrings{"}{&quot;}}%
- }% enabled
- {}% not enabled
+ {%
+ \LWR@replacestrings{"}{&quot;}%
+ }%
+ }% sanitizing enabled
+ {}% sanitizing not enabled
}
\catcode`\&=4
@@ -7612,6 +7639,7 @@ end -- not --version
\CustomizeMathJax{\newcommand{\footnotemark}[1][\LWRfootnote]{{}^{\mathrm{#1}}}}
\CustomizeMathJax{\let\LWRorighspace\hspace}
\CustomizeMathJax{\renewcommand{\hspace}{\ifstar\LWRorighspace\LWRorighspace}}
+\CustomizeMathJax{\newcommand{\TextOrMath}[2]{#2}}
\CustomizeMathJax{\newcommand{\mathnormal}[1]{{#1}}}
\CustomizeMathJax{\newcommand\ensuremath[1]{#1}}
\CustomizeMathJax{% absorb two optional arguments
@@ -8231,20 +8259,25 @@ end -- not --version
}\LWR@orignewline%
\ifdefempty{\LWR@currentHTMLDescription}{}{%
\LWR@htmltag{%
- meta name=\LWR@orig@textquotedbl{}description\LWR@orig@textquotedbl\ % space
- content=\LWR@orig@textquotedbl\LWR@currentHTMLDescription\LWR@orig@textquotedbl\ /%
+ meta name=%
+ \LWR@orig@textquotedbl{}description\LWR@orig@textquotedbl\ % space
+ content=%
+ \LWR@orig@textquotedbl\LWR@currentHTMLDescription\LWR@orig@textquotedbl\ /%
}\LWR@orignewline
}%
\ifdefempty{\LWR@currentHTMLKeywords}{}{%
\LWR@htmltag{%
- meta name=\LWR@orig@textquotedbl{}keywords\LWR@orig@textquotedbl\ % space
- content=\LWR@orig@textquotedbl\LWR@currentHTMLKeywords\LWR@orig@textquotedbl\ /%
+ meta name=%
+ \LWR@orig@textquotedbl{}keywords\LWR@orig@textquotedbl\ % space
+ content=%
+ \LWR@orig@textquotedbl\LWR@currentHTMLKeywords\LWR@orig@textquotedbl\ /%
}\LWR@orignewline
}%
\LWR@htmltag{%
meta % space
name=\LWR@orig@textquotedbl{}viewport\LWR@orig@textquotedbl\ % space
- content=\LWR@orig@textquotedbl{}width=device-width, initial-scale=1.0\LWR@orig@textquotedbl\ /%
+ content=%
+ \LWR@orig@textquotedbl{}width=device-width, initial-scale=1.0\LWR@orig@textquotedbl\ /%
}\LWR@orignewline
\LWR@HTMLmeta
\ifthenelse{\equal{\theHTMLTitle}{}}%
@@ -8928,19 +8961,25 @@ end -- not --version
\begin{warpHTML}
+\VerifyCommand[lwarp][latex]{\@thm}{C35B697D8E37A052BF513D51C8660A87}
+
+\def\@thm#1#2{%
+ \refstepcounter{#1}% lwarp
+ \@ifnextchar[{\@ythm{#1}{#2}}{\@xthm{#1}{#2}}%
+}
\renewcommand{\@begintheorem}[2]{%
-\LWR@forcenewpage
+ \LWR@forcenewpage
\LWR@printpendingfootnotes% lwarp
-\BlockClass{theoremcontents}
-\trivlist
-\item[\InlineClass{theoremlabel}{#1\ #2\ }]\itshape
+ \BlockClass{theoremcontents}
+ \trivlist
+ \item[\InlineClass{theoremlabel}{#1\ #2\ }]\itshape%
}
\ifundef{\@opargbegintheorem}{}{
\renewcommand{\@opargbegintheorem}[3]{%
\LWR@forcenewpage
\BlockClass{theoremcontents}
\trivlist
- \item[\InlineClass{theoremlabel}{#1\ #2\ (#3)\ }]\itshape
+ \item[\InlineClass{theoremlabel}{#1\ #2\ (#3)\ }]\itshape%
}
}
\renewcommand*{\@endtheorem}{%
@@ -10859,7 +10898,7 @@ end -- not --version
\LWR@htmlblocktag{table}%
\LWR@parsetablecols{#3}%
\LWR@stoppars%
- \LWR@htmltag{tr style="display:none"}%
+ \LWR@htmltag{tr style=\textquotedbl{}display:none\textquotedbl}%
\LWR@htmltag{th}.\LWR@htmltag{/th}%
\LWR@htmltag{/tr}%
\LWR@orignewline%
@@ -11035,10 +11074,10 @@ end -- not --version
\expandafter\LWR@setref\csname r@#1@lwarp\endcsname\LWR@thirdoffive{#1}%
}
\newcommand*{\LWR@lateximagedepthref}[1]{%
- \expandafter\LWR@setref\csname r@#1@lwarp\endcsname\LWR@fourthoffive{#1}%
+ \expandafter\LWR@setref\csname r@#1@lwarp@image\endcsname\LWR@firstoffive{#1}%
}
\newcommand*{\LWR@lateximagenumberref}[1]{%
- \expandafter\LWR@setref\csname r@#1@lwarp\endcsname\LWR@fifthoffive{#1}%
+ \expandafter\LWR@setref\csname r@#1@lwarp@image\endcsname\LWR@secondoffive{#1}%
}
\newcommand*{\LWR@write@lwarplabel}[1]{%
\LWR@traceinfo{LWR@write@lwarplabel !#1!}%
@@ -11054,8 +11093,18 @@ end -- not --version
{\LWR@thisfilename}%
{\arabic{LWR@htmlfilenumber}}%
}%
+ {}%
+ {}%
+ }%
+ }%
+ \protected@write\@auxout{}%
+ {%
+ \string\newlabel{#1@lwarp@image}{%
{\arabic{LWR@lateximagedepth}}%
{\arabic{LWR@lateximagenumber}}%
+ {}%
+ {}%
+ {}%
}%
}%
\@esphack%
@@ -11255,7 +11304,7 @@ end -- not --version
\def\NR@gettitle#1{%
\GetTitleString{#1}%
- \let\@currentlabelname\GetTitleStringResult
+ \let\@currentlabelname\GetTitleStringResult%
}
@@ -11387,11 +11436,11 @@ end -- not --version
\newcommand*{\LWR@subinlineimage}[6]{%
\begingroup%
\boolfalse{LWR@HTMLsanitize@tmpb@removebackslash}%
- \ifblank{#6}%
+ \ifblank{#6}% ARIA role
{\renewcommand*{\LWR@tempone}{}}%
- {\renewcommand*{\LWR@tempone}{role="#6"\LWR@indentHTML}}%
- \ifblank{#1}%
- {%
+ {\renewcommand*{\LWR@tempone}{role=\textquotedbl#6\textquotedbl\LWR@indentHTML}}%
+ \ifblank{#1}% alt text
+ {% alt is file name
\LWR@htmltag{img \LWR@indentHTML
src=\textquotedbl#3.#4\textquotedbl \LWR@indentHTML
alt=\textquotedbl#3\textquotedbl \LWR@indentHTML
@@ -11400,10 +11449,12 @@ end -- not --version
class=\textquotedbl#2\textquotedbl \LWR@orignewline
}%
}%
- {%
+ {% alt is as given
+ \def\tmpb{#1}%
+ \LWR@HTMLsanitize@tmpb%
\LWR@htmltag{img \LWR@indentHTML
src=\textquotedbl#3.#4\textquotedbl \LWR@indentHTML
- alt=\textquotedbl#1\textquotedbl \LWR@indentHTML
+ alt=\textquotedbl\tmpb\textquotedbl \LWR@indentHTML
\LWR@tempone
style=\textquotedbl#5\textquotedbl \LWR@indentHTML
class=\textquotedbl#2\textquotedbl \LWR@orignewline
@@ -12254,6 +12305,7 @@ end -- not --version
\let\textless\LWR@origtextless%
\let\textgreater\LWR@origtextgreater%
\let\&\LWR@origampersand%
+ \let\%\LWR@origpercent%
\LetLtxMacro\em\LWR@origem%
\LetLtxMacro\normalfont\LWR@orignormalfont%
\let\sp\LWR@origsp%
@@ -12532,7 +12584,7 @@ end -- not --version
\newcommand*{\LWR@singledollarmeasure}[1]{%
\begingroup%
\LWR@restoreorigformatting%
- \RenewDocumentEnvironment{lateximage}{s o s o o d()}{}{}% inside group
+ \RenewDocumentEnvironment{lateximage}{s o s t? o o d()}{}{}% inside group
\LWR@print@normalsize%
\LWR@setcurrentfont%
\global\advance\c@LWR@lateximagedepth 1\relax%
@@ -12620,6 +12672,7 @@ end -- not --version
\LWR@traceinfo{subsingledollarsvg: dynamic}%
\begin{lateximage}% no hashing
[\MathImageAltText]% alt tag
+ ?% Do not detokenize the alt tag
[]% no add'l hashing
[\LWR@singledollarstyle \LWR@singledollardepthstyle]% CSS
(math)% ARIA
@@ -12634,6 +12687,7 @@ end -- not --version
\begin{lateximage}*% use hashing
[#2]% alt
*% do not add open/closing braces
+ ?% Do not detokenize the alt tag
[% addl' hashing
#3%
FM\LWR@f@family%
@@ -12649,6 +12703,7 @@ end -- not --version
}{% #1 False
\begin{lateximage}% no hashing
[#2]% alt
+ ?% Do not detokenize the alt tag
[]% no add'l hashing
[\LWR@singledollarstyle \LWR@singledollardepthstyle]% CSS
(math)% ARIA
@@ -12689,7 +12744,7 @@ end -- not --version
) and
( not bool{LWR@dynamicmath} )
}%
- {%
+ {% mathjax
\LWR@traceinfo{LWR@subsingledollar: Mathjax}%
{%
\boolfalse{LWR@HTMLsanitize@tmpb@removebackslash}%
@@ -12728,7 +12783,7 @@ end -- not --version
\protected\gdef\LWR@doubledollar$#1$${%
\ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
- {% intentional blank line:
+ {% mathjax: intentional blank line:
\begingroup%
\IfSubStr{\detokenize\expandafter{#1}}{\detokenize{note}}{%
@@ -12760,12 +12815,13 @@ end -- not --version
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
\begin{lateximage}%
- [%
+ [% alt text
\textbackslash{[} % extra space
\LWR@HTMLsanitizedetokenized{\detokenize{#1}} % extra space
\textbackslash{]}%
]%
*% do not add open/closing braces
+ ?% Do not detokenize the alt tag
(math)% ARIA
\LWR@applyxfakebold%
\LWR@origdollar\LWR@origdollar#1\LWR@origdollar\LWR@origdollar%
@@ -12870,7 +12926,7 @@ end -- not --version
\begin{BlockClass}{displaymath}%
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
- \begin{lateximage}[\MathImageAltText](math)% [alt](ARIA)
+ \begin{lateximage}[\MathImageAltText]?(math)% [alt](ARIA)
\LWR@origdollar\LWR@origdollar%
}
{%
@@ -12883,7 +12939,7 @@ end -- not --version
\begin{BlockClass}{displaymathnumbered}%
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
- \begin{lateximage}[\MathImageAltText](math)% [alt](ARIA)
+ \begin{lateximage}[\MathImageAltText]?(math)% [alt](ARIA)
\LWR@orig@equation%
}
{%
@@ -13004,7 +13060,6 @@ end -- not --version
\begin{lateximage}[%
\ifstrequal{#2}{equation*}{%
\ifdefequal{\LWR@equationtag}{\theequation}{%
- % no tag was given
}{%
(\LWR@equationtag) % tag was given
}%
@@ -13014,7 +13069,7 @@ end -- not --version
\textbackslash{begin\{#2\}} % extra space
\LWR@HTMLsanitizeexpanded{\detokenize\expandafter{#1}} % extra space
\textbackslash{end\{#2\}}%
- ]*(math)% alt tag, ARIA
+ ]*?(math)% alt tag, ARIA
\LWR@applyxfakebold%
\@nameuse{LWR@orig@#2}%
#1% contents collected by \collect@body
@@ -13178,8 +13233,11 @@ end -- not --version
\begin{BlockClass}{displaymathnumbered}%
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
- \begin{lateximage}[(\LWR@startingequationtag\textendash\LWR@equationtag)%
- \LWR@addmathjax{eqnarray}{\BODY}]*(math)%
+ \begin{lateximage}[%
+ (\LWR@startingequationtag\textendash\LWR@equationtag)%
+ \LWR@addmathjax{eqnarray}{\BODY}%
+ ]%
+ *?(math)%
\LWR@applyxfakebold%
\LWR@origeqnarray%
\BODY%
@@ -13191,9 +13249,11 @@ end -- not --version
\begin{BlockClass}{displaymath}%
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
- \begin{lateximage}[\LWR@addmathjax{eqnarray*}{\BODY}]*(math)%
+ \begin{lateximage}[%
+ \LWR@addmathjax{eqnarray*}{\BODY}%
+ ]*?(math)%
\LWR@applyxfakebold%
- \def\@eqncr{\nonumber\@seqncr}
+ \def\@eqncr{\nonumber\@seqncr}%
\csuse{LWR@origeqnarray}%
\BODY%
\nonumber\csuse{LWR@origendeqnarray}%
@@ -13318,7 +13378,7 @@ end -- not --version
\catcode`\$=\active%
-\NewDocumentEnvironment{lateximage}{s O{\ImageAltText} s O{} O{} D(){}}%
+\NewDocumentEnvironment{lateximage}{s o s t? O{} O{} D(){}}%
{%
\LWR@traceinfo{lateximage !#1!#2!#3!#4!#5!#6!}%
\LWR@traceinfo{lateximage: starting on \jobname.pdf page \arabic{page}}%
@@ -13337,8 +13397,6 @@ end -- not --version
\addtocounter{LWR@lateximagenumber}{1}%
\LWR@traceinfo{lateximage: LWR@lateximagenumber is \arabic{LWR@lateximagenumber}}%
\boolfalse{mathjax}%
- \boolfalse{LWR@verbtags}%
- \boolfalse{LWR@HTMLsanitize@tmpb@enable}%
\LWR@ensuredoingapar%
\hbadness=10000\relax%
\addtocounter{LWR@externalfilecnt}{1}%
@@ -13357,18 +13415,34 @@ end -- not --version
\IfBooleanTF{#1}% starred
{% hash
\ifdefvoid{\LWR@ThisAltText}{%
- \IfBooleanTF{#3}{%
- \edef\LWR@hashedname{%
- \LWR@mdfive{\detokenize\expandafter{#2}-!-#4}%
- }%
+ \IfBooleanTF{#3}{% no open/close tags?
+ \IfBooleanTF{#4}% '?': don't detokenize
+ {% don't detokenize
+ \edef\LWR@hashedname{%
+ \LWR@mdfive{#2-!-#5}%
+ }%
+ }%
+ {% do detokenize
+ \edef\LWR@hashedname{%
+ \LWR@mdfive{\detokenize\expandafter{#2}-!-#5}%
+ }%
+ }%
}{%
- \edef\LWR@hashedname{%
- \LWR@mdfive{\detokenize\expandafter{\AltTextOpen#2\AltTextClose}-!-#4}%
+ \IfBooleanTF{#4}% '?': don't detokenize
+ {% don't detokenize
+ \edef\LWR@hashedname{%
+ \LWR@mdfive{\AltTextOpen#2\AltTextClose-!-#5}%
+ }%
+ }%
+ {% do detokenize
+ \edef\LWR@hashedname{%
+ \LWR@mdfive{\detokenize\expandafter{\AltTextOpen#2\AltTextClose}-!-#5}%
+ }%
}%
}%
}{%
\edef\LWR@hashedname{%
- \LWR@mdfive{\detokenize\expandafter{\AltTextOpen\LWR@ThisAltText\AltTextClose}-!-#4}%
+ \LWR@mdfive{\detokenize\expandafter{\AltTextOpen\LWR@ThisAltText\AltTextClose}-!-#5}%
}%
}%
\LWR@traceinfo{lateximage: hash is \LWR@hashedname}%
@@ -13428,6 +13502,8 @@ end -- not --version
}% not in display math
\LetLtxMacro\LWR@newsingledollar$%
\LetLtxMacro\LWR@newsingledollar$% syntax highlighting
+ \boolfalse{LWR@verbtags}%
+ \boolfalse{LWR@HTMLsanitize@tmpb@enable}%
}% end of outer-most lateximage
\LWR@traceinfo{lateximage: finished start of environment}%
}% end of \begin{lateximage}
@@ -13447,13 +13523,57 @@ end -- not --version
\LWR@htmlclosecomment%
\LWR@traceinfo{lateximage: The page after the image is \arabic{page}}%
\LWR@traceinfo{about to LWR@lateximage@oneimage !#2!}%
- \IfBooleanTF{#1}% starred
- {% hash
- \LWR@lateximage@oneimage{#2}{\LWR@hashedname}{#5}{#3}{#6}%
- }% hash
- {% no hash
- \LWR@lateximage@oneimage{#2}{\LWR@ImagesName\theLWR@externalfilecnt}{#5}{#3}{#6}%
- }% no hash
+ \IfBooleanTF{#1}% starred?
+ {% starred, hash
+ \IfValueTF{#2}% alt argument
+ {% alt argument given
+ \IfBooleanTF{#4}% '?': don't detokenize
+ {% don't detokenize
+ \LWR@lateximage@oneimage{#2}%
+ {\LWR@hashedname}{#6}{#3}{#7}%
+ }% don't detokenize
+ {% detokenize
+ \expandafter\LWR@lateximage@oneimage\expandafter{\detokenize{#2}}%
+ {\LWR@hashedname}{#6}{#3}{#7}%
+ }% detokenize
+ }% alt argument given
+ {% alt argument not given
+ \IfBooleanTF{#4}% '?': don't detokenize
+ {% don't detokenize
+ \LWR@lateximage@oneimage{\ImageAltText}%
+ {\LWR@hashedname}{#6}{#3}{#7}%
+ }% don't detokenize
+ {% detokenize
+ \expandafter\LWR@lateximage@oneimage\expandafter{\detokenize\expandafter{\ImageAltText}}%
+ {\LWR@hashedname}{#6}{#3}{#7}%
+ }% detokenize
+ }% alt argument not given
+ }% starred, hash
+ {% not starred, no hash
+ \IfValueTF{#2}% alt argument
+ {% alt argument given
+ \IfBooleanTF{#4}% '?': don't detokenize
+ {% don't detokenize
+ \LWR@lateximage@oneimage{#2}%
+ {\LWR@ImagesName\theLWR@externalfilecnt}{#6}{#3}{#7}%
+ }% don't detokenize
+ {% detokenize
+ \expandafter\LWR@lateximage@oneimage\expandafter{\detokenize{#2}}%
+ {\LWR@ImagesName\theLWR@externalfilecnt}{#6}{#3}{#7}%
+ }% detokenize
+ }% alt argument given
+ {% alt argument not given
+ \IfBooleanTF{#4}% '?': don't detokenize
+ {% don't detokenize
+ \LWR@lateximage@oneimage{\ImageAltText}%
+ {\LWR@ImagesName\theLWR@externalfilecnt}{#6}{#3}{#7}%
+ }% don't detokenize
+ {% detokenize
+ \expandafter\LWR@lateximage@oneimage\expandafter{\detokenize\expandafter{\ImageAltText}}%
+ {\LWR@ImagesName\theLWR@externalfilecnt}{#6}{#3}{#7}%
+ }% detokenize
+ }% alt argument not given
+ }% not starred, no hash
\LWR@ensuredoingapar%
\LWR@htmltag{/span}%
\ifbool{HTMLDebugComments}{%
@@ -13470,7 +13590,7 @@ end -- not --version
\begin{warpprint}
-\NewDocumentEnvironment{lateximage}{s o s o o d()}
+\NewDocumentEnvironment{lateximage}{s o s t? o o d()}
{}{}
\end{warpprint}
@@ -13758,6 +13878,10 @@ end -- not --version
\end{warpHTML}
\begin{warpHTML}
+
+\VerifyCommand[lwarp][latex]{\label}
+ {3FB4D89D15FDC24A8AA3A2C581E3C48D}
+
\LetLtxMacro\LWR@orig@label\label
\LetLtxMacro\label\LWR@new@label
@@ -13771,17 +13895,13 @@ end -- not --version
{{\detokenize\expandafter{\@currentlabelname}}}
{}
{
- \typeout{***}
- \typeout{***}
- \typeout{*** Package lwarp warning:}
- \typeout{*** Could not patch \string\label.}
- \typeout{*** This may cause an error with section names or float captions}
- \typeout{*** containing math, for example.}
- \typeout{*** (Recent updates in the LaTeX kernel may make things work again.)}
- \typeout{***}
- \typeout{***}
+ \PackageWarning{lwarp}{%
+ Could not patch \string\label:\string\@currentlabelname.\MessageBreak
+ This may cause an error with section names or float captions\MessageBreak
+ containing math, for example.\MessageBreak
+ (Recent updates in the LaTeX kernel may make things work again%
+ }
}
-
\end{warpHTML}
@@ -14017,10 +14137,10 @@ end -- not --version
}
\newcommand*{\LWR@fboxstyle}{%
-\LWR@findcurrenttextcolor%
-border:\LWR@printlength{\LWR@atleastonept} solid \LWR@origpound\LWR@tempcolor ; %
-padding:\LWR@printlength{\fboxsep} ; %
-color:\LWR@origpound\LWR@tempcolor%
+ \LWR@findcurrenttextcolor%
+ border:\LWR@printlength{\LWR@atleastonept} solid \LWR@origpound\LWR@tempcolor ; %
+ padding:\LWR@printlength{\fboxsep} ; %
+ color:\LWR@origpound\LWR@tempcolor%
}
\newcommand{\LWR@HTML@fbox}[1]{%
\LWR@traceinfo{HTML fbox}%
@@ -14156,20 +14276,25 @@ color:\LWR@origpound\LWR@tempcolor%
\LWR@formatted{textbf}
+\AtBeginDocument{
\IfPackageLoadedTF{nfssext-cfr}{
+\providerobustcmd{\texteb}[1]{}
\DeclareRobustCommand{\LWR@HTML@texteb}[1]{%
{%
\LWR@HTML@ebweight%
\InlineClass{texteb}{#1}%
}%
}
-
\LWR@formatted{texteb}
-}{% if not loaded
+}
+{% if not loaded
\providerobustcmd{\texteb}[1]{}
}
+}
+\AtBeginDocument{
\IfPackageLoadedTF{nfssext-cfr}{
+\providerobustcmd{\textlg}[1]{}
\DeclareRobustCommand{\LWR@HTML@textlg}[1]{%
{%
\LWR@HTML@lgweight%
@@ -14181,6 +14306,7 @@ color:\LWR@origpound\LWR@tempcolor%
}{% if not loaded
\providerobustcmd{\textlg}[1]{}
}
+}
\DeclareRobustCommand{\LWR@HTML@textrm}[1]{%
{%
@@ -14245,6 +14371,7 @@ color:\LWR@origpound\LWR@tempcolor%
\LWR@formatted{textulc}
+\AtBeginDocument{
\@ifundefined{textsi}{
\LetLtxMacro\LWR@print@textsi\LWR@print@textsc
}{}
@@ -14257,6 +14384,7 @@ color:\LWR@origpound\LWR@tempcolor%
}
\LWR@formatted{textsi}
+}
\DeclareRobustCommand{\LWR@HTML@textsl}[1]{%
{%
@@ -14364,21 +14492,27 @@ color:\LWR@origpound\LWR@tempcolor%
}
\LWR@formatted{bfseries}
+\AtBeginDocument{
\IfPackageLoadedTF{nfssext-cfr}{
+\providerobustcmd{\ebweight}{}
\newrobustcmd*{\LWR@HTML@ebweight}{%
\LWR@print@ebweight%
\renewcommand*{\LWR@f@series}{eb}%
}
\LWR@formatted{ebweight}
}{}
+}
+\AtBeginDocument{
\IfPackageLoadedTF{nfssext-cfr}{
+\providerobustcmd{\lgweight}{}
\newrobustcmd*{\LWR@HTML@lgweight}{%
\LWR@print@lgweight%
\renewcommand*{\LWR@f@series}{lg}%
}
\LWR@formatted{lgweight}
}{}
+}
\newrobustcmd*{\LWR@HTML@rmfamily}{%
\LWR@print@rmfamily%
@@ -14505,7 +14639,6 @@ color:\LWR@origpound\LWR@tempcolor%
\newcommand*{\LWR@currenttextcolor}{black}
\newcommand*{\LWR@tempcolor}{}
\newcommand*{\LWR@tempcolortwo}{}
-\newcommand*{\LWR@tempcolorthree}{}
\newcommand*{\LWR@findcurrenttextcolor}{%
\renewcommand{\LWR@tempcolor}{000000}%
}
@@ -15186,7 +15319,8 @@ color:\LWR@origpound\LWR@tempcolor%
\LWR@mathjaxwarn{mathtools}
{See the Lwarp manual regarding the disallowspaces\MessageBreak
and showonlyrefs options, the alignat environment,\MessageBreak
- and \protect\DeclarePairedDelimiter\space and related%
+ \protect\DeclarePairedDelimiter\space and related,\MessageBreak
+ and \cs{MakeAboxedCommand}%
}
\LWR@mathjaxwarn{mathspec}
{Double quotes are removed, even inside \protect\text}
diff --git a/Master/texmf-dist/tex/latex/mahjong/mahjong.sty b/Master/texmf-dist/tex/latex/mahjong/mahjong.sty
index b0b58e439ec..7f9a7da8283 100644
--- a/Master/texmf-dist/tex/latex/mahjong/mahjong.sty
+++ b/Master/texmf-dist/tex/latex/mahjong/mahjong.sty
@@ -28,7 +28,7 @@
\NeedsTeXFormat{LaTeX2e}[2019/10/01]
\RequirePackage{expl3}
-\ProvidesExplPackage{mahjong}{2021/04/16}{1.0.1}{Typeset Mahjong Hands}
+\ProvidesExplPackage{mahjong}{2025/01/06}{1.1}{Typeset Mahjong Hands}
\RequirePackage{xparse}
\RequirePackage{l3keys2e}
\RequirePackage{graphicx}
@@ -45,7 +45,8 @@
{This ~ should ~ not ~ happen.~ Please ~ create ~ a ~ bug ~ report.}
\keys_define:nn {mahjong} {
- height .dim_gset:N = \g_mahjong_default_height
+ height .dim_gset:N = \g_mahjong_default_height,
+ scale .int_gset:N = \g_mahjong_default_scale
}
\cs_new:Npn \c__mahjong_suits_tl {mpsz}
@@ -62,6 +63,12 @@
\dim_set:Nn \g_mahjong_default_height {\baselineskip}
\dim_new:N \l_mahjong_tile_height
+\fp_set:Nn \g_mahjong_default_scale {0.75}
+\fp_new:N \l_mahjong_tile_scale
+
+\dim_new:N \l__mahjong_symbol_height
+\dim_new:N \l__mahjong_baseline_offset
+
\int_new:N \l__mahjong_tile_orientation_int
\seq_new:N \l__mahjong_tile_maps_seq
\str_new:N \l__mahjong_file_path_str
@@ -75,7 +82,7 @@
\stackinset{c}{0pt}{c}{0pt}{
\includegraphics[
angle=0,
- height=.85\l_mahjong_tile_height]
+ height=\l__mahjong_symbol_height]
{#1}
}{
\includegraphics[
@@ -87,7 +94,7 @@
\stackinset{c}{0pt}{c}{0pt}{
\includegraphics[
angle=90,
- width=.85\l_mahjong_tile_height]
+ width=\l__mahjong_symbol_height]
{#1}
}{
\includegraphics[
@@ -113,6 +120,10 @@
\cs_generate_variant:Nn \__mahjong_make_tile:nn {VV, xV, nV}
\cs_set:Npn \mahjong_typeset_hand:n #1 {
+ % Set computed dimensions for symbol height and baseline offset
+ \dim_set:Nn \l__mahjong_symbol_height {\fp_to_decimal:n {\l_mahjong_tile_scale}\l_mahjong_tile_height}
+ \dim_set:Nn \l__mahjong_baseline_offset {(\l_mahjong_tile_height - \l__mahjong_symbol_height) / 2}
+ % Start sequence processing
\tl_set:Nx \l__mahjong_hand_tl {\text_lowercase:n {#1}}
% MPSZ notation is easier to parse right-to-left, so reverse string
% There is no string reversal function but we can reverse token lists
@@ -150,44 +161,46 @@
}
}
% Typesetting begins here. Sequence is in correct order
- \seq_map_variable:NNn \l__mahjong_tile_maps_seq \l_tmpa_prop {
- \prop_get:NnN \l_tmpa_prop {face} \l_tmpa_tl
- \prop_get:NnN \l_tmpa_prop {orientation} \l_tmpa_int
- \str_case:VnF \l_tmpa_tl {
- {-} {
- % If the current face is a dash, insert a space
- \includegraphics[height=\l_mahjong_tile_height]{tiles/mahjong-Space.pdf}
- } {x} {
- % Insert a flipped tile
- \int_case:nn {\l_tmpa_int} {
- {0} { % Upright
- \includegraphics[
- angle=0,
- height=\l_mahjong_tile_height]
- {tiles/mahjong-Back.pdf}
- } {1} { % Rotated
- \includegraphics[
- angle=90,
- width=\l_mahjong_tile_height]
- {tiles/mahjong-Back.pdf}
- } {2} { % Rotated and stacked
- \stackon [0pt] {
+ \raisebox{-\l__mahjong_baseline_offset}{
+ \seq_map_variable:NNn \l__mahjong_tile_maps_seq \l_tmpa_prop {
+ \prop_get:NnN \l_tmpa_prop {face} \l_tmpa_tl
+ \prop_get:NnN \l_tmpa_prop {orientation} \l_tmpa_int
+ \str_case:VnF \l_tmpa_tl {
+ {-} {
+ % If the current face is a dash, insert a space
+ \includegraphics[height=\l_mahjong_tile_height]{tiles/mahjong-Space.pdf}
+ } {x} {
+ % Insert a flipped tile
+ \int_case:nn {\l_tmpa_int} {
+ {0} { % Upright
\includegraphics[
- angle=90,
- width=\l_mahjong_tile_height]
- {tiles/mahjong-Back.pdf}
- } {
- \includegraphics[angle=90,
+ angle=0,
+ height=\l_mahjong_tile_height]
+ {tiles/mahjong-Back.pdf}
+ } {1} { % Rotated
+ \includegraphics[
+ angle=90,
width=\l_mahjong_tile_height]
{tiles/mahjong-Back.pdf}
+ } {2} { % Rotated and stacked
+ \stackon [0pt] {
+ \includegraphics[
+ angle=90,
+ width=\l_mahjong_tile_height]
+ {tiles/mahjong-Back.pdf}
+ } {
+ \includegraphics[angle=90,
+ width=\l_mahjong_tile_height]
+ {tiles/mahjong-Back.pdf}
+ }
}
}
+ } {?} { % Blank tile
+ \__mahjong_make_tile:nV {tiles/mahjong-Blank.pdf} \l_tmpa_int
}
- } {?} { % Blank tile
- \__mahjong_make_tile:nV {tiles/mahjong-Blank.pdf} \l_tmpa_int
+ } { % Any other tile identified by a code.
+ \__mahjong_make_tile:xV {tiles/mahjong-\l_tmpa_tl\prop_item:Nn \l_tmpa_prop {suit}.pdf} \l_tmpa_int
}
- } { % Any other tile identified by a code.
- \__mahjong_make_tile:xV {tiles/mahjong-\l_tmpa_tl\prop_item:Nn \l_tmpa_prop {suit}.pdf} \l_tmpa_int
}
}
% Clear the list for the next invocation
@@ -195,9 +208,10 @@
}
\cs_generate_variant:Nn \__mahjong_typeset_hand:n {x}
-\NewDocumentCommand{\mahjong}{O{\g_mahjong_default_height} m}{
+\NewDocumentCommand{\mahjong}{O{\g_mahjong_default_height} O{\g_mahjong_default_scale} m}{
\dim_set:Nn \l_mahjong_tile_height {#1}
- \mahjong_typeset_hand:n {#2}
+ \fp_set:Nn \l_mahjong_tile_scale {#2}
+ \mahjong_typeset_hand:n {#3}
}
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/markdown/markdown.sty b/Master/texmf-dist/tex/latex/markdown/markdown.sty
index dda2b648907..b755869d95a 100644
--- a/Master/texmf-dist/tex/latex/markdown/markdown.sty
+++ b/Master/texmf-dist/tex/latex/markdown/markdown.sty
@@ -6,7 +6,7 @@
%%
%% markdown.dtx (with options: `latex')
%%
-%% Copyright (C) 2016-2024 Vít Starý Novotný, Andrej Genčur
+%% Copyright (C) 2016-2025 Vít Starý Novotný, Andrej Genčur
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -42,6 +42,8 @@
%%
%% The names of the source files used are shown above.
%%
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{expl3}
\ExplSyntaxOn
\tl_const:Nn \c__markdown_option_layer_latex_tl { latex }
\cs_generate_variant:Nn
@@ -58,6 +60,7 @@
\input markdown/markdown
\newenvironment{markdown}\relax\relax
\newenvironment{markdown*}[1]\relax\relax
+\newenvironment{yaml}\relax\relax
\DeclareOption{finalizecache}{\markdownSetup{finalizeCache}}
\DeclareOption{frozencache}{\markdownSetup{frozenCache}}
\ExplSyntaxOn
@@ -72,12 +75,39 @@
\ExplSyntaxOff
\newif\ifmarkdownLaTeXLoaded
\markdownLaTeXLoadedfalse
-\AtEndOfPackage{
- \markdownLaTeXLoadedtrue
- \markdownIfOption{noDefaults}{}{
- \markdownSetup{theme=witiko/markdown/defaults}
+\ExplSyntaxOn
+\prop_new:N
+ \g__markdown_latex_built_in_themes_prop
+\ExplSyntaxOff
+\AtEndOfPackage{\markdownLaTeXLoadedtrue}
+\ExplSyntaxOn
+\str_if_eq:VVT
+ \c__markdown_top_layer_tl
+ \c__markdown_option_layer_latex_tl
+ {
+ \use:c
+ { ExplSyntaxOff }
+ \AtEndOfPackage
+ {
+ \__markdown_if_option:nF
+ { noDefaults }
+ {
+ \__markdown_if_option:nTF
+ { experimental }
+ {
+ \__markdown_setup:n
+ { theme = witiko/markdown/defaults@experimental }
+ }
+ {
+ \__markdown_setup:n
+ { theme = witiko/markdown/defaults }
+ }
+ }
+ }
+ \use:c
+ { ExplSyntaxOn }
}
-}
+\ExplSyntaxOff
\def\markdownVersionSpace{ }%
\ProvidesPackage{markdown}[\markdownLastModified\markdownVersionSpace v%
\markdownVersion\markdownVersionSpace markdown renderer]%
@@ -107,6 +137,11 @@
\markdownSetup{#1}%
\markdownInputPlainTeX{#2}%
\endgroup}%
+\renewcommand\yamlInput[2][]{%
+ \begingroup
+ \yamlSetup{jekyllData, expectJekyllData, ensureJekyllData, #1}%
+ \markdownInputPlainTeX{#2}%
+ \endgroup}%
\ExplSyntaxOn
\renewenvironment
{ markdown }
@@ -136,16 +171,35 @@
{ markdown* }
[ 1 ]
{
- \msg_warning:nnn
- { markdown }
- { latex-markdown-star-deprecated }
- { #1 }
+ \__markdown_if_option:nTF
+ { experimental }
+ {
+ \msg_error:nnn
+ { markdown }
+ { latex-markdown-star-deprecated }
+ { #1 }
+ }
+ {
+ \msg_warning:nnn
+ { markdown }
+ { latex-markdown-star-deprecated }
+ { #1 }
+ }
\__markdown_setup:n
{ #1 }
\markdownReadAndConvert@
{ markdown* }
}
{ \markdownEnd }
+\renewenvironment
+ { yaml }
+ {
+ \group_begin:
+ \yamlSetup
+ { jekyllData, expectJekyllData, ensureJekyllData }
+ \markdown
+ }
+ { \yamlEnd }
\msg_new:nnn
{ markdown }
{ latex-markdown-star-deprecated }
@@ -164,17 +218,27 @@
|markdownReadAndConvert<\end{#1}>%
<|end<#1>>>%
|endgroup
-\DeclareOption*{%
- \expandafter\markdownSetup\expandafter{\CurrentOption}}%
-\ProcessOptions\relax
\ExplSyntaxOn
+\prop_new:N \g__markdown_latex_loaded_themes_linenos_prop
+\prop_new:N \g__markdown_latex_loaded_themes_versions_prop
\cs_gset:Nn
- \__markdown_load_theme:nn
+ \__markdown_load_theme:nnn
{
\ifmarkdownLaTeXLoaded
\ifx\@onlypreamble\@notprerr
- \file_if_exist:nTF
- { markdown theme #2.sty }
+ \bool_if:nTF
+ {
+ \bool_lazy_or_p:nn
+ {
+ \prop_if_in_p:Nn
+ \g__markdown_latex_built_in_themes_prop
+ { #1 }
+ }
+ {
+ \file_if_exist_p:n
+ { markdown theme #3.sty }
+ }
+ }
{
\msg_error:nnn
{ markdown }
@@ -182,37 +246,106 @@
{ #1 }
}
{
- \__markdown_plain_tex_load_theme:nn
+ \__markdown_plain_tex_load_theme:nnn
{ #1 }
{ #2 }
+ { #3 }
}
\else
- \file_if_exist:nTF
- { markdown theme #2.sty }
+ \bool_if:nTF
{
- \msg_info:nnn
- { markdown }
- { loading-latex-theme }
+ \bool_lazy_or_p:nn
+ {
+ \prop_if_in_p:Nn
+ \g__markdown_latex_built_in_themes_prop
+ { #1 }
+ }
+ {
+ \file_if_exist_p:n
+ { markdown theme #3.sty }
+ }
+ }
+ {
+ \prop_get:NnNTF
+ \g__markdown_latex_loaded_themes_linenos_prop
{ #1 }
- \RequirePackage
- { markdown theme #2 }
+ \l_tmpa_tl
+ {
+ \prop_get:NnN
+ \g__markdown_latex_loaded_themes_versions_prop
+ { #1 }
+ \l_tmpb_tl
+ \str_if_eq:nVTF
+ { #2 }
+ \l_tmpb_tl
+ {
+ \msg_warning:nnnVn
+ { markdown }
+ { repeatedly-loaded-latex-theme }
+ { #1 }
+ \l_tmpa_tl
+ { #2 }
+ }
+ {
+ \msg_error:nnnnVV
+ { markdown }
+ { different-versions-of-latex-theme }
+ { #1 }
+ { #2 }
+ \l_tmpb_tl
+ \l_tmpa_tl
+ }
+ }
+ {
+ \prop_gput:Nnx
+ \g__markdown_latex_loaded_themes_linenos_prop
+ { #1 }
+ { \tex_the:D \tex_inputlineno:D } % noqa: W200
+ \prop_gput:Nnn
+ \g__markdown_latex_loaded_themes_versions_prop
+ { #1 }
+ { #2 }
+ \prop_if_in:NnTF
+ \g__markdown_latex_built_in_themes_prop
+ { #1 }
+ {
+ \msg_info:nnnn
+ { markdown }
+ { loading-built-in-latex-theme }
+ { #1 }
+ { #2 }
+ \prop_item:Nn
+ \g__markdown_latex_built_in_themes_prop
+ { #1 }
+ }
+ {
+ \msg_info:nnnn
+ { markdown }
+ { loading-latex-theme }
+ { #1 }
+ { #2 }
+ \RequirePackage
+ { markdown theme #3 }
+ }
+ }
}
{
- \__markdown_plain_tex_load_theme:nn
+ \__markdown_plain_tex_load_theme:nnn
{ #1 }
{ #2 }
+ { #3 }
}
\fi
\else
- \msg_info:nnn
+ \msg_info:nnnn
{ markdown }
{ theme-loading-postponed }
{ #1 }
+ { #2 }
\AtEndOfPackage
{
- \__markdown_load_theme:nn
- { #1 }
- { #2 }
+ \__markdown_set_theme:n
+ { #1 @ #2 }
}
\fi
}
@@ -220,13 +353,31 @@
{ markdown }
{ theme-loading-postponed }
{
- Postponing~loading~Markdown~theme~#1~until~
+ Postponing~loading~version~#2~of~Markdown~theme~#1~until~
Markdown~package~has~finished~loading
}
\msg_new:nnn
{ markdown }
+ { loading-built-in-latex-theme }
+ { Loading~version~#2~of~built-in~LaTeX~Markdown~theme~#1 }
+\msg_new:nnn
+ { markdown }
{ loading-latex-theme }
- { Loading~LaTeX~Markdown~theme~#1 }
+ { Loading~version~#2~of~LaTeX~Markdown~theme~#1 }
+\msg_new:nnn
+ { markdown }
+ { repeatedly-loaded-latex-theme }
+ {
+ Version~#3~of~LaTeX~Markdown~theme~#1~was~previously~
+ loaded~on~line~#2,~not~loading~it~again
+ }
+\msg_new:nnn
+ { markdown }
+ { different-versions-of-latex-theme }
+ {
+ Tried~to~load~version~#2~of~LaTeX~Markdown~theme~#1~
+ but~version~#3~has~already~been~loaded~on~line~#4
+ }
\cs_generate_variant:Nn
\msg_new:nnnn
{ nnVV }
@@ -238,7 +389,7 @@
\c_backslash_str
\tl_put_right:Nn
\l_tmpa_tl
- { begin{document} }
+ { begin { document } }
\tl_set:Nn
\l_tmpb_tl
{ Load~Markdown~theme~#1~before~ }
@@ -247,13 +398,31 @@
\c_backslash_str
\tl_put_right:Nn
\l_tmpb_tl
- { begin{document} }
+ { begin { document } }
\msg_new:nnVV
{ markdown }
{ latex-theme-after-preamble }
\l_tmpa_tl
\l_tmpb_tl
+\tl_set:Nn
+ \l_tmpa_tl
+ {
+ \RequirePackage
+ { graphicx }
+ \markdownLoadPlainTeXTheme
+ }
+\prop_gput:NnV
+ \g__markdown_latex_built_in_themes_prop
+ { witiko / dot }
+ \l_tmpa_tl
+\prop_gput:NnV
+ \g__markdown_latex_built_in_themes_prop
+ { witiko / graphicx / http }
+ \l_tmpa_tl
\ExplSyntaxOff
+\DeclareOption*{%
+ \expandafter\markdownSetup\expandafter{\CurrentOption}}%
+\ProcessOptions\relax
\newcommand\markdownMakeOther{%
\count0=128\relax
\loop
diff --git a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_dot.sty b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_dot.sty
deleted file mode 100644
index f96ab1f5ccf..00000000000
--- a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_dot.sty
+++ /dev/null
@@ -1,69 +0,0 @@
-%%
-%% This is file `markdownthemewitiko_dot.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% markdown.dtx (with options: `themes-witiko-dot')
-%%
-%% Copyright (C) 2016-2024 Vít Starý Novotný, Andrej Genčur
-%%
-%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3c
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% This work has the LPPL maintenance status `maintained'.
-%% The Current Maintainer of this work is Vít Starý Novotný.
-%%
-%% Send bug reports, requests for additions and questions
-%% either to the GitHub issue tracker at
-%%
-%% https://github.com/Witiko/markdown/issues
-%%
-%% or to the e-mail address <witiko@mail.muni.cz>.
-%%
-%% MODIFICATION ADVICE:
-%%
-%% If you want to customize this file, it is best to make a copy of
-%% the source file(s) from which it was produced. Use a different
-%% name for your copy(ies) and modify the copy(ies); this will ensure
-%% that your modifications do not get overwritten when you install a
-%% new release of the standard system. You should also ensure that
-%% your modified source file does not generate any modified file with
-%% the same name as a standard file.
-%%
-%% You will also need to produce your own, suitably named, .ins file to
-%% control the generation of files from your source file; this file
-%% should contain your own preambles for the files it generates, not
-%% those in the standard .ins files.
-%%
-%% The names of the source files used are shown above.
-%%
-\ProvidesPackage{markdownthemewitiko_dot}[2021/03/09]%
-\markdownSetup{fencedCode}%
-\RequirePackage{ifthen,grffile}
-\let\markdown@witiko@dot@oldRendererInputFencedCodePrototype
- \markdownRendererInputFencedCodePrototype
-\renewcommand\markdownRendererInputFencedCodePrototype[3]{%
- \def\next##1 ##2\relax{%
- \ifthenelse{\equal{##1}{dot}}{%
- \markdownIfOption{frozenCache}{}{%
- \immediate\write18{%
- if ! test -e #1.pdf.source || ! diff #1 #1.pdf.source;
- then
- dot -Tpdf -o #1.pdf #1;
- cp #1 #1.pdf.source;
- fi}}%
- \markdownRendererImage{Graphviz image}{#1.pdf}{#1.pdf}{##2}%
- }{%
- \markdown@witiko@dot@oldRendererInputFencedCodePrototype
- {#1}{#2}{#3}%
- }%
- }%
- \next#2 \relax}%
-\endinput
-%%
-%% End of file `markdownthemewitiko_dot.sty'.
diff --git a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty
deleted file mode 100644
index d6c2a7566a0..00000000000
--- a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty
+++ /dev/null
@@ -1,87 +0,0 @@
-%%
-%% This is file `markdownthemewitiko_graphicx_http.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% markdown.dtx (with options: `themes-witiko-graphicx-http')
-%%
-%% Copyright (C) 2016-2024 Vít Starý Novotný, Andrej Genčur
-%%
-%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3c
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% This work has the LPPL maintenance status `maintained'.
-%% The Current Maintainer of this work is Vít Starý Novotný.
-%%
-%% Send bug reports, requests for additions and questions
-%% either to the GitHub issue tracker at
-%%
-%% https://github.com/Witiko/markdown/issues
-%%
-%% or to the e-mail address <witiko@mail.muni.cz>.
-%%
-%% MODIFICATION ADVICE:
-%%
-%% If you want to customize this file, it is best to make a copy of
-%% the source file(s) from which it was produced. Use a different
-%% name for your copy(ies) and modify the copy(ies); this will ensure
-%% that your modifications do not get overwritten when you install a
-%% new release of the standard system. You should also ensure that
-%% your modified source file does not generate any modified file with
-%% the same name as a standard file.
-%%
-%% You will also need to produce your own, suitably named, .ins file to
-%% control the generation of files from your source file; this file
-%% should contain your own preambles for the files it generates, not
-%% those in the standard .ins files.
-%%
-%% The names of the source files used are shown above.
-%%
-\ProvidesPackage{markdownthemewitiko_graphicx_http}[2021/03/22]%
-\let\markdown@witiko@graphicx@http@oldRendererImagePrototype
- \markdownRendererImagePrototype
-\RequirePackage{catchfile,grffile}
-\newcount\markdown@witiko@graphicx@http@counter
-\markdown@witiko@graphicx@http@counter=0
-\newcommand\markdown@witiko@graphicx@http@filename{%
- \markdownOptionCacheDir/witiko_graphicx_http%
- .\the\markdown@witiko@graphicx@http@counter}%
-\newcommand\markdown@witiko@graphicx@http@download[2]{%
- wget -O #2 #1 || curl --location -o #2 #1 || rm -f #2}
-\begingroup
-\catcode`\%=12
-\catcode`\^^A=14
-\global\def\markdownRendererImagePrototype#1#2#3#4{^^A
- \begingroup
- \edef\filename{\markdown@witiko@graphicx@http@filename}^^A
- \markdownIfOption{frozenCache}{}{^^A
- \immediate\write18{^^A
- mkdir -p "\markdownOptionCacheDir";
- if printf '%s' "#3" | grep -q -E '^https?:';
- then
- OUTPUT_PREFIX="\markdownOptionCacheDir";
- OUTPUT_BODY="$(printf '%s' '#3' | md5sum | cut -d' ' -f1)";
- OUTPUT_SUFFIX="$(printf '%s' '#3' | sed 's/.*[.]//')";
- OUTPUT="$OUTPUT_PREFIX/$OUTPUT_BODY.$OUTPUT_SUFFIX";
- if ! [ -e "$OUTPUT" ];
- then
- \markdown@witiko@graphicx@http@download{'#3'}{"$OUTPUT"};
- printf '%s' "$OUTPUT" > "\filename";
- fi;
- else
- printf '%s' '#3' > "\filename";
- fi}}^^A
- \CatchFileDef{\filename}{\filename}{\endlinechar=-1}^^A
- \markdown@witiko@graphicx@http@oldRendererImagePrototype^^A
- {#1}{#2}{\filename}{#4}^^A
- \endgroup
- \global\advance\markdown@witiko@graphicx@http@counter by 1\relax}^^A
-\endgroup
-\endinput
-%%
-%% End of file `markdownthemewitiko_graphicx_http.sty'.
diff --git a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty
index d626dab3616..69726fdf195 100644
--- a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty
+++ b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty
@@ -6,7 +6,7 @@
%%
%% markdown.dtx (with options: `themes-witiko-markdown-defaults-latex')
%%
-%% Copyright (C) 2016-2024 Vít Starý Novotný, Andrej Genčur
+%% Copyright (C) 2016-2025 Vít Starý Novotný, Andrej Genčur
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -42,76 +42,231 @@
%%
%% The names of the source files used are shown above.
%%
-\ProvidesPackage{markdownthemewitiko_markdown_defaults}[2024/01/03]%
\markdownLoadPlainTeXTheme
\markdownIfOption{plain}{\iffalse}{\iftrue}
-\@ifclassloaded{beamer}{}{%
- \markdownIfOption{tightLists}{\RequirePackage{paralist}}{}%
- \markdownIfOption{fancyLists}{\RequirePackage{paralist}}{}%
-}
\ExplSyntaxOn
-\@ifpackageloaded{paralist}{
- \tl_new:N
- \l__markdown_latex_fancy_list_item_label_number_style_tl
- \tl_new:N
- \l__markdown_latex_fancy_list_item_label_delimiter_style_tl
- \cs_new:Nn
- \__markdown_latex_fancy_list_item_label_number:nn
- {
- \str_case:nn
- { #1 }
+\bool_new:N
+ \g__markdown_tight_or_fancy_lists_bool
+\bool_gset_false:N
+ \g__markdown_tight_or_fancy_lists_bool
+\__markdown_if_option:nTF
+ { tightLists }
+ {
+ \bool_gset_true:N
+ \g__markdown_tight_or_fancy_lists_bool
+ }
+ {
+ \__markdown_if_option:nT
+ { fancyLists }
+ {
+ \bool_gset_true:N
+ \g__markdown_tight_or_fancy_lists_bool
+ }
+ }
+\bool_new:N
+ \g__markdown_beamer_paralist_or_enumitem_bool
+\bool_gset_true:N
+ \g__markdown_beamer_paralist_or_enumitem_bool
+\@ifclassloaded
+ { beamer }
+ { }
+ {
+ \@ifpackageloaded
+ { paralist }
+ { }
+ {
+ \@ifpackageloaded
+ { enumitem }
+ { }
{
- { Decimal } { #2 }
- { LowerRoman } { \int_to_roman:n { #2 } }
- { UpperRoman } { \int_to_Roman:n { #2 } }
- { LowerAlpha } { \int_to_alph:n { #2 } }
- { UpperAlpha } { \int_to_Alph:n { #2 } }
+ \bool_gset_false:N
+ \g__markdown_beamer_paralist_or_enumitem_bool
}
- }
- \cs_new:Nn
+ }
+ }
+\bool_if:nT
+ {
+ \g__markdown_tight_or_fancy_lists_bool &&
+ ! \g__markdown_beamer_paralist_or_enumitem_bool
+ }
+ {
+ \bool_if:nTF
+ {
+ \bool_lazy_or_p:nn
+ {
+ \str_if_eq_p:en
+ { \markdownThemeVersion }
+ { experimental }
+ }
+ {
+ \bool_lazy_and_p:nn
+ {
+ \prop_if_exist_p:N
+ \g__pdfmanagement_documentproperties_prop
+ }
+ {
+ \bool_lazy_any_p:n
+ {
+ {
+ \prop_if_in_p:Nn
+ \g__pdfmanagement_documentproperties_prop
+ { document / testphase / phase-I }
+ }
+ {
+ \prop_if_in_p:Nn
+ \g__pdfmanagement_documentproperties_prop
+ { document / testphase / phase-II }
+ }
+ {
+ \prop_if_in_p:Nn
+ \g__pdfmanagement_documentproperties_prop
+ { document / testphase / phase-III }
+ }
+ {
+ \prop_if_in_p:Nn
+ \g__pdfmanagement_documentproperties_prop
+ { document / testphase / phase-IV }
+ }
+ {
+ \prop_if_in_p:Nn
+ \g__pdfmanagement_documentproperties_prop
+ { document / testphase / phase-V }
+ }
+ {
+ \prop_if_in_p:Nn
+ \g__pdfmanagement_documentproperties_prop
+ { document / testphase / phase-VI }
+ }
+ }
+ }
+ }
+ }
+ {
+ \RequirePackage
+ { enumitem }
+ }
+ {
+ \RequirePackage
+ { paralist }
+ }
+ }
+\cs_new:Nn
+ \__markdown_latex_fancy_list_item_label_number:nn
+ {
+ \str_case:nn
+ { #1 }
+ {
+ { Decimal } { #2 }
+ { LowerRoman } { \int_to_roman:n { #2 } }
+ { UpperRoman } { \int_to_Roman:n { #2 } }
+ { LowerAlpha } { \int_to_alph:n { #2 } }
+ { UpperAlpha } { \int_to_Alph:n { #2 } }
+ }
+ }
+\cs_new:Nn
+ \__markdown_latex_fancy_list_item_label_delimiter:n
+ {
+ \str_case:nn
+ { #1 }
+ {
+ { Default } { . }
+ { OneParen } { ) }
+ { Period } { . }
+ }
+ }
+\cs_new:Nn
+ \__markdown_latex_fancy_list_item_label:nnn
+ {
+ \__markdown_latex_fancy_list_item_label_number:nn
+ { #1 }
+ { #3 }
\__markdown_latex_fancy_list_item_label_delimiter:n
- {
- \str_case:nn
- { #1 }
- {
- { Default } { . }
- { OneParen } { ) }
- { Period } { . }
- }
- }
- \cs_new:Nn
- \__markdown_latex_fancy_list_item_label:nnn
- {
- \__markdown_latex_fancy_list_item_label_number:nn
+ { #2 }
+ }
+\cs_generate_variant:Nn
+ \__markdown_latex_fancy_list_item_label:nnn
+ { VVn }
+\tl_new:N
+ \l__markdown_latex_fancy_list_item_label_number_style_tl
+\tl_new:N
+ \l__markdown_latex_fancy_list_item_label_delimiter_style_tl
+\@ifpackageloaded { enumitem } {
+ \markdownSetup { rendererPrototypes = {
+ ulBeginTight = {
+ \begin
+ { itemize }
+ [ noitemsep ]
+ },
+ ulEndTight = {
+ \end
+ { itemize }
+ },
+ olBeginTight = {
+ \begin
+ { enumerate }
+ [ noitemsep ]
+ },
+ olEndTight = {
+ \end
+ { enumerate }
+ },
+ dlBeginTight = {
+ \begin
+ { description }
+ [ noitemsep ]
+ },
+ dlEndTight = {
+ \end
+ { description }
+ },
+ fancyOlBegin = {
+ \group_begin:
+ \tl_set:Nn
+ \l__markdown_latex_fancy_list_item_label_number_style_tl
{ #1 }
- { #3 }
- \__markdown_latex_fancy_list_item_label_delimiter:n
+ \tl_set:Nn
+ \l__markdown_latex_fancy_list_item_label_delimiter_style_tl
{ #2 }
- }
- \cs_new:Nn
- \__markdown_latex_paralist_style:nn
- {
- \str_case:nn
+ \begin
+ { enumerate }
+ },
+ fancyOlBeginTight = {
+ \group_begin:
+ \tl_set:Nn
+ \l__markdown_latex_fancy_list_item_label_number_style_tl
{ #1 }
- {
- { Decimal } { 1 }
- { LowerRoman } { i }
- { UpperRoman } { I }
- { LowerAlpha } { a }
- { UpperAlpha } { A }
- }
- \__markdown_latex_fancy_list_item_label_delimiter:n
+ \tl_set:Nn
+ \l__markdown_latex_fancy_list_item_label_delimiter_style_tl
{ #2 }
- }
- \markdownSetup{rendererPrototypes={
- ulBeginTight = {%
+ \begin
+ { enumerate }
+ [ noitemsep ]
+ },
+ fancyOlEnd(|Tight) = {
+ \end { enumerate }
+ \group_end:
+ },
+ fancyOlItemWithNumber = {
+ \item
+ [
+ \__markdown_latex_fancy_list_item_label:VVn
+ \l__markdown_latex_fancy_list_item_label_number_style_tl
+ \l__markdown_latex_fancy_list_item_label_delimiter_style_tl
+ { #1 }
+ ]
+ },
+ } }
+}
+{ \@ifpackageloaded { paralist } {
+ \markdownSetup { rendererPrototypes = {
+ ulBeginTight = {
\group_begin:
\pltopsep=\topsep
\plpartopsep=\partopsep
- \begin{compactitem}
+ \begin { compactitem }
},
ulEndTight = {
- \end{compactitem}
+ \end { compactitem }
\group_end:
},
fancyOlBegin = {
@@ -122,39 +277,20 @@
\tl_set:Nn
\l__markdown_latex_fancy_list_item_label_delimiter_style_tl
{ #2 }
- \__markdown_if_option:nTF
- { startNumber }
- {
- \tl_set:Nn
- \l_tmpa_tl
- { \begin{enumerate} }
- }
- {
- \tl_set:Nn
- \l_tmpa_tl
- { \begin{enumerate}[ }
- \tl_put_right:Nx
- \l_tmpa_tl
- { \__markdown_latex_paralist_style:nn { #1 } { #2 } }
- \tl_put_right:Nn
- \l_tmpa_tl
- { ] }
- }
- \tl_use:N
- \l_tmpa_tl
+ \begin { enumerate }
},
fancyOlEnd = {
- \end{enumerate}
+ \end { enumerate }
\group_end:
},
- olBeginTight = {%
+ olBeginTight = {
\group_begin:
\plpartopsep=\partopsep
\pltopsep=\topsep
- \begin{compactenum}
+ \begin { compactenum }
},
olEndTight = {
- \end{compactenum}
+ \end { compactenum }
\group_end:
},
fancyOlBeginTight = {
@@ -165,35 +301,12 @@
\tl_set:Nn
\l__markdown_latex_fancy_list_item_label_delimiter_style_tl
{ #2 }
- \__markdown_if_option:nTF
- { startNumber }
- {
- \tl_set:Nn
- \l_tmpa_tl
- { \begin{compactenum} }
- }
- {
- \tl_set:Nn
- \l_tmpa_tl
- { \begin{compactenum}[ }
- \tl_put_right:Nx
- \l_tmpa_tl
- { \__markdown_latex_paralist_style:nn { #1 } { #2 } }
- \tl_put_right:Nn
- \l_tmpa_tl
- { ] }
- }
- \tl_put_left:Nn
- \l_tmpa_tl
- {
- \plpartopsep=\partopsep
- \pltopsep=\topsep
- }
- \tl_use:N
- \l_tmpa_tl
+ \plpartopsep=\partopsep
+ \pltopsep=\topsep
+ \begin { compactenum }
},
fancyOlEndTight = {
- \end{compactenum}
+ \end { compactenum }
\group_end:
},
fancyOlItemWithNumber = {
@@ -209,28 +322,31 @@
\group_begin:
\plpartopsep=\partopsep
\pltopsep=\topsep
- \begin{compactdesc}
+ \begin { compactdesc }
},
dlEndTight = {
- \end{compactdesc}
+ \end { compactdesc }
\group_end:
- }}}
- \cs_generate_variant:Nn
- \__markdown_latex_fancy_list_item_label:nnn
- { VVn }
-}{
- \markdownSetup{rendererPrototypes={
- ulBeginTight = {\markdownRendererUlBegin},
- ulEndTight = {\markdownRendererUlEnd},
- fancyOlBegin = {\markdownRendererOlBegin},
- fancyOlEnd = {\markdownRendererOlEnd},
- olBeginTight = {\markdownRendererOlBegin},
- olEndTight = {\markdownRendererOlEnd},
- fancyOlBeginTight = {\markdownRendererOlBegin},
- fancyOlEndTight = {\markdownRendererOlEnd},
- dlBeginTight = {\markdownRendererDlBegin},
- dlEndTight = {\markdownRendererDlEnd}}}
+ }
+ } }
}
+{
+ \markdownSetup
+ {
+ rendererPrototypes = {
+ ulBeginTight = \markdownRendererUlBegin,
+ ulEndTight = \markdownRendererUlEnd,
+ fancyOlBegin = \markdownRendererOlBegin,
+ fancyOlEnd = \markdownRendererOlEnd,
+ olBeginTight = \markdownRendererOlBegin,
+ olEndTight = \markdownRendererOlEnd,
+ fancyOlBeginTight = \markdownRendererOlBegin,
+ fancyOlEndTight = \markdownRendererOlEnd,
+ dlBeginTight = \markdownRendererDlBegin,
+ dlEndTight = \markdownRendererDlEnd,
+ },
+ }
+} }
\ExplSyntaxOff
\RequirePackage{amsmath}
\@ifpackageloaded{unicode-math}{
@@ -272,32 +388,49 @@
{
{ csv }
{
- \begin{table}
- \begin{center}
- \csvautotabular{#3}
- \end{center}
+ \begin { table }
+ \begin { center }
+ \csvautotabular { #3 }
+ \end{ center }
\tl_if_empty:nF
{ #4 }
- { \caption{#4} }
- \end{table}
+ { \caption { #4 } }
+ \end { table }
+ }
+ { html }
+ {
+ \cs_if_exist:NTF
+ \HCode
+ {
+ \if_mode_vertical:
+ \IgnorePar
+ \fi:
+ \EndP
+ \special
+ { t4ht* < #3 }
+ \par
+ \ShowPar
+ }
+ {
+ \__markdown_luaxml_print_html:n
+ { #3 }
+ }
+ }
+ { tex }
+ {
+ \markdownEscape
+ { #3 }
}
- { tex } { \markdownEscape{#3} }
}
- { \markdownInput{#3} }
+ {
+ \markdownInput
+ { #3 }
+ }
},
},
}
\ExplSyntaxOff
\markdownSetup{rendererPrototypes={
- image = {%
- \begin{figure}%
- \begin{center}%
- \includegraphics[alt={#1}]{#3}%
- \end{center}%
- \ifx\empty#4\empty\else
- \caption{#4}%
- \fi
- \end{figure}},
ulBegin = {\begin{itemize}},
ulEnd = {\end{itemize}},
olBegin = {\begin{enumerate}},
@@ -312,7 +445,7 @@
halfTickedBox = {$\boxdot$}}}
\ExplSyntaxOn
\seq_new:N
- \l__markdown_header_identifiers_seq
+ \g__markdown_header_identifiers_seq
\markdownSetup
{
rendererPrototypes = {
@@ -321,8 +454,8 @@
{
rendererPrototypes = {
attributeIdentifier = {
- \seq_put_right:Nn
- \l__markdown_header_identifiers_seq
+ \seq_gput_right:Nn
+ \g__markdown_header_identifiers_seq
{ ##1 }
},
},
@@ -330,10 +463,10 @@
},
headerAttributeContextEnd = {
\seq_map_inline:Nn
- \l__markdown_header_identifiers_seq
+ \g__markdown_header_identifiers_seq
{ \label { ##1 } }
- \seq_clear:N
- \l__markdown_header_identifiers_seq
+ \seq_gclear:N
+ \g__markdown_header_identifiers_seq
},
},
}
@@ -388,7 +521,7 @@
note = {\footnote{#1}}}}
\RequirePackage{ltxcmds}
\ExplSyntaxOn
-\cs_gset:Npn
+\cs_gset_protected:Npn
\markdownRendererInputFencedCodePrototype#1#2#3
{
\tl_if_empty:nTF
@@ -405,22 +538,24 @@
\ltx@ifpackageloaded
{ minted }
{
+ \catcode`\%=14\relax
\catcode`\#=6\relax
\exp_args:NV
\inputminted
\l_tmpa_tl
{ #1 }
+ \catcode`\%=12\relax
\catcode`\#=12\relax
}
{
\ltx@ifpackageloaded
{ listings }
- { \lstinputlisting[language=\l_tmpa_tl]{#1} }
- { \markdownRendererInputFencedCode{#1}{}{} }
+ { \lstinputlisting [ language = \l_tmpa_tl ] { #1 } }
+ { \markdownRendererInputFencedCode { #1 } { } { } }
}
}
}
-\def\markdownLATEXStrongEmphasis#1{%
+\def\markdownLATEXStrongEmphasis#1{
\str_if_in:NnTF
\f@series
{ b }
@@ -496,7 +631,7 @@
}
\newcount\markdownLaTeXCitationsCounter
-\RequirePackage{gobble}
+\long\def\@gobblethree#1#2#3{}%
\def\markdownLaTeXBasicCitations#1#2#3#4#5#6{%
\advance\markdownLaTeXCitationsCounter by 1\relax
\ifx\relax#4\relax
@@ -728,35 +863,39 @@
\RequirePackage{url}
\RequirePackage{expl3}
\ExplSyntaxOn
-\def\markdownRendererLinkPrototype#1#2#3#4{
- \tl_set:Nn \l_tmpa_tl { #1 }
- \tl_set:Nn \l_tmpb_tl { #2 }
- \bool_set:Nn
- \l_tmpa_bool
- {
- \tl_if_eq_p:NN
- \l_tmpa_tl
- \l_tmpb_tl
- }
- \tl_set:Nn \l_tmpa_tl { #4 }
- \bool_set:Nn
- \l_tmpb_bool
- {
- \tl_if_empty_p:N
- \l_tmpa_tl
- }
- \bool_if:nTF
- {
- \l_tmpa_bool && \l_tmpb_bool
- }
- {
- \markdownLaTeXRendererAutolink { #2 } { #3 }
- }{
- \markdownLaTeXRendererDirectOrIndirectLink
- { #1 } { #2 } { #3 } { #4 }
- }
-}
-\def\markdownLaTeXRendererAutolink#1#2{%
+\cs_gset_protected:Npn
+ \markdownRendererLinkPrototype
+ #1#2#3#4
+ {
+ \tl_set:Nn \l_tmpa_tl { #1 }
+ \tl_set:Nn \l_tmpb_tl { #2 }
+ \bool_set:Nn
+ \l_tmpa_bool
+ {
+ \tl_if_eq_p:NN
+ \l_tmpa_tl
+ \l_tmpb_tl
+ }
+ \tl_set:Nn \l_tmpa_tl { #4 }
+ \bool_set:Nn
+ \l_tmpb_bool
+ {
+ \tl_if_empty_p:N
+ \l_tmpa_tl
+ }
+ \bool_if:nTF
+ {
+ \l_tmpa_bool && \l_tmpb_bool
+ }
+ {
+ \markdownLaTeXRendererAutolink { #2 } { #3 }
+ }
+ {
+ \markdownLaTeXRendererDirectOrIndirectLink
+ { #1 } { #2 } { #3 } { #4 }
+ }
+ }
+\def\markdownLaTeXRendererAutolink#1#2{
\tl_set:Nn
\l_tmpa_tl
{ #2 }
@@ -785,7 +924,8 @@
\exp_args:NV
\ref
\l_tmpb_tl
- }{
+ }
+ {
\url { #2 }
}
}
@@ -822,7 +962,50 @@
\begin{table}
\centering}%
\addto@hook\markdownLaTeXTableEnd{%
- \caption{#1}
+ \caption{#1}}%
+ \fi
+ }
+}}
+\ExplSyntaxOn
+\seq_new:N
+ \l__markdown_table_identifiers_seq
+\markdownSetup {
+ rendererPrototypes = {
+ table += {
+ \seq_map_inline:Nn
+ \l__markdown_table_identifiers_seq
+ {
+ \addto@hook
+ \markdownLaTeXTableEnd
+ { \label { ##1 } }
+ }
+ },
+ }
+}
+\markdownSetup {
+ rendererPrototypes = {
+ tableAttributeContextBegin = {
+ \group_begin:
+ \markdownSetup {
+ rendererPrototypes = {
+ attributeIdentifier = {
+ \seq_put_right:Nn
+ \l__markdown_table_identifiers_seq
+ { ##1 }
+ },
+ },
+ }
+ },
+ tableAttributeContextEnd = {
+ \group_end:
+ },
+ },
+}
+\ExplSyntaxOff
+\markdownSetup{rendererPrototypes={
+ table += {%
+ \ifx\empty#1\empty\else
+ \addto@hook\markdownLaTeXTableEnd{%
\end{table}}%
\fi
\addto@hook\markdownLaTeXTable{\begin{tabular}}%
@@ -888,66 +1071,164 @@
\ExplSyntaxOn
\keys_define:nn
- { markdown/jekyllData }
+ { markdown / jekyllData }
{
- author .code:n = { \author{#1} },
- date .code:n = { \date{#1} },
- title .code:n = { \title{#1} },
- }
-\markdownSetup{
- rendererPrototypes = {
- jekyllDataEnd = {
- \AddToHook{begindocument/end}{\maketitle}
+ author .code:n = {
+ \author
+ { #1 }
+ },
+ date .code:n = {
+ \date
+ { #1 }
+ },
+ title .code:n = {
+ \title
+ { #1 }
+ \AddToHook
+ { begindocument / end }
+ { \maketitle }
},
- },
-}
-\ExplSyntaxOff
-\markdownIfOption{strikeThrough}{%
- \RequirePackage{soulutf8}%
- \markdownSetup{
- rendererPrototypes = {
- strikeThrough = {%
- \st{#1}%
- },
- }
}
-}{}
-\markdownIfOption{mark}{%
- \RequirePackage{soulutf8}%
- \markdownSetup{
- rendererPrototypes = {
- mark = {%
- \hl{#1}%
- },
- }
+\__markdown_if_option:nT
+ { mark }
+ {
+ \sys_if_engine_luatex:TF
+ {
+ \RequirePackage
+ { luacolor }
+ \RequirePackage
+ { lua-ul }
+ \markdownSetup
+ {
+ rendererPrototypes = {
+ mark = {
+ \highLight
+ { #1 }
+ },
+ }
+ }
+ }
+ {
+ \RequirePackage
+ { xcolor }
+ \RequirePackage
+ { soul }
+ \markdownSetup
+ {
+ rendererPrototypes = {
+ mark = {
+ \hl
+ { #1 }
+ },
+ }
+ }
+ }
}
-}{}
-\ExplSyntaxOn
\__markdown_if_option:nT
- { linkAttributes }
+ { strikeThrough }
{
- \RequirePackage{graphicx}
- \markdownSetup{
- rendererPrototypes = {
- imageAttributeContextBegin = {
- \group_begin:
- \markdownSetup{
+ \sys_if_engine_luatex:TF
+ {
+ \RequirePackage
+ { lua-ul }
+ \markdownSetup
+ {
rendererPrototypes = {
- attributeKeyValue = {
- \setkeys
- { Gin }
- { { ##1 } = { ##2 } }
+ strikeThrough = {
+ \strikeThrough
+ { #1 }
},
- },
+ }
}
+ }
+ {
+ \RequirePackage
+ { soul }
+ \markdownSetup
+ {
+ rendererPrototypes = {
+ strikeThrough = {
+ \st
+ { #1 }
+ },
+ }
+ }
+ }
+ }
+\seq_new:N
+ \l__markdown_image_identifiers_seq
+\markdownSetup {
+ rendererPrototypes = {
+ image = {
+ \tl_if_empty:nTF
+ { #4 }
+ {
+ \begin { center }
+ \includegraphics
+ [ alt = { #1 } ]
+ { #3 }
+ \end { center }
+ }
+ {
+ \begin { figure }
+ \begin { center }
+ \includegraphics
+ [ alt = { #1 } ]
+ { #3 }
+ \caption { #4 }
+ \seq_map_inline:Nn
+ \l__markdown_image_identifiers_seq
+ { \label { ##1 } }
+ \end { center }
+ \end { figure }
+ }
+ },
+ }
+}
+\__markdown_if_option:nT
+ { linkAttributes }
+ {
+ \RequirePackage { graphicx }
+ }
+\markdownSetup {
+ rendererPrototypes = {
+ imageAttributeContextBegin = {
+ \group_begin:
+ \markdownSetup {
+ rendererPrototypes = {
+ attributeIdentifier = {
+ \seq_put_right:Nn
+ \l__markdown_image_identifiers_seq
+ { ##1 }
+ },
+ attributeKeyValue = {
+ \setkeys
+ { Gin }
+ { { ##1 } = { ##2 } }
+ },
},
- imageAttributeContextEnd = {
- \group_end:
- },
- },
- }
+ }
+ },
+ imageAttributeContextEnd = {
+ \group_end:
+ },
+ },
+}
+\cs_new:Nn
+ \__markdown_luaxml_print_html:n
+ {
+ \luabridge_now:n
+ {
+ local~input_file = assert(io.open(" #1 ", "r"))
+ local~input = assert(input_file:read("*a"))
+ assert(input_file:close())
+ input = "<body>" .. input .. "</body>"
+ local~dom = require("luaxml-domobject").html_parse(input)
+ local~output = require("luaxml-htmltemplates"):process_dom(dom)
+ print(output)
+ }
}
-\cs_gset:Npn
+\cs_gset_protected:Npn
\markdownRendererInputRawInlinePrototype#1#2
{
\str_case:nnF
@@ -959,6 +1240,23 @@
{ #1 }
{ tex }
}
+ { html }
+ {
+ \cs_if_exist:NTF
+ \HCode
+ {
+ \if_mode_vertical:
+ \IgnorePar
+ \EndP
+ \fi:
+ \special
+ { t4ht* < #1 }
+ }
+ {
+ \__markdown_luaxml_print_html:n
+ { #1 }
+ }
+ }
}
{
\__markdown_plain_tex_default_input_raw_inline:nn
@@ -966,7 +1264,7 @@
{ #2 }
}
}
-\cs_gset:Npn
+\cs_gset_protected:Npn
\markdownRendererInputRawBlockPrototype#1#2
{
\str_case:nnF
@@ -978,6 +1276,25 @@
{ #1 }
{ tex }
}
+ { html }
+ {
+ \cs_if_exist:NTF
+ \HCode
+ {
+ \if_mode_vertical:
+ \IgnorePar
+ \fi:
+ \EndP
+ \special
+ { t4ht* < #1 }
+ \par
+ \ShowPar
+ }
+ {
+ \__markdown_luaxml_print_html:n
+ { #1 }
+ }
+ }
}
{
\__markdown_plain_tex_default_input_raw_block:nn
@@ -985,6 +1302,30 @@
{ #2 }
}
}
+\seq_new:N
+ \l__markdown_bracketed_span_identifiers_seq
+\markdownSetup {
+ rendererPrototypes = {
+ bracketedSpanAttributeContextBegin = {
+ \group_begin:
+ \markdownSetup {
+ rendererPrototypes = {
+ attributeIdentifier = {
+ \seq_put_right:Nn
+ \l__markdown_bracketed_span_identifiers_seq
+ { ##1 }
+ },
+ },
+ }
+ },
+ bracketedSpanAttributeContextEnd = {
+ \seq_map_inline:Nn
+ \l__markdown_bracketed_span_identifiers_seq
+ { \label { ##1 } }
+ \group_end:
+ },
+ },
+}
\ExplSyntaxOff
\fi % Closes `\markdownIfOption{plain}{\iffalse}{\iftrue}`
\endinput
diff --git a/Master/texmf-dist/tex/latex/mathalpha/mathalpha.sty b/Master/texmf-dist/tex/latex/mathalpha/mathalpha.sty
index c32088ce658..bab8cba86d0 100644
--- a/Master/texmf-dist/tex/latex/mathalpha/mathalpha.sty
+++ b/Master/texmf-dist/tex/latex/mathalpha/mathalpha.sty
@@ -1,6 +1,6 @@
\NeedsTeXFormat{LaTeX2e}
-\def\mathalphaVersion{1.143}
-\def\mathalphaDate{2021/11/18}
+\def\mathalphaVersion{1.145}
+\def\mathalphaDate{2025/01/17}
\ProvidesPackage{mathalpha}[\mathalphaDate\space-\space\mathalphaVersion
mathalpha (License LPPL) Michael Sharpe]
\message{`mathalpha' v\mathalphaVersion, \mathalphaDate, a renaming of mathalfa (msharpe)}
@@ -21,7 +21,7 @@
\def\mathalfa@scrm{m}
% available choices
-\def\bb@lst{ams, lucida, mathpi, mma, mt, mth, pazo, fourier, esstix, boondox, px, tx, txof, libus, dsserif, bboldxLight, bboldx, dsfontserif, dsfontsans, stixtwo, stix}
+\def\bb@lst{ams, lucida, mathpi, mma, mt, mth, pazo, fourier, esstix, boondox, px, tx, txof, libus, dsserif, bboldxLight, bboldx, dsfontserif, dsfontsans, stixtwo, stix, ncmbbr, ncmbbk}
\def\cal@lst{cm, euler, rsfso, rsfs, lucida, mathpi, mma, mt, mtc, zapfc, esstix, boondox, boondoxo, dutchcal, pxtx, bickham, bickhams, stix, txupr, boondoxupr, kp, stixplain, stixfancy, stixtwoplain, stixtwofancy}
\def\frak@lst{euler, lucida, mathpi, mma, mt, esstix, boondox, pxtx, stixtwo}
\def\mathalfa@bbnr{-1}\def\mathalfa@calnr{-1}
@@ -66,7 +66,7 @@
\define@boolkey{mathalfa}{bfbb}[true]{\def\mathalfa@bbm{b}\@nameuse{mathalfa@bbb#1}}
% showoptions
\DeclareOption{showoptions}{\PackageError{mathalpha}{Package Options:^^J bb=\bb@lst^^J cal=\cal@lst^^J frak=\frak@lst^^J scr=\cal@lst^^J bbscaled=1.0, calscaled=1.0, frakscaled=1.0, scrscaled=1.0^^J Bold versions may be forced by one of options bfbb, bfcal, bffrak, bfscr.^^J The following exceptions should be noted:^^J
-bb: stix2, dsfontsans, dsfontserif, libusbb, tx, esstix,^^J\space\space pazo, mathpi, ams^^J
+bb: stixtwo, dsfontsans, dsfontserif, libusbb, tx, esstix,^^J\space\space pazo, mathpi, ams, stix, ncmbbr, ncmbbk^^J
cal and scr: esstix, zapfc, mtc, mathpical, rsfs, rsfso^^J
frak: lucida, esstix, mathpi^^J
}{}}%was scr=\scr@lst
@@ -108,7 +108,7 @@ frak: lucida, esstix, mathpi^^J
% Blackboard Bold
%%%%%%%%%%%%%%%%%% START \mathbb
%
-\ifcase\mathalfa@bbnr\relax% item 0 of {ams, lucida, mathpi, mma, mt, mth, pazo, fourier, esstix, boondox, px, tx, txof, libus, dsserif, bboldx-light, bboldx, dsfont-serif, dsfont-sans, stix}
+\ifcase\mathalfa@bbnr\relax% item 0 of {ams, lucida, mathpi, mma, mt, mth, pazo, fourier, esstix, boondox, px, tx, txof, libus, dsserif, bboldx-light, bboldx, dsfont-serif, dsfont-sans, stix, stixtwo, ncmbbr, ncmbbk}
% ams
\ifmathalfa@bbb\mathalpha@boldError{ams}{bb}\fi
\DeclareFontFamily{U}{msb}{}%
@@ -408,6 +408,31 @@ frak: lucida, esstix, mathpi^^J
% \def\txtbbeight{{\usefont{U}{stixonebb}{m}{n}8}}
% \def\txtbbnine{{\usefont{U}{stixonebb}{m}{n}9}}
\fi
+\or %ncmbbr
+ \DeclareFontFamily{U}{ncmbbr}{\skewchar \font =45}
+ \DeclareFontShape{U}{ncmbbr}{m}{n}{
+ <-> \mathalfa@bbscaled mathalpha-ncmbb-regular}{}
+ \DeclareFontShape{U}{ncmbbr}{b}{n}{
+ <-> \mathalfa@bbscaled mathalpha-ncmbb-bold}{}
+ \DeclareMathAlphabet{\mathbb}{U}{ncmbbr}{\mathalfa@bbm}{n}
+ \ifmathalfa@bbb\else
+ \SetMathAlphabet{\mathbb}{bold}{U}{ncmbbr}{b}{n}
+ \DeclareMathAlphabet{\mathbfbb} {U}{ncmbbr}{b}{n}
+ \fi
+\or %ncmbbk
+ \DeclareFontFamily{U}{ncmbbk}{\skewchar \font =45}
+ \DeclareFontShape{U}{ncmbbk}{m}{n}{
+ <-> \mathalfa@bbscaled mathalpha-ncmbb-book}{}
+ \DeclareFontShape{U}{ncmbbk}{b}{n}{
+ <-> \mathalfa@bbscaled mathalpha-ncmbb-bold}{}
+ \DeclareMathAlphabet{\mathbb}{U}{ncmbbk}{\mathalfa@bbm}{n}
+ \ifmathalfa@bbb\else
+ \SetMathAlphabet{\mathbb}{bold}{U}{ncmbbk}{b}{n}
+ \DeclareMathAlphabet{\mathbfbb} {U}{ncmbbk}{b}{n}
+ \fi
+
+
+
\fi
%%%%%%%%%%%%%%%%%% END \mathbb
diff --git a/Master/texmf-dist/tex/latex/mathastext/mathastext.sty b/Master/texmf-dist/tex/latex/mathastext/mathastext.sty
index 4ff41f668ac..b63a611e105 100644
--- a/Master/texmf-dist/tex/latex/mathastext/mathastext.sty
+++ b/Master/texmf-dist/tex/latex/mathastext/mathastext.sty
@@ -23,7 +23,7 @@
%%----------------------------------------------------------------
%% Package: mathastext
%% Info: Use the text font in math mode (JFB)
-%% Version: 1.4b 2024/07/27
+%% Version: 1.4e 2024/10/26
%% License: LPPL 1.3c (http://www.latex-project.org/lppl/lppl-1-3c.txt)
%% Copyright (C) 2011-2019, 2022-2024 Jean-Francois Burnol
%% <jfbu at free dot fr>
@@ -33,7 +33,7 @@
%%----------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}[2020/02/02]
\ProvidesPackage {mathastext}
- [2024/07/27 v1.4b Use the text font in math mode (JFB)]
+ [2024/10/26 v1.4e Use the text font in math mode (JFB)]
\def\mst@infoline#1{\immediate\write\m@ne
{(\space\space\space mathastext:\space\space\space) #1}}
\immediate\write\m@ne{}
@@ -73,27 +73,22 @@
\ifmst@LuaTeX\mst@XeOrLuatrue\fi
\ifmst@XeTeX \mst@XeOrLuatrue\fi
\ifmst@XeTeX
- \def\mst@OnlyIfNotMathActive#1{%
- \ifnum\mst@Umathcodenum`#1="1FFFFF
- \expandafter\@gobble
- \else\expandafter\@firstofone
- \fi
- }
-\else\ifmst@LuaTeX
- \def\mst@OnlyIfNotMathActive#1{%
- \ifnum\mst@Umathcodenum`#1="1000000
- \expandafter\@gobble
- \else\expandafter\@firstofone
- \fi
- }
+ \def\mst@activemathcodenum@space{"1FFFFF }%
+ \let\mst@mathcodenum\mst@Umathcodenum
\else
- \def\mst@OnlyIfNotMathActive#1{%
- \ifnum\mathcode`#1="8000
- \expandafter\@gobble
- \else\expandafter\@firstofone
- \fi
- }
+\ifmst@LuaTeX
+ \def\mst@activemathcodenum@space{"1000000 }%
+ \let\mst@mathcodenum\mst@Umathcodenum
+\else
+ \def\mst@activemathcodenum@space{"8000 }%
+ \let\mst@mathcodenum\mathcode
\fi\fi
+\def\mst@OnlyIfNotMathActive#1{%
+ \ifnum\mst@mathcodenum`#1=\mst@activemathcodenum@space
+ \expandafter\@gobble
+ \else\expandafter\@firstofone
+ \fi
+}
\def\mst@oti{OT1}
\def\mst@tu{TU}
\def\mst@OneifUniEnc{\ifx\mst@tmp@enc\mst@tu1\else0\fi}
@@ -308,7 +303,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\mst@@mathactivate #1{}{\mst@active@math@prime}%
\fi
}%
-\def\mst@undo@mathactivateprime{\mst@mathdeactivate#1{"8000}}%
+\def\mst@undo@mathactivateprime{\mst@mathdeactivate#1{\mst@activemathcodenum@space}}%
}\expandafter\mst@tmp\string'
\def\mst@active@math@prime{\sp\bgroup\mskip\mst@prime@muskip\prim@s}
\ifmst@everymath
@@ -358,7 +353,9 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\def\mst@fork{\ifmmode\mst@magic@v\fi\@thirdofthree}
\def\mst@safefork{\ifmmode\if@safe@actives\else\mst@magic@vi\fi\fi\@thirdofthree}
\def\mst@do@activecase#1#2#3{%
- \ifx\relax #2\relax\mathcode`#1=`#1\relax\else\mathcode`#1=#3\relax\fi
+ \expandafter\if\string-#1\else
+ \ifx\relax #2\relax\mathcode`#1=`#1\relax\else\mathcode`#1=#3\relax\fi
+ \fi
\ifmst@everymath\else\@ifundefined{mst@hackedshorthand@#1}{\fi
\expandafter\let\csname mst@orig@user@active#1\expandafter\endcsname
\csname user@active#1\endcsname
@@ -401,7 +398,8 @@ defaultbf,defaultit,defaultsf,defaulttt}}
{\expandafter\let
\csname mst@prioractivemeaning@##1\endcsname ~}
{}%
- \def~{\ifmmode##2##3\else##1\fi}%
+ \def~{\ifmmode\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+ {##2##3}{##1}}%
}%
}%
\fi
@@ -416,7 +414,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\ifmst@everymath
\else
\def\mst@mathdeactivate#1#2{%
- \mathcode`#1=#2\relax
+ \if#1\string-\else\mst@mathcodenum`#1=#2\relax\fi
\@ifundefined{active@char#1}
{\@ifundefined{mst@prioractivemeaning@#1}
{}%
@@ -452,9 +450,10 @@ defaultbf,defaultit,defaultsf,defaulttt}}
{\the\mst@do@nonletters\mst@mathactivate#1#2#3}%
}%
\else
- \def\mst@addtodo@nonletters#1#2#3{\mst@do@nonletters\expandafter
+ \def\mst@addtodo@nonletters#1#2#3{%
+ \mst@do@nonletters\expandafter
{\the\mst@do@nonletters\mst@mathactivate#1#2#3}%
- \edef\mst@tmp{\noexpand\mst@mathdeactivate#1{\the\mathcode`#1}}%
+ \edef\mst@tmp{\noexpand\mst@mathdeactivate#1{\the\mst@mathcodenum`#1}}%
\mst@undo@nonletters\expandafter\expandafter\expandafter
{\expandafter\mst@tmp\the\mst@undo@nonletters}%
}%
@@ -754,23 +753,21 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\providecommand*\MTgreekitdefault{it}
\newif\ifmst@greek@lower@up
\newif\ifmst@greek@upper@up
-\def\mst@update@greeksh{
- \def\mst@greek@lsh{\mst@ltsh}
- \def\mst@greek@ush{\mst@opsh}
- \mst@greek@lower@uptrue
- \expandafter\in@\expanded{{\mst@ltsh.}}{it.,sl.}%
+\def\mst@update@greeksh#1#2{
+ \def\mst@greek@lsh{#1}
+ \def\mst@greek@ush{#2}
+ \mst@greek@lower@uptrue
+ \expandafter\in@\expanded{{\mst@greek@lsh.}}{it.,sl.}%
\ifin@\mst@greek@lower@upfalse\fi
- \mst@greek@upper@uptrue
- \expandafter\in@\expanded{{\mst@opsh.}}{it.,sl.}%
+ \mst@greek@upper@uptrue
+ \expandafter\in@\expanded{{\mst@greek@ush.}}{it.,sl.}%
\ifin@\mst@greek@upper@upfalse\fi
\ifmst@itgreek
- \def\mst@greek@lsh{\MTgreekitdefault}
\def\mst@greek@ush{\MTgreekitdefault}
\mst@greek@lower@upfalse
\mst@greek@upper@upfalse
\fi
\ifmst@upgreek
- \def\mst@greek@lsh{\MTgreekupdefault}
\def\mst@greek@ush{\MTgreekupdefault}
\mst@greek@lower@uptrue
\mst@greek@upper@uptrue
@@ -778,8 +775,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\ifmst@frenchmath
\ifmst@itgreek\else
\ifmst@upgreek\else
- \def\mst@greek@lsh{\mst@opsh}
- \def\mst@greek@ush{\mst@opsh}
+ \def\mst@greek@ush{#2}
\mst@greek@lower@uptrue
\mst@greek@upper@uptrue
\fi\fi
@@ -793,7 +789,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\mst@greek@upper@uptrue
\fi
}
-\mst@update@greeksh
+\mst@update@greeksh{\mst@ltsh}{\mst@opsh}
\ifmst@LGRgreek
\DeclareFontEncoding{LGR}{}{}
\DeclareSymbolFont{mtgreekup}{LGR}{\mst@fam}{\mst@ser}{\MTgreekupdefault}
@@ -1092,7 +1088,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
}%
\AtBeginDocument{%
\let\mst@orig@abd@ast\ast
- \edef\MTnormalasterisk{\noexpand\mst@mathdeactivate*{\the\mathcode`\*}%
+ \edef\MTnormalasterisk{\noexpand\mst@mathdeactivate*{\the\mst@mathcodenum`\*}%
\let\noexpand\ast\noexpand\mst@orig@abd@ast}%
\def\MTactiveasterisk{\def\ast{\mst@ast}%
\mst@mathactivate*{}\mst@ast
@@ -1197,7 +1193,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\mathchardef\mst@minus@sign=\mathcode`\-\relax
\fi
\@ifpackageloaded{amsmath}
- {\def\relbar{\mathrel{\mathpalette\mathsm@sh\mst@minus@sign}}}
+ {\DeclareRobustCommand\relbar{\mathrel{\mathpalette\mathsm@sh\mst@minus@sign}}}
{\DeclareRobustCommand\relbar{\mathrel{\smash\mst@minus@sign}}}
\DeclareRobustCommand\rightarrowfill{$\m@th\mathord{\relbar}\mkern-7mu%
\cleaders\hbox{$\mkern-2mu\relbar\mkern-2mu$}\hfill
@@ -1208,78 +1204,130 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\fi
\let\mst@subduedminus\empty
\let\mst@nonsubduedminus\empty
-\def\mst@dothe@endashstuff#1#2#3{%
+\def\mst@dothe@endashstuff#1#2#3#4{%
\edef\mst@tmp@enc{#3}%
\if1\mst@OneifUniEnc
\mst@Umathchardef#1=2 \symmtoperatorfont "\mst@unicodeminus\relax
\mst@Umathchardef#2=7 \symmtoperatorfont "\mst@unicodeminus\relax
\else
- \DeclareMathSymbol{#1}{\mathbin}{mtoperatorfont}
- {\csname\mst@tmp@enc\string\textendash\endcsname}
- \DeclareMathSymbol{#2}{\mathalpha}{mtoperatorfont}
- {\csname\mst@tmp@enc\string\textendash\endcsname}
+ \@ifundefined{\mst@tmp@enc\string\textendash}%
+ {%
+ \PackageWarningNoLine{mathastext}
+ {Impossible to let the \string- use an EN-DASH in a math\MessageBreak
+ version with \mst@tmp@enc\space encoding, as there is none there.\MessageBreak
+ Reverting to default in math version #4}%
+ \let#1\relax\let#2\relax
+ }%
+ {%
+ \DeclareMathSymbol{#1}{\mathbin}{mtoperatorfont}
+ {\csname\mst@tmp@enc\string\textendash\endcsname}%
+ \DeclareMathSymbol{#2}{\mathalpha}{mtoperatorfont}
+ {\csname\mst@tmp@enc\string\textendash\endcsname}%
+ }%
\fi
}%
-\def\mst@dothe@emdashstuff#1#2#3{%
+\def\mst@dothe@emdashstuff#1#2#3#4{%
\edef\mst@tmp@enc{#3}%
\if1\mst@OneifUniEnc
\mst@Umathchardef#1=2 \symmtoperatorfont "2014\relax
\mst@Umathchardef#2=7 \symmtoperatorfont "2014\relax
\else
- \DeclareMathSymbol{#1}{\mathbin}{mtoperatorfont}
- {\csname\mst@tmp@enc\string\textemdash\endcsname}
- \DeclareMathSymbol{#2}{\mathalpha}{mtoperatorfont}
- {\csname\mst@tmp@enc\string\textemdash\endcsname}
+ \@ifundefined{\mst@tmp@enc\string\textendash}%
+ {%
+ \PackageWarningNoLine{mathastext}
+ {Impossible to let the \string- use an EM-DASH in a math\MessageBreak
+ version with \mst@tmp@enc\space encoding, as there is none there.\MessageBreak
+ Reverting to default in math version #4}%
+ \let#1\relax\let#2\relax
+ }%
+ {%
+ \DeclareMathSymbol{#1}{\mathbin}{mtoperatorfont}
+ {\csname\mst@tmp@enc\string\textemdash\endcsname}%
+ \DeclareMathSymbol{#2}{\mathalpha}{mtoperatorfont}
+ {\csname\mst@tmp@enc\string\textemdash\endcsname}%
+ }%
\fi
}%
\def\mst@dothe@hyphenstuff#1#2{%
\DeclareMathSymbol{#1}{\mathbin}{\mst@font@tbu}{"2D}%
\DeclareMathSymbol{#2}{\mathalpha}{\mst@font@tbu}{"2D}%
}%
-\def\mst@varfam@minus{\@nameuse{mst@varfam@minus@mv\math@version}}%
+\def\mst@varfam@minus{\csname mst@varfam@minus@mv\math@version\endcsname}%
+\def\mst@minus{\csname mst@minus@mv\math@version\endcsname}%
\ifmst@nominus\else
- \expandafter\mst@addtodo@nonletters\string-\mathbin\mst@varfam@minus
+ \ifmst@everymath
+ \expandafter\mst@addtodo@nonletters\string-\mathbin\mst@varfam@minus
+ \else
+ \def\mst@tmp#1{%
+ \mst@do@nonletters\expandafter{\the\mst@do@nonletters
+ \@ifundefined{mst@minus@mv\math@version}
+ {\mst@nonmathmathactiveminus}
+ {\mst@mathactivate#1\mathbin\mst@varfam@minus}%
+ }%
+ \mst@undo@nonletters\expandafter{\the\mst@undo@nonletters
+ \mst@mathdeactivate#1{}%
+ \mst@nonmathactiveminus}%
+ }\expandafter\mst@tmp\string-%
+ \def\mst@nonmathactiveminus{%
+ \ifmst@subdued
+ \ifx\math@version\mst@normalversionname\mst@subduedminus\else
+ \ifx\math@version\mst@boldversionname \mst@subduedminus\else
+ \mst@nonsubduedminus\fi\fi
+ \else
+ \mst@nonsubduedminus
+ \fi}%
+ \fi
\def\mst@nonsubduedminus{%
\edef\mst@tmp@enc{\csname mst@encoding@\math@version\endcsname}%
\if1\mst@OneifUniEnc
\mst@Umathcode`\-=\expandafter
- \mst@UmathchardefWorkAround@i
+ \mst@ParseUmathchardef
\csname mst@minus@mv\math@version\endcsname
\relax
\else
- \mathcode`\-=\@nameuse{mst@minus@mv\math@version}%
+ \@ifundefined{mst@minus@mv\mst@tmp@enc}
+ {\mst@subduedminus}
+ {\mathcode`\-=\mst@minus}%
\fi
- }%
+ }%
+ \def\mst@ParseUmathchardef{\expandafter\mst@ParseUmathchardef@i\meaning}%
+ \def\mst@ParseUmathchardef@i#1"{"}%
\ifmst@endash\else\ifmst@emdash\else
- \def\mst@nonsubduedminus{%
- \mathcode`\-=\@nameuse{mst@minus@mv\math@version}%
- }%
+ \def\mst@nonsubduedminus{\mathcode`\-=\mst@minus}%
\fi\fi
\fi
-\def\mst@UmathchardefWorkAround@i
- {\expandafter\mst@UmathchardefWorkAround@ii\meaning}%
-\def\mst@UmathchardefWorkAround@ii#1"{"}%
\let\mst@subduedhbar\@empty
\let\mst@nonsubduedhbar\@empty
\ifmst@nohbar\else
\def\mst@subduedhbar{\let\hbar\mst@original@hbar}%
\def\mst@nonsubduedhbar{\expandafter
- \let\expandafter\hbar\csname mst@hbar@mv\math@version\endcsname}%
+ \let\expandafter\hbar\csname mst@hbar@mv\math@version\endcsname
+ \ifx\hbar\relax\let\hbar\mst@original@hbar\fi}%
\fi
\def\mst@mathrlap{\mathpalette\mst@mathrlapinternal}
\def\mst@mathrlapinternal#1#2{\rlap{$\mathsurround=0pt#1{#2}$}}
-\def\mst@dothe@hbarstuff#1#2#3{%
+\def\mst@dothe@hbarstuff#1#2#3#4{%
\edef\mst@tmp@enc{#3}%
\if1\mst@OneifUniEnc
\mst@Umathchardef#1="7 \symmtletterfont "0127 \relax %% or 210F?
\else
- \begingroup
- \def\@text@composite##1\@text@composite##2{##2}%
- \let\add@accent\@firstoftwo
- \mst@DeclareMathAccent{#2}{\mathalpha}{mtletterfont}%
- {\csname\mst@tmp@enc\string\=\endcsname{}}%
- \endgroup
- \protected\def#1{\mst@mathrlap{#2{\ }}\MTmathcharletterh}%
+ \@ifundefined{\mst@tmp@enc\string\=}%
+ {%
+ \PackageWarningNoLine{mathastext}
+ {Impossible to define the \string\hbar\space using a font with\MessageBreak
+ \mst@tmp@enc\space encoding, as there is no \string\= accent.\MessageBreak
+ Reverting to default \string\hbar\space in math version #4}%
+ \let#1\relax
+ }%
+ {%
+ \begingroup
+ \def\@text@composite##1\@text@composite##2{##2}%
+ \let\add@accent\@firstoftwo
+ \mst@DeclareMathAccent{#2}{\mathalpha}{mtletterfont}%
+ {\csname\mst@tmp@enc\string\=\endcsname{}}%
+ \endgroup
+ \protected\def#1{\mst@mathrlap{#2{\ }}\MTmathcharletterh}%
+ }%
\fi
}%
\ifmst@noplus\else\mst@infoline{\string+ and \string=}
@@ -1293,9 +1341,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\else
\mathchardef\mst@equal@sign=\mathcode`\=\relax
\fi
-\@ifpackageloaded{amsmath}
-{\def\Relbar{\mathrel\mst@equal@sign}}
-{\DeclareRobustCommand\Relbar{\mathrel{\mst@equal@sign}}}
+\DeclareRobustCommand\Relbar{\mathrel\mst@equal@sign}
\DeclareMathSymbol{=}{\mathrel}{\mst@font@tbu}{"3D}
\DeclareMathSymbol{\mst@varfam@equal}{\mathalpha}{\mst@font@tbu}{"3D}
\mst@infoline{adding \string= \string; and \string+ to \string\nfss@catcodes}
@@ -2156,6 +2202,10 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\Mathastextstandardgreek\MTstandardgreek
\let\Mathastextcustomgreek\MTcustomgreek
\ifmst@subdued\else\MTcustomgreek\fi
+\let\mst@subduedinodot\@empty
+\let\mst@nonsubduedinodot\@empty
+\ifmst@noletters
+\else
\def\mst@subduedinodot{%
\let\inodot\mst@original@imath
\let\jnodot\mst@original@jmath
@@ -2165,18 +2215,42 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\csname mst@inodot@mv\math@version\endcsname
\expandafter\let\expandafter\jnodot
\csname mst@jnodot@mv\math@version\endcsname
+ \ifx\inodot\relax\let\inodot\mst@original@imath\fi
+ \ifx\jnodot\relax\let\jnodot\mst@original@jmath\fi
}%
-\def\mst@dothe@inodotstuff#1#2#3{%
+\fi
+\def\mst@dothe@inodotstuff#1#2#3#4{%
\edef\mst@tmp@enc{#3}%
\if1\mst@OneifUniEnc
\mst@Umathchardef#1="7 \symmtletterfont "0131 \relax
\mst@Umathchardef#2="7 \symmtletterfont "0237 \relax
\else
- \DeclareMathSymbol{#1}{\mathalpha}{mtletterfont}
- {\csname\mst@tmp@enc\string\i\endcsname}
- \DeclareMathSymbol{#2}{\mathalpha}{mtletterfont}
- {\csname\mst@tmp@enc\string\j\endcsname}
- \fi}%
+ \@ifundefined{\mst@tmp@enc\string\i}%
+ {%
+ \PackageWarningNoLine{mathastext}
+ {Impossible to define the \string\inodot\space using a font with\MessageBreak
+ \mst@tmp@enc\space encoding, as there is no \string\i.\MessageBreak
+ Reverting to default \string\imath\space in math version #4}%
+ \let#1\relax
+ }%
+ {%
+ \DeclareMathSymbol{#1}{\mathalpha}{mtletterfont}
+ {\csname\mst@tmp@enc\string\i\endcsname}%
+ }%
+ \@ifundefined{\mst@tmp@enc\string\j}%
+ {%
+ \PackageWarningNoLine{mathastext}
+ {Impossible to define the \string\jnodot\space using a font with\MessageBreak
+ \mst@tmp@enc\space encoding, as there is no \string\j.\MessageBreak
+ Reverting to default \string\jmath\space in math version #4}%
+ \let#2\relax
+ }%
+ {%
+ \DeclareMathSymbol{#2}{\mathalpha}{mtletterfont}
+ {\csname\mst@tmp@enc\string\j\endcsname}%
+ }%
+ \fi
+}%
\ifmst@defaultimath\else\mst@infoline{\string\imath\space and \string\jmath\space}
\AtEndOfPackage{\AtBeginDocument{%
\protected\def\imath{\inodot}%
@@ -2194,9 +2268,12 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\csname mst@original@\@tempa\endcsname
\expandafter\let\csname\@tempa\space\expandafter\endcsname
\csname mst@original@\@tempa\space\endcsname
- }%
+ }%
}%
\def\mst@nonsubduedmathaccents{%
+ \@ifundefined{mst@grave@mv\math@version}
+ {\mst@subduedmathaccents}
+ {%
\@tfor\@tempa:={grave}{acute}{check}{breve}{bar}%
{dot}{ddot}{mathring}{hat}{tilde}%
\do
@@ -2204,7 +2281,8 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\csname mst@\@tempa @mv\math@version\endcsname
\expandafter\let\csname\@tempa\space\expandafter\endcsname
\csname mst@\@tempa @mv\math@version\space\endcsname
-}%
+ }%
+ }%
}%
\def\mst@dothe@mathaccentsstuff#1#2{%
\begingroup
@@ -2214,52 +2292,52 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\add@unicode@accent\@firstoftwo
\if1\mst@OneifUniEnc
\ifmst@unimathaccents
- \expandafter\xdef\csname mst@grave@mv#1\mst@robustifyingspace\endcsname
+ \expandafter\xdef\csname mst@grave@mv#1 \endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\`\endcsname{}\relax}%
- \expandafter\xdef\csname mst@acute@mv#1\mst@robustifyingspace\endcsname
+ \expandafter\xdef\csname mst@acute@mv#1 \endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\'\endcsname{}\relax}%
- \expandafter\xdef\csname mst@check@mv#1\mst@robustifyingspace\endcsname
+ \expandafter\xdef\csname mst@check@mv#1 \endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\v\endcsname{}\relax}%
- \expandafter\xdef\csname mst@breve@mv#1\mst@robustifyingspace\endcsname
+ \expandafter\xdef\csname mst@breve@mv#1 \endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\u\endcsname{}\relax}%
- \expandafter\xdef\csname mst@bar@mv#1\mst@robustifyingspace\endcsname
+ \expandafter\xdef\csname mst@bar@mv#1 \endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\=\endcsname{}\relax}%
- \expandafter\xdef\csname mst@dot@mv#1\mst@robustifyingspace\endcsname
+ \expandafter\xdef\csname mst@dot@mv#1 \endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\.\endcsname{}\relax}%
- \expandafter\xdef\csname mst@ddot@mv#1\mst@robustifyingspace\endcsname
+ \expandafter\xdef\csname mst@ddot@mv#1 \endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\"\endcsname{}\relax}%
- \expandafter\xdef\csname mst@mathring@mv#1\mst@robustifyingspace\endcsname
+ \expandafter\xdef\csname mst@mathring@mv#1 \endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\r\endcsname{}\relax}%
- \expandafter\xdef\csname mst@hat@mv#1\mst@robustifyingspace\endcsname
+ \expandafter\xdef\csname mst@hat@mv#1 \endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\^\endcsname{}\relax}%
- \expandafter\xdef\csname mst@tilde@mv#1\mst@robustifyingspace\endcsname
+ \expandafter\xdef\csname mst@tilde@mv#1 \endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
@@ -2285,6 +2363,14 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\expandafter\noexpand\csname mst@\@tempa @mv#1 \endcsname}%
}%
\else
+ \@ifundefined{#2\string\`}
+ {\PackageWarningNoLine{mathastext}
+ {Impossible to pick up text accents from an #2\MessageBreak
+ encoded font. The mathaccent option will be\MessageBreak
+ ignored for the math version #1}%
+ \let\mst@tempa0}
+ {\let\mst@tempa1}%
+ \if\mst@tempa1%
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@grave@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\`\endcsname{}}
@@ -2315,6 +2401,9 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@tilde@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\~\endcsname{}}
+ \else
+ \global\expandafter\let\csname mst@grave@mv#1\endcsname\relax
+ \fi
\fi
\endgroup
}%
@@ -2430,43 +2519,9 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\ifmst@needeuler
\SetMathAlphabet{\MathEulerBold}{#2}{U}{zeur}{\mst@bold}{n}%
\fi
- \def\mst@greek@lsh@loc{\csname mst@ltshape@\mst@version\endcsname}%
- \def\mst@greek@ush@loc{\csname mst@shape@\mst@version\endcsname}%
- \mst@greek@lower@uptrue
- \expandafter\in@\expanded{{\mst@greek@lsh@loc.}}{it.,sl.}%
- \ifin@\mst@greek@lower@upfalse\fi
- \mst@greek@upper@uptrue
- \expandafter\in@\expanded{{\mst@greek@ush@loc.}}{it.,sl.}%
- \ifin@\mst@greek@upper@upfalse\fi
- \ifmst@itgreek
- \def\mst@greek@lsh@loc{\MTgreekitdefault}%
- \def\mst@greek@ush@loc{\MTgreekitdefault}%
- \mst@greek@lower@upfalse
- \mst@greek@upper@upfalse
- \fi
- \ifmst@upgreek
- \def\mst@greek@lsh@loc{\MTgreekupdefault}%
- \def\mst@greek@ush@loc{\MTgreekupdefault}%
- \mst@greek@lower@uptrue
- \mst@greek@upper@uptrue
- \fi
- \ifmst@frenchmath
- \ifmst@itgreek\else
- \ifmst@upgreek\else
- \def\mst@greek@lsh@loc{\csname mst@shape@\mst@version\endcsname}%
- \def\mst@greek@ush@loc{\csname mst@shape@\mst@version\endcsname}%
- \mst@greek@lower@uptrue
- \mst@greek@upper@uptrue
- \fi\fi
- \fi
- \ifcase\mst@greek@select
- \or
- \def\mst@greek@ush@loc{\MTgreekitdefault}%
- \mst@greek@upper@upfalse
- \or
- \def\mst@greek@ush@loc{\MTgreekupdefault}%
- \mst@greek@upper@uptrue
- \fi
+ \mst@update@greeksh
+ {\csname mst@ltshape@\mst@version\endcsname}%
+ {\csname mst@shape@\mst@version\endcsname}%
\ifmst@LGRgreeks \def\mst@greekfont{#4}\fi
\ifmst@selfGreeks\def\mst@greekfont{#4}\fi
\ifmst@LGRgreek
@@ -2492,31 +2547,35 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\immediate\write\m@ne{}%
\else
\ifmst@selfGreek
- \SetSymbolFont{mtselfGreekfont}{#2}{OT1}{\mst@greekfont}{#5}{\mst@greek@ush@loc}%
+ \SetSymbolFont{mtselfGreekfont}{#2}{OT1}{\mst@greekfont}{#5}{\mst@greek@ush}%
\immediate\write\m@ne{}%
-\PackageInfo{mathastext}{Capital Greek letters (shape `\mst@greek@ush@loc\string'
+\PackageInfo{mathastext}{Capital Greek letters (shape `\mst@greek@ush\string'
will use the font\MessageBreak
family `\mst@greekfont\string' (OT1) in mathastext\MessageBreak
math version `\mst@version\string' declared}%
\immediate\write\m@ne{}%
\fi
\fi
- \edef\mst@tmp{\expandafter\noexpand\csname mst@hbar@mv#2\endcsname
- \expandafter\noexpand\csname mst@ltbar@mv#2\endcsname}%
- \expandafter\mst@dothe@hbarstuff\mst@tmp{#3}%
+ \ifmst@nohbar\else
+ \edef\mst@tmp{\expandafter\noexpand\csname mst@hbar@mv#2\endcsname
+ \expandafter\noexpand\csname mst@ltbar@mv#2\endcsname}%
+ \expandafter\mst@dothe@hbarstuff\mst@tmp{#3}{#3}%
+ \fi
\edef\mst@tmp{\expandafter\noexpand\csname mst@inodot@mv#2\endcsname
\expandafter\noexpand\csname mst@jnodot@mv#2\endcsname}%
- \expandafter\mst@dothe@inodotstuff\mst@tmp{#3}%
+ \ifmst@noletters\else
+ \expandafter\mst@dothe@inodotstuff\mst@tmp{#3}{#2}%
+ \fi
\ifmst@mathaccents
\mst@dothe@mathaccentsstuff{#2}{#3}%
\fi
\edef\mst@tmp{\expandafter\noexpand\csname mst@minus@mv#2\endcsname
\expandafter\noexpand\csname mst@varfam@minus@mv#2\endcsname}%
\ifmst@endash
- \expandafter\mst@dothe@endashstuff\mst@tmp{#3}%
+ \expandafter\mst@dothe@endashstuff\mst@tmp{#3}{#2}%
\else
\ifmst@emdash
- \expandafter\mst@dothe@emdashstuff\mst@tmp{#3}%
+ \expandafter\mst@dothe@emdashstuff\mst@tmp{#3}{#2}%
\else
\expandafter\mst@dothe@hyphenstuff\mst@tmp
\fi
@@ -2574,7 +2633,6 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\mst@subduedhbar
\mst@subduedinodot
\mst@subduedmathaccents
- \mst@subduedminus
\else
\ifx\math@version\mst@boldversionname
\mst@restorealphabets
@@ -2587,7 +2645,6 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\mst@subduedhbar
\mst@subduedinodot
\mst@subduedmathaccents
- \mst@subduedminus
\else
\mst@setalphabets
\expandafter\let\csname ifmst@greek@upper@up\expandafter\endcsname
@@ -2639,7 +2696,15 @@ defaultbf,defaultit,defaultsf,defaulttt}}
{\MTDeclareVersion[\mst@ltsh]{#1}{\mst@enc}{\mst@fam}{\mst@ser}{\mst@opsh}}%
}%
\def\Mathastext@ {%
- \mst@update@greeksh
+ \mst@update@greeksh {\mst@ltsh}{\mst@opsh}%
+ \expandafter\let\csname ifmst@greek@normal@upper@up\expandafter\endcsname
+ \csname ifmst@greek@upper@up\endcsname
+ \expandafter\let\csname ifmst@greek@normal@lower@up\expandafter\endcsname
+ \csname ifmst@greek@lower@up\endcsname
+ \expandafter\let\csname ifmst@greek@bold@upper@up\expandafter\endcsname
+ \csname ifmst@greek@upper@up\endcsname
+ \expandafter\let\csname ifmst@greek@bold@lower@up\expandafter\endcsname
+ \csname ifmst@greek@lower@up\endcsname
\edef\mst@encoding@normal{\mst@enc}%
\edef\mst@family@normal{\mst@fam}%
\edef\mst@series@normal{\mst@ser}%
@@ -2814,42 +2879,48 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\mst@infoline{Other characters (digits, ...) and \string\log-like names will be}%
\mst@infoline{typeset with the \mst@shape@normal\space shape.}%
\fi
- \fi
+ \fi % not subdued
\ifmst@nohbar\else
\mst@infoline{\string\hbar}%
\mst@dothe@hbarstuff
- \mst@hbar@mvnormal\mst@ltbar@mvnormal\mst@encoding@normal
+ \mst@hbar@mvnormal\mst@ltbar@mvnormal\mst@encoding@normal{normal}%
\let\mst@hbar@mvbold\mst@hbar@mvnormal
\fi
- \mst@dothe@inodotstuff\inodot\jnodot\mst@encoding@normal
- \let\mst@inodot@mvnormal\inodot
- \let\mst@inodot@mvbold\inodot
- \let\mst@jnodot@mvnormal\jnodot
- \let\mst@jnodot@mvbold\jnodot
+ \ifmst@noletters\else
+ \mst@dothe@inodotstuff\inodot\jnodot\mst@encoding@normal{normal}%
+ \let\mst@inodot@mvnormal\inodot
+ \let\mst@inodot@mvbold\inodot
+ \let\mst@jnodot@mvnormal\jnodot
+ \let\mst@jnodot@mvbold\jnodot
+ \fi
\ifmst@mathaccents
\mst@infoline{math accents}%
\mst@dothe@mathaccentsstuff{normal}\mst@encoding@normal
\fi
\ifmst@nominus\else
- \mst@infoline{minus as endash}%
+ \ifmst@subdued
+ \mst@infoline{minus is kept as is in subdued normal and bold math versions}%
+ \else
+ \mst@infoline{minus either as endash, Unicode minus, emdash or hyphen}%
\ifmst@endash
\mst@dothe@endashstuff\mst@minus@mvnormal\mst@varfam@minus@mvnormal
- \mst@encoding@normal
+ \mst@encoding@normal {normal}%
\mst@dothe@endashstuff\mst@minus@mvbold\mst@varfam@minus@mvbold
- \mst@encoding@normal
+ \mst@encoding@normal {bold}%
\else
\ifmst@emdash
\mst@dothe@emdashstuff\mst@minus@mvnormal\mst@varfam@minus@mvnormal
- \mst@encoding@normal
+ \mst@encoding@normal {normal}%
\mst@dothe@emdashstuff\mst@minus@mvbold\mst@varfam@minus@mvbold
- \mst@encoding@normal
+ \mst@encoding@normal {bold}%
\else
\mst@dothe@hyphenstuff\mst@minus@mvnormal\mst@varfam@minus@mvnormal
\let\mst@minus@mvbold\mst@minus@mvnormal
\let\mst@varfam@minus@mvbold\mst@varfam@minus@mvnormal
\fi
\fi
- \fi
+ \fi % not subdued
+ \fi % not nominus
\ifmst@subdued
\mst@infoline{Subdued `normal\string' and `bold\string' math versions.}%
\fi
@@ -2950,12 +3021,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\expandafter\let\csname mst@original@\@tempa\space\expandafter\endcsname
\csname \@tempa\space\endcsname
}%
- \ifmst@XeOrLua
- \edef\mst@subduedminus
- {\mst@Umathcodenum`\noexpand\-=\the\mst@Umathcodenum`\-\relax}%
- \else
- \edef\mst@subduedminus{\mathcode`\noexpand\-=\the\mathcode`\-\relax}%
- \fi
+ \edef\mst@subduedminus{\mst@mathcodenum`\noexpand\-=\the\mst@mathcodenum`\-\relax}%
\ifmst@subdued
\MTeverymathoff
\MTresetnewmcodes
diff --git a/Master/texmf-dist/tex/latex/mathfixs/mathfixs.sty b/Master/texmf-dist/tex/latex/mathfixs/mathfixs.sty
index e59dd4b8f07..ab26c02b122 100644
--- a/Master/texmf-dist/tex/latex/mathfixs/mathfixs.sty
+++ b/Master/texmf-dist/tex/latex/mathfixs/mathfixs.sty
@@ -6,18 +6,18 @@
%%
%% mathfixs.dtx (with options: `package')
%%
-%% Copyright (C) 2018 Niklas Beisert
+%% Copyright (C) 2018-2024 Niklas Beisert
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008 or later.
%%
\NeedsTeXFormat{LaTeX2e}[1996/12/01]
-\ProvidesPackage{mathfixs}[2018/12/30 v1.01 various fixes for math mode]
+\ProvidesPackage{mathfixs}[2024/11/18 v1.12 various fixes for math mode]
\RequirePackage{keyval}
@@ -40,16 +40,16 @@
\ifdefined\@@over\else\let\@@over=\over\fi
-\def\mafx@frac@class{\mathinner}
+\let\mafx@frac@class=\mathinner
\def\mafx@frac@delimclass{\mathopen{}\mathclose}
\DeclareRobustCommand{\mafx@frac}[2]{%
\mafx@frac@class{\begingroup#1\endgroup\@@over#2}}
-\def\mafx@@genfrac#1#2#3#4#5{\begingroup%
- \ifx#2\@@overwithdelims\let\mafx@frac@class\mafx@frac@delimclass\fi%
- \ifx#2\@@abovewithdelims\let\mafx@frac@class\mafx@frac@delimclass\fi%
- \ifx#2\@@atopwithdelims\let\mafx@frac@class\mafx@frac@delimclass\fi%
+\def\mafx@@genfrac#1#2#3#4#5{\begingroup
+ \ifx#2\@@overwithdelims\let\mafx@frac@class\mafx@frac@delimclass\fi
+ \ifx#2\@@abovewithdelims\let\mafx@frac@class\mafx@frac@delimclass\fi
+ \ifx#2\@@atopwithdelims\let\mafx@frac@class\mafx@frac@delimclass\fi
\mafx@frac@class{#1{\begingroup#4\endgroup#2#3\relax#5}}%
\endgroup}
@@ -61,7 +61,7 @@
\define@key{mafx@}{fracclass}{\def\mafx@frac@class{#1}}
\define@key{mafx@}{fracdelimclass}{\def\mafx@frac@delimclass{#1}}
-\DeclareRobustCommand{\mafx@rfrac}[2]{{\mathchoice%
+\DeclareRobustCommand{\mafx@rfrac}[2]{{\mathchoice
{\textstyle{\begingroup#1\endgroup\@@over#2}}%
{\begingroup#1\endgroup\@@over#2}%
{\begingroup#1\endgroup\@@over#2}%
@@ -69,7 +69,7 @@
\define@key{mafx@}{rfrac}[\rfrac]{\let#1=\mafx@rfrac}
-\def\mafx@vfrac@class{\mathinner}
+\let\mafx@vfrac@class=\mathinner
\def\mafx@vfrac@preskip{\thinmuskip}
\def\mafx@vfrac@postskip{0.6667\thinmuskip}
\DeclareRobustCommand{\mafx@vfrac}[2]{\ifmmode%
@@ -92,20 +92,20 @@
\DeclareRobustCommand\mafx@sqrt{\@ifnextchar[\@sqrt{\@sqrt[]}}
\def\mafx@@sqrt[#1]{\root#1\of}
-\def\mafx@root#1\of{
+\def\mafx@root#1\of{%
\setbox\rootbox\hbox{$\m@th\scriptscriptstyle{%
\gdef\mafx@gleftroot{0}\gdef\mafx@guproot{0}%
\def\leftroot##1{\gdef\mafx@gleftroot{##1}}%
\def\uproot##1{\gdef\mafx@guproot{##1}}%
#1}$}%
- \let\mafx@leftroot=\mafx@gleftroot%
- \let\mafx@uproot=\mafx@guproot%
+ \let\mafx@leftroot=\mafx@gleftroot
+ \let\mafx@uproot=\mafx@guproot
\mathpalette\r@@t}
\def\mafx@r@@t#1#2{\mafx@root@class{%
- \ifx#1\scriptstyle\let\mafx@tmp@fontsel=\scriptfont\else%
- \ifx#1\scriptscriptstyle\let\mafx@tmp@fontsel=\scriptscriptfont\else%
- \let\mafx@tmp@fontsel=\textfont\fi\fi%
+ \ifx#1\scriptstyle\let\mafx@tmp@fontsel=\scriptfont\else
+ \ifx#1\scriptscriptstyle\let\mafx@tmp@fontsel=\scriptscriptfont\else
+ \let\mafx@tmp@fontsel=\textfont\fi\fi
\sbox\z@{$\m@th#1\nulldelimiterspace=\z@\radical\z@{#2}$}%
\setlength\dimen@{\ht\z@}%
\ifx#1\displaystyle
@@ -124,18 +124,18 @@
\setbox\@ne\hbox{$\m@th#1\mskip\mafx@uproot mu$}%
\addtolength\dimen@{\wd\@ne}%
\mkern-\mafx@leftroot mu%
- \raise\dimen@\copy\rootbox%
+ \raise\dimen@\copy\rootbox
\mkern\mafx@leftroot mu%
\kern-0.6\wd\z@%
\mkern\mafx@root@preskip\sqrtsign{#2\mskip\mafx@root@endskip}%
- \ifx\mafx@root@close\@empty\else%
+ \ifx\mafx@root@close\@empty\else
\setlength\dimen@{\fontdimen8\mafx@tmp@fontsel3}%
\lower\dimen@\hbox{%
\vrule width\dimen@ height\ht\z@ depth -\mafx@root@close\ht\z@}%
\fi%
\mkern\mafx@root@postskip}}
-\define@key{mafx@}{root}[]{
+\define@key{mafx@}{root}[]{%
\let\sqrt=\mafx@sqrt
\let\@sqrt=\mafx@@sqrt
\let\root=\mafx@root
@@ -143,7 +143,7 @@
}
\define@key{mafx@}{rootclose}[0.8]{\def\mafx@root@close{#1}}
-\define@key{mafx@}{rootclass}{\def\mafx@root@class{#1}}
+\define@key{mafx@}{rootclass}{\let\mafx@root@class=#1}
\define@key{mafx@}{rootskipend}{\def\mafx@root@endskip{#1}}
\define@key{mafx@}{rootskippre}{\def\mafx@root@preskip{#1}}
\define@key{mafx@}{rootskippost}{\def\mafx@root@postskip{#1}}
@@ -151,7 +151,7 @@
\let\mafx@old@dot=\.
\def\mafx@dot@skip{\thinmuskip}
\def\mafx@dot{\mskip\mafx@dot@skip}
-\def\mafx@per@dot{\begingroup\ifmmode\def\mafx@tmp{\mafx@dot}\else%
+\def\mafx@per@dot{\begingroup\ifmmode\def\mafx@tmp{\mafx@dot}\else
\def\mafx@tmp{\mafx@old@dot}\fi\expandafter\endgroup\mafx@tmp}
\define@key{mafx@}{multskip}[\thinmuskip]{%
@@ -247,6 +247,189 @@
\expandafter\let\csname #1varsigma\endcsname=\mafx@varsigma
}
+\ifdefined\DeclareMathOperator
+
+\DeclareMathOperator{\mafx@sgn}{sgn}
+\DeclareMathOperator*{\mafx@res}{res}
+\DeclareMathOperator{\mafx@lcm}{lcm}
+\DeclareMathOperator{\mafx@span}{span}
+\DeclareMathOperator{\mafx@diag}{diag}
+\DeclareMathOperator{\mafx@spec}{spec}
+\DeclareMathOperator{\mafx@const}{const}
+\DeclareMathOperator{\mafx@id}{id}
+\DeclareMathOperator{\mafx@tr}{tr}
+
+\define@key{mafx@}{sgn}[\sgn]{\let#1=\mafx@sgn}
+\define@key{mafx@}{res}[\res]{\let#1=\mafx@res}
+\define@key{mafx@}{lcm}[\lcm]{\let#1=\mafx@lcm}
+\define@key{mafx@}{diag}[\diag]{\let#1=\mafx@diag}
+\define@key{mafx@}{span}[\Span]{\let#1=\mafx@span}
+\define@key{mafx@}{spec}[\spec]{\let#1=\mafx@spec}
+\define@key{mafx@}{const}[\const]{\let#1=\mafx@const}
+\define@key{mafx@}{id}[\id]{\let#1=\mafx@id}
+\define@key{mafx@}{tr}[\tr]{\let#1=\mafx@tr}
+\define@key{mafx@}{genop}[]{%
+ \ProvideMathFix{sgn,res,lcm,diag,span,spec,const}%
+}
+
+\DeclareMathOperator{\mafx@Re}{Re}
+\DeclareMathOperator{\mafx@Im}{Im}
+
+\define@key{mafx@}{reim}[\Re\Im]{%
+ \expandafter\let\@firstoftwo#1=\mafx@Re
+ \expandafter\let\@secondoftwo#1=\mafx@Im
+}
+
+\DeclareMathOperator{\mafx@arccot}{arccot}
+\DeclareMathOperator{\mafx@arcsec}{arcsec}
+\DeclareMathOperator{\mafx@arccsc}{arccsc}
+
+\define@key{mafx@}{trig}[]{%
+ \let\arccot=\mafx@arccot
+ \let\arcsec=\mafx@arcsec
+ \let\arccsc=\mafx@arccsc
+}
+
+\DeclareMathOperator{\mafx@sech}{sech}
+\DeclareMathOperator{\mafx@csch}{csch}
+\DeclareMathOperator{\mafx@arsinh}{arsinh}
+\DeclareMathOperator{\mafx@arcosh}{arcosh}
+\DeclareMathOperator{\mafx@artanh}{artanh}
+\DeclareMathOperator{\mafx@arcoth}{arcoth}
+\DeclareMathOperator{\mafx@arsech}{arsech}
+\DeclareMathOperator{\mafx@arcsch}{arcsch}
+
+\define@key{mafx@}{hyp}[]{%
+ \let\sech=\mafx@sech
+ \let\csch=\mafx@csch
+ \let\arsinh=\mafx@arsinh
+ \let\arcosh=\mafx@arcosh
+ \let\artanh=\mafx@artanh
+ \let\arcoth=\mafx@arcoth
+ \let\arsech=\mafx@arsech
+ \let\arcsch=\mafx@arcsch
+}
+
+\DeclareMathOperator{\mafx@dom}{dom}
+\DeclareMathOperator{\mafx@supp}{supp}
+\DeclareMathOperator{\mafx@codom}{codom}
+\DeclareMathOperator{\mafx@im}{im}
+\DeclareMathOperator{\mafx@rank}{rank}
+\DeclareMathOperator{\mafx@coker}{coker}
+
+\define@key{mafx@}{mapchar}[\im]{%
+ \let\dom=\mafx@dom
+ \let\supp=\mafx@supp
+ \let\codom=\mafx@codom
+ \let#1=\mafx@im
+ \let\rank=\mafx@rank
+ \let\coker=\mafx@coker
+}
+
+\DeclareMathOperator{\mafx@Hom}{Hom}
+\DeclareMathOperator{\mafx@End}{End}
+\DeclareMathOperator{\mafx@Isom}{Isom}
+\DeclareMathOperator{\mafx@Aut}{Aut}
+
+\define@key{mafx@}{mapclass}[]{%
+ \let\Hom=\mafx@Hom
+ \let\End=\mafx@End
+ \let\Isom=\mafx@Isom
+ \let\Aut=\mafx@Aut
+}
+
+\DeclareMathOperator{\mafx@grad}{grad}
+\DeclareMathOperator{\mafx@div}{div}
+\DeclareMathOperator{\mafx@curl}{curl}
+\DeclareMathOperator{\mafx@rot}{rot}
+
+\define@key{mafx@}{vecdiff}[]{%
+ \let\grad=\mafx@grad
+ \let\div=\mafx@div
+ \let\curl=\mafx@curl
+}
+\define@key{mafx@}{vecrot}[\curl]{\let#1=\mafx@rot}
+
+\fi
+
+\let\mafx@econst@class=\mathinner
+\DeclareRobustCommand{\mafx@econstup}{\mafx@econst@class{\operator@font e}}
+\DeclareRobustCommand{\mafx@econstit}{\mafx@econst@class{\mathnormal{e}}}
+\DeclareRobustCommand{\mafx@iunitup}{{\operator@font i}}
+\DeclareRobustCommand{\mafx@iunitit}{{\mathnormal{i}}}
+\DeclareRobustCommand{\mafx@iunitnb}{{\mathnormal{\mathring\imath}}}
+\ifdefined\uppi
+\DeclareRobustCommand{\mafx@piconstup}{{\uppi}}
+\else\ifdefined\symup
+\DeclareRobustCommand{\mafx@piconstup}{{\symup{\pi}}}
+\else
+\DeclareRobustCommand{\mafx@piconstup}{{\operator@font\pi}}
+\fi\fi
+\ifdefined\symit
+\DeclareRobustCommand{\mafx@piconstit}{{\symit{\pi}}}
+\else
+\DeclareRobustCommand{\mafx@piconstit}{{\mathnormal{\pi}}}
+\fi
+
+\define@key{mafx@}{econst}[\econst]{\let#1=\mafx@econstup}
+\define@key{mafx@}{econst*}[\econst]{\let#1=\mafx@econstit}
+\define@key{mafx@}{econstclass}{\let\mafx@econst@class=#1}
+\define@key{mafx@}{iunit}[\iunit]{\let#1=\mafx@iunitup}
+\define@key{mafx@}{iunit*}[\iunit]{\let#1=\mafx@iunitit}
+\define@key{mafx@}{iunit*nb}[\iunit]{\let#1=\mafx@iunitnb}
+\define@key{mafx@}{piconst}[\piconst]{\let#1=\mafx@piconstup}
+\define@key{mafx@}{piconst*}[\piconst]{\let#1=\mafx@piconstit}
+
+\DeclareRobustCommand{\mafx@derup}{{\operator@font d}}
+\DeclareRobustCommand{\mafx@derit}{{\mathnormal{d}}}
+\DeclareRobustCommand{\mafx@diffup}[1]{\mathinner{\mafx@derup#1}}
+\DeclareRobustCommand{\mafx@diffit}[1]{\mathinner{\mafx@derit#1}}
+
+\define@key{mafx@}{der}[\der]{\let#1=\mafx@derup}
+\define@key{mafx@}{der*}[\der]{\let#1=\mafx@derit}
+\define@key{mafx@}{diff}[\diff]{\let#1=\mafx@diffup}
+\define@key{mafx@}{diff*}[\diff]{\let#1=\mafx@diffit}
+
+\DeclareRobustCommand{\mafx@order}{\mathnormal{o}}
+\DeclareRobustCommand{\mafx@Order}{\mathnormal{O}}
+\DeclareRobustCommand{\mafx@OrderCal}{\mathcal{O}}
+\DeclareRobustCommand{\mafx@defeq}{\mathrel{\mathop:}=}
+\DeclareRobustCommand{\mafx@eqdef}{=\mathrel{\mathop:}}
+\DeclareRobustCommand{\mafx@lapl}{\mathnormal{\Delta}}
+
+\define@key{mafx@}{order}[\order]{\let#1=\mafx@order}
+\define@key{mafx@}{Order}[\Order]{\let#1=\mafx@Order}
+\define@key{mafx@}{Order*}[\Order]{\let#1=\mafx@OrderCal}
+\define@key{mafx@}{defeq}[\defeq]{\let#1=\mafx@defeq}
+\define@key{mafx@}{eqdef}[\eqdef]{\let#1=\mafx@eqdef}
+\define@key{mafx@}{lapl}[\lapl]{\let#1=\mafx@lapl}
+
+\ifdefined\mathbb
+\let\mafx@numset@font=\mathbb
+\else
+\let\mafx@numset@font=\mathbf
+\fi
+\DeclareRobustCommand{\mafx@numset}{\mafx@numset@font}
+\DeclareRobustCommand{\mafx@numsetZ}{\mafx@numset{Z}}
+\DeclareRobustCommand{\mafx@numsetQ}{\mafx@numset{Q}}
+\DeclareRobustCommand{\mafx@numsetR}{\mafx@numset{R}}
+\DeclareRobustCommand{\mafx@numsetC}{\mafx@numset{C}}
+\DeclareRobustCommand{\mafx@numsetH}{\mafx@numset{H}}
+\DeclareRobustCommand{\mafx@numsetN}{\mafx@numset{N}}
+\DeclareRobustCommand{\mafx@numsetO}{\mafx@numset{O}}
+
+\define@key{mafx@}{numset}[\numset]{\let#1=\mafx@numset}
+\define@key{mafx@}{numsetfont}{\let\mafx@numset@font=#1}
+\define@key{mafx@}{numsets}[]{%
+ \let\Integer=\mafx@numsetZ
+ \let\Rational=\mafx@numsetQ
+ \let\Real=\mafx@numsetR
+ \let\Complex=\mafx@numsetC
+ \let\Quaternion=\mafx@numsetH
+ \let\Natural=\mafx@numsetN
+ \let\Octonion=\mafx@numsetO
+}
+
\newcommand{\ProvideMathFix}[1]{\setkeys{mafx@}{#1}}
\DeclareOption*{\expandafter\ProvideMathFix\expandafter{\CurrentOption}}
diff --git a/Master/texmf-dist/tex/latex/mathtools/empheq.sty b/Master/texmf-dist/tex/latex/mathtools/empheq.sty
index 380410b66f0..dd281d92e2c 100644
--- a/Master/texmf-dist/tex/latex/mathtools/empheq.sty
+++ b/Master/texmf-dist/tex/latex/mathtools/empheq.sty
@@ -31,7 +31,7 @@
%% empheq.sty, empheq.pdf, empheq.ins, empheq.drv.
%%
\ProvidesPackage{empheq}%
- [2017/03/31 v2.15 Emphasizing equations]
+ [2024/08/09 v2.17 Emphasizing equations]
\RequirePackage{mhsetup}[2017/03/31]
\MHInternalSyntaxOn
\MH_new_boolean:n {overload_ams}
diff --git a/Master/texmf-dist/tex/latex/mathtools/mathtools.sty b/Master/texmf-dist/tex/latex/mathtools/mathtools.sty
index 7128d19c504..283cb9e388c 100644
--- a/Master/texmf-dist/tex/latex/mathtools/mathtools.sty
+++ b/Master/texmf-dist/tex/latex/mathtools/mathtools.sty
@@ -32,7 +32,7 @@
%%
\ProvidesPackage{mathtools}%
- [2024/03/11 v1.30 mathematical typesetting tools]
+ [2024/10/04 v1.31 mathematical typesetting tools]
\RequirePackage{keyval,calc}
\RequirePackage{mhsetup}[2021/03/18]
\MHInternalSyntaxOn
@@ -1747,6 +1747,8 @@
\skip@\lastskip\unskip
\MH_if_num:w \lastpenalty>\z@
\count@\lastpenalty\unpenalty
+ \MH_else:
+ \count@\z@
\MH_fi:
\@@italiccorr
\MH_if_num:w \count@>\z@
@@ -1757,8 +1759,8 @@
\@@italiccorr
\MH_fi:
\MH_fi:
- \MH_fi:
- $\MH_fi:
+ \fi
+ $\fi
}
}
}
diff --git a/Master/texmf-dist/tex/latex/media9/media9.sty b/Master/texmf-dist/tex/latex/media9/media9.sty
index a32e4874780..1ee3b2e3f3a 100644
--- a/Master/texmf-dist/tex/latex/media9/media9.sty
+++ b/Master/texmf-dist/tex/latex/media9/media9.sty
@@ -4,7 +4,6 @@
\bool_if:nTF{
\bool_lazy_and_p:nn {\cs_if_exist_p:N \pdfmanagement_if_active_p:} { \pdfmanagement_if_active_p: }
}{\@mix@testphasetrue}{
-%\input{media9.old.tex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% media9.sty
@@ -39,8 +38,8 @@
%
% The Current Maintainer of this work is A. Grahn.
-\def\g@mix@date@tl{2024/09/02}
-\def\g@mix@version@tl{1.27}
+\def\g@mix@date@tl{2024/09/16}
+\def\g@mix@version@tl{1.29}
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage{media9}{\g@mix@date@tl}{\g@mix@version@tl}
@@ -52,7 +51,7 @@
% package options
\msg_set:nnnn{media9}{unknown~package~option}{Unknown~package~option~`#1'.}{
- Package option~'#1'~is~unknown;\\
+ Package~option~'#1'~is~unknown;\\
perhaps~it~is~spelled~incorrectly.
}
@@ -2446,8 +2445,8 @@
%
% The Current Maintainer of this work is A. Grahn.
-\def\g@mix@date@tl{2024/09/02}
-\def\g@mix@version@tl{1.27}
+\def\g@mix@date@tl{2024/09/16}
+\def\g@mix@version@tl{1.29}
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage{media9}{\g@mix@date@tl}{\g@mix@version@tl}
@@ -2459,7 +2458,7 @@
% package options
\msg_set:nnnn{media9}{unknown~package~option}{Unknown~package~option~`#1'.}{
- Package option~'#1'~is~unknown;\\
+ Package~option~'#1'~is~unknown;\\
perhaps~it~is~spelled~incorrectly.
}
diff --git a/Master/texmf-dist/tex/latex/media9/pdfbase.sty b/Master/texmf-dist/tex/latex/media9/pdfbase.sty
index 54242a5d9cc..31b5e23deed 100644
--- a/Master/texmf-dist/tex/latex/media9/pdfbase.sty
+++ b/Master/texmf-dist/tex/latex/media9/pdfbase.sty
@@ -156,8 +156,8 @@
%
% The Current Maintainer of this work is A. Grahn.
-\def\g@pbs@date@tl{2024/09/02}
-\def\g@pbs@version@tl{0.57}
+\def\g@pbs@date@tl{2024/09/16}
+\def\g@pbs@version@tl{0.59}
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage{pdfbase}{\g@pbs@date@tl}{\g@pbs@version@tl}
@@ -168,7 +168,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\msg_gset:nnnn{pdfbase}{unknown~package~option}{Unknown~package~option~`#1'.}{
- Package option~'#1'~is~unknown;\\
+ Package~option~'#1'~is~unknown;\\
perhaps~it~is~spelled~incorrectly.
}
@@ -1349,12 +1349,13 @@
\put(1,-1){
\tl_if_exist:NF\g_pbs_blank_xform_tl{
\hbox_set:Nn\l_tmpa_box{\phantom{\rule{1pt}{1pt}}}
- \pbs_pdfxform:nnnnn{}{1}{}{}{\l_tmpa_box}
+ \pbs_pdfxform:nnnnn{0}{1}{}{}{\l_tmpa_box}
\tl_const:Ne\g_pbs_blank_xform_tl{\pbs_pdflastxform:}
}
\pbs_pdfannot:nnnn{3bp}{\c_zero_dim}{3bp}{
/Ff~65537/FT/Btn/Subtype/Widget/F~4
- /AP~<</N~<</On~\g_pbs_blank_xform_tl>>>>
+ /A~<</S/ResetForm>>% to make pdf.js happy
+ /AP~<</N~<</On~\g_pbs_blank_xform_tl>>>>/AS/On
/T~(pbs@ARFix@\int_use:N\g_pbs_page_int)
}
}
@@ -1556,8 +1557,8 @@
%
% The Current Maintainer of this work is A. Grahn.
-\def\g@pbs@date@tl{2024/09/02}
-\def\g@pbs@version@tl{0.57}
+\def\g@pbs@date@tl{2024/09/16}
+\def\g@pbs@version@tl{0.59}
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage{pdfbase}{\g@pbs@date@tl}{\g@pbs@version@tl}
@@ -1568,7 +1569,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\msg_gset:nnnn{pdfbase}{unknown~package~option}{Unknown~package~option~`#1'.}{
- Package option~'#1'~is~unknown;\\
+ Package~option~'#1'~is~unknown;\\
perhaps~it~is~spelled~incorrectly.
}
@@ -2671,12 +2672,12 @@
\put(1,-1){
\tl_if_exist:NF\g_pbs_blank_xform_tl{
\hbox_set:Nn\l_tmpa_box{\phantom{\rule{1pt}{1pt}}}
- \pbs_pdfxform:nnnnn{}{1}{}{}{\l_tmpa_box}
+ \pbs_pdfxform:nnnnn{0}{1}{}{}{\l_tmpa_box}
\tl_const:Ne\g_pbs_blank_xform_tl{\pbs_pdflastxform:}
}
\pbs_pdfannot:nnnn{3bp}{\c_zero_dim}{3bp}{
/Ff~65537/FT/Btn/Subtype/Widget/F~4
- /AP~<</N~<</On~\g_pbs_blank_xform_tl>>>>
+ /AP~<</N~<</On~\g_pbs_blank_xform_tl>>>>/AS/On
/T~(pbs@ARFix@\int_use:N\g_pbs_page_int)
}
}
diff --git a/Master/texmf-dist/tex/latex/memoize/memoizable.sty b/Master/texmf-dist/tex/latex/memoize/memoizable.sty
index 908c99963d3..8cc542f1e7f 100644
--- a/Master/texmf-dist/tex/latex/memoize/memoizable.sty
+++ b/Master/texmf-dist/tex/latex/memoize/memoizable.sty
@@ -24,7 +24,7 @@
%%
%% The files belonging to this work and covered by LPPL are listed in
%% (<texmf>/doc/generic/memoize/)FILES.
-\ProvidesPackage{memoizable}[2024/04/02 v1.3.0 A programmer's stub for Memoize]
+\ProvidesPackage{memoizable}[2024/12/02 v1.4.1 A programmer's stub for Memoize]
\RequirePackage{pgfkeys}
\input memoizable.code.tex
\endinput
diff --git a/Master/texmf-dist/tex/latex/memoize/memoize-beamer.code.tex b/Master/texmf-dist/tex/latex/memoize/memoize-beamer.code.tex
new file mode 100644
index 00000000000..3b9cb40a128
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/memoize/memoize-beamer.code.tex
@@ -0,0 +1,73 @@
+%%
+%% This is file `memoize-beamer.code.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% memoize.dtx (with options: `beamer')
+%%
+%% This file is a part of Memoize, a TeX package for externalization of
+%% graphics and memoization of compilation results in general, available at
+%% https://ctan.org/pkg/memoize and https://github.com/sasozivanovic/memoize.
+%%
+%% Copyright (c) 2020- Saso Zivanovic <saso.zivanovic@guest.arnes.si>
+%% (Sa\v{s}o \v{Z}ivanovi\'{c})
+%%
+%% This work may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License, either version 1.3c of this license or (at
+%% your option) any later version. The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt and version 1.3c or later is part of
+%% all distributions of LaTeX version 2008 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%% The Current Maintainer of this work is Saso Zivanovic.
+%%
+%% The files belonging to this work and covered by LPPL are listed in
+%% (<texmf>/doc/generic/memoize/)FILES.
+\mmzset{
+ per overlay/.code={},
+ beamer mode to prefix/.style={
+ prefix=\mmz@prefix@dir\mmz@prefix@name\beamer@currentmode_mode.
+ },
+}%
+\@ifclassloaded{beamer}{%
+ \mmzset{
+ per overlay/.style={
+ /mmz/context={%
+ overlay=\csname beamer@overlaynumber\endcsname,
+ pauses=\ifmemoizing
+ \mmzBeamerPauses
+ \else
+ \expandafter\the\csname c@beamerpauses\endcsname
+ \fi
+ },
+ /mmz/at begin memoization={%
+ \xdef\mmzBeamerPauses{\the\c@beamerpauses}%
+ \xtoksapp\mmzCMemo{%
+ \noexpand\mmzSetBeamerOverlays{\mmzBeamerPauses}{\beamer@overlaynumber}}%
+ \gtoksapp\mmzCCMemo{%
+ \only<all:\mmzBeamerOverlays>{}}%
+ },
+ /mmz/at end memoization={%
+ \xtoksapp\mmzCCMemo{%
+ \noexpand\setcounter{beamerpauses}{\the\c@beamerpauses}}%
+ },
+ /mmz/per overlay/.code={},
+ },
+ }
+ \def\mmzSetBeamerOverlays#1#2{%
+ \ifnum\c@beamerpauses=#1\relax
+ \gdef\mmzBeamerOverlays{#2}%
+ \ifnum\beamer@overlaynumber<#2\relax \mmz@temptrue \else \mmz@tempfalse \fi
+ \else
+ \mmz@temptrue
+ \fi
+ \ifmmz@temp
+ \appto\mmzAtBeginMemoization{%
+ \gtoksapp\mmzCMemo{\mmzSetBeamerOverlays{#1}{#2}}}%
+ \fi
+ }%
+}%
+\endinput
+%%
+%% End of file `memoize-beamer.code.tex'.
diff --git a/Master/texmf-dist/tex/latex/memoize/memoize-biblatex.code.tex b/Master/texmf-dist/tex/latex/memoize/memoize-biblatex.code.tex
index 2776054b2da..e286ff9512d 100644
--- a/Master/texmf-dist/tex/latex/memoize/memoize-biblatex.code.tex
+++ b/Master/texmf-dist/tex/latex/memoize/memoize-biblatex.code.tex
@@ -24,8 +24,6 @@
%%
%% The files belonging to this work and covered by LPPL are listed in
%% (<texmf>/doc/generic/memoize/)FILES.
-\edef\memoizeresetatcatcode{\catcode`\noexpand\@\the\catcode`\@\relax}%
-\catcode`\@=11
\mmzset{%
auto=\blx@bbl@entry{
inner handler=\mmz@biblatex@entry,
@@ -114,6 +112,7 @@
\expandafter{\mmz@biblatex@keys}%
}
\def\mmz@biblatex@do@context@one#1{%
+ \mmz@Cos
\mmz@mtoc@csname{mmz@bbl@#1}%
\ifcsdef{mmz@bbl@#1}{}{\mmzAbort}%
}
@@ -232,7 +231,6 @@
auto=\citelist{cite, args=l*mlm},
auto=\citefield{cite, args=l*mlm},
}
-\memoizeresetatcatcode
\endinput
%%
%% End of file `memoize-biblatex.code.tex'.
diff --git a/Master/texmf-dist/tex/latex/memoize/memoize.sty b/Master/texmf-dist/tex/latex/memoize/memoize.sty
index 65f72be0a9d..81d8f087b20 100644
--- a/Master/texmf-dist/tex/latex/memoize/memoize.sty
+++ b/Master/texmf-dist/tex/latex/memoize/memoize.sty
@@ -24,7 +24,7 @@
%%
%% The files belonging to this work and covered by LPPL are listed in
%% (<texmf>/doc/generic/memoize/)FILES.
-\ProvidesPackage{memoize}[2024/04/02 v1.3.0 Fast and flexible externalization]
+\ProvidesPackage{memoize}[2024/12/02 v1.4.1 Fast and flexible externalization]
\RequirePackage{etoolbox}
\ifdefined\luatexversion
\directlua{memoize = {}}
@@ -321,7 +321,10 @@
\ifmemoizing
\else
\ifmemoize
- \xdef\mmz@code@mdfivesum{\pdf@mdfivesum{\the\mmz@mdfive@source}}%
+ \xdef\mmz@code@mdfivesum{\pdf@mdfivesum{%
+ \expanded{\the\mmzSalt}%
+ \the\mmz@mdfive@source
+ }}%
\mmz@trace@code@mdfive
\ifnum\mmz@mode=\mmz@mode@recompile\relax
\ifnum\pdf@draftmode=0
@@ -622,16 +625,34 @@
{}%
},
clear context/.value forbidden,
- meaning to context/.code={\forcsvlist\mmz@mtoc{#1}},
- csname meaning to context/.code={\mmz@mtoc@csname{#1}},
- key meaning to context/.code={%
+ meaning to context/.code={\mmz@Cos\forcsvlist\mmz@mtoc{#1}},
+ csname meaning to context/.code={\mmz@Cos\mmz@mtoc@csname{#1}},
+ key meaning to context/.code={\mmz@Cos
\forcsvlist\mmz@mtoc\mmz@mtoc@keycmd{#1}},
- key value to context/.code={\forcsvlist\mmz@mtoc@key{#1}},
- /handlers/.meaning to context/.code={\expanded{%
+ key value to context/.code={\mmz@Cos\forcsvlist\mmz@mtoc@key{#1}},
+ /handlers/.meaning to context/.code={\mmz@Cos\expanded{%
\noexpand\mmz@mtoc@csname{pgfk@\pgfkeyscurrentpath/.@cmd}}},
- /handlers/.value to context/.code={%
+ /handlers/.value to context/.code={\mmz@Cos
\expanded{\noexpand\mmz@mtoc@csname{pgfk@\pgfkeyscurrentpath}}},
}
+\newtoks\mmzSalt
+\mmzset{
+ salt/.code=\expandafter\toksapp\expandafter\mmzSalt{#1,},
+ clear salt/.value forbidden,
+ clear salt/.code=\mmzSalt{},
+ meaning to salt/.code={\mmz@coS\forcsvlist\mmz@mtoc{#1}},
+ csname meaning to salt/.code={\mmz@coS\mmz@mtoc@csname{#1}},
+ key meaning to salt/.code={\mmz@coS
+ \forcsvlist\mmz@mtoc\mmz@mtoc@keycmd{#1}},
+ key value to salt/.code={\mmz@coS
+ \forcsvlist\mmz@mtoc@key{#1}},
+ /handlers/.meaning to salt/.code={\mmz@coS\expanded{%
+ \noexpand\mmz@mtoc@csname{pgfk@\pgfkeyscurrentpath/.@cmd}}},
+ /handlers/.value to salt/.code={\mmz@coS
+ \expanded{\noexpand\mmz@mtoc@csname{pgfk@\pgfkeyscurrentpath}}},
+}
+\def\mmz@Cos{\def\mmz@context@or@salt{context}}
+\def\mmz@coS{\def\mmz@context@or@salt{salt}}
\def\mmz@mtoc#1{%
\collargs@cs@cases{#1}%
{\mmz@mtoc@cmd{#1}}%
@@ -651,14 +672,17 @@
\expandafter\mmz@mtoc@csname\expandafter{\string#1}%
}
\def\mmz@mtoc@csname#1{%
- \pgfkeysvalueof{/mmz/context/.@cmd}%
- \detokenize{#1}={\expandafter\meaning\csname#1\endcsname}%
+ \pgfkeysvalueof{/mmz/\mmz@context@or@salt/.@cmd}%
+ \detokenize{#1}%
+ \ifcsname#1\endcsname
+ ={\expandafter\meaning\csname#1\endcsname}%
+ \fi
\pgfeov
}
\def\mmz@mtoc@key#1{\mmz@mtoc@csname{pgfk@#1}}
\def\mmz@mtoc@keycmd#1{\mmz@mtoc@csname{pgfk@#1/.@cmd}}
\def\mmz@mtoc@error@notcsorenv#1{%
- \PackageError{memoize}{'\detokenize{#1}' passed to key 'meaning to context'
+ \PackageError{memoize}{'\detokenize{#1}' passed to key 'meaning to \mmz@context@or@salt'
is neither a command nor an environment}{}%
}
\def\mmz@cmemo@path{\mmz@prefix\mmz@code@mdfivesum.memo}
@@ -752,6 +776,8 @@
\fi
\mmz@trace@resource{#1}%
\fi
+ \csxdef{mmz@resource@\the\mmz@seq}{\mmz@prefix@dir#1}%
+ \global\advance\mmz@seq1
}
\def\mmz@process@ccmemo{%
\mmz@trace@process@ccmemo
@@ -781,6 +807,7 @@
}%
\fi
}%
+ \global\mmz@seq=0
\IfFileExists{\mmz@ccmemo@path}{%
\ifmmz@direct@ccmemo@input
\input{\mmz@ccmemo@path}%
@@ -884,6 +911,7 @@
(\mmz@padding@left) + \wd\mmz@box + (\mmz@padding@right)\relax
\pdfpageheight\dimexpr
(\mmz@padding@top) + \ht\mmz@box + \dp\mmz@box+ (\mmz@padding@bottom)\relax
+ \mmz@shipout@unrotate
\hoffset\dimexpr\mmz@padding@left - \pdfhorigin\relax
\voffset\dimexpr\mmz@padding@top - \pdfvorigin\relax
\let\protect\noexpand
@@ -920,6 +948,19 @@
\mmzset{begindocument/.append code={%
\edef\mmz@inverse@mag{\expandafter\mmz@Pgf@geT\the\dimexpr 1000pt/\mag}%
}}
+\ifdef\XeTeXversion{%
+ \def\mmz@shipout@unrotate{}%
+}{%
+ \ifdef\luatexversion{%
+ \def\mmz@shipout@unrotate{%
+ \IfPDFManagementActiveTF{}{\pdfvariable pageattr {/Rotate 0}}%
+ }%
+ }{%
+ \def\mmz@shipout@unrotate{%
+ \IfPDFManagementActiveTF{}{\pdfpageattr{/Rotate 0}}%
+ }%
+ }%
+}
\let\mmzRegularPages\ReadonlyShipoutCounter
\newcount\mmzExternPages
\mmzset{
@@ -931,14 +972,18 @@
},
}
\newcount\mmzExtraPages
-\def\mmz@include@extern#1#2#3#4#5#6#7#8#9{%
- \mmz@seq=#1\relax
+\def\mmz@include@extern#1{%
+ \expandafter\expandafter\expandafter\mmz@include@extern@i
+ \expandafter\expandafter\expandafter{%
+ \csname mmz@resource@#1\endcsname}%
+}
+\def\mmz@include@extern@i#1#2#3#4#5#6#7#8#9{%
\setbox\mmz@box=#2{%
\setbox0=\hbox{%
\lower\dimexpr #5+#7\relax\hbox{%
\hskip -#6\relax
\setbox0=\hbox{%
- \mmz@insertpdfpage{\mmz@extern@path}{1}%
+ \mmz@insertpdfpage{#1}{1}%
}%
\unhbox0
}%
@@ -1403,7 +1448,8 @@
\AdviceOriginal#2{#3}%
}
\def\mmzForceNoRef#1{%
- \mmz@mtoc@csname{r@#1}%
+ \mmz@Cos
+ \expandafter\mmz@mtoc@csname\expandafter{\expanded{r@#1}}%
\ignorespaces
}
\def\mmzNoRef#1{%
@@ -1447,10 +1493,24 @@
\label{#1}%
\endgroup
}
+\def\mmz@unknown{}
+\mmzset{
+ .unknown/.code={%
+ \eappto\mmz@unknown{,\pgfkeyscurrentkey={#1}}%
+ },
+ begindocument/end/.append code={%
+ \pgfkeyslet{/mmz/.unknown/.@cmd}\undefined
+ \expandafter\pgfkeysalso\expandafter{\mmz@unknown}%
+ },
+}
\AddToHook{shipout/before}[memoize]{\global\advance\mmzExtraPages-1\relax}
\AddToHook{shipout/after}[memoize]{\global\advance\mmzExtraPages1\relax}
\mmzset{auto=\DiscardShipoutBox{
outer handler=\global\advance\mmzExtraPages1\relax\AdviceOriginal}}
+\def\mmz@makeatletter{%
+ \edef\mmz@restoreatcatcode{\catcode`\noexpand\@\the\catcode`\@\relax}%
+ \catcode`\@=11
+}
\def\mmz@if@package@loaded#1#2#3{%
\mmzset{%
begindocument/before/.append code={%
@@ -1473,14 +1533,12 @@
}%
\ifx\mmz@temp=0
\else
- \xtoksapp\mmzCCMemo{%
- \unexpanded{%
- \global\expandafter\advance\csname pgf@picture@serial@count\endcsname
- }%
- \mmz@temp
- }%
+ \xtoksapp\mmzCCMemo{\noexpand\mmzStepPgfPictureId{\mmz@temp}}%
\fi
}%
+ \def\mmzStepPgfPictureId##1{%
+ \global\advance\pgf@picture@serial@count##1\relax
+ }%
\mmzset{%
at begin memoization=\mmzPgfAtBeginMemoization,
at end memoization=\mmzPgfAtEndMemoization,
@@ -1499,46 +1557,24 @@
auto=\Forest{memoize},
}%
}
-\AddToHook{begindocument/before}{\@ifclassloaded{beamer}{%
- \mmzset{per overlay/.style={
- /mmz/context={%
- overlay=\csname beamer@overlaynumber\endcsname,
- pauses=\ifmemoizing
- \mmzBeamerPauses
- \else
- \expandafter\the\csname c@beamerpauses\endcsname
- \fi
- },
- /mmz/at begin memoization={%
- \xdef\mmzBeamerPauses{\the\c@beamerpauses}%
- \xtoksapp\mmzCMemo{%
- \noexpand\mmzSetBeamerOverlays{\mmzBeamerPauses}{\beamer@overlaynumber}}%
- \gtoksapp\mmzCCMemo{%
- \only<\mmzBeamerOverlays>{}}%
- },
- /mmz/at end memoization={%
- \xtoksapp\mmzCCMemo{%
- \noexpand\setcounter{beamerpauses}{\the\c@beamerpauses}}%
- },
- /mmz/per overlay/.code={},
- }}
- \def\mmzSetBeamerOverlays#1#2{%
- \ifnum\c@beamerpauses=#1\relax
- \gdef\mmzBeamerOverlays{#2}%
- \ifnum\beamer@overlaynumber<#2\relax \mmz@temptrue \else \mmz@tempfalse \fi
- \else
- \mmz@temptrue
- \fi
- \ifmmz@temp
- \appto\mmzAtBeginMemoization{%
- \gtoksapp\mmzCMemo{\mmzSetBeamerOverlays{#1}{#2}}}%
- \fi
- }%
-}{}}
+\AddToHook{begindocument/before}{%
+ \@ifclassloaded{beamer}{%
+ \mmz@makeatletter
+ \input{memoize-beamer.code.tex}%
+ \mmz@restoreatcatcode
+ }{}%
+ \@ifpackageloaded{beamerarticle}{%
+ \mmz@makeatletter
+ \input{memoize-beamer.code.tex}%
+ \mmz@restoreatcatcode
+ }{}%
+}
\mmzset{
biblatex/.code={%
\mmz@if@package@loaded{biblatex}{}{%
+ \mmz@makeatletter
\input memoize-biblatex.code.tex
+ \mmz@restoreatcatcode
\mmzset{#1}%
}%
},
diff --git a/Master/texmf-dist/tex/latex/memoize/nomemoize.sty b/Master/texmf-dist/tex/latex/memoize/nomemoize.sty
index 330f0ee200d..b6f4a9ba4e5 100644
--- a/Master/texmf-dist/tex/latex/memoize/nomemoize.sty
+++ b/Master/texmf-dist/tex/latex/memoize/nomemoize.sty
@@ -24,7 +24,7 @@
%%
%% The files belonging to this work and covered by LPPL are listed in
%% (<texmf>/doc/generic/memoize/)FILES.
-\ProvidesPackage{nomemoize}[2024/04/02 v1.3.0 A no-op stub for Memoize]
+\ProvidesPackage{nomemoize}[2024/12/02 v1.4.1 A no-op stub for Memoize]
\RequirePackage{pgfkeys}
\def\ifmmz@loadstatus#1{%
\ifnum#1=0\csname mmz@loadstatus\endcsname\relax
diff --git a/Master/texmf-dist/tex/latex/metalogox/metalogox.sty b/Master/texmf-dist/tex/latex/metalogox/metalogox.sty
index e12f6802497..8309bbcb60e 100644
--- a/Master/texmf-dist/tex/latex/metalogox/metalogox.sty
+++ b/Master/texmf-dist/tex/latex/metalogox/metalogox.sty
@@ -6,7 +6,7 @@
%%
%% metalogox.dtx (with options: `package')
%% This is a generated file.
-%% Copyright 2019 Brian Dunn
+%% Copyright 2019–2025 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,14 +15,15 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
+%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{metalogox}
- [2024/03/07 v1.06 Extends the metalogo package with font detection.]
+ [2025/01/23 v1.07 Extends the metalogo package with font detection.]
\RequirePackage{metalogo}
-\RequirePackage{xparse}
+\IfFormatAtLeastTF{2020-10-01}{}{\RequirePackage{xparse}}
\RequirePackage{etoolbox}
\newcommand*{\MLX@default}{%
@@ -516,6 +517,7 @@
\MLX@@detectone{AntykwaTorunska}{anttor}{antpolt}%
\MLX@@detectone{ArchivZero}{Archiv0}{helvetica}%
\MLX@@detectone{Archiv0}{Archiv0}{helvetica}%
+\MLX@@detectone{arsenal}{Arsenal}{alegreya}%
\MLX@@detectone{fav}{arev}{vera}%
\MLX@@detectone{Arimo}{Arimo}{helvetica}%
\MLX@@detectone{atkinsn}{Atkinson Hyperlegible}{helvetica}%
@@ -802,7 +804,7 @@
{%
\PackageWarningNoLine{metalogox}
{%
- Did not find font \MLX@@thisfont.\MessageBreak
+ Did not find font \MLX@@thisfont.\MessageBreak%
To improve \string\LaTeX, and related logos:\MessageBreak%
\string\usepackage[option]{metalogox}\MessageBreak%
Common options: times, bookman for serif,\MessageBreak%
diff --git a/Master/texmf-dist/tex/latex/miama/miama.sty b/Master/texmf-dist/tex/latex/miama/miama.sty
index f63aa8dcf9b..00767cb61fa 100644
--- a/Master/texmf-dist/tex/latex/miama/miama.sty
+++ b/Master/texmf-dist/tex/latex/miama/miama.sty
@@ -10,7 +10,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{miama}
-[2019/06/18 v1.1 class to use the typeface Miama Nueva]
+[2025/01/15 v1.2 class to use the typeface Miama Nueva]
%% \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
diff --git a/Master/texmf-dist/tex/latex/microtype/letterspace.sty b/Master/texmf-dist/tex/latex/microtype/letterspace.sty
index c413630850d..fe3de89e1be 100644
--- a/Master/texmf-dist/tex/latex/microtype/letterspace.sty
+++ b/Master/texmf-dist/tex/latex/microtype/letterspace.sty
@@ -34,7 +34,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage
{letterspace}
- [2024/03/29 v3.1b
+ [2024/12/12 v3.2
Robust letterspacing
(RS)]
\def\MT@MT
@@ -159,7 +159,7 @@
\def\MT@tr@min{-\@m}
\let\MT@tr@max\@m
\let\MT@letterspace\m@ne
-\def\MT@letterspace@default{100}
+\def\MT@letterspace@default{50}
\MT@pdf@or@lua\relax{
\ifx\newluafunction\@undefined \input ltluatex \fi
\MT@lua{require("microtype")}
@@ -179,8 +179,6 @@
\def\MT@ifdefined@n@TF#1{%
^^X \ifcsname#1\endcsname\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
}
-\def\MT@if@expanding@F{\let\MT@if@expanding@F@\MT@if@expanding@F@\@firstofone}
-\def\MT@if@expanding@F@#1#2#3{\relax\relax}
\begingroup
\catcode`\%=12
\catcode`\&=14
@@ -236,9 +234,9 @@
\advance\@tempcnta \@ne
\ifnum\@tempcnta < #2\MT@repeat
}
-\MT@pdf@or@lua{\let\MT@if@luaotf@font\@secondoftwo}{
-\def\MT@if@luaotf@font{\csname\MT@lua{%
- microtype.if_luaotf_font()
+\MT@pdf@or@lua{\let\MT@if@opentype@font\@secondoftwo}{
+\def\MT@if@opentype@font{\csname\MT@lua{%
+ microtype.if_opentype_font()
}\endcsname
}
}
@@ -278,7 +276,8 @@
/\number\MT@letterspace@ ls\endcsname}%
\expandafter\ifx\MT@lsfont\relax
\MT@get@ls@basefont
- \MT@if@luaotf@font{%
+ \MT@if@opentype@font{%
+ \let\MT@tr@features\@empty
\global\expandafter\font\MT@lsfont=\MT@ls@fontspec@font
}{%
\global\expandafter\letterspacefont\MT@lsfont\font@name\MT@letterspace@
@@ -287,8 +286,10 @@
\fontdimen2\MT@lsfont=\dimexpr\numexpr 1000+\MT@letterspace@\relax sp
* \fontdimen2\MT@lsfont/1000\relax
% no ligatures = {f}
- \tagcode\MT@lsfont`f=\m@ne
- \MT@if@luaotf@font\relax{%
+ \MT@if@opentype@font
+ {\MT@lua{microtype.noligatures([[\MT@lsfont]],[[\number\numexpr`f]])}}
+ {\tagcode\MT@lsfont`f=\m@ne}%
+ \MT@if@opentype@font\relax{%
\MT@do@font{\lpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax
\rpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax}%
\let\MT@the@pr@code\MT@the@pr@code@tr
@@ -318,7 +319,7 @@
}%
}
\def\MT@ls@fontspec@font{%
- \MT@lua{microtype.add_ls([[\MT@letterspace@]])}%
+ \MT@lua{microtype.add_ls([[\MT@letterspace@]],[[\MT@tr@features]])}%
}
\MT@requires@latex2{
\def\MT@set@lsfont{\MT@exp@two@c\let\font@name\MT@lsfont}
diff --git a/Master/texmf-dist/tex/latex/microtype/microtype-luatex.def b/Master/texmf-dist/tex/latex/microtype/microtype-luatex.def
index bf09a1510fe..2eb7a74a387 100644
--- a/Master/texmf-dist/tex/latex/microtype/microtype-luatex.def
+++ b/Master/texmf-dist/tex/latex/microtype/microtype-luatex.def
@@ -31,7 +31,7 @@
%%
\ProvidesFile
{microtype-luatex.def}
- [2024/03/29 v3.1b
+ [2024/12/12 v3.2
Definitions specific to
luatex
(RS)]
@@ -68,12 +68,12 @@
\MT@check@MT@version
{\MT@lua{tex.write(microtype.module['date'] .. ' v' .. microtype.module['version'])}}
{\MT@MT.lua}
-\def\MT@if@luaotf@font{\csname\MT@lua{%
- microtype.if_luaotf_font()
+\def\MT@if@opentype@font{\csname\MT@lua{%
+ microtype.if_opentype_font()
}\endcsname
}
\def\MT@do@font#1{%
- \MT@if@luaotf@font{%
+ \MT@if@opentype@font{%
\def\MT@dofont@function{#1}%
\MT@lua{microtype.do_font()}%
}{\MT@while@num\z@\@cclvi{#1}}%
@@ -98,6 +98,23 @@
}%
\fi
}
+ \def\MT@varwidth@setup{%
+ \ifMT@protrusion
+^^Q \MT@warning@nl{Cannot patch varwidth without etex extensions}%
+^^X \MT@info@nl{Patching varwidth to enable character protrusion}%
+^^X \newdimen\MT@vwid@leftmargin
+^^X \newdimen\MT@vwid@rightmargin
+^^X \patchcmd\@vwid@sift{\sift@deathcycles\z@}
+^^X {\MT@vwid@leftmargin\leftmarginkern\z@
+^^X \MT@vwid@rightmargin\rightmarginkern\z@ \sift@deathcycles\z@}{}{}%
+^^X \patchcmd\@vwid@resetb{\kern\@vwid@loff \unhbox\z@}
+^^X {\kern\@vwid@loff \ifdim\MT@vwid@leftmargin=\z@\else\kern\MT@vwid@leftmargin\fi
+^^X \unhbox\z@ \ifdim\MT@vwid@rightmargin=\z@\else\kern\MT@vwid@rightmargin\fi}{}{}%
+^^X \patchcmd\@vwid@measure{\kern\@vwid@loff \unhbox\z@}
+^^X {\kern\@vwid@loff \ifdim\MT@vwid@leftmargin=\z@\else\kern\MT@vwid@leftmargin\fi
+^^X \unhbox\z@ \ifdim\MT@vwid@rightmargin=\z@\else\kern\MT@vwid@rightmargin\fi}{}{}%
+ \fi
+ }
\def\MT@setupfont{%
\MT@font
\MT@setupfont@hook}
@@ -109,7 +126,9 @@
\MT@exp@one@n\MT@find@file\MT@familyalias\fi
}
\MT@requires@luatex3
- {\g@addto@macro\MT@setupfont\MT@tracking}\relax
+{
+ \g@addto@macro\MT@setupfont\MT@tracking
+}\relax
\g@addto@macro\MT@setupfont{%
\MT@check@font
\ifMT@inlist@
@@ -273,8 +292,10 @@
\def\MT@prot@addtoken@next#1{%
\MT@toks\expandafter{\the\MT@toks#1}%
\setbox\MT@tempbox\hbox{%
+ \begingroup
\let\maybe@ic\relax
\MT@exp@one@n\MT@maybe@textcmd{\the\MT@toks}%
+ \endgroup
}\setbox\MT@tempbox\hbox{\unhbox\MT@tempbox
\ifnum\lastnodetype=7 \aftergroup\@firstoftwo\else\aftergroup\@secondoftwo\fi}%
\MT@prot@get@nexttoken
@@ -430,9 +451,14 @@
/\number\MT@letterspace@ ls\endcsname}%
\expandafter\ifx\MT@lsfont\relax
\MT@get@ls@basefont
- \MT@if@luaotf@font{%
+ \MT@if@opentype@font{%
+ \let\MT@tr@features\@empty
+ \MT@ifdefined@c@T\MT@tr@feat\MT@tr@set@features
\global\expandafter\font\MT@lsfont=\MT@ls@fontspec@font
}{%
+ \MT@ifdefined@c@T\MT@tr@feat
+ {\MT@warning{\MT@@font\space is a legacy font.\MessageBreak
+ Cannot disable Opentype `features' in \MT@curr@list@name}}%
\global\expandafter\letterspacefont\MT@lsfont\font@name\MT@letterspace@
}%
\MT@ifdefined@c@TF\MT@tr@ispace
@@ -445,7 +471,7 @@
\MT@ifdefined@c@TF\MT@tr@okern{\let\@tempa\MT@tr@okern}{\def\@tempa{*,*}}%
\expandafter\MT@tr@set@okern\@tempa,%
\MT@ifdefined@c@T\MT@tr@ligatures\MT@tr@noligatures
- \MT@if@luaotf@font\relax{%
+ \MT@if@opentype@font\relax{%
\MT@do@font{\lpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax
\rpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax}%
\let\MT@the@pr@code\MT@the@pr@code@tr
@@ -453,7 +479,7 @@
\fi
\aftergroup\MT@set@lsfont
\let\MT@font\MT@lsfont
- \MT@if@luaotf@font\MT@font\relax
+ \MT@if@opentype@font\MT@font\relax
\xdef\MT@set@curr@ls{\def\noexpand\MT@curr@ls{\MT@letterspace@}}%
\aftergroup\MT@set@curr@ls
\MT@outer@space=\csname MT@outer@space\expandafter\string\font@name\endcsname\relax
@@ -488,7 +514,7 @@
}%
}
\def\MT@ls@fontspec@font{%
- \MT@lua{microtype.add_ls([[\MT@letterspace@]])}%
+ \MT@lua{microtype.add_ls([[\MT@letterspace@]],[[\MT@tr@features]])}%
}
\def\MT@get@tr@opt{%
\MT@set@listname
@@ -513,11 +539,63 @@
\MT@get@tr@opt@{outerspacing}{ospace}%
\MT@get@tr@opt@{outerkerning}{okern}%
\MT@get@tr@opt@{noligatures} {ligatures}%
+ \MT@get@tr@opt@{features} {feat}%
}
\def\MT@get@tr@opt@#1#2{%
\MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @#1}%
{\MT@let@nn{MT@tr@#2}{MT@tr@c@\MT@tr@c@name @#1}}%
}
+\def\MT@tr@set@features{%
+ \MT@map@clist@c\MT@tr@feat{%
+ \MT@ifempty{##1}\relax{%
+ \MT@if@false
+ \lowercase{\edef\@tempa{##1}}%
+ \MT@map@tlist@n{{{required} {rlig}}
+ {{common} {liga}}
+ {{contextual} {clig}}
+ {{rare} {dlig}}
+ {{discretionary}{dlig}}
+ {{historic} {hlig}}
+ {{tex} {tlig}}
+ }\MT@tr@set@feature@
+ \ifMT@if@\else
+ \MT@ifstreq{\@tempa}{resetall}{%
+ \MT@xadd\MT@tr@features{+dlig;-dlig;+rlig;-rlig;+liga;-liga;+clig;-clig;+hlig;-hlig;%
+ +tlig,-tlig;%
+ }%
+ }{%
+ \MT@warning@nl{Unknown Ligatures feature `##1' in \MT@curr@list@name.
+ Ignoring it}%
+ }%
+ \fi
+ }%
+ }%
+}
+\def\MT@tr@set@feature@#1{%
+ \MT@tr@set@feature@@#1%
+}
+\def\MT@tr@set@feature@@#1#2{%
+ \MT@ifstreq\@tempa{#1}{%
+ \MT@tr@set@feature@@@{+#2}%
+ }{%
+ \MT@ifstreq\@tempa{#1off}{%
+ \MT@tr@set@feature@@@{-#2}%
+ }{%
+ \MT@ifstreq\@tempa{no#1}{%
+ \MT@tr@set@feature@@@{-#2}%
+ }{%
+ \MT@ifstreq\@tempa{#1reset}{%
+ \MT@tr@set@feature@@@{+#2;-#2}%
+ }\relax
+ }%
+ }%
+ }%
+}
+\def\MT@tr@set@feature@@@#1{%
+ \MT@xadd\MT@tr@features{#1;}%
+ \MT@if@true
+ \MT@tlist@break
+}
\def\MT@set@lsfont{\MT@exp@two@c\let\font@name\MT@lsfont}
\DeclareRobustCommand\lsstyle{%
\not@math@alphabet\lsstyle\textls
@@ -557,7 +635,13 @@
\ifx\MT@tr@ligatures\@empty
\MT@noligatures@\MT@lsfont\@undefined
\else
- \MT@noligatures@\MT@lsfont\MT@tr@ligatures
+ \MT@ifstreq\MT@tr@ligatures{all}{%
+ \MT@noligatures@\MT@lsfont\@undefined
+ }{%
+ \MT@ifstreq\MT@tr@ligatures{none}\relax{%
+ \MT@noligatures@\MT@lsfont\MT@tr@ligatures
+ }%
+ }%
\fi
}
\newskip\MT@outer@space
@@ -591,7 +675,9 @@
{\@tempcntb=#1\relax}%
\@tempdima=\dimexpr\@tempcntb sp*\MT@dimen@six/1000\relax
\ifnum#2=\tw@
+ \MT@if@opentype@font\relax{%
\advance\@tempdima -\dimexpr\MT@letterspace@ sp*\MT@dimen@six/#3\relax
+ }%
\fi
}{%
\MT@ifempty\@tempa{\let\@tempa\MT@letterspace@}\relax
@@ -708,8 +794,10 @@
\@tempdima=\dimexpr \numexpr\@tempa*\MT@letterspace@/1000\relax sp
* \fontdimen6\MT@lsfont/2000\relax
}%
+ \MT@if@opentype@font\relax{%
\advance\@tempdima -\dimexpr \MT@letterspace@ sp
- * \fontdimen6\MT@lsfont/2000\relax
+ * \fontdimen6\MT@lsfont/2000\relax
+ }%
\edef\MT@temp{\MT@temp{\the\@tempdima}}%
}
\def\MT@ls@outer@k{%
@@ -744,14 +832,17 @@
\MT@ifdefined@c@TF#2{%
\MT@ifdefined@c@TF\tagcode{%
\let\MT@warn@maybe@inputenc\@empty
- \def\MT@curr@list@name{\@backslashchar DisableLigatures}%
+ \MT@ifstreq\MT@feat{tr}\relax
+ {\def\MT@curr@list@name{\@backslashchar DisableLigatures}}%
\MT@map@clist@c#2{%
- \KV@@sp@def\@tempa{##1}\MT@get@slot
- \ifnum\MT@char>\m@ne
- \tagcode#1\MT@char=\m@ne
- \MT@if@luaotf@font
- {\MT@lua{microtype.noligatures([[#1]],[[\MT@char]])}}\relax
- \fi
+ \MT@ifempty{##1}\relax{%
+ \KV@@sp@def\@tempa{##1}\MT@get@slot
+ \ifnum\MT@char>\m@ne
+ \tagcode#1\MT@char=\m@ne
+ \MT@if@opentype@font
+ {\MT@lua{microtype.noligatures([[#1]],[[\MT@char]])}}\relax
+ \fi
+ }%
}%
\MT@vinfo{... Disabling ligatures for characters: #2}%
}{%
@@ -762,7 +853,7 @@
}%
}{%
\pdfnoligatures#1%
- \MT@if@luaotf@font
+ \MT@if@opentype@font
{\MT@lua{microtype.noligatures([[#1]],"_all_")}}\relax
\MT@vinfo{... Disabling all ligatures}%
}%
@@ -799,9 +890,9 @@
\def\MT@max@slot
{1114111 }
\MT@requires@luatex3
- {\def\MT@active@features{,tr}}{%
- \let\MT@active@features\@empty
- }
+ {%
+ \def\MT@active@features{,tr}%
+ }{\let\MT@active@features\@empty}
\def\DisableLigatures{%
\MT@begin@catcodes
\MT@DisableLigatures
@@ -886,14 +977,6 @@
\fi
}%
}
-\define@key{MT@tr@c}{unit}[1em]{%
- \MT@glet@nc{MT@tr@c@\MT@curr@set@name @unit}\@empty
- \def\@tempa{#1}%
- \MT@ifdimen\@tempa
- {\MT@glet@nc{MT@tr@c@\MT@curr@set@name @unit}\@tempa}%
- {\MT@warn@nodim{1em}%
- \MT@gdef@n{MT@tr@c@\MT@curr@set@name @unit}{1em}}%
-}
\MT@map@clist@n{stretch,shrink,step}{%
\define@key{MT@ex@c}{#1}[]{%
\MT@ifempty{##1}\relax{%
@@ -922,6 +1005,7 @@
\MT@define@opt@key{tr}{spacing}
\MT@define@opt@key{tr}{outerspacing}
\MT@define@opt@key{tr}{outerkerning}
+\MT@define@opt@key{tr}{features}
\define@key{MT@tr@c}{noligatures}[]%
{\MT@xdef@n{MT@tr@c@\MT@curr@set@name @noligatures}{#1}}
\define@key{MT@tr@c}{outer spacing}[]{\setkeys{MT@tr@c}{outerspacing={#1}}}
diff --git a/Master/texmf-dist/tex/latex/microtype/microtype-pdftex.def b/Master/texmf-dist/tex/latex/microtype/microtype-pdftex.def
index a0b226ea24e..0bc99357c06 100644
--- a/Master/texmf-dist/tex/latex/microtype/microtype-pdftex.def
+++ b/Master/texmf-dist/tex/latex/microtype/microtype-pdftex.def
@@ -31,7 +31,7 @@
%%
\ProvidesFile
{microtype-pdftex.def}
- [2024/03/29 v3.1b
+ [2024/12/12 v3.2
Definitions specific to
pdftex
(RS)]
@@ -156,6 +156,34 @@
\fi
}
}
+\MT@requires@pdftex5{
+ \def\MT@varwidth@setup{%
+ \ifMT@protrusion
+^^Q \MT@warning@nl{Cannot patch varwidth without etex extensions}%
+^^X \MT@info@nl{Patching varwidth to enable character protrusion}%
+^^X \newdimen\MT@vwid@leftmargin
+^^X \newdimen\MT@vwid@rightmargin
+^^X \patchcmd\@vwid@sift{\sift@deathcycles\z@}
+^^X {\MT@vwid@leftmargin\leftmarginkern\z@
+^^X \MT@vwid@rightmargin\rightmarginkern\z@ \sift@deathcycles\z@}{}{}%
+^^X \patchcmd\@vwid@resetb{\kern\@vwid@loff \unhbox\z@}
+^^X {\kern\@vwid@loff \ifdim\MT@vwid@leftmargin=\z@\else\kern\MT@vwid@leftmargin\fi
+^^X \unhbox\z@ \ifdim\MT@vwid@rightmargin=\z@\else\kern\MT@vwid@rightmargin\fi}{}{}%
+^^X \patchcmd\@vwid@measure{\kern\@vwid@loff \unhbox\z@}
+^^X {\kern\@vwid@loff \ifdim\MT@vwid@leftmargin=\z@\else\kern\MT@vwid@leftmargin\fi
+^^X \unhbox\z@ \ifdim\MT@vwid@rightmargin=\z@\else\kern\MT@vwid@rightmargin\fi}{}{}%
+ \fi
+ }
+}{
+ \def\MT@varwidth@setup{%
+ \ifMT@protrusion
+ \MT@warning@nl{%
+ The pdftex version you are using does not allow\MessageBreak
+ character protrusion in varwidth environments.\MessageBreak
+ Upgrade pdftex to version 1.30 or later}%
+ \fi
+ }
+}
\def\MT@setupfont{%
\MT@setupfont@hook}
\MT@requires@pdftex7{
@@ -168,7 +196,9 @@
\MT@exp@one@n\MT@find@file\MT@familyalias\fi
}
\MT@requires@pdftex6
- {\g@addto@macro\MT@setupfont\MT@tracking}\relax
+{
+ \g@addto@macro\MT@setupfont\MT@tracking
+}\relax
\g@addto@macro\MT@setupfont{%
\MT@check@font
\ifMT@inlist@
@@ -354,9 +384,11 @@
\def\MT@prot@addtoken@next#1{%
\MT@toks\expandafter{\the\MT@toks#1}%
\setbox\MT@tempbox\hbox{%
+ \begingroup
\let\maybe@ic\relax
\MT@exp@one@n\MT@maybe@textcmd{\the\MT@toks}%
\relax
+ \endgroup
\ifnum\lastnodetype=7 \aftergroup\@firstoftwo\else\aftergroup\@secondoftwo\fi}%
\MT@prot@get@nexttoken
{\MT@exp@one@n\MT@prot@l{\the\MT@toks}}%
@@ -758,15 +790,25 @@
\ifx\MT@tr@ligatures\@empty
\MT@noligatures@\MT@lsfont\@undefined
\else
- \MT@noligatures@\MT@lsfont\MT@tr@ligatures
+ \MT@ifstreq\MT@tr@ligatures{all}{%
+ \MT@noligatures@\MT@lsfont\@undefined
+ }{%
+ \MT@ifstreq\MT@tr@ligatures{none}\relax{%
+ \MT@noligatures@\MT@lsfont\MT@tr@ligatures
+ }%
+ }%
\fi
}
}{
\def\MT@tr@noligatures{%
- \MT@warning@nl{%
- Disabling selected ligatures is only possible since\MessageBreak
- pdftex 1.40.4. Disabling all ligatures instead}%
- \MT@glet\MT@tr@noligatures\relax
+ \MT@ifstreq\MT@tr@ligatures{all}\relax{%
+ \MT@warning@nl{%
+ Disabling (selected) ligatures is
+ possible since\MessageBreak pdftex 1.40.4.
+ Disabling all ligatures instead%
+ }%
+ \MT@glet\MT@tr@noligatures\relax
+ }%
}
}
\newskip\MT@outer@space
@@ -918,7 +960,7 @@
* \fontdimen6\MT@lsfont/2000\relax
}%
\advance\@tempdima -\dimexpr \MT@letterspace@ sp
- * \fontdimen6\MT@lsfont/2000\relax
+ * \fontdimen6\MT@lsfont/2000\relax
\edef\MT@temp{\MT@temp{\the\@tempdima}}%
}
\def\MT@ls@outer@k{%
@@ -953,12 +995,15 @@
\MT@ifdefined@c@TF#2{%
\MT@ifdefined@c@TF\tagcode{%
\let\MT@warn@maybe@inputenc\@empty
- \def\MT@curr@list@name{\@backslashchar DisableLigatures}%
+ \MT@ifstreq\MT@feat{tr}\relax
+ {\def\MT@curr@list@name{\@backslashchar DisableLigatures}}%
\MT@map@clist@c#2{%
- \KV@@sp@def\@tempa{##1}\MT@get@slot
- \ifnum\MT@char>\m@ne
- \tagcode#1\MT@char=\m@ne
- \fi
+ \MT@ifempty{##1}\relax{%
+ \KV@@sp@def\@tempa{##1}\MT@get@slot
+ \ifnum\MT@char>\m@ne
+ \tagcode#1\MT@char=\m@ne
+ \fi
+ }%
}%
\MT@vinfo{... Disabling ligatures for characters: #2}%
}{%
@@ -988,9 +1033,9 @@
\def\MT@max@slot
{255 }
\MT@requires@pdftex6
- {\def\MT@active@features{,tr}}{%
- \let\MT@active@features\@empty
- }
+ {%
+ \def\MT@active@features{,tr}%
+ }{\let\MT@active@features\@empty}
\MT@requires@pdftex5{
\def\DisableLigatures{%
\MT@begin@catcodes
@@ -1125,14 +1170,6 @@
{Upgrade pdftex.}%
}
}
-\define@key{MT@tr@c}{unit}[1em]{%
- \MT@glet@nc{MT@tr@c@\MT@curr@set@name @unit}\@empty
- \def\@tempa{#1}%
- \MT@ifdimen\@tempa
- {\MT@glet@nc{MT@tr@c@\MT@curr@set@name @unit}\@tempa}%
- {\MT@warn@nodim{1em}%
- \MT@gdef@n{MT@tr@c@\MT@curr@set@name @unit}{1em}}%
-}
\MT@map@clist@n{sp,kn}{%
\define@key{MT@#1@c}{unit}[space]{%
\MT@glet@nc{MT@#1@c@\MT@curr@set@name @unit}\@empty
@@ -1175,6 +1212,7 @@
\MT@define@opt@key{tr}{spacing}
\MT@define@opt@key{tr}{outerspacing}
\MT@define@opt@key{tr}{outerkerning}
+\MT@define@opt@key{tr}{features}
\define@key{MT@tr@c}{noligatures}[]%
{\MT@xdef@n{MT@tr@c@\MT@curr@set@name @noligatures}{#1}}
\define@key{MT@tr@c}{outer spacing}[]{\setkeys{MT@tr@c}{outerspacing={#1}}}
diff --git a/Master/texmf-dist/tex/latex/microtype/microtype-show.sty b/Master/texmf-dist/tex/latex/microtype/microtype-show.sty
index 29484f20113..d4bfd8a0f02 100644
--- a/Master/texmf-dist/tex/latex/microtype/microtype-show.sty
+++ b/Master/texmf-dist/tex/latex/microtype/microtype-show.sty
@@ -34,7 +34,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage
{microtype-show}
- [2024/03/29 v3.1b
+ [2024/12/12 v3.2
Visual debugging for the microtype package
(RS)]
\RequirePackage{iftex}
diff --git a/Master/texmf-dist/tex/latex/microtype/microtype-xetex.def b/Master/texmf-dist/tex/latex/microtype/microtype-xetex.def
index b9d23e58b9e..3d10df72228 100644
--- a/Master/texmf-dist/tex/latex/microtype/microtype-xetex.def
+++ b/Master/texmf-dist/tex/latex/microtype/microtype-xetex.def
@@ -31,7 +31,7 @@
%%
\ProvidesFile
{microtype-xetex.def}
- [2024/03/29 v3.1b
+ [2024/12/12 v3.2
Definitions specific to
xetex
(RS)]
@@ -61,6 +61,13 @@
\expandafter\@secondoftwo
\fi
}
+\def\MT@if@opentype@font{%
+ \ifnum\XeTeXfonttype\font@name=\z@
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi
+}
\def\MT@do@font#1{%
\@tempcnta=\z@
\MT@loop
@@ -88,6 +95,23 @@
}%
\fi
}
+ \def\MT@varwidth@setup{%
+ \ifMT@protrusion
+^^Q \MT@warning@nl{Cannot patch varwidth without etex extensions}%
+^^X \MT@info@nl{Patching varwidth to enable character protrusion}%
+^^X \newdimen\MT@vwid@leftmargin
+^^X \newdimen\MT@vwid@rightmargin
+^^X \patchcmd\@vwid@sift{\sift@deathcycles\z@}
+^^X {\MT@vwid@leftmargin\leftmarginkern\z@
+^^X \MT@vwid@rightmargin\rightmarginkern\z@ \sift@deathcycles\z@}{}{}%
+^^X \patchcmd\@vwid@resetb{\kern\@vwid@loff \unhbox\z@}
+^^X {\kern\@vwid@loff \ifdim\MT@vwid@leftmargin=\z@\else\kern\MT@vwid@leftmargin\fi
+^^X \unhbox\z@ \ifdim\MT@vwid@rightmargin=\z@\else\kern\MT@vwid@rightmargin\fi}{}{}%
+^^X \patchcmd\@vwid@measure{\kern\@vwid@loff \unhbox\z@}
+^^X {\kern\@vwid@loff \ifdim\MT@vwid@leftmargin=\z@\else\kern\MT@vwid@leftmargin\fi
+^^X \unhbox\z@ \ifdim\MT@vwid@rightmargin=\z@\else\kern\MT@vwid@rightmargin\fi}{}{}%
+ \fi
+ }
\def\MT@setupfont{%
\MT@font
\MT@setupfont@hook}
@@ -97,6 +121,7 @@
\ifx\MT@familyalias\@empty \else
\MT@exp@one@n\MT@find@file\MT@familyalias\fi
}
+ \g@addto@macro\MT@setupfont\MT@tracking
\g@addto@macro\MT@setupfont{%
\MT@check@font
\ifMT@inlist@
@@ -228,17 +253,388 @@
\def\MT@prot@addtoken@next#1{%
\MT@toks\expandafter{\the\MT@toks#1}%
\setbox\MT@tempbox\hbox{%
+ \begingroup
\let\maybe@ic\relax
\MT@exp@one@n\MT@maybe@textcmd{\the\MT@toks}%
\relax
+ \endgroup
\ifnum\lastnodetype=7 \aftergroup\@firstoftwo\else\aftergroup\@secondoftwo\fi}%
\MT@prot@get@nexttoken
{\MT@exp@one@n\MT@prot@l{\the\MT@toks}}%
}
+\let\MT@tr@font@list\@empty
+\def\MT@tracking@{%
+ \MT@exp@one@n\MT@in@clist\MT@font\MT@tr@font@list
+ \ifMT@inlist@\else
+ \MT@maybe@do{tr}%
+ \ifMT@do\else
+ \xdef\MT@tr@font@list{\MT@tr@font@list\MT@font,}%
+ \fi
+ \fi
+}
+\let\MT@tracking
+ \MT@tracking@
+\def\MT@set@tr@codes{%
+ \MT@vinfo{Tracking font `\MT@@font'\on@line}%
+ \MT@if@list@exists
+ \MT@get@tr@opt
+ \relax
+ \MT@ifdefined@c@TF\MT@letterspace@\relax{\let\MT@letterspace@\MT@letterspace}%
+ \ifnum\MT@letterspace@=\z@
+ \MT@set@tr@zero
+ \else
+ \MT@vinfo{... Tracking by \number\MT@letterspace@}%
+ \xdef\MT@lsfont{\csname\expandafter\string\font@name
+ /\number\MT@letterspace@ ls\endcsname}%
+ \expandafter\ifx\MT@lsfont\relax
+ \MT@get@ls@basefont
+ \MT@if@opentype@font{%
+ \let\MT@tr@features\@empty
+ \MT@ifdefined@c@T\MT@tr@feat\MT@tr@set@features
+ \global\expandafter\font\MT@lsfont=\MT@ls@fontspec@font
+ }{%
+ \MT@warning{\MT@@font\space is a legacy font.\MessageBreak
+ Cannot letterspace it}%
+ \MT@glet\MT@lsfont\font@name
+ }%
+ \MT@ifdefined@c@TF\MT@tr@ispace
+ {\let\@tempa\MT@tr@ispace}%
+ {\edef\@tempa{\MT@letterspace@*,,}}%
+ \MT@ifdefined@c@TF\MT@tr@ospace
+ {\edef\@tempa{\@tempa,\MT@tr@ospace}}%
+ {\edef\@tempa{\@tempa,,,}}%
+ \expandafter\MT@tr@set@space\@tempa,%
+ \MT@ifdefined@c@TF\MT@tr@okern{\let\@tempa\MT@tr@okern}{\def\@tempa{*,*}}%
+ \expandafter\MT@tr@set@okern\@tempa,%
+ \MT@ifdefined@c@T\MT@tr@ligatures\MT@tr@noligatures
+ \fi
+ \aftergroup\MT@set@lsfont
+ \let\MT@font\MT@lsfont
+ \MT@if@opentype@font\MT@font\relax
+ \xdef\MT@set@curr@ls{\def\noexpand\MT@curr@ls{\MT@letterspace@}}%
+ \aftergroup\MT@set@curr@ls
+ \MT@outer@space=\csname MT@outer@space\expandafter\string\font@name\endcsname\relax
+ \xdef\MT@set@curr@os{\MT@outer@space=\the\MT@outer@space\relax}%
+ \MT@tr@outer@l
+ \ifx\MT@ls@adjust\@empty
+ \MT@outer@kern=-\dimexpr\MT@letterspace@ sp * \fontdimen6\font@name/2000\relax
+ \MT@ls@outer@k
+ \else
+ \MT@outer@kern=\expandafter\expandafter\expandafter\@firstoftwo
+ \csname MT@outer@kern\expandafter\string\font@name\endcsname\relax
+ \ifdim\MT@outer@kern=\z@\else \MT@ls@outer@k \fi
+ \MT@outer@kern=\expandafter\expandafter\expandafter\@secondoftwo
+ \csname MT@outer@kern\expandafter\string\font@name\endcsname\relax
+ \fi
+ \xdef\MT@set@curr@ok{\MT@outer@kern=\the\MT@outer@kern\relax}%
+ \MT@afteraftergroup{%
+ \MT@set@curr@os
+ \MT@set@curr@ok
+ \noexpand\MT@tr@outer@r
+ }%
+ \fi
+}
+\def\MT@afteraftergroup#1{%
+ \MT@maybe@gobble@with@tikz{%
+ \MT@ifdefined@n@TF{MT@aftergroup@\number\currentgrouplevel}\relax{%
+ \MT@exp@cs\xdef{MT@aftergroup@\number\currentgrouplevel}%
+ {\MT@exp@cs\MT@glet{MT@aftergroup@\number\currentgrouplevel}\noexpand\@undefined#1}%
+ \expandafter\aftergroup\expandafter\aftergroup\MT@exp@cs\aftergroup
+ {MT@aftergroup@\number\currentgrouplevel}%
+ }%
+ }%
+}
+\def\MT@ls@fontspec@font{\MT@exp@two@c\MT@ls@fontspec@font@\fontname\font@name\MT@nil}
+\def\MT@ls@fontspec@font@"#1"#2\MT@nil{\MT@ls@fontspec@font@@#1::\MT@nil#2}
+\def\MT@ls@fontspec@font@@#1:#2:#3\MT@nil{%
+ "#1:#2letterspace=\strip@pt\dimexpr\MT@letterspace@ pt/10\relax
+ ;\MT@tr@features"%
+}
+\def\MT@get@tr@opt{%
+ \MT@set@listname
+ \let\MT@tr@factor@\@m
+ \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @unit}{%
+ \MT@let@cn\MT@tr@unit@{MT@tr@c@\MT@tr@c@name @unit}%
+ \ifdim\MT@tr@unit@=1em
+ \let\MT@tr@unit@\@undefined
+ \else
+ \MT@get@unit\MT@tr@unit@
+ \fi
+ }%
+ \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name}{%
+ \MT@let@cn\MT@letterspace{MT@tr@c@\MT@tr@c@name}%
+ \MT@ifdefined@c@T\MT@tr@unit@{%
+ \let\@tempb\MT@letterspace
+ \MT@scale@to@em
+ \edef\MT@letterspace{\number\@tempcntb}%
+ }%
+ }%
+ \MT@get@tr@opt@{spacing} {ispace}%
+ \MT@get@tr@opt@{outerspacing}{ospace}%
+ \MT@get@tr@opt@{outerkerning}{okern}%
+ \MT@get@tr@opt@{noligatures} {ligatures}%
+ \MT@get@tr@opt@{features} {feat}%
+}
+\def\MT@get@tr@opt@#1#2{%
+ \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @#1}%
+ {\MT@let@nn{MT@tr@#2}{MT@tr@c@\MT@tr@c@name @#1}}%
+}
+\def\MT@tr@set@features{%
+ \MT@map@clist@c\MT@tr@feat{%
+ \MT@ifempty{##1}\relax{%
+ \MT@if@false
+ \lowercase{\edef\@tempa{##1}}%
+ \MT@map@tlist@n{{{required} {rlig}}
+ {{common} {liga}}
+ {{contextual} {clig}}
+ {{rare} {dlig}}
+ {{discretionary}{dlig}}
+ {{historic} {hlig}}
+ }\MT@tr@set@feature@
+ \ifMT@if@\else
+ \MT@ifstreq{\@tempa}{tex}{%
+ \MT@xadd\MT@tr@features{mapping=tex-text;}%
+ }{%
+ \MT@ifstreq{\@tempa}{texoff}{%
+ \MT@xadd\MT@tr@features{mapping=;}%
+ }{%
+ \MT@ifstreq{\@tempa}{notex}{%
+ \MT@xadd\MT@tr@features{mapping=;}%
+ }{%
+ \MT@ifstreq{\@tempa}{resetall}{%
+ \MT@xadd\MT@tr@features{+dlig;-dlig;+rlig;-rlig;+liga;-liga;+clig;-clig;+hlig;-hlig;%
+ mapping=tex-text;%
+ }%
+ }{%
+ \MT@warning@nl{Unknown Ligatures feature `##1' in \MT@curr@list@name.
+ Ignoring it}%
+ }%
+ }}}%
+ \fi
+ }%
+ }%
+}
+\def\MT@tr@set@feature@#1{%
+ \MT@tr@set@feature@@#1%
+}
+\def\MT@tr@set@feature@@#1#2{%
+ \MT@ifstreq\@tempa{#1}{%
+ \MT@tr@set@feature@@@{+#2}%
+ }{%
+ \MT@ifstreq\@tempa{#1off}{%
+ \MT@tr@set@feature@@@{-#2}%
+ }{%
+ \MT@ifstreq\@tempa{no#1}{%
+ \MT@tr@set@feature@@@{-#2}%
+ }{%
+ \MT@ifstreq\@tempa{#1reset}{%
+ \MT@tr@set@feature@@@{+#2;-#2}%
+ }\relax
+ }%
+ }%
+ }%
+}
+\def\MT@tr@set@feature@@@#1{%
+ \MT@xadd\MT@tr@features{#1;}%
+ \MT@if@true
+ \MT@tlist@break
+}
+\def\MT@set@lsfont{\MT@exp@two@c\let\font@name\MT@lsfont}
\DeclareRobustCommand\lsstyle{%
- \MT@error{Letterspacing currently doesn't work with xetex}
- {Run pdftex or luatex, or use the `soul' package instead.}%
- \MT@glet\lsstyle\relax
+ \not@math@alphabet\lsstyle\textls
+ \let\glb@currsize\@empty
+ \MT@maybe@gobble@with@tikz{\aftergroup\glb@settings}%
+ \def\MT@feat{tr}%
+ \let\MT@tracking\MT@set@tr@codes
+ \selectfont
+}
+\DeclareRobustCommand\lslig[1]{%
+ {\MT@ifdefined@c@TF\MT@curr@ls{%
+ \escapechar\m@ne
+ \xdef\font@name{\csname\curr@fontshape/\f@size\endcsname}%
+ \MT@get@ls@basefont
+ \MT@outer@kern=\dimexpr\MT@curr@ls sp * \fontdimen6\font@name/2000\relax
+ \kern\MT@outer@kern
+ \font@name #1%
+ \kern\MT@outer@kern
+ }{#1}}%
+}
+\def\MT@get@ls@basefont{%
+ \xdef\MT@ls@basefont{\csname\expandafter\string\font@name @base\endcsname}%
+ \expandafter\ifx\MT@ls@basefont\relax
+ \MT@exp@two@c\MT@glet\MT@ls@basefont\font@name
+ \else
+ \MT@set@lsbasefont
+ \fi
+}
+\def\MT@set@lsbasefont{\MT@exp@two@c\let\font@name\MT@ls@basefont}
+\def\MT@set@tr@zero{%
+ \xdef\MT@ls@basefont{\csname\expandafter\string\font@name @base\endcsname}%
+ \expandafter\ifx\MT@ls@basefont\relax \else
+ \aftergroup\MT@set@lsbasefont
+ \fi
+}
+ \def\MT@tr@noligatures{%
+ \MT@ifstreq\MT@tr@ligatures{all}\relax{%
+ \MT@warning@nl{%
+ Disabling (selected) ligatures is
+ not possible with\MessageBreak xetex.
+ Ignoring `no ligatures' key in \MT@curr@list@name
+ }%
+ \MT@glet\MT@tr@noligatures\relax
+ }%
+ }
+\newskip\MT@outer@space
+\def\MT@tr@set@space#1,#2,#3,#4,#5,#6,{%
+ \let\MT@temp\@empty
+ \MT@tr@set@space@{#1}{#4}{2}\@empty
+ \MT@tr@set@space@{#2}{#5}{3}\@plus
+ \MT@tr@set@space@{#3}{#6}{4}\@minus
+ \MT@glet@nc{MT@outer@space\expandafter\string\font@name}\MT@temp
+}
+\def\MT@tr@set@space@#1#2#3#4{%
+ \MT@ifempty{#2}{%
+ \MT@ifempty{#1}\relax{%
+ \MT@tr@set@space@@{#1}{#3}{1000}%
+ \fontdimen#3\MT@lsfont=\@tempdima
+ }%
+ \edef\MT@temp{\MT@temp#4\the\fontdimen#3\MT@lsfont}%
+ }{%
+ \MT@tr@set@space@@{#2}{#3}{2000}%
+ \edef\MT@temp{\MT@temp#4\the\@tempdima}%
+ \MT@ifempty{#1}\relax{%
+ \MT@tr@set@space@@{#1}{#3}{1000}%
+ \fontdimen#3\MT@lsfont=\@tempdima
+ }%
+ }%
+}
+\def\MT@tr@set@space@@#1#2#3{%
+ \MT@test@ast#1*\@nil{%
+ \MT@ifdefined@c@TF\MT@tr@unit@
+ {\edef\@tempb{#1}\MT@scale@to@em}
+ {\@tempcntb=#1\relax}%
+ \@tempdima=\dimexpr\@tempcntb sp*\MT@dimen@six/1000\relax
+ }{%
+ \MT@ifempty\@tempa{\let\@tempa\MT@letterspace@}\relax
+ \@tempdima=\dimexpr \numexpr1000+\@tempa sp *\fontdimen#2\MT@lsfont/1000\relax
+ }%
+}
+\def\MT@tr@outer@l{%
+ \ifhmode
+ \ifdim\lastskip>5sp
+ \edef\x{\the\lastskip minus 0pt}%
+ \setbox\z@\hbox{\MT@outer@space=\x}%
+ \ifdim\wd\z@>\z@
+ \unskip \hskip\MT@outer@space\relax
+ \let\MT@ls@outer@k\relax
+ \else
+ \ifdim\lastskip=%
+ \ifnum\spacefactor<2000
+ \spaceskip
+ \else
+ \ifdim\xspaceskip=\z@
+ \dimexpr\spaceskip+\fontdimen7\font@name\relax
+ \else
+ \xspaceskip
+ \fi
+ \fi
+ \unskip \hskip\MT@outer@space\relax
+ \let\MT@ls@outer@k\relax
+ \fi
+ \fi
+ \fi
+ \fi
+}
+\def\MT@tr@outer@r{%
+ \futurelet\MT@tr@outer@next\MT@tr@outer@r@
+}
+\def\MT@if@outer@next#1{%
+ \ifx\MT@tr@outer@next#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}
+\def\MT@tr@outer@r@{%
+ \def\MT@temp*{}%
+ \ifmmode \else
+ \ifnum\currentgrouptype=10 \else
+ \def\MT@temp*##1{\ifhmode\hskip\MT@outer@space
+ \fi}%
+ \expandafter\ifcat\expandafter\noexpand\csname MT@tr@outer@next\endcsname\egroup
+ \ifhmode\unkern\fi\egroup
+ \MT@set@curr@ok \MT@set@curr@os
+ \def\MT@temp*{\afterassignment\MT@tr@outer@r\let\MT@temp=}%
+ \else
+ \MT@if@outer@next\maybe@ic{%
+ \MT@set@curr@ok \MT@set@curr@os
+ \def\MT@temp*{\afterassignment\MT@tr@outer@icr\let\MT@temp=}%
+ }{%
+ \MT@if@outer@next\check@icr{%
+ \def\MT@temp*{\aftergroup\MT@tr@outer@r\check@icr\let\MT@temp=}%
+ }{%
+ \MT@if@outer@next\@sptoken{%
+ \def\MT@temp* {\ifhmode\hskip\MT@outer@space
+ \fi}%
+ }{%
+ \MT@if@outer@next~{%
+ \def\MT@temp*~{\nobreak\hskip\MT@outer@space
+ }%
+ }{%
+ \MT@if@outer@next\ \relax{%
+ \MT@if@outer@next\space\relax{%
+ \MT@if@outer@next\@xobeysp\relax{%
+ \MT@if@outer@next\xspace{%
+ \def\MT@temp*\xspace{\MT@xspace}%
+ }{%
+ \def\MT@temp*{\ifdim\MT@outer@kern=\z@\else\MT@ls@outer@k
+ \fi}%
+ \MT@let@nc{MT@tr@outer@next}\relax
+ }}}}}}}}\fi
+ \fi\fi
+ \MT@temp*%
+}
+\def\MT@tr@outer@icr{\afterassignment\MT@tr@outer@icr@\MT@tr@outer@r}
+\def\MT@tr@outer@icr@{%
+ \let\@let@token= \MT@tr@outer@next
+ \maybe@ic@
+}
+\def\MT@xspace{\futurelet\@let@token\MT@xspace@}
+\def\MT@xspace@{\@xspace@firsttrue\@xspace
+ \ifdim\lastskip>5sp
+ \unskip \hskip\MT@outer@space
+ \else
+ \ifdim\MT@outer@kern=\z@\else\MT@ls@outer@k \fi
+ \fi
+}
+\def\MT@tr@set@okern#1,#2,{%
+ \let\MT@temp\@empty
+ \MT@ifempty{#1}{\MT@tr@set@okern@{*}}{\MT@tr@set@okern@{#1}}%
+ \MT@ifempty{#2}{\MT@tr@set@okern@{*}}{\MT@tr@set@okern@{#2}}%
+ \MT@glet@nc{MT@outer@kern\expandafter\string\font@name}\MT@temp
+}
+\def\MT@tr@set@okern@#1{%
+ \MT@test@ast#1*\@nil{%
+ \MT@ifdefined@c@TF\MT@tr@unit@
+ {\edef\@tempb{#1}\MT@scale@to@em}
+ {\@tempcntb=#1\relax}%
+ \@tempdima=\dimexpr \@tempcntb sp * \MT@dimen@six/1000\relax
+ }{%
+ \MT@ifempty\@tempa{\let\@tempa\@m}\relax
+ \@tempdima=\dimexpr \numexpr\@tempa*\MT@letterspace@/1000\relax sp
+ * \fontdimen6\MT@lsfont/2000\relax
+ }%
+ \edef\MT@temp{\MT@temp{\the\@tempdima}}%
+}
+\def\MT@ls@outer@k{%
+ \ifhmode
+ \ifdim\lastkern=-3sp \unkern
+ \ifdim\lastkern=3sp \kern-3sp
+ \expandafter\expandafter\expandafter\@gobble
+ \else \unkern
+ \expandafter\expandafter\expandafter\@firstofone
+ \fi
+ \else
+ \expandafter\@firstofone
+ \fi
+ {\kern\MT@outer@kern\kern3sp\kern-3sp\relax}%
+ \fi
}
\def\MT@get@slot@{%
\ifnum\XeTeXfonttype\MT@font=\z@
@@ -289,7 +685,7 @@
{1114111 }
\def\MT@max@slot
{1114111 }
- \let\MT@active@features\@empty
+ \def\MT@active@features{,tr}%
\renewcommand*\DisableLigatures[2][]{%
\MT@error{Disabling ligatures of a font is only possible\MessageBreak
with pdftex version 1.30 or newer.\MessageBreak
@@ -297,12 +693,39 @@
Use
pdftex.}%
}
+\def\SetTracking{%
+ \MT@begin@catcodes
+ \MT@SetTracking
+}
+\newcommand*\MT@SetTracking[3][]{%
+ \let\MT@extra@context\@empty
+ \MT@set@named@keys{MT@tr@c}{#1}%
+ \def\MT@permutelist{tr@c}%
+ \setkeys{MT@cfg}{#2}%
+ \MT@permute
+ \KV@@sp@def\@tempa{#3}%
+ \MT@ifempty\@tempa\relax{%
+ \MT@ifint\@tempa
+ {\MT@xdef@n{MT@tr@c@\MT@tr@c@name}{\@tempa}}%
+ {\MT@warning{Value `\@tempa' is not a number in\MessageBreak
+ tracking set `\MT@curr@set@name'}}}%
+ \MT@end@catcodes
+}
\define@key{MT@pr@c}{context}[]{%
\MT@error{Protrusion contexts only work with pdftex
\MessageBreak or luatex.
Ignoring `context' key\on@line}%
{Use pdftex or luatex.}%
}
+\MT@define@opt@key{tr}{spacing}
+\MT@define@opt@key{tr}{outerspacing}
+\MT@define@opt@key{tr}{outerkerning}
+\MT@define@opt@key{tr}{features}
+\define@key{MT@tr@c}{noligatures}[]%
+ {\MT@xdef@n{MT@tr@c@\MT@curr@set@name @noligatures}{#1}}
+\define@key{MT@tr@c}{outer spacing}[]{\setkeys{MT@tr@c}{outerspacing={#1}}}
+\define@key{MT@tr@c}{outer kerning}[]{\setkeys{MT@tr@c}{outerkerning={#1}}}
+\define@key{MT@tr@c}{no ligatures}[]{\setkeys{MT@tr@c}{noligatures={#1}}}
\def\MT@inh@split#1=#2=#3\relax{%
\def\@tempa{#1}%
\ifx\@tempa\@empty \else
@@ -396,7 +819,34 @@
\MT@define@optionX{protrusion}\MT@protrudechars
\let\MT@protrudechars\XeTeXprotrudechars
\define@key{MTX}{expansion}[true]{\MT@warning{Ignoring expansion setup}}
-\define@key{MTX}{tracking}[true]{\MT@warning{Ignoring tracking setup}}
+ \def\MT@define@optionX@#1#2{%
+ \define@key{MTX}{#1}[true]{%
+ \MT@map@clist@n{##1}{%
+ \KV@@sp@def\MT@val{####1}%
+ \MT@ifempty\MT@val\relax{%
+ \@tempcnta=\m@ne
+ \MT@ifstreq\MT@val{true}{%
+ \MT@checksetup{#1}{%
+ \@tempcnta=\@ne
+ \MT@vinfo{Enabling #1\on@line}%
+ }%
+ }{%
+ \MT@ifstreq\MT@val{false}{%
+ \@tempcnta=\z@
+ \MT@vinfo{Disabling #1\on@line}%
+ }{\MT@error{Value `\MT@val' for key `#1' not recognised}
+ {Use either `true' or `false'}%
+ }%
+ }%
+ \ifnum\@tempcnta>\m@ne
+ #2\relax
+ \fi
+ }%
+ }%
+ }%
+ }
+ \MT@define@optionX@{tracking}{\ifnum\@tempcnta=\z@ \let\MT@tracking\MT@set@tr@zero
+ \else \let\MT@tracking\MT@tracking@ \fi}
\define@key{MTX}{kerning}[true]{\MT@warning{Ignoring kerning setup}}
\define@key{MTX}{spacing}[true]{\MT@warning{Ignoring spacing setup}}
\define@key{MTX}{activate}[true]{%
@@ -426,6 +876,16 @@
\fi
\fi
}
+ \def\MT@setup@tracking{%
+ \ifMT@tracking
+ \MT@info@nl{Tracking enabled}%
+ \MT@check@active@set{tr}%
+ \ifMT@protrusion\else\MT@protrudechars\@ne\fi
+ \else
+ \let\MT@tracking\relax
+ \MT@info@nl{No adjustment of tracking}%
+ \fi
+ }
\def\MT@error@doesnt@work#1{%
\csname ifMT@#1\endcsname
\MT@error{The #1 feature only works with pdftex 1.40\MessageBreak
@@ -438,10 +898,16 @@
}%
\fi
}
- \def\MT@setup@tracking{\MT@error@doesnt@work{tracking}}
\def\MT@setup@kerning {\MT@error@doesnt@work{kerning}}
\def\MT@setup@spacing {\MT@error@doesnt@work{spacing}}
-\let\MT@setup@warntracking\relax
+\def\MT@setup@warntracking
+{%
+ \ifnum\MT@letterspace=\m@ne
+ \let\MT@letterspace\MT@letterspace@default
+ \else
+ \MT@ls@too@large\MT@letterspace
+ \fi
+}
\let\MT@setup@noligatures\relax
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/microtype/microtype.cfg b/Master/texmf-dist/tex/latex/microtype/microtype.cfg
index d3f6021de5a..1e0cf80d321 100644
--- a/Master/texmf-dist/tex/latex/microtype/microtype.cfg
+++ b/Master/texmf-dist/tex/latex/microtype/microtype.cfg
@@ -41,7 +41,7 @@
%%
\ProvidesFile
{microtype.cfg}
- [2024/03/29 v3.1b
+ [2024/12/12 v3.2
microtype main configuration file
(RS)]
@@ -436,11 +436,19 @@
%%% -----------------------------------------------------------------------
%%% TRACKING/LETTERSPACING
-\SetTracking
+\ifx\XeTeXrevision\@undefined
+\SetTracking % pdftex/luatex
[ name = default,
no ligatures = {f} ]
{ encoding = {OT1,T1,T2A,LY1,OT4,QX,EU2,TU} }
{ }
+\else
+\SetTracking % xetex
+ [ name = default,
+ features = {ResetAll} ]
+ { encoding = {EU1,TU} }
+ { }
+\fi
%%% -----------------------------------------------------------------------
%%% EXPANSION
diff --git a/Master/texmf-dist/tex/latex/microtype/microtype.lua b/Master/texmf-dist/tex/latex/microtype/microtype.lua
index 88eaeea7166..17bdc74031b 100644
--- a/Master/texmf-dist/tex/latex/microtype/microtype.lua
+++ b/Master/texmf-dist/tex/latex/microtype/microtype.lua
@@ -35,8 +35,8 @@ microtype = microtype or {}
local microtype = microtype
microtype.module = {
name = "microtype",
- version = "3.1b",
- date = "2024/03/29",
+ version = "3.2",
+ date = "2024/12/12",
description = "microtype module.",
author = "E. Roux, R. Schlicht and P. Gesang",
copyright = "E. Roux, R. Schlicht and P. Gesang",
@@ -100,14 +100,14 @@ local function if_str_eq(s1, s2)
end
microtype.if_str_eq = if_str_eq
-local function if_luaotf_font()
+local function if_opentype_font()
local thefont = font.getfont(font.current())
if thefont and ( thefont.format == "opentype" or thefont.format == "truetype" )
then tex.write("@firstoftwo")
else tex.write("@secondoftwo")
end
end
-microtype.if_luaotf_font = if_luaotf_font
+microtype.if_opentype_font = if_opentype_font
local function do_font()
local thefont = font.getfont(font.current())
@@ -121,17 +121,18 @@ local function do_font()
end
microtype.do_font = do_font
-local function add_ls(k)
+local function add_ls(k,feat)
local f = tex.fontname(font.current())
local spec,size = match(f,'^(.+)( at .+)$')
if not spec then spec = f end
- local a,b,c = match(spec,'^([^:]+):?([^:]*):?(.*)$')
+ local q = match(spec,'^"') or ""
+ local a,b,c = match(spec,'^'..q..'([^:]+):?([^:]*):?(.*)'..q..'$')
local ls = "kernfactor=" .. k/1000 .. ';'
- microtype.sprint(a..':')
+ microtype.sprint(q..a..':')
if (a == "name" or a == "file") then
- microtype.sprint(b..':'..ls..c)
+ microtype.sprint(b..':'..ls..c..feat..q)
else
- microtype.sprint(ls..b)
+ microtype.sprint(ls..b..feat..q)
end
if size then
microtype.sprint(size)
diff --git a/Master/texmf-dist/tex/latex/microtype/microtype.sty b/Master/texmf-dist/tex/latex/microtype/microtype.sty
index fe1d6c0b568..02154a0034b 100644
--- a/Master/texmf-dist/tex/latex/microtype/microtype.sty
+++ b/Master/texmf-dist/tex/latex/microtype/microtype.sty
@@ -30,7 +30,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage
{microtype}
- [2024/03/29 v3.1b
+ [2024/12/12 v3.2
Micro-typographical refinements
(RS)]
\def\MT@MT
@@ -229,7 +229,7 @@
\def\MT@stretch@default{20 }
\def\MT@shrink@default{20 }
\let\MT@letterspace\m@ne
-\def\MT@letterspace@default{100}
+\def\MT@letterspace@default{50}
\newif\ifMT@document
\def\MT@glet{\global\let}
\def\MT@exp@cs#1#2{\expandafter#1\csname#2\endcsname}
@@ -512,6 +512,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@with@package@T {ledmac}\MT@ledmac@setup
\MT@with@package@T {eledmac}\MT@ledmac@setup
\MT@with@package@T{reledmac}\MT@ledmac@setup
+ \MT@with@package@T{varwidth}\MT@varwidth@setup
\MT@with@package@T{xunicode}\MT@xunicodetrue
\MT@with@package@T{fontspec}\MT@fontspectrue
\MT@glet\MT@setupfont@hook\@empty
@@ -705,8 +706,11 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@patch@patch\theIEEEsubequationdis{)}{\rightprotrusion{)}}}%
{}%
\@ifpackageloaded{amsmath}
- {\MT@patch@patch\tagform@{(}{\leftprotrusion{(}}%
- \MT@patch@patch\tagform@{)}{\rightprotrusion{)}}%
+ {\MT@ifdefined@c@TF\SK@tagform@
+ {\MT@patch@patch\SK@tagform@{(}{\leftprotrusion{(}}%
+ \MT@patch@patch\SK@tagform@{)}{\rightprotrusion{)}}}%
+ {\MT@patch@patch\tagform@{(}{\leftprotrusion{(}}%
+ \MT@patch@patch\tagform@{)}{\rightprotrusion{)}}}%
\MT@ifdefined@n@TF{eqref }
{\MT@exp@cs\MT@patch@patch{eqref }}{\MT@patch@patch\eqref}
{\tagform@}{\@nameuse{MT@patch@saved@\string\tagform@}}%
@@ -718,11 +722,21 @@ time will almost certainly lead to undesired results. Have your choice!}%
`\@backslashchar rightprotrusion' as\MessageBreak
appropriate in mathtools's `\@backslashchar newtagform' command}%
\fi}}
- {\MT@patch@patch\@eqnnum{(}{\leftprotrusion{(}}%
- \MT@patch@patch\@eqnnum{)}{\rightprotrusion{)}}}%
+ {\@ifclassloaded{IEEEtran}{}
+ {\MT@ifdefined@c@TF\SK@eqnnum
+ {\MT@patch@patch\SK@eqnnum{(}{\leftprotrusion{(}}%
+ \MT@patch@patch\SK@eqnnum{)}{\rightprotrusion{)}}}%
+ {\MT@patch@patch\@eqnnum{(}{\leftprotrusion{(}}%
+ \MT@patch@patch\@eqnnum{)}{\rightprotrusion{)}}}}}%
}{}%
\MT@define@patch{footnote}{%
- \@ifpackageloaded{hyperref}
+ \MT@ifdefined@n@TF{fnote_footnotetext:n}
+ {\ExplSyntaxOn
+ \MT@patch@patch\@footnotetext{\ignorespaces}{\ignorespaces\leftprotrusion}%
+ \MT@exp@cs\MT@patch@patch{fnote_footnotetext:n}{\ignorespaces}{\ignorespaces\leftprotrusion}%
+ \MT@patch@patch\@mpfootnotetext{\ignorespaces}{\ignorespaces\leftprotrusion}%
+ \ExplSyntaxOff}
+ {\@ifpackageloaded{hyperref}
{\MT@if@false
\ifHy@implicit
\ifHy@hyperfootnotes
@@ -751,7 +765,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
{\MT@ifdefined@c@TF\KOMAClassName
{\MT@patch@patch\scr@saved@footnotetext{\ignorespaces}{\ignorespaces\leftprotrusion}}%
{\MT@patch@patch\@footnotetext{\ignorespaces}{\ignorespaces\leftprotrusion}}%
- \MT@patch@patch\@mpfootnotetext{\ignorespaces}{\ignorespaces\leftprotrusion}}}}%
+ \MT@patch@patch\@mpfootnotetext{\ignorespaces}{\ignorespaces\leftprotrusion}}}}}%
}{}%
\MT@define@patch{verbatim}{%
\MT@append@patch\@verbatim{\microtypesetup{activate=false}}%
@@ -1099,7 +1113,9 @@ time will almost certainly lead to undesired results. Have your choice!}%
\interlinepenalty\z@
\@newlistfalse
\MT@prot@hook
- \MT@noindent #1\relax\MT@csq@eqgroup}%
+ \begingroup
+ \MT@noindent #1\relax\MT@csq@eqgroup
+ \endgroup}%
\vbadness=\@M
\splittopskip=\z@
\vfuzz=\maxdimen
@@ -1159,6 +1175,73 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\MT@prot@get@firstgroup@tc{\futurelet\MT@prot@next\MT@prot@get@first@group@tc}
\def\MT@prot@get@firsttoken{\futurelet\MT@prot@next\MT@prot@get@first@token}
\def\MT@prot@get@nexttoken{\futurelet\MT@prot@next\MT@prot@get@next@token}
+\def\MT@prot@get@first@group@{%
+ \MT@prot@ifcat\bgroup{%
+ \def\MT@temp*{\MT@prot@addgroup}%
+ }{%
+ \def\MT@temp*{\MT@prot@get@first@token}%
+ }%
+ \MT@temp*%
+}
+\def\MT@prot@get@first@group@tc{%
+ \MT@prot@ifcat\bgroup{%
+ \def\MT@temp*##1##2\MT@nil{\MT@ifempty{##1}\relax
+ {{\MT@prot@get@firstgroup@tc##1\MT@nil}}}%
+ }{%
+ \def\MT@temp*{\MT@prot@get@first@token}%
+ }%
+ \MT@temp*%
+}
+\def\MT@prot@get@first@token{%
+ \def\MT@temp*{\MT@exp@one@n\MT@ifempty{\the\MT@toks}
+ {\MT@exp@one@n\MT@ifempty{\the\MT@prot@toks}\relax{\the\MT@prot@toks\MT@gobble@to@nil}}
+ {\MT@exp@one@n\MT@prot@l{\the\MT@toks}}}%
+ \MT@prot@ifcat{a}{%
+ \def\MT@temp*{\MT@prot@addtoken@first}%
+ }{%
+ \MT@prot@ifcat{!}{%
+ \def\MT@temp*{\MT@prot@addtoken@first}%
+ }{%
+ \MT@prot@ifx\@sptoken{%
+ \def\MT@temp* {\MT@prot@get@firstgroup}%
+ }{%
+ \let\MT@prot@ifmacro\MT@prot@ifmacro@
+ \MT@map@tlist@c\MT@prot@check@cmds\MT@prot@check
+ \MT@prot@ifmacro{%
+ \MT@prot@iffirstcmd\UTFviii@two@octets{%
+ \def\MT@temp*##1##2{\MT@exp@one@n\MT@prot@l{\the\MT@toks##1##2}}%
+ }{%
+ \MT@prot@iffirstcmd\UTFviii@three@octets{%
+ \def\MT@temp*##1##2##3{\MT@exp@one@n\MT@prot@l{\the\MT@toks##1##2##3}}%
+ }{%
+ \MT@prot@iffirstcmd\UTFviii@four@octets{%
+ \def\MT@temp*##1##2##3##4{\MT@exp@one@n\MT@prot@l{\the\MT@toks##1##2##3##4}}%
+ }{%
+ \MT@prot@iffirstcmd\csqQQ{\def\MT@temp*##1{\MT@exp@one@n\MT@prot@l{\the\MT@toks##1}}}{%
+ \MT@prot@iflicrcmd
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ \MT@temp*%
+}
+\def\MT@prot@addtoken@first#1{%
+ \MT@toks\expandafter{\the\MT@toks#1}%
+ \MT@prot@get@nexttoken
+}
+\def\MT@prot@get@next@token{%
+ \def\MT@temp*{\MT@prot@addtoken@next}%
+ \MT@prot@ifcat{a}\relax{%
+ \MT@prot@ifcat{!}\relax{%
+ \def\MT@temp*{\MT@exp@one@n\MT@prot@l{\the\MT@toks}}%
+ }%
+ }%
+ \MT@temp*%
+}
\def\MT@prot@check#1{\MT@prot@check@#1\relax\@nil}
\def\MT@prot@check@#1#2#3\@nil{%
\ifx\MT@prot@next#2%
@@ -1176,6 +1259,15 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\MT@prot@check@O{%
\def\MT@temp*##1##2{\MT@toks\expandafter{\the\MT@toks##1{##2}}\MT@prot@get@firstgroup}%
}
+\def\MT@prot@check@o{%
+ \def\MT@temp*##1{\@ifnextchar[{\MT@prot@check@o@##1}{\MT@prot@check@o@##1[]}}%
+}
+\def\MT@prot@check@o@#1[#2]#3{%
+ \MT@ifempty{#2}
+ {\MT@toks\expandafter{\the\MT@toks#1{#3}}}
+ {\MT@toks\expandafter{\the\MT@toks#1[#2]{#3}}}%
+ \MT@prot@get@firstgroup
+}
\def\MT@prot@check@T{%
\def\MT@temp*##1##2##3{\MT@toks\expandafter{\the\MT@toks##1{##2}{##3}}\MT@prot@get@firstgroup}%
}
@@ -1215,15 +1307,31 @@ time will almost certainly lead to undesired results. Have your choice!}%
\else
\let\MT@prot@l\MT@prot@l@tc
\let\MT@prot@get@first@group\MT@prot@get@first@group@tc
- \def\MT@temp*##1##2{%
- \let\MT@maybe@textcmd##1%
+ \def\MT@temp*##1{%
\the\MT@toks
\MT@toks{}%
- \MT@prot@toks{##1{##2}}%
- \MT@prot@get@firstgroup@tc##2\MT@nil
+ \MT@prot@check@F@##1%
}%
\fi
}
+\def\MT@prot@check@F@@#1#2{%
+ \let\MT@maybe@textcmd#1%
+ \MT@prot@toks{#1{#2}}%
+ \MT@prot@get@firstgroup@tc#2\@empty\MT@nil
+}
+\def\MT@prot@check@F@beamer#1{%
+ \@ifnextchar<%
+ {\MT@prot@check@F@beamer@#1}%
+ {\MT@prot@check@F@@#1}%
+}
+\def\MT@prot@check@F@beamer@#1<#2>#3{%
+ \def\MT@maybe@textcmd{#1<#2>}%
+ \MT@prot@toks{#1<#2>{#3}}%
+ \MT@prot@get@firstgroup@tc#3\@empty\MT@nil
+}
+\@ifclassloaded{beamer}
+ {\let\MT@prot@check@F@\MT@prot@check@F@beamer}
+ {\let\MT@prot@check@F@\MT@prot@check@F@@}
\def\MT@prot@check@C{%
\ifx\MT@prot@l\MT@prot@l@tc
\def\MT@temp*{\MT@exp@one@n\MT@prot@l{\the\MT@toks}}%
@@ -1242,7 +1350,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\MT@prot@check@C@#1[#2]#3{%
\def\MT@maybe@textcmd{#1[#2]}%
\MT@prot@toks{#1[#2]{#3}}%
- \MT@prot@get@firstgroup@tc#3\MT@nil
+ \MT@prot@get@firstgroup@tc#3\@empty\MT@nil
}
\def\MT@prot@check@cmds{%
{I\ignorespaces}{I\relax}{I\@empty}%
@@ -1270,6 +1378,17 @@ time will almost certainly lead to undesired results. Have your choice!}%
\@ifclassloaded{ltxdoc}
{\g@addto@macro\MT@prot@check@cmds{{E\enquote}{E\marg}{E\oarg}{E\parg}{E\cs}}}\relax
\MT@addto@setup{%
+ \MT@with@package@T{color}
+ {\@ifclassloaded{beamer}\relax{\g@addto@macro\MT@prot@check@cmds{{o\color}}}}%
+ \MT@with@package@T{csquotes}
+ {\@ifclassloaded{ltxdoc}
+ {\patchcmd\MT@prot@check@cmds{E\enquote}{e\enquote}\relax\relax}
+ {\g@addto@macro\MT@prot@check@cmds{{e\enquote}}}%
+ \g@addto@macro\MT@prot@check@cmds{{e\textquote}%
+ {l\foreignquote}{l\hyphenquote}{l\foreigntextquote}{l\hyphentextquote}%
+ {{eX}\textcquote\textquote}%
+ {{lX}\foreigntextcquote\foreigntextquote}%
+ {{lX}\hyphentextcquote\hyphentextquote}}}%
\MT@with@package@T{doc}
{\g@addto@macro\MT@prot@check@cmds{{E\meta}}}%
\MT@with@package@T{fontaxes}
@@ -1277,12 +1396,14 @@ time will almost certainly lead to undesired results. Have your choice!}%
{S\txfigures}{S\lnfigures}{S\tbfigures}{S\prfigures}%
{O\fontfigurestyle}{O\fontfigurealignment}{O\fontbasefamily}%
{O\figureversion}%
- {F\textsw}{F\textssc}{F\textulc}%
{F\textfigures}{F\liningfigures}{F\tabularfigures}{F\proportionalfigures}}%
\IfFormatAtLeastTF{2020/02/02}\relax
{\g@addto@macro\MT@prot@check@cmds{%
{S\swshape}{S\ulcshape}{S\sscshape}%
- {F\textulc}{F\textsw}{F\textssc}}}}
+ {F\textulc}{F\textsw}{F\textssc}}}}%
+ \MT@with@package@T{fontspec}
+ {\g@addto@macro\MT@prot@check@cmds{%
+ {O\addfontfeature}{O\addfontfeatures}{F\strong}}}%
\MT@with@package@T{nfssext-cfr}
{\g@addto@macro\MT@prot@check@cmds{%
{S\tistyle}{S\ltstyle}{S\ofstyle}{S\altstyle}{S\regstyle}{S\embossstyle}%
@@ -1306,87 +1427,11 @@ time will almost certainly lead to undesired results. Have your choice!}%
{F\textmb}{F\textdb}{F\textsb}{F\texteb}%
{F\textub}{F\textlg}{F\textel}{F\textul}}%
\IfFormatAtLeastTF{2020/02/02}\relax
- {\g@addto@macro\MT@prot@check@cmds{{S\swshape}{F\textsw}}}}
+ {\g@addto@macro\MT@prot@check@cmds{{S\swshape}{F\textsw}}}}%
\MT@with@package@T{yfonts}
{\g@addto@macro\MT@prot@check@cmds{%
{S\frakfamily}{S\swabfamily}{S\gothfamily}%
{F\textfrak}{F\textswab}{F\textgoth}}}%
- \MT@with@package@T{csquotes}
- {\@ifclassloaded{ltxdoc}
- {\patchcmd\MT@prot@check@cmds{E\enquote}{e\enquote}\relax\relax}
- {\g@addto@macro\MT@prot@check@cmds{{e\enquote}}}%
- \g@addto@macro\MT@prot@check@cmds{{e\textquote}%
- {l\foreignquote}{l\hyphenquote}{l\foreigntextquote}{l\hyphentextquote}%
- {{eX}\textcquote\textquote}%
- {{lX}\foreigntextcquote\foreigntextquote}%
- {{lX}\hyphentextcquote\hyphentextquote}}}%
-}
-\def\MT@prot@get@first@group@{%
- \MT@prot@ifcat\bgroup{%
- \def\MT@temp*{\MT@prot@addgroup}%
- }{%
- \def\MT@temp*{\MT@prot@get@first@token}%
- }%
- \MT@temp*%
-}
-\def\MT@prot@get@first@group@tc{%
- \MT@prot@ifcat\bgroup{%
- \def\MT@temp*##1##2\MT@nil{\MT@ifempty{##1}\relax
- {{\MT@prot@get@firstgroup@tc##1\MT@nil}}}%
- }{%
- \def\MT@temp*{\MT@prot@get@first@token}%
- }%
- \MT@temp*%
-}
-\def\MT@prot@get@first@token{%
- \def\MT@temp*{\MT@exp@one@n\MT@ifempty{\the\MT@toks}
- {\MT@exp@one@n\MT@ifempty{\the\MT@prot@toks}\relax{\the\MT@prot@toks\MT@gobble@to@nil}}
- {\MT@exp@one@n\MT@prot@l{\the\MT@toks}}}%
- \MT@prot@ifcat{a}{%
- \def\MT@temp*{\MT@prot@addtoken@first}%
- }{%
- \MT@prot@ifcat{!}{%
- \def\MT@temp*{\MT@prot@addtoken@first}%
- }{%
- \MT@prot@ifx\@sptoken{%
- \def\MT@temp* {\MT@prot@get@firstgroup}%
- }{%
- \let\MT@prot@ifmacro\MT@prot@ifmacro@
- \MT@map@tlist@c\MT@prot@check@cmds\MT@prot@check
- \MT@prot@ifmacro{%
- \MT@prot@iffirstcmd\UTFviii@two@octets{%
- \def\MT@temp*##1##2{\MT@exp@one@n\MT@prot@l{\the\MT@toks##1##2}}%
- }{%
- \MT@prot@iffirstcmd\UTFviii@three@octets{%
- \def\MT@temp*##1##2##3{\MT@exp@one@n\MT@prot@l{\the\MT@toks##1##2##3}}%
- }{%
- \MT@prot@iffirstcmd\UTFviii@four@octets{%
- \def\MT@temp*##1##2##3##4{\MT@exp@one@n\MT@prot@l{\the\MT@toks##1##2##3##4}}%
- }{%
- \MT@prot@iffirstcmd\csqQQ{\def\MT@temp*##1{\MT@exp@one@n\MT@prot@l{\the\MT@toks##1}}}{%
- \MT@prot@iflicrcmd
- }%
- }%
- }%
- }%
- }%
- }%
- }%
- }%
- \MT@temp*%
-}
-\def\MT@prot@addtoken@first#1{%
- \MT@toks\expandafter{\the\MT@toks#1}%
- \MT@prot@get@nexttoken
-}
-\def\MT@prot@get@next@token{%
- \def\MT@temp*{\MT@prot@addtoken@next}%
- \MT@prot@ifcat{a}\relax{%
- \MT@prot@ifcat{!}\relax{%
- \def\MT@temp*{\MT@exp@one@n\MT@prot@l{\the\MT@toks}}%
- }%
- }%
- \MT@temp*%
}
\newif\ifMT@nonselected
\DeclareRobustCommand\textls{%
@@ -1993,7 +2038,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@font \csname MT@\@tempa @#1font@list\endcsname
}%
}
-\def\microtypecontext{\MT@begin@catcodes\MT@microtypecontext}
+\DeclareRobustCommand\microtypecontext{\MT@begin@catcodes\MT@microtypecontext}
\def\MT@microtypecontext#1{\MT@end@catcodes\MT@addto@setup{\microtypecontext{#1}}}
\MT@addto@setup{%
\DeclareRobustCommand\microtypecontext{%
@@ -2194,6 +2239,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\ifx\@tempa\relax\else
\MT@get@size@
\fi
+^^X \MT@exp@one@n\ifdefdimen\MT@val{\edef\MT@val{\the\MT@val}}\relax
\MT@ifdimen\MT@val{%
\@defaultunits\@tempdima\MT@val pt\relax\@nnil
\edef\MT@val{\strip@pt\@tempdima}%
@@ -2393,11 +2439,16 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\DeclareMicrotypeFilePrefix#1{%
\def\MT@cfg@prefix{#1}%
}
-\def\DeclareMicrotypeBabelHook#1#2{%
+\def\DeclareMicrotypeBabelHook{%
+ \MT@begin@catcodes
+ \MT@DeclareMicrotypeBabelHook
+}
+\def\MT@DeclareMicrotypeBabelHook#1#2{%
\MT@map@clist@n{#1}{%
\KV@@sp@def\@tempa{##1}%
\MT@gdef@n{MT@babel@\@tempa}{#2}%
}%
+ \MT@end@catcodes
}
\def\SetProtrusion{%
\MT@begin@catcodes
@@ -2526,6 +2577,14 @@ time will almost certainly lead to undesired results. Have your choice!}%
{\MT@warn@nodim{character widths}}%
}%
}
+\define@key{MT@tr@c}{unit}[1em]{%
+ \MT@glet@nc{MT@tr@c@\MT@curr@set@name @unit}\@empty
+ \def\@tempa{#1}%
+ \MT@ifdimen\@tempa
+ {\MT@glet@nc{MT@tr@c@\MT@curr@set@name @unit}\@tempa}%
+ {\MT@warn@nodim{1em}%
+ \MT@gdef@n{MT@tr@c@\MT@curr@set@name @unit}{1em}}%
+}
\renewcommand*\DeclareCharacterInheritance[1][]{%
\let\MT@extra@context\@empty
\let\MT@extra@inputenc\@undefined
@@ -2991,8 +3050,8 @@ time will almost certainly lead to undesired results. Have your choice!}%
Use \@backslashchar Microtype@Hook instead}
{You might want to inform the font package authors.}\MicroType@Hook}
\MT@ifdefined@c@T\Microtype@Hook\Microtype@Hook
-\def\microtypesetup{\setkeys{MT}}
-\MT@addto@setup{\def\microtypesetup#1{\setkeys{MTX}{#1}\selectfont}}
+\DeclareRobustCommand\microtypesetup{\setkeys{MT}}
+\MT@addto@setup{\DeclareRobustCommand\microtypesetup[1]{\setkeys{MTX}{#1}\selectfont}}
\let\MT@saved@setupfont\MT@setupfont
\define@key{MTX}{deactivate}[]{%
\MT@info{Deactivate `\MT@MT' package}%
diff --git a/Master/texmf-dist/tex/latex/minted/minted.sty b/Master/texmf-dist/tex/latex/minted/minted.sty
index bd7e756dcc5..a04f526015a 100644
--- a/Master/texmf-dist/tex/latex/minted/minted.sty
+++ b/Master/texmf-dist/tex/latex/minted/minted.sty
@@ -5,19 +5,17 @@
%% The original source files were:
%%
%% minted.dtx (with options: `package')
-%% Copyright 2013--2022 Geoffrey M. Poore
-%% Copyright 2010--2011 Konrad Rudolph
%%
+%% Copyright (C) 2013-2024 by Geoffrey M. Poore <gpoore@gmail.com>
+%% Copyright (C) 2010-2011 by Konrad Rudolph <konrad_rudolph@madrat.net>
+%% --------------------------------------------------------------------------
%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
+%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
-%%
-%% Additionally, the project may be distributed under the terms of the new BSD
-%% license.
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008/05/04 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
%%
@@ -25,1001 +23,1621 @@
%%
%% This work consists of the files minted.dtx and minted.ins
%% and the derived file minted.sty.
+%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{minted}
- [2023/12/18 v2.9 Yet another Pygments shim for LaTeX]
-\RequirePackage{keyval}
-\RequirePackage{kvoptions}
-\RequirePackage{fvextra}[2022/11/30]
-\RequirePackage{ifthen}
-\IfFileExists{shellesc.sty}
- {\RequirePackage{shellesc}
- \@ifpackagelater{shellesc}{2016/04/29}
- {}
- {\protected\def\ShellEscape{\immediate\write18 }}}
- {\protected\def\ShellEscape{\immediate\write18 }}
-\RequirePackage{ifplatform}
-\RequirePackage{pdftexcmds}
-\RequirePackage{etoolbox}
-\RequirePackage{xstring}
-\RequirePackage{lineno}
-\RequirePackage{framed}
+ [2024/11/17 v3.4.0 Yet another Pygments shim for LaTeX]
\RequirePackage{catchfile}
+\RequirePackage{etoolbox}
+\RequirePackage{fvextra}[2024/10/16]
+\RequirePackage{latex2pydata}[2024/10/16]
+\RequirePackage{pdftexcmds}
+\RequirePackage{pgfkeys}
+\RequirePackage{pgfopts}
+\RequirePackage{shellesc}
\AtEndPreamble{%
- \@ifpackageloaded{color}{}{%
- \@ifpackageloaded{xcolor}{}{\RequirePackage{xcolor}}}%
-}
-\DeclareVoidOption{chapter}{\def\minted@float@within{chapter}}
-\DeclareVoidOption{section}{\def\minted@float@within{section}}
-\DeclareBoolOption{newfloat}
-\DeclareBoolOption[true]{cache}
-\StrSubstitute{\jobname}{ }{_}[\minted@jobname]
-\StrSubstitute{\minted@jobname}{*}{_}[\minted@jobname]
-\StrSubstitute{\minted@jobname}{"}{}[\minted@jobname]
-\StrSubstitute{\minted@jobname}{'}{_}[\minted@jobname]
-\newcommand{\minted@cachedir}{\detokenize{_}minted-\minted@jobname}
-\let\minted@cachedir@windows\minted@cachedir
-\define@key{minted}{cachedir}{%
- \@namedef{minted@cachedir}{#1}%
- \StrSubstitute{\minted@cachedir}{/}{\@backslashchar}[\minted@cachedir@windows]}
-\DeclareBoolOption{finalizecache}
-\DeclareBoolOption{frozencache}
-\let\minted@outputdir\@empty
-\let\minted@outputdir@windows\@empty
-\define@key{minted}{outputdir}{%
- \@namedef{minted@outputdir}{#1/}%
- \StrSubstitute{\minted@outputdir}{/}%
- {\@backslashchar}[\minted@outputdir@windows]}
-\DeclareBoolOption{inputlanglinenos}
-\DeclareBoolOption{kpsewhich}
-\DeclareBoolOption{langlinenos}
-\DeclareBoolOption{draft}
-\DeclareComplementaryOption{final}{draft}
-\ProcessKeyvalOptions*
-\ifthenelse{\boolean{minted@newfloat}}{\RequirePackage{newfloat}}{\RequirePackage{float}}
-\ifcsname tikzifexternalizing\endcsname
- \tikzifexternalizing{\minted@drafttrue\minted@cachefalse}{}
+ \IfPackageLoadedTF{color}%
+ {}%
+ {\IfPackageLoadedTF{xcolor}{}{\RequirePackage{xcolor}}}}
+\def\minted@error#1{\PackageError{minted}{#1}{}}
+\def\minted@fatalerror#1{%
+ \minted@error{#1}%
+ \batchmode\read -1 to \minted@fatalerror@exitnow}
+\def\minted@warning#1{\PackageWarning{minted}{#1}}
+\edef\MintedExecutable{\detokenize{latexminted}}
+\edef\minted@executable@minversion{\detokenize{0.2.0}}
+\def\minted@executable@setminversioncomponents{%
+ \expandafter\minted@executable@setminversioncomponents@i
+ \minted@executable@minversion\relax}
+\begingroup
+\catcode`\.=12
+\gdef\minted@executable@setminversioncomponents@i#1.#2.#3\relax{%
+ \def\minted@executable@minmajor{#1}%
+ \def\minted@executable@minminor{#2}%
+ \def\minted@executable@minpatch{#3}}
+\endgroup
+\minted@executable@setminversioncomponents
+\let\minted@executable@version\relax
+\newbool{minted@executable@exists}
+\newbool{minted@executable@issupported}
+\begingroup
+\catcode`\-=12
+\catcode`\+=12
+\catcode`\:=12
+\def\minted@creationdatetotimestamp#1{%
+ \expandafter\minted@creationdatetotimestamp@i#1-\relax}
+\def\minted@creationdatetotimestamp@i#1:#2-#3\relax{%
+ \minted@creationdatetotimestamp@ii#2+\relax}
+\def\minted@creationdatetotimestamp@ii#1+#2\relax{%
+ #1}
+\expandafter\ifx\csname pdftexversion\endcsname\relax
\else
- \ifcsname tikzexternalrealjob\endcsname
- \minted@drafttrue
- \minted@cachefalse
- \else
- \fi
+ \xdef\minted@timestamp{\minted@creationdatetotimestamp{\pdfcreationdate}}
\fi
-\ifthenelse{\boolean{minted@finalizecache}}%
- {\ifthenelse{\boolean{minted@frozencache}}%
- {\PackageError{minted}%
- {Options "finalizecache" and "frozencache" are not compatible}%
- {Options "finalizecache" and "frozencache" are not compatible}}%
- {}}%
- {}
-\ifthenelse{\boolean{minted@cache}}%
- {\ifthenelse{\boolean{minted@frozencache}}%
- {}%
- {\AtEndOfPackage{\ProvideDirectory{\minted@outputdir\minted@cachedir}}}}%
- {}
-\newcommand{\minted@input}[1]{%
- \IfFileExists{#1}%
- {\input{#1}}%
- {\PackageError{minted}{Missing Pygments output; \string\inputminted\space
- was^^Jprobably given a file that does not exist--otherwise, you may need
- ^^Jthe outputdir package option, or may be using an incompatible build
- tool,^^Jor may be using frozencache with a missing file}%
- {This could be caused by using -output-directory or -aux-directory
- ^^Jwithout setting minted's outputdir, or by using a build tool that
- ^^Jchanges paths in ways minted cannot detect,
- ^^Jor using frozencache with a missing file.}}%
-}
-\newcommand{\minted@infile}{\minted@jobname.out.pyg}
-\newcommand{\minted@cachelist}{}
-\newcommand{\minted@addcachefile}[1]{%
- \expandafter\long\expandafter\gdef\expandafter\minted@cachelist\expandafter{%
- \minted@cachelist,^^J%
- \space\space#1}%
- \expandafter\gdef\csname minted@cached@#1\endcsname{}%
-}
-\newcommand{\minted@savecachelist}{%
- \ifdefempty{\minted@cachelist}{}{%
- \immediate\write\@mainaux{%
- \string\gdef\string\minted@oldcachelist\string{%
- \minted@cachelist\string}}%
- }%
-}
-\newcommand{\minted@cleancache}{%
- \ifcsname minted@oldcachelist\endcsname
- \def\do##1{%
- \ifthenelse{\equal{##1}{}}{}{%
- \ifcsname minted@cached@##1\endcsname\else
- \DeleteFile[\minted@outputdir\minted@cachedir]{##1}%
- \fi
- }%
- }%
- \expandafter\docsvlist\expandafter{\minted@oldcachelist}%
- \else
- \fi
-}
-\ifthenelse{\boolean{minted@draft}}%
- {\AtEndDocument{%
- \ifcsname minted@oldcachelist\endcsname
- \StrSubstitute{\minted@oldcachelist}{,}{,^^J }[\minted@cachelist]
- \minted@savecachelist
- \fi}}%
- {\ifthenelse{\boolean{minted@frozencache}}%
- {\AtEndDocument{%
- \ifcsname minted@oldcachelist\endcsname
- \StrSubstitute{\minted@oldcachelist}{,}{,^^J }[\minted@cachelist]
- \minted@savecachelist
- \fi}}%
- {\AtEndDocument{%
- \minted@savecachelist
- \minted@cleancache}}}%
-\ifwindows
- \providecommand{\DeleteFile}[2][]{%
- \ifthenelse{\equal{#1}{}}%
- {\IfFileExists{#2}{\ShellEscape{del #2}}{}}%
- {\IfFileExists{#1/#2}{%
- \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir]
- \ShellEscape{del \minted@windir\@backslashchar #2}}{}}}
+\expandafter\ifx\csname XeTeXrevision\endcsname\relax
+\else
+ \xdef\minted@timestamp{\minted@creationdatetotimestamp{\creationdate}}
+\fi
+\expandafter\ifx\csname directlua\endcsname\relax
\else
- \providecommand{\DeleteFile}[2][]{%
- \ifthenelse{\equal{#1}{}}%
- {\IfFileExists{#2}{\ShellEscape{rm #2}}{}}%
- {\IfFileExists{#1/#2}{\ShellEscape{rm #1/#2}}{}}}
+ \begingroup
+ \outputmode=1
+ \xdef\minted@timestamp{\minted@creationdatetotimestamp{\pdffeedback creationdate}}%
+ \endgroup
\fi
-\ifwindows
- \newcommand{\ProvideDirectory}[1]{%
- \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir]
- \ShellEscape{if not exist \minted@windir\space mkdir \minted@windir}}
+\endgroup
+\ifcsname minted@timestamp\endcsname
\else
- \newcommand{\ProvideDirectory}[1]{%
- \ShellEscape{mkdir -p #1}}
+ \begingroup
+ \newcounter{minted@timestamp@hr}
+ \newcounter{minted@timestamp@min}
+ \setcounter{minted@timestamp@min}{\number\time}
+ \loop\unless\ifnum\value{minted@timestamp@min}<60\relax
+ \addtocounter{minted@timestamp@hr}{1}
+ \addtocounter{minted@timestamp@min}{-60}
+ \repeat
+ \xdef\minted@timestamp{%
+ \the\year
+ \ifnum\month<10 0\fi\the\month
+ \ifnum\day<10 0\fi\the\day
+ \ifnum\value{minted@timestamp@hr}<10 0\fi\theminted@timestamp@hr
+ \ifnum\value{minted@timestamp@min}<10 0\fi\theminted@timestamp@min}
+ \endgroup
\fi
-\newboolean{AppExists}
-\newread\minted@appexistsfile
-\newcommand{\TestAppExists}[1]{%
- \ifwindows
- \DeleteFile{\minted@jobname.aex}%
- \ShellEscape{for \string^\@percentchar i in (#1.exe #1.bat #1.cmd)
- do set > \minted@jobname.aex <nul: /p
- x=\string^\@percentchar \string~$PATH:i>> \minted@jobname.aex}%
- %$ <- balance syntax highlighting
- \immediate\openin\minted@appexistsfile\minted@jobname.aex
- \expandafter\def\expandafter\@tmp@cr\expandafter{\the\endlinechar}%
- \endlinechar=-1\relax
- \readline\minted@appexistsfile to \minted@apppathifexists
- \endlinechar=\@tmp@cr
- \ifthenelse{\equal{\minted@apppathifexists}{}}%
- {\AppExistsfalse}%
- {\AppExiststrue}%
- \immediate\closein\minted@appexistsfile
- \DeleteFile{\minted@jobname.aex}%
+\xdef\minted@timestamp{\detokenize\expandafter{\minted@timestamp}}
+\begingroup
+\catcode`\"=12
+\catcode`\'=12
+\gdef\minted@setjobnamemdfive#1#2\FV@Sentinel{%
+ \ifx#1"\relax
+ \let\minted@next\minted@setjobnamemdfive@dquoted
+ \else\ifx#1'\relax
+ \let\minted@next\minted@setjobnamemdfive@squoted
\else
- \ShellEscape{command -v #1 && touch \minted@jobname.aex}%
- \IfFileExists{\minted@jobname.aex}%
- {\AppExiststrue
- \DeleteFile{\minted@jobname.aex}}%
- {\AppExistsfalse}%
- \fi
+ \let\minted@next\minted@setjobnamemdfive@uquoted
+ \fi\fi
+ \minted@next#1#2\FV@Sentinel}
+\gdef\minted@setjobnamemdfive@dquoted#1#2\FV@Sentinel{%
+ \minted@setjobnamemdfive@dquoted@i#2"\FV@Sentinel}
+\gdef\minted@setjobnamemdfive@dquoted@i#1"#2\FV@Sentinel{%
+ \if\relax\detokenize{#2}\relax
+ \edef\MintedJobnameMdfive{\pdf@mdfivesum{\jobname}}%
+ \else\if\relax\detokenize\expandafter{\@gobble#2}\relax
+ \edef\MintedJobnameMdfive{\pdf@mdfivesum{#1}}%
+ \else
+ \edef\MintedJobnameMdfive{\pdf@mdfivesum{\jobname}}%
+ \fi\fi}
+\gdef\minted@setjobnamemdfive@squoted#1#2\FV@Sentinel{%
+ \minted@setjobnamemdfive@squoted@i#2'\FV@Sentinel}
+\gdef\minted@setjobnamemdfive@squoted@i#1'#2\FV@Sentinel{%
+ \if\relax\detokenize{#2}\relax
+ \edef\MintedJobnameMdfive{\pdf@mdfivesum{\jobname}}%
+ \else\if\relax\detokenize\expandafter{\@gobble#2}\relax
+ \edef\MintedJobnameMdfive{\pdf@mdfivesum{#1}}%
+ \else
+ \edef\MintedJobnameMdfive{\pdf@mdfivesum{\jobname}}%
+ \fi\fi}
+\gdef\minted@setjobnamemdfive@uquoted#1\FV@Sentinel{%
+ \edef\MintedJobnameMdfive{\pdf@mdfivesum{#1}}}
+\endgroup
+\expandafter\minted@setjobnamemdfive\jobname\FV@Sentinel
+\edef\MintedCacheIndexFilename{%
+ \detokenize{_}\MintedJobnameMdfive\detokenize{.index.minted}}
+\edef\MintedConfigFilename{%
+ \detokenize{_}\MintedJobnameMdfive\detokenize{.config.minted}}
+\edef\MintedDataFilename{%
+ \detokenize{_}\MintedJobnameMdfive\detokenize{.data.minted}}
+\edef\MintedErrlogFilename{%
+ \detokenize{_}\MintedJobnameMdfive\detokenize{.errlog.minted}}
+\edef\MintedMessageFilename{%
+ \detokenize{_}\MintedJobnameMdfive\detokenize{.message.minted}}
+\def\minted@pgfopts#1{%
+ \pgfkeys{/minted/pkg/.cd,#1}}
+\minted@pgfopts{
+ chapter/.code=\def\minted@float@within{chapter},
+ chapter/.value forbidden,
+ section/.code=\def\minted@float@within{section},
+ section/.value forbidden,
}
-\newcommand{\minted@optlistcl@g}{}
-\newcommand{\minted@optlistcl@g@i}{}
-\let\minted@lang\@empty
-\newcommand{\minted@optlistcl@lang}{}
-\newcommand{\minted@optlistcl@lang@i}{}
-\newcommand{\minted@optlistcl@cmd}{}
-\newcommand{\minted@optlistfv@g}{}
-\newcommand{\minted@optlistfv@g@i}{}
-\newcommand{\minted@optlistfv@lang}{}
-\newcommand{\minted@optlistfv@lang@i}{}
-\newcommand{\minted@optlistfv@cmd}{}
-\newcommand{\minted@configlang}[1]{%
- \def\minted@lang{#1}%
- \ifcsname minted@optlistcl@lang\minted@lang\endcsname\else
- \expandafter\gdef\csname minted@optlistcl@lang\minted@lang\endcsname{}%
- \fi
- \ifcsname minted@optlistcl@lang\minted@lang @i\endcsname\else
- \expandafter\gdef\csname minted@optlistcl@lang\minted@lang @i\endcsname{}%
- \fi
- \ifcsname minted@optlistfv@lang\minted@lang\endcsname\else
- \expandafter\gdef\csname minted@optlistfv@lang\minted@lang\endcsname{}%
- \fi
- \ifcsname minted@optlistfv@lang\minted@lang @i\endcsname\else
- \expandafter\gdef\csname minted@optlistfv@lang\minted@lang @i\endcsname{}%
- \fi
+\newbool{minted@newfloat}
+\minted@pgfopts{
+ newfloat/.is if=minted@newfloat,
}
-\ifwindows
- \newcommand{\minted@optlistcl@quote}[2]{%
- \detokenize{#1="#2"}}
-\else
- \newcommand{\minted@optlistcl@quote}[2]{%
- \detokenize{#1='#2'}}
-\fi
-\newcommand{\minted@addto@optlistcl}[3]{%
- \expandafter\def\expandafter#1\expandafter{#1%
- \minted@optlistcl@quote{#2}{#3}\space}}
-\newcommand{\minted@addto@optlistcl@lang}[3]{%
- \expandafter\let\expandafter\minted@tmp\csname #1\endcsname
- \expandafter\def\expandafter\minted@tmp\expandafter{\minted@tmp%
- \minted@optlistcl@quote{#2}{#3}\space}%
- \expandafter\let\csname #1\endcsname\minted@tmp}
-\newcommand{\minted@def@optcl}[4][]{%
- \ifthenelse{\equal{#1}{}}%
- {\define@key{minted@opt@g}{#2}{%
- \minted@addto@optlistcl{\minted@optlistcl@g}{#3}{#4}%
- \@namedef{minted@opt@g:#2}{#4}}%
- \define@key{minted@opt@g@i}{#2}{%
- \minted@addto@optlistcl{\minted@optlistcl@g@i}{#3}{#4}%
- \@namedef{minted@opt@g@i:#2}{#4}}%
- \define@key{minted@opt@lang}{#2}{%
- \minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#3}{#4}%
- \@namedef{minted@opt@lang\minted@lang:#2}{#4}}%
- \define@key{minted@opt@lang@i}{#2}{%
- \minted@addto@optlistcl@lang{%
- minted@optlistcl@lang\minted@lang @i}{#3}{#4}%
- \@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}%
- \define@key{minted@opt@cmd}{#2}{%
- \minted@addto@optlistcl{\minted@optlistcl@cmd}{#3}{#4}%
- \@namedef{minted@opt@cmd:#2}{#4}}}%
- {\define@key{minted@opt@g}{#2}[#1]{%
- \minted@addto@optlistcl{\minted@optlistcl@g}{#3}{#4}%
- \@namedef{minted@opt@g:#2}{#4}}%
- \define@key{minted@opt@g@i}{#2}[#1]{%
- \minted@addto@optlistcl{\minted@optlistcl@g@i}{#3}{#4}%
- \@namedef{minted@opt@g@i:#2}{#4}}%
- \define@key{minted@opt@lang}{#2}[#1]{%
- \minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#3}{#4}%
- \@namedef{minted@opt@lang\minted@lang:#2}{#4}}%
- \define@key{minted@opt@lang@i}{#2}[#1]{%
- \minted@addto@optlistcl@lang{%
- minted@optlistcl@lang\minted@lang @i}{#3}{#4}%
- \@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}%
- \define@key{minted@opt@cmd}{#2}[#1]{%
- \minted@addto@optlistcl{\minted@optlistcl@cmd}{#3}{#4}%
- \@namedef{minted@opt@cmd:#2}{#4}}}%
+\newbool{minted@debug}
+\minted@pgfopts{
+ debug/.is if=minted@debug,
}
-\begingroup
-\catcode`\!=0
-!catcode`!\=12
-!gdef!minted@escape#1{%
- !expandafter!minted@escape@i!detokenize{#1}\!FV@Sentinel}
-!gdef!minted@escape@i#1\#2!FV@Sentinel{%
- !if!relax!detokenize{#2}!relax
- !expandafter!@firstoftwo
- !else
- !expandafter!@secondoftwo
- !fi
- {#1!minted@escape@end\#2!FV@Sentinel}
- {#1!minted@escape@esc\#2!FV@Sentinel}}
-!gdef!minted@escape@end#1!FV@Sentinel{}
-!gdef!minted@escape@esc\#1#2!FV@Sentinel{%
- #1!minted@escape@i#2!FV@Sentinel}
-!endgroup
-\newcommand{\minted@addto@optlistcl@e}[3]{%
- \edef\minted@tmp{\minted@escape{#3}}%
- \expandafter\minted@addto@optlistcl@e@i\expandafter{\minted@tmp}{#1}{#2}}
-\def\minted@addto@optlistcl@e@i#1#2#3{%
- \expandafter\def\expandafter#2\expandafter{#2\minted@optlistcl@quote{#3}{#1}\space}}
-\newcommand{\minted@addto@optlistcl@lang@e}[3]{%
- \edef\minted@tmp{\minted@escape{#3}}%
- \expandafter\minted@addto@optlistcl@lang@e@i\expandafter{\minted@tmp}{#1}{#2}}
-\def\minted@addto@optlistcl@lang@e@i#1#2#3{%
- \expandafter\let\expandafter\minted@tmp\csname #2\endcsname
- \expandafter\def\expandafter\minted@tmp\expandafter{\minted@tmp\minted@optlistcl@quote{#3}{#1}\space}%
- \expandafter\let\csname #2\endcsname\minted@tmp}
-\newcommand{\minted@def@optcl@e}[4][]{%
- \ifthenelse{\equal{#1}{}}%
- {\define@key{minted@opt@g}{#2}{%
- \minted@addto@optlistcl@e{\minted@optlistcl@g}{#3}{#4}%
- \@namedef{minted@opt@g:#2}{#4}}%
- \define@key{minted@opt@g@i}{#2}{%
- \minted@addto@optlistcl@e{\minted@optlistcl@g@i}{#3}{#4}%
- \@namedef{minted@opt@g@i:#2}{#4}}%
- \define@key{minted@opt@lang}{#2}{%
- \minted@addto@optlistcl@lang@e{minted@optlistcl@lang\minted@lang}{#3}{#4}%
- \@namedef{minted@opt@lang\minted@lang:#2}{#4}}%
- \define@key{minted@opt@lang@i}{#2}{%
- \minted@addto@optlistcl@lang@e{%
- minted@optlistcl@lang\minted@lang @i}{#3}{#4}%
- \@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}%
- \define@key{minted@opt@cmd}{#2}{%
- \minted@addto@optlistcl@e{\minted@optlistcl@cmd}{#3}{#4}%
- \@namedef{minted@opt@cmd:#2}{#4}}}%
- {\define@key{minted@opt@g}{#2}[#1]{%
- \minted@addto@optlistcl@e{\minted@optlistcl@g}{#3}{#4}%
- \@namedef{minted@opt@g:#2}{#4}}%
- \define@key{minted@opt@g@i}{#2}[#1]{%
- \minted@addto@optlistcl@e{\minted@optlistcl@g@i}{#3}{#4}%
- \@namedef{minted@opt@g@i:#2}{#4}}%
- \define@key{minted@opt@lang}{#2}[#1]{%
- \minted@addto@optlistcl@lang@e{minted@optlistcl@lang\minted@lang}{#3}{#4}%
- \@namedef{minted@opt@lang\minted@lang:#2}{#4}}%
- \define@key{minted@opt@lang@i}{#2}[#1]{%
- \minted@addto@optlistcl@lang@e{%
- minted@optlistcl@lang\minted@lang @i}{#3}{#4}%
- \@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}%
- \define@key{minted@opt@cmd}{#2}[#1]{%
- \minted@addto@optlistcl@e{\minted@optlistcl@cmd}{#3}{#4}%
- \@namedef{minted@opt@cmd:#2}{#4}}}%
+\newbool{minted@cache}
+\booltrue{minted@cache}
+\minted@pgfopts{
+ cache/.is if=minted@cache,
+}
+\edef\minted@cachedir{\detokenize{_minted}}
+\minted@pgfopts{
+ cachedir/.estore in=\minted@cachedir,
+}
+\newbool{minted@frozencache}
+\minted@pgfopts{
+ frozencache/.is if=minted@frozencache,
}
-\newcommand{\minted@def@optcl@switch}[2]{%
- \define@booleankey{minted@opt@g}{#1}%
- {\minted@addto@optlistcl{\minted@optlistcl@g}{#2}{True}%
- \@namedef{minted@opt@g:#1}{true}}
- {\minted@addto@optlistcl{\minted@optlistcl@g}{#2}{False}%
- \@namedef{minted@opt@g:#1}{false}}
- \define@booleankey{minted@opt@g@i}{#1}%
- {\minted@addto@optlistcl{\minted@optlistcl@g@i}{#2}{True}%
- \@namedef{minted@opt@g@i:#1}{true}}
- {\minted@addto@optlistcl{\minted@optlistcl@g@i}{#2}{False}%
- \@namedef{minted@opt@g@i:#1}{false}}
- \define@booleankey{minted@opt@lang}{#1}%
- {\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#2}{True}%
- \@namedef{minted@opt@lang\minted@lang:#1}{true}}
- {\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#2}{False}%
- \@namedef{minted@opt@lang\minted@lang:#1}{false}}
- \define@booleankey{minted@opt@lang@i}{#1}%
- {\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang @i}{#2}{True}%
- \@namedef{minted@opt@lang\minted@lang @i:#1}{true}}
- {\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang @i}{#2}{False}%
- \@namedef{minted@opt@lang\minted@lang @i:#1}{false}}
- \define@booleankey{minted@opt@cmd}{#1}%
- {\minted@addto@optlistcl{\minted@optlistcl@cmd}{#2}{True}%
- \@namedef{minted@opt@cmd:#1}{true}}
- {\minted@addto@optlistcl{\minted@optlistcl@cmd}{#2}{False}%
- \@namedef{minted@opt@cmd:#1}{false}}
+\newbool{minted@lexerlinenos}
+\minted@pgfopts{
+ lexerlinenos/.is if=minted@lexerlinenos,
+ langlinenos/.is if=minted@lexerlinenos,
}
-\newcommand{\minted@def@optfv}[1]{%
- \define@key{minted@opt@g}{#1}{%
- \expandafter\def\expandafter\minted@optlistfv@g\expandafter{%
- \minted@optlistfv@g#1={##1},}%
- \@namedef{minted@opt@g:#1}{##1}}
- \define@key{minted@opt@g@i}{#1}{%
- \expandafter\def\expandafter\minted@optlistfv@g@i\expandafter{%
- \minted@optlistfv@g@i#1={##1},}%
- \@namedef{minted@opt@g@i:#1}{##1}}
- \define@key{minted@opt@lang}{#1}{%
- \expandafter\let\expandafter\minted@tmp%
- \csname minted@optlistfv@lang\minted@lang\endcsname
- \expandafter\def\expandafter\minted@tmp\expandafter{%
- \minted@tmp#1={##1},}%
- \expandafter\let\csname minted@optlistfv@lang\minted@lang\endcsname%
- \minted@tmp
- \@namedef{minted@opt@lang\minted@lang:#1}{##1}}
- \define@key{minted@opt@lang@i}{#1}{%
- \expandafter\let\expandafter\minted@tmp%
- \csname minted@optlistfv@lang\minted@lang @i\endcsname
- \expandafter\def\expandafter\minted@tmp\expandafter{%
- \minted@tmp#1={##1},}%
- \expandafter\let\csname minted@optlistfv@lang\minted@lang @i\endcsname%
- \minted@tmp
- \@namedef{minted@opt@lang\minted@lang @i:#1}{##1}}
- \define@key{minted@opt@cmd}{#1}{%
- \expandafter\def\expandafter\minted@optlistfv@cmd\expandafter{%
- \minted@optlistfv@cmd#1={##1},}%
- \@namedef{minted@opt@cmd:#1}{##1}}
+\newbool{minted@inputlexerlinenos}
+\minted@pgfopts{
+ inputlexerlinenos/.is if=minted@inputlexerlinenos,
+ inputlanglinenos/.is if=minted@inputlexerlinenos,
}
-\newcommand{\minted@def@optfv@switch}[1]{%
- \define@booleankey{minted@opt@g}{#1}%
- {\expandafter\def\expandafter\minted@optlistfv@g\expandafter{%
- \minted@optlistfv@g#1=true,}%
- \@namedef{minted@opt@g:#1}{true}}%
- {\expandafter\def\expandafter\minted@optlistfv@g\expandafter{%
- \minted@optlistfv@g#1=false,}%
- \@namedef{minted@opt@g:#1}{false}}%
- \define@booleankey{minted@opt@g@i}{#1}%
- {\expandafter\def\expandafter\minted@optlistfv@g@i\expandafter{%
- \minted@optlistfv@g@i#1=true,}%
- \@namedef{minted@opt@g@i:#1}{true}}%
- {\expandafter\def\expandafter\minted@optlistfv@g@i\expandafter{%
- \minted@optlistfv@g@i#1=false,}%
- \@namedef{minted@opt@g@i:#1}{false}}%
- \define@booleankey{minted@opt@lang}{#1}%
- {\expandafter\let\expandafter\minted@tmp%
- \csname minted@optlistfv@lang\minted@lang\endcsname
- \expandafter\def\expandafter\minted@tmp\expandafter{%
- \minted@tmp#1=true,}%
- \expandafter\let\csname minted@optlistfv@lang\minted@lang\endcsname%
- \minted@tmp
- \@namedef{minted@opt@lang\minted@lang:#1}{true}}%
- {\expandafter\let\expandafter\minted@tmp%
- \csname minted@optlistfv@lang\minted@lang\endcsname
- \expandafter\def\expandafter\minted@tmp\expandafter{%
- \minted@tmp#1=false,}%
- \expandafter\let\csname minted@optlistfv@lang\minted@lang\endcsname%
- \minted@tmp
- \@namedef{minted@opt@lang\minted@lang:#1}{false}}%
- \define@booleankey{minted@opt@lang@i}{#1}%
- {\expandafter\let\expandafter\minted@tmp%
- \csname minted@optlistfv@lang\minted@lang @i\endcsname
- \expandafter\def\expandafter\minted@tmp\expandafter{%
- \minted@tmp#1=true,}%
- \expandafter\let\csname minted@optlistfv@lang\minted@lang @i\endcsname%
- \minted@tmp
- \@namedef{minted@opt@lang\minted@lang @i:#1}{true}}%
- {\expandafter\let\expandafter\minted@tmp%
- \csname minted@optlistfv@lang\minted@lang @i\endcsname
- \expandafter\def\expandafter\minted@tmp\expandafter{%
- \minted@tmp#1=false,}%
- \expandafter\let\csname minted@optlistfv@lang\minted@lang @i\endcsname%
- \minted@tmp
- \@namedef{minted@opt@lang\minted@lang @i:#1}{false}}%
- \define@booleankey{minted@opt@cmd}{#1}%
- {\expandafter\def\expandafter\minted@optlistfv@cmd\expandafter{%
- \minted@optlistfv@cmd#1=true,}%
- \@namedef{minted@opt@cmd:#1}{true}}%
- {\expandafter\def\expandafter\minted@optlistfv@cmd\expandafter{%
- \minted@optlistfv@cmd#1=false,}%
- \@namedef{minted@opt@cmd:#1}{false}}%
+\newbool{minted@placeholder}
+\minted@pgfopts{
+ placeholder/.is if=minted@placeholder,
}
-\newboolean{minted@isinline}
-\newcommand{\minted@fvset}{%
- \expandafter\fvset\expandafter{\minted@optlistfv@g}%
- \expandafter\let\expandafter\minted@tmp%
- \csname minted@optlistfv@lang\minted@lang\endcsname
- \expandafter\fvset\expandafter{\minted@tmp}%
- \ifthenelse{\boolean{minted@isinline}}%
- {\expandafter\fvset\expandafter{\minted@optlistfv@g@i}%
- \expandafter\let\expandafter\minted@tmp%
- \csname minted@optlistfv@lang\minted@lang @i\endcsname
- \expandafter\fvset\expandafter{\minted@tmp}}%
+\gdef\minted@insertplaceholder{%
+ \ifbool{minted@isinline}%
+ {\begingroup
+ \fvset{extra=true}\Verb[formatcom=\color{red}\bfseries]{<MINTED>}%
+ \endgroup}%
+ {\begingroup
+ \par\noindent
+ \fvset{extra=true}\Verb[formatcom=\color{red}\bfseries]{<MINTED>}%
+ \par
+ \endgroup}}%
+\newbool{minted@verbatim}
+\minted@pgfopts{
+ verbatim/.is if=minted@verbatim,
+}
+\newbool{minted@fasthighlightmode}
+\newbool{minted@fasthighlightmode@open}
+\minted@pgfopts{
+ highlightmode/.is choice,
+ highlightmode/fast/.code=
+ \let\minted@highlightmode@init\minted@highlightmode@init@fast,
+ highlightmode/fastfirst/.code=
+ \let\minted@highlightmode@init\minted@highlightmode@init@fastfirst,
+ highlightmode/immediate/.code=
+ \let\minted@highlightmode@init\minted@highlightmode@init@immediate,
+}
+\def\minted@highlightmode@init@fast{%
+ \global\booltrue{minted@fasthighlightmode}}
+\def\minted@highlightmode@init@fastfirst{%
+ \IfFileExists{\minted@cachepath\MintedCacheIndexFilename}%
+ {\global\boolfalse{minted@fasthighlightmode}}
+ {\global\booltrue{minted@fasthighlightmode}}}
+\def\minted@highlightmode@init@immediate{%
+ \global\boolfalse{minted@fasthighlightmode}}
+\let\minted@highlightmode@init\minted@highlightmode@init@fastfirst
+\def\minted@fasthighlightmode@checkstart{%
+ \ifbool{minted@fasthighlightmode}%
+ {\pydatawritelistopen
+ \global\booltrue{minted@fasthighlightmode@open}}%
+ {}%
+ \global\let\minted@fasthighlightmode@checkstart\relax}
+\def\minted@fasthighlightmode@checkend{%
+ \ifbool{minted@fasthighlightmode@open}%
+ {\pydatasetfilename{\MintedDataFilename}%
+ \pydatawritelistclose
+ \pydataclosefilename{\MintedDataFilename}%
+ \global\boolfalse{minted@fasthighlightmode@open}%
+ \global\boolfalse{minted@fasthighlightmode}%
+ \begingroup
+ \minted@exec@batch
+ \ifx\minted@exec@warning\relax
+ \else
+ \expandafter\minted@exec@warning
+ \fi
+ \ifx\minted@exec@error\relax
+ \else
+ \expandafter\minted@exec@error
+ \fi
+ \endgroup
+ \global\boolfalse{minted@canexec}}%
{}%
- \expandafter\fvset\expandafter{\minted@optlistfv@cmd}%
+ \global\let\minted@fasthighlightmode@checkend\relax}
+\minted@pgfopts{
+ finalizecache/.code=\minted@error{%
+ Package option "finalizecache" is no longer needed with minted v3+},
}
-\newcommand{\minted@def@opt}[2][]{%
- \define@key{minted@opt@g}{#2}{%
- \@namedef{minted@opt@g:#2}{##1}}
- \define@key{minted@opt@g@i}{#2}{%
- \@namedef{minted@opt@g@i:#2}{##1}}
- \define@key{minted@opt@lang}{#2}{%
- \@namedef{minted@opt@lang\minted@lang:#2}{##1}}
- \define@key{minted@opt@lang@i}{#2}{%
- \@namedef{minted@opt@lang\minted@lang @i:#2}{##1}}
- \define@key{minted@opt@cmd}{#2}{%
- \@namedef{minted@opt@cmd:#2}{##1}}
- \ifstrempty{#1}{}{\@namedef{minted@opt@g:#2}{#1}}%
+\minted@pgfopts{
+ kpsewhich/.code=\minted@error{%
+ Package option "kpsewhich" is no longer needed with minted v3+},
}
-\newcommand{\minted@def@opt@detok}[2][]{%
- \define@key{minted@opt@g}{#2}{%
- \@namedef{minted@opt@g:#2}{\detokenize{##1}}}
- \define@key{minted@opt@g@i}{#2}{%
- \@namedef{minted@opt@g@i:#2}{\detokenize{##1}}}
- \define@key{minted@opt@lang}{#2}{%
- \@namedef{minted@opt@lang\minted@lang:#2}{\detokenize{##1}}}
- \define@key{minted@opt@lang@i}{#2}{%
- \@namedef{minted@opt@lang\minted@lang @i:#2}{\detokenize{##1}}}
- \define@key{minted@opt@cmd}{#2}{%
- \@namedef{minted@opt@cmd:#2}{\detokenize{##1}}}
- \ifstrempty{#1}{}{\@namedef{minted@opt@g:#2}{\detokenize{#1}}}%
+\minted@pgfopts{
+ outputdir/.code=\minted@error{%
+ Package option "outputdir" is no longer needed with minted v3+;
+ the output directory is automatically detected for TeX Live 2024+,
+ and the environment variable \detokenize{TEXMF_OUTPUT_DIRECTORY}
+ can be set manually in other cases},
}
-\newcommand{\minted@generate@PYGdef}[1]{%
- \ifthenelse{\boolean{minted@cache}}%
- {\def\minted@pygstylepath@load{\minted@outputdir\minted@cachedir/#1.pygstyle}%
- \minted@addcachefile{#1.pygstyle}}%
- {\def\minted@pygstylepath@load{\minted@outputdir\minted@jobname.out.pyg}}%
- \ifwindows
- \StrSubstitute{\minted@pygstylepath@load}%
- {/}{\@backslashchar}[\minted@pygstylepath@save]%
+\def\minted@outputdir{}
+\minted@pgfopts{
+ draft/.code=\minted@warning{%
+ Package option "draft" no longer has any effect with minted v3+},
+}
+\minted@pgfopts{
+ final/.code=\minted@warning{%
+ Package option "final" no longer has any effect with minted v3+},
+}
+\ProcessPgfOptions{/minted/pkg}
+\ifbool{minted@cache}{}{\minted@pgfopts{highlightmode=immediate,cachedir=,}}
+\ifbool{minted@newfloat}{\RequirePackage{newfloat}}{\RequirePackage{float}}
+\ifcsname tikzifexternalizing\endcsname
+ \ifx\tikzifexternalizing\relax
+ \else
+ \tikzifexternalizing{\booltrue{minted@placeholder}}{}
+ \fi
+\fi
+\def\minted@styleprefix{PYG}
+\def\minted@tempindex{0}
+\def\minted@forcsvlist#1#2{%
+ \if\relax\detokenize\expandafter{\@gobble#2}\relax
+ \expandafter\minted@forcsvlist@exp
+ \else
+ \expandafter\minted@forcsvlist@i
+ \fi
+ {#2}{#1}}
+\def\minted@forcsvlist@exp#1#2{%
+ \expandafter\minted@forcsvlist@i\expandafter{#1}{#2}}
+\def\minted@forcsvlist@i#1#2{%
+ \forcsvlist{#2}{#1}}
+\def\minted@apptoprovidecs#1#2{%
+ \ifcsname#1\endcsname
+ \else
+ \expandafter\def\csname#1\endcsname{}%
+ \fi
+ \expandafter\let\expandafter\minted@tmp\csname#1\endcsname
+ \expandafter\def\expandafter\minted@tmp\expandafter{\minted@tmp#2}%
+ \expandafter\let\csname#1\endcsname\minted@tmp}
+\def\minted@const@pgfkeysnovalue{\pgfkeysnovalue}
+\def\minted@ensureatletter#1{%
+ \edef\minted@tmpatcat{\the\catcode`\@}%
+ \catcode`\@=11\relax
+ #1%
+ \catcode`\@=\minted@tmpatcat\relax}
+\def\minted@tempindex{48}
+\loop\unless\ifnum\minted@tempindex>57\relax
+ \expandafter\let\csname minted@isnum\minted@tempindex\endcsname\relax
+ \expandafter\let\csname minted@isalphanum\minted@tempindex\endcsname\relax
+ \expandafter\let
+ \csname minted@isalphanumhyphenunderscore\minted@tempindex\endcsname\relax
+ \edef\minted@tempindex{\the\numexpr\minted@tempindex+1\relax}
+\repeat
+\def\minted@tempindex{65}
+\loop\unless\ifnum\minted@tempindex>90\relax
+ \expandafter\let\csname minted@isalpha\minted@tempindex\endcsname\relax
+ \expandafter\let\csname minted@isalphanum\minted@tempindex\endcsname\relax
+ \expandafter\let
+ \csname minted@isalphanumhyphenunderscore\minted@tempindex\endcsname\relax
+ \edef\minted@tempindex{\the\numexpr\minted@tempindex+1\relax}
+\repeat
+\def\minted@tempindex{97}
+\loop\unless\ifnum\minted@tempindex>122\relax
+ \expandafter\let\csname minted@isalpha\minted@tempindex\endcsname\relax
+ \expandafter\let\csname minted@isalphanum\minted@tempindex\endcsname\relax
+ \expandafter\let
+ \csname minted@isalphanumhyphenunderscore\minted@tempindex\endcsname\relax
+ \edef\minted@tempindex{\the\numexpr\minted@tempindex+1\relax}
+\repeat
+\expandafter\let\csname minted@isalphanumhyphenunderscore45\endcsname\relax
+\expandafter\let\csname minted@isalphanumhyphenunderscore95\endcsname\relax
+\def\minted@ifalphanumhyphenunderscore#1#2#3{%
+ \if\relax\detokenize{#1}\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {#3}%
+ {\expandafter\minted@ifalphanumhyphenunderscore@i\detokenize{#1}\FV@Sentinel{#2}{#3}}}
+\def\minted@ifalphanumhyphenunderscore@i#1#2\FV@Sentinel{%
+ \if\relax#2\relax
+ \expandafter\minted@ifalphanumhyphenunderscore@iii
+ \else
+ \expandafter\minted@ifalphanumhyphenunderscore@ii
+ \fi
+ #1#2\FV@Sentinel}
+\def\minted@ifalphanumhyphenunderscore@ii#1#2\FV@Sentinel{%
+ \ifcsname minted@isalphanumhyphenunderscore\number`#1\endcsname
+ \expandafter\minted@ifalphanumhyphenunderscore@i
+ \else
+ \expandafter\minted@ifalphanumhyphenunderscore@false
+ \fi
+ #2\FV@Sentinel}
+\def\minted@ifalphanumhyphenunderscore@iii#1\FV@Sentinel{%
+ \ifcsname minted@isalphanumhyphenunderscore\number`#1\endcsname
+ \expandafter\minted@ifalphanumhyphenunderscore@true
\else
- \let\minted@pygstylepath@save\minted@pygstylepath@load
+ \expandafter\minted@ifalphanumhyphenunderscore@false
\fi
- \IfFileExists{\minted@pygstylepath@load}%
+ \FV@Sentinel}
+\def\minted@ifalphanumhyphenunderscore@true\FV@Sentinel#1#2{#1}
+\def\minted@ifalphanumhyphenunderscore@false#1\FV@Sentinel#2#3{#3}
+\let\minted@lexer\@empty
+\newbool{minted@isinline}
+\def\minted@tmpcodebufferlength{0}
+\newbool{minted@canexec}
+\booltrue{minted@canexec}
+\ifnum\csname c_sys_shell_escape_int\endcsname=0\relax
+ \boolfalse{minted@canexec}
+\fi
+\ifbool{minted@frozencache}{\boolfalse{minted@canexec}}{}
+\ifbool{minted@placeholder}{\boolfalse{minted@canexec}}{}
+\ifbool{minted@verbatim}{\boolfalse{minted@canexec}}{}
+\def\minted@ShellEscapeMaybeMessages#1{%
+ \ifbool{minted@debug}%
+ {\immediate\typeout{%
+ minted debug: shell escape at
+ \ifx\CurrentFile\@empty\else\CurrentFile\space\fi line \the\inputlineno: #1}}%
{}%
- {\ifthenelse{\boolean{minted@frozencache}}%
- {\PackageError{minted}%
- {Missing style definition for #1 with frozencache}%
- {Missing style definition for #1 with frozencache}}%
- {}%
- \ShellEscape{%
- \MintedPygmentize\space -S #1 -f latex -P commandprefix=PYG
- > \minted@pygstylepath@save
- }%
- }%
- \CatchFileDef{\minted@tmp@filecontents}%
- {\minted@pygstylepath@load}{\catcode`@=11\catcode`\%=14\catcode``=12\endlinechar=-1}%
- \begingroup
- \let\PYG\relax
- \minted@tmp@filecontents
- \ifx\PYG\relax
- \ifthenelse{\boolean{minted@frozencache}}%
- {\PackageError{minted}%
- {Outdated style definition for #1 with frozencache}%
- {Outdated style definition for #1 with frozencache}}%
- {}%
- \ShellEscape{%
- \MintedPygmentize\space -S #1 -f latex -P commandprefix=PYG
- > \minted@pygstylepath@save
- }%
- \CatchFileDef{\minted@tmp@filecontents}%
- {\minted@pygstylepath@load}{\catcode`@=11\catcode`\%=14\catcode``=12\endlinechar=-1}%
- \minted@tmp@filecontents
- \ifx\PYG\relax
- \PackageError{minted}%
- {Cannot find Pygments style #1}%
- {Cannot find Pygments style #1}%
+ \let\minted@exec@warning\relax
+ \let\minted@exec@error\relax
+ \ifbool{minted@canexec}{\ShellEscape{#1}\minted@inputexecmessages}{}}
+\def\minted@ShellEscapeNoMessages#1{%
+ \ifbool{minted@debug}%
+ {\immediate\typeout{%
+ minted debug: shell escape at
+ \ifx\CurrentFile\@empty\else\CurrentFile\space\fi line \the\inputlineno: #1}}%
+ {}%
+ \ifbool{minted@canexec}{\ShellEscape{#1}}{}}
+\def\minted@execarg@debug{%
+ \ifbool{minted@debug}{\detokenize{ --debug }}{}}
+\def\minted@execarg@timestamp{%
+ \detokenize{ --timestamp }\minted@timestamp\detokenize{ }}
+\def\minted@inputexecmessages{%
+ \minted@ensureatletter{\InputIfFileExists{\MintedMessageFilename}{}{}}}
+\def\minted@exec@batch{%
+ \minted@ShellEscapeMaybeMessages{%
+ \MintedExecutable
+ \detokenize{ batch }\minted@execarg@timestamp\minted@execarg@debug
+ \MintedJobnameMdfive}}
+\def\minted@exec@config{%
+ \minted@ShellEscapeMaybeMessages{%
+ \MintedExecutable
+ \detokenize{ config }\minted@execarg@timestamp\minted@execarg@debug
+ \MintedJobnameMdfive}}
+\def\minted@exec@styledef{%
+ \minted@ShellEscapeMaybeMessages{%
+ \MintedExecutable
+ \detokenize{ styledef }\minted@execarg@timestamp\minted@execarg@debug
+ \MintedJobnameMdfive}}
+\def\minted@exec@highlight{%
+ \minted@ShellEscapeMaybeMessages{%
+ \MintedExecutable
+ \detokenize{ highlight }\minted@execarg@timestamp\minted@execarg@debug
+ \MintedJobnameMdfive}}
+\def\minted@exec@clean{%
+ \minted@ShellEscapeNoMessages{%
+ \MintedExecutable
+ \detokenize{ clean }\minted@execarg@timestamp\minted@execarg@debug
+ \MintedJobnameMdfive}}
+\def\minted@exec@cleanconfig{%
+ \minted@ShellEscapeNoMessages{%
+ \MintedExecutable
+ \detokenize{ cleanconfig }\minted@execarg@timestamp\minted@execarg@debug
+ \MintedJobnameMdfive}}
+\def\minted@exec@cleantemp{%
+ \minted@ShellEscapeNoMessages{%
+ \MintedExecutable
+ \detokenize{ cleantemp }\minted@execarg@timestamp\minted@execarg@debug
+ \MintedJobnameMdfive}}
+\newbool{minted@diddetectconfig}
+\def\minted@detectconfig{%
+ \ifbool{minted@diddetectconfig}%
+ {}%
+ {\ifx\minted@cachedir\@empty
+ \gdef\minted@cachepath{}%
+ \else
+ \gdef\minted@cachepath{\minted@cachedir/}%
\fi
+ \ifbool{minted@canexec}{\begingroup\minted@detectconfig@i\endgroup}{}%
+ \global\booltrue{minted@diddetectconfig}}}
+\def\minted@detectconfig@i{%
+ \global\let\minted@executable@version\relax
+ \global\let\minted@executable@timestamp\relax
+ \global\let\minted@config@timestamp\relax
+ \pydatasetfilename{\MintedDataFilename}%
+ \pydatawritedictopen
+ \pydatawritekeyvalue{command}{config}%
+ \pydatawritekeyedefvalue{jobname}{\jobname}%
+ \pydatawritekeyedefvalue{timestamp}{\minted@timestamp}%
+ \pydatawritekeyedefvalue{cachedir}{\minted@cachedir}%
+ \pydatawritedictclose
+ \pydataclosefilename{\MintedDataFilename}%
+ \minted@exec@config
+ \minted@ensureatletter{%
+ \InputIfFileExists{\MintedConfigFilename}{}{}}%
+ \ifx\minted@executable@version\relax
+ \expandafter\minted@detectconfig@noexecutableorerrlog
+ \else
+ \expandafter\minted@detectconfig@ii
+ \fi}
+\def\minted@detectconfig@noexecutableorerrlog{%
+ \global\boolfalse{minted@canexec}%
+ \ifnum\csname c_sys_shell_escape_int\endcsname=1\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
\fi
- \expandafter\global\expandafter\let\csname minted@PYGdef@#1\endcsname%
- \minted@tmp@filecontents
- \endgroup
-}
-\newcommand{\minted@defstyle}[1]{%
- \edef\minted@style{#1}%
- \ifcsname minted@PYGdef@\minted@style\endcsname\else
- \expandafter\minted@generate@PYGdef\expandafter{\minted@style}%
+ {\IfFileExists{\MintedErrlogFilename}%
+ {\minted@error{minted v3+ executable is not installed or is not added to PATH;
+ or MiKTeX is being used with \detokenize{-aux-directory} or
+ \detokenize{-output-directory} without setting a
+ \detokenize{TEXMF_OUTPUT_DIRECTORY} environment variable;
+ or there was an unexpected error (check "\MintedErrlogFilename")}}%
+ {\minted@error{minted v3+ executable is not installed or is not added to PATH;
+ or MiKTeX is being used with \detokenize{-aux-directory} or
+ \detokenize{-output-directory} without setting a
+ \detokenize{TEXMF_OUTPUT_DIRECTORY} environment variable}}}%
+ {\IfFileExists{\MintedErrlogFilename}%
+ {\minted@error{minted v3+ executable is not installed, is not added to PATH,
+ or is not permitted with restricted shell escape;
+ or MiKTeX is being used with \detokenize{-aux-directory} or
+ \detokenize{-output-directory} without setting a
+ \detokenize{TEXMF_OUTPUT_DIRECTORY} environment variable;
+ or there was an unexpected error (check "\MintedErrlogFilename")}}%
+ {\minted@error{minted v3+ executable is not installed, is not added to PATH,
+ or is not permitted with restricted shell escape;
+ or MiKTeX is being used with \detokenize{-aux-directory} or
+ \detokenize{-output-directory} without setting a
+ \detokenize{TEXMF_OUTPUT_DIRECTORY} environment variable}}}}
+\def\minted@detectconfig@ii{%
+ \ifx\minted@timestamp\minted@config@timestamp
+ \expandafter\minted@detectconfig@iii
+ \else
+ \expandafter\minted@detectconfig@wrongtimestamp
+ \fi}
+\def\minted@detectconfig@wrongtimestamp{%
+ \ifx\minted@timestamp\minted@executable@timestamp
+ \minted@exec@cleanconfig
+ \global\boolfalse{minted@canexec}%
+ \minted@error{minted v3 Python executable could not find output directory;
+ upgrade to TeX distribution that supports \detokenize{TEXMF_OUTPUT_DIRECTORY}
+ or set environment variable \detokenize{TEXMF_OUTPUT_DIRECTORY} manually)}%
+ \else
+ \expandafter\minted@detectconfig@noexecutableorerrlog
+ \fi}
+\def\minted@detectconfig@iii{%
+ \minted@exec@cleanconfig
+ \ifx\minted@exec@warning\relax
+ \else
+ \expandafter\minted@exec@warning
\fi
- \csname minted@PYGdef@\minted@style\endcsname
- \minted@patch@PYGZsq
- \minted@patch@PYGZhy
- \ifthenelse{\equal{\minted@get@opt{ignorelexererrors}{true}}{true}}%
- {\let\PYG@tok@err\relax}{}}
-\ifthenelse{\boolean{minted@draft}}{\renewcommand{\minted@defstyle}[1]{}}{}
-\newcommand{\minted@patch@PYGZsq}{%
- \ifcsname PYGZsq\endcsname
- \expandafter\ifdefstring\expandafter{\csname PYGZsq\endcsname}{\char`\'}%
- {\minted@patch@PYGZsq@i}%
- {}%
+ \ifx\minted@exec@error\relax
+ \expandafter\minted@detectconfig@iv
+ \else
+ \expandafter\minted@detectconfig@error
+ \fi}
+\def\minted@detectconfig@error{%
+ \global\boolfalse{minted@canexec}%
+ \minted@exec@error}
+\def\minted@detectconfig@iv{%
+ \expandafter\minted@detectconfig@v\minted@executable@version\relax}
+\begingroup
+\catcode`\.=12
+\gdef\minted@detectconfig@v#1.#2.#3\relax{%
+ \def\minted@executable@major{#1}%
+ \def\minted@executable@minor{#2}%
+ \def\minted@executable@patch{#3}%
+ \minted@detectconfig@vi}
+\endgroup
+\def\minted@detectconfig@vi{%
+ \ifnum\minted@executable@major>\minted@executable@minmajor\relax
+ \global\booltrue{minted@executable@issupported}%
+ \else\ifnum\minted@executable@major=\minted@executable@minmajor\relax
+ \ifnum\minted@executable@minor>\minted@executable@minminor\relax
+ \global\booltrue{minted@executable@issupported}%
+ \else\ifnum\minted@executable@minor=\minted@executable@minminor\relax
+ \ifnum\minted@executable@patch<\minted@executable@minpatch\relax
+ \else
+ \global\booltrue{minted@executable@issupported}%
+ \fi
+ \fi\fi
+ \fi\fi
+ \ifbool{minted@executable@issupported}%
+ {\ifx\minted@config@cachepath\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\global\boolfalse{minted@canexec}%
+ \minted@error{minted Python executable returned incomplete configuration data;
+ this may indicate a bug in minted or file corruption}}%
+ {\global\let\minted@cachepath\minted@config@cachepath
+ \minted@highlightmode@init
+ \ifbool{minted@fasthighlightmode}{\newread\minted@intempfile}{}}}%
+ {\global\boolfalse{minted@canexec}%
+ \minted@error{minted Python executable is version \minted@executable@version,
+ but version \minted@executable@minversion+ is required}}}
+\begingroup
+\catcode`\,=12
+\gdef\minted@optcats{fv,py,tex}
+\endgroup
+\def\minted@do#1{\expandafter\def\csname minted@optkeyslist@#1\endcsname{}}
+\minted@forcsvlist{\minted@do}{\minted@optcats}
+\begingroup
+\catcode`\,=12
+\gdef\minted@optscopes{global,lexer,globalinline,lexerinline,cmd}
+\gdef\minted@optscopes@onlyblock{global,lexer,cmd}
+\endgroup
+\let\minted@iflexerscope@lexer\relax
+\let\minted@iflexerscope@lexerinline\relax
+\def\minted@iflexerscope#1#2#3{%
+ \ifcsname minted@iflexerscope@#1\endcsname
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
\fi
-}
+ {#2}{#3}}
+\def\minted@addoptkey#1#2{%
+ \ifcsname minted@optkeyslist@#1\endcsname
+ \else
+ \minted@fatalerror{Defining options under category "#1" is not supported}%
+ \fi
+ \expandafter\let\expandafter\minted@tmp\csname minted@optkeyslist@#1\endcsname
+ \ifx\minted@tmp\@empty
+ \def\minted@tmp{#2}%
+ \else
+ \expandafter\def\expandafter\minted@tmp\expandafter{\minted@tmp,#2}%
+ \fi
+ \expandafter\let\csname minted@optkeyslist@#1\endcsname\minted@tmp}
+\newcommand*{\mintedpgfkeyscreate}[3][]{%
+ \mintedpgfkeyscreate@i{#1}{#2}{#3}}
\begingroup
-\catcode`\'=\active
-\gdef\minted@patch@PYGZsq@i{\gdef\PYGZsq{'}}
+\catcode`\==12
+\gdef\mintedpgfkeyscreate@i#1#2#3{%
+ \def\minted@do##1{%
+ \minted@do@i##1=\FV@Sentinel}%
+ \def\minted@do@i##1=##2\FV@Sentinel{%
+ \minted@do@ii##1<>\FV@Sentinel}%
+ \def\minted@do@ii##1<##2>##3\FV@Sentinel{%
+ \minted@addoptkey{#2}{##1}}%
+ \minted@forcsvlist{\minted@do}{#3}%
+ \csname minted@pgfkeyscreate@#2\endcsname{#1}{#3}}
\endgroup
-\newcommand{\minted@patch@PYGZhy}{%
- \ifcsname PYGZhy\endcsname
- \expandafter\ifdefstring\expandafter{\csname PYGZhy\endcsname}{\char`\-}%
- {\def\PYGZhy{\mbox{-}}}%
- {}%
+\def\minted@pgfkeyscreate@fv#1#2{%
+ \if\relax\detokenize{#1}\relax
+ \else
+ \minted@fatalerror{Processor macros are not supported in defining fancyvrb options}%
\fi
-}
-\newcommand{\minted@def@opt@switch}[2][false]{%
- \define@booleankey{minted@opt@g}{#2}%
- {\@namedef{minted@opt@g:#2}{true}}%
- {\@namedef{minted@opt@g:#2}{false}}
- \define@booleankey{minted@opt@g@i}{#2}%
- {\@namedef{minted@opt@g@i:#2}{true}}%
- {\@namedef{minted@opt@g@i:#2}{false}}
- \define@booleankey{minted@opt@lang}{#2}%
- {\@namedef{minted@opt@lang\minted@lang:#2}{true}}%
- {\@namedef{minted@opt@lang\minted@lang:#2}{false}}
- \define@booleankey{minted@opt@lang@i}{#2}%
- {\@namedef{minted@opt@lang\minted@lang @i:#2}{true}}%
- {\@namedef{minted@opt@lang\minted@lang @i:#2}{false}}
- \define@booleankey{minted@opt@cmd}{#2}%
- {\@namedef{minted@opt@cmd:#2}{true}}%
- {\@namedef{minted@opt@cmd:#2}{false}}%
- \@namedef{minted@opt@g:#2}{#1}%
-}
-\def\minted@get@opt#1#2{%
- \ifcsname minted@opt@cmd:#1\endcsname
- \csname minted@opt@cmd:#1\endcsname
+ \minted@forcsvlist{\minted@pgfkeycreate@fv}{#2}}
+\begingroup
+\catcode`\==12
+\gdef\minted@pgfkeycreate@fv#1{%
+ \minted@pgfkeycreate@fv@i#1=\FV@Sentinel}
+\gdef\minted@pgfkeycreate@fv@i#1=#2\FV@Sentinel{%
+ \if\relax\detokenize{#2}\relax
+ \expandafter\minted@pgfkeycreate@fv@ii
\else
- \ifminted@isinline
- \ifcsname minted@opt@lang\minted@lang @i:#1\endcsname
- \csname minted@opt@lang\minted@lang @i:#1\endcsname
- \else
- \ifcsname minted@opt@g@i:#1\endcsname
- \csname minted@opt@g@i:#1\endcsname
+ \expandafter\minted@pgfkeycreate@fv@iii
+ \fi
+ {#1}#2\FV@Sentinel}
+\gdef\minted@pgfkeycreate@fv@ii#1\FV@Sentinel{%
+ \minted@pgfkeycreate@fv@iv{#1}{\minted@const@pgfkeysnovalue}}
+\gdef\minted@pgfkeycreate@fv@iii#1#2=\FV@Sentinel{%
+ \minted@pgfkeycreate@fv@iv{#1}{#2}}
+\endgroup
+\def\minted@pgfkeycreate@fv@iv#1#2{%
+ \def\minted@do##1{%
+ \minted@iflexerscope{##1}%
+ {\minted@do@i{##1}{@\minted@lexer}}%
+ {\minted@do@i{##1}{}}}%
+ \def\minted@do@i##1##2{%
+ \pgfkeys{%
+ /minted/##1/.cd,
+ #1/.code={%
+ \def\minted@tmp{####1}%
+ \ifx\minted@tmp\minted@const@pgfkeysnovalue
+ \begingroup\fvset{#1}\endgroup
+ \minted@apptoprovidecs{minted@fvoptlist@##1##2}{#1,}%
\else
- \ifcsname minted@opt@lang\minted@lang:#1\endcsname
- \csname minted@opt@lang\minted@lang:#1\endcsname
+ \begingroup\fvset{#1={####1}}\endgroup
+ \minted@apptoprovidecs{minted@fvoptlist@##1##2}{#1={####1},}%
+ \fi},
+ }%
+ }%
+ \minted@forcsvlist{\minted@do}{\minted@optscopes}%
+ \ifx\minted@const@pgfkeysnovalue#2\relax
+ \else
+ \pgfkeys{%
+ /minted/global/.cd,
+ #1={#2},
+ }%
+ \fi}
+\def\minted@usefvopts{%
+ \ifbool{minted@isinline}%
+ {\minted@forcsvlist{\minted@usefvopts@do}{\minted@optscopes}}%
+ {\minted@forcsvlist{\minted@usefvopts@do}{\minted@optscopes@onlyblock}}}
+\def\minted@usefvopts@do#1{%
+ \minted@iflexerscope{#1}%
+ {\ifcsname minted@fvoptlist@#1@\minted@lexer\endcsname
+ \expandafter
+ \let\expandafter\minted@tmp\csname minted@fvoptlist@#1@\minted@lexer\endcsname
+ \expandafter\fvset\expandafter{\minted@tmp}%
+ \fi}%
+ {\ifcsname minted@fvoptlist@#1\endcsname
+ \expandafter
+ \let\expandafter\minted@tmp\csname minted@fvoptlist@#1\endcsname
+ \expandafter\fvset\expandafter{\minted@tmp}%
+ \fi}}
+\def\minted@useadditionalfvoptsnopy{%
+ \edef\minted@tmp{\mintedpyoptvalueof{gobble}}%
+ \ifx\minted@tmp\minted@const@pgfkeysnovalue
+ \else
+ \expandafter\minted@useadditionalfvoptsnopy@fvsetvk
+ \expandafter{\minted@tmp}{gobble}%
+ \fi
+ \edef\minted@tmp{\mintedpyoptvalueof{mathescape}}%
+ \ifx\minted@tmp\minted@const@pgfkeysnovalue
+ \else
+ \expandafter\minted@useadditionalfvoptsnopy@fvsetvk
+ \expandafter{\minted@tmp}{mathescape}%
+ \fi}
+\def\minted@useadditionalfvoptsnopy@fvsetvk#1#2{%
+ \fvset{#2={#1}}}
+\def\minted@pgfkeyscreate@py#1#2{%
+ \minted@forcsvlist{\minted@pgfkeycreate@py{#1}}{#2}}
+\begingroup
+\catcode`\==12
+\catcode`\<=12
+\catcode`\>=12
+\gdef\minted@pgfkeycreate@py#1#2{%
+ \minted@pgfkeycreate@py@i{#1}#2=\FV@Sentinel}
+\gdef\minted@pgfkeycreate@py@i#1#2=#3\FV@Sentinel{%
+ \if\relax\detokenize{#3}\relax
+ \expandafter\minted@pgfkeycreate@py@ii
+ \else
+ \expandafter\minted@pgfkeycreate@py@iii
+ \fi
+ {#1}{#2}#3\FV@Sentinel}
+\gdef\minted@pgfkeycreate@py@ii#1#2\FV@Sentinel{%
+ \minted@pgfkeycreate@py@iv{#1}{\pgfkeysnovalue}#2<>\FV@Sentinel}
+\gdef\minted@pgfkeycreate@py@iii#1#2#3=\FV@Sentinel{%
+ \minted@pgfkeycreate@py@iv{#1}{#3}#2<>\FV@Sentinel}
+\gdef\minted@pgfkeycreate@py@iv#1#2#3<#4>#5\FV@Sentinel{%
+ \if\relax\detokenize{#4}\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\minted@pgfkeycreate@py@v{#1}{#3}{#2}{\minted@const@pgfkeysnovalue}}%
+ {\minted@pgfkeycreate@py@v{#1}{#3}{#2}{#4}}}
+\endgroup
+\def\minted@pgfkeycreate@py@v#1#2#3#4{%
+ \def\minted@do##1{%
+ \minted@iflexerscope{##1}%
+ {\minted@do@i{##1}{@\minted@lexer}}%
+ {\minted@do@i{##1}{}}}
+ \def\minted@do@i##1##2{%
+ \if\relax\detokenize{#1}\relax
+ \pgfkeys{%
+ /minted/##1/.cd,
+ #2/.code={\expandafter\def\csname minted@pyopt@##1##2@#2\endcsname{####1}},
+ }%
+ \else
+ \pgfkeys{%
+ /minted/##1/.cd,
+ #2/.code={%
+ \def\minted@tmp{####1}%
+ \ifx\minted@tmp\minted@const@pgfkeysnovalue
+ \expandafter\let\csname minted@pyopt@##1##2@#2\endcsname\minted@tmp
+ \else\ifcsname minted@opthandler@immediate@\string#1\endcsname
+ #1{minted@pyopt@##1##2@#2}{####1}%
\else
- \ifcsname minted@opt@g:#1\endcsname
- \csname minted@opt@g:#1\endcsname
- \else
- #2%
- \fi
- \fi
- \fi
- \fi
+ \expandafter\def\csname minted@pyopt@##1##2@#2\endcsname{#1{####1}}%
+ \fi\fi},
+ }%
+ \fi
+ \ifx\minted@const@pgfkeysnovalue#4\relax
+ \pgfkeys{%
+ /minted/##1/.cd,
+ #2/.value required,
+ }%
\else
- \ifcsname minted@opt@lang\minted@lang:#1\endcsname
- \csname minted@opt@lang\minted@lang:#1\endcsname
- \else
- \ifcsname minted@opt@g:#1\endcsname
- \csname minted@opt@g:#1\endcsname
- \else
- #2%
- \fi
- \fi
+ \pgfkeys{%
+ /minted/##1/.cd,
+ #2/.default={#4},
+ }%
+ \fi
+ }%
+ \minted@forcsvlist{\minted@do}{\minted@optscopes}%
+ \pgfkeys{%
+ /minted/global/.cd,
+ #2={#3},
+ }}
+\def\mintedpyoptvalueof#1{%
+ \ifbool{minted@isinline}%
+ {\minted@pyoptvalueof@inline{#1}}%
+ {\minted@pyoptvalueof@block{#1}}}
+\def\minted@pyoptvalueof@inline#1{%
+ \ifcsname minted@pyopt@cmd@#1\endcsname
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname minted@pyopt@cmd@#1\endcsname}%
+ \else\ifcsname minted@pyopt@lexerinline@\minted@lexer @#1\endcsname
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname minted@pyopt@lexerinline@\minted@lexer @#1\endcsname}%
+ \else\ifcsname minted@pyopt@globalinline@#1\endcsname
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname minted@pyopt@globalinline@#1\endcsname}%
+ \else\ifcsname minted@pyopt@lexer@\minted@lexer @#1\endcsname
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname minted@pyopt@lexer@\minted@lexer @#1\endcsname}%
+ \else
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname minted@pyopt@global@#1\endcsname}%
+ \fi\fi\fi\fi}
+\def\minted@pyoptvalueof@block#1{%
+ \ifcsname minted@pyopt@cmd@#1\endcsname
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname minted@pyopt@cmd@#1\endcsname}%
+ \else\ifcsname minted@pyopt@lexer@\minted@lexer @#1\endcsname
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname minted@pyopt@lexer@\minted@lexer @#1\endcsname}%
+ \else
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname minted@pyopt@global@#1\endcsname}%
+ \fi\fi}
+\def\minted@pgfkeyscreate@tex#1#2{%
+ \minted@forcsvlist{\minted@pgfkeycreate@tex{#1}}{#2}}
+\begingroup
+\catcode`\==12
+\gdef\minted@pgfkeycreate@tex#1#2{%
+ \minted@pgfkeycreate@tex@i{#1}#2=\FV@Sentinel}
+\gdef\minted@pgfkeycreate@tex@i#1#2=#3\FV@Sentinel{%
+ \if\relax\detokenize{#3}\relax
+ \expandafter\minted@pgfkeycreate@tex@ii
+ \else
+ \expandafter\minted@pgfkeycreate@tex@iii
+ \fi
+ {#1}{#2}#3\FV@Sentinel}
+\gdef\minted@pgfkeycreate@tex@ii#1#2\FV@Sentinel{%
+ \minted@pgfkeycreate@tex@iv{#1}{#2}{\pgfkeysnovalue}}
+\gdef\minted@pgfkeycreate@tex@iii#1#2#3=\FV@Sentinel{%
+ \minted@pgfkeycreate@tex@iv{#1}{#2}{#3}}
+\endgroup
+\def\minted@pgfkeycreate@tex@iv#1#2#3{%
+ \def\minted@do##1{%
+ \minted@iflexerscope{##1}%
+ {\minted@do@i{##1}{@\minted@lexer}}%
+ {\minted@do@i{##1}{}}}
+ \def\minted@do@i##1##2{%
+ \if\relax\detokenize{#1}\relax
+ \pgfkeys{%
+ /minted/##1/.cd,
+ #2/.code={\expandafter\def\csname minted@texopt@##1##2@#2\endcsname{####1}},
+ #2/.value required,
+ }%
+ \else
+ \pgfkeys{%
+ /minted/##1/.cd,
+ #2/.code={%
+ \def\minted@tmp{####1}%
+ \ifx\minted@tmp\minted@const@pgfkeysnovalue
+ \expandafter\let\csname minted@texopt@##1##2@#2\endcsname\minted@tmp
+ \else\ifcsname minted@opthandler@immediate@\string#1\endcsname
+ #1{minted@texopt@##1##2@#2}{####1}%
+ \else
+ \expandafter\def\csname minted@texopt@##1##2@#2\endcsname{#1{####1}}%
+ \fi\fi},
+ #2/.value required,
+ }%
+ \fi
+ }%
+ \minted@forcsvlist{\minted@do}{\minted@optscopes}%
+ \pgfkeys{%
+ /minted/global/.cd,
+ #2={#3},
+ }}
+\def\mintedtexoptvalueof#1{%
+ \ifbool{minted@isinline}%
+ {\minted@texoptvalueof@inline{#1}}%
+ {\minted@texoptvalueof@block{#1}}}
+\def\minted@texoptvalueof@inline#1{%
+ \ifcsname minted@texopt@cmd@#1\endcsname
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname minted@texopt@cmd@#1\endcsname}%
+ \else\ifcsname minted@texopt@lexerinline@\minted@lexer @#1\endcsname
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname minted@texopt@lexerinline@\minted@lexer @#1\endcsname}%
+ \else\ifcsname minted@texopt@globalinline@#1\endcsname
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname minted@texopt@globalinline@#1\endcsname}%
+ \else\ifcsname minted@texopt@lexer@\minted@lexer @#1\endcsname
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname minted@texopt@lexer@\minted@lexer @#1\endcsname}%
+ \else
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname minted@texopt@global@#1\endcsname}%
+ \fi\fi\fi\fi}
+\def\minted@texoptvalueof@block#1{%
+ \ifcsname minted@texopt@cmd@#1\endcsname
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname minted@texopt@cmd@#1\endcsname}%
+ \else\ifcsname minted@texopt@lexer@\minted@lexer @#1\endcsname
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname minted@texopt@lexer@\minted@lexer @#1\endcsname}%
+ \else
+ \unexpanded\expandafter\expandafter\expandafter{%
+ \csname minted@texopt@global@#1\endcsname}%
+ \fi\fi}
+\def\minted@usetexoptsnonpygments{}
+\def\minted@opthandler@deforrestrictedescape#1#2{%
+ \if\relax\detokenize{#2}\relax
+ \expandafter\def\csname#1\endcsname{#2}%
+ \else\if\relax\detokenize\expandafter{\@gobble#2}\relax
+ \ifcat\relax\noexpand#2%
+ \expandafter\expandafter\expandafter\minted@opthandler@deforrestrictedescape@i
+ \expandafter\@gobble\string#2\FV@Sentinel{#1}{#2}%
+ \else
+ \FVExtraDetokenizeREscVArg{\expandafter\def\csname#1\endcsname}{#2}%
\fi
+ \else
+ \FVExtraDetokenizeREscVArg{\expandafter\def\csname#1\endcsname}{#2}%
+ \fi\fi}
+\def\minted@opthandler@deforrestrictedescape@i#1#2\FV@Sentinel#3#4{%
+ \ifcsname minted@isalpha\number`#1\endcsname
+ \expandafter\def\csname#3\endcsname{#4}%
+ \else
+ \FVExtraDetokenizeREscVArg{\expandafter\def\csname#3\endcsname}{#4}%
+ \fi}
+\expandafter\let\csname
+ minted@opthandler@immediate@\string\minted@opthandler@deforrestrictedescape
+ \endcsname\relax
+\mintedpgfkeyscreate{fv}{
+ baselinestretch,
+ beameroverlays,
+ backgroundcolor,
+ backgroundcolorvphantom,
+ bgcolor,
+ bgcolorpadding,
+ bgcolorvphantom,
+ breakafter,
+ breakafterinrun,
+ breakaftersymbolpost,
+ breakaftersymbolpre,
+ breakanywhere,
+ breakanywhereinlinestretch,
+ breakanywheresymbolpost,
+ breakanywheresymbolpre,
+ breakautoindent,
+ breakbefore,
+ breakbeforeinrun,
+ breakbeforesymbolpost,
+ breakbeforesymbolpre,
+ breakbytoken,
+ breakbytokenanywhere,
+ breakindent,
+ breakindentnchars,
+ breaklines,
+ breaksymbol,
+ breaksymbolindent,
+ breaksymbolindentleft,
+ breaksymbolindentleftnchars,
+ breaksymbolindentnchars,
+ breaksymbolindentright,
+ breaksymbolindentrightnchars,
+ breaksymbolleft,
+ breaksymbolright,
+ breaksymbolsep,
+ breaksymbolsepleft,
+ breaksymbolsepleftnchars,
+ breaksymbolsepnchars,
+ breaksymbolsepright,
+ breaksymbolseprightnchars,
+ curlyquotes,
+ fillcolor,
+ firstline,
+ firstnumber,
+ fontencoding,
+ fontfamily,
+ fontseries,
+ fontshape,
+ fontsize,
+ formatcom,
+ frame,
+ framerule,
+ framesep,
+ highlightcolor,
+ highlightlines,
+ label,
+ labelposition,
+ lastline,
+ linenos,
+ listparameters,
+ numberblanklines,
+ numberfirstline,
+ numbers,
+ numbersep,
+ obeytabs,
+ reflabel,
+ resetmargins,
+ rulecolor,
+ samepage,
+ showspaces,
+ showtabs,
+ space,
+ spacecolor,
+ stepnumber,
+ stepnumberfromfirst,
+ stepnumberoffsetvalues,
+ tab,
+ tabcolor=black,
+ tabsize,
+ vspace,
+ xleftmargin,
+ xrightmargin,
+}
+\mintedpgfkeyscreate{py}{
+ autogobble<true>=false,
+ encoding=utf8,
+ extrakeywords=,
+ extrakeywordsconstant=,
+ extrakeywordsdeclaration=,
+ extrakeywordsnamespace=,
+ extrakeywordspseudo=,
+ extrakeywordsreserved=,
+ extrakeywordstype=,
+ funcnamehighlighting<true>=true,
+ gobble=0,
+ gobblefilter=0,
+ keywordcase=none,
+ literalenvname=MintedVerbatim,
+ mathescape<true>=false,
+ python3<true>=true,
+ rangeregexmatchnumber=1,
+ rangeregexdotall<true>=false,
+ rangeregexmultiline<true>=false,
+ startinline<true>=false,
+ stripall<true>=false,
+ stripnl<true>=false,
+ texcl<true>=false,
+ texcomments<true>=false,
+}
+\mintedpgfkeyscreate[\minted@opthandler@deforrestrictedescape]{py}{
+ codetagify=,
+ escapeinside=,
+ literatecomment=,
+ rangestartstring=,
+ rangestartafterstring=,
+ rangestopstring=,
+ rangestopbeforestring=,
+ rangeregex=,
+}
+\let\minted@tmplexer\minted@lexer
+\def\minted@lexer{php}
+\pgfkeys{
+ /minted/lexerinline/.cd,
+ startinline=true,
+}
+\let\minted@lexer\minted@tmplexer
+\mintedpgfkeyscreate{tex}{
+ envname=Verbatim,
+ ignorelexererrors=false,
+ style=default,
+}
+\pgfkeys{
+ /minted/globalinline/.cd,
+ envname=VerbEnv,
+}
+\expandafter\def\expandafter\minted@usetexoptsnonpygments\expandafter{%
+ \minted@usetexoptsnonpygments
+ \edef\minted@literalenvname{\mintedpyoptvalueof{literalenvname}}%
+ \edef\minted@envname{\mintedtexoptvalueof{envname}}%
+ \expandafter\def\expandafter\minted@literalenv\expandafter{%
+ \csname \minted@literalenvname\endcsname}%
+ \expandafter\def\expandafter\minted@endliteralenv\expandafter{%
+ \csname end\minted@literalenvname\endcsname}%
+ \expandafter\expandafter\expandafter
+ \let\expandafter\minted@literalenv\csname \minted@envname\endcsname
+ \expandafter\expandafter\expandafter
+ \let\expandafter\minted@endliteralenv\csname end\minted@envname\endcsname}%
+\ifcsname minted@def@optcl\endcsname
+ \ifx\minted@def@optcl\relax
+ \let\minted@def@optcl\minted@undefined
\fi
-}%
-\minted@def@optcl{encoding}{-P encoding}{#1}
-\minted@def@optcl{outencoding}{-P outencoding}{#1}
-\minted@def@optcl@e{escapeinside}{-P escapeinside}{#1}
-\minted@def@optcl@switch{stripnl}{-P stripnl}
-\minted@def@optcl@switch{stripall}{-P stripall}
-\minted@def@optcl@switch{python3}{-P python3}
-\minted@def@optcl@switch{funcnamehighlighting}{-P funcnamehighlighting}
-\minted@def@optcl@switch{startinline}{-P startinline}
-\ifthenelse{\boolean{minted@draft}}%
- {\minted@def@optfv{gobble}}%
- {\minted@def@optcl{gobble}{-F gobble:n}{#1}}
-\minted@def@optcl{codetagify}{-F codetagify:codetags}{#1}
-\minted@def@optcl{keywordcase}{-F keywordcase:case}{#1}
-\minted@def@optcl@switch{texcl}{-P texcomments}
-\minted@def@optcl@switch{texcomments}{-P texcomments}
-\minted@def@optcl@switch{mathescape}{-P mathescape}
-\minted@def@optfv@switch{linenos}
-\minted@def@opt@detok{style}
-\minted@def@optfv{frame}
-\minted@def@optfv{framesep}
-\minted@def@optfv{framerule}
-\minted@def@optfv{rulecolor}
-\minted@def@optfv{numbersep}
-\minted@def@optfv{numbers}
-\minted@def@optfv{firstnumber}
-\minted@def@optfv{stepnumber}
-\minted@def@optfv{firstline}
-\minted@def@optfv{lastline}
-\minted@def@optfv{baselinestretch}
-\minted@def@optfv{xleftmargin}
-\minted@def@optfv{xrightmargin}
-\minted@def@optfv{fillcolor}
-\minted@def@optfv{tabsize}
-\minted@def@optfv{fontfamily}
-\minted@def@optfv{fontsize}
-\minted@def@optfv{fontshape}
-\minted@def@optfv{fontseries}
-\minted@def@optfv{formatcom}
-\minted@def@optfv{label}
-\minted@def@optfv{labelposition}
-\minted@def@optfv{highlightlines}
-\minted@def@optfv{highlightcolor}
-\minted@def@optfv{space}
-\minted@def@optfv{spacecolor}
-\minted@def@optfv{tab}
-\minted@def@optfv{tabcolor}
-\minted@def@optfv{highlightcolor}
-\minted@def@optfv@switch{beameroverlays}
-\minted@def@optfv@switch{curlyquotes}
-\minted@def@optfv@switch{numberfirstline}
-\minted@def@optfv@switch{numberblanklines}
-\minted@def@optfv@switch{stepnumberfromfirst}
-\minted@def@optfv@switch{stepnumberoffsetvalues}
-\minted@def@optfv@switch{showspaces}
-\minted@def@optfv@switch{resetmargins}
-\minted@def@optfv@switch{samepage}
-\minted@def@optfv@switch{showtabs}
-\minted@def@optfv@switch{obeytabs}
-\minted@def@optfv@switch{breaklines}
-\minted@def@optfv@switch{breakbytoken}
-\minted@def@optfv@switch{breakbytokenanywhere}
-\minted@def@optfv{breakindent}
-\minted@def@optfv{breakindentnchars}
-\minted@def@optfv@switch{breakautoindent}
-\minted@def@optfv{breaksymbol}
-\minted@def@optfv{breaksymbolsep}
-\minted@def@optfv{breaksymbolsepnchars}
-\minted@def@optfv{breaksymbolindent}
-\minted@def@optfv{breaksymbolindentnchars}
-\minted@def@optfv{breaksymbolleft}
-\minted@def@optfv{breaksymbolsepleft}
-\minted@def@optfv{breaksymbolsepleftnchars}
-\minted@def@optfv{breaksymbolindentleft}
-\minted@def@optfv{breaksymbolindentleftnchars}
-\minted@def@optfv{breaksymbolright}
-\minted@def@optfv{breaksymbolsepright}
-\minted@def@optfv{breaksymbolseprightnchars}
-\minted@def@optfv{breaksymbolindentright}
-\minted@def@optfv{breaksymbolindentrightnchars}
-\minted@def@optfv{breakbefore}
-\minted@def@optfv{breakbeforesymbolpre}
-\minted@def@optfv{breakbeforesymbolpost}
-\minted@def@optfv@switch{breakbeforeinrun}
-\minted@def@optfv{breakafter}
-\minted@def@optfv@switch{breakafterinrun}
-\minted@def@optfv{breakaftersymbolpre}
-\minted@def@optfv{breakaftersymbolpost}
-\minted@def@optfv@switch{breakanywhere}
-\minted@def@optfv{breakanywheresymbolpre}
-\minted@def@optfv{breakanywheresymbolpost}
-\minted@def@optfv{fontencoding}
-\minted@def@opt{bgcolor}
-\minted@def@opt@switch{autogobble}
-\minted@def@opt@switch{ignorelexererrors}
-\newcommand{\minted@encoding}{\minted@get@opt{encoding}{UTF8}}
-\newenvironment{minted@snugshade*}[1]{%
- \def\FrameCommand##1{\hskip\@totalleftmargin
- \colorbox{#1}{##1}%
- \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}%
- \MakeFramed{\advance\hsize-\width
- \@totalleftmargin\z@ \linewidth\hsize
- \advance\labelsep\fboxsep
- \@setminipage}%
- }{\par\unskip\@minipagefalse\endMakeFramed}
-\newsavebox{\minted@bgbox}
-\newenvironment{minted@colorbg}[1]{%
- \setlength{\OuterFrameSep}{0pt}%
- \let\minted@tmp\FV@NumberSep
- \edef\FV@NumberSep{%
- \the\numexpr\dimexpr\minted@tmp+\number\fboxsep\relax sp\relax}%
- \medskip
- \begin{minted@snugshade*}{#1}}
- {\end{minted@snugshade*}%
- \medskip\noindent}
-\newwrite\minted@code
-\newcommand{\minted@savecode}[1]{
- \immediate\openout\minted@code\minted@jobname.pyg\relax
- \immediate\write\minted@code{\expandafter\detokenize\expandafter{#1}}%
- \immediate\closeout\minted@code}
-\newcounter{minted@FancyVerbLineTemp}
-\newcommand{\minted@write@detok}[1]{%
- \immediate\write\FV@OutFile{\detokenize{#1}}}
-\newcommand{\minted@FVB@VerbatimOut}[1]{%
- \setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}%
- \@bsphack
- \begingroup
- \FV@UseKeyValues
- \FV@DefineWhiteSpace
- \def\FV@Space{\space}%
- \FV@DefineTabOut
- \let\FV@ProcessLine\minted@write@detok
- \immediate\openout\FV@OutFile #1\relax
- \let\FV@FontScanPrep\relax
- \let\@noligs\relax
- \FV@Scan}
-\newcommand{\minted@FVE@VerbatimOut}{%
- \immediate\closeout\FV@OutFile\endgroup\@esphack
- \setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}}%
-\ifcsname MintedPygmentize\endcsname\else
- \newcommand{\MintedPygmentize}{pygmentize}
\fi
-\newcounter{minted@pygmentizecounter}
-\ifwindows
- \newcommand{\MintedPython}{python}
+\providecommand{\minted@def@optcl}[4][]{%
+ \minted@warning{Macro \string\minted@def@optcl\space is deprecated with minted v3
+ and no longer has any effect}}
+\newbool{minted@didcreatefiles}
+\def\minted@numcachefiles{0}
+\def\minted@addcachefilename#1{%
+ \ifbool{minted@canexec}%
+ {\xdef\minted@numcachefiles{\the\numexpr\minted@numcachefiles+1\relax}%
+ \expandafter\xdef\csname minted@cachefile\minted@numcachefiles\endcsname{#1}%
+ \edef\minted@tmp{\pdf@mdfivesum{#1}}%
+ \expandafter\minted@cachechecksum@update\expandafter{\minted@tmp}}%
+ {}}
+\let\minted@cachechecksum\relax
+\ifcsname mintedoldcachechecksum\endcsname
\else
- \newcommand{\MintedPython}{python3}
+ \let\mintedoldcachechecksum\relax
\fi
-\newcommand{\minted@check@MintedPython}{%
- \ifcsname minted@MintedPython@\MintedPython\endcsname
+\edef\minted@cachechecksum@files{\pdf@mdfivesum{}}
+\expandafter\let\expandafter\minted@intfromhex\csname int_from_hex:n\endcsname
+\expandafter\let\expandafter\minted@inttoHex\csname int_to_Hex:n\endcsname
+\expandafter\let\expandafter\minted@intmod\csname int_mod:nn\endcsname
+\def\minted@intmodsixteen#1{\minted@intmod{#1}{16}}
+\def\minted@cachechecksum@update#1{%
+ \xdef\minted@cachechecksum@files{%
+ \expandafter\minted@cachechecksum@files@calc
+ \minted@cachechecksum@files\FV@Sentinel#1\FV@Sentinel}%
+ \xdef\minted@cachechecksum{%
+ \detokenize\expandafter{\minted@cachechecksum@files}%
+ \detokenize{:}%
+ \detokenize\expandafter{\minted@numcachefiles}}}
+\def\minted@cachechecksum@files@calc#1#2\FV@Sentinel#3#4\FV@Sentinel{%
+ \minted@inttoHex{%
+ \the\numexpr
+ \minted@intmodsixteen{\minted@intfromhex{#1}+\minted@intfromhex{#3}}%
+ \relax}%
+ \if\relax\detokenize{#2}\relax
+ \expandafter\@gobble
\else
- \let\minted@altpython\minted@undefined
- \ifdefstring{\MintedPython}{python}{\def\minted@altpython{python3}}{}%
- \ifdefstring{\MintedPython}{python3}{\def\minted@altpython{python}}{}%
- \ifx\minted@altpython\minted@undefined\relax
- \TestAppExists{\MintedPython}%
- \ifAppExists
- \expandafter\global\expandafter\let%
- \csname minted@MintedPython@\MintedPython\endcsname\relax
- \else
- \PackageError{minted}%
- {Failed to find Python executable \MintedPython;
- check Python installation (including PATH),
- or redefine \string\MintedPython}%
- {Failed to find Python executable \MintedPython;
- check Python installation (including PATH),
- or redefine \string\MintedPython}%
- \fi
- \else
- \ifcsname minted@MintedPython@\minted@altpython\endcsname
- \let\MintedPython\minted@altpython
- \else
- \TestAppExists{\MintedPython}%
- \ifAppExists
- \expandafter\global\expandafter\let%
- \csname minted@MintedPython@\MintedPython\endcsname\relax
- \else
- \TestAppExists{\minted@altpython}%
- \ifAppExists
- \expandafter\global\expandafter\let%
- \csname minted@MintedPython@\minted@altpython\endcsname\relax
- \let\MintedPython\minted@altpython
+ \expandafter\@firstofone
+ \fi
+ {\minted@cachechecksum@files@calc#2\FV@Sentinel#4\FV@Sentinel}}
+\def\minted@clean{%
+ \ifbool{minted@canexec}%
+ {\ifbool{minted@didcreatefiles}%
+ {\minted@clean@i}%
+ {\ifbool{minted@fasthighlightmode}%
+ {\minted@clean@i}%
+ {\ifbool{minted@cache}%
+ {\ifx\minted@cachechecksum\mintedoldcachechecksum
\else
- \PackageError{minted}%
- {Failed to find Python executables python or python3;
- check Python installation (including PATH),
- or redefine \string\MintedPython}%
- {Failed to find Python executables python or python3;
- check Python installation (including PATH),
- or redefine \string\MintedPython}%
- \fi
- \fi
- \fi
+ \expandafter\minted@clean@i
+ \fi}%
+ {}}}%
+ \ifbool{minted@fasthighlightmode}{}{\global\boolfalse{minted@canexec}}}%
+ {}}
+\def\minted@clean@i{%
+ \ifnum\minted@numcachefiles>0\relax
+ \expandafter\minted@savecachelist
+ \fi
+ \ifbool{minted@fasthighlightmode}%
+ {}%
+ {\ifnum\minted@numcachefiles>0\relax
+ \expandafter\minted@exec@clean
+ \else
+ \expandafter\minted@exec@cleantemp
+ \fi}%
+ \gdef\minted@numcachefiles{0}}
+\def\minted@savecachelist{%
+ \pydatasetfilename{\MintedDataFilename}%
+ \minted@fasthighlightmode@checkstart
+ \pydatawritedictopen
+ \pydatawritekeyvalue{command}{clean}%
+ \pydatawritekeyedefvalue{jobname}{\jobname}%
+ \pydatawritekeyedefvalue{timestamp}{\minted@timestamp}%
+ \pydatawritekeyedefvalue{cachepath}{\minted@cachepath}%
+ \pydatawritekey{cachefiles}%
+ \pydatawritemlvaluestart
+ \pydatawritemlvalueline{[}%
+ \gdef\minted@tempindex{1}%
+ \loop\unless\ifnum\minted@tempindex>\minted@numcachefiles\relax
+ \expandafter\minted@savecachelist@writecachefile\expandafter{%
+ \csname minted@cachefile\minted@tempindex\endcsname}%
+ \expandafter\global\expandafter
+ \let\csname minted@cachefile\minted@tempindex\endcsname\minted@undefined
+ \xdef\minted@tempindex{\the\numexpr\minted@tempindex+1\relax}%
+ \repeat
+ \pydatawritemlvalueline{]}%
+ \pydatawritemlvalueend
+ \pydatawritedictclose
+ \ifbool{minted@fasthighlightmode}{}{\pydataclosefilename{\MintedDataFilename}}}
+\begingroup
+\catcode`\"=12
+\catcode`\,=12
+\gdef\minted@savecachelist@writecachefile#1{%
+ \expandafter\pydatawritemlvalueline\expandafter{\expandafter"#1",}}
+\endgroup
+\AddToHook{enddocument/afterlastpage}{%
+ \minted@clean
+ \minted@fasthighlightmode@checkend
+ \ifbool{minted@cache}%
+ {\immediate\write\@auxout{%
+ \xdef\string\mintedoldcachechecksum{\string\detokenize{\minted@cachechecksum}}}}%
+ {}}
+\def\minted@patch@PygmentsZsq{%
+ \ifcsname\minted@styleprefix Zsq\endcsname
+ \ifcsstring{\minted@styleprefix Zsq}{\char`\'}{\minted@patch@PygmentsZsq@i}{}%
+ \fi}
+\begingroup
+\catcode`\'=\active
+\gdef\minted@patch@PygmentsZsq@i{\def\PYGZsq{'}}
+\endgroup
+\def\minted@patch@PygmentsZhy{%
+ \ifcsname\minted@styleprefix Zhy\endcsname
+ \ifcsstring{\minted@styleprefix Zhy}{\char`\-}{\def\PYGZhy{\mbox{-}}}{}%
+ \fi}
+\def\minted@patch@ignorelexererrors{%
+ \edef\minted@tmp{\mintedtexoptvalueof{ignorelexererrors}}%
+ \ifdefstring{\minted@tmp}{true}%
+ {\expandafter\let\csname\minted@styleprefix @tok@err\endcsname\relax}%
+ {}}
+\def\minted@patch@PygmentsStyledef{%
+ \minted@patch@PygmentsZsq
+ \minted@patch@PygmentsZhy
+ \minted@patch@ignorelexererrors}
+\def\minted@VerbatimPygments{%
+ \expandafter\minted@VerbatimPygments@i\expandafter{%
+ \csname\minted@styleprefix\endcsname}}
+\def\minted@VerbatimPygments@i#1{%
+ \VerbatimPygments{#1}{#1}}
+\def\minted@standardcatcodes{%
+ \catcode`\\=0
+ \catcode`\{=1
+ \catcode`\}=2
+ \catcode`\#=6
+ \catcode`\ =10
+ \catcode`\@=11
+ \catcode`\`=12
+ \catcode`\==12
+ \catcode`\+=12
+ \catcode`\.=12
+ \catcode`\,=12
+ \catcode`\[=12
+ \catcode`\]=12
+ \catcode`\%=14}
+\def\minted@defstyle{%
+ \edef\minted@tmp{\mintedtexoptvalueof{style}}%
+ \expandafter\minted@defstyle@i\expandafter{\minted@tmp}}
+\def\minted@defstyle@i#1{%
+ \minted@ifalphanumhyphenunderscore{#1}%
+ {\minted@defstyle@ii{#1}}%
+ {\minted@error{Highlighting style is set to "#1" but only style names with
+ alphanumeric characters, hyphens, and underscores are supported;
+ falling back to default style}%
+ \minted@defstyle@ii{default}}}
+\def\minted@defstyle@ii#1{%
+ \ifcsname minted@styledef@#1\endcsname
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\csname minted@styledef@#1\endcsname
+ \minted@patch@PygmentsStyledef
+ \minted@VerbatimPygments}%
+ {\minted@defstyle@load{#1}}}
+\def\minted@catchfiledef#1#2{%
+ \CatchFileDef{#1}{#2}{\minted@standardcatcodes\endlinechar=-1}}
+\def\minted@defstyle@load#1{%
+ \minted@detectconfig
+ \ifbool{minted@cache}%
+ {\edef\minted@styledeffilename{#1\detokenize{.style.minted}}%
+ \edef\minted@styledeffilepath{\minted@cachepath\minted@styledeffilename}%
+ \IfFileExists{\minted@styledeffilepath}%
+ {\minted@defstyle@input{#1}}%
+ {\ifbool{minted@canexec}%
+ {\minted@defstyle@generate{#1}}%
+ {\minted@error{Missing definition for highlighting style "#1" (minted executable
+ is unavailable or disabled); attempting to substitute fallback style}%
+ \minted@defstyle@fallback{#1}}}}%
+ {\edef\minted@styledeffilename{%
+ \detokenize{_}\MintedJobnameMdfive\detokenize{.style.minted}}%
+ \let\minted@styledeffilepath\minted@styledeffilename
+ \ifbool{minted@canexec}%
+ {\minted@defstyle@generate{#1}}%
+ {\minted@error{Missing definition for highlighting style "#1" (minted executable
+ is unavailable or disabled); attempting to substitute fallback style}%
+ \minted@defstyle@fallback{#1}}}}
+\def\minted@defstyle@input#1{%
+ \begingroup
+ \minted@catchfiledef{\minted@tmp}{\minted@styledeffilepath}%
+ \minted@tmp
+ \ifcsname\minted@styleprefix\endcsname
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\expandafter\global\expandafter\let\csname minted@styledef@#1\endcsname\minted@tmp
+ \endgroup
+ \ifbool{minted@cache}{\minted@addcachefilename{\minted@styledeffilename}}{}%
+ \csname minted@styledef@#1\endcsname
+ \minted@patch@PygmentsStyledef
+ \minted@VerbatimPygments}%
+ {\endgroup
+ \ifbool{minted@canexec}%
+ {\minted@warning{Invalid or corrupted style definition file
+ "\minted@styledeffilename"; attempting to regenerate}%
+ \minted@defstyle@generate{#1}}%
+ {\minted@error{Invalid or corrupted style definition file
+ "\minted@styledeffilename"; attempting to substitute fallback style
+ (minted executable is unavailable or disabled)}%
+ \minted@defstyle@fallback{#1}}}}
+\def\minted@defstyle@generate#1{%
+ \pydatasetfilename{\MintedDataFilename}%
+ \minted@fasthighlightmode@checkstart
+ \pydatawritedictopen
+ \pydatawritekeyvalue{command}{styledef}%
+ \pydatawritekeyedefvalue{jobname}{\jobname}%
+ \pydatawritekeyedefvalue{timestamp}{\minted@timestamp}%
+ \pydatawritekeyedefvalue{currentfilepath}{\CurrentFilePath}%
+ \pydatawritekeyedefvalue{currentfile}{\CurrentFile}%
+ \pydatawritekeyedefvalue{inputlineno}{\the\inputlineno}%
+ \pydatawritekeyedefvalue{cachepath}{\minted@cachepath}%
+ \pydatawritekeyedefvalue{styledeffilename}{\minted@styledeffilename}%
+ \pydatawritekeyvalue{style}{#1}%
+ \pydatawritekeyedefvalue{commandprefix}{\minted@styleprefix}%
+ \pydatawritedictclose
+ \ifbool{minted@fasthighlightmode}%
+ {\minted@defstyle@fallback{#1}}%
+ {\pydataclosefilename{\MintedDataFilename}%
+ \begingroup
+ \minted@exec@styledef
+ \global\booltrue{minted@didcreatefiles}%
+ \ifx\minted@exec@warning\relax
+ \else
+ \expandafter\minted@exec@warning
\fi
+ \ifx\minted@exec@error\relax
+ \expandafter\minted@defstyle@generate@i
+ \else
+ \expandafter\minted@defstyle@generate@error
+ \fi
+ {#1}}}
+\def\minted@defstyle@generate@i#1{%
+ \endgroup
+ \begingroup
+ \minted@catchfiledef{\minted@tmp}{\minted@styledeffilepath}%
+ \minted@tmp
+ \ifcsname\minted@styleprefix\endcsname
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
\fi
-}
-\ifwindows
- \def\minted@opt@quote#1{\detokenize{"#1"}}
-\else
- \def\minted@opt@quote#1{\detokenize{'#1'}}
-\fi
-\newcommand{\minted@pygmentize}[2][\minted@outputdir\minted@jobname.pyg]{%
- \minted@defstyle{\minted@get@opt{style}{default}}%
- \stepcounter{minted@pygmentizecounter}%
- \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}%
- {\def\minted@codefile{\minted@outputdir\minted@jobname.pyg}}%
- {\def\minted@codefile{#1}}%
- \ifthenelse{\boolean{minted@isinline}}%
- {\def\minted@optlistcl@inlines{%
- \minted@optlistcl@g@i
- \csname minted@optlistcl@lang\minted@lang @i\endcsname}}%
- {\let\minted@optlistcl@inlines\@empty}%
- \def\minted@cmd{%
- \ifminted@kpsewhich
- \ifwindows
- \detokenize{for /f "usebackq tokens=*"}\space\@percentchar\detokenize{a in (`kpsewhich}\space\minted@codefile\detokenize{`) do}\space
- \fi
+ {\expandafter\global\expandafter\let\csname minted@styledef@#1\endcsname\minted@tmp
+ \endgroup
+ \ifbool{minted@cache}{\minted@addcachefilename{\minted@styledeffilename}}{}%
+ \csname minted@styledef@#1\endcsname
+ \minted@patch@PygmentsStyledef
+ \minted@VerbatimPygments}%
+ {\endgroup
+ \minted@error{Failed to create style definition file "\minted@styledeffilename"
+ (no error message, see "\MintedErrlogFilename" if it exists);
+ attempting to substitute fallback style}%
+ \minted@defstyle@fallback{#1}}}
+\def\minted@defstyle@generate@error#1{%
+ \minted@exec@error
+ \endgroup
+ \minted@defstyle@fallback{#1}}
+\def\minted@defstyle@fallback#1{%
+ \ifstrequal{#1}{default}%
+ {\expandafter\global\expandafter
+ \let\csname minted@styledef@default\endcsname\minted@styledeffallback}%
+ {\ifcsname minted@styledef@default\endcsname
+ \else
+ \minted@defstyle@load{default}%
\fi
- \MintedPygmentize\space -l \minted@opt@quote{#2}
- -f latex -P commandprefix=PYG -F tokenmerge
- \minted@optlistcl@g \csname minted@optlistcl@lang\minted@lang\endcsname
- \minted@optlistcl@inlines
- \minted@optlistcl@cmd -o \minted@outputdir\minted@infile\space
- \ifminted@kpsewhich
- \ifwindows
- \@percentchar\detokenize{a}%
+ \expandafter\let\expandafter\minted@tmp\csname minted@styledef@default\endcsname
+ \expandafter\global\expandafter\let\csname minted@styledef@#1\endcsname\minted@tmp}}
+\def\minted@styledeffallback{%
+ \expandafter\def\csname\minted@styleprefix\endcsname##1##2{##2}%
+ \expandafter\def\csname\minted@styleprefix Zbs\endcsname{\char`\\}%
+ \expandafter\def\csname\minted@styleprefix Zus\endcsname{\char`\_}%
+ \expandafter\def\csname\minted@styleprefix Zob\endcsname{\char`\{}%
+ \expandafter\def\csname\minted@styleprefix Zcb\endcsname{\char`\}}%
+ \expandafter\def\csname\minted@styleprefix Zca\endcsname{\char`\^}%
+ \expandafter\def\csname\minted@styleprefix Zam\endcsname{\char`\&}%
+ \expandafter\def\csname\minted@styleprefix Zlt\endcsname{\char`\<}%
+ \expandafter\def\csname\minted@styleprefix Zgt\endcsname{\char`\>}%
+ \expandafter\def\csname\minted@styleprefix Zsh\endcsname{\char`\#}%
+ \expandafter\def\csname\minted@styleprefix Zpc\endcsname{\char`\%}%
+ \expandafter\def\csname\minted@styleprefix Zdl\endcsname{\char`\$}%
+ \expandafter\def\csname\minted@styleprefix Zhy\endcsname{\char`\-}%
+ \expandafter\def\csname\minted@styleprefix Zsq\endcsname{\char`\'}%
+ \expandafter\def\csname\minted@styleprefix Zdq\endcsname{\char`\"}%
+ \expandafter\def\csname\minted@styleprefix Zti\endcsname{\char`\~}%
+ \minted@patch@PygmentsStyledef
+ \minted@VerbatimPygments}
+\newcounter{minted@FancyVerbLineTemp}
+\def\minted@lexerlinenoson{%
+ \ifcsname c@minted@lexer\minted@lexer\endcsname
+ \else
+ \newcounter{minted@lexer\minted@lexer}%
+ \fi
+ \setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}%
+ \setcounter{FancyVerbLine}{\value{minted@lexer\minted@lexer}}}
+\def\minted@lexerlinenosoff{%
+ \setcounter{minted@lexer\minted@lexer}{\value{FancyVerbLine}}%
+ \setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}}
+\ifbool{minted@inputlexerlinenos}%
+ {\let\minted@inputlexerlinenoson\minted@lexerlinenoson
+ \let\minted@inputlexerlinenosoff\minted@lexerlinenosoff}%
+ {\let\minted@inputlexerlinenoson\relax
+ \let\minted@inputlexerlinenosoff\relax
+ \ifbool{minted@lexerlinenos}
+ {}%
+ {\let\minted@lexerlinenoson\relax
+ \let\minted@lexerlinenosoff\relax}}
+\def\minted@codewrapper#1{%
+ \ifcsname minted@inputfilepath\endcsname
+ \minted@inputlexerlinenoson
+ \else
+ \minted@lexerlinenoson
+ \fi
+ #1%
+ \ifcsname minted@inputfilepath\endcsname
+ \minted@inputlexerlinenosoff
+ \else
+ \minted@lexerlinenosoff
+ \fi}
+\def\minted@debug@input{%
+ \ifbool{minted@debug}%
+ {\immediate\typeout{%
+ minted debug: \string\input\space at
+ \ifx\CurrentFile\@empty\else\CurrentFile\space\fi line \the\inputlineno}}%
+ {}}
+\def\minted@highlight{%
+ \minted@defstyle
+ \pydatasetbuffername{minted@tmpdatabuffer}%
+ \pydatabufferkeyvalue{command}{highlight}%
+ \pydatabufferkey{code}%
+ \pydatabuffermlvaluestart
+ \gdef\minted@tempindex{1}%
+ \loop\unless\ifnum\minted@tempindex>\minted@tmpcodebufferlength\relax
+ \expandafter\let\expandafter
+ \minted@tmp\csname minted@tmpcodebufferline\minted@tempindex\endcsname
+ \expandafter\pydatabuffermlvalueline\expandafter{\minted@tmp}%
+ \xdef\minted@tempindex{\the\numexpr\minted@tempindex+1\relax}%
+ \repeat
+ \pydatabuffermlvalueend
+ \minted@highlight@i}
+\def\minted@highlightinputfile{%
+ \minted@defstyle
+ \edef\minted@inputfilemdfivesum{\pdf@filemdfivesum{\minted@inputfilepath}}%
+ \ifx\minted@inputfilemdfivesum\@empty
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\minted@error{Cannot find input file "\minted@inputfilepath"; inserting placeholder}%
+ \minted@insertplaceholder}%
+ {\pydatasetbuffername{minted@tmpdatabuffer}%
+ \pydatabufferkeyvalue{command}{highlight}%
+ \pydatabufferkeyedefvalue{inputfilepath}{\minted@inputfilepath}%
+ \pydatabufferkeyedefvalue{inputfilemdfivesum}{\minted@inputfilemdfivesum}%
+ \minted@highlight@i}}
+\def\minted@def@FV@GetKeyValues@standardcatcodes{%
+ \let\minted@FV@GetKeyValues@orig\FV@GetKeyValues
+ \def\FV@GetKeyValues##1{%
+ \begingroup
+ \minted@standardcatcodes
+ \minted@FV@GetKeyValues@i{##1}}%
+ \def\minted@FV@GetKeyValues@i##1[##2]{%
+ \endgroup
+ \let\FV@GetKeyValues\minted@FV@GetKeyValues@orig
+ \let\minted@FV@GetKeyValues@i\minted@undefined
+ \FV@GetKeyValues{##1}[##2]}}
+\def\minted@highlight@i{%
+ \pydatabufferkeyedefvalue{pyopt.lexer}{\minted@lexer}%
+ \pydatabufferkeyedefvalue{pyopt.commandprefix}{\minted@styleprefix}%
+ \minted@forcsvlist{\minted@highlight@bufferpykeys}{\minted@optkeyslist@py}%
+ \ifbool{minted@cache}%
+ {\edef\minted@highlightfilename{\pydatabuffermdfivesum\detokenize{.highlight.minted}}%
+ \edef\minted@highlightfilepath{\minted@cachepath\minted@highlightfilename}%
+ \IfFileExists{\minted@highlightfilepath}%
+ {\minted@codewrapper{%
+ \minted@def@FV@GetKeyValues@standardcatcodes
+ \minted@debug@input
+ \input{\minted@highlightfilepath}}%
+ \minted@addcachefilename{\minted@highlightfilename}}%
+ {\ifbool{minted@canexec}%
+ {\ifbool{minted@fasthighlightmode}%
+ {\ifcsname minted@processedfilename@\minted@highlightfilename\endcsname
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\minted@insertplaceholder}%
+ {\expandafter\global\expandafter\let
+ \csname minted@processedfilename@\minted@highlightfilename\endcsname\relax
+ \minted@iffasthighlightmode@buffertempfile
+ \minted@highlight@create}}%
+ {\minted@iffasthighlightmode@buffertempfile
+ \minted@highlight@create}}%
+ {\minted@error{Cannot highlight code (minted executable is unavailable or
+ disabled); attempting to typeset without highlighting}%
+ \minted@highlight@fallback}}}%
+ {\edef\minted@highlightfilename{%
+ \detokenize{_}\MintedJobnameMdfive\detokenize{.highlight.minted}}%
+ \let\minted@highlightfilepath\minted@highlightfilename
+ \ifbool{minted@canexec}%
+ {\minted@highlight@create}%
+ {\minted@error{Cannot highlight code (minted executable is unavailable or
+ disabled); attempting to typeset without highlighting}%
+ \minted@highlight@fallback}}%
+ \pydataclearbuffername{minted@tmpdatabuffer}}
+\def\minted@highlight@bufferpykeys#1{%
+ \edef\minted@tmp{\mintedpyoptvalueof{#1}}%
+ \ifx\minted@tmp\minted@const@pgfkeysnovalue
+ \else
+ \pydatabufferkeyedefvalue{pyopt.#1}{\minted@tmp}%
+ \fi}
+\def\minted@highlight@create{%
+ \pydatasetfilename{\MintedDataFilename}%
+ \minted@fasthighlightmode@checkstart
+ \pydatawritedictopen
+ \pydatawritebuffer
+ \pydatawritekeyedefvalue{jobname}{\jobname}%
+ \pydatawritekeyedefvalue{timestamp}{\minted@timestamp}%
+ \pydatawritekeyedefvalue{currentfilepath}{\CurrentFilePath}%
+ \pydatawritekeyedefvalue{currentfile}{\CurrentFile}%
+ \pydatawritekeyedefvalue{inputlineno}{\the\inputlineno}%
+ \pydatawritekeyedefvalue{cachepath}{\minted@cachepath}%
+ \pydatawritekeyedefvalue{highlightfilename}{\minted@highlightfilename}%
+ \pydatawritedictclose
+ \ifbool{minted@fasthighlightmode}%
+ {\minted@insertplaceholder}%
+ {\pydataclosefilename{\MintedDataFilename}%
+ \begingroup
+ \minted@exec@highlight
+ \global\booltrue{minted@didcreatefiles}%
+ \IfFileExists{\minted@highlightfilepath}%
+ {\ifx\minted@exec@warning\relax
\else
- \detokenize{`}kpsewhich \minted@codefile\space
- \detokenize{||} \minted@codefile\detokenize{`}%
+ \expandafter\minted@exec@warning
\fi
- \else
- \minted@codefile
- \fi}%
- % For debugging, uncomment: %%%%
- % \immediate\typeout{\minted@cmd}%
- % %%%%
- \ifthenelse{\boolean{minted@cache}}%
- {%
- \ifminted@frozencache
+ \ifx\minted@exec@error\relax
\else
- \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}%
- {\edef\minted@hash{%
- \pdf@filemdfivesum{#1}%
- \pdf@mdfivesum{\minted@cmd\space%
- autogobble(\the\numexpr\FancyVerbStartNum\relax-%
- \the\numexpr\FancyVerbStopNum\relax)}}}%
- {\edef\minted@hash{%
- \pdf@filemdfivesum{#1}%
- \pdf@mdfivesum{\minted@cmd}}}%
- \edef\minted@infile{\minted@cachedir/\minted@hash.pygtex}%
- \IfFileExists{\minted@infile}{}{%
- \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}{%
- \minted@autogobble{#1}}{}%
- \ShellEscape{\minted@cmd}}%
+ \expandafter\minted@exec@error
\fi
- \ifthenelse{\boolean{minted@finalizecache}}%
- {%
- \edef\minted@cachefilename{listing\arabic{minted@pygmentizecounter}.pygtex}%
- \edef\minted@actualinfile{\minted@cachedir/\minted@cachefilename}%
- \ifwindows
- \StrSubstitute{\minted@infile}{/}{\@backslashchar}[\minted@infile@windows]
- \StrSubstitute{\minted@actualinfile}{/}{\@backslashchar}[\minted@actualinfile@windows]
- \ShellEscape{move /y \minted@outputdir\minted@infile@windows\space\minted@outputdir\minted@actualinfile@windows}%
- \else
- \ShellEscape{mv -f \minted@outputdir\minted@infile\space\minted@outputdir\minted@actualinfile}%
- \fi
- \let\minted@infile\minted@actualinfile
- \expandafter\minted@addcachefile\expandafter{\minted@cachefilename}%
- }%
- {\ifthenelse{\boolean{minted@frozencache}}%
- {%
- \edef\minted@cachefilename{listing\arabic{minted@pygmentizecounter}.pygtex}%
- \edef\minted@infile{\minted@cachedir/\minted@cachefilename}%
- \expandafter\minted@addcachefile\expandafter{\minted@cachefilename}}%
- {\expandafter\minted@addcachefile\expandafter{\minted@hash.pygtex}}%
- }%
- \minted@inputpyg}%
- {%
- \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}{%
- \minted@autogobble{#1}}{}%
- \ShellEscape{\minted@cmd}%
- \minted@inputpyg}%
-}
-\def\minted@autogobble#1{%
- \edef\minted@argone@esc{#1}%
- \StrSubstitute{\minted@argone@esc}{\@backslashchar}{\@backslashchar\@backslashchar}[\minted@argone@esc]%
- \StrSubstitute{\minted@argone@esc}{"}{\@backslashchar"}[\minted@argone@esc]%
- \edef\minted@tmpfname@esc{\minted@outputdir\minted@jobname}%
- \StrSubstitute{\minted@tmpfname@esc}{\@backslashchar}{\@backslashchar\@backslashchar}[\minted@tmpfname@esc]%
- \StrSubstitute{\minted@tmpfname@esc}{"}{\@backslashchar"}[\minted@tmpfname@esc]%
- %Need a version of open() that supports encoding under Python 2
- \minted@check@MintedPython
- \edef\minted@autogobblecmd{%
- \ifminted@kpsewhich
- \ifwindows
- \detokenize{for /f "usebackq tokens=*" }\@percentchar\detokenize{a in (`kpsewhich} #1\detokenize{`) do}\space
- \fi
- \fi
- \MintedPython\detokenize{ -c "import sys; import os;
- import textwrap;
- from io import open;
- fname = }%
- \ifminted@kpsewhich
- \detokenize{sys.argv[1];}\space
+ \endgroup
+ \minted@codewrapper{%
+ \minted@def@FV@GetKeyValues@standardcatcodes
+ \minted@debug@input
+ \input{\minted@highlightfilepath}}%
+ \ifbool{minted@cache}{\minted@addcachefilename{\minted@highlightfilename}}{}}%
+ {\ifx\minted@exec@warning\relax
\else
- \detokenize{os.path.expanduser(os.path.expandvars(\"}\minted@argone@esc\detokenize{\"));}\space
+ \expandafter\minted@exec@warning
\fi
- \detokenize{f = open(fname, \"r\", encoding=\"}\minted@encoding\detokenize{\") if os.path.isfile(fname) else None;
- t = f.readlines() if f is not None else None;
- t_opt = t if t is not None else [];
- f.close() if f is not None else None;
- tmpfname = os.path.expanduser(os.path.expandvars(\"}\minted@tmpfname@esc.pyg\detokenize{\"));
- f = open(tmpfname, \"w\", encoding=\"}\minted@encoding\detokenize{\") if t is not None else None;
- fvstartnum = }\the\numexpr\FancyVerbStartNum\detokenize{;
- fvstopnum = }\the\numexpr\FancyVerbStopNum\detokenize{;
- s = max(0, fvstartnum-1);
- e = max(s, fvstopnum) if fvstopnum > 0 else len(t_opt);
- [f.write(textwrap.dedent(\"\".join(x))) for x in (t_opt[0:s], t_opt[s:e], t_opt[e:]) if x and t is not None];
- f.close() if t is not None else os.remove(tmpfname);"}%
- \ifminted@kpsewhich
- \ifwindows
- \space\@percentchar\detokenize{a}%
+ \ifx\minted@exec@error\relax
+ \minted@error{Minted executable failed during syntax highlighting
+ but returned no error message (see if "\MintedErrlogFilename" exists)}%
\else
- \space\detokenize{`}kpsewhich #1\space\detokenize{||} #1\detokenize{`}%
+ \expandafter\minted@exec@error
\fi
- \fi
- }%
- \ShellEscape{\minted@autogobblecmd}%
-}
-\newcommand{\minted@inputpyg}{%
- \VerbatimPygments{\PYG}{\PYG}%
- \ifthenelse{\boolean{minted@isinline}}%
- {\ifthenelse{\equal{\minted@get@opt{breaklines}{false}}{true}}%
- {\let\FV@BeginVBox\relax
- \let\FV@EndVBox\relax
- \def\FV@BProcessLine##1{\FancyVerbFormatLine{##1}}%
- \minted@inputpyg@inline}%
- {\minted@inputpyg@inline}}%
- {\minted@inputpyg@block}%
-}
-\def\minted@inputpyg@inline{%
- \ifthenelse{\equal{\minted@get@opt{bgcolor}{}}{}}%
- {\minted@input{\minted@outputdir\minted@infile}}%
- {\colorbox{\minted@get@opt{bgcolor}{}}{%
- \minted@input{\minted@outputdir\minted@infile}}}%
+ \endgroup
+ \minted@highlight@fallback}}}
+\def\minted@highlight@fallback{%
+ \minted@insertplaceholder}
+\begingroup
+\def\minted@set@tempfileextension#1{%
+ \if\relax\detokenize{#1}\relax
+ \else
+ \expandafter\global\expandafter
+ \let\csname minted@buffertempfileextension@#1\endcsname\relax
+ \fi}
+\minted@forcsvlist{\minted@set@tempfileextension}{
+ listing,
+ out,
+ outfile,
+ output,
+ temp,
+ tempfile,
+ tmp,
+ verb,
+ vrb,
}
-\def\minted@inputpyg@block{%
- \ifthenelse{\equal{\minted@get@opt{bgcolor}{}}{}}%
- {\minted@input{\minted@outputdir\minted@infile}}%
- {\begin{minted@colorbg}{\minted@get@opt{bgcolor}{}}%
- \minted@input{\minted@outputdir\minted@infile}%
- \end{minted@colorbg}}}
-\newcommand{\minted@langlinenoson}{%
- \ifcsname c@minted@lang\minted@lang\endcsname\else
- \newcounter{minted@lang\minted@lang}%
+\endgroup
+\begingroup
+\catcode`\/=12
+\catcode`\.=12
+\gdef\minted@iffasthighlightmode@buffertempfile{%
+ \ifbool{minted@fasthighlightmode}%
+ {\ifcsname minted@inputfilepath\endcsname
+ \expandafter\@firstofone
+ \else
+ \expandafter\@gobble
+ \fi
+ {\expandafter
+ \minted@iffasthighlightmode@buffertempfile@i\minted@inputfilepath/\FV@Sentinel}}%
+ {}}
+\gdef\minted@iffasthighlightmode@buffertempfile@i#1/#2\FV@Sentinel{%
+ \if\relax\detokenize{#2}\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
\fi
- \setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}%
- \setcounter{FancyVerbLine}{\value{minted@lang\minted@lang}}%
-}
-\newcommand{\minted@langlinenosoff}{%
- \setcounter{minted@lang\minted@lang}{\value{FancyVerbLine}}%
- \setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}%
-}
-\ifbool{minted@langlinenos}{}{%
- \ifbool{minted@inputlanglinenos}{}{%
- \let\minted@langlinenoson\relax
- \let\minted@langlinenosoff\relax
- }
-}
-\ifbool{minted@inputlanglinenos}%
- {\def\minted@inputlanglinenoson{\minted@langlinenoson}%
- \def\minted@inputlanglinenosoff{\minted@langlinenosoff}}%
- {\let\minted@inputlanglinenoson\relax
- \let\minted@inputlanglinenosoff\relax}
+ {\minted@iffasthighlightmode@buffertempfile@ii#1.\FV@Sentinel}%
+ {\minted@iffasthighlightmode@buffertempfile@i#2\FV@Sentinel}}
+\gdef\minted@iffasthighlightmode@buffertempfile@ii#1.#2\FV@Sentinel{%
+ \if\relax\detokenize{#2}\relax
+ \expandafter\@gobble
+ \else
+ \expandafter\@firstofone
+ \fi
+ {\minted@iffasthighlightmode@buffertempfile@iii#2\FV@Sentinel}}
+\gdef\minted@iffasthighlightmode@buffertempfile@iii#1.\FV@Sentinel{%
+ \ifcsname minted@buffertempfileextension@#1\endcsname
+ \expandafter\@firstofone
+ \else
+ \expandafter\@gobble
+ \fi
+ {\minted@iffasthighlightmode@buffertempfile@iv}}
+\endgroup
+\def\minted@iffasthighlightmode@buffertempfile@iv{%
+ \begingroup
+ \gdef\minted@tmpcodebufferlength{0}%
+ \openin\minted@intempfile=\minted@inputfilepath
+ \endlinechar=-1%
+ \let\do\@makeother\FVExtraDoSpecials
+ \loop\unless\ifeof\minted@intempfile
+ \read\minted@intempfile to\minted@intempfileline
+ \xdef\minted@tmpcodebufferlength{\the\numexpr\minted@tmpcodebufferlength+1\relax}%
+ \expandafter\global\expandafter\let\csname
+ minted@tmpcodebufferline\minted@tmpcodebufferlength
+ \endcsname\minted@intempfileline
+ \repeat
+ \closein\minted@intempfile
+ \expandafter\ifx\csname
+ minted@tmpcodebufferline\minted@tmpcodebufferlength\endcsname\@empty
+ \expandafter\global\expandafter\let\csname
+ minted@tmpcodebufferline\minted@tmpcodebufferlength\endcsname\minted@undefined
+ \xdef\minted@tmpcodebufferlength{\the\numexpr\minted@tmpcodebufferlength-1\relax}%
+ \fi
+ \endgroup
+ \edef\minted@inputfilemdfivesum@check{\pdf@filemdfivesum{\minted@inputfilepath}}%
+ \ifx\minted@inputfilemdfivesum@check\minted@inputfilemdfivesum
+ \expandafter\@gobble
+ \else
+ \expandafter\@firstofone
+ \fi
+ {\VerbatimClearBuffer[buffername=minted@tmpcodebuffer]}%
+ \ifnum\minted@tmpcodebufferlength>0\relax
+ \expandafter\@firstofone
+ \else
+ \expandafter\@gobble
+ \fi
+ {\minted@iffasthighlightmode@buffertempfile@v}}
+\def\minted@iffasthighlightmode@buffertempfile@v{%
+ \pydatabufferkey{code}%
+ \pydatabuffermlvaluestart
+ \gdef\minted@tempindex{1}%
+ \loop\unless\ifnum\minted@tempindex>\minted@tmpcodebufferlength\relax
+ \expandafter\let\expandafter
+ \minted@tmp\csname minted@tmpcodebufferline\minted@tempindex\endcsname
+ \expandafter\pydatabuffermlvalueline\expandafter{\minted@tmp}%
+ \xdef\minted@tempindex{\the\numexpr\minted@tempindex+1\relax}%
+ \repeat
+ \pydatabuffermlvalueend
+ \VerbatimClearBuffer[buffername=minted@tmpcodebuffer]}
\newcommand{\setminted}[2][]{%
- \ifthenelse{\equal{#1}{}}%
- {\setkeys{minted@opt@g}{#2}}%
- {\minted@configlang{#1}%
- \setkeys{minted@opt@lang}{#2}}}
+ \ifstrempty{#1}%
+ {\pgfkeys{/minted/global/.cd,#2}}%
+ {\let\minted@tmplexer\minted@lexer
+ \edef\minted@lexer{#1}%
+ \pgfkeys{/minted/lexer/.cd,#2}%
+ \let\minted@lexer\minted@tmplexer}}
\newcommand{\setmintedinline}[2][]{%
- \ifthenelse{\equal{#1}{}}%
- {\setkeys{minted@opt@g@i}{#2}}%
- {\minted@configlang{#1}%
- \setkeys{minted@opt@lang@i}{#2}}}
-\setmintedinline[php]{startinline=true}
-\setminted{tabcolor=black}
-\setminted{stripnl=false}
-\newcommand{\usemintedstyle}[2][]{\setminted[#1]{style=#2}}
-\begingroup
-\catcode`\ =\active
-\catcode`\^^I=\active
-\gdef\minted@defwhitespace@retok{\def {\noexpand\FV@Space}\def^^I{\noexpand\FV@Tab}}%
-\endgroup
-\newcommand{\minted@writecmdcode}[1]{%
- \immediate\openout\minted@code\minted@jobname.pyg\relax
- \immediate\write\minted@code{\detokenize{#1}}%
- \immediate\closeout\minted@code}
+ \ifstrempty{#1}%
+ {\pgfkeys{/minted/globalinline/.cd,#2}}%
+ {\let\minted@tmplexer\minted@lexer
+ \edef\minted@lexer{#1}%
+ \pgfkeys{/minted/lexerinline/.cd,#2}%
+ \let\minted@lexer\minted@tmplexer}}
+\newcommand{\usemintedstyle}[2][]{\setminted[#1]{style={#2}}}
\def\mintinline{%
\FVExtraRobustCommand\RobustMintInline\FVExtraUnexpandedReadStarOArgMArgBVArg}
\FVExtrapdfstringdefDisableCommands{%
@@ -1028,31 +1646,51 @@
\ifbool{FVExtraRobustCommandExpanded}%
{\@ifnextchar\bgroup
{\FVExtraReadVArg{\RobustMintInlineProcess{#1}{#2}}}%
- {\PackageError{minted}%
- {Inline delimiters must be paired curly braces in this context}%
- {Use curly braces as delimiters}}}%
+ {\minted@error{Inline delimiters must be paired curly braces in this context}}}%
{\FVExtraReadVArg{\RobustMintInlineProcess{#1}{#2}}}}
-\def\RobustMintInlineProcess#1#2#3{%
+\def\RobustMintInlineProcess@highlight#1#2#3{%
\begingroup
- \setboolean{minted@isinline}{true}%
- \minted@configlang{#2}%
- \setkeys{minted@opt@cmd}{#1}%
- \minted@fvset
- \RobustMintInlineProcess@i{#3}}
-\ifthenelse{\boolean{minted@draft}}%
- {\def\RobustMintInlineProcess@i#1{%
- \fvset{extra=true}%
- \Verb{#1}%
- \endgroup}}%
- {\def\RobustMintInlineProcess@i#1{%
- \FVExtraDetokenizeVArg{%
- \FVExtraRetokenizeVArg{\RobustMintInlineProcess@ii}{\FV@CatCodes}}{#1}}
- \def\RobustMintInlineProcess@ii#1{%
- \minted@writecmdcode{#1}%
- \let\Verbatim\VerbEnv
- \let\endVerbatim\endVerbEnv
- \expandafter\minted@pygmentize\expandafter{\minted@lang}%
- \endgroup}}
+ \booltrue{minted@isinline}%
+ \ifstrempty{#1}{}{\pgfkeys{/minted/cmd/.cd,#1}}%
+ \edef\minted@lexer{#2}%
+ \minted@usefvopts
+ \minted@usetexoptsnonpygments
+ \FVExtraDetokenizeVArg{%
+ \FVExtraRetokenizeVArg{\RobustMintInlineProcess@highlight@i}{\FV@CatCodes}}{#3}}
+\def\RobustMintInlineProcess@highlight@i#1{%
+ \expandafter\def\csname minted@tmpcodebufferline1\endcsname{#1}%
+ \gdef\minted@tmpcodebufferlength{1}%
+ \let\minted@highlight@fallback\RobustMintInlineProcess@highlight@fallback
+ \minted@highlight
+ \gdef\minted@tmpcodebufferlength{0}%
+ \endgroup}
+\def\RobustMintInlineProcess@highlight@fallback{%
+ \minted@useadditionalfvoptsnopy
+ \fvset{extra=true}%
+ \minted@codewrapper{%
+ \expandafter\let\expandafter\minted@tmp\csname minted@tmpcodebufferline1\endcsname
+ \expandafter\Verb\expandafter{\minted@tmp}}}
+\def\RobustMintInlineProcess@placeholder#1#2#3{%
+ \begingroup
+ \booltrue{minted@isinline}%
+ \minted@insertplaceholder
+ \endgroup}
+\def\RobustMintInlineProcess@verbatim#1#2#3{%
+ \begingroup
+ \booltrue{minted@isinline}%
+ \ifstrempty{#1}{}{\pgfkeys{/minted/cmd/.cd,#1}}%
+ \edef\minted@lexer{#2}%
+ \minted@usefvopts
+ \minted@useadditionalfvoptsnopy
+ \minted@usetexoptsnonpygments
+ \fvset{extra=true}%
+ \minted@codewrapper{\Verb{#3}}%
+ \endgroup}
+\ifbool{minted@placeholder}%
+ {\let\RobustMintInlineProcess\RobustMintInlineProcess@placeholder}%
+ {\ifbool{minted@verbatim}%
+ {\let\RobustMintInlineProcess\RobustMintInlineProcess@verbatim}%
+ {\let\RobustMintInlineProcess\RobustMintInlineProcess@highlight}}
\def\mint{%
\FVExtraRobustCommand\RobustMint\FVExtraUnexpandedReadStarOArgMArgBVArg}
\FVExtrapdfstringdefDisableCommands{%
@@ -1061,110 +1699,165 @@
\ifbool{FVExtraRobustCommandExpanded}%
{\@ifnextchar\bgroup
{\FVExtraReadVArg{\RobustMintProcess{#1}{#2}}}%
- {\PackageError{minted}%
- {Delimiters must be paired curly braces in this context}%
- {Use curly braces as delimiters}}}%
+ {\minted@error{Delimiters must be paired curly braces in this context}}}%
{\FVExtraReadVArg{\RobustMintProcess{#1}{#2}}}}
-\def\RobustMintProcess#1#2#3{%
+\def\RobustMintProcess@highlight#1#2#3{%
+ \begingroup
+ \ifstrempty{#1}{}{\pgfkeys{/minted/cmd/.cd,#1}}%
+ \edef\minted@lexer{#2}%
+ \minted@usefvopts
+ \minted@usetexoptsnonpygments
+ \FVExtraDetokenizeVArg{%
+ \FVExtraRetokenizeVArg{\RobustMintProcess@highlight@i}{\FV@CatCodes}}{#3}}
+\def\RobustMintProcess@highlight@i#1{%
+ \expandafter\def\csname minted@tmpcodebufferline1\endcsname{#1}%
+ \gdef\minted@tmpcodebufferlength{1}%
+ \let\minted@highlight@fallback\RobustMintProcess@highlight@fallback
+ \minted@highlight
+ \gdef\minted@tmpcodebufferlength{0}%
+ \endgroup}
+\def\RobustMintProcess@highlight@fallback{%
+ \minted@useadditionalfvoptsnopy
+ \minted@codewrapper{%
+ \VerbatimInsertBuffer[buffername=minted@tmpcodebuffer,insertenvname=\minted@envname]}}
+\def\RobustMintProcess@placeholder#1#2#3{%
+ \minted@insertplaceholder}
+\def\RobustMintProcess@verbatim#1#2#3{%
+ \begingroup
+ \ifstrempty{#1}{}{\pgfkeys{/minted/cmd/.cd,#1}}%
+ \edef\minted@lexer{#2}%
+ \minted@usefvopts
+ \minted@useadditionalfvoptsnopy
+ \minted@usetexoptsnonpygments
+ \FVExtraDetokenizeVArg{%
+ \FVExtraRetokenizeVArg{\RobustMintProcess@verbatim@i}{\FV@CatCodes}}{#3}}
+\def\RobustMintProcess@verbatim@i#1{%
+ \expandafter\def\csname minted@tmpcodebufferline1\endcsname{#1}%
+ \gdef\minted@tmpcodebufferlength{1}%
+ \minted@codewrapper{%
+ \VerbatimInsertBuffer[buffername=minted@tmpcodebuffer,insertenvname=\minted@envname]}%
+ \gdef\minted@tmpcodebufferlength{0}%
+ \endgroup}
+\ifbool{minted@placeholder}%
+ {\let\RobustMintProcess\RobustMintProcess@placeholder}%
+ {\ifbool{minted@verbatim}%
+ {\let\RobustMintProcess\RobustMintProcess@verbatim}%
+ {\let\RobustMintProcess\RobustMintProcess@highlight}}
+\newenvironment{minted}[2][]%
+ {\VerbatimEnvironment
+ \MintedBegin{#1}{#2}}%
+ {\MintedEnd}
+\def\MintedBegin@highlight#1#2{%
+ \ifstrempty{#1}{}{\pgfkeys{/minted/cmd/.cd,#1}}%
+ \edef\minted@lexer{#2}%
+ \minted@usefvopts
+ \minted@usetexoptsnonpygments
+ \begin{VerbatimBuffer}[buffername=minted@tmpcodebuffer,globalbuffer=true]}
+\def\MintedEnd@highlight{%
+ \end{VerbatimBuffer}%
+ \let\minted@highlight@fallback\MintedEnv@highlight@fallback
+ \minted@highlight
+ \VerbatimClearBuffer[buffername=minted@tmpcodebuffer]}
+\def\MintedEnv@highlight@fallback{%
+ \minted@useadditionalfvoptsnopy
+ \minted@codewrapper{%
+ \VerbatimInsertBuffer[buffername=minted@tmpcodebuffer,insertenvname=\minted@envname]}}
+\def\MintedBegin@placeholder#1#2{%
+ \begin{VerbatimBuffer}[buffername=minted@tmpcodebuffer]}
+\def\MintedEnd@placeholder{%
+ \end{VerbatimBuffer}%
+ \minted@insertplaceholder}
+\def\MintedBegin@verbatim#1#2{%
+ \ifstrempty{#1}{}{\pgfkeys{/minted/cmd/.cd,#1}}%
+ \edef\minted@lexer{#2}%
+ \minted@usefvopts
+ \minted@useadditionalfvoptsnopy
+ \minted@usetexoptsnonpygments
+ \begin{\minted@envname}}
+\def\MintedEnd@verbatim{%
+ \end{\minted@envname}}
+\ifbool{minted@placeholder}%
+ {\let\MintedBegin\MintedBegin@placeholder
+ \let\MintedEnd\MintedEnd@placeholder}%
+ {\ifbool{minted@verbatim}%
+ {\let\MintedBegin\MintedBegin@verbatim
+ \let\MintedEnd\MintedEnd@verbatim}%
+ {\let\MintedBegin\MintedBegin@highlight
+ \let\MintedEnd\MintedEnd@highlight}}
+\def\minted@readinputmintedargs#1#{%
+ \minted@readinputmintedargs@i{#1}}
+\def\minted@readinputmintedargs@i#1#2#3{%
+ \FVExtraAlwaysUnexpanded{\minted@readinputmintedargs#1{#2}{#3}}}
+\FVExtrapdfstringdefDisableCommands{%
+ \makeatletter
+ \def\minted@readinputmintedargs@i#1#2#3{%
+ \detokenize{<input from file "}#3\detokenize{">}}%
+ \makeatother}
+\def\inputminted{%
+ \FVExtraRobustCommand\RobustInputMinted\minted@readinputmintedargs}
+\FVExtrapdfstringdefDisableCommands{%
+ \def\RobustInputMinted{}}
+\newrobustcmd{\RobustInputMinted}[3][]{%
+ \RobustInputMintedProcess{#1}{#2}{#3}}
+\def\RobustInputMintedProcess@highlight#1#2#3{%
+ \begingroup
+ \ifstrempty{#1}{}{\pgfkeys{/minted/cmd/.cd,#1}}%
+ \edef\minted@lexer{#2}%
+ \edef\minted@inputfilepath{#3}%
+ \minted@usefvopts
+ \minted@usetexoptsnonpygments
+ \let\minted@highlight@fallback\RobustInputMintedProcess@highlight@fallback
+ \minted@highlightinputfile
+ \endgroup}
+\def\RobustInputMintedProcess@highlight@fallback{%
+ \minted@useadditionalfvoptsnopy
+ \minted@codewrapper{%
+ \csname\minted@envname Input\endcsname{\minted@inputfilepath}}}
+\def\RobustInputMintedProcess@placeholder#1#2#3{%
+ \minted@insertplaceholder}
+\def\RobustInputMintedProcess@verbatim#1#2#3{%
\begingroup
- \minted@configlang{#2}%
- \setkeys{minted@opt@cmd}{#1}%
- \minted@fvset
- \RobustMintProcess@i{#3}}
+ \ifstrempty{#1}{}{\pgfkeys{/minted/cmd/.cd,#1}}%
+ \edef\minted@lexer{#2}%
+ \edef\minted@inputfilepath{#3}%
+ \minted@usefvopts
+ \minted@useadditionalfvoptsnopy
+ \minted@usetexoptsnonpygments
+ \minted@codewrapper{%
+ \csname\minted@envname Input\endcsname{\minted@inputfilepath}}%
+ \endgroup}
+\ifbool{minted@placeholder}%
+ {\let\RobustInputMintedProcess\RobustInputMintedProcess@placeholder}%
+ {\ifbool{minted@verbatim}%
+ {\let\RobustInputMintedProcess\RobustInputMintedProcess@verbatim}%
+ {\let\RobustInputMintedProcess\RobustInputMintedProcess@highlight}}
+\newcommand{\newminted}[3][]{%
+ \ifstrempty{#1}%
+ {\newminted@i{#2code}{#2}{#3}}%
+ {\newminted@i{#1}{#2}{#3}}}
\begingroup
\catcode`\^^M=\active%
-\catcode`\<=1%
-\catcode`\>=2%
-\catcode`\{=12%
-\catcode`\}=12%
-\catcode`\!=0%
-\catcode`\\=12%
-!ifthenelse<!boolean<minted@draft>>%
- <!gdef!RobustMintProcess@i#1<%
- !FVExtraDetokenizeVArg<%
- !FVExtraRetokenizeVArg<!RobustMintProcess@ii><!FV@CatCodes>><#1>>%
- !gdef!RobustMintProcess@ii#1<%
- !minted@langlinenoson%
- !scantokens<%
- \begin{Verbatim}
- #1
- \end{Verbatim}
- !noexpand>%
- !minted@langlinenosoff%
- !endgroup!@doendpe>>%
- <!gdef!RobustMintProcess@i#1<%
- !FVExtraDetokenizeVArg<%
- !FVExtraRetokenizeVArg<!RobustMintProcess@ii><!FV@CatCodes>><#1>>%
- !gdef!RobustMintProcess@ii#1<%
- !minted@writecmdcode<#1>%
- !minted@langlinenoson%
- !expandafter!minted@pygmentize!expandafter<!minted@lang>%
- !minted@langlinenosoff%
- !endgroup!@doendpe>>%
-!endgroup
-\ifthenelse{\boolean{minted@draft}}%
- {\newenvironment{minted}[2][]
- {\VerbatimEnvironment
- \minted@configlang{#2}%
- \setkeys{minted@opt@cmd}{#1}%
- \minted@fvset
- \minted@langlinenoson
- \begin{Verbatim}}%
- {\end{Verbatim}%
- \minted@langlinenosoff}}%
- {\newenvironment{minted}[2][]
- {\VerbatimEnvironment
- \let\FVB@VerbatimOut\minted@FVB@VerbatimOut
- \let\FVE@VerbatimOut\minted@FVE@VerbatimOut
- \minted@configlang{#2}%
- \setkeys{minted@opt@cmd}{#1}%
- \minted@fvset
- \begin{VerbatimOut}[codes={\catcode`\^^I=12},firstline,lastline]{\minted@jobname.pyg}}%
- {\end{VerbatimOut}%
- \minted@langlinenoson
- \expandafter\minted@pygmentize\expandafter{\minted@lang}%
- \minted@langlinenosoff}}
-\ifthenelse{\boolean{minted@draft}}%
- {\newcommand{\inputminted}[3][]{%
- \begingroup
- \minted@configlang{#2}%
- \setkeys{minted@opt@cmd}{#1}%
- \minted@fvset
- \minted@inputlanglinenoson
- \VerbatimInput{#3}%
- \minted@inputlanglinenosoff
- \endgroup}}%
- {\newcommand{\inputminted}[3][]{%
- \begingroup
- \minted@configlang{#2}%
- \setkeys{minted@opt@cmd}{#1}%
- \minted@fvset
- \minted@inputlanglinenoson
- \minted@pygmentize[#3]{#2}%
- \minted@inputlanglinenosoff
- \endgroup}}
-\newcommand{\newminted}[3][]{
- \ifthenelse{\equal{#1}{}}
- {\def\minted@envname{#2code}}
- {\def\minted@envname{#1}}
- \newenvironment{\minted@envname}
- {\VerbatimEnvironment
- \begin{minted}[#3]{#2}}
- {\end{minted}}
- \newenvironment{\minted@envname *}[1]
- {\VerbatimEnvironment\begin{minted}[#3,##1]{#2}}
- {\end{minted}}}
+\gdef\newminted@i#1#2#3{%
+ \expandafter\def\csname#1@i\endcsname##1{%
+ \begin{minted}[#3,##1]{#2}^^M}%
+ \newenvironment{#1}%
+ {\VerbatimEnvironment%
+ \FVExtraReadOArgBeforeVEnv{\csname#1@i\endcsname}}%
+ {\end{minted}}%
+ \newenvironment{#1*}[1]%
+ {\VerbatimEnvironment%
+ \begin{minted}[#3,##1]{#2}}%
+ {\end{minted}}}%
+\endgroup
\newcommand{\newmint}[3][]{%
- \if\relax\detokenize{#1}\relax
- \def\minted@shortname{#2}%
- \else
- \def\minted@shortname{#1}%
- \fi
- \expandafter\newmint@i\expandafter{\minted@shortname}{#2}{#3}}
+ \ifstrempty{#1}%
+ {\edef\minted@tmp{#2}}%
+ {\edef\minted@tmp{#1}}
+ \expandafter\newmint@i\expandafter{\minted@tmp}{#2}{#3}}
\def\newmint@i#1#2#3{%
\expandafter\newcommand\csname#1\endcsname{%
\expandafter\FVExtraRobustCommand\csname RobustNewMint#1\endcsname
- \FVExtraUnexpandedReadStarOArgBVArg}%
+ \FVExtraUnexpandedReadStarOArgBVArg}%
\FVExtrapdfstringdefDisableCommands{%
\expandafter\def\csname RobustNewMint#1\endcsname{}}%
\expandafter\newrobustcmd\csname RobustNewMint#1\endcsname{%
@@ -1173,29 +1866,41 @@
\ifbool{FVExtraRobustCommandExpanded}%
{\@ifnextchar\bgroup
{\FVExtraReadVArg{\csname RobustNewMint#1@ii\endcsname{##1}}}%
- {\PackageError{minted}%
- {Delimiters must be paired curly braces in this context}%
- {Use curly braces as delimiters}}}%
+ {\minted@error{Delimiters must be paired curly braces in this context}}}%
{\FVExtraReadVArg{\csname RobustNewMint#1@ii\endcsname{##1}}}}
\expandafter\def\csname RobustNewMint#1@ii\endcsname##1##2{%
\RobustMintProcess{#3,##1}{#2}{##2}}}
-\newcommand{\newmintedfile}[3][]{
- \ifthenelse{\equal{#1}{}}
- {\def\minted@shortname{#2file}}
- {\def\minted@shortname{#1}}
- \expandafter\newcommand\csname\minted@shortname\endcsname[2][]{
- \inputminted[#3,##1]{#2}{##2}}}
+\def\minted@readnewmintedfileargs#1#{%
+ \minted@readnewmintedfileargs@i{#1}}
+\def\minted@readnewmintedfileargs@i#1#2{%
+ \FVExtraAlwaysUnexpanded{\minted@readnewmintedfileargs#1{#2}}}
+\FVExtrapdfstringdefDisableCommands{%
+ \makeatletter
+ \def\minted@readnewmintedfileargs@i#1#2{%
+ \detokenize{<input from file "}#2\detokenize{">}}%
+ \makeatother}
+\newcommand{\newmintedfile}[3][]{%
+ \ifstrempty{#1}%
+ {\edef\minted@tmp{#2file}}%
+ {\edef\minted@tmp{#1}}%
+ \expandafter\newmintedfile@i\expandafter{\minted@tmp}{#2}{#3}}
+\def\newmintedfile@i#1#2#3{%
+ \expandafter\newcommand\csname#1\endcsname{%
+ \expandafter\FVExtraRobustCommand\csname RobustNewMintedFile#1\endcsname
+ \minted@readnewmintedfileargs}%
+ \FVExtrapdfstringdefDisableCommands{%
+ \expandafter\def\csname RobustNewMintedFile#1\endcsname{}}%
+ \expandafter\newrobustcmd\csname RobustNewMintedFile#1\endcsname[2][]{%
+ \RobustInputMintedProcess{#3,##1}{#2}{##2}}}
\newcommand{\newmintinline}[3][]{%
- \if\relax\detokenize{#1}\relax
- \def\minted@shortname{#2inline}%
- \else
- \def\minted@shortname{#1}%
- \fi
- \expandafter\newmintinline@i\expandafter{\minted@shortname}{#2}{#3}}
+ \ifstrempty{#1}%
+ {\edef\minted@tmp{#2inline}}%
+ {\edef\minted@tmp{#1}}%
+ \expandafter\newmintinline@i\expandafter{\minted@tmp}{#2}{#3}}
\def\newmintinline@i#1#2#3{%
\expandafter\newcommand\csname#1\endcsname{%
\expandafter\FVExtraRobustCommand\csname RobustNewMintInline#1\endcsname
- \FVExtraUnexpandedReadStarOArgBVArg}%
+ \FVExtraUnexpandedReadStarOArgBVArg}%
\FVExtrapdfstringdefDisableCommands{%
\expandafter\def\csname RobustNewMintInline#1\endcsname{}}%
\expandafter\newrobustcmd\csname RobustNewMintInline#1\endcsname{%
@@ -1204,71 +1909,25 @@
\ifbool{FVExtraRobustCommandExpanded}%
{\@ifnextchar\bgroup
{\FVExtraReadVArg{\csname RobustNewMintInline#1@ii\endcsname{##1}}}%
- {\PackageError{minted}%
- {Inline delimiters must be paired curly braces in this context}%
- {Use curly braces as delimiters}}}%
+ {\minted@error{Inline delimiters must be paired curly braces in this context}}}%
{\FVExtraReadVArg{\csname RobustNewMintInline#1@ii\endcsname{##1}}}}
\expandafter\def\csname RobustNewMintInline#1@ii\endcsname##1##2{%
\RobustMintInlineProcess{#3,##1}{#2}{##2}}}
-\ifthenelse{\boolean{minted@newfloat}}%
+\ifbool{minted@newfloat}%
{\@ifundefined{minted@float@within}%
- {\DeclareFloatingEnvironment[fileext=lol,placement=tbp]{listing}}%
- {\def\minted@tmp#1{%
- \DeclareFloatingEnvironment[fileext=lol,placement=tbp, within=#1]{listing}}%
- \expandafter\minted@tmp\expandafter{\minted@float@within}}}%
+ {\DeclareFloatingEnvironment[fileext=lol,placement=tbp]{listing}}%
+ {\def\minted@tmp#1{%
+ \DeclareFloatingEnvironment[fileext=lol,placement=tbp,within=#1]{listing}}%
+ \expandafter\minted@tmp\expandafter{\minted@float@within}}}%
{\@ifundefined{minted@float@within}%
- {\newfloat{listing}{tbp}{lol}}%
- {\newfloat{listing}{tbp}{lol}[\minted@float@within]}}
+ {\newfloat{listing}{tbp}{lol}}%
+ {\newfloat{listing}{tbp}{lol}[\minted@float@within]}}
\ifminted@newfloat\else
\newcommand{\listingscaption}{Listing}
\floatname{listing}{\listingscaption}
\newcommand{\listoflistingscaption}{List of Listings}
\providecommand{\listoflistings}{\listof{listing}{\listoflistingscaption}}
\fi
-\AtEndOfPackage{%
- \ifthenelse{\boolean{minted@draft}}%
- {}%
- {%
- \ifthenelse{\boolean{minted@frozencache}}{}{%
- \ifnum\pdf@shellescape=1\relax\else
- \PackageError{minted}%
- {You must invoke LaTeX with the
- -shell-escape flag}%
- {Pass the -shell-escape flag to LaTeX. Refer to the minted.sty
- documentation for more information.}%
- \fi}%
- }%
-}
-\AtEndPreamble{%
- \ifthenelse{\boolean{minted@draft}}%
- {}%
- {%
- \ifthenelse{\boolean{minted@frozencache}}{}{%
- \TestAppExists{\MintedPygmentize}%
- \ifAppExists\else
- \PackageError{minted}%
- {You must have `pygmentize' installed
- to use this package}%
- {Refer to the installation instructions in the minted
- documentation for more information.}%
- \fi}%
- }%
-}
-\AfterEndDocument{%
- \ifthenelse{\boolean{minted@draft}}%
- {}%
- {\ifthenelse{\boolean{minted@frozencache}}%
- {}
- {\ifx\XeTeXinterchartoks\minted@undefined
- \else
- \DeleteFile[\minted@outputdir]{\minted@jobname.mintedcmd}%
- \DeleteFile[\minted@outputdir]{\minted@jobname.mintedmd5}%
- \fi
- \DeleteFile[\minted@outputdir]{\minted@jobname.pyg}%
- \DeleteFile[\minted@outputdir]{\minted@jobname.out.pyg}%
- }%
- }%
-}
\endinput
%%
%% End of file `minted.sty'.
diff --git a/Master/texmf-dist/tex/latex/minted/minted2.sty b/Master/texmf-dist/tex/latex/minted/minted2.sty
new file mode 100644
index 00000000000..e2431e47143
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/minted/minted2.sty
@@ -0,0 +1,1285 @@
+%%
+%% This is file `minted2.sty'.
+%%
+%% Copyright 2013--2024 Geoffrey M. Poore
+%% Copyright 2010--2011 Konrad Rudolph
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% Additionally, the project may be distributed under the terms of the new BSD
+%% license.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Geoffrey Poore.
+%%
+%% This work consists of the file minted2.sty.
+\NeedsTeXFormat{LaTeX2e}
+%%%% Begin minted2 modification
+%% \ProvidesPackage{minted}
+%% [2023/12/18 v2.9 Yet another Pygments shim for LaTeX]
+\ProvidesPackage{minted2}
+ [2024/05/09 v2.9 Yet another Pygments shim for LaTeX]
+\IfPackageLoadedTF{minted}%
+ {\PackageError{minted2}%
+ {Packages minted and minted2 cannot be loaded at the same time}{}%
+ \endinput}%
+ {}
+\@namedef{ver@minted.sty}{2023/12/18 v2.9 Yet another Pygments shim for LaTeX}
+\expandafter\let\expandafter\minted@tmp\csname opt@minted2.sty\endcsname
+\expandafter\let\csname opt@minted.sty\endcsname\minted@tmp
+\let\minted@tmp\relax
+%%%% End minted2 modification
+\RequirePackage{keyval}
+\RequirePackage{kvoptions}
+%%%% Begin minted2 modification
+\SetupKeyvalOptions{family=minted, prefix=minted@}
+%%%% End minted2 modification
+\RequirePackage{fvextra}[2022/11/30]
+\RequirePackage{ifthen}
+\IfFileExists{shellesc.sty}
+ {\RequirePackage{shellesc}
+ \@ifpackagelater{shellesc}{2016/04/29}
+ {}
+ {\protected\def\ShellEscape{\immediate\write18 }}}
+ {\protected\def\ShellEscape{\immediate\write18 }}
+\RequirePackage{ifplatform}
+\RequirePackage{pdftexcmds}
+\RequirePackage{etoolbox}
+\RequirePackage{xstring}
+\RequirePackage{lineno}
+\RequirePackage{framed}
+\RequirePackage{catchfile}
+\AtEndPreamble{%
+ \@ifpackageloaded{color}{}{%
+ \@ifpackageloaded{xcolor}{}{\RequirePackage{xcolor}}}%
+}
+\DeclareVoidOption{chapter}{\def\minted@float@within{chapter}}
+\DeclareVoidOption{section}{\def\minted@float@within{section}}
+\DeclareBoolOption{newfloat}
+\DeclareBoolOption[true]{cache}
+\StrSubstitute{\jobname}{ }{_}[\minted@jobname]
+\StrSubstitute{\minted@jobname}{*}{_}[\minted@jobname]
+\StrSubstitute{\minted@jobname}{"}{}[\minted@jobname]
+\StrSubstitute{\minted@jobname}{'}{_}[\minted@jobname]
+\newcommand{\minted@cachedir}{\detokenize{_}minted-\minted@jobname}
+\let\minted@cachedir@windows\minted@cachedir
+\define@key{minted}{cachedir}{%
+ \@namedef{minted@cachedir}{#1}%
+ \StrSubstitute{\minted@cachedir}{/}{\@backslashchar}[\minted@cachedir@windows]}
+\DeclareBoolOption{finalizecache}
+\DeclareBoolOption{frozencache}
+\let\minted@outputdir\@empty
+\let\minted@outputdir@windows\@empty
+\define@key{minted}{outputdir}{%
+ \@namedef{minted@outputdir}{#1/}%
+ \StrSubstitute{\minted@outputdir}{/}%
+ {\@backslashchar}[\minted@outputdir@windows]}
+\DeclareBoolOption{inputlanglinenos}
+\DeclareBoolOption{kpsewhich}
+\DeclareBoolOption{langlinenos}
+\DeclareBoolOption{draft}
+\DeclareComplementaryOption{final}{draft}
+\ProcessKeyvalOptions*
+\ifthenelse{\boolean{minted@newfloat}}{\RequirePackage{newfloat}}{\RequirePackage{float}}
+\ifcsname tikzifexternalizing\endcsname
+ \tikzifexternalizing{\minted@drafttrue\minted@cachefalse}{}
+\else
+ \ifcsname tikzexternalrealjob\endcsname
+ \minted@drafttrue
+ \minted@cachefalse
+ \else
+ \fi
+\fi
+\ifthenelse{\boolean{minted@finalizecache}}%
+ {\ifthenelse{\boolean{minted@frozencache}}%
+ {\PackageError{minted}%
+ {Options "finalizecache" and "frozencache" are not compatible}%
+ {Options "finalizecache" and "frozencache" are not compatible}}%
+ {}}%
+ {}
+\ifthenelse{\boolean{minted@cache}}%
+ {\ifthenelse{\boolean{minted@frozencache}}%
+ {}%
+ {\AtEndOfPackage{\ProvideDirectory{\minted@outputdir\minted@cachedir}}}}%
+ {}
+\newcommand{\minted@input}[1]{%
+ \IfFileExists{#1}%
+ {\input{#1}}%
+ {\PackageError{minted}{Missing Pygments output; \string\inputminted\space
+ was^^Jprobably given a file that does not exist--otherwise, you may need
+ ^^Jthe outputdir package option, or may be using an incompatible build
+ tool,^^Jor may be using frozencache with a missing file}%
+ {This could be caused by using -output-directory or -aux-directory
+ ^^Jwithout setting minted's outputdir, or by using a build tool that
+ ^^Jchanges paths in ways minted cannot detect,
+ ^^Jor using frozencache with a missing file.}}%
+}
+\newcommand{\minted@infile}{\minted@jobname.out.pyg}
+\newcommand{\minted@cachelist}{}
+\newcommand{\minted@addcachefile}[1]{%
+ \expandafter\long\expandafter\gdef\expandafter\minted@cachelist\expandafter{%
+ \minted@cachelist,^^J%
+ \space\space#1}%
+ \expandafter\gdef\csname minted@cached@#1\endcsname{}%
+}
+\newcommand{\minted@savecachelist}{%
+ \ifdefempty{\minted@cachelist}{}{%
+ \immediate\write\@mainaux{%
+ \string\gdef\string\minted@oldcachelist\string{%
+ \minted@cachelist\string}}%
+ }%
+}
+\newcommand{\minted@cleancache}{%
+ \ifcsname minted@oldcachelist\endcsname
+ \def\do##1{%
+ \ifthenelse{\equal{##1}{}}{}{%
+ \ifcsname minted@cached@##1\endcsname\else
+ \DeleteFile[\minted@outputdir\minted@cachedir]{##1}%
+ \fi
+ }%
+ }%
+ \expandafter\docsvlist\expandafter{\minted@oldcachelist}%
+ \else
+ \fi
+}
+\ifthenelse{\boolean{minted@draft}}%
+ {\AtEndDocument{%
+ \ifcsname minted@oldcachelist\endcsname
+ \StrSubstitute{\minted@oldcachelist}{,}{,^^J }[\minted@cachelist]
+ \minted@savecachelist
+ \fi}}%
+ {\ifthenelse{\boolean{minted@frozencache}}%
+ {\AtEndDocument{%
+ \ifcsname minted@oldcachelist\endcsname
+ \StrSubstitute{\minted@oldcachelist}{,}{,^^J }[\minted@cachelist]
+ \minted@savecachelist
+ \fi}}%
+ {\AtEndDocument{%
+ \minted@savecachelist
+ \minted@cleancache}}}%
+\ifwindows
+ \providecommand{\DeleteFile}[2][]{%
+ \ifthenelse{\equal{#1}{}}%
+ {\IfFileExists{#2}{\ShellEscape{del #2}}{}}%
+ {\IfFileExists{#1/#2}{%
+ \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir]
+ \ShellEscape{del \minted@windir\@backslashchar #2}}{}}}
+\else
+ \providecommand{\DeleteFile}[2][]{%
+ \ifthenelse{\equal{#1}{}}%
+ {\IfFileExists{#2}{\ShellEscape{rm #2}}{}}%
+ {\IfFileExists{#1/#2}{\ShellEscape{rm #1/#2}}{}}}
+\fi
+\ifwindows
+ \newcommand{\ProvideDirectory}[1]{%
+ \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir]
+ \ShellEscape{if not exist \minted@windir\space mkdir \minted@windir}}
+\else
+ \newcommand{\ProvideDirectory}[1]{%
+ \ShellEscape{mkdir -p #1}}
+\fi
+\newboolean{AppExists}
+\newread\minted@appexistsfile
+\newcommand{\TestAppExists}[1]{%
+ \ifwindows
+ \DeleteFile{\minted@jobname.aex}%
+ \ShellEscape{for \string^\@percentchar i in (#1.exe #1.bat #1.cmd)
+ do set > \minted@jobname.aex <nul: /p
+ x=\string^\@percentchar \string~$PATH:i>> \minted@jobname.aex}%
+ %$ <- balance syntax highlighting
+ \immediate\openin\minted@appexistsfile\minted@jobname.aex
+ \expandafter\def\expandafter\@tmp@cr\expandafter{\the\endlinechar}%
+ \endlinechar=-1\relax
+ \readline\minted@appexistsfile to \minted@apppathifexists
+ \endlinechar=\@tmp@cr
+ \ifthenelse{\equal{\minted@apppathifexists}{}}%
+ {\AppExistsfalse}%
+ {\AppExiststrue}%
+ \immediate\closein\minted@appexistsfile
+ \DeleteFile{\minted@jobname.aex}%
+ \else
+ \ShellEscape{command -v #1 && touch \minted@jobname.aex}%
+ \IfFileExists{\minted@jobname.aex}%
+ {\AppExiststrue
+ \DeleteFile{\minted@jobname.aex}}%
+ {\AppExistsfalse}%
+ \fi
+}
+\newcommand{\minted@optlistcl@g}{}
+\newcommand{\minted@optlistcl@g@i}{}
+\let\minted@lang\@empty
+\newcommand{\minted@optlistcl@lang}{}
+\newcommand{\minted@optlistcl@lang@i}{}
+\newcommand{\minted@optlistcl@cmd}{}
+\newcommand{\minted@optlistfv@g}{}
+\newcommand{\minted@optlistfv@g@i}{}
+\newcommand{\minted@optlistfv@lang}{}
+\newcommand{\minted@optlistfv@lang@i}{}
+\newcommand{\minted@optlistfv@cmd}{}
+\newcommand{\minted@configlang}[1]{%
+ \def\minted@lang{#1}%
+ \ifcsname minted@optlistcl@lang\minted@lang\endcsname\else
+ \expandafter\gdef\csname minted@optlistcl@lang\minted@lang\endcsname{}%
+ \fi
+ \ifcsname minted@optlistcl@lang\minted@lang @i\endcsname\else
+ \expandafter\gdef\csname minted@optlistcl@lang\minted@lang @i\endcsname{}%
+ \fi
+ \ifcsname minted@optlistfv@lang\minted@lang\endcsname\else
+ \expandafter\gdef\csname minted@optlistfv@lang\minted@lang\endcsname{}%
+ \fi
+ \ifcsname minted@optlistfv@lang\minted@lang @i\endcsname\else
+ \expandafter\gdef\csname minted@optlistfv@lang\minted@lang @i\endcsname{}%
+ \fi
+}
+\ifwindows
+ \newcommand{\minted@optlistcl@quote}[2]{%
+ \detokenize{#1="#2"}}
+\else
+ \newcommand{\minted@optlistcl@quote}[2]{%
+ \detokenize{#1='#2'}}
+\fi
+\newcommand{\minted@addto@optlistcl}[3]{%
+ \expandafter\def\expandafter#1\expandafter{#1%
+ \minted@optlistcl@quote{#2}{#3}\space}}
+\newcommand{\minted@addto@optlistcl@lang}[3]{%
+ \expandafter\let\expandafter\minted@tmp\csname #1\endcsname
+ \expandafter\def\expandafter\minted@tmp\expandafter{\minted@tmp%
+ \minted@optlistcl@quote{#2}{#3}\space}%
+ \expandafter\let\csname #1\endcsname\minted@tmp}
+\newcommand{\minted@def@optcl}[4][]{%
+ \ifthenelse{\equal{#1}{}}%
+ {\define@key{minted@opt@g}{#2}{%
+ \minted@addto@optlistcl{\minted@optlistcl@g}{#3}{#4}%
+ \@namedef{minted@opt@g:#2}{#4}}%
+ \define@key{minted@opt@g@i}{#2}{%
+ \minted@addto@optlistcl{\minted@optlistcl@g@i}{#3}{#4}%
+ \@namedef{minted@opt@g@i:#2}{#4}}%
+ \define@key{minted@opt@lang}{#2}{%
+ \minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#3}{#4}%
+ \@namedef{minted@opt@lang\minted@lang:#2}{#4}}%
+ \define@key{minted@opt@lang@i}{#2}{%
+ \minted@addto@optlistcl@lang{%
+ minted@optlistcl@lang\minted@lang @i}{#3}{#4}%
+ \@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}%
+ \define@key{minted@opt@cmd}{#2}{%
+ \minted@addto@optlistcl{\minted@optlistcl@cmd}{#3}{#4}%
+ \@namedef{minted@opt@cmd:#2}{#4}}}%
+ {\define@key{minted@opt@g}{#2}[#1]{%
+ \minted@addto@optlistcl{\minted@optlistcl@g}{#3}{#4}%
+ \@namedef{minted@opt@g:#2}{#4}}%
+ \define@key{minted@opt@g@i}{#2}[#1]{%
+ \minted@addto@optlistcl{\minted@optlistcl@g@i}{#3}{#4}%
+ \@namedef{minted@opt@g@i:#2}{#4}}%
+ \define@key{minted@opt@lang}{#2}[#1]{%
+ \minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#3}{#4}%
+ \@namedef{minted@opt@lang\minted@lang:#2}{#4}}%
+ \define@key{minted@opt@lang@i}{#2}[#1]{%
+ \minted@addto@optlistcl@lang{%
+ minted@optlistcl@lang\minted@lang @i}{#3}{#4}%
+ \@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}%
+ \define@key{minted@opt@cmd}{#2}[#1]{%
+ \minted@addto@optlistcl{\minted@optlistcl@cmd}{#3}{#4}%
+ \@namedef{minted@opt@cmd:#2}{#4}}}%
+}
+\begingroup
+\catcode`\!=0
+!catcode`!\=12
+!gdef!minted@escape#1{%
+ !expandafter!minted@escape@i!detokenize{#1}\!FV@Sentinel}
+!gdef!minted@escape@i#1\#2!FV@Sentinel{%
+ !if!relax!detokenize{#2}!relax
+ !expandafter!@firstoftwo
+ !else
+ !expandafter!@secondoftwo
+ !fi
+ {#1!minted@escape@end\#2!FV@Sentinel}
+ {#1!minted@escape@esc\#2!FV@Sentinel}}
+!gdef!minted@escape@end#1!FV@Sentinel{}
+!gdef!minted@escape@esc\#1#2!FV@Sentinel{%
+ #1!minted@escape@i#2!FV@Sentinel}
+!endgroup
+\newcommand{\minted@addto@optlistcl@e}[3]{%
+ \edef\minted@tmp{\minted@escape{#3}}%
+ \expandafter\minted@addto@optlistcl@e@i\expandafter{\minted@tmp}{#1}{#2}}
+\def\minted@addto@optlistcl@e@i#1#2#3{%
+ \expandafter\def\expandafter#2\expandafter{#2\minted@optlistcl@quote{#3}{#1}\space}}
+\newcommand{\minted@addto@optlistcl@lang@e}[3]{%
+ \edef\minted@tmp{\minted@escape{#3}}%
+ \expandafter\minted@addto@optlistcl@lang@e@i\expandafter{\minted@tmp}{#1}{#2}}
+\def\minted@addto@optlistcl@lang@e@i#1#2#3{%
+ \expandafter\let\expandafter\minted@tmp\csname #2\endcsname
+ \expandafter\def\expandafter\minted@tmp\expandafter{\minted@tmp\minted@optlistcl@quote{#3}{#1}\space}%
+ \expandafter\let\csname #2\endcsname\minted@tmp}
+\newcommand{\minted@def@optcl@e}[4][]{%
+ \ifthenelse{\equal{#1}{}}%
+ {\define@key{minted@opt@g}{#2}{%
+ \minted@addto@optlistcl@e{\minted@optlistcl@g}{#3}{#4}%
+ \@namedef{minted@opt@g:#2}{#4}}%
+ \define@key{minted@opt@g@i}{#2}{%
+ \minted@addto@optlistcl@e{\minted@optlistcl@g@i}{#3}{#4}%
+ \@namedef{minted@opt@g@i:#2}{#4}}%
+ \define@key{minted@opt@lang}{#2}{%
+ \minted@addto@optlistcl@lang@e{minted@optlistcl@lang\minted@lang}{#3}{#4}%
+ \@namedef{minted@opt@lang\minted@lang:#2}{#4}}%
+ \define@key{minted@opt@lang@i}{#2}{%
+ \minted@addto@optlistcl@lang@e{%
+ minted@optlistcl@lang\minted@lang @i}{#3}{#4}%
+ \@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}%
+ \define@key{minted@opt@cmd}{#2}{%
+ \minted@addto@optlistcl@e{\minted@optlistcl@cmd}{#3}{#4}%
+ \@namedef{minted@opt@cmd:#2}{#4}}}%
+ {\define@key{minted@opt@g}{#2}[#1]{%
+ \minted@addto@optlistcl@e{\minted@optlistcl@g}{#3}{#4}%
+ \@namedef{minted@opt@g:#2}{#4}}%
+ \define@key{minted@opt@g@i}{#2}[#1]{%
+ \minted@addto@optlistcl@e{\minted@optlistcl@g@i}{#3}{#4}%
+ \@namedef{minted@opt@g@i:#2}{#4}}%
+ \define@key{minted@opt@lang}{#2}[#1]{%
+ \minted@addto@optlistcl@lang@e{minted@optlistcl@lang\minted@lang}{#3}{#4}%
+ \@namedef{minted@opt@lang\minted@lang:#2}{#4}}%
+ \define@key{minted@opt@lang@i}{#2}[#1]{%
+ \minted@addto@optlistcl@lang@e{%
+ minted@optlistcl@lang\minted@lang @i}{#3}{#4}%
+ \@namedef{minted@opt@lang\minted@lang @i:#2}{#4}}%
+ \define@key{minted@opt@cmd}{#2}[#1]{%
+ \minted@addto@optlistcl@e{\minted@optlistcl@cmd}{#3}{#4}%
+ \@namedef{minted@opt@cmd:#2}{#4}}}%
+}
+\newcommand{\minted@def@optcl@switch}[2]{%
+ \define@booleankey{minted@opt@g}{#1}%
+ {\minted@addto@optlistcl{\minted@optlistcl@g}{#2}{True}%
+ \@namedef{minted@opt@g:#1}{true}}
+ {\minted@addto@optlistcl{\minted@optlistcl@g}{#2}{False}%
+ \@namedef{minted@opt@g:#1}{false}}
+ \define@booleankey{minted@opt@g@i}{#1}%
+ {\minted@addto@optlistcl{\minted@optlistcl@g@i}{#2}{True}%
+ \@namedef{minted@opt@g@i:#1}{true}}
+ {\minted@addto@optlistcl{\minted@optlistcl@g@i}{#2}{False}%
+ \@namedef{minted@opt@g@i:#1}{false}}
+ \define@booleankey{minted@opt@lang}{#1}%
+ {\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#2}{True}%
+ \@namedef{minted@opt@lang\minted@lang:#1}{true}}
+ {\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang}{#2}{False}%
+ \@namedef{minted@opt@lang\minted@lang:#1}{false}}
+ \define@booleankey{minted@opt@lang@i}{#1}%
+ {\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang @i}{#2}{True}%
+ \@namedef{minted@opt@lang\minted@lang @i:#1}{true}}
+ {\minted@addto@optlistcl@lang{minted@optlistcl@lang\minted@lang @i}{#2}{False}%
+ \@namedef{minted@opt@lang\minted@lang @i:#1}{false}}
+ \define@booleankey{minted@opt@cmd}{#1}%
+ {\minted@addto@optlistcl{\minted@optlistcl@cmd}{#2}{True}%
+ \@namedef{minted@opt@cmd:#1}{true}}
+ {\minted@addto@optlistcl{\minted@optlistcl@cmd}{#2}{False}%
+ \@namedef{minted@opt@cmd:#1}{false}}
+}
+\newcommand{\minted@def@optfv}[1]{%
+ \define@key{minted@opt@g}{#1}{%
+ \expandafter\def\expandafter\minted@optlistfv@g\expandafter{%
+ \minted@optlistfv@g#1={##1},}%
+ \@namedef{minted@opt@g:#1}{##1}}
+ \define@key{minted@opt@g@i}{#1}{%
+ \expandafter\def\expandafter\minted@optlistfv@g@i\expandafter{%
+ \minted@optlistfv@g@i#1={##1},}%
+ \@namedef{minted@opt@g@i:#1}{##1}}
+ \define@key{minted@opt@lang}{#1}{%
+ \expandafter\let\expandafter\minted@tmp%
+ \csname minted@optlistfv@lang\minted@lang\endcsname
+ \expandafter\def\expandafter\minted@tmp\expandafter{%
+ \minted@tmp#1={##1},}%
+ \expandafter\let\csname minted@optlistfv@lang\minted@lang\endcsname%
+ \minted@tmp
+ \@namedef{minted@opt@lang\minted@lang:#1}{##1}}
+ \define@key{minted@opt@lang@i}{#1}{%
+ \expandafter\let\expandafter\minted@tmp%
+ \csname minted@optlistfv@lang\minted@lang @i\endcsname
+ \expandafter\def\expandafter\minted@tmp\expandafter{%
+ \minted@tmp#1={##1},}%
+ \expandafter\let\csname minted@optlistfv@lang\minted@lang @i\endcsname%
+ \minted@tmp
+ \@namedef{minted@opt@lang\minted@lang @i:#1}{##1}}
+ \define@key{minted@opt@cmd}{#1}{%
+ \expandafter\def\expandafter\minted@optlistfv@cmd\expandafter{%
+ \minted@optlistfv@cmd#1={##1},}%
+ \@namedef{minted@opt@cmd:#1}{##1}}
+}
+\newcommand{\minted@def@optfv@switch}[1]{%
+ \define@booleankey{minted@opt@g}{#1}%
+ {\expandafter\def\expandafter\minted@optlistfv@g\expandafter{%
+ \minted@optlistfv@g#1=true,}%
+ \@namedef{minted@opt@g:#1}{true}}%
+ {\expandafter\def\expandafter\minted@optlistfv@g\expandafter{%
+ \minted@optlistfv@g#1=false,}%
+ \@namedef{minted@opt@g:#1}{false}}%
+ \define@booleankey{minted@opt@g@i}{#1}%
+ {\expandafter\def\expandafter\minted@optlistfv@g@i\expandafter{%
+ \minted@optlistfv@g@i#1=true,}%
+ \@namedef{minted@opt@g@i:#1}{true}}%
+ {\expandafter\def\expandafter\minted@optlistfv@g@i\expandafter{%
+ \minted@optlistfv@g@i#1=false,}%
+ \@namedef{minted@opt@g@i:#1}{false}}%
+ \define@booleankey{minted@opt@lang}{#1}%
+ {\expandafter\let\expandafter\minted@tmp%
+ \csname minted@optlistfv@lang\minted@lang\endcsname
+ \expandafter\def\expandafter\minted@tmp\expandafter{%
+ \minted@tmp#1=true,}%
+ \expandafter\let\csname minted@optlistfv@lang\minted@lang\endcsname%
+ \minted@tmp
+ \@namedef{minted@opt@lang\minted@lang:#1}{true}}%
+ {\expandafter\let\expandafter\minted@tmp%
+ \csname minted@optlistfv@lang\minted@lang\endcsname
+ \expandafter\def\expandafter\minted@tmp\expandafter{%
+ \minted@tmp#1=false,}%
+ \expandafter\let\csname minted@optlistfv@lang\minted@lang\endcsname%
+ \minted@tmp
+ \@namedef{minted@opt@lang\minted@lang:#1}{false}}%
+ \define@booleankey{minted@opt@lang@i}{#1}%
+ {\expandafter\let\expandafter\minted@tmp%
+ \csname minted@optlistfv@lang\minted@lang @i\endcsname
+ \expandafter\def\expandafter\minted@tmp\expandafter{%
+ \minted@tmp#1=true,}%
+ \expandafter\let\csname minted@optlistfv@lang\minted@lang @i\endcsname%
+ \minted@tmp
+ \@namedef{minted@opt@lang\minted@lang @i:#1}{true}}%
+ {\expandafter\let\expandafter\minted@tmp%
+ \csname minted@optlistfv@lang\minted@lang @i\endcsname
+ \expandafter\def\expandafter\minted@tmp\expandafter{%
+ \minted@tmp#1=false,}%
+ \expandafter\let\csname minted@optlistfv@lang\minted@lang @i\endcsname%
+ \minted@tmp
+ \@namedef{minted@opt@lang\minted@lang @i:#1}{false}}%
+ \define@booleankey{minted@opt@cmd}{#1}%
+ {\expandafter\def\expandafter\minted@optlistfv@cmd\expandafter{%
+ \minted@optlistfv@cmd#1=true,}%
+ \@namedef{minted@opt@cmd:#1}{true}}%
+ {\expandafter\def\expandafter\minted@optlistfv@cmd\expandafter{%
+ \minted@optlistfv@cmd#1=false,}%
+ \@namedef{minted@opt@cmd:#1}{false}}%
+}
+\newboolean{minted@isinline}
+\newcommand{\minted@fvset}{%
+ \expandafter\fvset\expandafter{\minted@optlistfv@g}%
+ \expandafter\let\expandafter\minted@tmp%
+ \csname minted@optlistfv@lang\minted@lang\endcsname
+ \expandafter\fvset\expandafter{\minted@tmp}%
+ \ifthenelse{\boolean{minted@isinline}}%
+ {\expandafter\fvset\expandafter{\minted@optlistfv@g@i}%
+ \expandafter\let\expandafter\minted@tmp%
+ \csname minted@optlistfv@lang\minted@lang @i\endcsname
+ \expandafter\fvset\expandafter{\minted@tmp}}%
+ {}%
+ \expandafter\fvset\expandafter{\minted@optlistfv@cmd}%
+}
+\newcommand{\minted@def@opt}[2][]{%
+ \define@key{minted@opt@g}{#2}{%
+ \@namedef{minted@opt@g:#2}{##1}}
+ \define@key{minted@opt@g@i}{#2}{%
+ \@namedef{minted@opt@g@i:#2}{##1}}
+ \define@key{minted@opt@lang}{#2}{%
+ \@namedef{minted@opt@lang\minted@lang:#2}{##1}}
+ \define@key{minted@opt@lang@i}{#2}{%
+ \@namedef{minted@opt@lang\minted@lang @i:#2}{##1}}
+ \define@key{minted@opt@cmd}{#2}{%
+ \@namedef{minted@opt@cmd:#2}{##1}}
+ \ifstrempty{#1}{}{\@namedef{minted@opt@g:#2}{#1}}%
+}
+\newcommand{\minted@def@opt@detok}[2][]{%
+ \define@key{minted@opt@g}{#2}{%
+ \@namedef{minted@opt@g:#2}{\detokenize{##1}}}
+ \define@key{minted@opt@g@i}{#2}{%
+ \@namedef{minted@opt@g@i:#2}{\detokenize{##1}}}
+ \define@key{minted@opt@lang}{#2}{%
+ \@namedef{minted@opt@lang\minted@lang:#2}{\detokenize{##1}}}
+ \define@key{minted@opt@lang@i}{#2}{%
+ \@namedef{minted@opt@lang\minted@lang @i:#2}{\detokenize{##1}}}
+ \define@key{minted@opt@cmd}{#2}{%
+ \@namedef{minted@opt@cmd:#2}{\detokenize{##1}}}
+ \ifstrempty{#1}{}{\@namedef{minted@opt@g:#2}{\detokenize{#1}}}%
+}
+\newcommand{\minted@generate@PYGdef}[1]{%
+ \ifthenelse{\boolean{minted@cache}}%
+ {\def\minted@pygstylepath@load{\minted@outputdir\minted@cachedir/#1.pygstyle}%
+ \minted@addcachefile{#1.pygstyle}}%
+ {\def\minted@pygstylepath@load{\minted@outputdir\minted@jobname.out.pyg}}%
+ \ifwindows
+ \StrSubstitute{\minted@pygstylepath@load}%
+ {/}{\@backslashchar}[\minted@pygstylepath@save]%
+ \else
+ \let\minted@pygstylepath@save\minted@pygstylepath@load
+ \fi
+ \IfFileExists{\minted@pygstylepath@load}%
+ {}%
+ {\ifthenelse{\boolean{minted@frozencache}}%
+ {\PackageError{minted}%
+ {Missing style definition for #1 with frozencache}%
+ {Missing style definition for #1 with frozencache}}%
+ {}%
+ \ShellEscape{%
+ \MintedPygmentize\space -S #1 -f latex -P commandprefix=PYG
+ > \minted@pygstylepath@save
+ }%
+ }%
+ \CatchFileDef{\minted@tmp@filecontents}%
+ {\minted@pygstylepath@load}{\catcode`@=11\catcode`\%=14\catcode``=12\endlinechar=-1}%
+ \begingroup
+ \let\PYG\relax
+ \minted@tmp@filecontents
+ \ifx\PYG\relax
+ \ifthenelse{\boolean{minted@frozencache}}%
+ {\PackageError{minted}%
+ {Outdated style definition for #1 with frozencache}%
+ {Outdated style definition for #1 with frozencache}}%
+ {}%
+ \ShellEscape{%
+ \MintedPygmentize\space -S #1 -f latex -P commandprefix=PYG
+ > \minted@pygstylepath@save
+ }%
+ \CatchFileDef{\minted@tmp@filecontents}%
+ {\minted@pygstylepath@load}{\catcode`@=11\catcode`\%=14\catcode``=12\endlinechar=-1}%
+ \minted@tmp@filecontents
+ \ifx\PYG\relax
+ \PackageError{minted}%
+ {Cannot find Pygments style #1}%
+ {Cannot find Pygments style #1}%
+ \fi
+ \fi
+ \expandafter\global\expandafter\let\csname minted@PYGdef@#1\endcsname%
+ \minted@tmp@filecontents
+ \endgroup
+}
+\newcommand{\minted@defstyle}[1]{%
+ \edef\minted@style{#1}%
+ \ifcsname minted@PYGdef@\minted@style\endcsname\else
+ \expandafter\minted@generate@PYGdef\expandafter{\minted@style}%
+ \fi
+ \csname minted@PYGdef@\minted@style\endcsname
+ \minted@patch@PYGZsq
+ \minted@patch@PYGZhy
+ \ifthenelse{\equal{\minted@get@opt{ignorelexererrors}{true}}{true}}%
+ {\let\PYG@tok@err\relax}{}}
+\ifthenelse{\boolean{minted@draft}}{\renewcommand{\minted@defstyle}[1]{}}{}
+\newcommand{\minted@patch@PYGZsq}{%
+ \ifcsname PYGZsq\endcsname
+ \expandafter\ifdefstring\expandafter{\csname PYGZsq\endcsname}{\char`\'}%
+ {\minted@patch@PYGZsq@i}%
+ {}%
+ \fi
+}
+\begingroup
+\catcode`\'=\active
+\gdef\minted@patch@PYGZsq@i{\gdef\PYGZsq{'}}
+\endgroup
+\newcommand{\minted@patch@PYGZhy}{%
+ \ifcsname PYGZhy\endcsname
+ \expandafter\ifdefstring\expandafter{\csname PYGZhy\endcsname}{\char`\-}%
+ {\def\PYGZhy{\mbox{-}}}%
+ {}%
+ \fi
+}
+\newcommand{\minted@def@opt@switch}[2][false]{%
+ \define@booleankey{minted@opt@g}{#2}%
+ {\@namedef{minted@opt@g:#2}{true}}%
+ {\@namedef{minted@opt@g:#2}{false}}
+ \define@booleankey{minted@opt@g@i}{#2}%
+ {\@namedef{minted@opt@g@i:#2}{true}}%
+ {\@namedef{minted@opt@g@i:#2}{false}}
+ \define@booleankey{minted@opt@lang}{#2}%
+ {\@namedef{minted@opt@lang\minted@lang:#2}{true}}%
+ {\@namedef{minted@opt@lang\minted@lang:#2}{false}}
+ \define@booleankey{minted@opt@lang@i}{#2}%
+ {\@namedef{minted@opt@lang\minted@lang @i:#2}{true}}%
+ {\@namedef{minted@opt@lang\minted@lang @i:#2}{false}}
+ \define@booleankey{minted@opt@cmd}{#2}%
+ {\@namedef{minted@opt@cmd:#2}{true}}%
+ {\@namedef{minted@opt@cmd:#2}{false}}%
+ \@namedef{minted@opt@g:#2}{#1}%
+}
+\def\minted@get@opt#1#2{%
+ \ifcsname minted@opt@cmd:#1\endcsname
+ \csname minted@opt@cmd:#1\endcsname
+ \else
+ \ifminted@isinline
+ \ifcsname minted@opt@lang\minted@lang @i:#1\endcsname
+ \csname minted@opt@lang\minted@lang @i:#1\endcsname
+ \else
+ \ifcsname minted@opt@g@i:#1\endcsname
+ \csname minted@opt@g@i:#1\endcsname
+ \else
+ \ifcsname minted@opt@lang\minted@lang:#1\endcsname
+ \csname minted@opt@lang\minted@lang:#1\endcsname
+ \else
+ \ifcsname minted@opt@g:#1\endcsname
+ \csname minted@opt@g:#1\endcsname
+ \else
+ #2%
+ \fi
+ \fi
+ \fi
+ \fi
+ \else
+ \ifcsname minted@opt@lang\minted@lang:#1\endcsname
+ \csname minted@opt@lang\minted@lang:#1\endcsname
+ \else
+ \ifcsname minted@opt@g:#1\endcsname
+ \csname minted@opt@g:#1\endcsname
+ \else
+ #2%
+ \fi
+ \fi
+ \fi
+ \fi
+}%
+\minted@def@optcl{encoding}{-P encoding}{#1}
+\minted@def@optcl{outencoding}{-P outencoding}{#1}
+\minted@def@optcl@e{escapeinside}{-P escapeinside}{#1}
+\minted@def@optcl@switch{stripnl}{-P stripnl}
+\minted@def@optcl@switch{stripall}{-P stripall}
+\minted@def@optcl@switch{python3}{-P python3}
+\minted@def@optcl@switch{funcnamehighlighting}{-P funcnamehighlighting}
+\minted@def@optcl@switch{startinline}{-P startinline}
+\ifthenelse{\boolean{minted@draft}}%
+ {\minted@def@optfv{gobble}}%
+ {\minted@def@optcl{gobble}{-F gobble:n}{#1}}
+\minted@def@optcl{codetagify}{-F codetagify:codetags}{#1}
+\minted@def@optcl{keywordcase}{-F keywordcase:case}{#1}
+\minted@def@optcl@switch{texcl}{-P texcomments}
+\minted@def@optcl@switch{texcomments}{-P texcomments}
+\minted@def@optcl@switch{mathescape}{-P mathescape}
+\minted@def@optfv@switch{linenos}
+\minted@def@opt@detok{style}
+\minted@def@optfv{frame}
+\minted@def@optfv{framesep}
+\minted@def@optfv{framerule}
+\minted@def@optfv{rulecolor}
+\minted@def@optfv{numbersep}
+\minted@def@optfv{numbers}
+\minted@def@optfv{firstnumber}
+\minted@def@optfv{stepnumber}
+\minted@def@optfv{firstline}
+\minted@def@optfv{lastline}
+\minted@def@optfv{baselinestretch}
+\minted@def@optfv{xleftmargin}
+\minted@def@optfv{xrightmargin}
+\minted@def@optfv{fillcolor}
+\minted@def@optfv{tabsize}
+\minted@def@optfv{fontfamily}
+\minted@def@optfv{fontsize}
+\minted@def@optfv{fontshape}
+\minted@def@optfv{fontseries}
+\minted@def@optfv{formatcom}
+\minted@def@optfv{label}
+\minted@def@optfv{labelposition}
+\minted@def@optfv{highlightlines}
+\minted@def@optfv{highlightcolor}
+\minted@def@optfv{space}
+\minted@def@optfv{spacecolor}
+\minted@def@optfv{tab}
+\minted@def@optfv{tabcolor}
+\minted@def@optfv{highlightcolor}
+\minted@def@optfv@switch{beameroverlays}
+\minted@def@optfv@switch{curlyquotes}
+\minted@def@optfv@switch{numberfirstline}
+\minted@def@optfv@switch{numberblanklines}
+\minted@def@optfv@switch{stepnumberfromfirst}
+\minted@def@optfv@switch{stepnumberoffsetvalues}
+\minted@def@optfv@switch{showspaces}
+\minted@def@optfv@switch{resetmargins}
+\minted@def@optfv@switch{samepage}
+\minted@def@optfv@switch{showtabs}
+\minted@def@optfv@switch{obeytabs}
+\minted@def@optfv@switch{breaklines}
+\minted@def@optfv@switch{breakbytoken}
+\minted@def@optfv@switch{breakbytokenanywhere}
+\minted@def@optfv{breakindent}
+\minted@def@optfv{breakindentnchars}
+\minted@def@optfv@switch{breakautoindent}
+\minted@def@optfv{breaksymbol}
+\minted@def@optfv{breaksymbolsep}
+\minted@def@optfv{breaksymbolsepnchars}
+\minted@def@optfv{breaksymbolindent}
+\minted@def@optfv{breaksymbolindentnchars}
+\minted@def@optfv{breaksymbolleft}
+\minted@def@optfv{breaksymbolsepleft}
+\minted@def@optfv{breaksymbolsepleftnchars}
+\minted@def@optfv{breaksymbolindentleft}
+\minted@def@optfv{breaksymbolindentleftnchars}
+\minted@def@optfv{breaksymbolright}
+\minted@def@optfv{breaksymbolsepright}
+\minted@def@optfv{breaksymbolseprightnchars}
+\minted@def@optfv{breaksymbolindentright}
+\minted@def@optfv{breaksymbolindentrightnchars}
+\minted@def@optfv{breakbefore}
+\minted@def@optfv{breakbeforesymbolpre}
+\minted@def@optfv{breakbeforesymbolpost}
+\minted@def@optfv@switch{breakbeforeinrun}
+\minted@def@optfv{breakafter}
+\minted@def@optfv@switch{breakafterinrun}
+\minted@def@optfv{breakaftersymbolpre}
+\minted@def@optfv{breakaftersymbolpost}
+\minted@def@optfv@switch{breakanywhere}
+\minted@def@optfv{breakanywheresymbolpre}
+\minted@def@optfv{breakanywheresymbolpost}
+\minted@def@optfv{fontencoding}
+\minted@def@opt{bgcolor}
+\minted@def@opt@switch{autogobble}
+\minted@def@opt@switch{ignorelexererrors}
+\newcommand{\minted@encoding}{\minted@get@opt{encoding}{UTF8}}
+\newenvironment{minted@snugshade*}[1]{%
+ \def\FrameCommand##1{\hskip\@totalleftmargin
+ \colorbox{#1}{##1}%
+ \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}%
+ \MakeFramed{\advance\hsize-\width
+ \@totalleftmargin\z@ \linewidth\hsize
+ \advance\labelsep\fboxsep
+ \@setminipage}%
+ }{\par\unskip\@minipagefalse\endMakeFramed}
+\newsavebox{\minted@bgbox}
+\newenvironment{minted@colorbg}[1]{%
+ \setlength{\OuterFrameSep}{0pt}%
+ \let\minted@tmp\FV@NumberSep
+ \edef\FV@NumberSep{%
+ \the\numexpr\dimexpr\minted@tmp+\number\fboxsep\relax sp\relax}%
+ \medskip
+ \begin{minted@snugshade*}{#1}}
+ {\end{minted@snugshade*}%
+ \medskip\noindent}
+\newwrite\minted@code
+\newcommand{\minted@savecode}[1]{
+ \immediate\openout\minted@code\minted@jobname.pyg\relax
+ \immediate\write\minted@code{\expandafter\detokenize\expandafter{#1}}%
+ \immediate\closeout\minted@code}
+\newcounter{minted@FancyVerbLineTemp}
+\newcommand{\minted@write@detok}[1]{%
+ \immediate\write\FV@OutFile{\detokenize{#1}}}
+\newcommand{\minted@FVB@VerbatimOut}[1]{%
+ \setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}%
+ \@bsphack
+ \begingroup
+ \FV@UseKeyValues
+ \FV@DefineWhiteSpace
+ \def\FV@Space{\space}%
+ \FV@DefineTabOut
+ \let\FV@ProcessLine\minted@write@detok
+ \immediate\openout\FV@OutFile #1\relax
+ \let\FV@FontScanPrep\relax
+ \let\@noligs\relax
+ \FV@Scan}
+\newcommand{\minted@FVE@VerbatimOut}{%
+ \immediate\closeout\FV@OutFile\endgroup\@esphack
+ \setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}}%
+\ifcsname MintedPygmentize\endcsname\else
+ \newcommand{\MintedPygmentize}{pygmentize}
+\fi
+\newcounter{minted@pygmentizecounter}
+\ifwindows
+ \newcommand{\MintedPython}{python}
+\else
+ \newcommand{\MintedPython}{python3}
+\fi
+\newcommand{\minted@check@MintedPython}{%
+ \ifcsname minted@MintedPython@\MintedPython\endcsname
+ \else
+ \let\minted@altpython\minted@undefined
+ \ifdefstring{\MintedPython}{python}{\def\minted@altpython{python3}}{}%
+ \ifdefstring{\MintedPython}{python3}{\def\minted@altpython{python}}{}%
+ \ifx\minted@altpython\minted@undefined\relax
+ \TestAppExists{\MintedPython}%
+ \ifAppExists
+ \expandafter\global\expandafter\let%
+ \csname minted@MintedPython@\MintedPython\endcsname\relax
+ \else
+ \PackageError{minted}%
+ {Failed to find Python executable \MintedPython;
+ check Python installation (including PATH),
+ or redefine \string\MintedPython}%
+ {Failed to find Python executable \MintedPython;
+ check Python installation (including PATH),
+ or redefine \string\MintedPython}%
+ \fi
+ \else
+ \ifcsname minted@MintedPython@\minted@altpython\endcsname
+ \let\MintedPython\minted@altpython
+ \else
+ \TestAppExists{\MintedPython}%
+ \ifAppExists
+ \expandafter\global\expandafter\let%
+ \csname minted@MintedPython@\MintedPython\endcsname\relax
+ \else
+ \TestAppExists{\minted@altpython}%
+ \ifAppExists
+ \expandafter\global\expandafter\let%
+ \csname minted@MintedPython@\minted@altpython\endcsname\relax
+ \let\MintedPython\minted@altpython
+ \else
+ \PackageError{minted}%
+ {Failed to find Python executables python or python3;
+ check Python installation (including PATH),
+ or redefine \string\MintedPython}%
+ {Failed to find Python executables python or python3;
+ check Python installation (including PATH),
+ or redefine \string\MintedPython}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+}
+\ifwindows
+ \def\minted@opt@quote#1{\detokenize{"#1"}}
+\else
+ \def\minted@opt@quote#1{\detokenize{'#1'}}
+\fi
+\newcommand{\minted@pygmentize}[2][\minted@outputdir\minted@jobname.pyg]{%
+ \minted@defstyle{\minted@get@opt{style}{default}}%
+ \stepcounter{minted@pygmentizecounter}%
+ \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}%
+ {\def\minted@codefile{\minted@outputdir\minted@jobname.pyg}}%
+ {\def\minted@codefile{#1}}%
+ \ifthenelse{\boolean{minted@isinline}}%
+ {\def\minted@optlistcl@inlines{%
+ \minted@optlistcl@g@i
+ \csname minted@optlistcl@lang\minted@lang @i\endcsname}}%
+ {\let\minted@optlistcl@inlines\@empty}%
+ \def\minted@cmd{%
+ \ifminted@kpsewhich
+ \ifwindows
+ \detokenize{for /f "usebackq tokens=*"}\space\@percentchar\detokenize{a in (`kpsewhich}\space\minted@codefile\detokenize{`) do}\space
+ \fi
+ \fi
+ \MintedPygmentize\space -l \minted@opt@quote{#2}
+ -f latex -P commandprefix=PYG -F tokenmerge
+ \minted@optlistcl@g \csname minted@optlistcl@lang\minted@lang\endcsname
+ \minted@optlistcl@inlines
+ \minted@optlistcl@cmd -o \minted@outputdir\minted@infile\space
+ \ifminted@kpsewhich
+ \ifwindows
+ \@percentchar\detokenize{a}%
+ \else
+ \detokenize{`}kpsewhich \minted@codefile\space
+ \detokenize{||} \minted@codefile\detokenize{`}%
+ \fi
+ \else
+ \minted@codefile
+ \fi}%
+ % For debugging, uncomment: %%%%
+ % \immediate\typeout{\minted@cmd}%
+ % %%%%
+ \ifthenelse{\boolean{minted@cache}}%
+ {%
+ \ifminted@frozencache
+ \else
+ \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}%
+ {\edef\minted@hash{%
+ \pdf@filemdfivesum{#1}%
+ \pdf@mdfivesum{\minted@cmd\space%
+ autogobble(\the\numexpr\FancyVerbStartNum\relax-%
+ \the\numexpr\FancyVerbStopNum\relax)}}}%
+ {\edef\minted@hash{%
+ \pdf@filemdfivesum{#1}%
+ \pdf@mdfivesum{\minted@cmd}}}%
+ \edef\minted@infile{\minted@cachedir/\minted@hash.pygtex}%
+ \IfFileExists{\minted@infile}{}{%
+ \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}{%
+ \minted@autogobble{#1}}{}%
+ \ShellEscape{\minted@cmd}}%
+ \fi
+ \ifthenelse{\boolean{minted@finalizecache}}%
+ {%
+ \edef\minted@cachefilename{listing\arabic{minted@pygmentizecounter}.pygtex}%
+ \edef\minted@actualinfile{\minted@cachedir/\minted@cachefilename}%
+ \ifwindows
+ \StrSubstitute{\minted@infile}{/}{\@backslashchar}[\minted@infile@windows]
+ \StrSubstitute{\minted@actualinfile}{/}{\@backslashchar}[\minted@actualinfile@windows]
+ \ShellEscape{move /y \minted@outputdir\minted@infile@windows\space\minted@outputdir\minted@actualinfile@windows}%
+ \else
+ \ShellEscape{mv -f \minted@outputdir\minted@infile\space\minted@outputdir\minted@actualinfile}%
+ \fi
+ \let\minted@infile\minted@actualinfile
+ \expandafter\minted@addcachefile\expandafter{\minted@cachefilename}%
+ }%
+ {\ifthenelse{\boolean{minted@frozencache}}%
+ {%
+ \edef\minted@cachefilename{listing\arabic{minted@pygmentizecounter}.pygtex}%
+ \edef\minted@infile{\minted@cachedir/\minted@cachefilename}%
+ \expandafter\minted@addcachefile\expandafter{\minted@cachefilename}}%
+ {\expandafter\minted@addcachefile\expandafter{\minted@hash.pygtex}}%
+ }%
+ \minted@inputpyg}%
+ {%
+ \ifthenelse{\equal{\minted@get@opt{autogobble}{false}}{true}}{%
+ \minted@autogobble{#1}}{}%
+ \ShellEscape{\minted@cmd}%
+ \minted@inputpyg}%
+}
+\def\minted@autogobble#1{%
+ \edef\minted@argone@esc{#1}%
+ \StrSubstitute{\minted@argone@esc}{\@backslashchar}{\@backslashchar\@backslashchar}[\minted@argone@esc]%
+ \StrSubstitute{\minted@argone@esc}{"}{\@backslashchar"}[\minted@argone@esc]%
+ \edef\minted@tmpfname@esc{\minted@outputdir\minted@jobname}%
+ \StrSubstitute{\minted@tmpfname@esc}{\@backslashchar}{\@backslashchar\@backslashchar}[\minted@tmpfname@esc]%
+ \StrSubstitute{\minted@tmpfname@esc}{"}{\@backslashchar"}[\minted@tmpfname@esc]%
+ %Need a version of open() that supports encoding under Python 2
+ \minted@check@MintedPython
+ \edef\minted@autogobblecmd{%
+ \ifminted@kpsewhich
+ \ifwindows
+ \detokenize{for /f "usebackq tokens=*" }\@percentchar\detokenize{a in (`kpsewhich} #1\detokenize{`) do}\space
+ \fi
+ \fi
+ \MintedPython\detokenize{ -c "import sys; import os;
+ import textwrap;
+ from io import open;
+ fname = }%
+ \ifminted@kpsewhich
+ \detokenize{sys.argv[1];}\space
+ \else
+ \detokenize{os.path.expanduser(os.path.expandvars(\"}\minted@argone@esc\detokenize{\"));}\space
+ \fi
+ \detokenize{f = open(fname, \"r\", encoding=\"}\minted@encoding\detokenize{\") if os.path.isfile(fname) else None;
+ t = f.readlines() if f is not None else None;
+ t_opt = t if t is not None else [];
+ f.close() if f is not None else None;
+ tmpfname = os.path.expanduser(os.path.expandvars(\"}\minted@tmpfname@esc.pyg\detokenize{\"));
+ f = open(tmpfname, \"w\", encoding=\"}\minted@encoding\detokenize{\") if t is not None else None;
+ fvstartnum = }\the\numexpr\FancyVerbStartNum\detokenize{;
+ fvstopnum = }\the\numexpr\FancyVerbStopNum\detokenize{;
+ s = max(0, fvstartnum-1);
+ e = max(s, fvstopnum) if fvstopnum > 0 else len(t_opt);
+ [f.write(textwrap.dedent(\"\".join(x))) for x in (t_opt[0:s], t_opt[s:e], t_opt[e:]) if x and t is not None];
+ f.close() if t is not None else os.remove(tmpfname);"}%
+ \ifminted@kpsewhich
+ \ifwindows
+ \space\@percentchar\detokenize{a}%
+ \else
+ \space\detokenize{`}kpsewhich #1\space\detokenize{||} #1\detokenize{`}%
+ \fi
+ \fi
+ }%
+ \ShellEscape{\minted@autogobblecmd}%
+}
+\newcommand{\minted@inputpyg}{%
+ \VerbatimPygments{\PYG}{\PYG}%
+ \ifthenelse{\boolean{minted@isinline}}%
+ {\ifthenelse{\equal{\minted@get@opt{breaklines}{false}}{true}}%
+ {\let\FV@BeginVBox\relax
+ \let\FV@EndVBox\relax
+ \def\FV@BProcessLine##1{\FancyVerbFormatLine{##1}}%
+ \minted@inputpyg@inline}%
+ {\minted@inputpyg@inline}}%
+ {\minted@inputpyg@block}%
+}
+\def\minted@inputpyg@inline{%
+ \ifthenelse{\equal{\minted@get@opt{bgcolor}{}}{}}%
+ {\minted@input{\minted@outputdir\minted@infile}}%
+ {\colorbox{\minted@get@opt{bgcolor}{}}{%
+ \minted@input{\minted@outputdir\minted@infile}}}%
+}
+\def\minted@inputpyg@block{%
+ \ifthenelse{\equal{\minted@get@opt{bgcolor}{}}{}}%
+ {\minted@input{\minted@outputdir\minted@infile}}%
+ {\begin{minted@colorbg}{\minted@get@opt{bgcolor}{}}%
+ \minted@input{\minted@outputdir\minted@infile}%
+ \end{minted@colorbg}}}
+\newcommand{\minted@langlinenoson}{%
+ \ifcsname c@minted@lang\minted@lang\endcsname\else
+ \newcounter{minted@lang\minted@lang}%
+ \fi
+ \setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}%
+ \setcounter{FancyVerbLine}{\value{minted@lang\minted@lang}}%
+}
+\newcommand{\minted@langlinenosoff}{%
+ \setcounter{minted@lang\minted@lang}{\value{FancyVerbLine}}%
+ \setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}%
+}
+\ifbool{minted@langlinenos}{}{%
+ \ifbool{minted@inputlanglinenos}{}{%
+ \let\minted@langlinenoson\relax
+ \let\minted@langlinenosoff\relax
+ }
+}
+\ifbool{minted@inputlanglinenos}%
+ {\def\minted@inputlanglinenoson{\minted@langlinenoson}%
+ \def\minted@inputlanglinenosoff{\minted@langlinenosoff}}%
+ {\let\minted@inputlanglinenoson\relax
+ \let\minted@inputlanglinenosoff\relax}
+\newcommand{\setminted}[2][]{%
+ \ifthenelse{\equal{#1}{}}%
+ {\setkeys{minted@opt@g}{#2}}%
+ {\minted@configlang{#1}%
+ \setkeys{minted@opt@lang}{#2}}}
+\newcommand{\setmintedinline}[2][]{%
+ \ifthenelse{\equal{#1}{}}%
+ {\setkeys{minted@opt@g@i}{#2}}%
+ {\minted@configlang{#1}%
+ \setkeys{minted@opt@lang@i}{#2}}}
+\setmintedinline[php]{startinline=true}
+\setminted{tabcolor=black}
+\setminted{stripnl=false}
+\newcommand{\usemintedstyle}[2][]{\setminted[#1]{style=#2}}
+\begingroup
+\catcode`\ =\active
+\catcode`\^^I=\active
+\gdef\minted@defwhitespace@retok{\def {\noexpand\FV@Space}\def^^I{\noexpand\FV@Tab}}%
+\endgroup
+\newcommand{\minted@writecmdcode}[1]{%
+ \immediate\openout\minted@code\minted@jobname.pyg\relax
+ \immediate\write\minted@code{\detokenize{#1}}%
+ \immediate\closeout\minted@code}
+\def\mintinline{%
+ \FVExtraRobustCommand\RobustMintInline\FVExtraUnexpandedReadStarOArgMArgBVArg}
+\FVExtrapdfstringdefDisableCommands{%
+ \def\RobustMintInline{}}
+\newrobustcmd{\RobustMintInline}[2][]{%
+ \ifbool{FVExtraRobustCommandExpanded}%
+ {\@ifnextchar\bgroup
+ {\FVExtraReadVArg{\RobustMintInlineProcess{#1}{#2}}}%
+ {\PackageError{minted}%
+ {Inline delimiters must be paired curly braces in this context}%
+ {Use curly braces as delimiters}}}%
+ {\FVExtraReadVArg{\RobustMintInlineProcess{#1}{#2}}}}
+\def\RobustMintInlineProcess#1#2#3{%
+ \begingroup
+ \setboolean{minted@isinline}{true}%
+ \minted@configlang{#2}%
+ \setkeys{minted@opt@cmd}{#1}%
+ \minted@fvset
+ \RobustMintInlineProcess@i{#3}}
+\ifthenelse{\boolean{minted@draft}}%
+ {\def\RobustMintInlineProcess@i#1{%
+ \fvset{extra=true}%
+ \Verb{#1}%
+ \endgroup}}%
+ {\def\RobustMintInlineProcess@i#1{%
+ \FVExtraDetokenizeVArg{%
+ \FVExtraRetokenizeVArg{\RobustMintInlineProcess@ii}{\FV@CatCodes}}{#1}}
+ \def\RobustMintInlineProcess@ii#1{%
+ \minted@writecmdcode{#1}%
+ \let\Verbatim\VerbEnv
+ \let\endVerbatim\endVerbEnv
+ \expandafter\minted@pygmentize\expandafter{\minted@lang}%
+ \endgroup}}
+\def\mint{%
+ \FVExtraRobustCommand\RobustMint\FVExtraUnexpandedReadStarOArgMArgBVArg}
+\FVExtrapdfstringdefDisableCommands{%
+ \def\RobustMint{}}
+\newrobustcmd{\RobustMint}[2][]{%
+ \ifbool{FVExtraRobustCommandExpanded}%
+ {\@ifnextchar\bgroup
+ {\FVExtraReadVArg{\RobustMintProcess{#1}{#2}}}%
+ {\PackageError{minted}%
+ {Delimiters must be paired curly braces in this context}%
+ {Use curly braces as delimiters}}}%
+ {\FVExtraReadVArg{\RobustMintProcess{#1}{#2}}}}
+\def\RobustMintProcess#1#2#3{%
+ \begingroup
+ \minted@configlang{#2}%
+ \setkeys{minted@opt@cmd}{#1}%
+ \minted@fvset
+ \RobustMintProcess@i{#3}}
+\begingroup
+\catcode`\^^M=\active%
+\catcode`\<=1%
+\catcode`\>=2%
+\catcode`\{=12%
+\catcode`\}=12%
+\catcode`\!=0%
+\catcode`\\=12%
+!ifthenelse<!boolean<minted@draft>>%
+ <!gdef!RobustMintProcess@i#1<%
+ !FVExtraDetokenizeVArg<%
+ !FVExtraRetokenizeVArg<!RobustMintProcess@ii><!FV@CatCodes>><#1>>%
+ !gdef!RobustMintProcess@ii#1<%
+ !minted@langlinenoson%
+ !scantokens<%
+ \begin{Verbatim}
+ #1
+ \end{Verbatim}
+ !noexpand>%
+ !minted@langlinenosoff%
+ !endgroup!@doendpe>>%
+ <!gdef!RobustMintProcess@i#1<%
+ !FVExtraDetokenizeVArg<%
+ !FVExtraRetokenizeVArg<!RobustMintProcess@ii><!FV@CatCodes>><#1>>%
+ !gdef!RobustMintProcess@ii#1<%
+ !minted@writecmdcode<#1>%
+ !minted@langlinenoson%
+ !expandafter!minted@pygmentize!expandafter<!minted@lang>%
+ !minted@langlinenosoff%
+ !endgroup!@doendpe>>%
+!endgroup
+\ifthenelse{\boolean{minted@draft}}%
+ {\newenvironment{minted}[2][]
+ {\VerbatimEnvironment
+ \minted@configlang{#2}%
+ \setkeys{minted@opt@cmd}{#1}%
+ \minted@fvset
+ \minted@langlinenoson
+ \begin{Verbatim}}%
+ {\end{Verbatim}%
+ \minted@langlinenosoff}}%
+ {\newenvironment{minted}[2][]
+ {\VerbatimEnvironment
+ \let\FVB@VerbatimOut\minted@FVB@VerbatimOut
+ \let\FVE@VerbatimOut\minted@FVE@VerbatimOut
+ \minted@configlang{#2}%
+ \setkeys{minted@opt@cmd}{#1}%
+ \minted@fvset
+ \begin{VerbatimOut}[codes={\catcode`\^^I=12},firstline,lastline]{\minted@jobname.pyg}}%
+ {\end{VerbatimOut}%
+ \minted@langlinenoson
+ \expandafter\minted@pygmentize\expandafter{\minted@lang}%
+ \minted@langlinenosoff}}
+\ifthenelse{\boolean{minted@draft}}%
+ {\newcommand{\inputminted}[3][]{%
+ \begingroup
+ \minted@configlang{#2}%
+ \setkeys{minted@opt@cmd}{#1}%
+ \minted@fvset
+ \minted@inputlanglinenoson
+ \VerbatimInput{#3}%
+ \minted@inputlanglinenosoff
+ \endgroup}}%
+ {\newcommand{\inputminted}[3][]{%
+ \begingroup
+ \minted@configlang{#2}%
+ \setkeys{minted@opt@cmd}{#1}%
+ \minted@fvset
+ \minted@inputlanglinenoson
+ \minted@pygmentize[#3]{#2}%
+ \minted@inputlanglinenosoff
+ \endgroup}}
+\newcommand{\newminted}[3][]{
+ \ifthenelse{\equal{#1}{}}
+ {\def\minted@envname{#2code}}
+ {\def\minted@envname{#1}}
+ \newenvironment{\minted@envname}
+ {\VerbatimEnvironment
+ \begin{minted}[#3]{#2}}
+ {\end{minted}}
+ \newenvironment{\minted@envname *}[1]
+ {\VerbatimEnvironment\begin{minted}[#3,##1]{#2}}
+ {\end{minted}}}
+\newcommand{\newmint}[3][]{%
+ \if\relax\detokenize{#1}\relax
+ \def\minted@shortname{#2}%
+ \else
+ \def\minted@shortname{#1}%
+ \fi
+ \expandafter\newmint@i\expandafter{\minted@shortname}{#2}{#3}}
+\def\newmint@i#1#2#3{%
+ \expandafter\newcommand\csname#1\endcsname{%
+ \expandafter\FVExtraRobustCommand\csname RobustNewMint#1\endcsname
+ \FVExtraUnexpandedReadStarOArgBVArg}%
+ \FVExtrapdfstringdefDisableCommands{%
+ \expandafter\def\csname RobustNewMint#1\endcsname{}}%
+ \expandafter\newrobustcmd\csname RobustNewMint#1\endcsname{%
+ \FVExtraReadOArgBeforeVArg{\csname RobustNewMint#1@i\endcsname}}%
+ \expandafter\def\csname RobustNewMint#1@i\endcsname##1{%
+ \ifbool{FVExtraRobustCommandExpanded}%
+ {\@ifnextchar\bgroup
+ {\FVExtraReadVArg{\csname RobustNewMint#1@ii\endcsname{##1}}}%
+ {\PackageError{minted}%
+ {Delimiters must be paired curly braces in this context}%
+ {Use curly braces as delimiters}}}%
+ {\FVExtraReadVArg{\csname RobustNewMint#1@ii\endcsname{##1}}}}
+ \expandafter\def\csname RobustNewMint#1@ii\endcsname##1##2{%
+ \RobustMintProcess{#3,##1}{#2}{##2}}}
+\newcommand{\newmintedfile}[3][]{
+ \ifthenelse{\equal{#1}{}}
+ {\def\minted@shortname{#2file}}
+ {\def\minted@shortname{#1}}
+ \expandafter\newcommand\csname\minted@shortname\endcsname[2][]{
+ \inputminted[#3,##1]{#2}{##2}}}
+\newcommand{\newmintinline}[3][]{%
+ \if\relax\detokenize{#1}\relax
+ \def\minted@shortname{#2inline}%
+ \else
+ \def\minted@shortname{#1}%
+ \fi
+ \expandafter\newmintinline@i\expandafter{\minted@shortname}{#2}{#3}}
+\def\newmintinline@i#1#2#3{%
+ \expandafter\newcommand\csname#1\endcsname{%
+ \expandafter\FVExtraRobustCommand\csname RobustNewMintInline#1\endcsname
+ \FVExtraUnexpandedReadStarOArgBVArg}%
+ \FVExtrapdfstringdefDisableCommands{%
+ \expandafter\def\csname RobustNewMintInline#1\endcsname{}}%
+ \expandafter\newrobustcmd\csname RobustNewMintInline#1\endcsname{%
+ \FVExtraReadOArgBeforeVArg{\csname RobustNewMintInline#1@i\endcsname}}%
+ \expandafter\def\csname RobustNewMintInline#1@i\endcsname##1{%
+ \ifbool{FVExtraRobustCommandExpanded}%
+ {\@ifnextchar\bgroup
+ {\FVExtraReadVArg{\csname RobustNewMintInline#1@ii\endcsname{##1}}}%
+ {\PackageError{minted}%
+ {Inline delimiters must be paired curly braces in this context}%
+ {Use curly braces as delimiters}}}%
+ {\FVExtraReadVArg{\csname RobustNewMintInline#1@ii\endcsname{##1}}}}
+ \expandafter\def\csname RobustNewMintInline#1@ii\endcsname##1##2{%
+ \RobustMintInlineProcess{#3,##1}{#2}{##2}}}
+\ifthenelse{\boolean{minted@newfloat}}%
+ {\@ifundefined{minted@float@within}%
+ {\DeclareFloatingEnvironment[fileext=lol,placement=tbp]{listing}}%
+ {\def\minted@tmp#1{%
+ \DeclareFloatingEnvironment[fileext=lol,placement=tbp, within=#1]{listing}}%
+ \expandafter\minted@tmp\expandafter{\minted@float@within}}}%
+ {\@ifundefined{minted@float@within}%
+ {\newfloat{listing}{tbp}{lol}}%
+ {\newfloat{listing}{tbp}{lol}[\minted@float@within]}}
+\ifminted@newfloat\else
+\newcommand{\listingscaption}{Listing}
+\floatname{listing}{\listingscaption}
+\newcommand{\listoflistingscaption}{List of Listings}
+\providecommand{\listoflistings}{\listof{listing}{\listoflistingscaption}}
+\fi
+\AtEndOfPackage{%
+ \ifthenelse{\boolean{minted@draft}}%
+ {}%
+ {%
+ \ifthenelse{\boolean{minted@frozencache}}{}{%
+ \ifnum\pdf@shellescape=1\relax\else
+ \PackageError{minted}%
+ {You must invoke LaTeX with the
+ -shell-escape flag}%
+ {Pass the -shell-escape flag to LaTeX. Refer to the minted.sty
+ documentation for more information.}%
+ \fi}%
+ }%
+}
+\AtEndPreamble{%
+ \ifthenelse{\boolean{minted@draft}}%
+ {}%
+ {%
+ \ifthenelse{\boolean{minted@frozencache}}{}{%
+ \TestAppExists{\MintedPygmentize}%
+ \ifAppExists\else
+ \PackageError{minted}%
+ {You must have `pygmentize' installed
+ to use this package}%
+ {Refer to the installation instructions in the minted
+ documentation for more information.}%
+ \fi}%
+ }%
+}
+\AfterEndDocument{%
+ \ifthenelse{\boolean{minted@draft}}%
+ {}%
+ {\ifthenelse{\boolean{minted@frozencache}}%
+ {}
+ {\ifx\XeTeXinterchartoks\minted@undefined
+ \else
+ \DeleteFile[\minted@outputdir]{\minted@jobname.mintedcmd}%
+ \DeleteFile[\minted@outputdir]{\minted@jobname.mintedmd5}%
+ \fi
+ \DeleteFile[\minted@outputdir]{\minted@jobname.pyg}%
+ \DeleteFile[\minted@outputdir]{\minted@jobname.out.pyg}%
+ }%
+ }%
+}
+\endinput
+%%
+%% End of file `minted2.sty'.
diff --git a/Master/texmf-dist/tex/latex/mitthesis/mitthesis.cls b/Master/texmf-dist/tex/latex/mitthesis/mitthesis.cls
index a41d201f0ea..bd006c1c519 100644
--- a/Master/texmf-dist/tex/latex/mitthesis/mitthesis.cls
+++ b/Master/texmf-dist/tex/latex/mitthesis/mitthesis.cls
@@ -4,18 +4,18 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% This file provides the mitthesis LaTeX class for formatting theses according to
-%% MIT Libraries' requirements as of 2024.
+%% MIT Libraries' requirements as of 2025.
%%
%% This file's version and date:
- \def\versionno{1.16}
- \def\versiondate{2024/09/06\space}
+ \def\versionno{1.19}
+ \def\versiondate{2025/01/28\space}
%%
%% Author: John H. Lienhard, V
%% Department of Mechanical Engineering
%% Massachusetts Institute of Technology
%% Cambridge, MA 02139-4307 USA
%%
-%% This class is compatible with either pdfLaTeX or LuaTeX.
+%% This class is compatible with either pdfLaTeX or LuaLaTeX.
%%
%% Use an up-to-date LaTeX distribution: TeX Live 2023 or later is strongly recommended!
%% All packages required by the class are in TeX Live and available from CTAN (https://ctan.org/).
@@ -25,7 +25,7 @@
%%
%% LICENSE:
%%
-%% Copyright (c) 2024 John H. Lienhard
+%% Copyright (c) 2025 John H. Lienhard
%%
%% 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,
@@ -94,14 +94,13 @@
%%%%%%%%%%%%%% Options for the class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\IfFormatAtLeastTF{2022/11/01}{%
-% \typeout{^^JUsing native keyvalue support^^J}% diagnostic info
\DeclareKeys{
- fontset .store = \mit@fontset ,
- fontset .usage = load ,
- lineno .if = mit@lineno ,
- lineno .usage = load ,
- mydesign .if = mit@mydesign,
- mydesign .usage = load ,
+ fontset .store = \mit@fontset ,
+ fontset .usage = load ,
+ lineno .if = mit@lineno ,
+ lineno .usage = load ,
+ mydesign .if = mit@mydesign ,
+ mydesign .usage = load ,
}
\SetKeys[\ClassName]{fontset=defaultfonts}%
\DeclareUnknownKeyHandler[\ClassName]{\relax}% suppress warning about unused keys
@@ -161,13 +160,14 @@
\patchcmd{\tableofcontents}{\contentsname}{\pdfbookmark[0]{Table of Contents}{toc}\contentsname}{}{} % placement matters.
-%% Temporary accommodation of latex tagging. Rework once tagging structures have been finalized by LaTeX3 team.
+%% Code to accommodate latex tagging. Rework once LaTeX3 team have finalized tagging structures.
%% No guarantee that this hack is hierarchically correct.
%% Current latex-lab places tags around \@schapter, which is harder to deal with here.
-\providecommand*\MakeLinkTarget{\@gobbletwo}
-\patchcmd{\listoffigures}{\chapter*{\listfigurename}}{\chapter*{\phantomsection\listfigurename}\MakeLinkTarget[chapter]{}\addcontentsline{toc}{frontmatter}{\listfigurename}}{}{}
-\patchcmd{\listoftables}{\chapter*{\listtablename}}{\chapter*{\phantomsection\listtablename}\MakeLinkTarget[chapter]{}\addcontentsline{toc}{frontmatter}{\listtablename}}{}{}
+\ProvideDocumentCommand\MakeLinkTarget{sO{}m}{}
+
+\patchcmd{\listoffigures}{\chapter*{\listfigurename}}{\chapter*{\phantomsection\listfigurename}\MakeLinkTarget*{listoffigures}\addcontentsline{toc}{frontmatter}{\listfigurename}}{}{}
+\patchcmd{\listoftables}{\chapter*{\listtablename}}{\chapter*{\phantomsection\listtablename}\MakeLinkTarget*{listoftables}\addcontentsline{toc}{frontmatter}{\listtablename}}{}{}
\NewCommandCopy\l@frontmatter\l@chapter
\NewCommandCopy\l@backmatter\l@chapter
@@ -184,11 +184,8 @@
%%%%%%%%%%%%% Geometry, mathtools, graphics, design, fonts, hyperrefs, bookmarks, footnotes %%%%%%%%%%%%%%%%%%%
-%\RequirePackage[letterpaper,top=1in,bottom=0.97136in,left=1in,right=1in,marginparwidth=50pt,headsep=12pt,footskip=0.47136in]{geometry}
-% bottom margin allows 45\baselineskip in \textheight
-
\RequirePackage[letterpaper,top=1in,bottom=1in,left=1in,right=1in,marginparwidth=50pt,headsep=12pt,footskip=0.5in,heightrounded]{geometry}
-% 44\baselineskip = \texteheight - \topskip = 650.0pt - 12pt with rounded height
+% 44\baselineskip = \textheight - \topskip = 650.0pt - 12pt with rounded height
\RequirePackage{mathtools}% loads and extends amsmath; must load before hyperref and unicode-math
@@ -199,6 +196,10 @@
% \def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}
% \def\maketag@@@#1{\hbox{\m@th\normalfont#1}}
+% To streamline switching from lualatex to pdftex when using sample chapter 1, which puts \psi (as \mitpsi) in a toc entry
+\ifpdftex\providecommand\mitpsi{\psi}\fi
+
+
\RequirePackage{graphicx}
%%%%%%%%%%%% Design options %%%%%%%%%%%%%%%%%%%%%%%
@@ -212,17 +213,40 @@
}%
\else
\RequirePackage[dvipsnames,svgnames,x11names]{xcolor}
-%
+
\RequirePackage{caption,subcaption}
-%
- \RequirePackage{titlesec}
- % these titlesec commands just automate the bold math in some headings (rest follows default styles)
+
+ % Patch headings to automatically use bold math. Removed titlesec 2025/01/27
% NOT every font includes a bold math version, so you may need to use other math macros in the headings to get bold math <==
- % Predefined fontsets for which bold math exists are: CMR, Fira, Libertinus, Lucida, newtx
- \titleformat{\section}{\mathversion{bold}\normalfont\Large\bfseries}{\thesection}{1em}{}
- \titleformat{\subsection}{\mathversion{bold}\normalfont\large\bfseries}{\thesubsection}{1em}{}
- \titleformat{\subsubsection}{\mathversion{bold}\normalfont\normalsize\bfseries}{\thesubsubsection}{1em}{}
-%
+ % Predefined fontsets for which bold math exists are: CMR, Fira, Libertinus, Lucida, Newtx
+ \patchcmd{\section}{\normalfont}{\mathversion{bold}\normalfont}{}{}
+ \patchcmd{\subsection}{\normalfont}{\mathversion{bold}\normalfont}{}{}
+ \patchcmd{\subsubsection}{\normalfont}{\mathversion{bold}\normalfont}{}{}
+ \patchcmd{\paragraph}{\normalfont}{\mathversion{bold}\normalfont}{}{}
+ \patchcmd{\subparagraph}{\normalfont}{\mathversion{bold}\normalfont}{}{}
+
+ \ExplSyntaxOn
+ % temporary patch for lof/lot issue, will drop eventually, 2025/01/28
+ \cs_if_exist:NT \tag_struct_end:n {
+ \AtBeginDocument{
+ \renewcommand*\caption@anchor[1]{%
+ \ifmeasuring@ \else
+ \caption@raisedlink{\MakeLinkTarget*{#1}}%
+ \fi}%
+ }
+ % temporary patch to fix tagging bug with large delimiters in some fonts, drop when resolved, 2025/01/28
+ \AtBeginDocument{
+ \cs_set:Npn \bBigg@ #1 #2 {
+ {
+ \ensuremath {
+ \Uvextensible height~#1~ \dimexpr0.5\big@size\relax ~ depth ~#1~ \dimexpr0.5\big@size\relax~ axis~exact~#2
+ }
+ }
+ }
+ }
+ }
+ \ExplSyntaxOff
+
\AtBeginDocument{
\hypersetup{
linkcolor=Blue3,% color names from xcolor package
@@ -231,7 +255,7 @@
filecolor=red,
}
\ifmit@lineno
- \renewcommand{\linenumberfont}{\sffamily\mdseries\tiny\color{violet}}% add mdseries 2023/10/11
+ \renewcommand{\linenumberfont}{\sffamily\mdseries\tiny\color{violet}}% add \mdseries 2023/10/11
\fi
}
\fi
@@ -333,7 +357,7 @@
%%% Here's a more cumbersome removal of the warning for $ (math shift) in pdfbookmarks.
%%% Not implementing this by default, since novice authors may benefit from the warning. :-)
-%%% https://tex.stackexchange.com/a/620360/119566
+%%% see: https://tex.stackexchange.com/a/620360/119566
%\let\oldHyPsd@CatcodeWarning\HyPsd@CatcodeWarning
%\renewcommand{\HyPsd@CatcodeWarning}[1]{%
% \ifnum\pdfstrcmp{#1}{math shift}=0 % If 'math shift' is present, do nothing
@@ -446,6 +470,9 @@
{ \__author_copyrightauthor: \g__author_ca_tl }
}
+\cs_if_exist:NTF \cs_gset:Npe % 2024/10/05, for backward compatibility
+ {}
+ { \cs_generate_variant:Nn \cs_gset:Npn {Npe} }
\cs_new_protected:Nn \__author_copyrightauthor: {
\tl_new:N \g__author_ca_tl
\int_zero_new:N \l__author_autcrcnt_int
@@ -575,10 +602,10 @@
\tl_new:N \g_titlepage_supervisor_designation_tl
\tl_new:N \g_abstract_supervisor_designation_tl
-\tl_gset:Nn \g_titlepage_supervisor_designation_tl {Thesis\ Supervisor}
-\tl_gset:Nn \g_abstract_supervisor_designation_tl {Thesis\ supervisor}% style from MIT Libraries
+\tl_gset:Nn \g_titlepage_supervisor_designation_tl {Thesis~Supervisor}
+\tl_gset:Nn \g_abstract_supervisor_designation_tl {Thesis~supervisor}% style from MIT Libraries
-% If for some reason you need to change "Thesis Supervisor" to a different string (say, "Doctoral Advisor")
+% If for some reason you need to change "Thesis Supervisor" to a different string (say, "Doctoral Advisor").
% This construction removes leading and trailing spaces and lowercases the string.
\NewDocumentCommand\SupervisorDesignation{ m } {
\tl_gset:Nn \g_titlepage_supervisor_designation_tl
@@ -605,7 +632,7 @@
\int_incr:N \l__supervisor_supervisorno_int
}
\g_abstract_supervisor_designation_tl :\space
- \seq_item:cn { g_supervisor_name_seq } { \l__supervisor_supervisorno_int }\par
+ \seq_item:cn { g_supervisor_name_seq } { \l__supervisor_supervisorno_int }\newline % 2025/1/15: drop \par
Title:\space \seq_item:cn { g_supervisor_title_seq } { \l__supervisor_supervisorno_int }\ignorespaces
}
}
@@ -762,12 +789,13 @@
\linebreak \mbox{on\ \g_dd_thesisdate_tl\ in\ partial\ fulfillment\ of\ the\ requirements\ for\ the\
\int_compare:nNnTF { \g_degree_degreecnt_int } > {1} {degrees} {degree}
\ of}
- \par\medskip
+ \skip_vertical:n { 6pt plus 2pt minus 2pt }
\int_until_do:nNnn { \l__degree_degreeno_int } = { \g_degree_degreecnt_int } {
\textls[60]{\text_uppercase:n {\seq_item:cn { g_degree_name_seq } { \l__degree_degreeno_int }}}\par and\par
\int_incr:N \l__degree_degreeno_int
}
- \textls[60]{\text_uppercase:n {\seq_item:cn { g_degree_name_seq } { \l__degree_degreeno_int }}}\par\medskip
+ \textls[60]{\text_uppercase:n {\seq_item:cn { g_degree_name_seq } { \l__degree_degreeno_int }}}
+ \skip_vertical:n { 6pt plus 2pt minus 2pt }
}
%%%%%%%%%% End Degree Module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -806,35 +834,39 @@
\g__signature_sigsize_tl
\dim_set:Nn \topsep {0pt}
\dim_set:Nn \partopsep {0pt}
- \begin{tabbing}
- \hspace{1.35in} \= \hspace{1in} \kill
+ %\begin{tabbing}
+ %\hspace{1.35in} \= \hspace{1in} \kill
+ %%% replaced eight \> by &; eliminate tabbing, 2025/1/15
+ \noindent
+ \begin{tabular}{@{}ll@{}}
\int_do_while:nNnn { \g__signature_autno_int } < { \g_author_authorcnt_int } {
\int_gincr:N \g__signature_autno_int
- Authored\ by: \> \seq_item:cn { g_author_name_seq } { \g__signature_autno_int } \\
- \> \seq_item:cn { g_author_department_seq } { \g__signature_autno_int } \\
- \> \g_dd_thesisdate_tl \\[1em]
+ Authored\ by: & \seq_item:cn { g_author_name_seq } { \g__signature_autno_int } \\
+ & \seq_item:cn { g_author_department_seq } { \g__signature_autno_int } \\
+ & \g_dd_thesisdate_tl \\[1em]
}
\int_do_while:nNnn { \g__signature_supno_int } < { \g_supervisor_supervisorcnt_int } {
\int_gincr:N \g__signature_supno_int
- Certified\ by: \> \seq_item:cn { g_supervisor_name_seq } { \g__signature_supno_int } \\
- \> \seq_item:cn { g_supervisor_title_seq } { \g__signature_supno_int },\
+ Certified\ by: & \seq_item:cn { g_supervisor_name_seq } { \g__signature_supno_int } \\
+ & \seq_item:cn { g_supervisor_title_seq } { \g__signature_supno_int },\
\g_titlepage_supervisor_designation_tl \\[1em]
}
\int_compare:nNnF { \g_acceptor_acceptorcnt_int } = {0} {
\int_do_while:nNnn { \g__signature_accno_int } < { \g_acceptor_acceptorcnt_int } {
\int_gincr:N \g__signature_accno_int
- Accepted\ by: \> \seq_item:cn { g_acceptor_name_seq } { \g__signature_accno_int } \\
- \> \seq_item:cn { g_acceptor_department_seq } { \g__signature_accno_int }
+ Accepted\ by: & \seq_item:cn { g_acceptor_name_seq } { \g__signature_accno_int } \\
+ & \seq_item:cn { g_acceptor_department_seq } { \g__signature_accno_int }
\bool_if:NF \g__acceptor_title_tf_bool
{
\\
- \> \seq_item:cn { g_acceptor_title_seq } { \g__signature_accno_int }
+ & \seq_item:cn { g_acceptor_title_seq } { \g__signature_accno_int }
}
\int_compare:nNnTF { \g__signature_accno_int } = { \g_acceptor_acceptorcnt_int }
{ \\ }{ \\[1em]}
}
}
- \end{tabbing}
+ %\end{tabbing}
+ \end{tabular}
}
\msg_new:nnnn { \ClassName } { weird_sigsize }
{ \SignatureBlockSize\ expects\ a\ font-sizing\ command,\ such\ as\ \small,\ \footnotesize,\ etc.}{You\ used\ a\ weird\ input\ value\ here.\ If\ you\ did\ so\ deliberately,\ try\ continuing.}
@@ -898,6 +930,12 @@
%%%%%%%%%% End Copyright Module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% In case tagging is not loaded, 2025/01/17
+\cs_if_exist:NF \tag_struct_begin:n
+ {
+ \cs_new:Npn \tag_struct_begin:n #1 { \scan_stop: }
+ \cs_new:Nn \tag_struct_end: { \scan_stop: }
+ }
%%%%%%%%%% Title page Module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -906,7 +944,7 @@
\__mitthesis_title:n { #1 }
\cs_gset:Npe \@title { \tl_use:N \g_mitthesis_title_tl } % 2024/08/06
\hypersetup{
- pdftitle={\g_mitthesis_title_tl},
+ pdftitle={{\g_mitthesis_title_tl}},% extra braces protect commas that may be in title tl.
}
}
%
@@ -975,28 +1013,44 @@
%
\clearpage
\thispagestyle{empty}
- {\centering \vbox_to_ht:nn { \vsize }% to prevent signature block from breaking across page
- {
- \setlength{\parskip}{7.5pt plus 1pt minus 1pt}% edited all vertical space on this page 2023/10/25
- \setlength{\parindent}{0pt}\pdfbookmark[0]{Title\ page}{titlepage}
- {\Large\textbf{\g_mitthesis_title_tl}
- %\phantomsection\addcontentsline{toc}{chapter}{Title\ page}
- \par}
- \__titlepage_blockskip:nn {12}{1.5}
- \__author_block:
- \__titlepage_blockskip:nn {12}{1.5}
- \__degree_block:
- at~the\par
- \textls[60]{\text_uppercase:n { \g_titlepage_institution_name_tl }}\par
- \DegreeMonth\ \DegreeYear\par
- \__titlepage_blockskip:nn {12}{2}
- \copyright\space\DegreeYear\space\CopyrightAuthor\@.\c_space_token \g_copyright_copyrightlicencse_tl % \@. in case name ends with III, IV, V,...
+ \tag_struct_begin:n {tag=Sect, title=Titlepage}
+ \vbox_to_ht:nn { \vsize }% to prevent signature block from breaking across page
+ {
+ {\centering
+ \setlength{\parskip}{7.5pt plus 1pt minus 1pt}% edited all vertical space on this page 2023/10/25
+ \setlength{\parindent}{0pt}\pdfbookmark[0]{Title\ page}{titlepage}
+ {
+ \tag_struct_begin:n{tag=Title, title=Title}
+ \Large\textbf{\g_mitthesis_title_tl}
+ %\phantomsection\addcontentsline{toc}{chapter}{Title\ page}
+ \par
+ \tag_struct_end:
+ }
+ \__titlepage_blockskip:nn {12}{1.5}
+ \tag_struct_begin:n {tag=Div, title=Author}
+ \__author_block:
+ \tag_struct_end:
+ \__titlepage_blockskip:nn {12}{1.5}
+ \tag_struct_begin:n {tag=Div, title=Degree}
+ \__degree_block:
+ at~the\par
+ \textls[60]{\text_uppercase:n { \g_titlepage_institution_name_tl }}\par
+ \DegreeMonth\ \DegreeYear\par
+ \tag_struct_end:
+ \__titlepage_blockskip:nn {12}{2}
+ \tag_struct_begin:n {tag=Div, title=Copyright}
+ \copyright\space\DegreeYear\space\CopyrightAuthor\@.\c_space_token \g_copyright_copyrightlicencse_tl % \@. in case name ends with III, IV, V,...
+ \par % required to center \g_copyrightlicense_tl text.
+ \tag_struct_end:
+ }
\__titlepage_blockskip:nn {18}{2}
- \vbox:n {\__signature_block:}
+ \tag_struct_begin:n{tag=Div, title=Signatures}
+ \__signature_block:
+ \tag_struct_end:
\__titlepage_bottomskip:
}
- }
- \hypersetup{
+ \tag_struct_end: % end section
+ \hypersetup{
pdfcopyright={Copyright\ \DegreeYear\ by\ \CopyrightAuthor.\space \g_copyright_pdfrightstext_tl},
pdfauthor={\g__author_pdfca_tl},
pdfcaptionwriter = {\g__author_pdfca_tl},
@@ -1015,24 +1069,36 @@
\RenewDocumentEnvironment{abstract}{+b}{
\newpage
- \begin{center}
+ \tag_struct_begin:n {tag=Sect, title=Abstract~page}
+ {\centering
+ \tag_struct_begin:n{tag=Div, title=Abstract~title}
\pdfbookmark[0]{Abstract}{abstract}
{\large{\textbf{\g_mitthesis_title_tl}}
%\phantomsection\addcontentsline{toc}{chapter}{\abstractname}
- \par}
+ \par
+ \tag_struct_end:}
\setlength{\parskip}{0.5\baselineskip plus 2pt minus 2pt}
+ \tag_struct_begin:n {tag=Div, title=Abstract~author}
\__author_abstractblock:
- \par
+ \par\tag_struct_end: % \par is necessary to end the structure, 2025/01/17
+ \tag_struct_begin:n {tag=Div, title=Abstract~degree}
\__degree_abstractblock:
- \end{center}
- \skip_vertical:n {\baselineskip}
- \textbf{ \text_uppercase:n {\abstractname} }\par
+ \tag_struct_end:
+ }
+ \skip_vertical:n {2\baselineskip}
+ \tag_struct_begin:n{tag=Div, title-o=\abstractname}
+ \noindent
+ \textbf{ \text_uppercase:n {\abstractname} }
\skip_vertical:n { 0.5em }
- \tl_trim_spaces:n {#1}
+ #1
+ \par\tag_struct_end:
\tl_if_blank:nT {#1} { MISSING\ ABSTRACT! \msg_error:nn { \ClassName } { missing_abstract } }
}{
- \__supervisor_abstractblock:
- \cleardoublepage
+ \tag_struct_begin:n {tag=Div, title-o=\g_abstract_supervisor_designation_tl }
+ \__supervisor_abstractblock:
+ \tag_struct_end: % end div
+ \tag_struct_end: % end section
+ \cleardoublepage\ignorespacesafterend
}
\msg_new:nnnn { \ClassName } { missing_abstract } {Missing\ Abstract!! } { No\ file\ was\ input\ for\ the\ abstract.\ You\ need\ to\ do\ \string\input{abstract.tex}.}
@@ -1064,15 +1130,15 @@
\setlength{\itemsep}{\savitemsep}\@itempenalty=1000
}
%
-% Increase first optional argument to a dimension > 2em if wide entries cause undesired misalignment of columns.
+% Increase first optional argument to > 2em if wide entries cause undesired misalignment of columns.
% Second optional argument can be used to rename the environment, e.g., to List of Symbols.
% Third optional argument selects section-level or chapter-level style for the nomenclature list.
-\newcounter{dummy}% for tagging code
-\NewDocumentEnvironment{nomenclature}{O{2em} O{\nomname} O{section}}{%
+% Fourth option argument selects the style of the toc entry (by default, same as #3); the values
+% frontmatter or backmatter can be used when nomenclature is located with front or back matter. 2025/01/17
+\NewDocumentEnvironment{nomenclature}{O{2em} O{\nomname} O{section} O{#3}}{%
\setlength\columnsep{2em}
\setlength{\nomenwidth}{#1}
- \csname #3\endcsname *{#2}% this level will vary amongst users!
- \refstepcounter{dummy}\addcontentsline{toc}{#3}{#2}% \refstepcounter is a hack until tagging code evolves more
+ \MakeLinkTarget*{nomenclature}\csname #3\endcsname *{#2}\addcontentsline{toc}{#4}{#2}
\raggedright
\begin{list}{}{%
\setlength{\itemsep}{0pt}%
diff --git a/Master/texmf-dist/tex/latex/mlacls/mla.cls b/Master/texmf-dist/tex/latex/mlacls/mla.cls
index 4a3613b4a99..9013a526b88 100644
--- a/Master/texmf-dist/tex/latex/mlacls/mla.cls
+++ b/Master/texmf-dist/tex/latex/mlacls/mla.cls
@@ -23,7 +23,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mla}
- [2021/09/14 v1.0 MLA Paper Class]
+ [2024/09/13 v1.1 MLA Paper Class]
\LoadClass[letterpaper,12pt]{article}
\newcommand{\mladate}{%
@@ -54,6 +54,7 @@
\newif\ifMLA@pageheader
\newif\ifMLA@plainheadings
\newif\ifMLA@fullpage
+\newif\ifMLA@times
\DeclareOption{mla7}{\MLA@seventrue\MLA@eightfalse\MLA@eightaltfalse}
\DeclareOption{mla8}{\MLA@sevenfalse\MLA@eighttrue\MLA@eightaltfalse}
\DeclareOption{mla8alt}{\MLA@sevenfalse\MLA@eightfalse\MLA@eightalttrue}
@@ -71,6 +72,8 @@
\DeclareOption{plainheadings}{\MLA@plainheadingstrue}
\MLA@fullpagefalse
\DeclareOption{fullpage}{\MLA@fullpagetrue}
+\MLA@timestrue
+\DeclareOption{notimes}{\MLA@timesfalse}
\DeclareOption*{%
\ClassWarning{mla}{Unknown option `\CurrentOption'; ignoring}
}
@@ -80,7 +83,6 @@
\RequirePackage{fancyhdr}
\RequirePackage{fullpage}
\RequirePackage{ragged2e}
-\RequirePackage{newtxtext}
\RequirePackage{titlesec}
\RequirePackage{xstring}
\RequirePackage[american]{babel}
@@ -106,6 +108,9 @@
\ifMLA@notes
\RequirePackage{enotez}
\fi
+\ifMLA@times
+ \RequirePackage{newtxtext}
+\fi
\ifMLA@microtype
\RequirePackage{microtype}
\fi
@@ -211,6 +216,18 @@
topsep=0pt,
leftmargin=\parindent
}
+\addtolength{\skip\footins}{1pc}
+\renewcommand{\footnoterule}{%
+ \vfill
+ \kern -3pt\hrule width 0.4\columnwidth
+ \vskip 6pt
+}
+\renewcommand{\@makefnmark}{\@thefnmark}
+\renewcommand{\@makefntext}[1]{%
+ \leftskip 0.5in
+ \parindent -0.5in
+ \@makefnmark.~#1
+}
\renewenvironment{blockquote}{%
\list{}{\leftmargin 0.5in}
\item[]
diff --git a/Master/texmf-dist/tex/latex/moloch/beamercolorthememoloch-highcontrast.sty b/Master/texmf-dist/tex/latex/moloch/beamercolorthememoloch-highcontrast.sty
new file mode 100644
index 00000000000..615f897f622
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/moloch/beamercolorthememoloch-highcontrast.sty
@@ -0,0 +1,45 @@
+%%
+%% This is file `beamercolorthememoloch-highcontrast.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% beamercolorthememoloch-highcontrast.dtx (with options: `package')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from beamercolorthememoloch-highcontrast.sty.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file beamercolorthememoloch-highcontrast.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+%% ---------------------------------------------------------------------------
+%% Copyright 2025 Johan Larsson and contributors
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{beamercolorthememoloch-highcontrast}[2025-01-17 v0.5.0 Moloch color theme] % x-release-please-version
+\usecolortheme{moloch}
+
+\definecolor{mAlert}{HTML}{AD003D}
+\definecolor{mExample}{HTML}{005580}
+
+\setbeamercolor{normal text}{%
+ fg=black,
+ bg=white
+}
+\setbeamercolor{alerted text}{%
+ fg=mAlert,
+}
+\setbeamercolor{example text}{%
+ fg=mExample,
+}
+\mode<all>
+\endinput
+%%
+%% End of file `beamercolorthememoloch-highcontrast.sty'.
diff --git a/Master/texmf-dist/tex/latex/moloch/beamercolorthememoloch-tomorrow.sty b/Master/texmf-dist/tex/latex/moloch/beamercolorthememoloch-tomorrow.sty
new file mode 100644
index 00000000000..47c232f9dc5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/moloch/beamercolorthememoloch-tomorrow.sty
@@ -0,0 +1,46 @@
+%%
+%% This is file `beamercolorthememoloch-tomorrow.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% beamercolorthememoloch-tomorrow.dtx (with options: `package')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from beamercolorthememoloch-tomorrow.sty.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file beamercolorthememoloch-tomorrow.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+%% ---------------------------------------------------------------------------
+%% Copyright 2024 Johan Larsson and contributors
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{beamercolorthememoloch-tomorrow}[2025-01-17 v0.5.0 Moloch color theme] % x-release-please-version
+\usecolortheme{moloch}
+
+\definecolor{tomorrowForeground}{HTML}{1d1f21}
+\definecolor{tomorrowBackground}{RGB}{255,255,255}
+\definecolor{tomorrowHeader}{HTML}{1d1f21}
+\definecolor{tomorrowAlert}{HTML}{cc6666}
+\definecolor{tomorrowExample}{HTML}{4271ae}
+\definecolor{tomorrowProgress}{HTML}{8959a8}
+
+\setbeamercolor{normal text}{fg=tomorrowForeground,bg=tomorrowBackground}
+\setbeamercolor{moloch accent}{fg=tomorrowAccent}
+\setbeamercolor{frametitle}{bg=tomorrowHeader}
+\setbeamercolor{alerted text}{fg=tomorrowAlert}
+\setbeamercolor{example text}{fg=tomorrowExample}
+\setbeamercolor{progress bar}{fg=tomorrowProgress}
+
+\mode<all>
+\endinput
+%%
+%% End of file `beamercolorthememoloch-tomorrow.sty'.
diff --git a/Master/texmf-dist/tex/latex/moloch/beamercolorthememoloch.sty b/Master/texmf-dist/tex/latex/moloch/beamercolorthememoloch.sty
index d0e3a496e7b..ce828892cd2 100644
--- a/Master/texmf-dist/tex/latex/moloch/beamercolorthememoloch.sty
+++ b/Master/texmf-dist/tex/latex/moloch/beamercolorthememoloch.sty
@@ -23,7 +23,7 @@
%% ---------------------------------------------------------------------------
%% Copyright 2024 Johan Larsson and contributors
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamercolorthememoloch}[2024-07-09 v0.4.0 Moloch color theme] % x-release-please-version
+\ProvidesPackage{beamercolorthememoloch}[2025-01-17 v0.6.0 Moloch color theme] % x-release-please-version
\RequirePackage{pgfopts}
\pgfkeys{
/moloch/color/block/.cd,
@@ -68,7 +68,8 @@
\setbeamercolor{titlelike}{use=normal text, parent=normal text}
\setbeamercolor{author}{use=normal text, parent=normal text}
\setbeamercolor{date}{use=normal text, parent=normal text}
-\setbeamercolor{institute}{use=normal text, fg=normal text.fg!80!normal text.bg}
+\setbeamercolor{institute}{%
+ use=normal text, fg=normal text.fg!80!normal text.bg}
\setbeamercolor{structure}{use=normal text, fg=normal text.fg}
\setbeamercolor{palette primary}{%
use=normal text,
@@ -107,6 +108,7 @@
bg=normal text.bg!80!fg
}
\setbeamercolor{block body}{%
+ use=block title,
bg=block title.bg!50!normal text.bg
}
\setbeamercolor{block title alerted}{%
@@ -132,8 +134,6 @@
\setbeamercolor{block body example}{use=block body, parent=block body}
\setbeamercolor{footnote}{fg=normal text.fg!90}
\setbeamercolor{footnote mark}{fg=.}
-\setbeamercolor{footnote}{fg=normal text.fg!90}
-\setbeamercolor{footnote mark}{fg=.}
\setbeamercolor{bibliography entry author}{fg=, bg=}
\setbeamercolor{bibliography entry title}{fg=, bg=}
\setbeamercolor{bibliography entry location}{fg=, bg=}
diff --git a/Master/texmf-dist/tex/latex/moloch/beamerfontthememoloch.sty b/Master/texmf-dist/tex/latex/moloch/beamerfontthememoloch.sty
index 756958d73b8..92555b8e550 100644
--- a/Master/texmf-dist/tex/latex/moloch/beamerfontthememoloch.sty
+++ b/Master/texmf-dist/tex/latex/moloch/beamerfontthememoloch.sty
@@ -23,7 +23,7 @@
%% ---------------------------------------------------------------------------
%% Copyright 2024 Johan Larsson and contributors
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerfontthememoloch}[2024-07-09 v0.4.0 Moloch font theme] % x-release-please-version
+\ProvidesPackage{beamerfontthememoloch}[2025-01-17 v0.6.0 Moloch color theme] % x-release-please-version
\RequirePackage{etoolbox}
\RequirePackage{pgfopts}
\setbeamerfont{title}{size=\Large, series=\bfseries}
@@ -54,8 +54,8 @@
\let\moloch@titleformat\lowercase%
\setbeamerfont{title}{shape=\scshape}%
\PackageNote{beamerthememoloch}{%
- Be aware that titleformat title=allsmallcaps can lead to problems%
- }
+ Be aware that titleformat title=allsmallcaps can
+ lead to problems}
},
allcaps/.code={%
\let\moloch@titleformat\uppercase%
@@ -80,15 +80,15 @@
\let\moloch@subtitleformat\MakeLowercase%
\setbeamerfont{subtitle}{shape=\scshape}%
\PackageNote{beamerthememoloch}{%
- Be aware that titleformat subtitle=allsmallcaps can lead to problems%
- }
+ Be aware that titleformat subtitle=allsmallcaps
+ can lead to problems}
},
allcaps/.code={%
\let\moloch@subtitleformat\MakeUppercase%
\setbeamerfont{subtitle}{shape=\normalfont}%
\PackageNote{beamerthememoloch}{%
- Be aware that titleformat subtitle=allcaps can lead to problems%
- }
+ Be aware that titleformat subtitle=allcaps can
+ lead to problems}
},
}
\pgfkeys{
@@ -106,15 +106,15 @@
\let\moloch@sectiontitleformat\MakeLowercase%
\setbeamerfont{section title}{shape=\scshape}%
\PackageNote{beamerthememoloch}{%
- Be aware that titleformat section=allsmallcaps can lead to problems%
- }
+ Be aware that titleformat section=allsmallcaps
+ can lead to problems}
},
allcaps/.code={%
\let\moloch@sectiontitleformat\MakeUppercase%
\setbeamerfont{section title}{shape=\normalfont}%
\PackageNote{beamerthememoloch}{%
- Be aware that titleformat section=allcaps can lead to problems%
- }
+ Be aware that titleformat section=allcaps
+ can lead to problems}
},
}
\pgfkeys{
@@ -132,8 +132,8 @@
\let\moloch@frametitleformat\MakeLowercase%
\setbeamerfont{frametitle}{shape=\scshape}%
\PackageNote{beamerthememoloch}{%
- Be aware that titleformat frame=allsmallcaps can lead to problems%
- }
+ Be aware that titleformat frame=allsmallcaps
+ can lead to problems}
},
allcaps/.code={%
\let\moloch@frametitleformat\MakeUppercase%
diff --git a/Master/texmf-dist/tex/latex/moloch/beamerinnerthememoloch.sty b/Master/texmf-dist/tex/latex/moloch/beamerinnerthememoloch.sty
index 8cbc634ec02..56a72fb9360 100644
--- a/Master/texmf-dist/tex/latex/moloch/beamerinnerthememoloch.sty
+++ b/Master/texmf-dist/tex/latex/moloch/beamerinnerthememoloch.sty
@@ -23,7 +23,7 @@
%% ---------------------------------------------------------------------------
%% Copyright 2024 Johan Larsson and contributors
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerinnerthememoloch}[2024-07-09 v0.4.0 Moloch inner theme] % x-release-please-version
+\ProvidesPackage{beamerinnerthememoloch}[2025-01-17 v0.6.0 Moloch color theme] % x-release-please-version
\RequirePackage{keyval}
\RequirePackage{calc}
\RequirePackage{pgfopts}
@@ -54,16 +54,36 @@
\setbeamertemplate{section page}[progressbar]%
},
}
+\providebool{moloch@enableStandoutFooter}
+\providebool{moloch@enableStandoutNumbering}
+\pgfkeys{
+ /moloch/inner/standoutnumbering/.cd,
+ .is choice,
+ none/.code={
+ \boolfalse{moloch@enableStandoutNumbering}
+ \boolfalse{moloch@enableStandoutFooter}
+ },
+ show/.code={
+ \booltrue{moloch@enableStandoutNumbering}
+ \booltrue{moloch@enableStandoutFooter}
+ },
+ hide/.code={
+ \booltrue{moloch@enableStandoutNumbering}
+ \boolfalse{moloch@enableStandoutFooter}
+ }
+}
\newcommand{\moloch@inner@setdefaults}{
\pgfkeys{/moloch/inner/.cd,
sectionpage=progressbar,
- subsectionpage=none
+ subsectionpage=none,
+ standoutnumbering=none
}
}
\setbeamertemplate{title page}{
- \begin{minipage}[b][\paperheight]{\textwidth}
+ \begin{minipage}[c][\textheight]{\textwidth}
\null%
- \vfill%
+ \vspace{0pt plus 1.618fil}%
+ \vfil%
\ifx\inserttitlegraphic\@empty\else\usebeamertemplate*{title graphic}\fi
\ifx\inserttitle\@empty\else\usebeamertemplate*{title}\fi
\ifx\insertsubtitle\@empty\else\usebeamertemplate*{subtitle}\fi
@@ -73,7 +93,7 @@
}
\ifx\insertinstitute\@empty\else\usebeamertemplate*{institute}\fi
\ifx\insertdate\@empty\else\usebeamertemplate*{date}\fi
- \vfill
+ \vspace{0pt plus 1fil}%
\null
\end{minipage}%
}
@@ -137,12 +157,14 @@
\usebeamercolor[fg]{section title}
\usebeamerfont{section title}
\moloch@sectiontitleformat{\insertsectionhead}\par
- \ifx\insertsubsectionhead\@empty\else
- \usebeamercolor[fg]{subsection title}
- \usebeamerfont{subsection title}
- \insertsubsectionhead
+ \usebeamercolor[fg]{subsection title}%
+ \usebeamerfont{subsection title}%
+ \strut%
+ \ifx\insertsubsectionhead\@empty\else%
+ \insertsubsectionhead%
\fi
\end{center}
+ \vspace{\baselineskip - 1ex + 0.4pt}
}
\defbeamertemplate{section page}{progressbar}{
\centering
@@ -150,17 +172,17 @@
\raggedright
\usebeamercolor[fg]{section title}
\usebeamerfont{section title}
- \moloch@sectiontitleformat{\insertsectionhead}\\[-1ex]
+ \moloch@sectiontitleformat{\insertsectionhead}\\[-0.5\baselineskip]
\usebeamertemplate*{progress bar in section page}
\par
+ \usebeamercolor[fg]{subsection title}%
+ \usebeamerfont{subsection title}%
+ \strut%
\ifx\insertsubsectionhead\@empty\else%
- \usebeamercolor[fg]{subsection title}%
- \usebeamerfont{subsection title}%
- \insertsubsectionhead
+ \insertsubsectionhead%
\fi
\end{minipage}
\par
- \vspace{\baselineskip}
}
\newcommand{\moloch@disablesectionpage}{
\AtBeginSection{
@@ -210,8 +232,9 @@
\fill[fg]
(0,0)
rectangle
- (\moloch@progressonsectionpage, \moloch@progressonsectionpage@linewidth);
- \end{tikzpicture}
+ (\moloch@progressonsectionpage,
+ \moloch@progressonsectionpage@linewidth);
+ \end{tikzpicture}%
\tikzexternalenable%
}
\def\inserttotalframenumber{100}
@@ -221,15 +244,13 @@
\setbeamertemplate{caption label separator}{: }
\setbeamertemplate{caption}[numbered]
\setbeamertemplate{footnote}{%
- \parindent 0em\noindent%
- \raggedright
- \usebeamercolor{footnote}%
- \hbox to 0.8em{\hfil\insertfootnotemark}%
- \insertfootnotetext\par%
+ \parindent 0em\noindent\raggedright \usebeamercolor{footnote}\hbox to
+ 0.8em{\hfil\insertfootnotemark}\insertfootnotetext%%%
+ \par%
}
\define@key{beamerframe}{c}[true]{% centered
- \beamer@frametopskip=0pt plus 1fill\relax%
- \beamer@framebottomskip=0pt plus 1fill\relax%
+ \beamer@frametopskip=0pt plus 1fil\relax%
+ \beamer@framebottomskip=0pt plus 1fil\relax%
\beamer@frametopskipautobreak=0pt plus .4\paperheight\relax%
\beamer@framebottomskipautobreak=0pt plus .6\paperheight\relax%
\def\beamer@initfirstlineunskip{}%
@@ -239,7 +260,8 @@
\booltrue{moloch@standout}
\begingroup
\setkeys{beamerframe}{c}
- \setkeys{beamerframe}{noframenumbering}
+ \ifbool{moloch@enableStandoutNumbering}{}{%
+ \setkeys{beamerframe}{noframenumbering}}
\ifbeamercolorempty[bg]{palette primary}{
\setbeamercolor{background canvas}{
use=palette primary,
@@ -255,6 +277,11 @@
fg=palette primary.fg
}
\usebeamercolor[fg]{palette primary}
+ \setbeamercolor{page number in head/foot}{
+ use=palette primary,
+ fg=palette primary.fg
+ }
+ \ifbool{moloch@enableStandoutFooter}{}{\setbeamertemplate{footline}{}}
}
\pretocmd{\beamer@reseteecodes}{%
\ifbool{moloch@standout}{
diff --git a/Master/texmf-dist/tex/latex/moloch/beamerouterthememoloch.sty b/Master/texmf-dist/tex/latex/moloch/beamerouterthememoloch.sty
index 1895dbc9402..e6113aa9532 100644
--- a/Master/texmf-dist/tex/latex/moloch/beamerouterthememoloch.sty
+++ b/Master/texmf-dist/tex/latex/moloch/beamerouterthememoloch.sty
@@ -23,7 +23,7 @@
%% ---------------------------------------------------------------------------
%% Copyright 2024 Johan Larsson and contributors
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerouterthememoloch}[2024-07-09 v0.4.0 Moloch outer theme] % x-release-please-version
+\ProvidesPackage{beamerouterthememoloch}[2025-01-17 v0.6.0 Moloch color theme] % x-release-please-version
\RequirePackage{calc}
\RequirePackage{pgfopts}
\pgfkeys{
@@ -97,18 +97,20 @@
\totalheightof{%
\ifcsdef{moloch@frametitleformat}{\moloch@frametitleformat X}{X}%
}%
-}%
+ }%
}
\newcommand{\moloch@frametitlestrut@end}{%
- \vphantom{\rule[-\moloch@frametitle@padding]{0pt}{\moloch@frametitle@padding}}
+ \vphantom{%
+ \rule[-\moloch@frametitle@padding]{0pt}{\moloch@frametitle@padding}%
+ }
}
\defbeamertemplate{frametitle}{plain}{%
\nointerlineskip%
\begin{beamercolorbox}[%
wd=\paperwidth,%
leftskip=1.6ex,%
- rightskip=\the\glueexpr 1.6ex plus 1fill\relax,%
+ rightskip=\the\glueexpr 1.6ex plus 1fil\relax,%
]{frametitle}%
\usebeamerfont{frametitle}%
\moloch@frametitlestrut@start%
@@ -128,7 +130,8 @@
\moloch@frametitlestrut@end%
\end{beamercolorbox}%
}
-\setbeamertemplate{frametitle continuation}{\romannumeral\insertcontinuationcount}
+\setbeamertemplate{frametitle continuation}{%
+ \romannumeral\insertcontinuationcount}
\newlength{\moloch@progressinheadfoot}
\newlength{\moloch@progressinheadfoot@linewidth}
\setlength{\moloch@progressinheadfoot@linewidth}{0.4pt}
diff --git a/Master/texmf-dist/tex/latex/moloch/beamerthememoloch.sty b/Master/texmf-dist/tex/latex/moloch/beamerthememoloch.sty
index 4f47627e301..5a27beb15de 100644
--- a/Master/texmf-dist/tex/latex/moloch/beamerthememoloch.sty
+++ b/Master/texmf-dist/tex/latex/moloch/beamerthememoloch.sty
@@ -21,7 +21,7 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerthememoloch}[2024-07-09 v0.4.0 Moloch Beamer theme] % x-release-please-version
+\ProvidesPackage{beamerthememoloch}[2025-01-17 v0.6.0 Moloch color theme] % x-release-please-version
\RequirePackage{pgfopts}
\pgfkeys{/moloch/.cd,
.search also={
diff --git a/Master/texmf-dist/tex/latex/morefloats/morefloats.sty b/Master/texmf-dist/tex/latex/morefloats/morefloats.sty
index c79436a977b..48152d6e584 100644
--- a/Master/texmf-dist/tex/latex/morefloats/morefloats.sty
+++ b/Master/texmf-dist/tex/latex/morefloats/morefloats.sty
@@ -9,33 +9,28 @@
%% This is a generated file.
%%
%% Project: morefloats
-%% Version: 2015/07/22 v1.0h
+%% Version: 2025/01/28 v1.1a
%%
-%% Copyright (C) 2010 - 2015 by
-%% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de>
+%% Copyright (C) 2010 - 2025 by
+%% H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de>
%% Portions of code copyrighted by other people as marked.
%%
-%% The usual disclaimer applies:
-%% If it doesn't work right that's your problem.
-%% (Nevertheless, send an e-mail to the maintainer
-%% when you find an error in this package.)
-%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.3c of this license or (at your option) any later
%% version. This version of this license is in
-%% http://www.latex-project.org/lppl/lppl-1-3c.txt
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
%% and the latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
+%% https://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of
-%% LaTeX version 2005/12/01 or later.
+%% LaTeX version 2005-12-01 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
%% The Current Maintainer of this work is H.-Martin Muench.
%%
%% LaTeX 2015 provides the extrafloats command.
-%% Don Hosek, Quixote, 1990/07/27 (Thanks!)
+%% Don Hosek, Quixote, 1990-07-27 (Thanks!)
%% invented the main code for handling more floats
%% before extrafloats was available.
%% Maintenance has been taken over in September 2010
@@ -50,27 +45,17 @@
%% morefloats-example.tex, morefloats-example.pdf.
%%
%% In memoriam
-%% Claudia Simone Barth + 1996/01/30
-%% Tommy Muench + 2014/01/02
-%% Hans-Klaus Muench + 2014/08/24
+%% Claudia Simone Barth + 1996-01-30
+%% Tommy Muench + 2014-01-02
+%% Hans-Klaus Muench + 2014-08-24
%%
\NeedsTeXFormat{LaTeX2e}[2011/06/27]
-%% The current format at the time of the release of this version of the
-%% morefloats package was 2015/01/01, patch level 2.
-\ProvidesPackage{morefloats}[2015/07/22 v1.0h
- Raise limit of unprocessed floats (HMM)]
-
-\RequirePackage{kvoptions}[2011/06/30]% v3.11
-%% morefloats may work with earlier versions of LaTeX2e and that
-%% package, but this was not tested.
-%% Please consider updating your LaTeX and package
-%% to the most recent version (if they are not already the most
-%% recent version).
+\ProvidesPackage{morefloats}[2025/01/28 v1.1a Raise limit of unprocessed floats (HMM)]
+\RequirePackage{kvoptions}[2011/06/30]% v3.11, newer versions exist!
\SetupKeyvalOptions{family=morefloats,prefix=morefloats@}
\DeclareStringOption{maxfloats}% \morefloats@maxfloats
\DeclareStringOption{morefloats}% \morefloats@morefloats
-
\ProcessKeyvalOptions*
\ifx\morefloats@maxfloats\@empty%
@@ -227,10 +212,9 @@
%% Not new format, otherwise the last \endinput would have been applied.
%% Test for e-TeX:
-\RequirePackage{ifetex}[2011/12/15]% v1.2
-\ifetex%
- %% then we can use code similar to the one from David Carlisle,
- %% https://tex.stackexchange.com/a/212483/6865
+\RequirePackage{ifetex}[2011/12/15]% v1.2, replaced by iftex-package nowadays
+\ifetex%% then we can use code similar to the one from David Carlisle,
+ %% https://tex.stackexchange.com/a/212483
\mathchardef\float@count=32767\relax%
\gdef\extrafloats#1{%
\ifnum#1>\z@\relax%
diff --git a/Master/texmf-dist/tex/latex/multirow/bigdelim.sty b/Master/texmf-dist/tex/latex/multirow/bigdelim.sty
index 12200f5e334..09aafed5dc2 100644
--- a/Master/texmf-dist/tex/latex/multirow/bigdelim.sty
+++ b/Master/texmf-dist/tex/latex/multirow/bigdelim.sty
@@ -19,11 +19,11 @@
%% 2005/12/01 or later.
%%
%% Copyright (C) 1994 by \O ystein Bache
-%% Copyright (C) 2016-2021 by Pieter van Oostrum <pieter@vanoostrum.org>
+%% Copyright (C) 2016-2024 by Pieter van Oostrum <pieter@vanoostrum.org>
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{bigdelim}
- [2021/03/15 v2.8
+ [2024/11/12 v2.9
Create big delimiters in tabular or array]
\RequirePackage{multirow}
\newcommand\ldelim[2]{\@ifnextchar[{\@ldelim{#1}{#2}}{\@ldelim{#1}{#2}[0pt]}}
diff --git a/Master/texmf-dist/tex/latex/multirow/bigstrut.sty b/Master/texmf-dist/tex/latex/multirow/bigstrut.sty
index d419e14ff56..2aaa7af39df 100644
--- a/Master/texmf-dist/tex/latex/multirow/bigstrut.sty
+++ b/Master/texmf-dist/tex/latex/multirow/bigstrut.sty
@@ -19,11 +19,11 @@
%% 2005/12/01 or later.
%%
%% Copyright (C) 1994 by Jerry Leichter
-%% Copyright (C) 2016-2021 by Pieter van Oostrum <pieter@vanoostrum.org>
+%% Copyright (C) 2016-2024 by Pieter van Oostrum <pieter@vanoostrum.org>
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{bigstrut}
- [2021/03/15 v2.8
+ [2024/11/12 v2.9
Provide larger struts in tabulars]
\@ifundefined{bigstrutjot}{\newdimen\bigstrutjot}{}\bigstrutjot=2pt
\newcommand\bigstrut[1][x]{%
diff --git a/Master/texmf-dist/tex/latex/multirow/multirow.sty b/Master/texmf-dist/tex/latex/multirow/multirow.sty
index 423d9e80def..3a9b8912fab 100644
--- a/Master/texmf-dist/tex/latex/multirow/multirow.sty
+++ b/Master/texmf-dist/tex/latex/multirow/multirow.sty
@@ -19,11 +19,11 @@
%% 2005/12/01 or later.
%%
%% Copyright (C) 1994 by Jerry Leichter
-%% Copyright (C) 2016-2021 by Pieter van Oostrum <pieter@vanoostrum.org>
+%% Copyright (C) 2016-2024 by Pieter van Oostrum <pieter@vanoostrum.org>
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{multirow}%
- [2021/03/15 v2.8
+ [2024/11/12 v2.9
Span multiple rows of a table]%
\newif\ifmultirowdebug
\DeclareOption{debug}{\multirowdebugtrue}
@@ -78,6 +78,7 @@
{\ifnum0=`}\fi
\ST@save@lineno
\@ifstar{\MRST@xtabularcr}{\ST@xtabularcr}}
+\ifx\ST@rowht\undefined
\def\MRST@cr{%
\noalign{%
\ifnum\ST@pboxht<\ST@lineht
@@ -93,6 +94,23 @@
\global\advance\ST@pageleft -\ST@toadd
\global\ST@toadd=\z@
\ST@trace@cr\thr@@{Space left for tabular: \the\ST@pageleft}}}
+\else
+\def\MRST@cr{%
+ \noalign{%
+ \ifnum\ST@pboxht<\ST@rowht
+ \global\advance\ST@pageleft -\ST@rowht
+ \global\ST@prevht\ST@rowht
+ \else
+ \ST@trace@cr\thr@@{Added par box with height \the\ST@pboxht}%
+ \global\advance\ST@pageleft -\ST@pboxht
+ \global\advance\ST@pageleft -0.1\ST@pboxht
+ \global\ST@prevht\ST@pboxht
+ \global\ST@pboxht\z@
+ \fi
+ \global\advance\ST@pageleft -\ST@toadd
+ \global\ST@toadd=\z@
+ \ST@trace@cr\thr@@{Space left for tabular: \the\ST@pageleft}}}
+\fi
\fi
\def\MRST@xtabularcr{%
\@ifnextchar[%]
diff --git a/Master/texmf-dist/tex/latex/naive-ebnf/naive-ebnf.sty b/Master/texmf-dist/tex/latex/naive-ebnf/naive-ebnf.sty
index b89baa7f1fb..6ef3417f2fc 100644
--- a/Master/texmf-dist/tex/latex/naive-ebnf/naive-ebnf.sty
+++ b/Master/texmf-dist/tex/latex/naive-ebnf/naive-ebnf.sty
@@ -7,7 +7,7 @@
%% naive-ebnf.dtx (with options: `package')
%% (The MIT License)
%%
-%% Copyright (c) 2023 Yegor Bugayenko
+%% Copyright (c) 2023-2024 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
@@ -31,7 +31,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{naive-ebnf}
-[2024/09/06 0.0.16 EBNF in Plain Text]
+[2024/11/13 0.0.18 EBNF in Plain Text]
@@ -147,16 +147,19 @@
\regex_replace_all:nnN
{ /(.+?)/ }%
{\c{ebnf@regexp}{\1}} \ebnf_tmp%
+ \cs_undefine:N\ebnf_curled%
\cs_new:Npn\ebnf_curled{%
\regex_replace_all:nnNT
- { \{\s(([^\s]*(\s[^\}\{]|\s(\}|\{)[^\s])?)*)\s\}(\+)? }%
+ { \{\s(([^\s]*(\s[^\}\{]|\s(\}|\{)[^\s])?)*)\s\}([\+\*])? }%
{\c{ebnf@repetition}[\5]{\1}} \ebnf_tmp \ebnf_curled}%
\ebnf_curled%
+ \cs_undefine:N\ebnf_brackets%
\cs_new:Npn\ebnf_brackets{%
\regex_replace_all:nnNT
{ \(\s(([^\s]*(\s[^\)\(]|\s(\)|\()[^\s])?)*)\s\) }%
{\c{ebnf@grouping}{\1}} \ebnf_tmp \ebnf_brackets}%
\ebnf_brackets%
+ \cs_undefine:N\ebnf_squares%
\cs_new:Npn\ebnf_squares{%
\regex_replace_all:nnNT
{ \[\s(([^\s]*(\s[^\]\[]|\s(\]|\[)[^\s])?)*)\s\] }%
diff --git a/Master/texmf-dist/tex/latex/neoschool/neoschool.cls b/Master/texmf-dist/tex/latex/neoschool/neoschool.cls
new file mode 100644
index 00000000000..388cb45ab60
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/neoschool/neoschool.cls
@@ -0,0 +1,7311 @@
+% neoschool.cls
+%
+% copyright (C) 2025 Razik Ikhlef
+% razik.ikhlef@csilyon.fr
+%
+% The newest version of this documentclass should always be available
+% from the following web page: https://apps.edulatex.xyz/neoschool/
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{neoschool}[2025/01/03 v1.0.0]
+
+\RequirePackage[table,svgnames,dvipsnames,x11names]{xcolor}
+
+\RequirePackage{kvoptions}
+\RequirePackage{siunitx}
+\RequirePackage{pgffor}
+
+\SetupKeyvalOptions{
+ family=neoschool,
+ prefix=neoschool@
+}
+
+\DeclareStringOption[cyprus]{theme}
+\def\neo@cyprus{cyprus}
+\def\neo@kassio{kassio}
+\def\neo@frost{frost}
+\def\neo@spring{spring}
+\def\neo@arbutus{arbutus}
+\def\neo@duo{duo}
+\def\neo@navy{navy}
+\def\neo@royal{royal}
+
+\ProcessKeyvalOptions*\relax
+
+% Main Colors
+\ifx\neoschool@theme\neo@cyprus
+ \definecolor{titleColor}{HTML}{a7601f}
+ \definecolor{theoremColor}{HTML}{557400}
+ \definecolor{definitionColor}{HTML}{bf4400}
+ \definecolor{methodColor}{HTML}{3f6faf}
+ \definecolor{remarkColor}{HTML}{7f475a}
+ \definecolor{alternateColor}{HTML}{59786f}
+ \definecolor{applicationColor}{HTML}{00824f}
+ \definecolor{codeColor}{HTML}{9a456f}
+ \colorlet{sectionColor}{theoremColor}
+ \colorlet{subsectionColor}{definitionColor}
+ \colorlet{subsubsectionColor}{methodColor}
+\else\ifx\neoschool@theme\neo@kassio
+ \definecolor{titleColor}{HTML}{3c3bbe}
+ \definecolor{theoremColor}{HTML}{a01f64}
+ \definecolor{definitionColor}{HTML}{2f5f9f}
+ \definecolor{methodColor}{HTML}{a04646}
+ \definecolor{remarkColor}{HTML}{af4988}
+ \definecolor{alternateColor}{HTML}{776f79}
+ \definecolor{applicationColor}{HTML}{7022bf}
+ \definecolor{codeColor}{HTML}{9f248a}
+ \colorlet{sectionColor}{theoremColor}
+ \colorlet{subsectionColor}{definitionColor}
+ \colorlet{subsubsectionColor}{methodColor}
+ \else\ifx\neoschool@theme\neo@frost
+ \definecolor{titleColor}{HTML}{007a85}
+ \definecolor{theoremColor}{HTML}{004fc0}
+ \definecolor{definitionColor}{HTML}{00845f}
+ \definecolor{methodColor}{HTML}{7f5ae0}
+ \definecolor{remarkColor}{HTML}{204f9a}
+ \definecolor{alternateColor}{HTML}{66657f}
+ \definecolor{applicationColor}{HTML}{1f6fbf}
+ \definecolor{codeColor}{HTML}{004fc0}
+ \colorlet{sectionColor}{theoremColor}
+ \colorlet{subsectionColor}{definitionColor}
+ \colorlet{subsubsectionColor}{methodColor}
+ \else\ifx\neoschool@theme\neo@spring
+ \definecolor{titleColor}{HTML}{cf2f4f}
+ \definecolor{theoremColor}{HTML}{007f68}
+ \definecolor{definitionColor}{HTML}{cb26a0}
+ \definecolor{methodColor}{HTML}{5f5fdf}
+ \definecolor{remarkColor}{HTML}{9d5e7a}
+ \definecolor{alternateColor}{HTML}{777294}
+ \definecolor{applicationColor}{HTML}{b6540f}
+ \definecolor{codeColor}{HTML}{1f6fbf}
+ \colorlet{sectionColor}{theoremColor}
+ \colorlet{subsectionColor}{definitionColor}
+ \colorlet{subsubsectionColor}{methodColor}
+ \else\ifx\neoschool@theme\neo@arbutus
+ \definecolor{titleColor}{HTML}{007000}
+ \definecolor{theoremColor}{HTML}{8f2f30}
+ \definecolor{definitionColor}{HTML}{00704f}
+ \definecolor{methodColor}{HTML}{906200}
+ \definecolor{remarkColor}{HTML}{8a5f4a}
+ \definecolor{alternateColor}{HTML}{6e678f}
+ \definecolor{applicationColor}{HTML}{557000}
+ \definecolor{codeColor}{HTML}{0f7688}
+ \colorlet{sectionColor}{theoremColor}
+ \colorlet{subsectionColor}{definitionColor}
+ \colorlet{subsubsectionColor}{methodColor}
+ \else\ifx\neoschool@theme\neo@duo
+ \definecolor{titleColor}{HTML}{375cd8}
+ \definecolor{theoremColor}{HTML}{9f4a00}
+ \definecolor{definitionColor}{HTML}{4250ef}
+ \definecolor{methodColor}{HTML}{8f5a3a}
+ \definecolor{remarkColor}{HTML}{856f4a}
+ \definecolor{alternateColor}{HTML}{63728f}
+ \definecolor{applicationColor}{HTML}{6052cf}
+ \definecolor{codeColor}{HTML}{4a7d00}
+ \colorlet{sectionColor}{theoremColor}
+ \colorlet{subsectionColor}{definitionColor}
+ \colorlet{subsubsectionColor}{methodColor}
+ \else\ifx\neoschool@theme\neo@navy
+ \definecolor{titleColor}{RGB}{25,75,125}
+ \definecolor{theoremColor}{RGB}{145,45,45}
+ \definecolor{definitionColor}{RGB}{35,105,85}
+ \definecolor{methodColor}{RGB}{125,75,25}
+ \definecolor{remarkColor}{RGB}{125,75,95}
+ \definecolor{alternateColor}{RGB}{85,95,105}
+ \definecolor{applicationColor}{RGB}{75,55,125}
+ \definecolor{codeColor}{RGB}{45,95,115}
+ \colorlet{sectionColor}{theoremColor}
+ \colorlet{subsectionColor}{definitionColor}
+ \colorlet{subsubsectionColor}{methodColor}
+ \else\ifx\neoschool@theme\neo@royal
+ \definecolor{titleColor}{RGB}{5,80,174}
+ \definecolor{theoremColor}{RGB}{161,40,40}
+ \definecolor{definitionColor}{RGB}{0,115,85}
+ \definecolor{methodColor}{RGB}{180,95,45}
+ \definecolor{remarkColor}{RGB}{130,75,95}
+ \definecolor{alternateColor}{RGB}{90,100,110}
+ \definecolor{applicationColor}{RGB}{180,145,35}
+ \definecolor{codeColor}{RGB}{60,89,90}
+ \colorlet{sectionColor}{theoremColor}
+ \colorlet{subsectionColor}{definitionColor}
+ \colorlet{subsubsectionColor}{methodColor}
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+\fi
+
+% Colors for code environments
+\colorlet{codeBackground}{codeColor!5}
+\colorlet{codeEmph}{methodColor}
+\colorlet{codeKeyword}{titleColor}
+\colorlet{codeString}{theoremColor}
+\colorlet{codeComment}{alternateColor}
+\colorlet{codeNumber}{alternateColor}
+
+% Initial setup
+\def\neo@palette{unicolor}
+
+% Basic boolean declarations
+\newif\ifneo@normal
+\newif\ifneo@unicolor
+\newif\ifneo@english
+\newif\ifneo@french
+\newif\ifneo@german
+
+% Style booleans
+\newif\ifneo@classythm
+\newif\ifneo@soberthm
+\newif\ifneo@elegantthm
+\newif\ifneo@classicthm
+\newif\ifneo@slantedthm
+\newif\ifneo@shadedthm
+\newif\ifneo@boxedthm
+\newif\ifneo@amslikethm
+
+% Title booleans
+\newif\ifneo@eval
+\newif\ifneo@evalicons
+\newif\ifneo@evalgrade
+\newif\ifneo@evaliconsgrade
+\newif\ifneo@exam
+\newif\ifneo@fancybox
+\newif\ifneo@onlytitleleft
+\newif\ifneo@onlytitle
+\newif\ifneo@onlytitleright
+\newif\ifneo@bubbles
+\newif\ifneo@shortbubbles
+\newif\ifneo@mockexam
+\newif\ifneo@shortexam
+\newif\ifneo@shorteval
+\newif\ifneo@shorttitle
+\newif\ifneo@shortlesson
+
+% Layout booleans
+\newif\ifneo@noframe
+\newif\ifneo@nocodeframe
+\newif\ifneo@noback
+
+% Font booleans
+\newif\ifneo@sfbody
+\newif\ifneo@sfall
+\newif\ifneo@mathastext
+
+% Other booleans
+\newif\ifneo@print
+\newif\ifneo@fullheader
+\newif\ifneo@headrule
+\newif\ifneo@footrule
+\newif\ifneo@headfootrule
+\newif\ifneo@shuffle
+\newif\ifneo@titlerule
+\newif\ifneo@titlemidrule
+\newif\ifneo@titlefullrule
+\newif\ifneo@titleornament
+
+%% Package specific options
+\newif\ifneo@apmep
+\newif\ifneo@mathics
+\newif\ifneo@listings
+\newif\ifneo@minted
+\newif\ifneo@frenchmath
+
+%% ==============================================================================
+%% Basic Options and Setup Commands
+%% ==============================================================================
+
+% String options declarations
+\DeclareStringOption[black]{globalcolor}
+\DeclareStringOption[sectionColor]{headcolor}
+\DeclareStringOption[subsectionColor]{subcolor}
+\DeclareStringOption[subsubsectionColor]{subsubcolor}
+\DeclareStringOption[titleColor]{titlecolor}
+\DeclareStringOption[]{titlehexcolor}
+\DeclareStringOption[alternateColor]{headfootcolor}
+
+\ProcessKeyvalOptions*\relax
+
+\ifx\neoschool@titlehexcolor\@empty
+\else
+ \definecolor{titleColor}{HTML}{\neoschool@titlehexcolor}
+ \colorlet{subjectColor}{titleColor!80}
+ \colorlet{subtitleColor}{titleColor!60}
+\fi
+
+\DeclareOption{normal}{%
+ \neo@normaltrue\neo@unicolorfalse
+ \colorlet{lemmaColor}{theoremColor}
+ \colorlet{corollaryColor}{theoremColor}
+ \colorlet{propertyColor}{theoremColor}
+ \colorlet{propositionColor}{theoremColor}
+ \colorlet{solutionColor}{theoremColor}
+ \colorlet{activityColor}{applicationColor}
+ \colorlet{codebackColor}{codeColor!5}
+ \colorlet{exerciseColor}{\neoschool@titlecolor}
+ \colorlet{exampleColor}{titleColor}
+ \colorlet{subjectColor}{sectionColor!80!white}
+ \colorlet{subtitleColor}{sectionColor!60!white}
+}
+
+% Unicolor option setup
+\DeclareOption{unicolor}{%
+ \def\neo@palette{unicolor}
+ \neo@normalfalse\neo@unicolortrue
+ \colorlet{definitionColor}{\neoschool@titlecolor}
+ \colorlet{theoremColor}{\neoschool@titlecolor}
+ \colorlet{lemmaColor}{\neoschool@titlecolor}
+ \colorlet{corollaryColor}{\neoschool@titlecolor}
+ \colorlet{propositionColor}{\neoschool@titlecolor}
+ \colorlet{propertyColor}{\neoschool@titlecolor}
+ \colorlet{activityColor}{\neoschool@titlecolor}
+ \colorlet{methodColor}{\neoschool@titlecolor}
+ \colorlet{applicationColor}{\neoschool@titlecolor}
+ \colorlet{codeColor}{\neoschool@titlecolor}
+ \colorlet{exerciseColor}{\neoschool@titlecolor}
+ \colorlet{remarkColor}{\neoschool@titlecolor}
+ \colorlet{exampleColor}{\neoschool@titlecolor}
+ \colorlet{solutionColor}{\neoschool@titlecolor}
+ \colorlet{codebackColor}{\neoschool@titlecolor!5!white}
+ \colorlet{subjectColor}{\neoschool@titlecolor!80}
+ \colorlet{subtitleColor}{\neoschool@titlecolor!60}
+ \renewcommand{\neoschool@headcolor}{\neoschool@titlecolor}
+ \renewcommand{\neoschool@subcolor}{\neoschool@titlecolor}
+ \renewcommand{\neoschool@subsubcolor}{\neoschool@titlecolor}
+}
+
+% Palette of headings color
+\DeclareOption{gradientheadpalette}{%
+ \renewcommand{\neoschool@headcolor}{\neoschool@titlecolor!80!white}
+ \renewcommand{\neoschool@subcolor}{\neoschool@titlecolor!70!white}
+ \renewcommand{\neoschool@subsubcolor}{\neoschool@titlecolor!60!white}
+ \colorlet{subjectColor}{\neoschool@titlecolor!80}
+ \colorlet{subtitleColor}{\neoschool@titlecolor!60}
+}
+
+%% ==============================================================================
+%% Font Options
+%% ==============================================================================
+
+% Fonts
+\DeclareStringOption{mainface}
+\DeclareStringOption{mainfaceoptions}
+\DeclareStringOption{sansface}
+\DeclareStringOption{sansfaceoptions}
+\DeclareStringOption{monoface}
+\DeclareStringOption{monofaceoptions}
+\DeclareStringOption{mathface}
+\DeclareStringOption{mathfaceoptions}
+\DeclareStringOption{facefamily}
+\DeclareStringOption{facefamilyoptions}
+
+%% ==============================================================================
+%% Heading Style Options
+%% ==============================================================================
+
+% Global heading styles
+\DeclareStringOption[sffamily]{headstyle}
+\DeclareStringOption[bfseries]{headweight}
+\DeclareStringOption[scshape]{headshape}
+
+% Title-specific styles
+\DeclareStringOption[\neoschool@headstyle]{titlestyle}
+\DeclareStringOption[\neoschool@headweight]{titleweight}
+\DeclareStringOption[upshape]{titleshape}
+\DeclareStringOption[center]{titlealign}
+
+% Header and Footer styles
+\DeclareStringOption[\neoschool@titlestyle]{headfootstyle}
+
+% Section-specific styles
+\DeclareStringOption[circle]{sectionnumstyle} % circle, box, dash, plain
+\DeclareStringOption[sc]{sectiontextstyle} % sc, upper, lower
+\DeclareStringOption[normal]{sectionstyle} % ornaments, underline, normal, highlighted, shadedline
+\DeclareStringOption[center]{sectionalign}
+
+%% ==============================================================================
+%% Language Support and Setup
+%% ==============================================================================
+
+% Language setup command
+\newcommand{\neo@setupLanguage}[1]{%
+ \neo@englishfalse
+ \neo@frenchfalse
+ \neo@germanfalse
+ \@nameuse{neo@#1true}
+ \renewcommand{\neo@lang}{#1}
+}
+
+% Names definition commands
+\newcommand{\neo@definenames@one}[9]{%
+ \expandafter\def\csname neo@theoremname\endcsname{#1}
+ \expandafter\def\csname neo@propositionname\endcsname{#2}
+ \expandafter\def\csname neo@propertyname\endcsname{#3}
+ \expandafter\def\csname neo@lemmaname\endcsname{#4}
+ \expandafter\def\csname neo@corollaryname\endcsname{#5}
+ \expandafter\def\csname neo@definitionname\endcsname{#6}
+ \expandafter\def\csname neo@examplename\endcsname{#7}
+ \expandafter\def\csname neo@exercisename\endcsname{#8}
+ \expandafter\def\csname neo@remarkname\endcsname{#9}
+}
+
+\newcommand{\neo@definenames@two}[9]{%
+ \expandafter\def\csname neo@problemname\endcsname{#1}
+ \expandafter\def\csname neo@conjecturename\endcsname{#2}
+ \expandafter\def\csname neo@activityname\endcsname{#3}
+ \expandafter\def\csname neo@methodname\endcsname{#4}
+ \expandafter\def\csname neo@applicationname\endcsname{#5}
+ \expandafter\def\csname neo@competencies\endcsname{#6}
+ \expandafter\def\csname neo@codename\endcsname{#7}
+ \expandafter\def\csname neo@algorithmname\endcsname{#8}
+ \expandafter\def\csname neo@pagename\endcsname{#9}
+}
+
+\newcommand{\neo@definenames@three}[1]{%
+ \expandafter\def\csname neo@solutionname\endcsname{#1}
+}
+
+\newcommand{\neo@definepath}[1]{%
+ \expandafter\def\csname neo@pathname\endcsname{#1}
+}
+
+\newcommand{\neo@defineextra}[2]{%
+ \expandafter\def\csname neo@examplesname\endcsname{#1}
+ \expandafter\def\csname neo@solutiongaptext\endcsname{#2}
+}
+
+% Language options
+\DeclareOption{english}{%
+ \neo@setupLanguage{english}
+ \AtEndOfClass{\sisetup{locale = US,detect-all}}
+ \neo@definenames@one{Theorem}{Proposition}{Property}{Lemma}{Corollary}{Definition}{Example}{Exercise}{Remark}
+ \neo@definenames@two{Problem}{Conjecture}{Activity}{Method}{Application}{Competencies}{Listing}{Algorithm}{Page}
+ \neo@definenames@three{Solution}
+ \neo@defineextra{Examples}{of exercise }
+ \neo@definepath{Path}
+}
+
+\DeclareOption{french}{%
+ \neo@setupLanguage{french}
+ \AtEndOfClass{%
+ \sisetup{locale = FR,detect-all}%
+ \renewcommand*{\today}{\number\day\space\ifcase\month\or
+ janvier\or février\or mars\or avril\or mai\or juin\or
+ juillet\or août\or septembre\or octobre\or novembre\or
+ décembre\fi\space\number\year}%
+ }
+ \neo@definenames@one{Théorème}{Proposition}{Propriété}{Lemme}{Corollaire}{Définition}{Exemple}{Exercice}{Remarque}
+ \neo@definenames@two{Problème}{Conjecture}{Activité}{Méthode}{Application}{Compétences}{Programme}{Algorithme}{Page}
+ \neo@definenames@three{Corrigé}
+ \neo@defineextra{Exemples}{de l'exercice }
+ \neo@definepath{Parcours}
+}
+
+\DeclareOption{german}{%
+ \neo@setupLanguage{german}
+ \AtEndOfClass{\sisetup{locale = DE,detect-all}}
+ \neo@definenames@one{Theorem}{Proposition}{Eigenschaft}{Lemma}{Korollar}{Definition}{Beispiel}{Übung}{Bemerkung}
+ \neo@definenames@two{Problem}{Vermutung}{Aktivität}{Methode}{Anwendung}{Fähigkeiten}{Auflistung}{Algorithmus}{Seite}
+ \neo@definenames@three{Lösung}
+ \neo@defineextra{Beispiele}{von Übung }
+ \neo@definepath{Stufe}
+}
+
+\DeclareOption{nofrenchlist}{\AtEndOfClass{\frenchsetup{StandardItemLabels=true}}}
+\DeclareOption{frenchlistaspar}{\AtEndOfClass{\frenchsetup{ListItemsAsPar=true}}}
+
+%% ==============================================================================
+%% Style Setup
+%% ==============================================================================
+
+% Style setup command
+\newcommand{\neo@setupstyle}[1]{%
+ \neo@classythmfalse
+ \neo@soberthmfalse
+ \neo@elegantthmfalse
+ \neo@classicthmfalse
+ \neo@slantedthmfalse
+ \neo@shadedthmfalse
+ \neo@boxedthmfalse
+ \neo@amslikethmfalse
+ \@nameuse{neo@#1true}
+ \def\neo@style{#1}
+}
+
+% Style options
+\DeclareOption{classythm}{\neo@setupstyle{classythm}}
+\DeclareOption{soberthm}{\neo@setupstyle{soberthm}}
+\DeclareOption{classicthm}{\neo@setupstyle{classicthm}}
+\DeclareOption{slantedthm}{\neo@setupstyle{slantedthm}}
+\DeclareOption{shadedthm}{\neo@setupstyle{shadedthm}}
+\DeclareOption{boxedthm}{\neo@setupstyle{boxedthm}}
+\DeclareOption{amslikethm}{\neo@setupstyle{amslikethm}}
+\DeclareOption{elegantthm}{\neo@setupstyle{elegantthm}}
+
+\DeclareStringOption[colorful]{lststyle}
+
+%% ==============================================================================
+%% Layout Settings
+%% ==============================================================================
+
+% Layout setup command
+\newcommand{\neo@setuplayout}[1]{%
+ \@nameuse{neo@#1true}
+}
+
+% Frame and background options
+\DeclareOption{noback}{\neo@setuplayout{noback}}
+\DeclareOption{noframe}{\neo@setuplayout{noframe}}
+\DeclareOption{nocodeframe}{\neo@setuplayout{nocodeframe}}
+
+\DeclareStringOption[1em]{indent}
+\DeclareBoolOption{noindent}
+
+\AtEndOfPackage{%
+ \ifneoschool@noindent
+ \AtBeginDocument{\setlength{\parindent}{0pt}}%
+ \else
+ \AtBeginDocument{\setlength{\parindent}{\neoschool@indent}}%
+ \fi
+}
+
+%% ==============================================================================
+%% Font Settings
+%% ==============================================================================
+
+% Font setup command
+\newcommand{\neo@setupfont}[1]{%
+ \@nameuse{neo@#1true}
+ \ifx#1sfall
+ \neo@sfbodytrue
+ \fi
+}
+
+% Font options
+\DeclareOption{sfbody}{\neo@setupfont{sfbody}}
+\DeclareOption{sfall}{\neo@setupfont{sfall}}
+\DeclareOption{mathastext}{\neo@setupfont{mathastext}}
+
+%% ==============================================================================
+%% Title Settings
+%% ==============================================================================
+
+% Title setup command
+\newcommand{\neo@setuptitle}[1]{%
+ \neo@evalfalse
+ \neo@evaliconsfalse
+ \neo@evalgradefalse
+ \neo@evaliconsgradefalse
+ \neo@examfalse
+ \neo@fancyboxfalse
+ \neo@onlytitleleftfalse
+ \neo@onlytitlefalse
+ \neo@onlytitlerightfalse
+ \neo@bubblesfalse
+ \neo@shortbubblesfalse
+ \neo@mockexamfalse
+ \neo@shortexamfalse
+ \@nameuse{neo@#1true}
+}
+
+% Title options
+\DeclareOption{exam}{\neo@setuptitle{exam}}
+\DeclareOption{eval}{\neo@setuptitle{eval}}
+\DeclareOption{evalicons}{\neo@setuptitle{evalicons}}
+\DeclareOption{evalgrade}{\neo@setuptitle{evalgrade}}
+\DeclareOption{evaliconsgrade}{\neo@setuptitle{evaliconsgrade}}
+\DeclareOption{fancybox}{\neo@setuptitle{fancybox}}
+\DeclareOption{onlytitleleft}{\neo@setuptitle{onlytitleleft}}
+\DeclareOption{onlytitle}{\neo@setuptitle{onlytitle}}
+\DeclareOption{onlytitleright}{\neo@setuptitle{onlytitleright}}
+\DeclareOption{bubbles}{\neo@setuptitle{bubbles}}
+\DeclareOption{shortbubbles}{\neo@setuptitle{shortbubbles}}
+\DeclareOption{mockexam}{\neo@setuptitle{mockexam}}
+\DeclareOption{shortexam}{\neo@setuptitle{shortexam}}
+\DeclareOption{shorteval}{\neo@setuptitle{shorteval}}
+\DeclareOption{shorttitle}{\neo@setuptitle{shorttitle}}
+\DeclareOption{shortlesson}{\neo@setuptitle{shortlesson}}
+
+%% ==============================================================================
+%% Print and Color Settings
+%% ==============================================================================
+
+% Print setup command
+\newcommand{\neo@setupprint}{%
+ \neo@printtrue%
+ \neo@normaltrue\neo@unicolortrue% Force unicolor mode
+ % Set all colors to black
+ \renewcommand{\neoschool@globalcolor}{black}%
+ \renewcommand{\neoschool@headcolor}{black}%
+ \renewcommand{\neoschool@subcolor}{black}%
+ \renewcommand{\neoschool@subsubcolor}{black}%
+ \renewcommand{\neoschool@titlecolor}{black}%
+ \renewcommand{\neoschool@headfootcolor}{black}%
+ \colorlet{subjectColor}{black!80}%
+ \colorlet{subtitleColor}{black!60}%
+ \AtEndOfClass{%
+ \colorlet{verbColor}{\neoschool@titlecolor}%
+ }
+ % Override all theme colors to black
+ \colorlet{definitionColor}{black}%
+ \colorlet{theoremColor}{black}%
+ \colorlet{lemmaColor}{black}%
+ \colorlet{corollaryColor}{black}%
+ \colorlet{propertyColor}{black}%
+ \colorlet{propositionColor}{black}%
+ \colorlet{activityColor}{black}%
+ \colorlet{methodColor}{black}%
+ \colorlet{applicationColor}{black}%
+ \colorlet{codeColor}{black}%
+ \colorlet{codebackColor}{black!5}%
+ \colorlet{exerciseColor}{black}%
+ \colorlet{exampleColor}{black}%
+ \colorlet{solutionColor}{black}%
+ \colorlet{alternateColor}{black}%
+ % Override admonition colors
+ \colorlet{noteColor}{black}%
+ \colorlet{infoColor}{black}%
+ \colorlet{warningColor}{black}%
+ \colorlet{importantColor}{black}%
+ \colorlet{tipColor}{black}%
+ \colorlet{reminderColor}{black}%
+ \colorlet{summaryColor}{black}%
+ \colorlet{toolboxColor}{black}%
+ % Override hyperref colors
+ \def\Hy@linkcolor{black}
+ \def\Hy@anchorcolor{black}
+ \def\Hy@citecolor{black}
+ \def\Hy@filecolor{black}
+ \def\Hy@menucolor{black}
+ \def\Hy@runcolor{black}
+ \def\Hy@urlcolor{black}
+ % Code syntax colors
+ \def\neo@keywordstyle{\color{black}\bfseries}%
+ \def\neo@commentstyle{\color{black!75}}%
+ \def\neo@stringstyle{\color{black}}%
+ \def\neo@emphstyle{\color{black}\bfseries}%
+ % Set minted style to bw if minted is used
+ \ifneo@minted
+ \usemintedstyle{bw}%
+ \fi
+}
+
+% Print option
+\DeclareOption{print}{\neo@setupprint}
+
+%% ==============================================================================
+%% Header and Footer Settings
+%% ==============================================================================
+
+% Header/footer setup command
+\newcommand{\neo@setupheadfoot}[1]{%
+ \@nameuse{neo@#1true}
+}
+
+% Header/footer options
+\DeclareOption{fullheader}{\neo@setupheadfoot{fullheader}}
+\DeclareOption{headrule}{\neo@setupheadfoot{headrule}}
+\DeclareOption{footrule}{\neo@setupheadfoot{footrule}}
+\DeclareOption{headfootrule}{\neo@setupheadfoot{headfootrule}}
+
+%% ==============================================================================
+%% Title Formatting Settings
+%% ==============================================================================
+
+% Title formatting setup command
+\newcommand{\neo@setuptitleformat}[1]{%
+ \@nameuse{neo@#1true}
+}
+
+% Title formatting options
+\DeclareOption{titlerule}{\neo@setuptitleformat{titlerule}}
+\DeclareOption{titlemidrule}{\neo@setuptitleformat{titlemidrule}}
+\DeclareOption{titlefullrule}{\neo@setuptitleformat{titlefullrule}}
+\DeclareOption{titleornament}{\neo@setuptitleformat{titleornament}}
+
+%% ==============================================================================
+%% Package Specific Options
+%% ==============================================================================
+
+% Package setup command
+\newcommand{\neo@setuppackage}[1]{%
+ \@nameuse{neo@#1true}
+}
+
+% Package options
+\DeclareOption{math}{\neo@setuppackage{math}}
+\DeclareOption{apmep}{\neo@setuppackage{apmep}}
+\DeclareOption{mathics}{\neo@setuppackage{mathics}}
+\DeclareOption{listings}{\neo@setuppackage{listings}}
+\DeclareOption{minted}{\neo@setuppackage{minted}}
+\DeclareOption{frenchmath}{\neo@setuppackage{frenchmath}}
+
+%% ==============================================================================
+%% Abstract Name
+%% ==============================================================================
+
+\DeclareStringOption[abstractname]{abstracttitle}
+
+%% ==============================================================================
+%% Margin Options
+%% ==============================================================================
+
+\DeclareStringOption{margin}
+\DeclareStringOption{notes}
+
+%% ==============================================================================
+%% Solution Settings
+%% ==============================================================================
+
+% Solution options
+\DeclareBoolOption{answers}
+\DeclareOption{shuffle}{\neo@shuffletrue}
+
+%% ==============================================================================
+%% Grading Total
+%% ==============================================================================
+
+\DeclareStringOption[20]{totalpoints}
+
+%% ==============================================================================
+%% Box Settings
+%% ==============================================================================
+
+% Box options
+\DeclareStringOption{boxtitle}
+\DeclareStringOption[2mm]{boxarc}
+\DeclareStringOption[2pt]{pseudoboxarc}
+
+% Box setup command
+\newcommand{\neo@setupbox}[2]{%
+ \expandafter\def\csname neo@box@#1\endcsname{#2}
+}
+
+%% ==============================================================================
+%% Theorem Settings
+%% ==============================================================================
+
+\DeclareBoolOption{sectionthmcounter}
+\DeclareBoolOption{sharedthmcounter}
+\DeclareBoolOption{thmgroupcounter}
+
+\newif\ifneoschool@sharedexcounter
+\DeclareOption{sharedexcounter}{%
+ \neoschool@sharedexcountertrue
+ \neoschool@sharedthmcountertrue
+}
+
+%% ==============================================================================
+%% Exercices With Icons
+%% ==============================================================================
+
+\newif\ifneo@exerciseicons
+\DeclareOption{exerciseicons}{\neo@exerciseiconstrue}
+
+%% ==============================================================================
+%% Font Scaling Options
+%% ==============================================================================
+
+\newif\ifneo@scale
+\DeclareBoolOption{scale}
+
+%% ==============================================================================
+%% Graphics Mode
+%% ==============================================================================
+
+\DeclareBoolOption{graphics}
+
+%% ==============================================================================
+%% Extended Math Mode
+%% ==============================================================================
+
+\DeclareBoolOption{math}
+
+%% ==============================================================================
+%% Draft Mode
+%% ==============================================================================
+
+\DeclareBoolOption{faketext}
+
+%% ==============================================================================
+%% Compact Option
+%% ==============================================================================
+
+\newif\ifneo@compact
+\DeclareOption{compact}{\neo@compacttrue}
+
+%% ==============================================================================
+%% Output Options
+%% ==============================================================================
+
+\newif\ifneo@twoupafourmode
+\newif\ifneo@twoupathreemode
+\newif\ifneo@fourupathreemode
+\newif\ifneo@simpletwoupmode
+\newif\ifneo@bookletafourmode
+\newif\ifneo@bookletathreemode
+
+\DeclareOption{2a5toa4}{\neo@twoupafourmodetrue}
+\DeclareOption{2a4toa3}{\neo@twoupathreemodetrue}
+\DeclareOption{4a5toa3}{\neo@fourupathreemodetrue}
+\DeclareOption{2toa3}{\neo@simpletwoupmodetrue}
+\DeclareOption{bookleta5}{\neo@bookletafourmodetrue}
+\DeclareOption{bookleta4}{\neo@bookletathreemodetrue}
+
+\ifneo@twoupafourmode
+ \PassOptionsToClass{a5paper}{scrartcl}
+ \AtEndPreamble{
+ \KOMAoptions{paper=a5}
+ \neo@setupmargins{last}
+ \areaset{12cm}{19cm}
+ }
+\fi
+
+\ifneo@twoupathreemode
+ \PassOptionsToClass{a4paper}{scrartcl}
+\fi
+
+\ifneo@fourupathreemode
+ \PassOptionsToClass{a5paper}{scrartcl}
+ \AtEndPreamble{
+ \KOMAoptions{paper=a5}
+ \neo@setupmargins{last}
+ \areaset{12cm}{19cm}
+ }
+\fi
+
+\ifneo@simpletwoupmode
+ \PassOptionsToClass{a4paper}{scrartcl}
+ \AtEndPreamble{
+ \KOMAoptions{paper=a4}
+ \neo@setupmargins{30}
+ \areaset{19cm}{29cm}
+ }
+\fi
+
+\ifneo@bookletafourmode
+ \PassOptionsToClass{a5paper}{scrartcl}
+ \AtEndPreamble{
+ \KOMAoptions{paper=a5}
+ \neo@setupmargins{last}
+ \areaset{12cm}{19cm}
+ }
+\fi
+
+\ifneo@bookletathreemode
+ \PassOptionsToClass{a4paper}{scrartcl}
+\fi
+
+%% ==============================================================================
+%% Final Class Setup
+%% ==============================================================================
+
+% Define default language and style
+\def\neo@lang{english}
+\def\neo@style{classic}
+
+% Pass unknown options to scrartcl
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}}
+
+% Process keyval options
+\ProcessKeyvalOptions*\relax
+
+% Default options
+\ExecuteOptions{%
+ english, % Default language
+ amslikethm, % Default theorem style
+ normal, % Default color palette
+ listings, % Default packages for Listings
+}
+
+% Process remaining options
+\ProcessOptions\relax
+
+% Load base class
+\LoadClass{scrartcl}
+
+\KOMAoptions{%
+ DIV=last,
+ parskip=half
+}
+
+\let\@unusedoptionlist\@empty
+
+%% ==============================================================================
+%% Page Layout Configuration
+%% ==============================================================================
+
+\newcommand{\neo@setupmargins}[1]{%
+ \KOMAoptions{%
+ DIV=calc,
+ DIV=#1,
+ BCOR=0pt,
+ headinclude=true,
+ footinclude=true
+ }%
+}
+
+% Intentionally small margins for teaching materials - ignore typearea warning
+\neo@setupmargins{last}
+\areaset{19cm}{29.25cm}
+\setlength{\headheight}{27pt}
+\setlength{\footskip}{27pt}
+
+\widowpenalty=10000
+\clubpenalty=10000
+
+\displaywidowpenalty=10000
+\predisplaypenalty=10000
+\postdisplaypenalty=10000
+\interlinepenalty=10000
+
+\raggedbottom
+
+%% ==============================================================================
+%% Output Options
+%% ==============================================================================
+
+\AtEndPreamble{
+ \ifneo@twoupafourmode
+ \usepackage{pgfmorepages}
+ \pgfmorepagesloadextralayouts
+ \pgfpagesuselayout{repeated 2-up}[a4paper,landscape]
+ \pgfpagesphysicalpage{2}{}
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.5\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{2}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.5\pgfphysicalheight}
+ }
+ \fi
+
+ \ifneo@twoupathreemode
+ \usepackage{pgfmorepages}
+ \pgfmorepagesloadextralayouts
+ \pgfpagesuselayout{repeated 2-up}[a3paper,landscape]
+ \areaset{19cm}{29cm}
+ \pgfpagesphysicalpage{2}{}
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.5\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.5\pgfphysicalheight}
+ }
+ \fi
+
+ \ifneo@fourupathreemode
+ \usepackage{pgfmorepages}
+ \pgfmorepagesloadextralayouts
+ \pgfpagesuselayout{repeated 4-up}[a3paper]
+ \pgfpagesphysicalpage{4}{}
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.25\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.75\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.25\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.75\pgfphysicalheight}
+ }
+ \fi
+
+ \ifneo@simpletwoupmode
+ \usepackage{pgfmorepages}
+ \pgfmorepagesloadextralayouts
+ \pgfpagesuselayout{2 on 1}[a3paper,landscape]
+ \pgfpagesphysicalpage{2}{}
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.5\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{2}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.5\pgfphysicalheight}
+ }
+ \fi
+
+ \ifneo@bookletafourmode
+ \usepackage{pgfmorepages}
+ \pgfmorepagesloadextralayouts
+ \pgfpagesuselayout{4 on 2, book format}[a4paper,landscape]
+ \pgfpagesphysicalpage{4}{}
+ \pgfpageslogicalpageoptions{4}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.25\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.75\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{2}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.25\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{3}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.75\pgfphysicalheight}
+ } \fi
+
+ \ifneo@bookletathreemode
+ \usepackage{pgfmorepages}
+ \pgfmorepagesloadextralayouts
+ \pgfpagesuselayout{4 on 2, book format}[a3paper,landscape]
+ \areaset{19cm}{29.25cm}
+ \setlength{\headheight}{27pt}
+ \setlength{\footskip}{27pt}
+ \pgfpagesphysicalpage{4}{}
+ \pgfpageslogicalpageoptions{4}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.25\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{1}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.25\pgfphysicalwidth}{.75\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{2}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.25\pgfphysicalheight}
+ }
+ \pgfpageslogicalpageoptions{3}{
+ resized width=.9\pgfphysicalwidth,
+ resized height=\pgfphysicalheight,
+ center=\pgfpoint{.75\pgfphysicalwidth}{.75\pgfphysicalheight}
+ }
+ \fi
+}
+
+%% ==============================================================================
+%% Box and Frame Conditions Setup
+%% ==============================================================================
+
+% Basic color definitions for tcolorbox
+\newcommand{\neo@tcbcolback}{tcbcolframe!5}
+\newcommand{\neo@tcbcolbacklower}{white}
+\newcommand{\neo@tcbcolupper}{black}
+\newcommand{\neo@tcbcoltitle}{white}
+
+% Frame options definitions
+\newcommand{\neo@framehidden}{}
+\newcommand{\neo@thmborder}{1pt}
+\newcommand{\neo@leftpadding}{1ex}
+\newcommand{\neo@rightpadding}{1ex}
+\newcommand{\neo@toppadding}{1ex}
+\newcommand{\neo@bottompadding}{1ex}
+\newcommand{\neo@titleleftpadding}{0.5em}
+\newcommand{\neo@titlerightpadding}{0.5em}
+\newcommand{\neo@titletoppadding}{3pt}
+\newcommand{\neo@titlebottompadding}{3pt}
+\newcommand{\neo@beforeskip}{0.5\baselineskip}
+\newcommand{\neo@afterskip}{0.5\baselineskip}
+
+% Handle noback option:
+% Changes background colors to white for main boxes
+\ifneo@noback
+ \renewcommand{\neo@tcbcolback}{white}
+ \colorlet{codebackColor}{white}
+ \renewcommand{\neo@tcbcolbacklower}{tcbcolframe!5}
+\fi
+
+% Handle noframe option:
+% Hides frames and adjusts title color
+\ifneo@noframe
+ \renewcommand{\neo@framehidden}{frame hidden}
+ \renewcommand{\neo@thmborder}{0pt}
+ \renewcommand{\neo@tcbcoltitle}{tcbcolframe}
+ \ifneo@noback
+ \renewcommand{\neo@leftpadding}{-2pt}
+ \renewcommand{\neo@rightpadding}{-2pt}
+ \renewcommand{\neo@toppadding}{-1pt}
+ \renewcommand{\neo@bottompadding}{-1pt}
+ \renewcommand{\neo@titleleftpadding}{-2.5pt}
+ \renewcommand{\neo@titlerightpadding}{-2.5pt}
+ \renewcommand{\neo@titletoppadding}{-2pt}
+ \renewcommand{\neo@titlebottompadding}{-2pt}
+ \renewcommand{\neo@beforeskip}{0.25\baselineskip}
+ \renewcommand{\neo@afterskip}{0.25\baselineskip}
+ \fi
+\fi
+
+% Handle nocodeframe option:
+% Hides code block frames and adjusts colors
+\ifneo@nocodeframe
+ \colorlet{codeColor}{codebackColor}
+\fi
+
+% Adjust spacing for two-column mode
+\if@twocolumn
+ \setlength{\columnsep}{1em}
+\fi
+
+%% ==============================================================================
+%% Required Packages Setup
+%% ==============================================================================
+
+%% Core packages
+\RequirePackage{iftex} % Engine detection
+\RequirePackage{xkeyval} % Extended key-value support
+\RequirePackage{xstring} % String manipulation
+\RequirePackage{calc} % Length calculations
+\RequirePackage{ifthen} % Boolean expression
+\RequirePackage{pdftexcmds} % Conditionals
+\RequirePackage{environ} % New Environments
+
+% Hide Some Warnings
+\RequirePackage{silence}
+\WarningFilter{latexfont}{Font shape}
+\renewcommand{\@font@warning}[1]{}
+\WarningFilter{mismath}{}
+\WarningFilter{multicol}{}
+
+%% Language support
+\ifluatex
+ \RequirePackage{fontspec}
+\fi
+
+\ifneo@french
+ \RequirePackage[main=french,shorthands=off]{babel}
+\else\ifneo@german
+ \RequirePackage[main=german]{babel}
+ \else
+ \RequirePackage[main=english]{babel}
+ \fi\fi
+
+\RequirePackage{scrlayer-scrpage} % Headers and footers
+
+\RequirePackage{multicol} % Multiple columns
+\RequirePackage{changepage} % Dynamic page dimensions
+\RequirePackage{needspace} % Control page breaks
+
+%% Graphics and colors
+\RequirePackage[most]{tcolorbox} % Colored boxes and frames
+\RequirePackage{tikz} % Drawing tools
+\RequirePackage{pgfplots} % Plotting tools
+\pgfplotsset{compat=1.8} % Set pgfplots version
+
+%% TikZ libraries
+\usetikzlibrary{%
+ backgrounds,
+ calc,
+ decorations.shapes,
+ positioning,
+ shadows,
+ shapes.arrows,
+ shapes.geometric,
+ shapes.misc
+}
+
+\ifneoschool@faketext
+ \RequirePackage{blindtext} % Fake Text in English and German
+ \RequirePackage{lipsum} % Fake Text in Latin
+\fi
+
+\ifneoschool@graphics
+ \RequirePackage{wrapfig} % Wrapped figures
+ \RequirePackage{graphicx} % Images
+\fi
+
+%% Additional TikZ-related packages
+\RequirePackage{tikzsymbols} % Additional symbols
+\RequirePackage{tikzpagenodes} % Page coordinate system
+\RequirePackage{forest} % Tree diagrams
+\useforestlibrary{linguistics}
+
+%% LuaTeX specific packages
+\ifluatex
+ \usetikzlibrary{graphs,graphdrawing,quotes}
+ \usegdlibrary{circular,force,layered,routing,trees}
+ \RequirePackage{luacolor} % Color support for LuaTeX
+ \RequirePackage{lua-ul} % Underlining for LuaTeX
+ \RequirePackage{luacas} % Computer algebra for LuaTeX
+\fi
+
+%% Tables and arrays
+\RequirePackage{tabularray} % Advanced tables
+\UseTblrLibrary{%
+ amsmath,
+ booktab,
+ diagbox,
+ functional,
+ varwidth,
+ siunitx
+}
+
+\RequirePackage{adjustbox} % Adjusting box dimensions
+
+%% Extended Math packages
+\ifneoschool@math
+ \RequirePackage[suite,taupe]{tdsfrmath} % French Math macros
+\fi
+
+\RequirePackage{mismath} % Miscellaneous math macros (includes mathtools)
+
+\ifneoschool@math
+ \RequirePackage{amssymb} % Mathematical symbols
+ \RequirePackage{ncccomma} % Math Comma
+\fi
+
+%% APMEP Compatibility Mode - Option 'apmep'
+
+\ifneo@apmep
+ %% APMEP required packages
+ \RequirePackage{textcomp} % Text companion fonts
+ \RequirePackage{esvect} % Vector arrows
+ \RequirePackage{fourier-orns} % Ornaments
+ \RequirePackage{tabularx} % Extended tables
+ \RequirePackage[np]{numprint} % Number printing
+
+ %% PSTricks suite for APMEP
+ \RequirePackage{pstricks} % Base PSTricks
+ \RequirePackage{pst-plot} % Plotting
+ \RequirePackage{pst-tree} % Trees
+ \RequirePackage{pst-node} % Nodes
+ \RequirePackage{pst-text} % Text effects
+ \RequirePackage{pst-eucl} % Euclidean geometry
+ \RequirePackage{pst-3dplot} % 3D plotting
+ \undef\pscalculate
+ \RequirePackage{pst-bezier} % Bezier curves
+ \RequirePackage{pst-all} % Loads most PSTricks packages
+ \RequirePackage{pstricks-add} % Additional features
+
+ %% APMEP specific commands
+ \newcommand{\euro}{\eurologo{}}
+ \newcommand{\cg}{\texttt{]}} % Left bracket
+ \newcommand{\cd}{\texttt{[}} % Right bracket
+ \newcommand{\pg}{\geqslant} % Greater than or equal
+ \newcommand{\pp}{\leqslant} % Less than or equal
+ \newcommand{\vectt}[1]{\overrightarrow{\,\mathstrut\text{#1}\,}}
+ \newcommand{\barre}[1]{\overline{\,\mathstrut#1\,}}
+ \renewcommand{\d}{\,\text{d}} % Differential d
+ \renewcommand{\i}{\,\text{i}\,} % Complex i
+
+ %% APMEP enumeration style
+ \renewcommand{\theenumi}{\textbf{\arabic{enumi}}}
+ \renewcommand{\labelenumi}{\textbf{\theenumi.}}
+ \renewcommand{\theenumii}{\textbf{\alph{enumii}}}
+ \renewcommand{\labelenumii}{\textbf{\theenumii.}}
+
+ %% APMEP coordinate systems
+ \def\Oij{$\left(\text{O}~;~\vect{\imath},~\vect{\jmath}\right)$}
+ \def\Oijk{$\left(\text{O}~;~\vect{\imath},~\vect{\jmath},~\vect{k}\right)$}
+ \def\Ouv{$\left(\text{O}~;~\vect{u},~\vect{v}\right)$}
+
+ %% APMEP font declaration
+ \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\fi
+
+%% Computer algebra system support
+\ifneo@mathics
+ \RequirePackage[mathics]{latexalpha2}
+ \RequirePackage{asymptote}
+\fi
+
+%% Lists and enumerations
+\RequirePackage{tasks} % Horizontal lists
+
+%% Utilities and tools
+\RequirePackage{cuted} % Abstract settings
+\RequirePackage{qrcode} % QR code generation
+\RequirePackage{xhfill} % Extended filling
+\RequirePackage{fontawesome5} % Icons
+\RequirePackage{adforn} % Ornaments
+\ifx\neoschool@notes\@empty\else
+ \RequirePackage[%
+ \neo@lang,
+ textsize=scriptsize
+ ]{todonotes} % Todo notes
+\fi
+\RequirePackage{marginnote} % Margin notes
+\RequirePackage{algpseudocode} % Algorithms
+\RequirePackage{textcase} % Text case changing
+\RequirePackage[use-files,clear-aux]{xsim} % Exercise sheets
+\RequirePackage[normalem]{ulem} % Underlining
+
+%% Microtype
+\AtEndOfClass{\RequirePackage{microtype}}
+
+%% Hyperref setup
+\definecolor{neo@linkcolor}{named}{\neoschool@titlecolor}
+\definecolor{neo@filecolor}{named}{\neoschool@titlecolor}
+\definecolor{neo@urlcolor}{named}{\neoschool@titlecolor}
+
+\RequirePackage{bookmark}
+\RequirePackage{lastpage}
+
+\hypersetup{%
+ colorlinks=true,
+ linkcolor=neo@linkcolor,
+ filecolor=neo@filecolor,
+ urlcolor=neo@urlcolor,
+}%
+
+%% ==============================================================================
+%% Font Settings
+%% ==============================================================================
+
+% Font variable definitions
+\edef\mainface{\expandonce{\neoschool@mainface}}
+\edef\sansface{\expandonce{\neoschool@sansface}}
+\edef\monoface{\expandonce{\neoschool@monoface}}
+\edef\mathface{\expandonce{\neoschool@mathface}}
+\edef\facefamily{\expandonce{\neoschool@facefamily}}
+
+% PdfLaTeX configuration
+\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0
+\RequirePackage[utf8]{inputenc}
+\RequirePackage[T1]{fontenc}
+
+\expandafter\ifblank\expandafter{\facefamily}{%
+ % Load individual fonts if facefamily is not defined
+ \expandafter\ifblank\expandafter{\mathface}{\ifneo@mathastext
+ \RequirePackage[italic,eulergreek]{mathastext}\else\RequirePackage{newpxmath}\fi}{\RequirePackage[\neoschool@mathfaceoptions]{\neoschool@mathface}}
+
+ \expandafter\ifblank\expandafter{\mainface}{\RequirePackage{newpxtext}}{\RequirePackage[\neoschool@mainfaceoptions]{\neoschool@mainface}}
+ \expandafter\ifblank\expandafter{\sansface}{}{\RequirePackage[\neoschool@sansfaceoptions]{\neoschool@sansface}}
+ \expandafter\ifblank\expandafter{\monoface}{}{\RequirePackage[\neoschool@monofaceoptions]{\neoschool@monoface}}
+}{
+ % Load font family if defined
+ \RequirePackage[\neoschool@facefamilyoptions]{\neoschool@facefamily}
+}
+\else
+% % LuaLaTeX configuration
+\RequirePackage{fontspec}
+
+\ifneo@scale
+ \defaultfontfeatures[\rmfamily]{Scale=1}
+ \defaultfontfeatures{Scale=MatchLowercase}
+\fi
+
+\defaultfontfeatures{Ligatures=TeX,Renderer=HarfBuzz}
+
+\expandafter\ifblank\expandafter{\mathface}{%
+ \ifneo@mathastext
+ \RequirePackage[italic,eulergreek]{mathastext}
+ \else
+ \RequirePackage{newpxmath}
+ \fi
+ }{%
+ \RequirePackage{\mathface}
+ }
+\expandafter\ifblank\expandafter{\mainface}{%
+ \setmainfont{TeX Gyre PagellaX}
+ }{%
+ \setmainfont[\neoschool@mainfaceoptions]{\neoschool@mainface}
+ }
+\expandafter\ifblank\expandafter{\sansface}{%
+ \setsansfont{TeX Gyre Heros}
+ }{%
+ \setsansfont[\neoschool@sansfaceoptions]{\neoschool@sansface}
+ }
+\expandafter\ifblank\expandafter{\monoface}{%
+ \setmonofont{Cascadia Code}
+ }{%
+ \setmonofont[\neoschool@monofaceoptions]{\neoschool@monoface}
+ }
+\fi
+
+\RequirePackage{bm} % Bold Math
+
+% Common configuration
+\ifneo@sfbody
+ \renewcommand{\familydefault}{\sfdefault}
+\fi
+
+% Advances Math Packages
+\ifneoschool@math
+ \RequirePackage{mathrsfs} % Mathematical script font
+ \RequirePackage{annotate-equations} % Equation annotations
+ \RequirePackage{witharrows} % Step-by-step solutions
+ \RequirePackage[np]{numprint} % Number printing
+ \RequirePackage{xlop} % Arithmetic operations
+ \RequirePackage{breqn} % Multiline Equations
+ \RequirePackage{tkz-euclide} % Euclidean geometry
+ \RequirePackage{cancel} % Cancel an expression
+\fi
+
+\AtBeginDocument{
+ \mathcode`\;="303B
+}
+
+% Upright Capital and Greek Letters
+\ifneo@frenchmath
+ \DeclareMathSymbol{A}{\mathalpha}{operators}{65}
+ \DeclareMathSymbol{B}{\mathalpha}{operators}{66}
+ \DeclareMathSymbol{C}{\mathalpha}{operators}{67}
+ \DeclareMathSymbol{D}{\mathalpha}{operators}{68}
+ \DeclareMathSymbol{E}{\mathalpha}{operators}{69}
+ \DeclareMathSymbol{F}{\mathalpha}{operators}{70}
+ \DeclareMathSymbol{G}{\mathalpha}{operators}{71}
+ \DeclareMathSymbol{H}{\mathalpha}{operators}{72}
+ \DeclareMathSymbol{I}{\mathalpha}{operators}{73}
+ \DeclareMathSymbol{J}{\mathalpha}{operators}{74}
+ \DeclareMathSymbol{K}{\mathalpha}{operators}{75}
+ \DeclareMathSymbol{L}{\mathalpha}{operators}{76}
+ \DeclareMathSymbol{M}{\mathalpha}{operators}{77}
+ \DeclareMathSymbol{N}{\mathalpha}{operators}{78}
+ \DeclareMathSymbol{O}{\mathalpha}{operators}{79}
+ \DeclareMathSymbol{P}{\mathalpha}{operators}{80}
+ \DeclareMathSymbol{Q}{\mathalpha}{operators}{81}
+ \DeclareMathSymbol{R}{\mathalpha}{operators}{82}
+ \DeclareMathSymbol{S}{\mathalpha}{operators}{83}
+ \DeclareMathSymbol{T}{\mathalpha}{operators}{84}
+ \DeclareMathSymbol{U}{\mathalpha}{operators}{85}
+ \DeclareMathSymbol{V}{\mathalpha}{operators}{86}
+ \DeclareMathSymbol{W}{\mathalpha}{operators}{87}
+ \DeclareMathSymbol{X}{\mathalpha}{operators}{88}
+ \DeclareMathSymbol{Y}{\mathalpha}{operators}{89}
+ \DeclareMathSymbol{Z}{\mathalpha}{operators}{90}
+
+ \let\alpha\alphaup
+ \let\beta\betaup
+ \let\gamma\gammaup
+ \let\delta\deltaup
+ \let\epsilon\epsilonup
+ \let\zeta\zetaup
+ \let\eta\etaup
+ \let\theta\thetaup
+ \let\iota\iotaup
+ \let\kappa\kappaup
+ \let\lambda\lambdaup
+ \let\mu\muup
+ \let\nu\nuup
+ \let\xi\xiup
+ \let\pi\piup
+ \let\rho\rhoup
+ \let\sigma\sigmaup
+ \let\tau\tauup
+ \let\upsilon\upsilonup
+ \let\phi\phiup
+ \let\chi\chiup
+ \let\psi\psiup
+ \let\omega\omegaup
+\fi
+
+%% ==============================================================================
+%% KOMA-Script Typography
+%% ==============================================================================
+
+\newcommand{\LARGEplus}{\fontsize{15.5}{18.6}\selectfont}
+\newcommand{\LARGEhuge}{\fontsize{16.74}{20.09}\selectfont}
+\newcommand{\hugeminus}{\fontsize{18.5}{22.2}\selectfont}
+
+% Monospace font and color configuration
+\AtEndOfClass{%
+ \colorlet{verbColor}{\neoschool@titlecolor}%
+ \let\oldtexttt\texttt
+ \renewrobustcmd{\texttt}[1]{\oldtexttt{\color{verbColor}#1}}
+}
+
+\setkomafont{disposition}{\mdseries}
+
+% Header style configuration
+\setkomafont{title}{\csname\neoschool@titlestyle\endcsname\csname\neoschool@titleweight\endcsname\color{\neoschool@titlecolor}\hugeminus}
+\setkomafont{subtitle}{\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname\color{subtitleColor}}
+\setkomafont{subject}{\csname\neoschool@headweight\endcsname\color{subjectColor}\large}
+\setkomafont{author}{\large}
+\setkomafont{date}{\large}
+\setkomafont{subsection}{\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\color{\neoschool@subcolor}\large}
+\setkomafont{subsubsection}{\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\color{\neoschool@subsubcolor}}
+% \renewcommand{\subsubsection}{%
+% \@startsection{subsubsection}{3}{\z@}%
+% {1ex plus 1ex minus .2ex}%
+% {-2em}%
+% {\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\color{\neoschool@subsubcolor}\itshape\secpunct}%
+% }
+% \newcommand{\secpunct}[1]{#1\hspace{-3ex}}
+\setkomafont{pagenumber}{\csname\neoschool@headstyle\endcsname\color{\neoschool@headfootcolor}}
+\setkomafont{descriptionlabel}{\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname}
+
+% Page number format
+\renewcommand*\pagemark{%
+ {\usekomafont{pagenumber}
+ \color{\neoschool@headfootcolor}
+ \csname neo@pagename\endcsname\nobreakspace\thepage\nobreakspace/\nobreakspace
+ {\hypersetup{linkcolor=\neoschool@headfootcolor}\pageref{LastPage}}
+ }
+}
+
+\newpairofpagestyles{firstpage}{%
+ \ihead{}\chead{}\ohead{}%
+ \ifoot{\@date}\cfoot{}\ofoot{\pagemark}%
+ \KOMAoptions{headsepline=0pt}
+}{%
+ \ihead{}\chead{}\ohead{}%
+ \ifoot{\@date}\cfoot{}\ofoot{\pagemark}%
+ \KOMAoptions{headsepline=0pt}
+}
+
+\newpairofpagestyles{followingpages}{%
+ \ihead{}\chead{}\ohead{}%
+ \ifoot{\@title}\cfoot{}\ofoot{\pagemark}%
+}{%
+ \ihead{}\chead{}\ohead{}%
+ \ifoot{\@title}\cfoot{}\ofoot{\pagemark}%
+}
+
+\newpairofpagestyles{pagenum}{%
+ \ihead{}\chead{}\ohead{}
+ \ifoot{}\cfoot{\pagemark}\ofoot{}
+ \KOMAoptions{headsepline=0pt,footsepline=0pt}
+}
+
+% Header font configuration
+\renewcommand*{\headfont}{%
+ \small
+ \csname\neoschool@headfootstyle\endcsname
+ \color{\neoschool@headfootcolor}
+}
+
+%% ==============================================================================
+%% Title Styles and Setting
+%% ==============================================================================
+
+% Core definitions and lengths
+\def\neo@left{left}
+\def\neo@right{right}
+\def\neo@center{center}
+\newlength{\varspace}
+\newlength{\titlespacing}
+\setlength{\titlespacing}{1.5\baselineskip}
+\newcommand\myscaleratio{0.5}
+
+% Define tight spacing commands
+\newcommand{\neo@tightspacing}{%
+ \setlength\topsep{0pt}
+ \setlength\parskip{0pt}
+}
+
+% Redefine center, flushright, and flushleft environments with tight spacing
+\let\oldcenter\center
+\let\oldendcenter\endcenter
+\renewenvironment{center}{%
+ \neo@tightspacing
+ \oldcenter
+}{%
+ \oldendcenter
+}
+
+\let\oldflushright\flushright
+\let\oldendflushright\endflushright
+\renewenvironment{flushright}{%
+ \neo@tightspacing
+ \oldflushright
+}{%
+ \oldendflushright
+}
+
+\let\oldflushleft\flushleft
+\let\oldendflushleft\endflushleft
+\renewenvironment{flushleft}{%
+ \neo@tightspacing
+ \oldflushleft
+}{%
+ \oldendflushleft
+}
+
+% Title decoration handler
+\newcommand{\neo@titledecoration}{%
+ \ifneo@titlerule
+ \vspace{1.25\titlespacing}%
+ {\color{\neoschool@titlecolor}\rule{5em}{0.4pt}}
+ \else
+ \ifneo@titlemidrule
+ \vspace{1.25\titlespacing}%
+ {\color{\neoschool@titlecolor}\rule{0.5\linewidth}{0.4pt}}
+ \else
+ \ifneo@titlefullrule
+ \vspace{1.25\titlespacing}%
+ {\color{\neoschool@titlecolor}\rule{\linewidth}{0.4pt}}%
+ \vspace{-0.75\titlespacing}%
+ \else
+ \ifneo@titleornament
+ \vspace{1.25\titlespacing}%
+ {\color{\neoschool@titlecolor}\scalebox{2}[1.5]{\adforn{21}\,\adforn{11}\,\adforn{49}}}
+ \fi
+ \fi
+ \fi
+ \fi
+ \vspace*{.15\baselineskip}
+}
+
+% Full title creation with all elements
+\newcommand{\createfulltitle}{%
+% Subject
+\ifx\@subject\@empty\else
+ {\usekomafont{subject}{\@subject\par}}
+ \vspace{\titlespacing}
+\fi
+
+% Main title
+{\noindent\usekomafont{title}{\@title\par}}
+
+% Subtitle
+\ifx\@subtitle\@empty\else
+ \vspace{\titlespacing}
+ {\noindent\usekomafont{subtitle}{\@subtitle\par}}
+\fi
+
+% Author
+\ifx\@author\@empty\else
+ \vspace{\titlespacing}
+ {\noindent\usekomafont{author}{\@author\par}}
+\fi
+
+% Decorative elements
+\neo@titledecoration
+\if@twocolumn\vspace{2\titlespacing}\else\vspace{\titlespacing}\fi
+}
+
+% Only title creation (no author, subject, etc.)
+\newcommand{\createonlytitle}{%
+ {\noindent\usekomafont{title}{\@title\par}}
+ \neo@titledecoration%
+}
+
+\renewcommand\maketitle{%
+ \thispagestyle{firstpage}
+ \bgroup
+ \setlength{\varspace}{\dimexpr\titlespacing+\myscaleratio\oddsidemargin}
+ \if@twocolumn
+ \twocolumn[{%
+ \ifx\neoschool@titlealign\neo@left
+ \begin{flushleft}
+ \createfulltitle
+ \end{flushleft}
+ \else
+ \ifx\neoschool@titlealign\neo@right
+ \begin{flushright}
+ \createfulltitle
+ \end{flushright}
+ \else
+ \begin{center}
+ \createfulltitle
+ \end{center}
+ \fi
+ \fi
+ }]
+ \else
+ \ifx\neoschool@titlealign\neo@left
+ \begin{flushleft}
+ \createfulltitle
+ \end{flushleft}
+ \else
+ \ifx\neoschool@titlealign\neo@right
+ \begin{flushright}
+ \createfulltitle
+ \end{flushright}
+ \else
+ \begin{center}
+ \createfulltitle
+ \end{center}
+ \fi
+ \fi
+ \fi
+ \egroup
+}
+
+% Enhanced fancy title box with rotation
+\ifneo@fancybox
+ \newcommand{\neo@fancycolor}{exerciseColor!5!white}
+ \AtBeginDocument{%
+ \begin{tikzpicture}[remember picture,overlay]
+ % Rotated background box
+ \fill[\neo@fancycolor,rotate=-15]
+ ($(current page.north west) +(0,-1in)$)
+ rectangle ($(current page.north west) +(2.25in,2.0in)$);
+
+ % Title node with improved positioning
+ \node[anchor=west] (title) at
+ ($([xshift=-1ex,yshift=2ex]current page text area.north west)$)
+ {\LARGE\csname\neoschool@titlestyle\endcsname
+ \csname\neoschool@titleweight\endcsname
+ \csname\neoschool@titleshape\endcsname
+ \color{\neoschool@titlecolor}\@title};
+ \end{tikzpicture}
+ \vspace*{\dimexpr1.25in+\oddsidemargin\relax}\par
+ \let\maketitle\relax
+ \thispagestyle{firstpage}
+ }
+\fi
+
+% Unified handling of single-column and two-column title layouts with only title
+\newcommand{\neo@handleonlytitle}[2]{%
+ \if@twocolumn
+ \AfterEndPreamble{%
+ \twocolumn[{#1\vspace*{.5in}\par}]
+ }
+ \else
+ \AtBeginDocument{%
+ #2\vspace*{0.25in}\par
+ }
+ \fi
+ \let\maketitle\relax
+ \thispagestyle{firstpage}
+}
+
+% Left-aligned title implementation
+\ifneo@onlytitleleft
+ \neo@handleonlytitle
+ {\begin{flushleft}\createonlytitle\end{flushleft}}
+ {\begin{flushleft}\createonlytitle\end{flushleft}}
+\fi
+
+% Centered title implementation
+\ifneo@onlytitle
+ \neo@handleonlytitle
+ {\begin{center}\createonlytitle\end{center}}
+ {\begin{center}\createonlytitle\end{center}}
+\fi
+
+% Right-aligned title implementation
+\ifneo@onlytitleright
+ \neo@handleonlytitle
+ {\begin{flushright}\createonlytitle\end{flushright}}
+ {\begin{flushright}\createonlytitle\end{flushright}}
+\fi
+
+%% ==============================================================================
+%% Table of Contents
+%% ==============================================================================
+
+\addto\captionsfrench{\renewcommand{\contentsname}{Sommaire}}
+
+\DeclareTOCStyleEntry[
+ entryformat={\sffamily\csname\neoschool@headweight\endcsname\color{\neoschool@headcolor}}
+]{tocline}{section}
+
+\DeclareTOCStyleEntry[
+ entryformat={\sffamily}
+]{tocline}{subsection}
+
+\DeclareTOCStyleEntry[
+ entryformat={\sffamily}
+]{tocline}{subsubsection}
+
+%% ==============================================================================
+%% Abstract formatting
+%% ==============================================================================
+
+\if@twocolumn
+ \renewenvironment{abstract}{%
+ \begin{strip}
+ \ifx\neoschool@abstracttitle\@empty
+ \vspace{-4em}
+ \quotation
+ \else
+ \vspace{-5em}
+ \section*{\csname\neoschool@abstracttitle\endcsname}%
+ \quotation
+ \fi}
+ {\endquotation\end{strip}}
+\else
+ \renewenvironment{abstract}{%
+ \ifx\neoschool@abstracttitle\@empty
+ % \vspace{-1em}
+ \quotation
+ \else
+ \vspace{-2em}
+ \section*{\csname\neoschool@abstracttitle\endcsname}%
+ \quotation
+ \fi}
+ {\endquotation}
+\fi
+
+%% ==============================================================================
+%% Section formatting utilities
+%% ==============================================================================
+
+% Style definitions
+\def\neo@align@right{right}
+\def\neo@align@left{left}
+\def\neo@align@center{center}
+
+\def\neo@numstyle@circle{circle}
+\def\neo@numstyle@box{box}
+\def\neo@numstyle@dash{dash}
+\def\neo@numstyle@plain{plain}
+
+\def\neo@textstyle@sc{sc}
+\def\neo@textstyle@upper{upper}
+\def\neo@textstyle@lower{lower}
+
+\def\neo@style@ornaments{ornaments}
+\def\neo@style@underline{underline}
+\def\neo@style@normal{normal}
+\def\neo@style@highlighted{highlighted}
+\def\neo@style@shadedline{shadedline}
+
+% Utility command for circular number style
+\newcommand*\circled[1]{\tikz[baseline=(char.base)]{%
+ \node[shape=circle,draw,inner sep=2pt,line width=1.5pt,baseline=-1.25mm] (char) {#1};}
+ \vspace{-2pt}
+}
+
+% Check for small caps availability
+\newcommand*{\IfSCAvailableTF}{%
+ \ifcsname\f@encoding/\f@family/\f@series/sc\endcsname
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}
+
+% Apply text style based on options
+\newcommand{\applytextstyle}[1]{%
+ \ifx\neoschool@sectiontextstyle\neo@textstyle@sc
+ \IfSCAvailableTF{\scshape\Large\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname #1}{\MakeUppercase{\large \csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname #1}}%
+ \else
+ \ifx\neoschool@sectiontextstyle\neo@textstyle@upper
+ \MakeUppercase{\large \csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname #1}%
+ \else
+ \csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\Large #1%
+ \fi
+ \fi
+}
+
+% Section number formatting based on style option
+\renewcommand{\sectionformat}{%
+ \ifx\neoschool@sectionnumstyle\neo@numstyle@circle
+ \circled{{\large\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\thesection}}\enskip%
+ \else
+ \ifx\neoschool@sectionnumstyle\neo@numstyle@box
+ \raisebox{0ex}{%
+ \setlength{\fboxrule}{1.5pt}%
+ \fcolorbox{\neoschool@headcolor}{white}{%
+ \color{\neoschool@headcolor}%
+ \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ % \csname\neoschool@headshape\endcsname
+ \large\thesection%
+ }%
+ }\enskip%
+ \else
+ \ifx\neoschool@sectionnumstyle\neo@numstyle@dash
+ \csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname\thesection\enskip\textendash\enskip
+ \else
+ \csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname\thesection\autodot\enskip
+ \fi
+ \fi
+ \fi
+}
+
+% Set section alignment
+\newcommand{\setsectionraggedstyle}{%
+ \ifx\neoschool@sectionalign\neo@align@right
+ \renewcommand*{\raggedsection}{\raggedleft}%
+ \else
+ \ifx\neoschool@sectionalign\neo@align@left
+ \renewcommand*{\raggedsection}{\raggedright}%
+ \else
+ \renewcommand*{\raggedsection}{\centering}%
+ \fi
+ \fi
+}
+
+% Main section format handler
+\renewcommand{\sectionlinesformat}[4]{%
+ \Ifstr{#1}{section}{%
+ % \vspace*{0.5em}%
+ \ifx\neoschool@sectionstyle\neo@style@ornaments
+ \sectionformat@ornaments{#3}{#4}%
+ \else
+ \ifx\neoschool@sectionstyle\neo@style@highlighted
+ \sectionformat@highlighted{#3}{#4}%
+ \else
+ \ifx\neoschool@sectionstyle\neo@style@shadedline
+ \sectionformat@shadedline{#3}{#4}%
+ \else
+ \ifx\neoschool@sectionstyle\neo@style@normal
+ \sectionformat@normal{#2}{#3}{#4}%
+ \else
+ \sectionformat@other{#3}{#4}%
+ \fi
+ \fi
+ \fi
+ \fi
+ % \vspace*{-0.15em}%
+ }{%
+ \@hangfrom{\hskip #2#3}{#4}%
+ }%
+}
+
+% Individual style implementations
+\newcommand{\sectionformat@normal}[3]{%
+ \setsectionraggedstyle
+ \parbox[t]{\linewidth}{%
+ \raggedsection
+ \@hangfrom{\color{\neoschool@headcolor}#2}{%
+ \color{\neoschool@headcolor}%
+ \applytextstyle{#3}%
+ }%
+ }%
+ \par\nobreak
+}
+
+\newcommand{\sectionformat@ornaments}[2]{%
+ \renewcommand*{\raggedsection}{\centering}%
+ \raggedsection
+ \vspace*{0.5em}%
+ \adforn{36}\enskip
+ {\color{\neoschool@headcolor}\applytextstyle{#1#2}}%
+ \enskip\adforn{36}%
+ \par\nobreak
+ \vspace*{0.2em}%
+}
+
+% Helper commands for TikZ styles
+\newcommand{\setsectiontikzalign}{%
+ \ifx\neoschool@sectionalign\neo@align@left
+ left%
+ \else
+ \ifx\neoschool@sectionalign\neo@align@right
+ right%
+ \else
+ center%
+ \fi
+ \fi
+}
+
+\newcommand{\setsectiontikzcolor}[1]{%
+ \ifx\neoschool@sectionalign\neo@align@left
+ \ifnum\pdf@strcmp{#1}{left}=0
+ \neoschool@headcolor!120
+ \else
+ \neoschool@headcolor!20
+ \fi
+ \else
+ \ifx\neoschool@sectionalign\neo@align@right
+ \ifnum\pdf@strcmp{#1}{right}=0
+ \neoschool@headcolor!120
+ \else
+ \neoschool@headcolor!20
+ \fi
+ \else
+ \neoschool@headcolor!25
+ \fi
+ \fi
+}
+
+\newcommand{\setsectiontikzmiddle}{%
+ \ifx\neoschool@sectionalign\neo@align@left
+ \neoschool@headcolor!90
+ \else
+ \ifx\neoschool@sectionalign\neo@align@right
+ \neoschool@headcolor!90
+ \else
+ \neoschool@headcolor!120
+ \fi
+ \fi
+}
+
+\newcommand{\sectionformat@highlighted}[2]{%
+ \noindent\begin{tikzpicture}[baseline]
+ \node[
+ anchor=base,
+ inner sep=3pt,
+ outer sep=0pt,
+ align=\setsectiontikzalign,
+ text width=.985\linewidth,
+ text=white,
+ line width=0.5pt,
+ left color={\setsectiontikzcolor{left}},
+ right color={\setsectiontikzcolor{right}},
+ middle color={\setsectiontikzmiddle},
+ rounded corners=0pt,
+ ] (title) {%
+ \vspace{-1pt}\hspace*{0.25em}\applytextstyle{#1#2}\hspace*{0.25em}%
+ \vspace{3pt}
+ };
+ \end{tikzpicture}%
+ \par\vspace{0.4em}%
+}
+
+\newcommand{\sectionformat@shadedline}[2]{%
+ \noindent
+ \begin{tikzpicture}[baseline]
+ \node[
+ text=\neoschool@headcolor,
+ anchor=base,
+ inner sep=0pt,
+ outer sep=0pt,
+ align=\setsectiontikzalign,
+ text width=\linewidth
+ ] (title) {%
+ \color{\neoschool@headcolor}%
+ \applytextstyle{#1#2}%
+ };
+
+ \ifx\neoschool@sectionalign\neo@align@center
+ \fill[
+ left color=\neoschool@headcolor!20,
+ right color=\neoschool@headcolor
+ ] ([yshift=-0.5em]title.south west) rectangle ++(.33\linewidth,-0.1em);
+ \fill[
+ left color=\neoschool@headcolor,
+ middle color=\neoschool@headcolor!120,
+ right color=\neoschool@headcolor
+ ] ([yshift=-0.5em]title.south west) ++(.33\linewidth,0) rectangle ([yshift=-0.6em]title.south east) ++(-0.33\linewidth,0);
+ \fill[
+ left color=\neoschool@headcolor,
+ right color=\neoschool@headcolor!20
+ ] ([yshift=-0.5em]title.south east) ++(-0.33\linewidth,0) rectangle ([yshift=-0.6em]title.south east);%
+ \else
+ \ifx\neoschool@sectionalign\neo@align@left
+ \fill[%
+ left color=\neoschool@headcolor,
+ right color=\neoschool@headcolor!20
+ ] ([yshift=-0.5em]title.south west) rectangle ([yshift=-0.6em]title.south east);%
+ \else
+ \fill[%
+ left color=\neoschool@headcolor!20,
+ right color=\neoschool@headcolor
+ ] ([yshift=-0.5em]title.south west) rectangle ([yshift=-0.6em]title.south east);%
+ \fi
+ \fi
+ \end{tikzpicture}%
+ \par\vspace{0.7em}%
+}
+
+\newcommand{\sectionformat@other}[2]{%
+ \setsectionraggedstyle
+ \ifx\neoschool@sectionstyle\neo@style@underline
+ \sectionformat@underline{#1}{#2}%
+ \else
+ \sectionformat@default{#1}{#2}%
+ \fi
+}
+
+\newcommand{\sectionformat@underline}[2]{%
+ \parbox[t]{\linewidth}{%
+ \raggedsection
+ {\color{\neoschool@headcolor}\applytextstyle{#1#2}}%
+ \par\nobreak
+ \kern-.75\ht\strutbox\color{\neoschool@headcolor!30}\rule{\linewidth}{1pt}%
+ }%
+}
+
+\newcommand{\sectionformat@default}[2]{%
+ \raggedsection
+ {\color{\neoschool@headcolor}\applytextstyle{#1#2}}%
+ \par\nobreak
+}
+
+%% ==============================================================================
+%% Header and Footer Styles and Setting
+%% ==============================================================================
+
+% Configuration defaults for header fields
+\def\neo@header@type{}
+\def\neo@header@school{}
+\def\neo@header@academy{}
+\def\neo@header@level{}
+\def\neo@header@duration{}
+\def\neo@header@calculator{false}
+\def\neo@header@leftcontent{\faBookOpen}
+\def\neo@header@rightcontent{\faSchool}
+\def\neo@header@leftcontentfill{true}
+\def\neo@header@rightcontentfill{true}
+
+\define@key[neo]{header}{type}{\def\neo@header@type{#1}}
+\define@key[neo]{header}{school}{\def\neo@header@school{#1}}
+\define@key[neo]{header}{academy}{\def\neo@header@academy{#1}}
+\define@key[neo]{header}{level}{\def\neo@header@level{#1}}
+\define@key[neo]{header}{duration}{\def\neo@header@duration{#1}}
+\define@key[neo]{header}{calculator}[false]{%
+ \def\@tempa{#1}%
+ \def\@tempb{true}\def\@tempc{false}\def\@tempd{exam}%
+ \ifx\@tempa\@tempb
+ \def\neo@header@calculator{true}%
+ \else
+ \ifx\@tempa\@tempc
+ \def\neo@header@calculator{false}%
+ \else
+ \ifx\@tempa\@tempd
+ \def\neo@header@calculator{exam}%
+ \else
+ \PackageError{neoschool}{Invalid calculator value: #1}
+ {Use 'true', 'false' or 'exam'}%
+ \fi
+ \fi
+ \fi
+}
+\define@key[neo]{header}{leftcontent}[\faBookOpen]{\def\neo@header@leftcontent{#1}}
+\define@key[neo]{header}{rightcontent}[\faSchool]{\def\neo@header@rightcontent{#1}}
+\define@key[neo]{header}{leftcontentfill}[true]{\def\neo@header@leftcontentfill{#1}}
+\define@key[neo]{header}{rightcontentfill}[true]{\def\neo@header@rightcontentfill{#1}}
+
+\newcommand{\neo@header@setkeys}{\setkeys[neo]{header}}
+
+\newcommand{\neoheader}[1]{%
+ \neo@header@setkeys{#1}%
+}
+
+% Full header configuration
+\ifneo@fullheader
+ \ihead{\neo@header@type}
+ \chead{\@title}
+ \ohead{\neo@header@level}
+ \ifoot{\@date}
+ \cfoot{\neo@header@school}
+ \ofoot{\pagemark}
+ \pagestyle{scrheadings}
+ \thispagestyle{firstpage}
+\else
+ \pagestyle{followingpages}
+ \thispagestyle{firstpage}
+\fi
+
+\ifneo@headrule
+ \KOMAoptions{headsepline=.4pt}
+\fi
+\ifneo@footrule
+ \KOMAoptions{footsepline=.4pt}
+\fi
+\ifneo@headfootrule
+ \KOMAoptions{headsepline=.4pt, footsepline=.4pt}
+\fi
+
+%% ==============================================================================
+%% Evaluation Headers and Special Styles
+%% ==============================================================================
+
+%% Dimensions and Basic Configuration
+%% ----------------------------------
+\newlength{\neo@headerheight}
+\setlength{\neo@headerheight}{35mm}
+
+\newlength{\neo@iconsize}
+\setlength{\neo@iconsize}{1.5cm}
+
+%% Colors Setup
+%% ----------------------------------
+\newcommand{\neo@setupevalcolors}{%
+ \def\neo@evalrulecolor{\neoschool@headfootcolor!25!white}%
+}
+
+%% Basic Title Components
+%% ----------------------------------
+\newcommand{\neo@completetitle}[1][]{%
+ % Main title
+ \node[
+ align=center,
+ anchor=center,
+ text width=0.85\textwidth,
+ #1
+ ] (title) at ([yshift=-24mm]current page.north) {%
+ \baselineskip=30pt
+ \Large
+ \csname\neoschool@titlestyle\endcsname
+ \csname\neoschool@titleweight\endcsname
+ \csname\neoschool@titleshape\endcsname
+ \color{\neoschool@titlecolor}\@title
+ };
+
+ % Subject (if provided)
+ \ifx\@subject\empty\else
+ \node[
+ above=1.5mm of title.north,
+ anchor=south,
+ text width=0.85\textwidth,
+ align=center,
+ font=\normalsize
+ ] {%
+ \usekomafont{subject}{\@subject}
+ };
+ \fi
+
+ % Subtitle (if provided)
+ \ifx\@subtitle\empty\else
+ \node[
+ below=1.5mm of title.south,
+ anchor=north,
+ text width=0.85\textwidth,
+ align=center,
+ font=\normalsize
+ ] {%
+ \usekomafont{subtitle}{\@subtitle}
+ };
+ \fi
+}
+
+\newcommand{\neo@completegradetitle}[1][]{%
+ % Main title
+ \node[
+ align=center,
+ anchor=center,
+ text width=0.85\textwidth,
+ #1
+ ] (title) at ([yshift=-24mm]current page.north) {%
+ \baselineskip=30pt
+ \Large
+ \csname\neoschool@titlestyle\endcsname
+ \csname\neoschool@titleweight\endcsname
+ \csname\neoschool@titleshape\endcsname
+ \color{\neoschool@titlecolor}\@title
+ };
+ % Subject (if provided)
+ \ifx\@subject\empty\else
+ \node[
+ above=1.5mm of title.north,
+ anchor=south,
+ text width=0.85\textwidth,
+ align=center,
+ font=\normalsize
+ ] {%
+ \usekomafont{subject}{\@subject}
+ };
+ \fi
+ % Subtitle (if provided)
+ \ifx\@subtitle\empty\else
+ \node[
+ below=1.5mm of title.south,
+ anchor=north,
+ text width=0.85\textwidth,
+ align=center,
+ font=\normalsize
+ ] {%
+ \usekomafont{subtitle}{\@subtitle}
+ };
+ \fi
+ % Duration
+ \node[
+ below=10mm of title.south,
+ anchor=north,
+ align=center,
+ font=\small\sffamily
+ ] {%
+ Durée : \neo@header@duration\quad\textbullet\quad\neo@calculator
+ };
+ % Name field
+ \node[
+ below=17.5mm of title.south,
+ anchor=north,
+ align=center,
+ font=\small\sffamily
+ ] {%
+ \color{\neoschool@globalcolor}Nom : \vardots[4cm]
+ };
+}
+
+%% ==============================================================================
+%% Enhanced Header without Icons
+%% ==============================================================================
+
+%% Configuration for Simple Header
+%% ----------------------------------
+\newcommand{\neo@setupheaderconfig}{%
+ \def\neo@cornershift{5mm}%
+ \def\neo@topyshift{8mm}%
+ \def\neo@topyshiftgrade{8mm}%
+ \def\neo@bottomyshift{40mm}%
+}
+
+%% Corner Text Nodes
+%% ----------------------------------
+\newcommand{\neo@cornernode}[4]{%
+ \node[
+ anchor=#1,
+ font={\color{\neoschool@headfootcolor}\small\sffamily}
+ ] at ([xshift=#2,yshift=-#3]current page.north #1) {%
+ \begingroup
+ #4%
+ \endgroup
+ };
+}
+
+%% ==============================================================================
+%% Header with Icons
+%% ==============================================================================
+
+%% Icon Node Definition
+%% ----------------------------------
+\newcommand{\neo@iconnode}[5]{%
+ % Icon node with color inversion
+ \node[
+ rectangle,
+ minimum height=\neo@iconsize,
+ minimum width=\neo@iconsize,
+ fill=white,
+ text=\neoschool@titlecolor,
+ draw=\neoschool@titlecolor,
+ line width=0.5pt,
+ anchor=center,
+ font=\normalsize,
+ rounded corners=2pt
+ ] (#1) at #2 {#3};
+
+ % Top text
+ \node[
+ above=2mm of #1,
+ anchor=south,
+ font={\color{\neoschool@headfootcolor}\small\sffamily}
+ ] (#1-top) {%
+ \begingroup
+ #4%
+ \endgroup
+ };
+
+ % Bottom text
+ \node[
+ below=2mm of #1,
+ anchor=north,
+ font={\color{\neoschool@headfootcolor}\small\sffamily}
+ ] (#1-bottom) {%
+ \begingroup
+ #5%
+ \endgroup
+ };
+}
+
+%% ==============================================================================
+%% Header Type Selection and Setup
+%% ==============================================================================
+
+\newcommand{\neo@basetitlecontent}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \neo@completetitle
+ \end{tikzpicture}%
+}
+
+%% Header without Icons
+\ifneo@eval
+ \newcommand{\neo@evaltitlecontent}{%
+ \neo@setupevalcolors
+ \neo@setupheaderconfig
+ \begin{tikzpicture}[remember picture,overlay]
+ \draw[\neo@evalrulecolor,line width=0.4pt]
+ ([yshift=-1.3\neo@headerheight]current page.north west) --
+ ([yshift=-1.3\neo@headerheight]current page.north east);
+ \neo@completetitle
+ \neo@cornernode{west}{\neo@cornershift}{\neo@topyshift}{\neo@header@type}
+ \neo@cornernode{east}{-\neo@cornershift}{\neo@topyshift}{\neo@header@school}
+ \neo@cornernode{west}{\neo@cornershift}{\neo@bottomyshift}{\neo@header@level}
+ \neo@cornernode{east}{-\neo@cornershift}{\neo@bottomyshift}{\@date}
+ \end{tikzpicture}%
+ \if@twocolumn\vspace{0.95\neo@headerheight}\else\vspace{0.85\neo@headerheight}\fi%
+ }
+
+ \AtBeginDocument{%
+ \let\neo@oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if@twocolumn
+ \twocolumn[\neo@evaltitlecontent]%
+ \else
+ \neo@evaltitlecontent
+ \fi
+ \thispagestyle{pagenum}%
+ }%
+ }
+\fi
+
+
+%% Header with Icons
+\ifneo@evalicons
+ \newcommand{\neo@evaliconscontent}{%
+ \neo@setupevalcolors
+ \begin{tikzpicture}[remember picture,overlay]
+ \draw[\neo@evalrulecolor,line width=0.4pt]
+ ([yshift=-1.125\neo@headerheight]current page.north west) --
+ ([yshift=-1.125\neo@headerheight]current page.north east);
+ \neo@completetitle
+ \neo@iconnode{typeicon}
+ {([xshift=30mm,yshift=-0.575\neo@headerheight]current page.north west)}
+ {\neo@header@leftcontent}
+ {\neo@header@type}
+ {\neo@header@level}
+ \neo@iconnode{schoolicon}
+ {([xshift=-30mm,yshift=-0.575\neo@headerheight]current page.north east)}
+ {\neo@header@rightcontent}
+ {\neo@header@school}
+ {\@date}
+ \end{tikzpicture}%
+ \if@twocolumn\vspace{0.85\neo@headerheight}\else\vspace{0.75\neo@headerheight}\fi%
+ }
+
+ \AtBeginDocument{%
+ \let\neo@oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if@twocolumn
+ \twocolumn[\neo@evaliconscontent]%
+ \else
+ \neo@evaliconscontent
+ \fi
+ \thispagestyle{pagenum}%
+ }%
+ }
+\fi
+
+%% Header with grading stip without Icons
+\ifneo@evalgrade
+ \newcommand{\neo@evalgradecontent}{%
+ \neo@setupevalcolors
+ \neo@setupheaderconfig
+ \begin{tikzpicture}[remember picture,overlay]
+ \neo@completegradetitle
+ % Top elements
+ \neo@cornernode{west}{\neo@cornershift}{\neo@topyshiftgrade}{\neo@header@type}
+ \neo@cornernode{east}{-\neo@cornershift}{\neo@topyshiftgrade}{\neo@header@level}
+
+ % Bottom elements
+ \node[
+ anchor=west,
+ font={\small\sffamily}
+ ] at ([xshift=5mm,yshift=9mm]current page.south west) {%
+ \color{\neoschool@headfootcolor}\@date%
+ };
+
+ \node[
+ anchor=east,
+ font={\small\sffamily}
+ ] at ([xshift=-5mm,yshift=9mm]current page.south east) {%
+ \color{\neoschool@headfootcolor}\neo@header@school%
+ };
+
+ % Page number in the center bottom
+ \node[
+ font=\small\sffamily,
+ inner sep=3mm
+ ] at ([yshift=9mm]current page.south) {%
+ \color{\neoschool@headfootcolor}\thepage
+ };
+ \end{tikzpicture}%
+
+ \if@twocolumn\vspace{\neo@headerheight}\else\vspace{0.95\neo@headerheight}\fi%
+
+ \ifx\neoschool@totalpoints\@empty\gradingstrip\else\gradingstrip[\neoschool@totalpoints]\fi
+ \vspace{1.5em}%
+ }
+
+ \AtBeginDocument{%
+ \let\neo@oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if@twocolumn
+ \twocolumn[\neo@evalgradecontent]%
+ \else
+ \neo@evalgradecontent
+ \fi
+ \thispagestyle{empty}%
+ }%
+ }
+\fi
+
+%% Header with grading strip with Icons
+\ifneo@evaliconsgrade
+ \newcommand{\neo@maketitlecontent}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \neo@completegradetitle
+ \neo@iconnode{typeicon}
+ {([xshift=30mm,yshift=-0.575\neo@headerheight]current page.north west)}
+ {\neo@header@leftcontent}
+ {\neo@header@type}
+ {\neo@header@level}
+ \neo@iconnode{schoolicon}
+ {([xshift=-30mm,yshift=-0.575\neo@headerheight]current page.north east)}
+ {\neo@header@rightcontent}
+ {\neo@header@school}
+ {\@date}
+ \end{tikzpicture}%
+
+ \if@twocolumn\vspace{\neo@headerheight}\else\vspace{0.95\neo@headerheight}\fi%
+
+ \ifx\neoschool@totalpoints\@empty\gradingstrip\else\gradingstrip[\neoschool@totalpoints]\fi
+ \vspace{1.5em}%
+ }
+
+ \AtBeginDocument{%
+ \let\neo@oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if@twocolumn
+ \twocolumn[\neo@maketitlecontent]%
+ \else
+ \neo@maketitlecontent
+ \fi
+ \thispagestyle{pagenum}%
+ }%
+ }
+\fi
+
+%% Calculator Notice
+%% ----------------------------------
+\newcommand{\neo@calculator}{%
+ \small L'usage de la calculatrice%
+ \ifnum\pdf@strcmp{\neo@header@calculator}{true}=0
+ \ est autorisé.%
+ \else\ifnum\pdf@strcmp{\neo@header@calculator}{exam}=0
+ \ est autorisé uniquement en mode examen.%
+ \else
+ \ n'est pas autorisé.%
+ \fi\fi
+ \par
+}
+
+%% Exam Header
+%% ----------------------------------
+%% Exam style helper commands and setup
+\newcommand{\neo@gettext}[1]{%
+ \ifneo@french
+ \ifcase#1\or Établissement\or Nom\or Classe\or Durée\or Date\or Note\or Appréciation\fi
+ \else\ifneo@german
+ \ifcase#1\or Einrichtung\or Name\or Klasse\or Dauer\or Datum\or Note\or Bewertung\fi
+ \else
+ \ifcase#1\or Institution\or Name\or Class\or Duration\or Date\or Mark\or Appreciation\fi
+ \fi\fi
+}
+
+\newcommand{\examfield}[2]{%
+ \textbf{#1}\hspace{0.5em}#2%
+}
+
+%% Exam title style
+\ifneo@exam
+ \newcommand{\neo@examcontent}{%
+ \vspace*{-2cm}%
+ \begin{tcolorbox}[%
+ enhanced,
+ frame hidden,
+ colback=white,
+ top=\baselineskip,
+ bottom=\baselineskip,
+ left=0pt,
+ right=0pt,
+ width=\textwidth,
+ after skip=0pt,
+ ]
+ {\renewcommand\arraystretch{1.25}
+ \begin{tblr}{X[4,l]X[2,c]X[3,r]}
+ \examfield{\neo@gettext{1} :}{\neo@header@school} & &
+ \examfield{\neo@gettext{5} :}{\@date} \\
+ \examfield{\neo@gettext{2} :}{\vardots[4cm]} & &
+ \examfield{\neo@gettext{3} :}{\neo@header@level}
+ \end{tblr}
+ }
+
+ \vspace{\baselineskip}
+ \centering
+
+ \begin{minipage}[c]{\linewidth}
+ \centering
+ \neo@header@type
+ \end{minipage}\vspace{.85\baselineskip}
+
+ \LARGE\csname\neoschool@titlestyle\endcsname
+ \csname\neoschool@titleweight\endcsname
+ \csname\neoschool@titleshape\endcsname
+ \color{\neoschool@titlecolor}
+ \@title\vspace{.75\baselineskip}
+
+ \normalsize\normalfont\color{black}
+ \begin{minipage}[c]{\linewidth}
+ \centering
+ \examfield{\neo@gettext{4} :}{\neo@header@duration}\vspace{\baselineskip}
+
+ \neo@calculator
+ \end{minipage}
+ \end{tcolorbox}
+
+ \ifx\neoschool@totalpoints\@empty\gradingstrip\else\gradingstrip[\neoschool@totalpoints]\fi
+ \vspace{2em}
+ }
+
+ \AtBeginDocument{%
+ \let\neo@oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if@twocolumn
+ \twocolumn[\neo@examcontent]%
+ \else
+ \neo@examcontent
+ \fi
+ \thispagestyle{pagenum}%
+ }%
+ }
+\fi
+
+%% French Exam Headers
+%% ----------------------------------
+% Common exam title commands
+\NewDocumentCommand{\neo@examtitle}{m}{%
+ {\color{\neoschool@titlecolor}
+ \csname\neoschool@titlestyle\endcsname
+ \csname\neoschool@titleweight\endcsname
+ \csname\neoschool@titleshape\endcsname
+ \LARGE\MakeUppercase{#1}\par}
+}
+
+\NewDocumentCommand{\neo@examsubtitle}{m}{%
+ {\color{\neoschool@titlecolor!85!black}
+ \csname\neoschool@titlestyle\endcsname
+ \Large #1\par}
+}
+
+\NewDocumentCommand{\neo@examinfo}{m}{%
+ {\color{\neoschool@titlecolor!75!black}
+ \csname\neoschool@titlestyle\endcsname
+ \large #1\par}
+}
+
+%% Mock exam style
+\ifneo@mockexam
+ \newcounter{mockexampages}
+ \AtEndDocument{%
+ \immediate\write\@auxout{%
+ \string\setcounter{mockexampages}{\thepage}%
+ }%
+ }
+ \newcommand{\neo@mockexamcontent}{%
+ \vspace*{1cm}%
+ \begin{center}
+ % Institution info
+ {\textsc{\neo@examinfo{\neo@header@school}}}
+ \vspace*{1cm}%
+ {\textsc{\neo@examinfo{Académie de \neo@header@academy}}}
+ \vspace*{\stretch{2.5}}%
+
+ % Title and session
+ {\LARGE\bfseries\csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \csname\neoschool@headshape\endcsname
+ \neo@examtitle{\neo@header@type}}
+ \vspace*{0.8cm}%
+ {\color{\neoschool@titlecolor!75!black}\itshape Session \@date}
+ \vspace*{1.5cm}%
+
+ % Subject and level
+ {\Large\csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \csname\neoschool@headshape\endcsname
+ \neo@examsubtitle{ÉPREUVE DE \MakeUppercase{\@subject}}}
+ \vspace*{1cm}%
+ {\neo@examinfo{\neo@header@level}}
+ \vspace*{\stretch{2}}%
+
+ % Duration
+ {\textit{Durée : \neo@header@duration}}
+ \vspace*{1.2cm}%
+
+ % Instructions
+ \begin{minipage}{0.8\textwidth}
+ \begin{center}
+ \setlength{\baselineskip}{1.6\baselineskip}%
+ \neo@calculator
+ \vspace*{0.8cm}%
+ La qualité de la rédaction et la rigueur des raisonnements
+ seront prises en compte dans l'évaluation des copies.
+ \vspace*{0.8cm}
+
+ Toute tentative, même partielle ou inachevée, sera valorisée.
+ \end{center}
+ \end{minipage}
+ \vspace*{\stretch{1.5}}%
+
+ % Page count
+ {\color{\neoschool@titlecolor!65!black}%
+ Ce document comporte \arabic{mockexampages}~pages numérotées de 1/\arabic{mockexampages} à \arabic{mockexampages}/\arabic{mockexampages}.}
+ \vspace*{1.5cm}%
+ \end{center}
+ \thispagestyle{pagenum}%
+ \clearpage\newpage
+ }
+ \AtBeginDocument{%
+ \let\neo@oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if@twocolumn
+ \onecolumn
+ \neo@mockexamcontent
+ \twocolumn
+ \else
+ \neo@mockexamcontent
+ \fi
+ }%
+ }
+\fi
+
+\ifneo@shortexam
+ \newcommand{\neo@shortexamcontent}{%
+ \vspace*{-0.5cm}
+ \begin{center}
+ {\Large \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \csname\neoschool@headshape\endcsname
+ \neo@examtitle{\neo@header@type}}
+
+ \vspace{3mm}
+ {\small \textit{Session \@date}}
+
+ \vspace{5mm}
+ {\large \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \csname\neoschool@headshape\endcsname
+ \neo@examsubtitle{ÉPREUVE DE \MakeUppercase{\@subject}}}
+
+ \vspace{3mm}
+ {\small \neo@examinfo{\neo@header@level}}
+
+ \vspace{5mm}
+ {\small \textit{Durée : \neo@header@duration}}
+
+ \vspace{5mm}
+ \neo@calculator
+
+ \vspace{15mm}
+ {\color{\neoschool@headfootcolor}%
+ \rule{\linewidth}{0.5pt}}
+ \end{center}
+ \vspace{10mm}%
+ }
+
+ \AtBeginDocument{%
+ \let\neo@oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if@twocolumn
+ \twocolumn[\neo@shortexamcontent]%
+ \else
+ \neo@shortexamcontent
+ \fi
+ \thispagestyle{pagenum}%
+ }%
+ }
+\fi
+
+%% Short Eval Header Style
+%% ----------------------------------
+\newlength{\sideWidth}
+\setlength{\sideWidth}{4.5cm}
+
+\ifneo@shorteval
+ \newcommand{\neo@shortevalcontent}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \draw[line width=0.4pt, \neoschool@headfootcolor!50!white]
+ ([yshift=-21mm]current page.north west) --
+ ([yshift=-21mm]current page.north east);
+ \path let \p1=(current page.east) in node[
+ anchor=west,
+ align=left,
+ text width=\sideWidth,
+ font=\small\sffamily,
+ text=\neoschool@headfootcolor
+ ] at ([xshift=0.75cm,yshift=-11mm]current page.north west)
+ {Nom :\\[1mm]
+ \neo@header@type};
+ \path let \p1=(current page.east) in node[
+ anchor=center,
+ align=center,
+ text width={\dimexpr\paperwidth-2\sideWidth-2cm},
+ font=\Large
+ ] at ([yshift=-11mm]current page.north)
+ {\color{\neoschool@titlecolor}%
+ \csname\neoschool@titlestyle\endcsname%
+ \csname\neoschool@titleweight\endcsname%
+ \csname\neoschool@titleshape\endcsname%
+ \@title};
+ \path let \p1=(current page.east) in node[
+ anchor=east,
+ align=right,
+ text width=\sideWidth,
+ font=\small\sffamily,
+ text=\neoschool@headfootcolor
+ ] at ([xshift=-0.75cm,yshift=-11mm]current page.north east)
+ {\neo@header@school\\[1mm]
+ \neo@header@level};
+ \end{tikzpicture}%
+ \vspace{2em}%
+ }
+
+ \AtBeginDocument{%
+ \let\neo@oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if@twocolumn
+ \twocolumn[\neo@shortevalcontent]%
+ \else
+ \neo@shortevalcontent
+ \fi
+ \thispagestyle{pagenum}%
+ }%
+ }
+\fi
+
+
+%% Short Title Header Style
+%% ----------------------------------
+\ifneo@shorttitle
+ \newcommand{\neo@shorttitlecontent}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \draw[line width=0.4pt, \neoschool@headfootcolor!50!white]
+ ([yshift=-21mm]current page.north west) --
+ ([yshift=-21mm]current page.north east);
+ \path let \p1=(current page.east) in node[
+ anchor=center,
+ align=center,
+ text width={\dimexpr\paperwidth-2cm},
+ font=\LARGE
+ ] at ([yshift=-11mm]current page.north)
+ {\color{\neoschool@titlecolor}%
+ \csname\neoschool@titlestyle\endcsname%
+ \csname\neoschool@titleweight\endcsname%
+ \csname\neoschool@titleshape\endcsname%
+ \@title};
+ \end{tikzpicture}%
+ \if@twocolumn\vspace{2em}\else\vspace{1em}\fi%
+ }
+
+ \AtBeginDocument{%
+ \let\neo@oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if@twocolumn
+ \twocolumn[\neo@shorttitlecontent]%
+ \else
+ \neo@shorttitlecontent
+ \fi
+ \thispagestyle{firstpage}%
+ }%
+ }
+\fi
+
+%% Short Lesson Header Style
+%% ----------------------------------
+\ifneo@shortlesson
+ \newcommand{\neo@shortlessoncontent}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ % Line under the header
+ \draw[line width=0.4pt, \neoschool@headfootcolor!50!white]
+ ([yshift=-21mm]current page.north west) --
+ ([yshift=-21mm]current page.north east);
+
+ % Left side - Type
+ \path let \p1=(current page.east) in node[
+ anchor=west,
+ align=left,
+ text width=\sideWidth,
+ font=\small\sffamily,
+ text=\neoschool@headfootcolor
+ ] at ([xshift=0.75cm,yshift=-11mm]current page.north west)
+ {\neo@header@type};
+
+ % Center - Title with dynamic width
+ \path let \p1=(current page.east) in node[
+ anchor=center,
+ align=center,
+ text width={\dimexpr\paperwidth-2\sideWidth-2cm},
+ font=\Large
+ ] at ([yshift=-11mm]current page.north)
+ {\color{\neoschool@titlecolor}%
+ \csname\neoschool@titlestyle\endcsname%
+ \csname\neoschool@titleweight\endcsname%
+ \csname\neoschool@titleshape\endcsname%
+ \@title};
+
+ % Right side - Level
+ \path let \p1=(current page.east) in node[
+ anchor=east,
+ align=right,
+ text width=\sideWidth,
+ font=\small\sffamily,
+ text=\neoschool@headfootcolor
+ ] at ([xshift=-0.75cm,yshift=-11mm]current page.north east)
+ {\neo@header@level};
+ \end{tikzpicture}%
+ \if@twocolumn\vspace{3em}\else\vspace{1.5em}\fi%
+ }
+
+ \AtBeginDocument{%
+ \let\neo@oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if@twocolumn
+ \twocolumn[\neo@shortlessoncontent]%
+ \else
+ \neo@shortlessoncontent
+ \fi
+ \thispagestyle{firstpage}%
+ }%
+ }
+\fi
+
+%% Bubbles Header
+%% ----------------------------------
+\ifneo@bubbles
+ \def\neo@bubbles@colbubbles{\neoschool@titlecolor}
+ \define@key[neo]{bubbles}{colbubbles}{\def\neo@bubbles@colbubbles{#1}}
+ \newcommand{\neo@bubbles@setkeys}{\setkeys[neo]{bubbles}}
+
+ \neo@bubbles@setkeys{%
+ colbubbles=\neoschool@titlecolor,
+ }
+
+ \newcommand{\neo@drawbubble}[5]{%
+ \pgfmathsetmacro{\opacityValue}{#1}
+ \ifneo@unicolor
+ \colorlet{currentcolor}{\neo@bubbles@colbubbles}
+ \else
+ \ifcase#2
+ \colorlet{currentcolor}{\neoschool@titlecolor}
+ \or
+ \colorlet{currentcolor}{\neoschool@headcolor}
+ \or
+ \colorlet{currentcolor}{theoremColor}
+ \or
+ \colorlet{currentcolor}{definitionColor}
+ \or
+ \colorlet{currentcolor}{methodColor}
+ \or
+ \colorlet{currentcolor}{applicationColor}
+ \fi
+ \fi
+ \colorlet{drawcolor}{currentcolor!75}
+ \fill[
+ color=currentcolor!#3!white,
+ draw=drawcolor,
+ line width=0.7pt,
+ opacity=#4
+ ] #5;
+ }
+
+ \newcommand{\neo@bubblescontent}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \def\ellipseWidth{20cm}
+ \def\ellipseHeight{5cm}
+ \def\numBubbles{500}
+ \coordinate (ellipseCenter) at ([yshift=-4cm]current page.north);
+
+ \foreach \i in {1,...,\numBubbles} {%
+ \pgfmathsetmacro{\angle}{random()*360}
+ \pgfmathsetmacro{\rawradius}{rand}
+ \pgfmathsetmacro{\radius}{pow(\rawradius, 2)}
+ \pgfmathsetmacro{\x}{\radius*\ellipseWidth/2.25*cos(\angle)}
+ \pgfmathsetmacro{\y}{\radius*\ellipseHeight/2.25*sin(\angle)}
+
+ \pgfmathrandominteger{\sizeGroup}{1}{3}
+ \ifnum\sizeGroup=1
+ \pgfmathsetmacro{\bubbleRadius}{rand*12 + 5}
+ \else\ifnum\sizeGroup=2
+ \pgfmathsetmacro{\bubbleRadius}{rand*8 + 3}
+ \else
+ \pgfmathsetmacro{\bubbleRadius}{rand*4 + 1}
+ \fi\fi
+
+ \pgfmathsetmacro{\op}{0.4 + 0.2*rand}
+
+ \pgfmathrandominteger{\col}{0}{4}
+ \pgfmathrandominteger{\p}{50}{90}
+ \neo@drawbubble{\op}{\col}{\p}{\op}
+ {([xshift=\x, yshift=\y]ellipseCenter) circle (\bubbleRadius pt)}
+ }
+
+ \node[%
+ anchor=north,
+ align=center,
+ inner sep=3mm,
+ minimum width=0.5\linewidth,
+ text opacity=1,
+ draw opacity=0.85,
+ fill=white,
+ rounded corners=2pt,
+ draw=\neoschool@headfootcolor,
+ line width=0.4pt
+ ] at ([yshift=0.5cm]ellipseCenter)
+ {\csname\neoschool@titlestyle\endcsname\csname\neoschool@titleweight\endcsname\csname\neoschool@titleshape\endcsname
+ \color{\neo@bubbles@colbubbles}\LARGE \@title};
+ \end{tikzpicture}%
+ \if@twocolumn\vspace{6cm}\else\vspace{11em}\fi%
+ }
+
+ \AtBeginDocument{%
+ \let\neo@oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if@twocolumn
+ \twocolumn[\neo@bubblescontent]%
+ \else
+ \neo@bubblescontent
+ \fi
+ \thispagestyle{firstpage}%
+ }%
+ }
+\fi
+
+%% Short Bubbles Header
+\ifneo@shortbubbles
+ \def\neo@bubbles@colbubbles{\neoschool@titlecolor}
+ \define@key[neo]{bubbles}{colbubbles}{\def\neo@bubbles@colbubbles{#1}}
+ \newcommand{\neo@bubbles@setkeys}{\setkeys[neo]{bubbles}}
+
+ \neo@bubbles@setkeys{%
+ colbubbles=\neoschool@titlecolor,
+ }
+
+ \newcommand{\neo@drawbubble}[5]{%
+ \pgfmathsetmacro{\opacityValue}{#1}
+ \ifneo@unicolor
+ \colorlet{currentcolor}{\neo@bubbles@colbubbles}
+ \else
+ \ifcase#2
+ \colorlet{currentcolor}{\neoschool@titlecolor}
+ \or
+ \colorlet{currentcolor}{\neoschool@headcolor}
+ \or
+ \colorlet{currentcolor}{theoremColor}
+ \or
+ \colorlet{currentcolor}{definitionColor}
+ \or
+ \colorlet{currentcolor}{methodColor}
+ \or
+ \colorlet{currentcolor}{applicationColor}
+ \fi
+ \fi
+ \colorlet{drawcolor}{currentcolor!75}
+ \fill[
+ color=currentcolor!#3!white,
+ draw=drawcolor,
+ line width=0.7pt,
+ opacity=#4
+ ] #5;
+}
+
+ \newcommand{\neo@shortbubblescontent}{%
+ \ifx\@subtitle\empty
+ \setlength{\neo@headerheight}{7em}
+ \else
+ \setlength{\neo@headerheight}{8em}
+ \fi
+
+ \begin{tikzpicture}[remember picture,overlay]
+ \def\myheight{4em}
+ % Set dimensions of the ellipse
+ \def\ellipseWidth{12cm}
+ \def\ellipseHeight{3cm}
+ \def\numBubbles{300}
+ \coordinate (ellipseCenter) at ([yshift=-.9\neo@headerheight]current page text area.north);
+
+ \foreach \i in {1,...,\numBubbles} {%
+ \pgfmathsetmacro{\angle}{random()*360}
+ \pgfmathsetmacro{\rawradius}{rand}
+ \pgfmathsetmacro{\radius}{pow(\rawradius, 2)} % Non-linear distribution
+ \pgfmathsetmacro{\x}{\radius * \ellipseWidth/2 * cos(\angle)}
+ \pgfmathsetmacro{\y}{\radius * \ellipseHeight/2 * sin(\angle)}
+
+ \pgfmathrandominteger{\sizeGroup}{1}{3}
+ \ifnum\sizeGroup=1
+ \pgfmathsetmacro{\bubbleRadius}{rand*8 + 3}
+ \else\ifnum\sizeGroup=2
+ \pgfmathsetmacro{\bubbleRadius}{rand*5 + 2}
+ \else
+ \pgfmathsetmacro{\bubbleRadius}{rand*3 + 1}
+ \fi\fi
+
+ \pgfmathsetmacro{\op}{0.3 + 0.4*rand}
+
+ \pgfmathrandominteger{\col}{0}{4}
+ \pgfmathrandominteger{\p}{50}{90}
+ \neo@drawbubble{\op}{\col}{\p}{\op}
+ {([xshift=\x, yshift=\y]ellipseCenter) circle (\bubbleRadius pt)}
+ }
+
+ \node[\neoschool@titlecolor] at
+ ([yshift=0.5\myheight]current page text area.north) (title) {%
+ \LARGE\csname\neoschool@titlestyle\endcsname
+ \csname\neoschool@titleweight\endcsname
+ \csname\neoschool@titleshape\endcsname
+ \@title
+ };
+
+ \ifx\@subtitle\empty\else
+ \node[subtitleColor, below=0.3em of title] {%
+ \large\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname\@subtitle
+ };
+ \fi
+ \end{tikzpicture}%
+ \if@twocolumn
+ \vspace{1.75\neo@headerheight}%
+ \else
+ \vspace{1.5\neo@headerheight}%
+ \fi
+ }
+
+ \AtBeginDocument{%
+ \let\neo@oldmaketitle\maketitle
+ \renewcommand{\maketitle}{%
+ \if@twocolumn
+ \twocolumn[\neo@shortbubblescontent]%
+ \else
+ \neo@shortbubblescontent
+ \fi
+ \thispagestyle{firstpage}%
+ }%
+ }
+\fi
+
+
+%% ==============================================================================
+%% Box Styles and Environment
+%% ==============================================================================
+
+%% Common Style Parameters
+%% ----------------------------------
+
+%% Mathematical Boxes
+%% ----------------------------------
+% Standard math box with configurable colors%
+\NewDocumentCommand\mathbox{D<>{white}O{definitionColor}}{%
+\tcboxmath[%
+ colback=#1,
+ colframe=#2,
+ size=fbox,
+ arc=3pt,
+ boxrule=0.8pt
+]
+}
+
+% Math highlighting with size adaptation
+\newcommand{\mhl}[2][yellow]{%
+ \mathchoice
+ {\colorbox{#1}{$\displaystyle#2$}}
+ {\colorbox{#1}{$\textstyle#2$}}
+ {\colorbox{#1}{$\scriptstyle#2$}}
+ {\colorbox{#1}{$\scriptscriptstyle#2$}}
+}
+
+%% Answer Fields
+%% ----------------------------------
+% Empty box for answers
+\newcommand{\emptybox}[2]{%
+ \begin{tcolorbox}[%
+ enhanced,
+ boxrule=1pt,
+ arc=5pt,
+ boxsep=0pt,
+ width=#1,
+ height=#2,
+ colback=exerciseColor!5!white,
+ frame hidden,
+ before skip=.5\baselineskip,
+ after skip=.5\baselineskip
+ ]
+ \null
+ \end{tcolorbox}
+}
+
+% Answer field with line spacing
+\newlength{\neo@answerbaselineskip}
+\setlength{\neo@answerbaselineskip}{1.35\baselineskip}
+
+\newcommand{\answerfield}[2][.975\linewidth]{%
+ \vspace{0.25\baselineskip}%
+ \noindent
+ \colorbox{exerciseColor!5!white}{%
+ \parbox{#1}{%
+ \phantom{\rule{1pt}{#2\neo@answerbaselineskip}}
+ }
+ }
+ \vspace{0.1cm}
+}
+
+% Answer field with frame and white background
+\newcommand{\answerframe}[2][\linewidth]{%
+ \noindent\par
+ \begin{tcolorbox}[%
+ enhanced,
+ boxrule=0.8pt,
+ colframe=exerciseColor!50,
+ colback=white,
+ width=#1,
+ height=#2\neo@answerbaselineskip,
+ nobeforeafter,
+ arc=2pt,
+ boxsep=0pt,
+ left=2pt,
+ right=2pt,
+ top=2pt,
+ bottom=2pt,
+ before skip=.5\baselineskip,
+ after skip=.5\baselineskip,
+ ]
+ \phantom{\rule{1pt}{#2\neo@answerbaselineskip}}
+ \end{tcolorbox}
+}
+
+%% Solution and Application Boxes
+%% ----------------------------------
+% Solution box with fixed dimensions
+\newcommand{\solutionbox}[3][\linewidth]{%
+ \begin{tcolorbox}[%
+ enhanced,
+ boxrule=1pt,
+ fontupper=\color{\neoschool@globalcolor},
+ arc=5pt,
+ boxsep=0mm,
+ width=#1,
+ height=#2,
+ colback=solutionColor!5!white,
+ frame hidden,
+ before skip=0.5\baselineskip,
+ after skip=\baselineskip
+ ]
+ #3
+ \end{tcolorbox}
+ \par%
+}
+
+% Colored box for applications
+\newcommand{\neocolorbox}[2][applicationColor]{%
+ \begin{tcolorbox}[%
+ enhanced,
+ fontupper=\color{\neoschool@globalcolor},
+ boxrule=1pt,
+ sharpish corners,
+ width=\linewidth,
+ colback=#1!5!white,
+ frame hidden,
+ before skip=12pt plus 2pt,
+ after skip=18pt plus 2pt
+ ]
+ #2
+ \end{tcolorbox}
+}
+
+%% Inline Boxes
+%% ----------------------------------
+\NewDocumentCommand{\inlinebox}{ O{definitionColor} O{white} O{definitionColor} m }{%
+ \tcbox[%
+ enhanced,
+ nobeforeafter,
+ tcbox raise base,
+ boxrule=0.4pt,
+ top=0mm,
+ bottom=0mm,
+ right=0mm,
+ left=0mm,
+ arc=1pt,
+ boxsep=2pt,
+ colback=#1,
+ colupper=#2,
+ colframe=#3
+ ]{#4}%
+}
+
+%% General Purpose Box Environment
+%% ----------------------------------
+\NewDocumentEnvironment{neobox}{ s O{} }{%
+ \begin{tcolorbox}[%
+ \IfBooleanTF{#1}{frame hidden}{},
+ colframe=\neoschool@headcolor,
+ colback=\neo@tcbcolback,
+ enhanced,
+ breakable,
+ boxrule=1pt,
+ arc=4pt,
+ sharp corners,
+ left=0.65em,
+ right=0.65em,
+ #2
+ ]
+ }{%
+ \end{tcolorbox}
+}
+
+% Define starred version
+\ExplSyntaxOn
+\cs_new:cpn {neobox*} {\neobox*}
+\cs_new_eq:cN {endneobox*} \endneobox
+\ExplSyntaxOff
+
+%% Side-by-Side Box Environment
+%% ----------------------------------
+% Base colors for example boxes
+\colorlet{neo@examplecomp}{-exampleColor}
+\colorlet{neo@exampledark}{neo@examplecomp!50!black}
+
+% Environment definition
+\newtcolorbox{sidebyside}[1][]{%
+ sidebyside,
+ enhanced,
+ bicolor,
+ sharp corners,
+ arc=1pt,
+ colback=exampleColor!5,
+ colbacklower=exampleColor!10,
+ colframe=exampleColor!85!black,
+ left=0pt,
+ right=0pt,
+ boxrule=1pt,
+ fonttitle=\sffamily\bfseries,
+ lefttitle=1.7mm,
+ before skip=\baselineskip,
+ after skip=\baselineskip,
+ #1
+}
+
+%% ==============================================================================
+%% Listings Styles and Setting
+%% ==============================================================================
+
+%% TColorBox Styles
+%% ----------------------------------
+
+%% Base Box Parameters
+%% ----------------------------------
+\tcbset{%
+ neo@commonbox/.style={%
+ enhanced,
+ boxrule=\neo@thmborder,
+ top=0pt,
+ bottom=0pt,
+ left=2mm,
+ right=2mm,
+ fonttitle=\small\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname,
+ coltitle=\neo@tcbcolback,
+ before skip=\baselineskip,
+ after skip=\baselineskip
+ }
+}
+
+%% Box Styles
+%% ----------------------------------
+\def\neo@notitle{notitle}
+
+\tcbset{%
+ box-classic/.style={%
+ neo@commonbox,
+ colback=white,
+ colframe=codeColor,
+ frame style={opacity=0.5},
+ boxrule=0.5pt,
+ arc=0pt,
+ toptitle=2pt,
+ bottomtitle=2pt,
+ colbacktitle=white,
+ coltitle=black,
+ fonttitle=\sffamily
+ },
+ box-bottomtitle/.style={%
+ neo@commonbox,
+ enhanced,
+ frame hidden,
+ colback=white,
+ colbacktitle=white,
+ coltitle=black,
+ fonttitle=\small\sffamily,
+ attach boxed title to bottom center,
+ bottom=0pt,
+ boxed title style={%
+ frame hidden,
+ colframe=white,
+ top=0pt,
+ }
+ },
+ box-bottomtitlef/.style={
+ neo@commonbox,
+ enhanced,
+ colframe=codeColor,
+ frame style={opacity=0.5},
+ boxrule=0.5pt,
+ colback=white,
+ colbacktitle=white,
+ coltitle=black,
+ fonttitle=\small\sffamily,
+ sharp corners,
+ attach boxed title to bottom center,
+ top=0pt,
+ bottom=0pt,
+ boxed title style={%
+ frame hidden,
+ colframe=white,
+ top=5pt
+ }
+ },
+ box-fancy/.style={%
+ neo@commonbox,
+ colback=codebackColor,
+ colframe=codeColor,
+ arc=\neoschool@boxarc,
+ toptitle=1pt,
+ bottomtitle=2pt,
+ colbacktitle=codeColor,
+ drop fuzzy shadow
+ },
+ box-minimal/.style={%
+ neo@commonbox,
+ colback=white,
+ colframe=codeColor,
+ frame style={opacity=0.5},
+ toptitle=2pt,
+ bottomtitle=2pt,
+ boxrule=0.3pt,
+ arc=0pt,
+ colbacktitle=white,
+ coltitle=codeColor
+ },
+ box-elegant/.style={%
+ neo@commonbox,
+ colback=codebackColor,
+ colframe=codeColor,
+ toptitle=1pt,
+ bottomtitle=2pt,
+ sharp corners=all,
+ drop fuzzy shadow
+ },
+ box-diagonal/.style={%
+ neo@commonbox,
+ colback=codebackColor,
+ colframe=codeColor,
+ toptitle=1pt,
+ bottomtitle=2pt,
+ arc=\neoschool@boxarc,
+ sharp corners=southwest,
+ sharp corners=northeast
+ },
+ box-bevel/.style={%
+ neo@commonbox,
+ colback=codebackColor,
+ colframe=codeColor,
+ toptitle=1pt,
+ bottomtitle=2pt,
+ arc=\neoschool@boxarc,
+ sharp corners=southeast,
+ sharp corners=northwest
+ },
+ box-corner/.style={%
+ neo@commonbox,
+ colback=codebackColor,
+ colframe=codeColor,
+ toptitle=1pt,
+ bottomtitle=2pt,
+ sharp corners=downhill,
+ rounded corners=northeast,
+ rounded corners=northwest,
+ arc=\neoschool@boxarc
+ },
+ box-rounded/.style={%
+ neo@commonbox,
+ colback=codebackColor,
+ colframe=codeColor,
+ rounded corners,
+ toptitle=1pt,
+ bottomtitle=2pt,
+ arc=\neoschool@boxarc,
+ },
+ box-downhill/.style={%
+ neo@commonbox,
+ colback=codebackColor,
+ colframe=codeColor,
+ sharp corners=downhill,
+ arc=\neoschool@boxarc,
+ top=0mm,
+ bottom=0mm,
+ fontupper=\color{\neoschool@globalcolor},
+ attach boxed title to top right={yshift=-\tcboxedtitleheight},
+ boxed title style={%
+ colback=codeColor,
+ colframe=codeColor,
+ sharp corners=downhill,
+ arc=.2cm,
+ top=1pt,
+ bottom=1pt,
+ left=2pt,
+ right=2pt
+ },
+ }
+}
+
+\ifneo@unicolor
+ \def\neo@keywordstyle{\color{\neoschool@headcolor}\bfseries}
+ \def\neo@commentstyle{\color{alternateColor}}
+ \def\neo@stringstyle{\color{\neoschool@headcolor!85}}
+ \def\neo@emphstyle{\color{\neoschool@headcolor}\bfseries}
+\else
+ \def\neo@keywordstyle{\color{codeKeyword}\bfseries}
+ \def\neo@commentstyle{\color{codeComment}}
+ \def\neo@stringstyle{\color{codeString}}
+ \def\neo@emphstyle{\color{codeEmph}\bfseries}
+\fi
+
+\ifneo@listings
+
+ %% Base Listing Style
+ %% ----------------------------------
+ \lstdefinestyle{neo@lst@base}{%
+ basicstyle=\ttfamily\small,
+ columns=fullflexible,
+ breaklines=true,
+ keepspaces=true,
+ showstringspaces=false,
+ tabsize=4,
+ inputencoding=utf8,
+ extendedchars=true,
+ escapeinside={(*@}{@*)},
+ aboveskip=.25\baselineskip,
+ belowskip=.25\baselineskip,
+ literate={%
+ á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
+ {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
+ {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
+ {À}{{\`A}}1 {È}{{\`E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
+ {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
+ {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
+ {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
+ {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
+ {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
+ {ẞ}{{\SS}}1 {ç}{{\c{c}}}1 {Ç}{{\c{C}}}1 {ø}{{\o}}1 {Ø}{{\O}}1
+ {å}{{\aa}}1 {Å}{{\AA}}1 {ã}{{\~a}}1 {õ}{{\~o}}1 {Ã}{{\~A}}1
+ {Õ}{{\~O}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1 {¡}{{!`}}1
+ {°}{{\textdegree}}1 {º}{{\textordmasculine}}1 {ª}{{\textordfeminine}}1
+ {€}{{\euro}}1 {£}{{\pounds}}1 {©}{{\copyright}}1 {®}{{\textregistered}}1
+ {«}{{\guillemotleft}}1 {»}{{\guillemotright}}1 {Ð}{{\DH}}1 {ð}{{\dh}}1
+ {Ý}{{\'Y}}1 {ý}{{\'y}}1 {Þ}{{\TH}}1 {þ}{{\th}}1 {Ă}{{\u{A}}}1
+ {ă}{{\u{a}}}1 {Ą}{{\k{A}}}1 {ą}{{\k{a}}}1 {Ć}{{\'C}}1 {ć}{{\'c}}1
+ {Č}{{\v{C}}}1 {č}{{\v{c}}}1 {Ď}{{\v{D}}}1 {ď}{{\v{d}}}1 {Đ}{{\DJ}}1
+ {đ}{{\dj}}1 {Ė}{{\.{E}}}1 {ė}{{\.{e}}}1 {Ę}{{\k{E}}}1 {ę}{{\k{e}}}1
+ {Ě}{{\v{E}}}1 {ě}{{\v{e}}}1 {Ğ}{{\u{G}}}1 {ğ}{{\u{g}}}1 {Ĩ}{{\~I}}1
+ {ĩ}{{\~\i}}1 {Į}{{\k{I}}}1 {į}{{\k{i}}}1 {İ}{{\.{I}}}1 {ı}{{\i}}1
+ {Ĺ}{{\'L}}1 {ĺ}{{\'l}}1 {Ľ}{{\v{L}}}1 {ľ}{{\v{l}}}1 {Ł}{{\L{}}}1
+ {ł}{{\l{}}}1 {Ń}{{\'N}}1 {ń}{{\'n}}1 {Ň}{{\v{N}}}1 {ň}{{\v{n}}}1
+ {Ő}{{\H{O}}}1 {ő}{{\H{o}}}1 {Ŕ}{{\'{R}}}1 {ŕ}{{\'{r}}}1 {Ř}{{\v{R}}}1
+ {ř}{{\v{r}}}1 {Ś}{{\'S}}1 {ś}{{\'s}}1 {Ş}{{\c{S}}}1 {ş}{{\c{s}}}1
+ {Š}{{\v{S}}}1 {š}{{\v{s}}}1 {Ť}{{\v{T}}}1 {ť}{{\v{t}}}1 {Ũ}{{\~U}}1
+ }
+
+ \renewcommand*{\lstlistingname}{\neo@codename}
+
+ %% Common Style Elements
+ %% ----------------------------------
+
+ %% ==============================================================================
+ %% Listings Styles and Settings - Part 2
+ %% Defines specific listing styles and environments
+ %% ==============================================================================
+
+ %% Specific Listing Styles
+ %% ----------------------------------
+ % Style Colorful and variants
+ \lstdefinestyle{neo@lst@colorful}{%
+ style=neo@lst@base,
+ keywordstyle=\neo@keywordstyle,
+ commentstyle=\neo@commentstyle,
+ stringstyle=\neo@stringstyle,
+ emphstyle=\neo@emphstyle,
+ numbers=none,
+ numberstyle=\tiny\color{codeBackground},
+ frame=none
+ }
+
+ % Variants with background color
+ \lstdefinestyle{neo@lst@colorfulb}{%
+ style=neo@lst@colorful,
+ backgroundcolor=\color{codebackColor}
+ }
+
+ % Variants with line numbers
+ \lstdefinestyle{neo@lst@colorfuln}{%
+ style=neo@lst@colorful,
+ numbers=left,
+ numbersep=10pt
+ }
+
+ % Variants with line numbers and background
+ \lstdefinestyle{neo@lst@colorfulbn}{%
+ style=neo@lst@colorfulb,
+ numbers=left,
+ numbersep=10pt
+ }
+
+ % Variants with frame
+ \lstdefinestyle{neo@lst@colorfulf}{%
+ style=neo@lst@colorful,
+ frame=single
+ }
+
+ % Variants with frame and background
+ \lstdefinestyle{neo@lst@colorfulbf}{%
+ style=neo@lst@colorfulb,
+ frame=single
+ }
+
+ % Variants with frame and numbers
+ \lstdefinestyle{neo@lst@colorfulfn}{%
+ style=neo@lst@colorfuln,
+ frame=single
+ }
+
+ % Variants with all options
+ \lstdefinestyle{neo@lst@colorfulbfn}{%
+ style=neo@lst@colorfulbn,
+ frame=single
+ }
+
+ %% Minimal Style and Variants
+ %% ----------------------------------
+ \lstdefinestyle{neo@lst@minimal}{%
+ style=neo@lst@base,
+ keywordstyle=\ifneo@unicolor\color{\neoschool@headcolor}\fi\bfseries,
+ commentstyle=\ifneo@unicolor\color{\neoschool@headcolor}\fi,
+ stringstyle=\ifneo@unicolor\color{\neoschool@headcolor}\else\ttfamily\fi,
+ emphstyle=\ifneo@unicolor\color{\neoschool@headcolor}\else\bfseries\fi,
+ numbers=none,
+ frame=none,
+ }
+
+ % Define all variants using the same pattern as colorful styles
+ \lstdefinestyle{neo@lst@minimalb}{style=neo@lst@minimal,backgroundcolor=\color{codebackColor}}
+ \lstdefinestyle{neo@lst@minimaln}{style=neo@lst@minimal,numbers=left,numbersep=10pt}
+ \lstdefinestyle{neo@lst@minimalbn}{style=neo@lst@minimalb,numbers=left,numbersep=10pt}
+ \lstdefinestyle{neo@lst@minimalf}{style=neo@lst@minimal,frame=single}
+ \lstdefinestyle{neo@lst@minimalbf}{style=neo@lst@minimalb,frame=single}
+ \lstdefinestyle{neo@lst@minimalfn}{style=neo@lst@minimaln,frame=single}
+ \lstdefinestyle{neo@lst@minimalbfn}{style=neo@lst@minimalbn,frame=single}
+
+ %% Academic and Modern Styles
+ %% ----------------------------------
+ \lstdefinestyle{neo@lst@academic}{%
+ style=neo@lst@base,
+ keywordstyle=\ifneo@unicolor\color{\neoschool@headcolor}\fi\bfseries,
+ commentstyle=\ifneo@unicolor\color{\neoschool@headcolor}\fi,
+ stringstyle=\ifneo@unicolor\color{\neoschool@headcolor}\else\ttfamily\fi,
+ numbers=left,
+ numberstyle=\tiny,
+ numbersep=12pt,
+ frame=leftline,
+ framesep=3pt,
+ framexleftmargin=3pt,
+ xleftmargin=15pt
+ }
+
+ \lstdefinestyle{neo@lst@modern}{%
+ style=neo@lst@base,
+ keywordstyle=\ifneo@unicolor\color{\neoschool@headcolor}\else\color{codeKeyword}\fi\bfseries,
+ commentstyle=\ifneo@unicolor\color{\neoschool@headcolor}\else\color{codeComment}\fi,
+ stringstyle=\ifneo@unicolor\color{\neoschool@headcolor}\else\color{codeString}\fi,
+ numbers=none,
+ frame=single,
+ framerule=1pt,
+ framesep=3pt,
+ rulecolor=\ifneo@unicolor\color{\neoschool@headcolor}\else\color{codeKeyword}\fi,
+ backgroundcolor=\ifneo@unicolor\color{codebackColor}\else\color{codeKeyword!5}\fi,
+ framesep=7pt,
+ xleftmargin=1em,
+ linewidth={\dimexpr \linewidth-10pt},
+ }
+
+ %% Language-Specific Definitions
+ %% ----------------------------------
+ % JSON
+ \lstdefinelanguage{json}{%
+ keywords={true,false,null},
+ sensitive=false,
+ morestring=[b]",
+ morecomment=[l]{//},
+ morecomment=[s]{/*}{*/},
+ literate=
+ *{0}{{{\color{codeComment}0}}}{1}
+ {1}{{{\color{codeComment}1}}}{1}
+ {2}{{{\color{codeComment}2}}}{1}
+ {3}{{{\color{codeComment}3}}}{1}
+ {4}{{{\color{codeComment}4}}}{1}
+ {5}{{{\color{codeComment}5}}}{1}
+ {6}{{{\color{codeComment}6}}}{1}
+ {7}{{{\color{codeComment}7}}}{1}
+ {8}{{{\color{codeComment}8}}}{1}
+ {9}{{{\color{codeComment}9}}}{1}
+ {:}{{{\color{codeKeyword}{:}}}}{1}
+ {,}{{{\color{codeKeyword}{,}}}}{1}
+ {\{}{{{\color{codeKeyword}{\{}}}}{1}
+ {\}}{{{\color{codeKeyword}{\}}}}}{1}
+ {[}{{{\color{codeKeyword}{[}}}}{1}
+ {]}{{{\color{codeKeyword}{]}}}}{1},
+ }
+
+ % YAML
+ \lstdefinelanguage{yaml}{%
+ keywords={true,false,null,yes,no,on,off},
+ sensitive=false,
+ morestring=[b]",
+ morestring=[b]',
+ morecomment=[l]{\#},
+ literate=
+ *{:}{{{\color{codeKeyword}{:}}}}{1}
+ {-}{{{\color{codeKeyword}{-}}}}{1}
+ {>}{{{\color{codeKeyword}{>}}}}{1}
+ {|}{{{\color{codeKeyword}{|}}}}{1},
+ }
+
+ % TOML
+ \lstdefinelanguage{toml}{%
+ keywords={true,false},
+ sensitive=false,
+ morestring=[b]",
+ morestring=[b]',
+ morecomment=[l]{\#},
+ literate=
+ *{=}{{{\color{codeKeyword}{=}}}}{1}
+ {[}{{{\color{codeKeyword}{[}}}}{1}
+ {]}{{{\color{codeKeyword}{]}}}}{1}
+ {.}{{{\color{codeKeyword}{.}}}}{1},
+ }
+
+ % CSV
+ \lstdefinelanguage{csv}{%
+ sensitive=false,
+ morestring=[b]",
+ morecomment=[l]{\#},
+ literate=
+ *{,}{{{\color{codeKeyword}{,}}}}{1}
+ {;}{{{\color{codeKeyword}{;}}}}{1},
+ }
+
+ % Markdown
+ \lstdefinelanguage{markdown}{%
+ sensitive=false,
+ morecomment=[l]{\%},
+ literate=
+ *{\#}{{{\color{codeKeyword}{\#}}}}{1}
+ {-}{{{\color{codeKeyword}{-}}}}{1}
+ {*}{{{\color{codeKeyword}{*}}}}{1}
+ {>}{{{\color{codeKeyword}{>}}}}{1}
+ {`}{{{\color{codeKeyword}{`}}}}{1}
+ {|}{{{\color{codeKeyword}{|}}}}{1}
+ {[}{{{\color{codeKeyword}{[}}}}{1}
+ {]}{{{\color{codeKeyword}{]}}}}{1}
+ {(}{{{\color{codeKeyword}{(}}}}{1}
+ {)}{{{\color{codeKeyword}{)}}}}{1},
+ }
+
+ %% Language-Specific Styles
+ %% ----------------------------------
+ \lstdefinestyle{python}{%
+ language=Python,
+ style=neo@lst@\neoschool@lststyle,
+ morekeywords={%
+ @property,@classmethod,@staticmethod,
+ },
+ emph={%
+ range,int,str,list,dict,set,bool,float,
+ tuple,super,type,print,len,sum,min,max,
+ enumerate,zip,map,filter,any,all,as,assert,
+ nonlocal,with,yield,self,True,False,None,
+ lambda,raise,await,async,
+ },
+ morestring=[b]""",
+ }
+
+ \lstdefinestyle{java}{%
+ language=Java,
+ style=neo@lst@\neoschool@lststyle,
+ morekeywords={%
+ @Override,@Deprecated,@SuppressWarnings,
+ @FunctionalInterface,@SafeVarargs,
+ var,record,sealed,permits,
+ public,private,protected,static,final,
+ abstract,interface,extends,implements
+ },
+ morecomment=[s]{/*}{*/},
+ morecomment=[l]//,
+ morestring=[b]",
+ }
+
+ \lstdefinestyle{cpp}{%
+ language=C++,
+ style=neo@lst@\neoschool@lststyle,
+ morekeywords={%
+ nullptr,constexpr,override,final,
+ template,typename,concept,requires,
+ auto,decltype,noexcept,static_assert,
+ thread_local,alignas,alignof
+ },
+ morecomment=[s]{/*}{*/},
+ morecomment=[l]//,
+ morestring=[b]",
+ }
+
+ \lstdefinestyle{javascript}{%
+ language=JavaScript,
+ style=neo@lst@\neoschool@lststyle,
+ morekeywords={%
+ let,const,var,function,class,extends,
+ static,get,set,new,this,super,
+ import,export,default,from,as,
+ async,await,yield,return,
+ undefined,null,true,false
+ },
+ morecomment=[s]{/*}{*/},
+ morecomment=[l]//,
+ morestring=[b]",
+ morestring=[b]',
+ morestring=[b]`,
+ }
+
+ \lstdefinestyle{sql}{%
+ language=SQL,
+ style=neo@lst@\neoschool@lststyle,
+ morekeywords={%
+ CREATE,TABLE,INSERT,INTO,VALUES,
+ SELECT,FROM,WHERE,GROUP,BY,HAVING,
+ ORDER,LIMIT,JOIN,LEFT,RIGHT,INNER,
+ UPDATE,SET,DELETE,ALTER,DROP,
+ CONSTRAINT,PRIMARY,KEY,FOREIGN,
+ REFERENCES,CASCADE,INDEX
+ },
+ sensitive=false,
+ }
+
+ \lstdefinestyle{latex}{%
+ language=[latex]TeX,
+ style=neo@lst@\neoschool@lststyle,
+ texcsstyle=*\bfseries\color{codeKeyword},
+ moretexcs = {tableofcontents,index,footnote,sout,part,chapter,subsection,subsubsection,paragraph,maketitle,leqslant,geqslant,varnothing,includegraphics,draw,node,theoremstyle,newtcolorbox,tcbuselibrary,newtcbtheorem,SI,ang,ce,chemfig,norm,abs,deriv,R,N,Z,ProvidesPackage,color,ps,montitre,lstset,lstinline,lstinputlisting,definecolor,textcolor,colorlet,setlength,colorbox,fcolorbox,addplot,pgfplotsset,opadd,opsub,opmul,opdiv,opgcd,metre,second,squared,kelvin,coulomb,volt,per,opprint,legend,tkzDefPoint,tkzInterLL,tkzGetPoint,tkzDrawPolygon,tkzDrawSegments,tkzMarkRightAngles,tkzMarkSegments,tkzLabelPoints,boxed,boldsymbol,boldmath,multirow,addbibresource,printbibliography,bm,dfrac,meter,thead,makecell,euro,cellcolor,rowcolor,columncolor,base,repere,rog,ron,rond,derpart,drv,integrer,nuplet,anuplet,ensemble,E,V,suite,suitar,suitgeo,vect,norme,tr,rank,adj,sgn,im,di,intabfx,integrale,e,moinsinf,plusinf,sisetup,restoregeometry,newgeometry,lefttitle,righttitle,colbacklower,neoheader,neograph,textwithimage,withqrcode,positionobject,splitcontent,grid,customgrid,frenchgrid,notebook,nbminorgrid,nbmajorgrid},
+ emph={width,axis~lines,xlabel,ylabel,xmin,ymin,grid,domain,samples,displayshiftintermediary,colback,colframe,colbacktitle,coltitle,enhanced,,fonttitle,margin,leftmargin,publisher,year,carrysub,lastcarry,locale,xmax,ymax,coordinates,mark,style,hmargin,vmargin,top,bottom,left,right,showframe,includeheadfoot,opacity,fill,above,},
+ morecomment=[l]{\%},
+ morestring=[b]",
+ sensitive=true
+ }
+
+ \lstdefinestyle{bash}{%
+ language=bash,
+ style=neo@lst@\neoschool@lststyle,
+ morekeywords={%
+ source, alias, bg, bind, break, builtin, cd, command, compgen,
+ complete, continue, declare, dirs, disown, echo, enable, eval,
+ exec, exit, export, fc, fg, getopts, hash, help, history, jobs,
+ kill, let, local, logout, mapfile, popd, printf, pushd, pwd,
+ read, readarray, readonly, return, set, shift, shopt, suspend,
+ test, times, trap, type, typeset, ulimit, umask, unalias,
+ unset, wait
+ },
+ morestring=[b]",
+ morestring=[b]',
+ morestring=[b]\`,
+ morecomment=[l]{\#},
+ literate=
+ *{\$}{{{\color{codeKeyword}{\$}}}}{1}
+ {|}{{{\color{codeKeyword}{|}}}}{1}
+ {>}{{{\color{codeKeyword}{>}}}}{1}
+ {<}{{{\color{codeKeyword}{<}}}}{1}
+ {&}{{{\color{codeKeyword}{\&}}}}{1},
+ }
+
+ \lstdefinestyle{assembly}{%
+ language=[x86]Assembler,
+ style=neo@lst@\neoschool@lststyle,
+ morekeywords={%
+ section, global, extern
+ },
+ morecomment=[l]{;},
+ morecomment=[l]{\#},
+ literate=
+ *{,}{{{\color{codeKeyword}{,}}}}{1}
+ {:}{{{\color{codeKeyword}{:}}}}{1}
+ {[}{{{\color{codeKeyword}{[}}}}{1}
+ {]}{{{\color{codeKeyword}{]}}}}{1}
+ {\$}{{{\color{codeKeyword}{\$}}}}{1}
+ {\%}{{{\color{codeKeyword}{\%}}}}{1},
+ }
+
+ \lstdefinestyle{lisp}{%
+ language=Lisp,
+ style=neo@lst@\neoschool@lststyle,
+ morekeywords={%
+ setq, setf, loop, do, progn, when, unless
+ },
+ literate=
+ *{(}{{{\color{codeKeyword}{(}}}}{1}
+ {)}{{{\color{codeKeyword}{)}}}}{1}
+ {'}{{{\color{codeKeyword}{'}}}}{1}
+ {`}{{{\color{codeKeyword}{`}}}}{1}
+ {,}{{{\color{codeKeyword}{,}}}}{1},
+ }
+
+ \lstdefinestyle{json}{%
+ style=neo@lst@\neoschool@lststyle,
+ language=json,
+ }
+
+ \lstdefinestyle{yaml}{%
+ style=neo@lst@\neoschool@lststyle,
+ language=yaml,
+ }
+
+ \lstdefinestyle{toml}{%
+ style=neo@lst@\neoschool@lststyle,
+ language=toml,
+ }
+
+ \lstdefinestyle{csv}{%
+ style=neo@lst@\neoschool@lststyle,
+ language=csv,
+ }
+
+ \lstdefinestyle{markdown}{%
+ style=neo@lst@\neoschool@lststyle,
+ language=markdown,
+ }
+
+ %% Environment Definitions
+ %% ----------------------------------
+ % Counter for code listings
+ \newcounter{lstcode}
+
+ % Code listing environment
+ \NewTCBListing[use counter=lstcode]{code}{ O{} m !O{} !O{} }{%
+ listing only,
+ enhanced,
+ breakable,
+ listing options={%
+ style=#2,
+ #1
+ },
+ code={%
+ \IfEqCase{#4}{%
+ {}{\tcbset{%
+ standard jigsaw,
+ opacityback=0,
+ opacityframe=0,
+ frame hidden,
+ boxrule=0pt,
+ left=0pt,
+ right=0pt,
+ top=0pt,
+ bottom=0pt,
+ title={},
+ notitle
+ }}
+ {box-minimal}{\tcbset{box-minimal}}
+ {box-fancy}{\tcbset{box-fancy}}
+ {box-classic}{\tcbset{box-classic}}
+ {box-elegant}{\tcbset{box-elegant}}
+ {box-diagonal}{\tcbset{box-diagonal}}
+ {box-bevel}{\tcbset{box-bevel}}
+ {box-corner}{\tcbset{box-corner}}
+ {box-rounded}{\tcbset{box-rounded}}
+ {box-downhill}{\tcbset{box-downhill}}
+ {box-bottomtitle}{\tcbset{box-bottomtitle}}
+ {box-bottomtitlef}{\tcbset{box-bottomtitlef}}
+ }[\PackageError{code}{Style not found: #4}{}]
+ \ifx\relax#3\relax\else
+ \tcbset{title={\lstlistingname~\thelstcode~~\textemdash{}~~#3},\neoschool@boxtitle}
+ \fi
+ }
+ }
+
+ % Style selector command
+ \newcommand{\setcodestyle}[1]{%
+ \renewcommand{\neoschool@lststyle}{#1}
+ }
+
+ % Default style
+ \AtBeginDocument{%
+ \ifneo@listings
+ \lstset{style=neo@lst@\neoschool@lststyle}
+ \else
+ \PackageWarning{neoschool}{The 'listings' package is not enabled, lststyle option will be ignored.}
+ \fi
+ }
+
+ % Inline code
+ \newcommand{\codeinline}[2][]{%
+ \lstinline[style=#1]{#2}
+ }
+
+ % Language detection
+ \newcommand{\DetectLanguage}[1]{%
+ \filename@parse{#1}
+ \ifthenelse{\equal{\filename@ext}{py}}{python}{%
+ \ifthenelse{\equal{\filename@ext}{java}}{java}{%
+ \ifthenelse{\equal{\filename@ext}{tex}}{latex}{text}
+ }
+ }
+ }
+
+ % Code input
+ \NewTCBInputListing{\codeinput}{ O{} m m !O{} !O{} }{%
+ listing file={#3},
+ listing only,
+ boxrule=0pt,
+ enhanced,
+ breakable,
+ listing file={#3},
+ listing options={%
+ style={#2},
+ #1
+ },
+ frame hidden,
+ colback=codebackColor,
+ boxrule=0pt,
+ left=0pt,
+ right=0pt,
+ top=0pt,
+ bottom=0pt,
+ code={%
+ \IfEqCase{#5}{%
+ {}{\tcbset{%
+ standard jigsaw,
+ opacityback=0,
+ opacityframe=0,
+ frame hidden,
+ boxrule=0pt,
+ left=0pt,
+ right=0pt,
+ top=0pt,
+ bottom=0pt,
+ title={},
+ notitle
+ }}
+ {box-minimal}{\tcbset{box-minimal}}
+ {box-fancy}{\tcbset{box-fancy}}
+ {box-classic}{\tcbset{box-classic}}
+ {box-elegant}{\tcbset{box-elegant}}
+ {box-diagonal}{\tcbset{box-diagonal}}
+ {box-bevel}{\tcbset{box-bevel}}
+ {box-corner}{\tcbset{box-corner}}
+ {box-rounded}{\tcbset{box-rounded}}
+ {box-downhill}{\tcbset{box-downhill}}
+ {box-bottomtitle}{\tcbset{box-bottomtitle}}
+ {box-bottomtitlef}{\tcbset{box-bottomtitlef}}
+ }[\PackageError{code}{Style not found: #5}{}]
+ \ifx\relax#4\relax\else
+ \tcbset{title={\neo@codename~\thelstcode~~\textemdash{}~~#4},\neoschool@boxtitle}
+ \fi
+ }
+ }
+
+ %% Side-by-Side Code Environment
+ %% ----------------------------------
+ \newtcblisting{codeside}[2][]{%
+ standard jigsaw,
+ enhanced,
+ breakable,
+ opacityback=0,
+ opacityframe=0,
+ fonttitle=\sffamily\bfseries,
+ listing only,
+ arc=1pt,
+ colback=codebackColor,
+ colframe=codeColor,
+ left=0pt,
+ right=0pt,
+ lefttitle=1.7mm,
+ width=\linewidth,
+ listing options={%
+ style=#2,
+ #1
+ }
+ }
+
+\else\ifneo@minted
+
+ %% Environment Definitions
+ %% ----------------------------------
+ \newcounter{mintcode}
+
+ % Define the minted style
+ \setminted{
+ style=vs,
+ fontsize=\small,
+ breaklines=true,
+ autogobble,
+ frame=none,
+ linenos=false,
+ tabsize=4,
+ }
+
+ % Code listing environment
+ \NewTCBListing[use counter=mintcode]{code}{ O{} m !O{} !O{} }{%
+ listing engine=minted,
+ minted language=#2,
+ listing only,
+ enhanced,
+ breakable,
+ minted options={#1},
+ code={%
+ \IfEqCase{#4}{%
+ {}{\tcbset{%
+ standard jigsaw,
+ opacityback=0,
+ opacityframe=0,
+ frame hidden,
+ boxrule=0pt,
+ left=0pt,
+ right=0pt,
+ top=0pt,
+ bottom=0pt,
+ title={},
+ notitle
+ }}
+ {box-minimal}{\tcbset{box-minimal}}
+ {box-fancy}{\tcbset{box-fancy}}
+ {box-classic}{\tcbset{box-classic}}
+ {box-elegant}{\tcbset{box-elegant}}
+ {box-diagonal}{\tcbset{box-diagonal}}
+ {box-bevel}{\tcbset{box-bevel}}
+ {box-corner}{\tcbset{box-corner}}
+ {box-rounded}{\tcbset{box-rounded}}
+ {box-downhill}{\tcbset{box-downhill}}
+ {box-bottomtitle}{\tcbset{box-bottomtitle}}
+ {box-bottomtitlef}{\tcbset{box-bottomtitlef}}
+ }[\PackageError{code}{Style not found: #4}{}]
+ \ifx\relax#3\relax\else
+ \tcbset{title={\neo@codename~\themintcode~~\textemdash{}~~#3},\neoschool@boxtitle}
+ \fi
+ }
+ }
+
+ % Inline code command
+ \newcommand{\codeinline}[2][text]{%
+ \mintinline[style=vs,fontsize=\small,breaklines,autogobble]{#1}{#2}
+ }
+
+ % Code input from file
+ \NewTCBInputListing{\codeinput}{ O{} m m !O{} !O{} }{%
+ listing engine=minted,
+ minted language={#2},
+ enhanced,
+ breakable,
+ listing file={#3},
+ listing only,
+ minted options={#1},
+ frame hidden,
+ colback=codebackColor,
+ boxrule=0pt,
+ code={%
+ \IfEqCase{#5}{%
+ {}{\tcbset{%
+ standard jigsaw,
+ opacityback=0,
+ opacityframe=0,
+ frame hidden,
+ boxrule=0pt,
+ left=0pt,
+ right=0pt,
+ top=0pt,
+ bottom=0pt,
+ title={},
+ notitle
+ }}
+ {box-minimal}{\tcbset{box-minimal}}
+ {box-fancy}{\tcbset{box-fancy}}
+ {box-classic}{\tcbset{box-classic}}
+ {box-elegant}{\tcbset{box-elegant}}
+ {box-diagonal}{\tcbset{box-diagonal}}
+ {box-bevel}{\tcbset{box-bevel}}
+ {box-corner}{\tcbset{box-corner}}
+ {box-rounded}{\tcbset{box-rounded}}
+ {box-downhill}{\tcbset{box-downhill}}
+ {box-bottomtitle}{\tcbset{box-bottomtitle}}
+ {box-bottomtitlef}{\tcbset{box-bottomtitlef}}
+ }[\PackageError{code}{Style not found: #5}{}]
+ \ifx\relax#4\relax\else
+ \tcbset{title={\neo@codename~\themintcode~~\textemdash{}~~#4},\neoschool@boxtitle}
+ \fi
+ }
+ }
+
+ % Side-by-Side Code Environment
+ \newtcblisting{codeside}[2][]{%
+ standard jigsaw,
+ listing engine=minted,
+ enhanced,
+ breakable,
+ opacityback=0,
+ opacityframe=0,
+ fonttitle=\sffamily\bfseries,
+ minted language=#2,
+ arc=1pt,
+ colback=codebackColor,
+ colframe=codeColor,
+ left=0pt,
+ right=0pt,
+ lefttitle=1.7mm,
+ width=\linewidth,
+ minted options={#1}
+ }
+
+ \fi
+\fi
+
+%% ==============================================================================
+%% Algorithm and Pseudocode Environments
+%% ==============================================================================
+
+%% Algorithm Keywords Translation
+%% ----------------------------------
+\algrenewcommand\algorithmicwhile{\textbf{tant que}}
+\algrenewcommand\algorithmicdo{\textbf{faire}}
+\algrenewcommand\algorithmicfor{\textbf{pour}}
+\algrenewcommand\algorithmicif{\textbf{si}}
+\algrenewcommand\algorithmicthen{\textbf{alors}}
+\algrenewcommand\algorithmicelse{\textbf{sinon}}
+\algrenewcommand\algorithmicend{\textbf{fin}}
+\algrenewcommand\algorithmicreturn{\textbf{retourner}}
+\algrenewcommand\algorithmicfunction{\textbf{fonction}}
+\algrenewcommand\algorithmicrequire{\textbf{entrée}}
+\algrenewcommand\algorithmicensure{\textbf{sortie}}
+\algrenewcommand\algorithmicprocedure{\textbf{procédure}}
+
+%% Additional Algorithm Commands
+%% ----------------------------------
+\newcommand{\To}{\textbf{ à }}
+\newcommand{\Gets}{\ensuremath{\leftarrow}}
+
+%% Pseudocode Box Style
+%% ----------------------------------
+\tcbset{%
+ pseudocode/.style={%
+ enhanced,
+ breakable,
+ colback=white,
+ colframe=\ifneo@unicolor\neoschool@headcolor\else\neoschool@headcolor!50\fi,
+ boxrule=0.5pt,
+ arc=0pt,
+ top=3mm,
+ bottom=3mm,
+ left=3mm,
+ right=3mm,
+ colbacktitle=white,
+ coltitle=black,
+ fonttitle=\sffamily\bfseries,
+ before upper={\begin{algorithmic}},
+ after upper={\end{algorithmic}},
+ breakable
+ }
+}
+
+%% Pseudocode Environment
+%% ----------------------------------
+\newtcolorbox[use counter=lstcode]{pseudocode}[2][]{%
+ pseudocode,
+ title={\csname neo@algorithmname\endcsname~\thelstcode~~\textemdash{}~~#2},
+ #1
+}
+
+%% ==============================================================================
+%% Base Definitions and Styles for Theorems and Exercises
+%% ==============================================================================
+
+% Common Styles
+\tcbset{
+ common@base/.style={
+ enhanced,
+ breakable,
+ separator sign={},
+ before skip=\baselineskip,
+ after skip=\baselineskip,
+ colupper=\neo@tcbcolupper,
+ colframe=\neoschool@headcolor,
+ colbacklower=\neo@tcbcolbacklower
+ },
+ common@title@base/.style={
+ fonttitle={\normalshape\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname},
+ },
+}
+
+%% ==============================================================================
+%% Shared Box Styles for Theorems and Exercises
+%% ==============================================================================
+\ExplSyntaxOn
+\tl_new:N \l__custom_tcb_title_tl
+\tl_new:N \l__custom_tcb_label_tl
+\tl_new:N \l__custom_tcb_options_tl
+
+\newcommand{\getCustomSlantedTitle}{%
+ \tl_if_empty:NTF \l__custom_tcb_title_tl
+ {\,}
+ {\tl_use:N \enskip(\l__custom_tcb_title_tl)\;}
+}
+
+\newcommand{\getCustomBoxedTitle}{%
+ \tl_if_empty:NTF \l__custom_tcb_title_tl
+ {}
+ {\tl_use:N \,(\l__custom_tcb_title_tl)\,}
+}
+\ExplSyntaxOff
+
+\def\neo@getbackcolor{%
+ \ifneo@noback
+ white%
+ \else
+ \neo@tcbcolback%
+ \fi
+}
+
+\def\neo@getframestyle{%
+ \ifneo@noframe
+ frame hidden%
+ \else\fi
+}
+
+\tcbset{
+ neo@shared@base/.style args={#1}{%
+ common@base,
+ colframe=#1,
+ colback=\neo@getbackcolor,
+ boxrule=\neo@thmborder,
+ \neo@getframestyle
+ },
+ neo@shared@elegant/.style args={#1}{%
+ neo@shared@base={#1},
+ common@title@base,
+ skin=bicolor,
+ sharp corners,
+ detach title,
+ left=1em,
+ right=1em,
+ top=\neo@toppadding,
+ bottom=\neo@bottompadding,
+ borderline west={4pt}{0pt}{#1},
+ before upper={\tcbtitle\enskip}
+ },
+ neo@shared@shaded/.style 2 args={%
+ neo@shared@base={#1},
+ common@title@base,
+ left=\neo@leftpadding,
+ right=\neo@rightpadding,
+ after skip=\neo@afterskip,
+ before skip=\neo@beforeskip,
+ attach boxed title to top left,
+ boxed title style={
+ empty,
+ top=\neo@titletoppadding,
+ left=\neo@titleleftpadding,
+ right=\neo@titlerightpadding,
+ bottom=\neo@titlebottompadding,
+ },
+ detach title,
+ underlay boxed title={%
+ \path[draw=\csname neo@titledrawcolor@#2\endcsname,line width=1pt,
+ rounded corners, fill=\neo@tcbcolback]
+ ([xshift=.17mm]frame.west) |- ([xshift=-2.5mm]title.north east)
+ to[out=0, in=180] ([xshift=7.5mm, yshift=-.18mm]title.south east);
+ }
+ },
+ neo@shared@slanted/.style args={#1}{%
+ neo@shared@base={#1},
+ common@title@base,
+ skin=bicolor,
+ separator sign={},
+ coltitle=white,
+ left=\neo@leftpadding,
+ right=\neo@rightpadding,
+ after skip=\neo@afterskip,
+ before skip=\neo@beforeskip,
+ detach title
+ },
+ neo@shared@sober/.style args={#1}{%
+ neo@shared@base={#1},
+ common@title@base,
+ skin=bicolor,
+ detach title,
+ left=1ex,
+ right=1ex,
+ separator sign={},
+ terminator sign=,
+ },
+ neo@shared@classic/.style args={#1}{%
+ neo@shared@base={#1},
+ common@title@base,
+ skin=bicolor,
+ coltitle=white,
+ colbacktitle=tcbcolframe,
+ boxrule=1pt,
+ toptitle=1mm,
+ bottomtitle=1mm,
+ left=1ex,
+ right=1ex,
+ },
+ neo@shared@classy/.style args={#1}{%
+ neo@shared@base={#1},
+ common@title@base,
+ skin=bicolor,
+ left=1ex,
+ right=1ex,
+ attach boxed title to top left={
+ yshift*=-\tcboxedtitleheight
+ },
+ boxed title style={
+ sharp corners,
+ rounded corners=northwest,
+ colback=tcbcolframe,
+ boxrule=0pt
+ },
+ underlay boxed title={
+ \path[fill=tcbcolframe]
+ (title.south west)--(title.south east)
+ to[out=0, in=180] ([xshift=5mm]title.east)--
+ (title.center-|frame.east)
+ [rounded corners=\kvtcb@arc] |-
+ (frame.north) -| cycle;
+ }
+ },
+ neo@shared@boxed/.style 2 args={%
+ neo@box@base,
+ sharp corners,
+ \neo@framehidden,
+ coltitle=white,
+ colframe=#1,
+ colback=\neo@tcbcolback,
+ left=\neo@leftpadding,
+ right=\neo@rightpadding,
+ after skip=\neo@afterskip,
+ before skip=\neo@beforeskip,
+ detach title,
+ before upper*={%
+ \tcbox[enhanced,
+ colupper=white,
+ colback=#1, fontupper=\normalshape\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname,
+ size=small,
+ baseline=3pt,
+ top=0pt,
+ bottom=0pt,
+ left=0pt,
+ right=0pt,
+ nobeforeafter,
+ frame code={%
+ \path[fill=tcbcolback]
+ (frame.north west) --
+ (frame.north east) {[rounded corners=5pt]--
+ (frame.south east)} --
+ (frame.south west) --
+ cycle;
+ }]%
+ {#2~\thetcbcounter}%
+ }
+ {\normalshape\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname\color{#1}\getCustomBoxedTitle}
+ }
+}
+
+%% ==============================================================================
+%% Custom Newtcbtheorem Implementation
+%% ==============================================================================
+
+\ExplSyntaxOn
+\NewDocumentCommand{\mynewtcbtheorem}{O{}mmmm}{%
+ \newtcbtheorem[#1]{#2inner}{#3}{#4}{#5}
+ \NewDocumentEnvironment{#2}{O{}}{%
+ \keys_set:nn { custom/tcb } { ##1 }
+ \tl_if_empty:NTF \l__custom_tcb_options_tl {%
+ \use:x {
+ \exp_not:N \begin{#2inner}
+ {\tl_if_empty:NTF \l__custom_tcb_title_tl
+ { }
+ { (\exp_not:V \l__custom_tcb_title_tl) }
+ }
+ {\exp_not:V \l__custom_tcb_label_tl}
+ }
+ }{%
+ \use:x {
+ \exp_not:N \begin{#2inner}
+ [\exp_not:V \l__custom_tcb_options_tl]
+ {\tl_if_empty:NTF \l__custom_tcb_title_tl
+ { }
+ { (\exp_not:V \l__custom_tcb_title_tl) }
+ }
+ {\exp_not:V \l__custom_tcb_label_tl}
+ }
+ }
+ }{%
+ \end{#2inner}
+ }
+
+ \NewDocumentEnvironment{#2*}{O{}}{%
+ \keys_set:nn { custom/tcb } { ##1 }
+ \tl_if_empty:NTF \l__custom_tcb_options_tl {%
+ \use:x {
+ \exp_not:N \begin{#2inner*}
+ {\tl_if_empty:NTF \l__custom_tcb_title_tl
+ { }
+ { (\exp_not:V \l__custom_tcb_title_tl) }
+ }
+ {}
+ }
+ }{%
+ \use:x {
+ \exp_not:N \begin{#2inner*}
+ [\exp_not:V \l__custom_tcb_options_tl]
+ {\tl_if_empty:NTF \l__custom_tcb_title_tl
+ { }
+ { (\exp_not:V \l__custom_tcb_title_tl) }
+ }
+ {}
+ }
+ }
+ }{%
+ \end{#2inner*}
+ }
+ \cs_if_exist:cF { c@#5} { \newcounter{#5} }
+}
+
+\keys_define:nn { custom/tcb } {
+ title .tl_set:N = \l__custom_tcb_title_tl,
+ label .tl_set:N = \l__custom_tcb_label_tl,
+ colback .code:n = \tl_put_right:Nx \l__custom_tcb_options_tl { colback=#1, },
+ colframe .code:n = \tl_put_right:Nx \l__custom_tcb_options_tl { colframe=#1, },
+ coltitle .code:n = \tl_put_right:Nx \l__custom_tcb_options_tl { coltitle=#1, },
+ fonttitle .code:n = \tl_put_right:Nx \l__custom_tcb_options_tl { fonttitle=#1, },
+ line~width .code:n = \tl_put_right:Nx \l__custom_tcb_options_tl { line~width=#1, },
+ frame~style .code:n = \tl_put_right:Nx \l__custom_tcb_options_tl { frame~style=#1, },
+ arc .code:n = \tl_put_right:Nx \l__custom_tcb_options_tl { arc=#1, },
+ frame~hidden .code:n = \tl_put_right:Nn \l__custom_tcb_options_tl { frame~hidden, },
+ sharp~corners .code:n = \tl_put_right:Nn \l__custom_tcb_options_tl { sharp~corners, },
+ rounded~corners .code:n = \tl_put_right:Nn \l__custom_tcb_options_tl { rounded~corners, },
+ unknown .code:n = \tl_put_right:Nx \l__custom_tcb_options_tl { #1, },
+}
+\ExplSyntaxOff
+
+% Title Content Formatters
+\NewDocumentCommand{\neo@theorem@title}{mm}{%
+ \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \color{#1}#2~\thetcbcounter
+}
+
+\NewDocumentCommand{\neo@exercise@title}{}{%
+ \sffamily\GetExerciseName~\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{\enskip\GetExerciseProperty{subtitle}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\XSIMtranslate{point}}{\XSIMtranslate{points}})%
+ }%
+}
+
+\AtBeginDocument{%
+ \ifneo@french
+ \DeclareExerciseTranslation{french}{point}{point}
+ \DeclareExerciseTranslation{french}{points}{points}
+ \DeclareExerciseTranslation{french}{point-short}{pt}
+ \DeclareExerciseTranslation{french}{points-short}{pts}
+ \else\ifneo@german
+ \DeclareExerciseTranslation{german}{point}{Punkt}
+ \DeclareExerciseTranslation{german}{points}{Punkte}
+ \DeclareExerciseTranslation{german}{point-short}{Pkt}
+ \DeclareExerciseTranslation{german}{points-short}{Pkt}
+ \else
+ \DeclareExerciseTranslation{english}{point}{point}
+ \DeclareExerciseTranslation{english}{points}{points}
+ \DeclareExerciseTranslation{english}{point-short}{pt}
+ \DeclareExerciseTranslation{english}{points-short}{pts}
+ \fi\fi
+}
+
+%% ==============================================================================
+%% Theorem Types Implementation
+%% ==============================================================================
+
+\NewDocumentCommand{\neweleganttheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ neo@shared@elegant={#4},
+ coltitle=#4,
+ fontupper={#7},
+ before lower={#6},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newslantedtheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ neo@shared@slanted={#4},
+ before upper*={%
+ \hspace*{-1.5mm}
+ \tcbox[enhanced,
+ colupper=white,
+ colback=#4,
+ fontupper=\normalshape\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname,
+ size=small,
+ baseline=3pt,
+ left=0pt,
+ right=0pt,
+ bottom=0pt,
+ nobeforeafter,
+ frame code={%
+ \path[fill=tcbcolback] (frame.north west)
+ -- ([xshift=2mm]frame.north east)
+ -- (frame.south east)
+ -- (frame.south west)
+ -- (frame.north west)
+ [sharp corners]-- cycle;
+ }]
+ {#3~\thetcbcounter}
+ {\normalshape\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname\color{#4}\getCustomSlantedTitle}
+ },
+ fontupper={#7},
+ before lower={#6},
+ #8,
+}{#5}
+}
+
+\NewDocumentCommand{\newshadedtheorem}{O{}mmmmmmO{}}{%
+\expandafter\def\csname neo@titledrawcolor@#2\endcsname{#4}
+\ifneo@noframe\expandafter\def\csname neo@titledrawcolor@#2\endcsname{white}\fi
+\mynewtcbtheorem[#1]{#2}{\vspace*{0.35em}#3}{%
+ neo@shared@shaded={#4}{#2},
+ coltitle=#4,
+ fontupper={#7},
+ before lower={#6},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newsobertheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ neo@shared@sober={#4},
+ before upper={\tcbtitle\enskip},
+ coltitle=#4,
+ fontupper={#7},
+ before lower={#6},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newclassictheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ neo@shared@classic={#4},
+ title={#3},
+ fontupper={#7},
+ before lower={#6},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newclassytheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ neo@shared@classy={#4},
+ title={#3},
+ fontupper={#7},
+ before lower={#6},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newboxedtheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ neo@shared@boxed={#4}{#3},
+ fontupper={#7},
+ before lower={#6},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newamstheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ enhanced,
+ breakable,
+ frame hidden,
+ colback=white,
+ coltitle={#4},
+ left=0pt, right=0pt,
+ top=0pt, bottom=0pt,
+ boxsep=0pt,
+ detach title,
+ separator sign={},
+ before upper={\tcbtitle\enskip},
+ before skip=\baselineskip,
+ after skip=\baselineskip,
+ fontupper={#7},
+ fonttitle={\normalshape\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname},
+ before lower={#6},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newamsremarktheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ enhanced,
+ breakable,
+ frame hidden,
+ colback=white,
+ coltitle={#4},
+ left=0pt, right=0pt,
+ top=0pt, bottom=0pt,
+ boxsep=0pt,
+ detach title,
+ before upper={{\color{remarkColor}\csname\neoschool@headweight\endcsname\itshape\csname\neoschool@headstyle\endcsname\csname\neoschool@headshape\endcsname #3\enskip\textemdash}\enskip},
+ before skip=.5\baselineskip,
+ after skip=.5\baselineskip,
+ fontupper={#7},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newamsremarkstheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ enhanced,
+ breakable,
+ frame hidden,
+ colback=white,
+ coltitle={#4},
+ left=0pt, right=0pt,
+ top=0pt, bottom=0pt,
+ boxsep=0pt,
+ detach title,
+ before upper={{\color{remarkColor}\csname\neoschool@headweight\endcsname\itshape\csname\neoschool@headstyle\endcsname\csname\neoschool@headshape\endcsname #3}\enskip},
+ before skip=.5\baselineskip,
+ after skip=.5\baselineskip,
+ fontupper={#7},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newamsexampletheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ enhanced,
+ breakable,
+ frame hidden,
+ colback=white,
+ coltitle={#4},
+ left=0pt, right=0pt,
+ top=0pt, bottom=0pt,
+ boxsep=0pt,
+ detach title,
+ separator sign={},
+ before upper={\tcbtitle\enskip},
+ before skip=.5\baselineskip,
+ after skip=.5\baselineskip,
+ fontupper={#7},
+ fonttitle={\normalshape\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname},
+ before lower={#6},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\newamsexamplestheorem}{O{}mmmmmmO{}}{%
+\mynewtcbtheorem[#1]{#2}{#3}{%
+ enhanced,
+ breakable,
+ frame hidden,
+ colback=white,
+ coltitle={#4},
+ left=0pt, right=0pt,
+ top=0pt, bottom=0pt,
+ boxsep=0pt,
+ detach title,
+ before upper={{\color{exampleColor}\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname #3}\enskip},
+ before skip=.5\baselineskip,
+ after skip=.5\baselineskip,
+ fontupper={#7},
+ #8
+}{#5}
+}
+
+\NewDocumentCommand{\neo@declarespecialtheorem}{m m}{%
+ \ifstrequal{#1}{remark}{%
+ \newamsremarktheorem{#1}{\csname neo@#1name\endcsname}{#2}{#1}{}{\normalfont}
+ }{%
+ \ifstrequal{#1}{remarks}{%
+ \newamsremarkstheorem{#1}{\csname neo@#1name\endcsname}{#2}{#1}{}{\normalfont}
+ }{%
+ \ifstrequal{#1}{examples}{%
+ \newamsexamplestheorem{#1}{\csname neo@#1name\endcsname}{#2}{#1}{}{\normalfont}
+ }{%
+ \ifneoschool@sectionthmcounter
+ \ifneoschool@sharedthmcounter
+ \newamsexampletheorem[number within=section, use counter = thmcounter]{#1}{\csname neo@#1name\endcsname}{#2}{#1}{}{\normalfont}
+ \else
+ \newamsexampletheorem[number within=section]{#1}{\csname neo@#1name\endcsname}{#2}{#1}{}{\normalfont}
+ \fi
+ \else
+ \ifneoschool@sharedthmcounter
+ \newamsexampletheorem[use counter = thmcounter]{#1}{\csname neo@#1name\endcsname}{#2}{#1}{}{\normalfont}
+ \else
+ \newamsexampletheorem{#1}{\csname neo@#1name\endcsname}{#2}{#1}{}{\normalfont}
+ \fi
+ \fi
+ }%
+ }%
+ }%
+}
+
+\neo@declarespecialtheorem{remark}{remarkColor}
+\neo@declarespecialtheorem{remarks}{remarkColor}
+\neo@declarespecialtheorem{example}{exampleColor}
+\neo@declarespecialtheorem{examples}{exampleColor}
+
+%% ==============================================================================
+%% Theorem Declaration Command
+%% ==============================================================================
+
+\NewDocumentCommand{\neo@declaretheorem}{O{}mmmmmmO{}}{%
+% #1 = additional options
+% #2 = environment name (theorem, definition, etc.)
+% #3 = title (\neo@theoremname, etc.)
+% #4 = color
+% #5 = reference name (thm, def, etc.)
+% #6 = text before proof
+% #7 = text style (\itshape or not)
+% #8 = additional options
+
+% Handle options
+\def\neo@thmoptions{#1}
+
+% Section numbering
+\ifneoschool@sectionthmcounter
+ \edef\neo@thmoptions{number within=section,\neo@thmoptions}
+\fi
+
+% Counter handling
+\ifneoschool@sharedthmcounter
+ \edef\neo@thmoptions{use counter=thmcounter,\neo@thmoptions}
+\else
+ \ifneoschool@thmgroupcounter
+ \ifboolexpr{
+ test {\ifstrequal{#2}{theorem}} or
+ test {\ifstrequal{#2}{lemma}} or
+ test {\ifstrequal{#2}{proposition}} or
+ test {\ifstrequal{#2}{corollary}} or
+ test {\ifstrequal{#2}{property}}
+ }{%
+ \edef\neo@thmoptions{use counter=thmcounter,\neo@thmoptions}
+ }{%
+ \edef\neo@thmoptions{\neo@thmoptions}
+ }
+ \else
+ \edef\neo@thmoptions{\neo@thmoptions}
+ \fi
+\fi
+
+% Style selection based on class options
+\ifneo@slantedthm
+ \expandafter\newslantedtheorem\expandafter[\neo@thmoptions]{#2}{#3}{#4}{#5}{#6}{#7}[#8]%
+\else
+ \ifneo@soberthm
+ \expandafter\newsobertheorem\expandafter[\neo@thmoptions]{#2}{#3}{#4}{#5}{#6}{#7}[#8]%
+ \else
+ \ifneo@elegantthm
+ \expandafter\neweleganttheorem\expandafter[\neo@thmoptions]{#2}{#3}{#4}{#5}{#6}{#7}[#8]%
+ \else
+ \ifneo@shadedthm
+ \expandafter\newshadedtheorem\expandafter[\neo@thmoptions]{#2}{#3}{#4}{#5}{#6}{#7}[#8]%
+ \else
+ \ifneo@classicthm
+ \expandafter\newclassictheorem\expandafter[\neo@thmoptions]{#2}{#3}{#4}{#5}{#6}{#7}[#8]%
+ \else
+ \ifneo@classythm
+ \expandafter\newclassytheorem\expandafter[\neo@thmoptions]{#2}{#3}{#4}{#5}{#6}{#7}[#8]%
+ \else
+ \ifneo@boxedthm
+ \expandafter\newboxedtheorem\expandafter[\neo@thmoptions]{#2}{#3}{#4}{#5}{#6}{#7}[#8]%
+ \else
+ \ifneo@amslikethm
+ \expandafter\newamstheorem\expandafter[\neo@thmoptions]{#2}{#3}{#4}{#5}{#6}{#7}[#8]%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+\fi
+}
+
+%% ==============================================================================
+%% Theorem Environment Declarations
+%% ==============================================================================
+
+\newcounter{thmcounter}
+
+% Standard theorems
+\neo@declaretheorem{theorem}{\neo@theoremname}{theoremColor}{thm}{}{\itshape\color{\neoschool@globalcolor}}
+\neo@declaretheorem{definition}{\neo@definitionname}{definitionColor}{def}{}{\color{\neoschool@globalcolor}}
+\neo@declaretheorem{lemma}{\neo@lemmaname}{lemmaColor}{lem}{}{\itshape\color{\neoschool@globalcolor}}
+\neo@declaretheorem{proposition}{\neo@propositionname}{propositionColor}{propo}{}{\itshape\color{\neoschool@globalcolor}}
+\neo@declaretheorem{corollary}{\neo@corollaryname}{corollaryColor}{cor}{}{\itshape\color{\neoschool@globalcolor}}
+\neo@declaretheorem{conjecture}{\neo@conjecturename}{\neo@conjecturecolor}{conj}{}{\itshape\color{\neoschool@globalcolor}}
+\neo@declaretheorem{property}{\neo@propertyname}{propertyColor}{prop}{}{\itshape\color{\neoschool@globalcolor}}
+
+% Activity-related theorems
+\neo@declaretheorem{activity}{\neo@activityname}{activityColor}{act}{}{\color{\neoschool@globalcolor}}
+\neo@declaretheorem{method}{\neo@methodname}{methodColor}{meth}{}{\color{\neoschool@globalcolor}}
+\neo@declaretheorem{application}{\neo@applicationname}{applicationColor}{appl}{}{\color{\neoschool@globalcolor}}
+
+%% ==============================================================================
+%% Exercise Common Elements
+%% ==============================================================================
+
+% QCM Environment Setup
+\DeclareExerciseEnvironmentTemplate{item}
+{\description\item[\GetExerciseProperty{counter}]}
+{\enddescription}
+
+% Multiple Choice Elements
+\DeclareRobustCommand{\neocolorcirc}[2]{%
+ \begin{tikzpicture}[baseline=-1.25mm]
+ \draw[#1,fill=#2] (0.5,0) circle (.75ex);
+ \end{tikzpicture}
+}
+
+\newcommand{\neocheckbox}{$\square$}
+\newcommand{\neochecksol}{$\blacksquare$}
+\newcommand{\neocheckcirc}{\neocolorcirc{black}{white}}
+
+% Task Environments
+\NewTasksEnvironment[%
+ label = \neocheckcirc,
+ label-width = 12pt,
+ item-indent = 3.5em,
+]{choices}[\choice]
+
+\NewTasksEnvironment[%
+ label = \neocheckbox,
+ label-width = 12pt,
+ item-indent = 3.5em,
+]{checkboxes}[\checkbox]
+
+% Shuffle Implementation for Tasks
+\ifneo@shuffle
+ \ExplSyntaxOn
+ \cs_set_protected:Npn \tasks_environment:nnnn #1#2#3#4
+ {
+ \bool_if:NT \l__tasks_debug_bool { \dim_set:Nn \fboxsep {0pt} }
+ \seq_set_split:Nnn \l__tasks_seq {#3} {#4}
+ \seq_pop_left:NN \l__tasks_seq \l__tasks_tmpa_tl
+ \seq_shuffle:N \l__tasks_seq
+ \tl_if_blank:VF \l__tasks_tmpa_tl
+ { \msg_warning:nnVn {tasks}{no-item} \l__tasks_tmpa_tl {#3} }
+ \int_gset:Nn \g__tasks_total_items_int
+ { \seq_count:N \l__tasks_seq }
+ \UseInstance {tasks} {#1}
+ { \g__tasks_total_items_int }
+ {#2}
+ { }
+ \seq_clear:N \l__tasks_seq
+ }
+ \ExplSyntaxOff
+\fi
+
+% Correct Answer Command
+\NewDocumentCommand{\correct}{s}{%
+ \IfBooleanTF#1
+ {\ifneoschool@answers\neochecksol\else\neocheckbox\fi}
+ {\ifneoschool@answers\neocolorcirc{black}{black}\else\neocheckcirc\fi}%
+}
+
+%% ==============================================================================
+%% Exercise Base Box Styles
+%% ==============================================================================
+
+% Base box style
+\tcbset{%
+ neo@base/.style={%
+ enhanced,
+ breakable,
+ fontupper=\color{\neoschool@globalcolor},
+ before skip=\baselineskip,
+ after skip=\baselineskip,
+ colupper=\neo@tcbcolupper,
+ colframe=\neoschool@headcolor,
+ colbacklower=\neo@tcbcolbacklower
+ },
+ % Title base style
+ neo@title@base/.style={%
+ title={\sffamily\GetExerciseName~\GetExerciseProperty{counter}
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]}
+ \IfExercisePropertySetT{subtitle}{ \GetExerciseProperty{subtitle}}
+ \IfExercisePropertySetT{points}{%
+ \enskip(%
+ \GetExerciseProperty{points}
+ \IfExerciseGoalSingularTF{points}
+ {~\XSIMtranslate{point}}
+ {~\XSIMtranslate{points}}
+ )
+ }
+ }
+ }
+}
+
+%% Box Appearance Styles
+\tcbset{%
+ % Basic box style
+ neo@box@base/.style={%
+ enhanced,
+ breakable,
+ fontupper=\color{\neoschool@globalcolor},
+ colupper=\neo@tcbcolupper,
+ colframe=\neoschool@headcolor,
+ colbacklower=\neo@tcbcolbacklower,
+ before skip=\baselineskip,
+ after skip=\baselineskip,
+ left=1mm,
+ right=1mm
+ },
+ % Basic title style
+ neo@title@basic/.style={%
+ title={\neo@boxtitle@content},
+ fonttitle=\bfseries\sffamily
+ },
+ % Colored title style
+ neo@title@colored/.style={%
+ neo@title@basic,
+ coltitle=white,
+ colbacktitle=tcbcolframe
+ },
+ % Basic frame style
+ neo@frame@basic/.style={%
+ colframe=exerciseColor,
+ colback=\neo@tcbcolback
+ },
+ % Hidden frame style
+ neo@frame@hidden/.style={%
+ frame hidden,
+ colframe=exerciseColor!12,
+ colback=white
+ }
+}
+
+%% Corner Styles
+\tcbset{%
+ % Sharp corners
+ neo@corners@sharp/.style={%
+ sharp corners
+ },
+ % Rounded corners
+ neo@corners@rounded/.style={%
+ rounded corners,
+ arc=\neoschool@boxarc
+ }
+}
+
+%% Background Styles
+\tcbset{%
+ % Light background
+ neo@bg@light/.style={%
+ colback=white,
+ colbacktitle=exerciseColor!12
+ },
+ % Shaded background
+ neo@bg@shaded/.style={%
+ colback=exerciseColor!5!white,
+ colbacktitle=exerciseColor!12
+ },
+ % Gradient background
+ neo@bg@gradient/.style={%
+ interior style={%
+ top color=white,
+ bottom color=exerciseColor!5!white
+ }
+ }
+}
+
+%% Title Position Styles
+\tcbset{%
+ % Attached title
+ neo@title@attached/.style={%
+ attach boxed title to top left={
+ yshift*=-\tcboxedtitleheight
+ },
+ boxed title style={%
+ sharp corners,
+ rounded corners=northwest,
+ colback=tcbcolframe,
+ boxrule=0pt
+ }
+ },
+ % Detached title
+ neo@title@detached/.style={%
+ detach title,
+ before upper={\tcbtitle\enskip}
+ }
+}
+
+%% Special Elements
+\tcbset{%
+ % Left rule
+ neo@rule@left/.style={%
+ leftrule=3mm
+ },
+ % Basic border
+ neo@border@basic/.style={%
+ boxrule=0.5pt
+ },
+ % Colored border
+ neo@border@colored/.style 2 args={%
+ borderline west={#1}{#2}{tcbcolframe}
+ },
+ % Shadow effect
+ neo@effect@shadow/.style={%
+ drop fuzzy shadow
+ }
+}
+
+%% Color Schemes
+\tcbset{%
+ % Standard color scheme
+ neo@colors@standard/.style={%
+ colframe=exerciseColor,
+ colback=white,
+ colbacktitle=exerciseColor
+ }
+}
+
+%% Solution Style Setup
+\NewDocumentCommand\neo@box@solution{}{%
+ {\csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \color{tcbcolframe}\neo@solutionname~\neo@solutiongaptext}\enskip
+}
+
+\tcbset{%
+ neo@solution@basic/.style={%
+ before lower={\neo@box@solution}
+ }
+}
+
+%% Box Title Content
+\newcommand{\neo@boxtitle@content}{%
+ \sffamily\GetExerciseName~\GetExerciseProperty{counter}
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]
+ }
+ \IfExercisePropertySetT{subtitle}{ \GetExerciseProperty{subtitle}}\enskip
+ \IfExercisePropertySetT{points}{%
+ (\GetExerciseProperty{points}
+ \IfExerciseGoalSingularTF{points}
+ {~\XSIMtranslate{point}}
+ {~\XSIMtranslate{points}})
+ }
+}
+
+%% Exercise Properties and Tagging
+\ExplSyntaxOn
+\newcommand*\neo@replicate{\prg_replicate:nn}
+\ExplSyntaxOff
+
+\DeclareExerciseTagging{level}
+\DeclareExerciseTagging{grade}
+\DeclareExerciseTagging{topic}
+\DeclareExerciseTagging{subject}
+
+%% ==============================================================================
+%% Basic Exercise Box Templates
+%% ==============================================================================
+
+\DeclareExerciseProperty{icon}
+
+\newcommand{\neo@exerciseicon}{%
+ \ifneo@exerciseicons
+ \IfExercisePropertySetTF{icon}{%
+ \faIcon{\GetExerciseProperty{icon}}\hspace{5pt}%
+ }{%
+ \faIcon{book}\hspace{5pt}%
+ }%
+ \fi
+}
+
+% Standard Box Template
+\DeclareExerciseEnvironmentTemplate{box}{%
+ \begin{tcolorbox}[%
+ neo@box@base,
+ skin=bicolor,
+ neo@frame@basic,
+ neo@corners@sharp,
+ neo@rule@left,
+ neo@title@basic
+ ]
+ {%
+ \csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname\color{exerciseColor}
+ {\small\neo@exerciseicon}\enskip
+ \MakeUppercase{%
+ \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]
+ }
+ }
+ \GetExercisePropertyT{subtitle}{\;(\textit{#1})}
+ {\color{exerciseColor}
+ \IfExercisePropertySetT{points}{\enskip%
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}
+ \IfExerciseGoalSingularTF{points}
+ {~\XSIMtranslate{point}}
+ {~\XSIMtranslate{points}}
+ \enskip\enskip\textemdash{}
+ }
+ }
+ }
+ \enskip
+ }{\end{tcolorbox}}
+
+% No Frame Box Template
+\DeclareExerciseEnvironmentTemplate{noframe-box}{%
+ \begin{tcolorbox}[%
+ neo@box@base,
+ neo@frame@hidden,
+ neo@title@basic
+ ]
+ }{\end{tcolorbox}}
+
+%% ==============================================================================
+%% Advanced Box Templates
+%% ==============================================================================
+
+% Elegant Box Template
+\DeclareExerciseEnvironmentTemplate{elegant-box}{%
+ \begin{tcolorbox}[
+ neo@shared@elegant={exerciseColor},
+ title={%
+ \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \color{exerciseColor}
+ {\small\neo@exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{~\XSIMtranslate{point}}{~\XSIMtranslate{points}})%
+ }%
+ }
+ ]
+ }{\end{tcolorbox}}
+
+% Shaded Box Template
+\DeclareExerciseEnvironmentTemplate{shaded-box}{%
+ \expandafter\def\csname neo@titledrawcolor@exercise\endcsname{exerciseColor}
+ \ifneo@noframe
+ \expandafter\def\csname neo@titledrawcolor@exercise\endcsname{white}
+ \fi
+ \begin{tcolorbox}[
+ neo@shared@shaded={exerciseColor}{exercise},
+ left=0.65em,
+ right=0.65em,
+ coltitle=exerciseColor,
+ title={%
+ \vspace*{0.35em}%
+ \csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname\color{exerciseColor}%
+ {\small\neo@exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{~\XSIMtranslate{point}}{~\XSIMtranslate{points}})%
+ }%
+ }
+ ]
+ }{\end{tcolorbox}}
+
+% Slanted Box Template
+\DeclareExerciseEnvironmentTemplate{slanted-box}{%
+ \begin{tcolorbox}[
+ neo@shared@slanted={exerciseColor},
+ before upper*={%
+ \hspace*{-1.5mm}
+ \tcbox[enhanced,
+ colupper=white,
+ colback=exerciseColor,
+ fontupper=\upshape\bfseries,
+ size=small,
+ baseline=3pt,
+ after skip=1em,
+ top=0pt,
+ left=0pt,
+ right=0pt,
+ bottom=0pt,
+ nobeforeafter,
+ frame code={%
+ \path[fill=tcbcolback] (frame.north west)
+ -- ([xshift=2mm]frame.north east)
+ -- (frame.south east)
+ -- (frame.south west)
+ -- (frame.north west)
+ [sharp corners]-- cycle;
+ }
+ ]{\csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \csname\neoschool@headshape\endcsname
+ {\small\neo@exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}%
+ }
+ }
+ ]
+ {\csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \csname\neoschool@headshape\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}{%
+ \;[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{{\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{~\XSIMtranslate{point}}{~\XSIMtranslate{points}})%
+ }%
+ }\;%
+ }{\end{tcolorbox}}
+
+% Sober Box Template
+\DeclareExerciseEnvironmentTemplate{sober-box}{%
+ \begin{tcolorbox}[
+ neo@shared@sober={exerciseColor},
+ before upper={\tcbtitle\enskip},
+ coltitle=exerciseColor,
+ title={%
+ \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ {\small\neo@exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{~\XSIMtranslate{point}}{~\XSIMtranslate{points}})%
+ }%
+ }
+ ]
+ }{\end{tcolorbox}}
+
+% Classic Box Template
+\DeclareExerciseEnvironmentTemplate{classic-box}{%
+ \begin{tcolorbox}[
+ neo@shared@classic={exerciseColor},
+ title={%
+ \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \color{white}
+ {\small\neo@exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{~\XSIMtranslate{point}}{~\XSIMtranslate{points}})%
+ }%
+ }
+ ]
+ }{\end{tcolorbox}}
+
+% Classy Box Template
+\DeclareExerciseEnvironmentTemplate{classy-box}{%
+ \begin{tcolorbox}[
+ neo@shared@classy={exerciseColor},
+ title={%
+ \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \color{white}
+ {\small\neo@exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{~\XSIMtranslate{point}}{~\XSIMtranslate{points}})%
+ }%
+ }
+ ]
+ }{\end{tcolorbox}}
+
+% Rect and Num box Templates
+\DeclareExerciseEnvironmentTemplate{rect-box}{%
+ \begin{tcolorbox}[
+ enhanced,
+ skin=bicolor,
+ sharp corners,
+ \neo@framehidden,
+ coltitle=white,
+ colframe=exerciseColor,
+ colback=\neo@tcbcolback,
+ colupper=\neoschool@globalcolor,
+ fonttitle=\csname\neoschool@headweight\endcsname,
+ fontupper=\color{\neoschool@globalcolor},
+ left=\neo@leftpadding,
+ right=\neo@rightpadding,
+ after skip=\neo@afterskip,
+ before skip=\neo@beforeskip,
+ before upper*={%
+ \tcbox[enhanced,
+ colupper=white,
+ colback=exerciseColor,
+ fontupper=\csname\neoschool@headweight\endcsname,
+ size=small,
+ baseline=3pt,
+ top=0pt,
+ bottom=0pt,
+ left=0pt,
+ right=0pt,
+ nobeforeafter,
+ frame code={%
+ \path[fill=tcbcolback]
+ (frame.north west) --
+ (frame.north east) {[rounded corners=5pt]--
+ (frame.south east)} --
+ (frame.south west) --
+ cycle;
+ }]%
+ {%
+ \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \csname\neoschool@headshape\endcsname
+ {\small\neo@exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}%
+ }%
+ }
+ ]%
+ {
+ \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \csname\neoschool@headshape\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\;[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfExercisePropertySetT{subtitle}{{\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\,point}{\,points})\;%
+ }%
+ }
+ \!%
+ }{\end{tcolorbox}}
+
+\DeclareExerciseEnvironmentTemplate{rect-box-outlined}{%
+ \begin{tcolorbox}[
+ enhanced,
+ skin=bicolor,
+ sharp corners,
+ \neo@framehidden,
+ coltitle=exerciseColor,
+ colframe=exerciseColor,
+ colback=white,
+ colupper=\neoschool@globalcolor,
+ fonttitle=\csname\neoschool@headweight\endcsname,
+ fontupper=\color{\neoschool@globalcolor},
+ left=\neo@leftpadding,
+ right=\neo@rightpadding,
+ after skip=\neo@afterskip,
+ before skip=\neo@beforeskip,
+ before upper*={%
+ \tcbox[enhanced,
+ colupper=exerciseColor,
+ colback=white,
+ colframe=exerciseColor,
+ fontupper=\csname\neoschool@headweight\endcsname,
+ size=small,
+ baseline=3pt,
+ top=0pt,
+ bottom=0pt,
+ left=1pt,
+ right=1pt,
+ nobeforeafter,
+ ]%
+ {%
+ \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \csname\neoschool@headshape\endcsname
+ {\small\neo@exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}%
+ }%
+ }
+ ]%
+ { \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \csname\neoschool@headshape\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfExercisePropertySetT{subtitle}{{\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\,point-short}{\,points-short})%
+ }%
+ }\enskip
+ }{\end{tcolorbox}}
+
+\DeclareExerciseEnvironmentTemplate{num-box}{%
+ \begin{tcolorbox}[
+ enhanced,
+ skin=bicolor,
+ sharp corners,
+ before skip=-.25\baselineskip,
+ after skip=-.25\baselineskip,
+ frame hidden,
+ colframe=\neoschool@headcolor,
+ colback=white,
+ colupper=\neoschool@globalcolor,
+ fontupper=\color{\neoschool@globalcolor},
+ enlarge left by=-.5\leftmargin,
+ enlarge right by=-.5\rightmargin,
+ width=\textwidth+\leftmargin+\rightmargin,
+ before upper*={%
+ \tcbox[enhanced,
+ colupper=white,
+ colback=\neoschool@headcolor,
+ fontupper=\csname\neoschool@headweight\endcsname,
+ size=small,
+ baseline=4pt,
+ top=1pt,
+ bottom=1pt,
+ left=1pt,
+ right=1pt,
+ nobeforeafter,
+ frame code={%
+ \path[fill=tcbcolback] (frame.north west) -- (frame.north east)
+ -- (frame.south east) -- (frame.south west) -- cycle;
+ }]%
+ {%
+ \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ {\small\neo@exerciseicon}%
+ \GetExerciseProperty{counter}%
+ }%
+ }
+ ]%
+ {\csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \;(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\,point-short}{\,points-short})%
+ }%
+ }%
+ \enskip
+ }{\end{tcolorbox}}
+
+\DeclareExerciseEnvironmentTemplate{num-box-outlined}{%
+ \begin{tcolorbox}[
+ enhanced,
+ skin=bicolor,
+ sharp corners,
+ before skip=-.25\baselineskip,
+ after skip=-.25\baselineskip,
+ colframe=exerciseColor,
+ colback=white,
+ colupper=\neoschool@globalcolor,
+ fontupper=\color{\neoschool@globalcolor},
+ enlarge left by=-.5\leftmargin,
+ enlarge right by=-.5\rightmargin,
+ width=\textwidth+\leftmargin+\rightmargin,
+ before upper*={%
+ \tcbox[enhanced,
+ colupper=exerciseColor,
+ colback=white,
+ colframe=exerciseColor,
+ fontupper=\csname\neoschool@headweight\endcsname,
+ size=small,
+ baseline=4pt,
+ top=1pt,
+ bottom=1pt,
+ left=1pt,
+ right=1pt,
+ nobeforeafter,
+ ]%
+ {%
+ \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ {\small\neo@exerciseicon}%
+ \GetExerciseProperty{counter}%
+ }%
+ }
+ ]%
+ {\csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \;(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\,point-short}{\,points-short})%
+ }%
+ }%
+ \enskip
+ }{\end{tcolorbox}}
+
+\DeclareExerciseEnvironmentTemplate{ex-num-box}{%
+ \begin{tcolorbox}[
+ enhanced,
+ skin=bicolor,
+ sharp corners,
+ before skip=-.25\baselineskip,
+ after skip=-.25\baselineskip,
+ frame hidden,
+ colframe=\neoschool@headcolor,
+ colback=white,
+ colupper=\neoschool@globalcolor,
+ fontupper=\color{\neoschool@globalcolor},
+ enlarge left by=-.5\leftmargin,
+ enlarge right by=-.5\rightmargin,
+ width=\textwidth+\leftmargin+\rightmargin,
+ before upper*={%
+ \tcbox[enhanced,
+ colupper=white,
+ colback=\neoschool@headcolor,
+ fontupper=\csname\neoschool@headweight\endcsname,
+ size=small,
+ baseline=4pt,
+ top=1pt,
+ bottom=1pt,
+ left=1pt,
+ right=1pt,
+ nobeforeafter,
+ frame code={%
+ \path[fill=tcbcolback] (frame.north west) -- (frame.north east)
+ -- (frame.south east) -- (frame.south west) -- cycle;
+ }]%
+ {%
+ \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ {\small\neo@exerciseicon}%
+ Ex.~\GetExerciseProperty{counter}%
+ }%
+ }
+ ]%
+ {\csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \;(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\,point-short}{\,points-short})%
+ }%
+ }%
+ \enskip
+ }{\end{tcolorbox}}
+
+\DeclareExerciseEnvironmentTemplate{ex-num-box-outlined}{%
+ \begin{tcolorbox}[
+ enhanced,
+ skin=bicolor,
+ sharp corners,
+ before skip=-.25\baselineskip,
+ after skip=-.25\baselineskip,
+ colframe=exerciseColor,
+ colback=white,
+ colupper=\neoschool@globalcolor,
+ fontupper=\color{\neoschool@globalcolor},
+ enlarge left by=-.5\leftmargin,
+ enlarge right by=-.5\rightmargin,
+ width=\textwidth+\leftmargin+\rightmargin,
+ before upper*={%
+ \tcbox[enhanced,
+ colupper=exerciseColor,
+ colback=white,
+ colframe=exerciseColor,
+ fontupper=\csname\neoschool@headweight\endcsname,
+ size=small,
+ baseline=4pt,
+ top=1pt,
+ bottom=1pt,
+ left=1pt,
+ right=1pt,
+ nobeforeafter,
+ ]%
+ {%
+ \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ {\small\neo@exerciseicon}%
+ Ex.~\GetExerciseProperty{counter}%
+ }%
+ }
+ ]%
+ {\csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfExercisePropertySetT{subtitle}{{\itshape\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \;(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\,point-short}{\,points-short})%
+ }%
+ }%
+ \enskip
+ }{\end{tcolorbox}}
+
+%%% Chevrons for Rules
+
+\newcommand{\lchevrons}{%
+ \begin{tikzpicture}[scale=0.1, baseline=0.2mm, line width=1.2pt]
+ \draw (0,0) -- (-1,1.25) -- (0,2.5);
+ \draw (2,0) -- (1,1.25) -- (2,2.5);
+ \draw (4,0) -- (3,1.25) -- (4,2.5);
+ \end{tikzpicture}%
+}
+
+\newcommand{\lcircle}{%
+ \begin{tikzpicture}[scale=1, baseline=-1mm, line width=1.2pt]
+ \draw (0,0) circle (3pt);
+ \end{tikzpicture}%
+}
+
+%%% Horizontal Rule with Boxed Title
+
+\DeclareExerciseEnvironmentTemplate{box-hrule}{%
+ \par\vspace{3.25ex plus 1ex minus .2ex}
+ \Needspace*{3\baselineskip}%
+ \noindent
+ {\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname
+ \tcbox[on line,boxsep=-2pt,boxrule=0.4pt,left=7pt,right=7pt,colframe=exerciseColor,colback=exerciseColor,sharp corners, rounded corners = southeast]{\color{white}{\small\neo@exerciseicon}\XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}}%
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfInsideSolutionF{%
+ \GetExercisePropertyT{subtitle}{{\itshape\enskip{\PropertyValue}\enskip}}%
+ }%
+ \hspace{-1pt}\xrfill[.085cm]{1.2pt}[exerciseColor]\hspace{-1pt}%
+ {\color{exerciseColor}\footnotesize\lchevrons}%
+ {%
+ \IfExercisePropertySetT{points}{\bfseries\color{exerciseColor}\enskip%
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}%
+ \IfExerciseGoalSingularTF{points}
+ {\XSIMtranslate{point}}
+ {\XSIMtranslate{points}}%
+ }%
+ }%
+ }%
+ \par\vspace{1.5ex plus .2ex}
+ \@afterindentfalse\@afterheading
+}{}
+
+%%% Horizontal Rule with Boxed Title - Outlined
+
+\DeclareExerciseEnvironmentTemplate{box-hrule-out}{%
+ \par\vspace{3.25ex plus 1ex minus .2ex}
+ \Needspace*{3\baselineskip}%
+ {\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname\tcbox[on line,boxsep=-2pt,boxrule=1.2pt,left=7pt,right=7pt,colframe=exerciseColor,colback=white,sharp corners,
+ rounded corners = east,arc=5pt
+ ]{\color{exerciseColor}{\small\neo@exerciseicon}\XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}}%
+ \color{exerciseColor}%
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfInsideSolutionF{%
+ \GetExercisePropertyT{subtitle}{{\itshape\enskip{\PropertyValue}}}%
+ }%
+ \hspace{-1pt}\xrfill[.085cm]{1.2pt}[exerciseColor]\hspace{-1pt}%
+ % \!\!{\color{exerciseColor}\small\lcircle}%
+ {\color{exerciseColor}\footnotesize\lchevrons}%
+ {\bfseries\color{exerciseColor}%
+ \IfExercisePropertySetT{points}{\enskip%
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}%
+ \IfExerciseGoalSingularTF{points}
+ {\XSIMtranslate{point}}
+ {\XSIMtranslate{points}}%
+ }%
+ }%
+ }%
+ \par\vspace{1.5ex plus .2ex}
+ \@afterindentfalse\@afterheading
+}{}
+
+\DeclareExerciseEnvironmentTemplate{box-hrule-in}{%
+ \par\vspace{3.25ex plus 1ex minus .2ex}
+ \Needspace*{3\baselineskip}%
+ \noindent
+ {\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname\color{exerciseColor}%
+ \tcbox[on line,boxsep=-2pt,boxrule=1.2pt,left=7pt,right=7pt,colframe=exerciseColor,colback=white,sharp corners,
+ rounded corners = west,arc=5pt
+ ]{\color{exerciseColor}{\small\neo@exerciseicon}\XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}}%
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfInsideSolutionF{%
+ \GetExercisePropertyT{subtitle}{{\itshape\enskip{\PropertyValue}}}%
+ }%
+ \hspace{-1pt}\xrfill[.085cm]{1.2pt}[exerciseColor]\hspace{-1pt}%
+ {\color{exerciseColor}\small\lcircle}%
+ {\bfseries\color{exerciseColor}%
+ \IfExercisePropertySetT{points}{\enskip%
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}%
+ \IfExerciseGoalSingularTF{points}
+ {\XSIMtranslate{point}}
+ {\XSIMtranslate{points}}%
+ }}}%
+ \par\vspace{1.5ex plus .2ex}
+ \@afterindentfalse\@afterheading
+}{}
+
+%%% Boxed Title
+
+\DeclareExerciseEnvironmentTemplate{boxed}{%
+ \par\vspace{2ex plus .5ex minus .1ex}%
+ \noindent
+ {\csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \csname\neoschool@headshape\endcsname
+ \tcbox[
+ on line,
+ boxsep=-3pt,
+ left=7pt,
+ right=7pt,
+ colframe=exerciseColor,
+ colback=exerciseColor,
+ sharp corners,
+ rounded corners = southeast,
+ ]{%
+ \color{white}{\small\neo@exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}%
+ }%
+ }%
+ {%
+ \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \csname\neoschool@headshape\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\hspace{5pt}[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfExercisePropertySetT{subtitle}{{\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\,point}{\,points})%
+ }%
+ }%
+ \hspace{2pt}
+}{}
+
+%%% Boxed Title - Outlined
+
+\DeclareExerciseEnvironmentTemplate{boxed-out}{%
+ \par\vspace{2ex plus .5ex minus .1ex}%
+ \noindent
+ {\csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \csname\neoschool@headshape\endcsname
+ \tcbox[
+ on line,
+ boxrule=0.8pt,
+ boxsep=-3pt,
+ left=7pt,
+ right=7pt,
+ colframe=exerciseColor,
+ colback=white,
+ sharp corners,
+ rounded corners = southeast,
+ ]{%
+ \color{exerciseColor}{\small\neo@exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}%
+ }%
+ }%
+ {%
+ \csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \csname\neoschool@headshape\endcsname
+ \color{exerciseColor}
+ \IfExercisePropertySetT{level}
+ {\hspace{5pt}[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]}%
+ \IfExercisePropertySetT{subtitle}{{\enskip\GetExerciseProperty{subtitle}}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{\,point}{\,points})%
+ }%
+ }%
+ \hspace{2pt}
+}{}
+
+
+%% ==============================================================================
+%% Simple Style Templates
+%% ==============================================================================
+
+%% Common Style Settings
+\newcommand{\neo@startsection}[1]{%
+ \@startsection{paragraph}{4}{\z@}{0.25\baselineskip}{-1em}
+ {\csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname\color{#1}}
+}
+
+%% Inline Style
+%% ----------------------------------
+\DeclareExerciseEnvironmentTemplate{inline}{%
+ \neo@startsection{exerciseColor}
+ {%
+ {\small\neo@exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{\enskip%
+ [\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]
+ }%
+ \GetExercisePropertyT{subtitle}{{\enskip\normalfont\rmfamily\itshape\csname\neoschool@headweight\endcsname\PropertyValue}}%
+ \IfExercisePropertySetT{points}{\enskip(%
+ \GetExerciseProperty{points}%
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]}%
+ \IfExerciseGoalSingularTF{points}
+ {\;\XSIMtranslate{point})\!}
+ {\;\XSIMtranslate{points})\!}
+ }
+}
+\color{\neoschool@globalcolor}\hspace{-1em}
+}{\par\vspace{0.5\baselineskip}}
+
+
+%% Section Style
+%% ----------------------------------
+\DeclareExerciseEnvironmentTemplate{section}{%
+ \section*{%
+ {\small\neo@exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{\enskip%
+ [\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]
+ }%
+ \GetExercisePropertyT{subtitle}{{\:\itshape\PropertyValue}}%
+ \IfExercisePropertySetT{points}{\enskip(%
+ \GetExerciseProperty{points}%
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]}%
+ \IfExerciseGoalSingularTF{points}
+ {\;\XSIMtranslate{point})\!}
+ {\;\XSIMtranslate{points})\!}
+ }%
+ }%
+ \color{\neoschool@globalcolor}%
+}{\par\vspace{0.5\baselineskip}}
+
+% %% Terminal Style
+\DeclareExerciseEnvironmentTemplate{terminal}{%
+ \neo@startsection{exerciseColor}
+ {%
+ {\small\neo@exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}
+ \enskip{\small\faTerminal}
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]
+ }
+ \GetExercisePropertyT{subtitle}{{\enskip\PropertyValue}}
+ \IfExercisePropertySetT{points}{\enskip(%
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}
+ \IfExerciseGoalSingularTF{points}
+ {~\XSIMtranslate{point})\!}
+ {~\XSIMtranslate{points})\!}
+ }
+}
+\color{\neoschool@globalcolor}\hspace{-2em}
+}{\par}
+
+%% Subsection Style
+\DeclareExerciseEnvironmentTemplate{subsection}{%
+ \subsection*{%
+ {\small\neo@exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace
+ \GetExerciseProperty{counter}
+ \IfExercisePropertySetT{level}{%
+ ~[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]
+ }
+ \IfInsideSolutionF{%
+ \GetExercisePropertyT{subtitle}
+ {{~\normalfont\csname\neoschool@headweight\endcsname\itshape\PropertyValue}}
+ }{%
+ \IfExercisePropertySetT{points}{%
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}
+ \IfExerciseGoalSingularTF{points}
+ {\hfill\XSIMtranslate{point}}
+ {\hfill\XSIMtranslate{points}}
+ }
+ }
+ }%
+}{\par}
+
+%% Block Style
+\DeclareExerciseEnvironmentTemplate{block}{%
+ \subsection*{%
+ {\small\neo@exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace
+ \GetExerciseProperty{counter}
+ \IfExercisePropertySetT{level}{%
+ ~[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]
+ }
+ \IfInsideSolutionF{%
+ \GetExercisePropertyT{subtitle}
+ {{~\normalfont\csname\neoschool@headweight\endcsname\itshape\PropertyValue}}
+ }{%
+ \IfExercisePropertySetT{points}{%
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}
+ \IfExerciseGoalSingularTF{points}
+ {\hfill\XSIMtranslate{point}}
+ {\hfill\XSIMtranslate{points}}
+ }
+ }
+ }%
+ \vspace{-0.5em}
+}{%
+ \vspace{-1em}
+}
+
+%% ==============================================================================
+%% Horizontal Rule Style
+%% ==============================================================================
+
+\ifneo@amslikethm
+ \DeclareExerciseEnvironmentTemplate{hrule}{%
+ \par\vspace{2ex plus 0.5ex minus .1ex}
+ \Needspace*{3\baselineskip}
+ \noindent
+ \csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname
+ {\small\neo@exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}\enskip
+ \IfExercisePropertySetT{level}{%
+ [\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]\enskip
+ }
+ \IfInsideSolutionF{%
+ \GetExercisePropertyT{subtitle}{{{\normalfont\PropertyValue}\enskip}}
+ }
+ \xrfill[.075cm]{0.4pt}[exerciseColor]
+ {\color{exerciseColor}
+ \IfExercisePropertySetT{points}{\enskip
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}
+ \IfExerciseGoalSingularTF{points}
+ {~\XSIMtranslate{point}}
+ {~\XSIMtranslate{points}}
+ }
+ }
+ \par\vspace{1ex plus .1ex}
+ \@afterindentfalse\@afterheading
+ }{\par}
+\else
+ \DeclareExerciseEnvironmentTemplate{hrule}{%
+ \par\vspace{2ex plus 0.5ex minus .1ex}
+ \Needspace*{3\baselineskip}
+ \noindent
+ \csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname
+ {\small\neo@exerciseicon}%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}\enskip
+ \IfExercisePropertySetT{level}{%
+ [\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]\enskip
+ }
+ \IfInsideSolutionF{%
+ \GetExercisePropertyT{subtitle}{{({\PropertyValue})\enskip}}
+ }
+ \xrfill[.075cm]{1.2pt}[exerciseColor]
+ {\color{exerciseColor}
+ \IfExercisePropertySetT{points}{\enskip
+ \GetExerciseProperty{points}
+ \GetExercisePropertyT{bonus-points}{[+\printgoal{\PropertyValue}]\;}
+ \IfExerciseGoalSingularTF{points}
+ {~\XSIMtranslate{point}}
+ {~\XSIMtranslate{points}}
+ }
+ }
+ \par\vspace{1ex plus .1ex}
+ \@afterindentfalse\@afterheading
+ }{\par}
+\fi
+
+%% ==============================================================================
+%% Solution Box Configuration
+%% ==============================================================================
+
+% Solution box template
+\DeclareExerciseEnvironmentTemplate{sol-box}{%
+ \begin{tcolorbox}[%
+ enhanced,
+ breakable,
+ frame hidden,
+ before skip=0.5\baselineskip,
+ after skip=0.5\baselineskip,
+ left=0.75em,
+ right=0.5em,
+ boxsep=1ex,
+ colframe=solutionColor,
+ colback=solutionColor!5,
+ ]
+ {\color{solutionColor}
+ \csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname
+ \XSIMmixedcase{\GetExerciseName}
+ \csname neo@solutiongaptext\endcsname
+ \GetExerciseProperty{counter}
+ }
+ }{\end{tcolorbox}}
+
+%% ==============================================================================
+%% Smart Boxes
+%% ==============================================================================
+\DeclareExerciseProperty{answer-type}
+
+\DeclareExerciseEnvironmentTemplate{smart-box}{%
+ \begin{tcolorbox}[%
+ neo@box@base,
+ neo@frame@basic,
+ neo@title@colored,
+ title={%
+ \raisebox{0pt}{\textcolor{white}{\small\neo@exerciseicon}}%
+ \csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname
+ \XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{\enskip\GetExerciseProperty{subtitle}}%
+ \IfExercisePropertySetT{points}{%
+ \enskip(\GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}{~point}{~points})%
+ }%
+ }%
+ ]%
+ }{\end{tcolorbox}}
+
+\DeclareExerciseEnvironmentTemplate{minimal-ams}{%
+ \par\vspace{2ex plus 0.5ex minus .1ex}
+ \Needspace*{3\baselineskip}
+ \noindent
+ {%
+ {\small\neo@exerciseicon}
+ \csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{%
+ \enskip{\itshape\GetExerciseProperty{subtitle}}%
+ }%
+ \IfExercisePropertySetT{points}{%
+ \enskip(%
+ \GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}%
+ {~point}%
+ {~points}%
+ )%
+ }%
+ \enskip
+ }%
+}{\par\vspace{1ex plus .5ex}}
+
+\DeclareExerciseEnvironmentTemplate{rule-ams}{%
+ \par\vspace{2ex plus 0.5ex minus .1ex}
+ \Needspace*{3\baselineskip}
+ \noindent
+ {%
+ {\small\neo@exerciseicon}
+ \csname\neoschool@headstyle\endcsname\csname\neoschool@headweight\endcsname\csname\neoschool@headshape\endcsname
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace\GetExerciseProperty{counter}%
+ \IfExercisePropertySetT{level}{%
+ \enskip[\raisebox{0.5pt}{$\neo@replicate{\GetExerciseProperty{level}}{{\star}}$}]%
+ }%
+ \IfExercisePropertySetT{subtitle}{%
+ \enskip{\itshape\GetExerciseProperty{subtitle}}%
+ }%
+ \IfExercisePropertySetT{points}{%
+ \enskip(%
+ \GetExerciseProperty{points}%
+ \IfExerciseGoalSingularTF{points}%
+ {~point}%
+ {~points}%
+ )%
+ }%
+ \enskip
+ }%
+ \par\nobreak\vspace{.4ex}%
+ \noindent\hspace*{2em}%
+ \tikz[baseline]{\draw[line width=0.4pt, exerciseColor!20] (0,0) -- (\linewidth-4em,0);}%
+ \par\vspace{.8ex}%
+ \@afterindentfalse\@afterheading
+}{\par\vspace{1ex plus .5ex}}
+
+%% ==============================================================================
+%% Exercise Configuration
+%% ==============================================================================
+
+% Enable solutions if answers option is active
+\ifneoschool@answers
+ \xsimsetup{%
+ solution/print=true
+ }
+\fi
+
+% Base exercise setup
+\ifneoschool@sectionthmcounter
+ \ifneoschool@sharedexcounter
+ \xsimsetup{%
+ exercise/within = section,
+ exercise/name = {\neo@exercisename},
+ solution/name = {\neo@solutionname},
+ solution/template = sol-box
+ }
+ \renewcommand*{\theexercise}{\thesection.\arabic{thmcounter}}
+ \AtBeginEnvironment{exercise}{\stepcounter{thmcounter}\addtocounter{exercise}{-1}}
+ \else
+ \xsimsetup{%
+ exercise/within = section,
+ exercise/name = {\neo@exercisename},
+ solution/name = {\neo@solutionname},
+ solution/template = sol-box
+ }
+ \fi
+\else
+ \ifneoschool@sharedexcounter
+ \xsimsetup{%
+ exercise/name = {\neo@exercisename},
+ solution/name = {\neo@solutionname},
+ solution/template = sol-box
+ }
+ \renewcommand*{\theexercise}{\arabic{thmcounter}}
+ \AtBeginEnvironment{exercise}{\stepcounter{thmcounter}\addtocounter{exercise}{-1}}
+ \else
+ \xsimsetup{%
+ exercise/name = {\neo@exercisename},
+ solution/name = {\neo@solutionname},
+ solution/template = sol-box
+ }
+ \fi
+\fi
+
+%% Style selection based on class options
+\ifneo@amslikethm
+ \xsimsetup{exercise/template=inline}
+\fi
+
+\ifneo@classythm
+ \xsimsetup{exercise/template=classy-box}
+\fi
+
+\ifneo@classicthm
+ \xsimsetup{exercise/template=classic-box}
+\fi
+
+\ifneo@soberthm
+ \xsimsetup{exercise/template=sober-box}
+\fi
+
+\ifneo@elegantthm
+ \xsimsetup{exercise/template=elegant-box}
+\fi
+
+\ifneo@shadedthm
+ \xsimsetup{exercise/template=shaded-box}
+\fi
+
+\ifneo@slantedthm
+ \xsimsetup{exercise/template=slanted-box}
+\fi
+
+\ifneo@boxedthm
+ \xsimsetup{exercise/template=rect-box}
+\fi
+
+%% ==============================================================================
+%% Referencing an exercise
+%% ==============================================================================
+
+\ExplSyntaxOn
+\NewDocumentCommand \exercisenumber {m}
+ {
+ \xsim_get_property:nxn
+ {exercise}
+ { \xsim_get_id_for_property:nn {ID} {#1} }
+ {counter}
+ }
+\cs_generate_variant:Nn \xsim_get_property:nnn {nx}
+\ExplSyntaxOff
+
+%% ==============================================================================
+%% Utility Commands for Exercises
+%% ==============================================================================
+
+% Print exercises by level
+\NewDocumentCommand\printlevelexid{m}{%
+ \noindent {\bfseries \csname neo@pathname\endcsname\space#1 :}
+ \ForEachUsedExerciseByType{%
+ \def\ExerciseType{##1}
+ \def\ExerciseID{##2}
+ \IfExercisePropertySetT{level}{%
+ \ifnum\GetExerciseProperty{level}=#1
+ \fbox{\GetExerciseProperty{id}}\hspace*{2mm}
+ \else
+ \hspace*{5mm}
+ \fi
+ }
+ }
+}
+
+%% ==============================================================================
+%% Final Configuration Commands
+%% ==============================================================================
+
+% Dynamic grid fill command
+\newlength{\neo@gridwidth}
+\NewDocumentCommand\gridfill{ s O{\neoschool@titlecolor} O{5mm} O{5mm} }{%
+ \pgfmathsetmacro{\neo@gridwidth}{floor(\linewidth/1cm)}
+ \edef\neo@gridwidth{\neo@gridwidth cm}
+ \vspace*{\fill}
+ \IfBooleanTF#1
+ {{\noindent\centering
+ \frenchgrid[#2]{\neo@gridwidth}{\dimexpr\textheight-\pagetotal-2\baselineskip\relax}}
+ }
+ {{\noindent\centering
+ \customgrid[#2][#3][#4]{\neo@gridwidth}{\dimexpr\textheight-\pagetotal-2\baselineskip\relax}}
+ }
+}
+
+% Solution text formatting
+\NewDocumentCommand\neo@solution@text{}{%
+ {\csname\neoschool@headstyle\endcsname
+ \csname\neoschool@headweight\endcsname
+ \color{tcbcolframe}
+ \ifx\neo@solutiongaptext\empty
+ \neo@solutionname
+ \else
+ \neo@solutionname~\neo@solutiongaptext
+ \fi
+ }
+}
+
+%% ==============================================================================
+%% Utilities
+%% ==============================================================================
+
+%% Core Document Settings
+%% ----------------------------------
+% Table styling
+\setlength{\arrayrulewidth}{0.5pt}
+% \arrayrulecolor{\neoschool@titlecolor}
+\renewcommand{\arraystretch}{1.15}
+
+% Document color management
+\newcommand{\documentcolor}[1]{%
+ \color{#1}\global\let\default@color\current@color
+}
+
+% Initialize document settings
+\AtBeginDocument{%
+ \documentcolor{\neoschool@globalcolor}
+ \DeclareGraphicsExtensions{.pdf,.PDF,.eps,.EPS,.png,.PNG,.tif,.TIF,.jpg,.JPG,.jpeg,.JPEG}
+}
+
+%% Font Settings
+%% ----------------------------------
+\ifneo@sfall
+ \renewcommand{\neoschool@headstyle}{sffamily}
+ \renewcommand{\neoschool@titlestyle}{sffamily}
+ \renewcommand{\familydefault}{\sfdefault}
+\fi
+
+\ifneo@sfbody
+ \renewcommand{\familydefault}{\sfdefault}
+\fi
+
+%% Graphics Rules
+%% ----------------------------------
+\ifpdf
+ \DeclareGraphicsRule{*}{mps}{*}{}
+\fi
+
+%% Layout and Drawing Tools
+%% ----------------------------------
+% Absolute positioning on page
+\newcommand{\positionobject}[4]{%
+ \begin{tikzpicture}[remember picture, overlay]
+ \node[inner sep=0pt, outer sep=0pt] at ($([xshift=#1,yshift=-#2]current page.north west)$) {%
+ \adjustbox{scale=#3}{#4}
+ };
+ \end{tikzpicture}
+}
+
+% Advanced customizable grid
+\NewDocumentCommand{\customgrid}{ O{\neoschool@titlecolor} O{5mm} O{5mm} m m }{%
+ \tikzset{%
+ gridlines/.style={%
+ draw=#1,
+ opacity=0.5
+ },
+ majorgrid/.style={%
+ gridlines,
+ line width=0.35pt
+ },
+ minorgrid/.style={%
+ gridlines,
+ line width=0.35pt
+ }
+ }
+ \medskip\noindent\begin{tikzpicture}[inner sep=0, outer sep=0]
+ % Calculate dimensions
+ \pgfmathsetmacro\mywidth{#4}
+ \pgfmathsetmacro\myheight{#5}
+ \pgfmathsetmacro\incx{#2}
+ \pgfmathsetmacro\incy{#3}
+
+ % Vertical grid lines
+ \pgfmathsetmacro\numx{int(\mywidth/\incx)}
+ \foreach \x in {0,...,\numx}{%
+ \pgfmathparse{mod(\x,5)==0 ? "majorgrid" : "minorgrid"}
+ \edef\gridstyle{\pgfmathresult}
+ \draw[\gridstyle]
+ (\x * \incx pt, 0) -- (\x * \incx pt, \myheight pt);
+ }
+
+ % Horizontal grid lines
+ \pgfmathsetmacro\numy{int(\myheight/\incy)}
+ \foreach \y in {0,...,\numy}{%
+ \pgfmathparse{mod(\y,5)==0 ? "majorgrid" : "minorgrid"}
+ \edef\gridstyle{\pgfmathresult}
+ \draw[\gridstyle]
+ (0, \y * \incy pt) -- (\mywidth pt, \y * \incy pt);
+ }
+ \end{tikzpicture}
+ \ignorespaces
+ \par\vspace{7pt}
+}
+
+% Legacy grid command for backwards compatibility
+\NewDocumentCommand{\grid}{ O{\neoschool@titlecolor} m m }{%
+ \customgrid[#1][5mm][5mm]{#2}{#3}
+}
+
+\NewDocumentCommand{\frenchgrid}{ s O{\neoschool@titlecolor!75} O{\neoschool@titlecolor!50} m m }{%
+ \tikzset{%
+ fine lines/.style={draw={#3},very thin},
+ thick lines/.style={draw={#2}},
+ }
+ \IfBooleanTF{#1}{%
+ {\noindent\centering}
+ }{%
+ \noindent
+ }
+ \begin{tikzpicture}[inner sep=0,outer sep=0]
+ \pgfmathsetmacro\mywidth{#4}
+ \pgfmathsetmacro\myheight{#5}
+ \pgfmathsetmacro\incx{8mm}
+ \pgfmathsetmacro\incypetits{2mm}
+ \pgfmathsetmacro\incygrands{8mm}
+
+ % Adjust the width to be an exact multiple of incx
+ \pgfmathsetmacro\numx{floor(\mywidth/\incx)} % Number of full columns
+ \pgfmathsetmacro\adjwidth{\numx * \incx} % Adjusted width
+
+ % Adjust the height to be an exact multiple of incypetits
+ \pgfmathsetmacro\numypetits{floor(\myheight/\incypetits)} % Number of fine lines
+ \pgfmathsetmacro\numygrands{floor(\myheight/\incygrands)} % Number of thick lines
+ \pgfmathsetmacro\adjheight{\numypetits * \incypetits} % Adjusted height
+
+ % Draw vertical lines
+ \foreach \x in {0,...,\numx}{%
+ \draw[fine lines]
+ (\x * \incx pt,0) -- (\x * \incx pt,\adjheight pt);
+ }
+ % Draw thin horizontal lines
+ \foreach \y in {0,...,\numypetits}{%
+ \draw[fine lines]
+ (0,\y * \incypetits pt) -- (\adjwidth pt,\y * \incypetits pt);
+ }
+ % Draw thick horizontal lines
+ \foreach \y in {0,...,\numygrands}{%
+ \draw[thick lines]
+ (0,\y * \incygrands pt) -- (\adjwidth pt,\y * \incygrands pt);
+ }
+ \end{tikzpicture}
+}
+
+%% Notebook-Style Pages
+%% ----------------------------------
+% Simple lined notebook page
+\newcommand{\notebook}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \foreach \i in {3,...,27}{%
+ \draw[teal] ($(current page.north west)+(0,-\i)$) --
+ ($(current page.north east)+(0,-\i)$);
+ }
+ \draw [thick,red] ($(current page.north west)+(4,0)$) --
+ ($(current page.south west)+(4,0)$);
+ \end{tikzpicture}
+}
+
+% Minor grid notebook page
+\newcommand{\nbminorgrid}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \foreach \i in {0.5,1,...,30}{%
+ \draw[teal!50] ($(current page.north west)+(0,-\i)$) --
+ ($(current page.north east)+(0,-\i)$);
+ }
+ \foreach \i in {0.5,1,...,21}{%
+ \draw [thick,teal!50] ($(current page.north west)+(\i,0)$) --
+ ($(current page.south west)+(\i,0)$);
+ }
+ \end{tikzpicture}
+}
+
+% Major grid notebook page
+\newcommand{\nbmajorgrid}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \foreach \i in {2,2.8,...,30}{%
+ \draw[teal!50] ($(current page.north west)+(0,-\i)$) --
+ ($(current page.north east)+(0,-\i)$);
+ }
+ \foreach \i in {2,2.2,...,30}{%
+ \draw[teal!25] ($(current page.north west)+(0,-\i)$) --
+ ($(current page.north east)+(0,-\i)$);
+ }
+ \foreach \i in {4.0,4.8,...,21}{%
+ \draw [thick,teal!50] ($(current page.north west)+(\i,0)$) --
+ ($(current page.south west)+(\i,0)$);
+ }
+ \draw [thick,red] ($(current page.north west)+(4,0)$) --
+ ($(current page.south west)+(4,0)$);
+ \end{tikzpicture}
+}
+
+%% Horizontally Split Content
+%% ----------------------------------
+\NewDocumentCommand{\splitcontent}{ O{0.5} O{0.02} m m }{%
+ % #1 : Width of the first section (default: 50%)
+ % #2 : Horizontal gap between sections (default: 2%)
+ % #3 : Content of the first section
+ % #4 : Content of the second section
+ \noindent
+ \begin{minipage}{#1\linewidth}
+ #3
+ \end{minipage}%
+ \hspace*{#2\linewidth}
+ \begin{minipage}{\dimexpr\linewidth-#1\linewidth-#2\linewidth\relax}
+ #4
+ \end{minipage}%
+}
+
+%% Text With Image Layout
+%% ----------------------------------
+\NewDocumentCommand{\textwithimage}{s m m m m}{%
+ \noindent
+ \IfBooleanTF{#1}{%
+ \par\begin{minipage}{#2\linewidth}
+ \centering\includegraphics[width=#3\linewidth]{#5}
+ \end{minipage}
+ \hfill
+ \begin{minipage}{\dimexpr\linewidth-#2\linewidth-1em\relax}
+ #4
+ \end{minipage}
+ }{%
+ \par\begin{minipage}{\dimexpr\linewidth-#2\linewidth-1em\relax}
+ #4
+ \end{minipage}%
+ \hfill%
+ \begin{minipage}{#2\linewidth}
+ \begin{center}
+ \centering\includegraphics[width=#3\linewidth]{#5}
+ \end{center}
+ \end{minipage}
+ }
+}
+
+%% QR Code Integration
+%% ----------------------------------
+\NewDocumentCommand{\withqrcode}{ s O{2cm} m m }{%
+ \qrset{hyperlink,height=#2}%
+ \noindent%
+ \IfBooleanTF{#1}{%
+ \par\begin{tblr}{%
+ width={.975\linewidth},
+ colspec={X[j,m]Q[c,m]Q[c,m]}
+ }
+ {{{#4}}} & & \centering\qrcode{#3}
+ \end{tblr}%
+ }{%
+ \par\begin{tblr}{%
+ width={.975\linewidth},
+ colspec={Q[c,m]Q[c,m]X[j,m]}
+ }
+ \centering\qrcode{#3} & & {{{#4}}}
+ \end{tblr}%
+ }%
+}
+
+%% Assessment Tools
+%% ----------------------------------
+% Point markers
+\NewDocumentCommand{\mrks}{s O{} m}{%
+ \IfBooleanTF{#1}
+ {\reversemarginpar}
+ {\normalmarginpar}%
+ \marginnote{\small (#3 pts)\ifx\empty#2\empty\else\\\small#2\fi}[0em]\ignorespaces}
+
+\NewDocumentCommand{\mrk}{s O{} m}{%
+ \IfBooleanTF{#1}
+ {\reversemarginpar}
+ {\normalmarginpar}%
+ \marginnote{\small (#3 pt)\ifx\empty#2\empty\else\\\small#2\fi}[0em]\ignorespaces}
+
+% Answer lines
+\NewDocumentCommand{\lines}{ O{.} O{1.65em} m }{%
+ \par
+ \foreach \n in {1,...,#3}{%
+ \noindent\parbox[t][#2][t]{\linewidth}{%
+ \ifstrequal{#1}{.}{%
+ \dotfill
+ }{%
+ \ifstrequal{#1}{-}{%
+ \hrulefill
+ }{%
+ \leaders\hbox{#1}\hfill\kern0pt
+ }
+ }
+ }
+ \par
+ }
+}
+
+% Dotted line with variable length
+\newcommand\vardots[1][\linewidth]{%
+ \noindent\begin{tikzpicture}
+ \draw[densely dotted, semithick, line cap=round] (0,0) -- ({#1},0);
+ \end{tikzpicture}
+}
+
+%% Task Lists
+%% ----------------------------------
+\newcommand{\cmark}{%
+ \ifneo@unicolor
+ {\color{\neoschool@headcolor}\ding{51}}%
+ \else
+ \ifneo@print
+ \ding{51}%
+ \else
+ {\color{definitionColor}\ding{51}}%
+ \fi
+ \fi
+}
+
+\newcommand{\xmark}{%
+ \ifneo@unicolor
+ {\color{\neoschool@headcolor}\ding{55}}%
+ \else
+ \ifneo@print
+ \ding{55}%
+ \else
+ {\color{theoremColor}\ding{55}}%
+ \fi
+ \fi
+}
+
+\newcommand{\unchecked}{%
+ \item[\rlap{$\square$}\hspace{.7em}]%
+}
+
+\newcommand{\done}{%
+ \item[\rlap{$\square$}{%
+ \raisebox{1pt}{\large\hspace{1pt}\cmark}\hspace{-2.5pt}}]%
+}
+
+\newcommand{\wontfix}{%
+ \item[\rlap{$\square$}{\large\hspace{1pt}\xmark}]%
+}
+
+%% Margin
+%% ----------------------------------
+
+\ifx\neoschool@margin\@empty\else
+ \AtEndPreamble{%
+ \newlength{\neo@originalwidth}%
+ \setlength{\neo@originalwidth}{18cm}%
+ \addtolength{\evensidemargin}{\neoschool@margin}%
+ \addtolength{\oddsidemargin}{\neoschool@margin}%
+ \setlength{\marginparwidth}{\dimexpr\neoschool@margin-0.5cm\relax}%
+ \setlength{\marginparsep}{0.5cm}%
+ \areaset{\dimexpr\neo@originalwidth-\neoschool@margin\relax}{\dimexpr29cm-\neoschool@margin}%
+ % \recalctypearea
+ }
+\fi
+
+%% Margin Notes
+%% ----------------------------------
+
+\newtoggle{lmargin}
+
+\newcommand{\alternatingtodo}[2][]{%
+ \iftoggle{lmargin}
+ {\normalmarginpar \todo[#1]{#2} \togglefalse{lmargin}}
+ {\reversemarginpar \todo[#1]{#2} \toggletrue{lmargin}}
+ \ignorespaces
+}
+
+\newif\ifmarginnotesactive
+\ifx\neoschool@notes\@empty
+ \marginnotesactivefalse
+\else
+ \marginnotesactivetrue
+ \AtEndPreamble{%
+ \newlength{\neo@originalwidth}
+ \setlength{\neo@originalwidth}{18cm}
+ \addtolength{\evensidemargin}{\neoschool@notes}
+ \addtolength{\oddsidemargin}{\neoschool@notes}
+ \setlength{\marginparwidth}{\dimexpr\neoschool@notes-0.5cm\relax}
+ \setlength{\marginparsep}{0.5cm} \areaset{\dimexpr\neo@originalwidth-\neoschool@notes\relax}{\dimexpr29cm-\neoschool@notes}
+ }
+ % \recalctypearea
+\fi
+
+\newcommand{\tdnote}[2][]{%
+ \ifmarginnotesactive
+ \alternatingtodo[%
+ bordercolor=\ifneo@unicolor\neoschool@headcolor\else ForestGreen\fi,
+ linecolor=\ifneo@unicolor\neoschool@headcolor\else ForestGreen\fi,
+ backgroundcolor=\ifneo@unicolor\neoschool@headcolor!10\else Gold\fi,
+ #1%
+ ]{#2}%
+ \fi
+}
+
+\newsavebox{\todobox}
+\newcounter{tdnotecounter}
+
+\newcommand{\boxnote}[2][inNote]{%
+ \stepcounter{tdnotecounter}
+ \iftoggle{lmargin}%
+ {%
+ \normalmarginpar
+ \marginpar{%
+ \savebox\todobox{\tdnote[inline]{#2}}%
+ \begin{tikzpicture}[remember picture, overlay]
+ \coordinate (#1-\thetdnotecounter) at (0pt,0.5\ht\todobox);
+ \end{tikzpicture}%
+ \usebox\todobox%
+ }%
+ \togglefalse{lmargin}
+ }%
+ {%
+ \reversemarginpar
+ \marginpar{%
+ \savebox\todobox{\tdnote[inline]{#2}}%
+ \begin{tikzpicture}[remember picture, overlay]
+ \coordinate (#1-\thetdnotecounter) at (\marginparwidth,0.5\ht\todobox);
+ \end{tikzpicture}%
+ \usebox\todobox%
+ }%
+ \toggletrue{lmargin}
+ }%
+}
+
+\newcommand{\tdmark}[1][inNote]{%
+ \ifmarginnotesactive
+ \tikz[remember picture, overlay]{%
+ \iftoggle{lmargin}{%
+ \draw[thick,color=\ifneo@unicolor\neoschool@headcolor\else ForestGreen\fi]
+ (#1-\thetdnotecounter) -- ++(0.25cm,0) |- (0pt,\lineskip-\dp\strutbox)%
+ }{%
+ \draw[thick,color=\ifneo@unicolor\neoschool@headcolor\else ForestGreen\fi]
+ (#1-\thetdnotecounter) -- ++(-0.25cm,0) |- (0pt,\lineskip-\dp\strutbox)%
+ }
+ }%
+ \fi
+}
+
+%% Exam-style grading strip
+%% ----------------------------------
+\newcommand{\neo@mark@text}{%
+ \ifneo@french
+ Note%
+ \else\ifneo@german
+ Note%
+ \else
+ Mark%
+ \fi\fi
+}
+
+\newcommand{\neo@appreciation@text}{%
+ \ifneo@french
+ Appréciation%
+ \else\ifneo@german
+ Bewertung%
+ \else
+ Comments%
+ \fi\fi
+}
+
+\newcommand{\smallstrut}{\rule[-0.5ex]{0pt}{1.8ex}}
+
+\NewDocumentCommand{\gradingstrip}{ O{} }{%
+ \vspace*{1em}
+ \noindent
+ \begin{minipage}[t]{0.2\textwidth}
+ \begin{tcolorbox}[%
+ enhanced,
+ colback=white,
+ colbacktitle=white,
+ colframe=\neoschool@globalcolor,
+ sharp corners,
+ boxrule=0.5pt,
+ height=2.5cm,
+ title={\smallstrut\textmd{\color{\neoschool@globalcolor}\neo@mark@text}},
+ center title,
+ overlay={%
+ \ifblank{#1}{}{%
+ \coordinate (start) at ([xshift=-0.1mm,yshift=-0.575cm]frame.north east);
+ \coordinate (end) at ([xshift=0.1mm,yshift=0.1mm]frame.south west);
+ \draw[line width=0.4pt] (start) -- (end);
+ \node[anchor=south east]
+ at ([xshift=-0.4cm,yshift=0.4cm]end -| start) {#1};
+ }%
+ }
+ ]
+ \ifblank{#1}{%
+ \vspace{2\baselineskip}
+ }{}
+ \end{tcolorbox}
+ \end{minipage}%
+ \hspace{.1cm}%
+ \begin{minipage}[t]{0.79\textwidth}
+ \begin{tcolorbox}[%
+ enhanced,
+ colback=white,
+ colbacktitle=white,
+ colframe=\neoschool@globalcolor,
+ sharp corners,
+ boxrule=0.5pt,
+ height=2.5cm,
+ title={\smallstrut\textmd{\color{\neoschool@globalcolor}\neo@appreciation@text}},
+ center title
+ ]
+ \vspace{2\baselineskip}
+ \end{tcolorbox}
+ \end{minipage}
+ \vspace*{1em}
+}
+
+%% Skill Assessment Table
+%% ----------------------------------
+\newcommand{\competencies}[1]{%
+ \bigskip
+ % \colorlet{tempcolor}{\neoschool@titlecolor}
+ \colorlet{tempcolor}{\neoschool@globalcolor}
+ \ifneo@unicolor
+ \def\iconcolorA{\neoschool@titlecolor!5}%
+ \def\iconcolorB{\neoschool@titlecolor!5}%
+ \def\iconcolorC{\neoschool@titlecolor!5}%
+ \def\iconcolorD{\neoschool@titlecolor!5}%
+ \else
+ \def\iconcolorA{Tomato}%
+ \def\iconcolorB{orange}%
+ \def\iconcolorC{yellow}%
+ \def\iconcolorD{green}%
+ \fi
+ \begin{center}
+ \begin{tblr}{%
+ colspec={|[0.5pt,tempcolor]t{.5\linewidth}|[0.5pt,tempcolor]
+ Q[c,b]|[0.5pt,tempcolor]Q[c,b]|[0.5pt,tempcolor]
+ Q[c,b]|[0.5pt,tempcolor]Q[c,b]|[0.5pt,tempcolor]},
+ hlines = {0.5pt, tempcolor},
+ row{1} = {abovesep=5pt},
+ }
+ \SetCell{cmd=\bfseries} \raisebox{0.25em}{\neo@competencies} &
+ \dSadey[1.5][\iconcolorA] & \dNeutrey[1.5][\iconcolorB] &
+ \dSmiley[1.5][\iconcolorC] & \dChangey[1.5][\iconcolorD]{2} \\
+ #1 \\
+ \end{tblr}
+ \end{center}
+ \medskip
+}
+
+%% Tree and Graph Structure Support
+%% ----------------------------------
+% Forest settings for trees
+\forestset{
+ w/.style = {
+ edge label={
+ node[midway, fill=white, text=black] {$#1$}
+ }
+ }
+}
+
+\environbodyname\neotreebody
+\bracketset{action character=@}
+\NewEnviron{neotree}[1][]{%
+\forest
+for tree={%
+grow'=0,
+l=2.5cm,
+s sep=1.5cm,
+anchor=parent,
+math content,
+#1
+},
+[@\neotreebody]
+\endforest
+}
+
+% Graph settings (LuaTeX only)
+\ifluatex
+ \tikzset{%
+ graphs/simpleer/.style={%
+ nodes={%
+ draw,
+ circle,
+ fill=white,
+ text=black,
+ inner sep=1pt,
+ minimum size=2em
+ },
+ node distance=2.5cm
+ }
+ }
+
+ \newcommand{\neograph}[2][]{%
+ \tikz \graph[%
+ simpleer,
+ simple necklace layout,
+ edge quotes mid,
+ edges={%
+ rounded corners,
+ nodes={%
+ font=\scriptsize,
+ fill=white,
+ #1,
+ inner sep=1pt,
+ align=center
+ }
+ },
+ nodes={circle,draw}
+ ]{#2};
+ }
+\fi
+
+% Math Grid Environment
+\newcounter{neomathline}
+\newcounter{neomathcol}[neomathline]
+
+\newenvironment{mathgrid}[1]
+{%
+ \def\mcols{#1}%
+ \setcounter{neomathline}{0}%
+ \par\noindent%
+}
+{\bigskip}
+
+\newcommand{\neoline}{%
+ \ifnum\value{neomathcol}>0\\\fi%
+ \stepcounter{neomathline}%
+ \setcounter{neomathcol}{0}%
+}
+
+\newcommand{\neocol}[2][1]{%
+ \stepcounter{neomathcol}%
+ \ifnum\value{neomathcol}>1\quad\fi%
+ \begin{minipage}[t]{\dimexpr\linewidth * #1 / \mcols - 2\columnsep}
+ \setlength{\abovedisplayskip}{5pt}%
+ \setlength{\belowdisplayskip}{5pt}%
+ \begin{align*}
+ #2
+ \end{align*}
+ \end{minipage}%
+ \ignorespaces%
+}
+
+% Math color
+
+\ifneo@unicolor
+ \colorlet{mathColor}{\neoschool@headcolor}
+\else
+ \colorlet{mathColor}{Maroon}
+\fi
+
+\newcommand*{\mc}[2][mathColor]{{\color{#1}#2}}
+
+%% ==============================================================================
+%% Admonition Boxes - Multilingual Version
+%% ==============================================================================
+
+%% Color Definitions for Admonition Boxes
+\ifneo@unicolor
+ \colorlet{noteColor}{\neoschool@headcolor}
+ \colorlet{infoColor}{\neoschool@headcolor}
+ \colorlet{warningColor}{\neoschool@headcolor}
+ \colorlet{importantColor}{\neoschool@headcolor}
+ \colorlet{tipColor}{\neoschool@headcolor}
+ \colorlet{reminderColor}{\neoschool@headcolor}
+ \colorlet{summaryColor}{\neoschool@headcolor}
+ \colorlet{toolboxColor}{\neoschool@headcolor}
+\else\ifx\neoschool@theme\neo@cyprus
+ \colorlet{noteColor}{methodColor}
+ \colorlet{infoColor}{theoremColor}
+ \colorlet{warningColor}{titleColor}
+ \colorlet{importantColor}{definitionColor}
+ \colorlet{tipColor}{codeColor}
+ \colorlet{reminderColor}{applicationColor}
+ \colorlet{summaryColor}{remarkColor}
+ \colorlet{toolboxColor}{alternateColor}
+ \else\ifx\neoschool@theme\neo@kassio
+ \colorlet{noteColor}{definitionColor}
+ \colorlet{infoColor}{applicationColor}
+ \colorlet{warningColor}{methodColor}
+ \colorlet{importantColor}{theoremColor}
+ \colorlet{tipColor}{codeColor}
+ \colorlet{reminderColor}{titleColor}
+ \colorlet{summaryColor}{remarkColor}
+ \colorlet{toolboxColor}{alternateColor}
+ \else\ifx\neoschool@theme\neo@frost
+ \colorlet{noteColor}{methodColor}
+ \colorlet{infoColor}{definitionColor}
+ \colorlet{warningColor}{titleColor}
+ \colorlet{importantColor}{theoremColor}
+ \colorlet{tipColor}{applicationColor}
+ \colorlet{reminderColor}{codeColor}
+ \colorlet{summaryColor}{remarkColor}
+ \colorlet{toolboxColor}{alternateColor}
+ \else\ifx\neoschool@theme\neo@spring
+ \colorlet{noteColor}{methodColor}
+ \colorlet{infoColor}{theoremColor}
+ \colorlet{warningColor}{applicationColor}
+ \colorlet{importantColor}{titleColor}
+ \colorlet{tipColor}{definitionColor}
+ \colorlet{reminderColor}{codeColor}
+ \colorlet{summaryColor}{remarkColor}
+ \colorlet{toolboxColor}{alternateColor}
+ \else\ifx\neoschool@theme\neo@arbutus
+ \colorlet{noteColor}{codeColor}
+ \colorlet{infoColor}{titleColor}
+ \colorlet{warningColor}{methodColor}
+ \colorlet{importantColor}{theoremColor}
+ \colorlet{tipColor}{applicationColor}
+ \colorlet{reminderColor}{definitionColor}
+ \colorlet{summaryColor}{remarkColor}
+ \colorlet{toolboxColor}{alternateColor}
+ \else\ifx\neoschool@theme\neo@duo
+ \colorlet{noteColor}{titleColor}
+ \colorlet{infoColor}{applicationColor}
+ \colorlet{warningColor}{theoremColor}
+ \colorlet{importantColor}{methodColor}
+ \colorlet{tipColor}{definitionColor}
+ \colorlet{reminderColor}{codeColor}
+ \colorlet{summaryColor}{remarkColor}
+ \colorlet{toolboxColor}{alternateColor}
+ \else\ifx\neoschool@theme\neo@navy
+ \colorlet{noteColor}{titleColor}
+ \colorlet{infoColor}{definitionColor}
+ \colorlet{warningColor}{methodColor}
+ \colorlet{importantColor}{theoremColor}
+ \colorlet{tipColor}{applicationColor}
+ \colorlet{reminderColor}{codeColor}
+ \colorlet{summaryColor}{remarkColor}
+ \colorlet{toolboxColor}{alternateColor}
+ \else\ifx\neoschool@theme\neo@royal
+ \colorlet{noteColor}{titleColor}
+ \colorlet{infoColor}{definitionColor}
+ \colorlet{warningColor}{methodColor}
+ \colorlet{importantColor}{theoremColor}
+ \colorlet{tipColor}{applicationColor}
+ \colorlet{reminderColor}{codeColor}
+ \colorlet{summaryColor}{remarkColor}
+ \colorlet{toolboxColor}{alternateColor}
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi
+
+%% Multilingual Support
+\newcommand{\neo@admonition@note}{%
+ \ifneo@french
+ Note%
+ \else\ifneo@german
+ Notiz%
+ \else
+ Note%
+ \fi\fi
+}
+
+\newcommand{\neo@admonition@info}{%
+ \ifneo@french
+ Information%
+ \else\ifneo@german
+ Information%
+ \else
+ Information%
+ \fi\fi
+}
+
+\newcommand{\neo@admonition@warning}{%
+ \ifneo@french
+ Attention%
+ \else\ifneo@german
+ Achtung%
+ \else
+ Warning%
+ \fi\fi
+}
+
+\newcommand{\neo@admonition@important}{%
+ \ifneo@french
+ Important%
+ \else\ifneo@german
+ Wichtig%
+ \else
+ Important%
+ \fi\fi
+}
+
+\newcommand{\neo@admonition@tip}{%
+ \ifneo@french
+ Conseil%
+ \else\ifneo@german
+ Tipp%
+ \else
+ Tip%
+ \fi\fi
+}
+
+\newcommand{\neo@admonition@reminder}{%
+ \ifneo@french
+ À retenir%
+ \else\ifneo@german
+ Merken%
+ \else
+ Remember%
+ \fi\fi
+}
+
+\newcommand{\neo@admonition@summary}{%
+ \ifneo@french
+ Résumé%
+ \else\ifneo@german
+ Zusammenfassung%
+ \else
+ Summary%
+ \fi\fi
+}
+
+\newcommand{\neo@admonition@toolbox}{%
+ \ifneo@french
+ Boîte à outils%
+ \else\ifneo@german
+ Werkzeugkasten%
+ \else
+ Toolbox%
+ \fi\fi
+}
+
+%% Base Style Configuration
+\newtcolorbox{admonitionbase}[4][]{%
+ enhanced,
+ before skip=0.5\baselineskip,
+ after skip=.5\baselineskip,
+ colback=#2!5,
+ colframe=#2,
+ boxrule=1pt,
+ frame style={opacity=0.5},
+ \neo@framehidden,
+ arc=2pt,
+ left=10pt,
+ right=5pt,
+ top=3pt,
+ bottom=3pt,
+ breakable,
+ fonttitle=\sffamily\bfseries,
+ title={%
+ \hspace*{-2mm}%
+ \raisebox{-2pt}{\textcolor{#2}{\Large#3}}%
+ \hspace{5pt}%
+ \textcolor{#2}{\textbf{#4}}%
+ },
+ attach title to upper,
+ after title={\par\vspace{0.5em}},
+ #1
+}
+
+% Note Box
+\NewDocumentEnvironment{note}{O{\neo@admonition@note} O{\faEdit} +b}{%
+ \begin{admonitionbase}{noteColor}{#2}{#1}%
+ #3%
+ \end{admonitionbase}%
+}{}
+
+% Info Box
+\NewDocumentEnvironment{info}{O{\neo@admonition@info} O{\faInfoCircle} +b}{%
+ \begin{admonitionbase}{infoColor}{#2}{#1}%
+ #3%
+ \end{admonitionbase}%
+}{}
+
+% Warning Box
+\@ifundefined{warning}{%
+ \NewDocumentEnvironment{warning}{O{\neo@admonition@warning} O{\faExclamationTriangle} +b}{%
+ \begin{admonitionbase}{warningColor}{#2}{#1}%
+ #3%
+ \end{admonitionbase}%
+ }{}
+}{}
+
+% Important Box
+\NewDocumentEnvironment{important}{O{\neo@admonition@important} O{\faExclamationCircle} +b}{%
+ \begin{admonitionbase}{importantColor}{#2}{#1}%
+ #3%
+ \end{admonitionbase}%
+}{}
+
+% Tip Box
+\NewDocumentEnvironment{tip}{O{\neo@admonition@tip} O{\faLightbulb} +b}{%
+ \begin{admonitionbase}{tipColor}{#2}{#1}%
+ #3%
+ \end{admonitionbase}%
+}{}
+
+% Reminder Box
+\NewDocumentEnvironment{reminder}{O{\neo@admonition@reminder} O{\faBookmark} +b}{%
+ \begin{admonitionbase}{reminderColor}{#2}{#1}%
+ #3%
+ \end{admonitionbase}%
+}{}
+
+% Summary Box
+\NewDocumentEnvironment{summary}{O{\neo@admonition@summary} O{\faClipboardList} +b}{%
+ \begin{admonitionbase}{summaryColor}{#2}{#1}%
+ #3%
+ \end{admonitionbase}%
+}{}
+
+% Toolbox Box
+\NewDocumentEnvironment{toolbox}{O{\neo@admonition@toolbox} O{\faTools} +b}{%
+ \begin{admonitionbase}{toolboxColor}{#2}{#1}%
+ #3%
+ \end{admonitionbase}%
+}{}
+
+%% ==============================================================================
+%% Compact Mode Adjustments
+%% ==============================================================================
+
+\ifneo@compact
+
+ \neo@fullheaderfalse
+
+ \PassOptionsToPackage{singlespacing}{setspace}
+
+ \renewcommand{\arraystretch}{1.05}
+
+ \settasks{%
+ item-indent=2em,
+ column-sep=0.5em,
+ label-width=12pt,
+ label-offset=0.3em,
+ before-skip=0pt,
+ after-skip=0pt,
+ after-item-skip=0pt
+ }
+
+ \AtBeginDocument{
+ \setlength{\abovedisplayskip}{3pt}
+ \setlength{\belowdisplayskip}{3pt}
+ \setlength{\abovedisplayshortskip}{0pt}
+ \setlength{\belowdisplayshortskip}{0pt}
+ }
+
+ \setlength{\parindent}{1em}
+ \setlength{\parskip}{0pt plus 0.1pt}
+
+ \tcbset{
+ before skip=0.5\baselineskip,
+ after skip=0.5\baselineskip,
+ }
+
+ \RedeclareSectionCommand[
+ % beforeskip=-0.25\baselineskip,
+ afterskip=0.5\baselineskip
+ ]{section}
+
+ \RedeclareSectionCommand[
+ % beforeskip=-0.25\baselineskip,
+ afterskip=0.5\baselineskip
+ ]{subsection}
+
+ \setlength{\floatsep}{5pt plus 2pt minus 2pt}
+ \setlength{\textfloatsep}{5pt plus 2pt minus 2pt}
+ \setlength{\intextsep}{5pt plus 2pt minus 2pt}
+
+ \tcbset{
+ neo@shared@base/.style args={#1}{
+ common@base,
+ colframe=#1,
+ colback=\neo@getbackcolor,
+ boxrule=\neo@thmborder,
+ \neo@getframestyle,
+ before skip=0.5\baselineskip,
+ after skip=0.5\baselineskip,
+ top=3pt,
+ bottom=3pt,
+ left=5pt,
+ right=5pt
+ }
+ }
+
+ \tcbset{
+ neo@commonbox/.style={
+ enhanced,
+ top=3pt,
+ bottom=3pt,
+ left=2mm,
+ right=2mm,
+ coltitle=white,
+ fonttitle=\small\sffamily,
+ before skip=0.5\baselineskip,
+ after skip=0.5\baselineskip
+ }
+ }
+
+ \setlength{\titlespacing}{0.8\baselineskip}
+
+ \renewcommand{\createfulltitle}{%
+ \ifx\@subject\@empty\else
+ {\usekomafont{subject}{\@subject\par}}
+ \vspace{0.5\titlespacing}
+ \fi
+
+ {\noindent\usekomafont{title}{\@title\par}}
+
+ \ifx\@subtitle\@empty\else
+ \vspace{0.5\titlespacing}
+ {\noindent\usekomafont{subtitle}{\@subtitle\par}}
+ \fi
+
+ \ifx\@author\@empty\else
+ \vspace{0.5\titlespacing}
+ {\noindent\usekomafont{author}{\@author\par}}
+ \fi
+
+ \neo@titledecoration
+ \if@twocolumn\vspace{\titlespacing}\else\vspace{0.5\titlespacing}\fi
+ }
+
+ \renewcommand{\neo@titledecoration}{%
+ \ifneo@titlerule
+ \vspace{0.75\titlespacing}%
+ {\color{\neoschool@titlecolor}\rule{4em}{0.4pt}}
+ \else
+ \ifneo@titlemidrule
+ \vspace{0.75\titlespacing}%
+ {\color{\neoschool@titlecolor}\rule{0.4\linewidth}{0.4pt}}
+ \else
+ \ifneo@titlefullrule
+ \vspace{0.75\titlespacing}%
+ {\color{\neoschool@titlecolor}\rule{\linewidth}{0.4pt}}%
+ \vspace{-0.5\titlespacing}%
+ \else
+ \ifneo@titleornament
+ \vspace{0.75\titlespacing}%
+ {\color{\neoschool@titlecolor}\scalebox{1.5}[1.2]{\adforn{21}\,\adforn{11}\,\adforn{49}}}
+ \fi
+ \fi
+ \fi
+ \fi
+ \vspace*{.1\baselineskip}
+ }
+
+\fi
+
+%% ==============================================================================
+%% End of Class
+%% ==============================================================================
diff --git a/Master/texmf-dist/tex/latex/newcomputermodern/newcomputermodern.sty b/Master/texmf-dist/tex/latex/newcomputermodern/newcomputermodern.sty
index 6edd20dc1b2..3712f0b9db8 100644
--- a/Master/texmf-dist/tex/latex/newcomputermodern/newcomputermodern.sty
+++ b/Master/texmf-dist/tex/latex/newcomputermodern/newcomputermodern.sty
@@ -1,5 +1,5 @@
%\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{newcomputermodern}[v6.0.0 NewCM fonts by Antonis Tsolomitis]
+\ProvidesPackage{newcomputermodern}[v7.0.1 NewCM fonts by Antonis Tsolomitis]
\typeout{Loading NewCM fonts by Antonis Tsolomitis}
\RequirePackage{fontspec}
\RequirePackage{unicode-math}
@@ -8,6 +8,10 @@
\DeclareOption{regular}{\@olddefaulttrue}
\ProcessOptions\relax
+\newif\if@sansdefault
+\DeclareOption{sansdefault}{\@sansdefaulttrue}
+\ProcessOptions\relax
+
%Next command has been moved to fspolddefault.tex and
% fspdefault.tex
%\let\prosgegrammeni=\undefined %Babel compatibility
@@ -15,7 +19,11 @@
\if@olddefault
\input{fspolddefault.tex}
\else
+\if@sansdefault
+\input{fspsansdefault.tex}
+\else
\input{fspdefault.tex}
\fi
+\fi
\endinput
diff --git a/Master/texmf-dist/tex/latex/newpx/newpx.sty b/Master/texmf-dist/tex/latex/newpx/newpx.sty
index f26e2a5b540..f474c9ea1d4 100644
--- a/Master/texmf-dist/tex/latex/newpx/newpx.sty
+++ b/Master/texmf-dist/tex/latex/newpx/newpx.sty
@@ -2,8 +2,8 @@
%Package to simplify loading of newpxmath with a text font family such as newpxtext for all latex engines, or for newpxtext and an otf math package.
-\def\fileversion{1.536}
-\def\filedate{2024/02/09}
+\def\fileversion{1.539}
+\def\filedate{2025/01/24}
\ProvidesPackage{newpx}[%
\filedate\space v\fileversion (Michael Sharpe) latex and unicode latex support for newpxmath and newpxtext, or for newpxtext and an otf math package]
@@ -35,9 +35,11 @@
{% true branch
\xdef\newpx@helvratio{\CurrentOptionValue}
}{}}}
-%\newif\ifzpl@otfmath %\zpl@otfmathfalse % default is type1 math
+ \def\zpl@scaled{s*[\zpl@scale]}% used in fd files
+
+%\newif\ifnewpx@otfmath %\zpl@otfmathfalse % default is type1 math
\DeclareBoolOption{otfmath}% creates and inits \ifnewpx@otfmath
-%{\@nameuse{if#1}\iftutex\zpl@otfmathtrue\fi\fi}
+{\@nameuse{if#1}\iftutex\newpx@otfmathtrue\fi\fi}
\DeclareBoolOption{nohelv}% creates and inits \ifnewpx@nohelv
\DeclareBoolOption{nott}% creates and inits \ifnewpx@nott
@@ -68,7 +70,7 @@
%\newcommand*{\zpltext@sf}{}% not understood by libertinus-otf
-
+\ifnewpx@otfmath\else
\def\zpl@dfltTF{newpxtext} % the default text font package name
\def\zpl@text{\let\zpl@TF=\zpl@dfltTF % the text font package name
\def\zpl@MF{newpxmath}
@@ -77,7 +79,7 @@
\def\zpl@minfam{zpltlf} %roman font, tabular lining fd, used in math
}
\zpl@text % set the defaults%
-
+\fi
%\newcommand{\PassMathScale}{\ifzpl@iszero\gdef\zpltext@scale{\zplmath@scale}\gdef\zpltext@scaled{s*[\zpltext@scale]}\fi
%\PassOptionsToPackage{scaled=\zpltext@scale}{\zpl@TF}
%}
@@ -126,7 +128,7 @@
\usepackage{newpxmath} % options will be as passed from newpx
\usepackage{\zpl@TF} % should load tt and sans math before newpx
\fi
-
+\show\xxx
\endinput
diff --git a/Master/texmf-dist/tex/latex/newpx/newpxmath.sty b/Master/texmf-dist/tex/latex/newpx/newpxmath.sty
index 90af727111b..b1b0c30e7d0 100644
--- a/Master/texmf-dist/tex/latex/newpx/newpxmath.sty
+++ b/Master/texmf-dist/tex/latex/newpx/newpxmath.sty
@@ -1,4 +1,4 @@
-\NeedsTeXFormat{LaTeX2e}[1997/06/01]
+\NeedsTeXFormat{LaTeX2e}[2020/06/01]
%
% Based on Young Ryu's pxfonts.sty, v.3.2.1
% Text and math are now loaded in separate sty files---the text
@@ -11,8 +11,8 @@
% of glyph collisions.
% These modifications are by Michael Sharpe, msharpe at ucsd dot edu
-\def\fileversion{1.533}
-\def\filedate{2023/11/08}
+\def\fileversion{1.539}
+\def\filedate{2025/01/24}
\ProvidesPackage{newpxmath}
[\filedate\space v\fileversion]
@@ -2307,29 +2307,87 @@ $\m@th\hfil #2#3\hfil$\crcr}}}}
\DeclareMathSymbol{\px@UScrz}{\mathord}{letters}{247}
\DeclareMathSymbol{\px@UScrimath}{\mathord}{letters}{248}
\DeclareMathSymbol{\px@UScrjmath}{\mathord}{letters}{249}
+
+\edef\npx@scr{px@\ifpx@upscr U\fi Scr}
+\ExplSyntaxOn
+
+\tl_set:Nn \l_tmpa_tl {imath}
+\str_const:Nn \npx_imath_str {\l_tmpa_tl}
+\tl_set:Nn \l_tmpa_tl {jmath}
+\str_const:Nn \npx_jmath_str {\l_tmpa_tl}
+\str_new:N \npx_tmpa_str
+\str_new:N \npx_tmpb_str
+
+\NewDocumentCommand{\mathScr}{m}
+ {
+ \tl_map_function:nN { #1 } \newpx_mathscr:n
+ }
+
+\cs_new_protected:Nn \newpx_mathscr:n
+ {%\typeout{A}
+ \token_if_cs:NTF {#1}
+ {% #1 is a cs
+ %\typeout{B}
+ \tl_set:Nn \npx_tmpa_str { \cs_to_str:N #1 }
+ \tl_set:Nn \npx_tmpb_str { \npx@scr \cs_to_str:N #1 }
+ %\typeout{\npx_tmpb_str}
+ \str_case_e:nnTF { \npx_tmpa_str }
+ {
+ { imath }{}
+ { jmath }{}
+ }
+ {% matches imath or jmath
+ %\typeout{C}
+\cs_if_exist_use:cF { \npx_tmpb_str} {\msg_critical:nn {newpxmath}{Unknown cs: \npx_tmpb_str }
+ }}
+ {% #1 is a cs but not \imath nor \jmath--expand it
+ %\typeout{D}
+ \tl_set:Nn \npx_tmpb_str { \npx@scr #1 }
+\cs_if_exist_use:cF { \npx_tmpb_str } { \msg_critical:nn {newpxmath}{Unknown cs: \npx_tmpb_str }
+ }}}
+ {% #1 not a cs
+ %\typeout{E}
+\cs_if_exist_use:cF { \npx@scr #1 } { \msg_critical:nn {newpxmath}{Unknown cs: \npx@scr#1 }
+ }
+ }
+%\typeout{---}
+}
-\def\npx@@scr#1#2\@nil{%
- \ifiscseq{#1}{\ifcsdef{px@Scr\@xp\@gobble\string#1}{\csname px@Scr\@xp\@gobble\string#1\endcsname}{#1}}{%not a cs
- \csname px@Scr#1\endcsname}
- \ifblank{#2}{\relax}{\npx@@scr #2\@nil}}
-\DeclareRobustCommand*{\mathslscr}[1]{\npx@@scr #1\@nil}
-
-\def\npx@@uscr#1#2\@nil{%
- \ifiscseq{#1}{\ifcsdef{px@UScr\@xp\@gobble\string#1}{\csname px@UScr\@xp\@gobble\string#1\endcsname}{#1}}{%not a cs
- \csname px@UScr#1\endcsname}
- \ifblank{#2}{\relax}{\npx@@uscr #2\@nil}}
-\DeclareRobustCommand*{\mathuscr}[1]{\npx@@uscr #1\@nil}
+\ExplSyntaxOff
+\NewCommandCopy{\mathscr}{\mathScr}
\ifpx@upscr
- \let\mathscr=\mathuscr
\DeclareMathSymbol{\imathscr}{\mathord}{letters}{248}
\DeclareMathSymbol{\jmathscr}{\mathord}{letters}{249}
\else
- \let\mathscr=\mathslscr
\DeclareMathSymbol{\imathscr}{\mathord}{letters}{194}
\DeclareMathSymbol{\jmathscr}{\mathord}{letters}{195}
\fi
+
+
+%\def\npx@@scr#1#2\@nil{%
+% \ifiscseq{#1}{\ifcsdef{px@Scr\@xp\@gobble\string#1}{\csname px@Scr\@xp\@gobble\string#1\endcsname}{#1}}{%not a cs
+% \csname px@Scr#1\endcsname}
+% \ifblank{#2}{\relax}{\npx@@scr #2\@nil}}
+%\DeclareRobustCommand*{\mathslscr}[1]{\npx@@scr #1\@nil}
+%
+%\def\npx@@uscr#1#2\@nil{%
+% \ifiscseq{#1}{\ifcsdef{px@UScr\@xp\@gobble\string#1}{\csname px@UScr\@xp\@gobble\string#1\endcsname}{#1}}{%not a cs
+% \csname px@UScr#1\endcsname}
+% \ifblank{#2}{\relax}{\npx@@uscr #2\@nil}}
+%\DeclareRobustCommand*{\mathuscr}[1]{\npx@@uscr #1\@nil}
+%
+%\ifpx@upscr
+% \let\mathscr=\mathuscr
+% \DeclareMathSymbol{\imathscr}{\mathord}{letters}{248}
+% \DeclareMathSymbol{\jmathscr}{\mathord}{letters}{249}
+%\else
+% \let\mathscr=\mathslscr
+% \DeclareMathSymbol{\imathscr}{\mathord}{letters}{194}
+% \DeclareMathSymbol{\jmathscr}{\mathord}{letters}{195}
+%\fi
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Math Extension (npxex) Definition % largesymbols
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/Master/texmf-dist/tex/latex/newpx/newpxtext.sty b/Master/texmf-dist/tex/latex/newpx/newpxtext.sty
index 23be56df160..41c9609eebd 100644
--- a/Master/texmf-dist/tex/latex/newpx/newpxtext.sty
+++ b/Master/texmf-dist/tex/latex/newpx/newpxtext.sty
@@ -8,8 +8,8 @@
% Text is now directed to an extension of TeXGyrePagella rather than ppl.
% 1.5 is first version of newpxtext to support both [pdf]latex and unicode latex.
-\def\fileversion{1.536}
-\def\filedate{2024/02/09}
+\def\fileversion{1.539}
+\def\filedate{2025/01/24}
\ProvidesPackage{newpxtext}[%
\filedate\space v\fileversion (Michael Sharpe) latex and unicode latex support for TeXGyrePagellaX]
@@ -17,13 +17,11 @@
\RequirePackage[T1]{fontenc}
\RequirePackage{xcolor}
-\renewcommand*{\rmdefault}{zpltlf} % the default until end of preamble
-\renewcommand*{\familydefault}{\rmdefault}
+
\RequirePackage{xpatch} % need to patch \scshape
\RequirePackage{iftex,xkeyval,etoolbox,textcomp}
\RequirePackage{xstring,ifthen,scalefnt} % for \textfrac
\IfFileExists{mweights.sty}{\RequirePackage{mweights}}{}
-\DeclareEncodingSubset{TS1}{zpl*}{0}
%KOMA check
\newif\ifzpl@KOMA
@@ -36,10 +34,13 @@
% Engine check
\newif\ifzpl@otf
-\iftutex\zpl@otftrue
-%\else % [pdf]LaTeX
-% \zpl@otffalse
+\iftutex
+ \zpl@otftrue
+\else
+ \DeclareEncodingSubset{TS1}{zpl*}{0}
\fi
+\@ifundefined{newpx@otfmathtrue}{\newif\ifnewpx@otfmath}{}
+
\def\zpl@divide#1#2{\strip@pt\dimexpr 1pt * (\dimexpr #1pt\relax) / \dimexpr #2pt\relax\relax}
%%%%%%%%%%%%%%%%%%
\IfFileExists{xkeyval.sty}{
@@ -144,6 +145,9 @@
\DeclareOptionX{supspaced}{\zpl@supsflagtrue}%\DeclareOptionX{supscolor}{\zpl@supsflagtrue}%{\renewcommand*{\zplsups@color}{#1}}
% Other options
+\DeclareOptionX{otfmath}[true]{%
+\@nameuse{if#1}\newpx@otfmathtrue\fi
+}
\DeclareOptionX{defaultsups}[true]{%
\@nameuse{zpl@defaultsups#1}
}
@@ -213,6 +217,18 @@
\ifzpl@supsflag%
\PackageWarningNoLine{newpxtext}{sups options no longer handled---use superiors package (v2) instead.}\fi
+% otfmath beats no-math
+\ifnewpx@otfmath\zpl@nomathfalse\fi
+
+\iftutex\else
+\renewcommand*{\rmdefault}{minzpltlf} % the default until end of preamble
+\renewcommand*{\familydefault}{\rmdefault}
+\fi
+\ifzpl@nomath
+\renewcommand*{\rmdefault}{minzpltlf} % the default until end of preamble
+\renewcommand*{\familydefault}{\rmdefault}
+\fi
+
\ifthenelse{\not\equal{\sfdefault}{cmss}}%
{\zpl@helvfalse}{}
\ifthenelse{\not\equal{\ttdefault}{cmtt}}%
@@ -794,11 +810,11 @@
\DeclareTextFontCommand{%
\proportionalnums}{\fontfamily{zpl\zpl@figurestyle}\selectfont }
\re@DeclareTextSymbol{\textdollar}{OT1}{36}
-\fi
\DeclareFontFamilySubstitution{\encodingdefault}{zplLF}{zpllf}
\DeclareFontFamilySubstitution{\encodingdefault}{zplTLF}{zpltlf}
\DeclareFontFamilySubstitution{\encodingdefault}{zplOsF}{zplosf}
\DeclareFontFamilySubstitution{\encodingdefault}{zplTOsF}{zpltosf}
+\fi
\endinput
diff --git a/Master/texmf-dist/tex/latex/newpx/t1zpllf.fd b/Master/texmf-dist/tex/latex/newpx/t1zpllf.fd
index bfbacfb71df..2880135ffb2 100644
--- a/Master/texmf-dist/tex/latex/newpx/t1zpllf.fd
+++ b/Master/texmf-dist/tex/latex/newpx/t1zpllf.fd
@@ -1,4 +1,4 @@
-\ProvidesFile{t1zpllf.fd}[2021/05/25 v1.0 font definition file for T1/zpl/lf]
+\ProvidesFile{t1zplllf.fd}[2021/05/25 v1.0 font definition file for T1/zpl/lf]
\@ifundefined{ifzpl@sl}{\global\let\ifzpl@sl\iftrue}{}
@@ -34,5 +34,5 @@
\fi
\DeclareFontShape{T1}{zpllf}{b}{scsl}{<->ssub * zpllf/b/scit}{}
\DeclareFontShape{T1}{zpllf}{m}{scsl}{<->ssub * zpllf/m/scit}{}
-\DeclareFontShape{T1}{zpllf}{b}{scsl}{<->ssub * zpllf/b/scit}{}
+\DeclareFontShape{T1}{zpllf}{bx}{scsl}{<->ssub * zpllf/b/scit}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/newtx/newtx.sty b/Master/texmf-dist/tex/latex/newtx/newtx.sty
index 8d86b9aeaf4..248532224ac 100644
--- a/Master/texmf-dist/tex/latex/newtx/newtx.sty
+++ b/Master/texmf-dist/tex/latex/newtx/newtx.sty
@@ -1,8 +1,8 @@
\NeedsTeXFormat{LaTeX2e}
%Package to simplify loading of newtxmath with a text font family such as newtxtext for all latex engines, or for newtxtext and an otf math package.
-\def\fileversion{1.751}
-\def\filedate{2024/06/22}
+\def\fileversion{1.755}
+\def\filedate{2025/01/06}
\ProvidesPackage{newtx}[%
\filedate\space v\fileversion (Michael Sharpe) latex and unicode latex support for newtxmath and a supported text font family, or for newtxtext and an otf math package]
@@ -208,10 +208,10 @@ propmathfigs,curlybraces,cochrho,cochf,alty,alth,liby,nochvw}
\def\ntx@sc{BaskervilleF@scale}\def\ntx@TF{baskervillef}
\let\ntx@MF\ntx@TF\def\ntx@id{7}\def\ntx@minfam{minbaskervillef}\fi}
\DeclareOptionX{baskervaldx}[true]{\@nameuse{if#1}
- \def\ntx@sc{Baskervaldx@scale}\def\ntx@TF{baskervaldx}
+ \def\ntx@sc{Baskervaldx@scale}\def\ntx@TF{Baskervaldx}
\let\ntx@MF\ntx@TF\def\ntx@id{8}\def\ntx@minfam{minbaskervaldx}\fi}
\DeclareOptionX{Baskervaldx}[true]{\@nameuse{if#1}
- \def\ntx@sc{Baskervaldx@scale}\def\ntx@TF{baskervaldx}
+ \def\ntx@sc{Baskervaldx@scale}\def\ntx@TF{Baskervaldx}
\let\ntx@MF\ntx@TF\def\ntx@id{8}\def\ntx@minfam{minbaskervaldx}\fi}
%\DeclareOptionX{utopia}[true]{%
% \@nameuse{if#1}\def\ntx@TF{utopia}\let\ntx@MF\ntx@TF\def\ntx@id{0}\def\ntx@minfam{}\fi}
@@ -804,11 +804,8 @@ propmathfigs,curlybraces,cochrho,cochf,alty,alth,liby,nochvw}
%\fi
%\DeclareTextFontCommand{\textlf}{\liningnums}
%\fi % end ifcase
-\ifnum\ntx@id=16\relax
-\else % create \textsmsmde for other than minion and gelasio
-% We move the small font to the text baseline and scale it by \tx@sfrSC, for use only in the \textsfrac macro.
-\ifnum\ntx@id=4\relax
-\else
+\ifthenelse{\equal{}{\tx@sfrac}\OR\ntx@id=16\OR\ntx@id=4}{}{%
+%case \textsfrac defined, not minion nor gelasio
\ifnum\tx@debase=0
\newcommand*{\textsmde}[1]{%
\setbox0=\hbox{\scalebox\tx@sfrSC{\textde{#1}}}\box0}
@@ -816,13 +813,22 @@ propmathfigs,curlybraces,cochrho,cochf,alty,alth,liby,nochvw}
\newdimen\tx@u \newdimen\tx@v
\tx@u=-\tx@debase pt
\tx@toex{\strip@pt\tx@u}\tx@y=\tx@x
- %\showthe\tx@y
- \tx@v=\strip@pt\tx@y ex
+ \tx@v=\strip@pt\tx@y ex
\newcommand*{\textsmde}[1]{%
\setbox2=\hbox{\textde{#1}}%
\setbox1=\hbox{\raise \tx@v \box2}%
\setbox0=\hbox{\scalebox{\tx@sfrSC}{\box1}}\box0}
\fi %\ifnum\tx@debase=0
-\fi %\ifnum\ntx@id=4
-\fi %\ifnum\ntx@id=16
+}
+%\def\tx@mksmde{%
+%\ifnum\ntx@id=16\relax
+%\else % create \textsmsmde for other than minion and gelasio
+%% We move the small font to the text baseline and scale it by \tx@sfrSC, for use only in the \textsfrac macro.
+%\ifnum\ntx@id=4\relax
+%\else
+%\fi %\ifnum\ntx@id=4
+%\fi %\ifnum\ntx@id=16
+%}
+%\if X\tx@sfrac\tx@mksmde\fi
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/newtx/newtxmath.sty b/Master/texmf-dist/tex/latex/newtx/newtxmath.sty
index 83fc81cae33..5fbcf14b08c 100644
--- a/Master/texmf-dist/tex/latex/newtx/newtxmath.sty
+++ b/Master/texmf-dist/tex/latex/newtx/newtxmath.sty
@@ -11,8 +11,8 @@
% of glyph collisions.
% These modifications are by Michael Sharpe, msharpe at ucsd dot edu
-\def\fileversion{1.752}
-\def\filedate{2024/07/05}
+\def\fileversion{1.754}
+\def\filedate{2024/09/22}
\ProvidesPackage{newtxmath}[\filedate\space v\fileversion ]
\@ifundefined{newtxmathLoaded}{}{\endinput}
@@ -3106,8 +3106,8 @@ $\hfil\displaystyle{#1}\hfil$\crcr%
\DeclareMathSizes{5} {5.5} {5.5} {5.5}
\DeclareMathSizes{6} {6.5} {5.5} {5.5}
\DeclareMathSizes{7} {7.3} {5.5} {5.5}
-\DeclareMathSizes{8} {8} {6.2} {5.5}
-\DeclareMathSizes{9} {9} {7.3} {5.5}
+\DeclareMathSizes{8} {8} {6} {5.5}
+\DeclareMathSizes{9} {9} {6.6} {5.5}
\DeclareMathSizes{10} {10} {7.3} {5.5}
\DeclareMathSizes{10.95}{10.95}{8} {6.1}
\DeclareMathSizes{11} {10.95}{8} {6.1}
diff --git a/Master/texmf-dist/tex/latex/nfssext-cfr/nfssext-cfr-nfss.sty b/Master/texmf-dist/tex/latex/nfssext-cfr/nfssext-cfr-nfss.sty
new file mode 100644
index 00000000000..fea7e4de1e3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/nfssext-cfr/nfssext-cfr-nfss.sty
@@ -0,0 +1,554 @@
+%%
+%% This is file `nfssext-cfr-nfss.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% nfssext-cfr.dtx (with options: `sty-nfss')
+%% Additions and changes Copyright (C) 2008-2024 Clea F. Rees.
+%% Code from fontinstallationguide Copyright (C) 2002-2004 Philipp Lehman (see below)
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%
+%%
+%% The file nfssext-cfr-nfss.sty is a derived work under the terms of the LPPL.
+%% It is based on version 1.2 of nfssext.sty which is supplied with
+%% The Font Installation Guide by Philipp Lehman. A copy of The Font Installation Guide, including an
+%% unmodified version of nfssext.sty is available from
+%% https://tug.ctan.org/pkg/fontinstallationguide.
+%% nfssext.sty is part of the included archive figuide-examples.tar.gz
+%% which consists of examples and templates released under the LPPL.
+%% nfssext.sty is included in the files for tutorials 3, 5 and 6.
+%%
+%% The main modifications made to this file are described in nfssext-cfr.dtx.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{svn-prov}
+\ProvidesPackageSVN[\filebase-nfss.sty]{$Id: nfssext-cfr.dtx 10456 2024-10-03 01:19:12Z cfrees $}[v1.1 \revinfo{} specially mangled by cfr; based on 2003/03/14 v1.2 Experimental NFSS Extensions; for old NFSS]
+\DefineFileInfoSVN
+\RequirePackage{ifthen}
+\newcommand*{\exfs@tempa}{}
+\newcommand*{\exfs@tempb}{}
+\newcommand*{\exfs@tempf}{}
+\newcommand*{\exfs@try@family}[2][]{%
+ \let\exfs@tempa\relax
+ \begingroup
+ \fontfamily{#2}\try@load@fontshape
+ \expandafter\ifx\csname\curr@fontshape\endcsname\relax
+ \edef\exfs@tempa{#1}%
+ \ifx\exfs@tempa\@empty
+ \PackageWarning{nfssext}{%
+ Font family '\f@encoding/#2' not available\MessageBreak
+ Ignoring font switch}%
+ \else
+ \PackageInfo{nfssext}{%
+ Font family '\f@encoding/#2' not available\MessageBreak
+ Font family '\f@encoding/#1' tried instead}%
+ \exfs@try@family{#1}%
+ \fi
+ \else
+ \gdef\exfs@tempa{\fontfamily{#2}\selectfont}%
+ \fi
+ \endgroup
+ \exfs@tempa}
+\newcommand*{\exfs@try@series}[2][]{%
+ \let\exfs@tempa\relax
+ \begingroup
+ \fontseries{#2}\try@load@fontshape
+ \expandafter\ifx\csname\curr@fontshape\endcsname\relax
+ \edef\exfs@tempa{#1}%
+ \ifx\exfs@tempa\@empty
+ \PackageWarning{nfssext-cfr}{%
+ Font series '\f@encoding/\f@family/#2' not available\MessageBreak
+ Ignoring font switch}%
+ \else
+ \PackageInfo{nfssext-cfr}{%
+ Font family '\f@encoding/\f@family/#2' not available\MessageBreak
+ Font family '\f@encoding/\f@family/#1' tried instead}%
+ \exfs@try@series{#1}%
+ \fi
+ \else
+ \gdef\exfs@tempa{\fontseries{#2}\selectfont}%
+ \fi
+ \endgroup
+ \exfs@tempa
+}
+\def\exfs@get@base#1#2#3#4\@nil{#1#2#3}
+\def\exfs@get@variants#1#2#3#4\@nil{#4}
+\def\exfs@next#1#2\@nil{#1}
+\def\exfs@shift#1#2\@nil{#2}
+\def\exfs@first#1#2\@nil{#1}
+\def\exfs@part#1#2\@nil{#2}
+\def\exfs@second#1#2#3\@nil{#2}
+\DeclareRobustCommand{\lnstyle}{%
+ \not@math@alphabet\lnstyle\relax
+ \exfs@try@family[\expandafter\exfs@get@base\f@family\@nil]%
+ {\expandafter\exfs@get@base\f@family\@nil x}%
+}
+\DeclareRobustCommand{\osstyle}{%
+ \not@math@alphabet\osstyle\relax
+ \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil j}}
+\DeclareRobustCommand{\instyle}{%
+ \not@math@alphabet\instyle\relax
+ \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil 0}}
+\DeclareRobustCommand{\sustyle}{%
+ \not@math@alphabet\sustyle\relax
+ \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil 1}}
+\DeclareRobustCommand{\swstyle}{%
+ \not@math@alphabet\swstyle\relax
+ \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil w}}
+\newcommand*\exfs@merge@families[1]{%
+ \edef\exfs@tempf{#1}%
+ \edef\tempa{\expandafter\exfs@get@variants\f@family\@nil}%
+ \edef\tempo{2j}%
+ \let\exfs@tempq\@empty
+ \def\exfs@tempg{}%
+ \newif\ifadded
+ \addedfalse
+ \ifx\tempa\@empty
+ \edef\exfs@tempq{\exfs@tempf}%
+ \addedtrue
+ \else
+ \gdef\set{0,1,2,a,d,e,f,h,j,l,p,q,s,t,v,w}% these are the variants to consider - the order here and in the font name is crucial
+ \ifx\tempo\exfs@tempf
+ \@for \xx:=\set \do {%
+ \ifx\tempa\@empty
+ \let\exfs@tempn\@empty
+ \else
+ \edef\exfs@tempn{\expandafter\exfs@next\tempa\@nil}%
+ \fi
+ \edef\tempt{2}%
+ \edef\tempj{j}%
+ \ifx\exfs@tempn\tempt
+ \edef\tempa{\expandafter\exfs@shift\tempa\@nil}%
+ \fi
+ \ifx\exfs@tempn\tempj % if the next variant is j, ignore it
+ \edef\tempa{\expandafter\exfs@shift\tempa\@nil}%
+ \fi
+ \ifx\tempt\xx
+ \edef\exfs@tempg{\exfs@tempg\xx}%
+ \else
+ \ifx\tempj\xx % if the current value is j, we're done
+ \edef\exfs@tempq{\exfs@tempg\xx\tempa}%
+ \let\tempa\@empty
+ \addedtrue
+ \else
+ \ifx\xx\exfs@tempn
+ \edef\exfs@tempg{\exfs@tempg\xx}%
+ \edef\tempa{\expandafter\exfs@shift\tempa\@nil}%
+ \fi
+ \fi
+ \fi
+ }%
+ \else
+ \@for \xx:=\set \do {%
+ \ifx\tempa\@empty
+ \ifadded
+ \else
+ \edef\exfs@tempq{\exfs@tempg\exfs@tempf}%
+ \addedtrue
+ \fi
+ \else
+ \edef\exfs@tempn{\expandafter\exfs@next\tempa\@nil}%
+ \ifx\exfs@tempn\exfs@tempf
+ \edef\exfs@tempq{\exfs@tempg\tempa}%
+ \addedtrue
+ \let\tempa\@empty
+ \else
+ \ifx\exfs@tempf\xx
+ \edef\exfs@tempq{\exfs@tempg\xx\tempa}%
+ \addedtrue
+ \let\tempa\@empty
+ \else
+ \ifx\exfs@tempn\xx
+ \edef\exfs@tempg{\exfs@tempg\xx}%
+ \edef\tempa{\expandafter\exfs@shift\tempa\@nil}%
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ \fi
+ \fi
+ \ifx\exfs@tempq\@empty
+ \PackageError{nfssext-cfr}{Something is wrong here. Ignoring font switching command.}{}%
+ \else
+ \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil \exfs@tempq}%
+ \fi
+}
+\DeclareRobustCommand{\pstyle}{% proportional figures
+ \not@math@alphabet\pstyle\relax
+ \exfs@merge@families{2}}
+\DeclareRobustCommand{\tistyle}{% titling/display
+ \not@math@alphabet\tistyle\relax
+ \exfs@merge@families{d}}
+\DeclareRobustCommand{\ostyle}{% oldstyle figures (cf. original osstyle above)
+ \not@math@alphabet\ostyle\relax
+ \exfs@merge@families{j}}
+\DeclareRobustCommand{\postyle}{%
+ \not@math@alphabet\postyle\relax
+ \exfs@merge@families{2j}}
+\DeclareRobustCommand{\ltstyle}{%
+ \not@math@alphabet\ltstyle\relax
+ \exfs@merge@families{l}}
+\DeclareRobustCommand{\ofstyle}{%
+ \not@math@alphabet\ofstyle\relax
+ \exfs@merge@families{l}}
+\DeclareRobustCommand{\altstyle}{% alternative style
+ \not@math@alphabet\altstyle\relax
+ \exfs@merge@families{a}}
+\DeclareRobustCommand{\regstyle}{% ``regular'' style
+ \not@math@alphabet\regstyle\relax
+ \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil}}
+\DeclareRobustCommand{\embossstyle}{%
+ \not@math@alphabet\embossstyle\relax
+ \exfs@merge@families{e}}
+\DeclareRobustCommand{\ornamentalstyle}{% intended primarily for decorative initial fonts etc.
+ \not@math@alphabet\ornamentalstyle\relax
+ \exfs@merge@families{p}}
+\DeclareRobustCommand{\qtstyle}{% quotation style (assumes sans)
+ \not@math@alphabet\qtstyle\relax
+ \sffamily
+ \exfs@merge@families{q}}
+\DeclareRobustCommand{\shstyle}{%
+ \not@math@alphabet\shstyle\relax
+ \exfs@merge@families{h}}
+\DeclareRobustCommand{\swashstyle}{% an attempt to improve on \swstyle
+ \not@math@alphabet\swashstyle\relax
+ \exfs@merge@families{w}}
+\DeclareRobustCommand{\tmstyle}{% monowidth typewriter
+ \not@math@alphabet\tmstyle\relax
+ \exfs@unmerge@families{s}%
+ \exfs@unmerge@families{v}%
+ \exfs@merge@families{t}}
+\DeclareRobustCommand{\tvstyle}{% variable width typewriter
+ \not@math@alphabet\tvstyle\relax
+ \exfs@unmerge@families{s}%
+ \exfs@unmerge@families{t}%
+ \exfs@merge@families{v}}
+\newcounter{taken}%
+\newcommand*\exfs@unmerge@families[1]{%
+ \edef\exfs@tempf{#1}%
+ \edef\tempa{\expandafter\exfs@get@variants\f@family\@nil}%
+ \let\exfs@tempq\@empty
+ \edef\exfs@tempg{}%
+ \setcounter{taken}{0}%
+ \ifx\tempa\@empty
+ \edef\exfs@tempq{}%
+ \else
+ \whiledo{\value{taken}<1}{%
+ \edef\exfs@tempn{\expandafter\exfs@next\tempa\@nil}%
+ \ifx\exfs@tempf\exfs@tempn
+ \edef\tempa{\expandafter\exfs@shift\tempa\@nil}%
+ \edef\exfs@tempq{\exfs@tempg\tempa}%
+ \stepcounter{taken}%
+ \else
+ \edef\exfs@tempg{\exfs@tempg\exfs@tempn}%
+ \edef\tempa{\expandafter\exfs@shift\tempa\@nil}%
+ \ifx\tempa\@empty% if there are no variants left, we're done
+ \edef\exfs@tempq{\exfs@tempg}%
+ \stepcounter{taken}%
+ \fi
+ \fi
+ }%
+ \fi
+ \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil \exfs@tempq}%
+}
+\DeclareRobustCommand{\tstyle}{% tabular figures
+ \not@math@alphabet\tstyle\relax
+ \exfs@unmerge@families{2}}
+\DeclareRobustCommand{\lstyle}{% lining figures (cf. command above)
+ \not@math@alphabet\lstyle\relax
+ \exfs@unmerge@families{j}}
+\DeclareRobustCommand{\tlstyle}{%
+ \lstyle\tstyle}
+\DeclareRobustCommand{\plstyle}{%
+ \lstyle\pstyle}
+\DeclareRobustCommand{\tostyle}{%
+ \ostyle\tstyle}
+\newcommand*{\sidefault}{si}
+\DeclareRobustCommand{\sishape}{%
+ \not@math@alphabet\sishape\relax
+ \fontshape\sidefault\selectfont}
+\newcommand*{\oldefault}{ol}
+\DeclareRobustCommand{\olshape}{%
+ \not@math@alphabet\olshape\relax
+ \fontshape\oldefault\selectfont}
+\newcommand*{\scoldefault}{scol}
+\DeclareRobustCommand{\scolshape}{%
+ \not@math@alphabet\scolshape\relax
+ \fontshape\scoldefault\selectfont}
+\newcommand*{\udefault}{u}
+\DeclareRobustCommand{\ushape}{%
+ \not@math@alphabet\ushape\relax
+ \fontshape\udefault\selectfont}
+\newcommand*{\scudefault}{su}
+\DeclareRobustCommand{\scushape}{%
+ \not@math@alphabet\scushape\relax
+ \fontshape\scudefault\selectfont}
+\newcommand*{\uidefault}{ui}
+\DeclareRobustCommand{\uishape}{%
+ \not@math@alphabet\uishape\relax
+ \fontshape\uidefault\selectfont}
+\newcommand*{\ridefault}{ri}
+\DeclareRobustCommand{\rishape}{%
+ \not@math@alphabet\rishape\relax
+ \fontshape\ridefault\selectfont}
+\newcommand*{\exfs@merge@shape}[3]{%
+ \edef\exfs@tempa{#1}%
+ \edef\exfs@tempb{#2}%
+ \ifx\f@shape\exfs@tempb
+ \expandafter\ifx\csname\f@encoding/\f@family/\f@series/#3\endcsname\relax
+ \else
+ \edef\exfs@tempa{#3}%
+ \fi
+ \fi
+ \fontshape{\exfs@tempa}\selectfont}
+\newcommand*{\exfs@font@width}{%
+ \edef\exfs@tempf{\expandafter\exfs@first\f@series\@nil }%
+ \edef\exfs@temppart{\expandafter\exfs@part\f@series\@nil }%
+ \ifx\exfs@temppart\@empty
+ \def\exfs@width{}
+ \else
+ \edef\exfs@temps{\expandafter\exfs@second\f@series\@nil }%
+ \ifx\exfs@temps{b}
+ \edef\exfs@width{\expandafter\exfs@part\exfs@temps\@nil }%
+ \else
+ \ifx\exfs@temps{l}
+ \edef\exfs@width{\expandafter\exfs@part\exfs@temps\@nil }%
+ \else
+ \edef\exfs@width{\exfs@temppart}%
+ \fi
+ \fi
+ \fi
+ \exfs@width
+}
+\newcommand*{\exfs@merge@width}[1]{%
+ \edef\exfs@temph{#1}%
+ \edef\exfs@tempf{\expandafter\exfs@first\f@series\@nil }%
+ \edef\exfs@temppart{\expandafter\exfs@part\f@series\@nil }%
+ \def\tempb{b}%
+ \def\templ{l}%
+ \ifx\exfs@temppart\@empty
+ \def\exfs@series{\expandafter\exfs@tempf\exfs@temph}%
+ \else
+ \edef\exfs@temps{\expandafter\exfs@second\f@series\@nil }%
+ \ifx\exfs@temps\tempb
+ \def\exfs@series{\expandafter\exfs@tempf\exfs@temps\exfs@temph}%
+ \else
+ \ifx\exfs@temps\templ
+ \def\exfs@series{\expandafter\exfs@tempf\exfs@temps\exfs@temph}%
+ \else
+ \def\exfs@series{\expandafter\exfs@tempf\exfs@temph}%
+ \fi
+ \fi
+ \fi
+ \exfs@try@series{\exfs@series}%
+}
+\newcommand*{\exfs@unmerge@width}{%
+ \edef\exfs@tempf{\expandafter\exfs@first\f@series\@nil }%
+ \edef\exfs@temppart{\expandafter\exfs@part\f@series\@nil }%
+ \def\tempb{b}%
+ \def\templ{l}%
+ \ifx\exfs@temppart\@empty
+ \def\exfs@series{\expandafter\exfs@tempf}%
+ \else
+ \edef\exfs@temps{\expandafter\exfs@second\f@series\@nil }%
+ \ifx\exfs@temps\tempb
+ \def\exfs@series{\expandafter\exfs@tempf\exfs@temps}%
+ \else
+ \ifx\exfs@temps\templ
+ \def\exfs@series{\expandafter\exfs@tempf\exfs@temps}%
+ \else
+ \def\exfs@series{\expandafter\exfs@tempf}%
+ \fi
+ \fi
+ \fi
+ \exfs@try@series{\exfs@series}%
+}
+\DeclareRobustCommand{\regwidth}{%
+ \not@math@alphabet\regwidth\relax
+ \exfs@unmerge@width}
+\newcommand*{\nwdefault}{c}
+\DeclareRobustCommand{\nwwidth}{%
+ \not@math@alphabet\nwwidth\relax
+ \exfs@merge@width{\nwdefault}}
+\newcommand*{\cddefault}{c}
+\DeclareRobustCommand{\cdwidth}{%
+ \not@math@alphabet\cdwidth\relax
+ \exfs@merge@width{\cddefault}}
+\newcommand*{\ecdefault}{ec}
+\DeclareRobustCommand{\ecwidth}{%
+ \not@math@alphabet\ecwidth\relax
+ \exfs@merge@width{\ecdefault}}
+\newcommand*{\ucdefault}{uc}
+\DeclareRobustCommand{\ucwidth}{%
+ \not@math@alphabet\ucwidth\relax
+ \exfs@merge@width{\ucdefault}}
+\newcommand*{\etdefault}{x}
+\DeclareRobustCommand{\etwidth}{%
+ \not@math@alphabet\etwidth\relax
+ \exfs@merge@width{\etdefault}}
+\newcommand*{\epdefault}{x}
+\DeclareRobustCommand{\epwidth}{%
+ \not@math@alphabet\epwidth\relax
+ \exfs@merge@width{\epdefault}}
+\newcommand*{\exdefault}{ex}
+\DeclareRobustCommand{\exwidth}{%
+ \not@math@alphabet\exwidth\relax
+ \exfs@merge@width{\exdefault}}
+\newcommand*{\uxdefault}{ux}
+\DeclareRobustCommand{\uxwidth}{%
+ \not@math@alphabet\uxwidth\relax
+ \exfs@merge@width{\uxdefault}}
+\newcommand*{\exfs@merge@weight}[1]{%
+ \edef\exfs@tempg{#1}%
+ \edef\exfs@tempf{\expandafter\exfs@first\f@series\@nil }%
+ \edef\exfs@temppart{\expandafter\exfs@part\f@series\@nil }%
+ \def\templ{l}%
+ \def\tempb{b}%
+ \ifx\exfs@temppart\@empty
+ \def\exfs@series{\expandafter\exfs@tempg}%
+ \else
+ \edef\exfs@temps{\expandafter\exfs@second\f@series\@nil }%
+ \edef\exfs@tempw{\expandafter\exfs@part\exfs@temps\@nil }%
+ \ifx\exfs@temps\tempb
+ \def\exfs@series{\expandafter\exfs@tempg\exfs@tempw}%
+ \else
+ \ifx\exfs@temps\templ
+ \def\exfs@series{\expandafter\exfs@tempg\exfs@tempw}%
+ \else
+ \def\exfs@series{\expandafter\exfs@tempg\exfs@temppart}%
+ \fi
+ \fi
+ \fi
+ \ifx\exfs@tempg\exfs@series
+ \exfs@try@series{\exfs@series}%
+ \else
+ \exfs@try@series[\exfs@tempg]{\exfs@series}% assume user wants to change weight even if this changes back to the default width
+ \fi
+}
+\newcommand*{\mbdefault}{mb}
+\DeclareRobustCommand{\mbweight}{%
+ \not@math@alphabet\mbweight\relax
+ \exfs@merge@weight{\mbdefault}}
+\newcommand*{\dbdefault}{db}
+\DeclareRobustCommand{\dbweight}{%
+ \not@math@alphabet\dbweight\relax
+ \exfs@merge@weight{\dbdefault}}
+\newcommand*{\sbdefault}{sb}
+\DeclareRobustCommand{\sbweight}{%
+ \not@math@alphabet\sbweight\relax
+ \exfs@merge@weight{\sbdefault}}
+\newcommand*{\ebdefault}{eb}
+\DeclareRobustCommand{\ebweight}{%
+ \not@math@alphabet\ebweight\relax
+ \exfs@merge@weight{\ebdefault}}
+\newcommand*{\ubdefault}{ub}
+\DeclareRobustCommand{\ubweight}{%
+ \not@math@alphabet\ubweight\relax
+ \exfs@merge@weight{\ubdefault}}
+\newcommand*{\lgdefault}{l}
+\DeclareRobustCommand{\lgweight}{%
+ \not@math@alphabet\lgweight\relax
+ \exfs@merge@weight{\lgdefault}}
+\newcommand*{\eldefault}{el}
+\DeclareRobustCommand{\elweight}{%
+ \not@math@alphabet\elweight\relax
+ \exfs@merge@weight{\eldefault}}
+\newcommand*{\uldefault}{ul}
+\DeclareRobustCommand{\ulweight}{%
+ \not@math@alphabet\ulweight\relax
+ \exfs@merge@weight{\uldefault}}
+\DeclareRobustCommand{\itshape}{%
+ \not@math@alphabet\itshape\mathit
+ \exfs@merge@shape{\itdefault}{\scdefault}{\sidefault}}
+\DeclareRobustCommand{\scshape}{%
+ \not@math@alphabet\scshape\relax
+ \def\tempu{u}%
+ \def\tempo{ol}%
+ \ifx\f@shape\tempu
+ \exfs@merge@shape{\scdefault}{\udefault}{\scudefault}%
+ \else
+ \ifx\f@shape\tempo
+\exfs@merge@shape{\scdefault}{\oldefault}{\scoldefault}%
+\else
+ \exfs@merge@shape{\scdefault}{\itdefault}{\sidefault}%
+\fi
+ \fi
+}
+\DeclareRobustCommand{\upshape}{%
+ \not@math@alphabet\upshape\relax
+ \exfs@merge@shape{\updefault}{\sidefault}{\scdefault}}
+\DeclareRobustCommand{\dfshape}{%
+ \not@math@alphabet\dfshape\relax
+ \fontshape\shapedefault\selectfont}
+\newcommand*{\swshapedefault}{\itdefault}
+\DeclareRobustCommand{\swshape}{%
+ \not@math@alphabet\swshape\relax
+ \swstyle\fontshape\swshapedefault\selectfont}
+\DeclareTextFontCommand{\textln}{\lnstyle}
+\DeclareTextFontCommand{\textos}{\osstyle}
+\DeclareTextFontCommand{\textin}{\instyle}
+\DeclareTextFontCommand{\textsu}{\sustyle}
+\DeclareTextFontCommand{\textsi}{\sishape}
+\DeclareTextFontCommand{\textdf}{\dfshape}
+\DeclareTextFontCommand{\textsw}{\swshape}
+\DeclareTextFontCommand{\textti}{\tistyle}
+\DeclareTextFontCommand{\textlt}{\ltstyle}
+\DeclareTextFontCommand{\textof}{\ofstyle} % open-face (or outline or blank) style
+\DeclareTextFontCommand{\textalt}{\altstyle} % alternative style
+\DeclareTextFontCommand{\textreg}{\regstyle} % ``regular'' style
+\DeclareTextFontCommand{\emboss}{\embossstyle}
+\DeclareTextFontCommand{\textorn}{\ornamentalstyle} % intended primarily for decorative initials etc.
+\DeclareTextFontCommand{\textqt}{\qtstyle}
+\DeclareTextFontCommand{\textsh}{\shstyle} % shadowed style
+\DeclareTextFontCommand{\texttm}{\tmstyle}
+\DeclareTextFontCommand{\texttv}{\tvstyle}
+\DeclareTextFontCommand{\textl}{\lstyle}
+\DeclareTextFontCommand{\texto}{\ostyle}
+\DeclareTextFontCommand{\textp}{\pstyle}
+\DeclareTextFontCommand{\textt}{\tstyle}
+\DeclareTextFontCommand{\textpl}{\plstyle}
+\DeclareTextFontCommand{\textpo}{\postyle}
+\DeclareTextFontCommand{\texttl}{\tlstyle}
+\DeclareTextFontCommand{\textto}{\tostyle}
+\DeclareTextFontCommand{\textol}{\olshape} % outline
+\DeclareTextFontCommand{\textswash}{\swashstyle} % an attempt to improve on \textsw
+\DeclareTextFontCommand{\textu}{\ushape}
+\DeclareTextFontCommand{\textscu}{\scushape}
+\DeclareTextFontCommand{\textui}{\uishape} % upright italic
+\DeclareTextFontCommand{\textri}{\rishape} % reverse italic
+\DeclareTextFontCommand{\textnw}{\nwwidth}
+\DeclareTextFontCommand{\textcd}{\cdwidth}
+\DeclareTextFontCommand{\textec}{\ecwidth}
+\DeclareTextFontCommand{\textuc}{\ucwidth}
+\DeclareTextFontCommand{\textet}{\etwidth}
+\DeclareTextFontCommand{\textep}{\epwidth}
+\DeclareTextFontCommand{\textex}{\exwidth}
+\DeclareTextFontCommand{\textux}{\uxwidth}
+\DeclareTextFontCommand{\textrw}{\regwidth}
+\DeclareTextFontCommand{\textmb}{\mbweight}
+\DeclareTextFontCommand{\textdb}{\dbweight}
+\DeclareTextFontCommand{\textsb}{\sbweight}
+\DeclareTextFontCommand{\texteb}{\ebweight}
+\DeclareTextFontCommand{\textub}{\ubweight}
+\DeclareTextFontCommand{\textlg}{\lgweight}
+\DeclareTextFontCommand{\textel}{\elweight}
+\DeclareTextFontCommand{\textul}{\ulweight}
+\endinput
+%%
+%% End of file `nfssext-cfr-nfss.sty'.
diff --git a/Master/texmf-dist/tex/latex/nfssext-cfr/nfssext-cfr-nnfss.sty b/Master/texmf-dist/tex/latex/nfssext-cfr/nfssext-cfr-nnfss.sty
new file mode 100644
index 00000000000..3f99a664412
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/nfssext-cfr/nfssext-cfr-nnfss.sty
@@ -0,0 +1,721 @@
+%%
+%% This is file `nfssext-cfr-nnfss.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% nfssext-cfr.dtx (with options: `sty-nnfss')
+%% Additions and changes Copyright (C) 2008-2024 Clea F. Rees.
+%% Code from fontinstallationguide Copyright (C) 2002-2004 Philipp Lehman (see below)
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%
+%%
+%% The file nfssext-cfr-nnfss.sty is a derived work under the terms of the LPPL.
+%% It is based on version 1.2 of nfssext.sty which is supplied with
+%% The Font Installation Guide by Philipp Lehman. A copy of The Font Installation Guide, including an
+%% unmodified version of nfssext.sty is available from
+%% https://tug.ctan.org/pkg/fontinstallationguide.
+%% nfssext.sty is part of the included archive figuide-examples.tar.gz
+%% which consists of examples and templates released under the LPPL.
+%% nfssext.sty is included in the files for tutorials 3, 5 and 6.
+%%
+%% The main modifications made to this file are described in nfssext-cfr.dtx.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{svn-prov}
+\ProvidesPackageSVN[\filebase-nnfss.sty]{$Id: nfssext-cfr.dtx 10456 2024-10-03 01:19:12Z cfrees $}[v1.1 \revinfo{} extended New New Font Selection Scheme (NNFSS) based on 2003/03/14 v1.2 Experimental NFSS Extensions]
+\DefineFileInfoSVN
+\newcommand*{\exfs@tempa}{}
+\newcommand*{\exfs@tempb}{}
+\newcommand*{\exfs@tempf}{}
+\ExplSyntaxOn
+\hook_gput_code:nnn { cmd/wrong@fontshape/before } { . }
+{
+ \global\expandafter\expandafter\expandafter\let
+ \expandafter \csname exfs@fake@ \curr@fontshape\endcsname\relax
+}
+\ExplSyntaxOff
+\newcommand \exfs@info[2][nfssext-cfr]{%
+ \ifexfs@debug
+ \PackageWarning{#1}{Info: #2}%
+ \else
+ \PackageInfo{#1}{#2}%
+ \fi
+}
+\newcommand* \exfs@normalise[1]{%
+ \ifcsname exfs@fake@\curr@fontshape\endcsname
+ \exfs@info{Current font '\curr@fontshape' is fake.\MessageBreak
+ Normalising}%
+ \expandafter\csname f@#1\endcsname{\csname #1default\endcsname}\selectfont
+ \ifcsname exfs@fake@\curr@fontshape\endcsname
+ \f@series{\seriesdefault}\f@shape{\shapedefault}\selectfont
+ \ifcsname exfs@fake@\curr@fontshape\endcsname
+ \normalfont
+ \ifcsname exfs@fake@\curr@fontshape\endcsname
+ \PackageError{nfssext-cfr}{Default font appears to be fake!\MessageBreak
+ Switch \textbackslash normalfont yielded '\curr@fontshape'}
+ {This is highly unlikely, so the bug is probably in the phenomena\MessageBreak
+ rather than the noumena}%
+ \fi
+ \fi
+ \fi
+ \exfs@info{Normalised to '\curr@fontshape'}%
+ \else
+ \exfs@info{Current font '\curr@fontshape' appears real}%
+ \fi
+}
+\newcommand*{\exfs@try@family}[2][]{%
+ \let\exfs@tempa\relax
+ \begingroup % fel arall, bydd latex yn credu bod y family yn go iawn beth bynnag
+ \exfs@info{Trying Font family '\f@encoding/#2'}%
+ \fontfamily{#2}\try@load@fontshape
+ \expandafter\ifx\csname\curr@fontshape\endcsname\relax
+ \edef\exfs@tempa{#1}%
+ \ifx\exfs@tempa\@empty
+ \PackageWarning{nfssext}{%
+ Font family '\f@encoding/#2' not available\MessageBreak
+ Ignoring font switch}%
+ \else
+ \exfs@info[nfssext]{%
+ Font family '\f@encoding/#2' not available\MessageBreak
+ Font family '\f@encoding/#1' tried instead}%
+ \exfs@try@family{#1}%
+ \fi
+ \else
+ \exfs@info{Loading font family '\f@encoding/#2'}%
+ \gdef\exfs@tempa{\fontfamily{#2}\selectfont}%
+ \fi
+ \endgroup
+ \exfs@tempa}
+\newcommand*{\exfs@try@series}[2][]{%
+ \let\exfs@targetseries\relax
+ \edef\exfs@tempa{#2}%
+ \ifx\f@series\exfs@tempa\relax
+ \exfs@info{Current (\f@series) matches target (#2) series.\MessageBreak
+ Ignoring font switch}%
+ \else
+ \begingroup
+ \exfs@normalise{series}%
+ \edef\exfs@tempa{\f@encoding/\f@family/#2/\f@shape}%
+ \ifcsname \exfs@tempa\endcsname
+ \exfs@info{Switching series: \f@series\space -> #2}%
+ \gdef\exfs@targetseries{\fontseries{#2}\selectfont}%
+ \else
+ \edef\exfs@reserved{#1}%
+ \ifx\exfs@reserved\@empty
+ \PackageWarning{nfssext-cfr}{%
+ Font series '\f@encoding/\f@family/#2/\f@shape' not available\MessageBreak
+ Ignoring font change}%
+ \else
+ \PackageWarning{nfssext-cfr}{%
+ Font series '\f@encoding/\f@family/#2/\f@shape' not available\MessageBreak
+ Trying '\f@encoding/\f@family/#1/\f@shape'}%
+ \exfs@try@series{#1}%
+ \fi
+ \fi
+ \endgroup
+ \exfs@targetseries
+ \fi}
+\def\exfs@try@shapeshift#1{%
+ \edef\exfs@targetshape{\csname #1default\endcsname}%
+ \ifx\f@shape\exfs@targetshape\relax
+ \exfs@info{Current (\f@shape) matches target (#1) shape.\MessageBreak
+ Ignoring font switch}%
+ \else
+ \not@math@alphabet\edef\exfs@targetshape\relax
+ \exfs@info{\f@shape\space -> \exfs@targetshape\MessageBreak
+ Trying \f@encoding/\f@family/\f@series/\exfs@targetshape}%
+ \fontshape{\exfs@targetshape}\selectfont
+ \fi}
+\newcommand* \exfs@swshape{%
+ \let\exfs@targetsw\relax
+ \begingroup % angen neu beidio? angen - bendant!
+ \edef\exfs@tempa{\f@encoding/\f@family/\f@series/\swdefault}%
+ \edef\exfs@tempa@fake{exfs@fake@\exfs@tempa}%
+ \ifcsname \exfs@tempa\endcsname
+ \ifcsname exfs@fake@\exfs@tempa\endcsname
+ \exfs@swfamily
+ \else
+ \gdef\exfs@targetsw{\fontshape{\swdefault}\selectfont}% kernel
+ \fi
+ \else
+ \exfs@swfamily
+ \fi
+ \endgroup
+ \ifx\exfs@targetsw\relax
+ \PackageWarning{nfssext-cfr}{%
+ Cannot find any route to swash.\MessageBreak
+ Are you sure one is available?}%
+ \else
+ \exfs@targetsw
+ \exfs@info{Switch to swash resulted in '\curr@fontshape'}%
+ \fi
+}
+\newcommand* \exfs@swfamily{%
+ \let\exfs@targetsw\relax
+ \begingroup
+ \let\exfs@tempa\f@family
+ \exfs@merge@families{w}%
+ \ifx\exfs@tempa\f@family % try merge with current shape
+ \fontshape{n}%
+ \exfs@merge@families{w}% up & merge
+ \if\exfs@tempa\f@family
+ \fontshape\swshapedefault
+ \exfs@merge@families{w}% up & nfssext-cfr default/configured
+ \if\exfs@tempa\f@family
+ \exf@try@family{\expandafter\exfs@get@base\f@family\@nil w}% nfssext switch
+ \if\exfs@tempa\f@family % nfssext switch
+ \fontshape\swshapedefault\exfs@try@family{%
+ \expandafter\exfs@get@base\f@family\@nil w}% nfssext switch & shape
+ \if\exfs@tempa\f@family
+ \relax % rhodd y ffidl yn y to (give up)
+ \else
+ \gdef\exfs@targetsw{%
+ \fontshape\swshapedefault\expandafter\fontfamily{%
+ \exfs@get@base\f@family\@nil w}\selectfont
+ }% nfssext switch & shape
+ \fi % nfssext switch & shape
+ \else
+ \gdef\exfs@targetsw{\expandafter\fontfamily{%
+ \exfs@get@base\f@family\@nil w}\selectfont
+ }% nfssext switch
+ \fi % nfssext switch
+ \else
+ \gdef\exfs@targetsw{%
+ \fontshape\swshapedefault\exfs@merge@families{w}%
+ }% up & nfssext-cfr default/configured
+ \fi % up & nfssext-cfr default/configured
+ \else
+ \gdef\exfs@targetsw{%
+ \fontshape{n}\exfs@merge@families{w}%
+ }% up & merge
+ \fi % up & merge
+ \else
+ \gdef\exfs@targetsw{\exfs@merge@families{w}}% merge with current shape
+ \fi % merge with current shape
+ \endgroup
+}
+\def\exfs@get@base#1#2#3#4\@nil{#1#2#3}
+\def\exfs@get@variants#1#2#3#4\@nil{#4}
+\def\exfs@next#1#2\@nil{#1}
+\def\exfs@shift#1#2\@nil{#2}
+\def\exfs@first#1#2\@nil{#1}
+\def\exfs@part#1#2\@nil{#2}
+\def\exfs@second#1#2#3\@nil{#2}
+\def\exfs@series@splitter#1{%
+ \edef\exfs@weight{\expandafter\exfs@first#1\@nil}%
+ \edef\exfs@width{\expandafter\exfs@shift#1\@nil}%
+ \if\exfs@weight u\exfs@check@cx{u}%
+ \else\if\exfs@weight e\exfs@check@cx{e}%
+ \else\if\exfs@weight s\exfs@check@cx{s}%
+ \else\if\exfs@weight d\exfs@check@cx{d}%
+ \else\ifx\exfs@width\@empty % m dealt with elsewhere
+ \if\exfs@weight c\def\exfs@width{c}\let\exfs@weight\@empty
+ \else\if\exfs@weight x\def\exfs@width{x}\let\exfs@weight\@empty
+ \fi\fi
+ \fi\fi\fi\fi\fi
+ \exfs@info{#1 -> \exfs@weight:\exfs@width;}%
+}
+\def\exfs@check@cx#1{%
+ \edef\exfs@tempa{\expandafter\exfs@first\exfs@width\@nil}%
+ \if\exfs@tempa c\edef\exfs@width{#1c}\let\exfs@weight\@empty
+ \else\if\exfs@tempa x\edef\exfs@width{#1x}\let\exfs@weight\@empty
+ \else\edef\exfs@weighta{%
+ \exfs@weight\exfs@tempa
+ }\let\exfs@weight\exfs@weighta
+ \edef\exfs@widtha{%
+ \expandafter\exfs@shift\exfs@width\@nil
+ }\let\exfs@width\exfs@widtha
+ \fi\fi
+}
+\DeclareRobustCommand{\lnstyle}{%% anniffiniedig
+ \not@math@alphabet\lnstyle\relax
+ \exfs@try@family[\expandafter\exfs@get@base\f@family\@nil]%
+ {\expandafter\exfs@get@base\f@family\@nil x}}
+\DeclareRobustCommand{\osstyle}{%% anniffiniedig
+ \not@math@alphabet\osstyle\relax
+ \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil j}}
+\DeclareRobustCommand{\infstyle}{%% anniffiniedig
+ \not@math@alphabet\infstyle\relax
+ \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil 0}}
+\let\instyle\infstyle
+\DeclareRobustCommand{\sustyle}{%% anniffiniedig
+ \not@math@alphabet\sustyle\relax
+ \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil 1}}
+\DeclareRobustCommand{\swstyle}{%% anniffiniedig
+ \not@math@alphabet\swstyle\relax
+ \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil w}}
+\newif\ifexfs@added
+\newcommand*\exfs@merge@families[1]{%
+ \edef\exfs@vartomerge{#1}%
+ \edef\exfs@variants{\expandafter\exfs@get@variants\f@family\@nil}%
+ \exfs@info{Trying to merge variants #1 and \exfs@variants}%
+ \edef\tempo{2j}%
+ \let\exfs@tempq\@empty
+ \def\exfs@tempg{}%
+ \exfs@addedfalse
+ \ifx\exfs@variants\@empty
+ \edef\exfs@tempq{\exfs@vartomerge}%
+ \exfs@addedtrue
+ \else
+ \gdef\set{0,1,2,a,d,e,f,h,j,l,p,q,s,t,v,w}% these are the variants to consider - the order here and in the font name is crucial
+ \ifx\tempo\exfs@vartomerge
+ \@for \xx:=\set \do {%
+ \ifx\exfs@variants\@empty
+ \let\exfs@nextvariant\@empty
+ \else
+ \edef\exfs@nextvariant{\expandafter\exfs@next\exfs@variants\@nil}%
+ \fi
+ \if\exfs@nextvariant 2%
+ \edef\exfs@variants{\expandafter\exfs@shift\exfs@variants\@nil}%
+ \fi
+ \if\exfs@nextvariant j% if the next variant is j, ignore it
+ \edef\exfs@variants{\expandafter\exfs@shift\exfs@variants\@nil}%
+ \fi
+ \if\xx 2%
+ \edef\exfs@tempg{\exfs@tempg\xx}%
+ \else
+ \if\xx j% if the current value is j, we're done
+ \edef\exfs@tempq{\exfs@tempg\xx\exfs@variants}%
+ \let\exfs@variants\@empty
+ \exfs@addedtrue
+ \else
+ \ifx\xx\exfs@nextvariant
+ \edef\exfs@tempg{\exfs@tempg\xx}%
+ \edef\exfs@variants{\expandafter\exfs@shift\exfs@variants\@nil}%
+ \fi
+ \fi
+ \fi
+ }%
+ \else
+ \@for \xx:=\set \do {%
+ \ifx\exfs@variants\@empty
+ \ifexfs@added
+ \else
+ \edef\exfs@tempq{\exfs@tempg\exfs@vartomerge}%
+ \exfs@addedtrue
+ \fi
+ \else
+ \edef\exfs@nextvariant{\expandafter\exfs@next\exfs@variants\@nil}%
+ \ifx\exfs@nextvariant\exfs@vartomerge
+ \edef\exfs@tempq{\exfs@tempg\exfs@variants}%
+ \exfs@addedtrue
+ \let\exfs@variants\@empty
+ \else
+ \ifx\exfs@vartomerge\xx
+ \edef\exfs@tempq{\exfs@tempg\xx\exfs@variants}%
+ \exfs@addedtrue
+ \let\exfs@variants\@empty
+ \else
+ \ifx\exfs@nextvariant\xx
+ \edef\exfs@tempg{\exfs@tempg\xx}%
+ \edef\exfs@variants{\expandafter\exfs@shift\exfs@variants\@nil}%
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ \fi
+ \fi
+ \ifx\exfs@tempq\@empty
+ \PackageError{nfssext-cfr}{Something is wrong here. Ignoring font switching command.}{}%
+ \else
+ \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil \exfs@tempq}%
+ \fi
+}
+\DeclareRobustCommand{\pstyle}{%% anniffiniedig proportional figures
+ \not@math@alphabet\pstyle\relax
+ \exfs@merge@families{2}}
+\DeclareRobustCommand{\ostyle}{%% anniffiniedig oldstyle figures (cf. original osstyle above)
+ \not@math@alphabet\ostyle\relax
+ \exfs@merge@families{j}}
+\DeclareRobustCommand{\postyle}{%% anniffiniedig
+ \not@math@alphabet\postyle\relax
+ \exfs@merge@families{2j}}
+\DeclareRobustCommand{\tistyle}{%% anniffiniedig titling/display
+ \not@math@alphabet\tistyle\relax
+ \exfs@merge@families{d}}
+\DeclareRobustCommand{\ltstyle}{%% anniffiniedig
+ \not@math@alphabet\ltstyle\relax
+ \exfs@merge@families{l}}
+\DeclareRobustCommand{\ofstyle}{%% anniffiniedig
+ \not@math@alphabet\ofstyle\relax
+ \exfs@merge@families{l}}
+\DeclareRobustCommand{\altstyle}{%% anniffiniedig alternative style
+ \not@math@alphabet\altstyle\relax
+ \exfs@merge@families{a}}
+\DeclareRobustCommand{\regstyle}{%% anniffiniedig 'regular' style
+ \not@math@alphabet\regstyle\relax
+ \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil}}
+\DeclareRobustCommand{\embossstyle}{%% anniffiniedig
+ \not@math@alphabet\embossstyle\relax
+ \exfs@merge@families{e}}
+\DeclareRobustCommand{\ornamentalstyle}{%% anniffiniedig intended primarily for decorative initial fonts etc.
+ \not@math@alphabet\ornamentalstyle\relax
+ \exfs@merge@families{p}}
+\DeclareRobustCommand{\qtstyle}{%% anniffiniedig quotation style (assumes sans)
+ \not@math@alphabet\qtstyle\relax
+ \sffamily
+ \exfs@merge@families{q}}
+\DeclareRobustCommand{\shstyle}{%% anniffiniedig
+ \not@math@alphabet\shstyle\relax
+ \exfs@merge@families{h}}
+\DeclareRobustCommand{\swashstyle}{%% anniffiniedig an attempt to improve on \swstyle
+ \not@math@alphabet\swashstyle\relax
+ \exfs@merge@families{w}}
+\DeclareRobustCommand{\tmstyle}{%% anniffiniedig monowidth typewriter
+ \not@math@alphabet\tmstyle\relax
+ \exfs@unmerge@families{s}%
+ \exfs@unmerge@families{v}%
+ \exfs@merge@families{t}}
+\DeclareRobustCommand{\tvstyle}{%% anniffiniedig variable width typewriter
+ \not@math@alphabet\tvstyle\relax
+ \exfs@unmerge@families{s}%
+ \exfs@unmerge@families{t}%
+ \exfs@merge@families{v}}
+\newif\ifexfs@take
+\newcommand*\exfs@unmerge@families[1]{%
+ \edef\exfs@tempf{#1}%
+ \edef\tempa{\expandafter\exfs@get@variants\f@family\@nil}%
+ \let\exfs@tempq\@empty
+ \edef\exfs@tempg{}%
+ \exfs@taketrue
+ \ifx\tempa\@empty
+ \edef\exfs@tempq{}%
+ \else
+ \loop
+ \edef\exfs@tempn{\expandafter\exfs@next\tempa\@nil}%
+ \ifx\exfs@tempf\exfs@tempn
+ \edef\tempa{\expandafter\exfs@shift\tempa\@nil}%
+ \edef\exfs@tempq{\exfs@tempg\tempa}%
+ \exfs@takefalse
+ \else
+ \edef\exfs@tempg{\exfs@tempg\exfs@tempn}%
+ \edef\tempa{\expandafter\exfs@shift\tempa\@nil}%
+ \ifx\tempa\@empty% if there are no variants left, we're done
+ \edef\exfs@tempq{\exfs@tempg}%
+ \exfs@takefalse
+ \fi
+ \fi
+ \ifexfs@take % \fi yn \repeat
+ \repeat
+ \fi
+ \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil \exfs@tempq}%
+}
+\DeclareRobustCommand{\tstyle}{%% anniffiniedig tabular figures
+ \not@math@alphabet\tstyle\relax
+ \exfs@unmerge@families{2}}
+\DeclareRobustCommand{\lstyle}{%% anniffiniedig lining figures (cf. command above)
+ \not@math@alphabet\lstyle\relax
+ \exfs@unmerge@families{j}}
+\DeclareRobustCommand{\tlstyle}{%% anniffiniedig
+ \lstyle\tstyle}
+\DeclareRobustCommand{\plstyle}{%% anniffiniedig
+ \lstyle\pstyle}
+\DeclareRobustCommand{\tostyle}{%% anniffiniedig
+ \ostyle\tstyle}
+\newcommand*{\sidefault}{si}% anniffiniedig
+\DeclareRobustCommand{\sishape}{%
+ \exfs@try@shapeshift{si}}
+\DeclareFontShapeChangeRule {n}{si}{scit}{scsl}% current; request (& trydedd); dewisiad cyntaf; ail ddewisiad
+\DeclareFontShapeChangeRule {it}{si}{scit}{scsl}
+\DeclareFontShapeChangeRule {sl}{si}{scit}{scsl}
+\DeclareFontShapeChangeRule {sc}{si}{scit}{scsl}
+\DeclareFontShapeChangeRule {si}{sc} {si} {}
+\DeclareFontShapeChangeRule {si}{it} {si} {}
+\DeclareFontShapeChangeRule {si}{sl} {scsl} {si}
+\DeclareFontShapeChangeRule {si}{scit} {scit} {si}% rhag ofn?!
+\DeclareFontShapeChangeRule {si}{ulc} {it} {}
+\DeclareFontShapeChangeRule {si}{up}{sc}{}
+\ExplSyntaxOn
+\bool_if:NT \g__exfs_compat_bool
+{
+ \DeclareFontShapeChangeRule {it}{sc}{si}{scsl}
+ \DeclareFontShapeChangeRule{sl}{sc}{scsl}{si}
+ \DeclareFontShapeChangeRule {sc}{it} {si} {scsl}
+ \DeclareFontShapeChangeRule {sc}{sl} {scsl} {si}
+ \DeclareFontShapeChangeRule {scsl}{it} {si} {scsl}
+}
+\ExplSyntaxOff
+\DeclareFontShapeChangeRule {ui}{sc}{scit}{scsl}
+\DeclareFontShapeChangeRule {ui}{scsl}{scsl}{scit}
+\DeclareFontShapeChangeRule {ui}{it}{it}{ui}
+\DeclareFontShapeChangeRule {ui}{ri}{ri}{ui}
+\DeclareFontShapeChangeRule {ui}{up}{n}{}
+\DeclareFontShapeChangeRule {ui}{ulc}{ui}{}
+\DeclareFontShapeChangeRule {ri}{sc}{scit}{scsl}
+\DeclareFontShapeChangeRule {ri}{scsl}{scsl}{scit}
+\DeclareFontShapeChangeRule {ri}{it}{it}{ri}
+\DeclareFontShapeChangeRule {ri}{ui}{ui}{ri}
+\DeclareFontShapeChangeRule {ri}{up}{n}{}
+\DeclareFontShapeChangeRule {ri}{ulc}{ri}{}
+\DeclareFontShapeChangeRule {ol} {sc} {scol} {} % <- seiliedig ar nfssext-cfr-nfss.sty \scshape
+\DeclareFontShapeChangeRule {ol} {ulc} {ol} {}
+\DeclareFontShapeChangeRule {ol} {up} {ol} {}
+\DeclareFontShapeChangeRule {scol} {sc} {scol} {}
+\DeclareFontShapeChangeRule {scol} {ulc} {ol} {}
+\DeclareFontShapeChangeRule {scol} {up} {scol} {}
+\DeclareFontShapeChangeRule {u}{sc}{su}{} % <- seiliedig ar nfssext-cfr-nfss.sty \scshape
+\DeclareFontShapeChangeRule {su}{ulc}{u}{}
+\DeclareFontShapeChangeRule {sc}{u}{su}{}
+\DeclareFontShapeChangeRule {su}{u}{su}{}
+\DeclareFontShapeChangeRule {su}{sc}{su}{}
+\newcommand*{\oldefault}{ol}% anniffiniedig
+\DeclareRobustCommand{\olshape}{%% anniffiniedig
+ \exfs@try@shapeshift{ol}}
+\newcommand*{\scoldefault}{scol}% anniffiniedig
+\DeclareRobustCommand{\scolshape}{%% anniffiniedig
+ \exfs@try@shapeshift{scol}}
+\newcommand*{\udefault}{u}% anniffiniedig
+\DeclareRobustCommand{\ushape}{%% anniffiniedig
+ \exfs@try@shapeshift{u}}
+\newcommand*{\scudefault}{su}% anniffiniedig
+\DeclareRobustCommand{\scushape}{%% anniffiniedig
+ \exfs@try@shapeshift{scu}}
+\newcommand*{\uidefault}{ui}% anniffiniedig
+\DeclareRobustCommand{\uishape}{% anniffiniedig
+ \exfs@try@shapeshift{ui}}
+\newcommand*{\ridefault}{ri}% anniffiniedig
+\DeclareRobustCommand{\rishape}{% anniffiniedig
+ \exfs@try@shapeshift{ri}}
+\newcommand*{\exfs@merge@width}[1]{%
+ \exfs@series@splitter{\f@series}%
+ \edef\exfs@temph{#1}%
+ \if\exfs@temph m\ifx\exfs@weight\@empty\else\let\exfs@temph\@empty\fi\fi
+ \if\exfs@weight m\ifx\exfs@temph\@empty\else\let\exfs@weight\@empty\fi\fi
+ \edef\exfs@series{\exfs@weight\exfs@temph}%
+ \exfs@info{Trying \exfs@series}%
+\exfs@try@series{\exfs@series}}
+\DeclareRobustCommand{\regwidth}{%% anniffiniedig
+\not@math@alphabet\regwidth\relax
+ \exfs@merge@width{m}}
+\newcommand*{\nwdefault}{c}% anniffiniedig
+\DeclareRobustCommand{\nwwidth}{%% anniffiniedig ond rheolau
+\not@math@alphabet\nwwidth\relax
+\exfs@merge@width{\nwdefault}}% neu \exfs@try@series ?
+\newcommand*{\cddefault}{c}% anniffiniedig
+\DeclareRobustCommand{\cdwidth}{% anniffiniedig ond rheolau
+\not@math@alphabet\cdwidth\relax
+\exfs@merge@width{\cddefault}}% neu \exfs@try@series ?
+\newcommand*{\ecdefault}{ec}% anniffiniedig
+\DeclareRobustCommand{\ecwidth}{%% anniffiniedig ond rheolau
+\not@math@alphabet\ecwidth\relax
+\exfs@merge@width{\ecdefault}}% neu \exfs@try@series ?
+\newcommand*{\ucdefault}{uc}% anniffiniedig
+\DeclareRobustCommand{\ucwidth}{%% anniffiniedig
+\not@math@alphabet\ucwidth\relax
+\exfs@merge@width{\ucdefault}}
+\newcommand*{\etdefault}{x}% anniffiniedig
+\DeclareRobustCommand{\etwidth}{%% anniffiniedig
+\not@math@alphabet\etwidth\relax
+\exfs@merge@width{\etdefault}}% neu \exfs@try@series ?
+\newcommand*{\epdefault}{x}% anniffiniedig
+\DeclareRobustCommand{\epwidth}{%% anniffiniedig ond rheolau
+\not@math@alphabet\epwidth\relax
+\exfs@merge@width{\epdefault}}% neu \exfs@try@series ?
+\newcommand*{\exdefault}{ex}% anniffiniedig
+\DeclareRobustCommand{\exwidth}{%% anniffiniedig
+\not@math@alphabet\exwidth\relax
+\exfs@merge@width{\exdefault}}
+\newcommand*{\uxdefault}{ux}% anniffiniedig
+\DeclareRobustCommand{\uxwidth}{%% anniffiniedig
+\not@math@alphabet\uxwidth\relax
+\exfs@merge@width{\uxdefault}}
+\newcommand*\mdwdefault{m}
+\DeclareRobustCommand{\mdwidth}{%% anniffiniedig
+ \not@math@alphabet\mdwidth\relax
+ \exfs@merge@width{\mdwdefault}}
+\newcommand*{\exfs@merge@weight}[1]{%
+ \exfs@series@splitter{\f@series}%
+ \let\exfs@tempg\f@series
+ \def\exfs@temph{#1}%
+ \if\exfs@temph m\relax
+ \ifx\exfs@width\@empty\relax
+ \else
+ \let\exfs@temph\@empty
+ \fi
+ \fi
+ \edef\exfs@series{\exfs@temph\exfs@width}%
+ \ifx\exfs@temph\exfs@series
+ \exfs@info{Trying \exfs@series}%
+ \exfs@try@series{\exfs@series}%
+ \else
+ \exfs@info{Trying \exfs@series, favouring \exfs@weight}%
+ \exfs@try@series[\exfs@weight]{\exfs@series}% assume user wants to change weight even if this changes back to the default width
+ \fi}
+\newcommand*{\mbdefault}{sb}% dim byd i'w gael ei wneud yma
+\DeclareRobustCommand{\mbweight}{%% anniffiniedig
+ \not@math@alphabet\mbweight\relax
+ \exfs@merge@weight{\mbdefault}}
+\newcommand*{\bddefault}{b}% dim byd i'w gael ei wneud yma
+\DeclareRobustCommand{\bfweight}{%% anniffiniedig
+ \not@math@alphabet\bfweight\relax
+ \exfs@merge@weight{\bddefault}}
+\DeclareRobustCommand{\bdweight}{%% anniffiniedig
+ \not@math@alphabet\bdweight\relax
+ \exfs@merge@weight{\bddefault}}
+\newcommand*\mwdefault{m}
+\DeclareRobustCommand{\mdweight}{%% anniffiniedig
+ \not@math@alphabet\mdweight\relax
+ \exfs@merge@weight{\mwdefault}}
+\newcommand*{\dbdefault}{db}% anniffiniedig
+\DeclareRobustCommand{\dbweight}{%% anniffiniedig
+\not@math@alphabet\dbweight\relax
+\exfs@merge@weight{\dbdefault}}
+\newcommand*{\sbdefault}{sb}% anniffiniedig
+\DeclareRobustCommand{\sbweight}{%% anniffiniedig ond rheolau
+\not@math@alphabet\sbweight\relax
+\exfs@merge@weight{\sbdefault}}% neu \exfs@try@series ?
+\newcommand*{\ebdefault}{eb}% anniffiniedig
+\DeclareRobustCommand{\ebweight}{%% anniffiniedig ond rheolau
+\not@math@alphabet\ebweight\relax
+\exfs@merge@weight{\ebdefault}}% neu \exfs@try@series ?
+\newcommand*{\ubdefault}{ub}% anniffiniedig
+\DeclareRobustCommand{\ubweight}{%% anniffiniedig ond rheolau
+\not@math@alphabet\ubweight\relax
+\exfs@merge@weight{\ubdefault}}% neu \exfs@try@series ?
+\newcommand*{\lgdefault}{l}% anniffiniedig
+\DeclareRobustCommand{\lgweight}{%% anniffiniedig ond rheolau
+\not@math@alphabet\lgweight\relax
+\exfs@merge@weight{\lgdefault}}% neu \exfs@try@series ?
+\newcommand*{\eldefault}{el}% anniffiniedig
+\DeclareRobustCommand{\elweight}{%% anniffiniedig ond rheolau
+\not@math@alphabet\elweight\relax
+\exfs@merge@weight{\eldefault}}% neu \exfs@try@series ?
+\newcommand*{\uldefault}{ul}% anniffiniedig
+\DeclareRobustCommand{\ulweight}{%% anniffiniedig ond rheolau
+\not@math@alphabet\ulweight\relax
+\exfs@merge@weight{\uldefault}}% neu \exfs@try@series ?
+\let\dfshape\normalshape
+\newcommand*{\swshapedefault}{\itdefault}
+\ExplSyntaxOn
+\hook_gput_code:nnn {begindocument}{.}
+{% compatibility with original nfss \swshape
+ \bool_if:NTF \g__exfs_compat_bool
+ {
+ \DeclareRobustCommand{\swshape}
+ {
+ \not@math@alphabet\swshape\relax
+ \swstyle\fontshape\swshapedefault\selectfont
+ }
+ \PackageWarning{nfssext-cfr}{
+ Overwriting ~ kernel ~ definition ~ of ~ \swshape \space (compat)
+ }
+ }{
+ \DeclareRobustCommand \swshape
+ {
+ \not@math@alphabet\swshape\relax
+ \exfs@swshape
+ }
+ \PackageWarning{nfssext-cfr}{
+ Overwriting ~ kernel ~ definition ~ of ~ \swshape \space (new)
+ }
+ }
+ \@ifpackageloaded{hyperref}{
+ \hook_gput_code:nnn { cmd/textin/before } { . }
+ {
+ \exfs@info{
+ Note ~ that ~ '\protect\textin' ~ is ~ defined ~ by ~ hyperref.\MessageBreak
+ Use ~ for ~ inferior ~ digits ~ will ~ yield ~ an\MessageBreak
+ undefined ~ command ~ error ~ in ~ document ~ font ~ encodings.\MessageBreak
+ Use ~ '\protect\textinf' ~ to ~ access ~ inferior ~ digits
+ }
+ }
+ }{
+ \DeclareTextFontCommand{\textin}{\infstyle}
+ }
+}
+\ExplSyntaxOff
+\DeclareTextFontCommand{\textln}{\lnstyle}% anniffiniedig
+\DeclareTextFontCommand{\textos}{\osstyle}% anniffiniedig
+\DeclareTextFontCommand{\textinf}{\infstyle}% anniffiniedig
+\DeclareTextFontCommand{\textsu}{\sustyle}% anniffiniedig
+\DeclareTextFontCommand{\textsi}{\sishape}% anniffiniedig
+\DeclareTextFontCommand{\textdf}{\dfshape}% anniffiniedig
+\DeclareTextFontCommand{\textti}{\tistyle}% anniffiniedig
+\DeclareTextFontCommand{\textlt}{\ltstyle}% anniffiniedig
+\DeclareTextFontCommand{\textof}{\ofstyle}% anniffiniedig % open-face (or outline or blank) style
+\DeclareTextFontCommand{\textalt}{\altstyle}% anniffiniedig % alternative style
+\DeclareTextFontCommand{\textreg}{\regstyle}% anniffiniedig % `regular' style
+\DeclareTextFontCommand{\emboss}{\embossstyle}% anniffiniedig
+\DeclareTextFontCommand{\textorn}{\ornamentalstyle}% anniffiniedig % intended primarily for decorative initials etc.
+\DeclareTextFontCommand{\textqt}{\qtstyle}% anniffiniedig
+\DeclareTextFontCommand{\textsh}{\shstyle}% anniffiniedig % shadowed style
+\DeclareTextFontCommand{\texttm}{\tmstyle}% anniffiniedig
+\DeclareTextFontCommand{\texttv}{\tvstyle}% anniffiniedig
+\DeclareTextFontCommand{\textl}{\lstyle}% anniffiniedig
+\DeclareTextFontCommand{\texto}{\ostyle}% anniffiniedig
+\DeclareTextFontCommand{\textp}{\pstyle}% anniffiniedig
+\DeclareTextFontCommand{\textt}{\tstyle}% anniffiniedig
+\DeclareTextFontCommand{\textpl}{\plstyle}% anniffiniedig
+\DeclareTextFontCommand{\textpo}{\postyle}% anniffiniedig
+\DeclareTextFontCommand{\texttl}{\tlstyle}% anniffiniedig
+\DeclareTextFontCommand{\textto}{\tostyle}% anniffiniedig
+\DeclareTextFontCommand{\textol}{\olshape}% anniffiniedig % outline
+\DeclareTextFontCommand{\textswash}{\swashstyle}% anniffiniedig % an attempt to improve on \textsw
+\DeclareTextFontCommand{\textu}{\ushape}% anniffiniedig % be' yw hwn?! <_ underlined?
+\DeclareTextFontCommand{\textscu}{\scushape}% anniffiniedig
+\DeclareTextFontCommand{\textui}{\uishape}% anniffiniedig % upright italic
+\DeclareTextFontCommand{\textri}{\rishape}% anniffiniedig % reverse italic
+\DeclareTextFontCommand{\textnw}{\nwwidth}% anniffiniedig
+\DeclareTextFontCommand{\textcd}{\cdwidth}% anniffiniedig
+\DeclareTextFontCommand{\textec}{\ecwidth}% anniffiniedig
+\DeclareTextFontCommand{\textuc}{\ucwidth}% anniffiniedig
+\DeclareTextFontCommand{\textet}{\etwidth}% anniffiniedig
+\DeclareTextFontCommand{\textep}{\epwidth}% anniffiniedig
+\DeclareTextFontCommand{\textex}{\exwidth}% anniffiniedig
+\DeclareTextFontCommand{\textux}{\uxwidth}% anniffiniedig
+\DeclareTextFontCommand{\textrw}{\regwidth}% anniffiniedig
+\DeclareTextFontCommand{\textmb}{\mbweight}% anniffiniedig
+\DeclareTextFontCommand{\textdb}{\dbweight}% anniffiniedig
+\DeclareTextFontCommand{\textbd}{\bdweight}% new?
+\DeclareTextFontCommand{\textsb}{\sbweight}% anniffiniedig
+\DeclareTextFontCommand{\texteb}{\ebweight}% anniffiniedig
+\DeclareTextFontCommand{\textub}{\ubweight}% anniffiniedig
+\DeclareTextFontCommand{\textlg}{\lgweight}% anniffiniedig
+\DeclareTextFontCommand{\textel}{\elweight}% anniffiniedig
+\DeclareTextFontCommand{\textul}{\ulweight}% anniffiniedig
+\patchcmd{\init@series@setup}{cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}{cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt,clm,clm2,clm2j,clmj,clm2js,clm2s,clmjs,clms,clm2jt,clm2t,clmjt,clmt,clm2jv,clm2v,clmjv,clmv,clm2jqs,clm2qs,clmjqs,clmqs}{%
+ \PackageWarning{nfssext-cfr}{%
+ Patching font initialisation macro for serif.%
+ }%
+}{%
+ \PackageWarning{nfssext-cfr}{%
+ Failed to patch font initialisation macro for serif.%
+ }%
+}
+\patchcmd{\init@series@setup}{{cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}}{{cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt,clm,clm2,clm2j,clmj,clm2js,clm2s,clmjs,clms,clm2jt,clm2t,clmjt,clmt,clm2jv,clm2v,clmjv,clmv,clm2jqs,clm2qs,clmjqs,clmqs}}{%
+ \PackageWarning{nfssext-cfr}{%
+ Patching font initialisation macro for sans.%
+ }%
+}{%
+ \PackageWarning{nfssext-cfr}{%
+ Failed to patch font initialisation macro for sans.%
+ }%
+}
+\patchcmd{\init@series@setup}{{cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}}{{cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt,clm,clm2,clm2j,clmj,clm2js,clm2s,clmjs,clms,clm2jt,clm2t,clmjt,clmt,clm2jv,clm2v,clmjv,clmv,clm2jqs,clm2qs,clmjqs,clmqs}}{%
+ \PackageWarning{nfssext-cfr}{%
+ Patching font initialisation macro for typewriter.%
+ }%
+}{%
+ \PackageWarning{nfssext-cfr}{%
+ Failed to patch font initialisation macro for typewriter.%
+ }%
+}
+\endinput
+%%
+%% End of file `nfssext-cfr-nnfss.sty'.
diff --git a/Master/texmf-dist/tex/latex/nfssext-cfr/nfssext-cfr.sty b/Master/texmf-dist/tex/latex/nfssext-cfr/nfssext-cfr.sty
index 03d19d2e595..176cb014442 100644
--- a/Master/texmf-dist/tex/latex/nfssext-cfr/nfssext-cfr.sty
+++ b/Master/texmf-dist/tex/latex/nfssext-cfr/nfssext-cfr.sty
@@ -1,641 +1,195 @@
-%% nfssext-cfr.sty
-%% Additions and changes are copyright 2017 Clea F. Rees
-%% Code from nfssext.sty copyright 2003 Philipp Lehman (see below)
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Clea F. Rees.
-%
-% This work consists of the file nfssext-cfr.sty.
-%
-% The file nfssext-cfr.sty is a derived work under the terms of the
-% LPPL. It is based on version 1.2 of nfssext.sty which is part of The
-% Font Installation Guide by Philipp Lehman. A copy of the The Font
-% Installation Guide, including the unmodified version of nfssext.sty
-% is available from
-% http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=fontinstallationguide.
-% nfssext.sty is part of the included archive figuide-examples.tar.gz
-% which consists of examples and templates released under the LPPL.
-% nfssext.sty is included in the files for tutorials 3, 5 and 6.
-%
-% 2017-03-28: modify \tmstyle and \tvstyle to unmerge sans and other
-% typewriter before mergining appropriate variant
-%
+%%
+%% This is file `nfssext-cfr.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% nfssext-cfr.dtx (with options: `sty')
+%% Additions and changes Copyright (C) 2008-2024 Clea F. Rees.
+%% Code from fontinstallationguide Copyright (C) 2002-2004 Philipp Lehman (see below)
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%
+%%
+%% The file nfssext-cfr.sty is a derived work under the terms of the LPPL.
+%% It is based on version 1.2 of nfssext.sty which is supplied with
+%% The Font Installation Guide by Philipp Lehman. A copy of The Font Installation Guide, including an
+%% unmodified version of nfssext.sty is available from
+%% https://tug.ctan.org/pkg/fontinstallationguide.
+%% nfssext.sty is part of the included archive figuide-examples.tar.gz
+%% which consists of examples and templates released under the LPPL.
+%% nfssext.sty is included in the files for tutorials 3, 5 and 6.
+%%
+%% The main modifications made to this file are described in nfssext-cfr.dtx.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{svn-prov}
-\ProvidesPackageSVN{$Id: nfssext-cfr.sty 6140 2017-03-28 18:07:31Z cfrees $}[\revinfo{} specially mangled by cfr; based on 2003/03/14 v1.2 Experimental NFSS Extensions]
-%:cfr-added: use ifthen
-\RequirePackage{ifthen}
-%:end-added
-\newcommand*{\exfs@tempa}{}
-\newcommand*{\exfs@tempb}{}
-%:cfr-added: extra variable (\exfs@tempf)
-\newcommand*{\exfs@tempf}{}
-%:end-added
-\newcommand*{\exfs@try@family}[2][]{%
- \let\exfs@tempa\relax
+\ProvidesPackageSVN[\filebase.sty]{$Id: nfssext-cfr.dtx 10456 2024-10-03 01:19:12Z cfrees $}[v1.1 \revinfo{} extensions for NFSS and NNFSS; based on 2003/03/14 v1.2 Experimental NFSS Extensions]
+\DefineFileInfoSVN
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newif\if@nfssextcfr@digonnew
+\@nfssextcfr@digonnewtrue
+\@ifundefined{ExplLoaderFileDate}{%
+ \IfFileExists{expl3.sty}{%
+ \RequirePackage{expl3}%
+ }{%
+ \RequirePackage{nfssext-cfr-nfss}%
+ \@nfssextcfr@digonnewfalse
+ }%
+}{}
+\if@nfssextcfr@digonnew
+ \@ifl@t@r\ExplLoaderFileDate{2022-02-24}{%
+ }{%
+ \RequirePackage{nfssext-cfr-nfss}%
+ \@nfssextcfr@digonnewfalse
+ }%
+\fi
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\if@nfssextcfr@digonnew
+ \newif\ifexfs@debug
+ \ExplSyntaxOn
+ \prop_gput:Nnn \g_msg_module_name_prop { nfssext-cfr } { exfs }
+ \keys_define:nn { exfs }
+ {
+ compat .bool_gset:N = \g__exfs_compat_bool,
+ compat .default:n = true,
+ compat .initial:n = false,
+ compat .usage:n = preamble,
+ debug .legacy_if_gset:n = exfs@debug,
+ debug .initial:n = false,
+ debug .default:n = true,
+ force .bool_gset:N = \g__exfs_force_bool,
+ force .default:n = true,
+ force .initial:n = false,
+ force .usage:n = preamble,
+ }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion }
+ \IfFormatAtLeastTF { 2022-06-01 }
+ {
+ \ProcessKeyOptions [ exfs ]
+ }{
+ \RequirePackage { l3keys2e }
+ \ProcessKeysOptions { exfs }
+ \NewDocumentCommand \ProcessKeyOptions { o }
+ {
+ \IfValueTF { #1 } { \ProcessKeysOptions { #1 } }
+ { \PackageError{nfssext-cfr}{
+ Optional~argument~mandatory~on~kernels~this~old.\MessageBreak
+ Please~specify~the~module~whose~keys~should~be~processed
+ }{
+ \protect\ProcessKeyOptions~only~passes~keys~to~
+ \protect\ProcessKeyOptions\MessageBreak
+ on~older~kernels~for~the~convenience~of~package~authors.~
+ Since~\protect\ProcessKeysOptions\MessageBreak
+ takes~an~argument,~the~optional~argument~to~
+ \protect\ProcessKeyOptions~is~required
+ }
+ }
+ }
+ }
+ \IfFormatAtLeastTF { 2020-10-01 }{
+ }{
+ \RequirePackage { xparse }
+ \providecommand \ExpandArgs [1]
+ { \cs_if_exist_use:c { exp_args:N #1 } }
+ }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \RequirePackage{etoolbox}
+ \msg_new:nnn { nfssext-cfr } { compat }
+ {
+ You ~ or ~ a ~ font-support ~ package ~ have ~ loaded ~ me ~ ( line ~ \msg_line_number: ) ~ with ~ the ~ compat ~ option. ~
+ This ~ means ~ the ~ package ~ may ~ require ~ updating. ~
+ Update ~ the ~ package ~ if ~ necessary ~ and ~ use ~ compat=false ~ when ~ loading ~ me.
+ }
+ \msg_new:nnn { nfssext-cfr } { force }
+ {
+ You ~ or ~ a ~ font-support ~ package ~ have ~ loaded ~ me ~ ( line ~ \msg_line_number: ) ~ with ~ the ~ force ~ option. ~
+ This ~ is ~ a ~ desperate ~ measure ~ of ~ last ~ resort. ~
+ **Breakage ~ is ~ expected.**
+ }
+ \hook_gput_code:nnn { begindocument/before } { . }
+ {
+ \cs_if_exist:NTF \init@series@setup
+ {
+ \bool_if:NTF \g__exfs_force_bool
+ {
+ \msg_warning:nn { nfssext-cfr } { force }
+ \RequirePackage {nfssext-cfr-nfss}
+ }{
+ \bool_if:NT \g__exfs_compat_bool
+ {
+ \msg_warning:nn { nfssext-cfr } { compat }
+ }
+ \RequirePackage {nfssext-cfr-nnfss}
+ }
+ }{% achosiad heb broblemau - diolch byth!
+ \RequirePackage {nfssext-cfr-nfss}
+ }
+ }
+ \cs_new_protected_nopar:Nn \__exfs_set:n
+ {
+ \keys_set:nn { exfs } { #1 }
+ }
+ \cs_set_eq:NN \nfssextset \__exfs_set:n
+ \ExplSyntaxOff
+ \newcommand*{\DeclareTextOrnament}[7]{%
+ \expandafter\def\csname#1@orn\@roman#2\endcsname{#3/#4/#5/#6/#7}}
\begingroup
- \fontfamily{#2}\try@load@fontshape
- \expandafter\ifx\csname\curr@fontshape\endcsname\relax
- \edef\exfs@tempa{#1}%
- \ifx\exfs@tempa\@empty
- \PackageWarning{nfssext}{%
- Font family '\f@encoding/#2' not available\MessageBreak
- Ignoring font switch}%
- \else
- \PackageInfo{nfssext}{%
- Font family '\f@encoding/#2' not available\MessageBreak
- Font family '\f@encoding/#1' tried instead}%
- \exfs@try@family{#1}%
- \fi
- \else
- \gdef\exfs@tempa{\fontfamily{#2}\selectfont}%
- \fi
- \endgroup
- \exfs@tempa}
-%:cfr-added exfs@try@series
-\newcommand*{\exfs@try@series}[2][]{%
- \let\exfs@tempa\relax
- \begingroup
- \fontseries{#2}\try@load@fontshape
- \expandafter\ifx\csname\curr@fontshape\endcsname\relax
- \edef\exfs@tempa{#1}%
- \ifx\exfs@tempa\@empty
- \PackageWarning{nfssext-cfr}{%
- Font series '\f@encoding/\f@family/#2' not available\MessageBreak
- Ignoring font switch}%
- \else
- \PackageInfo{nfssext-cfr}{%
- Font family '\f@encoding/\f@family/#2' not available\MessageBreak
- Font family '\f@encoding/\f@family/#1' tried instead}%
- \exfs@try@series{#1}%
- \fi
- \else
- \gdef\exfs@tempa{\fontseries{#2}\selectfont}%
- \fi
+ \catcode`\/=12
+ \gdef\exfs@split@orndef#1/#2/#3/#4/#5\@nil{%
+ \def\f@encoding{#1}%
+ \def\f@family{#2}%
+ \def\f@series{#3}%
+ \def\f@shape{#4}%
+ \def\exfs@tempa{#5}}
\endgroup
- \exfs@tempa}
-%:end-added
-\def\exfs@get@base#1#2#3#4\@nil{#1#2#3}
-%:cfr-added:more \exfs@ commands (get@variants, next, shift, first, part, second)
-\def\exfs@get@variants#1#2#3#4\@nil{#4}
-\def\exfs@next#1#2\@nil{#1}
-\def\exfs@shift#1#2\@nil{#2}
-\def\exfs@first#1#2\@nil{#1}
-\def\exfs@part#1#2\@nil{#2}
-\def\exfs@second#1#2#3\@nil{#2}
-%:end-added
-\DeclareRobustCommand{\lnstyle}{%
- \not@math@alphabet\lnstyle\relax
- \exfs@try@family[\expandafter\exfs@get@base\f@family\@nil]%
- {\expandafter\exfs@get@base\f@family\@nil x}}
-\DeclareRobustCommand{\osstyle}{%
- \not@math@alphabet\osstyle\relax
- \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil j}}
-\DeclareRobustCommand{\instyle}{%
- \not@math@alphabet\instyle\relax
- \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil 0}}
-\DeclareRobustCommand{\sustyle}{%
- \not@math@alphabet\sustyle\relax
- \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil 1}}
-\DeclareRobustCommand{\swstyle}{%
- \not@math@alphabet\swstyle\relax
- \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil w}}
-%:cfr-added - merge families
-\newcommand*\exfs@merge@families[1]{%
- \edef\exfs@tempf{#1}%
- \edef\tempa{\expandafter\exfs@get@variants\f@family\@nil}%
- \edef\tempo{2j}%
- \let\exfs@tempq\@empty
- \def\exfs@tempg{}%
- \newif\ifadded
- \addedfalse
- % check whether there are variants - if not just use the requested addition
- \ifx\tempa\@empty
- \edef\exfs@tempq{\exfs@tempf}%
- \addedtrue
- \else
- \gdef\set{0,1,2,a,d,e,f,h,j,l,p,q,s,t,v,w}% these are the variants to consider - the order here and in the font name is crucial
- \ifx\tempo\exfs@tempf
- \@for \xx:=\set \do {%
- % check whether there are variants left - if not set the ``next variant'' to empty
- \ifx\tempa\@empty
- \let\exfs@tempn\@empty
- \else
- % o/w get the next variant
- \edef\exfs@tempn{\expandafter\exfs@next\tempa\@nil}%
- \fi
- \edef\tempt{2}%
- \edef\tempj{j}%
- % if the next variant is 2 or j, ignore it
- \ifx\exfs@tempn\tempt
- \edef\tempa{\expandafter\exfs@shift\tempa\@nil}%
- \fi
- \ifx\exfs@tempn\tempj % if the next variant is j, ignore it
- \edef\tempa{\expandafter\exfs@shift\tempa\@nil}%
- \fi
- % see if the current value is either 2 or j and add it if so and if needed
- \ifx\tempt\xx
- \edef\exfs@tempg{\exfs@tempg\xx}%
- \else
- \ifx\tempj\xx % if the current value is j, we're done
- \edef\exfs@tempq{\exfs@tempg\xx\tempa}%
- \let\tempa\@empty
- \addedtrue
- \else
- % o/w see if the current value matches the next variant
- \ifx\xx\exfs@tempn
- \edef\exfs@tempg{\exfs@tempg\xx}%
- \edef\tempa{\expandafter\exfs@shift\tempa\@nil}%
- \fi
- \fi
- \fi
- }%
- \else
- \@for \xx:=\set \do {%
- % check whether there are variants left and, if not, add the addition if needed
- \ifx\tempa\@empty
- \ifadded
- \else
- \edef\exfs@tempq{\exfs@tempg\exfs@tempf}%
- \addedtrue
- \fi
- \else
- % o/w get the next variant
- \edef\exfs@tempn{\expandafter\exfs@next\tempa\@nil}%
- % if the new token equals the next variant, combine whatever is saved in \exfs@tempg with whatever remains in \tempa
- \ifx\exfs@tempn\exfs@tempf
- \edef\exfs@tempq{\exfs@tempg\tempa}%
- \addedtrue
- \let\tempa\@empty
- \else
- % o/w, if the current value matches the requested addition, add it in
- \ifx\exfs@tempf\xx
- \edef\exfs@tempq{\exfs@tempg\xx\tempa}%
- \addedtrue
- \let\tempa\@empty
- \else
- % o/w, if the current value matches the next variant, shift
- \ifx\exfs@tempn\xx
- \edef\exfs@tempg{\exfs@tempg\xx}%
- \edef\tempa{\expandafter\exfs@shift\tempa\@nil}%
- \fi
- \fi
- \fi
- \fi
- }%
- \fi
- \fi
- \ifx\exfs@tempq\@empty
- \PackageError{nfssext-cfr}{Something is wrong here. Ignoring font switching command.}{}%
- \else
- \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil \exfs@tempq}%
- \fi}
-\DeclareRobustCommand{\pstyle}{% proportional figures
- \not@math@alphabet\pstyle\relax
- \exfs@merge@families{2}}
-\DeclareRobustCommand{\tistyle}{% titling/display
- \not@math@alphabet\tistyle\relax
- \exfs@merge@families{d}}
-\DeclareRobustCommand{\ostyle}{% oldstyle figures (cf. original osstyle above)
- \not@math@alphabet\ostyle\relax
- \exfs@merge@families{j}}
-% combined command for proportional oldstyle
-\DeclareRobustCommand{\postyle}{%
- \not@math@alphabet\postyle\relax
- \exfs@merge@families{2j}}
-%note that this command is for use when the light version is a separate family rather than a weight variant (e.g. when you've got light, light bold etc. as well as regular weights)
-\DeclareRobustCommand{\ltstyle}{%
- \not@math@alphabet\ltstyle\relax
- \exfs@merge@families{l}}
-%let's hope there aren't any fonts with a light family *and* an outline/openface/blank version
-\DeclareRobustCommand{\ofstyle}{%
- \not@math@alphabet\ofstyle\relax
- \exfs@merge@families{l}}
-\DeclareRobustCommand{\altstyle}{% alternative style
- \not@math@alphabet\altstyle\relax
- \exfs@merge@families{a}}
-\DeclareRobustCommand{\regstyle}{% ``regular'' style
- \not@math@alphabet\regstyle\relax
- \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil}}
-\DeclareRobustCommand{\embossstyle}{%
- \not@math@alphabet\embossstyle\relax
- \exfs@merge@families{e}}
-\DeclareRobustCommand{\ornamentalstyle}{% intended primarily for decorative initial fonts etc.
- \not@math@alphabet\ornamentalstyle\relax
- \exfs@merge@families{p}}
-\DeclareRobustCommand{\qtstyle}{% quotation style (assumes sans)
- \not@math@alphabet\qtstyle\relax
- \sffamily
- \exfs@merge@families{q}}
-\DeclareRobustCommand{\shstyle}{%
- \not@math@alphabet\shstyle\relax
- \exfs@merge@families{h}}
-\DeclareRobustCommand{\swashstyle}{% an attempt to improve on \swstyle
- \not@math@alphabet\swashstyle\relax
- \exfs@merge@families{w}}
-\DeclareRobustCommand{\tmstyle}{% monowidth typewriter
- \not@math@alphabet\tmstyle\relax
- \exfs@unmerge@families{s}%
- \exfs@unmerge@families{v}%
- \exfs@merge@families{t}}
-\DeclareRobustCommand{\tvstyle}{% variable width typewriter
- \not@math@alphabet\tvstyle\relax
- \exfs@unmerge@families{s}%
- \exfs@unmerge@families{t}%
- \exfs@merge@families{v}}
-%:cfr-added - unmerge families
-\newcounter{taken}%
-\newcommand*\exfs@unmerge@families[1]{%
- \edef\exfs@tempf{#1}%
- \edef\tempa{\expandafter\exfs@get@variants\f@family\@nil}%
- \let\exfs@tempq\@empty
- \edef\exfs@tempg{}%
- \setcounter{taken}{0}%
- % check whether there are variants - if not do nothing
- \ifx\tempa\@empty
- \edef\exfs@tempq{}%
- \else
- % o/w go through the variants to find the one to delete
- \whiledo{\value{taken}<1}{%
- % get the next variant
- \edef\exfs@tempn{\expandafter\exfs@next\tempa\@nil}%
- % see if the next variant is the thing we seek and, if so, eliminate it
- \ifx\exfs@tempf\exfs@tempn
- \edef\tempa{\expandafter\exfs@shift\tempa\@nil}%
- \edef\exfs@tempq{\exfs@tempg\tempa}%
- \stepcounter{taken}%
- % o/w save the next variant and move on if any variants remain
- \else
- \edef\exfs@tempg{\exfs@tempg\exfs@tempn}%
- \edef\tempa{\expandafter\exfs@shift\tempa\@nil}%
- \ifx\tempa\@empty% if there are no variants left, we're done
- \edef\exfs@tempq{\exfs@tempg}%
- \stepcounter{taken}%
- \fi
- \fi
- }%
- \fi
- \exfs@try@family{\expandafter\exfs@get@base\f@family\@nil \exfs@tempq}}
-\DeclareRobustCommand{\tstyle}{% tabular figures
- \not@math@alphabet\tstyle\relax
- \exfs@unmerge@families{2}}
-\DeclareRobustCommand{\lstyle}{% lining figures (cf. command above)
- \not@math@alphabet\lstyle\relax
- \exfs@unmerge@families{j}}
-% make a combined command for tabular lining
-\DeclareRobustCommand{\tlstyle}{%
- \lstyle\tstyle}
-% proportional lining
-\DeclareRobustCommand{\plstyle}{%
- \lstyle\pstyle}
-% tabular oldstyle {?!}
-\DeclareRobustCommand{\tostyle}{%
- \ostyle\tstyle}
-%:end-added % si is italic sc
-\newcommand*{\sidefault}{si}
-\DeclareRobustCommand{\sishape}{%
- \not@math@alphabet\sishape\relax
- \fontshape\sidefault\selectfont}
-%:cfr-added - is this how outline shapes should be handled?
-\newcommand*{\oldefault}{ol}
-\DeclareRobustCommand{\olshape}{%
- \not@math@alphabet\olshape\relax
- \fontshape\oldefault\selectfont}
-\newcommand*{\scoldefault}{scol}
-\DeclareRobustCommand{\scolshape}{%
- \not@math@alphabet\scolshape\relax
- \fontshape\scoldefault\selectfont}
-%\DeclareRobustCommand{\olshape}{%
-% \not@math@alphabet\olshape\relax
-% \exfs@merge@shape{\oldefault}{\scdefault}{\scoldefault}}
-%:fudge
-\newcommand*{\udefault}{u}
-\DeclareRobustCommand{\ushape}{%
- \not@math@alphabet\ushape\relax
- \fontshape\udefault\selectfont}
-\newcommand*{\scudefault}{su}
-\DeclareRobustCommand{\scushape}{%
- \not@math@alphabet\scushape\relax
- \fontshape\scudefault\selectfont}
-%:upright italic
-\newcommand*{\uidefault}{ui}
-\DeclareRobustCommand{\uishape}{%
- \not@math@alphabet\uishape\relax
- \fontshape\uidefault\selectfont}
-%:can i do this for reverse italic?
-\newcommand*{\ridefault}{ri}
-\DeclareRobustCommand{\rishape}{%
- \not@math@alphabet\rishape\relax
- \fontshape\ridefault\selectfont}
-%:end-added
-\newcommand*{\exfs@merge@shape}[3]{%
- \edef\exfs@tempa{#1}%
- \edef\exfs@tempb{#2}%
- \ifx\f@shape\exfs@tempb
- \expandafter\ifx\csname\f@encoding/\f@family/\f@series/#3\endcsname\relax
+ \def\exfs@base@family{\expandafter\exfs@get@base\f@family\@nil}
+ \DeclareRobustCommand{\ornament}[1]{%
+ \expandafter\ifx\csname\exfs@base@family @orn\@roman#1\endcsname\relax
+ \PackageWarning{nfssext}{%
+ Ornament #1 undefined for font family '\exfs@base@family'\MessageBreak
+ Setting debug mark}%
+ \rule{1ex}{1ex}%
\else
- \edef\exfs@tempa{#3}%
- \fi
- \fi
- \fontshape{\exfs@tempa}\selectfont}
-%:cfr-added - merge width changes into series
-\newcommand*{\exfs@font@width}{%
- \edef\exfs@tempf{\expandafter\exfs@first\f@series\@nil }%
- \edef\exfs@temppart{\expandafter\exfs@part\f@series\@nil }%
- \ifx\exfs@temppart\@empty
- \def\exfs@width{}
- \else
- \edef\exfs@temps{\expandafter\exfs@second\f@series\@nil }%
- \ifx\exfs@temps{b}
- \edef\exfs@width{\expandafter\exfs@part\exfs@temps\@nil }%
- \else
- \ifx\exfs@temps{l}
- \edef\exfs@width{\expandafter\exfs@part\exfs@temps\@nil }%
- \else
- \edef\exfs@width{\exfs@temppart}%
- \fi
- \fi
- \fi
- \exfs@width
- }
-\newcommand*{\exfs@merge@width}[1]{%
- \edef\exfs@temph{#1}%
- \edef\exfs@tempf{\expandafter\exfs@first\f@series\@nil }%
- \edef\exfs@temppart{\expandafter\exfs@part\f@series\@nil }%
- \def\tempb{b}%
- \def\templ{l}%
- \ifx\exfs@temppart\@empty
- \def\exfs@series{\expandafter\exfs@tempf\exfs@temph}%
- \else
- \edef\exfs@temps{\expandafter\exfs@second\f@series\@nil }%
- \ifx\exfs@temps\tempb
- \def\exfs@series{\expandafter\exfs@tempf\exfs@temps\exfs@temph}%
- \else
- \ifx\exfs@temps\templ
- \def\exfs@series{\expandafter\exfs@tempf\exfs@temps\exfs@temph}%
- \else
- \def\exfs@series{\expandafter\exfs@tempf\exfs@temph}%
- \fi
- \fi
- \fi
- \exfs@try@series{\exfs@series}}
-% \fontseries\exfs@series\selectfont}
-\newcommand*{\exfs@unmerge@width}{%
- \edef\exfs@tempf{\expandafter\exfs@first\f@series\@nil }%
- \edef\exfs@temppart{\expandafter\exfs@part\f@series\@nil }%
- \def\tempb{b}%
- \def\templ{l}%
- \ifx\exfs@temppart\@empty
- \def\exfs@series{\expandafter\exfs@tempf}%
- \else
- \edef\exfs@temps{\expandafter\exfs@second\f@series\@nil }%
- \ifx\exfs@temps\tempb
- \def\exfs@series{\expandafter\exfs@tempf\exfs@temps}%
- \else
- \ifx\exfs@temps\templ
- \def\exfs@series{\expandafter\exfs@tempf\exfs@temps}%
- \else
- \def\exfs@series{\expandafter\exfs@tempf}%
- \fi
- \fi
- \fi
- \exfs@try@series{\exfs@series}}
-\DeclareRobustCommand{\regwidth}{%
- \not@math@alphabet\regwidth\relax
- \exfs@unmerge@width}
-\newcommand*{\nwdefault}{c}
-\DeclareRobustCommand{\nwwidth}{%
- \not@math@alphabet\nwwidth\relax
- \exfs@merge@width{\nwdefault}}
-\newcommand*{\cddefault}{c}
-\DeclareRobustCommand{\cdwidth}{%
- \not@math@alphabet\cdwidth\relax
- \exfs@merge@width{\cddefault}}
-\newcommand*{\ecdefault}{ec}
-\DeclareRobustCommand{\ecwidth}{%
- \not@math@alphabet\ecwidth\relax
- \exfs@merge@width{\ecdefault}}
-\newcommand*{\ucdefault}{uc}
-\DeclareRobustCommand{\ucwidth}{%
- \not@math@alphabet\ucwidth\relax
- \exfs@merge@width{\ucdefault}}
-\newcommand*{\etdefault}{x}
-\DeclareRobustCommand{\etwidth}{%
- \not@math@alphabet\etwidth\relax
- \exfs@merge@width{\etdefault}}
-\newcommand*{\epdefault}{x}
-\DeclareRobustCommand{\epwidth}{%
- \not@math@alphabet\epwidth\relax
- \exfs@merge@width{\epdefault}}
-\newcommand*{\exdefault}{ex}
-\DeclareRobustCommand{\exwidth}{%
- \not@math@alphabet\exwidth\relax
- \exfs@merge@width{\exdefault}}
-\newcommand*{\uxdefault}{ux}
-\DeclareRobustCommand{\uxwidth}{%
- \not@math@alphabet\uxwidth\relax
- \exfs@merge@width{\uxdefault}}
-%:cfr-added merge weight changes into series
-\newcommand*{\exfs@merge@weight}[1]{%
- \edef\exfs@tempg{#1}%
- \edef\exfs@tempf{\expandafter\exfs@first\f@series\@nil }%
- \edef\exfs@temppart{\expandafter\exfs@part\f@series\@nil }%
- \def\templ{l}%
- \def\tempb{b}%
- %:case when there's no second part, so the single character must be the weight and should be replaced
- \ifx\exfs@temppart\@empty
- \def\exfs@series{\expandafter\exfs@tempg}%
- %:case when there's a second part
- \else
- %:get first character of second part
- \edef\exfs@temps{\expandafter\exfs@second\f@series\@nil }%
- \edef\exfs@tempw{\expandafter\exfs@part\exfs@temps\@nil }%
- %:is the first character b? if so, it is part of the weight and should be replaced
- \ifx\exfs@temps\tempb
- \def\exfs@series{\expandafter\exfs@tempg\exfs@tempw}%
- \else
- %:is the first character l? if so, it is part of the weight and should be replaced
- \ifx\exfs@temps\templ
- \def\exfs@series{\expandafter\exfs@tempg\exfs@tempw}%
- \else
- %:o/w the first character is part of the width and should be retained
- \def\exfs@series{\expandafter\exfs@tempg\exfs@temppart}%
- \fi
- \fi
- \fi
- %\fontseries\exfs@series\selectfont}
- \ifx\exfs@tempg\exfs@series
- \exfs@try@series{\exfs@series}%
- \else
- \exfs@try@series[\exfs@tempg]{\exfs@series}% assume user wants to change weight even if this changes back to the default width
- \fi}
-\newcommand*{\mbdefault}{mb}
-\DeclareRobustCommand{\mbweight}{%
- \not@math@alphabet\mbweight\relax
- \exfs@merge@weight{\mbdefault}}
-\newcommand*{\dbdefault}{db}
-\DeclareRobustCommand{\dbweight}{%
- \not@math@alphabet\dbweight\relax
- \exfs@merge@weight{\dbdefault}}
-\newcommand*{\sbdefault}{sb}
-\DeclareRobustCommand{\sbweight}{%
- \not@math@alphabet\sbweight\relax
- \exfs@merge@weight{\sbdefault}}
-\newcommand*{\ebdefault}{eb}
-\DeclareRobustCommand{\ebweight}{%
- \not@math@alphabet\ebweight\relax
- \exfs@merge@weight{\ebdefault}}
-\newcommand*{\ubdefault}{ub}
-\DeclareRobustCommand{\ubweight}{%
- \not@math@alphabet\ubweight\relax
- \exfs@merge@weight{\ubdefault}}
-\newcommand*{\lgdefault}{l}
-%note - use this if light is a variant weight, rather than a separate family
-\DeclareRobustCommand{\lgweight}{%
- \not@math@alphabet\lgweight\relax
- \exfs@merge@weight{\lgdefault}}
-\newcommand*{\eldefault}{el}
-\DeclareRobustCommand{\elweight}{%
- \not@math@alphabet\elweight\relax
- \exfs@merge@weight{\eldefault}}
-\newcommand*{\uldefault}{ul}
-\DeclareRobustCommand{\ulweight}{%
- \not@math@alphabet\ulweight\relax
- \exfs@merge@weight{\uldefault}}
-%:end-added
-\DeclareRobustCommand{\itshape}{%
- \not@math@alphabet\itshape\mathit
- \exfs@merge@shape{\itdefault}{\scdefault}{\sidefault}}
-% original
-%\DeclareRobustCommand{\scshape}{%
-% \not@math@alphabet\scshape\relax
-% \exfs@merge@shape{\scdefault}{\itdefault}{\sidefault}}
-%:cfr-altered: \scshape
-\DeclareRobustCommand{\scshape}{%
- \not@math@alphabet\scshape\relax
- \def\tempu{u}%
- \def\tempo{ol}%
- \ifx\f@shape\tempu
- \exfs@merge@shape{\scdefault}{\udefault}{\scudefault}%
- \else
- \ifx\f@shape\tempo
- \exfs@merge@shape{\scdefault}{\oldefault}{\scoldefault}%
- \else
- \exfs@merge@shape{\scdefault}{\itdefault}{\sidefault}%
- \fi
- \fi}
-%:end-altered
-\DeclareRobustCommand{\upshape}{%
- \not@math@alphabet\upshape\relax
- \exfs@merge@shape{\updefault}{\sidefault}{\scdefault}}
-\DeclareRobustCommand{\dfshape}{%
- \not@math@alphabet\dfshape\relax
- \fontshape\shapedefault\selectfont}
-\newcommand*{\swshapedefault}{\itdefault}
-\DeclareRobustCommand{\swshape}{%
- \not@math@alphabet\swshape\relax
- \swstyle\fontshape\swshapedefault\selectfont}
-\DeclareTextFontCommand{\textln}{\lnstyle}
-\DeclareTextFontCommand{\textos}{\osstyle}
-\DeclareTextFontCommand{\textin}{\instyle}
-\DeclareTextFontCommand{\textsu}{\sustyle}
-\DeclareTextFontCommand{\textsi}{\sishape}
-\DeclareTextFontCommand{\textdf}{\dfshape}
-\DeclareTextFontCommand{\textsw}{\swshape}
-%:cfr-added
-%:families
-\DeclareTextFontCommand{\textti}{\tistyle}
-\DeclareTextFontCommand{\textlt}{\ltstyle}
-\DeclareTextFontCommand{\textof}{\ofstyle} % open-face (or outline or blank) style
-\DeclareTextFontCommand{\textalt}{\altstyle} % alternative style
-\DeclareTextFontCommand{\textreg}{\regstyle} % ``regular'' style
-\DeclareTextFontCommand{\emboss}{\embossstyle}
-\DeclareTextFontCommand{\textorn}{\ornamentalstyle} % intended primarily for decorative initials etc.
-\DeclareTextFontCommand{\textqt}{\qtstyle}
-\DeclareTextFontCommand{\textsh}{\shstyle} % shadowed style
-\DeclareTextFontCommand{\texttm}{\tmstyle}
-\DeclareTextFontCommand{\texttv}{\tvstyle}
-%:families - figures
-\DeclareTextFontCommand{\textl}{\lstyle}
-\DeclareTextFontCommand{\texto}{\ostyle}
-\DeclareTextFontCommand{\textp}{\pstyle}
-\DeclareTextFontCommand{\textt}{\tstyle}
-\DeclareTextFontCommand{\textpl}{\plstyle}
-\DeclareTextFontCommand{\textpo}{\postyle}
-\DeclareTextFontCommand{\texttl}{\tlstyle}
-\DeclareTextFontCommand{\textto}{\tostyle}
-%:shapes
-\DeclareTextFontCommand{\textol}{\olshape} % outline
-\DeclareTextFontCommand{\textswash}{\swashstyle} % an attempt to improve on \textsw
-\DeclareTextFontCommand{\textu}{\ushape}
-\DeclareTextFontCommand{\textscu}{\scushape}
-\DeclareTextFontCommand{\textui}{\uishape} % upright italic
-\DeclareTextFontCommand{\textri}{\rishape} % reverse italic
-%:widths
-\DeclareTextFontCommand{\textnw}{\nwwidth}
-\DeclareTextFontCommand{\textcd}{\cdwidth}
-\DeclareTextFontCommand{\textec}{\ecwidth}
-\DeclareTextFontCommand{\textuc}{\ucwidth}
-\DeclareTextFontCommand{\textet}{\etwidth}
-\DeclareTextFontCommand{\textep}{\epwidth}
-\DeclareTextFontCommand{\textex}{\exwidth}
-\DeclareTextFontCommand{\textux}{\uxwidth}
-\DeclareTextFontCommand{\textrw}{\regwidth}
-%:weights
-\DeclareTextFontCommand{\textmb}{\mbweight}
-\DeclareTextFontCommand{\textdb}{\dbweight}
-\DeclareTextFontCommand{\textsb}{\sbweight}
-\DeclareTextFontCommand{\texteb}{\ebweight}
-\DeclareTextFontCommand{\textub}{\ubweight}
-\DeclareTextFontCommand{\textlg}{\lgweight}
-\DeclareTextFontCommand{\textel}{\elweight}
-\DeclareTextFontCommand{\textul}{\ulweight}
-%end-added
-\newcommand*{\DeclareTextOrnament}[7]{%
- \expandafter\def\csname#1@orn\@roman#2\endcsname{#3/#4/#5/#6/#7}}
-\begingroup
- \catcode`\/=12
- \gdef\exfs@split@orndef#1/#2/#3/#4/#5\@nil{%
- \def\f@encoding{#1}%
- \def\f@family{#2}%
- \def\f@series{#3}%
- \def\f@shape{#4}%
- \def\exfs@tempa{#5}}
-\endgroup
-\def\exfs@base@family{\expandafter\exfs@get@base\f@family\@nil}
-\DeclareRobustCommand{\ornament}[1]{%
- \expandafter\ifx\csname\exfs@base@family @orn\@roman#1\endcsname\relax
- \PackageWarning{nfssext}{%
- Ornament #1 undefined for font family '\exfs@base@family'\MessageBreak
- Setting debug mark}%
- \rule{1ex}{1ex}%
- \else
- \begingroup
- \edef\exfs@tempb{\csname\exfs@base@family @orn\@roman#1\endcsname}%
- \expandafter\expandafter\expandafter\exfs@split@orndef
- \expandafter\string\exfs@tempb\@nil
- \selectfont\char\exfs@tempa
- \endgroup
- \fi}
-%:add microtype hooks
-%:partly from microtype docs; partly from MinionPro package
+ \begingroup
+ \edef\exfs@tempb{\csname\exfs@base@family @orn\@roman#1\endcsname}%
+ \expandafter\expandafter\expandafter\exfs@split@orndef
+ \expandafter\string\exfs@tempb\@nil
+ \selectfont\char\exfs@tempa
+ \endgroup
+ \fi}
\def\nfssextcfr@MT@Hook{%
-% \DeclareMicrotypeVariants{x,j,w,a,d,0,1}% this is the default declaration according to the docs
-% \DeclareMicrotypeVariants*{2,e,h,l}% this should *append* the variants (what do I use 'f' for? better take it out...)
- \DeclareMicrotypeVariants*{2,2d,2dj,2j,dj,e,h,l}% is this necessary or would the previous line be enough?
- }
-\@ifpackageloaded{microtype}{%
- \nfssextcfr@MT@Hook}{%
- \@ifundefined{Microtype@Hook}{%
- \let\Microtype@Hook\nfssextcfr@MT@Hook}{% MinionPro has \global before this
- \g@addto@macro\Microtype@Hook{\nfssextcfr@MT@Hook}}}
+ \DeclareMicrotypeVariants*{2,2d,2dj,2j,dj,e,h,l}% is this necessary or would the previous line be enough?
+ }
+ \@ifpackageloaded{microtype}{%
+ \PackageWarning{nfssext-cfr}{%
+ You have loaded me (or a font support package which loads me)\MessageBreak
+ after loading microtype, but microtype should be loaded after\MessageBreak
+ all font defaults have been setup}%
+ \nfssextcfr@MT@Hook
+ }{%
+ \@ifundefined{Microtype@Hook}{%
+ \let\Microtype@Hook\nfssextcfr@MT@Hook
+ }{% MinionPro has \global before this
+ \g@addto@macro\Microtype@Hook{\nfssextcfr@MT@Hook}%
+ }%
+ }
+\fi
\endinput
+%%
+%% End of file `nfssext-cfr.sty'.
diff --git a/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty b/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty
index 153a9e97135..2ab28888e88 100644
--- a/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty
+++ b/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty
@@ -6,7 +6,7 @@
%%
%% nicematrix-code.dtx (with options: `package')
%%
-%% Copyright (C) 2018-2024 by F. Pantigny
+%% Copyright (C) 2018-2025 by F. Pantigny
%%
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -18,8 +18,8 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\def\myfileversion{6.28c}
-\def\myfiledate{2024/08/22}
+\def\myfileversion{7.0b}
+\def\myfiledate{2025/01/20}
\RequirePackage{pgfcore}
\usepgfmodule{shapes}
\RequirePackage{l3keys2e}
@@ -28,13 +28,17 @@
{\myfiledate}
{\myfileversion}
{Enhanced arrays with the help of PGF/TikZ}
+\ProvideDocumentCommand{\IfPackageLoadedT}{mm}
+ {\IfPackageLoadedTF{#1}{#2}{}}
+
+\ProvideDocumentCommand{\IfPackageLoadedF}{mm}
+ {\IfPackageLoadedTF{#1}{}{#2}}
\RequirePackage { amsmath }
\RequirePackage { array }
-\bool_const:Nn \c__nicematrix_tagging_array_bool
+\bool_const:Nn \c__nicematrix_recent_array_bool
{ \IfPackageAtLeastTF { array } { 2024/05/01 } \c_true_bool \c_false_bool }
\bool_const:Nn \c__nicematrix_testphase_table_bool
- { \IfPackageLoadedTF { latex-lab-testphase-table } \c_true_bool \c_false_bool
- }
+ { \IfPackageLoadedTF { latex-lab-testphase-table } \c_true_bool \c_false_bool }
\cs_new_protected:Npn \__nicematrix_error:n { \msg_error:nn { nicematrix } }
\cs_new_protected:Npn \__nicematrix_warning:n { \msg_warning:nn { nicematrix } }
\cs_new_protected:Npn \__nicematrix_error:nn { \msg_error:nnn { nicematrix } }
@@ -55,7 +59,7 @@
\bool_gset:Nn \g__nicematrix_messages_for_Overleaf_bool
{
\str_if_eq_p:on \c_sys_jobname_str { _region_ } % for Emacs
- || \str_if_eq_p:on \c_sys_jobname_str { output } % for Overleaf
+ || \str_if_eq_p:ee \c_sys_jobname_str { output } % for Overleaf
}
\cs_new_protected:Npn \__nicematrix_msg_redirect_name:nn
{ \msg_redirect_name:nnn { nicematrix } }
@@ -78,60 +82,13 @@
}
\cs_set:Npn \int_if_zero:NT #1 { \int_compare:nNnT #1 = \c_zero_int }
\cs_set:Npn \int_if_zero:NTF #1 { \int_compare:nNnTF #1 = \c_zero_int }
-\__nicematrix_msg_new:nn { Internal~error }
- {
- Potential~problem~when~using~nicematrix.\\
- The~package~nicematrix~have~detected~a~modification~of~the~
- standard~environment~{array}~(of~the~package~array).~Maybe~you~will~encounter~
- some~slight~problems~when~using~nicematrix.~If~you~don't~want~to~see~
- this~message~again,~load~nicematrix~with:~\token_to_str:N
- \usepackage[no-test-for-array]{nicematrix}.
- }
\__nicematrix_msg_new:nn { mdwtab~loaded }
{
The~packages~'mdwtab'~and~'nicematrix'~are~incompatible.~
This~error~is~fatal.
}
-\cs_new_protected:Npn \__nicematrix_security_test:n #1
- {
- \peek_meaning:NTF \ignorespaces
- { \__nicematrix_security_test_i:w }
- { \__nicematrix_error:n { Internal~error } }
- #1
- }
-\bool_if:NTF \c__nicematrix_tagging_array_bool
- {
- \cs_new_protected:Npn \__nicematrix_security_test_i:w \ignorespaces #1
- {
- \peek_meaning:NF \textonly@unskip { \__nicematrix_error:n { Internal~error } }
- #1
- }
- }
- {
- \cs_new_protected:Npn \__nicematrix_security_test_i:w \ignorespaces #1
- {
- \peek_meaning:NF \unskip { \__nicematrix_error:n { Internal~error } }
- #1
- }
- }
\hook_gput_code:nnn { begindocument / end } { . }
- {
- \IfPackageLoadedTF { mdwtab }
- { \__nicematrix_fatal:n { mdwtab~loaded } }
- {
- \bool_if:NF \g__nicematrix_no_test_for_array_bool
- {
- \group_begin:
- \hbox_set:Nn \l_tmpa_box
- {
- \begin { tabular } { c > { \__nicematrix_security_test:n } c c }
- text & & text
- \end { tabular }
- }
- \group_end:
- }
- }
- }
+ { \IfPackageLoadedT { mdwtab } { \__nicematrix_fatal:n { mdwtab~loaded } } }
\cs_new_protected:Npn \__nicematrix_collect_options:n #1
{
\peek_meaning:NTF [
@@ -156,20 +113,19 @@
\tl_const:Nn \c__nicematrix_r_tl { r }
\tl_const:Nn \c__nicematrix_all_tl { all }
\tl_const:Nn \c__nicematrix_dot_tl { . }
-\tl_const:Nn \c__nicematrix_default_tl { default }
-\tl_const:Nn \c__nicematrix_star_tl { * }
-\str_const:Nn \c__nicematrix_star_str { * }
\str_const:Nn \c__nicematrix_r_str { r }
\str_const:Nn \c__nicematrix_c_str { c }
\str_const:Nn \c__nicematrix_l_str { l }
-\str_const:Nn \c__nicematrix_R_str { R }
-\str_const:Nn \c__nicematrix_C_str { C }
-\str_const:Nn \c__nicematrix_L_str { L }
-\str_const:Nn \c__nicematrix_j_str { j }
-\str_const:Nn \c__nicematrix_si_str { si }
\tl_new:N \l__nicematrix_argspec_tl
-\cs_generate_variant:Nn \seq_set_split:Nnn { N o n }
+\cs_generate_variant:Nn \seq_set_split:Nnn { N o }
\cs_generate_variant:Nn \str_lowercase:n { o }
+\cs_generate_variant:Nn \str_set:Nn { N o }
+\cs_generate_variant:Nn \tl_build_put_right:Nn { N o }
+\prg_generate_conditional_variant:Nnn \clist_if_in:Nn { N e } { T , F, TF }
+\prg_generate_conditional_variant:Nnn \tl_if_empty:n { e } { T }
+\prg_generate_conditional_variant:Nnn \tl_if_head_eq_meaning:nN { o N } { TF }
+\cs_generate_variant:Nn \dim_min:nn { v }
+\cs_generate_variant:Nn \dim_max:nn { v }
\hook_gput_code:nnn { begindocument } { . }
{
\IfPackageLoadedTF { tikz }
@@ -220,9 +176,8 @@
}
\hook_gput_code:nnn { begindocument } { . }
{
- \IfPackageLoadedTF { booktabs }
+ \IfPackageLoadedT { booktabs }
{ \iow_now:Nn \@mainaux \nicematrix@redefine@check@rerun }
- { }
}
\cs_set_protected:Npn \nicematrix@redefine@check@rerun
{
@@ -235,8 +190,7 @@
}
\hook_gput_code:nnn { begindocument } { . }
{
- \IfPackageLoadedTF { colortbl }
- { }
+ \IfPackageLoadedF { colortbl }
{
\cs_set_protected:Npn \CT@arc@ { }
\cs_set_nopar:Npn \arrayrulecolor #1 # { \CT@arc { #1 } }
@@ -282,6 +236,7 @@
\cs_set:Npn \__nicematrix_cline
{ \__nicematrix_cline_i:en \l__nicematrix_first_col_int }
\cs_set:Npn \__nicematrix_cline_i:nn #1 #2 { \__nicematrix_cline_i:w #1|#2- \q_stop }
+\cs_generate_variant:Nn \__nicematrix_cline_i:nn { e }
\cs_set:Npn \__nicematrix_cline_i:w #1|#2-#3 \q_stop
{
\tl_if_empty:nTF { #3 }
@@ -304,8 +259,8 @@
{ & \__nicematrix_cline_i:en { \int_eval:n { #3 + 1 } } }
{ \everycr { } \cr }
}
-\cs_generate_variant:Nn \__nicematrix_cline_i:nn { e n }
\cs_set_eq:NN \__nicematrix_math_toggle: \c_math_toggle_token
+\cs_generate_variant:Nn \__nicematrix_set_CT@arc@:n { o }
\cs_new_protected:Npn \__nicematrix_set_CT@arc@:n #1
{
\tl_if_blank:nF { #1 }
@@ -315,24 +270,23 @@
{ \cs_set_nopar:Npn \CT@arc@ { \color { #1 } } }
}
}
-\cs_generate_variant:Nn \__nicematrix_set_CT@arc@:n { o }
+\cs_generate_variant:Nn \__nicematrix_set_CT@drsc@:n { o }
\cs_new_protected:Npn \__nicematrix_set_CT@drsc@:n #1
{
\tl_if_head_eq_meaning:nNTF { #1 } [
{ \cs_set_nopar:Npn \CT@drsc@ { \color #1 } }
{ \cs_set_nopar:Npn \CT@drsc@ { \color { #1 } } }
}
-\cs_generate_variant:Nn \__nicematrix_set_CT@drsc@:n { o }
+\cs_generate_variant:Nn \__nicematrix_exp_color_arg:Nn { N o }
\cs_new:Npn \__nicematrix_exp_color_arg:Nn #1 #2
{
\tl_if_head_eq_meaning:nNTF { #2 } [
{ #1 #2 }
{ #1 { #2 } }
}
-\cs_generate_variant:Nn \__nicematrix_exp_color_arg:Nn { N o }
+\cs_generate_variant:Nn \__nicematrix_color:n { o }
\cs_new_protected:Npn \__nicematrix_color:n #1
{ \tl_if_blank:nF { #1 } { \__nicematrix_exp_color_arg:Nn \color { #1 } } }
-\cs_generate_variant:Nn \__nicematrix_color:n { o }
\cs_new_protected:Npn \__nicematrix_rescan_for_spanish:N #1
{
\tl_set_rescan:Nno
@@ -381,6 +335,7 @@
\bool_new:N \g__nicematrix_rotate_c_bool
\bool_new:N \l__nicematrix_X_bool
\bool_new:N \g__nicematrix_caption_finished_bool
+\bool_new:N \l__nicematrix_no_cell_nodes_bool
\tl_new:N \g__nicematrix_aux_tl
\bool_new:N \g__nicematrix_aux_found_bool
\seq_new:N \g__nicematrix_size_seq
@@ -410,7 +365,7 @@
\bool_new:N \l__nicematrix_bold_row_style_bool
\cs_new:Npn \__nicematrix_full_name_env:
{
- \str_if_eq:onTF \g__nicematrix_com_or_env_str { command }
+ \str_if_eq:eeTF \g__nicematrix_com_or_env_str { command }
{ command \space \c_backslash_str \g__nicematrix_name_env_str }
{ environment \space \{ \g__nicematrix_name_env_str \} }
}
@@ -441,6 +396,8 @@
\dim_new:N \l__nicematrix_y_final_dim
\dim_new:N \l__nicematrix_tmpc_dim
\dim_new:N \l__nicematrix_tmpd_dim
+\dim_new:N \l__nicematrix_tmpe_dim
+\dim_new:N \l__nicematrix_tmpf_dim
\dim_new:N \g__nicematrix_dp_row_zero_dim
\dim_new:N \g__nicematrix_ht_row_zero_dim
\dim_new:N \g__nicematrix_ht_row_one_dim
@@ -452,9 +409,10 @@
\dim_new:N \g__nicematrix_width_first_col_dim
\seq_new:N \g__nicematrix_blocks_seq
\seq_new:N \g__nicematrix_pos_of_blocks_seq
+\seq_new:N \g__nicematrix_future_pos_of_blocks_seq
\seq_new:N \g__nicematrix_pos_of_xdots_seq
\seq_new:N \g__nicematrix_pos_of_stroken_blocks_seq
-\seq_new:N \l__nicematrix_corners_cells_seq
+\clist_new:N \l__nicematrix_corners_cells_clist
\seq_new:N \g__nicematrix_submatrix_names_seq
\bool_new:N \l__nicematrix_width_used_bool
\seq_new:N \g__nicematrix_multicolumn_cells_seq
@@ -512,14 +470,14 @@
\int_set:Nn \l__nicematrix_last_col_int { -2 }
\bool_new:N \g__nicematrix_last_col_found_bool
\bool_new:N \l__nicematrix_in_last_col_bool
-\cs_set_protected:Npn \__nicematrix_cut_on_hyphen:w #1-#2\q_stop
+\cs_new_protected:Npn \__nicematrix_cut_on_hyphen:w #1-#2\q_stop
{
\cs_set_nopar:Npn \l_tmpa_tl { #1 }
\cs_set_nopar:Npn \l_tmpb_tl { #2 }
}
\cs_new_protected:Npn \__nicematrix_expand_clist:N #1
{
- \clist_if_in:NVF #1 \c__nicematrix_all_tl
+ \clist_if_in:NnF #1 { all }
{
\clist_clear:N \l_tmpa_clist
\clist_map_inline:Nn #1
@@ -549,7 +507,7 @@
\seq_new:N \g__nicematrix_notes_in_caption_seq
\tl_new:N \g__nicematrix_tabularnote_tl
\seq_new:N \l__nicematrix_notes_labels_seq
-\newcounter{nicematrix_draft}
+\newcounter { nicematrix_draft }
\cs_new_protected:Npn \__nicematrix_notes_format:n #1
{
\setcounter { nicematrix_draft } { #1 }
@@ -632,7 +590,7 @@
\seq_gput_right:Nn \g__nicematrix_notes_seq { { #1 } { #2 } }
\tl_if_novalue:nT { #1 } { \int_gincr:N \c@tabularnote }
}
- \seq_put_right:Nx \l__nicematrix_notes_labels_seq
+ \seq_put_right:Ne \l__nicematrix_notes_labels_seq
{
\tl_if_novalue:nTF { #1 }
{
@@ -666,8 +624,8 @@
{ \int_gincr:N \c@tabularnote }
\seq_clear:N \l__nicematrix_notes_labels_seq
\bool_lazy_or:nnTF
- { \tl_if_eq_p:NN \l__nicematrix_hpos_cell_tl \c__nicematrix_c_tl }
- { \tl_if_eq_p:NN \l__nicematrix_hpos_cell_tl \c__nicematrix_r_tl }
+ { \str_if_eq_p:ee \l__nicematrix_hpos_cell_tl { c } }
+ { \str_if_eq_p:ee \l__nicematrix_hpos_cell_tl { r } }
{
\hbox_overlap_right:n { \box_use:N \l_tmpa_box }
\skip_horizontal:n { \box_wd:N \l_tmpa_box }
@@ -694,7 +652,7 @@
{ \seq_gput_right:Nn \g__nicematrix_notes_in_caption_seq { { #1 } { #2 } } }
}
\tl_if_novalue:nT { #1 } { \int_gincr:N \c@tabularnote }
- \seq_put_right:Nx \l__nicematrix_notes_labels_seq
+ \seq_put_right:Ne \l__nicematrix_notes_labels_seq
{
\tl_if_novalue:nTF { #1 }
{ \__nicematrix_notes_format:n { \int_use:N \c@tabularnote } }
@@ -760,7 +718,6 @@
\tl_new:N \l__nicematrix_short_caption_tl
\tl_new:N \l__nicematrix_label_tl
\bool_new:N \l__nicematrix_caption_above_bool
-\bool_new:N \l__nicematrix_color_inside_bool
\bool_new:N \l__nicematrix_standard_cline_bool
\dim_new:N \l__nicematrix_cell_space_top_limit_dim
\dim_new:N \l__nicematrix_cell_space_bottom_limit_dim
@@ -865,10 +822,15 @@
}
\keys_define:nn { nicematrix / Global }
{
+ color-inside .code:n =
+ \__nicematrix_warning_gredirect_none:n { key~color-inside } ,
+ colortbl-like .code:n =
+ \__nicematrix_warning_gredirect_none:n { key~color-inside } ,
ampersand-in-blocks .bool_set:N = \l__nicematrix_amp_in_blocks_bool ,
ampersand-in-blocks .default:n = true ,
&-in-blocks .meta:n = ampersand-in-blocks ,
no-cell-nodes .code:n =
+ \bool_set_true:N \l__nicematrix_no_cell_nodes_bool
\cs_set_protected:Npn \__nicematrix_node_for_cell:
{ \box_use_drop:N \l__nicematrix_cell_box } ,
no-cell-nodes .value_forbidden:n = true ,
@@ -984,27 +946,22 @@
baseline .tl_set:N = \l__nicematrix_baseline_tl ,
baseline .value_required:n = true ,
columns-width .code:n =
- \tl_if_eq:nnTF { #1 } { auto }
+ \str_if_eq:eeTF { #1 } { auto }
{ \bool_set_true:N \l__nicematrix_auto_columns_width_bool }
{ \dim_set:Nn \l__nicematrix_columns_width_dim { #1 } } ,
columns-width .value_required:n = true ,
name .code:n =
\legacy_if:nF { measuring@ }
{
- \str_set:Nx \l_tmpa_str { #1 }
- \seq_if_in:NVTF \g__nicematrix_names_seq \l_tmpa_str
+ \str_set:Ne \l_tmpa_str { #1 }
+ \seq_if_in:NoTF \g__nicematrix_names_seq \l_tmpa_str
{ \__nicematrix_error:nn { Duplicate~name } { #1 } }
- { \seq_gput_left:NV \g__nicematrix_names_seq \l_tmpa_str }
+ { \seq_gput_left:No \g__nicematrix_names_seq \l_tmpa_str }
\str_set_eq:NN \l__nicematrix_name_str \l_tmpa_str
} ,
name .value_required:n = true ,
code-after .tl_gset:N = \g_nicematrix_code_after_tl ,
code-after .value_required:n = true ,
- color-inside .code:n =
- \bool_set_true:N \l__nicematrix_color_inside_bool
- \bool_set_true:N \l__nicematrix_code_before_bool ,
- color-inside .value_forbidden:n = true ,
- colortbl-like .meta:n = color-inside
}
\keys_define:nn { nicematrix / notes }
{
@@ -1026,9 +983,8 @@
{
\hook_gput_code:nnn { begindocument } { . }
{
- \IfPackageLoadedTF { enumitem }
+ \IfPackageLoadedT { enumitem }
{ \setlist* [ tabularnotes ] { #1 } }
- { }
}
} ,
enumitem-keys .value_required:n = true ,
@@ -1036,9 +992,8 @@
{
\hook_gput_code:nnn { begindocument } { . }
{
- \IfPackageLoadedTF { enumitem }
+ \IfPackageLoadedT { enumitem }
{ \setlist* [ tabularnotes* ] { #1 } }
- { }
}
} ,
enumitem-keys-para .value_required:n = true ,
@@ -1115,7 +1070,7 @@
renew-matrix .value_forbidden:n = true ,
exterior-arraycolsep .bool_set:N = \l__nicematrix_exterior_arraycolsep_bool ,
columns-width .code:n =
- \tl_if_eq:nnTF { #1 } { auto }
+ \str_if_eq:eeTF { #1 } { auto }
{ \__nicematrix_error:n { Option~auto~for~columns-width } }
{ \dim_set:Nn \l__nicematrix_columns_width_dim { #1 } } ,
allow-duplicate-names .code:n =
@@ -1169,7 +1124,7 @@
\keys_define:nn { nicematrix / pNiceArray }
{
first-col .code:n = \int_zero:N \l__nicematrix_first_col_int ,
- last-col .code:n = \tl_if_empty:nF {#1}
+ last-col .code:n = \tl_if_empty:nF { #1 }
{ \__nicematrix_error:n { last-col~non~empty~for~NiceArray } }
\int_zero:N \l__nicematrix_last_col_int ,
first-row .code:n = \int_zero:N \l__nicematrix_first_row_int ,
@@ -1199,7 +1154,7 @@
short-caption .value_required:n = true ,
label .tl_set:N = \l__nicematrix_label_tl ,
label .value_required:n = true ,
- last-col .code:n = \tl_if_empty:nF {#1}
+ last-col .code:n = \tl_if_empty:nF { #1 }
{ \__nicematrix_error:n { last-col~non~empty~for~NiceArray } }
\int_zero:N \l__nicematrix_last_col_int ,
r .code:n = \__nicematrix_error:n { r~or~l~with~preamble } ,
@@ -1217,7 +1172,7 @@
sub-matrix .value_required:n = true ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~CodeAfter }
}
-\cs_new_protected:Npn \__nicematrix_cell_begin:w
+\cs_new_protected:Npn \__nicematrix_cell_begin:
{
\tl_gclear:N \g__nicematrix_cell_after_hook_tl
\cs_set_eq:NN \CodeAfter \__nicematrix_CodeAfter_i:
@@ -1232,26 +1187,24 @@
}
\cs_new_protected:Npn \__nicematrix_tuning_first_row:
{
- \int_if_zero:nT \c@iRow
- {
- \int_compare:nNnT \c@jCol > \c_zero_int
- {
- \l__nicematrix_code_for_first_row_tl
- \xglobal \colorlet { nicematrix-first-row } { . }
- }
- }
+ \if_int_compare:w \c@iRow = \c_zero_int
+ \if_int_compare:w \c@jCol > \c_zero_int
+ \l__nicematrix_code_for_first_row_tl
+ \xglobal \colorlet { nicematrix-first-row } { . }
+ \fi:
+ \fi:
}
\cs_new_protected:Npn \__nicematrix_tuning_last_row:
{
- \int_compare:nNnT \c@iRow = \l__nicematrix_last_row_int
- {
- \l__nicematrix_code_for_last_row_tl
- \xglobal \colorlet { nicematrix-last-row } { . }
- }
+ \if_int_compare:w \c@iRow = \l__nicematrix_last_row_int
+ \l__nicematrix_code_for_last_row_tl
+ \xglobal \colorlet { nicematrix-last-row } { . }
+ \fi:
}
\cs_set_eq:NN \__nicematrix_tuning_key_small: \prg_do_nothing:
\cs_set_nopar:Npn \__nicematrix_tuning_not_tabular_begin:
{
+ \m@th % added 2024/11/21
\c_math_toggle_token
\__nicematrix_tuning_key_small:
}
@@ -1279,16 +1232,16 @@
{
\int_if_zero:nTF \c@iRow
{
- \dim_gset:Nn \g__nicematrix_dp_row_zero_dim
- { \dim_max:nn \g__nicematrix_dp_row_zero_dim { \box_dp:N \l__nicematrix_cell_box } }
- \dim_gset:Nn \g__nicematrix_ht_row_zero_dim
- { \dim_max:nn \g__nicematrix_ht_row_zero_dim { \box_ht:N \l__nicematrix_cell_box } }
+ \dim_compare:nNnT { \box_dp:N \l__nicematrix_cell_box } > \g__nicematrix_dp_row_zero_dim
+ { \dim_gset:Nn \g__nicematrix_dp_row_zero_dim { \box_dp:N \l__nicematrix_cell_box } }
+ \dim_compare:nNnT { \box_ht:N \l__nicematrix_cell_box } > \g__nicematrix_ht_row_zero_dim
+ { \dim_gset:Nn \g__nicematrix_ht_row_zero_dim { \box_ht:N \l__nicematrix_cell_box } }
}
{
\int_compare:nNnT \c@iRow = \c_one_int
{
- \dim_gset:Nn \g__nicematrix_ht_row_one_dim
- { \dim_max:nn \g__nicematrix_ht_row_one_dim { \box_ht:N \l__nicematrix_cell_box } }
+ \dim_compare:nNnT { \box_ht:N \l__nicematrix_cell_box } > \g__nicematrix_ht_row_one_dim
+ { \dim_gset:Nn \g__nicematrix_ht_row_one_dim { \box_ht:N \l__nicematrix_cell_box } }
}
}
}
@@ -1299,6 +1252,7 @@
{
\hbox_set:Nn \l__nicematrix_cell_box
{
+ \m@th % add 2024/11/21
\c_math_toggle_token
\vcenter { \box_use:N \l__nicematrix_cell_box }
\c_math_toggle_token
@@ -1360,14 +1314,15 @@
{ \box_use_drop:N \l__nicematrix_cell_box }
{
\bool_if:NTF \g__nicematrix_not_empty_cell_bool
- \__nicematrix_node_for_cell:
+ \__nicematrix_print_node_cell:
{
\dim_compare:nNnTF { \box_wd:N \l__nicematrix_cell_box } > \c_zero_dim
- \__nicematrix_node_for_cell:
+ \__nicematrix_print_node_cell:
{ \box_use_drop:N \l__nicematrix_cell_box }
}
}
- \int_gset:Nn \g__nicematrix_col_total_int { \int_max:nn \g__nicematrix_col_total_int \c@jCol }
+ \int_compare:nNnT \c@jCol > \g__nicematrix_col_total_int
+ { \int_gset_eq:NN \g__nicematrix_col_total_int \c@jCol }
\bool_gset_false:N \g__nicematrix_empty_cell_bool
\bool_gset_false:N \g__nicematrix_not_empty_cell_bool
}
@@ -1398,6 +1353,21 @@
minimum~width = \c_zero_dim
}
}
+\socket_new:nn { nicematrix / siunitx-wrap } { 1 }
+\socket_new_plug:nnn { nicematrix / siunitx-wrap } { active }
+ {
+ \use:c
+ {
+ __siunitx_table_align_
+ \bool_if:NTF \l__siunitx_table_text_bool
+ \l__siunitx_table_align_text_tl
+ \l__siunitx_table_align_number_tl
+ :n
+ }
+ { #1 }
+ }
+\cs_new_protected:Npn \__nicematrix_print_node_cell:
+ { \socket_use:nn { nicematrix / siunitx-wrap } { \__nicematrix_node_for_cell: } }
\cs_new_protected:Npn \__nicematrix_node_for_cell:
{
\pgfpicture
@@ -1453,7 +1423,7 @@
{ \__nicematrix_patch_node_for_cell:n { } }
\cs_new_protected:Npn \__nicematrix_instruction_of_type:nnn #1 #2 #3
{
- \bool_if:nTF { #1 } \tl_gput_left:cx \tl_gput_right:cx
+ \bool_if:nTF { #1 } \tl_gput_left:ce \tl_gput_right:ce
{ g__nicematrix_ #2 _ lines _ tl }
{
\use:c { __nicematrix _ draw _ #2 : nnn }
@@ -1462,17 +1432,19 @@
{ \exp_not:n { #3 } }
}
}
-\cs_new_protected:Npn \__nicematrix_array:
+\cs_generate_variant:Nn \__nicematrix_array:n { o }
+\cs_new_protected:Npn \__nicematrix_array:n
{
\dim_set:Nn \col@sep
{ \bool_if:NTF \l__nicematrix_tabular_bool \tabcolsep \arraycolsep }
\dim_compare:nNnTF \l__nicematrix_tabular_width_dim = \c_zero_dim
{ \cs_set_nopar:Npn \@halignto { } }
- { \cs_set_nopar:Npx \@halignto { to \dim_use:N \l__nicematrix_tabular_width_dim } }
+ { \cs_set_nopar:Npe \@halignto { to \dim_use:N \l__nicematrix_tabular_width_dim } }
\@tabarray
- [ \str_if_eq:onTF \l__nicematrix_baseline_tl c c t ]
+ [ \str_if_eq:eeTF \l__nicematrix_baseline_tl c c t ]
}
-\bool_if:NTF \c__nicematrix_tagging_array_bool
+\bool_if:nTF
+ { \c__nicematrix_recent_array_bool && ! \c__nicematrix_revtex_bool }
{ \cs_set_eq:NN \__nicematrix_old_ar@ialign: \ar@ialign }
{ \cs_set_eq:NN \__nicematrix_old_ialign: \ialign }
\cs_new_protected:Npn \__nicematrix_create_row_node:
@@ -1510,10 +1482,9 @@
\endpgfpicture
}
}
-\cs_new:Npn \__nicematrix_everycr: { \noalign { \__nicematrix_everycr_i: } }
-\cs_new_protected:Npn \__nicematrix_everycr_i:
+\cs_new_protected:Npn \__nicematrix_in_everycr:
{
- \bool_if:NT \c__nicematrix_testphase_table_bool
+ \bool_if:NT \c__nicematrix_recent_array_bool
{
\tbl_if_row_was_started:T { \UseTaggingSocket { tbl / row / end } }
\tbl_update_cell_data_for_next_row:
@@ -1523,12 +1494,11 @@
\bool_if:NF \g__nicematrix_row_of_col_done_bool
{
\__nicematrix_create_row_node:
- \tl_if_empty:NF \l__nicematrix_hlines_clist
+ \clist_if_empty:NF \l__nicematrix_hlines_clist
{
- \tl_if_eq:NNF \l__nicematrix_hlines_clist \c__nicematrix_all_tl
+ \str_if_eq:eeF \l__nicematrix_hlines_clist { all }
{
- \exp_args:NNe
- \clist_if_in:NnT
+ \clist_if_in:NeT
\l__nicematrix_hlines_clist
{ \int_eval:n { \c@iRow + 1 } }
}
@@ -1552,30 +1522,18 @@
\cs_set_eq:NN \dots \__nicematrix_Ldots
\cs_set_eq:NN \hdotsfor \__nicematrix_Hdotsfor:
}
-\cs_new_protected:Npn \__nicematrix_test_color_inside:
+\hook_gput_code:nnn { begindocument } { . }
{
- \bool_if:NF \l__nicematrix_color_inside_bool
+ \IfPackageLoadedTF { colortbl }
+ {
+ \cs_set_protected:Npn \__nicematrix_everycr:
+ { \CT@everycr { \noalign { \__nicematrix_in_everycr: } } }
+ }
{
- \bool_if:NF \g__nicematrix_aux_found_bool
- { \__nicematrix_error:n { without~color-inside } }
+ \cs_new_protected:Npn \__nicematrix_everycr:
+ { \everycr { \noalign { \__nicematrix_in_everycr: } } }
}
}
-\cs_new_protected:Npn \__nicematrix_redefine_everycr: { \everycr { \__nicematrix_everycr: } }
- \hook_gput_code:nnn { begindocument } { . }
- {
- \IfPackageLoadedTF { colortbl }
- {
- \cs_set_protected:Npn \__nicematrix_redefine_everycr:
- {
- \CT@everycr
- {
- \noalign { \cs_gset_eq:NN \CT@row@color \prg_do_nothing: }
- \__nicematrix_everycr:
- }
- }
- }
- { }
- }
\hook_gput_code:nnn { begindocument } { . }
{
\IfPackageLoadedTF { booktabs }
@@ -1587,6 +1545,7 @@
}
\cs_new_protected:Npn \__nicematrix_some_initialization:
{
+ \__nicematrix_everycr:
\dim_gset:Nn \g__nicematrix_dp_row_zero_dim { \box_dp:N \@arstrutbox }
\dim_gset:Nn \g__nicematrix_ht_row_zero_dim { \box_ht:N \@arstrutbox }
\dim_gset_eq:NN \g__nicematrix_ht_row_one_dim \g__nicematrix_ht_row_zero_dim
@@ -1616,14 +1575,15 @@
{ \__nicematrix_env: - row - \int_use:N \c@iRow - base }
}
}
- \bool_if:NTF \c__nicematrix_tagging_array_bool
+ \bool_if:nTF
+ { \c__nicematrix_recent_array_bool && ! \c__nicematrix_revtex_bool }
{
\cs_set_nopar:Npn \ar@ialign
{
- \bool_if:NT \c__nicematrix_testphase_table_bool \tbl_init_cell_data_for_table:
- \__nicematrix_redefine_everycr:
- \dim_zero:N \tabskip
+ \bool_if:NT \c__nicematrix_testphase_table_bool
+ \tbl_init_cell_data_for_table:
\__nicematrix_some_initialization:
+ \dim_zero:N \tabskip
\cs_set_eq:NN \ar@ialign \__nicematrix_old_ar@ialign:
\halign
}
@@ -1631,14 +1591,17 @@
{
\cs_set_nopar:Npn \ialign
{
- \__nicematrix_redefine_everycr:
- \dim_zero:N \tabskip
\__nicematrix_some_initialization:
+ \dim_zero:N \tabskip
\cs_set_eq:NN \ialign \__nicematrix_old_ialign:
\halign
}
}
-
+ \bool_if:NT \c__nicematrix_revtex_bool
+ {
+ \IfPackageLoadedT { colortbl }
+ { \cs_set_protected:Npn \CT@setup { } }
+ }
\cs_set_eq:NN \__nicematrix_old_ldots \ldots
\cs_set_eq:NN \__nicematrix_old_cdots \cdots
\cs_set_eq:NN \__nicematrix_old_vdots \vdots
@@ -1663,6 +1626,9 @@
\cs_set_eq:NN \CodeAfter \__nicematrix_CodeAfter:
\cs_set_eq:NN \diagbox \__nicematrix_diagbox:nn
\cs_set_eq:NN \NotEmpty \__nicematrix_NotEmpty:
+ \cs_set_eq:NN \TopRule \__nicematrix_TopRule
+ \cs_set_eq:NN \MidRule \__nicematrix_MidRule
+ \cs_set_eq:NN \BottomRule \__nicematrix_BottomRule
\cs_set_eq:NN \RowStyle \__nicematrix_RowStyle:n
\seq_map_inline:Nn \l__nicematrix_custom_line_commands_seq
{ \cs_set_eq:cc { ##1 } { nicematrix - ##1 } }
@@ -1724,16 +1690,16 @@
{
\tl_put_right:Nn \__nicematrix_update_for_first_and_last_row:
{
- \dim_gset:Nn \g__nicematrix_ht_last_row_dim
- { \dim_max:nn \g__nicematrix_ht_last_row_dim { \box_ht:N \l__nicematrix_cell_box } }
- \dim_gset:Nn \g__nicematrix_dp_last_row_dim
- { \dim_max:nn \g__nicematrix_dp_last_row_dim { \box_dp:N \l__nicematrix_cell_box } }
+ \dim_compare:nNnT \g__nicematrix_ht_last_row_dim < { \box_ht:N \l__nicematrix_cell_box }
+ { \dim_gset:Nn \g__nicematrix_ht_last_row_dim { \box_ht:N \l__nicematrix_cell_box } }
+ \dim_compare:nNnT \g__nicematrix_dp_last_row_dim < { \box_dp:N \l__nicematrix_cell_box }
+ { \dim_gset:Nn \g__nicematrix_dp_last_row_dim { \box_dp:N \l__nicematrix_cell_box } }
}
}
\seq_gclear:N \g__nicematrix_cols_vlism_seq
\seq_gclear:N \g__nicematrix_submatrix_seq
\bool_if:NT \l__nicematrix_code_before_bool \__nicematrix_exec_code_before:
- \seq_gclear:N \g__nicematrix_pos_of_blocks_seq
+ \seq_gset_eq:NN \g__nicematrix_pos_of_blocks_seq \g__nicematrix_future_pos_of_blocks_seq
\seq_gclear_new:N \g__nicematrix_multicolumn_cells_seq
\seq_gclear_new:N \g__nicematrix_multicolumn_sizes_seq
\int_gset:Nn \g__nicematrix_last_row_node_int { -2 }
@@ -1750,14 +1716,15 @@
}
{
\dim_gset:Nn \l__nicematrix_left_delim_dim
- { 2 \bool_if:NTF \l__nicematrix_tabular_bool \tabcolsep \arraycolsep }
+ { 2 \bool_if:NTF \l__nicematrix_tabular_bool \tabcolsep \arraycolsep }
\dim_gset_eq:NN \l__nicematrix_right_delim_dim \l__nicematrix_left_delim_dim
}
\hbox_set:Nw \l__nicematrix_the_array_box
- \bool_if:NT \c__nicematrix_testphase_table_bool
- { \UseTaggingSocket { tbl / hmode / begin } }
\skip_horizontal:N \l__nicematrix_left_margin_dim
\skip_horizontal:N \l__nicematrix_extra_left_margin_dim
+ \bool_if:NT \c__nicematrix_recent_array_bool
+ { \UseTaggingSocket { tbl / hmode / begin } }
+ \m@th
\c_math_toggle_token
\bool_if:NTF \l__nicematrix_light_syntax_bool
{ \use:c { __nicematrix-light-syntax } }
@@ -1768,7 +1735,7 @@
\tl_set:Nn \l_tmpa_tl { #1 }
\int_compare:nNnT { \char_value_catcode:n { 60 } } = { 13 }
{ \__nicematrix_rescan_for_spanish:N \l_tmpa_tl }
- \tl_gput_left:NV \g__nicematrix_pre_code_before_tl \l_tmpa_tl
+ \tl_gput_left:No \g__nicematrix_pre_code_before_tl \l_tmpa_tl
\bool_set_true:N \l__nicematrix_code_before_bool
\__nicematrix_pre_array:
}
@@ -1798,7 +1765,7 @@
\bool_if:NT \g__nicematrix_recreate_cell_nodes_bool \__nicematrix_recreate_cell_nodes:
\endpgfpicture
\__nicematrix_create_blocks_nodes:
- \IfPackageLoadedTF { tikz }
+ \IfPackageLoadedT { tikz }
{
\tikzset
{
@@ -1806,7 +1773,6 @@
{ overlay , name~prefix = \__nicematrix_env: - }
}
}
- { }
\cs_set_eq:NN \cellcolor \__nicematrix_cellcolor
\cs_set_eq:NN \rectanglecolor \__nicematrix_rectanglecolor
\cs_set_eq:NN \roundedrectanglecolor \__nicematrix_roundedrectanglecolor
@@ -1819,9 +1785,13 @@
\cs_set_eq:NN \SubMatrix \__nicematrix_SubMatrix_in_code_before
\cs_set_eq:NN \ShowCellNames \__nicematrix_ShowCellNames
\cs_set_eq:NN \TikzEveryCell \__nicematrix_TikzEveryCell
+ \cs_set_eq:NN \EmptyColumn \__nicematrix_EmptyColumn:n
+ \cs_set_eq:NN \EmptyRow \__nicematrix_EmptyRow:n
}
\cs_new_protected:Npn \__nicematrix_exec_code_before:
{
+ \clist_map_inline:Nn \l__nicematrix_corners_cells_clist
+ { \cs_set_nopar:cpn { __nicematrix _ corner _ ##1 } { } }
\seq_gclear_new:N \g__nicematrix_colors_seq
\__nicematrix_add_to_colors_seq:nn { { nocolor } } { }
\bool_gset_false:N \g__nicematrix_recreate_cell_nodes_bool
@@ -1829,7 +1799,7 @@
\bool_if:NT \l__nicematrix_tabular_bool \c_math_toggle_token
\int_compare:nNnT { \char_value_catcode:n { 60 } } = { 13 }
{ \__nicematrix_rescan_for_spanish:N \l__nicematrix_code_before_tl }
- \exp_last_unbraced:NV \__nicematrix_CodeBefore_keys:
+ \exp_last_unbraced:No \__nicematrix_CodeBefore_keys:
\g__nicematrix_pre_code_before_tl
\__nicematrix_actually_color:
\l__nicematrix_code_before_tl
@@ -1933,18 +1903,18 @@
\cs_new_protected:Npn \__nicematrix_patch_for_revtex:
{
\cs_set_eq:NN \@addamp \@addamp@LaTeX
- \cs_set_eq:NN \insert@column \insert@column@array
- \cs_set_eq:NN \@classx \@classx@array
- \cs_set_eq:NN \@xarraycr \@xarraycr@array
- \cs_set_eq:NN \@arraycr \@arraycr@array
- \cs_set_eq:NN \@xargarraycr \@xargarraycr@array
- \cs_set_eq:NN \array \array@array
\cs_set_eq:NN \@array \@array@array
\cs_set_eq:NN \@tabular \@tabular@array
- \cs_set_eq:NN \@mkpream \@mkpream@array
- \cs_set_eq:NN \endarray \endarray@array
\cs_set:Npn \@tabarray { \@ifnextchar [ { \@array } { \@array [ c ] } }
+ \cs_set_eq:NN \array \array@array
+ \cs_set_eq:NN \endarray \endarray@array
\cs_set:Npn \endtabular { \endarray $\egroup} % $
+ \cs_set_eq:NN \@mkpream \@mkpream@array
+ \cs_set_eq:NN \@classx \@classx@array
+ \cs_set_eq:NN \insert@column \insert@column@array
+ \cs_set_eq:NN \@arraycr \@arraycr@array
+ \cs_set_eq:NN \@xarraycr \@xarraycr@array
+ \cs_set_eq:NN \@xargarraycr \@xargarraycr@array
}
\NewDocumentEnvironment { NiceArrayWithDelims }
{ m m O { } m ! O { } t \CodeBefore }
@@ -1994,7 +1964,7 @@
\tl_if_empty:NF \g__nicematrix_code_before_tl
{
\bool_set_true:N \l__nicematrix_code_before_bool
- \tl_put_right:NV \l__nicematrix_code_before_tl \g__nicematrix_code_before_tl
+ \tl_put_right:No \l__nicematrix_code_before_tl \g__nicematrix_code_before_tl
}
\tl_if_empty:NF \g__nicematrix_pre_code_before_tl
{ \bool_set_true:N \l__nicematrix_code_before_bool }
@@ -2025,37 +1995,15 @@
}
}
\hbox_set_end:
+ \bool_if:NT \c__nicematrix_recent_array_bool
+ { \UseTaggingSocket { tbl / hmode / end } }
\bool_if:NT \l__nicematrix_width_used_bool
{
\int_if_zero:nT \g__nicematrix_total_X_weight_int
{ \__nicematrix_error_or_warning:n { width~without~X~columns } }
}
\int_compare:nNnT \g__nicematrix_total_X_weight_int > \c_zero_int
- {
- \tl_gput_right:Nx \g__nicematrix_aux_tl
- {
- \bool_set_true:N \l__nicematrix_X_columns_aux_bool
- \dim_set:Nn \l__nicematrix_X_columns_dim
- {
- \dim_compare:nNnTF
- {
- \dim_abs:n
- { \l__nicematrix_width_dim - \box_wd:N \l__nicematrix_the_array_box }
- }
- <
- { 0.001 pt }
- { \dim_use:N \l__nicematrix_X_columns_dim }
- {
- \dim_eval:n
- {
- ( \l__nicematrix_width_dim - \box_wd:N \l__nicematrix_the_array_box )
- / \int_use:N \g__nicematrix_total_X_weight_int
- + \l__nicematrix_X_columns_dim
- }
- }
- }
- }
- }
+ { \__nicematrix_compute_width_X: }
\int_compare:nNnT \l__nicematrix_last_row_int > { -2 }
{
\bool_if:NF \l__nicematrix_last_row_without_value_bool
@@ -2080,10 +2028,10 @@
{ \skip_horizontal:N \g__nicematrix_width_first_col_dim }
\bool_if:nTF { ! \g__nicematrix_delims_bool }
{
- \tl_if_eq:NNTF \l__nicematrix_baseline_tl \c__nicematrix_c_tl
+ \str_if_eq:eeTF \l__nicematrix_baseline_tl { c }
\__nicematrix_use_arraybox_with_notes_c:
{
- \tl_if_eq:NNTF \l__nicematrix_baseline_tl \c__nicematrix_b_tl
+ \str_if_eq:eeTF \l__nicematrix_baseline_tl { b }
\__nicematrix_use_arraybox_with_notes_b:
\__nicematrix_use_arraybox_with_notes:
}
@@ -2103,6 +2051,7 @@
{ \dim_zero:N \l_tmpb_dim }
\hbox_set:Nn \l_tmpa_box
{
+ \m@th % added 2024/11/21
\c_math_toggle_token
\__nicematrix_color:o \l__nicematrix_delimiters_color_tl
\exp_after:wN \left \g__nicematrix_left_delim_tl
@@ -2138,13 +2087,13 @@
\bool_if:NT \l__nicematrix_preamble_bool
{
\int_compare:nNnT \c@jCol < \g__nicematrix_static_num_of_col_int
- { \__nicematrix_warning_gredirect_none:n { columns~not~used } }
+ { \__nicematrix_warning_gredirect_none:n { columns~not~used } }
}
\__nicematrix_after_array:
\egroup
\iow_now:Nn \@mainaux { \ExplSyntaxOn }
\iow_now:Nn \@mainaux { \char_set_catcode_space:n { 32 } }
- \iow_now:Nx \@mainaux
+ \iow_now:Ne \@mainaux
{
\tl_gset:cn { c__nicematrix_ \int_use:N \g__nicematrix_env_int _ tl }
{ \exp_not:o \g__nicematrix_aux_tl }
@@ -2152,6 +2101,32 @@
\iow_now:Nn \@mainaux { \ExplSyntaxOff }
\bool_if:NT \g__nicematrix_footnote_bool \endsavenotes
}
+\cs_new_protected:Npn \__nicematrix_compute_width_X:
+ {
+ \tl_gput_right:Ne \g__nicematrix_aux_tl
+ {
+ \bool_set_true:N \l__nicematrix_X_columns_aux_bool
+ \dim_set:Nn \l__nicematrix_X_columns_dim
+ {
+ \dim_compare:nNnTF
+ {
+ \dim_abs:n
+ { \l__nicematrix_width_dim - \box_wd:N \l__nicematrix_the_array_box }
+ }
+ <
+ { 0.001 pt }
+ { \dim_use:N \l__nicematrix_X_columns_dim }
+ {
+ \dim_eval:n
+ {
+ ( \l__nicematrix_width_dim - \box_wd:N \l__nicematrix_the_array_box )
+ / \int_use:N \g__nicematrix_total_X_weight_int
+ + \l__nicematrix_X_columns_dim
+ }
+ }
+ }
+ }
+ }
\cs_new_protected:Npn \__nicematrix_transform_preamble:
{
\__nicematrix_transform_preamble_i:
@@ -2165,7 +2140,7 @@
\tl_gclear_new:N \g__nicematrix_pre_cell_tl
\int_zero:N \l_tmpa_int
\tl_gclear:N \g__nicematrix_array_preamble_tl
- \tl_if_eq:NNTF \l__nicematrix_vlines_clist \c__nicematrix_all_tl
+ \str_if_eq:eeTF \l__nicematrix_vlines_clist { all }
{
\tl_gset:Nn \g__nicematrix_array_preamble_tl
{ ! { \skip_horizontal:N \arrayrulewidth } }
@@ -2177,7 +2152,7 @@
{ ! { \skip_horizontal:N \arrayrulewidth } }
}
}
- \exp_last_unbraced:NV \__nicematrix_rec_preamble:n \g__nicematrix_user_preamble_tl \stop
+ \exp_last_unbraced:No \__nicematrix_rec_preamble:n \g__nicematrix_user_preamble_tl \__nicematrix_stop:
\int_gset_eq:NN \g__nicematrix_static_num_of_col_int \c@jCol
\__nicematrix_replace_columncolor:
}
@@ -2215,7 +2190,7 @@
{
\bool_if:NF \l__nicematrix_tabular_bool
{
- \tl_if_empty:NT \l__nicematrix_vlines_clist
+ \clist_if_empty:NT \l__nicematrix_vlines_clist
{
\bool_if:NF \l__nicematrix_exterior_arraycolsep_bool
{ \tl_gput_left:Nn \g__nicematrix_array_preamble_tl { @ { } } }
@@ -2230,7 +2205,7 @@
{
\bool_if:NF \l__nicematrix_tabular_bool
{
- \tl_if_empty:NT \l__nicematrix_vlines_clist
+ \clist_if_empty:NT \l__nicematrix_vlines_clist
{
\bool_if:NF \l__nicematrix_exterior_arraycolsep_bool
{ \tl_gput_right:Nn \g__nicematrix_array_preamble_tl { @ { } } }
@@ -2238,11 +2213,14 @@
}
}
}
- \dim_compare:nNnT \l__nicematrix_tabular_width_dim = \c_zero_dim
- {
- \tl_gput_right:Nn \g__nicematrix_array_preamble_tl
- { > { \__nicematrix_error_too_much_cols: } l }
- }
+ \dim_compare:nNnT \l__nicematrix_tabular_width_dim = \c_zero_dim
+ {
+ \bool_if:NF \c__nicematrix_testphase_table_bool
+ {
+ \tl_gput_right:Nn \g__nicematrix_array_preamble_tl
+ { > { \__nicematrix_error_too_much_cols: } l }
+ }
+ }
}
\cs_new_protected:Npn \__nicematrix_rec_preamble:n #1
{
@@ -2252,70 +2230,70 @@
\cs_if_exist:cTF { NC @ find @ #1 }
{
\tl_set_eq:Nc \l_tmpb_tl { NC @ rewrite @ #1 }
- \exp_last_unbraced:NV \__nicematrix_rec_preamble:n \l_tmpb_tl
+ \exp_last_unbraced:No \__nicematrix_rec_preamble:n \l_tmpb_tl
}
{
- \tl_if_eq:nnT { #1 } { S }
+ \str_if_eq:nnTF { #1 } { S }
{ \__nicematrix_fatal:n { unknown~column~type~S } }
{ \__nicematrix_fatal:nn { unknown~column~type } { #1 } }
}
}
}
-\cs_new:Npn \__nicematrix_c #1
+\cs_new_protected:Npn \__nicematrix_c #1
{
\tl_gput_right:No \g__nicematrix_array_preamble_tl \g__nicematrix_pre_cell_tl
\tl_gclear:N \g__nicematrix_pre_cell_tl
\tl_gput_right:Nn \g__nicematrix_array_preamble_tl
- { > \__nicematrix_cell_begin:w c < \__nicematrix_cell_end: }
+ { > \__nicematrix_cell_begin: c < \__nicematrix_cell_end: }
\int_gincr:N \c@jCol
\__nicematrix_rec_preamble_after_col:n
}
-\cs_new:Npn \__nicematrix_l #1
+\cs_new_protected:Npn \__nicematrix_l #1
{
\tl_gput_right:No \g__nicematrix_array_preamble_tl \g__nicematrix_pre_cell_tl
\tl_gclear:N \g__nicematrix_pre_cell_tl
\tl_gput_right:Nn \g__nicematrix_array_preamble_tl
{
- > { \__nicematrix_cell_begin:w \tl_set_eq:NN \l__nicematrix_hpos_cell_tl \c__nicematrix_l_tl }
+ > { \__nicematrix_cell_begin: \tl_set_eq:NN \l__nicematrix_hpos_cell_tl \c__nicematrix_l_tl }
l
< \__nicematrix_cell_end:
}
\int_gincr:N \c@jCol
\__nicematrix_rec_preamble_after_col:n
}
-\cs_new:Npn \__nicematrix_r #1
+\cs_new_protected:Npn \__nicematrix_r #1
{
\tl_gput_right:No \g__nicematrix_array_preamble_tl \g__nicematrix_pre_cell_tl
\tl_gclear:N \g__nicematrix_pre_cell_tl
\tl_gput_right:Nn \g__nicematrix_array_preamble_tl
{
- > { \__nicematrix_cell_begin:w \tl_set_eq:NN \l__nicematrix_hpos_cell_tl \c__nicematrix_r_tl }
+ > { \__nicematrix_cell_begin: \tl_set_eq:NN \l__nicematrix_hpos_cell_tl \c__nicematrix_r_tl }
r
< \__nicematrix_cell_end:
}
\int_gincr:N \c@jCol
\__nicematrix_rec_preamble_after_col:n
}
-\cs_new:cpn { __nicematrix _ \token_to_str:N ! } #1 #2
+\cs_new_protected:cpn { __nicematrix _ \token_to_str:N ! } #1 #2
{
\tl_gput_right:Nn \g__nicematrix_array_preamble_tl { #1 { #2 } }
\__nicematrix_rec_preamble:n
}
\cs_set_eq:cc { __nicematrix _ \token_to_str:N @ } { __nicematrix _ \token_to_str:N ! }
-\cs_new:cpn { __nicematrix _ | } #1
+\cs_new_protected:cpn { __nicematrix _ | } #1
{
\int_incr:N \l_tmpa_int
\__nicematrix_make_preamble_i_i:n
}
\cs_new_protected:Npn \__nicematrix_make_preamble_i_i:n #1
{
- \str_if_eq:nnTF { #1 } |
+ \str_if_eq:nnTF { #1 } { | }
{ \use:c { __nicematrix _ | } | }
{ \__nicematrix_make_preamble_i_ii:nn { } #1 }
}
\cs_new_protected:Npn \__nicematrix_make_preamble_i_ii:nn #1 #2
{
- \str_if_eq:nnTF { #2 } [
+ \str_if_eq:nnTF { #2 } { [ }
{ \__nicematrix_make_preamble_i_ii:nw { #1 } [ }
{ \__nicematrix_make_preamble_i_iii:nn { #2 } { #1 } }
}
@@ -2324,11 +2302,11 @@
\cs_new_protected:Npn \__nicematrix_make_preamble_i_iii:nn #1 #2
{
\__nicematrix_compute_rule_width:n { multiplicity = \l_tmpa_int , #2 }
- \tl_gput_right:Nx \g__nicematrix_array_preamble_tl
+ \tl_gput_right:Ne \g__nicematrix_array_preamble_tl
{
- \exp_not:N ! { \skip_horizontal:n { \dim_eval:n { \l__nicematrix_rule_width_dim } } }
+ \exp_not:N ! { \skip_horizontal:N \dim_use:N \l__nicematrix_rule_width_dim }
}
- \tl_gput_right:Nx \g__nicematrix_pre_code_after_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_after_tl
{
\__nicematrix_vline:n
{
@@ -2339,10 +2317,10 @@
}
}
\int_zero:N \l_tmpa_int
- \str_if_eq:nnT { #1 } { \stop } { \bool_gset_true:N \g_tmpb_bool }
+ \str_if_eq:nnT { #1 } { \__nicematrix_stop: } { \bool_gset_true:N \g_tmpb_bool }
\__nicematrix_rec_preamble:n #1
}
-\cs_new:cpn { __nicematrix _ > } #1 #2
+\cs_new_protected:cpn { __nicematrix _ > } #1 #2
{
\tl_gput_right:Nn \g__nicematrix_pre_cell_tl { > { #2 } }
\__nicematrix_rec_preamble:n
@@ -2356,31 +2334,7 @@
c .value_forbidden:n = true ,
l .code:n = \str_set_eq:NN \l__nicematrix_hpos_col_str \c__nicematrix_l_str ,
l .value_forbidden:n = true ,
- R .code:n =
- \IfPackageLoadedTF { ragged2e }
- { \str_set_eq:NN \l__nicematrix_hpos_col_str \c__nicematrix_R_str }
- {
- \__nicematrix_error_or_warning:n { ragged2e~not~loaded }
- \str_set_eq:NN \l__nicematrix_hpos_col_str \c__nicematrix_r_str
- } ,
- R .value_forbidden:n = true ,
- L .code:n =
- \IfPackageLoadedTF { ragged2e }
- { \str_set_eq:NN \l__nicematrix_hpos_col_str \c__nicematrix_L_stsr }
- {
- \__nicematrix_error_or_warning:n { ragged2e~not~loaded }
- \str_set_eq:NN \l__nicematrix_hpos_col_str \c__nicematrix_l_str
- } ,
- L .value_forbidden:n = true ,
- C .code:n =
- \IfPackageLoadedTF { ragged2e }
- { \str_set_eq:NN \l__nicematrix_hpos_col_str \c__nicematrix_C_str }
- {
- \__nicematrix_error_or_warning:n { ragged2e~not~loaded }
- \str_set_eq:NN \l__nicematrix_hpos_col_str \c__nicematrix_c_str
- } ,
- C .value_forbidden:n = true ,
- S .code:n = \str_set_eq:NN \l__nicematrix_hpos_col_str \c__nicematrix_si_str ,
+ S .code:n = \str_set:Nn \l__nicematrix_hpos_col_str { si } ,
S .value_forbidden:n = true ,
p .code:n = \str_set:Nn \l__nicematrix_vpos_col_str { p } ,
p .value_forbidden:n = true ,
@@ -2388,9 +2342,9 @@
m .code:n = \str_set:Nn \l__nicematrix_vpos_col_str { m } ,
m .value_forbidden:n = true ,
b .code:n = \str_set:Nn \l__nicematrix_vpos_col_str { b } ,
- b .value_forbidden:n = true ,
+ b .value_forbidden:n = true
}
-\cs_new:Npn \__nicematrix_p #1
+\cs_new_protected:Npn \__nicematrix_p #1
{
\str_set:Nn \l__nicematrix_vpos_col_str { #1 }
\__nicematrix_make_preamble_ii_i:n
@@ -2407,7 +2361,7 @@
{ \__nicematrix_make_preamble_ii_iii:nn { #1 } }
\cs_new_protected:Npn \__nicematrix_make_preamble_ii_iii:nn #1 #2
{
- \str_set_eq:NN \l__nicematrix_hpos_col_str \c__nicematrix_j_str
+ \str_set:Nn \l__nicematrix_hpos_col_str { j }
\__nicematrix_keys_p_column:n { #1 }
\__nicematrix_make_preamble_ii_iv:nnn { #2 } { minipage } { }
}
@@ -2418,29 +2372,37 @@
\use:e
{
\__nicematrix_make_preamble_ii_v:nnnnnnnn
- { \str_if_eq:onTF \l__nicematrix_vpos_col_str { p } { t } { b } }
+ { \str_if_eq:eeTF \l__nicematrix_vpos_col_str { p } { t } { b } }
{ \dim_eval:n { #1 } }
{
- \str_if_eq:NNTF \l__nicematrix_hpos_col_str \c__nicematrix_j_str
+ \str_if_eq:eeTF \l__nicematrix_hpos_col_str { j }
{ \tl_clear:N \exp_not:N \l__nicematrix_hpos_cell_tl }
{
\cs_set_nopar:Npn \exp_not:N \l__nicematrix_hpos_cell_tl
{ \str_lowercase:o \l__nicematrix_hpos_col_str }
}
- \str_case:on \l__nicematrix_hpos_col_str
+ \IfPackageLoadedTF { ragged2e }
{
- c { \exp_not:N \centering }
- l { \exp_not:N \raggedright }
- r { \exp_not:N \raggedleft }
- C { \exp_not:N \Centering }
- L { \exp_not:N \RaggedRight }
- R { \exp_not:N \RaggedLeft }
+ \str_case:on \l__nicematrix_hpos_col_str
+ {
+ c { \exp_not:N \Centering }
+ l { \exp_not:N \RaggedRight }
+ r { \exp_not:N \RaggedLeft }
+ }
+ }
+ {
+ \str_case:on \l__nicematrix_hpos_col_str
+ {
+ c { \exp_not:N \centering }
+ l { \exp_not:N \raggedright }
+ r { \exp_not:N \raggedleft }
+ }
}
#3
}
- { \str_if_eq:onT \l__nicematrix_vpos_col_str { m } \__nicematrix_center_cell_box: }
- { \str_if_eq:onT \l__nicematrix_hpos_col_str { si } \siunitx_cell_begin:w }
- { \str_if_eq:onT \l__nicematrix_hpos_col_str { si } \siunitx_cell_end: }
+ { \str_if_eq:eeT \l__nicematrix_vpos_col_str { m } \__nicematrix_center_cell_box: }
+ { \str_if_eq:eeT \l__nicematrix_hpos_col_str { si } \siunitx_cell_begin:w }
+ { \str_if_eq:eeT \l__nicematrix_hpos_col_str { si } \siunitx_cell_end: }
{ #2 }
{
\str_case:onF \l__nicematrix_hpos_col_str
@@ -2456,9 +2418,12 @@
}
\cs_new_protected:Npn \__nicematrix_make_preamble_ii_v:nnnnnnnn #1 #2 #3 #4 #5 #6 #7 #8
{
- \tl_if_eq:NNTF \l__nicematrix_hpos_col_str \c__nicematrix_si_str
- { \tl_gput_right:Nn \g__nicematrix_array_preamble_tl { > { \__nicematrix_test_if_empty_for_S: } } }
- { \tl_gput_right:Nn \g__nicematrix_array_preamble_tl { > { \__nicematrix_test_if_empty: } } }
+ \str_if_eq:eeTF \l__nicematrix_hpos_col_str { si }
+ {
+ \tl_gput_right:Nn \g__nicematrix_array_preamble_tl
+ { > \__nicematrix_test_if_empty_for_S: }
+ }
+ { \tl_gput_right:Nn \g__nicematrix_array_preamble_tl { > \__nicematrix_test_if_empty: } }
\tl_gput_right:No \g__nicematrix_array_preamble_tl \g__nicematrix_pre_cell_tl
\tl_gclear:N \g__nicematrix_pre_cell_tl
\tl_gput_right:Nn \g__nicematrix_array_preamble_tl
@@ -2467,7 +2432,7 @@
\dim_set:Nn \l__nicematrix_col_width_dim { #2 }
\bool_if:NT \c__nicematrix_testphase_table_bool
{ \tag_struct_begin:n { tag = Div } }
- \__nicematrix_cell_begin:w
+ \__nicematrix_cell_begin:
\use:c { #7 } [ #1 ] { #2 }
\everypar
{
@@ -2491,43 +2456,34 @@
}
}
}
-\str_new:N \c__nicematrix_ignorespaces_str
-\str_set:Nx \c__nicematrix_ignorespaces_str { \ignorespaces }
-\str_remove_all:Nn \c__nicematrix_ignorespaces_str { ~ }
-\cs_new_protected:Npn \__nicematrix_test_if_empty:
- { \peek_after:Nw \__nicematrix_test_if_empty_i: }
-\cs_new_protected:Npn \__nicematrix_test_if_empty_i:
+\cs_new_protected:Npn \__nicematrix_test_if_empty: \ignorespaces
{
- \str_set:Nx \l_tmpa_str { \token_to_meaning:N \l_peek_token }
- \str_if_eq:NNT \l_tmpa_str \c__nicematrix_ignorespaces_str
- { \__nicematrix_test_if_empty:w }
+ \group_align_safe_begin:
+ \peek_meaning:NTF &
+ \__nicematrix_the_cell_is_empty:
+ {
+ \peek_meaning:NTF \\
+ \__nicematrix_the_cell_is_empty:
+ {
+ \peek_meaning:NTF \crcr
+ \__nicematrix_the_cell_is_empty:
+ \group_align_safe_end:
+ }
+ }
}
-\cs_new_protected:Npn \__nicematrix_test_if_empty:w \ignorespaces
- { \peek_after:Nw \__nicematrix_test_if_empty_ii: }
-\cs_new_protected:Npn \__nicematrix_nullify_cell:
+\cs_new_protected:Npn \__nicematrix_the_cell_is_empty:
{
+ \group_align_safe_end:
\tl_gput_right:Nn \g__nicematrix_cell_after_hook_tl
{
\box_set_wd:Nn \l__nicematrix_cell_box \c_zero_dim
\skip_horizontal:N \l__nicematrix_col_width_dim
}
}
-\bool_if:NTF \c__nicematrix_tagging_array_bool
- {
- \cs_new_protected:Npn \__nicematrix_test_if_empty_ii:
- { \peek_meaning:NT \textonly@unskip \__nicematrix_nullify_cell: }
- }
- {
- \cs_new_protected:Npn \__nicematrix_test_if_empty_ii:
- { \peek_meaning:NT \unskip \__nicematrix_nullify_cell: }
- }
\cs_new_protected:Npn \__nicematrix_test_if_empty_for_S:
{
\peek_meaning:NT \__siunitx_table_skip:n
- {
- \tl_gput_right:Nn \g__nicematrix_cell_after_hook_tl
- { \box_set_wd:Nn \l__nicematrix_cell_box \c_zero_dim }
- }
+ { \bool_gset_true:N \g__nicematrix_empty_cell_bool }
}
\cs_new_protected:Npn \__nicematrix_center_cell_box:
{
@@ -2543,16 +2499,16 @@
\box_move_down:nn
{
( \box_ht:N \l__nicematrix_cell_box - \box_ht:N \@arstrutbox
- + \baselineskip ) / 2
+ + \baselineskip ) / 2
}
{ \box_use:N \l__nicematrix_cell_box }
}
}
}
}
-\cs_new:Npn \__nicematrix_V #1 #2
+\cs_new_protected:Npn \__nicematrix_V #1 #2
{
- \str_if_eq:nnTF { #2 } { [ }
+ \str_if_eq:nnTF { #1 } { [ }
{ \__nicematrix_make_preamble_V_i:w [ }
{ \__nicematrix_make_preamble_V_i:w [ ] { #2 } }
}
@@ -2561,7 +2517,7 @@
\cs_new_protected:Npn \__nicematrix_make_preamble_V_ii:nn #1 #2
{
\str_set:Nn \l__nicematrix_vpos_col_str { p }
- \str_set_eq:NN \l__nicematrix_hpos_col_str \c__nicematrix_j_str
+ \str_set:Nn \l__nicematrix_hpos_col_str { j }
\__nicematrix_keys_p_column:n { #1 }
\IfPackageLoadedTF { varwidth }
{ \__nicematrix_make_preamble_ii_iv:nnn { #2 } { varwidth } { } }
@@ -2570,8 +2526,8 @@
\__nicematrix_make_preamble_ii_iv:nnn { #2 } { minipage } { }
}
}
-\cs_new:Npn \__nicematrix_w { \__nicematrix_make_preamble_w:nnnn { } }
-\cs_new:Npn \__nicematrix_W { \__nicematrix_make_preamble_w:nnnn { \__nicematrix_special_W: } }
+\cs_new_protected:Npn \__nicematrix_w { \__nicematrix_make_preamble_w:nnnn { } }
+\cs_new_protected:Npn \__nicematrix_W { \__nicematrix_make_preamble_w:nnnn { \__nicematrix_special_W: } }
\cs_new_protected:Npn \__nicematrix_make_preamble_w:nnnn #1 #2 #3 #4
{
\str_if_eq:nnTF { #3 } { s }
@@ -2586,7 +2542,7 @@
{
> {
\dim_set:Nn \l__nicematrix_col_width_dim { #2 }
- \__nicematrix_cell_begin:w
+ \__nicematrix_cell_begin:
\tl_set_eq:NN \l__nicematrix_hpos_cell_tl \c__nicematrix_c_tl
}
c
@@ -2609,7 +2565,7 @@
> {
\dim_set:Nn \l__nicematrix_col_width_dim { #4 }
\hbox_set:Nw \l__nicematrix_cell_box
- \__nicematrix_cell_begin:w
+ \__nicematrix_cell_begin:
\cs_set_nopar:Npn \l__nicematrix_hpos_cell_tl { #3 }
}
c
@@ -2629,7 +2585,7 @@
\dim_compare:nNnT { \box_wd:N \l__nicematrix_cell_box } > \l__nicematrix_col_width_dim
{ \__nicematrix_warning:n { W~warning } }
}
-\cs_new:Npn \__nicematrix_S #1 #2
+\cs_new_protected:Npn \__nicematrix_S #1 #2
{
\str_if_eq:nnTF { #2 } { [ }
{ \__nicematrix_make_preamble_S:w [ }
@@ -2639,26 +2595,35 @@
{ \__nicematrix_make_preamble_S_i:n { #1 } }
\cs_new_protected:Npn \__nicematrix_make_preamble_S_i:n #1
{
- \IfPackageLoadedTF { siunitx }
+ \IfPackageLoadedF { siunitx } { \__nicematrix_fatal:n { siunitx~not~loaded } }
+ \tl_gput_right:No \g__nicematrix_array_preamble_tl \g__nicematrix_pre_cell_tl
+ \tl_gclear:N \g__nicematrix_pre_cell_tl
+ \tl_gput_right:Nn \g__nicematrix_array_preamble_tl
{
- \tl_gput_right:No \g__nicematrix_array_preamble_tl \g__nicematrix_pre_cell_tl
- \tl_gclear:N \g__nicematrix_pre_cell_tl
- \tl_gput_right:Nn \g__nicematrix_array_preamble_tl
+ > {
+ \socket_assign_plug:nn { nicematrix / siunitx-wrap } { active }
+ \keys_set:nn { siunitx } { #1 }
+ \__nicematrix_cell_begin:
+ \siunitx_cell_begin:w
+ }
+ c
+ <
{
- > {
- \__nicematrix_cell_begin:w
- \keys_set:nn { siunitx } { #1 }
- \siunitx_cell_begin:w
+ \siunitx_cell_end:
+ \tl_gput_right:Ne \g__nicematrix_cell_after_hook_tl
+ {
+ \bool_if:NTF \l__siunitx_table_text_bool
+ \bool_set_true:N
+ \bool_set_false:N
+ \l__siunitx_table_text_bool
}
- c
- < { \siunitx_cell_end: \__nicematrix_cell_end: }
+ \__nicematrix_cell_end:
}
- \int_gincr:N \c@jCol
- \__nicematrix_rec_preamble_after_col:n
}
- { \__nicematrix_fatal:n { siunitx~not~loaded } }
+ \int_gincr:N \c@jCol
+ \__nicematrix_rec_preamble_after_col:n
}
-\cs_new:cpn { __nicematrix _ \token_to_str:N ( } #1 #2
+\cs_new_protected:cpn { __nicematrix _ \token_to_str:N ( } #1 #2
{
\bool_if:NT \l__nicematrix_small_bool { \__nicematrix_fatal:n { Delimiter~with~small } }
\int_if_zero:nTF \c@jCol
@@ -2680,7 +2645,7 @@
\cs_set_eq:cc { __nicematrix _ \token_to_str:N \{ } { __nicematrix _ \token_to_str:N ( }
\cs_new_protected:Npn \__nicematrix_make_preamble_iv:nn #1 #2
{
- \tl_gput_right:Nx \g__nicematrix_pre_code_after_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_after_tl
{ \__nicematrix_delimiter:nnn #1 { \int_eval:n { \c@jCol + 1 } } \c_true_bool }
\tl_if_in:nnTF { ( [ \{ ) ] \} \left \right } { #2 }
{
@@ -2689,20 +2654,21 @@
}
{ \__nicematrix_rec_preamble:n #2 }
}
-\cs_new:cpn { __nicematrix _ \token_to_str:N \left } #1 { \use:c { __nicematrix _ \token_to_str:N ( } }
-\cs_new:cpn { __nicematrix _ \token_to_str:N ) } #1 #2
+\cs_new_protected:cpn { __nicematrix _ \token_to_str:N \left } #1
+ { \use:c { __nicematrix _ \token_to_str:N ( } }
+\cs_new_protected:cpn { __nicematrix _ \token_to_str:N ) } #1 #2
{
\bool_if:NT \l__nicematrix_small_bool { \__nicematrix_fatal:n { Delimiter~with~small } }
\tl_if_in:nnTF { ) ] \} } { #2 }
{ \__nicematrix_make_preamble_v:nnn #1 #2 }
{
- \tl_if_eq:nnTF { \stop } { #2 }
+ \str_if_eq:nnTF { \__nicematrix_stop: } { #2 }
{
\tl_if_eq:NNTF \g__nicematrix_right_delim_tl \c__nicematrix_dot_tl
{ \tl_gset:Nn \g__nicematrix_right_delim_tl { #1 } }
{
\tl_gput_right:Nn \g__nicematrix_array_preamble_tl { ! { \enskip } }
- \tl_gput_right:Nx \g__nicematrix_pre_code_after_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_after_tl
{ \__nicematrix_delimiter:nnn #1 { \int_use:N \c@jCol } \c_false_bool }
\__nicematrix_rec_preamble:n #2
}
@@ -2710,7 +2676,7 @@
{
\tl_if_in:nnT { ( [ \{ \left } { #2 }
{ \tl_gput_right:Nn \g__nicematrix_array_preamble_tl { ! { \enskip } } }
- \tl_gput_right:Nx \g__nicematrix_pre_code_after_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_after_tl
{ \__nicematrix_delimiter:nnn #1 { \int_use:N \c@jCol } \c_false_bool }
\__nicematrix_rec_preamble:n #2
}
@@ -2720,31 +2686,31 @@
\cs_set_eq:cc { __nicematrix _ \token_to_str:N \} } { __nicematrix _ \token_to_str:N ) }
\cs_new_protected:Npn \__nicematrix_make_preamble_v:nnn #1 #2 #3
{
- \tl_if_eq:nnTF { \stop } { #3 }
+ \str_if_eq:nnTF { \__nicematrix_stop: } { #3 }
{
\tl_if_eq:NNTF \g__nicematrix_right_delim_tl \c__nicematrix_dot_tl
{
\tl_gput_right:Nn \g__nicematrix_array_preamble_tl { ! { \enskip } }
- \tl_gput_right:Nx \g__nicematrix_pre_code_after_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_after_tl
{ \__nicematrix_delimiter:nnn #1 { \int_use:N \c@jCol } \c_false_bool }
\tl_gset:Nn \g__nicematrix_right_delim_tl { #2 }
}
{
\tl_gput_right:Nn \g__nicematrix_array_preamble_tl { ! { \enskip } }
- \tl_gput_right:Nx \g__nicematrix_pre_code_after_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_after_tl
{ \__nicematrix_delimiter:nnn #1 { \int_use:N \c@jCol } \c_false_bool }
\__nicematrix_error:nn { double~closing~delimiter } { #2 }
}
}
{
- \tl_gput_right:Nx \g__nicematrix_pre_code_after_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_after_tl
{ \__nicematrix_delimiter:nnn #1 { \int_use:N \c@jCol } \c_false_bool }
\__nicematrix_error:nn { double~closing~delimiter } { #2 }
\__nicematrix_rec_preamble:n #3
}
}
-\cs_new:cpn { __nicematrix _ \token_to_str:N \right } #1
- { \use:c { __nicematrix _ \token_to_str:N ) } }
+\cs_new_protected:cpn { __nicematrix _ \token_to_str:N \right } #1
+ { \use:c { __nicematrix _ \token_to_str:N ) } }
\cs_new_protected:Npn \__nicematrix_rec_preamble_after_col:n #1
{
\str_if_eq:nnTF { #1 } { < }
@@ -2753,14 +2719,14 @@
\str_if_eq:nnTF { #1 } { @ }
\__nicematrix_rec_preamble_after_col_ii:n
{
- \tl_if_eq:NNTF \l__nicematrix_vlines_clist \c__nicematrix_all_tl
+ \str_if_eq:eeTF \l__nicematrix_vlines_clist { all }
{
\tl_gput_right:Nn \g__nicematrix_array_preamble_tl
{ ! { \skip_horizontal:N \arrayrulewidth } }
}
{
- \exp_args:NNe
- \clist_if_in:NnT \l__nicematrix_vlines_clist { \int_eval:n { \c@jCol + 1 } }
+ \clist_if_in:NeT \l__nicematrix_vlines_clist
+ { \int_eval:n { \c@jCol + 1 } }
{
\tl_gput_right:Nn \g__nicematrix_array_preamble_tl
{ ! { \skip_horizontal:N \arrayrulewidth } }
@@ -2777,14 +2743,13 @@
}
\cs_new_protected:Npn \__nicematrix_rec_preamble_after_col_ii:n #1
{
- \tl_if_eq:NNTF \l__nicematrix_vlines_clist \c__nicematrix_all_tl
+ \str_if_eq:eeTF \l__nicematrix_vlines_clist { all }
{
\tl_gput_right:Nn \g__nicematrix_array_preamble_tl
{ @ { #1 \skip_horizontal:N \arrayrulewidth } }
}
{
- \exp_args:NNe
- \clist_if_in:NnTF \l__nicematrix_vlines_clist { \int_eval:n { \c@jCol + 1 } }
+ \clist_if_in:NeTF \l__nicematrix_vlines_clist { \int_eval:n { \c@jCol + 1 } }
{
\tl_gput_right:Nn \g__nicematrix_array_preamble_tl
{ @ { #1 \skip_horizontal:N \arrayrulewidth } }
@@ -2793,14 +2758,14 @@
}
\__nicematrix_rec_preamble:n
}
-\cs_new:cpn { __nicematrix _ * } #1 #2 #3
+\cs_new_protected:cpn { __nicematrix _ * } #1 #2 #3
{
\tl_clear:N \l_tmpa_tl
\int_step_inline:nn { #2 } { \tl_put_right:Nn \l_tmpa_tl { #3 } }
\exp_last_unbraced:No \__nicematrix_rec_preamble:n \l_tmpa_tl
}
-\cs_new:cpn { __nicematrix _ \token_to_str:N \NC@find } #1 { \__nicematrix_rec_preamble:n }
-\cs_new:Npn \__nicematrix_X #1 #2
+\cs_new_protected:cpn { __nicematrix _ \token_to_str:N \NC@find } #1 { \__nicematrix_rec_preamble:n }
+\cs_new_protected:Npn \__nicematrix_X #1 #2
{
\str_if_eq:nnTF { #2 } { [ }
{ \__nicematrix_make_preamble_X:w [ }
@@ -2826,7 +2791,6 @@
\int_gadd:Nn \g__nicematrix_total_X_weight_int \l__nicematrix_weight_int
\bool_if:NTF \l__nicematrix_X_columns_aux_bool
{
- \exp_args:Nne
\__nicematrix_make_preamble_ii_iv:nnn
{ \l__nicematrix_weight_int \l__nicematrix_X_columns_dim }
{ minipage }
@@ -2836,7 +2800,7 @@
\tl_gput_right:Nn \g__nicematrix_array_preamble_tl
{
> {
- \__nicematrix_cell_begin:w
+ \__nicematrix_cell_begin:
\bool_set_true:N \l__nicematrix_X_bool
\NotEmpty
\tl_gput_right:Nn \g__nicematrix_cell_after_hook_tl
@@ -2860,18 +2824,21 @@
}
\cs_new_protected:Npn \__nicematrix_make_preamble_vlism:n #1
{
- \seq_gput_right:Nx \g__nicematrix_cols_vlism_seq
+ \seq_gput_right:Ne \g__nicematrix_cols_vlism_seq
{ \int_eval:n { \c@jCol + 1 } }
- \tl_gput_right:Nx \g__nicematrix_array_preamble_tl
+ \tl_gput_right:Ne \g__nicematrix_array_preamble_tl
{ \exp_not:N ! { \skip_horizontal:N \arrayrulewidth } }
\__nicematrix_rec_preamble:n
}
-\cs_set_eq:cN { __nicematrix _ \token_to_str:N \stop } \use_none:n
+\cs_set_eq:cN { __nicematrix _ \token_to_str:N \__nicematrix_stop: } \use_none:n
\cs_new_protected:cpn { __nicematrix _ \token_to_str:N \hline }
{ \__nicematrix_fatal:n { Preamble~forgotten } }
\cs_set_eq:cc { __nicematrix _ \token_to_str:N \Hline } { __nicematrix _ \token_to_str:N \hline }
\cs_set_eq:cc { __nicematrix _ \token_to_str:N \toprule } { __nicematrix _ \token_to_str:N \hline }
+\cs_set_eq:cc { __nicematrix _ \token_to_str:N \Block } { __nicematrix _ \token_to_str:N \hline }
\cs_set_eq:cc { __nicematrix _ \token_to_str:N \CodeBefore } { __nicematrix _ \token_to_str:N \hline }
+\cs_set_eq:cc { __nicematrix _ \token_to_str:N \RowStyle } { __nicematrix _ \token_to_str:N \hline }
+\cs_set_eq:cc { __nicematrix _ \token_to_str:N \diagbox } { __nicematrix _ \token_to_str:N \hline }
\cs_new:Npn \__nicematrix_multicolumn:nnn #1 #2 #3
{
\multispan { #1 }
@@ -2886,14 +2853,14 @@
\exp_args:No \@mkpream \g__nicematrix_preamble_tl
\@addtopreamble \@empty
\endgroup
- \bool_if:NT \c__nicematrix_testphase_table_bool
+ \bool_if:NT \c__nicematrix_recent_array_bool
{ \UseTaggingSocket { tbl / colspan } { #1 } }
\int_compare:nNnT { #1 } > \c_one_int
{
- \seq_gput_left:Nx \g__nicematrix_multicolumn_cells_seq
+ \seq_gput_left:Ne \g__nicematrix_multicolumn_cells_seq
{ \int_use:N \c@iRow - \int_eval:n { \c@jCol + 1 } }
\seq_gput_left:Nn \g__nicematrix_multicolumn_sizes_seq { #1 }
- \seq_gput_right:Nx \g__nicematrix_pos_of_blocks_seq
+ \seq_gput_right:Ne \g__nicematrix_pos_of_blocks_seq
{
{
\int_if_zero:nTF \c@jCol
@@ -2912,8 +2879,7 @@
}
\RenewDocumentCommand \cellcolor { O { } m }
{
- \__nicematrix_test_color_inside:
- \tl_gput_right:Nx \g__nicematrix_pre_code_before_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_before_tl
{
\__nicematrix_rectanglecolor [ ##1 ]
{ \exp_not:n { ##2 } }
@@ -2956,7 +2922,7 @@
\exp_last_unbraced:No \__nicematrix_make_m_preamble:n \l_tmpa_tl
}
{
- \tl_if_eq:nnT { #1 } { S }
+ \str_if_eq:nnTF { #1 } { S }
{ \__nicematrix_fatal:n { unknown~column~type~S } }
{ \__nicematrix_fatal:nn { unknown~column~type } { #1 } }
}
@@ -2966,7 +2932,7 @@
{
\tl_gput_right:Nn \g__nicematrix_preamble_tl
{
- > { \__nicematrix_cell_begin:w \cs_set_nopar:Npn \l__nicematrix_hpos_cell_tl { #1 } }
+ > { \__nicematrix_cell_begin: \cs_set_nopar:Npn \l__nicematrix_hpos_cell_tl { #1 } }
#1
< \__nicematrix_cell_end:
}
@@ -2987,7 +2953,7 @@
\tl_gput_right:Nn \g__nicematrix_preamble_tl
{
> {
- \__nicematrix_cell_begin:w
+ \__nicematrix_cell_begin:
\begin { minipage } [ #1 ] { \dim_eval:n { #3 } }
\mode_leave_vertical:
\arraybackslash
@@ -3009,7 +2975,7 @@
> {
\dim_set:Nn \l__nicematrix_col_width_dim { #4 }
\hbox_set:Nw \l__nicematrix_cell_box
- \__nicematrix_cell_begin:w
+ \__nicematrix_cell_begin:
\cs_set_nopar:Npn \l__nicematrix_hpos_cell_tl { #3 }
}
c
@@ -3039,7 +3005,7 @@
{
\box_set_ht:Nn \l_tmpa_box { \box_ht:N \l_tmpa_box + \l_tmpa_dim }
\box_set_dp:Nn \l_tmpa_box { \box_dp:N \l_tmpa_box + \l_tmpb_dim }
- \tl_if_eq:NNTF \l__nicematrix_baseline_tl \c__nicematrix_c_tl
+ \str_if_eq:eeTF \l__nicematrix_baseline_tl { c }
{ \box_use_drop:N \l_tmpa_box }
\__nicematrix_put_box_in_flow_i:
}
@@ -3063,10 +3029,10 @@
\__nicematrix_qpoint:n { row - \int_use:N \l_tmpa_int }
}
{
- \tl_if_eq:NnTF \l__nicematrix_baseline_tl { t }
+ \str_if_eq:eeTF \l__nicematrix_baseline_tl { t }
{ \int_set_eq:NN \l_tmpa_int \c_one_int }
{
- \tl_if_eq:NnTF \l__nicematrix_baseline_tl { b }
+ \str_if_eq:onTF \l__nicematrix_baseline_tl { b }
{ \int_set_eq:NN \l_tmpa_int \c@iRow }
{ \int_set:Nn \l_tmpa_int \l__nicematrix_baseline_tl }
}
@@ -3105,7 +3071,7 @@
\__nicematrix_insert_caption:
\int_compare:nNnT \g__nicematrix_notes_caption_int > \c_zero_int
{
- \tl_gput_right:Nx \g__nicematrix_aux_tl
+ \tl_gput_right:Ne \g__nicematrix_aux_tl
{
\tl_set:Nn \exp_not:N \l__nicematrix_note_in_caption_tl
{ \int_use:N \g__nicematrix_notes_caption_int }
@@ -3144,9 +3110,8 @@
{
\group_begin:
\bool_set_true:N \l__nicematrix_in_caption_bool
- \IfPackageLoadedTF { floatrow }
+ \IfPackageLoadedT { floatrow }
{ \cs_set_eq:NN \@makecaption \FR@makecaption }
- { }
\tl_if_empty:NTF \l__nicematrix_short_caption_tl
{ \caption }
{ \caption [ \l__nicematrix_short_caption_tl ] }
@@ -3236,12 +3201,12 @@
}
\cs_new_protected:Npn \__nicematrix_use_arraybox_with_notes:
{
- \tl_if_eq:NnT \l__nicematrix_baseline_tl { t }
+ \str_if_eq:eeT \l__nicematrix_baseline_tl { t }
{ \cs_set_nopar:Npn \l__nicematrix_baseline_tl { 1 } }
\pgfpicture
\__nicematrix_qpoint:n { row - 1 }
\dim_gset_eq:NN \g_tmpa_dim \pgf@y
- \str_if_in:NnTF \l__nicematrix_baseline_tl { line- }
+ \tl_if_in:NnTF \l__nicematrix_baseline_tl { line- }
{
\int_set:Nn \l_tmpa_int
{
@@ -3279,6 +3244,7 @@
\dim_zero_new:N \l__nicematrix_real_right_delim_dim
\hbox_set:Nn \l_tmpb_box
{
+ \m@th % added 2024/11/21
\c_math_toggle_token
\left #1
\vcenter
@@ -3294,6 +3260,7 @@
{ \box_wd:N \l_tmpb_box - \nulldelimiterspace }
\hbox_set:Nn \l_tmpb_box
{
+ \m@th % added 2024/11/21
\c_math_toggle_token
\left .
\vbox_to_ht:nn
@@ -3318,7 +3285,7 @@
\__nicematrix_analyze_end:Nn
{
\__nicematrix_transform_preamble:
- \exp_args:No \__nicematrix_array: \g__nicematrix_array_preamble_tl
+ \__nicematrix_array:o \g__nicematrix_array_preamble_tl
}
}
}
@@ -3328,14 +3295,12 @@
}
\NewDocumentEnvironment { __nicematrix-light-syntax } { b }
{
- \tl_if_empty:nT { #1 } { \__nicematrix_fatal:n { empty~environment } }
- \tl_map_inline:nn { #1 }
- {
- \str_if_eq:nnT { ##1 } { & }
- { \__nicematrix_fatal:n { ampersand~in~light-syntax } }
- \str_if_eq:nnT { ##1 } { \\ }
- { \__nicematrix_fatal:n { double-backslash~in~light-syntax } }
- }
+ \tl_if_empty:nT { #1 }
+ { \__nicematrix_fatal:n { empty~environment } }
+ \tl_if_in:nnT { #1 } { & }
+ { \__nicematrix_fatal:n { ampersand~in~light-syntax } }
+ \tl_if_in:nnT { #1 } { \\ }
+ { \__nicematrix_fatal:n { double-backslash~in~light-syntax } }
\__nicematrix_light_syntax_i:w #1 \CodeAfter \q_stop
}
{
@@ -3372,8 +3337,9 @@
{ \l__nicematrix_nb_cols_int - 1 + \l__nicematrix_first_col_int }
}
\__nicematrix_transform_preamble:
- \exp_args:No \__nicematrix_array: \g__nicematrix_array_preamble_tl \l__nicematrix_new_body_tl
+ \__nicematrix_array:o \g__nicematrix_array_preamble_tl \l__nicematrix_new_body_tl
}
+\cs_generate_variant:Nn \__nicematrix_line_with_light_syntax:n { o }
\cs_new_protected:Npn \__nicematrix_line_with_light_syntax:n #1
{
\seq_clear_new:N \l__nicematrix_cells_seq
@@ -3385,14 +3351,13 @@
{ \seq_count:N \l__nicematrix_cells_seq }
}
\seq_pop_left:NN \l__nicematrix_cells_seq \l_tmpa_tl
- \exp_args:NNo \tl_build_put_right:Nn \l__nicematrix_new_body_tl \l_tmpa_tl
+ \tl_build_put_right:No \l__nicematrix_new_body_tl \l_tmpa_tl
\seq_map_inline:Nn \l__nicematrix_cells_seq
{ \tl_build_put_right:Nn \l__nicematrix_new_body_tl { & ##1 } }
}
-\cs_generate_variant:Nn \__nicematrix_line_with_light_syntax:n { o }
\cs_new_protected:Npn \__nicematrix_analyze_end:Nn #1 #2
{
- \str_if_eq:onT \g__nicematrix_name_env_str { #2 }
+ \str_if_eq:eeT \g__nicematrix_name_env_str { #2 }
{ \__nicematrix_fatal:n { empty~environment } }
\end { #2 }
}
@@ -3712,6 +3677,7 @@
\__nicematrix_def_env:nnn B \{ \}
\__nicematrix_def_env:nnn v | |
\__nicematrix_def_env:nnn V \| \|
+\cs_generate_variant:Nn \__nicematrix_begin_of_NiceMatrix:nn { n o }
\cs_new_protected:Npn \__nicematrix_begin_of_NiceMatrix:nn #1 #2
{
\bool_set_false:N \l__nicematrix_preamble_bool
@@ -3734,7 +3700,6 @@
\tl_set:Nn \l_tmpb_tl { \use:c { #1 NiceArray } }
\exp_args:No \l_tmpb_tl \l_tmpa_tl
}
-\cs_generate_variant:Nn \__nicematrix_begin_of_NiceMatrix:nn { n V }
\clist_map_inline:nn { p , b , B , v , V }
{
\NewDocumentEnvironment { #1 NiceMatrix } { ! O { } }
@@ -3747,7 +3712,7 @@
\int_set:Nn \l__nicematrix_last_col_int { -1 }
}
\keys_set:nn { nicematrix / NiceMatrix } { ##1 }
- \__nicematrix_begin_of_NiceMatrix:nV { #1 } \l__nicematrix_columns_type_tl
+ \__nicematrix_begin_of_NiceMatrix:no { #1 } \l__nicematrix_columns_type_tl
}
{ \use:c { end #1 NiceArray } }
}
@@ -3764,7 +3729,7 @@
{ \clist_if_empty_p:N \l__nicematrix_vlines_clist }
{ \l__nicematrix_except_borders_bool }
{ \bool_set_true:N \l__nicematrix_NiceMatrix_without_vlines_bool }
- \__nicematrix_begin_of_NiceMatrix:nV { } \l__nicematrix_columns_type_tl
+ \__nicematrix_begin_of_NiceMatrix:no { } \l__nicematrix_columns_type_tl
}
{ \endNiceArray }
\cs_new_protected:Npn \__nicematrix_NotEmpty:
@@ -3802,11 +3767,7 @@
\__nicematrix_settings_for_tabular:
\NiceArray { #2 }
}
- {
- \endNiceArray
- \bool_if:NT \c__nicematrix_testphase_table_bool
- { \UseTaggingSocket { tbl / hmode / end } }
- }
+ { \endNiceArray }
\cs_new_protected:Npn \__nicematrix_settings_for_tabular:
{
\bool_set_true:N \l__nicematrix_tabular_bool
@@ -3872,7 +3833,7 @@
{ \int_set_eq:NN \l__nicematrix_last_col_int \g__nicematrix_col_total_int }
\bool_if:NT \l__nicematrix_last_row_without_value_bool
{ \int_set_eq:NN \l__nicematrix_last_row_int \g__nicematrix_row_total_int }
- \tl_gput_right:Nx \g__nicematrix_aux_tl
+ \tl_gput_right:Ne \g__nicematrix_aux_tl
{
\seq_gset_from_clist:Nn \exp_not:N \g__nicematrix_size_seq
{
@@ -3886,7 +3847,7 @@
}
\seq_if_empty:NF \g__nicematrix_pos_of_blocks_seq
{
- \tl_gput_right:Nx \g__nicematrix_aux_tl
+ \tl_gput_right:Ne \g__nicematrix_aux_tl
{
\seq_gset_from_clist:Nn \exp_not:N \g__nicematrix_pos_of_blocks_seq
{ \seq_use:Nnnn \g__nicematrix_pos_of_blocks_seq , , , }
@@ -3894,7 +3855,7 @@
}
\seq_if_empty:NF \g__nicematrix_multicolumn_cells_seq
{
- \tl_gput_right:Nx \g__nicematrix_aux_tl
+ \tl_gput_right:Ne \g__nicematrix_aux_tl
{
\seq_gset_from_clist:Nn \exp_not:N \g__nicematrix_multicolumn_cells_seq
{ \seq_use:Nnnn \g__nicematrix_multicolumn_cells_seq , , , }
@@ -3957,12 +3918,17 @@
{ 0.6 \l__nicematrix_xdots_shorten_end_dim }
}
\__nicematrix_draw_dotted_lines:
- \__nicematrix_compute_corners:
+ \clist_if_empty:NF \l__nicematrix_corners_clist
+ {
+ \bool_if:NTF \l__nicematrix_no_cell_nodes_bool
+ { \__nicematrix_error:n { corners~with~no-cell-nodes } }
+ { \__nicematrix_compute_corners: }
+ }
\__nicematrix_adjust_pos_of_blocks_seq:
\__nicematrix_deal_with_rounded_corners:
- \tl_if_empty:NF \l__nicematrix_hlines_clist \__nicematrix_draw_hlines:
- \tl_if_empty:NF \l__nicematrix_vlines_clist \__nicematrix_draw_vlines:
- \IfPackageLoadedTF { tikz }
+ \clist_if_empty:NF \l__nicematrix_hlines_clist \__nicematrix_draw_hlines:
+ \clist_if_empty:NF \l__nicematrix_vlines_clist \__nicematrix_draw_vlines:
+ \IfPackageLoadedT { tikz }
{
\tikzset
{
@@ -3974,8 +3940,7 @@
}
}
}
- { }
- \bool_if:NT \c__nicematrix_tagging_array_bool
+ \bool_if:NT \c__nicematrix_recent_array_bool
{ \cs_set_eq:NN \ar@ialign \__nicematrix_old_ar@ialign: }
\cs_set_eq:NN \SubMatrix \__nicematrix_SubMatrix
\cs_set_eq:NN \UnderBrace \__nicematrix_UnderBrace
@@ -3987,8 +3952,8 @@
\tl_gclear:N \g__nicematrix_pre_code_after_tl
\cs_set_eq:NN \CodeAfter \prg_do_nothing:
\seq_gclear:N \g__nicematrix_submatrix_names_seq
- % \int_compare:nNnT { \char_value_catcode:n { 60 } } = { 13 }
- % { \__nicematrix_rescan_for_spanish:N \g_nicematrix_code_after_tl }
+ \int_compare:nNnT { \char_value_catcode:n { 60 } } = { 13 }
+ { \__nicematrix_rescan_for_spanish:N \g_nicematrix_code_after_tl }
\bool_set_true:N \l__nicematrix_in_code_after_bool
\exp_last_unbraced:No \__nicematrix_CodeAfter_keys: \g_nicematrix_code_after_tl
\scan_stop:
@@ -3997,7 +3962,7 @@
\seq_if_empty:NF \g__nicematrix_rowlistcolors_seq { \__nicematrix_clear_rowlistcolors_seq: }
\tl_if_empty:NF \g__nicematrix_pre_code_before_tl
{
- \tl_gput_right:Nx \g__nicematrix_aux_tl
+ \tl_gput_right:Ne \g__nicematrix_aux_tl
{
\tl_gset:Nn \exp_not:N \g__nicematrix_pre_code_before_tl
{ \exp_not:o \g__nicematrix_pre_code_before_tl }
@@ -4006,7 +3971,7 @@
}
\tl_if_empty:NF \g_nicematrix_code_before_tl
{
- \tl_gput_right:Nx \g__nicematrix_aux_tl
+ \tl_gput_right:Ne \g__nicematrix_aux_tl
{
\tl_gset:Nn \exp_not:N \g__nicematrix_code_before_tl
{ \exp_not:o \g_nicematrix_code_before_tl }
@@ -4021,7 +3986,7 @@
{ \keys_set:nn { nicematrix / CodeAfter } { #1 } }
\cs_new_protected:Npn \__nicematrix_adjust_pos_of_blocks_seq:
{
- \seq_gset_map_x:NNn \g__nicematrix_pos_of_blocks_seq \g__nicematrix_pos_of_blocks_seq
+ \seq_gset_map_e:NNn \g__nicematrix_pos_of_blocks_seq \g__nicematrix_pos_of_blocks_seq
{ \__nicematrix_adjust_pos_of_blocks_seq_i:nnnnn ##1 }
}
\cs_new:Npn \__nicematrix_adjust_pos_of_blocks_seq_i:nnnnn #1 #2 #3 #4 #5
@@ -4029,12 +3994,12 @@
{ #1 }
{ #2 }
{
- \int_compare:nNnTF { #3 } > { 99 }
+ \int_compare:nNnTF { #3 } > { 98 }
{ \int_use:N \c@iRow }
{ #3 }
}
{
- \int_compare:nNnTF { #4 } > { 99 }
+ \int_compare:nNnTF { #4 } > { 98 }
{ \int_use:N \c@jCol }
{ #4 }
}
@@ -4042,7 +4007,7 @@
}
\hook_gput_code:nnn { begindocument } { . }
{
- \cs_new_protected:Npx \__nicematrix_draw_dotted_lines:
+ \cs_new_protected:Npe \__nicematrix_draw_dotted_lines:
{
\c__nicematrix_pgfortikzpicture_tl
\__nicematrix_draw_dotted_lines_i:
@@ -4074,14 +4039,16 @@
}
\anchor { 5 } { \five }
\anchor { center } { \pgfpointorigin }
- \anchor { 1 } { \five \pgf@x = 0.2 \pgf@x \pgf@y = 0.2 \pgf@y }
- \anchor { 2 } { \five \pgf@x = 0.4 \pgf@x \pgf@y = 0.4 \pgf@y }
- \anchor { 3 } { \five \pgf@x = 0.6 \pgf@x \pgf@y = 0.6 \pgf@y }
- \anchor { 4 } { \five \pgf@x = 0.8 \pgf@x \pgf@y = 0.8 \pgf@y }
- \anchor { 6 } { \five \pgf@x = 1.2 \pgf@x \pgf@y = 1.2 \pgf@y }
- \anchor { 7 } { \five \pgf@x = 1.4 \pgf@x \pgf@y = 1.4 \pgf@y }
- \anchor { 8 } { \five \pgf@x = 1.6 \pgf@x \pgf@y = 1.6 \pgf@y }
- \anchor { 9 } { \five \pgf@x = 1.8 \pgf@x \pgf@y = 1.8 \pgf@y }
+ \anchor { 1 } { \five \pgf@x = 0.2 \pgf@x \pgf@y = 0.2 \pgf@y }
+ \anchor { 2 } { \five \pgf@x = 0.4 \pgf@x \pgf@y = 0.4 \pgf@y }
+ \anchor { 25 } { \five \pgf@x = 0.5 \pgf@x \pgf@y = 0.5 \pgf@y }
+ \anchor { 3 } { \five \pgf@x = 0.6 \pgf@x \pgf@y = 0.6 \pgf@y }
+ \anchor { 4 } { \five \pgf@x = 0.8 \pgf@x \pgf@y = 0.8 \pgf@y }
+ \anchor { 6 } { \five \pgf@x = 1.2 \pgf@x \pgf@y = 1.2 \pgf@y }
+ \anchor { 7 } { \five \pgf@x = 1.4 \pgf@x \pgf@y = 1.4 \pgf@y }
+ \anchor { 75 } { \five \pgf@x = 1.5 \pgf@x \pgf@y = 1.5 \pgf@y }
+ \anchor { 8 } { \five \pgf@x = 1.6 \pgf@x \pgf@y = 1.6 \pgf@y }
+ \anchor { 9 } { \five \pgf@x = 1.8 \pgf@x \pgf@y = 1.8 \pgf@y }
}
\cs_new_protected:Npn \__nicematrix_create_diag_nodes:
{
@@ -4126,7 +4093,7 @@
}
\cs_new_protected:Npn \__nicematrix_find_extremities_of_line:nnnn #1 #2 #3 #4
{
- \cs_set:cpn { __nicematrix _ dotted _ #1 - #2 } { }
+ \cs_set_nopar:cpn { __nicematrix _ dotted _ #1 - #2 } { }
\int_set:Nn \l__nicematrix_initial_i_int { #1 }
\int_set:Nn \l__nicematrix_initial_j_int { #2 }
\int_set:Nn \l__nicematrix_final_i_int { #1 }
@@ -4137,29 +4104,27 @@
\int_add:Nn \l__nicematrix_final_i_int { #3 }
\int_add:Nn \l__nicematrix_final_j_int { #4 }
\bool_set_false:N \l__nicematrix_final_open_bool
- \int_compare:nNnTF \l__nicematrix_final_i_int > \l__nicematrix_row_max_int
- {
- \int_compare:nNnTF { #3 } = \c_one_int
- { \bool_set_true:N \l__nicematrix_final_open_bool }
- {
- \int_compare:nNnT \l__nicematrix_final_j_int > \l__nicematrix_col_max_int
- { \bool_set_true:N \l__nicematrix_final_open_bool }
- }
- }
- {
- \int_compare:nNnTF \l__nicematrix_final_j_int < \l__nicematrix_col_min_int
- {
- \int_compare:nNnT { #4 } = { -1 }
- { \bool_set_true:N \l__nicematrix_final_open_bool }
- }
- {
- \int_compare:nNnT \l__nicematrix_final_j_int > \l__nicematrix_col_max_int
- {
- \int_compare:nNnT { #4 } = \c_one_int
- { \bool_set_true:N \l__nicematrix_final_open_bool }
- }
- }
- }
+ \if_int_compare:w \l__nicematrix_final_i_int > \l__nicematrix_row_max_int
+ \if_int_compare:w #3 = \c_one_int
+ \bool_set_true:N \l__nicematrix_final_open_bool
+ \else:
+ \if_int_compare:w \l__nicematrix_final_j_int > \l__nicematrix_col_max_int
+ \bool_set_true:N \l__nicematrix_final_open_bool
+ \fi:
+ \fi:
+ \else:
+ \if_int_compare:w \l__nicematrix_final_j_int < \l__nicematrix_col_min_int
+ \if_int_compare:w #4 = -1
+ \bool_set_true:N \l__nicematrix_final_open_bool
+ \fi:
+ \else:
+ \if_int_compare:w \l__nicematrix_final_j_int > \l__nicematrix_col_max_int
+ \if_int_compare:w #4 = \c_one_int
+ \bool_set_true:N \l__nicematrix_final_open_bool
+ \fi:
+ \fi:
+ \fi:
+ \fi:
\bool_if:NTF \l__nicematrix_final_open_bool
{
\int_sub:Nn \l__nicematrix_final_i_int { #3 }
@@ -4188,7 +4153,7 @@
}
{ \bool_set_true:N \l__nicematrix_stop_loop_bool }
{
- \cs_set:cpn
+ \cs_set_nopar:cpn
{
__nicematrix _ dotted _
\int_use:N \l__nicematrix_final_i_int -
@@ -4200,34 +4165,33 @@
}
}
\bool_set_false:N \l__nicematrix_stop_loop_bool
+ \int_set:Nn \l_tmpa_int { \l__nicematrix_col_min_int - 1 }
\bool_do_until:Nn \l__nicematrix_stop_loop_bool
{
\int_sub:Nn \l__nicematrix_initial_i_int { #3 }
\int_sub:Nn \l__nicematrix_initial_j_int { #4 }
\bool_set_false:N \l__nicematrix_initial_open_bool
- \int_compare:nNnTF \l__nicematrix_initial_i_int < \l__nicematrix_row_min_int
- {
- \int_compare:nNnTF { #3 } = \c_one_int
- { \bool_set_true:N \l__nicematrix_initial_open_bool }
- {
- \int_compare:nNnT \l__nicematrix_initial_j_int = { \l__nicematrix_col_min_int - 1 }
- { \bool_set_true:N \l__nicematrix_initial_open_bool }
- }
- }
- {
- \int_compare:nNnTF \l__nicematrix_initial_j_int < \l__nicematrix_col_min_int
- {
- \int_compare:nNnT { #4 } = \c_one_int
- { \bool_set_true:N \l__nicematrix_initial_open_bool }
- }
- {
- \int_compare:nNnT \l__nicematrix_initial_j_int > \l__nicematrix_col_max_int
- {
- \int_compare:nNnT { #4 } = { -1 }
- { \bool_set_true:N \l__nicematrix_initial_open_bool }
- }
- }
- }
+ \if_int_compare:w \l__nicematrix_initial_i_int < \l__nicematrix_row_min_int
+ \if_int_compare:w #3 = \c_one_int
+ \bool_set_true:N \l__nicematrix_initial_open_bool
+ \else:
+ \if_int_compare:w \l__nicematrix_initial_j_int = \l_tmpa_int
+ \bool_set_true:N \l__nicematrix_initial_open_bool
+ \fi:
+ \fi:
+ \else:
+ \if_int_compare:w \l__nicematrix_initial_j_int < \l__nicematrix_col_min_int
+ \if_int_compare:w #4 = \c_one_int
+ \bool_set_true:N \l__nicematrix_initial_open_bool
+ \fi:
+ \else:
+ \if_int_compare:w \l__nicematrix_initial_j_int > \l__nicematrix_col_max_int
+ \if_int_compare:w #4 = -1
+ \bool_set_true:N \l__nicematrix_initial_open_bool
+ \fi:
+ \fi:
+ \fi:
+ \fi:
\bool_if:NTF \l__nicematrix_initial_open_bool
{
\int_add:Nn \l__nicematrix_initial_i_int { #3 }
@@ -4256,7 +4220,7 @@
}
{ \bool_set_true:N \l__nicematrix_stop_loop_bool }
{
- \cs_set:cpn
+ \cs_set_nopar:cpn
{
__nicematrix _ dotted _
\int_use:N \l__nicematrix_initial_i_int -
@@ -4267,7 +4231,7 @@
}
}
}
- \seq_gput_right:Nx \g__nicematrix_pos_of_xdots_seq
+ \seq_gput_right:Ne \g__nicematrix_pos_of_xdots_seq
{
{ \int_use:N \l__nicematrix_initial_i_int }
{ \int_min:nn \l__nicematrix_initial_j_int \l__nicematrix_final_j_int }
@@ -4279,41 +4243,40 @@
\cs_new_protected:Npn \__nicematrix_open_shorten:
{
\bool_if:NT \l__nicematrix_initial_open_bool
- { \dim_zero:N \l__nicematrix_xdots_shorten_start_dim }
+ { \dim_zero:N \l__nicematrix_xdots_shorten_start_dim }
\bool_if:NT \l__nicematrix_final_open_bool
- { \dim_zero:N \l__nicematrix_xdots_shorten_end_dim }
+ { \dim_zero:N \l__nicematrix_xdots_shorten_end_dim }
}
\cs_new_protected:Npn \__nicematrix_adjust_to_submatrix:nn #1 #2
{
- \int_set:Nn \l__nicematrix_row_min_int 1
- \int_set:Nn \l__nicematrix_col_min_int 1
+ \int_set_eq:NN \l__nicematrix_row_min_int \c_one_int
+ \int_set_eq:NN \l__nicematrix_col_min_int \c_one_int
\int_set_eq:NN \l__nicematrix_row_max_int \c@iRow
\int_set_eq:NN \l__nicematrix_col_max_int \c@jCol
- \seq_map_inline:Nn \g__nicematrix_submatrix_seq
- { \__nicematrix_adjust_to_submatrix:nnnnnn { #1 } { #2 } ##1 }
- }
-\cs_set_protected:Npn \__nicematrix_adjust_to_submatrix:nnnnnn #1 #2 #3 #4 #5 #6
- {
- \int_compare:nNnF { #3 } > { #1 }
- {
- \int_compare:nNnF { #1 } > { #5 }
- {
- \int_compare:nNnF { #4 } > { #2 }
- {
- \int_compare:nNnF { #2 } > { #6 }
- {
- \int_set:Nn \l__nicematrix_row_min_int
- { \int_max:nn \l__nicematrix_row_min_int { #3 } }
- \int_set:Nn \l__nicematrix_col_min_int
- { \int_max:nn \l__nicematrix_col_min_int { #4 } }
- \int_set:Nn \l__nicematrix_row_max_int
- { \int_min:nn \l__nicematrix_row_max_int { #5 } }
- \int_set:Nn \l__nicematrix_col_max_int
- { \int_min:nn \l__nicematrix_col_max_int { #6 } }
- }
- }
- }
- }
+ \seq_if_empty:NF \g__nicematrix_submatrix_seq
+ {
+ \seq_map_inline:Nn \g__nicematrix_submatrix_seq
+ { \__nicematrix_adjust_to_submatrix:nnnnnn { #1 } { #2 } ##1 }
+ }
+ }
+\cs_new_protected:Npn \__nicematrix_adjust_to_submatrix:nnnnnn #1 #2 #3 #4 #5 #6
+ {
+ \if_int_compare:w #3 > #1
+ \else:
+ \if_int_compare:w #1 > #5
+ \else:
+ \if_int_compare:w #4 > #2
+ \else:
+ \if_int_compare:w #2 > #6
+ \else:
+ \if_int_compare:w \l__nicematrix_row_min_int < #3 \l__nicematrix_row_min_int = #3 \fi:
+ \if_int_compare:w \l__nicematrix_col_min_int < #4 \l__nicematrix_col_min_int = #4 \fi:
+ \if_int_compare:w \l__nicematrix_row_max_int < #5 \l__nicematrix_row_max_int = #5 \fi:
+ \if_int_compare:w \l__nicematrix_col_max_int < #6 \l__nicematrix_col_max_int = #6 \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
}
\cs_new_protected:Npn \__nicematrix_set_initial_coords:
{
@@ -4380,8 +4343,8 @@
\pgfpointanchor
{ \__nicematrix_env: - ##1 - \int_use:N \l__nicematrix_final_j_int }
{ east }
- \dim_set:Nn \l__nicematrix_x_final_dim
- { \dim_max:nn \l__nicematrix_x_final_dim \pgf@x }
+ \dim_compare:nNnT \pgf@x > \l__nicematrix_x_final_dim
+ { \dim_set_eq:NN \l__nicematrix_x_final_dim \pgf@x }
}
}
\dim_compare:nNnT \l__nicematrix_x_final_dim = { - \c_max_dim }
@@ -4406,7 +4369,7 @@
{ \color { nicematrix-last-row } }
}
\keys_set:nn { nicematrix / xdots } { #3 }
- \tl_if_empty:oF \l__nicematrix_xdots_color_tl { \color { \l__nicematrix_xdots_color_tl } }
+ \__nicematrix_color:o \l__nicematrix_xdots_color_tl
\__nicematrix_actually_draw_Ldots:
\group_end:
}
@@ -4458,7 +4421,7 @@
{ \color { nicematrix-last-row } }
}
\keys_set:nn { nicematrix / xdots } { #3 }
- \tl_if_empty:oF \l__nicematrix_xdots_color_tl { \color { \l__nicematrix_xdots_color_tl } }
+ \__nicematrix_color:o \l__nicematrix_xdots_color_tl
\__nicematrix_actually_draw_Cdots:
\group_end:
}
@@ -4500,8 +4463,8 @@
\pgfpointanchor
{ \__nicematrix_env: - \int_use:N \l__nicematrix_initial_i_int - ##1 }
{ north }
- \dim_set:Nn \l__nicematrix_y_initial_dim
- { \dim_max:nn \l__nicematrix_y_initial_dim \pgf@y }
+ \dim_compare:nNnT \pgf@y > \l__nicematrix_y_initial_dim
+ { \dim_set_eq:NN \l__nicematrix_y_initial_dim \pgf@y }
}
}
\dim_compare:nNnT \l__nicematrix_y_initial_dim = { - \c_max_dim }
@@ -4528,8 +4491,8 @@
\pgfpointanchor
{ \__nicematrix_env: - \int_use:N \l__nicematrix_final_i_int - ##1 }
{ south }
- \dim_set:Nn \l__nicematrix_y_final_dim
- { \dim_min:nn \l__nicematrix_y_final_dim \pgf@y }
+ \dim_compare:nNnT \pgf@y < \l__nicematrix_y_final_dim
+ { \dim_set_eq:NN \l__nicematrix_y_final_dim \pgf@y }
}
}
\dim_compare:nNnT \l__nicematrix_y_final_dim = \c_max_dim
@@ -4554,8 +4517,7 @@
{ \color { nicematrix-last-col } }
}
\keys_set:nn { nicematrix / xdots } { #3 }
- \tl_if_empty:oF \l__nicematrix_xdots_color_tl
- { \color { \l__nicematrix_xdots_color_tl } }
+ \__nicematrix_color:o \l__nicematrix_xdots_color_tl
\__nicematrix_actually_draw_Vdots:
\group_end:
}
@@ -4640,7 +4602,7 @@
\group_begin:
\__nicematrix_open_shorten:
\keys_set:nn { nicematrix / xdots } { #3 }
- \tl_if_empty:oF \l__nicematrix_xdots_color_tl { \color { \l__nicematrix_xdots_color_tl } }
+ \__nicematrix_color:o \l__nicematrix_xdots_color_tl
\__nicematrix_actually_draw_Ddots:
\group_end:
}
@@ -4692,7 +4654,7 @@
\group_begin:
\__nicematrix_open_shorten:
\keys_set:nn { nicematrix / xdots } { #3 }
- \tl_if_empty:oF \l__nicematrix_xdots_color_tl { \color { \l__nicematrix_xdots_color_tl } }
+ \__nicematrix_color:o \l__nicematrix_xdots_color_tl
\__nicematrix_actually_draw_Iddots:
\group_end:
}
@@ -4751,6 +4713,7 @@
\__nicematrix_draw_unstandard_dotted_line:o
{ \l__nicematrix_xdots_line_style_tl , \l__nicematrix_xdots_color_tl }
}
+\cs_generate_variant:Nn \__nicematrix_draw_unstandard_dotted_line:n { o }
\cs_new_protected:Npn \__nicematrix_draw_unstandard_dotted_line:n #1
{
\__nicematrix_draw_unstandard_dotted_line:nooo
@@ -4759,10 +4722,9 @@
\l__nicematrix_xdots_down_tl
\l__nicematrix_xdots_middle_tl
}
-\cs_generate_variant:Nn \__nicematrix_draw_unstandard_dotted_line:n { o }
\hook_gput_code:nnn { begindocument } { . }
{
- \IfPackageLoadedTF { tikz }
+ \IfPackageLoadedT { tikz }
{
\tikzset
{
@@ -4775,8 +4737,8 @@
}
}
}
- { }
}
+\cs_generate_variant:Nn \__nicematrix_draw_unstandard_dotted_line:nnnn { n o o o }
\cs_new_protected:Npn \__nicematrix_draw_unstandard_dotted_line:nnnn #1 #2 #3 #4
{
\dim_zero_new:N \l__nicematrix_l_dim
@@ -4848,7 +4810,6 @@
\dim_set_eq:NN \l__nicematrix_x_final_dim \l__nicematrix_tmpc_dim
\dim_set_eq:NN \l__nicematrix_y_final_dim \l__nicematrix_tmpd_dim
}
-\cs_generate_variant:Nn \__nicematrix_draw_unstandard_dotted_line:nnnn { n o o o }
\cs_new_protected:Npn \__nicematrix_draw_standard_dotted_line:
{
\group_begin:
@@ -5156,7 +5117,7 @@
{ \__nicematrix_collect_options:n { \__nicematrix_Hdotsfor_ii } }
\exp_args:NNo \NewDocumentCommand \__nicematrix_Hdotsfor_ii \l__nicematrix_argspec_tl
{
- \tl_gput_right:Nx \g__nicematrix_HVdotsfor_lines_tl
+ \tl_gput_right:Ne \g__nicematrix_HVdotsfor_lines_tl
{
\__nicematrix_Hdotsfor:nnnn
{ \int_use:N \c@iRow }
@@ -5229,11 +5190,11 @@
}
\keys_set:nn { nicematrix / xdots } { #4 }
- \tl_if_empty:oF \l__nicematrix_xdots_color_tl { \color { \l__nicematrix_xdots_color_tl } }
+ \__nicematrix_color:o \l__nicematrix_xdots_color_tl
\__nicematrix_actually_draw_Ldots:
\group_end:
\int_step_inline:nnn { #2 } { #2 + #3 - 1 }
- { \cs_set:cpn { __nicematrix _ dotted _ #1 - ##1 } { } }
+ { \cs_set_nopar:cpn { __nicematrix _ dotted _ #1 - ##1 } { } }
}
\hook_gput_code:nnn { begindocument } { . }
{
@@ -5244,7 +5205,7 @@
\exp_args:NNo \NewDocumentCommand \__nicematrix_Vdotsfor_i \l__nicematrix_argspec_tl
{
\bool_gset_true:N \g__nicematrix_empty_cell_bool
- \tl_gput_right:Nx \g__nicematrix_HVdotsfor_lines_tl
+ \tl_gput_right:Ne \g__nicematrix_HVdotsfor_lines_tl
{
\__nicematrix_Vdotsfor:nnnn
{ \int_use:N \c@iRow }
@@ -5310,11 +5271,11 @@
{ \color { nicematrix-last-col } }
}
\keys_set:nn { nicematrix / xdots } { #4 }
- \tl_if_empty:oF \l__nicematrix_xdots_color_tl { \color { \l__nicematrix_xdots_color_tl } }
+ \__nicematrix_color:o \l__nicematrix_xdots_color_tl
\__nicematrix_actually_draw_Vdots:
\group_end:
\int_step_inline:nnn { #1 } { #1 + #3 - 1 }
- { \cs_set:cpn { __nicematrix _ dotted _ ##1 - #2 } { } }
+ { \cs_set_nopar:cpn { __nicematrix _ dotted _ ##1 - #2 } { } }
}
\NewDocumentCommand \__nicematrix_rotate: { O { } }
{
@@ -5347,13 +5308,13 @@
{
\group_begin:
\keys_set:nn { nicematrix / xdots } { #1 , #4 , down = #5 , up = #6 }
- \tl_if_empty:oF \l__nicematrix_xdots_color_tl { \color { \l__nicematrix_xdots_color_tl } }
- \use:e
- {
- \__nicematrix_line_i:nn
- { \__nicematrix_double_int_eval:n #2 - \q_stop }
- { \__nicematrix_double_int_eval:n #3 - \q_stop }
- }
+ \__nicematrix_color:o \l__nicematrix_xdots_color_tl
+ \use:e
+ {
+ \__nicematrix_line_i:nn
+ { \__nicematrix_double_int_eval:n #2 - \q_stop }
+ { \__nicematrix_double_int_eval:n #3 - \q_stop }
+ }
\group_end:
}
}
@@ -5369,7 +5330,7 @@
}
\hook_gput_code:nnn { begindocument } { . }
{
- \cs_new_protected:Npx \__nicematrix_draw_line_ii:nn #1 #2
+ \cs_new_protected:Npe \__nicematrix_draw_line_ii:nn #1 #2
{
\c__nicematrix_pgfortikzpicture_tl
\__nicematrix_draw_line_iii:nn { #1 } { #2 }
@@ -5389,9 +5350,10 @@
}
\cs_new:Npn \__nicematrix_if_row_less_than:nn #1 #2
{ \int_compare:nNnT { \c@iRow } < { #1 } { #2 } }
+\cs_generate_variant:Nn \__nicematrix_put_in_row_style:n { e }
\cs_set_protected:Npn \__nicematrix_put_in_row_style:n #1
{
- \tl_gput_right:Nx \g__nicematrix_row_style_tl
+ \tl_gput_right:Ne \g__nicematrix_row_style_tl
{
\exp_not:N
\__nicematrix_if_row_less_than:nn
@@ -5399,7 +5361,6 @@
{ \exp_not:n { #1 } \scan_stop: }
}
}
-\cs_generate_variant:Nn \__nicematrix_put_in_row_style:n { e }
\keys_define:nn { nicematrix / RowStyle }
{
cell-space-top-limit .dim_set:N = \l_tmpa_dim ,
@@ -5416,47 +5377,52 @@
bold .bool_set:N = \l__nicematrix_bold_row_style_bool ,
bold .default:n = true ,
nb-rows .code:n =
- \str_if_eq:nnTF { #1 } { * }
+ \str_if_eq:eeTF { #1 } { * }
{ \int_set:Nn \l__nicematrix_key_nb_rows_int { 500 } }
{ \int_set:Nn \l__nicematrix_key_nb_rows_int { #1 } } ,
nb-rows .value_required:n = true ,
- rowcolor .tl_set:N = \l_tmpa_tl ,
+ fill .tl_set:N = \l__nicematrix_fill_tl ,
+ fill .value_required:n = true ,
+ opacity .tl_set:N = \l__nicematrix_opacity_tl ,
+ opacity .value_required:n = true ,
+ rowcolor .tl_set:N = \l__nicematrix_fill_tl ,
rowcolor .value_required:n = true ,
+ rounded-corners .dim_set:N = \l__nicematrix_rounded_corners_dim ,
+ rounded-corners .default:n = 4 pt ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~RowStyle }
}
\NewDocumentCommand \__nicematrix_RowStyle:n { O { } m }
{
\group_begin:
- \tl_clear:N \l_tmpa_tl
+ \tl_clear:N \l__nicematrix_fill_tl
+ \tl_clear:N \l__nicematrix_opacity_tl
\tl_clear:N \l__nicematrix_color_tl
\int_set_eq:NN \l__nicematrix_key_nb_rows_int \c_one_int
+ \dim_zero:N \l__nicematrix_rounded_corners_dim
\dim_zero:N \l_tmpa_dim
\dim_zero:N \l_tmpb_dim
\keys_set:nn { nicematrix / RowStyle } { #1 }
- \tl_if_empty:NF \l_tmpa_tl
+ \tl_if_empty:NF \l__nicematrix_fill_tl
{
- \tl_gput_right:Nx \g__nicematrix_pre_code_before_tl
- {
- \__nicematrix_exp_color_arg:No \__nicematrix_rectanglecolor \l_tmpa_tl
- { \int_use:N \c@iRow - \int_use:N \c@jCol }
- { \int_use:N \c@iRow - * }
- }
- \int_compare:nNnT \l__nicematrix_key_nb_rows_int > \c_one_int
+ \__nicematrix_add_opacity_to_fill:
+ \tl_gput_right:Ne \g__nicematrix_pre_code_before_tl
{
- \tl_gput_right:Nx \g__nicematrix_pre_code_before_tl
+ \int_compare:nNnTF \c@jCol > \c_one_int
{
- \__nicematrix_exp_color_arg:No \__nicematrix_rowcolor \l_tmpa_tl
- {
- \int_eval:n { \c@iRow + 1 }
- - \int_eval:n { \c@iRow + \l__nicematrix_key_nb_rows_int - 1 }
- }
+ \__nicematrix_exp_color_arg:No \__nicematrix_roundedrectanglecolor \l__nicematrix_fill_tl
+ { \int_use:N \c@iRow - \int_use:N \c@jCol }
+ { \int_use:N \c@iRow - * }
+ { \dim_use:N \l__nicematrix_rounded_corners_dim }
+ \int_compare:nNnT \l__nicematrix_key_nb_rows_int > \c_one_int
+ { \__nicematrix_rounded_from_row:n { \c@iRow + 1 } }
}
+ { \__nicematrix_rounded_from_row:n { \c@iRow } }
}
}
\__nicematrix_put_in_row_style:n { \exp_not:n { #2 } }
\dim_compare:nNnT \l_tmpa_dim > \c_zero_dim
{
- \exp_args:Nx \__nicematrix_put_in_row_style:n
+ \__nicematrix_put_in_row_style:e
{
\tl_gput_right:Nn \exp_not:N \g__nicematrix_cell_after_hook_tl
{
@@ -5467,7 +5433,7 @@
}
\dim_compare:nNnT \l_tmpb_dim > \c_zero_dim
{
- \exp_args:Nx \__nicematrix_put_in_row_style:n
+ \__nicematrix_put_in_row_style:e
{
\tl_gput_right:Nn \exp_not:N \g__nicematrix_cell_after_hook_tl
{
@@ -5504,23 +5470,33 @@
\g__nicematrix_row_style_tl
\ignorespaces
}
+\cs_new:Npn \__nicematrix_rounded_from_row:n #1
+ {
+ \__nicematrix_exp_color_arg:No \__nicematrix_roundedrectanglecolor \l__nicematrix_fill_tl
+ { \int_eval:n { #1 } - 1 }
+ {
+ \int_eval:n { \c@iRow + \l__nicematrix_key_nb_rows_int - 1 }
+ - \exp_not:n { \int_use:N \c@jCol }
+ }
+ { \dim_use:N \l__nicematrix_rounded_corners_dim }
+ }
+\cs_generate_variant:Nn \__nicematrix_add_to_colors_seq:nn { e }
+\cs_generate_variant:Nn \__nicematrix_add_to_colors_seq:nn { e e }
\cs_new_protected:Npn \__nicematrix_add_to_colors_seq:nn #1 #2
{
\int_zero:N \l_tmpa_int
\str_if_in:nnF { #1 } { !! }
{
\seq_map_indexed_inline:Nn \g__nicematrix_colors_seq
- { \tl_if_eq:nnT { #1 } { ##2 } { \int_set:Nn \l_tmpa_int { ##1 } } }
+ { \str_if_eq:eeT { #1 } { ##2 } { \int_set:Nn \l_tmpa_int { ##1 } } }
}
\int_if_zero:nTF \l_tmpa_int
{
\seq_gput_right:Nn \g__nicematrix_colors_seq { #1 }
- \tl_gset:cx { g__nicematrix_color _ \seq_count:N \g__nicematrix_colors_seq _ tl } { #2 }
+ \tl_gset:ce { g__nicematrix_color _ \seq_count:N \g__nicematrix_colors_seq _ tl } { #2 }
}
- { \tl_gput_right:cx { g__nicematrix_color _ \int_use:N \l_tmpa_int _tl } { #2 } }
+ { \tl_gput_right:ce { g__nicematrix_color _ \int_use:N \l_tmpa_int _tl } { #2 } }
}
-\cs_generate_variant:Nn \__nicematrix_add_to_colors_seq:nn { e n }
-\cs_generate_variant:Nn \__nicematrix_add_to_colors_seq:nn { e e }
\cs_new_protected:Npn \__nicematrix_clip_with_rounded_corners:
{
\dim_compare:nNnT \l__nicematrix_tab_rounded_corners_dim > \c_zero_dim
@@ -5659,8 +5635,8 @@
\tl_set_eq:NN \l__nicematrix_tmpc_tl \l_tmpa_tl
\tl_set_eq:NN \l__nicematrix_tmpd_tl \l_tmpb_tl
\__nicematrix_cut_on_hyphen:w #2 \q_stop
- \tl_set:Nx \l__nicematrix_rows_tl { \l__nicematrix_tmpc_tl - \l_tmpa_tl }
- \tl_set:Nx \l__nicematrix_cols_tl { \l__nicematrix_tmpd_tl - \l_tmpb_tl }
+ \tl_set:Ne \l__nicematrix_rows_tl { \l__nicematrix_tmpc_tl - \l_tmpa_tl }
+ \tl_set:Ne \l__nicematrix_cols_tl { \l__nicematrix_tmpd_tl - \l_tmpb_tl }
\__nicematrix_cartesian_path:n { #3 }
}
\NewDocumentCommand \__nicematrix_cellcolor { O { } m m }
@@ -5737,7 +5713,7 @@
\tl_set:No \l__nicematrix_rows_tl
{ \int_use:N \l_tmpa_int - \int_use:N \l_tmpb_int }
\tl_clear_new:N \l__nicematrix_color_tl
- \tl_set:Nx \l__nicematrix_color_tl
+ \tl_set:Ne \l__nicematrix_color_tl
{
\__nicematrix_color_index:n
{
@@ -5801,7 +5777,7 @@
\l__nicematrix_nocolor_used_bool
\__nicematrix_cartesian_path_normal_ii:
{
- \seq_if_empty:NTF \l__nicematrix_corners_cells_seq
+ \clist_if_empty:NTF \l__nicematrix_corners_cells_clist
{ \__nicematrix_cartesian_path_normal_i:n { #1 } }
\__nicematrix_cartesian_path_normal_ii:
}
@@ -5820,13 +5796,15 @@
\tl_if_empty:NTF \l_tmpa_tl
{ \cs_set_nopar:Npn \l_tmpa_tl { 1 } }
{
- \tl_if_eq:NNT \l_tmpa_tl \c__nicematrix_star_tl
+ \str_if_eq:eeT \l_tmpa_tl { * }
{ \cs_set_nopar:Npn \l_tmpa_tl { 1 } }
}
+ \int_compare:nNnT \l_tmpa_tl > \g__nicematrix_col_total_int
+ { \__nicematrix_error:n { Invalid~col~number } }
\tl_if_empty:NTF \l_tmpb_tl
{ \tl_set:No \l_tmpb_tl { \int_use:N \c@jCol } }
{
- \tl_if_eq:NNT \l_tmpb_tl \c__nicematrix_star_tl
+ \str_if_eq:eeT \l_tmpb_tl { * }
{ \tl_set:No \l_tmpb_tl { \int_use:N \c@jCol } }
}
\int_compare:nNnT \l_tmpb_tl > \g__nicematrix_col_total_int
@@ -5847,19 +5825,21 @@
\tl_if_empty:NTF \l_tmpa_tl
{ \cs_set_nopar:Npn \l_tmpa_tl { 1 } }
{
- \tl_if_eq:NNT \l_tmpa_tl \c__nicematrix_star_tl
+ \str_if_eq:eeT \l_tmpa_tl { * }
{ \cs_set_nopar:Npn \l_tmpa_tl { 1 } }
}
\tl_if_empty:NTF \l_tmpb_tl
{ \tl_set:No \l_tmpb_tl { \int_use:N \c@iRow } }
{
- \tl_if_eq:NNT \l_tmpb_tl \c__nicematrix_star_tl
+ \str_if_eq:eeT \l_tmpb_tl { * }
{ \tl_set:No \l_tmpb_tl { \int_use:N \c@iRow } }
}
+ \int_compare:nNnT \l_tmpa_tl > \g__nicematrix_row_total_int
+ { \__nicematrix_error:n { Invalid~row~number } }
\int_compare:nNnT \l_tmpb_tl > \g__nicematrix_row_total_int
{ \tl_set:No \l_tmpb_tl { \int_use:N \g__nicematrix_row_total_int } }
\cs_if_exist:cF
- { __nicematrix _ \l_tmpa_tl _ \l__nicematrix_tmpc_tl _ nocolor }
+ { __nicematrix _ nocolor _ \l_tmpa_tl - \l__nicematrix_tmpc_tl }
{
\__nicematrix_qpoint:n { row - \int_eval:n { \l_tmpb_tl + 1 } }
\dim_set:Nn \l_tmpb_dim { \pgf@y + 0.5 \arrayrulewidth }
@@ -5886,14 +5866,13 @@
\dim_set:Nn \l_tmpa_dim { \pgf@x + 0.5 \arrayrulewidth }
\clist_map_inline:Nn \l__nicematrix_rows_tl
{
- \seq_if_in:NnF \l__nicematrix_corners_cells_seq
- { ####1 - ##1 }
+ \__nicematrix_if_in_corner:nF { ####1 - ##1 }
{
\__nicematrix_qpoint:n { row - \int_eval:n { ####1 + 1 } }
\dim_set:Nn \l_tmpb_dim { \pgf@y + 0.5 \arrayrulewidth }
\__nicematrix_qpoint:n { row - ####1 }
\dim_set:Nn \l__nicematrix_tmpd_dim { \pgf@y + 0.5 \arrayrulewidth }
- \cs_if_exist:cF { __nicematrix _ ####1 _ ##1 _ nocolor }
+ \cs_if_exist:cF { __nicematrix _ nocolor _ ####1 - ##1 }
{
\pgfpathrectanglecorners
{ \pgfpoint \l__nicematrix_tmpc_dim \l__nicematrix_tmpd_dim }
@@ -5912,7 +5891,7 @@
\clist_map_inline:Nn \l__nicematrix_rows_tl
{
\clist_map_inline:Nn \l__nicematrix_cols_tl
- { \cs_set:cpn { __nicematrix _ ##1 _ ####1 _ nocolor } { } }
+ { \cs_set_nopar:cpn { __nicematrix _ nocolor _ ##1 - ####1 } { } }
}
}
\cs_new_protected:Npn \__nicematrix_expand_clist:NN #1 #2
@@ -5926,12 +5905,12 @@
{ \__nicematrix_cut_on_hyphen:w ##1 \q_stop }
{ \__nicematrix_cut_on_hyphen:w ##1 - ##1 \q_stop }
\bool_lazy_or:nnT
+ { \str_if_eq_p:ee \l_tmpa_tl { * } }
{ \tl_if_blank_p:o \l_tmpa_tl }
- { \str_if_eq_p:on \l_tmpa_tl { * } }
{ \cs_set_nopar:Npn \l_tmpa_tl { 1 } }
\bool_lazy_or:nnT
+ { \str_if_eq_p:ee \l_tmpb_tl { * } }
{ \tl_if_blank_p:o \l_tmpb_tl }
- { \str_if_eq_p:on \l_tmpb_tl { * } }
{ \tl_set:No \l_tmpb_tl { \int_use:N #2 } }
\int_compare:nNnT \l_tmpb_tl > #2
{ \tl_set:No \l_tmpb_tl { \int_use:N #2 } }
@@ -5941,8 +5920,7 @@
}
\NewDocumentCommand \__nicematrix_cellcolor_tabular { O { } m }
{
- \__nicematrix_test_color_inside:
- \tl_gput_right:Nx \g__nicematrix_pre_code_before_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_before_tl
{
\__nicematrix_cellcolor [ #1 ] { \exp_not:n { #2 } }
{ \int_use:N \c@iRow - \int_use:N \c@jCol }
@@ -5951,8 +5929,7 @@
}
\NewDocumentCommand \__nicematrix_rowcolor_tabular { O { } m }
{
- \__nicematrix_test_color_inside:
- \tl_gput_right:Nx \g__nicematrix_pre_code_before_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_before_tl
{
\__nicematrix_rectanglecolor [ #1 ] { \exp_not:n { #2 } }
{ \int_use:N \c@iRow - \int_use:N \c@jCol }
@@ -5964,7 +5941,6 @@
{ \__nicematrix_rowlistcolors_tabular [ #1 ] { { #2 } , { #3 } } }
\NewDocumentCommand { \__nicematrix_rowlistcolors_tabular } { O { } m O { } }
{
- \__nicematrix_test_color_inside:
\peek_remove_spaces:n
{ \__nicematrix_rowlistcolors_tabular:nnn { #1 } { #2 } { #3 } }
}
@@ -5974,7 +5950,7 @@
\seq_map_inline:Nn \g__nicematrix_rowlistcolors_seq
{ \__nicematrix_rowlistcolors_tabular_i:nnnn ##1 }
\seq_gset_eq:NN \g__nicematrix_rowlistcolors_seq \g_tmpa_seq
- \seq_gput_right:Nx \g__nicematrix_rowlistcolors_seq
+ \seq_gput_right:Ne \g__nicematrix_rowlistcolors_seq
{
{ \int_use:N \c@iRow }
{ \exp_not:n { #1 } }
@@ -5987,7 +5963,7 @@
\int_compare:nNnTF { #1 } = \c@iRow
{ \seq_gput_right:Nn \g_tmpa_seq { { #1 } { #2 } { #3 } { #4 } } }
{
- \tl_gput_right:Nx \g__nicematrix_pre_code_before_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_before_tl
{
\__nicematrix_rowlistcolors
[ \exp_not:n { #2 } ]
@@ -6012,7 +5988,7 @@
{
\int_compare:nNnT \c@jCol > \g__nicematrix_col_total_int
{
- \tl_gput_left:Nx \g__nicematrix_pre_code_before_tl
+ \tl_gput_left:Ne \g__nicematrix_pre_code_before_tl
{
\exp_not:N \columncolor [ #1 ]
{ \exp_not:n { #2 } } { \int_use:N \c@jCol }
@@ -6036,6 +6012,24 @@
}
{ \cs_new_protected:Npn \__nicematrix_revert_colortbl: { } }
}
+\cs_new_protected:Npn \__nicematrix_EmptyColumn:n #1
+ {
+ \clist_map_inline:nn { #1 }
+ {
+ \seq_gput_right:Nn \g__nicematrix_future_pos_of_blocks_seq
+ { { -2 } { #1 } { 98 } { ##1 } { } } % 98 and not 99 !
+ \columncolor { nocolor } { ##1 }
+ }
+ }
+\cs_new_protected:Npn \__nicematrix_EmptyRow:n #1
+ {
+ \clist_map_inline:nn { #1 }
+ {
+ \seq_gput_right:Nn \g__nicematrix_future_pos_of_blocks_seq
+ { { ##1 } { -2 } { ##1 } { 98 } { } } % 98 and not 99 !
+ \rowcolor { nocolor } { ##1 }
+ }
+ }
\cs_set_eq:NN \OnlyMainNiceMatrix \use:n
\cs_new_protected:Npn \__nicematrix_OnlyMainNiceMatrix:n #1
{
@@ -6061,6 +6055,104 @@
}
}
}
+\cs_new:Npn \__nicematrix_tikz_booktabs_loaded:nn #1 #2
+ {
+ \IfPackageLoadedTF { tikz }
+ {
+ \IfPackageLoadedTF { booktabs }
+ { #2 }
+ { \__nicematrix_error:nn { TopRule~without~booktabs } { #1 } }
+ }
+ { \__nicematrix_error:nn { TopRule~without~tikz } { #1 } }
+ }
+\NewExpandableDocumentCommand { \__nicematrix_TopRule } { }
+ { \__nicematrix_tikz_booktabs_loaded:nn \TopRule \__nicematrix_TopRule_i: }
+\cs_new:Npn \__nicematrix_TopRule_i:
+ {
+ \noalign \bgroup
+ \peek_meaning:NTF [
+ { \__nicematrix_TopRule_ii: }
+ { \__nicematrix_TopRule_ii: [ \dim_use:N \heavyrulewidth ] }
+ }
+\NewDocumentCommand \__nicematrix_TopRule_ii: { o }
+ {
+ \tl_gput_right:Ne \g__nicematrix_pre_code_after_tl
+ {
+ \__nicematrix_hline:n
+ {
+ position = \int_eval:n { \c@iRow + 1 } ,
+ tikz =
+ {
+ line~width = #1 ,
+ yshift = 0.25 \arrayrulewidth ,
+ shorten~< = - 0.5 \arrayrulewidth
+ } ,
+ total-width = #1
+ }
+ }
+ \skip_vertical:n { \belowrulesep + #1 }
+ \egroup
+ }
+\NewExpandableDocumentCommand { \__nicematrix_BottomRule } { }
+ { \__nicematrix_tikz_booktabs_loaded:nn \BottomRule \__nicematrix_BottomRule_i: }
+\cs_new:Npn \__nicematrix_BottomRule_i:
+ {
+ \noalign \bgroup
+ \peek_meaning:NTF [
+ { \__nicematrix_BottomRule_ii: }
+ { \__nicematrix_BottomRule_ii: [ \dim_use:N \heavyrulewidth ] }
+ }
+\NewDocumentCommand \__nicematrix_BottomRule_ii: { o }
+ {
+ \tl_gput_right:Ne \g__nicematrix_pre_code_after_tl
+ {
+ \__nicematrix_hline:n
+ {
+ position = \int_eval:n { \c@iRow + 1 } ,
+ tikz =
+ {
+ line~width = #1 ,
+ yshift = 0.25 \arrayrulewidth ,
+ shorten~< = - 0.5 \arrayrulewidth
+ } ,
+ total-width = #1 ,
+ }
+ }
+ \skip_vertical:N \aboverulesep
+ \__nicematrix_create_row_node_i:
+ \skip_vertical:n { #1 }
+ \egroup
+ }
+\NewExpandableDocumentCommand { \__nicematrix_MidRule } { }
+ { \__nicematrix_tikz_booktabs_loaded:nn \MidRule \__nicematrix_MidRule_i: }
+\cs_new:Npn \__nicematrix_MidRule_i:
+ {
+ \noalign \bgroup
+ \peek_meaning:NTF [
+ { \__nicematrix_MidRule_ii: }
+ { \__nicematrix_MidRule_ii: [ \dim_use:N \lightrulewidth ] }
+ }
+\NewDocumentCommand \__nicematrix_MidRule_ii: { o }
+ {
+ \skip_vertical:N \aboverulesep
+ \__nicematrix_create_row_node_i:
+ \tl_gput_right:Ne \g__nicematrix_pre_code_after_tl
+ {
+ \__nicematrix_hline:n
+ {
+ position = \int_eval:n { \c@iRow + 1 } ,
+ tikz =
+ {
+ line~width = #1 ,
+ yshift = 0.25 \arrayrulewidth ,
+ shorten~< = - 0.5 \arrayrulewidth
+ } ,
+ total-width = #1 ,
+ }
+ }
+ \skip_vertical:n { \belowrulesep + #1 }
+ \egroup
+ }
\keys_define:nn { nicematrix / Rules }
{
position .int_set:N = \l__nicematrix_position_int ,
@@ -6069,7 +6161,7 @@
end .code:n =
\bool_lazy_or:nnTF
{ \tl_if_empty_p:n { #1 } }
- { \str_if_eq_p:nn { #1 } { last } }
+ { \str_if_eq_p:ee { #1 } { last } }
{ \int_set_eq:NN \l__nicematrix_end_int \c@jCol }
{ \int_set:Nn \l__nicematrix_end_int { #1 } }
}
@@ -6141,23 +6233,18 @@
}
\cs_new_protected:Npn \__nicematrix_test_in_corner_v:
{
- \int_compare:nNnTF \l_tmpb_tl = { \int_eval:n { \c@jCol + 1 } }
+ \int_compare:nNnTF \l_tmpb_tl = { \c@jCol + 1 }
{
- \seq_if_in:NxT
- \l__nicematrix_corners_cells_seq
- { \l_tmpa_tl - \int_eval:n { \l_tmpb_tl - 1 } }
+ \__nicematrix_if_in_corner:nT { \l_tmpa_tl - \int_eval:n { \l_tmpb_tl - 1 } }
{ \bool_set_false:N \g_tmpa_bool }
}
{
- \seq_if_in:NxT
- \l__nicematrix_corners_cells_seq
- { \l_tmpa_tl - \l_tmpb_tl }
+ \__nicematrix_if_in_corner:nT { \l_tmpa_tl - \l_tmpb_tl }
{
\int_compare:nNnTF \l_tmpb_tl = \c_one_int
{ \bool_set_false:N \g_tmpa_bool }
{
- \seq_if_in:NxT
- \l__nicematrix_corners_cells_seq
+ \__nicematrix_if_in_corner:nT
{ \l_tmpa_tl - \int_eval:n { \l_tmpb_tl - 1 } }
{ \bool_set_false:N \g_tmpa_bool }
}
@@ -6167,7 +6254,7 @@
\cs_new_protected:Npn \__nicematrix_vline_ii:
{
\tl_clear:N \l__nicematrix_tikz_rule_tl
- \keys_set:nV { nicematrix / RulesBis } \l__nicematrix_other_keys_tl
+ \keys_set:no { nicematrix / RulesBis } \l__nicematrix_other_keys_tl
\bool_if:NTF \l__nicematrix_dotted_bool
\__nicematrix_vline_iv:
{
@@ -6252,7 +6339,7 @@
\begin {tikzpicture }
\CT@arc@
\tl_if_empty:NF \l__nicematrix_rule_color_tl
- { \tl_put_right:Nx \l__nicematrix_tikz_rule_tl { , color = \l__nicematrix_rule_color_tl } }
+ { \tl_put_right:Ne \l__nicematrix_tikz_rule_tl { , color = \l__nicematrix_rule_color_tl } }
\pgfrememberpicturepositiononpagetrue
\pgf@relevantforpicturesizefalse
\__nicematrix_qpoint:n { row - \int_use:N \l__nicematrix_local_start_int }
@@ -6277,7 +6364,7 @@
{ \int_eval:n { \c@jCol + 1 } }
}
{
- \tl_if_eq:NNF \l__nicematrix_vlines_clist \c__nicematrix_all_tl
+ \str_if_eq:eeF \l__nicematrix_vlines_clist { all }
{ \clist_if_in:NnT \l__nicematrix_vlines_clist { ##1 } }
{ \__nicematrix_vline:n { position = ##1 , total-width = \arrayrulewidth } }
}
@@ -6300,8 +6387,8 @@
\l_tmpb_tl
{
\bool_gset_true:N \g_tmpa_bool
- \seq_map_inline:Nn \g__nicematrix_pos_of_blocks_seq
- { \__nicematrix_test_hline_in_block:nnnnn ##1 }
+ \seq_map_inline:Nn \g__nicematrix_pos_of_blocks_seq
+ { \__nicematrix_test_hline_in_block:nnnnn ##1 }
\seq_map_inline:Nn \g__nicematrix_pos_of_xdots_seq
{ \__nicematrix_test_hline_in_block:nnnnn ##1 }
\seq_map_inline:Nn \g__nicematrix_pos_of_stroken_blocks_seq
@@ -6329,23 +6416,18 @@
}
\cs_new_protected:Npn \__nicematrix_test_in_corner_h:
{
- \int_compare:nNnTF \l_tmpa_tl = { \int_eval:n { \c@iRow + 1 } }
+ \int_compare:nNnTF \l_tmpa_tl = { \c@iRow + 1 }
{
- \seq_if_in:NxT
- \l__nicematrix_corners_cells_seq
- { \int_eval:n { \l_tmpa_tl - 1 } - \l_tmpb_tl }
+ \__nicematrix_if_in_corner:nT { \int_eval:n { \l_tmpa_tl - 1 } - \l_tmpb_tl }
{ \bool_set_false:N \g_tmpa_bool }
}
{
- \seq_if_in:NxT
- \l__nicematrix_corners_cells_seq
- { \l_tmpa_tl - \l_tmpb_tl }
+ \__nicematrix_if_in_corner:nT { \l_tmpa_tl - \l_tmpb_tl }
{
\int_compare:nNnTF \l_tmpa_tl = \c_one_int
{ \bool_set_false:N \g_tmpa_bool }
{
- \seq_if_in:NxT
- \l__nicematrix_corners_cells_seq
+ \__nicematrix_if_in_corner:nT
{ \int_eval:n { \l_tmpa_tl - 1 } - \l_tmpb_tl }
{ \bool_set_false:N \g_tmpa_bool }
}
@@ -6355,7 +6437,7 @@
\cs_new_protected:Npn \__nicematrix_hline_ii:
{
\tl_clear:N \l__nicematrix_tikz_rule_tl
- \keys_set:nV { nicematrix / RulesBis } \l__nicematrix_other_keys_tl
+ \keys_set:no { nicematrix / RulesBis } \l__nicematrix_other_keys_tl
\bool_if:NTF \l__nicematrix_dotted_bool
\__nicematrix_hline_iv:
{
@@ -6454,7 +6536,7 @@
\begin { tikzpicture }
\CT@arc@
\tl_if_empty:NF \l__nicematrix_rule_color_tl
- { \tl_put_right:Nx \l__nicematrix_tikz_rule_tl { , color = \l__nicematrix_rule_color_tl } }
+ { \tl_put_right:Ne \l__nicematrix_tikz_rule_tl { , color = \l__nicematrix_rule_color_tl } }
\pgfrememberpicturepositiononpagetrue
\pgf@relevantforpicturesizefalse
\__nicematrix_qpoint:n { col - \int_use:N \l__nicematrix_local_start_int }
@@ -6479,7 +6561,7 @@
{ \int_eval:n { \c@iRow + 1 } }
}
{
- \tl_if_eq:NNF \l__nicematrix_hlines_clist \c__nicematrix_all_tl
+ \str_if_eq:eeF \l__nicematrix_hlines_clist { all }
{ \clist_if_in:NnT \l__nicematrix_hlines_clist { ##1 } }
{ \__nicematrix_hline:n { position = ##1 , total-width = \arrayrulewidth } }
}
@@ -6489,19 +6571,19 @@
{
\peek_remove_spaces:n
{
- \peek_meaning:NTF \Hline
- { \__nicematrix_Hline_ii:nn { #1 + 1 } }
- { \__nicematrix_Hline_iii:n { #1 } }
+ \peek_meaning:NTF \Hline
+ { \__nicematrix_Hline_ii:nn { #1 + 1 } }
+ { \__nicematrix_Hline_iii:n { #1 } }
}
}
\cs_set:Npn \__nicematrix_Hline_ii:nn #1 #2 { \__nicematrix_Hline_i:n { #1 } }
\cs_set:Npn \__nicematrix_Hline_iii:n #1
{ \__nicematrix_collect_options:n { \__nicematrix_Hline_iv:nn { #1 } } }
-\cs_set:Npn \__nicematrix_Hline_iv:nn #1 #2
+\cs_set_protected:Npn \__nicematrix_Hline_iv:nn #1 #2
{
\__nicematrix_compute_rule_width:n { multiplicity = #1 , #2 }
\skip_vertical:N \l__nicematrix_rule_width_dim
- \tl_gput_right:Nx \g__nicematrix_pre_code_after_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_after_tl
{
\__nicematrix_hline:n
{
@@ -6527,7 +6609,7 @@
{ \str_if_empty_p:N \l__nicematrix_ccommand_str }
}
{ \__nicematrix_error:n { No~letter~and~no~command } }
- { \exp_args:No \__nicematrix_custom_line_i:n \l__nicematrix_other_keys_tl }
+ { \__nicematrix_custom_line_i:o \l__nicematrix_other_keys_tl }
}
\keys_define:nn { nicematrix / custom-line }
{
@@ -6538,6 +6620,7 @@
ccommand .str_set:N = \l__nicematrix_ccommand_str ,
ccommand .value_required:n = true ,
}
+\cs_generate_variant:Nn \__nicematrix_custom_line_i:n { o }
\cs_new_protected:Npn \__nicematrix_custom_line_i:n #1
{
\bool_set_false:N \l__nicematrix_tikz_rule_bool
@@ -6546,8 +6629,7 @@
\keys_set:nn { nicematrix / custom-line-bis } { #1 }
\bool_if:NT \l__nicematrix_tikz_rule_bool
{
- \IfPackageLoadedTF { tikz }
- { }
+ \IfPackageLoadedF { tikz }
{ \__nicematrix_error:n { tikz~in~custom-line~without~tikz } }
\bool_if:NT \l__nicematrix_color_bool
{ \__nicematrix_error:n { color~in~custom-line~with~tikz } }
@@ -6562,11 +6644,12 @@
\int_compare:nTF { \str_count:N \l__nicematrix_letter_str != 1 }
{ \__nicematrix_error:n { Several~letters } }
{
- \exp_args:NnV \tl_if_in:NnTF
- \c__nicematrix_forbidden_letters_str \l__nicematrix_letter_str
+ \tl_if_in:NoTF
+ \c__nicematrix_forbidden_letters_str
+ \l__nicematrix_letter_str
{ \__nicematrix_error:ne { Forbidden~letter } \l__nicematrix_letter_str }
{
- \cs_set:cpn { __nicematrix _ \l__nicematrix_letter_str } ##1
+ \cs_set_nopar:cpn { __nicematrix _ \l__nicematrix_letter_str } ##1
{ \__nicematrix_v_custom_line:n { #1 } }
}
}
@@ -6612,7 +6695,7 @@
}
\cs_new_protected:Npn \__nicematrix_h_custom_line:n #1
{
- \cs_set:cpn { nicematrix - \l__nicematrix_command_str } { \Hline [ #1 ] }
+ \cs_set_nopar:cpn { nicematrix - \l__nicematrix_command_str } { \Hline [ #1 ] }
\seq_put_left:No \l__nicematrix_custom_line_commands_seq \l__nicematrix_command_str
}
\cs_new_protected:Npn \__nicematrix_c_custom_line:n #1
@@ -6634,10 +6717,10 @@
}
\cs_new_protected:Npn \__nicematrix_c_custom_line_i:nn #1 #2
{
- \str_if_in:nnTF { #2 } { - }
+ \tl_if_in:nnTF { #2 } { - }
{ \__nicematrix_cut_on_hyphen:w #2 \q_stop }
{ \__nicematrix_cut_on_hyphen:w #2 - #2 \q_stop }
- \tl_gput_right:Nx \g__nicematrix_pre_code_after_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_after_tl
{
\__nicematrix_hline:n
{
@@ -6674,9 +6757,9 @@
\cs_new_protected:Npn \__nicematrix_v_custom_line:n #1
{
\__nicematrix_compute_rule_width:n { #1 }
- \tl_gput_right:Nx \g__nicematrix_array_preamble_tl
+ \tl_gput_right:Ne \g__nicematrix_array_preamble_tl
{ \exp_not:N ! { \skip_horizontal:n { \dim_use:N \l__nicematrix_rule_width_dim } } }
- \tl_gput_right:Nx \g__nicematrix_pre_code_after_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_after_tl
{
\__nicematrix_vline:n
{
@@ -6749,7 +6832,9 @@
}
\cs_new_protected:Npn \__nicematrix_compute_corners:
{
- \seq_clear_new:N \l__nicematrix_corners_cells_seq
+ \seq_map_inline:Nn \g__nicematrix_pos_of_blocks_seq
+ { \__nicematrix_mark_cells_of_block:nnnnn ##1 }
+ \clist_clear:N \l__nicematrix_corners_cells_clist
\clist_map_inline:Nn \l__nicematrix_corners_clist
{
\str_case:nnF { ##1 }
@@ -6765,15 +6850,30 @@
}
{ \__nicematrix_error:nn { bad~corner } { ##1 } }
}
- \seq_if_empty:NF \l__nicematrix_corners_cells_seq
+ \clist_if_empty:NF \l__nicematrix_corners_cells_clist
{
- \tl_gput_right:Nx \g__nicematrix_aux_tl
+ \tl_gput_right:Ne \g__nicematrix_aux_tl
{
- \seq_set_from_clist:Nn \exp_not:N \l__nicematrix_corners_cells_seq
- { \seq_use:Nnnn \l__nicematrix_corners_cells_seq , , , }
+ \cs_set_nopar:Npn \exp_not:N \l__nicematrix_corners_cells_clist
+ { \l__nicematrix_corners_cells_clist }
}
}
}
+\cs_new_protected:Npn \__nicematrix_mark_cells_of_block:nnnnn #1 #2 #3 #4 #5
+ {
+ \int_step_inline:nnn { #1 } { #3 }
+ {
+ \int_step_inline:nnn { #2 } { #4 }
+ { \cs_set_nopar:cpn { __nicematrix _ block _ ##1 - ####1 } { } }
+ }
+ }
+\prg_new_conditional:Npnn \__nicematrix_if_in_block:nn #1 #2 { p }
+ {
+ \cs_if_exist:cTF
+ { __nicematrix _ block _ \int_eval:n { #1 } - \int_eval:n { #2 } }
+ \prg_return_true:
+ \prg_return_false:
+ }
\cs_new_protected:Npn \__nicematrix_compute_a_corner:nnnnnn #1 #2 #3 #4 #5 #6
{
\bool_set_false:N \l_tmpa_bool
@@ -6781,13 +6881,12 @@
\int_set:Nn \l__nicematrix_last_empty_row_int { #1 }
\int_step_inline:nnnn { #1 } { #3 } { #5 }
{
- \__nicematrix_test_if_cell_in_a_block:nn { ##1 } { \int_eval:n { #2 } }
\bool_lazy_or:nnTF
{
\cs_if_exist_p:c
{ pgf @ sh @ ns @ \__nicematrix_env: - ##1 - \int_eval:n { #2 } }
}
- \l_tmpb_bool
+ { \__nicematrix_if_in_block_p:nn { ##1 } { #2 } }
{ \bool_set_true:N \l_tmpa_bool }
{
\bool_if:NF \l_tmpa_bool
@@ -6799,13 +6898,12 @@
\int_set:Nn \l__nicematrix_last_empty_column_int { #2 }
\int_step_inline:nnnn { #2 } { #4 } { #6 }
{
- \__nicematrix_test_if_cell_in_a_block:nn { \int_eval:n { #1 } } { ##1 }
\bool_lazy_or:nnTF
- \l_tmpb_bool
{
\cs_if_exist_p:c
{ pgf @ sh @ ns @ \__nicematrix_env: - \int_eval:n { #1 } - ##1 }
}
+ { \__nicematrix_if_in_block_p:nn { #1 } { ##1 } }
{ \bool_set_true:N \l_tmpa_bool }
{
\bool_if:NF \l_tmpa_bool
@@ -6817,48 +6915,25 @@
\bool_set_false:N \l_tmpa_bool
\int_step_inline:nnnn { #2 } { #4 } \l__nicematrix_last_empty_column_int
{
- \__nicematrix_test_if_cell_in_a_block:nn { ##1 } { ####1 }
\bool_lazy_or:nnTF
- \l_tmpb_bool
- {
- \cs_if_exist_p:c
- { pgf @ sh @ ns @ \__nicematrix_env: - ##1 - ####1 }
- }
+ { \cs_if_exist_p:c { pgf @ sh @ ns @ \__nicematrix_env: - ##1 - ####1 } }
+ { \__nicematrix_if_in_block_p:nn { ##1 } { ####1 } }
{ \bool_set_true:N \l_tmpa_bool }
{
\bool_if:NF \l_tmpa_bool
{
\int_set:Nn \l__nicematrix_last_empty_column_int { ####1 }
- \seq_put_right:Nn
- \l__nicematrix_corners_cells_seq
+ \clist_put_right:Nn
+ \l__nicematrix_corners_cells_clist
{ ##1 - ####1 }
+ \cs_set_nopar:cpn { __nicematrix _ corner _ ##1 - ####1 } { }
}
}
}
}
}
-\cs_new_protected:Npn \__nicematrix_test_if_cell_in_a_block:nn #1 #2
- {
- \int_set:Nn \l_tmpa_int { #1 }
- \int_set:Nn \l_tmpb_int { #2 }
- \bool_set_false:N \l_tmpb_bool
- \seq_map_inline:Nn \g__nicematrix_pos_of_blocks_seq
- { \__nicematrix_test_if_cell_in_block:nnnnnnn \l_tmpa_int \l_tmpb_int ##1 }
- }
-\cs_set_protected:Npn \__nicematrix_test_if_cell_in_block:nnnnnnn #1 #2 #3 #4 #5 #6 #7
- {
- \int_compare:nNnF { #3 } > { #1 }
- {
- \int_compare:nNnF { #1 } > { #5 }
- {
- \int_compare:nNnF { #4 } > { #2 }
- {
- \int_compare:nNnF { #2 } > { #6 }
- { \bool_set_true:N \l_tmpb_bool }
- }
- }
- }
- }
+\cs_new:Npn \__nicematrix_if_in_corner:nT #1 { \cs_if_exist:cT { __nicematrix _ corner _ #1 } }
+\cs_new:Npn \__nicematrix_if_in_corner:nF #1 { \cs_if_exist:cF { __nicematrix _ corner _ #1 } }
\bool_new:N \l__nicematrix_block_auto_columns_width_bool
\keys_define:nn { nicematrix / NiceMatrixBlock }
{
@@ -6879,8 +6954,7 @@
\cs_if_exist:cT
{ __nicematrix_max_cell_width_ \int_use:N \g__nicematrix_NiceMatrixBlock_int }
{
- % is \exp_args:NNe mandatory?
- \exp_args:NNe \dim_set:Nn \l__nicematrix_columns_width_dim
+ \dim_set:Nn \l__nicematrix_columns_width_dim
{
\use:c
{ __nicematrix_max_cell_width _ \int_use:N \g__nicematrix_NiceMatrixBlock_int }
@@ -6895,7 +6969,7 @@
\bool_if:NT \l__nicematrix_block_auto_columns_width_bool
{
\iow_shipout:Nn \@mainaux \ExplSyntaxOn
- \iow_shipout:Nx \@mainaux
+ \iow_shipout:Ne \@mainaux
{
\cs_gset:cpn
{ __nicematrix _ max _ cell _ width _ \int_use:N \g__nicematrix_NiceMatrixBlock_int }
@@ -6906,17 +6980,26 @@
}
\ignorespacesafterend
}
-\cs_generate_variant:Nn \dim_min:nn { v n }
-\cs_generate_variant:Nn \dim_max:nn { v n }
\cs_new_protected:Npn \__nicematrix_create_extra_nodes:
{
\bool_if:nTF \l__nicematrix_medium_nodes_bool
{
- \bool_if:NTF \l__nicematrix_large_nodes_bool
- \__nicematrix_create_medium_and_large_nodes:
- \__nicematrix_create_medium_nodes:
+ \bool_if:NTF \l__nicematrix_no_cell_nodes_bool
+ { \__nicematrix_error:n { extra-nodes~with~no-cell-nodes } }
+ {
+ \bool_if:NTF \l__nicematrix_large_nodes_bool
+ \__nicematrix_create_medium_and_large_nodes:
+ \__nicematrix_create_medium_nodes:
+ }
+ }
+ {
+ \bool_if:NT \l__nicematrix_large_nodes_bool
+ {
+ \bool_if:NTF \l__nicematrix_no_cell_nodes_bool
+ { \__nicematrix_error:n { extra-nodes~with~no-cell-nodes } }
+ \__nicematrix_create_large_nodes:
+ }
}
- { \bool_if:NT \l__nicematrix_large_nodes_bool \__nicematrix_create_large_nodes: }
}
\cs_new_protected:Npn \__nicematrix_computations_for_medium_nodes:
{
@@ -6945,7 +7028,7 @@
\pgfpointanchor { \__nicematrix_env: - \__nicematrix_i: - \__nicematrix_j: } { south~west }
\dim_set:cn { l__nicematrix_row_\__nicematrix_i: _min_dim}
{ \dim_min:vn { l__nicematrix_row _ \__nicematrix_i: _min_dim } \pgf@y }
- \seq_if_in:NxF \g__nicematrix_multicolumn_cells_seq { \__nicematrix_i: - \__nicematrix_j: }
+ \seq_if_in:NeF \g__nicematrix_multicolumn_cells_seq { \__nicematrix_i: - \__nicematrix_j: }
{
\dim_set:cn { l__nicematrix_column _ \__nicematrix_j: _min_dim}
{ \dim_min:vn { l__nicematrix_column _ \__nicematrix_j: _min_dim } \pgf@x }
@@ -6953,7 +7036,7 @@
\pgfpointanchor { \__nicematrix_env: - \__nicematrix_i: - \__nicematrix_j: } { north~east }
\dim_set:cn { l__nicematrix_row _ \__nicematrix_i: _ max_dim }
{ \dim_max:vn { l__nicematrix_row _ \__nicematrix_i: _ max_dim } \pgf@y }
- \seq_if_in:NxF \g__nicematrix_multicolumn_cells_seq { \__nicematrix_i: - \__nicematrix_j: }
+ \seq_if_in:NeF \g__nicematrix_multicolumn_cells_seq { \__nicematrix_i: - \__nicematrix_j: }
{
\dim_set:cn { l__nicematrix_column _ \__nicematrix_j: _ max_dim }
{ \dim_max:vn { l__nicematrix_column _ \__nicematrix_j: _max_dim } \pgf@x }
@@ -7165,23 +7248,23 @@
{
\bool_lazy_or:nnTF
{ \tl_if_blank_p:n { #1 } }
- { \str_if_eq_p:Vn \c__nicematrix_star_str { #1 } }
+ { \str_if_eq_p:ee { * } { #1 } }
{ \int_set:Nn \l_tmpa_int { 100 } }
{ \int_set:Nn \l_tmpa_int { #1 } }
\bool_lazy_or:nnTF
{ \tl_if_blank_p:n { #2 } }
- { \str_if_eq_p:Vn \c__nicematrix_star_str { #2 } }
+ { \str_if_eq_p:ee { * } { #2 } }
{ \int_set:Nn \l_tmpb_int { 100 } }
{ \int_set:Nn \l_tmpb_int { #2 } }
\int_compare:nNnTF \l_tmpb_int = \c_one_int
{
\tl_if_empty:NTF \l__nicematrix_hpos_cell_tl
{ \str_set_eq:NN \l__nicematrix_hpos_block_str \c__nicematrix_c_str }
- { \str_set:NV \l__nicematrix_hpos_block_str \l__nicematrix_hpos_cell_tl }
+ { \str_set:No \l__nicematrix_hpos_block_str \l__nicematrix_hpos_cell_tl }
}
{ \str_set_eq:NN \l__nicematrix_hpos_block_str \c__nicematrix_c_str }
\keys_set_known:nn { nicematrix / Block / FirstPass } { #3 }
- \tl_set:Nx \l_tmpa_tl
+ \tl_set:Ne \l_tmpa_tl
{
{ \int_use:N \c@iRow }
{ \int_use:N \c@jCol }
@@ -7193,24 +7276,23 @@
{ \tl_if_in:nnT { #5 } { & } { \bool_set_true:N \l_tmpa_bool } }
\bool_case:nF
{
- \l_tmpa_bool { \exp_args:Nee \__nicematrix_Block_vii:nnnnn }
- \l__nicematrix_p_block_bool { \exp_args:Nee \__nicematrix_Block_vi:nnnnn }
- \l__nicematrix_X_bool { \exp_args:Nee \__nicematrix_Block_v:nnnnn }
- { \tl_if_empty_p:n { #5 } } { \exp_args:Nee \__nicematrix_Block_v:nnnnn }
- { \int_compare_p:nNn \l_tmpa_int = \c_one_int }
- { \exp_args:Nee \__nicematrix_Block_iv:nnnnn }
- { \int_compare_p:nNn \l_tmpb_int = \c_one_int }
- { \exp_args:Nee \__nicematrix_Block_iv:nnnnn }
+ \l_tmpa_bool { \__nicematrix_Block_vii:eennn }
+ \l__nicematrix_p_block_bool { \__nicematrix_Block_vi:eennn }
+ \l__nicematrix_X_bool { \__nicematrix_Block_v:eennn }
+ { \tl_if_empty_p:n { #5 } } { \__nicematrix_Block_v:eennn }
+ { \int_compare_p:nNn \l_tmpa_int = \c_one_int } { \__nicematrix_Block_iv:eennn }
+ { \int_compare_p:nNn \l_tmpb_int = \c_one_int } { \__nicematrix_Block_iv:eennn }
}
- { \exp_args:Nee \__nicematrix_Block_v:nnnnn }
+ { \__nicematrix_Block_v:eennn }
{ \l_tmpa_int } { \l_tmpb_int } { #3 } { #4 } { #5 }
}
+\cs_generate_variant:Nn \__nicematrix_Block_iv:nnnnn { e e }
\cs_new_protected:Npn \__nicematrix_Block_iv:nnnnn #1 #2 #3 #4 #5
{
\int_gincr:N \g__nicematrix_block_box_int
\cs_set_protected_nopar:Npn \diagbox ##1 ##2
{
- \tl_gput_right:Nx \g__nicematrix_pre_code_after_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_after_tl
{
\__nicematrix_actually_diagbox:nnnnnn
{ \int_use:N \c@iRow }
@@ -7270,6 +7352,8 @@
\end { minipage }
}
{
+ \bool_if:NT \c__nicematrix_testphase_table_bool
+ { \tagpdfsetup { table / tagging = presentation } }
\use:e
{
\exp_not:N \begin { tabular }%
@@ -7329,7 +7413,7 @@
}
}
}
- \seq_gput_right:Nx \g__nicematrix_blocks_seq
+ \seq_gput_right:Ne \g__nicematrix_blocks_seq
{
\l_tmpa_tl
{
@@ -7353,7 +7437,7 @@
{
\bool_if:NT \g__nicematrix_rotate_bool
{
- \str_set:Nx \l__nicematrix_hpos_block_str
+ \str_set:Ne \l__nicematrix_hpos_block_str
{
\bool_if:NTF \g__nicematrix_rotate_c_bool
{ c }
@@ -7395,9 +7479,10 @@
}
}
}
+\cs_generate_variant:Nn \__nicematrix_Block_v:nnnnn { e e }
\cs_new_protected:Npn \__nicematrix_Block_v:nnnnn #1 #2 #3 #4 #5
{
- \seq_gput_right:Nx \g__nicematrix_blocks_seq
+ \seq_gput_right:Ne \g__nicematrix_blocks_seq
{
\l_tmpa_tl
{ \exp_not:n { #3 } }
@@ -7444,22 +7529,20 @@
}
}
}
+\cs_generate_variant:Nn \__nicematrix_Block_vi:nnnnn { e e }
\cs_new_protected:Npn \__nicematrix_Block_vi:nnnnn #1 #2 #3 #4 #5
{
- \seq_gput_right:Nx \g__nicematrix_blocks_seq
+ \seq_gput_right:Ne \g__nicematrix_blocks_seq
{
\l_tmpa_tl
{ \exp_not:n { #3 } }
- {
- \group_begin:
- \exp_not:n { #4 #5 }
- \group_end:
- }
+ { { \exp_not:n { #4 #5 } } }
}
}
+\cs_generate_variant:Nn \__nicematrix_Block_vii:nnnnn { e e }
\cs_new_protected:Npn \__nicematrix_Block_vii:nnnnn #1 #2 #3 #4 #5
{
- \seq_gput_right:Nx \g__nicematrix_blocks_seq
+ \seq_gput_right:Ne \g__nicematrix_blocks_seq
{
\l_tmpa_tl
{ \exp_not:n { #3 } }
@@ -7540,7 +7623,7 @@
}
\cs_new_protected:Npn \__nicematrix_draw_blocks:
{
- \bool_if:NTF \c__nicematrix_tagging_array_bool
+ \bool_if:NTF \c__nicematrix_recent_array_bool
{ \cs_set_eq:NN \ar@ialign \__nicematrix_old_ar@ialign: }
{ \cs_set_eq:NN \ialign \__nicematrix_old_ialign: }
\seq_map_inline:Nn \g__nicematrix_blocks_seq { \__nicematrix_Block_iv:nnnnnn ##1 }
@@ -7549,10 +7632,10 @@
{
\int_zero_new:N \l__nicematrix_last_row_int
\int_zero_new:N \l__nicematrix_last_col_int
- \int_compare:nNnTF { #3 } > { 99 }
+ \int_compare:nNnTF { #3 } > { 98 }
{ \int_set_eq:NN \l__nicematrix_last_row_int \c@iRow }
{ \int_set:Nn \l__nicematrix_last_row_int { #3 } }
- \int_compare:nNnTF { #4 } > { 99 }
+ \int_compare:nNnTF { #4 } > { 98 }
{ \int_set_eq:NN \l__nicematrix_last_col_int \c@jCol }
{ \int_set:Nn \l__nicematrix_last_col_int { #4 } }
\int_compare:nNnTF \l__nicematrix_last_col_int > \g__nicematrix_col_total_int
@@ -7574,17 +7657,17 @@
\int_compare:nNnTF \l__nicematrix_last_row_int > \g__nicematrix_row_total_int
{ \msg_error:nnnn { nicematrix } { Block~too~large~1 } { #1 } { #2 } }
{
- \__nicematrix_Block_v:nnVVnn
+ \__nicematrix_Block_v:nneenn
{ #1 }
{ #2 }
- \l__nicematrix_last_row_int
- \l__nicematrix_last_col_int
+ { \int_use:N \l__nicematrix_last_row_int }
+ { \int_use:N \l__nicematrix_last_col_int }
{ #5 }
{ #6 }
}
}
}
-\cs_generate_variant:Nn \__nicematrix_Block_v:nnnnnn { n n V V n n }
+\cs_generate_variant:Nn \__nicematrix_Block_v:nnnnnn { n n e e }
\cs_new_protected:Npn \__nicematrix_Block_v:nnnnnn #1 #2 #3 #4 #5 #6
{
\group_begin:
@@ -7596,7 +7679,7 @@
\l__nicematrix_vlines_block_bool
{ ! \l__nicematrix_ampersand_bool }
{
- \tl_gput_right:Nx \g_nicematrix_code_after_tl
+ \tl_gput_right:Ne \g_nicematrix_code_after_tl
{
\__nicematrix_vlines_block:nnn
{ \exp_not:n { #5 } }
@@ -7606,7 +7689,7 @@
}
\bool_if:NT \l__nicematrix_hlines_block_bool
{
- \tl_gput_right:Nx \g_nicematrix_code_after_tl
+ \tl_gput_right:Ne \g_nicematrix_code_after_tl
{
\__nicematrix_hlines_block:nnn
{ \exp_not:n { #5 } }
@@ -7618,7 +7701,7 @@
{
\bool_lazy_and:nnF \l__nicematrix_vlines_block_bool \l__nicematrix_hlines_block_bool
{
- \seq_gput_left:Nx \g__nicematrix_pos_of_blocks_seq
+ \seq_gput_left:Ne \g__nicematrix_pos_of_blocks_seq
{ { #1 } { #2 } { #3 } { #4 } { \l__nicematrix_block_name_str } }
}
}
@@ -7626,7 +7709,7 @@
{
\bool_lazy_or:nnT \l__nicematrix_hlines_block_bool \l__nicematrix_vlines_block_bool
{ \__nicematrix_error:n { hlines~with~color } }
- \tl_gput_right:Nx \g_nicematrix_code_after_tl
+ \tl_gput_right:Ne \g_nicematrix_code_after_tl
{
\__nicematrix_stroke_block:nnn
{ \exp_not:n { #5 } }
@@ -7638,7 +7721,7 @@
}
\clist_if_empty:NF \l__nicematrix_borders_clist
{
- \tl_gput_right:Nx \g_nicematrix_code_after_tl
+ \tl_gput_right:Ne \g_nicematrix_code_after_tl
{
\__nicematrix_stroke_borders_block:nnn
{ \exp_not:n { #5 } }
@@ -7648,27 +7731,10 @@
}
\tl_if_empty:NF \l__nicematrix_fill_tl
{
- \tl_if_empty:NF \l__nicematrix_opacity_tl
+ \__nicematrix_add_opacity_to_fill:
+ \tl_gput_right:Ne \g__nicematrix_pre_code_before_tl
{
- \tl_if_head_eq_meaning:nNTF \l__nicematrix_fill_tl [
- {
- \tl_set:Nx \l__nicematrix_fill_tl
- {
- [ opacity = \l__nicematrix_opacity_tl ,
- \tl_tail:o \l__nicematrix_fill_tl
- }
- }
- {
- \tl_set:Nx \l__nicematrix_fill_tl
- { [ opacity = \l__nicematrix_opacity_tl ] { \l__nicematrix_fill_tl } }
- }
- }
- \tl_gput_right:Nx \g__nicematrix_pre_code_before_tl
- {
- \exp_not:N \roundedrectanglecolor
- \exp_args:No \tl_if_head_eq_meaning:nNTF \l__nicematrix_fill_tl [
- { \l__nicematrix_fill_tl }
- { { \l__nicematrix_fill_tl } }
+ \__nicematrix_exp_color_arg:No \__nicematrix_roundedrectanglecolor \l__nicematrix_fill_tl
{ #1 - #2 }
{ \int_use:N \l__nicematrix_last_row_int - \int_use:N \l__nicematrix_last_col_int }
{ \dim_use:N \l__nicematrix_rounded_corners_dim }
@@ -7676,26 +7742,27 @@
}
\seq_if_empty:NF \l__nicematrix_tikz_seq
{
- \tl_gput_right:Nx \g_nicematrix_code_before_tl
+ \tl_gput_right:Ne \g_nicematrix_code_before_tl
{
\__nicematrix_block_tikz:nnnnn
+ { \seq_use:Nn \l__nicematrix_tikz_seq { , } }
{ #1 }
{ #2 }
{ \int_use:N \l__nicematrix_last_row_int }
{ \int_use:N \l__nicematrix_last_col_int }
- { \seq_use:Nn \l__nicematrix_tikz_seq { , } }
}
}
\cs_set_protected_nopar:Npn \diagbox ##1 ##2
{
- \tl_gput_right:Nx \g__nicematrix_pre_code_after_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_after_tl
{
\__nicematrix_actually_diagbox:nnnnnn
{ #1 }
{ #2 }
{ \int_use:N \l__nicematrix_last_row_int }
{ \int_use:N \l__nicematrix_last_col_int }
- { \exp_not:n { ##1 } } { \exp_not:n { ##2 } }
+ { \exp_not:n { ##1 } }
+ { \exp_not:n { ##2 } }
}
}
\pgfpicture
@@ -7791,6 +7858,7 @@
\pgfpicture
\pgfrememberpicturepositiononpagetrue
\pgf@relevantforpicturesizefalse
+
\__nicematrix_qpoint:n { row - #1 }
\dim_set_eq:NN \l__nicematrix_tmpc_dim \pgf@y
\__nicematrix_qpoint:n { row - \int_eval:n { #3 + 1 } }
@@ -7802,7 +7870,7 @@
{ ( \pgf@x - \l_tmpa_dim ) / \int_use:N \l__nicematrix_split_int }
\bool_lazy_or:nnT
\l__nicematrix_vlines_block_bool
- { \tl_if_eq_p:NN \l__nicematrix_vlines_clist \c__nicematrix_all_tl }
+ { \str_if_eq_p:ee \l__nicematrix_vlines_clist { all } }
{
\int_step_inline:nn { \l__nicematrix_split_int - 1 }
{
@@ -7835,20 +7903,17 @@
{
\pgfpoint
{
+ \l_tmpa_dim + ##1 \l_tmpb_dim -
\str_case:on \l__nicematrix_hpos_block_str
{
- l { \l_tmpa_dim + ##1 \l_tmpb_dim - \l_tmpb_dim + \col@sep}
- c { \l_tmpa_dim + ##1 \l_tmpb_dim - 0.5 \l_tmpb_dim }
- r { \l_tmpa_dim + ##1 \l_tmpb_dim - \col@sep }
+ l { \l_tmpb_dim + \col@sep}
+ c { 0.5 \l_tmpb_dim }
+ r { \col@sep }
}
}
{ \l__nicematrix_tmpc_dim }
}
- \pgfset
- {
- inner~xsep = \c_zero_dim ,
- inner~ysep = \c_zero_dim
- }
+ \pgfset { inner~sep = \c_zero_dim }
\pgfnode
{ rectangle }
{
@@ -7901,9 +7966,9 @@
\bool_lazy_any:nTF
{
{ \str_if_empty_p:N \l__nicematrix_vpos_block_str } % added 2024/06/29
- { \str_if_eq_p:on \l__nicematrix_vpos_block_str { c } }
- { \str_if_eq_p:on \l__nicematrix_vpos_block_str { T } }
- { \str_if_eq_p:on \l__nicematrix_vpos_block_str { B } }
+ { \str_if_eq_p:ee \l__nicematrix_vpos_block_str { c } }
+ { \str_if_eq_p:ee \l__nicematrix_vpos_block_str { T } }
+ { \str_if_eq_p:ee \l__nicematrix_vpos_block_str { B } }
}
{
\int_if_zero:nT { #2 } { \str_set_eq:NN \l__nicematrix_hpos_block_str \c__nicematrix_r_str }
@@ -7912,7 +7977,7 @@
\int_compare:nNnT { #2 } = \g__nicematrix_col_total_int
{ \str_set_eq:NN \l__nicematrix_hpos_block_str \c__nicematrix_l_str }
}
- \tl_set:Nx \l_tmpa_tl
+ \tl_set:Ne \l_tmpa_tl
{
\str_case:on \l__nicematrix_vpos_block_str
{
@@ -7966,11 +8031,7 @@
}
{ \l_tmpa_tl }
}
- \pgfset
- {
- inner~xsep = \c_zero_dim ,
- inner~ysep = \c_zero_dim
- }
+ \pgfset { inner~sep = \c_zero_dim }
\pgfnode
{ rectangle }
{ \l_tmpa_tl }
@@ -7981,7 +8042,7 @@
{
\__nicematrix_qpoint:n
{
- row - \str_if_eq:onTF \l__nicematrix_vpos_block_str { b } { #3 } { #1 }
+ row - \str_if_eq:eeTF \l__nicematrix_vpos_block_str { b } { #3 } { #1 }
- base
}
}
@@ -8019,6 +8080,36 @@
}
\group_end:
}
+\cs_set_protected:Npn \__nicematrix_fill:nnnnn #1 #2 #3 #4 #5
+ {
+ \pgfpicture
+ \pgfrememberpicturepositiononpagetrue
+ \pgf@relevantforpicturesizefalse
+ \pgfpathrectanglecorners
+ { \pgfpoint { #2 } { #3 } }
+ { \pgfpoint { #4 } { #5 } }
+ \pgfsetfillcolor { #1 }
+ \pgfusepath { fill }
+ \endpgfpicture
+ }
+\cs_new_protected:Npn \__nicematrix_add_opacity_to_fill:
+ {
+ \tl_if_empty:NF \l__nicematrix_opacity_tl
+ {
+ \tl_if_head_eq_meaning:oNTF \l__nicematrix_fill_tl [
+ {
+ \tl_set:Ne \l__nicematrix_fill_tl
+ {
+ [ opacity = \l__nicematrix_opacity_tl ,
+ \tl_tail:o \l__nicematrix_fill_tl
+ }
+ }
+ {
+ \tl_set:Ne \l__nicematrix_fill_tl
+ { [ opacity = \l__nicematrix_opacity_tl ] { \exp_not:o \l__nicematrix_fill_tl } }
+ }
+ }
+ }
\cs_new_protected:Npn \__nicematrix_stroke_block:nnn #1 #2 #3
{
\group_begin:
@@ -8030,7 +8121,7 @@
\pgf@relevantforpicturesizefalse
\tl_if_empty:NF \l__nicematrix_draw_tl
{
- \tl_if_eq:NNTF \l__nicematrix_draw_tl \c__nicematrix_default_tl
+ \tl_if_eq:NnTF \l__nicematrix_draw_tl { default }
{ \CT@arc@ }
{ \__nicematrix_color:o \l__nicematrix_draw_tl }
}
@@ -8074,7 +8165,7 @@
{
color .tl_set:N = \l__nicematrix_draw_tl ,
draw .code:n =
- \exp_args:Ne \tl_if_empty:nF { #1 } { \tl_set:Nn \l__nicematrix_draw_tl { #1 } } ,
+ \tl_if_empty:eF { #1 } { \tl_set:Nn \l__nicematrix_draw_tl { #1 } } ,
draw .default:n = default ,
line-width .dim_set:N = \l__nicematrix_line_width_dim ,
rounded-corners .dim_set:N = \l__nicematrix_rounded_corners_dim ,
@@ -8088,8 +8179,8 @@
\tl_set_eq:NN \l__nicematrix_tmpc_tl \l_tmpa_tl
\tl_set_eq:NN \l__nicematrix_tmpd_tl \l_tmpb_tl
\__nicematrix_cut_on_hyphen:w #3 \q_stop
- \tl_set:Nx \l_tmpa_tl { \int_eval:n { \l_tmpa_tl + 1 } }
- \tl_set:Nx \l_tmpb_tl { \int_eval:n { \l_tmpb_tl + 1 } }
+ \tl_set:Ne \l_tmpa_tl { \int_eval:n { \l_tmpa_tl + 1 } }
+ \tl_set:Ne \l_tmpb_tl { \int_eval:n { \l_tmpb_tl + 1 } }
\int_step_inline:nnn \l__nicematrix_tmpd_tl \l_tmpb_tl
{
\use:e
@@ -8112,8 +8203,8 @@
\tl_set_eq:NN \l__nicematrix_tmpc_tl \l_tmpa_tl
\tl_set_eq:NN \l__nicematrix_tmpd_tl \l_tmpb_tl
\__nicematrix_cut_on_hyphen:w #3 \q_stop
- \tl_set:Nx \l_tmpa_tl { \int_eval:n { \l_tmpa_tl + 1 } }
- \tl_set:Nx \l_tmpb_tl { \int_eval:n { \l_tmpb_tl + 1 } }
+ \tl_set:Ne \l_tmpa_tl { \int_eval:n { \l_tmpa_tl + 1 } }
+ \tl_set:Ne \l_tmpb_tl { \int_eval:n { \l_tmpb_tl + 1 } }
\int_step_inline:nnn \l__nicematrix_tmpc_tl \l_tmpa_tl
{
\use:e
@@ -8136,21 +8227,21 @@
{ \__nicematrix_error:n { borders~forbidden } }
{
\tl_clear_new:N \l__nicematrix_borders_tikz_tl
- \keys_set:nV
+ \keys_set:no
{ nicematrix / OnlyForTikzInBorders }
\l__nicematrix_borders_clist
\__nicematrix_cut_on_hyphen:w #2 \q_stop
\tl_set_eq:NN \l__nicematrix_tmpc_tl \l_tmpa_tl
\tl_set_eq:NN \l__nicematrix_tmpd_tl \l_tmpb_tl
\__nicematrix_cut_on_hyphen:w #3 \q_stop
- \tl_set:Nx \l_tmpa_tl { \int_eval:n { \l_tmpa_tl + 1 } }
- \tl_set:Nx \l_tmpb_tl { \int_eval:n { \l_tmpb_tl + 1 } }
+ \tl_set:Ne \l_tmpa_tl { \int_eval:n { \l_tmpa_tl + 1 } }
+ \tl_set:Ne \l_tmpb_tl { \int_eval:n { \l_tmpb_tl + 1 } }
\__nicematrix_stroke_borders_block_i:
}
}
\hook_gput_code:nnn { begindocument } { . }
{
- \cs_new_protected:Npx \__nicematrix_stroke_borders_block_i:
+ \cs_new_protected:Npe \__nicematrix_stroke_borders_block_i:
{
\c__nicematrix_pgfortikzpicture_tl
\__nicematrix_stroke_borders_block_ii:
@@ -8230,11 +8321,13 @@
rounded-corners .default:n = 4 pt ,
line-width .dim_set:N = \l__nicematrix_line_width_dim
}
+
+\cs_generate_variant:Nn \__nicematrix_block_tikz:nnnnn { o }
\cs_new_protected:Npn \__nicematrix_block_tikz:nnnnn #1 #2 #3 #4 #5
{
\begin { tikzpicture }
\__nicematrix_clip_with_rounded_corners:
- \clist_map_inline:nn { #5 }
+ \clist_map_inline:nn { #1 }
{
\keys_set_known:nnN { nicematrix / SpecialOffset } { ##1 } \l_tmpa_tl
\use:e { \exp_not:N \path [ \l_tmpa_tl ] }
@@ -8243,7 +8336,7 @@
xshift = \dim_use:N \l__nicematrix_offset_dim ,
yshift = - \dim_use:N \l__nicematrix_offset_dim
]
- #1 -| #2
+ #2 -| #3
)
rectangle
(
@@ -8251,12 +8344,11 @@
xshift = - \dim_use:N \l__nicematrix_offset_dim ,
yshift = \dim_use:N \l__nicematrix_offset_dim
]
- \int_eval:n { #3 + 1 } -| \int_eval:n { #4 + 1 }
+ \int_eval:n { #4 + 1 } -| \int_eval:n { #5 + 1 }
) ;
}
\end { tikzpicture }
}
-\cs_generate_variant:Nn \__nicematrix_block_tikz:nnnnn { n n n n V }
\keys_define:nn { nicematrix / SpecialOffset }
{ offset .dim_set:N = \l__nicematrix_offset_dim }
\cs_new_protected:Npn \__nicematrix_NullBlock:
@@ -8336,7 +8428,7 @@
\cs_set_protected:cpn { #1 AutoNiceMatrix }
{
\bool_gset_true:N \g__nicematrix_delims_bool
- \str_gset:Nx \g__nicematrix_name_env_str { #1 AutoNiceMatrix }
+ \str_gset:Ne \g__nicematrix_name_env_str { #1 AutoNiceMatrix }
\AutoNiceMatrixWithDelims { #2 } { #3 }
}
}
@@ -8362,7 +8454,7 @@
{ \dim_compare:nNnT { \box_wd:N \l__nicematrix_cell_box } = \c_zero_dim \__nicematrix_old_dotfill }
\cs_new_protected:Npn \__nicematrix_diagbox:nn #1 #2
{
- \tl_gput_right:Nx \g__nicematrix_pre_code_after_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_after_tl
{
\__nicematrix_actually_diagbox:nnnnnn
{ \int_use:N \c@iRow }
@@ -8372,7 +8464,7 @@
{ \g__nicematrix_row_style_tl \exp_not:n { #1 } }
{ \g__nicematrix_row_style_tl \exp_not:n { #2 } }
}
- \seq_gput_right:Nx \g__nicematrix_pos_of_blocks_seq
+ \seq_gput_right:Ne \g__nicematrix_pos_of_blocks_seq
{
{ \int_use:N \c@iRow }
{ \int_use:N \c@jCol }
@@ -8407,7 +8499,7 @@
\pgfnode { rectangle } { south~west }
{
\begin { minipage } { 20 cm }
- \__nicematrix_math_toggle: #5 \__nicematrix_math_toggle:
+ \__nicematrix_math_toggle: \scan_stop: #5 \__nicematrix_math_toggle:
\end { minipage }
}
{ }
@@ -8418,7 +8510,7 @@
{
\begin { minipage } { 20 cm }
\raggedleft
- \__nicematrix_math_toggle: #6 \__nicematrix_math_toggle:
+ \__nicematrix_math_toggle: \scan_stop: #6 \__nicematrix_math_toggle:
\end { minipage }
}
{ }
@@ -8560,7 +8652,7 @@
{
\peek_remove_spaces:n
{
- \tl_gput_right:Nx \g__nicematrix_pre_code_after_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_after_tl
{
\SubMatrix { #1 } { #2 } { #3 } { #4 }
[
@@ -8582,12 +8674,12 @@
{ \__nicematrix_SubMatrix_in_code_before_i:nnnn #1 #2 }
\cs_new_protected:Npn \__nicematrix_SubMatrix_in_code_before_i:nnnn #1 #2 #3 #4
{
- \seq_gput_right:Nx \g__nicematrix_submatrix_seq
+ \seq_gput_right:Ne \g__nicematrix_submatrix_seq
{
- { \str_if_eq:nnTF { #1 } { last } { \int_use:N \c@iRow } { #1 } }
- { \str_if_eq:nnTF { #2 } { last } { \int_use:N \c@jCol } { #2 } }
- { \str_if_eq:nnTF { #3 } { last } { \int_use:N \c@iRow } { #3 } }
- { \str_if_eq:nnTF { #4 } { last } { \int_use:N \c@jCol } { #4 } }
+ { \str_if_eq:eeTF { #1 } { last } { \int_use:N \c@iRow } { #1 } }
+ { \str_if_eq:eeTF { #2 } { last } { \int_use:N \c@jCol } { #2 } }
+ { \str_if_eq:eeTF { #3 } { last } { \int_use:N \c@iRow } { #3 } }
+ { \str_if_eq:eeTF { #4 } { last } { \int_use:N \c@jCol } { #4 } }
}
}
\hook_gput_code:nnn { begindocument } { . }
@@ -8648,15 +8740,15 @@
{ pgf @ sh @ ns @ \__nicematrix_env: - ##1 - \l__nicematrix_first_j_tl }
{
\pgfpointanchor { \__nicematrix_env: - ##1 - \l__nicematrix_first_j_tl } { west }
- \dim_set:Nn \l__nicematrix_x_initial_dim
- { \dim_min:nn \l__nicematrix_x_initial_dim \pgf@x }
+ \dim_compare:nNnT \pgf@x < \l__nicematrix_x_initial_dim
+ { \dim_set_eq:NN \l__nicematrix_x_initial_dim \pgf@x }
}
\cs_if_exist:cT
{ pgf @ sh @ ns @ \__nicematrix_env: - ##1 - \l__nicematrix_last_j_tl }
{
\pgfpointanchor { \__nicematrix_env: - ##1 - \l__nicematrix_last_j_tl } { east }
- \dim_set:Nn \l__nicematrix_x_final_dim
- { \dim_max:nn \l__nicematrix_x_final_dim \pgf@x }
+ \dim_compare:nNnT \pgf@x > \l__nicematrix_x_final_dim
+ { \dim_set_eq:NN \l__nicematrix_x_final_dim \pgf@x }
}
}
\dim_compare:nNnTF \l__nicematrix_x_initial_dim = \c_max_dim
@@ -8697,8 +8789,8 @@
{ pgf @ sh @ ns @ \__nicematrix_env: - \l__nicematrix_last_i_tl - ##1 }
{
\pgfpointanchor { \__nicematrix_env: - \l__nicematrix_last_i_tl - ##1 } { south }
- \dim_set:Nn \l__nicematrix_y_final_dim
- { \dim_min:nn \l__nicematrix_y_final_dim \pgf@y }
+ \dim_compare:nNnT \pgf@y < \l__nicematrix_y_final_dim
+ { \dim_set_eq:NN \l__nicematrix_y_final_dim \pgf@y }
}
}
\dim_set:Nn \l_tmpa_dim
@@ -8725,7 +8817,7 @@
}
}
}
- \tl_if_eq:NNTF \l__nicematrix_submatrix_vlines_clist \c__nicematrix_all_tl
+ \str_if_eq:eeTF \l__nicematrix_submatrix_vlines_clist { all }
{ \int_step_inline:nn { \l__nicematrix_last_j_tl - \l__nicematrix_first_j_tl } }
{ \clist_map_inline:Nn \l__nicematrix_submatrix_vlines_clist }
{
@@ -8742,7 +8834,7 @@
}
{ \__nicematrix_error:nnn { Wrong~line~in~SubMatrix } { vertical } { ##1 } }
}
- \tl_if_eq:NNTF \l__nicematrix_submatrix_hlines_clist \c__nicematrix_all_tl
+ \str_if_eq:eeTF \l__nicematrix_submatrix_hlines_clist { all }
{ \int_step_inline:nn { \l__nicematrix_last_i_tl - \l__nicematrix_first_i_tl } }
{ \clist_map_inline:Nn \l__nicematrix_submatrix_hlines_clist }
{
@@ -8808,7 +8900,7 @@
{ \__nicematrix_env: - \l__nicematrix_submatrix_name_str - right } { #3 } { #4 }
}
\cs_set_eq:NN \pgfpointanchor \__nicematrix_pgfpointanchor:n
- \flag_clear_new:n { nicematrix }
+ \flag_clear_new:N \l__nicematrix_code_flag
\l__nicematrix_code_tl
}
\cs_set_eq:NN \__nicematrix_old_pgfpointanchor \pgfpointanchor
@@ -8832,8 +8924,8 @@
{
\str_case:nVTF { #1 } \c__nicematrix_integers_alist_tl
{
- \flag_raise:n { nicematrix }
- \int_if_even:nTF { \flag_height:n { nicematrix } }
+ \flag_raise:N \l__nicematrix_code_flag
+ \int_if_even:nTF { \flag_height:N \l__nicematrix_code_flag }
{ \int_eval:n { #1 + \l__nicematrix_first_i_tl - 1 } }
{ \int_eval:n { #1 + \l__nicematrix_first_j_tl - 1 } }
}
@@ -8937,7 +9029,7 @@
{ \int_compare_p:nNn \l__nicematrix_last_i_tl > \g__nicematrix_row_total_int }
{ \int_compare_p:nNn \l__nicematrix_last_j_tl > \g__nicematrix_col_total_int }
{
- \str_if_eq:nnTF { #5 } { under }
+ \str_if_eq:eeTF { #5 } { under }
{ \__nicematrix_error:nn { Construct~too~large } { \UnderBrace } }
{ \__nicematrix_error:nn { Construct~too~large } { \OverBrace } }
}
@@ -8957,8 +9049,9 @@
{ pgf @ sh @ ns @ \__nicematrix_env: - ##1 - \l__nicematrix_first_j_tl }
{
\pgfpointanchor { \__nicematrix_env: - ##1 - \l__nicematrix_first_j_tl } { west }
- \dim_set:Nn \l__nicematrix_x_initial_dim
- { \dim_min:nn \l__nicematrix_x_initial_dim \pgf@x }
+
+ \dim_compare:nNnT \pgf@x < \l__nicematrix_x_initial_dim
+ { \dim_set_eq:NN \l__nicematrix_x_initial_dim \pgf@x }
}
}
}
@@ -8978,8 +9071,8 @@
{ pgf @ sh @ ns @ \__nicematrix_env: - ##1 - \l__nicematrix_last_j_tl }
{
\pgfpointanchor { \__nicematrix_env: - ##1 - \l__nicematrix_last_j_tl } { east }
- \dim_set:Nn \l__nicematrix_x_final_dim
- { \dim_max:nn \l__nicematrix_x_final_dim \pgf@x }
+ \dim_compare:nNnT \pgf@x > \l__nicematrix_x_final_dim
+ { \dim_set_eq:NN \l__nicematrix_x_final_dim \pgf@x }
}
}
}
@@ -8991,7 +9084,7 @@
\dim_set_eq:NN \l__nicematrix_x_final_dim \pgf@x
}
\pgfset { inner~sep = \c_zero_dim }
- \str_if_eq:nnTF { #5 } { under }
+ \str_if_eq:eeTF { #5 } { under }
{ \__nicematrix_underbrace_i:n { #3 } }
{ \__nicematrix_overbrace_i:n { #3 } }
\endpgfpicture
@@ -9018,8 +9111,10 @@
\halign
{
\hfil ## \hfil \crcr
- \__nicematrix_math_toggle: #1 \__nicematrix_math_toggle: \cr
- \noalign { \skip_vertical:n { 3 pt } \nointerlineskip }
+ \bool_if:NTF \l__nicematrix_tabular_bool
+ { \begin { tabular } { c } #1 \end { tabular } }
+ { $ \begin { array } { c } #1 \end { array } $ }
+ \cr
\c_math_toggle_token
\overbrace
{
@@ -9065,8 +9160,10 @@
}
\c_math_toggle_token
\cr
- \noalign { \skip_vertical:n { 3 pt } \nointerlineskip }
- \__nicematrix_math_toggle: #1 \__nicematrix_math_toggle: \cr
+ \bool_if:NTF \l__nicematrix_tabular_bool
+ { \begin { tabular } { c } #1 \end { tabular } }
+ { $ \begin { array } { c } #1 \end { array } $ }
+ \cr
}
}
\group_end:
@@ -9116,13 +9213,13 @@
\cs_new_protected:Nn \__nicematrix_all_the_cells:
{
- \int_step_variable:nNn { \int_use:c { c@iRow } } \__nicematrix_i_tl
+ \int_step_variable:nNn \c@iRow \__nicematrix_i_tl
{
- \int_step_variable:nNn { \int_use:c { c@jCol } } \__nicematrix_j_tl
+ \int_step_variable:nNn \c@jCol \__nicematrix_j_tl
{
\cs_if_exist:cF { cell - \__nicematrix_i_tl - \__nicematrix_j_tl }
{
- \exp_args:NNe \seq_if_in:NnF \l__nicematrix_corners_cells_seq
+ \clist_if_in:NeF \l__nicematrix_corners_cells_clist
{ \__nicematrix_i_tl - \__nicematrix_j_tl }
{
\bool_set_false:N \l_tmpa_bool
@@ -9138,8 +9235,8 @@
}
\bool_if:NT \l_tmpa_bool
{
- \__nicematrix_block_tikz:nnnnV
- \__nicematrix_i_tl \__nicematrix_j_tl \__nicematrix_i_tl \__nicematrix_j_tl \l_tmpa_tl
+ \__nicematrix_block_tikz:onnnn
+ \l_tmpa_tl \__nicematrix_i_tl \__nicematrix_j_tl \__nicematrix_i_tl \__nicematrix_j_tl
}
}
}
@@ -9151,8 +9248,8 @@
{
\bool_if:NF \l__nicematrix_empty_bool
{
- \__nicematrix_block_tikz:nnnnV
- { #1 } { #2 } { #3 } { #4 } \l_tmpa_tl
+ \__nicematrix_block_tikz:onnnn
+ \l_tmpa_tl { #1 } { #2 } { #3 } { #4 }
}
\__nicematrix_mark_cells_of_block:nnnn { #1 } { #2 } { #3 } { #4 }
}
@@ -9162,76 +9259,9 @@
\int_step_inline:nnn { #1 } { #3 }
{
\int_step_inline:nnn { #2 } { #4 }
- { \cs_set:cpn { cell - ##1 - ####1 } { } }
+ { \cs_set_nopar:cpn { cell - ##1 - ####1 } { } }
}
}
-\NewDocumentCommand \__nicematrix_ShowCellNames_CodeBefore { }
- {
- \dim_gzero_new:N \g__nicematrix_tmpc_dim
- \dim_gzero_new:N \g__nicematrix_tmpd_dim
- \dim_gzero_new:N \g__nicematrix_tmpe_dim
- \int_step_inline:nn \c@iRow
- {
- \begin { pgfpicture }
- \__nicematrix_qpoint:n { row - ##1 }
- \dim_set_eq:NN \l_tmpa_dim \pgf@y
- \__nicematrix_qpoint:n { row - \int_eval:n { ##1 + 1 } }
- \dim_gset:Nn \g_tmpa_dim { ( \l_tmpa_dim + \pgf@y ) / 2 }
- \dim_gset:Nn \g_tmpb_dim { \l_tmpa_dim - \pgf@y }
- \bool_if:NTF \l__nicematrix_in_code_after_bool
- \end { pgfpicture }
- \int_step_inline:nn \c@jCol
- {
- \hbox_set:Nn \l_tmpa_box
- { \normalfont \Large \color { red ! 50 } ##1 - ####1 }
- \begin { pgfpicture }
- \__nicematrix_qpoint:n { col - ####1 }
- \dim_gset_eq:NN \g__nicematrix_tmpc_dim \pgf@x
- \__nicematrix_qpoint:n { col - \int_eval:n { ####1 + 1 } }
- \dim_gset:Nn \g__nicematrix_tmpd_dim { \pgf@x - \g__nicematrix_tmpc_dim }
- \dim_gset_eq:NN \g__nicematrix_tmpe_dim \pgf@x
- \endpgfpicture
- \end { pgfpicture }
- \fp_set:Nn \l_tmpa_fp
- {
- \fp_min:nn
- {
- \fp_min:nn
- {
- \dim_ratio:nn
- { \g__nicematrix_tmpd_dim }
- { \box_wd:N \l_tmpa_box }
- }
- {
- \dim_ratio:nn
- { \g_tmpb_dim }
- { \box_ht_plus_dp:N \l_tmpa_box }
- }
- }
- { 1.0 }
- }
- \box_scale:Nnn \l_tmpa_box
- { \fp_use:N \l_tmpa_fp }
- { \fp_use:N \l_tmpa_fp }
- \pgfpicture
- \pgfrememberpicturepositiononpagetrue
- \pgf@relevantforpicturesizefalse
- \pgftransformshift
- {
- \pgfpoint
- { 0.5 * ( \g__nicematrix_tmpc_dim + \g__nicematrix_tmpe_dim ) }
- { \dim_use:N \g_tmpa_dim }
- }
- \pgfnode
- { rectangle }
- { center }
- { \box_use:N \l_tmpa_box }
- { }
- { }
- \endpgfpicture
- }
- }
- }
\NewDocumentCommand \__nicematrix_ShowCellNames { }
{
\bool_if:NT \l__nicematrix_in_code_after_bool
@@ -9338,10 +9368,14 @@
footnote,~
footnotehyper,~
messages-for-Overleaf,~
- no-test-for-array,~
renew-dots,~and~
renew-matrix.
}
+\__nicematrix_msg_new:nn { no-test-for-array }
+ {
+ The~key~'no-test-for-array'~has~been~deprecated~and~will~be~
+ deleted~in~a~future~version~of~nicematrix.
+ }
\keys_define:nn { nicematrix / Package }
{
renew-dots .bool_set:N = \l__nicematrix_renew_dots_bool ,
@@ -9351,8 +9385,7 @@
messages-for-Overleaf .bool_set:N = \g__nicematrix_messages_for_Overleaf_bool ,
footnote .bool_set:N = \g__nicematrix_footnote_bool ,
footnotehyper .bool_set:N = \g__nicematrix_footnotehyper_bool ,
- no-test-for-array .bool_set:N = \g__nicematrix_no_test_for_array_bool ,
- no-test-for-array .default:n = true ,
+ no-test-for-array .code:n = \__nicematrix_warning:n { no-test-for-array } ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~package }
}
\ProcessKeysOptions { nicematrix / Package }
@@ -9396,16 +9429,14 @@
\bool_set_true:N \g__nicematrix_footnote_bool
}
\bool_new:N \l__nicematrix_underscore_loaded_bool
-\IfPackageLoadedTF { underscore }
+\IfPackageLoadedT { underscore }
{ \bool_set_true:N \l__nicematrix_underscore_loaded_bool }
- { }
\hook_gput_code:nnn { begindocument } { . }
{
\bool_if:NF \l__nicematrix_underscore_loaded_bool
{
- \IfPackageLoadedTF { underscore }
+ \IfPackageLoadedT { underscore }
{ \__nicematrix_error:n { underscore~after~nicematrix } }
- { }
}
}
\bool_if:NTF \g__nicematrix_messages_for_Overleaf_bool
@@ -9420,24 +9451,18 @@
NiceMatrix ,
pNiceMatrix , bNiceMatrix , vNiceMatrix, BNiceMatrix, VNiceMatrix
}
-\seq_gset_map_x:NNn \g__nicematrix_types_of_matrix_seq \g__nicematrix_types_of_matrix_seq
+\seq_gset_map_e:NNn \g__nicematrix_types_of_matrix_seq \g__nicematrix_types_of_matrix_seq
{ \tl_to_str:n { #1 } }
\cs_new_protected:Npn \__nicematrix_error_too_much_cols:
{
- \seq_if_in:NoTF \g__nicematrix_types_of_matrix_seq \g__nicematrix_name_env_str
- {
- \int_compare:nNnTF \l__nicematrix_last_col_int = { -2 }
- { \__nicematrix_fatal:n { too~much~cols~for~matrix } }
- {
- \int_compare:nNnTF \l__nicematrix_last_col_int = { -1 }
- { \__nicematrix_fatal:n { too~much~cols~for~matrix } }
- {
- \bool_if:NF \l__nicematrix_last_col_without_value_bool
- { \__nicematrix_fatal:n { too~much~cols~for~matrix~with~last~col } }
- }
- }
- }
+ \seq_if_in:NoF \g__nicematrix_types_of_matrix_seq \g__nicematrix_name_env_str
{ \__nicematrix_fatal:nn { too~much~cols~for~array } }
+ \int_compare:nNnT \l__nicematrix_last_col_int = { -2 }
+ { \__nicematrix_fatal:n { too~much~cols~for~matrix } }
+ \int_compare:nNnT \l__nicematrix_last_col_int = { -1 }
+ { \__nicematrix_fatal:n { too~much~cols~for~matrix } }
+ \bool_if:NF \l__nicematrix_last_col_without_value_bool
+ { \__nicematrix_fatal:n { too~much~cols~for~matrix~with~last~col } }
}
\cs_new:Npn \__nicematrix_message_hdotsfor:
{
@@ -9450,6 +9475,13 @@
You~should~not~use~'hvlines',~'rounded-corners'~and~'corners'~at~this~time.\\
The~output~will~not~be~reliable.
}
+\__nicematrix_msg_new:nn { key~color-inside }
+ {
+ Key~deprecated.\\
+ The~key~'color-inside'~(and~its~alias~'colortbl-like')~is~now~point-less~
+ and~have~been~deprecated.\\
+ You~won't~have~similar~message~till~the~end~of~the~document.
+ }
\__nicematrix_msg_new:nn { negative~weight }
{
Negative~weight.\\
@@ -9490,8 +9522,10 @@
In~the~row~\int_eval:n { \c@iRow },~
~you~try~to~use~more~columns~than~allowed~by~your~
\__nicematrix_full_name_env:.\__nicematrix_message_hdotsfor:\ The~maximal~number~of~columns~is~
- \int_use:N \g__nicematrix_static_num_of_col_int\
- ~(plus~the~potential~exterior~ones).~
+ \int_use:N \g__nicematrix_static_num_of_col_int
+ \bool_if:nT
+ { \int_compare_p:nNn \l__nicematrix_first_col_int = 0 || \g__nicematrix_last_col_found_bool }
+ { ~(plus~the~exterior~ones) }.~
This~error~is~fatal.
}
\__nicematrix_msg_new:nn { columns~not~used }
@@ -9528,9 +9562,22 @@
}
\__nicematrix_msg_new:nn { in~last~row }
{
+ Erroneous~use.\\
You~can't~use~the~command~#1 in~the~last~row~(exterior)~of~the~array.\\
That~command~will~be~ignored.
}
+\__nicematrix_msg_new:nn { TopRule~without~booktabs }
+ {
+ Erroneous~use.\\
+ You~can't~use~the~command~ #1 because~'booktabs'~is~not~loaded.\\
+ That~command~will~be~ignored.
+ }
+\__nicematrix_msg_new:nn { TopRule~without~tikz }
+ {
+ Erroneous~use.\\
+ You~can't~use~the~command~ #1 because~'tikz'~is~not~loaded.\\
+ That~command~will~be~ignored.
+ }
\__nicematrix_msg_new:nn { caption~outside~float }
{
Key~caption~forbidden.\\
@@ -9560,6 +9607,20 @@
Since~you~haven't~loaded~Tikz,~the~only~value~you~can~give~to~'line-style'~
is~'standard'.~That~key~will~be~ignored.
}
+\__nicematrix_msg_new:nn { corners~with~no-cell-nodes }
+ {
+ Incompatible~keys.\\
+ You~can't~use~the~key~'corners'~here~because~the~key~'no-cell-nodes'~
+ is~in~force.\\
+ If~you~go~on,~that~key~will~be~ignored.
+ }
+\__nicematrix_msg_new:nn { extra-nodes~with~no-cell-nodes }
+ {
+ Incompatible~keys.\\
+ You~can't~create~'extra~nodes'~here~because~the~key~'no-cell-nodes'~
+ is~in~force.\\
+ If~you~go~on,~those~extra~nodes~won't~be~created.
+ }
\__nicematrix_msg_new:nn { Identical~notes~in~caption }
{
Identical~tabular~notes.\\
@@ -9706,12 +9767,6 @@
You~can't~use~the~columns~'S'~because~'siunitx'~is~not~loaded.\\
That~error~is~fatal.
}
-\__nicematrix_msg_new:nn { ragged2e~not~loaded }
- {
- You~have~to~load~'ragged2e'~in~order~to~use~the~key~'\l_keys_key_str'~in~
- your~column~'\l__nicematrix_vpos_col_str'~(or~'X').~The~key~'\str_lowercase:o
- \l_keys_key_str'~will~be~used~instead.
- }
\__nicematrix_msg_new:nn { Invalid~name }
{
Invalid~name.\\
@@ -9838,8 +9893,7 @@
(in~the~key~'borders'~of~the~command~\token_to_str:N \Block).~
The~available~values~are:~left,~right,~top~and~bottom~(and~you~can~
also~use~the~key~'tikz'
- \IfPackageLoadedTF { tikz }
- { }
+ \IfPackageLoadedF { tikz }
{~if~you~load~the~LaTeX~package~'tikz'}).\\
This~specification~of~border~will~be~ignored.
}
@@ -9959,14 +10013,6 @@
command~'\token_to_str:N\Block')~but~tikz~is~not~loaded.~
That~key~will~be~ignored.
}
-\__nicematrix_msg_new:nn { without~color-inside }
- {
- If~order~to~use~\token_to_str:N \cellcolor,~\token_to_str:N \rowcolor,~
- \token_to_str:N \rowcolors\ or~\token_to_str:N \rowlistcolors\
- outside~\token_to_str:N \CodeBefore,~you~
- should~have~used~the~key~'color-inside'~in~your~\__nicematrix_full_name_env:.\\
- You~can~go~on~but~you~may~need~more~compilations.
- }
\__nicematrix_msg_new:nn { color~in~custom-line~with~tikz }
{
Erroneous~use.\\
@@ -10136,13 +10182,15 @@
}
{
The~available~keys~are~(in~alphabetic~order):~
- 'bold',~
- 'cell-space-top-limit',~
- 'cell-space-bottom-limit',~
- 'cell-space-limits',~
- 'color',~
- 'nb-rows'~and~
- 'rowcolor'.
+ bold,~
+ cell-space-top-limit,~
+ cell-space-bottom-limit,~
+ cell-space-limits,~
+ color,~
+ fill~(alias:~rowcolor),~
+ nb-rows,
+ opacity~and~
+ rounded-corners.
}
\__nicematrix_msg_new:nnn { Unknown~key~for~NiceMatrixOptions }
{
@@ -10222,7 +10270,6 @@
code-for-first-row,~
code-for-last-col,~
code-for-last-row,~
- color-inside,~
columns-width,~
corners,~
create-extra-nodes,~
@@ -10281,7 +10328,6 @@
code-for-first-row,~
code-for-last-col,~
code-for-last-row,~
- color-inside,~
columns-type,~
columns-width,~
corners,~
@@ -10344,7 +10390,6 @@
code-for-first-row,~
code-for-last-col,~
code-for-last-row,~
- color-inside,~
columns-width,~
corners,~
custom-line,~
@@ -10419,6 +10464,18 @@
\__nicematrix_full_name_env:. \\
This~error~is~fatal.
}
+\__nicematrix_msg_new:nn { Invalid~col~number }
+ {
+ Invalid~column~number.\\
+ A~color~instruction~the~\token_to_str:N \CodeBefore\
+ specifies~a~column~which~is~outside~the~array.~It~will~be~ignored.
+ }
+\__nicematrix_msg_new:nn { Invalid~row~number }
+ {
+ Invalid~row~number.\\
+ A~color~instruction~the~\token_to_str:N \CodeBefore\
+ specifies~a~row~which~is~outside~the~array.~It~will~be~ignored.
+ }
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/njuthesis/njuthesis-doc.cls b/Master/texmf-dist/tex/latex/njuthesis/njuthesis-doc.cls
index 57c75e288e6..40521c3981d 100644
--- a/Master/texmf-dist/tex/latex/njuthesis/njuthesis-doc.cls
+++ b/Master/texmf-dist/tex/latex/njuthesis/njuthesis-doc.cls
@@ -23,7 +23,7 @@
%% To produce the documentation run the original source files ending with
%% `.dtx' through XeTeX.
%%
-\GetIdInfo $Id: njuthesis.dtx 1.4.1 2024-04-22 00:30:00
+\GetIdInfo $Id: njuthesis.dtx 1.4.2 2024-11-08 15:30:00
+0800 NJU LUG <git+nju-lug-email-3104-issue-@yaoge123.cn>$
{Documentation style for njuthesis}
\ProvidesExplFile{njuthesis-doc.cls}
diff --git a/Master/texmf-dist/tex/latex/njuthesis/njuthesis-graduate.def b/Master/texmf-dist/tex/latex/njuthesis/njuthesis-graduate.def
index eb3bebc6731..351eb230145 100644
--- a/Master/texmf-dist/tex/latex/njuthesis/njuthesis-graduate.def
+++ b/Master/texmf-dist/tex/latex/njuthesis/njuthesis-graduate.def
@@ -23,7 +23,7 @@
%% To produce the documentation run the original source files ending with
%% `.dtx' through XeTeX.
%%
-\GetIdInfo $Id: njuthesis.dtx 1.4.1 2024-04-22 00:30:00
+\GetIdInfo $Id: njuthesis.dtx 1.4.2 2024-11-08 15:30:00
+0800 NJU LUG <git+nju-lug-email-3104-issue-@yaoge123.cn>$
{Graduate definition file for njuthesis}
\ProvidesExplFile{njuthesis-graduate.def}
diff --git a/Master/texmf-dist/tex/latex/njuthesis/njuthesis-postdoctoral.def b/Master/texmf-dist/tex/latex/njuthesis/njuthesis-postdoctoral.def
index 43aac200720..a6ba0d58ef0 100644
--- a/Master/texmf-dist/tex/latex/njuthesis/njuthesis-postdoctoral.def
+++ b/Master/texmf-dist/tex/latex/njuthesis/njuthesis-postdoctoral.def
@@ -23,7 +23,7 @@
%% To produce the documentation run the original source files ending with
%% `.dtx' through XeTeX.
%%
-\GetIdInfo $Id: njuthesis.dtx 1.4.1 2024-04-22 00:30:00
+\GetIdInfo $Id: njuthesis.dtx 1.4.2 2024-11-08 15:30:00
+0800 NJU LUG <git+nju-lug-email-3104-issue-@yaoge123.cn>$
{Postdoctoral definition file for njuthesis}
\ProvidesExplFile{njuthesis-postdoctoral.def}
diff --git a/Master/texmf-dist/tex/latex/njuthesis/njuthesis-undergraduate.def b/Master/texmf-dist/tex/latex/njuthesis/njuthesis-undergraduate.def
index 9cfe467a300..24c393b1b33 100644
--- a/Master/texmf-dist/tex/latex/njuthesis/njuthesis-undergraduate.def
+++ b/Master/texmf-dist/tex/latex/njuthesis/njuthesis-undergraduate.def
@@ -23,7 +23,7 @@
%% To produce the documentation run the original source files ending with
%% `.dtx' through XeTeX.
%%
-\GetIdInfo $Id: njuthesis.dtx 1.4.1 2024-04-22 00:30:00
+\GetIdInfo $Id: njuthesis.dtx 1.4.2 2024-11-08 15:30:00
+0800 NJU LUG <git+nju-lug-email-3104-issue-@yaoge123.cn>$
{Undergraduate definition file for njuthesis}
\ProvidesExplFile{njuthesis-undergraduate.def}
diff --git a/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls b/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls
index b0ba863f570..18be4415944 100644
--- a/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls
+++ b/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls
@@ -24,7 +24,7 @@
%% `.dtx' through XeTeX.
%%
\NeedsTeXFormat{LaTeX2e}
-\GetIdInfo $Id: njuthesis.dtx 1.4.1 2024-04-22 00:30:00
+\GetIdInfo $Id: njuthesis.dtx 1.4.2 2024-11-08 15:30:00
+0800 NJU LUG <git+nju-lug-email-3104-issue-@yaoge123.cn>$
{Thesis template for Nanjing University}
\ProvidesExplClass{njuthesis}
@@ -912,9 +912,9 @@
\cs_new_protected:Npn \__nju_loadfont_latin_macoffice:
{
\__fontspec_main_setmainfont:nn
- { \l__nju_name_macofficefeature_clist } { times }
+ { \c__nju_name_macofficefeature_clist } { times }
\__fontspec_main_setsansfont:nn
- { \l__nju_name_macofficefeature_clist } { arial }
+ { \c__nju_name_macofficefeature_clist } { arial }
\__fontspec_main_setmonofont:nn
{ Scale = MatchLowercase } { Menlo }
}
@@ -1371,14 +1371,6 @@
{ listoftables } { listtable } { lot }
}
{ \__nju_define_toc_cmd:nnn #1 }
-\ctex_at_end_preamble:n
- {
- \bool_if:NF \g__nju_toc_showentry_bool
- {
- \bool_gset_false:N \g__nju_lof_showentry_bool
- \bool_gset_false:N \g__nju_lot_showentry_bool
- }
- }
\keys_define:nn { nju / tableofcontents }
{
dotline .choice:,
@@ -1570,14 +1562,15 @@
\SetTblrStyle { note } { font = \normalfont \footnotesize }
\SetTblrStyle { remark } { font = \normalfont \footnotesize }
}
-\DeclareCaptionStyle{njucap}
+\DeclareCaptionStyle { njucap }
+ [ justification = centering ]
{
+ justification = justified,
font = {small, bf},
- labelsep = quad,
- justification = centering
+ labelsep = quad
}
-\captionsetup [ figure ] { style = njucap }
-\captionsetup [ table ] { style = njucap }
+\captionsetup [ figure ] { position = below, style = njucap }
+\captionsetup [ table ] { position = above, style = njucap }
\cs_generate_variant:Nn \ctex_patch_cmd:Nnn { cnv }
\clist_map_inline:nn { figure, table, equation }
{
diff --git a/Master/texmf-dist/tex/latex/nlctdoc/nlctdoc.cls b/Master/texmf-dist/tex/latex/nlctdoc/nlctdoc.cls
index f48b30f0c5c..f93416bb066 100644
--- a/Master/texmf-dist/tex/latex/nlctdoc/nlctdoc.cls
+++ b/Master/texmf-dist/tex/latex/nlctdoc/nlctdoc.cls
@@ -4,7 +4,7 @@
% copy the code here to another file and modify it for your own purposes.
% There's no guarantee that it will work with other packages.
%
-% Copyright 2013-2023 Nicola Talbot
+% Copyright 2013-2025 Nicola Talbot
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -18,7 +18,7 @@
% for existing documents that use it.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{nlctdoc}[2023/09/29 v1.10 (NLCT)]
+\ProvidesClass{nlctdoc}[2025/01/03 v1.12 (NLCT)]
\RequirePackage{ifpdf}
\RequirePackage{ifxetex}
% tex4ht stopped working with koma during TL2013.
diff --git a/Master/texmf-dist/tex/latex/nlctdoc/nlctuserguide.sty b/Master/texmf-dist/tex/latex/nlctdoc/nlctuserguide.sty
index bb474690d2c..35e50dd8bc9 100644
--- a/Master/texmf-dist/tex/latex/nlctdoc/nlctuserguide.sty
+++ b/Master/texmf-dist/tex/latex/nlctdoc/nlctuserguide.sty
@@ -4,7 +4,7 @@
% copy the code here to another file and modify it for your own purposes.
% There's no guarantee that it will work with other packages.
%
-% Copyright 2022-2023 Nicola Talbot
+% Copyright 2022-2025 Nicola Talbot
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,7 +15,7 @@
% version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{nlctuserguide}[2023/09/29 v1.10 (NLCT)]
+\ProvidesPackage{nlctuserguide}[2025/01/03 v1.12 (NLCT)]
\newcommand{\nlctdoc@loadxr}{}
\DeclareOption{xr}{\renewcommand{\nlctdoc@loadxr}{\RequirePackage{xr-hyper}}}
@@ -44,6 +44,99 @@
\DeclareOption{deephierarchy}{\setcounter{secnumdepth}{5}}
+\newcommand{\nlct@definesymbols}{%
+ \nlct@definefontsymbols
+}
+
+\newcommand{\nlct@definefontsymbols}{%
+% requires stix or boisk
+ \newrobustcmd{\tabsym}{%
+ \BeginAccSupp{method=hex,unicode,ActualText=21B9}%
+ \ensuremath{\barleftarrowrightarrowbar}%
+ \EndAccSupp{}%
+ }
+% requires stix
+ \newrobustcmd{\upsym}{%
+ \BeginAccSupp{method=hex,unicode,ActualText=2B71}%
+ \ensuremath{\baruparrow}%
+ \EndAccSupp{}%
+ }
+}
+
+\newcommand{\nlct@definetikzsymbols}{%
+ \RequirePackage{tikz}%
+ \usetikzlibrary{arrows.meta}%
+ \newsavebox\tabsbox
+ \sbox\tabsbox{%
+ \resizebox{!}{8pt}{%
+ \begin{tikzpicture}[thick]
+ \draw[arrows={Bar[width=8pt]Triangle[width=6pt,length=5pt]-}]
+ (0,0) -- (14pt,0);
+ \draw[arrows={-Triangle[width=6pt,length=5pt]Bar[width=8pt]}]
+ (0,-7pt) -- (14pt,-7pt);
+ \end{tikzpicture}%
+ }%
+ }
+ \newrobustcmd{\tabsym}{%
+ \BeginAccSupp{method=hex,unicode,ActualText=21B9}%
+ \thinspace
+ \usebox\tabsbox
+ \thinspace
+ \EndAccSupp{}%
+ }%
+ \newrobustcmd{\upsym}{%
+ \BeginAccSupp{method=hex,unicode,ActualText=2B71}%
+ \begin{tikzpicture}
+ \draw[arrows={-To[width=6pt,length=5pt]Bar[width=8pt]}]
+ (0,0) -- (0,2ex);
+ \end{tikzpicture}
+ \EndAccSupp{}%
+ }%
+}
+
+\DeclareOption{fontsymbols}{%
+ \renewcommand{\nlct@definesymbols}{%
+ \nlct@definefontsymbols
+ }%
+}
+
+\DeclareOption{tikzsymbols}{%
+ \renewcommand{\nlct@definesymbols}{%
+ \nlct@definetikzsymbols
+ }%
+}
+
+\newcommand{\nlct@indexmarks}{}
+\newcommand{\nlctpostindexname}[1]{}
+
+\DeclareOption{noindexmarks}{\renewcommand{\nlct@indexmarks}{}}
+
+\DeclareOption{indexmarks}{%
+ \renewcommand{\nlct@indexmarks}{%
+ \@ifpackageloaded{scrbase}%
+ {%
+ \RequirePackage{scrlayer-scrpage}%
+ \lofoot[\nlctindexfirstmark]{\nlctindexfirstmark}%
+ \lofoot[\nlctindexfirstmark]{\nlctindexfirstmark}%
+ \refoot[\nlctindexlastmark]{\nlctindexlastmark}%
+ \rofoot[\nlctindexlastmark]{\nlctindexlastmark}%
+ \renewcommand{\nlctpostindexname}[1]{\glsxtrbookindexmarkentry{##1}}%
+ }%
+ {}%
+ }%
+}
+
+% default options:
+\PassOptionsToPackage{
+ record=nameref,
+ indexcounter,
+ floats,
+ symbols,
+ accsupp,
+ nosuper,
+ stylemods={mcols,bookindex,topic,longextra}
+}{glossaries-extra}
+
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{glossaries-extra}}
\ProcessOptions
@@ -51,20 +144,25 @@
\RequirePackage{iftex}
\RequirePackage{etoolbox}
+\nlct@indexmarks
+\nlct@definesymbols
+
\newcommand{\nlct@ifattachsupported}[2]{#2}
\newcommand{\nlct@doifattachsupported}[1]{\nlct@ifattachsupported{#1}{}}
\ifPDFTeX
\RequirePackage[T1]{fontenc}
\renewcommand{\nlct@ifattachsupported}[2]{#1}
- \providecommand{\pdf@filesize}[1]{\pdffilesize#1}
% \strong is provided by fontspec
\providecommand*{\strong}[1]{\textbf{#1}}
\else
\RequirePackage{fontspec}
- \setmainfont{Linux Libertine O}
+ % v1.11 changed font from Linux Libertine O to Liberation
+ \setmainfont{FreeSerif}
+ \setsansfont{FreeSans}[Scale=.9]
+ \setmonofont{FreeMono}[Scale=1.1]
\ifluatex
\newcommand{\nlctdocsymbolgrouplabel}[3]{%
@@ -82,9 +180,6 @@
\renewcommand{\nlct@ifattachsupported}[2]{#1}
\RequirePackage{luatex85}% need \pdfxform for attachfile
- % copied from pdftexcmds.sty
- \providecommand{\pdf@filesize}[1]{\directlua0{%
- oberdiek.pdftexcmds.filesize("\luaescapestring{#1}")}}
\fi
\fi
@@ -100,11 +195,13 @@
\RequirePackage{varioref}
\RequirePackage{xcolor}
-\newcommand*{\nlct@doifkoma}[1]{}
-\@ifclassloaded{scrreprt}{\let\nlct@doifkoma\@firstofone}
+\newcommand*{\nlct@doifkoma}[1]{\nlct@ifkoma{#1}{}}
+\newcommand*{\nlct@ifkoma}[2]{#2}
+
+\@ifclassloaded{scrreprt}{\let\nlct@ifkoma\@firstoftwo}
{
- \@ifclassloaded{scrartcl}{\let\nlct@doifkoma\@firstofone}
- {\@ifclassloaded{scrbook}{\let\nlct@doifkoma\@firstofone}{}}
+ \@ifclassloaded{scrartcl}{\let\nlct@ifkoma\@firstoftwo}
+ {\@ifclassloaded{scrbook}{\let\nlct@ifkoma\@firstoftwo}{}}
}
\nlct@doifkoma{%
@@ -127,7 +224,7 @@
\RequirePackage{mfirstuc}[2022/10/14]
% Requires glossaries-extra v1.49+
-\RequirePackage[record=nameref,indexcounter,floats,symbols,nosuper,stylemods={mcols,bookindex,topic,longextra}]{glossaries-extra}[2022/10/14]
+\RequirePackage{glossaries-extra}[2022/10/14]
\nlct@doifattachsupported{\RequirePackage{attachfile}}
\renewcommand{\thepart}{\Roman{part}}
@@ -138,6 +235,25 @@
\newcommand*{\thispackagename}{\jobname}
\newcommand*{\thispackage}{\styfmt{\thispackagename}}
\newcommand*{\examplesdir}{\jobname-examples}
+\newcommand{\nlct@v@version}{}
+\newcommand{\nlct@version}{}
+\newcommand{\nlct@date}{}
+\ExplSyntaxOn
+\NewDocumentCommand \versiondate { m m }
+{
+ \tl_set:Nx \nlct@version { \tl_trim_spaces:n { #1 } }
+ \tl_set:Nx \nlct@date { \tl_trim_spaces:n { #2 } }
+ \tl_if_empty:NF \nlct@version
+ {
+ \tl_set:Nx \nlct@v@version { version ~ \nlct@version }
+ }
+ \tl_if_empty:NF \nlct@date
+ {
+ \tl_put_right:Nx \nlct@v@version { ~ \nlct@date }
+ }
+ \date{\nlct@v@version}
+}
+\ExplSyntaxOff
\newcommand{\htmlavailable}{This document is also available as
\href{\jobname.html}{HTML (\filefmt{\jobname.html})}.}
@@ -146,6 +262,10 @@
\renewcommand{\title}[1]{\gdef\@title{#1}\hypersetup{pdftitle={\text_purify:n{#1}}}}
\ExplSyntaxOff
+ \newrobustcmd{\visiblespace}{%
+ \texttt{\verbvisiblespace}%
+ }
+
\newcommand{\TeXLive}{\TeX\ Live}
\newcommand{\MikTeX}{Mik\TeX}
@@ -186,10 +306,11 @@
\newrobustcmd*{\ctanref}[2]{\href{https://ctan.org/#1}{#2}%
\glsxtrdopostpunc{\footnote{\href{https://ctan.org/#1}{\nolinkurl{ctan.org/#1}}}}%
}
-\MFUexcl{\ctanpkg}
+\MFUexcl{\ctanref}
\newrobustcmd*{\ctanpkg}[1]{\href{https://ctan.org/pkg/#1}{\nolinkurl{ctan.org/pkg/#1}}}
\MFUexcl{\ctanpkg}
+
\newrobustcmd*{\ctanpkgmirror}[2]{%
\href{http://mirrors.ctan.org/pkg/#1}{#2}%
\glsxtrdopostpunc{\footnote{\href{http://mirrors.ctan.org/pkg/#1}{\nolinkurl{mirrors.ctan.org/pkg/#1}}}}%
@@ -297,6 +418,28 @@
\egroup
}
+\newcommand*{\@ref@numname}[1]{\ref{#1} (\nameref{#1})}
+\newcommand*{\s@ref@numname}[1]{\ref*{#1} (\nameref*{#1})}
+
+\newcommand*{\@numname@refslist}[4]{%
+ \bgroup
+ \let\DTLlistformatitem\@ref@numname
+ \renewcommand*{\DTLlistformatsep}{#2}%
+ \renewcommand*{\DTLlistformatlastsep}{#3}%
+ #1\DTLformatlist{#4}%
+ \egroup
+}
+
+\newcommand*{\s@numname@refslist}[4]{%
+ \bgroup
+ \let\DTLlistformatitem\s@ref@numname
+ \renewcommand*{\DTLlistformatsep}{#2}%
+ \renewcommand*{\DTLlistformatlastsep}{#3}%
+ #1\DTLformatlist{#4}%
+ \egroup
+}
+
+
\newcommand{\sectionrefprefix}{\S}
\newrobustcmd{\sectionref}{\@ifstar\s@sectionref\@sectionref}
\MFUblocker{\sectionref}
@@ -397,6 +540,8 @@
\newcommand*{\@exampleref}[1]{\examplerefprefix\nlct@ns@ref@cs{#1}}
\newcommand*{\s@exampleref}[1]{\examplerefprefix\ref*{#1}}
+\newrobustcmd*{\examplenameref}[1]{\exampleref{#1} (\nameref{#1})}
+
\newrobustcmd*{\Exampleref}{\@ifstar\s@Exampleref\@Exampleref}
\newcommand*{\@Exampleref}[1]{\Examplerefprefix\nlct@ns@ref@cs{#1}}
\newcommand*{\s@Exampleref}[1]{\Examplerefprefix\ref*{#1}}
@@ -412,6 +557,12 @@
{\@refslist{\examplesrefprefix}{\refslistsep}{\refslistlastsep}}%
}
+\newrobustcmd{\examplesnameref}{%
+ \@ifstar
+ {\s@numname@refslist{\examplesrefprefix}{\refslistsep}{\refslistlastsep}}%
+ {\@numname@refslist{\examplesrefprefix}{\refslistsep}{\refslistlastsep}}%
+}
+
\newrobustcmd{\Examplesref}{%
\@ifstar
{\s@refslist{\Examplesrefprefix}{\refslistsep}{\refslistlastsep}}%
@@ -419,11 +570,21 @@
}
\MFUaddmap{\examplesref}{\Examplesref}
+\newrobustcmd{\mExampleref}[1]{\Exampleref{#1}\examplemarginref{#1}}
+\newrobustcmd{\mexampleref}[1]{\exampleref{#1}\examplemarginref{#1}}
+
+\newcommand{\exmarginfont}{\color{black}\footnotesize}% v1.12
+
+\newrobustcmd{\examplemarginref}[1]{%
+ \marginpar{\exmarginfont\hyperref[#1]{\codesym}\ref{#1}\plabel{#1-backref}}%
+}
+
\newcommand*{\plabel}[2][]{\protected@edef\@currentlabelname{#1}\label{#2}}
\newcommand*{\pref}[2][]{on page~\pageref{#2}}
\newcommand*{\phyperref}[2]{\hyperref[#2]{#1} on page~\pageref{#2}}
\newcommand*{\dash}{\,---\,}
+\newcommand{\Slash}{\,\slash\,}% v1.11
\newcommand*{\tick}{\ding{51}}
@@ -441,6 +602,10 @@
\newcommand{\unlimited}{$\infty$}
+{\catcode`\^^I12\relax
+\gdef\nlctliteraltabchar{^^I}
+}
+
\newcommand{\fnsymmark}[1]{\rlap{#1}}
\newcommand{\asteriskmarker}{\textasteriskcentered}
@@ -643,17 +808,20 @@ engine (\XeLaTeX\ or \LuaLaTeX)}
\newcommand*{\icontext}[1]{\stepcounter{icon}\glstext[counter=icon]{sym.#1}}
\newtcolorbox{warning}[1][]{breakable,
+ before upper={\parindent12pt\noindent},
title={\icon{warning}},
coltitle=red,colbacktitle=red!20!white,
colframe=red,colback=red!5!white,
enhanced,attach boxed title to top right={yshift=\boxtitleshift},#1}
\newtcolorbox{important}[1][]{breakable,title={\icon{important}},
+ before upper={\parindent12pt\noindent},
coltitle=red,colbacktitle=red!20!white,
colframe=red,colback=red!5!white,
enhanced,attach boxed title to top right={yshift=\boxtitleshift},#1}
\newtcolorbox{information}[1][]{breakable,title={\icon{information}},
+ before upper={\parindent12pt\noindent},
coltitle=teal,colbacktitle=teal!20!white,
colframe=teal,colback=teal!5!white,
enhanced,attach boxed title to top right={yshift=\boxtitleshift},#1}
@@ -664,26 +832,34 @@ engine (\XeLaTeX\ or \LuaLaTeX)}
\newcommand{\nlctdefaultafter}{\par\noindent\ignorespacesafterend}
+\newcommand{\nlctpinnedafter}{\nlctdefaultafter} % v1.11
+\newcommand{\nlctpinnedbefore}{\allowbreak\par\noindent} % v1.11
+
\newtcolorbox{pinnedbox}[1][]{unbreakable,title={\icon{definition}},
coltitle=black,colbacktitle=defbackground,
colframe=black,colback=defbackground,halign=flush left,
enhanced,attach boxed title to top right={yshift=\boxtitleshift},
- after={\nlctdefaultafter},
+ after={\nlctpinnedafter},before={\nlctpinnedbefore},
#1
}
+\newcommand{\nlctdefnafter}{\nopagebreak\nlctdefaultafter} % v1.11
+\newcommand{\nlctdefnbefore}{\allowbreak\par\noindent} % v1.11
+
\newtcolorbox{defnbox}[1][]{unbreakable,
colframe=black,colback=defbackground,halign=flush left,
- after={\nlctdefaultafter},
+ after={\nlctdefnafter},before={\nlctdefnbefore},
#1
}
+\newcommand{\nlctsettingsafter}{\nopagebreak\nlctdefaultafter} % v1.11
+\newcommand{\nlctsettingsbefore}{\allowbreak\par\noindent} % v1.11
\newtcolorbox{settingsbox}[1][]{title={\icon{valuesetting}},unbreakable,
coltitle=black,colbacktitle=defbackground!20!white,
colframe=black,colback=defbackground!20!white,halign=flush left,
enhanced,attach boxed title to top right={yshift=\boxtitleshift},
- after={\nlctdefaultafter},
+ after={\nlctsettingsafter}, before={\nlctsettingsbefore},
#1
}
@@ -705,14 +881,29 @@ engine (\XeLaTeX\ or \LuaLaTeX)}
\newcommand{\cmd}[1]{\texttt{\code@cmd{#1}}}
\newcommand{\code@cbeg}[1]{\cmd{begin}\marg{#1}}
\newcommand{\code@cend}[1]{\cmd{end}\marg{#1}}
-\newcommand{\code@comment}[1]{\mbox{\textcolor{comment}{\glspercentchar\ #1}}}%
+{\obeylines\newcommand{\code@comment}[1]{%
+ \mbox{\textcolor{comment}{\glspercentchar\ #1}}\@ifnextchar
+{}{\par}}\global\let\code@comment\code@comment\newcommand{\code@comment@dbsp}[1]{%
+ \mbox{\textcolor{comment}{\glspercentchar\ #1}}\@ifnextchar
+{}{\par}\dbspace}\global\let\code@comment@dbsp\code@comment@dbsp}
\newcommand{\araraline}[1]{\glspercentchar\ arara: #1}
\newcommand{\araracont}{\araraline{-\/-> }}
+\newcommand{\commentnl}[1]{\comment{#1}\nl}
+
\newcommand*{\setupcodeenvfmts}{%
\let\cbeg\code@cbeg
\let\cend\code@cend
\let\comment\code@comment
+ \let\commentdbsp\code@comment@dbsp
+ \def\nl{\mbox{}\newline}%
+ \def\nlsp{\nl\null\space}%
+ \def\dbspace{\mbox{}\space\space}%
+ \def\dbdbspace{\dbspace\dbspace}%
+ \def\dbdbdbspace{\dbspace\dbspace\dbspace}%
+ \def\nldbsp{\nl\null\dbspace}%
+ \def\nldbdbsp{\nl\null\dbdbspace}%
+ \def\nldbdbdbsp{\nl\null\dbdbdbspace}%
\renewcommand*{\envfmt}[1]{##1}%
\renewcommand*{\styfmt}[1]{##1}%
\renewcommand*{\clsfmt}[1]{##1}%
@@ -734,6 +925,7 @@ engine (\XeLaTeX\ or \LuaLaTeX)}
% inline
\newcommand{\code}[1]{\texorpdfstring{\@code{#1}}{#1}}
\newrobustcmd{\@code}[1]{{\setupcodeenvfmts\codefont\obeyspaces #1}}
+\newcommand{\smcode}[1]{\@code{\small #1}}
\definecolor{codebackground}{gray}{0.95}
@@ -791,7 +983,7 @@ engine (\XeLaTeX\ or \LuaLaTeX)}
coltitle=black,colbacktitle=white,
colframe=black,colback=white,
after={\nlctdefaultafter},
- enhanced,attach boxed title to top right={yshift=\boxtitleshift},#1}
+ enhanced,breakable,attach boxed title to top right={yshift=\boxtitleshift},#1}
\newtcolorbox{coderesult}[1][]{skin=bicolor,
title={\icon{code} \icon{result}},
@@ -836,7 +1028,8 @@ halign upper=flush left,halign lower=justify,
\newcommand*{\summarylocfont}{\footnotesize}
-\newcommand*{\summarylocwidth}{\marginparwidth}
+\newcommand*{\summarylocinnersep}{.3333em}
+\newcommand*{\summarylocwidth}{\marginparwidth-.6666em}
\definecolor{summaryloc}{rgb}{.75,.936,1} % LightBlue1
@@ -850,11 +1043,20 @@ halign upper=flush left,halign lower=justify,
\smash
{%
\tikz[baseline=(N.west)]
- \node[anchor=west,fill=summaryloc,text width=\summarylocwidth,rounded corners,font=\summarylocfont] (N) {#1};%
+ \node[anchor=west,
+ outer sep=0pt,
+ inner sep=\summarylocinnersep,
+ fill=summaryloc,
+ text width=\summarylocwidth,
+ align=flush left,
+ rounded corners,font=\summarylocfont
+ ] (N) {#1};%
}%
}%
}
+\newcommand{\summarymarginpar}[1]{\marginpar{#1}}
+
\ifdef\@ptsize
{
\ifboolexpr{ test {\ifdefstring\@ptsize{1}}
@@ -940,6 +1142,10 @@ halign upper=flush left,halign lower=justify,
\renewcommand*{\create@example@pages@sep}{#1}}
\newcommand{\create@example@pages@sep}{1em}
+\define@key{nlctexample}{pagesperrow}{%
+ \renewcommand*{\create@example@pages@perrow}{#1}}
+\newcommand{\create@example@pages@perrow}{\@nlct@num}
+
\define@key{nlctexample}{tex}{\renewcommand*{\create@example@tex}{#1}}
\newcommand*{\create@example@tex}{arara --working-directory \examplesdir}
@@ -974,12 +1180,126 @@ halign upper=flush left,halign lower=justify,
\renewcommand*{\example@title}{#1}%
}
-\newcommand{\example@do@label}{}
+\newcommand{\nlctpostexampletitle}{\par}
+
+\define@choicekey{nlctexample}{titleskip}%
+ [\nlct@titleskip@val\nlct@titleskip@nr]%
+ {none,thin,small,medium}%
+ {%
+ \ifcase\nlct@titleskip@nr\relax
+ \renewcommand{\nlctpostexampletitle}{\endgraf}%
+ \or
+ \renewcommand{\nlctpostexampletitle}{\vspace{1pt plus 1pt}\endgraf}%
+ \or
+ \renewcommand{\nlctpostexampletitle}{\smallskip\endgraf}%
+ \or
+ \renewcommand{\nlctpostexampletitle}{\medskip\endgraf}%
+ \fi
+ }
+
+\newcommand{\example@do@label}{%
+ \ifdefempty\nlct@example@label
+ {}%
+ {%
+ \ifdefempty\example@title{}%
+ {\protected@edef\@currentlabelname{\example@title}}%
+ \label{\nlct@example@label}%
+ \example@do@extag
+ }%
+}
\newcommand{\example@label@info}{}
+\newcommand{\nlct@example@label}{}
\define@key{nlctexample}{label}{%
\renewcommand{\example@label@info}{\glspercentchar\space Label: "#1"^^J}%
- \renewcommand*{\example@do@label}{\label{#1}}%
+ \renewcommand*{\nlct@example@label}{#1}%
+}
+
+% v1.11+
+\newcommand{\example@do@extag}{}
+
+\newcommand{\nlctextag}[1]{%
+ \protected@write\@auxout{}{\string\nlctdoc@extag{#1}{\nlct@example@label}}%
+}
+
+\ExplSyntaxOn
+\newcommand{\nlctdoc@extag}[2]{
+ \clist_map_inline:nn { #1 }
+ {
+ \seq_if_exist:cF { g__nlctdoc_example_tag_ ##1 _seq }
+ {
+ \seq_new:c { g__nlctdoc_example_tag_ ##1 _seq }
+ }
+ \seq_gput_right:cn { g__nlctdoc_example_tag_ ##1 _seq } { #2 }
+ }
+}
+
+\int_new:N \l_nlctdoc_extag_item_threshold_int
+\int_set:Nn \l_nlctdoc_extag_item_threshold_int { 4 }
+
+% Syntax: \exampletagref{tag}{trailing punctuation}
+\NewDocumentCommand \exampletagref { m m }
+{
+ \seq_if_exist:cTF { g__nlctdoc_example_tag_ #1 _seq }
+ {
+ \seq_if_empty:cTF { g__nlctdoc_example_tag_ #1 _seq }
+ {
+ ??\PackageWarning { nlctuserguide }
+ { No ~ labels ~ found ~ for ~ tag ~ `#1' }
+ }
+ {
+ \exp_args:Ncx
+ \__nlctdoc_examplerefs:Nnn
+ { g__nlctdoc_example_tag_ #1 _seq }
+ { \seq_count:c { g__nlctdoc_example_tag_ #1 _seq } }
+ { #2 }
+ }
+ }
+ {
+ ??\PackageWarning { nlctuserguide }
+ { No ~ reference ~ found ~ for ~ tag ~ `#1' }
+ }
+}
+\cs_new:Nn \__nlctdoc_examplerefs:Nnn
+{
+ \int_compare:nNnTF { #2 } = { \c_one_int }
+ {
+ \exp_args:Nx \examplenameref { \seq_item:Nn #1 { \c_one_int } } #3
+ }
+ {
+ \int_compare:nNnTF
+ { #2 } < { \l_nlctdoc_extag_item_threshold_int }
+ {
+ \exp_args:Nx \examplesnameref { \seq_use:Nn #1 { , } } #3
+ }
+ {
+ \exampletagrefprelist
+ \begin{itemize}
+ \seq_map_indexed_inline:Nn #1
+ {
+ \item \ref{ ##2 }
+ \exampletagreflistpretitle
+ \nameref{ ##2 }
+ \int_compare:nNnTF
+ { ##1 } = { #2 }
+ { #3 } { \exampletagreflistsep }
+ }
+ \end{itemize}
+ }
+ }
+}
+\ExplSyntaxOff
+\newcommand{\exampletagreflistsep}{;}
+\newcommand{\exampletagreflistpretitle}{. }
+\newcommand{\exampletagrefprelist}{the following examples:}
+
+\define@key{nlctexample}{tag}{%
+ \renewcommand{\example@do@extag}{\nlctextag{#1}}%
+}
+
+\newcommand{\nlct@exbacklink}{}
+\define@key{nlctexample}{link}{%
+ \renewcommand{\nlct@exbacklink}{#1}%
}
\newcounter{example}
@@ -991,17 +1311,23 @@ halign upper=flush left,halign lower=justify,
\newcommand{\codepar}{\par\mbox{}\par}
+\newcommand{\glscmd}[1]{\glsentrytext{#1}}
+
\newcommand{\nlctexamplelets}{%
\let\gls\glsentrytext
+ \let\glssymbol\glsentrysymbol
\let\glscmd\glsentrytext
\let\env\@firstofone
\let\ctr\@firstofone
\let\texorpdfstring\@secondoftwo
+ \def\starredcs##1{\glsentrytext{##1}*}%
\def\cmd##1{\glsbackslash##1}%
\def\csfmt##1{\glsbackslash##1}%
\def\cbeg##1{\glsbackslash begin{##1}}%
\def\cend##1{\glsbackslash end{##1}}%
\def\comment##1{\glspercentchar\space ##1^^J}%
+ \def\commentnl##1{\glspercentchar\space ##1^^J}%
+ \def\commentdbsp##1{\glspercentchar\space ##1^^J\dbspace}%
\def\%{\glspercentchar}%
\edef\#{\expandafter\@gobble\string\#}%
% v1.10:
@@ -1011,14 +1337,25 @@ halign upper=flush left,halign lower=justify,
\def\codepar{^^J^^J}%
\def\marg##1{\glsopenbrace##1\glsclosebrace}%
\def\oarg##1{[##1]}%
+% v1.11:
+ \def\nl{^^J}%
+ \def\nlsp{^^J\space}%
+ \def\dbspace{\space\space}%
+ \def\dbdbspace{\dbspace\dbspace}%
+ \def\dbdbdbspace{\dbspace\dbspace\dbspace}%
+ \def\nldbsp{^^J\dbspace}%
+ \def\nldbdbsp{^^J\dbdbspace}%
+ \def\nldbdbdbsp{^^J\dbdbdbspace}%
+ \let\tabsym\nlctliteraltabchar
+ \let\visiblespace\space
}
\newcommand{\@create@example@write}{\@create@example@write@detok}
\newcommand{\createexamplefirstline}{%
\nlct@ifattachsupported
- {\glspercentchar\space This file is embedded in \jobname.pdf^^J}%
- {\glspercentchar\space This file is an example from \jobname.pdf^^J}%
+ {\glspercentchar\space This file is embedded in \jobname.pdf \nlct@v@version^^J}%
+ {\glspercentchar\space This file is an example from \jobname.pdf \nlct@v@version^^J}%
}
\newcommand{\@create@example@write@detok}[2]{%
@@ -1075,10 +1412,10 @@ halign upper=flush left,halign lower=justify,
\ifdefempty\create@example@graphicsopts
{%
\DTLnumitemsinlist{\create@example@pages}{\@nlct@num}%
- \edef\create@example@graphicsopts{width=\the\dimexpr\linewidth/\@nlct@num-\create@example@pages@sep}%
+ \edef\create@example@graphicsopts{width=\the\dimexpr(\linewidth-\create@example@pages@sep*(\create@example@pages@perrow-1))/\create@example@pages@perrow}
}{}%
- \@for\@nlct@page:=\create@example@pages\do{\hfill
- \s@example@image[page=\@nlct@page]{\nlct@image@file}\hfill}%
+ \@for\@nlct@page:=\create@example@pages\do{\hfil
+ \s@example@image[page=\@nlct@page]{\nlct@image@file}\hfil}%
}%
\@endfortrue
}%
@@ -1101,6 +1438,22 @@ halign upper=flush left,halign lower=justify,
\newcommand{\listofexamplesname}{List of Examples}
\newcommand{\listofexampleslabel}{\label{sec:listofexamples}}
+% v1.11:
+\newcommand{\listofexamplesheader}{%
+\par
+If an example shows the icon \exampleattachtexicon\ then the source
+code is embedded in the PDF as an attachment. If your PDF viewer
+supports attachments, you can extract the self-contained example
+file to try it out for yourself. Alternatively, you can click on the
+download icon \exampledownloadtexicon\ which will try downloading
+the example source code from your closest CTAN mirror, but make sure
+that this user manual matches the version on CTAN first. You can
+also try using:
+\texdocref{-l \jobname-example\meta{nnn}}
+where \meta{nnn} is the example number zero-padded to three digits
+to find out if the example files are installed on your device.\par
+\bigskip
+}
\ifdef\chapter
{
@@ -1109,12 +1462,12 @@ halign upper=flush left,halign lower=justify,
\newcommand{\listofexamples}{%
\@ifstar{\chapter*{\listofexamplesname}\@starttoc{loe}}%
- {\chapter{\listofexamplesname}\listofexampleslabel\@starttoc{loe}}}
+ {\chapter{\listofexamplesname}\listofexampleslabel\listofexamplesheader\@starttoc{loe}}}
}
{
\newcommand{\listofexamples}{%
\@ifstar{\section*{\listofexamplesname}\@starttoc{loe}}%
- {\section{\listofexamplesname}\listofexampleslabel\@starttoc{loe}}}
+ {\section{\listofexamplesname}\listofexampleslabel\listofexamplesheader\@starttoc{loe}}}
}
\newcommand{\l@example}{\l@table}
@@ -1126,10 +1479,24 @@ halign upper=flush left,halign lower=justify,
\newcommand{\nlctexampletag}{\Examplename~\theexample}
+\newcommand{\nlctbacklink}[1]{%
+ \ifdefempty\nlct@exbacklink
+ {%
+ \ifdefempty\nlct@example@label{}%
+ {%
+ \ifcsdef{r@\nlct@example@label-backref}%
+ {\hyperref[\nlct@example@label-backref]{\upsym}}%
+ {}%
+ }%
+ }%
+ {\hyperref[\nlct@exbacklink]{\upsym}}%
+ #1%
+}
+
\newcommand{\nlctexampletitlefmt}[1]{%
\nlctexampletitlefont
\raggedright\exhyphenpenalty 0 % space intended
- \nlctexampletag\ifstrempty{#1}{}{: #1}\par
+ \nlctbacklink{\nlctexampletag}\ifstrempty{#1}{}{: #1}\par
}
\newcommand{\nlct@ex@title@attachments}[2]{%
@@ -1158,17 +1525,6 @@ halign upper=flush left,halign lower=justify,
\nlctdownloadlinkstrue
\newcommand*{\nlctdownloadlink}[1]{http://mirrors.ctan.org/macros/latex/contrib/\thispackagename/#1}
-\newcommand*{\nlct@testfile}[2]{%
- \IfFileExists{#1}{}%
- {%
- \PackageWarning{nlctuserguide}{File `#1' doesn't exist.
- Changing examples directory to `.'}%
- \gdef\examplesdir{.}%
- #2%
- }%
- \global\let\nlct@testfile\@gobblethree
-}
-
\newcommand{\@loe@disable@cmds}{%
\def\dequals{\protect\dequals}%
\def\dhyphen{\protect\dhyphen}%
@@ -1182,8 +1538,30 @@ halign upper=flush left,halign lower=justify,
\def\appfmt##1{\protect\appfmt{##1}}%
}
+\ExplSyntaxOn
+\newcommand{\example@filesize}[1]{
+ \file_size:n { \examplesdir / \nlct@example@filebasename #1 }
+}
+\newcommand{\example@filetimestamp}[1]{
+ \file_timestamp:n { \examplesdir / \nlct@example@filebasename #1 }
+}
+\newcommand\nlct@run[1]{
+ \sys_if_shell_unrestricted:TF
+ { \sys_shell_now:e { #1 } }
+ {
+ \PackageInfo { nlctuserguide }
+ {
+ Not ~ running ~ ` #1 ' \MessageBreak
+ Unrestricted ~ shell ~ not ~ enabled. ~
+ Execute ~ outside ~ of ~ TeX ~ and ~ rerun
+ }
+ }
+}
+\ExplSyntaxOff
+
\newcommand{\@createexample}[3][]{%
- \begingroup
+ \begin{minipage}[t]{\linewidth}%
+ \raggedright
\refstepcounter{example}%
\setkeys{nlctexample}{#1}%
\example@do@label
@@ -1225,13 +1603,7 @@ halign upper=flush left,halign lower=justify,
\immediate\openout\nlct@exampleout=\examplesdir/\nlct@example@filebasename.tex
\@create@example@write{#2}{#3}%
\immediate\closeout\nlct@exampleout
- \nlct@testfile{\examplesdir/\nlct@example@filebasename}%
- {%
- \immediate\openout\nlct@exampleout=\nlct@example@filebasename.tex
- \@create@example@write{#2}{#3}%
- \immediate\closeout\nlct@exampleout
- }%
- \immediate\write18{\create@example@tex\space\nlct@example@filebasename.tex}%
+ \nlct@run{\create@example@tex\space\nlct@example@filebasename.tex}%
\nlct@ifattachsupported
{%
\bgroup
@@ -1241,7 +1613,9 @@ halign upper=flush left,halign lower=justify,
\nlctexampletagattachfont
\textattachfile[mimetype={application/x-tex},
author={\@pdfauthor},color={0 0 0},
- size={\pdf@filesize{\examplesdir/\nlct@example@filebasename.tex}},
+ size={\example@filesize{.tex}},
+ created={\example@filetimestamp{.tex}},
+ modified={\example@filetimestamp{.tex}},
subject={\example@pdf@title\space (source code)},
description={\example@attachdesc\space (source code)}]%
{\examplesdir/\nlct@example@filebasename.tex}{\exampleattachtexicon}%
@@ -1255,7 +1629,9 @@ halign upper=flush left,halign lower=justify,
\space
\textattachfile[mimetype={application/pdf},
author={\@pdfauthor},color={0 0 0},
- size={\pdf@filesize{\examplesdir/\nlct@example@filebasename.pdf}},
+ size={\example@filesize{.pdf}},
+ created={\example@filetimestamp{.pdf}},
+ modified={\example@filetimestamp{.pdf}},
subject={\example@pdf@title\space (PDF)},
description={\example@attachdesc\space (PDF)}]%
{\examplesdir/\nlct@example@filebasename.pdf}{\exampleattachpdficon}%
@@ -1272,7 +1648,8 @@ halign upper=flush left,halign lower=justify,
\fi
\fi
}%
- \par\egroup\noindent
+ \nlctpostexampletitle
+ \egroup\noindent
}%
{%
\nlctexampletitlebox{\example@tex@title}\hfill
@@ -1280,11 +1657,13 @@ halign upper=flush left,halign lower=justify,
\href{\nlctdownloadlink{\examplesdir/\nlct@example@filebasename.tex}}{\exampledownloadtexicon}
\quad
\href{\nlctdownloadlink{\examplesdir/\nlct@example@filebasename.pdf}}{\exampledownloadpdficon}
- \par\egroup\noindent
+ \nlctpostexampletitle
+ \egroup\noindent
\fi
}
\nlct@include@exampleimage
- \endgroup
+ \par
+ \end{minipage}%
}
\newenvironment{example}[2]{%
@@ -1367,6 +1746,7 @@ halign upper=flush left,halign lower=justify,
\def\dunderscore{\_}%
\let\-\empty
\let\csfmtfont\@firstofone
+ \let\NoCaseChange\@firstofone
}
\definecolor{cs}{rgb}{.328,.436,.1} % dark green
@@ -1387,6 +1767,10 @@ halign upper=flush left,halign lower=justify,
\newcommand*{\csfmtcolourfont}[1]{\texttt{\textcolor{cs}{#1}}}
\newcommand*{\csfmt}[1]{\csfmtfont{\codebackslash #1}}
+\newcommand*{\cspuncfmt}[1]{\csfmt{#1}} % v1.11
+
+\MFUblocker{\csfmt}% v1.11
+\MFUblocker{\cspuncfmt}% v1.11
\newcommand{\codebackslash}{\texorpdfstring{\char`\\}{\string\\}}
@@ -1399,7 +1783,53 @@ halign upper=flush left,halign lower=justify,
\texorpdfstring{\csfmt{#1\meta{#2}#3\meta{#4}#5}}{\string\\#1\string<#2\string>#3\string<#4\string>#5}%
}
-\newcommand{\starredcs}[1]{\glslink{#1}{\csfmt{#1*}}}
+\newcommand{\starredcs}[1]{\gls{#1}[\csfmtfont{*}]}
+\newcommand{\starredenv}[1]{\gls{env.#1}[\envfmt{*}]} % v1.11
+
+\newcommand{\thectr}[1]{\glslink{ctr.#1}{\csfmt{the#1}}} % v1.11
+\newcommand{\theHctr}[1]{\glslink{ctr.#1}{\csfmt{theH#1}}} % v1.11
+
+\newcommand*{\glscsname}[2][]{\glslink[#1]{#2}{\csfmtfont{#2}}}
+
+% v1.11
+\NewDocumentCommand{\predcs}{O{}m}{%
+ \glsxtrifhasfield{explsuffix}{#2}%
+ {%
+ \let\explsuffix\glscurrentfieldvalue
+ \gls[#1]{#2}%
+ }%
+ {\gls[#1]{#2}}%
+}
+
+\NewDocumentCommand{\condcsT}{O{}m}{%
+ {%
+ \def\explTFsuffix{T}%
+ \gls[#1]{#2}%
+ }%
+}
+
+\NewDocumentCommand{\condcsF}{O{}m}{%
+ {%
+ \def\explTFsuffix{F}%
+ \gls[#1]{#2}%
+ }%
+}
+
+\newcommand*{\@expfunclink}[3]{\glslink[#3]{#2}{\csfmt{#1}}}
+
+\NewDocumentCommand{\expfunc}{O{}mm}{%
+ \ifglsentryexists{#2}%
+ {%
+ \glsxtrifhasfield{base}{#2}%
+ {%
+ \expandafter\@expfunclink\expandafter{\glscurrentfieldvalue:#3}{#2}{#1}%
+ }%
+ {%
+ \gls[#1]{#2}%
+ }%
+ }%
+ {\gls[#1]{#2:#3}}%
+}
\glsxtraddlabelprefix{dual.}
\glsxtraddlabelprefix{idx.}
@@ -1414,8 +1844,6 @@ halign upper=flush left,halign lower=justify,
\newdglsfield{name}{\idxn}
\newdglsfield{first}{\idxf}
-\newcommand*{\glscsname}[2][]{\glslink[#1]{#2}{\csfmtfont{#2}}}
-
\newcommand{\optionlistprefix}{opt.}
\newcommand{\optionlistitemformat}[1]{\glsentrytext{#1}}
\newcommand{\optionlisttag}{Option}
@@ -1436,7 +1864,7 @@ halign upper=flush left,halign lower=justify,
}
\newrobustcmd{\options}[1]{%
- {\def\andname{and}
+ {\def\andname{and}%
\let\glsseeitemformat\optionlistitemformat
\glsxtrtaggedlist{\optionlisttag}{\optionlisttags}{\optionlistprefix}{#1}%
}%
@@ -1524,6 +1952,7 @@ halign upper=flush left,halign lower=justify,
\newcommand*{\styoptfmt}[1]{\texorpdfstring{\textcolor{styopt}{\optfmt{#1}}}{#1}}
\newcommand*{\clsoptfmt}[1]{\texorpdfstring{\textcolor{styopt}{\optfmt{#1}}}{#1}}
\newcommand*{\ctrfmt}[1]{\texorpdfstring{\textsf{#1}}{#1}}
+
\edef\longswitch{\string-\/\string-}
\edef\pdflongswitch{\string-\string-}
@@ -1556,7 +1985,9 @@ halign upper=flush left,halign lower=justify,
}%
}
-\newrobustcmd*{\texmeta}[1]{{\normalfont\normalcolor$\langle$\emph{#1}$\rangle$}}
+\newcommand{\faded}[1]{\texorpdfstring{\textcolor{gray}{#1}}{#1}}
+
+\newrobustcmd*{\texmeta}[1]{{\normalfont$\langle$\emph{#1}$\rangle$}}
\newcommand*{\meta}[1]{%
\texorpdfstring{\ifmmode\text{\texmeta{#1}}\else\texmeta{#1}\fi}{\string<#1\string>}%
@@ -1564,6 +1995,7 @@ halign upper=flush left,halign lower=justify,
\newcommand*{\oarg}[1]{\discretionary{}{}{}[#1]}
\newcommand*{\oargm}[1]{\oarg{\meta{#1}}}
+\newcommand*{\oargnobr}[1]{\discretionary{}{}{}\mbox{[#1]}}% v1.12
% To prevent lonely [ and ] from upsetting the syntax highlighter:
\newrobustcmd*{\nlctopensqbracket}{[}
@@ -1593,6 +2025,9 @@ halign upper=flush left,halign lower=justify,
{#1}%
}
+\newcommand{\homedir}{\string~}% v1.11
+\newcommand{\homefilefmt}[1]{\filefmt{\homedir\slash#1}}
+
\newcommand*{\filefmt}[1]{\texorpdfstring{\texttt{#1}}{#1}}
\newcommand*{\extfmt}{\filefmt}
@@ -1654,7 +2089,11 @@ halign upper=flush left,halign lower=justify,
{}
\ifdef\backmatter
-{\appto\backmatter{\setupglossaries{numberedsection=nolabel}}}
+{
+ \appto\backmatter{%
+ \def\theHchapter{backmatter.\arabic{chapter}}%
+ \setupglossaries{numberedsection=nolabel}}%
+ }
{}
\ifdef\appendix
@@ -1691,19 +2130,36 @@ halign upper=flush left,halign lower=justify,
\ifdef\chapter
{
- \preto\chapter{\setcounterlevels{0}{chapter}}
+ \nlct@ifkoma
+ {
+ \AddtoDoHook{heading/preinit/chapter}{\setcounterlevels{0}{chapter}}
+ }
+ {
+ \preto\chapter{\setcounterlevels{0}{chapter}}
+ }
\setcounterlevels{0}{chapter}
}
{
\setcounterlevels{1}{section}
}
-\preto\part{\setcounterlevels{-1}{part}}
-\preto\section{\setcounterlevels{1}{section}}
-\preto\subsection{\setcounterlevels{2}{subsection}}
-\preto\subsubsection{\setcounterlevels{3}{subsubsection}}
-\preto\paragraph{\setcounterlevels{4}{paragraph}}
-\preto\subparagraph{\setcounterlevels{4}{subparagraph}}
+\nlct@ifkoma
+ {
+ \AddtoDoHook{heading/preinit/part}{\setcounterlevels{-1}{part}}
+ \AddtoDoHook{heading/preinit/section}{\setcounterlevels{1}{section}}
+ \AddtoDoHook{heading/preinit/subsection}{\setcounterlevels{2}{subsection}}
+ \AddtoDoHook{heading/preinit/subsubsection}{\setcounterlevels{3}{subsubsection}}
+ \AddtoDoHook{heading/preinit/paragraph}{\setcounterlevels{4}{paragraph}}
+ \AddtoDoHook{heading/preinit/subparagraph}{\setcounterlevels{4}{subparagraph}}
+ }
+ {
+ \preto\part{\setcounterlevels{-1}{part}}
+ \preto\section{\setcounterlevels{1}{section}}
+ \preto\subsection{\setcounterlevels{2}{subsection}}
+ \preto\subsubsection{\setcounterlevels{3}{subsubsection}}
+ \preto\paragraph{\setcounterlevels{4}{paragraph}}
+ \preto\subparagraph{\setcounterlevels{4}{subparagraph}}
+ }
\newcommand{\mainfmt}[1]{\glsnumberformat{#1}}
@@ -1716,6 +2172,10 @@ halign upper=flush left,halign lower=justify,
\createtarget{#1}{\glossentryname{#1}}%
}
+\renewcommand*{\GlsXtrStandaloneEntryOther}[2]{%
+ \createtarget{#1}{\glossentrynameother{#1}{#2}}%
+}
+
% \targetorhyperlink{label}{text}
\newcommand*{\targetorhyperlink}[2]{%
\glsxtrifhasfield*{target}{#1}%
@@ -1789,6 +2249,18 @@ halign upper=flush left,halign lower=justify,
\glsxtrglossentry{pkg.#2}%
}
+% v1.11
+\newrobustcmd*{\inlinefiledef}[2][filedef]{%
+ \mainglsadd{file.#2}{#1}%
+ \glsxtrglossentry{file.#2}%
+}
+
+% v1.11
+\newrobustcmd*{\inlineappdef}[2][appdef]{%
+ \mainglsadd{app.#2}{#1}%
+ \glsxtrglossentry{app.#2}%
+}
+
\newcommand*{\mainglsadd}[3][]{%
\ifstrempty{#3}%
{\def\mainglsaddcounter{}}%
@@ -1838,17 +2310,32 @@ halign upper=flush left,halign lower=justify,
\glsxtrifhasfield{syntax}{opt.#2}{\dequals\glscurrentfieldvalue}{}}%
}
+\newcommand{\summarytagfill}{\space\allowbreak\mbox{}\nolinebreak\hfill}% v1.12
+
+\newcommand{\@cmddef@init}{%
+ \let\csfmtfont\@firstofone
+ \def\cmdfont##1{\textbf{\texttt{##1}}}%
+ \def\explTFsuffix{\@explboolsyntaxfmt{TF}}%
+}
+
\newcommand*{\s@cmddef}[2][]{%
\def\cmdtitle{\icon{definition}}%
\def\postnote{}%
\ifnotdefaultstatus{#2}{\def\cmdtitle{\statussym}\def\postnote{\hfill\statustext}}{}%
\begin{pinnedbox}[title=\cmdtitle]
- \let\csfmtfont\@firstofone
- \def\cmdfont##1{\textbf{\texttt{##1}}}%
+ \@cmddef@init
\gathermodifiers{#2}%
+ \gathervariants{#2}%
\cmddefsyntax{#1}{#2}%
- \def\tagsep{\hfill}%
- \ifdefempty\nlctmodifierlist{}%
+ \def\tagsep{\summarytagfill}%
+ \ifdefempty\nlctmodifierlist
+ {%
+ \ifdefempty\nlctvariantlist
+ {}%
+ {\tagsep\summarytagfmt{\nlctvarianttag}\nlctvariantlist\relax
+ \let\tagsep\space
+ }%
+ }%
{\tagsep\summarytagfmt{\nlctmodifiertag}\nlctmodifierlist\relax
\let\tagsep\space
}%
@@ -1858,6 +2345,15 @@ halign upper=flush left,halign lower=justify,
\ifdefempty\nlctmodifierglslist{}%
{\@for\@nlct@label:=\nlctmodifierglslist\do
{\par\cmddefsyntax{#1}{\@nlct@label}}}%
+ \glsxtrifhasfield{explsuffix}{#2}%
+ {%
+ \let\explsuffix\glscurrentfieldvalue
+ \let\explTFsuffix\relax
+ \let\TFsyntax\relax
+ \par\texttt{\glsentryname{#2}%
+ \syntax{#2}}%
+ }%
+ {}%
\glsxtrifhasfield*{note}{#2}%
{%
\ifx\cmdnotefmt\@gobble
@@ -1898,6 +2394,29 @@ halign upper=flush left,halign lower=justify,
}%
}
+\newcommand{\gathervariants}[1]{%
+ \protected@edef\nlctcmddeflabel{#1}%
+ \def\nlctvarianttag{}%
+ \def\nlctvariantlist{}%
+ \def\nlctvariantglslist{}%
+ \glsxtrforcsvfield*{#1}{variants}{\cmddefvarianthandler}%
+}
+
+\newcommand{\cmddefvarianthandler}[1]{%
+ \ifglsentryexists{\nlctcmddeflabel:#1}%
+ {%
+ \ifdefempty\nlctvariantglslist
+ {\eappto\nlctvariantglslist{\nlctcmddeflabel#1}}%
+ {\eappto\nlctvariantglslist{,\nlctcmddeflabel#1}}%
+ }%
+ {%
+ \ifdefempty\nlctvariantlist
+ {\def\nlctvarianttag{variant}}%
+ {\def\nlctvarianttag{variants}\appto\nlctvariantlist{ }}%
+ \eappto\nlctvariantlist{\noexpand\code{#1}}%
+ }%
+}
+
\newrobustcmd*{\envdef}{\@ifstar\s@envdef\@envdef}
\newcommand*{\@envdef}[2][]{%
\pdfbookmark[\cmddefbookmarklevel]{\glsentryname{env.#2}}{env.#2}%
@@ -2041,26 +2560,44 @@ halign upper=flush left,halign lower=justify,
\noindent\ignorespaces
}
-\newcommand*{\defaultoptdefbookmarklevel}{\number\numexpr\currentcounterlevel+1 }
+\ExplSyntaxOn
+\newcommand*{\defaultoptdefbookmarklevel}{ \int_eval:n { \currentcounterlevel + \c_one_int } }
+\ExplSyntaxOff
\newcommand*{\optdefbookmarklevel}{\defaultoptdefbookmarklevel}
\newrobustcmd*{\optiondef}{\@ifstar\s@optiondef\@optiondef}
-\newcommand*{\@optiondef}[1]{%
- \glsifcategory{opt.#1}{commandoption}%
+\NewDocumentCommand{\@optiondef}{ t+ o m }{%
+ \IfBooleanTF{#1}%
{%
- \edef\optdefbookmarklevel{\number\numexpr\cmddefbookmarklevel+1 }%
+ \edef\optdefbookmarklevel{\defaultoptdefbookmarklevel}%
}%
{%
- \edef\optdefbookmarklevel{\defaultoptdefbookmarklevel}%
+ \IfValueTF{#2}%
+ {%
+ \edef\optdefbookmarklevel{\number#2}%
+ }%
+ {%
+ \glsifcategory{opt.#3}{commandoption}%
+ {%
+ \edef\optdefbookmarklevel{\number\numexpr\cmddefbookmarklevel+1 }%
+ }%
+ {%
+ \edef\optdefbookmarklevel{\defaultoptdefbookmarklevel}%
+ }%
+ }%
}%
- \pdfbookmark[\optdefbookmarklevel]{\glsentryname{opt.#1}}{optdef.#1}%
- \nopagebreak\s@optiondef{#1}%
+ \pdfbookmark[\optdefbookmarklevel]{\glsentryname{opt.#3}}{optdef.#3}%
+ \nopagebreak\s@optiondef{#3}%
}
\newcommand{\optnotefmt}[1]{#1}
+\newcommand{\optiondefhook}{}% v1.11
+
\newcommand*{\s@optiondef}[1]{%
+ \bgroup
+ \optiondefhook
\getinitordefval{opt.#1}%
\def\postnote{}%
\ifnotdefaultstatus{opt.#1}%
@@ -2073,7 +2610,7 @@ halign upper=flush left,halign lower=justify,
\def\optfmt##1{\textbf{\texttt{##1}}}%
\mainglsadd{opt.#1}{optdef}\glsxtrglossentry{opt.#1}%
\glsxtrifhasfield{syntax}{opt.#1}{\texttt{=\glscurrentfieldvalue}}{}%
- \ifdefempty\initordefval{}{\hfill\initordefval}%
+ \ifdefempty\initordefval{}{\summarytagfill\initordefval}%
\glsxtrifhasfield*{note}{opt.#1}%
{%
\ifx\optnotefmt\@gobble
@@ -2086,6 +2623,7 @@ halign upper=flush left,halign lower=justify,
{\ifdefempty\postnote{}{\preto\postnote{\hfill}}}%
\postnote
\end{settingsbox}%
+ \egroup
\noindent\ignorespaces
}
@@ -2214,7 +2752,7 @@ halign upper=flush left,halign lower=justify,
\par\medskip\ignorespaces
}
-\newrobustcmd*{\summarytagfmt}[1]{\textnormal{\em #1:} }
+\newrobustcmd*{\summarytagfmt}[1]{\textnormal{\em #1:}~}
\newcommand*{\getinitordefval}[1]{%
\let\currentsyntax\@empty
@@ -2314,6 +2852,9 @@ halign upper=flush left,halign lower=justify,
\newcommand{\glsbibwritefield}[2]{,^^J#1={\detokenize{#2}}}
\glsaddstoragekey{modifiers}{}{\modifiers}
+\glsaddstoragekey{variants}{}{\variants}
+\glsaddstoragekey{base}{}{\fnbase}
+\glsaddstoragekey{explsuffix}{}{\explsuffixfield}
\glsaddstoragekey{syntax}{}{\syntax}
\glsaddstoragekey{defaultvalue}{}{\optdefval}
\glsaddstoragekey{initvalue}{}{\optinitval}
@@ -2321,6 +2862,7 @@ halign upper=flush left,halign lower=justify,
\glsaddstoragekey{note}{}{\note}
\glsaddstoragekey{providedby}{}{\providedbyinfo}
\glsaddstoragekey{pdftitlecasename}{}{\pdftitlecasename}
+\glsaddstoragekey{extra}{}{\glsextra}
\glsaddstoragekey{defaultkeys}{}{\defaultkeys}
@@ -2332,6 +2874,12 @@ halign upper=flush left,halign lower=justify,
\newcommand{\conditionsyntax}{ \meta{true}\csfmt{else} \meta{false}\csfmt{fi}}
+\newrobustcmd{\@explboolsyntaxfmt}[1]{\underline{\emph{#1}}}
+
+\newcommand{\explsuffix}{}
+\newcommand{\explTFsuffix}{TF}
+\newcommand{\TFsyntax}{\margm{true} \margm{false}}
+
\newrobustcmd{\initvalnotefmt}[1]{\textrm{\em #1}}
\newcommand{\nlctuserguidebibextrapreamble}{}
@@ -2349,6 +2897,7 @@ halign upper=flush left,halign lower=justify,
\def\name{\glsbibwritefield{name}}%
\def\desc{\glsbibwritefield{description}}%
\def\defval{\glsbibwritefield{defaultvalue}}%
+ \def\defvalempty{\glsbibwritefield{defaultvalue}{\initvalnotefmt{empty}}}%
\def\initval{\glsbibwritefield{initvalue}}%
\def\initvalvaries{\glsbibwritefield{initvalue}{\initvalnotefmt{varies}}}%
\def\initvalempty{\glsbibwritefield{initvalue}{\initvalnotefmt{empty}}}%
@@ -2366,7 +2915,11 @@ halign upper=flush left,halign lower=justify,
\def\gfilemetameta##1##2##3##4##5##6{\glsbibwriteentry{file}{file.##1##2##3##4##5}{\field{name}{\metametafilefmt{##1}{##2}{##3}{##4}{##5}}##6}}%
\def\gext##1##2{\glsbibwriteentry{fileformat}{ext.##1}{\field{parent}{fileformat}\field{name}{\extfmt{##1}}##2}}%
\def\gcmd##1##2{\glsbibwriteentry{command}{##1}{\field{name}{\csfmt{##1}}##2}}%
+ \def\gcmdpunc##1##2##3{\glsbibwriteentry{command}{##1}{\field{name}{\cspuncfmt{##2}}##3}}%
\def\gcond##1##2{\glsbibwriteentry{command}{##1}{\field{name}{\csfmt{##1}}\syntax{\conditionsyntax}##2}}%
+ \def\gexplcond##1##2##3{\glsbibwriteentry{command}{##1:##2}{\field{name}{\csfmt{##1\explsuffix:##2\explTFsuffix}}##3}}%
+ \def\gexplpred##1##2##3{\glsbibwriteentry{command}{##1:##2}{\field{name}{\csfmt{##1\explsuffix:##2\explTFsuffix}}\field{explsuffix}{\dsb p}##3}}%
+ \def\gfn##1##2##3##4{\glsbibwriteentry{command}{##1}{\field{name}{\csfmt{##1:##2}}\field{variants}{##3}\field{base}{##1}##4}}%
\def\gcmdmeta##1##2##3##4{\glsbibwriteentry{command}{##1##2##3}{\field{name}{\csmetafmt{##1}{##2}{##3}}##4}}%
\def\gcmdmetameta##1##2##3##4##5##6{\glsbibwriteentry{command}{##1##2##3##4##5}{\field{name}{\csmetametafmt{##1}{##2}{##3}{##4}{##5}}##6}}%
\def\gmod##1##2{\glsbibwriteentry{punctuation}{idx.mod.##1}{##2}}%
@@ -2406,6 +2959,7 @@ halign upper=flush left,halign lower=justify,
\immediate\openout\nlctuserguidebib=\jobname-gls.bib\relax
\immediate\write\nlctuserguidebib{\glspercentchar\space Encoding: UTF-8}
\immediate\write\nlctuserguidebib{@preamble{"\string\providecommand*{\string\csfmt}[1]{\string\glsbackslash\string\glsbackslash\glshashchar1}^^J
+ \string\providecommand*{\string\cspuncfmt}[1]{\string\glsbackslash\glshashchar1}^^J
\string\providecommand{\string\dhyphen}{-}^^J
\string\providecommand{\string\longargfmt}{--}^^J
\string\providecommand{\string\shortargfmt}{-}^^J
@@ -2480,6 +3034,8 @@ halign upper=flush left,halign lower=justify,
\newcommand{\nlctuserguideletterrules}{\glsxtrGeneralLatinIrules}
\newcommand{\nlctuserguideextrarules}{\string< \glsxtrMathItalicGreekIrules}
+\renewcommand*{\glsxtrresourceinit}{\GlsXtrResourceInitEscSequences}
+
\newcommand{\nlctuserguideloadgls}[1]{%
\GlsXtrLoadResources[src=\jobname-gls,
break-at-not-match={original entrytype=(switchpunctuation|punctuation|command)},
@@ -2518,10 +3074,13 @@ halign upper=flush left,halign lower=justify,
icon=symbol,
\nlctuserguidecustomentryaliases
},
- replicate-fields={name=pdftitlecasename},
- replicate-missing-field-action={fallback},
- interpret-fields={pdftitlecasename},
- field-case-change={pdftitlecasename=title},
+ assign-fields=
+ {
+ sort = name + "¯" + extra ,
+ pdftitlecasename = \INTERPRET { \FIRSTUC { name } }
+ [ entrytype->original =/term|index/ ] ,
+ pdftitlecasename = name
+ },
category={same as original entry},
dual-category={same as primary},
combine-dual-locations={primary},
@@ -2537,6 +3096,8 @@ halign upper=flush left,halign lower=justify,
save-child-count,save-root-ancestor,
symbol-sort-fallback=name,
not-match={original entrytype=(icon|nonindexed)},
+ labelify-replace={{\string\\-}{}},
+ labelify={alias},
#1
]%
\GlsXtrLoadResources[src=\jobname-gls,
@@ -2724,27 +3285,48 @@ halign upper=flush left,halign lower=justify,
\gathermodifiers{#1}%
\ifdefempty\nlctmodifierlist{}
{%
- \hfill\summarytagfmt{\nlctmodifiertag}\nlctmodifierlist
+ \summarytagfill\summarytagfmt{\nlctmodifiertag}\nlctmodifierlist
\gdef\summaryentry@post@fill{\quad }%
}%
}
\newcommand{\summaryentrycommand}[1]{%
+ \bgroup
+ \def\explTFsuffix{\@explboolsyntaxfmt{TF}}%
\textbf{\linkedentryname{#1}}%
\syntax{#1}%
\glsxtrifhasfield{initvalue}{#1}%
{%
- \hfill\summarytagfmt{initial}\glscurrentfieldvalue
+ \summarytagfill\summarytagfmt{initial}\glscurrentfieldvalue
\gdef\summaryentry@post@fill{\quad }%
}%
{%
\gathermodifiers{#1}%
- \ifdefempty\nlctmodifierlist{}%
+ \ifdefempty\nlctmodifierlist
+ {%
+ \gathervariants{#1}%
+ \ifdefempty\nlctvariantlist
+ {}%
+ {%
+ \summarytagfill\summarytagfmt{\nlctvarianttag}\nlctvariantlist
+ \gdef\summaryentry@post@fill{\quad }%
+ }%
+ }%
{%
- \hfill\summarytagfmt{\nlctmodifiertag}\nlctmodifierlist
+ \summarytagfill\summarytagfmt{\nlctmodifiertag}\nlctmodifierlist
\gdef\summaryentry@post@fill{\quad }%
}%
}%
+ \glsxtrifhasfield{explsuffix}{#1}%
+ {%
+ \let\explsuffix\glscurrentfieldvalue
+ \let\explTFsuffix\relax
+ \let\TFsyntax\relax
+ \par\glossentryname{#1}%
+ \syntax{#1}%
+ }%
+ {}%
+ \egroup
}
\newcommand{\summaryentrypackageoption}{\summaryentryoption}
@@ -2757,7 +3339,7 @@ halign upper=flush left,halign lower=justify,
\def\optiontag{#1}%
\textbf{\linkedentryname{#2}}%
\ifdefempty\currentsyntax{}{\dequals\currentsyntax}%
- \hfill
+ \summarytagfill
\textrm{\ifdefempty\initordefval{}{\initordefval}%
\ifdefempty\optiontag{}{ \optiontag}}%
\gdef\summaryentry@post@fill{ }%
@@ -2768,7 +3350,7 @@ halign upper=flush left,halign lower=justify,
\getinitordefval{#1}%
\textbf{\linkedentryname{#1}}%
\ifdefempty\currentsyntax{}{\dequals\currentsyntax}%
- \hfill
+ \summarytagfill
\textrm{\ifdefempty\initordefval{}{\initordefval}%
\ifdefempty\settingstitle{}{ \settingstitle}}%
\gdef\summaryentry@post@fill{ }%
@@ -2803,7 +3385,8 @@ halign upper=flush left,halign lower=justify,
\newglossarystyle{summary}
{%
\renewenvironment{theglossary}%
- {\setlength{\parindent}{0pt}%
+ {%
+ \setlength{\parindent}{0pt}%
\setlength{\parskip}{0pt plus 0.3pt}%
\raggedbottom
\def\entryskip{\def\entryskip{\summaryentryskip}}%
@@ -2950,7 +3533,7 @@ halign upper=flush left,halign lower=justify,
\syntax{##2}%
}%
}%
- \ifstrempty{##3}{}{\marginpar{\summaryloc{##3}}}%
+ \ifstrempty{##3}{}{\summarymarginpar{\summaryloc{##3}}}%
\do@alias
{%
\summaryentry@post@fill
@@ -3143,7 +3726,9 @@ halign upper=flush left,halign lower=justify,
\preto\glossarypreamble{\glsadd[format=summarylocfmt]{#2}\createtarget{#2}{\strut}}%
\ifglshasdesc{#2}%
{%
- \appto\glossarypreamble{\glossentrydesc{#2}\glspostdescription
+ \appto\glossarypreamble{%
+ \def\glscurrententrylabel{#2}%
+ \glossentrydesc{#2}\glspostdescription
\glspar\medskip\glspar}%
}{}%
\renewcommand{\GlsXtrLocationField}{primarylocations}%
@@ -3165,18 +3750,43 @@ halign upper=flush left,halign lower=justify,
}%
}
+\ExplSyntaxOn
+\cs_if_exist:NT \glsxtrbookindexsubsubitem
+{
+ \renewcommand{\glsxtrbookindexsubsubitem}[1]{
+ \glstreeitem \hspace* { \dim_eval:n { #10 pt + 10pt } }
+ }
+}
+\ExplSyntaxOff
+
+% v1.11:
+\newcommand{\nlctindexfirstmark}{}
+\newcommand{\nlctindexlastmark}{}
+\newcommand\nlctprebookindex{}
+\newcommand\nlctindexmarkfmt[1]{{\small#1}}
+
\newcommand*{\printuserguideindex}[1][]{%
\printunsrtglossary*[label=index,type=index,target=false,title=\indexname,style=bookindex,#1]%
{%
- \let\glsextrapostnamehook\statushook
+ \renewcommand{\nlctindexfirstmark}{%
+ \nlctindexmarkfmt\glsxtrbookindexfirstmark}%
+ \renewcommand{\nlctindexlastmark}{%
+ \nlctindexmarkfmt\glsxtrbookindexlastmark}%
+ \renewcommand\glsextrapostnamehook[1]{%
+ \statushook{##1}%
+ \glsxtrifhasfield{extra}{##1}{ (\glscurrentfieldvalue)}{}%
+ }%
\renewcommand*{\glsxtrbookindexprelocation}[1]{%
\glsxtrifhasfield{location}{##1}%
{\,\textcolor{lightgray}{\dotfill}\,}%
{}%
}%
- \let\printunsrtglossaryentryprocesshook\filteremptylocation
- \let\glsxtrbookindexname\linkedentryname
+ \renewcommand*\glsxtrbookindexname[1]{%
+ \linkedentryname{##1}\nlctpostindexname{##1}}%
+ \renewcommand*{\glsxtrbookindexsubname}[1]{\linkedentryname{##1}}%
+ \let\printunsrtglossaryentryprocesshook\filteremptylocation
\def\printunsrtglossarypredoglossary{%
+ \nlctprebookindex
\ifnum\totalindexitems<21\relax
\renewcommand*{\glsxtrbookindexmulticolsenv}{multicols*}%
\fi}%
diff --git a/Master/texmf-dist/tex/latex/nodepthtext/nodepthtext.sty b/Master/texmf-dist/tex/latex/nodepthtext/nodepthtext.sty
new file mode 100644
index 00000000000..83db274eb61
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/nodepthtext/nodepthtext.sty
@@ -0,0 +1,42 @@
+% Author : C. Pierquet
+% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{nodepthtext}[2024/11/11 0.1.0 Raise small texts for "no depth" letters]
+
+%====HISTORIQUE
+% v 0.1.0 Initial version
+
+%====BASE
+\RequirePackage{xstring}
+\RequirePackage{calc}
+\RequirePackage{graphicx}
+
+%====DIMs & Useful
+\newlength\depthletter
+\newlength\depthsampleletter
+\newcount\cptraiseletter
+\def\sampleslettersnodepth{azertuiosdhklmwxcvbnAZERTYUIOPSDFGHJKLMWXCVBN}
+
+%====INT MACRO
+\NewDocumentCommand\raiseletter{ O{0.8} m m }{%
+ \settodepth{\depthletter}{\hbox{#3}}%
+ \ifdim\depthletter>#2%
+ \raisebox{\dimexpr#1\depthletter-#2\relax}{\resizebox{\width}{#1\height}{#3}}%
+ \else%
+ {#3}%
+ \fi%
+}
+
+%====MAIN MACRO
+\NewDocumentCommand\nodepth{ O{0.8} m }{%
+ \settodepth{\depthsampleletter}{\hbox{\sampleslettersnodepth}}%
+ \StrLen{#2}[\tmplenword]%
+ \cptraiseletter0%
+ \loop\ifnum\cptraiseletter<\tmplenword%
+ \advance\cptraiseletter by 1%
+ \raiseletter[#1]{\depthsampleletter}{\StrChar{#2}{\the\cptraiseletter}}%
+ \repeat%
+}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/notebeamer/notebeamer.sty b/Master/texmf-dist/tex/latex/notebeamer/notebeamer.sty
index 86189cb5138..a2e941785ae 100644
--- a/Master/texmf-dist/tex/latex/notebeamer/notebeamer.sty
+++ b/Master/texmf-dist/tex/latex/notebeamer/notebeamer.sty
@@ -1,5 +1,5 @@
%% ***********************************************************
-%% Copyright 2024 by Mingyu Hsia <xiamyphys@hdu.edu.cn> *
+%% Copyright 2024 by M.Y. XIA <xiamyphys@gmail.com> *
%% *
%% This work may be distributed and/or modified under *
%% the conditions of the LaTeX Project Public License *
@@ -11,150 +11,193 @@
%% *
%% This work has the LPPL maintenance status `maintained'. *
%% *
-%% The Current Maintainer of this work is Mingyu Hsia. *
+%% The Current Maintainers of this work is M.Y. XIA *
%% *
%% This work consists of the files notebeamer.sty, *
%% and README.md. *
%% available at https://github.com/xiamyphys/notebeamer *
-%% Thanks `wipet' (https://petr.olsak.net/) provides *
-%% Beamers automatically inserts module *
%% ***********************************************************
-% !Mode:: "TeX:UTF-8"
-\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesPackage{notebeamer}[2024/05/06 v3.0b Package provides macros for inputting slides on note papers quickly.]
-\RequirePackage{xkeyval}
+\RequirePackage{xparse}% For TeX Live 2019 - 2020 Compatibility
+\ProvidesExplPackage{notebeamer}{2024/10/15}{4.0A}
+ {Package provides macros for inputting slides on note papers quickly.}
-\DeclareOptionX{notelinecolor}{\gdef\@notelinecolor{#1}}
-\ExecuteOptionsX{notelinecolor=darkgray}
-\DeclareOptionX{notemargin}{\gdef\@notemargin{#1}}
-\ExecuteOptionsX{notemargin=.75in}
+\RequirePackage{l3graphics,tikz,tikzpagenodes}
-\DeclareOptionX*{\PackageWarning{notebeamer}{`\CurrentOption' ignored}}
-\ProcessOptionsX\relax
+\cs_new:Nn \int_div_roundup:nn { \fp_eval:n { ceil(#1/#2,0) } }
-\RequirePackage{geometry,calc,tikz}
-\newgeometry{margin=\@notemargin}
-\tikzset{every picture/.append style={%
- line join=round,line cap=round,thick}}
-\usetikzlibrary{calc}
+\seq_new:N \l__notebeamer_tmpa_seq
+\seq_new:N \l__notebeamer_tmpb_seq
+\clist_new:N \l__notebeamer_tmpa_clist
+\cs_set_nopar:Npn \notebeamer_range_to_list:nN #1#2
+ {
+ \clist_clear:N #2
+ \seq_set_split:Nnn \l__notebeamer_tmpa_seq { , } {#1}
+ \seq_map_inline:Nn \l__notebeamer_tmpa_seq
+ {
+ \tl_if_in:nnTF {##1}{ - }
+ {
+ \seq_set_split:Nnn \l__notebeamer_tmpb_seq { - } { ##1 }
+ \int_step_inline:nnn
+ { \seq_item:Nn \l__notebeamer_tmpb_seq { 1 } }
+ { \seq_item:Nn \l__notebeamer_tmpb_seq { 2 } }
+ { \clist_put_right:Nn #2 {####1} }
+ }
+ { \clist_put_right:Nn #2 {##1} }
+ }
+ }
-\newcounter{note}
-\NewDocumentCommand\notechap{o m}{
- \gdef\@notechap{#1}
- \gdef\@beamer{#2}
- \setcounter{note}{0}}
+\keys_define:nn { notebeamer / includebeamer }
+ {
+ pages .tl_set:N = \l__includebeamer_pages_tl,
+ pages .initial:n = 1,
+ nup .int_set:N = \l__includebeamer_nup_int,
+ nup .initial:n = 3,
+ lines .int_set:N = \l__includebeamer_lines_int,
+ color .tl_set:N = \l__includebeamer_color_tl,
+ color .initial:n = black,
+ ratio .fp_set:N = \l__includebeamer_ratio_fp,
+ ratio .initial:n = .48,
+ sep .dim_set:N = \l__includebeamer_sep_dim,
+ sep .initial:n = 2ex,
+ lefthead .tl_set:N = \l__includebeamer_lefthead_tl,
+ righthead .tl_set:N = \l__includebeamer_righthead_tl,
+ }
-\newlength\hnotemargin\newlength\vnotemargin
-\setlength\hnotemargin{(\paperwidth-\textwidth)/3}
-\setlength\vnotemargin{(2\paperheight-2\textheight)/5}
-\newlength\notewidth\newlength\noteheight
-\setlength\notewidth{\paperwidth-2\hnotemargin}
-\setlength\noteheight{\paperheight-2\vnotemargin}
-\newlength\notelinespace
+\int_new:N \l__notebeamer_pages_total_int
+\int_new:N \l__notebeamer_pages_residue_int
+\cs_new_protected_nopar:Npn \__notebeamer_empty_note_aux:
+ {
+ \tikz [ remember~picture, overlay ]
+ {
+ \draw [ very~thick, \l__includebeamer_color_tl!80 ]
+ (current~page~text~area.north~west) --
+ (current~page~text~area.north~east)
+ node [ at~start, above~right, font = \sffamily\Large\bfseries ]
+ { \l__includebeamer_lefthead_tl }
+ node [ above~left, font = \sffamily\Large\bfseries ]
+ { \l__includebeamer_righthead_tl };
+ \draw [ very~thick, \l__includebeamer_color_tl!80 ]
+ (current~page~text~area.south~west) --
+ (current~page~text~area.south~east);
+ \int_step_inline:nn { \l__includebeamer_lines_int - 1 }
+ {
+ \draw [ thick, \l__includebeamer_color_tl!60 ]
+ ([shift =
+ {(
+ \fp_use:N \l__includebeamer_ratio_fp \textwidth,
+ -\textheight/\l__includebeamer_lines_int * ##1
+ )}
+ ]current~page~text~area.north~west) --++
+ (\fp_eval:n { 1 - \l__includebeamer_ratio_fp } \textwidth,0);
+ }
+ }
+ \pagestyle{empty}
+ }
-\def\notelinenum#1{%
- \gdef\@notelinenum{#1}
- \setlength\notelinespace{\noteheight/#1}}
-\ifcsname @notelinenum\endcsname
-\else
- \gdef\@notelinenum{27}
- \setlength\notelinespace{\noteheight/27}
-\fi
-\def\notecolumnratio#1{\gdef\@notecolumnratio{#1}}
-\ifcsname @notecolumnratio\endcsname
-\else
- \gdef\@notecolumnratio{.5}
-\fi
-
-\newif\ifhidenoteline
-
-\def\@onepaper#1{
- \refstepcounter{note}\addtocounter{note}{-1}
- \clearpage\thispagestyle{empty}
- \begin{tikzpicture}[remember picture,overlay]
- %%%%%% notepage lines
- \draw [\@notelinecolor,opacity=.8,very thick] ($(current page.north west)+(\hnotemargin,-\vnotemargin)$) --++ (\notewidth,0) node [above right,at start,yshift=1ex] {\large\bfseries\sffamily\ifcsname @notechap\endcsname\@notechap\fi} node [above left,yshift=1ex] {\large\bfseries\sffamily Page \thepage\quad}; % 顶部粗线
- \draw [\@notelinecolor,opacity=.8,thick] ($(current page.south west)+(\hnotemargin,\vnotemargin)$) --++ (\notewidth,0); % 底部粗线
- \ifhidenoteline\else
- \foreach \a in {2,...,\@notelinenum}
- \draw [\@notelinecolor,opacity=.4,thick] ($(current page.south west)+(\hnotemargin,{\vnotemargin+(\a-1)*\notelinespace})$) --++ (\notewidth,0); % 横线
- \fi
- %%%%%% imput file
- \node [below,yshift=\thenote*\noteheight-1ex,inner sep=0pt] at ($(current page.north west)+(\hnotemargin+.5*\@notecolumnratio*\notewidth,-\vnotemargin)$) {\ifcsname @notechap\endcsname\includegraphics[width=\dimeval{\@notecolumnratio\notewidth},page=#1]{\@beamer}\fi};
- \end{tikzpicture}
-}
-
-\def\@threebeamer#1#2#3{
- \refstepcounter{note}\addtocounter{note}{-1}
- \clearpage\thispagestyle{empty}
- \begin{tikzpicture}[remember picture,overlay]
- %%%%%% notepage lines
- \draw [\@notelinecolor,opacity=.8,very thick] ($(current page.north west)+(\hnotemargin,-\vnotemargin)$) --++ (\notewidth,0) node [above right,at start,yshift=1ex] {\large\bfseries\sffamily\ifcsname @notechap\endcsname\@notechap\fi} node [above left,yshift=1ex] {\large\bfseries\sffamily Page \thepage\quad}; % 顶部粗线
- \draw [\@notelinecolor,opacity=.8,thick] ($(current page.south west)+(\hnotemargin,\vnotemargin)$) --++ (\notewidth,0); % 底部粗线
- \ifhidenoteline\else
- \foreach \a in {2,...,\@notelinenum}
- \draw [\@notelinecolor,opacity=.4,thick] ($(current page.south west)+(\hnotemargin+\@notecolumnratio*\notewidth+1ex,{\vnotemargin+(\a-1)*\notelinespace})$) --++ ({(1-\@notecolumnratio)*\notewidth-1ex},0); % 横线
- \fi
- \draw [\@notelinecolor!80,opacity=.5,very thick] ($(current page.south west)+(\hnotemargin+\@notecolumnratio*\notewidth,\vnotemargin+1ex)$) --++ (0,\noteheight-2ex); % 分栏线
- %%%%%% imput file
- \foreach \n in {#1,#2,#3}
- \node [yshift=(2*#1-2*\n-1)*\noteheight/6+\thenote*\noteheight,inner sep=0pt] at ($(current page.north west)+(\hnotemargin+.5*\@notecolumnratio*\notewidth,-\vnotemargin)$) {\ifcsname @notechap\endcsname\includegraphics[height=\dimeval{\noteheight/3-2ex},page=\n]{\@beamer}\fi};
- \end{tikzpicture}
-}
-
-\def\@fourbeamer#1#2#3#4{
- \refstepcounter{note}\addtocounter{note}{-1}
- \clearpage\thispagestyle{empty}
- \begin{tikzpicture}[remember picture,overlay]
- \draw [\@notelinecolor,opacity=.8,very thick] ($(current page.north west)+(\hnotemargin,-\vnotemargin)$) --++ (\notewidth,0) node [above right,at start,yshift=1ex] {\large\bfseries\sffamily\ifcsname @notechap\endcsname\@notechap\fi} node [above left,yshift=1ex] {\large\bfseries\sffamily Page \thepage\quad}; % 顶部粗线
- \draw [\@notelinecolor,opacity=.8,thick] ($(current page.south west)+(\hnotemargin,\vnotemargin)$) --++ (\notewidth,0); % 底部粗线
- \ifhidenoteline\else
- \foreach \a in {2,...,\@notelinenum}
- \draw [opacity=.5,\@notelinecolor,opacity=.4,thick] ($(current page.south west)+(\hnotemargin+\@notecolumnratio*\notewidth+1ex,{\vnotemargin+(\a-1)*\notelinespace})$) --++ ({(1-\@notecolumnratio)*\notewidth-1ex},0); % 横线
- \fi
- \draw [\@notelinecolor,opacity=.5,very thick] ($(current page.south west)+(\hnotemargin+\@notecolumnratio*\notewidth,\vnotemargin+1ex)$) --++ (0,\noteheight-2ex); % 分栏线
- %%%%%% imput file
- \foreach \n in {#1,#2,#3,#4}
- \node [yshift=(2*#1-2*\n-1)*\noteheight/8+\thenote*\noteheight,inner sep=0pt] at ($(current page.north west)+(\hnotemargin+.5*\@notecolumnratio*\notewidth,-\vnotemargin)$) {\ifcsname @notechap\endcsname\includegraphics[height=\dimeval{\noteheight/4-2ex},page=\n]{\@beamer}\fi};
- \end{tikzpicture}
-}
-
-\ExplSyntaxOn\cs_new_eq:NN \Repeat \prg_replicate:nn\ExplSyntaxOff
-\NewDocumentCommand\newnotepage{s O{1}}{\Repeat{#2}{
- \refstepcounter{note}
- \clearpage\thispagestyle{empty}
- \begin{tikzpicture}[remember picture,overlay]
- \draw [\@notelinecolor,opacity=.8,very thick] ($(current page.north west)+(\hnotemargin,-\vnotemargin)$) --++ (\notewidth,0) node [above right,at start,yshift=1ex] {\large\bfseries\sffamily\ifcsname @notechap\endcsname\@notechap\fi} node [above left,yshift=1ex] {\large\bfseries\sffamily Page \thepage\quad}; % 顶部粗线
- \draw [\@notelinecolor,opacity=.8,thick] ($(current page.south west)+(\hnotemargin,\vnotemargin)$) --++ (\notewidth,0); % 底部粗线
- \ifhidenoteline\else
- \foreach \a in {2,...,\@notelinenum}
- \draw [\@notelinecolor,opacity=.4,thick] ($(current page.south west)+(\hnotemargin,{\vnotemargin+(\a-1)*\notelinespace})$) --++ (\notewidth,0); % 横线
- \fi
- \IfBooleanF{#1}{% 分栏线
- \draw [\@notelinecolor,opacity=.5,very thick] ($(current page.south west)+(\hnotemargin+\@notecolumnratio*\notewidth,\vnotemargin+1ex)$) --++ (0,\noteheight-2ex);}
-\end{tikzpicture}}
+\cs_new_protected_nopar:Npn \__notebeamer_includebeamer_aux:n #1
+ {
+ \graphics_get_pagecount:nN {#1} \l__includebeamer_filepages_int
+ \tl_if_eq:NnTF \l__includebeamer_pages_tl { - }
+ {
+ \notebeamer_range_to_list:nN
+ { 1 - \l__includebeamer_filepages_int } \l__notebeamer_tmpa_clist
+ }
+ {
+ \exp_args:NV
+ \notebeamer_range_to_list:nN
+ \l__includebeamer_pages_tl \l__notebeamer_tmpa_clist
+ }
+ \int_set:Nn \l__notebeamer_pages_total_int
+ {
+ \int_div_roundup:nn { \clist_count:N \l__notebeamer_tmpa_clist }
+ { \l__includebeamer_nup_int } - 1
+ }
+ \int_set:Nn \l__notebeamer_pages_residue_int
+ {
+ \int_eval:n
+ {
+ \clist_count:N \l__notebeamer_tmpa_clist -
+ \l__includebeamer_nup_int * \l__notebeamer_pages_total_int
+ }
+ }
+ \int_step_inline:nn { \int_use:N \l__notebeamer_pages_total_int }
+ {
+ \clearpage
+ \__notebeamer_empty_note_aux:
+ \int_step_inline:nn { \l__includebeamer_nup_int }
+ {
+ \tikz [ remember~picture, overlay ]
+ {
+ \node
+ [
+ yshift = - ( ####1 - 1 ) *
+ \textheight/\l__includebeamer_nup_int
+ ] at
+ ([shift =
+ {(
+ \fp_use:N \l__includebeamer_ratio_fp \textwidth/2,
+ -\textheight/\l__includebeamer_nup_int/2
+ )}
+ ]current~page~text~area.north~west)
+ {
+ \includegraphics
+ [
+ height =
+ \dim_eval:n
+ {
+ \textheight/\l__includebeamer_nup_int -
+ \l__includebeamer_sep_dim
+ },
+ page =
+ \clist_item:Nn \l__notebeamer_tmpa_clist
+ { ####1 + \l__includebeamer_nup_int * ( ##1 - 1 ) }
+ ] {#1}
+ };
+ }
+ }
+ \clearpage
+ }
+ \__notebeamer_empty_note_aux:
+ \int_step_inline:nn { \int_use:N \l__notebeamer_pages_residue_int }
+ {
+ \tikz [ remember~picture, overlay ]
+ {
+ \node
+ [
+ yshift = - ( ##1 - 1 ) * \textheight/\l__includebeamer_nup_int
+ ] at
+ ([shift =
+ {(
+ \fp_use:N \l__includebeamer_ratio_fp \textwidth/2,
+ -\textheight/\l__includebeamer_nup_int/2
+ )}
+ ]current~page~text~area.north~west)
+ {
+ \includegraphics
+ [
+ height =
+ \dim_eval:n
+ {
+ \textheight/\l__includebeamer_nup_int -
+ \l__includebeamer_sep_dim
+ },
+ page =
+ \clist_item:Nn \l__notebeamer_tmpa_clist
+ {
+ \l__includebeamer_nup_int *
+ \l__notebeamer_pages_total_int + ##1
+ }
+ ] {#1}
+ };
+ }
+ }
+ \clearpage
+ }
+\NewDocumentCommand{\includebeamer}{ O{} m O{} }{
+ \group_begin:
+ \keys_set:nn { notebeamer / includebeamer } { #1 #3 }
+ \__notebeamer_includebeamer_aux:n {#2}
+ \group_end:
}
-\newcount\tmpnum
-\def\valnum#1{%
- \ifnum\maxnum>\numexpr\tmpnum+#1\relax
- \the\numexpr\tmpnum+#1\relax \else \maxnum\fi}
-\NewDocumentCommand\includebeamer{ o m m }{%
- \ifnum #1=1
- \def\maxnum{#3}\tmpnum=#2
- \loop
- \unless\ifnum\tmpnum>#3 \@onepaper{\valnum0}
- \advance\tmpnum by1
- \repeat\fi
- \ifnum #1=3
- \def\maxnum{#3}\tmpnum=#2
- \loop
- \unless\ifnum\tmpnum>#3 \@threebeamer{\valnum0}{\valnum1}{\valnum2}
- \advance\tmpnum by3
- \repeat\fi
- \ifnum #1=4
- \def\maxnum{#3}\tmpnum=#2
- \loop
- \unless\ifnum\tmpnum>#3 \@fourbeamer{\valnum0}{\valnum1}{\valnum2}{\valnum3}
- \advance\tmpnum by4
- \repeat\fi}
+% End of file notebeamer.sty
diff --git a/Master/texmf-dist/tex/latex/nstc-proposal/nstc-cm03.cls b/Master/texmf-dist/tex/latex/nstc-proposal/nstc-cm03.cls
new file mode 100644
index 00000000000..88881046c55
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/nstc-proposal/nstc-cm03.cls
@@ -0,0 +1,136 @@
+%%
+%% This is file `nstc-cm03.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% nstc-proposal.dtx (with options: `cm03')
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Liang-Ting Chen (陳亮廷).
+%%
+%% This work consists of the files nstc-proposal.dtx and nstc-proposal.ins
+%% and the derived files nstc-cm03.cls, nstc-cm302.cls,
+%% example/proposal.tex, and example/bibliography.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}[2023-11-01]
+\ProvidesClass{nstc-cm03}
+ [2024-11-04 v1.0 NSTC CM03/302 LaTeX 文件格式]
+
+\def\cmthree@opterrlong{The option "\CurrentOption" from article.cls is
+ not compatible with the format of cm03.}
+\newcommand{\cmthree@warning}{\ClassWarning{cm03}{\cmthree@opterrlong}}
+\newcommand{\cmthree@info}[1]{\ClassInfo{cm03}{#1}}
+\DeclareOption{titlepage}{\cmthree@warning}
+\DeclareOption{notitlepage}{\cmthree@warning}
+\DeclareOption{10pt}{\cmthree@warning}
+\DeclareOption{11pt}{\cmthree@warning}
+\DeclareOption{letterpaper}{\cmthree@warning}
+\DeclareOption{a5paper}{\cmthree@warning}
+\DeclareOption{b5paper}{\cmthree@warning}
+\DeclareOption{executivepaper}{\cmthree@warning}
+\DeclareOption{legalpaper}{\cmthree@warning}
+\DeclareOption{twocolumn}{\cmthree@warning}
+\DeclareOption{openright}{\cmthree@warning}
+\DeclareOption{libertine}{\let\@libertine\relax}
+\DeclareOption{kaiti}{\let\@kaiti\relax}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
+\ProcessOptions\relax
+\LoadClass[a4paper,12pt,onecolumn,twoside]{article}
+\RequirePackage[margin=2cm,bottom=2.4cm]{geometry}
+\RequirePackage{setspace}
+\onehalfspacing
+
+\RequirePackage{iftex,xifthen}
+\RequirePackage{amsmath,amsthm}
+\iftutex
+\RequirePackage[PunctStyle=plain,no-math]{xeCJK}
+\ifx\@kaiti\relax
+ \setCJKmainfont{Kaiti TC}[BoldFont = *-Bold]
+ \setCJKsansfont{Heiti TC}
+ \cmthree@info{使用楷體作為中文字型}
+\else
+\IfFontExistsTF{BiauKai}{
+ \setCJKmainfont{BiauKai}[AutoFakeBold=2.5]
+ \cmthree@info{使用標楷體 (BiauKai) 作為中文字型}
+}{
+ \IfFontExistsTF{BiauKaiTC}{
+ \setCJKmainfont{BiauKaiTC}[AutoFakeBold=2.5]
+ \cmthree@info{使用標楷體繁 (BiauKaiTC) 作為中文字型}
+}{
+ \setCJKmainfont{bkai00mp.ttf}[AutoFakeBold=2.5]
+ \cmthree@info{使用 AR PL UKai TW 作為中文字型}
+}}
+\fi
+\else
+ \RequirePackage{CJKutf8}
+ \newenvironment{zh}{\begin{CJK*}{UTF8}{bkai}}{\end{CJK*}}
+ \input{c70bkai.fd}
+ \DeclareFontShape{C70}{bkai}{b}{n}{<-> CJKb * bkaiu}{\CJKbold}
+ \AddToHook{begindocument/end}{\begin{zh}}
+ \AddToHook{enddocument}{\end{zh}}
+\fi
+\ifx\@libertine\relax
+ \RequirePackage[tt=false]{libertine}
+ \iftutex
+ \RequirePackage{unicode-math}
+ \setmathfont[Scale=MatchUppercase]{LibertinusMath-Regular.otf}
+ \else
+ \RequirePackage[libertine]{newtxmath}
+ \fi
+\else
+ \RequirePackage{newtxtext}
+ \iftutex
+ \defaultfontfeatures{}
+ \fi
+ \RequirePackage{newtxmath}
+\fi
+\RequirePackage{zhnumber,titlesec}
+\titleformat{\section}[runin]%
+ {\bfseries\normalsize}{(\zhnum{section})}{0em}{}
+\titleformat{\subsection}[runin]%
+ {\bfseries\normalsize}{\thesubsection}{0.5em}{}
+\titleformat{\subsubsection}[runin]%
+ {\bfseries\normalsize}{\thesubsubsection}{0.5em}{}
+\def\cmthree@heading{三、研究計畫內容(以中文或英文撰寫):}
+\def\cmthree@footer{表\;CM03}
+\AddToHook{begindocument/end}{\par%
+ \everypar={{\setbox0=\lastbox}\everypar{}}%
+ \begingroup\large\bfseries\cmthree@heading\endgroup\par}
+
+\RequirePackage{lastpage,fancyhdr}
+\pagestyle{fancy}
+\renewcommand{\headrulewidth}{0pt}
+\fancyhead{}
+\iftutex
+ \lfoot{\cmthree@footer}
+\else
+ \lfoot{\begin{zh}\cmthree@footer\end{zh}}
+\fi
+\cfoot{}
+\iftutex
+ \rfoot{共~\pageref{LastPage}~頁%
+ \hspace{1em}第~\thepage~頁}
+\else
+ \rfoot{\begin{zh}共~\pageref{LastPage}~頁%
+ \hspace{1em}第~\thepage~頁\end{zh}}
+\fi
+\AddToHook{begindocument/end}{\renewcommand{\refname}{參考文獻}}
+\newcommand{\zhsection}[2]{\section{#1}#2\vskip1em}
+\newcommand{\ProposalBackground}{\zhsection{研究計畫之背景}{請詳述本研究計畫所要探討或解決的問題、研究原創性、重要性、預期影響性及國內外有關本計畫之研究情況、重要參考文獻之評述等。如為連續性計畫應說明上年度研究進度。}}
+\newcommand{\ProposalMethod}{\zhsection{研究方法、進行步驟及執行進度}{請分年列述:1. 本計畫採用之研究方法與原因及其創新性。2. 預計可能遭遇之困難及解決途徑。3. 重要儀器之配合使用情形。4. 如為須赴國外或大陸地區研究,請詳述其必要性以及預期效益等。}}
+\newcommand{\ProposalPlan}{\zhsection{預期完成之工作項目及成果}{請分年列述:1. 預期完成之工作項目。2. 對於參與之工作人員,預期可獲之訓練。3. 預期完成之研究成果(如實務應用績效、期刊論文、研討會論文、專書、技術報告、專利或技術移轉等質與量之預期成果)。4. 學術研究、國家發展及其他應用方面預期之貢獻。}}
+\newcommand{\ProposalIntegration}{\zhsection{整合型研究計畫說明}{如為整合型研究計畫請就以上各點分別說明與其他子計畫之相關性。}}
+
+\endinput
+%%
+%% End of file `nstc-cm03.cls'.
diff --git a/Master/texmf-dist/tex/latex/nstc-proposal/nstc-cm302.cls b/Master/texmf-dist/tex/latex/nstc-proposal/nstc-cm302.cls
new file mode 100644
index 00000000000..eb3139d5a8a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/nstc-proposal/nstc-cm302.cls
@@ -0,0 +1,124 @@
+%%
+%% This is file `nstc-cm302.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% nstc-proposal.dtx (with options: `cm302')
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Liang-Ting Chen (陳亮廷).
+%%
+%% This work consists of the files nstc-proposal.dtx and nstc-proposal.ins
+%% and the derived files nstc-cm03.cls, nstc-cm302.cls,
+%% example/proposal.tex, and example/bibliography.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}[2023-11-01]
+\ProvidesClass{nstc-cm302}
+ [2024-11-04 v1.0 NSTC CM03/302 LaTeX 文件格式]
+
+\def\cmthree@opterrlong{The option "\CurrentOption" from article.cls is
+ not compatible with the format of cm03.}
+\newcommand{\cmthree@warning}{\ClassWarning{cm03}{\cmthree@opterrlong}}
+\newcommand{\cmthree@info}[1]{\ClassInfo{cm03}{#1}}
+\DeclareOption{titlepage}{\cmthree@warning}
+\DeclareOption{notitlepage}{\cmthree@warning}
+\DeclareOption{10pt}{\cmthree@warning}
+\DeclareOption{11pt}{\cmthree@warning}
+\DeclareOption{letterpaper}{\cmthree@warning}
+\DeclareOption{a5paper}{\cmthree@warning}
+\DeclareOption{b5paper}{\cmthree@warning}
+\DeclareOption{executivepaper}{\cmthree@warning}
+\DeclareOption{legalpaper}{\cmthree@warning}
+\DeclareOption{twocolumn}{\cmthree@warning}
+\DeclareOption{openright}{\cmthree@warning}
+\DeclareOption{libertine}{\let\@libertine\relax}
+\DeclareOption{kaiti}{\let\@kaiti\relax}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
+\ProcessOptions\relax
+\LoadClass[a4paper,12pt,onecolumn,twoside]{article}
+\RequirePackage[margin=2cm,bottom=2.4cm]{geometry}
+\RequirePackage{setspace}
+\onehalfspacing
+
+\RequirePackage{iftex,xifthen}
+\RequirePackage{amsmath,amsthm}
+\iftutex
+\RequirePackage[PunctStyle=plain,no-math]{xeCJK}
+\ifx\@kaiti\relax
+ \setCJKmainfont{Kaiti TC}[BoldFont = *-Bold]
+ \setCJKsansfont{Heiti TC}
+ \cmthree@info{使用楷體作為中文字型}
+\else
+\IfFontExistsTF{BiauKai}{
+ \setCJKmainfont{BiauKai}[AutoFakeBold=2.5]
+ \cmthree@info{使用標楷體 (BiauKai) 作為中文字型}
+}{
+ \IfFontExistsTF{BiauKaiTC}{
+ \setCJKmainfont{BiauKaiTC}[AutoFakeBold=2.5]
+ \cmthree@info{使用標楷體繁 (BiauKaiTC) 作為中文字型}
+}{
+ \setCJKmainfont{bkai00mp.ttf}[AutoFakeBold=2.5]
+ \cmthree@info{使用 AR PL UKai TW 作為中文字型}
+}}
+\fi
+\else
+ \RequirePackage{CJKutf8}
+ \newenvironment{zh}{\begin{CJK*}{UTF8}{bkai}}{\end{CJK*}}
+ \input{c70bkai.fd}
+ \DeclareFontShape{C70}{bkai}{b}{n}{<-> CJKb * bkaiu}{\CJKbold}
+ \AddToHook{begindocument/end}{\begin{zh}}
+ \AddToHook{enddocument}{\end{zh}}
+\fi
+\ifx\@libertine\relax
+ \RequirePackage[tt=false]{libertine}
+ \iftutex
+ \RequirePackage{unicode-math}
+ \setmathfont[Scale=MatchUppercase]{LibertinusMath-Regular.otf}
+ \else
+ \RequirePackage[libertine]{newtxmath}
+ \fi
+\else
+ \RequirePackage{newtxtext}
+ \iftutex
+ \defaultfontfeatures{}
+ \fi
+ \RequirePackage{newtxmath}
+\fi
+\def\cmthree@heading{五、著作目錄(建議呈現與計畫相關之著作目錄,頁數以~2~頁為限):}
+\def\cmthree@footer{表\;CM302}
+\AddToHook{begindocument/end}{\par%
+ \everypar={{\setbox0=\lastbox}\everypar{}}%
+ \begingroup\large\bfseries\cmthree@heading\endgroup\par}
+
+\RequirePackage{lastpage,fancyhdr}
+\pagestyle{fancy}
+\renewcommand{\headrulewidth}{0pt}
+\fancyhead{}
+\iftutex
+ \lfoot{\cmthree@footer}
+\else
+ \lfoot{\begin{zh}\cmthree@footer\end{zh}}
+\fi
+\cfoot{}
+\iftutex
+ \rfoot{共~\pageref{LastPage}~頁%
+ \hspace{1em}第~\thepage~頁}
+\else
+ \rfoot{\begin{zh}共~\pageref{LastPage}~頁%
+ \hspace{1em}第~\thepage~頁\end{zh}}
+\fi
+\AddToHook{begindocument/end}{\renewcommand{\section}[2]{}}
+
+\endinput
+%%
+%% End of file `nstc-cm302.cls'.
diff --git a/Master/texmf-dist/tex/latex/numbersets/numbersets.sty b/Master/texmf-dist/tex/latex/numbersets/numbersets.sty
new file mode 100644
index 00000000000..cceabf53e0d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/numbersets/numbersets.sty
@@ -0,0 +1,120 @@
+\ProvidesExplPackage{numbersets}{2024-10-15}{v0.2.0}{A package for displaying number sets with customizable typefaces}
+
+% List of properties to store style commands
+\prop_new:N \g_numbersets_styles_prop
+
+% Global default style for the package
+\cs_new:Nn \g_numbersets_default_style_tl: { bb }
+
+% Presets for typefaces
+\prop_put:Nnn \g_numbersets_styles_prop { bb } { \symbb }
+\prop_put:Nnn \g_numbersets_styles_prop { bfup } { \symbfup }
+\prop_put:Nnn \g_numbersets_styles_prop { bfit } { \symbfit }
+
+% Options for package
+\keys_define:nn { numbersets }
+{
+ style .tl_set:N = \g_numbersets_default_style_tl,
+ style .initial:n = bb,
+}
+
+\ProcessKeyOptions
+
+% Validation for property
+\cs_new_protected:Npn \numbersets_check_style:n #1
+{
+ \prop_if_in:NnTF \g_numbersets_styles_prop { #1 }
+ { }
+ {
+ \msg_error:nnn { numbersets } { unknown-style } { #1 }
+ }
+}
+
+% Error message for unknown options
+\msg_new:nnn { numbersets } { unknown-style }
+{
+ The~style~'#1'~is~not~declared.
+}
+
+% Command to declare (or overwrite) styles
+\NewDocumentCommand{\DeclareNumberSetStyle}{ m m }
+{
+ \prop_put:Nnn \g_numbersets_styles_prop { #1 } { #2 }
+}
+
+% Command for setup global option
+\NewDocumentCommand{\SetupNumberSetsOptions}{ m }
+{
+ \keys_set:nn { numbersets } { #1 }
+}
+
+% Function to apply the style command
+\cs_new_protected:Npn \numbersets_apply_style:n #1
+{
+ \prop_get:NnNTF \g_numbersets_styles_prop { #1 } \l_tmpa_tl
+ {
+ \use:n { \l_tmpa_tl }
+ }
+ {
+ \msg_error:nnn { numbersets } { unknown-style } { #1 }
+ }
+}
+
+% Store the style identifer of the \numberset command as a local variable
+\cs_new:Nn \l_numbersets_style_tl: { }
+
+% Options for the \numberset command
+\keys_define:nn { numberset }
+{
+ style .tl_set:N = \l_numbersets_style_tl,
+}
+
+% Command to display the set symbol with custom typefaces
+\NewDocumentCommand{\NumberSet}{ O{} m }
+{
+ \group_begin:
+ \keys_set:nn { numberset } { #1 }
+ \tl_if_empty:VTF \l_numbersets_style_tl
+ {
+ \tl_set_eq:NN \l_numbersets_style_tl \g_numbersets_default_style_tl
+ }
+ {}
+ \expandafter\numbersets_apply_style:n \expandafter{ \l_numbersets_style_tl }
+ { #2 }
+ \group_end:
+}
+
+% Command to declare custom commands for set composed of numbers
+\NewDocumentCommand{\DeclareNumberSetCommand}{ m m }
+{
+ \NewDocumentCommand{#1}
+ {o}
+ {
+ \IfValueTF{##1}
+ {
+ \NumberSet[##1]{#2}
+ }
+ {
+ \NumberSet{#2}
+ }
+ }
+}
+
+% Presets for some sets composed of numbers
+
+% Natural numbers
+\DeclareNumberSetCommand{\NaturalNumbers}{N}
+
+% Integers
+\DeclareNumberSetCommand{\Integers}{Z}
+
+% Rational numbers
+\DeclareNumberSetCommand{\RationalNumbers}{Q}
+
+% Real Numbers
+\DeclareNumberSetCommand{\RealNumbers}{R}
+
+% Complex Numbers
+\DeclareNumberSetCommand{\ComplexNumbers}{C}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/numerica-tables/numerica-tables.sty b/Master/texmf-dist/tex/latex/numerica-tables/numerica-tables.sty
index c1808141e4d..f3d1923c541 100644
--- a/Master/texmf-dist/tex/latex/numerica-tables/numerica-tables.sty
+++ b/Master/texmf-dist/tex/latex/numerica-tables/numerica-tables.sty
@@ -10,10 +10,10 @@
\RequirePackage{booktabs}
\ProvidesExplFile
{numerica-tables.sty}
- {2023/08/25}
- {3.1.0}
+ {2024/11/19}
+ {3.2.0}
{Create mathematical tables of function values}
-
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\msg_new:nnn {numerica-tables} {version}
{
Package~too~old!~This~version~of~numerica-tables~requires~
@@ -22,7 +22,7 @@
\msg_new:nnn {numerica-tables} {load-order}
{
Please~load~version~3.0~(or~later)~of~the~numerica~
- package~before~numerica~tables.
+ package~before~numerica-tables~version~3.2.
}
\cs_if_exist:NTF \c_nmc_version_tl
{
@@ -30,187 +30,355 @@
{ \msg_fatal:nn {numerica-tables} {version} }
}
{ \msg_fatal:nn {numerica-tables} {load-order} }
-%----------------------------------------------------------
-\cs_generate_variant:Nn \tl_if_head_eq_charcode:nNTF { V }
-\cs_generate_variant:Nn \tl_if_head_eq_charcode:nNT { V }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\AtBeginDocument
+ {
+ \cs_if_exist:NF \sfrac
+ { \NewDocumentCommand \sfrac { m m } { \scriptstyle #1 / #2 } }
+ }
+% debugging break point
+\cs_new_protected:Npn \here { \tl_show:e {here} }
+% to replace numerica.sty routine
+\cs_set_protected:Npn \__nmc_fpify_fact:
+ {
+ \__nmc_error_where:n { factorial }
+ \tl_clear:N \l_tmpa_tl
+ \tl_if_head_eq_meaning:VNTF \l__nmc_fact_arg_tl \s__fp
+ { \tl_set_eq:NN \l_tmpa_tl \l__nmc_fact_arg_tl }
+ { \__nmc_fpify:VN \l__nmc_fact_arg_tl \l_tmpa_tl }
+ \bool_if:NF \g__nmc_error_bool
+ {
+ \tl_set:Ne \l_tmpa_tl { \fp_to_int:n \l_tmpa_tl }
+ \tl_if_eq:VnTF \l__nmcC_tl { ! }
+ { \__nmc_fpify_fact_repeated: }
+ {
+ \int_compare:nNnTF { \l_tmpa_tl } < { 0 }
+ { \__nmc_error_what:n { Integer~$\ge 0$~required~in } }
+ {
+ \seq_gpop:NN \g__nmc_error_where_seq \l__nmc_toss_tl
+ \__nmc_accum_fn_parenth:NVn \l__nmc_accum_tl
+ \l_tmpa_tl { fact }
+ }
+ }
+ }
+ \bool_set_true:N \l__nmc_insert_aster_bool
+ }
+\cs_generate_variant:Nn \tl_if_eq:nnTF { v }
+\cs_generate_variant:Nn \tl_if_head_eq_charcode:nNTF { V, v }
\cs_generate_variant:Nn \seq_set_from_clist:Nn { No }
\cs_generate_variant:Nn \int_compare:nNnTF { v }
\cs_generate_variant:Nn \int_compare:nNnT { v }
\cs_generate_variant:Nn \int_case:nnTF { v }
-\cs_generate_variant:Nn \clist_pop:NN { cc }
+\cs_generate_variant:Nn \clist_pop:NN { Nc, cc }
+\cs_generate_variant:Nn \fp_add:Nn { cv }
-\cs_new_protected:Npn \__nmc_table_prepad:Nnn #1#2#3
+\tl_new:N \l__nmc_swap_tl
+\seq_new:N \l_tmpd_seq
+\clist_const:Nn \c__nmc_table_fontsize_clist
+ { \tiny,\scriptsize,\footnotesize,\small,\normalsize,
+ \large,\Large,\LARGE,\huge,\Huge }
+%
+\cs_new_protected:Npn \__nmc_table_new:n #1
+ { \clist_map_inline:nn { #1 } { \__nmc_table_new_aux:wN ##1\q_stop } }
+\cs_new_protected:Npn \__nmc_table_new_aux:wN #1_#2\q_stop
+ { \use:c { #2_new:c } { l__nmc_table_#1_#2 } }
+\__nmc_table_new:n
{
- \tl_put_left:Nx #1 { \prg_replicate:nn
- { \int_max:nn { #2 - \tl_count:N #1 } { 0 } } { #3 } }
+ rvar_tl, rvari_tl, rvari_bool, rspec_clist, rspec_bool, rdelim_tl,
+ rpos_int, rvirreg_seq, rvirreg_bool, rfunc_tl, rverb_bool, rround_int,
+ rstart_fp, rstep_tl, rstep_fp, rstop_tl, rstop_fp, rnum_int, rfrac_int,
+ rhnudge_clist, rhnudge_tl, rheadi_tl, rhnudgei_tl, ralign_tl, rhsize_tl,
+ rhead_tl, rhead_bool, rhauto_bool, rhiauto_bool, rfont_tl, rmath_tl,
+
+ cvar_tl, cstop_tl, cstop_fp, cstart_fp, cstep_tl, cstep_fp, cnum_int,
+ cspec_clist, cspec_bool, chverb_bool, chround_int, calign_tl, chfont_tl,
+ chstyle_int, chnudge_clist, chnudge_tl, chmath_clist,chmath_tl,
+ chsize_clist, chsize_tl, chead_tl, chead_seq, header_tl, footer_tl,
+ ctitle_tl, ctitle_int, csubt_tl, rules_tl, rules_int, headless_bool,
+
+ rbloc_tl, rblock_tl, rbloc_int, rbloc_clist, rblocsep_tl,
+ signs_int, tsigns_int, signs_bool, diffs_bool, diffs_tl, diffs_int,
+ Q_tl, A_tl, QA_bool, query_tl, QAmax_bool, QAmin_bool,
+
+ multifn_seq, multifn_bool, transpose_bool, totalcols_tl,
+ rvcol_seq, rvcoli_seq, fvcols_seq, thiscol_seq, rows_seq,
+ r_fp, c_fp, max_fp, min_fp, a_int, b_int, c_int,
+ store_int, numonly_tl, numonly_bool, round_bool, valign_tl
}
-\cs_new:Npn \__nmc_sci_num_table_plus:nn #1#2
- { % #1 significand, #2 exponent
- \fp_compare:nTF { #1 >= 0 }
- { ( #2 )\,{ \__nmc_sci_num_table_signs:n { #1 } } }
- { ( #2 )\,{ #1 } }
+%------------------------------------------------
+\nmc_define:NnN \nmcTabulate { table } \tabulate
+%
+\keys_define:nn { numerica-tables/package }
+ {
+ rules .tl_set:N = \l__nmc_table_rules_tl,
+ rules .initial:n = ThB,
+ norules .code:n = \tl_clear:N \l__nmc_table_rules_tl,
+ Q?* .tl_set:N = \l__nmc_table_Q_tl,
+ Q?* .initial:n = {@=MAX}
}
-\cs_new:Npn \__nmc_sci_num_table_signs:n #1
+\ProcessKeyOptions [ numerica-tables/package ]
+
+% \nmcTabulate / \__nmc_initialize:n
+\cs_gset_protected:Npn \__nmc_table_initialize:
+ {
+ \bool_set_false:N \l__nmc_allow_TF_out_bool
+ \int_set:Nn \l__nmc_table_rnum_int { -1 }
+ \int_set:Nn \l__nmc_table_cnum_int { -1 }
+ \bool_if:NF \l__nmc_num_only_bool
+ { \tl_clear:N \l__nmc_table_Q_tl }
+ }
+% \nmcTabulate / \__nmc_settings:nn
+\keys_define:nn { numerica/table }
+ {
+ rvar .tl_set:N = \l__nmc_table_rvar_tl,
+ rstop .tl_set:N = \l__nmc_table_rstop_tl,
+ rstep .tl_set:N = \l__nmc_table_rstep_tl,
+ rows .code:n = \__nmc_table_kv_rcnum:nn { #1 } { r },
+ rspec .clist_set:N = \l__nmc_table_rspec_clist,
+ rfunc .tl_set:N = \l__nmc_table_rfunc_tl,
+ rdelim .tl_set:N = \l__nmc_rdelim_tl,
+ rdelim .initial:V = \c__nmc_vv_delim_tl,
+ rdata .code:n = \__nmc_table_kv_rdata:n { #1 },
+ rfile .code:n = \__nmc_table_kv_rfile:n { #1 },
+ rverb .code:n = \__nmc_table_kv_rverb:n { #1 },
+ rround .int_set:N = \l__nmc_table_rround_int,
+ rround .initial:n = 1,
+ rfont .code:n = \tl_set:Nn \l__nmc_table_rfont_tl
+ { \use:c { math#1 } },
+ ralign .tl_set:N = \l__nmc_table_ralign_tl,
+ ralign .initial:n = r,
+ rhead .tl_set:N = \l__nmc_table_rhead_tl,
+ rhead .initial:n = `,
+ rhnudge .code:n = \tl_set:Nn \l__nmc_table_rhnudge_tl
+ { \mkern #1 mu },
+ rhnudge .initial:n = { 0 },
+ rhsize .code:n = \tl_set:Ne \l__nmc_table_rhsize_tl
+ { \clist_item:Nn \c__nmc_table_fontsize_clist { 5 + #1 } },
+ rmath .code:n = \tl_set:Ne \l__nmc_table_rmath_tl
+ { \__nmc_table_kv_mathstyle:n { #1 } },
+ rpos .int_set:N = \l__nmc_table_rpos_int,
+ rpos .initial:n = 1,
+ rvar' .code:n = \__nmc_table_kv_rvari:n { #1 },
+ rhead' .tl_set:N = \l__nmc_table_rheadi_tl,
+ rhead' .initial:n = `,
+ rhnudge' .code:n = \tl_set:Nn \l__nmc_table_rhnudgei_tl
+ { \mkern #1 mu },
+%
+ cvar .tl_set:N = \l__nmc_table_cvar_tl,
+ cstop .tl_set:N = \l__nmc_table_cstop_tl,
+ cstep .tl_set:N = \l__nmc_table_cstep_tl,
+ cols .code:n = \__nmc_table_kv_rcnum:nn { #1 } { c },
+ cspec .clist_set:N = \l__nmc_table_cspec_clist,
+ chround .int_set:N = \l__nmc_table_chround_int,
+ calign .tl_set:N = \l__nmc_table_calign_tl,
+ calign .initial:n = r,
+ chstyle .int_set:N = \l__nmc_table_chstyle_int,
+ chfont .code:n = \tl_set:Nn \l__nmc_table_chfont_tl
+ { \use:c { math#1 } },
+ chnudge .clist_set:N = \l__nmc_table_chnudge_clist,
+ chnudge .initial:n = { 0 },
+ chmath .clist_set:N = \l__nmc_table_chmath_clist,
+ chmath .initial:n = t,
+ chsize .code:n = \tl_set:Nn \l__nmc_table_chsize_tl { \normalsize }
+ \clist_set:Nn \l__nmc_table_chsize_clist { #1 },
+ chead .tl_set:N = \l__nmc_table_chead_tl,
+%
+ ctitle .tl_set:N = \l__nmc_table_ctitle_tl,
+ cmidrow .tl_set:N = \l__nmc_table_csubt_tl,
+ csubttl .tl_set:N = \l__nmc_table_csubt_tl,
+ foot .tl_set:N = \l__nmc_table_footer_tl,
+ norules .code:n = \tl_clear:N \l__nmc_table_rules_tl,
+ rules .tl_set:N = \l__nmc_table_rules_tl,
+ rbloc .clist_set:N = \l__nmc_table_rbloc_clist,
+ rblocsep .tl_set:N = \l__nmc_table_rblocsep_tl,
+ rblocsep .initial:n = 1ex,
+ signs .int_set:N = \l__nmc_table_signs_int,
+ (pad) .int_set:N = \l__nmc_table_tsigns_int,
+ diffs .int_set:N = \l__nmc_table_diffs_int,
+ diffs .initial:n = 0,
+%
+ headless .code:n = \__nmc_int_to_bool:Nn
+ \l__nmc_table_headless_bool { #1 },
+ headless .default:n = 1,
+ headless .initial:n = 0,
+ round .code:n = \__nmc_table_kv_rounding:n { #1 },
+ Q? .tl_set:N = \l__nmc_table_Q_tl,
+ A! .tl_set:N = \l__nmc_table_A_tl,
+ valign .code:n = \tl_set:Nn \l__nmc_table_valign_tl { [#1] },
+ valign .initial:n = m,
+ view .code:n = \__nmc_dbg_int:nn { 1 } { 11 },
+ transpose .code:n = \__nmc_int_to_bool:Nn
+ \l__nmc_table_transpose_bool { #1 },
+ transpose .default:n = 1,
+ transpose .initial:n = 0,
+ }
+% \nmcTabulate / \__nmc_settings:nn
+\cs_gset_protected:Npn \__nmc_table_settings:
+ {
+ \__nmc_table_settings_rpos:
+ \__nmc_table_settings_rv_vals: % for r \l__nmc_table_rspec_clist
+ \__nmc_table_settings_spec:NN c \l__nmc_table_cspec_clist
+ \__nmc_table_settings_rhead:
+ \__nmc_table_settings_rhnudge:
+ \__nmc_table_settings_chnudge:
+ \__nmc_table_settings_chmath:
+ \__nmc_table_settings_chsize:
+ \__nmc_table_settings_ctitle:
+ \__nmc_table_settings_QA:
+ \__nmc_table_settings_rbloc:
+ \__nmc_table_settings_rules:
+ \__nmc_table_settings_diffs:
+ \__nmc_table_settings_chead:
+ \int_compare:nNnF \l__nmc_dbg_int = { 11 }
+ { \int_zero:N \l__nmc_dbg_int }
+ }
+% \nmcTabulate / \__nmc_formula:nn
+\cs_set_protected:Npn \__nmc_table_formula:
+ {
+ \tl_set:Ne \l_tmpa_tl { \tl_head:N \l__nmc_formula_tl }
+ \tl_if_in:nVT { $ \( \[ } \l_tmpa_tl
+ {
+ \tl_set:Ne \l__nmc_formula_tl
+ { \tl_range:Nnn \l__nmc_formula_tl {2}{-2} }
+ }
+ \tl_set_eq:NN \l__nmc_formula_dup_tl \l__nmc_formula_tl
+ \int_compare:nNnT { \l__nmc_table_ctitle_int } > { 1 }
+ { \tl_set_eq:NN \l__nmc_table_ctitle_tl \l__nmc_formula_tl }
+ }
+% \nmcTabulate / \__nmc_trailing_args:nnn #1 seq
+\cs_gset_protected:Npn \__nmc_table_vv_digest:N #1
{
- \int_compare:nNnF { \l__nmc_num_sgn_int } < { 0 }
+ \bool_if:NT \l__nmc_table_rvirreg_bool
{
- \int_case:nn { \l__nmc_table_signs_int }
- {
- {-2 } { \exp_not:N \hphantom{+} }
- {-1 } { \bool_if:NTF \l__nmc_table_signs_bool
- { + }{ \exp_not:N \hphantom{+} } }
- { 1 } { \bool_if:NT \l__nmc_table_signs_bool { + } }
- { 2 } { + }
+ \seq_get_left:NN \l__nmc_table_rvirreg_seq \l_tmpa_tl
+ \seq_push:Ne #1
+ { \exp_not:o \l__nmc_table_rvar_tl = \exp_not:o \l_tmpa_tl }
+ }
+ \bool_if:NT \l__nmc_multitok_bool
+ { \__nmc_table_multitok:nn { cr } { \exp_args:NNc \clist_push:NV } }
+ \__nmc_vv_digest:N #1
+ \bool_if:NT \l__nmc_multitok_bool
+ { \__nmc_table_multitok:nn { rc } { \clist_pop:Nc } }
+ \seq_gpop:NN \g__nmc_error_where_seq \l__nmc_toss_tl
+ \__nmc_table_get_ini_vals:
+ \bool_if:NF \g__nmc_error_bool
+ { \__nmc_table_add_vv_to_ctitle: }
+ }
+% \nmcTabulate /
+\cs_gset_protected:Npn \__nmc_table_process:
+ {
+ \__nmc_error_where:n { formula }
+ \__nmc_table_calculate:
+ \bool_if:NF \g__nmc_error_bool
+ {
+ \bool_if:NT \l__nmc_table_transpose_bool
+ { \__nmc_table_transpose: }
+ }
+ \bool_if:NF \g__nmc_error_bool
+ {
+ \tl_set:Ne \l__nmc_table_totalcols_tl { \__nmc_table_totalcols: }
+ \__nmc_table_format_items:
+ }
+ \bool_if:NF \g__nmc_error_bool
+ {
+ \__nmc_table_assemble_body:
+ \tl_set_eq:NN \l__nmc_fp_expr_tl \l__nmc_fp_exprn_tl
+ }
+ \bool_if:NF \g__nmc_error_bool
+ {
+ \bool_if:NT \l__nmc_num_only_bool
+ { \__nmc_table_num_only: }
+ \int_compare:nNnT \l__nmc_dbg_int = { 11 }
+ {
+ \__nmc_table_display:
+ \tl_set:NV \l__nmc_show_tl \l__nmc_result_tl
}
- }
- \exp_not:o { #1 }
+ }
}
-\cs_generate_variant:Nn \__nmc_sci_num_table_signs:n { x }
-\cs_new:Npn \__nmc_table_rc:N #1
- { \str_if_eq:nVTF { #1 } \c__nmc_r_tl { row } { column } }
-\cs_new_protected:Npn \__nmc_table_rvround_pre:
+% \nmcTabulate /
+\cs_gset_protected:Npn \__nmc_table_display:
{
- \fp_set_eq:NN \l__nmc_table_r_fp \l__nmc_table_rstart_fp
- \prop_put:NVx \l__nmc_subst_var_prop \l__nmc_table_rvar_tl
- { \fp_use:N \l__nmc_table_r_fp }
- \__nmc_table_reset_rounding:
+ \bool_if:NF \l__nmc_num_only_bool
+ {
+ \tl_set:Ne \l__nmc_result_tl
+ {
+ \__nmc_table_upper:
+ \bool_if:NF \l__nmc_table_headless_bool
+ {
+ \exp_not:o \l__nmc_table_header_tl \\~
+ \__nmc_if_mod_zero:nnTF { \l__nmc_table_rules_int } { 11 }
+ { \exp_not:N \midrule }
+ {
+ \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 7 }
+ { \exp_not:N \cmidrule(lr)
+ { 1-\l__nmc_table_totalcols_tl } }
+ }
+ }
+ \exp_not:o \l__nmc_result_tl
+ \__nmc_table_lower:
+ }
+ \bool_gset_false:N \g__nmc_reuse_bool
+ \tl_gset:Ne \g__nmc_reuse_tl { \exp_not:o \l__nmc_result_tl }
+ }
+ \int_if_zero:nT \l__nmc_dbg_int
+ { \l__nmc_result_tl }
}
-\cs_new_protected:Npn \__nmc_table_rvround_post:
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% keys_define:nn
+\cs_new_protected:Npn \__nmc_table_kv_rcnum:nn #1#2
{
- \fp_add:Nn \l__nmc_table_r_fp { \l__nmc_table_rstep_fp }
- \prop_put:NVx \l__nmc_subst_var_prop \l__nmc_table_rvar_tl
- { \fp_use:N \l__nmc_table_r_fp }
- \__nmc_table_reset_rounding:
+ \__nmc_fpify_set:Nn \l_tmpb_fp { #1 }
+ \int_set:cn { l__nmc_table_#2 num_int } { \fp_to_int:N \l_tmpb_fp }
}
-\cs_new_protected:Npn \__nmc_table_cvround_pre:
+\cs_generate_variant:Nn \__nmc_table_kv_rcnum:nn { V }
+
+\cs_new_protected:Npn \__nmc_table_kv_rdata:n #1
{
- \fp_set_eq:NN \l__nmc_table_c_fp \l__nmc_table_cstart_fp
- \prop_put:NVx \l__nmc_subst_var_prop \l__nmc_table_cvar_tl
- { \fp_use:N \l__nmc_table_c_fp }
- \__nmc_table_reset_rounding:
+ \tl_if_single:nT { #1 } { \exp_args:NNNV }
+ \seq_set_split:NVn \l__nmc_table_rvirreg_seq \l__nmc_rdelim_tl { #1 }
+ \seq_remove_all:Nn \l__nmc_table_rvirreg_seq {}
}
-
-\cs_new_protected:Npn \__nmc_table_cvround_post:
+\cs_new_protected:Npn \__nmc_table_kv_rfile:n #1
{
- \fp_add:Nn \l__nmc_table_c_fp { \l__nmc_table_cstep_fp }
- \prop_put:NVx \l__nmc_subst_var_prop \l__nmc_table_cvar_tl
- { \fp_use:N \l__nmc_table_c_fp }
- \__nmc_table_reset_rounding:
+ \file_get:nnNTF { #1 } {} \l_tmpa_tl
+ { \__nmc_table_kv_rdata:n \l_tmpa_tl }
+ { \__nmc_error_what:n { File~#1~not~found~in } }
}
-\cs_new_protected:Npn \__nmc_table_reset_rounding:
- {
- \tl_clear:N \l__nmca_tl
- \__nmc_fpify:VN \l__nmc_round_xpr_tl \l__nmca_tl
- \int_set:Nn \l__nmc_round_int { \fp_to_int:n \l__nmca_tl }
+\cs_new_protected:Npn \__nmc_table_kv_rvari:n #1
+ {
+ \bool_lazy_or:nnTF { \tl_if_empty_p:n { #1 } }
+ { \tl_if_head_eq_charcode_p:nN { #1 } * }
+ { \bool_set_false:N \l__nmc_table_rvari_bool }
+ {
+ \tl_set:Nn \l__nmc_table_rvari_tl { #1 }
+ \bool_set_true:N \l__nmc_table_rvari_bool
+ }
}
-%--------------------------------------
-\tl_new:N \l__nmc_x_tl
-\seq_new:N \l_tmpd_seq
-\tl_const:Nn \c__nmc_r_tl { r }
-\tl_const:Nn \c__nmc_l_tl { l }
-\bool_new:N \l__nmc_table_multifn_bool
-\bool_new:N \l__nmc_table_round_bool
-\seq_new:N \l__nmc_table_multifn_seq
-\tl_new:N \l__nmc_table_valign_tl
-
-\tl_new:N \l__nmc_table_rvar_tl
-\tl_new:N \l__nmc_table_rvari_tl
-\tl_new:N \l__nmc_table_rstop_tl
-\tl_new:N \l__nmc_table_rstep_tl
-\tl_new:N \l__nmc_table_rspec_tl
-\tl_new:N \l__nmc_table_rvfn_tl
-\bool_new:N \l__nmc_table_rvfn_bool
-\fp_new:N \l__nmc_table_rstart_fp
-\fp_new:N \l__nmc_table_rstop_fp
-\tl_new:N \l__nmc_table_cspec_tl
-\fp_new:N \l__nmc_table_rstep_fp
-\fp_new:N \l__nmc_table_r_fp
-\fp_new:N \l__nmc_table_c_fp
-\fp_new:N \l__nmc_table_fn_val_fp
-\int_new:N \l__nmc_table_rnum_int
-\clist_new:N \l__nmc_table_rspec_clist
-\bool_new:N \l__nmc_table_rspec_bool
-\seq_new:N \l__nmc_table_rdata_seq
-\bool_new:N \l__nmc_table_rdata_bool
-
-\tl_new:N \l__nmc_table_cvar_tl
-\tl_new:N \l__nmc_table_cstop_tl
-\tl_new:N \l__nmc_table_cstep_tl
-\fp_new:N \l__nmc_table_cstart_fp
-\fp_new:N \l__nmc_table_cstop_fp
-\fp_new:N \l__nmc_table_cstep_fp
-\int_new:N \l__nmc_table_cnum_int
-\clist_new:N \l__nmc_table_cspec_clist
-\bool_new:N \l__nmc_table_cspec_bool
-
-\seq_new:N \l__nmc_table_rvraw_seq
-\seq_new:N \l__nmc_table_rvcol_seq
-\seq_new:N \l__nmc_table_rvcoli_seq
-\seq_new:N \l__nmc_table_this_col_seq
-\seq_new:N \l__nmc_table_recur_seq
-\seq_new:N \l__nmc_table_body_cols_seq
-\seq_new:N \l__nmc_table_body_rows_seq
-
-\seq_new:N \l__nmc_table_header_seq
-\tl_new:N \l__nmc_table_header_tl
-\tl_new:N \l__nmc_table_rfont_tl
-\tl_new:N \l__nmc_table_rhead_tl
-\tl_new:N \l__nmc_table_rheadi_tl
-\tl_new:N \l__nmc_table_rhnudge_tl
-\tl_new:N \l__nmc_table_rhnudgei_tl
-\int_new:N \l__nmc_table_chfrac_int
-\int_new:N \l__nmc_table_chround_int
-\int_new:N \l__nmc_table_chstyle_int
-\int_const:Nn \c__nmc_table_chstyle_int { 5 }
-\tl_new:N \l__nmc_table_chnudge_tl
-
-\tl_new:N \l__nmc_table_ctitle_tl
-\int_new:N \l__nmc_table_ctitle_int
-\int_new:N \l__nmc_table_rules_int
-\tl_new:N \l__nmc_table_footer_tl
-\bool_new:N \l__nmc_table_foot_bool
-\bool_new:N \l__nmc_table_footops_bool
-\tl_new:N \l__nmc_table_csum_tl
-\tl_new:N \l__nmc_table_cave_tl
-\tl_new:N \l__nmc_table_cmax_tl
-\tl_new:N \l__nmc_table_cmin_tl
-\tl_new:N \l__nmc_table_rbloc_tl
-\tl_new:N \l__nmc_table_rblock_tl
-\int_new:N \l__nmc_table_rbloc_int
-\clist_new:N \l__nmc_table_rbloc_clist
-
-\int_new:N \l__nmc_table_signs_int
-\int_new:N \l__nmc_table_tsigns_int
-\int_new:N \l__nmc_table_c_int
-\int_new:N \l__nmc_table_b_int
-\int_new:N \l__nmc_table_a_int
-\bool_new:N \l__nmc_table_signs_bool
-\bool_new:N \l__nmc_table_diffs_bool
-\tl_new:N \l__nmc_table_diff_tl
-\tl_new:N \l__nmc_table_diff_null_tl
-
-\tl_new:N \l__nmc_table_Q_tl
-\tl_new:N \l__nmc_table_A_tl
-\fp_new:N \l__nmc_table_max_fp
-\fp_new:N \l__nmc_table_min_fp
-\bool_new:N \l__nmc_table_QA_max_bool
-\bool_new:N \l__nmc_table_QA_min_bool
-\bool_new:N \l__nmc_table_QA_bool
-\bool_new:N \l__nmc_table_num_only_bool
-\tl_new:N \l__nmc_table_num_only_tl
-\tl_new:N \l__nmc_table_query_tl
-%------------------------------------------------
-\nmc_define:NnN \nmcTabulate { table } \tabulate
+\cs_new_protected:Npn \__nmc_table_kv_rverb:n #1
+ {
+ \int_set:Nn \l__nmc_table_rfrac_int { \fp_to_int:n { 10 * { #1 } } }
+ \bool_set:Nn \l__nmc_table_rverb_bool
+ { \int_compare_p:nNn {\l__nmc_table_rfrac_int } = { 10 } }
+ }
+\cs_new:Npn \__nmc_table_kv_mathstyle:n #1
+ {
+ \str_case:nnF { #1 }
+ {
+ { t } { \textstyle }
+ { d } { \displaystyle }
+ { s } { \scriptstyle }
+ } { \textstyle }
+ }
+\cs_generate_variant:Nn \__nmc_table_kv_mathstyle:n { V }
-\cs_gset_protected:Npn \__nmc_table_initialize:
- {
- \bool_set_false:N \l__nmc_allow_TF_out_bool
- \int_set:Nn \l__nmc_table_rnum_int { -1 }
- \int_set:Nn \l__nmc_table_cnum_int { -1 }
- \bool_if:NT \l__nmc_num_only_bool
- { \tl_set:Nn \l__nmc_table_Q_tl { @=MAX } }
+\cs_new_protected:Npn \__nmc_table_kv_rounding:n #1
+ {
+ \bool_set:Nn \l__nmc_table_round_bool { !\tl_if_blank_p:n { #1 } }
+ \tl_set:Nn \l__nmc_round_xpr_tl { #1 }
}
-\cs_gset_protected:Npn \__nmc_table_settings:
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% settings:
+\cs_new_protected:Npn \__nmc_table_settings_rpos:
{
\int_compare:nTF { 0 <= \l__nmc_table_rpos_int <= 4 }
{
@@ -218,205 +386,276 @@
{ \int_incr:N \l__nmc_table_rpos_int }
}
{ \int_set:Nn \l__nmc_table_rpos_int { 1 } }
- \seq_if_empty:NTF \l__nmc_table_rdata_seq
- {
- \clist_if_empty:NF \l__nmc_table_rspec_clist
- { \__nmc_table_settings_spec:N r }
- }
+ }
+\cs_new_protected:Npn \__nmc_table_settings_rv_vals:
+ {
+ \seq_if_empty:NTF \l__nmc_table_rvirreg_seq
+ { \__nmc_table_settings_spec:NN r \l__nmc_table_rspec_clist }
{
- \bool_set_true:N \l__nmc_table_rdata_bool
+ \bool_set_true:N \l__nmc_table_rvirreg_bool
\int_set:Nn \l__nmc_table_rnum_int
- { \seq_count:N \l__nmc_table_rdata_seq }
- \int_if_zero:nF { \l__nmc_table_rverb_int }
+ { \seq_count:N \l__nmc_table_rvirreg_seq }
+ \bool_if:NT \l__nmc_table_rverb_bool
{ \int_set_eq:NN \l__nmc_table_rround_int \c_max_int }
- \__nmc_table_rdata_fpstart:
}
- \clist_if_empty:NF \l__nmc_table_cspec_clist
- { \__nmc_table_settings_spec:N c }
- \tl_if_empty:NT \l__nmc_table_rhead_tl
- { \tl_set_eq:NN \l__nmc_table_rhead_tl \l__nmc_table_rvar_tl }
- \tl_if_empty:NTF \l__nmc_table_rheadi_tl
+
+ \bool_if:nT { !\l__nmc_table_rvari_bool &&
+ \int_compare_p:nNn { \l__nmc_table_rpos_int } < { 5 } }
+ { \tl_set_eq:NN \l__nmc_table_rvari_tl \l__nmc_table_rvar_tl }
+ }
+\cs_new_protected:Npn \__nmc_table_settings_spec:NN #1 #2
+ {
+ \clist_if_empty:NF #2
+ {
+ \bool_set_true:c { l__nmc_table_#1 spec_bool }
+ \clist_pop:cc { l__nmc_table_#1 spec_clist }
+ { l__nmc_table_#1 var_tl }
+ \clist_pop:cc { l__nmc_table_#1 spec_clist }
+ { l__nmc_table_#1 step_tl }
+ \clist_pop:cN { l__nmc_table_#1 spec_clist } \l_tmpb_tl
+ \__nmc_table_kv_rcnum:Vn \l_tmpb_tl { #1 }
+ \clist_if_empty:NF #2
+ {
+ \clist_pop:cN { l__nmc_table_#1 spec_clist } \l_tmpa_tl
+ \tl_if_eq:NNTF #1 r
+ { \int_set:Nn \l__nmc_table_rround_int \l_tmpa_tl }
+ { \int_set:Nn \l__nmc_table_chround_int \l_tmpa_tl }
+ }
+ }
+ }
+\cs_new_protected:Npn \__nmc_table_settings_rhead:
+ {
+ \tl_if_eq:VnTF \l__nmc_table_rhead_tl { ` }
{
- \tl_if_empty:NT \l__nmc_table_rvari_tl
+ \tl_if_empty:NT \l__nmc_table_chead_tl
+ {
+ \bool_set_true:N \l__nmc_table_rhead_bool
+ \__nmc_table_rhead:NNNn r \backslash c {}
+ }
+ { \tl_set_eq:NN \l__nmc_table_rhead_tl \l__nmc_table_rvar_tl }
+ \tl_if_eq:VnT \l__nmc_table_rheadi_tl { ` }
{
- \tl_set_eq:NN \l__nmc_table_rheadi_tl \l__nmc_table_rhead_tl
- \tl_set_eq:NN \l__nmc_table_rvari_tl \l__nmc_table_rvar_tl
- }
+ \int_compare:nNnTF { \l__nmc_table_rpos_int } = { 5 }
+ {
+ \int_if_zero:nTF { \l__nmc_table_chstyle_int }
+ { \tl_clear:N \l__nmc_table_rheadi_tl }
+ { \tl_set_eq:NN \l__nmc_table_rheadi_tl \l__nmc_table_rvari_tl }
+ }
+ { \__nmc_table_rhead:NNNn c / r { i } }
+ }
}
{
- \tl_if_empty:NT \l__nmc_table_rvari_tl
- { \tl_set_eq:NN \l__nmc_table_rvari_tl \l__nmc_table_rvar_tl }
+ \tl_if_eq:VnT \l__nmc_table_rheadi_tl { ` }
+ { \tl_set_eq:NN \l__nmc_table_rheadi_tl \l__nmc_table_rhead_tl }
+ }
+ }
+% #4 blank or i
+\cs_new:Npn \__nmc_table_rhead:NNNn #1#2#3#4
+ {
+ \tl_if_empty:NTF \l__nmc_table_cvar_tl
+ {
+ \tl_set_eq:cc { l__nmc_table_rhead #4_tl }
+ { l__nmc_table_rvar #4_tl }
}
- \tl_if_empty:NT \l__nmc_table_rhnudgei_tl
- { \tl_set_eq:NN \l__nmc_table_rhnudgei_tl \l__nmc_table_rhnudge_tl }
- \tl_if_empty:NF \l__nmc_table_ctitle_tl
- { \l__nmc_table_settings_ctitle: }
- \tl_if_empty:NTF \l__nmc_table_Q_tl
- { \tl_set:Nn \l__nmc_table_query_tl { Missing~ } }
{
- \tl_set:Nn \l__nmc_table_query_tl { No~table~value~satisfies~ }
- \__nmc_table_settings_QA:
+ \bool_if:nF { \l__nmc_table_transpose_bool
+ && \l__nmc_table_multifn_bool }
+ {
+ \tl_set:ce { l__nmc_table_rhead #4_tl }
+ {
+ \int_if_zero:nTF { \l__nmc_table_chstyle_int }
+ { \__nmc_table_rhead:NNN #1 #2 #3 }
+ { \use:c { l__nmc_table_rvar_tl } }
+ }
+ \bool_set_true:c { l__nmc_table_rh #4 auto_bool }
+ }
}
- \clist_if_empty:NTF \l__nmc_table_rbloc_clist
- { \tl_set:Nn \l__nmc_table_rbloc_tl { 10000 } }
- { \clist_pop:NN \l__nmc_table_rbloc_clist \l__nmc_table_rbloc_tl }
- \tl_set_eq:NN \l__nmc_table_rblock_tl \l__nmc_table_rbloc_tl
- \int_set:Nn \l__nmc_table_rbloc_int { \l__nmc_table_rbloc_tl }
-
- \__nmc_table_settings_rules:
- \int_if_zero:nTF \l__nmc_table_diffs_int
- { \bool_set_false:N \l__nmc_table_diffs_bool }
- { \bool_set_true:N \l__nmc_table_diffs_bool }
- \tl_if_empty:NF \l__nmc_table_chead_tl
- { \int_set_eq:NN \l__nmc_table_chstyle_int \c__nmc_table_chstyle_int }
- \tl_if_empty:NF \l__nmc_table_footer_tl
+ }
+\cs_new:Npn \__nmc_table_rhead:NNN #1#2#3
+ {
+ \use:c { l__nmc_table_#1 var_tl }
+ \exp_not:n { \:\! #2 \:\! }
+ \use:c { l__nmc_table_#3 var_tl }
+ }
+\cs_new_protected:Npn \__nmc_table_settings_rhnudge:
+ {
+ \tl_if_empty:NT \l__nmc_table_rhnudgei_tl
+ { \tl_set_eq:NN \l__nmc_table_rhnudgei_tl \l__nmc_table_rhnudge_tl }
+ }
+\cs_new_protected:Npn \__nmc_table_settings_chnudge:
+ {
+ \clist_if_empty:NF \l__nmc_table_chnudge_clist
{
- \tl_if_eq:VnT \l__nmc_table_footer_tl { * }
- { \bool_set_true:N \l__nmc_table_foot_bool }
+ \clist_pop:NN \l__nmc_table_chnudge_clist \l__nmc_table_chnudge_tl
+ \tl_set:Ne \l__nmc_table_chnudge_tl
+ { \mkern \l__nmc_table_chnudge_tl mu }
}
- \int_compare:nNnF \l__nmc_dbg_int = { 11 }
- { \int_zero:N \l__nmc_dbg_int }
- % \int_if_zero:nF { \l__nmc_table_rfrac_int + \l__nmc_table_chfrac_int }
- \int_if_zero:nF { \l__nmc_table_rfrac_int }
+ }
+\cs_new_protected:Npn \__nmc_table_settings_chmath:
+ {
+ \clist_if_empty:NF \l__nmc_table_chmath_clist
{
- \int_compare:nNnT { \l__nmc_table_chstyle_int } > { 2 }
- { \int_zero:N \l__nmc_table_chstyle_int }
+ \clist_pop:NN \l__nmc_table_chmath_clist \l_tmpa_tl
+ \tl_set:Ne \l__nmc_table_chmath_tl
+ { \__nmc_table_kv_mathstyle:V \l_tmpa_tl }
}
- }
-\cs_new_protected:Npn \l__nmc_table_settings_ctitle:
+ }
+\cs_new_protected:Npn \__nmc_table_settings_chsize:
{
- \int_incr:N \l__nmc_table_ctitle_int % 1
- \tl_if_eq:VnTF \l__nmc_table_ctitle_tl { * }
- { \int_incr:N \l__nmc_table_ctitle_int } % 2
+ \clist_if_empty:NF \l__nmc_table_chsize_clist
{
- \tl_if_eq:VnT \l__nmc_table_ctitle_tl { ** }
- { \int_set:Nn \l__nmc_table_ctitle_int { 3 } } % 3
+ \clist_pop:NN \l__nmc_table_chsize_clist \l_tmpa_tl
+ \tl_set:Ne \l__nmc_table_chsize_tl
+ { \clist_item:Nn \c__nmc_table_fontsize_clist { 5+\l_tmpa_tl } }
}
}
-\cs_new_protected:Npn \__nmc_table_settings_rules:
+\cs_new_protected:Npn \__nmc_table_settings_ctitle:
{
- \clist_map_inline:nn
- { {T}{*2},{t}{*3},{m}{*5},{s}{*5},{h}{*7},{f}{*11},{B}{*13} }
- { \tl_replace_once:Nnn \l__nmc_table_rules_tl ##1 }
- \int_set:Nn \l__nmc_table_rules_int { 1 \l__nmc_table_rules_tl }
+ \tl_if_empty:NF \l__nmc_table_ctitle_tl
+ {
+ \int_incr:N \l__nmc_table_ctitle_int % 1
+ \tl_if_eq:VnT \l__nmc_table_ctitle_tl { * }
+ { \int_incr:N \l__nmc_table_ctitle_int } % 2
+ \tl_if_eq:VnT \l__nmc_table_ctitle_tl { ** }
+ { \int_set:Nn \l__nmc_table_ctitle_int { 3 } } % 3
+ }
}
\cs_new_protected:Npn \__nmc_table_settings_QA:
{
- \bool_set_true:N \l__nmc_table_QA_bool
- \regex_replace_all:nnN { (\@) } { \c{l_tmpb_fp} } \l__nmc_table_Q_tl
- \tl_set_rescan:Nno \l__nmc_table_Q_tl { \ExplSyntaxOn } \l__nmc_table_Q_tl
- \regex_replace_all:nnN { (\cC.) } { \c{exp_not:N}\1 } \l__nmc_table_A_tl
- \regex_replace_all:nnN { (\@) } { \c{l_tmpb_tl} } \l__nmc_table_A_tl
- \tl_if_in:NnT \l__nmc_table_Q_tl { MAX }
+ \tl_if_empty:NTF \l__nmc_table_Q_tl
+ { \tl_set:Nn \l__nmc_table_query_tl { Missing~ } }
{
- \bool_set_true:N \l__nmc_table_QA_max_bool
- \regex_replace_all:nnN { MAX } { \c{l__nmc_table_max_fp} }
+ \tl_set:Nn \l__nmc_table_query_tl { No~table~value~satisfies~ }
+ \bool_set_true:N \l__nmc_table_QA_bool
+ \regex_replace_all:nnN { (\@) } { \c{l_tmpb_fp} }
\l__nmc_table_Q_tl
- \fp_set:Nn \l__nmc_table_max_fp { -inf }
- }
- \tl_if_in:NnT \l__nmc_table_Q_tl { MIN }
- {
- \bool_set_true:N \l__nmc_table_QA_min_bool
- \regex_replace_all:nnN { MIN } { \c{l__nmc_table_min_fp} }
+ \tl_set_rescan:Nno \l__nmc_table_Q_tl { \ExplSyntaxOn }
\l__nmc_table_Q_tl
- \fp_set:Nn \l__nmc_table_min_fp { inf }
+ \regex_replace_all:nnN { (\cC.) } { \c{exp_not:N}\1 }
+ \l__nmc_table_A_tl
+ \regex_replace_all:nnN { (\@) } { \c{l_tmpb_tl} }
+ \l__nmc_table_A_tl
+ \tl_if_in:NnT \l__nmc_table_Q_tl { MAX }
+ {
+ \bool_set_true:N \l__nmc_table_QAmax_bool
+ \regex_replace_all:nnN { MAX } { \c{l__nmc_table_max_fp} }
+ \l__nmc_table_Q_tl
+ \fp_set:Nn \l__nmc_table_max_fp { -inf }
+ }
+ \tl_if_in:NnT \l__nmc_table_Q_tl { MIN }
+ {
+ \bool_set_true:N \l__nmc_table_QAmin_bool
+ \regex_replace_all:nnN { MIN } { \c{l__nmc_table_min_fp} }
+ \l__nmc_table_Q_tl
+ \fp_set:Nn \l__nmc_table_min_fp { inf }
+ }
}
}
-\cs_new_protected:Npn \__nmc_table_settings_spec:N #1
- {
- \bool_set_true:c { l__nmc_table_ #1 spec_bool }
- \clist_pop:cc { l__nmc_table_ #1 spec_clist } { l__nmc_table_ #1 var_tl }
- \clist_pop:cc { l__nmc_table_ #1 spec_clist } { l__nmc_table_ #1 step_tl }
- \clist_pop:cN { l__nmc_table_ #1 spec_clist } \l_tmpb_tl
- \__nmc_table_set_rcnum:Vn \l_tmpb_tl { #1 }
+\cs_new_protected:Npn \__nmc_table_settings_rbloc:
+ {
+ \clist_if_empty:NTF \l__nmc_table_rbloc_clist
+ { \tl_set:Nn \l__nmc_table_rbloc_tl { 10000 } }
+ { \clist_pop:NN \l__nmc_table_rbloc_clist \l__nmc_table_rbloc_tl }
+ \tl_set_eq:NN \l__nmc_table_rblock_tl \l__nmc_table_rbloc_tl
+ \int_set:Nn \l__nmc_table_rbloc_int { \l__nmc_table_rbloc_tl }
}
-\cs_new:Npn \__nmc_table_total_cols:
- {
- \int_eval:n { \int_sign:n { \l__nmc_table_rpos_int }
- + \l__nmc_table_cnum_int +
- \int_div_truncate:nn { \l__nmc_table_rpos_int } { 3 } }
+\cs_new_protected:Npn \__nmc_table_settings_rules:
+ {
+ \clist_map_inline:nn { {T{*2}},{t{*3}},{m{*5}},{s{*5}},{{h'}{*7}},
+ {h{*11}},{{f'}{*13}},{f{*17}},{B{*19}} }
+ { \tl_replace_once:Nnn \l__nmc_table_rules_tl ##1 }
+ \int_set:Nn \l__nmc_table_rules_int { 1 \l__nmc_table_rules_tl }
}
-\cs_gset_protected:Npn \__nmc_table_vv_digest:N #1
+\cs_new_protected:Npn \__nmc_table_settings_diffs:
+ {
+ \int_if_zero:nTF \l__nmc_table_diffs_int
+ { \bool_set_false:N \l__nmc_table_diffs_bool }
+ { \bool_set_true:N \l__nmc_table_diffs_bool }
+ }
+\cs_new_protected:Npn \__nmc_table_settings_chead:
+ {
+ \tl_if_empty:NF \l__nmc_table_chead_tl
+ { \bool_set_true:N \l__nmc_table_chverb_bool }
+ }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% vv_digest:N (x2)
+\cs_new_protected:Npn \__nmc_table_multitok:nn #1#2
{
- \bool_if:NTF \l__nmc_multitok_bool
+ \tl_map_inline:nn { #1 }
{
- \tl_if_empty:NF \l__nmc_table_cvar_tl
- { \clist_push:NV \l__nmc_formula_tl \l__nmc_table_cvar_tl }
- \tl_if_empty:NF \l__nmc_table_rvar_tl
- { \clist_push:NV \l__nmc_formula_tl \l__nmc_table_rvar_tl }
- \__nmc_vv_digest:N #1
- \tl_if_empty:NF \l__nmc_table_rvar_tl
- { \clist_pop:NN \l__nmc_formula_tl \l__nmc_table_rvar_tl }
- \tl_if_empty:NF \l__nmc_table_cvar_tl
- { \clist_pop:NN \l__nmc_formula_tl \l__nmc_table_cvar_tl }
- }
- { \__nmc_vv_digest:N #1 }
- \int_compare:nNnT { \l__nmc_table_ctitle_int } > { 1 }
- { \tl_set_eq:NN \l__nmc_table_ctitle_tl \l__nmc_formula_dup_tl }
- \seq_gpop:NN \g__nmc_error_where_seq \l__nmc_toss_tl
- \__nmc_table_get_ini_vals:
- \bool_if:NF \g__nmc_error_bool
- {
- \bool_if:nT
- {
- \int_if_zero_p:n { \l__nmc_table_rpos_int } &&
- \int_if_zero_p:n { \l__nmc_table_cnum_int }
- }
- { \__nmc_error_what:n { Null~table~specified~in } }
- \int_compare:nNnT { \l__nmc_table_ctitle_int } = { 3 }
- {
- \tl_put_right:Nx \l__nmc_table_ctitle_tl
- {
- \c__nmc_vv_delim_tl \mskip18muminus15mu(
- \seq_use:Nn \l__nmc_vv_visible_seq { \c__nmc_vv_delim_tl } )
- }
- }
+ \tl_if_empty:cF { l__nmc_table_##1 var_tl }
+ { #2 \l__nmc_formula_tl { l__nmc_table_##1 var_tl } }
}
}
+% vv_digest:N
\cs_new_protected:Npn \__nmc_table_get_ini_vals:
{
\__nmc_error_where:n { settings }
\__nmc_table_get_ini_vals_aux:N r
- \bool_if:NF \g__nmc_error_bool
+ \bool_if:nF { \g__nmc_error_bool || \l__nmc_table_multifn_bool }
{
\tl_if_empty:NTF \l__nmc_table_cvar_tl
{
\int_set:Nn \l__nmc_table_cnum_int
- {
- \int_compare:nNnTF { \l__nmc_table_cnum_int } = { -1 }
- { 1 } { \int_min:nn { 1 }
- { \int_abs:n { \l__nmc_table_cnum_int } } }
- }
+ { \int_min:nn { 1 }
+ { \int_abs:n { \l__nmc_table_cnum_int } } }
}
{ \__nmc_table_get_ini_vals_aux:N c }
}
\bool_if:NT \l__nmc_table_round_bool
- { \__nmc_fpify:VN \l__nmc_round_xpr_tl \l__nmc_toss_tl }
- \seq_gpop:NN \g__nmc_error_where_seq \l__nmc_toss_tl
+ {
+ \__nmc_error_where:n { rounding~function }
+ \__nmc_fpify:VN \l__nmc_round_xpr_tl \l__nmc_toss_tl
+ \bool_if:NF \g__nmc_error_bool
+ { \seq_gpop:NN \g__nmc_error_where_seq \l__nmc_toss_tl }
+ }
+ \bool_if:NF \g__nmc_error_bool
+ { \seq_gpop:NN \g__nmc_error_where_seq \l__nmc_toss_tl }
+ }
+% vv_digest:N
+\cs_new_protected:Npn \__nmc_table_add_vv_to_ctitle:
+ {
+ \bool_if:nTF
+ {
+ \int_if_zero_p:n { \l__nmc_table_rpos_int } &&
+ \int_if_zero_p:n { \l__nmc_table_cnum_int }
+ }
+ { \__nmc_error_what:n { Null~table~specified~in } }
+ {
+ \int_compare:nNnT { \l__nmc_table_ctitle_int } = { 3 }
+ {
+ \tl_put_right:Ne \l__nmc_table_ctitle_tl
+ {
+ \c__nmc_vv_delim_tl \mskip18muminus15mu(
+ \seq_use:Nn \l__nmc_vv_visible_seq { \c__nmc_vv_delim_tl } )
+ }
+ }
+ }
}
+% get_ini_vals:
\cs_new_protected:Npn \__nmc_table_get_ini_vals_aux:N #1
{
\prop_get:NvNTF \l__nmc_subst_var_prop
- { l__nmc_table_ #1 var_tl } \l_tmpa_tl
- {
- \fp_set:cn { l__nmc_table_ #1 start_fp } { \l_tmpa_tl }
- \bool_if:cTF { l__nmc_table_ #1 spec_bool }
+ { l__nmc_table_#1 var_tl } \l_tmpa_tl
+ {
+ \fp_set:cn { l__nmc_table_#1 start_fp } { \l_tmpa_tl }
+ \bool_if:cTF { l__nmc_table_#1 spec_bool }
{
- \__nmc_fpify_set:cv { l__nmc_table_ #1 step_fp }
- { l__nmc_table_ #1 step_tl }
- \int_compare:vNnT { l__nmc_table_ #1 num_int } = { -1 }
+ \__nmc_fpify_set:cv { l__nmc_table_#1 step_fp }
+ { l__nmc_table_#1 step_tl }
+ \int_compare:vNnT { l__nmc_table_#1 num_int } = { -1 }
{
- \__nmc_fpify_set:cv { l__nmc_table_ #1 stop_fp }
- { l__nmc_table_ #1 stop_tl }
- \l__nmc_table_calc_num:cnnn { l__nmc_table_ #1 num_int }
- { l__nmc_table_ #1 stop_fp } { l__nmc_table_ #1 start_fp }
- { l__nmc_table_ #1 step_fp }
+ \__nmc_fpify_set:cv { l__nmc_table_#1 stop_fp }
+ { l__nmc_table_#1 stop_tl }
+ \__nmc_table_calc_rcnum:cnnn { l__nmc_table_#1 num_int }
+ { l__nmc_table_#1 stop_fp } { l__nmc_table_#1 start_fp }
+ { l__nmc_table_#1 step_fp }
}
}
- { \__nmc_table_get_individual_ini_vals:N #1 }
+ { \__nmc_table_get_ini_vidual_vals:N #1 }
}
{
- \tl_if_empty:cTF { l__nmc_table_ #1 var_tl }
+ \tl_if_empty:cTF { l__nmc_table_#1 var_tl }
{
\__nmc_error_what:n { No~ \__nmc_table_rc:N #1
\ variable~specified~in }
@@ -427,42 +666,36 @@
}
}
}
-\cs_new_protected:Npn \l__nmc_table_calc_num:Nnnn #1#2#3#4
- {
- \int_set:Nn #1 { \fp_to_int:n { ( \exp_not:v { #2 } - \exp_not:v { #3 } )
- / \exp_not:v { #4 } } + 1 }
- }
-\cs_generate_variant:Nn \l__nmc_table_calc_num:Nnnn { c }
-
-\cs_new_protected:Npn \__nmc_table_get_individual_ini_vals:N #1
+% get_ini_vals_aux:N
+\cs_new_protected:Npn \__nmc_table_get_ini_vidual_vals:N #1
{
- \int_case:vnTF { l__nmc_table_ #1 num_int }
+ \int_case:vnTF { l__nmc_table_#1 num_int }
{
{ -1 }
{
- \__nmc_fpify_set:cv { l__nmc_table_ #1 step_fp }
- { l__nmc_table_ #1 step_tl }
+ \__nmc_fpify_set:cv { l__nmc_table_#1 step_fp }
+ { l__nmc_table_#1 step_tl }
\bool_if:NF \g__nmc_error_bool
- { \__nmc_fpify_set:cv { l__nmc_table_ #1 stop_fp } }
- { l__nmc_table_ #1 stop_tl }
+ { \__nmc_fpify_set:cv { l__nmc_table_#1 stop_fp } }
+ { l__nmc_table_#1 stop_tl }
\bool_if:NF \g__nmc_error_bool
{
- \l__nmc_table_calc_num:cnnn { l__nmc_table_ #1 num_int }
- { l__nmc_table_ #1 stop_fp } { l__nmc_table_ #1 start_fp }
- { l__nmc_table_ #1 step_fp }
+ \__nmc_table_calc_rcnum:cnnn { l__nmc_table_#1 num_int }
+ { l__nmc_table_#1 stop_fp } { l__nmc_table_#1 start_fp }
+ { l__nmc_table_#1 step_fp }
}
}
{ 0 }
{
- \fp_set:cn { l__nmc_table_ #1 stop_fp }
- { \exp_not:v { l__nmc_table_ #1 start_fp } - 1 }
- \fp_set:cn { l__nmc_table_ #1 step_fp } { 1 }
+ \fp_set:cn { l__nmc_table_#1 stop_fp }
+ { \exp_not:v { l__nmc_table_#1 start_fp } - 1 }
+ \fp_set:cn { l__nmc_table_#1 step_fp } { 1 }
}
{ 1 }
{
- \fp_set_eq:cc { l__nmc_table_ #1 stop_fp }
- { l__nmc_table_ #1 start_fp }
- \fp_set:cn { l__nmc_table_ #1 step_fp } { 1 }
+ \fp_set_eq:cc { l__nmc_table_#1 stop_fp }
+ { l__nmc_table_#1 start_fp }
+ \fp_set:cn { l__nmc_table_#1 step_fp } { 1 }
}
}
{
@@ -470,160 +703,156 @@
{ \__nmc_error_what:n { Missing~
\__nmc_table_rc:N #1-related~variable~in } }
}
- {
- \int_compare:vNnTF { l__nmc_table_ #1 num_int } > { 1 }
+ {
+ \int_compare:vNnTF { l__nmc_table_#1 num_int } > { 1 }
{
- \bool_if:NF \l__nmc_table_rdata_bool
+ \bool_if:nF { \l__nmc_table_rvirreg_bool }
{
- \__nmc_fpify_set:cv { l__nmc_table_ #1 step_fp }
- { l__nmc_table_ #1 step_tl }
+ \__nmc_fpify_set:cv { l__nmc_table_#1 step_fp }
+ { l__nmc_table_#1 step_tl }
}
}
{ \__nmc_error_what:n { Check~number~of~
\__nmc_table_rc:N #1s~specified~in } }
}
}
-%%%%%%%%%%
-\cs_set_protected:Npn \__nmc_table_formula:
- {
- \tl_set:Nx \l_tmpa_tl { \tl_head:N \l__nmc_formula_tl }
- \tl_if_in:nVT { $ \( \[ } \l_tmpa_tl
- {
- \tl_set:Nx \l__nmc_formula_tl
- { \tl_range:Nnn \l__nmc_formula_tl {2}{-2} }
- }
- \tl_set_eq:NN \l__nmc_formula_dup_tl \l__nmc_formula_tl
- }
-%%%%%%%%%%
-\cs_gset_protected:Npn \__nmc_table_process:
+% get_ini_vals_aux:N , get_ini_vidual_vals:N
+\cs_new_protected:Npn \__nmc_table_calc_rcnum:Nnnn #1#2#3#4
{
- \__nmc_error_where:n { formula }
- \__nmc_table_calc_rvar_col:
+ \int_set:Nn #1 { \fp_to_int:n { ( \exp_not:v { #2 } - \exp_not:v { #3 } )
+ / \exp_not:v { #4 } } + 1 }
+ }
+\cs_generate_variant:Nn \__nmc_table_calc_rcnum:Nnnn { c }
+% get_ini_vals_aux:N (x2), get_ini_vidual_vals:N (x2)
+\cs_new:Npn \__nmc_table_rc:N #1
+ { \str_if_eq:nnTF { #1 } { r } { row } { column } }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% process: /
+\cs_new_protected:Npn \__nmc_table_calculate:
+ {
+ \__nmc_table_rvcol_calc:N \l__nmc_table_rvcol_seq
\bool_if:NF \g__nmc_error_bool
- {
- \seq_clear:N \l__nmc_table_header_seq
- \tl_if_in:NVT \l__nmc_formula_tl \l__nmc_multi_delim_tl
- { \__nmc_table_multifn: }
- \__nmc_table_calc_cvar_cols:
- \bool_if:NF \g__nmc_error_bool
- {
- \tl_clear:N \l__nmc_result_tl
- \__nmc_table_form_body:N \l__nmc_result_tl
- \tl_set_eq:NN \l__nmc_fp_expr_tl \l__nmc_fp_exprn_tl
- \bool_if:NT \l__nmc_num_only_bool
- {
- \bool_if:NTF \l__nmc_table_num_only_bool
- {
- \tl_set_eq:NN \l__nmc_result_tl \l__nmc_table_num_only_tl
- \tl_gset_eq:NN \g__nmc_reuse_tl \l__nmc_table_num_only_tl
- \bool_gset_true:N \g__nmc_reuse_bool
- }
- {
- \__nmc_error_where:n { settings }
- \__nmc_error_what:n
- { \l__nmc_table_query_tl~query~\__nmc_verb:n {Q?}~in }
- \tl_clear:N \l__nmc_result_tl
- }
- }
- }
+ {
+ \__nmc_table_multifn:NN \l__nmc_table_chead_seq \l__nmc_table_cnum_int
+ \bool_if:nT
+ {
+ \l__nmc_table_multifn_bool ||
+ \int_compare_p:nNn \l__nmc_table_cnum_int = { 1 }
+ }
+ { \bool_set_true:N \l__nmc_table_chverb_bool }
}
- \int_compare:nNnT \l__nmc_dbg_int = { 11 }
+ \bool_if:NF \g__nmc_error_bool
{
- \__nmc_table_display:
- \tl_set:NV \l__nmc_show_tl \l__nmc_result_tl
+ \__nmc_table_fvcols_calc:NN
+ \l__nmc_table_fvcols_seq \l__nmc_table_chead_seq
+ \bool_if:NT \l__nmc_table_rverb_bool
+ { \seq_set_eq:NN \l__nmc_table_rvcol_seq \l__nmc_table_rvirreg_seq }
}
}
-\cs_new_protected:Npn \__nmc_table_multifn:
+% calulate: / #1 = rvcol_seq
+\cs_new_protected:Npn \__nmc_table_rvcol_calc:N #1
{
- \bool_set_true:N \l__nmc_table_multifn_bool
- \seq_set_split:NVV \l__nmc_table_multifn_seq
- \l__nmc_multi_delim_tl \l__nmc_formula_tl
- \seq_remove_all:Nn \l__nmc_table_multifn_seq {}
- \seq_set_eq:NN \l__nmc_table_header_seq \l__nmc_table_multifn_seq
- \int_set:Nn \l__nmc_table_cnum_int
- { \seq_count:N \l__nmc_table_multifn_seq }
- \fp_set:Nn \l__nmc_table_cstep_fp { 0 }
- \fp_set:Nn \l__nmc_table_cstart_fp { 0 }
- \tl_set:Nn \l__nmc_table_cvar_tl { \l__nmc_x_tl }
- \prop_put:Nnn \l__nmc_subst_var_prop { \l__nmc_x_tl } { 1 }
- \int_set_eq:NN \l__nmc_table_chstyle_int \c__nmc_table_chstyle_int
- }
-\cs_new_protected:Npn \__nmc_table_calc_rvar_col:
+ \bool_if:NTF \l__nmc_table_rvirreg_bool
+ { \__nmc_table_rdata:N #1 }
+ {
+ \tl_if_empty:NTF \l__nmc_table_rfunc_tl
+ { \__nmc_table_runiform:N #1 }
+ { \__nmc_table_rfunc:N #1 }
+ }
+ }
+% calculate: / #1 chead_seq; #2 cnum_int
+\cs_new_protected:Npn \__nmc_table_multifn:NN #1#2
{
- \bool_if:NTF \l__nmc_table_rdata_bool
+ \tl_if_in:NVT \l__nmc_formula_tl \l__nmc_multi_delim_tl
{
- \__nmc_table_rdata_fpstart:
- \bool_if:NF \g__nmc_error_bool
- {
- \seq_map_inline:Nn \l__nmc_table_rdata_seq
- {
- \tl_clear:N \l_tmpb_tl
- \__nmc_fpify:nN { ##1 } \l_tmpb_tl
- \fp_set:Nn \l__nmc_table_r_fp
- {
- \int_if_zero:nTF \l__nmc_table_rfrac_int
- { round( \l_tmpb_tl, \l__nmc_table_rround_int ) }
- { \l_tmpb_tl }
- }
- \__nmc_error_fpflag:
- \bool_if:NT \g__nmc_error_bool
- { \seq_map_break: }
- \seq_put_right:NV \l__nmc_table_rvraw_seq \l__nmc_table_r_fp
- }
- }
+ \bool_set_true:N \l__nmc_table_multifn_bool
+ \seq_set_split:NVV \l__nmc_table_multifn_seq
+ \l__nmc_multi_delim_tl \l__nmc_formula_tl
+ \seq_remove_all:Nn \l__nmc_table_multifn_seq {}
+ \seq_set_eq:NN #1 \l__nmc_table_multifn_seq
+ \int_set:Nn #2 { \seq_count:N \l__nmc_table_multifn_seq }
}
+ \tl_if_empty:NT \l__nmc_table_cvar_tl
{
- \tl_if_empty:NTF \l__nmc_table_rfunc_tl
- { \__nmc_table_runiform: }
- { \__nmc_table_rfunc: }
+ \fp_set:Nn \l__nmc_table_cstep_fp { 0 }
+ \fp_set:Nn \l__nmc_table_cstart_fp { 0 }
+ \tl_set:Nn \l__nmc_table_cvar_tl { \c_empty_tl }
+ \prop_put:Nnn \l__nmc_subst_var_prop { \c_empty_tl } { 0 }
+ }
+ }
+% calculate: / #1 = fvcols_seq, #2 = chead_seq
+\cs_new_protected:Npn \__nmc_table_fvcols_calc:NN #1#2
+ {
+ \fp_set_eq:NN \l__nmc_table_c_fp \l__nmc_table_cstart_fp
+ \int_step_inline:nn { \l__nmc_table_cnum_int }
+ {
+ \bool_if:NF \g__nmc_error_bool
+ { \__nmc_table_thiscol_calc:NN \l__nmc_table_thiscol_seq #2 }
+ \bool_if:NF \g__nmc_error_bool
+ {
+ \__nmc_table_fvcols_append_col:NN #1 \l__nmc_table_thiscol_seq
+ \__nmc_calc_fn_val:VNnN \l__nmc_table_cvar_tl \l__nmc_formula_tl
+ { \l__nmc_table_c_fp } \l_tmpc_fp
+ }
}
-
}
-\cs_new_protected:Npn \__nmc_table_runiform:
+%%%%%%%%%%
+% rvcol_calc: / #1 = rvcol_seq
+\cs_new_protected:Npn \__nmc_table_rdata:N #1
{
+ \seq_map_inline:Nn \l__nmc_table_rvirreg_seq
+ {
+ \tl_clear:N \l_tmpb_tl
+ \__nmc_fpify:nN { ##1 } \l_tmpb_tl
+ \fp_set:Nn \l__nmc_table_r_fp
+ {
+ \int_if_zero:nTF \l__nmc_table_rfrac_int
+ { round( \l_tmpb_tl, \l__nmc_table_rround_int ) }
+ { \l_tmpb_tl }
+ }
+ \__nmc_error_fpflag:
+ \bool_if:NT \g__nmc_error_bool
+ { \seq_map_break: }
+ \seq_put_right:NV #1 \l__nmc_table_r_fp
+ }
+ }
+% rvcol_calc:N / #1 = rvcol_seq
+\cs_new_protected:Npn \__nmc_table_runiform:N #1
+ {
\fp_set_eq:NN \l__nmc_table_r_fp \l__nmc_table_rstart_fp
- \int_step_inline:nnnn { 1 } { 1 } { \l__nmc_table_rnum_int }
+ \int_step_inline:nn { \l__nmc_table_rnum_int }
{
\int_if_zero:nT \l__nmc_table_rfrac_int
{
\fp_set:Nn \l__nmc_table_r_fp
{ round( \l__nmc_table_r_fp, \l__nmc_table_rround_int ) }
- }
- \seq_put_right:NV \l__nmc_table_rvraw_seq \l__nmc_table_r_fp
+ }
+ \seq_put_right:NV #1 \l__nmc_table_r_fp
\fp_add:Nn \l__nmc_table_r_fp { \l__nmc_table_rstep_fp }
}
}
-\cs_new_protected:Npn \__nmc_table_rdata_fpstart:
- {
- \seq_get_left:NN \l__nmc_table_rdata_seq \l_tmpa_tl
- \tl_put_left:Nn \l_tmpa_tl { = }
- \tl_put_left:NV \l_tmpa_tl \l__nmc_table_rvar_tl
- \seq_set_from_clist:NN \l_tmpa_seq \l_tmpa_tl
- \__nmc_vv_digest:N \l_tmpa_seq
- \bool_if:NF \g__nmc_error_bool
- {
- \prop_get:NVN \l__nmc_subst_var_prop \l__nmc_table_rvar_tl \l_tmpa_tl
- \fp_set:Nn \l__nmc_table_rstart_fp { \l_tmpa_tl }
- }
- }
-\cs_new_protected:Npn \__nmc_table_rfunc:
+% rvcol_calc:N /
+\cs_new_protected:Npn \__nmc_table_rfunc:N #1
{
+ \__nmc_error_where:n { row-variable~function }
+ \fp_set_eq:NN \l__nmc_table_r_fp \l__nmc_table_rstart_fp
\bool_if:NF \g__nmc_error_bool
{
- \__nmc_error_where:n { row-variable~function }
- \fp_set_eq:NN \l__nmc_table_r_fp \l__nmc_table_rstart_fp
- \seq_clear:N \l__nmc_table_rdata_seq
+ \seq_clear:N \l__nmc_table_rvirreg_seq
\int_step_function:nN { \l__nmc_table_rnum_int }
\__nmc_table_rfunc_step_fn:n
\seq_gpop:NN \g__nmc_error_where_seq \l__nmc_toss_tl
- \bool_if:NF \g__nmc_error_bool
- {
- \__nmc_table_rdata_fpstart:
- \seq_set_eq:NN \l__nmc_table_rvraw_seq \l__nmc_table_rdata_seq
- \bool_set_true:N \l__nmc_table_rdata_bool
- }
}
- }
+ \bool_if:NF \g__nmc_error_bool
+ {
+ \prop_get:NVN \l__nmc_subst_var_prop
+ \l__nmc_table_rvar_tl \l_tmpa_tl
+ \fp_set:Nn \l__nmc_table_rstart_fp { \l_tmpa_tl }
+ \seq_set_eq:NN #1 \l__nmc_table_rvirreg_seq
+ \bool_set_true:N \l__nmc_table_rvirreg_bool
+ }
+ }
+% rfunc: /
\cs_new_protected:Npn \__nmc_table_rfunc_step_fn:n #1
{
\bool_if:NF \g__nmc_error_bool
@@ -634,235 +863,268 @@
{
\__nmc_num_format:nNnN { \l_tmpa_fp } \l_tmpb_tl
{ \l__nmc_table_rround_int } \c_false_bool
+ \tl_set:Ne \l_tmpb_tl
+ { \exp_not:o \l__nmc_table_rfont_tl { \l_tmpb_tl } }
}
- { \tl_set:Nx \l_tmpb_tl { \fp_use:N \l_tmpa_fp } }
- \seq_put_right:NV \l__nmc_table_rdata_seq \l_tmpb_tl
+ { \tl_set:Ne \l_tmpb_tl { \fp_use:N \l_tmpa_fp } }
+ \seq_put_right:NV \l__nmc_table_rvirreg_seq \l_tmpb_tl
\fp_add:Nn \l__nmc_table_r_fp { \l__nmc_table_rstep_fp }
}
- }
-\cs_new:Npn \__nmc_table_calc_cvar_cols:
- {
- \fp_set_eq:NN \l__nmc_table_c_fp \l__nmc_table_cstart_fp
- \int_step_inline:nn { \l__nmc_table_cnum_int }
- {
- \bool_if:NF \g__nmc_error_bool
- {
- \__nmc_table_multifn_header:
- \seq_clear:N \l__nmc_table_this_col_seq
- \seq_map_inline:Nn \l__nmc_table_rvraw_seq
- {
- \__nmc_calc_fn_val:VNnN \l__nmc_table_rvar_tl
- \l__nmc_formula_tl { ####1 } \l_tmpa_fp
- \bool_if:NT \g__nmc_error_bool
- { \seq_map_break: }
- \seq_put_right:NV \l__nmc_table_this_col_seq \l_tmpa_fp
- \bool_if:NT \l__nmc_table_QA_bool
- { \__nmc_table_maxmin_do:n { \l_tmpa_fp } }
- }
- }
- \bool_if:NF \g__nmc_error_bool
- {
- \seq_put_right:NV \l__nmc_table_body_cols_seq
- \l__nmc_table_this_col_seq
- \fp_add:Nn \l__nmc_table_c_fp \l__nmc_table_cstep_fp
- \int_if_zero:nTF { \l__nmc_mode_tl }
- { \prop_put:NVV \l__nmc_subst_var_prop }
- { \prop_put:NVV \l__nmc_vv_change_prop }
- \l__nmc_table_rvar_tl \l__nmc_table_rstart_fp
- \int_compare:nNnF { ##1 } > { \l__nmc_table_cnum_int }
- {
- \__nmc_calc_fn_val:VNnN \l__nmc_table_cvar_tl
- \l__nmc_formula_tl { \l__nmc_table_c_fp }
- \l__nmc_table_fn_val_fp
- }
- }
- }
}
-\cs_new_protected:Npn \__nmc_table_multifn_header:
+% fvcols_calc:NN / #1 = thiscol_seq, #2 = chead_seq
+\cs_new_protected:Npn \__nmc_table_thiscol_calc:NN #1#2
{
\bool_if:NTF \l__nmc_table_multifn_bool
{ \seq_pop:NN \l__nmc_table_multifn_seq \l__nmc_formula_tl }
- { \seq_put_right:NV \l__nmc_table_header_seq { \l__nmc_table_c_fp } }
+ {
+ \int_compare:nNnTF { \l__nmc_table_cnum_int } = { 1 }
+ { \seq_put_right:NV #2 \l__nmc_formula_tl }
+ { \__nmc_table_chead:Nn #2 { \l__nmc_table_c_fp } }
+ }
+ \seq_clear:N #1
+ \seq_map_inline:Nn \l__nmc_table_rvcol_seq
+ {
+ \__nmc_calc_fn_val:VNnN \l__nmc_table_rvar_tl
+ \l__nmc_formula_tl { ##1 } \l_tmpa_fp
+ \bool_if:NT \g__nmc_error_bool
+ { \seq_map_break: }
+ \seq_put_right:NV #1 \l_tmpa_fp
+ \bool_if:NT \l__nmc_table_QA_bool
+ { \__nmc_table_maxmin_do:n { \l_tmpa_fp } }
+ }
}
-\cs_new_protected:Npn \__nmc_table_maxmin_do:n #1
+% fvcols_calc:NN / append seq #2 to seq of seqs #1
+\cs_new_protected:Npn \__nmc_table_fvcols_append_col:NN #1 #2
{
- \bool_if:NT \l__nmc_table_QA_max_bool
- { \fp_set:Nn \l__nmc_table_max_fp
- { \fp_max:nn { \l__nmc_table_max_fp } { #1} } }
- \bool_if:NT \l__nmc_table_QA_min_bool
- { \fp_set:Nn \l__nmc_table_min_fp
- { \fp_min:nn { \l__nmc_table_min_fp } { #1 } } }
+ \seq_put_right:NV #1 #2
+ \fp_add:Nn \l__nmc_table_c_fp \l__nmc_table_cstep_fp
+ \int_if_zero:nTF { \l__nmc_mode_tl }
+ { \prop_put:NVV \l__nmc_subst_var_prop }
+ { \prop_put:NVV \l__nmc_vv_change_prop }
+ \l__nmc_table_rvar_tl \l__nmc_table_rstart_fp
+ }
+% thiscol_calc:NN / #1 = chead_seq, #2 = cvar_fp
+\cs_new_protected:Npn \__nmc_table_chead:Nn #1#2
+ {
+ \bool_if:nTF { \int_compare_p:nNn { \l__nmc_table_cnum_int } = { 1 } &&
+ !\int_compare_p:nNn { \l__nmc_table_rnum_int } = { 1 } }
+ { \seq_put_right:Ne #1 { \exp_not:o\l__nmc_formula_dup_tl } }
+ { \seq_put_right:No #1 { #2 } }
}
-%----------------------------------------------------------
-\cs_gset_protected:Npn \__nmc_table_display:
+%%%%%%%%%%
+% process: /
+\cs_new_protected:Npn \__nmc_table_transpose:
+ {
+ \__nmc_table_transpose_body:N \l__nmc_table_fvcols_seq
+ \__nmc_table_transpose_hrow_rvcol_vals:
+ }
+% transpose: / #1 seq of seqs
+\cs_new_protected:Npn \__nmc_table_transpose_body:N #1
{
- \bool_if:NF \l__nmc_num_only_bool
+ \seq_clear:N \l_tmpd_seq
+ \int_step_inline:nn { \l__nmc_table_rnum_int }
{
- \int_if_zero:nT \l__nmc_table_headless_int
- {
- \__nmc_table_headercnum:
- \tl_set:Nx \l__nmc_table_header_tl { \__nmc_table_header: }
- }
- \bool_if:NT \l__nmc_table_foot_bool
- {
- \seq_set_split:NnV \l_tmpa_seq { & }\l__nmc_table_header_tl
- \seq_reverse:N \l_tmpa_seq
- \tl_set:Nx \l__nmc_table_footer_tl
- { \seq_use:Nn \l_tmpa_seq { & } }
- }
- \tl_put_left:Nx \l__nmc_result_tl
- {
- \__nmc_table_upper:
- \exp_not:o \l__nmc_table_header_tl
- \int_if_zero:nT \l__nmc_table_headless_int
- {
- \\~
- \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 7 }
- { \exp_not:N \midrule }
- }
- }
- \tl_put_right:Nx \l__nmc_result_tl { \__nmc_table_form_lower: }
- \bool_if:NF \l__nmc_num_only_bool
+ \seq_clear:N \l_tmpb_seq
+ \seq_clear:N \l_tmpc_seq
+ \seq_map_variable:NNn #1 \l_tmpa_seq
{
- \bool_gset_false:N \g__nmc_reuse_bool
- \tl_gset:Nx \g__nmc_reuse_tl { \exp_not:o \l__nmc_result_tl }
+ \seq_pop:NN \l_tmpa_seq \l_tmpa_tl
+ \seq_put_right:Ne \l_tmpb_seq \l_tmpa_tl
+ \seq_put_right:NV \l_tmpc_seq \l_tmpa_seq
}
+ \seq_put_right:NV \l_tmpd_seq \l_tmpb_seq
+ \seq_set_eq:NN #1 \l_tmpc_seq
}
- \int_if_zero:nT \l__nmc_dbg_int
- { \l__nmc_result_tl }
+ \seq_set_eq:NN #1 \l_tmpd_seq
}
-\cs_new:Npn \__nmc_table_upper:
- {
- \exp_not:n { \begin{tabular} }
- \exp_not:o \l__nmc_table_valign_tl
- {
- \int_if_odd:nT { \l__nmc_table_rpos_int }
- { \l__nmc_table_rcalign_tl }
- \prg_replicate:nn
- { \l__nmc_table_cnum_int } \l__nmc_table_ccalign_tl
- \int_compare:nNnT { \l__nmc_table_rpos_int } > { 1 }
- { \l__nmc_table_rcalign_tl }
- }
- \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 2 }
- { \exp_not:N \toprule }
- \int_if_zero:nF { \l__nmc_table_ctitle_int }
- { \__nmc_table_form_ctitle: }
- }
-\cs_new:Npn \__nmc_table_form_ctitle:
+\cs_new_protected:Npn \__nmc_table_transpose_hrow_rvcol_vals:
{
- \int_compare:nNnTF { \l__nmc_table_rpos_int } = { 0 }
+ \__nmc_table_swap:nNN {int} \l__nmc_table_rnum_int \l__nmc_table_cnum_int
+ \__nmc_table_swap:nNN {int}
+ \l__nmc_table_rround_int \l__nmc_table_chround_int
+ \bool_if:NT \l__nmc_table_rverb_bool
+ { \seq_set_eq:NN \l__nmc_table_rvcol_seq \l__nmc_table_rvirreg_seq }
+ \__nmc_table_swap:nNN {seq}
+ \l__nmc_table_rvcol_seq \l__nmc_table_chead_seq
+ \__nmc_table_swap:nNN {fp}
+ \l__nmc_table_rstep_fp \l__nmc_table_cstep_fp
+ \__nmc_table_swap:nNN {fp}
+ \l__nmc_table_rstart_fp \l__nmc_table_cstart_fp
+ \__nmc_table_swap:nNN {tl}
+ \l__nmc_table_rvar_tl \l__nmc_table_cvar_tl
+ \bool_xor:nnT { \l__nmc_table_rverb_bool } { \l__nmc_table_chverb_bool }
{
- \int_compare:nNnF { \l__nmc_table_cnum_int } = { 1 }
- {
- \__nmc_table_form_ctitle:nnnn {} {} { 1 }
- { \l__nmc_table_cnum_int }
- }
+ \bool_set_inverse:N \l__nmc_table_rverb_bool
+ \bool_set_inverse:N \l__nmc_table_chverb_bool
}
+ \int_set:Nn \l__nmc_table_rpos_int
+ { \int_min:nn { \l__nmc_table_rpos_int } { 3 } }
+ \bool_if:NT \l__nmc_table_rhead_bool
{
- \int_compare:nNnT { \l__nmc_table_cnum_int } > { 1 }
+ \int_compare:nNnT \l__nmc_table_rnum_int > { 1 }
{
- \int_case:nnF { \l__nmc_table_rpos_int }
+ \bool_if:NF \l__nmc_table_multifn_bool
{
- { 1 } { \__nmc_table_form_ctitle:nnnn { & } {} { 2 }
- { \l__nmc_table_cnum_int + 1 } }
- { 2 } { \__nmc_table_form_ctitle:nnnn {} { & } { 1 }
- { \l__nmc_table_cnum_int } }
- }
- { % 3,4/5
- \__nmc_table_form_ctitle:nnnn { & } { & } { 2 }
- { \l__nmc_table_cnum_int + 1 }
+ \tl_set:Nn \l__nmc_table_rhead_tl { ` }
+ \tl_set:Nn \l__nmc_table_rheadi_tl { ` }
}
}
+ \__nmc_table_settings_rhead:
}
}
-\cs_new:Npn \__nmc_table_form_ctitle:nnnn #1#2#3#4
- {
- #1 \exp_not:N \multicolumn
- { \int_eval:n { \l__nmc_table_cnum_int } } { c }
- { $ \exp_not:o { \l__nmc_table_ctitle_tl } $ }
- #2 \\~
- \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 3 }
- { \exp_not:N \cmidrule(lr) { #3-\int_eval:n { #4 } } }
- \tl_if_empty:NF \l__nmc_table_csubttl_tl
- { \__nmc_table_csubttl: \\~ }
- \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 5 }
- { \__nmc_table_csubttl_rule:nn { #3 } { #4 } }
- }
-%%%%%%%%%
-\cs_new:Npn \__nmc_table_csubttl:
+% not applicable to boolean variables
+\cs_new_protected:Npn \__nmc_table_swap:nNN #1#2#3
{
- \int_if_zero:nF { \l__nmc_table_cnum_int }
- {
- \int_case:nnF { \l__nmc_table_rpos_int }
- {
- { 0 } { \exp_not:o \l__nmc_table_csubttl_tl }
- { 1 } { & \exp_not:o \l__nmc_table_csubttl_tl }
- { 2 } { \exp_not:o \l__nmc_table_csubttl_tl & }
- }
- { & \exp_not:o \l__nmc_table_csubttl_tl & }
- }
+ \tl_set:NV \l__nmc_swap_tl #2
+ \use:c {#1_set_eq:NN} #2 #3
+ \use:c {#1_set_eq:NN} #3 \l__nmc_swap_tl
}
-\cs_new:Npn \__nmc_table_csubttl_rule:nn #1#2
+%%%%%%%%%%
+% process: /
+\cs_new:Npn \__nmc_table_totalcols:
{
- \int_compare:nNnTF { \l__nmc_table_rpos_int } > { 2 }
- { \exp_not:N \cmidrule(lr) { 1-\__nmc_table_total_cols: } }
- { \exp_not:N \cmidrule(lr) { { #1 } -\int_eval:n { #2 } } }
+ \int_eval:n { \int_sign:n { \l__nmc_table_rpos_int }
+ + \l__nmc_table_cnum_int
+ + \int_div_truncate:nn { \l__nmc_table_rpos_int } { 3 } }
}
-%%%%%%%%%
-\cs_new:Npn \__nmc_table_header:
- {
- \int_if_zero:nTF { \l__nmc_table_cnum_int }
+%%%%%%%%%%
+% process:
+\cs_new_protected:Npn \__nmc_table_format_items:
+ {
+ \__nmc_table_rvcol_format:NN
+ \l__nmc_table_rvcol_seq \l__nmc_table_rvcoli_seq
+ \__nmc_table_chead_format:NN
+ \l__nmc_table_chead_seq \l__nmc_table_chead_tl
+ \tl_set:Ne \l__nmc_table_header_tl { \__nmc_table_header: }
+ \__nmc_table_footer:NN
+ \l__nmc_table_footer_tl \l__nmc_table_header_tl
+ \__nmc_table_fvcols_format:N \l__nmc_table_fvcols_seq
+ }
+% format_items: / #1 rvcol_seq #2 rvcoli_seq
+\cs_new_protected:Npn \__nmc_table_rvcol_format:NN #1#2
+ {
+ \seq_set_eq:NN #2 #1
+ \bool_lazy_all:nTF
{
- \__nmc_table_header_rvar:nn { \exp_not:o \l__nmc_table_rhead_tl }
- \l__nmc_table_rhnudge_tl
+ { \l__nmc_table_rvirreg_bool }
+ { \int_compare_p:nNn \l__nmc_table_rfrac_int = { 5 } }
+ { !\l__nmc_table_rverb_bool }
}
- {
- \int_case:nnF { \l__nmc_table_rpos_int }
+ {
+ \__nmc_table_rdatafrac:NN
+ \l__nmc_table_rvcol_seq \l__nmc_table_rvirreg_seq
+ }
+ {
+ \int_zero:N \l__nmc_table_rfrac_int
+ \seq_clear:N \l_tmpa_seq
+ \bool_if:NTF \l__nmc_table_rverb_bool
{
- { 0 } { \exp_not:o \l__nmc_table_chead_tl }
- { 1 }
- {
- \__nmc_table_header_rvar:nn
- { \exp_not:o \l__nmc_table_rhead_tl }
- \l__nmc_table_rhnudge_tl
- & \exp_not:o \l__nmc_table_chead_tl
- }
- { 2 }
- {
- \exp_not:o \l__nmc_table_chead_tl &
- \__nmc_table_header_rvar:nn
- { \exp_not:o \l__nmc_table_rhead_tl }
- \l__nmc_table_rhnudge_tl
+ \seq_map_inline:Nn #1 { \__nmc_table_rvcol_format_aux:nN
+ { \exp_not:n { ##1 } } \l_tmpa_seq }
+ }
+ {
+ \__nmc_table_swap:nNN {int}
+ \l__nmc_frac_out_int \l__nmc_table_rfrac_int
+ \seq_map_inline:Nn #1
+ {
+ \__nmc_num_format:nNnN { ##1 } \l_tmpb_tl
+ { \l__nmc_table_rround_int } \c_false_bool
+ \__nmc_table_rvcol_format_aux:nN \l_tmpb_tl \l_tmpa_seq
}
+ \__nmc_table_swap:nNN {int} \l__nmc_frac_out_int \l__nmc_table_rfrac_int
}
- { % 3,4/5
- \__nmc_table_header_rvar:nn
- { \exp_not:o \l__nmc_table_rhead_tl }
- \l__nmc_table_rhnudge_tl
- & \exp_not:o \l__nmc_table_chead_tl &
- \__nmc_table_header_rvar:nn
- { \exp_not:o \l__nmc_table_rheadi_tl }
- \l__nmc_table_rhnudgei_tl
+ \seq_set_eq:NN #1 \l_tmpa_seq
+ }
+ \int_compare:nNnTF { \l__nmc_table_rpos_int } < { 4 }
+ { \seq_set_eq:NN #2 \l_tmpa_seq }
+ {
+ \bool_if:NF \l__nmc_table_transpose_bool
+ {
+ \bool_if:NTF \l__nmc_table_rvari_bool
+ { \__nmc_table_rvcoli:N #2 }
+ {
+ \seq_reverse:N \l_tmpa_seq
+ \seq_set_eq:NN #2 \l_tmpa_seq
+ }
}
}
}
-\cs_new:Npn \__nmc_table_headercnum:
- {
- \int_compare:nNnTF { \l__nmc_table_cnum_int } = { 1 }
- { \__nmc_table_headeri: }
- { \__nmc_table_headern: }
+% rvcol_format:N #1 rvcoli_seq
+\cs_new_protected:Npn \__nmc_table_rvcoli:N #1
+ {
+ \__nmc_error_where:n { settings }
+ \__nmc_table_swap:nNN {int}
+ \l__nmc_frac_out_int \l__nmc_table_rfrac_int
+ \seq_clear:N \l_tmpb_seq
+ \seq_map_inline:Nn #1
+ {
+ \__nmc_calc_fn_val:VNnN \l__nmc_table_rvar_tl
+ \l__nmc_table_rvari_tl { ##1 } \l_tmpa_fp
+ \__nmc_num_format:nNnN { \l_tmpa_fp } \l_tmpb_tl
+ { \l__nmc_table_rround_int } \c_false_bool
+ \__nmc_table_rvcol_format_aux:VN \l_tmpb_tl \l_tmpb_seq
+ }
+ \__nmc_table_swap:nNN {int} \l__nmc_frac_out_int \l__nmc_table_rfrac_int
+ \seq_set_eq:NN #1 \l_tmpb_seq
+ \seq_gpop:NN \g__nmc_error_where_seq \l__nmc_toss_tl
+ }
+\cs_new_protected:Npn \__nmc_table_rvcol_format_aux:nN #1#2
+ {
+ \seq_put_right:Ne #2 { $ \l__nmc_table_rmath_tl
+ \exp_not:o \l__nmc_table_rfont_tl { \exp_not:o { #1 } } $ }
}
-\cs_new:Npn \__nmc_table_header_rvar:nn #1#2
- { \__nmc_table_header_nudge:Nnn r { #1 } { #2 } }
+\cs_generate_variant:Nn \__nmc_table_rvcol_format_aux:nN { V }
-\cs_new:Npn \__nmc_table_headeri:
+% rvcol_format:N #1 rvcol_seq (out), #2 rvirreg_seq (in)
+\cs_new_protected:Npn \__nmc_table_rdatafrac:NN #1#2
+ {
+ \seq_clear:N \l_tmpa_seq
+ \seq_map_inline:Nn #2
+ {
+ \__nmc_table_rvcol_format_aux:nN
+ { \__nmc_table_rdatafrac_split:wN ##1/\q_stop }
+ \l_tmpa_seq
+ }
+ \seq_set_eq:NN #1 \l_tmpa_seq
+ }
+\cs_new:Npn \__nmc_table_rdatafrac_split:wN #1#2/#3\q_stop
+ {
+ \tl_if_empty:nTF { #3 }
+ { #1#2 }
+ {
+ \tl_if_head_eq_charcode:nNTF { #1 } -
+ { #1 \__nmc_table_frac_out_aux:nn { #2 } }
+ { \__nmc_table_frac_out_aux:nn { #1#2 } }
+ { \__nmc_table_rdatafrac_slash:wN #3\q_stop }
+ }
+ }
+\cs_new:Npn \__nmc_table_rdatafrac_slash:wN #1/\q_stop { #1 }
+\cs_new:Npn \__nmc_table_frac_out_aux:nn #1#2
{
- \tl_if_empty:NT \l__nmc_table_chead_tl
+ \fp_compare:nNnT { #1 } < { 0 } { - }
+ \sfrac { #1 } { #2 }
+ }
+% format_items: / #1 chead_seq #2 chead_tl
+\cs_new_protected:Npn \__nmc_table_chead_format:NN #1#2
+ {
+ \int_compare:nNnTF { \l__nmc_table_cnum_int } = { 1 }
{
- \tl_set:Nx \l__nmc_table_chead_tl
+ \int_compare:nNnTF { \l__nmc_table_rnum_int } = { 1 }
+ { \__nmc_table_chead_n:NN #1 #2 }
+ { \__nmc_table_chead_i:N #2 }
+ }
+ { \__nmc_table_chead_n:NN #1 #2 }
+ }
+% chead_format:NN / #1 chead_seq, but cvar val if transpose=rnum=cnum=1
+\cs_new:Npn \__nmc_table_chead_i:N #1
+ {
+ \tl_if_empty:NT #1
+ {
+ \tl_set:Ne #1
{
- \__nmc_table_header_nudge:Nnn c
+ \__nmc_table_chead_nudge:Nnn c
{
+ \l__nmc_table_chmath_tl
\int_if_zero:nTF { \l__nmc_table_ctitle_int }
{ \exp_not:o \l__nmc_formula_dup_tl }
{ \exp_not:o \l__nmc_table_ctitle_tl }
@@ -871,210 +1133,272 @@
}
}
}
-\cs_new:Npn \__nmc_table_headern:
+% chead_format:NN / #1 chead_seq #2 chead_tl
+\cs_new:Npn \__nmc_table_chead_n:NN #1#2
{
- \int_set_eq:NN \l__nmc_table_chfrac_int \l__nmc_frac_out_int
+ \int_set_eq:NN \l__nmc_table_store_int \l__nmc_frac_out_int
\int_zero:N \l__nmc_frac_out_int
- \tl_if_empty:NT \l__nmc_table_chead_tl
+ \tl_if_empty:NT #2
{
\seq_clear:N \l_tmpa_seq
\bool_set_true:N \l__nmc_table_coli_only_bool
- \bool_if:NTF \l__nmc_table_multifn_bool
+ \bool_if:NTF \l__nmc_table_chverb_bool
{
- \seq_map_inline:Nn \l__nmc_table_header_seq
- { \__nmc_table_header_auxi:Nn \l_tmpa_seq { ##1 } }
+ \seq_map_variable:NNn #1 \l_tmpb_tl
+ { \__nmc_table_chstyler:NN \l_tmpa_seq \l_tmpb_tl }
}
- {
- \seq_map_inline:Nn \l__nmc_table_header_seq
+ {
+ \seq_map_inline:Nn #1
{
\__nmc_num_format:nNnN { ##1 } \l_tmpb_tl
{ \l__nmc_table_chround_int } \l__nmc_sci_num_out_bool
+ \int_if_zero:nF { \l__nmc_table_chstyle_int - 3 }
+ {
+ \tl_set:Ne \l_tmpb_tl
+ { \exp_not:o \l__nmc_table_chfont_tl { \l_tmpb_tl } }
+ }
\__nmc_table_chstyler:NN \l_tmpa_seq \l_tmpb_tl
}
}
- \tl_set:Nx \l__nmc_table_chead_tl { \seq_use:Nn \l_tmpa_seq { & } }
+ \tl_set:Ne #2 { \seq_use:Nn \l_tmpa_seq { & } }
}
- \int_set_eq:NN \l__nmc_frac_out_int \l__nmc_table_chfrac_int
+ \int_set_eq:NN \l__nmc_frac_out_int \l__nmc_table_store_int
}
-\cs_new_protected:Npn \__nmc_table_chstyler:NN #1 #2
- {
- \int_case:nnF { \l__nmc_table_chstyle_int }
+% headern:NN / #1 tmpa_seq #2 tmpb_tl
+\cs_new_protected:Npn \__nmc_table_chstyler:NN #1#2
+ {
+ \bool_if:NTF \l__nmc_table_transpose_bool
+ {
+ \int_compare:nNnT { \l__nmc_table_chstyle_int } > { 2 }
+ { \int_zero:N \l__nmc_table_chstyle_int }
+ }
+ {
+ \bool_if:NT \l__nmc_table_multifn_bool
+ { \int_zero:N \l__nmc_table_chstyle_int }
+ }
+ \int_case:nnTF { \l__nmc_table_chstyle_int }
{
- { 0 } { \__nmc_table_header_auxi:NV #1 #2 }
+ { 0 } { \__nmc_table_chead_auxi:NV #1 #2 }
{ 1 }
{
\bool_if:NTF \l__nmc_table_coli_only_bool
{
- \__nmc_table_header_auxi:Nx #1
+ \__nmc_table_chead_auxi:Ne #1
{ \l__nmc_table_cvar_tl = \exp_not:o #2 }
\bool_set_false:N \l__nmc_table_coli_only_bool
}
- { \seq_put_right:NV #1 #2 }
+ { \__nmc_table_chead_auxi:Ne #1 { \exp_not:o #2 } }
}
- { 2 } { \__nmc_table_header_auxi:Nx #1
+ { 2 } { \__nmc_table_chead_auxi:Ne #1
{ \l__nmc_table_cvar_tl = \exp_not:o #2 } }
- { 3 } { \__nmc_table_header_auxiii:NV #1 #2 }
- { 4 } { \__nmc_table_header_auxiv:NV #1 #2 }
- { 5 } { \seq_set_split:NnV #1 { & } \l__nmc_table_chead_tl }
+ { 3 } { \__nmc_table_chead_auxii:NV #1 #2 }
+ { 4 } { \__nmc_table_chead_auxiii:NV #1 #2 }
}
- { \__nmc_table_header_auxi:NV #1 #2 }
+ {
+ \int_if_zero:nF { \l__nmc_table_chstyle_int }
+ { \tl_set_eq:NN \l__nmc_table_rhead_tl \l__nmc_table_rvar_tl }
+ }
+ {
+ \bool_if:NTF \l__nmc_table_chverb_bool
+ { \seq_set_split:NnV #1 { & } \l__nmc_table_chead_tl }
+ { \__nmc_table_chead_auxi:NV #1 #2 }
+ }
+ \__nmc_table_settings_chnudge:
+ \__nmc_table_settings_chmath:
+ \__nmc_table_settings_chsize:
}
-\cs_new_protected:Npn \__nmc_table_header_auxi:Nn #1#2
- {
- \seq_put_right:Nx #1 { \__nmc_table_header_nudge:Nnn c
- { \exp_not:o { #2 } } \l__nmc_table_chnudge_tl }
+\cs_new_protected:Npn \__nmc_table_chead_auxi:Nn #1#2
+ {
+ \seq_put_right:Ne #1 { \exp_not:o \l__nmc_table_chsize_tl
+ \__nmc_table_chead_nudge:Nnn c
+ { \l__nmc_table_chmath_tl \ \exp_not:n { #2 } }
+ \l__nmc_table_chnudge_tl }
}
-\cs_generate_variant:Nn \__nmc_table_header_auxi:Nn { NV,Nx }
+\cs_generate_variant:Nn \__nmc_table_chead_auxi:Nn { NV,Ne }
-\cs_new_protected:Npn \__nmc_table_header_auxiii:Nn #1#2
- {
+\cs_new_protected:Npn \__nmc_table_chead_auxii:Nn #1#2
+ {
\tl_set_eq:NN \l_tmpa_tl \l__nmc_formula_dup_tl
\regex_replace_all:nnNT { \u{l__nmc_table_cvar_tl} } { #2 } \l_tmpa_tl
- { \__nmc_table_header_auxi:NV #1 \l_tmpa_tl }
+ { \__nmc_table_chead_auxi:NV #1 \l_tmpa_tl }
}
-\cs_generate_variant:Nn \__nmc_table_header_auxiii:Nn { NV }
+\cs_generate_variant:Nn \__nmc_table_chead_auxii:Nn { NV }
-\cs_new_protected:Npn \__nmc_table_header_auxiv:Nn #1#2
- {
+\cs_new_protected:Npn \__nmc_table_chead_auxiii:Nn #1#2
+ {
\tl_set_eq:NN \l_tmpa_tl \l__nmc_formula_dup_tl
\fp_compare:nNnTF { #2 } = { 1 }
{ \regex_replace_all:nnNT { \u{l__nmc_table_cvar_tl} } { } \l_tmpa_tl }
- { \regex_replace_all:nnNT { \u{l__nmc_table_cvar_tl} } { #2 } \l_tmpa_tl }
- { \__nmc_table_header_auxi:NV #1 \l_tmpa_tl }
- }
-\cs_generate_variant:Nn \__nmc_table_header_auxiv:Nn { NV }
+ { \regex_replace_all:nnNT
+ { \u{l__nmc_table_cvar_tl} } { #2 } \l_tmpa_tl }
+ { \__nmc_table_chead_auxi:NV #1 \l_tmpa_tl }
-\cs_new:Npn \__nmc_table_header_nudge:Nnn #1#2#3
- { % #1=r(ow)/c(ol), #2=var, #3=nudge
- \tl_if_eq:cNTF { l__nmc_table_ #1 calign_tl } \c__nmc_r_tl
- { $ #2 #3 $ }
- {
- \tl_if_eq:cNTF { l__nmc_table_ #1 calign_tl } \c__nmc_l_tl
- { $ #3 #2 $ } { $ #2 $ }
+ }
+\cs_generate_variant:Nn \__nmc_table_chead_auxiii:Nn { NV }
+% #1=r(ow)/c(ol), #2=var, #3=nudge
+\cs_new:Npn \__nmc_table_chead_nudge:Nnn #1#2#3
+ {
+ \tl_if_head_eq_charcode:vNTF { l__nmc_table_#1 align_tl } r
+ { $ #2 #3 $ } { $ #3 #2 $ }
+ }
+\cs_generate_variant:Nn \__nmc_table_chead_nudge:Nnn { NnV }
+% format_items: /
+\cs_new:Npn \__nmc_table_header:
+ {
+ \int_if_zero:nTF { \l__nmc_table_cnum_int }
+ { \exp_not:o \l__nmc_table_rhsize_tl
+ \__nmc_table_chead_nudge:Nnn r
+ { \exp_not:o \l__nmc_table_rhead_tl }
+ \l__nmc_table_rhnudge_tl
+ }
+ {
+ \int_if_odd:nT { \l__nmc_table_rpos_int }
+ {
+ \exp_not:o \l__nmc_table_rhsize_tl
+ \__nmc_table_chead_nudge:Nnn r
+ { \exp_not:o \l__nmc_table_rhead_tl }
+ \l__nmc_table_rhnudge_tl &
+ }
+ \exp_not:o \l__nmc_table_chead_tl
+ \int_compare:nNnT { \l__nmc_table_rpos_int } > { 1 }
+ {
+ & \exp_not:o \l__nmc_table_rhsize_tl
+ \__nmc_table_chead_nudge:Nnn r
+ { \exp_not:o \l__nmc_table_rheadi_tl }
+ \l__nmc_table_rhnudgei_tl
+ }
}
}
-\cs_generate_variant:Nn \__nmc_table_header_nudge:Nnn { NnV }
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\cs_new_protected:Npn \__nmc_table_form_body:N #1
- { % #1 <== \l__nmc_result_tl
- \int_if_zero:nF { \l__nmc_table_rpos_int }
+% format_items: / #1 footer_tl, #2 header_tl
+\cs_new_protected:Npn \__nmc_table_footer:NN #1#2
+ {
+ \bool_if:nTF
+ {
+ \l__nmc_table_transpose_bool &&
+ \int_compare_p:nNn { \l__nmc_table_rpos_int } = { 5 }
+ }
+ { \tl_set:Ne #1 { \seq_use:Nn \l__nmc_table_rvcoli_seq { & } } }
{
- \int_set_eq:NN \l__nmca_int \l__nmc_frac_out_int
- \int_set_eq:NN \l__nmc_frac_out_int \l__nmc_table_rfrac_int
- \int_set_eq:NN \l__nmc_table_rfrac_int \l__nmca_int
- \int_if_zero:nTF { \l__nmc_table_rverb_int }
+ \tl_if_empty:NF #1
{
- \seq_clear:N \l_tmpa_seq
- \seq_map_inline:Nn \l__nmc_table_rvraw_seq
- {
- \__nmc_num_format:nNnN { ##1 } \l_tmpa_tl
- { \l__nmc_table_rround_int } \c_false_bool
- \seq_put_right:NV \l_tmpa_seq \l_tmpa_tl
+ \seq_set_split:NnV \l_tmpa_seq { & } #2
+ \str_if_eq:VnTF #1 {''}
+ { \__nmc_table_footer_ditto:NN #1#2 }
+ {
+ \str_if_eq:VnTF #1 { * }
+ { \__nmc_table_footer_reverse:N #1 }
+ { \tl_set_eq:NN #1 #2 }
}
- \__nmc_table_form_rvcol:NN \l_tmpa_seq \l__nmc_table_rvcol_seq
}
- {
- \__nmc_table_form_rvcol:NN
- \l__nmc_table_rdata_seq \l__nmc_table_rvcol_seq
- }
- \int_set_eq:NN \l__nmc_frac_out_int \l__nmc_table_rfrac_int
- }
- \int_zero:N \l__nmc_table_rbloc_int
- \int_if_zero:nTF { \l__nmc_table_cnum_int }
- { \__nmc_table_form_body_rvcol_only:N #1 }
- { \__nmc_table_form_body_cvcols:N #1 }
+ }
}
-\cs_new_protected:Npn \__nmc_table_form_rvcol:NN #1#2
+\cs_new_protected:Npn \__nmc_table_footer_ditto:NN #1#2
{
- \seq_clear:N \l_tmpb_seq
- \seq_map_variable:NNn #1 \l_tmpa_tl
+ \bool_if:NTF \l__nmc_table_rhauto_bool
{
- \seq_put_right:Nx \l_tmpb_seq
- { \exp_not:o \l__nmc_table_rfont_tl { \exp_not:o \l_tmpa_tl } }
- }
- \seq_set_eq:NN #2 \l_tmpb_seq
- \int_compare:nNnTF { \l__nmc_table_rpos_int } > { 3 }
- { \__nmc_table_form_rvcoli:NN #1 #2 } % reverse/pivot
- { \seq_set_eq:NN \l__nmc_table_rvcoli_seq #2 }
+ \int_if_odd:nT { \l__nmc_table_rpos_int }
+ {
+ \seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl
+ \tl_replace_once:Nnn \l_tmpa_tl { \backslash } { / }
+ \seq_put_left:NV \l_tmpa_seq \l_tmpa_tl
+ }
+ \int_compare:nNnT { \l__nmc_table_rpos_int } > { 1 }
+ {
+ \seq_pop_right:NN \l_tmpa_seq \l_tmpa_tl
+ \tl_replace_once:Nnn \l_tmpa_tl { / } { \backslash }
+ \seq_put_right:NV \l_tmpa_seq \l_tmpa_tl
+ }
+ \tl_set:Ne #1 { \seq_use:Nn \l_tmpa_seq { & } }
+ }
+ { \tl_set_eq:NN #1 #2 }
}
-\cs_new_protected:Npn \__nmc_table_form_rvcoli:NN #1 #2
- {
- \seq_clear:N \l__nmc_table_rvcoli_seq
- \seq_map_variable:NNn #1 \l_tmpa_tl
+\cs_new_protected:Npn \__nmc_table_footer_reverse:N #1
+ {
+ \int_if_zero:nTF \l__nmc_table_cnum_int
{
- \__nmc_calc_fn_val:VNnN \l__nmc_table_rvar_tl
- \l__nmc_table_rvari_tl \l_tmpa_tl \l_tmpa_fp
- \__nmc_num_format:nNnN { \l_tmpa_fp } \l_tmpb_tl
- { \l__nmc_table_rround_int } \c_false_bool
- \seq_put_right:Nx \l__nmc_table_rvcoli_seq
- { \exp_not:o \l__nmc_table_rfont_tl { \l_tmpb_tl } }
+ \seq_pop_left:NNT \l_tmpa_seq \l_tmpa_tl
+ { \tl_set:NV #1 \l_tmpa_tl }
}
- }
-\cs_new_protected:Npn \__nmc_table_form_body_rvcol_only:N #1
- { % #1 = \l__nmc_result_tl
- \seq_clear:N \l_tmpb_seq
- \seq_map_variable:NNn \l__nmc_table_rvcol_seq \l_tmpa_tl
{
- \tl_put_right:Nx #1
- { \exp_not:o \l_tmpa_tl \\~ }
- \__nmc_table_rbloc_spc:NN \l__nmc_table_rbloc_int \l_tmpa_bool
- \bool_if:NT \l_tmpa_bool
- {
- \tl_put_right:Nx #1
- { \exp_not:o \addlinespace[\l__nmc_table_blocsep_tl] }
- }
+ \seq_reverse:N \l_tmpa_seq
+ \tl_set:Ne #1 { \seq_use:Nn \l_tmpa_seq { & } }
}
}
-\cs_new_protected:Npn \__nmc_table_form_body_cvcols:N #1
- { % #1 \l__nmc_result_tl
+%%%%%%%%%%
+% process: /
+\cs_new_protected:Npn \__nmc_table_assemble_body:
+ {
+ \__nmc_table_attach_rvcol:N \l__nmc_table_fvcols_seq
+ \__nmc_table_rows_from_cols:N \l__nmc_table_rows_seq
+ \__nmc_table_space_rows:N \l__nmc_result_tl
+ }
+% assemble_body: / #1 fvcols_seq
+\cs_new_protected:Npn \__nmc_table_fvcols_format:N #1
+ {
+ \int_zero:N \l__nmc_table_rbloc_int
\bool_if:NT \l__nmc_table_round_bool
- { \__nmc_table_cvround_pre: }
+ { \__nmc_table_reset_rounding:Nn c { 0 } }
\seq_clear:N \l_tmpd_seq
- \seq_map_variable:NNn \l__nmc_table_body_cols_seq \l_tmpa_seq
+ \seq_map_variable:NNn #1 \l_tmpa_seq
{
\bool_if:NT \l__nmc_table_round_bool
- { \__nmc_table_rvround_pre: }
+ { \__nmc_table_reset_rounding:Nn r { 0 } }
\seq_clear:N \l_tmpb_seq
- \__nmc_table_form_cols:NN \l_tmpa_seq \l_tmpb_seq
+ \__nmc_table_bodycols_format:NN \l_tmpb_seq \l_tmpa_seq
\seq_put_right:NV \l_tmpd_seq \l_tmpb_seq
}
- \__nmc_table_transpose:NN \l_tmpd_seq \l__nmc_table_body_rows_seq
- \seq_map_variable:NNn \l__nmc_table_body_rows_seq \l_tmpa_seq
- {
- \__nmc_table_rbloc_spc:NN \l__nmc_table_rbloc_int \l_tmpa_bool
- \tl_put_right:Nx #1
- {
- \seq_use:Nn \l_tmpa_seq { & }
- \\~
- \bool_if:NT \l_tmpa_bool
- { \exp_not:o \addlinespace[\l__nmc_table_blocsep_tl] }
- }
- }
+ \seq_set_eq:NN #1 \l_tmpd_seq
}
-\cs_new_protected:Npn \__nmc_table_transpose:NN #1#2
- { % #1 seq of seq in #2 seq of seq out
+% process: #1 fvcols_seq
+\cs_new_protected:Npn \__nmc_table_attach_rvcol:N #1
+ {
\int_if_zero:nF { \l__nmc_table_rpos_int }
{
\int_compare:nNnF { \l__nmc_table_rpos_int } = { 2 }
- { \seq_put_left:NV #1 \l__nmc_table_rvcol_seq }
+ { \seq_put_left:NV #1 \l__nmc_table_rvcol_seq }
\int_compare:nNnT { \l__nmc_table_rpos_int } > { 1 }
- { \seq_put_right:NV #1 \l__nmc_table_rvcoli_seq }
+ { \seq_put_right:NV #1 \l__nmc_table_rvcoli_seq }
}
+ }
+\cs_new_protected:Npn \__nmc_table_attach_rvcol_aux:nn #1#2
+ {
+ \seq_put_left:Nn #2 { #1 }
+ \seq_put_right:Nn \l_tmpa_seq { #2 }
+ }
+% process: #1 rows_seq
+\cs_new_protected:Npn \__nmc_table_rows_from_cols:N #1
+ {
\int_step_inline:nn { \l__nmc_table_rnum_int }
{
\seq_clear:N \l_tmpb_seq
\seq_clear:N \l_tmpc_seq
- \seq_map_variable:NNn #1 \l_tmpa_seq
+ \seq_map_variable:NNn \l__nmc_table_fvcols_seq \l_tmpa_seq
{
\seq_pop:NN \l_tmpa_seq \l_tmpa_tl
- \seq_put_right:Nx \l_tmpb_seq { $\exp_not:o\l_tmpa_tl $ }
+ \seq_put_right:Ne \l_tmpb_seq { \exp_not:o\l_tmpa_tl }
\seq_put_right:NV \l_tmpc_seq \l_tmpa_seq
}
- \seq_put_right:NV \l__nmc_table_body_rows_seq \l_tmpb_seq
- \seq_set_eq:NN #1 \l_tmpc_seq
+ \seq_put_right:NV #1 \l_tmpb_seq
+ \seq_set_eq:NN \l__nmc_table_fvcols_seq \l_tmpc_seq
+ }
+ }
+% process: #1 \l__nmc_result_tl
+\cs_new_protected:Npn \__nmc_table_space_rows:N #1
+ {
+ \tl_clear:N \l__nmc_result_tl
+ \seq_map_variable:NNn \l__nmc_table_rows_seq \l_tmpa_seq
+ {
+ \__nmc_table_rbloc_spc:NN \l__nmc_table_rbloc_int \l_tmpa_bool
+ \tl_put_right:Ne #1
+ {
+ \seq_use:Nn \l_tmpa_seq { & } \\~
+ \bool_if:NT \l_tmpa_bool
+ { \exp_not:o \addlinespace[\l__nmc_table_rblocsep_tl] }
+ }
}
}
-\cs_new:Npn \__nmc_table_rbloc_spc:NN #1#2
+
+\cs_new_protected:Npn \__nmc_table_rbloc_spc:NN #1#2
{
\int_incr:N #1
\bool_set_false:N #2
@@ -1084,30 +1408,31 @@
{ \bool_set_true:N #2 }
\clist_if_empty:NF \l__nmc_table_rbloc_clist
{ \clist_pop:NN \l__nmc_table_rbloc_clist \l__nmc_table_rbloc_tl }
- \tl_set:Nx \l__nmc_table_rblock_tl
+ \tl_set:Ne \l__nmc_table_rblock_tl
{ \int_eval:n { \l__nmc_table_rblock_tl + \l__nmc_table_rbloc_tl } }
}
}
-\cs_new_protected:Npn \__nmc_table_form_cols:NN #1#2
- { % #1 raw cseq, #2 <--formatted cseq
- \int_case:nnF { \l__nmc_table_rnum_int }
+% #1 formatted col seq out #2 raw col seq in
+\cs_new_protected:Npn \__nmc_table_bodycols_format:NN #1#2
+ {
+ \int_case:nnF { \l__nmc_table_rnum_int }
{
{ 0 } { \prg_do_nothing: }
- { 1 } { \__nmc_table_form_cols_ri:NN #1#2 }
- { 2 } { \__nmc_table_form_cols_rii:NN #1#2 }
+ { 1 } { \__nmc_table_form_cols_ri:NN #1 #2 }
+ { 2 } { \__nmc_table_form_cols_rii:NN #1 #2 }
}
- { \__nmc_table_form_cols_riii:NN #1#2 }
+ { \__nmc_table_form_cols_riii:NN #1 #2 }
\bool_if:NT \l__nmc_table_round_bool
- { \__nmc_table_cvround_post: }
+ { \__nmc_table_reset_rounding:Nn c { 1 } }
}
\cs_new_protected:Npn \__nmc_table_form_cols_ri:NN #1#2
{
- \seq_pop:NN #1 \l_tmpb_fp
+ \seq_pop:NN #2 \l_tmpb_fp
\__nmc_num_format:nNnN \l_tmpb_fp \l_tmpb_tl
{ \l__nmc_round_int } \l__nmc_sci_num_table_bool
\bool_if:NT \l__nmc_table_QA_bool
{ \__nmc_table_QA:N \l_tmpb_tl }
- \seq_put_right:Nx #2 { \exp_not:o \l_tmpb_tl }
+ \seq_put_right:Ne #1 { $ \exp_not:o \l_tmpb_tl $ }
}
\cs_new_protected:Npn \__nmc_table_form_cols_rii:NN #1#2
{
@@ -1116,15 +1441,15 @@
\__nmc_num_format:nNnN \l_tmpb_fp \l_tmpb_tl
{ \l__nmc_round_int } \l__nmc_sci_num_out_bool
\__nmc_table_num_format:N \l_tmpb_tl
- \seq_put_right:Nx #2
- { \exp_not:o \l_tmpb_tl \exp_not:o \l__nmc_table_diff_tl }
+ \seq_put_right:Ne #1
+ { $ \exp_not:o \l_tmpb_tl \exp_not:o \l__nmc_table_diffs_tl $ }
}
\cs_new_protected:Npn \__nmc_table_form_cols_rii_aux:NN #1#2
{
- \seq_pop:NN #1 \l_tmpb_fp
+ \seq_pop:NN #2 \l_tmpb_fp
\int_if_zero:nF \l__nmc_table_diffs_int
{ \__nmc_table_form_diffs_null:n { \l__nmc_table_diffs_int } }
- \seq_pop:NN #1 \l_tmpa_fp
+ \seq_pop:NN #2 \l_tmpa_fp
\int_set:Nn \l__nmc_table_c_int { 1 }
\int_set:Nn \l__nmc_table_b_int { \fp_sign:n { \l_tmpb_fp } }
\int_set:Nn \l__nmc_table_a_int { \fp_sign:n { \l_tmpa_fp } }
@@ -1132,8 +1457,8 @@
\__nmc_num_format:nNnN \l_tmpb_fp \l_tmpb_tl
{ \l__nmc_round_int } \l__nmc_sci_num_out_bool
\__nmc_table_num_format:N \l_tmpb_tl
- \seq_put_right:Nx #2
- { \exp_not:o \l_tmpb_tl \exp_not:o \l__nmc_table_diff_tl }
+ \seq_put_right:Ne #1
+ { $ \exp_not:o \l_tmpb_tl \exp_not:o \l__nmc_table_diffs_tl $ }
\int_if_zero:nF \l__nmc_table_diffs_int
{ \__nmc_table_calc_diffs:nn { \l_tmpb_fp } { \l_tmpa_fp } }
\fp_set_eq:NN \l_tmpb_fp \l_tmpa_fp
@@ -1142,33 +1467,33 @@
{
\__nmc_table_form_cols_rii_aux:NN #1#2
\bool_if:NT \l__nmc_table_round_bool
- { \__nmc_table_rvround_post: }
+ { \__nmc_table_reset_rounding:Nn r { 1 } }
\int_set_eq:NN \l__nmc_table_c_int \l__nmc_table_b_int
- \int_set_eq:NN \l__nmc_table_b_int \l__nmc_table_a_int
- \seq_map_variable:NNn #1 \l_tmpa_fp
+ \int_set_eq:NN \l__nmc_table_b_int \l__nmc_table_a_int
+ \seq_map_variable:NNn #2 \l_tmpa_fp
{
\int_set:Nn \l__nmc_table_a_int { \fp_sign:n { \l_tmpa_fp } }
\__nmc_table_signs:
\__nmc_num_format:nNnN \l_tmpb_fp \l_tmpb_tl
{ \l__nmc_round_int } \l__nmc_sci_num_out_bool
\__nmc_table_num_format:N \l_tmpb_tl
- \seq_put_right:Nx #2
- { \exp_not:o \l_tmpb_tl \exp_not:o \l__nmc_table_diff_tl }
+ \seq_put_right:Ne #1
+ { $ \exp_not:o \l_tmpb_tl \exp_not:o \l__nmc_table_diffs_tl $ }
\int_if_zero:nF \l__nmc_table_diffs_int
{ \__nmc_table_calc_diffs:nn { \l_tmpb_fp } { \l_tmpa_fp } }
\fp_set_eq:NN \l_tmpb_fp \l_tmpa_fp
\int_set_eq:NN \l__nmc_table_c_int \l__nmc_table_b_int
\int_set_eq:NN \l__nmc_table_b_int \l__nmc_table_a_int
\bool_if:NT \l__nmc_table_round_bool
- { \__nmc_table_rvround_post: }
+ { \__nmc_table_reset_rounding:Nn r { 1 } }
}
\int_set:Nn \l__nmc_table_a_int { 1 }
\__nmc_table_signs:
\__nmc_num_format:nNnN \l_tmpb_fp \l_tmpb_tl
{ \l__nmc_round_int } \l__nmc_sci_num_out_bool
\__nmc_table_num_format:N \l_tmpb_tl
- \seq_put_right:Nx #2
- { \exp_not:o \l_tmpb_tl \exp_not:o \l__nmc_table_diff_tl }
+ \seq_put_right:Ne #1
+ { $ \exp_not:o \l_tmpb_tl \exp_not:o \l__nmc_table_diffs_tl $ }
}
\cs_new_protected:Npn \__nmc_table_num_format:N #1
{
@@ -1180,11 +1505,11 @@
\__nmc_table_t_format:wN #1\q_stop \l_tmpa_tl
\tl_set_eq:NN #1 \l_tmpa_tl
}
- { \tl_set:Nx #1 { \__nmc_sci_num_table_signs:n { #1 } }
+ { \tl_set:Ne #1 { \__nmc_sci_num_table_signs:n { #1 } }
}
}
- { \tl_set:Nx #1 { \__nmc_sci_num_table_signs:n { #1 } } }
+ { \tl_set:Ne #1 { \__nmc_sci_num_table_signs:n { #1 } } }
\bool_if:NT \l__nmc_table_QA_bool
{ \__nmc_table_QA:N #1 }
}
@@ -1193,12 +1518,12 @@
\fp_compare:nNnT { \l__nmc_table_Q_tl } = { 1 }
{
\bool_lazy_and:nnT
- { \l__nmc_num_only_bool } { !\l__nmc_table_num_only_bool }
+ { \l__nmc_num_only_bool } { !\l__nmc_table_numonly_bool }
{
- \tl_set_eq:NN \l__nmc_table_num_only_tl #1
- \bool_set_true:N \l__nmc_table_num_only_bool
+ \tl_set_eq:NN \l__nmc_table_numonly_tl #1
+ \bool_set_true:N \l__nmc_table_numonly_bool
}
- \tl_set:Nx #1 { \l__nmc_table_A_tl }
+ \tl_set:Ne #1 { \l__nmc_table_A_tl }
}
}
\cs_new_protected:Npn \__nmc_table_t_format:wN (#1)#2#3\q_stop #4
@@ -1206,138 +1531,207 @@
\tl_set:Nn \l__nmc_toss_tl { #1 }
\__nmc_table_prepad:Nnn \l__nmc_toss_tl
{ \l__nmc_table_tsigns_int } { \exp_not:o \hphantom{-} }
- \tl_set:Nx #4 { \__nmc_sci_num_table_plus:nn
+ \tl_set:Ne #4 { \__nmc_sci_num_table_plus:nn
{ #3 } { \exp_not:o\l__nmc_toss_tl } }
- }
-\cs_new_protected:Npn \__nmc_table_signs:
- { % A prev, B current, C next
- \int_compare:nNnTF \l__nmc_table_b_int > { -1 }
- {
- \bool_lazy_or:nnTF
- { \int_compare_p:nNn \l__nmc_table_a_int = { -1 } }
- { \int_compare_p:nNn \l__nmc_table_c_int = { -1 } }
- { \bool_set_true:N \l__nmc_table_signs_bool }
- { \bool_set_false:N \l__nmc_table_signs_bool }
- }
- { \bool_set_false:N \l__nmc_table_signs_bool }
}
-%%%%%%%%%%
\cs_new_protected:Npn \__nmc_table_calc_diffs:nn #1#2
{
\__nmc_num_format:nNnN
{ \fp_abs:n {round( #1,\l__nmc_round_int )
- round( #2, \l__nmc_round_int) } } \l_tmpb_tl
{ \l__nmc_round_int } \c_false_bool
- \tl_set:Nx \l_tmpb_tl { \fp_eval:n { round( 10^{ \l__nmc_round_int }
+ \tl_set:Ne \l_tmpb_tl { \fp_eval:n { round( 10^{ \l__nmc_round_int }
* \l_tmpb_tl, \l__nmc_round_int + 1) } }
\__nmc_table_prepad:Nnn \l_tmpb_tl { \l__nmc_table_diffs_int } { 0 }
- \tl_set:Nx \l__nmc_table_diff_tl { ^{\,^{ \l_tmpb_tl } } }
+ \tl_set:Ne \l__nmc_table_diffs_tl { ^{\,^{ \l_tmpb_tl } } }
}
\cs_new_protected:Npn \__nmc_table_form_diffs_null:n #1
{
\tl_set:Nn \l_tmpb_tl { 0 }
\__nmc_table_prepad:Nnn \l_tmpb_tl { #1 } { 0 }
- \tl_set:Nx \l__nmc_table_diff_tl
+ \tl_set:Ne \l__nmc_table_diffs_tl
{ ^{\,^{ \exp_not:o \hphantom{ \l_tmpb_tl } } } }
+ }
+\cs_new_protected:Npn \__nmc_table_signs:
+ { % A prev, B current, C next
+ \int_compare:nNnTF \l__nmc_table_b_int > { -1 }
+ {
+ \bool_lazy_or:nnTF
+ { \int_compare_p:nNn \l__nmc_table_a_int = { -1 } }
+ { \int_compare_p:nNn \l__nmc_table_c_int = { -1 } }
+ { \bool_set_true:N \l__nmc_table_signs_bool }
+ { \bool_set_false:N \l__nmc_table_signs_bool }
+ }
+ { \bool_set_false:N \l__nmc_table_signs_bool }
}
-%%%%%%%%%%%%%%%%%%%
-\cs_new:Npn \__nmc_table_form_lower:
- {
- \tl_if_empty:NF \l__nmc_table_footer_tl
+\cs_new:Npn \__nmc_sci_num_table_signs:n #1
+ {
+ \int_compare:nNnF { \l__nmc_num_sgn_int } < { 0 }
{
- \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 11 }
- { \exp_not:N \cmidrule(lr) { 1-\__nmc_table_total_cols: } }
- \exp_not:o \l__nmc_table_footer_tl \\~
- }
- \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 13 }
- { \exp_not:N \bottomrule }
- \exp_not:n { \end{tabular} }
- }
-%------------------------------------------------
-\cs_new_protected:Npn \__nmc_table_set_rcnum:nn #1#2
+ \int_case:nn { \l__nmc_table_signs_int }
+ {
+ {-2 } { \exp_not:N \hphantom{+} }
+ {-1 } { \bool_if:NTF \l__nmc_table_signs_bool
+ { + }{ \exp_not:N \hphantom{+} } }
+ { 1 } { \bool_if:NT \l__nmc_table_signs_bool { + } }
+ { 2 } { + }
+ }
+ }
+ \exp_not:o { #1 }
+ }
+\cs_new_protected:Npn \__nmc_table_prepad:Nnn #1#2#3
+ {
+ \tl_put_left:Ne #1 { \prg_replicate:nn
+ { \int_max:nn { #2 - \tl_count:N #1 } { 0 } } { #3 } }
+ }
+\cs_new:Npn \__nmc_sci_num_table_plus:nn #1#2
+ { % #1 significand, #2 exponent
+ \fp_compare:nTF { #1 >= 0 }
+ { ( #2 )\,{ \__nmc_sci_num_table_signs:n { #1 } } }
+ { ( #2 )\,{ #1 } }
+ }
+% \__nmc_table_format_cols:NN, #1 r/c; #2 0 (pre)/1 (post)
+\cs_new_protected:Npn \__nmc_table_reset_rounding:Nn #1#2
+ {
+ \int_if_zero:nTF { #2 }
+ { \fp_set_eq:cc { l__nmc_table_#1_fp } { l__nmc_table_#1 start_fp } }
+ { \fp_add:cv { l__nmc_table_#1_fp } { l__nmc_table_#1step_fp } }
+ \prop_put:Nve \l__nmc_subst_var_prop { l__nmc_table_#1 var_tl }
+ { \fp_use:c { l__nmc_table_#1_fp } }
+ \tl_clear:N \l_tmpc_tl
+ \__nmc_fpify:VN \l__nmc_round_xpr_tl \l_tmpc_tl
+ \int_set:Nn \l__nmc_round_int { \fp_to_int:n \l_tmpc_tl }
+ }
+% thiscol_calc:NN #1 tmpa_fp (fn val. from calc_fn_val:VNnN)
+\cs_new_protected:Npn \__nmc_table_maxmin_do:n #1
{
- \__nmc_fpify_set:Nn \l_tmpb_fp { #1 }
- \int_set:cn { l__nmc_table_ #2 num_int } { \fp_to_int:N \l_tmpb_fp }
+ \bool_if:NT \l__nmc_table_QAmax_bool
+ { \fp_set:Nn \l__nmc_table_max_fp
+ { \fp_max:nn { \l__nmc_table_max_fp } { #1} } }
+ \bool_if:NT \l__nmc_table_QAmin_bool
+ { \fp_set:Nn \l__nmc_table_min_fp
+ { \fp_min:nn { \l__nmc_table_min_fp } { #1 } } }
}
-\cs_generate_variant:Nn \__nmc_table_set_rcnum:nn { V }
-
-\cs_new_protected:Npn \__nmc_table_rvfile:n #1
+%%%%%%%%%%
+% process: /
+\cs_new_protected:Npn \__nmc_table_num_only:
{
- \file_get:nnNTF { #1 } {} \l_tmpa_tl
- { \seq_set_from_clist:No \l__nmc_table_rdata_seq \l_tmpa_tl }
- { \__nmc_error_what:n { File~#1~not~found~in } }
+ \bool_if:NTF \l__nmc_table_numonly_bool
+ {
+ \tl_set_eq:NN \l__nmc_result_tl \l__nmc_table_numonly_tl
+ \tl_gset_eq:NN \g__nmc_reuse_tl \l__nmc_table_numonly_tl
+ \bool_gset_true:N \g__nmc_reuse_bool
+ }
+ {
+ \__nmc_error_where:n { settings }
+ \__nmc_error_what:n
+ { \l__nmc_table_query_tl~query~\__nmc_verb:n {Q?}~in }
+ \tl_clear:N \l__nmc_result_tl
+ }
+ }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% display:
+\cs_new:Npn \__nmc_table_upper:
+ {
+ \exp_not:n { \begin{tabular} }
+ \l__nmc_table_valign_tl
+ {
+ \int_if_odd:nT { \l__nmc_table_rpos_int }
+ { \l__nmc_table_ralign_tl }
+ \prg_replicate:nn
+ { \l__nmc_table_cnum_int } \l__nmc_table_calign_tl
+ \int_compare:nNnT { \l__nmc_table_rpos_int } > { 1 }
+ { \l__nmc_table_ralign_tl }
+ }
+ \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 2 }
+ { \exp_not:N \toprule }
+ \int_if_zero:nF { \l__nmc_table_ctitle_int }
+ { \__nmc_table_ctitle_form: }
}
-\cs_new_protected:Npn \__nmc_table_rounding:n #1
+% upper:
+\cs_new:Npn \__nmc_table_ctitle_form:
{
- \bool_set:Nn \l__nmc_table_round_bool { !\tl_if_blank_p:n { #1 } }
- \tl_set:Nn \l__nmc_round_xpr_tl { #1 }
+ \int_compare:nNnTF { \l__nmc_table_rpos_int } = { 0 }
+ {
+ \int_compare:nNnF { \l__nmc_table_cnum_int } = { 1 }
+ {
+ \__nmc_table_ctitle_form:nenn { 1 }
+ { \int_use:N \l__nmc_table_cnum_int } {} {}
+ }
+ }
+ {
+ \int_compare:nNnT { \l__nmc_table_cnum_int } > { 1 }
+ {
+ \int_case:nnF { \l__nmc_table_rpos_int }
+ {
+ { 1 } { \__nmc_table_ctitle_form:nenn { 2 }
+ { \l__nmc_table_totalcols_tl } { & } {} }
+ { 2 } { \__nmc_table_ctitle_form:nenn { 1 }
+ { \int_use:N \l__nmc_table_cnum_int } {} { & } }
+ }
+ { % 3,4/5
+ \__nmc_table_ctitle_form:nenn { 2 }
+ { \int_eval:n { \l__nmc_table_cnum_int + 1 } }
+ { & } { & }
+ }
+ }
+ }
}
-\keys_define:nn { numerica/table }
+% ctitle_form: #1 midrule start, #2 midrule end, #3 left &, #4 right &
+\cs_new:Npn \__nmc_table_ctitle_form:nnnn #1#2#3#4
+ {
+ #3 \exp_not:N \multicolumn
+ { \int_eval:n { \l__nmc_table_cnum_int } } { c }
+ { $ \exp_not:o \l__nmc_table_ctitle_tl $ }
+ #4 \\~
+ \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 3 }
+ { \exp_not:N \cmidrule(lr) { #1-\int_eval:n { #2 } } }
+ \tl_if_empty:NF \l__nmc_table_csubt_tl
+ {
+ \__nmc_table_csubtitle:
+ \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 5 }
+ { \__nmc_table_csubtitle_rule:nn { #1 } { #2 } }
+ }
+ }
+\cs_generate_variant:Nn \__nmc_table_ctitle_form:nnnn { ne }
+% ctitle_form:nnnn
+\cs_new:Npn \__nmc_table_csubtitle:
{
- view .code:n = \__nmc_dbg_int:nn { 1 } { 11 },
- round .code:n = \__nmc_table_rounding:n { #1 },
-%
- rvar .tl_set:N = \l__nmc_table_rvar_tl,
- rstop .tl_set:N = \l__nmc_table_rstop_tl,
- rstep .tl_set:N = \l__nmc_table_rstep_tl,
- rows .code:n = \__nmc_table_set_rcnum:nn { #1 } { r },
- rspec .clist_set:N = \l__nmc_table_rspec_clist,
- rfunc .tl_set:N = \l__nmc_table_rfunc_tl,
- rdata .code:n = \tl_if_single:nTF { #1 }
- { \seq_set_from_clist:NN \l__nmc_table_rdata_seq #1 }
- { \seq_set_from_clist:No \l__nmc_table_rdata_seq { ~#1 } },
- rfile .code:n = \__nmc_table_rvfile:n { #1 },
- rverb .int_set:N = \l__nmc_table_rverb_int,
- rfrac .int_set:N = \l__nmc_table_rfrac_int,
- rfrac .initial:n = 0,
- rround .int_set:N = \l__nmc_table_rround_int,
- rround .initial:n = 1,
- rfont .code:n = \tl_set:Nn \l__nmc_table_rfont_tl
- { \use:c { math#1 } },
- ralign .tl_set:N = \l__nmc_table_rcalign_tl,
- ralign .initial:n = r,
- rhead .tl_set:N = \l__nmc_table_rhead_tl,
- rhnudge .code:n = \tl_set:Nn \l__nmc_table_rhnudge_tl
- { \mkern #1 mu },
- rpos .int_set:N = \l__nmc_table_rpos_int,
- rpos .initial:n = 1,
- rvar' .tl_set:N = \l__nmc_table_rvari_tl,
- rhead' .tl_set:N = \l__nmc_table_rheadi_tl,
- rhnudge' .code:n = \tl_set:Nn \l__nmc_table_rhnudgei_tl
- { \mkern #1 mu },
-%
- cvar .tl_set:N = \l__nmc_table_cvar_tl,
- cstop .tl_set:N = \l__nmc_table_cstop_tl,
- cstep .tl_set:N = \l__nmc_table_cstep_tl,
- cols .code:n = \__nmc_table_set_rcnum:nn { #1 } { c },
- cspec .clist_set:N = \l__nmc_table_cspec_clist,
- calign .tl_set:N = \l__nmc_table_ccalign_tl,
- calign .initial:n = r,
- chstyle .int_set:N = \l__nmc_table_chstyle_int,
- chnudge .code:n = \tl_set:Nn \l__nmc_table_chnudge_tl
- { \mkern #1 mu },
- chead .tl_set:N = \l__nmc_table_chead_tl,
- chround .int_set:N = \l__nmc_table_chround_int,
-%
- ctitle .tl_set:N = \l__nmc_table_ctitle_tl,
- cmidrow .tl_set:N = \l__nmc_table_csubttl_tl,
- csubttl .tl_set:N = \l__nmc_table_csubttl_tl,
- headless .int_set:N = \l__nmc_table_headless_int,
- headless .initial:n = 0,
- rules .tl_set:N = \l__nmc_table_rules_tl,
- rules .initial:n = ThB,
- foot .tl_set:N = \l__nmc_table_footer_tl,
- rbloc .clist_set:N = \l__nmc_table_rbloc_clist,
- rblocsep .tl_set:N = \l__nmc_table_blocsep_tl,
- rblocsep .initial:n = 1ex,
- signs .int_set:N = \l__nmc_table_signs_int,
- (pad) .int_set:N = \l__nmc_table_tsigns_int,
- diffs .int_set:N = \l__nmc_table_diffs_int,
- diffs .initial:n = 0,
-%
- Q? .tl_set:N = \l__nmc_table_Q_tl,
- A! .tl_set:N = \l__nmc_table_A_tl,
- valign .code:n = \tl_set:Nn \l__nmc_table_valign_tl { [#1] },
- valign .initial:n = m
+ \int_if_zero:nF { \l__nmc_table_cnum_int }
+ {
+ \int_case:nnF { \l__nmc_table_rpos_int }
+ {
+ { 1 } { & \exp_not:o \l__nmc_table_csubt_tl }
+ { 2 } { \exp_not:o \l__nmc_table_csubt_tl & }
+ { 0 } { \exp_not:o \l__nmc_table_csubt_tl }
+ }
+ { & \exp_not:o \l__nmc_table_csubt_tl & }
+ }
+ \\~
}
+% ctitle_form:nnnn
+\cs_new:Npn \__nmc_table_csubtitle_rule:nn #1#2
+ {
+ \int_compare:nNnTF { \l__nmc_table_rpos_int } > { 2 }
+ { \exp_not:N \cmidrule(lr) { 1-\l__nmc_table_totalcols_tl } }
+ { \exp_not:N \cmidrule(lr) { { #1 }-\int_eval:n { #2 } } }
+ }
+% display:
+\cs_new:Npn \__nmc_table_lower:
+ {
+ \tl_if_empty:NF \l__nmc_table_footer_tl
+ {
+ \__nmc_if_mod_zero:nnTF { \l__nmc_table_rules_int } { 17 }
+ { \exp_not:N \midrule }
+ {
+ \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 13 }
+ { \exp_not:N \cmidrule(lr) { 1-\l__nmc_table_totalcols_tl } }
+ }
+ \exp_not:o \l__nmc_table_footer_tl
+ \\~
+ }
+ \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 19 }
+ { \exp_not:N \bottomrule }
+ \exp_not:n { \end{tabular} }
+ }
% end of `numerica-tables.sty' \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/ocgx2/ocgbase.sty b/Master/texmf-dist/tex/latex/ocgx2/ocgbase.sty
index 690bd593ce6..e182f8670d5 100644
--- a/Master/texmf-dist/tex/latex/ocgx2/ocgbase.sty
+++ b/Master/texmf-dist/tex/latex/ocgx2/ocgbase.sty
@@ -100,8 +100,8 @@
%
% The Current Maintainer of this work is A. Grahn.
-\def\g@ocgbase@date@tl{2024/08/28}
-\def\g@ocgbase@version@tl{0.23}
+\def\g@ocgbase@date@tl{2024/09/15}
+\def\g@ocgbase@version@tl{0.24}
\ProvidesExplPackage{ocgbase}{\g@ocgbase@date@tl}{\g@ocgbase@version@tl}
{support package for ocgx2.sty}
@@ -424,8 +424,8 @@
%
% The Current Maintainer of this work is A. Grahn.
-\def\g@ocgbase@date@tl{2024/08/28}
-\def\g@ocgbase@version@tl{0.23}
+\def\g@ocgbase@date@tl{2024/09/15}
+\def\g@ocgbase@version@tl{0.24}
\ProvidesExplPackage{ocgbase}{\g@ocgbase@date@tl}{\g@ocgbase@version@tl}
{support package for ocgx2.sty}
@@ -514,11 +514,14 @@
}
\pdfmanagement_add:nnx{Catalog/OCProperties}{OCGs}{\g_ocgbase_ocgs_tl}
\pdfmanagement_add:nnx{Catalog/OCProperties}{D}{<<
- /AS~[
- <</Event/View /Category[/View] /OCGs~\l_ocgbase_ocgarray_tl>>
- <</Event/Print /Category[/Print] /OCGs~\l_ocgbase_ocgarray_tl>>
- <</Event/Export/Category[/Export]/OCGs~\l_ocgbase_ocgarray_tl>>
- ]
+ /Name~(OC~default~configuration)
+ \pdfmeta_standard_verify:nT{Catalog_OCProperties_no_AS}{ %for pdf/a compliance
+ /AS~[
+ <</Event/View /Category[/View] /OCGs~\l_ocgbase_ocgarray_tl>>
+ <</Event/Print /Category[/Print] /OCGs~\l_ocgbase_ocgarray_tl>>
+ <</Event/Export/Category[/Export]/OCGs~\l_ocgbase_ocgarray_tl>>
+ ]
+ }
/BaseState/ON~\l_ocgbase_offocgentry_tl
\l_ocgbase_ocgorderentry_tl
\l_ocgbase_rbgroupsentry_tl
diff --git a/Master/texmf-dist/tex/latex/ocgx2/ocgx2.sty b/Master/texmf-dist/tex/latex/ocgx2/ocgx2.sty
index 8a45995b8c8..84d14323952 100644
--- a/Master/texmf-dist/tex/latex/ocgx2/ocgx2.sty
+++ b/Master/texmf-dist/tex/latex/ocgx2/ocgx2.sty
@@ -43,11 +43,11 @@
%
% The Current Maintainer of this work is A. Grahn.
- \def\g@ocgxii@date@tl{2024/08/28}
- \def\g@ocgxii@version@tl{0.58}
+ \def\g@ocgxii@date@tl{2024/09/16}
+ \def\g@ocgxii@version@tl{0.60}
\ProvidesExplPackage{ocgx2}{\g@ocgxii@date@tl}{\g@ocgxii@version@tl}
- {ports `ocgx' functionality to dvips+ps2pdf, xelatex and dvipdfmx}
+ {ports~`ocgx'~functionality~to~dvips+ps2pdf,~xelatex~and~dvipdfmx}
%creating global definitions
\cs_new_protected:Npn\ocgxii@newkey#1#2{\tl_gset:cx{#1}{#2}}
@@ -1579,8 +1579,8 @@
%
% The Current Maintainer of this work is A. Grahn.
-\def\g@ocgxii@date@tl{2024/08/28}
-\def\g@ocgxii@version@tl{0.58}
+\def\g@ocgxii@date@tl{2024/09/16}
+\def\g@ocgxii@version@tl{0.60}
\ProvidesExplPackage{ocgx2}{\g@ocgxii@date@tl}{\g@ocgxii@version@tl}
{ports `ocgx' functionality to dvips+ps2pdf, xelatex and dvipdfmx}
@@ -2385,104 +2385,132 @@
%
\bool_if:nTF{\l_ocgxii_nobreak_bool || \l_ocgxii_mouse_triggers_bool}{
\hbox_set:Nn\l_tmpa_box{#6}
- \bool_if:NTF\l_ocgxii_mouse_triggers_bool{
- % e,d,x mouse triggers require (non-breakable) /Widget annot
- \pdfannot_dict_put:nnn{link/GoTo}{Subtype}{/Widget}
- \pdfannot_dict_remove:nn{link/GoTo}{Border}
- }{
- \pdfannot_dict_put:nnn{link/GoTo}{Border}{[0~0~0]}
- }
- \pdfannot_dict_remove:nn{link/GoTo}{C}
- \pbs_pdfannot:nnnn{
- \dim_use:N\box_wd:N\l_tmpa_box}{
- \dim_use:N\box_ht:N\l_tmpa_box}{
- \dim_use:N\box_dp:N\l_tmpa_box
- }{
- \pdfannot_dict_use:n{link/GoTo}
+ % suppress annots with SetOCGState Action Subtype for pdf/a compliance
+ \pdfmeta_standard_verify:nT{annot_action_A}{
\bool_if:NTF\l_ocgxii_mouse_triggers_bool{
- /Ff~65536/FT/Btn/BS<</W~0>>
- /T~(ocgx2@\int_use:N\g_ocgxii_widcount_int)
- %treat mouse-up as mouse-click --> handle through /A dictionary
- \str_if_eq:eeF{}{
- \l_ocgxii_toswitch_u_tl\l_ocgxii_toshow_u_tl\l_ocgxii_tohide_u_tl
- }{
- /A <</S/SetOCGState/State [
- \str_if_eq:VnF\l_ocgxii_toswitch_u_tl{}{
- /Toggle~\l_ocgxii_toswitch_u_tl
- }
- \str_if_eq:VnF\l_ocgxii_toshow_u_tl{}{
- /ON~\l_ocgxii_toshow_u_tl
- }
- \str_if_eq:VnF\l_ocgxii_tohide_u_tl{}{
- /OFF~\l_ocgxii_tohide_u_tl
- }
- ]>>
- }
- % other mouse triggers need add. actions dict
- /AA <<
- %\str_if_eq:eeF{}{ % mouse-up
- % \l_ocgxii_toswitch_u_tl\l_ocgxii_toshow_u_tl\l_ocgxii_tohide_u_tl
- %}{
- % /U <</S/SetOCGState/State [
- % \str_if_eq:VnF\l_ocgxii_toswitch_u_tl{}{
- % /Toggle~\l_ocgxii_toswitch_u_tl
- % }
- % \str_if_eq:VnF\l_ocgxii_toshow_u_tl{}{
- % /ON~\l_ocgxii_toshow_u_tl
- % }
- % \str_if_eq:VnF\l_ocgxii_tohide_u_tl{}{
- % /OFF~\l_ocgxii_tohide_u_tl
- % }
- % ]>>
- %}
- \str_if_eq:eeF{}{ % mouse-down
- \l_ocgxii_toswitch_d_tl\l_ocgxii_toshow_d_tl\l_ocgxii_tohide_d_tl
- }{
- /D <</S/SetOCGState/State [
- \str_if_eq:VnF\l_ocgxii_toswitch_d_tl{}{
- /Toggle~\l_ocgxii_toswitch_d_tl
- }
- \str_if_eq:VnF\l_ocgxii_toshow_d_tl{}{
- /ON~\l_ocgxii_toshow_d_tl
- }
- \str_if_eq:VnF\l_ocgxii_tohide_d_tl{}{
- /OFF~\l_ocgxii_tohide_d_tl
- }
- ]>>
- }
- \str_if_eq:eeF{}{ % mouse-enter
- \l_ocgxii_toswitch_e_tl\l_ocgxii_toshow_e_tl\l_ocgxii_tohide_e_tl
- }{
- /E <</S/SetOCGState/State [
- \str_if_eq:VnF\l_ocgxii_toswitch_e_tl{}{
- /Toggle~\l_ocgxii_toswitch_e_tl
- }
- \str_if_eq:VnF\l_ocgxii_toshow_e_tl{}{
- /ON~\l_ocgxii_toshow_e_tl
- }
- \str_if_eq:VnF\l_ocgxii_tohide_e_tl{}{
- /OFF~\l_ocgxii_tohide_e_tl
- }
- ]>>
- }
- \str_if_eq:eeF{}{ % mouse-exit
- \l_ocgxii_toswitch_x_tl\l_ocgxii_toshow_x_tl\l_ocgxii_tohide_x_tl
+ % e,d,x mouse triggers require (non-breakable) /Widget annot
+ \pdfannot_dict_put:nnn{link/GoTo}{Subtype}{/Widget}
+ \pdfannot_dict_remove:nn{link/GoTo}{Border}
+ }{
+ \pdfannot_dict_put:nnn{link/GoTo}{Border}{[0~0~0]}
+ }
+ \pdfannot_dict_remove:nn{link/GoTo}{C}
+ \pbs_pdfannot:nnnn{
+ \dim_use:N\box_wd:N\l_tmpa_box}{
+ \dim_use:N\box_ht:N\l_tmpa_box}{
+ \dim_use:N\box_dp:N\l_tmpa_box
+ }{
+ \pdfannot_dict_use:n{link/GoTo}
+ \bool_if:NTF\l_ocgxii_mouse_triggers_bool{
+ /Ff~65536/FT/Btn/BS<</W~0>>
+ /T~(ocgx2@\int_use:N\g_ocgxii_widcount_int)
+ %treat mouse-up as mouse-click --> handle through /A dictionary
+ \str_if_eq:eeF{}{
+ \l_ocgxii_toswitch_u_tl\l_ocgxii_toshow_u_tl\l_ocgxii_tohide_u_tl
}{
- /X <</S/SetOCGState/State [
- \str_if_eq:VnF\l_ocgxii_toswitch_x_tl{}{
- /Toggle~\l_ocgxii_toswitch_x_tl
+ /A <</S/SetOCGState/State [
+ \str_if_eq:VnF\l_ocgxii_toswitch_u_tl{}{
+ /Toggle~\l_ocgxii_toswitch_u_tl
}
- \str_if_eq:VnF\l_ocgxii_toshow_x_tl{}{
- /ON~\l_ocgxii_toshow_x_tl
+ \str_if_eq:VnF\l_ocgxii_toshow_u_tl{}{
+ /ON~\l_ocgxii_toshow_u_tl
}
- \str_if_eq:VnF\l_ocgxii_tohide_x_tl{}{
- /OFF~\l_ocgxii_tohide_x_tl
+ \str_if_eq:VnF\l_ocgxii_tohide_u_tl{}{
+ /OFF~\l_ocgxii_tohide_u_tl
}
]>>
}
- >>
- }{
- %mouse-up alone
+ % other mouse triggers need add. actions dict
+ /AA <<
+ %\str_if_eq:eeF{}{ % mouse-up
+ % \l_ocgxii_toswitch_u_tl\l_ocgxii_toshow_u_tl\l_ocgxii_tohide_u_tl
+ %}{
+ % /U <</S/SetOCGState/State [
+ % \str_if_eq:VnF\l_ocgxii_toswitch_u_tl{}{
+ % /Toggle~\l_ocgxii_toswitch_u_tl
+ % }
+ % \str_if_eq:VnF\l_ocgxii_toshow_u_tl{}{
+ % /ON~\l_ocgxii_toshow_u_tl
+ % }
+ % \str_if_eq:VnF\l_ocgxii_tohide_u_tl{}{
+ % /OFF~\l_ocgxii_tohide_u_tl
+ % }
+ % ]>>
+ %}
+ \str_if_eq:eeF{}{ % mouse-down
+ \l_ocgxii_toswitch_d_tl\l_ocgxii_toshow_d_tl\l_ocgxii_tohide_d_tl
+ }{
+ /D <</S/SetOCGState/State [
+ \str_if_eq:VnF\l_ocgxii_toswitch_d_tl{}{
+ /Toggle~\l_ocgxii_toswitch_d_tl
+ }
+ \str_if_eq:VnF\l_ocgxii_toshow_d_tl{}{
+ /ON~\l_ocgxii_toshow_d_tl
+ }
+ \str_if_eq:VnF\l_ocgxii_tohide_d_tl{}{
+ /OFF~\l_ocgxii_tohide_d_tl
+ }
+ ]>>
+ }
+ \str_if_eq:eeF{}{ % mouse-enter
+ \l_ocgxii_toswitch_e_tl\l_ocgxii_toshow_e_tl\l_ocgxii_tohide_e_tl
+ }{
+ /E <</S/SetOCGState/State [
+ \str_if_eq:VnF\l_ocgxii_toswitch_e_tl{}{
+ /Toggle~\l_ocgxii_toswitch_e_tl
+ }
+ \str_if_eq:VnF\l_ocgxii_toshow_e_tl{}{
+ /ON~\l_ocgxii_toshow_e_tl
+ }
+ \str_if_eq:VnF\l_ocgxii_tohide_e_tl{}{
+ /OFF~\l_ocgxii_tohide_e_tl
+ }
+ ]>>
+ }
+ \str_if_eq:eeF{}{ % mouse-exit
+ \l_ocgxii_toswitch_x_tl\l_ocgxii_toshow_x_tl\l_ocgxii_tohide_x_tl
+ }{
+ /X <</S/SetOCGState/State [
+ \str_if_eq:VnF\l_ocgxii_toswitch_x_tl{}{
+ /Toggle~\l_ocgxii_toswitch_x_tl
+ }
+ \str_if_eq:VnF\l_ocgxii_toshow_x_tl{}{
+ /ON~\l_ocgxii_toshow_x_tl
+ }
+ \str_if_eq:VnF\l_ocgxii_tohide_x_tl{}{
+ /OFF~\l_ocgxii_tohide_x_tl
+ }
+ ]>>
+ }
+ >>
+ }{
+ %mouse-up alone
+ /A <</S/SetOCGState
+ /State [
+ \str_if_eq:VnF{\l_ocgxii_toswitch_u_tl}{}{
+ /Toggle~\l_ocgxii_toswitch_u_tl}~
+ \str_if_eq:VnF{\l_ocgxii_toshow_u_tl}{}{/ON~\l_ocgxii_toshow_u_tl}~
+ \str_if_eq:VnF{\l_ocgxii_tohide_u_tl}{}{/OFF~\l_ocgxii_tohide_u_tl}
+ ]
+ >>
+ }
+ }
+ \bool_if:NT\l_ocgxii_mouse_triggers_bool{
+ \pbs_appendtofields:n{\pbs_pdflastann:}
+ \int_gincr:N\g_ocgxii_widcount_int
+ }
+ }
+ \box_use_drop:N\l_tmpa_box
+ }{
+ % suppress annots with SetOCGState Action Subtype for pdf/a compliance
+ \pdfmeta_standard_verify:nTF{annot_action_A}{
+ \bool_if:NF\g_ocgxii_hyperref_loaded_bool{
+ \pdfannot_dict_put:nnn{link/GoTo}{Border}{[0~0~0]}
+ }
+ %line-breakable annotation
+ \pbs_pdflink:nn{
+ %look and feel of hyperref internal links
+ \pdfannot_dict_use:n{link/GoTo}
/A <</S/SetOCGState
/State [
\str_if_eq:VnF{\l_ocgxii_toswitch_u_tl}{}{
@@ -2491,33 +2519,12 @@
\str_if_eq:VnF{\l_ocgxii_tohide_u_tl}{}{/OFF~\l_ocgxii_tohide_u_tl}
]
>>
+ }{
+ \hook_use:n{pdfannot/link/GoTo/begin}
+ #6
+ \hook_use:n{pdfannot/link/GoTo/end}
}
- }\box_use_drop:N\l_tmpa_box
- \bool_if:NT\l_ocgxii_mouse_triggers_bool{
- \pbs_appendtofields:n{\pbs_pdflastann:}
- \int_gincr:N\g_ocgxii_widcount_int
- }
- }{
- \bool_if:NF\g_ocgxii_hyperref_loaded_bool{
- \pdfannot_dict_put:nnn{link/GoTo}{Border}{[0~0~0]}
- }
- %line-breakable annotation
- \pbs_pdflink:nn{
- %look and feel of hyperref internal links
- \pdfannot_dict_use:n{link/GoTo}
- /A <</S/SetOCGState
- /State [
- \str_if_eq:VnF{\l_ocgxii_toswitch_u_tl}{}{
- /Toggle~\l_ocgxii_toswitch_u_tl}~
- \str_if_eq:VnF{\l_ocgxii_toshow_u_tl}{}{/ON~\l_ocgxii_toshow_u_tl}~
- \str_if_eq:VnF{\l_ocgxii_tohide_u_tl}{}{/OFF~\l_ocgxii_tohide_u_tl}
- ]
- >>
- }{
- \hook_use:n{pdfannot/link/GoTo/begin}
- #6
- \hook_use:n{pdfannot/link/GoTo/end}
- }
+ }{#6}
}
\group_end:
}
diff --git a/Master/texmf-dist/tex/latex/osda/osda.sty b/Master/texmf-dist/tex/latex/osda/osda.sty
deleted file mode 100644
index f7ba34fafda..00000000000
--- a/Master/texmf-dist/tex/latex/osda/osda.sty
+++ /dev/null
@@ -1,401 +0,0 @@
-%%
-%% This is file `osda.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% osda.dtx (with options: `package')
-%%
-%% This is a generated file.
-%%
-%% Copyright (C) 2023-2024 by Christian Krieg <christian@osda.ws>
-%%
-%% This work (excluding the OSDA logo) may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
-%%
-%% The OSDA logo is a trademark of Christian Krieg and may only be used and/or
-%% distributed in order to refer to the Workshop on Open-Source Design Automation.
-%% Any other use is subject to prior written permission.
-%%
-\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-\ProvidesPackage{osda}
- [2024/05/01 v1.4.0 OSDA copyright notice generator]
-
-
-\RequirePackage[hang,flushmargin]{footmisc}%
-\RequirePackage{flushend}%
-\RequirePackage{ifthen}%
-\RequirePackage{qrcode}%
-\RequirePackage{xcolor}%
-\RequirePackage{hyperref}%
-\hypersetup{%
-colorlinks = true,%
-allcolors = black,%
-}%
-\RequirePackage{tikz}%
-\RequirePackage{pgfopts}%
-
-\newcommand{\osdaset}[1]{\pgfkeys{/osda/.cd,#1}}
-
-%%
-%% Specify booleans
-%%
-\newif\ifosda@auto
-%%
-%% Define keys to manage package and command options
-%%
-\pgfkeys {
- /osda/.cd,
- paper/url/.store in = \osda@paper@url,
- url/.forward to = /osda/paper/url,
- paper/doi/.store in = \osda@paper@doi,
- doi/.forward to = /osda/paper/doi,
- license/version/.store in = \osda@license@version,
- license/url/.store in = \osda@license@url,
- license/long/.store in = \osda@license@long,
- license/short/.store in = \osda@license@short,
- proceedings/title/.store in = \osda@proceedings@title,
- proceedings/startpage/.store in = \osda@proceedings@startpage,
- proceedings/endpage/.store in = \osda@proceedings@endpage,
- pages/.code 2 args={\osdaset{proceedings/startpage=#1,proceedings/endpage=#2}},
- workshop/counter/.store in = \osda@workshop@counter,
- workshop/longname/.store in = \osda@workshop@longname,
- workshop/acronym/.store in = \osda@workshop@acronym,
- location/city/.store in = \osda@location@city,
- location/country/.store in = \osda@location@country,
- date/month/.store in = \osda@date@month,
- date/day/.store in = \osda@date@day,
- date/year/.store in = \osda@date@year,
- hostconference/longname/.store in = \osda@hostconference@longname,
- hostconference/acronym/.store in = \osda@hostconference@acronym,
-}
-%%
-%% Set boolean flags
-%%
-\pgfkeys {
- /osda/.cd,
- auto/.is if=osda@auto,
-}
-%%
-%% Specify default values
-%%
-\pgfkeys {
- /osda/.cd,
- auto = true,
- license/version = ,
- license/url = ,
- license/long = \textbf{\textcolor{red}{{Please specify a license}}},
- license/short = ,
- proceedings/startpage = ,
- proceedings/endpage = ,
- paper/url = https://please.specify.the/url/here,
- paper/doi = ,
-}
-%%
-%% Define some useful styles
-%%
-\pgfkeys {
- /osda/.cd,
- %
- % Default values for specific editions of OSDA
- %
- 2024/.style={
- proceedings/title = Proceedings of the 4th Workshop on Open-Source Design Automation (OSDA),
- workshop/counter = 4th,
- workshop/longname = Workshop on Open-Source Design Automation,
- workshop/acronym = OSDA,
- location/city = Valencia,
- location/country = Spain,
- date/month = March,
- date/day = 25,
- date/year = 2024,
- hostconference/longname = {Design, Automation, and Test in Europe Conference},
- hostconference/acronym = DATE,
- },
- 2023/.style={
- proceedings/title = Proceedings of the 3rd Workshop on Open-Source Design Automation (OSDA),
- workshop/counter = 3rd,
- workshop/longname = Workshop on Open-Source Design Automation,
- workshop/acronym = OSDA,
- location/city = Antwerp,
- location/country = Belgium,
- date/month = April,
- date/day = 17,
- date/year = 2023,
- hostconference/longname = {Design, Automation, and Test in Europe Conference},
- hostconference/acronym = DATE,
- },
- 2020/.style={
- proceedings/title = Proceedings of the 2nd Workshop on Open-Source Design Automation (OSDA),
- workshop/counter = 2nd,
- workshop/longname = Workshop on Open-Source Design Automation,
- workshop/acronym = OSDA,
- location/city = Grenoble,
- location/country = France,
- date/month = March,
- date/day = 13,
- date/year = 2020,
- hostconference/longname = {Design, Automation, and Test in Europe Conference},
- hostconference/acronym = DATE,
- },
- 2019/.style={
- proceedings/title = Proceedings of the 1st Workshop on Open-Source Design Automation (OSDA),
- workshop/counter = 1st,
- workshop/longname = Workshop on Open-Source Design Automation,
- workshop/acronym = OSDA,
- location/city = Florence,
- location/country = Italy,
- date/month = March,
- date/day = 29,
- date/year = 2019,
- hostconference/longname = {Design, Automation, and Test in Europe Conference},
- hostconference/acronym = DATE,
- },
- %
- % Licenses
- %
- cc-by/.style={
- license/version = 4.0,
- license/url = https://creativecommons.org/licenses/by/4.0,
- license/long = Creative Commons Attribution license,
- license/short = CC BY,
- },
- cc-by-sa/.style={
- license/version = 4.0,
- license/url = https://creativecommons.org/licenses/by-sa/4.0,
- license/long = Creative Commons Attribution-ShareAlike license,
- license/short = CC BY-SA,
- },
- cc-by-nc-sa/.style={
- license/version = 4.0,
- license/url = https://creativecommons.org/licenses/by-nc-sa/4.0,
- license/long = Creative Commons Attribution-Noncommercial-ShareAlike license,
- license/short = CC BY-NC-SA,
- },
- cc-by-nc-nd/.style={
- license/version = 4.0,
- license/url = https://creativecommons.org/licenses/by-nc-nd/4.0,
- license/long = Creative Commons Attribution-Noncommercial-NoDerivatives license,
- license/short = CC BY-NC-ND,
- },
- arXiv/.style={
- license/version = 1.0,
- license/url = https://arxiv.org/licenses/nonexclusive-distrib/1.0,
- license/long = {arXiv.org perpetual, non-exclusive license},
- license/short =,
- },
- cc0/.style={
- license/version =,
- license/url = https://creativecommons.org/share-your-work/public-domain/cc0,
- license/long = Public Domain license,
- license/short = CC0,
- },
-}
-%%
-%% We now process the options passed to the package.
-%%
-\ProcessPgfOptions{/osda}
-%%
-%% The margin defines the space between the logo's right/QR code's left side and
-%% the text of the copyright notice
-%%
-\newlength{\osda@margin}
-%%
-%% |\WrapLR|
-%%
-%% Command to place two figures wrapped around text; we use it here for the OSDA
-%% logo and the QR code that links to the paper in the acknowledgments box in the
-%% footnote of the title page
-%%
-%% Usage:
-%%
-%% \WrapLR{\includegraphics[height=1.2in]{example-image-a}}%
-%% {\includegraphics[height=1.2in]{example-image-b}}%
-%% {\noindent Text to wrap around images}
-%%
-%% Adapted from: https://tex.stackexchange.com/a/455612
-%%
-%%
-\newcommand*{\WrapLR}[3]% #1=left image, #2=right image, #3=text (1 paragraph)
-{\bgroup
- \sbox0{\raisebox{-\height}{#1}}% align tops
- \sbox1{\raisebox{-\height}{#2}}% measure width and height (depth)
- \sbox2{\raisebox{\depth}{\makebox[\columnwidth]{\usebox0\hfill\usebox1}}}% total height
- \par\noindent\usebox2\vspace{\dimexpr \ht\strutbox-\ht2-\baselineskip-\parskip}\par% overlay pictures
- \setlength{\osda@margin}{2ex}
- \dimen0=\dimexpr \wd0+.5\osda@margin\relax% indent
- \dimen1=\dimexpr \columnwidth-\wd0-\wd1-\osda@margin\relax% width
- \edef\shape{\the\dimen0 \the\dimen1}% set up \parshape arguments in loop
- \dimen2=\ht\strutbox
- \dimen4=\dimexpr \ht2-.5\baselineskip\relax
- \count1=2
- \loop\ifdim\dimen2<\dimen4
- \advance\dimen2 by \baselineskip
- \ifdim\dimen2>\dp0\relax% end of left image
- \dimen0=0pt
- \dimen1=\dimexpr \columnwidth-\wd1-.5\osda@margin\relax
- \fi
- \ifdim\dimen2>\dp1\relax% end of right image
- \dimen1=\dimexpr \columnwidth-\wd0-.5\osda@margin\relax
- \fi
- \advance\count1 by 1
- \edef\shape{\shape\space\the\dimen0 \the\dimen1}%
- \repeat
- \edef\shape{\the\count1 \space\shape\space 0pt \the\columnwidth}%
- \parshape=\shape
- #3\par
-\egroup}
-%% |\blfootnote|
-%%
-%% Set footnotes without marks
-%%
-%% Usage:
-%%
-%% |\blfootnote{footnotetext}|
-%%
-%% From: https://tex.stackexchange.com/a/30726
-%%
-\newcommand\blfootnote[1]{%
- \begingroup
- \renewcommand\thefootnote{}\footnote{#1}%
- \addtocounter{footnote}{-1}%
- \endgroup
-}
-%%
-%% |\osdalogo|
-%%
-%% Draws the OSDA logo at a given height
-%%
-%% Usage:
-%%
-%% |\osdalogo{height}|
-%%
-%% Example:
-%%
-%% |\osdalogo{2\baselineskip}|
-%%
-\usetikzlibrary{svg.path}
-\newcommand{\osdalogo}[1]{\scalebox{1}[-1]{\resizebox*{!}{#1}{%
-\begin{tikzpicture}%
- \pgfpathsvg{m 41.493525,114.88969 c -4.235403,-0.0951 -5.244524,4.38987 -4.853967,7.74446 0.06465,11.92294 -0.129872,23.85884 0.09828,35.77361 0.660896,3.83742 4.80625,4.07909 7.908947,3.87335 36.559883,0 73.119765,0 109.679645,0 4.2354,0.0951 5.24452,-4.38987 4.85397,-7.74445 -0.0647,-11.92294 0.12987,-23.85884 -0.0983,-35.77361 -0.6609,-3.83742 -4.80625,-4.07909 -7.90895,-3.87336 -36.55988,0 -73.119759,0 -109.679642,0 z m 15.406294,9.3338 c 7.083699,-0.16814 13.650363,5.59034 14.408423,12.6354 0.773555,-7.32725 7.848415,-13.19963 15.192447,-12.61203 5.305345,0.24729 10.291595,3.68656 12.407418,8.55802 -4.449622,-0.0531 -9.052306,0.10604 -13.406456,-0.0794 -0.839139,-2.90692 -5.235964,-3.40946 -6.707523,-0.76424 -1.678739,2.40924 0.506129,6.05789 3.422128,5.71655 1.497283,-0.0812 2.873132,-1.15803 3.311785,-2.59192 4.718573,0 9.43715,0 14.155724,0 0.08339,-2.35529 -0.165262,-4.8569 0.121518,-7.12255 5.339507,-5.05446 14.506947,-4.9329 19.710957,0.26069 2.32206,2.20209 3.8742,5.19535 4.33608,8.36202 0.90939,-7.27195 8.02238,-12.99336 15.31906,-12.32891 7.37799,0.33186 13.674,7.07245 13.50245,14.45591 0.0496,5.18443 -2.94531,10.24647 -7.51324,12.69897 -1.2907,-3.10635 -2.86729,-6.27677 -3.98135,-9.34353 2.57226,-2.09161 1.63297,-6.69649 -1.5515,-7.61542 -3.0763,-1.19911 -6.61783,1.86093 -5.86635,5.08096 0.22078,1.22057 0.97501,2.33122 2.02814,2.98654 -1.33651,3.06304 -2.67302,6.12607 -4.00953,9.18911 -4.21173,-2.03739 -7.27498,-6.23733 -7.9282,-10.87014 -0.9141,7.33051 -8.13486,13.07383 -15.48271,12.31672 -3.21287,-0.24801 -6.32487,-1.6114 -8.68532,-3.8051 0,-2.30873 0,-4.61746 0,-6.92619 -1.727782,7.19313 -9.563391,12.09549 -16.787442,10.50764 -4.612862,-0.86727 -8.678534,-4.13841 -10.513216,-8.45867 4.434157,0.0533 9.021826,-0.10629 13.360463,0.0794 0.820198,2.82501 5.042639,3.41435 6.604149,0.92056 1.808231,-2.33495 -0.226145,-6.10845 -3.171246,-5.87992 -1.550448,0.0211 -3.007434,1.11568 -3.459292,2.59898 -4.701352,0 -9.402702,0 -14.104054,0 -0.258707,-1.27682 -0.309266,-2.11823 -0.532659,-0.32786 -1.436394,7.22593 -9.014468,12.43124 -16.274501,11.17924 -7.328434,-0.91683 -13.068091,-8.13653 -12.311164,-15.48257 0.464997,-7.3576 7.032469,-13.43953 14.405011,-13.33826 z m 52.620561,9.99112 c -0.96292,0.0502 -2.60046,0.17595 -2.09755,1.57043 0.0567,2.29818 -0.11186,4.73381 0.0816,6.94851 2.876,1.60884 6.79391,-0.92082 6.51013,-4.20444 -0.0576,-2.3593 -2.13312,-4.35301 -4.49417,-4.3145 z m -52.58387,5.3e-4 c -3.299763,-0.14891 -5.665574,3.88662 -3.923721,6.69319 1.479497,2.95488 6.158026,3.05141 7.757886,0.15973 1.863071,-2.9074 -0.372921,-6.91859 -3.834165,-6.85292 z}%
- \pgfusepath{fill}%
- \pgfusepath{stroke}%
-\end{tikzpicture}%
-}}}
-%%
-%% |\osda|
-%%
-%% This command prints the OSDA logo inline at a height of 1ex
-%%
-%% Usage:
-%%
-%% |\osda{}|
-%%
-\newcommand{\osda}{\raisebox{.6\baselineskip}{\osdalogo{.7\baselineskip}}}
-%%
-%% |\osdanotice|
-%%
-%% This command sets the OSDA copyright notice, taking a URL as argument to set
-%% links to the paper's web page, and to create a QR code from.
-%%
-%% Usage:
-%%
-%% |\osdanotice{url}|
-%%
-%% Example:
-%%
-%% |\osdanotice{https://osda.ws}|
-%%
-\newcommand{\osdanotice}[1][]{
-\osdaset{#1}
-\WrapLR%
- {\href{\osda@paper@url}{\osdalogo{1.8\baselineskip}}}
- {\qrcode[height=3.8\baselineskip,level=L,version=1]{\osda@paper@url}}
- {\noindent%
- This work was presented at the \emph{\osda@workshop@counter{}
- \osda@workshop@longname{} (\osda@workshop@acronym) \osda@date@year{}},
- \ifthenelse{\isundefined{\osda@hostconference@longname}}{%
- }{%
- co-hosted with \emph{\osda@hostconference@longname} %
- \ifthenelse{\isundefined{\osda@hostconference@acronym}}{%
- }{%
- \emph{(\osda@hostconference@acronym)}
- }%
- \ifthenelse{\isundefined{\osda@date@year}}{%
- }{%
- \emph{\osda@date@year}
- }%
- }%
- in \osda@location@city{}, \osda@location@country{}, on
- \osda@date@month{} \osda@date@day{}, \osda@date@year{}. For further
- information and material, please visit the paper's web page on the
- workshop website at \href{\osda@paper@url}{\textbf{\osda@paper@url}}
- (just scan the QR code on the right).
- %
- % Copyright and license information
- %
- The copyright is retained by the authors.
- This work is licensed under the terms of the
- \osda@license@long
- \ifthenelse{\isundefined{\osda@license@short} \or \equal{\osda@license@short}{}}{%
- }{ %
- (\osda@license@short)%
- }%
- \ifthenelse{\isundefined{\osda@license@version} \or \equal{\osda@license@version}{}}{%
- }{, %
- version \osda@license@version%
- }%
- \ifthenelse{\isundefined{\osda@license@url} \or \equal{\osda@license@url}{}}{%
- }{, %
- see \href{\osda@license@url}{\osda@license@url}%
- }%
- %
- .
- \emph{\osda@proceedings@title},
- Pages \osda@proceedings@startpage--\osda@proceedings@endpage, \osda@date@year.
- \ifthenelse{\isundefined{\osda@paper@doi} \or \equal{\osda@paper@doi}{}}{%
- }{%
- DOI: \href{https://doi.org/\osda@paper@doi}{\osda@paper@doi}%
- }%
- }%
-}
-%%
-%% |\osdafootnote|
-%%
-%% This command sets the OSDA copyright notice in an un-numbered footnote.
-%%
-%% Usage:
-%%
-%% |\osdafootnote{url}|
-%%
-%% Example:
-%%
-%% |\osdafootnote{https://osda.ws}|
-%%
-\newcommand{\osdafootnote}[1][]{
- \osdaset{#1}
- \blfootnote{\osdanotice\vspace{-1.5\baselineskip}}%
-
-}
-%%
-%% |\maketitle|
-%%
-%% Re-defining the \maketitle command to automatically place the copyright notice
-%% once the paper title is generated
-%%
-\let\maketitle@orig\maketitle
-\renewcommand{\maketitle}{%
- \ifosda@auto%
- \maketitle@orig\osdafootnote%
- \else%
- \maketitle@orig%
- \fi%
-}
-\endinput
-%%
-%% End of file `osda.sty'.
diff --git a/Master/texmf-dist/tex/latex/pagecolor/pagecolor.sty b/Master/texmf-dist/tex/latex/pagecolor/pagecolor.sty
index 941e39e958c..66840b7d8b4 100644
--- a/Master/texmf-dist/tex/latex/pagecolor/pagecolor.sty
+++ b/Master/texmf-dist/tex/latex/pagecolor/pagecolor.sty
@@ -9,10 +9,10 @@
%% This is a generated file.
%%
%% Project: pagecolor
-%% Version: 2023-04-18 v1.2c
+%% Version: 2025-01-28 v1.2d
%% Info: Provides thepagecolor
%%
-%% Copyright (C) 2011 - 2023 by
+%% Copyright (C) 2011 - 2025 by
%% H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de>
%%
%% This work may be distributed and/or modified under the
@@ -40,8 +40,8 @@
%% Tommy Muench + 2014-01-02
%% Hans-Klaus Muench + 2014-08-24
%%
-\NeedsTeXFormat{LaTeX2e}[2022-11-01]
-\ProvidesPackage{pagecolor}[2023-04-18 v1.2c Provides thepagecolor (HMM)]
+\NeedsTeXFormat{LaTeX2e}[2024-11-01]
+\ProvidesPackage{pagecolor}[2025-01-28 v1.2d Provides thepagecolor (HMM)]
%% Provides the \thepagecolor, \thepagecolornone, \newpagecolor{...},
%% \restorepagecolor, \backgroundpagecolor, \newbackgroundpagecolor{...},
%% and \restorebackgroundpagecolor commands and a replacement for the
@@ -49,23 +49,20 @@
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
-\IfFormatAtLeastTF{2022/11/01}{\relax}{%
+\IfFormatAtLeastTF{2024/11/01}{}{%
\PackageError{pagecolor}{Newer LaTeX format needed or older pagecolor package%
- }{Needed LaTeX format version: 2022-11-01 or newer.\MessageBreak%
+ }{Needed LaTeX format version: 2024-11-01 or newer.\MessageBreak%
Found\space\space LaTeX format version: \fmtversion.\MessageBreak%
- Either update your TeX distribution\MessageBreak%
- or use an archived version of pagecolor\MessageBreak%
- (see section History in the documentation).\MessageBreak%
+ Please update your TeX distribution.%
}
}
-\RequirePackage{kvoptions}[2022-06-15]% v3.15 Key value format for package options (HO)
%% \RequirePackage{ either color or xcolor }:
\IfPackageLoadedTF{xcolor}{% xcolor loaded
- \RequirePackage{xcolor}[2022/06/12]% v2.14 LaTeX color extensions (UK)
+ \RequirePackage{xcolor}[2024/09/29]% v3.02 LaTeX color extensions (UK)
}{% xcolor not loaded
\IfPackageLoadedTF{color}{%
- \RequirePackage{color}[2022-01-06]% v1.3d Standard LaTeX Color (DPC)
+ \RequirePackage{color}[2024-06-23]% v1.3e Standard LaTeX Color (DPC)
}{\PackageWarningNoLine{pagecolor}{%
The pagecolor package must be loaded after either\MessageBreak%
package color or after package xcolor (at your\MessageBreak%
@@ -77,13 +74,19 @@
option for xcolor package, this will not work%
}
}
- \RequirePackage{xcolor}[2022/06/12]% v2.14 LaTeX color extensions (UK)
+ \RequirePackage{xcolor}[2024/09/29]% v3.02 LaTeX color extensions (UK)
}
-\SetupKeyvalOptions{family=pagecolor,prefix=pagecolor@}
-\DeclareStringOption[none]{pagecolor}% \pagecolor@pagecolor
-\DeclareStringOption[none]{nopagecolor}% \pagecolor@nopagecolor
-\ProcessKeyvalOptions*
+\DeclareKeys[pagecolor]
+ {pagecolor .store = \pagecolor@pagecolor ,
+ pagecolor .usage = preamble ,
+ nopagecolor .store = \pagecolor@nopagecolor ,
+ nopagecolor .usage = preamble
+ }
+
+\SetKeys[pagecolor]{pagecolor=white,nopagecolor=none}
+
+\ProcessKeyOptions[pagecolor]
\ifdefined\nopagecolor\relax
\else
@@ -95,12 +98,12 @@
Option nopagecolor=none requested but \string\nopagecolor\space unknown:\MessageBreak%
By option nopagecolor the "color" to be used with \string\nopagecolor\MessageBreak%
is set. The current value is "none" (maybe by default),\MessageBreak%
- but command \string\nopagecolor\ is undefined.\MessageBreak%
+ but command \string\nopagecolor\space is undefined.\MessageBreak%
Therefore the color cannot be "none".\MessageBreak%
Please change the option accordingly! -\MessageBreak%
As first aid nopagecolor is now set to white%
}
- \setkeys{pagecolor}{nopagecolor=white}
+ \SetKeys[pagecolor]{nopagecolor=white}
\fi
\edef\pagecolortmpa{\pagecolor@pagecolor}
\ifx\pagecolortmpa\pagecolortmpb\relax
@@ -110,12 +113,12 @@
Please use another option value;\MessageBreak%
\pagecolor@nopagecolor\ will be used now%
}
- \setkeys{pagecolor}{pagecolor={\pagecolor@nopagecolor}}
+ \SetKeys[pagecolor]{pagecolor={\pagecolor@nopagecolor}}
\fi
\newcommand{\nopagecolor}{\pagecolor{\pagecolor@nopagecolor}}
\fi
-\let\origpagecolor\pagecolor
+\NewCommandCopy{\origpagecolor}{\pagecolor}
\renewcommand{\pagecolor}[1]{\@bsphack%
\edef\pagecolortmpa{#1}%
@@ -145,7 +148,7 @@
\@esphack%
}
-\let\orignopagecolor\nopagecolor\relax
+\NewCommandCopy{\orignopagecolor}{\nopagecolor}
\gdef\pagecolor@cl{0}
\IfPackageLoadedTF{crop}{% crop loaded
@@ -168,7 +171,7 @@
Please change the option accordingly!\MessageBreak%
As first aid nopagecolor is now set to white%
}
- \setkeys{pagecolor}{nopagecolor=white}
+ \SetKeys[pagecolor]{nopagecolor=white}
\fi
\renewcommand{\nopagecolor}{\pagecolor{\pagecolor@nopagecolor}}
}{% crop not loaded
@@ -226,7 +229,7 @@
\def\pagecolortmpb{0}%
\ifx\pagecolor@cl\pagecolortmpb\relax%
% crop not loaded before pagecolor, but maybe afterwards:
- \IfPackageLoadedTF{crop}{% crop indeed loaded afterwards.
+ \IfPackageLoadedT{crop}{% crop indeed loaded afterwards.
\gdef\pagecolor@cl{1}%
\PackageInfo{pagecolor}{\string\nopagecolor\space did not work with the crop package\MessageBreak%
2017/11/19 v1.10. Using\MessageBreak%
@@ -245,10 +248,9 @@
Please change the option accordingly!\MessageBreak%
As first aid nopagecolor is now set to white%
}%
- \setkeys{pagecolor}{nopagecolor=white}%
+ \SetKeys[pagecolor]{nopagecolor=white}%
\fi%
\renewcommand{\nopagecolor}{\pagecolor{\pagecolor@nopagecolor}}%
- }{% crop neither loaded afterwards.
}%
\fi%
}
diff --git a/Master/texmf-dist/tex/latex/pageslts/pageslts.sty b/Master/texmf-dist/tex/latex/pageslts/pageslts.sty
index 47897b3b710..79435b056d4 100644
--- a/Master/texmf-dist/tex/latex/pageslts/pageslts.sty
+++ b/Master/texmf-dist/tex/latex/pageslts/pageslts.sty
@@ -9,10 +9,11 @@
%% This is a generated file.
%%
%% Project: pageslts
-%% Version: 2015/12/21 v1.2f
+%% Version: 2025-01-10 v2.0d
+%% Info: Variants of last page labels
%%
-%% Copyright (C) 2010 - 2015 by
-%% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de>
+%% Copyright (C) 2010 - 2025 by
+%% H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de>
%% Portions of code copyrighted by other people as marked.
%%
%% IMPORTANT NOTICE:
@@ -25,6 +26,9 @@
%% * Alph - Uppercase letters: A, B, C, D,...
%% * fnsymbol - Footnote symbols: *, ^^e2^^80^^a0 (ddagger), ^^e2^^80^^a1 (dddagger),
%% ^^c2^^a7 (mathsection),...
+%% * silly - from sillypage package
+%% * gobble - gobbles the page numbers;
+%% maybe backslash thispagestyle{empty} is more useful?
%% ). The command backslash pagenumbering is renewed, but no change
%% should be visible to the output text, because only labels are added.
%% backslash OrigPagenumbering can be used to get the original meaning
@@ -32,20 +36,15 @@
%% see the change in the page numbering scheme and will make mistakes.
%% The package takes options.
%%
-%% The usual disclaimer applies:
-%% If it doesn't work right that's your problem.
-%% (Nevertheless, send an e-mail to the maintainer
-%% when you find an error in this package.)
-%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.3c of this license or (at your option) any later
%% version. This version of this license is in
-%% http://www.latex-project.org/lppl/lppl-1-3c.txt
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
%% and the latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
+%% https://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of
-%% LaTeX version 2005/12/01 or later.
+%% LaTeX version 2005-12-01 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
@@ -53,7 +52,7 @@
%%
%% This package first started as a revision of the lastpage
%% package of Jeffrey P. Goldberg (jeffrey+news at goldmark dot org),
-%% but it became obvious that a replacement was needed.
+%% but I thought a replacement was needed.
%%
%% This work consists of the main source file pageslts.dtx,
%% the README, and the derived files
@@ -62,15 +61,14 @@
%% pageslts-example.tex, pageslts-example.pdf.
%%
%% In memoriam
-%% Claudia Simone Barth + 1996/01/30
-%% Tommy Muench + 2014/01/02
-%% Hans-Klaus Muench + 2014/08/24
+%% Claudia Simone Barth + 1996-01-30
+%% Tommy Muench + 2014-01-02
+%% Hans-Klaus Muench + 2014-08-24
%%
-\NeedsTeXFormat{LaTeX2e}[2015/01/01]
-\ProvidesPackage{pageslts}[2015/12/21 v1.2f
- Refers to special pages' numbers/names (HMM)]
+\NeedsTeXFormat{LaTeX2e}[2024-11-01]
+\ProvidesPackage{pageslts}[2025-01-10 v2.0d Refers to special pages' numbers/names (HMM)]
-%% Allows for things like\\
+%% Allows for things like\par
%% |Page \thepage\ (\theCurrentPage; local: \theCurrentPageLocal) of %
%% \lastpageref{pagesLTS.roman}(\lastpageref{pagesLTS.roman.local}) + %
%% \lastpageref{pagesLTS.Roman}(\lastpageref{pagesLTS.Roman.local}) + %
@@ -78,129 +76,88 @@
%% \lastpageref{pagesLTS.fnsymbol}(\lastpageref{pagesLTS.fnsymbol.local}) + %
%% \lastpageref{pagesLTS.alph}(\lastpageref{pagesLTS.alph.local}) + %
%% \lastpageref{pagesLTS.Alph}(\lastpageref{pagesLTS.Alph.local}) = %
-%% \lastpageref{LastPages} pages.|\\
-%% to get\\
+%% \lastpageref{LastPages} pages.|\par
+%% to get\par
%% 'Page d (57; local: 4) of ii(2) + XX(20) + *(1) + 30(30) + e(5) + C(3) = 61 pages.'.
-\@ifpackageloaded{pagesLTS}{%
- \def\pagesLTS@doubleload{p@gesLTSlo@ded}
- \ifx\pagesLTS@loaded\pagesLTS@doubleload%
- \PackageError{pageslts}{Requested pagesLTS instead of pageslts}{%
- You have requested package `pagesLTS'. This package is now named `pageslts'.\MessageBreak%
- Requesting `pagesLTS' as well as `pageslts' leads to loading the same package\MessageBreak%
- twice (and results in errors). Loading of `pageslts' will therefore be\MessageBreak%
- abandoned now. To fix this problem, please look in the \jobname.log file for\MessageBreak%
- LaTeX Warning: You have requested package `pagesLTS',\MessageBreak%
- \space \space \space \space \space \space \space \space \space \space \space \space \space%
- \space \space but the package provides `pageslts'.\MessageBreak%
- and change the package call in the calling style/document.\MessageBreak%
- If a style file made the mistake, please inform its maintainer and/or the\MessageBreak%
- maintainer of the pageslts package about it (after making sure you have\MessageBreak%
- the recent version of that style file).\MessageBreak%
- Thank you and sorry for the inconvenience!\MessageBreak%
- }
- \endinput
- \fi
- }{% \relax
- }
+\DeclareKeys[pagesLTS]
+ {alphMult .store = \pagesLTS@alphMult ,
+ alphMult .usage = preamble ,
+ AlphMulti .store = \pagesLTS@AlphMulti ,
+ AlphMulti .usage = preamble ,
+ pagecontinue .if = pagesLTS@pagecontinue ,
+ pagecontinue .usage = load ,
+ romanMult .if = pagesLTS@romanMult ,
+ romanMult .usage = load ,
+ RomanMulti .if = pagesLTS@RomanMulti ,
+ RomanMulti .usage = load ,
+ fnsymbolmult .if = pagesLTS@fnsymbolmult ,
+ fnsymbolmult .usage = load
+ }
-\gdef\pagesLTS@loaded{p@gesLTSlo@ded}
+\SetKeys[pagesLTS]{alphMult=ab,AlphMulti=AB,pagecontinue=true,romanMult=true,RomanMulti=true,fnsymbolmult=true}
-\RequirePackage{ltxcmds}[2011/11/09]% v1.22
-\RequirePackage{atveryend}[2011/06/30]% v1.8
-\AtBeginDocument{%
- %% https://tex.stackexchange.com/a/45654/6865
- %% and https://tex.stackexchange.com/q/261445/6865
- \def\pagesLTS@etb{etoolbox.sty}%
- \let\pagesLTS@ave\@empty%
- \@for\@pageslts@currname:=\@filelist\do{%
- \ifx\@pageslts@currname\pagesLTS@etb\relax%
- \def\pagesLTS@ave{atveryend.sty}%
- \fi%
- \ifx\@pageslts@currname\pagesLTS@ave%
- \@ifpackagelater{atveryend}{2015/08/01}{%\relax
- \PackageInfo{pageslts}{etoolbox package loaded before atveryend package\MessageBreak%
- With atveryend version 1.8 of 2011/06/30 this caused a problem,\MessageBreak%
- which is probably solved in the new version used here.\MessageBreak%
- To play it safe, you could load the atveryend package\MessageBreak%
- before the etoolbox package.\MessageBreak%
- }%
- }{% else
- \PackageError{pageslts}{etoolbox package loaded before atveryend package}{%
- You can use both packages, but when etoolbox is loaded before atveryend,\MessageBreak%
- atveryend no longer detects \string\enddocument\space\MessageBreak%
- and hook "AtVeryVeryEnd" is not executed.\MessageBreak%
- Just load the atveryend package before the etoolbox package!\MessageBreak%
- }%
- }%
- \fi%
+\DeclareUnknownKeyHandler[pagesLTS]{%
+ \PackageError{pageslts}{Unknown option "\CurrentOption"}{%
+ LaTeX has been asked to set an option called\MessageBreak%
+ '#1' \if\relax\detokenize{#2}\relax\else with value '#2'\fi\MessageBreak%
+ but the package "pageslts" has not created an option with this name.\MessageBreak%
+ Try typing <return> to proceed.\MessageBreak%
+ If that doesn't work, type X <return> to quit.%
}%
}
-\RequirePackage{everyshi}[2001/05/15]% v3.00
-\RequirePackage{letltxmacro}[2010/09/02]% v1.4
-\RequirePackage{kvoptions}[2011/06/30]% v3.11
-\RequirePackage{undolabl}[2015/03/29]% v1.0l
-\RequirePackage{rerunfilecheck}[2011/04/15]% v1.7
-%% pageslts package uses Prelim@EveryShipout code from the
-%% prelim2e package [2009/05/29 v1.3] by Martin Schr\"{o}der, thanks!
-
-%% pageslts may work with earlier versions of LaTeX2e and those packages,
-%% but this was not tested. Please consider updating your LaTeX
-%% and packages to the most recent version (if they are not already
-%% the most recent version).
-%% The recent version of the endfloat package is v2.5d as of 2011/12/25.
-%% The pageslts package is not fully compatible with version 2.0
-%% (and earlier) of the endfloat package, because those versions
-%% redefined the \enddocument command.
+\ProcessKeyOptions[pagesLTS]
-\SetupKeyvalOptions{family = pagesLTS,prefix = pagesLTS@}
-\DeclareBoolOption[true]{pagecontinue}% \pagesLTS@pagecontinue
-\DeclareStringOption[ab]{alphMult}
-\DeclareStringOption[AB]{AlphMulti}
-\DeclareBoolOption[true]{romanMult}
-\DeclareBoolOption[true]{RomanMulti}
-\DeclareBoolOption[true]{fnsymbolmult}
+\@ifl@t@r\fmtversion{2024-11-01}{}{\PackageError{pageslts}{%
+ LaTeX format 2024-11-01 or newer needed}{%
+ Needed LaTeX format version: 2024-11-01 or newer.\MessageBreak%
+ Found\space\space LaTeX format version: \fmtversion.\MessageBreak%
+ Please update your TeX distribution!\MessageBreak%
+ Loading of pageslts package is aborted.}
+ \expandafter\endinput}
-\ProcessKeyvalOptions*
+\RequirePackage{undolabl}[2024-12-05]
+\IfPackageLoadedTF{undolabl}{\IfPackageAtLeastF{undolabl}{2024-12-05}{%
+ \PackageError{pageslts}{undolabl package version too old}{%
+ Required version: 2024-12-05 v1.0n or newer,\MessageBreak%
+ found version:\space\space\space\space\csname ver@undolabl.sty\endcsname.%
+}}}{\PackageError{pageslts}{undolabl package not loaded}{%
+ The undolabl package is required by pageslts but was not loaded.}%
+ }
\def\pagesLTS@zero{0}
\def\pagesLTS@one{1}
\def\pagesLTS@two{2}
\def\pagesLTS@three{3}
+\def\pagesLTS@ab{ab}
+\def\pagesLTS@bb{bb}
+\def\pagesLTS@ABi{AB}
+\def\pagesLTS@BBi{BB}
-\ifpagesLTS@pagecontinue%
- \PackageInfo{pageslts}{Option pagecontinue enabled\MessageBreak%
- (maybe by default):\MessageBreak%
+\ifpagesLTS@pagecontinue
+ \PackageNoteNoLine{pageslts}{Option pagecontinue enabled (maybe by default):\MessageBreak%
The pageslts package will continue the page numbering,\MessageBreak%
when the same page numbering scheme is used twice.\MessageBreak%
If you do not want this, call pageslts with option\MessageBreak%
- pagecontinue=false (or use \string\setcounter{page}=1).\MessageBreak%
- }
+ pagecontinue=false (or use \string\setcounter{page}=1)}
\else
- \PackageWarningNoLine{pageslts}{Option pagecontinue is false:\MessageBreak%
+ \PackageNoteNoLine{pageslts}{Option pagecontinue is false:\MessageBreak%
The pageslts package was used, but the option\MessageBreak%
pagecontinue was set to false.\MessageBreak%
If you want the page numbers to be continued,\MessageBreak%
when the same page numbering scheme is used twice,\MessageBreak%
please call pageslts with option pagecontinue=true,\MessageBreak%
otherwise the page number is reset to one each time\MessageBreak%
- the page numbering scheme is changed.\MessageBreak%
- For details please see the documentation%
- }
+ the page numbering scheme is changed}
\fi
-\def\pagesLTS@ab{ab}
-\def\pagesLTS@bb{bb}
-\def\pagesLTS@ABi{AB}
-\def\pagesLTS@BBi{BB}
-
\ifx\pagesLTS@alphMult\pagesLTS@ab%
\else
\ifx\pagesLTS@alphMult\pagesLTS@bb%
\else
\ifx\pagesLTS@alphMult\pagesLTS@zero%
- \PackageWarningNoLine{pageslts}{%
+ \PackageNoteNoLine{pageslts}{%
Option alphMult=0 found:\MessageBreak%
The pageslts package was used, but the option\MessageBreak%
alphMult was set to 0 (zero).\MessageBreak%
@@ -209,18 +166,14 @@
For automatic continuation, please use the\MessageBreak%
alphalph package and call pageslts\MessageBreak%
with option alphMult=ab (for aa, ab, ac, ad,...) or\MessageBreak%
- with option alphMult=bb (for aa, bb, cc, dd,...).\MessageBreak%
- For details please see the documentation!%
- }
+ with option alphMult=bb (for aa, bb, cc, dd,...)}
\else
\PackageError{pageslts}{Unknown option value}{%
The pageslts package was used with option\MessageBreak%
- alphMult= \pagesLTS@alphMult . Only values\MessageBreak%
- ab, bb, and 0 (zero) are valid.\MessageBreak%
- The default ab is set.\MessageBreak%
- For details please see the documentation!%
- }
- \setkeys{pagesLTS}{alphMult=ab}
+ alphMult=\meaning\pagesLTS@alphMult .\MessageBreak%
+ Only values 'ab', 'bb', and '0' (zero) are valid.\MessageBreak%
+ Now the default 'ab' is being set.}
+ \SetKeys[pagesLTS]{alphMult=ab}
\fi
\fi
\fi
@@ -230,7 +183,7 @@
\ifx\pagesLTS@AlphMulti\pagesLTS@BBi%
\else
\ifx\pagesLTS@AlphMulti\pagesLTS@zero%
- \PackageWarningNoLine{pageslts}{%
+ \PackageNoteNoLine{pageslts}{%
Option AlphMulti=0 found:\MessageBreak%
The pageslts package was used, but the option\MessageBreak%
AlphMulti was set to 0 (zero).\MessageBreak%
@@ -239,89 +192,67 @@
For automatic continuation, please use the\MessageBreak%
alphalph package and call pageslts\MessageBreak%
with option AlphMulti=AB (for AA, AB, AC, AD,...) or\MessageBreak%
- with option AlphMulti=BB (for AA, BB, CC, DD,...).\MessageBreak%
- For details please see the documentation!%
- }
+ with option AlphMulti=BB (for AA, BB, CC, DD,...)}
\else
\PackageError{pageslts}{Unknown option value}{%
The pageslts package was used with option\MessageBreak%
- AlphMulti= \pagesLTS@AlphMulti . Only values\MessageBreak%
- AB, BB, and 0 (zero) are valid.\MessageBreak%
- The default AB is set.\MessageBreak%
- For details please see the documentation!%
- }
- \setkeys{pagesLTS}{AlphMulti=AB}
+ AlphMulti=\meaning\pagesLTS@AlphMulti .\MessageBreak%
+ Only values 'AB', 'BB', and '0' (zero) are valid.\MessageBreak%
+ The default 'AB' is set.}
+ \SetKeys[pagesLTS]{AlphMulti=AB}
\fi
\fi
\fi
-\ifx\pagesLTS@alphMult\pagesLTS@zero% \relax
-\else \RequirePackage{alphalph}[2011/05/13]% v2.4
-\fi
+\ifx\pagesLTS@alphMult\pagesLTS@zero\else\RequirePackage{alphalph}[2019/12/09]\fi
+\ifx\pagesLTS@AlphMulti\pagesLTS@zero\else\RequirePackage{alphalph}[2019/12/09]\fi
+\ifpagesLTS@fnsymbolmult\RequirePackage{alphalph}[2019/12/09]\fi
-\ifx\pagesLTS@AlphMulti\pagesLTS@zero% \relax
-\else \RequirePackage{alphalph}[2011/05/13]% v2.4
-\fi
-
-\ifpagesLTS@fnsymbolmult%
- \RequirePackage{alphalph}[2011/05/13]% v2.4
-\fi
-
-\ifpagesLTS@romanMult%
- \PackageInfo{pageslts}{Option romanMult enabled\MessageBreak%
- (maybe by default):\MessageBreak%
+\ifpagesLTS@romanMult
+ \PackageNoteNoLine{pageslts}{Option romanMult enabled (maybe by default):\MessageBreak%
The pageslts package will extend the page numbering\MessageBreak%
of the roman scheme below i with\MessageBreak%
0, -i, -ii, -iii, -iv,...\MessageBreak%
If you do not want this, call pageslts with option\MessageBreak%
- romanMult=false.\MessageBreak%
- }
+ romanMult=false}
\else
- \PackageWarningNoLine{pageslts}{Option romanMult is set to false:\MessageBreak%
- The pageslts package was used, but the option\MessageBreak%
- romanMult was set to false.\MessageBreak%
- If you want the page numbering of the roman scheme\MessageBreak%
- to be extended below i,\MessageBreak%
- please call pageslts with option romanMult=true,\MessageBreak%
- otherwise zero and negative page numbers of the\MessageBreak%
- roman scheme will need to be defined otherwise.\MessageBreak%
- For details please see the documentation!\MessageBreak%
- }
+ \PackageNoteNoLine{pageslts}{Option romanMult is set to false:\MessageBreak%
+ The pageslts package was used, but the option\MessageBreak%
+ romanMult was set to false.\MessageBreak%
+ If you want the page numbering of the roman scheme\MessageBreak%
+ to be extended below i,\MessageBreak%
+ please call pageslts with option romanMult=true,\MessageBreak%
+ otherwise zero and negative page numbers of the\MessageBreak%
+ roman scheme will need to be defined otherwise}
\fi
-\ifpagesLTS@RomanMulti%
- \PackageInfo{pageslts}{Option RomanMulti enabled\MessageBreak%
- (maybe by default):\MessageBreak%
+\ifpagesLTS@RomanMulti
+ \PackageNoteNoLine{pageslts}{Option RomanMulti enabled (maybe by default):\MessageBreak%
The pageslts package will extend the page numbering\MessageBreak%
of the Roman scheme below I with\MessageBreak%
0, -I, -II, -III, -IV,...\MessageBreak%
If you do not want this, call pageslts with option\MessageBreak%
- RomanMulti=false.\MessageBreak%
- }
+ RomanMulti=false}
\else
- \PackageWarningNoLine{pageslts}{Option RomanMulti is set to false:\MessageBreak%
+ \PackageNoteNoLine{pageslts}{Option RomanMulti is set to false:\MessageBreak%
The pageslts package was used, but the option\MessageBreak%
RomanMulti was set to false.\MessageBreak%
If you want the page numbering of the Roman scheme\MessageBreak%
to be extended below i,\MessageBreak%
please call pageslts with option RomanMulti=true,\MessageBreak%
otherwise zero and negative page numbers of the\MessageBreak%
- Roman scheme will need to be defined otherwise.\MessageBreak%
- For details please see the documentation!\MessageBreak%
- }
+ Roman scheme will need to be defined otherwise}
\fi
-\ifpagesLTS@fnsymbolmult%
- \PackageInfo{pageslts}{Option fnsymbolmult enabled\MessageBreak%
- (maybe by default):\MessageBreak%
+\ifpagesLTS@fnsymbolmult
+ \PackageNoteNoLine{pageslts}{Option fnsymbolmult enabled (maybe by default):\MessageBreak%
The pageslts package will extend the page numbering\MessageBreak%
of the footnotesymbol scheme using the alphalph\MessageBreak%
package.\MessageBreak%
If you do not want this, call pageslts with option\MessageBreak%
- fnsymbolmult=false.\MessageBreak%
- }
+ fnsymbolmult=false}
\else
- \PackageWarningNoLine{pageslts}{%
+ \PackageNoteNoLine{pageslts}{%
Option fnsymbolmult is set to false:\MessageBreak%
The pageslts package was used, but the option\MessageBreak%
fnsymbolmult was set to false.\MessageBreak%
@@ -329,9 +260,7 @@
scheme to be extended using the alphalph package,\MessageBreak%
please call pageslts with option fnsymbolmult=true,\MessageBreak%
otherwise page numbers of the footnotesymbol scheme\MessageBreak%
- greater than nine will need to be defined otherwise.\MessageBreak%
- For details please see the documentation!\MessageBreak%
- }
+ greater than nine will need to be defined otherwise}
\fi
\def\pagesLTS@pnc{0}
@@ -339,13 +268,18 @@
\def\pagesLTS@fns{fnsymbol}
\def\pagesLTS@alph{alph}
\def\pagesLTS@Alph{Alph}
+\def\pagesLTS@gobble{gobble}
+\def\pagesLTS@silly{silly}
\def\pagesLTS@rerun{0}
-\def\pagesLTS@eso{0}
-\def\pagesLTS@esov{0}
+\def\pagesLTS@esoFs{0}
+\def\pagesLTS@esovFs{0}
+\def\pagesLTS@esoSy{0}
+\def\pagesLTS@esovSy{0}
+\def\pagesLTS@esoGbl{0}
+\def\pagesLTS@esovGbl{0}
\def\lastpageref{\lastpagereftxt}
\def\pagesLTS@undolable{none}
\def\pncmissing{0}
-\def\pagesLTS@SK{0}
\def\pagesLTS@messageNPN{%
The pageslts package was used, but\MessageBreak%
\string\pagenumbering \MessageBreak%
@@ -353,49 +287,27 @@
(maybe earlier or later).\MessageBreak%
Please use \string\pagenumbering \MessageBreak%
(with an argument like arabic, roman, Roman,\MessageBreak%
- fnsymbol, alph, or Alph) at the beginning\MessageBreak%
- of your document! Otherwise your document\MessageBreak%
- will probably compile, but the pageslts\MessageBreak%
- package might not be able to get all labels\MessageBreak%
- for the references to the respective pages\MessageBreak%
- right.\MessageBreak%
+ fnsymbol, alph, Alph, gobble,\MessageBreak%
+ or silly (requiring sillypage package))\MessageBreak%
+ at the beginning of your document!\MessageBreak%
+ Otherwise your document will probably compile,\MessageBreak%
+ but the pageslts package might not be able\MessageBreak%
+ to get all labels for the references\MessageBreak%
+ to the respective pages right.\MessageBreak%
}
-\AtBeginDocument{%
- \if@filesw%
- \else%
- \@ifpackageloaded{tikz}{%
- \PackageWarning{pageslts}%
- {It was not allowed to write to an\MessageBreak%
- .aux file. This package does not work without access\MessageBreak%
- to an .aux file.\MessageBreak%
- It is OK if the .aux file was already updated\MessageBreak%
- by a previouse compiler run\MessageBreak%
- and would not have changed anyway.\MessageBreak%
- }%
- }{\PackageError{pageslts}{No writing to auxiliary file allowed}%
- {It was not allowed to write to an .aux file.\MessageBreak%
- This package does not work without access to an .aux file.\MessageBreak%
- Press Ctrl+Z to exit.\MessageBreak%
- But it is OK if the .aux file was already updated\MessageBreak%
- by previouse compiler runs\MessageBreak%
- and would not have changed anyway.\MessageBreak%
- (In that case just press Enter or Return\MessageBreak%
- to continue the compilation.)\MessageBreak%
- }%
- }%
- \fi%
- }
-
-\LetLtxMacro{\OrigPagenumbering}{\pagenumbering}
-
\newcounter{CurrentPage}
\setcounter{CurrentPage}{1}
\def\theCurrentPageLocal{\arabic{pagesLTS.current.local.\pagesLTS@pnc}}
\newcounter{pagesLTS.pagenr}
+\setcounter{pagesLTS.pagenr}{1}
\newcounter{pagesLTS.current.local.0}
\setcounter{pagesLTS.current.local.0}{1}
\newcounter{pagesLTS.pnc.0}
+\newcounter{pagesLTS.tmpcounter}
+\def\pagesLTSlastpage{1}
+\def\pagesLTSlastpageHy{1}
+\def\pagesLTS.lastpage{\pagesLTSlastpage}
\newcommand{\xroman}[1]{%
\ifnum\value{#1}>0%
@@ -421,34 +333,33 @@
\fi%
}
-\newcommand{\XXRoman}[1]{\XRoman{#1}%
- \PackageError{pageslts}{Old command \string\XXRoman\space found}{Replaced by \string\XRoman.}%
- }
-
-\newcommand{\pagesLTS@ifcounter}[1]{%
- \@ifundefined{c@#1}{\newcounter{#1}}{\relax}%
+\newcommand{\pagesLTS@providecounter}[1]{\@ifundefined{c@#1}{\newcounter{#1}}{}}
+\NewCommandCopy{\pagesLTS@ifcounter}{\pagesLTS@providecounter}
+\AddToHook{begindocument}{%
+ \AddToHookWithArguments{cmd/pagesLTS@ifcounter/before}{%
+ \PackageError{pageslts}{Old command \string\pagesLTS@ifcounter\space used}{%
+ Replace by \string\pagesLTS@providecounter.}%
+ }%
}
\newcommand{\lastpages}[2]{%
- \pagesLTS@ifcounter{pagesLTS.#1.#2.local.cnt}%
+ \pagesLTS@providecounter{pagesLTS.#1.#2.local.cnt}%
\arabic{pagesLTS.#1.#2.local.cnt}%
}
\newcommand{\pagesLTS@writelabel}[1]{%
\addtocounter{page}{+1}%
- \pagesLTS@putlabel{pagesLTS.#1}{\thepage}{1}
- \addtocounter{page}{-1}%
- \ifx\pagesLTS@pnc\pagesLTS@zero% \relax
+ \pagesLTS@putlabel{pagesLTS.#1}{\thepage}{1}%
+ \ifx\pagesLTS@pnc\pagesLTS@zero%
\else%
- \addtocounter{page}{+1}%
- \pagesLTS@putlabel{pagesLTS.#1.local}{\theCurrentPageLocal}{1}
- \addtocounter{page}{-1}%
+ \pagesLTS@putlabel{pagesLTS.#1.local}{\theCurrentPageLocal}{1}%
\fi%
+ \addtocounter{page}{-1}%
}
-%% The following code is from Heiko Oberdiek [2010/04/18], %%
-%% expanding his alphalph package as of 2010/04/18, v2.3. (Thanks!) %%
+%% The following code is from Heiko Oberdiek [2010/04/18], %%
+%% expanding his alphalph package as of 2010/04/18, v2.3. (Thanks!) %%
\newcommand*{\erroralphalph}[2]{%
\ifnum\value{#2}>0%
#1{\value{#2}}%
@@ -460,15 +371,15 @@
\fi%
\fi%
}
-%% End of code from Heiko Oberdiek %%
-%% Check and Error/Warning messages have been moved to \EveryShipout, %%
-%% because messages inside e.g. the \pageref command can cause trouble. %%
+%% End of code from Heiko Oberdiek %%
+%% Check and Error/Warning messages have been moved to hook "shipout/foreground" %%
+%% because messages inside e.g. the \pageref command can cause trouble. %%
\newcommand{\expandPagenumbering}[1]{%
\let\Origthepage\thepage%
\def\pagesLTS@tmpC{arabic}%
- \ifx\pagesLTS@pnc\pagesLTS@tmpC% \relax
+ \ifx\pagesLTS@pnc\pagesLTS@tmpC%
\else%
\def\pagesLTS@tmpC{roman}%
\ifx\pagesLTS@pnc\pagesLTS@tmpC%
@@ -478,24 +389,33 @@
\else%
\def\pagesLTS@tmpC{Roman}%
\ifx\pagesLTS@pnc\pagesLTS@tmpC%
- \ifpagesLTS@RomanMulti%
- \renewcommand*{\thepage}{\XRoman{page}}%
- \fi%
+ \IfPackageLoadedTF{romanbarpagenumber}{%
+ \ifpagesLTS@RomanMulti%
+ \renewcommand*{\thepage}{\Roman@bar{\XRoman{page}}}%
+ \else%
+ \renewcommand*{\thepage}{\Roman@bar{\Roman{page}}}%
+ \fi%
+ }{\ifpagesLTS@RomanMulti%
+ \renewcommand*{\thepage}{\XRoman{page}}%
+ \fi%
+ }%
\else%
\ifx\pagesLTS@pnc\pagesLTS@alph%
\ifx\pagesLTS@alphMult\pagesLTS@ab%
\renewcommand*{\thepage}{\erroralphalph{\alphalph}{page}}%
- \else \ifx\pagesLTS@alphMult\pagesLTS@bb%
- \renewcommand*{\thepage}{\erroralphalph{\alphMult}{page}}%
- \fi%
+ \else%
+ \ifx\pagesLTS@alphMult\pagesLTS@bb%
+ \renewcommand*{\thepage}{\erroralphalph{\alphMult}{page}}%
+ \fi%
\fi%
\else%
\ifx\pagesLTS@pnc\pagesLTS@Alph%
\ifx\pagesLTS@AlphMulti\pagesLTS@ABi%
\renewcommand*{\thepage}{\erroralphalph{\AlphAlph}{page}}%
- \else \ifx\pagesLTS@AlphMulti\pagesLTS@BBi%
- \renewcommand*{\thepage}{\erroralphalph{\AlphMult}{page}}%
- \fi%
+ \else%
+ \ifx\pagesLTS@AlphMulti\pagesLTS@BBi%
+ \renewcommand*{\thepage}{\erroralphalph{\AlphMult}{page}}%
+ \fi%
\fi%
\else%
\ifx\pagesLTS@pnc\pagesLTS@fns%
@@ -503,104 +423,138 @@
\renewcommand*{\thepage}{\erroralphalph{\fnsymbolmult}{page}}%
\fi%
\else%
- \PackageError{pageslts}{unknown page numbering scheme}{%
- The pageslts package encountered the unknown\MessageBreak%
- page numbering scheme\MessageBreak%
- `#1'. \MessageBreak%
- If this is no typing mistake, it might work\MessageBreak%
- - or it might not work.\MessageBreak%
- \@ehc%
- }
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
+ \ifx\pagesLTS@pnc\pagesLTS@silly%
+ \else%
+ \ifx\pagesLTS@pnc\pagesLTS@gobble%
+ \IfPackageLoadedT{hyperref}{%
+ \renewcommand*{\thepage}{\texorpdfstring{\null}{{}}%
+ \csname @gobble\endcsname \c@page}}%
+ \else%
+ \PackageError{pageslts}{unknown page numbering scheme}{%
+ The pageslts package encountered the unknown\MessageBreak%
+ page numbering scheme\MessageBreak%
+ \meaning#1. \MessageBreak%
+ If this is no typing mistake, it might work\MessageBreak%
+ - or it might not work.\MessageBreak%
+ \@ehc}%
+ \fi\fi\fi\fi\fi\fi\fi\fi%
\let\pagesLTS@tmpC\undefined%
}
+\NewCommandCopy{\OrigPagenumbering}{\pagenumbering}
+
\renewcommand{\pagenumbering}[1]{%
\edef\pagesLTS@tmpA{#1}%
- \ifx\pagesLTS@pnc\pagesLTS@fns%
- \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}%
- \fi%
- \ifx\pagesLTS@tmpA\pagesLTS@fns%
- \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}%
- \fi%
- \ifx\pagesLTS@pnc\pagesLTS@tmpA% \relax
+ \ifx\pagesLTS@pnc\pagesLTS@tmpA%
\else%
- \ifnum \value{CurrentPage}>1%
+ \ifx\pagesLTS@tmpA\pagesLTS@fns%
+ \pagesLTS@providecounter{pagesLTS.fnsymbol.local}%
+ \fi%
+ \ifx\pagesLTS@tmpA\pagesLTS@silly%
+ \IfPackageLoadedF{sillypage}{\PackageError{pageslts}{%
+ silly pagenumbering requested, sillypage package not loaded}{%
+ When using \string\pagenumbering{silly},\MessageBreak%
+ load the sillypage package.}}%
+ \pagesLTS@providecounter{pagesLTS.silly.local}%
+ \fi%
+ \ifx\pagesLTS@tmpA\pagesLTS@gobble%
+ \pagesLTS@providecounter{pagesLTS.gobble.local}%
+ \fi%
+ \ifnum\value{CurrentPage}>1%
\addtocounter{page}{-1}%
\addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{-1}%
\newcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}%
\setcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{%
\value{pagesLTS.current.local.\pagesLTS@pnc}}%
\ifx\pagesLTS@pnc\pagesLTS@fns%
- \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}>1%
- \mathchardef\pagesLTS@tmpa=\arabic{pagesLTS.pnc.0}%
- \setcounter{pagesLTS.pnc.0}{\value{pagesLTS.pnc.\pagesLTS@pnc}}%
- \addtocounter{pagesLTS.pnc.0}{-1}%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}>1%
+ \setcounter{pagesLTS.tmpcounter}{\numexpr\value{pagesLTS.pnc.\pagesLTS@pnc}-1\relax}%
\addtocounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{%
- -\value{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.0}.local.count}}%
- \setcounter{pagesLTS.pnc.0}{\pagesLTS@tmpa}%
+ -\value{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.tmpcounter}.local.count}}%
\fi%
\else%
- \pagesLTS@writelabel{\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}}%
- \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}<2%
- \pagesLTS@writelabel{\pagesLTS@pnc}%
+ \ifx\pagesLTS@pnc\pagesLTS@silly%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}>1%
+ \setcounter{pagesLTS.tmpcounter}{\numexpr\value{pagesLTS.pnc.\pagesLTS@pnc}-1\relax}%
+ \addtocounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{%
+ -\value{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.tmpcounter}.local.count}}%
+ \fi%
\else%
- \mathchardef\pagesLTS@tmpa=\arabic{pagesLTS.pnc.0}%
- \setcounter{pagesLTS.pnc.0}{\value{pagesLTS.pnc.\pagesLTS@pnc}}%
- \addtocounter{pagesLTS.pnc.0}{-1}%
- \pagesLTS@ifcounter{pagesLTS.\pagesLTS@pnc.done}%
- \addtocounter{pagesLTS.\pagesLTS@pnc.done}{%
- \value{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.0}.local.count}}%
- \addtocounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{%
- -\value{pagesLTS.\pagesLTS@pnc.done}}%
- \setcounter{pagesLTS.pnc.0}{\pagesLTS@tmpa}%
+ \ifx\pagesLTS@pnc\pagesLTS@gobble%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}>1%
+ \setcounter{pagesLTS.tmpcounter}{\numexpr\value{pagesLTS.pnc.\pagesLTS@pnc}-1\relax}%
+ \addtocounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{%
+ -\value{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.tmpcounter}.local.count}}%
+ \fi%
+ \else%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}<2%
+ \pagesLTS@writelabel{\pagesLTS@pnc}%
+ \fi%
+ \fi%
\fi%
- \if@filesw%
- \immediate\write\@auxout{\string
- \pagesLTS@ifcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.cnt}}%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}>1%
+ \ifpagesLTS@pagecontinue%
+ \setcounter{pagesLTS.tmpcounter}{\numexpr\value{pagesLTS.pnc.\pagesLTS@pnc}-1\relax}%
+ \pagesLTS@providecounter{pagesLTS.\pagesLTS@pnc.done}%
+ \addtocounter{pagesLTS.\pagesLTS@pnc.done}{%
+ \value{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.tmpcounter}.local.count}}%
+ \addtocounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{%
+ -\value{pagesLTS.\pagesLTS@pnc.done}}%
+ \fi%
\fi%
- \edef\pagesLTS@tmpB{\arabic{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}}%
+ \pagesLTS@writelabel{\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}}%
\if@filesw%
\immediate\write\@auxout{\string
+ \pagesLTS@providecounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.cnt}}%
+ \edef\pagesLTS@tmpB{\arabic{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}}%
+ \immediate\write\@auxout{\string
\setcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.cnt}{\pagesLTS@tmpB}}%
\fi%
\fi%
- \pagesLTS@ifcounter{pagesLTS.double.\pagesLTS@pnc}%
+ \pagesLTS@providecounter{pagesLTS.double.\pagesLTS@pnc}%
\setcounter{pagesLTS.double.\pagesLTS@pnc}{\value{page}}%
\addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{+1}%
\addtocounter{page}{+1}%
\xdef\pagesLTS@pnc{#1}%
+ \ifpagesLTS@pagecontinue%
+ \else%
+ \pagesLTS@providecounter{pagesLTS.current.local.\pagesLTS@pnc}%
+ \setcounter{pagesLTS.current.local.\pagesLTS@pnc}{1}%
+ \fi%
\OrigPagenumbering{#1}%
\expandPagenumbering{#1}%
- \pagesLTS@ifcounter{pagesLTS.pnc.\pagesLTS@pnc}%
+ \pagesLTS@providecounter{pagesLTS.pnc.\pagesLTS@pnc}%
\addtocounter{pagesLTS.pnc.\pagesLTS@pnc}{1}%
- \pagesLTS@ifcounter{pagesLTS.double.\pagesLTS@pnc}%
+ \pagesLTS@providecounter{pagesLTS.double.\pagesLTS@pnc}%
\addtocounter{pagesLTS.double.\pagesLTS@pnc}{1}%
\ifpagesLTS@pagecontinue%
\setcounter{page}{\value{pagesLTS.double.\pagesLTS@pnc}}%
\else%
\setcounter{page}{1}%
\fi%
- \pagesLTS@ifcounter{pagesLTS.current.local.\pagesLTS@pnc}%
- \ifnum \value{pagesLTS.double.\pagesLTS@pnc}=1%
+ \pagesLTS@providecounter{pagesLTS.current.local.\pagesLTS@pnc}%
+ \ifnum\value{pagesLTS.double.\pagesLTS@pnc}=1%
\setcounter{pagesLTS.current.local.\pagesLTS@pnc}{1}%
\fi%
\else%
- %% before the first page has shipped out
+ \ifx\pagesLTS@pnc\pagesLTS@zero\relax%
+ \else%
+ \PackageNoteNoLine{pageslts}{%
+ \string\pagenumbering\space used more than once before the end\MessageBreak%
+ of the first page, maybe in the preamble.\MessageBreak%
+ Resetting all unused page numbering schemes now}%
+ \setcounter{pagesLTS.pnc.\pagesLTS@pnc}{0}%
+ \setcounter{pagesLTS.double.\pagesLTS@pnc}{0}%
+ \setcounter{pagesLTS.current.local.\pagesLTS@pnc}{0}%
+ \fi%
\xdef\pagesLTS@pnc{#1}%
- \global\c@page \@ne\relax%
- \global\def\thepage{\csname \expandafter @\pagesLTS@pnc \endcsname \c@page}%
- \expandPagenumbering{#1}
- \pagesLTS@ifcounter{pagesLTS.pnc.\pagesLTS@pnc}%
+ \OrigPagenumbering{#1}%
+ \expandPagenumbering{#1}%
+ \pagesLTS@providecounter{pagesLTS.pnc.\pagesLTS@pnc}%
\setcounter{pagesLTS.pnc.\pagesLTS@pnc}{1}%
- \pagesLTS@ifcounter{pagesLTS.double.\pagesLTS@pnc}%
+ \pagesLTS@providecounter{pagesLTS.double.\pagesLTS@pnc}%
\setcounter{pagesLTS.double.\pagesLTS@pnc}{1}%
- \pagesLTS@ifcounter{pagesLTS.current.local.\pagesLTS@pnc}%
+ \pagesLTS@providecounter{pagesLTS.current.local.\pagesLTS@pnc}%
\setcounter{pagesLTS.current.local.\pagesLTS@pnc}{1}%
\fi%
\gdef\pagesLTS@called{1}%
@@ -609,7 +563,7 @@
\let\pagesLTS@tmpB\undefined%
}
-%% analogous to \HyPsd@pageref from the hyperref package by Heiko Oberdiek:
+%% analogous to \HyPsd@pageref from the hyperref package:
\def\lastpagereftxt#1{\pagesLTS@@pageref#1*\END}
\def\pagesLTS@@pageref#1*#2\END{%
@@ -627,85 +581,29 @@
\def\pagesLTS@tmpA{#1}%
\def\pagesLTS@tmpB{pagesLTS.fnsymbol.local}%
\ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}%
- \ltx@ifpackageloaded{hyperref}{%
- \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}%
- {\arabic{pagesLTS.fnsymbol.local}}%
- }{\arabic{pagesLTS.fnsymbol.local}}%
- \else%
- \pageref{#1}%
- \fi%
- \let\pagesLTS@tmpA\undefined%
- \let\pagesLTS@tmpB\undefined%
- }
-
-\newcommand{\lastpagereftextstar}[1]{%
- \def\pagesLTS@tmpA{#1}%
- \def\pagesLTS@tmpB{pagesLTS.fnsymbol.local}%
- \ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}%
- \arabic{pagesLTS.fnsymbol.local}%
- \else%
- \ltx@ifpackageloaded{hyperref}{\pageref*{#1}}{\pageref{#1}}%
- \fi%
- \let\pagesLTS@tmpA\undefined%
- \let\pagesLTS@tmpB\undefined%
- }
-
-\def\lastpagerefend#1{\pagesLTS@@pagerefend#1*\END}
-
-\def\pagesLTS@@pagerefend#1*#2\END{%
- \ifx\\#2\\% no star
- \pagesLTS@@@pagerefend{#1}%
- \else% star
- \expandafter\pagesLTS@@@pagerefendstar%
- \fi%
-}
-
-\def\pagesLTS@@@pagerefend#1{\l@stpagerefend{#1}}
-\def\pagesLTS@@@pagerefendstar#1{\l@stpagerefendstar{#1}}
-
-\newcommand{\l@stpagerefend}[1]{%
- \def\pagesLTS@tmpA{#1}%
- \def\pagesLTS@tmpB{pagesLTS.fnsymbol.local}%
- \ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}%
- \ltx@ifpackageloaded{hyperref}{%
+ \pagesLTS@providecounter{pagesLTS.fnsymbol.local}%
+ \IfPackageLoadedTF{hyperref}{%
\href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}%
{\arabic{pagesLTS.fnsymbol.local}}%
}{\arabic{pagesLTS.fnsymbol.local}}%
\else%
- \def\pagesLTS@tmpB{pagesLTS.fnsymbol}%
+ \def\pagesLTS@tmpB{pagesLTS.silly.local}%
\ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \ltx@ifpackageloaded{hyperref}{%
- \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}%
- {\pagesLTS.lastpage}%
- }{\pageref{pagesLTS.fnsymbol}}%
+ \pagesLTS@providecounter{pagesLTS.silly.local}%
+ \IfPackageLoadedTF{hyperref}{%
+ \href{\#pagesLTS.silly.local.\arabic{pagesLTS.silly.local}}%
+ {\arabic{pagesLTS.silly.local}}%
+ }{\arabic{pagesLTS.silly.local}}%
\else%
- \def\pagesLTS@tmpB{LastPage}%
+ \def\pagesLTS@tmpB{pagesLTS.gobble.local}%
\ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \ltx@ifpackageloaded{hyperref}{%
- \href{\#pagesLTS.fnsymbol.local.\pagesLTS@eso}%
- {\pagesLTS.lastpage}%
- }{\pageref{LastPage}}%
+ \pagesLTS@providecounter{pagesLTS.gobble.local}%
+ \IfPackageLoadedTF{hyperref}{%
+ \href{\#pagesLTS.gobble.local.\arabic{pagesLTS.gobble.local}}%
+ {\arabic{pagesLTS.gobble.local}}%
+ }{\arabic{pagesLTS.gobble.local}}%
\else%
- \def\pagesLTS@tmpB{VeryLastPage}%
- \ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \ltx@ifpackageloaded{hyperref}{%
- \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}%
- {\pagesLTS.lastpage}%
- }{\pageref{VeryLastPage}}%
- \else%
- \def\pagesLTS@tmpB{LastPages}%
- \ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \ltx@ifpackageloaded{hyperref}{%
- \href{\#pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.local}}%
- {\arabic{pagesLTS.pagenr}}%
- }{\pageref{LastPages}}%
- \else%
- \pageref{#1}%
- \fi%
- \fi%
+ \pageref{#1}%
\fi%
\fi%
\fi%
@@ -713,35 +611,24 @@
\let\pagesLTS@tmpB\undefined%
}
-\newcommand{\l@stpagerefendstar}[1]{%
+\newcommand{\lastpagereftextstar}[1]{%
\def\pagesLTS@tmpA{#1}%
\def\pagesLTS@tmpB{pagesLTS.fnsymbol.local}%
\ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}%
- \arabic{pagesLTS.fnsymbol.local}%
+ \pagesLTS@providecounter{pagesLTS.fnsymbol.local}%
+ \arabic{pagesLTS.fnsymbol.local}%
\else%
- \def\pagesLTS@tmpB{pagesLTS.fnsymbol}%
+ \def\pagesLTS@tmpB{pagesLTS.silly.local}%
\ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \ltx@ifpackageloaded{hyperref}{\pageref*{pagesLTS.fnsymbol}}{%
- \pageref{pagesLTS.fnsymbol}}%
+ \pagesLTS@providecounter{pagesLTS.silly.local}%
+ \arabic{pagesLTS.silly.local}%
\else%
- \def\pagesLTS@tmpB{LastPage}%
+ \def\pagesLTS@tmpB{pagesLTS.gobble.local}%
\ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \ltx@ifpackageloaded{hyperref}{\pageref*{LastPage}}{\pageref{LastPage}}%
+ \pagesLTS@providecounter{pagesLTS.gobble.local}%
+ \arabic{pagesLTS.gobble.local}%
\else%
- \def\pagesLTS@tmpB{VeryLastPage}%
- \ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \ltx@ifpackageloaded{hyperref}{\pageref*{VeryLastPage}}{%
- \pageref{VeryLastPage}}%
- \else%
- \def\pagesLTS@tmpB{LastPages}%
- \ifx\pagesLTS@tmpA\pagesLTS@tmpB%
- \ltx@ifpackageloaded{hyperref}{\pageref*{LastPages}}{\pageref{LastPages}}%
- \else%
- \ltx@ifpackageloaded{hyperref}{\pageref*{#1}}{\pageref{#1}}%
- \fi%
- \fi%
- \fi%
+ \IfPackageLoadedTF{hyperref}{\pageref*{#1}}{\pageref{#1}}%
\fi%
\fi%
\fi%
@@ -750,73 +637,87 @@
}
\newcommand\overrideLTSlabel[2]{%
- \@bsphack
- \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}>1%
- \edef\pagesLTStmpA{#1}%
- \edef\pagesLTStmpB{pagesLTS.\pagesLTS@pnc.local}%
- \ifx\pagesLTStmpA\pagesLTStmpB%
- \immediate\write\@auxout{\string\undonewlabel{#1}}%
- \@overriddenmessage s{#1}%
+ \@bsphack%
+ \if@filesw%
+ \edef\pagesLTS@tmpC{#1}%
+ \edef\pagesLTS@tmpD{pagesLTS.\pagesLTS@pnc.local}%
+ \ifx\pagesLTS@tmpC\pagesLTS@tmpD%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}>1%
+ \immediate\write\@auxout{\string\undonewlabel{#1}}\@overriddenmessage s{#1}%
+ \else%
+ \edef\pagesLTS@tmpD{fnsymbol}%
+ \ifx\pagesLTS@pnc\pagesLTS@tmpD%
+ \immediate\write\@auxout{\string\undonewlabel{#1}}\@overriddenmessage s{#1}%
+ \fi%
+ \edef\pagesLTS@tmpD{gobble}%
+ \ifx\pagesLTS@pnc\pagesLTS@tmpD%
+ \immediate\write\@auxout{\string\undonewlabel{#1}}\@overriddenmessage s{#1}%
+ \fi%
+ \edef\pagesLTS@tmpD{silly}%
+ \ifx\pagesLTS@pnc\pagesLTS@tmpD%
+ \immediate\write\@auxout{\string\undonewlabel{#1}}\@overriddenmessage s{#1}%
+ \fi%
\fi%
\fi%
\pagesLTS@putlabel{#1}{#2}{0}%
+ \fi%
\@esphack%
}
-\newcommand{\@pagesLTS@Prelim@EveryShipout}{%
-%% The following code is from the prelim2e package %%
-%% [2009/05/29 v1.3] by Martin Schr\"{o}der (Thanks!): %%
- \bgroup
- \dimen\z@=\wd\@cclv
- \dimen\@ne=\ht\@cclv
- \dimen\tw@=\dp\@cclv
- \dimen\thr@@=\dimen1
- \advance\dimen\thr@@ by \dimen\tw@
- \global\setbox\@cclv\vbox to \dimen\thr@@{%
- \hb@xt@\dimen\z@{%
- \box\@cclv%
- \hss%
+\newcommand{\pagesLTS@EveryShipout}{%
+ \begingroup%
+ \ifx\pagesLTS@pnc\pagesLTS@fns%
+ \pagesLTS@providecounter{pagesLTS.fnsymbol.cont}%
+ \addtocounter{pagesLTS.fnsymbol.cont}{1}%
+ \IfPackageLoadedT{hyperref}{\phantomsection%
+ \hypertarget{pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.cont}}{}%
}%
- \vbox to \z@{%
- \hb@xt@\dimen\z@{%
- \let\protect\relax
-%% Code not from prelim2e package: %%
- \ifx\pagesLTS@pnc\pagesLTS@fns%
- \pagesLTS@ifcounter{pagesLTS.fnsymbol.cont}%
- \addtocounter{pagesLTS.fnsymbol.cont}{1}%
- \ltx@ifpackageloaded{hyperref}{%
- \phantomsection%
- \hypertarget{pagesLTS.fnsymbol.local.\arabic{pagesLTS.fnsymbol.cont}}{}%
- }{}%
- \ifnum \pagesLTS@esov=\pagesLTS@zero%
- \label{pagesLTS.fnsymbol}%
- \else%
- \overridelabel{pagesLTS.fnsymbol}%
- \fi%
+ \ifnum\pagesLTS@esovFs=\pagesLTS@zero%
+ \if@filesw\label{pagesLTS.fnsymbol}\fi%
+ \pagesLTS@putlabel{pagesLTS.fnsymbol.local}{\theCurrentPageLocal}{0}%
+ \else%
+ \overridelabel{pagesLTS.fnsymbol}%
+ \overrideLTSlabel{pagesLTS.fnsymbol.local}{\theCurrentPageLocal}%
+ \fi%
+ \else%
+ \ifx\pagesLTS@pnc\pagesLTS@silly%
+ \pagesLTS@providecounter{pagesLTS.silly.cont}%
+ \addtocounter{pagesLTS.silly.cont}{1}%
+ \IfPackageLoadedT{hyperref}{\phantomsection%
+ \hypertarget{pagesLTS.silly.local.\arabic{pagesLTS.silly.cont}}{}%
+ }%
+ \ifnum\pagesLTS@esovSy=\pagesLTS@zero%
+ \if@filesw\label{pagesLTS.silly}\fi%
+ \pagesLTS@putlabel{pagesLTS.silly.local}{\theCurrentPageLocal}{0}%
+ \else%
+ \overridelabel{pagesLTS.silly}%
+ \overrideLTSlabel{pagesLTS.silly.local}{\theCurrentPageLocal}%
+ \fi%
+ \else%
+ \ifx\pagesLTS@pnc\pagesLTS@gobble%
+ \pagesLTS@providecounter{pagesLTS.gobble.cont}%
+ \addtocounter{pagesLTS.gobble.cont}{1}%
+ \IfPackageLoadedT{hyperref}{\phantomsection%
+ \hypertarget{pagesLTS.gobble.local.\arabic{pagesLTS.gobble.cont}}{}%
+ }%
+ \ifnum\pagesLTS@esovGbl=\pagesLTS@zero%
+ \if@filesw\label{pagesLTS.gobble}\fi%
+ \pagesLTS@putlabel{pagesLTS.gobble.local}{\theCurrentPageLocal}{0}%
\else%
- \ltx@ifpackageloaded{hyperref}{\phantomsection}{}%
- \if@filesw%
- \overridelabel{pagesLTS.\pagesLTS@pnc}%
- \addtocounter{page}{+1}%
- \overrideLTSlabel{pagesLTS.\pagesLTS@pnc.local}{\theCurrentPageLocal}%
- \addtocounter{page}{-1}%
- \fi%
+ \overridelabel{pagesLTS.gobble}%
+ \overrideLTSlabel{pagesLTS.gobble.local}{\theCurrentPageLocal}%
\fi%
-%% Code from prelim2e package again: %%
- }%
- \vss%
- }%
- \vss%
- }%
- \wd\@cclv=\dimen\z@
- \ht\@cclv=\dimen\@ne
- \dp\@cclv=\dimen\tw@
- \egroup
-%% End of code from the prelim2e package. %%
+ \else%
+ \IfPackageLoadedT{hyperref}{\phantomsection}%
+ \if@filesw%
+ \overridelabel{pagesLTS.\pagesLTS@pnc}%
+ \overrideLTSlabel{pagesLTS.\pagesLTS@pnc.local}{\theCurrentPageLocal}%
+ \fi\fi\fi\fi%
+ \endgroup%
}
-\EveryShipout{%
- \ifnum\value{page}>0% \relax
+\AddToHook{shipout/foreground}{%
+ \ifnum\value{page}>0%
\else%
\ifnum\value{page}=0%
\PackageWarning{pageslts}{%
@@ -838,125 +739,165 @@
this will lead to a counter overflow.\MessageBreak%
}%
\else%
- \PackageError{pageslts}{%
+ \PackageError{pageslts}{Counter page has no recognized value}{%
Counter `page' does not have a recognized value:\MessageBreak%
`\the\value{page}'\MessageBreak%
- \@ehd \MessageBreak%
+ \@ehd\MessageBreak%
}%
\fi%
\fi%
\fi%
- \ifnum \value{CurrentPage}=1% This is the first shipout!
+ \ifnum\value{CurrentPage}=1%
\ifx\pagesLTS@called\pagesLTS@zero%
- \global\def\pncmissing{1}%
- \mathchardef\pagesLTS@tmpD=\arabic{page}%
-%% Code from Andres L\"{o}h, Universiteit Utrecht (NL) %%
+ \gdef\pncmissing{1}%
+ \setcounter{pagesLTS.tmpcounter}{\value{page}}%
+%% Code from Andres L\"{o}h, Universiteit Utrecht (NL) %%
\def\extract#1{\expandafter\extract@ #1\END}%
\def\extract@#1\csname @#2\endcsname#3\END{#2}%
\edef\pagesLTS@tmpQ{\extract\thepage}%
-%% End of code from Andres L\"{o}h %%
- \let\pagesLTS@tmpP\pagesLTS@tmpQ%
+%% End of code from Andres L\"{o}h %%
\def\pagesLTS@pnc{0}%
- \pagenumbering{\pagesLTS@tmpP}%
- \setcounter{page}{\pagesLTS@tmpD}%
+ \expandafter\pagenumbering\expandafter{\pagesLTS@tmpQ}%
+ \setcounter{page}{\value{pagesLTS.tmpcounter}}%
\fi%
\pagesLTS@writelabel{0}%
\fi%
\ifx\pagesLTS@pnc\pagesLTS@fns%
- \@pagesLTS@Prelim@EveryShipout%
- \gdef\pagesLTS@esov{\arabic{pagesLTS.fnsymbol.cont}}%
+ \pagesLTS@EveryShipout%
+ \xdef\pagesLTS@esovFs{\arabic{pagesLTS.fnsymbol.cont}}%
\else%
- \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}>1%
- \@pagesLTS@Prelim@EveryShipout%
- \fi%
- \fi%
+ \ifx\pagesLTS@pnc\pagesLTS@silly%
+ \pagesLTS@EveryShipout%
+ \xdef\pagesLTS@esovSy{\arabic{pagesLTS.silly.cont}}%
+ \else%
+ \ifx\pagesLTS@pnc\pagesLTS@gobble%
+ \pagesLTS@EveryShipout%
+ \xdef\pagesLTS@esovGbl{\arabic{pagesLTS.gobble.cont}}%
+ \else%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}>1%
+ \pagesLTS@EveryShipout%
+ \fi\fi\fi\fi%
\addtocounter{CurrentPage}{1}%
\addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{1}%
}
-\newcommand{\pagesLTS@putlabelhyper}[2]{%
- \ifHy@pageanchor \relax%
- \else%
- \PackageError{pagesLTS}{hyperref option pageanchor disabled}{%
- The \string\lastpageref{#1} link doesn't work\MessageBreak%
- using hyperref with disabled option `pageanchor'.\MessageBreak%
- }%
- \fi
-%% The following code is from the hyperref package %%
-%% [2010/04/17 v6.80x; newer versions are available] %%
-%% by Heiko Oberdiek (Big Thanks!). %%
- \if@filesw
- \begingroup
- \let\@number\@firstofone
- \ifHy@pageanchor
- \ifHy@hypertexnames
- \ifHy@plainpages
- \def\Hy@temp{\arabic{page}}%
- \else
- \Hy@unicodefalse
-%% Code not from hyperref package: %%
-%% The following lines are modified from the hyperref package. %%
-%% Without the modification, after the first shipout "PD1" is %%
-%% inserted each time |\pdfstringdef\Hy@temp{\thepage}| is %%
-%% executed (if |fnsymbol| is not used). %%
- \ifnum \value{CurrentPage}=1%
- \ifx\pagesLTS@pnc\pagesLTS@fns%
- \pdfstringdef\Hy@temp{\thepage}%
- \else%
- \def\Hy@temp{\thepage}%
- \fi%
- \else%
- \pdfstringdef\Hy@temp{\thepage}%
- \fi%
-%% Code from hyperref package again: %%
- \fi
- \else
- \def\Hy@temp{\the\Hy@pagecounter}%
- \fi
- \fi
-%% End of code from the hyperref package. %%
-%% (The following four lines are modified %%
-%% from the hyperref package.) %%
- \immediate\write\@auxout{\string
- \newlabel{#1}{{}{#2}{}{\ifHy@pageanchor page.\Hy@temp\fi}{}}}%
- \endgroup%
- \fi%
+%% Code provided by Prof. Enrico Gregorio at https://tex.stackexchange.com/a/542425
+\long\def\protected@iwrite#1#2#3{%
+ \begingroup%
+ #2%
+ \let\protect\@unexpandable@protect%
+ \edef\reserved@a{\immediate\write#1{#3}}%
+ \reserved@a%
+ \endgroup%
+ \if@nobreak\ifvmode\nobreak\fi\fi%
}
+\newcommand{\pagesLTS@makeHy}{%
+ \xdef\pagesLTS@Hptest{Doc-Start}%
+ \ifx\pagesLTS@Hptest\@currentHpage\relax%
+ \gdef\pagesLTS@Hy{\@currentHpage}%
+ \else%
+ \edef\pagesLTS@Hptest{\@currentHpage}%
+ \ifx\pagesLTS@Hptest\empty\relax%
+ \else%
+ \edef\pagesLTS@Hptest{page.}%
+ \ifx\@currentHpage\pagesLTS@Hptest\relax%
+ \ifx\pagesLTS@pnc\pagesLTS@gobble%
+ \PackageNoteNoLine{pageslts}{%
+ With gobbled page numbers "\string\@currentHpage "\MessageBreak%
+ is just "page." without number.\MessageBreak%
+ "\string\pagesLTSlastpageHy " is now let empty}%
+ \else%
+ \PackageWarningNoLine{pageslts}{%
+ \string\@currentHpage\space is just "page." without number.\MessageBreak%
+ \string\pagesLTSlastpageHy\space is now let empty}%
+ \fi%
+ \else%
+ \gdef\pagesLTS@Hy{\pagesLTS@rmpage{\@currentHpage}}%
+ \ifx\pagesLTSlastpageHy\empty\relax%
+ \PackageWarningNoLine{pageslts}{%
+ \string\@currentHpage\space is\MessageBreak%
+ \meaning\@currentHpage\MessageBreak%
+ not beginning with "page.",\MessageBreak%
+ \string\pagesLTSlastpageHy\space is now let empty}%
+ \fi\fi\fi\fi%
+ }%
+
+%% Code provided by David Carlisle at https://tex.stackexchange.com/a/721877
+\def\pagesLTS@rmpage#1{%
+ \expandafter\xpagesLTS@rmpage\expanded{#1}\xpagesLTS@rmpage page.%
+ \xpagesLTS@rmpage\xxpagesLTS@rmpage{#1}}
+\def\xpagesLTS@rmpage #1page.#2\xpagesLTS@rmpage#3\xxpagesLTS@rmpage#4{%
+ \if$\detokenize{#1}$#2%\else#4
+ \fi}
+
\newcommand{\pagesLTS@putlabel}[3]{%
\addtocounter{page}{-1}%
- \ifx\pagesLTS@SK\pagesLTS@one\relax%
- \message{^^J}%
- \message{Package pageslts Warning: Package showkeys without option final loaded,}%
- \ifnum\value{pagesLTS.pagenr}<1%
- \message{(pageslts) but label #1 on page \thepage\space(about \theCurrentPage)}%
- \else%
- \message{(pageslts) but label #1 on page \thepage\space(about \theCurrentPage\space of \arabic{pagesLTS.pagenr})}%
+ \IfPackageLoadedT{showkeys}{%
+ \IfPackageLoadedWithOptionsF{showkeys}{final}{%
+ \ifnum\value{pagesLTS.pagenr}<1%
+ \PackageWarningNoLine{pageslts}{%
+ Package showkeys without option final loaded,\MessageBreak%
+ but label #1 on page \thepage\space(about \theCurrentPage)\MessageBreak%
+ cannot be shown, because pageslts does not use \string\label,\MessageBreak%
+ but writes directly to the \jobname.aux file}%
+ \else%
+ \PackageWarningNoLine{pageslts}{%
+ Package showkeys without option final loaded,\MessageBreak%
+ but label #1 on page \thepage\space(about \theCurrentPage\space of \arabic{pagesLTS.pagenr})\MessageBreak%
+ cannot be shown, because pageslts does not use \string\label,\MessageBreak%
+ but writes directly to the \jobname.aux file}%
+ \fi%
+ }%
+ }%
+ \IfPackageLoadedTF{hyperref}{%
+ \ifHy@pageanchor\else%
+ \PackageWarningNoLine{pagesLTS}{%
+ The \string\lastpageref{#1} link does not work\MessageBreak%
+ using hyperref with disabled option `pageanchor'.\MessageBreak%
+ Better enable `pageanchor' or use\MessageBreak%
+ \string\lastpageref*{...} (not generating a link)%
+ }%
\fi%
- \message{(pageslts) cannot be shown, because pageslts does not use \string\label,}%
- \message{(pageslts) but writes directly to the \jobname.aux file. ^^J}%
- \fi%
- \ltx@ifpackageloaded{hyperref}{\pagesLTS@putlabelhyper{#1}{#2}}{% else
\if@filesw%
- \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}<2%
- \ltx@ifpackageloaded{nameref}{%
- \immediate\write\@auxout{\string\newlabel{#1}{{}{#2}{}{}{}}}}{% else
- \immediate\write\@auxout{\string\newlabel{#1}{{}{#2}}}}%
+ \begingroup%
+ \protected@iwrite\@auxout{}{\string\newlabel{#1}{%
+ {\@currentlabel}{#2}{\@currentlabelname}%
+ {\ifx\pagesLTS@pnc\pagesLTS@fns%
+ \@currentHref%
+ \else\ifx\pagesLTS@pnc\pagesLTS@silly%
+ \@currentHref%
+ \else\ifx\pagesLTS@pnc\pagesLTS@gobble%
+ \@currentHref%
+ \else\ifHy@pageanchor\@currentHpage\fi%
+ \fi\fi\fi%
+ }%
+ {\@kernel@reserved@label@data}}}%
+ \endgroup%
+ \fi%
+ }{%
+ \if@filesw%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}<2%
+ \protected@iwrite\@auxout{}{\string\newlabel{#1}{%
+ {\@currentlabel}{#2}{\@currentlabelname}%
+ {\@currentHref}{\@kernel@reserved@label@data}}%
+ }%
\else%
- \edef\pagesLTStmpA{#1}%
- \edef\pagesLTStmpB{pagesLTS.\pagesLTS@pnc.local}%
- \ifx\pagesLTStmpA\pagesLTStmpB%
- \edef\pagesLTStmpA{#3}%
- \ifx\pagesLTStmpA\pagesLTS@one%
+ \edef\pagesLTS@tmpC{#1}%
+ \edef\pagesLTS@tmpD{pagesLTS.\pagesLTS@pnc.local}%
+ \ifx\pagesLTS@tmpC\pagesLTS@tmpD%
+ \edef\pagesLTS@tmpC{#3}%
+ \ifx\pagesLTS@tmpC\pagesLTS@one%
\immediate\write\@auxout{\string\undonewlabel{#1}}%
\fi%
\fi%
- \ltx@ifpackageloaded{nameref}{%
- \immediate\write\@auxout{\string\newlabel{#1}{{}{#2}{}{}{}}}}{% else
- \immediate\write\@auxout{\string\newlabel{#1}{{}{#2}}}}%
+ \protected@iwrite\@auxout{}{\string\newlabel{#1}{%
+ {\@currentlabel}{#2}{\@currentlabelname}%
+ {\@currentHref}{\@kernel@reserved@label@data}}%
+ }%
\fi%
\fi%
- }%
+ }%
\addtocounter{page}{+1}%
}
@@ -965,298 +906,213 @@
\addtocounter{CurrentPage}{-1}%
\addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{-1}%
\ifx\pagesLTS@pnc\pagesLTS@zero%
- \PackageWarning{pagesLTS}{No page numbering scheme found:\MessageBreak%
- \pagesLTS@messageNPN }%
+ \PackageWarningNoLine{pagesLTS}{No page numbering scheme found:\MessageBreak%
+ \pagesLTS@messageNPN}%
\else%
\pagesLTS@writelabel{\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}}%
- \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}<2%
- \ifx\pagesLTS@pnc\pagesLTS@fns% \relax
- \else%
- \pagesLTS@writelabel{\pagesLTS@pnc}%
- \fi%
- \fi%
- \fi%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}<2%
+ \ifx\pagesLTS@pnc\pagesLTS@fns%
+ \else\ifx\pagesLTS@pnc\pagesLTS@silly%
+ \else\ifx\pagesLTS@pnc\pagesLTS@gobble%
+ \else\pagesLTS@writelabel{\pagesLTS@pnc}%
+ \fi\fi\fi\fi\fi%
\addtocounter{page}{+1}%
\pagesLTS@putlabel{LastPages}{\theCurrentPage}{1}%
\addtocounter{CurrentPage}{+1}%
- \addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{1}%
+ \addtocounter{pagesLTS.current.local.\pagesLTS@pnc}{+1}%
}
-\AtBeginDocument{%
+\AddToHook{begindocument/end}{%
+ \IfPackageLoadedT{lastpage}{%
+ \PackageNoteNoLine{pageslts}{Packages lastpage and pageslts used:\MessageBreak%
+ Are you sure that you want to load both packages?}%
+ }%
+ \IfPackageLoadedTF{hyperref}{%
+ \ProvideTextCommand{\textasteriskcentered}{PD1}{*}%
+ \IfPackageAtLeastF{hyperref}{2024-11-05}{%
+ \PackageError{pageslts}{hyperref package version too old}{%
+ Required version: 2024-11-05 v7.01l or newer,\MessageBreak%
+ found version:\space\space\space\space\csname ver@hyperref.sty\endcsname.}}%
+ }{\PackageNoteNoLine{pageslts}{Package hyperref not loaded.\MessageBreak%
+ pageslts would support hyperref.\MessageBreak%
+ The page references will NOT be hyperlinked}%
+ }%
+ \IfPackageLoadedT{alphalph}{%
+ \newalphalph{\AlphMult}[mult]{\@Alph}{26}%
+ \newalphalph{\alphMult}[mult]{\@alph}{26}%
+ \newalphalph{\fnsymbolmult}[mult]{\@fnsymbol}{5}%
+ }%
\if@filesw%
- \immediate\write\@auxout{\string\gdef\string\pagesLTS@loaded{p@gesLTSnotlo@ded}}%
- \fi%
- \@ifpackageloaded{endfloat}%
- {\@ifpackagelater{endfloat}{1992/03/31}% April 1992 v2.0
- {\@ifpackagelater{endfloat}{2011/12/24}{% 2011/12/25 v2.5d
- \relax}%
- {\PackageWarningNoLine{pageslts}{Old endfloat package detected:\MessageBreak%
- There is a newer version of the endfloat package available.\MessageBreak%
- Please consider updating your version.\MessageBreak%
- The pageslts package might be incompatible with\MessageBreak%
- your current endfloat package.\MessageBreak%
- }%
- }%
- }{\PackageError{pageslts}{Incompatible, very old endfloat package detected.}%
- {The very old version 2.0 (and earlier) of the\MessageBreak%
- endfloat package actually redefined the \string\enddocument ,\MessageBreak%
- and so interfered drastically with the LaTeX2e commands\MessageBreak%
- which make use of \string\AtEndDocument .\MessageBreak%
- Newer versions of the endfloat package exists\MessageBreak%
- (at least: v2.5d as of 2011/12/25)\MessageBreak%
- in modern documentation form,\MessageBreak%
- which should be available from CTAN.\MessageBreak%
- Please update your endfloat package\MessageBreak%
- for use with the pageslts package.\MessageBreak %
- }%
- }%
- }{}%
- \@ifpackageloaded{lastpage}%
- {\@ifpackagelater{lastpage}{2010/07/28}% 2010/07/29 v1.2a
- {\@ifpackagelater{lastpage}{2013/01/27}% 2013/01/28 v1.2l
- {\PackageWarning{pageslts}{lastpage package detected.\MessageBreak%
- With pageslts package in use, lastpage has no function.\MessageBreak%
- Just remove the lastpage package from your document.\MessageBreak%
- }%
- }{%
- \PackageWarning{pageslts}{Old lastpage package detected.\MessageBreak%
- With pageslts package in use, lastpage has no function.\MessageBreak%
- Just remove the lastpage package from your document.\MessageBreak%
- At least update it!\MessageBreak%
- }%
- }%
- }{%
- \PackageWarning{pageslts}{Incompatible package lastpage detected:\MessageBreak%
- Package pageslts was loaded, but also an old\MessageBreak%
- version of the lastpage package.\MessageBreak%
- pageslts has all functionality of the lastpage\MessageBreak%
- package (and more), so just remove the lastpage\MessageBreak%
- package from your document.\MessageBreak%
- (At least update it!)\MessageBreak%
- pageslts will now ''kill'' the lastpage@putlabel\MessageBreak%
- command of the lastpage package.\MessageBreak%
- }%
- \gdef\lastpage@putlabel{\relax}%
- }%
- }{}%
- \ltx@ifpackageloaded{alphalph}%
- {\newalphalph{\AlphMult}[mult]{\@Alph}{26}%
- \newalphalph{\alphMult}[mult]{\@alph}{26}%
- \newalphalph{\fnsymbolmult}[mult]{\@fnsymbol}{5}%
- }{}%
- \ltx@ifpackageloaded{hyperref}{%
- \@ifpackageloaded{pdfpages}%
- {\PackageWarningNoLine{pageslts}{Package pdfpages detected.\MessageBreak%
- Using hyperref with pdfpages can cause problems. See\MessageBreak%
- https://www.ctan.org/pkg/pax\MessageBreak%
- for the Pdf Annotations eXtractor, pax%
- }%
- }{% \relax
+ \else%
+ \IfPackageLoadedTF{tikz}{%
+ \PackageWarning{pageslts}%
+ {It was not allowed to write to an\MessageBreak%
+ .aux file. This package does not work without access\MessageBreak%
+ to an .aux file.\MessageBreak%
+ It is OK if the .aux file was already updated\MessageBreak%
+ by a previous compiler run\MessageBreak%
+ and would not have changed anyway.\MessageBreak%
+ }%
+ }{\PackageError{pageslts}{No writing to auxiliary file allowed}%
+ {It was not allowed to write to an .aux file.\MessageBreak%
+ This package does not work without access to an .aux file.\MessageBreak%
+ Press Ctrl+Z to exit.\MessageBreak%
+ But it is OK if the .aux file was already updated\MessageBreak%
+ by previous compiler runs\MessageBreak%
+ and would not have changed anyway.\MessageBreak%
+ (In that case just press Enter or Return\MessageBreak%
+ to continue the compilation.)\MessageBreak%
}%
- \@ifpackageloaded{undolabl}%
- {\@ifpackagelater{undolabl}{2010/07/14}% 2010/07/15 v1.0d
- {\@ifpackagelater{undolabl}{2015/03/29}% 2015/03/29 v1.0l
- {% recent version as of the time of last revision of this package: OK
- }{% old, but not obsolete version
- \PackageWarningNoLine{pageslts}{Old version of undolabl package used.\MessageBreak%
- See https://www.ctan.org/pkg/undolabl\MessageBreak%
- for a new version.\MessageBreak%
- }%
- }
- }{\PackageError{pageslts}{Incompatible, obsolete version of undolabl package used.}{%
- See https://www.ctan.org/pkg/undolabl\MessageBreak%
- for a new version.\MessageBreak%
- Type X <return> to quit.\MessageBreak%
- }%
- }
- }{\PackageError{pageslts}{Package undolabl missing}{%
- Package undolabl not found.\MessageBreak%
- The pageslts package needs the undolabl package.\MessageBreak%
- See https://www.ctan.org/pkg/undolabl\MessageBreak%
- Type X <return> to quit.\MessageBreak%
- }%
- }
- \@ifpackagelater{hyperref}{2012/11/05}{% 2012/11/06 v6.83m
- \relax}{%
- \PackageWarningNoLine{pageslts}{Old hyperref package detected:\MessageBreak%
- There is a newer version of the\MessageBreak%
- hyperref package available:\MessageBreak%
- https://www.ctan.org/pkg/hyperref\MessageBreak%
- Please consider updating your version.\MessageBreak%
- }%
- }%
- %% pageslts supports the use of the package hyperref by
- %% Heiko Oberdiek (hyperref version 2012/11/06 v6.83m).
- %% pageslts may work with earlier versions of this packages,
- %% but this was not tested.
- }{%
- \PackageWarning{pageslts}{Package hyperref NOT detected.\MessageBreak%
- pageslts would support hyperref. The page references\MessageBreak%
- will NOT be hyperlinked!\MessageBreak }%
}%
- \ltx@ifpackageloaded{showkeys}{%
- \@ifpackagewith{showkeys}{final}{}{\gdef\pagesLTS@SK{1}}}{% else \relax
- }%
+ \fi%
}
-\AtEndDocument{%
- \ltx@ifpackageloaded{showkeys}{%
- \ifx\pagesLTS@SK\pagesLTS@one\relax%
- \else%
- \providecommand*\pagesLTS@sklf[1]{}%
- \ifx\showkeyslabelformat\pagesLTS@sklf\relax%
- \else%
- \PackageError{pageslts}{Package showkeys loaded after pageslts}{%
- The showkeys package with option "final" has been loaded\MessageBreak%
- after the pageslts package.\MessageBreak%
- Please first load showkeys and then pageslts}%
- \fi%
- \fi%
- }{% else no showcase, \relax
+\def\pagesLTS@skld{0}
+\IfPackageLoadedT{showkeys}{\IfPackageLoadedWithOptionsF{showkeys}{final}{%
+ \def\pagesLTS@skld{1}}%
+ }%
+
+\AddToHook{enddocument/afterlastpage}{%
+ \IfPackageLoadedT{showkeys}{\IfPackageLoadedWithOptionsF{showkeys}{final}{%
+ \ifx\pagesLTS@skld\pagesLTS@one\relax%
+ \else\PackageError{pageslts}{Package showkeys loaded after pageslts}{%
+ The showkeys package with option "final" has been loaded\MessageBreak%
+ after the pageslts package.\MessageBreak%
+ Please first load showkeys and then pageslts}%
+ \fi}%
}%
\ifx\pncmissing\pagesLTS@one\relax%
- \PackageError{pageslts}{pagenumbering scheme missing}{\pagesLTS@messageNPN }%
+ \PackageError{pageslts}{pagenumbering scheme missing}{\pagesLTS@messageNPN}%
\fi%
- \message{^^J%
- AED: pageslts setting LastPage ^^J}%
- \clearpage%
+ \PackageInfo{pageslts}{enddocument/afterlastpage (AED): pageslts setting LastPage}%
\ifx\pagesLTS@pnc\pagesLTS@fns%
\def\pagesLTS@tmpA{\arabic{pagesLTS.fnsymbol.local}}%
- \ifnum \pagesLTS@eso=\pagesLTS@tmpA%
+ \ifnum\pagesLTS@esoFs=\pagesLTS@tmpA%
\gdef\pagesLTS@rerun{0}%
\else%
\gdef\pagesLTS@rerun{1}%
\fi%
\if@filesw%
- \immediate\write\@auxout{\string\gdef\string\pagesLTS@eso{\pagesLTS@tmpA}}%
+ \immediate\write\@auxout{\string\gdef\string\pagesLTS@esoFs{\pagesLTS@tmpA}}%
\fi%
- \fi%
+ \else%
+ \ifx\pagesLTS@pnc\pagesLTS@silly%
+ \def\pagesLTS@tmpA{\arabic{pagesLTS.silly.local}}%
+ \ifnum\pagesLTS@esoSy=\pagesLTS@tmpA%
+ \gdef\pagesLTS@rerun{0}%
+ \else%
+ \gdef\pagesLTS@rerun{1}%
+ \fi%
+ \if@filesw%
+ \immediate\write\@auxout{\string\gdef\string\pagesLTS@esoSy{\pagesLTS@tmpA}}%
+ \fi%
+ \else%
+ \ifx\pagesLTS@pnc\pagesLTS@gobble%
+ \def\pagesLTS@tmpA{\arabic{pagesLTS.gobble.local}}%
+ \ifnum\pagesLTS@esoGbl=\pagesLTS@tmpA%
+ \gdef\pagesLTS@rerun{0}%
+ \else%
+ \gdef\pagesLTS@rerun{1}%
+ \fi%
+ \if@filesw%
+ \immediate\write\@auxout{\string\gdef\string\pagesLTS@esoGbl{\pagesLTS@tmpA}}%
+ \fi\fi\fi\fi%
\pagesLTS@putlabel{LastPage}{\thepage}{1}%
\let\pagesLTS@tmpA\undefined%
- }
-
-\AfterLastShipout{%
\if@filesw%
- \ifx\pagesLTS@esov\pagesLTS@zero%
+ \ifx\pagesLTS@esovFs\pagesLTS@zero\relax%
\else%
- \immediate\write\@auxout{\string
- \pagesLTS@ifcounter{pagesLTS.fnsymbol.local}}%
- \immediate\write\@auxout{\string
- \setcounter{pagesLTS.fnsymbol.local}{\pagesLTS@esov}}%
+ \immediate\write\@auxout{\string\pagesLTS@providecounter{pagesLTS.fnsymbol.local}}%
+ \immediate\write\@auxout{\string\setcounter{pagesLTS.fnsymbol.local}{\pagesLTS@esovFs}}%
+ \fi%
+ \ifx\pagesLTS@esovSy\pagesLTS@zero\relax%
+ \else%
+ \immediate\write\@auxout{\string\pagesLTS@providecounter{pagesLTS.silly.local}}%
+ \immediate\write\@auxout{\string\setcounter{pagesLTS.silly.local}{\pagesLTS@esovSy}}%
+ \fi%
+ \ifx\pagesLTS@esovGbl\pagesLTS@zero\relax%
+ \else%
+ \immediate\write\@auxout{\string\pagesLTS@providecounter{pagesLTS.gobble.local}}%
+ \immediate\write\@auxout{\string\setcounter{pagesLTS.gobble.local}{\pagesLTS@esovGbl}}%
\fi%
- \ltx@ifpackageloaded{hyperref}{%
- \ifx\pagesLTS@pnc\pagesLTS@fns%
- \immediate\write\@auxout{\string
- \gdef\string\lastpageref{\string\lastpagerefend}}%
- \fi%
- }{}%
\fi%
- \pagesLTS@ifcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}%
+ \pagesLTS@providecounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}%
\setcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{%
\value{pagesLTS.current.local.\pagesLTS@pnc}}%
- \addtocounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{-1}
- \ifnum \value{pagesLTS.pnc.\pagesLTS@pnc}>1%
- \mathchardef\pagesLTS@tmpD=\arabic{pagesLTS.pnc.0}%
- \setcounter{pagesLTS.pnc.0}{\value{pagesLTS.pnc.\pagesLTS@pnc}}%
- \@tempcnta=\value{pagesLTS.pnc.0}\relax%
+ \addtocounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{-1}%
+ \ifnum\value{pagesLTS.pnc.\pagesLTS@pnc}>1%
+ \setcounter{pagesLTS.tmpcounter}{\value{pagesLTS.pnc.\pagesLTS@pnc}}%
+ \@tempcnta=\value{pagesLTS.tmpcounter}\relax%
\loop%
\ifnum\@tempcnta>1\relax%
- \addtocounter{pagesLTS.pnc.0}{-1}%
+ \addtocounter{pagesLTS.tmpcounter}{-1}%
\addtocounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}{%
- -\value{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.0}.local.count}}%
- \@tempcnta=\value{pagesLTS.pnc.0}\relax%
+ -\value{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.tmpcounter}.local.count}}%
+ \@tempcnta=\value{pagesLTS.tmpcounter}\relax%
\repeat%
- \setcounter{pagesLTS.pnc.0}{\pagesLTS@tmpD}%
\fi%
\if@filesw%
\immediate\write\@auxout{\string
- \pagesLTS@ifcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.cnt}}%
+ \pagesLTS@providecounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.cnt}}%
\edef\pagesLTS@tmpA{\arabic{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.count}}%
\immediate\write\@auxout{\string
\setcounter{pagesLTS.\pagesLTS@pnc.\arabic{pagesLTS.pnc.\pagesLTS@pnc}.local.cnt}{\pagesLTS@tmpA}}%
- \let\pagesLTS@tmpA\undefined%
\fi%
\addtocounter{page}{-1}%
- \edef\pagesLTS@tmpA{\thepage}%
+ \def\pagesLTS@tmpA{\thepage}%
\if@filesw%
- \immediate\write\@auxout{\string
- \gdef\string\pagesLTS.lastpage{\pagesLTS@tmpA}}%
+ \protected@iwrite\@auxout{}{\string\gdef\string\pagesLTSlastpage{\pagesLTS@tmpA}}%
+ \gdef\pagesLTS@Hy{}%
+ \IfPackageLoadedT{hyperref}{\ifHy@pageanchor\pagesLTS@makeHy\fi}%
+ \protected@iwrite\@auxout{}{\string\gdef\string\pagesLTSlastpageHy{\pagesLTS@Hy}}%
\fi%
\addtocounter{page}{+1}%
\addtocounter{CurrentPage}{-1}%
\edef\pagesLTS@tmpB{\arabic{CurrentPage}}%
\if@filesw%
- \immediate\write\@auxout{\string
- \setcounter{pagesLTS.pagenr}{\pagesLTS@tmpB}}%
+ \immediate\write\@auxout{\string\setcounter{pagesLTS.pagenr}{\pagesLTS@tmpB}}%
\fi%
\addtocounter{CurrentPage}{+1}%
- \message{^^J%
- AED: pageslts setting VeryLastPage via AfterLastShipout ^^J}%
+ \PackageInfo{pageslts}{enddocument/afterlastpage (AED): pageslts setting VeryLastPage}%
\pagesLTS@putlabel{VeryLastPage}{\thepage}{1}%
- \message{^^J%
- AED: pageslts setting LastPages via AfterLastShipout ^^J}%
+ \PackageInfo{pageslts}{enddocument/afterlastpage (AED): pageslts setting LastPages}%
\pagesLTS@putlabels%
- \typeout{^^J}%
\ifodd\pagesLTS@tmpB%
- \@PackageInfoNoLine{pageslts}{Total number of pages is odd}%
+ \PackageNoteNoLine{pageslts}{Total number of pages is odd}%
\else%
- \@PackageInfoNoLine{pageslts}{Total number of pages is even}%
+ \PackageNoteNoLine{pageslts}{Total number of pages is even}%
\fi%
- \typeout{^^J}%
- \let\pagesLTS@tmpA\undefined%
- \let\pagesLTS@tmpB\undefined%
}
-\AtEndAfterFileList{%
- \ifx\pagesLTS@rerun\pagesLTS@one%
- \PackageWarningNoLine{pageslts}{%
- Label(s) may have changed.\MessageBreak%
- Rerun to get cross-references right%
- }%
- \fi%
- }
-
-\newcommand{\pagesLTS@ifundefinedorrelax}[1]{%
- % Modified Markus Kohm code for use without e-TeX
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname #1\endcsname\relax%
- \expandafter\ifx\csname #1\endcsname\relax%
- \expandafter\expandafter\expandafter\@firstoftwo
- \else%
- \expandafter\expandafter\expandafter\@secondoftwo
- \fi%
- \else%
- \expandafter\@firstoftwo
- \fi%
- }
-
-\pagesLTS@ifundefinedorrelax{frontmatter}{% \relax
-}{% else
- \ltx@GlobalPrependToMacro{\frontmatter}{\pagesLTS@prefrontmatter}%
- \ltx@GlobalAppendToMacro{\frontmatter}{\pagesLTS@postfrontmatter}%
- }
-
-\newcommand{\pagesLTS@prefrontmatter}{%
+\AddToHook{cmd/frontmatter/before}{%
\xdef\pagesLTS@FMBpncn{\pagesLTS@pnc}%
\xdef\pagesLTS@FMBpncp{\arabic{pagesLTS.current.local.\pagesLTS@pnc}}%
}
-\newcommand{\pagesLTS@postfrontmatter}{%
+\AddToHook{cmd/frontmatter/after}{%
\xdef\pagesLTS@FMEpncn{\pagesLTS@pnc}%
\ifx\pagesLTS@FMBpncn\pagesLTS@FMEpncn%
\else%
\ifx\pagesLTS@FMBpncn\pagesLTS@zero%
\else%
\ifx\pagesLTS@FMBpncp\pagesLTS@one%
- \PackageError{pageslts}{\string\pagenumbering\space before \string\frontmatter}{%
- Do not use \string\pagenumbering{\pagesLTS@FMBpncn} before \string\frontmatter \MessageBreak%
+ \PackageWarning{pageslts}{\string\pagenumbering\space before \string\frontmatter:\MessageBreak%
+ Do not use \string\pagenumbering{\pagesLTS@FMBpncn} before \string\frontmatter\MessageBreak%
on the same page!\MessageBreak%
- \string\frontmatter\space (re)defines the page numbering scheme to \pagesLTS@FMEpncn , \MessageBreak%
- thus earlier use of \string\pagenumbering{\pagesLTS@FMBpncn} on the same page is useless anyway.}%
+ \string\frontmatter\space (re)defines the page numbering scheme to \pagesLTS@FMEpncn ,\MessageBreak%
+ thus earlier use of \string\pagenumbering{\pagesLTS@FMBpncn} %
+ on the same page is useless anyway\MessageBreak}%
\fi%
\fi%
\fi%
-}
+ }
+
+\AddToHook{enddocument/info}{%
+ \ifx\pagesLTS@rerun\pagesLTS@one%
+ \PackageWarningNoLine{pageslts}{Label(s) may have changed.\MessageBreak%
+ Rerun to get cross-references right}%
+ \fi%
+ }
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Indication/PanneauRouteC24a.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Indication/PanneauRouteC24a.pdf
new file mode 100644
index 00000000000..3b5ec7e8a4c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Indication/PanneauRouteC24a.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB1j.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB1j.pdf
new file mode 100644
index 00000000000..5a98b386726
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB1j.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB30_30.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB30_30.pdf
new file mode 100644
index 00000000000..2e158110165
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB30_30.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b1.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b1.pdf
new file mode 100644
index 00000000000..91952f39a87
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b1.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b2.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b2.pdf
new file mode 100644
index 00000000000..ec8a30e4374
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b2.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b3.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b3.pdf
new file mode 100644
index 00000000000..92fd45c47f9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b3.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b4.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b4.pdf
new file mode 100644
index 00000000000..02b47faac07
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b4.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b5.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b5.pdf
new file mode 100644
index 00000000000..6d3a6716b7e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB6b5.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB49VL.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB49VL.pdf
new file mode 100644
index 00000000000..d737b9b2032
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB49VL.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50a.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50a.pdf
new file mode 100644
index 00000000000..a3ef5fd0ce7
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50a.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50b.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50b.pdf
new file mode 100644
index 00000000000..f5bb08180f2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50b.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50c.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50c.pdf
new file mode 100644
index 00000000000..3fecb25982a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50c.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50d.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50d.pdf
new file mode 100644
index 00000000000..250253b066f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50d.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50e.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50e.pdf
new file mode 100644
index 00000000000..853cc07c531
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB50e.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB51_30.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB51_30.pdf
new file mode 100644
index 00000000000..08e96de6170
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB51_30.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB52.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB52.pdf
new file mode 100644
index 00000000000..a14e1a111d3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB52.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB53.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB53.pdf
new file mode 100644
index 00000000000..13e4ce3ac3a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB53.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB54.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB54.pdf
new file mode 100644
index 00000000000..ce71fbd4b1c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB54.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB55.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB55.pdf
new file mode 100644
index 00000000000..099108818f9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB55.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB56.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB56.pdf
new file mode 100644
index 00000000000..a721b753c27
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB56.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB57.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB57.pdf
new file mode 100644
index 00000000000..f1b433d19ba
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB57.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB58.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB58.pdf
new file mode 100644
index 00000000000..2f96cdbec47
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB58.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB59.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB59.pdf
new file mode 100644
index 00000000000..02bc961ed8a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Obligation/PanneauRouteB59.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/PanneauxRoute.sty b/Master/texmf-dist/tex/latex/panneauxroute/PanneauxRoute.sty
index 693ad95c679..68021ef1486 100644
--- a/Master/texmf-dist/tex/latex/panneauxroute/PanneauxRoute.sty
+++ b/Master/texmf-dist/tex/latex/panneauxroute/PanneauxRoute.sty
@@ -5,9 +5,10 @@
% : Licence CC BY-SA 3.0 for svg source (http://sig974.free.fr/?p=1520)
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{PanneauxRoute}[2024/09/10 v0.1.1 Panneaux de signalisation fr]
+\ProvidesPackage{PanneauxRoute}[2024/09/14 v0.1.2 Panneaux de signalisation fr]
%------Historique
+% 0.1.2 Ajout des panneaux divers
% 0.1.1 Ajout du panneau B14 (80)
% 0.1.0 Version initiale
@@ -59,8 +60,20 @@
\NewDocumentCommand\prFinRoutePrio{ O{height=1.15cm} }{\AffPanneau[#1]{AB7}}
\NewDocumentCommand\prRondPoint{ O{height=1.15cm} }{\AffPanneau[#1]{AB25}}
+\NewDocumentCommand\prDosAneTemp{ O{height=1.15cm} }{\AffPanneau[#1]{AK2}}
+\NewDocumentCommand\prChaussGlissTemp{ O{height=1.15cm} }{\AffPanneau[#1]{AK4}}
+\NewDocumentCommand\prChausRetTemp{ O{height=1.15cm} }{\AffPanneau[#1]{AK3}}
+\NewDocumentCommand\prTravauxTemp{ O{height=1.15cm} }{\AffPanneau[#1]{AK5}}
+\NewDocumentCommand\prDangerTemp{ O{height=1.15cm} }{\AffPanneau[#1]{AK14}}
+\NewDocumentCommand\prFeuxTemp{ O{height=1.15cm} }{\AffPanneau[#1]{AK17}}
+\NewDocumentCommand\prGraviersTemp{ O{height=1.15cm} }{\AffPanneau[#1]{AK22}}
+\NewDocumentCommand\prBouchonTemp{ O{height=1.15cm} }{\AffPanneau[#1]{AK30}}
+\NewDocumentCommand\prAccidentTemp{ O{height=1.15cm} }{\AffPanneau[#1]{AK31}}
+\NewDocumentCommand\prBrouillardTemp{ O{height=1.15cm} }{\AffPanneau[#1]{AK32}}
+
\NewDocumentCommand\prCircInterd{ O{height=1.15cm} }{\AffPanneau[#1]{B0}}
\NewDocumentCommand\prSensInterdit{ O{height=1.15cm} }{\AffPanneau[#1]{B1}}
+\NewDocumentCommand\prSensInterditJ{ O{height=1.15cm} }{\AffPanneau[#1]{B1j}}
\NewDocumentCommand\prInterdTournG{ O{height=1.15cm} }{\AffPanneau[#1]{B2a}}
\NewDocumentCommand\prInterdTournD{ O{height=1.15cm} }{\AffPanneau[#1]{B2b}}
\NewDocumentCommand\prInterdDemiTour{ O{height=1.15cm} }{\AffPanneau[#1]{B2c}}
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK14.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK14.pdf
new file mode 100644
index 00000000000..8b388c78e4f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK14.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK17.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK17.pdf
new file mode 100644
index 00000000000..27845490800
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK17.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK2.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK2.pdf
new file mode 100644
index 00000000000..521f95a618d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK2.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK22.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK22.pdf
new file mode 100644
index 00000000000..7596e846eb5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK22.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK3.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK3.pdf
new file mode 100644
index 00000000000..3871b514b2f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK3.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK30.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK30.pdf
new file mode 100644
index 00000000000..2c0aac367ad
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK30.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK31.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK31.pdf
new file mode 100644
index 00000000000..18e5e37d90e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK31.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK32.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK32.pdf
new file mode 100644
index 00000000000..7f59c16d001
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK32.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK4.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK4.pdf
new file mode 100644
index 00000000000..bcee3bff90d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK4.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK5.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK5.pdf
new file mode 100644
index 00000000000..236c455af6a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Temporaire/PanneauRouteAK5.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/paracol/paracol-2018-12-31.sty b/Master/texmf-dist/tex/latex/paracol/paracol-2018-12-31.sty
new file mode 100644
index 00000000000..fb4c1a7ae23
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/paracol/paracol-2018-12-31.sty
@@ -0,0 +1,2894 @@
+%% Style file `paracol'.
+%% Copyright (C) 2005-2018
+%% Hiroshi Nakashima <h.nakashima@DOMAIN; DOMAIN=media.kyoto-u.ac.jp>
+%% (Kyoto University)
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or any later version.
+
+\NeedsTeXFormat{LaTeX2e}[1994/12/01]
+\ProvidesPackage{paracol}
+[2018/12/31 v1.35 ]
+
+%% Register Declaration
+
+\newcount\pcol@currcol \global\pcol@currcol\z@
+\newcount\pcol@nextcol
+\newcount\pcol@ncol \global\pcol@ncol\z@
+\newcount\pcol@ncolleft \global\pcol@ncolleft\z@
+\newcount\pcol@page
+\newcount\pcol@basepage
+\newcount\pcol@toppage
+\newcount\pcol@footnotebase
+\newcount\pcol@nfootnotes
+\newcount\pcol@mcid
+\newif\ifpcol@output \global\pcol@outputfalse
+\newif\ifpcol@nospan
+\newif\ifpcol@sync \pcol@syncfalse
+\newif\ifpcol@sptextstart \pcol@sptextstartfalse
+\newif\ifpcol@sptext \pcol@sptextfalse
+\newif\ifpcol@clear \pcol@clearfalse
+\newif\ifpcol@flush
+\newif\ifpcol@outputflt
+\newif\ifpcol@lastpage
+\newif\ifpcol@lastpagesave
+\newif\ifpcol@scfnote \pcol@scfnotefalse
+\newif\ifpcol@mgfnote \pcol@mgfnotefalse
+\newif\ifpcol@fncounteradjustment \pcol@fncounteradjustmentfalse
+\newif\ifpcol@inner
+\newif\ifpcol@firstpage
+\newif\ifpcol@havelastpage \global\pcol@havelastpagefalse
+\newif\ifpcol@paired \global\pcol@pairedtrue
+\newif\ifpcol@swapcolumn \global\pcol@swapcolumnfalse
+\newif\ifpcol@swapmarginpar \global\pcol@swapmarginparfalse
+\newif\ifpcol@bg@swap \global\pcol@bg@swapfalse
+\newif\ifpcol@bg@@swap
+\newif\ifpcol@bg@painted
+\newif\ifpcol@bfbottom
+\def\reserved@a{pLaTeX2e}
+\ifx\reserved@a\pfmtname \pcol@bfbottomfalse \else \pcol@bfbottomtrue \fi
+\newif\ifpcol@dfloats
+\newdimen\pcol@prevdepth
+\newdimen\pcol@colht
+\newdimen\pcol@textfloatsep
+\newdimen\pcol@lrmargin
+\newdimen\pagerim \pagerim\z@
+\newskip\pcol@topskip
+\newskip\belowfootnoteskip \belowfootnoteskip\z@
+\newbox\pcol@topfnotes
+\newbox\pcol@prespan \setbox\pcol@prespan\box\voidb@x
+\newbox\pcol@rightpage \global\setbox\pcol@rightpage\box\voidb@x
+\newbox\pcol@colorstack@saved
+\newbox\pcol@tempboxa
+\newbox\pcol@tempboxb
+\newinsert\pcol@colorins
+\count\pcol@colorins\z@ \skip\pcol@colorins\z@ \dimen\pcol@colorins\maxdimen
+\newtoks\pcol@everyvbox
+
+%% Logging Tools
+
+\def\pcol@ShowBox#1{%
+ \ifvoid#1\message{(VOID)}%
+ \else
+ \message{(\the\ht#1+\the\dp#1)x(\the\wd#1)}%
+ {\vfuzz\z@ \showboxdepth\@M \showboxbreadth\@M
+ \setbox\z@\vbox to\z@{\ifdim\ht#1=\z@ \vskip1\p@\fi \copy#1}}%
+ \fi}
+\def\pcol@LogLevel#1#2#3{%
+ \pcol@iLogLevel{#1}{pcol@Log}%
+ \pcol@iLogLevel{#2}{pcol@Logstart}%
+ \pcol@iLogLevel{#2}{pcol@Logend}%
+ \pcol@iLogLevel{#3}{pcol@Logfn}}
+\def\pcol@iLogLevel#1#2{%
+ \expandafter\let\expandafter\reserved@a
+ \csname #2@\romannumeral#1\endcsname
+ \expandafter\let\csname #2\endcsname\reserved@a}
+\def\pcol@Log@iii#1#2#3{\message{\string#1{#2%
+ (\number\pcol@page:\number\pcol@currcol/\number\pcol@toppage)}}%
+ \pcol@ShowBox#3\message{end\string#1}}
+\def\pcol@Log@ii#1#2#3{\message{\string#1{#2%
+ (\number\pcol@page:\number\pcol@currcol/\number\pcol@toppage)}=\the\ht#3}}
+\def\pcol@Log@i#1#2#3{}
+\def\pcol@Logstart@ii#1{\message{S\string#1}}
+\def\pcol@Logend@ii#1{\message{E\string#1}}
+\def\pcol@Logstart@i#1{}
+\def\pcol@Logend@i#1{}
+\def\pcol@Logfn@ii#1{\message{\string#1}}
+\def\pcol@Logfn@i#1{}
+\pcol@LogLevel111
+
+\iffalse
+\newwrite\pcol@F@write
+\immediate\openout\pcol@F@write\jobname.fls
+\fi
+\def\pcol@F#1{\pcol@FF{#1}{}}
+\def\pcol@FF#1#2{\pcol@F@count
+ \immediate\write\pcol@F@write{#1(\number\pcol@page:\number\pcol@currcol/%
+ \number\pcol@toppage:\number\c@page)=\pcol@F@n #2}}
+\def\pcol@F@count{{\@tempcnta\z@
+ \def\@elt##1{\advance\@tempcnta\@ne}\@freelist
+ \xdef\pcol@F@n{\number\@tempcnta}}}
+\let\pcol@Fb\pcol@F@count
+\def\pcol@Fe#1{{\let\reserved@a\pcol@F@n \pcol@FF{#1}{<=\reserved@a}}}
+\let\pcol@F\@gobble
+\let\pcol@Fb\relax
+\let\pcol@Fe\@gobble
+
+%% \output Routine
+
+\def\pcol@ovf{%
+ \PackageError{paracol}{Too many unprocessed columns/floats}\@ehb}
+
+\def\pcol@output{\let\par\@@par \let\set@color\pcol@set@color
+ \global\pcol@mcid\z@
+ \pcol@Logstart{\pcol@output\number\outputpenalty
+ (\number\c@page:\number\pcol@currcol)}%
+ \ifnum\outputpenalty<-\@M
+ \pcol@specialoutput
+ \else\ifpcol@output
+ \pcol@makecol
+ \pcol@opcol
+ \pcol@startcolumn\@ne
+ \@whilesw\if@fcolmade\fi{\pcol@opcol \pcol@startcolumn\@ne}%
+ \else
+ \@twocolumnfalse \let\@combinefloats\pcol@@combinefloats
+ \@makecol
+ \@opcol
+ \@startcolumn
+ \@whilesw\if@fcolmade\fi{\@opcol \@startcolumn}%
+ \fi\fi
+ \global\maxdepth\@maxdepth
+ \ifnum\outputpenalty>-\@Miv
+ \ifdim\@colroom<1.5\baselineskip
+ \ifdim\@colroom<\textheight
+ \ifpcol@sptextstart
+ \global\vsize\@colroom
+ \else
+ \@latex@warning@no@line{Text page \thepage\space
+ contains only floats}%
+ \@emptycol
+ \fi
+ \else
+ \global\vsize\@colroom
+ \fi
+ \else
+ \global\vsize\@colroom
+ \fi
+ \else
+ \global\vsize\maxdimen
+ \fi
+ \pcol@Logend\pcol@output}
+
+%% Completing Column-Page
+
+\def\pcol@@makecol#1{\@makecol
+ \setbox\@outputbox\vbox to\@colht{\boxmaxdepth#1\unvbox\@outputbox}}
+\def\pcol@makecol{\let\pcol@textbottom\@textbottom
+ \ifdim\pcol@textfloatsep=\maxdimen\else
+ \def\@textbottom{\vskip\z@\@plus.0001fil\@minus.0001fil}\fi
+ \ifpcol@sptext \ifnum\pcol@currcol=\z@
+ \pcol@getcurrpinfo\@tempcnta\@tempdima\@tempskipa
+ \setbox\@tempboxa\vbox{\unvcopy\@cclv}%
+ \@tempdimb\ht\@tempboxa \advance\@tempdimb\dp\@tempboxa
+ \ifdim\@tempdimb>\z@
+ \@tempdimb\ht\@cclv \advance\@tempdimb\dp\@cclv
+ \dimen@\ht\pcol@prespan \pcol@addflhd\@toplist\pcol@textfloatsep
+ \@cons\pcol@sptextlist{{\number\dimen@}{\number\@tempdimb}}%
+ \fi
+ \pcol@defcurrpage{\number\@tempcnta}\pcol@spanning\pcol@footins
+ {\pcol@sptextlist}{\pcol@mparbottom}%
+ \setbox\@cclv\vbox{\unvbox\pcol@prespan \pcol@shiftspanning\@cclv
+ \unvbox\@cclv}%
+ \fi\fi
+ \def\pcol@currfoot{\voidb@x}%
+ \ifpcol@scfnote \ifvoid\footins\else
+ \pcol@shrinkcolbyfn\@colht\footins\relax
+ \setbox\@cclv\vbox{\pcol@unvbox@cclv\footins}%
+ \ifnum\pcol@page=\pcol@toppage
+ \pcol@Log\pcol@makecol{save}\footins
+ \pcol@Fb
+ \pcol@savefootins\pcol@currfoot
+ \pcol@Fe{makecol(pagefn)}%
+ \else
+ \pcol@Log\pcol@makecol{discard}\footins
+ \setbox\@tempboxa\box\footins
+ \fi
+ \fi\fi
+ \pcol@Logstart\pcol@makecol
+ \ifvoid\footins\else \pcol@Log\@makecol{put}\footins \fi
+ \@makecol
+ \pcol@Logend\pcol@makecol
+ \let\@textbottom\pcol@textbottom}
+\def\pcol@combinefloats{%
+ \global\maxdepth\@maxdepth
+ \ifx\@toplist\@empty\else
+ \ifdim\pcol@textfloatsep=\maxdimen \@cflt \else \pcol@cflt \fi
+ \fi
+ \ifx\@botlist\@empty\else
+ \ifdim\pcol@textfloatsep=\maxdimen \@cflb
+ \else
+ \setbox\@outputbox\vbox{\unvbox\@outputbox
+ \vskip\z@\@plus.0001fil\@minus.0001fil}%
+ \@cflb
+ \setbox\@outputbox\vbox{\unvbox\@outputbox
+ \vskip\z@\@plus-.0001fil\@minus-.0001fil}%
+ \fi
+ \ifpcol@lastpage
+ \setbox\@outputbox\vbox{\box\@outputbox \vskip\textfloatsep}%
+ \fi
+ \fi}
+\def\pcol@cflt{%
+ \let\@elt\@comflelt
+ \setbox\@tempboxa\vbox{}%
+ \@toplist
+ \setbox\@outputbox\vbox{%
+ \boxmaxdepth\@maxdepth
+ \box\@tempboxa
+ \vskip-\floatsep
+ \ifdim\pcol@textfloatsep>5000\p@
+ \advance\pcol@textfloatsep-\@M\p@
+ \else
+ \topfigrule
+ \fi
+ \vskip\pcol@textfloatsep
+ \unvbox\@outputbox}%
+ \let\@elt\relax
+ \pcol@Fb
+ \xdef\@freelist{\@freelist\@toplist}%
+ \pcol@Fe{cflt}%
+ \global\let\@toplist\@empty}
+
+\def\pcol@opcol{%
+ \pcol@Fb
+ \@next\@currbox\@freelist{\global\setbox\@currbox\vbox to\@colht{%
+ \boxmaxdepth\@maxdepth
+ \pcol@clearcst@unvbox\@outputbox}}\pcol@ovf
+ \pcol@Fe{opcol}%
+ \expandafter\@cons\csname pcol@shipped\number\pcol@currcol\endcsname\@currbox
+ \ifnum\pcol@currcol=\z@ \pcol@setpageno \fi
+ \pcol@nextpage
+ \pcol@checkshipped
+ \if@tempswa \pcol@outputcolumns\z@ \fi
+ \ifnum\pcol@page>\pcol@toppage \pcol@startpage
+ \else \pcol@getcurrpage
+ \fi
+ \pcol@floatplacement}
+
+\def\pcol@setpageno{\begingroup
+ \@tempcnta\pcol@page \advance\@tempcnta-\pcol@basepage
+ \let\@elt\relax \edef\reserved@a{\pcol@pages\pcol@currpage}%
+ \global\let\pcol@pages\@empty \global\let\pcol@currpage\@empty
+ \let\@elt\pcol@setpnoelt \reserved@a
+ \endgroup}
+\def\pcol@setpnoelt#1#2#3#4#5{%
+ {\let\@elt\relax \xdef\pcol@pages{\pcol@pages\pcol@currpage}}%
+ \ifnum\@tempcnta>\z@ \gdef\pcol@currpage{\@elt{#1}#2#3{#4}{#5}}%
+ \else \pcol@defcurrpage{\number\c@page}{#2}{#3}{#4}{#5}%
+ \advance\c@page\@ne
+ \ifpcol@paired\else \advance\c@page\@ne \fi
+ \fi
+ \advance\@tempcnta\m@ne}
+\def\pcol@defcurrpage#1#2#3#4#5{{%
+ \let\@elt\relax \xdef\pcol@currpage{\@elt{#1}#2#3{#4}{#5}}}}
+
+\def\pcol@nextpage{\begingroup
+ \@tempcnta\pcol@page \advance\@tempcnta-\pcol@basepage
+ \@tempswatrue
+ \let\@elt\pcol@nextpelt \pcol@pages
+ \global\advance\pcol@page\@ne
+ \endgroup}
+\def\pcol@nextpelt#1#2#3#4#5{%
+ \ifnum\@tempcnta<\z@
+ \ifvoid#2\@tempswafalse
+ \else\ifdim\dimen#2<\z@
+ \if@tempswa \global\advance\pcol@page\@ne \fi
+ \else \@tempswafalse
+ \fi\fi
+ \fi
+ \advance\@tempcnta\m@ne}
+
+\def\pcol@checkshipped{\@tempswatrue
+ \@tempcnta\z@ \@whilenum\@tempcnta<\pcol@ncol\do{%
+ \expandafter\ifx\csname pcol@shipped\number\@tempcnta\endcsname\@empty
+ \@tempswafalse \fi
+ \advance\@tempcnta\@ne}}
+
+\def\pcol@getcurrpage{\begingroup
+ \@tempcnta\pcol@page \advance\@tempcnta-\pcol@basepage
+ \let\@elt\pcol@getpelt \pcol@pages\pcol@currpage
+ \endgroup}
+\def\pcol@getpelt#1#2#3#4#5{%
+ \ifnum\@tempcnta=\z@
+ \pcol@getpinfo{#1}#2#3{#4}{#5}%
+ {\global\c@page}{\global\@colht}{\global\topskip}%
+ \fi
+ \advance\@tempcnta\m@ne}
+\def\pcol@getpinfo#1#2#3#4#5#6#7#8{\pcol@nospantrue
+ \gdef\pcol@spanning{#2}\gdef\pcol@footins{#3}\gdef\pcol@sptextlist{#4}%
+ \gdef\pcol@mparbottom{#5}%
+ #6#1\relax
+ \ifvoid#2\relax #7\textheight #8\pcol@topskip
+ \else #7\dimen#2\relax #8\skip#2\relax \pcol@nospanfalse
+ \fi}
+\def\pcol@getcurrpinfo{%
+ \edef\reserved@a{\expandafter\@cdr\pcol@currpage\@nil}%
+ \expandafter\pcol@getpinfo\reserved@a}
+
+\def\pcol@floatplacement{%
+ \global\@textfloatsheight\z@ \global\pcol@textfloatsep\maxdimen
+ \@floatplacement}
+
+%% Starting New Page
+
+\def\pcol@startpage{%
+ \global\let\pcol@firstprevdepth\relax
+ \global\pcol@toppage\pcol@page
+ \ifx\pcol@currpage\@empty\else
+ \pcol@getcurrpinfo{\global\c@page}\@tempdima\@tempskipa
+ \@cons\pcol@pages
+ {{\number\c@page}\pcol@spanning\pcol@currfoot
+ {\pcol@sptextlist}{\pcol@mparbottom}}%
+ \stepcounter{page}\ifpcol@paired\else \stepcounter{page}\fi
+ \fi
+ \global\@colht\textheight
+ \global\topskip\pcol@topskip
+ \@dblfloatplacement \let\f@depth\z@
+ \@tryfcolumn\@dbldeferlist
+ \@whilesw\if@fcolmade\fi{%
+ \pcol@Fb
+ \@next\@currbox\@freelist{%
+ \global\setbox\@currbox\box\@outputbox}\pcol@ovf
+ \pcol@Fe{startpage(fcol)}%
+ \global\dimen\@currbox-\maxdimen
+ \global\skip\@currbox\pcol@topskip
+ \@cons\pcol@pages{{\number\c@page}\@currbox\voidb@x{}{}}%
+ \stepcounter{page}\ifpcol@paired\else \stepcounter{page}\fi
+ \global\advance\pcol@page\@ne \global\pcol@toppage\pcol@page
+ \@tryfcolumn\@dbldeferlist}%
+ \begingroup
+ \let\reserved@b\@dbldeferlist \let\reserved@c\@deferlist
+ \global\let\@dbldeferlist\@empty \global\let\@deferlist\@empty
+ \let\@elt\@sdblcolelt
+ \reserved@b
+ \let\@elt\relax \xdef\@dbldeferlist{\@dbldeferlist\@deferlist}%
+ \global\let\@deferlist\reserved@c
+ \endgroup
+ \ifx\@dbltoplist\@empty
+ \pcol@defcurrpage{\number\c@page}\voidb@x\voidb@x{}{}%
+ \else
+ \setbox\@tempboxa\vbox{}%
+ \begingroup
+ \let\@elt\@comdblflelt
+ \@dbltoplist
+ \let\@elt\relax
+ \pcol@Fb
+ \xdef\@freelist{\@freelist\@dbltoplist}%
+ \pcol@Fe{startpage(dbltop)}%
+ \global\let\@dbltoplist\@empty
+ \pcol@Fb
+ \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{%
+ \unvbox\@tempboxa \vskip-\dblfloatsep \dblfigrule
+ \vskip\dbltextfloatsep}}\pcol@ovf
+ \pcol@Fe{startpage(spanning)}%
+ \global\dimen\@currbox\@colht
+ \global\skip\@currbox\pcol@topskip
+ \pcol@defcurrpage{\number\c@page}\@currbox\voidb@x{}{}%
+ \endgroup
+ \fi
+ \gdef\pcol@footins{\voidb@x}}
+
+%% Shipping Page Out
+
+\def\pcol@outputcolumns#1{\begingroup
+ \def\@elt{\pcol@outputelt#1}\@tempswatrue \pcol@outputflttrue
+ \let\reserved@b\pcol@pages \gdef\pcol@pages{}%
+ \reserved@b
+ \endgroup}
+\def\pcol@outputelt#1#2#3#4#5#6{%
+ \setbox\@outputbox\box\voidb@x
+ \pcol@getpinfo{#2}#3#4{#5}{#6}\c@page\@tempdima\@tempskipa
+ \ifdim\@tempdima<\z@
+ \ifpcol@outputflt
+ \def\pcol@bg@floatheight{\pcol@bg@textheight}%
+ \setbox\@outputbox\vbox to\textheight{%
+ \pcol@bg@paintbox{Ff}\unvbox\pcol@spanning}%
+ \pcol@Fb
+ \@cons\@freelist\pcol@spanning
+ \pcol@Fe{outputelt(spanning)}%
+ \ifnum\pcol@ncolleft<\pcol@ncol
+ \setbox\pcol@rightpage\vbox to\textheight{%
+ \ifpcol@paired\else \advance\c@page\@ne \fi
+ \pcol@bg@paintbox{Ff}\vfil}%
+ \fi
+ \else
+ \@cons\pcol@pages{{#2}#3#4{#5}{#6}}%
+ \fi
+ \else\if@tempswa
+ \ifnum#1=\z@ \@tempswafalse \fi
+ \ifnum\pcol@ncolleft<\pcol@ncol
+ \pcol@Logstart{\pcol@outputelt{right}}%
+ \pcol@ioutputelt\pcol@ncolleft\pcol@ncol\pcol@rightpage
+ \pcol@Logend{\pcol@outputelt{right}}%
+ \fi
+ \pcol@Logstart{\pcol@outputelt{left}}%
+ \pcol@ioutputelt\z@\pcol@ncolleft\@outputbox
+ \pcol@Logend{\pcol@outputelt{left}}%
+ \global\pcol@firstpagefalse
+ \else
+ \pcol@outputfltfalse
+ \@cons\pcol@pages{{#2}#3#4{#5}{#6}}%
+ \fi\fi
+ \ifvoid\@outputbox\else
+ \global\advance\pcol@basepage\@ne \@outputpage
+ \fi}
+
+\def\pcol@ioutputelt#1#2#3{\setbox#3\vbox to\textheight{%
+ \ifpcol@paired\else\ifnum#1=\z@\else \advance\c@page\@ne \fi\fi
+ \ifvoid\pcol@footins\else
+ \def\pcol@bg@footnoteheight{\@elt{\ht\pcol@footins}\@elt{\dp\pcol@footins}}%
+ \pcol@bg@paintbox{Nn}%
+ \pcol@shrinkcolbyfn\@tempdima\pcol@footins\relax
+ \fi
+ \ifpcol@nospan\else
+ \def\pcol@bg@floatheight{%
+ \@elt{\ht\pcol@spanning}\@elt{\dp\pcol@spanning}}%
+ \@tempdimb\ht\pcol@spanning \advance\@tempdimb\dp\pcol@spanning
+ \ifnum#1=\z@
+ \ifpcol@firstpage\else \pcol@bg@paintbox{Ff}\fi
+ \pcol@Fb
+ \@cons\@freelist\pcol@spanning \unvbox\pcol@spanning
+ \pcol@Fe{ioutputelt(spanning)}%
+ \else\ifpcol@firstpage
+ \ht\pcol@rightpage\ht\pcol@spanning
+ \dp\pcol@rightpage\dp\pcol@spanning
+ \box\pcol@rightpage \nointerlineskip
+ \else
+ \pcol@bg@paintbox{Ff}\pcol@phantom\pcol@spanning \nointerlineskip
+ \fi\fi
+ \advance\topmargin\@tempdimb
+ \fi
+ \pcol@buildcolseprule\@tempdima#1#2\@maxdepth \unvbox\@tempboxa
+ \hb@xt@\textwidth{%
+ \let\pcol@@hfil\relax
+ \@tempcnta#1\relax \@whilenum\@tempcnta<#2\do{%
+ \pcol@swapcolumn\@tempcnta\@tempcntb#1#2\relax
+ \expandafter\@next\expandafter\@currbox
+ \csname pcol@shipped\number\@tempcntb\endcsname
+ \relax{\let\@currbox\voidb@x}%
+ \ifvoid\@currbox\else
+ \pcol@Fb
+ \@cons\@freelist\@currbox
+ \pcol@Fe{ioutputelt(page)}%
+ \fi
+ \expandafter\@tempdima
+ \csname pcol@columnwidth\number\@tempcntb \endcsname
+ \pcol@@hfil \hb@xt@\@tempdima{\box\@currbox\hss}%
+ \edef\pcol@@hfil{\noexpand\pcol@hfil{\pcol@colsepid}}%
+ \advance\@tempcnta\@ne}}%
+ \ifvoid\pcol@footins\else
+ \ifnum#1=\z@
+ \pcol@Log\pcol@outputelt{output}\pcol@footins
+ \pcol@putfootins\pcol@footins
+ \pcol@Fb
+ \@cons\@freelist\pcol@footins
+ \pcol@Fe{ioutputelt(footins)}%
+ \else
+ \vskip\skip\pcol@footins \nointerlineskip
+ \pcol@phantom\pcol@footins \vskip\z@
+ \fi
+ \fi
+ \boxmaxdepth\@maxdepth}}
+\def\pcol@phantom#1{{%
+ \setbox\@tempboxa\vbox{}\ht\@tempboxa\ht#1\dp\@tempboxa\dp#1\box\@tempboxa}}
+
+\def\pcol@buildcolseprule#1#2#3#4{%
+ \@tempdima#1\relax \dimen@#4\relax
+ \let\pcol@bg@from#2\relax \let\pcol@bg@to#3\relax
+ \setbox\pcol@tempboxa\vbox{}\setbox\@tempboxa\vbox{}%
+ \let\@elt\pcol@buildcselt@S \pcol@sptextlist
+ \@tempdimb\z@ \let\@elt\pcol@buildcselt \pcol@sptextlist
+ \let\@elt\relax \advance\@tempdima-\@tempdimb
+ \ifdim\@tempdima>\z@
+ \setbox\pcol@tempboxa\vbox{\unvbox\pcol@tempboxa
+ \hrule\@height\@tempdima\@width\columnseprule}%
+ \setbox\@tempboxa\vbox{\unvbox\@tempboxa
+ \let\@elt\relax
+ \edef\pcol@bg@columntop{\number\@tempdimb sp}%
+ \edef\pcol@bg@columnheight{%
+ \@elt{\number\@tempdima sp}\@elt{\number\dimen@ sp}}%
+ \pcol@bg@paintcolumns}%
+ \fi}
+\def\pcol@buildcselt@S#1#2{%
+ \setbox\@tempboxa\vbox{\unvbox\@tempboxa
+ \let\@elt\relax
+ \def\pcol@bg@spanningtop{\@elt{#1sp}}%
+ \advance\@tempdima-#1sp\relax \advance\@tempdima-#2sp\relax
+ \advance\dimen@\@tempdima
+ \edef\pcol@bg@spanningheight{\@elt{#2sp}%
+ \ifdim\@tempdima>\z@\else \@elt{\number\dimen@ sp}\fi}%
+ \pcol@bg@paintbox{S}}}
+\def\pcol@buildcselt#1#2{%
+ \@tempdimc#1sp \advance\@tempdimc-\@tempdimb
+ \setbox\pcol@tempboxa\vbox{\unvbox\pcol@tempboxa
+ \ifdim\@tempdimc>\z@ \hrule\@height\@tempdimc\@width\columnseprule \fi
+ \vskip#2sp}%
+ \setbox\@tempboxa\vbox{\unvbox\@tempboxa
+ \let\@elt\relax
+ \edef\pcol@bg@columntop{\number\@tempdimb sp}%
+ \edef\pcol@bg@columnheight{\@elt{\number\@tempdimc sp}}%
+ \ifdim\@tempdimc>\z@ \pcol@bg@paintcolumns \fi
+ \def\pcol@bg@spanningtop{\@elt{#1sp}}%
+ \advance\@tempdima-#1sp\relax \advance\@tempdima-#2sp\relax
+ \advance\dimen@\@tempdima
+ \edef\pcol@bg@spanningheight{\@elt{#2sp}%
+ \ifdim\@tempdima>\z@\else \@elt{\number\dimen@ sp}\fi}%
+ \pcol@bg@paintbox{s}}%
+ \@tempdimb#1sp \advance\@tempdimb#2sp\relax}
+
+\def\pcol@hfil#1{{%
+ \@tempdima\csname pcol@columnsep#1\endcsname\relax
+ \ifdim\columnseprule>\z@
+ \hskip.5\@tempdima\@plus1fil\relax
+ \hskip-.5\columnseprule
+ \@ifundefined{pcol@colseprulecolor#1}%
+ {\pcol@colseprulecolor}{\@nameuse{pcol@colseprulecolor#1}}%
+ \copy\pcol@tempboxa \hskip-.5\columnseprule
+ \hskip.5\@tempdima\@plus1fil\relax
+ \else \hskip\@tempdima\@plus1fil\relax
+ \fi}}
+
+\let\pcol@@outputpage\@outputpage
+\def\@outputpage{\begingroup
+ \@tempdima\topmargin \advance\@tempdima\headheight \advance\@tempdima\headsep
+ \ifpcol@output
+ \setbox\pcol@tempboxa\vtop{\vskip\@tempdima \global\pcol@bg@paintedfalse
+ \let\pcol@bg@from\z@ \let\pcol@bg@to\pcol@ncolleft
+ \pcol@bg@paintpage}%
+ \ifpcol@bg@painted \@tempswatrue \else \@tempswafalse \fi
+ \setbox\@tempboxa\vtop{\vskip\@tempdima \global\pcol@bg@paintedfalse
+ \ifpcol@paired\else \advance\c@page\@ne \fi
+ \let\pcol@bg@from\pcol@ncolleft \let\pcol@bg@to\pcol@ncol
+ \pcol@bg@paintpage}%
+ \else
+ \def\reserved@a{\vskip\@tempdima \global\pcol@bg@paintedfalse
+ \ifpcol@havelastpage \ifx\set@color\relax\else
+ \pcol@bg@@paintpage \pcol@bg@@paintbox{Pp}%
+ \fi\fi}%
+ \setbox\pcol@tempboxa\vbox{%
+ \let\pcol@bg@preposttop\pcol@bg@preposttop@left
+ \let\pcol@bg@from\z@ \let\pcol@bg@to\pcol@ncolleft \reserved@a}%
+ \ifpcol@bg@painted \@tempswatrue \else \@tempswafalse \fi
+ \setbox\@tempboxa\vbox{\ifpcol@paired\else \advance\c@page\@ne \fi
+ \let\pcol@bg@preposttop\pcol@bg@preposttop@right
+ \let\pcol@bg@from\pcol@ncolleft \let\pcol@bg@to\pcol@ncol
+ \reserved@a}%
+ \ifvoid\pcol@rightpage\else
+ \pcol@Logstart{\@outputpage{rightset}}%
+ \setbox\pcol@rightpage\vbox to\textheight{\unvbox\pcol@rightpage \vfil}%
+ \pcol@Logend{\@outputpage{rightset}}%
+ \fi
+ \fi
+ \ht\pcol@tempboxa\z@ \dp\pcol@tempboxa\z@
+ \ht\@tempboxa\z@ \dp\@tempboxa\z@
+ \ifodd\c@page \pcol@swapcolumnfalse \fi
+ \ifnum\pcol@ncolleft<\pcol@ncol\else \pcol@swapcolumnfalse \fi
+ \ifpcol@output\else \ifpcol@havelastpage\else \pcol@swapcolumnfalse \fi\fi
+ \@tempcnta\c@page
+ \ifpcol@paired\else \advance\@tempcnta\@ne \pcol@swapcolumnfalse \fi
+ \ifpcol@swapcolumn \pcol@outputpage@r\c@page \pcol@outputpage@l\@tempcnta
+ \else \pcol@outputpage@l\c@page \pcol@outputpage@r\@tempcnta
+ \fi
+ \global\pcol@havelastpagefalse \gdef\pcol@bg@preposttop@left{0pt}%
+ \global\let\pcol@bg@preposttop@right\pcol@bg@preposttop@left
+ \global\let\pcol@mparbottom@out\pcol@mparbottom@zero
+ \endgroup}
+
+\def\pcol@outputpage@l#1{%
+ \pcol@Logstart{\@outputpage{left}}%
+ \global\c@page#1\relax
+ \let\@themargin\oddsidemargin
+ \if@twoside\ifodd\c@page\else \let\@themargin\evensidemargin \fi\fi
+ \if@tempswa \everyvbox{\pcol@outputpage@ev\pcol@tempboxa}\fi
+ \pcol@@outputpage
+ \pcol@Logend{\@outputpage{left}}}
+\def\pcol@outputpage@r#1{%
+ \begingroup
+ \ifvoid\pcol@rightpage\else
+ \global\c@page#1\relax
+ \let\@outputbox\pcol@rightpage
+ \pcol@Logstart{\@outputpage{right}}%
+ \let\@themargin\oddsidemargin
+ \if@twoside\ifodd\c@page\else \let\@themargin\evensidemargin \fi\fi
+ \ifpcol@bg@painted \everyvbox{\pcol@outputpage@ev\@tempboxa}\fi
+ \pcol@@outputpage
+ \pcol@Logend{\@outputpage{right}}%
+ \fi
+ \endgroup}
+\def\pcol@outputpage@ev#1{%
+ \edef\reserved@a{\meaning\yoko}\edef\reserved@b{\string\yoko}%
+ \ifx\reserved@a\reserved@b \yoko\fi
+ \moveright\@themargin\box#1\nointerlineskip \everyvbox{}%
+ \ifx\reserved@a\reserved@b \let\yoko\relax \fi}
+
+%% Starting New Column Page
+
+\def\pcol@startcolumn#1{%
+ \@tempdima\@colht \@tempdimb\z@
+ \ifvoid\pcol@footins\else
+ \pcol@shrinkcolbyfn\@colht\pcol@footins\@tempdimb
+ \fi
+ \global\@colroom\@colht
+ \@tryfcolumn\@deferlist
+ \if@fcolmade\else
+ \pcol@trynextcolumn
+ \ifpcol@scfnote \ifnum#1>\z@
+ \ifvoid\pcol@footins\else
+ \edef\pcol@currfoot{\pcol@footins}%
+ \pcol@getcurrfoot\copy
+ \pcol@Log\pcol@startcolumn{insert}\footins
+ \insert\footins{\unvbox\footins}%
+ \ifnum\pcol@page=\pcol@toppage
+ \pcol@Fb
+ \@cons\@freelist\pcol@footins
+ \pcol@Fe{startcolumn(pagefn)}%
+ \fi
+ \fi
+ \ifnum\pcol@page=\pcol@toppage
+ \pcol@deferredfootins\pcol@startcolumn \fi
+ \fi\fi
+ \fi
+ \advance\@tempdima-\@colht
+ \global\advance\@colroom\@tempdima
+ \global\advance\@colht\@tempdima
+ \pcol@savecolorstack}
+\def\pcol@trynextcolumn{\begingroup
+ \let\reserved@b\@deferlist
+ \global\let\@deferlist\@empty
+ \let\@elt\@scolelt
+ \reserved@b
+ \endgroup}
+
+%% Background Painting
+
+\let\pcol@bg@to\pcol@ncol
+\def\pcol@bg@@paintpage{%
+ \pcol@bg@paint@i{%
+ \pcol@bg@paint@ii{TBLR}{G}{C}\pcol@bg@paint@ii{tblr}{}{}}}
+\def\pcol@bg@@paintcolumns{\pcol@bg@paint@i{\pcol@bg@paint@ii{}{g}{c}}}
+\def\pcol@bg@@paintbox#1{\pcol@bg@paint@i{\pcol@bg@paint@ii{#1}{}{}}}
+
+\def\pcol@bg@paint@i#1{%
+ \setbox\@tempboxa\vtop{\vskip\z@
+ \global\pcol@bg@paintedfalse
+ \let\pcol@bg@leftmargin\pcol@lrmargin
+ \pagerim-\pagerim \advance\pcol@bg@to\m@ne
+ \offinterlineskip #1}%
+ \ht\@tempboxa\z@ \dp\@tempboxa\z@ \wd\@tempboxa\z@
+ \ifpcol@bg@painted \nointerlineskip \box\@tempboxa \nointerlineskip \fi}
+\def\pcol@bg@paint@ii#1#2#3{%
+ \pcol@bg@swappage\ifpcol@bg@swap\fi
+ \@tfor\reserved@b:=#1\do{\pcol@bg@paintregion\reserved@b\m@ne}%
+ \pcol@bg@swappage\ifpcol@swapcolumn\fi
+ \@tfor\reserved@b:=#2#3\do{%
+ \pcol@currcol\pcol@bg@from \@whilenum\pcol@currcol<\pcol@bg@to\do{%
+ \pcol@bg@paintregion\reserved@b\pcol@currcol
+ \advance\pcol@currcol\@ne}}%
+ \@tfor\reserved@b:=#3\do{\pcol@bg@paintregion\reserved@b\pcol@currcol}}
+\def\pcol@bg@swappage#1#2{%
+ \pcol@bg@leftmargin\oddsidemargin \pcol@bg@@swapfalse
+ \ifodd\c@page\else
+ \if@twoside \pcol@bg@leftmargin\evensidemargin \fi
+ #1% \ifpcol@{bg@swap,swapcolumn}
+ \pcol@bg@@swaptrue
+ \advance\pcol@bg@leftmargin\textwidth \advance\pcol@bg@leftmargin2in
+ \advance\pcol@bg@leftmargin-\paperwidth
+ \pcol@bg@leftmargin-\pcol@bg@leftmargin
+ #2% \fi
+ \fi}
+
+\def\pcol@bg@paintregion#1#2{%
+ \@ifundefined{pcol@bg@color@#1@\number#2}%
+ {\def\reserved@a{#1}}{\edef\reserved@a{#1@\number#2}}%
+ \@ifundefined{pcol@bg@color@\reserved@a}\relax
+ {\setbox\@tempboxa\vtop{\vskip\z@
+ \expandafter\expandafter\expandafter
+ \pcol@bg@paintregion@i\csname pcol@bg@@#1\endcsname}%
+ \global\pcol@bg@paintedtrue
+ \ht\@tempboxa\z@ \dp\@tempboxa\z@ \wd\@tempboxa\z@ \box\@tempboxa}}
+\def\pcol@bg@paintregion@i#1#2#3#4{%
+ \pcol@bg@calculate\@tempdima\z@{#1}%
+ \pcol@bg@calculate\@tempdimb\z@{#2}%
+ \pcol@bg@calculate\@tempdimc\@tempdima{#3}%
+ \pcol@bg@calculate\dimen@\@tempdimb{#4}%
+ \pcol@bg@addext\@tempdima{-}{l}\pcol@bg@addext\@tempdimc{}{r}%
+ \pcol@bg@addext\@tempdimb{-}{t}\pcol@bg@addext\dimen@{}{b}%
+ \vskip\@tempdimb
+ \ifpcol@bg@@swap
+ \advance\@tempdima-\@tempdimc \@tempdima-\@tempdima
+ \advance\@tempdimc-\textwidth \@tempdimc-\@tempdimc
+ \moveright\@tempdimc\hbox{%
+ \advance\dimen@-\@tempdimb
+ \edef\current@color{\@nameuse{pcol@bg@color@\reserved@a}}\pcol@set@color
+ \vrule\@width\@tempdima\@height\dimen@}%
+ \else
+ \moveright\@tempdima\hbox{%
+ \advance\@tempdimc-\@tempdima \advance\dimen@-\@tempdimb
+ \edef\current@color{\@nameuse{pcol@bg@color@\reserved@a}}\pcol@set@color
+ \vrule\@width\@tempdimc\@height\dimen@}%
+ \fi}
+
+\def\pcol@bg@calculate#1#2#3{\let\pcol@bg@dimen#1\relax
+ \let\@elt\pcol@bg@advance \pcol@bg@dimen#2\relax #3}
+\def\pcol@bg@negative#1{\let\@elt\pcol@bg@nadvance #1\relax
+ \let\@elt\pcol@bg@advance}
+\def\pcol@bg@advance#1{\advance\pcol@bg@dimen#1\relax}
+\def\pcol@bg@nadvance#1{\advance\pcol@bg@dimen-#1\relax}
+
+\def\pcol@bg@addext#1#2#3{%
+ \dimen@ii\@nameuse{pcol@bg@ext@#3@\reserved@a}\relax
+ \ifdim\dimen@ii<9000\p@\relax \advance#1#2\dimen@ii
+ \else
+ \pcol@bg@calculate#1\z@{\@nameuse{pcol@bg@ext@inf@#3}}%
+ \advance\dimen@ii-\@M\p@ \advance#1#2\dimen@ii
+ \fi}
+\def\pcol@bg@ext@inf@l{\pcol@bg@negative\pcol@bg@pageleft}
+\def\pcol@bg@ext@inf@r{\pcol@bg@negative\pcol@bg@pageleft
+ \pcol@bg@paperwidth}
+\def\pcol@bg@ext@inf@t{\pcol@bg@negative\pcol@bg@pagetop}
+\def\pcol@bg@ext@inf@b{\pcol@bg@negative\pcol@bg@pagetop
+ \pcol@bg@paperheight}
+
+\def\pcol@bg@paperwidth{\@elt\paperwidth \@elt{2\pagerim}}
+\def\pcol@bg@paperheight{\@elt\paperheight \@elt{2\pagerim}}
+\def\pcol@bg@pageleft{\@elt{1in}\@elt\pcol@bg@leftmargin \@elt\pagerim}
+\def\pcol@bg@pagetop{\@elt{1in}\@elt\topmargin \@elt\headheight \@elt\headsep
+ \@elt\pagerim}
+\def\pcol@bg@textheight{\@elt\textheight \@elt\@maxdepth}
+\def\pcol@bg@columnleft{%
+ \@tempcnta\pcol@bg@from \@whilenum\@tempcnta<\pcol@currcol\do{%
+ \@elt{\@nameuse{pcol@columnwidth\number\@tempcnta}}%
+ \@elt{\@nameuse{pcol@columnsep\number\@tempcnta}}%
+ \advance\@tempcnta\@ne}}
+\def\pcol@bg@columnright{\pcol@bg@columnleft \pcol@bg@columnwidth}
+\def\pcol@bg@columnwidth{\@elt{\@nameuse{pcol@columnwidth\number\pcol@currcol}}}
+\def\pcol@bg@columnsep{\@elt{\@nameuse{pcol@columnsep\number\pcol@currcol}}}
+\def\pcol@bg@preposttop@left{0pt}
+\let\pcol@bg@preposttop@right\pcol@bg@preposttop@left
+
+\def\pcol@bg@@c{%
+ {\pcol@bg@columnleft}%
+ {\@elt\pcol@bg@columntop}%
+ {\pcol@bg@columnwidth}%
+ {\pcol@bg@columnheight}}
+\def\pcol@bg@@C{%
+ {\pcol@bg@columnleft}%
+ {}%
+ {\pcol@bg@columnwidth}%
+ {\pcol@bg@textheight}}
+\def\pcol@bg@@g{%
+ {\pcol@bg@columnright}%
+ {\@elt\pcol@bg@columntop}%
+ {\pcol@bg@columnsep}%
+ {\pcol@bg@columnheight}}
+\def\pcol@bg@@G{%
+ {\pcol@bg@columnright}%
+ {}%
+ {\pcol@bg@columnsep}%
+ {\pcol@bg@textheight}}
+\def\pcol@bg@@s{%
+ {}%
+ {\pcol@bg@spanningtop}%
+ {\@elt\textwidth}%
+ {\pcol@bg@spanningheight}}
+\def\pcol@bg@@t{%
+ {\pcol@bg@negative\pcol@bg@pageleft}%
+ {\pcol@bg@negative\pcol@bg@pagetop}%
+ {\pcol@bg@paperwidth}%
+ {\pcol@bg@pagetop}}
+\def\pcol@bg@@b{%
+ {\pcol@bg@negative\pcol@bg@pageleft}%
+ {\pcol@bg@textheight}%
+ {\pcol@bg@paperwidth}%
+ {\pcol@bg@paperheight
+ \pcol@bg@negative{\pcol@bg@pagetop \pcol@bg@textheight}}}
+\def\pcol@bg@@l{%
+ {\pcol@bg@negative\pcol@bg@pageleft}%
+ {}%
+ {\pcol@bg@pageleft}%
+ {\pcol@bg@textheight}}
+\def\pcol@bg@@r{%
+ {\@elt\textwidth}%
+ {}%
+ {\pcol@bg@paperwidth
+ \pcol@bg@negative{\pcol@bg@pageleft \@elt\textwidth}}%
+ {\pcol@bg@textheight}}
+\def\pcol@bg@@f{%
+ {}%
+ {}%
+ {\@elt\textwidth}%
+ {\pcol@bg@floatheight}}
+\def\pcol@bg@@n{%
+ {}%
+ {\pcol@bg@textheight
+ \pcol@bg@negative{\pcol@bg@footnoteheight \@elt{\skip\footins}}}%
+ {\@elt\textwidth}%
+ {\pcol@bg@footnoteheight \@elt{\skip\footins}}}
+\def\pcol@bg@@p{%
+ {}%
+ {\@elt\pcol@bg@preposttop}%
+ {\@elt\textwidth}%
+ {\pcol@bg@textheight \pcol@bg@negative{\@elt\pcol@bg@preposttop}}}
+\let\pcol@bg@@S\pcol@bg@@s
+\let\pcol@bg@@T\pcol@bg@@t
+\let\pcol@bg@@B\pcol@bg@@b
+\let\pcol@bg@@L\pcol@bg@@l
+\let\pcol@bg@@R\pcol@bg@@r
+\let\pcol@bg@@F\pcol@bg@@f
+\let\pcol@bg@@N\pcol@bg@@n
+\let\pcol@bg@@P\pcol@bg@@p
+
+%% Special Output Routines: Dispatcher
+
+\def\pcol@op@start{-10010}
+\def\pcol@op@switch{-10011}
+\def\pcol@op@flush{-10012}
+\def\pcol@op@clear{-10013}
+\def\pcol@op@end{-10014}
+
+\def\pcol@specialoutput{%
+ \ifnum\outputpenalty=\pcol@op@start\relax
+ \let\reserved@a\pcol@output@start
+ \else\ifnum\outputpenalty=\pcol@op@switch\relax
+ \let\reserved@a\pcol@output@switch
+ \else\ifnum\outputpenalty=\pcol@op@flush\relax
+ \let\reserved@a\pcol@output@flush
+ \else\ifnum\outputpenalty=\pcol@op@clear\relax
+ \let\reserved@a\pcol@output@clear
+ \else\ifnum\outputpenalty=\pcol@op@end\relax
+ \let\reserved@a\pcol@output@end
+ \else \let\reserved@a\@specialoutput
+ \fi\fi\fi\fi\fi
+ \ifnum\outputpenalty=-\@Miv\relax
+ \ifvoid\footins\else \pcol@Log\dummy{dummy}\footins \fi
+ \fi
+ \ifx\reserved@a\@specialoutput\else
+ \global\setbox\@holdpg\vbox{\unvbox\@holdpg \unvbox\@cclv
+ \setbox\@tempboxa\lastbox \unskip}%
+ \outputpenalty-\@M
+ \fi
+ \reserved@a}
+
+%% Special Output Routines: Building First Page
+
+\def\pcol@output@start{%
+ \global\pcol@outputtrue
+ \global\pcol@page\z@ \global\pcol@toppage\z@ \global\pcol@basepage\z@
+ \global\let\pcol@pages\@empty
+ \global\let\@dbldeferlist\@deferlist \global\let\@deferlist\@empty
+ {\def\@elt##1{\global\dp##1\z@}\@dbldeferlist}%
+ \setbox\z@\box\pcol@topfnotes
+ \@tempdima\@colroom
+ \advance\@tempdima-\ht\@holdpg \advance\@tempdima-\dp\@holdpg
+ \ifvoid\footins\else
+ \advance\@tempdima-\skip\footins
+ \advance\@tempdima-\ht\footins \advance\@tempdima-\dp\footins
+ \advance\@tempdima-\belowfootnoteskip
+ \fi
+ \ifx\@botlist\@empty\else \advance\@tempdima-\textfloatsep \fi
+ \ifdim\@tempdima<1.5\baselineskip
+ \setbox\@cclv\box\@holdpg \@makecol
+ \pcol@outputfalse \@outputpage \pcol@outputtrue
+ \global\let\pcol@currpage\@empty \pcol@startpage
+ \global\topskip\pcol@topskip \global\pcol@firstpagefalse
+ \else
+ \pcol@makenormalcol
+ \@tempdima\ht\@outputbox \advance\@tempdima\dp\@outputbox
+ \global\advance\@colht-\@tempdima
+ \def\reserved@a{%
+ \ifdim\pcol@bg@preposttop=\@tempdima\else
+ \edef\pcol@bg@textheight{\@elt{\number\@tempdima sp}}%
+ \pcol@bg@paintbox{Pp}%
+ \fi}
+ \ifnum\pcol@ncolleft<\pcol@ncol
+ \global\setbox\pcol@rightpage\vbox{%
+ \ifpcol@paired\else \advance\c@page\@ne \fi
+ \let\pcol@bg@preposttop\pcol@bg@preposttop@right
+ \reserved@a \unvbox\pcol@rightpage}%
+ \fi
+ \pcol@Fb
+ \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{%
+ \let\pcol@bg@preposttop\pcol@bg@preposttop@left
+ \reserved@a \unvbox\@outputbox}}\pcol@ovf
+ \pcol@Fe{output@start(preenv)}%
+ \global\dimen\@currbox\@colht
+ \ifdim\@tempdima=\z@ \@tempskipa\topskip \else \@tempskipa\z@ \fi
+ \global\skip\@currbox\@tempskipa \global\topskip\@tempskipa
+ \def\pcol@do@mpbout@whole##1##2##3##4{%
+ \xdef\pcol@mparbottom@out{{##1}{##2}{##3}{##4}}}%
+ \def\pcol@do@mpbout@elem\@elt##1##2{\@elt{0}{\number\@mparbottom}}%
+ \pcol@do@mpbout
+ \pcol@bias@mpbout{-\@tempdima}%
+ \pcol@defcurrpage{\number\c@page}\@currbox\voidb@x{}{\pcol@mparbottom@out}%
+ \global\pcol@firstpagetrue
+ \fi
+ \global\@colroom\@colht \pcol@floatplacement
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{%
+ \pcol@Fb
+ \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{%
+ \ifdim\topskip=\z@ \hrule\@height\z@\@width\z@ \fi}}\pcol@ovf
+ \pcol@Fe{output@start(col)}%
+ \pcol@setcurrcolnf
+ \global\count\@currbox\z@
+ \global\dimen\@currbox\@colroom
+ \expandafter\gdef\csname pcol@shipped\number\pcol@currcol\endcsname{}%
+ \pcol@ifccdefined
+ {\@next\@currbox\@freelist{\global\setbox\@currbox\vbox{%
+ \def\current@color{\pcol@ccuse{}}\let\aftergroup\@gobble
+ \pcol@set@color}}\pcol@ovf}%
+ {\def\@currbox{\voidb@x}}%
+ \pcol@ccxdef{\@currbox}%
+ \advance\pcol@currcol\@ne}%
+ \global\pcol@currcol\z@
+ \pcol@getcurrcol
+ \pcol@savecolorstack
+ \pcol@Fb
+ \@cons\@freelist\@currbox \unvbox\@currbox
+ \pcol@Fe{output@start(col)}%
+ \ifvoid\footins\else
+ \pcol@Log\pcol@output@start{insert}\footins
+ \insert\footins{\box\footins\penalty\interlinepenalty}%
+ \fi
+ \if@nobreak \nobreak \else \addpenalty\interlinepenalty \fi}
+
+\def\pcol@makenormalcol{%
+ \ifpcol@mgfnote \setbox\@tempboxa\box\footins \fi
+ \begingroup
+ \ifx\@botlist\@empty
+ \ifvoid\footins \setbox\@outputbox\box\@holdpg
+ \else \pcol@combinefootins\@holdpg\footins
+ \fi
+ \pcol@Fb
+ \let\@elt\relax \xdef\@freelist{\@freelist\@midlist}%
+ \pcol@Fe{makenormalcol}%
+ \global\let\@midlist\@empty
+ \pcol@combinefloats
+ \else
+ \pcol@lastpagetrue
+ \setbox\@cclv\box\@holdpg \let\@textbottom\relax \vbadness\@M
+ \@makecol
+ \fi
+ \global\setbox\@outputbox\vbox{\unvbox\@outputbox}%
+ \endgroup
+ \ifpcol@mgfnote \setbox\footins\box\@tempboxa \fi}
+
+%% Special Output Routines: Column-Switching
+
+\def\pcol@output@switch{%
+ \ifpcol@sptext\ifnum\pcol@currcol=\z@
+ \ifvoid\pcol@prespan \dimen@\z@ \else \dimen@\ht\pcol@prespan \fi
+ \global\advance\@colroom\dimen@
+ \pcol@addflhd\@toplist\pcol@textfloatsep
+ \pcol@getcurrpinfo\@tempcnta\@tempdima\@tempskipa
+ \@tempdimb\ht\@holdpg \advance\@tempdimb\dp\@holdpg
+ \@cons\pcol@sptextlist{{\number\dimen@}{\number\@tempdimb}}%
+ \pcol@defcurrpage{\number\@tempcnta}\pcol@spanning\pcol@footins
+ {\pcol@sptextlist}{\pcol@mparbottom}%
+ \pcol@shiftspanning\@holdpg
+ \setbox\@holdpg\vbox{\unvbox\pcol@prespan \unvbox\@holdpg}%
+ \fi\fi
+ \pcol@Fb
+ \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{
+ \pcol@clearcst@unvbox\@holdpg}}\pcol@ovf
+ \pcol@Fe{output@switch}%
+ \def\pcol@currfoot{\voidb@x}%
+ \ifvoid\footins\else
+ \ifpcol@scfnote
+ \ifnum\pcol@page=\pcol@toppage
+ \pcol@getcurrpinfo\@tempcnta\@tempdima\@tempskipa
+ \pcol@Log\pcol@output@switch{save}\footins
+ \pcol@Fb
+ \pcol@savefootins\pcol@footins
+ \pcol@Fe{output@switch(pagefn)}%
+ \pcol@defcurrpage{\number\@tempcnta}\pcol@spanning\pcol@footins
+ {\pcol@sptextlist}{\pcol@mparbottom}%
+ \else
+ \pcol@Log\pcol@output@switch{discard}\footins
+ \setbox\@tempboxa\box\footins
+ \fi
+ \else
+ \pcol@Log\pcol@output@switch{save}\footins
+ \pcol@Fb
+ \pcol@savefootins\pcol@currfoot
+ \pcol@Fe{output@switch(colfn)}%
+ \fi
+ \fi
+ \ifnum\pcol@currcol=\z@ \pcol@setpageno \fi
+ \pcol@setcurrcol
+ \global\count\@currbox\pcol@page
+ \global\dimen\@currbox\@colroom
+ \let\reserved@a\@nobreakfalse \let\reserved@b\@afterindentfalse
+ \ifpcol@sptext\ifnum\pcol@currcol=\z@
+ \if@nobreak \let\reserved@a\@nobreaktrue \fi
+ \if@afterindent \let\reserved@b\@afterindenttrue \fi
+ \@temptokena\everypar
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{%
+ \pcol@getcurrcol \reserved@a \reserved@b \everypar\@temptokena
+ \pcol@setcurrcol
+ \advance\pcol@currcol\@ne}%
+ \global\pcol@sptextfalse
+ \fi\fi
+ \@tempswafalse \ifpcol@sync \@tempswatrue \fi \ifpcol@clear \@tempswatrue \fi
+ \if@tempswa \pcol@sync \fi
+ \@tempswatrue
+ \ifpcol@clear \ifpcol@sync\else \@tempswafalse \fi\fi
+ \if@tempswa \pcol@restartcolumn \fi
+ \global\pcol@syncfalse}
+
+\def\pcol@shiftspanning#1{%
+ \ifpcol@swapcolumn\ifodd\c@page\else
+ \setbox#1\vbox{\@tempdima\textwidth \advance\@tempdima-\columnwidth
+ \moveleft\@tempdima\box#1}
+ \fi\fi}
+
+\def\pcol@restartcolumn{%
+ \global\pcol@currcol\pcol@nextcol
+ \pcol@getcurrcol
+ \global\pcol@page\count\@currbox
+ \global\@colroom\dimen\@currbox
+ \pcol@Fb
+ \@cons\@freelist\@currbox
+ \pcol@Fe{restartcolumn(col)}%
+ \pcol@getcurrpage
+ \ifpcol@scfnote
+ \edef\pcol@currfoot{\pcol@footins}%
+ \ifnum\pcol@page=\pcol@toppage
+ \@tempdima\@colht \@tempdimb\z@
+ \pcol@putbackmvl
+ \if@nobreak \nobreak \else \addpenalty\interlinepenalty \fi
+ \ifvoid\pcol@footins\else
+ \pcol@Fb
+ \pcol@getcurrfoot\box \@cons\@freelist\pcol@currfoot
+ \pcol@Fe{restartcolumn(pagefn)}%
+ \pcol@Log\pcol@restartcolumn{insert}\footins
+ \pcol@shrinkcolbyfn\@colht\footins\@tempdimb
+ \insert\footins{\unvbox\footins}%
+ \fi
+ \pcol@deferredfootins\pcol@restartcolumn
+ \@colht\@tempdima
+ \else
+ \ifvoid\pcol@footins\else
+ \pcol@getcurrfoot\copy
+ \pcol@Log\pcol@restartcolumn{insdmy}\footins
+ \insert\footins{\unvbox\footins}%
+ \fi
+ \pcol@putbackmvl
+ \if@nobreak \nobreak \else \addpenalty\interlinepenalty \fi
+ \fi
+ \else
+ \pcol@putbackmvl
+ \ifvoid\pcol@currfoot\else
+ \pcol@Fb
+ \pcol@getcurrfoot\box \@cons\@freelist\pcol@currfoot
+ \pcol@Fe{restartcolumn(colfn)}%
+ \pcol@Log\pcol@restartcolumn{insert}\footins
+ \insert\footins{\unvbox\footins}%
+ \fi
+ \if@nobreak \nobreak \else \addpenalty\interlinepenalty \fi
+ \fi}
+
+\def\pcol@getcurrcol{%
+ \expandafter\expandafter\expandafter\pcol@igetcurrcol
+ \csname pcol@col\number\pcol@currcol\endcsname
+ \expandafter\global\expandafter\columnwidth
+ \csname pcol@columnwidth\number\pcol@currcol\endcsname}
+\def\pcol@igetcurrcol#1#2#3#4#5#6#7#8#9{%
+ \def\@currbox{#1}\def\pcol@currfoot{#2}\global\pcol@prevdepth#3sp\relax
+ \gdef\@toplist{#4}\gdef\@midlist{#5}\gdef\@botlist{#6}\gdef\@deferlist{#7}%
+ \global\pcol@textfloatsep#8sp\pcol@iigetcurrcol#9}
+\def\pcol@iigetcurrcol#1#2#3#4#5#6#7#8{%
+ \global\@textfloatsheight#1sp\relax
+ \global\@topnum#2\relax \global\@toproom#3sp\relax
+ \global\@botnum#4\relax \global\@botroom#5sp\relax
+ \global\@colnum#6\relax
+ \global\@afterindentfalse \@nobreaktrue
+ \ifcase#7
+ \@nobreakfalse \or
+ \global\@afterindenttrue \else
+ \relax
+ \fi
+ \global\everypar{#8}}
+\def\pcol@getcurrfoot#1{%
+ \ifvoid\pcol@currfoot \global\setbox\footins\box\voidb@x
+ \else
+ \global\setbox\footins#1\pcol@currfoot
+ \global\count\footins\count\pcol@currfoot
+ \global\dimen\footins\dimen\pcol@currfoot
+ \global\skip\footins\skip\pcol@currfoot
+ \fi}
+\def\pcol@setcurrcol{{\let\@elt\relax
+ \@tempcnta\if@nobreak\if@afterindent\@ne\else\tw@\fi\else\z@\fi
+ \expandafter\xdef\csname pcol@col\number\pcol@currcol\endcsname{%
+ {\@currbox}{\pcol@currfoot}{\number\pcol@prevdepth}%
+ {\@toplist}{\@midlist}{\@botlist}{\@deferlist}{\number\pcol@textfloatsep}%
+ {{\number\@textfloatsheight}%
+ {\number\@topnum}{\number\@toproom}{\number\@botnum}{\number\@botroom}%
+ {\number\@colnum}{\number\@tempcnta}{\the\everypar}}}}}
+\def\pcol@setcurrcolnf{\def\pcol@currfoot{\voidb@x}\pcol@setcurrcol}
+
+\def\pcol@putbackmvl{%
+ \ifpcol@flush \pcol@sptextstartfalse \fi
+ \ifpcol@sync\else \pcol@sptextstartfalse \fi
+ \pcol@ifempty\@currbox
+ {\pcol@savecolorstack
+ \ifpcol@sptextstart \global\setbox\pcol@prespan\box\voidb@x \fi}%
+ {\global\setbox\pcol@colorstack@saved\box\voidb@x
+ \ifpcol@sptextstart
+ \global\setbox\pcol@prespan\vbox{%
+ \unvbox\@currbox \pcol@restorecolorstack}%
+ \global\advance\@colroom-\ht\pcol@prespan
+ \global\topskip\z@ \hrule\@height\z@\@width\z@
+ \else
+ \unvbox\@currbox \pcol@restorecolorstack
+ \fi}}
+
+%% Special Output Routines: Color Management
+
+\def\pcol@magicpenalty{12345}
+\def\pcol@ifempty#1#2#3{%
+ \setbox\@tempboxa\vbox{\penalty\pcol@magicpenalty
+ \unvcopy#1\xdef\@gtempa{\number\lastpenalty}}%
+ \ifnum\@gtempa=\pcol@magicpenalty\relax \def\reserved@a{#2}%
+ \else \def\reserved@a{#3}%
+ \fi
+ \reserved@a}
+
+\def\pcol@clearcst@unvbox#1{%
+ \pcol@ifempty#1\relax
+ {\pcol@restorecst\pcol@colorstack@saved \unvbox#1\pcol@clearcolorstack}}
+\def\pcol@clearcolorstack{%
+ \def\reserved@a##1{\reset@color}\def\reserved@b##1{\reset@color}%
+ \pcol@scancst\pcol@colorins}
+
+\def\pcol@restorecolorstack{\pcol@restorecst\pcol@colorins}
+\def\pcol@restorecst{%
+ \def\reserved@a##1{\unvbox##1}\def\reserved@b##1{\unvcopy##1}%
+ \pcol@scancst}
+
+\def\pcol@scancst#1{%
+ \@tempcnta#1\relax
+ \ifnum\@tempcnta=\pcol@colorins
+ \ifvoid\pcol@ccuse{@box}\else
+ \reserved@b{\pcol@ccuse{@box}}\fi
+ \fi
+ \ifvoid\@tempcnta\else
+ \setbox\@tempboxa\vbox{}\setbox\pcol@tempboxa\vbox{}\@tempcntb\z@
+ \def\reserved@b{}\let\@elt\relax \@tempswatrue \pcol@iscancst
+ \global\setbox\@tempcnta\box\@tempboxa \unvbox\pcol@tempboxa
+ \fi}
+\def\pcol@iscancst{%
+ \setbox\@tempcnta\vbox{%
+ \unvbox\@tempcnta \global\setbox\pcol@tempboxb\lastbox}%
+ \ifvoid\pcol@tempboxb \let\reserved@c\relax
+ \else
+ \let\reserved@c\pcol@iscancst
+ \ifdim\ht\pcol@tempboxb=\z@
+ \ifdim\wd\pcol@tempboxb=\z@ \advance\@tempcntb\@ne
+ \else \edef\reserved@b{\@elt{\number\wd\pcol@tempboxb}\reserved@b}%
+ \fi
+ \else\ifdim\dp\pcol@tempboxb=\z@
+ \ifdim\wd\pcol@tempboxb=\z@
+ \ifnum\@tempcntb>\z@ \advance\@tempcntb\m@ne
+ \else
+ \setbox\@tempboxa\vbox{\copy\pcol@tempboxb \unvbox\@tempboxa}%
+ \setbox\pcol@tempboxa\vbox{%
+ \reserved@a\pcol@tempboxb \unvbox\pcol@tempboxa}%
+ \fi
+ \else
+ \count@\wd\pcol@tempboxb \chardef\reserved@d\z@
+ \def\@elt##1{\ifnum##1=\count@ \chardef\reserved@d\@ne \fi}%
+ \reserved@b \let\@elt\relax
+ \ifnum\reserved@d=\z@
+ \setbox\@tempboxa\vbox{\copy\pcol@tempboxb \unvbox\@tempboxa}%
+ \setbox\pcol@tempboxa\vbox{%
+ \reserved@a\pcol@tempboxb \unvbox\pcol@tempboxa}%
+ \fi
+ \fi
+ \else\if@tempswa
+ \ifvoid\pcol@ccuse{@box}%
+ \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{}}\pcol@ovf
+ \pcol@ccxdef{\@currbox}\reset@color
+ \fi
+ \global\setbox\pcol@ccuse{@box}\vbox{\unvbox\pcol@tempboxb}%
+ \@tempswafalse
+ \fi\fi\fi
+ \fi
+ \reserved@c}
+
+\def\pcol@savecolorstack{%
+ \ifvoid\pcol@colorins \@tempswafalse \else \@tempswatrue \fi
+ \ifvoid\pcol@ccuse{@box}%
+ \setbox\@tempboxa\box\voidb@x
+ \else
+ \setbox\@tempboxa\vbox{\unvcopy\pcol@ccuse{@box}}%
+ \ht\@tempboxa1sp \dp\@tempboxa\z@ \wd\@tempboxa\z@
+ \@tempswatrue
+ \fi
+ \if@tempswa
+ \global\setbox\pcol@colorstack@saved\vbox{%
+ \ifvoid\@tempboxa\else \box\@tempboxa \fi
+ \ifvoid\pcol@colorins\else \unvcopy\pcol@colorins \fi}
+ \else \global\setbox\pcol@colorstack@saved\box\voidb@x
+ \fi}
+
+\def\pcol@ccuse#1{\@nameuse{pcol@columncolor#1\number\pcol@currcol}}
+\def\pcol@ifccdefined#1#2{%
+ \expandafter\ifx\csname pcol@columncolor\number\pcol@currcol\endcsname\relax
+ #2\else#1\fi}
+\def\pcol@ccxdef#1{%
+ \expandafter\xdef
+ \csname pcol@columncolor@box\number\pcol@currcol\endcsname{#1}}
+
+%% Special Output Routines: Footnote Handling
+
+\def\pcol@savefootins#1{%
+ \@next#1\@freelist{%
+ \global\setbox#1\box\footins
+ \global\count#1\count\footins
+ \global\dimen#1\dimen\footins
+ \global\skip#1\skip\footins}{\def#1{\voidb@x}\pcol@ovf}}
+
+\def\pcol@shrinkcolbyfn#1#2#3{%
+ \ifx#3\relax\else #3-\skip#2\relax \fi
+ \advance#1-\ht#2\advance#1-\dp#2\advance#1-\skip#2\relax}
+\def\pcol@unvbox@cclv#1{%
+ \@tempdima\dp\@cclv \unvbox\@cclv
+ \vskip \ifdim\@tempdima>\@maxdepth -\@maxdepth \else -\@tempdima \fi
+ \vskip\skip#1\@tempdima\skip#1\vskip-\@tempdima}
+
+\def\pcol@deferredfootins#1{%
+ \ifdim\@tempdimb=\z@ \@tempdimb\@colht \advance\@tempdimb-\skip\footins
+ \else \@tempdimb\@colht
+ \fi
+ \ifvoid\pcol@topfnotes\else \ifdim\@tempdimb>\z@
+ \begingroup
+ \splitmaxdepth\@maxdepth \splittopskip\z@ \vbadness\@M
+ \setbox\@tempboxa\vsplit\pcol@topfnotes to\@tempdimb
+ \ifvoid\pcol@topfnotes\else
+ \global\setbox\pcol@topfnotes\vbox{\penalty\interlinepenalty
+ \unvbox\pcol@topfnotes}%
+ \fi
+ \setbox\@tempboxa\vbox{\unvbox\@tempboxa}%
+ \ifdim\ht\@tempboxa>\z@
+ \pcol@Log#1{add}\@tempboxa
+ \insert\footins{\unvbox\@tempboxa}%
+ \fi
+ \endgroup
+ \fi\fi}
+
+\def\pcol@combinefootins#1#2{%
+ \setbox\@outputbox\vbox{%
+ \boxmaxdepth\@maxdepth
+ \unvbox#1\relax
+ \pcol@putfootins#2\unskip
+ \ifdim\belowfootnoteskip=\z@\else \vskip\belowfootnoteskip \fi}}
+\def\pcol@putfootins#1{%
+ \vskip\skip#1\relax
+ \color@begingroup
+ \normalcolor
+ \footnoterule
+ \unvbox#1\relax
+ \color@endgroup \vskip\z@}
+
+%% Special Output Routines: Marginal Notes
+
+\def\pcol@addmarginpar{%
+ \pcol@getcurrpage \@firstcolumntrue
+ \ifnum\pcol@currcol<\pcol@ncolleft
+ \let\reserved@a\z@ \let\reserved@b\pcol@ncolleft
+ \ifnum\pcol@mpthreshold@l>\pcol@currcol\else \@firstcolumnfalse \fi
+ \else
+ \let\reserved@a\pcol@ncolleft \let\reserved@b\pcol@ncol
+ \ifnum\pcol@mpthreshold@r>\pcol@currcol\else \@firstcolumnfalse \fi
+ \fi
+ \ifpcol@swapmarginpar
+ \ifodd\c@page\else
+ \if@firstcolumn \@firstcolumnfalse \else \@firstcolumntrue \fi
+ \fi
+ \ifpcol@paired\else \ifnum\pcol@currcol<\pcol@ncolleft\else
+ \if@firstcolumn \@firstcolumnfalse \else \@firstcolumntrue \fi
+ \fi\fi
+ \fi
+ \if@reversemargin
+ \if@firstcolumn \@firstcolumnfalse \else \@firstcolumntrue \fi
+ \fi
+ \pcol@swapcolumn\pcol@currcol\count@\reserved@a\reserved@b
+ \@tempdima\z@
+ \@tempcnta\reserved@a \@whilenum\@tempcnta<\count@\do{%
+ \pcol@swapcolumn\@tempcnta\@tempcntb\reserved@a\reserved@b
+ \advance\@tempdima\csname pcol@columnwidth\number\@tempcntb\endcsname\relax
+ \advance\@tempdima\csname pcol@columnsep\pcol@colsepid\endcsname\relax
+ \advance\@tempcnta\@ne}%
+ \if@firstcolumn \advance\marginparwidth\@tempdima
+ \else
+ \advance\marginparsep\textwidth \advance\marginparsep-\@tempdima
+ \advance\marginparsep-\columnwidth
+ \fi
+ \expandafter\@xnext\@currlist\@@\pcol@marbox\@gtempa
+ \if@firstcolumn\let\pcol@marbox\@currbox \fi
+ \@tempdima\@pageht \advance\@tempdima-\ht\pcol@marbox
+ \advance\@tempdima\dimen\@currbox
+ \@tempdimb\ht\pcol@marbox \advance\@tempdimb\dp\pcol@marbox
+ \advance\@tempdimb\marginparpush
+ \pcol@getmparbottom\@tempdima\@tempdimb
+ \begingroup
+ \@tempcnta\pcol@page \advance\@tempcnta-\pcol@basepage
+ \edef\reserved@a{\pcol@pages\pcol@currpage}%
+ \global\let\pcol@pages\@empty \global\let\pcol@currpage\@empty
+ \let\@elt\pcol@setmpbelt \reserved@a
+ \endgroup
+ \ifdim\dimen\@currbox=\z@\else
+ \ifdim\dimen\@currbox>\ht\pcol@marbox
+ \advance\@mparbottom-\dimen\pcol@marbox
+ \fi
+ \setbox\pcol@marbox\hbox{\lower\dimen\@currbox\box\pcol@marbox}%
+ \fi
+ \pcol@@addmarginpar}
+
+\def\pcol@getmparbottom#1#2{%
+ \global\@mparbottom\z@
+ \ifx\pcol@mparbottom\@empty
+ \begingroup
+ \@tempdimc#2\relax \advance\@tempdimc#1\relax \let\@elt\relax
+ \xdef\pcol@mpblist{\@elt{\number#1}{\number\@tempdimc}}%
+ \endgroup
+ \else
+ \expandafter\pcol@getmparbottom@i\pcol@mparbottom
+ \begingroup
+ \@tempdima#1\relax \@tempdimb#2\relax \@tempswafalse
+ \let\@elt\pcol@getmpbelt \global\let\pcol@mpblist\@empty \reserved@a
+ \if@tempswa\else
+ \ifdim\@tempdima<\@mparbottom \@tempdima\@mparbottom \fi
+ \advance\@tempdimb\@tempdima
+ \@cons\pcol@mpblist{{\number\@tempdima}{\number\@tempdimb}}%
+ \fi
+ \endgroup
+ \fi}
+\def\pcol@getmparbottom@i#1#2#3#4{%
+ \ifnum\pcol@currcol<\pcol@ncolleft
+ \if@firstcolumn \def\reserved@a{#1}\else\def\reserved@a{#2}\fi
+ \else
+ \if@firstcolumn \def\reserved@a{#3}\else\def\reserved@a{#4}\fi
+ \fi}
+\def\pcol@getmpbelt#1#2{%
+ \ifdim#1sp<\@tempdima
+ \global\@mparbottom#2sp\relax \@cons\pcol@mpblist{{#1}{#2}}%
+ \ifdim\@tempdima<#2sp\relax \@tempdima#2sp\relax \fi
+ \else
+ \@tempdimc\@tempdima \advance\@tempdimc\@tempdimb
+ \ifdim#1sp<\@tempdimc
+ \@tempdima#2sp\relax \global\@mparbottom#2sp\relax
+ \@cons\pcol@mpblist{{#1}{#2}}%
+ \else
+ \@cons\pcol@mpblist{{\number\@tempdima}{\number\@tempdimc}\@elt{#1}{#2}}%
+ \@tempswatrue
+ \def\pcol@getmpbelt##1##2{\@cons\pcol@mpblist{{##1}{##2}}}
+ \fi
+ \fi}
+
+\def\pcol@setmpbelt#1#2#3#4#5{%
+ {\let\@elt\relax \xdef\pcol@pages{\pcol@pages\pcol@currpage}}%
+ \ifnum\@tempcnta=\z@
+ \def\reserved@a{#5}%
+ \ifx\reserved@a\@empty \pcol@setmpbelt@i{}{}{}{}\else \pcol@setmpbelt@i#5\fi
+ \pcol@defcurrpage{#1}{#2}{#3}{#4}{\reserved@a}%
+ \else \gdef\pcol@currpage{\@elt{#1}#2#3{#4}{#5}}%
+ \fi
+ \advance\@tempcnta\m@ne}
+\def\pcol@setmpbelt@i#1#2#3#4{%
+ \ifnum\pcol@currcol<\pcol@ncolleft
+ \if@firstcolumn \def\reserved@a{{\pcol@mpblist}{#2}{#3}{#4}}%
+ \else \def\reserved@a{{#1}{\pcol@mpblist}{#3}{#4}}%
+ \fi
+ \else
+ \if@firstcolumn \def\reserved@a{{#1}{#2}{\pcol@mpblist}{#4}}%
+ \else \def\reserved@a{{#1}{#2}{#3}{\pcol@mpblist}}%
+ \fi
+ \fi}
+
+\gdef\pcol@mparbottom@zero{{\@elt{0}{0}}{\@elt{0}{0}}{\@elt{0}{0}}{\@elt{0}{0}}}
+\global\let\pcol@mparbottom@out\pcol@mparbottom@zero
+
+\def\pcol@do@mpbout{\expandafter\pcol@do@mpbout@i\pcol@mparbottom@out}
+\def\pcol@do@mpbout@i#1#2#3#4{\@tempcnta\@ne
+ \if@mparswitch \ifodd\c@page\else \@tempcnta\m@ne \fi\fi
+ \if@reversemargin \@tempcnta-\@tempcnta \fi
+ \ifnum\@tempcnta<\z@
+ \pcol@do@mpbout@whole{\pcol@do@mpbout@elem#1}{#2}{#3}{#4}%
+ \else
+ \pcol@do@mpbout@whole{#1}{\pcol@do@mpbout@elem#2}{#3}{#4}%
+ \fi}
+
+\def\pcol@bias@mpbout#1{\def\reserved@a{\pcol@bias@mpbout@i{#1}}%
+ \pcol@do@mpb@all\pcol@mparbottom@out}
+\def\pcol@bias@mpbout@i#1\@elt#2#3\@nil{%
+ \dimen@#2sp\relax \advance\dimen@#1\relax
+ \dimen@ii#3sp\relax \advance\dimen@ii#1\relax
+ \def\reserved@b{\@elt{\number\dimen@}{\number\dimen@ii}}}
+
+\def\pcol@getmparbottom@last#1{%
+ \ifx\pcol@mparbottom\@empty
+ \global\let\pcol@mparbottom@out\pcol@mparbottom@zero
+ \pcol@bias@mpbout{#1}%
+ \else
+ \def\reserved@a{\pcol@getmparbottom@last@i{#1}}%
+ \pcol@do@mpb@all\pcol@mparbottom
+ \fi}
+\def\pcol@getmparbottom@last@i#1#2\@nil{%
+ \edef\reserved@b{\@elt{\number#1}{\number#1}}%
+ \def\@elt##1##2{\def\reserved@b{\@elt{##1}{##2}}}%
+ #2\let\@elt\relax}
+
+\def\pcol@do@mpb@all#1{\expandafter\pcol@do@mpb@all@i#1}
+\def\pcol@do@mpb@all@i#1#2#3#4{\begingroup \let\@elt\relax
+ \gdef\pcol@mparbottom@out{}%
+ \pcol@do@mpb@all@ii#1\@nil\pcol@do@mpb@all@ii#2\@nil
+ \pcol@do@mpb@all@ii#3\@nil\pcol@do@mpb@all@ii#4\@nil
+ \endgroup}
+\def\pcol@do@mpb@all@ii#1\@nil{%
+ \reserved@a#1\@nil
+ \xdef\pcol@mparbottom@out{\pcol@mparbottom@out{\reserved@b}}}
+
+%% Special Output Routines: Synchronization
+
+\def\pcol@sync{%
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do\pcol@flushcolumn
+ \pcol@outputcolumns\@ne
+ \pcol@getcurrpinfo{\global\c@page}{\global\@colht}{\global\topskip}%
+ \@tempdima-\maxdimen \@tempdimb-\maxdimen \pcol@colht-\maxdimen
+ \@pageht-\maxdimen \@tempdimc\maxdimen \@pagedp\maxdimen \@tempcntb\z@
+ \pcol@dfloatsfalse
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do\pcol@measurecolumn
+ \@tempswatrue \global\pcol@flushfalse
+ \ifpcol@clear
+ \ifpcol@lastpage \@tempdimb\pcol@colht \else \@tempdimb\@pageht \fi
+ \ifpcol@sync \@tempswafalse \fi
+ \else
+ \ifdim\@tempdima<\z@ \@tempswafalse
+ \else\ifdim\@tempdimb<\z@ \@tempdimb\@tempdima
+ \else \advance\@tempdimb\@tempdima
+ \fi\fi
+ \fi
+ \ifpcol@scfnote\ifvoid\pcol@footins\else
+ \ifdim\@tempdimb<\z@ \@tempdimb\z@ \fi
+ \advance\@tempdimb\ht\pcol@footins \advance\@tempdimb\dp\pcol@footins
+ \advance\@tempdimb\skip\pcol@footins
+ \fi\fi
+ \dimen@\@tempdimb
+ \ifpcol@clear\else \ifdim\dimen@<\z@\else
+ \ifdim\@tempdimc=\maxdimen\else \ifdim\@tempdimc<\z@\else
+ \advance\dimen@-\@tempdimc
+ \fi\fi
+ \advance\dimen@\pcol@@ensurevspace
+ \ifdim\dimen@<\@tempdimb \dimen@\@tempdimb \fi
+ \fi\fi
+ \ifdim\dimen@>\@colht
+ \global\pcol@flushtrue \@tempswafalse \pcol@nextcol\@tempcntb
+ \fi
+ \ifdim\@tempdimb<\z@\else \if@tempswa
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do\pcol@synccolumn
+ \fi\fi}
+
+\def\pcol@flushcolumn{%
+ \pcol@getcurrcol
+ \ifnum\count\@currbox<\pcol@toppage
+ \ifpcol@lastpage \pcol@lastpagesavetrue \else \pcol@lastpagesavefalse \fi
+ \pcol@lastpagefalse
+ \pcol@page\count\@currbox
+ \setbox\@cclv\vbox{\unvbox\@currbox \vfil}%
+ \ifvoid\pcol@currfoot\else
+ \pcol@Fb
+ \@cons\@freelist\pcol@currfoot
+ \pcol@Fe{flushcolumn(colfn)}%
+ \fi
+ \pcol@getcurrfoot\box
+ \pcol@getcurrpage
+ \ifvoid\pcol@footins
+ \ifdim\ht\@cclv>\@colht
+ \setbox\@cclv\vbox{\boxmaxdepth\@maxdepth \unvbox\@cclv \unskip}%
+ \fi
+ \else
+ \pcol@shrinkcolbyfn\@colht\pcol@footins\relax
+ \setbox\@cclv\vbox{\pcol@unvbox@cclv\pcol@footins}%
+ \fi
+ \pcol@Logstart{\pcol@flushcolumn(\number\c@page:\number\pcol@currcol)}
+ \ifdim\@toproom=\maxdimen
+ \setbox\@outputbox\pcol@makefcolpage \global\@toproom\z@
+ \else
+ \pcol@@makecol\@maxdepth
+ \fi
+ \pcol@Logend\pcol@flushcolumn
+ \global\setbox\@currbox\box\@outputbox
+ \expandafter\@cons\csname pcol@shipped\number\pcol@currcol\endcsname
+ \@currbox
+ \advance\pcol@page\@ne
+ \ifx\@deferlist\@empty\else
+ \@whilenum\pcol@page<\pcol@toppage\do{%
+ \pcol@getcurrpage
+ \ifvoid\pcol@footins\else
+ \pcol@shrinkcolbyfn\@colht\pcol@footins\relax
+ \fi
+ \@makefcolumn\@deferlist
+ \if@fcolmade
+ \pcol@Fb
+ \@next\@currbox\@freelist{\global\setbox\@currbox\box\@outputbox}%
+ \pcol@ovf
+ \pcol@Fe{flushcolumn(fcol)}%
+ \expandafter\@cons
+ \csname pcol@shipped\number\pcol@currcol\endcsname\@currbox
+ \fi
+ \advance\pcol@page\@ne}%
+ \fi
+ \ifpcol@lastpagesave \pcol@lastpagetrue \fi
+ \pcol@Fb
+ \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{}}\pcol@ovf
+ \pcol@Fe{flushcolumn(col)}%
+ \pcol@getcurrpinfo\@tempcnta{\global\@colht}\@tempskipa
+ \@pageht\@colht
+ \ifvoid\pcol@footins\else \pcol@shrinkcolbyfn\@colht\pcol@footins\relax \fi
+ \global\@colroom\@colht \pcol@floatplacement
+ \ifx\@deferlist\@empty\else
+ \ifpcol@clear
+ \pcol@makefcolumn \global\@colroom\@colht
+ \else
+ \pcol@trynextcolumn
+ \fi\fi
+ \pcol@setcurrcolnf
+ \global\count\@currbox\pcol@toppage
+ \advance\@pageht-\@colht \advance\@pageht\@colroom
+ \global\dimen\@currbox\@pageht
+ \fi %\ifnum\count\@currbox<\pcol@toppage
+ \advance\pcol@currcol\@ne}
+
+\def\pcol@makefcolumn{%
+ \ifpcol@lastpage \@tempdimc\floatsep \else \@tempdimc\@fpsep \fi
+ \@tempdima\@colht \advance\@tempdima\@tempdimc \global\@colroom-\@tempdimc
+ \begingroup
+ \let\@elt\pcol@makefcolelt
+ \let\reserved@b\@deferlist
+ \global\let\@deferlist\@empty
+ \reserved@b
+ \endgroup
+ \ifx\@toplist\@empty\else
+ \@tempswatrue
+ \ifpcol@lastpage \ifx\@deferlist\@empty \ifdim\@colroom<\@fpmin
+ \@tempswafalse \global\@toproom\maxdimen
+ \fi\fi\fi
+ \if@tempswa \global\setbox\@currbox\vbox{\pcol@makefcolpage}\fi
+ \fi}
+\def\pcol@makefcolelt#1{%
+ \@tempdimb\ht#1{}\advance\@tempdimb\dp#1{}\advance\@tempdimb\@tempdimc
+ \ifdim\@tempdimb>\@tempdima \@cons\@deferlist#1\relax
+ \@tempdima-\maxdimen
+ \else \@cons\@toplist#1\relax
+ \advance\@tempdima-\@tempdimb \global\advance\@colroom\@tempdimb
+ \fi}
+\def\pcol@makefcolpage{\vbox to\@colht{%
+ \vskip\@fptop \vskip-\@fpsep
+ \def\@elt##1{\vskip\@fpsep\box##1}\@toplist \vskip\@fpbot}%
+ \pcol@Fb
+ \xdef\@freelist{\@freelist\@toplist}\global\let\@toplist\@empty
+ \pcol@Fe{makefcolpage}%
+}
+
+\def\pcol@measurecolumn{%
+ \pcol@getcurrcol
+ \@tempswafalse
+ \dimen@\z@ \pcol@addflhd\@toplist\pcol@textfloatsep
+ \global\skip\@currbox\dimen@
+ \advance\dimen@\ht\@currbox \advance\dimen@\dp\@currbox \dimen@ii\dimen@
+ \pcol@ifempty\@currbox
+ {\global\pcol@prevdepth\maxdimen \pcol@setcurrcol}%
+ {\@tempswatrue}%
+ \pcol@measureupdate\@tempdima\dimen@ii\@tempdimc\pcol@prevdepth
+ \ifvoid\pcol@currfoot \dimen@\z@
+ \else
+ \dimen@\ht\pcol@currfoot \advance\dimen@\dp\pcol@currfoot
+ \advance\dimen@\skip\pcol@currfoot
+ \@tempswatrue
+ \fi
+ \pcol@addflhd\@botlist\maxdimen
+ \ifdim\dimen@>\@tempdimb \@tempdimb\dimen@ \fi
+ \advance\dimen@\dimen@ii
+ \if@tempswa \ifdim\dimen@>\@pageht
+ \@pageht\dimen@ \@tempcntb\pcol@currcol
+ \fi\fi
+ \dimen@ii\pcol@prevdepth
+ \ifpcol@bfbottom
+ \ifvoid\pcol@currfoot\else \dimen@ii\dp\pcol@currfoot \fi
+ \ifx\@botlist\@empty\else \dimen@ii\z@ \advance\dimen@\textfloatsep \fi
+ \else
+ \ifx\@botlist\@empty\else \dimen@ii\z@ \advance\dimen@\textfloatsep \fi
+ \ifvoid\pcol@currfoot\else \dimen@ii\dp\pcol@currfoot \fi
+ \fi
+ \pcol@measureupdate\pcol@colht\dimen@\@pagedp\dimen@ii
+ \ifx\@deferlist\@empty\else \pcol@dfloatstrue \fi
+ \advance\pcol@currcol\@ne}
+\def\pcol@addflhd#1#2{%
+ \ifx#1\@empty\else
+ \@tempswatrue
+ \let\@elt\pcol@hdflelt
+ #1\advance\dimen@-\floatsep
+ \ifdim#2=\maxdimen \advance\dimen@\textfloatsep
+ \else
+ \advance\dimen@\pcol@textfloatsep
+ \ifdim\pcol@textfloatsep>5000\p@ \advance\dimen@-\@M\p@ \fi
+ \fi
+ \let\@elt\relax
+ \fi}
+\def\pcol@hdflelt#1{\advance\dimen@\ht#1\advance\dimen@\dp#1%
+ \advance\dimen@\floatsep}
+\def\pcol@measureupdate#1#2#3#4{\if@tempswa
+ \ifdim#1<#2\relax#1#2\relax#3#4\relax
+ \else\ifdim#1=#2\ifdim#3>#4\relax#3#4\fi\fi\fi\fi}
+
+\def\pcol@synccolumn{%
+ \pcol@getcurrcol
+ \ifpcol@clear
+ \global\pcol@prevdepth\@m\p@
+ \global\setbox\@currbox\vbox{\unvbox\@currbox
+ \ifdim\pcol@textfloatsep=\maxdimen \vfil
+ \else \vskip\z@\@plus1fil\@minus.0001fil
+ \fi}%
+ \else
+ \@tempdimb\@tempdima
+ \advance\@tempdimb-\skip\@currbox
+ \ifdim\@tempdimc=\maxdimen
+ \ifdim\pcol@textfloatsep=\maxdimen \begingroup
+ \ifx\@toplist\@empty
+ \textfloatsep\z@ \floatsep\z@ \let\topfigrule\relax
+ \fi
+ \pcol@Fb
+ \@next\pcol@float\@freelist{\global\setbox\pcol@float\vbox to\z@{%
+ \vskip-\floatsep \topfigrule \vskip\textfloatsep
+ \unvbox\@currbox \vss}}\pcol@ovf
+ \pcol@Fe{synccolumn(topfloat)}%
+ \@cons\@toplist\pcol@float
+ \advance\@tempdimb\textfloatsep \advance\@tempdimb-\floatsep
+ \advance\@tempdimb\@M\p@
+ \global\pcol@prevdepth\@m\p@
+ \global\pcol@textfloatsep\@tempdimb
+ \endgroup \fi
+ \else
+ \global\pcol@prevdepth\@tempdimc
+ \ifdim\pcol@textfloatsep=\maxdimen
+ \global\pcol@textfloatsep\textfloatsep \fi
+ \global\setbox\@currbox\vbox{%
+ \ifdim\@tempdimb<\topskip
+ \vbox to\topskip{\unvbox\@currbox \vskip\z@\@plus.0001fil}%
+ \vskip-\topskip \vskip\@tempdimb
+ \else
+ \vbox to\@tempdimb{\unvbox\@currbox \vskip\z@\@plus.0001fil}%
+ \fi}%
+ \fi
+ \fi
+ \global\@topnum\z@ \pcol@setcurrcol
+ \advance\pcol@currcol\@ne}
+
+%% Special Output Routines: Page Flushing
+
+\def\pcol@output@flush{%
+ \pcol@makeflushedpage\@colht
+ \pcol@Logstart\pcol@output@flush
+ \setbox\@outputbox\vbox to\textheight{\boxmaxdepth\@maxdepth
+ \unvbox\@outputbox}%
+ \ifnum\pcol@ncolleft<\pcol@ncol
+ \setbox\pcol@rightpage\vbox to\textheight{\boxmaxdepth\@maxdepth
+ \unvbox\pcol@rightpage}%
+ \fi
+ \pcol@Logend\pcol@output@flush
+ \@outputpage
+ \pcol@freshpage}
+
+\def\pcol@output@clear{%
+ \pcol@makeflushedpage\@colht
+ \pcol@Logstart\pcol@output@clear
+ \setbox\@outputbox\vbox to\textheight{\boxmaxdepth\@maxdepth
+ \unvbox\@outputbox}%
+ \ifnum\pcol@ncolleft<\pcol@ncol
+ \setbox\pcol@rightpage\vbox to\textheight{\boxmaxdepth\@maxdepth
+ \unvbox\pcol@rightpage}%
+ \fi
+ \pcol@Logend\pcol@output@clear
+ \@outputpage
+ \pcol@flushfloats
+ \begingroup
+ \setbox\pcol@rightpage\box\voidb@x
+ \@dblfloatplacement \let\f@depth\z@
+ \@makefcolumn\@dbldeferlist
+ \@whilesw\if@fcolmade\fi{%
+ \def\pcol@bg@floatheight{\pcol@bg@textheight}%
+ \setbox\@outputbox\vbox to\textheight{%
+ \pcol@bg@paintbox{Ff}\unvbox\@outputbox}%
+ \ifnum\pcol@ncolleft<\pcol@ncol
+ \setbox\pcol@rightpage\vbox to\textheight{\pcol@bg@paintbox{Ff}\vfil}%
+ \fi
+ \@outputpage
+ \@makefcolumn\@dbldeferlist}%
+ \endgroup
+ \pcol@freshpage}
+
+\def\pcol@makeflushedpage#1{%
+ \pcol@cleartrue \pcol@output@switch \pcol@clearfalse
+ \pcol@getcurrpinfo{\global\c@page}{\global\@colht}\@tempskipa
+ \ifpcol@lastpage \@tempswafalse \else \@tempswatrue \fi
+ \ifdim\pcol@colht=-\maxdimen\else \@tempswatrue \fi
+ \ifvoid\pcol@footins\else \@tempswatrue \fi
+ \begingroup
+ \ifpcol@nospan
+ \global\setbox\@outputbox\box\voidb@x
+ \global\setbox\pcol@rightpage\box\voidb@x
+ \else
+ \ifpcol@dfloats \@tempswatrue \fi
+ \let\@elt\relax
+ \edef\pcol@bg@floatheight{%
+ \@elt{\number\ht\pcol@spanning sp}\@elt{\number\dp\pcol@spanning sp}}%
+ \def\reserved@a{%
+ \ifpcol@firstpage\else \if@tempswa \pcol@bg@paintbox{Ff}\fi\fi}%
+ \@tempdima\ht\pcol@spanning \advance\@tempdima\dp\pcol@spanning
+ \global\setbox\@outputbox\vbox{%
+ \reserved@a \unvbox\pcol@spanning
+ \ifpcol@firstpage\else \if@tempswa\else \unskip \fi\fi}%
+ \global\setbox\@outputbox\vbox{\box\@outputbox}%
+ \pcol@Fb
+ \@cons\@freelist\pcol@spanning
+ \pcol@Fe{makeflushedpage(spanning)}%
+ \ifnum\pcol@ncolleft<\pcol@ncol
+ \global\setbox\pcol@rightpage\vbox{%
+ \ifpcol@paired\else \advance\c@page\@ne \fi
+ \reserved@a \unvbox\pcol@rightpage}%
+ \global\ht\pcol@rightpage\ht\@outputbox
+ \global\dp\pcol@rightpage\dp\@outputbox
+ \global\setbox\pcol@rightpage\vbox{\box\pcol@rightpage}%
+ \fi
+ \advance\topmargin\@tempdima
+ \fi
+ \global\pcol@firstpagefalse
+ \if@tempswa
+ \ifvoid\pcol@footins\else
+ \pcol@shrinkcolbyfn\@colht\pcol@footins\relax
+ \fi
+ \let\pcol@@hfil\relax \@pageht\@colht
+ \ifpcol@lastpage \ifpcol@dfloats
+ \ifdim\pcol@colht<\z@ \def\@textbottom{\vfil}\fi
+ \pcol@lastpagefalse
+ \fi\fi
+ \ifpcol@lastpage \ifdim#1<\@colht \@colht#1\fi\fi
+ \ifdim\@colht<\z@ \else
+ \ifnum\pcol@ncolleft<\pcol@ncol
+ \pcol@imakeflushedpage\pcol@ncolleft\pcol@ncol\pcol@rightpage
+ \fi
+ \pcol@imakeflushedpage\z@\pcol@ncolleft\@outputbox
+ \fi
+ \fi
+ \gdef\pcol@fnheight@lpage{0pt}%
+ \ifvoid\pcol@footins\else
+ \@tempswatrue \ifpcol@lastpage \ifpcol@mgfnote \@tempswafalse \fi\fi
+ \if@tempswa
+ \pcol@Log\pcol@makeflushedpage{output}\pcol@footins
+ \@tempdima\ht\pcol@footins \advance\@tempdima\dp\pcol@footins
+ \xdef\pcol@fnheight@lpage{\number\@tempdima sp}%
+ \ifnum\pcol@ncolleft<\pcol@ncol
+ \global\setbox\pcol@rightpage\vbox{\unvbox\pcol@rightpage
+ \vskip\skip\pcol@footins \nointerlineskip
+ \pcol@phantom\pcol@footins \vskip\z@}%
+ \fi
+ \global\setbox\@outputbox\vbox{%
+ \unvbox\@outputbox \pcol@putfootins\pcol@footins}%
+ \pcol@Fb
+ \@cons\@freelist\pcol@footins \gdef\pcol@footins{\voidb@x}%
+ \pcol@Fe{makeflushedpage(pagefn)}%
+ \ifdim\pcol@colht=-\maxdimen \global\pcol@colht\z@ \fi
+ \fi
+ \fi
+ \endgroup}
+
+\def\pcol@imakeflushedpage#1#2#3{\global\setbox#3\vbox{%
+ \ifpcol@paired\else\ifnum#1=\z@\else \advance\c@page\@ne \fi\fi
+ \ifvoid\pcol@footins\else \ifpcol@lastpage\else
+ \def\pcol@bg@footnoteheight{%
+ \@elt{\ht\pcol@footins}\@elt{\dp\pcol@footins}}%
+ \pcol@bg@paintbox{Nn}%
+ \fi\fi
+ \unvbox#3\nointerlineskip
+ \ifpcol@lastpage \pcol@buildcolseprule\@colht#1#2\z@
+ \else \pcol@buildcolseprule\@colht#1#2\@maxdepth
+ \fi
+ \unvbox\@tempboxa
+ \hb@xt@\textwidth{%
+ \@tempcntb#1\@whilenum\@tempcntb<#2\do{%
+ \pcol@swapcolumn\@tempcntb\pcol@currcol#1#2\relax
+ \pcol@getcurrcol
+ \setbox\@cclv\box\@currbox
+ \ifvoid\pcol@currfoot\else
+ \pcol@Fb
+ \@cons\@freelist\pcol@currfoot
+ \pcol@Fe{imakeflushedpage(colfn)}%
+ \fi
+ \pcol@getcurrfoot\box
+ \@tempswafalse
+ \begingroup
+ \ifdim\@toproom=\maxdimen
+ \let\topfigrule\relax \ifdim\@colht=\@pageht \@tempswatrue \fi
+ \fi
+ \if@tempswa
+ \pcol@Logstart{\pcol@makeflushedpage(1)}%
+ \setbox\@outputbox\pcol@makefcolpage
+ \pcol@Logend{\pcol@makeflushedpage(1)}%
+ \else
+ \pcol@Logstart{\pcol@makeflushedpage(2)}%
+ \ifpcol@lastpage \pcol@@makecol\z@ \else \pcol@@makecol\@maxdepth \fi
+ \pcol@Logend{\pcol@makeflushedpage(2)}%
+ \fi
+ \pcol@@hfil \hb@xt@\columnwidth{\box\@outputbox\hss}%
+ \endgroup
+ \edef\pcol@@hfil{\noexpand\pcol@hfil{\pcol@colsepid}}%
+ \pcol@setcurrcolnf
+ \advance\@tempcntb\@ne}}}}
+
+\def\pcol@flushfloats{%
+ \global\@colht\textheight
+ \@whilesw\if@fcolmade\fi{%
+ \global\@fcolmadefalse
+ \ifnum\pcol@ncolleft<\pcol@ncol
+ \pcol@iflushfloats\pcol@ncolleft\pcol@ncol\pcol@rightpage
+ \else
+ \setbox\pcol@rightpage\box\voidb@x
+ \fi
+ \pcol@iflushfloats\z@\pcol@ncolleft\@outputbox
+ \@outputpage}}
+\def\pcol@iflushfloats#1#2#3{\setbox#3\vbox{%
+ \ifpcol@paired\else\ifnum#1=\z@\else \advance\c@page\@ne \fi\fi
+ \pcol@buildcolseprule\@colht#1#2\@maxdepth \unvbox\@tempboxa
+ \hb@xt@\textwidth{%
+ \let\pcol@@hfil\relax
+ \if@fcolmade \@tempswatrue \else \@tempswafalse \fi
+ \@tempcntb#1\@whilenum\@tempcntb<#2\do{%
+ \pcol@swapcolumn\@tempcntb\pcol@currcol#1#2\relax
+ \pcol@getcurrcol
+ \@makefcolumn\@deferlist
+ \pcol@@hfil \hb@xt@\columnwidth{%
+ \if@fcolmade \box\@outputbox \else \vbox to\@colht{}\fi \hss}%
+ \ifx\@deferlist\@empty\else \@tempswatrue \fi
+ \edef\pcol@@hfil{\noexpand\pcol@hfil{\pcol@colsepid}}%
+ \pcol@setcurrcolnf
+ \advance\@tempcntb\@ne}%
+ \if@tempswa \global\@fcolmadetrue \else \global\@fcolmadefalse \fi}}}
+
+\def\pcol@freshpage{%
+ \global\pcol@page\z@ \global\pcol@toppage\z@ \global\pcol@basepage\z@
+ \global\let\pcol@pages\@empty \global\let\pcol@currpage\@empty
+ \pcol@startpage \pcol@colht\@colht
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{%
+ \pcol@getcurrcol \pcol@page\z@ \@colroom\pcol@colht
+ \let\pcol@currboxsave\@currbox
+ \pcol@getcurrpage
+ \pcol@floatplacement
+ \pcol@startcolumn\z@
+ \@whilesw\if@fcolmade\fi{\pcol@opcol \pcol@startcolumn\z@}%
+ \let\@currbox\pcol@currboxsave
+ \global\setbox\@currbox\vbox{}%
+ \global\count\@currbox\pcol@page \global\dimen\@currbox\@colroom
+ \pcol@setcurrcolnf
+ \advance\pcol@currcol\@ne}%
+ \pcol@restartcolumn}
+
+%% Special Output Routines: Last Page
+
+\def\pcol@output@end{%
+ \pcol@Logstart\pcol@output@end
+ \pcol@makeflushedpage\pcol@colht
+ \@tempdima\pcol@colht \ifdim\pcol@colht<\z@ \@tempdima\z@ \fi
+ \advance\@tempdima-\ht\@outputbox
+ \pcol@getmparbottom@last\@tempdima
+ \pcol@bias@mpbout{-\@tempdima}
+ \def\pcol@do@mpbout@whole##1##2##3##4{\setbox\@tempboxa\hbox{##1##2##3##4}}%
+ \def\pcol@do@mpbout@elem\@elt##1##2{\global\@mparbottom##2sp}%
+ \pcol@do@mpbout
+ \@tempswafalse
+ \ifpcol@dfloats
+ \ifvoid\@outputbox\else \@outputpage \fi
+ \global\@fcolmadetrue \pcol@flushfloats
+ \global\pcol@outputfalse
+ \@tempswatrue \@pagedp\@m\p@ \global\@mparbottom\z@
+ \global\let\pcol@mparbottom@out\pcol@mparbottom@zero
+ \else
+ \global\pcol@outputfalse
+ \ifdim\pcol@colht=-\maxdimen
+ \ifx\pcol@firstprevdepth\relax
+ \@tempswatrue \@pagedp\@m\p@ \global\@mparbottom\z@
+ \global\let\pcol@mparbottom@out\pcol@mparbottom@zero
+ \ifpcol@nospan\else
+ \pcol@Fb
+ \@next\@currbox\@freelist{\global\setbox\@currbox\box\@outputbox}%
+ \pcol@ovf
+ \pcol@Fe{output@end(spanning)}%
+ \count\@currbox10\relax
+ {\let\@elt\relax \xdef\@dbldeferlist{\@elt\@currbox\@dbldeferlist}}%
+ \global\setbox\pcol@rightpage\box\voidb@x
+ \fi
+ \else \unvbox\@outputbox \@pagedp\pcol@firstprevdepth sp\relax
+ \fi
+ \else
+ \global\pcol@havelastpagetrue
+ \@tempdima\ht\@outputbox \advance\@tempdima\dp\@outputbox
+ \xdef\pcol@bg@preposttop@left{\number\@tempdima sp}%
+ \ifnum\pcol@ncolleft<\pcol@ncol
+ \global\let\pcol@bg@preposttop@right\pcol@bg@preposttop@left
+ \fi
+ \def\pcol@bg@textheight{\@elt{\ht\@outputbox}\@elt{\dp\@outputbox}}%
+ \def\reserved@a{%
+ \ifdim\pcol@fnheight@lpage>\z@
+ \def\pcol@bg@footnoteheight{\@elt\pcol@fnheight@lpage}%
+ \pcol@bg@paintbox{Nn}%
+ \fi}%
+ \ifnum\pcol@ncolleft<\pcol@ncol
+ \global\setbox\pcol@rightpage\vbox{%
+ \ifpcol@paired\else \advance\c@page\@ne \fi
+ \reserved@a \unvbox\pcol@rightpage}%
+ \fi
+ \topskip\z@ \vbox{\reserved@a \unvbox\@outputbox}%
+ \fi
+ \fi
+ \ifvoid\pcol@footins\else
+ \pcol@Log\pcol@output@end{insert}\pcol@footins
+ \pcol@Fb
+ \insert\footins{\unvbox\pcol@footins}\@cons\@freelist\pcol@footins
+ \pcol@Fe{output@end(pagefn)}%
+ \fi
+ \ifvoid\pcol@topfnotes\else \insert\footins{\unvbox\pcol@topfnotes}\fi
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{%
+ \pcol@Fb
+ \pcol@getcurrcol \@cons\@freelist\@currbox
+ \ifvoid\pcol@ccuse{@box}\else
+ \@cons\@freelist{\pcol@ccuse{@box}}%
+ \pcol@ccxdef{\voidb@x}%
+ \fi
+ \pcol@Fe{output@end(col)}%
+ \advance\pcol@currcol\@ne}%
+ \pcol@currcol\z@ \pcol@restorecolorstack
+ \global\setbox\pcol@colorins\box\voidb@x
+ \pcol@currcol\pcol@lastcol\relax \pcol@getcurrcol
+ \global\pcol@prevdepth\@pagedp
+ \global\@colht\textheight
+ \global\@colroom\textheight
+ \global\let\@deferlist\@dbldeferlist \gdef\@dbldeferlist{}%
+ \pcol@floatplacement
+ \pcol@lastpagefalse
+ \if@tempswa
+ \@startcolumn \@whilesw\if@fcolmade\fi{\@opcol\@startcolumn}%
+ \fi
+ \pcol@Logend\pcol@output@end
+}
+
+%% Starting Environment
+
+\def\pcol@invokeoutput#1{\deadcycles\z@
+ \pcol@Logstart{\pcol@invokeoutput
+ {#1:\the\pcol@currcol/\the\pcol@nextcol%
+ \ifnum#1=-10011:\ifpcol@sync s\fi \ifpcol@clear c\fi\fi}}%
+ \penalty-\@Miv \global\pcol@prevdepth\prevdepth \vbox{}%
+ \penalty#1\relax \prevdepth\pcol@prevdepth
+ \linewidth\columnwidth \advance\linewidth-\pcol@lrmargin
+ \ifdim\pcol@lrmargin>\z@ \parshape\@ne\@totalleftmargin\linewidth \fi
+ \hsize\columnwidth
+ \pcol@Logend{\pcol@invokeoutput{#1}}}
+
+\def\paracol{\global\pcol@pairedtrue \@ifnextchar[%]
+ \pcol@yparacol\pcol@xparacol}
+\def\pcol@xparacol#1{\pcol@zparacol[#1]{#1}}
+\def\pcol@yparacol[#1]{%
+ \@ifstar{\global\pcol@pairedfalse \pcol@zparacol[#1]}%
+ {\pcol@zparacol[#1]}}
+\def\pcol@zparacol[#1]#2{\par
+ \ifinner \@parmoderr \fi
+ \if@twocolumn \PackageError{paracol}{%
+ Environment paracol cannot work with ordinary two-column
+ typesetting.}\@ehb\fi
+ \global\pcol@ncolleft#1\relax \global\pcol@ncol#2\relax
+ \ifnum\pcol@ncolleft>\pcol@ncol \global\pcol@ncolleft\pcol@ncol \fi
+ \ifnum\pcol@ncolleft<\pcol@ncol\else \global\pcol@pairedtrue \fi
+ \ifpcol@paired\else \pcol@swapcolumnfalse \fi
+ \if@newlist \if@inlabel\else
+ \if@nobreak \@nbitem
+ \else
+ \addpenalty\@beginparpenalty
+ \addvspace\@topsep
+ \addvspace{-\parskip}\addvspace{-\itemsep}%
+ \fi
+ \global\@newlistfalse
+ \fi\fi
+ \global\let\pcol@counters\cl@@ckpt
+ \let\@elt\pcol@remctrelt \pcol@gcounters
+ \let\@elt\pcol@thectrelt \pcol@counters
+ \begingroup
+ \let\@elt\pcol@loadctrelt \csname pcol@counters0\endcsname
+ \let\@elt\pcol@cmpctrelt \global\let\@gtempa\@empty \pcol@counters
+ \pcol@synccounter\@gtempa
+ \endgroup
+ \global\@twocolumntrue \col@number\@ne
+ \pcol@setcolumnwidth\z@\pcol@ncolleft
+ \pcol@columnratioleft\pcol@colwidthspecleft
+ \ifnum\pcol@ncolleft<\pcol@ncol
+ \pcol@setcolumnwidth\pcol@ncolleft\pcol@ncol
+ \pcol@columnratioright\pcol@colwidthspecright
+ \fi
+ \pcol@lrmargin\textwidth \advance\pcol@lrmargin-\linewidth
+ \global\pcol@topskip\topskip
+ \global\pcol@textfloatsep\maxdimen
+ \pcol@lastpagefalse \xdef\pcol@firstprevdepth{\number\prevdepth}%
+ \let\pcol@@combinefloats\@combinefloats \let\@combinefloats\pcol@combinefloats
+ \let\pcol@@addmarginpar\@addmarginpar \let\@addmarginpar\pcol@addmarginpar
+ \let\end@dblfloat\pcol@end@dblfloat
+ \global\let\pcol@set@color\set@color
+ \ifx\set@color\relax
+ \let\pcol@bg@paintpage\relax \let\pcol@bg@paintbox\@gobble
+ \let\pcol@bg@paintcolumns\relax
+ \else
+ \let\set@color\pcol@set@color@push
+ \pcol@innerfalse
+ \global\pcol@everyvbox{\pcol@dummytoken}%
+ \pcol@everyvbox\everyvbox
+ \everyvbox{\the\pcol@everyvbox \pcol@innertrue}
+ \let\everyvbox\pcol@everyvbox
+ \aftergroup\pcol@restoreeveryvbox
+ \let\pcol@bg@paintpage\pcol@bg@@paintpage
+ \let\pcol@bg@paintbox\pcol@bg@@paintbox
+ \let\pcol@bg@paintcolumns\pcol@bg@@paintcolumns
+ \fi
+ \gdef\pcol@colorstack@shadow{}%
+ \pcol@footnotebase\c@footnote \global\pcol@nfootnotes\z@
+ \let\footnote\pcol@footnote
+ \let\footnotemark\pcol@footnotemark
+ \let\footnotetext\pcol@footnotetext
+ \ifpcol@scfnote
+ \def\footnoterule{{\columnwidth\textwidth \pcol@footnoterule}}%
+ \fi
+ \let\@footnotetext\pcol@fntext
+ \let\pcol@@marginpar\marginpar \let\marginpar\pcol@marginpar
+ \let\@mn@@marginnote\pcol@marginnote
+ \let\pcol@@xympar\@xympar \let\@xympar\pcol@xympar
+ \def\pcol@twosided[#1]{\pcol@ignore\twosided}%
+ \def\swapcolumninevenpages{\pcol@ignore\swapcolumninevenpages}%
+ \def\noswapcolumninevenpages{\pcol@ignore\noswapcolumninevenpages}%
+ \def\footnotelayout#1{\pcol@ignore\footnotelayout}%
+ \def\multicolumnfootnotes{\pcol@ignore\multicolumnfootnotes}%
+ \def\singlecolumnfootnotes{\pcol@ignore\singlecolumnfootnotes}%
+ \def\mergedfootnotes{\pcol@ignore\mergedfootnotes}%
+ \let\@elt\pcol@defcomelt \pcol@localcommands
+ \def\column{\pcol@com@column}%
+ \@namedef{column*}{\@nameuse{pcol@com@column*}}%
+ \global\let\pcol@com@column\pcol@defcolumn
+ \global\@namedef{pcol@com@column*}{\pcol@defcolumn
+ \@ifnextchar[%]
+ \pcol@sptext\relax}%
+ \def\paracol##1{\PackageError{paracol}{%
+ Environment paracol cannot be nested.}\@eha}%
+ \output{\pcol@output}%
+ \let\@elt\relax
+ \pcol@invokeoutput\pcol@op@start
+ \pcol@nextcol\z@
+ \@ifnextchar[%]
+ \pcol@sptext{\@nameuse{pcol@colpream0}}}
+\let\pcol@paracol\paracol
+
+\def\thecolumn{\number\pcol@currcol}
+
+\def\pcol@ignore#1{\PackageWarning{paracol}{The command \string#1 is not
+ effective in paracol environment and thus ignored}}
+
+\def\pcol@localcommands{%
+ \@elt{switchcolumn}%
+ \@elt{endcolumn}\@elt{endcolumn*}%
+ \@elt{nthcolumn}\@elt{endnthcolumn}\@elt{nthcolumn*}\@elt{endnthcolumn*}%
+ \@elt{leftcolumn}\@elt{endleftcolumn}\@elt{leftcolumn*}\@elt{endleftcolumn*}%
+ \@elt{rightcolumn}\@elt{endrightcolumn}%
+ \@elt{rightcolumn*}\@elt{endrightcolumn*}%
+ \@elt{flushpage}\@elt{clearpage}\@elt{cleardoublepage}%
+ \@elt{synccounter}\@elt{syncallcounters}}
+\def\pcol@defcomelt#1{%
+ \expandafter\let\expandafter\reserved@a\csname pcol@com@#1\endcsname
+ \expandafter\let\csname #1\endcsname\reserved@a}
+
+\gdef\@dbldeferlist{}
+\def\pcol@end@dblfloat{%
+ \if@twocolumn
+ \@endfloatbox
+ \ifnum\@floatpenalty <\z@
+ \@largefloatcheck
+ \@cons\@dbldeferlist\@currbox
+ \fi
+ \ifnum \@floatpenalty =-\@Mii \@Esphack\fi
+ \else
+ \end@float
+ \fi
+}
+%% Column Width Setting
+
+\def\columnratio#1{\global\let\pcol@colwidthspecleft\relax
+ \gdef\pcol@columnratioleft{#1}%
+ \@ifnextchar[%]
+ \pcol@icolumnratio{\gdef\pcol@columnratioright{#1}}}
+\def\pcol@icolumnratio[#1]{\gdef\pcol@columnratioright{#1}}
+\columnratio{}\relax
+
+\def\setcolumnwidth#1{\global\let\pcol@columnratioleft\relax
+ \gdef\pcol@colwidthspecleft{#1}%
+ \@ifnextchar[%]
+ \pcol@isetcolumnwidth{\gdef\pcol@colwidthspecright{#1}}}
+\def\pcol@isetcolumnwidth[#1]{\gdef\pcol@colwidthspecright{#1}}
+
+\def\pcol@setcolumnwidth{%
+ \ifx\pcol@columnratioleft\relax \let\reserved@a\pcol@setcolwidth@s
+ \else \let\reserved@a\pcol@setcolwidth@r
+ \fi
+ \reserved@a}
+
+\def\pcol@setcolwidth@r#1#2#3#4{%
+ \@tempcntb#2\advance\@tempcntb-#1\advance\@tempcntb\m@ne
+ \@tempdima-\columnsep \multiply\@tempdima\@tempcntb
+ \advance\@tempdima\textwidth \@tempdimb\@tempdima
+ \@tempcnta#1\relax\@tempcntb#2\advance\@tempcntb\m@ne
+ \@for\reserved@a:=#3\do{%
+ \ifnum\@tempcnta<\@tempcntb
+ \@tempdimc\reserved@a\@tempdima
+ \expandafter\xdef\csname pcol@columnwidth\number\@tempcnta\endcsname{%
+ \number\@tempdimc sp}%
+ \global\@namedef{pcol@columnsep\number\@tempcnta}{\columnsep}%
+ \advance\@tempdimb-\@tempdimc
+ \advance\@tempcnta\@ne
+ \fi}%
+ \@tempcntb#2\advance\@tempcntb-\@tempcnta
+ \divide\@tempdimb\@tempcntb
+ \@whilenum\@tempcnta<#2\do{%
+ \expandafter\xdef\csname pcol@columnwidth\number\@tempcnta\endcsname{%
+ \number\@tempdimb sp}%
+ \global\@namedef{pcol@columnsep\number\@tempcnta}{\columnsep}%
+ \advance\@tempcnta\@ne}%
+}
+
+\def\pcol@setcolwidth@s#1#2#3#4{\begingroup
+ \dimen@\z@ \dimen@ii\z@ \def\pcol@setcw@filunit{\@ne\p@}%
+ \let\pcol@setcw@c\pcol@setcw@accumwd \let\pcol@setcw@s\pcol@setcw@accumwd
+ \pcol@setcw@scan#1#2{#4}%
+ \advance\dimen@-\@tempdima \advance\dimen@ii-\@tempdimb
+ \pcol@setcw@calcfactors
+ \def\pcol@setcw@c{\pcol@setcw@set{width}}%
+ \def\pcol@setcw@s{\pcol@setcw@set{sep}}%
+ \let\pcol@setcw@filunit\dimen@ii
+ \pcol@setcw@scan#1#2{#4}%
+ \endgroup}
+\def\pcol@setcw@scan#1#2#3{\def\reserved@a{#3}%
+ \@tempcnta#1\relax \@whilenum\@tempcnta<#2\do{
+ \edef\reserved@a{\reserved@a,}\advance\@tempcnta\@ne}%
+ \@tempcnta#1\relax
+ \expandafter\@for\expandafter\reserved@a\expandafter:\expandafter=\reserved@a
+ \do{%
+ \ifnum\@tempcnta<#2\relax
+ \expandafter\pcol@setcw@getspec\reserved@a//\@nil
+ \fi
+ \advance\@tempcnta\@ne}}
+\def\pcol@setcw@getspec#1/#2/#3\@nil{%
+ \pcol@setcw@getspec@i\fill{#1}\pcol@setcw@c
+ \pcol@setcw@getspec@i\columnsep{#2}\pcol@setcw@s}
+\def\pcol@setcw@getspec@i#1#2{%
+ \def\reserved@a{}%
+ \@tfor\reserved@b:=#2\do{\edef\reserved@a{\reserved@a\reserved@b}}
+ \ifx\reserved@a\@empty \let\reserved@a#1\fi
+ \let\@gtempa\relax
+ {\def\fill{1\p@\gdef\@gtempa{}}\@tempskipa\reserved@a}%
+ \ifx\@gtempa\relax \@tempskipa\reserved@a\relax
+ \else \expandafter\pcol@setcw@fill\reserved@a
+ \fi
+ \@tempdima\@tempskipa
+ \advance\@tempskipa0\p@\@plus\@m\p@\@minus\@m\p@\relax
+ \expandafter\pcol@extract@fil\the\@tempskipa\@nil}
+\def\pcol@setcw@fill#1\fill{\def\reserved@b{#1}%
+ \ifx\reserved@b\@empty \let\reserved@b\@ne \fi
+ \@tempskipa0\p@\@plus\reserved@b fil\relax}
+
+\def\pcol@setcw@accumwd{\advance\dimen@\@tempdima \advance\dimen@ii\@tempdimb}
+\def\pcol@setcw@set#1{%
+ \@tempdima\pcol@setcw@scale\@tempdima \advance\@tempdima\@tempdimb
+ \expandafter\xdef\csname pcol@column#1\number\@tempcnta\endcsname{%
+ \number\@tempdima sp}}
+
+\def\pcol@setcw@calcfactors{%
+ \ifdim\dimen@=\textwidth \def\pcol@setcw@scale{}\dimen@ii\z@
+ \else
+ \pcol@setcw@calcf\textwidth\dimen@\pcol@setcw@scale
+ \ifdim\dimen@<\textwidth \ifdim\dimen@ii>\z@
+ \def\pcol@setcw@scale{}%
+ \@tempdimc\textwidth \advance\@tempdimc-\dimen@
+ \pcol@setcw@calcf\@tempdimc\dimen@ii\reserved@a \dimen@ii\@tempdimb
+ \else \dimen@ii\z@ \fi
+ \else \dimen@ii\z@ \fi
+ \fi}
+\def\pcol@setcw@calcf#1#2#3{%
+ \@tempdimb#1\@tempdima#2\@tempcnta\z@
+ \ifdim\@tempdima=\z@ \@tempdima1sp\relax\fi
+ \@whiledim\@tempdimb<8192\p@\do{%
+ \multiply\@tempdimb\tw@ \advance\@tempcnta\@ne}%
+ \@tempdimc\@tempdima
+ \@whiledim\@tempdima=\@tempdimc\do{%
+ \divide\@tempdimc\tw@ \multiply\@tempdimc\tw@
+ \ifdim\@tempdima=\@tempdimc
+ \divide\@tempdima\tw@ \divide\@tempdimc\tw@ \advance\@tempcnta\@ne
+ \fi}
+ \advance\@tempdima-1sp\relax
+ \@whilenum\@tempdima>32768\do{\divide\@tempdima\tw@ \advance\@tempcnta\@ne}%
+ \advance\@tempdima1sp\relax
+ \divide\@tempdimb\@tempdima \@tempdimc\@tempdimb \@tempcntb\@tempcnta
+ \@whilenum\@tempcntb>\z@\do{\divide\@tempdimc\tw@ \advance\@tempcntb\m@ne}
+ \ifnum\@tempdimc>16383\relax
+ \PackageError{%
+ Scaling/filling factor for column/gap width is too large.}\@eha
+ \@tempdimb\@M\p@
+ \else
+ \@tempcntb\sixt@@n \advance\@tempcntb-\@tempcnta
+ \ifnum\@tempcntb<\z@
+ \@whilenum\@tempcntb<\z@\do{\divide\@tempdimb\tw@ \advance\@tempcntb\@ne}%
+ \else
+ \@whilenum\@tempcntb>\z@\do{%
+ \multiply\@tempdimb\tw@ \advance\@tempcntb\m@ne}%
+ \fi
+ \fi
+ \expandafter\pcol@extract@pt\the\@tempdimb#3}
+
+\@tempskipa 1\p@\@plus1fil\@minus1fil\relax
+\def\pcol@defkw1.0#1 #2 1.0#3 #4 1.0#5\@nil{%
+ \def\pcol@kw@pt{#1}\def\pcol@kw@plus{#2}\def\pcol@kw@fil{#3}%
+ \def\pcol@kw@minus{#4}}
+\expandafter\pcol@defkw\the\@tempskipa\@nil
+
+\edef\pcol@def@extract@fil{%
+ \def\noexpand\pcol@extract@fil
+ ##1\space\pcol@kw@plus\space##2\space\pcol@kw@minus##3\noexpand\@nil{%
+ \noexpand\pcol@extract@fil@i##2\noexpand\@nil}}
+\pcol@def@extract@fil
+\def\pcol@extract@fil@i#1.#2\@nil{\def\reserved@a{#1.#2}%
+ \afterassignment\pcol@extract@fil@ii\count@#2\@nil}
+\def\pcol@extract@fil@ii#1\@nil{\def\reserved@b{#1}%
+ \ifx\reserved@b\pcol@kw@pt \@tempdimb\z@
+ \else \expandafter\pcol@extract@fil@iii\reserved@a\@nil
+ \fi}
+\edef\pcol@def@extract@fil@iii{%
+ \def\noexpand\pcol@extract@fil@iii##1\pcol@kw@fil##2\noexpand\@nil{%
+ \@tempdimb\noexpand\pcol@setcw@filunit\relax \@tempdimb##1\@tempdimb}}
+\pcol@def@extract@fil@iii
+
+\edef\pcol@def@extract@pt{%
+ \def\noexpand\pcol@extract@pt##1\pcol@kw@pt##2{\def##2{##1}}}
+\pcol@def@extract@pt
+
+%% Counter Operations
+
+\def\globalcounter{\@ifstar\pcol@globalcounter@s\pcol@globalcounter}
+\def\pcol@globalcounter@s{\global\let\pcol@gcounters\cl@@ckpt}
+\def\pcol@globalcounter#1{{%
+ \@tempswafalse \def\reserved@a{#1}%
+ \def\@elt##1{\def\reserved@b{##1}%
+ \ifx\reserved@a\reserved@b \@tempswatrue \fi}%
+ \pcol@gcounters
+ \if@tempswa\else \@cons\pcol@gcounters{{#1}}\fi}}
+\gdef\pcol@gcounters{\@elt{page}}
+\def\localcounter#1{%
+ \expandafter\ifx\csname c@#1\endcsname\c@page\else
+ \pcol@removecounter\pcol@gcounters{#1}%
+ \fi}
+\def\pcol@remctrelt#1{%
+ \expandafter\let\expandafter\reserved@a\csname cl@#1\endcsname
+ \expandafter\let\csname pcol@cl@#1\endcsname\reserved@a
+ \expandafter\ifx\csname c@#1\endcsname\c@page\else
+ \@namedef{cl@#1}{\pcol@stepcounter{#1}}%
+ \fi
+ \pcol@removecounter\pcol@counters{#1}}
+\def\pcol@removecounter#1#2{%
+ \def\reserved@a{#2}\let\reserved@b#1\relax \global\let#1\@empty
+ {\def\@elt{\pcol@iremctrelt#1}\reserved@b}}
+\def\pcol@iremctrelt#1#2{%
+ \def\reserved@b{#2}%
+ \ifx\reserved@a\reserved@b\else \@cons#1{{#2}}\fi}
+
+\def\definethecounter#1#2#3{\@namedef{pcol@thectr@#1#2}{#3}}
+\def\pcol@thectrelt#1{%
+ \expandafter\let\expandafter\reserved@a\csname the#1\endcsname
+ \expandafter\let\csname pcol@thectr@#1\endcsname\reserved@a
+ \expandafter\let\expandafter\reserved@a\csname pcol@thectr@#10\endcsname
+ \ifx\reserved@a\relax\else
+ \expandafter\let\csname the#1\endcsname\reserved@a
+ \fi}
+
+\def\pcol@loadctrelt#1#2{\@namedef{pcol@ctr@#1}{#2}}
+\def\pcol@storecounters{\pcol@sscounters\pcol@storectrelt}
+\def\pcol@storectrelt#1{\@cons\@gtempa{{#1}{\@nameuse{pcol@ctr@#1}}}}
+\def\pcol@savecounters{\pcol@sscounters\pcol@savectrelt}
+\def\pcol@savectrelt#1{\@cons\@gtempa{{#1}{\number\csname c@#1\endcsname}}}
+\def\pcol@sscounters#1{\begingroup
+ \global\let\@gtempa\@empty
+ \let\@elt#1\relax \pcol@counters
+ \let\@elt\relax
+ \expandafter\xdef\csname pcol@counters\number\pcol@currcol\endcsname{%
+ \@gtempa}%
+ \endgroup}
+
+\def\pcol@cmpctrelt#1{\@tempswafalse \@tempcnta\@nameuse{c@#1}%
+ \expandafter\ifx\csname pcol@ctr@#1\endcsname\relax \@tempswatrue
+ \else\ifnum\@nameuse{pcol@ctr@#1}=\@tempcnta\else \@tempswatrue
+ \fi\fi
+ \if@tempswa \@cons\@gtempa{{#1}}\fi}
+
+\def\pcol@com@synccounter#1{\pcol@synccounter{\@elt{#1}}}
+\def\pcol@synccounter#1{{%
+ \let\@elt\relax \edef\reserved@a{#1}%
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{%
+ \let\@elt\pcol@loadctrelt \@nameuse{pcol@counters\number\pcol@currcol}%
+ \let\@elt\pcol@syncctrelt \reserved@a
+ \pcol@storecounters
+ \advance\pcol@currcol\@ne}}}
+\def\pcol@syncctrelt#1{%
+ \expandafter\edef\csname pcol@ctr@#1\endcsname{\number\@nameuse{c@#1}}}
+
+\def\pcol@com@syncallcounters{{%
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{%
+ \pcol@savecounters \advance\pcol@currcol\@ne}}}
+
+\def\pcol@setctrelt#1#2{%
+ \global\csname c@#1\endcsname#2\relax
+ \expandafter\ifx\csname pcol@thectr@#1\number\pcol@currcol\endcsname\relax
+ \expandafter\let\expandafter\reserved@a\csname pcol@thectr@#1\endcsname
+ \else
+ \expandafter\let\expandafter\reserved@a
+ \csname pcol@thectr@#1\number\pcol@currcol\endcsname
+ \fi
+ \expandafter\let\csname the#1\endcsname\reserved@a}
+
+\def\pcol@stepcounter#1{\begingroup
+ \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{%
+ \let\@elt\pcol@stpldelt \@nameuse{pcol@counters\number\pcol@currcol}%
+ \let\@elt\pcol@stpclelt \@nameuse{pcol@cl@#1}%
+ \pcol@savecounters
+ \advance\pcol@currcol\@ne}%
+ \endgroup
+ \let\@elt\@stpelt \@nameuse{pcol@cl@#1}}
+\def\pcol@stpldelt#1#2{\csname c@#1\endcsname#2\relax}
+\def\pcol@stpclelt#1{\csname c@#1\endcsname\z@}
+
+%% Column-Switching Commands and Environments
+
+\def\pcol@par{\ifvmode\else \par \fi}
+
+\def\pcol@com@switchcolumn{\pcol@par
+ \pcol@defcolumn
+ \@tempcnta\pcol@currcol \advance\@tempcnta\@ne
+ \ifnum\@tempcnta<\pcol@ncol\else \@tempcnta\z@ \fi
+ \@ifnextchar[%]
+ \pcol@switchcolumn{\pcol@switchcolumn[\@tempcnta]}}
+\def\pcol@switchcolumn[#1]{%
+ \pcol@nextcol#1\relax
+ \@tempswafalse
+ \ifnum#1<\z@ \@tempswatrue \fi
+ \ifnum#1<\pcol@ncol\else \@tempswatrue \fi
+ \if@tempswa
+ \PackageError{paracol}{%
+ Column number \number#1 must be less than \number\pcol@ncol}\@eha
+ \pcol@nextcol\z@
+ \fi
+ \@ifstar\pcol@iswitchcolumn\pcol@switchcol}
+\def\pcol@iswitchcolumn{%
+ \global\pcol@synctrue
+ \@ifnextchar[%]
+ \pcol@sptext\pcol@switchcol}
+
+\long\def\pcol@sptext[#1]{%
+ \@tempcnta\pcol@nextcol
+ \global\pcol@synctrue \pcol@nextcol\z@
+ \global\pcol@sptextstarttrue
+ \pcol@switchcol
+ \global\pcol@sptextstartfalse \global\pcol@sptexttrue
+ \begingroup
+ \columnwidth\textwidth \hsize\columnwidth
+ \linewidth\columnwidth \advance\linewidth-\pcol@lrmargin
+ \ifdim\pcol@lrmargin>\z@ \parshape\@ne\@totalleftmargin\linewidth \fi
+ \col@number\@ne #1\pcol@par
+ \global\let\@svsechd\@svsechd \global\let\@svsec\@svsec
+ \expandafter\global\expandafter\everypar\expandafter{\the\everypar}%
+ \endgroup
+ \pcol@nextcol\@tempcnta \global\pcol@synctrue \pcol@switchcol}
+
+\def\pcol@switchcol{%
+ \pcol@savecounters
+ \ifpcol@sync
+ \@tempdima\pcol@ensurevspace\relax
+ \edef\pcol@@ensurevspace{\number\@tempdima sp\relax}%
+ \global\pcol@syncfalse \pcol@visitallcols\@@par \global\pcol@synctrue
+ \pcol@invokeoutput\pcol@op@switch
+ \@whilesw\ifpcol@flush\fi{%
+ \vfil \penalty-\@M
+ \global\pcol@syncfalse \pcol@visitallcols\newpage \global\pcol@synctrue
+ \pcol@invokeoutput\pcol@op@switch}%
+ \ensurevspace{\baselineskip}%
+ \else
+ \pcol@invokeoutput\pcol@op@switch
+ \fi
+ \let\@elt\pcol@setctrelt
+ \csname pcol@counters\number\pcol@currcol\endcsname
+ \let\@elt\pcol@aconlyelt \pcol@aconly \let\@elt\relax
+ \@nameuse{pcol@colpream\ifpcol@sptextstart-1\else\number\pcol@currcol\fi}}
+
+\def\pcol@visitallcols#1{\begingroup
+ \@tempcnta\z@ \@tempcntb\pcol@currcol
+ \@whilenum\@tempcnta<\pcol@ncol\do{%
+ \ifnum\@tempcnta=\@tempcntb\else
+ \pcol@nextcol\@tempcnta \pcol@invokeoutput\pcol@op@switch #1%
+ \fi
+ \advance\@tempcnta\@ne}%
+ \pcol@nextcol\@tempcntb \pcol@invokeoutput\pcol@op@switch
+ \endgroup}
+
+\def\pcol@defcolumn{%
+ \gdef\pcol@com@column{\pcol@switchenv{column}\relax}%
+ \global\@namedef{pcol@com@column*}{\pcol@switchenv{column*}*}}
+
+\def\pcol@com@nthcolumn#1{\pcol@switchenv{nthcolumn}[#1]\relax}
+\@namedef{pcol@com@nthcolumn*}#1{\pcol@switchenv{nthcolumn*}[#1]*}
+\def\pcol@com@leftcolumn{\pcol@switchenv{leftcolumn}[0]\relax}
+\@namedef{pcol@com@leftcolumn*}{\pcol@switchenv{leftcolumn*}[0]*}
+\def\pcol@com@rightcolumn{\pcol@switchenv{rightcolumn}[1]\relax}
+\@namedef{pcol@com@rightcolumn*}{\pcol@switchenv{rightcolumn*}[1]*}
+
+\def\pcol@switchenv#1{\let\reserved@a\switchcolumn
+ \def\switchcolumn{\PackageError{paracol}{%
+ Column switching commands and environments cannot be used in #1}\@eha}
+ \reserved@a}
+
+\def\pcol@com@endcolumn{\pcol@par
+ \expandafter\global\expandafter\everypar\expandafter{\the\everypar}}
+\expandafter\let\csname pcol@com@endcolumn*\endcsname\pcol@com@endcolumn
+\let\pcol@com@endnthcolumn\pcol@com@endcolumn
+\expandafter\let\csname pcol@com@endnthcolumn*\endcsname\pcol@com@endcolumn
+\let\pcol@com@endleftcolumn\pcol@com@endcolumn
+\expandafter\let\csname pcol@com@endleftcolumn*\endcsname\pcol@com@endcolumn
+\let\pcol@com@endrightcolumn\pcol@com@endcolumn
+\expandafter\let\csname pcol@com@endrightcolumn*\endcsname\pcol@com@endcolumn
+
+\def\definecolumnpreamble#1#2{\@tempcnta#1\relax
+ \expandafter\gdef\csname pcol@colpream\number\@tempcnta\endcsname{#2}}
+
+\def\ensurevspace#1{{\@tempdima#1\relax \gdef\pcol@ensurevspace{#1}}}
+\ensurevspace{\baselineskip}
+
+%% Disabling \addcontentsline
+
+\def\addcontentsonly#1#2{%
+ \@ifundefined{pcol@ac@def@#1}
+ {\PackageError{paracol}{Unknown contents type #1}\@eha}\relax
+ \@cons\pcol@aconly{{#1}{#2}}}
+\gdef\pcol@aconly{}
+
+\def\pcol@aconlyelt#1#2{%
+ \ifnum#2=\pcol@currcol \@nameuse{pcol@ac@def@#1}{enable}%
+ \else \@nameuse{pcol@ac@def@#1}{disable}%
+ \fi}
+\def\pcol@gobblethree#1#2#3{}
+\let\pcol@addcontentsline\addcontentsline
+
+\def\pcol@ac@def@toc#1{%
+ \expandafter\let\expandafter\@sect\csname pcol@ac@#1@toc\endcsname}
+\let\pcol@ac@enable@toc\@sect
+\def\pcol@ac@disable@toc#1#2#3#4#5#6[#7]#8{%
+ \let\addcontentsline\pcol@gobblethree
+ \pcol@ac@enable@toc{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{#8}%
+ \let\addcontentsline\pcol@addcontentsline}
+
+\def\pcol@ac@def@lof#1{\@nameuse{pcol@ac@caption@#1}{lof}}
+\def\pcol@ac@def@lot#1{\@nameuse{pcol@ac@caption@#1}{lot}}
+\def\pcol@ac@caption@enable{\pcol@ac@caption@def\@tempswatrue}
+\def\pcol@ac@caption@disable{\pcol@ac@caption@def\@tempswafalse}
+\def\pcol@ac@caption@def#1#2{\let\@caption\pcol@ac@caption
+ \expandafter\let\csname pcol@ac@caption@if@#2\endcsname#1}
+\let\pcol@ac@caption@if@lof\@tempswatrue
+\let\pcol@ac@caption@if@lot\@tempswatrue
+\long\def\pcol@ac@caption#1[#2]#3{%
+ \@nameuse{pcol@ac@caption@if@\@nameuse{ext@#1}}%
+ \if@tempswa\else \let\addcontentsline\pcol@gobblethree \fi
+ \pcol@ac@caption@latex{#1}[{#2}]{#3}%
+ \let\addcontentsline\pcol@addcontentsline}
+\let\pcol@ac@caption@latex\@caption
+
+%% Page Flushing Commands
+
+\def\pcol@com@flushpage{\pcol@flushclear\voidb@x
+ \pcol@invokeoutput\pcol@op@flush}
+\def\pcol@com@clearpage{\pcol@flushclear\voidb@x
+ \pcol@invokeoutput\pcol@op@clear}
+\def\pcol@com@cleardoublepage{\pcol@com@clearpage
+ \if@twoside \ifodd\c@page\else \ifpcol@paired\else \pcol@com@flushpage
+ \fi\fi\fi}
+\def\pcol@flushclear#1{\pcol@par
+ \pcol@nextcol\pcol@currcol
+ \pcol@visitallcols\@@par
+ \pcol@cleartrue \global\pcol@synctrue
+ \ifpcol@lastpage \pcol@lastpagesavetrue \else \pcol@lastpagesavefalse \fi
+ \pcol@invokeoutput\pcol@op@switch \ifvoid#1\else \global\pcol@flushtrue \fi
+ \@whilesw\ifpcol@flush\fi{%
+ \pcol@lastpagefalse
+ \vfil \penalty-\@M \pcol@cleartrue \global\pcol@synctrue
+ \ifpcol@lastpagesave \pcol@lastpagetrue \fi
+ \pcol@invokeoutput\pcol@op@switch
+ \ifvoid#1\else \global\pcol@flushtrue \fi}%
+ \pcol@clearfalse}
+
+%% Commands for Footnotes
+
+\def\footnotelayout#1{\@ifundefined{pcol@fnlayout@#1}%
+ {\PackageError{paracol}{Unknown footnote layout specifier #1}}%
+ {\@nameuse{pcol@fnlayout@#1}}}
+\def\pcol@fnlayout@c{\global\pcol@scfnotefalse \global\pcol@mgfnotefalse
+ \localcounter{footnote}\nofncounteradjustment}
+\def\pcol@fnlayout@p{\global\pcol@scfnotetrue \global\pcol@mgfnotefalse
+ \globalcounter{footnote}\fncounteradjustment}
+\def\pcol@fnlayout@m{\pcol@fnlayout@p\global\pcol@mgfnotetrue}
+
+\let\multicolumnfootnotes\pcol@fnlayout@c
+\let\singlecolumnfootnotes\pcol@fnlayout@p
+\let\mergedfootnotes\pcol@fnlayout@m
+
+\def\pcol@fntext{%
+ \let\reserved@a\pcol@fntexttop
+ \ifpcol@scfnote \ifnum\pcol@page<\pcol@toppage
+ \let\reserved@a\pcol@fntextother
+ \fi\fi
+ \reserved@a}
+\long\def\pcol@fntexttop#1{%
+ \pcol@Logfn{\pcol@fntexttop{\@thefnmark}}%
+ \insert\footins{\pcol@fntextbody{#1}\penalty\interlinepenalty}}
+\long\def\pcol@fntextother#1{%
+ \global\setbox\pcol@topfnotes\vbox{\unvbox\pcol@topfnotes
+ \penalty\interlinepenalty\pcol@fntextbody{#1}}}
+\long\def\pcol@fntextbody#1{\setbox\@tempboxa\vbox{%
+ \reset@font\footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth\dp\strutbox \floatingpenalty\@MM
+ \hsize \ifpcol@scfnote \textwidth \else \columnwidth \fi
+ \@parboxrestore
+ \protected@edef\@currentlabel{\p@footnote\@thefnmark}%
+ \color@begingroup
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \color@endgroup}%
+ \@tempdima\ht\@tempboxa \advance\@tempdima\dp\@tempboxa
+ \@tempdimb\textheight \advance\@tempdimb-\skip\footins
+ \ifdim\@tempdima>\@tempdimb
+ \setbox\@tempboxa\vbox to\@tempdimb{\unvbox\@tempboxa\vss}%
+ \PackageWarning{paracol}{Too tall footnote}%
+ \fi
+ \box\@tempboxa}
+
+\def\fncounteradjustment{\global\pcol@fncounteradjustmenttrue}
+\def\nofncounteradjustment{\global\pcol@fncounteradjustmentfalse}
+\nofncounteradjustment
+
+\let\pcol@footnoterule\footnoterule
+\let\pcol@@footnote\footnote
+\let\pcol@@footnotemark\footnotemark
+\let\pcol@@footnotetext\footnotetext
+\def\pcol@footnote{\@ifstar{\pcol@adjustfnctr\pcol@ifootnote}\pcol@ifootnote}
+\def\pcol@ifootnote{\global\advance\pcol@nfootnotes\@ne \pcol@@footnote}
+\def\pcol@footnotemark{\@ifstar
+ {\pcol@adjustfnctr{\pcol@ifootnotemark\relax}}%
+ \pcol@ifootnotemark}
+\def\pcol@ifootnotemark{\global\advance\pcol@nfootnotes\@ne
+ \pcol@@footnotemark}
+\def\pcol@adjustfnctr#1{\@ifnextchar[%]
+ {\pcol@iadjustfnctr{#1}}{\pcol@iadjustfnctr{#1}[+1]}}
+\def\pcol@iadjustfnctr#1[#2]{\pcol@calcfnctr#2\@nil
+ \global\c@footnote\@tempcnta \global\advance\c@footnote\m@ne#1}
+\def\pcol@calcfnctr#1#2\@nil{\@tempcnta\c@footnote
+ \def\reserved@a{#1}\def\reserved@b{+}%
+ \ifx\reserved@a\reserved@b \advance\@tempcnta#2\relax
+ \else \def\reserved@b{-}%
+ \ifx\reserved@a\reserved@b \advance\@tempcnta-#2\relax
+ \else \@tempcnta\pcol@footnotebase \advance\@tempcnta#1#2\relax
+ \fi\fi}
+\def\pcol@footnotetext{\@ifstar\pcol@ifootnotetext\pcol@@footnotetext}
+\def\pcol@ifootnotetext{\@ifnextchar[%]
+ \pcol@iifootnotetext{\stepcounter{footnote}\pcol@@footnotetext}}
+\def\pcol@iifootnotetext[#1]{\pcol@calcfnctr#1\@nil
+ \expandafter\pcol@@footnotetext\expandafter[\number\@tempcnta]}
+
+%% Commands for Marginal Notes
+
+\def\pcol@marginpar{\let\pcol@mparoffset\z@ \pcol@@marginpar}
+\long\def\pcol@marginnote[#1]#2[#3]{\endgroup
+ \pcol@mn@warning \global\let\pcol@mn@warning\relax
+ \def\pcol@mparoffset{#3}%
+ \pcol@@marginpar[\marginfont\raggedleftmarginnote#1]%
+ {\marginfont\raggedrightmarginnote#2}}
+\def\pcol@mn@warning{%
+ \PackageWarning{paracol}{\string\margninnote\space is emulated by
+ \string\marginpar.}}
+\def\pcol@xympar{%
+ \ifnum\@floatpenalty<\z@ \global\dimen\@marbox\pcol@mparoffset\relax \fi
+ \pcol@@xympar}
+
+%% Column Swapping
+
+\def\twosided{\@ifnextchar[%]
+ {\pcol@twosided}{\pcol@twosided[pcmb]}}
+\def\pcol@twosided[#1]{%
+ \global\@twosidefalse \global\pcol@swapcolumnfalse
+ \global\pcol@swapmarginparfalse \global\pcol@bg@swapfalse
+ \@tfor\reserved@a:=#1\do{%
+ \@ifundefined{pcol@twosided@\reserved@a}%
+ {\PackageError{paracol}{Unknown two-siding feature \reserved@a}}%
+ {\@nameuse{pcol@twosided@\reserved@a}}}}
+\def\pcol@twosided@p{\global\@twosidetrue}
+\def\pcol@twosided@c{\global\pcol@swapcolumntrue}
+\def\pcol@twosided@m{\global\pcol@swapmarginpartrue}
+\def\pcol@twosided@b{\global\pcol@bg@swaptrue}
+
+\def\swapcolumninevenpages{\global\pcol@swapcolumntrue}
+\def\noswapcolumninevenpages{\global\pcol@swapcolumnfalse}
+
+\def\pcol@swapcolumn#1#2#3#4{%
+ \edef\pcol@colsepid{\number#1}%
+ \ifpcol@swapcolumn
+ \ifodd\c@page\relax #2#1\relax
+ \else
+ #2#4\relax \advance#2-#1\relax \advance#2#3\relax \advance#2-\tw@
+ \edef\pcol@colsepid{\number#2}%
+ \advance#2\@ne
+ \fi
+ \else #2#1\relax
+ \fi}
+
+\def\marginparthreshold#1{\@tempcnta#1\relax
+ \xdef\pcol@mpthreshold@l{\number\@tempcnta}%
+ \@ifnextchar[%]
+ \pcol@marginparthreshold{\xdef\pcol@mpthreshold@r{\number\@tempcnta}}}
+\def\pcol@marginparthreshold[#1]{\@tempcnta#1\relax
+ \xdef\pcol@mpthreshold@r{\number\@tempcnta}}
+\marginparthreshold{1}
+
+%% Commands for Text Coloring
+
+\def\columncolor{\def\pcol@colorcommand{\string\columncolor}%
+ \@ifnextchar[%]
+ \pcol@xcolumncolor\pcol@ycolumncolor}
+\def\pcol@xcolumncolor[#1]#2{\pcol@columncolor{\color[#1]{#2}}}
+\def\pcol@ycolumncolor#1{\pcol@columncolor{\color{#1}}}
+\def\pcol@columncolor#1{\@ifnextchar[%]
+ {\pcol@icolumncolor{#1}}{\pcol@icolumncolor{#1}[\number\pcol@currcol]}}
+\def\normalcolumncolor{\def\pcol@colorcommand{\string\normalcolumncolor}%
+ \@ifnextchar[%]
+ {\pcol@icolumncolor\normalcolor}%
+ {\pcol@icolumncolor\normalcolor[\number\pcol@currcol]}}
+\def\pcol@icolumncolor#1[#2]{%
+ \@tempswafalse
+ \ifpcol@inner \@tempswatrue \fi
+ \ifinner \@tempswatrue \fi
+ \ifmmode \@tempswatrue \fi
+ \ifx\set@color\relax
+ \PackageWarning{paracol}{\pcol@colorcommand\space is not effective
+ without some coloring package}%
+ \else\if@tempswa
+ \PackageWarning{paracol}{\pcol@colorcommand\space is not effective
+ when not in outer par mode}%
+ \else
+ \begingroup
+ \let\@elt\relax
+ \ifx\pcol@paracol\paracol
+ \pcol@iicolumncolor{#1}{#2}%
+ \else\ifnum#2=\pcol@currcol
+ \def\@elt##1{\reset@color}\pcol@scancst@shadow
+ \pcol@iicolumncolor{#1}{#2}%
+ \def\@elt##1{\def\current@color{##1}\let\aftergroup\@gobble
+ \pcol@set@color}%
+ \pcol@scancst@shadow
+ \setbox\@tempboxa\vbox{\let\set@color\pcol@set@color
+ \let\aftergroup\@gobble #1}%
+ \ht\@tempboxa1sp \dp\@tempboxa1sp \wd\@tempboxa\z@\relax
+ \insert\pcol@colorins{\box\@tempboxa}%
+ \ifvmode\if@nobreak \nobreak \fi\fi
+ \else
+ \pcol@iicolumncolor{#1}{#2}%
+ \pcol@currcol#2\relax
+ \ifvoid\pcol@ccuse{@box}%
+ \@next\@currbox\@freelist{}\pcol@ovf
+ \pcol@ccxdef{\@currbox}%
+ \fi
+ \global\setbox\pcol@ccuse{@box}\vbox{\let\set@color\pcol@set@color
+ \let\aftergroup\@gobble #1}%
+ \fi\fi
+ \endgroup
+ \fi\fi
+ \ignorespaces}
+\def\pcol@iicolumncolor#1#2{{\let\set@color\relax #1%
+ \expandafter\xdef\csname pcol@columncolor#2\endcsname{\current@color}}}
+\def\pcol@scancst@shadow{%
+ \pcol@ifccdefined{\@elt{\pcol@ccuse{}}}\relax
+ \pcol@colorstack@shadow}
+
+\def\pcol@mcpushlimit{1000}
+\def\pcol@set@color@push{\pcol@set@color
+ \ifmmode\else\ifinner \pcol@innertrue \fi\fi
+ \ifpcol@inner\else
+ \ifmmode
+ \global\advance\pcol@mcid\@ne
+ \ifnum \pcol@mcid>\pcol@mcpushlimit\relax
+ \PackageError{paracol}{Too many coloring commands in math mode}\@ehb
+ \global\pcol@mdid\@ne
+ \fi
+ \@tempdima\pcol@mcid sp\relax
+ \expandafter\aftergroup
+ \csname pcol@reset@color@mpop@\number\pcol@mcid\endcsname
+ \expandafter\xdef
+ \csname pcol@reset@color@mpop@\number\pcol@mcid\endcsname
+ {\noexpand\pcol@reset@color@mpop{\number\pcol@mcid}}%
+ \else
+ \aftergroup\pcol@reset@color@pop \@tempdima\z@
+ \fi
+ \let\pcol@elt@save\@elt \let\@elt\relax
+ \edef\pcol@colorstack@shadow{\pcol@colorstack@shadow\@elt{\current@color}}%
+ \let\@elt\pcol@elt@save
+ \setbox\@tempboxa\vbox{\let\aftergroup\@gobble \pcol@set@color}%
+ \ht\@tempboxa1sp \dp\@tempboxa\z@ \wd\@tempboxa\@tempdima
+ \insert\pcol@colorins{\box\@tempboxa}\ifhmode \pcol@fcwhyphenate \fi
+ \ifvmode\if@nobreak \nobreak \fi\fi
+ \fi}
+
+\def\pcol@reset@color@pop{%
+ \ifpcol@output
+ \setbox\@tempboxa\vbox{\reset@color}%
+ \ht\@tempboxa\z@ \dp\@tempboxa\z@ \wd\@tempboxa\z@
+ \insert\pcol@colorins{\box\@tempboxa}%
+ \ifvmode\if@nobreak \nobreak \fi\fi
+ \fi}
+\def\pcol@reset@color@mpop#1{%
+ \setbox\@tempboxa\vbox{\reset@color}%
+ \ht\@tempboxa\z@ \dp\@tempboxa\z@ \wd\@tempboxa#1sp\relax
+ \insert\pcol@colorins{\box\@tempboxa}%
+ \ifvmode\if@nobreak \nobreak \fi\fi
+}
+
+\def\coloredwordhyphenated{\def\pcol@fcwhyphenate{\hskip\z@}}
+\def\nocoloredwordhyphenated{\let\pcol@fcwhyphenate\relax}
+\coloredwordhyphenated
+
+%% Commands for Column-Separating Rule Color and Background Painting
+
+\def\colseprulecolor{\def\pcol@colorcommand{\string\colseprulecolor}%
+ \@ifnextchar[%]
+ \pcol@defcseprulecolor@x\pcol@defcseprulecolor@y}
+\def\pcol@defcseprulecolor@x[#1]#2{\pcol@defcseprulecolor{\color[#1]{#2}}}
+\def\pcol@defcseprulecolor@y#1{\pcol@defcseprulecolor{\color{#1}}}
+\def\pcol@defcseprulecolor#1{\@ifnextchar[%]
+ {\pcol@defcseprulecolor@i{#1}}{\pcol@defcseprulecolor@i{#1}[]}}
+\def\normalcolseprulecolor{%
+ \def\pcol@colorcommand{\string\normalcolseprulecolor}%
+ \@ifnextchar[%]
+ {\pcol@defcseprulecolor@i\normalcolor}%
+ {\pcol@defcseprulecolor@i\normalcolor[]}}
+\def\pcol@defcseprulecolor@i#1[#2]{%
+ \ifx\set@color\relax
+ \PackageWarning{paracol}{\pcol@colorcommand\space is not effective
+ without some coloring package}%
+ \else
+ {\let\set@color\relax #1}%
+ \global\@namedef{pcol@colseprulecolor#2}{#1}%
+ \fi}
+\gdef\pcol@colseprulecolor{\normalcolor}
+
+\def\backgroundcolor#1{\@tempswatrue
+ \let\pcol@backgroundcolor@e\pcol@backgroundcolor@w
+ \pcol@backgroundcolor#1\@nil}
+\def\nobackgroundcolor#1{\@tempswafalse
+ \let\pcol@backgroundcolor@e\pcol@backgroundcolor@z
+ \pcol@backgroundcolor#1\@nil}
+\def\pcol@backgroundcolor#1{%
+ \@ifundefined{pcol@bg@@#1}%
+ {\PackageError{paracol}%
+ {Invalid background coloring region identifier #1}%
+ \def\pcol@bg@region{xx}\pcol@backgroundcolor@e}%
+ {\def\pcol@bg@region{#1}%
+ \@ifnextchar[%]
+ \pcol@backgroundcolor@i \pcol@backgroundcolor@ii}}
+\def\pcol@backgroundcolor@i[#1]{%
+ \@ifundefined{pcol@bg@mayhavecol@\pcol@bg@region}%
+ {\PackageError{paracol}%
+ {Column number \number#1 is not effective for background coloring region
+ \pcol@bg@region}%
+ \def\pcol@bg@region{xx}\pcol@backgroundcolor@e}%
+ {\edef\pcol@bg@region{\pcol@bg@region @#1}%
+ \pcol@backgroundcolor@ii}}
+\def\pcol@backgroundcolor@ii{%
+ \if@tempswa
+ \ifx\set@color\relax
+ \PackageWarning{paracol}{\string\backgroundcolor\space is not effective
+ without some coloring package}%
+ \let\reserved@b\pcol@backgroundcolor@w
+ \else
+ \let\reserved@b\pcol@backgroundcolor@iii
+ \@cons\pcol@bg@defined{{\pcol@bg@region}}%
+ \fi
+ \else
+ \let\reserved@b\pcol@backgroundcolor@z
+ \fi
+ \reserved@b}
+\def\pcol@backgroundcolor@iii{%
+ \pcol@bg@defext{l}\z@ \pcol@bg@defext{r}\z@
+ \pcol@bg@defext{t}\z@ \pcol@bg@defext{b}\z@
+ \@ifnextchar(%)
+ \pcol@backgroundcolor@iv \pcol@backgroundcolor@x}
+\def\pcol@backgroundcolor@iv(#1,#2){%
+ \pcol@bg@defext{l}{#1}\pcol@bg@defext{r}{#1}%
+ \pcol@bg@defext{t}{#2}\pcol@bg@defext{b}{#2}%
+ \@ifnextchar(%)
+ \pcol@backgroundcolor@v \pcol@backgroundcolor@x}
+\def\pcol@backgroundcolor@v(#1,#2){%
+ \pcol@bg@defext{r}{#1}\pcol@bg@defext{b}{#2}%
+ \pcol@backgroundcolor@x}
+\def\pcol@backgroundcolor@x#1\@nil{\begingroup
+ \let\set@color\pcol@backgroundcolor@y \color}
+\def\pcol@backgroundcolor@y{%
+ \expandafter\xdef\csname pcol@bg@color@\pcol@bg@region\endcsname
+ {\current@color}%
+ \endgroup}
+\def\pcol@backgroundcolor@z#1\@nil{\pcol@backgroundcolor@wi[]{}}
+\def\pcol@backgroundcolor@w#1\@nil{\@ifnextchar[%]
+ \pcol@backgroundcolor@wi{\pcol@backgroundcolor@wi[]}}
+\def\pcol@backgroundcolor@wi[#1]#2{%
+ \expandafter\global\expandafter\let
+ \csname pcol@bg@color@\pcol@bg@region\endcsname\relax}
+
+\def\pcol@bg@mayhavecol@c{}
+\def\pcol@bg@mayhavecol@C{}
+\def\pcol@bg@mayhavecol@g{}
+\def\pcol@bg@mayhavecol@G{}
+
+\def\pcol@bg@defext#1#2{%
+ \@tempdima#2\relax
+ \expandafter\xdef\csname pcol@bg@ext@#1@\pcol@bg@region\endcsname{%
+ \number\@tempdima sp}}
+
+\def\resetbackgroundcolor{{%
+ \let\@elt\pcol@resetbackgroundcolor \pcol@bg@defined
+ \gdef\pcol@bgdefined{}}}
+\def\pcol@resetbackgroundcolor#1{%
+ \expandafter\global\expandafter\let\csname pcol@bg@color@#1\endcsname\relax}
+\gdef\pcol@bg@defined{}
+
+%% Closing Environment
+
+\def\endparacol{\pcol@par
+ \edef\pcol@lastcol{\number\pcol@currcol}%
+ \pcol@nextcol\z@ \pcol@switchcol
+ \pcol@lastpagetrue
+ \ifpcol@mgfnote \pcol@flushclear\voidb@x
+ \else \pcol@flushclear\pcol@topfnotes
+ \fi
+ \pcol@invokeoutput\pcol@op@end
+ \global\columnwidth\textwidth
+ \global\@twocolumnfalse
+ \global\topskip\pcol@topskip
+ \ifpcol@fncounteradjustment
+ \global\c@footnote\pcol@footnotebase
+ \global\advance\c@footnote\pcol@nfootnotes
+ \fi}
+
+\def\pcol@restoreeveryvbox{%
+ \expandafter\def\expandafter\reserved@a\expandafter{\the\pcol@everyvbox}%
+ \def\reserved@b{\pcol@dummytoken}%
+ \ifx\reserved@a\reserved@b\else \global\everyvbox\pcol@everyvbox \fi}
diff --git a/Master/texmf-dist/tex/latex/paracol/paracol.sty b/Master/texmf-dist/tex/latex/paracol/paracol.sty
index fb4c1a7ae23..1302514cc22 100644
--- a/Master/texmf-dist/tex/latex/paracol/paracol.sty
+++ b/Master/texmf-dist/tex/latex/paracol/paracol.sty
@@ -1,15 +1,17 @@
%% Style file `paracol'.
%% Copyright (C) 2005-2018
-%% Hiroshi Nakashima <h.nakashima@DOMAIN; DOMAIN=media.kyoto-u.ac.jp>
-%% (Kyoto University)
+%% Hiroshi Nakashima (Kyoto University, deceased)
+%% Copyright (C) 2024
+%% Markus Kurtz
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License distributed from CTAN
%% archives in directory macros/latex/base/lppl.txt; either
%% version 1 of the License, or any later version.
-\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\ProvidesPackage{paracol}
-[2018/12/31 v1.35 ]
+\NeedsTeXFormat{LaTeX2e}[2018-04-01]
+\DeclareRelease{1.35}{2018-12-31}{paracol-2018-12-31.sty}
+\DeclareCurrentRelease{1.36}{2024-10-22}
+\ProvidesPackage{paracol}[2024/10/22 1.36 typeset columns in parallel]
%% Register Declaration
@@ -2054,14 +2056,21 @@
\ifpcol@scfnote
\def\footnoterule{{\columnwidth\textwidth \pcol@footnoterule}}%
\fi
- \let\@footnotetext\pcol@fntext
+ \@ifundefined{H@@footnotetext}{%
+ \let\@footnotetext\pcol@fntext
+ }{%
+ \let\H@@footnotetext\pcol@fntext
+ }
\let\pcol@@marginpar\marginpar \let\marginpar\pcol@marginpar
\let\@mn@@marginnote\pcol@marginnote
\let\pcol@@xympar\@xympar \let\@xympar\pcol@xympar
\def\pcol@twosided[#1]{\pcol@ignore\twosided}%
\def\swapcolumninevenpages{\pcol@ignore\swapcolumninevenpages}%
\def\noswapcolumninevenpages{\pcol@ignore\noswapcolumninevenpages}%
- \def\footnotelayout#1{\pcol@ignore\footnotelayout}%
+ \def\footnoteplacement#1{\pcol@ignore\footnoteplacement}%
+ \ifx\footnotelayout\footnoteplacement
+ \def\footnotelayout#1{\pcol@ignore\footnotelayout}%
+ \fi
\def\multicolumnfootnotes{\pcol@ignore\multicolumnfootnotes}%
\def\singlecolumnfootnotes{\pcol@ignore\singlecolumnfootnotes}%
\def\mergedfootnotes{\pcol@ignore\mergedfootnotes}%
@@ -2307,7 +2316,15 @@
\expandafter\let\expandafter\reserved@a\csname pcol@thectr@#10\endcsname
\ifx\reserved@a\relax\else
\expandafter\let\csname the#1\endcsname\reserved@a
- \fi}
+ \fi
+ \@ifundefined{theH#1}{}{%
+ \expandafter\def\csname theH#1\expandafter\expandafter\expandafter\endcsname
+ \expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter\pcol@thecurrcol\csname theH#1\endcsname
+ }%
+ }%
+}
+\def\pcol@thecurrcol{column\number\pcol@currcol.}
\def\pcol@loadctrelt#1#2{\@namedef{pcol@ctr@#1}{#2}}
\def\pcol@storecounters{\pcol@sscounters\pcol@storectrelt}
@@ -2424,7 +2441,9 @@
\let\@elt\pcol@setctrelt
\csname pcol@counters\number\pcol@currcol\endcsname
\let\@elt\pcol@aconlyelt \pcol@aconly \let\@elt\relax
- \@nameuse{pcol@colpream\ifpcol@sptextstart-1\else\number\pcol@currcol\fi}}
+ \@ifundefined{pcol@lastcol}{%
+ \@nameuse{pcol@colpream\ifpcol@sptextstart-1\else\number\pcol@currcol\fi}
+ }{}}
\def\pcol@visitallcols#1{\begingroup
\@tempcnta\z@ \@tempcntb\pcol@currcol
@@ -2531,7 +2550,7 @@
%% Commands for Footnotes
-\def\footnotelayout#1{\@ifundefined{pcol@fnlayout@#1}%
+\def\footnoteplacement#1{\@ifundefined{pcol@fnlayout@#1}%
{\PackageError{paracol}{Unknown footnote layout specifier #1}}%
{\@nameuse{pcol@fnlayout@#1}}}
\def\pcol@fnlayout@c{\global\pcol@scfnotefalse \global\pcol@mgfnotefalse
@@ -2543,6 +2562,16 @@
\let\multicolumnfootnotes\pcol@fnlayout@c
\let\singlecolumnfootnotes\pcol@fnlayout@p
\let\mergedfootnotes\pcol@fnlayout@m
+\@ifundefined{footnotelayout}{%
+ \let\footnotelayout\footnoteplacement
+ \AddToHook{package/footmisc/before}{\let\footnotelayout\relax}%
+}{}
+\AddToHook{package/footmisc/before}{\PackageNoteNoLine{paracol}{%
+ With footmisc loaded, paracol's
+ \string\footnotelayout\space will be unavailable. Please use the
+ equivalent \string\footnoteplacement\space instead.\MessageBreak
+ Also note, that paracol's and footmisc's footnote handling may crash%
+}}
\def\pcol@fntext{%
\let\reserved@a\pcol@fntexttop
@@ -2560,13 +2589,16 @@
\reset@font\footnotesize
\interlinepenalty\interfootnotelinepenalty
\splittopskip\footnotesep
- \splitmaxdepth\dp\strutbox \floatingpenalty\@MM
+ \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
\hsize \ifpcol@scfnote \textwidth \else \columnwidth \fi
- \@parboxrestore
- \protected@edef\@currentlabel{\p@footnote\@thefnmark}%
+ \def\@currentcounter{footnote}%
+ \protected@edef\@currentlabel{%
+ \csname p@footnote\endcsname\@thefnmark
+ }%
\color@begingroup
- \@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \par
\color@endgroup}%
\@tempdima\ht\@tempboxa \advance\@tempdima\dp\@tempboxa
\@tempdimb\textheight \advance\@tempdimb-\skip\footins
diff --git a/Master/texmf-dist/tex/latex/pas-tableur/pas-tableur.sty b/Master/texmf-dist/tex/latex/pas-tableur/pas-tableur.sty
index a2de8687f22..84928cd92d6 100644
--- a/Master/texmf-dist/tex/latex/pas-tableur/pas-tableur.sty
+++ b/Master/texmf-dist/tex/latex/pas-tableur/pas-tableur.sty
@@ -1,6 +1,6 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
-% pas-tableur.sty v2.05 encodage : UTF8 %
+% pas-tableur.sty v2.06 encodage : UTF8 %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -8,8 +8,8 @@
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
-\def\fileversion{2.04}
-\def\filedate{2023/04/16}
+\def\fileversion{2.06}
+\def\filedate{2024/09/14}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{pas-tableur}[%
\filedate\space v\fileversion\space
@@ -102,7 +102,14 @@
%
%==> Macro etoilee : \tableur*{A/<l1>,B/<l2>,...}. Tableur avec colonnes de largeurs differentes
%
-\newcommand{\tableur@star}[2][1]
+% Modifiée dans la version 2.06 sur la suggestion de Emiel van Miltenburg
+
+\newcommand{\tableur@star}[2][1]
+ {
+ \IfSubStr{#2}{,}{\tableur@star@columns[#1]{#2}}{\tableur@star@onecolumn[#1]{#2}}
+ }
+
+\newcommand{\tableur@star@columns}[2][1]
{%
\xdef\list@of@col{#2}%
% Placement de la premiere cellule en-tête
@@ -139,7 +146,39 @@
}%
}%
\fi%
- } % --> Fin de \tableur*
+ }
+
+\newcommand{\tableur@star@onecolumn}[2][1]
+ {%
+ % Placement de la premiere cellule en-tête
+ \StrBefore{#2}{/}[\first@name] % Récupère la partie avant "/"
+ \StrBehind{#2}{/}[\first@width] % Récupère la partie après "/"
+ \pastab@draw@cell{\first@width}{\first@name}{0}{}{\first@name}
+ % Placement des en-têtes de lignes
+ \pastab@draw@cell{\numline@width}{numline1}{2}{\first@name.south west}{1}
+ \ifnum#1>1%
+ \foreach \num@line [remember=\num@line as \lastnum (initially 1)] in {2,...,#1}
+ {%
+ \pastab@draw@cell{\numline@width}{numline\num@line}{3}{numline\lastnum.south east}{\num@line}%
+ }%
+ \fi%
+ % Trace de la grille
+ \foreach \name/\w in {#2}
+ {%
+ \pastableur@grid{\w}{\name}{1}{\name.south}%
+ }%
+ \ifnum#1>1%
+ \foreach\numline [remember=\numline as \lastnumline (initially 1)] in {2,...,#1}
+ {%
+ \foreach \name/\w in {#2}
+ {%
+ \pastableur@grid{\w}{\name}{\numline}{cell\name-\lastnumline.south}%
+ }%
+ }%
+ \fi%
+ }
+
+% --> Fin de \tableur*
%
%==> Macro non etoilee : \tableur{A,B,C,...} ou \tableur{A-C}
%
@@ -302,7 +341,6 @@
\newcommand*\multiSelec[2]
{%
\fill[blueSelec,opacity=0.5] ($(cell#1.north west)+(0.25pt,-0.25pt)$) rectangle ($(cell#2.south east)+(-0.25pt,0.25pt)$);%
- \draw[very thick] (cell#1.south west) rectangle (cell#1.north east);%
\fill[black] ($(cell#2.south east)+(-0.5pt,0.5pt)$) rectangle +(3pt,-3pt);%
%
%==> On colorie les en-têtes "colonnes"
@@ -328,10 +366,51 @@
\pastableur@colorcell{numline\i}{0}
\node[celhead,minimum width=\numline@width,minimum height=\line@height] at (numline\i) {\helvbx\i};%
}%
+ \draw[very thick] (cell#1.south west) rectangle (cell#1.north east);%
}% fin de \multiSelec
%
%
%
+
+%
+% Selection de plusieurs cellules : \multimultiSelec{A-1}{A-2}{A-3}
+% Proposition de Emiel van Miltenburg pour la version 2.06 le 2024/09/14
+%
+\newcommand*\multimultiSelec[3]
+{%
+ \fill[blueSelec,opacity=0.5] ($(cell#1.north west)+(0.25pt,-0.25pt)$) rectangle ($(cell#3.south east)+(-0.25pt,0.25pt)$);%
+
+ \fill[black] ($(cell#3.south east)+(-0.5pt,0.5pt)$) rectangle +(3pt,-3pt);%
+ %
+ %==> On colorie les en-têtes "colonnes"
+ %
+ \StrChar{#1}{1}[\str@start] % par exemple, "G"
+ \StrChar{#2}{1}[\str@end] % par exemple, "L"
+ \StrBetween{\col@names}{\str@start}{\str@end}[\str@col] % retourne par exemple "HIJK"
+ \edef\str@col{\str@start\str@col\str@end} % retourne alors "GHIJKL"
+ \StrLen{\str@col}[\nb@columns] % nombre d'en-têtes "colonnes" \`a colorier
+ \foreach \i in {1,...,\nb@columns}
+ {%
+ \StrChar{\str@col}{\i}[\name]%
+ \pastableur@colorcell{\name}{1}
+ \node at (\name) {\helvbx\name};%
+ }%
+ %
+ %==> On colorie les en-têtes "lignes"
+ %
+ \StrGobbleLeft{#1}{2}[\first@num]%
+ \StrGobbleLeft{#2}{2}[\second@num]%
+ \foreach \i in {\first@num,...,\second@num}
+ {%
+ \pastableur@colorcell{numline\i}{0}
+ \node[celhead,minimum width=\numline@width,minimum height=\line@height] at (numline\i) {\helvbx\i};%
+ }%
+ \draw[very thick] (cell#2.south west) rectangle (cell#1.north east);%
+}% fin de \multimultiSelec
+%
+%
+%
+
\newlength\pastableur@decal
\newcommand{\pastableur@colorcell}[2] % #1 : name, #2 : 0=en-tetes "lignes" / 1=en-tetes "colonnes"
{%
diff --git a/Master/texmf-dist/tex/latex/passopt/passopt.sty b/Master/texmf-dist/tex/latex/passopt/passopt.sty
index d74c698d27a..3fb7a40605a 100644
--- a/Master/texmf-dist/tex/latex/passopt/passopt.sty
+++ b/Master/texmf-dist/tex/latex/passopt/passopt.sty
@@ -8,7 +8,7 @@
% The latest version of this license is in
% https://creativecommons.org/licenses/by/4.0/legalcode
\NeedsTeXFormat{LaTeX2e}[2021/11/15]
-\ProvidesExplPackage{passopt}{2024/07/17}{1.01a}
+\ProvidesExplPackage{passopt}{2024/10/22}{1.01c}
{Passing options to packages or classes}
\cs_generate_variant:Nn \tl_if_blank:nTF { v }
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty
index 856c960262e..7dbb99bc1fb 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty
@@ -24,7 +24,7 @@
%% This file has the LPPL maintenance status "maintained".
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{color-ltx}[2024-09-02 v0.96k
+\ProvidesPackage{color-ltx}[2024-12-20 v0.96o
Standard LaTeX Color (patched for l3color, part of pdfmanagement-testphase, original version 2022/01/06 v1.3d) (DPC)]
\edef\Gin@codes{%
\catcode`\noexpand\^^A\the\catcode`\^^A\relax
@@ -186,7 +186,7 @@
\InputIfFileExists{mathcolor.ltx}{}{}
\def\color@setgroup{\begingroup\set@color}
\let\color@begingroup\begingroup
-\def\color@endgroup{\endgraf\endgroup}
+\def\color@endgroup{\endgraf\@endpefalse\endgroup}
\def\color@hbox{\hbox\bgroup\color@begingroup}
\def\color@vbox{\vbox\bgroup\color@begingroup}
\def\color@endbox{\color@endgroup\egroup}
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
index a735e6b8f92..c0a4cf94ad0 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
@@ -19,7 +19,7 @@
%
% for those people who are interested.
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2024-09-02}{0.96k}
+\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2024-12-20}{0.96o}
{temporary patches for the colorspace package to test pdfresource management ... UF}
@@ -72,7 +72,7 @@
\RemoveFromHook{begindocument}[colorspace]
-\hook_gput_code:nnn {enddocument} {pdf}
+\hook_gput_code:nnn {begindocument/end} {pdf}
{
\def\spc@elt#1#2
{
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def
index 6e140387604..bd7939ac683 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: hyperref-generic.dtx
-\ProvidesFile{hgeneric-testphase.def}[2024-09-02 v0.96k %
+\ProvidesFile{hgeneric-testphase.def}[2024-12-20 v0.96o %
generic Hyperref driver for the LaTeX PDF management testphase bundle]
\RequirePackage{etoolbox} %why?
@@ -399,7 +399,7 @@
%\tl_set:cn {@#1}{#2}
\AddToDocumentProperties[hyperref]{#1}{#2}
}
-\cs_generate_variant:Nn \__hyp_store_metadata:nn {en,ne,ee}
+\cs_generate_variant:Nn \__hyp_store_metadata:nn {en,ne,ee,no,eo}
\hook_new:n{hyp/link/cite}
\keys_define:nn { hyp }
{
@@ -471,6 +471,7 @@
\cs_generate_variant:Nn \__hyp_property_record:nn {ee}
\box_new:N \l__hyp_tmpa_box
\tl_new:N \l__hyp_tmpa_tl
+\tl_new:N \l__hyp_tmpb_tl
\seq_new:N \l__hyp_tmpa_seq
\int_new:N \l__hyp_tmpa_int
\str_new:N \l__hyp_tmpa_str
@@ -525,6 +526,8 @@
{ Go~to~destination~#1 }
{ \l__hyp_text_enc_info_print_tl }
\l__hyp_link_Contents_tl
+ \pdfannot_dict_put:nne {link/GoTo}{Contents}
+ {\l__hyp_link_Contents_tl}
}
\socket_new_plug:nnn {hyp/link/URI/Contents}{default}
{
@@ -532,6 +535,8 @@
{ #1 }
{ \l__hyp_text_enc_info_print_tl }
\l__hyp_link_Contents_tl
+ \pdfannot_dict_put:nne {link/URI}{Contents}
+ {\l__hyp_link_Contents_tl}
}
\socket_assign_plug:nn{hyp/link/GoTo/Contents}{default}
\socket_assign_plug:nn{hyp/link/URI/Contents}{default}
@@ -600,6 +605,7 @@
{
\__hyp_text_pdfstring:noN { #1 }{ \l__hyp_text_enc_info_print_tl } #2
}
+\cs_generate_variant:Nn \__hyp_text_pdfstring_info:nN {eN,oN}
\cs_new_protected:Npn\__hyp_PageLabels_gpush:
{
\pdfmanagement_add:nne {Catalog} {PageLabels}{<</Nums[\HyPL@Labels]>>}
@@ -724,8 +730,6 @@
\group_begin:
\tl_set:Nn \l_hyp_current_dest_name_tl {#2}
\socket_use:nnn{hyp/link/GoTo/Contents}{#2}{#3}
- \pdfannot_dict_put:nne {link/GoTo}{Contents}
- {\l__hyp_link_Contents_tl}
\hook_use:n {hyp/link/#1}
\__hyp_link_goto_begin:nw {#2}#3\Hy@xspace@end
\__hyp_link_goto_end:
@@ -749,6 +753,7 @@
\Hy@VerboseLinkStart{#1}{#2}% only for debug
\group_begin:
\tl_set:Nn \l_hyp_current_dest_name_tl {#2}
+ \socket_use:nnn{hyp/link/GoTo/Contents}{#2}{}
\hook_use:n {hyp/link/#1}
\__hyp_link_goto_begin:nw {#2}
}
@@ -796,7 +801,6 @@
\pdfdict_put:nnn{l_hyp/annot/A/URI}{IsMap}{true}
}
\socket_use:nn{hyp/link/URI/Contents}{#2}
- \pdfannot_dict_put:nne {link/URI}{Contents}{\l__hyp_link_Contents_tl}
\cs_set_eq:NN \# \c_hash_str
\cs_set_eq:NN \% \c_percent_str
\Hy@safe@activestrue
@@ -2213,13 +2217,16 @@
}
\regex_new:N\l__hyp_optlang_regex
\regex_set:Nn\l__hyp_optlang_regex {\A\[([A-Za-z\-]+)\](.*)}
+\cs_generate_variant:Nn\clist_item:nn{on}
\cs_new_protected:Npn \__hyp_setup_info_key:nn #1 #2
{
\keys_define:nn { hyp }
{
pdf#1 .code:n =
{
- \tl_if_blank:nTF {##1}
+ \tl_set:Ne\l__hyp_tmpa_tl {\text_expand:n{##1}}
+ \__hyp_store_metadata:no {pdf#1}{\l__hyp_tmpa_tl}
+ \tl_if_empty:NTF \l__hyp_tmpa_tl
{
\str_case:nnF { #1 }
{
@@ -2239,45 +2246,44 @@
}
}
{
- \tl_set:Ne\l__hyp_tmpa_tl {\clist_item:nn{##1}{1}}
+ \tl_set:Ne\l__hyp_tmpb_tl {\clist_item:on{\l__hyp_tmpa_tl}{1}}
\exp_args:NNV
- \regex_extract_once:NnN \l__hyp_optlang_regex \l__hyp_tmpa_tl\l__hyp_tmpa_seq
+ \regex_extract_once:NnN \l__hyp_optlang_regex \l__hyp_tmpb_tl\l__hyp_tmpa_seq
\seq_if_empty:NTF\l__hyp_tmpa_seq
{
- \__hyp_text_pdfstring_info:nN {##1}\l__hyp_tmpa_str
+ \__hyp_text_pdfstring_info:oN {\l__hyp_tmpa_tl}\l__hyp_tmpa_str
}
{
- \exp_args:Ne
- \__hyp_text_pdfstring_info:nN {\seq_item:Nn \l__hyp_tmpa_seq{3}}\l__hyp_tmpa_str
+ \__hyp_text_pdfstring_info:eN {\seq_item:Nn \l__hyp_tmpa_seq{3}}\l__hyp_tmpa_str
}
\str_if_eq:VnF\l__hyp_tmpa_str{<FEFF>}
{
\pdfmanagement_add:nne {Info}{#2}{\l__hyp_tmpa_str}
}
}
- \__hyp_store_metadata:nn {pdf#1}{##1}
}
}
\keys_define:nn { hyp / info }
{
#2 .code:n =
{
+ \tl_set:Ne\l__hyp_tmpa_tl {\text_expand:n{##1}}
+ \__hyp_store_metadata:eo {pdf\str_lowercase:n{#1}}{\l__hyp_tmpa_tl}
\tl_if_blank:nTF {##1}
{
\pdfmanagement_remove:nn {Info}{#2}
}
{
- \__hyp_text_pdfstring_info:nN {##1}\l__hyp_tmpa_str
+ \__hyp_text_pdfstring_info:oN {\l__hyp_tmpa_tl}\l__hyp_tmpa_str
\str_if_eq:VnF\l__hyp_tmpa_str{<FEFF>}
{
\pdfmanagement_add:nne {Info}{#2}{\l__hyp_tmpa_str}
}
}
- \exp_args:Ne \__hyp_store_metadata:nn {pdf\str_lowercase:n{#1}}{##1}
}
,unknown .code:n =
{
- \__hyp_text_pdfstring_info:nN {##1}\l__hyp_tmpa_str
+ \__hyp_text_pdfstring_info:eN {##1}\l__hyp_tmpa_str
\str_if_eq:VnF\l__hyp_tmpa_str{<FEFF>}
{
\exp_args:Nno
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def
index 4ce335c9bad..2e481a08b33 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-dvipdfmx.def}{2024-09-02}{}
+ {l3backend-testphase-dvipdfmx.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx}
\cs_generate_variant:Nn \__kernel_backend_literal:n { e }
\cs_generate_variant:Nn \__pdf_backend:n { e }
@@ -152,7 +152,6 @@
\cs_new_protected:Npn \__pdf_backend_PageResources_obj_gpush: {}
\bool_new:N \l__pdf_backend_xform_bool
-
\cs_set_protected:Npn \__pdf_backend_bdcobject:nn #1 #2 % #1 eg. Span, #2: object name
{
\int_gincr:N \g__pdf_backend_name_int
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def
index 221bea40993..73c61b79dd1 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-dvips.def}{2024-09-02}{}
+ {l3backend-testphase-dvips.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvips}
\cs_generate_variant:Nn \__kernel_backend_postscript:n { e }
\cs_generate_variant:Nn \__pdf_backend_pdfmark:n { e }
@@ -134,6 +134,8 @@
{
\__pdf_backend_pdfmark:n{/#1~<<#2>>~/BDC}
}
+\cs_set_eq:NN \__pdf_backend_bdc_contobj:nn \__pdf_backend_bdc:nn
+\cs_set_eq:NN \__pdf_backend_bdc_contstream:nn \__pdf_backend_bdc:nn
\bool_if:NT\l__pdfmanagement_delayed_shipout_bool
{
@@ -163,7 +165,6 @@
\cs_new_protected:Npn \__pdf_backend_PageResources_gpush:n #1 {}
-
\cs_new_protected:Npn \__pdf_backend_Names_gpush:nn #1 #2 {}
\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:nn #1 #2
{
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def
index bc25aa4f8f9..51e50756d47 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-dvisvgm.def}{2024-09-02}{}
+ {l3backend-testphase-dvisvgm.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm}
\bool_if:NT \l__pdfmanagement_delayed_shipout_bool
{
@@ -106,6 +106,9 @@
\bool_new:N \l__pdf_backend_xform_bool
\cs_set_protected:Npn \__pdf_backend_bdc:nn #1 #2 % #1 eg. Span, #2: dict_content
{}
+\cs_set_eq:NN \__pdf_backend_bdc_contobj:nn \__pdf_backend_bdc:nn
+\cs_set_eq:NN \__pdf_backend_bdc_contstream:nn \__pdf_backend_bdc:nn
+
\bool_if:NT\l__pdfmanagement_delayed_shipout_bool
{
\cs_set_protected:Npn \__pdf_backend_shipout_bdc:ee #1 #2 % #1 eg. Span, #2: dict_content
@@ -122,7 +125,6 @@
\cs_new_protected:Npn \__pdf_backend_PageResources_gpush:n #1 {}
-
\cs_new_protected:Npn \__pdf_backend_Names_gpush:nn #1 #2 {}
\cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:nn #1 #2
{}
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def
index 4795f4635c8..048b06b69a2 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-luatex.def}{2024-09-02}{}
+ {l3backend-testphase-luatex.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)}
\cs_generate_variant:Nn \__kernel_backend_literal_page:n { e }
\bool_if:NT \l__pdfmanagement_delayed_shipout_bool
@@ -204,7 +204,6 @@
}
}
\bool_new:N \l__pdf_backend_xform_bool
-
\cs_set_protected:Npn \__pdf_backend_bdcobject:nn #1 #2 % #1 eg. Span, #2: object name
{
\int_gincr:N \g__pdf_backend_name_int
@@ -267,13 +266,7 @@
\__kernel_backend_literal_page:n { /#1~<<#2>>~BDC }
}
- \cs_set_protected:Npn \__pdf_backend_bdc:nn #1 #2
- {
- \bool_if:NTF \g__pdfmanagement_active_bool
- {\cs_gset_eq:NN \__pdf_backend_bdc:nn \__pdf_backend_bdc_contobj:nn}
- {\cs_gset_eq:NN \__pdf_backend_bdc:nn \__pdf_backend_bdc_contstream:nn}
- \__pdf_backend_bdc:nn {#1}{#2}
- }
+\cs_set_eq:NN \__pdf_backend_bdc:nn \__pdf_backend_bdc_contstream:nn
\bool_if:NT\l__pdfmanagement_delayed_shipout_bool
{
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def
index 394957e3e51..77c0eb00950 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-pdftex.def}{2024-09-02}{}
+ {l3backend-testphase-pdftex.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)}
\cs_generate_variant:Nn \__kernel_backend_literal_page:n { e }
\bool_if:NT \l__pdfmanagement_delayed_shipout_bool
@@ -170,7 +170,6 @@
}
}
\bool_new:N \l__pdf_backend_xform_bool
-
\cs_set_protected:Npn \__pdf_backend_bdcobject:nn #1 #2 % #1 eg. Span, #2: object name
{
\int_gincr:N \g__pdf_backend_name_int
@@ -245,14 +244,8 @@
{
\__kernel_backend_literal_page:n { /#1~<<#2>>~BDC }
}
+\cs_set_eq:NN \__pdf_backend_bdc:nn \__pdf_backend_bdc_contstream:nn
-\cs_set_protected:Npn \__pdf_backend_bdc:nn #1 #2
- {
- \bool_if:NTF \g__pdfmanagement_active_bool
- {\cs_gset_eq:NN \__pdf_backend_bdc:nn \__pdf_backend_bdc_contobj:nn}
- {\cs_gset_eq:NN \__pdf_backend_bdc:nn \__pdf_backend_bdc_contstream:nn}
- \__pdf_backend_bdc:nn {#1}{#2}
- }
\bool_if:NT\l__pdfmanagement_delayed_shipout_bool
{
\cs_set_protected:Npn \__pdf_backend_bdc_shipout_contstream:ee #1 #2
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def
index 8b3f0c046c1..996609e7a50 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-xetex.def}{2024-09-02}{}
+ {l3backend-testphase-xetex.def}{2024-12-20}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX}
\cs_generate_variant:Nn \__kernel_backend_literal:n { e }
\cs_generate_variant:Nn \__pdf_backend:n { e }
@@ -152,7 +152,6 @@
\cs_new_protected:Npn \__pdf_backend_PageResources_obj_gpush: {}
\bool_new:N \l__pdf_backend_xform_bool
-
\cs_set_protected:Npn \__pdf_backend_bdcobject:nn #1 #2 % #1 eg. Span, #2: object name
{
\int_gincr:N \g__pdf_backend_name_int
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua
index 988585867c2..02de44427b9 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua
@@ -23,7 +23,6 @@
-
ltx= ltx or {}
ltx.__pdf = ltx.__pdf or {}
ltx.__pdf.Page = ltx.__pdf.Page or {}
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty
index f3f4ea45e89..128212d47a3 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty
@@ -27,7 +27,7 @@
%% File: l3pdffield.dtx
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{l3pdffield-testphase}{2024-09-02}{0.96k}%
+\ProvidesExplPackage{l3pdffield-testphase}{2024-12-20}{0.96o}%
{form fields}
\csname HyField@NeedAppearancesfalse\endcsname % suppress NeedAppearances
\str_new:N \l__pdffield_tmpa_str
@@ -1016,7 +1016,7 @@
{
\__pdffield_field:n { __pdffield/checkbox/#1 }
}
- \keys_set:nn {pdffield}{parent=__pdffield/checkbox/#1}
+ \keys_set:nn {pdffield}{parent={__pdffield/checkbox/#1}}
}
\cs_generate_variant:Nn \__pdffield_checkbox_field:n {V}
\cs_new_protected:Npn \__pdffield_checkbox:n #1
@@ -1215,7 +1215,7 @@
}
}
}
- \keys_set:nn {pdffield}{parent=__pdffield/radio/#1}
+ \keys_set:nn {pdffield}{parent={__pdffield/radio/#1}}
}
\cs_generate_variant:Nn \__pdffield_radio_field:n {V}
\cs_new_protected:Npn \__pdffield_radio:n #1
@@ -1359,7 +1359,7 @@
{
\__pdffield_field:n { __pdffield/textfield/#1 }
}
- \keys_set:nn {pdffield}{parent=__pdffield/textfield/#1}
+ \keys_set:nn {pdffield}{parent={__pdffield/textfield/#1}}
}
\cs_generate_variant:Nn \__pdffield_textfield_field:n {V}
\cs_new_protected:Npn \__pdffield_textfield:n #1
@@ -1699,7 +1699,7 @@
{
\__pdffield_field:n { __pdffield/pushbutton/#1 }
}
- \keys_set:nn {pdffield}{parent=__pdffield/pushbutton/#1}
+ \keys_set:nn {pdffield}{parent={__pdffield/pushbutton/#1}}
}
\cs_generate_variant:Nn \__pdffield_pushbutton_field:n {V}
\cs_new_protected:Npn \__pdffield_pushbutton:n #1
@@ -1762,6 +1762,8 @@
%% File: l3pdfpdffield-choice.dtx
+
+
\RequirePackage{l3draw}
\seq_new:N \l__pdffield_choice_values_seq
\seq_new:N \l__pdffield_choice_defaultvalues_seq
@@ -1807,7 +1809,7 @@
}
\__pdffield_field:n { __pdffield/choice/#1 }
}
- \keys_set:nn {pdffield}{parent=__pdffield/choice/#1}
+ \keys_set:nn {pdffield}{parent={__pdffield/choice/#1}}
}
\cs_generate_variant:Nn \__pdffield_choice_field:n {V}
\cs_new_protected:Npn \__pdffield_choice:n #1
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty
index 73585ec66c8..5ef6268db61 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: pdfmanagement-firstaid.dtx
-\ProvidesExplPackage{pdfmanagement-firstaid}{2024-09-02}{0.96k}
+\ProvidesExplPackage{pdfmanagement-firstaid}{2024-12-20}{0.96o}
{LaTeX PDF management testphase bundle / firstaid-patches}
\clist_map_inline:nn
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx
index f250abee084..cfe8df485e3 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx
@@ -27,7 +27,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: pdfmanagement-testphase.dtx
-\ProvidesExplFile{pdfmanagement-testphase.ltx}{2024-09-02}{0.96k}
+\ProvidesExplFile{pdfmanagement-testphase.ltx}{2024-12-20}{0.96o}
{PDF~management~code~(testphase)}
\bool_new:N\l__pdfmanagement_delayed_shipout_bool
\msg_new:nnn {pdfmanagement}{delayed-shipout}
@@ -1038,6 +1038,22 @@
{ \clist_new:N \g__pdfmanagement_firstaidoff_clist }
\tl_if_exist:NF \g__pdfmanagement_testphase_tl
{ \tl_new:N \g__pdfmanagement_testphase_tl }
+\msg_new:nnn { meta } { testphase-latest-loading-temp }
+ {
+ Loading~testphase~modules\\
+ #1
+ }
+\keys_define:nn { document / metadata }
+ {
+ ,testphase / latest .code:n =
+ {
+ \keys_set:nn
+ {document / metadata}
+ {testphase={phase-III,title,table,math,firstaid}}
+ \msg_note:nnn { meta } { testphase-latest-loading-temp }
+ { phase-III,~title,~table,~math,~firstaid }
+ }
+ }
\NewCommandCopy\DeclareDocumentMetadata\DocumentMetadata
\prop_new:N \g__pdfmanagement_documentproperties_prop %
\NewDocumentCommand\AddToDocumentProperties{O{\@currname}mm}
@@ -1080,6 +1096,13 @@
\prop_map_function:NN \g__pdfmanagement_documentproperties_prop \msg_show_item:nn
}
}
+\NewDocumentCommand\LogDocumentProperties {}
+ {
+ \msg_log:nne {pdfmanagement}{show-properties}
+ {
+ \prop_map_function:NN \g__pdfmanagement_documentproperties_prop \msg_show_item:nn
+ }
+ }
%% File: l3pdfannot.dtx
\cs_if_exist:NF \bitset_new:Nn
{ \RequirePackage { l3bitset } }
@@ -1313,9 +1336,15 @@
%% File: l3pdfmeta.dtx
+
\msg_new:nnn {pdf }{unknown-standard}{The~standard~'#1'~is~unknown~and~has~been~ignored}
\msg_new:nnn {pdf }{wrong-pdfversion}
{PDF~version~#1~is~too~#2~for~standard~'#3'.}
+\msg_new:nnn {pdf }{validation-failure}
+ {
+ PDF~standard~validation~failure.\\
+ #1
+ }
\tl_new:N \l__pdfmeta_tmpa_tl
\tl_new:N \l__pdfmeta_tmpb_tl
\str_new:N \l__pdfmeta_tmpa_str
@@ -1510,7 +1539,11 @@
{ g__pdfmeta_standard_pdf/A-2B_prop }{level}{2}
\prop_gremove:cn
{ g__pdfmeta_standard_pdf/A-2B_prop }
- { embed_content}
+ { no_embed_content }
+\prop_gput:cnn
+ { g__pdfmeta_standard_pdf/A-2B_prop }
+ { only_pdfa_embed_content }
+ {}
\prop_gput:cnn
{ g__pdfmeta_standard_pdf/A-2B_prop }{max_pdf_version}{1.7}
\prop_gput:cnn
@@ -1554,7 +1587,7 @@
{ g__pdfmeta_standard_pdf/A-3B_prop }{level}{3}
\prop_gremove:cn
{ g__pdfmeta_standard_pdf/A-3B_prop }
- { embed_content}
+ { only_pdfa_embed_content }
\prop_new:c { g__pdfmeta_standard_pdf/A-3U_prop }
\prop_gset_eq:cc
{ g__pdfmeta_standard_pdf/A-3U_prop }
@@ -1593,6 +1626,8 @@
{ g__pdfmeta_standard_pdf/A-4_prop }{no_CharSet}{}
\prop_gput:cnn
{ g__pdfmeta_standard_pdf/A-4_prop }{Trailer_no_Info}{}
+\prop_gput:cnn
+ { g__pdfmeta_standard_pdf/A-4_prop }{only_pdfa_embed_content}{}
\prop_gremove:cn
{ g__pdfmeta_standard_pdf/A-4_prop }{conformance}
\prop_gremove:cn
@@ -1607,6 +1642,8 @@
{ g__pdfmeta_standard_pdf/A-4F_prop }{conformance}{F}
\prop_gput:cnn
{ g__pdfmeta_standard_pdf/A-4F_prop }{Catalog_EmbeddedFiles}{}
+\prop_gremove:cn
+ { g__pdfmeta_standard_pdf/A-4F_prop }{only_pdfa_embed_content}
\AddToHook{begindocument/end}
{
\pdfmeta_standard_verify:nF{Catalog_EmbeddedFiles}
@@ -1620,14 +1657,64 @@
\group_begin:
\pdfdict_put:nne {l_pdffile/Filespec} {Desc}{(note~about~PDF/A-4F)}
\pdfdict_put:nnn { l_pdffile/Filespec }{AFRelationship} { /Unspecified }
- \pdffile_embed_stream:nnN {PDF~standard~A-4F~requires~a~file}{readme.txt}\l__pdfmeta_tmpa_tl
- \exp_args:Nne \__pdf_backend_Names_gpush:nn{EmbeddedFiles}{(readme)~\l__pdfmeta_tmpa_tl}
+ \pdffile_embed_stream:nnN
+ {The~document~was~declared~to~be~of~type~PDF/A-4f~but~hasn't~any~attachments.~
+ LaTeX~therefore~added~this~dummy~file.}
+ {pdf-A4f.txt}
+ \l__pdfmeta_tmpa_tl
+ \exp_args:Nne \__pdf_backend_Names_gpush:nn{EmbeddedFiles}{(pdf-A4f)~\l__pdfmeta_tmpa_tl}
\group_end:
}
}
}
}
}
+\AddToHook{pdfmeta/xmp}
+ {
+ \pdfmeta_standard_verify:nF{no_embed_content}
+ {
+ \bool_lazy_or:nnT
+ { ! \int_if_zero_p:n { \g_pdffile_embed_pdfa_int } }
+ { ! \int_if_zero_p:n { \g_pdffile_embed_nonpdfa_int } }
+ {
+ \prop_get:NnNT\g__pdfmeta_standard_prop { name }\l__pdfmeta_tmpa_tl
+ {
+ \msg_warning:nne { pdf } { validation-failure }
+ {
+ Embedded~files~detected.\iow_newline:
+ This~is~not~allowed~in~standard~\l__pdfmeta_tmpa_tl
+ }
+ }
+ }
+ }
+ \pdfmeta_standard_verify:nF {only_pdfa_embed_content}
+ {
+ \int_if_zero:nF { \g_pdffile_embed_nonpdfa_int }
+ {
+ \prop_get:NnNT\g__pdfmeta_standard_prop { name }\l__pdfmeta_tmpa_tl
+ {
+ \str_if_eq:VnTF {\l__pdfmeta_tmpa_tl} { pdf/A-4 }
+ {
+ \prop_gset_eq:cc
+ { g__pdfmeta_standard_prop }
+ { g__pdfmeta_standard_pdf/A-4F_prop }
+ \msg_warning:nne { pdf } { validation-failure }
+ {
+ Embedded~non-PDF~files~detected.\iow_newline:
+ Switching~standard~from~PDF/A-4~to~PDF/A-4F
+ }
+ }
+ {
+ \msg_warning:nne { pdf } { validation-failure }
+ {
+ Embedded~non-PDF~files~detected.\iow_newline:
+ This~is~not~allowed~in~standard~\l__pdfmeta_tmpa_tl
+ }
+ }
+ }
+ }
+ }
+ }
\prop_new:N \g__pdfmeta_outputintents_prop
\keys_define:nn { document / metadata }
{
@@ -1894,7 +1981,8 @@
}
,debug / xmp-export .default:n = true
}
-\msg_new:nnn{pdfmeta}{namespace-defined}{The~xmlns~namespace~`#1`~is~already~declared}
+\msg_new:nnn{pdfmeta}{xmp-defined}{The~XMP~#1~`#2`~is~already~declared}
+\msg_new:nnn{pdfmeta}{xmp-undefined}{The~XMP~#1~`#2`~is~undefined}
\msg_new:nnn{pdfmeta}{colorprofile-undefined}{The~colorprofile~`#1`~is~unknown}
\bool_lazy_or:nnTF
{ \sys_if_engine_luatex_p: }
@@ -2215,63 +2303,78 @@
\__pdfmeta_xmp_indent:n{4} xmlns:\exp_not:n{#1="#2"}
}
}
-\cs_generate_variant:Nn \__pdfmeta_xmp_xmlns_new:nn {ne}
\__pdfmeta_xmp_xmlns_new:nn {pdf} {http://ns.adobe.com/pdf/1.3/}
\__pdfmeta_xmp_xmlns_new:nn {xmpRights}{http://ns.adobe.com/xap/1.0/rights/}
\__pdfmeta_xmp_xmlns_new:nn {dc} {http://purl.org/dc/elements/1.1/}
\__pdfmeta_xmp_xmlns_new:nn {photoshop}{http://ns.adobe.com/photoshop/1.0/}
\__pdfmeta_xmp_xmlns_new:nn {xmp} {http://ns.adobe.com/xap/1.0/}
\__pdfmeta_xmp_xmlns_new:nn {xmpMM} {http://ns.adobe.com/xap/1.0/mm/}
-\__pdfmeta_xmp_xmlns_new:ne {stEvt}
+\__pdfmeta_xmp_xmlns_new:nn {stEvt}
{http://ns.adobe.com/xap/1.0/sType/ResourceEvent\c_hash_str}
\__pdfmeta_xmp_xmlns_new:nn {pdfaid} {http://www.aiim.org/pdfa/ns/id/}
\__pdfmeta_xmp_xmlns_new:nn {pdfuaid} {http://www.aiim.org/pdfua/ns/id/}
\__pdfmeta_xmp_xmlns_new:nn {pdfx} {http://ns.adobe.com/pdfx/1.3/}
\__pdfmeta_xmp_xmlns_new:nn {pdfxid} {http://www.npes.org/pdfx/ns/id/}
\__pdfmeta_xmp_xmlns_new:nn {prism} {http://prismstandard.org/namespaces/basic/3.0/}
-\__pdfmeta_xmp_xmlns_new:ne {stFnt} {http://ns.adobe.com/xap/1.0/sType/Font\c_hash_str}
+\__pdfmeta_xmp_xmlns_new:nn {stFnt} {http://ns.adobe.com/xap/1.0/sType/Font\c_hash_str}
\__pdfmeta_xmp_xmlns_new:nn {Iptc4xmpCore}{http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/}
\__pdfmeta_xmp_xmlns_new:nn {pdfaExtension}{http://www.aiim.org/pdfa/ns/extension/}
-\__pdfmeta_xmp_xmlns_new:ne {pdfaSchema}{http://www.aiim.org/pdfa/ns/schema\c_hash_str}
-\__pdfmeta_xmp_xmlns_new:ne {pdfaProperty}{http://www.aiim.org/pdfa/ns/property\c_hash_str}
-\__pdfmeta_xmp_xmlns_new:ne {pdfaType} {http://www.aiim.org/pdfa/ns/type\c_hash_str}
-\__pdfmeta_xmp_xmlns_new:ne {pdfaField}{http://www.aiim.org/pdfa/ns/field\c_hash_str}
+\__pdfmeta_xmp_xmlns_new:nn {pdfaSchema}{http://www.aiim.org/pdfa/ns/schema\c_hash_str}
+\__pdfmeta_xmp_xmlns_new:nn {pdfaProperty}{http://www.aiim.org/pdfa/ns/property\c_hash_str}
+\__pdfmeta_xmp_xmlns_new:nn {pdfaType} {http://www.aiim.org/pdfa/ns/type\c_hash_str}
+\__pdfmeta_xmp_xmlns_new:nn {pdfaField}{http://www.aiim.org/pdfa/ns/field\c_hash_str}
\seq_new:N \l__pdfmeta_xmp_schema_seq
\cs_new_protected:Npn \__pdfmeta_xmp_schema_new:nnn #1 #2 #3
%#1 name #2 prefix, #3 text
{
- \seq_put_right:Nn \l__pdfmeta_xmp_schema_seq { #2 }
- \tl_new:c { g__pdfmeta_xmp_schema_#2_tl }
- \tl_new:c { g__pdfmeta_xmp_schema_#2_properties_tl }
- \tl_gput_right:cn { g__pdfmeta_xmp_schema_#2_tl }
+ \tl_if_exist:cTF { g__pdfmeta_xmp_schema_#2_tl }
{
- \__pdfmeta_xmp_add_packet_open_attr:nnn{rdf}{li}{rdf:parseType="Resource"}
- \__pdfmeta_xmp_add_packet_line:nnn {pdfaSchema}{schema}{#1}
- \__pdfmeta_xmp_add_packet_line:nnn {pdfaSchema}{prefix}{#2}
- \__pdfmeta_xmp_add_packet_line:nnn {pdfaSchema}{namespaceURI}{#3}
- \__pdfmeta_xmp_add_packet_open:nn {pdfaSchema}{property}
- \__pdfmeta_xmp_add_packet_open:nn{rdf}{Seq}
- \tl_use:c { g__pdfmeta_xmp_schema_#2_properties_tl }
- \__pdfmeta_xmp_add_packet_close:nn{rdf}{Seq}
- \__pdfmeta_xmp_add_packet_close:nn {pdfaSchema}{property}
- \cs_if_exist_use:c {__pdfmeta_xmp_schema_#2_additions:}
- \__pdfmeta_xmp_add_packet_close:nn{rdf}{li}
+ \msg_warning:nnnn{pdfmeta}{xmp-defined}{schema}{#2}
+ }
+ {
+ \seq_put_right:Nn \l__pdfmeta_xmp_schema_seq { #2 }
+ \tl_new:c { g__pdfmeta_xmp_schema_#2_tl }
+ \tl_new:c { g__pdfmeta_xmp_schema_#2_properties_tl }
+ \tl_gput_right:cn { g__pdfmeta_xmp_schema_#2_tl }
+ {
+ \__pdfmeta_xmp_add_packet_open_attr:nnn{rdf}{li}{rdf:parseType="Resource"}
+ \__pdfmeta_xmp_add_packet_line:nnn {pdfaSchema}{schema}{#1}
+ \__pdfmeta_xmp_add_packet_line:nnn {pdfaSchema}{prefix}{#2}
+ \__pdfmeta_xmp_add_packet_line:nnn {pdfaSchema}{namespaceURI}{#3}
+ \__pdfmeta_xmp_add_packet_open:nn {pdfaSchema}{property}
+ \__pdfmeta_xmp_add_packet_open:nn{rdf}{Seq}
+ \tl_use:c { g__pdfmeta_xmp_schema_#2_properties_tl }
+ \__pdfmeta_xmp_add_packet_close:nn{rdf}{Seq}
+ \__pdfmeta_xmp_add_packet_close:nn {pdfaSchema}{property}
+ \cs_if_exist_use:c {__pdfmeta_xmp_schema_#2_additions:}
+ \__pdfmeta_xmp_add_packet_close:nn{rdf}{li}
+ }
}
}
-
+\prop_new:N\g__pdfmeta_xmp_schema_property_prop
\cs_new_protected:Npn \__pdfmeta_xmp_property_new:nnnnn #1 #2 #3 #4 #5 %
%#1 schema #2 name, #3 type, #4 category #5 description
{
- \tl_gput_right:cn { g__pdfmeta_xmp_schema_#1_properties_tl }
+ \tl_if_exist:cTF { g__pdfmeta_xmp_schema_#1_properties_tl }
+ {
+ \prop_get:NeNF \g__pdfmeta_xmp_schema_property_prop {#1:#2}\l__pdfmeta_tmpa_tl
+ {
+ \prop_gput:Nee \g__pdfmeta_xmp_schema_property_prop {#1:#2}{#3}
+ \tl_gput_right:cn { g__pdfmeta_xmp_schema_#1_properties_tl }
+ {
+ \__pdfmeta_xmp_add_packet_open:nn {rdf}{li~rdf:parseType="Resource"}
+ \__pdfmeta_xmp_add_packet_line:nnn {pdfaProperty}{name}{#2}
+ \__pdfmeta_xmp_add_packet_line:nnn {pdfaProperty}{valueType}{#3}
+ \__pdfmeta_xmp_add_packet_line:nnn {pdfaProperty}{category}{#4}
+ \__pdfmeta_xmp_add_packet_line:nnn {pdfaProperty}{description}{#5}
+ \__pdfmeta_xmp_add_packet_close:nn{rdf}{li}
+ }
+ }
+ }
{
- \__pdfmeta_xmp_add_packet_open:nn {rdf}{li~rdf:parseType="Resource"}
- \__pdfmeta_xmp_add_packet_line:nnn {pdfaProperty}{name}{#2}
- \__pdfmeta_xmp_add_packet_line:nnn {pdfaProperty}{valueType}{#3}
- \__pdfmeta_xmp_add_packet_line:nnn {pdfaProperty}{category}{#4}
- \__pdfmeta_xmp_add_packet_line:nnn {pdfaProperty}{description}{#5}
- \__pdfmeta_xmp_add_packet_close:nn{rdf}{li}
- }
+ \msg_warning:nnnn{pdfmeta}{xmp-undefined}{schema}{#1}
+ }
}
\cs_new_protected:Npn \__pdfmeta_xmp_add_packet_field:nnn #1 #2 #3 %
@@ -2477,7 +2580,7 @@
}
\cs_new_protected:Npn \__pdfmeta_xmp_schema_enable_pdfd:
{
- \__pdfmeta_xmp_xmlns_new:ne {pdfd}{http://pdfa.org/declarations/}
+ \__pdfmeta_xmp_xmlns_new:nn {pdfd}{http://pdfa.org/declarations/}
\__pdfmeta_xmp_schema_new:nnn
{PDF~Declarations~Schema}
{pdfd}
@@ -2804,6 +2907,7 @@
\g__pdfmeta_xmp_user_packet_tl
\int_set:Nn \l__pdfmeta_xmp_indent_int {3}
}
+\hook_new:n { pdfmeta/xmp }
\AddToHook{shipout/lastpage}
{
\bool_if:NT\g__pdfmeta_xmp_bool
@@ -2816,6 +2920,7 @@
\file_get_timestamp:nN{\jobname.log}\l__pdfmeta_xmp_currentdate_tl
}
\__pdfmeta_xmp_date_split:VN\l__pdfmeta_xmp_currentdate_tl\l__pdfmeta_xmp_currentdate_seq
+ \hook_use:n { pdfmeta/xmp }
\__pdfmeta_xmp_build_packet:
\exp_args:No
\__pdf_backend_metadata_stream:n {\g__pdfmeta_xmp_packet_tl}
@@ -2840,9 +2945,11 @@
\cs_new_protected:Npn \pdfmeta_xmp_xmlns_new:nn #1 #2
{
\prop_if_in:NnTF \g__pdfmeta_xmp_xmlns_prop {#1}
- {\msg_warning:nnn{pdfmeta}{namespace-defined}{#1}}
+ {\msg_warning:nnnn{pdfmeta}{xmp-defined}{xmlns~namespace}{#1}}
{\__pdfmeta_xmp_xmlns_new:nn {#1}{#2}}
}
+\cs_set_eq:NN \pdfmeta_xmp_schema_new:nnn \__pdfmeta_xmp_schema_new:nnn
+\cs_set_eq:NN \pdfmeta_xmp_property_new:nnnnn \__pdfmeta_xmp_property_new:nnnnn
\cs_new_protected:Npn \pdfmeta_xmp_add_declaration:n #1 %conformsTo uri
{
\__pdfmeta_xmp_schema_enable_pdfd:
@@ -3025,6 +3132,8 @@
\cs_new_protected:Npn \pdf_bdc:nn #1 #2 { \__pdf_backend_bdc:nn { #1 }{ #2 } }
\cs_generate_variant:Nn \pdf_bdc:nn {ee}
+\cs_new_protected:Npn \pdf_bdc_property:nn #1 #2
+ { \__pdf_backend_bdc_contobj:nn { #1 }{ #2 } }
\cs_new_protected:Npn \pdf_bdc_shipout:ee #1 #2
{
\bool_if:NTF\l__pdfmanagement_delayed_shipout_bool
@@ -3095,6 +3204,8 @@
,.sty = text/plain
,.xml = application/xml
}
+\int_new:N\g_pdffile_embed_pdfa_int
+\int_new:N\g_pdffile_embed_nonpdfa_int
\str_new:N \l_pdffile_source_name_str
\pdfdict_new:n { l_pdffile }
\pdfdict_put:nnn { l_pdffile }{Type}{/EmbeddedFile}
@@ -3131,33 +3242,41 @@
\prop_map_function:NN {\g_pdffile_embed_prop} \msg_show_item:nn
}
}
-\cs_new_protected:Npn \__pdffile_mimetype_set:nN #1 #2
+\cs_new_protected:Npn \__pdffile_mimetype_set:nNN #1 #2 #3
{
\file_parse_full_name:nNNN
{#1}
\l__pdffile_tmpa_str %unused
\l__pdffile_tmpb_str %unused
\l__pdffile_ext_str
- %check if Subtype has been set
- \pdfdict_get:nnN { l_pdffile}{Subtype}\l__pdffile_tmpa_tl
- %if not look up in the prop:
- \quark_if_no_value:NT \l__pdffile_tmpa_tl
+ %check if Subtype has been set
+ \pdfdict_get:nnN { l_pdffile}{Subtype}\l__pdffile_tmpa_tl
+ %if not look up in the prop:
+ \quark_if_no_value:NT \l__pdffile_tmpa_tl
+ {
+ \prop_get:NVNTF
+ \g_pdffile_mimetypes_prop
+ \l__pdffile_ext_str
+ \l__pdffile_tmpb_tl
{
- \prop_get:NVNTF
- \g_pdffile_mimetypes_prop
- \l__pdffile_ext_str
- \l__pdffile_tmpb_tl
- {
- \tl_set:Ne #2 {/Subtype~\pdf_name_from_unicode_e:V \l__pdffile_tmpb_tl}
- }
- {
- \msg_warning:nne { pdffile }{ mimetype-missing} {#1}
- \tl_clear:N #2
- }
+ \tl_set:Ne #2 {/Subtype~\pdf_name_from_unicode_e:V \l__pdffile_tmpb_tl}
}
- }
+ {
+ \msg_warning:nne { pdffile }{ mimetype-missing} {#1}
+ \tl_clear:N #2
+ }
+ }
+ \tl_set_eq:NN #3 \l__pdffile_ext_str
+ }
+
+\cs_generate_variant:Nn \__pdffile_mimetype_set:nNN {VNN}
-\cs_generate_variant:Nn \__pdffile_mimetype_set:nN {VN}
+\cs_new_protected:Npn \__pdffile_count_embed:N #1
+ {
+ \str_if_eq:VnTF #1 {.pdf}
+ {\int_gincr:N \g_pdffile_embed_pdfa_int }
+ {\int_gincr:N \g_pdffile_embed_nonpdfa_int }
+ }
\cs_new_protected:Npn \__pdffile_fstream_write:nN #1 #2
{
@@ -3270,9 +3389,11 @@
{
\file_get_full_name:nNTF {#1} \l_pdffile_source_name_str
{
- \__pdffile_mimetype_set:VN
+ \__pdffile_mimetype_set:VNN
\l_pdffile_source_name_str
\l__pdffile_automimetype_tl
+ \l__pdffile_tmpa_tl
+ \__pdffile_count_embed:N \l__pdffile_tmpa_tl
\__pdffile_fstream_write:VN
\l_pdffile_source_name_str
\l__pdffile_automimetype_tl
@@ -3330,8 +3451,9 @@
{ #3 }
{{stream}{}{\tl_if_blank:nTF {#2}{stream.txt}{\exp_not:n{#2}}}}
\tl_if_blank:nTF {#2}
- { \__pdffile_mimetype_set:nN {stream.txt}\l__pdffile_automimetype_tl}
- { \__pdffile_mimetype_set:nN { #2 } \l__pdffile_automimetype_tl }
+ { \__pdffile_mimetype_set:nNN {stream.txt}\l__pdffile_automimetype_tl \l__pdffile_tmpa_tl}
+ { \__pdffile_mimetype_set:nNN { #2 } \l__pdffile_automimetype_tl \l__pdffile_tmpa_tl }
+ \__pdffile_count_embed:N \l__pdffile_tmpa_tl
\__pdffile_stream_write:nN
{ #1 }
\l__pdffile_automimetype_tl
@@ -3349,8 +3471,9 @@
\cs_new_protected:Npn \pdffile_embed_stream:nnN #1 #2 #3
{
\tl_if_blank:nTF {#2}
- { \__pdffile_mimetype_set:nN {stream.txt}\l__pdffile_automimetype_tl}
- { \__pdffile_mimetype_set:nN { #2 } \l__pdffile_automimetype_tl }
+ { \__pdffile_mimetype_set:nNN {stream.txt}\l__pdffile_automimetype_tl \l__pdffile_tmpa_tl}
+ { \__pdffile_mimetype_set:nNN { #2 } \l__pdffile_automimetype_tl \l__pdffile_tmpa_tl }
+ \__pdffile_count_embed:N\l__pdffile_tmpa_tl
\__pdffile_stream_write:nN
{ #1 }
\l__pdffile_automimetype_tl
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty
index dface342822..a97dd03f412 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: pdfmanagement-testphase.dtx
-\ProvidesExplPackage{pdfmanagement-testphase}{2024-09-02}{0.96k}
+\ProvidesExplPackage{pdfmanagement-testphase}{2024-12-20}{0.96o}
{LaTeX PDF management testphase bundle}
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\IfFormatAtLeastTF{2020-10-01}{}{
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
index 49059834a1d..421ee2f344d 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
@@ -1,6 +1,6 @@
%% LaTeX2e file `xcolor-patches-tmp-ltx.sty'
%%
-\ProvidesPackage{xcolor-patches-tmp-ltx}[2024-09-02 v0.96k patch xcolor for l3color]
+\ProvidesPackage{xcolor-patches-tmp-ltx}[2024-12-20 v0.96o patch xcolor for l3color]
\@ifundefined{color_set:nn}{\RequirePackage{l3color}}{}
\ExplSyntaxOn
diff --git a/Master/texmf-dist/tex/latex/pdfpages/pdfpages.sty b/Master/texmf-dist/tex/latex/pdfpages/pdfpages.sty
index 2c9076f90db..ead38f53d9a 100644
--- a/Master/texmf-dist/tex/latex/pdfpages/pdfpages.sty
+++ b/Master/texmf-dist/tex/latex/pdfpages/pdfpages.sty
@@ -8,7 +8,7 @@
%%
%% This file is part of the pdfpages package.
%%
-%% Copyright (C) 2001-2024 Andreas MATTHIAS
+%% Copyright (C) 2001-2025 Andreas MATTHIAS
%%
%% This work may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.3c
@@ -24,15 +24,12 @@
%% Please send error reports and suggestions for improvements to
%% Andreas MATTHIAS <andreas.matthias@gmail.com>.
%%
-\def\AM@fileversion{v0.6b}
-\def\AM@Git@Date@process$#1: #2 #3${\AM@Git@Date@process@i#2\END}
-\def\AM@Git@Date@process@i#1-#2-#3\END{\def\AM@Git@Date{#1/#2/#3}}
-\def\AM@Git@SHA@process$#1: #2${\def\AM@Git@SHA{#2}}
-\AM@Git@Date@process$Date: 2024-08-20 15:16:01 +0200 $
-\AM@Git@SHA@process$SHA-1: 8cc873330fc0863d9d32e017e64c98d9f04f579d $
+\def\AM@git@tag{v0.6d}
+\def\AM@git@date{2025/01/20}
+\def\AM@git@hash{aef2cc9197}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pdfpages}
- [\AM@Git@Date\space\AM@fileversion\space
+ [\AM@git@date\space\AM@git@tag\space
Insert pages of external PDF documents (AM)]
\newif\ifAM@pkg@draft \AM@pkg@draftfalse
\DeclareOption{draft}{\AM@pkg@drafttrue}
@@ -70,7 +67,7 @@
}{\gdef\AM@driver{luatex}}%
\endgroup
}{}
-\RequirePackage{ifthen, calc, eso-pic}
+\RequirePackage{ifthen, calc, eso-pic, etoolbox}
\RequirePackage{graphicx}%
\newif\ifAM@DVIoutput\AM@DVIoutputfalse
\newdimen\AM@pagewidth
@@ -122,7 +119,8 @@
\newif\ifAM@signature\AM@signaturefalse
\newif\ifAM@signaturestar\AM@signaturestarfalse
\newif\ifAM@booklet\AM@bookletfalse
-\newif\ifAM@sigrotate\AM@sigrotatefalse
+\newif\ifAM@swap@flip@edge\AM@swap@flip@edgefalse
+\newif\ifAM@upsidedown\AM@upsidedownfalse
\newif\ifAM@newwindow\AM@newwindowtrue
\newif\ifAM@rescale\AM@rescalefalse
\newif\ifAM@rotateoversize\AM@rotateoversizefalse
@@ -137,6 +135,7 @@
\pdfpages@includegraphics@status\z@
\newcommand*{\AM@pagestemp}{1}
\newcommand*{\AM@pagecommand}{\thispagestyle{empty}}
+\newcommand*{\AM@pagecommandstar}{}
\newcommand*{\AM@lscape@rot}{0}
\newcommand*{\AM@threadname}{}\newcommand*{\AM@linkname}{}
\newcommand*{\AM@linkname@option}{}
@@ -210,6 +209,7 @@
\global\pdfpages@includegraphics@status\tw@
\@ifundefined{@setmarks}{\let\@setmarks\relax}{}
\AM@pagecnt\@ne
+ \AM@reset@view
\let\AM@threadname\relax
\def\AM@tmp{pdfpages}
\expandafter\AM@split@options
@@ -262,6 +262,8 @@
\begingroup
\global\pdfpages@includegraphics@status\tw@
\AM@pagecnt\@ne
+ \AM@reset@view
+ \let\AM@threadname\relax
\let\AM@currentdocname\relax
\def\AM@tmp{pdfpages}
\expandafter\AM@split@options
@@ -329,18 +331,17 @@
\ifAM@pkg@draft \setkeys{Gin}{draft=true}%
\else \setkeys{Gin}{draft=false}%
\fi
- \ifthenelse{\boolean{AM@landscape}}
- {\def\AM@lscape@rot{90}%
- \@ifundefined{AM@shortnupsyntax}{}
- {\let\AM@temp\AM@xnup
- \let\AM@xnup\AM@ynup
- \let\AM@ynup\AM@temp}%
- }{}%
+ \ifAM@landscape
+ \def\AM@lscape@rot{90}%
+ \let\AM@temp\AM@xnup
+ \let\AM@xnup\AM@ynup
+ \let\AM@ynup\AM@temp
+ \fi
\AM@setphantom
\ifthenelse{\boolean{AM@openright}\and\not\boolean{AM@openrighteach}}
{\AM@openright}{}%
\ifx\AM@signature\@empty\AM@filluppagelist
- \else\AM@prepare@signature\AM@signaturetrue\AM@turnfalse\fi
+ \else\AM@prepare@signature\AM@signaturetrue\fi
\@tempcnta=\AM@xnup\relax \advance\@tempcnta\m@ne
\edef\AM@xnupminusi{\the\@tempcnta}%
\@tempcnta=\AM@ynup\relax \advance\@tempcnta\m@ne
@@ -377,11 +378,12 @@
\AM@firstpagetrue
\@ifundefined{AM@pagetemplate}
{\AM@readfirst{\AM@pagelist}%
- \edef\AM@page{\the\toks@}}
- {\edef\AM@page{\AM@pagetemplate}}%
+ \edef\AM@nextpage{\the\toks@}}
+ {\edef\AM@nextpage{\AM@pagetemplate}}%
\AM@readfirst{\AM@doclist}%
\edef\AM@docname{\the\toks@}%
\AM@isphantom
+ \edef\AM@page{\AM@nextpage}%
\ifAM@noautoscale
\def\AM@globalscale{1}%
\else
@@ -460,21 +462,18 @@
\edef\AM@xmargin{\the\@tempdima}%
\setlength{\@tempdima}{\AM@ymargin}%
\edef\AM@ymargin{\the\@tempdima}%
- \ifthenelse{\boolean{AM@landscape}}
- {\edef\AM@temp{\AM@xnup}%
- \edef\AM@xnup{\AM@ynup}%
- \edef\AM@ynup{\AM@temp}}
- {}%
- \ifAM@signature
- \ifAM@landscape\AM@sigrotatefalse\else\AM@sigrotatetrue\fi
- \fi
+ \ifthenelse{\boolean{AM@landscape}}{%
+ \edef\AM@temp{\AM@xnup}%
+ \edef\AM@xnup{\AM@ynup}%
+ \edef\AM@ynup{\AM@temp}%
+ }{}%
\setboolean{AM@endoflist}{false}%
\clearpage
\whiledo{\not\boolean{AM@endoflist}}{%
\AM@getfirst{\AM@pagelist}%
- \edef\AM@page{\the\toks@}%
+ \edef\AM@nextpage{\the\toks@}%
\AM@isphantom
- \@tempcnta=\AM@page\relax
+ \@tempcnta=\AM@nextpage\relax
\edef\AM@linktodoc@page{\the\@tempcnta}%
\advance\@tempcnta\m@ne
\edef\AM@linktodoc@page@m@ne{\the\@tempcnta}%
@@ -525,6 +524,7 @@
\clearpage
\AM@newpagefalse
\fi
+ \edef\AM@page{\AM@nextpage}%
\edef\AM@opts{[\AM@disable@width@height,\the\@temptokena,
page=\AM@page, scale=\AM@globalscale,
angle=\AM@lscape@rot]}%
@@ -639,10 +639,19 @@
\edef\AM@xpos{\strip@pt\@tempdima}%
\setlength{\@tempdima}{\AM@ypos}%
\edef\AM@ypos{\strip@pt\@tempdima}%
- \AM@region@calc
\ifnum\AM@xnupi=1
\ifnum\AM@ynupi=1
- \ifAM@reflectall \setbox\AM@pagebox\null \fi
+ \ifAM@reflectall
+ \setbox\AM@pagebox\null
+ \fi
+ \ifAM@swap@flip@edge
+ \ifAM@signature
+ \ifAM@upsidedown\AM@upsidedownfalse\else\AM@upsidedowntrue\fi
+ \@tempdima=\AM@xoffset\relax
+ \multiply\@tempdima\m@ne
+ \edef\AM@xoffset{\the\@tempdima}%
+ \fi
+ \fi
\fi
\fi
\ifAM@phantompage
@@ -652,14 +661,15 @@
\edef\AM@opts{[\AM@disable@width@height,\the\@temptokena,
page=\AM@page, scale=\AM@globalscale,
scale=\AM@localscale,
- \ifAM@sigrotate angle=180,\fi
+ \ifAM@upsidedown angle=180,\fi
\ifAM@doublepagestwist\ifAM@doublepagestmp
angle=180,\fi\fi
angle=\AM@rotateoversize, angle=\AM@lscape@rot]}%
\edef\AM@shippage{%
\noexpand\put(\AM@xpos,\AM@ypos){%
\noexpand\raisebox{\dp\@tempboxa}{%
- \noexpand\raise \ht\@tempboxa \hbox{\AM@hyper@begin@i}%
+ \noexpand\raise \ifx\\\AM@view@ypos\\\ht\@tempbox\else\AM@view@ypos\p@\fi
+ \hbox to 0pt {\hskip\AM@view@xpos bp\AM@hyper@begin@i}%
\global\pdfpages@includegraphics@status\@ne
\fboxsep=\z@
\AM@hyper@begin@ii\noexpand\AM@fbox{%
@@ -717,7 +727,10 @@
\AM@toclof{\AM@page}%
\ifnum\AM@xnupi=\AM@xnup\relax
\ifnum\AM@ynupi=\AM@ynup\relax
- \begingroup\AM@pagecommand\endgroup
+ \begingroup
+ \ifAM@firstpage\AM@pagecommandstar\fi
+ \AM@pagecommand
+ \endgroup
\hskip\z@
\ifthenelse{\boolean{AM@turn}\AND\boolean{AM@landscape}}{%
\AM@setRotate
@@ -737,12 +750,6 @@
}%
\AM@ClearShipoutPicture
\fi
- \ifAM@signature
- \ifAM@sigrotate\AM@sigrotatefalse\else\AM@sigrotatetrue\fi
- \@tempdima=\AM@xoffset\relax
- \multiply\@tempdima\m@ne
- \edef\AM@xoffset{\the\@tempdima}%
- \fi
\fi
\fi
}% whiledo
@@ -792,7 +799,9 @@
\def\AM@readlisti#1,{%
\ifx\AM@currentdocname\relax
\else
- \AM@getpagecount
+ \ifx\AM@pagecount\AM@undefined
+ \AM@getpagecount
+ \fi
\fi
\def\AM@temp{#1}%
\ifx\END#1
@@ -1146,6 +1155,7 @@
\equal{openright}{\AM@temp}\or
\equal{openrighteach}{\AM@temp}\or
\equal{pagecommand}{\AM@temp}\or
+ \equal{pagecommand*}{\AM@temp}\or
\equal{landscape}{\AM@temp}\or
\equal{turn}{\AM@temp}\or
\equal{column}{\AM@temp}\or
@@ -1175,6 +1185,8 @@
\equal{signature}{\AM@temp}\or
\equal{signature*}{\AM@temp}\or
\equal{booklet}{\AM@temp}\or
+ \equal{booklet*}{\AM@temp}\or
+ \equal{flip-other-edge}{\AM@temp}\or
\equal{pagetemplate}{\AM@temp}\or
\equal{templatesize}{\AM@temp}\or
\equal{rotateoversize}{\AM@temp}\or
@@ -1201,8 +1213,8 @@
\DeclareRobustCommand{\AM@trim@leadingspace}[1]{\ifdim\z@=0pt#1\fi}
\newif\ifAM@phantompage
\newcommand*{\AM@isphantom}{%
- \expandafter\ifx\expandafter\\\AM@page\\%
- \let\AM@page\AM@phantompage
+ \expandafter\ifx\expandafter\\\AM@nextpage\\%
+ \let\AM@nextpage\AM@phantompage
\let\AM@ph\phantom
\AM@phantompagetrue
\else
@@ -1323,15 +1335,31 @@
\whiledo{\@tempcnta<\@tempcntb}{%
\ifAM@landscape
\ifAM@signaturestar
- \AM@first\AM@last\AM@first\AM@last
+ \ifAM@swap@flip@edge
+ \AM@last\AM@first\AM@last\AM@first
+ \else
+ \AM@first\AM@last\AM@last\AM@first
+ \fi
\else
- \AM@last\AM@first\AM@last\AM@first
+ \ifAM@swap@flip@edge
+ \AM@first\AM@last\AM@first\AM@last
+ \else
+ \AM@last\AM@first\AM@first\AM@last
+ \fi
\fi
\else
\ifAM@signaturestar
- \AM@last\AM@first\AM@last\AM@first
+ \ifAM@swap@flip@edge
+ \AM@last\AM@first\AM@last\AM@first
+ \else
+ \AM@first\AM@last\AM@last\AM@first
+ \fi
\else
- \AM@first\AM@last\AM@first\AM@last
+ \ifAM@swap@flip@edge
+ \AM@first\AM@last\AM@first\AM@last
+ \else
+ \AM@last\AM@first\AM@first\AM@last
+ \fi
\fi
\fi
\advance\@tempcnta by 4
@@ -1346,10 +1374,18 @@
\edef\AM@pagelist{\expandafter\@gobble\AM@newpagelist}%
\edef\AM@doclist{\expandafter\@gobble\AM@newdoclist}%
\AM@pagesize@boogie
- \ifdim\AM@pagewidth<\AM@pageheight
- \def\AM@xnup{\@ne}\def\AM@ynup{\tw@}%
- \else
- \def\AM@xnup{\tw@}\def\AM@ynup{\@ne}%
+ \ifnum\AM@xnup=1\relax
+ \ifnum\AM@ynup=1\relax
+ \ifdim\AM@pagewidth<\AM@pageheight
+ \def\AM@xnup{1}\def\AM@ynup{2}%
+ \else
+ \def\AM@xnup{2}\def\AM@ynup{1}%
+ \fi
+ \PackageWarningNoLine{pdfpages}{%
+ Option `nup' not set correctly. \MessageBreak
+ I will continue with `nup=\AM@xnup x\AM@ynup'. Please remember\MessageBreak
+ to set `nup' correctly when using `\ifAM@booklet booklet\else signature\fi'}
+ \fi
\fi
}
\newcommand*{\AM@setphantom}{%
@@ -1377,7 +1413,7 @@
\def\@seccntformat##1{}\def\@makechapterhead##1{}%
\def\@endpart{}\def\partname{}%
\def\autodot{}% KOMA classes
- \def\ch@pt@c{\the\AM@toc@title}% memoir classes
+ \edef\ch@pt@c{\the\AM@toc@title}% memoir classes
\let\AM@addcontentsline\addcontentsline
\def\addcontentsline##1##2##3{%
\AM@addcontentsline{##1}{##2}{##3}%
@@ -1431,6 +1467,7 @@
\def\@captype{\AM@lof@list}%
\long\def\@makecaption##1##2{}%
\def\@fs@capt##1##2{}% float.sty
+ \edef\@currentlabelname{\the\AM@lof@heading}% float.sty
\AM@addtolist@hook
\@ifundefined{hyper@@anchor}{%
\expandafter\caption\expandafter{\the\AM@lof@heading}%
@@ -1454,7 +1491,7 @@
\def\AM@parse@loflisti#1,#2,#3,#4,#5\END{%
\edef\AM@lof@page{\AM@trim@space{#1}}%
\edef\AM@lof@list{\AM@trim@space{#2}}%
- \AM@lof@heading{\ignorespaces #3}%
+ \AM@lof@heading{#3}%
\edef\AM@lof@label{\AM@trim@space{#4}}%
\AM@checkinteger{\AM@lof@page}%
\ifAM@integer\else
@@ -1565,6 +1602,7 @@
\define@key{pdfpages}{openright}[true]{\setboolean{AM@openright}{#1}}
\define@key{pdfpages}{openrighteach}[true]{\setboolean{AM@openrighteach}{#1}}
\define@key{pdfpages}{pagecommand}{\def\AM@pagecommand{#1}}
+\define@key{pdfpages}{pagecommand*}{\def\AM@pagecommandstar{#1}}
\define@key{pdfpages}{landscape}[true]{\setboolean{AM@landscape}{#1}}
\define@key{pdfpages}{turn}[true]{\setboolean{AM@turn}{#1}}
\define@key{pdfpages}{column}[true]{\setboolean{AM@column}{#1}}
@@ -1618,8 +1656,19 @@
\define@key{pdfpages}{signature}{\edef\AM@signature{#1}}
\define@key{pdfpages}{signature*}{\edef\AM@signature{#1}%
\AM@signaturestartrue}
-\define@key{pdfpages}{booklet}[true]{\setboolean{AM@booklet}{#1}%
- \def\AM@signature{x}}
+\define@key{pdfpages}{booklet}[true]{
+ \setboolean{AM@booklet}{#1}%
+ \ifAM@booklet
+ \def\AM@signature{non-empty}
+ \fi}
+\define@key{pdfpages}{booklet*}[true]{
+ \ifstrequal{#1}{true}{%
+ \setboolean{AM@booklet}{#1}
+ \ifAM@booklet
+ \def\AM@signature{non-empty}
+ \AM@signaturestartrue
+ \fi}}
+\define@key{pdfpages}{flip-other-edge}[true]{\setboolean{AM@swap@flip@edge}{#1}}
\define@key{pdfpages}{pagetemplate}{\AM@CheckValue{pagetemplate}{#1}%
\def\AM@pagetemplate{#1}}
\define@key{pdfpages}{templatesize}{\expandafter\AM@parse@templatesize\expanded{#1}\END}
@@ -1675,7 +1724,10 @@
\dimen@.99626\dimen@
\edef#2{\strip@pt\dimen@ bp}%
\fi
-}
+ }
+\def\AM@thousand#1{\AM@thousand@i#1.0000.\END}
+\def\AM@thousand@i#1.#2.#3\END{\AM@thousand@ii#1.#2#3\END}
+\def\AM@thousand@ii#1.#2#3#4#5#6\END{#1#2#3#4}
\InputIfFileExists{pdfpages.fix}{%
\PackageInfo{pdfpages}{Loading patch file `pdfpages.fix'}}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/pdfpages/ppdvipdfmx.def b/Master/texmf-dist/tex/latex/pdfpages/ppdvipdfmx.def
index 49bc11c8c41..dbd1dd9ff3c 100644
--- a/Master/texmf-dist/tex/latex/pdfpages/ppdvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/pdfpages/ppdvipdfmx.def
@@ -8,7 +8,7 @@
%%
%% This file is part of the pdfpages package.
%%
-%% Copyright (C) 2001-2024 Andreas MATTHIAS
+%% Copyright (C) 2001-2025 Andreas MATTHIAS
%%
%% This work may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.3c
@@ -24,14 +24,11 @@
%% Please send error reports and suggestions for improvements to
%% Andreas MATTHIAS <andreas.matthias@gmail.com>.
%%
-\def\AM@fileversion{v0.6b}
-\def\AM@Git@Date@process$#1: #2 #3${\AM@Git@Date@process@i#2\END}
-\def\AM@Git@Date@process@i#1-#2-#3\END{\def\AM@Git@Date{#1/#2/#3}}
-\def\AM@Git@SHA@process$#1: #2${\def\AM@Git@SHA{#2}}
-\AM@Git@Date@process$Date: 2024-08-20 15:16:01 +0200 $
-\AM@Git@SHA@process$SHA-1: 8cc873330fc0863d9d32e017e64c98d9f04f579d $
+\def\AM@git@tag{v0.6d}
+\def\AM@git@date{2025/01/20}
+\def\AM@git@hash{aef2cc9197}
\ProvidesFile{ppdvipdfmx.def}
- [\AM@Git@Date\space\AM@fileversion\space
+ [\AM@git@date\space\AM@git@tag\space
Pdfpages driver for dvipdfmx (AM)]
\def\AM@tmp{dvipdfmx.def}
\ifx\Gin@driver\AM@tmp\else
@@ -58,10 +55,18 @@
\AM@read@xbb\@inputcheck
\immediate\closein\@inputcheck
\ifx\AM@pagecount\AM@undefined
+ \else
+ \PackageInfo{pdfpages}{Reading file `\AM@xbb@filename'}%
+ \fi
+ \ifx\AM@pagecount\AM@undefined
\immediate\openin\@inputcheck=
\AM@quote|extractbb -O \AM@currentdocname\AM@quote
\AM@read@xbb\@inputcheck
\immediate\closein\@inputcheck
+ \ifx\AM@pagecount\AM@undefined
+ \else
+ \PackageInfo{pdfpages}{Running extractbb on file `\AM@currentdocname'}%
+ \fi
\fi
\ifx\AM@pagecount\AM@undefined
\def\AM@pagecount{1}
@@ -139,7 +144,10 @@
<<\threadinfodict>>}%
}
\let\AM@thread@special@end\relax
-\def\AM@view{/Fit}
+\def\AM@reset@view{%
+ \def\AM@view{/Fit}%
+ \def\AM@view@xpos{0}%
+ \def\AM@view@ypos{}}
\def\AM@dest@special{%
\special{pdf: dest (\AM@linkname.\AM@page) [ @thispage \AM@view ]}}
\def\AM@anchor@special{%
@@ -196,7 +204,6 @@
\fi
\endgroup
}
-\def\AM@region@calc{}
\let\AM@disable@includegraphics\relax
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/pdfpages/ppdvips.def b/Master/texmf-dist/tex/latex/pdfpages/ppdvips.def
index 32569a0ef4d..b084fa7e120 100644
--- a/Master/texmf-dist/tex/latex/pdfpages/ppdvips.def
+++ b/Master/texmf-dist/tex/latex/pdfpages/ppdvips.def
@@ -8,7 +8,7 @@
%%
%% This file is part of the pdfpages package.
%%
-%% Copyright (C) 2001-2024 Andreas MATTHIAS
+%% Copyright (C) 2001-2025 Andreas MATTHIAS
%%
%% This work may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.3c
@@ -24,14 +24,11 @@
%% Please send error reports and suggestions for improvements to
%% Andreas MATTHIAS <andreas.matthias@gmail.com>.
%%
-\def\AM@fileversion{v0.6b}
-\def\AM@Git@Date@process$#1: #2 #3${\AM@Git@Date@process@i#2\END}
-\def\AM@Git@Date@process@i#1-#2-#3\END{\def\AM@Git@Date{#1/#2/#3}}
-\def\AM@Git@SHA@process$#1: #2${\def\AM@Git@SHA{#2}}
-\AM@Git@Date@process$Date: 2024-08-20 15:16:01 +0200 $
-\AM@Git@SHA@process$SHA-1: 8cc873330fc0863d9d32e017e64c98d9f04f579d $
+\def\AM@git@tag{v0.6d}
+\def\AM@git@date{2025/01/20}
+\def\AM@git@hash{aef2cc9197}
\ProvidesFile{ppdvips.def}
- [\AM@Git@Date\space\AM@fileversion\space
+ [\AM@git@date\space\AM@git@tag\space
Pdfpages driver for dvips (AM)]
\def\AM@notsupported#1{%
\PackageWarning{pdfpages}{#1 not supported by driver dvips}}
@@ -70,10 +67,13 @@
\let\AM@survey@special@end\relax
\def\AM@thread@special@begin{\AM@notsupported{Option thread}}
\let\AM@thread@special@end\relax
+\def\AM@reset@view{%
+ \def\AM@view{}%
+ \def\AM@view@xpos{0}%
+ \def\AM@view@ypos{}}
\def\AM@dest@special{\AM@notsupported{Links}}
\def\AM@anchor@special{\AM@notsupported{Links}}
\def\AM@convert@dest#1{}
-\def\AM@region@calc{}
\let\AM@disable@includegraphics\relax
\@ifundefined{KV@Gin@page}{%
\define@key{Gin}{page}{%
diff --git a/Master/texmf-dist/tex/latex/pdfpages/ppluatex.def b/Master/texmf-dist/tex/latex/pdfpages/ppluatex.def
index 5047ce749f2..08891541297 100644
--- a/Master/texmf-dist/tex/latex/pdfpages/ppluatex.def
+++ b/Master/texmf-dist/tex/latex/pdfpages/ppluatex.def
@@ -8,7 +8,7 @@
%%
%% This file is part of the pdfpages package.
%%
-%% Copyright (C) 2001-2024 Andreas MATTHIAS
+%% Copyright (C) 2001-2025 Andreas MATTHIAS
%%
%% This work may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.3c
@@ -24,14 +24,11 @@
%% Please send error reports and suggestions for improvements to
%% Andreas MATTHIAS <andreas.matthias@gmail.com>.
%%
-\def\AM@fileversion{v0.6b}
-\def\AM@Git@Date@process$#1: #2 #3${\AM@Git@Date@process@i#2\END}
-\def\AM@Git@Date@process@i#1-#2-#3\END{\def\AM@Git@Date{#1/#2/#3}}
-\def\AM@Git@SHA@process$#1: #2${\def\AM@Git@SHA{#2}}
-\AM@Git@Date@process$Date: 2024-08-20 15:16:01 +0200 $
-\AM@Git@SHA@process$SHA-1: 8cc873330fc0863d9d32e017e64c98d9f04f579d $
+\def\AM@git@tag{v0.6d}
+\def\AM@git@date{2025/01/20}
+\def\AM@git@hash{aef2cc9197}
\ProvidesFile{ppluatex.def}
- [\AM@Git@Date\space\AM@fileversion\space
+ [\AM@git@date\space\AM@git@tag\space
Pdfpages driver for LuaTeX (AM)]
\ifnum\luatexversion<85
\let\AM@outputmode\pdfoutput
@@ -125,33 +122,39 @@
name {\AM@threadname}%
}
\let\AM@thread@special@end\relax
-\def\AM@view{fit}
+\def\AM@reset@view{%
+ \def\AM@view{fit}%
+ \def\AM@view@xpos{0}%
+ \def\AM@view@ypos{}}
\def\AM@dest@special{\AM@destination name {\AM@linkname.\AM@page} \AM@view}
\def\AM@anchor@special{\AM@destination name {pdfpages.\the\count1} fit}
\def\AM@convert@dest#1{%
- \expandafter\AM@convert@dest@i\ifdim\z@=0pt#1 \END\fi}
-\def\AM@convert@dest@i#1 #2\END{%
- \begingroup
+ \AM@convert@dest@i #1 0 0 0\END}
+\def\AM@convert@dest@i#1 #2 #3 #4\END{%
\def\tag{#1}%
\def\x{FitH}%
\ifx\x\tag
- \gdef\AM@view{fith}%
+ \def\AM@view{fith}%
+ \def\AM@view@ypos{#2}%
\else
\def\x{FitBH}%
\ifx\x\tag
- \gdef\AM@view{fitbh}%
+ \def\AM@view{fitbh}%
+ \def\AM@view@ypos{#2}%
\else
\def\x{FitV}%
\ifx\x\tag
- \gdef\AM@view{fitv}%
+ \def\AM@view{fitv}%
+ \def\AM@view@xpos{#2}%
\else
\def\x{FitBV}%
\ifx\x\tag
- \gdef\AM@view{fitbv}%
+ \def\AM@view{fitbv}%
+ \def\AM@view@xpos{#2}%
\else
\def\x{FitR}%
\ifx\x\tag
- \gdef\AM@view{fitr}%
+ \def\AM@view{fitr}%
\PackageWarningNoLine{pdfpages}{%
`linkfit=FitR' is not supported,
I will try `linkfit=Region'.}%
@@ -159,19 +162,22 @@
\else
\def\x{FitB}%
\ifx\x\tag
- \gdef\AM@view{fitb}%
+ \def\AM@view{fitb}%
\else
- \def\x{XZY}%
+ \def\x{XYZ}%
\ifx\x\tag
- \gdef\AM@view{xyz zoom #2}%
+ \def\AM@view{xyz zoom \AM@thousand{#4}}%
+ \def\AM@view@xpos{#2}
+ \def\AM@view@ypos{#3}
\else
\def\x{Region}%
\ifx\x\tag
- \gdef\AM@view{fitr
- width\the\wd\@tempboxa\space
- height0pt depth\AM@region@depth}%
+ \def\AM@view{fitr
+ width \the\wd\@tempboxa
+ height \the\ht\@tempboxa
+ depth \the\dp\@tempboxa}%
\else
- \gdef\AM@view{fit}%
+ \def\AM@view{fit}%
\fi
\fi
\fi
@@ -180,11 +186,6 @@
\fi
\fi
\fi
- \endgroup
-}
-\def\AM@region@calc{%
- \setlength{\@tempdima}{\ht\@tempboxa + \dp\@tempboxa}%
- \edef\AM@region@depth{\the\@tempdima}%
}
\let\AM@disable@includegraphics\relax
\endinput
diff --git a/Master/texmf-dist/tex/latex/pdfpages/ppnull.def b/Master/texmf-dist/tex/latex/pdfpages/ppnull.def
index fd4175617f2..cbee8d920ef 100644
--- a/Master/texmf-dist/tex/latex/pdfpages/ppnull.def
+++ b/Master/texmf-dist/tex/latex/pdfpages/ppnull.def
@@ -8,7 +8,7 @@
%%
%% This file is part of the pdfpages package.
%%
-%% Copyright (C) 2001-2024 Andreas MATTHIAS
+%% Copyright (C) 2001-2025 Andreas MATTHIAS
%%
%% This work may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.3c
@@ -24,14 +24,11 @@
%% Please send error reports and suggestions for improvements to
%% Andreas MATTHIAS <andreas.matthias@gmail.com>.
%%
-\def\AM@fileversion{v0.6b}
-\def\AM@Git@Date@process$#1: #2 #3${\AM@Git@Date@process@i#2\END}
-\def\AM@Git@Date@process@i#1-#2-#3\END{\def\AM@Git@Date{#1/#2/#3}}
-\def\AM@Git@SHA@process$#1: #2${\def\AM@Git@SHA{#2}}
-\AM@Git@Date@process$Date: 2024-08-20 15:16:01 +0200 $
-\AM@Git@SHA@process$SHA-1: 8cc873330fc0863d9d32e017e64c98d9f04f579d $
+\def\AM@git@tag{v0.6d}
+\def\AM@git@date{2025/01/20}
+\def\AM@git@hash{aef2cc9197}
\ProvidesFile{ppnull.def}
- [\AM@Git@Date\space\AM@fileversion\space
+ [\AM@git@date\space\AM@git@tag\space
Pdfpages dummy driver (AM)]
\AM@DVIoutputtrue
\PackageWarningNoLine{pdfpages}{%
@@ -77,6 +74,10 @@
\let\AM@survey@special@end\relax
\let\AM@thread@special@begin\relax
\let\AM@thread@special@end\relax
+\def\AM@reset@view{%
+ \def\AM@view{}%
+ \def\AM@view@xpos{0}%
+ \def\AM@view@ypos{}}
\let\AM@dest@special\relax
\let\AM@anchor@special\relax
\def\AM@convert@dest#1{}
@@ -84,7 +85,6 @@
\renewcommand\includegraphics[2][]{}%
}
\newcommand*{\AM@checkpagenumber}[1]{}
-\def\AM@region@calc{}
\endinput
%%
%% End of file `ppnull.def'.
diff --git a/Master/texmf-dist/tex/latex/pdfpages/pppdftex.def b/Master/texmf-dist/tex/latex/pdfpages/pppdftex.def
index 67d1af500b6..15cf7dd212c 100644
--- a/Master/texmf-dist/tex/latex/pdfpages/pppdftex.def
+++ b/Master/texmf-dist/tex/latex/pdfpages/pppdftex.def
@@ -8,7 +8,7 @@
%%
%% This file is part of the pdfpages package.
%%
-%% Copyright (C) 2001-2024 Andreas MATTHIAS
+%% Copyright (C) 2001-2025 Andreas MATTHIAS
%%
%% This work may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.3c
@@ -24,14 +24,11 @@
%% Please send error reports and suggestions for improvements to
%% Andreas MATTHIAS <andreas.matthias@gmail.com>.
%%
-\def\AM@fileversion{v0.6b}
-\def\AM@Git@Date@process$#1: #2 #3${\AM@Git@Date@process@i#2\END}
-\def\AM@Git@Date@process@i#1-#2-#3\END{\def\AM@Git@Date{#1/#2/#3}}
-\def\AM@Git@SHA@process$#1: #2${\def\AM@Git@SHA{#2}}
-\AM@Git@Date@process$Date: 2024-08-20 15:16:01 +0200 $
-\AM@Git@SHA@process$SHA-1: 8cc873330fc0863d9d32e017e64c98d9f04f579d $
+\def\AM@git@tag{v0.6d}
+\def\AM@git@date{2025/01/20}
+\def\AM@git@hash{aef2cc9197}
\ProvidesFile{pppdftex.def}
- [\AM@Git@Date\space\AM@fileversion\space
+ [\AM@git@date\space\AM@git@tag\space
Pdfpages driver for pdfTeX (AM)]
\ifnum\pdftexversion<100
\PackageError{pdfpages}
@@ -142,33 +139,39 @@
name {\AM@threadname}%
}
\let\AM@thread@special@end\relax
-\def\AM@view{fit}
+\def\AM@reset@view{%
+ \def\AM@view{fit}%
+ \def\AM@view@xpos{0}%
+ \def\AM@view@ypos{}}
\def\AM@dest@special{\AM@destination name {\AM@linkname.\AM@page} \AM@view}
\def\AM@anchor@special{\AM@destination name {pdfpages.\the\count1} fit}
\def\AM@convert@dest#1{%
- \expandafter\AM@convert@dest@i\ifdim\z@=0pt#1 \END\fi}
-\def\AM@convert@dest@i#1 #2\END{%
- \begingroup
+ \AM@convert@dest@i #1 0 0 0\END}
+\def\AM@convert@dest@i#1 #2 #3 #4\END{%
\def\tag{#1}%
\def\x{FitH}%
\ifx\x\tag
- \gdef\AM@view{fith}%
+ \def\AM@view{fith}%
+ \def\AM@view@ypos{#2}%
\else
\def\x{FitBH}%
\ifx\x\tag
- \gdef\AM@view{fitbh}%
+ \def\AM@view{fitbh}%
+ \def\AM@view@ypos{#2}%
\else
\def\x{FitV}%
\ifx\x\tag
- \gdef\AM@view{fitv}%
+ \def\AM@view{fitv}%
+ \def\AM@view@xpos{#2}%
\else
\def\x{FitBV}%
\ifx\x\tag
- \gdef\AM@view{fitbv}%
+ \def\AM@view{fitbv}%
+ \def\AM@view@xpos{#2}%
\else
\def\x{FitR}%
\ifx\x\tag
- \gdef\AM@view{fitr}%
+ \def\AM@view{fitr}%
\PackageWarningNoLine{pdfpages}{%
`linkfit=FitR' is not supported,
I will try `linkfit=Region'.}%
@@ -176,19 +179,22 @@
\else
\def\x{FitB}%
\ifx\x\tag
- \gdef\AM@view{fitb}%
+ \def\AM@view{fitb}%
\else
- \def\x{XZY}%
+ \def\x{XYZ}%
\ifx\x\tag
- \gdef\AM@view{xyz zoom #2}%
+ \def\AM@view{xyz zoom \AM@thousand{#4}}%
+ \def\AM@view@xpos{#2}
+ \def\AM@view@ypos{#3}
\else
\def\x{Region}%
\ifx\x\tag
- \gdef\AM@view{fitr
- width\the\wd\@tempboxa\space
- height0pt depth\AM@region@depth}%
+ \def\AM@view{fitr
+ width \the\wd\@tempboxa
+ height \the\ht\@tempboxa
+ depth \the\dp\@tempboxa}%
\else
- \gdef\AM@view{fit}%
+ \def\AM@view{fit}%
\fi
\fi
\fi
@@ -197,11 +203,6 @@
\fi
\fi
\fi
- \endgroup
-}
-\def\AM@region@calc{%
- \setlength{\@tempdima}{\ht\@tempboxa + \dp\@tempboxa}%
- \edef\AM@region@depth{\the\@tempdima}%
}
\let\AM@disable@includegraphics\relax
\endinput
diff --git a/Master/texmf-dist/tex/latex/pdfpages/ppvtex.def b/Master/texmf-dist/tex/latex/pdfpages/ppvtex.def
index a1a0fb7e56a..a969a8a9f5e 100644
--- a/Master/texmf-dist/tex/latex/pdfpages/ppvtex.def
+++ b/Master/texmf-dist/tex/latex/pdfpages/ppvtex.def
@@ -8,7 +8,7 @@
%%
%% This file is part of the pdfpages package.
%%
-%% Copyright (C) 2001-2024 Andreas MATTHIAS
+%% Copyright (C) 2001-2025 Andreas MATTHIAS
%%
%% This work may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.3c
@@ -24,14 +24,11 @@
%% Please send error reports and suggestions for improvements to
%% Andreas MATTHIAS <andreas.matthias@gmail.com>.
%%
-\def\AM@fileversion{v0.6b}
-\def\AM@Git@Date@process$#1: #2 #3${\AM@Git@Date@process@i#2\END}
-\def\AM@Git@Date@process@i#1-#2-#3\END{\def\AM@Git@Date{#1/#2/#3}}
-\def\AM@Git@SHA@process$#1: #2${\def\AM@Git@SHA{#2}}
-\AM@Git@Date@process$Date: 2024-08-20 15:16:01 +0200 $
-\AM@Git@SHA@process$SHA-1: 8cc873330fc0863d9d32e017e64c98d9f04f579d $
+\def\AM@git@tag{v0.6d}
+\def\AM@git@date{2025/01/20}
+\def\AM@git@hash{aef2cc9197}
\ProvidesFile{ppvtex.def}
- [\AM@Git@Date\space\AM@fileversion\space
+ [\AM@git@date\space\AM@git@tag\space
Pdfpages driver for VTeX (AM)]
\begingroup
\@ifundefined{ver@vtex.def}{%
@@ -103,10 +100,13 @@
\special{!thread <\threadinfodict> \AM@threadname}%
}
\def\AM@thread@special@end{\special{!endthread}}
+\def\AM@reset@view{%
+ \def\AM@view{}%
+ \def\AM@view@xpos{0}%
+ \def\AM@view@ypos{}}
\def\AM@dest@special{\special{!aname \AM@linkname.\AM@page}}
\def\AM@anchor@special{\special{!aname pdfpages.\the\count1}}
\def\AM@convert@dest#1{}
-\def\AM@region@calc{}
\let\AM@disable@includegraphics\relax
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/pdfpages/ppxetex.def b/Master/texmf-dist/tex/latex/pdfpages/ppxetex.def
index 90f8a7831c7..118ccd6a4b5 100644
--- a/Master/texmf-dist/tex/latex/pdfpages/ppxetex.def
+++ b/Master/texmf-dist/tex/latex/pdfpages/ppxetex.def
@@ -8,7 +8,7 @@
%%
%% This file is part of the pdfpages package.
%%
-%% Copyright (C) 2001-2024 Andreas MATTHIAS
+%% Copyright (C) 2001-2025 Andreas MATTHIAS
%%
%% This work may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.3c
@@ -24,14 +24,11 @@
%% Please send error reports and suggestions for improvements to
%% Andreas MATTHIAS <andreas.matthias@gmail.com>.
%%
-\def\AM@fileversion{v0.6b}
-\def\AM@Git@Date@process$#1: #2 #3${\AM@Git@Date@process@i#2\END}
-\def\AM@Git@Date@process@i#1-#2-#3\END{\def\AM@Git@Date{#1/#2/#3}}
-\def\AM@Git@SHA@process$#1: #2${\def\AM@Git@SHA{#2}}
-\AM@Git@Date@process$Date: 2024-08-20 15:16:01 +0200 $
-\AM@Git@SHA@process$SHA-1: 8cc873330fc0863d9d32e017e64c98d9f04f579d $
+\def\AM@git@tag{v0.6d}
+\def\AM@git@date{2025/01/20}
+\def\AM@git@hash{aef2cc9197}
\ProvidesFile{ppxetex.def}
- [\AM@Git@Date\space\AM@fileversion\space
+ [\AM@git@date\space\AM@git@tag\space
Pdfpages driver for XeTeX (AM)]
\begingroup
\@ifundefined{ver@xetex.def}{%
@@ -162,53 +159,61 @@
}%
}
\let\AM@thread@special@end\relax
-\def\AM@view{/Fit}
+\def\AM@reset@view{%
+ \def\AM@view{/Fit}%
+ \def\AM@view@xpos{0}%
+ \def\AM@view@ypos{}}
\def\AM@dest@special{%
\special{pdf: dest (\AM@linkname.\AM@page) [ @thispage \AM@view ]}}
\def\AM@anchor@special{%
\special{pdf: dest (pdfpages.\the\count1) [ @thispage /Fit ]}}
\def\AM@convert@dest#1{%
- \expandafter\AM@convert@dest@i\ifdim\z@=0pt#1 \END\fi}
-\def\AM@convert@dest@i#1 #2\END{%
- \begingroup
+ \AM@convert@dest@i #1 0 0 0\END}
+\def\AM@convert@dest@i#1 #2 #3 #4\END{%
\def\tag{#1}%
\def\x{FitH}%
\ifx\x\tag
- \gdef\AM@view{/FitH @ypos}%
+ \def\AM@view{/FitH @ypos}%
+ \def\AM@view@ypos{#2}%
\else
\def\x{FitBH}%
\ifx\x\tag
- \gdef\AM@view{/FitBH @ypos}%
+ \def\AM@view{/FitBH @ypos}%
+ \def\AM@view@ypos{#2}%
\else
\def\x{FitV}%
\ifx\x\tag
- \gdef\AM@view{/FitV @xpos}%
+ \def\AM@view{/FitV @xpos}%
+ \def\AM@view@xpos{#2}%
\else
\def\x{FitBV}%
\ifx\x\tag
- \gdef\AM@view{/FitBV @xpos}%
+ \def\AM@view{/FitBV @xpos}%
+ \def\AM@view@xpos{#2}%
\else
\def\x{fitr}%
\ifx\x\tag
- \gdef\AM@view{/XYZ @xpos @ypos null}%
+ \def\AM@view{/XYZ @xpos @ypos null}%
\PackageWarningNoLine{pdfpages}{%
`linkfit=FitR' is not supported.}%
\else
\def\x{FitB}%
\ifx\x\tag
- \gdef\AM@view{/FitB}%
+ \def\AM@view{/FitB}%
\else
\def\x{XYZ}%
\ifx\x\tag
- \gdef\AM@view{/XYZ @xpos @ypos null}%
+ \def\AM@view{/XYZ @xpos @ypos #4}%
+ \def\AM@view@xpos{#2}%
+ \def\AM@view@ypos{#3}%
\else
\def\x{Region}%
\ifx\x\tag
- \gdef\AM@view{/XYZ @xpos @ypos null}%
+ \def\AM@view{/XYZ @xpos @ypos null}%
\PackageWarningNoLine{pdfpages}{%
`linkfit=Region' is not supported by XeTeX.}%
\else
- \gdef\AM@view{/Fit}%
+ \def\AM@view{/Fit}%
\fi
\fi
\fi
@@ -217,9 +222,7 @@
\fi
\fi
\fi
- \endgroup
}
-\def\AM@region@calc{}
\let\AM@disable@includegraphics\relax
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/perltex/perltex.sty b/Master/texmf-dist/tex/latex/perltex/perltex.sty
index 8c9dd7fa3fa..b5636f78c77 100644
--- a/Master/texmf-dist/tex/latex/perltex/perltex.sty
+++ b/Master/texmf-dist/tex/latex/perltex/perltex.sty
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 2003-2019 Scott Pakin <scott+pt@pakin.org>
+%% Copyright (C) 2003-2024 Scott Pakin <scott+pt@pakin.org>
%%
%% This file may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3c of this license
@@ -22,7 +22,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{perltex}
- [2019/09/14 v2.2 LaTeX macros for use with PerlTeX]
+ [2024/12/03 v2.3 LaTeX macros for use with PerlTeX]
\newif\ifplmac@required
\plmac@requiredtrue
\DeclareOption{optional}{\plmac@requiredfalse}
@@ -206,15 +206,26 @@
}%
\plmac@run@code
}
+\newread\plmac@infile
+\newcommand{\plmac@IfFileExists}[3]{%
+ \openin\plmac@infile=#1 %
+ \ifeof\plmac@infile
+ \def\plmac@next{#3}%
+ \else
+ \closein\plmac@infile
+ \def\plmac@next{#2}%
+ \fi
+ \plmac@next
+}
\newif\ifplmac@file@exists
\newcommand{\plmac@await@existence}[1]{%
\begin{lrbox}{\@tempboxa}%
\input\plmac@pipe
\end{lrbox}%
\loop
- \IfFileExists{#1}%
- {\plmac@file@existstrue}%
- {\plmac@file@existsfalse}%
+ \plmac@IfFileExists{#1}%
+ {\plmac@file@existstrue}%
+ {\plmac@file@existsfalse}%
\ifplmac@file@exists
\else
\repeat
diff --git a/Master/texmf-dist/tex/latex/pgfmath-xfp/pgfmath-xfp.sty b/Master/texmf-dist/tex/latex/pgfmath-xfp/pgfmath-xfp.sty
index 9db3b69b313..b85c0c95c0b 100644
--- a/Master/texmf-dist/tex/latex/pgfmath-xfp/pgfmath-xfp.sty
+++ b/Master/texmf-dist/tex/latex/pgfmath-xfp/pgfmath-xfp.sty
@@ -31,14 +31,14 @@
%%
\providecommand\DeclareRelease[3]{}
\providecommand\DeclareCurrentRelease[2]{}
-\DeclareCurrentRelease{}{2021-05-19}
+\DeclareCurrentRelease{}{2025-01-11}
\@ifundefined{ExplFileDate}
{\RequirePackage{expl3}}
{}
\RequirePackage{pgfmath}
\usepgflibrary{fpu}
-\newcommand*\pgfmxfpDate{2021-05-19}
-\newcommand*\pgfmxfpVersion{1.0}
+\newcommand*\pgfmxfpDate{2025-01-11}
+\newcommand*\pgfmxfpVersion{1.0a}
\ProvidesExplPackage
{pgfmath-xfp} {\pgfmxfpDate}
{\pgfmxfpVersion} {define pgfmath functions using xfp}
diff --git a/Master/texmf-dist/tex/latex/pgfornament-han/beamerthemeHeavenlyClouds.sty b/Master/texmf-dist/tex/latex/pgfornament-han/beamerthemeHeavenlyClouds.sty
index 00bc63cd782..afee91585d1 100644
--- a/Master/texmf-dist/tex/latex/pgfornament-han/beamerthemeHeavenlyClouds.sty
+++ b/Master/texmf-dist/tex/latex/pgfornament-han/beamerthemeHeavenlyClouds.sty
@@ -1,4 +1,4 @@
-% beamerthemeHeavenlyClouds.sty v1.1.1 2023/10/29
+% beamerthemeHeavenlyClouds.sty v1.2 2024/10/15
% by LianTze Lim (liantze@gmail.com)
\ProvidesPackage{beamerthemeHeavenlyClouds}
@@ -24,6 +24,7 @@
\renewcommand{\CJKrmdefault}{zhfs}
\setbeamerfont{frametitle}{shape=\itshape,family=\lishu,series=\bfseries,size=\LARGE}
+\setbeamerfont{framesubtitle}{shape=\itshape,family=\lishu,series=\bfseries,size=\normalsize}
% \setbeamercolor{frametitle}{fg=茜色}
\setbeamerfont{title}{family=\lishu,series=\bfseries,size=\huge}
@@ -66,7 +67,8 @@
}
\appto{\maketitle}{\end{minipage}}
-
+\newcommand{\addheight}{\parbox{0pt}{\rule{0pt}{1.3\ccwd}}}
+% \setbeamerfont{block title}{series=\addheight}
% \setbeamerfont{block title}{series=\centering}
% \addtobeamertemplate{block alerted begin}{}{\centering}
% \addtobeamertemplate{block example begin}{}{\centering}
@@ -95,25 +97,27 @@
}%
}
+\newlength{\ShenmaMarkerWidth}
+\setlength{\ShenmaMarkerWidth}{2.5em}
\AddToHook{begindocument/before}{%
\newbox{\clouds@shenma}
\savebox{\clouds@shenma}{%
\usebeamercolor[fg]{headline}%
\tikzset{pgfornamentstyle/.style={line width=0pt}}%
- \pgfornamenthan[width=2.5em]{78}%
+ \pgfornamenthan[width=\ShenmaMarkerWidth]{78}%
}
}
\newcommand{\shenmaprogressmarker}{%
\renewcommand{\clouds@progressmarker}{%
- \clip (-1.3em,4em) rectangle (\paperwidth,0pt);
+ \clip (-1.3em,\dimexpr\ht\clouds@shenma + 4em\relax) rectangle (\paperwidth,0pt);
\node[anchor=south,inner sep=1pt] at (\clouds@progressinheadfoot,1.25em)
{\usebox{\clouds@shenma}};
}
}%
-\AtBeginDocument{%
+\AddToHook{begindocument/before}{%
\shenmaprogressmarker
\newbox{\clouds@title@deco}
\savebox{\clouds@title@deco}{%
@@ -130,6 +134,9 @@
\parbox{\dimexpr\clouds@frametitle@actualwidth-5em}{\centering\insertframetitle}%
\hfill\raisebox{0.5ex}{\usebox{\clouds@title@deco}}%
\end{minipage}\par%
+ % 2024-10-08 add frame subtitle
+ \smallskip%
+ {\centering\usebeamerfont{framesubtitle}\mbox{}\insertframesubtitle\par}%
}
\newbox{\clouds@smallhuiwen}
@@ -151,9 +158,8 @@
\begin{tikzpicture}[decoration={markings, mark=between positions 0 and 1 step 2.5em
with { \node[transform shape]{\usebox{\clouds@smallhuiwen}}; }} ]
\path [postaction={decorate}] (0,0) -- (\paperwidth,0);
- \draw[headline.fg!50,line width=0.6pt] (-1.25em,1.25em) -- (\paperwidth,1.25em);
+ \draw[headline.fg!50,line width=0.2ex] (-1.25em,1.25em) -- (\paperwidth,1.25em);
\clouds@progressmarker
- % \fill[headline.fg] (\clouds@progressinheadfoot,1.25em) circle (2pt); %<-- TODO
\end{tikzpicture}
}
}
@@ -194,13 +200,17 @@
\pgfmathsetmacro{\myx}{rnd * 0.8}
\pgfmathsetmacro{\myy}{rnd * 0.8}
\pgfmathtruncatemacro{\myorn}{random(0,1) + #1}
+ \begingroup
+ \ifodd \myorn \tikzset{pgfornamentstyle/.append style={line width=1pt]}} \fi
\node at (\myx * \paperwidth, \myy * \paperheight) {\pgfornamenthan[
color=normal text.bg!\myintensity!white,symmetry=\myflip,scale=\myscale]{\myorn}};
+ \endgroup
}
+\newcommand{\BackgroundOrns}{\randorn{66}\randorn{68}\randorn{66}\randorn{70}\randorn{68}}
\setbeamertemplate{background}{%
\begin{tikzpicture}
\clip (0,0) rectangle (\paperwidth,\paperheight);
- \randorn{66}\randorn{68}\randorn{66}\randorn{70}\randorn{68}
+ \BackgroundOrns%
\end{tikzpicture}
}
diff --git a/Master/texmf-dist/tex/latex/pgfornament-han/beamerthemeTianQing.sty b/Master/texmf-dist/tex/latex/pgfornament-han/beamerthemeTianQing.sty
index 7d4bdfea491..b612979423a 100644
--- a/Master/texmf-dist/tex/latex/pgfornament-han/beamerthemeTianQing.sty
+++ b/Master/texmf-dist/tex/latex/pgfornament-han/beamerthemeTianQing.sty
@@ -1,4 +1,4 @@
-% beamerthemeXiaoshan.sty v1.01 2023/10/29
+% beamerthemeXiaoshan.sty v1.02 2024/09/19
% by LianTze Lim (liantze@gmail.com)
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{beamerthemeTianQing}
@@ -35,12 +35,20 @@
\setbeamerfont{section name}{family=\kaishu,size=\Large}
\setbeamerfont{section title}{family=\kaishu,size=\huge}
\setbeamerfont{section in toc}{family=\kaishu,size=\large}
+\setbeamerfont{block title}{family=\kaishu\romankai,series=\bfseries}
\setbeamercolor{alerted text}{fg=樱桃色}
\setbeamercolor{example text}{fg=绿沉}
\setbeamercolor{block title}{fg=宝蓝}
\setbeamercolor{mini frame}{bg=天青色}
+\newlength{\TQTopDecoWidth}
+\newlength{\TQBottomDecoWidth}
+\setlength{\TQTopDecoWidth}{.5\paperheight}
+\setlength{\TQBottomDecoWidth}{.2\paperheight}
+\newcommand{\TQTopDecoOpacity}{.2}
+\newcommand{\TQBottomDecoOpacity}{.9}
+
\AddToHook{begindocument/before}{%
\newsavebox{\bulletboxone}
\savebox{\bulletboxone}{\usebeamercolor[fg]{structure}\tikz\node[line width=0pt,inner sep=0pt,outer sep=0pt]{\pgfornamenthan[height=1ex]{43}};}
@@ -55,12 +63,12 @@
\savebox{\topcornermotif}{%
\usebeamercolor{deco outline}%
\usebeamercolor{top deco}%
- \tikzset{pgfornamentstyle/.style={rotate=30,color=top deco.fg,draw=deco outline.fg,opacity=.2,inner sep=0pt,ultra thick}}\pgfornamenthan[width=.5\paperheight]{64}}
+ \tikzset{pgfornamentstyle/.style={rotate=30,color=top deco.fg,draw=deco outline.fg,opacity=\TQTopDecoOpacity,inner sep=0pt,ultra thick}}\pgfornamenthan[width=\TQTopDecoWidth]{64}}
\newsavebox{\bottomcornermotif}
\savebox{\bottomcornermotif}{%
\usebeamercolor{structure}%
- \tikzset{pgfornamentstyle/.style={color=structure.fg,opacity=.9,inner sep=0pt,very thick}}\pgfornamenthan[width=.2\paperheight,symmetry=v]{74}}%
+ \tikzset{pgfornamentstyle/.style={color=structure.fg,opacity=\TQBottomDecoOpacity,inner sep=0pt,very thick}}\pgfornamenthan[width=\TQBottomDecoWidth,symmetry=v]{74}}%
}
\setbeamertemplate{itemize item}{\raisebox{.08\ccwd}{\usebox{\bulletboxone}}}
@@ -108,7 +116,7 @@
coltitle = alerted text.fg!70!black,
colback = alerted text.bg,
halign title = flush center,
- fonttitle=\kaishu\romankai\bfseries,
+ fonttitle=\usebeamerfont{block title alerted},
title = #2,
#1
}
@@ -128,7 +136,7 @@
coltitle = example text.fg!70!black,
colback = example text.bg,
halign title = flush center,
- fonttitle=\kaishu\romankai\bfseries,
+ fonttitle=\usebeamerfont{block title example},
title = #2,
#1
}
@@ -150,7 +158,7 @@
coltitle = block title.fg!70!black,
colback = block title.bg,
halign title = flush center,
- fonttitle=\kaishu\romankai\bfseries,
+ fonttitle=\usebeamerfont{block title},
title = #2,
#1
}
diff --git a/Master/texmf-dist/tex/latex/pgfornament-han/beamerthemeXiaoshan.sty b/Master/texmf-dist/tex/latex/pgfornament-han/beamerthemeXiaoshan.sty
index 52daf7b8adc..03800a5a503 100644
--- a/Master/texmf-dist/tex/latex/pgfornament-han/beamerthemeXiaoshan.sty
+++ b/Master/texmf-dist/tex/latex/pgfornament-han/beamerthemeXiaoshan.sty
@@ -1,4 +1,4 @@
-% beamerthemeXiaoshan.sty v1.1 2023/04/23
+% beamerthemeXiaoshan.sty v1.2 2024/10/19
% by LianTze Lim (liantze@gmail.com)
\ProvidesPackage{beamerthemeXiaoshan}
@@ -48,8 +48,9 @@
\linespread{1.0}%
\inserttitle%
\hspace*{2em}\par%
-\vspace*{0.5em}
}
+% Frankly I have no idea if this is the right way to shove in a framesubtitle for metropolis
+\apptocmd{\metropolis@frametitlestrut@end}{\ifx\insertframesubtitle\@empty\else\par\usebeamerfont{framesubtitle}\insertframesubtitle\par\vskip1.5ex\fi}{}{}
\setbeamertemplate{subtitle}{
\raggedleft%
diff --git a/Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty b/Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty
index 711b0e919ae..bcd4f6c79a1 100644
--- a/Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty
+++ b/Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty
@@ -1,8 +1,10 @@
% Author.........: C. Pierquet
-% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{PixelArtTikz}[2024/04/16 v0.1.4 PixelArts with csv and TikZ]
+\ProvidesPackage{PixelArtTikz}[2025/01/04 v0.1.6 PixelArts with csv and TikZ]
+% 0.1.6 Ajout d'un style pour les traits + utilisation de datatool (plus rapide ?)
+% 0.1.5 Amélioration du code interne + possibilité de créer des grilles avec des symboles choisis dans une liste
% 0.1.4 Cylinder anamorphic pixelart
% 0.1.3 Split PA into grid
% 0.1.2 Mini pixerlart
@@ -23,8 +25,7 @@
\RequirePackage{xstring}
\RequirePackage{multicol}
\RequirePackage{listofitems}
-%librairies tikz
-%\usetikzlibrary{calc,shapes.geometric}
+\RequirePackage{ifthen}
%cvs
\if@csvii
\RequirePackage[legacy]{csvsimple}
@@ -33,6 +34,24 @@
\RequirePackage[l3]{csvsimple}
\fi
+%------Styles tikz
+\tikzset{pixlarttrait/.style={}}
+\tikzset{pixlarttraitdecoup/.style={thick,purple}}
+\tikzset{pixlartnoticedecoup/.style={font=\large\sffamily}}
+
+\NewDocumentCommand\TraiteListeSymbPixelArt{ m }{%
+ \IfSubStr{#1}{§}%
+ {%
+ \setsepchar{§}%
+ \readlist*\lstPAchoices{#1}%
+ \xdef\lstPAchoicesrand{\fpeval{randint(1,\lstPAchoiceslen)}}%
+ \lstPAchoices[\lstPAchoicesrand]%
+ }%
+ {%c'est normal
+ #1%
+ }%
+}
+
%------clés [fr] / keys [en]
\defKV[pixelarttkz]{%
Codes=\def\PATlettres{#1},%
@@ -60,36 +79,31 @@
\IfBooleanTF{#1}{}{\begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#3]}
\ifboolKV[pixelarttkz]{Correction}%
{%
+ \readlist*\LCPA\PATcouleurs%
\csvloop{file=#4,no head,command={%
\foreach \l [count=\n] in \csvline {%
\StrDel{\l}{ }[\l]%
- \setsepchar{,}%
- \readlist*\LCPA\PATcouleurs%
\StrPosition{\PATlettres}{\l}[\pixcnt]%
- \xintifboolexpr{\pixcnt>0}%
- {%
- \itemtomacro\LCPA[\pixcnt]\pixcol%
- \ifboolKV[pixelarttkz]{BordCases}%
- {\draw[fill=\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
- {\filldraw[\pixcol] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
- }%
- {}%
+ \ifnum\pixcnt>0%
+ \ifboolKV[pixelarttkz]{BordCases}%
+ {\draw[fill={\LCPA[\pixcnt]}] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
+ {\filldraw[{\LCPA[\pixcnt]}] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
+ \fi%
}%
}%
}%
}%
{%
\ifboolKV[pixelarttkz]{Symb}{%affichage du pixelart versions chiffres si besoin
+ \readlist*\LCNA\PATchiffres%
\csvloop{file=#4,no head,command={%
\foreach \l [count=\n] in \csvline {%
\StrDel{\l}{ }[\l]%
- \setsepchar{,}%
- \readlist*\LCNA\PATchiffres%
\StrPosition{\PATlettres}{\l}[\pixpos]%
\xintifboolexpr{\pixpos>0}%
{%
\itemtomacro\LCNA[\pixpos]\pixchf%
- \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\pixchf} ;%
+ \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\TraiteListeSymbPixelArt{\pixchf}} ;%
}%
{}%
}%
@@ -120,8 +134,8 @@
\IfSubStr{\PATdecoup}{x}%
{%
\StrCut{\PATdecoup}{x}{\NbLigBloc}{\NbColBloc}%tracés des traits
- \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[thick,purple] ({0.5-0.33},{-\i-0.5}) -- ({\thecsvcolumncount+0.5+0.33},{-\i-0.5}) ;}%
- \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[thick,purple] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\thecsvinputline+0.5-0.33}) ;}%
+ \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[pixlarttraitdecoup] ({0.5-0.33},{-\i-0.5}) -- ({\thecsvcolumncount+0.5+0.33},{-\i-0.5}) ;}%
+ \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[pixlarttraitdecoup] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\thecsvinputline+0.5-0.33}) ;}%
}%
{}%
\IfSubStr{\PATdecoup}{+}%
@@ -129,8 +143,8 @@
\StrCut{\PATdecoup}{+}{\NbBlocLIG}{\NbBlocCOL}%
\def\NbLigBloc{\xintieval{(\NbLigTot-1)/\NbBlocLIG}}%
\def\NbColBloc{\xintieval{(\NbColTot)/\NbBlocCOL}}%
- \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[thick,purple] ({0.5-0.33},{-\i-0.5}) -- ({\thecsvcolumncount+0.5+0.33},{-\i-0.5}) ;}%
- \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[thick,purple] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\thecsvinputline+0.5-0.33}) ;}%
+ \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[pixlarttraitdecoup] ({0.5-0.33},{-\i-0.5}) -- ({\thecsvcolumncount+0.5+0.33},{-\i-0.5}) ;}%
+ \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[pixlarttraitdecoup] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\thecsvinputline+0.5-0.33}) ;}%
}%
{}%
}%
@@ -145,11 +159,10 @@
\begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#2]
\ifboolKV[pixelarttkz]{Correction}%
{%
+ \readlist*\LCPA\PATcouleurs%
\csvloop{file=#3,no head,command={%
\foreach \l [count=\n] in \csvline {%
\StrDel{\l}{ }[\l]%
- \setsepchar{,}%
- \readlist*\LCPA\PATcouleursù
\StrPosition{\PATlettres}{\l}[\pixcnt]%
\xintifboolexpr{\pixcnt>0}%
{%
@@ -165,16 +178,15 @@
}%
{%
\ifboolKV[pixelarttkz]{Symb}{%affichage du pixelart versions chiffres si besoin
+ \readlist*\LCNA\PATchiffres%
\csvloop{file=#3,no head,command={%
\foreach \l [count=\n] in \csvline {%
\StrDel{\l}{ }[\l]%
- \setsepchar{,}%
- \readlist*\LCNA\PATchiffres%
\StrPosition{\PATlettres}{\l}[\pixpos]%
\xintifboolexpr{\pixpos>0}%
{%
\itemtomacro\LCNA[\pixpos]\pixchf%
- \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\pixchf} ;%
+ \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\TraiteListeSymbPixelArt{\pixchf}} ;%
}%
{}%
}%
@@ -226,11 +238,10 @@
\IfBooleanTF{#1}{}{\begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#3]}
\ifboolKV[pixelarttkzen]{Correction}%
{%
+ \readlist*\LCPA\PATcouleurs%
\csvloop{file=#4,no head,command={%
\foreach \l [count=\n] in \csvline {%
\StrDel{\l}{ }[\l]%
- \setsepchar{,}%
- \readlist*\LCPA\PATcouleurs%
\StrPosition{\PATlettres}{\l}[\pixcnt]%
\xintifboolexpr{\pixcnt>0}%
{%
@@ -246,16 +257,15 @@
}%
{%
\ifboolKV[pixelarttkzen]{Symb}{%affichage du pixelart versions chiffres si besoin
+ \readlist*\LCNA\PATchiffres%
\csvloop{file=#4,no head,command={%
\foreach \l [count=\n] in \csvline {%
\StrDel{\l}{ }[\l]%
- \setsepchar{,}%
- \readlist*\LCNA\PATchiffres%
\StrPosition{\PATlettres}{\l}[\pixpos]%
\xintifboolexpr{\pixpos>0}%
{%
\itemtomacro\LCNA[\pixpos]\pixchf%
- \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\pixchf} ;%
+ \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\TraiteListeSymbPixelArt{\pixchf}} ;%
}%
{}%
}%
@@ -311,11 +321,10 @@
\begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#2]
\ifboolKV[pixelarttkzen]{Correction}%
{%
+ \readlist*\LCPA\PATcouleurs%
\csvloop{file=#3,no head,command={%
\foreach \l [count=\n] in \csvline {%
\StrDel{\l}{ }[\l]%
- \setsepchar{,}%
- \readlist*\LCPA\PATcouleurs%
\StrPosition{\PATlettres}{\l}[\pixcnt]%
\xintifboolexpr{\pixcnt>0}%
{%
@@ -331,16 +340,15 @@
}%
{%
\ifboolKV[pixelarttkzen]{Symb}{%affichage du pixelart versions chiffres si besoin
+ \readlist*\LCNA\PATchiffres%
\csvloop{file=#3,no head,command={%
\foreach \l [count=\n] in \csvline {%
\StrDel{\l}{ }[\l]%
- \setsepchar{,}%
- \readlist*\LCNA\PATchiffres%
\StrPosition{\PATlettres}{\l}[\pixpos]%
\xintifboolexpr{\pixpos>0}%
{%
\itemtomacro\LCNA[\pixpos]\pixchf%
- \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\pixchf} ;%
+ \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\TraiteListeSymbPixelArt{\pixchf}} ;%
}%
{}%
}%
@@ -472,17 +480,20 @@
\StrCut{#5}{/}{\NumBlocLig}{\NumBlocCol}%
\xdef\PAfirstline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+1}}%
\xdef\PAlastline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+\NbLigBloc}}%
+ \xdef\PAblocmin{\xinteval{(\NbColBloc*(\NumBlocCol-1)+1)}}%
+ \xdef\PAblocmax{\xinteval{(\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}}%
%affichage du corrigé / display of correction
\begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#2]
\ifboolKV[pixelarttkz]{Correction}%
{%
+ \readlist*\LCPA\PATcouleurs%
\csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={%
\foreach \l [count=\n] in \csvline {%
- \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}%
+ \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}%
{%
\StrDel{\l}{ }[\l]%
\setsepchar{,}%
- \readlist*\LCPA\PATcouleurs%
+ %\readlist*\LCPA\PATcouleurs%
\StrPosition{\PATlettres}{\l}[\pixcnt]%
\xintifboolexpr{\pixcnt>0}%
{%
@@ -500,18 +511,19 @@
}%
{%
\ifboolKV[pixelarttkz]{Symb}{%affichage du pixelart versions chiffres si besoin
+ \readlist*\LCNA\PATchiffres%
\csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={%
\foreach \l [count=\n] in \csvline {%
- \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}%
+ \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}%
{%
\StrDel{\l}{ }[\l]%
\setsepchar{,}%
- \readlist*\LCNA\PATchiffres%
+ %\readlist*\LCNA\PATchiffres%
\StrPosition{\PATlettres}{\l}[\pixpos]%
\xintifboolexpr{\pixpos>0}%
{%
\itemtomacro\LCNA[\pixpos]\pixchf%
- \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\pixchf} ;%
+ \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\TraiteListeSymbPixelArt{\pixchf}} ;%
}%
{}%
}%
@@ -523,7 +535,7 @@
{%affichage du pixelart versions lettres ou chiffres simples (<=9) / display of letters/symbols PixelArt
\csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={%
\foreach \l [count=\n] in \csvline {%
- \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}%
+ \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}%
{%
\StrDel{\l}{ }[\l]%
\IfSubStr{\PATlettres}{\l}%
@@ -593,7 +605,7 @@
\begin{tikzpicture}[scale=#2,transform shape]
\xintFor* ##1 in {\xintSeq{1}{\NbTotLig}}\do{%
\xintFor* ##2 in {\xintSeq{1}{\NbTotCol}}\do{%
- \draw[semithick] (##2,-##1) rectangle++(1,-1) node[midway] {\IfBooleanTF{#1}{##1.}{\StrChar{\PAalphabet}{##1}}##2} ;
+ \draw[semithick] (##2,-##1) rectangle++(1,-1) node[midway,pixlartnoticedecoup] {\IfBooleanTF{#1}{##1.}{\StrChar{\PAalphabet}{##1}}##2} ;
}%
}%
\end{tikzpicture}%
@@ -625,17 +637,20 @@
\StrCut{#5}{/}{\NumBlocLig}{\NumBlocCol}%
\xdef\PAfirstline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+1}}%
\xdef\PAlastline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+\NbLigBloc}}%
+ \xdef\PAblocmin{\xinteval{(\NbColBloc*(\NumBlocCol-1)+1)}}%
+ \xdef\PAblocmax{\xinteval{(\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}}%
%affichage du corrigé / display of correction
\begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#2]
\ifboolKV[pixelarttkzen]{Correction}%
{%
+ \readlist*\LCPA\PATcouleurs%
\csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={%
\foreach \l [count=\n] in \csvline {%
- \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}%
+ \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}%
{%
\StrDel{\l}{ }[\l]%
\setsepchar{,}%
- \readlist*\LCPA\PATcouleurs%
+ %\readlist*\LCPA\PATcouleurs%
\StrPosition{\PATlettres}{\l}[\pixcnt]%
\xintifboolexpr{\pixcnt>0}%
{%
@@ -653,18 +668,19 @@
}%
{%
\ifboolKV[pixelarttkzen]{Symb}{%affichage du pixelart versions chiffres si besoin
+ \readlist*\LCNA\PATchiffres%
\csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={%
\foreach \l [count=\n] in \csvline {%
- \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}%
+ \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}%
{%
\StrDel{\l}{ }[\l]%
\setsepchar{,}%
- \readlist*\LCNA\PATchiffres%
+ %\readlist*\LCNA\PATchiffres%
\StrPosition{\PATlettres}{\l}[\pixpos]%
\xintifboolexpr{\pixpos>0}%
{%
\itemtomacro\LCNA[\pixpos]\pixchf%
- \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\pixchf} ;%
+ \draw ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) node[inner sep=0,midway,font=\PATtaille] {\TraiteListeSymbPixelArt{\pixchf}} ;%
}%
{}%
}%
@@ -676,7 +692,7 @@
{%affichage du pixelart versions lettres ou chiffres simples (<=9) / display of letters/symbols PixelArt
\csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={%
\foreach \l [count=\n] in \csvline {%
- \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}%
+ \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}%
{%
\StrDel{\l}{ }[\l]%
\IfSubStr{\PATlettres}{\l}%
@@ -909,10 +925,10 @@
\itemtomacro\LCNA[\pixpos]\pixchf%
\ifboolKV[PixelArtCylinder]{Swap}%
{%
- \draw ({0.5*\CylindAng+(\nnnn-1)*\CylindAng}:{-\AAanamcyllarg+(\thecsvrow-0.5)*\CylindSect}) node[rotate={-90+0.5*\CylindAng+(\nnnn-1)*\CylindAng},font=\PATAAtaille] {\pixchf};%
+ \draw ({0.5*\CylindAng+(\nnnn-1)*\CylindAng}:{-\AAanamcyllarg+(\thecsvrow-0.5)*\CylindSect}) node[rotate={-90+0.5*\CylindAng+(\nnnn-1)*\CylindAng},font=\PATAAtaille] {\TraiteListeSymbPixelArt{\pixchf}} ;%
}%
{%
- \draw ({0.5*\CylindAng+(\nnnn-1)*\CylindAng}:{-\AAanamcylcenter-(\thecsvrow-0.5)*\CylindSect}) node[rotate={-90+0.5*\CylindAng+(\nnnn-1)*\CylindAng},font=\PATAAtaille] {\pixchf};%
+ \draw ({0.5*\CylindAng+(\nnnn-1)*\CylindAng}:{-\AAanamcylcenter-(\thecsvrow-0.5)*\CylindSect}) node[rotate={-90+0.5*\CylindAng+(\nnnn-1)*\CylindAng},font=\PATAAtaille] {\TraiteListeSymbPixelArt{\pixchf}} ;%
}%
}%
{%
@@ -1002,10 +1018,10 @@
\itemtomacro\LCNA[\pixpos]\pixchf%
\ifboolKV[PixlArtCylinder]{Swap}%
{%
- \draw ({0.5*\CylindAng+(\nnnn-1)*\CylindAng}:{-\AAanamcyllarg+(\thecsvrow-0.5)*\CylindSect}) node[rotate={-90+0.5*\CylindAng+(\nnnn-1)*\CylindAng},font=\PATAAtaille] {\pixchf};%
+ \draw ({0.5*\CylindAng+(\nnnn-1)*\CylindAng}:{-\AAanamcyllarg+(\thecsvrow-0.5)*\CylindSect}) node[rotate={-90+0.5*\CylindAng+(\nnnn-1)*\CylindAng},font=\PATAAtaille] {\TraiteListeSymbPixelArt{\pixchf}} ;%
}%
{%
- \draw ({0.5*\CylindAng+(\nnnn-1)*\CylindAng}:{-\AAanamcylcenter-(\thecsvrow-0.5)*\CylindSect}) node[rotate={-90+0.5*\CylindAng+(\nnnn-1)*\CylindAng},font=\PATAAtaille] {\pixchf};%
+ \draw ({0.5*\CylindAng+(\nnnn-1)*\CylindAng}:{-\AAanamcylcenter-(\thecsvrow-0.5)*\CylindSect}) node[rotate={-90+0.5*\CylindAng+(\nnnn-1)*\CylindAng},font=\PATAAtaille] {\TraiteListeSymbPixelArt{\pixchf}} ;%
}%
}%
{%
@@ -1033,5 +1049,199 @@
}%
}
+%-----With datatool, faster ?
+\RequirePackage{datatool}
+
+\NewDocumentCommand\readdtcsv{ m m }{%
+ \DTLsetseparator{|}%
+ \DTLloaddb[noheader,keys={cvsline}]{#2}{#1}%
+}
+
+\NewDocumentCommand\dtpixlarttikz{ O{} D<>{} m }{%commande autonome
+ \useKVdefault[pixelarttkz]%
+ \setKV[pixelarttkz]{#1}%
+ %affichage du corrigé / display of correction
+ \begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#2]
+ \ifboolKV[pixelarttkz]{Correction}%
+ {%
+ \readlist*\LCPA\PATcouleurs%
+ \DTLforeach*{#3}{\csvline=cvsline}{%
+ \setsepchar{,}%
+ \readlist*\tmpcsvline\csvline%
+ \foreachitem\PAchar\in\tmpcsvline{%
+ \StrPosition{\PATlettres}{\PAchar}[\pixcnt]%
+ \ifnum\pixcnt>0%
+ \ifboolKV[pixelarttkz]{BordCases}%
+ {\draw[fill={\LCPA[\pixcnt]}] ({\PAcharcnt-0.5},{-\theDTLrowi+0.5}) rectangle++(1,-1) ;}%
+ {\filldraw[{\LCPA[\pixcnt]}] ({\PAcharcnt-0.5},{-\theDTLrowi+0.5}) rectangle++(1,-1) ;}%
+ \fi%
+ }
+ % \foreach \l [count=\n] in \csvline {%old vesion, with foreach ?
+ % \StrPosition{\PATlettres}{\l}[\pixcnt]%
+ % \ifnum\pixcnt>0%
+ % \ifboolKV[pixelarttkz]{BordCases}%
+ % {\draw[fill={\LCPA[\pixcnt]}] ({\n-0.5},{-\theDTLrowi+0.5}) rectangle ({\n+0.5},{-\theDTLrowi-0.5}) ;}%
+ % {\filldraw[{\LCPA[\pixcnt]}] ({\n-0.5},{-\theDTLrowi+0.5}) rectangle ({\n+0.5},{-\theDTLrowi-0.5}) ;}%
+ % \fi%
+ % }%
+ }%
+ }%
+ {%
+ \ifboolKV[pixelarttkz]{Symb}%
+ {%affichage du pixelart versions chiffres si besoin
+ \readlist*\LCNA\PATchiffres%
+ \DTLforeach*{#3}{\csvline=cvsline}{%
+ \setsepchar{,}%
+ \readlist*\tmpcsvline\csvline%
+ \foreachitem\PAchar\in\tmpcsvline{%
+ \StrPosition{\PATlettres}{\PAchar}[\pixpos]%
+ \xintifboolexpr{\pixpos>0}%
+ {%
+ \itemtomacro\LCNA[\pixpos]\pixchf%
+ \draw ({\PAcharcnt-0.5},{-\theDTLrowi+0.5}) rectangle++(1,-1) node[inner sep=0,midway,font=\PATtaille] {\TraiteListeSymbPixelArt{\pixchf}} ;%
+ }%
+ {}%
+ }
+ }%
+ }%
+ {%affichage du pixelart versions lettres ou chiffres simples (<=9) / display of letters/symbols PixelArt
+ \DTLforeach*{#3}{\csvline=cvsline}{%
+ \setsepchar{,}%
+ \readlist*\tmpcsvline\csvline%
+ \foreachitem\PAchar\in\tmpcsvline{%
+ \IfSubStr{\PATlettres}{\PAchar}%
+ {%
+ \draw ({\PAcharcnt-0.5},{-\theDTLrowi+0.5}) rectangle++(1,-1) node[inner sep=0,midway,font=\PATtaille] {\PAchar};%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ %affichage des découpages éventuels
+ \IfStrEq{\PATdecoup}{}%
+ {}%
+ {%
+ \xdef\NbLigTot{\DTLrowcount{#3}}%
+ \DTLgetvalue{\myvalrowone}{#3}{1}{1}%
+ \StrCount{\myvalrowone}{,}[\NbColTot]%
+ \xdef\NbColTot{\inteval{\NbColTot+1}}%
+ \IfSubStr{\PATdecoup}{x}%
+ {%
+ \StrCut{\PATdecoup}{x}{\NbLigBloc}{\NbColBloc}%tracés des traits
+ \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[pixlarttraitdecoup] ({0.5-0.33},{-\i-0.5}) -- ({\NbColTot+0.5+0.33},{-\i-0.5}) ;}%
+ \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[pixlarttraitdecoup] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\NbLigTot-0.5-0.33}) ;}%
+ }%
+ {}%
+ \IfSubStr{\PATdecoup}{+}%
+ {%
+ \StrCut{\PATdecoup}{+}{\NbBlocLIG}{\NbBlocCOL}%
+ \def\NbLigBloc{\xintieval{(\NbLigTot-1)/\NbBlocLIG}}%
+ \def\NbColBloc{\xintieval{(\NbColTot)/\NbBlocCOL}}%
+ \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[pixlarttraitdecoup] ({0.5-0.33},{-\i-0.5}) -- ({\NbColTot+0.5+0.33},{-\i-0.5}) ;}%
+ \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[pixlarttraitdecoup] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\NbLigTot-0.5-0.33}) ;}%
+ }%
+ {}%
+ }%
+ \end{tikzpicture}%
+}
+
+\NewDocumentCommand\dtpixlarttikzblock{ O{} D<>{} m m m }{%commande individuelle avec loi & datatool...
+ %3=fichier
+ %4=taille blocs (LxC) ou nombre de blocs (L+C)
+ %5=numbloc
+ \useKVdefault[pixelarttkz]%
+ \setKV[pixelarttkz]{#1}%
+ \xdef\NbLigTot{\DTLrowcount{#3}}%
+ \DTLgetvalue{\myvalrowone}{#3}{1}{1}%
+ \StrCount{\myvalrowone}{,}[\NbColTot]%
+ \xdef\NbColTot{\inteval{\NbColTot+1}}%
+ \IfSubStr{#4}{x}%
+ {%
+ \StrCut{#4}{x}{\NbLigBloc}{\NbColBloc}%
+ }%
+ {}%
+ \IfSubStr{#4}{+}%
+ {%
+ \StrCut{#4}{+}{\NbBlocLIG}{\NbBlocCOL}%
+ \xdef\NbLigBloc{\xinteval{(\NbLigTot-1)/\NbBlocLIG}}%
+ \xdef\NbColBloc{\xinteval{(\NbColTot)/\NbBlocCOL}}%
+ }%
+ {}%
+ \StrCut{#5}{/}{\NumBlocLig}{\NumBlocCol}%
+ \xdef\PAfirstline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+1}}%
+ \xdef\PAlastline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+\NbLigBloc}}%
+ \xdef\PAblocmin{\xinteval{(\NbColBloc*(\NumBlocCol-1)+1)}}%
+ \xdef\PAblocmax{\xinteval{(\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}}%
+ %affichage du corrigé / display of correction
+ \begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#2]
+ \ifboolKV[pixelarttkz]{Correction}%
+ {%
+ \readlist*\LCPA\PATcouleurs%
+ \foreach \line in {\PAfirstline,...,\PAlastline}{%
+ \DTLgetvalue{\csvline}{#3}{\line}{1}%
+ \setsepchar{,}%
+ \readlist*\tmpcsvline\csvline%
+ \foreachitem\PAchar\in\tmpcsvline{%
+ \xintifboolexpr{ \PAcharcnt >= \PAblocmin 'and' \PAcharcnt <= \PAblocmax}%
+ {%
+ \StrPosition{\PATlettres}{\PAchar}[\pixcnt]%
+ \xintifboolexpr{\pixcnt>0}%
+ {%
+ \itemtomacro\LCPA[\pixcnt]\pixcol%
+ \ifboolKV[pixelarttkz]{BordCases}%
+ {\draw[fill=\pixcol] ({\PAcharcnt-0.5},{-\line+0.5}) rectangle++(1,-1) ;}%
+ {\filldraw[\pixcol] ({\PAcharcnt-0.5},{-\line+0.5}) rectangle++(1,-1) ;}%
+ }%
+ {}%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ {%
+ \ifboolKV[pixelarttkz]{Symb}%
+ {%affichage du pixelart versions chiffres si besoin
+ \readlist*\LCNA\PATchiffres%
+ \foreach \line in {\PAfirstline,...,\PAlastline}{%
+ \DTLgetvalue{\csvline}{#3}{\line}{1}%
+ \setsepchar{,}%
+ \readlist*\tmpcsvline\csvline%
+ \foreachitem\PAchar\in\tmpcsvline{%
+ \xintifboolexpr{ \PAcharcnt >= \PAblocmin 'and' \PAcharcnt <= \PAblocmax}%
+ {%
+ \StrPosition{\PATlettres}{\PAchar}[\pixpos]%
+ \xintifboolexpr{\pixpos>0}%
+ {%
+ \itemtomacro\LCNA[\pixpos]\pixchf%
+ \draw ({\PAcharcnt-0.5},{-\line+0.5}) rectangle++(1,-1) node[inner sep=0,midway,font=\PATtaille] {\TraiteListeSymbPixelArt{\pixchf}} ;%
+ }%
+ {}%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ {%affichage du pixelart versions lettres ou chiffres simples (<=9) / display of letters/symbols PixelArt
+ \foreach \line in {\PAfirstline,...,\PAlastline}{%
+ \DTLgetvalue{\csvline}{#3}{\line}{1}%
+ \setsepchar{,}%
+ \readlist*\tmpcsvline\csvline%
+ \foreachitem\PAchar\in\tmpcsvline{%
+ \xintifboolexpr{ \PAcharcnt >= \PAblocmin 'and' \PAcharcnt <= \PAblocmax}%
+ {%
+ \IfSubStr{\PATlettres}{\PAchar}%
+ {%
+ \draw ({\PAcharcnt-0.5},{-\line+0.5}) rectangle++(1,-1) node[inner sep=0,midway,font=\PATtaille] {\PAchar};%
+ }%
+ {}%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ \end{tikzpicture}%
+}
\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/plex-otf/plex-otf.sty b/Master/texmf-dist/tex/latex/plex-otf/plex-otf.sty
index c7810d9ba9d..8d1dda9b56b 100644
--- a/Master/texmf-dist/tex/latex/plex-otf/plex-otf.sty
+++ b/Master/texmf-dist/tex/latex/plex-otf/plex-otf.sty
@@ -1,27 +1,26 @@
-%% $Id: plex-otf.sty 762 2023-09-10 18:44:24Z herbert $
+%% $Id: plex-otf.sty 1052 2025-01-02 12:10:37Z herbert $
%%
%% This file is distributed under the terms of the LaTeX Project Public
%% License from CTAN archives in directory macros/latex/base/lppl.txt.
%% Either version 1.3 or, at your option, any later version.
%%
-% Copyright 2023- Herbert Voss hvoss@tug.org
+% Copyright 2023-2025 Herbert Voss hvoss@tug.org
%%
\ProvidesPackage{plex-otf}[%
- 2023/09/10 v. 0.08a (Herbert Voss) Supports plex OpenType for lualatex/xelatex.]
+ 2025/01/03 v. 0.10 (Herbert Voss) Supports plex OpenType for lualatex/xelatex.]
%
-\RequirePackage{ifxetex,ifluatex,xkeyval,textcomp}
-\RequirePackage{fontspec}
-
-\newif\ifPlex@usefilenames \Plex@usefilenamestrue
-\DeclareOptionX{usefilenames}[true]{\@nameuse{Plex@usefilenames#1}}
+\RequirePackage{iftex,xkeyval,textcomp}
+\RequirePackage{unicode-math}
\newif\ifPlex@mono \Plex@monotrue
\newif\ifPlex@serif \Plex@seriftrue
\newif\ifPlex@sans \Plex@sanstrue
+\newif\ifPlex@math \Plex@mathtrue
%
\DeclareOptionX{mono}[true]{\@nameuse{Plex@mono#1}}
\DeclareOptionX{sans}[true]{\@nameuse{Plex@sans#1}}
\DeclareOptionX{serif}[true]{\@nameuse{Plex@serif#1}}
+\DeclareOptionX{math}[true]{\@nameuse{Plex@math#1}}
%
%Possible Styles = ExtraLight : Upright, Italic
% Light : Upright, Italic
@@ -44,26 +43,29 @@
\def\Plex@TTstyle{#1}%
}
%
-\def\PlexRM@SCfont{}% {texgyretermes}
+\def\PlexRM@SCfont{texgyretermes}%
\DeclareOptionX{RMSCfont}{\renewcommand*\PlexRM@SCfont{#1}}
-\def\PlexSS@SCfont{}% {texgyreheros}
+\def\PlexSS@SCfont{texgyreheros}%
\DeclareOptionX{SSSCfont}{\renewcommand*\PlexSS@SCfont{#1}}
\providecommand\PlexRM@features{}% Roman
\providecommand\PlexSS@features{}% SansSerif
\providecommand\PlexSScon@features{}% SansSerif Condensed
\providecommand\PlexTT@features{}% Scale=MatchLowercase,FakeStretch=0.9}% Typewriter
+\providecommand\PlexMM@features{}% Math regular
+\providecommand\PlexMMbold@features{}% Math bold
\providecommand\Plex@DefaultFeatures{}
%
\DeclareOptionX{RM}{\renewcommand*\PlexRM@features{#1}}
\DeclareOptionX{SS}{\renewcommand*\PlexSS@features{#1}}
\DeclareOptionX{SScon}{\renewcommand*\PlexSScon@features{#1}}
\DeclareOptionX{TT}{\renewcommand*\PlexTT@features{#1}}
+\DeclareOptionX{MM}{\renewcommand*{\PlexMM@features}{#1}}
+\DeclareOptionX{MMbold}{\renewcommand*{\PlexMMbold@features}{#1}}
\DeclareOptionX{DefaultFeatures}{\def\Plex@DefaultFeatures{#1}}
\ProcessOptionsX\relax
-
\def\Plex@test#1#2\@nil{%
\ifx S#1 \gdef\Plex@boldstyle{SemiBold}%
\else \gdef\Plex@style{#1#2}%
@@ -110,6 +112,7 @@
%
\ifx\@empty\PlexRM@SCfont\else
\g@addto@macro{\PlexRM@features}{,%
+ Extension = .otf,
SmallCapsFont = \PlexRM@SCfont-regular,
SmallCapsFeatures = {Letters=SmallCaps,
\Plex@@Renderer,
@@ -121,6 +124,7 @@
\fi
\ifx\@empty\PlexSS@SCfont\else
\g@addto@macro{\PlexSS@features}{,%
+ Extension = .otf,
SmallCapsFont = \PlexSS@SCfont-regular,
SmallCapsFeatures = {Letters=SmallCaps,
\Plex@@Renderer,
@@ -133,11 +137,8 @@
%\DeclareTextCommand{\SS}{TU}{\char"1E9E}
-\ifPlex@usefilenames%%%%%%%%%%%%%%%%%%% DATEINAMEN %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\typeout {Using file names for the Plex font}%
-%
- \ifPlex@serif
- \edef\Plex@@Weight{\ifx\@empty\Plex@RMstyle Regular\else\Plex@RMstyle\fi}
+\ifPlex@serif
+ \edef\Plex@@Weight{\ifx\@empty\Plex@RMstyle Regular\else\Plex@RMstyle\fi}
%
\setmainfont{IBMPlexSerif}[% main rm
Extension = .otf,
@@ -194,9 +195,9 @@
BoldFont = *-SemiBold,
BoldItalicFont = *-SemiBoldItalic,
]
- \fi
+\fi % END ifSerif
%
- \ifPlex@sans
+\ifPlex@sans
\edef\Plex@@Weight{\ifx\Plex@SSstyle\@empty Regular\else\Plex@SSstyle\fi}
\setsansfont{IBMPlexSans}[% main sans
Extension = .otf,
@@ -255,7 +256,7 @@
BoldItalicFont = *-SemiBoldItalic,
]
%
-% Sans Serif COndensed
+% Sans Serif Condensed
%
\edef\Plex@@Weight{\ifx\Plex@SSconstyle\@empty Regular\else\Plex@SSconstyle\fi}
\newfontfamily\sffamilyCon{IBMPlexSansCondensed}[% main sans condensed
@@ -314,7 +315,7 @@
BoldFont = *-SemiBold,
BoldItalicFont = *-SemiBoldItalic,
]
- \fi
+\fi % end ifSans
%
\ifPlex@mono
\edef\Plex@@Weight{\ifx\Plex@TTstyle\@empty Regular\else\Plex@TTstyle\fi}
@@ -371,217 +372,21 @@
BoldItalicFont = *-SemiBoldItalic,
\PlexRM@features,
]
- \fi % End PlexMono
-%
-\else%%%%%%%%%%%%%%%%%%% Ende DATEINAMEN %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %%%%%%%%%%%%%%%%%%% Symbolische NAMEN %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\typeout {Using symbolic names for the Plex font}%
-\ifPlex@serif
- \edef\Plex@@Weight{\ifx\Plex@RMstyle\@empty \else\Plex@RMstyle\fi}
-%
- \setmainfont{IBM Plex Serif}[% main rm
- UprightFont= * \Plex@@Weight,
- BoldFont = * \Plex@RMboldstyle,
- ItalicFont = * \Plex@RMstyle Italic,
- BoldItalicFont = * \Plex@RMboldstyle Italic,
- SlantedFont = * \Plex@RMstyle Italic,
-% Scale = 0.92,
- \PlexRM@features,
- ]
- \newfontfamily\slshapeRM{IBMPlexSans}[%
- FakeSlant = 0.2,
- UprightFont = * \Plex@@Weight,
- BoldFont = * \Plex@RMboldstyle,
- \PlexRM@features,
- ]
- \newfontfamily\PlexExtraLightRM{IBM Plex Serif}[%
- UprightFont= *-ExtraLight,
- ItalicFont = *-ExtraLightItalic,
- \PlexRM@features,
- ]
- \newfontfamily\PlexLightRM{IBM Plex Serif}[%
- UprightFont= * Light,
- ItalicFont = * LightItalic,
- \PlexRM@features,
- ]
- \newfontfamily\PlexThinRM{IBM Plex Serif}[%
- UprightFont= * Thin,
- ItalicFont = * ThinItalic,
- \PlexRM@features,
- ]
- \newfontfamily\PlexMediumRM{IBM Plex Serif}[%
- UprightFont= * Medium,
- ItalicFont = * MediumItalic,
- \PlexRM@features,
- ]
- \newfontfamily\PlexTextRM{IBM Plex Serif}[%
- UprightFont= * Text,
- ItalicFont = * TextItalic,
- \PlexRM@features,
- ]
- \newfontfamily\PlexSemiBoldRM{IBM Plex Serif}[%
- UprightFont= * \Plex@@Weight,
- BoldFont = * SemiBold,
- BoldItalicFont = * SemiBoldItalic,
- \PlexRM@features,
- ]
-\fi
-%
-\ifPlex@sans
- \edef\Plex@@Weight{\ifx\Plex@SSstyle\@empty\else\Plex@SSstyle\fi}
-%
- \setsansfont{IBM Plex Sans}[%
- UprightFont= * \Plex@@Weight,
- BoldFont = * \Plex@SSboldstyle,
- ItalicFont = * \Plex@SSstyle Italic,
- BoldItalicFont = * \Plex@SSboldstyle Italic,
- SlantedFont = * \Plex@SSstyle Italic,
-% Scale = 0.92,
- \PlexSS@features,
- ]
- \newfontfamily\slshapeSS{IBMPlexSans}[%
- FakeSlant = 0.2,
- UprightFont = * \Plex@@Weight,
- BoldFont = * \Plex@SSboldstyle,
- \PlexSS@features,
- ]
- \newfontfamily\PlexExtraLightSS{IBM Plex Sans}[%
- UprightFont= * ExtraLight,
- ItalicFont = * ExtraLightItalic,
- \PlexSS@features,
- ]
- \newfontfamily\PlexLightSS{IBM Plex Sans}[%
- UprightFont= * Light,
- ItalicFont = * LightItalic,
- \PlexSS@features,
- ]
- \newfontfamily\PlexThinSS{IBM Plex Sans}[%
- UprightFont= * Thin,
- ItalicFont = * ThinItalic,
- \PlexSS@features,
- ]
- \newfontfamily\PlexMediumSS{IBM Plex Sans}[%
- UprightFont= * Medium,
- ItalicFont = * MediumItalic,
- \PlexSS@features,
- ]
- \newfontfamily\PlexTextSS{IBM Plex Sans}[%
- UprightFont= * Text,
- ItalicFont = * TextItalic,
- \PlexSS@features,
- ]
- \newfontfamily\PlexSemiBoldSS{IBM Plex Sans}[%
- UprightFont= * \Plex@@Weight,
- BoldFont = * SemiBold,
- BoldItalicFont = * SemiBoldItalic,
- \PlexRM@features,
- ]
-%%
-%% Sans Serif Condensed
-%%
- \edef\Plex@@Weight{\ifx\Plex@SSconstyle\@empty\else\Plex@SSconstyle\fi}
-%
- \newfontfamily\sffamilyCon{IBM Plex Sans Condensed}[%
- UprightFont= * \Plex@@Weight,
- BoldFont = * \Plex@SSconboldstyle,
- ItalicFont = * \Plex@SSconstyle Italic,
- BoldItalicFont = * \Plex@SSconboldstyle Italic,
- SlantedFont = * \Plex@SSconstyle Italic,
-% Scale = 0.92,
- \PlexSScon@features,
- ]
- \newfontfamily\slshapeSScon{IBMPlexSans}[%
- FakeSlant = 0.2,
- UprightFont = * \Plex@@Weight,
- BoldFont = * \Plex@SSconboldstyle,
- \PlexSScon@features,
- ]
- \newfontfamily\PlexExtraLightSScon{IBM Plex Sans}[%
- UprightFont= * ExtraLight,
- ItalicFont = * ExtraLightItalic,
- \PlexSScon@features,
- ]
- \newfontfamily\PlexLightSScon{IBM Plex Sans}[%
- UprightFont= * Light,
- ItalicFont = * LightItalic,
- \PlexSScon@features,
- ]
- \newfontfamily\PlexThinSScon{IBM Plex Sans}[%
- UprightFont= * Thin,
- ItalicFont = * ThinItalic,
- \PlexSScon@features,
- ]
- \newfontfamily\PlexMediumSScon{IBM Plex Sans}[%
- UprightFont= * Medium,
- ItalicFont = * MediumItalic,
- \PlexSScon@features,
- ]
- \newfontfamily\PlexTextSScon{IBM Plex Sans}[%
- UprightFont= * Text,
- ItalicFont = * TextItalic,
- \PlexSScon@features,
- ]
- \newfontfamily\PlexSemiBoldSScon{IBM Plex Sans}[%
- UprightFont= * \Plex@@Weight,
- BoldFont = * SemiBold,
- BoldItalicFont = * SemiBoldItalic,
- \PlexRM@features,
- ]
-\fi
+\fi % End ifPlexMono
%
-\ifPlex@mono
- \edef\Plex@@Weight{\ifx\Plex@TTstyle\@empty\else\Plex@TTstyle\fi}
-%
- \setmonofont{IBM Plex Mono}[%
- UprightFont= * \Plex@@Weight,
- BoldFont = * \Plex@TTboldstyle,
- ItalicFont = * \Plex@TTstyle Italic,
- BoldItalicFont = * \Plex@TTboldstyle Italic,
- SlantedFont = *-\Plex@TTstyle Italic,
-% Scale = 0.92,
- \PlexTT@features,
- ]
- \newfontfamily\slshapeTT{IBMPlexMono}[%
- FakeSlant = 0.2,
- UprightFont = * \Plex@@Weight,
- BoldFont = * \Plex@TTboldstyle,
- \PlexTT@features,
- ]
- \newfontfamily\PlexExtraLightTT{IBM Plex Mono}[%
- UprightFont= * ExtraLight,
- ItalicFont = * ExtraLightItalic,
- \PlexTT@features,
- ]
- \newfontfamily\PlexLightTT{IBM Plex Mono}[%
- UprightFont= * Light,
- ItalicFont = * LightItalic,
- \PlexTT@features,
- ]
- \newfontfamily\PlexThinTT{IBM Plex Mono}[%
- UprightFont= * Thin,
- ItalicFont = * ThinItalic,
- \PlexTT@features,
- ]
- \newfontfamily\PlexMediumTT{IBM Plex Mono}[%
- UprightFont= * Medium,
- ItalicFont = * MediumItalic,
- \PlexTT@features,
- ]
- \newfontfamily\PlexTextTT{IBM Plex Mono}[%
- UprightFont= * Text,
- ItalicFont = * TextItalic,
- \PlexTT@features,
- ]
- \newfontfamily\PlexSemiBoldTT{IBM Plex Mono}[%
- UprightFont= * \Plex@@Weight,
- BoldFont = * SemiBold,
- BoldItalicFont = * SemiBoldItalic,
- \PlexRM@features,
- ]
-\fi
+% Setting math
+% First we have to expand the feature macros:
+\ifPlex@math
+ \ifxetex
+ \expandafter\setmathfont\expandafter[\PlexMM@features,version=normal]{IBMPlexMath-Regular.otf}%
+ \expandafter\setmathfont\expandafter[\PlexMM@features,FakeBold=3,version=bold]{IBMPlexMath-Regular.otf}%
+ \else
+ \expandafter\setmathfont\expandafter[\PlexMM@features,version=normal]{IBMPlexMath-Regular.otf}%
+ \expandafter\setmathfont\expandafter[\PlexMM@features,FakeBold=3,version=bold]{IBMPlexMath-Regular.otf}%
+ \fi
+ \mathversion{normal}%
+\fi% End ifMath
%
-\fi% end \ifPlex@usefilenames
-
\DeclareTextFontCommand{\textsl}{\ifx\f@family\rmdefault\slshapeRM\else\slshapeSS\fi}
\DeclareRobustCommand\slshape
{\not@math@alphabet\slshape\relax
@@ -607,53 +412,3 @@
\endinput
-
-insgesamt 4448
--rwxr-xr-x 1 voss voss 94936 Okt 27 11:06 IBMPlexMono-BoldItalic.ttf
--rwxr-xr-x 1 voss voss 90024 Okt 27 11:06 IBMPlexMono-Bold.ttf
--rwxr-xr-x 1 voss voss 95436 Okt 27 11:06 IBMPlexMono-ExtraLightItalic.ttf
--rwxr-xr-x 1 voss voss 89652 Okt 27 11:06 IBMPlexMono-ExtraLight.ttf
--rwxr-xr-x 1 voss voss 94656 Okt 27 11:06 IBMPlexMono-Italic.ttf
--rwxr-xr-x 1 voss voss 94300 Okt 27 11:06 IBMPlexMono-LightItalic.ttf
--rwxr-xr-x 1 voss voss 88860 Okt 27 11:06 IBMPlexMono-Light.ttf
--rwxr-xr-x 1 voss voss 94648 Okt 27 11:06 IBMPlexMono-MediumItalic.ttf
--rwxr-xr-x 1 voss voss 89708 Okt 27 11:06 IBMPlexMono-Medium.ttf
--rwxr-xr-x 1 voss voss 88848 Okt 27 11:06 IBMPlexMono-Regular.ttf
--rwxr-xr-x 1 voss voss 97780 Okt 27 11:06 IBMPlexMono-SemiBoldItalic.ttf
--rwxr-xr-x 1 voss voss 92972 Okt 27 11:06 IBMPlexMono-SemiBold.ttf
--rwxr-xr-x 1 voss voss 94088 Okt 27 11:06 IBMPlexMono-TextItalic.ttf
--rwxr-xr-x 1 voss voss 88784 Okt 27 11:06 IBMPlexMono-Text.ttf
--rwxr-xr-x 1 voss voss 95496 Okt 27 11:06 IBMPlexMono-ThinItalic.ttf
--rwxr-xr-x 1 voss voss 90092 Okt 27 11:06 IBMPlexMono-Thin.ttf
--rwxr-xr-x 1 voss voss 112200 Okt 27 11:06 IBMPlexSans-BoldItalic.ttf
--rwxr-xr-x 1 voss voss 107732 Okt 27 11:06 IBMPlexSans-Bold.ttf
--rwxr-xr-x 1 voss voss 115848 Okt 27 11:06 IBMPlexSans-ExtraLightItalic.ttf
--rwxr-xr-x 1 voss voss 111220 Okt 27 11:06 IBMPlexSans-ExtraLight.ttf
--rwxr-xr-x 1 voss voss 112848 Okt 27 11:06 IBMPlexSans-Italic.ttf
--rwxr-xr-x 1 voss voss 114144 Okt 27 11:06 IBMPlexSans-LightItalic.ttf
--rwxr-xr-x 1 voss voss 109512 Okt 27 11:06 IBMPlexSans-Light.ttf
--rwxr-xr-x 1 voss voss 112056 Okt 27 11:06 IBMPlexSans-MediumItalic.ttf
--rwxr-xr-x 1 voss voss 107940 Okt 27 11:06 IBMPlexSans-Medium.ttf
--rwxr-xr-x 1 voss voss 107988 Okt 27 11:06 IBMPlexSans-Regular.ttf
--rwxr-xr-x 1 voss voss 112528 Okt 27 11:06 IBMPlexSans-SemiBoldItalic.ttf
--rwxr-xr-x 1 voss voss 107856 Okt 27 11:06 IBMPlexSans-SemiBold.ttf
--rwxr-xr-x 1 voss voss 112400 Okt 27 11:06 IBMPlexSans-TextItalic.ttf
--rwxr-xr-x 1 voss voss 108168 Okt 27 11:06 IBMPlexSans-Text.ttf
--rwxr-xr-x 1 voss voss 116628 Okt 27 11:06 IBMPlexSans-ThinItalic.ttf
--rwxr-xr-x 1 voss voss 112228 Okt 27 11:06 IBMPlexSans-Thin.ttf
--rwxr-xr-x 1 voss voss 76056 Okt 27 11:06 IBMPlexSerif-BoldItalic.otf
--rwxr-xr-x 1 voss voss 74492 Okt 27 11:06 IBMPlexSerif-Bold.otf
--rwxr-xr-x 1 voss voss 74184 Okt 27 11:06 IBMPlexSerif-ExtraLightItalic.otf
--rwxr-xr-x 1 voss voss 73836 Okt 27 11:06 IBMPlexSerif-ExtraLight.otf
--rwxr-xr-x 1 voss voss 74204 Okt 27 11:06 IBMPlexSerif-Italic.otf
--rwxr-xr-x 1 voss voss 75128 Okt 27 11:06 IBMPlexSerif-LightItalic.otf
--rwxr-xr-x 1 voss voss 73504 Okt 27 11:06 IBMPlexSerif-Light.otf
--rwxr-xr-x 1 voss voss 76528 Okt 27 11:06 IBMPlexSerif-MediumItalic.otf
--rwxr-xr-x 1 voss voss 74620 Okt 27 11:06 IBMPlexSerif-Medium.otf
--rwxr-xr-x 1 voss voss 72560 Okt 27 11:06 IBMPlexSerif-Regular.otf
--rwxr-xr-x 1 voss voss 76672 Okt 27 11:06 IBMPlexSerif-SemiBoldItalic.otf
--rwxr-xr-x 1 voss voss 75356 Okt 27 11:06 IBMPlexSerif-SemiBold.otf
--rwxr-xr-x 1 voss voss 77172 Okt 27 11:06 IBMPlexSerif-TextItalic.otf
--rwxr-xr-x 1 voss voss 74388 Okt 27 11:06 IBMPlexSerif-Text.otf
--rwxr-xr-x 1 voss voss 72308 Okt 27 11:06 IBMPlexSerif-ThinItalic.otf
--rwxr-xr-x 1 voss voss 71116 Okt 27 11:06 IBMPlexSerif-Thin.otf
diff --git a/Master/texmf-dist/tex/latex/pmdraw/pmdraw.sty b/Master/texmf-dist/tex/latex/pmdraw/pmdraw.sty
index 36f506b51fa..bc4e6e82e01 100644
--- a/Master/texmf-dist/tex/latex/pmdraw/pmdraw.sty
+++ b/Master/texmf-dist/tex/latex/pmdraw/pmdraw.sty
@@ -1,8 +1,8 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{pmdraw}[2024-06-02 v1.4 pmdraw]
+\ProvidesPackage{pmdraw}[2025-01-28 v1.7 pmdraw]
% *------------------------------*
-% |7````````````````````````````4|
+% |2````````````````````````````1|
% |`````____````____`````````````|
% |````|MFMF\ /MFMF|````````````|
% |````|MF|MF\/MF|MF|````````````|
@@ -14,7 +14,7 @@
% |``````````````|MF|````````````|
% |``````````````|MF|````````````|
% |``````````````|MF|````````````|
-% |3````````````````````````````4|
+% |4````````````````````````````2|
% *------------------------------*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -24,7 +24,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \RequirePackage{datetime}
-\RequirePackage{keyval}
+\RequirePackage{xkeyval}
\RequirePackage{tikz}
\usetikzlibrary{math,decorations.pathreplacing,calligraphy,backgrounds}
@@ -41,15 +41,16 @@
\newcommand{\pmdraw@diagSep}{1}% Vertical separation between bottom row of top diagram and top row of bottom diagram in product diagram
\newcommand{\pmdraw@drawAedgesOptions}{}% Draw options for added edges in product diagram
+\newcommand{\pmdraw@drawAedgesOptionsDefault}{}% Default draw options for added edges in product diagram
\newcommand{\pmdraw@drawAedges}[2]{% Draws added edges in product diagram from #1 vertex to #2 vertex, assumes #1<#2
\@ifclassloaded{beamer}{% If in beamer
\uncover<\pmdraw@edgesAddedUncover>{% Uncovers added edges
\foreach \x in {#1,...,#2} {% For each vertex in range
\ifnum\value{pmdraw@ifEdgesAdded}=0% If drawing added edges
- \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge
+ \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptionsDefault,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge
\else% If hiding top vertices
\phantom{%
- \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge
+ \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptionsDefault,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge
}%
\fi%
}%
@@ -57,10 +58,10 @@
}{% If not in beamer
\foreach \x in {#1,...,#2} {% For each vertex in range
\ifnum\value{pmdraw@ifEdgesAdded}=0% If drawing added edges
- \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge
+ \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptionsDefault,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge
\else% If hiding top vertices
\phantom{%
- \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge
+ \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptionsDefault,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge
}%
\fi%
}%
@@ -123,10 +124,11 @@
\let\pmdraw@drawLabelTop\pmdraw@drawLabelTopDefault% For top row, draws the label #3 for a vertex at (#1,#2)
\newcommand{\pmdraw@drawLedgesDrawOptions}{}% Draw options for lower non-transversal edges
+\newcommand{\pmdraw@drawLedgesDrawOptionsDefault}{}% Default draw options for lower non-transversal edges
\newcommand{\pmdraw@drawLedgesDrawDefault}[2]{% Draws lower non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2 - DEFAULT
- \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1,0) arc (180:90:\pmdraw{edgeHeight});% Draw left arch
- \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1+\pmdraw{edgeHeight},\pmdraw{edgeHeight}) -- (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight});% Draw straight line
- \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight}) arc (90:0:\pmdraw{edgeHeight});% Draw right arc
+ \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptionsDefault,apply style/.expand once=\pmdraw@drawLedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1,0) arc (180:90:\pmdraw{edgeHeight});% Draw left arch
+ \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptionsDefault,apply style/.expand once=\pmdraw@drawLedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1+\pmdraw{edgeHeight},\pmdraw{edgeHeight}) -- (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight});% Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptionsDefault,apply style/.expand once=\pmdraw@drawLedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight}) arc (90:0:\pmdraw{edgeHeight});% Draw right arc
\renewcommand{\pmdraw@drawEdgeDrawOptions}{}% Reset draw options for edge
}
\let\pmdraw@drawLedgesDraw\pmdraw@drawLedgesDrawDefault% Draws lower non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2
@@ -170,18 +172,19 @@
\newcommand{\pmdraw@drawNoVertexTi}{-1}% 9th vertex to skip in top row
\newcommand{\pmdraw@drawTedgesDrawOptions}{}% Draw options for transversal edges
+\newcommand{\pmdraw@drawTedgesDrawOptionsDefault}{}% Default draw options for transversal edges
\newcommand{\pmdraw@drawTedgesDrawDefault}[2]{% Draws transversal edge from #1 vertex in top row to #2 vertex in bottom row - DEFAULT
\ifnum\pmdraw@ifTedgeHorizontal=0% If drawing a straight line edge
- \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1,\pmdraw@rowSep) -- (#2,0);% Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptionsDefault,apply style/.expand once=\pmdraw@drawTedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1,\pmdraw@rowSep) -- (#2,0);% Draw straight line
\else% If transversal edge is drawn horizontally
\ifnum#1>#2% If edge goes from top right to bottom left
- \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#2,0) arc (180:90:\pmdraw{Tlevel});% Draw bottom arch
- \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#2+\pmdraw{Tlevel},\pmdraw{Tlevel}) -- (#1-\pmdraw@rowSep+\pmdraw{Tlevel}, \pmdraw{Tlevel});% Draw straight line
- \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1-\pmdraw@rowSep+\pmdraw{Tlevel},\pmdraw{Tlevel}) arc (270:360:{\pmdraw@rowSep-\pmdraw{Tlevel}});% Draw top arc
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptionsDefault,apply style/.expand once=\pmdraw@drawTedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#2,0) arc (180:90:\pmdraw{Tlevel});% Draw bottom arch
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptionsDefault,apply style/.expand once=\pmdraw@drawTedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#2+\pmdraw{Tlevel},\pmdraw{Tlevel}) -- (#1-\pmdraw@rowSep+\pmdraw{Tlevel}, \pmdraw{Tlevel});% Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptionsDefault,apply style/.expand once=\pmdraw@drawTedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1-\pmdraw@rowSep+\pmdraw{Tlevel},\pmdraw{Tlevel}) arc (270:360:{\pmdraw@rowSep-\pmdraw{Tlevel}});% Draw top arc
\else% If edge goes from top left to bottom right
- \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#2,0) arc (0:90:\pmdraw{Tlevel});% Draw bottom arch
- \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#2-\pmdraw{Tlevel},\pmdraw{Tlevel}) -- (#1+\pmdraw@rowSep-\pmdraw{Tlevel}, \pmdraw{Tlevel});% Draw straight line
- \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1+\pmdraw@rowSep-\pmdraw{Tlevel},\pmdraw{Tlevel}) arc (270:180:{\pmdraw@rowSep-\pmdraw{Tlevel}});% Draw top arc
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptionsDefault,apply style/.expand once=\pmdraw@drawTedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#2,0) arc (0:90:\pmdraw{Tlevel});% Draw bottom arch
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptionsDefault,apply style/.expand once=\pmdraw@drawTedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#2-\pmdraw{Tlevel},\pmdraw{Tlevel}) -- (#1+\pmdraw@rowSep-\pmdraw{Tlevel}, \pmdraw{Tlevel});% Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptionsDefault,apply style/.expand once=\pmdraw@drawTedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1+\pmdraw@rowSep-\pmdraw{Tlevel},\pmdraw{Tlevel}) arc (270:180:{\pmdraw@rowSep-\pmdraw{Tlevel}});% Draw top arc
\fi%
\renewcommand{\pmdraw@ifTedgeHorizontal}{0}% Reset flag to default
\fi%
@@ -190,18 +193,21 @@
\let\pmdraw@drawTedgesDraw\pmdraw@drawTedgesDrawDefault% Draws transversal edge from #1 vertex in top row to #2 vertex in bottom row
\newcommand{\pmdraw@drawUedgesDrawOptions}{}% Draw options for upper non-transversal edges
+\newcommand{\pmdraw@drawUedgesDrawOptionsDefault}{}% Default draw options for upper non-transversal edges
\newcommand{\pmdraw@drawUedgesDrawDefault}[2]{% Draws upper non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2 - DEFAULT
- \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1,\pmdraw@rowSep) arc (180:270:\pmdraw{edgeHeight});% Draw left arch
- \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1+\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight}) -- (#2-\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight});% Draw straight line
- \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#2-\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight}) arc (270:360:\pmdraw{edgeHeight});% Draw right arc
+ \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptionsDefault,apply style/.expand once=\pmdraw@drawUedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1,\pmdraw@rowSep) arc (180:270:\pmdraw{edgeHeight});% Draw left arch
+ \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptionsDefault,apply style/.expand once=\pmdraw@drawUedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#1+\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight}) -- (#2-\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight});% Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptionsDefault,apply style/.expand once=\pmdraw@drawUedgesDrawOptions,apply style/.expand once=\pmdraw@drawEdgeDrawOptions] (#2-\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight}) arc (270:360:\pmdraw{edgeHeight});% Draw right arc
\renewcommand{\pmdraw@drawEdgeDrawOptions}{}% Reset draw options for edge
}
\let\pmdraw@drawUedgesDraw\pmdraw@drawUedgesDrawDefault% Draws upper non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2
\newcommand{\pmdraw@drawVertexOptions}{}% Draw options for vertices
-\newcommand{\pmdraw@drawVertex}[2]{% Draws a vertex at (#1,#2)
- \fill[apply style/.expand once=\pmdraw@drawVertexOptions] (#1,#2) circle (.17);%
+\newcommand{\pmdraw@drawVertexOptionsDefault}{}% Default draw options for vertices
+\newcommand{\pmdraw@drawVertexDefault}[2]{% Draws a vertex at (#1,#2) - Default
+ \fill[apply style/.expand once=\pmdraw@drawVertexOptionsDefault,apply style/.expand once=\pmdraw@drawVertexOptions] (#1,#2) circle (.17);%
}
+\let\pmdraw@drawVertex\pmdraw@drawVertexDefault% Draws a vertex at (#1,#2)
\newcommand{\pmdraw@edgeUncover}{1-}% Sets the uncover options of edge
\newcommand{\pmdraw@edgesAddedUncover}{1-}% Sets the uncover options of added edges
@@ -315,175 +321,456 @@
\setcounter{pmdraw@degreeB}{#1}% Sets degree (number of vertices per row) for bottom row
\setcounter{pmdraw@degreeT}{#1}% Sets degree (number of vertices per row) for top row
}
+\define@key{pmdraw@brickDefault}{degree}{% Sets default degree (number of vertices per row) of diagram
+ \setkeys{pmdraw@brick}{%
+ \savevalue{degree bottom}=#1%
+ }%
+ \setkeys{pmdraw@brick}{%
+ \savevalue{degree top}=#1%
+ }%
+}
\define@key{pmdraw@brick}{degree bottom}{% Sets degree (number of vertices per row) for bottom row
\setcounter{pmdraw@degreeB}{#1}%
}
+\define@key{pmdraw@brickDefault}{degree bottom}{% Sets default degree (number of vertices per row) for bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{degree bottom}=#1%
+ }%
+}
\define@key{pmdraw@brick}{degree top}{% Sets degree (number of vertices per row) for top row
\setcounter{pmdraw@degreeT}{#1}%
}
+\define@key{pmdraw@brickDefault}{degree top}{% Sets default degree (number of vertices per row) for top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{degree top}=#1%
+ }%
+}
\define@key{pmdraw@brick}{blank bottom}{% Sets the number of blank vertices on left of bottom row
\setcounter{pmdraw@blankB}{#1}%
}
+\define@key{pmdraw@brickDefault}{blank bottom}{% Sets the default number of blank vertices on left of bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{blank bottom}=#1%
+ }%
+}
\define@key{pmdraw@brick}{blank top}{% Sets the number of blank vertices on left of top row
\setcounter{pmdraw@blankT}{#1}%
}
+\define@key{pmdraw@brickDefault}{blank top}{% Sets the default number of blank vertices on left of top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{blank top}=#1%
+ }%
+}
\define@key{pmdraw@brick}{row sep}{% Sets vertical separation between rows of vertices in brick
\renewcommand{\pmdraw@rowSep}{#1}%
}
+\define@key{pmdraw@brickDefault}{row sep}{% Sets default vertical separation between rows of vertices in brick
+ \setkeys{pmdraw@brick}{%
+ \savevalue{row sep}=#1%
+ }%
+}
\define@key{pmdraw@brick}{vertices}{% Sets the draw options of vertices
\renewcommand{\pmdraw@drawVertexOptions}{#1}%
}
+\define@key{pmdraw@brick}{verticesDefault}{% Sets the default draw options of vertices
+ \renewcommand{\pmdraw@drawVertexOptionsDefault}{#1}%
+}
+\define@key{pmdraw@brickDefault}{vertices}{% Sets the default draw options of vertices
+ \setkeys{pmdraw@brick}{%
+ \savevalue{verticesDefault}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex bottom 1}{% Sets 1st vertex to skip in bottom row
\renewcommand{\pmdraw@drawNoVertexBa}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex bottom 1}{% Sets default 1st vertex to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex bottom 1}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex bottom 2}{% Sets 2nd vertex to skip in bottom row
\renewcommand{\pmdraw@drawNoVertexBb}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex bottom 2}{% Sets default 2nd vertex to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex bottom 2}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex bottom 3}{% Sets 3rd vertex to skip in bottom row
\renewcommand{\pmdraw@drawNoVertexBc}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex bottom 3}{% Sets default 3rd vertex to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex bottom 3}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex bottom 4}{% Sets 4th vertex to skip in bottom row
\renewcommand{\pmdraw@drawNoVertexBd}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex bottom 4}{% Sets default 4th vertex to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex bottom 4}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex bottom 5}{% Sets 5th vertex to skip in bottom row
\renewcommand{\pmdraw@drawNoVertexBe}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex bottom 5}{% Sets default 5th vertex to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex bottom 5}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex bottom 6}{% Sets 6th vertex to skip in bottom row
\renewcommand{\pmdraw@drawNoVertexBf}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex bottom 6}{% Sets default 6th vertex to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex bottom 6}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex bottom 7}{% Sets 7th vertex to skip in bottom row
\renewcommand{\pmdraw@drawNoVertexBg}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex bottom 7}{% Sets default 7th vertex to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex bottom 7}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex bottom 8}{% Sets 8th vertex to skip in bottom row
\renewcommand{\pmdraw@drawNoVertexBh}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex bottom 8}{% Sets default 8th vertex to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex bottom 8}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex bottom 9}{% Sets 9th vertex to skip in bottom row
\renewcommand{\pmdraw@drawNoVertexBi}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex bottom 9}{% Sets default 9th vertex to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex bottom 9}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex top 1}{% Sets 1st vertex to skip in top row
\renewcommand{\pmdraw@drawNoVertexTa}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex top 1}{% Sets default 1st vertex to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex top 1}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex top 2}{% Sets 2nd vertex to skip in top row
\renewcommand{\pmdraw@drawNoVertexTb}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex top 2}{% Sets default 2nd vertex to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex top 2}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex top 3}{% Sets 3rd vertex to skip in top row
\renewcommand{\pmdraw@drawNoVertexTc}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex top 3}{% Sets default 3rd vertex to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex top 3}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex top 4}{% Sets 4th vertex to skip in top row
\renewcommand{\pmdraw@drawNoVertexTd}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex top 4}{% Sets default 4th vertex to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex top 4}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex top 5}{% Sets 5th vertex to skip in top row
\renewcommand{\pmdraw@drawNoVertexTe}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex top 5}{% Sets default 5th vertex to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex top 5}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex top 6}{% Sets 6th vertex to skip in top row
\renewcommand{\pmdraw@drawNoVertexTf}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex top 6}{% Sets default 6th vertex to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex top 6}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex top 7}{% Sets 7th vertex to skip in top row
\renewcommand{\pmdraw@drawNoVertexTg}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex top 7}{% Sets default 7th vertex to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex top 7}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex top 8}{% Sets 8th vertex to skip in top row
\renewcommand{\pmdraw@drawNoVertexTh}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex top 8}{% Sets default 8th vertex to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex top 8}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no vertex top 9}{% Sets 9th vertex to skip in top row
\renewcommand{\pmdraw@drawNoVertexTi}{#1}%
}
+\define@key{pmdraw@brickDefault}{no vertex top 9}{% Sets default 9th vertex to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no vertex top 9}=#1%
+ }%
+}
\define@key{pmdraw@brick}{vertices options}{% Sets the draw command of vertices
\renewcommand{\pmdraw@drawVertex}[2]{#1}%
}
-\define@key{pmdraw@brick}{labels}[]{% Draws labels for vertices
- \renewcommand{\pmdraw@ifLabelsB}{1}%
- \renewcommand{\pmdraw@ifLabelsT}{1}%
+\define@key{pmdraw@brick}{labels}[1]{% Draws labels for vertices
+ \renewcommand{\pmdraw@ifLabelsB}{#1}%
+ \renewcommand{\pmdraw@ifLabelsT}{#1}%
}
-\define@key{pmdraw@brick}{labels bottom}[]{% Draws labels for bottom vertices
- \renewcommand{\pmdraw@ifLabelsB}{1}%
+\define@key{pmdraw@brickDefault}{labels}[1]{% Sets the default drawing labels for vertices
+ \setkeys{pmdraw@brick}{%
+ \savevalue{labels}=#1%
+ }%
+}
+\define@key{pmdraw@brick}{labels bottom}[1]{% Draws labels for bottom vertices
+ \renewcommand{\pmdraw@ifLabelsB}{#1}%
+}
+\define@key{pmdraw@brickDefault}{labels bottom}[1]{% Sets the default drawing labels for bottom vertices
+ \setkeys{pmdraw@brick}{%
+ \savevalue{labels bottom}=#1%
+ }%
+}
+\define@key{pmdraw@brick}{labels top}[1]{% Draws labels for top vertices
+ \renewcommand{\pmdraw@ifLabelsT}{#1}%
}
-\define@key{pmdraw@brick}{labels top}[]{% Draws labels for top vertices
- \renewcommand{\pmdraw@ifLabelsT}{1}%
+\define@key{pmdraw@brickDefault}{labels top}[1]{% Sets the default drawing labels for top vertices
+ \setkeys{pmdraw@brick}{%
+ \savevalue{labels top}=#1%
+ }%
}
\define@key{pmdraw@brick}{labels start}{% Sets starting number for vertex labels
\setcounter{pmdraw@labelStartT}{#1}%
\setcounter{pmdraw@labelStartB}{#1}%
}
+\define@key{pmdraw@brickDefault}{labels start}{% Sets the default starting number for vertex labels
+ \setkeys{pmdraw@brick}{%
+ \savevalue{labels start}=#1%
+ }%
+}
\define@key{pmdraw@brick}{labels bottom start}{% Sets starting number for bottom vertex labels
\setcounter{pmdraw@labelStartB}{#1}%
}
+\define@key{pmdraw@brickDefault}{labels bottom start}{% Sets the default starting number for bottom vertex labels
+ \setkeys{pmdraw@brick}{%
+ \savevalue{labels bottom start}=#1%
+ }%
+}
\define@key{pmdraw@brick}{labels top start}{% Sets starting number for top vertex labels
\setcounter{pmdraw@labelStartT}{#1}%
}
+\define@key{pmdraw@brickDefault}{labels top start}{% Sets the default starting number for top vertex labels
+ \setkeys{pmdraw@brick}{%
+ \savevalue{labels top start}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label bottom 1}{% Sets 1st label to skip in bottom row
\renewcommand{\pmdraw@drawNoLabelBa}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label bottom 1}{% Sets the default 1st label to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label bottom 1}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label bottom 2}{% Sets 2nd label to skip in bottom row
\renewcommand{\pmdraw@drawNoLabelBb}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label bottom 2}{% Sets the default 2nd label to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label bottom 2}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label bottom 3}{% Sets 3rd label to skip in bottom row
\renewcommand{\pmdraw@drawNoLabelBc}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label bottom 3}{% Sets the default 3rd label to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label bottom 3}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label bottom 4}{% Sets 4th label to skip in bottom row
\renewcommand{\pmdraw@drawNoLabelBd}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label bottom 4}{% Sets the default 4th label to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label bottom 4}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label bottom 5}{% Sets 5th label to skip in bottom row
\renewcommand{\pmdraw@drawNoLabelBe}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label bottom 5}{% Sets the default 5th label to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label bottom 5}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label bottom 6}{% Sets 6th label to skip in bottom row
\renewcommand{\pmdraw@drawNoLabelBf}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label bottom 6}{% Sets the default 6th label to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label bottom 6}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label bottom 7}{% Sets 7th label to skip in bottom row
\renewcommand{\pmdraw@drawNoLabelBg}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label bottom 7}{% Sets the default 7th label to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label bottom 7}=#1%
+ }%
+}
+\define@key{pmdraw@brickDefault}{no label bottom 8}{% Sets the default 8th label to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label bottom 8}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label bottom 8}{% Sets 8th label to skip in bottom row
\renewcommand{\pmdraw@drawNoLabelBh}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label bottom 8}{% Sets the default 8th label to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label bottom 8}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label bottom 9}{% Sets 9th label to skip in bottom row
\renewcommand{\pmdraw@drawNoLabelBi}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label bottom 9}{% Sets the default 9th label to skip in bottom row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label bottom 9}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label top 1}{% Sets 1st label to skip in top row
\renewcommand{\pmdraw@drawNoLabelTa}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label top 1}{% Sets the default 1st label to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label top 1}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label top 2}{% Sets 2nd label to skip in top row
\renewcommand{\pmdraw@drawNoLabelTb}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label top 2}{% Sets the default 2nd label to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label top 2}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label top 3}{% Sets 3rd label to skip in top row
\renewcommand{\pmdraw@drawNoLabelTc}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label top 3}{% Sets the default 3rd label to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label top 3}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label top 4}{% Sets 4th label to skip in top row
\renewcommand{\pmdraw@drawNoLabelTd}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label top 4}{% Sets the default 4th label to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label top 4}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label top 5}{% Sets 5th label to skip in top row
\renewcommand{\pmdraw@drawNoLabelTe}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label top 5}{% Sets the default 5th label to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label top 5}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label top 6}{% Sets 6th label to skip in top row
\renewcommand{\pmdraw@drawNoLabelTf}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label top 6}{% Sets the default 6th label to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label top 6}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label top 7}{% Sets 7th label to skip in top row
\renewcommand{\pmdraw@drawNoLabelTg}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label top 7}{% Sets the default 7th label to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label top 7}=#1%
+ }%
+}
+\define@key{pmdraw@brickDefault}{no label top 8}{% Sets the default 8th label to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label top 8}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label top 8}{% Sets 8th label to skip in top row
\renewcommand{\pmdraw@drawNoLabelTh}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label top 8}{% Sets the default 8th label to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label top 8}=#1%
+ }%
+}
\define@key{pmdraw@brick}{no label top 9}{% Sets 9th label to skip in top row
\renewcommand{\pmdraw@drawNoLabelTi}{#1}%
}
+\define@key{pmdraw@brickDefault}{no label top 9}{% Sets the default 9th label to skip in top row
+ \setkeys{pmdraw@brick}{%
+ \savevalue{no label top 9}=#1%
+ }%
+}
\define@key{pmdraw@brick}{labels bottom draw}{% Sets the draw options for labels of bottom vertices
\renewcommand{\pmdraw@drawLabelBDrawOptions}{#1}%
}
+\define@key{pmdraw@brickDefault}{labels bottom draw}{% Sets the default draw options for labels of bottom vertices
+ \setkeys{pmdraw@brick}{%
+ \savevalue{labels bottom draw}=#1%
+ }%
+}
\define@key{pmdraw@brick}{labels bottom node}{% Sets the node options for labels of bottom vertices
\renewcommand{\pmdraw@drawLabelBNodeOptions}{#1}%
}
+\define@key{pmdraw@brickDefault}{labels bottom node}{% Sets the default node options for labels of bottom vertices
+ \setkeys{pmdraw@brick}{%
+ \savevalue{labels bottom node}=#1%
+ }%
+}
\define@key{pmdraw@brick}{labels top draw}{% Sets the draw options for labels of top vertices
\renewcommand{\pmdraw@drawLabelTDrawOptions}{#1}%
}
+\define@key{pmdraw@brickDefault}{labels top draw}{% Sets the default draw options for labels of top vertices
+ \setkeys{pmdraw@brick}{%
+ \savevalue{labels top draw}=#1%
+ }%
+}
\define@key{pmdraw@brick}{labels top node}{% Sets the node options for labels of top vertices
\renewcommand{\pmdraw@drawLabelTNodeOptions}{#1}%
}
+\define@key{pmdraw@brickDefault}{labels top node}{% Sets the default node options for labels of top vertices
+ \setkeys{pmdraw@brick}{%
+ \savevalue{labels top node}=#1%
+ }%
+}
\define@key{pmdraw@brick}{labels bottom options}{% Sets the draw command of labels of bottom vertices
\renewcommand{\pmdraw@drawLabelBottom}[3]{#1}%
@@ -492,30 +779,60 @@
\renewcommand{\pmdraw@drawLabelTop}[3]{#1}%
}
-\define@key{pmdraw@brick}{no dots}[]{% Does not draw dots in bricks
- \setcounter{pmdraw@ifDiagWDotsFirst}{1}%
+\define@key{pmdraw@brick}{no dots}[1]{% Does not draw dots in bricks
+ \setcounter{pmdraw@ifDiagWDotsFirst}{#1}%
}
\define@key{pmdraw@brick}{dots draw}{% Sets the draw options for drawing of dots
\renewcommand{\pmdraw@drawDotsDrawOptions}{#1}%
}
+\define@key{pmdraw@brickDefault}{dots draw}{% Sets the default draw options for drawing of dots
+ \setkeys{pmdraw@brick}{%
+ \savevalue{dots draw}=#1%
+ }%
+}
\define@key{pmdraw@brick}{dots node}{% Sets the node options for drawing of dots
\renewcommand{\pmdraw@drawDotsNodeOptions}{#1}%
}
+\define@key{pmdraw@brickDefault}{dots node}{% Sets the default node options for drawing of dots
+ \setkeys{pmdraw@brick}{%
+ \savevalue{dots node}=#1%
+ }%
+}
-\define@key{pmdraw@brick}{vertices bottom phantom}[]{% Does not draw bottom vertices
- \setcounter{pmdraw@ifVerticesBottom}{1}%
+\define@key{pmdraw@brick}{vertices bottom phantom}[1]{% Does not draw bottom vertices
+ \setcounter{pmdraw@ifVerticesBottom}{#1}%
+}
+\define@key{pmdraw@brickDefault}{vertices bottom phantom}{% Sets the default to not draw bottom vertices
+ \setkeys{pmdraw@brick}{%
+ \savevalue{vertices bottom phantom}=#1%
+ }%
}
-\define@key{pmdraw@brick}{vertices top phantom}[]{% Does not draw top vertices
- \setcounter{pmdraw@ifVerticesTop}{1}%
+\define@key{pmdraw@brick}{vertices top phantom}[1]{% Does not draw top vertices
+ \setcounter{pmdraw@ifVerticesTop}{#1}%
+}
+\define@key{pmdraw@brickDefault}{vertices top phantom}{% Sets the default to not draw top vertices
+ \setkeys{pmdraw@brick}{%
+ \savevalue{vertices top phantom}=#1%
+ }%
}
\define@key{pmdraw@brick}{vertices bottom uncover}{% Sets the uncover options of bottom vertices
\renewcommand{\pmdraw@verticesBottomUncover}{#1}%
}
+\define@key{pmdraw@brickDefault}{vertices bottom uncover}{% Sets the default uncover options of bottom vertices
+ \setkeys{pmdraw@brick}{%
+ \savevalue{vertices bottom uncover}=#1%
+ }%
+}
\define@key{pmdraw@brick}{vertices top uncover}{% Sets the uncover options of top vertices
\renewcommand{\pmdraw@verticesTopUncover}{#1}%
}
+\define@key{pmdraw@brickDefault}{vertices top uncover}{% Sets the default uncover options of top vertices
+ \setkeys{pmdraw@brick}{%
+ \savevalue{vertices top uncover}=#1%
+ }%
+}
\define@key{pmdraw@brick}{levels}[1]{% Sets number of horizontal levels for non-transversal edges and evenly spaces them
\tikzmath{%
@@ -523,16 +840,31 @@
\pmdraw{edgeSepL} = \pmdraw{edgeSepU};% Calculates vertical separation between each edge
}%
}
+\define@key{pmdraw@brickDefault}{levels}{% Sets the default number of horizontal levels for non-transversal edges and evenly spaces them
+ \setkeys{pmdraw@brick}{%
+ \savevalue{levels}=#1%
+ }%
+}
\define@key{pmdraw@brick}{levels bottom}{% Sets number of horizontal levels for lower non-transversal edges and evenly spaces them
\tikzmath{%
\pmdraw{edgeSepL} = (0.5*\pmdraw@rowSep)/(#1 + 1);% Calculates vertical separation between each edge
}%
}
+\define@key{pmdraw@brickDefault}{levels bottom}{% Sets the default number of horizontal levels for lower non-transversal edges and evenly spaces them
+ \setkeys{pmdraw@brick}{%
+ \savevalue{levels bottom}=#1%
+ }%
+}
\define@key{pmdraw@brick}{levels top}{% Sets number of horizontal levels for upper non-transversal edges and evenly spaces them
\tikzmath{%
\pmdraw{edgeSepU} = (0.5*\pmdraw@rowSep)/(#1 + 1);% Calculates vertical separation between each edge
}%
}
+\define@key{pmdraw@brickDefault}{levels top}{% Sets the default number of horizontal levels for upper non-transversal edges and evenly spaces them
+ \setkeys{pmdraw@brick}{%
+ \savevalue{levels top}=#1%
+ }%
+}
\define@key{pmdraw@brick}{levels sep}{% Sets vertical separation of horizontal levels for non-transversal edges
\tikzmath{%
@@ -540,70 +872,178 @@
\pmdraw{edgeSepL} = \pmdraw{edgeSepU};%
}%
}
+\define@key{pmdraw@brickDefault}{levels sep}{% Sets the default vertical separation of horizontal levels for non-transversal edges
+ \setkeys{pmdraw@brick}{%
+ \savevalue{levels sep}=#1%
+ }%
+}
\define@key{pmdraw@brick}{levels sep bottom}{% Sets vertical separation of lower horizontal levels for non-transversal edges
\tikzmath{%
\pmdraw{edgeSepL} = #1;%
}%
}
+\define@key{pmdraw@brickDefault}{levels sep bottom}{% Sets the default vertical separation of lower horizontal levels for non-transversal edges
+ \setkeys{pmdraw@brick}{%
+ \savevalue{levels sep bottom}=#1%
+ }%
+}
\define@key{pmdraw@brick}{levels sep top}{% Sets vertical separation of upper horizontal levels for non-transversal edges
\tikzmath{%
\pmdraw{edgeSepU} = #1;%
}%
}
+\define@key{pmdraw@brickDefault}{levels sep top}{% Sets the default vertical separation of upper horizontal levels for non-transversal edges
+ \setkeys{pmdraw@brick}{%
+ \savevalue{levels sep top}=#1%
+ }%
+}
\define@key{pmdraw@brick}{edges}{% Sets the draw options of all edges
\renewcommand{\pmdraw@drawUedgesDrawOptions}{#1}%
\renewcommand{\pmdraw@drawLedgesDrawOptions}{#1}%
\renewcommand{\pmdraw@drawTedgesDrawOptions}{#1}%
}
+\define@key{pmdraw@brick}{edgesDefault}{% Sets the default draw options of all edges
+ \renewcommand{\pmdraw@drawUedgesDrawOptionsDefault}{#1}%
+ \renewcommand{\pmdraw@drawLedgesDrawOptionsDefault}{#1}%
+ \renewcommand{\pmdraw@drawTedgesDrawOptionsDefault}{#1}%
+}
+\define@key{pmdraw@brickDefault}{edges}{% Sets the default draw options of all edges
+ \setkeys{pmdraw@brick}{%
+ \savevalue{edgesDefault}=#1%
+ }%
+}
\define@key{pmdraw@brick}{edges non-transversal}{% Sets the draw options of non-transversal edges
\renewcommand{\pmdraw@drawUedgesDrawOptions}{#1}%
\renewcommand{\pmdraw@drawLedgesDrawOptions}{#1}%
}
+\define@key{pmdraw@brick}{edges non-transversalDefault}{% Sets the default draw options of non-transversal edges
+ \renewcommand{\pmdraw@drawUedgesDrawOptionsDefault}{#1}%
+ \renewcommand{\pmdraw@drawLedgesDrawOptionsDefault}{#1}%
+}
+\define@key{pmdraw@brickDefault}{edges non-transversal}{% Sets the default draw options of non-transversal edges
+ \setkeys{pmdraw@brick}{%
+ \savevalue{edges non-transversalDefault}=#1%
+ }%
+}
\define@key{pmdraw@brick}{edges upper}{% Sets the draw options of upper non-transversal edges
\renewcommand{\pmdraw@drawUedgesDrawOptions}{#1}%
}
+\define@key{pmdraw@brick}{edges upperDefault}{% Sets the default draw options of upper non-transversal edges
+ \renewcommand{\pmdraw@drawUedgesDrawOptionsDefault}{#1}%
+}
+\define@key{pmdraw@brickDefault}{edges upper}{% Sets the default draw options of upper non-transversal edges
+ \setkeys{pmdraw@brick}{%
+ \savevalue{edges upperDefault}=#1%
+ }%
+}
\define@key{pmdraw@brick}{edges lower}{% Sets the draw options of lower non-transversal edges
\renewcommand{\pmdraw@drawLedgesDrawOptions}{#1}%
}
+\define@key{pmdraw@brick}{edges lowerDefault}{% Sets the defaultdraw options of lower non-transversal edges
+ \renewcommand{\pmdraw@drawLedgesDrawOptionsDefault}{#1}%
+}
+\define@key{pmdraw@brickDefault}{edges lower}{% Sets the default draw options of lower non-transversal edges
+ \setkeys{pmdraw@brick}{%
+ \savevalue{edges lowerDefault}=#1%
+ }%
+}
\define@key{pmdraw@brick}{edges transversal}{% Sets the draw options of transversal edges
\renewcommand{\pmdraw@drawTedgesDrawOptions}{#1}%
}
+\define@key{pmdraw@brick}{edges transversalDefault}{% Sets the default draw options of transversal edges
+ \renewcommand{\pmdraw@drawTedgesDrawOptionsDefault}{#1}%
+}
+\define@key{pmdraw@brickDefault}{edges transversal}{% Sets the default draw options of transversal edges
+ \setkeys{pmdraw@brick}{%
+ \savevalue{edges transversalDefault}=#1%
+ }%
+}
-\define@key{pmdraw@brick}{edges first}[]{% Draws edges before vertices
- \renewcommand{\pmdraw@ifEdgesFirst}{1}%
+\define@key{pmdraw@brick}{edges first}[1]{% Draws edges before vertices
+ \renewcommand{\pmdraw@ifEdgesFirst}{#1}%
+}
+\define@key{pmdraw@brickDefault}{edges first}{% Sets the default to draw edges before vertices
+ \setkeys{pmdraw@brick}{%
+ \savevalue{edges first}=#1%
+ }%
}
-\define@key{pmdraw@brick}{transversals first}[]{% Draws transversal edges before non-transversal edges
- \renewcommand{\pmdraw@ifTedgesFirst}{1}%
+\define@key{pmdraw@brick}{transversals first}[1]{% Draws transversal edges before non-transversal edges
+ \renewcommand{\pmdraw@ifTedgesFirst}{#1}%
+}
+\define@key{pmdraw@brickDefault}{transversals first}{% Sets the default to draw transversal edges before non-transversal edges
+ \setkeys{pmdraw@brick}{%
+ \savevalue{transversals first}=#1%
+ }%
}
-\define@key{pmdraw@brick}{edges phantom}[]{% Does not draw edges
- \setcounter{pmdraw@ifEdges}{1}%
+\define@key{pmdraw@brick}{edges phantom}[1]{% Does not draw edges
+ \setcounter{pmdraw@ifEdges}{#1}%
+}
+\define@key{pmdraw@brickDefault}{edges phantom}{% Sets the default to not draw edge
+ \setkeys{pmdraw@brick}{%
+ \savevalue{edges phantom}=#1%
+ }%
}
\define@key{pmdraw@brick}{edges uncover}{% Sets the uncover options of edges
\renewcommand{\pmdraw@edgesUncover}{#1}%
}
+\define@key{pmdraw@brickDefault}{edges uncover}{% Sets the default uncover options of edges
+ \setkeys{pmdraw@brick}{%
+ \savevalue{edges uncover}=#1%
+ }%
+}
\define@key{pmdraw@brick}{brace}{% Draws a brace
+ \setkeys{pmdraw@brace}{% Sets default keys for brace
+ left=\usevalue{left},
+ right=\usevalue{right},
+ above=\usevalue{above}
+ }%
\setkeys{pmdraw@brace}{#1}% Processes details of brace
\pmdraw@drawBrace{\value{pmdraw@braceL}}{\value{pmdraw@braceR}}{\pmdraw@braceLabel}% Draws brace
\let\pmdraw@drawBrace\pmdraw@drawBraceDefault% Resets brace options if changed
}
+\define@key{pmdraw@brickDefault}{brace}{% Sets the default brace
+ \setkeys{pmdraw@brick}{%
+ \savevalue{brace}=#1%
+ }%
+}
\define@key{pmdraw@brick}{brace draw}{% Sets the draw options for drawing of brace
\renewcommand{\pmdraw@drawBraceDrawOptions}{#1}%
}
+\define@key{pmdraw@brickDefault}{brace draw}{% Sets the default draw options for drawing of brace
+ \setkeys{pmdraw@brick}{%
+ \savevalue{brace draw}=#1%
+ }%
+}
\define@key{pmdraw@brick}{brace node}{% Sets the node options for drawing of brace
\renewcommand{\pmdraw@drawBraceNodeOptions}{#1}%
}
+\define@key{pmdraw@brickDefault}{brace node}{% Sets the default node options for drawing of brace
+ \setkeys{pmdraw@brick}{%
+ \savevalue{brace node}=#1%
+ }%
+}
\define@key{pmdraw@brick}{decorate before}{% Hook for decorations before brick is drawn
\renewcommand{\pmdraw@hookBeforeBrick}{#1}%
}
+\define@key{pmdraw@brickDefault}{decorate before}{% Sets the default hook for decorations before brick is drawn
+ \setkeys{pmdraw@brick}{%
+ \savevalue{decorate before}=#1%
+ }%
+}
\define@key{pmdraw@brick}{decorate after}{% Hook for decorations after brick is drawn
\renewcommand{\pmdraw@hookAfterBrick}{#1}%
}
+\define@key{pmdraw@brickDefault}{decorate after}{% Sets the default hook for decorations after brick is drawn
+ \setkeys{pmdraw@brick}{%
+ \savevalue{decorate after}=#1%
+ }%
+}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -615,40 +1055,95 @@
\define@key{pmdraw@NTedges}{level}{% Sets level of non-transversal edge
\setcounter{pmdraw@NTlevel}{#1}%
}
+\define@key{pmdraw@NTedgesDefault}{level}{% Sets the default level of non-transversal edge
+ \setkeys{pmdraw@NTedges}{%
+ \savevalue{level}=#1%
+ }%
+}
+
\define@key{pmdraw@NTedges}{height}{% Sets manual height of non-transversal edge
\renewcommand{\pmdraw@NTedgesHeight}{#1}%
}
+\define@key{pmdraw@NTedgesDefault}{height}{% Sets the default manual height of non-transversal edge
+ \setkeys{pmdraw@NTedges}{%
+ \savevalue{height}=#1%
+ }%
+}
+
\define@key{pmdraw@NTedges}{edge draw}{% Sets the draw options for drawing of edge
\renewcommand{\pmdraw@drawEdgeDrawOptions}{#1}%
}
+\define@key{pmdraw@NTedgesDefault}{edge draw}{% Sets the default draw options for drawing of edge
+ \setkeys{pmdraw@NTedges}{%
+ \savevalue{edge draw}=#1%
+ }%
+}
+
\define@key{pmdraw@NTedges}{options}{% Sets the draw command of non-transversal edge
\renewcommand{\pmdraw@drawUedgesDraw}[2]{#1}%
\renewcommand{\pmdraw@drawLedgesDraw}[2]{#1}%
}
-\define@key{pmdraw@NTedges}{phantom}[]{% Does not draw edge
- \setcounter{pmdraw@ifEdge}{1}%
+
+\define@key{pmdraw@NTedges}{phantom}[1]{% Does not draw edge
+ \setcounter{pmdraw@ifEdge}{#1}%
+}
+\define@key{pmdraw@NTedgesDefault}{phantom}{% Sets the default to not draw edge
+ \setkeys{pmdraw@NTedges}{%
+ \savevalue{phantom}=#1%
+ }%
}
+
\define@key{pmdraw@NTedges}{uncover}{% Sets the uncover options of edge
\renewcommand{\pmdraw@edgeUncover}{#1}%
}
+\define@key{pmdraw@NTedgesDefault}{uncover}{% Sets the default uncover options of edge
+ \setkeys{pmdraw@NTedges}{%
+ \savevalue{uncover}=#1%
+ }%
+}
+
\define@key{pmdraw@Tedges}{height}{% Sets manual height of transversal edge
\tikzmath{%
\pmdraw{Tlevel} = #1;%
}%
\renewcommand{\pmdraw@ifTedgeHorizontal}{1}% Flags manual height
}
+\define@key{pmdraw@TedgesDefault}{height}{% Sets the default manual height of transversal edge
+ \setkeys{pmdraw@Tedges}{%
+ \savevalue{height}=#1%
+ }%
+}
+
\define@key{pmdraw@Tedges}{edge draw}{% Sets the draw options for drawing of edge
\renewcommand{\pmdraw@drawEdgeDrawOptions}{#1}%
}
+\define@key{pmdraw@TedgesDefault}{edge draw}{% Sets the default draw options for drawing of edge
+ \setkeys{pmdraw@Tedges}{%
+ \savevalue{edge draw}=#1%
+ }%
+}
+
\define@key{pmdraw@Tedges}{options}{% Sets the draw command of transversal edge
\renewcommand{\pmdraw@drawTedgesDraw}[2]{#1}%
}
-\define@key{pmdraw@Tedges}{phantom}[]{% Does not draw edge
- \setcounter{pmdraw@ifEdge}{1}%
+
+\define@key{pmdraw@Tedges}{phantom}[1]{% Does not draw edge
+ \setcounter{pmdraw@ifEdge}{#1}%
+}
+\define@key{pmdraw@TedgesDefault}{phantom}{% Sets the default to not draw edge
+ \setkeys{pmdraw@Tedges}{%
+ \savevalue{phantom}=#1%
+ }%
}
+
\define@key{pmdraw@Tedges}{uncover}{% Sets the uncover options of edge
\renewcommand{\pmdraw@edgeUncover}{#1}%
}
+\define@key{pmdraw@TedgesDefault}{uncover}{% Sets the default uncover options of edge
+ \setkeys{pmdraw@Tedges}{%
+ \savevalue{uncover}=#1%
+ }%
+}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -660,15 +1155,34 @@
\define@key{pmdraw@brace}{left}{% Sets starting position of brace
\setcounter{pmdraw@braceL}{#1}%
}
+\define@key{pmdraw@braceDefault}{left}{% Sets the default starting position of brace
+ \setkeys{pmdraw@brace}{%
+ \savevalue{left}=#1%
+ }%
+}
+
\define@key{pmdraw@brace}{right}{% Sets terminating position of brace
\setcounter{pmdraw@braceR}{#1}%
}
+\define@key{pmdraw@braceDefault}{right}{% Sets the default terminating position of brace
+ \setkeys{pmdraw@brace}{%
+ \savevalue{right}=#1%
+ }%
+}
+
\define@key{pmdraw@brace}{label}{% Sets label of brace
\renewcommand{\pmdraw@braceLabel}{#1}%
}
-\define@key{pmdraw@brace}{above}[]{% Set flag to draw brace above diagram
- \renewcommand{\pmdraw@ifProdDiag}{1}%
+
+\define@key{pmdraw@brace}{above}[1]{% Set flag to draw brace above diagram
+ \renewcommand{\pmdraw@ifProdDiag}{#1}%
+}
+\define@key{pmdraw@braceDefault}{above}{% Sets the default flag to draw brace above diagram
+ \setkeys{pmdraw@brace}{%
+ \savevalue{above}=#1%
+ }%
}
+
\define@key{pmdraw@brace}{options}{% Sets the draw command of brace
\renewcommand{\pmdraw@drawBrace}[3]{#1}%
}
@@ -683,37 +1197,123 @@
\define@key{pmdraw@diagram}{row sep}{% Sets vertical separation between rows of vertices in diagram
\renewcommand{\pmdraw@rowSep}{#1}%
}
+\define@key{pmdraw@diagramDefault}{row sep}{% Sets the default vertical separation between rows of vertices in diagram
+ \setkeys{pmdraw@diagram}{%
+ \savevalue{row sep}=#1%
+ }%
+}
+
\define@key{pmdraw@diagram}{tikz}{% Sets the tikz options
\renewcommand{\pmdraw@tikz}{#1}%
}
+\define@key{pmdraw@diagramDefault}{tikz}{% Sets the default tikz options
+ \setkeys{pmdraw@diagram}{%
+ \savevalue{tikz}=#1%
+ }%
+}
+
\define@key{pmdraw@diagram}{dots options}{% Sets the draw command of dots between bricks
\renewcommand{\pmdraw@drawDots}[2]{#1}%
}
-\define@key{pmdraw@diagram}{grid}[]{% Flag for drawing coordinate grid
- \renewcommand{\pmdraw@ifGrid}{1}%
+
+
+\define@key{pmdraw@diagram}{grid}[1]{% Flag for drawing coordinate grid
+ \renewcommand{\pmdraw@ifGrid}{#1}%
}
+\define@key{pmdraw@diagramDefault}{grid}{% Sets the default flag for drawing coordinate grid
+ \setkeys{pmdraw@diagram}{%
+ \savevalue{grid}=#1%
+ }%
+}
+
\define@key{pmdraw@diagram}{decorate before}{% Hook before drawing diagrams
\renewcommand{\pmdraw@hookBeforeDiagram}{#1}%
}
+\define@key{pmdraw@diagramDefault}{decorate before}{% Sets the default hook before drawing diagrams
+ \setkeys{pmdraw@diagram}{%
+ \savevalue{decorate before}=#1%
+ }%
+}
\define@key{pmdraw@diagram}{decorate after}{% Hook after drawing diagrams
\renewcommand{\pmdraw@hookAfterDiagram}{#1}%
}
+\define@key{pmdraw@diagramDefault}{decorate after}{% Sets the default hook after drawing diagrams
+ \setkeys{pmdraw@diagram}{%
+ \savevalue{decorate after}=#1%
+ }%
+}
\define@key{pmdraw@diagram}{diagram sep}{% Sets vertical separation between bottom row of top diagram and top row of bottom diagram in product diagram
\renewcommand{\pmdraw@diagSep}{#1}%
}
+\define@key{pmdraw@diagramDefault}{diagram sep}{% Sets the default vertical separation between bottom row of top diagram and top row of bottom diagram in product diagram
+ \setkeys{pmdraw@diagram}{%
+ \savevalue{diagram sep}=#1%
+ }%
+}
\define@key{pmdraw@diagram}{vertex sep}{% Sets vertical separation between bottom row of top diagram and top row of bottom diagram in product diagram not for added edges
\renewcommand{\pmdraw@vertexSep}{#1}%
}
+\define@key{pmdraw@diagramDefault}{vertex sep}{% Sets the default vertical separation between bottom row of top diagram and top row of bottom diagram in product diagram not for added edges
+ \setkeys{pmdraw@diagram}{%
+ \savevalue{vertex sep}=#1%
+ }%
+}
+
\define@key{pmdraw@diagram}{edges added}{% Sets the draw options for drawing of added edges in product diagram
\renewcommand{\pmdraw@drawAedgesOptions}{#1}%
}
-\define@key{pmdraw@diagram}{edges added phantom}[]{% Does not draw added edges
- \setcounter{pmdraw@ifEdgesAdded}{1}%
+\define@key{pmdraw@diagram}{edges addedDefault}{% Sets the default draw options for drawing of added edges in product diagram
+ \renewcommand{\pmdraw@drawAedgesOptionsDefault}{#1}%
+}
+\define@key{pmdraw@diagramDefault}{edges added}{% Sets the default draw options for drawing of added edges in product diagram
+ \setkeys{pmdraw@diagram}{%
+ \savevalue{edges addedDefault}=#1%
+ }%
+}
+\define@key{pmdraw@diagram}{edges added phantom}[1]{% Does not draw added edges
+ \setcounter{pmdraw@ifEdgesAdded}{#1}%
+}
+\define@key{pmdraw@diagramDefault}{edges added phantom}{% Sets the default to not draw added edges
+ \setkeys{pmdraw@diagram}{%
+ \savevalue{edges added phantom}=#1%
+ }%
}
\define@key{pmdraw@diagram}{edges added uncover}{% Sets the uncover options of added edges
\renewcommand{\pmdraw@edgesAddedUncover}{#1}%
}
+\define@key{pmdraw@diagramDefault}{edges added uncover}{% Sets the default uncover options of added edges
+ \setkeys{pmdraw@diagram}{%
+ \savevalue{edges added uncover}=#1%
+ }%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Keys for default key settings %
+% - ordered as per manual %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\define@key{pmdraw@default}{brick}{% Sets the default key options of brick keys
+ \setkeys{pmdraw@brickDefault}{#1}%
+}
+
+\define@key{pmdraw@default}{NTedges}{% Sets the default key options of non-transversal edge keys
+ \setkeys{pmdraw@NTedgesDefault}{#1}%
+}
+
+\define@key{pmdraw@default}{Tedges}{% Sets the default key options of transversal edge keys
+ \setkeys{pmdraw@TedgesDefault}{#1}%
+}
+
+\define@key{pmdraw@default}{brace}{% Sets the default key options of brace keys
+ \setkeys{pmdraw@braceDefault}{#1}%
+}
+
+\define@key{pmdraw@default}{diagram}{% Sets the default key options of diagram keys
+ \setkeys{pmdraw@diagramDefault}{#1}%
+}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -733,6 +1333,17 @@
\newcommand{\pmdDiagram}[2][]{% Draws diagram
% #1 Options
% #2 List of bricks
+ \setkeys{pmdraw@diagram}{% Sets default key values for diagrams
+ row sep=\usevalue{row sep},
+ tikz=\usevalue{tikz},
+ grid=\usevalue{grid},
+ decorate before=\usevalue{decorate before},
+ decorate after=\usevalue{decorate after},
+ diagram sep=\usevalue{diagram sep},
+ vertex sep=\usevalue{vertex sep},
+ edges added phantom=\usevalue{edges added phantom},
+ edges added uncover=\usevalue{edges added uncover}
+ }%
\setkeys{pmdraw@diagram}{#1}% Processes options
\renewcommand{\pmdraw@ifDiagWDots}{1}% Flags that diagram has dots
\setcounter{pmdraw@brickShift}{0}% Reset shifting of individual bricks
@@ -775,6 +1386,17 @@
% #2 List of added edges
% #3 Top diagram as list of bricks
% #4 Bottom diagram as list of bricks
+ \setkeys{pmdraw@diagram}{% Sets default key values for diagrams
+ row sep=\usevalue{row sep},
+ tikz=\usevalue{tikz},
+ grid=\usevalue{grid},
+ decorate before=\usevalue{decorate before},
+ decorate after=\usevalue{decorate after},
+ diagram sep=\usevalue{diagram sep},
+ vertex sep=\usevalue{vertex sep},
+ edges added phantom=\usevalue{edges added phantom},
+ edges added uncover=\usevalue{edges added uncover}
+ }%
\setkeys{pmdraw@diagram}{#1}% Processes options
\ifmmode% If drawing diagram in a maths equation
\,% Add space
@@ -840,6 +1462,234 @@
\pmdraw@reset% Resets user keys and other flags to default values
}
+\newcommand{\pmdProductTriple}[6][]{% Draws triple product diagram
+ % #1 Options
+ % #2 List of top added edges
+ % #3 List of bottom added edges
+ % #4 Top diagram as list of bricks
+ % #5 Middle diagram as list of bricks
+ % #6 Bottom diagram as list of bricks
+ \setkeys{pmdraw@diagram}{% Sets default key values for diagrams
+ row sep=\usevalue{row sep},
+ tikz=\usevalue{tikz},
+ grid=\usevalue{grid},
+ decorate before=\usevalue{decorate before},
+ decorate after=\usevalue{decorate after},
+ diagram sep=\usevalue{diagram sep},
+ vertex sep=\usevalue{vertex sep},
+ edges added phantom=\usevalue{edges added phantom},
+ edges added uncover=\usevalue{edges added uncover}
+ }%
+ \setkeys{pmdraw@diagram}{#1}% Processes options
+ \ifmmode% If drawing diagram in a maths equation
+ \,% Add space
+ \ifnum\pmdraw@ifGrid=1% If displaying helper grid
+ \begin{tikzpicture}[scale=.5,baseline=-1.0975cm,show grid=true,apply style/.expand once=\pmdraw@tikz]%
+ \else% If not displaying helper grid
+ \begin{tikzpicture}[scale=.5,baseline=-1.0975cm,apply style/.expand once=\pmdraw@tikz]%
+ \fi%
+ \pmdraw@hookBeforeDiagram% Hook before drawing diagrams
+ \pmdraw@AedgesLoop% Commences loop for top added edges to be drawn
+ #2%
+ \pmdEmpty% Terminates loop
+ \renewcommand{\pmdraw@ifDiagWDots}{1}% Flags that diagram has dot
+ \renewcommand{\pmdraw@ifProdDiag}{1}% Flags that diagram is product
+ \setcounter{pmdraw@brickShift}{0}% Reset shifting of individual bricks
+ \pmdraw@bricksLoop% Commences loop for each top brick to be drawn
+ #4%
+ \pmdEmpty% Terminates loop
+ \renewcommand{\pmdraw@ifProdDiag}{0}% Resets flag that diagram is product
+ \setcounter{pmdraw@ifDiagWDotsFirst}{1}% Reset if drawing first brick of diagram
+ \setcounter{pmdraw@brickShift}{0}% Reset shifting of individual bricks
+ \begin{scope}[shift={(0,-\pmdraw@diagSep-\pmdraw@rowSep-\pmdraw@vertexSep)}]% Shift coordinates to be underneath top diagram
+ \pmdraw@AedgesLoop% Commences loop for bottom added edges to be drawn
+ #3%
+ \pmdEmpty% Terminates loop
+ \pmdraw@bricksLoop% Commences loop for each middle brick to be drawn
+ #5%
+ \pmdEmpty% Terminates loop
+ \setcounter{pmdraw@ifDiagWDotsFirst}{1}% Reset if drawing first brick of diagram
+ \setcounter{pmdraw@brickShift}{0}% Reset shifting of individual bricks
+ \begin{scope}[shift={(0,-\pmdraw@diagSep-\pmdraw@rowSep-\pmdraw@vertexSep)}]% Shift coordinates to be underneath middle diagram
+ \pmdraw@bricksLoop% Commences loop for each bottom brick to be drawn
+ #6%
+ \pmdEmpty% Terminates loop
+ \setcounter{pmdraw@brickShift}{0}% Reset shifting of individual bricks
+ \end{scope}%
+ \end{scope}%
+ \renewcommand{\pmdraw@ifDiagWDots}{0}% Reset if drawing a diagram with dots
+ \pmdraw@hookAfterDiagram% Hook after drawing diagrams
+ \end{tikzpicture}%
+ \,% Add space
+ \else% If drawing diagram in normal text
+ \raisebox{2cm}{% Raise diagram so bottom row is on text baseline
+ \ifnum\pmdraw@ifGrid=1% If displaying helper grid
+ \begin{tikzpicture}[scale=.5,baseline=-1.095cm,show grid=true,apply style/.expand once=\pmdraw@tikz]%
+ \else% If not displaying helper grid
+ \begin{tikzpicture}[scale=.5,baseline=-1.095cm,apply style/.expand once=\pmdraw@tikz]%
+ \fi%
+ \pmdraw@hookBeforeDiagram% Hook before drawing diagrams
+ \pmdraw@AedgesLoop% Commences loop for added edges to be drawn
+ #2%
+ \pmdEmpty% Terminates loop
+ \renewcommand{\pmdraw@ifDiagWDots}{1}% Flags that diagram has dot
+ \renewcommand{\pmdraw@ifProdDiag}{1}% Flags that diagram is product
+ \setcounter{pmdraw@brickShift}{0}% Reset shifting of individual bricks
+ \pmdraw@bricksLoop% Commences loop for each brick to be drawn
+ #4%
+ \pmdEmpty% Terminates loop
+ \renewcommand{\pmdraw@ifProdDiag}{0}% Resets flag that diagram is product
+ \setcounter{pmdraw@ifDiagWDotsFirst}{1}% Reset if drawing first brick of diagram
+ \setcounter{pmdraw@brickShift}{0}% Reset shifting of individual bricks
+ \begin{scope}[shift={(0,-\pmdraw@diagSep-\pmdraw@rowSep-\pmdraw@vertexSep)}]% Shift coordinates to be underneath top diagram
+ \pmdraw@AedgesLoop% Commences loop for bottom added edges to be drawn
+ #3%
+ \pmdEmpty% Terminates loop
+ \pmdraw@bricksLoop% Commences loop for each middle brick to be drawn
+ #5%
+ \pmdEmpty% Terminates loop
+ \setcounter{pmdraw@ifDiagWDotsFirst}{1}% Reset if drawing first brick of diagram
+ \setcounter{pmdraw@brickShift}{0}% Reset shifting of individual bricks
+ \begin{scope}[shift={(0,-\pmdraw@diagSep-\pmdraw@rowSep-\pmdraw@vertexSep)}]% Shift coordinates to be underneath middle diagram
+ \pmdraw@bricksLoop% Commences loop for each bottom brick to be drawn
+ #6%
+ \pmdEmpty% Terminates loop
+ \setcounter{pmdraw@brickShift}{0}% Reset shifting of individual bricks
+ \end{scope}%
+ \end{scope}%
+ \renewcommand{\pmdraw@ifDiagWDots}{0}% Reset if drawing a diagram with dots
+ \pmdraw@hookAfterDiagram% Hook after drawing diagrams
+ \end{tikzpicture}%
+ }%
+ \fi%
+ \pmdraw@reset% Resets user keys and other flags to default values
+}
+
+\newcommand{\pmdSetDefault}[1]{% Sets the entered styles as the default
+ \setkeys{pmdraw@default}{#1}%
+}
+
+\newcommand{\pmdSetToOriginalDefault}{% Sets the styles as the default of the package
+ \setkeys{pmdraw@default}{% Saves values
+ brick={% Sets default for brick keys
+ degree=0,
+ degree bottom=0,
+ degree top=0,
+ blank bottom=0,
+ blank top=0,
+ row sep=2,
+ no vertex bottom 1=-1,
+ no vertex bottom 2=-1,
+ no vertex bottom 3=-1,
+ no vertex bottom 4=-1,
+ no vertex bottom 5=-1,
+ no vertex bottom 6=-1,
+ no vertex bottom 7=-1,
+ no vertex bottom 8=-1,
+ no vertex bottom 9=-1,
+ no vertex top 1=-1,
+ no vertex top 2=-1,
+ no vertex top 3=-1,
+ no vertex top 4=-1,
+ no vertex top 5=-1,
+ no vertex top 6=-1,
+ no vertex top 7=-1,
+ no vertex top 8=-1,
+ no vertex top 9=-1,
+ labels=0,
+ labels bottom=0,
+ labels top=0,
+ labels start=1,
+ labels bottom start=1,
+ labels top start=1,
+ no label bottom 1=-1,
+ no label bottom 2=-1,
+ no label bottom 3=-1,
+ no label bottom 4=-1,
+ no label bottom 5=-1,
+ no label bottom 6=-1,
+ no label bottom 7=-1,
+ no label bottom 8=-1,
+ no label bottom 9=-1,
+ no label top 1=-1,
+ no label top 2=-1,
+ no label top 3=-1,
+ no label top 4=-1,
+ no label top 5=-1,
+ no label top 6=-1,
+ no label top 7=-1,
+ no label top 8=-1,
+ no label top 9=-1,
+ labels bottom draw={},
+ labels bottom node={},
+ labels top draw={},
+ labels top node={},
+ dots draw={},
+ dots node={},
+ vertices bottom phantom=0,
+ vertices top phantom=0,
+ vertices bottom uncover={1-},
+ vertices top uncover={1-},
+ levels=1,
+ levels bottom=1,
+ levels top=1,
+ levels sep=(0.5*\pmdraw@rowSep)/2,
+ levels sep bottom=(0.5*\pmdraw@rowSep)/2,
+ levels sep top=(0.5*\pmdraw@rowSep)/2,
+ edges first=0,
+ transversals first=0,
+ edges phantom=0,
+ edges uncover={1-},
+ brace draw={},
+ brace node={},
+ decorate before={},
+ decorate after={}
+ }
+ }
+ \setkeys{pmdraw@default}{% Saves values
+ NTedges={% Sets default for non-transversal edge keys
+ level=1,
+ height=-1000,
+ edge draw={},
+ phantom=0,
+ uncover={1-}
+ }
+ }
+ \setkeys{pmdraw@default}{% Saves values
+ Tedges={% Sets default for transversal edge keys
+ edge draw={},
+ phantom=0,
+ uncover={1-}
+ }
+ }
+ \setkeys{pmdraw@default}{% Saves values
+ brace={% Sets default for brace keys
+ left=0,
+ right=0,
+ above=0
+ }
+ }
+ \setkeys{pmdraw@default}{% Saves values
+ diagram={% Sets default for diagram keys
+ row sep=2,
+ tikz={},
+ grid=0,
+ decorate before={},
+ decorate after={},
+ diagram sep=1,
+ vertex sep=0,
+ edges added phantom=0,
+ edges added uncover={1-}
+ }
+ }
+ \renewcommand{\pmdraw@drawVertexOptionsDefault}{}% Resets default draw options for vertices
+ \renewcommand{\pmdraw@drawLedgesDrawOptionsDefault}{}% Resets default draw options for lower non-transversal edges
+ \renewcommand{\pmdraw@drawUedgesDrawOptionsDefault}{}% Resets default draw options for upper non-transversal edges
+ \renewcommand{\pmdraw@drawTedgesDrawOptionsDefault}{}% Resets Default draw options for transversal edges
+ \renewcommand{\pmdraw@drawAedgesOptionsDefault}{}% Resets default draw options for added edges in product diagram
+}
+\pmdSetToOriginalDefault% Sets original default values
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% For loop commands %
@@ -970,6 +1820,79 @@
% #2 Upper non-transversal edges, as list [<options>]{<left vertex>}{<right vertex>}, eg [level=1]{2}{3}
% #3 Lower non-transversal edges, as list [<options>]{<left vertex>}{<right vertex>}, eg [level=1]{2}{3}
% #4 Transversals, as list [<options>]{<upper vertex>}{<lower vertex>}, eg [level=1]{2}{3}
+ \setkeys{pmdraw@brick}{% Set default values for brick keys
+ degree bottom=\usevalue{degree bottom},
+ degree top=\usevalue{degree top},
+ blank bottom=\usevalue{blank bottom},
+ blank top=\usevalue{blank top},
+ row sep=\usevalue{row sep},
+ no vertex bottom 1=\usevalue{no vertex bottom 1},
+ no vertex bottom 2=\usevalue{no vertex bottom 2},
+ no vertex bottom 3=\usevalue{no vertex bottom 3},
+ no vertex bottom 4=\usevalue{no vertex bottom 4},
+ no vertex bottom 5=\usevalue{no vertex bottom 5},
+ no vertex bottom 6=\usevalue{no vertex bottom 6},
+ no vertex bottom 7=\usevalue{no vertex bottom 7},
+ no vertex bottom 8=\usevalue{no vertex bottom 8},
+ no vertex bottom 9=\usevalue{no vertex bottom 9},
+ no vertex top 1=\usevalue{no vertex top 1},
+ no vertex top 2=\usevalue{no vertex top 2},
+ no vertex top 3=\usevalue{no vertex top 3},
+ no vertex top 4=\usevalue{no vertex top 4},
+ no vertex top 5=\usevalue{no vertex top 5},
+ no vertex top 6=\usevalue{no vertex top 6},
+ no vertex top 7=\usevalue{no vertex top 7},
+ no vertex top 8=\usevalue{no vertex top 8},
+ no vertex top 9=\usevalue{no vertex top 9},
+ labels=\usevalue{labels},
+ labels bottom=\usevalue{labels bottom},
+ labels top=\usevalue{labels top},
+ labels start=\usevalue{labels start},
+ labels bottom start=\usevalue{labels bottom start},
+ labels top start=\usevalue{labels top start},
+ no label bottom 1=\usevalue{no label bottom 1},
+ no label bottom 2=\usevalue{no label bottom 2},
+ no label bottom 3=\usevalue{no label bottom 3},
+ no label bottom 4=\usevalue{no label bottom 4},
+ no label bottom 5=\usevalue{no label bottom 5},
+ no label bottom 6=\usevalue{no label bottom 6},
+ no label bottom 7=\usevalue{no label bottom 7},
+ no label bottom 8=\usevalue{no label bottom 8},
+ no label bottom 9=\usevalue{no label bottom 9},
+ no label top 1=\usevalue{no label top 1},
+ no label top 2=\usevalue{no label top 2},
+ no label top 3=\usevalue{no label top 3},
+ no label top 4=\usevalue{no label top 4},
+ no label top 5=\usevalue{no label top 5},
+ no label top 6=\usevalue{no label top 6},
+ no label top 7=\usevalue{no label top 7},
+ no label top 8=\usevalue{no label top 8},
+ no label top 9=\usevalue{no label top 9},
+ labels bottom draw=\usevalue{labels bottom draw},
+ labels bottom node=\usevalue{labels bottom node},
+ labels top draw=\usevalue{labels top draw},
+ labels top node=\usevalue{labels top node},
+ dots draw=\usevalue{dots draw},
+ dots node=\usevalue{dots node},
+ vertices bottom phantom=\usevalue{vertices bottom phantom},
+ vertices top phantom=\usevalue{vertices top phantom},
+ vertices bottom uncover=\usevalue{vertices bottom uncover},
+ vertices top uncover=\usevalue{vertices top uncover},
+ levels=\usevalue{levels},
+ levels bottom=\usevalue{levels bottom},
+ levels top=\usevalue{levels top},
+ levels sep=\usevalue{levels sep},
+ levels sep bottom=\usevalue{levels sep bottom},
+ levels sep top=\usevalue{levels sep top},
+ edges first=\usevalue{edges first},
+ transversals first=\usevalue{transversals first},
+ edges phantom=\usevalue{edges phantom},
+ edges uncover=\usevalue{edges uncover},
+ brace draw=\usevalue{brace draw},
+ brace node=\usevalue{brace node},
+ decorate before=\usevalue{decorate before},
+ decorate after=\usevalue{decorate after}
+ }%
\setkeys{pmdraw@brick}{levels,#1}% Processes options and set default levels
\pmdraw@hookBeforeBrick% Hook before drawing brick
\ifnum\pmdraw@ifEdgesFirst=0% If drawing vertices first
@@ -1299,6 +2222,7 @@
\let\pmdraw@drawLabelBottom\pmdraw@drawLabelBottomDefault%
\let\pmdraw@drawLabelTop\pmdraw@drawLabelTopDefault%
\let\pmdraw@drawLabelBottom\pmdraw@drawLabelBottomDefault%
+ \let\pmdraw@drawVertex\pmdraw@drawVertexDefault%
\setcounter{pmdraw@blankB}{0}%
\setcounter{pmdraw@blankT}{0}%
\setcounter{pmdraw@labelStartB}{1}%
@@ -1309,6 +2233,13 @@
}
\newcommand{\pmdraw@drawLedges}[3][]{% Draws lower non-transversal edge, #1 options, #2 L vertex, #3 R vertex
\setcounter{pmdraw@NTlevel}{1}% Store default level of edge
+ \setkeys{pmdraw@NTedges}{% Sets default non-transversal edge keys
+ level=\usevalue{level},
+ height=\usevalue{height},
+ edge draw=\usevalue{edge draw},
+ phantom=\usevalue{phantom},
+ uncover=\usevalue{uncover}
+ }%
\setkeys{pmdraw@NTedges}{#1}% Processes options
\ifdim\pmdraw@NTedgesHeight pt=-1000pt% If using default heights
\tikzmath{%
@@ -1346,6 +2277,11 @@
\pmdraw@LedgesLoop% Restart for loop
}
\newcommand{\pmdraw@drawTedges}[3][]{% Draws transversal edge, #1 options, #2 upper vertex, #3 lower vertex
+ \setkeys{pmdraw@Tedges}{% Sets default key values for transversal edges
+ edge draw=\usevalue{edge draw},
+ phantom=\usevalue{phantom},
+ uncover=\usevalue{uncover}
+ }%
\setkeys{pmdraw@Tedges}{#1}% Processes options
\@ifclassloaded{beamer}{% If in beamer
\uncover<\pmdraw@edgeUncover>{% Uncovers edge
@@ -1421,6 +2357,13 @@
}
\newcommand{\pmdraw@drawUedges}[3][]{% Draws upper non-transversal edge, #1 options, #2 L vertex, #3 R vertex
\setcounter{pmdraw@NTlevel}{1}% Store default level of edge
+ \setkeys{pmdraw@NTedges}{% Sets default non-transversal edge keys
+ level=\usevalue{level},
+ height=\usevalue{height},
+ edge draw=\usevalue{edge draw},
+ phantom=\usevalue{phantom},
+ uncover=\usevalue{uncover}
+ }%
\setkeys{pmdraw@NTedges}{#1}% Processes options
\ifdim\pmdraw@NTedgesHeight pt=-1000pt% If using default heights
\tikzmath{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-acadian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-acadian.ldf
index c231e80f342..a2eaae84fab 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-acadian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-acadian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-acadien.ldf}[polyglossia: module for Canadian (Acadian) French]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-aeb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-aeb.ldf
index 7029af6bf65..764c92b8f31 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-aeb.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-aeb.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-aeb.ldf}[polyglossia: module for aeb (Arabic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-af.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-af.ldf
index baa1c8c0282..640399a7072 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-af.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-af.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-af.ldf}[polyglossia: module for af (Afrikaans)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-afb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-afb.ldf
index 41b672984bb..bb92a313eb2 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-afb.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-afb.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-afb.ldf}[polyglossia: module for afb (Arabic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-afrikaans.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-afrikaans.ldf
index 653d10b5dda..5befce7a866 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-afrikaans.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-afrikaans.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-afrikaans.ldf}[polyglossia: module for Afrikaans]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-albanian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-albanian.ldf
index bbfbb2e7576..6d66dd23c80 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-albanian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-albanian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-albanian.ldf}[polyglossia: module for Albanian]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-am.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-am.ldf
index e5a358a17e8..a49b871c05b 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-am.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-am.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-am.ldf}[polyglossia: module for am (Amharic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-american.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-american.ldf
index 2531eb7c587..57b5419eaae 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-american.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-american.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-american.ldf}[polyglossia: module for American English]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-amharic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-amharic.ldf
index aebbd10989a..9d67c71642d 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-amharic.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-amharic.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-amharic.ldf}[polyglossia: module for Amharic]
\PolyglossiaSetup{amharic}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-apd.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-apd.ldf
index 54cb4d4b6eb..8e2f1a39613 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-apd.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-apd.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-apd.ldf}[polyglossia: module for apd (Arabic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-IQ.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-IQ.ldf
index 3583fd12ccb..f8bf0310728 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-IQ.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-IQ.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ar-IQ.ldf}[polyglossia: module for ar-IQ (Arabic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-JO.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-JO.ldf
index bd140fb026c..3b76069cd86 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-JO.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-JO.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ar-JO.ldf}[polyglossia: module for ar-JO (Arabic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-LB.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-LB.ldf
index 538e6a5a90a..da70c805f62 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-LB.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-LB.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ar-LB.ldf}[polyglossia: module for ar-LB (Arabic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-MR.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-MR.ldf
index 471dad5d12b..4b95987fccd 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-MR.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-MR.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ar-MR.ldf}[polyglossia: module for ar-MR (Arabic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-PS.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-PS.ldf
index 8158dca6e94..475202a4582 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-PS.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-PS.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ar-PS.ldf}[polyglossia: module for ar-PS (Arabic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-SY.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-SY.ldf
index b437f61e191..de54d55975b 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-SY.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-SY.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ar-SY.ldf}[polyglossia: module for ar-SY (Arabic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-YE.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-YE.ldf
index 4eef25a7166..0d2decc24e9 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-YE.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-YE.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ar-YE.ldf}[polyglossia: module for ar-YE (Arabic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar.ldf
index 84a751f2fc0..8d6e79bb471 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ar.ldf}[polyglossia: module for ar (Arabic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-arabic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-arabic.ldf
index 885fe3d02e8..7dfc5531765 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-arabic.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-arabic.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-arabic.ldf}[polyglossia: module for Arabic]
\RequireBidi
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-armenian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-armenian.ldf
index 0770300480f..5a167dd8c2c 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-armenian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-armenian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-armenian.ldf}[polyglossia: module for Armenian]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-arq.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-arq.ldf
index d71e48bd945..64421d29059 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-arq.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-arq.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-arq.ldf}[polyglossia: module for arq (Arabic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ary.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ary.ldf
index c0b5debd39d..aff989a8ed1 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ary.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ary.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ary.ldf}[polyglossia: module for ary (Arabic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-arz.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-arz.ldf
index 41e1cfd5702..fe6defdfd98 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-arz.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-arz.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-arz.ldf}[polyglossia: module for arz (Arabic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ast.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ast.ldf
index f073cdc632f..0bd2d6607b4 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ast.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ast.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ast.ldf}[polyglossia: module for ast (Asturian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-asturian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-asturian.ldf
index 109a560111f..a2d29dd5ac5 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-asturian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-asturian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
% Translated by Xuacu <xuacusk8 at gmail dot com>
% Contributed by Kevin Godby <godbyk at gmail dot com>
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-australian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-australian.ldf
index d3c85168511..fd9506e201d 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-australian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-australian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-australian.ldf}[polyglossia: module for Australian English]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-austrian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-austrian.ldf
index b1397542781..dd079ba151f 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-austrian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-austrian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-austrian.ldf}[polyglossia: module for Austrian German (old spelling)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ayl.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ayl.ldf
index a24eb19c922..9543ecd0cec 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ayl.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ayl.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ayl.ldf}[polyglossia: module for ayl (Arabic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasa.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasa.ldf
index 4395a83d2e8..a966cf7cdad 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasa.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasa.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-bahasa.ldf}[polyglossia: module for Bahasa Indonesia]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasai.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasai.ldf
index e710b619997..093f3bcd3a2 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasai.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasai.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-bahasai.ldf}[polyglossia: module for Bahasa Indonesia]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasam.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasam.ldf
index d4c2ea9ec0c..a333b16ea27 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasam.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasam.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-bahasam.ldf}[polyglossia: module for Bahasa Melayu]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-basque.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-basque.ldf
index dbff903d788..112d8d31ab6 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-basque.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-basque.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-basque.ldf}[polyglossia: module for Basque]
\PolyglossiaSetup{basque}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-be-tarask.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-be-tarask.ldf
index 975f48c0acc..dc5ffa64a6e 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-be-tarask.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-be-tarask.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-be-tarask.ldf}[polyglossia: module for be-tarask (Belarusian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-be.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-be.ldf
index 666620a671c..39cf456b886 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-be.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-be.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-be.ldf}[polyglossia: module for be (Belarusian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-belarusian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-belarusian.ldf
index 816e5900378..a32c2c13095 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-belarusian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-belarusian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-belarusian.ldf}[polyglossia: module for Belarusian]
@@ -123,7 +123,7 @@
\def\@Ccdash{\leavevmode
\nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}%
\ifx\cyrdash\undefined
- \def\cyrdash{\hbox to.8em{\textendash\hss\textendash}}%
+ \def\cyrdash{\leavevmode\hbox to.8em{\textendash\hss\textendash}}%
\fi
\declare@shorthand{belarusian}{",}{\nobreak\hskip.2em\ignorespaces}%
}
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bengali.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bengali.ldf
index 1831fbdf032..476eee7d7ca 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bengali.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bengali.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
% Translations provided by সাজেদুর রহিম জোয়ারদার <toshazed@gmail.com>
% TODO implement Bengali calendar
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bg.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bg.ldf
index fe47cb79588..960b5027336 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bg.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bg.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-bg.ldf}[polyglossia: module for bg (Bulgarian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bn.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bn.ldf
index c85acb7dcac..bcb64153926 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bn.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bn.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-bn.ldf}[polyglossia: module for bn (Bengali)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bo.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bo.ldf
index f569a743133..a87872198c1 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bo.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bo.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-bo.ldf}[polyglossia: module for bo (Tibetan)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bosnian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bosnian.ldf
index 24b7756ae52..d01a5c5b334 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bosnian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bosnian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-bosnian.ldf}[polyglossia: module for Bosnian]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-br.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-br.ldf
index 62436958f59..e6d50a9b8cb 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-br.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-br.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-br.ldf}[polyglossia: module for br (Breton)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-brazil.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-brazil.ldf
index 85e541ab0c3..8dc9fb7fd46 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-brazil.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-brazil.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-brazil.ldf}[polyglossia: module for Brazilian Portuguese]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf
index 51f048c909f..62a658788ef 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-breton.ldf}[polyglossia: module for Breton]
\PolyglossiaSetup{breton}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-british.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-british.ldf
index 2a9870c6370..47de0faae4c 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-british.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-british.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-british.ldf}[polyglossia: module for British English]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bs.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bs.ldf
index fa0243300c8..afbe48289e1 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bs.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bs.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-bs.ldf}[polyglossia: module for bs (Bosnian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bulgarian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bulgarian.ldf
index 22cb9194716..a4062e493e6 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bulgarian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bulgarian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-bulgarian.ldf}[polyglossia: module for Bulgarian]
\PolyglossiaSetup{bulgarian}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ca.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ca.ldf
index 9c8d87d3226..bfa2f310766 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ca.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ca.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ca.ldf}[polyglossia: module for ca (Catalan)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-canadian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-canadian.ldf
index 119f086eeac..451529dff02 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-canadian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-canadian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-canadian.ldf}[polyglossia: module for Canadian English]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-canadien.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-canadien.ldf
index e62a04726aa..47aa61e6a49 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-canadien.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-canadien.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-canadien.ldf}[polyglossia: module for Canadian French]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-catalan.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-catalan.ldf
index 1e855fabb64..cd7f34b68a2 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-catalan.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-catalan.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-catalan.ldf}[polyglossia: module for Catalan]
\PolyglossiaSetup{catalan}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-chinese.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-chinese.ldf
index 004a8e8903c..f322958cfb1 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-chinese.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-chinese.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-chinese.ldf}[polyglossia: module for Chinese]
@@ -78,6 +78,20 @@
\SetLanguageAliasValues{chinese}{variant}{tw,traditional}
+\providecommand*\presection{}
+\providecommand*\presubsection{}
+\providecommand*\presubsubsection{}
+\providecommand*\postsection{}
+\providecommand*\postsubsection{}
+\providecommand*\postsubsubsection{}
+\let\xpg@save@presection\presection
+\let\xpg@save@presubsection\presubsection
+\let\xpg@save@presubsubsection\presubsubsection
+\let\xpg@save@postsection\postsection
+\let\xpg@save@postsubsection\postsubsection
+\let\xpg@save@postsubsubsection\postsubsubsection
+\let\xpg@save@seccntformat\@seccntformat
+
\def\chinese@capsformat{%
\def\@seccntformat##1{%
\csname pre##1\endcsname%
@@ -98,6 +112,16 @@
\def\presubsubsection{第}%
}
+\def\nochinese@capsformat{%
+ \let\presection\xpg@save@presection%
+ \let\presubsection\xpg@save@presubsection%
+ \let\presubsubsection\xpg@save@presubsubsection%
+ \let\postsection\xpg@save@postsection%
+ \let\postsubsection\xpg@save@postsubsection%
+ \let\postsubsubsection\xpg@save@postsubsubsection%
+ \let\@seccntformat\xpg@save@seccntformat%
+}
+
\def\captionschinese{%
\ifchinese@traditional
\captions@chinese@traditional
@@ -276,16 +300,60 @@
}%
}
+\ifluatex
+ \@ifundefined{xpg@attr@cjkspacing}{\newattribute\xpg@attr@cjkspacing}{}
+ \directlua{ require"polyglossia-cjk-spacing" }
+ \def\chinese@simplified@spacing {\xpg@attr@cjkspacing=\thr@@} % chinese simplified
+ \def\chinese@traditional@spacing{\xpg@attr@cjkspacing=4\relax} % chinese traditional
+ \def\nochinese@spacing{\unsetattribute\xpg@attr@cjkspacing}
+\else
+ \@ifundefined{xpg@orig@XeTeXlinebreakskip}{\newskip\xpg@orig@XeTeXlinebreakskip}{}
+ \xpg@orig@XeTeXlinebreakskip=\XeTeXlinebreakskip
+ \def\chinese@simplified@spacing{%
+ \XeTeXlinebreaklocale "zh"%
+ \XeTeXlinebreakskip = 0pt plus 0.1em minus 0.01em%
+ }
+ \let\chinese@traditional@spacing\chinese@simplified@spacing
+ \def\nochinese@spacing{%
+ \XeTeXlinebreakskip=\xpg@orig@XeTeXlinebreakskip%
+ \XeTeXlinebreaklocale ""%
+ }
+\fi
+
\def\noextras@chinese{%
- \chinese@capsformat%
+ \nochinese@capsformat%
+ \nochinese@spacing%
}
\def\blockextras@chinese{%
\chinese@capsformat%
+ \ifchinese@traditional
+ \chinese@traditional@spacing%
+ \else
+ \chinese@simplified@spacing%
+ \fi%
}
\def\inlineextras@chinese{%
\chinese@capsformat%
+ \ifchinese@traditional
+ \chinese@traditional@spacing%
+ \else
+ \chinese@simplified@spacing%
+ \fi%
}
+
+\ifxetex
+ % \XeTeXlinebreaklocale is global,
+ % so we need to reset after nested language got closed
+ \def\nestedextras@chinese{%
+ \ifchinese@traditional
+ \chinese@traditional@spacing%
+ \else
+ \chinese@simplified@spacing%
+ \fi%
+ }
+\fi
+
% Based on contributions of Toru Inagaki, Norio Iwase, François Charette
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Arab.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Arab.ldf
index f3fb645422d..99e58d07798 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Arab.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Arab.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ckb-Arab.ldf}[polyglossia: module for ckb-Arab (Kurdish)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Latn.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Latn.ldf
index 93bd7dcdcf8..bcc49a399da 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Latn.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Latn.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ckb-Latn.ldf}[polyglossia: module for ckb-Latn (Kurdish)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb.ldf
index 73d86d55a01..0e98a403ba5 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ckb.ldf}[polyglossia: module for ckb (Kurdish)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-classiclatin.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-classiclatin.ldf
index b20a680f5bd..bfb41cdbb00 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-classiclatin.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-classiclatin.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-classiclatin.ldf}[polyglossia: module for classic Latin]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-cop.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-cop.ldf
index 3aea4d6ff28..2d77ac75545 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-cop.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-cop.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-cop.ldf}[polyglossia: module for cop (Coptic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-coptic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-coptic.ldf
index 4368557e1c7..b307313b155 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-coptic.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-coptic.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-coptic.ldf}[polyglossia: module for Coptic]
\PolyglossiaSetup{coptic}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf
index 8c7d64ae5e1..2c9e035f274 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-croatian.ldf}[polyglossia: module for Croatian]
\PolyglossiaSetup{croatian}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-cy.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-cy.ldf
index 107496bca65..5242ba58730 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-cy.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-cy.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-cy.ldf}[polyglossia: module for cy (Welsh)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-cz.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-cz.ldf
index 81cf42534e9..164ebcd141b 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-cz.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-cz.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-cz.ldf}[polyglossia: module for cz (Czech)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-czech.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-czech.ldf
index 85aaf6fca69..d60fd051fd8 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-czech.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-czech.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-czech.ldf}[polyglossia: module for Czech]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-da.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-da.ldf
index 7a6f2e8abd1..75001758963 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-da.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-da.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-da.ldf}[polyglossia: module for da (Danish)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-danish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-danish.ldf
index 0e779b8677a..7f98ba74532 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-danish.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-danish.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-danish.ldf}[polyglossia: module for Danish]
\PolyglossiaSetup{danish}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT-1901.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT-1901.ldf
index ab66673e7c4..1d4716cc788 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT-1901.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT-1901.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-AT-1901.ldf}[polyglossia: module for de-AT-1901 (Austrian German, old spelling)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT-1996.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT-1996.ldf
index 38021f39d44..51aafd52c02 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT-1996.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT-1996.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-AT-1996.ldf}[polyglossia: module for de-AT-1996 (Austrian German)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT.ldf
index 2c74672a940..b9dd535f033 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-AT.ldf}[polyglossia: module for de-AT (Austrian German)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1901.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1901.ldf
index 0c68393bc3e..fb69ea8dd31 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1901.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1901.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-CH-1901.ldf}[polyglossia: module for de-CH-1901 (Swiss German, old spelling)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1996.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1996.ldf
index d115b45dd71..dcbff2cabf6 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1996.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1996.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-CH-1996.ldf}[polyglossia: module for de-CH-1996 (Swiss German)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH.ldf
index 5ca22d3cf8f..50dbdd12a4d 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-CH.ldf}[polyglossia: module for de-CH (Swiss German)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1901.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1901.ldf
index f1b57ec2d43..c29fb7f8887 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1901.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1901.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-DE-1901.ldf}[polyglossia: module for de-DE-1901 (Germany's German, old spelling)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1996.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1996.ldf
index a51fb8fca22..600aaf6e54e 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1996.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1996.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-DE-1996.ldf}[polyglossia: module for de-DE-1996 (Germany's German)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE.ldf
index f88846d4d5d..65b6e86b215 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-DE.ldf}[polyglossia: module for de-DE (Germany's German)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1901.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1901.ldf
index 07e96769bf4..9e250002536 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1901.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1901.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-AT-1901-Latf.ldf}[polyglossia: module for de-AT-1901-Latf (Austrian German, old spelling)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1996.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1996.ldf
index 02124310792..ea0b6c72b35 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1996.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1996.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-AT-1996-Latf.ldf}[polyglossia: module for de-AT-1996-Latf (Austrian German)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT.ldf
index a71b3cac654..77f5ff3cc2a 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-AT-Latf.ldf}[polyglossia: module for de-AT-Latf (Austrian German)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1901.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1901.ldf
index 2545c40ce48..109304a6d00 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1901.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1901.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-CH-1901-Latf.ldf}[polyglossia: module for de-CH-1901-Latf (Swiss German, old spelling)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1996.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1996.ldf
index 08f3d5b3da0..e133756a801 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1996.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1996.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-CH-1996-Latf.ldf}[polyglossia: module for de-CH-1996-Latf (Swiss German)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH.ldf
index e9022148d23..354e31d09fe 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-CH-Latf.ldf}[polyglossia: module for de-CH-Latf (Swiss German)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1901.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1901.ldf
index a5637e4fb1a..1ab860716be 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1901.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1901.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-DE-1901-Latf.ldf}[polyglossia: module for de-DE-1901-Latf (Germany's German, old spelling)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1996.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1996.ldf
index cb6c2261296..a92f9560343 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1996.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1996.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-DE-1996-Latf.ldf}[polyglossia: module for de-DE-1996-Latf (Germany's German)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE.ldf
index 161729c7fd1..78379253041 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-DE-Latf.ldf}[polyglossia: module for de-DE-Latf (Germany's German)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf.ldf
index c399b378c46..f2965a187b2 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-Latf.ldf}[polyglossia: module for de-Latf (German)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de.ldf
index 05d3f990eea..129984e5453 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de.ldf}[polyglossia: module for de (German)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-divehi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-divehi.ldf
index a8859eac5fb..93a829f5271 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-divehi.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-divehi.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-divehi.ldf}[polyglossia: module for Divehi]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-dsb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-dsb.ldf
index c3f45032b9b..03e5af1f054 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-dsb.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-dsb.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-dsb.ldf}[polyglossia: module for dsb (Sorbian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-dutch.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-dutch.ldf
index f2ebd6f9168..87f134bc6de 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-dutch.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-dutch.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-dutch.ldf}[polyglossia: module for Dutch]
\PolyglossiaSetup{dutch}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-dv.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-dv.ldf
index e157ca05322..226c2563bca 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-dv.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-dv.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-dv.ldf}[polyglossia: module for dv (Divehi)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ecclesiasticlatin.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ecclesiasticlatin.ldf
index 51659c46528..8341a31bffc 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ecclesiasticlatin.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ecclesiasticlatin.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ecclesiasticlatin.ldf}[polyglossia: module for ecclesiastic Latin]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-el-monoton.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-el-monoton.ldf
index 32cfa796b91..ddf60b4dfed 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-el-monoton.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-el-monoton.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-el-monoton.ldf}[polyglossia: module for el-monoton (Greek)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-el-polyton.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-el-polyton.ldf
index 0a57420ca3f..87b5c481d73 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-el-polyton.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-el-polyton.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-el-polyton.ldf}[polyglossia: module for el-polyton (Greek)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-el.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-el.ldf
index b9a45d3501f..456bbff4257 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-el.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-el.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-el.ldf}[polyglossia: module for el (Greek)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-en-AU.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-AU.ldf
index 362795a36b2..e01c1f9c819 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-en-AU.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-AU.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-en-AU.ldf}[polyglossia: module for en-AU (Australian English)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-en-CA.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-CA.ldf
index 4c61b1afdd0..74f1eb912e2 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-en-CA.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-CA.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-en-CA.ldf}[polyglossia: module for en-CA (Canadian English)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-en-GB.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-GB.ldf
index bf8d7eb4726..3eb708baf40 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-en-GB.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-GB.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-en-GB.ldf}[polyglossia: module for en-GB (British English)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-en-NZ.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-NZ.ldf
index b9956311def..4d97546562f 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-en-NZ.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-NZ.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-en-NZ.ldf}[polyglossia: module for en-NZ (Newzealand English)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-en-US.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-US.ldf
index 943933b5836..7c4f5842c94 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-en-US.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-US.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-en-US.ldf}[polyglossia: module for en-US (American English)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-en.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-en.ldf
index 65818e7fd70..ce078fd7059 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-en.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-en.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-en.ldf}[polyglossia: module for en (English)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf
index c434e00c40d..f1bbcf05398 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-english.ldf}[polyglossia: module for English]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-eo.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-eo.ldf
index ee888a9a3df..a5d24deeb0b 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-eo.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-eo.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-eo.ldf}[polyglossia: module for eo (Esperanto)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-es-ES.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-es-ES.ldf
index 2d4927f3c40..70f60cb8e31 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-es-ES.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-es-ES.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-es-ES.ldf}[polyglossia: module for es-ES (Spain's Spanish)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-es-MX.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-es-MX.ldf
index 656834e9f4a..28ad8c60d35 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-es-MX.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-es-MX.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-es-MX.ldf}[polyglossia: module for es-MX (Mexican Spanish)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-es.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-es.ldf
index 8d6968fea50..19e07362d82 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-es.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-es.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-es.ldf}[polyglossia: module for es (Spanish)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-esperanto.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-esperanto.ldf
index cb6c35e5329..e83ba9cdd09 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-esperanto.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-esperanto.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-esperanto.ldf}[polyglossia: module for Esperanto]
\PolyglossiaSetup{esperanto}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-estonian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-estonian.ldf
index 7d179e433d7..3ae068c0e83 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-estonian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-estonian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-estonian.ldf}[polyglossia: module for Estonian]
\PolyglossiaSetup{estonian}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-et.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-et.ldf
index 0151ac000df..43b2c150748 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-et.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-et.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-et.ldf}[polyglossia: module for et (Estonian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-eu.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-eu.ldf
index 39c5bdfef1c..009c53cecce 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-eu.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-eu.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-eu.ldf}[polyglossia: module for eu (Basque)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fa.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fa.ldf
index abe7241e059..09cc80b5f3c 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-fa.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fa.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-fa.ldf}[polyglossia: module for fa (Persian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-farsi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-farsi.ldf
index 21af458e2cf..28ceff04ce6 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-farsi.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-farsi.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-farsi.ldf}[polyglossia: module for Farsi]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fi.ldf
index a6b932ff10b..1624f23a2ce 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-fi.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fi.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-fi.ldf}[polyglossia: module for fi (Finnish)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-finnish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-finnish.ldf
index 1d9b03c1974..5e33e87f194 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-finnish.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-finnish.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-finnish.ldf}[polyglossia: module for Finnish]
\PolyglossiaSetup{finnish}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CA-u-sd-canb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CA-u-sd-canb.ldf
index 173d01f3c57..33586fd863a 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CA-u-sd-canb.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CA-u-sd-canb.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-fr-CA-u-sd-canb.ldf}[polyglossia: module for fr-CA-u-sd-canb (Canadian French, Acadian subvariety)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CA.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CA.ldf
index c1404f6862e..2e5c89f0d4b 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CA.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CA.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-fr-CA.ldf}[polyglossia: module for fr-CA (Canadian French)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CH.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CH.ldf
index c31c4f57f8c..25cc652cee4 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CH.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CH.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-fr-CH.ldf}[polyglossia: module for fr-CH (Swiss French)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-FR.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-FR.ldf
index b66ad30ec8c..92682395655 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-FR.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-FR.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-fr-FR.ldf}[polyglossia: module for fr-FR (France's French)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fr.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr.ldf
index 46267775b17..b42b42741f5 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-fr.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-fr.ldf}[polyglossia: module for fr (French)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf
index 8beace22bbd..401f4981c23 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-french.ldf}[polyglossia: module for French]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-friulan.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-friulan.ldf
index 7713ef99fe5..70e3ae0d475 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-friulan.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-friulan.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-friulan.ldf}[polyglossia: module for Friulian]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-friulian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-friulian.ldf
index ed1f24ae428..579f2af366d 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-friulian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-friulian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-friulian.ldf}[polyglossia: module for Friulian]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fur.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fur.ldf
index 2005e4d484a..807487e9cc8 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-fur.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fur.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-fur.ldf}[polyglossia: module for fur (Friulian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ga.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ga.ldf
index 364fa8e773e..4c9287deae4 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ga.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ga.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ga.ldf}[polyglossia: module for ga (Gaelic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-gaelic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-gaelic.ldf
index 8b91897888a..f78c7250274 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-gaelic.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-gaelic.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-gaelic.ldf}[polyglossia: module for Gaelic]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-galician.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-galician.ldf
index ab10957c8ea..1e489682f15 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-galician.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-galician.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-galician.ldf}[polyglossia: module for Galician]
\PolyglossiaSetup{galician}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-gd.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-gd.ldf
index bd0a4572e90..58045731450 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-gd.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-gd.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-gd.ldf}[polyglossia: module for gd (Gaelic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-georgian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-georgian.ldf
index be0db60a34b..9a5b693adf4 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-georgian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-georgian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-georgian.ldf}[polyglossia: module for Georgian]
@@ -83,7 +83,7 @@
\def\@Ccdash{\leavevmode
\nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}%
\ifx\cyrdash\undefined
- \def\cyrdash{\hbox to.8em{\textendash\hss\textendash}}%
+ \def\cyrdash{\leavevmode\hbox to.8em{\textendash\hss\textendash}}%
\fi
\declare@shorthand{georgian}{",}{\nobreak\hskip.2em\ignorespaces}%
}
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf
index f4f918f50cb..1980f9d179e 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-german.ldf}[polyglossia: module for German]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-germanb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-germanb.ldf
index da48264a9c9..625478d0561 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-germanb.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-germanb.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-germanb.ldf}[polyglossia: module for German (old spelling)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-gl.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-gl.ldf
index c5be58f01c4..9b8442935e3 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-gl.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-gl.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-gl.ldf}[polyglossia: module for gl (Galician)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-grc.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-grc.ldf
index 820df8e3198..17733e08e61 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-grc.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-grc.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-grc.ldf}[polyglossia: module for grc (Greek)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-greek.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-greek.ldf
index b48684d1b58..cfc57f0b639 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-greek.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-greek.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-greek.ldf}[polyglossia: module for Greek]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-he.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-he.ldf
index 05e2aa40bb5..ee5c85a6589 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-he.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-he.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-he.ldf}[polyglossia: module for he (Hebrew)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf
index 3b3491ce9ad..b866f508ff4 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-hebrew.ldf}[polyglossia: module for Hebrew]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hi.ldf
index 1e9f1240502..f95ff044ad4 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-hi.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hi.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-hi.ldf}[polyglossia: module for hi (Hindi)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hindi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hindi.ldf
index a3a6360fe04..f2603cff064 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-hindi.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hindi.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
% UTF-8 strings kindly provided by Zdenĕk Wagner, 10-03-2008
% with corrections and additional contributions by Anshuman Pandey
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hr.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hr.ldf
index 1bcc48ff4c6..f0e1fa462f8 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-hr.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hr.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-hr.ldf}[polyglossia: module for hr (Croatian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hsb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hsb.ldf
index 51d2499b0ac..68e8b65c00d 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-hsb.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hsb.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-hsb.ldf}[polyglossia: module for hsb (Higher Sorbian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hu.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hu.ldf
index 8f86fc248e4..47ed150e040 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-hu.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hu.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-hu.ldf}[polyglossia: module for hu (Hungarian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hungarian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hungarian.ldf
index 0ed88f1aca6..29b51e5d417 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-hungarian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hungarian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-hungarian.ldf}[polyglossia: module for Hungarian]
@@ -343,14 +343,14 @@
% Hungarian needs 1) trailing dots in chapter headings; 2) trailing dot in section, subsection, etc, counters
\def\@hungarian@forced@dot{}
\def\xpg@save@autodot{}
-\ifdef{\KOMAScript}{%
+\ifdef{\KOMAClassName}{%
\providecommand*\autodot{}%
\let\xpg@save@autodot\autodot%
}{}
% The following is based on some ideas from gloss-russian.ldf
\def\hungarian@sectsformat{%
\ifhungarian@forceheadingpunctuation%
- \ifdef{\KOMAScript}{%
+ \ifdef{\KOMAClassName}{%
\renewcommand*\autodot{.}%
}{%
\def\@seccntformat##1{\csname pre##1\endcsname%
@@ -376,7 +376,7 @@
%
\def\nohungarian@sectsformat{%
\ifhungarian@forceheadingpunctuation%
- \ifdef{\KOMAScript}{%
+ \ifdef{\KOMAClassName}{%
\let\autodot\xpg@save@autodot%
}{%
\def\@seccntformat##1{\csname the##1\endcsname\quad}% = LaTeX kernel
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hy.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hy.ldf
index 16b61a8776b..b6f49d2b33a 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-hy.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hy.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-hy.ldf}[polyglossia: module for hy (Armenian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ia.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ia.ldf
index 1e843ef5df8..5affad8c964 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ia.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ia.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ia.ldf}[polyglossia: module for ia (Interlingua)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-icelandic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-icelandic.ldf
index 43a9efe3f8a..9aaf77a1201 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-icelandic.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-icelandic.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-icelandic.ldf}[polyglossia: module for Icelandic]
\PolyglossiaSetup{icelandic}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-id.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-id.ldf
index adf9c602827..a9f38697584 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-id.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-id.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-id.ldf}[polyglossia: module for id (Malay)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-interlingua.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-interlingua.ldf
index ec3b1844e9a..94ce192a52a 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-interlingua.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-interlingua.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-interlingua.ldf}[polyglossia: module for Interlingua]
\PolyglossiaSetup{interlingua}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-irish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-irish.ldf
index 0e5b9c888b3..b1455f6242a 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-irish.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-irish.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-irish.ldf}[polyglossia: module for Irish]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-is.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-is.ldf
index 6724333f2bc..e5f58354a9c 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-is.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-is.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-is.ldf}[polyglossia: module for is (Icelandic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-it.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-it.ldf
index 42ae275e327..92cccf90957 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-it.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-it.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-it.ldf}[polyglossia: module for it (Italian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-italian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-italian.ldf
index da005e54c76..a646035f855 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-italian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-italian.ldf
@@ -1,5 +1,5 @@
% !TEX encoding = UTF-8 Unicode
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-italian.ldf}[polyglossia: module for Italian]
\PolyglossiaSetup{italian}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ja.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ja.ldf
index 6abed7ecc51..609950fc65c 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ja.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ja.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ja.ldf}[polyglossia: module for ja (Japanese)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-japanese.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-japanese.ldf
index 43015d36cec..805e25e78c6 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-japanese.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-japanese.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-japanese.ldf}[polyglossia: module for Japanese]
@@ -20,6 +20,20 @@
% BCP-47 compliant aliases
\setlanguagealias*{japanese}{ja}
+\providecommand*\presection{}
+\providecommand*\presubsection{}
+\providecommand*\presubsubsection{}
+\providecommand*\postsection{}
+\providecommand*\postsubsection{}
+\providecommand*\postsubsubsection{}
+\let\xpg@save@presection\presection
+\let\xpg@save@presubsection\presubsection
+\let\xpg@save@presubsubsection\presubsubsection
+\let\xpg@save@postsection\postsection
+\let\xpg@save@postsubsection\postsubsection
+\let\xpg@save@postsubsubsection\postsubsubsection
+\let\xpg@save@seccntformat\@seccntformat
+
\def\japanese@capsformat{%
\def\@seccntformat##1{%
\csname pre##1\endcsname%
@@ -34,6 +48,16 @@
\def\presubsubsection{第}%
}
+\def\nojapanese@capsformat{%
+ \let\presection\xpg@save@presection%
+ \let\presubsection\xpg@save@presubsection%
+ \let\presubsubsection\xpg@save@presubsubsection%
+ \let\postsection\xpg@save@postsection%
+ \let\postsubsection\xpg@save@postsubsection%
+ \let\postsubsubsection\xpg@save@postsubsubsection%
+ \let\@seccntformat\xpg@save@seccntformat%
+}
+
\def\captionsjapanese{%
\def\refname{参考文献}%
\def\abstractname{概要}%
@@ -215,16 +239,46 @@
}%
}
+\ifluatex
+ \@ifundefined{xpg@attr@cjkspacing}{\newattribute\xpg@attr@cjkspacing}{}
+ \directlua{ require"polyglossia-cjk-spacing" }
+ \def\japanese@spacing{\xpg@attr@cjkspacing=\@ne}
+ \def\nojapanese@spacing{\unsetattribute\xpg@attr@cjkspacing}
+\else
+ \@ifundefined{xpg@orig@XeTeXlinebreakskip}{\newskip\xpg@orig@XeTeXlinebreakskip}{}
+ \xpg@orig@XeTeXlinebreakskip=\XeTeXlinebreakskip
+ \def\japanese@spacing{%
+ \XeTeXlinebreaklocale "ja"%
+ \XeTeXlinebreakskip = 0pt plus 0.1em minus 0.01em%
+ }
+ \def\nojapanese@spacing{%
+ \XeTeXlinebreakskip=\xpg@orig@XeTeXlinebreakskip%
+ \XeTeXlinebreaklocale ""%
+ }
+\fi
+
\def\noextras@japanese{%
- \japanese@capsformat%
+ \nojapanese@capsformat%
+ \nojapanese@spacing%
}
\def\blockextras@japanese{%
- \japanese@capsformat%
+ \japanese@capsformat%
+ \japanese@spacing%
}
\def\inlineextras@japanese{%
- \japanese@capsformat%
+ \japanese@capsformat%
+ \japanese@spacing%
}
+
+\ifxetex
+ % \XeTeXlinebreaklocale is global,
+ % so we need to reset after nested language got closed
+ \def\nestedextras@japanese{%
+ \japanese@spacing%
+ }
+\fi
+
% Based on contributions of Toru Inagaki, Norio Iwase, François Charette
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ka.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ka.ldf
index c48b7287989..884d438d8f9 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ka.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ka.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ka.ldf}[polyglossia: module for ka (Georgian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kannada.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kannada.ldf
index 97941ff1902..aef2fc70e0e 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-kannada.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-kannada.ldf
@@ -1,5 +1,5 @@
%% gloss-kannada.ldf
-%% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+%% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%%
%% Copyright 2011 Aravinda VK <hallimanearavind AT gmail.com>,
%% Shankar Prasad <prasad.mvs AT gmail.com>,
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-khmer.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-khmer.ldf
index 0a8656b4c50..7b8444da0d8 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-khmer.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-khmer.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-khmer.ldf}[polyglossia: module for Khmer]
\PolyglossiaSetup{khmer}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-km.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-km.ldf
index f2af014aef5..8780f9607a1 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-km.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-km.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-km.ldf}[polyglossia: module for km (Khmer)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Arab.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Arab.ldf
index 63807f6320b..1d531a5c74a 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Arab.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Arab.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-kmr-Arab.ldf}[polyglossia: module for kmr-Arab (Kurdish)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Latn.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Latn.ldf
index 64bb99df246..292b4be633e 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Latn.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Latn.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-kmr-Latn.ldf}[polyglossia: module for kmr-Latn (Kurdish)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr.ldf
index 254d0d846ca..08db6b0ca78 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-kmr.ldf}[polyglossia: module for kmr (Kurdish)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kn.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kn.ldf
index 3c311112a86..04304f4d68c 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-kn.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-kn.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-kn.ldf}[polyglossia: module for kn (Kannada)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ko.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ko.ldf
index c4b68924c06..69f94cc04bd 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ko.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ko.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ko.ldf}[polyglossia: module for ko (Korean)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf
index fd464294356..e720d797fee 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-korean.ldf}[polyglossia: module for Korean]
@@ -25,12 +25,12 @@
{
variant.choices:nn = { plain, classic, modern }
{%
- \edef\xpg@korean@variant{\the\numexpr\UseName{l_keys_choice_int}-1\relax}
+ \edef\xpg@korean@variant{\the\numexpr\UseName{l_keys_choice_int}-1\relax}%
},
variant.default:n = plain,
captions.choices:nn = { hangul, hanja }
{%
- \edef\xpg@korean@captions{\the\numexpr\UseName{l_keys_choice_int}-1\relax}
+ \edef\xpg@korean@captions{\the\numexpr\UseName{l_keys_choice_int}-1\relax}%
},
captions.default:n = hangul,
swapstrings.choice:,
@@ -432,6 +432,11 @@
\XeTeXlinebreaklocale ""
\noextras@korean@common
}
+ % \XeTeXlinebreaklocale is global,
+ % so we need to reset after nested language got closed
+ \def\nestedextras@korean{%
+ \XeTeXlinebreaklocale "ko"\relax
+ }
\else % luatex
\def\inlineextras@korean{\xpg@attr@cjkspacing\xpg@korean@variant\relax}
\def\noextras@korean{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Arab.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Arab.ldf
index f25b8d53397..cd3dd2b095a 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Arab.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Arab.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ku-Arab.ldf}[polyglossia: module for ku-Arab (Kurdish)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Latn.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Latn.ldf
index ba7b6a32954..7101900dd18 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Latn.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Latn.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ku-Latn.ldf}[polyglossia: module for ku-Latn (Kurdish)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ku.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ku.ldf
index b261cbc0df6..2f8ccbff8b3 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ku.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ku.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ku.ldf}[polyglossia: module for ku (Kurdish)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kurdish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kurdish.ldf
index 3b69d39e010..7f0f9fd3131 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-kurdish.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-kurdish.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
% Created on September 1, 2019
% Last updated on May 17, 2020
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kurmanji.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kurmanji.ldf
index 79deb39afc7..622cec28a9b 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-kurmanji.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-kurmanji.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-kurmanji.ldf}[polyglossia: module for Kurmanji Kurdish]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-classic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-classic.ldf
index b4091d70014..92bf3d90364 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-classic.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-classic.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-la-xclassic.ldf}[polyglossia: module for la-xclassic (Latin)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-ecclesia.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-ecclesia.ldf
index 8eec40dbd49..ce81a43267a 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-ecclesia.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-ecclesia.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-la-xecclesiastic.ldf}[polyglossia: module for la-xecclesiastic (Latin)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-medieval.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-medieval.ldf
index 029ad4a9168..3050d190040 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-medieval.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-medieval.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-la-xmedieval.ldf}[polyglossia: module for la-xmedieval (Latin)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-la.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-la.ldf
index 99e36c42bf0..99600faf727 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-la.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-la.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-la.ldf}[polyglossia: module for la (Latin)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lao.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lao.ldf
index 41a6817e115..23587f106b3 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-lao.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lao.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-lao.ldf}[polyglossia: module for Lao]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-latex.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-latex.ldf
index 8479fbaa42a..f2bcb54772d 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-latex.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-latex.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-latex.ldf}[polyglossia: module for default language]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf
index d1211a83cb2..c1285ae2705 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-latin.ldf}[polyglossia: module for Latin]
@@ -618,6 +618,7 @@
% For the aux file:
\protected@write \@auxout { }
{
+ \ProvideDocumentCommand \shorthandoff{sm}{} % #643
\shorthandoff {=}
\shorthandoff* {^} % #582
}
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-latvian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-latvian.ldf
index a0e938f3c5a..e59a7798e3a 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-latvian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-latvian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-latvian.ldf}[polyglossia: module for Latvian]
\PolyglossiaSetup{latvian}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf
index c120f8394f7..95116bac6e3 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
% Translated by Paulius Sladkevičius <komsas@gmail.com>
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lo.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lo.ldf
index d74145d09a8..d6790701b6a 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-lo.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lo.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-lo.ldf}[polyglossia: module for lo (Lao)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lowersorbian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lowersorbian.ldf
index a4927b4f86a..ef03f24ffe2 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-lowersorbian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lowersorbian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-lowersorbian.ldf}[polyglossia: module for Lower Sorbian]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lsorbian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lsorbian.ldf
index 96cd05cede4..cad1b920dcb 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-lsorbian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lsorbian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-lsorbian.ldf}[polyglossia: module for Lower Sorbian]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lt.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lt.ldf
index c01d7f9cae3..d1d2172128e 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-lt.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lt.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-lt.ldf}[polyglossia: module for lt (Lithuanian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lv.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lv.ldf
index 88932fe434d..83fe7ad2f75 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-lv.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lv.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-lv.ldf}[polyglossia: module for lv (Latvian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-macedonian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-macedonian.ldf
index e1c8534b2a3..371cb4292b0 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-macedonian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-macedonian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-macedonian.ldf}[polyglossia: module for Macedonian]
\PolyglossiaSetup{macedonian}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-magyar.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-magyar.ldf
index 9533a325b4a..efdbca6fcb9 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-magyar.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-magyar.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-magyar.ldf}[polyglossia: module for Hungarian (Magyar)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-malay.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-malay.ldf
index 451ed329b8f..8e43e5d6299 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-malay.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-malay.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-malay.ldf}[polyglossia: module for Malay]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-malayalam.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-malayalam.ldf
index 84524dac5ce..87f686780af 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-malayalam.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-malayalam.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-malayalam.ldf}[polyglossia: module for Malayalam]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf
index cbb0dce0cbb..6402f6ea1c8 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
% Translations provided by Abhijit Navale <abhi_navale@live.in>
% Ordinals (1-100) added by Niranjan Tambe <niranjanvikastambe@gmail.com> on 14th December, 2019
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-medievallatin.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-medievallatin.ldf
index f718bde8fa3..204a0fc0643 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-medievallatin.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-medievallatin.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-medievallatin.ldf}[polyglossia: module for medieval Latin]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-mk.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-mk.ldf
index dd2fbe301bd..f1956bdedb9 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-mk.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-mk.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-mk.ldf}[polyglossia: module for mk (Macedonian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ml.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ml.ldf
index 175a75bee7f..c3c8cccbba3 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ml.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ml.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ml.ldf}[polyglossia: module for ml (Malayalam)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-mn.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-mn.ldf
index 985d73b69d8..d4c39c4b607 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-mn.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-mn.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-mn.ldf}[polyglossia: module for mn (Mongolian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-mongolian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-mongolian.ldf
index d8eca6721d5..edfce3ba719 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-mongolian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-mongolian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-mongolian.ldf}[polyglossia: module for Mongolian]
@@ -105,7 +105,7 @@
\def\@Ccdash{\leavevmode
\nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}%
\ifx\cyrdash\undefined
- \def\cyrdash{\hbox to.8em{\textendash\hss\textendash}}%
+ \def\cyrdash{\leavevmode\hbox to.8em{\textendash\hss\textendash}}%
\fi
\declare@shorthand{mongolian}{",}{\nobreak\hskip.2em\ignorespaces}%
}
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-mr.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-mr.ldf
index 7a56186cb25..c03ea34f8f5 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-mr.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-mr.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-mr.ldf}[polyglossia: module for mr (Marathi)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-naustrian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-naustrian.ldf
index 32524dab4fe..53b02f23a5c 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-naustrian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-naustrian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-naustrian.ldf}[polyglossia: module for Austrian German (current spelling)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-nb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-nb.ldf
index 34bfbbce49a..580eaea1594 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-nb.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-nb.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-nb.ldf}[polyglossia: module for nb (Norwegian)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-newzealand.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-newzealand.ldf
index baf56a91398..3fc12f2e3ba 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-newzealand.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-newzealand.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-newzealand.ldf}[polyglossia: module for Newzealand English]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ngerman.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ngerman.ldf
index 7bacbf2b423..4e9f8e5b886 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ngerman.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ngerman.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ngerman.ldf}[polyglossia: module for German (current spelling)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-nko.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-nko.ldf
index 196b55d48ee..623de02539e 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-nko.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-nko.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-nko.ldf}[Polyglossia: module for N’Ko]
\PolyglossiaSetup{nko}{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-norsk.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-norsk.ldf
index 95121a64502..e03f920d27a 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-norsk.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-norsk.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-norsk.ldf}[polyglossia: module for Norwegian (Bokmal)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-norwegian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-norwegian.ldf
index ba7b7aca46d..bafaf96e5fb 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-norwegian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-norwegian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-norwegian.ldf}[polyglossia: module for Norwegian]
\PolyglossiaSetup{norwegian}{
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-nswissgerman.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-nswissgerman.ldf
index 19d45a3143c..b57f684c275 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-nswissgerman.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-nswissgerman.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-nswissgerman.ldf}[polyglossia: module for Swiss German (current spelling)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-nynorsk.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-nynorsk.ldf
index 5a44bced302..e014dfbcf60 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-nynorsk.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-nynorsk.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-nynorsk.ldf}[polyglossia: module for Norwegian (Nynorsk)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-occitan.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-occitan.ldf
index 163fd7dc576..da29e0b5672 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-occitan.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-occitan.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
%%
%% This is file `gloss-occitan.ldf',
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-odia.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-odia.ldf
index 7101033d02e..77a1c64c0e9 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-odia.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-odia.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
% Translations provided by ଅଶୋକ ଦାସ୍ <das@pas.rochester.edu> and ଅଭିଷେକ ଜେନା <avisekjena@gmail.com>
% TODO implement Odia calendar
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-or.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-or.ldf
index 7f9cee9b542..3fb94208cac 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-or.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-or.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-odia.ldf}[polyglossia: module for or (Odia)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-pa.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-pa.ldf
index 9f56ed05039..d91c55f137e 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-pa.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-pa.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-pa.ldf}[polyglossia: module for pa (Punjabi)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-persian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-persian.ldf
index 6018964b451..4b2a383f050 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-persian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-persian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-persian.ldf}[polyglossia: module for Persian]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-piedmontese.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-piedmontese.ldf
index 214182ba500..4d88d68cd25 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-piedmontese.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-piedmontese.ldf
@@ -1,5 +1,5 @@
% !TEX encoding = UTF-8 Unicode
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-piedmontese.ldf}[2013/02/12 v1.0 polyglossia: module for Piedmontese]
\makeatletter
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-polish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-polish.ldf
index bc48e3e4b1e..34f6d90d320 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-polish.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-polish.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-polish.ldf}[polyglossia: module for Polish]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-polutonikogreek.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-polutonikogreek.ldf
index e8f541e486c..9b6148cedd0 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-polutonikogreek.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-polutonikogreek.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-polutonikogreek.ldf}[polyglossia: module for polytonic Greek]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-portuges.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-portuges.ldf
index d635007377a..3595060f874 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-portuges.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-portuges.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-portuges.ldf}[polyglossia: module for Portuguese]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-portuguese.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-portuguese.ldf
index e58233056a1..bad8ef2d8d2 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-portuguese.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-portuguese.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-portuguese.ldf}[polyglossia: module for Portuguese]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-punjabi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-punjabi.ldf
index e150176c02d..dd350cb47ef 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-punjabi.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-punjabi.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
% UTF-8 strings kindly provided by
% Arvinder Singh Kang, <17-11-2022>
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-romanian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-romanian.ldf
index 0051613ac77..e7a43d19326 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-romanian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-romanian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-romanian.ldf}[polyglossia: module for Romanian]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-romansh.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-romansh.ldf
index b8c9d628e01..f5d6d9a8cda 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-romansh.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-romansh.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-romansh.ldf}[polyglossia: module for Romansh]
\makeatletter
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf
index 34b2abd2445..850c39bc363 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-russian.ldf}[polyglossia: module for Russian]
@@ -148,7 +148,7 @@
\def\@Ccdash{\leavevmode
\nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}%
\ifx\cyrdash\undefined
- \def\cyrdash{\hbox to.8em{\textendash\hss\textendash}}%
+ \def\cyrdash{\leavevmode\hbox to.8em{\textendash\hss\textendash}}%
\fi
\declare@shorthand{russian}{",}{\nobreak\hskip.2em\ignorespaces}%
}
@@ -247,14 +247,14 @@
% Russian needs trailing dots in all headings
\def\xpg@save@autodot{}
-\ifdef{\KOMAScript}{%
+\ifdef{\KOMAClassName}{%
\providecommand*\autodot{}%
\let\xpg@save@autodot\autodot%
-}
+}{}
\def\russian@capsformat{%
\ifrussian@forceheadingpunctuation%
- \ifdef{\KOMAScript}{%
+ \ifdef{\KOMAClassName}{%
\renewcommand*\autodot{.}%
}{%
% The following is based on some ideas from ruscor.sty
@@ -280,7 +280,7 @@
\def\norussian@capsformat{%
\ifrussian@forceheadingpunctuation%
- \ifdef{\KOMAScript}{%
+ \ifdef{\KOMAClassName}{%
\let\autodot\xpg@save@autodot%
}{%
\def\@seccntformat##1{\csname the##1\endcsname\quad}% = LaTeX kernel
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-sami.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-sami.ldf
index 802718dbc47..529131beaec 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-sami.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-sami.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-sami.ldf}[polyglossia: module for Sami]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-samin.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-samin.ldf
index e15a05b2430..48f923acf56 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-samin.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-samin.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-samin.ldf}[polyglossia: module for Northern Sami]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf
index 1c9901082c9..197f773cf62 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-sanskrit.ldf}[polyglossia: module for Sanskrit]
@@ -28,25 +28,25 @@
\setlanguagealias*[script=latin]{sanskrit}{sa-Latn}
\def\fontsetup@sanskrit@devanagari{%
- \SetLanguageKeys{sanskrit}{scripttag=deva,script=Devanagari,bcp47=sa-Deva,bcp47-language=sa,bcp47-script=Deva,bcp47-casing=sa-Deva}
+ \SetLanguageKeys{sanskrit}{scripttag=deva,script=Devanagari,bcp47=sa-Deva,bcp47-language=sa,bcp47-script=Deva,bcp47-casing=sa-Deva}%
\SetupNonLatinPolyglossiaFont{sanskrit}}
\def\fontsetup@sanskrit@gujarati{%
- \SetLanguageKeys{sanskrit}{scripttag=gujr,script=Gujarati,bcp47=sa-Gujr,bcp47-language=sa,bcp47-script=Gujr,bcp47-casing=sa-Gujr}
+ \SetLanguageKeys{sanskrit}{scripttag=gujr,script=Gujarati,bcp47=sa-Gujr,bcp47-language=sa,bcp47-script=Gujr,bcp47-casing=sa-Gujr}%
\SetupNonLatinPolyglossiaFont{sanskrit}}
\def\fontsetup@sanskrit@malayalam{%
- \SetLanguageKeys{sanskrit}{scripttag=mlym,script=Malayalam,bcp47=sa-Mlym,bcp47-language=sa,bcp47-script=Mlym,bcp47-casing=sa-Mlym}
+ \SetLanguageKeys{sanskrit}{scripttag=mlym,script=Malayalam,bcp47=sa-Mlym,bcp47-language=sa,bcp47-script=Mlym,bcp47-casing=sa-Mlym}%
\SetupNonLatinPolyglossiaFont{sanskrit}}
\def\fontsetup@sanskrit@bengali{%
- \SetLanguageKeys{sanskrit}{scripttag=beng,script=Bengali,bcp47=sa-Beng,bcp47-language=sa,bcp47-script=Beng,bcp47-casing=sa-Beng}
+ \SetLanguageKeys{sanskrit}{scripttag=beng,script=Bengali,bcp47=sa-Beng,bcp47-language=sa,bcp47-script=Beng,bcp47-casing=sa-Beng}%
\SetupNonLatinPolyglossiaFont{sanskrit}}
\def\fontsetup@sanskrit@kannada{%
- \SetLanguageKeys{sanskrit}{scripttag=knda,script=Kannada,bcp47=sa-Knda,bcp47-language=sa,bcp47-script=Knda,bcp47-casing=sa-Knda}
+ \SetLanguageKeys{sanskrit}{scripttag=knda,script=Kannada,bcp47=sa-Knda,bcp47-language=sa,bcp47-script=Knda,bcp47-casing=sa-Knda}%
\SetupNonLatinPolyglossiaFont{sanskrit}}
\def\fontsetup@sanskrit@telugu{%
- \SetLanguageKeys{sanskrit}{scripttag=telu,script=Telugu,bcp47=sa-Relu,bcp47-language=sa,bcp47-script=Relu,bcp47-casing=sa-Relu}
+ \SetLanguageKeys{sanskrit}{scripttag=telu,script=Telugu,bcp47=sa-Relu,bcp47-language=sa,bcp47-script=Relu,bcp47-casing=sa-Relu}%
\SetupNonLatinPolyglossiaFont{sanskrit}}
\def\fontsetup@sanskrit@latin{%
- \SetLanguageKeys{sanskrit}{scripttag=latn,script=Latin,bcp47=sa-Latn,bcp47-language=sa,bcp47-script=Latn,bcp47-casing=sa-Latn}
+ \SetLanguageKeys{sanskrit}{scripttag=latn,script=Latin,bcp47=sa-Latn,bcp47-language=sa,bcp47-script=Latn,bcp47-casing=sa-Latn}%
\SetupLatinPolyglossiaFont{sanskrit}}
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-scottish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-scottish.ldf
index 562e7358a5e..a6a75400469 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-scottish.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-scottish.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-scottish.ldf}[polyglossia: module for Scottish Gaelic]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-serbian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-serbian.ldf
index 3bc4740ebb4..aea350d0273 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-serbian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-serbian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-serbian.ldf}[polyglossia: module for Serbian]
%TODO split into gloss-serbiancyr.ldf and gloss-serbianlat.ldf
@@ -47,17 +47,17 @@
\def\serbian@set@languagekeys{%
\if@serbian@cyr
\if@serbian@ijekavian
- \SetLanguageKeys{serbian}{scripttag=cyrl,script=Cyrillic,babelname=serbianc,bcp47=sr-Cyrl-ijekavsk,bcp47-language=sr,bcp47-script=Cyrl,bcp47-variant=ijekavsk,bcp47-casing=sr-Cyrl}
+ \SetLanguageKeys{serbian}{scripttag=cyrl,script=Cyrillic,babelname=serbianc,bcp47=sr-Cyrl-ijekavsk,bcp47-language=sr,bcp47-script=Cyrl,bcp47-variant=ijekavsk,bcp47-casing=sr-Cyrl}%
\else
- \SetLanguageKeys{serbian}{scripttag=cyrl,script=Cyrillic,babelname=serbianc,bcp47=sr-Cyrl,bcp47-language=sr,bcp47-script=Cyrl,bcp47-variant=ekavsk,bcp47-casing=sr-Cyrl}
+ \SetLanguageKeys{serbian}{scripttag=cyrl,script=Cyrillic,babelname=serbianc,bcp47=sr-Cyrl,bcp47-language=sr,bcp47-script=Cyrl,bcp47-variant=ekavsk,bcp47-casing=sr-Cyrl}%
\fi
\else
\if@serbian@ijekavian
- \SetLanguageKeys{serbian}{scripttag=latn,script=Latin,babelname=serbian,bcp47=sr-Latn-ijekavsk,bcp47-language=sr,bcp47-script=Latn,bcp47-variant=ijekavsk,bcp47-casing=sr-Latn}
+ \SetLanguageKeys{serbian}{scripttag=latn,script=Latin,babelname=serbian,bcp47=sr-Latn-ijekavsk,bcp47-language=sr,bcp47-script=Latn,bcp47-variant=ijekavsk,bcp47-casing=sr-Latn}%
\else
- \SetLanguageKeys{serbian}{scripttag=latn,script=Latin,babelname=serbian,bcp47=sr-Latn,bcp47-language=sr,bcp47-script=Latn,bcp47-variant=ekavsk,bcp47-casing=sr-Latn}
+ \SetLanguageKeys{serbian}{scripttag=latn,script=Latin,babelname=serbian,bcp47=sr-Latn,bcp47-language=sr,bcp47-script=Latn,bcp47-variant=ekavsk,bcp47-casing=sr-Latn}%
\fi
- \fi%
+ \fi
}
\DeclareKeys[polyglossia/gloss/serbian]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-serbianc.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-serbianc.ldf
index 5493765d9b6..6026ddd6098 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-serbianc.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-serbianc.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-serbianc.ldf}[polyglossia: module for Serbian (cyrillic)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-slovak.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-slovak.ldf
index b08d84335ed..b845f3bbba1 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-slovak.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-slovak.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-slovak.ldf}[polyglossia: module for Slovak]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-slovene.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-slovene.ldf
index ce2de8083c9..d8f84351b31 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-slovene.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-slovene.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-slovene.ldf}[polyglossia: module for Slovenian]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-slovenian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-slovenian.ldf
index 5a08442e3f0..da90692bc3f 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-slovenian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-slovenian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-slovenian.ldf}[polyglossia: module for Slovenian]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-sorbian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-sorbian.ldf
index c7b0a1c0ce8..117c40f3cb4 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-sorbian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-sorbian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-sorbian.ldf}[polyglossia: module for Sorbian]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-spanish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-spanish.ldf
index 0b5b128ae2a..c1f3452bb5f 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-spanish.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-spanish.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-spanish.ldf}[polyglossia: module for Spanish]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-spanishmx.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-spanishmx.ldf
index 4c0e71b0235..8d126e739ac 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-spanishmx.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-spanishmx.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-spanishmx.ldf}[polyglossia: module for Mexican Spanish]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-swedish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-swedish.ldf
index 142a4b2d795..d65e5dba85e 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-swedish.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-swedish.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-swedish.ldf}[polyglossia: module for Swedish]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-swissgerman.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-swissgerman.ldf
index 9ab9f7e8d57..08bed4a210d 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-swissgerman.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-swissgerman.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-swissgerman.ldf}[polyglossia: module for Swiss German (old spelling)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-syriac.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-syriac.ldf
index e93148da005..6ad71c2ad06 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-syriac.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-syriac.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-syriac.ldf}[polyglossia: module for Syriac]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-tamil.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-tamil.ldf
index 38b4a1e7ba9..d52d85b6d51 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-tamil.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-tamil.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-tamil.ldf}[polyglossia: module for Tamil]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-telugu.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-telugu.ldf
index dfe53caabd4..0b63e04c6c9 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-telugu.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-telugu.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-telugu.ldf}[polyglossia: module for Telugu]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-thai.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-thai.ldf
index bfaa96cb1ed..023a27bca08 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-thai.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-thai.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-thai.ldf}[polyglossia: module for Thai]
%% This is partly based on thai-latex for Babel:
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-tibetan.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-tibetan.ldf
index b8223fe8458..f3209145bf2 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-tibetan.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-tibetan.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-tibetan.ldf}[polyglossia: module for Tibetan]
%% Copyright 2013 Elie Roux
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf
index da46f8a6dda..f8d1b16154d 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-turkish.ldf}[polyglossia: module for Turkish]
\RequirePackage{hijrical}
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-turkmen.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-turkmen.ldf
index af159166235..eee9e39a2d8 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-turkmen.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-turkmen.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-turkmen.ldf}[polyglossia: module for Turkmen]
%% Translations provided by Nazar Annagurban <nazartm at gmail dot com>
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ug.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ug.ldf
index 65faa3e0795..1958f48ef74 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ug.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ug.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ug.ldf}[polyglossia: module for ug (Uyghur)]
% BCP 47 tag for Uyghur
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf
index 4a9674f2feb..94275336a50 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ukrainian.ldf}[polyglossia: module for Ukrainian]
% Strings taken from Babel
@@ -108,7 +108,7 @@
\def\@Ccdash{\leavevmode
\nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}%
\ifx\cyrdash\undefined
- \def\cyrdash{\hbox to.8em{\textendash\hss\textendash}}%
+ \def\cyrdash{\leavevmode\hbox to.8em{\textendash\hss\textendash}}%
\fi
\declare@shorthand{ukrainian}{",}{\nobreak\hskip.2em\ignorespaces}%
}
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-uppersorbian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-uppersorbian.ldf
index 418551d25f3..9e25f61d2ea 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-uppersorbian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-uppersorbian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-uppersorbian.ldf}[polyglossia: module for Upper Sorbian]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-urdu.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-urdu.ldf
index 47af125a2b7..fa9a1695d98 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-urdu.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-urdu.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
%%% Adapted from a file contributed by Kamal Abdali
\ProvidesFile{gloss-urdu.ldf}[polyglossia: module for Urdu]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-usorbian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-usorbian.ldf
index 9c33a8be580..e9a9cf545eb 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-usorbian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-usorbian.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-usorbian.ldf}[polyglossia: module for Upper Sorbian]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-uyghur.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-uyghur.ldf
index b96e21cda77..633f5f8b4a5 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-uyghur.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-uyghur.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-uyghur.ldf}[polyglossia: module for Uyghur]
%% Translations provided by Osman Tursun (Github Account: neouyghur)
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-vietnamese.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-vietnamese.ldf
index 3689b48112f..05f0769e8d2 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-vietnamese.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-vietnamese.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-vietnamese.ldf}[polyglossia: module for Vietnamese]
%% Strings contributed by Daniel Owens < dhowens . pmbx . net >
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-welsh.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-welsh.ldf
index 81174769141..264b5833e1a 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-welsh.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-welsh.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-welsh.ldf}[polyglossia: module for Welsh]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-zh-CN.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-zh-CN.ldf
index 2e99abca24d..5e922469913 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-zh-CN.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-zh-CN.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-zh-CN.ldf}[polyglossia: module for zh-CN (Chinese)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-zh-TW.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-zh-TW.ldf
index 0b907e2a4e1..38e6a2656f6 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-zh-TW.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-zh-TW.ldf
@@ -1,4 +1,4 @@
-% Language definition file (part of polyglossia v2.2 -- 2024/07/15)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-zh-TW.ldf}[polyglossia: module for zh-TW (Chinese)]
diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-cjk-spacing.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-cjk-spacing.lua
index 7102dc0cf37..4c1ba185455 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-cjk-spacing.lua
+++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-cjk-spacing.lua
@@ -1,6 +1,6 @@
--
-- polyglossia-cjk-spacing.lua
--- part of polyglossia v2.2 -- 2024/07/15
+-- part of polyglossia v2.3 -- 2024/09/23
--
local glyph_id = node.id"glyph"
@@ -409,7 +409,9 @@ local function cjk_break (head)
curr, next = next, node.getnext(next)
end
- if next and (next.id == glyph_id or next.id == math_id and next.subtype == 0) then
+ if next and node.has_attribute(next, attr_cjk)
+ and (next.id == glyph_id or next.id == math_id and next.subtype == 0) then
+
local n = next.char or 0
f = f or next.font or 0 -- in case of curr == math_off
diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-french.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-french.lua
index d0257e93720..ffb6327b2f4 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-french.lua
+++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-french.lua
@@ -1,6 +1,6 @@
--
-- polyglossia-punct.lua
--- part of polyglossia v2.2 -- 2024/07/15
+-- part of polyglossia v2.3 -- 2024/09/23
--
require('polyglossia-punct')
diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-latin.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-latin.lua
index 844d11cb5ac..46838b40a06 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-latin.lua
+++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-latin.lua
@@ -1,6 +1,6 @@
--
-- polyglossia-latin.lua
--- part of polyglossia v2.2 -- 2024/07/15
+-- part of polyglossia v2.3 -- 2024/09/23
--
require('polyglossia-punct')
diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-punct.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-punct.lua
index d8cfa89e5fa..a19b2152b62 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-punct.lua
+++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-punct.lua
@@ -1,6 +1,6 @@
--
-- polyglossia-punct.lua
--- part of polyglossia v2.2 -- 2024/07/15
+-- part of polyglossia v2.3 -- 2024/09/23
--
require('polyglossia') -- just in case...
diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-sanskrit.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-sanskrit.lua
index 7a2b84270db..d21386e5fba 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-sanskrit.lua
+++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-sanskrit.lua
@@ -1,6 +1,6 @@
--
-- polyglossia-sanskrit.lua
--- part of polyglossia v2.2 -- 2024/07/15
+-- part of polyglossia v2.3 -- 2024/09/23
--
require('polyglossia-punct')
diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-tibt.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-tibt.lua
index d51a594de3f..aa3a9e430e3 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-tibt.lua
+++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-tibt.lua
@@ -1,6 +1,6 @@
--
-- polyglossia-tibt.lua
--- part of polyglossia v2.2 -- 2024/07/15
+-- part of polyglossia v2.3 -- 2024/09/23
--
require('polyglossia') -- just in case...
diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia.lua
index 5f346bef767..1c7c818910d 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia.lua
+++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia.lua
@@ -1,6 +1,6 @@
--
-- polyglossia.lua
--- part of polyglossia v2.2 -- 2024/07/15
+-- part of polyglossia v2.3 -- 2024/09/23
--
local module_name = "polyglossia"
diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty b/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty
index a8d0c57b540..0e8b8f1c302 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty
+++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty
@@ -1,6 +1,6 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage
- {polyglossia} {2024/07/15} {v2.2}
+ {polyglossia} {2024/09/23} {v2.3}
{Modern multilingual typesetting with XeLaTeX and LuaLaTeX}
% TODO Handle remaining uses in the gloss files (\patchcmd)
@@ -30,10 +30,26 @@
%% \l@nohyphenation is defined in polyglossia.lua
\sys_if_engine_luatex:TF
{
- \lua_load_module:n{polyglossia}
+ \lua_load_module:n{polyglossia}
+ \prg_new_conditional:Nnn \xpg_if_script:n { TF, T, F }
+ {
+ \fontspec_if_fontspec_font:TF
+ {
+ \lua_now:e
+ {
+ if~ luaotfload.aux.provides_script(font.current(), '#1')~ then~
+ token.put_next(token.create('prg_return_true:'))~
+ else~
+ token.put_next(token.create('prg_return_false:'))~
+ end
+ }
+ }
+ { \prg_return_false: }
+ }
}{
- \cs_if_free:cT { l@nohyphenation }
- { \chardef\l@nohyphenation=255 }
+ \cs_if_free:cT { l@nohyphenation }
+ { \chardef\l@nohyphenation=255 }
+ \prg_set_eq_conditional:NNn \xpg_if_script:n \fontspec_if_script:n { TF, T, F }
}
% Which version of XeTeX do we use? What is the boundary class? 4095 or 255
@@ -65,13 +81,14 @@
}
%% Internal hooks
-% select language hook
-\cs_new_nopar:Nn \__xpg_at_begin_document_selectlanguage: {}
-% \disablehyphenation hook
-\cs_new_nopar:Nn \__xpg_at_begin_document_hyphenation: {}
+% select defaultlanguage hook. Since we only want the
+% last definition of this, we do not use a \hook
+\cs_new_nopar:Nn \__xpg_selectdefaultlanguage: {}
+% things to be done after the above
+\hook_new:n { polyglossia / selectdefaultlanguage / after }
-% hook to be executed at begin of document
-\cs_new_nopar:Nn \__xpg_at_begin_document:
+% things to be executed at begin of document
+\hook_gput_code:nnn {begindocument} {.}
{
% save various command
\cs_gset_eq:cc{latin@alph}{@alph}% TODO rename when we have the C locale
@@ -84,22 +101,14 @@
\xpg_set_familydefault:
}
-\hook_gput_code:nnn {begindocument} {.}
-{
- \__xpg_at_begin_document:
-}
-
% The following needs to go after any \AtBeginDocument (also of packages
% loaded after \set[main|other]language
-% Track whether the main language has been set
-\bool_new:N \g_xpg_main_lang_set_bool
\hook_gput_code:nnn {begindocument/end} {.}
{
% now we have the C locale definition: select the language
- \__xpg_at_begin_document_selectlanguage:
- \bool_gset_true:N \g_xpg_main_lang_set_bool
- % If hyphenation disabling has been requested in preamble, do it now
- \__xpg_at_begin_document_hyphenation:
+ \__xpg_selectdefaultlanguage:
+ % Do the things that need to be done after default language selection
+ \hook_use_once:n { polyglossia / selectdefaultlanguage / after }
}
%
@@ -806,17 +815,12 @@
\DeclareDocumentCommand \disablehyphenation {}
{
- \bool_if:NTF \g_xpg_main_lang_set_bool
- {
- \__xpg_disable_hyphenation:
- }
- {
- % we have to postpone the execution until the main language
- % has been set (#125).
- \cs_gset_nopar:Nn \__xpg_at_begin_document_hyphenation: {
- \__xpg_disable_hyphenation:
- }
- }
+ % we have to postpone the execution until the main language
+ % has been set (#125).
+ \hook_gput_code:nnn { polyglossia / selectdefaultlanguage / after } {.}
+ {
+ \__xpg_disable_hyphenation:
+ }
}
\cs_new:Nn \__xpg_disable_hyphenation:
@@ -898,7 +902,7 @@
(Script="#3"~ to~ scripttag~ "#2")}
}
{
- \fontspec_if_script:nTF{#2}
+ \xpg_if_script:nTF{#2}
{\addfontfeature{Script=#3}}
{
\tl_set:Nn \xpg_ffamily_tl {}
@@ -919,6 +923,8 @@
% Strip font family name for error message
% Courtesy of egreg, https://tex.stackexchange.com/a/613996
\str_set:Nx \xpg_fname_str { \fontname\font }
+ % Remove name: prefix
+ \regex_replace_once:nnN { name: } { } \xpg_fname_str
% Remove all after :
\regex_replace_once:nnN { \:.* } { } \xpg_fname_str
% ... and all after /
@@ -1311,7 +1317,8 @@
{
\__xpg_setRTLmain:
}
- \cs_gset_nopar:Nn \__xpg_at_begin_document_selectlanguage: {
+ \cs_gset_nopar:Nn \__xpg_selectdefaultlanguage:
+ {
\selectbackgroundlanguage{#2}
\selectlanguage[#1]{#2}
}
@@ -1657,6 +1664,7 @@
% (as opposed to \str_lowercase:n)
\use:c { xpg_#1_default_options_tl }
\exp_args:Ne \keys_set:ne{ polyglossia / gloss / #1 }{ \text_lowercase:n {#2} }
+ \tl_set:Ne \xpg__current_options_tl { #2 }
}
% joint code of \foreignlanguage, otherlanguage*
@@ -1685,13 +1693,6 @@
% prevent case changing of language name in \foreignlanguage
\tl_put_right:Nn \l_text_case_exclude_arg_tl { \foreignlanguage }
-% Direct access to \xpg_set_foreign_language:nn
-% used in captions
-\NewDocumentCommand \setforeignlanguage { O{} m }
-{
- \xpg_set_foreign_language:nn { #1 } { #2 }
-}
-
% internal wrapper for foreign language
% #1 option
% #2 alias
@@ -1707,6 +1708,7 @@
\xpg_otherlanguage:nn{ \xpg_alias_add_to_option_i:nn{#2}{#1} }{ #3 }
\__xpg_lang_set_text_direction:nn{#3}{#4}
\group_end:
+ \cs_if_exist_use:c{ nestedextras@\languagename }
}
}
\cs_generate_variant:Nn \__xpg_foreignlanguage:nnnn {eeen}
@@ -1718,6 +1720,7 @@
\__xpg_otherlanguage:eee { #1 } { #2 } { \xpg_alias_base_lang:n { #2 } }
}{
\c_group_end_token% \group_end: does not work here!
+ \cs_if_exist_use:c{ nestedextras@\languagename }
}
% internal wrapper
@@ -1769,20 +1772,18 @@
\cs_if_exist_use:c{date@bbl@\babelname}
\__xpg_lang_set_text_direction:nn{#3}{#4}
\group_end:
+ \cs_if_exist_use:c{ nestedextras@\languagename }
}
}
\cs_generate_variant:Nn \__xpg_textlanguage:nnnn {nnen}
% Define language-specific hyphenation exceptions
\NewDocumentCommand \pghyphenation {O{} m m}
-{
- \c_group_begin_token
- \xpg_error_if_lang_not_loaded:n { #2 }
- \SetGlossOptions{#2}{#1}
- \xpg_select_language:nn { #1 } { #2 }
- \hyphenation{#3}
- \c_group_end_token
-}
+ {
+ \begin{hyphenrules}[#1]{#2}
+ \hyphenation{#3}
+ \end{hyphenrules}
+ }
% Hook that other package authors can use
@@ -1859,6 +1860,7 @@
\__xpg_set_language_options:nn {#1} {#2}
}
\tl_new:N \xpg__tmp_default_options_tl
+\tl_new:N \xpg__current_options_tl
\cs_generate_variant:Nn \keys_precompile:nnN { nec }
% Record synonymous keyvals such as variant=us and variant=american
@@ -2011,21 +2013,26 @@
}
\hook_gput_code:nnn {begindocument} {.}
-{
- \if@filesw
- \immediate\write\@mainaux
- {\ProvideDocumentCommand\selectlanguage{sO{}m}{}}
- \fi
-}
+ {
+ \if@filesw
+ \immediate\write\@mainaux
+ {\ProvideDocumentCommand\selectlanguage{sO{}m}{}}
+ \fi
-% Since captions might float to other language regions,
-% we need to change the language here (#542)
-\hook_gput_code:nnn {cmd/caption/before} {.}
-{
- \ifhmode\unskip\fi
- \addtocontents{lof}{\protect\setforeignlanguage{\languagename}}
- \addtocontents{lot}{\protect\setforeignlanguage{\languagename}}
-}
+ % we need to redefine \@caption to intrude the currently active language
+ % for the lot/lof.
+ % Since captions might float to other language regions,
+ % we need to specify the language here (#542)
+ \cs_set_eq:cc { __xpg_save_caption:n } { @caption }
+ \cs_new:Npn \xpg@current@opts {}
+
+ \cs_set:Npn \@caption #1 [#2] #3
+ {
+ % we might be outside of l3 catcode regime
+ \tl_set_eq:NN \xpg@current@opts \xpg__current_options_tl
+ \__xpg_save_caption:n { #1 } [ { \selectlanguage*[\xpg@current@opts]{\languagename}#2 } ] { #3 }
+ }
+ }
% check if language is defined
\prg_set_conditional:Npnn \__xpg_pattern_check_if_exists:n #1 { F, TF }
diff --git a/Master/texmf-dist/tex/latex/postnotes/postnotes.sty b/Master/texmf-dist/tex/latex/postnotes/postnotes.sty
index 185ea5968c6..4e2e593aa9a 100644
--- a/Master/texmf-dist/tex/latex/postnotes/postnotes.sty
+++ b/Master/texmf-dist/tex/latex/postnotes/postnotes.sty
@@ -8,7 +8,7 @@
%%
%% This file was generated from file(s) of the LaTeX package "postnotes".
%%
-%% Copyright (C) 2022-2023 gusbrs
+%% Copyright (C) 2022-2024 gusbrs
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -41,7 +41,7 @@
%%
%% -----------------------------------------------------------------------
%%
-\def\postnotes@required@kernel{2023-11-01}
+\def\postnotes@required@kernel{2024-06-01}
\NeedsTeXFormat{LaTeX2e}[\postnotes@required@kernel]
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\IfFormatAtLeastTF{\postnotes@required@kernel}
@@ -52,11 +52,12 @@
'postnotes' requires a LaTeX kernel \postnotes@required@kernel\space or newer.%
}%
}%
-\ProvidesExplPackage {postnotes} {2023-12-12} {0.2.8}
+\ProvidesExplPackage {postnotes} {2024-12-05} {0.5.1}
{Endnotes for LaTeX}
\tl_new:N \l__postnotes_tmpa_tl
\tl_new:N \l__postnotes_tmpb_tl
\seq_new:N \l__postnotes_tmpa_seq
+\seq_new:N \l__postnotes_tmpb_seq
\box_new:N \l__postnotes_tmpa_box
\cs_new:Npn \__postnotes_data_name:n #1
{ g__postnotes_ #1 _data_prop }
@@ -66,8 +67,8 @@
{
\prop_new:c { \__postnotes_data_name:e {#1} }
\prop_gput:cnn { \__postnotes_data_name:e {#1} } { type } { note }
- \prop_gput:cne { \__postnotes_data_name:e {#1} } { mark }
- { \l__postnotes_mark_tl }
+ \prop_gput:cnV { \__postnotes_data_name:e {#1} } { mark }
+ \l__postnotes_mark_tl
\prop_gput:cne { \__postnotes_data_name:e {#1} } { counter }
{ \int_use:N \c@postnote }
\prop_gput:cne { \__postnotes_data_name:e {#1} } { sortnum }
@@ -78,18 +79,21 @@
}
\cs_if_exist:cT { chapter }
{
- \prop_gput:cne { \__postnotes_data_name:e {#1} }
- { thechapter } { \thechapter }
+ \protected@edef \l__postnotes_tmpa_tl { \thechapter }
+ \prop_gput:cnV { \__postnotes_data_name:e {#1} }
+ { thechapter } \l__postnotes_tmpa_tl
}
- \prop_gput:cne { \__postnotes_data_name:e {#1} } { thesection }
- { \thesection }
- \prop_gput:cne { \__postnotes_data_name:e {#1} } { pnsectname }
- { \g__postnotes_section_name_tl }
+ \protected@edef \l__postnotes_tmpa_tl { \thesection }
+ \prop_gput:cnV { \__postnotes_data_name:e {#1} } { thesection }
+ \l__postnotes_tmpa_tl
+ \prop_gput:cnV { \__postnotes_data_name:e {#1} } { pnsectname }
+ \g__postnotes_section_name_tl
\prop_gput:cne { \__postnotes_data_name:e {#1} } { pnsectid }
{ \int_use:N \g__postnotes_sectid_int }
\prop_gput:cne { \__postnotes_data_name:e {#1} } { multibool }
{ \bool_to_str:N \l__postnotes_maybe_multi_bool }
\prop_gput:cnn { \__postnotes_data_name:e {#1} } { content } {#2}
+ \tl_clear:N \l__postnotes_tmpa_tl
\UseHook { postnotes/note/store }
}
\cs_new_protected:Npn \__postnotes_store_section:nn #1#2
@@ -98,14 +102,17 @@
\prop_gput:cnn { \__postnotes_data_name:e {#1} } { type } { section }
\cs_if_exist:cT { chapter }
{
- \prop_gput:cne { \__postnotes_data_name:e {#1} }
- { thechapter } { \thechapter }
+ \protected@edef \l__postnotes_tmpa_tl { \thechapter }
+ \prop_gput:cnV { \__postnotes_data_name:e {#1} }
+ { thechapter } \l__postnotes_tmpa_tl
}
- \prop_gput:cne { \__postnotes_data_name:e {#1} } { thesection }
- { \thesection }
+ \protected@edef \l__postnotes_tmpa_tl { \thesection }
+ \prop_gput:cnV { \__postnotes_data_name:e {#1} } { thesection }
+ \l__postnotes_tmpa_tl
\prop_gput:cnn { \__postnotes_data_name:e {#1} } { content } {#2}
+ \tl_clear:N \l__postnotes_tmpa_tl
}
-\cs_generate_variant:Nn \__postnotes_store_section:nn { ne }
+\cs_generate_variant:Nn \__postnotes_store_section:nn { nV }
\cs_new_protected:Npn \__postnotes_prop_get:nnN #1#2#3
{
\prop_get:cnNF { \__postnotes_data_name:e {#1} } {#2} #3
@@ -116,41 +123,90 @@
\cs_new_protected:Npn \__postnotes_prop_gclear:n #1
{ \prop_gclear:c { \__postnotes_data_name:e {#1} } }
\tl_const:Nn \c__postnotes_ref_prefix_tl { postnote@r }
-\cs_new_protected:Npe \post@note #1#2
- { \exp_not:N \@newl@bel { \c__postnotes_ref_prefix_tl } {#1} {#2} }
+\seq_new:N \g__postnotes_labelseq_seq
+\int_new:N \g__postnotes_postnote_counteraux_int
+\prop_new:N \g__postnotes_counteraux_prop
+\bool_new:N \g__postnotes_firstrun_bool
+\bool_gset_true:N \g__postnotes_firstrun_bool
+\cs_new_protected:Npn \__postnotes_store_labelseq:nn #1#2
+ { \seq_gput_right:Nn \g__postnotes_labelseq_seq { {#1} {#2} } }
+\cs_new_protected:Npn \__postnotes_step_counteraux:nnn #1#2#3
+ {
+ \bool_lazy_and:nnT
+ { \g__postnotes_counteraux_bool }
+ { \str_if_eq_p:nn {#1} { mark } }
+ {
+ \int_gadd:Nn \g__postnotes_postnote_counteraux_int { #3 }
+ \prop_gput:Nne \g__postnotes_counteraux_prop { #2 }
+ { \int_use:N \g__postnotes_postnote_counteraux_int }
+ }
+ }
+\cs_new_protected:Npe \post@note #1#2#3#4
+ {
+ \exp_not:N \bool_gset_false:N \exp_not:N \g__postnotes_firstrun_bool
+ \exp_not:N \__postnotes_store_labelseq:nn { #1 } { #2 }
+ \exp_not:N \__postnotes_step_counteraux:nnn { #1 } { #2 } { #4 }
+ \exp_not:N \@newl@bel { \c__postnotes_ref_prefix_tl } { #1 @ #2 } { #3 }
+ }
\AddToHook { begindocument }
{
\legacy_if:nT { @filesw }
{
\iow_now:Ne \@mainaux
- { \token_to_str:N \providecommand \token_to_str:N \post@note [2]{} }
+ {
+ \token_to_str:N \providecommand
+ \token_to_str:N \post@note [4] { }
+ }
+ \iow_now:Ne \@mainaux
+ {
+ \token_to_str:N \providecommand
+ \token_to_str:N \postnote@setcounteraux [1] { }
+ }
+ \iow_now:Ne \@mainaux
+ {
+ \token_to_str:N \providecommand
+ \token_to_str:N \postnote@addtocounteraux [1] { }
+ }
}
}
\AddToHook { include/before }
{
\legacy_if:nT { @filesw }
{
- \iow_now:Ne \@partaux
- { \token_to_str:N \providecommand \token_to_str:N \post@note [2]{} }
+ \iow_now:Ne \@mainaux
+ {
+ \token_to_str:N \providecommand
+ \token_to_str:N \post@note [4] { }
+ }
+ \iow_now:Ne \@mainaux
+ {
+ \token_to_str:N \providecommand
+ \token_to_str:N \postnote@setcounteraux [1] { }
+ }
+ \iow_now:Ne \@mainaux
+ {
+ \token_to_str:N \providecommand
+ \token_to_str:N \postnote@addtocounteraux [1] { }
+ }
}
}
-\cs_new_protected:Npn \__postnotes_set_label:nn #1#2
+\cs_new_protected:Npn \__postnotes_set_label:nnnn #1#2#3#4
{
\legacy_if:nT { @filesw }
{
- \iow_shipout_x:Nn \@auxout
- { \token_to_str:N \post@note { #1 } { #2 } }
+ \protected@write \@auxout { }
+ { \token_to_str:N \post@note { #1 } { #2 } { #3 } { #4 } }
}
}
-\cs_new_protected:Npn \__postnotes_set_mark_page_label:n #1
- { \__postnotes_set_label:nn { mark@ #1 } { \thepage } }
-\cs_generate_variant:Nn \__postnotes_set_mark_page_label:n { e }
-\cs_new_protected:Npn \__postnotes_set_text_page_label:n #1
- { \__postnotes_set_label:nn { text@ #1 } { \int_use:N \c@page } }
-\cs_generate_variant:Nn \__postnotes_set_text_page_label:n { e }
-\cs_new_protected:Npn \__postnotes_set_print_page_label:n #1
- { \__postnotes_set_label:nn { print@ #1 } { \int_use:N \c@page } }
-\cs_generate_variant:Nn \__postnotes_set_print_page_label:n { e }
+\cs_new_protected:Npn \__postnotes_set_mark_page_label:nn #1#2
+ { \__postnotes_set_label:nnnn { mark } { #1 } { \thepage } { #2 } }
+\cs_generate_variant:Nn \__postnotes_set_mark_page_label:nn { ee }
+\cs_new_protected:Npn \__postnotes_set_section_page_label:n #1
+ { \__postnotes_set_label:nnnn { section } { #1 } { \thepage } { } }
+\cs_generate_variant:Nn \__postnotes_set_section_page_label:n { e }
+\cs_new_protected:Npn \__postnotes_set_print_label:n #1
+ { \__postnotes_set_label:nnnn { print } { #1 } { } { } }
+\cs_generate_variant:Nn \__postnotes_set_print_label:n { e }
\cs_new_protected:Npn \__postnotes_get_pageref:Nn #1#2
{
\cs_if_exist:cTF { \c__postnotes_ref_prefix_tl @ #2 }
@@ -185,6 +241,19 @@
\@mkboth{\pnheaderdefault}{\pnheaderdefault}
}
}
+\NewDocumentCommand \pnheaderdefault {}
+ {
+ \group_begin:
+ \protected@edef \l__postnotes_tmpa_tl { \FirstMark{postnotes/page} }
+ \protected@edef \l__postnotes_tmpb_tl { \LastMark{postnotes/page} }
+ \tl_if_eq:NNTF \l__postnotes_tmpa_tl \l__postnotes_tmpb_tl
+ { \pnhdnotes{}~\pnhdtopage{}~ \FirstMark{postnotes/page} }
+ {
+ \pnhdnotes{}~\pnhdtopages{}~
+ \FirstMark{postnotes/page}--\LastMark{postnotes/page}
+ }
+ \group_end:
+ }
\tl_new:N \l__postnotes_print_format_tl
\keys_define:nn { postnotes/setup }
{
@@ -258,6 +327,7 @@
maketextmark .value_required:n = true ,
maketextmark .initial:n = { #2 #1 . #3 } ,
}
+\cs_generate_variant:Nn \__postnotes_make_mark:nnn { Vnn }
\tl_new:N \l__postnotes_pre_textmark_tl
\tl_new:N \l__postnotes_post_textmark_tl
\tl_new:N \l__postnotes_post_printnote_tl
@@ -270,6 +340,36 @@
postprintnote .tl_set:N = \l__postnotes_post_printnote_tl ,
postprintnote .value_required:n = true ,
}
+\keys_define:nn { postnotes/setup }
+ {
+ style .choice: ,
+ style / endnotes .meta:n =
+ {
+ listenv = none ,
+ format =
+ {
+ \footnotesize
+ \setlength { \rightskip } { 0pt }
+ \setlength { \leftskip } { 0pt }
+ \setlength { \parindent } { 1.8em }
+ } ,
+ maketextmark =
+ {
+ \hbox_set:Nn \l__postnotes_tmpa_box
+ { \@textsuperscript { \normalfont ##1 } }
+ \skip_horizontal:n { - \box_wd:N \l__postnotes_tmpa_box }
+ ##2 \box_use:N \l__postnotes_tmpa_box ##3
+ } ,
+ } ,
+ style / pagenote .meta:n =
+ {
+ listenv = none ,
+ format = { } ,
+ pretextmark = { \noindent } ,
+ maketextmark = { { \normalfont ##2 ##1 . ##3 } } ,
+ posttextmark = { ~ } ,
+ } ,
+ }
\bool_new:N \l__postnotes_hyperlink_bool
\bool_new:N \l__postnotes_hyperref_warn_bool
\bool_new:N \l__postnotes_backlink_bool
@@ -324,6 +424,47 @@
{ Option~'#1'~only~available~in~the~preamble~\msg_line_context:. }
\msg_new:nnn { postnotes } { missing-hyperref }
{ Missing~'hyperref'~package.~Setting~'hyperref=false'. }
+\tl_new:N \l__postnotes_multisep_tl
+\tl_const:Nn \c_postnotes_multi_notemarker_tl { 3sp }
+\bool_new:N \l__postnotes_multiple_bool
+\tl_new:N \l__postnotes_saved_spacefactor_multi_tl
+\keys_define:nn { postnotes/setup }
+ {
+ multiple .bool_set:N = \l__postnotes_multiple_bool ,
+ multiple .default:n = true ,
+ multiple .initial:n = false ,
+ multisep .tl_set:N = \l__postnotes_multisep_tl ,
+ multisep .value_required:n = true ,
+ multisep .initial:n = {,} ,
+ }
+\cs_new_protected:Npn \__postnotes_multiple_prepare:
+ {
+ \bool_if:NT \l__postnotes_multiple_bool
+ {
+ \kern -\c_postnotes_multi_notemarker_tl
+ \kern \c_postnotes_multi_notemarker_tl
+ \scan_stop:
+ }
+ }
+\cs_new_protected:Npn \__postnotes_multiple_check:
+ {
+ \bool_if:NT \l__postnotes_multiple_bool
+ {
+ \dim_compare:nNnT
+ { \c_postnotes_multi_notemarker_tl } = { \lastkern }
+ {
+ \tl_set:Ne \l__postnotes_saved_spacefactor_multi_tl
+ { \int_use:N \spacefactor }
+ \unkern
+ \unkern
+ \tag_socket_use:n { postnotes/multisep/begin }
+ \__postnotes_make_mark:Vnn \l__postnotes_multisep_tl { } { }
+ \tag_socket_use:n { postnotes/multisep/end }
+ \spacefactor \l__postnotes_saved_spacefactor_multi_tl
+ \scan_stop:
+ }
+ }
+ }
\bool_new:N \l__postnotes_sort_bool
\keys_define:nn { postnotes/setup }
{
@@ -331,36 +472,67 @@
sort .initial:n = true ,
sort .default:n = true ,
}
+\bool_new:N \l__postnotes_check_dupli_bool
+\bool_new:N \l__postnotes_check_floats_bool
\keys_define:nn { postnotes/setup }
{
- style .choice: ,
- style / endnotes .meta:n =
+ checkduplicates .bool_set:N = \l__postnotes_check_dupli_bool ,
+ checkduplicates .default:n = true ,
+ checkduplicates .initial:n = true ,
+ checkfloats .bool_set:N = \l__postnotes_check_floats_bool ,
+ checkfloats .default:n = true ,
+ checkfloats .initial:n = false ,
+ }
+\bool_new:N \l__postnotes_maybe_multi_bool
+\keys_define:nn { postnotes/setup }
+ {
+ maybemulti .bool_set:N = \l__postnotes_maybe_multi_bool ,
+ maybemulti .default:n = true ,
+ maybemulti .initial:n = false ,
+ }
+\bool_new:N \g__postnotes_counteraux_bool
+\keys_define:nn { postnotes/setup }
+ {
+ counteraux .bool_gset:N = \g__postnotes_counteraux_bool ,
+ counteraux .default:n = true ,
+ counteraux .initial:n = false ,
+ }
+\AddToHook { begindocument/before }
+ {
+ \bool_if:NT \g__postnotes_counteraux_bool
+ { \postnotesetup { sort=false } }
+ \keys_define:nn { postnotes/setup }
{
- listenv = none ,
- format =
+ counteraux .code:n =
{
- \footnotesize
- \setlength { \rightskip } { 0pt }
- \setlength { \leftskip } { 0pt }
- \setlength { \parindent } { 1.8em }
+ \msg_warning:nnn { postnotes }
+ { option-preamble-only } { counteraux }
} ,
- pretextmark = { \par } ,
- maketextmark =
- {
- \hbox_set:Nn \l__postnotes_tmpa_box
- { \@textsuperscript { \normalfont ##1 } }
- \skip_horizontal:n { - \box_wd:N \l__postnotes_tmpa_box }
- ##2 \box_use:N \l__postnotes_tmpa_box ##3
- } ,
- } ,
- style / pagenote .meta:n =
+ }
+ }
+\cs_new_protected:Npn \postnote@setcounteraux #1
+ { \int_gset:Nn \g__postnotes_postnote_counteraux_int { #1 } }
+\cs_new_protected:Npn \postnote@addtocounteraux #1
+ { \int_gadd:Nn \g__postnotes_postnote_counteraux_int { #1 } }
+\NewDocumentCommand \pnsetcounteraux { m }
+ {
+ \@bsphack
+ \legacy_if:nT { @filesw }
{
- listenv = none ,
- format = { } ,
- pretextmark = { \par\noindent } ,
- maketextmark = { { \normalfont ##2 ##1 . ##3 } } ,
- posttextmark = { ~ } ,
- } ,
+ \protected@write \@auxout { }
+ { \token_to_str:N \postnote@setcounteraux { #1 } }
+ }
+ \@esphack
+ }
+\NewDocumentCommand \pnaddtocounteraux { m }
+ {
+ \@bsphack
+ \legacy_if:nT { @filesw }
+ {
+ \protected@write \@auxout { }
+ { \token_to_str:N \postnote@addtocounteraux { #1 } }
+ }
+ \@esphack
}
\NewDocumentCommand \postnotesetup { m }
{ \keys_set:nn { postnotes/setup } {#1} }
@@ -369,44 +541,84 @@
\tl_new:N \l_postnotes_note_id_tl
\tl_set:Nn \l_postnotes_note_id_tl { \int_use:N \g__postnotes_note_id_int }
\seq_new:N \g__postnotes_queue_seq
+\int_new:N \l__postnotes_counteraux_step_int
+\tl_new:N \l__postnotes_mark_typeset_tl
+\tl_new:N \l__postnotes_note_set_labels_tl
\NewDocumentCommand \postnote { O { } +m }
{ \__postnotes_note:nn {#1} {#2} }
\NewHook { postnotes/note/begin }
+\NewHook { postnotes/note/setlabels }
\cs_new_protected:Npn \__postnotes_note:nn #1#2
{
\group_begin:
- \keys_set:nn { postnotes/note } {#1}
- \__postnotes_inhibit_note:F
- {
- \int_gincr:N \g__postnotes_note_id_int
- \tl_if_empty:NT \l__postnotes_mark_tl
- {
- \stepcounter { postnote }
- \tl_set:Ne \l__postnotes_mark_tl { \thepostnote }
- }
- \seq_gput_right:Ne \g__postnotes_queue_seq
- { \l_postnotes_note_id_tl }
- \UseHook { postnotes/note/begin }
- \cs_set:Npn \@currentcounter { postnote }
- \cs_set:Npe \@currentlabel { \p@postnote \l__postnotes_mark_tl }
- \MakeLinkTarget* { postnote. \l_postnotes_note_id_tl .mark }
- \__postnotes_set_mark_page_label:e { \l_postnotes_note_id_tl }
- \__postnotes_set_user_labels:
- \bool_if:NF \l__postnotes_nomark_bool
- {
- \__postnotes_typeset_mark:eV
- { \l_postnotes_note_id_tl } \l__postnotes_mark_tl
- }
- \__postnotes_store:nn { \l_postnotes_note_id_tl } {#2}
- }
+ \keys_set:nn { postnotes/note } {#1}
+ \bool_if:NT \l__postnotes_nomark_bool { \@bsphack }
+ \__postnotes_inhibit_note:F
+ {
+ \int_gincr:N \g__postnotes_note_id_int
+ \tl_if_empty:NTF \l__postnotes_mark_tl
+ {
+ \stepcounter { postnote }
+ \int_set:Nn \l__postnotes_counteraux_step_int { 1 }
+ \bool_if:NT \g__postnotes_counteraux_bool
+ {
+ \exp_args:NNe \prop_gpop:NnNT \g__postnotes_counteraux_prop
+ { \l_postnotes_note_id_tl } \l__postnotes_tmpa_tl
+ { \int_set:Nn \c@postnote { \l__postnotes_tmpa_tl } }
+ \tl_clear:N \l__postnotes_tmpa_tl
+ }
+ \protected@edef \l__postnotes_mark_tl { \thepostnote }
+ }
+ { \int_set:Nn \l__postnotes_counteraux_step_int { 0 } }
+ \UseHook { postnotes/note/begin }
+ \seq_gput_right:Ne \g__postnotes_queue_seq
+ { \l_postnotes_note_id_tl }
+ \tl_set:Nn \@currentcounter { postnote }
+ \protected@edef \@currentlabel { \p@postnote \l__postnotes_mark_tl }
+ \tl_gset:Ne \@currentHref
+ { postnote. \l_postnotes_note_id_tl .mark }
+ \__postnotes_store:nn { \l_postnotes_note_id_tl } {#2}
+ \tl_set_eq:NN \l__postnotes_mark_typeset_tl \l__postnotes_mark_tl
+ \bool_lazy_or:nnT
+ { \g__postnotes_counteraux_bool }
+ { \l__postnotes_maybe_multi_bool }
+ {
+ \bool_lazy_and:nnT
+ { ! \g__postnotes_firstrun_bool }
+ {
+ ! \cs_if_exist_p:c
+ { \c__postnotes_ref_prefix_tl @ mark @ \l_postnotes_note_id_tl }
+ }
+ { \__postnotes_get_label_if_exist:N \l__postnotes_mark_typeset_tl }
+ }
+ \tl_set:Nn \l__postnotes_note_set_labels_tl
+ {
+ \UseHook { postnotes/note/setlabels }
+ \MakeLinkTarget* { postnote. \l_postnotes_note_id_tl .mark }
+ \__postnotes_set_mark_page_label:ee { \l_postnotes_note_id_tl }
+ { \int_use:N \l__postnotes_counteraux_step_int }
+ \__postnotes_set_user_labels:
+ }
+ \bool_if:NTF \l__postnotes_nomark_bool
+ {
+ \tag_socket_use:n { postnotes/nomark/begin }
+ \l__postnotes_note_set_labels_tl
+ \tag_socket_use:n { postnotes/nomark/end }
+ }
+ {
+ \__postnotes_typeset_mark:eVN
+ { \l_postnotes_note_id_tl } \l__postnotes_mark_typeset_tl
+ \l__postnotes_note_set_labels_tl
+ }
+ }
+ \bool_if:NT \l__postnotes_nomark_bool { \@esphack }
\group_end:
}
\tl_new:N \l__postnotes_mark_tl
\bool_new:N \l__postnotes_nomark_bool
\fp_new:N \l__postnotes_sort_num_fp
-\tl_new:N \l__postnotes_note_label_tl
+\str_new:N \l__postnotes_note_label_str
\bool_new:N \l__postnotes_manual_sortnum_bool
-\bool_new:N \l__postnotes_maybe_multi_bool
\keys_define:nn { postnotes/note }
{
markstr .tl_set:N = \l__postnotes_mark_tl ,
@@ -425,8 +637,10 @@
mark .value_required:n = true ,
nomark .bool_set:N = \l__postnotes_nomark_bool ,
nomark .default:n = true ,
- label .tl_set:N = \l__postnotes_note_label_tl ,
+ label .str_set:N = \l__postnotes_note_label_str ,
label .value_required:n = true ,
+ maybemulti .bool_set:N = \l__postnotes_maybe_multi_bool ,
+ maybemulti .default:n = true ,
}
\bool_new:N \l__postnotes_inhibit_note_bool
\bool_new:N \l__postnotes_print_plain_mark_bool
@@ -438,34 +652,84 @@
\bool_set_false:N \l__postnotes_print_plain_mark_bool
\bool_set_false:N \l__postnotes_print_plain_mark_stepcounter_bool
\UseHook { postnotes/note/inhibit }
- \bool_if:NT \l__postnotes_print_plain_mark_bool
+ \bool_lazy_all:nT
{
- \tl_if_empty:NT \l__postnotes_mark_tl
+ { \l__postnotes_inhibit_note_bool }
+ { \l__postnotes_print_plain_mark_bool }
+ { ! \l__postnotes_nomark_bool }
+ }
+ {
+ \tl_if_empty:NTF \l__postnotes_mark_tl
{
\bool_if:NTF \l__postnotes_print_plain_mark_stepcounter_bool
{
\stepcounter { postnote }
- \tl_set:Ne \l__postnotes_mark_tl { \thepostnote }
+ \protected@edef \l__postnotes_mark_typeset_tl { \thepostnote }
}
{
\group_begin:
- \int_incr:N \c@postnote
- \exp_args:NNNe
- \group_end:
- \tl_set:Nn \l__postnotes_mark_tl { \thepostnote }
+ \int_incr:N \c@postnote
+ \protected@edef \l__postnotes_tmpa_tl { \thepostnote }
+ \exp_args:NNNV
+ \group_end:
+ \tl_set:Nn \l__postnotes_mark_typeset_tl \l__postnotes_tmpa_tl
}
+ \__postnotes_get_label_if_exist:N \l__postnotes_mark_typeset_tl
}
- \__postnotes_typeset_mark_wrapper:n
- { \__postnotes_make_mark:nnn { \l__postnotes_mark_tl } { } { } }
+ { \tl_set_eq:NN \l__postnotes_mark_typeset_tl \l__postnotes_mark_tl }
+ \group_begin:
+ \socket_assign_plug:nn { tagsupport/postnotes/multisep/begin } { noop }
+ \socket_assign_plug:nn { tagsupport/postnotes/multisep/end } { noop }
+ \__postnotes_typeset_mark_wrapper:nnn
+ { \__postnotes_make_mark:Vnn \l__postnotes_mark_typeset_tl { } { } }
+ { } { }
+ \group_end:
}
\bool_if:NTF \l__postnotes_inhibit_note_bool
{ \prg_return_true: }
{ \prg_return_false: }
}
-\cs_new_protected:Npn \__postnotes_typeset_mark:nn #1#2
+\cs_new_protected:Npn \__postnotes_get_label_if_exist:N #1
+ {
+ \str_if_empty:NTF \l__postnotes_note_label_str
+ {
+ \str_if_empty:NF \l__postnotes_note_zlabel_str
+ {
+ \exp_args:NV \zref@ifrefundefined \l__postnotes_note_zlabel_str
+ { }
+ {
+ \exp_args:NV \zref@ifrefcontainsprop
+ \l__postnotes_note_zlabel_str
+ { postnote@mark }
+ {
+ \exp_args:NNNo \exp_args:NNo \tl_set:Nn #1
+ {
+ \zref@extract
+ { \l__postnotes_note_zlabel_str } { postnote@mark }
+ }
+ }
+ { }
+ }
+ }
+ }
+ {
+ \exp_args:Ne \property_if_recorded:nnT
+ { postnotes@ \l__postnotes_note_label_str }
+ { postnotes/mark }
+ {
+ \protected@edef #1
+ {
+ \property_ref:ee
+ { __postnotes_ \l__postnotes_note_label_str } { postnotes/mark }
+ }
+ }
+ }
+ }
+\cs_new_protected:Npn \__postnotes_typeset_mark:nnN #1#2#3
{
- \__postnotes_typeset_mark_wrapper:n
+ \__postnotes_typeset_mark_wrapper:nnn
{
+ #3
\bool_if:NTF \l__postnotes_hyperlink_bool
{
\__postnotes_make_mark:nnn {#2}
@@ -474,72 +738,86 @@
}
{ \__postnotes_make_mark:nnn {#2} { } { } }
}
+ { \tag_socket_use:n { postnotes/mark/begin } }
+ { \tag_socket_use:n { postnotes/mark/end } }
}
-\cs_generate_variant:Nn \__postnotes_typeset_mark:nn { eV }
+\cs_generate_variant:Nn \__postnotes_typeset_mark:nnN { eVN }
\tl_new:N \l__postnotes_saved_spacefactor_tl
-\cs_new_protected:Npn \__postnotes_typeset_mark_wrapper:n #1
+\cs_new_protected:Npn \__postnotes_typeset_mark_wrapper:nnn #1#2#3
{
\mode_leave_vertical:
\mode_if_horizontal:T
{
- \tl_set:Ne \l__postnotes_saved_spacefactor_tl { \the\spacefactor }
+ \tl_set:Ne \l__postnotes_saved_spacefactor_tl
+ { \int_use:N \spacefactor }
+ \__postnotes_multiple_check:
\nobreak
}
- #1
+ #2 % begin tagging socket
+ #1 % mark
+ #3 % end tagging socket
+ \__postnotes_multiple_prepare:
\mode_if_horizontal:T
{ \spacefactor \l__postnotes_saved_spacefactor_tl }
\scan_stop:
}
\cs_new_protected:Npn \__postnotes_set_user_labels:
{
- \tl_if_empty:NF \l__postnotes_note_label_tl
- { \exp_args:NV \label \l__postnotes_note_label_tl }
- \tl_if_empty:NF \l__postnotes_note_zlabel_tl
- { \exp_args:NV \zlabel \l__postnotes_note_zlabel_tl }
+ \str_if_empty:NF \l__postnotes_note_label_str
+ {
+ \exp_args:NV \label \l__postnotes_note_label_str
+ \property_record:ee { __postnotes_ \l__postnotes_note_label_str }
+ { postnotes/mark }
+ }
+ \str_if_empty:NF \l__postnotes_note_zlabel_str
+ { \exp_args:NV \zlabel \l__postnotes_note_zlabel_str }
}
+\property_new:nnnn { postnotes/mark } { now } { } { \l__postnotes_mark_tl }
\NewDocumentCommand \postnoteref { s m }
{ \__postnotes_note_ref:nn {#1} {#2} }
+\str_new:N \l__postnotes_note_ref_label_str
\cs_new_protected:Npn \__postnotes_note_ref:nn #1#2
{
\group_begin:
- \__postnotes_typeset_mark_wrapper:n
- {
- \bool_lazy_and:nnTF
- { ! #1 }
- { \l__postnotes_hyperlink_bool }
- {
- \hyperref [#2]
- { \__postnotes_make_mark:nnn { \ref*{#2} } { } { } }
- }
- { \__postnotes_make_mark:nnn { \ref*{#2} } { } { } }
- }
+ \str_set:Nn \l__postnotes_note_ref_label_str {#2}
+ \__postnotes_typeset_mark_wrapper:nnn
+ {
+ \bool_lazy_and:nnTF
+ { ! #1 }
+ { \l__postnotes_hyperlink_bool }
+ {
+ \hyperref [#2]
+ { \__postnotes_make_mark:nnn { \ref*{#2} } { } { } }
+ }
+ { \__postnotes_make_mark:nnn { \ref*{#2} } { } { } }
+ }
+ { \tag_socket_use:n { postnotes/postnoteref/begin } }
+ { \tag_socket_use:n { postnotes/postnoteref/end } }
\group_end:
}
\NewDocumentCommand \postnotesection { O { } +m }
- { \__postnotes_section:nn {#1} {#2} }
-\NewDocumentCommand \postnotesectionx { O { } +m }
- {
- % NOTE Command deprecated in 2022-12-27 for v0.2.0.
- \msg_warning:nn { postnotes } { postnotesectionx-deprecated }
- \postnotesection [ #1 , exp ] {#2}
- }
-\msg_new:nnn { postnotes } { postnotesectionx-deprecated }
{
- '\iow_char:N\\postnotesectionx'~is~deprecated~\msg_line_context:.~
- Use~the~'exp'~option~of~'\iow_char:N\\postnotesection'~instead.
+ \@bsphack
+ \__postnotes_section:nn {#1} {#2}
+ \@esphack
}
\int_new:N \g__postnotes_sectid_int
\cs_new_protected:Npn \__postnotes_section:nn #1#2
{
\group_begin:
- \int_gincr:N \g__postnotes_sectid_int
- \int_gincr:N \g__postnotes_note_id_int
- \seq_gput_right:Ne \g__postnotes_queue_seq { \l_postnotes_note_id_tl }
- \tl_gclear:N \g__postnotes_section_name_tl
- \keys_set:nn { postnotes/section } {#1}
- \bool_if:NTF \l__postnotes_section_exp_bool
- { \__postnotes_store_section:ne { \l_postnotes_note_id_tl } {#2} }
- { \__postnotes_store_section:nn { \l_postnotes_note_id_tl } {#2} }
+ \int_gincr:N \g__postnotes_sectid_int
+ \int_gincr:N \g__postnotes_note_id_int
+ \seq_gput_right:Ne \g__postnotes_queue_seq { \l_postnotes_note_id_tl }
+ \tl_gclear:N \g__postnotes_section_name_tl
+ \keys_set:nn { postnotes/section } {#1}
+ \__postnotes_set_section_page_label:e { \l_postnotes_note_id_tl }
+ \bool_if:NTF \l__postnotes_section_exp_bool
+ {
+ \protected@edef \l__postnotes_tmpa_tl {#2}
+ \__postnotes_store_section:nV { \l_postnotes_note_id_tl }
+ \l__postnotes_tmpa_tl
+ }
+ { \__postnotes_store_section:nn { \l_postnotes_note_id_tl } {#2} }
\group_end:
}
\tl_new:N \g__postnotes_section_name_tl
@@ -561,155 +839,223 @@
\tl_new:N \pnthesectionnextnote
\tl_new:N \pnthepage
\int_new:N \g__postnotes_print_postnotes_int
+\seq_new:N \g__postnotes_print_queue_seq
\tl_new:N \l_postnotes_print_note_id_tl
\tl_new:N \l__postnotes_print_note_id_next_tl
\tl_new:N \l__postnotes_print_counter_tl
\tl_new:N \l__postnotes_print_mark_tl
+\tl_new:N \l__postnotes_print_typeset_mark_tl
\tl_new:N \l__postnotes_print_type_curr_tl
\tl_new:N \l__postnotes_print_type_next_tl
\tl_new:N \l__postnotes_print_type_prev_tl
\tl_new:N \l__postnotes_print_content_tl
+\tl_new:N \l__postnotes_print_page_tl
+\tl_new:N \l__postnotes_print_chapter_tl
+\tl_new:N \l__postnotes_print_section_tl
+\tl_new:N \l__postnotes_print_sectname_tl
\seq_new:N \l__postnotes_clear_queue_seq
+\mark_new_class:n { postnotes/page }
+\mark_new_class:n { postnotes/chapter }
+\mark_new_class:n { postnotes/section }
+\mark_new_class:n { postnotes/sectname }
\NewHook { postnotes/print/begin }
\NewHook { postnotes/print/note/begin }
+\NewHook { postnotes/print/note/typesetmark }
+\NewHook { postnotes/print/note/ltmarks }
\newcounter { postnotetext }
\newcounter { postnotesection }
\setcounter { postnotesection } { 10000 }
\cs_new_protected:Npn \__postnotes_print_notes:
{
\group_begin:
- \int_gincr:N \g__postnotes_print_postnotes_int
- \seq_if_empty:NTF \g__postnotes_queue_seq
- { \msg_warning:nn { postnotes } { empty-printpostnotes } }
- {
- \pnheading
- \UseHook { postnotes/print/begin }
- \tl_set:Nn \l__postnotes_print_type_prev_tl { open }
- \seq_set_eq:NN \l__postnotes_clear_queue_seq \g__postnotes_queue_seq
- \__postnotes_verify_multipass:N \g__postnotes_queue_seq
- \bool_if:NT \l__postnotes_sort_bool
- { \__postnotes_sort_queue:N \g__postnotes_queue_seq }
- \bool_gset_true:N \g__postnotes_header_vars_next_bool
- \__postnotes_get_headers_data:N \g__postnotes_queue_seq
- \__postnotes_set_headers_vars_first:
- \bool_if:NF \l__postnotes_print_as_list_bool
- {
- \cs_set_eq:NN \@afterindentfalse \@afterindenttrue
- \@afterindenttrue
- }
- \bool_until_do:nn { \seq_if_empty_p:N \g__postnotes_queue_seq }
- {
- \seq_gpop_left:NN \g__postnotes_queue_seq
- \l_postnotes_print_note_id_tl
- \__postnotes_prop_get:nnN { \l_postnotes_print_note_id_tl }
- { type } \l__postnotes_print_type_curr_tl
- \tl_if_eq:NnTF \l__postnotes_print_type_curr_tl { section }
- { % type_curr = `section'
- \seq_if_empty:NTF \g__postnotes_queue_seq
- {
- \tl_set:Nn \l__postnotes_print_note_id_next_tl { noid }
- \tl_set:Nn \l__postnotes_print_type_next_tl { close }
- }
- {
- \seq_get_left:NN \g__postnotes_queue_seq
- \l__postnotes_print_note_id_next_tl
- \__postnotes_prop_get:nnN
- { \l__postnotes_print_note_id_next_tl }
- { type } \l__postnotes_print_type_next_tl
- }
- \tl_if_eq:NnT \l__postnotes_print_type_next_tl { note }
- {
- \stepcounter { postnotesection }
- \group_begin:
+ \int_gincr:N \g__postnotes_print_postnotes_int
+ \__postnotes_split_labelseq:
+ \bool_lazy_and:nnTF
+ { \g__postnotes_counteraux_bool }
+ { ! \g__postnotes_firstrun_bool }
+ {
+ \seq_gset_eq:NN \g__postnotes_print_queue_seq
+ \g__postnotes_print_labelseq_queue_seq
+ }
+ {
+ \seq_gset_eq:NN \g__postnotes_print_queue_seq
+ \g__postnotes_queue_seq
+ }
+ \seq_set_eq:NN \l__postnotes_clear_queue_seq \g__postnotes_print_queue_seq
+ \seq_gclear:N \g__postnotes_queue_seq
+ \__postnotes_set_print_label:e
+ { \int_use:N \g__postnotes_print_postnotes_int }
+ \seq_if_empty:NTF \g__postnotes_print_queue_seq
+ { \msg_warning:nn { postnotes } { empty-printpostnotes } }
+ {
+ \pnheading
+ \UseHook { postnotes/print/begin }
+ \tl_set:Nn \l__postnotes_print_type_prev_tl { open }
+ \__postnotes_check_duplicates:N \g__postnotes_print_queue_seq
+ \__postnotes_sort_queue:N \g__postnotes_print_queue_seq
+ \__postnotes_check_floats:N \g__postnotes_print_queue_seq
+ \__postnotes_set_header_vars_first:
+ \bool_if:NF \l__postnotes_print_as_list_bool
+ {
+ \cs_set_eq:NN \@afterindentfalse \@afterindenttrue
+ \@afterindenttrue
+ }
+ \bool_until_do:nn { \seq_if_empty_p:N \g__postnotes_print_queue_seq }
+ {
+ \seq_gpop_left:NN \g__postnotes_print_queue_seq
+ \l_postnotes_print_note_id_tl
+ \__postnotes_prop_get:nnN { \l_postnotes_print_note_id_tl }
+ { type } \l__postnotes_print_type_curr_tl
+ \tl_if_eq:NnTF \l__postnotes_print_type_curr_tl { section }
+ { % type_curr = `section'
+ \seq_if_empty:NTF \g__postnotes_print_queue_seq
+ {
+ \tl_set:Nn \l__postnotes_print_note_id_next_tl { noid }
+ \tl_set:Nn \l__postnotes_print_type_next_tl { close }
+ }
+ {
+ \seq_get_left:NN \g__postnotes_print_queue_seq
+ \l__postnotes_print_note_id_next_tl
+ \__postnotes_prop_get:nnN
+ { \l__postnotes_print_note_id_next_tl }
+ { type } \l__postnotes_print_type_next_tl
+ }
+ \tl_if_eq:NnT \l__postnotes_print_type_next_tl { note }
+ {
+ \stepcounter { postnotesection }
+ \group_begin:
+ \__postnotes_prop_get:nnN
+ { \l_postnotes_print_note_id_tl }
+ { thechapter } \pnthechapter
+ \__postnotes_prop_get:nnN
+ { \l_postnotes_print_note_id_tl }
+ { thesection } \pnthesection
+ \tl_set:NV \pnidnextnote
+ \l__postnotes_print_note_id_next_tl
+ \__postnotes_prop_get:nnN
+ { \l__postnotes_print_note_id_next_tl }
+ { thechapter } \pnthechapternextnote
+ \__postnotes_prop_get:nnN
+ { \l__postnotes_print_note_id_next_tl }
+ { thesection } \pnthesectionnextnote
+ \__postnotes_prop_get:nnN
+ { \l_postnotes_print_note_id_tl }
+ { content } \l__postnotes_print_content_tl
+ \l__postnotes_print_content_tl
+ \group_end:
+ \tl_set:NV \l__postnotes_print_type_prev_tl
+ \l__postnotes_print_type_curr_tl
+ }
+ }
+ { % type_curr = `note'
+ \seq_if_empty:NTF \g__postnotes_print_queue_seq
+ {
+ \tl_set:Nn \l__postnotes_print_note_id_next_tl { noid }
+ \tl_set:Nn \l__postnotes_print_type_next_tl { close }
+ }
+ {
+ \seq_get_left:NN \g__postnotes_print_queue_seq
+ \l__postnotes_print_note_id_next_tl
+ \__postnotes_prop_get:nnN
+ { \l__postnotes_print_note_id_next_tl }
+ { type } \l__postnotes_print_type_next_tl
+ }
+ \tl_if_eq:NnF \l__postnotes_print_type_prev_tl { note }
+ {
+ \bool_if:NTF \l__postnotes_print_as_list_bool
+ { \exp_args:NV \begin \l__postnotes_print_env_tl }
+ { \group_begin: }
+ \tag_socket_use:n { postnotes/printlist/begin }
+ \l__postnotes_print_format_tl
+ }
+ \group_begin:
+ \UseHook { postnotes/print/note/begin }
+ \__postnotes_get_pageref:Ne \l__postnotes_print_page_tl
+ { mark@ \l_postnotes_print_note_id_tl }
+ \__postnotes_prop_get:nnN { \l_postnotes_print_note_id_tl }
+ { thechapter } \l__postnotes_print_chapter_tl
+ \__postnotes_prop_get:nnN { \l_postnotes_print_note_id_tl }
+ { thesection } \l__postnotes_print_section_tl
+ \__postnotes_prop_get:nnN { \l_postnotes_print_note_id_tl }
+ { pnsectname } \l__postnotes_print_sectname_tl
+ \tl_set_eq:NN \pnthepage \l__postnotes_print_page_tl
\__postnotes_prop_get:nnN
{ \l_postnotes_print_note_id_tl }
- { thechapter } \pnthechapter
+ { mark } \l__postnotes_print_mark_tl
\__postnotes_prop_get:nnN
{ \l_postnotes_print_note_id_tl }
- { thesection } \pnthesection
- \tl_set:NV \pnidnextnote \l__postnotes_print_note_id_next_tl
- \__postnotes_prop_get:nnN
- { \l__postnotes_print_note_id_next_tl }
- { thechapter } \pnthechapternextnote
- \__postnotes_prop_get:nnN
- { \l__postnotes_print_note_id_next_tl }
- { thesection } \pnthesectionnextnote
+ { counter } \l__postnotes_print_counter_tl
\__postnotes_prop_get:nnN
{ \l_postnotes_print_note_id_tl }
{ content } \l__postnotes_print_content_tl
- \l__postnotes_print_content_tl
- \group_end:
- \tl_set:NV \l__postnotes_print_type_prev_tl
- \l__postnotes_print_type_curr_tl
- }
- }
- { % type_curr = `note'
- \tl_if_eq:NnF \l__postnotes_print_type_prev_tl { note }
- {
- \bool_if:NTF \l__postnotes_print_as_list_bool
- { \exp_args:Ne \begin { \l__postnotes_print_env_tl } }
- { \group_begin: }
- \l__postnotes_print_format_tl
- }
- \group_begin:
- \UseHook { postnotes/print/note/begin }
- \__postnotes_get_pageref:Ne \pnthepage
- { mark@ \l_postnotes_print_note_id_tl }
- \__postnotes_prop_get:nnN
- { \l_postnotes_print_note_id_tl }
- { mark } \l__postnotes_print_mark_tl
- \__postnotes_prop_get:nnN
- { \l_postnotes_print_note_id_tl }
- { counter } \l__postnotes_print_counter_tl
- \__postnotes_prop_get:nnN
- { \l_postnotes_print_note_id_tl }
- { content } \l__postnotes_print_content_tl
- \cs_set:Npn \@currentcounter { postnotetext }
- \int_set:Nn \c@postnotetext
- { \l__postnotes_print_counter_tl }
- \cs_set:Npe \@currentlabel
- { \p@postnote \l__postnotes_print_mark_tl }
- \__postnotes_text_mark_wrapper:n
- {
- \MakeLinkTarget*
- { postnote. \l_postnotes_print_note_id_tl .text }
- \__postnotes_set_text_page_label:e
- { \l_postnotes_print_note_id_tl }
- \__postnotes_typeset_text_mark:eV
- { \l_postnotes_print_note_id_tl }
- \l__postnotes_print_mark_tl
- }
- \l__postnotes_print_content_tl
- \l__postnotes_post_printnote_tl
- \group_end:
- \seq_if_empty:NTF \g__postnotes_queue_seq
- {
- \tl_set:Nn \l__postnotes_print_note_id_next_tl { noid }
- \tl_set:Nn \l__postnotes_print_type_next_tl { close }
- }
- {
- \seq_get_left:NN \g__postnotes_queue_seq
- \l__postnotes_print_note_id_next_tl
- \__postnotes_prop_get:nnN
- { \l__postnotes_print_note_id_next_tl }
- { type } \l__postnotes_print_type_next_tl
- }
- \tl_if_eq:NnF \l__postnotes_print_type_next_tl { note }
- {
+ \tl_set:Nn \@currentcounter { postnotetext }
+ \int_set:Nn \c@postnotetext
+ { \l__postnotes_print_counter_tl }
+ \protected@edef \@currentlabel
+ { \p@postnote \l__postnotes_print_mark_tl }
+ \tl_set:Nn \l__postnotes_print_typeset_mark_tl
+ {
+ \tag_socket_use:n { postnotes/printmark/begin }
+ \UseHook { postnotes/print/note/typesetmark }
+ \MakeLinkTarget*
+ { postnote. \l_postnotes_print_note_id_tl .text }
+ \l__postnotes_pre_textmark_tl
+ \__postnotes_typeset_text_mark:eV
+ { \l_postnotes_print_note_id_tl }
+ \l__postnotes_print_mark_tl
+ \l__postnotes_post_textmark_tl
+ \tag_socket_use:n { postnotes/printmark/end }
+ }
\bool_if:NTF \l__postnotes_print_as_list_bool
- { \exp_args:Ne \end { \l__postnotes_print_env_tl } }
- { \group_end: }
- \par
- }
- \tl_set:NV \l__postnotes_print_type_prev_tl
- \l__postnotes_print_type_curr_tl
- }
- }
- \AddToHookNext { shipout/after }
- { \bool_gset_false:N \g__postnotes_header_vars_next_bool }
- \seq_map_inline:Nn \l__postnotes_clear_queue_seq
- { \__postnotes_prop_gclear:n { ##1 } }
- }
+ {
+ \item
+ [
+ \tag_socket_use:n { postnotes/printnote/begin }
+ \l__postnotes_print_typeset_mark_tl
+ ]
+ \mode_leave_vertical:
+ }
+ {
+ \mode_leave_vertical:
+ \tag_socket_use:n { postnotes/printnote/begin }
+ \l__postnotes_print_typeset_mark_tl
+ }
+ \UseHook { postnotes/print/note/ltmarks }
+ \mark_insert:nn { postnotes/page }
+ { \l__postnotes_print_page_tl }
+ \mark_insert:nn { postnotes/chapter }
+ { \l__postnotes_print_chapter_tl }
+ \mark_insert:nn { postnotes/section }
+ { \l__postnotes_print_section_tl }
+ \mark_insert:nn { postnotes/sectname }
+ { \l__postnotes_print_sectname_tl }
+ \tag_socket_use:n { postnotes/printtext/begin }
+ \l__postnotes_print_content_tl
+ \tag_socket_use:n { postnotes/printtext/end }
+ \tag_socket_use:n { postnotes/printnote/end }
+ \l__postnotes_post_printnote_tl
+ \group_end:
+ \tl_if_eq:NnF \l__postnotes_print_type_next_tl { note }
+ {
+ \tag_socket_use:n { postnotes/printlist/end }
+ \bool_if:NTF \l__postnotes_print_as_list_bool
+ {
+ \exp_args:NV \end \l__postnotes_print_env_tl
+ \par
+ }
+ {
+ \par
+ \group_end:
+ }
+ }
+ \tl_set:NV \l__postnotes_print_type_prev_tl
+ \l__postnotes_print_type_curr_tl
+ }
+ }
+ \__postnotes_set_header_vars_bool:
+ \seq_map_inline:Nn \l__postnotes_clear_queue_seq
+ { \__postnotes_prop_gclear:n { ##1 } }
+ }
\group_end:
}
\msg_new:nnn { postnotes } { empty-printpostnotes }
@@ -727,60 +1073,208 @@
{ \__postnotes_make_text_mark:nnn {#2} { } { } }
}
\cs_generate_variant:Nn \__postnotes_typeset_text_mark:nn { eV }
-\cs_new_protected:Npn \__postnotes_text_mark_wrapper:n #1
+\seq_new:N \g__postnotes_print_labelseq_queue_seq
+\cs_new_protected:Npn \__postnotes_split_labelseq:
{
- \bool_if:NTF \l__postnotes_print_as_list_bool
+ \group_begin:
+ \seq_clear:N \l__postnotes_tmpa_seq
+ \seq_clear:N \l__postnotes_tmpb_seq
+ \bool_if:NTF \g__postnotes_counteraux_bool
+ {
+ \tl_set:Ne \l__postnotes_tmpa_tl
+ { { print } { \int_use:N \g__postnotes_print_postnotes_int } }
+ \seq_if_in:NVF \g__postnotes_labelseq_seq \l__postnotes_tmpa_tl
+ { \seq_gput_right:NV \g__postnotes_labelseq_seq \l__postnotes_tmpa_tl }
+ \bool_do_until:nn
+ { \tl_if_eq_p:NN \l__postnotes_tmpb_tl \l__postnotes_tmpa_tl }
+ {
+ \seq_gpop_left:NN \g__postnotes_labelseq_seq \l__postnotes_tmpb_tl
+ \str_case:enT
+ { \tl_item:Nn \l__postnotes_tmpb_tl { 1 } }
+ {
+ { mark } { }
+ { section } { }
+ }
+ {
+ \int_compare:nNnTF
+ { \tl_item:Nn \l__postnotes_tmpb_tl { 2 } }
+ >
+ { \g__postnotes_note_id_int }
+ {
+ \seq_put_right:Ne \l__postnotes_tmpb_seq
+ \l__postnotes_tmpb_tl
+ }
+ {
+ \seq_put_right:Ne \l__postnotes_tmpa_seq
+ { \tl_item:Nn \l__postnotes_tmpb_tl { 2 } }
+ }
+ }
+ }
+ \seq_gset_eq:NN \g__postnotes_print_labelseq_queue_seq
+ \l__postnotes_tmpa_seq
+ \seq_concat:NNN \l__postnotes_tmpa_seq \l__postnotes_tmpb_seq
+ \g__postnotes_labelseq_seq
+ \seq_gset_eq:NN \g__postnotes_labelseq_seq \l__postnotes_tmpa_seq
+ }
+ {
+ \seq_map_inline:Nn \g__postnotes_labelseq_seq
+ {
+ \str_case:enT
+ { \tl_item:nn { ##1 } { 1 } }
+ {
+ { mark } { }
+ { section } { }
+ }
+ {
+ \int_compare:nNnTF
+ { \tl_item:nn { ##1 } { 2 } }
+ >
+ { \g__postnotes_note_id_int }
+ { \seq_put_right:Nn \l__postnotes_tmpb_seq { ##1 } }
+ {
+ \seq_put_right:Ne \l__postnotes_tmpa_seq
+ { \tl_item:nn { ##1 } { 2 } }
+ }
+ }
+ }
+ \seq_gset_eq:NN \g__postnotes_print_labelseq_queue_seq
+ \l__postnotes_tmpa_seq
+ \seq_gset_eq:NN \g__postnotes_labelseq_seq \l__postnotes_tmpb_seq
+ }
+ \group_end:
+ }
+\cs_new_protected:Npn \__postnotes_check_duplicates:N #1
+ {
+ \bool_lazy_and:nnT
+ { ! \g__postnotes_firstrun_bool }
+ { ! \g__postnotes_counteraux_bool }
{
- \item [ \l__postnotes_pre_textmark_tl #1 \l__postnotes_post_textmark_tl ]
- \mode_leave_vertical:
+ \group_begin:
+ \seq_clear:N \l__postnotes_tmpa_seq
+ \seq_map_inline:Nn #1
+ {
+ \bool_lazy_or:nnTF
+ { \cs_if_exist_p:c { \c__postnotes_ref_prefix_tl @ mark @ ##1 } }
+ {
+ \str_if_eq_p:ee
+ { \__postnotes_prop_item:nn {##1} { type } } { section }
+ }
+ { \seq_put_right:Nn \l__postnotes_tmpa_seq {##1} }
+ {
+ \str_if_eq:eeF
+ { \__postnotes_prop_item:nn {##1} { multibool } }
+ { true }
+ {
+ \seq_put_right:Nn \l__postnotes_tmpa_seq {##1}
+ \bool_if:NT \l__postnotes_check_dupli_bool
+ {
+ \msg_warning:nne { postnotes } { possible-duplicate }
+ { \__postnotes_prop_item:nn {##1} { mark } }
+ }
+ }
+ }
+ }
+ \seq_gset_eq:NN #1 \l__postnotes_tmpa_seq
+ \group_end:
}
- { \l__postnotes_pre_textmark_tl #1 \l__postnotes_post_textmark_tl }
}
-\cs_new_protected:Npn \__postnotes_verify_multipass:N #1
+\msg_new:nnn { postnotes } { possible-duplicate }
+ { Possible~duplicate~*around*~note~'#1'~\msg_line_context:. }
+\cs_new_protected:Npn \__postnotes_check_floats:N #1
{
- \group_begin:
- \seq_clear:N \l__postnotes_tmpa_seq
- \seq_map_inline:Nn #1
+ \bool_lazy_and:nnT
+ { \l__postnotes_check_floats_bool }
+ { ! \g__postnotes_firstrun_bool }
{
- \__postnotes_prop_get:nnN {##1} { multibool } \l__postnotes_tmpa_tl
- \str_if_eq:VnTF \l__postnotes_tmpa_tl { true }
- {
- \cs_if_exist:cT
- { \c__postnotes_ref_prefix_tl @ mark@ ##1 }
- { \seq_put_right:Nn \l__postnotes_tmpa_seq {##1} }
- }
- { \seq_put_right:Nn \l__postnotes_tmpa_seq {##1} }
+ \group_begin:
+ \seq_set_filter:NNn \l__postnotes_tmpa_seq #1
+ {
+ \bool_lazy_or_p:nn
+ { \cs_if_exist_p:c { \c__postnotes_ref_prefix_tl @ mark @ ##1 } }
+ { \cs_if_exist_p:c { \c__postnotes_ref_prefix_tl @ section @ ##1 } }
+ }
+ \tl_if_eq:NNF
+ \g__postnotes_print_labelseq_queue_seq \l__postnotes_tmpa_seq
+ { \msg_warning:nn { postnotes } { possible-shuffle } }
+ \group_end:
}
- \seq_gset_eq:NN #1 \l__postnotes_tmpa_seq
- \group_end:
}
+\msg_new:nnn { postnotes } { possible-shuffle }
+ { Possible~out~of~sequence~notes~due~to~floats~\msg_line_context:. }
\cs_new_protected:Npn \__postnotes_sort_queue:N #1
{
+ \bool_if:NT \l__postnotes_sort_bool
+ {
+ \group_begin:
+ \seq_gsort:Nn #1
+ {
+ \__postnotes_prop_get:nnN {##1} { pnsectid } \l__postnotes_tmpa_tl
+ \__postnotes_prop_get:nnN {##2} { pnsectid } \l__postnotes_tmpb_tl
+ \tl_if_eq:NNTF \l__postnotes_tmpa_tl \l__postnotes_tmpb_tl
+ {
+ \__postnotes_prop_get:nnN {##1} { type } \l__postnotes_tmpa_tl
+ \__postnotes_prop_get:nnN {##2} { type } \l__postnotes_tmpb_tl
+ \bool_lazy_and:nnTF
+ { \str_if_eq_p:Vn \l__postnotes_tmpa_tl { note } }
+ { \str_if_eq_p:Vn \l__postnotes_tmpb_tl { note } }
+ {
+ \__postnotes_prop_get:nnN {##1}
+ { sortnum } \l__postnotes_tmpa_tl
+ \__postnotes_prop_get:nnN {##2}
+ { sortnum } \l__postnotes_tmpb_tl
+ \fp_compare:nNnTF
+ { \l__postnotes_tmpa_tl } > { \l__postnotes_tmpb_tl }
+ { \sort_return_swapped: }
+ { \sort_return_same: }
+ }
+ { \sort_return_same: }
+ }
+ { \sort_return_same: }
+ }
+ \group_end:
+ }
+ }
+\AddToHook { enddocument/afterlastpage }
+ {
\group_begin:
- \seq_gsort:Nn #1
+ \bool_if:NTF \g__postnotes_counteraux_bool
+ {
+ \seq_set_filter:NNn \l__postnotes_tmpa_seq \g__postnotes_labelseq_seq
+ { \str_if_eq_p:ee { \tl_item:nn {#1} { 1 } } { mark } }
+ }
+ {
+ \seq_set_filter:NNn \l__postnotes_tmpa_seq \g__postnotes_queue_seq
+ { \str_if_eq_p:ee { \__postnotes_prop_item:nn {#1} { type } } { note } }
+ }
+ \seq_if_empty:NF \l__postnotes_tmpa_seq
+ {
+ \msg_warning:nne { postnotes } { stray-notes }
+ { \seq_count:N \l__postnotes_tmpa_seq }
+ }
+ \group_end:
+ }
+\msg_new:nnn { postnotes } { stray-notes }
+ {
+ There~are~'#1'~stray~notes~after~the~last~'\iow_char:N\\printpostnotes'~
+ \msg_line_context:.~At~this~point,~they~are~lost.
+ }
+\bool_new:N \l__postnotes_deprecated_headervars_bool
+\keys_define:nn { postnotes/setup }
+ {
+ deprecatedheadervars .bool_set:N = \l__postnotes_deprecated_headervars_bool ,
+ deprecatedheadervars .default:n = true ,
+ deprecatedheadervars .initial:n = false ,
+ }
+\AddToHook { begindocument }
+ {
+ \keys_define:nn { postnotes/setup }
{
- \__postnotes_prop_get:nnN {##1} { pnsectid } \l__postnotes_tmpa_tl
- \__postnotes_prop_get:nnN {##2} { pnsectid } \l__postnotes_tmpb_tl
- \tl_if_eq:NNTF \l__postnotes_tmpa_tl \l__postnotes_tmpb_tl
+ deprecatedheadervars .code:n =
{
- \__postnotes_prop_get:nnN {##1} { type } \l__postnotes_tmpa_tl
- \__postnotes_prop_get:nnN {##2} { type } \l__postnotes_tmpb_tl
- \bool_lazy_and:nnTF
- { \str_if_eq_p:Vn \l__postnotes_tmpa_tl { note } }
- { \str_if_eq_p:Vn \l__postnotes_tmpb_tl { note } }
- {
- \__postnotes_prop_get:nnN {##1} { sortnum } \l__postnotes_tmpa_tl
- \__postnotes_prop_get:nnN {##2} { sortnum } \l__postnotes_tmpb_tl
- \fp_compare:nNnTF
- { \l__postnotes_tmpa_tl } > { \l__postnotes_tmpb_tl }
- { \sort_return_swapped: }
- { \sort_return_same: }
- }
- { \sort_return_same: }
- }
- { \sort_return_same: }
+ \msg_warning:nnn { postnotes }
+ { option-preamble-only } { deprecatedheadervars }
+ } ,
}
- \group_end:
}
\tl_new:N \pnhdpagefirst
\tl_new:N \pnhdpagelast
@@ -790,286 +1284,212 @@
\tl_new:N \pnhdsectlast
\tl_new:N \pnhdnamefirst
\tl_new:N \pnhdnamelast
-\prop_new:N \g__postnotes_header_page_first_prop
-\prop_new:N \g__postnotes_header_page_last_prop
-\prop_new:N \g__postnotes_header_chap_first_prop
-\prop_new:N \g__postnotes_header_chap_last_prop
-\prop_new:N \g__postnotes_header_sect_first_prop
-\prop_new:N \g__postnotes_header_sect_last_prop
-\prop_new:N \g__postnotes_header_name_first_prop
-\prop_new:N \g__postnotes_header_name_last_prop
-\tl_new:N \g__postnotes_header_prev_last_page_tl
-\tl_new:N \g__postnotes_header_prev_last_chap_tl
-\tl_new:N \g__postnotes_header_prev_last_sect_tl
-\tl_new:N \g__postnotes_header_prev_last_name_tl
-\tl_new:N \l__postnotes_prev_text_page_tl
-\tl_new:N \l__postnotes_curr_text_page_tl
-\tl_new:N \l__postnotes_prev_mark_page_tl
-\tl_new:N \l__postnotes_prev_mark_chap_tl
-\tl_new:N \l__postnotes_prev_mark_sect_tl
-\tl_new:N \l__postnotes_prev_mark_name_tl
-\cs_new_protected:Npn \__postnotes_get_headers_data:N #1
+\tl_gset:Nn \pnhdpagefirst
+ { \msg_error:nnn { postnotes } { deprecatedheadervars } { pnhdpagefirst } }
+\tl_gset:Nn \pnhdpagelast
+ { \msg_error:nnn { postnotes } { deprecatedheadervars } { pnhdpagelast } }
+\tl_gset:Nn \pnhdchapfirst
+ { \msg_error:nnn { postnotes } { deprecatedheadervars } { pnhdchapfirst } }
+\tl_gset:Nn \pnhdchaplast
+ { \msg_error:nnn { postnotes } { deprecatedheadervars } { pnhdchaplast } }
+\tl_gset:Nn \pnhdsectfirst
+ { \msg_error:nnn { postnotes } { deprecatedheadervars } { pnhdsectfirst } }
+\tl_gset:Nn \pnhdsectlast
+ { \msg_error:nnn { postnotes } { deprecatedheadervars } { pnhdsectlast } }
+\tl_gset:Nn \pnhdnamefirst
+ { \msg_error:nnn { postnotes } { deprecatedheadervars } { pnhdnamefirst } }
+\tl_gset:Nn \pnhdnamelast
+ { \msg_error:nnn { postnotes } { deprecatedheadervars } { pnhdnamelast } }
+\msg_new:nnn { postnotes } { deprecatedheadervars }
{
- \group_begin:
- \tl_gclear:N \pnhdpagefirst
- \tl_gclear:N \pnhdpagelast
- \tl_gclear:N \pnhdchapfirst
- \tl_gclear:N \pnhdchaplast
- \tl_gclear:N \pnhdsectfirst
- \tl_gclear:N \pnhdsectlast
- \tl_gclear:N \pnhdnamefirst
- \tl_gclear:N \pnhdnamelast
- \prop_gclear:N \g__postnotes_header_page_first_prop
- \prop_gclear:N \g__postnotes_header_page_last_prop
- \prop_gclear:N \g__postnotes_header_chap_first_prop
- \prop_gclear:N \g__postnotes_header_chap_last_prop
- \prop_gclear:N \g__postnotes_header_sect_first_prop
- \prop_gclear:N \g__postnotes_header_sect_last_prop
- \prop_gclear:N \g__postnotes_header_name_first_prop
- \prop_gclear:N \g__postnotes_header_name_last_prop
- \tl_gclear:N \g__postnotes_header_prev_last_page_tl
- \tl_gclear:N \g__postnotes_header_prev_last_chap_tl
- \tl_gclear:N \g__postnotes_header_prev_last_sect_tl
- \tl_gclear:N \g__postnotes_header_prev_last_name_tl
- \tl_clear:N \l__postnotes_prev_text_page_tl
- \tl_clear:N \l__postnotes_curr_text_page_tl
- \tl_clear:N \l__postnotes_prev_mark_page_tl
- \tl_clear:N \l__postnotes_prev_mark_chap_tl
- \tl_clear:N \l__postnotes_prev_mark_sect_tl
- \tl_clear:N \l__postnotes_prev_mark_name_tl
- \seq_map_inline:Nn #1
- {
- \exp_args:Ne \tl_if_eq:nnT
- { \__postnotes_prop_item:nn {##1} { type } }
- { note }
+ '\iow_char:N\\ #1'~is~deprecated~\msg_line_context:.~
+ You~should~migrate~to~the~new~'ltmarks'~(see~User~manual),~but~for~
+ a~temporary~quick~fix~you~can~enable~the~'deprecatedheadervars'~option.
+ }
+\cs_set_eq:NN \__postnotes_set_header_vars_first: \prg_do_nothing:
+\cs_set_eq:NN \__postnotes_set_header_vars_bool: \prg_do_nothing:
+\AddToHook { begindocument }
+ {
+ \bool_if:NT \l__postnotes_deprecated_headervars_bool
+ {
+ \property_new:nnnn { postnotes/page/first } { shipout } { }
+ { \FirstMark { postnotes/page } }
+ \property_new:nnnn { postnotes/page/last } { shipout } { }
+ { \LastMark { postnotes/page } }
+ \property_new:nnnn { postnotes/chapter/first } { shipout } { }
+ { \FirstMark { postnotes/chapter } }
+ \property_new:nnnn { postnotes/chapter/last } { shipout } { }
+ { \LastMark { postnotes/chapter } }
+ \property_new:nnnn { postnotes/section/first } { shipout } { }
+ { \FirstMark { postnotes/section } }
+ \property_new:nnnn { postnotes/section/last } { shipout } { }
+ { \LastMark { postnotes/section } }
+ \property_new:nnnn { postnotes/sectname/first } { shipout } { }
+ { \FirstMark { postnotes/sectname } }
+ \property_new:nnnn { postnotes/sectname/last } { shipout } { }
+ { \LastMark { postnotes/sectname } }
+ \clist_const:Nn \c__postnotes_header_marks_clist
+ {
+ postnotes/page/first ,
+ postnotes/page/last ,
+ postnotes/chapter/first ,
+ postnotes/chapter/last ,
+ postnotes/section/first ,
+ postnotes/section/last ,
+ postnotes/sectname/first ,
+ postnotes/sectname/last ,
+ }
+ \cs_new_protected:Npn \__postnotes_set_header_vars:n #1
{
- \__postnotes_get_pageref:Nn
- \l__postnotes_curr_text_page_tl { text@ ##1 }
- \tl_if_empty:NF \l__postnotes_curr_text_page_tl
+ \group_begin:
+ \protected@xdef \pnhdpagefirst
+ { \property_ref:nn { #1 } { postnotes/page/first } }
+ \protected@xdef \pnhdpagelast
+ { \property_ref:nn { #1 } { postnotes/page/last } }
+ \protected@xdef \pnhdchapfirst
+ { \property_ref:nn { #1 } { postnotes/chapter/first } }
+ \protected@xdef \pnhdchaplast
+ { \property_ref:nn { #1 } { postnotes/chapter/last } }
+ \protected@xdef \pnhdsectfirst
+ { \property_ref:nn { #1 } { postnotes/section/first } }
+ \protected@xdef \pnhdsectlast
+ { \property_ref:nn { #1 } { postnotes/section/last } }
+ \protected@xdef \pnhdnamefirst
+ { \property_ref:nn { #1 } { postnotes/sectname/first } }
+ \protected@xdef \pnhdnamelast
+ { \property_ref:nn { #1 } { postnotes/sectname/last } }
+ \group_end:
+ }
+ \cs_generate_variant:Nn \__postnotes_set_header_vars:n { e }
+ \bool_new:N \g__postnotes_header_vars_next_bool
+ \int_new:N \g__postnotes_print_header_vars_int
+ \cs_new_protected:Npn \__postnotes_set_headers_vars_next:
+ {
+ \bool_if:NT \g__postnotes_header_vars_next_bool
{
- \tl_if_eq:NNTF
- \l__postnotes_prev_text_page_tl
- \l__postnotes_curr_text_page_tl
+ \int_gincr:N \g__postnotes_print_header_vars_int
+ \exp_args:Ne \property_record:nN
{
- \__postnotes_get_pageref:Nn
- \l__postnotes_prev_mark_page_tl { mark@ ##1 }
- \__postnotes_prop_get:nnN {##1} { thechapter }
- \l__postnotes_prev_mark_chap_tl
- \__postnotes_prop_get:nnN {##1} { thesection }
- \l__postnotes_prev_mark_sect_tl
- \__postnotes_prop_get:nnN {##1} { pnsectname }
- \l__postnotes_prev_mark_name_tl
+ __postnotes_header_
+ \int_use:N \g__postnotes_print_header_vars_int
}
+ \c__postnotes_header_marks_clist
+ \__postnotes_set_header_vars:e
{
- \tl_if_empty:NF \l__postnotes_prev_text_page_tl
- {
- \prop_gput:Nee \g__postnotes_header_page_last_prop
- { \l__postnotes_prev_text_page_tl }
- { \l__postnotes_prev_mark_page_tl }
- \prop_gput:Nee \g__postnotes_header_chap_last_prop
- { \l__postnotes_prev_text_page_tl }
- { \l__postnotes_prev_mark_chap_tl }
- \prop_gput:Nee \g__postnotes_header_sect_last_prop
- { \l__postnotes_prev_text_page_tl }
- { \l__postnotes_prev_mark_sect_tl }
- \prop_gput:Nee \g__postnotes_header_name_last_prop
- { \l__postnotes_prev_text_page_tl }
- { \l__postnotes_prev_mark_name_tl }
- }
- \prop_gput:Nee \g__postnotes_header_page_first_prop
- { \l__postnotes_curr_text_page_tl }
- { \__postnotes_extract_pageref:n { mark@ ##1 } }
- \prop_gput:Nee \g__postnotes_header_chap_first_prop
- { \l__postnotes_curr_text_page_tl }
- { \__postnotes_prop_item:nn {##1} { thechapter } }
- \prop_gput:Nee \g__postnotes_header_sect_first_prop
- { \l__postnotes_curr_text_page_tl }
- { \__postnotes_prop_item:nn {##1} { thesection } }
- \prop_gput:Nee \g__postnotes_header_name_first_prop
- { \l__postnotes_curr_text_page_tl }
- { \__postnotes_prop_item:nn {##1} { pnsectname } }
- \__postnotes_get_pageref:Nn
- \l__postnotes_prev_mark_page_tl { mark@ ##1 }
- \__postnotes_prop_get:nnN {##1} { thechapter }
- \l__postnotes_prev_mark_chap_tl
- \__postnotes_prop_get:nnN {##1} { thesection }
- \l__postnotes_prev_mark_sect_tl
- \__postnotes_prop_get:nnN {##1} { pnsectname }
- \l__postnotes_prev_mark_name_tl
- \tl_set:NV \l__postnotes_prev_text_page_tl
- \l__postnotes_curr_text_page_tl
+ __postnotes_header_
+ \int_use:N \g__postnotes_print_header_vars_int
}
}
}
- }
- \tl_if_empty:NF \l__postnotes_prev_text_page_tl
- {
- \prop_gput:Nee \g__postnotes_header_page_last_prop
- { \l__postnotes_prev_text_page_tl }
- { \l__postnotes_prev_mark_page_tl }
- \prop_gput:Nee \g__postnotes_header_chap_last_prop
- { \l__postnotes_prev_text_page_tl }
- { \l__postnotes_prev_mark_chap_tl }
- \prop_gput:Nee \g__postnotes_header_sect_last_prop
- { \l__postnotes_prev_text_page_tl }
- { \l__postnotes_prev_mark_sect_tl }
- \prop_gput:Nee \g__postnotes_header_name_last_prop
- { \l__postnotes_prev_text_page_tl }
- { \l__postnotes_prev_mark_name_tl }
- }
- \group_end:
- }
-\cs_new_protected:Npn \__postnotes_set_headers_vars:n #1
- {
- \group_begin:
- \prop_get:NnNTF \g__postnotes_header_page_first_prop
- {#1} \l__postnotes_tmpa_tl
- { \tl_gset:NV \pnhdpagefirst \l__postnotes_tmpa_tl }
- { \tl_gset:NV \pnhdpagefirst \g__postnotes_header_prev_last_page_tl }
- \prop_get:NnNTF \g__postnotes_header_page_last_prop
- {#1} \l__postnotes_tmpa_tl
- {
- \tl_gset:NV \pnhdpagelast \l__postnotes_tmpa_tl
- \tl_gset:NV \g__postnotes_header_prev_last_page_tl
- \l__postnotes_tmpa_tl
- }
- { \tl_gset:NV \pnhdpagelast \g__postnotes_header_prev_last_page_tl }
- \prop_get:NnNTF \g__postnotes_header_chap_first_prop
- {#1} \l__postnotes_tmpa_tl
- { \tl_gset:NV \pnhdchapfirst \l__postnotes_tmpa_tl }
- { \tl_gset:NV \pnhdchapfirst \g__postnotes_header_prev_last_chap_tl }
- \prop_get:NnNTF \g__postnotes_header_chap_last_prop
- {#1} \l__postnotes_tmpa_tl
- {
- \tl_gset:NV \pnhdchaplast \l__postnotes_tmpa_tl
- \tl_gset:NV \g__postnotes_header_prev_last_chap_tl
- \l__postnotes_tmpa_tl
- }
- { \tl_gset:NV \pnhdchaplast \g__postnotes_header_prev_last_chap_tl }
- \prop_get:NnNTF \g__postnotes_header_sect_first_prop
- {#1} \l__postnotes_tmpa_tl
- { \tl_gset:NV \pnhdsectfirst \l__postnotes_tmpa_tl }
- { \tl_gset:NV \pnhdsectfirst \g__postnotes_header_prev_last_sect_tl }
- \prop_get:NnNTF \g__postnotes_header_sect_last_prop
- {#1} \l__postnotes_tmpa_tl
- {
- \tl_gset:NV \pnhdsectlast \l__postnotes_tmpa_tl
- \tl_gset:NV \g__postnotes_header_prev_last_sect_tl
- \l__postnotes_tmpa_tl
- }
- { \tl_gset:NV \pnhdsectlast \g__postnotes_header_prev_last_sect_tl }
- \prop_get:NnNTF \g__postnotes_header_name_first_prop
- {#1} \l__postnotes_tmpa_tl
- { \tl_gset:NV \pnhdnamefirst \l__postnotes_tmpa_tl }
- { \tl_gset:NV \pnhdnamefirst \g__postnotes_header_prev_last_name_tl }
- \prop_get:NnNTF \g__postnotes_header_name_last_prop
- {#1} \l__postnotes_tmpa_tl
- {
- \tl_gset:NV \pnhdnamelast \l__postnotes_tmpa_tl
- \tl_gset:NV \g__postnotes_header_prev_last_name_tl
- \l__postnotes_tmpa_tl
- }
- { \tl_gset:NV \pnhdnamelast \g__postnotes_header_prev_last_name_tl }
- \group_end:
- }
-\cs_generate_variant:Nn \__postnotes_set_headers_vars:n { e }
-\AddToHook { shipout/before } [ postnotes/header ]
- { \__postnotes_set_headers_vars_next: }
-\bool_new:N \g__postnotes_header_vars_next_bool
-\cs_new_protected:Npn \__postnotes_set_headers_vars_next:
- {
- \bool_if:NT \g__postnotes_header_vars_next_bool
- { \__postnotes_set_headers_vars:e { \int_eval:n { \c@page + 1 } } }
- }
-\cs_new_protected:Npn \__postnotes_set_headers_vars_first:
- {
- \__postnotes_set_print_page_label:e
- { \int_use:N \g__postnotes_print_postnotes_int }
- \__postnotes_set_headers_vars:e
- {
- \__postnotes_extract_pageref:e
- { print@ \int_use:N \g__postnotes_print_postnotes_int }
+ \AddToHook { shipout/before } [ ./header ]
+ { \__postnotes_set_headers_vars_next: }
+ \cs_set_protected:Npn \__postnotes_set_header_vars_first:
+ {
+ \bool_gset_true:N \g__postnotes_header_vars_next_bool
+ \tl_gset:Nn \pnhdpagefirst { \FirstMark{postnotes/page} }
+ \tl_gset:Nn \pnhdpagelast { \LastMark{postnotes/page} }
+ \tl_gset:Nn \pnhdchapfirst { \FirstMark{postnotes/chapter} }
+ \tl_gset:Nn \pnhdchaplast { \LastMark{postnotes/chapter} }
+ \tl_gset:Nn \pnhdsectfirst { \FirstMark{postnotes/section} }
+ \tl_gset:Nn \pnhdsectlast { \LastMark{postnotes/section} }
+ \tl_gset:Nn \pnhdnamefirst { \FirstMark{postnotes/sectname} }
+ \tl_gset:Nn \pnhdnamelast { \LastMark{postnotes/sectname} }
+ \int_gincr:N \g__postnotes_print_header_vars_int
+ \exp_args:Ne \property_record:nN
+ {
+ __postnotes_header_
+ \int_use:N \g__postnotes_print_header_vars_int
+ }
+ \c__postnotes_header_marks_clist
+ \__postnotes_set_header_vars:e
+ {
+ __postnotes_header_
+ \int_use:N \g__postnotes_print_header_vars_int
+ }
+ }
+ \cs_set_protected:Npn \__postnotes_set_header_vars_bool:
+ {
+ \AddToHookNext { shipout/after }
+ { \bool_gset_false:N \g__postnotes_header_vars_next_bool }
+ }
}
}
-\NewDocumentCommand \pnheaderdefault {}
- {
- \tl_if_eq:NNTF \pnhdpagefirst \pnhdpagelast
- { \pnhdnotes{} ~ \pnhdtopage{} ~ \pnhdpagefirst }
- { \pnhdnotes{} ~ \pnhdtopages{} ~ \pnhdpagefirst -- \pnhdpagelast }
- }
\tl_new:N \l__postnotes_restore_tmp_tl
-\AddToHook { postnotes/note/begin } [ postnotes ]
- {
- \cs_if_exist:NT \@captype
- { \bool_set_true:N \l__postnotes_maybe_multi_bool }
- }
-\AddToHook { package/biblatex/after }
+\AddToHook { postnotes/note/begin } [ ./compat/caption ]
+ { \cs_if_exist:NT \@captype { \postnotesetup { maybemulti } } }
+\AddToHook { package/biblatex/after } [ ./compat/biblatex ]
{
- \AddToHook { postnotes/print/begin } [ postnotes ]
+ \AddToHook { postnotes/print/begin } [ postnotes/compat/biblatex ]
{ \toggletrue { blx@footnote } }
- \AddToHook { begindocument/before } [ postnotes/mkbibendnote ]
+ \AddToHook { begindocument/before } [ postnotes/compat/biblatex ]
{
\cs_set:Npn \blx@theendnote { \postnote }
- \cs_set:Npn \blx@theendnotetext
- { \blx@err@endnote \footnotetext }
+ \cs_set:Npn \blx@theendnotetext { \blx@err@endnote \footnotetext }
}
}
-\tl_new:N \l__postnotes_note_zlabel_tl
-\AddToHook { package/zref-user/after }
+\str_new:N \l__postnotes_note_zlabel_str
+\AddToHook { package/zref-user/after } [ ./compat/zref-user ]
{
\keys_define:nn { postnotes/note }
{
- zlabel .tl_set:N = \l__postnotes_note_zlabel_tl ,
+ zlabel .str_set:N = \l__postnotes_note_zlabel_str ,
zlabel .value_required:n = true ,
}
+ \zref@newprop { postnote@mark } [] { \l__postnotes_mark_tl }
+ \AddToHook { postnotes/note/begin } [ postnotes/compat/zref-user ]
+ { \zref@localaddprop { main } { postnote@mark } }
\NewDocumentCommand \postnotezref { s m }
{ \__postnotes_note_zref:nn {#1} {#2} }
+ \str_new:N \l__postnotes_note_zref_zlabel_str
\cs_new_protected:Npn \__postnotes_note_zref:nn #1#2
{
\group_begin:
- \__postnotes_typeset_mark_wrapper:n
- {
- \bool_lazy_all:nTF
- {
- { ! #1 }
- { \l__postnotes_hyperlink_bool }
- { \l__postnotes_zrefhyperref_bool }
- }
- {
- \hyperlink
- { \zref@extractdefault {#2} { anchor } { } }
- { \__postnotes_make_mark:nnn { \zref{#2} } { } { } }
- }
- { \__postnotes_make_mark:nnn { \zref{#2} } { } { } }
- }
+ \str_set:Nn \l__postnotes_note_zref_zlabel_str {#2}
+ \__postnotes_typeset_mark_wrapper:nnn
+ {
+ \bool_lazy_all:nTF
+ {
+ { ! #1 }
+ { \l__postnotes_hyperlink_bool }
+ { \l__postnotes_zrefhyperref_bool }
+ }
+ {
+ \hyperlink
+ { \zref@extractdefault {#2} { anchor } { } }
+ { \__postnotes_make_mark:nnn { \zref{#2} } { } { } }
+ }
+ { \__postnotes_make_mark:nnn { \zref{#2} } { } { } }
+ }
+ { \tag_socket_use:n { postnotes/postnotezref/begin } }
+ { \tag_socket_use:n { postnotes/postnotezref/end } }
\group_end:
}
}
\bool_new:N \l__postnotes_zrefhyperref_bool
-\AddToHook { package/zref-hyperref/after }
+\AddToHook { package/zref-hyperref/after } [ ./compat/zref-hyperref ]
{ \bool_set_true:N \l__postnotes_zrefhyperref_bool }
-\AddToHook { package/zref-clever/after }
+\AddToHook { package/zref-clever/after } [ ./compat/zref-clever ]
{
\zcsetup
{
countertype = { postnote = endnote } ,
countertype = { postnotetext = endnote } ,
}
- \AddToHook { postnotes/print/begin } [ postnotes ]
+ \AddToHook { postnotes/print/begin } [ postnotes/compat/zref-clever ]
{ \zcsetup { counterresetby = { postnotetext = postnotesection } } }
}
-\AddToHook { package/zref-check/after }
+\AddToHook { package/zref-check/after } [ ./compat/zref-check ]
{
\IfPackageAtLeastTF { zref-check } { 2022-07-05 }
{
- \AddToHook { postnotes/note/store } [ postnotes ]
+ \AddToHook { postnotes/note/store } [ postnotes/compat/zref-check ]
{
\prop_gput:cne { \__postnotes_data_name:e { \l_postnotes_note_id_tl } }
{ zref-check@abschap } { \int_use:N \c@zc@abschap }
\prop_gput:cne { \__postnotes_data_name:e { \l_postnotes_note_id_tl } }
{ zref-check@abssec } { \int_use:N \c@zc@abssec }
}
- \AddToHook { postnotes/print/note/begin } [ postnotes ]
+ \AddToHook { postnotes/print/note/begin } [ postnotes/compat/zref-check ]
{
\__postnotes_prop_get:nnN { \l_postnotes_print_note_id_tl }
{ zref-check@abschap } \l__postnotes_restore_tmp_tl
@@ -1081,9 +1501,9 @@
}
{ }
}
-\AddToHook { package/amsmath/after }
+\AddToHook { package/amsmath/after } [ ./compat/amsmath ]
{
- \AddToHook { postnotes/note/inhibit } [ postnotes ]
+ \AddToHook { postnotes/note/inhibit } [ postnotes/compat/amsmath ]
{
\legacy_if:nT { measuring@ }
{
@@ -1092,18 +1512,15 @@
\bool_set_true:N \l__postnotes_print_plain_mark_stepcounter_bool
}
}
- \AddToHook { postnotes/note/begin } [ postnotes ]
- {
- \legacy_if:nF { firstchoice@ }
- { \bool_set_true:N \l__postnotes_maybe_multi_bool }
- }
+ \AddToHook { postnotes/note/begin } [ postnotes/compat/amsmath ]
+ { \legacy_if:nF { firstchoice@ } { \postnotesetup { maybemulti } } }
}
-\AddToHook { package/csquotes/after }
+\AddToHook { package/csquotes/after } [ ./compat/csquotes ]
{
\bool_new:N \l__postnotes_csquotes_measuring_bool
\BlockquoteDisable
{ \bool_set_true:N \l__postnotes_csquotes_measuring_bool }
- \AddToHook { postnotes/note/inhibit } [ postnotes ]
+ \AddToHook { postnotes/note/inhibit } [ postnotes/compat/csquotes ]
{
\bool_if:NT \l__postnotes_csquotes_measuring_bool
{
@@ -1113,15 +1530,15 @@
}
}
}
-\AddToHook { package/tabularx/after }
+\AddToHook { package/tabularx/after } [ ./compat/tabularx ]
{
\bool_new:N \l__postnotes_tabularx_inside_env_bool
- \AddToHook { env/tabularx/begin } [ postnotes ]
+ \AddToHook { env/tabularx/begin } [ postnotes/compat/tabularx ]
{
\bool_set_true:N \l__postnotes_tabularx_inside_env_bool
\cs_set_eq:NN \__postnotes_tabularx_saved_write:Nn \write
}
- \AddToHook { postnotes/note/inhibit } [ postnotes ]
+ \AddToHook { postnotes/note/inhibit } [ postnotes/compat/tabularx ]
{
\bool_lazy_and:nnT
{ \l__postnotes_tabularx_inside_env_bool }
@@ -1132,12 +1549,20 @@
\bool_set_true:N \l__postnotes_print_plain_mark_stepcounter_bool
}
}
+ \AddToHook { package/xltabular/after } [ postnotes/compat/xltabular ]
+ {
+ \AddToHook { env/xltabular/begin } [ postnotes/compat/xltabular ]
+ {
+ \bool_set_true:N \l__postnotes_tabularx_inside_env_bool
+ \cs_set_eq:NN \__postnotes_tabularx_saved_write:Nn \write
+ }
+ }
}
-\AddToHook { package/tabularray/after }
+\AddToHook { package/tabularray/after } [ ./compat/tabularray ]
{
- \bool_if_exist:NTF \lTblrMeasuringBool
+ \bool_if_exist:NT \lTblrMeasuringBool
{
- \AddToHook { postnotes/note/inhibit } [ postnotes ]
+ \AddToHook { postnotes/note/inhibit } [ postnotes/compat/tabularray ]
{
\bool_if:NT \lTblrMeasuringBool
{
@@ -1147,16 +1572,428 @@
}
}
}
+ }
+\socket_new:nn { tagsupport/postnotes/mark/begin }{ 0 }
+\socket_new:nn { tagsupport/postnotes/mark/end }{ 0 }
+\socket_new:nn { tagsupport/postnotes/nomark/begin }{ 0 }
+\socket_new:nn { tagsupport/postnotes/nomark/end }{ 0 }
+\socket_new:nn { tagsupport/postnotes/multisep/begin }{ 0 }
+\socket_new:nn { tagsupport/postnotes/multisep/end }{ 0 }
+\socket_new:nn { tagsupport/postnotes/printlist/begin }{ 0 }
+\socket_new:nn { tagsupport/postnotes/printlist/end }{ 0 }
+\socket_new:nn { tagsupport/postnotes/printnote/begin }{ 0 }
+\socket_new:nn { tagsupport/postnotes/printnote/end }{ 0 }
+\socket_new:nn { tagsupport/postnotes/printmark/begin }{ 0 }
+\socket_new:nn { tagsupport/postnotes/printmark/end }{ 0 }
+\socket_new:nn { tagsupport/postnotes/printtext/begin }{ 0 }
+\socket_new:nn { tagsupport/postnotes/printtext/end }{ 0 }
+\socket_new:nn { tagsupport/postnotes/postnoteref/begin }{ 0 }
+\socket_new:nn { tagsupport/postnotes/postnoteref/end }{ 0 }
+\socket_new:nn { tagsupport/postnotes/postnotezref/begin }{ 0 }
+\socket_new:nn { tagsupport/postnotes/postnotezref/end }{ 0 }
+\bool_lazy_and:nnT
+ { \cs_if_exist_p:N \tag_if_active_p: }
+ { \tag_if_active_p: }
+ {
+ \tagpdfsetup
+ {
+ role/new-tag = { tag=endnote, role=FENote } ,
+ role/new-tag = { tag=endnotemark, role=Lbl } ,
+ role/new-tag = { tag=endnotelabel, role=Lbl } ,
+ role/new-attribute =
+ { EndnoteType } { /O /FENote /NoteType /Endnote } ,
+ role/new-attribute =
+ { EndnotesList } { /O /List /ListNumbering /Ordered } ,
+ }
+ \socket_new_plug:nnn { tagsupport/postnotes/mark/begin } { default }
+ {
+ \tag_mc_end_push:
+ \tag_struct_begin:n
+ {
+ tag = endnotemark ,
+ label = { postnotemark. \l_postnotes_note_id_tl } ,
+ ref = { postnote. \l_postnotes_note_id_tl } ,
+ }
+ \__postnotes_tagsup_store_sctructnum:nN
+ { postnotemark } \l_postnotes_note_id_tl
+ \tag_mc_begin:n { }
+ }
+ \socket_new_plug:nnn { tagsupport/postnotes/mark/end } { default }
+ {
+ \tag_mc_end:
+ \tag_struct_end: % endnotemark
+ \tag_mc_begin_pop:n { }
+ }
+ \socket_new_plug:nnn { tagsupport/postnotes/nomark/begin } { default }
{
- \clist_map_inline:nn
+ \tag_struct_begin:n
{
- tblr , longtblr , talltblr , booktabs ,
- longtabs , talltabs , +array
+ tag = NonStruct ,
+ label = { postnotemark. \l_postnotes_note_id_tl } ,
+ ref = { postnote. \l_postnotes_note_id_tl } ,
+ }
+ \__postnotes_tagsup_store_sctructnum:nN
+ { postnotemark } \l_postnotes_note_id_tl
+ }
+ \socket_new_plug:nnn { tagsupport/postnotes/nomark/end } { default }
+ { \tag_struct_end: } % NonStruct
+ \socket_assign_plug:nn { tagsupport/postnotes/mark/begin } { default }
+ \socket_assign_plug:nn { tagsupport/postnotes/mark/end } { default }
+ \socket_assign_plug:nn { tagsupport/postnotes/nomark/begin } { default }
+ \socket_assign_plug:nn { tagsupport/postnotes/nomark/end } { default }
+ \socket_new_plug:nnn { tagsupport/postnotes/multisep/begin } { default }
+ {
+ \tag_mc_end_push:
+ \tag_mc_begin:n { artifact }
+ }
+ \socket_new_plug:nnn { tagsupport/postnotes/multisep/end } { default }
+ {
+ \tag_mc_end:
+ \tag_mc_begin_pop:n { }
+ }
+ \socket_assign_plug:nn { tagsupport/postnotes/multisep/begin } { default }
+ \socket_assign_plug:nn { tagsupport/postnotes/multisep/end } { default }
+ \socket_new_plug:nnn { tagsupport/postnotes/printlist/begin } { default }
+ { \tag_tool:n { para/tagging=false } }
+ \socket_new_plug:nnn { tagsupport/postnotes/printlist/end } { default }
+ { }
+ \socket_assign_plug:nn { tagsupport/postnotes/printlist/begin } { default }
+ \socket_assign_plug:nn { tagsupport/postnotes/printlist/end } { default }
+ \socket_new_plug:nnn { tagsupport/postnotes/printnote/begin } { default }
+ {
+ \bool_if:NF \l__postnotes_print_as_list_bool
+ {
+ \tag_struct_begin:n
+ {
+ tag = endnote ,
+ attribute-class = EndnoteType ,
+ label = { postnote. \l_postnotes_print_note_id_tl } ,
+ ref = { postnotemark. \l_postnotes_print_note_id_tl } ,
+ }
+ \__postnotes_tagsup_store_sctructnum:nN
+ { postnote } \l_postnotes_print_note_id_tl
+ }
+ }
+ \socket_new_plug:nnn { tagsupport/postnotes/printnote/end } { default }
+ {
+ \bool_if:NF \l__postnotes_print_as_list_bool
+ { \tag_struct_end: } % endnote
+ }
+ \socket_assign_plug:nn { tagsupport/postnotes/printnote/begin } { default }
+ \socket_assign_plug:nn { tagsupport/postnotes/printnote/end } { default }
+ \socket_new_plug:nnn { tagsupport/postnotes/printmark/begin } { default }
+ {
+ \bool_if:NF \l__postnotes_print_as_list_bool
+ {
+ \tag_struct_begin:n { tag=endnotelabel }
+ \tag_mc_begin:n { tag=Lbl }
+ }
+ }
+ \socket_new_plug:nnn { tagsupport/postnotes/printmark/end } { default }
+ {
+ \bool_if:NF \l__postnotes_print_as_list_bool
+ {
+ \tag_mc_end:
+ \tag_struct_end: % endnotelabel
+ }
+ }
+ \socket_assign_plug:nn { tagsupport/postnotes/printmark/begin } { default }
+ \socket_assign_plug:nn { tagsupport/postnotes/printmark/end } { default }
+ \socket_new_plug:nnn { tagsupport/postnotes/printtext/begin } { default }
+ {
+ \bool_if:NTF \l__postnotes_print_as_list_bool
+ {
+ \tag_struct_begin:n
+ {
+ tag = endnote ,
+ attribute-class = EndnoteType ,
+ label = { postnote. \l_postnotes_print_note_id_tl } ,
+ ref = { postnotemark. \l_postnotes_print_note_id_tl } ,
+ }
+ \__postnotes_tagsup_store_sctructnum:nN
+ { postnote } \l_postnotes_print_note_id_tl
+ \tag_struct_begin:n { tag=text-unit }
+ \tag_struct_begin:n { tag=text }
+ \tag_tool:n { para/tagging=true }
+ \tag_mc_begin:n { }
+ }
+ {
+ \tag_struct_begin:n { tag=text-unit }
+ \tag_struct_begin:n { tag=text }
+ \tag_tool:n { para/tagging=true }
+ \tag_mc_begin:n { }
+ }
+ }
+ \socket_new_plug:nnn { tagsupport/postnotes/printtext/end } { default }
+ {
+ \bool_if:NTF \l__postnotes_print_as_list_bool
+ {
+ \tag_mc_end:
+ \tag_tool:n { para/tagging=false }
+ \tag_struct_end: % text
+ \tag_struct_end: % text-unit
+ \tag_struct_end: % endnote
+ }
+ {
+ \tag_mc_end:
+ \tag_tool:n { para/tagging=false }
+ \tag_struct_end: % text
+ \tag_struct_end: % text-unit
+ }
+ }
+ \socket_assign_plug:nn { tagsupport/postnotes/printtext/begin } { default }
+ \socket_assign_plug:nn { tagsupport/postnotes/printtext/end } { default }
+ \IfInstanceExistsT { blockenv } { list }
+ {
+ \DeclareInstance { blockenv } { postnoteslist } { display }
+ {
+ env-name = postnoteslist ,
+ tag-name = L ,
+ tag-class = EndnotesList ,
+ tagging-recipe = list ,
+ inner-level-counter = ,
+ level-increase = true ,
+ setup-code = ,
+ block-instance = list ,
+ inner-instance = postnoteslist ,
+ }
+ \DeclareInstanceCopy { blockenv }
+ { postnoteslisthang } { postnoteslist }
+ \EditInstance { blockenv } { postnoteslisthang }
+ { env-name = postnoteslisthang }
+ \DeclareInstance { list } { postnoteslist } { std }
+ { item-instance = postnoteslist }
+ \DeclareInstance { item } { postnoteslist } { std }
+ {
+ label-format = { \hspace { \labelsep } \normalfont ~ #1 } ,
+ label-align = left ,
+ }
+ \RenewDocumentEnvironment { postnoteslist } { }
+ {
+ \UseInstance { blockenv } { postnoteslist }
+ {
+ leftmargin = 0pt ,
+ label-width = 0pt ,
+ item-indent = .5\parindent ,
+ rightmargin = 0pt ,
+ parindent = \parindent ,
+ par-skip = \parskip ,
+ item-skip = 0pt ,
+ beginsep = .5\topsep ,
+ begin-par-skip = .5\partopsep ,
+ }
+ }
+ { \endblockenv }
+ \RenewDocumentEnvironment { postnoteslisthang } { }
+ {
+ \UseInstance { blockenv } { postnoteslisthang }
+ {
+ leftmargin = 1em ,
+ label-width = -\leftmargin ,
+ item-indent = -2\leftmargin ,
+ rightmargin = 0pt ,
+ parindent = \parindent ,
+ par-skip = \parskip ,
+ item-skip = 0pt ,
+ beginsep = .5\topsep ,
+ begin-par-skip = .5\partopsep ,
+ }
+ }
+ { \endblockenv }
+ }
+ \bool_new:N \l__postnotes_inside_note_bool
+ \AddToHookWithArguments { label } [ postnotes/tagsup ]
+ {
+ \bool_if:NT \l__postnotes_inside_note_bool
+ {
+ \property_record:nn { postnote@label@innote. #1 }
+ { postnotes/tagsup@noteid }
+ }
+ }
+ \AddToHook { postnotes/print/note/begin } [ postnotes/tagsup ]
+ { \bool_set_true:N \l__postnotes_inside_note_bool }
+ \property_new:nnnn { postnotes/tagsup@noteid } { now } { 0 }
+ { \l_postnotes_print_note_id_tl }
+ \AddToHook { package/zref-user/after } [ postnotes/tagsup ]
+ {
+ \zref@newprop { postnotes@tagsup@noteid } [ 0 ]
+ { \l_postnotes_print_note_id_tl }
+ \AddToHook { postnotes/print/note/begin } [ postnotes/tagsup ]
+ { \zref@localaddprop { main } { postnotes@tagsup@noteid } }
+ }
+ \AddToHook { postnotes/note/store } [ postnotes/tagsup ]
+ {
+ \str_if_empty:NF \l__postnotes_note_label_str
+ {
+ \prop_gput:cnV
+ { \__postnotes_data_name:e { \l_postnotes_note_id_tl } }
+ { label } \l__postnotes_note_label_str
+ }
+ }
+ \AddToHook { package/zref-user/after } [ postnotes/tagsup ]
+ {
+ \AddToHook { postnotes/note/store } [ postnotes/tagsup ]
+ {
+ \str_if_empty:NF \l__postnotes_note_zlabel_str
+ {
+ \prop_gput:cnV
+ { \__postnotes_data_name:e { \l_postnotes_note_id_tl } }
+ { zlabel } \l__postnotes_note_zlabel_str
+ }
+ }
+ }
+ \AddToHook { postnotes/print/note/begin } [ postnotes/tagsup ]
+ {
+ \__postnotes_prop_get:nnN { \l_postnotes_print_note_id_tl }
+ { label } \l__postnotes_restore_tmp_tl
+ \tl_if_empty:NF \l__postnotes_restore_tmp_tl
+ {
+ \exp_args:Ne \property_record:nn
+ { postnote@label@option. \l__postnotes_restore_tmp_tl }
+ { postnotes/tagsup@noteid }
+ }
+ \__postnotes_prop_get:nnN { \l_postnotes_print_note_id_tl }
+ { zlabel } \l__postnotes_restore_tmp_tl
+ \tl_if_empty:NF \l__postnotes_restore_tmp_tl
+ {
+ \exp_args:Ne \property_record:nn
+ { postnote@zlabel@option. \l__postnotes_restore_tmp_tl }
+ { postnotes/tagsup@noteid }
+ }
+ }
+ \prop_new:N \g__postnotes_tagsup_structnums_prop
+ \cs_new_protected:Npn \__postnotes_tagsup_store_sctructnum:nN #1#2
+ {
+ \prop_gput:Nee \g__postnotes_tagsup_structnums_prop
+ { #1 . #2 } { \tag_get:n { struct_num } }
+ }
+ \prop_new:N \g__postnotes_tagsup_crossrefs_prop
+ \cs_new_protected:Npn \__postnotes_tagsup_store_crossref:nN #1#2
+ {
+ \prop_gput:Nee \g__postnotes_tagsup_crossrefs_prop
+ { \tag_get:n { struct_num } } { #1 . #2 }
+ }
+ \cs_new_protected:Npn \__postnotes_tagsup_gput_ref:nn #1#2
+ {
+ \tag_if_active:T
+ { \tag_struct_gput:ene {#1} {ref} { \tag_struct_object_ref:e {#2} } }
+ }
+ \AddToHook { tagpdf/finish/before } [ postnotes/tagsup ]
+ {
+ \prop_map_inline:Nn \g__postnotes_tagsup_crossrefs_prop
+ {
+ \__postnotes_tagsup_gput_ref:nn
+ { \prop_item:Nn \g__postnotes_tagsup_structnums_prop {#2} }
+ {#1}
+ }
+ }
+ \socket_new_plug:nnn { tagsupport/postnotes/postnoteref/begin } { default }
+ {
+ \tag_mc_end_push:
+ \property_if_recorded:eeTF
+ { postnote@label@innote. \l__postnotes_note_ref_label_str }
+ { postnotes/tagsup@noteid }
+ {
+ \tl_set:Ne \l__postnotes_tmpa_tl
+ {
+ \property_ref:ee
+ { postnote@label@innote. \l__postnotes_note_ref_label_str }
+ { postnotes/tagsup@noteid }
+ }
+ \tag_struct_begin:n
+ {
+ tag = endnotemark ,
+ ref = { postnote. \l__postnotes_tmpa_tl } ,
+ }
+ \__postnotes_tagsup_store_crossref:nN
+ { postnote } \l__postnotes_tmpa_tl
+ }
+ {
+ \property_if_recorded:eeTF
+ { postnote@label@option. \l__postnotes_note_ref_label_str }
+ { postnotes/tagsup@noteid }
+ {
+ \tl_set:Ne \l__postnotes_tmpa_tl
+ {
+ \property_ref:ee
+ { postnote@label@option. \l__postnotes_note_ref_label_str }
+ { postnotes/tagsup@noteid }
+ }
+ \tag_struct_begin:n
+ {
+ tag = endnotemark ,
+ ref = { postnotemark. \l__postnotes_tmpa_tl } ,
+ }
+ \__postnotes_tagsup_store_crossref:nN
+ { postnotemark } \l__postnotes_tmpa_tl
+ }
+ { \tag_struct_begin:n { tag = endnotemark } }
+ }
+ \tag_mc_begin:n { }
+ }
+ \socket_new_plug:nnn { tagsupport/postnotes/postnoteref/end } { default }
+ {
+ \tag_mc_end:
+ \tag_struct_end: % endnotemark
+ \tag_mc_begin_pop:n { }
+ }
+ \socket_assign_plug:nn { tagsupport/postnotes/postnoteref/begin } { default }
+ \socket_assign_plug:nn { tagsupport/postnotes/postnoteref/end } { default }
+ \AddToHook { package/zref-user/after } [ postnotes/tagsup ]
+ {
+ \socket_new_plug:nnn { tagsupport/postnotes/postnotezref/begin } { default }
+ {
+ \tag_mc_end_push:
+ \zref@ifrefcontainsprop { \l__postnotes_note_zref_zlabel_str }
+ { postnotes@tagsup@noteid }
+ {
+ \tl_set:Ne \l__postnotes_tmpa_tl
+ {
+ \zref@extract { \l__postnotes_note_zref_zlabel_str }
+ { postnotes@tagsup@noteid }
+ }
+ \tag_struct_begin:n
+ {
+ tag = endnotemark ,
+ ref = { postnote. \l__postnotes_tmpa_tl } ,
+ }
+ \__postnotes_tagsup_store_crossref:nN
+ { postnote } \l__postnotes_tmpa_tl
+ }
+ {
+ \property_if_recorded:eeTF
+ { postnote@zlabel@option. \l__postnotes_note_zref_zlabel_str }
+ { postnotes/tagsup@noteid }
+ {
+ \tl_set:Ne \l__postnotes_tmpa_tl
+ {
+ \property_ref:ee
+ {
+ postnote@zlabel@option.
+ \l__postnotes_note_zref_zlabel_str
+ }
+ { postnotes/tagsup@noteid }
+ }
+ \tag_struct_begin:n
+ {
+ tag = endnotemark ,
+ ref = { postnotemark. \l__postnotes_tmpa_tl } ,
+ }
+ \__postnotes_tagsup_store_crossref:nN
+ { postnotemark } \l__postnotes_tmpa_tl
+ }
+ { \tag_struct_begin:n { tag = endnotemark } }
+ }
+ \tag_mc_begin:n { }
}
+ \socket_new_plug:nnn { tagsupport/postnotes/postnotezref/end } { default }
{
- \AddToHook { env/#1/begin } [ postnotes ]
- { \bool_set_true:N \l__postnotes_maybe_multi_bool }
+ \tag_mc_end:
+ \tag_struct_end: % endnotemark
+ \tag_mc_begin_pop:n { }
}
+ \socket_assign_plug:nn { tagsupport/postnotes/postnotezref/begin } { default }
+ \socket_assign_plug:nn { tagsupport/postnotes/postnotezref/end } { default }
}
}
\tl_new:N \pntitle
diff --git a/Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-dark-mono.tex b/Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-dark-mono.tex
index a0e28fcdaeb..e0d394ffdb1 100644
--- a/Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-dark-mono.tex
+++ b/Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-dark-mono.tex
@@ -1,6 +1,6 @@
% (The MIT License)
%
-% Copyright (c) 2022 Yegor Bugayenko
+% Copyright (c) 2022-2024 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
@@ -14,7 +14,7 @@
%
% 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
+% FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 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
diff --git a/Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-dark.tex b/Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-dark.tex
index 7736e886bde..42c476f6754 100644
--- a/Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-dark.tex
+++ b/Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-dark.tex
@@ -1,6 +1,6 @@
% (The MIT License)
%
-% Copyright (c) 2022 Yegor Bugayenko
+% Copyright (c) 2022-2024 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
@@ -14,7 +14,7 @@
%
% 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
+% FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 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
diff --git a/Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-light-mono.tex b/Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-light-mono.tex
index 4974c08ef6b..1919514dd40 100644
--- a/Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-light-mono.tex
+++ b/Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-light-mono.tex
@@ -1,6 +1,6 @@
% (The MIT License)
%
-% Copyright (c) 2022 Yegor Bugayenko
+% Copyright (c) 2022-2024 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
@@ -14,7 +14,7 @@
%
% 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
+% FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 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
diff --git a/Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-light.tex b/Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-light.tex
index 6a687c1aefe..1e3a211c698 100644
--- a/Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-light.tex
+++ b/Master/texmf-dist/tex/latex/ppt-slides/ppt-schemes/ppt-light.tex
@@ -1,6 +1,6 @@
% (The MIT License)
%
-% Copyright (c) 2022 Yegor Bugayenko
+% Copyright (c) 2022-2024 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
@@ -14,7 +14,7 @@
%
% 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
+% FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 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
diff --git a/Master/texmf-dist/tex/latex/ppt-slides/ppt-slides.sty b/Master/texmf-dist/tex/latex/ppt-slides/ppt-slides.sty
index b8de7fc1a2f..ff8831947b6 100644
--- a/Master/texmf-dist/tex/latex/ppt-slides/ppt-slides.sty
+++ b/Master/texmf-dist/tex/latex/ppt-slides/ppt-slides.sty
@@ -7,7 +7,7 @@
%% ppt-slides.dtx (with options: `package')
%% (The MIT License)
%%
-%% Copyright (c) 2021-2024 Yegor Bugayenko
+%% Copyright (c) 2022-2024 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
@@ -21,7 +21,7 @@
%%
%% 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
+%% FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 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
@@ -31,7 +31,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{ppt-slides}
-[2024-05-02 0.3.3 Slide Decks a la Power Point]
+[2024/10/18 0.4.0 Slide Decks a la Power Point]
@@ -120,10 +120,11 @@
\par%
}
+\newcommand\pptChapterLabel{Chapter}
\newcommand\pptChapter[2][]{%
\crumbection[#1]{#2}%
\begin{pptMiddle}%
- {\large\ttfamily Chapter \#\the\value{section}:}%
+ {\large\ttfamily \pptChapterLabel{} \#\the\value{section}:}%
\newline%
\rotatebox{1}{\pptBanner[blue]{\LARGE#2}}%
\end{pptMiddle}%
diff --git a/Master/texmf-dist/tex/latex/ppt-slides/ppt-templates/ppt-9x6.tex b/Master/texmf-dist/tex/latex/ppt-slides/ppt-templates/ppt-9x6.tex
index 10cf2a6f8dc..d01b21fdbf1 100644
--- a/Master/texmf-dist/tex/latex/ppt-slides/ppt-templates/ppt-9x6.tex
+++ b/Master/texmf-dist/tex/latex/ppt-slides/ppt-templates/ppt-9x6.tex
@@ -1,6 +1,6 @@
% (The MIT License)
%
-% Copyright (c) 2022 Yegor Bugayenko
+% Copyright (c) 2022-2024 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
@@ -14,7 +14,7 @@
%
% 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
+% FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 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
diff --git a/Master/texmf-dist/tex/latex/principia/principia.sty b/Master/texmf-dist/tex/latex/principia/principia.sty
index 29591fc0706..17eaf057621 100644
--- a/Master/texmf-dist/tex/latex/principia/principia.sty
+++ b/Master/texmf-dist/tex/latex/principia/principia.sty
@@ -1,13 +1,15 @@
%Package Identification
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{principia}[2023/03/13 principia package version 2.0] %This is the principia package is for representing notations in Whitehead and Russell's ``Principia Mathematica" close to their appearance in the original.
+\ProvidesPackage{principia}[2025/01/28 principia package version 3.1] %This is the principia package is for representing notations in Whitehead and Russell's ``Principia Mathematica" close to their appearance in the original.
%Version 1.0 (superseded by Version 1.1): Covers typesetting of notation through Volume I. 2020/10/24
%Version 1.1 (superseded by Version 1.2) minor updates: fixed the spacing of scope dots around parentheses; fixed spacing of theorem sign; fixed spacing around primitive proposition and definition signs. 2020/10/25
%Licensed under LaTeX Project Public License 1.3c.
%Version 1.2 (superseded by Version 2.0) (minor updates): boldfaced (`thickened') the truth-functional connectives, existential quantifier, set and relation symbols; added numerous commands for typesetting brackets and substitutions into theorems. 2021/02/25
%Version 2.0 (major update): extends the package to cover typesetting of all notations in Volumes II and III; removes package dependency on marvosym. 2022/09/04
+%Version 3.0 (major update): adds command for typesetting Appendix B; removed boldfacing in \pmcnv command; edited \pmrrf, \pmrrl, \pmhat commands, changes to dot spacing. 2024/12/16
+%Version 3.1 (minor update): fixed notations from *40 and *41 (credit to Stephen Boyce). 2025/01/28
%Licensed under LaTeX Project Public License 1.3c.
-%Copyright Landon D. C. Elkind, 2023 (https://landonelkind.com/contact/).
+%Copyright Landon D. C. Elkind, 2024 (https://landonelkind.com/contact/).
%Principia package requirements
\RequirePackage{amssymb} %This loads the relation domain and converse domain limitation symbols.
@@ -72,23 +74,25 @@
\newcommand{\pmpp}{\quad \text{Pp}}
%Square dots for scope, defined for up to six dots
-\newcommand{\pmdot}{\mathrel{\hbox{\rule{.3ex}{.3ex}}}}
-\newcommand{\pmdott}{\mathrel{\overset{\pmdot}{\pmdot}}}
-\newcommand{\pmdottt}{\pmdott\hspace{.1em}\pmdot}
-\newcommand{\pmdotttt}{\pmdott\hspace{.1em}\pmdott}
-\newcommand{\pmdottttt}{\pmdott\hspace{.1em}\pmdott\hspace{.1em}\pmdot}
-\newcommand{\pmdotttttt}{\pmdott\hspace{.1em}\pmdott\hspace{.1em}\pmdott}
+\newcommand{\pmd}{\hbox{\rule{.3ex}{.3ex}}} %single square dot
+\newcommand{\pmdd}{\overset{\pmd}{\pmd}} %vertically aligned pair of square dots
+\newcommand{\pmdot}{\mathinner{\pmd}}
+\newcommand{\pmdott}{\mathinner{\pmdd}}
+\newcommand{\pmdottt}{\mathinner{\pmdd\hspace{1pt}\pmd}}
+\newcommand{\pmdotttt}{\mathinner{\pmdd\hspace{1pt}\pmdd}}
+\newcommand{\pmdottttt}{\mathinner{\pmdd\hspace{1pt}\pmdd\hspace{1pt}\pmd}}
+\newcommand{\pmdotttttt}{\mathinner{\pmdd\hspace{1pt}\pmdd\hspace{1pt}\pmdd}}
%Logical connectives
\newcommand{\pmnot}{\mathord{\ooalign{$\boldsymbol{\sim}\mkern.5mu$\hidewidth\cr$\boldsymbol{\sim}$\cr\hidewidth$\mkern.5mu\boldsymbol{\sim}$}}}
\newcommand{\pmor}{\mathbin{\ooalign{$\boldsymbol{\vee}\mkern.5mu$\hidewidth\cr$\boldsymbol{\vee}$\cr\hidewidth$\mkern.5mu\boldsymbol{\vee}$}}}
\newcommand{\pmimp}{\mathbin{\ooalign{$\boldsymbol{\supset}\mkern.5mu$\hidewidth\cr$\boldsymbol{\supset}$\cr\hidewidth$\mkern.5mu\boldsymbol{\supset}$}}} %1.01
-\newcommand{\pmand}{\mathrel{\hbox{\rule{.3ex}{.3ex}}}} %3.01
-\newcommand{\pmandd}{\overset{\pmand}{\pmand}}
-\newcommand{\pmanddd}{\pmandd\hspace{.1em}\pmand}
-\newcommand{\pmandddd}{\pmandd\hspace{.1em}\pmandd}
-\newcommand{\pmanddddd}{\pmandd\hspace{.1em}\pmandd\hspace{.1em}\pmand}
-\newcommand{\pmandddddd}{\pmandd\hspace{.1em}\pmandd\hspace{.1em}\pmandd}
+\newcommand{\pmand}{\mathbin{\pmd}}%3.01
+\newcommand{\pmandd}{\mathbin{\pmdd}}
+\newcommand{\pmanddd}{\mathbin{\pmdd\hspace{1pt}\pmd}}
+\newcommand{\pmandddd}{\mathbin{\pmdd\hspace{1pt}\pmdd}}
+\newcommand{\pmanddddd}{\mathbin{\pmdd\hspace{1pt}\pmdd\hspace{1pt}\pmd}}
+\newcommand{\pmandddddd}{\mathbin{\pmdd\hspace{1pt}\pmdd\hspace{1pt}\pmdd}}
\newcommand{\pmprod}{\mathbin{\ooalign{$\boldsymbol{\wedge}\mkern.5mu$\hidewidth\cr$\boldsymbol{\wedge}$\cr\hidewidth$\mkern.5mu\boldsymbol{\wedge}$}}} %Not in Principia, but added here as a dual of its symbol for disjunction.
\newcommand{\pmiff}{\mathbin{\ooalign{$\boldsymbol{\equiv}\mkern.5mu$\hidewidth\cr$\boldsymbol{\equiv}$\cr\hidewidth$\mkern.5mu\boldsymbol{\equiv}$}}} %4.01
\newcommand{\pminc}{\mathbin{|}} %8.01
@@ -99,8 +103,8 @@
\newcommand{\pmSome}{\text{\raisebox{.5em}{\rotatebox{180}{\textbf{E}}}}}
%Additional defined logic signs
-\newcommand{\pmhat}[1]{\boldsymbol{\hat{\text{$#1$}}}}
-\newcommand{\pmbreve}[1]{\boldsymbol{\breve{\text{$#1$}}}}
+\newcommand{\pmhat}[1]{\hat{#1}}
+\newcommand{\pmbreve}[1]{\boldsymbol{\breve{#1}}}
\newcommand{\pmcirc}[1]{\boldsymbol{\dot{\text{$#1$}}}}
\newcommand{\pmpf}[2]{#1#2} %for propositional functions of one variable
\newcommand{\pmpff}[3]{#1(#2, #3)} %for propositional functions of two variables
@@ -127,6 +131,7 @@
%Classes and relations
%Class signs
\newcommand{\pmcls}[2]{\pmhat{#1}(#2)} %20.01
+\newcommand{\pmclsb}[2]{\pmhat{#1}\{#2\}} %20.01 with curly brackets
\newcommand{\pmcin}{\mathop{\boldsymbol{\epsilon}}} %20.02
\newcommand{\pmCls}{\text{Cls}} %20.03
\newcommand{\pmClsn}[1]{\text{Cls}^{#1}}
@@ -142,6 +147,7 @@
%Relation signs
\newcommand{\pmrel}[3]{\pmhat{#1}\pmhat{#2}#3} %21.01
+\newcommand{\pmrelb}[3]{\pmhat{#1}\pmhat{#2}\{#3\}} %21.01
\newcommand{\pmrele}[5]{#1\{\pmhat{#2}\pmhat{#3}#4(#2, #3)\}#5} %21.02
\newcommand{\pmrelep}[3]{#1\{#2\}#3} %21.08, 21.081, 21.082, etc.
\newcommand{\pmrcmp}[1]{\ooalign{$\hidewidth\raisebox{.25em}{$\boldsymbol{\cdot}$}\hidewidth$\cr$\boldsymbol{\pmccmp}$}#1} %23.04
@@ -158,10 +164,10 @@
\newcommand{\pmcnv}[1]{\text{Cnv}\textbf{`}#1} %31.01
\newcommand{\pmCnv}{\text{Cnv}}
\newcommand{\pmcrel}[1]{\pmbreve{#1}} %31.02
-\newcommand{\pmrrf}[2]{\overset{\boldsymbol{\rightarrow}}{#1\textbf{`}}#2} %32.01
-\newcommand{\pmRrf}[1]{\overset{\boldsymbol{\rightarrow}}{#1}}
-\newcommand{\pmrrl}[2]{\overset{\boldsymbol{\leftarrow}}{#1\textbf{`}}#2} %32.02
-\newcommand{\pmRrl}[1]{\overset{\boldsymbol{\leftarrow}}{#1}}
+\newcommand{\pmrrf}[2]{\overrightarrow{#1}\textbf{`}#2} %32.01
+\newcommand{\pmRrf}[1]{\overrightarrow{#1}}
+\newcommand{\pmrrl}[2]{\overleftarrow{#1}\textbf{`}#2} %32.02
+\newcommand{\pmRrl}[1]{\overleftarrow{#1}}
\newcommand{\pmsg}[1]{\text{sg}\textbf{`}#1} %32.03
\newcommand{\pmSg}{\text{sg}}
\newcommand{\pmgs}[1]{\text{gs}\textbf{`}#1} %32.04
@@ -194,10 +200,10 @@
\newcommand{\pmopc}[2]{#1 \mathop{\underset{\textbf{''}}{\text{\Female}}} #2} %38.03
%Products and sums of classes of classes or relations
-\newcommand{\pmccsum}[1]{p\textbf{`}#1} %40.01
-\newcommand{\pmccprd}[1]{s\textbf{`}#1} %40.02
-\newcommand{\pmcrsum}[1]{\pmcirc{p}\textbf{`}#1} %41.01
-\newcommand{\pmcrprd}[1]{\pmcirc{s}\textbf{`}#1} %41.02
+\newcommand{\pmccprd}[1]{p\textbf{`}#1} %40.01
+\newcommand{\pmccsum}[1]{s\textbf{`}#1} %40.02
+\newcommand{\pmcrprd}[1]{\pmcirc{p}\textbf{`}#1} %41.01
+\newcommand{\pmcrsum}[1]{\pmcirc{s}\textbf{`}#1} %41.02
\newcommand{\pmrprdd}[2]{{#1}\mathop{||}{#2}} %43.01
\newcommand{\pmRprdd}{\mathop{||}}
@@ -278,9 +284,12 @@
\newcommand{\pmanc}[1]{#1_\pmast} %90.01
\newcommand{\pmancc}[1]{\pmcrel{#1}_\pmast} %90.02
\newcommand{\pmrst}[1]{#1_\text{st}} %91.01
+\newcommand{\pmrstm}[2]{#1_{\text{st}#2}} %91.01, see App. B
\newcommand{\pmrts}[1]{#1_\text{ts}} %91.02
+\newcommand{\pmrtsm}[2]{#1_{\text{ts}#2}} %91.02, see App. B
\newcommand{\pmpot}[1]{\text{Pot}\boldsymbol{`}#1} %91.03
\newcommand{\pmpotid}[1]{\text{Potid}\boldsymbol{`}#1} %91.04
+\newcommand{\pmpotidm}[2]{\text{Potid}_{#1}\boldsymbol{`}#2} %91.04, see App. B
\newcommand{\pmpo}[1]{#1_\text{po}} %91.05
\newcommand{\pmB}{B} %93.01
\newcommand{\pmmin}[1]{\text{min}_{#1}} %93.02
@@ -294,6 +303,21 @@
\newcommand{\pmjpr}[2]{J_{#1}\textbf{`}#2} %96.02
\newcommand{\pmfr}[2]{\overset{\boldsymbol{\leftrightarrow}}{#1}\textbf{`}#2} %97.01
+%Appendix B (*89)
+\newcommand{\pmancm}[2]{#1_{\pmast#2}} %89.01
+\newcommand{\pmrrfanc}[2]{\overrightarrow{#1}_\pmast\textbf{`}#2} %32.01 plus \pmanc
+\newcommand{\pmrrfancm}[3]{\overrightarrow{#1}_{\pmast#2}\textbf{`}#3} %32.01 plus \pmancm
+\newcommand{\pmrrlanc}[2]{\overleftarrow{#1}_\pmast\textbf{`}#2} %32.02 plus \pmanc
+\newcommand{\pmrrlancm}[3]{\overleftarrow{#1}_{\pmast#2}\textbf{`}#3} %32.02 plus \pmancm
+\newcommand{\pmclso}[3]{\pmhat{#1}_{#2}(#3)} %20.01 but with order subscript
+\newcommand{\pmclsbo}[3]{\{\pmhat{#1}_{#2}(#3)\}} %20.01 but with order subscript
+\newcommand{\pmrorderzero}[1]{#1_0} %89.02
+\newcommand{\pmrorderm}[2]{#1_{#2}} %89.02
+\newcommand{\pmcorderzero}[1]{#1_0} %analogue for classes, cf. 89.131
+\newcommand{\pmcorderm}[2]{#1_{#2}} %analogue for classes, cf. 89.131
+\newcommand{\pmporderzero}[1]{#1_0} %analogue for properties, cf. introduction to sec. ed. \SVII
+\newcommand{\pmporderm}[2]{#1_{#2}} %analogue for properties, cf. introduction to sec. ed. \SVII
+
%Volume II
%Cardinal arithmetic
%Definition and Logical Properties of Cardinal Numbers
@@ -352,9 +376,13 @@
\newcommand{\pminfinax}[1]{\text{Infin}\,\text{ax}(#1)} %120.04
\newcommand{\pmspec}[1]{\text{spec}\textbf{`}#1} %120.43
\newcommand{\pmintoo}[2]{P(#1\mathbin{\boldsymbol{-}}#2)} %121.01
+\newcommand{\pmIntoo}[2]{(#1\mathbin{\boldsymbol{-}}#2)} %121.01
\newcommand{\pmintoc}[2]{P({#1}\mathbin{\scalebox{1.2}[.7]{$\boldsymbol{\dashv}$}}{#2})} %121.011
+\newcommand{\pmIntoc}[2]{({#1}\mathbin{\scalebox{1.2}[.7]{$\boldsymbol{\dashv}$}}{#2})} %121.011
\newcommand{\pmintco}[2]{P({#1}\mathbin{\scalebox{1.2}[.7]{$\boldsymbol{\vdash}$}}{#2})} %121.012
+\newcommand{\pmIntco}[2]{({#1}\mathbin{\scalebox{1.2}[.7]{$\boldsymbol{\vdash}$}}{#2})} %121.012
\newcommand{\pmintcc}[2]{P({#1} \mathbin{\ooalign{$\scalebox{1.2}[.7]{$\boldsymbol{\dashv}$}$\hidewidth\cr$\scalebox{1.2}[.7]{$\boldsymbol{\vdash}$}$}} {#2})} %121.013
+\newcommand{\pmIntcc}[2]{({#1} \mathbin{\ooalign{$\scalebox{1.2}[.7]{$\boldsymbol{\dashv}$}$\hidewidth\cr$\scalebox{1.2}[.7]{$\boldsymbol{\vdash}$}$}} {#2})} %121.013
\newcommand{\pmintnc}[1]{P_{#1}} %121.02
\newcommand{\pmfinid}[1]{\text{finid}\textbf{`}#1} %121.03
\newcommand{\pmfin}[1]{\text{fin}\textbf{`}#1} %121.031
diff --git a/Master/texmf-dist/tex/latex/prisma-flow-diagram/prisma-flow-diagram.sty b/Master/texmf-dist/tex/latex/prisma-flow-diagram/prisma-flow-diagram.sty
new file mode 100644
index 00000000000..367ab589adb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/prisma-flow-diagram/prisma-flow-diagram.sty
@@ -0,0 +1,55 @@
+\ProvidesPackage{prisma-flow-diagram}[2025/01/20 PRISMA Flow Diagram Generator]
+
+% Automatically load required packages
+\RequirePackage{tikz}
+\RequirePackage{graphicx}
+\RequirePackage{float}
+\usetikzlibrary{positioning, calc, chains}
+
+% Define default node height
+\def\mh{10ex}
+
+% Define TikZ styles
+\tikzset{
+ mynode/.style={
+ draw, rectangle, align=center, minimum height=\mh, text width=5cm, font=\small, outer sep=0pt
+ },
+ ml/.style args={#1/#2}{
+ draw, rectangle, align=center, rounded corners, font=\small\bfseries, inner sep=2ex,
+ outer sep=0pt, fill=cyan!30, minimum height=1.6*\mh, left=5mm of #2
+ },
+ arrow/.style={
+ thick,->,>=stealth
+ },
+ every join/.style=arrow,
+ every node/.style={
+ font=\small
+ }
+}
+
+% Start PRISMA diagram
+\newcommand{\prismaflowstart}{
+ \begin{tikzpicture}[node distance=5mm and 10mm, start chain=going below]
+ \coordinate (tc);
+}
+
+% Add a main diagram node
+\newcommand{\prismaflownode}[4]{
+ \node[mynode, #2] (#1) {#3};
+ \ifx#4\empty\else\draw[arrow] (#4) -- (#1);\fi
+}
+
+% Add a left-side label
+\newcommand{\prismalabel}[3]{
+ \node[ml=#1/#2] {\rotatebox{90}{\textbf{#3}}};
+}
+
+% Add a manual arrow
+\newcommand{\prismaflowarrow}[2]{
+ \draw[arrow] (#1) -- (#2);
+}
+
+% End PRISMA diagram
+\newcommand{\prismaflowend}{
+ \end{tikzpicture}
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/proflycee/ProfLycee-Light.sty b/Master/texmf-dist/tex/latex/proflycee/ProfLycee-Light.sty
new file mode 100644
index 00000000000..eb98631aed5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/ProfLycee-Light.sty
@@ -0,0 +1,389 @@
+% Author.............: C. Pierquet
+% licence............: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+% licence cliparts...: CC0 from openclipart
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{ProfLycee-Light}[2024/10/24 1.00b Aide pour l'utilisation de LaTeX en lycee]
+%1.00b Changement du préfixage de certaines commandes + \logo calculatrice interdite
+%1.00a Refonte du fonctionnement
+
+%%=====Mathtools (la base)
+\RequirePackage{mathtools}
+
+%%=====Option(s)
+\newif\if@xcolor \@xcolorfalse
+\newif\if@build \@buildfalse
+\newif\if@loadamssymb \@loadamssymbtrue
+\newif\if@loadtikzbabel \@loadtikzbabeltrue
+\DeclareOption{xcolor}{\@xcolortrue}%
+\DeclareOption{build}{\@buildtrue}%
+\DeclareOption{nonamssymb}{\@loadamssymbfalse}%
+\DeclareOption{nontikzbabel}{\@loadtikzbabelfalse}%
+\DeclareOption*{}
+\ProcessOptions\relax
+
+%%=====Packages utiles et indispensables
+\if@loadamssymb
+ \RequirePackage{amssymb}
+\fi
+\if@xcolor
+ \RequirePackage[table,svgnames]{xcolor}%Gestion des couleurs
+\fi
+\RequirePackage{iftex}
+\RequirePackage{tikz}
+\usetikzlibrary{calc}
+\usetikzlibrary{decorations,decorations.pathreplacing,decorations.markings,arrows,arrows.meta,shapes.geometric,decorations.pathmorphing}
+\if@loadtikzbabel
+ \usetikzlibrary{babel}
+\fi
+\RequirePackage{ifthen}
+\RequirePackage{xstring}
+\RequirePackage{xintexpr}
+\RequirePackage{xintbinhex}
+\RequirePackage{xinttools}
+\RequirePackage{randomlist}
+\RequirePackage{simplekv}
+\RequirePackage{listofitems}
+\RequirePackage{tkz-tab}
+\RequirePackage{tabularray}
+\RequirePackage{settobox}
+\RequirePackage{hologo}
+\RequirePackage{fancyvrb}
+\RequirePackage{nicefrac}
+\RequirePackage{siunitx}
+\sisetup{%
+ locale=FR,output-decimal-marker={,},%
+ mode=match,propagate-math-font=true,%
+ reset-math-version=false,reset-text-family=false,%
+ reset-text-series=false,reset-text-shape=false,%
+ text-family-to-math=true,text-series-to-math=true,%
+ group-minimum-digits=4%
+}%
+\RequirePackage{fontawesome5}
+\RequirePackage{tcolorbox}%
+\tcbuselibrary{breakable,fitting,skins,listings,listingsutf8,hooks}
+
+%%=====COULEUR PERSO
+\definecolor{CouleurVertForet}{HTML}{1F8B36} %ForestGreen
+
+%%=====COMMANDES DE BASES xint/siunitx
+\NewDocumentCommand\pflnum{ s D<>{} O{} m }{%version consolidée
+ %1 := version étoilée pour arrondi (normal) / - avant la fraction éventuelle
+ \IfEq{#2}{}%argument <> vide := entier/décimal -> checked
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \IfEq{#3}{}{\num{\xintfloateval{#4}}}{\num{\xintfloateval{round(#4,#3)}}}%
+ }%
+ {%
+ \num{\xintiieval{#4}}%
+ }%
+ }%
+ {}%
+ \IfEq{#2}{frac}%argument <frac> := fraction -> checked
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \pflnumfrac*[#3]{#4}%
+ }%
+ {%
+ \pflnumfrac[#3]{#4}%
+ }%
+ }%
+ {}%
+ \IfEq{#2}{rad}%argument <rad> := angle radian -> checked (juste le - devant...)
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \pflnumrad*[#3]{#4}%
+ }%
+ {%
+ \pflnumrad[#3]{#4}%
+ }%
+ }%
+ {}%
+ \IfEq{#2}{rac}%
+ {%
+ \pflnumsqrt[#3]{#4}%
+ }%
+ {}%
+}
+
+\DeclareDocumentCommand\pflnumsqrt{ O{} m }{% argument mandataire {calcul ou fraction}
+ \xdef\calculargument{\xintIrr{\xinteval{#2}}}%
+ \xintifboolexpr{\calculargument == 1}%
+ {%
+ \ensuremath{1}%
+ }%
+ {%
+ \IfEndWith{\calculargument}{/1}%
+ {%si c'est un entier !
+ \xdef\calculargument{\xintiieval{#2}}%
+ \xdef\ExtractRacStop{\xintiFloor{\xintfloateval{sqrt(\calculargument)}}}%
+ \xintFor* ##1 in {\xintSeq{1}{\ExtractRacStop}}\do{%
+ \xintifboolexpr{ \xintiiRem{\calculargument}{\xintiieval{##1*##1}} == 0}%si le carré divise
+ {\xdef\ExtractRacID{##1}}%
+ {}%
+ }%
+ \xdef\ExtracReste{\xintiieval{\calculargument/(\ExtractRacID*\ExtractRacID)}}%
+ \ensuremath{\xintifboolexpr{\ExtractRacID == 1 && \ExtracReste == 1}%
+ {1}%
+ { \xintifboolexpr{\ExtractRacID == 1}{}{\num{\xintiieval{\ExtractRacID}}}%
+ \xintifboolexpr{\ExtracReste == 1}{}{\sqrt{\num{\ExtracReste}}} }%
+ }%
+ }%
+ {%on va mettre sous forme a\sqrt(d)/b := buggue avec des millièmes...
+ \StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur
+ \StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur
+ \xdef\ExtractRacNNum{\xintiieval{\numerateur*\denominateur}}%
+ \xdef\ExtractRacStop{\xintiFloor{\xintfloateval{sqrt(\ExtractRacNNum)}}}%
+ \xintFor* ##1 in {\xintSeq{1}{\ExtractRacStop}}\do{%
+ \xintifboolexpr{ \xintiiRem{\ExtractRacNNum}{\xintiieval{##1*##1}} == 0}%si le carré divise
+ {\xdef\ExtractRacID{##1}}%
+ {}
+ }%
+ \xdef\ExtractRacGCD{\xintiiGCD{\ExtractRacID}{\denominateur}}%
+ \xdef\RacNumSimpl{\xintiieval{\ExtractRacID/\ExtractRacGCD}}%simpl num
+ \xdef\RacDenomSimpl{\xintiieval{\denominateur/\ExtractRacGCD}}%
+ \xdef\RacRacSimpl{\xintiieval{\ExtractRacNNum/(\ExtractRacID*\ExtractRacID)}}%
+ \IfEq{#1}{}%fraction classique
+ {%
+ \ensuremath{\frac{%
+ \xintifboolexpr{\RacNumSimpl == 1 && \RacRacSimpl == 1}%
+ {1}%
+ { \xintifboolexpr{\RacNumSimpl == 1}{}{\RacNumSimpl} \xintifboolexpr{\RacRacSimpl == 1}{}{\sqrt{\num{\RacRacSimpl}}} }%
+ }%
+ { \RacDenomSimpl }}%
+ }%
+ {}%
+ \IfEq{#1}{d}%dfraction
+ {%
+ \ensuremath{\dfrac{%
+ \xintifboolexpr{\RacNumSimpl == 1 && \RacRacSimpl == 1}%
+ {1}%
+ { \xintifboolexpr{\RacNumSimpl == 1}{}{\RacNumSimpl} \xintifboolexpr{\RacRacSimpl == 1}{}{\sqrt{\num{\RacRacSimpl}}} }%
+ }%
+ { \RacDenomSimpl }}%
+ }%
+ {}%
+ \IfEq{#1}{n}%nfraction
+ {%
+ \ensuremath{\nicefrac{%
+ \xintifboolexpr{\RacNumSimpl == 1 && \RacRacSimpl == 1}%
+ {1}%
+ { \xintifboolexpr{\RacNumSimpl == 1}{}{\RacNumSimpl} \xintifboolexpr{\RacRacSimpl == 1}{}{\sqrt{\num{\RacRacSimpl}}} }%
+ }%
+ { \RacDenomSimpl }}%
+ }%
+ {}%
+ }%
+}%
+}
+
+\NewDocumentCommand\pflnumfrac{ s O{} m }{%patch xinttotexfrac
+ %*=moins sur le numérateur
+ %2=argument.optionnel[d/t/dec=...]
+ %3=argument mandataire {calcul ou fraction}
+ \xdef\calculargument{\xintPRaw{\xintIrr{\xinteval{#3}}}}%on calcule et on transforme en A/B
+ \IfSubStr{\calculargument}{/}%on teste si le symbole / apparaît
+ {%si oui := fraction
+ \StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur
+ \StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur
+ \ifblank{#2}%
+ {%
+ \IfBooleanTF{#1}%
+ {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{d}%
+ {%
+ \IfBooleanTF{#1}%
+ {\ensuremath{\dfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\dfrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\dfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{t}%
+ {%
+ \IfBooleanTF{#1}%
+ {\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\tfrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{n}%
+ {%
+ {\ensuremath{\nicefrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfSubStr{#2}{dec}%on veut la forme décimale
+ {%
+ \IfSubStr{#2}{=}%si on rajoute une précision
+ {%
+ \StrBehind{#2}{=}[\precdecimal]%
+ \ensuremath{\num{\xintfloateval{round(#3,\precdecimal)}}}%
+ }%
+ {%
+ \ensuremath{\num{\xintfloateval{#3}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ }%
+ {%si non := entier
+ \num{\calculargument}%on affiche l'entier, avec le package siunitx
+ }%
+}
+
+\NewDocumentCommand\pflnumrad{ s O{} m }{%
+ %1 = options
+ %2 = angle sous la forme a*pi/b
+ \StrDel{#3}{pi}[\MPargument]%
+ \IfBeginWith{#3}{pi}%
+ {\StrSubstitute{#3}{pi}{1}[\MPargument]}%
+ {}%
+ \IfBeginWith{#3}{-pi}%
+ {\StrSubstitute{#3}{pi}{1}[\MPargument]}%
+ {}%
+ %on conserve les données initiales
+ \IfSubStr{\MPargument}{/}%on coupe numérateur/dénominateur
+ {\StrCut{\MPargument}{/}\MPnumerateurinit\MPdenominateurinit}%
+ {\xdef\MPnumerateurinit{\MPargument}\xdef\MPdenominateurinit{1}}%
+ %on affiche le début, avant simplification
+ \IfStrEq{#2}{d}%
+ {%
+ \ensuremath{%
+ \xintifboolexpr{\MPdenominateurinit == 1}%
+ {%
+ \xintifboolexpr{\MPnumerateurinit == 1}{\pi}{}%
+ \xintifboolexpr{\MPnumerateurinit == -1}{-\pi}{}%
+ \xintifboolexpr{\xinteval{abs(\MPnumerateurinit) != 1}}{\num{\MPnumerateurinit}\pi}{}%
+ }%
+ {%
+ \displaystyle\IfBooleanT{#1}{-}\frac{%
+ \xintifboolexpr{\MPnumerateurinit == 1}{\pi}{}%
+ \xintifboolexpr{\MPnumerateurinit == -1}{\IfBooleanTF{#1}{}{-}\pi}{}
+ \xintifboolexpr{\xinteval{abs(\MPnumerateurinit) != 1}}{\num{ \IfBooleanTF{#1}{\xinteval{abs(\MPnumerateurinit)}}{\MPnumerateurinit} }\pi}{}%
+ }%
+ {%
+ \num{\MPdenominateurinit}%
+ }%
+ }%
+ }%
+ }%
+ {}%
+ \IfStrEq{#2}{t}%
+ {%
+ \ensuremath{%
+ \xintifboolexpr{\MPdenominateurinit == 1}%
+ {%
+ \xintifboolexpr{\MPnumerateurinit == 1}{\pi}{}%
+ \xintifboolexpr{\MPnumerateurinit == -1}{-\pi}{}%
+ \xintifboolexpr{\xinteval{abs(\MPnumerateurinit) != 1}}{\num{\MPnumerateurinit}\pi}{}%
+ }%
+ {%
+ \IfBooleanT{#1}{-}\tfrac{%
+ \xintifboolexpr{\MPnumerateurinit == 1}{\pi}{}%
+ \xintifboolexpr{\MPnumerateurinit == -1}{-\pi}{}
+ \xintifboolexpr{\xinteval{abs(\MPnumerateurinit) != 1}}{\num{ \IfBooleanTF{#1}{\xinteval{abs(\MPnumerateurinit)}}{\MPnumerateurinit} }\pi}{}%
+ }%
+ {%
+ \num{\MPdenominateurinit}%
+ }%
+ }%
+ }%
+ }%
+ {}%
+ \IfStrEq{#2}{}%
+ {%
+ \ensuremath{%
+ \xintifboolexpr{\MPdenominateurinit == 1}%
+ {%
+ \xintifboolexpr{\MPnumerateurinit == 1}{\pi}{}%
+ \xintifboolexpr{\MPnumerateurinit == -1}{-\pi}{}%
+ \xintifboolexpr{\xinteval{abs(\MPnumerateurinit) != 1}}{\num{\MPnumerateurinit}\pi}{}%
+ }%
+ {%
+ \IfBooleanT{#1}{-}\frac{%
+ \xintifboolexpr{\MPnumerateurinit == 1}{\pi}{}%
+ \xintifboolexpr{\MPnumerateurinit == -1}{-\pi}{}
+ \xintifboolexpr{\xinteval{abs(\MPnumerateurinit) != 1}}{\num{ \IfBooleanTF{#1}{\xinteval{abs(\MPnumerateurinit)}}{\MPnumerateurinit} }\pi}{}%
+ }%
+ {%
+ \num{\MPdenominateurinit}%
+ }%
+ }%
+ }%
+ }%
+ {}%
+ \IfStrEq{#2}{n}%
+ {%
+ \ensuremath{%
+ \xintifboolexpr{\MPdenominateurinit == 1}%
+ {%
+ \xintifboolexpr{\MPnumerateurinit == 1}{\pi}{}%
+ \xintifboolexpr{\MPnumerateurinit == -1}{-\pi}{}%
+ \xintifboolexpr{\xinteval{abs(\MPnumerateurinit) != 1}}{\num{\MPnumerateurinit}\pi}{}%
+ }%
+ {%
+ \nicefrac{%
+ \xintifboolexpr{\MPnumerateurinit == 1}{\pi}{}%
+ \xintifboolexpr{\MPnumerateurinit == -1}{-\pi}{}
+ \xintifboolexpr{\xinteval{abs(\MPnumerateurinit) != 1}}{\num{\MPnumerateurinit}\pi}{}%
+ }%
+ {%
+ \num{\MPdenominateurinit}%
+ }%
+ }%
+ }%
+ }%
+ {}%
+}
+
+%%=====LIBRAIRIES/BIBIOTHÈQUES
+\newcommand\useproflyclib[1]{%ajout d'une commande "librairie" pour charger des modules
+ \IfSubStr{#1}{most}{%
+ \input{proflycee-tools-analyse.tex}
+ \input{proflycee-tools-graphiques.tex}
+ \input{proflycee-tools-listings.tex}
+ \input{proflycee-tools-trigo.tex}
+ \input{proflycee-tools-probas.tex}
+ \input{proflycee-tools-stats.tex}
+ \input{proflycee-tools-arithm.tex}
+ \input{proflycee-tools-aleatoire.tex}
+ \input{proflycee-tools-suites.tex}
+ \input{proflycee-tools-cliparts.tex}
+ }%
+ {%
+ \IfSubStr{#1}{analyse}{\input{proflycee-tools-analyse.tex}}{}%
+ \IfSubStr{#1}{graphiques}{\input{proflycee-tools-graphiques.tex}}{}%
+ \IfSubStr{#1}{listings}{\input{proflycee-tools-listings.tex}}{}%
+ \IfSubStr{#1}{trigo}{\input{proflycee-tools-trigo.tex}}{}%
+ \IfSubStr{#1}{probas}{\input{proflycee-tools-probas.tex}}{}%
+ \IfSubStr{#1}{stats}{\input{proflycee-tools-stats.tex}}{}%
+ \IfSubStr{#1}{arithm}{\input{proflycee-tools-arithm.tex}}{}%
+ \IfSubStr{#1}{aleatoire}{\input{proflycee-tools-aleatoire.tex}}{}%
+ \IfSubStr{#1}{suites}{\input{proflycee-tools-suites.tex}}{}%
+ \IfSubStr{#1}{geom}{\input{proflycee-tools-geom.tex}}{}%
+ \IfSubStr{#1}{cliparts}{\input{proflycee-tools-cliparts.tex}}{}%
+ }%
+ \IfSubStr{#1}{piton}{\input{proflycee-tools-piton.tex}}{}%
+ \IfSubStr{#1}{espace}{\input{proflycee-tools-espace.tex}}{}%
+ \IfSubStr{#1}{ecritures}{\input{proflycee-tools-ecritures.tex}}{}%
+ \IfSubStr{#1}{complexes}{\input{proflycee-tools-complexes.tex}}{}%
+ \IfSubStr{#1}{recreat}{\input{proflycee-tools-recreat.tex}}{}%
+ \IfSubStr{#1}{competences}{\input{proflycee-tools-competences.tex}}{}%
+ \IfSubStr{#1}{exams}{\input{proflycee-tools-exams.tex}}{}%
+}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty b/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty
index fffb3c5da9d..dbeb301429c 100644
--- a/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty
+++ b/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty
@@ -1,9 +1,21 @@
-% Author : C. Pierquet
-% licence : Released under the LaTeX Project Public License v1.3c
-% or later, see http://www.latex-project.org/lppl.txtf
+% Author...................: C. Pierquet
+% licence..................: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+% licence (part of code).. : CC BY-SA 3.0 (from Mark Wibrow)
+% licence cliparts.........: CC0 (from openclipart)
+% code
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2024/09/01 3.04e Aide pour l'utilisation de LaTeX en lycee]
+\ProvidesPackage{ProfLycee}[2024/10/30 3.10f Aide pour l'utilisation de LaTeX en lycee]
+% 3.10f Ajout de quelques commandes arithmétiques (test premier + décompo)
+% 3.10e Correction de noms de commandes + \logo calculatrice interdite
+% 3.10d Correction d'un nom de commande (doublon avec ProfMaquette)
+% 3.10c Ajout de clés/arguments pour les arbres de probas + paramètres stats + arbres de dénombrement(s)
+% 3.10b Ajout des empilements d'oranges + commandes sur les dates
+% 3.10a Bifurcation pfl / pfllight + pflnum consolidée
+% 3.05b Mise en standby des commandes liées à minted (attente de compatibilité complète avec tcblisting) + Clé [ValeursTan] pour les cercles trigo
+% 3.05a Conversions entre bases + vectorial clipart (de openclipart)
+% 3.04g Ajout de clés pour les arbres de probas
+% 3.04f Ajout de clés pour la coloration des nombres et Piton
% 3.04e Commandes prix/angle/pourcent en lien avec siunitx
% 3.04d PitonInputFile et styles
% 3.04c Max et min pour des fonctions
@@ -99,9 +111,11 @@
\newif\if@xcolor \@xcolorfalse
\newif\if@build \@buildfalse
\newif\if@loadamssymb \@loadamssymbtrue
+\newif\if@loadtikzbabel \@loadtikzbabeltrue
\DeclareOption{xcolor}{\@xcolortrue}%
\DeclareOption{build}{\@buildtrue}%
\DeclareOption{nonamssymb}{\@loadamssymbfalse}%
+\DeclareOption{nontikzbabel}{\@loadtikzbabelfalse}%
\DeclareOption*{}
\ProcessOptions\relax
@@ -113,6 +127,10 @@
\RequirePackage[table,svgnames]{xcolor}%Gestion des couleurs
\fi
\RequirePackage{tikz}
+\usetikzlibrary{calc,decorations,decorations.pathreplacing,decorations.markings,arrows,arrows.meta,shapes.geometric,decorations.pathmorphing}
+\if@loadtikzbabel
+ \usetikzlibrary{babel}
+\fi
\RequirePackage{tkz-tab}
\RequirePackage{pgf,pgffor}
\RequirePackage{ifthen}
@@ -139,15 +157,6 @@
group-minimum-digits=4%
}%
\RequirePackage{fontawesome5}
-%librairies tikz
-\usetikzlibrary{calc}
-\usetikzlibrary{decorations}
-\usetikzlibrary{decorations.pathreplacing}
-\usetikzlibrary{decorations.markings}
-\usetikzlibrary{arrows,arrows.meta}
-\usetikzlibrary{babel}
-\usetikzlibrary{shapes.geometric}
-\usetikzlibrary{decorations.pathmorphing}
%tcolorbox
\RequirePackage{tcolorbox}%
\tcbuselibrary{breakable,fitting,skins,listings,listingsutf8,hooks}
@@ -169,15 +178,15 @@
\input{proflycee-tools-espace.tex}
}%
{}%
- \IfSubStr{#1}{minted}%
- {%
- \if@build
- \RequirePackage[outputdir=build]{minted} %on charge minted avec le répertoire build
- \fi
- \tcbuselibrary{minted} %on charge minted via la librairie tcbox
- \input{proflycee-tools-minted.tex}
- }%
- {}%
+ %\IfSubStr{#1}{minted}%
+ % {%
+ % \if@build
+ % \RequirePackage[outputdir=build]{minted} %on charge minted avec le répertoire build
+ % \fi
+ % \tcbuselibrary{minted} %on charge minted via la librairie tcbox
+ % \input{proflycee-tools-minted.tex}
+ % }%
+ % {}%
\IfSubStr{#1}{pythontex}%
{%
\RequirePackage[gobble=auto]{pythontex}
@@ -196,14 +205,287 @@
}
%%------patch num et xint
-\NewDocumentCommand\pflnum{ s O{} m }{%
- \IfBooleanTF{#1}%
+\NewDocumentCommand\pflnum{ s D<>{} O{} m }{%version consolidée
+ %1 := version étoilée pour arrondi (normal) / - avant la fraction éventuelle
+ \IfEq{#2}{}%argument <> vide := entier/décimal -> checked
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \IfEq{#3}{}{\num{\xintfloateval{#4}}}{\num{\xintfloateval{round(#4,#3)}}}%
+ }%
+ {%
+ \num{\xintiieval{#4}}%
+ }%
+ }%
+ {}%
+ \IfEq{#2}{frac}%argument <frac> := fraction -> checked
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \pflnumfrac*[#3]{#4}%
+ }%
+ {%
+ \pflnumfrac[#3]{#4}%
+ }%
+ }%
+ {}%
+ \IfEq{#2}{rad}%argument <rad> := angle radian -> checked (juste le - devant...)
+ {%
+ \IfBooleanTF{#1}%
+ {%
+ \pflnumrad*[#3]{#4}%
+ }%
+ {%
+ \pflnumrad[#3]{#4}%
+ }%
+ }%
+ {}%
+ \IfEq{#2}{rac}%
+ {%
+ \pflnumsqrt[#3]{#4}%
+ }%
+ {}%
+}
+
+\DeclareDocumentCommand\pflnumsqrt{ O{} m }{% argument mandataire {calcul ou fraction}
+ \xdef\calculargument{\xintIrr{\xinteval{#2}}}%
+ \xintifboolexpr{\calculargument == 1}%
{%
- \IfEq{#2}{}{\num{\xintfloateval{#3}}}{\num{\xintfloateval{round(#3,#2)}}}%
+ \ensuremath{1}%
}%
{%
- \num{\xintiieval{#3}}%
+ \IfEndWith{\calculargument}{/1}%
+ {%si c'est un entier !
+ \xdef\calculargument{\xintiieval{#2}}%
+ \xdef\ExtractRacStop{\xintiFloor{\xintfloateval{sqrt(\calculargument)}}}%
+ \xintFor* ##1 in {\xintSeq{1}{\ExtractRacStop}}\do{%
+ \xintifboolexpr{ \xintiiRem{\calculargument}{\xintiieval{##1*##1}} == 0}%si le carré divise
+ {\xdef\ExtractRacID{##1}}%
+ {}%
+ }%
+ \xdef\ExtracReste{\xintiieval{\calculargument/(\ExtractRacID*\ExtractRacID)}}%
+ \ensuremath{\xintifboolexpr{\ExtractRacID == 1 && \ExtracReste == 1}%
+ {1}%
+ { \xintifboolexpr{\ExtractRacID == 1}{}{\num{\xintiieval{\ExtractRacID}}}%
+ \xintifboolexpr{\ExtracReste == 1}{}{\sqrt{\num{\ExtracReste}}} }%
+ }%
+ }%
+ {%on va mettre sous forme a\sqrt(d)/b := buggue avec des millièmes...
+ \StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur
+ \StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur
+ \xdef\ExtractRacNNum{\xintiieval{\numerateur*\denominateur}}%
+ \xdef\ExtractRacStop{\xintiFloor{\xintfloateval{sqrt(\ExtractRacNNum)}}}%
+ \xintFor* ##1 in {\xintSeq{1}{\ExtractRacStop}}\do{%
+ \xintifboolexpr{ \xintiiRem{\ExtractRacNNum}{\xintiieval{##1*##1}} == 0}%si le carré divise
+ {\xdef\ExtractRacID{##1}}%
+ {}
+ }%
+ \xdef\ExtractRacGCD{\xintiiGCD{\ExtractRacID}{\denominateur}}%
+ \xdef\RacNumSimpl{\xintiieval{\ExtractRacID/\ExtractRacGCD}}%simpl num
+ \xdef\RacDenomSimpl{\xintiieval{\denominateur/\ExtractRacGCD}}%
+ \xdef\RacRacSimpl{\xintiieval{\ExtractRacNNum/(\ExtractRacID*\ExtractRacID)}}%
+ \IfEq{#1}{}%fraction classique
+ {%
+ \ensuremath{\frac{%
+ \xintifboolexpr{\RacNumSimpl == 1 && \RacRacSimpl == 1}%
+ {1}%
+ { \xintifboolexpr{\RacNumSimpl == 1}{}{\RacNumSimpl} \xintifboolexpr{\RacRacSimpl == 1}{}{\sqrt{\num{\RacRacSimpl}}} }%
+ }%
+ { \RacDenomSimpl }}%
+ }%
+ {}%
+ \IfEq{#1}{d}%dfraction
+ {%
+ \ensuremath{\dfrac{%
+ \xintifboolexpr{\RacNumSimpl == 1 && \RacRacSimpl == 1}%
+ {1}%
+ { \xintifboolexpr{\RacNumSimpl == 1}{}{\RacNumSimpl} \xintifboolexpr{\RacRacSimpl == 1}{}{\sqrt{\num{\RacRacSimpl}}} }%
+ }%
+ { \RacDenomSimpl }}%
+ }%
+ {}%
+ \IfEq{#1}{n}%nfraction
+ {%
+ \ensuremath{\nicefrac{%
+ \xintifboolexpr{\RacNumSimpl == 1 && \RacRacSimpl == 1}%
+ {1}%
+ { \xintifboolexpr{\RacNumSimpl == 1}{}{\RacNumSimpl} \xintifboolexpr{\RacRacSimpl == 1}{}{\sqrt{\num{\RacRacSimpl}}} }%
+ }%
+ { \RacDenomSimpl }}%
+ }%
+ {}%
}%
+}%
+}
+
+\NewDocumentCommand\pflnumfrac{ s O{} m }{%patch xinttotexfrac
+ %*=moins sur le numérateur
+ %2=argument.optionnel[d/t/dec=...]
+ %3=argument mandataire {calcul ou fraction}
+ \xdef\calculargument{\xintPRaw{\xintIrr{\xinteval{#3}}}}%on calcule et on transforme en A/B
+ \IfSubStr{\calculargument}{/}%on teste si le symbole / apparaît
+ {%si oui := fraction
+ \StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur
+ \StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur
+ \ifblank{#2}%
+ {%
+ \IfBooleanTF{#1}%
+ {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{d}%
+ {%
+ \IfBooleanTF{#1}%
+ {\ensuremath{\dfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\dfrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\dfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{t}%
+ {%
+ \IfBooleanTF{#1}%
+ {\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\tfrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{n}%
+ {%
+ {\ensuremath{\nicefrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfSubStr{#2}{dec}%on veut la forme décimale
+ {%
+ \IfSubStr{#2}{=}%si on rajoute une précision
+ {%
+ \StrBehind{#2}{=}[\precdecimal]%
+ \ensuremath{\num{\xintfloateval{round(#3,\precdecimal)}}}%
+ }%
+ {%
+ \ensuremath{\num{\xintfloateval{#3}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ }%
+ {%si non := entier
+ \num{\calculargument}%on affiche l'entier, avec le package siunitx
+ }%
+}
+
+\NewDocumentCommand\pflnumrad{ s O{} m }{%
+ %1 = options
+ %2 = angle sous la forme a*pi/b
+ \StrDel{#3}{pi}[\MPargument]%
+ \IfBeginWith{#3}{pi}%
+ {\StrSubstitute{#3}{pi}{1}[\MPargument]}%
+ {}%
+ \IfBeginWith{#3}{-pi}%
+ {\StrSubstitute{#3}{pi}{1}[\MPargument]}%
+ {}%
+ %on conserve les données initiales
+ \IfSubStr{\MPargument}{/}%on coupe numérateur/dénominateur
+ {\StrCut{\MPargument}{/}\MPnumerateurinit\MPdenominateurinit}%
+ {\xdef\MPnumerateurinit{\MPargument}\xdef\MPdenominateurinit{1}}%
+ %on affiche le début, avant simplification
+ \IfStrEq{#2}{d}%
+ {%
+ \ensuremath{%
+ \xintifboolexpr{\MPdenominateurinit == 1}%
+ {%
+ \xintifboolexpr{\MPnumerateurinit == 1}{\pi}{}%
+ \xintifboolexpr{\MPnumerateurinit == -1}{-\pi}{}%
+ \xintifboolexpr{\xinteval{abs(\MPnumerateurinit) != 1}}{\num{\MPnumerateurinit}\pi}{}%
+ }%
+ {%
+ \displaystyle\IfBooleanT{#1}{-}\frac{%
+ \xintifboolexpr{\MPnumerateurinit == 1}{\pi}{}%
+ \xintifboolexpr{\MPnumerateurinit == -1}{\IfBooleanTF{#1}{}{-}\pi}{}
+ \xintifboolexpr{\xinteval{abs(\MPnumerateurinit) != 1}}{\num{ \IfBooleanTF{#1}{\xinteval{abs(\MPnumerateurinit)}}{\MPnumerateurinit} }\pi}{}%
+ }%
+ {%
+ \num{\MPdenominateurinit}%
+ }%
+ }%
+ }%
+ }%
+ {}%
+ \IfStrEq{#2}{t}%
+ {%
+ \ensuremath{%
+ \xintifboolexpr{\MPdenominateurinit == 1}%
+ {%
+ \xintifboolexpr{\MPnumerateurinit == 1}{\pi}{}%
+ \xintifboolexpr{\MPnumerateurinit == -1}{-\pi}{}%
+ \xintifboolexpr{\xinteval{abs(\MPnumerateurinit) != 1}}{\num{\MPnumerateurinit}\pi}{}%
+ }%
+ {%
+ \IfBooleanT{#1}{-}\tfrac{%
+ \xintifboolexpr{\MPnumerateurinit == 1}{\pi}{}%
+ \xintifboolexpr{\MPnumerateurinit == -1}{-\pi}{}
+ \xintifboolexpr{\xinteval{abs(\MPnumerateurinit) != 1}}{\num{ \IfBooleanTF{#1}{\xinteval{abs(\MPnumerateurinit)}}{\MPnumerateurinit} }\pi}{}%
+ }%
+ {%
+ \num{\MPdenominateurinit}%
+ }%
+ }%
+ }%
+ }%
+ {}%
+ \IfStrEq{#2}{}%
+ {%
+ \ensuremath{%
+ \xintifboolexpr{\MPdenominateurinit == 1}%
+ {%
+ \xintifboolexpr{\MPnumerateurinit == 1}{\pi}{}%
+ \xintifboolexpr{\MPnumerateurinit == -1}{-\pi}{}%
+ \xintifboolexpr{\xinteval{abs(\MPnumerateurinit) != 1}}{\num{\MPnumerateurinit}\pi}{}%
+ }%
+ {%
+ \IfBooleanT{#1}{-}\frac{%
+ \xintifboolexpr{\MPnumerateurinit == 1}{\pi}{}%
+ \xintifboolexpr{\MPnumerateurinit == -1}{-\pi}{}
+ \xintifboolexpr{\xinteval{abs(\MPnumerateurinit) != 1}}{\num{ \IfBooleanTF{#1}{\xinteval{abs(\MPnumerateurinit)}}{\MPnumerateurinit} }\pi}{}%
+ }%
+ {%
+ \num{\MPdenominateurinit}%
+ }%
+ }%
+ }%
+ }%
+ {}%
+ \IfStrEq{#2}{n}%
+ {%
+ \ensuremath{%
+ \xintifboolexpr{\MPdenominateurinit == 1}%
+ {%
+ \xintifboolexpr{\MPnumerateurinit == 1}{\pi}{}%
+ \xintifboolexpr{\MPnumerateurinit == -1}{-\pi}{}%
+ \xintifboolexpr{\xinteval{abs(\MPnumerateurinit) != 1}}{\num{\MPnumerateurinit}\pi}{}%
+ }%
+ {%
+ \nicefrac{%
+ \xintifboolexpr{\MPnumerateurinit == 1}{\pi}{}%
+ \xintifboolexpr{\MPnumerateurinit == -1}{-\pi}{}
+ \xintifboolexpr{\xinteval{abs(\MPnumerateurinit) != 1}}{\num{\MPnumerateurinit}\pi}{}%
+ }%
+ {%
+ \num{\MPdenominateurinit}%
+ }%
+ }%
+ }%
+ }%
+ {}%
}
%%------Codes listings
@@ -234,5 +516,7 @@
\input{proflycee-tools-competences.tex}
%%------Examens
\input{proflycee-tools-exams.tex}
+%%------Cliparts
+\input{proflycee-tools-cliparts.tex}
\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-bronze-cup.pdf b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-bronze-cup.pdf
new file mode 100644
index 00000000000..3ca7af1aacd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-bronze-cup.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-bronze-medal-flat.pdf b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-bronze-medal-flat.pdf
new file mode 100644
index 00000000000..83f7d914898
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-bronze-medal-flat.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-bronze-medal.pdf b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-bronze-medal.pdf
new file mode 100644
index 00000000000..0e4712cece9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-bronze-medal.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-checked.pdf b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-checked.pdf
new file mode 100644
index 00000000000..238d76df4ef
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-checked.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-crossed.pdf b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-crossed.pdf
new file mode 100644
index 00000000000..94f04537b2d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-crossed.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-gold-cup.pdf b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-gold-cup.pdf
new file mode 100644
index 00000000000..e1b1a5fb464
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-gold-cup.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-gold-medal-flat.pdf b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-gold-medal-flat.pdf
new file mode 100644
index 00000000000..424fc345ab1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-gold-medal-flat.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-gold-medal.pdf b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-gold-medal.pdf
new file mode 100644
index 00000000000..3246c386930
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-gold-medal.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-mouse-center.pdf b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-mouse-center.pdf
new file mode 100644
index 00000000000..bc036614218
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-mouse-center.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-mouse-left.pdf b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-mouse-left.pdf
new file mode 100644
index 00000000000..40f843b8643
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-mouse-left.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-mouse-right.pdf b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-mouse-right.pdf
new file mode 100644
index 00000000000..323710e0976
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-mouse-right.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-mouse.pdf b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-mouse.pdf
new file mode 100644
index 00000000000..b8e69cd5243
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-mouse.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-notok.pdf b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-notok.pdf
new file mode 100644
index 00000000000..0fed35ca1eb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-notok.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-ok.pdf b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-ok.pdf
new file mode 100644
index 00000000000..43cac49c385
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-ok.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-silver-cup.pdf b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-silver-cup.pdf
new file mode 100644
index 00000000000..9ba7602d269
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-silver-cup.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-silver-medal-flat.pdf b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-silver-medal-flat.pdf
new file mode 100644
index 00000000000..70d0ca8d8bc
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-silver-medal-flat.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-silver-medal.pdf b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-silver-medal.pdf
new file mode 100644
index 00000000000..ced83f9d17f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/pflcliparts/pfl-silver-medal.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-analyse.tex b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-analyse.tex
index 1581688cb1f..17f3a6dbaac 100644
--- a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-analyse.tex
+++ b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-analyse.tex
@@ -759,6 +759,7 @@
\defKV[FracPeriod]{Inconnue=\def\FracPerVar{#1}}
\setKVdefault[FracPeriod]{Enonce=true,d=true,Inconnue=x,Solution=false,Brut=true,Simple=false}
+\makeatletter
\NewDocumentCommand\FractionPeriode{ O{} m m }{%on verra pour la mise en forme après...
%clés
\restoreKV[FracPeriod]% revenir au valeurs par défaut
@@ -841,6 +842,7 @@
}%
{}%
}
+\makeatletter
%====tkz ligne convexité
\makeatletter
diff --git a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex
index a021fea9374..63258375cad 100644
--- a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex
+++ b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex
@@ -3,8 +3,91 @@
% Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
\RequirePackage{ifthen}
+\RequirePackage{etoolbox}
\RequirePackage{modulus}
+%%-----Nombres premiers (code venant de la documentation de xint :-))
+\NewDocumentCommand\pflboolestpremier{ m }{%
+ \ifnumodd{#1}%
+ {%
+ \ifnumless{#1}{8}%
+ {%
+ \ifnumequal{#1}{1}{0}{1}%
+ }%le cas 3,5,7 qui sont premiers
+ {%
+ \if\xintiloop[3+2]%
+ \ifnum#1<\numexpr\xintiloopindex*\xintiloopindex\relax%
+ \expandafter\xintbreakiloopanddo\expandafter1\expandafter.%
+ \fi%
+ \ifnum#1=\numexpr(#1/\xintiloopindex)*\xintiloopindex\relax%
+ \else
+ \repeat 00\expandafter0%
+ \else%
+ \expandafter1%
+ \fi%
+ }%
+ }%fin de la partie impaire
+ {%
+ \ifnumequal{#1}{2}{1}{0}%
+ }%partie paire
+}%
+
+\NewDocumentCommand\pflestpremier{ O{est premier} O{n'est pas premier} m }{%
+ \num{#3} \xintifboolexpr{\pflboolestpremier{#3} == 1}{#1}{#2}\relax%
+}%
+
+%%------Décomposition, adaptée de pfc
+\NewDocumentCommand\pfldecompnb{ s m }{%
+ \xdef\tmpcalc{\xinteval{#2}}%
+ \xdef\tmparg{}%
+ \newcount\pflanp\newcount\pflbnp\newcount\pflcnp%
+ \newcount\pflpileb\newcount\pflexposant%
+ \pflexposant=0\relax%
+ \pflanp=\tmpcalc\relax%
+ \pflbnp=2\relax%
+ \pflpileb=2\relax%
+ \ensuremath{%
+ \whiledo{\the\pflanp > 1}{%
+ \modulo{\the\pflanp}{\the\pflbnp}%
+ \ifnum\remainder=0\relax%
+ \pflcnp=\numexpr\pflanp/\pflbnp\relax%
+ \pflexposant=\numexpr\pflexposant+1\relax%
+ \pflanp=\pflcnp\relax%
+ \else%
+ \ifnum\pflexposant>0\relax%
+ \IfBooleanTF{#1}%
+ {%
+ \xdef\tmparg{\tmparg\num{\the\pflpileb}^{\the\pflexposant}\times}%
+ }%
+ {%
+ \ifnum\pflexposant=1\relax%
+ \xdef\tmparg{\tmparg\num{\the\pflpileb}\times}%
+ \else%
+ \xdef\tmparg{\tmparg\num{\the\pflpileb}^{\the\pflexposant}\times}%
+ \fi%
+ }%
+ \fi%
+ \pflbnp=\numexpr\pflbnp+1\relax%
+ \pflpileb=\pflbnp\relax%
+ \pflexposant=0\relax%
+ \fi%
+ }%
+ \IfBooleanTF{#1}%
+ {%
+ \xdef\tmparg{\tmparg\num{\the\pflpileb}^{\the\pflexposant}}%
+ }%
+ {%
+ \ifnum\pflexposant=1\relax%
+ \xdef\tmparg{\tmparg\num{\the\pflpileb}}%
+ \else%
+ \xdef\tmparg{\tmparg\num{\the\pflpileb}^{\the\pflexposant}}%
+ \fi%
+ }%
+ \tmparg\relax%
+ }%
+}
+
+
%%------ConversionsBases
%dec->bin avec blocs de 4 chiffres
\setKVdefault[CONVDECBIN]{%
@@ -526,11 +609,11 @@
Fleches=true
}
-\NewDocumentCommand\ArbreDiviseurs{ O{} m }{%
+\NewDocumentCommand\ArbreDiviseurs{ O{} D<>{} m }{%
\useKVdefault[arbrediviseurs]%
\setKV[arbrediviseurs]{#1}%
% test avec CPoulain ^^
- \xdef\tmpcalc{\xinteval{#2}}%
+ \xdef\tmpcalc{\xinteval{#3}}%
\xdef\tmparg{}%
\newcount\anp\newcount\bnp\newcount\cnp%
\newcount\pileb\newcount\exposant%
@@ -569,7 +652,7 @@
\ifboolKV[arbrediviseurs]{Fleches}%
{\tikzstyle{flechearbrediv} = [line width=\fpeval{\TmpEchelle*0.6}pt,->,>=latex]}%
{\tikzstyle{flechearbrediv} = [line width=\fpeval{\TmpEchelle*0.6}pt]}%
- \begin{tikzpicture}[scale=\TmpEchelle,every node/.style={scale=\TmpEchelle}]
+ \begin{tikzpicture}[scale=\TmpEchelle,every node/.style={scale=\TmpEchelle},#2]
% grille d'aide
% \draw[xstep=\TmpEspNiv,ystep=\TMpEspFeuille,thin,lightgray] (0,{(-\arbredivnbdiv+1)*\TMpEspFeuille}) grid ({\arbredivnbdivprem*\TmpEspNiv},0) ;
% dernier niveau OK
@@ -1287,8 +1370,6 @@
\StrChar{#1}{##1}[\tmpchar]%
\settowidth{\charwd}{\tmpchar}%
\setlength{\widestcharwd}{\maxof{\widestcharwd}{\charwd}}%
-
-
}%
}
@@ -1902,4 +1983,65 @@
}%
}
+%====CONVERSIONS ENTRE BASES
+\ExplSyntaxOn
+%commande interne (stockage ou non)
+\NewDocumentCommand\pflbasetobase{ m m m }{%
+ %1=init
+ %2=fin
+ %3=nb
+ \ifnum#2=10%
+ \int_from_base:nn {#3}{#1}%
+ \else%
+ \int_to_Base:nn {\int_from_base:nn {#3}{#1}}{#2}%
+ \fi%
+}
+
+\NewDocumentCommand\tmpresconvbases{ m m m O{\tmpconvres} }{%
+ %1=init
+ %2=fin
+ %3=nb
+ \ifnum#2=10%
+ \xdef#4{\int_from_base:nn {#3}{#1}}%
+ \else%
+ \xdef#4{\int_to_Base:nn {\int_from_base:nn {#3}{#1}}{#2}}%
+ \fi%
+}
+\ExplSyntaxOff
+
+%commande interne split adaptée de https://tex.stackexchange.com/questions/171007/split-a-character-string-n-by-n // unbonpetit // CC BY-SA 3.0
+\NewDocumentCommand\tmpStrSplit{ O{\,} m m O{\tmpsplitres} }{%
+ %1=espace / %2=nb caract / %3=chaîne / %4=macro de stockage
+ \xdef\splitstring{#3}\let\splitresult\empty%
+ \loop%
+ \StrLen\splitstring[\tempa]%
+ \StrSplit\splitstring{\number\numexpr\tempa-#2}\splitstring\tempb%
+ \xdef\splitresult{\unless\ifx\splitstring\empty#1\fi\tempb\splitresult}%
+ \unless\ifx\splitstring\empty%
+ \repeat%
+ \xdef#4{\splitresult}%
+}
+
+\NewDocumentCommand\ConversionEntreBases{ s O{\,} m m }{%
+ %calculs internes
+ \StrCut{#3}{->}{\tmpbaseinit}{\tmpbasefin}%
+ \tmpresconvbases{\tmpbaseinit}{\tmpbasefin}{#4}%\tmpconvres
+ %affichage
+ \ensuremath{%
+ \ifnum\tmpbaseinit=2%
+ \tmpStrSplit{4}{#4}%
+ {\tmpsplitres}\IfBooleanT{#1}{_{\tmpbaseinit}}%
+ \else%
+ {#4}\IfBooleanT{#1}{_{\tmpbaseinit}}%
+ \fi%
+ =%
+ \ifnum\tmpbasefin=2%
+ \tmpStrSplit[#2]{4}{\tmpconvres}%
+ {\tmpsplitres}\IfBooleanT{#1}{_{\tmpbasefin}}%
+ \else%
+ {\tmpconvres}\IfBooleanT{#1}{_{\tmpbasefin}}%
+ \fi%
+ }%
+}
+
\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-cliparts.tex b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-cliparts.tex
new file mode 100644
index 00000000000..4e85f747346
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-cliparts.tex
@@ -0,0 +1,145 @@
+% proflycee-tools-cliparts.tex
+% Copyright 2024 Cédric Pierquet
+% Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+% logos from CC0 opencliparts (users Firkin & Juhele & qubodup & TzeenieWheenie & jetxee)
+
+%====DIMENSIONS
+\newlength{\tmpcharacterheightinline}
+\newlength{\tmpcharacterdepthinline}
+
+%====MACRO PRINCIPALE
+\NewDocumentCommand\InsererClipart{ s O{} m }{%
+ \IfBooleanTF{#1}%
+ {%
+ \IfFileExists{pfl-#3.pdf}{\includegraphics[#2]{pfl-#3.pdf}}{}%
+ }%
+ {%
+ \settototalheight{\tmpcharacterheightinline}{\hbox{AZERTYUIOPQSDFGHJKLMWXCVBNazertyuiopqsdfghjklmwxcvbn}}%
+ \settodepth{\tmpcharacterdepthinline}{\hbox{AZERTYUIOPQSDFGHJKLMWXCVBNazertyuiopqsdfghjklmwxcvbn}}%
+ \IfFileExists{pfl-#3.pdf}{\raisebox{-\tmpcharacterdepthinline}{\includegraphics[height=\tmpcharacterheightinline]{pfl-#3.pdf}}}{}%
+ }%
+}
+
+%====ALIASES
+\NewDocumentCommand\pflimgcoupeb{ s O{} }{%
+ \IfBooleanTF{#1}%
+ {\InsererClipart*[#2]{bronze-cup}}%
+ {\InsererClipart{bronze-cup}}%
+}
+
+\NewDocumentCommand\pflimgmedb{ s O{} }{%
+ \IfBooleanTF{#1}%
+ {\InsererClipart*[#2]{bronze-medal}}%
+ {\InsererClipart{bronze-medal}}%
+}
+
+\NewDocumentCommand\pflimgmedbp{ s O{} }{%
+ \IfBooleanTF{#1}%
+ {\InsererClipart*[#2]{bronze-medal-flat}}%
+ {\InsererClipart{bronze-medal-flat}}%
+}
+
+\NewDocumentCommand\pflimgverif{ s O{} }{%
+ \IfBooleanTF{#1}%
+ {\InsererClipart*[#2]{checked}}%
+ {\InsererClipart{checked}}%
+}
+
+\NewDocumentCommand\pflimgnonverif{ s O{} }{%
+ \IfBooleanTF{#1}%
+ {\InsererClipart*[#2]{crossed}}%
+ {\InsererClipart{crossed}}%
+}
+
+\NewDocumentCommand\pflimgcoupeo{ s O{} }{%
+ \IfBooleanTF{#1}%
+ {\InsererClipart*[#2]{gold-cup}}%
+ {\InsererClipart{gold-cup}}%
+}
+
+\NewDocumentCommand\pflimgmedo{ s O{} }{%
+ \IfBooleanTF{#1}%
+ {\InsererClipart*[#2]{gold-medal}}%
+ {\InsererClipart{gold-medal}}%
+}
+
+\NewDocumentCommand\pflimgmedop{ s O{} }{%
+ \IfBooleanTF{#1}%
+ {\InsererClipart*[#2]{gold-medal-flat}}%
+ {\InsererClipart{gold-medal-flat}}%
+}
+
+\NewDocumentCommand\pflimgsouris{ s O{} }{%
+ \IfBooleanTF{#1}%
+ {\InsererClipart*[#2]{mouse}}%
+ {\InsererClipart{mouse}}%
+}
+
+\NewDocumentCommand\pflimgsourisg{ s O{} }{%
+ \IfBooleanTF{#1}%
+ {\InsererClipart*[#2]{mouse-left}}%
+ {\InsererClipart{mouse-left}}%
+}
+
+\NewDocumentCommand\pflimgsourisc{ s O{} }{%
+ \IfBooleanTF{#1}%
+ {\InsererClipart*[#2]{mouse-center}}%
+ {\InsererClipart{mouse-center}}%
+}
+
+\NewDocumentCommand\pflimgsourisd{ s O{} }{%
+ \IfBooleanTF{#1}%
+ {\InsererClipart*[#2]{mouse-right}}%
+ {\InsererClipart{mouse-right}}%
+}
+
+\NewDocumentCommand\pflimgko{ s O{} }{%
+ \IfBooleanTF{#1}%
+ {\InsererClipart*[#2]{notok}}%
+ {\InsererClipart{notok}}%
+}
+
+\NewDocumentCommand\pflimgok{ s O{} }{%
+ \IfBooleanTF{#1}%
+ {\InsererClipart*[#2]{ok}}%
+ {\InsererClipart{ok}}%
+}
+
+\NewDocumentCommand\pflimgcoupea{ s O{} }{%
+ \IfBooleanTF{#1}%
+ {\InsererClipart*[#2]{silver-cup}}%
+ {\InsererClipart{silver-cup}}%
+}
+
+\NewDocumentCommand\pflimgmeda{ s O{} }{%
+ \IfBooleanTF{#1}%
+ {\InsererClipart*[#2]{silver-medal}}%
+ {\InsererClipart{silver-medal}}%
+}
+
+\NewDocumentCommand\pflimgmedap{ s O{} }{%
+ \IfBooleanTF{#1}%
+ {\InsererClipart*[#2]{silver-medal-flat}}%
+ {\InsererClipart{silver-medal-flat}}%
+}
+
+%====NOCALC
+\newlength{\tmptotalheightcurrenttxt}
+\setlength{\tmptotalheightcurrenttxt}{1em}
+\newlength{\tmptotaldepthcurrenttxt}
+\setlength{\tmptotaldepthcurrenttxt}{0.1em}
+
+\NewDocumentCommand\pflnocalc{ s O{black} }{%
+ \settototalheight{\tmptotalheightcurrenttxt}{\hbox{azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN}}%
+ \settodepth{\tmptotaldepthcurrenttxt}{\hbox{azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN}}%
+ \IfBooleanTF{#1}{}{\hspace*{-0.05\tmptotalheightcurrenttxt}}%
+ \raisebox{-\tmptotaldepthcurrenttxt}{%
+ {\begin{tikzpicture}[line width={0.1\tmptotalheightcurrenttxt}]
+ \node[#2,inner sep=0pt,scale=0.8,outer sep=0pt] (TMPPP) at (0,0) {\faCalculator} ;
+ \draw[#2,line cap=round] (TMPPP.north east)--(TMPPP.south west) ;
+ \end{tikzpicture}}%
+ }%
+ \IfBooleanTF{#1}{}{\hspace*{-0.05\tmptotalheightcurrenttxt}}%
+}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-ecritures.tex b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-ecritures.tex
index f524c41cf31..7086b10b220 100644
--- a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-ecritures.tex
+++ b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-ecritures.tex
@@ -42,7 +42,6 @@
}%
}
-
%===ENSEMBLES CLASSIQUES
\ifthenelse{\isundefined{\N}}%
{%
@@ -212,15 +211,71 @@
}
%====COORDONNEES, VECTEURS
-\NewDocumentCommand\CoordPtPl{ m m }{\ensuremath{\left(#1;#2\right)}}
-\NewDocumentCommand\CoordPtEsp{ m m m }{\ensuremath{\left(#1;#2;#3\right)}}
-\NewDocumentCommand\CoordVecPl{ m m }{\ensuremath{\begin{pmatrix} #1 \\ #2 \end{pmatrix}}}
-\NewDocumentCommand\CoordVecEsp{ m m m }{\ensuremath{\begin{pmatrix} #1 \\ #2 \\ #3 \end{pmatrix}}}
-\NewDocumentCommand\MatDeux{ m m m m }{\ensuremath{\begin{pmatrix} #1 & #2 \\ #3 & #4 \end{pmatrix}}}
+\RequirePackage{nicematrix}
+
+\NewDocumentCommand\CoordPtPl{ O{0} m m }{%
+ \IfEq{#1}{0}%si pas d'argument optionnel := array, sinon nicematrix avec cell-space-limits
+ {%
+ \ensuremath{\left(#2;#3\right)}%
+ }%
+ {%
+ \ensuremath{\begin{pNiceMatrix}[cell-space-limits=#1] #2 ; #3 \end{pNiceMatrix}}%
+ }%
+}
+\NewDocumentCommand\CoordPtEsp{ O{0} m m m }{%
+ \IfEq{#1}{0}%si pas d'argument optionnel := array, sinon nicematrix avec cell-space-limits
+ {%
+ \ensuremath{\left(#2;#3;#4\right)}%
+ }%
+ {%
+ \ensuremath{\begin{pNiceMatrix}[cell-space-limits=#1] #2 ; #3 ; #4 \end{pNiceMatrix}}%
+ }%
+}
+
+\NewDocumentCommand\CoordVecPl{ O{0} m m }{%
+ \IfEq{#1}{0}%si pas d'argument optionnel := array, sinon nicematrix avec cell-space-limits
+ {%
+ \ensuremath{\begin{pmatrix} #2 \\ #3 \end{pmatrix}}%
+ }%
+ {%
+ \ensuremath{\begin{pNiceMatrix}[cell-space-limits=#1] #2 \\ #3 \end{pNiceMatrix}}%
+ }%
+}
+
+\NewDocumentCommand\CoordVecEsp{ O{0} m m m }{%
+ \IfEq{#1}{0}%si pas d'argument optionnel := array, sinon nicematrix avec cell-space-limits
+ {%
+ \ensuremath{\begin{pmatrix} #2 \\ #3 \\ #4 \end{pmatrix}}%
+ }%
+ {%
+ \ensuremath{\begin{pNiceMatrix}[cell-space-limits=#1] #2 \\ #3 \\ #4 \end{pNiceMatrix}}%
+ }%
+}
+
+\NewDocumentCommand\MatDeux{ O{0} m m m m }{%
+ \IfEq{#1}{0}%si pas d'argument optionnel := array, sinon nicematrix avec cell-space-limits
+ {%
+ \ensuremath{\begin{pmatrix} #2 & #3 \\ #4 & #5 \end{pmatrix}}%
+ }%
+ {%
+ \ensuremath{\begin{pNiceMatrix}[cell-space-limits=#1] #2 & #3 \\ #4 & #5 \end{pNiceMatrix}}%
+ }%
+}
+
\NewDocumentCommand\Vecteur{ s m O{} }{%
\IfBooleanTF{#1}{\ensuremath{\vv*{#2}{#3}}}{\ensuremath{\vv{#2}}}%
}
+\NewDocumentCommand\EqParamDteEsp{ s O{t} m m m }{%
+ \IfBooleanTF{#1}%
+ {%
+ \ensuremath{\begin{cases}{#3}\\{#4}\\{#5}\end{cases}\text{ où }{#2}\in\R}%
+ }%
+ {%
+ \ensuremath{\begin{dcases}{#3}\\{#4}\\{#5}\end{dcases}\text{ où }{#2}\in\R}%
+ }%
+}
+
%====REPÈRES
\setKVdefault[ecrituresreperes]{%
Sep={;}
diff --git a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-minted.tex b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-minted.tex
index af4aebf3846..42b23be551e 100644
--- a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-minted.tex
+++ b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-minted.tex
@@ -2,6 +2,7 @@
% Copyright 2023-2024 Cédric Pierquet
% Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+%3.05b En standy pour le moment...
%3.00g Modif mineure pour la marge gauche
%2.7.5 Argument optionnel pour les numéros de lignes + changement déclaration environnements
%2.7.3 Correction de la couleur des bordures
diff --git a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-piton.tex b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-piton.tex
index 0cb6600617a..52ef7389550 100644
--- a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-piton.tex
+++ b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-piton.tex
@@ -2,6 +2,7 @@
% Copyright 2023-2024 Cédric Pierquet
% Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+%3.04f Ajout de clés pour la coloration des nombres et Piton
%3.04d PitonInputFile et styles, pour compatibilité pfm
%3.03c Thonny via piton + modification clé gobble ?
%3.01f PseudoCode via piton (?)
@@ -42,7 +43,7 @@
BarreTitre=true,%
Titre={{\scriptsize\faCode}~~Code Python},%
EspacementV=0.5\baselineskip,%
- CouleurNombres=orange
+ CouleurNombres={orange!75!black}
}
%==Style Moderne
@@ -160,7 +161,7 @@
\useKVdefault[envpiton]%
\setKV[envpiton]{#1}% on paramètres les nouvelles clés et on les simplifie
%------les styles piton
- \SetPitonStyle{ Number = \color{\CODPITcolnb} }
+ \SetPitonStyle[Python]{ Number = \color{\CODPITcolnb} }
\ifboolKV[envpiton]{Lignes}%si lignes=true
{\PitonOptions{left-margin=0.75em,line-numbers={skip-empty-lines=false,label-empty-lines=true,#3}}}%left-margin=auto,
{}%
@@ -227,7 +228,7 @@
\useKVdefault[envpiton]%
\setKV[envpiton]{#1}% on paramètres les nouvelles clés et on les simplifie
%------les styles piton
- \SetPitonStyle{ Number = \color{\CODPITcolnb} }
+ \SetPitonStyle[Python]{ Number = \color{\CODPITcolnb} }
\ifboolKV[envpiton]{Lignes}%si lignes=true
{\PitonOptions{left-margin=0.75em,line-numbers,line-numbers={skip-empty-lines=false,label-empty-lines=true,#3}}}%left-margin=auto,
{}%
@@ -477,12 +478,14 @@
\defKV[consolepyluatex]{%
Largeur=\def\ConsPyluaLarg{#1},
- Alignement=\def\ConsPyluaAlign{#1}
+ Alignement=\def\ConsPyluaAlign{#1},%
+ CouleurNombres=\def\CODPITcolnb{#1}
}
\setKVdefault[consolepyluatex]{%
Logo=true,%
Largeur=\linewidth,%
- Alignement=flush left
+ Alignement=flush left,%
+ CouleurNombres={orange!75!black}
}
\NewDocumentEnvironment{ConsolePiton}{ O{} D<>{} m }%
@@ -492,6 +495,7 @@
{
\restoreKV[consolepyluatex]% revenir au valeurs par défaut
\setKV[consolepyluatex]{#2}% lit les arguments optionnels
+ \SetPitonStyle[Python]{ Number = \color{\CODPITcolnb} }
\PitonOptions{width={\ConsPyluaLarg-5mm},break-lines,end-of-broken-line={\,},continuation-symbol={\;},#1}
%\PitonOptions{width={\ConsPyluaLarg-5mm},#1}
\PyLTVerbatimEnv
@@ -524,14 +528,16 @@
NomFichier=\def\thonnypitonfilename{#1},%
NomConsole=\def\thonnypitonshellname{#1},%
IntroConsole=\def\thonnypitonintroconsole{#1},%
- Gobble=\def\thonnypitongobble{#1}
+ Gobble=\def\thonnypitongobble{#1},%
+ CouleurNombres=\def\CODPITcolnb{#1}
}
\setKVdefault[pitonthonny]{%
NomFichier=script.py,%
NomConsole=console,%
IntroConsole={Python 3.11.6 /usr/bin/python},%
- Gobble={}
+ Gobble={},%
+ CouleurNombres={orange!75!black}
}
\NewPitonEnvironment{PitonThonnyEditor}{ D<>{} O{} m }%
@@ -539,6 +545,7 @@
\restoreKV[pitonthonny]%
\setKV[pitonthonny]{#1}%
\settowidth{\LargeurNumbersThonny}{\footnotesize\texttt{00}}%
+ \SetPitonStyle[Python]{Number=\color{\CODPITcolnb}}
\PitonOptions{left-margin=\LargeurNumbersThonny+1mm,line-numbers={skip-empty-lines=false,label-empty-lines=true},break-lines,indent-broken-lines,continuation-symbol={}}%
%--gestion du gobble
\IfStrEqCase{\thonnypitongobble}{%
@@ -564,6 +571,7 @@
{\restoreKV[pitonthonny]%
\setKV[pitonthonny]{#1}%
\settowidth{\LargeurNumbersThonny}{\footnotesize\texttt{00}}%
+ \SetPitonStyle[Python]{Number=\color{\CODPITcolnb}}
\PitonOptions{left-margin=\LargeurNumbersThonny+1mm,line-numbers,line-numbers={skip-empty-lines=false,label-empty-lines=true},break-lines,indent-broken-lines,continuation-symbol={}}%
\tcbset{tcbthonnypiton/.style={title=\vphantom{pf}\thonnypitonfilename\:\textcolor{gray}{×}},before skip=0.33\baselineskip,after skip=0.33\baselineskip}%
\tcolorbox[sharp corners=all,enhanced,size=small,width=#2,colframe=gray,colback=lightgray!5,tcbthonnypiton,fonttitle=\scriptsize\sffamily,coltitle=black,
@@ -579,6 +587,7 @@
\PyLTVerbatimEnv%
\tcbset{tcbthonnypitonconsole/.style={title=\vphantom{pf}\thonnypitonshellname\:\textcolor{gray}{×}},before skip=0.33\baselineskip,after skip=0.33\baselineskip}%
\noindent%
+ \SetPitonStyle[Python]{Number=\color{\CODPITcolnb}}
%--gestion du gobble
\IfStrEqCase{\thonnypitongobble}{%
{auto}{\PitonOptions{auto-gobble}}%
diff --git a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-probas.tex b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-probas.tex
index 92cff337721..c4c94613871 100644
--- a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-probas.tex
+++ b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-probas.tex
@@ -1,6 +1,7 @@
% proflycee-tools-probas.tex
% Copyright 2023-2024 Cédric Pierquet
% Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+% CC BY-SA 3.0 (from Mark Wibrow)
%%------LOISPROBAS
%calculs "simples"
@@ -245,7 +246,10 @@
StyleTrait=\def\PLAPtypetrait{#1},%
EpaisseurTrait=\def\PLAPeptrait{#1},%
PositionProbas=\def\PLAPposprob{#1},%
- CouleurFond=\def\PLAPcolback{#1}
+ CouleurFond=\def\PLAPcolback{#1},%
+ CouleurTraits=\def\PLAPcolarc{#1},%
+ CouleurProbas=\def\PLAPcolprobas{#1},%
+ CouleurNoeuds=\def\PLAPcolnoeuds{#1}
}
\setKVdefault[PLTIKZARBRE]{%
@@ -260,7 +264,10 @@
StyleTrait={},%
EpaisseurTrait=semithick,%
PositionProbas={},%
- CouleurFond=white
+ CouleurFond=white,%
+ CouleurTraits=black,%
+ CouleurProbas=black,%
+ CouleurNoeuds=black
}
\NewDocumentCommand\IntPlaceProbasArbre{ m m m m m }{%
@@ -278,21 +285,21 @@
}%
}
-\NewDocumentCommand\ArbreProbasTikz{ O{} m }{%1=options,2=libellés
+\NewDocumentCommand\ArbreProbasTikz{ O{} D<>{} m }{%1=options,2=libellés
\useKVdefault[PLTIKZARBRE]%
\setKV[PLTIKZARBRE]{#1}%
\setsepchar[.]{,./}%
- \readlist*\PLARBREDONNES{#2}%
- \begin{tikzpicture}[x=\PLAPunite,y=\PLAPunite]
+ \readlist*\PLARBREDONNES{#3}%
+ \begin{tikzpicture}[x=\PLAPunite,y=\PLAPunite,#2]
%styles
- \tikzstyle{noeud} = [font=\PLAPfont]
- \tikzstyle{probas}= [font=\PLAPfontproba]
+ \tikzstyle{noeud} = [font=\PLAPfont,text=\PLAPcolnoeuds]
+ \tikzstyle{probas}= [font=\PLAPfontproba,text=\PLAPcolprobas]
\ifboolKV[PLTIKZARBRE]{InclineProbas}
{\tikzstyle{PLetiquette}=[pos=0.525,sloped,inner sep=2pt,outer sep=2pt,rectangle]}
{\tikzstyle{PLetiquette}=[pos=0.525,inner sep=2pt,outer sep=2pt,rectangle]}
\ifboolKV[PLTIKZARBRE]{Fleche}
- {\tikzstyle{PLfleche}=[->,>=latex,\PLAPtypetrait,\PLAPeptrait]}
- {\tikzstyle{PLfleche}=[\PLAPtypetrait,\PLAPeptrait]}
+ {\tikzstyle{PLfleche}=[->,>=latex,\PLAPtypetrait,\PLAPeptrait,\PLAPcolarc]}
+ {\tikzstyle{PLfleche}=[\PLAPtypetrait,\PLAPeptrait,\PLAPcolarc]}
%arbre2x2
\IfEq{\PLAPtype}{2x2}
{%
@@ -568,22 +575,22 @@
\end{tikzpicture}
}
-\NewDocumentEnvironment{EnvArbreProbasTikz}{ O{} m }%1=options,2=libellés
+\NewDocumentEnvironment{EnvArbreProbasTikz}{ O{} D<>{} m }%1=options,2=libellés
{
\useKVdefault[PLTIKZARBRE]
\setKV[PLTIKZARBRE]{#1}
\setsepchar[.]{,./}%
- \readlist*\PLARBREDONNES{#2}
- \begin{tikzpicture}[x=\PLAPunite,y=\PLAPunite]
+ \readlist*\PLARBREDONNES{#3}
+ \begin{tikzpicture}[x=\PLAPunite,y=\PLAPunite,#2]
%styles
- \tikzstyle{noeud} = [font=\PLAPfont]
- \tikzstyle{probas}= [font=\PLAPfontproba]
+ \tikzstyle{noeud} = [font=\PLAPfont,text=\PLAPcolnoeuds]
+ \tikzstyle{probas}= [font=\PLAPfontproba,text=\PLAPcolprobas]
\ifboolKV[PLTIKZARBRE]{InclineProbas}
{\tikzstyle{PLetiquette}=[pos=0.525,sloped,inner sep=2pt,outer sep=2pt,rectangle]}
{\tikzstyle{PLetiquette}=[pos=0.525,inner sep=2pt,outer sep=2pt,rectangle]}
\ifboolKV[PLTIKZARBRE]{Fleche}
- {\tikzstyle{PLfleche}=[->,>=latex,\PLAPtypetrait,\PLAPeptrait]}
- {\tikzstyle{PLfleche}=[\PLAPtypetrait,\PLAPeptrait]}
+ {\tikzstyle{PLfleche}=[->,>=latex,\PLAPtypetrait,\PLAPeptrait,\PLAPcolarc]}
+ {\tikzstyle{PLfleche}=[\PLAPtypetrait,\PLAPeptrait,\PLAPcolarc]}
%arbre2x2
\IfEq{\PLAPtype}{2x2}
{%
@@ -1224,4 +1231,511 @@
}%
}
+%====ARBRES CHOIX
+\RequirePackage{commalists-tools}
+
+\tikzset{arbrechoixaretes/.style={semithick}}
+\tikzset{arbrechoixsommets/.style={circle,draw=none,inner sep=1pt}}
+\tikzset{arbrechoixresultats/.style={rectangle,draw,inner sep=1.5pt}}
+\tikzset{arbrechoixnotices/.style={inner sep=1pt,font=\small\ttfamily,midway,below=\fpeval{0.75*\LISTECHOIXinterfeuille}cm,}}
+\tikzset{arbrechoixdeconotices/.style={semithick,decoration={brace,mirror,raise=\fpeval{0.25*\LISTECHOIXechelle*\LISTECHOIXinterfeuille}cm,amplitude=\fpeval{0.5*\LISTECHOIXechelle*\LISTECHOIXinterfeuille}cm},decorate}}
+
+%https://tex.stackexchange.com/questions/73173/how-to-change-the-item-separator-in-tikz-foreach-command/174135#174135
+%Mark Wibrow := CC BY-SA 3.0
+\makeatletter
+\let\pgffor@dotsscanend@original=\pgffor@dotsscanend
+\def\PGFFOR@PARAMDELIM#1{%
+ \def\pgffor@emptyvalues{#1 \pgffor@stop#1}%
+ \def\pgffor@normal@list##1{%
+ \def\pgffor@values{##1#1 \pgffor@stop#1}%
+ \ifx\pgffor@values\pgffor@emptyvalues
+ \def\pgffor@values{\pgffor@stop#1}%
+ \fi%
+ \let\pgffor@body=\pgfutil@empty%
+ \global\pgffor@continuetrue%
+ \pgffor@collectbody}%
+ \def\pgffor@scanround(##1)##2#1{\def\pgffor@value{(##1)##2}\pgffor@scanned}%
+ \def\pgffor@scanone##1#1{\def\pgffor@value{##1}\pgffor@scanned}%
+ \def\pgffor@dotsscanend##1#1{\pgffor@dotsscanend@original##1,}%
+}
+
+\pgfkeys{/pgf/foreach/separator/.code=\PGFFOR@PARAMDELIM{#1}}
+\makeatother
+
+\defKV[arbrechoix]{%
+ EspaceNiveaux=\def\LISTECHOIXinterniv{#1},%
+ EspaceFeuilles=\def\LISTECHOIXinterfeuille{#1},%
+ Echelle=\def\LISTECHOIXechelle{#1},%
+ Repet=\def\LISTECHOIXrepet{#1},%
+ Notice=\def\LISTECHOIXnotice{#1},%
+ CouleursNiveaux=\def\LISTECHOIXcoulniv{#1},%
+ SepResultats=\def\LISTECHOIXsepres{#1}
+}
+
+\setKVdefault[arbrechoix]{%
+ EspaceNiveaux=2.25,%
+ EspaceFeuilles=0.5,%
+ Echelle=1,%
+ Repet={},%
+ Notice={},%
+ TraitsNotice=false,%
+ CouleursNiveaux=black,%
+ AffResultats=false,%
+ SepResultats={}
+}
+
+\NewDocumentCommand\ArbreChoix{ O{} D<>{} m }{%
+ \restoreKV[arbrechoix]%
+ \setKV[arbrechoix]{#1}%
+ \def\LISTECHOIX{#3}%
+ \IfEq{\LISTECHOIXrepet}{}%
+ {}%
+ {%
+ \foreach \i in {2,...,\LISTECHOIXrepet}{%
+ \xdef\LISTECHOIX{\LISTECHOIX,#3}%
+ }%
+ }%
+ %données utiles
+ \setsepchar[.]{,./}%
+ \readlist*\TRLISTECHOIX{\LISTECHOIX}%
+ %les couleurs...
+ \IfSubStr{\LISTECHOIXcoulniv}{,}%
+ {%
+ \setsepchar{,}%
+ \readlist*\TRLISTECHOIXCOUL{\LISTECHOIXcoulniv}%
+ }%
+ {%
+ \xdef\tmplistcouleurs{\LISTECHOIXcoulniv}%
+ \foreach \i in {2,...,\TRLISTECHOIXlen}{%
+ \xdef\tmplistcouleurs{\tmplistcouleurs,\LISTECHOIXcoulniv}%
+ }%
+ \setsepchar{,}%
+ \readlist*\TRLISTECHOIXCOUL{\tmplistcouleurs}%
+ }%
+ %la figure
+ \begin{tikzpicture}[scale=\LISTECHOIXechelle,transform shape,#2]
+ %création de la liste des étapes intermédiaires
+ \def\tmpnbchoix{1}
+ \def\tmpnbchoixniv{1}
+ \def\tmplistnbchoix{1}
+ \foreach \i in {1,...,\TRLISTECHOIXlen}{%
+ \itemtomacro\TRLISTECHOIX[\i]\tmptrlistchoix%
+ \setsepchar[.]{/}%
+ \readlist*\TRLISTECHOIXTMP{\tmptrlistchoix}%
+ \xdef\tmpnbchoix{\xinteval{\tmpnbchoix*\TRLISTECHOIXTMPlen}}%
+ \xdef\tmpnbchoixniv{\tmpnbchoixniv,\TRLISTECHOIXTMPlen}%nb choix par niveau
+ \xdef\tmplistnbchoix{\tmplistnbchoix,\tmpnbchoix}%nb choix petit à petit
+ }%
+ %données utiles tout le temps
+ \getvaluefromlist{\tmplistnbchoix}{-1}[\nbeltstotal]%
+ %découpage horizontal
+ \ifboolKV[arbrechoix]{TraitsNotice}%
+ {%
+ \foreach \i in {1,...,\TRLISTECHOIXlen}{%
+ \draw[semithick,lightgray!50,densely dashed] ({\i*\LISTECHOIXinterniv},0) --++ (0,{\nbeltstotal*\LISTECHOIXinterfeuille}) ;
+ }%
+ }%
+ {}%
+ %boucle décroissante (OK !!)
+ \foreach \TTT in {\TRLISTECHOIXlen,...,1}{%
+ %\xdef\invTTT{\xinteval{\TRLISTECHOIXlen-\TTT+1}}%
+ \getvaluefromlist{\tmplistnbchoix}{\numexpr\TTT+1\relax}[\nbelts]%
+ \xdef\espchoiceV{\xintfloateval{(\nbeltstotal)/\nbelts}}%
+ \xdef\offsetchoiceV{\xintfloateval{0.5*\LISTECHOIXinterfeuille*(\nbeltstotal-(\nbelts-1)*\espchoiceV)}}%
+ \getvaluefromlist{\tmplistnbchoix}{\TTT}[\nbeltsavant]%
+ \xdef\tmpmodchoix{\xintieval{\nbelts/\nbeltsavant}}%
+ \foreach \i in {1,...,\nbelts}{%
+ \xdef\tmpii{\xinteval{\xintiiRem{\xinteval{\i-1}}{\tmpmodchoix}+1}}%
+ \node[arbrechoixsommets,text={\TRLISTECHOIXCOUL[\TTT]}] (N-\TTT-\i) at ({(\TTT)*\LISTECHOIXinterniv},{\offsetchoiceV+(\nbelts-\i)*\LISTECHOIXinterfeuille*\espchoiceV}) {\TRLISTECHOIX[\TTT,\tmpii]} ;
+ }
+ \ifnum\TTT=\TRLISTECHOIXlen%
+ \coordinate (N-0-1) at ({0*\LISTECHOIXinterniv},{\offsetchoiceV+0.5*(\nbeltstotal-1)*\LISTECHOIXinterfeuille} );
+ \fi
+ }
+ %les flèches
+ \foreach \j in {1,...,\TRLISTECHOIXlen}{%
+ \getvaluefromlist{\tmplistnbchoix}{\j}[\nbnoeuds]%nb nœuds de départ
+ \getvaluefromlist{\tmpnbchoixniv}{\numexpr\j+1\relax}[\nbfleches]%nb flèche par nœud
+ \foreach \i in {1,...,\nbnoeuds}{%
+ \foreach \k in {1,...,\nbfleches}{%
+ \xdef\tmpk{\xinteval{(\i-1)*(\nbfleches)+\k}}
+ \draw[arbrechoixaretes,color={\TRLISTECHOIXCOUL[\j]}] (N-\the\numexpr\j-1\relax-\i) -- (N-\j-\tmpk) ;
+ }
+ }
+ }
+ %notice
+ \IfEq{\LISTECHOIXnotice}{}%
+ {}%
+ {%
+ \foreach \notice [count=\i] in \LISTECHOIXnotice
+ {%
+ \draw[arbrechoixdeconotices] ({(\i-1)*\LISTECHOIXinterniv},0) -- ({(\i)*\LISTECHOIXinterniv},0) node[arbrechoixnotices] {\notice} ;
+ }%
+ }%
+ %listerésultats
+ \ifboolKV[arbrechoix]{AffResultats}%
+ {%
+ \xdef\malistedecombis{}%
+ \ifnum\TRLISTECHOIXlen=2%
+ \itemtomacro\TRLISTECHOIX[1]\myfirsttmp%
+ \itemtomacro\TRLISTECHOIX[2]\mysecondtmp%
+ \foreach \i [separator=/] in \myfirsttmp {%
+ \foreach \j [separator=/] in \mysecondtmp {
+ \xdef\malistedecombis{\malistedecombis,\i\LISTECHOIXsepres\j}%
+ }%
+ }%
+ \fi
+ \ifnum\TRLISTECHOIXlen=3%
+ \itemtomacro\TRLISTECHOIX[1]\myfirsttmp%
+ \itemtomacro\TRLISTECHOIX[2]\mysecondtmp%
+ \itemtomacro\TRLISTECHOIX[3]\mythirdtmp%
+ \foreach \i [separator=/] in \myfirsttmp {%
+ \foreach \j [separator=/] in \mysecondtmp {
+ \foreach \k [separator=/] in \mythirdtmp {
+ \xdef\malistedecombis{\malistedecombis,\i\LISTECHOIXsepres\j\LISTECHOIXsepres\k}%
+ }%
+ }%
+ }%
+ \fi
+ \ifnum\TRLISTECHOIXlen=4%
+ \itemtomacro\TRLISTECHOIX[1]\myfirsttmp%
+ \itemtomacro\TRLISTECHOIX[2]\mysecondtmp%
+ \itemtomacro\TRLISTECHOIX[3]\mythirdtmp%
+ \itemtomacro\TRLISTECHOIX[4]\myfourthtmp%
+ \foreach \i [separator=/] in \myfirsttmp {%
+ \foreach \j [separator=/] in \mysecondtmp {
+ \foreach \k [separator=/] in \mythirdtmp {
+ \foreach \l [separator=/] in \myfourthtmp {
+ \xdef\malistedecombis{\malistedecombis,\i\LISTECHOIXsepres\j\LISTECHOIXsepres\k\LISTECHOIXsepres\l}%
+ }%
+ }%
+ }%
+ }%
+ \fi
+ \ifnum\TRLISTECHOIXlen=5%
+ \itemtomacro\TRLISTECHOIX[1]\myfirsttmp%
+ \itemtomacro\TRLISTECHOIX[2]\mysecondtmp%
+ \itemtomacro\TRLISTECHOIX[3]\mythirdtmp%
+ \itemtomacro\TRLISTECHOIX[4]\myfourthtmp%
+ \itemtomacro\TRLISTECHOIX[5]\myfifthtmp%
+ \foreach \i [separator=/] in \myfirsttmp {%
+ \foreach \j [separator=/] in \mysecondtmp {
+ \foreach \k [separator=/] in \mythirdtmp {
+ \foreach \l [separator=/] in \myfourthtmp {
+ \foreach \m [separator=/] in \myfifthtmp {
+ \xdef\malistedecombis{\malistedecombis,\i\LISTECHOIXsepres\j\LISTECHOIXsepres\k\LISTECHOIXsepres\l\LISTECHOIXsepres\m}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ \fi
+ \foreach \i in {1,...,\nbeltstotal}{%
+ \xdef\j{\xinteval{\i+1}}%
+ \draw (N-\TRLISTECHOIXlen-\i) node[arbrechoixresultats,right=\fpeval{0.5*\LISTECHOIXechelle*\LISTECHOIXinterniv}cm] {\getvaluefromlist*\malistedecombis{\j}} ;
+ }
+ }%
+ {}%
+ \end{tikzpicture}%
+}
+
+\NewDocumentCommand\IntNoeudArbreSansRemise{ m m m }{%
+ \node[arbrechoixsommets,text={\TRLISTECHOIXCOUL[#1]}] (T-#1-#2) at (N-#1-#2) {\TRLISTECHOIX[#3]} ;
+}
+\NewDocumentCommand\IntAreteArbreSansRemise{ m m }{%
+ \draw[arbrechoixaretes] (T-#1) -- (T-#2) ;
+}
+
+\NewDocumentCommand\ArbreChoixSansRemise{ O{} D<>{} m }{%
+ \restoreKV[arbrechoix]%
+ \setKV[arbrechoix]{#1}%
+ \def\LISTECHOIX{#3}%
+ %couleurs
+ \readlist*\TRLISTECHOIX{\LISTECHOIX}%
+ \IfSubStr{\LISTECHOIXcoulniv}{,}%
+ {%
+ \setsepchar{,}%
+ \readlist*\TRLISTECHOIXCOUL{\LISTECHOIXcoulniv}%
+ }%
+ {%
+ \xdef\tmplistcouleurs{\LISTECHOIXcoulniv}%
+ \foreach \i in {2,...,\TRLISTECHOIXlen}{%
+ \xdef\tmplistcouleurs{\tmplistcouleurs,\LISTECHOIXcoulniv}%
+ }%
+ \setsepchar{,}%
+ \readlist*\TRLISTECHOIXCOUL{\tmplistcouleurs}%
+ }%
+ %figure
+ \begin{tikzpicture}[scale=\LISTECHOIXechelle,transform shape,#2]
+ %création de la liste des étapes intermédiaires (OK)
+ \def\tmpnbchoixniv{\TRLISTECHOIXlen}%
+ \def\tmplistnbchoix{1,\TRLISTECHOIXlen}%
+ \def\tmplistnbchoixfact{\TRLISTECHOIXlen}%
+ \foreach \i in {1,...,\xinteval{\TRLISTECHOIXlen-1}}{%
+ \xdef\tmpnbchoix{\xinteval{\TRLISTECHOIXlen-\i}}%
+ \xdef\tmpnbchoixniv{\tmpnbchoixniv,\tmpnbchoix}%nb nœuds par niveau
+ \xdef\tmplistnbchoixfact{\xinteval{\tmplistnbchoixfact*(\TRLISTECHOIXlen-\i)}}%
+ \xdef\tmplistnbchoix{\tmplistnbchoix,\tmplistnbchoixfact}%nb choix petit à petit
+ }
+ %données utiles tout le temps
+ \getvaluefromlist{\tmplistnbchoix}{-1}[\nbeltstotal]%
+ \ifboolKV[arbrechoix]{TraitsNotice}%
+ %notice découpage
+ {%
+ \foreach \i in {1,...,\TRLISTECHOIXlen}{%
+ \draw[semithick,lightgray!50,densely dashed] ({\i*\LISTECHOIXinterniv},0) --++ (0,{\nbeltstotal*\LISTECHOIXinterfeuille}) ;
+ }%
+ }%
+ {}%
+ %boucle décroissante pour la création des nœuds
+ \foreach \TTT in {\TRLISTECHOIXlen,...,1}{%
+ \getvaluefromlist{\tmplistnbchoix}{\numexpr\TTT+1\relax}[\nbelts]%
+ \xdef\espchoiceV{\xintfloateval{(\nbeltstotal)/\nbelts}}%
+ \xdef\offsetchoiceV{\xintfloateval{0.5*\LISTECHOIXinterfeuille*(\nbeltstotal-(\nbelts-1)*\espchoiceV)}}%
+ \foreach \i in {1,...,\nbelts}{%
+ \coordinate (N-\TTT-\i) at ({(\TTT)*\LISTECHOIXinterniv},{\offsetchoiceV+(\nbelts-\i)*\LISTECHOIXinterfeuille*\espchoiceV});
+ }
+ \ifnum\TTT=\TRLISTECHOIXlen%
+ \coordinate (T-0-1) at ({0*\LISTECHOIXinterniv},{\offsetchoiceV+0.5*(\nbeltstotal-1)*\LISTECHOIXinterfeuille} );
+ \fi
+ }
+ %les sommets et les flèches ??
+ \ifnum\TRLISTECHOIXlen=4%
+ %N1
+ \IntNoeudArbreSansRemise{1}{1}{1}
+ \IntNoeudArbreSansRemise{1}{2}{2}
+ \IntNoeudArbreSansRemise{1}{3}{3}
+ \IntNoeudArbreSansRemise{1}{4}{4}
+ \IntAreteArbreSansRemise{0-1}{1-1}
+ \IntAreteArbreSansRemise{0-1}{1-2}
+ \IntAreteArbreSansRemise{0-1}{1-3}
+ \IntAreteArbreSansRemise{0-1}{1-4}
+ %N2
+ \IntNoeudArbreSansRemise{2}{1}{2}
+ \IntNoeudArbreSansRemise{2}{2}{3}
+ \IntNoeudArbreSansRemise{2}{3}{4}
+ \IntNoeudArbreSansRemise{2}{4}{1}
+ \IntNoeudArbreSansRemise{2}{5}{3}
+ \IntNoeudArbreSansRemise{2}{6}{4}
+ \IntNoeudArbreSansRemise{2}{7}{1}
+ \IntNoeudArbreSansRemise{2}{8}{2}
+ \IntNoeudArbreSansRemise{2}{9}{4}
+ \IntNoeudArbreSansRemise{2}{10}{1}
+ \IntNoeudArbreSansRemise{2}{11}{2}
+ \IntNoeudArbreSansRemise{2}{12}{3}
+ \IntAreteArbreSansRemise{1-1}{2-1}
+ \IntAreteArbreSansRemise{1-1}{2-2}
+ \IntAreteArbreSansRemise{1-1}{2-3}
+ \IntAreteArbreSansRemise{1-2}{2-4}
+ \IntAreteArbreSansRemise{1-2}{2-5}
+ \IntAreteArbreSansRemise{1-2}{2-6}
+ \IntAreteArbreSansRemise{1-3}{2-7}
+ \IntAreteArbreSansRemise{1-3}{2-8}
+ \IntAreteArbreSansRemise{1-3}{2-9}
+ \IntAreteArbreSansRemise{1-4}{2-10}
+ \IntAreteArbreSansRemise{1-4}{2-11}
+ \IntAreteArbreSansRemise{1-4}{2-12}
+ %N3
+ \IntNoeudArbreSansRemise{3}{1}{3}
+ \IntNoeudArbreSansRemise{3}{2}{4}
+ \IntNoeudArbreSansRemise{3}{3}{2}
+ \IntNoeudArbreSansRemise{3}{4}{4}
+ \IntNoeudArbreSansRemise{3}{5}{2}
+ \IntNoeudArbreSansRemise{3}{6}{3}
+ \IntNoeudArbreSansRemise{3}{7}{3}
+ \IntNoeudArbreSansRemise{3}{8}{4}
+ \IntNoeudArbreSansRemise{3}{9}{1}
+ \IntNoeudArbreSansRemise{3}{10}{4}
+ \IntNoeudArbreSansRemise{3}{11}{1}
+ \IntNoeudArbreSansRemise{3}{12}{3}
+ \IntNoeudArbreSansRemise{3}{13}{2}
+ \IntNoeudArbreSansRemise{3}{14}{4}
+ \IntNoeudArbreSansRemise{3}{15}{1}
+ \IntNoeudArbreSansRemise{3}{16}{4}
+ \IntNoeudArbreSansRemise{3}{17}{1}
+ \IntNoeudArbreSansRemise{3}{18}{2}
+ \IntNoeudArbreSansRemise{3}{19}{2}
+ \IntNoeudArbreSansRemise{3}{20}{3}
+ \IntNoeudArbreSansRemise{3}{21}{1}
+ \IntNoeudArbreSansRemise{3}{22}{3}
+ \IntNoeudArbreSansRemise{3}{23}{1}
+ \IntNoeudArbreSansRemise{3}{24}{2}
+ \IntAreteArbreSansRemise{2-1}{3-1}
+ \IntAreteArbreSansRemise{2-1}{3-2}
+ \IntAreteArbreSansRemise{2-2}{3-3}
+ \IntAreteArbreSansRemise{2-2}{3-4}
+ \IntAreteArbreSansRemise{2-3}{3-5}
+ \IntAreteArbreSansRemise{2-3}{3-6}
+ \IntAreteArbreSansRemise{2-4}{3-7}
+ \IntAreteArbreSansRemise{2-4}{3-8}
+ \IntAreteArbreSansRemise{2-5}{3-9}
+ \IntAreteArbreSansRemise{2-5}{3-10}
+ \IntAreteArbreSansRemise{2-6}{3-11}
+ \IntAreteArbreSansRemise{2-6}{3-12}
+ \IntAreteArbreSansRemise{2-7}{3-13}
+ \IntAreteArbreSansRemise{2-7}{3-14}
+ \IntAreteArbreSansRemise{2-8}{3-15}
+ \IntAreteArbreSansRemise{2-8}{3-16}
+ \IntAreteArbreSansRemise{2-9}{3-17}
+ \IntAreteArbreSansRemise{2-9}{3-18}
+ \IntAreteArbreSansRemise{2-10}{3-19}
+ \IntAreteArbreSansRemise{2-10}{3-20}
+ \IntAreteArbreSansRemise{2-11}{3-21}
+ \IntAreteArbreSansRemise{2-11}{3-22}
+ \IntAreteArbreSansRemise{2-12}{3-23}
+ \IntAreteArbreSansRemise{2-12}{3-24}
+ %N4
+ \IntNoeudArbreSansRemise{4}{1}{4}
+ \IntNoeudArbreSansRemise{4}{2}{3}
+ \IntNoeudArbreSansRemise{4}{3}{4}
+ \IntNoeudArbreSansRemise{4}{4}{2}
+ \IntNoeudArbreSansRemise{4}{5}{3}
+ \IntNoeudArbreSansRemise{4}{6}{2}
+ \IntNoeudArbreSansRemise{4}{7}{4}
+ \IntNoeudArbreSansRemise{4}{8}{3}
+ \IntNoeudArbreSansRemise{4}{9}{4}
+ \IntNoeudArbreSansRemise{4}{10}{1}
+ \IntNoeudArbreSansRemise{4}{11}{3}
+ \IntNoeudArbreSansRemise{4}{12}{1}
+ \IntNoeudArbreSansRemise{4}{13}{4}
+ \IntNoeudArbreSansRemise{4}{14}{2}
+ \IntNoeudArbreSansRemise{4}{15}{4}
+ \IntNoeudArbreSansRemise{4}{16}{1}
+ \IntNoeudArbreSansRemise{4}{17}{2}
+ \IntNoeudArbreSansRemise{4}{18}{1}
+ \IntNoeudArbreSansRemise{4}{19}{3}
+ \IntNoeudArbreSansRemise{4}{20}{2}
+ \IntNoeudArbreSansRemise{4}{21}{3}
+ \IntNoeudArbreSansRemise{4}{22}{1}
+ \IntNoeudArbreSansRemise{4}{23}{2}
+ \IntNoeudArbreSansRemise{4}{24}{1}
+ \IntAreteArbreSansRemise{3-1}{4-1}
+ \IntAreteArbreSansRemise{3-2}{4-2}
+ \IntAreteArbreSansRemise{3-3}{4-3}
+ \IntAreteArbreSansRemise{3-4}{4-4}
+ \IntAreteArbreSansRemise{3-5}{4-5}
+ \IntAreteArbreSansRemise{3-6}{4-6}
+ \IntAreteArbreSansRemise{3-7}{4-7}
+ \IntAreteArbreSansRemise{3-8}{4-8}
+ \IntAreteArbreSansRemise{3-9}{4-9}
+ \IntAreteArbreSansRemise{3-10}{4-10}
+ \IntAreteArbreSansRemise{3-11}{4-11}
+ \IntAreteArbreSansRemise{3-12}{4-12}
+ \IntAreteArbreSansRemise{3-13}{4-13}
+ \IntAreteArbreSansRemise{3-14}{4-14}
+ \IntAreteArbreSansRemise{3-15}{4-15}
+ \IntAreteArbreSansRemise{3-16}{4-16}
+ \IntAreteArbreSansRemise{3-17}{4-17}
+ \IntAreteArbreSansRemise{3-18}{4-18}
+ \IntAreteArbreSansRemise{3-19}{4-19}
+ \IntAreteArbreSansRemise{3-20}{4-20}
+ \IntAreteArbreSansRemise{3-21}{4-21}
+ \IntAreteArbreSansRemise{3-22}{4-22}
+ \IntAreteArbreSansRemise{3-23}{4-23}
+ \IntAreteArbreSansRemise{3-24}{4-24}
+ \fi
+ \ifnum\TRLISTECHOIXlen=3%
+ %N1
+ \IntNoeudArbreSansRemise{1}{1}{1}
+ \IntNoeudArbreSansRemise{1}{2}{2}
+ \IntNoeudArbreSansRemise{1}{3}{3}
+ \IntAreteArbreSansRemise{0-1}{1-1}
+ \IntAreteArbreSansRemise{0-1}{1-2}
+ \IntAreteArbreSansRemise{0-1}{1-3}
+ %N2
+ \IntNoeudArbreSansRemise{2}{1}{2}
+ \IntNoeudArbreSansRemise{2}{2}{3}
+ \IntNoeudArbreSansRemise{2}{3}{1}
+ \IntNoeudArbreSansRemise{2}{4}{3}
+ \IntNoeudArbreSansRemise{2}{5}{1}
+ \IntNoeudArbreSansRemise{2}{6}{2}
+ \IntAreteArbreSansRemise{1-1}{2-1}
+ \IntAreteArbreSansRemise{1-1}{2-2}
+ \IntAreteArbreSansRemise{1-2}{2-3}
+ \IntAreteArbreSansRemise{1-2}{2-4}
+ \IntAreteArbreSansRemise{1-3}{2-5}
+ \IntAreteArbreSansRemise{1-3}{2-6}
+ %N3
+ \IntNoeudArbreSansRemise{3}{1}{3}
+ \IntNoeudArbreSansRemise{3}{2}{2}
+ \IntNoeudArbreSansRemise{3}{3}{3}
+ \IntNoeudArbreSansRemise{3}{4}{1}
+ \IntNoeudArbreSansRemise{3}{5}{2}
+ \IntNoeudArbreSansRemise{3}{6}{1}
+ \IntAreteArbreSansRemise{2-1}{3-1}
+ \IntAreteArbreSansRemise{2-2}{3-2}
+ \IntAreteArbreSansRemise{2-3}{3-3}
+ \IntAreteArbreSansRemise{2-4}{3-4}
+ \IntAreteArbreSansRemise{2-5}{3-5}
+ \IntAreteArbreSansRemise{2-6}{3-6}
+ \fi
+ \ifnum\TRLISTECHOIXlen=2%
+ %N1
+ \IntNoeudArbreSansRemise{1}{1}{1}
+ \IntNoeudArbreSansRemise{1}{2}{2}
+ \IntAreteArbreSansRemise{0-1}{1-1}
+ \IntAreteArbreSansRemise{0-1}{1-2}
+ %N2
+ \IntNoeudArbreSansRemise{2}{1}{2}
+ \IntNoeudArbreSansRemise{2}{2}{1}
+ \IntAreteArbreSansRemise{1-1}{2-1}
+ \IntAreteArbreSansRemise{1-2}{2-2}
+ \fi
+ %notice
+ \IfEq{\LISTECHOIXnotice}{}%
+ {}%
+ {%
+ \foreach \notice [count=\i] in \LISTECHOIXnotice
+ {%
+ \draw[arbrechoixdeconotices] ({(\i-1)*\LISTECHOIXinterniv},0) -- ({(\i)*\LISTECHOIXinterniv},0) node[arbrechoixnotices] {\notice} ;
+ }
+ }%
+ %listerésultats
+ \ifboolKV[arbrechoix]{AffResultats}%
+ {%
+ \GeneratePermutations[\LISTECHOIXsepres]{#3}[\mylistofpermut]%on génère les permutations !
+ \foreach \i in {1,...,\nbeltstotal}{%
+ \draw (N-\TRLISTECHOIXlen-\i) node[arbrechoixresultats,right=\fpeval{0.5*\LISTECHOIXechelle*\LISTECHOIXinterniv}cm] {\getvaluefromlist*\mylistofpermut{\i}} ;
+ }
+ }%
+ {}%
+ \end{tikzpicture}%
+}
+
+\def\tmplistpermuttwo{{1,2},{2,1}}
+\def\tmplistpermutthree{{1,2,3},{1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1}}
+\def\tmplistpermutfour{{1,2,3,4},{1,2,4,3},{1,3,2,4},{1,3,4,2},{1,4,2,3},{1,4,3,2},{2,1,3,4},{2,1,4,3},{2,3,1,4},{2,3,4,1},{2,4,1,3},{2,4,3,1},{3,1,2,4},{3,1,4,2},{3,2,1,4},{3,2,4,1},{3,4,1,2},{3,4,2,1},{4,1,2,3},{4,1,3,2},{4,2,1,3},{4,2,3,1},{4,3,1,2},{4,3,2,1}}
+
+\NewDocumentCommand\GeneratePermutations{ O{-} m O{\mylistofpermut} }{%
+ \lenoflist{#2}[\resmylen]%
+ \ifnum\resmylen=2%
+ \xdef\tmplistindex{\tmplistpermuttwo}%
+ \fi%
+ \ifnum\resmylen=3%
+ \xdef\tmplistindex{\tmplistpermutthree}%
+ \fi%
+ \ifnum\resmylen=4%
+ \xdef\tmplistindex{\tmplistpermutfour}%
+ \fi%
+ \lenoflist{\tmplistindex}[\resmylenindex]%
+ \xdef\tmpstringperm{}%
+ \xdef#3{}%
+ \foreach \i in {1,...,\resmylenindex}{%
+ \getvaluefromlist{\tmplistindex}{\i}[\mytmplst]%
+ \lenoflist{\mytmplst}[\resmylentmptmp]%
+ \foreach \j [count=\iii] in \mytmplst {%
+ \ifnum\iii=1%
+ \xdef\tmpstringperm{\getvaluefromlist*{#2}{\j}}%
+ \else%
+ \xdef\tmpstringperm{\tmpstringperm#1\getvaluefromlist*{#2}{\j}}%
+ \fi%
+ }%
+ \ifnum\i=1%
+ \xdef#3{\tmpstringperm}%
+ \else%
+ \xdef#3{#3,\tmpstringperm}%
+ \fi%
+ }%
+}
+
\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-recreat.tex b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-recreat.tex
index 7bdc44ed023..4187c3ba4d2 100644
--- a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-recreat.tex
+++ b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-recreat.tex
@@ -610,4 +610,122 @@
\end{tikzpicture}
}
+%====PYRAMIDE D'ORANGES
+\usetikzlibrary{shadings}
+\usepackage{simplekv}
+
+\setKVdefault[PyrBalls]{%
+ Couleur=gray,%
+ Rotation=-5,%
+ Echelle=1
+}
+
+\NewDocumentCommand\EmpilementBalles{ O{} m }{%
+ \restoreKV[PyrBalls]%
+ \setKV[PyrBalls]{#1}%
+ \IfSubStr{#2}{-}%
+ {%
+ \StrCut{#2}{-}{\pyrballsdeb}{\pyrballsfin}%
+ \foreach \i in {\pyrballsdeb,...,\pyrballsfin}{%
+ \begin{tikzpicture}[scale=\fpeval{0.5*\useKV[PyrBalls]{Echelle}},rotate={\useKV[PyrBalls]{Rotation}},transform shape]
+ \foreach \x in {\numexpr\i-1\relax,...,0}{
+ \foreach \y in {\x,...,\numexpr\i-1\relax}{
+ %côté gauche
+ \shade[ball color={\useKV[PyrBalls]{Couleur}},shading angle=50] (0.6*\x,-\y+0.3*\x) circle[radius=0.55] ;
+ %côté 'droit'
+ \shade[ball color={\useKV[PyrBalls]{Couleur}},shading angle=0] (-0.6*\x,-\y+0.3*\x) circle[radius=0.55] ;
+ }
+ }
+ \end{tikzpicture}%
+ }%
+ }%
+ {%
+ \begin{tikzpicture}[scale={\useKV[PyrBalls]{Echelle}},rotate={\useKV[PyrBalls]{Rotation}},transform shape]
+ \foreach \x in {\numexpr#2-1\relax,...,0}{
+ \foreach \y in {\x,...,\numexpr#2-1\relax}{
+ %côté gauche
+ \shade[ball color={\useKV[PyrBalls]{Couleur}},shading angle=50] (0.6*\x,-\y+0.3*\x) circle[radius=0.55] ;
+ %côté 'droit'
+ \shade[ball color={\useKV[PyrBalls]{Couleur}},shading angle=0] (-0.6*\x,-\y+0.3*\x) circle[radius=0.55] ;
+ }
+ }
+ \end{tikzpicture}%
+ }%
+}
+
+%====DATES
+\IfPackageLoadedTF{datetime2}%
+ {}%
+ {%
+ \RequirePackage[fr-FR]{datetime2}
+ }%
+
+\RequirePackage{datetime2-calc}
+
+\newcount\tmpmyct
+
+\NewDocumentCommand\JourSelonDate{ s m }{%
+ \StrBehind[2]{#2}{/}[\tmptheyear]%
+ \StrBetween[1,2]{#2}{/}{/}[\tmpthemonth]%
+ \StrBefore[1]{#2}{/}[\tmptheday]%
+ \xdef\tmpdate{\tmptheyear-\tmpthemonth-\tmptheday}%
+ \DTMcomputedayofweekindex{\tmpdate}{\indexjdls}%
+ \IfStrEqCase{\indexjdls}{%
+ {0}{\IfBooleanTF{#1}{L}{l}undi}%
+ {1}{\IfBooleanTF{#1}{M}{m}ardi}%
+ {2}{\IfBooleanTF{#1}{M}{m}ercredi}%
+ {3}{\IfBooleanTF{#1}{J}{j}eudi}%
+ {4}{\IfBooleanTF{#1}{V}{v}endredi}%
+ {5}{\IfBooleanTF{#1}{S}{s}amedi}%
+ {6}{\IfBooleanTF{#1}{D}{d}imanche}%
+ }{}%
+}
+
+\NewDocumentCommand\DateComplete{ s m }{%
+ \IfBooleanTF{#1}%
+ {%
+ \JourSelonDate*{#2} %
+ }%
+ {
+ \JourSelonDate{#2} %
+ }%
+ \xdef\tmpdateinit{\tmptheyear-\tmpthemonth-\tmptheday}%
+ \DTMsavedate{datecplt}{\tmpdateinit}%
+ \DTMusedate{datecplt}{}%
+}
+
+\NewDocumentCommand\NbJoursEntreDates{ s m m O{\nbjoursentre} }{%
+ \StrBehind[2]{#2}{/}[\tmptheyear]%
+ \StrBetween[1,2]{#2}{/}{/}[\tmpthemonth]%
+ \StrBefore[1]{#2}{/}[\tmptheday]%
+ \xdef\tmpdateA{\tmptheyear-\tmpthemonth-\tmptheday}%
+ \StrBehind[2]{#3}{/}[\tmptheyear]%
+ \StrBetween[1,2]{#3}{/}{/}[\tmpthemonth]%
+ \StrBefore[1]{#3}{/}[\tmptheday]%
+ \xdef\tmpdateB{\tmptheyear-\tmpthemonth-\tmptheday}%
+ \DTMsavedate{dateinitiale}{\tmpdateA}%
+ \DTMsavedate{datefinale}{\tmpdateB}%
+ \DTMsaveddatediff{dateinitiale}{datefinale}{\tmpmyct}%
+ \xdef#4{\fpeval{abs(\tmpmyct)}}%
+ \IfBooleanT{#1}{#4}%
+}
+
+\NewDocumentCommand\AjoutJoursDate{ s m m }{%
+ \StrBehind[2]{#2}{/}[\tmptheyear]%
+ \StrBetween[1,2]{#2}{/}{/}[\tmpthemonth]%
+ \StrBefore[1]{#2}{/}[\tmptheday]%
+ \xdef\tmpdateinit{\tmptheyear-\tmpthemonth-\tmptheday}%
+ \DTMsavedate{dateinitiale}{\tmpdateinit}%
+ \DTMsaveddateoffsettojulianday{dateinitiale}{#3}\tmpmyct%
+ \DTMsavejulianday{datefinale}{\number\tmpmyct}%
+ \IfBooleanTF{#1}%
+ {%
+ \DTMfetchday{datefinale}/\DTMfetchmonth{datefinale}/\DTMfetchyear{datefinale}{}%
+ }%
+ {%
+ \DTMusedate{datefinale}{}%
+ }%
+}
+
+
\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-stats.tex b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-stats.tex
index 89fe8945032..3a622b183d2 100644
--- a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-stats.tex
+++ b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-stats.tex
@@ -555,6 +555,7 @@
% \edef#3{\the\pgf@y}%
% }
+\makeatletter
\defKV[courbeECC]{%
Largeur=\def\ecc@larg@graph{#1},%
Hauteur=\def\ecc@haut@graph{#1},%
@@ -796,6 +797,7 @@
\end{tikzpicture}%
\CourbeECCStylesDefaut%
}
+\makeatother
%détermination 'simple' des paramètres
\NewDocumentCommand\MedianeQuartilesECC{ m m }{%
@@ -838,4 +840,103 @@
}%
}
+%====Paramètres statistiques (stockage/affichage, sans rédaction)
+\NewDocumentCommand\DeterminerParamStats{ s m O{\monmin} O{\monquartileun} O{\mamediane} O{\monquartiletrois} O{\monmax} }{%
+ %traitement de la liste, *=effectifs
+ \IfBooleanTF{#1}%
+ {%
+ \setsepchar[.]{,./}%
+ \readlist*\listeTdonneesregroup{#2}%
+ \def\TMPLST{}%
+ \foreach \i in {1,...,\listeTdonneesregrouplen}{%
+ \itemtomacro\listeTdonneesregroup[\i,1]\myelt%
+ \itemtomacro\listeTdonneesregroup[\i,2]\mynbelt%
+ \foreach \j in {1,...,\mynbelt}{%
+ \xintifboolexpr{ \i*\j == 1}%
+ {%
+ \xdef\TMPLST{\myelt}%
+ }%
+ {%
+ \xdef\TMPLST{\TMPLST,\myelt}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \xdef\TMPLST{#2}%
+ \sortasclist{\TMPLST}%
+ }%
+ \definemylist{\TMPLST}{\listeTdonneesregroup}%
+ \lenofdeflist{listeTdonneesregroup}[\nbdonnees]%
+ %médiane
+ \xintifboolexpr{ \xintiiRem{\nbdonnees}{2} == 0 }%
+ {%
+ \xdef\tmpranga{\xintfloateval{\nbdonnees/2}}%\tmpranga
+ \xdef\tmprangb{\xintfloateval{\nbdonnees/2+1}}%\tmprangb
+ \getvaluefromdeflist{listeTdonneesregroup}{\tmpranga}[\myvala]%
+ \getvaluefromdeflist{listeTdonneesregroup}{\tmprangb}[\myvalb]%
+ \xdef#5{\xintfloateval{(\myvala+\myvalb)/2}}%
+ }%
+ {%
+ \xdef\tmprang{\xintfloateval{(\nbdonnees+1)/2}}%
+ \getvaluefromdeflist{listeTdonneesregroup}{\tmprang}[#5]%
+ }%
+ %quartileun
+ \xdef\tmprangqa{\xintfloateval{ceil(0.25*\nbdonnees)}}%\tmpranga
+ \getvaluefromdeflist{listeTdonneesregroup}{\tmprangqa}[#4]%
+ %quartiletrois
+ \xdef\tmprangqc{\xintfloateval{ceil(0.75*\nbdonnees)}}%\tmpranga
+ \getvaluefromdeflist{listeTdonneesregroup}{\tmprangqc}[#6]%
+ %min/max
+ \minoflist{\TMPLST}[#3]%
+ \maxoflist{\TMPLST}[#7]%
+ %moyenne
+ \meanofdeflist{listeTdonneesregroup}[\mamoyenne]%
+ %écart-type
+ \xdef\monecarttype{0}%
+ \foreach \i in {1,...,\nbdonnees}{%
+ \getvaluefromdeflist{listeTdonneesregroup}{\i}[\myval]%
+ \xdef\monecarttype{\xintfloateval{\monecarttype+(\myval-\mamoyenne)^2}}%
+ }%
+ \xdef\monecarttype{\xintfloateval{sqrt(\monecarttype/\nbdonnees)}}%
+}
+
+\NewDocumentCommand\DeterminerMoyEctype{ s m O{\mamoyenne} O{\monecarttype} }{%
+ %traitement de la liste, *=effectifs
+ \IfBooleanTF{#1}%
+ {%
+ \setsepchar[.]{,./}%
+ \readlist*\listeTdonneesregroup{#2}%
+ \def\TMPLST{}%
+ \foreach \i in {1,...,\listeTdonneesregrouplen}{%
+ \itemtomacro\listeTdonneesregroup[\i,1]\myelt%
+ \itemtomacro\listeTdonneesregroup[\i,2]\mynbelt%
+ \foreach \j in {1,...,\mynbelt}{%
+ \xintifboolexpr{ \i*\j == 1}%
+ {%
+ \xdef\TMPLST{\myelt}%
+ }%
+ {%
+ \xdef\TMPLST{\TMPLST,\myelt}%
+ }%
+ }%
+ }%
+ }%
+ {%
+ \xdef\TMPLST{#2}%
+ \sortasclist{\TMPLST}%
+ }%
+ \definemylist{\TMPLST}{\listeTdonneesregroup}%
+ \lenofdeflist{listeTdonneesregroup}[\nbdonnees]%
+ %moyenne
+ \meanofdeflist{listeTdonneesregroup}[#3]%
+ %écart-type
+ \xdef#4{0}%
+ \foreach \i in {1,...,\nbdonnees}{%
+ \getvaluefromdeflist{listeTdonneesregroup}{\i}[\myval]%
+ \xdef#4{\xintfloateval{#4+(\myval-\mamoyenne)^2}}%
+ }%
+ \xdef#4{\xintfloateval{sqrt(#4/\nbdonnees)}}%
+}
+
\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-trigo.tex b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-trigo.tex
index 6efa608f731..f47c9a33bfd 100644
--- a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-trigo.tex
+++ b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-trigo.tex
@@ -35,7 +35,8 @@
Equationsin=false,%
cos=45,%
sin=30,%
- CouleurSol=blue
+ CouleurSol=blue,%
+ ValeursTan=false
}
\newcommand\CercleTrigo[1][]{%
@@ -43,6 +44,28 @@
\setKV[cercletrigo]{#1}
\tikzset{PLval/.style={inner sep=1pt,font=\PLcerclevaleurs,fill=\PLcerclefond}}
\tikzset{PLagl/.style={inner sep=1pt,font=\PLcercleangles,fill=\PLcerclefond}}
+ %tangente ?
+ \ifboolKV[cercletrigo]{ValeursTan}%
+ {%
+ \draw[\PLcerclethick,dotted,gray] (30:\PLcerclerayon)--({\PLcerclerayon},{sqrt(3)/3*\PLcerclerayon}) ;
+ \draw[\PLcerclethick,dotted,gray] (45:\PLcerclerayon)--({\PLcerclerayon},{\PLcerclerayon}) ;
+ \draw[\PLcerclethick,dotted,gray] (60:\PLcerclerayon)--({\PLcerclerayon},{sqrt(3)*\PLcerclerayon}) ;
+ \draw[\PLcerclethick,dotted,gray] (-30:\PLcerclerayon)--({\PLcerclerayon},{-sqrt(3)/3*\PLcerclerayon}) ;
+ \draw[\PLcerclethick,dotted,gray] (-45:\PLcerclerayon)--({\PLcerclerayon},{-\PLcerclerayon}) ;
+ \draw[\PLcerclethick,dotted,gray] (-60:\PLcerclerayon)--({\PLcerclerayon},{-sqrt(3)*\PLcerclerayon}) ;
+ \draw[\PLcerclethick] ({\PLcerclerayon},{-1.8*\PLcerclerayon}) -- ({\PLcerclerayon},{1.8*\PLcerclerayon}) ;
+ \ifboolKV[cercletrigo]{AffValeurs}
+ {%
+ \draw[] ([xshift=-2pt]{\PLcerclerayon},{\PLcerclerayon})--++(4pt,0) node[right=2pt,PLval] {$1$} ;
+ \draw[] ([xshift=-2pt]{\PLcerclerayon},{-\PLcerclerayon})--++(4pt,0) node[right=2pt,PLval] {$-1$} ;
+ \draw[] ([xshift=-2pt]{\PLcerclerayon},{sqrt(3)*\PLcerclerayon})--++(4pt,0) node[right=2pt,PLval] {$\sqrt{3}$} ;
+ \draw[] ([xshift=-2pt]{\PLcerclerayon},{-sqrt(3)*\PLcerclerayon})--++(4pt,0) node[right=2pt,PLval] {$-\sqrt{3}$} ;
+ \draw[] ([xshift=-2pt]{\PLcerclerayon},{sqrt(3)/3*\PLcerclerayon})--++(4pt,0) node[right=2pt,PLval] {$\tfrac{\sqrt{3}}{3}$} ;
+ \draw[] ([xshift=-2pt]{\PLcerclerayon},{-sqrt(3)/3*\PLcerclerayon})--++(4pt,0) node[right=2pt,PLval] {$-\tfrac{\sqrt{3}}{3}$} ;
+ }%
+ {}%
+ }%
+ {}%
%valeurs remarquables
\ifboolKV[cercletrigo]{AffAngles}
{%valeursdudessus
diff --git a/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty b/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty
index d03683957ca..c59cbfaeb8e 100644
--- a/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty
+++ b/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty
@@ -2,9 +2,9 @@
% licence : Released under the LaTeX Project Public License v1.3c
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}%
-\def\filedate{2024/09/01}%
+\def\filedate{2024/11/03}%
\let\PfMfiledate\filedate%
-\def\fileversion{0.98}%
+\def\fileversion{0.99-k}%
\let\PfMfileversion\fileversion%
\ProvidesPackage{ProfMaquette}[\filedate\space v\fileversion\space Maquettage de documents]%
@@ -54,26 +54,36 @@
\makeatother
%définition des clés
\RequirePackage{simplekv}%
-\setKVdefault[Boulot]{Dys=false,Taille=14,Cours=false,Base=false,BaseHTML=false,CAN=false,Fiche=false,DM=false,DS=false,IE=false,Kholle=false,RecapBrevet=false,PdT=false,Parcours=false,Contrat=false,FdR=false,ParcoursPerso=false,OlympiadesAPMEP=false,LivreHeros=false,CorrigeInverse=false,CorrigeSeul=false,CorrigeApres=false,CorrigeFin=false,CorrigeAll=false,Brevet=false,BaremeComplet=false,BaremeGlobal=false,CorrectionColonnes=false,EntrainementColonnes=false,Epaisseur=0pt,EEpaisseur=0pt,ESansSaut=false,VersSolution=false,AvecEntrainement=false,Small=false,Footnotesize=false,Scriptsize=false,AllDirect=false,AllPouce=false,Input=false}%Les deux derniers pour essayer de mettre tous les exercices d'un même fichier en mode Reponse, en mode Indice. Pas implanté, pas testé
+\setKVdefault[Boulot]{BigTen=false,JeuPuzzle=false,QCM=false,PixelArt=false,AMC=false,IntroductionAMC=false,Graine=1,Dys=false,Taille=14,Cours=false,Base=false,BaseHTML=false,CAN=false,Fiche=false,DM=false,DS=false,IE=false,Kholle=false,RecapBrevet=false,PdT=false,Parcours=false,Contrat=false,FdR=false,ParcoursPerso=false,OlympiadesAPMEP=false,LivreHeros=false,CorrigeInverse=false,CorrigeSeul=false,CorrigeApres=false,CorrigeFin=false,CorrigeAll=false,Brevet=false,BaremeComplet=false,BaremeGlobal=false,CorrectionColonnes=false,EntrainementColonnes=false,Epaisseur=0pt,EEpaisseur=0pt,ESansSaut=false,VersSolution=false,AvecEntrainement=false,Small=false,Footnotesize=false,Scriptsize=false,AllDirect=false,AllPouce=false,Input=false}%
\defKV[Boulot]{Colonnes=\setKV[Boulot]{CorrectionColonnes}}%
\defKV[Boulot]{EColonnes=\setKV[Boulot]{EntrainementColonnes}}%
-\setKVdefault[Cours]{Couleur=Crimson,Theme=Trace écrite,NomExercice=Exercice}%
+\setKVdefault[QCM]{Colonnes,NomExercice=Question,Introduction=false,Theme={},Niveau={},Classe={},Date={}}%
+\setKVdefault[BigTen]{CoupureTableau=false,LargeurTab=40pt}%
+\defKV[BigTen]{CoupeTableau=\setKV[BigTen]{CoupureTableau}}%
+\setKVdefault[PixelArt]{Aleatoire=false,Landscape=false,CoupureTableau=false,Fichier={},Lettres={},Largeur={},Hauteur={},ListeCouleurs={},Solution=false,Theme=Essai,Arcenciel=false,LargeurTab=40pt,Diversion=false}%
+\defKV[PixelArt]{CoupeTableau=\setKV[PixelArt]{CoupureTableau}}%
+\defKV[PixelArt]{Intrus=\setKV[PixelArt]{Diversion}\setsepchar{,}\ignoreemptyitems\readlist*\PfMListePourLesIntrus{#1}\reademptyitems}
+\setKVdefault[AMC]{Date=\today,Classe={},Niveau={},Code=\jobname,NomExercice=Exercice,Theme=Numération,Calculatrice=false}%
+\setKVdefault[Cours]{Couleur=Crimson,Theme=Trace \'ecrite,NomExercice=Exercice}%
\setKVdefault[DM]{Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname}%
\setKVdefault[DS]{Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname,Calculatrice=false,Sujet=A}%
-\setKVdefault[Fiche]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice,}%
-\setKVdefault[PdT]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}%
-\setKVdefault[FdR]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}%
-\setKVdefault[Parcours]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice,Vertical=false,Plan=false,Court=false}%
-\setKVdefault[Contrat]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}%
-\setKVdefault[OlympiadesAPMEP]{Theme=Les nombres décimaux}%
-\setKVdefault[ParcoursPerso]{Fichier={}}%
+\setKVdefault[Beamer]{Theme=Les nombres d\'ecimaux,SousTheme={},Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice,}%
+\setKVdefault[Fiche]{Theme=Les nombres d\'ecimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}%
+\setKVdefault[PdT]{Theme=Les nombres d\'ecimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}%
+\setKVdefault[FdR]{Theme=Les nombres d\'ecimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}%
+\setKVdefault[Parcours]{Theme=Les nombres d\'ecimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice,Vertical=false,Plan=false,Court=false}%
+\setKVdefault[Contrat]{Theme=Les nombres d\'ecimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}%
+\setKVdefault[OlympiadesAPMEP]{Theme=Les nombres d\'ecimaux,Bandeau=false}%
+\setKVdefault[ParcoursPerso]{Fichier={},RectoVerso=false}%
\setKVdefault[IE]{Nom=\'Evaluation,Sujets=false,Theme={},Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname,Calculatrice=false}%
\defKV[IE]{Sujet=\setKV[IE]{Sujets}}%
-\setKVdefault[RecapBrevet]{Theme=Les nombres décimaux,Date=\today,Code={},NomExercice=Exercice}%
-\setKVdefault[Kholle]{Sujet=1,Numero=1,Date=15,Niveau=TSI-1,Code=\jobname,Lieu=Lycée
+\setKVdefault[RecapBrevet]{Theme=Les nombres d\'ecimaux,Date=\today,Code={},NomExercice=Exercice}%
+\setKVdefault[Kholle]{Sujet=1,Numero=1,Date=15,Niveau=TSI-1,Code=\jobname,Lieu=Lyc\'ee
du Hainaut (Valenciennes),NomEleve=Albert Einstein,CR=false}%
-\setKVdefault[CAN]{Date=\today,Niveau=6,Duree=9,CoefQ=0.4,CoefR=0.35,CoefJ=0.1}%
-\setKVdefault[ClesExercices]{NbQuestions=1,PasTitre=false,AffichageSource=false,BaremeTotal,BaremeDetaille=false,MotPoint=point,AffichageTitre=false,Calculatrice=true,Oral=false,Difficulte=0,AffichageCompetence=false,PasCorrige=false,Direct=false,Pouce=false,Parcours=false,Contrat=false,FdR=false,Routes=false,Stops=false,Background=white,Cadre=gray!50,Numerote,Ligne=false,Doublespacing=false,Onehalfspacing=false,Cadres=false,Grilles=false,Cinq=false,Huit=false,TitreSol=false,NonUtilise=false,Profile=false,AEntretenir=false,Fragile=false,AvecIndications=false,ACompleter=false,Aide=0,Score=0,EchelleSeyes=8}%
+\setKVdefault[CAN]{Date=\today,Niveau=6,Duree=9,CoefQ=0.4,CoefR=0.35,CoefJ=0.1,Logos=false}%
+\defKV[CAN]{Logo=\setKV[CAN]{Logos}}%
+\setKVdefault[ClesExercices]{Open,NbQuestions=1,PasTitre=false,AffichageSource=false,BaremeTotal,BaremeDetaille=false,MotPoint=point,AffichageTitre=false,Calculatrice=true,Oral=false,Difficulte=0,AffichageCompetence=false,PasCorrige=false,Direct=false,Pouce=false,Parcours=false,Contrat=false,FdR=false,Routes=false,Stops=false,Background=white,Cadre=gray!50,Numerote,Ligne=false,Doublespacing=false,Onehalfspacing=false,Cadres=false,Grilles=false,Cinq=false,Huit=false,TitreSol=false,NonUtilise=false,Profile=false,AEntretenir=false,Fragile=false,AvecIndications=false,ACompleter=false,Aide=0,Score=0,EchelleSeyes=8,Ajout={},TitreCorrige=Corrigé de l'exercice,Interieur=false,NombreEleves=0,Categorie=0}%
+%\defKV[ClesExercices]{AMCReponses=\ifboolKV[Boulot]{AMC}{\setKV[ClesExercices]{Open=false}}{}}%
\defKV[ClesExercices]{TitreSolution=\setKV[ClesExercices]{TitreSol}}%
\defKV[ClesExercices]{Source=\setKV[ClesExercices]{AffichageSource}}%
\defKV[ClesExercices]{Titre=\setKV[ClesExercices]{AffichageTitre}}%
@@ -89,7 +99,7 @@
\def\PfMTexteEncart{Indique ton travail ci-dessous.}%
\setKVdefault[SchemaParcours]{Colonnes=100,Rayon=2.5mm,Largeur=7.5mm,Couleur=gray!70}%,Csv=false}%
\setKVdefault[SchemaContrat]{Ecart=7mm,Rayon=2.5mm}%
-\setKVdefault[SchemaFdR]{Ecart=7mm,Colonnes=100,Rayon=2.5mm,Largeur=7.5mm,Couleur=gray!70}%,Csv=false}%
+\setKVdefault[SchemaFdR]{Ecart=7mm,Colonnes=100,Rayon=2.5mm,Largeur=7.5mm,Hauteur=1cm,Couleur=gray!70}%,Csv=false}%
% Commande pour retenir le nombre d'exercices par maquette.Utile seulement pour la clé AssembleCorrection
\xdef\PfMRetiensLienExoMa{}%
\xdef\PfMRetiensLienDefMa{}%
@@ -105,8 +115,7 @@
\leavevmode%
\cleaders\hb@xt@.44em{\hss\xleaders\hrule width0.33em\hss}\hfill%
\kern\z@}%
-
-%\makeatother%
+\makeatother%
%
\NewDocumentCommand\PfMpointilles{o}{%
\IfNoValueTF{#1}{\PfMDotfill}{\makebox[#1]{\PfMDotfill}}%
@@ -144,12 +153,15 @@
}%
}%
% Definition de longueurs
+\newlength\PfMLargeurTableauBigTen%
+\newlength\PfMLargeurTableauPixelArt%
\newlength\PfMLargeurSchemaParcours%
\newlength\PfMRayonSchemaParcours%
\newlength\PfMLargeurSchemaContrat%
\newlength\PfMRayonSchemaContrat%
\newlength\PfMLargeurSchemaFdR%
\newlength\PfMRayonSchemaFdR%
+\newlength\PfMHauteurSchemaFdR%
\newlength\PfMHauteurAppreciation%
\newlength\PfMHauteurRemarque%
\newlength\PfMLargeurQuestion%
@@ -186,10 +198,15 @@
\setcounter{PfMExoEntrai}{0}%
\newcounter{PfMCorrigeParcoursPerso}%affichage des solutions ou pas dans le cadre d'un parcours perso
\setcounter{PfMCorrigeParcoursPerso}{0}%
+\newcounter{PfMRetiensMapourPP}%Pour retenir le numéro de la maquette de référence pour les parcours perso
+\setcounter{PfMRetiensMapourPP}{0}%
\newcounter{PfMSOS}%Numéro des SOS dans les parcours fléchés
\setcounter{PfMSOS}{0}%
\newcounter{PfMAlea}%Pour repérer les valeurs aléatoires construites automatiquement
\setcounter{PfMAlea}{0}%
+%
+\newcounter{PfMNbListeReponsesAMC}%%Pour différencier les questions lors d'un exercice à plusieurs questions.
+\newcounter{PfMAMCOpen}%%Pour différencier les questions lors d'un exercice à plusieurs questions.
\newcounter{RetiensSol}%Pour l'affichage des solutions
\newcounter{RetiensRep}%Pour l'affichage des reponses.
\newcounter{RetiensInd}%Pour l'affichage des indices.
@@ -452,8 +469,8 @@
\RenewDocumentCommand\VariableAlea{s m m}{%
\IfBooleanTF{#1}{%
\stepcounter{PfMAlea}%
- \expandafter\xdef\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname{\fpeval{#3}}%
- \expandafter\xdef\csname #2\endcsname{\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname}%
+ \expandafter\xdef\csname valeur\Roman{PfMMaquette}\Roman{PfMExo}\roman{PfMAlea}\endcsname{\fpeval{#3}}%
+ \expandafter\xdef\csname #2\endcsname{\csname valeur\Roman{PfMMaquette}\Roman{PfMExo}\roman{PfMAlea}\endcsname}%
}{%
\xdef#2{\fpeval{#3}}%
}%
@@ -474,13 +491,12 @@
\RenewDocumentCommand\ChoixAlea{s o m m m}{%
\IfBooleanTF{#1}{%
\stepcounter{PfMAlea}%
-% je sauvegarde la valeur \thePfMExo-\thePfMAlea
\IfNoValueTF{#2}{%
- \expandafter\xdef\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname{\fpeval{randint(#3,#4)}}%
- \expandafter\xdef\csname #5\endcsname{\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname}%
+ \expandafter\xdef\csname valeur\Roman{PfMMaquette}\Roman{PfMExo}\roman{PfMAlea}\endcsname{\fpeval{randint(#3,#4)}}%
+ \expandafter\xdef\csname #5\endcsname{\csname valeur\Roman{PfMMaquette}\Roman{PfMExo}\roman{PfMAlea}\endcsname}%
}{%
- \expandafter\xdef\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname{\fpeval{round(randint(#3,#4)+rand(),#2)}}%
- \expandafter\xdef\csname #5\endcsname{\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname}%
+ \expandafter\xdef\csname valeur\Roman{PfMMaquette}\Roman{PfMExo}\roman{PfMAlea}\endcsname{\fpeval{round(randint(#3,#4)+rand(),#2)}}%
+ \expandafter\xdef\csname #5\endcsname{\csname valeur\Roman{PfMMaquette}\Roman{PfMExo}\roman{PfMAlea}\endcsname}%
}%
}{%
\IfNoValueTF{#2}{%
@@ -522,7 +538,8 @@
\else%
\xdef\PfMMixFoo{#2}%
\setsepchar{,}\ignoreemptyitems%
- \readlist*\ListeValeursExclues{#4}%
+ \xdef\PfMMixFooEx{#4}%
+ \readlist*\ListeValeursExclues{\PfMMixFooEx}%
\xintFor* ##1 in{\xintSeq{\fpeval{#2+1}}{#3}}\do{%
\xdef\PfMMixFoo{\PfMMixFoo,##1}%
}%
@@ -537,8 +554,16 @@
\ignoreemptyitems%
\readlist*\ListeValeursRetenues{\PfMMixFoo}%
}%
- \MelangeListe{\PfMMixFoo}{#1}%
- \xdef#5{\faa}%
+ \ifnum\ListeValeursRetenueslen=1\relax%
+ \xdef#5{\PfMMixFoo}%
+ \else%
+ \ifnum#1=1\relax
+ \MelangeListe*{\PfMMixFoo}{#1}%
+ \else
+ \MelangeListe{\PfMMixFoo}{#1}%
+ \fi
+ \xdef#5{\faa}%
+ \fi%
\fi%
}%
@@ -564,7 +589,11 @@
\readlist*\ListeValeursRetenues{\PfMMixFoo}%
}%
\ifnum\ListeValeursRetenueslen>1\relax%
- \MelangeListe{\PfMMixFoo}{#1}%
+ \ifnum#1=1\relax
+ \MelangeListe*{\PfMMixFoo}{#1}%
+ \else
+ \MelangeListe{\PfMMixFoo}{#1}%
+ \fi
\xdef#4{\faa}%
\else%
\xdef#4{\PfMMixFoo}%
@@ -697,7 +726,8 @@
\xdef\PfCRetiensRetenues{}%
\xdef\PfMMixFoo{#2,#3}%
\setsepchar{,}\ignoreemptyitems%
- \readlist*\ListeValeursExclues{#4}%
+ \xdef\PfMMixFooExclues{#4}%
+ \readlist*\ListeValeursExclues{\PfMMixFooExclues}%
\xintFor* ##1 in{\xintSeq{\fpeval{#2+1}}{\fpeval{#3-1}}}\do{%
\xdef\PfCRetiensExclues{0}%
\xintFor* ##2 in{\xintSeq{1}{\ListeValeursExclueslen}}\do{%
@@ -835,21 +865,21 @@
\NewDocumentCommand\RestoreChoixAlea{m}{%
\stepcounter{PfMAlea}%
%Je restaure la valeur \thePfMExoSol-\thePfMAlea
- \expandafter\xdef\csname #1\endcsname{\csname valeur\Roman{PfMExoSol}\roman{PfMAlea}\endcsname}%
+ \expandafter\xdef\csname #1\endcsname{\csname valeur\Roman{PfMMaquette}\Roman{PfMExoSol}\roman{PfMAlea}\endcsname}%
}%
\NewDocumentCommand\ExporteListe{mm}{%
%#1 le nom de la liste
%#2 le contenu de la liste.
\stepcounter{PfMAlea}%
- \expandafter\xdef\csname Liste\Roman{PfMExo}\roman{PfMAlea}\endcsname{#2}%
- \expandafter\xdef\csname #1\endcsname{\csname Liste\Roman{PfMExo}\roman{PfMAlea}\endcsname}%
+ \expandafter\xdef\csname Liste\Roman{PfMMaquette}\Roman{PfMExo}\roman{PfMAlea}\endcsname{#2}%
+ \expandafter\xdef\csname #1\endcsname{\csname Liste\Roman{PfMMaquette}\Roman{PfMExo}\roman{PfMAlea}\endcsname}%
}%
\NewDocumentCommand\RestoreListe{m}{%
%#1 le nom de la liste à restaurer
\stepcounter{PfMAlea}%
- \expandafter\xdef\csname #1\endcsname{\csname Liste\Roman{PfMExoSol}\roman{PfMAlea}\endcsname}%
+ \expandafter\xdef\csname #1\endcsname{\csname Liste\Roman{PfMMaquette}\Roman{PfMExoSol}\roman{PfMAlea}\endcsname}%
}%
%%
@@ -1029,7 +1059,7 @@
\def\endIndiceWrite{\immediate\closeout\verbatim@out\@esphack}
\makeatother
-\def\SolutionNow{\textbf{Correction de l'exercice --}\par\nopagebreak\setcounter{PfMExoSol}{\thePfMExo}\setcounter{PfMAlea}{0}\PfMAffichageHideItemSolution}%\setcounter{PfMExoSolAlea}{\thePfMExo}
+\def\SolutionNow{\textbf{\csname PfMTNomSol\Roman{PfMExo}\endcsname~--}\par\nopagebreak\setcounter{PfMExoSol}{\thePfMExo}\setcounter{PfMAlea}{0}\PfMAffichageHideItemSolution}%\setcounter{PfMExoSolAlea}{\thePfMExo}
\def\endSolutionNow{\par\goodbreak\PfMshowitems}
\def\ReponseNow{\textbf{Réponse(s) de l'exercice --}\par\nopagebreak\PfMAffichageHideItemSolution}
@@ -1073,22 +1103,20 @@
\NewDocumentEnvironment{Indications}{+b}{%
\ifnum\theRetiensIndic=1\relax%
\textbf{\PfMTexteDesIndications :}\par%
- \else%
- \begin{PfMHide}%
+ #1
\fi%
- #1
}{%
- \ifnum\theRetiensIndic=1\relax%
- \else
- \end{PfMHide}%
- \fi%
}%
+\makeatletter
\NewDocumentCommand\PfMChoixAffichageCorrection{}{%
+ \if@AssembleCorrections
+ \let\Solution\SolutionWrite\let\endSolution\endSolutionWrite
+ \fi
\ifboolKV[Boulot]{CorrigeAll}{%
- \let\Solution\SolutionWrite\let\endSolution\endSolutionWrite
- \let\Reponse\ReponseWrite\let\endReponse\endReponseWrite
- \let\Indice\IndiceWrite\let\endIndice\endIndiceWrite
+ \let\Solution\SolutionWrite\let\endSolution\endSolutionWrite
+ \let\Reponse\ReponseWrite\let\endReponse\endReponseWrite
+ \let\Indice\IndiceWrite\let\endIndice\endIndiceWrite
}{%
\ifboolKV[Boulot]{ParcoursPerso}{%
\let\Solution\SolutionWritePP\let\endSolution\endSolutionWritePP
@@ -1128,11 +1156,16 @@
}%
}%
}%
+\makeatother
+\makeatletter
\NewDocumentCommand\PfMChoixCorrection{}{%
\setcounter{RetiensSol}{0}%
\setcounter{RetiensRep}{0}%
\setcounter{RetiensInd}{0}%
+ \if@AssembleCorrections
+ \setcounter{RetiensSol}{1}%
+ \else
\ifboolKV[Boulot]{CorrigeFin}{%
% \ifboolKV[Boulot]{CorrigeAll}{%
% \setcounter{RetiensSol}{1}%
@@ -1149,6 +1182,7 @@
\setcounter{RetiensInd}{0}%
}{}%
}%
+ \fi
\ifboolKV[ClesExercices]{PasCorrige}{%
\setcounter{RetiensSol}{0}%
\setcounter{RetiensRep}{0}%
@@ -1167,6 +1201,7 @@
}%
}%
}%
+\makeatother
\NewDocumentCommand\PfMChoixEntrainement{}{%
\setcounter{PfMRetiensQr}{0}%
@@ -1190,16 +1225,17 @@
\xintFor* ##1 in{\xintSeq{1}{\PfMCANTotalExo}}\do{%
\setcounter{PfMExoSol}{##1}%
\setcounter{PfMAlea}{0}%
- \IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.sol}{\textbf{Question\ifnum\PfMCANTotalExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{TestCAN-##1}}:\fi}~\input{\jobname-Ma\thePfMMaquette-Ex##1.sol}\par\goodbreak}{}%page-\thePfMMaquette-##1
+ \IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.sol}{\textbf{Question\ifnum\PfMCANTotalExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{TestCAN-\thePfMMaquette-##1}}:\fi}~\input{\jobname-Ma\thePfMMaquette-Ex##1.sol}\par\goodbreak}{}%
}%
}{%
\setcounter{PfMExoSol}{0}%
%\setcounter{PfMExoSolAlea}{0}%
\xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
- \refstepcounter{PfMExoSol}%{##1}%
+ \refstepcounter{PfMExoSol}%
%\stepcounter{PfMExoSolAlea}%
\label{pagesol-\thePfMMaquette-\thePfMExoSol}%
\setcounter{PfMAlea}{0}%
+ \def\PfMTexteDuCorrige{\csname PfMTNomSol\Roman{PfMExoSol}\endcsname}%
\IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.sol}{\PfMAffichageHideItemSolution\textbf{\PfMTexteDuCorrige\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-\thePfMMaquette-##1}}\fi\PfMAffichageTitreSolution}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.sol}\par\goodbreak}{\IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.rep}{\PfMAffichageHideItemSolution\textbf{Réponse(s) seule(s) de l'exercice\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-\thePfMMaquette-##1}}\fi}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.rep}\par\goodbreak}{%
\IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.cdp}{\PfMAffichageHideItemSolution\textbf{Indice(s) pour l'exercice\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-\thePfMMaquette-##1}}\fi}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.cdp}\par\goodbreak}{}%
}%
@@ -1214,8 +1250,10 @@
\setsepchar{,}\ignoreemptyitems%
\readlist*\ListeNombreExoMq{\PfMRetiensLienExoMa}%
\reademptyitems%
- \xintFor* ##2 in{\xintSeq{1}{\thePfMMaquette}}\do{%
+ \xdef\Tototaltal{\thePfMMaquette}%
+ \xintFor* ##2 in{\xintSeq{1}{\Tototaltal}}\do{%
\refstepcounter{PfMMaquetteSol}%
+ \setcounter{PfMMaquette}{##2}%
\setcounter{PfMExoSol}{0}%
%\setcounter{PfMExoSolAlea}{0}%
\ifPfMRectoVerso%
@@ -1223,7 +1261,7 @@
\else%
\clearpage%
\fi%
- \input{\jobname-DefiMq-##2}
+ \input{\jobname-DefiMq-\thePfMMaquette}%
\ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
\xintFor* ##1 in{\xintSeq{1}{\ListeNombreExoMq[##2]}}\do{%
\stepcounter{PfMExoSol}%
@@ -1288,6 +1326,7 @@
\end{center}
\end{tcolorbox}%
}%
+
%%%%%%%% BAREME %%%%%%%%%%%
%% Bareme
\newlength{\brouillon}
@@ -1420,7 +1459,15 @@
\NewDocumentCommand{\PfMAffichageLogos}{}{%
\ifboolKV[ClesExercices]{Calculatrice}{}{\node[fill=white,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\cancel{\faCalculator}};\stepcounter{PfMNbLogo}}%
\ifboolKV[ClesExercices]{Oral}{\node[fill=white,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\faBullhorn};\stepcounter{PfMNbLogo}}{}
- }%
+ %
+ \ifnum\fpeval{\useKV[ClesExercices]{NombreEleves}}=1\relax
+ \node[colLogo,fill=white,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\faUser};\stepcounter{PfMNbLogo}
+ \else%
+ \ifnum\fpeval{\useKV[ClesExercices]{NombreEleves}}>1\relax
+ \node[colLogo,fill=white,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\faUsers};\stepcounter{PfMNbLogo}%
+ \fi%
+ \fi%
+}
%
\NewDocumentCommand{\PfMAffichageCompetencesTravaillees}{}{%
\ifboolKV[ClesExercices]{AffichageCompetence}{%
@@ -1471,6 +1518,19 @@
{\scriptsize\sffamily \useKV[ClesExercices]{Source}};
}{}%
}%
+\NewDocumentCommand{\PfMAffichageSourceQCM}{}{%
+ \ifboolKV[ClesExercices]{AffichageSource}{%
+ \node[%
+ %fill=tcbcolback,
+ anchor=east,
+ yshift=1em,
+ xshift=-\kvtcb@rightlower,%-10pt,
+ text=PfMColSrc,
+ ]
+ at (frame.south east)
+ {\scriptsize\sffamily \useKV[ClesExercices]{Source}};
+ }{}%
+}%
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -1485,6 +1545,7 @@
colback=LightSteelBlue,
colbacklower=white,
frame hidden,
+ overlay=\useKV[ClesExercices]{Ajout}%
}%
}%
@@ -1497,6 +1558,7 @@
title=\ifboolKV[ClesExercices]{AffichageTitre}{\useKV[ClesExercices]{Titre}}{},%
coltitle=black,
frame hidden,
+ overlay=\useKV[ClesExercices]{Ajout}%
}
}
@@ -1524,6 +1586,8 @@
},%
overlay unbroken and first={%
%
+ \useKV[ClesExercices]{Ajout}%
+ %
\PfMAffichageSource%
%
\ifboolKV[ClesExercices]{BaremeTotal}{%
@@ -1578,7 +1642,8 @@
}%
}{%
\ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMJusteAvantLaFinDesExercices%
\end{tcolorbox}%
\PfMApresLesExercices%
}%
@@ -1705,7 +1770,6 @@
\immediate\write\@auxout{\noexpand\expandafter\gdef\noexpand\csname \Roman{PfMMaquette}Contrat#1\endcsname{\csname \Roman{PfMMaquette}confiance#1\endcsname}}%
}%
-
\NewDocumentEnvironment{exerciceContrat}{so}{%
\setcounter{PfMAlea}{0}%
\setcounter{PfMNbLogo}{1}%
@@ -1749,13 +1813,13 @@
}%
}{%
\ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMJusteAvantLaFinDesExercices%
\end{tcolorbox}
\PfMApresLesExercices%
}%
}%
}%
-
%%% Contrat %%%
\tcbset{%
usercontrat/.style={%
@@ -1804,7 +1868,9 @@
anchor=west,
xshift=10pt,
] at (frame.north west){\bfseries\sffamily \useKV[Contrat]{NomExercice} \thePfMExo\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{}};
- %%
+ %%
+ \useKV[ClesExercices]{Ajout}%
+ %%
\PfMAffichageLogos%
%%
\PfMAffichageCompetencesTravaillees%
@@ -1825,6 +1891,7 @@
\setKV[SchemaFdR]{#1}%
\setlength{\PfMLargeurSchemaFdR}{\useKV[SchemaFdR]{Ecart}}%
\setlength{\PfMRayonSchemaFdR}{\useKV[SchemaFdR]{Rayon}}%
+ \setlength{\PfMHauteurSchemaFdR}{\useKV[SchemaFdR]{Hauteur}}%
\colorlet{PfMCouleurFdR}{\useKV[SchemaFdR]{Couleur}}%
\@ifundefined{Op@\Roman{PfMMaquette}-FdRTotalExo}{Recompilez pour obtenir la feuille de route.}%
{%
@@ -1972,7 +2039,7 @@
\begin{tikzpicture}
\coordinate (A-0) at (-\PfMLargeurSchemaFdR,0);
\coordinate (A-1) at (0,0);%
- \coordinate (B-1) at (0,1);%
+ \coordinate (B-1) at (0,\PfMHauteurSchemaFdR);%
\xintFor* ##1 in{\xintSeq{2}{\ListeRouteBasselen}}\do{%
\coordinate[xshift=\PfMLargeurSchemaFdR] (A-##1) at (A-\fpeval{##1-1});%
\coordinate[xshift=\PfMLargeurSchemaFdR] (B-##1) at (B-\fpeval{##1-1});%
@@ -2120,7 +2187,8 @@
}%
}{%
\ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMJusteAvantLaFinDesExercices%
\end{tcolorbox}
\PfMApresLesExercices%
}%
@@ -2156,7 +2224,7 @@
\NewDocumentCommand\Complement{+m}{%
\ifboolKV[Boulot]{CAN}{%
- \expandafter\xdef\csname CNReponse\endcsname{#1}%
+ \expandafter\xdef\csname CNReponse\endcsname{\noexpand #1}%
}{%
\begin{center}
#1%
@@ -2213,6 +2281,12 @@
\begin{center}
\Large Sujet \useKV[CAN]{Niveau}\hspace{0.15\linewidth}\useKV[CAN]{Date}
\end{center}
+
+ \bigskip
+
+ \begin{center}
+ \ifboolKV[CAN]{Logos}{\useKV[CAN]{Logo}}{}%
+ \end{center}
\clearpage%
}%
%\makeatother
@@ -2279,7 +2353,9 @@
anchor=west,
xshift=10pt,
] at (frame.north west){\bfseries\sffamily \useKV[FdR]{NomExercice} \thePfMExo\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{}};
- %%
+ %%
+ \useKV[ClesExercices]{Ajout}%
+ %%
\PfMAffichageLogos
%%
\PfMAffichageCompetencesTravaillees%
@@ -2472,7 +2548,8 @@
}%
}{%
\ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMJusteAvantLaFinDesExercices%
\end{tcolorbox}
\PfMApresLesExercices%
}%
@@ -2659,26 +2736,53 @@
\end{center}
}%
-\NewDocumentCommand\PfMApresLesExercices{}{%
- \ifboolKV[ClesExercices]{Ligne}{%
- \vspace*{\PfMEspaceAvantLignes}%
- \PfMSetStretch\PfMLignespointilles{\useKV[ClesExercices]{Lignes}}%
- \par\vspace*{\PfMEspaceApresLignes}\par%
- }{}%
- \par%
- \ifboolKV[ClesExercices]{Cadres}{%
- \begin{PfMtcbEncart}%
- %
- \end{PfMtcbEncart}%
- }{}%
- \ifboolKV[ClesExercices]{Grilles}{%
- \ifboolKV[ClesExercices]{Cinq}{%
- \PfMPapierCinqCinq{\useKV[ClesExercices]{CinqCinq}}{\useKV[ClesExercices]{Score}}%
+\NewDocumentCommand\PfMJusteAvantLaFinDesExercices{}{%
+ \ifboolKV[ClesExercices]{Interieur}{%
+ \ifboolKV[ClesExercices]{Ligne}{%
+ \vspace*{\PfMEspaceAvantLignes}\par%
+ \PfMSetStretch%
+ \PfMLignespointilles{\useKV[ClesExercices]{Lignes}}%
+ \par\vspace*{\PfMEspaceApresLignes}\par%
}{}%
- \ifboolKV[ClesExercices]{Huit}{%
- \PfMPapierSeyes{\useKV[ClesExercices]{Seyes}}{\useKV[ClesExercices]{Score}}%
+ \par%
+ \ifboolKV[ClesExercices]{Cadres}{%
+ \begin{PfMtcbEncart}%
+ %
+ \end{PfMtcbEncart}%
+ }{}%
+ \ifboolKV[ClesExercices]{Grilles}{%
+ \ifboolKV[ClesExercices]{Cinq}{%
+ \PfMPapierCinqCinq{\useKV[ClesExercices]{CinqCinq}}{\useKV[ClesExercices]{Score}}%
+ }{}%
+ \ifboolKV[ClesExercices]{Huit}{%
+ \PfMPapierSeyes{\useKV[ClesExercices]{Seyes}}{\useKV[ClesExercices]{Score}}%
+ }{}%
}{}%
}{}%
+}%
+
+\NewDocumentCommand\PfMApresLesExercices{}{%
+ \ifboolKV[ClesExercices]{Interieur}{}{%
+ \ifboolKV[ClesExercices]{Ligne}{%
+ \vspace*{\PfMEspaceAvantLignes}%
+ \PfMSetStretch\PfMLignespointilles{\useKV[ClesExercices]{Lignes}}%
+ \par\vspace*{\PfMEspaceApresLignes}\par%
+ }{}%
+ \par%
+ \ifboolKV[ClesExercices]{Cadres}{%
+ \begin{PfMtcbEncart}%
+ %
+ \end{PfMtcbEncart}%
+ }{}%
+ \ifboolKV[ClesExercices]{Grilles}{%
+ \ifboolKV[ClesExercices]{Cinq}{%
+ \PfMPapierCinqCinq{\useKV[ClesExercices]{CinqCinq}}{\useKV[ClesExercices]{Score}}%
+ }{}%
+ \ifboolKV[ClesExercices]{Huit}{%
+ \PfMPapierSeyes{\useKV[ClesExercices]{Seyes}}{\useKV[ClesExercices]{Score}}%
+ }{}%
+ }{}
+ }%
\ifboolKV[ClesExercices]{Profile}{\PfMshowitems}{}%
\ifboolKV[ClesExercices]{ACompleter}{%
\IfHookExistsTF{env/center/begin}{\RemoveFromHook{env/center/begin}[*]}{}%
@@ -2708,6 +2812,10 @@
}%
}%
+\NewDocumentCommand\PfMChoixNomCorrection{}{%
+ \expandafter\xdef\csname PfMTNomSol\Roman{PfMExo}\endcsname{\useKV[ClesExercices]{TitreCorrige}}
+}%
+
\NewDocumentCommand\PfMChoixHideItemSolution{}{%
\ifboolKV[ClesExercices]{Profile}{%
% J'ai un élève à profil : Je dois me souvenir que la correction doit être profilée. Le compteur PfMExo vaut \thePfMExo
@@ -2734,6 +2842,7 @@
\PfMChoixCorrection%
\PfMChoixEntrainement%
\refstepcounter{PfMExo}%
+ \PfMChoixNomCorrection%
\ifboolKV[ClesExercices]{ACompleter}{%
\let\oldenumerate\enumerate%
\let\oldendenumerate\endenumerate%
@@ -2782,15 +2891,31 @@
}%
}{%
\ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMJusteAvantLaFinDesExercices%
\end{tcolorbox}%
- % \ifboolKV[ClesExercices]{Profile}{\PfMshowitems}{}%
\PfMApresLesExercices%
}%
}%
}%
-%\makeatletter
+% \makeatletter
+\NewDocumentCommand\TikzOlympiadesAPMEP{m}{%
+ \ifPfMRectoVerso%
+ \cleardoublepage%
+ \else%
+ \clearpage%
+ \fi%
+ \setKV[OlympiadesAPMEP]{#1}%
+ \begin{tcolorbox}[colback=colLogo]
+ \begin{Dispo}*{\normalsize\logoapmep{\scale@logo}}
+ \Large\sffamily \useKV[OlympiadesAPMEP]{Theme}
+
+ (Sujet)
+ \end{Dispo}
+ \end{tcolorbox}%
+}%
+
\NewDocumentCommand\TikzOlympiadesAPMEPCor{m}{%
\ifPfMRectoVerso%
\cleardoublepage%
@@ -2825,10 +2950,9 @@
\IfBooleanTF{#1}{%
\setKV[ClesExercices]{Numerote=false}%
}{}%
+ \colorlet{ColExoFiche}{\useKV[ClesExercices]{Background}}%
\PfMAvantLesExercices%
- \refstepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
+% \refstepcounter{PfMSection}%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
\PfMChoixTitreSolution%
\PfMChoixHideItemSolution%
@@ -2842,10 +2966,12 @@
}%
}{%
\ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
- \end{tcolorbox}%
- %\ifboolKV[ClesExercices]{Profile}{\PfMshowitems}{}%
- \PfMApresLesExercices%
- }%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMJusteAvantLaFinDesExercices%
+ \end{tcolorbox}%
+ \PfMApresLesExercices%
+ }%
+ }%
}%
\NewDocumentEnvironment{exerciceDS}{so}{%
@@ -2885,6 +3011,7 @@
}{%
\ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMJusteAvantLaFinDesExercices%
\end{tcolorbox}%
\PfMApresLesExercices%
}%
@@ -2919,11 +3046,13 @@
]
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
}{%
+ \PfMJusteAvantLaFinDesExercices%
\end{tcolorbox}
\PfMApresLesExercices%
}%
\makeatother
+
%%% Recap Brevet
%%% Style Brevet
\tcbset{%
@@ -2981,6 +3110,7 @@
at (frame.north east)%
{\footnotesize\sffamily \total{\the\c@PfMSection-\the\c@PfMExo}};%
}{}%
+ \useKV[ClesExercices]{Ajout}%
}%
}%
}%
@@ -3014,6 +3144,8 @@
xshift=10pt,
] at (frame.north west){\bfseries\sffamily \useKV[PdT]{NomExercice} \thePfMExo\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{}};
}
+ %%
+ \useKV[ClesExercices]{Ajout}%
%%
\PfMAffichageLogos%
%
@@ -3485,6 +3617,8 @@
anchor=west,
xshift=\kvtcb@leftlower,
] at (frame.north west){\bfseries\sffamily\useKV[Fiche]{NomExercice}\ifboolKV[ClesExercices]{Numerote}{ \thePfMExo}{}\ifboolKV[ClesExercices]{AffichageTitre}{\ifboolKV[ClesExercices]{Numerote}{~:~}{\xdef\PfMTitiLgNE{\useKV[Fiche]{NomExercice}}\IfStrEq{\PfMTitiLgNE}{}{}{~:~}}\useKV[ClesExercices]{Titre}}{}};
+ %%
+ \useKV[ClesExercices]{Ajout}%
%%
\PfMAffichageLogos%
%
@@ -3509,7 +3643,6 @@
enhanced,
breakable,
colback=ColExoFiche,
- % colframe=PfMCadreFiche,
frame hidden,
overlay unbroken and first={%
\draw[colLogo,line width=1pt] ([yshift=-12pt]frame.north west)--([yshift=-12pt]frame.north east);
@@ -3519,7 +3652,21 @@
anchor=west,
xshift=\kvtcb@leftlower,
] at (frame.north west){\color{colLogo}\resizebox{1em}{!}{\carreEntoure{}}~\Large\bfseries\sffamily\useKV[Fiche]{NomExercice}\ifboolKV[ClesExercices]{Numerote}{ \thePfMExo}{}\ifboolKV[ClesExercices]{AffichageTitre}{\ifboolKV[ClesExercices]{Numerote}{.~}{\xdef\PfMTitiLgNE{\useKV[Fiche]{NomExercice}}\IfStrEq{\PfMTitiLgNE}{}{}{.~}}\useKV[ClesExercices]{Titre}}{}};
- %%
+ \node[%
+ name=B,
+ fill=ColExoFiche,
+ anchor=east,
+ xshift=-\kvtcb@leftlower,
+ ] at (frame.north east){\color{colLogo}\Large\bfseries\sffamily\ifnum\fpeval{\useKV[ClesExercices]{Categorie}}=1\relax
+ Spécialistes%
+ \else
+ \ifnum\fpeval{\useKV[ClesExercices]{Categorie}}=2\relax
+ Non spécialistes
+ \fi
+ \fi};
+ %%
+ \useKV[ClesExercices]{Ajout}%
+ %%
\PfMAffichageLogos%
%
\PfMAffichageCompetencesTravaillees%
@@ -3578,7 +3725,9 @@
anchor=west,
xshift=10pt,
] at (frame.north west){\bfseries\sffamily \useKV[Parcours]{NomExercice} \thePfMExo\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{}};
- %%
+ %%
+ \useKV[ClesExercices]{Ajout}%
+ %%
\PfMAffichageLogos%
%%
\PfMAffichageCompetencesTravaillees%
@@ -3618,7 +3767,7 @@
\end{tcolorbox}%
}%
-\newcommand\TikzDSCor[1]{%
+\NewDocumentCommand\TikzDSCor{m}{%
\ifPfMRectoVerso%
\cleardoublepage%
\else%
@@ -3659,6 +3808,8 @@
title=Exercice\ifboolKV[ClesExercices]{Numerote}{ \thePfMExo}{}\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{},
overlay unbroken and first={%
%
+ \useKV[ClesExercices]{Ajout}%
+ %
\PfMAffichageSource%
%
\ifboolKV[ClesExercices]{BaremeTotal}{%
@@ -3703,7 +3854,7 @@
\clearpage
\begin{minipage}{0.6\linewidth}
\begin{tcolorbox}[userie]%
- \sffamily \useKV[IE]{Nom} \useKV[IE]{Numero} : \useKV[IE]{Theme} \ifboolKV[IE]{Sujets}{\scriptsize(Sujet \useKV[IE]{Sujet})}{}
+ \sffamily \useKV[IE]{Nom} \useKV[IE]{Numero} : \useKV[IE]{Theme} \ifboolKV[IE]{Sujets}{{\scriptsize(Sujet \useKV[IE]{Sujet})}}{}
\vspace{1em}
\par{\tiny\useKV[IE]{Code}}\hfill{\scriptsize\useKV[IE]{Date}}
\end{tcolorbox}%
@@ -3728,42 +3879,54 @@
\end{tcolorbox}%
}%
-\NewDocumentCommand\Recapitulatif{mm}{%
- \setKV[Boulot]{#1}%
- \DTLforeach*{dataperso}{\Prenom=PrenomEleve,\Nom=NomEleve,\RecapListeExo=ListeExo}{%
- \ifboolKV[Boulot]{Dys}{%
- \begin{Maquette}[Fiche,Dys]{#2,Code=\normalsize\Prenom~\Nom}%
- }{%
- \begin{Maquette}[Fiche]{#2,Code=\normalsize\Prenom~\Nom}%
- }%
+\NewDocumentCommand\PfMRecapitulatif{mm}{%
+ \setKV[Boulot]{#1}%
+ \setKV[ParcoursPerso]{#2}%
+ \setcounter{PfMRetiensMapourPP}{\thePfMMaquette}%
+ \DTLforeach*{dataperso}{\Prenom=PrenomEleve,\Nom=NomEleve,\RecapListeExo=ListeExo,\PfMMaquettePerso=TypeMaq}{%
+ \begin{Maquette}[Fiche]{#2,Code=\normalsize\Prenom~\Nom}%
+ \xdef\PfMNumeroPageDepartPP{\thepage}%
+ \ifx\bla\PfMMaquettePerso\bla%
+ \else%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeChoixPerso{\PfMMaquettePerso}%
+ \reademptyitems%
+ \foreachitem\compteur\in\ListeChoixPerso{%
+ \IfStrEqCase{\compteur}{%
+ {Dys}{\setKV[Boulot]{Dys}}%
+ }%
+ }%
+ \fi%
+ \PfMBasculeDys%
\readlist*\ListeExercices{\RecapListeExo}%
- \ifnum\fpeval{\ListeExerciceslen}=1\relax{}
- \setKVdefault[ClesExercices]{Numerote=false}
-% \begin{exercice}*
- \input{\jobname-Ma\thePfMMaquette-PPEx\ListeExercices[1].tex}%
- % \end{exercice}%
- \setKVdefault[ClesExercices]{Numerote}
- \else
+ \ifnum\fpeval{\ListeExerciceslen}=1\relax{}%
+ \setKVdefault[ClesExercices]{Numerote=false}%
+ \input{\jobname-Ma\thePfMRetiensMapourPP-PPEx\ListeExercices[1].tex}%
+ \setKVdefault[ClesExercices]{Numerote}%
+ \else%
\foreach\i in{1,...,\ListeExerciceslen}{%
- % \begin{exercice}
- \input{\jobname-Ma\thePfMMaquette-PPEx\ListeExercices[\i].tex}%
- % \end{exercice}%
- }
- \fi
+ \input{\jobname-Ma\thePfMRetiensMapourPP-PPEx\ListeExercices[\i].tex}%
+ }%
+ \fi%
\ifnum\thePfMCorrigeParcoursPerso=1\relax%
- % \RecapitulatifCorrection{#2}%
\clearpage
\TikzFicheCor{#1,Code=\normalsize\Prenom~\Nom}%
\readlist*\ListeExercices{\RecapListeExo}%
- \ifnum\fpeval{\ListeExerciceslen}=1\relax{}
+ \ifnum\fpeval{\ListeExerciceslen}=1\relax{}%
\textbf{Corrigé de l'exercice} : \input{\jobname-Ma\thePfMMaquette-PPEx\ListeExercices[1].sol}\par\goodbreak%
- \else
+ \else%
\foreach\i in{1,...,\ListeExerciceslen}{%
\textbf{Corrigé de l'exercice \i} : \input{\jobname-Ma\thePfMMaquette-PPEx\ListeExercices[\i].sol}\par\goodbreak%
}%
\fi%
\fi%
+ \xdef\PfMNumeroPageArriveePP{\thepage}%
\end{Maquette}%
+ \ifboolKV[ParcoursPerso]{RectoVerso}{%
+ \ifodd\fpeval{\PfMNumeroPageArriveePP-\PfMNumeroPageDepartPP+1}\relax%
+ \clearpage\phantom{t}\clearpage%
+ \fi%
+ }{}%
}%
}%
@@ -3834,7 +3997,7 @@
\setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
\PfMChangerTailleCorrection%
}%
-\makeatletter
+\makeatother
\NewDocumentCommand\PfMAffichageCorrectionColonnes{}{%
\ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
@@ -3855,7 +4018,7 @@
}%
}%
-\setKVdefault[LivreHeros]{Theme=Les nombres décimaux}
+\setKVdefault[LivreHeros]{Theme=Les nombres d\'ecimaux}
\NewDocumentCommand\vaen{m}{\ref{#1}}%
@@ -3901,10 +4064,691 @@
\makeatother
%%%%
+\NewDocumentEnvironment{exerciceBeamer}{so}{%
+ \setcounter{PfMAlea}{0}%
+ \setcounter{PfMNbLogo}{1}%
+ % Mettre les indications hors-jeu
+ \setcounter{RetiensIndic}{0}
+ \useKVdefault[ClesExercices]%
+ \setKV[ClesExercices]{#2}%
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
+ \ifboolKV[ClesExercices]{NonUtilise}{%
+ % Mettre la correction hors-jeu
+ \setKV[ClesExercices]{PasCorrige}%
+ \PfMChoixCorrection%
+ \begin{PfMHide}
+ }{%
+ \IfBooleanTF{#1}{%
+ \setKV[ClesExercices]{Numerote=false}%
+ }{}%
+ \colorlet{ColExoFiche}{\useKV[ClesExercices]{Background}}%
+ \colorlet{PfMCadreFiche}{\useKV[ClesExercices]{Cadre}}%
+ \setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
+ \PfMAvantLesExercices%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMChoixTitreSolution%
+ \PfMChoixHideItemSolution%
+ \begin{tcolorbox}[%
+ tikzbeamer,
+ label is label,
+ label=page-\thePfMMaquette-\thePfMExo
+ ]
+ \ifboolKV[Boulot]{Dys}{\raggedright}{}%
+ }%
+ }%
+ }{%
+ \ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMJusteAvantLaFinDesExercices%
+ \end{tcolorbox}%
+ % \ifboolKV[ClesExercices]{Profile}{\PfMshowitems}{}%
+ \PfMApresLesExercices%
+ }%
+ }%
+}%
+
+\makeatletter
+\tcbset{%
+ tikzbeamer/.style={%
+ before skip=0.5em,
+ enhanced,
+ breakable,
+ colback=white,%ColExoFiche,
+ frame hidden,
+ %colframe=PfMCadreFiche,
+ overlay unbroken and first={%
+ \node[%
+ name=A,
+ anchor=center,
+ xshift=8*\kvtcb@leftlower/10,
+ yshift=-10*\kvtcb@leftlower/9,
+ ] at (frame.north west){\thePfMExo};
+ %%
+ \useKV[ClesExercices]{Ajout}%
+ %%
+ \PfMAffichageSource%
+ }%
+ }%
+}%
+\makeatother
+
+%%%%%%%%%%%%%%%%% AMC
+
+\def\PfMTexteAMC{\scriptsize Pour chaque question, remplir avec un stylo {\em noir} la case associée à {\em l'unique} réponse correcte.\par En cas d'erreur, {\em ne redessiner pas} la case cochée par erreur, mettez simplement un coup de « blanc » dessus.}
+
+\newcommand\TikzAMC{%
+ \begin{tcolorbox}[%
+ colback=LightGray!10,
+ colframe=LightGray,
+ enhanced,%
+ overlay unbroken and first={%
+ \ifboolKV[AMC]{Calculatrice}{\node[yshift=1em] at (frame.south) {\scriptsize\sffamily-- Calculatrice autorisée --};}{}%
+ }%
+ ]%
+ \sffamily \useKV[AMC]{Theme}
+ \vspace{1em}
+ \par\hfill{\scriptsize\useKV[AMC]{Date}}
+ \end{tcolorbox}%
+ \ifboolKV[Boulot]{IntroductionAMC}{\PfMTexteAMC}{}%
+ \par\bigskip%
+}%
+
+\newlength\PfMAMCBarreFraction
+\makeatletter
+\setKVdefault[ListeReponses]{Lettre=x,Unites=false}
+\defKV[ListeReponses]{Unite=\setKV[ListeReponses]{Unites}\DeclareSIUnit{\TempoAMC}{#1}}
+
+\NewDocumentCommand\ListeReponses{som}{%
+ \ifboolKV[Boulot]{AMC}{%
+ \useKVdefault[ListeReponses]%
+ \setKV[ListeReponses]{#2}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeAMCRep{#3}%
+ \reademptyitems%
+% \showitems\ListeAMCRep[]
+ \setcounter{PfMAMCOpen}{1}%
+ \stepcounter{PfMNbListeReponsesAMC}%
+ \par
+ \ifnum\fpeval{\ListeAMCReplen}=1\relax%
+ % On teste la présence de ! pour les fractions, de : pour l'écriture ax+b, de ! pour une écriture du style $a^p$ et de | pour les écritures scientifiques.
+ \StrCount{\ListeAMCRep[1]}{/}[\PfMAMCPresenceFraction]%
+ \StrCount{\ListeAMCRep[1]}{:}[\PfMAMCPresenceLitteral]%
+ \StrCount{\ListeAMCRep[1]}{!}[\PfMAMCPresencePuissances]%
+ \StrCount{\ListeAMCRep[1]}{|}[\PfMAMCPresencePuissancesDix]%
+ \ifnum\fpeval{\PfMAMCPresenceFraction+\PfMAMCPresenceLitteral+\PfMAMCPresencePuissances+\PfMAMCPresencePuissancesDix}=0\relax
+ \begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}
+ \IfInteger{\ListeAMCRep[1]}{%
+ \itemtomacro\ListeAMCRep[1]\Toto%
+ \StrLen{\fpeval{abs(\Toto)}}[\PfMLongueurCaseAMC]%
+ \IfBooleanTF{#1}{%
+ \AMCnumericChoices{\fpeval{\ListeAMCRep[1]}}{digits=\PfMLongueurCaseAMC,sign,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}%
+ }{%
+ \begin{minipage}{\PfMAMCBarreFraction}
+ \AMCnumericChoices{\fpeval{\ListeAMCRep[1]}}{digits=\PfMLongueurCaseAMC,sign=false,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}
+ \end{minipage}\ifboolKV[ListeReponses]{Unites}{~~~\si[per-mode=symbol]{\TempoAMC}}{}%
+ }%
+ }{%
+ \itemtomacro\ListeAMCRep[1]\Toto%
+ \StrCut{\Toto}{.}{\TotoAv}{\TotoAp}%
+ \StrLen{\fpeval{abs(\TotoAv)}}[\PfMLongueurCaseAMCAv]%
+ \StrLen{\TotoAp}[\PfMLongueurCaseAMCAp]%
+ \IfBooleanTF{#1}{%
+ \AMCnumericChoices{\fpeval{\ListeAMCRep[1]}}{digits=\fpeval{\PfMLongueurCaseAMCAv+\PfMLongueurCaseAMCAp},decimals=\PfMLongueurCaseAMCAp,sign,Tpoint={,},borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}%
+ }{%
+ \begin{minipage}{\PfMAMCBarreFraction}
+ \AMCnumericChoices{\fpeval{\ListeAMCRep[1]}}{digits=\fpeval{\PfMLongueurCaseAMCAv+\PfMLongueurCaseAMCAp},decimals=\PfMLongueurCaseAMCAp,sign=false,Tpoint={,},borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}%
+ \end{minipage}\ifboolKV[ListeReponses]{Unites}{~~~\si[per-mode=symbol]{\TempoAMC}}{}%
+ }%
+ }%
+ \end{questionmultx}
+ \else
+ %Fraction
+ \ifnum\PfMAMCPresenceFraction=1\relax%
+ \begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}
+ \itemtomacro\ListeAMCRep[1]\Toto%
+ \StrCut{\Toto}{/}{\TotoAv}{\TotoAp}%
+ \StrLen{\fpeval{abs(\TotoAv)}}[\PfMLongueurCaseAMCNum]%
+ \StrLen{\TotoAp}[\PfMLongueurCaseAMCDeno]%
+ \IfBooleanTF{#1}{%
+ \AMCnumericChoices{\TotoAv.\TotoAp}{digits=\fpeval{\PfMLongueurCaseAMCNum+\PfMLongueurCaseAMCDeno},decimals=\PfMLongueurCaseAMCDeno,sign,Tpoint={\raisebox{0.25\AMC@boxedheight}{\rule{\PfMAMCBarreFraction}{1pt}}},borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}%
+ }{%
+ \AMCnumericChoices{\TotoAv.\TotoAp}{digits=\fpeval{\PfMLongueurCaseAMCNum+\PfMLongueurCaseAMCDeno},decimals=\PfMLongueurCaseAMCDeno,sign=false,Tpoint={\raisebox{0.25\AMC@boxedheight}{\rule{\PfMAMCBarreFraction}{1pt}}},borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}%
+ }%
+ \end{questionmultx}
+ \fi
+ % Puissances
+ \ifnum\PfMAMCPresencePuissances=1\relax%
+ \itemtomacro\ListeAMCRep[1]\Toto%
+ \StrCut{\Toto}{!}{\TotoAv}{\TotoAp}%
+ \StrLen{\fpeval{abs(\TotoAv)}}[\PfMLongueurCaseAMCMant]%
+ \StrLen{\TotoAp}[\PfMLongueurCaseAMCPuis]%
+ \IfBooleanTF{#1}{%
+ $\begin{minipage}{\PfMAMCBarreFraction}
+ \begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}\AMCnumericChoices{\TotoAv}{digits=\fpeval{\PfMLongueurCaseAMCMant},sign,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}\end{questionmultx}
+ \end{minipage}^{~\begin{minipage}{\PfMAMCBarreFraction}
+ \scriptsize\stepcounter{PfMNbListeReponsesAMC}\begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}\AMCnumericChoices{\TotoAp}{digits=\fpeval{\PfMLongueurCaseAMCPuis},sign,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}\end{questionmultx}
+ \end{minipage}}$
+ }{%
+ $\begin{minipage}{\PfMAMCBarreFraction}
+ \begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}\AMCnumericChoices{\TotoAv}{digits=\fpeval{\PfMLongueurCaseAMCMant},sign=false,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}\end{questionmultx}
+ \end{minipage}^{~\begin{minipage}{\PfMAMCBarreFraction}
+ \scriptsize\stepcounter{PfMNbListeReponsesAMC}\begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}\AMCnumericChoices{\TotoAp}{digits=\fpeval{\PfMLongueurCaseAMCPuis},sign=false,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}\end{questionmultx}
+ \end{minipage}}$
+ }%
+ \fi
+ % PuissancesDix
+ \ifnum\PfMAMCPresencePuissancesDix=1\relax%
+ \itemtomacro\ListeAMCRep[1]\Toto%
+ \StrCut{\Toto}{|}{\TotoAv}{\TotoAp}%
+ \StrLen{\fpeval{abs(\TotoAv)}}[\PfMLongueurCaseAMCMant]%
+ \StrLen{\TotoAp}[\PfMLongueurCaseAMCPuis]%
+ \StrCut{\TotoAv}{.}{\TotoAva}{\TotoApa}%
+ \StrLen{\fpeval{abs(\TotoAva)}}[\PfMLongueurCaseAMCManta]%
+ \StrLen{\fpeval{abs(\TotoApa)}}[\PfMLongueurCaseAMCMantb]%
+ \IfBooleanTF{#1}{%
+ $\begin{minipage}{\PfMAMCBarreFraction}
+ \begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}\AMCnumericChoices{\TotoAv}{digits=\fpeval{\PfMLongueurCaseAMCManta+\PfMLongueurCaseAMCMantb},Tpoint={,},decimals=\PfMLongueurCaseAMCMantb,sign,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}
+ \end{questionmultx}
+ \end{minipage}\quad\times10^{~\begin{minipage}{\PfMAMCBarreFraction}
+ \scriptsize\stepcounter{PfMNbListeReponsesAMC}\begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}\AMCnumericChoices{\TotoAp}{digits=\PfMLongueurCaseAMCPuis,sign,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}\end{questionmultx}
+ \end{minipage}}
+ $
+ }{%
+ $\begin{minipage}{\PfMAMCBarreFraction}
+ \begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}\AMCnumericChoices{\TotoAv}{digits=\fpeval{\PfMLongueurCaseAMCManta+\PfMLongueurCaseAMCMantb},Tpoint={,},decimals=\PfMLongueurCaseAMCMantb,sign=false,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}
+ \end{questionmultx}
+ \end{minipage}\quad\times10^{~\begin{minipage}{\PfMAMCBarreFraction}
+ \scriptsize\stepcounter{PfMNbListeReponsesAMC}\begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}\AMCnumericChoices{\TotoAp}{digits=\PfMLongueurCaseAMCPuis,sign=false,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}\end{questionmultx}
+ \end{minipage}}
+ $
+ }%
+ \fi
+ % Litteral
+ \ifnum\PfMAMCPresenceLitteral=1
+ \itemtomacro\ListeAMCRep[1]\Toto%
+ \StrCut{\Toto}{:}{\TotoAv}{\TotoAp}%
+ \StrLen{\fpeval{abs(\TotoAv)}}[\PfMLongueurCaseAMCMono]%
+ \StrLen{\fpeval{abs(\TotoAp)}}[\PfMLongueurCaseAMCConst]%
+ $
+ \begin{minipage}{\PfMAMCBarreFraction}
+ \footnotesize%
+ \begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}%
+ \AMCnumericChoices{\TotoAv}{digits=\fpeval{\PfMLongueurCaseAMCMono},sign,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}%
+ \end{questionmultx}%
+ \end{minipage}
+ \qquad\useKV[ListeReponses]{Lettre}\quad
+ \begin{minipage}{\PfMAMCBarreFraction}%
+ \stepcounter{PfMNbListeReponsesAMC}\footnotesize\begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}%
+ \AMCnumericChoices{\TotoAp}{digits=\fpeval{\PfMLongueurCaseAMCConst},sign,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}%
+ \end{questionmultx}%
+ \end{minipage}
+ $
+ \fi
+ \fi
+ \else%
+ \begin{question}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}
+ \ifPfMDeuxColonnes
+ \begin{reponses}%
+ \bonne{\ListeAMCRep[1]}%
+ \xintFor* ##1 in{\xintSeq{2}{\ListeAMCReplen}}\do{%
+ \mauvaise{\ListeAMCRep[##1]}%
+ }%
+ \end{reponses}%
+ \else
+ \begin{reponseshoriz}%
+ \bonne{\ListeAMCRep[1]}%
+ \xintFor* ##1 in{\xintSeq{2}{\ListeAMCReplen}}\do{%
+ \mauvaise{\ListeAMCRep[##1]}%
+ }%
+ \end{reponseshoriz}%
+ \fi
+ \end{question}
+ \fi
+ }{}%
+}%
+\makeatother
+
+\makeatletter
+\tcbset{%
+ tikzamc/.style={%
+ before skip=0em,
+ bottom=0pt,
+ enhanced,
+ breakable,
+ colback=white,
+ frame hidden,
+ overlay unbroken and first={%
+ \node[%
+ name=A,
+ fill=white,
+ anchor=west,
+ %xshift=\kvtcb@leftlower,
+ ] at (frame.north west){\bfseries\sffamily\useKV[AMC]{NomExercice}\ifboolKV[ClesExercices]{Numerote}{ \thePfMExo}{}\ifboolKV[ClesExercices]{AffichageTitre}{\ifboolKV[ClesExercices]{Numerote}{~:~}{\xdef\PfMTitiLgNE{\useKV[Fiche]{NomExercice}}\IfStrEq{\PfMTitiLgNE}{}{}{~:~}}\useKV[ClesExercices]{Titre}}{}};
+ %%
+ \useKV[ClesExercices]{Ajout}%
+% %%
+ }%
+ }%
+}%
+\makeatother
+
+\def\PfMScoreA{5}%
+\def\PfMScoreB{3}%
+\def\PfMScoreC{1}%
+\def\PfMScoreD{0.1}%
+
+\NewDocumentEnvironment{exerciceAmc}{o}{%
+ \setcounter{PfMNbLogo}{1}%
+ \setcounter{PfMAMCOpen}{0}%
+ \useKVdefault[ClesExercices]%
+ \setKV[ClesExercices]{#1}%
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
+ \PfMAvantLesExercices%
+ \begin{tcolorbox}[tikzamc]%
+ }{%
+ \ifnum\thePfMAMCOpen=0\relax
+ \PfMApresLesExercices
+ \par
+ \begin{question}{\Roman{PfMExo}}
+ \AMCOpen{lineup=true,lineuptext=~,dots=false,backgroundcol=gray!20}{\mauvaise[RR]{RR}\scoring{\PfMScoreD}\mauvaise[R]{R}\scoring{\PfMScoreC}\mauvaise[V]{V}\scoring{\PfMScoreB}\bonne[VV]{VV}\scoring{\PfMScoreA}}%gray!15
+ \end{question}%
+ \fi
+ \end{tcolorbox}%
+}%
+
+%%%%%%%%%%%%%%%%% Fin AMC
+
+%%%%%%%%%%%%%%%%%%% QCM
+\NewDocumentEnvironment{exerciceQCM}{o}{%
+ \setcounter{PfMNbLogo}{1}%
+ \setcounter{PfMAlea}{0}%
+ \useKVdefault[ClesExercices]%
+ \setKV[ClesExercices]{#1}%
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
+ \PfMAvantLesExercices%
+ \begin{tcolorbox}[tikzqcm]%
+ }{\end{tcolorbox}%
+}%
+
+%\makeatletter
+\tcbset{%
+ tikzqcm/.style={%
+ before skip=0em,
+ top=2em,
+ bottom=2em,
+ enhanced,
+% breakable,
+ colback=\ifodd\thePfMExo white\else gray!15\fi,
+ sharp corners,
+ frame hidden,
+ overlay unbroken and first={%
+ \node[%
+ name=A,
+ %fill=white,
+ anchor=west,
+ % xshift=\kvtcb@leftlower,
+ yshift=-1em,
+ ] at (frame.north west){\bfseries\sffamily\useKV[QCM]{NomExercice}\ifboolKV[ClesExercices]{Numerote}{ \thePfMExo}{}\ifboolKV[ClesExercices]{AffichageTitre}{\ifboolKV[ClesExercices]{Numerote}{~:~}{\xdef\PfMTitiLgNE{\useKV[Fiche]{NomExercice}}\IfStrEq{\PfMTitiLgNE}{}{}{~:~}}\useKV[ClesExercices]{Titre}}{}};
+ %
+ \PfMAffichageSourceQCM%
+ %%
+ \useKV[ClesExercices]{Ajout}%
+% %%
+ }%
+ }%
+}%
+%\makeatother
+
+\def\PfMIntroductionQCM{%
+ Cet exercice est un questionnaire à choix multiples (QCM). {\em Aucune justification n'est ici demandée.}\\Pour chaque question, plusieurs réponses sont proposées, une seule est exacte. Écrire sur cotre copie le numéro de la question et la réponse correspondante.%
+}%
+
+\tcbset{%
+ userqcm/.style={%
+ spread upwards=-1cm,colback=gray!5%
+ }%
+}%
+
+\tcbset{%
+ userqcmcor/.style={%
+ spread upwards=-1cm,colback=gray!5%
+ }%
+}%
+
+\NewDocumentCommand\TikzQCM{}{%
+ \begin{tcolorbox}[userqcm]%
+ \begin{center}
+ \Large\sffamily \useKV[QCM]{Theme}
+ \end{center}
+ \end{tcolorbox}%
+}%
+
+\NewDocumentCommand\TikzQCMCor{m}{%
+ \ifPfMRectoVerso%
+ \cleardoublepage%
+ \else%
+ \clearpage%
+ \fi%
+ \setKV[QCM]{#1}%
+ \begin{tcolorbox}[userqcmcor]%
+ \Large\sffamily \useKV[QCM]{Theme} (Correction)
+ \end{tcolorbox}%
+}
+
+\NewDocumentCommand\ListeReponsesQCM{om}{%
+ \ifboolKV[Boulot]{QCM}{%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeQCMRep{#2}%
+ \reademptyitems%
+ % on mélange les réponses :)
+ \xdef\ListeNumMelangeAv{1}%
+ \xintFor* ##1 in{\xintSeq{2}{\ListeQCMReplen}}\do{%
+ \xdef\ListeNumMelangeAv{\ListeNumMelangeAv,##1}%
+ }%
+ \MelangeListe{\ListeNumMelangeAv}{\ListeQCMReplen}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeNumMelangeQCM{\faa}%
+ \reademptyitems%
+ \ExporteListe{ListeW}{\faa}%
+ %
+ \ifboolKV[QCM]{Colonnes}{%
+ \begin{multicols}{\ListeQCMReplen}%
+ }{}%
+ \begin{enumerate}[leftmargin=*,label=\bfseries\Alph{*}/]
+ \xintFor* ##1 in{\xintSeq{1}{\ListeQCMReplen}}\do{%
+ \itemtomacro\ListeNumMelangeQCM[##1]\PfMTitiQCM
+ \item \ListeQCMRep[\PfMTitiQCM]
+ }%
+ \end{enumerate}%
+ \ifboolKV[QCM]{Colonnes}{%
+ \end{multicols}%
+ }{}%
+ }{}%
+}%
+%%%%%%%%%%%%%%%% fin QCM
+
+
+%%% PixelArt
+\newtoks\ToksPXTheme%
+\newtoks\ToksPXNiveau%
+%\newtoks\ToksPXListeSolAv%
+%\def\UpdateToksPXListeSolAv#1\nil{\global\addtotok\ToksPXListeSolAv{#1,}}%
+\def\UpdateToksPXNiveau#1\nil{\addtotok\ToksPXNiveau{#1}}%
+\def\UpdateToksPXTheme#1\nil{\addtotok\ToksPXTheme{#1}}%
+
+%\NewDocumentCommand\PfMPXCount{}{%
+% \stepcounter{PfMLettresPixelArt}%
+% \xdef\PfMCountPX{\csname p\Alph{PfMLettresPixelArt}\endcsname}%
+% \PfMCountPX%
+%}%
+
+\newcounter{PfMLettresPixelArt}
+
+\NewDocumentCommand\MPPixelArt{mm}{
+ \mplibforcehmode
+ \begin{mplibcode}
+ path carre[];
+
+ u:=0.5mm;
+
+ color ColorEntier[],ColFond;
+
+ vardef BlocAffichage=
+ for k=0 upto 34:
+ carre[k]:=(unitsquare scaled u) shifted(u*(k mod 5,5-(k div 5)));
+ endfor;
+ enddef;
+
+ vardef Affichage(expr decomp)=
+ save $;
+ picture $;
+ drawoptions(withpen pensquare scaled0.1);
+ $=image(%
+ for k=0 upto 34:
+ if (substring(k,k+1) of decomp)="1":
+ fill carre[k] withcolor ColFond;
+ fi;
+ endfor;
+ );
+ drawoptions();
+ $
+ enddef;
+
+ nblignes:=1;
+
+ decahoriz:=0;
+
+ vardef Test(expr cptk)(text cptnt)=
+ pair Decalage;
+ Decalage=u*(decahoriz,-8*(nblignes-1));
+ decahoriz:=decahoriz+6;
+ if substring(cptk,cptk+1) of cptnt="A":draw Affichage("01110100011000110001111111000110001") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="B":draw Affichage("11110100011000111110100011000111110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="C":draw Affichage("01110100011000010000100001000101110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="D":draw Affichage("11100100101000110001100011001011100") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="E":draw Affichage("11111100001000011111100001000011111") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="F":draw Affichage("11111100001000011111100001000010000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="G":draw Affichage("01110100011000010111100011000101110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="H":draw Affichage("10001100011000111111100011000110001") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="I":draw Affichage("01110001000010000100001000010001110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="J":draw Affichage("00111000100001000010000101001001100") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="K":draw Affichage("10001100101010011000101001001010001") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="L":draw Affichage("10000100001000010000100001000011111") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="M":draw Affichage("10001110111010110101100011000110001") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="N":draw Affichage("10001100011100110101100111000110001") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="O":draw Affichage("01110100011000110001100011000101110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="P":draw Affichage("11110100011000111110100001000010000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="Q":draw Affichage("01110100011000110001101011001001101") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="R":draw Affichage("11110100011000111110101001001010001") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="S":draw Affichage("01111100001000001110000010000111110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="T":draw Affichage("11111001000010000100001000010000100") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="U":draw Affichage("10001100011000110001100011000101110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="V":draw Affichage("10001100011000110001100010101000100") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="W":draw Affichage("10101101011010110101101011010101010") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="X":draw Affichage("10001100010101000100010101000110001") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="Y":draw Affichage("10001100011000101010001000010000100") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="Z":draw Affichage("11111000010001000100010001000011111") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="a":draw Affichage("00000000000111100001011111000101111") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="b":draw Affichage("10000100001011011001100011000111110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="c":draw Affichage("00000000000111010000100001000101110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="d":draw Affichage("00001000010110110011100011000101111") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="e":draw Affichage("00000000000111010001111111000001110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="f":draw Affichage("00110010010100011100010000100001000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="g":draw Affichage("00000011111000110001011110000101110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="h":draw Affichage("10000100001011011001100011000110001") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="i":draw Affichage("00100000000110000100001000010001110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="j":draw Affichage("00010000000011000010000101001001100") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="k":draw Affichage("10000100001001010100110001010010010") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="l":draw Affichage("01100001000010000100001000010001110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="m":draw Affichage("00000000001101010101101011000110001") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="n":draw Affichage("00000000001011011001100011000110001") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="o":draw Affichage("00000000000111010001100011000101110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="p":draw Affichage("00000000001111010001111101000010000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="q":draw Affichage("00000000000110110011011110000100001") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="r":draw Affichage("00000000001011011001100001000010000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="s":draw Affichage("00000000000111010000011100000111110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="t":draw Affichage("01000010001110001000010000100100110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="u":draw Affichage("00000000001000110001100011001101101") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="v":draw Affichage("00000000001000110001100010111000100") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="w":draw Affichage("00000000001010110101101011010101110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="x":draw Affichage("00000000001000101010001000101010001") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="y":draw Affichage("00000000001000110001011110000101110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="z":draw Affichage("00000000001111100010001000100011111") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="0":draw Affichage("01110100011001110101110011000101110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="1":draw Affichage("00100011000010000100001000010001110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="2":draw Affichage("01110100010000100010001000100011111") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="3":draw Affichage("11111000100010000010000011000101110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="4":draw Affichage("00010001100101010010111110001000010") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="5":draw Affichage("11111100001111000001000011000101110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="6":draw Affichage("00110010001000011110100011000101110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="7":draw Affichage("11111000010001000100010000100001000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="8":draw Affichage("01110100011000101110100011000101110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="9":draw Affichage("01110100011000101111000010001001100") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="!":draw Affichage("00100001000010000100000000000000100") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="'":draw Affichage("01100001000100000000000000000000000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="(":draw Affichage("00010001000100001000010000010000010") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt=")":draw Affichage("01000001000001000010000100010001000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="*":draw Affichage("00000001001010101110101010010000000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="+":draw Affichage("00000001000010011111001000010000000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="-":draw Affichage("00000000000000011111000000000000000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt=".":draw Affichage("00000000000000000000000000110001100") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt=":":draw Affichage("00000011000110000000011000110000000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt=";":draw Affichage("00000011000110000000011000010001000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="<":draw Affichage("00010001000100010000010000010000010") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="=":draw Affichage("00000000001111100000111110000000000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt=">":draw Affichage("10000010000010000010001000100010000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="?":draw Affichage("01110100010000100010001000000000100") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="[":draw Affichage("01110010000100001000010000100001110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="]":draw Affichage("01110000100001000010000100001001110") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="`":draw Affichage("01000001000001000000000000000000000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="|":draw Affichage("00100001000010000100001000010000100") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt=" ":draw Affichage("00000000000000000000000000000000000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="&":draw Affichage("00000100001100011100110001000000000") shifted(Decalage);
+% elseif substring(cptk,cptk+1) of cptnt="$":draw Affichage("00000000000000100001000010000111111") shifted(Decalage);
+% elseif substring(cptk,cptk+1) of cptnt="^":draw Affichage("00100010101000100000000000000000000") shifted(Decalage);
+ elseif substring(cptk,cptk+1) of cptnt="_":draw Affichage("00000000000000000000000000000000000") shifted(Decalage);
+% elseif substring(cptk,cptk+1) of cptnt="~":draw Affichage("01000010000111001000010000100001000") shifted(Decalage);
+ fi;
+enddef;
+
+vardef LCDSeul(text nt)=
+ decahoriz:=0;
+ ColFond:=black;
+ if length(nt)>0:
+ for k=0 upto length(nt)-1:
+ BlocAffichage;
+ Test(k,nt);
+ endfor;
+ fi;
+ enddef;
+
+ picture TestLCD;
+ TestLCD=image(
+ LCDSeul(#1);
+ );
+ bboxmargin:=3u;
+ maxlarg=abs(lrcorner bbox TestLCD - llcorner bbox TestLCD)/u;
+ maxhaut=abs(urcorner bbox TestLCD - lrcorner bbox TestLCD)/u;
+ for k=0 upto maxlarg-1:
+ for l=0 upto maxhaut-1:
+ draw (unitsquare scaled u) shifted(llcorner bbox TestLCD+u*(k,l)) withcolor 0.8white;
+ endfor;
+ endfor;
+ draw bbox TestLCD;
+
+ draw TestLCD;
+ picture Retiens;
+ Retiens=currentpicture;
+ currentpicture:=nullpicture;
+ draw Retiens scaled 2;
+ \end{mplibcode}
+}%
+
+\NewDocumentCommand\TikzPixelArt{}{%
+ \ToksPXNiveau{}%
+ \xdef\Titi{"Classe de \useKV[PixelArt]{Niveau}"}%
+ \expandafter\UpdateToksPXNiveau\Titi\nil%
+ \ToksPXTheme{}%
+ \xdef\Toto{"\useKV[PixelArt]{Theme}"}%
+ \expandafter\UpdateToksPXTheme\Toto\nil%
+ \xdef\ListeAvantCouleurs{\useKV[PixelArt]{ListeCouleurs}}%
+ \begin{center}
+ \MPPixelArt{\the\ToksPXTheme}{\ListeAvantCouleurs}%
+ \end{center}
+}%
+
+%\newcounter{PfMPX}[PfMMaquette]
+%\setcounter{PfMPX}{0}
+
+\NewDocumentCommand\PfMSolPixelArt{sm}{%
+ \ifboolKV[Boulot]{PixelArt}{%
+ \stepcounter{PfMLettresPixelArt}%
+ \IfBooleanTF{#1}{}{
+ \ifboolKV[PixelArt]{Aleatoire}{%
+ \hfill\textbf{Lettre~\ListePourLesItems[\thePfMLettresPixelArt]}%
+ }{%
+ \hfill\textbf{Lettre~\Alph{PfMLettresPixelArt}}%
+ }%
+ }%
+ \expandafter\xdef\csname PfMPXSolution\Alph{PfMLettresPixelArt}\endcsname{#2}%
+ }{}%
+}%
+
+\NewDocumentEnvironment{exercicePX}{o}{%
+ \setcounter{PfMAlea}{0}%
+ \setcounter{PfMNbLogo}{1}%
+ % Mettre les indications hors-jeu
+ \setcounter{RetiensIndic}{0}%
+ \useKVdefault[ClesExercices]%
+ \setKV[ClesExercices]{#1}%
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
+ \setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
+ \refstepcounter{PfMExo}%
+}{}
+%%% Fin PixelArt
+
+% Big Ten
+\newcounter{PfMLettresBigTen}
+
+\NewDocumentCommand\PfMSolBigTen{m}{%
+ \ifboolKV[Boulot]{BigTen}{%
+ \stepcounter{PfMLettresBigTen}%
+ \expandafter\xdef\csname PfMBigTenSolution\Alph{PfMLettresBigTen}\endcsname{#1}%
+ }{}%
+}%
+%%% Fin BigTen
+
+
+\def\PfMLogoBeamer{}
+
%%%%%%%%%%%%%%% Debut Maquette %%%%%%%
% Environnement englobant le tout.
\makeatletter
\newwrite\PfMfile@out%
+
+\IfClassLoadedTF{beamer}{%
+ %-> tex.stackexchange.com/questions/605282/beamer-custom-frame-environment-with-options
+ \NewDocumentEnvironment{Maquette}{om}{%
+ \ifcsname PfMGraineBeamer\endcsname%
+ \setKVdefault[Boulot]{Graine=\fpeval{\PfMGraineBeamer+\thePfMMaquette}}%
+ \else%
+ \def\PfMGraineBeamer{\fpeval{randint(1000)}}%
+ \fi%
+ \immediate\write\@auxout{\noexpand\expandafter\gdef\noexpand\csname PfMGraineBeamer\endcsname{\csname PfMGraineBeamer\endcsname}}%
+ %
+ \setcounter{RetiensSol}{0}%
+ \setcounter{RetiensRep}{0}%
+ \setcounter{RetiensInd}{0}%
+ % on remet à zéro le compteur des exercices
+ % \setcounter{PfMExo}{0}%
+ \setcounter{PfMSOS}{0}%
+ % nouvelles valeurs.
+ \stepcounter{PfMMaquette}%
+ \IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection\PfMChoixAffichageEntrainement}}{\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection\PfMChoixAffichageEntrainement}}%
+ \useKVdefault[Boulot]%
+ \setKV[Boulot]{#1}%
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \AtEndDocument{%
+ \PfMPrepareCorrection{#1}%
+ \begin{frame}
+ \frametitle{\useKV[Beamer]{Theme}\hfill\raisebox{-0.25\height}{%
+ \PfMLogoBeamer}~\phantom{t}}%
+ \PfMAffichageCorrige%
+ \end{frame}
+ }%
+ }{}%
+ \useKVdefault[Beamer]%
+ \setKV[Beamer]{#2}%
+ \let\exercice\exerciceBeamer\let\endexercice\endexerciceBeamer%
+ \begin{frame}[environment=Maquette,fragile]
+ \setcounter{PfMExo}{0}%
+ \PfCGraineAlea{\useKV[Boulot]{Graine}}%
+ \frametitle{\useKV[Beamer]{Theme}\hfill\raisebox{-0.25\height}{%
+ \PfMLogoBeamer}~\phantom{t}}%
+ }{%
+ \end{frame}
+ }%
+}{%
\NewDocumentEnvironment{Maquette}{om}{%
% on remet à zéro les compteurs de solutions : inutile ?
\setcounter{RetiensSol}{0}%
@@ -3918,33 +4762,54 @@
\immediate\write\@auxout{%
\string\opcopy{0}{ScoreTotal\thePfMMaquette}
}%
- %%\opadd*{#1}{ScoreTotal\thePfMMaquette}{ScoreTotal\thePfMMaquette}%
+ %% \opadd*{#1}{ScoreTotal\thePfMMaquette}{ScoreTotal\thePfMMaquette}%
+ \useKVdefault[Boulot]%
+ \setKV[Boulot]{#1}%
\if@AssembleCorrections
\immediate\openout\PfMfile@out \jobname-DefiMq-\thePfMMaquette.tex%
\immediate\write\PfMfile@out{\unexpanded{\useKVdefault[Boulot]}}%
\immediate\write\PfMfile@out{\unexpanded{\setKV[Boulot]{#1}}}%
- \immediate\write\PfMfile@out{\TikzFicheCor{\unexpanded{#2}}}%
+ \ifboolKV[Boulot]{Fiche}{\immediate\write\PfMfile@out{\TikzFicheCor{\unexpanded{#2}}}}{}%
+ \ifboolKV[Boulot]{DS}{\immediate\write\PfMfile@out{\TikzDSCor{\unexpanded{#2}}}}{}%
+ \ifboolKV[Boulot]{DM}{\immediate\write\PfMfile@out{\TikzDMCor{\unexpanded{#2}}}}{}%
+ \ifboolKV[Boulot]{IE}{\immediate\write\PfMfile@out{\TikzIECor{\unexpanded{#2}}}}{}%
+ \ifboolKV[Boulot]{QCM}{\immediate\write\PfMfile@out{\TikzQCMCor{\unexpanded{#2}}}}{}%
+ \ifboolKV[Boulot]{FdR}{\immediate\write\PfMfile@out{\TikzFdRCor{\unexpanded{#2}}}}{}%
+ \ifboolKV[Boulot]{Contrat}{\immediate\write\PfMfile@out{\TikzContratCor{\unexpanded{#2}}}}{}%
+ \ifboolKV[Boulot]{Parcours}{\immediate\write\PfMfile@out{\TikzParcoursCor{\unexpanded{#2}}}}{}%
\immediate\closeout\PfMfile@out%
\fi
% options de boulot
\IfHookExistsTF{env/Maquette/after}{\RemoveFromHook{env/Maquette/after}[*]}{}%
\AddToHook{env/Maquette/after}[RetiensExo]{\xdef\PfMRetiensLienExoMa{\PfMRetiensLienExoMa,\thePfMExo}}
%--------------
- \useKVdefault[Boulot]%
- \setKV[Boulot]{#1}%
+% \useKVdefault[Boulot]%
+% \setKV[Boulot]{#1}%
\ifboolKV[Boulot]{CorrigeSeul}{\setKV[Boulot]{CorrigeFin}}{}%
- \if@Dyslexie
- \setKV[Boulot]{Dys}
- \fi
+ \if@Dyslexie%
+ \setKV[Boulot]{Dys}%
+ \fi%
\PfMBasculeDys%
\IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection\PfMChoixAffichageEntrainement}}{\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection\PfMChoixAffichageEntrainement}}%
% Test
\IfHookExistsTF{env/exercice/begin}{\RemoveFromHook{env/exercice/begin}[*]}{}%
\IfHookExistsTF{env/Maquette/end}{\RemoveFromHook{env/Maquette/end}[*]}{}%
+ \ifboolKV[Boulot]{AMC}{%
+ \setcounter{PfMNbListeReponsesAMC}{0}%
+ \setKV[AMC]{#2}%
+ \let\exercice\exerciceAmc\let\endexercice\endexerciceAmc%
+ \TikzAMC%
+ }{%
\ifboolKV[Boulot]{OlympiadesAPMEP}{%
- % \input{PfMMaquetteOlympAPMEP}%
\setKV[OlympiadesAPMEP]{#2}%\TikzOlympiadesAPMEP%
\let\exercice\exerciceOlympiadesAPMEP\let\endexercice\endexerciceOlympiadesAPMEP%
+ \ifboolKV[OlympiadesAPMEP]{Bandeau}{%
+ \TikzOlympiadesAPMEP{#2}%
+ \bigskip
+ }{%
+ \xdef\PfMTitreAPMEP{\noexpand\useKV[OlympiadesAPMEP]{Theme}}
+ \chapter{\PfMTitreAPMEP}
+ }
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
\PfMPrepareCorrection{#1}%
@@ -3954,7 +4819,6 @@
}{}%
}{%
\ifboolKV[Boulot]{CAN}{%
- % \input{PfMMaquetteCAN.tex}
\setKV[CAN]{#2}%
\setcounter{PfMCNNumQ}{0}%
\setlength{\PfMLargeurQuestion}{\useKV[CAN]{CoefQ}\linewidth}\setlength{\PfMLargeurReponse}{\useKV[CAN]{CoefR}\linewidth}\setlength{\PfMLargeurJury}{\useKV[CAN]{CoefJ}\linewidth}%
@@ -3973,7 +4837,7 @@
\hline%
\endhead%
\xintFor* ##1 in {\xintSeq{1}{\PfMCANTotalExo}}\do{%
- \refstepcounter{PfMCNNumQ}\ttfamily{\thePfMCNNumQ}\label{TestCAN-\thePfMCNNumQ}&\Complement{}\stepcounter{PfMExo}\setcounter{PfMAlea}{0}\input{\jobname-Ma\thePfMMaquette-Ex##1.can}&\CNReponse&\\
+ \refstepcounter{PfMCNNumQ}\ttfamily{\thePfMCNNumQ}\label{TestCAN-\thePfMMaquette-\thePfMCNNumQ}&\Complement{}\stepcounter{PfMExo}\setcounter{PfMAlea}{0}\input{\jobname-Ma\thePfMMaquette-Ex##1.can}&\CNReponse&\\
\hline%
}%
\end{longtable}%
@@ -3996,7 +4860,7 @@
\hline%
\endhead%
\xintFor* ##1 in {\xintSeq{1}{\PfMCANTotalExo}}\do{%
- \refstepcounter{PfMCNNumQ}\ttfamily{\thePfMCNNumQ}\label{TestCAN-\thePfMCNNumQ}&\Complement{}\stepcounter{PfMExo}\setcounter{PfMAlea}{0}\input{\jobname-Ma\thePfMMaquette-Ex##1.can}&\CNReponse&\\
+ \refstepcounter{PfMCNNumQ}\ttfamily{\thePfMCNNumQ}\label{TestCAN-\thePfMMaquette-\thePfMCNNumQ}&\Complement{}\stepcounter{PfMExo}\setcounter{PfMAlea}{0}\input{\jobname-Ma\thePfMMaquette-Ex##1.can}&\CNReponse&\\
\hline%
}%
\end{longtable}%
@@ -4013,7 +4877,7 @@
\hline%
\endhead%
\xintFor* ##1 in {\xintSeq{1}{\PfMCANTotalExo}}\do{%
- \refstepcounter{PfMCNNumQ}\ttfamily{\thePfMCNNumQ}\label{TestCAN-\thePfMCNNumQ}&\Complement{}\stepcounter{PfMExo}\setcounter{PfMAlea}{0}\input{\jobname-Ma\thePfMMaquette-Ex##1.can}&\CNReponse&\\
+ \refstepcounter{PfMCNNumQ}\ttfamily{\thePfMCNNumQ}\label{TestCAN-\thePfMMaquette-\thePfMCNNumQ}&\Complement{}\stepcounter{PfMExo}\setcounter{PfMAlea}{0}\input{\jobname-Ma\thePfMMaquette-Ex##1.can}&\CNReponse&\\
\hline%
}%
\end{longtable}%
@@ -4094,14 +4958,13 @@
}{}%
}{%
\ifboolKV[Boulot]{ParcoursPerso}{%
- % \input{PfMMaquetteParcoursPerso.tex}%
\setKV[ParcoursPerso]{#2}%
- \DTLloaddb[noheader,keys={PrenomEleve,NomEleve,ListeExo}]{dataperso}{\useKV[ParcoursPerso]{Fichier}.csv}%
+ \DTLloaddb[noheader,keys={PrenomEleve,NomEleve,ListeExo,TypeMaq}]{dataperso}{\useKV[ParcoursPerso]{Fichier}.csv}%
\let\exercice\exerciceParcoursPerso\let\endexercice\endexerciceParcoursPerso%
\ifboolKV[Boulot]{CorrigeFin}{\setcounter{PfMCorrigeParcoursPerso}{1}}{}%
\setcounter{PfMExo}{0}%
\AtEndDocument{%
- \Recapitulatif{#1}{#2}%
+ \PfMRecapitulatif{#1}{#2}%
}%
}{%
\ifboolKV[Boulot]{Parcours}{%
@@ -4218,9 +5081,12 @@
}{}%
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}%
- \TikzDSCor{#2}%
- \PfMAffichageCorrectionColonnes%
+ \if@AssembleCorrections
+ \else
+ \PfMPrepareCorrection{#1}%
+ \TikzDSCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ \fi%
}%
}{}%
}{%
@@ -4268,6 +5134,8 @@
\setsepchar{,}\ignoreemptyitems\readlist*\ListePerm{\PfMFooMelange}\reademptyitems%
\phantomsection{}
\addcontentsline{toc}{section}{\useKV[LivreHeros]{Theme}}%
+ \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
\xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
\itemtomacro\ListePerm[##1]\PfMPermute%
\begin{tcolorbox}[tikzLH,title=##1]%
@@ -4275,8 +5143,245 @@
\input{\jobname-Ma\thePfMMaquette-Ex\PfMPermute.gb}%
\end{tcolorbox}%
}%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
}%
- }{}%
+ }{%
+ \ifboolKV[Boulot]{PixelArt}{%
+ \setcounter{PfMLettresPixelArt}{0}%
+ \setKV[PixelArt]{#2}%
+ \setlength{\PfMLargeurTableauPixelArt}{\useKV[PixelArt]{LargeurTab}}%
+ \ifboolKV[PixelArt]{Aleatoire}{%
+ \StrLen{\useKV[PixelArt]{Lettres}}[\PfMNbLettres]%
+ \ifboolKV[PixelArt]{Diversion}{%
+ \xdef\PfMNbLettres{\fpeval{\PfMNbLettres+1}}%
+ }{}%
+ \ChoixSommet{\PfMNbLettres}{S}%
+ \xdef\ListePourLesItemsAv{\pA}%
+ \setcounter{PfMLettresPixelArt}{1}
+ \xintFor* ##1 in{\xintSeq{2}{\PfMNbLettres}}\do{%
+ \stepcounter{PfMLettresPixelArt}%
+ \xdef\ListePourLesItemsAv{\ListePourLesItemsAv,\csname p\Alph{PfMLettresPixelArt}\endcsname}%
+ }%
+ \setsepchar{,}\ignoreemptyitems\readlist*\ListePourLesItems{\ListePourLesItemsAv}\reademptyitems%
+ \setcounter{PfMLettresPixelArt}{0}%{-1}%
+ \setKVdefault[PfMPixelArt]{ListeNombres={\ListePourLesItemsAv}}%
+ }{}%
+ \TikzPixelArt%
+ \let\exercice\exercicePX\let\endexercice\endexercicePX%
+ \AddToHook{env/Maquette/end}{%
+ \StrLen{\useKV[PixelArt]{Lettres}}[\PfMNbLettres]%
+ \ifboolKV[PixelArt]{Diversion}{%
+ \xdef\PfMNbLettres{\fpeval{\PfMNbLettres+1}}%
+ \PfMSolPixelArt*{\PfMListePourLesIntrus[1]}%
+ }{}%
+ \ifnum\thePfMLettresPixelArt=\fpeval{\PfMNbLettres}\relax
+ \xdef\PfMListeExoPX{}%
+ \xintFor* ##1 in{\xintSeq{1}{\PfMNbLettres}}\do{%
+ \xdef\PfMListeExoPX{\PfMListeExoPX,##1}%
+ }%
+ \MelangeListe{\PfMListeExoPX}{\PfMNbLettres}%
+ \xdef\PfMFooMelange{\faa}%
+ \xdef\PfMListeCouleursAv{\useKV[PixelArt]{ListeCouleurs}}%
+ \ifboolKV[PixelArt]{Diversion}{%
+ \xdef\PfMListeCouleursAv{\PfMListeCouleursAv,\PfMListePourLesIntrus[2]}%
+ }{}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListePerm{\PfMFooMelange}%
+ \readlist*\ListeCouleursPX{\PfMListeCouleursAv}%
+ \reademptyitems%
+% Le nombre de couleurs est \ListeCouleursPXlen.\\
+% Le nombre de lettres est \PfMNbLettres\\
+ \ifnum\fpeval{\ListeCouleursPXlen}=\fpeval{\PfMNbLettres}\relax
+ \ifboolKV[PixelArt]{CoupureTableau}{%
+ \begin{center}
+ \quotient{\PfMNbLettres}{\useKV[PixelArt]{CoupeTableau}}%
+ \modulo{\PfMNbLettres}{\useKV[PixelArt]{CoupeTableau}}%
+ \xintFor* ##1 in{\xintSeq{1}{\the\intquotient}}\do{%
+ \begin{tabular}{|*{\useKV[PixelArt]{CoupeTableau}}{>{\centering\arraybackslash}m{\PfMLargeurTableauPixelArt}|}}%
+ \hline%
+ \xintFor* ##2 in{\xintSeq{1}{\useKV[PixelArt]{CoupeTableau}}}\do{%
+ \itemtomacro\ListePerm[\fpeval{\useKV[PixelArt]{CoupeTableau}*(##1-1)+##2}]\PfMPermute%
+ \itemtomacro\ListeCouleursPX[\PfMPermute]\Toto%
+ \xdef\Titi{\Toto}%
+ \cellcolor{\Titi}\xintifForLast{}{&}%\Titi
+ }\\
+ \hline%
+ \xintFor* ##2 in{\xintSeq{1}{\useKV[PixelArt]{CoupeTableau}}}\do{%
+ \itemtomacro\ListePerm[\fpeval{\useKV[PixelArt]{CoupeTableau}*(##1-1)+##2}]\PfMPermute%
+ \setcounter{PfCenumi}{\PfMPermute}
+ \expandafter\xdef\csname PfMPXPourRetenir\endcsname{\csname PfMPXSolution\Alph{PfCenumi}\endcsname}%
+ \PfMPXPourRetenir
+ \xintifForLast{}{&}%
+ }\\
+ \hline
+ \end{tabular}\par%
+ }%
+ \ifnum\remainder>0\relax
+ \begin{tabular}{|*{\the\remainder}{>{\centering\arraybackslash}m{\PfMLargeurTableauPixelArt}|}}%
+ \hline
+ \xintFor* ##2 in{\xintSeq{1}{\the\remainder}}\do{%
+ \itemtomacro\ListePerm[\fpeval{\useKV[PixelArt]{CoupeTableau}*\the\intquotient+##2}]\PfMPermute%
+ \itemtomacro\ListeCouleursPX[\PfMPermute]\Toto%
+ \xdef\Titi{\Toto}%
+ \cellcolor{\Titi}\xintifForLast{}{&}%
+ }\\
+ \hline
+ \xintFor* ##2 in{\xintSeq{1}{\the\remainder}}\do{%
+ \itemtomacro\ListePerm[\fpeval{\useKV[PixelArt]{CoupeTableau}*\the\intquotient+##2}]\PfMPermute%
+ \setcounter{PfCenumi}{\PfMPermute}
+ \expandafter\xdef\csname PfMPXPourRetenir\endcsname{\csname PfMPXSolution\Alph{PfCenumi}\endcsname}%
+ \PfMPXPourRetenir
+ \xintifForLast{}{&}%
+ }\\
+ \hline
+ \end{tabular}
+ \fi
+ \end{center}
+ }{%
+ \begin{center}
+ \begin{tabular}{|*{\PfMNbLettres}{>{\centering\arraybackslash}m{\PfMLargeurTableauPixelArt}|}}
+ \hline%
+ \xintFor* ##1 in{\xintSeq{1}{\PfMNbLettres}}\do{%
+ \itemtomacro\ListePerm[##1]\PfMPermute%
+ \itemtomacro\ListeCouleursPX[\PfMPermute]\Toto%
+ \xdef\Titi{\Toto}%
+ \cellcolor{\Titi}\xintifForLast{}{&}
+ }\\
+ \hline
+ \xintFor* ##1 in{\xintSeq{1}{\PfMNbLettres}}\do{%
+ \itemtomacro\ListePerm[##1]\PfMPermute%
+ \setcounter{PfCenumi}{\PfMPermute}
+ \expandafter\xdef\csname PfMPXPourRetenir\endcsname{\csname PfMPXSolution\Alph{PfCenumi}\endcsname}%
+ \PfMPXPourRetenir
+ \xintifForLast{}{&}
+ }\\
+ \hline
+ \end{tabular}
+ \end{center}%
+ }
+ \begin{center}
+ \PfMPixelArt[#2]{\useKV[PixelArt]{Fichier}}%
+ \end{center}
+ \else
+ Le nombre de couleurs et le nombre de lettres ne correspondent pas.
+ \fi
+ \else
+ \ifnum\thePfMLettresPixelArt<\fpeval{\PfMNbLettres}\relax
+ Il manque des éléments de solutions.
+ \else
+ Il y a trop d'éléments de solutions.
+ \fi
+ \fi
+ }%
+ }{%
+ \ifboolKV[Boulot]{QCM}{%
+ \setKV[QCM]{#2}%
+ \TikzQCM%
+ \let\exercice\exerciceQCM\let\endexercice\endexerciceQCM%
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \PfMPrepareCorrection{#1}%
+ \TikzQCMCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ }%
+ }{}%
+ }{%
+ \ifboolKV[Boulot]{JeuPuzzle}{%
+ \let\exercice\ExoGBWrite\let\endexercice\endExoGBWrite%
+ \AddToHook{env/Maquette/end}{%
+ \clearpage
+ \begin{tikzpicture}[remember picture,overlay]
+ \coordinate (P) at (current page.north west);
+ \node[anchor=north west,xshift=1cm,yshift=-1cm] at (P){\MPPuzzlePage};
+ \coordinate[xshift=5.5cm,yshift=-5.65cm] (A1) at (P);
+ \coordinate[xshift=14.5cm,yshift=-5.65cm] (A2) at (P);
+ \coordinate[xshift=23.5cm,yshift=-5.65cm] (A3) at (P);
+ \coordinate[xshift=5.5cm,yshift=-14.95cm] (A4) at (P);
+ \coordinate[xshift=14.5cm,yshift=-14.95cm] (A5) at (P);
+ \coordinate[xshift=23.5cm,yshift=-14.95cm] (A6) at (P);
+ \xintFor* ##1 in{\xintSeq{1}{6}}\do{%
+ \node at (A##1) {\begin{minipage}{6.5cm}
+ \input{\jobname-Ma\thePfMMaquette-Ex##1.gb}%
+ \end{minipage}
+ };
+ }%
+ \end{tikzpicture}
+ }%
+ }{%
+ \ifboolKV[Boulot]{BigTen}{%
+ %
+ \setcounter{PfMLettresBigTen}{0}%
+ \setKV[Fiche]{#2}%
+ \setKV[BigTen]{#2}%
+ \TikzFiche%
+ \setlength{\PfMLargeurTableauBigTen}{\useKV[BigTen]{LargeurTab}}%
+ \let\exercice\exerciceFiche\let\endexercice\endexerciceFiche%
+ \AddToHook{env/Maquette/end}{%
+ \xdef\PfMListeExoPX{}%
+ \xintFor* ##1 in{\xintSeq{1}{\thePfMLettresBigTen}}\do{%
+ \xdef\PfMListeExoPX{\PfMListeExoPX,##1}%
+ }%
+ \MelangeListe{\PfMListeExoPX}{\thePfMLettresBigTen}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListePerm{\faa}%
+ \reademptyitems%
+ \begin{tcolorbox}
+ \ifboolKV[BigTen]{CoupureTableau}{%
+ \begin{center}
+ \large
+ \quotient{\thePfMLettresBigTen}{\useKV[BigTen]{CoupeTableau}}%
+ \modulo{\thePfMLettresBigTen}{\useKV[BigTen]{CoupeTableau}}%
+ \xintFor* ##1 in{\xintSeq{1}{\the\intquotient}}\do{%
+ \begin{tabular}{*{\useKV[BigTen]{CoupeTableau}}{>{\centering\arraybackslash}m{\PfMLargeurTableauBigTen}}}%
+% \hline
+ \xintFor* ##2 in{\xintSeq{1}{\useKV[BigTen]{CoupeTableau}}}\do{%
+ \itemtomacro\ListePerm[\fpeval{\useKV[BigTen]{CoupeTableau}*(##1-1)+##2}]\PfMPermute%
+ \setcounter{PfCenumi}{\PfMPermute}
+ \expandafter\xdef\csname PfMBigTenPourRetenir\endcsname{\csname PfMBigTenSolution\Alph{PfCenumi}\endcsname}%
+ \PfMBigTenPourRetenir
+ \xintifForLast{}{&}%
+ }\\
+% \ifnum\remainder=0\relax
+% \hline
+% \fi
+ \end{tabular}\par%
+ }%
+ \ifnum\remainder>0\relax
+ \begin{tabular}{*{\the\remainder}{>{\centering\arraybackslash}m{\PfMLargeurTableauBigTen}}}%
+ \xintFor* ##2 in{\xintSeq{1}{\the\remainder}}\do{%
+ \itemtomacro\ListePerm[\fpeval{\useKV[BigTen]{CoupeTableau}*\the\intquotient+##2}]\PfMPermute%
+ \setcounter{PfCenumi}{\PfMPermute}
+ \expandafter\xdef\csname PfMBigTenPourRetenir\endcsname{\csname PfMBigTenSolution\Alph{PfCenumi}\endcsname}%
+ \PfMBigTenPourRetenir
+ \xintifForLast{}{&}%
+ }\\
+% \hline
+ \end{tabular}
+ \fi
+ \end{center}
+ }{%
+ \begin{center}
+ \large
+ \begin{tabular}{*{\thePfMLettresBigTen}{>{\centering\arraybackslash}m{\PfMLargeurTableauBigTen}}}
+% \hline
+ \xintFor* ##1 in{\xintSeq{1}{\thePfMLettresBigTen}}\do{%
+ \itemtomacro\ListePerm[##1]\PfMPermute%
+ \setcounter{PfCenumi}{\PfMPermute}
+ \expandafter\xdef\csname PfMBigTenPourRetenir\endcsname{\csname PfMBigTenSolution\Alph{PfCenumi}\endcsname}%
+ \PfMBigTenPourRetenir
+ \xintifForLast{}{&}
+ }\\
+% \hline
+ \end{tabular}
+ \end{center}%
+ }%
+ \end{tcolorbox}
+ }%
+ }{}%
+ }%
+ }%
+ }%
+ }%
}%
}%
}%
@@ -4291,6 +5396,8 @@
}%
}%
}%
+}%
+}%
}{}%
\makeatother
%D'après JCC
@@ -4305,7 +5412,7 @@
\def\empty@list{}
% Macro pour définir une nouvelle liste
-\newcommand\definelist[2]{\def#1{#2}}
+\newcommand\PfMdefinelist[2]{\def#1{#2}}
% Macro pour ajouter un élément en fin de liste
\newcommand\push[2]{%
@@ -4506,7 +5613,7 @@
}
\makeatother
\newcommand\initEnsemblede{%
- \definelist{\EnsembleDe}{%
+ \PfMdefinelist{\EnsembleDe}{%
{2,4,6,8,10,12},%
{1,3,5,7,9,11},%
{2,3,5,7,11,13},%
@@ -4522,11 +5629,11 @@
\newcommand\initpremiers{%
- \definelist{\listpremiers}{13,17,19,23,29,31,37,41,43,47}%
+ \PfMdefinelist{\listpremiers}{13,17,19,23,29,31,37,41,43,47}%
}
\newcommand\initPremiers{%
- \definelist{\listPremiers}{71,73,79,83,89,97,101,103,107,109,113,127,131,137,139}%
+ \PfMdefinelist{\listPremiers}{71,73,79,83,89,97,101,103,107,109,113,127,131,137,139}%
}
\newcommand\getpremier{%
@@ -4545,19 +5652,19 @@
}
\newcommand\initalpha{%
- \definelist{\alphas}{b,c,d,e,f}
+ \PfMdefinelist{\alphas}{b,c,d,e,f}
}
\newcommand\getalpha{%
\randomextract{\alphas}{\alphaA}%
}%
\newcommand\initsommet{%
- \definelist{\sommets}{A,B,C,D,E,F,G,H,I,J,K,L,M,% pas d'espace ?
+ \PfMdefinelist{\sommets}{A,B,C,D,E,F,G,H,I,J,K,L,M,% pas d'espace ?
N,O,P,Q,R,S,T,U,V,W,X,Y,Z}%
}
\newcommand\initsommetrep{%
- \definelist{\sommets}{A,B,C,D,E,F,G,H,I,J,K,L,M,% pas d'espace ?
+ \PfMdefinelist{\sommets}{A,B,C,D,E,F,G,H,I,J,K,L,M,% pas d'espace ?
N,P,Q,R,S,T,U,V,W,X,Y,Z}%
}
@@ -4640,7 +5747,7 @@
\randomextract{\sommets}{\pM}%
}
-\definelist{\quadruplets}{%
+\PfMdefinelist{\quadruplets}{%
{2{,}8,9{,}6,6,8},%10
{3{,}2,12{,}6,5,12},%13
{6{,}6,11{,}2,5,12},%13
@@ -4670,7 +5777,7 @@
{24{,}6,32{,}8,16{,}8,37{,}4}%41
}%
-\definelist{\Quadruplets}{%pour un fonctionnement avec \fpeval
+\PfMdefinelist{\Quadruplets}{%pour un fonctionnement avec \fpeval
{2.8,9.6,6,8},%10
{3.2,12.6,5,12},%13
{6.6,11.2,5,12},%13
@@ -4700,7 +5807,7 @@
{24.6,32.8,16.8,37.4}%41
}%
-\definelist{\tripletspytha}{{2{,}8,9{,}6,10},{6,8,10},%10
+\PfMdefinelist{\tripletspytha}{{2{,}8,9{,}6,10},{6,8,10},%10
{3{,}2,12{,}6,13},{5,12,13},%13
{6{,}6,11{,}2,13},{7{,}8,10{,}4,13},%13
{4{,}2,14{,}4,15},{9,12,15},%15
@@ -4717,12 +5824,12 @@
{24{,}6,32{,}8,41},{26{,}6,31{,}2,41}%41
}%
-\definelist{\tripletspythaentier}{%
+\PfMdefinelist{\tripletspythaentier}{%
{3,4,5},{5,12,13},{6,8,10},{7,24,25},{8,15,17},{9,12,15},{9,40,41},{10,24,26},{11,60,61},{12,16,20},{12,35,37},{13,84,85},{14,48,50},{15,20,25},{15,36,39},{16,30,34},{16,63,65},{18,24,30},{18,80,82},{20,21,29},{20,48,52},{21,28,35},{21,72,75},{24,32,40},{24,45,51},{24,70,74},{25,60,65},{27,36,45},{28,45,53},{28,96,100},{30,40,50},{30,72,78},{32,60,68},{33,44,55},{33,56,65},{35,84,91},{36,48,60},{36,77,85},{39,52,65},{39,80,89},{40,42,58},{40,75,85},{42,56,70},{45,60,75},{48,55,73},{48,64,80},{51,68,85},{54,72,90},{57,76,95},{60,63,87},{60,80,100},{65,72,97}}%%d'après villement.gerard.free.fr
\newcommand\initcarre{%
- \definelist{\carres}{4,9,16,25,36,49,64,81,100}%
+ \PfMdefinelist{\carres}{4,9,16,25,36,49,64,81,100}%
}
\newcommand\getcarre{%
\randomextract{\carres}{\carreA}
@@ -4730,7 +5837,7 @@
%2009-2018
% Source https://ec.europa.eu/eurostat/databrowser/view/ENV_AIR_GGE__custom_743354/default/table?lang=en
-\definelist{\GazSerreEu}{%
+\PfMdefinelist{\GazSerreEu}{%
{{la },Belgique,131038.46,123642.9},%
{{la },Bulgarie,58617.88,58595.07},%
{{le },Danemark,65734.85,51299.75},%
@@ -4754,7 +5861,7 @@
\extract{\GazSerrePays}{1}{\ConsoBPaysGS}%
}
- \definelist{\VehiculesINSEE}{%
+ \PfMdefinelist{\VehiculesINSEE}{%
{2012,13132,22264,8111,15242},%
{2013,12853,22712,8028,15020},%
{2014,12778,23134,8049,14905},%
@@ -4929,6 +6036,14 @@
%\AddToHook{env/multicols/begin}{\setcounter{Nbcolonnes}{2}}%
%\AddToHook{env/multicols/after}{\setcounter{Nbcolonnes}{4}}%
+\NewDocumentCommand\Cicontre{s}{%
+ \ifPfMDeuxColonnes
+ \IfBooleanTF{#1}{ci-dessous}{ci-dessus}%
+ \else
+ ci-contre%
+ \fi
+}%
+
\NewDocumentEnvironment{Dispo}{sm+b}{%
\ifPfMDeuxColonnes
\IfBooleanTF{#1}{%
@@ -5007,7 +6122,27 @@
}{}%
\def\RetiensEchelle{1cm}
-\def\ChoixNbQuestions{3}
+\def\ChoixNbQuestions{5}
+
+\NewDocumentCommand\QuestionBoulotold{}{%
+ \ifboolKV[Boulot]{CAN}{\setKV[ClesExercices]{NbQuestions=1}}{%
+ \ifboolKV[Boulot]{AMC}{\setKV[ClesExercices]{NbQuestions=1}}{%
+ \setKV[ClesExercices]{NbQuestions=\ChoixNbQuestions}%
+ }%
+ }%
+}%
+
+\NewDocumentCommand\QuestionBoulot{O{\ChoixNbQuestions}}{%
+ \ifboolKV[Boulot]{CAN}{%
+ \setKV[ClesExercices]{NbQuestions=1}%
+ }{%
+ \ifboolKV[Boulot]{QCM}{%
+ \setKV[ClesExercices]{NbQuestions=1}%
+ }{%
+ \setKV[ClesExercices]{NbQuestions=#1}%
+ }%
+ }%
+}%
\makeatletter
\if@CAN
\AddToHook{env/document/before}{%
@@ -5034,7 +6169,9 @@
\fi
\makeatother
-% enumitem obligatoire ^^
+\IfClassLoadedTF{beamer}{}{%
+ % enumitem obligatoire ^^
+% mais pas compatible beamer
\RequirePackage{enumitem}
% d'après https://tex.stackexchange.com/questions/164613/adding-code-at-the-end-of-each-list-item
\newif\iffirstlegal\firstlegalfalse% We need a toggle to track whether the item is first in the list or not
@@ -5114,4 +6251,435 @@
\begin{Test}[#1]%
#3
\end{Test}%
-}{}% \ No newline at end of file
+}{}%
+}%
+
+%%%
+% PixelArt
+%%%
+\newtoks\toklistePfMPANombre%
+\newtoks\tokPfMPXNomCouleur%
+\def\UpdatetoksPfMPANombre#1\nil{\addtotok\toklistePfMPANombre{"#1",}}%
+\def\UpdatetoksPfMPXNomCouleur#1\nil{\addtotok\tokPfMPXNomCouleur{"#1",}}%
+
+\setKVdefault[PfMPixelArt]{Largeur=29,Hauteur=29,Solution=false,Lettres=ABCDEFGHIJK,Nombres=false,ListeCouleurs={},Unite=5mm,Geant=false,HauteurD=1,LargeurD=1,Complet=false,Numero=1,Separations=false,Deforme=false,Coefx=0.25,Coefy=0.25,Borne=false,Graines=false}%
+\defKV[PfMPixelArt]{ListeNombres=\setKV[PfMPixelArt]{Nombres}}%
+\defKV[PfMPixelArt]{Graine=\setKV[PfMPixelArt]{Graines}}%
+
+%"mario1.txt"
+
+\NewDocumentCommand\PfMPixelArt{o m}{%
+ \toklistePfMPANombre{}%
+ \tokPfMPXNomCouleur{}%
+ \useKVdefault[PfMPixelArt]%
+ \setKV[PfMPixelArt]{#1}%
+% \expandafter\UpdatetoksPfMPXNomFichier\useKV[PixelArt]{Fichier}\nil%
+% Le tok fichier est \the\tokPfMPXNomFichier
+ \xdef\ListeAvantCouleurs{\useKV[PfMPixelArt]{ListeCouleurs}}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListePACouleur{\ListeAvantCouleurs}%
+ \reademptyitems%
+ \foreachitem\compteur\in\ListePACouleur{\expandafter\UpdatetoksPfMPXNomCouleur\compteur\nil}%
+ \ifboolKV[PfMPixelArt]{Nombres}{%
+ \xdef\ListeAvantNombres{\useKV[PfMPixelArt]{ListeNombres}}%
+ \setsepchar{,}%
+ \readlist*\ListePANombre{\ListeAvantNombres}%
+ \foreachitem\compteur\in\ListePANombre{\expandafter\UpdatetoksPfMPANombre\compteur\nil}%
+ }{}
+ \ifboolKV[PfMPixelArt]{Geant}{%
+ % Découpe en hauteur : \fpeval{\useKV[PfMPixelArt]{Hauteur}/\useKV[PfMPixelArt]{HauteurD}}\\
+ % Découpe en largeur : \fpeval{\useKV[PfMPixelArt]{Largeur}/\useKV[PfMPixelArt]{LargeurD}-1}}\par
+ \ifboolKV[PfMPixelArt]{Complet}{%
+ \xintFor* ##1 in{\xintSeq{0}{\fpeval{\useKV[PfMPixelArt]{Hauteur}/\useKV[PfMPixelArt]{HauteurD}-1}}}\do{%
+ \xintFor* ##2 in{\xintSeq{0}{\fpeval{\useKV[PfMPixelArt]{Largeur}/\useKV[PfMPixelArt]{LargeurD}-1}}}\do{%
+ \fpeval{##1*\useKV[PfMPixelArt]{Hauteur}/\useKV[PfMPixelArt]{HauteurD}+##2} : \PfMBuildPixelArtGeant{#2}{\useKV[PfMPixelArt]{Lettres}}{\ListeAvantCouleurs}{\the\toklistePfMPANombre}{##1}{##2}\\%
+ }%
+ }%
+ }{%
+% \quotient{\fpeval{\useKV[PfMPixelArt]{Numero}-1}}{\fpeval{\useKV[PfMPixelArt]{Hauteur}/\useKV[PfMPixelArt]{HauteurD}}}%
+% \modulo{\fpeval{\useKV[PfMPixelArt]{Numero}-1}}{\fpeval{\useKV[PfMPixelArt]{Hauteur}/\useKV[PfMPixelArt]{HauteurD}}}%
+ \quotient{\fpeval{\useKV[PfMPixelArt]{Numero}-1}}{\fpeval{\useKV[PfMPixelArt]{Largeur}/\useKV[PfMPixelArt]{LargeurD}}}%
+ \modulo{\fpeval{\useKV[PfMPixelArt]{Numero}-1}}{\fpeval{\useKV[PfMPixelArt]{Largeur}/\useKV[PfMPixelArt]{LargeurD}}}%
+% quotient = \the\intquotient -- remainder = \the\remainder :\\
+ \PfMBuildPixelArtGeant{#2}{\useKV[PfMPixelArt]{Lettres}}{\ListeAvantCouleurs}{\the\toklistePfMPANombre}{\the\intquotient}{\the\remainder}%
+ }%
+ }{%
+ \ifboolKV[PfMPixelArt]{Deforme}{%
+ \PfMBuildPixelArtDeforme{#2}{\useKV[PfMPixelArt]{Lettres}}{\ListeAvantCouleurs}{\the\toklistePfMPANombre}%
+ }{%
+ % \PfMBuildPixelArt{#2}{\useKV[PfMPixelArt]{Lettres}}{\ListeAvantCouleurs}{\the\toklistePfMPANombre}%
+ \PfMBuildPixelArt{#2}{\useKV[PfMPixelArt]{Lettres}}{\the\tokPfMPXNomCouleur}{\the\toklistePfMPANombre}%%
+ }%
+ }%
+}%
+
+\NewDocumentCommand\PfMBuildPixelArt{m m m m}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+% largeur:=\useKV[PfMPixelArt]{Largeur};
+% hauteur:=\useKV[PfMPixelArt]{Hauteur};
+ largeurd:=\useKV[PfMPixelArt]{LargeurD};
+ hauteurd:=\useKV[PfMPixelArt]{HauteurD};
+ Unite:=\useKV[PfMPixelArt]{Unite};
+
+ boolean Solution,Nombres,Separations,RotationPixel;
+ Solution:=\useKV[PfMPixelArt]{Solution};
+ Nombres:=\useKV[PfMPixelArt]{Nombres};
+ Separations:=\useKV[PfMPixelArt]{Separations};
+ RotationPixel:=\useKV[PixelArt]{Landscape};
+
+ string BaseLettres;
+ BaseLettres=str #2;
+ numeric EchelleScale;
+ EchelleScale=Unite/5mm;
+
+ color ColorEntier[],ColFond;
+ n:=0;
+ for p_=#3:
+ n:=n+1;
+ index:=0;
+ for k=0 upto (length p_-1):
+ if substring(k,k+1) of p_="!":
+ index:=k;
+ fi;
+ endfor;
+ if index>0:
+ color base;
+ base=scantokens(substring(0,index) of p_);
+ atte:=scantokens(substring(index+1,length p_) of p_);
+ ColorEntier[n]:=(atte/100)[white,base];
+ else:
+ ColorEntier[n]:=scantokens(p_);
+ fi;
+% ColorEntier[n]:=black;
+ endfor;
+
+ string RetiensNombres[];
+ if Nombres:
+ k:=0;
+ for p_=#4:
+ k:=k+1;
+ RetiensNombres[k]=p_;
+ endfor;
+ else:
+ m:=0;
+ for p_=0 upto n-1:
+ m:=m+1;
+ RetiensNombres[m]=substring(p_,p_+1) of BaseLettres;
+ endfor;
+ fi;
+
+ picture Etiquette[];
+ for k=1 upto n:
+ Etiquette[k]=image(
+ label(TEX(RetiensNombres[k]) scaled EchelleScale,(0,0));
+ );
+ endfor;
+
+ vardef Largeur(expr nomfichier)=
+ string p_;
+ p_=readfrom nomfichier;
+ largeur=(length p_+1) div 2;
+ closefrom nomfichier;
+ enddef;
+
+ vardef Hauteur(expr nomfichier)=
+ string p_;
+ hauteur=0;
+ p_=readfrom nomfichier;
+ forever: exitif p_=EOF;
+ hauteur:=hauteur+1;
+ p_:=readfrom nomfichier;
+ endfor;
+ closefrom nomfichier;
+ enddef;
+
+ vardef Lecturecsv(expr nomfichier)=
+ for h=hauteur downto 1:
+ string p_;
+ p_=readfrom nomfichier;
+ l:=0;
+ for p=0 step 2 until 2*largeur-2:
+ l:=l+1;
+ if Solution=false:
+ if (substring(p,p+1) of p_)="-":
+ else:
+ for m=0 upto (length BaseLettres-1):
+ if (substring(p,p+1) of p_)=substring(m,m+1) of BaseLettres:
+ draw Etiquette[m+1] shifted((l-1)*Unite,(h-1)*Unite);
+ fi;
+ endfor;
+ fi;
+ fi;
+ if Solution:
+ if (substring(p,p+1) of p_)="-":
+ else:
+ for m=0 upto (length BaseLettres-1):
+ if (substring(p,p+1) of p_)=substring(m,m+1) of BaseLettres:
+ ColFond:=ColorEntier[m+1];
+ fi;
+ endfor;
+ if unknown ColFond:
+ else:
+ fill (unitsquare scaled Unite) shifted ((l-1)*Unite-0.5*Unite,(h-1)*Unite-0.5*Unite) withcolor ColFond
+ fi;
+ fi;
+ fi;
+ trace (unitsquare scaled Unite) shifted ((l-1)*Unite-0.5*Unite,(h-1)*Unite-0.5*Unite);
+ endfor;
+ endfor;
+ closefrom nomfichier;
+ enddef;
+
+ Largeur(#1);
+ Hauteur(#1);
+% label.top(TEX("Largeur = "&decimal(largeur)),(0,-1cm));
+% label.bot(TEX("Hauteur = "&decimal(hauteur)),(0,-1cm));
+ Lecturecsv(#1);
+ if Separations:
+ drawoptions(withcolor Purple);
+ for k=hauteur step -hauteurd until 0:
+ draw (Unite*(-1,k-0.5)--Unite*(largeur,k-0.5)) withpen pencircle scaled 1.25;
+ endfor;
+ for k=0 step largeurd until largeur:
+ draw (Unite*(k-0.5,hauteur+0.125)--Unite*(k-0.5,-0.875)) withpen pencircle scaled 1.25;
+ endfor;
+ drawoptions();
+ fi;
+ if RotationPixel:
+ picture Retiens;
+ Retiens:=currentpicture;
+ currentpicture:=nullpicture;
+ draw Retiens rotatedabout(center Retiens,90);
+ fi;
+ \end{mplibcode}
+ \fi
+}%
+
+\NewDocumentCommand\PfMBuildPixelArtDeforme{m m m m}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ largeur:=\useKV[PfMPixelArt]{Largeur};
+ hauteur:=\useKV[PfMPixelArt]{Hauteur};
+ largeurd:=\useKV[PfMPixelArt]{LargeurD};
+ hauteurd:=\useKV[PfMPixelArt]{HauteurD};
+ Unite:=\useKV[PfMPixelArt]{Unite};
+
+ %Deformation
+ Coefx=\useKV[PfMPixelArt]{Coefx};
+ Coefy=\useKV[PfMPixelArt]{Coefy};
+ boolean Borne,Graines;
+ Borne=\useKV[PfMPixelArt]{Borne};
+ Graines=\useKV[PfMPixelArt]{Graines};
+ if Graines:
+ randomseed:=\useKV[PfMPixelArt]{Graine};
+ fi;
+ %
+ pair M[][];
+ for l=1 upto hauteur+1:
+ for c=1 upto largeur+1:
+ if Borne:
+ if (l=1) or (l=hauteur+1):
+ M[l][c]=Unite*(c,l)+Unite*(-Coefx+uniformdeviate(2*Coefx),0);
+ if (c=1) or (c=largeur+1):
+ M[l][c]:=Unite*(c,l);
+ fi;
+ else:
+ if (c=1) or (c=largeur+1):
+ M[l][c]=Unite*(c,l-1)+Unite*(0,uniformdeviate(Coefy));
+ else:
+ M[l][c]=Unite*(c,l)+Unite*(-Coefx+uniformdeviate(2*Coefx),-Coefy+uniformdeviate(2*Coefy));
+ fi;
+ fi;
+ else:
+ M[l][c]=Unite*(c,l)+Unite*(-Coefx+uniformdeviate(2*Coefx),-Coefy+uniformdeviate(2*Coefy));
+ fi;
+ %dotlabel("",M[l][c]);
+ endfor;
+ endfor;
+
+ boolean Solution,Nombres,Separations;
+ Solution:=\useKV[PfMPixelArt]{Solution};
+ Nombres:=\useKV[PfMPixelArt]{Nombres};
+ Separations:=\useKV[PfMPixelArt]{Separations};
+
+ string BaseLettres;
+ BaseLettres=str #2;
+ numeric EchelleScale;
+ EchelleScale=Unite/10mm;
+
+ color ColorEntier[],ColFond;
+ n:=0;
+ for p_=#3:
+ n:=n+1;
+ ColorEntier[n]:=p_;
+ endfor;
+
+ string RetiensNombres[];
+ if Nombres:
+ n:=0;
+ for p_=#4:
+ n:=n+1;
+ RetiensNombres[n]=p_;
+ endfor;
+ fi;
+
+ vardef Lecturecsv(expr nomfichier)=
+ for h=hauteur downto 1:
+ string p_;
+ p_=readfrom nomfichier;
+ l:=0;
+ for p=0 step 2 until 2*largeur-2:
+ l:=l+1;
+ if (substring(p,p+1) of p_)="-":
+ else:
+ if Nombres:
+ for m=0 upto (length BaseLettres-1):
+ if (substring(p,p+1) of p_)=substring(m,m+1) of BaseLettres:
+ label(TEX(RetiensNombres[m+1]) scaled EchelleScale,iso(M[h+1][l],M[h][l],M[h][l+1],M[h+1][l+1]));
+ fi;
+ endfor;
+ else:
+ label(TEX(substring(p,p+1) of p_) scaled EchelleScale,iso(M[h+1][l],M[h][l],M[h][l+1],M[h+1][l+1]));
+ fi;
+ if Solution:
+ for m=0 upto (length BaseLettres-1):
+ if (substring(p,p+1) of p_)=substring(m,m+1) of BaseLettres:
+ ColFond:=ColorEntier[m+1];
+ fi;
+ endfor;
+ if unknown ColFond: else: fill polygone(M[h+1][l],M[h][l],M[h][l+1],M[h+1][l+1]) withcolor ColFond fi;
+ fi;
+ trace polygone(M[h+1][l],M[h][l],M[h][l+1],M[h+1][l+1]);
+ fi;
+ endfor;
+ endfor;
+ closefrom nomfichier;
+ enddef;
+
+ Lecturecsv("#1");
+ \end{mplibcode}
+\fi
+}%
+
+\NewDocumentCommand\PfMBuildPixelArtGeant{m m m m m m}{%
+ \ifluatex%
+ \mplibforcehmode%
+ \begin{mplibcode}%
+ largeur:=\useKV[PfMPixelArt]{Largeur};
+ hauteur:=\useKV[PfMPixelArt]{Hauteur};
+ largeurd:=\useKV[PfMPixelArt]{LargeurD};
+ hauteurd:=\useKV[PfMPixelArt]{HauteurD};
+
+ Unite:=\useKV[PfMPixelArt]{Unite};
+
+ boolean Solution,Nombres;
+ Solution:=\useKV[PfMPixelArt]{Solution};
+ Nombres:=\useKV[PfMPixelArt]{Nombres};
+
+ string BaseLettres;
+ BaseLettres=str #2;
+
+ numeric EchelleScale;
+ EchelleScale=Unite/5mm;
+
+ color ColorEntier[],ColFond;
+ n:=0;
+ for p_=#3:
+ n:=n+1;
+ ColorEntier[n]:=p_;
+ endfor;
+
+ string RetiensNombres[];
+ if Nombres:
+ n:=0;
+ for p_=#4:
+ n:=n+1;
+ RetiensNombres[n]=p_;
+ endfor;
+ fi;
+
+ vardef Lecturecsv(expr nomfichier)=
+ % for h=hauteur-#5*hauteurd downto hauteur-(#5+1)*hauteurd:
+ for h=hauteur downto 1:
+ string p_;
+ p_=readfrom nomfichier;
+ l:=0;
+ if (h>hauteur-(#5+1)*hauteurd) and (h<hauteur-#5*hauteurd+1):
+ for p=2*#6*largeurd step 2 until 2*(#6+1)*largeurd-2:
+ l:=l+1;
+ if (substring(p,p+1) of p_)="-":
+ else:
+ if Nombres:
+ for m=0 upto (length BaseLettres-1):
+ if (substring(p,p+1) of p_)=substring(m,m+1) of BaseLettres:
+ label(TEX(RetiensNombres[m+1]) scaled EchelleScale,((l-1)*Unite,(h-1)*Unite));
+ fi;
+ endfor;
+ else:
+ label(TEX(substring(p,p+1) of p_) scaled EchelleScale,((l-1)*Unite,(h-1)*Unite));
+ fi;
+ if Solution:
+ for m=0 upto (length BaseLettres-1):
+ if (substring(p,p+1) of p_)=substring(m,m+1) of BaseLettres:
+ ColFond:=ColorEntier[m+1];
+ fi;
+ endfor;
+ if unknown ColFond: else: fill (unitsquare scaled Unite) shifted ((l-1)*Unite-0.5*Unite,(h-1)*Unite-0.5*Unite) withcolor ColFond fi;
+ fi;
+ trace (unitsquare scaled Unite) shifted ((l-1)*Unite-0.5*Unite,(h-1)*Unite-0.5*Unite);
+ fi;
+ endfor;
+ fi;
+ endfor;
+ closefrom nomfichier;
+ enddef;
+
+ Lecturecsv("#1");
+ \end{mplibcode}
+ \fi%
+}%
+
+% Puzzle Page
+\NewDocumentCommand\MPPuzzlePage{}{%
+ \begin{Geometrie}[Cadre="aucun"]
+ pair A,B,C,D,M[],N[],K[],L[],O[];
+ A=(0,0);
+ B-A=u*(27,0);
+ C-B=u*(0,-18.6);
+ D-C=A-B;
+ M1=1/3[A,B];
+ M2=2/3[A,B];
+ M3=1/3[D,C];
+ M4=2/3[D,C];
+ N1=1/2[A,D];
+ N3=1/2[B,C];
+ trace polygone(A,B,C,D);
+ K1=1/6[N1,N3]+u*(-0.3,0);
+ K2=1/6[N1,N3]+u*(0.3,0);
+ K3=iso(K1,K2)+u*(0,0.3);
+ K4=3/6[N1,N3]+u*(-0.3,0);
+ K5=3/6[N1,N3]+u*(0.3,0);
+ K6=iso(K4,K5)+u*(0,0.3);
+ K7=5/6[N1,N3]+u*(-0.3,0);
+ K8=5/6[N1,N3]+u*(0.3,0);
+ K9=iso(K7,K8)+u*(0,0.3);
+ trace N3--arccercle(K8,K7,K9)--arccercle(K5,K4,K6)--arccercle(K2,K1,K3)--N1;
+ L1=1/4[M1,M3]+u*(0,0.3);
+ L2=1/4[M1,M3]+u*(0,-0.3);
+ L3=iso(L1,L2)+u*(0.3,0);
+ L4=3/4[M1,M3]+u*(0,0.3);
+ L5=3/4[M1,M3]+u*(0,-0.3);
+ L6=iso(L4,L5)+u*(-0.3,0);
+ trace M3--reverse(arccercle(L4,L5,L6))--arccercle(L2,L1,L3)--M1;
+ O1=1/4[M2,M4]+u*(0,0.3);
+ O2=1/4[M2,M4]+u*(0,-0.3);
+ O3=iso(O1,O2)+u*(-0.3,0);
+ O4=3/4[M2,M4]+u*(0,0.3);
+ O5=3/4[M2,M4]+u*(0,-0.3);
+ O6=iso(O4,O5)+u*(0.3,0);
+ trace M4--arccercle(O5,O4,O6)--reverse(arccercle(O1,O2,O3))--M2;
+ \end{Geometrie}
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profsio/ProfSio.sty b/Master/texmf-dist/tex/latex/profsio/ProfSio.sty
index 3b70f9a1e38..b815329444c 100644
--- a/Master/texmf-dist/tex/latex/profsio/ProfSio.sty
+++ b/Master/texmf-dist/tex/latex/profsio/ProfSio.sty
@@ -1,9 +1,10 @@
% Author : C. Pierquet
-% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
% : Luatruthtable from Chetan Shirore and Dr. Ajit Kumar https://ctan.org/pkg/luatruthtable
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfSio}[2024/05/18 0.2.8 Pour les enseignants de Maths en BTS SIO]
+\ProvidesPackage{ProfSio}[2025/01/04 0.2.9 Pour les enseignants de Maths en BTS SIO]
+%0.2.9 Correction d'un bug dans les simplifications de Karnaugh
%0.2.8 Ajout des grilles de CCF (E2)
%0.2.7 Correction d'un bug dans les simplifications de Karnaugh
%0.2.6 Corrections dans les simplifications de Karnaugh
@@ -39,7 +40,8 @@
\RequirePackage{calc}
\RequirePackage{nicematrix}
%------Librairies
-\usetikzlibrary{positioning,decorations.pathreplacing,decorations.markings,arrows,arrows.meta,calc,babel,shapes,shapes.geometric}
+\usetikzlibrary{positioning,decorations.pathreplacing,decorations.markings,arrows,arrows.meta,calc,shapes,shapes.geometric}
+\usetikzlibrary{babel}
%------Divers
\def\§{\mkern1.5mu\relax}
@@ -2041,32 +2043,32 @@ end
%calculs pour 1 lettre
\IfSubStr{\knghbintransf}{(AA)}{\xdef\knghbinres{\inteval{\knghbinres+11110000}}}{}%
\IfSubStr{\knghbintransf}{(BB)}{\xdef\knghbinres{\inteval{\knghbinres+11001100}}}{}%
- \IfSubStr{\knghbintransf}{(CC)}{\xdef\knghbinres{\inteval{\knghbinres+01100110}}}{}%
+ \IfSubStr{\knghbintransf}{(CC)}{\xdef\knghbinres{\inteval{\knghbinres+01100110}}}{}%version c intérieure !!
\IfSubStr{\knghbintransf}{(AA*)}{\xdef\knghbinres{\inteval{\knghbinres+00001111}}}{}%
\IfSubStr{\knghbintransf}{(BB*)}{\xdef\knghbinres{\inteval{\knghbinres+00110011}}}{}%
- \IfSubStr{\knghbintransf}{(CC*)}{\xdef\knghbinres{\inteval{\knghbinres+10011001}}}{}%
+ \IfSubStr{\knghbintransf}{(CC*)}{\xdef\knghbinres{\inteval{\knghbinres+10011001}}}{}%version bar(c) extérieure
%calculs pour 2 lettres
\IfSubStr{\knghbintransf}{(AABB)}{\xdef\knghbinres{\inteval{\knghbinres+11000000}}}{}%
- \IfSubStr{\knghbintransf}{(AACC*)}{\xdef\knghbinres{\inteval{\knghbinres+01100000}}}{}%
+ \IfSubStr{\knghbintransf}{(AACC*)}{\xdef\knghbinres{\inteval{\knghbinres+10010000}}}{}%=====!
\IfSubStr{\knghbintransf}{(AABB*)}{\xdef\knghbinres{\inteval{\knghbinres+00110000}}}{}%
\IfSubStr{\knghbintransf}{(AA*BB)}{\xdef\knghbinres{\inteval{\knghbinres+00001100}}}{}%
- \IfSubStr{\knghbintransf}{(AA*CC*)}{\xdef\knghbinres{\inteval{\knghbinres+00000110}}}{}%
+ \IfSubStr{\knghbintransf}{(AA*CC*)}{\xdef\knghbinres{\inteval{\knghbinres+00001001}}}{}%=====!
\IfSubStr{\knghbintransf}{(AA*BB*)}{\xdef\knghbinres{\inteval{\knghbinres+00000011}}}{}%
- \IfSubStr{\knghbintransf}{(AACC)}{\xdef\knghbinres{\inteval{\knghbinres+10010000}}}{}%
- \IfSubStr{\knghbintransf}{(AA*CC)}{\xdef\knghbinres{\inteval{\knghbinres+00001001}}}{}%
- \IfSubStr{\knghbintransf}{(BBCC)}{\xdef\knghbinres{\inteval{\knghbinres+10001000}}}{}%
- \IfSubStr{\knghbintransf}{(BBCC*)}{\xdef\knghbinres{\inteval{\knghbinres+01000100}}}{}%
- \IfSubStr{\knghbintransf}{(BB*CC*)}{\xdef\knghbinres{\inteval{\knghbinres+00100010}}}{}%
- \IfSubStr{\knghbintransf}{(BB*CC)}{\xdef\knghbinres{\inteval{\knghbinres+00010001}}}{}%
+ \IfSubStr{\knghbintransf}{(AACC)}{\xdef\knghbinres{\inteval{\knghbinres+01100000}}}{}%=====!
+ \IfSubStr{\knghbintransf}{(AA*CC)}{\xdef\knghbinres{\inteval{\knghbinres+00000110}}}{}%=====!
+ \IfSubStr{\knghbintransf}{(BBCC)}{\xdef\knghbinres{\inteval{\knghbinres+01000100}}}{}%=====!
+ \IfSubStr{\knghbintransf}{(BBCC*)}{\xdef\knghbinres{\inteval{\knghbinres+10001000}}}{}%=====!
+ \IfSubStr{\knghbintransf}{(BB*CC*)}{\xdef\knghbinres{\inteval{\knghbinres+00010001}}}{}%=====!
+ \IfSubStr{\knghbintransf}{(BB*CC)}{\xdef\knghbinres{\inteval{\knghbinres+00100010}}}{}%=====!
%calculs pour 3 lettres
- \IfSubStr{\knghbintransf}{(AABBCC)}{\xdef\knghbinres{\inteval{\knghbinres+10000000}}}{}%
- \IfSubStr{\knghbintransf}{(AABBCC*)}{\xdef\knghbinres{\inteval{\knghbinres+01000000}}}{}%
- \IfSubStr{\knghbintransf}{(AABB*CC*)}{\xdef\knghbinres{\inteval{\knghbinres+00100000}}}{}%
- \IfSubStr{\knghbintransf}{(AABB*CC)}{\xdef\knghbinres{\inteval{\knghbinres+00010000}}}{}%
- \IfSubStr{\knghbintransf}{(AA*BBCC)}{\xdef\knghbinres{\inteval{\knghbinres+00001000}}}{}%
- \IfSubStr{\knghbintransf}{(AA*BBCC*)}{\xdef\knghbinres{\inteval{\knghbinres+00000100}}}{}%
- \IfSubStr{\knghbintransf}{(AA*BB*CC*)}{\xdef\knghbinres{\inteval{\knghbinres+00000010}}}{}%
- \IfSubStr{\knghbintransf}{(AA*BB*CC)}{\xdef\knghbinres{\inteval{\knghbinres+00000001}}}{}%
+ \IfSubStr{\knghbintransf}{(AABBCC)}{\xdef\knghbinres{\inteval{\knghbinres+01000000}}}{}%=====!
+ \IfSubStr{\knghbintransf}{(AABBCC*)}{\xdef\knghbinres{\inteval{\knghbinres+10000000}}}{}%=====!
+ \IfSubStr{\knghbintransf}{(AABB*CC*)}{\xdef\knghbinres{\inteval{\knghbinres+00010000}}}{}%=====!
+ \IfSubStr{\knghbintransf}{(AABB*CC)}{\xdef\knghbinres{\inteval{\knghbinres+00100000}}}{}%=====!
+ \IfSubStr{\knghbintransf}{(AA*BBCC)}{\xdef\knghbinres{\inteval{\knghbinres+00000100}}}{}%=====!
+ \IfSubStr{\knghbintransf}{(AA*BBCC*)}{\xdef\knghbinres{\inteval{\knghbinres+00001000}}}{}%=====!
+ \IfSubStr{\knghbintransf}{(AA*BB*CC*)}{\xdef\knghbinres{\inteval{\knghbinres+00000001}}}{}%=====!
+ \IfSubStr{\knghbintransf}{(AA*BB*CC)}{\xdef\knghbinres{\inteval{\knghbinres+00000010}}}{}%=====!
%on complète
\StrLen{\knghbinres}[\knghbinresnbchiffres]
\ifnum\knghbinresnbchiffres<8%
diff --git a/Master/texmf-dist/tex/latex/projlib/ProjLib.sty b/Master/texmf-dist/tex/latex/projlib/ProjLib.sty
index a47e4e612a9..7220efaae0e 100644
--- a/Master/texmf-dist/tex/latex/projlib/ProjLib.sty
+++ b/Master/texmf-dist/tex/latex/projlib/ProjLib.sty
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{ProjLib}
- {2024/03/01} {}
+ {2024/11/07} {}
{Collective interface of the ProjLib toolkit}
\keys_define:nn { ProjLib }
diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-author.sty b/Master/texmf-dist/tex/latex/projlib/projlib-author.sty
index 9a50ebce04c..620f8650117 100644
--- a/Master/texmf-dist/tex/latex/projlib/projlib-author.sty
+++ b/Master/texmf-dist/tex/latex/projlib/projlib-author.sty
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{projlib-author}
- {2024/03/01} {}
+ {2024/11/07} {}
{Enhanced author information block}
\keys_define:nn { projlib-author }
diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty b/Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty
index 6844cc75bbb..33ae2b328c2 100644
--- a/Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty
+++ b/Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{projlib-datetime}
- {2024/03/01} {}
+ {2024/11/07} {}
{Convert numeric date-time string to natural language}
\tl_new:N \g__projlib_datetime_input_format_tl
diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-draft.sty b/Master/texmf-dist/tex/latex/projlib/projlib-draft.sty
index 52a41ef34f5..b02986c1db0 100644
--- a/Master/texmf-dist/tex/latex/projlib/projlib-draft.sty
+++ b/Master/texmf-dist/tex/latex/projlib/projlib-draft.sty
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{projlib-draft}
- {2024/03/01} {}
+ {2024/11/07} {}
{Useful commands during draft stage}
\keys_define:nn { projlib-draft }
diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-font.sty b/Master/texmf-dist/tex/latex/projlib/projlib-font.sty
index 01b03dba657..6149904ffe7 100644
--- a/Master/texmf-dist/tex/latex/projlib/projlib-font.sty
+++ b/Master/texmf-dist/tex/latex/projlib/projlib-font.sty
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{projlib-font}
- {2024/03/01} {}
+ {2024/11/07} {}
{Font selection and configuration}
\keys_define:nn { projlib-font }
diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-language.sty b/Master/texmf-dist/tex/latex/projlib/projlib-language.sty
index ca08940f1dc..8b3a9a8551f 100644
--- a/Master/texmf-dist/tex/latex/projlib/projlib-language.sty
+++ b/Master/texmf-dist/tex/latex/projlib/projlib-language.sty
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{projlib-language}
- {2024/03/01} {}
+ {2024/11/07} {}
{Multi-language configuration}
\clist_const:Nn \c__projlib_language_supported_clist
@@ -243,6 +243,8 @@
\PassOptionsToPackage { italian, brazilian, spanish, ngerman, french, english } { cleveref }
\RequirePackage { babel }
+\AddToHook{file/glossaries-portuges.ldf/before}{\let\glossariescaptionsportuges\relax}
+
\RequirePackage { silence }
\WarningFilter { biblatex } { Language }
@@ -630,6 +632,7 @@
\NewDocumentCommand \UseLanguage { m }
{
+ \@bsphack
% Set the configuration twice at different stages of begindocument
\hook_gput_code:nnn { begindocument } { projlib-language }
{
@@ -639,6 +642,7 @@
{
\projlib_language_use_language:e { #1 }
}
+ \@esphack
}
\NewDocumentCommand \UseOtherLanguage { m m }
{
@@ -646,6 +650,8 @@
\projlib_language_use_language_locally:en { #1 } { #2 }
\group_end:
}
+\NewCommandCopy \LocallyUseLanguage \UseOtherLanguage
+\NewCommandCopy \UseLanguageLocally \UseOtherLanguage
\NewDocumentEnvironment { OtherLanguage } { m +b }
{
\projlib_language_use_language_locally:en { #1 } { #2 }
diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-logo.sty b/Master/texmf-dist/tex/latex/projlib/projlib-logo.sty
index 4a3d1f64a85..8474757a7a9 100644
--- a/Master/texmf-dist/tex/latex/projlib/projlib-logo.sty
+++ b/Master/texmf-dist/tex/latex/projlib/projlib-logo.sty
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{projlib-logo}
- {2024/03/01} {}
+ {2024/11/07} {}
{The ProjLib logo}
\keys_define:nn { projlib-logo }
diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-math.sty b/Master/texmf-dist/tex/latex/projlib/projlib-math.sty
index cb11e96d5f7..eaca2de5bf7 100644
--- a/Master/texmf-dist/tex/latex/projlib/projlib-math.sty
+++ b/Master/texmf-dist/tex/latex/projlib/projlib-math.sty
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{projlib-math}
- {2024/03/01} {}
+ {2024/11/07} {}
{Efficient math setup}
\keys_define:nn { projlib-math }
@@ -244,6 +244,7 @@
\end { tabular }
\par
\skip_vertical:n { -\parskip }
+ \skip_vertical:n { .15\baselineskip }
}
\cs_new:Nn \projlib_math_list_of_symbols:nnn
diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-paper.sty b/Master/texmf-dist/tex/latex/projlib/projlib-paper.sty
index 4068a575e76..431a13f9f1b 100644
--- a/Master/texmf-dist/tex/latex/projlib/projlib-paper.sty
+++ b/Master/texmf-dist/tex/latex/projlib/projlib-paper.sty
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{projlib-paper}
- {2024/03/01} {}
+ {2024/11/07} {}
{Configuration of the paper style}
\keys_define:nn { projlib-paper }
diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-text.sty b/Master/texmf-dist/tex/latex/projlib/projlib-text.sty
index 3ac767858a8..841e98c43fe 100644
--- a/Master/texmf-dist/tex/latex/projlib/projlib-text.sty
+++ b/Master/texmf-dist/tex/latex/projlib/projlib-text.sty
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{projlib-text}
- {2024/03/01} {}
+ {2024/11/07} {}
{Text-related commands}
\keys_define:nn { projlib-text }
diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty b/Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty
index 6ae361f34ff..1eb661acdca 100644
--- a/Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty
+++ b/Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{projlib-theorem}
- {2024/03/01} {}
+ {2024/11/07} {}
{Configuration of theorem-like environments}
\keys_define:nn { projlib-theorem }
@@ -107,9 +107,11 @@
remark ,
theorem ,
definition-corollary ,
+ definition-lemma ,
definition-proposition ,
definition-theorem ,
corollary-definition ,
+ lemma-definition ,
proposition-definition ,
theorem-definition ,
applications ,
diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-titlepage.sty b/Master/texmf-dist/tex/latex/projlib/projlib-titlepage.sty
index 9ac50f0471d..c14359895e9 100644
--- a/Master/texmf-dist/tex/latex/projlib/projlib-titlepage.sty
+++ b/Master/texmf-dist/tex/latex/projlib/projlib-titlepage.sty
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{projlib-titlepage}
- {2024/03/01} {}
+ {2024/11/07} {}
{Interface for title page rendering}
\keys_define:nn { projlib-titlepage }
diff --git a/Master/texmf-dist/tex/latex/prooftrees/prooftrees.sty b/Master/texmf-dist/tex/latex/prooftrees/prooftrees.sty
index c28a6c96881..ea15ae27482 100644
--- a/Master/texmf-dist/tex/latex/prooftrees/prooftrees.sty
+++ b/Master/texmf-dist/tex/latex/prooftrees/prooftrees.sty
@@ -1,23 +1,26 @@
-%% Copyright 2020 Clea F. Rees
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Clea F. Rees.
-%
-% This work consists of all files listed in manifest.txt.
+%% Copyright 2016-2024 Clea F. Rees
%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% prooftrees.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{svn-prov}
-\ProvidesPackageSVN{$Id: prooftrees.sty 9103 2022-04-02 04:28:09Z cfrees $}[v0.8 \revinfo]
-\RequirePackage{etoolbox}
+\ProvidesPackageSVN{$Id: prooftrees.sty 10522 2024-10-23 16:31:08Z cfrees $}[v0.9 \revinfo]
% define \prooftrees@enw to hold the name of the environment
% default is to name the environment prooftree, this ensures backwards compatibility
\newcommand*\prooftrees@enw{prooftree}
@@ -27,7 +30,12 @@
\DeclareOption{tableau}{\renewcommand*\prooftrees@enw{tableau}}
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{forest}}
% if \prooftree is not yet defined, set the name to prooftree; otherwise, use tableau to avoid conflict with bussproofs (which uses 'prooftree' rather than 'bussproof' as one might expect)
-\ifundef\prooftree{\renewcommand*\prooftrees@enw{prooftree}}{\renewcommand*\prooftrees@enw{tableau}}
+\ifcsname prooftree\endcsname
+ \renewcommand*\prooftrees@enw{tableau}%
+\else
+ \renewcommand*\prooftrees@enw{prooftree}%
+\fi
+% \ifundef\prooftree{\renewcommand*\prooftrees@enw{prooftree}}{\renewcommand*\prooftrees@enw{tableau}}
% let users override the default prooftree in case they need to load bussproofs later
\ProcessOptions
\RequirePackage{forest}[2016/12/04]
@@ -457,7 +465,7 @@
}{},
where={%
>{O _O< O &&}{grouped}{1}{level}{proof tree rhifo}%
- }{% this searches for certain kinds of structural asymmetry in the tree and attempts to move lines appropriately in such cases - the algorithm is intended to be relatively conservative (not in the sense of 'cautious' or 'safe' but in the sense of 'reflection of the overlapping consensus of reasonable users' / 'what would be rationally agreed behind the prooftrees veil of ignorance'; apologies for the inconvenience if you are an unreasonable user)
+ }{% this searches for certain kinds of structural asymmetry in the tree and attempts to move lines appropriately in such cases - the algorithm is intended to be relatively conservative (not in the sense of 'cautious' or 'safe' but in the sense of 'reflection of the overlapping consensus of reasonable users' / 'what would be rationally agreed behind the prooftrees veil of ignorance'; however, I should have realised I actually had 'the overlapping concensus of reasonable Beamer users' in mind rather than 'the overlapping consensus of reasonable users', so there is now an option to turn it off;apologies if this comment previously misclassified you as 'unreasonable'; apologies for the inconvenience if you are an unreasonable user)
not tempboola,
for root/.process={Ow1}{level}{%
for level={##1}{%
@@ -867,9 +875,9 @@
},
},
}
-\environbodyname\prooftreebody
+% \environbodyname\prooftreebody
\bracketset{action character=@}
-\NewEnviron{\prooftrees@enw}[1]{% \forest/\endforest from egreg's answer at http://tex.stackexchange.com/a/229608/
+\NewDocumentEnvironment{\prooftrees@enw}{ m +b }{% \forest/\endforest from egreg's answer at http://tex.stackexchange.com/a/229608/
\forest
(%
stages={% customised definition of stages - we don't use any custom stages, but we do use several custom keylists, where the processing order of these is critical
@@ -896,7 +904,26 @@
)%
proof tree,% apply the proof tree style, which sets keylists from both forest's defaults and our custom additions
#1,% insert user's preamble, empty or otherwise - this allows the user both to override our defaults (e.g. by setting a non-empty proof statement or a custom format for line numbers) and to customise the tree using forest's facilities in the usual way - BUT customisations of the latter kind may or may not be effective, may or may not have undesirable - not to say chaotic - consequences, and may or may not cause compilation failures (structural changes, in particular, should be avoided completely)
- [, name=proof statement @\prooftreebody]%
- \endforest}
+ [, name=proof statement @#2]%
+ \endforest
+}{}
+
+\ExplSyntaxOn
+\cs_new_protected_nopar:Npn \__prooftrees_memoize:n #1
+{
+ \mmzset{
+ auto = { #1 } { memoize },
+ }
+}
+\cs_generate_variant:Nn \__prooftrees_memoize:n { V }
+\hook_gput_code:nnn { begindocument / before } { . }
+{% paid â memoize bussproofs prooftree ...
+ \@ifpackageloaded{memoize}{
+ \__prooftrees_memoize:V \prooftrees@enw
+ }{}
+}
+\ExplSyntaxOff
+
\endinput
%% end prooftrees.sty
+
diff --git a/Master/texmf-dist/tex/latex/randintlist/randintlist.sty b/Master/texmf-dist/tex/latex/randintlist/randintlist.sty
new file mode 100644
index 00000000000..daffc7cd011
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/randintlist/randintlist.sty
@@ -0,0 +1,248 @@
+% Author : C. Pierquet
+% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{randintlist}[2025/01/04 0.1.3 Create a list of random numbers with or without multiple values]
+
+%------History
+% 0.1.3 new usage of extracting element (with storing \macro)
+% 0.1.2 Changing name of macro
+% 0.1.1 Possibility to exclude values
+% 0.1.0 Initial version
+
+%------Packages
+\RequirePackage{simplekv}
+\RequirePackage{listofitems}
+\RequirePackage{randomlist}
+\RequirePackage{xintexpr}
+\RequirePackage{xstring}
+\RequirePackage{ifthen}
+
+%-----Macros (latex3) for sorting and seed
+\ExplSyntaxOn
+\cs_new_eq:NN \randintseed \sys_gset_rand_seed:n
+\NewDocumentCommand\intascsortlist{m}
+{
+ \clist_sort:Nn #1
+ {
+ \fp_compare:nNnTF {##1} > {##2}
+ { \sort_return_swapped: }
+ { \sort_return_same: }
+ }
+}
+\NewDocumentCommand\intdessortlist{m}
+{
+ \clist_sort:Nn #1
+ {
+ \fp_compare:nNnTF {##1} < {##2}
+ { \sort_return_swapped: }
+ { \sort_return_same: }
+ }
+}
+\ExplSyntaxOff
+
+%----Internal macro (latex2) for testing if element is in list
+\newcommand\ifintvalueinlist[2]{\IfSubStr{,#2,}{,#1,}}
+
+\newcommand\boolvalueinlist[2]{\IfSubStr{,#2,}{,#1,}{\def\resisinlist{1}}{\def\resisinlist{0}}}
+
+\newcommand\testifintvalueinlist[4]{%
+ \IfSubStr{,#2,}{,#1,}{\xdef\RESTMPVALUE{1}}{\xdef\RESTMPVALUE{0}}%
+ \xintifboolexpr{ \RESTMPVALUE == 1}{#3}{#4}%
+}
+
+%----Macro for generating
+\defKV[randomlistintegers]{%
+ min=\def\TAEEmin{#1},%
+ max=\def\TAEEmax{#1},%
+ nb=\def\TAEEnb{#1},%
+ sep=\def\TAEEsep{#1},%
+ sort=\def\TAEEtri{#1},%
+ seed=\def\TAEEseed{#1},%
+ exclude=\def\TAEEexcluded{#1}
+}
+
+\setKVdefault[randomlistintegers]{%
+ min=1,%
+ max=50,%
+ nb=6,%
+ sep={,},%
+ sort=no,%
+ repeat=false,%
+ seed={-},%
+ exclude={}
+}
+
+\NewList{tmprandintlist}
+
+\NewDocumentCommand\randintlist{ O{} m }{%1=keys,2=listname
+ \useKVdefault[randomlistintegers]%
+ \setKV[randomlistintegers]{#1}%
+ \ifboolKV[randomlistintegers]{repeat}%repeat or not
+ {%repeat allowed
+ \IfStrEq{\TAEEseed}{-}%
+ {}%
+ {%
+ \randintseed{\TAEEseed}%
+ }%
+ %list creation of first element
+ \def\resisinlist{1}%
+ \whiledo{\resisinlist=1}{%
+ \xdef\tmpresrandint{\fpeval{randint(\TAEEmin,\TAEEmax)}}%
+ \boolvalueinlist{\tmpresrandint}{\TAEEexcluded}%
+ }%
+ \xdef#2{\tmpresrandint}%
+ %list creation of other elements
+ \xintFor* ##1 in {\xintSeq{2}{\TAEEnb}}%
+ \do{%
+ \def\resisinlist{1}%
+ \whiledo{\resisinlist=1}{%
+ \xdef\tmpresrandint{\fpeval{randint(\TAEEmin,\TAEEmax)}}%
+ \boolvalueinlist{\tmpresrandint}{\TAEEexcluded}%
+ }%
+ \xdef#2{#2,\tmpresrandint}%
+ }%
+ }%
+ {%no repeating
+ %randomize numbers
+ \IfStrEq{\TAEEseed}{-}%
+ {}%
+ {%
+ \RLsetrandomseed{\TAEEseed}%
+ }%
+ \ClearList{tmprandintlist}%clearing the list
+ \xintFor* ##1 in {\xintSeq{\TAEEmin}{\TAEEmax}}%
+ \do{%
+ \ifintvalueinlist{##1}{\TAEEexcluded}%
+ {}%
+ {%
+ \InsertRandomItem{tmprandintlist}{##1}%
+ }%
+ }%
+ %list creation (first then other)
+ \xdef#2{\tmprandintlist[0]}%
+ \xintFor* ##1 in {\xintSeq{1}{\TAEEnb-1}}%
+ \do{%
+ \xdef#2{#2,\tmprandintlist[##1]}%
+ }%
+ }%
+ %sorting
+ \IfStrEq{\TAEEtri}{asc}%if ascending
+ {\intascsortlist{#2}}%
+ {}%
+ \IfStrEq{\TAEEtri}{des}%if descending
+ {\intdessortlist{#2}}%
+ {}%
+ \StrSubstitute{#2}{,}{\TAEEsep}[#2]%swipping separator if necessary
+}
+
+%-----Macro for extracting
+\NewDocumentCommand\getitemfromrandintlist{ O{,} m m o }{%
+ \IfStrEq{#1}{/}%
+ {%
+ \setsepchar[.]{#1}%
+ }%
+ {%
+ \setsepchar{#1}%
+ }%
+ \readlist*\TMPLISTRANDINT{#2}%
+ \IfNoValueTF{#4}{\TMPLISTRANDINT[#3]}{\itemtomacro\TMPLISTRANDINT[#3]#4}%
+}
+
+%-----french version
+\defKV[randomlisteentiers]{%
+ Min=\def\TAEEmin{#1},%
+ Max=\def\TAEEmax{#1},%
+ Nb=\def\TAEEnb{#1},%
+ Sep=\def\TAEEsep{#1},%
+ Tri=\def\TAEEtri{#1},%
+ Graine=\def\TAEEseed{#1},%
+ Exclure=\def\TAEEexcluded{#1}
+}
+
+\setKVdefault[randomlisteentiers]{%
+ Min=1,%
+ Max=50,%
+ Nb=6,%
+ Sep={,},%
+ Tri=non,%
+ Repet=false,%
+ Graine={-},%
+ Exclure={}
+}
+
+\NewDocumentCommand\ListeRandint{ O{} m }{%1=keys,2=listname
+ \useKVdefault[randomlisteentiers]%
+ \setKV[randomlisteentiers]{#1}%
+ \ifboolKV[randomlisteentiers]{Repet}%repeat or not
+ {%repeat allowed
+ \IfStrEq{\TAEEseed}{-}%
+ {}%
+ {%
+ \randintseed{\TAEEseed}%
+ }%
+ %list creation of first element
+ \def\resisinlist{1}%
+ \whiledo{\resisinlist=1}{%
+ \xdef\tmpresrandint{\fpeval{randint(\TAEEmin,\TAEEmax)}}%
+ \boolvalueinlist{\tmpresrandint}{\TAEEexcluded}%
+ }%
+ \xdef#2{\tmpresrandint}%
+ %list creation of other elements
+ \xintFor* ##1 in {\xintSeq{2}{\TAEEnb}}%
+ \do{%
+ \def\resisinlist{1}%
+ \whiledo{\resisinlist=1}{%
+ \xdef\tmpresrandint{\fpeval{randint(\TAEEmin,\TAEEmax)}}%
+ \boolvalueinlist{\tmpresrandint}{\TAEEexcluded}%
+ }%
+ \xdef#2{#2,\tmpresrandint}%
+ }%
+ }%
+ {%no repeating
+ %randomize numbers
+ \IfStrEq{\TAEEseed}{-}%
+ {}%
+ {%
+ \RLsetrandomseed{\TAEEseed}%
+ }%
+ \ClearList{tmprandintlist}%clearing the list
+ \xintFor* ##1 in {\xintSeq{\TAEEmin}{\TAEEmax}}%
+ \do{%
+ \ifintvalueinlist{##1}{\TAEEexcluded}%
+ {}%
+ {%
+ \InsertRandomItem{tmprandintlist}{##1}%
+ }%
+ }%
+ %list creation (first then other)
+ \xdef#2{\tmprandintlist[0]}%
+ \xintFor* ##1 in {\xintSeq{1}{\TAEEnb-1}}%
+ \do{%
+ \xdef#2{#2,\tmprandintlist[##1]}%
+ }%
+ }%
+ %sorting
+ \IfStrEq{\TAEEtri}{croiss}%if ascending
+ {\intascsortlist{#2}}%
+ {}%
+ \IfStrEq{\TAEEtri}{decroiss}%if descending
+ {\intdessortlist{#2}}%
+ {}%
+ \StrSubstitute{#2}{,}{\TAEEsep}[#2]%swipping separator if necessary
+}
+
+%-----Macro for extracting
+\NewDocumentCommand\ExtraireEltListeRandint{ O{,} m m o }{%
+ \IfStrEq{#1}{/}%
+ {%
+ \setsepchar[.]{#1}%
+ }%
+ {%
+ \setsepchar{#1}%
+ }%
+ \readlist*\TMPLISTRANDINT{#2}%
+ \IfNoValueTF{#4}{\TMPLISTRANDINT[#3]}{\itemtomacro\TMPLISTRANDINT[#3]#4}%
+}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/rebuttal/rebuttal.sty b/Master/texmf-dist/tex/latex/rebuttal/rebuttal.sty
new file mode 100644
index 00000000000..b55e8673bd1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/rebuttal/rebuttal.sty
@@ -0,0 +1,467 @@
+%%
+%% This is file `rebuttal.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% rebuttal.dtx (with options: `package')
+%%
+%% Copyright (C) 2018-2021, 2024 Sergiu Deitsch
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Sergiu Deitsch.
+%%
+%% This work consists of the files rebuttal.dtx and rebuttal.ins.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{rebuttal}
+ [2024-11-14 v0.1.1 Markup for rebuttal letters]
+\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor}
+\RequirePackage{calc}
+\RequirePackage{environ}
+\RequirePackage{etoolbox}
+\RequirePackage{marginnote}
+\RequirePackage{pgfkeys}
+\RequirePackage{soul}
+\RequirePackage{tikz}
+\RequirePackage{todonotes}
+\RequirePackage{ulem}
+\RequirePackage{xcolor}
+\RequirePackage{xstring}
+
+\AtEndPreamble{
+ \RequirePackage{pdfcomment}
+}
+
+\ifx\counterwithin\@undefined
+\RequirePackage{chngcntr}
+\fi
+\newcommand\rebuttal@triangle{%
+ \begingroup
+ \ifx\tikzexternaldisable\@undefined\else
+ \tikzexternaldisable
+ \fi
+ \begin{tikzpicture}[x=.5em,y=.5em]
+ \fill[/rebuttal/answer/label] (0,0) -- (0,1) -- (.75,.5) -- cycle;
+ \end{tikzpicture}%
+ \endgroup
+}
+\newcommand\rebuttal@decbookmarklevel{%
+ \ifx\Hy@currentbookmarklevel\@undefined\else
+ \@tempcnta\Hy@currentbookmarklevel
+ \advance\@tempcnta by -1 %
+ \xdef\Hy@currentbookmarklevel{\the\@tempcnta}%
+ \fi
+}
+
+\newcommand\rebuttal@incbookmarklevel{%
+ \ifx\Hy@currentbookmarklevel\@undefined\else
+ \@tempcnta\Hy@currentbookmarklevel
+ \advance\@tempcnta by 1 %
+ \xdef\Hy@currentbookmarklevel{\the\@tempcnta}%
+ \fi
+}
+
+\newif\ifrebuttal@marked
+\newif\ifrebuttal@nohyperlinks
+\newif\ifrebuttal@refbreak
+\newif\ifrebuttal@twocolumn
+
+\pgfkeys{
+ /rebuttal/.is family,
+ /rebuttal/execute on begin/.initial=,
+ /rebuttal/execute on end/.initial=,
+ /rebuttal/no hyperlinks/.is if=rebuttal@nohyperlinks,
+ /rebuttal/no hyperlinks=false,
+ /rebuttal/marked/.is if=rebuttal@marked,
+ /rebuttal/marked=true,
+ /rebuttal/title/font/.store in=\rebuttal@titlefont,
+ /rebuttal/title/font=\normalfont\bfseries,
+ /rebuttal/title/format/.code=#1:,
+ /rebuttal/change/from command/.store in=\rebuttal@changefrom,
+ /rebuttal/change/from command=\sout,
+ /rebuttal/change/from color/.code={\colorlet{rebuttal@change@from}{#1}},
+ /rebuttal/change/from color=DodgerBlue3!50,
+ /rebuttal/deletion/command/.store in=\rebuttal@delete,
+ /rebuttal/deletion/command=\xout,
+ /rebuttal/comment/font/.store in=\rebuttal@commentfont,
+ /rebuttal/comment/font=\normalfont\itshape,
+ /rebuttal/comment/label/font/.store in=\rebuttal@commentlabelfont,
+ /rebuttal/comment/label/font=\normalfont\rmfamily\bfseries,
+ /rebuttal/answer/font/.store in=\rebuttal@answerfont,
+ /rebuttal/answer/font=\normalfont,
+ /rebuttal/answer/label/.store in=\rebuttal@answerlabel,
+ /rebuttal/answer/label={\rebuttal@triangle},
+ /rebuttal/answer/label/font/.store in=\rebuttal@answerlabelfont,
+ /rebuttal/answer/label/font=\normalfont,
+ /rebuttal/answer/label/.style={black!65},
+ /rebuttal/reference/font/.store in=\rebuttal@referencefont,
+ /rebuttal/reference/font={%
+ \tiny\bfseries%
+ },
+ % TODO does not work within \todo
+ %/rebuttal/reference/.code={%
+ %},
+}
+
+\let\rebuttalanswerlabel\rebuttal@answerlabel
+
+\newrobustcmd\rebuttal@reference[1]{%
+ \begingroup
+ \rebuttal@referencefont
+ \begin{tabular}{@{}c@{}}
+ \begingroup
+ \color{rebuttal@#1}%
+ \MakeUppercase{\rebuttal@id}%
+ \csname therebuttal#1\endcsname
+ \endgroup
+ \ifrebuttal@refbreak
+ \\%
+ \else
+ \enspace
+ \fi
+ \normalfont
+ % Reset color (TODO Maybe allow to modify the color)
+ \color{black}%
+ (\pgfkeys{/rebuttal/#1/ref/all})%
+ \end{tabular}%
+ \endgroup
+}
+
+\newcommand\rebuttal@define@keys[2]{
+ \pgfkeys{
+ /rebuttal/#1/label/.initial=,
+ /rebuttal/#1/label/.value required,
+ /rebuttal/#1/break/.is if=rebuttal@refbreak,
+ /rebuttal/#1/ref/.initial=,
+ /rebuttal/#1/ref/.value required,
+ /rebuttal/#1/ref/create/.code={
+ \ifrebuttal@nohyperlinks
+ \ref*{##1}%
+ \else
+ \ref{##1}%
+ \fi
+ },
+ /rebuttal/#1/ref/all/.code={%
+ \pgfkeysgetvalue{/rebuttal/#1/ref}\rebuttal@currefs
+ \edef\rebuttal@tmp{\rebuttal@currefs}%
+ \foreach
+ [
+ %expand list,
+ count=\ri from 0,
+ ]
+ \r in \rebuttal@tmp {%
+ \ifnum\ri > 0\relax
+ ,\,%
+ \fi
+ \pgfkeys{/rebuttal/#1/ref/create=\r}%
+ }%
+ },
+ /rebuttal/#1/color/.code={\colorlet{rebuttal@#1}{##1}},
+ /rebuttal/#1/color=#2,
+ /rebuttal/#1/font/.value required,
+ /rebuttal/#1/font/.code={
+ \expandafter\def\csname rebuttal@#1@font\endcsname{##1}%
+ },
+ /rebuttal/#1/font=\normalfont\mdseries,
+ }
+}
+
+\rebuttal@define@keys{addition}{RedViolet}
+\rebuttal@define@keys{deletion}{Firebrick3}
+\rebuttal@define@keys{change}{DodgerBlue3}
+
+\newlength\rebuttal@textwidth
+\newlength\rebuttal@hskip
+
+\newcommand\rebuttal@command[3]{%
+ \newcounter{rebuttal#1}%
+ \AtEndPreamble{%
+ \@ifpackageloaded{cleveref}{%
+ \crefname{rebuttal#1}{#1}{#1s}%
+ }{}%
+ }%
+ % Marked version with full output
+ \expandafter\newcommand\csname #1\endcsname[#3][]{%
+ \ifrebuttal@marked
+ \stepcounter{rebuttalchanges}%
+ \refstepcounter{rebuttal#1}%
+ \begingroup
+ \tikzset{notestyleraw/.append style={
+ inner sep=\z@,
+ rounded corners=\z@,
+ }}%
+ \pgfqkeys{/rebuttal/#1}{##1}%
+ \label{\pgfkeysvalueof{/rebuttal/#1/label}}%
+ \colorlet{Changes@Color}{rebuttal@#1}%
+ \begingroup
+ #2%
+ \endgroup
+ \StrLeft{#1}{1}[\rebuttal@id]%
+ \ifx\tikzexternaldisable\@undefined\else
+ \tikzexternaldisable
+ \fi
+ \settowidth\rebuttal@textwidth{\rebuttal@reference{#1}}%
+ \tikzset{notestyleraw/.append style={text width=\rebuttal@textwidth}}%
+ \setlength\rebuttal@hskip{\marginparwidth}%
+ \addtolength\rebuttal@hskip{-\rebuttal@textwidth}%
+ \let\old@xmpar\@xmpar
+ \renewcommand\@xmpar[2][]{%
+ \old@xmpar[\hspace*{\rebuttal@hskip}####1]{####2}%
+ }%
+ \todo
+ [
+ backgroundcolor=none,
+ bordercolor=none,
+ linecolor=rebuttal@#1,
+ %size=\tiny,
+ ]{%
+ \rebuttal@reference{#1}%
+ %\pgfkeys{/rebuttal/reference=#1}
+ }%
+ \endgroup
+ \else
+ #2%
+ \fi
+ }%
+}
+
+\NewEnviron{additionenv}[1][]{%
+ \addition[#1]{\BODY}%
+}%
+
+\NewEnviron{changeenv}[2][]{%
+ \change[#1]{#2}{\BODY}%
+}%
+
+\NewEnviron{deletionenv}[1][]{%
+ \deletion[#1]{\BODY}%
+}%
+
+\newcommand\rebuttal@added[1]{%
+ \ifrebuttal@marked
+ \rebuttal@addition@font%
+ \textcolor{rebuttal@addition}{#1}%
+ \else
+ #1%
+ \fi
+}
+
+\newcommand\rebuttal@deleted[1]{%
+ \ifrebuttal@marked
+ \rebuttal@deletion@font%
+ \textcolor{rebuttal@deletion}{\rebuttal@delete{#1}}%
+ \fi
+}
+
+\newcommand\rebuttal@replaced[2]{%
+ \ifrebuttal@marked
+ \rebuttal@change@font%
+ \textcolor{rebuttal@change@from}{\rebuttal@changefrom{#1}}%
+ \allowbreak
+ \textcolor{rebuttal@change}{#2}%
+ \else
+ #2%
+ \fi
+}
+
+\rebuttal@command{addition}{\rebuttal@added{#2}}{2}
+\rebuttal@command{deletion}{\rebuttal@deleted{#2}}{2}
+\rebuttal@command{change}{\rebuttal@replaced{#2}{#3}}{3}
+
+\newcounter{rebuttalcomments}
+\newcounter{rebuttalchanges}
+
+\newcounter{rebuttal}
+\newcounter{rebuttalcomment}
+\newcounter{rebuttalanswer}
+
+\renewcommand\therebuttalcomment{%
+ \arabic{rebuttal}.\arabic{rebuttalcomment}%
+}
+
+\let\theHrebuttalcomment\therebuttalcomment
+
+\renewcommand\therebuttalanswer{%
+ \therebuttalcomment%
+}
+
+\counterwithin*{rebuttalcomment}{rebuttal}%
+\counterwithin*{rebuttalanswer}{rebuttalcomment}%
+
+\newdimen\rebuttal@labelsep
+
+\newcommand\rebuttal@startlinkguard{%
+ \ifx\NoHyper\@undefined\else
+ \ifrebuttal@nohyperlinks
+ \begin{NoHyper}%
+ \fi
+ \fi
+}
+
+\newcommand\rebuttal@endlinkguard{
+ \ifx\endNoHyper\@undefined\else
+ \ifrebuttal@nohyperlinks
+ \end{NoHyper}%
+ \fi
+ \fi
+}
+
+\newenvironment{rebuttal}[1][]{%
+ \rebuttal@startlinkguard
+ \pgfkeysvalueof{/rebuttal/execute on begin}%
+ \begingroup
+ \refstepcounter{rebuttal}%
+ \if@twocolumn
+ \onecolumn
+ \rebuttal@twocolumntrue
+ \else
+ \rebuttal@twocolumnfalse
+ \fi
+ \begingroup
+ \par
+ \addvspace{\bigskipamount}%
+ \ifstrempty{#1}{}{%
+ \ifx\Hy@currentbookmarklevel\@undefined\else
+ \ifnum\Hy@currentbookmarklevel>0
+ \@tempcnta\Hy@currentbookmarklevel
+ \advance\@tempcnta by 1 %
+ \xdef\Hy@currentbookmarklevel{\the\@tempcnta}%
+ \fi
+ \fi
+ \ifx\currentpdfbookmark\@undefined\else
+ \currentpdfbookmark{#1}{rebuttalcomment.\therebuttalcomment}%
+ \fi
+ \noindent\bgroup\rebuttal@titlefont\strut
+ \pgfkeys{/rebuttal/title/format=#1}\egroup%
+ }%
+ \par%
+ \@afterheading
+ \vspace*{\medskipamount}%
+ \begin{trivlist}%
+ \let\rebuttal@oldmakelabel\makelabel%
+ \renewcommand\makelabel[1]{\llap{\rebuttal@commentlabelfont ##1}}%
+ \labelwidth\z@
+ %\setlength{\parsep}{\smallskipamount}%
+ %\setlength{\labelsep}{1pt}%
+ %\setlength{\topsep}{\z@}%
+ %\setlength{\partopsep}{\bigskipamount}
+ \let\comment\@undefined
+ \let\endcomment\@undefined
+ \newenvironment{comment}{%
+ \rebuttal@incbookmarklevel
+ \apptocmd\@item{%
+ \ifx\currentpdfbookmark\@undefined\else
+ \currentpdfbookmark{Comment~\therebuttalcomment}{rebuttalcomment.\therebuttalcomment}%
+ \fi
+ }{%
+ \PackageInfo{rebuttal}{The \string\@item\space command was patched to
+ provide comment bookmarks.}%
+ }{%
+ \PackageWarning{rebuttal}{Failed to patch the \string\@item\space command.
+ Bookmarks may not be displayed correctly.}%
+ }%
+ \let\answer\@undefined
+ \let\endanswer\@undefined
+ \stepcounter{rebuttalcomments}%
+ \refstepcounter{rebuttalcomment}
+ %\settowidth{\labelwidth}{\rebuttal@commentlabelfont #1}
+ %\addtolength{\labelwidth}{1em}
+ \item
+ [%
+ \therebuttalcomment%
+ ]%
+ \begingroup
+ \rebuttal@commentfont
+ \let\makelabel\rebuttal@oldmakelabel
+ }{%
+ \endgroup
+ \rebuttal@decbookmarklevel
+ }
+ \newenvironment{answer}{%
+ \par\medskip
+ \@afterheading
+ \rebuttal@incbookmarklevel
+ \begin{trivlist}
+ \ifx\belowpdfbookmark\@undefined\else
+ \belowpdfbookmark{Anwser to~\therebuttalcomment}{rebuttalanswer.\therebuttalanswer}%
+ \fi
+ \normalfont\rebuttal@answerfont%
+ \rebuttal@labelsep\labelsep%
+ \newcommand\rebuttal@makelabel[1]{\rebuttal@answerlabelfont ####1\enspace}
+ \renewcommand\makelabel[1]{\rebuttal@makelabel{####1}}%
+ \labelsep\z@
+ \labelwidth\z@
+ \let\makelabel\empty
+ %\settowidth\labelwidth{\rebuttal@makelabel{\rebuttal@answerlabel}}%
+ \item
+ [%
+ \ifx\pdftooltip\@undefined
+ \llap{\rebuttal@answerlabel\enspace}%
+ \else
+ \llap{\pdftooltip{\rebuttal@answerlabel}{Reply}\enspace}%
+ \fi
+ ]%
+ \begingroup
+ \labelsep\rebuttal@labelsep
+ \refstepcounter{rebuttalanswer}%
+ }{%
+ \endgroup
+ \end{trivlist}%
+ \rebuttal@decbookmarklevel
+ }
+}{%
+ \end{trivlist}%
+ \rebuttal@decbookmarklevel
+ \endgroup
+ \par\addvspace{\bigskipamount}%
+ \ifrebuttal@twocolumn
+ \twocolumn
+ \fi
+ \endgroup
+ \pgfkeysvalueof{/rebuttal/execute on end}%
+ \rebuttal@endlinkguard
+}
+
+\AtEndPreamble{%
+ \@ifpackageloaded{cleveref}{%
+ \crefname{rebuttalcomment}{comment}{comments}
+ \crefname{rebuttalanswer}{answer}{answers}
+ \Crefname{rebuttalcomment}{Comment}{Comments}
+ \Crefname{rebuttalanswer}{Answer}{Answers}
+ }{}
+}
+
+\newcommand\rebuttaltotalcomments{%
+ \textbf{??}%
+ \@latex@warning{Reference \string\rebuttaltotalcomments\space on page \thepage\space undefined}%
+}
+
+\newcommand\rebuttaltotalchanges{%
+ \textbf{??}%
+ \@latex@warning{Reference \string\rebuttaltotalchanges\space on page \thepage\space undefined}%
+}
+
+\AtEndDocument{%
+ \immediate\write\@auxout{%
+ \gdef\string\rebuttaltotalcomments{\arabic{rebuttalcomments}}%
+ \gdef\string\rebuttaltotalchanges{\arabic{rebuttalchanges}}%
+ }
+}
+\newcommand\rebuttalset[1]{%
+ \pgfqkeys{/rebuttal}{#1}%
+}
+
+
+\endinput
+%%
+%% End of file `rebuttal.sty'.
diff --git a/Master/texmf-dist/tex/latex/regstats/regstats.sty b/Master/texmf-dist/tex/latex/regstats/regstats.sty
index 6167f44b72e..4b3d36614c4 100644
--- a/Master/texmf-dist/tex/latex/regstats/regstats.sty
+++ b/Master/texmf-dist/tex/latex/regstats/regstats.sty
@@ -9,10 +9,10 @@
%% This is a generated file.
%%
%% Project: regstats
-%% Version: 2023-04-04 v1.1a
+%% Version: 2025-01-28 v1.1b
%% Info: Counting used registers
%%
-%% Copyright (C) 2011 - 2023 by
+%% Copyright (C) 2011 - 2025 by
%% H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de>
%%
%% This work may be distributed and/or modified under the
@@ -42,7 +42,7 @@
%% Hans-Klaus Muench + 2014-08-24
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{regstats}[2023/04/04 v1.1a Counting used registers (HMM)]
+\ProvidesPackage{regstats}[2025/01/28 v1.1b Counting used registers (HMM)]
%% Allows to count the number of used registers
%% (counter, dimen, skip, muskip, box, token, input, output,
@@ -358,6 +358,7 @@
\regst@ts@timer%
}%
}
+
\endinput
%%
%% End of file `regstats.sty'.
diff --git a/Master/texmf-dist/tex/latex/reledmac/reledmac.sty b/Master/texmf-dist/tex/latex/reledmac/reledmac.sty
index bb7171dfa6d..db3e2b57ca8 100644
--- a/Master/texmf-dist/tex/latex/reledmac/reledmac.sty
+++ b/Master/texmf-dist/tex/latex/reledmac/reledmac.sty
@@ -37,7 +37,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{reledmac}[2024/05/11 v2.40.1 typesetting critical editions]%
+\ProvidesPackage{reledmac}[2025/01/07 v2.40.2 typesetting critical editions]%
\RequirePackage{xargs}%
\RequirePackage{xparse}[2017/03/07]%
\RequirePackage{etoolbox}%
@@ -577,6 +577,7 @@
\ifl@dpairing%
\unless\ifl@dpaging%
\global\c@pstartL=\c@pstart%
+ \global\c@pstartR=\c@pstart%
\fi%
\fi%
\fi%
diff --git a/Master/texmf-dist/tex/latex/reptheorem/reptheorem.sty b/Master/texmf-dist/tex/latex/reptheorem/reptheorem.sty
index 8faae5eb735..5a898e05410 100644
--- a/Master/texmf-dist/tex/latex/reptheorem/reptheorem.sty
+++ b/Master/texmf-dist/tex/latex/reptheorem/reptheorem.sty
@@ -9,7 +9,7 @@
%% Copyright (c) 2024- Jesse Straat
%%
%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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
@@ -18,14 +18,14 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Jesse Sraat.
+%% The Current Maintainer of this work is Jesse Straat.
%%
%% This work consists of the main file reptheorem.dtx
%% and the derived files
%% reptheorem.sty, reptheorem.pdf, reptheorem.ins
%%
-\ProvidesPackage{reptheorem}[2024-08-12 v1.1 Reptheorem package]
+\ProvidesPackage{reptheorem}[2024-10-07 v1.3 Reptheorem package]
\def\reptheorem@theoremfile{\relax}
\NewDocumentCommand{\theoremfile}{ O{\jobname.thm} }{
\def\reptheorem@theoremfile{#1}
@@ -49,25 +49,29 @@ File #1 not found. I will not import any theorems.%
\begin{#1}\label{#2}
}
#4
-\end{#1}
-\expandafter\gdef\csname thmtype@#2\endcsname{#1}
+\expandafter\gdef\csname thmtype@#2\endcsname{#1}%
\expandafter\long\expandafter\gdef\csname thm@#2\endcsname{#4}%
+\IfValueT{#3}{% Only save theorem name if it exists
\expandafter\gdef\csname thmdesc@#2\endcsname{#3}%
-\long\gdef\@thmoutput{%
+}
+\expandafter\long\expandafter\gdef\csname thmoutput@#2\endcsname{%
\string\expandafter\string\gdef\noexpand%
\csname thmtype@#2\string\endcsname{#1}%
^^J%
\string\expandafter\string\long\string\expandafter%
\string\gdef\noexpand\csname thm@#2\string\endcsname{#4}%
+\IfValueT{#3}{
^^J%
\string\expandafter\string\gdef\noexpand%
\csname thmdesc@#2\string\endcsname{#3}%
}
-\write\@auxout{\@thmoutput}
+}
+\write\@auxout{\csname thmoutput@#2\endcsname}
\if\reptheorem@theoremfile\relax
\else
-\write\@thmlist{\@thmoutput}
+\write\@thmlist{\csname thmoutput@#2\endcsname}
\fi
+\end{#1}
}{}
\newcounter{old@counter}
\NewDocumentCommand{\repthm}{ m +o }{
@@ -78,20 +82,20 @@ File #1 not found. I will not import any theorems.%
\def\@@thmtype{theorem}%
\fi%
\setcounter{old@counter}{\value{\@@thmtype}}
- \def\thetheorem{\ref{#1}}
+\setcounter{\@@thmtype}{-900}
+\expandafter\def\csname the\@@thmtype\endcsname{\ref{#1}}
\let\@@theoremnotdefined\relax
\ifcsname thm@#1\endcsname% Check if theorem is even defined
-\expandafter\edef\expandafter\@@thmdesc{\csname thmdesc@#1\endcsname}%
\expandafter\let\expandafter\@@thm\csname thm@#1\endcsname
-\IfValueTF{\@@thmdesc}{% Check if theorem has name
-\begin{\@@thmtype}[\@@thmdesc]
+\ifcsname thmdesc@#1\endcsname % Check if theorem has name
+\begin{\@@thmtype}[\csname thmdesc@#1\endcsname]
\@@thm
\end{\@@thmtype}
-}{% No optionals
+\else % No optionals
\begin{\@@thmtype}
\@@thm
\end{\@@thmtype}
-}
+\fi
\else
\IfValueTF{#2}{
\begin{\@@thmtype}
@@ -111,7 +115,6 @@ using the optional parameter%
\setcounter{\@@thmtype}{\value{old@counter}}
\endgroup
}
-
\endinput
%%
%% End of file `reptheorem.sty'.
diff --git a/Master/texmf-dist/tex/latex/romanbar/romanbar.sty b/Master/texmf-dist/tex/latex/romanbar/romanbar.sty
index 95aeddaafd5..2715fe800c1 100644
--- a/Master/texmf-dist/tex/latex/romanbar/romanbar.sty
+++ b/Master/texmf-dist/tex/latex/romanbar/romanbar.sty
@@ -9,25 +9,20 @@
%% This is a generated file.
%%
%% Project: romanbar
-%% Version: 2012/01/01 v1.0f
+%% Version: 2025-01-28 v1.0g
%%
-%% Copyright (C) 2011 by
-%% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de>
-%%
-%% The usual disclaimer applies:
-%% If it doesn't work right that's your problem.
-%% (Nevertheless, send an e-mail to the maintainer
-%% when you find an error in this package.)
+%% Copyright (C) 2011 - 2025 by
+%% H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.3c of this license or (at your option) any later
%% version. This version of this license is in
-%% http://www.latex-project.org/lppl/lppl-1-3c.txt
+%% https://www.latex-project.org/lppl/lppl-1-3c.txt
%% and the latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
+%% https://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of
-%% LaTeX version 2005/12/01 or later.
+%% LaTeX version 2005-12-01 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
@@ -39,23 +34,29 @@
%% romanbar.ins, romanbar.drv,
%% romanbar-example.tex, romanbar-example.pdf.
%%
-\NeedsTeXFormat{LaTeX2e}[2011/06/27]
-\ProvidesPackage{romanbar}[2012/01/01 v1.0f
- Roman numbers with bars (HMM)]
-
+%% In memoriam
+%% Claudia Simone Barth + 1996-01-30
+%% Tommy Muench + 2014-01-02
+%% Hans-Klaus Muench + 2014-08-24
+%%
+\NeedsTeXFormat{LaTeX2e}[2024-11-01]
+\ProvidesPackage{romanbar}[2025-01-28 v1.0g Roman numbers with bars (HMM)]
%% Allows to write Roman numbers (or any other text) with bars
%% and to convert Arabic numbers into Roman ones.
-%% romanbar may work with earlier versions of LaTeX,
-%% but this was not tested. Please consider updating
-%% your LaTeX to the most recent version
-%% (if it is not already the most recent version).
+
+\RequirePackage{trimclip}[2020/08/19]% v1.2
+
+\newcounter{romanbarcount}
+\newdimen\romanbardimH
+\newdimen\romanbardimD
+\newdimen\romanbardimW
\def\gobbleminus#1{\ifx-#1\else#1\fi}
-%% from http://www.tex.ac.uk/cgi-bin/texfaq2html?label=isitanum
+%% from https://texfaq.org/FAQ-isitanum
\newcommand{\ifnumeric}[3]{%
-%% similar to http://tex.stackexchange.com/a/17119
-\sbox\z@{\@tempcnta=0\gobbleminus#1\relax}%
+%% similar to https://tex.stackexchange.com/a/17119
+\sbox\z@{\c@romanbarcount=0\gobbleminus#1\relax}%
\ifdim\wd0>\z@\relax#3% is not numeric
\else#2% is numeric
\fi%
@@ -63,85 +64,79 @@
\def\r@iseL#1{\ifx @#1% then terminate
\else%
-\if L#1\raisebox{0.05ex}{L}\else #1\fi%
+\if L#1\raisebox{0.05ex}{\begin{clipbox}{0pt 0pt 0pt 0.05ex}L\end{clipbox}}%
+\else #1\fi%
\expandafter\r@iseL%
\fi%
}
\DeclareRobustCommand{\Romanbar}[1]{%
\ifnumeric{#1}{% is numeric
-\@tempcnta=#1\relax%
-%% similar to \XRoman from the http://ctan.org/pkg/pageslts package
-\ifnum\@tempcnta<1%
- \ifnum #1>0%
- \relax \Roman@bar{\Roman{#1}}%
+\setcounter{romanbarcount}{#1}%
+%% similar to \XRoman from the https://ctan.org/pkg/pageslts package
+\ifnum\theromanbarcount<1%
+ \ifnum #1>0\relax%
+ \Roman@bar{\Roman{#1}}%
\else%
- \ifnum #1<0%
- -\Roman@bar{\expandafter\@slowromancap\romannumeral\number-#1@%
- }%
+ \ifnum #1<0\relax%
+ -\Roman@bar{\expandafter\@slowromancap\romannumeral\number-#1@}%
\else%
\Roman@bar{0}%
\fi%
\fi%
-\else\Roman@bar{\@Roman\@tempcnta}%
+\else\Roman@bar{\@Roman\c@romanbarcount}%
\fi%
}{% is not numeric
\Roman@bar{#1}%
}%
}
-\DeclareRobustCommand{\Roman@bar}[1]{% #1 is in Roman, i.e. MMXII
-%% (or any other text, "Caesar" would work, too).
+\DeclareRobustCommand{\Roman@bar}[1]{% #1 is in Roman, i.e. MMXXIII
+%% (or any other text, "Caesar" would work, too);
%% similar to code of by Prof. Enrico Gregorio (egreg) at
-%% http://tex.stackexchange.com/questions/24065/roman-numerals-formatting/24084#24084
+%% https://tex.stackexchange.com/a/24084
\@bsphack%
\edef\romanbartmp{#1}%
%% height:
\sbox0{\textsf{\romanbartmp}}%
%% top line:
%% + top of top line:
-\@tempdima=\ht0%
-\advance\@tempdima+0.05ex%0.03
-\dimen1=\@tempdima%
+\setlength{\romanbardimH}{\dimexpr\ht0+0.05ex\relax}%
%% + bottom of top line:
-\@tempdima=-\ht0%
-\advance\@tempdima+0.05ex%0.07
-\dimen2=\@tempdima%
+\setlength{\romanbardimD}{\dimexpr-\ht0+0.05ex\relax}%
%% width:
\sbox0{\textsf{\expandafter\r@iseL\romanbartmp @}}%
-\@tempdima=\wd0%
-\advance\@tempdima+1pt%
-\dimen0=\@tempdima%
+\setlength{\romanbardimW}{\dimexpr\wd0+1pt\relax}%
\@esphack%
-\makebox[\dimen0]{%
-\rlap{\vrule width\dimen0 height\dimen1 depth\dimen2}% top line
-\rlap{\vrule width\dimen0 height 0.06ex depth 0.03ex}% bottom line
+\makebox[\romanbardimW]{%
+\rlap{\vrule width\romanbardimW height\romanbardimH depth\romanbardimD}% top line
+\rlap{\vrule width\romanbardimW height 0.06ex depth 0.03ex}% bottom line
\kern0.5pt\textsf{\expandafter\r@iseL\romanbartmp @}\kern0.5pt}%
}
\DeclareRobustCommand{\romannum}[1]{%
\ifnumeric{#1}{% is numeric
-\@tempcnta=#1\relax%
-%% similar to \xroman from the http://ctan.org/pkg/pageslts package
-\ifnum\@tempcnta<1%
- \ifnum #1>0%
- \relax \roman{#1}%
+\setcounter{romanbarcount}{#1}%
+%% similar to \xroman from the https://ctan.org/pkg/pageslts package
+\ifnum\c@romanbarcount<1\relax%
+ \ifnum #1>0\relax%
+ \roman{#1}%
\else%
- \ifnum #1<0%
- -\romannumeral\number-#1@%
+ \ifnum #1<0\relax%
+ -\romannumeral\number-#1@%
\else%
0%
\fi%
\fi%
-\else\@roman\@tempcnta%
+\else\@roman\c@romanbarcount%
\fi%
}{% is not numeric
\PackageError{romanbar}{%
Argument of \string\romannum\space is not a number}{%
-The command \string\romannum\space converts an Arabic number into a%
- lower-case Roman one,\MessageBreak%
-but the used argument of \string\romannum\space is not an Arabic number%
- but\MessageBreak%
+The command \string\romannum\space converts an Arabic number into a %
+lower-case Roman one,\MessageBreak%
+but the used argument of \string\romannum\space is not an Arabic number %
+but\MessageBreak%
`#1`,\MessageBreak%
which will now be printed unchanged.}%
#1%
@@ -150,27 +145,27 @@ which will now be printed unchanged.}%
\DeclareRobustCommand{\Romannum}[1]{%
\ifnumeric{#1}{% is numeric
-\@tempcnta=#1\relax%
+\setcounter{romanbarcount}{#1}%
%% similar to \XRoman from the http://ctan.org/pkg/pageslts package
-\ifnum\@tempcnta<1%
- \ifnum #1>0%
- \relax \Roman{#1}%
+\ifnum\c@romanbarcount<1\relax%
+ \ifnum #1>0\relax%
+ \Roman{#1}%
\else%
- \ifnum #1<0%
- -\expandafter\@slowromancap\romannumeral\number-#1@%
+ \ifnum #1<0\relax%
+ -\expandafter\@slowromancap\romannumeral\number-#1@%
\else%
0%
\fi%
\fi%
-\else\@Roman\@tempcnta%
+\else\@Roman\c@romanbarcount%
\fi%
}{% is not numeric
\PackageError{romanbar}{%
Argument of \string\Romannum\space is not a number}{%
-The command \string\Romannum\space converts an Arabic number into an%
- upper-case Roman one,\MessageBreak%
-but the used argument of \string\Romannum\space is not an Arabic number%
- but\MessageBreak%
+The command \string\Romannum\space converts an Arabic number into an %
+upper-case Roman one,\MessageBreak%
+but the used argument of \string\Romannum\space is not an Arabic number %
+but\MessageBreak%
`#1`.}%
#1%
}%
diff --git a/Master/texmf-dist/tex/latex/romande/romande.sty b/Master/texmf-dist/tex/latex/romande/romande.sty
deleted file mode 100644
index f4c8068795b..00000000000
--- a/Master/texmf-dist/tex/latex/romande/romande.sty
+++ /dev/null
@@ -1,21 +0,0 @@
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{romande}[2010/06/27 v2.1 romande]
-\RequirePackage{xkeyval}
-\RequirePackage[T1]{fontenc}
-\RequirePackage{textcomp}
-\RequirePackage{nfssext-cfr}
-%:boolkey for alternative encoding as default
-\define@boolkey{romande.sty}[romande@]{alt}[true]{%
- \relax}
-%:defaults to ensure everything is defined to something
-\ExecuteOptionsX{alt=false}
-%:options override defaults
-\ProcessOptionsX
-%:make RomandeADF default roman font, implementing option for alternative encoding as applicable
-\ifromande@alt
- \renewcommand{\rmdefault}{yrda}%
-\else
- \renewcommand{\rmdefault}{yrd}%
-\fi
-\endinput
-%% end romande.sty
diff --git a/Master/texmf-dist/tex/latex/romandeadf/romande.sty b/Master/texmf-dist/tex/latex/romandeadf/romande.sty
new file mode 100644
index 00000000000..3ffee072c45
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/romandeadf/romande.sty
@@ -0,0 +1,64 @@
+%%
+%% This is file `romande.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% romandeadf.dtx (with options: `sty')
+%% Copyright (C) 2010-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% romandeadf. You may however distribute the package romandeadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{svn-prov}
+\ProvidesPackageSVN[romande.sty]{$Id: romandeadf.dtx 10366 2024-09-18 14:25:21Z cfrees $}[v2.1 \revinfo]
+\DefineFileInfoSVN[romande]
+\RequirePackage[T1]{fontenc}
+\RequirePackage{nfssext-cfr}[2024/01/01]
+\IfFormatAtLeastTF {2020-02-02}{%
+ \DeclareEncodingSubset{TS1}{yrd}{1}%
+ \DeclareEncodingSubset{TS1}{yrda}{1}%
+ \DeclareEncodingSubset{TS1}{yrdw}{1}%
+ \DeclareEncodingSubset{TS1}{yrdaw}{1}%
+}{%
+ \RequirePackage{textcomp}}
+\UndeclareTextCommand{\textperthousand}{T1}
+\ExplSyntaxOn
+\keys_define:nn { romande }
+{
+ alt .bool_set:N = \g__romande_alt_bool,
+ alt .default:n = true,
+ alt .initial:n = false,
+ scale .tl_set:N = \yrd@scale,
+ scale .initial:V = \@empty,
+}
+\ProcessKeyOptions[romande]
+\tl_new:N \g__romande_rm_tl
+\tl_gset:Nn \g__romande_rm_tl {yrd}
+\bool_if:NT \g__romande_alt_bool
+{
+ \tl_gput_right:Nn \g__romande_rm_tl {a}
+}
+\renewcommand{\rmdefault}{\g__romande_rm_tl}
+\ExplSyntaxOff
+%% end romande.sty
+\endinput
+%%
+%% End of file `romande.sty'.
diff --git a/Master/texmf-dist/tex/latex/romande/t1yrd.fd b/Master/texmf-dist/tex/latex/romandeadf/t1yrd.fd
index 2c135c8cad3..23e3edf286d 100644
--- a/Master/texmf-dist/tex/latex/romande/t1yrd.fd
+++ b/Master/texmf-dist/tex/latex/romandeadf/t1yrd.fd
@@ -5,43 +5,58 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1yrd.fd}
- [2010/07/10 Fontinst v1.933 font definitions for T1/yrd.]
+ [2024/08/12 Fontinst v1.933 font definitions for T1/yrd.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yrd@scale\endcsname\relax
+ \let\yrd@@scale\@empty
+\else
+ \edef\yrd@@scale{s*[\csname yrd@scale\endcsname]}%
+\fi
\DeclareFontFamily{T1}{yrd}{}
\DeclareFontShape{T1}{yrd}{m}{n}{
- <-> yrdr8t
+ <-> \yrd@@scale yrdr8t
}{}
\DeclareFontShape{T1}{yrd}{m}{sc}{
- <-> yrdrc8t
+ <-> \yrd@@scale yrdrc8t
}{}
\DeclareFontShape{T1}{yrd}{m}{it}{
- <-> yrdri8t
+ <-> \yrd@@scale yrdri8t
}{}
\DeclareFontShape{T1}{yrd}{m}{sl}{
- <-> yrdri8t
+ <-> \yrd@@scale yrdri8t
}{}
\DeclareFontShape{T1}{yrd}{db}{n}{
- <-> yrdd8t
+ <-> \yrd@@scale yrdd8t
}{}
\DeclareFontShape{T1}{yrd}{db}{sc}{
- <-> yrddc8t
+ <-> \yrd@@scale yrddc8t
}{}
\DeclareFontShape{T1}{yrd}{db}{it}{
- <-> yrddi8t
+ <-> \yrd@@scale yrddi8t
}{}
\DeclareFontShape{T1}{yrd}{db}{sl}{
- <-> yrddi8t
+ <-> \yrd@@scale yrddi8t
}{}
-\DeclareFontShape{T1}{yrd}{m}{si}{<->ssub * yrd/m/sc}{}
+\DeclareFontShape{T1}{yrd}{m}{scit}{<->ssub * yrd/m/sc}{}
+\DeclareFontShape{T1}{yrd}{db}{scit}{<->ssub * yrd/m/scit}{}
+\DeclareFontShape{T1}{yrd}{b}{scit}{<->ssub * yrd/db/scit}{}
+\DeclareFontShape{T1}{yrd}{bx}{scit}{<->ssub * yrd/b/scit}{}
+\DeclareFontShape{T1}{yrd}{m}{scsl}{<->ssub * yrd/m/scit}{}
+\DeclareFontShape{T1}{yrd}{db}{scsl}{<->ssub * yrd/m/scsl}{}
+\DeclareFontShape{T1}{yrd}{b}{scsl}{<->ssub * yrd/db/scsl}{}
+\DeclareFontShape{T1}{yrd}{bx}{scsl}{<->ssub * yrd/b/scsl}{}
+\DeclareFontShape{T1}{yrd}{m}{si}{<->ssub * yrd/m/scsl}{}
\DeclareFontShape{T1}{yrd}{db}{si}{<->ssub * yrd/m/si}{}
\DeclareFontShape{T1}{yrd}{b}{si}{<->ssub * yrd/db/si}{}
\DeclareFontShape{T1}{yrd}{bx}{si}{<->ssub * yrd/b/si}{}
diff --git a/Master/texmf-dist/tex/latex/romande/t1yrda.fd b/Master/texmf-dist/tex/latex/romandeadf/t1yrda.fd
index fcaeb4673c3..c333ce1ce09 100644
--- a/Master/texmf-dist/tex/latex/romande/t1yrda.fd
+++ b/Master/texmf-dist/tex/latex/romandeadf/t1yrda.fd
@@ -5,35 +5,50 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1yrda.fd}
- [2010/07/10 Fontinst v1.933 font definitions for T1/yrda.]
+ [2024/08/12 Fontinst v1.933 font definitions for T1/yrda.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yrd@scale\endcsname\relax
+ \let\yrd@@scale\@empty
+\else
+ \edef\yrd@@scale{s*[\csname yrd@scale\endcsname]}%
+\fi
\DeclareFontFamily{T1}{yrda}{}
\DeclareFontShape{T1}{yrda}{m}{n}{
- <-> yrdra8t
+ <-> \yrd@@scale yrdra8t
}{}
\DeclareFontShape{T1}{yrda}{m}{sc}{
- <-> yrdrc8t
+ <-> \yrd@@scale yrdrc8t
}{}
\DeclareFontShape{T1}{yrda}{m}{it}{
- <-> yrdrai8t
+ <-> \yrd@@scale yrdrai8t
}{}
\DeclareFontShape{T1}{yrda}{db}{n}{
- <-> yrdda8t
+ <-> \yrd@@scale yrdda8t
}{}
\DeclareFontShape{T1}{yrda}{db}{sc}{
- <-> yrddc8t
+ <-> \yrd@@scale yrddc8t
}{}
\DeclareFontShape{T1}{yrda}{db}{it}{
- <-> yrddai8t
+ <-> \yrd@@scale yrddai8t
}{}
-\DeclareFontShape{T1}{yrda}{m}{si}{<->ssub * yrda/m/sc}{}
+\DeclareFontShape{T1}{yrda}{m}{scit}{<->ssub * yrda/m/sc}{}
+\DeclareFontShape{T1}{yrda}{db}{scit}{<->ssub * yrda/m/scit}{}
+\DeclareFontShape{T1}{yrda}{b}{scit}{<->ssub * yrda/db/scit}{}
+\DeclareFontShape{T1}{yrda}{bx}{scit}{<->ssub * yrda/b/scit}{}
+\DeclareFontShape{T1}{yrda}{m}{scsl}{<->ssub * yrda/m/scit}{}
+\DeclareFontShape{T1}{yrda}{db}{scsl}{<->ssub * yrda/m/scsl}{}
+\DeclareFontShape{T1}{yrda}{b}{scsl}{<->ssub * yrda/db/scsl}{}
+\DeclareFontShape{T1}{yrda}{bx}{scsl}{<->ssub * yrda/b/scsl}{}
+\DeclareFontShape{T1}{yrda}{m}{si}{<->ssub * yrda/m/scsl}{}
\DeclareFontShape{T1}{yrda}{db}{si}{<->ssub * yrda/m/si}{}
\DeclareFontShape{T1}{yrda}{b}{si}{<->ssub * yrda/db/si}{}
\DeclareFontShape{T1}{yrda}{bx}{si}{<->ssub * yrda/b/si}{}
diff --git a/Master/texmf-dist/tex/latex/romande/t1yrdaw.fd b/Master/texmf-dist/tex/latex/romandeadf/t1yrdaw.fd
index d3cdb3d3ec6..48757d9f46d 100644
--- a/Master/texmf-dist/tex/latex/romande/t1yrdaw.fd
+++ b/Master/texmf-dist/tex/latex/romandeadf/t1yrdaw.fd
@@ -5,20 +5,27 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1yrdaw.fd}
- [2010/07/10 Fontinst v1.933 font definitions for T1/yrdaw.]
+ [2024/08/12 Fontinst v1.933 font definitions for T1/yrdaw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yrd@scale\endcsname\relax
+ \let\yrd@@scale\@empty
+\else
+ \edef\yrd@@scale{s*[\csname yrd@scale\endcsname]}%
+\fi
\DeclareFontFamily{T1}{yrdaw}{}
\DeclareFontShape{T1}{yrdaw}{m}{it}{
- <-> yrdraiw8t
+ <-> \yrd@@scale yrdraiw8t
}{}
\DeclareFontShape{T1}{yrdaw}{m}{n}{
- <-> yrdraiw8t
+ <-> \yrd@@scale yrdraiw8t
}{}
\DeclareFontShape{T1}{yrdaw}{m}{sc}{
- <-> yrdraiw8t
+ <-> \yrd@@scale yrdraiw8t
}{}
\DeclareFontShape{T1}{yrdaw}{db}{it}{<->ssub * yrdaw/m/it}{}
@@ -34,7 +41,15 @@
\DeclareFontShape{T1}{yrdaw}{db}{sc}{<->ssub * yrdaw/m/sc}{}
\DeclareFontShape{T1}{yrdaw}{b}{sc}{<->ssub * yrdaw/db/sc}{}
\DeclareFontShape{T1}{yrdaw}{bx}{sc}{<->ssub * yrdaw/b/sc}{}
-\DeclareFontShape{T1}{yrdaw}{m}{si}{<->ssub * yrdaw/m/sc}{}
+\DeclareFontShape{T1}{yrdaw}{m}{scit}{<->ssub * yrdaw/m/sc}{}
+\DeclareFontShape{T1}{yrdaw}{db}{scit}{<->ssub * yrdaw/m/scit}{}
+\DeclareFontShape{T1}{yrdaw}{b}{scit}{<->ssub * yrdaw/db/scit}{}
+\DeclareFontShape{T1}{yrdaw}{bx}{scit}{<->ssub * yrdaw/b/scit}{}
+\DeclareFontShape{T1}{yrdaw}{m}{scsl}{<->ssub * yrdaw/m/scit}{}
+\DeclareFontShape{T1}{yrdaw}{db}{scsl}{<->ssub * yrdaw/m/scsl}{}
+\DeclareFontShape{T1}{yrdaw}{b}{scsl}{<->ssub * yrdaw/db/scsl}{}
+\DeclareFontShape{T1}{yrdaw}{bx}{scsl}{<->ssub * yrdaw/b/scsl}{}
+\DeclareFontShape{T1}{yrdaw}{m}{si}{<->ssub * yrdaw/m/scsl}{}
\DeclareFontShape{T1}{yrdaw}{db}{si}{<->ssub * yrdaw/m/si}{}
\DeclareFontShape{T1}{yrdaw}{b}{si}{<->ssub * yrdaw/db/si}{}
\DeclareFontShape{T1}{yrdaw}{bx}{si}{<->ssub * yrdaw/b/si}{}
diff --git a/Master/texmf-dist/tex/latex/romande/t1yrdw.fd b/Master/texmf-dist/tex/latex/romandeadf/t1yrdw.fd
index b3a26bde38e..bdeb1497978 100644
--- a/Master/texmf-dist/tex/latex/romande/t1yrdw.fd
+++ b/Master/texmf-dist/tex/latex/romandeadf/t1yrdw.fd
@@ -5,20 +5,27 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1yrdw.fd}
- [2010/07/10 Fontinst v1.933 font definitions for T1/yrdw.]
+ [2024/08/12 Fontinst v1.933 font definitions for T1/yrdw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yrd@scale\endcsname\relax
+ \let\yrd@@scale\@empty
+\else
+ \edef\yrd@@scale{s*[\csname yrd@scale\endcsname]}%
+\fi
\DeclareFontFamily{T1}{yrdw}{}
\DeclareFontShape{T1}{yrdw}{m}{it}{
- <-> yrdriw8t
+ <-> \yrd@@scale yrdriw8t
}{}
\DeclareFontShape{T1}{yrdw}{m}{n}{
- <-> yrdriw8t
+ <-> \yrd@@scale yrdriw8t
}{}
\DeclareFontShape{T1}{yrdw}{m}{sc}{
- <-> yrdriw8t
+ <-> \yrd@@scale yrdriw8t
}{}
\DeclareFontShape{T1}{yrdw}{db}{it}{<->ssub * yrdw/m/it}{}
@@ -34,7 +41,15 @@
\DeclareFontShape{T1}{yrdw}{db}{sc}{<->ssub * yrdw/m/sc}{}
\DeclareFontShape{T1}{yrdw}{b}{sc}{<->ssub * yrdw/db/sc}{}
\DeclareFontShape{T1}{yrdw}{bx}{sc}{<->ssub * yrdw/b/sc}{}
-\DeclareFontShape{T1}{yrdw}{m}{si}{<->ssub * yrdw/m/sc}{}
+\DeclareFontShape{T1}{yrdw}{m}{scit}{<->ssub * yrdw/m/sc}{}
+\DeclareFontShape{T1}{yrdw}{db}{scit}{<->ssub * yrdw/m/scit}{}
+\DeclareFontShape{T1}{yrdw}{b}{scit}{<->ssub * yrdw/db/scit}{}
+\DeclareFontShape{T1}{yrdw}{bx}{scit}{<->ssub * yrdw/b/scit}{}
+\DeclareFontShape{T1}{yrdw}{m}{scsl}{<->ssub * yrdw/m/scit}{}
+\DeclareFontShape{T1}{yrdw}{db}{scsl}{<->ssub * yrdw/m/scsl}{}
+\DeclareFontShape{T1}{yrdw}{b}{scsl}{<->ssub * yrdw/db/scsl}{}
+\DeclareFontShape{T1}{yrdw}{bx}{scsl}{<->ssub * yrdw/b/scsl}{}
+\DeclareFontShape{T1}{yrdw}{m}{si}{<->ssub * yrdw/m/scsl}{}
\DeclareFontShape{T1}{yrdw}{db}{si}{<->ssub * yrdw/m/si}{}
\DeclareFontShape{T1}{yrdw}{b}{si}{<->ssub * yrdw/db/si}{}
\DeclareFontShape{T1}{yrdw}{bx}{si}{<->ssub * yrdw/b/si}{}
diff --git a/Master/texmf-dist/tex/latex/romande/ts1yrd.fd b/Master/texmf-dist/tex/latex/romandeadf/ts1yrd.fd
index 4a5f6cf09db..f98ca7f1e05 100644
--- a/Master/texmf-dist/tex/latex/romande/ts1yrd.fd
+++ b/Master/texmf-dist/tex/latex/romandeadf/ts1yrd.fd
@@ -5,35 +5,50 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1yrd.fd}
- [2010/07/10 Fontinst v1.933 font definitions for TS1/yrd.]
+ [2024/08/12 Fontinst v1.933 font definitions for TS1/yrd.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yrd@scale\endcsname\relax
+ \let\yrd@@scale\@empty
+\else
+ \edef\yrd@@scale{s*[\csname yrd@scale\endcsname]}%
+\fi
\DeclareFontFamily{TS1}{yrd}{}
\DeclareFontShape{TS1}{yrd}{m}{n}{
- <-> yrdr8c
+ <-> \yrd@@scale yrdr8c
}{}
\DeclareFontShape{TS1}{yrd}{m}{sc}{
- <-> yrdr8c
+ <-> \yrd@@scale yrdr8c
}{}
\DeclareFontShape{TS1}{yrd}{m}{it}{
- <-> yrdri8c
+ <-> \yrd@@scale yrdri8c
}{}
\DeclareFontShape{TS1}{yrd}{db}{n}{
- <-> yrdd8c
+ <-> \yrd@@scale yrdd8c
}{}
\DeclareFontShape{TS1}{yrd}{db}{sc}{
- <-> yrdd8c
+ <-> \yrd@@scale yrdd8c
}{}
\DeclareFontShape{TS1}{yrd}{db}{it}{
- <-> yrddi8c
+ <-> \yrd@@scale yrddi8c
}{}
-\DeclareFontShape{TS1}{yrd}{m}{si}{<->ssub * yrd/m/sc}{}
+\DeclareFontShape{TS1}{yrd}{m}{scit}{<->ssub * yrd/m/sc}{}
+\DeclareFontShape{TS1}{yrd}{db}{scit}{<->ssub * yrd/m/scit}{}
+\DeclareFontShape{TS1}{yrd}{b}{scit}{<->ssub * yrd/db/scit}{}
+\DeclareFontShape{TS1}{yrd}{bx}{scit}{<->ssub * yrd/b/scit}{}
+\DeclareFontShape{TS1}{yrd}{m}{scsl}{<->ssub * yrd/m/scit}{}
+\DeclareFontShape{TS1}{yrd}{db}{scsl}{<->ssub * yrd/m/scsl}{}
+\DeclareFontShape{TS1}{yrd}{b}{scsl}{<->ssub * yrd/db/scsl}{}
+\DeclareFontShape{TS1}{yrd}{bx}{scsl}{<->ssub * yrd/b/scsl}{}
+\DeclareFontShape{TS1}{yrd}{m}{si}{<->ssub * yrd/m/scsl}{}
\DeclareFontShape{TS1}{yrd}{db}{si}{<->ssub * yrd/m/si}{}
\DeclareFontShape{TS1}{yrd}{b}{si}{<->ssub * yrd/db/si}{}
\DeclareFontShape{TS1}{yrd}{bx}{si}{<->ssub * yrd/b/si}{}
diff --git a/Master/texmf-dist/tex/latex/romande/ts1yrda.fd b/Master/texmf-dist/tex/latex/romandeadf/ts1yrda.fd
index 1bc227e625f..39ae7bbf20a 100644
--- a/Master/texmf-dist/tex/latex/romande/ts1yrda.fd
+++ b/Master/texmf-dist/tex/latex/romandeadf/ts1yrda.fd
@@ -5,35 +5,50 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1yrda.fd}
- [2010/07/10 Fontinst v1.933 font definitions for TS1/yrda.]
+ [2024/08/12 Fontinst v1.933 font definitions for TS1/yrda.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yrd@scale\endcsname\relax
+ \let\yrd@@scale\@empty
+\else
+ \edef\yrd@@scale{s*[\csname yrd@scale\endcsname]}%
+\fi
\DeclareFontFamily{TS1}{yrda}{}
\DeclareFontShape{TS1}{yrda}{m}{n}{
- <-> yrdr8c
+ <-> \yrd@@scale yrdr8c
}{}
\DeclareFontShape{TS1}{yrda}{m}{sc}{
- <-> yrdr8c
+ <-> \yrd@@scale yrdr8c
}{}
\DeclareFontShape{TS1}{yrda}{m}{it}{
- <-> yrdri8c
+ <-> \yrd@@scale yrdri8c
}{}
\DeclareFontShape{TS1}{yrda}{db}{n}{
- <-> yrdd8c
+ <-> \yrd@@scale yrdd8c
}{}
\DeclareFontShape{TS1}{yrda}{db}{sc}{
- <-> yrdd8c
+ <-> \yrd@@scale yrdd8c
}{}
\DeclareFontShape{TS1}{yrda}{db}{it}{
- <-> yrddi8c
+ <-> \yrd@@scale yrddi8c
}{}
-\DeclareFontShape{TS1}{yrda}{m}{si}{<->ssub * yrda/m/sc}{}
+\DeclareFontShape{TS1}{yrda}{m}{scit}{<->ssub * yrda/m/sc}{}
+\DeclareFontShape{TS1}{yrda}{db}{scit}{<->ssub * yrda/m/scit}{}
+\DeclareFontShape{TS1}{yrda}{b}{scit}{<->ssub * yrda/db/scit}{}
+\DeclareFontShape{TS1}{yrda}{bx}{scit}{<->ssub * yrda/b/scit}{}
+\DeclareFontShape{TS1}{yrda}{m}{scsl}{<->ssub * yrda/m/scit}{}
+\DeclareFontShape{TS1}{yrda}{db}{scsl}{<->ssub * yrda/m/scsl}{}
+\DeclareFontShape{TS1}{yrda}{b}{scsl}{<->ssub * yrda/db/scsl}{}
+\DeclareFontShape{TS1}{yrda}{bx}{scsl}{<->ssub * yrda/b/scsl}{}
+\DeclareFontShape{TS1}{yrda}{m}{si}{<->ssub * yrda/m/scsl}{}
\DeclareFontShape{TS1}{yrda}{db}{si}{<->ssub * yrda/m/si}{}
\DeclareFontShape{TS1}{yrda}{b}{si}{<->ssub * yrda/db/si}{}
\DeclareFontShape{TS1}{yrda}{bx}{si}{<->ssub * yrda/b/si}{}
diff --git a/Master/texmf-dist/tex/latex/romande/ts1yrdaw.fd b/Master/texmf-dist/tex/latex/romandeadf/ts1yrdaw.fd
index 777c6c38a22..9c6851807bf 100644
--- a/Master/texmf-dist/tex/latex/romande/ts1yrdaw.fd
+++ b/Master/texmf-dist/tex/latex/romandeadf/ts1yrdaw.fd
@@ -5,20 +5,27 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1yrdaw.fd}
- [2010/07/10 Fontinst v1.933 font definitions for TS1/yrdaw.]
+ [2024/08/12 Fontinst v1.933 font definitions for TS1/yrdaw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yrd@scale\endcsname\relax
+ \let\yrd@@scale\@empty
+\else
+ \edef\yrd@@scale{s*[\csname yrd@scale\endcsname]}%
+\fi
\DeclareFontFamily{TS1}{yrdaw}{}
\DeclareFontShape{TS1}{yrdaw}{m}{it}{
- <-> yrdriw8c
+ <-> \yrd@@scale yrdriw8c
}{}
\DeclareFontShape{TS1}{yrdaw}{m}{n}{
- <-> yrdriw8c
+ <-> \yrd@@scale yrdriw8c
}{}
\DeclareFontShape{TS1}{yrdaw}{m}{sc}{
- <-> yrdriw8c
+ <-> \yrd@@scale yrdriw8c
}{}
\DeclareFontShape{TS1}{yrdaw}{db}{it}{<->ssub * yrdaw/m/it}{}
@@ -34,7 +41,15 @@
\DeclareFontShape{TS1}{yrdaw}{db}{sc}{<->ssub * yrdaw/m/sc}{}
\DeclareFontShape{TS1}{yrdaw}{b}{sc}{<->ssub * yrdaw/db/sc}{}
\DeclareFontShape{TS1}{yrdaw}{bx}{sc}{<->ssub * yrdaw/b/sc}{}
-\DeclareFontShape{TS1}{yrdaw}{m}{si}{<->ssub * yrdaw/m/sc}{}
+\DeclareFontShape{TS1}{yrdaw}{m}{scit}{<->ssub * yrdaw/m/sc}{}
+\DeclareFontShape{TS1}{yrdaw}{db}{scit}{<->ssub * yrdaw/m/scit}{}
+\DeclareFontShape{TS1}{yrdaw}{b}{scit}{<->ssub * yrdaw/db/scit}{}
+\DeclareFontShape{TS1}{yrdaw}{bx}{scit}{<->ssub * yrdaw/b/scit}{}
+\DeclareFontShape{TS1}{yrdaw}{m}{scsl}{<->ssub * yrdaw/m/scit}{}
+\DeclareFontShape{TS1}{yrdaw}{db}{scsl}{<->ssub * yrdaw/m/scsl}{}
+\DeclareFontShape{TS1}{yrdaw}{b}{scsl}{<->ssub * yrdaw/db/scsl}{}
+\DeclareFontShape{TS1}{yrdaw}{bx}{scsl}{<->ssub * yrdaw/b/scsl}{}
+\DeclareFontShape{TS1}{yrdaw}{m}{si}{<->ssub * yrdaw/m/scsl}{}
\DeclareFontShape{TS1}{yrdaw}{db}{si}{<->ssub * yrdaw/m/si}{}
\DeclareFontShape{TS1}{yrdaw}{b}{si}{<->ssub * yrdaw/db/si}{}
\DeclareFontShape{TS1}{yrdaw}{bx}{si}{<->ssub * yrdaw/b/si}{}
diff --git a/Master/texmf-dist/tex/latex/romande/ts1yrdw.fd b/Master/texmf-dist/tex/latex/romandeadf/ts1yrdw.fd
index 77c8aa7b0dd..afd23b69b8c 100644
--- a/Master/texmf-dist/tex/latex/romande/ts1yrdw.fd
+++ b/Master/texmf-dist/tex/latex/romandeadf/ts1yrdw.fd
@@ -5,20 +5,27 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1yrdw.fd}
- [2010/07/10 Fontinst v1.933 font definitions for TS1/yrdw.]
+ [2024/08/12 Fontinst v1.933 font definitions for TS1/yrdw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yrd@scale\endcsname\relax
+ \let\yrd@@scale\@empty
+\else
+ \edef\yrd@@scale{s*[\csname yrd@scale\endcsname]}%
+\fi
\DeclareFontFamily{TS1}{yrdw}{}
\DeclareFontShape{TS1}{yrdw}{m}{it}{
- <-> yrdriw8c
+ <-> \yrd@@scale yrdriw8c
}{}
\DeclareFontShape{TS1}{yrdw}{m}{n}{
- <-> yrdriw8c
+ <-> \yrd@@scale yrdriw8c
}{}
\DeclareFontShape{TS1}{yrdw}{m}{sc}{
- <-> yrdriw8c
+ <-> \yrd@@scale yrdriw8c
}{}
\DeclareFontShape{TS1}{yrdw}{db}{it}{<->ssub * yrdw/m/it}{}
@@ -34,7 +41,15 @@
\DeclareFontShape{TS1}{yrdw}{db}{sc}{<->ssub * yrdw/m/sc}{}
\DeclareFontShape{TS1}{yrdw}{b}{sc}{<->ssub * yrdw/db/sc}{}
\DeclareFontShape{TS1}{yrdw}{bx}{sc}{<->ssub * yrdw/b/sc}{}
-\DeclareFontShape{TS1}{yrdw}{m}{si}{<->ssub * yrdw/m/sc}{}
+\DeclareFontShape{TS1}{yrdw}{m}{scit}{<->ssub * yrdw/m/sc}{}
+\DeclareFontShape{TS1}{yrdw}{db}{scit}{<->ssub * yrdw/m/scit}{}
+\DeclareFontShape{TS1}{yrdw}{b}{scit}{<->ssub * yrdw/db/scit}{}
+\DeclareFontShape{TS1}{yrdw}{bx}{scit}{<->ssub * yrdw/b/scit}{}
+\DeclareFontShape{TS1}{yrdw}{m}{scsl}{<->ssub * yrdw/m/scit}{}
+\DeclareFontShape{TS1}{yrdw}{db}{scsl}{<->ssub * yrdw/m/scsl}{}
+\DeclareFontShape{TS1}{yrdw}{b}{scsl}{<->ssub * yrdw/db/scsl}{}
+\DeclareFontShape{TS1}{yrdw}{bx}{scsl}{<->ssub * yrdw/b/scsl}{}
+\DeclareFontShape{TS1}{yrdw}{m}{si}{<->ssub * yrdw/m/scsl}{}
\DeclareFontShape{TS1}{yrdw}{db}{si}{<->ssub * yrdw/m/si}{}
\DeclareFontShape{TS1}{yrdw}{b}{si}{<->ssub * yrdw/db/si}{}
\DeclareFontShape{TS1}{yrdw}{bx}{si}{<->ssub * yrdw/b/si}{}
diff --git a/Master/texmf-dist/tex/latex/rpgicons/rpgicons-l3.sty b/Master/texmf-dist/tex/latex/rpgicons/rpgicons-l3.sty
index cc33d61bf2f..98251d41474 100644
--- a/Master/texmf-dist/tex/latex/rpgicons/rpgicons-l3.sty
+++ b/Master/texmf-dist/tex/latex/rpgicons/rpgicons-l3.sty
@@ -1,16 +1,16 @@
-% File: rpgicons-l3.sty
-% Copyright 2024 Jasper Habicht (mail(at)jasperhabicht.de).
-%
+% File: rpgicons-l3.sty
+% Copyright 2024-2025 Jasper Habicht (mail(at)jasperhabicht.de).
+%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
% available at http://www.latex-project.org/lppl/.
-%
+%
% This file is part of the `rpgicons' package (The Work in LPPL)
% and all files in that bundle must be distributed together.
-%
+%
% This work has the LPPL maintenance status `maintained'.
-%
-\ProvidesExplPackage {rpgicons-l3} {2024-08-08} {1.8.4}
+%
+\ProvidesExplPackage {rpgicons-l3} {2025-01-22} {1.8.6}
{RPG Icons Package (l3 Variant)}
\bool_new:N \l__rpgicons_unicode_mode_bool
@@ -23,7 +23,7 @@
\bool_new:N \l__rpgicons_compat_mode_bool
\bool_new:N \l__rpgicons_use_opacity_bool
-\keys_define:nn { rpgicons / package ~ options } {
+\keys_define:nn { rpgicons / package ~ options } {
compat .bool_set:N = \l__rpgicons_compat_mode_bool ,
compat .default:n = { true } ,
opacity .bool_set:N = \l__rpgicons_use_opacity_bool ,
@@ -67,18 +67,18 @@
% DICE
-\cs_new:Npn \rpgicons_draw_shape_twoside: {
+\cs_new_protected:Npn \rpgicons_draw_shape_twoside: {
\draw_path_ellipse:nnn { 0cm , 0cm } { 0cm , .25cm } { .425cm , 0cm }
}
-\cs_new:Npn \rpgicons_draw_shape_fourside: {
+\cs_new_protected:Npn \rpgicons_draw_shape_fourside: {
\draw_path_moveto:n { 0cm , .35cm }
\draw_path_lineto:n { .433cm , -.4cm }
\draw_path_lineto:n { -.433cm , -.4cm }
\draw_path_close:
}
-\cs_new:Npn \rpgicons_draw_shape_sixside: {
+\cs_new_protected:Npn \rpgicons_draw_shape_sixside: {
\bool_if:NTF \l__rpgicons_compat_mode_bool {
% l3draw rectangle fix
\draw_path_moveto:n { -.4cm , -.4cm }
@@ -91,7 +91,7 @@
}
}
-\cs_new:Npn \rpgicons_draw_shape_eightside: {
+\cs_new_protected:Npn \rpgicons_draw_shape_eightside: {
\draw_path_moveto:n { 0cm , .5cm }
\draw_path_lineto:n { .433cm , .25cm }
\draw_path_lineto:n { .433cm , -.25cm }
@@ -104,7 +104,7 @@
\draw_path_close:
}
-\cs_new:Npn \rpgicons_draw_shape_tenside: {
+\cs_new_protected:Npn \rpgicons_draw_shape_tenside: {
\draw_path_moveto:n { 0cm , .5cm }
\draw_path_lineto:n { .475cm , .1cm }
\draw_path_lineto:n { .475cm , -.1cm }
@@ -124,7 +124,7 @@
\draw_path_lineto:n { 0cm , -.3cm }
}
-\cs_new:Npn \rpgicons_draw_shape_twelveside: {
+\cs_new_protected:Npn \rpgicons_draw_shape_twelveside: {
\draw_path_moveto:n { 0cm , .5cm }
\draw_path_lineto:n { 0.294cm , .405cm }
\draw_path_lineto:n { .475cm , .173cm }
@@ -153,7 +153,7 @@
\draw_path_lineto:n { -.332cm , .108cm }
}
-\cs_new:Npn \rpgicons_draw_shape_twentyside: {
+\cs_new_protected:Npn \rpgicons_draw_shape_twentyside: {
\draw_path_moveto:n { 0cm , .5cm }
\draw_path_lineto:n { .454cm , .262cm }
\draw_path_lineto:n { .454cm , -.262cm }
@@ -178,18 +178,18 @@
\draw_path_lineto:n { -.253cm , -.146cm }
}
-\cs_new:Npn \rpgicons_draw_shape_hundredside: {
+\cs_new_protected:Npn \rpgicons_draw_shape_hundredside: {
\draw_path_circle:nn { 0cm, 0cm } { .425cm }
\draw_path_moveto:n { .425cm , 0cm }
\draw_path_arc:nnnn { 180 } { 50 } { -.425cm } { -.2cm }
\draw_path_moveto:n { 0cm , -.425cm }
- \draw_path_arc:nnnn { 270 } { 140 } { -.2cm } { .425cm }
+ \draw_path_arc:nnnn { 270 } { 140 } { -.2cm } { .425cm }
}
\clist_new:N \l_rpgnicons_pips_clist
\fp_new:N \l_rpgnicons_pips_coordx_fp
\fp_new:N \l_rpgnicons_pips_coordy_fp
-\cs_new:Npn \rpgicons_draw_shape_sixside_pips:n #1 {
+\cs_new_protected:Npn \rpgicons_draw_shape_sixside_pips:n #1 {
\str_case:nn {#1} {
{ one } { \clist_set:Nn \l_rpgnicons_pips_clist {
{ 0cm , 0cm }
@@ -239,7 +239,7 @@
\rpgicons_draw_shape_sixside:
}
-\cs_new:Npn \rpgicons_draw_shape_fudge: {
+\cs_new_protected:Npn \rpgicons_draw_shape_fudge: {
\rpgicons_draw_shape_sixside:
\draw_path_moveto:n { -.15cm , .1cm }
\draw_path_lineto:n { .15cm , .1cm }
@@ -249,7 +249,7 @@
\draw_path_lineto:n { .15cm , -.2cm }
}
-\cs_new:Npn \rpgicons_draw_shape_fudge_plus: {
+\cs_new_protected:Npn \rpgicons_draw_shape_fudge_plus: {
\rpgicons_draw_shape_sixside:
\draw_path_moveto:n { 0cm , .15cm }
\draw_path_lineto:n { 0cm , -.15cm }
@@ -257,7 +257,7 @@
\draw_path_lineto:n { .15cm , 0cm }
}
-\cs_new:Npn \rpgicons_draw_shape_fudge_minus: {
+\cs_new_protected:Npn \rpgicons_draw_shape_fudge_minus: {
\rpgicons_draw_shape_sixside:
\draw_path_moveto:n { -.15cm , 0cm }
\draw_path_lineto:n { .15cm , 0cm }
@@ -265,7 +265,7 @@
% ABILITIES
-\cs_new:Npn \rpgicons_draw_shape_strength: {
+\cs_new_protected:Npn \rpgicons_draw_shape_strength: {
\draw_path_moveto:n { ( 0cm , -.075cm ) + ( \draw_point_polar:nn { .425cm } { 90 } ) }
\draw_path_arc:nnn { 90 } { 60 } { .425cm }
\draw_path_arc:nnn { 200 } { -40 } { .1cm }
@@ -290,7 +290,7 @@
\draw_path_arc:nnn { 90 } { 110 } { .1cm }
}
-\cs_new:Npn \rpgicons_draw_shape_constitution: {
+\cs_new_protected:Npn \rpgicons_draw_shape_constitution: {
\draw_path_moveto:n { 0cm , .25cm }
\draw_path_lineto:n { .125cm , .25cm }
\draw_path_arc:nnn { -90 } { -30 } { .325cm }
@@ -323,7 +323,7 @@
\draw_path_lineto:n { .075cm , -.1cm }
}
-\cs_new:Npn \rpgicons_draw_shape_wisdom: {
+\cs_new_protected:Npn \rpgicons_draw_shape_wisdom: {
\draw_path_moveto:n { 0cm , .175cm }
\draw_path_arc:nnn { 60 } { 90 } { .425cm }
\draw_path_arc:nnn { 270 } { 240 } { .425cm }
@@ -341,7 +341,7 @@
\draw_path_arc:nnn { 30 } { -90 } { .25cm }
}
-\cs_new:Npn \rpgicons_draw_shape_charisma: {
+\cs_new_protected:Npn \rpgicons_draw_shape_charisma: {
\draw_path_moveto:n { 0cm , .15cm }
\draw_path_arc:nnnn { 270 } { 190 } { .15cm } { .1cm }
\draw_path_arc:nnnn { 10 } { 90 } { .175cm } { .225cm }
@@ -382,7 +382,7 @@
\draw_path_lineto:n { .25cm , -.275cm }
}
-\cs_new:Npn \rpgicons_draw_shape_dexterity: {
+\cs_new_protected:Npn \rpgicons_draw_shape_dexterity: {
\draw_path_moveto:n { ( 0cm , -.075cm ) + ( \draw_point_polar:nn { .425cm } { 90 } ) }
\draw_path_arc:nnn { 90 } { 65 } { .425cm }
\draw_path_arc:nnnn { 200 } { 90 } { .1cm } { .075cm }
@@ -396,7 +396,7 @@
\draw_path_arc:nnnn { 90 } { 220 } { .1cm } { .075cm }
\draw_path_moveto:n { ( 0cm , -.075cm ) + ( \draw_point_polar:nn { .425cm } { 135 } ) }
\draw_path_arc:nnnn { 135 } { 200 } { .425cm } { .35cm }
- \draw_path_arc:nnn { 70 } { 20 } { .175cm }
+ \draw_path_arc:nnn { 70 } { 20 } { .175cm }
\draw_path_moveto:n { -.075cm , -.175cm }
\draw_path_arc:nnnn { 180 } { 360 } { .075cm } { .05cm }
\draw_path_moveto:n { 0cm , -.225cm }
@@ -417,7 +417,7 @@
\draw_path_lineto:n { .1cm , -.325cm }
}
-\cs_new:Npn \rpgicons_draw_shape_dexterity_alt: {
+\cs_new_protected:Npn \rpgicons_draw_shape_dexterity_alt: {
\draw_path_moveto:n { ( 0cm , -.15cm ) + ( \draw_point_polar:nn { .425cm } { 90 } ) }
\draw_path_arc:nnn { 90 } { 75 } { .425cm }
\draw_path_moveto:n { ( 0cm , -.15cm ) + ( \draw_point_polar:nn { .425cm } { 90 } ) }
@@ -433,9 +433,9 @@
\draw_path_lineto:n { ( 0cm , -.1cm ) + ( \draw_point_polar:nn { .425cm } { 150 } ) }
\draw_path_arc:nnnn { 150 } { 225 } { .425cm } { .35cm }
\draw_path_moveto:n { .075cm , -.075cm }
- \draw_path_arc:nnnn { 170 } { 90 } { .15cm } { .05cm }
+ \draw_path_arc:nnnn { 170 } { 90 } { .15cm } { .05cm }
\draw_path_moveto:n { -.075cm , -.075cm }
- \draw_path_arc:nnnn { 10 } { 90 } { .15cm } { .05cm }
+ \draw_path_arc:nnnn { 10 } { 90 } { .15cm } { .05cm }
\draw_path_moveto:n { 0cm , -.275cm }
\draw_path_arc:nnnn { 0 } { 90 } { .075cm } { .05cm }
\draw_path_moveto:n { 0cm , -.275cm }
@@ -450,7 +450,7 @@
\draw_path_lineto:n { .1cm , -.35cm }
}
-\cs_new:Npn \rpgicons_draw_shape_intelligence: {
+\cs_new_protected:Npn \rpgicons_draw_shape_intelligence: {
\draw_path_moveto:n { ( 0cm , -.2cm ) + ( \draw_point_polar:nn { .425cm } { 90 } ) }
\draw_path_arc:nnn { 90 } { 60 } { .25cm }
\draw_path_lineto:n { ( 0cm , -.1cm ) + ( \draw_point_polar:nn { .6cm } { 60 } ) }
@@ -473,7 +473,7 @@
\draw_path_lineto:n { .2cm , -.075cm }
}
-\cs_new:Npn \rpgicons_draw_shape_resilience: {
+\cs_new_protected:Npn \rpgicons_draw_shape_resilience: {
\draw_path_moveto:n { ( -.425cm , -.475cm ) + ( \draw_point_polar:nn { .5cm } { 65 } ) }
\draw_path_arc:nnn { 65 } { 90 } { .5cm }
\draw_path_lineto:n { ( 0cm , -.075cm ) + ( \draw_point_polar:nn { .55cm } { 135 } ) }
@@ -500,8 +500,8 @@
\draw_path_lineto:n { .065cm , -.075cm }
}
-\cs_new:Npn \rpgicons_draw_shape_sanity: {
- \draw_path_moveto:n { ( -.125cm + .175cm * sind(30) , .425cm - .175cm * cosd(30) ) +
+\cs_new_protected:Npn \rpgicons_draw_shape_sanity: {
+ \draw_path_moveto:n { ( -.125cm + .175cm * sind(30) , .425cm - .175cm * cosd(30) ) +
( \draw_point_polar:nn { .175cm } { 210 } ) }
\draw_path_arc:nnn { 210 } { 120 } { .175cm }
\draw_path_lineto:n { \draw_point_polar:nn { .25cm } { 110 } }
@@ -520,14 +520,14 @@
\draw_path_lineto:n { .1cm , .025cm }
\draw_path_moveto:n { ( -.55cm , -.35cm ) + ( \draw_point_polar:nnn { .125cm } { .075cm} { 135 } ) +
( \draw_point_polar:nn { .55cm } { 20 } ) }
- \draw_path_arc:nnn { 380 } { 360 } { .55cm }
+ \draw_path_arc:nnn { 380 } { 360 } { .55cm }
\draw_path_arc:nnnn { 135 } { 405 } { .125cm } { .075cm }
\draw_path_arc:nnn { 180 } { 160 } { .55cm }
}
-\cs_new:Npn \rpgicons_draw_shape_perception: {
+\cs_new_protected:Npn \rpgicons_draw_shape_perception: {
\draw_path_moveto:n { ( 0cm , .35cm ) + ( \draw_point_polar:nn { .125cm } { 150 } ) }
- \draw_path_arc:nnn { 150 } { 390 } { .125cm }
+ \draw_path_arc:nnn { 150 } { 390 } { .125cm }
\draw_path_moveto:n { -.3cm , .425cm }
\draw_path_arc:nnnn { 180 } { 360 } { .3cm } { .2cm }
\draw_path_moveto:n { ( 0cm , .425cm ) + ( \draw_point_polar:nnn { .3cm } { .2cm } { 330 } ) }
@@ -546,17 +546,17 @@
\draw_path_moveto:n { .15cm , 0cm }
\draw_path_lineto:n { .075cm , -.025cm }
\draw_path_lineto:n { .075cm , -.05cm }
- \draw_path_moveto:n { ( -.075cm , ( -.35cm + .075cm * ( 2 + sqrt(3) ) ) ) +
- ( \draw_point_polar:nnn { .1cm } { .075cm } { 195 } ) }
+ \draw_path_moveto:n { ( -.075cm , ( -.35cm + .075cm * ( 2 + sqrt(3) ) ) ) +
+ ( \draw_point_polar:nnn { .1cm } { .075cm } { 195 } ) }
\draw_path_lineto:n { ( 0cm , -.35cm ) + ( \draw_point_polar:nnn { .1cm } { .075cm } { 195 } ) }
\draw_path_arc:nnnn { 195 } { 345 } { .1cm } { .075cm }
- \draw_path_lineto:n { ( .075cm , ( -.35cm + .075cm * ( 2 + sqrt(3) ) ) ) +
- ( \draw_point_polar:nnn { .1cm } { .075cm } { 345 } ) }
+ \draw_path_lineto:n { ( .075cm , ( -.35cm + .075cm * ( 2 + sqrt(3) ) ) ) +
+ ( \draw_point_polar:nnn { .1cm } { .075cm } { 345 } ) }
\draw_path_moveto:n { .025cm , -.325cm }
- \draw_path_arc:nnn { 0 } { 180 } { .025cm }
+ \draw_path_arc:nnn { 0 } { 180 } { .025cm }
}
-\cs_new:Npn \rpgicons_draw_shape_luck: {
+\cs_new_protected:Npn \rpgicons_draw_shape_luck: {
\draw_path_moveto:n { .1cm , .15cm }
\draw_path_lineto:n { .1cm , -.05cm }
\draw_path_arc:nnn { -75 } { -15 } { .425cm }
@@ -565,9 +565,9 @@
\draw_path_lineto:n { -.1cm , -.05cm }
\draw_path_arc:nnn { -105 } { -165 } { .425cm }
\draw_path_arc:nnn { 140 } { 95 } { .425cm }
- \draw_path_moveto:n { ( 0cm , -.05cm ) + ( \draw_point_polar:nn { .425cm } { 15 } ) }
+ \draw_path_moveto:n { ( 0cm , -.05cm ) + ( \draw_point_polar:nn { .425cm } { 15 } ) }
\draw_path_arc:nnnn { 15 } { -55 } { .425cm } { .3cm }
- \draw_path_moveto:n { ( 0cm , -.05cm ) + ( \draw_point_polar:nn { .425cm } { 165 } ) }
+ \draw_path_moveto:n { ( 0cm , -.05cm ) + ( \draw_point_polar:nn { .425cm } { 165 } ) }
\draw_path_arc:nnnn { 165 } { 235 } { .425cm } { .3cm }
\draw_path_moveto:n { 0cm , -.175cm }
\draw_path_arc:nnnn { 90 } { 250 } { .175cm } { .125cm }
@@ -577,7 +577,7 @@
\draw_path_lineto:n { .05cm , -.325cm }
}
-\cs_new:Npn \rpgicons_draw_shape_armor: {
+\cs_new_protected:Npn \rpgicons_draw_shape_armor: {
\draw_path_moveto:n { -.25cm , -.425cm }
\draw_path_lineto:n { .25cm , -.425cm }
\draw_path_lineto:n { .2cm , -.225cm }
@@ -604,7 +604,7 @@
\draw_path_lineto:n { .2cm , -.225cm }
}
-\cs_new:Npn \rpgicons_draw_shape_proficiency: {
+\cs_new_protected:Npn \rpgicons_draw_shape_proficiency: {
\draw_path_moveto:n { \draw_point_polar:nn { .35cm} { 90 } }
\draw_path_lineto:n { \draw_point_polar:nn { .15cm} { 126 } }
\draw_path_lineto:n { \draw_point_polar:nn { .35cm} { 162 } }
@@ -628,25 +628,25 @@
\draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 198 } }
}
-\cs_new:Npn \rpgicons_draw_shape_linear: {
+\cs_new_protected:Npn \rpgicons_draw_shape_linear: {
\draw_path_circle:nn { -.4cm , 0cm } { 2pt }
\draw_path_use_clear:n { fill }
\draw_path_moveto:n { -.4cm , 0cm }
\draw_path_lineto:n { .4cm , 0cm }
}
-\cs_new:Npn \rpgicons_draw_shape_conic: {
+\cs_new_protected:Npn \rpgicons_draw_shape_conic: {
\draw_path_circle:nn { -.425cm , 0cm } { 2pt }
\draw_path_use_clear:n { fill }
\draw_path_ellipse:nnn { .2125cm , 0cm } { .2cm , 0cm } { 0cm , .425cm }
- \draw_path_moveto:n { .2125cm - .2cm * sin( asin( .2cm / .6375cm ) ) ,
+ \draw_path_moveto:n { .2125cm - .2cm * sin( asin( .2cm / .6375cm ) ) ,
-.425cm * cos( asin( .2cm / ( .6375cm ) ) ) }
\draw_path_lineto:n { -.425cm , 0cm }
- \draw_path_lineto:n { .2125cm - .2cm * sin( asin( .2cm / .6375cm ) ) ,
+ \draw_path_lineto:n { .2125cm - .2cm * sin( asin( .2cm / .6375cm ) ) ,
.425cm * cos( asin( .2cm / ( .6375cm ) ) ) }
}
-\cs_new:Npn \rpgicons_draw_shape_quadratic: {
+\cs_new_protected:Npn \rpgicons_draw_shape_quadratic: {
\draw_path_circle:nn { 0cm , 0cm } { 2pt }
\draw_path_use_clear:n { fill }
\bool_if:NTF \l__rpgicons_compat_mode_bool {
@@ -661,7 +661,7 @@
}
}
-\cs_new:Npn \rpgicons_draw_shape_cubic: {
+\cs_new_protected:Npn \rpgicons_draw_shape_cubic: {
\draw_path_circle:nn { .1125cm , -.1125cm } { 2pt }
\draw_path_use_clear:n { fill }
\draw_path_moveto:n { -.425cm , .425cm }
@@ -677,7 +677,7 @@
\draw_path_lineto:n { .425cm , .2cm }
}
-\cs_new:Npn \rpgicons_draw_shape_spheric: {
+\cs_new_protected:Npn \rpgicons_draw_shape_spheric: {
\draw_path_circle:nn { 0cm , 0cm } { 2pt }
\draw_path_use_clear:n { fill }
\draw_path_circle:nn { 0cm , 0cm } { .425cm }
@@ -687,7 +687,7 @@
\draw_path_arc:nnnn { 270 } { 140 } { -.2cm } { .425cm }
}
-\cs_new:Npn \rpgicons_draw_shape_cylindric: {
+\cs_new_protected:Npn \rpgicons_draw_shape_cylindric: {
\draw_path_circle:nn { 0cm , -.2125cm } { 2pt }
\draw_path_use_clear:n { fill }
\draw_path_ellipse:nnn { 0cm , .2125cm } { 0cm , .2cm } { .425cm , 0cm }
@@ -697,21 +697,21 @@
\draw_path_lineto:n { .425cm , .2125cm }
}
-\cs_new:Npn \rpgicons_draw_shape_verbal: {
+\cs_new_protected:Npn \rpgicons_draw_shape_verbal: {
\draw_path_moveto:n { -.35cm , 0cm }
\draw_path_arc:nnn { 180 } { -115 } { .35cm }
\draw_path_lineto:n { -.4cm , -.4cm }
\draw_path_lineto:n { \draw_point_polar:nn { .35cm } { 215 } }
}
-\cs_new:Npn \rpgicons_draw_shape_somatic: {
+\cs_new_protected:Npn \rpgicons_draw_shape_somatic: {
\draw_path_moveto:n { -.425cm , 0cm }
\draw_path_arc:nnnn { 0 } { 270 } { -.425cm } { -.2cm }
\draw_path_moveto:n { 0cm , -.425cm }
\draw_path_arc:nnnn { 90 } { 360 } { -.2cm } { -.425cm }
}
-\cs_new:Npn \rpgicons_draw_shape_material: {
+\cs_new_protected:Npn \rpgicons_draw_shape_material: {
\draw_path_moveto:n { -.4cm , .2cm }
\draw_path_lineto:n { -.4cm , -.2cm }
\draw_path_lineto:n { 0cm , -.4cm }
@@ -725,7 +725,7 @@
\draw_path_lineto:n { 0cm , -.4cm }
}
-\cs_new:Npn \rpgicons_draw_shape_focus: {
+\cs_new_protected:Npn \rpgicons_draw_shape_focus: {
\draw_path_circle:nn { 0cm , 0cm } { .35cm }
\draw_path_moveto:n { -.15cm , 0 }
\draw_path_lineto:n { -.425cm , 0 }
@@ -739,7 +739,7 @@
% SPELLSCHOOLS
-\cs_new:Npn \rpgicons_draw_shape_abjuration: {
+\cs_new_protected:Npn \rpgicons_draw_shape_abjuration: {
\draw_path_moveto:n { 0cm , .025cm }
\draw_path_arc:nnnn { 270 } { 390 } { .275cm } { .175cm }
\draw_path_arc:nnn { 210 } { 120 } { .095cm }
@@ -754,7 +754,7 @@
\draw_path_lineto:n { .25cm , -.3cm }
}
-\cs_new:Npn \rpgicons_draw_shape_conjuration: {
+\cs_new_protected:Npn \rpgicons_draw_shape_conjuration: {
\draw_path_moveto:n { -.425cm , .425cm }
\draw_path_lineto:n { 0cm , -.425cm }
\draw_path_lineto:n { .425cm , .425cm }
@@ -766,7 +766,7 @@
\draw_path_arc:nnn { 110 } { 70 } { -.5cm }
}
-\cs_new:Npn \rpgicons_draw_shape_divination: {
+\cs_new_protected:Npn \rpgicons_draw_shape_divination: {
\draw_path_moveto:n { -.35cm , -.175cm }
\draw_path_arc:nnnn { 180 } { 0 } { .15cm } { -.25cm }
\draw_path_arc:nnn { 180 } { 90 } { .4cm }
@@ -775,7 +775,7 @@
\draw_path_arc:nnn { 180 } { 90 } { .4cm }
}
-\cs_new:Npn \rpgicons_draw_shape_enchantment: {
+\cs_new_protected:Npn \rpgicons_draw_shape_enchantment: {
\draw_path_moveto:n { -.2cm , -.425cm }
\draw_path_lineto:n { -.2cm , .425cm }
\draw_path_moveto:n { -.425cm , .175cm }
@@ -786,7 +786,7 @@
\draw_path_arc:nnnn { 180 } { 0 } { .1cm } { -.2cm }
}
-\cs_new:Npn \rpgicons_draw_shape_evocation: {
+\cs_new_protected:Npn \rpgicons_draw_shape_evocation: {
\draw_path_ellipse:nnn { 0cm , 0cm } { .325cm , 0cm } { 0cm , .225cm }
\draw_path_moveto:n { 0cm , .425cm }
\draw_path_lineto:n { 0cm , -.425cm }
@@ -810,12 +810,12 @@
\draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 330 } }
}
-\cs_new:Npn \rpgicons_draw_shape_illusion: {
+\cs_new_protected:Npn \rpgicons_draw_shape_illusion: {
\draw_path_moveto:n { 0cm , .225cm }
\draw_path_arc:nnn { 90 } { 30 } { .45cm }
\draw_path_arc:nnn { 330 } { 210 } { .45cm }
\draw_path_arc:nnn { 150 } { 90 } { .45cm }
- \draw_path_moveto:n { ( 0cm , .225cm ) + ( \draw_point_polar:nn { .45cm } { 270 } ) }
+ \draw_path_moveto:n { ( 0cm , .225cm ) + ( \draw_point_polar:nn { .45cm } { 270 } ) }
\draw_path_lineto:n { \draw_point_polar:nn { .35cm} { 270 } }
\draw_path_moveto:n { ( 0cm , .225cm ) + ( \draw_point_polar:nn { .45cm } { 240 } ) }
\draw_path_lineto:n { \draw_point_polar:nn { .4cm} { 225 } }
@@ -825,7 +825,7 @@
\draw_path_circle:nn { 0cm , .075cm } { .15cm }
}
-\cs_new:Npn \rpgicons_draw_shape_necromancy: {
+\cs_new_protected:Npn \rpgicons_draw_shape_necromancy: {
\draw_path_moveto:n { \draw_point_polar:nn { .25cm} { 210 } }
\draw_path_arc:nnn { 210 } { -30 } { .25cm }
\draw_path_arc:nnn { 150 } { 390 } { .1cm }
@@ -833,7 +833,7 @@
\draw_path_arc:nnn { 390 } { 150 } { .1cm }
}
-\cs_new:Npn \rpgicons_draw_shape_transmutation: {
+\cs_new_protected:Npn \rpgicons_draw_shape_transmutation: {
\draw_path_moveto:n { -.25cm , .35cm }
\draw_path_lineto:n { -.25cm , -.35cm }
\draw_path_moveto:n { 0cm , .35cm }
@@ -846,28 +846,28 @@
% DAMAGES
-\cs_new:Npn \rpgicons_draw_shape_acid: {
+\cs_new_protected:Npn \rpgicons_draw_shape_acid: {
\draw_path_moveto:n { ( -.175cm , .05cm ) + ( \draw_point_polar:nn { .175 } { -20 } ) }
\draw_path_arc:nnn { -20 } { 200 } { -.175cm }
\draw_path_lineto:n { 0cm , .425cm }
\draw_path_close:
- \draw_path_moveto:n {
- \draw_point_intersect_lines:nnnn
- { ( 0cm , -.175cm ) + ( \draw_point_polar:nn { -.25cm } { 20 } ) }
- { ( 0cm , -.175cm ) + ( \draw_point_polar:nn { -.25cm } { 160 } ) }
- { -.425cm , -.425cm } { -.425cm , .425cm }
+ \draw_path_moveto:n {
+ \draw_point_intersect_lines:nnnn
+ { ( 0cm , -.175cm ) + ( \draw_point_polar:nn { -.25cm } { 20 } ) }
+ { ( 0cm , -.175cm ) + ( \draw_point_polar:nn { -.25cm } { 160 } ) }
+ { -.425cm , -.425cm } { -.425cm , .425cm }
}
\draw_path_lineto:n { ( 0cm , -.175cm ) + ( \draw_point_polar:nn { -.25cm } { 20 } ) }
\draw_path_arc:nnn { 20 } { 160 } { -.25cm }
- \draw_path_lineto:n {
- \draw_point_intersect_lines:nnnn
- { ( 0cm , -.175cm ) + ( \draw_point_polar:nn { -.25cm } { 20 } ) }
- { ( 0cm , -.175cm ) + ( \draw_point_polar:nn { -.25cm } { 160 } ) }
- { .425cm , -.425cm } { .425cm , .425cm }
+ \draw_path_lineto:n {
+ \draw_point_intersect_lines:nnnn
+ { ( 0cm , -.175cm ) + ( \draw_point_polar:nn { -.25cm } { 20 } ) }
+ { ( 0cm , -.175cm ) + ( \draw_point_polar:nn { -.25cm } { 160 } ) }
+ { .425cm , -.425cm } { .425cm , .425cm }
}
}
-\cs_new:Npn \rpgicons_draw_shape_bludgeoning: {
+\cs_new_protected:Npn \rpgicons_draw_shape_bludgeoning: {
\draw_path_moveto:n { -.2cm , .225cm }
\draw_path_lineto:n { 0cm , .425cm }
\draw_path_lineto:n { .425cm , 0cm }
@@ -881,7 +881,7 @@
\draw_path_arc:nnn { 135 } { 315 } { -.05cm }
}
-\cs_new:Npn \rpgicons_draw_shape_cold: {
+\cs_new_protected:Npn \rpgicons_draw_shape_cold: {
\draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 90 } }
\draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 270 } }
\draw_path_moveto:n { \draw_point_polar:nn { .35cm} { 110 } }
@@ -908,12 +908,12 @@
\draw_path_lineto:n { \draw_point_polar:nn { .35cm} { 350 } }
}
-\cs_new:Npn \rpgicons_draw_shape_fire: {
+\cs_new_protected:Npn \rpgicons_draw_shape_fire: {
\draw_path_moveto:n { .15cm , -.425cm }
\draw_path_arc:nnnn { -60 } { 0 } { .45cm } { .375cm }
\draw_path_curveto:nnn { .375cm , .15cm } { .15cm , .375cm } { -.05cm , .425cm }
\draw_path_moveto:n { -.15cm , -.425cm }
- \draw_path_arc:nnnn { 240 } { 135 } { .45cm } { .35cm }
+ \draw_path_arc:nnnn { 240 } { 135 } { .45cm } { .35cm }
\draw_path_curveto:nnn { -.15cm , .2cm } { 0cm , .25cm } { -.05cm , .425cm }
\draw_path_moveto:n { .075cm , -.3cm }
\draw_path_curveto:nnn { .2cm , -.2cm } { .2cm , -.05cm } { .05cm , .1cm }
@@ -922,12 +922,12 @@
\draw_path_curveto:nnn { 0cm , -.2cm } { .05cm , -.1cm } { .05cm , .1cm }
}
-\cs_new:Npn \rpgicons_draw_shape_force: {
+\cs_new_protected:Npn \rpgicons_draw_shape_force: {
\draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 90 } }
\draw_path_lineto:n { \draw_point_polar:nn { .15cm} { 120 } }
\draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 150 } }
\draw_path_lineto:n { \draw_point_polar:nn { .15cm} { 180 } }
- \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 210 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 210 } }
\draw_path_lineto:n { \draw_point_polar:nn { .15cm} { 240 } }
\draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 270 } }
\draw_path_lineto:n { \draw_point_polar:nn { .15cm} { 300 } }
@@ -938,14 +938,14 @@
\draw_path_close:
}
-\cs_new:Npn \rpgicons_draw_shape_lightning: {
+\cs_new_protected:Npn \rpgicons_draw_shape_lightning: {
\draw_path_moveto:n { 0cm , .425cm }
\draw_path_lineto:n { -.25cm , -.15cm }
\draw_path_lineto:n { .25cm , .15cm }
\draw_path_lineto:n { 0cm , -.425cm }
}
-\cs_new:Npn \rpgicons_draw_shape_necrotic: {
+\cs_new_protected:Npn \rpgicons_draw_shape_necrotic: {
\draw_path_moveto:n { -.35cm , -.425cm }
\draw_path_lineto:n { -.35cm , .075cm }
\draw_path_arc:nnn { 180 } { 0 } { .35cm }
@@ -957,7 +957,7 @@
\draw_path_lineto:n { .15cm , .1cm }
}
-\cs_new:Npn \rpgicons_draw_shape_piercing: {
+\cs_new_protected:Npn \rpgicons_draw_shape_piercing: {
\draw_path_moveto:n { -.425cm , .075cm }
\draw_path_lineto:n { .3cm , .075cm }
\draw_path_lineto:n { .425cm , 0cm }
@@ -973,7 +973,7 @@
\draw_path_lineto:n { .25cm , -.425cm }
}
-\cs_new:Npn \rpgicons_draw_shape_poison: {
+\cs_new_protected:Npn \rpgicons_draw_shape_poison: {
\draw_path_moveto:n { ( 0cm , .175cm ) + ( \draw_point_polar:nn { .25cm } { -40 } ) }
\draw_path_arc:nnn { -40 } { 220 } { .25cm }
\draw_path_lineto:n { -.15cm , -.1cm }
@@ -987,7 +987,7 @@
\draw_path_lineto:n { .425cm , -.425cm }
}
-\cs_new:Npn \rpgicons_draw_shape_psychic: {
+\cs_new_protected:Npn \rpgicons_draw_shape_psychic: {
\draw_path_moveto:n { .075cm , .4cm }
\draw_path_arc:nnn { 90 } { 180 } { .425cm }
\draw_path_arc:nnn { 180 } { 270 } { .375cm }
@@ -998,7 +998,7 @@
\draw_path_arc:nnn { 270 } { 360 } { .125cm }
}
-\cs_new:Npn \rpgicons_draw_shape_radiant: {
+\cs_new_protected:Npn \rpgicons_draw_shape_radiant: {
\draw_path_circle:nn { 0cm , 0cm } { .225cm }
\draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 15 } }
\draw_path_arc:nnn { 15 } { 45 } { .425cm }
@@ -1014,7 +1014,7 @@
\draw_path_arc:nnn { 315 } { 345 } { .425cm }
}
-\cs_new:Npn \rpgicons_draw_shape_slashing: {
+\cs_new_protected:Npn \rpgicons_draw_shape_slashing: {
\draw_path_moveto:n { -.15cm , .225cm }
\draw_path_lineto:n { -.275cm , .35cm }
\draw_path_arc:nnn { 0 } { 240 } { .075cm }
@@ -1038,7 +1038,7 @@
\draw_path_lineto:n { .275cm , .1cm }
}
-\cs_new:Npn \rpgicons_draw_shape_thunder: {
+\cs_new_protected:Npn \rpgicons_draw_shape_thunder: {
\draw_path_moveto:n { .225cm , -.075cm }
\draw_path_arc:nnn { -90 } { 120 } { .2cm }
\draw_path_arc:nnn { 30 } { 180 } { .225cm }
@@ -1053,7 +1053,7 @@
\draw_path_arc:nnn { 240 } { 300 } { .5cm }
}
-\cs_new:Npn \rpgicons_draw_shape_healing: {
+\cs_new_protected:Npn \rpgicons_draw_shape_healing: {
\draw_path_moveto:n { 0cm , .125cm }
\draw_path_arc:nnn { 0 } { 225 } { .2cm }
\draw_path_lineto:n { 0cm , -.375cm }
@@ -1064,7 +1064,7 @@
% ATTACKS
-\cs_new:Npn \rpgicons_draw_shape_melee: {
+\cs_new_protected:Npn \rpgicons_draw_shape_melee: {
\draw_path_moveto:n { -.15cm , -.225cm }
\draw_path_lineto:n { -.275cm , -.35cm }
\draw_path_arc:nnn { 360 } { 90 } { .075cm }
@@ -1084,7 +1084,7 @@
\draw_path_lineto:n { 0cm , 0cm }
}
-\cs_new:Npn \rpgicons_draw_shape_ranged: {
+\cs_new_protected:Npn \rpgicons_draw_shape_ranged: {
\draw_path_moveto:n { 0cm , 0cm }
\draw_path_lineto:n { 0cm , -.225cm }
\draw_path_arc:nnn { 0 } { -30 } { .4cm }
@@ -1103,7 +1103,7 @@
\draw_path_lineto:n { ( -.4cm , .225cm ) + ( \draw_point_polar:nn { .4cm } { 20 } ) }
}
-\cs_new:Npn \rpgicons_draw_shape_magic: {
+\cs_new_protected:Npn \rpgicons_draw_shape_magic: {
\draw_path_moveto:n { -.225cm , -.425cm }
\draw_path_lineto:n { -.425cm , -.225cm }
\draw_path_lineto:n { -.3cm , -.1cm }
@@ -1127,7 +1127,7 @@
\draw_path_circle:nn { .3cm , -.075cm } { .075cm }
}
-\cs_new:Npn \rpgicons_draw_shape_singlehanded: {
+\cs_new_protected:Npn \rpgicons_draw_shape_singlehanded: {
\draw_path_moveto:n { -.25cm , -.425cm }
\draw_path_lineto:n { .025cm , -.425cm }
\draw_path_lineto:n { .325cm , -.125cm }
@@ -1142,7 +1142,7 @@
\draw_path_lineto:n { -.425cm , -.25cm }
}
-\cs_new:Npn \rpgicons_draw_shape_doublehanded: {
+\cs_new_protected:Npn \rpgicons_draw_shape_doublehanded: {
\draw_path_moveto:n { -.25cm , -.425cm }
\draw_path_lineto:n { .025cm , -.425cm }
\draw_path_lineto:n { .325cm , -.125cm }
@@ -1171,7 +1171,7 @@
% CONDITIONS
-\cs_new:Npn \rpgicons_draw_shape_buff: {
+\cs_new_protected:Npn \rpgicons_draw_shape_buff: {
\draw_path_moveto:n { -.425cm , -.225cm }
\draw_path_lineto:n { -.225cm , -.425cm }
\draw_path_lineto:n { -.1cm , -.3cm }
@@ -1193,10 +1193,9 @@
\draw_path_lineto:n { .25cm , .275cm }
\draw_path_arc:nnn { 360 } { 180 } { .125cm }
\draw_path_close:
-
}
-\cs_new:Npn \rpgicons_draw_shape_blinded: {
+\cs_new_protected:Npn \rpgicons_draw_shape_blinded: {
\draw_path_moveto:n { 0cm , .225cm }
\draw_path_arc:nnn { 90 } { 30 } { .45cm }
\draw_path_arc:nnn { 330 } { 210 } { .45cm }
@@ -1209,7 +1208,7 @@
\draw_path_lineto:n { .425cm , .425cm }
}
-\cs_new:Npn \rpgicons_draw_shape_charmed: {
+\cs_new_protected:Npn \rpgicons_draw_shape_charmed: {
\draw_path_circle:nn { 0cm , 0cm } { .425cm }
\draw_path_moveto:n { -.175cm , -.1cm }
\draw_path_arc:nnn { 180 } { 360 } { .175cm }
@@ -1228,7 +1227,7 @@
\draw_path_lineto:n { .175cm , 0cm }
}
-\cs_new:Npn \rpgicons_draw_shape_deafened: {
+\cs_new_protected:Npn \rpgicons_draw_shape_deafened: {
\draw_path_moveto:n { -.175cm , -.275cm }
\draw_path_arc:nnn { 180 } { 360 } { .15cm }
\draw_path_lineto:n { .125cm , -.225cm }
@@ -1245,7 +1244,7 @@
\draw_path_lineto:n { .425cm , .425cm }
}
-\cs_new:Npn \rpgicons_draw_shape_exhausted: {
+\cs_new_protected:Npn \rpgicons_draw_shape_exhausted: {
\draw_path_circle:nn { 0cm , 0cm } { .425cm }
\draw_path_moveto:n { -.175cm , -.225cm }
\draw_path_arc:nnn { 180 } { 0 } { .175cm }
@@ -1256,7 +1255,7 @@
\draw_path_arc:nnn { 180 } { 0 } { -.1cm }
}
-\cs_new:Npn \rpgicons_draw_shape_frightened: {
+\cs_new_protected:Npn \rpgicons_draw_shape_frightened: {
\draw_path_circle:nn { 0cm , 0cm } { .425cm }
\draw_path_moveto:n { -.175cm , -.225cm }
\draw_path_arc:nnn { 180 } { 0 } { .175cm }
@@ -1265,7 +1264,7 @@
\draw_path_circle:nn { .175cm , .125cm } { .075cm }
}
-\cs_new:Npn \rpgicons_draw_shape_grappled: {
+\cs_new_protected:Npn \rpgicons_draw_shape_grappled: {
\draw_path_moveto:n { -.25cm , .3cm }
\draw_path_arc:nnn { 90 } { -90 } { .075cm }
\draw_path_lineto:n { -.35cm , .15cm }
@@ -1302,7 +1301,7 @@
\draw_path_lineto:n { -.3cm , -.425cm }
}
-\cs_new:Npn \rpgicons_draw_shape_incapacitated: {
+\cs_new_protected:Npn \rpgicons_draw_shape_incapacitated: {
\draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 30 } }
\draw_path_arc:nnn { 270 } { 210 } { .425cm }
\draw_path_lineto:n { \draw_point_polar:nn { -.425cm} { 90 } }
@@ -1324,7 +1323,7 @@
\draw_path_arc:nnn { 210 } { 150 } { .25cm }
}
-\cs_new:Npn \rpgicons_draw_shape_invisible: {
+\cs_new_protected:Npn \rpgicons_draw_shape_invisible: {
\draw_path_moveto:n { \draw_point_polar:nn { .425cm} { -15 } }
\draw_path_arc:nnn { -15 } { 15 } { .425cm }
\draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 30 } }
@@ -1343,7 +1342,7 @@
\draw_path_arc:nnn { 300 } { 330 } { .425cm }
}
-\cs_new:Npn \rpgicons_draw_shape_paralyzed: {
+\cs_new_protected:Npn \rpgicons_draw_shape_paralyzed: {
\draw_path_circle:nn { 0cm , 0cm } { .425cm }
\draw_path_moveto:n { -.175cm , -.225cm }
\draw_path_arc:nnn { 180 } { 0 } { .175cm }
@@ -1358,7 +1357,7 @@
\draw_path_lineto:n { -.1cm , .2cm }
}
-\cs_new:Npn \rpgicons_draw_shape_petrified: {
+\cs_new_protected:Npn \rpgicons_draw_shape_petrified: {
\draw_path_moveto:n { \draw_point_polar:nn { .425cm} { 45 } }
\draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 100 } }
\draw_path_lineto:n { \draw_point_polar:nn { .425cm} { 135 } }
@@ -1388,7 +1387,7 @@
\draw_path_lineto:n { .1cm , .1cm }
}
-\cs_new:Npn \rpgicons_draw_shape_poisoned: {
+\cs_new_protected:Npn \rpgicons_draw_shape_poisoned: {
\draw_path_circle:nn { 0cm , 0cm } { .425cm }
\draw_path_moveto:n { -.15cm , -.2cm }
\draw_path_lineto:n { -.075cm , -.125cm }
@@ -1402,8 +1401,8 @@
\draw_path_lineto:n { -.1cm , .1cm }
\draw_path_lineto:n { -.25cm , .025cm }
}
-
-\cs_new:Npn \rpgicons_draw_shape_prone: {
+
+\cs_new_protected:Npn \rpgicons_draw_shape_prone: {
\draw_path_circle:nn { .2cm , -.125cm } { .125cm }
\draw_path_moveto:n { -.425cm , 0cm }
\draw_path_lineto:n { -.15cm , 0cm }
@@ -1421,7 +1420,7 @@
\draw_path_arc:nnn { 0 } { 90 } { .1cm }
}
-\cs_new:Npn \rpgicons_draw_shape_restrained: {
+\cs_new_protected:Npn \rpgicons_draw_shape_restrained: {
\draw_path_moveto:n { -.075cm , -.225cm }
\draw_path_lineto:n { -.075cm , .225cm }
\draw_path_arc:nnn { 90 } { 180 } { .125cm }
@@ -1451,10 +1450,10 @@
\draw_path_arc:nnn { 90 } { -90 } { .05cm }
\draw_path_lineto:n { -.35cm , -.425cm }
\draw_path_arc:nnn { 270 } { 90 } { .05cm }
- \draw_path_close:
+ \draw_path_close:
}
-\cs_new:Npn \rpgicons_draw_shape_stunned: {
+\cs_new_protected:Npn \rpgicons_draw_shape_stunned: {
\draw_path_circle:nn { 0cm , 0cm } { .425cm }
\draw_path_ellipse:nnn { 0cm , -.175cm } { 0cm , .1cm } { .175cm , 0cm }
\draw_path_moveto:n { ( -.175cm , .125cm ) + ( \draw_point_polar:nn { .125cm } { 90 } ) }
@@ -1481,7 +1480,7 @@
\draw_path_close:
}
-\cs_new:Npn \rpgicons_draw_shape_unconscious: {
+\cs_new_protected:Npn \rpgicons_draw_shape_unconscious: {
\draw_path_moveto:n { 0cm , .15cm }
\draw_path_arc:nnnn { 90 } { -30 } { .425cm } { .15cm }
\draw_path_moveto:n { 0cm , -.15cm }
@@ -1498,7 +1497,7 @@
\draw_path_arc:nnn { 0 } { 90 } { .125cm }
}
-\cs_new:Npn \rpgicons_draw_shape_hearing: {
+\cs_new_protected:Npn \rpgicons_draw_shape_hearing: {
\draw_path_moveto:n { -.175cm , -.275cm }
\draw_path_arc:nnn { 180 } { 360 } { .15cm }
\draw_path_lineto:n { .125cm , -.225cm }
@@ -1511,7 +1510,7 @@
\draw_path_arc:nnn { 180 } { 45 } { .15cm }
}
-\cs_new:Npn \rpgicons_draw_shape_seeing: {
+\cs_new_protected:Npn \rpgicons_draw_shape_seeing: {
\draw_path_moveto:n { 0cm , .225cm }
\draw_path_arc:nnn { 90 } { 30 } { .45cm }
\draw_path_arc:nnn { 330 } { 210 } { .45cm }
@@ -1522,11 +1521,11 @@
% FRAMES
-\cs_new:Npn \rpgicons_draw_frame_ability: {
+\cs_new_protected:Npn \rpgicons_draw_frame_ability: {
\draw_path_circle:nn { 0cm , 0cm } { .45cm }
}
-\cs_new:Npn \rpgicons_draw_frame_saving: {
+\cs_new_protected:Npn \rpgicons_draw_frame_saving: {
\draw_path_moveto:n { -.45cm, . 45cm }
\draw_path_lineto:n { .45cm , .45cm }
\draw_path_lineto:n { .45cm , -.05cm }
@@ -1534,7 +1533,7 @@
\draw_path_close:
}
-\cs_new:Npn \rpgicons_draw_frame_spellschool: {
+\cs_new_protected:Npn \rpgicons_draw_frame_spellschool: {
\draw_path_moveto:n { -.475cm, . 35cm }
\draw_path_lineto:n { -.35cm , .475cm }
\draw_path_lineto:n { .35cm , .475cm }
@@ -1545,7 +1544,7 @@
\draw_path_close:
}
-\cs_new:Npn \rpgicons_draw_frame_damage: {
+\cs_new_protected:Npn \rpgicons_draw_frame_damage: {
\draw_path_circle:nn { 0cm , 0cm } { .5cm }
}
@@ -1587,17 +1586,17 @@
\cs_generate_variant:Nn \color_fill:n { V }
\bool_new:N \l__rpgicons_opacity_warning_bool
-\cs_new:Npn \__rpgicons_opacity_check: {
- \bool_lazy_and:nnT {
+\cs_new_protected:Npn \__rpgicons_opacity_check: {
+ \bool_lazy_and:nnT {
\bool_not_p:n { \l__rpgicons_opacity_warning_bool }
} {
- \bool_not_p:n { \l__rpgicons_use_opacity_bool }
+ \bool_not_p:n { \l__rpgicons_use_opacity_bool }
} {
\msg_warning:nn { rpgicons } { opacity-option-missing }
\bool_set_true:N \l__rpgicons_opacity_warning_bool
}
}
-\cs_new:Npn \__rpgicons_accessible_check: {
+\cs_new_protected:Npn \__rpgicons_accessible_check: {
\IfDocumentMetadataTF { } {
\msg_error:nn { rpgicons } { documentmetadata-missing }
}
@@ -1605,10 +1604,10 @@
\cs_generate_variant:Nn \bool_set:Nn { Ne }
\keys_define:nn { rpgicons / local ~ options } {
- before ~ sep .groups:n = { extra } ,
+ before ~ sep .groups:n = { extra } ,
before ~ sep .dim_set:N = \l_rpgicons_icon_before_sep_dim ,
before ~ sep .initial:n = { 0.05em } ,
- after ~ sep .groups:n = { extra } ,
+ after ~ sep .groups:n = { extra } ,
after ~ sep .dim_set:N = \l_rpgicons_icon_after_sep_dim ,
after ~ sep .initial:n = { 0.05em } ,
accessible .choice: ,
@@ -1642,30 +1641,30 @@
} ,
background .tl_set:N = \l_rpgicons_icon_color_background_tl ,
background .initial:n = { white } ,
- stroke ~ opacity .code:n = {
- \__rpgicons_opacity_check:
+ stroke ~ opacity .code:n = {
+ \__rpgicons_opacity_check:
\fp_set:Nn \l_rpgicons_icon_opacity_stroke_fp {#1}
} ,
- fill ~ opacity .code:n = {
- \__rpgicons_opacity_check:
+ fill ~ opacity .code:n = {
+ \__rpgicons_opacity_check:
\fp_set:Nn \l_rpgicons_icon_opacity_fill_fp {#1}
} ,
- text ~ opacity .code:n = {
- \__rpgicons_opacity_check:
+ text ~ opacity .code:n = {
+ \__rpgicons_opacity_check:
\fp_set:Nn \l_rpgicons_icon_opacity_text_fp {#1}
} ,
- opacity .code:n = {
- \__rpgicons_opacity_check:
+ opacity .code:n = {
+ \__rpgicons_opacity_check:
\fp_set:Nn \l_rpgicons_icon_opacity_stroke_fp {#1}
\fp_set:Nn \l_rpgicons_icon_opacity_fill_fp {#1}
\fp_set:Nn \l_rpgicons_icon_opacity_text_fp {#1}
} ,
- background ~ opacity .code:n = {
- \__rpgicons_opacity_check:
+ background ~ opacity .code:n = {
+ \__rpgicons_opacity_check:
\fp_set:Nn \l_rpgicons_icon_opacity_background_fp {#1}
} ,
- line ~ width .dim_set:N = \l_rpgicons_icon_linewidth_dim ,
- line ~ width .initial:n = { \l_draw_default_linewidth_dim } ,
+ line ~ width .dim_set:N = \l_rpgicons_icon_linewidth_dim ,
+ line ~ width .initial:n = { \l_draw_default_linewidth_dim } ,
scale .fp_set:N = \l_rpgicons_icon_transform_scale_fp ,
scale .initial:n = { 1.0 } ,
scale ~ inner .fp_set:N = \l_rpgicons_icon_transform_scale_inner_fp ,
@@ -1684,24 +1683,24 @@
\str_replace_all:Nnn \l__rpgicons_icon_shape_name_str { ~ } { _ }
\clist_new:c { l_rpgicons_types_every_ \l__rpgicons_icon_shape_name_str _style_clist }
\keys_define:nn { rpgicons / local ~ options } {
- every ~ #1 .code:n = {
- \clist_set:cn {
+ every ~ #1 .code:n = {
+ \clist_set:cn {
l_rpgicons_types_every_ \l__rpgicons_icon_shape_name_str _style_clist
- } {##1}
- }
+ } {##1}
+ }
}
}
\clist_const:Nn \c__rpgicons_shapes_clist {
twoside , fourside , sixside , eightside , tenside , twelveside , twentyside , hundredside ,
- fudge , sixside ~ one , sixside ~ two , sixside ~ three, sixside ~ four, sixside ~ five ,
+ fudge , sixside ~ one , sixside ~ two , sixside ~ three, sixside ~ four, sixside ~ five ,
sixside ~ six , sixside ~ seven, sixside ~ eight, sixside ~ nine, fudge ~ plus, fudge ~ minus ,
- strength , dexterity , dexterity ~ alt , constitution , intelligence , wisdom , charisma ,
+ strength , dexterity , dexterity ~ alt , constitution , intelligence , wisdom , charisma ,
resilience , sanity , perception , luck , armor , proficiency ,
linear , conic , quadratic , cubic , spheric , cylindric , verbal , somatic , material , focus ,
abjuration , conjuration , divination , enchantment , evocation , illusion , necromancy , transmutation ,
acid , bludgeoning , cold , fire , force , lightning , necrotic , piercing , poison , psychic ,
- radiant , slashing , thunder , healing ,
+ radiant , slashing , thunder , healing ,
melee , ranged , magic , singlehanded , doublehanded ,
buff , blinded , charmed , deafened , exhausted , frightened , grappled , incapacitated , invisible ,
paralyzed , petrified , poisoned , prone , restrained , stunned , unconscious , hearing , seeing
@@ -1712,11 +1711,11 @@
\str_replace_all:Nnn \l__rpgicons_icon_shape_name_str { ~ } { _ }
\clist_new:c { l_rpgicons_shapes_every_ \l__rpgicons_icon_shape_name_str _style_clist }
\keys_define:nn { rpgicons / local ~ options } {
- every ~ #1 .code:n = {
- \clist_set:cn {
+ every ~ #1 .code:n = {
+ \clist_set:cn {
l_rpgicons_shapes_every_ \l__rpgicons_icon_shape_name_str _style_clist
- } {##1}
- }
+ } {##1}
+ }
}
}
@@ -1734,7 +1733,7 @@
\cs_generate_variant:Nn \keys_set_groups:nnn { nne }
\cs_generate_variant:Nn \keys_set_exclude_groups:nnn { nne }
\NewDocumentCommand \RPGIconsUseIcon { s O{} o m } {
- \bool_if:NT \l_rpgicons_icon_accessible_full_bool {
+ \bool_if:NT \l_rpgicons_icon_accessible_full_bool {
\__rpgicons_accessible_check:
\pdf_bdc:nn { Span } { /Alt ~ ( #4 ) }
}
@@ -1746,13 +1745,13 @@
\keys_set:ne { rpgicons / local ~ options } {#2}
} {
\keys_set_exclude_groups:nne { rpgicons / local ~ options } { extra } {#2}
- }
+ }
\str_set:Ne \l__rpgicons_icon_shape_name_str {#4}
\str_replace_all:Nnn \l__rpgicons_icon_shape_name_str { ~ } { _ }
\str_if_empty:NF \l__rpgicons_icon_shape_name_str {
\clist_if_exist:cT { l_rpgicons_shapes_every_ \l__rpgicons_icon_shape_name_str _style_clist } {
- \keys_set:ne { rpgicons / local ~ options } {
- \clist_use:cn { l_rpgicons_shapes_every_ \l__rpgicons_icon_shape_name_str _style_clist } { , }
+ \keys_set:ne { rpgicons / local ~ options } {
+ \clist_use:cn { l_rpgicons_shapes_every_ \l__rpgicons_icon_shape_name_str _style_clist } { , }
}
}
}
@@ -1766,7 +1765,7 @@
\draw_transform_scale:n { \l_rpgicons_icon_transform_scale_fp }
\draw_transform_rotate:n { \l_rpgicons_icon_transform_rotate_fp }
\draw_baseline:n { \l_rpgicons_icon_baseline_dim }
- \bool_if:NT \l_rpgicons_icon_accessible_basic_bool {
+ \bool_if:NT \l_rpgicons_icon_accessible_basic_bool {
\draw_scope_begin:
\bool_if:NTF \l__rpgicons_compat_mode_bool {
% l3draw rectangle fix
@@ -1778,12 +1777,12 @@
\draw_path_close:
\draw_path_use_clear:n { clip }
} {
- \draw_path_rectangle_corners:nn
+ \draw_path_rectangle_corners:nn
{ -.5cm , .5cm }
{ .5cm , .5cm }
\draw_path_use_clear:n { clip }
}
- \bool_if:NTF \l_rpgicons_icon_accessible_full_bool {
+ \bool_if:NTF \l_rpgicons_icon_accessible_full_bool {
\hcoffin_set:Nn \l__rpgicons_icon_accessible_coffin { \pdffakespace #4 \pdffakespace }
} {
\hcoffin_set:Nn \l__rpgicons_icon_accessible_coffin {#4}
@@ -1802,13 +1801,13 @@
\draw_path_close:
\draw_path_use_clear:n { clip }
} {
- \draw_path_rectangle_corners:nn
+ \draw_path_rectangle_corners:nn
{ -.5cm , -.5cm - \l_rpgicons_icon_linewidth_dim / 2 }
{ .5cm , .5cm + \l_rpgicons_icon_linewidth_dim / 2 }
\draw_path_replace_bb:
- \bool_set_false:N \l_draw_bb_update_bool
+ \bool_set_false:N \l_draw_bb_update_bool
}
- \draw_scope_begin:
+ \draw_scope_begin:
\clist_if_in:neT { ability , saving , spellschool , damage } { \l_rpgicons_icon_frame_tl } {
\use:c { rpgicons_draw_frame_ \l_rpgicons_icon_frame_tl : }
\IfBooleanTF {#1} {
@@ -1816,18 +1815,18 @@
\color_select:V { \l_rpgicons_icon_color_background_tl }
\bool_if:NT \l__rpgicons_use_opacity_bool {
\opacity_select:n { \l_rpgicons_icon_opacity_background_fp }
- }
+ }
} {
\draw_path_use_clear:n { stroke }
}
- \draw_transform_scale:n { \l_rpgicons_icon_transform_scale_inner_fp }
- }
- \clist_if_in:neTF { sixside ~ one , sixside ~ two , sixside ~ three , sixside ~ four ,
+ \draw_transform_scale:n { \l_rpgicons_icon_transform_scale_inner_fp }
+ }
+ \clist_if_in:neTF { sixside ~ one , sixside ~ two , sixside ~ three , sixside ~ four ,
sixside ~ five , sixside ~ six , sixside ~ seven , sixside ~ eight , sixside ~ nine } {#4} {
- \seq_set_split:Nee \l__rpgicons_icon_shape_name_parts_seq
+ \seq_set_split:Nee \l__rpgicons_icon_shape_name_parts_seq
{ \c_underscore_str } { \l__rpgicons_icon_shape_name_str }
- \exp_args:Ne \rpgicons_draw_shape_sixside_pips:n {
- \seq_item:Nn \l__rpgicons_icon_shape_name_parts_seq { 2 }
+ \exp_args:Ne \rpgicons_draw_shape_sixside_pips:n {
+ \seq_item:Nn \l__rpgicons_icon_shape_name_parts_seq { 2 }
}
} {
\use:c { rpgicons_draw_shape_ \l__rpgicons_icon_shape_name_str : }
@@ -1840,12 +1839,12 @@
\opacity_select:n { \l_rpgicons_icon_opacity_text_fp }
}
\hcoffin_set:Ne \l__rpgicons_icon_label_coffin {#3}
- \draw_coffin_use:Nnn \l__rpgicons_icon_label_coffin { hc } { vc }
+ \draw_coffin_use:Nnn \l__rpgicons_icon_label_coffin { hc } { vc }
\draw_scope_end:
}
\draw_scope_end:
\draw_end:
- \bool_if:NT \l_rpgicons_icon_accessible_full_bool {
+ \bool_if:NT \l_rpgicons_icon_accessible_full_bool {
\pdf_emc:
}
}
@@ -1853,7 +1852,7 @@
\str_new:N \l__rpgicons_icon_integer_str
\cs_generate_variant:Nn \str_if_eq:nnTF { ne }
\NewDocumentCommand { \RPGIconsDie } { O{normal} m O{} m } {
- \group_begin:
+ \group_begin:
\keys_set_groups:nne { rpgicons / local ~ options } { extra } {#3}
\keys_set:ne { rpgicons / local ~ options } { \clist_use:Nn \l_rpgicons_types_every_die_style_clist { , } }
\str_set:Ne \l__rpgicons_icon_integer_str {#4}
@@ -1875,7 +1874,7 @@
\keys_set:ne { rpgicons / local ~ options } { \clist_use:Nn \l_rpgicons_types_every_ability_style_clist { , } }
\hspace { \l_rpgicons_icon_before_sep_dim }
\str_if_eq:neTF { negative } {#1} {
- \RPGIconsUseIcon*[frame=ability, scale=.333, #3]{#2}
+ \RPGIconsUseIcon*[frame=ability, scale=.333, #3]{#2}
} {
\RPGIconsUseIcon[scale=.333, #3]{#2}
}
@@ -1890,7 +1889,7 @@
\keys_set:ne { rpgicons / local ~ options } { \clist_use:Nn \l_rpgicons_types_every_saving_style_clist { , } }
\hspace { \l_rpgicons_icon_before_sep_dim }
\str_if_eq:neTF { empty } {#1} {
- \RPGIconsUseIcon[frame=saving, scale=.333, #3]{}
+ \RPGIconsUseIcon[frame=saving, scale=.333, #3]{}
} {
\RPGIconsUseIcon[frame=saving, scale=.333, #3]{#2}
}
@@ -1904,7 +1903,7 @@
\keys_set_groups:nne { rpgicons / local ~ options } { extra } {#2}
\keys_set:ne { rpgicons / local ~ options } { \clist_use:Nn \l_rpgicons_types_every_spell_style_clist { , } }
\hspace { \l_rpgicons_icon_before_sep_dim }
- \RPGIconsUseIcon[scale=.333, #2]{#1}
+ \RPGIconsUseIcon[scale=.333, #2]{#1}
\hspace { \l_rpgicons_icon_after_sep_dim }
\group_end:
}
@@ -1916,7 +1915,7 @@
\keys_set:ne { rpgicons / local ~ options } { \clist_use:Nn \l_rpgicons_types_every_spellschool_style_clist { , } }
\hspace { \l_rpgicons_icon_before_sep_dim }
\str_if_eq:neTF { negative } {#1} {
- \RPGIconsUseIcon*[frame=spellschool, scale=.333, #3]{#2}
+ \RPGIconsUseIcon*[frame=spellschool, scale=.333, #3]{#2}
} {
\RPGIconsUseIcon[frame=spellschool, scale=.333, #3]{#2}
}
@@ -1930,7 +1929,7 @@
\keys_set_groups:nne { rpgicons / local ~ options } { extra } {#2}
\keys_set:ne { rpgicons / local ~ options } { \clist_use:Nn \l_rpgicons_types_every_damage_style_clist { , } }
\hspace { \l_rpgicons_icon_before_sep_dim }
- \RPGIconsUseIcon[frame=damage, scale=.333, #2]{#1}
+ \RPGIconsUseIcon[frame=damage, scale=.333, #2]{#1}
\hspace { \l_rpgicons_icon_after_sep_dim }
\group_end:
}
@@ -1941,7 +1940,7 @@
\keys_set_groups:nne { rpgicons / local ~ options } { extra } {#2}
\keys_set:ne { rpgicons / local ~ options } { \clist_use:Nn \l_rpgicons_types_every_attack_style_clist { , } }
\hspace { \l_rpgicons_icon_before_sep_dim }
- \RPGIconsUseIcon[scale=.333, #2]{#1}
+ \RPGIconsUseIcon[scale=.333, #2]{#1}
\hspace { \l_rpgicons_icon_after_sep_dim }
\group_end:
}
@@ -1952,7 +1951,7 @@
\keys_set_groups:nne { rpgicons / local ~ options } { extra } {#2}
\keys_set:ne { rpgicons / local ~ options } { \clist_use:Nn \l_rpgicons_types_every_condition_style_clist { , } }
\hspace { \l_rpgicons_icon_before_sep_dim }
- \RPGIconsUseIcon[scale=.333, #2]{#1}
+ \RPGIconsUseIcon[scale=.333, #2]{#1}
\hspace { \l_rpgicons_icon_after_sep_dim }
\group_end:
}
@@ -1962,7 +1961,7 @@
\regex_new:N \l__rpgicons_roll_syntax_die_regex
\cs_generate_variant:Nn \regex_set:Nn { Ne }
-\cs_new:Npn \rpgicons_roll_syntax_die_set:n #1 {
+\cs_new_protected:Npn \rpgicons_roll_syntax_die_set:n #1 {
\regex_set:Ne \l__rpgicons_roll_syntax_die_regex { [ \clist_use:nn {#1} { } ] }
}
@@ -1982,15 +1981,15 @@
{ 20 } { twentyside }
{ 100 } { hundredside }
{ F } { fudge }
- }
+ }
{#1}
}
\seq_new:N \l__rpgicons_roll_syntax_seq
\tl_new:N \l__rpgicons_roll_syntax_part_tl
-\regex_new:N \l__rpgicons_roll_syntax_split_regex
-\regex_new:N \l__rpgicons_roll_syntax_plusminus_regex
-\regex_new:N \l__rpgicons_roll_syntax_times_regex
+\regex_new:N \l__rpgicons_roll_syntax_split_regex
+\regex_new:N \l__rpgicons_roll_syntax_plusminus_regex
+\regex_new:N \l__rpgicons_roll_syntax_times_regex
\bool_if:NTF \l__rpgicons_unicode_mode_bool {
\regex_set:Nn \l__rpgicons_roll_syntax_split_regex { \s*([\+\-\x{2212}x\*\x{00D7}])\s* }
\regex_set:Nn \l__rpgicons_roll_syntax_plusminus_regex { \A([\+\-\x{2212}])\Z }
@@ -2000,25 +1999,25 @@
\regex_set:Nn \l__rpgicons_roll_syntax_plusminus_regex { \A([\+\-])\Z }
\regex_set:Nn \l__rpgicons_roll_syntax_times_regex { \A([x\*\x{00D7}])\Z }
}
-\regex_new:N \l__rpgicons_roll_syntax_dice_regex
-\cs_new:Npn \rpgicons_roll_syntax_parse:n #1 {
+\regex_new:N \l__rpgicons_roll_syntax_dice_regex
+\cs_new_protected:Npn \rpgicons_roll_syntax_parse:n #1 {
\regex_set:Nn \l__rpgicons_roll_syntax_dice_regex { \A(\d*)\ur{l__rpgicons_roll_syntax_die_regex}([F\d]+)\Z }
\regex_split:NnN \l__rpgicons_roll_syntax_split_regex {#1} \l__rpgicons_roll_syntax_seq
- \seq_map_inline:Nn \l__rpgicons_roll_syntax_seq {
+ \seq_map_inline:Nn \l__rpgicons_roll_syntax_seq {
\tl_set:Ne \l__rpgicons_roll_syntax_part_tl {##1}
\regex_replace_case_once:nNTF {
{ \l__rpgicons_roll_syntax_plusminus_regex } { \c{,} $\1$ \c{,} }
{ \l__rpgicons_roll_syntax_times_regex } { \c{,} $\c{times}$ \c{,} }
- { \l__rpgicons_roll_syntax_dice_regex }
+ { \l__rpgicons_roll_syntax_dice_regex }
{ \c{ RPGIconsDie } { \c{ rpgicons_roll_syntax_convert:n } { \2 } } { \1 } }
- } \l__rpgicons_roll_syntax_part_tl
- { \tl_use:N \l__rpgicons_roll_syntax_part_tl }
+ } \l__rpgicons_roll_syntax_part_tl
+ { \tl_use:N \l__rpgicons_roll_syntax_part_tl }
{ \tl_use:N \l__rpgicons_roll_syntax_part_tl }
}
}
\NewDocumentCommand{\RPGIconsRoll}{ m }{
- \rpgicons_roll_syntax_parse:n {#1}
+ \rpgicons_roll_syntax_parse:n {#1}
}
\cs_if_exist:NF \roll { \cs_new_eq:NN \roll \RPGIconsRoll }
diff --git a/Master/texmf-dist/tex/latex/rpgicons/rpgicons-pgf.sty b/Master/texmf-dist/tex/latex/rpgicons/rpgicons-pgf.sty
index dd75a7b4c0b..1cd7fc7c8b1 100644
--- a/Master/texmf-dist/tex/latex/rpgicons/rpgicons-pgf.sty
+++ b/Master/texmf-dist/tex/latex/rpgicons/rpgicons-pgf.sty
@@ -1,17 +1,17 @@
-% File: rpgicons-pgf.sty
-% Copyright 2024 Jasper Habicht (mail(at)jasperhabicht.de).
-%
+% File: rpgicons-pgf.sty
+% Copyright 2024-2025 Jasper Habicht (mail(at)jasperhabicht.de).
+%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
% available at http://www.latex-project.org/lppl/.
-%
+%
% This file is part of the `rpgicons' package (The Work in LPPL)
% and all files in that bundle must be distributed together.
-%
+%
% This work has the LPPL maintenance status `maintained'.
-%
+%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{rpgicons-pgf}[2024-08-08 RPG Icons Package (PGF Variant) (1.8.4)]
+\ProvidesPackage{rpgicons-pgf}[2025-01-22 RPG Icons Package (PGF Variant) (1.8.6)]
% provide pics option
\newif\ifrpgicons@pics\rpgicons@picsfalse
@@ -25,14 +25,14 @@
\def\rpgicons@allshapes{%
twoside, fourside, sixside, eightside, tenside, twelveside, twentyside, hundredside,
- fudge, sixside one, sixside two, sixside three, sixside four, sixside five,
+ fudge, sixside one, sixside two, sixside three, sixside four, sixside five,
sixside six, sixside seven, sixside eight, sixside nine, fudge plus, fudge minus,
- strength, dexterity, dexterity alt, constitution, intelligence, wisdom, charisma,
+ strength, dexterity, dexterity alt, constitution, intelligence, wisdom, charisma,
resilience, sanity, perception, luck, armor, proficiency,
linear, conic, quadratic, cubic, spheric, cylindric, verbal, somatic, material, focus,
abjuration, conjuration, divination, enchantment, evocation, illusion, necromancy, transmutation,
acid, bludgeoning, cold, fire, force, lightning, necrotic, piercing, poison, psychic,
- radiant, slashing, thunder, healing,
+ radiant, slashing, thunder, healing,
melee, ranged, magic, singlehanded, doublehanded,
buff, blinded, charmed, deafened, exhausted, frightened, grappled, incapacitated, invisible,
paralyzed, petrified, poisoned, prone, restrained, stunned, unconscious, hearing, seeing%
@@ -62,7 +62,7 @@
line join=round
}
},
- %
+ %
rpg icons/every die/.style={},
rpg icons/every ability/.style={},
rpg icons/every saving/.style={},
@@ -166,7 +166,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpoint{0cm}{.5cm}}
\pgfpathlineto{\pgfpoint{.475cm}{.1cm}}
\pgfpathlineto{\pgfpoint{.475cm}{-.1cm}}
@@ -231,7 +231,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpoint{0cm}{.5cm}}
\pgfpathlineto{\pgfpoint{.454cm}{.262cm}}
\pgfpathlineto{\pgfpoint{.454cm}{-.262cm}}
@@ -264,7 +264,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathcircle{\pgfpointorigin}{.425cm}
\pgfpathmoveto{\pgfpoint{.425cm}{0cm}}
\pgfpatharc{180}{50}{-.425cm and -.2cm}
@@ -286,7 +286,7 @@
\foreach \x/\y in {
0cm/0cm
} {
- \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
+ \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
}
\pgfusepath{fill}
}
@@ -302,9 +302,9 @@
\pgfpathrectanglecorners{\pgfpoint{.4cm}{.4cm}}{\pgfpoint{-.4cm}{-.4cm}}
\pgfusepath{draw} % draw rectangle
\foreach \x/\y in {
- .2cm/-.2cm, -.2cm/.2cm
+ .2cm/-.2cm, -.2cm/.2cm
} {
- \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
+ \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
}
\pgfusepath{fill}
}
@@ -320,9 +320,9 @@
\pgfpathrectanglecorners{\pgfpoint{.4cm}{.4cm}}{\pgfpoint{-.4cm}{-.4cm}}
\pgfusepath{draw} % draw rectangle
\foreach \x/\y in {
- .2cm/-.2cm, 0cm/0cm, -.2cm/.2cm
+ .2cm/-.2cm, 0cm/0cm, -.2cm/.2cm
} {
- \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
+ \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
}
\pgfusepath{fill}
}
@@ -341,7 +341,7 @@
-.2cm/.2cm, .2cm/.2cm,
-.2cm/-.2cm, .2cm/-.2cm
} {
- \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
+ \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
}
\pgfusepath{fill}
}
@@ -361,7 +361,7 @@
0cm/0cm,
-.2cm/-.2cm, .2cm/-.2cm
} {
- \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
+ \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
}
\pgfusepath{fill}
}
@@ -381,7 +381,7 @@
-.2cm/0cm, .2cm/0cm,
-.2cm/-.2cm, .2cm/-.2cm
} {
- \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
+ \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
}
\pgfusepath{fill}
}
@@ -401,7 +401,7 @@
-.2cm/0cm, 0cm/0cm, .2cm/0cm,
-.2cm/-.2cm, .2cm/-.2cm
} {
- \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
+ \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
}
\pgfusepath{fill}
}
@@ -421,7 +421,7 @@
-.2cm/0cm, .2cm/0cm,
-.2cm/-.2cm, 0cm/-.2cm, .2cm/-.2cm
} {
- \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
+ \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
}
\pgfusepath{fill}
}
@@ -441,7 +441,7 @@
-.2cm/0cm, 0cm/0cm, .2cm/0cm,
-.2cm/-.2cm, 0cm/-.2cm, .2cm/-.2cm
} {
- \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
+ \pgfpathcircle{\pgfpoint{\x}{\y}}{2pt}
}
\pgfusepath{fill}
}
@@ -462,7 +462,7 @@
\pgfpathlineto{\pgfpoint{0cm}{-.05cm}}
\pgfpathmoveto{\pgfpoint{-.15cm}{-.2cm}}
\pgfpathlineto{\pgfpoint{.15cm}{-.2cm}}
- \pgfusepath{draw}
+ \pgfusepath{draw}
}
}
@@ -479,7 +479,7 @@
\pgfpathlineto{\pgfpoint{0cm}{-.15cm}}
\pgfpathmoveto{\pgfpoint{-.15cm}{0cm}}
\pgfpathlineto{\pgfpoint{.15cm}{0cm}}
- \pgfusepath{draw}
+ \pgfusepath{draw}
}
}
@@ -494,7 +494,7 @@
\pgfusepath{draw} % draw rectangle
\pgfpathmoveto{\pgfpoint{-.15cm}{0cm}}
\pgfpathlineto{\pgfpoint{.15cm}{0cm}}
- \pgfusepath{draw}
+ \pgfusepath{draw}
}
}
@@ -514,7 +514,7 @@
\hspace{\rpgicons@beforesep}%
\tikz[rpg icons, rpg icons/every die, rpg icons/every #2,
baseline=\rpgicons@baseline, fgnrm/.style={scale=.333}, fglrg/.style={scale=.675}, #3] {
- \node[#2, \rpgicons@diceiconfg, font={\footnotesize}] (0cm,0cm)
+ \node[#2, \rpgicons@diceiconfg, font={\footnotesize}] (0cm,0cm)
{\ifx\rpgicons@diceiconnrmlrg\rpgicons@diceiconlrg\textbf{#4}\fi};
\path[draw=none, \rpgicons@diceiconfg] ([yshift=-1pt].425cm,.425cm) rectangle ([yshift=1pt]-.425cm,-.425cm);
}%
@@ -530,7 +530,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpointadd{\pgfpoint{0cm}{-.075cm}}{\pgfpointpolar{90}{.425cm}}}
\pgfpatharc{90}{60}{.425cm}
\pgfpatharc{200}{-40}{.1cm}
@@ -563,7 +563,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpointadd{\pgfpoint{0cm}{-.075cm}}{\pgfpointpolar{90}{.425cm}}}
\pgfpatharc{90}{65}{.425cm}
\pgfpatharc{200}{90}{.1cm and .075cm}
@@ -577,7 +577,7 @@
\pgfpatharc{90}{220}{.1cm and .075cm}
\pgfpathmoveto{\pgfpointadd{\pgfpoint{0cm}{-.075cm}}{\pgfpointpolar{135}{.425cm}}}
\pgfpatharc{135}{200}{.425cm and .35cm}
- \pgfpatharc{70}{20}{.175cm}
+ \pgfpatharc{70}{20}{.175cm}
\pgfpathmoveto{\pgfpoint{-.075cm}{-.175cm}}
\pgfpatharc{180}{360}{.075cm and .05cm}
\pgfpathmoveto{\pgfpoint{0cm}{-.225cm}}
@@ -606,7 +606,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpointadd{\pgfpoint{0cm}{-.15cm}}{\pgfpointpolar{90}{.425cm}}}
\pgfpatharc{90}{75}{.425cm}
\pgfpathmoveto{\pgfpointadd{\pgfpoint{0cm}{-.15cm}}{\pgfpointpolar{90}{.425cm}}}
@@ -622,9 +622,9 @@
\pgfpathlineto{\pgfpointadd{\pgfpoint{0cm}{-.1cm}}{\pgfpointpolar{150}{.425cm}}}
\pgfpatharc{150}{225}{.425cm and .35cm}
\pgfpathmoveto{\pgfpoint{.075cm}{-.075cm}}
- \pgfpatharc{170}{90}{.15cm and .05cm}
+ \pgfpatharc{170}{90}{.15cm and .05cm}
\pgfpathmoveto{\pgfpoint{-.075cm}{-.075cm}}
- \pgfpatharc{10}{90}{.15cm and .05cm}
+ \pgfpatharc{10}{90}{.15cm and .05cm}
\pgfpathmoveto{\pgfpoint{0cm}{-.275cm}}
\pgfpatharc{0}{90}{.075cm and .05cm}
\pgfpathmoveto{\pgfpoint{0cm}{-.275cm}}
@@ -647,7 +647,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpoint{0cm}{.25cm}}
\pgfpathlineto{\pgfpoint{.125cm}{.25cm}}
\pgfpatharc{-90}{-30}{.325cm}
@@ -688,7 +688,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpointadd{\pgfpoint{0cm}{-.2cm}}{\pgfpointpolar{90}{.425cm}}}
\pgfpatharc{90}{60}{.25cm}
\pgfpathlineto{\pgfpointadd{\pgfpoint{0cm}{-.1cm}}{\pgfpointpolar{60}{.6cm}}}
@@ -719,7 +719,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpoint{0cm}{.175cm}}
\pgfpatharc{60}{90}{.425cm}
\pgfpatharc{270}{240}{.425cm}
@@ -745,7 +745,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpoint{0cm}{.15cm}}
\pgfpatharc{270}{190}{.15cm and .1cm}
\pgfpatharc{10}{90}{.175cm and .225cm}
@@ -862,7 +862,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpointadd{\pgfpoint{0cm}{.35cm}}{\pgfpointpolar{150}{.125cm}}}
\pgfpatharc{150}{390}{.125cm}
\pgfpathmoveto{\pgfpoint{-.3cm}{.425cm}}
@@ -901,7 +901,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpoint{.1cm}{.15cm}}
\pgfpathlineto{\pgfpoint{.1cm}{-.05cm}}
\pgfpatharc{-75}{-15}{.425cm}
@@ -930,7 +930,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpoint{-.25cm}{-.425cm}}
\pgfpathlineto{\pgfpoint{.25cm}{-.425cm}}
\pgfpathlineto{\pgfpoint{.2cm}{-.225cm}}
@@ -965,7 +965,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpointpolar{90}{.35cm}}
\pgfpathlineto{\pgfpointpolar{126}{.15cm}}
\pgfpathlineto{\pgfpointpolar{162}{.35cm}}
@@ -1021,7 +1021,7 @@
\hspace{\rpgicons@beforesep}%
\tikz[rpg icons, rpg icons/every saving, \rpgicons@savingstyle,
baseline=\rpgicons@baseline, #3] {
- \path[draw, scale=.333] (-.45cm,.45cm) -- (.45cm,.45cm) -- (.45cm,-.05cm)
+ \path[draw, scale=.333] (-.45cm,.45cm) -- (.45cm,.45cm) -- (.45cm,-.05cm)
arc[start angle=360, end angle=180, radius=.45cm] -- cycle;
\ifx\rpgicons@abilityiconnrmemp\rpgicons@abilityiconemp\else%
\node[#2, draw,scale=.225] (0cm,0cm) {};
@@ -1040,7 +1040,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpoint{-.4cm}{0cm}}
\pgfpathlineto{\pgfpoint{.4cm}{0cm}}
\pgfusepath{draw} % draw shape
@@ -1067,7 +1067,7 @@
\pgfmathparse{\rx*cos(\angle)}
\let\coordyb\pgfmathresult
\pgfmathparse{\z-\ry*sin(\angle)}
- \let\coordx\pgfmathresult
+ \let\coordx\pgfmathresult
\pgfpathmoveto{\pgfpoint{\coordx-.425cm}{\coordya}}
\pgfpathlineto{\pgfpoint{-.425cm}{0cm}}
\pgfpathlineto{\pgfpoint{\coordx-.425cm}{\coordyb}}
@@ -1121,7 +1121,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathcircle{\pgfpointorigin}{.425cm}
\pgfpathmoveto{\pgfpoint{.425cm}{0cm}}
\pgfpatharc{180}{50}{-.425cm and -.2cm}
@@ -1157,7 +1157,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpoint{-.35cm}{0cm}}
\pgfpatharc{180}{-115}{.35cm}
\pgfpathlineto{\pgfpoint{-.4cm}{-.4cm}}
@@ -1172,7 +1172,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpoint{-.425cm}{0cm}}
\pgfpatharc{0}{270}{-.425cm and -.2cm}
\pgfpathmoveto{\pgfpoint{0cm}{-.425cm}}
@@ -1187,7 +1187,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpoint{-.4cm}{.2cm}}
\pgfpathlineto{\pgfpoint{-.4cm}{-.2cm}}
\pgfpathlineto{\pgfpoint{0cm}{-.4cm}}
@@ -1227,7 +1227,7 @@
\hspace{\rpgicons@beforesep}%
\tikz[rpg icons, rpg icons/every spell, rpg icons/every #1,
baseline=\rpgicons@baseline, #2] {
- \node[#1, draw,scale=.333] (0cm,0cm) {};
+ \node[#1, draw,scale=.333] (0cm,0cm) {};
\path[draw=none, scale=.333] ([yshift=-1pt].425cm,.425cm) rectangle ([yshift=1pt]-.425cm,-.425cm);
}%
\hspace{\rpgicons@aftersep}%
@@ -1418,9 +1418,9 @@
\tikz[rpg icons, rpg icons/every spellschool, rpg icons/every #2,
baseline=\rpgicons@baseline, fgpos/.style={draw=rpgicons@bg, line width=.6pt}, fgneg/.style={draw},
bgpos/.style={fill}, bgneg/.style={draw}, #3] {
- \path[scale=.333, \rpgicons@spellschooliconbg] (-.475cm,.35cm)
+ \path[scale=.333, \rpgicons@spellschooliconbg] (-.475cm,.35cm)
-- (-.35cm,.475cm) -- (.35cm,.475cm) -- (.475cm,.35cm) -- (.425cm,-.375cm) -- (0cm,-.475cm) -- (-.425cm,-.375cm) -- cycle;
- \node[#2, scale=.225, \rpgicons@spellschooliconfg] (0cm,0cm) {};
+ \node[#2, scale=.225, \rpgicons@spellschooliconfg] (0cm,0cm) {};
\path[draw=none, scale=.333] ([yshift=-1pt].425,.425) rectangle ([yshift=1pt]-.425cm,-.425cm);
}%
\hspace{\rpgicons@aftersep}%
@@ -1450,7 +1450,7 @@
}
}
-% bludgeoning
+% bludgeoning
\pgfdeclareshape{bludgeoning}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -1518,7 +1518,7 @@
\pgfpatharc{-60}{0}{.45cm and .375cm}
\pgfpathcurveto{\pgfpoint{.375cm}{.15cm}}{\pgfpoint{.15cm}{.375cm}}{\pgfpoint{-.05cm}{.425cm}}
\pgfpathmoveto{\pgfpoint{-.15cm}{-.425cm}}
- \pgfpatharc{240}{135}{.45cm and .35cm}
+ \pgfpatharc{240}{135}{.45cm and .35cm}
\pgfpathcurveto{\pgfpoint{-.15cm}{.2cm}}{\pgfpoint{0cm}{.25cm}}{\pgfpoint{-.05cm}{.425cm}}
\pgfpathmoveto{\pgfpoint{.075cm}{-.3cm}}
\pgfpathcurveto{\pgfpoint{.2cm}{-.2cm}}{\pgfpoint{.2cm}{-.05cm}}{\pgfpoint{.05cm}{.1cm}}
@@ -1540,7 +1540,7 @@
\pgfpathlineto{\pgfpointpolar{120}{.15cm}}
\pgfpathlineto{\pgfpointpolar{150}{.425cm}}
\pgfpathlineto{\pgfpointpolar{180}{.15cm}}
- \pgfpathlineto{\pgfpointpolar{210}{.425cm}}
+ \pgfpathlineto{\pgfpointpolar{210}{.425cm}}
\pgfpathlineto{\pgfpointpolar{240}{.15cm}}
\pgfpathlineto{\pgfpointpolar{270}{.425cm}}
\pgfpathlineto{\pgfpointpolar{300}{.15cm}}
@@ -1677,7 +1677,7 @@
}
}
-% slashing
+% slashing
\pgfdeclareshape{slashing}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -1741,9 +1741,9 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpoint{0cm}{.125cm}}
- \pgfpatharc{0}{225}{.2cm}
+ \pgfpatharc{0}{225}{.2cm}
\pgfpathlineto{\pgfpoint{0cm}{-.375cm}}
\pgfpathmoveto{\pgfpoint{0cm}{.125cm}}
\pgfpatharc{180}{-45}{.2cm}
@@ -1757,7 +1757,7 @@
\tikz[rpg icons, rpg icons/every damage, rpg icons/every #1,
baseline=\rpgicons@baseline, #2] {
\path[draw, scale=.333] (0cm,0cm) circle[radius=.5cm];
- \node[#1, draw, scale=.225] (0cm,0cm) {};
+ \node[#1, draw, scale=.225] (0cm,0cm) {};
\path[draw=none, scale=.333] ([yshift=-1pt].425cm,.425cm) rectangle ([yshift=1pt]-.425cm,-.425cm);
}%
\hspace{\rpgicons@aftersep}%
@@ -1766,7 +1766,7 @@
% ATTACKS
-% melee
+% melee
\pgfdeclareshape{melee}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -1794,7 +1794,7 @@
}
}
-% ranged
+% ranged
\pgfdeclareshape{ranged}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -1827,7 +1827,7 @@
\anchor{text} % this is used to center the text in the node
{\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox}}
- \foregroundpath{
+ \foregroundpath{
\pgfpathmoveto{\pgfpoint{-.225cm}{-.425cm}}
\pgflineto{\pgfpoint{-.425cm}{-.225cm}}
\pgflineto{\pgfpoint{-.3cm}{-.1cm}}
@@ -1853,7 +1853,7 @@
}
}
-% single-handed
+% single-handed
\pgfdeclareshape{singlehanded}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -1876,7 +1876,7 @@
}
}
-% double-handed
+% double-handed
\pgfdeclareshape{doublehanded}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -1915,7 +1915,7 @@
\hspace{\rpgicons@beforesep}%
\tikz[rpg icons, rpg icons/every attack, rpg icons/every #1,
baseline=\rpgicons@baseline, #2] {
- \node[#1, draw, scale=.333] (0cm,0cm) {};
+ \node[#1, draw, scale=.333] (0cm,0cm) {};
\path[draw=none, scale=.333] ([yshift=-1pt].425cm,.425cm) rectangle ([yshift=1pt]-.425cm,-.425cm);
}%
\hspace{\rpgicons@aftersep}%
@@ -1924,7 +1924,7 @@
% CONDITIONS
-% buff
+% buff
\pgfdeclareshape{buff}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -1977,7 +1977,7 @@
}
}
-% charmed
+% charmed
\pgfdeclareshape{charmed}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -1989,13 +1989,13 @@
\pgfpatharc{180}{360}{.175cm}
\pgfpathclose
\pgfpathmoveto{\pgfpoint{-.175cm}{.15cm}}
- \pgfpatharc{0}{225}{.0625cm}
+ \pgfpatharc{0}{225}{.0625cm}
\pgfpathlineto{\pgfpoint{-.175cm}{0cm}}
\pgfpathmoveto{\pgfpoint{-.175cm}{.15cm}}
\pgfpatharc{180}{-45}{.0625cm}
\pgfpathlineto{\pgfpoint{-.175cm}{0cm}}
\pgfpathmoveto{\pgfpoint{.175cm}{.15cm}}
- \pgfpatharc{0}{225}{.0625cm}
+ \pgfpatharc{0}{225}{.0625cm}
\pgfpathlineto{\pgfpoint{.175cm}{0cm}}
\pgfpathmoveto{\pgfpoint{.175cm}{.15cm}}
\pgfpatharc{180}{-45}{.0625cm}
@@ -2029,7 +2029,7 @@
}
}
-% exhausted
+% exhausted
\pgfdeclareshape{exhausted}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -2048,7 +2048,7 @@
}
}
-% frightened
+% frightened
\pgfdeclareshape{frightened}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -2065,7 +2065,7 @@
}
}
-% grappled
+% grappled
\pgfdeclareshape{grappled}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -2110,7 +2110,7 @@
}
}
-% incapacitated
+% incapacitated
\pgfdeclareshape{incapacitated}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -2140,7 +2140,7 @@
}
}
-% invisible
+% invisible
\pgfdeclareshape{invisible}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -2167,7 +2167,7 @@
}
}
-% paralyzed
+% paralyzed
\pgfdeclareshape{paralyzed}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -2190,7 +2190,7 @@
}
}
-% petrified
+% petrified
\pgfdeclareshape{petrified}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -2228,7 +2228,7 @@
}
}
-% poisoned
+% poisoned
\pgfdeclareshape{poisoned}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -2250,8 +2250,8 @@
\pgfusepath{draw} % draw shape
}
}
-
-% prone
+
+% prone
\pgfdeclareshape{prone}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -2263,7 +2263,7 @@
\pgfpathlineto{\pgfpoint{-.15cm}{0cm}}
\pgfpatharc{90}{-90}{.125cm}
\pgfpathlineto{\pgfpoint{-.425cm}{-.25cm}}
-
+
\pgfpathmoveto{\pgfpoint{.225cm}{.15cm}}
\pgfpatharc{270}{360}{.1cm}
\pgfpatharc{180}{270}{.1cm}
@@ -2278,7 +2278,7 @@
}
}
-% restrained
+% restrained
\pgfdeclareshape{restrained}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -2319,7 +2319,7 @@
}
}
-% stunned
+% stunned
\pgfdeclareshape{stunned}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -2354,7 +2354,7 @@
}
}
-% unconscious
+% unconscious
\pgfdeclareshape{unconscious}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -2379,7 +2379,7 @@
}
}
-% hearing
+% hearing
\pgfdeclareshape{hearing}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -2400,7 +2400,7 @@
}
}
-% seeing
+% seeing
\pgfdeclareshape{seeing}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text} % this is used to center the text in the node
@@ -2421,7 +2421,7 @@
\hspace{\rpgicons@beforesep}%
\tikz[rpg icons, rpg icons/every condition, rpg icons/every #1,
baseline=\rpgicons@baseline, #2] {
- \node[#1, draw, scale=.333] (0cm,0cm) {};
+ \node[#1, draw, scale=.333] (0cm,0cm) {};
\path[draw=none, scale=.333] ([yshift=-1pt].425cm,.425cm) rectangle ([yshift=1pt]-.425cm,-.425cm);
}%
\hspace{\rpgicons@aftersep}%
@@ -2436,7 +2436,7 @@
\tikzset{
rpg icons #1/.pic={
\begin{scope}[every node/.append style={#1}, rpg icons/every #1]
- \node[draw, scale=.333] (0cm,0cm) (-node) {};
+ \node[draw, scale=.333] (0cm,0cm) (-node) {};
\path[draw=none, scale=.333] ([yshift=-1pt].425cm,.425cm) rectangle ([yshift=1pt]-.425cm,-.425cm);
\end{scope}
},
@@ -2447,7 +2447,7 @@
rpg icons #1 ability/.pic={
\begin{scope}[every node/.append style={#1}, rpg icons/every ability, rpg icons/every #1]
\path[scale=.333, pic actions] (0cm,0cm) circle[radius=.45cm];
- \node[draw, scale=.225] (0cm,0cm) (-node) {};
+ \node[draw, scale=.225] (0cm,0cm) (-node) {};
\path[draw=none, scale=.333] ([yshift=-1pt].425cm,.425cm) rectangle ([yshift=1pt]-.425cm,-.425cm);
\end{scope}
}
@@ -2457,9 +2457,9 @@
\tikzset{
rpg icons #1 saving/.pic={
\begin{scope}[every node/.append style={#1}, rpg icons/every saving, rpg icons/every #1]
- \path[draw, scale=.333, pic actions] (-.45cm,.45cm) -- (.45cm,.45cm) -- (.45cm,-.05cm)
+ \path[draw, scale=.333, pic actions] (-.45cm,.45cm) -- (.45cm,.45cm) -- (.45cm,-.05cm)
arc[start angle=360, end angle=180, radius=.45cm] -- cycle;
- \node[#1, draw, scale=.225] (0cm,0cm) (-node) {};
+ \node[#1, draw, scale=.225] (0cm,0cm) (-node) {};
\path[draw=none, scale=.333] ([yshift=-1pt].425cm,.425cm) rectangle ([yshift=1pt]-.425cm,-.425cm);
\end{scope}
}
@@ -2469,9 +2469,9 @@
\tikzset{
rpg icons #1 spellschool/.pic={
\begin{scope}[every node/.append style={#1}, rpg icons/every spellschool, rpg icons/every #1]
- \path[draw, scale=.333, pic actions] (-.475cm,.35cm)
+ \path[draw, scale=.333, pic actions] (-.475cm,.35cm)
-- (-.35cm,.475cm) -- (.35cm,.475cm) -- (.475cm,.35cm) -- (.425cm,-.375cm) -- (0cm,-.475cm) -- (-.425cm,-.375cm) -- cycle;
- \node[#1, draw, scale=.225] (0cm,0cm) (-node) {};
+ \node[#1, draw, scale=.225] (0cm,0cm) (-node) {};
\path[draw=none, scale=.333] ([yshift=-1pt].425cm,.425cm) rectangle ([yshift=1pt]-.425cm,-.425cm);
\end{scope}
}
@@ -2482,7 +2482,7 @@
rpg icons #1 damage/.pic={
\begin{scope}[every node/.append style={#1}, rpg icons/every damage, rpg icons/every #1]
\path[draw, scale=.333, pic actions] (0cm,0cm) circle[radius=.5cm];
- \node[#1, draw, scale=.225] (0cm,0cm) (-node) {};
+ \node[#1, draw, scale=.225] (0cm,0cm) (-node) {};
\path[draw=none, scale=.333] ([yshift=-1pt].425cm,.425cm) rectangle ([yshift=1pt]-.425cm,-.425cm);
\end{scope}
}
@@ -2492,11 +2492,11 @@
\rpgicons@allshapes%
},
rpg icons/create pic from ability shape/.list={%
- strength, dexterity, dexterity alt, constitution, intelligence, wisdom, charisma,
+ strength, dexterity, dexterity alt, constitution, intelligence, wisdom, charisma,
resilience, sanity, perception, luck, armor, proficiency%
},
rpg icons/create pic from saving shape/.list={%
- strength, dexterity, dexterity alt, constitution, intelligence, wisdom, charisma,
+ strength, dexterity, dexterity alt, constitution, intelligence, wisdom, charisma,
resilience, sanity, perception, luck, armor, proficiency%
},
rpg icons/create pic from spellschool shape/.list={%
@@ -2526,7 +2526,7 @@
\regex_new:N \l__rpgicons_roll_syntax_die_regex
\cs_generate_variant:Nn \regex_set:Nn { Ne }
- \cs_new:Npn \rpgicons_roll_syntax_die_set:n #1 {
+ \cs_new_protected:Npn \rpgicons_roll_syntax_die_set:n #1 {
\regex_set:Ne \l__rpgicons_roll_syntax_die_regex { [ \clist_use:nn {#1} { } ] }
}
@@ -2541,15 +2541,15 @@
{ 20 } { twentyside }
{ 100 } { hundredside }
{ F } { fudge }
- }
+ }
{#1}
}
\seq_new:N \l__rpgicons_roll_syntax_seq
\tl_new:N \l__rpgicons_roll_syntax_part_tl
- \regex_new:N \l__rpgicons_roll_syntax_split_regex
- \regex_new:N \l__rpgicons_roll_syntax_plusminus_regex
- \regex_new:N \l__rpgicons_roll_syntax_times_regex
+ \regex_new:N \l__rpgicons_roll_syntax_split_regex
+ \regex_new:N \l__rpgicons_roll_syntax_plusminus_regex
+ \regex_new:N \l__rpgicons_roll_syntax_times_regex
\bool_if:NTF \l__rpgicons_unicode_mode_bool {
\regex_set:Nn \l__rpgicons_roll_syntax_split_regex { \s*([\+\-\x{2212}x\*\x{00D7}])\s* }
\regex_set:Nn \l__rpgicons_roll_syntax_plusminus_regex { \A([\+\-\x{2212}])\Z }
@@ -2559,19 +2559,19 @@
\regex_set:Nn \l__rpgicons_roll_syntax_plusminus_regex { \A([\+\-])\Z }
\regex_set:Nn \l__rpgicons_roll_syntax_times_regex { \A([x\*\x{00D7}])\Z }
}
- \regex_new:N \l__rpgicons_roll_syntax_dice_regex
- \cs_new:Npn \rpgicons_roll_syntax_parse:n #1 {
+ \regex_new:N \l__rpgicons_roll_syntax_dice_regex
+ \cs_new_protected:Npn \rpgicons_roll_syntax_parse:n #1 {
\regex_set:Nn \l__rpgicons_roll_syntax_dice_regex { \A(\d*)\ur{l__rpgicons_roll_syntax_die_regex}([F\d]+)\Z }
\regex_split:NnN \l__rpgicons_roll_syntax_split_regex {#1} \l__rpgicons_roll_syntax_seq
- \seq_map_inline:Nn \l__rpgicons_roll_syntax_seq {
+ \seq_map_inline:Nn \l__rpgicons_roll_syntax_seq {
\tl_set:Ne \l__rpgicons_roll_syntax_part_tl {##1}
\regex_replace_case_once:nNTF {
{ \l__rpgicons_roll_syntax_plusminus_regex } { \c{,} $\1$ \c{,} }
{ \l__rpgicons_roll_syntax_times_regex } { \c{,} $\c{times}$ \c{,} }
- { \l__rpgicons_roll_syntax_dice_regex }
+ { \l__rpgicons_roll_syntax_dice_regex }
{ \c{ rpgiconsdie } { \c{ rpgicons_roll_syntax_convert:n } { \2 } } { \1 } }
- } \l__rpgicons_roll_syntax_part_tl
- { \tl_use:N \l__rpgicons_roll_syntax_part_tl }
+ } \l__rpgicons_roll_syntax_part_tl
+ { \tl_use:N \l__rpgicons_roll_syntax_part_tl }
{ \tl_use:N \l__rpgicons_roll_syntax_part_tl }
}
}
@@ -2586,7 +2586,7 @@
}
\NewDocumentCommand{\rpgiconsroll}{ m }{
- \rpgicons_roll_syntax_parse:n {#1}
+ \rpgicons_roll_syntax_parse:n {#1}
}
\ExplSyntaxOff
diff --git a/Master/texmf-dist/tex/latex/rpgicons/rpgicons.sty b/Master/texmf-dist/tex/latex/rpgicons/rpgicons.sty
index 63a5fa2fc08..d9b4d189b1e 100644
--- a/Master/texmf-dist/tex/latex/rpgicons/rpgicons.sty
+++ b/Master/texmf-dist/tex/latex/rpgicons/rpgicons.sty
@@ -1,28 +1,28 @@
-% File: rpgicons.sty
-% Copyright 2024 Jasper Habicht (mail(at)jasperhabicht.de).
-%
+% File: rpgicons.sty
+% Copyright 2024-2025 Jasper Habicht (mail(at)jasperhabicht.de).
+%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
% available at http://www.latex-project.org/lppl/.
-%
+%
% This file is part of the `rpgicons' package (The Work in LPPL)
% and all files in that bundle must be distributed together.
-%
+%
% This work has the LPPL maintenance status `maintained'.
-%
-\ProvidesExplPackage {rpgicons} {2024-08-08} {1.8.4}
+%
+\ProvidesExplPackage {rpgicons} {2025-01-22} {1.8.6}
{RPG Icons Package}
\bool_new:N \l__rpgicons_use_legacy_variant_bool
\clist_new:N \l__rpgicons_forwarded_options_clist
-\keys_define:nn { rpgicons / select ~ variant } {
+\keys_define:nn { rpgicons / select ~ variant } {
l3 .bool_set:N = \l__rpgicons_use_legacy_variant_bool ,
l3 .default:n = { false } ,
pgf .bool_set:N = \l__rpgicons_use_legacy_variant_bool ,
pgf .default:n = { true } ,
pics .code:n = { \clist_put_right:Nn \l__rpgicons_forwarded_options_clist { pics } } ,
compat .code:n = { \clist_put_right:Nn \l__rpgicons_forwarded_options_clist { compat } } ,
- opacity .code:n = { \clist_put_right:Nn \l__rpgicons_forwarded_options_clist { opacity } }
+ opacity .code:n = { \clist_put_right:Nn \l__rpgicons_forwarded_options_clist { opacity } }
}
\ProcessKeyOptions [ rpgicons / select ~ variant ]
diff --git a/Master/texmf-dist/tex/latex/rub-kunstgeschichte/rub-kunstgeschichte.cls b/Master/texmf-dist/tex/latex/rub-kunstgeschichte/rub-kunstgeschichte.cls
index 55e34820747..cb5ded4be7f 100644
--- a/Master/texmf-dist/tex/latex/rub-kunstgeschichte/rub-kunstgeschichte.cls
+++ b/Master/texmf-dist/tex/latex/rub-kunstgeschichte/rub-kunstgeschichte.cls
@@ -30,7 +30,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesClass{rub-kunstgeschichte}
- [2024-09-06 v0.2.0 RUB Kunstgeschichte class]
+ [2024-12-11 v0.4.0 RUB Kunstgeschichte class]
%% Class options
\DeclareKeys[rubkgi]{
biblatex.store = \@rubkgi@biblatexOptions,
@@ -57,13 +57,14 @@
backend=biber,
singletitle=true,
autocite=footnote,
- autopunct=false
+ autopunct=true
}{biblatex}
-%% biblatex-dw package
+%% biblatex-arthistory-bonn package
\PassOptionsToPackage{
- style=authortitle-dw,
- firstfull=true,
- addyear=true
+ style=arthistory-bonn,
+ firstcitefull=true,
+ enddot=true,
+ namelinked=true
}{biblatex}
%% pass biblatex class options along
\PassOptionsToPackage{\@rubkgi@biblatexOptions}{biblatex}
@@ -82,7 +83,167 @@
\fi
%% Hyperref
\RequirePackage{hyperref}
-\hypersetup{hidelinks=true}
+\hypersetup{hidelinks}
+%% Translations
+\RequirePackage{translations}
+%% Other
+\RequirePackage{tabularx} % For fancy tables. Is used in title page.
+\RequirePackage{boxedminipage} % Used in title page.
+%% Macros
+\newcommand{\printbibliographies}[1][]{%
+ \SetKeys[rubkgi@printbibliographies]{#1}%
+ \addcontentsline{toc}{section}{%
+ \texorpdfstring{\@rubkgi@bibheading}{bibliography}%
+ }%
+ \printbibheading[%
+ heading = bibliography,%
+ title = {\@rubkgi@bibheading}%
+ ]
+ \printbibliography[%
+ keyword = source,%
+ heading = subbibliography,%
+ title = {\@rubkgi@bibheading@primary}%
+ ]
+ \printbibliography[%
+ notkeyword = source,%
+ heading = subbibliography,%
+ title = {\@rubkgi@bibheading@secondary}%
+ ]
+}
+\newcommand*{\@rubkgi@bibheading}{%
+ \GetTranslationWarn{Bibliography}
+}
+\newcommand*{\@rubkgi@bibheading@primary}{%
+ \GetTranslationWarn{Primary Bibliography}
+}
+\newcommand*{\@rubkgi@bibheading@secondary}{%
+ \GetTranslationWarn{Secondary Bibliography}
+}
+\DeclareKeys[rubkgi@printbibliographies]
+{
+ heading .store = \@rubkgi@bibheading,
+ heading-primary .store = \@rubkgi@bibheading@primary,
+ heading-secondary .store = \@rubkgi@bibheading@secondary
+}
+\renewcommand{\maketitle}[1][]{%
+ \SetKeys[rubkgi@titlepage]{#1}%
+ \@rubkgi@maketitle%
+}
+\newcommand{\@rubkgi@maketitle}{
+ \begin{titlepage}
+ % set page margins for the title page
+ \newgeometry{left=2.5cm,top=2.5cm,bottom=2cm,right=2.5cm}%
+ % define the width of the grade box
+ \def\@rubkgi@titlepage@gradebox@width{5.03cm}%
+ %
+ % create a group for the top part of the title page
+ {\raggedright%
+ % create a minipage for the top left part
+ \begin{minipage}[t]%
+ % calculate the width of the top left part
+ % based on the grade box width
+ {\dimexpr\textwidth%
+ -\@rubkgi@titlepage@gradebox@width%
+ -0.5cm\relax}%
+ \vspace{0pt}% somehow helps aligning at the top
+ \begin{tabularx}{\linewidth}{@{}lX}%
+ \multicolumn{2}{@{}l}{%
+ Ruhr-Universität Bochum%
+ }\\%
+ \multicolumn{2}{@{}l}{%
+ Fakultät für Geschichtswissenschaft%
+ }\\%
+ \multicolumn{2}{@{}l}{%
+ Kunstgeschichtliches Institut%
+ }\\%
+ \multicolumn{2}{@{}l}{%
+ \@rubkgi@titlepage@seminar@semester%
+ }\\%
+ Dozent:in: & \@rubkgi@titlepage@seminar@lecturer\\%
+ Seminartitel: & \@rubkgi@titlepage@seminar@name\\%
+ Studiengang: & \@rubkgi@titlepage@seminar@degree\\%
+ Modul: & \@rubkgi@titlepage@seminar@module\\%
+ Kreditpunkte: & \@rubkgi@titlepage@seminar@creditpoints\\%
+ \end{tabularx}%
+ \end{minipage}%
+ % align grade box on the right side by filling in the gap
+ \hfill%
+ % define the grade box as a boxedminipage
+ \begin{boxedminipage}[t][3.78cm][t]%
+ {\@rubkgi@titlepage@gradebox@width}%
+ % leave a little space and add the text inside
+ \vspace{1em}%
+ \hspace{1em}Note:%
+ \end{boxedminipage}%
+ }% top part ends here
+ %
+ \vfill% vertical space to fill
+ %
+ % create center part (title and author)
+ \begin{center}%
+ % add title relatively LARGE
+ {\LARGE \@title \par}%
+ \vskip 2em% add space between title and author
+ % add author slightly larger than normal text
+ {\large \@author \par}%
+ % end the center environment
+ % and switch back to normal paragraph text style
+ \end{center}\par%
+ %
+ \vfill% fill gap to put next part at bottom
+ %
+ % create bottom part
+ {\raggedright%
+ \begin{tabular}{@{}ll}%
+ Matrikelnr.: & \@rubkgi@titlepage@author@matricnum\\%
+ % Add email as a clickable link
+ Email: & \href{mailto:\@rubkgi@titlepage@author@email}%
+ {\@rubkgi@titlepage@author@email}\\%
+ Fachsemester: & \@rubkgi@titlepage@author@semester\\%
+ Abgabetermin: & \@date\\%
+ \end{tabular}
+ }%
+ \end{titlepage}%
+ \setcounter{page}{2}%
+ \restoregeometry%
+}
+\DeclareKeys[rubkgi@titlepage]
+{
+ email .store = \@rubkgi@titlepage@author@email,
+ matricnum .store = \@rubkgi@titlepage@author@matricnum,
+ author-semester .store = \@rubkgi@titlepage@author@semester,
+ seminar-semester .store = \@rubkgi@titlepage@seminar@semester,
+ seminar-lecturer .store = \@rubkgi@titlepage@seminar@lecturer,
+ seminar-name .store = \@rubkgi@titlepage@seminar@name,
+ seminar-degree .store = \@rubkgi@titlepage@seminar@degree,
+ seminar-module .store = \@rubkgi@titlepage@seminar@module,
+ seminar-cp .store = \@rubkgi@titlepage@seminar@creditpoints
+}
+\SetKeys[rubkgi@titlepage]
+{
+ email = {YOUR-EMAIL},
+ matricnum = {YOUR MATRICULATION NUMBER},
+ author-semester = {YOUR NUMBER OF SEMESTERS},
+ seminar-semester = {THE SEMESTER IN WHCIH THE SEMINAR IS HELD},
+ seminar-lecturer = {NAME OF SEMINAR LECTURER},
+ seminar-name = {NAME OF THE SEMINAR},
+ seminar-degree = {DEGREE SEMINAR IS TAKEN IN},
+ seminar-module = {MODULE SEMINAR IS TAKEN IN},
+ seminar-cp = {SEMINAR CP}
+}
+\newcommand{\configureTitlepage}[1]{%
+ \SetKeys[rubkgi@titlepage]{#1}%
+}
+%% Extend \appendix to disable section numbering
+\let\oldappendix\appendix%
+\renewcommand{\appendix}{%
+ \oldappendix%
+ \setcounter{secnumdepth}{0}%
+}
+\DeclareTranslation{english}{Primary Bibliography}{Primary sources}
+\DeclareTranslation{german}{Primary Bibliography}{Primärliteratur}
+\DeclareTranslation{english}{Secondary Bibliography}{Secondary literature}
+\DeclareTranslation{german}{Secondary Bibliography}{Sekundärliteratur}
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/runcode/runcode.sty b/Master/texmf-dist/tex/latex/runcode/runcode.sty
index 0e1f8014d3e..4d260e94794 100644
--- a/Master/texmf-dist/tex/latex/runcode/runcode.sty
+++ b/Master/texmf-dist/tex/latex/runcode/runcode.sty
@@ -4,7 +4,7 @@
%
% This package is based on an ongoing work by Haim Bar and HaiYing Wang, and comments and questions are welcome!
-\ProvidesPackage{runcode}[2024/01/12 runcode v2.3]
+\ProvidesPackage{runcode}[2025/01/17 runcode v2.4]
\def \langs {}
@@ -222,7 +222,7 @@
\fi
}
}{
- \textcolor{red}{\textbf{showCode: File #2 does not exist!}}
+ \textcolor{red}{\textbf{showCode: File $#2$ does not exist!}}
}
}
@@ -289,7 +289,7 @@
{\input{\tmpname}}}}
% if code execution disabled, and no cache:
{\begin{tcolorbox}[colback=red!5!white,colframe=red!75!black]
- \textbf{Output file \tmpname~ not found}. Check the file name (it may be that the file name was given with the suffix .tex. If so, remove it). If the file name is correct the problem may be because code execution is disabled and no cache is available. If so, force the code to run again (using the [run] option).
+ \textbf{Output file $\tmpname~$ not found}. Check the file name (it may be that the file name was given with the suffix .tex. If so, remove it). If the file name is correct the problem may be because code execution is disabled and no cache is available. If so, force the code to run again (using the [run] option).
\end{tcolorbox}}}
@@ -328,15 +328,15 @@
\immediate\closeout\outfile
\endlinechar=13
\ifnum\printcode=0
- \textcolor{red}{\textbf{Label #2 not found in #1}}
+ \textcolor{red}{\textbf{Label $#2$ not found in #1}}
\fi
- }{\textcolor{red}{\textbf{Source file #1 not found}}}
+ }{\textcolor{red}{\textbf{Source file $#1$ not found}}}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \showChunk prints a selected chunk from source code, using minted or listings for a pretty layout.
% The chunk is identified in the source code by two strings that define the beginning and end of the chunk.
-% The default beginning is label===<name> where <name> should be a unique user-defined chunk ID.
+% The default beginning is label===<name> where <name> should be a unique user-defined chunk ID. A label cannot include foreward slash (/)
% The default end marker is ===end
% In the code, these markers should appear after a comment character, so that the code will run.
% Arg #1 is the programming language,
@@ -346,10 +346,11 @@
\NewDocumentCommand{\showChunk}{m m m O{label===} O{===end}}{
\IfFileExists{#2}{
+ \immediate\write18{ad \generated/#2-#3.txt}
\writeChunk{#2}{#3}[#4][#5]
\IfFileExists{\generated/#2-#3.txt}{\showCode{#1}{\generated/#2-#3.txt}}
- {\textcolor{red}{\textbf{Label #3 not found in #2}}}
- }{\textcolor{red}{\textbf{Source file #2 not found}}}
+ {\textcolor{red}{\textbf{Label $#3$ not found in #2}}}
+ }{\textcolor{red}{\textbf{Source file $#2$ not found}}}
}
@@ -397,7 +398,7 @@
\fi
\end{tcolorbox}}
{\unskip{\input{\tmpname.tex}}\unskip}}
- {\textcolor{red}{\textbf{Output file \tmpname~ not found}}}}
+ {\textcolor{red}{\textbf{Output file $\tmpname~$ not found}}}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Extended and language-specific commands:
@@ -551,7 +552,7 @@
}
{
\immediate\write18{cat /dev/null > \tmpname}
- \textcolor{red}{\textbf{runPythonBatch: File #1 does not exist!}}
+ \textcolor{red}{\textbf{runPythonBatch: File $#1$ does not exist!}}
}
}
diff --git a/Master/texmf-dist/tex/latex/sankey/sankey-doc-preamble.sty b/Master/texmf-dist/tex/latex/sankey/sankey-doc-preamble.sty
index b48fa927ffc..40f857c20f2 100644
--- a/Master/texmf-dist/tex/latex/sankey/sankey-doc-preamble.sty
+++ b/Master/texmf-dist/tex/latex/sankey/sankey-doc-preamble.sty
@@ -3,9 +3,10 @@
\usepackage{cmap}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
+\usepackage{inconsolata}
\usepackage[final,protrusion=true,expansion=true]{microtype}
\usepackage{xcolor}
-\PassOptionsToPackage{final,colorlinks,linkcolor=red!60!orange!85!black}{hyperref}
+\PassOptionsToPackage{final,colorlinks,linkcolor=cyan!25!blue!75!black}{hyperref}
\usepackage{dtxdescribe}
\usepackage[numbered]{hypdoc}
\usepackage{fancyvrb}
@@ -170,17 +171,17 @@
% \vspace{.25\baselineskip plus .25\baselineskip minus 0mm}
\parfillskip 0pt plus 1fil%
\leavevmode%
- \DescribeKey{\key}%
+ \expandafter\DescribeKey\expandafter{\key}%
\ttfamily%
%\hspace*{-1cm}%
\textcolor{red!75!black}{\texttt{\docprefix{\keypath/}\key}}%
\ifdefempty{\val}{}{=\val}%
\hfill%
- \ifdefempty{\default}{\null}{(default:\,\constant{\default})}%
- \ifdefempty{\initially}{\null}{(initially:\,\constant{\initially})}%
+ \ifdefempty{\default}{\null}{{\rmfamily (default:\,\constant{\default})}}%
+ \ifdefempty{\initially}{\null}{{\rmfamily (initially:\,\constant{\initially})}}%
\mynobreakpar%
\endgroup%
- \parskip=.5\baselineskip plus .25\baselineskip minus .25\baselineskip
+ \parskip=.5\baselineskip plus .25\baselineskip minus .3\baselineskip
\parfillskip=30pt plus 1fil
\itemize[topsep=0pt,partopsep=0pt,itemsep=0pt]\item[]
}{%
@@ -236,33 +237,3 @@
\footnotesize
}
-\renewcommand*{\DescribeMacro}[2][]{%
- \@bsphack%
- \@ifundefined{@captype}{% not float?
- \leavevmode%
- \marginpar{%
- \hbadness=10000%
- \hfuzz=5em%
- \raggedleft%
- \ifblank{#1}{}{{\scriptsize\textsf{[#1]}} }% class
- \MacroFont\cmd{#2}% name
- }% marginpar
- }{}% not float?
- \begingroup%
- \DTXD@origwrindex{%
- \DTXD@macroname{#2}\actualchar\DTXD@verbatimcmd{#2}% name
- \ifblank{#1}{}{\levelchar[#1]}% class
- \encapchar usage}%
- \ifblank{#1}%
- {}% no class
- {% class given
- \begingroup%
- \DTXD@origwrindex{%
- #1\actualchar[#1]:\levelchar%
- \DTXD@macroname{#2}\actualchar\DTXD@verbatimcmd{#2}%
- \encapchar usage}%
- }% class given
- \@esphack%
- \ignorespaces%
-}
-
diff --git a/Master/texmf-dist/tex/latex/sankey/sankey.sty b/Master/texmf-dist/tex/latex/sankey/sankey.sty
index 502a13be5e3..45a5133886b 100644
--- a/Master/texmf-dist/tex/latex/sankey/sankey.sty
+++ b/Master/texmf-dist/tex/latex/sankey/sankey.sty
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 2016, 2021 by Paul Gaborit
+%% Copyright (C) 2016-2022 by Paul Gaborit
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License, either version 1.3 of this license or (at
@@ -31,7 +31,7 @@
%% sankey-example-energy.tex
%%
\NeedsTeXFormat{LaTeX2e}[2015/10/01]
-\ProvidesPackage{sankey}[2022/02/04 v3.0.1 to draw Sankey diagrams]
+\ProvidesPackage{sankey}[2025/01/10 v3.0.2 to draw Sankey diagrams]
\RequirePackage{xparse}
\RequirePackage{etoolbox}
\RequirePackage{xfp}
@@ -258,154 +258,153 @@
anchor=#3,
},
}
-\NewDocumentEnvironment{sankeydiagram}{O{}}{
- \def\snk@getpos##1##2{%
- \tikz@scan@one@point\pgfutil@firstofone(##2)\relax%
- \edef##1{\the\pgf@x,\the\pgf@y}%
- }
- \def\snk@modulo##1##2{\fpeval{##1-(floor((##1)/(##2),0)*##2)}}
- \def\snk@normalize@angle##1{%
- \fpeval{\snk@modulo{(##1)+180}{360}-180}%
- }
- \def\snk@show@debug##1{% node name
- \iftoggle{sankey debug}{
- \begingroup
- \edef\name{##1}
- \edef\qty{\sankeygetnodeqty{\name}}
- \edef\orient{\sankeygetnodeorient{\name}}
- \begin{pgfonlayer}{sankeydebug}
- \path[/sankey/debug line] (\name.left) -- (\name.right);
- \pgfmathsetmacro{\snk@len}{\sankeyqtytolen{\qty}/3}
- \path[/sankey/debug normal] (\name.center)
- -- ($(\name.center)!\snk@len pt!90:(\name.right)$)
- node[/sankey/debug label,rotate=\orient+90+\snk@rotate,anchor=north];
- \end{pgfonlayer}
- \endgroup
- }{}
- }
- \def\snk@makeforkednode{
- \begingroup
- \ifdefempty{\snk@listofforks}{
- \ifdefempty{\snk@forkanchor}{}{
- \PackageWarning{sankey}%
- {Can't use 'fork anchor' key without 'forked' key}
- }
- }{
- \def\snk@tot{0}
- \def\snk@added@values{}
- \sankeyset{
- @add forked node/.code args={####1/####2}{
- \coordinate (####2) at ($(\name.left)%
- !\fpeval{(\snk@tot+.5*(####1))/\qty}%
- !(\name.right)$);
- \edef\snk@orient{\orient}
- \sankeynode[debug=false]
- {name=####2,quantity=####1,at=####2,angle=\snk@orient}
- \edef\snk@tot{\fpeval{\snk@tot+####1}}
- \edef\snk@added@values{\snk@added@values+####1}
- },
- @add forked node/.list/.expand once=\snk@listofforks,
- }
- \edef\snk@diff{\fpeval{abs(\qty-\snk@tot)}}
- \ifnumequal{\snk@diff}{0}{}{
- \PackageWarning{sankey}%
- {^^J*** Warning: bad sankey fork: %
- \qty\space!=\space\snk@added@values(=\snk@tot)%
- ^^J\snk@listofforks}
- }
- \ifdefempty{\snk@forkanchor}{
- \edef\snk@forkanchor{\name.\snk@anchor}
- }{}
- \snk@getpos\snk@c{$(\snk@forkanchor) - (\pos)$}
- \sankeynode{as=\name,at={$(\name) - (\snk@c)$}}
- \foreach \snk@subnodeqty/\snk@subnodename in \snk@listofforks {
- \sankeynode{as=\snk@subnodename,at={$(\snk@subnodename) - (\snk@c)$}}
- }
- }
- \endgroup
- }
- \def\snk@makenode{
+\def\snk@getpos#1#2{%
+ \tikz@scan@one@point\pgfutil@firstofone(#2)\relax%
+ \edef#1{\the\pgf@x,\the\pgf@y}%
+}
+\def\snk@modulo#1#2{\fpeval{#1-(floor((#1)/(#2),0)*#2)}}
+\def\snk@normalize@angle#1{%
+ \fpeval{\snk@modulo{(#1)+180}{360}-180}%
+}
+\def\snk@show@debug#1{% node name
+ \iftoggle{sankey debug}{
\begingroup
- \snk@setnodeqty{\name}{\qty}
- \edef\orient{\snk@normalize@angle{\orient}}
- \snk@setnodeorient{\name}{\orient}
- \ifundef{\snk@anchor}{\def\snk@anchor{center}}{}
- \node[/sankey/@sankey node={\name}{\pos}{\snk@anchor}];
+ \edef\name{#1}
+ \edef\qty{\sankeygetnodeqty{\name}}
+ \edef\orient{\sankeygetnodeorient{\name}}
+ \begin{pgfonlayer}{sankeydebug}
+ \path[/sankey/debug line] (\name.left) -- (\name.right);
+ \pgfmathsetmacro{\snk@len}{\sankeyqtytolen{\qty}/3}
+ \path[/sankey/debug normal] (\name.center)
+ -- ($(\name.center)!\snk@len pt!90:(\name.right)$)
+ node[/sankey/debug label,rotate=\orient+90+\snk@rotate,anchor=north];
+ \end{pgfonlayer}
\endgroup
- }
- \def\snk@filldrawstart{
- \begin{scope}[shift={(\name)},rotate=\orient]
- \path[/sankey/fill] \snk@getstartfill{\snk@startstyle};
- \path[/sankey/draw] \snk@getstartdraw{\snk@startstyle};
- \end{scope}
- }
- \def\snk@filldrawend{
- \begin{scope}[shift={(\name)},rotate=\sankeygetnodeorient{\name}]
- \path[/sankey/fill] \snk@getendfill{\snk@endstyle};
- \path[/sankey/draw] \snk@getenddraw{\snk@endstyle};
- \end{scope}
- }
- \def\snk@checkquantities##1##2##3{
- \begingroup
- \edef\snk@qtyi{\sankeygetnodeqty{##1}}
- \edef\snk@qtyii{\sankeygetnodeqty{##2}}
- \ifdefstrequal{\snk@qtyi}{\snk@qtyii}{}{
- \PackageError{sankey}%
- {^^J*** \string##3: quantities differ between %
- ##1 (\snk@qtyi) and ##2 (\snk@qtyii)%
- ^^J}%
- {The quantities of the two Sankey nodes must be equal.}
+ }{}
+}
+\def\snk@makeforkednode{
+ \begingroup
+ \ifdefempty{\snk@listofforks}{
+ \ifdefempty{\snk@forkanchor}{}{
+ \PackageWarning{sankey}%
+ {Can't use 'fork anchor' key without 'forked' key}
}
- \endgroup
- }
- \NewDocumentCommand\sankeydubins{O{}mm}{% options, sn, en
- \snk@errorifnotdefined{##2}
- \snk@errorifnotdefined{##3}
- \snk@checkquantities{##2}{##3}{\sankeydubins}
- \begingroup
- \sankeyset{##1}
- \pgfmathsetmacro\qty{\sankeygetnodeqty{##2}}
- \dubinspathset{
- sankey/.style={
- start point=##2.center,start angle=\sankeygetnodeorient{##2},
- end point=##3.center,end angle=\sankeygetnodeorient{##3},
- minimum radius=\snk@minradius + .5 * \sankeyqtytolen{\qty} pt,
+ }{
+ \def\snk@tot{0}
+ \def\snk@added@values{}
+ \sankeyset{
+ @add forked node/.code args={##1/##2}{
+ \coordinate (##2) at ($(\name.left)%
+ !\fpeval{(\snk@tot+.5*(##1))/\qty}%
+ !(\name.right)$);
+ \edef\snk@orient{\orient}
+ \sankeynode[debug=false]
+ {name=##2,quantity=##1,at=##2,angle=\snk@orient}
+ \edef\snk@tot{\fpeval{\snk@tot+##1}}
+ \edef\snk@added@values{\snk@added@values+##1}
},
+ @add forked node/.list/.expand once=\snk@listofforks,
}
- \dubinspathcalc{sankey,store=sankey}
- \dubinspathset{
- left border/.style={
- sankey, use store=sankey,
- left and right minimum radii={\snk@minradius}
- and {\snk@minradius + \sankeyqtytolen{\qty} pt},
- },
- right border/.style={
- sankey, use store=sankey,
- left and right minimum radii=
- {\snk@minradius + \sankeyqtytolen{\qty} pt}
- and {\snk@minradius},
- },
+ \edef\snk@diff{\fpeval{abs(\qty-\snk@tot)}}
+ \ifnumequal{\snk@diff}{0}{}{
+ \PackageWarning{sankey}%
+ {^^J*** Warning: bad sankey fork: %
+ \qty\space!=\space\snk@added@values(=\snk@tot)%
+ ^^J\snk@listofforks}
+ }
+ \ifdefempty{\snk@forkanchor}{
+ \edef\snk@forkanchor{\name.\snk@anchor}
+ }{}
+ \snk@getpos\snk@c{$(\snk@forkanchor) - (\pos)$}
+ \sankeynode{as=\name,at={$(\name) - (\snk@c)$}}
+ \foreach \snk@subnodeqty/\snk@subnodename in \snk@listofforks {
+ \sankeynode{as=\snk@subnodename,at={$(\snk@subnodename) - (\snk@c)$}}
}
- % fill the region
- \path[/sankey/fill] (##2.left) \dubinspath{left border}
- -- (##3.left) -- (##3.right) \dubinspath{right border,reverse}
- -- (##2.right) -- cycle;
- % draw left and right borders
- \path[/sankey/draw] (##2.left) \dubinspath{left border}
- (##2.right) \dubinspath{right border};
- \endgroup
}
- \NewDocumentCommand\sankeyoutin{O{}mm}{% options, sn, en
- \snk@errorifnotdefined{##2}
- \snk@errorifnotdefined{##3}
- \snk@checkquantities{##2}{##3}{\sankeyoutin}
- \begingroup
- \sankeyset{##1}
- \edef\qty{\sankeygetnodeqty{##2}}
- \pgfmathsetmacro\snk@len{\sankeyqtytolen{\qty}/2}
- \edef\snk@step{\fpeval{1/\snk@stepoutin}}
- \edef\snk@laststep{\inteval{\snk@stepoutin-1}}
- \path[overlay,decorate,decoration={
+ \endgroup
+}
+\def\snk@makenode{
+ \begingroup
+ \snk@setnodeqty{\name}{\qty}
+ \edef\orient{\snk@normalize@angle{\orient}}
+ \snk@setnodeorient{\name}{\orient}
+ \ifundef{\snk@anchor}{\def\snk@anchor{center}}{}
+ \node[/sankey/@sankey node={\name}{\pos}{\snk@anchor}];
+ \endgroup
+}
+\def\snk@filldrawstart{
+ \begin{scope}[shift={(\name)},rotate=\orient]
+ \path[/sankey/fill] \snk@getstartfill{\snk@startstyle};
+ \path[/sankey/draw] \snk@getstartdraw{\snk@startstyle};
+ \end{scope}
+}
+\def\snk@filldrawend{
+ \begin{scope}[shift={(\name)},rotate=\sankeygetnodeorient{\name}]
+ \path[/sankey/fill] \snk@getendfill{\snk@endstyle};
+ \path[/sankey/draw] \snk@getenddraw{\snk@endstyle};
+ \end{scope}
+}
+\def\snk@checkquantities#1#2#3{
+ \begingroup
+ \edef\snk@qtyi{\sankeygetnodeqty{#1}}
+ \edef\snk@qtyii{\sankeygetnodeqty{#2}}
+ \ifdefstrequal{\snk@qtyi}{\snk@qtyii}{}{
+ \PackageError{sankey}%
+ {^^J*** \string#3: quantities differ between %
+ #1 (\snk@qtyi) and #2 (\snk@qtyii)%
+ ^^J}%
+ {The quantities of the two Sankey nodes must be equal.}
+ }
+ \endgroup
+}
+\NewDocumentCommand\snk@sankeydubins{O{}mm}{% options, sn, en
+ \snk@errorifnotdefined{#2}
+ \snk@errorifnotdefined{#3}
+ \snk@checkquantities{#2}{#3}{\sankeydubins}
+ \begingroup
+ \sankeyset{#1}
+ \pgfmathsetmacro\qty{\sankeygetnodeqty{#2}}
+ \dubinspathset{
+ sankey/.style={
+ start point=#2.center,start angle=\sankeygetnodeorient{#2},
+ end point=#3.center,end angle=\sankeygetnodeorient{#3},
+ minimum radius=\snk@minradius + .5 * \sankeyqtytolen{\qty} pt,
+ },
+ }
+ \dubinspathcalc{sankey,store=sankey}
+ \dubinspathset{
+ left border/.style={
+ sankey, use store=sankey,
+ left and right minimum radii={\snk@minradius}
+ and {\snk@minradius + \sankeyqtytolen{\qty} pt},
+ },
+ right border/.style={
+ sankey, use store=sankey,
+ left and right minimum radii=
+ {\snk@minradius + \sankeyqtytolen{\qty} pt}
+ and {\snk@minradius},
+ },
+ }
+ % fill the region
+ \path[/sankey/fill] (#2.left) \dubinspath{left border}
+ -- (#3.left) -- (#3.right) \dubinspath{right border,reverse}
+ -- (#2.right) -- cycle;
+ % draw left and right borders
+ \path[/sankey/draw] (#2.left) \dubinspath{left border}
+ (#2.right) \dubinspath{right border};
+ \endgroup
+}
+\NewDocumentCommand\snk@sankeyoutin{O{}mm}{% options, sn, en
+ \snk@errorifnotdefined{#2}
+ \snk@errorifnotdefined{#3}
+ \snk@checkquantities{#2}{#3}{\sankeyoutin}
+ \begingroup
+ \sankeyset{#1}
+ \edef\qty{\sankeygetnodeqty{#2}}
+ \pgfmathsetmacro\snk@len{\sankeyqtytolen{\qty}/2}
+ \edef\snk@step{\fpeval{1/\snk@stepoutin}}
+ \edef\snk@laststep{\inteval{\snk@stepoutin-1}}
+ \path[overlay,decorate,decoration={
markings,
mark=between positions \snk@step and {\fpeval{1-.5*\snk@step}}
step \snk@step with {
@@ -420,348 +419,355 @@
;
}
}]
- (##2.center)
- to[out=\sankeygetnodeorient{##2},in=\sankeygetnodeorient{##3}+180]
- (##3.center);
- \foreach \snk@ptnum in {1,...,\snk@laststep}{
- \edef\snk@outinmidptname{snk@outinmidpt-\snk@ptnum}
- \dbp@anglebetween\snk@outinmidptangle%
- {\snk@outinmidptname-r}{\snk@outinmidptname-l}
- \sankeynode[debug=false]{%
- name=\snk@outinmidptname,
- quantity=\qty,
- angle=\snk@outinmidptangle-90,%
- at=\snk@outinmidptname%
- }
- }
- \sankeynode[debug=false]{%
- name={snk@outinmidpt-0},
- quantity=\sankeygetnodeqty{##2},
- angle=\sankeygetnodeorient{##2},%
- at={##2}%
- }
+ (#2.center)
+ to[out=\sankeygetnodeorient{#2},in=\sankeygetnodeorient{#3}+180]
+ (#3.center);
+ \foreach \snk@ptnum in {1,...,\snk@laststep}{
+ \edef\snk@outinmidptname{snk@outinmidpt-\snk@ptnum}
+ \dbp@anglebetween\snk@outinmidptangle%
+ {\snk@outinmidptname-r}{\snk@outinmidptname-l}
\sankeynode[debug=false]{%
- name={snk@outinmidpt-\snk@stepoutin},
- quantity={\sankeygetnodeqty{##3}},
- angle={\sankeygetnodeorient{##3}},%
- at={##3}%
- }
- \path[/sankey/fill,looseness=1]
- (snk@outinmidpt-0.left)
- \foreach \snk@curpt
- [remember=\snk@curpt as \snk@prevpt (initially 0)]
- in {1,...,\snk@stepoutin}{
- to[out=\sankeygetnodeorient{snk@outinmidpt-\snk@prevpt},
- in=\sankeygetnodeorient{snk@outinmidpt-\snk@curpt}+180]
- (snk@outinmidpt-\snk@curpt.left)
- }
- --
- (snk@outinmidpt-\snk@stepoutin.right)
- \foreach \snk@curpt
- [remember=\snk@curpt as \snk@prevpt (initially \snk@stepoutin)]
- in {\snk@laststep,...,0}{
- to[out=\sankeygetnodeorient{snk@outinmidpt-\snk@prevpt}+180,
- in=\sankeygetnodeorient{snk@outinmidpt-\snk@curpt}]
- (snk@outinmidpt-\snk@curpt.right)
- }
- -- cycle;
- \path[/sankey/draw,looseness=1]
- (snk@outinmidpt-0.left)
- \foreach \snk@curpt
- [remember=\snk@curpt as \snk@prevpt (initially 0)]
- in {1,...,\snk@stepoutin}{
- to[out=\sankeygetnodeorient{snk@outinmidpt-\snk@prevpt},
- in=\sankeygetnodeorient{snk@outinmidpt-\snk@curpt}+180]
- (snk@outinmidpt-\snk@curpt.left)
+ name=\snk@outinmidptname,
+ quantity=\qty,
+ angle=\snk@outinmidptangle-90,%
+ at=\snk@outinmidptname%
}
- (snk@outinmidpt-\snk@stepoutin.right)
- \foreach \snk@curpt
- [remember=\snk@curpt as \snk@prevpt (initially \snk@stepoutin)]
- in {\snk@laststep,...,0}{
- to[out=\sankeygetnodeorient{snk@outinmidpt-\snk@prevpt}+180,
- in=\sankeygetnodeorient{snk@outinmidpt-\snk@curpt}]
- (snk@outinmidpt-\snk@curpt.right)
- };
- \endgroup
- }
- \NewDocumentCommand\sankeynodealias{mm}{%name, alias
- \snk@errorifnotdefined{##1}
- \path[late options={name=##1,alias=##2}];
- \snk@setnodeqty{##2}{\sankeygetnodeqty{##1}}
- \snk@setnodeorient{##2}{\sankeygetnodeorient{##1}}
}
- \NewDocumentCommand\sankeynode{O{}m}{% options, node parameters
- \begingroup
- \sankeyset{##1}
- \sankeyset{node parameters,@initial parameters,/sankey/every node,##2}
- \snk@makenode{}
- \snk@makeforkednode{}
- \iftoggle{sankey node start}{\snk@filldrawstart}{}
- \iftoggle{sankey node end}{\snk@filldrawend}{}
- \snk@show@debug{\name}
- \endgroup
+ \sankeynode[debug=false]{%
+ name={snk@outinmidpt-0},
+ quantity=\sankeygetnodeqty{#2},
+ angle=\sankeygetnodeorient{#2},%
+ at={#2}%
}
- \NewDocumentCommand\sankeystart{O{}m}{% options, name
- \snk@errorifnotdefined{##2}
- \begingroup
- \sankeyset{##1}
- \edef\name{##2}
- \edef\orient{\sankeygetnodeorient{##2}}
- \edef\qty{\sankeygetnodeqty{##2}}
- \snk@filldrawstart
- \endgroup
+ \sankeynode[debug=false]{%
+ name={snk@outinmidpt-\snk@stepoutin},
+ quantity={\sankeygetnodeqty{#3}},
+ angle={\sankeygetnodeorient{#3}},%
+ at={#3}%
}
- \NewDocumentCommand\sankeynodestart{O{}m}{% option, node parameters
- \sankeynode[##1]{start,##2}
+ \path[/sankey/fill,looseness=1]
+ (snk@outinmidpt-0.left)
+ \foreach \snk@curpt
+ [remember=\snk@curpt as \snk@prevpt (initially 0)]
+ in {1,...,\snk@stepoutin}{
+ to[out=\sankeygetnodeorient{snk@outinmidpt-\snk@prevpt},
+ in=\sankeygetnodeorient{snk@outinmidpt-\snk@curpt}+180]
+ (snk@outinmidpt-\snk@curpt.left)
}
- \NewDocumentCommand\sankeyend{O{}m}{%options, name
- \snk@errorifnotdefined{##2}
- \begingroup
- \sankeyset{##1}
- \edef\name{##2}
- \edef\orient{\sankeygetnodeorient{##2}}
- \edef\qty{\sankeygetnodeqty{##2}}
- \snk@filldrawend
- \endgroup
+ --
+ (snk@outinmidpt-\snk@stepoutin.right)
+ \foreach \snk@curpt
+ [remember=\snk@curpt as \snk@prevpt (initially \snk@stepoutin)]
+ in {\snk@laststep,...,0}{
+ to[out=\sankeygetnodeorient{snk@outinmidpt-\snk@prevpt}+180,
+ in=\sankeygetnodeorient{snk@outinmidpt-\snk@curpt}]
+ (snk@outinmidpt-\snk@curpt.right)
}
- \NewDocumentCommand\sankeynodeend{O{}m}{% options, node parameters
- \sankeynode[##1]{end,##2}
+ -- cycle;
+ \path[/sankey/draw,looseness=1]
+ (snk@outinmidpt-0.left)
+ \foreach \snk@curpt
+ [remember=\snk@curpt as \snk@prevpt (initially 0)]
+ in {1,...,\snk@stepoutin}{
+ to[out=\sankeygetnodeorient{snk@outinmidpt-\snk@prevpt},
+ in=\sankeygetnodeorient{snk@outinmidpt-\snk@curpt}+180]
+ (snk@outinmidpt-\snk@curpt.left)
}
- \NewDocumentCommand\sankeyadvance{sO{}mm}{%
- %params: *(reverse), options, name, distance
- \snk@errorifnotdefined{##3}
- \begingroup
- \sankeyset{##2}
- \edef\name{##3}
- \edef\snk@oldname{##3-old}
- \sankeynodealias{\name}{\snk@oldname}
- \IfBooleanTF{##1}{
- % move backward
- \sankeynode{
- at={$(\snk@oldname.center)!##4!90:(\snk@oldname.left)$},
- angle=\sankeygetnodeorient{\snk@oldname},
- quantity=\sankeygetnodeqty{\snk@oldname},
- name=\name,
- }
- \path[/sankey/fill]
- (\name.left) -- (\snk@oldname.left)
- -- (\snk@oldname.right) -- (\name.right) -- cycle;
- \path[/sankey/draw]
- (\name.left) -- (\snk@oldname.left)
- (\snk@oldname.right) -- (\name.right);
- }{
- % move forward
- \sankeynode{
- at={$(\snk@oldname.center)!##4!-90:(\snk@oldname.left)$},
- angle=\sankeygetnodeorient{\snk@oldname},
- quantity=\sankeygetnodeqty{\snk@oldname},
- name=\name,
- }
- \path[/sankey/fill]
- (\snk@oldname.left) -- (\name.left)
- -- (\name.right) -- (\snk@oldname.right) -- cycle;
- \path[/sankey/draw]
- (\snk@oldname.left) -- (\name.left)
- (\name.right) -- (\snk@oldname.right);
+ (snk@outinmidpt-\snk@stepoutin.right)
+ \foreach \snk@curpt
+ [remember=\snk@curpt as \snk@prevpt (initially \snk@stepoutin)]
+ in {\snk@laststep,...,0}{
+ to[out=\sankeygetnodeorient{snk@outinmidpt-\snk@prevpt}+180,
+ in=\sankeygetnodeorient{snk@outinmidpt-\snk@curpt}]
+ (snk@outinmidpt-\snk@curpt.right)
+ };
+ \endgroup
+}
+\NewDocumentCommand\snk@sankeynodealias{mm}{%name, alias
+ \snk@errorifnotdefined{#1}
+ \path[late options={name=#1,alias=#2}];
+ \snk@setnodeqty{#2}{\sankeygetnodeqty{#1}}
+ \snk@setnodeorient{#2}{\sankeygetnodeorient{#1}}
+}
+\NewDocumentCommand\snk@sankeynode{O{}m}{% options, node parameters
+ \begingroup
+ \sankeyset{#1}
+ \sankeyset{node parameters,@initial parameters,/sankey/every node,#2}
+ \snk@makenode{}
+ \snk@makeforkednode{}
+ \iftoggle{sankey node start}{\snk@filldrawstart}{}
+ \iftoggle{sankey node end}{\snk@filldrawend}{}
+ \snk@show@debug{\name}
+ \endgroup
+}
+\NewDocumentCommand\snk@sankeystart{O{}m}{% options, name
+ \snk@errorifnotdefined{#2}
+ \begingroup
+ \sankeyset{#1}
+ \edef\name{#2}
+ \edef\orient{\sankeygetnodeorient{#2}}
+ \edef\qty{\sankeygetnodeqty{#2}}
+ \snk@filldrawstart
+ \endgroup
+}
+\NewDocumentCommand\snk@sankeynodestart{O{}m}{% option, node parameters
+ \sankeynode[#1]{start,#2}
+}
+\NewDocumentCommand\snk@sankeyend{O{}m}{%options, name
+ \snk@errorifnotdefined{#2}
+ \begingroup
+ \sankeyset{#1}
+ \edef\name{#2}
+ \edef\orient{\sankeygetnodeorient{#2}}
+ \edef\qty{\sankeygetnodeqty{#2}}
+ \snk@filldrawend
+ \endgroup
+}
+\NewDocumentCommand\snk@sankeynodeend{O{}m}{% options, node parameters
+ \sankeynode[#1]{end,#2}
+}
+\def\snk@init@move#1#2{% params: options, name
+ \sankeyset{#1}
+ \edef\name{#2}
+ \edef\snk@oldname{#2-old}
+ \sankeynodealias{\name}{\snk@oldname}
+ \edef\qty{\sankeygetnodeqty{\name}}
+}
+\NewDocumentCommand\snk@sankeyadvance{sO{}mm}{%
+ % params: *(reverse), options, name, distance
+ \snk@errorifnotdefined{#3}
+ \begingroup
+ \snk@init@move{#2}{#3}
+ \IfBooleanTF{#1}{
+ % move backward
+ \sankeynode{
+ at={$(\snk@oldname.center)!#4!90:(\snk@oldname.left)$},
+ angle=\sankeygetnodeorient{\snk@oldname},
+ quantity=\sankeygetnodeqty{\snk@oldname},
+ name=\name,
}
- \snk@show@debug{\name}
- \endgroup
- }
- \NewDocumentCommand\sankeyturnright{sO{}mm}{
- % *(reverse), options, name, angle
- \snk@errorifnotdefined{##3}
- \begingroup
- \IfBooleanTF{##1}
- {\edef\snk@angle{\fpeval{-1*##4}}}
- {\edef\snk@angle{\fpeval{1*##4}}}
- \edef\snk@anglesign{\fpeval{sign(\snk@angle)}}
- \ifnumgreater{\snk@anglesign}{-1}{
- \sankeyset{##2}
- \edef\name{##3}
- \edef\snk@oldname{##3-old}
- \sankeynodealias{\name}{\snk@oldname}
- \edef\qty{\sankeygetnodeqty{\name}}
- \edef\orient{\snk@normalize@angle{\sankeygetnodeorient{\name}-\snk@angle}}
- \snk@getpos\snk@c{$(\name.right)!-\snk@minradius!(\name.left)$}
- \snk@getpos\pos{$(\snk@c)!1!-\snk@angle:(\name.center)$}
- \snk@makenode{}
- % fill the region
- \path[/sankey/fill] let
- \p1=(\snk@oldname.left),\p2=(\snk@oldname.right),
- \p3=(\name.left),\p4=(\name.right),
- \n1={\sankeyqtytolen{\qty}},
- \n{maxr}={\snk@minradius+\n1},
- \n{minr}={\snk@minradius}
- in
- (\p1) arc(\orient+\snk@angle+90:\orient+90:\n{maxr}) -- (\p3) --
- (\p4) arc(\orient+90:\orient+\snk@angle+90:\n{minr}) -- (\p2) -- cycle;
- % draw left and right borders
- \path[/sankey/draw] let
- \p1=(\snk@oldname.left),\p2=(\snk@oldname.right),
- \p3=(\name.left),\p4=(\name.right),
- \n1={\sankeyqtytolen{\qty}},
- \n{maxr}={\snk@minradius+\n1},
- \n{minr}={\snk@minradius}
- in
- (\p1) arc(\orient+\snk@angle+90:\orient+90:\n{maxr})
- (\p4) arc(\orient+90:\orient+\snk@angle+90:\n{minr});
- \snk@show@debug{\name}
- }{
- \sankeyturnrightbackward[##2]{##3}{-1*\snk@angle}
+ \path[/sankey/fill]
+ (\name.left) -- (\snk@oldname.left)
+ -- (\snk@oldname.right) -- (\name.right) -- cycle;
+ \path[/sankey/draw]
+ (\name.left) -- (\snk@oldname.left)
+ (\snk@oldname.right) -- (\name.right);
+ }{
+ % move forward
+ \sankeynode{
+ at={$(\snk@oldname.center)!#4!-90:(\snk@oldname.left)$},
+ angle=\sankeygetnodeorient{\snk@oldname},
+ quantity=\sankeygetnodeqty{\snk@oldname},
+ name=\name,
}
- \endgroup
+ \path[/sankey/fill]
+ (\snk@oldname.left) -- (\name.left)
+ -- (\name.right) -- (\snk@oldname.right) -- cycle;
+ \path[/sankey/draw]
+ (\snk@oldname.left) -- (\name.left)
+ (\name.right) -- (\snk@oldname.right);
}
- \NewDocumentCommand\sankeyturnrightbackward{sO{}mm}{
- % *(reverse), options, name, angle
- \snk@errorifnotdefined{##3}
- \begingroup
- \IfBooleanTF{##1}
- {\edef\snk@angle{\fpeval{-1*##4}}}
- {\edef\snk@angle{\fpeval{1*##4}}}
- \edef\snk@anglesign{\fpeval{sign(\snk@angle)}}
- \ifnumgreater{\snk@anglesign}{-1}{
- \sankeyset{##2}
- \edef\name{##3}
- \edef\snk@oldname{##3-old}
- \sankeynodealias{\name}{\snk@oldname}
- \edef\qty{\sankeygetnodeqty{\name}}
- \edef\orient{\snk@normalize@angle{\sankeygetnodeorient{\name}+\snk@angle}}
- \snk@getpos\snk@c{$(\name.right)!-\snk@minradius!(\name.left)$}
- \snk@getpos\pos{$(\snk@c)!1!\snk@angle:(\name.center)$}
- \snk@makenode{}
- % fill the region
- \path[/sankey/fill] let
- \p1=(\name.left),\p2=(\name.right),
- \p3=(\snk@oldname.left),\p4=(\snk@oldname.right),
- \n1={\sankeyqtytolen{\qty}},
- \n{maxr}={\snk@minradius+\n1}, \n{minr}={\snk@minradius}
- in
- (\p1) arc(\orient+90:\orient-\snk@angle+90:\n{maxr}) -- (\p3) --
- (\p4) arc(\orient-\snk@angle+90:\orient+90:\n{minr}) -- (\p2) -- cycle;
- % draw left and right borders
- \path[/sankey/draw] let
- \p1=(\name.left),\p2=(\name.right),
- \p3=(\snk@oldname.left),\p4=(\snk@oldname.right),
- \n1={\sankeyqtytolen{\qty}},
- \n{maxr}={\snk@minradius+\n1}, \n{minr}={\snk@minradius}
- in
- (\p1) arc(\orient+90:\orient-\snk@angle+90:\n{maxr})
- (\p4) arc(\orient-\snk@angle+90:\orient+90:\n{minr});
- \snk@show@debug{\name}
- }{
- \sankeyturnright[##2]{##3}{-1*\snk@angle}
- }
- \endgroup
+ \snk@show@debug{\name}
+ \endgroup
+}
+\NewDocumentCommand\snk@sankeyturnright{sO{}mm}{
+ % *(reverse), options, name, angle
+ \snk@errorifnotdefined{#3}
+ \begingroup
+ \IfBooleanTF{#1}
+ {\edef\snk@angle{\fpeval{-1*#4}}}
+ {\edef\snk@angle{\fpeval{1*#4}}}
+ \edef\snk@anglesign{\fpeval{sign(\snk@angle)}}
+ \ifnumgreater{\snk@anglesign}{-1}{
+ \snk@init@move{#2}{#3}
+ \edef\orient{\snk@normalize@angle{\sankeygetnodeorient{\name}-\snk@angle}}
+ \snk@getpos\snk@c{$(\name.right)!-\snk@minradius!(\name.left)$}
+ \snk@getpos\pos{$(\snk@c)!1!-\snk@angle:(\name.center)$}
+ \snk@makenode{}
+ % fill the region
+ \path[/sankey/fill] let
+ \p1=(\snk@oldname.left),\p2=(\snk@oldname.right),
+ \p3=(\name.left),\p4=(\name.right),
+ \n1={\sankeyqtytolen{\qty}},
+ \n{maxr}={\snk@minradius+\n1},
+ \n{minr}={\snk@minradius}
+ in
+ (\p1) arc(\orient+\snk@angle+90:\orient+90:\n{maxr}) -- (\p3) --
+ (\p4) arc(\orient+90:\orient+\snk@angle+90:\n{minr}) -- (\p2) -- cycle;
+ % draw left and right borders
+ \path[/sankey/draw] let
+ \p1=(\snk@oldname.left),\p2=(\snk@oldname.right),
+ \p3=(\name.left),\p4=(\name.right),
+ \n1={\sankeyqtytolen{\qty}},
+ \n{maxr}={\snk@minradius+\n1},
+ \n{minr}={\snk@minradius}
+ in
+ (\p1) arc(\orient+\snk@angle+90:\orient+90:\n{maxr})
+ (\p4) arc(\orient+90:\orient+\snk@angle+90:\n{minr});
+ \snk@show@debug{\name}
+ }{
+ \sankeyturnrightbackward[#2]{#3}{-1*\snk@angle}
}
- \NewDocumentCommand\sankeyturnleft{sO{}mm}{
- % *(reverse), options, name, angle
- \snk@errorifnotdefined{##3}
- \begingroup
- \IfBooleanTF{##1}
- {\edef\snk@angle{\fpeval{-1*##4}}}
- {\edef\snk@angle{\fpeval{1*##4}}}
- \edef\snk@anglesign{\fpeval{sign(\snk@angle)}}
- \ifnumgreater{\snk@anglesign}{-1}{
- \sankeyset{##2}
- \edef\name{##3}
- \edef\snk@oldname{##3-old}
- \sankeynodealias{\name}{\snk@oldname}
- \edef\qty{\sankeygetnodeqty{\name}}
- \edef\orient{\snk@normalize@angle{\sankeygetnodeorient{\name}+\snk@angle}}
- \snk@getpos\snk@c{$(\name.left)!-\snk@minradius!(\name.right)$}
- \snk@getpos\pos{$(\snk@c)!1!\snk@angle:(\name.center)$}
- \snk@makenode{}
- % fill the region
- \path[/sankey/fill] let
- \p1=(\snk@oldname.left),\p2=(\snk@oldname.right),
- \p3=(\name.left),\p4=(\name.right),
- \n1={\sankeyqtytolen{\qty}},
- \n{maxr}={\snk@minradius+\n1}, \n{minr}={\snk@minradius}
- in
- (\p1) arc(\orient-\snk@angle-90:\orient-90:\n{minr}) -- (\p3) --
- (\p4) arc(\orient-90:\orient-\snk@angle-90:\n{maxr}) -- (\p2) -- cycle;
- % draw left and right borders
- \path[/sankey/draw] let
- \p1=(\snk@oldname.left),\p2=(\snk@oldname.right),
- \p3=(\name.left),\p4=(\name.right),
- \n1={\sankeyqtytolen{\qty}},
- \n{maxr}={\snk@minradius+\n1}, \n{minr}={\snk@minradius}
- in
- (\p1) arc(\orient-\snk@angle-90:\orient-90:\n{minr})
- (\p4) arc(\orient-90:\orient-\snk@angle-90:\n{maxr});
- \snk@show@debug{\name}
- }{
- \sankeyturnleftbackward[##2]{##3}{-1*\snk@angle}
- }
- \endgroup
+ \endgroup
+}
+\NewDocumentCommand\snk@sankeyturnrightbackward{sO{}mm}{
+ % *(reverse), options, name, angle
+ \snk@errorifnotdefined{#3}
+ \begingroup
+ \IfBooleanTF{#1}
+ {\edef\snk@angle{\fpeval{-1*#4}}}
+ {\edef\snk@angle{\fpeval{1*#4}}}
+ \edef\snk@anglesign{\fpeval{sign(\snk@angle)}}
+ \ifnumgreater{\snk@anglesign}{-1}{
+ \snk@init@move{#2}{#3}
+ \edef\orient{\snk@normalize@angle{\sankeygetnodeorient{\name}+\snk@angle}}
+ \snk@getpos\snk@c{$(\name.right)!-\snk@minradius!(\name.left)$}
+ \snk@getpos\pos{$(\snk@c)!1!\snk@angle:(\name.center)$}
+ \snk@makenode{}
+ % fill the region
+ \path[/sankey/fill] let
+ \p1=(\name.left),\p2=(\name.right),
+ \p3=(\snk@oldname.left),\p4=(\snk@oldname.right),
+ \n1={\sankeyqtytolen{\qty}},
+ \n{maxr}={\snk@minradius+\n1}, \n{minr}={\snk@minradius}
+ in
+ (\p1) arc(\orient+90:\orient-\snk@angle+90:\n{maxr}) -- (\p3) --
+ (\p4) arc(\orient-\snk@angle+90:\orient+90:\n{minr}) -- (\p2) -- cycle;
+ % draw left and right borders
+ \path[/sankey/draw] let
+ \p1=(\name.left),\p2=(\name.right),
+ \p3=(\snk@oldname.left),\p4=(\snk@oldname.right),
+ \n1={\sankeyqtytolen{\qty}},
+ \n{maxr}={\snk@minradius+\n1}, \n{minr}={\snk@minradius}
+ in
+ (\p1) arc(\orient+90:\orient-\snk@angle+90:\n{maxr})
+ (\p4) arc(\orient-\snk@angle+90:\orient+90:\n{minr});
+ \snk@show@debug{\name}
+ }{
+ \sankeyturnright[#2]{#3}{-1*\snk@angle}
}
- \NewDocumentCommand\sankeyturnleftbackward{sO{}mm}{
- % *(reverse), options, name, angle
- \snk@errorifnotdefined{##3}
- \begingroup
- \IfBooleanTF{##1}
- {\edef\snk@angle{\fpeval{-1*##4}}}
- {\edef\snk@angle{\fpeval{1*##4}}}
- \edef\snk@anglesign{\fpeval{sign(\snk@angle)}}
- \ifnumgreater{\snk@anglesign}{-1}{
- \sankeyset{##2}
- \edef\name{##3}
- \edef\snk@oldname{##3-old}
- \sankeynodealias{\name}{\snk@oldname}
- \edef\qty{\sankeygetnodeqty{\name}}
- \edef\orient{\snk@normalize@angle{\sankeygetnodeorient{\name}-\snk@angle}}
- \snk@getpos\snk@c{$(\name.left)!-\snk@minradius!(\name.right)$}
- \snk@getpos\pos{$(\snk@c)!1!-\snk@angle:(\name.center)$}
- \snk@makenode{}
- % fill the region
- \path[/sankey/fill] let
- \p1=(\name.left),\p2=(\name.right),
- \p3=(\snk@oldname.left),\p4=(\snk@oldname.right),
- \n1={\sankeyqtytolen{\qty}},
- \n{maxr}={\snk@minradius+\n1}, \n{minr}={\snk@minradius}
- in
- (\p1) arc(\orient-90:\orient+\snk@angle-90:\n{minr}) -- (\p3) --
- (\p4) arc(\orient+\snk@angle-90:\orient-90:\n{maxr}) -- (\p2) -- cycle;
- % draw left and right borders
- \path[/sankey/draw] let
- \p1=(\name.left),\p2=(\name.right),
- \p3=(\snk@oldname.left),\p4=(\snk@oldname.right),
- \n1={\sankeyqtytolen{\qty}},
- \n{maxr}={\snk@minradius+\n1}, \n{minr}={\snk@minradius}
- in
- (\p1) arc(\orient-90:\orient+\snk@angle-90:\n{minr})
- (\p4) arc(\orient+\snk@angle-90:\orient-90:\n{maxr});
- \snk@show@debug{\name}
- }{
- \sankeyturnleft[##2]{##3}{-1*\snk@angle}
- }
- \endgroup
+ \endgroup
+}
+\NewDocumentCommand\snk@sankeyturnleft{sO{}mm}{
+ % *(reverse), options, name, angle
+ \snk@errorifnotdefined{#3}
+ \begingroup
+ \IfBooleanTF{#1}
+ {\edef\snk@angle{\fpeval{-1*#4}}}
+ {\edef\snk@angle{\fpeval{1*#4}}}
+ \edef\snk@anglesign{\fpeval{sign(\snk@angle)}}
+ \ifnumgreater{\snk@anglesign}{-1}{
+ \snk@init@move{#2}{#3}
+ \edef\orient{\snk@normalize@angle{\sankeygetnodeorient{\name}+\snk@angle}}
+ \snk@getpos\snk@c{$(\name.left)!-\snk@minradius!(\name.right)$}
+ \snk@getpos\pos{$(\snk@c)!1!\snk@angle:(\name.center)$}
+ \snk@makenode{}
+ % fill the region
+ \path[/sankey/fill] let
+ \p1=(\snk@oldname.left),\p2=(\snk@oldname.right),
+ \p3=(\name.left),\p4=(\name.right),
+ \n1={\sankeyqtytolen{\qty}},
+ \n{maxr}={\snk@minradius+\n1}, \n{minr}={\snk@minradius}
+ in
+ (\p1) arc(\orient-\snk@angle-90:\orient-90:\n{minr}) -- (\p3) --
+ (\p4) arc(\orient-90:\orient-\snk@angle-90:\n{maxr}) -- (\p2) -- cycle;
+ % draw left and right borders
+ \path[/sankey/draw] let
+ \p1=(\snk@oldname.left),\p2=(\snk@oldname.right),
+ \p3=(\name.left),\p4=(\name.right),
+ \n1={\sankeyqtytolen{\qty}},
+ \n{maxr}={\snk@minradius+\n1}, \n{minr}={\snk@minradius}
+ in
+ (\p1) arc(\orient-\snk@angle-90:\orient-90:\n{minr})
+ (\p4) arc(\orient-90:\orient-\snk@angle-90:\n{maxr});
+ \snk@show@debug{\name}
+ }{
+ \sankeyturnleftbackward[#2]{#3}{-1*\snk@angle}
}
- \NewDocumentCommand\sankeyturn{sO{}mm}{%
- % *(reverse), options, name, angle
- \snk@errorifnotdefined{##3}
- \begingroup
- \edef\snk@anglesign{\fpeval{sign(##4)}}
- \IfBooleanTF{##1}{
- \ifnumgreater{\snk@anglesign}{-1}
- {\sankeyturnleftbackward[##2]{##3}{##4}}
- {\sankeyturnrightbackward[##2]{##3}{-1*##4}}
- }{
- \ifnumgreater{\snk@anglesign}{-1}
- {\sankeyturnleft[##2]{##3}{##4}}
- {\sankeyturnright[##2]{##3}{-1*##4}}
- }
- \endgroup
+ \endgroup
+}
+\NewDocumentCommand\snk@sankeyturnleftbackward{sO{}mm}{
+ % *(reverse), options, name, angle
+ \snk@errorifnotdefined{#3}
+ \begingroup
+ \IfBooleanTF{#1}
+ {\edef\snk@angle{\fpeval{-1*#4}}}
+ {\edef\snk@angle{\fpeval{1*#4}}}
+ \edef\snk@anglesign{\fpeval{sign(\snk@angle)}}
+ \ifnumgreater{\snk@anglesign}{-1}{
+ \snk@init@move{#2}{#3}
+ \edef\orient{\snk@normalize@angle{\sankeygetnodeorient{\name}-\snk@angle}}
+ \snk@getpos\snk@c{$(\name.left)!-\snk@minradius!(\name.right)$}
+ \snk@getpos\pos{$(\snk@c)!1!-\snk@angle:(\name.center)$}
+ \snk@makenode{}
+ % fill the region
+ \path[/sankey/fill] let
+ \p1=(\name.left),\p2=(\name.right),
+ \p3=(\snk@oldname.left),\p4=(\snk@oldname.right),
+ \n1={\sankeyqtytolen{\qty}},
+ \n{maxr}={\snk@minradius+\n1}, \n{minr}={\snk@minradius}
+ in
+ (\p1) arc(\orient-90:\orient+\snk@angle-90:\n{minr}) -- (\p3) --
+ (\p4) arc(\orient+\snk@angle-90:\orient-90:\n{maxr}) -- (\p2) -- cycle;
+ % draw left and right borders
+ \path[/sankey/draw] let
+ \p1=(\name.left),\p2=(\name.right),
+ \p3=(\snk@oldname.left),\p4=(\snk@oldname.right),
+ \n1={\sankeyqtytolen{\qty}},
+ \n{maxr}={\snk@minradius+\n1}, \n{minr}={\snk@minradius}
+ in
+ (\p1) arc(\orient-90:\orient+\snk@angle-90:\n{minr})
+ (\p4) arc(\orient+\snk@angle-90:\orient-90:\n{maxr});
+ \snk@show@debug{\name}
+ }{
+ \sankeyturnleft[#2]{#3}{-1*\snk@angle}
}
- \NewDocumentCommand\sankeyfork{O{}mm}{%options, name, list of forks
- \snk@errorifnotdefined{##2}
- \begingroup
- \sankeyset{##1}
- \sankeynode[debug=false]{as={##2},forked={##3}}
- \foreach \qty/\snk@subnodename in {##3}{\sankeynode{as={\snk@subnodename}}}
- \endgroup
+ \endgroup
+}
+\NewDocumentCommand\snk@sankeyturn{sO{}mm}{%
+ % *(reverse), options, name, angle
+ \snk@errorifnotdefined{#3}
+ \begingroup
+ \edef\snk@anglesign{\fpeval{sign(#4)}}
+ \IfBooleanTF{#1}{
+ \ifnumgreater{\snk@anglesign}{-1}
+ {\sankeyturnleftbackward[#2]{#3}{#4}}
+ {\sankeyturnrightbackward[#2]{#3}{-1*#4}}
+ }{
+ \ifnumgreater{\snk@anglesign}{-1}
+ {\sankeyturnleft[#2]{#3}{#4}}
+ {\sankeyturnright[#2]{#3}{-1*#4}}
}
- \def\sankeyqtytolen##1{\fpeval{(##1)/\snk@totalqty*\snk@totallen}}
+ \endgroup
+}
+\NewDocumentCommand\snk@sankeyfork{O{}mm}{%options, name, list of forks
+ \snk@errorifnotdefined{#2}
+ \begingroup
+ \sankeyset{#1}
+ \sankeynode[debug=false]{as={#2},forked={#3}}
+ \foreach \qty/\snk@subnodename in {#3}{\sankeynode{as={\snk@subnodename}}}
+ \endgroup
+}
+\NewExpandableDocumentCommand\snk@sankeyqtytolen{m}{%
+ \fpeval{(#1)/\snk@totalqty*\snk@totallen}%
+}
+\NewDocumentEnvironment{sankeydiagram}{O{}}{
+ \NewCommandCopy{\sankeyadvance}{\snk@sankeyadvance}
+ \NewCommandCopy{\sankeydubins}{\snk@sankeydubins}
+ \NewCommandCopy{\sankeyend}{\snk@sankeyend}
+ \NewCommandCopy{\sankeyfork}{\snk@sankeyfork}
+ \NewCommandCopy{\sankeynodealias}{\snk@sankeynodealias}
+ \NewCommandCopy{\sankeynodeend}{\snk@sankeynodeend}
+ \NewCommandCopy{\sankeynodestart}{\snk@sankeynodestart}
+ \NewCommandCopy{\sankeynode}{\snk@sankeynode}
+ \NewCommandCopy{\sankeyoutin}{\snk@sankeyoutin}
+ \NewCommandCopy{\sankeyqtytolen}{\snk@sankeyqtytolen}
+ \NewCommandCopy{\sankeystart}{\snk@sankeystart}
+ \NewCommandCopy{\sankeyturnleftbackward}{\snk@sankeyturnleftbackward}
+ \NewCommandCopy{\sankeyturnleft}{\snk@sankeyturnleft}
+ \NewCommandCopy{\sankeyturnrightbackward}{\snk@sankeyturnrightbackward}
+ \NewCommandCopy{\sankeyturnright}{\snk@sankeyturnright}
+ \NewCommandCopy{\sankeyturn}{\snk@sankeyturn}
\sankeyset{
@initial options,
every diagram,
diff --git a/Master/texmf-dist/tex/latex/sankey/tikzlibrarydubins.code.tex b/Master/texmf-dist/tex/latex/sankey/tikzlibrarydubins.code.tex
index 4526f1b937d..9cfaeffb8ff 100644
--- a/Master/texmf-dist/tex/latex/sankey/tikzlibrarydubins.code.tex
+++ b/Master/texmf-dist/tex/latex/sankey/tikzlibrarydubins.code.tex
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 2016, 2021 by Paul Gaborit
+%% Copyright (C) 2016-2022 by Paul Gaborit
%%
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License, either version 1.3 of this license or (at
@@ -30,8 +30,8 @@
%% sankey-example3-variation.tex, sankey-example4.tex,
%% sankey-example-energy.tex
%%
-\def\tikzlibrarydubins@version{v3.0.1}
-\def\tikzlibrarydubins@date{2022/02/04}
+\def\tikzlibrarydubins@version{v3.0.2}
+\def\tikzlibrarydubins@date{2025/01/10}
\usetikzlibrary{calc}
\RequirePackage{etoolbox}
\RequirePackage{xfp}
@@ -258,7 +258,8 @@
+\dbp@rsrlen
+angtodist(\dbp@rsrangtwo,\dbp@radius)
}
- \dbp@setparams{rsr}{\dbp@rsrdist}{\dbp@rsrangone}{\dbp@rsrlen}{\dbp@rsrangtwo}
+ \dbp@setparams%
+ {rsr}{\dbp@rsrdist}{\dbp@rsrangone}{\dbp@rsrlen}{\dbp@rsrangtwo}
% LSL (al and bl)
\dbp@anglebetween\dbp@lslalbl{\p{al}}{\p{bl}}
diff --git a/Master/texmf-dist/tex/latex/sansmathfonts/omlcmssm.fd b/Master/texmf-dist/tex/latex/sansmathfonts/omlcmssm.fd
index 7befd2144f2..6c3d6427bbc 100644
--- a/Master/texmf-dist/tex/latex/sansmathfonts/omlcmssm.fd
+++ b/Master/texmf-dist/tex/latex/sansmathfonts/omlcmssm.fd
@@ -14,7 +14,7 @@
%%
%%
\ProvidesFile{omlcmssm.fd}
- [2019/04/04]
+ [2024/10/15]
\DeclareFontFamily{OML}{cmssm}{\skewchar\font127 }
\DeclareFontShape{OML}{cmssm}{m}{it}%
{<-6>cmssmi5%
diff --git a/Master/texmf-dist/tex/latex/sansmathfonts/omscmsssy.fd b/Master/texmf-dist/tex/latex/sansmathfonts/omscmsssy.fd
index 1dabc1aa352..5797057dca5 100644
--- a/Master/texmf-dist/tex/latex/sansmathfonts/omscmsssy.fd
+++ b/Master/texmf-dist/tex/latex/sansmathfonts/omscmsssy.fd
@@ -13,7 +13,7 @@
%% version 2005/12/01 or later.
%%
\ProvidesFile{omscmsssy.fd}
- [2019/04/04]
+ [2024/10/15]
\DeclareFontFamily{OMS}{cmsssy}{\skewchar\font48 }
\DeclareFontShape{OMS}{cmsssy}{m}{n}{%
<-6>cmsssy5%
diff --git a/Master/texmf-dist/tex/latex/sansmathfonts/omxcmssex.fd b/Master/texmf-dist/tex/latex/sansmathfonts/omxcmssex.fd
index 2df949dce1c..59dbdfe3a25 100644
--- a/Master/texmf-dist/tex/latex/sansmathfonts/omxcmssex.fd
+++ b/Master/texmf-dist/tex/latex/sansmathfonts/omxcmssex.fd
@@ -14,7 +14,7 @@
%%
%%
\ProvidesFile{omxcmssex.fd}
- [2021/06/22]
+ [2024/10/15]
\DeclareFontFamily{OMX}{cmssex}{}
\DeclareFontShape{OMX}{cmssex}{m}{n}{
<-7.5> cmssex7
diff --git a/Master/texmf-dist/tex/latex/sansmathfonts/ot1cmsmf.fd b/Master/texmf-dist/tex/latex/sansmathfonts/ot1cmsmf.fd
index ad57f77c0d2..ce11b34092c 100644
--- a/Master/texmf-dist/tex/latex/sansmathfonts/ot1cmsmf.fd
+++ b/Master/texmf-dist/tex/latex/sansmathfonts/ot1cmsmf.fd
@@ -14,7 +14,7 @@
%%
%%
\ProvidesFile{ot1cmsmf.fd}
- [2021/06/22]
+ [2024/10/15]
\DeclareFontFamily{OT1}{cmsmf}{\hyphenchar\font45 }
% Serifed I, Pi, Xi
\DeclareFontShape{OT1}{cmsmf}{m}{n}
@@ -78,18 +78,18 @@
{%
<->cmsmfxicsc10%
}{}
-\DeclareFontShape{OT1}{cmsmf}{b}{n}{<->sub*xcmss/bx/n}{}
-\DeclareFontShape{OT1}{cmsmf}{b}{it}{<->sub*xcmss/bx/it}{}
-\DeclareFontShape{OT1}{cmsmf}{b}{sl}{<->sub*xcmss/bx/sl}{}
-\DeclareFontShape{OT1}{cmsmf}{b}{sc}{<->sub*xcmss/bx/sc}{}
-\DeclareFontShape{OT1}{cmsmf}{b}{scsl}{<->sub*xcmss/bx/scsl}{}
-\DeclareFontShape{OT1}{cmsmf}{b}{scit}{<->sub*xcmss/bx/scit}{}
+\DeclareFontShape{OT1}{cmsmf}{b}{n}{<->sub*cmsmf/bx/n}{}
+\DeclareFontShape{OT1}{cmsmf}{b}{it}{<->sub*cmsmf/bx/it}{}
+\DeclareFontShape{OT1}{cmsmf}{b}{sl}{<->sub*cmsmf/bx/sl}{}
+\DeclareFontShape{OT1}{cmsmf}{b}{sc}{<->sub*cmsmf/bx/sc}{}
+\DeclareFontShape{OT1}{cmsmf}{b}{scsl}{<->sub*cmsmf/bx/scsl}{}
+\DeclareFontShape{OT1}{cmsmf}{b}{scit}{<->sub*cmsmf/bx/scit}{}
% Odd shapes
\DeclareFontShape{OT1}{cmsmf}{sbc}{n}
{%
<->cmssdc10%
}{}
-% The following shapes are necessary for a correct
+% The following shapes are, or were, necessary for a correct
% \pounds symbol
\DeclareFontShape{OT1}{cmsmf}{m}{ui}
{%
diff --git a/Master/texmf-dist/tex/latex/sansmathfonts/ot1xcmss.fd b/Master/texmf-dist/tex/latex/sansmathfonts/ot1xcmss.fd
index 38e3618d91c..d9d288433ab 100644
--- a/Master/texmf-dist/tex/latex/sansmathfonts/ot1xcmss.fd
+++ b/Master/texmf-dist/tex/latex/sansmathfonts/ot1xcmss.fd
@@ -13,7 +13,7 @@
%%
%%
\ProvidesFile{ot1xcmss.fd}
- [2021/06/22]
+ [2024/10/15]
\DeclareFontFamily{OT1}{xcmss}{\hyphenchar\font45 }
\DeclareFontShape{OT1}{xcmss}{m}{n}
{%
diff --git a/Master/texmf-dist/tex/latex/sansmathfonts/sansmathfonts.sty b/Master/texmf-dist/tex/latex/sansmathfonts/sansmathfonts.sty
index ef8566c5ad7..32551153609 100644
--- a/Master/texmf-dist/tex/latex/sansmathfonts/sansmathfonts.sty
+++ b/Master/texmf-dist/tex/latex/sansmathfonts/sansmathfonts.sty
@@ -4,7 +4,7 @@
%
% author: Ariel Barton
%
-% Copyright Ariel Barton, 2013--2022
+% Copyright Ariel Barton, 2013--2024
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -21,7 +21,25 @@
% the file `sansmathfonts.pdf' and its source code `sansmathfonts.tex'.
%
-\ProvidesPackage{sansmathfonts}[2022/10/09]
+
+%Feedback to submitter: (delete this)
+%
+% For your _next_ update please make the following changes in
+% sansmathfonts.tex :
+% -> update or delete the old date in line 25
+% -> append ‘c’ to ‘1.3’ in line 479 to make the license statements
+% consistent throughout the package.
+%
+% Also the copyright statements could/should be extended to the
+% current year.
+%
+% Finally: The most practical and least error-prone access to CTAN’s
+% upload page is via https://ctan.org/pkg/sansmathfonts, clicking on
+% the “Upload” button at the top. This way, many of the fields are
+% already prefilled correctly.
+
+
+\ProvidesPackage{sansmathfonts}[2024/10/15]
\newif \ifmath@sansmathfonts \math@sansmathfontstrue
\newif \iftext@sansmathfonts \text@sansmathfontstrue
@@ -32,6 +50,53 @@
\DeclareOption{onlymath}{\text@sansmathfontsfalse}
\DeclareOption{nottext} {\text@sansmathfontsfalse}
\DeclareOption{I}{\I@sansmathfontstrue}
+\DeclareOption{AMS}{
+ \newcommand\sanshbar{\hbar}
+ \newcommand\sanshslash{\hslash}
+ \newcommand\sansmho{\mho}
+ \newcommand\sanseth{\eth}
+ \newcommand\sansbackepsilon{\backepsilon}
+}
+\DeclareOption{letters}{
+ \newcommand\sansalpha{\alpha}
+ \newcommand\sansbeta{\beta}
+ \newcommand\sansgamma{\gamma}
+ \newcommand\sansdelta{\delta}
+ \newcommand\sansepsilon{\epsilon}
+ \newcommand\sanszeta{\zeta}
+ \newcommand\sanseta{\eta}
+ \newcommand\sanstheta{\theta}
+ \newcommand\sansiota{\iota}
+ \newcommand\sanskappa{\kappa}
+ \newcommand\sanslambda{\lambda}
+ \newcommand\sansmu{\mu}
+ \newcommand\sansnu{\nu}
+ \newcommand\sansxi{\xi}
+ \newcommand\sanspi{\pi}
+ \newcommand\sansrho{\rho}
+ \newcommand\sanssigma{\sigma}
+ \newcommand\sanstau{\tau}
+ \newcommand\sansupsilon{\upsilon}
+ \newcommand\sansphi{\phi}
+ \newcommand\sanschi{\chi}
+ \newcommand\sanspsi{\psi}
+ \newcommand\sansomega{\omega}
+ \newcommand\sansvarepsilon{\varepsilon}
+ \newcommand\sansvartheta{\vartheta}
+ \newcommand\sansvarpi{\varpi}
+ \newcommand\sansvarrho{\varrho}
+ \newcommand\sansvarsigma{\varsigma}
+ \newcommand\sansvarphi{\varphi}
+ \newcommand\sansstar{\star}
+ \newcommand\sanspartial{\partial}
+ \newcommand\sansflat{\flat}
+ \newcommand\sansnatural{\natural}
+ \newcommand\sanssharp{\sharp}
+ \newcommand\sanssmile{\smile}
+ \newcommand\sansfrown{\frown}
+ \newcommand\sansell{\ell}
+ \newcommand\sanswp{\wp}
+}
\ProcessOptions
@@ -68,82 +133,145 @@
\ifmath@sansmathfonts
-% Turn off Beamer math replacements
-\@ifpackageloaded{beamerbasefont}{\usefonttheme{professionalfonts}}{}
-
-% Sans serif math
-% Code borrowed from fontmath.ltx
-% (edited; cmr->cmsmf, cmm->cmssm, cmsy->cmsssy, cmex->cmssex)
-\DeclareFontSubstitution{OML}{cmssm}{m}{it}
-\DeclareFontSubstitution{OMS}{cmsssy}{m}{n}
-\DeclareFontSubstitution{OMX}{cmssex}{m}{n}
-\DeclareFontSubstitution{U}{\Usfdefault@sansmathfonts}{m}{n}
-\DeclareSymbolFont{operators} {OT1}{cmsmf} {m}{n}
-\DeclareSymbolFont{letters} {OML}{cmssm} {m}{it}
-\DeclareSymbolFont{symbols} {OMS}{cmsssy}{m}{n}
-\DeclareSymbolFont{largesymbols}{OMX}{cmssex}{m}{n}
-\SetSymbolFont{operators}{bold}{OT1}{cmsmf} {bx}{n}
-\SetSymbolFont{letters} {bold}{OML}{cmssm} {b}{it}
-\SetSymbolFont{symbols} {bold}{OMS}{cmsssy}{b}{n}
-
-% Code borrowed from concmath.sty (amsfonts/amssymb option)
-\AtBeginDocument{%
- \@ifpackageloaded{amsfonts}{%
- \DeclareSymbolFont{AMSa}{U}{ssmsa}{m}{n}
- \DeclareSymbolFont{AMSb}{U}{ssmsb}{m}{n}
- }{}%
- \@ifpackageloaded{esint}{%
- \DeclareSymbolFont{largesymbolsA}{U}{ssesint}{m}{n}
- }{}
- %
- \ifx\OTOne@sansmathfonts \f@encoding \else
- \ifx\U@sansmathfonts \f@encoding \else
- \ifI@sansmathfonts
- \PackageError{sansmathfonts}
- {The [I] package option is only compatible with
- the OT1 and U font encodings. To use the [I] option,
- please use the fontenc package with OT1 encoding:
- \string\usepackage[OT1]\string{fontenc\string}}
- {Please do not use the [I] option for the sansmathfonts
- package, or select your font encoding before you load
- the sansmathfonts package.}
- \fi
- \ifx\TOne@sansmathfonts \f@encoding \else
- \iftext@sansmathfonts
- \PackageError{sansmathfonts}
- {Sans serif text fonts are only
- provided for OT1, T1, and U font encodings.}
- {Please use the [onlymath] option for the sansmathfonts
- package, or select your font encoding before you
- load the sansmathfonts package.}
+ % Turn off Beamer math replacements
+ \@ifpackageloaded{beamerbasefont}{\usefonttheme{professionalfonts}}{}
+
+ % Sans serif math
+ % Code borrowed from fontmath.ltx
+ % (edited; cmr->cmsmf, cmm->cmssm, cmsy->cmsssy, cmex->cmssex)
+ \DeclareFontSubstitution{OML}{cmssm}{m}{it}
+ \DeclareFontSubstitution{OMS}{cmsssy}{m}{n}
+ \DeclareFontSubstitution{OMX}{cmssex}{m}{n}
+ \DeclareFontSubstitution{U}{\Usfdefault@sansmathfonts}{m}{n}
+ \DeclareSymbolFont{operators} {OT1}{cmsmf} {m}{n}
+ \DeclareSymbolFont{letters} {OML}{cmssm} {m}{it}
+ \DeclareSymbolFont{symbols} {OMS}{cmsssy}{m}{n}
+ \DeclareSymbolFont{largesymbols}{OMX}{cmssex}{m}{n}
+ \SetSymbolFont{operators}{bold}{OT1}{cmsmf} {bx}{n}
+ \SetSymbolFont{letters} {bold}{OML}{cmssm} {b}{it}
+ \SetSymbolFont{symbols} {bold}{OMS}{cmsssy}{b}{n}
+
+ % Code borrowed from concmath.sty (amsfonts/amssymb option)
+ \AtBeginDocument{%
+ \@ifpackageloaded{amsfonts}{%
+ \DeclareSymbolFont{AMSa}{U}{ssmsa}{m}{n}
+ \DeclareSymbolFont{AMSb}{U}{ssmsb}{m}{n}
+ }{
+ \ifdefined\sansmho
+ \PackageError{sansmathfonts}
+ {Please load the {amsfonts} package if you want AMS symbols.}
+ {The [AMS] package option for {sansmathfonts} is primarily
+ designed for use with the [onlytext]/[notmath] options,
+ and expects you to load an AMS package if you want
+ AMS symbols that match surrounding math.}
+ \fi
+ }%
+ \@ifpackageloaded{esint}{%
+ \DeclareSymbolFont{largesymbolsA}{U}{ssesint}{m}{n}
+ }{}
+ %
+ \ifx\OTOne@sansmathfonts \f@encoding \else
+ \ifx\U@sansmathfonts \f@encoding \else
+ \ifI@sansmathfonts
+ \PackageError{sansmathfonts}
+ {The [I] package option is only compatible with
+ the OT1 and U font encodings. To use the [I] option,
+ please use the fontenc package with OT1 encoding:
+ \string\usepackage[OT1]\string{fontenc\string}}
+ {Please do not use the [I] option for the sansmathfonts
+ package, or select your font encoding before you load
+ the sansmathfonts package.}
+ \fi
+ \ifx\TOne@sansmathfonts \f@encoding \else
+ \iftext@sansmathfonts
+ \PackageError{sansmathfonts}
+ {Sans serif text fonts are only
+ provided for OT1, T1, and U font encodings.}
+ {Please use the [onlymath] option for the sansmathfonts
+ package, or select your font encoding before you
+ load the sansmathfonts package.}
+ \fi \fi
\fi \fi
- \fi \fi
- }
-
-% beamer currently sets
-% \mathrm to upright serif and
-% \mathit to slanted sans serif.
-% They should be consistent,
-% and the setup should be such that if you aren't paying attention,
-% then you get the font of the rest of the letters,
-% that is, sans serif.
-
-% Code borrowed from fontmath.ltx
-% (edited; cmr->cmsmf)
-\DeclareSymbolFontAlphabet{\mathrm} {operators}
-\DeclareSymbolFontAlphabet{\mathnormal}{letters}
-\DeclareSymbolFontAlphabet{\mathcal} {symbols}
-\DeclareMathAlphabet {\mathbf}{OT1}{cmsmf}{bx}{n}
-\DeclareMathAlphabet {\mathit}{OT1}{cmsmf}{m}{it}
-\DeclareMathAlphabet {\mathtt}{OT1}{cmtt}{m}{n}
-\SetMathAlphabet\mathsf{bold}{OT1}{cmsmf}{bx}{n}
-\SetMathAlphabet\mathit{bold}{OT1}{cmsmf}{bx}{it}
-
+ }
+
+ % beamer currently sets
+ % \mathrm to upright serif and
+ % \mathit to slanted sans serif.
+ % They should be consistent,
+ % and the setup should be such that if you aren't paying attention,
+ % then you get the font of the rest of the letters,
+ % that is, sans serif.
+
+ % Code borrowed from fontmath.ltx
+ % (edited; cmr->cmsmf)
+ \DeclareSymbolFontAlphabet{\mathrm} {operators}
+ \DeclareSymbolFontAlphabet{\mathnormal}{letters}
+ \DeclareSymbolFontAlphabet{\mathcal} {symbols}
+ \DeclareMathAlphabet {\mathbf}{OT1}{cmsmf}{bx}{n}
+ \DeclareMathAlphabet {\mathit}{OT1}{cmsmf}{m}{it}
+ \DeclareMathAlphabet {\mathtt}{OT1}{cmtt}{m}{n}
+ \SetMathAlphabet\mathsf{bold}{OT1}{cmsmf}{bx}{n}
+ \SetMathAlphabet\mathit{bold}{OT1}{cmsmf}{bx}{it}
+\else
+ \ifdefined\sansmho
+ \DeclareSymbolFont{sansAMSb}{U}{ssmsb}{m}{n}
+ \begingroup \catcode`\"=12
+ \let\sansmho\undefined \DeclareMathSymbol{\sansmho} {\mathord}{sansAMSb}{"66}
+ \let\sanseth\undefined \DeclareMathSymbol{\sanseth} {\mathord}{sansAMSb}{"67}
+ \let\sanshslash\undefined \DeclareMathSymbol{\sanshslash} {\mathord}{sansAMSb}{"7D}
+ \let\sanshbar\undefined \DeclareMathSymbol{\sanshbar} {\mathord}{sansAMSb}{"7E}
+ \let\sansbackepsilon\undefined\DeclareMathSymbol{\sansbackepsilon}{\mathrel}{sansAMSb}{"7F}
+ \endgroup
+ \fi
+ \ifdefined\sansalpha
+ \DeclareSymbolFont{sansletters} {OML}{cmssm} {m}{it}
+ \let\sansalpha\undefined \DeclareMathSymbol{\sansalpha} {\mathord}{sansletters}{11}
+ \let\sansbeta\undefined \DeclareMathSymbol{\sansbeta} {\mathord}{sansletters}{12}
+ \let\sansgamma\undefined \DeclareMathSymbol{\sansgamma} {\mathord}{sansletters}{13}
+ \let\sansdelta\undefined \DeclareMathSymbol{\sansdelta} {\mathord}{sansletters}{14}
+ \let\sansepsilon\undefined \DeclareMathSymbol{\sansepsilon} {\mathord}{sansletters}{15}
+ \let\sanszeta\undefined \DeclareMathSymbol{\sanszeta} {\mathord}{sansletters}{16}
+ \let\sanseta\undefined \DeclareMathSymbol{\sanseta} {\mathord}{sansletters}{17}
+ \let\sanstheta\undefined \DeclareMathSymbol{\sanstheta} {\mathord}{sansletters}{18}
+ \let\sansiota\undefined \DeclareMathSymbol{\sansiota} {\mathord}{sansletters}{19}
+ \let\sanskappa\undefined \DeclareMathSymbol{\sanskappa} {\mathord}{sansletters}{20}
+ \let\sanslambda\undefined \DeclareMathSymbol{\sanslambda} {\mathord}{sansletters}{21}
+ \let\sansmu\undefined \DeclareMathSymbol{\sansmu} {\mathord}{sansletters}{22}
+ \let\sansnu\undefined \DeclareMathSymbol{\sansnu} {\mathord}{sansletters}{23}
+ \let\sansxi\undefined \DeclareMathSymbol{\sansxi} {\mathord}{sansletters}{24}
+ \let\sanspi\undefined \DeclareMathSymbol{\sanspi} {\mathord}{sansletters}{25}
+ \let\sansrho\undefined \DeclareMathSymbol{\sansrho} {\mathord}{sansletters}{26}
+ \let\sanssigma\undefined \DeclareMathSymbol{\sanssigma} {\mathord}{sansletters}{27}
+ \let\sanstau\undefined \DeclareMathSymbol{\sanstau} {\mathord}{sansletters}{28}
+ \let\sansupsilon\undefined \DeclareMathSymbol{\sansupsilon} {\mathord}{sansletters}{29}
+ \let\sansphi\undefined \DeclareMathSymbol{\sansphi} {\mathord}{sansletters}{30}
+ \let\sanschi\undefined \DeclareMathSymbol{\sanschi} {\mathord}{sansletters}{31}
+ \let\sanspsi\undefined \DeclareMathSymbol{\sanspsi} {\mathord}{sansletters}{32}
+ \let\sansomega\undefined \DeclareMathSymbol{\sansomega} {\mathord}{sansletters}{33}
+ \let\sansvarepsilon\undefined \DeclareMathSymbol{\sansvarepsilon} {\mathord}{sansletters}{34}
+ \let\sansvartheta\undefined \DeclareMathSymbol{\sansvartheta} {\mathord}{sansletters}{35}
+ \let\sansvarpi\undefined \DeclareMathSymbol{\sansvarpi} {\mathord}{sansletters}{36}
+ \let\sansvarrho\undefined \DeclareMathSymbol{\sansvarrho} {\mathord}{sansletters}{37}
+ \let\sansvarsigma\undefined \DeclareMathSymbol{\sansvarsigma} {\mathord}{sansletters}{38}
+ \let\sansvarphi\undefined \DeclareMathSymbol{\sansvarphi} {\mathord}{sansletters}{39}
+ \let\sansstar\undefined \DeclareMathSymbol{\sansstar} {\mathord}{sansletters}{63}
+ \let\sanspartial\undefined \DeclareMathSymbol{\sanspartial} {\mathord}{sansletters}{64}
+ \let\sansflat\undefined \DeclareMathSymbol{\sansflat} {\mathord}{sansletters}{91}
+ \let\sansnatural\undefined \DeclareMathSymbol{\sansnatural} {\mathord}{sansletters}{92}
+ \let\sanssharp\undefined \DeclareMathSymbol{\sanssharp} {\mathord}{sansletters}{93}
+ \let\sanssmile\undefined \DeclareMathSymbol{\sanssmile} {\mathord}{sansletters}{94}
+ \let\sansfrown\undefined \DeclareMathSymbol{\sansfrown} {\mathord}{sansletters}{95}
+ \let\sansell\undefined \DeclareMathSymbol{\sansell} {\mathord}{sansletters}{96}
+ \let\sanswp\undefined \DeclareMathSymbol{\sanswp} {\mathord}{sansletters}{125}
+ \fi
\fi
\DeclareMathAlphabet {\mathserif}{OT1}{cmr}{m}{n}
\DeclareMathAlphabet {\mathsf}{OT1}{cmsmf}{m}{n}
+\DeclareFontFamilySubstitution{TS1}{xcmss}{cmss}
+\DeclareFontFamilySubstitution{TS1}{cmsmf}{cmss}
+
% Use the improved sans family
% (provides sans serif small caps fonts)
\let\sfdefault\sfdefault@sansmathfonts
diff --git a/Master/texmf-dist/tex/latex/sansmathfonts/t1xcmss.fd b/Master/texmf-dist/tex/latex/sansmathfonts/t1xcmss.fd
index dc1a25d4a2d..1541915d50d 100644
--- a/Master/texmf-dist/tex/latex/sansmathfonts/t1xcmss.fd
+++ b/Master/texmf-dist/tex/latex/sansmathfonts/t1xcmss.fd
@@ -14,7 +14,7 @@
%%
%%
\ProvidesFile{t1xcmss.fd}
- [2021/06/22]
+ [2024/10/15]
\providecommand{\EC@family}[5]{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{
diff --git a/Master/texmf-dist/tex/latex/sansmathfonts/ucmsmf.fd b/Master/texmf-dist/tex/latex/sansmathfonts/ucmsmf.fd
index e2cec723cc0..b9f98a1390d 100644
--- a/Master/texmf-dist/tex/latex/sansmathfonts/ucmsmf.fd
+++ b/Master/texmf-dist/tex/latex/sansmathfonts/ucmsmf.fd
@@ -14,7 +14,7 @@
%%
%%
\ProvidesFile{ucmsmf.fd}
- [2021/06/22]
+ [2024/10/15]
\DeclareFontFamily{U}{cmsmf}{\hyphenchar\font45 }
% Serifed I, Pi, Xi
\DeclareFontShape{U}{cmsmf}{m}{n}
@@ -78,18 +78,18 @@
{%
<->cmsmfxicsc10%
}{}
-\DeclareFontShape{U}{cmsmf}{b}{n}{<->sub*xcmss/bx/n}{}
-\DeclareFontShape{U}{cmsmf}{b}{it}{<->sub*xcmss/bx/it}{}
-\DeclareFontShape{U}{cmsmf}{b}{sl}{<->sub*xcmss/bx/sl}{}
-\DeclareFontShape{U}{cmsmf}{b}{sc}{<->sub*xcmss/bx/sc}{}
-\DeclareFontShape{U}{cmsmf}{b}{scsl}{<->sub*xcmss/bx/scsl}{}
-\DeclareFontShape{U}{cmsmf}{b}{scit}{<->sub*xcmss/bx/scit}{}
+\DeclareFontShape{U}{cmsmf}{b}{n}{<->sub*cmsmf/bx/n}{}
+\DeclareFontShape{U}{cmsmf}{b}{it}{<->sub*cmsmf/bx/it}{}
+\DeclareFontShape{U}{cmsmf}{b}{sl}{<->sub*cmsmf/bx/sl}{}
+\DeclareFontShape{U}{cmsmf}{b}{sc}{<->sub*cmsmf/bx/sc}{}
+\DeclareFontShape{U}{cmsmf}{b}{scsl}{<->sub*cmsmf/bx/scsl}{}
+\DeclareFontShape{U}{cmsmf}{b}{scit}{<->sub*cmsmf/bx/scit}{}
% Odd shapes
\DeclareFontShape{U}{cmsmf}{sbc}{n}
{%
<->cmssdc10%
}{}
-% The following shapes are necessary for a correct
+% The following shapes are, or were, necessary for a correct
% \pounds symbol
\DeclareFontShape{U}{cmsmf}{m}{ui}
{%
diff --git a/Master/texmf-dist/tex/latex/sansmathfonts/ussesint.fd b/Master/texmf-dist/tex/latex/sansmathfonts/ussesint.fd
index a2a7a62e2f4..c5fc88a2584 100644
--- a/Master/texmf-dist/tex/latex/sansmathfonts/ussesint.fd
+++ b/Master/texmf-dist/tex/latex/sansmathfonts/ussesint.fd
@@ -14,7 +14,7 @@
%%
%%
-\ProvidesFile{ussesint.fd}[2019/04/04]
+\ProvidesFile{ussesint.fd}[2024/10/15]
\DeclareFontFamily{U}{ssesint}{}
\DeclareFontShape{U}{ssesint}{m}{n}{
<-> ssesint10
diff --git a/Master/texmf-dist/tex/latex/sansmathfonts/ussmsa.fd b/Master/texmf-dist/tex/latex/sansmathfonts/ussmsa.fd
index d9c2893bec2..b9a3823ae23 100644
--- a/Master/texmf-dist/tex/latex/sansmathfonts/ussmsa.fd
+++ b/Master/texmf-dist/tex/latex/sansmathfonts/ussmsa.fd
@@ -12,7 +12,7 @@
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
-\ProvidesFile{ussmsa.fd} [2019/04/04]
+\ProvidesFile{ussmsa.fd} [2024/10/15]
\DeclareFontFamily{U}{ssmsa}{}
\DeclareFontShape{U}{ssmsa}{m}{n}{%
<-6>ssmsam5%
diff --git a/Master/texmf-dist/tex/latex/sansmathfonts/ussmsb.fd b/Master/texmf-dist/tex/latex/sansmathfonts/ussmsb.fd
index 5300bbc317b..89743279177 100644
--- a/Master/texmf-dist/tex/latex/sansmathfonts/ussmsb.fd
+++ b/Master/texmf-dist/tex/latex/sansmathfonts/ussmsb.fd
@@ -12,7 +12,7 @@
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
-\ProvidesFile{ussmsb.fd} [2019/04/04]
+\ProvidesFile{ussmsb.fd} [2024/10/15]
\DeclareFontFamily{U}{ssmsb}{}
\DeclareFontShape{U}{ssmsb}{m}{n}{%
<-6>ssmsbm5%
diff --git a/Master/texmf-dist/tex/latex/sansmathfonts/uxcmss.fd b/Master/texmf-dist/tex/latex/sansmathfonts/uxcmss.fd
index 86aa7936945..6663049df51 100644
--- a/Master/texmf-dist/tex/latex/sansmathfonts/uxcmss.fd
+++ b/Master/texmf-dist/tex/latex/sansmathfonts/uxcmss.fd
@@ -4,6 +4,7 @@
%%
%% It is part of the sansmathfonts package.
%%
+%% It 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
@@ -13,7 +14,7 @@
%%
%%
\ProvidesFile{uxcmss.fd}
- [2021/06/22]
+ [2024/10/15]
\DeclareFontFamily{U}{xcmss}{\hyphenchar\font45 }
\DeclareFontShape{U}{xcmss}{m}{n}
{%
diff --git a/Master/texmf-dist/tex/latex/scaletextbullet/scaletextbullet.sty b/Master/texmf-dist/tex/latex/scaletextbullet/scaletextbullet.sty
new file mode 100644
index 00000000000..fdc80b73895
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/scaletextbullet/scaletextbullet.sty
@@ -0,0 +1,254 @@
+% Package : scaletextbullet -- Resize the \textbullet without changing its
+% vertical center
+% Copyright : 2024-2025 (c) Oliver Beery <beeryoliver@gmail.com>
+% CTAN : https://ctan.org/pkg/scaletextbullet
+% Repository: https://github.com/beeryoliver/scaletextbullet
+% License : The LaTeX Project Public License 1.3c
+
+% LaTeX2e version 2023-11-01 added \IfExplAtLeastTF.
+\NeedsTeXFormat{LaTeX2e}[2023-11-01]
+\ProvidesExplPackage
+ {scaletextbullet}
+ {2025-01-03}
+ {1.0.4}
+ {Resize the \noexpand\textbullet without changing its vertical center.}
+
+% l3kernel version 2023-10-10 added many 'e'-variants.
+\IfExplAtLeastTF { 2023-10-10 } { }
+ {
+ \msg_new:nnn { scaletextbullet } { expl3-out-of-date }
+ {
+ The~ scaletextbullet~ package~ could~ not~ load.~
+ This~ package~ requires~
+ L3~ programming~ layer~ version~ 2023-10-10~ or~ later.
+ }
+ \msg_critical:nn { scaletextbullet } { expl3-out-of-date }
+ }
+
+% This package does not require any other packages!
+
+% MESSAGES
+
+\msg_new:nnn { scaletextbullet } { factor-out-of-bounds }
+ { Invalid~ \iow_char:N \\textbullet~ factor~ '#1'~ \msg_line_context:. }
+\msg_new:nnn { scaletextbullet } { scale-out-of-bounds }
+ { Invalid~ scale~ factor~ '#1'~ \msg_line_context:. }
+\msg_new:nnn { scaletextbullet } { count-out-of-bounds }
+ {
+ Invalid~ number~ of~ \iow_char:N \\textbullet s~ '#1'~ \msg_line_context:.
+ }
+
+% SOME VARIABLES
+
+\fp_new:N \l__scaletextbullet_factor_fp
+\fp_set:Nn \l__scaletextbullet_factor_fp { 0.4 }
+
+% Used only to speed up floating point calculations.
+\fp_const:Nn \c__scaletextbullet_one_half_fp { 0.5 }
+\fp_const:Nn \c__scaletextbullet_scaletextbullets_two_fp { 2 ^ -0.5 }
+\fp_const:Nn \c__scaletextbullet_scaletextbullets_three_fp { 3 ^ -0.5 }
+
+% Scratch variables
+\int_new:N \l__scaletextbullet_tmp_int
+\fp_new:N \l__scaletextbullet_tmp_fp
+\box_new:N \l__scaletextbullet_tmp_box
+
+% SOME FUNCTIONS
+
+% Used to process user input. Sets an integer variable from an integer
+% expression and removes extra tokens.
+\cs_new_protected:Npn \__scaletextbullet_int_set_from_user:Nn #1#2
+ {
+ \afterassignment \use_none_delimit_by_q_stop:w
+ #1 = \numexpr #2 \relax
+ \q_stop
+ }
+% Argument processor
+\cs_new_protected:Npn \__scaletextbullet_arg_process_int:n #1
+ {
+ \group_begin:
+ \__scaletextbullet_int_set_from_user:Nn \l_tmpa_int {#1}
+ \exp_args:NNNV \group_end:
+ \tl_set:Nn \ProcessedArgument \l_tmpa_int
+ }
+% Lowers the \textbullet to the baseline, scales it by a factor of #2, and
+% then raises it back to the vertical center.
+% I have referenced code by the great egreg:
+% https://tex.stackexchange.com/questions/620507/how-to-resize-textbullet-without-the-bullet-moving-down
+\dim_new:N \l__scaletextbullet_bottom_dim % bottom of \textbullet
+\dim_new:N \l__scaletextbullet_center_dim % center of \textbullet
+\cs_new_protected:Npn \__scaletextbullet_box_scale:Nn #1#2
+ {
+ \hbox_set:Nn #1 { \textbullet }
+ \dim_set:Nn \l__scaletextbullet_bottom_dim
+ {
+ \box_ht:N #1
+ - \fp_to_dim:n
+ { \l__scaletextbullet_factor_fp * \dim_to_fp:n { \box_wd:N #1 } }
+ }
+ \dim_set:Nn \l__scaletextbullet_center_dim
+ {
+ \fp_to_dim:n
+ {
+ \dim_to_fp:n { \box_ht:N #1 + \l__scaletextbullet_bottom_dim }
+ * \c__scaletextbullet_one_half_fp
+ }
+ }
+ \hbox_set:Nn #1
+ {
+ \box_move_down:nn { \l__scaletextbullet_bottom_dim } { \box_use:N #1 }
+ }
+ \box_scale:Nnn #1 {#2} {#2}
+ \hbox_set:Nn #1
+ {
+ \box_move_up:nn
+ {
+ \l__scaletextbullet_center_dim
+ - \fp_to_dim:n
+ {
+ \dim_to_fp:n { \box_ht:N #1 } * \c__scaletextbullet_one_half_fp
+ }
+ }
+ { \box_use:N #1 }
+ }
+ }
+
+% DOCUMENT COMMANDS
+
+\NewDocumentCommand \SetTextBulletFactor { m }
+ { \__scaletextbullet_set_factor:n {#1} }
+\cs_new_protected:Npn \__scaletextbullet_set_factor:n #1
+ {
+ \fp_set:Nn \l__scaletextbullet_factor_fp {#1}
+ \fp_compare:nF { \c_zero_fp < \l__scaletextbullet_factor_fp <= \c_one_fp }
+ {
+ \msg_error:nne { scaletextbullet } { factor-out-of-bounds }
+ { \fp_use:N \l__scaletextbullet_factor_fp }
+ }
+ }
+
+\NewDocumentCommand \ScaleTextBullet { m }
+ { \mode_leave_vertical: \__scaletextbullet_scaletextbullet:n {#1} }
+\cs_new_protected:Npn \__scaletextbullet_scaletextbullet:n #1
+ {
+ \fp_set:Nn \l__scaletextbullet_tmp_fp {#1}
+ \fp_compare:nNnTF \l__scaletextbullet_tmp_fp > \c_zero_fp
+ {
+ \__scaletextbullet_box_scale:Nn \l__scaletextbullet_tmp_box
+ { \l__scaletextbullet_tmp_fp }
+ \box_use:N \l__scaletextbullet_tmp_box
+ }
+ {
+ \fp_compare:nNnF \l__scaletextbullet_tmp_fp = \c_zero_fp
+ {
+ \msg_error:nne { scaletextbullet } { scale-out-of-bounds }
+ { \fp_use:N \l__scaletextbullet_tmp_fp }
+ }
+ }
+ }
+
+\NewDocumentCommand \ScaleTextBullets
+ { o >{ \__scaletextbullet_arg_process_int:n } m }
+ {
+ \mode_leave_vertical:
+ \IfNoValueTF {#1}
+ { \__scaletextbullet_scaletextbullets:n {#2} }
+ { \__scaletextbullet_scaletextbullets:nn {#1} {#2} }
+ }
+\cs_new_protected:Npn \__scaletextbullet_scaletextbullets:n #1
+ {
+ \int_set:Nn \l__scaletextbullet_tmp_int {#1}
+ \int_compare:nNnTF \l__scaletextbullet_tmp_int > 0
+ {
+ \int_case:nnF { \l__scaletextbullet_tmp_int }
+ {
+ { 1 }
+ { \fp_set_eq:NN \l__scaletextbullet_tmp_fp \c_one_fp }
+ { 2 }
+ {
+ \fp_set_eq:NN \l__scaletextbullet_tmp_fp
+ \c__scaletextbullet_scaletextbullets_two_fp
+ }
+ { 3 }
+ {
+ \fp_set_eq:NN \l__scaletextbullet_tmp_fp
+ \c__scaletextbullet_scaletextbullets_three_fp
+ }
+ { 4 }
+ {
+ \fp_set_eq:NN \l__scaletextbullet_tmp_fp
+ \c__scaletextbullet_one_half_fp
+ }
+ }
+ {
+ \fp_set:Nn \l__scaletextbullet_tmp_fp
+ { \int_use:N \l__scaletextbullet_tmp_int ^ -0.5 }
+ }
+ \__scaletextbullet_box_scale:Nn \l__scaletextbullet_tmp_box
+ { \l__scaletextbullet_tmp_fp }
+ \prg_replicate:nn { \l__scaletextbullet_tmp_int }
+ { \box_use:N \l__scaletextbullet_tmp_box }
+ }
+ {
+ \int_if_zero:nF { \l__scaletextbullet_tmp_int }
+ {
+ \msg_error:nnV { scaletextbullet } { count-out-of-bounds }
+ \l__scaletextbullet_tmp_int
+ }
+ }
+ }
+\cs_new_protected:Npn \__scaletextbullet_scaletextbullets:nn #1#2
+ {
+ \fp_set:Nn \l__scaletextbullet_tmp_fp {#1}
+ \fp_compare:nNnTF \l__scaletextbullet_tmp_fp > \c_zero_fp
+ {
+ \int_set:Nn \l__scaletextbullet_tmp_int {#2}
+ \int_compare:nNnTF \l__scaletextbullet_tmp_int > 0
+ {
+ \__scaletextbullet_box_scale:Nn \l__scaletextbullet_tmp_box
+ { \l__scaletextbullet_tmp_fp }
+ \prg_replicate:nn { \l__scaletextbullet_tmp_int }
+ { \box_use:N \l__scaletextbullet_tmp_box }
+ }
+ {
+ \int_if_zero:nF { \l__scaletextbullet_tmp_int }
+ {
+ \msg_error:nnV { scaletextbullet } { count-out-of-bounds }
+ \l__scaletextbullet_tmp_int
+ }
+ }
+ }
+ {
+ \fp_compare:nNnF \l__scaletextbullet_tmp_fp = \c_zero_fp
+ {
+ \msg_error:nne { scaletextbullet } { scale-out-of-bounds }
+ { \fp_use:N \l__scaletextbullet_tmp_fp }
+ }
+ }
+ }
+
+\NewDocumentCommand \scaletextbulletdebug { }
+ { \mode_leave_vertical: \__scaletextbullet_debug: }
+% I have referenced code by the great egreg:
+% https://tex.stackexchange.com/questions/620507/how-to-resize-textbullet-without-the-bullet-moving-down
+\cs_new_protected:Npn \__scaletextbullet_debug:
+ {
+ \int_step_inline:nn { 15 }
+ {
+ \fp_set:Nn \l__scaletextbullet_tmp_fp { ##1 ^ -0.5 }
+ \__scaletextbullet_box_scale:Nn \l__scaletextbullet_tmp_box
+ { \l__scaletextbullet_tmp_fp }
+ \box_use:N \l__scaletextbullet_tmp_box
+ }
+ \,
+ \group_begin:
+ \dim_set:Nn \fboxrule { 0.1pt }
+ \dim_zero:N \fboxsep
+ \framebox
+ [
+ \fp_to_dim:n
+ { \l__scaletextbullet_factor_fp * \dim_to_fp:n { \width } }
+ ]
+ { \textbullet }
+ \group_end:
+ } \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/schooldocs/schooldocs.sty b/Master/texmf-dist/tex/latex/schooldocs/schooldocs.sty
index 89b017399a5..3303a9dadbb 100644
--- a/Master/texmf-dist/tex/latex/schooldocs/schooldocs.sty
+++ b/Master/texmf-dist/tex/latex/schooldocs/schooldocs.sty
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 2020-2024 by Antoine Missier <antoine.missier@ac-toulouse.fr>
+%% Copyright (C) 2020-2025 by Antoine Missier <antoine.missier@ac-toulouse.fr>
%%
%% This file may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3 of this license
@@ -22,12 +22,12 @@
%%
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{schooldocs}
- [2024/01/31 v1.5 .dtx Layout styles for school documents]
+ [2025/01/15 v1.6 Layout styles for school documents]
\@ifpackageloaded{geometry}{}{\RequirePackage{geometry}}
\let\footruleskip\relax % because the memoir class uses it
\RequirePackage{fancyhdr}
\RequirePackage{ifthen}
-\RequirePackage{lastpage}
+\RequirePackage{totpages} % lastpage nowadays incompatible with hyperref
\RequirePackage{fancybox}
\RequirePackage{xcolor}
\RequirePackage{translations}
@@ -70,7 +70,8 @@
\renewcommand{\title}[2][]{\long\def\@title{#2}
\ifthenelse{\equal{#1}{}}{\def\@headtitle{#2}}{\def\@headtitle{#1}}
\ifx\@onlypreamble\@notprerr\else
- \@ifpackageloaded{hyperref}{\hypersetup{pdftitle={\@headtitle}}}{}
+ \@ifpackageloaded{hyperref}%
+ {\hypersetup{pdftitle={\@headtitle}}}{}
\fi
}
\title{}
@@ -87,9 +88,11 @@
\let\subject\relax
\newcommand{\subject}[2][]{\long\def\@subject{#2}
- \ifthenelse{\equal{#1}{}}{\def\@headsubject{#2}}{\def\@headsubject{#1}}
+ \ifthenelse{\equal{#1}{}}%
+ {\def\@headsubject{#2}}{\def\@headsubject{#1}}
\ifx\@onlypreamble\@notprerr\else
- \@ifpackageloaded{hyperref}{\hypersetup{pdfsubject={\@headsubject}}}{}
+ \@ifpackageloaded{hyperref}%
+ {\hypersetup{pdfsubject={\@headsubject}}}{}
\fi
}
\def\@subject{}
@@ -142,7 +145,7 @@
\par\vspace{0.5\titlesep} \datestyle\@date}
\par\vspace{0.5\titlesep}
}
- \ifthenelse{\lengthtest{##1 > 0cm}}{\rule{##1}{\seprulewidth}}{}
+ \ifthenelse{\lengthtest{##1>0cm}}{\rule{##1}{\seprulewidth}}{}
\end{\titleflush}
\vspace{\titlebottomskip}
}
@@ -186,7 +189,7 @@
\headsubjectstyle\@subject}{\headtitlestyle\@headtitle} }
\rhead{\headstyle\ifthenelse{\thepage=1}{\authorstyle\@author\mbox{}\\
\headdatestyle\@date}{\headsubjectstyle\@headsubject}}
- \cfoot{\footstyle \thepage /\pageref{LastPage}}
+ \cfoot{\footstyle \thepage /\pageref{TotPages}}
\setlength{\titletopskip}{-0.67cm}
\renewcommand{\maketitle}[1][\seprulelength]{%
\newpage\mbox{}\par\vspace{\titletopskip}
@@ -216,7 +219,7 @@
\ifthenelse{\thepage=1}{}{\headtitlestyle\@headtitle}}
\rhead{\headstyle
\ifthenelse{\thepage=1}{}{%
- \pagenamestyle\pagename~\thepage /\pageref{LastPage}}}
+ \pagenamestyle\pagename~\thepage /\pageref{TotPages}}}
\lfoot{\ifthenelse{\thepage=1}{\footstyle\schoolstyle\@school}{}}
\cfoot{}
\rfoot{\ifthenelse{\thepage=1}{\footstyle\authorstyle\@author}{}}
@@ -229,7 +232,7 @@
\ifthenelse{\thepage=1}{}{\headsubjectstyle\@headsubject}}
\lfoot{\ifthenelse{\thepage=1}{\footstyle\schoolstyle\@school}{}}
\cfoot{\ifthenelse{\thepage=1}{}{
- \footstyle\thepage /\pageref{LastPage}}}
+ \footstyle\thepage /\pageref{TotPages}}}
\rfoot{\footstyle\ifthenelse{\thepage=1}{%
\authorstyle\@author
\ifx\@author\empty\else\\ \fi
@@ -267,7 +270,7 @@
\ifthenelse{\thepage=1}{}{\headtitlestyle\@headtitle}}
\rhead{\headstyle
\ifthenelse{\thepage=1}{}{%
- \pagenamestyle\pagename~\thepage /\pageref{LastPage}}}
+ \pagenamestyle\pagename~\thepage /\pageref{TotPages}}}
\lfoot{\footstyle{\schoolstyle\@school}
\ifthenelse{\thepage=1}{\ifx\@author\empty\else\\ \fi
\authorstyle\@author}{}
@@ -320,7 +323,7 @@
\schoolstyle\@school
}
\cfoot{}
- \rfoot{\footstyle \pagenamestyle\pagename~\thepage/\pageref{LastPage}}
+ \rfoot{\footstyle \pagenamestyle\pagename~\thepage/\pageref{TotPages}}
\setlength{\titletopskip}{0.67cm}
\setlength{\titlesep}{2\bigskipamount}
\renewcommand{\titlestyle}{\LARGE\MakeUppercase}
diff --git a/Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.cls b/Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.cls
index 9b25c465da3..a1c7ad23686 100644
--- a/Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.cls
+++ b/Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.cls
@@ -24,24 +24,24 @@
%%
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version
-%% 1.2 of this license or (at your option) any later version.
+%% 1.3c of this license or (at your option) any later version.
%% The latest version of this license is in:
%%
%% http://www.latex-project.org/lppl.txt
%%
-%% and version 1.2 or later is part of all distributions of LaTeX
+%% and version 1.3c or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%%
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{schwalbe}[2022/06/23]
+\ProvidesClass{schwalbe}[2025/01/21]
\DeclareOption{ruler}{%
\AtBeginDocument{\IfFileExists{__finalpdf__.tex}{}{%
\ShowRuler{32mm / 1pt}{-44mm / 1pt}}}
}%
\ProcessOptions\relax%
\LoadClass[11pt,a4paper]{article}
-\RequirePackage[12pt]{schwalbe}[2022/06/23]
+\RequirePackage[12pt]{schwalbe}[2025/01/21]
\RequirePackage{swruler}[2022/06/19]
\RequirePackage{cpdparse}[2020/12/27]
\RequirePackage[T2A,T1]{fontenc}% fsRUS 140121
diff --git a/Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.sty b/Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.sty
index 616549dc9d5..a739a747c64 100644
--- a/Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.sty
+++ b/Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.sty
@@ -24,17 +24,17 @@
%%
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version
-%% 1.2 of this license or (at your option) any later version.
+%% 1.3c of this license or (at your option) any later version.
%% The latest version of this license is in:
%%
%% http://www.latex-project.org/lppl.txt
%%
-%% and version 1.2 or later is part of all distributions of LaTeX
+%% and version 1.3c or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%%
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{schwalbe}[2022/06/23]
+\ProvidesPackage{schwalbe}[2025/01/21]
\DeclareOption{10pt}{\PassOptionsToPackage{10pt}{diagram}}
\DeclareOption{11pt}{\PassOptionsToPackage{11pt}{diagram}}
\DeclareOption{12pt}{\PassOptionsToPackage{12pt}{diagram}}
@@ -99,9 +99,14 @@
\ifnormal@names%
\def\@dianame{\@normalname}%
\fi%
- \@firsttrue%
- \let\@action=\@dia@writename% Parse the list of authors
- \@parseTokenlist\aut@tk;%
+ \ifthenelse{\boolean{@cpd@numbering@local}}{%
+ \@firsttrue%
+ \let\@action=\sw@dia@writename% Parse the list of authors
+ \@parseTokenlist\aut@tk;%
+ }{%
+ \let\@action=\@dia@writename% Parse the list of authors
+ \@parseTokenlist\aut@tk;%
+ }%
\else%
\ifthenelse{\boolean{@cpd@numbering@local}}{%
\above@newline%
@@ -109,7 +114,7 @@
}{}%
\fi%
}
-\def\@dia@writename#1; {%
+\def\sw@dia@writename#1; {%
\above@newline
\if@first%
\@firstfalse%
diff --git a/Master/texmf-dist/tex/latex/schwalbe-chess/swruler.sty b/Master/texmf-dist/tex/latex/schwalbe-chess/swruler.sty
index 273bd57ed3d..b831b2a81c3 100644
--- a/Master/texmf-dist/tex/latex/schwalbe-chess/swruler.sty
+++ b/Master/texmf-dist/tex/latex/schwalbe-chess/swruler.sty
@@ -24,12 +24,12 @@
%%
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version
-%% 1.2 of this license or (at your option) any later version.
+%% 1.3c of this license or (at your option) any later version.
%% The latest version of this license is in:
%%
%% http://www.latex-project.org/lppl.txt
%%
-%% and version 1.2 or later is part of all distributions of LaTeX
+%% and version 1.3c or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%%
%%
diff --git a/Master/texmf-dist/tex/latex/koma-script/float.hak b/Master/texmf-dist/tex/latex/scrhack/float.hak
index ee0ea9e7f42..001e663e34a 100644
--- a/Master/texmf-dist/tex/latex/koma-script/float.hak
+++ b/Master/texmf-dist/tex/latex/scrhack/float.hak
@@ -1,77 +1,32 @@
%%
%% This is file `float.hak',
-%% generated with the docstrip utility, extended by scrdocstrip.
+%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% scrkernel-version.dtx (with options: `file,float.hak')
-%% scrhack.dtx (with options: `hack,float,identify')
-%% scrhack.dtx (with options: `hack,float,body')
+%% scrhack-2023-07-07.dtx (with options: `hack,float,identify')
+%% scrhack-2023-07-07.dtx (with options: `hack,float,body')
%%
-%% Copyright (c) 2008-2022 Markus Kohm [komascript at gmx info]
+%% IMPORTANT NOTICE:
%%
-%% This file was generated from file(s) of the KOMA-Script bundle.
-%% ---------------------------------------------------------------
+%% For the copyright see the source file.
%%
-%% It may be distributed under the conditions of the
-%% LaTeX Project Public License in the version distributed together
-%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'.
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from float.hak.
%%
-%% This file may only be distributed together with a copy of the
-%% KOMA-Script bundle. You may however distribute the
-%% KOMA-Script bundle without all such generated files. See also
-%% `lppl.txt' or `lppl-de.txt' for additional information.
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx.
%%
-%% The list of files belonging to KOMA-Script distribution is given in
-%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for
-%% additional information.
-%%
-%% If this file is a beta version, you may not be allowed to distribute
-%% it. Look at the comments below to see if this is the case.
-%%
-%% English and German manuals are part of KOMA-Script bundle.
-%% ----------------------------------------------------------
-%%
-%% See `README'.
-%%
-%% The KOMA-Script bundle (but maybe not this file) was based upon the
-%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e
-%% standard classes created by The LaTeX3 Project 1994-1996. You can
-%% find a complete unmodified copy of LaTeX2e at
-%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
-%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
\ProvidesFile{float.hak}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024-04-17 v3.42
scrhack part
(hacking package
float)%
]
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
\scr@ifexpected{\newfloat}{%
\long\def\newfloat#1#2#3{\@namedef{ext@#1}{#3}
\let\float@do=\relax
diff --git a/Master/texmf-dist/tex/latex/koma-script/floatrow.hak b/Master/texmf-dist/tex/latex/scrhack/floatrow.hak
index 48eb7568414..ee02ca9d739 100644
--- a/Master/texmf-dist/tex/latex/koma-script/floatrow.hak
+++ b/Master/texmf-dist/tex/latex/scrhack/floatrow.hak
@@ -1,77 +1,32 @@
%%
%% This is file `floatrow.hak',
-%% generated with the docstrip utility, extended by scrdocstrip.
+%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% scrkernel-version.dtx (with options: `file,floatrow.hak')
-%% scrhack.dtx (with options: `hack,floatrow,identify')
-%% scrhack.dtx (with options: `hack,floatrow,body')
+%% scrhack-2023-07-07.dtx (with options: `hack,floatrow,identify')
+%% scrhack-2023-07-07.dtx (with options: `hack,floatrow,body')
%%
-%% Copyright (c) 2008-2022 Markus Kohm [komascript at gmx info]
+%% IMPORTANT NOTICE:
%%
-%% This file was generated from file(s) of the KOMA-Script bundle.
-%% ---------------------------------------------------------------
+%% For the copyright see the source file.
%%
-%% It may be distributed under the conditions of the
-%% LaTeX Project Public License in the version distributed together
-%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'.
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from floatrow.hak.
%%
-%% This file may only be distributed together with a copy of the
-%% KOMA-Script bundle. You may however distribute the
-%% KOMA-Script bundle without all such generated files. See also
-%% `lppl.txt' or `lppl-de.txt' for additional information.
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx.
%%
-%% The list of files belonging to KOMA-Script distribution is given in
-%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for
-%% additional information.
-%%
-%% If this file is a beta version, you may not be allowed to distribute
-%% it. Look at the comments below to see if this is the case.
-%%
-%% English and German manuals are part of KOMA-Script bundle.
-%% ----------------------------------------------------------
-%%
-%% See `README'.
-%%
-%% The KOMA-Script bundle (but maybe not this file) was based upon the
-%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e
-%% standard classes created by The LaTeX3 Project 1994-1996. You can
-%% find a complete unmodified copy of LaTeX2e at
-%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
-%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
\ProvidesFile{floatrow.hak}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024-04-17 v3.42
scrhack part
(hacking package
floatrow)%
]
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
\scr@ifexpected{\DeclareNewFloatType}{%
\long\def\DeclareNewFloatType#1#2{\def\FB@captype{#1}%
\expandafter\edef\csname ftype@#1\endcsname{\the\c@float@type}%
diff --git a/Master/texmf-dist/tex/latex/koma-script/hyperref.hak b/Master/texmf-dist/tex/latex/scrhack/hyperref.hak
index 14a8b433e9c..40386e5c211 100644
--- a/Master/texmf-dist/tex/latex/koma-script/hyperref.hak
+++ b/Master/texmf-dist/tex/latex/scrhack/hyperref.hak
@@ -1,77 +1,32 @@
%%
%% This is file `hyperref.hak',
-%% generated with the docstrip utility, extended by scrdocstrip.
+%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% scrkernel-version.dtx (with options: `file,hyperref.hak')
-%% scrhack.dtx (with options: `hack,hyperref,identify')
-%% scrhack.dtx (with options: `hack,hyperref,body')
+%% scrhack-2023-07-07.dtx (with options: `hack,hyperref,identify')
+%% scrhack-2023-07-07.dtx (with options: `hack,hyperref,body')
%%
-%% Copyright (c) 2008-2022 Markus Kohm [komascript at gmx info]
+%% IMPORTANT NOTICE:
%%
-%% This file was generated from file(s) of the KOMA-Script bundle.
-%% ---------------------------------------------------------------
+%% For the copyright see the source file.
%%
-%% It may be distributed under the conditions of the
-%% LaTeX Project Public License in the version distributed together
-%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'.
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from hyperref.hak.
%%
-%% This file may only be distributed together with a copy of the
-%% KOMA-Script bundle. You may however distribute the
-%% KOMA-Script bundle without all such generated files. See also
-%% `lppl.txt' or `lppl-de.txt' for additional information.
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx.
%%
-%% The list of files belonging to KOMA-Script distribution is given in
-%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for
-%% additional information.
-%%
-%% If this file is a beta version, you may not be allowed to distribute
-%% it. Look at the comments below to see if this is the case.
-%%
-%% English and German manuals are part of KOMA-Script bundle.
-%% ----------------------------------------------------------
-%%
-%% See `README'.
-%%
-%% The KOMA-Script bundle (but maybe not this file) was based upon the
-%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e
-%% standard classes created by The LaTeX3 Project 1994-1996. You can
-%% find a complete unmodified copy of LaTeX2e at
-%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
-%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
\ProvidesFile{hyperref.hak}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024-04-17 v3.42
scrhack part
(hacking package
hyperref)%
]
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
\scr@ifexpected\@schapter{%
\def\@schapter#1{%
\H@old@schapter{#1}%
diff --git a/Master/texmf-dist/tex/latex/koma-script/listings.hak b/Master/texmf-dist/tex/latex/scrhack/listings.hak
index 3c13953e6d4..86d461dd7d2 100644
--- a/Master/texmf-dist/tex/latex/koma-script/listings.hak
+++ b/Master/texmf-dist/tex/latex/scrhack/listings.hak
@@ -1,77 +1,32 @@
%%
%% This is file `listings.hak',
-%% generated with the docstrip utility, extended by scrdocstrip.
+%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% scrkernel-version.dtx (with options: `file,listings.hak')
-%% scrhack.dtx (with options: `hack,listings,identify')
-%% scrhack.dtx (with options: `hack,listings,body')
+%% scrhack-2023-07-07.dtx (with options: `hack,listings,identify')
+%% scrhack-2023-07-07.dtx (with options: `hack,listings,body')
%%
-%% Copyright (c) 2008-2022 Markus Kohm [komascript at gmx info]
+%% IMPORTANT NOTICE:
%%
-%% This file was generated from file(s) of the KOMA-Script bundle.
-%% ---------------------------------------------------------------
+%% For the copyright see the source file.
%%
-%% It may be distributed under the conditions of the
-%% LaTeX Project Public License in the version distributed together
-%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'.
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from listings.hak.
%%
-%% This file may only be distributed together with a copy of the
-%% KOMA-Script bundle. You may however distribute the
-%% KOMA-Script bundle without all such generated files. See also
-%% `lppl.txt' or `lppl-de.txt' for additional information.
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx.
%%
-%% The list of files belonging to KOMA-Script distribution is given in
-%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for
-%% additional information.
-%%
-%% If this file is a beta version, you may not be allowed to distribute
-%% it. Look at the comments below to see if this is the case.
-%%
-%% English and German manuals are part of KOMA-Script bundle.
-%% ----------------------------------------------------------
-%%
-%% See `README'.
-%%
-%% The KOMA-Script bundle (but maybe not this file) was based upon the
-%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e
-%% standard classes created by The LaTeX3 Project 1994-1996. You can
-%% find a complete unmodified copy of LaTeX2e at
-%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
-%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
\ProvidesFile{listings.hak}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024-04-17 v3.42
scrhack part
(hacking package
listings)%
]
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
\newcommand*{\scr@do@hack@listings}{%
\RequirePackage{tocbasic}%
\addtotoclist[float]{lol}%
diff --git a/Master/texmf-dist/tex/latex/scrhack/lscape.hak b/Master/texmf-dist/tex/latex/scrhack/lscape.hak
new file mode 100644
index 00000000000..f00bf116889
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/scrhack/lscape.hak
@@ -0,0 +1,49 @@
+%%
+%% This is file `lscape.hak',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% scrhack-2023-07-07.dtx (with options: `hack,lscape,identify')
+%% scrhack-2023-07-07.dtx (with options: `hack,lscape,body')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from lscape.hak.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+\ProvidesFile{lscape.hak}[%
+ 2024-04-17 v3.42
+ scrhack part
+ (hacking package
+ lscape)%
+]
+\xpatchcmd{\landscape}{\textheight=\vsize}{%
+ \if@scrhack@lscape
+ \scrh@LT@textheight=\vsize
+ \let\scrh@LT@outputpage\@outputpage
+ \def\@outputpage{\scrh@LT@outputpage\global\@colht\scrh@LT@textheight}%
+ \else
+ \textheight=\vsize
+ \fi
+}{%
+ \PackageInfo{scrhack}{\string\landscape\space patched to make
+ \string\textheight\space change optional}%
+}{%
+ \PackageWarning{scrhack}{Cannot patch \string\landscape!\MessageBreak
+ Maybe you are using a unsupported lscape version}%
+ \@scrhack@lscapefalse
+}
+\newlength{\scrh@LT@textheight}
+\endinput
+%%
+%% End of file `lscape.hak'.
diff --git a/Master/texmf-dist/tex/latex/koma-script/nomencl.hak b/Master/texmf-dist/tex/latex/scrhack/nomencl.hak
index 6e99a43d9da..188ad4b57c5 100644
--- a/Master/texmf-dist/tex/latex/koma-script/nomencl.hak
+++ b/Master/texmf-dist/tex/latex/scrhack/nomencl.hak
@@ -1,77 +1,32 @@
%%
%% This is file `nomencl.hak',
-%% generated with the docstrip utility, extended by scrdocstrip.
+%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% scrkernel-version.dtx (with options: `file,nomencl.hak')
-%% scrhack.dtx (with options: `hack,nomencl,identify')
-%% scrhack.dtx (with options: `hack,nomencl,body')
+%% scrhack-2023-07-07.dtx (with options: `hack,nomencl,identify')
+%% scrhack-2023-07-07.dtx (with options: `hack,nomencl,body')
%%
-%% Copyright (c) 2008-2022 Markus Kohm [komascript at gmx info]
+%% IMPORTANT NOTICE:
%%
-%% This file was generated from file(s) of the KOMA-Script bundle.
-%% ---------------------------------------------------------------
+%% For the copyright see the source file.
%%
-%% It may be distributed under the conditions of the
-%% LaTeX Project Public License in the version distributed together
-%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'.
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from nomencl.hak.
%%
-%% This file may only be distributed together with a copy of the
-%% KOMA-Script bundle. You may however distribute the
-%% KOMA-Script bundle without all such generated files. See also
-%% `lppl.txt' or `lppl-de.txt' for additional information.
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx.
%%
-%% The list of files belonging to KOMA-Script distribution is given in
-%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for
-%% additional information.
-%%
-%% If this file is a beta version, you may not be allowed to distribute
-%% it. Look at the comments below to see if this is the case.
-%%
-%% English and German manuals are part of KOMA-Script bundle.
-%% ----------------------------------------------------------
-%%
-%% See `README'.
-%%
-%% The KOMA-Script bundle (but maybe not this file) was based upon the
-%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e
-%% standard classes created by The LaTeX3 Project 1994-1996. You can
-%% find a complete unmodified copy of LaTeX2e at
-%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
-%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
\ProvidesFile{nomencl.hak}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024-04-17 v3.42
scrhack part
(hacking package
nomencl)%
]
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
\RequirePackage{tocbasic}
\@ifpackagelater{nomencl}{2019/01/01}{%
\PackageInfo{scrhack}{only `tocbasic' loaded for `nomencl'}%
diff --git a/Master/texmf-dist/tex/latex/koma-script/setspace.hak b/Master/texmf-dist/tex/latex/scrhack/setspace.hak
index 6210ac4367c..6aede4d186e 100644
--- a/Master/texmf-dist/tex/latex/koma-script/setspace.hak
+++ b/Master/texmf-dist/tex/latex/scrhack/setspace.hak
@@ -1,77 +1,32 @@
%%
%% This is file `setspace.hak',
-%% generated with the docstrip utility, extended by scrdocstrip.
+%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% scrkernel-version.dtx (with options: `file,setspace.hak')
-%% scrhack.dtx (with options: `hack,setspace,identify')
-%% scrhack.dtx (with options: `hack,setspace,body')
+%% scrhack-2023-07-07.dtx (with options: `hack,setspace,identify')
+%% scrhack-2023-07-07.dtx (with options: `hack,setspace,body')
%%
-%% Copyright (c) 2008-2022 Markus Kohm [komascript at gmx info]
+%% IMPORTANT NOTICE:
%%
-%% This file was generated from file(s) of the KOMA-Script bundle.
-%% ---------------------------------------------------------------
+%% For the copyright see the source file.
%%
-%% It may be distributed under the conditions of the
-%% LaTeX Project Public License in the version distributed together
-%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'.
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from setspace.hak.
%%
-%% This file may only be distributed together with a copy of the
-%% KOMA-Script bundle. You may however distribute the
-%% KOMA-Script bundle without all such generated files. See also
-%% `lppl.txt' or `lppl-de.txt' for additional information.
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx.
%%
-%% The list of files belonging to KOMA-Script distribution is given in
-%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for
-%% additional information.
-%%
-%% If this file is a beta version, you may not be allowed to distribute
-%% it. Look at the comments below to see if this is the case.
-%%
-%% English and German manuals are part of KOMA-Script bundle.
-%% ----------------------------------------------------------
-%%
-%% See `README'.
-%%
-%% The KOMA-Script bundle (but maybe not this file) was based upon the
-%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e
-%% standard classes created by The LaTeX3 Project 1994-1996. You can
-%% find a complete unmodified copy of LaTeX2e at
-%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
-%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
\ProvidesFile{setspace.hak}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024-04-17 v3.42
scrhack part
(hacking package
setspace)%
]
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
\scr@ifexpected{\onehalfspacing}{%
\long\def\onehalfspacing{%
\setstretch{1.25}% default
diff --git a/Master/texmf-dist/tex/latex/koma-script/standardsections.hak b/Master/texmf-dist/tex/latex/scrhack/standardsections.hak
index eeda00dbe44..b337558c8ca 100644
--- a/Master/texmf-dist/tex/latex/koma-script/standardsections.hak
+++ b/Master/texmf-dist/tex/latex/scrhack/standardsections.hak
@@ -1,76 +1,31 @@
%%
%% This is file `standardsections.hak',
-%% generated with the docstrip utility, extended by scrdocstrip.
+%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% scrkernel-version.dtx (with options: `file,standardsections.hak')
-%% scrhack.dtx (with options: `hack,standardsections,identify')
-%% scrhack.dtx (with options: `hack,standardsections,body')
+%% scrhack-2023-07-07.dtx (with options: `hack,standardsections,identify')
+%% scrhack-2023-07-07.dtx (with options: `hack,standardsections,body')
%%
-%% Copyright (c) 2008-2022 Markus Kohm [komascript at gmx info]
+%% IMPORTANT NOTICE:
%%
-%% This file was generated from file(s) of the KOMA-Script bundle.
-%% ---------------------------------------------------------------
+%% For the copyright see the source file.
%%
-%% It may be distributed under the conditions of the
-%% LaTeX Project Public License in the version distributed together
-%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'.
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from standardsections.hak.
%%
-%% This file may only be distributed together with a copy of the
-%% KOMA-Script bundle. You may however distribute the
-%% KOMA-Script bundle without all such generated files. See also
-%% `lppl.txt' or `lppl-de.txt' for additional information.
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack-2023-07-07.dtx scrhack-2023-07-07.dtx.
%%
-%% The list of files belonging to KOMA-Script distribution is given in
-%% the file `MANIFEST.md'. See also `lppl.txt' or `lppl-de.txt' for
-%% additional information.
-%%
-%% If this file is a beta version, you may not be allowed to distribute
-%% it. Look at the comments below to see if this is the case.
-%%
-%% English and German manuals are part of KOMA-Script bundle.
-%% ----------------------------------------------------------
-%%
-%% See `README'.
-%%
-%% The KOMA-Script bundle (but maybe not this file) was based upon the
-%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e
-%% standard classes created by The LaTeX3 Project 1994-1996. You can
-%% find a complete unmodified copy of LaTeX2e at
-%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
-%%
-%%% From File: $Id: scrkernel-version.dtx 4070 2023-07-07 07:08:40Z kohm $
-\begingroup
- \catcode`\@11\relax
- \ifx\KOMAScriptVersion\undefined
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \gdef\KOMAScriptVersion{#1}%
- }%
- \else
- \newcommand*{\@CheckKOMAScriptVersion}[1]{%
- \def\@tempa{#1}%
- \ifx\KOMAScriptVersion\@tempa\else
- \@latex@warning@no@line{%
- \noexpand\KOMAScriptVersion\space is
- `\KOMAScriptVersion',\MessageBreak
- but `#1' was expected!\MessageBreak
- You should not use classes, packages or files
- from\MessageBreak
- different KOMA-Script versions%
- }%
- \fi
- }
- \fi
- \@CheckKOMAScriptVersion{2023/07/07 v3.41 KOMA-Script}%
-\endgroup
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
\ProvidesFile{standardsections.hak}[%
- 2023/07/07 v3.41 KOMA-Script
+ 2024-04-17 v3.42
scrhack part
(defining standard LaTeX class section headings)%
]
-%%% From File: $Id: scrhack.dtx 4063 2023-06-28 08:28:26Z kohm $
\PackageWarningNoLine{scrhack}{%
You are loosing every kind of support because of\MessageBreak
using the dangerous standard classes sections hack!\MessageBreak
@@ -93,9 +48,6 @@
\@ifpackageloaded{sectsty}{%
\PackageWarning{scrhack}{this hack should not be loaded after `sectsty'}%
}{}
-\@ifpackageloaded{sectsty}{%
- \PackageWarning{scrhack}{this hack should not be loaded after `sectsty'}%
-}{}
\scr@ifundefinedorrelax{chapter}{%
\scr@ifundefinedorrelax{c@part}{\newcounter{part}}{}%
\scr@ifundefinedorrelax{c@section}{\newcounter{section}}{}%
@@ -467,7 +419,7 @@
Resetting \string\@ssect,\MessageBreak
because of loading standard classes sections hack%
}%
- \let\@sect\scr@latex@ssect
+ \let\@ssect\scr@latex@ssect
\fi
}
\scr@ifundefinedorrelax{scr@latex@xsect}{}{%
@@ -476,7 +428,7 @@
Resetting \string\@xsect,\MessageBreak
because of loading standard classes sections hack%
}%
- \let\@sect\scr@latex@sect
+ \let\@xsect\scr@latex@xsect
\fi
}
\scr@ifundefinedorrelax{DeclareSectionCommand}{}{%
diff --git a/Master/texmf-dist/tex/latex/scripture/scripture.sty b/Master/texmf-dist/tex/latex/scripture/scripture.sty
index 5cdbca4dce9..512dcccca7b 100644
--- a/Master/texmf-dist/tex/latex/scripture/scripture.sty
+++ b/Master/texmf-dist/tex/latex/scripture/scripture.sty
@@ -25,8 +25,17 @@
%% and the derived files scripture.sty and scripture.pdf
%%
\NeedsTeXFormat{LaTeX2e}[2022-11-01]
-\ProvidesExplPackage{scripture}{2023/12/27}{2.0}
+\ProvidesExplPackage{scripture}{2025/01/02}{2.1}
{Format Scripture Quotations (DCP)}
+\bool_new:N \l__scripture_textdir_change_in_group_bool
+\cs_new_protected:Nn \__scripture_set_textdirection:
+ {
+ \sys_if_engine_luatex:T
+ {
+ \textdirection \int_use:N \textdirection
+ \bool_set_true:N \l__scripture_textdir_change_in_group_bool
+ }
+ }
\msg_new:nnnn { scripture } { nested-environment }
{ Nesting~of~scripture~environments~not~supported. }
{ You~have~tried~to~nest~a~scripture~environment~or \\
@@ -39,6 +48,12 @@
{ Language~requested~without~support. }
{ You~have~requested~language=#1,~but~neither~babel~nor~polyglossia~
have~been~loaded~and~set~up.~Ignoring~option~language=#1. }
+\msg_new:nnnn { scripture } { heading-error }
+ { \token_to_str:N \heading \c_space_tl not~support~within~inner~
+ environments. }
+ { You~have~tried~to~use~\token_to_str:N \heading \c_space_tl within~the~
+ `#1'~environment,~but~this~macro~is~only~supported~in~the~main~
+ `scripture'~environment. }
\msg_new:nnnn { scripture } { unknown-style }
{ Style~#1~not~defined. }
{ You~have~requested~style=#1,~but~it~has~not~been~defined.~
@@ -55,6 +70,12 @@
, added / format .cs_set:Np = \__scripture_added_format:n #1
, added / format .value_required:n = true
, added / format .initial:n = \emph { #1 }
+ , after .tl_set:N = \l__scripture_after_tl
+ , after .value_required:n = true
+ , after .initial:n =
+ , before .tl_set:N = \l__scripture_before_tl
+ , before .value_required:n = true
+ , before .initial:n =
, belowskip .tl_set:N = \l__scripture_belowskip_tl
, belowskip .value_required:n = true
, belowskip .initial:n = \c_zero_skip
@@ -65,6 +86,26 @@
, compact .bool_set:N = \l__scripture_compact_bool
, compact .default:n = true
, compact .initial:n = false
+ , chapter / align .choices:nn = { left, right }
+ {
+ \tl_if_exist:NF \l__scripture_chapter_align_tl
+ { \tl_new:N \l__scripture_chapter_align_tl }
+ \str_case:Vn \l_keys_choice_tl
+ {
+ { left }
+ {
+ \tl_set:Nn \l__scripture_chapter_align_tl
+ { l }
+ }
+ { right }
+ {
+ \tl_set:Nn \l__scripture_chapter_align_tl
+ { r }
+ }
+ }
+ }
+ , chapter / align .value_required:n = true
+ , chapter / align .initial:n = left
, chapter / font .tl_set:N = \l__scripture_chap_font_tl
, chapter / font .value_required:n = true
, chapter / font .initial:n = \bfseries
@@ -82,21 +123,115 @@
, chapter / hide .default:n = true
, chapter / nodrop .bool_set_inverse:N = \l__scripture_chap_drop_bool
, chapter / nodrop .default:n = true
+ , chapter / para .bool_set:N = \l__scripture_chap_para_bool
+ , chapter / para .default:n = true
+ , chapter / para .initial:n = false
+ , chapter / para / aboveskip .tl_set:N = \l__scripture_chap_para_aboveskip_tl
+ , chapter / para / aboveskip .value_required:n = true
+ , chapter / para / aboveskip .initial:n = \bigskipamount
+ , chapter / para / belowskip .tl_set:N = \l__scripture_chap_para_belowskip_tl
+ , chapter / para / belowskip .value_required:n = true
+ , chapter / para / belowskip .initial:n = \medskipamount
+ , chapter / para / indent .code:n = {
+ \bool_set:Nn
+ \l__scripture_chap_para_afterindent_bool
+ { \str_if_eq_p:nn { #1 } { true } }
+ }
+ , chapter / para / indent .default:n = true
+ , chapter / para / indent .initial:n = true
, chapter / sep .tl_set:N = \l__scripture_chap_sep_tl
, chapter / sep .value_required:n = true
- , chapter / sep .initial:n = 0.5 em
+ , chapter / sep .initial:n = 0.5em
, chapter / show .bool_set:N = \l__scripture_chap_show_bool
, chapter / show .default:n = true
, chapter / show .initial:n = true
, chapter / showverse .bool_set:N = \l__scripture_chap_show_verse_bool
, chapter / showverse .default:n = true
, chapter / showverse .initial:n = false
+ , chapter / smash .bool_set:N = \l__scripture_chap_smash_bool
+ , chapter / smash .default:n = true
+ , chapter / smash .initial:n = false
+ , chapter / valign .choices:nn = { bottom, middle, top }
+ {
+ \tl_if_exist:NF \l__scripture_chapter_valign_tl
+ { \tl_new:N \l__scripture_chapter_valign_tl }
+ \str_case:Vn \l_keys_choice_tl
+ {
+ { bottom }
+ {
+ \tl_set:Nn \l__scripture_chapter_valign_tl
+ { b }
+ }
+ { middle }
+ {
+ \tl_set:Nn \l__scripture_chapter_valign_tl
+ { vc }
+ }
+ { top }
+ {
+ \tl_set:Nn \l__scripture_chapter_valign_tl
+ { t }
+ }
+ }
+ }
+ , chapter / valign .value_required:n = true
+ , chapter / valign .initial:n = bottom
+ , chapter / xchar .tl_set:N = \l__scripture_X_char_tl
+ , chapter / xchar .value_required:n = true
+ , chapter / xchar .initial:n = X
+ , defaults .code:n = \cs_if_exist_use:N \__scripture_setup_reset_defaults:
+ , defaults .value_forbidden:n = true
, extraskip .tl_set:N = \l__scripture_extraskip_tl
, extraskip .value_required:n = true
, extraskip .initial:n = \medskipamount
, font .tl_set:N = \l__scripture_font_tl
, font .value_required:n = true
, font .initial:n =
+ , heading / aboveskip .tl_set:N = \l__scripture_heading_aboveskip_tl
+ , heading / aboveskip .value_required:n = true
+ , heading / aboveskip .initial:n = \bigskipamount
+ , heading / afterindent .bool_set:N = \l__scripture_heading_afterindent_bool
+ , heading / afterindent .default:n = true
+ , heading / afterindent .initial:n = false
+ , heading / align .choices:nn = { left, right, center }
+ {
+ \tl_if_exist:NF \l__scripture_heading_align_tl
+ { \tl_new:N \l__scripture_heading_align_tl }
+ \str_case:Vn \l_keys_choice_tl
+ {
+ { left }
+ {
+ \tl_set:Nn \l__scripture_heading_align_tl
+ { \raggedright }
+ }
+ { right }
+ {
+ \tl_set:Nn \l__scripture_heading_align_tl
+ { \raggedleft }
+ }
+ { center }
+ {
+ \tl_set:Nn \l__scripture_heading_align_tl
+ { \centering }
+ }
+ }
+ }
+ , heading / align .value_required:n = true
+ , heading / align .initial:n = left
+ , heading / belowskip .tl_set:N = \l__scripture_heading_belowskip_tl
+ , heading / belowskip .value_required:n = true
+ , heading / belowskip .initial:n = \medskipamount
+ , heading / font .tl_set:N = \l__scripture_heading_font_tl
+ , heading / font .value_required:n = true
+ , heading / font .initial:n = \small\itshape
+ , heading / format .cs_set:Np = \__scripture_heading_format:n #1
+ , heading / format .value_required:n = true
+ , heading / format .initial:n = #1
+ , heading / hide .bool_set_inverse:N = \l__scripture_heading_show_bool
+ , heading / hide .default:n = true
+ , heading / show .bool_set:N = \l__scripture_heading_show_bool
+ , heading / show .default:n = true
+ , heading / show .initial:n = true
, indent .bool_set:N = \l__scripture_indent_bool
, indent .default:n = true
, indent .initial:n = true
@@ -105,16 +240,16 @@
, inline .initial:n = false
, inline / begin .tl_set:N = \l__scripture_inline_begin_tl
, inline / begin .value_required:n = true
- , inline / begin .initial:n = ``\,
+ , inline / begin .initial:n = ``
, inline / end .tl_set:N = \l__scripture_inline_end_tl
, inline / end .value_required:n = true
- , inline / end .initial:n = \,''
+ , inline / end .initial:n = ''
, inline / reference / format .cs_set:Np = \__scripture_inline_ref_format:n #1
, inline / reference / format .value_required:n = true
, inline / reference / format .initial:n = (#1)
, inline / reference / sep .tl_set:N = \l__scripture_inline_ref_sep_tl
, inline / reference / sep .value_required:n = true
- , inline / reference / sep .initial:n = 0.5 em
+ , inline / reference / sep .initial:n = 0.5em
, inline / version / delim .tl_set:N = \l__scripture_inline_version_delim_tl
, inline / version / delim .value_required:n = true
, inline / version / delim .initial:n = \c_space_tl
@@ -144,6 +279,12 @@
, parskip .tl_set:N = \l__scripture_parskip_tl
, parskip .value_required:n = true
, parskip .initial:n = \parskip
+ , pilcrow .bool_set:N = \l__scripture_pilcrow_bool
+ , pilcrow .default:n = true
+ , pilcrow .initial:n = false
+ , pilcrow / sep .tl_set:N = \l__scripture_pilcrow_sep_tl
+ , pilcrow / sep .value_required:n = true
+ , pilcrow / sep .initial:n = 0.25em
, redletter .bool_set:N = \l__scripture_red_letter_bool
, redletter .default:n = true
, redletter .initial:n = false
@@ -171,9 +312,28 @@
, reference / format .initial:n = #1
, reference / newline .meta:n = { reference / sep = \linewidth }
, reference / newline .value_forbidden:n = true
+ , reference / position .choices:nn = { start, end }
+ {
+ \tl_if_exist:NF \l__scripture_ref_position_tl
+ { \tl_new:N \l__scripture_ref_position_tl }
+ \tl_set_eq:NN \l__scripture_ref_position_tl \l_keys_choice_tl
+ }
+ , reference / position .value_required:n = true
+ , reference / position .initial:n = end
, reference / sep .tl_set:N = \l__scripture_ref_sep_tl
, reference / sep .value_required:n = true
- , reference / sep .initial:n = 2 em
+ , reference / sep .initial:n = 2em
+ , reference / start / inline .bool_set_inverse:N = \l__scripture_ref_start_newline_bool
+ , reference / start / inline .default:n = true
+ , reference / start / newline .bool_set:N = \l__scripture_ref_start_newline_bool
+ , reference / start / newline .default:n = true
+ , reference / start / newline .initial:n = false
+ , reference / start / sep .tl_set:N = \l__scripture_ref_start_sep_tl
+ , reference / start / sep .value_required:n = true
+ , reference / start / sep .initial:n = 1em
+ , reference / start / vsep .tl_set:N = \l__scripture_ref_vertical_sep_tl
+ , reference / start / vsep .value_required:n = true
+ , reference / start / vsep .initial:n = 0pt
, rightmargin .tl_set:N = \l__scripture_rightmargin_tl
, rightmargin .value_required:n = true
, rightmargin .initial:n = \c_zero_dim
@@ -188,7 +348,7 @@
, selah / format .initial:n = #1
, selah / sep .tl_set:N = \l__scripture_selah_sep_tl
, selah / sep .value_required:n = true
- , selah / sep .initial:n = 1 em
+ , selah / sep .initial:n = 1em
, style .choice:
, style / unknown .code:n = \msg_error:nnx
{ scripture }
@@ -196,7 +356,7 @@
{ \exp_not:n {#1} }
, textright / sep .tl_set:N = \l__scripture_text_right_sep_tl
, textright / sep .value_required:n = true
- , textright / sep .initial:n = 1 em
+ , textright / sep .initial:n = 1em
, verse / colour .tl_set:N = \l__scripture_verse_colour_tl
, verse / colour .value_required:n = true
, verse / colour .initial:n = .
@@ -218,9 +378,15 @@
, verse / format .initial:n = \textsuperscript{#1}
, verse / hide .bool_set_inverse:N = \l__scripture_verse_show_bool
, verse / hide .default:n = true
+ , verse / para .bool_set:N = \l__scripture_verse_para_bool
+ , verse / para .default:n = true
+ , verse / para .initial:n = false
+ , verse / para / indent .tl_set:N = \l__scripture_para_indent_tl
+ , verse / para / indent .value_required:n = true
+ , verse / para / indent .initial:n = \l__scripture_parindent_tl
, verse / sep .tl_set:N = \l__scripture_verse_sep_tl
, verse / sep .value_required:n = true
- , verse / sep .initial:n = 0.05 em
+ , verse / sep .initial:n = 0.05em
, verse / show .bool_set:N = \l__scripture_verse_show_bool
, verse / show .default:n = true
, verse / show .initial:n = true
@@ -233,6 +399,14 @@
, version / format .cs_set:Np = \__scripture_version_format:n #1
, version / format .value_required:n = true
, version / format .initial:n = (#1)
+ , version / position .choices:nn = { withref, end }
+ {
+ \tl_if_exist:NF \l__scripture_version_position_tl
+ { \tl_new:N \l__scripture_version_position_tl }
+ \tl_set_eq:NN \l__scripture_version_position_tl \l_keys_choice_tl
+ }
+ , version / position .value_required:n = true
+ , version / position .initial:n = withref
, center / aboveskip .tl_set:N = \l__scripture_center_aboveskip_tl
, center / aboveskip .value_required:n = true
, center / aboveskip .initial:n = \medskipamount
@@ -263,15 +437,26 @@
, hanging / belowskip .tl_set:N = \l__scripture_hanging_belowskip_tl
, hanging / belowskip .value_required:n = true
, hanging / belowskip .initial:n = \medskipamount
+ , hanging / chapter / indent .bool_set:N = \l__scripture_hanging_chapter_indent_bool
+ , hanging / chapter / indent .default:n = true
+ , hanging / chapter / indent .initial:n = true
, hanging / hang .tl_set:N = \l__scripture_hanging_hang_tl
, hanging / hang .value_required:n = true
- , hanging / hang .initial:n = 2 em
+ , hanging / hang .initial:n = 2em
, hanging / leftmargin .tl_set:N = \l__scripture_hanging_leftmargin_tl
, hanging / leftmargin .value_required:n = true
- , hanging / leftmargin .initial:n = 1 em
+ , hanging / leftmargin .initial:n = 1em
, hanging / rightmargin .tl_set:N = \l__scripture_hanging_rightmargin_tl
, hanging / rightmargin .value_required:n = true
, hanging / rightmargin .initial:n = \c_zero_dim
+ , hanging / verse / left .bool_set_inverse:N = \l__scripture_hanging_verse_right_bool
+ , hanging / verse / left .default:n = true
+ , hanging / verse / right .bool_set:N = \l__scripture_hanging_verse_right_bool
+ , hanging / verse / right .default:n = true
+ , hanging / verse / right .initial:n = true
+ , hanging / verse / sep .tl_set:N = \l__scripture_hanging_verse_sep_tl
+ , hanging / verse / sep .value_required:n = true
+ , hanging / verse / sep .initial:n = 0.05em
, midparachap / hideverse .bool_set_inverse:N = \l__scripture_midparachap_show_verse_bool
, midparachap / hideverse .default:n = true
, midparachap / showverse .bool_set:N = \l__scripture_midparachap_show_verse_bool
@@ -285,10 +470,10 @@
, narrow / belowskip .initial:n = \medskipamount
, narrow / leftmargin .tl_set:N = \l__scripture_narrow_leftmargin_tl
, narrow / leftmargin .value_required:n = true
- , narrow / leftmargin .initial:n = 1 em
+ , narrow / leftmargin .initial:n = 1em
, narrow / rightmargin .tl_set:N = \l__scripture_narrow_rightmargin_tl
, narrow / rightmargin .value_required:n = true
- , narrow / rightmargin .initial:n = 1 em
+ , narrow / rightmargin .initial:n = 1em
, poetry / aboveskip .tl_set:N = \l__scripture_poetry_aboveskip_tl
, poetry / aboveskip .value_required:n = true
, poetry / aboveskip .initial:n = \medskipamount
@@ -297,13 +482,13 @@
, poetry / belowskip .initial:n = \medskipamount
, poetry / bigindent .tl_set:N = \l__scripture_poetry_big_indent_tl
, poetry / bigindent .value_required:n = true
- , poetry / bigindent .initial:n = 4 em
+ , poetry / bigindent .initial:n = 4em
, poetry / indent .tl_set:N = \l__scripture_poetry_indent_tl
, poetry / indent .value_required:n = true
- , poetry / indent .initial:n = 1 em
+ , poetry / indent .initial:n = 1em
, poetry / leftmargin .tl_set:N = \l__scripture_poetry_leftmargin_tl
, poetry / leftmargin .value_required:n = true
- , poetry / leftmargin .initial:n = 1 em
+ , poetry / leftmargin .initial:n = 1em
, poetry / rightmargin .tl_set:N = \l__scripture_poetry_rightmargin_tl
, poetry / rightmargin .value_required:n = true
, poetry / rightmargin .initial:n = \c_zero_dim
@@ -314,9 +499,127 @@
, poetry / verse / right .initial:n = true
, poetry / verse / sep .tl_set:N = \l__scripture_poetry_verse_sep_tl
, poetry / verse / sep .value_required:n = true
- , poetry / verse / sep .initial:n = 0.05 em
+ , poetry / verse / sep .initial:n = 0.05em
}
\ProcessKeyOptions
+\tl_new:N \l__scripture_default_options_tl
+\keys_precompile:nnN { scripture }
+ {
+ , aboveskip = \c_zero_skip
+ , added / font =
+ , added / format = \emph { #1 }
+ , after =
+ , before =
+ , belowskip = \c_zero_skip
+ , colour = .
+ , compact = false
+ , chapter / align = left
+ , chapter / font = \bfseries
+ , chapter / colour = .
+ , chapter / drop = true
+ , chapter / format = #1
+ , chapter / para = false
+ , chapter / para / aboveskip = \bigskipamount
+ , chapter / para / belowskip = \medskipamount
+ , chapter / para / indent = true
+ , chapter / sep = 0.5em
+ , chapter / show = true
+ , chapter / showverse = false
+ , chapter / smash = false
+ , chapter / valign = bottom
+ , chapter / xchar = X
+ , extraskip = \medskipamount
+ , font =
+ , heading / aboveskip = \bigskipamount
+ , heading / afterindent = false
+ , heading / align = left
+ , heading / belowskip = \medskipamount
+ , heading / font = \small\itshape
+ , heading / format = #1
+ , heading / show = true
+ , indent = true
+ , inline = false
+ , inline / begin = ``
+ , inline / end = ''
+ , inline / reference / format = (#1)
+ , inline / reference / sep = 0.5em
+ , inline / version / delim = \c_space_tl
+ , inline / version / format = #1
+ , language =
+ , language / variant =
+ , leftmargin = \c_zero_dim
+ , name / font = \scshape
+ , name / format = #1
+ , parindent = \parindent
+ , parskip = \parskip
+ , pilcrow = false
+ , pilcrow / sep = 0.25em
+ , redletter = false
+ , redletter / colour = red!80!black
+ , reference / align = right
+ , reference / colour = .
+ , reference / font = \bfseries
+ , reference / format = #1
+ , reference / position = end
+ , reference / sep = 2em
+ , reference / start / newline = false
+ , reference / start / sep = 1em
+ , reference / start / vsep = 0pt
+ , rightmargin = \c_zero_dim
+ , selah / text = Selah
+ , selah / font = \itshape
+ , selah / format = #1
+ , selah / sep = 1em
+ , textright / sep = 1em
+ , verse / colour = .
+ , verse / first = false
+ , verse / firstformat = #1
+ , verse / firstsep = 0.5em
+ , verse / font =
+ , verse / format = \textsuperscript{#1}
+ , verse / para = false
+ , verse / para / indent = \l__scripture_parindent_tl
+ , verse / sep = 0.05em
+ , verse / show = true
+ , version =
+ , version / delim = \c_space_tl
+ , version / format = (#1)
+ , version / position = withref
+ , center / aboveskip = \medskipamount
+ , center / belowskip = \medskipamount
+ , center / leftmargin = \c_zero_dim
+ , center / rightmargin = \c_zero_dim
+ , flushright / aboveskip = \medskipamount
+ , flushright / belowskip = \medskipamount
+ , flushright / leftmargin = \c_zero_dim
+ , flushright / rightmargin = \c_zero_dim
+ , hanging / aboveskip = \medskipamount
+ , hanging / belowskip = \medskipamount
+ , hanging / chapter / indent = true
+ , hanging / hang = 2em
+ , hanging / leftmargin = 1em
+ , hanging / rightmargin = \c_zero_dim
+ , hanging / verse / right = true
+ , hanging / verse / sep = 0.05em
+ , midparachap / showverse = true
+ , narrow / aboveskip = \medskipamount
+ , narrow / belowskip = \medskipamount
+ , narrow / leftmargin = 1em
+ , narrow / rightmargin = 1em
+ , poetry / aboveskip = \medskipamount
+ , poetry / belowskip = \medskipamount
+ , poetry / bigindent = 4em
+ , poetry / indent = 1em
+ , poetry / leftmargin = 1em
+ , poetry / rightmargin = \c_zero_dim
+ , poetry / verse / right = true
+ , poetry / verse / sep = 0.05em
+ }
+ \l__scripture_default_options_tl
+\cs_new_protected:Nn \__scripture_setup_reset_defaults:
+ {
+ \l__scripture_default_options_tl
+ }
\cs_new_protected:Nn \__scripture_setup_style:nnn
{
\bool_if:NTF #1
@@ -335,22 +638,43 @@
\cs_generate_variant:Nn \__scripture_setup_style:nnn { nne }
\hook_new_pair:nn { scripture / chap / before } { scripture / chap / after }
\hook_new_pair:nn { scripture / verse / before } { scripture / verse / after }
+\hook_new:n { scripture / pilcrow }
+\hook_new:n { scripture / poetry / pilcrow }
\bool_new:N \l__scripture_active_bool
\bool_new:N \l__scripture_active_inner_bool
+\bool_new:N \g__scripture_mode_vertical_inner_bool
\int_new:N \l__scripture_clubpenalty_saved_int
\skip_new:N \g__scripture_prev_inner_below_skip
\dim_new:N \l__scripture_outer_itemindent_dim
\cs_new_protected_nopar:Nn \__scripture_setup_list_noindent:n
{
- \legacy_if:nT {@newlist}
+ \legacy_if:nT { @newlist }
{
\cs_set_protected_nopar:Npn \noindent
{
\skip_horizontal:n { -#1 }
+ \bool_if:NT \l__scripture_verse_para_bool
+ {
+ \peek_meaning:NTF \vs
+ {
+ \bool_gset_true:N \g__scripture_suppress_next_verse_para_bool
+ \__scripture_set_pilcrow_hook:
+ }
+ {
+ \str_if_eq:VnF \l__scripture_currenvir_str { poetry }
+ { \__scripture_pilcrow_output: }
+ }
+ }
}
\hook_gput_next_code:nn { para / end }
{
- \cs_gset_eq:NN \noindent \tex_noindent:D
+ \bool_if:NTF \l__scripture_verse_para_bool
+ {
+ \str_if_eq:VnTF \l__scripture_currenvir_str { poetry }
+ { \cs_set_eq:NN \noindent \tex_noindent:D }
+ { \cs_set_eq:NN \noindent \__scripture_para_noindent: }
+ }
+ { \cs_set_eq:NN \noindent \tex_noindent:D }
}
}
}
@@ -367,6 +691,7 @@
}
\cs_new_protected:Nn \__scripture_extra_skip:
{
+ \mode_if_vertical:F \para_end:
\int_compare:nNnT
\g__scripture_chap_par_prevgraf_int = 1
{
@@ -409,7 +734,7 @@
}
}
\box_new:N \l__scripture_ref_box
-\cs_new_protected:Nn \__scripture_format_full_ref:n
+\cs_new_protected:Nn \__scripture_format_full_ref:nn
{
\group_begin:
\l__scripture_ref_font_tl
@@ -418,11 +743,11 @@
\__scripture_ref_format:n
{
#1
- \tl_if_empty:NF \l__scripture_version_tl
+ \tl_if_empty:oF { #2 }
{
- \tl_if_empty:nF { #1 }
+ \tl_if_empty:oF { #1 }
{ \l__scripture_version_delim_tl }
- \__scripture_version_format:n { \l__scripture_version_tl }
+ \__scripture_version_format:n { #2 }
}
}
\group_end:
@@ -431,7 +756,7 @@
{
\hbox_set:Nn \l__scripture_ref_box
{
- \__scripture_format_full_ref:n { #1 }
+ \__scripture_format_full_ref:nn { #1 } \l__scripture_version_tl
}
\dim_compare:nNnT
{ \box_wd:N \l__scripture_ref_box + \g__scripture_final_line_dim + \l__scripture_ref_sep_tl }
@@ -456,6 +781,337 @@
}
\box_use:N \l__scripture_ref_box
}
+\cs_new_protected:Nn \__scripture_reference_start_inline:
+ {
+ \tl_if_empty:NF \l__scripture_ref_tl
+ {
+ \tl_if_eq:NnTF \l__scripture_version_position_tl { withref }
+ { \__scripture_format_full_ref:nn { \l__scripture_ref_tl } { \l__scripture_version_tl } }
+ { \__scripture_format_full_ref:nn { \l__scripture_ref_tl } { } }
+ \skip_horizontal:N \l__scripture_ref_start_sep_tl
+ }
+ }
+\cs_new_protected:Nn \__scripture_reference_start_newline:
+ {
+ \tl_if_empty:NF \l__scripture_ref_tl
+ {
+ \bool_gset_eq:NN \g_tmpa_bool \g__scripture_suppress_next_pilcrow_bool
+ \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool
+ \noindent
+ \bool_gset_eq:NN \g__scripture_suppress_next_pilcrow_bool \g_tmpa_bool
+ \str_if_eq:VnF \l__scripture_currenvir_str { scripture }
+ { \skip_horizontal:n { -\leftmargin } }
+ \tl_if_eq:NnTF \l__scripture_version_position_tl { withref }
+ { \__scripture_format_full_ref:nn { \l__scripture_ref_tl } { \l__scripture_version_tl } }
+ { \__scripture_format_full_ref:nn { \l__scripture_ref_tl } { } }
+ \bool_lazy_or:nnT
+ { \str_if_eq_p:Vn \l__scripture_currenvir_str { flushright } }
+ { \str_if_eq_p:Vn \l__scripture_currenvir_str { center } }
+ {
+ \hfill
+ \strut
+ }
+ \bool_if:NTF \l__scripture_compact_bool
+ { \para_end: }
+ {
+ \bool_lazy_all:nTF
+ {
+ { \l__scripture_verse_para_bool }
+ { \bool_not_p:n { \str_if_eq_p:Vn \l__scripture_currenvir_str { hanging } } }
+ { \bool_not_p:n { \str_if_eq_p:Vn \l__scripture_currenvir_str { poetry } } }
+ }
+ { \para_end: }
+ { \par }
+ }
+ \nobreak
+ \@afterheading
+ \addvspace { \l__scripture_ref_vertical_sep_tl }
+ }
+ }
+\cs_new_protected:Nn \__scripture_reference_start_peek:
+ {
+ \peek_remove_spaces:n
+ {
+ \bool_lazy_and:nnTF
+ { \str_if_eq_p:Vn \l__scripture_ref_position_tl { start } }
+ { \bool_not_p:n { \tl_if_empty_p:N \l__scripture_ref_tl } }
+ {
+ \bool_lazy_or:nnF
+ { \str_if_eq_p:Vn \l__scripture_currenvir_str { scripture } }
+ { \str_if_eq_p:Vn \l__scripture_currenvir_str { midparachap } }
+ {
+ \bool_if:NF \l__scripture_compact_bool
+ { \bool_set_true:N \l__scripture_ref_start_newline_bool }
+ }
+ \peek_analysis_map_inline:n
+ {
+ \bool_case:nF
+ {
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \heading }
+ { \__scripture_reference_start_newline: }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \noindent }
+ {
+ \bool_if:NTF \l__scripture_ref_start_newline_bool
+ { \__scripture_reference_start_newline: }
+ { \__scripture_reference_start_inline: }
+ }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \nohang }
+ {
+ \bool_if:NTF \l__scripture_ref_start_newline_bool
+ { \__scripture_reference_start_newline: }
+ { \__scripture_reference_start_inline: }
+ }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \nopilcrow }
+ {
+ \bool_if:NTF \l__scripture_ref_start_newline_bool
+ { \__scripture_reference_start_newline: }
+ { \__scripture_reference_start_inline: }
+ \peek_analysis_map_break:n
+ {
+ ##1
+ \__scripture_fix_protrusion:n { }
+ }
+ }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \begin }
+ {
+ \bool_if:NF \l__scripture_indent_bool
+ {
+ \hook_gput_next_code:nn { para / begin }
+ {
+ \bool_lazy_or:nnT
+ { \str_if_eq_p:Vn \l__scripture_currenvir_str { midparachap } }
+ { \str_if_eq_p:Vn \l__scripture_currenvir_str { scripture } }
+ { \para_omit_indent: }
+ }
+ }
+ }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \ch }
+ {
+ \bool_if:NTF \l__scripture_ref_start_newline_bool
+ { \__scripture_reference_start_newline: }
+ {
+ \cs_set_eq:NN \__scripture_temp_ch \ch
+ \RenewDocumentCommand \ch { s o m }
+ {
+ \tl_if_novalue:nF { ##2 }
+ {
+ \tl_set:Nn \l__scripture_X_char_tl { ##2 }
+ }
+ \cs_set_eq:NN \ch \__scripture_temp_ch
+ }
+ \__scripture_reference_start_inline:
+ }
+ }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs }
+ {
+ \bool_if:NTF \l__scripture_ref_start_newline_bool
+ { \__scripture_reference_start_newline: }
+ {
+ \cs_set_eq:NN \__scripture_temp_vs \vs
+ \RenewDocumentCommand \vs { m }
+ { \cs_set_eq:NN \vs \__scripture_temp_vs }
+ \__scripture_reference_start_inline:
+ }
+ }
+ }
+ {
+ \bool_if:NTF \l__scripture_ref_start_newline_bool
+ {
+ \__scripture_reference_start_newline:
+ \bool_if:NTF \l__scripture_compact_bool
+ {
+ \bool_if:NT \g__scripture_mode_vertical_inner_bool
+ { \__scripture_pilcrow_output: }
+ }
+ {
+ \str_if_eq:VnF \l__scripture_currenvir_str { poetry }
+ { \__scripture_pilcrow_output: }
+ }
+ }
+ { \__scripture_reference_start_inline: }
+ }
+ \exp_args:No \token_if_eq_meaning:NNF { ##1 } \begin
+ {
+ \tl_clear:N \l__scripture_ref_tl
+ \tl_if_eq:NnF \l__scripture_version_position_tl { end }
+ { \tl_clear:N \l__scripture_version_tl }
+ }
+ \peek_analysis_map_break:n
+ { \__scripture_fix_protrusion:o { ##1 } }
+ }
+ }
+ {
+ \peek_analysis_map_inline:n
+ {
+ \bool_case:nF
+ {
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \heading }
+ { }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \noindent }
+ { }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \nohang }
+ { }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \nopilcrow }
+ {
+ \peek_analysis_map_break:n
+ {
+ ##1
+ \__scripture_fix_protrusion:n { }
+ }
+ }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \begin }
+ {
+ \bool_if:NF \l__scripture_indent_bool
+ {
+ \hook_gput_next_code:nn { para / begin }
+ {
+ \bool_lazy_or:nnT
+ { \str_if_eq_p:Vn \l__scripture_currenvir_str { midparachap } }
+ { \str_if_eq_p:Vn \l__scripture_currenvir_str { scripture } }
+ { \para_omit_indent: }
+ }
+ }
+ }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \ch }
+ { }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs }
+ {
+ \mode_if_vertical:F
+ { \__scripture_set_pilcrow_hook: }
+ }
+ }
+ {
+ \bool_if:NTF \l__scripture_compact_bool
+ {
+ \bool_if:NT \g__scripture_mode_vertical_inner_bool
+ { \__scripture_pilcrow_output: }
+ }
+ {
+ \str_if_eq:VnF \l__scripture_currenvir_str { poetry }
+ { \__scripture_pilcrow_output: }
+ }
+ }
+ \peek_analysis_map_break:n
+ {
+ \__scripture_fix_protrusion:o { ##1 }
+ }
+ }
+ }
+ }
+ }
+\cs_new_protected:Nn \__scripture_compact_par:
+ {
+ \bool_gset_false:N \g__scripture_mode_vertical_inner_bool
+ \dim_set:Nn \parindent { \l__scripture_parindent_tl }
+ \peek_remove_spaces:n
+ {
+ \peek_analysis_map_inline:n
+ {
+ \bool_case:n
+ {
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \begin }
+ { \bool_gset_true:N \g__scripture_mode_vertical_inner_bool }
+ { \str_if_eq_p:Vn \l__scripture_currenvir_str { poetry } }
+ { }
+ { \exp_args:No \token_if_letter_p:N { ##1 } }
+ { \__scripture_pilcrow_output: }
+ { \exp_args:No \token_if_active_p:N { ##1 } }
+ { \__scripture_pilcrow_output: }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs }
+ { \__scripture_set_pilcrow_hook: }
+ }
+ \peek_analysis_map_break:n { ##1 }
+ }
+ }
+ }
+\cs_new_protected:Nn \__scripture_para_noindent:
+ {
+ \legacy_if:nTF { @newlist }
+ {
+ \tex_noindent:D
+ \peek_meaning:NTF \vs
+ {
+ \bool_gset_true:N \g__scripture_suppress_next_verse_para_bool
+ \__scripture_set_pilcrow_hook:
+ }
+ { \__scripture_pilcrow_output: }
+ }
+ {
+ \peek_meaning:NTF \vs
+ {
+ \bool_if:NT \l__scripture_verse_para_bool
+ { \para_end: }
+ \tex_noindent:D
+ \bool_gset_true:N \g__scripture_suppress_next_verse_para_bool
+ \__scripture_set_pilcrow_hook:
+ }
+ { \__scripture_pilcrow_output: }
+ }
+ }
+\bool_new:N \g__scripture_para_mode_vertical_bool
+\box_new:N \g__scripture_post_env_indent_box
+\cs_new_protected:Nn \__scripture_para_par:
+ {
+ \bool_gset_true:N \g__scripture_para_mode_vertical_bool
+ \dim_set:Nn \parindent { \l__scripture_parindent_tl }
+ \peek_remove_spaces:n
+ {
+ \peek_analysis_map_inline:n
+ {
+ \bool_case:n
+ {
+ { \exp_args:No \token_if_letter_p:N { ##1 } }
+ { \__scripture_pilcrow_output: }
+ { \exp_args:No \token_if_active_p:N { ##1 } }
+ { \__scripture_pilcrow_output: }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs }
+ { \__scripture_set_pilcrow_hook: }
+ }
+ \peek_analysis_map_break:n { ##1 }
+ }
+ }
+ }
+\cs_new_protected:Nn \__scripture_doendpe:
+ {
+ \box_gclear:N \g__scripture_post_env_indent_box
+ \legacy_if_set_true:n { @endpe }
+ \cs_set_nopar:Npn \par
+ {
+ \@restorepar
+ \clubpenalty \@clubpenalty
+ \everypar { }
+ \par
+ \legacy_if_set_false:n { @endpe }
+ \bool_gset_false:N \g__scripture_suppress_next_pilcrow_bool
+ \__scripture_para_par:
+ }
+ \everypar
+ {
+ \box_gset_to_last:N \g__scripture_post_env_indent_box
+ \hook_gput_next_code:nn { para / after }
+ { \box_gclear:N \g__scripture_post_env_indent_box }
+ \everypar { }
+ \legacy_if_set_false:n { @endpe }
+ \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool
+ \bool_if:NT \l__scripture_verse_para_bool
+ {
+ \box_set_wd:Nn
+ \g__scripture_post_env_indent_box
+ { \l__scripture_para_indent_tl }
+ }
+ }
+ }
+\cs_new_protected:Nn \__scripture_fix_protrusion:n
+ {
+ \bool_if:NTF \l__scripture_compact_bool
+ {
+ \str_if_eq:VnT \l__scripture_currenvir_str { scripture }
+ { \cs_if_exist_use:N \leftprotrusion }
+ }
+ { \cs_if_exist_use:N \leftprotrusion }
+ #1
+ }
+\cs_generate_variant:Nn \__scripture_fix_protrusion:n { o }
\bool_new:N \g__scripture_red_letter_active_bool
\cs_new_protected:Nn \__scripture_red_letter_on:
{
@@ -493,6 +1149,7 @@
{
\@ifpackageloaded { babel }
{
+ \__scripture_set_textdirection:
\selectlanguage { \l__scripture_language_tl }
}
{
@@ -530,16 +1187,23 @@
\box_new:N \l__scripture_chap_tmp_box
\dim_new:N \l__scripture_chap_fontsize_dim
\dim_new:N \l__scripture_chap_height_dim
-\dim_new:N \l__scripture_chap_width_dim
+\dim_new:N \g__scripture_chap_width_dim
\int_new:N \g__scripture_chap_par_prevgraf_int
\dim_new:N \l__scripture_chap_X_height_dim
+\dim_new:N \l__scripture_para_chap_indent_dim
+\coffin_new:N \l__scripture_nodrop_chap_coffin
+\dim_new:N \l__scripture_nodrop_chap_voffset_dim
+\cs_new_protected:Nn \__scripture_get_X_height:
+ {
+ \hbox_set:Nn \l__scripture_chap_tmp_box { \l__scripture_X_char_tl }
+ \dim_set:Nn \l__scripture_chap_X_height_dim
+ { \box_ht:N \l__scripture_chap_tmp_box }
+ }
\cs_new_protected:Nn \__scripture_drop_chap_set_up:n
{
\cs_gset_nopar:Npn \scripturecurrentchapter { #1 }
\cs_gset_nopar:Npn \scripturecurrentverse { 1 }
- \hbox_set:Nn \l__scripture_chap_tmp_box { X }
- \dim_set:Nn \l__scripture_chap_X_height_dim
- { \box_ht:N \l__scripture_chap_tmp_box }
+ \__scripture_get_X_height:
\dim_set:Nn \l__scripture_chap_height_dim
{ \baselineskip + \l__scripture_chap_X_height_dim }
\dim_set:Nn \l__scripture_chap_fontsize_dim
@@ -560,31 +1224,44 @@
{ \exp_args:NV \color_select:n \l__scripture_chapter_colour_tl }
\__scripture_chap_format:n { #1 }
}
- \dim_set:Nn \l__scripture_chap_width_dim
+ \dim_gset:Nn \g__scripture_chap_width_dim
{ \box_wd:N \l__scripture_chap_tmp_box }
\int_set_eq:NN \l__scripture_clubpenalty_saved_int \clubpenalty
\clubpenalty 10000
- \hook_gput_next_code:nn { para / after }
- {
- \int_gset_eq:NN \g__scripture_chap_par_prevgraf_int \prevgraf
- \int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1
- { \penalty 10000 }
- \hook_gput_next_code:nn { para / before }
- { \int_set_eq:NN \clubpenalty \l__scripture_clubpenalty_saved_int }
- }
+ \bool_if:NF \l__scripture_verse_para_bool
+ {
+ \hook_gput_next_code:nn { para / after }
+ {
+ \int_gset_eq:NN \g__scripture_chap_par_prevgraf_int \prevgraf
+ \int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1
+ { \penalty 10000 }
+ \hook_gput_next_code:nn { para / before }
+ { \int_set_eq:NN \clubpenalty \l__scripture_clubpenalty_saved_int }
+ }
+ }
}
\cs_new_protected:Nn \__scripture_drop_chap_output:
{
- \noindent
+ \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool
+ \cs_if_eq:NNTF \noindent \__scripture_para_noindent:
+ {
+ \legacy_if:nTF { @newlist }
+ {
+ \skip_horizontal:n { -\l__scripture_parindent_tl }
+ }
+ { \tex_noindent:D }
+ \__scripture_pilcrow_output:
+ }
+ { \noindent }
\parshape 3 ~
\dim_eval:n
- { \@totalleftmargin + \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl } ~
+ { \@totalleftmargin + \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } ~
\dim_eval:n
- { \linewidth - \l__scripture_chap_width_dim - \l__scripture_chap_sep_tl } ~
+ { \linewidth - \g__scripture_chap_width_dim - \l__scripture_chap_sep_tl } ~
\dim_eval:n
- { \@totalleftmargin + \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl } ~
+ { \@totalleftmargin + \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } ~
\dim_eval:n
- { \linewidth - \l__scripture_chap_width_dim - \l__scripture_chap_sep_tl } ~
+ { \linewidth - \g__scripture_chap_width_dim - \l__scripture_chap_sep_tl } ~
\@totalleftmargin ~
\linewidth
\group_begin:
@@ -594,27 +1271,76 @@
\group_end:
\bool_if:NT \l__scripture_chap_show_verse_bool
{ \__scripture_verse_output:n { 1 } }
+ \bool_if:NT \l__scripture_verse_para_bool
+ {
+ \hook_gput_next_code:nn { para / after }
+ {
+ \int_gset_eq:NN \g__scripture_chap_par_prevgraf_int \prevgraf
+ \int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1
+ { \penalty 10000 }
+ \hook_gput_next_code:nn { para / before }
+ { \int_set_eq:NN \clubpenalty \l__scripture_clubpenalty_saved_int }
+ }
+ }
+ \hook_gclear_next_code:n { scripture / pilcrow }
}
\cs_new_protected:Nn \__scripture_nodrop_chap:n
{
\cs_gset_nopar:Npn \scripturecurrentchapter { #1 }
\cs_gset_nopar:Npn \scripturecurrentverse { 1 }
\group_begin:
+ \bool_if:NT \l__scripture_verse_para_bool
+ {
+ \legacy_if:nF { @newlist }
+ { \mode_if_vertical:F \para_end: }
+ }
\bool_if:NTF \l__scripture_chap_show_bool
{
+ \__scripture_get_X_height:
+ \hcoffin_set:Nn \l__scripture_nodrop_chap_coffin
+ {
+ \str_if_eq:VnF \l__scripture_chapter_colour_tl { . }
+ { \exp_args:NV \color_select:n \l__scripture_chapter_colour_tl }
+ \l__scripture_chap_font_tl
+ \__scripture_chap_format:n { #1 }
+ \kern \l__scripture_chap_sep_tl
+ }
+ \dim_zero:N \l__scripture_nodrop_chap_voffset_dim
+ \tl_if_eq:NnT \l__scripture_chapter_valign_tl { t }
+ { \dim_set_eq:NN \l__scripture_nodrop_chap_voffset_dim \l__scripture_chap_X_height_dim }
+ \tl_if_eq:NnT \l__scripture_chapter_valign_tl { vc }
+ { \dim_set:Nn \l__scripture_nodrop_chap_voffset_dim { 0.5 \l__scripture_chap_X_height_dim } }
\hook_use:n { scripture / chap / before }
- \group_begin:
- \str_if_eq:VnF \l__scripture_chapter_colour_tl { . }
- { \exp_args:NV \color_select:n \l__scripture_chapter_colour_tl }
- \l__scripture_chap_font_tl
- \__scripture_chap_format:n { #1 }
- \group_end:
- \skip_horizontal:N \l__scripture_chap_sep_tl
+ \bool_if:NTF \l__scripture_chap_smash_bool
+ {
+ \mode_leave_vertical:
+ \smash
+ {
+ \exp_args:NNoo
+ \coffin_typeset:Nnnnn \l__scripture_nodrop_chap_coffin
+ { \l__scripture_chapter_align_tl }
+ { \l__scripture_chapter_valign_tl }
+ { 0pt }
+ { \l__scripture_nodrop_chap_voffset_dim }
+ }
+ }
+ {
+ \exp_args:NNoo
+ \coffin_typeset:Nnnnn \l__scripture_nodrop_chap_coffin
+ { \l__scripture_chapter_align_tl }
+ { \l__scripture_chapter_valign_tl }
+ { 0pt }
+ { \l__scripture_nodrop_chap_voffset_dim }
+ }
+ \nobreak
+ \skip_horizontal:N \c_zero_skip
\hook_use:n { scripture / chap / after }
\bool_if:NT \l__scripture_chap_show_verse_bool
{
\__scripture_verse_output:n { 1 }
}
+ \str_if_eq:VnF \l__scripture_currenvir_str { midparachap }
+ { \__scripture_pilcrow_output: }
}
{
\hook_use:n { scripture / chap / before }
@@ -622,6 +1348,87 @@
\vs { 1 }
}
\group_end:
+ \parshape 1 ~ \@totalleftmargin ~ \linewidth
+ \hook_gclear_next_code:n { scripture / pilcrow }
+ }
+\cs_new_protected:Nn \__scripture_para_chap:n
+ {
+ \cs_gset_nopar:Npn \scripturecurrentchapter { #1 }
+ \cs_gset_nopar:Npn \scripturecurrentverse { 1 }
+ \group_begin:
+ \skip_zero:N \parskip
+ \bool_if:NTF \l__scripture_chap_show_bool
+ {
+ \dim_set_eq:NN \l__scripture_para_chap_indent_dim \linewidth
+ \str_if_eq:VnTF \l__scripture_currenvir_str { scripture }
+ {
+ \dim_set:Nn \l__scripture_para_chap_indent_dim { 0.5 \l__scripture_para_chap_indent_dim }
+ }
+ {
+ \dim_add:Nn \l__scripture_para_chap_indent_dim { \leftmargin + \rightmargin }
+ \dim_set:Nn \l__scripture_para_chap_indent_dim { 0.5 \l__scripture_para_chap_indent_dim }
+ \dim_sub:Nn \l__scripture_para_chap_indent_dim \leftmargin
+ }
+ \mode_if_vertical:F \para_end:
+ \addvspace { \l__scripture_chap_para_aboveskip_tl }
+ \bool_gset_eq:NN \g_tmpa_bool \g__scripture_suppress_next_pilcrow_bool
+ \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool
+ \str_if_eq:VnTF \l__scripture_currenvir_str { midparachap }
+ { \tex_noindent:D }
+ { \noindent }
+ \bool_gset_eq:NN \g__scripture_suppress_next_pilcrow_bool \g_tmpa_bool
+ \skip_horizontal:N \l__scripture_para_chap_indent_dim
+ \hbox_overlap_center:n
+ {
+ \hook_use:n { scripture / chap / before }
+ \group_begin:
+ \str_if_eq:VnF \l__scripture_chapter_colour_tl { . }
+ { \exp_args:NV \color_select:n \l__scripture_chapter_colour_tl }
+ \l__scripture_chap_font_tl
+ \__scripture_chap_format:n { #1 }
+ \group_end:
+ \hook_use:n { scripture / chap / after }
+ }
+ \para_end:
+ \nobreak
+ \bool_lazy_any:nTF
+ {
+ { \str_if_eq_p:Vn \l__scripture_currenvir_str { scripture } }
+ { \str_if_eq_p:Vn \l__scripture_currenvir_str { midparachap } }
+ { \str_if_eq_p:Vn \l__scripture_currenvir_str { narrow } }
+ }
+ { \legacy_if_set:nn { @afterindent } { \l__scripture_chap_para_afterindent_bool } }
+ { \legacy_if_set_true:n { @afterindent } }
+ \@afterheading
+ }
+ {
+ \hook_use:n { scripture / chap / before }
+ \hook_use:n { scripture / chap / after }
+ }
+ \peek_meaning:NTF \c_space_token
+ {
+ \addvspace { \l__scripture_chap_para_belowskip_tl }
+ \group_end:
+ \hook_use:n { scripture / poetry / pilcrow }
+ }
+ {
+ \addvspace { \l__scripture_chap_para_belowskip_tl }
+ \cs_if_eq:NNTF \vs \__scripture_poetry_mode_vertical_verse:n
+ {
+ \bool_gset_eq:NN \g_tmpa_bool \g__scripture_suppress_next_pilcrow_bool
+ \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool
+ \noindent
+ \vs { 1 }
+ \bool_gset_eq:NN \g__scripture_suppress_next_pilcrow_bool \g_tmpa_bool
+ }
+ {
+ \str_if_eq:VnT \l__scripture_currenvir_str { midparachap }
+ { \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool }
+ \vs { 1 }
+ }
+ \group_end:
+ \hook_use:n { scripture / poetry / pilcrow }
+ }
}
\cs_new_protected:Nn \__scripture_chap:n
{
@@ -643,15 +1450,29 @@
\bool_if:NTF \l__scripture_mid_para_chap_bool
{ \__scripture_mid_para_drop_chap_output: }
{
- \par
+ \para_end:
\__scripture_drop_chap_output:
+ \str_if_eq:VnF \l__scripture_currenvir_str { midparachap }
+ { \__scripture_pilcrow_output: }
}
\hook_gput_next_code:nn { para / before }
{
\legacy_if:nF { @newlist }
{
\int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1
- { \extraskip }
+ {
+ \dim_compare:nNnT \parskip < \baselineskip
+ {
+ \dim_compare:nNnT { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } > \parindent
+ {
+ \hook_gput_next_code:nn { para / begin }
+ {
+ \para_omit_indent:
+ \skip_horizontal:n {\g__scripture_chap_width_dim + \l__scripture_chap_sep_tl }
+ }
+ }
+ }
+ }
\int_gzero:N \g__scripture_chap_par_prevgraf_int
}
\parshape 1 ~ \@totalleftmargin ~ \linewidth
@@ -659,6 +1480,7 @@
}
\bool_new:N \l__scripture_verse_par_start_bool
\bool_new:N \l__scripture_no_verse_first_bool
+\bool_new:N \g__scripture_suppress_next_verse_para_bool
\cs_new_protected:Nn \__scripture_verse_output:n
{
\cs_gset_nopar:Npn \scripturecurrentverse { #1 }
@@ -674,6 +1496,11 @@
\bool_set_false:N \l__scripture_no_verse_first_bool
}
\group_begin:
+ \bool_if:NT \l__scripture_verse_para_bool
+ {
+ \box_if_empty:NF \g__scripture_post_env_indent_box
+ { \box_use_drop:N \g__scripture_post_env_indent_box }
+ }
\hook_use:n { scripture / verse / before }
\bool_if:NT \l__scripture_verse_show_bool
{
@@ -697,10 +1524,87 @@
\group_end:
\kern \l__scripture_verse_sep_tl
}
+ \nobreak
+ \skip_horizontal:N \c_zero_skip
}
\hook_use:n { scripture / verse / after }
+ \hook_use:n { scripture / pilcrow }
\group_end:
}
+\cs_new_protected:Nn \__scripture_verse_compact_output:n
+ {
+ \mode_if_vertical:T
+ { \__scripture_set_pilcrow_hook: }
+ \__scripture_verse_output:n { #1 }
+ }
+\cs_new_protected:Nn \__scripture_verse_para_output:n
+ {
+ \mode_if_vertical:T
+ { \__scripture_set_pilcrow_hook: }
+ \hook_if_empty:nT { scripture / pilcrow }
+ { \dim_set:Nn \parindent \l__scripture_para_indent_tl }
+ \bool_if:NTF \g__scripture_suppress_next_verse_para_bool
+ { \bool_gset_false:N \g__scripture_suppress_next_verse_para_bool }
+ {
+ \legacy_if:nF { @newlist }
+ {
+ \mode_if_vertical:F
+ {
+ \para_end:
+ \parshape 1 ~ \@totalleftmargin ~ \linewidth
+ }
+ }
+ }
+ \__scripture_verse_output:n { #1 }
+ }
+\cs_new_protected:Nn \__scripture_hanging_verse_para:n
+ {
+ \mode_if_vertical:T
+ { \__scripture_set_pilcrow_hook: }
+ \bool_if:NF \g__scripture_suppress_next_verse_para_bool
+ {
+ \legacy_if:nF { @newlist }
+ {
+ \mode_if_vertical:F
+ {
+ \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool
+ \hook_gput_next_code:nn { para / begin }
+ { \parshape 1 ~ \@totalleftmargin ~ \linewidth }
+ \par
+ \tex_noindent:D
+ }
+ }
+ }
+ \bool_gset_false:N \g__scripture_suppress_next_verse_para_bool
+ \__scripture_hanging_verse:n { #1 }
+ }
+\bool_new:N \g__scripture_suppress_next_pilcrow_bool
+\cs_new_protected:Nn \__scripture_set_pilcrow_hook:
+ {
+ \hook_if_empty:nT { scripture / pilcrow }
+ {
+ \hook_gput_next_code:nn { scripture / pilcrow } { \__scripture_pilcrow_output: }
+ }
+ }
+\cs_new_protected:Nn \__scripture_pilcrow_output:
+ {
+ \bool_gset_false:N \g__scripture_para_mode_vertical_bool
+ \bool_gset_false:N \g__scripture_mode_vertical_inner_bool
+ \bool_if:NT \l__scripture_pilcrow_bool
+ {
+ \bool_lazy_or:nnT \l__scripture_verse_para_bool \l__scripture_compact_bool
+ {
+ \bool_if:NTF \g__scripture_suppress_next_pilcrow_bool
+ { \bool_gset_false:N \g__scripture_suppress_next_pilcrow_bool }
+ {
+ \P
+ \kern \l__scripture_pilcrow_sep_tl
+ \nobreak
+ \skip_horizontal:N \c_zero_skip
+ }
+ }
+ }
+ }
\dim_new:N \g__scripture_final_line_dim
\cs_new_protected:Nn \__scripture_calc_final_line_length:
{
@@ -709,25 +1613,35 @@
\skip_zero:N \belowdisplayshortskip
\skip_zero:N \belowdisplayskip
$$
- \dim_compare:nNnT \predisplaysize > \c_zero_dim
+ \hook_use:n { para / after }
+ \dim_compare:nNnTF \predisplaysize > \c_zero_dim
{
\dim_gset:Nn \g__scripture_final_line_dim
- { \predisplaysize - 2 em }
+ { \predisplaysize - 2em }
+ }
+ {
+ \bool_if:NT \l__scripture_textdir_change_in_group_bool
+ {
+ \str_if_eq:VnT \l__scripture_currenvir_str { scripture }
+ { \int_set:Nn \prevgraf { \int_use:N \prevgraf - 1 } }
+ }
}
\cs_gset_nopar:Nx \__scripture_reset_spacing:
{
\dim_set:Nn \predisplaysize { \dim_use:N \predisplaysize }
\int_set:Nn \prevgraf { \int_use:N \prevgraf }
+ \int_gset:Nn \g__scripture_chap_par_prevgraf_int { \int_use:N \g__scripture_chap_par_prevgraf_int }
}
$$
\__scripture_reset_spacing:
\dim_compare:nNnT \g__scripture_final_line_dim > \paperwidth
{ \dim_gset:Nn \g__scripture_final_line_dim { \@totalleftmargin + \linewidth } }
- \dim_compare:nNnT \g__scripture_final_line_dim > { \c_zero_dim - 1 sp }
+ \dim_compare:nNnT \g__scripture_final_line_dim > { \c_zero_dim - 1sp }
{ \skip_vertical:n { -\baselineskip - \parskip } }
}
\str_new:N \l__scripture_currenvir_str
\skip_new:N \l__scripture_parskip_correction_skip
+\tl_new:N \l__scripture_ref_tl
\cs_new_protected_nopar:Nn \__scripture_added:n
{
\group_begin:
@@ -735,6 +1649,52 @@
\__scripture_added_format:n { #1 }
\group_end:
}
+\cs_new_protected_nopar:Nn \__scripture_heading:n
+ {
+ \str_if_eq:VnTF \l__scripture_currenvir_str { scripture }
+ {
+ \bool_if:NTF \l__scripture_heading_show_bool
+ {
+ \parshape 1 ~ \@totalleftmargin ~ \linewidth
+ \group_begin:
+ \bool_set_false:N \l__scripture_pilcrow_bool
+ \legacy_if:nTF { @newlist }
+ {
+ \skip_horizontal:n { -\parindent }
+ }
+ {
+ \__scripture_list_para_end:
+ \addvspace { \l__scripture_heading_aboveskip_tl }
+ \tex_noindent:D
+ }
+ \l__scripture_heading_align_tl
+ \l__scripture_heading_font_tl
+ \__scripture_heading_format:n { #1 }
+ \__scripture_list_para_end:
+ \group_end:
+ \bool_if:NTF \l__scripture_verse_para_bool
+ {
+ \cs_set_eq:NN \noindent \__scripture_para_noindent:
+ }
+ {
+ \cs_set_eq:NN \noindent \tex_noindent:D
+ }
+ \legacy_if_set:nn { @afterindent } \l__scripture_heading_afterindent_bool
+ \bool_if:NF \l__scripture_heading_afterindent_bool
+ {
+ \hook_gput_next_code:nn { para / before }
+ { \para_omit_indent: }
+ }
+ \nobreak
+ \@afterheading
+ \addvspace { \l__scripture_heading_belowskip_tl }
+ }
+ { \ignorespaces }
+ }
+ {
+ \msg_error:nnx { scripture } { heading-error } { \l__scripture_currenvir_str }
+ }
+ }
\cs_new_protected_nopar:Nn \__scripture_name:n
{
\group_begin:
@@ -753,7 +1713,9 @@
\bool_if:NTF \l__scripture_chap_drop_bool
{
\__scripture_chap:n { #2 }
- \bool_if:nTF { #1 }
+ \bool_lazy_and:nnTF
+ { #1 }
+ { \bool_not_p:n { \l__scripture_compact_bool } }
{
\hook_gput_next_code:nn { para / after }
{
@@ -766,11 +1728,19 @@
{ \int_gset_eq:NN \g__scripture_mid_para_chap_prevgraf_int \prevgraf }
}
}
+ {
+ \bool_if:NTF \l__scripture_chap_para_bool
+ { \__scripture_para_chap:n { #2 } }
+ { \__scripture_nodrop_chap:n { #2 } }
+ }
+ }
+ {
+ \bool_if:NTF \l__scripture_chap_para_bool
+ { \__scripture_para_chap:n { #2 } }
{ \__scripture_nodrop_chap:n { #2 } }
}
- { \__scripture_nodrop_chap:n { #2 } }
}
-\cs_new_protected:Nn \__scripture_begin:n
+\cs_new_protected:Nn \__scripture_begin:nn
{
\cs_set_eq:NN \__scripture_noindent_saved: \noindent
\bool_if:NT \l__scripture_active_bool
@@ -778,11 +1748,14 @@
\msg_error:nn { scripture } { nested-environment }
}
\bool_set_true:N \l__scripture_active_bool
- \tl_set:Nn \l__scripture_currenvir_str { scripture }
\tl_if_novalue:nF { #1 }
+ { \tl_set:Nn \l__scripture_ref_tl { #1 } }
+ \str_set:Nn \l__scripture_currenvir_str { scripture }
+ \tl_if_novalue:nF { #2 }
{
- \keys_set:nn { scripture } { #1 }
+ \keys_set:nn { scripture } { #2 }
}
+ \l__scripture_before_tl
\__scripture_select_language:
\int_gzero:N \g__scripture_chap_par_prevgraf_int
\everydisplay { }
@@ -794,10 +1767,25 @@
\cs_set_eq:NN \extraskip \__scripture_extra_skip:
\cs_set_eq:NN \redletteron \__scripture_red_letter_on:
\cs_set_eq:NN \redletteroff \__scripture_red_letter_off:
- \DeclareDocumentCommand { \ch } { sm }
- { \__scripture_ch_output:nn { ##1 } { ##2 } }
+ \cs_set:Npn \nopilcrow { \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool }
+ \bool_gset_false:N \g__scripture_suppress_next_pilcrow_bool
+ \bool_gset_false:N \g__scripture_suppress_next_verse_para_bool
+ \bool_gset_false:N \g__scripture_mode_vertical_inner_bool
+ \box_gclear:N \g__scripture_post_env_indent_box
+ \skip_gzero:N \g__scripture_prev_inner_below_skip
+ \bool_if:NT \l__scripture_chap_para_bool
+ { \bool_set_false:N \l__scripture_chap_drop_bool }
+ \DeclareDocumentCommand { \ch } { s o m }
+ {
+ \tl_if_novalue:nF { ##2 }
+ {
+ \tl_set:Nn \l__scripture_X_char_tl { ##2 }
+ }
+ \__scripture_ch_output:nn { ##1 } { ##3 }
+ }
\cs_set_eq:NN \vs \__scripture_verse_output:n
\cs_set_eq:NN \added \__scripture_added:n
+ \cs_set_eq:NN \heading \__scripture_heading:n
\cs_set_eq:NN \name \__scripture_name:n
\cs_set_protected_nopar:Npn \LORD { \name { Lord } }
\cs_set_protected_nopar:Npn \GOD { \name { God } }
@@ -805,7 +1793,10 @@
\cs_set_protected_nopar:Npn \textright ##1
{ \__scripture_text_right:nn { \l__scripture_text_right_sep_tl } { ##1 } }
\hook_gclear_next_code:n { para / before }
+ \hook_gclear_next_code:n { scripture / pilcow }
+ \hook_gclear_next_code:n { scripture / poetry / pilcow }
\l__scripture_font_tl
+ \tl_set:Ne \l__scripture_parindent_tl { \dim_eval:n { \l__scripture_parindent_tl } }
\exp_args:NnV \color_set:nn { scripture default colour } \l__scripture_colour_tl
\str_if_eq:VnF \l__scripture_colour_tl { . }
{ \color_select:n { scripture default colour } }
@@ -831,45 +1822,61 @@
{
\hook_gput_next_code:nn { para / begin }
{
- \bool_lazy_any:nT
+ \bool_if:NTF \l__scripture_compact_bool
+ { \para_omit_indent: }
{
- { \str_if_eq_p:Vn \l__scripture_currenvir_str { midparachap } }
- { \str_if_eq_p:Vn \l__scripture_currenvir_str { narrow } }
- { \str_if_eq_p:Vn \l__scripture_currenvir_str { scripture } }
- }
- {
- \legacy_if:nTF { @noparlist }
- { \noindent }
- { \para_omit_indent: }
+ \bool_lazy_any:nT
+ {
+ { \str_if_eq_p:Vn \l__scripture_currenvir_str { midparachap } }
+ { \str_if_eq_p:Vn \l__scripture_currenvir_str { narrow } }
+ { \str_if_eq_p:Vn \l__scripture_currenvir_str { scripture } }
+ }
+ {
+ \legacy_if:nTF { @noparlist }
+ {
+ \bool_lazy_and:nnF
+ { \str_if_eq_p:Vn \l__scripture_currenvir_str { narrow } }
+ { \str_if_eq_p:Vn \l__scripture_ref_position_tl { start } }
+ { \noindent }
+ }
+ { \para_omit_indent: }
+ }
}
}
}
}
- \dim_set_eq:NN \parindent \l__scripture_parindent_tl
+ \cs_set_eq:NN \__scripture_list_para_end: \@par
\item
\relax
}
}
-\cs_new_protected:Nn \__scripture_end:n
+\cs_new_protected:Nn \__scripture_end:
{
+ \tl_if_eq:NnT \l__scripture_ref_position_tl { start }
+ {
+ \tl_clear:N \l__scripture_ref_tl
+ \tl_if_eq:NnT \l__scripture_version_position_tl { withref }
+ { \tl_clear:N \l__scripture_version_tl }
+ }
+ \cs_set_eq:NN \noindent \tex_noindent:D
\bool_if:NTF \l__scripture_inline_bool
{
\unskip
\__scripture_red_letter_off:
\l__scripture_inline_end_tl
\bool_lazy_or:nnTF
- { \tl_if_novalue_p:n { #1 } }
- { \tl_if_empty_p:n { #1 } }
+ { \tl_if_novalue_p:n \l__scripture_ref_tl }
+ { \tl_if_empty_p:N \l__scripture_ref_tl }
{
\tl_if_empty:NF \l__scripture_version_tl
{
\skip_horizontal:N \l__scripture_ref_sep_tl
- \__scripture_format_full_ref:n { }
+ \__scripture_format_full_ref:nn { } \l__scripture_version_tl
}
}
{
\skip_horizontal:N \l__scripture_ref_sep_tl
- \__scripture_format_full_ref:n { #1 }
+ \__scripture_format_full_ref:nn \l__scripture_ref_tl \l__scripture_version_tl
}
}
{
@@ -882,23 +1889,85 @@
{ \skip_zero:N \@topsepadd }
{ \skip_set:Nn \@topsepadd { \__scripture_skip_diff:NN \l__scripture_belowskip_tl \@outerparskip } }
\int_compare:nNnT \prevgraf = \c_zero_int
- { \skip_vertical:n { -\g__scripture_prev_inner_below_skip } }
+ {
+ \bool_if:NT \l__scripture_textdir_change_in_group_bool
+ { \skip_vertical:n { -\baselineskip } }
+ \skip_vertical:n { -\g__scripture_prev_inner_below_skip }
+ }
\hook_gclear_next_code:n { para / before }
- \parshape 1 ~ \@totalleftmargin ~ \linewidth
\noindent
\bool_lazy_or:nnTF
- { \tl_if_novalue_p:n { #1 } }
- { \tl_if_empty_p:n { #1 } }
+ { \tl_if_novalue_p:n \l__scripture_ref_tl }
+ { \tl_if_empty_p:N \l__scripture_ref_tl }
{
\tl_if_empty:NTF \l__scripture_version_tl
{ \hbox:n { } }
{ \__scripture_reference:n { } }
}
- { \__scripture_reference:n { #1 } }
- \@noparlistfalse
+ { \__scripture_reference:n \l__scripture_ref_tl }
+ \parshape 1 ~ \@totalleftmargin ~ \linewidth
+ \legacy_if_set_false:n { @noparlist }
\endlist
}
\cs_set_eq:NN \noindent \__scripture_noindent_saved:
+ \l__scripture_after_tl
+ }
+\cs_new_protected:Nn \__scripture_compact_end_inner:
+ {
+ \bool_gset_false:N \g__scripture_mode_vertical_inner_bool
+ \str_if_eq:VnT \l__scripture_ref_position_tl { start }
+ {
+ \tl_gclear:N \l__scripture_ref_tl
+ }
+ \bool_lazy_and:nnT \l__scripture_verse_para_bool \l__scripture_chap_drop_bool
+ {
+ \cs_set_eq:NN \par \para_end:
+ \__scripture_calc_final_line_length:
+ \int_gset_eq:NN \g__scripture_mid_para_chap_prevgraf_int \g__scripture_chap_par_prevgraf_int
+ \tex_noindent:D
+ \bool_lazy_and:nnTF
+ { \bool_if_p:N \l__scripture_compact_bool }
+ { \int_compare_p:nNn \g__scripture_mid_para_chap_prevgraf_int = 1 }
+ {
+ \hook_gput_next_code:nn { env / \l__scripture_currenvir_str / after }
+ {
+ \parshape 3 ~
+ \@totalleftmargin ~ \linewidth ~
+ \dim_eval:n
+ { \@totalleftmargin + \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } ~
+ \dim_eval:n
+ { \linewidth - \g__scripture_chap_width_dim - \l__scripture_chap_sep_tl } ~
+ \@totalleftmargin ~ \linewidth
+ }
+ \hbox_to_wd:nn { \g__scripture_final_line_dim - \g__scripture_chap_width_dim - \l__scripture_chap_sep_tl } { }
+ }
+ {
+ \hbox_to_wd:nn \g__scripture_final_line_dim { }
+ }
+ \c_space_token
+ \kern 0pt
+ \cs_set_eq:NN \par \relax
+ \hook_gput_next_code:nn { para / before }
+ {
+ \int_compare:nNnT \g__scripture_mid_para_chap_prevgraf_int = 1
+ {
+ \dim_compare:nNnT \parskip < \baselineskip
+ {
+ \dim_compare:nNnT { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } > \parindent
+ {
+ \hook_gput_next_code:nn { para / begin }
+ {
+ \para_omit_indent:
+ \skip_horizontal:n {\g__scripture_chap_width_dim + \l__scripture_chap_sep_tl }
+ }
+ }
+ }
+ }
+ \int_gzero:N \g__scripture_chap_par_prevgraf_int
+ \parshape 1 ~ \@totalleftmargin ~ \linewidth
+ }
+ }
+ \unskip
}
\cs_new_protected:Nn \__scripture_center_begin:n
{
@@ -907,7 +1976,7 @@
\msg_error:nn { scripture } { nested-environment }
}
\bool_set_true:N \l__scripture_active_inner_bool
- \tl_set:Nn \l__scripture_currenvir_str { center }
+ \str_set:Nn \l__scripture_currenvir_str { center }
\tl_if_novalue:nF { #1 }
{
\keys_set:nn
@@ -917,8 +1986,13 @@
\legacy_if:nTF { @newlist }
{ \dim_add:Nn \l__scripture_outer_itemindent_dim \itemindent }
{ \dim_zero:N \l__scripture_outer_itemindent_dim }
+ \cs_set_eq:NN \par \para_end:
\list { }
{
+ \bool_lazy_or:nnF
+ { \mode_if_vertical_p: }
+ { \g__scripture_para_mode_vertical_bool }
+ { \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool }
\dim_zero:N \labelsep
\dim_set_eq:NN \leftmargin \l__scripture_center_leftmargin_tl
\dim_set_eq:NN \rightmargin \l__scripture_center_rightmargin_tl
@@ -935,11 +2009,22 @@
{ \addvspace { \baselineskip } }
\int_gzero:N \g__scripture_chap_par_prevgraf_int
\centering
+ \bool_if:NT \l__scripture_verse_para_bool
+ {
+ \cs_set_eq:NN \par \__scripture_para_par:
+ \cs_set_protected:Npn \\
+ {
+ \mode_if_horizontal:TF
+ { \unskip }
+ { \@nolnerr }
+ }
+ }
\item
\relax
}
\cs_new_protected:Nn \__scripture_center_end:
{
+ \cs_set_eq:NN \par \para_end:
\dim_gset:Nn \g__scripture_final_line_dim { \@totalleftmargin + \linewidth }
\dim_compare:nNnTF \@outerparskip > \l__scripture_center_belowskip_tl
{ \skip_zero:N \@topsepadd }
@@ -947,6 +2032,7 @@
\skip_gset_eq:NN \g__scripture_prev_inner_below_skip \@topsepadd
\legacy_if_set_false:n { @noparlist }
\endlist
+ \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool
}
\cs_new_protected:Nn \__scripture_flushright_begin:n
{
@@ -955,7 +2041,7 @@
\msg_error:nn { scripture } { nested-environment }
}
\bool_set_true:N \l__scripture_active_inner_bool
- \tl_set:Nn \l__scripture_currenvir_str { flushright }
+ \str_set:Nn \l__scripture_currenvir_str { flushright }
\tl_if_novalue:nF { #1 }
{
\keys_set:nn
@@ -965,8 +2051,13 @@
\legacy_if:nTF { @newlist }
{ \dim_add:Nn \l__scripture_outer_itemindent_dim \itemindent }
{ \dim_zero:N \l__scripture_outer_itemindent_dim }
+ \cs_set_eq:NN \par \para_end:
\list { }
{
+ \bool_lazy_or:nnF
+ { \mode_if_vertical_p: }
+ { \g__scripture_para_mode_vertical_bool }
+ { \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool }
\dim_zero:N \labelsep
\dim_set_eq:NN \leftmargin \l__scripture_flushright_leftmargin_tl
\dim_set_eq:NN \rightmargin \l__scripture_flushright_rightmargin_tl
@@ -983,11 +2074,22 @@
{ \addvspace { \baselineskip } }
\int_gzero:N \g__scripture_chap_par_prevgraf_int
\raggedleft
+ \bool_if:NT \l__scripture_verse_para_bool
+ {
+ \cs_set_eq:NN \par \__scripture_para_par:
+ \cs_set_protected:Npn \\
+ {
+ \mode_if_horizontal:TF
+ { \unskip }
+ { \@nolnerr }
+ }
+ }
\item
\relax
}
\cs_new_protected:Nn \__scripture_flushright_end:
{
+ \cs_set_eq:NN \par \para_end:
\dim_gset:Nn \g__scripture_final_line_dim { \@totalleftmargin + \linewidth }
\dim_compare:nNnTF \@outerparskip > \l__scripture_flushright_belowskip_tl
{ \skip_zero:N \@topsepadd }
@@ -995,62 +2097,105 @@
\skip_gset_eq:NN \g__scripture_prev_inner_below_skip \@topsepadd
\legacy_if_set_false:n { @noparlist }
\endlist
+ \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool
}
\dim_new:N \l__scripture_hanging_parindent_saved_dim
\cs_new_protected:Nn \__scripture_hanging_ch:n
{
+ \bool_gset_false:N \g__scripture_suppress_next_pilcrow_bool
\bool_if:NTF \l__scripture_chap_show_bool
{
\bool_if:NTF \l__scripture_chap_drop_bool
{ \__scripture_hanging_chap:n { #1 } }
+ {
+ \bool_if:NTF \l__scripture_chap_para_bool
+ { \__scripture_para_chap:n { #1 } }
+ { \__scripture_nodrop_chap:n { #1 } }
+ }
+ }
+ {
+ \bool_if:NTF \l__scripture_chap_para_bool
+ { \__scripture_para_chap:n { #1 } }
{ \__scripture_nodrop_chap:n { #1 } }
}
- { \__scripture_nodrop_chap:n { #1 } }
}
\cs_new_protected:Nn \__scripture_hanging_chap:n
{
\__scripture_drop_chap_set_up:n { #1 }
\dim_compare:nNnTF
- \l__scripture_chap_width_dim < \leftmargin
+ { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } < \leftmargin
{
- \tl_set:Nx \l__scripture_chap_sep_tl
+ \bool_if:NT \l__scripture_hanging_chapter_indent_bool
{
- \dim_eval:n { \leftmargin - \l__scripture_chap_width_dim }
+ \tl_set:Nx \l__scripture_chap_sep_tl
+ {
+ \dim_eval:n { \leftmargin - \g__scripture_chap_width_dim }
+ }
}
}
{
\parshape 3 ~
\dim_eval:n
{
- \@totalleftmargin - \leftmargin + \l__scripture_chap_width_dim +
+ \@totalleftmargin - \leftmargin + \g__scripture_chap_width_dim +
\l__scripture_chap_sep_tl
} ~
\dim_eval:n
{
- \linewidth + \leftmargin - \l__scripture_chap_width_dim -
+ \linewidth + \leftmargin - \g__scripture_chap_width_dim -
\l__scripture_chap_sep_tl
} ~
\dim_eval:n
{
- \@totalleftmargin - \leftmargin + \l__scripture_chap_width_dim +
+ \@totalleftmargin - \leftmargin + \g__scripture_chap_width_dim +
\l__scripture_chap_sep_tl
} ~
\dim_eval:n
{
- \linewidth + \leftmargin - \l__scripture_chap_width_dim -
+ \linewidth + \leftmargin - \g__scripture_chap_width_dim -
\l__scripture_chap_sep_tl
} ~
\@totalleftmargin ~ \linewidth
}
- \tl_set:Nx \l__scripture_chap_sep_tl
+ \par
+ \bool_if:NTF \l__scripture_hanging_chapter_indent_bool
{
- \dim_eval:n
+ \tl_set:Nx \l__scripture_chap_sep_tl
{
- \l__scripture_chap_sep_tl + \l__scripture_hanging_parindent_saved_dim
+ \dim_eval:n
+ {
+ \l__scripture_chap_sep_tl + \l__scripture_hanging_parindent_saved_dim
+ }
+ }
+ \__scripture_nohang:
+ }
+ {
+ \mode_leave_vertical:
+ \dim_compare:nNnTF
+ { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } > \l__scripture_hanging_leftmargin_tl
+ {
+ \dim_compare:nNnTF
+ { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } > \leftmargin
+ {
+ \skip_horizontal:n { \l__scripture_hanging_hang_tl }
+ }
+ {
+ \skip_horizontal:n
+ {
+ \l__scripture_chap_sep_tl +
+ \g__scripture_chap_width_dim -
+ \l__scripture_hanging_leftmargin_tl
+ }
+ }
+ }
+ {
+ \tl_set:Nx \l__scripture_chap_sep_tl
+ {
+ \dim_eval:n
+ { \l__scripture_hanging_leftmargin_tl - \g__scripture_chap_width_dim }
+ }
}
}
- \par
- \__scripture_nohang:
\hbox_set:Nn \l__scripture_chap_box
{
\box_move_down:nn
@@ -1074,25 +2219,114 @@
{
\__scripture_verse_output:n { 1 }
}
+ \__scripture_pilcrow_output:
+ \bool_if:NT \l__scripture_verse_para_bool
+ {
+ \hook_gput_next_code:nn { para / after }
+ {
+ \int_gset_eq:NN \g__scripture_chap_par_prevgraf_int \prevgraf
+ \int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1
+ { \penalty 10000 }
+ \hook_gput_next_code:nn { para / before }
+ {
+ \int_set_eq:NN \clubpenalty \l__scripture_clubpenalty_saved_int
+ }
+ }
+ }
\hook_gput_next_code:nn { para / begin }
- { \parshape 1 ~ \@totalleftmargin ~ \linewidth }
+ {
+ \int_compare:nNnTF \g__scripture_chap_par_prevgraf_int = \c_one_int
+ {
+ \dim_compare:nNnTF
+ { \l__scripture_hanging_leftmargin_tl } < { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl }
+ {
+ \parshape 2 ~
+ \dim_eval:n
+ {
+ \@totalleftmargin - \leftmargin + \g__scripture_chap_width_dim +
+ \l__scripture_chap_sep_tl
+ } ~
+ \dim_eval:n
+ {
+ \linewidth + \leftmargin - \g__scripture_chap_width_dim -
+ \l__scripture_chap_sep_tl
+ } ~
+ \@totalleftmargin ~ \linewidth
+ }
+ { \parshape 1 ~ \@totalleftmargin ~ \linewidth }
+ \hook_gput_next_code:nn { para / begin }
+ { \parshape 1 ~ \@totalleftmargin ~ \linewidth }
+ }
+ { \parshape 1 ~ \@totalleftmargin ~ \linewidth }
+ \int_gzero:N \g__scripture_chap_par_prevgraf_int
+ }
}
\cs_new_protected:Nn \__scripture_hanging_verse:n
{
\mode_if_vertical:TF
{
- \strut
- \hbox_overlap_left:n
+ \tl_set_eq:NN \l_tmpa_tl \l__scripture_verse_sep_tl
+ \tl_set_eq:NN \l__scripture_verse_sep_tl \l__scripture_hanging_verse_sep_tl
+ \bool_lazy_and:nnTF
+ { \legacy_if_p:n { @newlist } }
+ { \g__scripture_suppress_next_pilcrow_bool }
+ {
+ \strut
+ \bool_if:NTF \l__scripture_hanging_verse_right_bool
+ {
+ \hbox_overlap_left:n
+ {
+ \__scripture_verse_output:n { #1 }
+ }
+ }
+ {
+ \hbox_overlap_left:n
+ {
+ \hbox_overlap_right:n
+ {
+ \__scripture_verse_output:n { #1 }
+ }
+ \skip_horizontal:N \l__scripture_hanging_leftmargin_tl
+ }
+ }
+ }
{
- \__scripture_verse_output:n { #1 }
+ \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool
+ \strut
+ \bool_if:NTF \l__scripture_hanging_verse_right_bool
+ {
+ \hbox_overlap_left:n
+ {
+ \__scripture_verse_output:n { #1 }
+ }
+ }
+ {
+ \hbox_overlap_left:n
+ {
+ \hbox_overlap_right:n
+ {
+ \__scripture_verse_output:n { #1 }
+ }
+ \skip_horizontal:N \l__scripture_hanging_leftmargin_tl
+ }
+ }
+ \__scripture_pilcrow_output:
}
+ \tl_set_eq:NN \l__scripture_verse_sep_tl \l_tmpa_tl
}
{ \__scripture_verse_output:n { #1 } }
}
\cs_new_protected_nopar:Nn \__scripture_nohang:
{
- \noindent
+ \legacy_if:nTF {@newlist}
+ { \skip_horizontal:n { \l__scripture_hanging_hang_tl } }
+ { \tex_noindent:D }
\hbox_to_wd:nn { \l__scripture_hanging_parindent_saved_dim } { }
+ \peek_meaning:NT \vs
+ {
+ \bool_gset_true:N \g__scripture_suppress_next_verse_para_bool
+ \__scripture_set_pilcrow_hook:
+ }
}
\cs_new_protected:Nn \__scripture_hanging_begin:n
{
@@ -1101,22 +2335,37 @@
\msg_error:nn { scripture } { nested-environment }
}
\bool_set_true:N \l__scripture_active_inner_bool
- \tl_set:Nn \l__scripture_currenvir_str { hanging }
+ \str_set:Nn \l__scripture_currenvir_str { hanging }
\tl_if_novalue:nF { #1 }
{
\keys_set:nn
{ scripture / hanging }
{ #1 }
}
- \DeclareDocumentCommand { \ch } { sm } { \__scripture_hanging_ch:n { ##2 } }
- \cs_set_eq:NN \vs \__scripture_hanging_verse:n
+ \DeclareDocumentCommand { \ch } { s o m }
+ {
+ \tl_if_novalue:nF { ##2 }
+ {
+ \tl_set:Nn \l__scripture_X_char_tl { ##2 }
+ }
+ \__scripture_hanging_ch:n { ##3 }
+ }
+ \bool_if:NTF \l__scripture_verse_para_bool
+ { \cs_set_eq:NN \vs \__scripture_hanging_verse_para:n }
+ { \cs_set_eq:NN \vs \__scripture_hanging_verse:n }
\cs_set_eq:NN \nohang \__scripture_nohang:
\dim_set_eq:NN \l__scripture_hanging_parindent_saved_dim \parindent
\legacy_if:nTF { @newlist }
{ \dim_add:Nn \l__scripture_outer_itemindent_dim \itemindent }
{ \dim_zero:N \l__scripture_outer_itemindent_dim }
+ \cs_set_eq:NN \par \para_end:
+ \hook_gclear_next_code:n { para/ before }
\list { }
{
+ \bool_lazy_or:nnF
+ { \mode_if_vertical_p: }
+ { \g__scripture_para_mode_vertical_bool }
+ { \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool }
\dim_zero:N \labelsep
\dim_set:Nn \leftmargin { \l__scripture_hanging_leftmargin_tl + \l__scripture_hanging_hang_tl }
\dim_set_eq:NN \rightmargin \l__scripture_hanging_rightmargin_tl
@@ -1144,6 +2393,7 @@
\skip_gset_eq:NN \g__scripture_prev_inner_below_skip \@topsepadd
\legacy_if_set_false:n { @noparlist }
\endlist
+ \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool
}
\cs_new_protected:Npn \__scripture_vbox_set_top:Nw #1
{
@@ -1158,6 +2408,27 @@
\int_new:N \g__scripture_mid_para_chap_prevgraf_int
\box_new:N \l__scripture_mid_para_chap_snap_box
\int_new:N \l__scripture_mid_para_chap_spacefactor_int
+\cs_set_eq:Nc \__scripture_mid_para_chap_end_orig:n { end ~ }
+\cs_new_nopar:Nn \__scripture_mid_para_chap_end:n
+ {
+ \__scripture_mid_para_chap_end_orig:n { #1 }
+ \bool_if:NT \l__scripture_compact_bool
+ { \c_space_token }
+ \peek_remove_spaces:n
+ {
+ \peek_analysis_map_inline:n
+ {
+ \bool_case:n
+ {
+ { \exp_args:No \token_if_letter_p:N { ##1 } }
+ { \__scripture_pilcrow_output: }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs }
+ { \__scripture_set_pilcrow_hook: }
+ }
+ \peek_analysis_map_break:n { ##1 }
+ }
+ }
+ }
\box_new:N \l__scripture_mid_para_chap_box
\box_new:N \l__scripture_mid_para_chap_split_box
\box_new:N \l__scripture_mid_para_chap_split_top_box
@@ -1179,11 +2450,11 @@
\dim_compare:nNnTF
{
\box_wd:N \l__scripture_mid_para_chap_snap_box +
- \l__scripture_chap_width_dim +
+ \g__scripture_chap_width_dim +
\l__scripture_chap_sep_tl
}
<
- { \linewidth - \leftskip - \rightskip - 3 em }
+ { \linewidth - \leftskip - \rightskip - 3em }
{
\__scripture_drop_chap_output:
\hbox_unpack_drop:N \l__scripture_mid_para_chap_snap_box
@@ -1208,16 +2479,14 @@
}
\cs_new_protected:Nn \__scripture_mid_para_chap_begin:n
{
- \tl_set:Nn \l__scripture_currenvir_str { midparachap }
+ \str_set:Nn \l__scripture_currenvir_str { midparachap }
\tl_if_novalue:nF { #1 }
{
\keys_set:nn
{ scripture / midparachap }
{ #1 }
}
- \bool_lazy_and:nnT
- { \bool_if_p:n \l__scripture_chap_show_verse_bool }
- { \bool_if_p:n \l__scripture_chap_drop_bool }
+ \bool_lazy_and:nnT \l__scripture_chap_show_verse_bool \l__scripture_chap_drop_bool
{
\bool_set_true:N \l__scripture_midparachap_show_verse_bool
\bool_set_false:N \l__scripture_chap_show_verse_bool
@@ -1252,8 +2521,8 @@
\prevgraf < 3
{
\noindent
- \skip_horizontal:n { \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl }
- \dim_gadd:Nn \g__scripture_final_line_dim { \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl }
+ \skip_horizontal:n { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl }
+ \dim_gadd:Nn \g__scripture_final_line_dim { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl }
}
\box_use_drop:N \l__scripture_mid_para_chap_line_box
\vbox_set_end:
@@ -1293,7 +2562,24 @@
\int_gset_eq:NN \g__scripture_chap_par_prevgraf_int \g__scripture_mid_para_chap_prevgraf_int
\hook_gput_next_code:nn { para / before }
{
- \int_gzero:N \g__scripture_chap_par_prevgraf_int
+ \legacy_if:nF { @newlist }
+ {
+ \int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1
+ {
+ \dim_compare:nNnT \parskip < \baselineskip
+ {
+ \dim_compare:nNnT { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } > \parindent
+ {
+ \hook_gput_next_code:nn { para / begin }
+ {
+ \para_omit_indent:
+ \skip_horizontal:n {\g__scripture_chap_width_dim + \l__scripture_chap_sep_tl }
+ }
+ }
+ }
+ }
+ \int_gzero:N \g__scripture_chap_par_prevgraf_int
+ }
\parshape 1 ~ \@totalleftmargin ~ \linewidth
}
}
@@ -1304,7 +2590,7 @@
\msg_error:nn { scripture } { nested-environment }
}
\bool_set_true:N \l__scripture_active_inner_bool
- \tl_set:Nn \l__scripture_currenvir_str { narrow }
+ \str_set:Nn \l__scripture_currenvir_str { narrow }
\tl_if_novalue:nF { #1 }
{
\keys_set:nn
@@ -1314,21 +2600,22 @@
\legacy_if:nTF { @newlist }
{ \dim_add:Nn \l__scripture_outer_itemindent_dim \itemindent }
{ \dim_zero:N \l__scripture_outer_itemindent_dim }
+ \cs_set_eq:NN \par \para_end:
\list { }
{
- %\int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1
- % { \addvspace { \baselineskip } }
- %\int_gzero:N \g__scripture_chap_par_prevgraf_int
\dim_zero:N \labelsep
\dim_set_eq:NN \leftmargin \l__scripture_narrow_leftmargin_tl
\dim_set_eq:NN \rightmargin \l__scripture_narrow_rightmargin_tl
\dim_set_eq:NN \listparindent \parindent
- \mode_if_vertical:TF
+ \bool_lazy_or:nnTF
+ { \mode_if_vertical_p: }
+ { \g__scripture_para_mode_vertical_bool }
{
\dim_set:Nn \itemindent { \parindent - \l__scripture_outer_itemindent_dim }
\__scripture_setup_list_noindent:n { \parindent }
}
{
+ \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool
\dim_set:Nn \itemindent { -\l__scripture_outer_itemindent_dim }
\__scripture_setup_list_noindent:n { \c_zero_dim }
}
@@ -1341,11 +2628,14 @@
\int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1
{ \addvspace { \baselineskip } }
\int_gzero:N \g__scripture_chap_par_prevgraf_int
+ \bool_if:NT \l__scripture_verse_para_bool
+ { \cs_set_eq:NN \par \__scripture_para_par: }
\item
\relax
}
\cs_new_protected:Nn \__scripture_narrow_end:
{
+ \cs_set_eq:NN \par \para_end:
\__scripture_calc_final_line_length:
\dim_compare:nNnTF \@outerparskip > \l__scripture_narrow_belowskip_tl
{ \skip_zero:N \@topsepadd }
@@ -1353,29 +2643,15 @@
\skip_gset_eq:NN \g__scripture_prev_inner_below_skip \@topsepadd
\legacy_if_set_false:n { @noparlist }
\endlist
+ \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool
}
\hook_new:n { scripture / poetry / para / after }
\bool_new:N \g__scripture_poetry_end_bool
-\bool_new:N \g__scripture_poetry_midparachap_show_verse_bool
+\bool_new:N \l__scripture_poetry_midparachap_show_verse_bool
\dim_new:N \l__scripture_poetry_chap_indent_dim
\dim_new:N \l__scripture_poetry_chap_sep_dim
\dim_new:N \l__scripture_poetry_chap_parshape_correction_dim
\int_new:N \l__scripture_poetry_prevgraf_int
-\cs_new_protected:Nn \__scripture_poetry_extra_skip:
- {
- \skip_vertical:n { \l__scripture_extraskip_tl - \baselineskip - \parskip }
- \bool_gset_false:N \g__scripture_poetry_midparachap_show_verse_bool
- \strut
- \hook_gput_next_code:nn { para / after }
- {
- \hook_gput_next_code:nn { para / after }
- {
- \bool_gset_eq:NN
- \g__scripture_poetry_midparachap_show_verse_bool
- \l__scripture_midparachap_show_verse_bool
- }
- }
- }
\cs_new_protected:Nn \__scripture_poetry_text_right:nn
{
{
@@ -1406,29 +2682,45 @@
{
\bool_if:NTF \l__scripture_chap_drop_bool
{ \__scripture_poetry_chap:n { #1 } }
+ {
+ \bool_if:NTF \l__scripture_chap_para_bool
+ { \__scripture_para_chap:n { #1 } }
+ { \__scripture_poetry_nodrop_chap:n { #1 } }
+ }
+ }
+ {
+ \bool_if:NTF \l__scripture_chap_para_bool
+ { \__scripture_para_chap:n { #1 } }
{ \__scripture_poetry_nodrop_chap:n { #1 } }
}
- { \__scripture_poetry_nodrop_chap:n { #1 } }
}
\cs_new_protected:Nn \__scripture_poetry_chap:n
{
\__scripture_drop_chap_set_up:n { #1 }
- \mode_if_vertical:TF
+ \hook_gput_next_code:nn { para / after }
+ {
+ \hook_gput_next_code:nn { para / after }
+ { \int_gzero:N \g__scripture_chap_par_prevgraf_int }
+ }
+ \cs_if_eq:NNTF \vs \__scripture_poetry_mode_vertical_verse:n
+ {
+ \dim_zero:N \l__scripture_poetry_chap_indent_dim
+ \noindent
+ }
{
\dim_set_eq:NN \l__scripture_poetry_chap_indent_dim \l__scripture_poetry_indent_tl
\mode_leave_vertical:
}
- { \dim_zero:N \l__scripture_poetry_chap_indent_dim }
\dim_set_eq:NN \l__scripture_poetry_chap_sep_dim \l__scripture_chap_sep_tl
\dim_compare:nNnT
- { \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl }
+ { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl }
<
{ \l__scripture_poetry_leftmargin_tl + \l__scripture_poetry_chap_indent_dim }
{
\dim_set:Nn \l__scripture_poetry_chap_sep_dim
{
\l__scripture_poetry_leftmargin_tl + \l__scripture_poetry_chap_indent_dim -
- \l__scripture_chap_width_dim
+ \g__scripture_chap_width_dim
}
}
\hbox_set:Nn \l__scripture_chap_box
@@ -1447,7 +2739,7 @@
\box_set_dp:Nn \l__scripture_chap_box { \c_zero_dim }
\dim_set:Nn \l__scripture_poetry_chap_parshape_correction_dim
{
- \l__scripture_chap_width_dim + \l__scripture_poetry_chap_sep_dim -
+ \g__scripture_chap_width_dim + \l__scripture_poetry_chap_sep_dim -
\l__scripture_poetry_leftmargin_tl - \l__scripture_poetry_chap_indent_dim
}
\parshape 2 ~
@@ -1460,7 +2752,7 @@
\dim_eval:n
{ \linewidth - \l__scripture_poetry_big_indent_tl }
\dim_compare:nNnT
- { \l__scripture_chap_width_dim + \l__scripture_poetry_chap_sep_dim }
+ { \g__scripture_chap_width_dim + \l__scripture_poetry_chap_sep_dim }
>
\l__scripture_poetry_leftmargin_tl
{
@@ -1468,43 +2760,44 @@
{
\int_compare:nNnT \l__scripture_poetry_prevgraf_int = 1
{
- \dim_compare:nNnTF
- { \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl }
- <
- { \l__scripture_poetry_leftmargin_tl + \l__scripture_poetry_indent_tl }
- { \dim_zero:N \l__scripture_poetry_chap_parshape_correction_dim }
+ \cs_if_eq:NNTF \vs \__scripture_poetry_mode_vertical_verse:n
{
- \dim_set:Nn \l__scripture_poetry_chap_parshape_correction_dim
+ \dim_compare:nNnTF
+ { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl }
+ <
+ \l__scripture_poetry_leftmargin_tl
+ { \dim_zero:N \l__scripture_poetry_chap_parshape_correction_dim }
{
- \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl -
- \l__scripture_poetry_leftmargin_tl - \l__scripture_poetry_indent_tl
+ \dim_set:Nn \l__scripture_poetry_chap_parshape_correction_dim
+ {
+ \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl -
+ \l__scripture_poetry_leftmargin_tl
+ }
+ }
+ \int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1
+ {
+ \parshape 2 ~
+ \dim_eval:n
+ { \@totalleftmargin + \l__scripture_poetry_chap_parshape_correction_dim } ~
+ \dim_eval:n
+ { \linewidth - \l__scripture_poetry_chap_parshape_correction_dim } ~
+ \dim_eval:n
+ { \@totalleftmargin + \l__scripture_poetry_big_indent_tl } ~
+ \dim_eval:n
+ { \linewidth - \l__scripture_poetry_big_indent_tl }
}
}
- \parshape 2 ~
- \dim_eval:n
- { \@totalleftmargin + \l__scripture_poetry_chap_parshape_correction_dim } ~
- \dim_eval:n
- { \linewidth - \l__scripture_poetry_chap_parshape_correction_dim } ~
- \dim_eval:n
- { \@totalleftmargin + \l__scripture_poetry_big_indent_tl } ~
- \dim_eval:n
- { \linewidth - \l__scripture_poetry_big_indent_tl }
- \hook_gput_next_code:nn { para / after }
- {
- \hook_gclear_next_code:n { scripture / poetry / para / after }
- }
- \hook_gput_next_code:nn { scripture / poetry / para / after }
{
\dim_compare:nNnTF
- { \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl }
+ { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl }
<
- \l__scripture_poetry_leftmargin_tl
+ { \l__scripture_poetry_leftmargin_tl + \l__scripture_poetry_indent_tl }
{ \dim_zero:N \l__scripture_poetry_chap_parshape_correction_dim }
{
\dim_set:Nn \l__scripture_poetry_chap_parshape_correction_dim
{
- \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl -
- \l__scripture_poetry_leftmargin_tl
+ \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl -
+ \l__scripture_poetry_leftmargin_tl - \l__scripture_poetry_indent_tl
}
}
\parshape 2 ~
@@ -1525,18 +2818,17 @@
\box_use:N \l__scripture_chap_box
\hook_use:n { scripture / chap / after }
\group_end:
- \bool_lazy_or:nnT
- { \bool_if_p:n \l__scripture_chap_show_verse_bool }
- { \bool_if_p:n \g__scripture_poetry_midparachap_show_verse_bool }
- {
- \__scripture_verse_output:n { 1 }
- }
+ \bool_lazy_or:nnT \l__scripture_chap_show_verse_bool \l__scripture_poetry_midparachap_show_verse_bool
+ { \__scripture_verse_output:n { 1 } }
+ \hook_use:n { scripture / poetry / pilcrow }
}
\cs_new_protected:Nn \__scripture_poetry_nodrop_chap:n
{
\cs_gset_nopar:Npn \scripturecurrentchapter { #1 }
\cs_gset_nopar:Npn \scripturecurrentverse { 1 }
\group_begin:
+ \cs_if_eq:NNT \vs \__scripture_poetry_mode_vertical_verse:n
+ { \noindent }
\bool_if:NTF \l__scripture_chap_show_bool
{
\hbox_overlap_left:n
@@ -1551,12 +2843,8 @@
\skip_horizontal:N \l__scripture_chap_sep_tl
\hook_use:n { scripture / chap / after }
}
- \bool_lazy_or:nnT
- { \bool_if_p:n \l__scripture_chap_show_verse_bool }
- { \bool_if_p:n \g__scripture_poetry_midparachap_show_verse_bool }
- {
- \__scripture_verse_output:n { 1 }
- }
+ \bool_lazy_or:nnT \l__scripture_chap_show_verse_bool \l__scripture_poetry_midparachap_show_verse_bool
+ { \__scripture_verse_output:n { 1 } }
}
{
\hook_use:n { scripture / chap / before }
@@ -1564,52 +2852,60 @@
\vs { 1 }
}
\group_end:
+ \hook_use:n { scripture / poetry / pilcrow }
}
\cs_new_protected:Nn \__scripture_poetry_mode_vertical_verse:n
{
\group_begin:
\tl_set_eq:NN \l__scripture_verse_sep_tl \l__scripture_poetry_verse_sep_tl
+ \hook_gclear_next_code:n { scripture / pilcrow }
\strut
- \bool_if:NTF \l__scripture_poetry_verse_right_bool
+ \int_compare:nNnTF \g__scripture_chap_par_prevgraf_int = 1
{
- \hbox_overlap_left:n
- {
- \__scripture_verse_output:n { #1 }
- }
+ \__scripture_verse_output:n { #1 }
}
{
- \hbox_overlap_left:n
+ \bool_if:NTF \l__scripture_poetry_verse_right_bool
{
- \hbox_overlap_right:n
+ \hbox_overlap_left:n
{
\__scripture_verse_output:n { #1 }
}
- \skip_horizontal:N \l__scripture_poetry_leftmargin_tl
+ }
+ {
+ \hbox_overlap_left:n
+ {
+ \hbox_overlap_right:n
+ {
+ \__scripture_verse_output:n { #1 }
+ }
+ \skip_horizontal:N \l__scripture_poetry_leftmargin_tl
+ }
}
}
\group_end:
+ \bool_if:NF \g__scripture_suppress_next_pilcrow_bool
+ { \hook_use:n { scripture / poetry / pilcrow } }
}
\cs_new_protected:Nn \__scripture_poetry_mode_horizontal_verse:n
{
\group_begin:
\tl_set_eq:NN \l__scripture_verse_sep_tl \l__scripture_poetry_verse_sep_tl
- \skip_horizontal:n { -\listparindent }
- \__scripture_poetry_mode_vertical_verse:n { #1 }
- \skip_horizontal:N \listparindent
- \group_end:
- }
-\cs_new_protected:Nn \__scripture_poetry_par:
- {
- \mode_if_vertical:TF
+ \int_compare:nNnTF \g__scripture_chap_par_prevgraf_int = 1
{
- \cs_set_eq:NN \vs \__scripture_poetry_mode_vertical_verse:n
- \noindent
+ \__scripture_poetry_mode_vertical_verse:n { #1 }
}
{
- \cs_set_eq:NN \vs \__scripture_poetry_mode_horizontal_verse:n
- \__scripture_tmp_para_end:
- \int_set_eq:NN \l__scripture_poetry_prevgraf_int \prevgraf
+ \skip_horizontal:n { -\listparindent }
+ \__scripture_poetry_mode_vertical_verse:n { #1 }
+ \skip_horizontal:N \listparindent
}
+ \group_end:
+ }
+\cs_new_protected:Nn \__scripture_poetry_par:
+ {
+ \para_end:
+ \int_set:Nn \l__scripture_poetry_prevgraf_int { \int_use:N \prevgraf }
\parshape 2 ~
\@totalleftmargin ~
\linewidth ~
@@ -1624,15 +2920,67 @@
\cs_gset_protected_nopar:Nn \__scripture_obeylines: %
{%
\char_set_catcode_active:N \^^M%
- \cs_set_eq:NN ^^M \__scripture_obeylines_end:%
+ \cs_set_eq:NN ^^M \__scripture_obeylines_eol:%
}%
\group_end:
-\cs_new_protected:Nn \__scripture_obeylines_end:
+\cs_new_protected:Nn \__scripture_obeylines_eol:
{
- \peek_meaning:NF \end
+ \mode_if_vertical:TF
{
- \par
- \int_set:Nn \l__scripture_poetry_prevgraf_int { \int_use:N \prevgraf }
+ \cs_set_eq:NN \vs \__scripture_poetry_mode_vertical_verse:n
+ \hook_gput_next_code:nn { scripture / poetry / para / after }
+ { \bool_set_false:N \l__scripture_poetry_midparachap_show_verse_bool }
+ }
+ { \cs_set_eq:NN \vs \__scripture_poetry_mode_horizontal_verse:n }
+ \peek_analysis_map_inline:n
+ {
+ \bool_case:nF
+ {
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \ch }
+ {
+ \bool_set_eq:NN \l__scripture_poetry_midparachap_show_verse_bool \l__scripture_midparachap_show_verse_bool
+ \__scripture_poetry_par:
+ \peek_analysis_map_break:n { ##1 }
+ }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \end }
+ { \peek_analysis_map_break:n { ##1 } }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \extraskip }
+ { \peek_analysis_map_break:n { ##1 } }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \nopilcrow }
+ {
+ \__scripture_poetry_par:
+ \cs_if_eq:NNT \vs \__scripture_poetry_mode_vertical_verse:n
+ { \noindent }
+ \peek_analysis_map_break:n
+ {
+ \__scripture_fix_protrusion:o { ##1 }
+ }
+ }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs }
+ {
+ \__scripture_poetry_par:
+ \cs_if_eq:NNT \vs \__scripture_poetry_mode_vertical_verse:n
+ { \noindent }
+ \peek_analysis_map_break:n { ##1 }
+ }
+ { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \__scripture_obeylines_eol: }
+ { \cs_set_eq:NN \vs \__scripture_poetry_mode_vertical_verse:n }
+ }
+ {
+ \__scripture_poetry_par:
+ \cs_if_eq:NNT \vs \__scripture_poetry_mode_vertical_verse:n
+ { \noindent }
+ \bool_if:NT \l__scripture_verse_para_bool
+ {
+ \__scripture_pilcrow_output:
+ \bool_set_false:N \l__scripture_verse_para_bool
+ \bool_set_false:N \l__scripture_pilcrow_bool
+ }
+ \peek_analysis_map_break:n
+ {
+ \__scripture_fix_protrusion:o { ##1 }
+ }
+ }
}
}
\cs_new_protected:Nn \__scripture_poetry_begin:
@@ -1642,19 +2990,37 @@
\msg_error:nn { scripture } { nested-environment }
}
\bool_set_true:N \l__scripture_active_inner_bool
- \tl_set:Nn \l__scripture_currenvir_str { poetry }
+ \str_set:Nn \l__scripture_currenvir_str { poetry }
\bool_gset_false:N \g__scripture_poetry_midparachap_show_verse_bool
- \DeclareDocumentCommand { \ch } { sm } { \__scripture_poetry_ch:n { ##2 } }
+ \DeclareDocumentCommand { \ch } { s o m }
+ {
+ \tl_if_novalue:nF { ##2 }
+ {
+ \tl_set:Nn \l__scripture_X_char_tl { ##2 }
+ }
+ \__scripture_poetry_ch:n { ##3 }
+ }
\cs_set_eq:NN \vs \__scripture_poetry_mode_vertical_verse:n
- \cs_set_eq:NN \extraskip \__scripture_poetry_extra_skip:
\cs_set_eq:NN \selah \__scripture_selah_output:
\cs_set_protected_nopar:Npn \textright ##1
{ \__scripture_poetry_text_right:nn { \l__scripture_text_right_sep_tl } { ##1 } }
\legacy_if:nTF { @newlist }
{ \dim_add:Nn \l__scripture_outer_itemindent_dim \itemindent }
{ \dim_zero:N \l__scripture_outer_itemindent_dim }
+ \cs_set_eq:NN \par \para_end:
+ \cs_set_eq:NN \noindent \tex_noindent:D
+ \hook_gput_next_code:nn { scripture / poetry / pilcrow }
+ {
+ \__scripture_pilcrow_output:
+ \bool_set_false:N \l__scripture_pilcrow_bool
+ \bool_set_false:N \l__scripture_verse_para_bool
+ }
\list { }
{
+ \bool_lazy_or:nnF
+ { \mode_if_vertical_p: }
+ { \g__scripture_para_mode_vertical_bool }
+ { \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool }
\dim_zero:N \labelsep
\dim_set_eq:NN \leftmargin \l__scripture_poetry_leftmargin_tl
\dim_set_eq:NN \rightmargin \l__scripture_poetry_rightmargin_tl
@@ -1674,10 +3040,6 @@
\dim_set_eq:NN \parindent \l__scripture_poetry_indent_tl
\item
\relax
- \cs_set_eq:NN \__scripture_tmp_para_end: \par
- \cs_set_eq:NN \par \__scripture_poetry_par:
- \hook_gput_next_code:nn { para / after }
- { \bool_gset_eq:NN \g__scripture_poetry_midparachap_show_verse_bool \l__scripture_midparachap_show_verse_bool }
}
\cs_new_protected:Nn \__scripture_poetry_end:
{
@@ -1688,6 +3050,8 @@
\skip_gset_eq:NN \g__scripture_prev_inner_below_skip \@topsepadd
\legacy_if_set_false:n { @noparlist }
\endlist
+ \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool
+ \hook_gclear_next_code:n { scripture / poetry / pilcrow }
\bool_gset_true:N \g__scripture_poetry_end_bool
\hook_gput_next_code:nn { para / begin }
{ \bool_gset_false:N \g__scripture_poetry_end_bool }
@@ -1716,47 +3080,47 @@
}
\NewDocumentEnvironment { scripture } { o o }
{
- \__scripture_begin:n { #2 }
+ \__scripture_begin:nn { #1 } { #2 }
\DeclareDocumentEnvironment { center } { o }
{
\__scripture_center_begin:n { ##1 }
- \ignorespaces
+ \__scripture_reference_start_peek:
}
{ \__scripture_center_end: }
\DeclareDocumentEnvironment { flushright } { o }
{
\__scripture_flushright_begin:n { ##1 }
- \ignorespaces
+ \__scripture_reference_start_peek:
}
{ \__scripture_flushright_end: }
\DeclareDocumentEnvironment { hanging } { o }
{
\__scripture_hanging_begin:n { ##1 }
- \ignorespaces
+ \__scripture_reference_start_peek:
}
{ \__scripture_hanging_end: }
\DeclareDocumentEnvironment { midparachap } { o }
{
\__scripture_mid_para_chap_begin:n { ##1 }
- \ignorespaces
+ \__scripture_reference_start_peek:
}
{ \__scripture_mid_para_chap_end: }
\DeclareDocumentEnvironment { narrow } { o }
{
\__scripture_narrow_begin:n { ##1 }
- \ignorespaces
+ \__scripture_reference_start_peek:
}
{ \__scripture_narrow_end: }
\DeclareDocumentEnvironment { poetryaux } { o }
{
\tl_if_novalue:nF { ##1 }
- {
- \keys_set:nn
- { scripture / poetry }
- { ##1 }
- }
+ {
+ \keys_set:nn
+ { scripture / poetry }
+ { ##1 }
+ }
\__scripture_poetry_begin:
- \ignorespaces
+ \__scripture_reference_start_peek:
}
{ \__scripture_poetry_end: }
\DeclareDocumentEnvironment { poetry } { }
@@ -1775,19 +3139,91 @@
\tl_set_eq:NN \l__scripture_ref_sep_tl \l__scripture_inline_ref_sep_tl
\cs_set_eq:NN \__scripture_version_format:n \__scripture_inline_version_format:n
\tl_set_eq:NN \l__scripture_version_delim_tl \l__scripture_inline_version_delim_tl
+ \bool_set_false:N \l__scripture_chap_para_bool
\bool_set_true:N \l__scripture_compact_bool
+ \bool_set_false:N \l__scripture_heading_show_bool
}
- \bool_if:NT \l__scripture_compact_bool
+ \bool_if:NT \l__scripture_chap_para_bool
{
- \scripturesetup { chapter / nodrop }
- \RenewDocumentEnvironment { center } { o } { \ignorespaces } { \unskip }
- \RenewDocumentEnvironment { flushright } { o } { \ignorespaces } { \unskip }
- \RenewDocumentEnvironment { hanging } { o } { \ignorespaces } { \unskip }
\RenewDocumentEnvironment { midparachap } { o } { \ignorespaces } { \unskip }
- \RenewDocumentEnvironment { narrow } { o } { \ignorespaces } { \unskip }
- \RenewDocumentEnvironment { poetry } { o } { \ignorespaces } { \unskip }
+ }
+ \bool_if:NT \l__scripture_verse_para_bool
+ {
+ \cs_set_eq:NN \vs \__scripture_verse_para_output:n
+ \cs_set_eq:NN \par \__scripture_para_par:
+ \cs_set_eq:NN \@par \__scripture_para_par:
+ \cs_set_eq:NN \@doendpe \__scripture_doendpe:
+ \cs_set_eq:NN \noindent \__scripture_para_noindent:
+ \cs_set_protected:Npn \\
+ {
+ \mode_if_horizontal:TF
+ { \unskip }
+ { \@nolnerr }
+ }
+ \RenewDocumentEnvironment { midparachap } { o }
+ {
+ \str_set:Nn \l__scripture_currenvir_str { midparachap }
+ \cs_set_eq:NN \noindent \tex_noindent:D
+ \cs_set_eq:cN { end ~ } \__scripture_mid_para_chap_end:n
+ \__scripture_reference_start_peek:
+ }
+ {
+ \para_end:
+ \bool_gset_false:N \g__scripture_suppress_next_pilcrow_bool
+ }
+ }
+ \bool_if:NT \l__scripture_compact_bool
+ {
+ \cs_set_eq:NN \noindent \__scripture_para_noindent:
+ \bool_if:NF \l__scripture_verse_para_bool
+ {
+ \bool_set_false:N \l__scripture_chap_drop_bool
+ \bool_set_false:N \l__scripture_chap_drop_llap_bool
+ \bool_set_false:N \l__scripture_chap_drop_smash_bool
+ \bool_set_false:N \l__scripture_chap_para_bool
+ \cs_set_eq:NN \vs \__scripture_verse_compact_output:n
+ }
+ \bool_gset:Nn \g__scripture_mode_vertical_inner_bool
+ { \mode_if_vertical_p: }
+ \RenewDocumentEnvironment { center } { o }
+ {
+ \str_set:Nn \l__scripture_currenvir_str { center }
+ \__scripture_reference_start_peek:
+ }
+ { \__scripture_compact_end_inner: }
+ \RenewDocumentEnvironment { flushright } { o }
+ {
+ \str_set:Nn \l__scripture_currenvir_str { flushright }
+ \__scripture_reference_start_peek:
+ }
+ { \__scripture_compact_end_inner: }
+ \RenewDocumentEnvironment { hanging } { o }
+ {
+ \str_set:Nn \l__scripture_currenvir_str { hanging }
+ \__scripture_reference_start_peek:
+ }
+ { \__scripture_compact_end_inner: }
+ \RenewDocumentEnvironment { midparachap } { o }
+ {
+ \str_set:Nn \l__scripture_currenvir_str { midparachap }
+ \cs_set_eq:cN { end ~ } \__scripture_mid_para_chap_end:n
+ \__scripture_reference_start_peek:
+ }
+ { \__scripture_compact_end_inner: }
+ \RenewDocumentEnvironment { narrow } { o }
+ {
+ \str_set:Nn \l__scripture_currenvir_str { narrow }
+ \__scripture_reference_start_peek:
+ }
+ { \__scripture_compact_end_inner: }
+ \RenewDocumentEnvironment { poetry } { o }
+ {
+ \str_set:Nn \l__scripture_currenvir_str { poetry }
+ \__scripture_reference_start_peek:
+ }
+ { \__scripture_compact_end_inner: }
\cs_set_eq:NN \\ \unskip
- \cs_set_eq:NN \par \relax
+ \cs_set_eq:NN \par \__scripture_compact_par:
\cs_set_eq:NN \extraskip \relax
\cs_set_eq:NN \nohang \relax
\cs_set:Npn \selah
@@ -1805,14 +3241,13 @@
\c_space_tl
##1
}
- \mode_leave_vertical:
}
- \ignorespaces
+ \__scripture_reference_start_peek:
}
{
- \bool_if:NT \l__scripture_compact_bool
- { \cs_set_eq:NN \par \endgraf }
- \__scripture_end:n { #1 }
+ \bool_lazy_or:nnT \l__scripture_compact_bool \l__scripture_verse_para_bool
+ { \cs_set_eq:NN \par \para_end: }
+ \__scripture_end:
}
%%
%%
diff --git a/Master/texmf-dist/tex/latex/scrlayer-fancyhdr/scrlayer-fancyhdr.sty b/Master/texmf-dist/tex/latex/scrlayer-fancyhdr/scrlayer-fancyhdr.sty
index 285d5bc5e69..a943af1bfd1 100644
--- a/Master/texmf-dist/tex/latex/scrlayer-fancyhdr/scrlayer-fancyhdr.sty
+++ b/Master/texmf-dist/tex/latex/scrlayer-fancyhdr/scrlayer-fancyhdr.sty
@@ -24,9 +24,10 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%%% docstrip run: identify
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{scrlayer-fancyhdr}[2022-07-08 v0.2.2
- combining fancyhdr with KOMA-Script's scrlayer]
+\NeedsTeXFormat{LaTeX2e}[2020/10/01]
+\ProvidesPackage{scrlayer-fancyhdr}
+ [2025-01-08 v0.3.1
+ combining fancyhdr with KOMA-Script's scrlayer]
%%% docstrip run: init
\RequirePackage{scrlayer}[2021/02/15]
%%% docstrip run: options
@@ -35,34 +36,74 @@
\DeclareOption{compatV3}{\PassOptionsToPackage{compatV3}{fancyhdr}}
\DeclareOption{myheadings}{\PassOptionsToPackage{myheadings}{fancyhdr}}
\DeclareOption{headings}{\PassOptionsToPackage{headings}{fancyhdr}}
+\DeclareOption{twoside}{\PassOptionsToPackage{twoside}{fancyhdr}}
%%% docstrip run: body
\KOMAProcessOptions
\RequirePackage{fancyhdr}
-\DeclareNewLayer[%
- background,oddpage,
- head,
- contents={\hb@xt@ \layerwidth{%
- \f@nch@head\f@nch@Oolh\f@nch@olh\f@nch@och\f@nch@orh\f@nch@Oorh}}
-]{fancy.head.odd}
-\DeclareNewLayer[%
- background,evenpage,
- head,
- contents={\hb@xt@ \layerwidth{%
- \f@nch@head\f@nch@Oelh\f@nch@elh\f@nch@ech\f@nch@erh\f@nch@Oerh}}
-]{fancy.head.even}
-\DeclareNewLayer[%
- foreground,oddpage,
- foot,
- contents={\hb@xt@ \layerwidth{%
- \f@nch@foot\f@nch@Oolf\f@nch@olf\f@nch@ocf\f@nch@orf\f@nch@Oorf}}
-]{fancy.foot.odd}
-\DeclareNewLayer[%
- foreground,evenpage,
- foot,
- contents={\hb@xt@ \layerwidth{%
- \f@nch@foot\f@nch@Oelf\f@nch@elf\f@nch@ecf\f@nch@erf\f@nch@Oerf}}
-]{fancy.foot.even}
-\@ifpackagelater{fancyhdr}{2019/03/21}{%
+\IfPackageAtLeastTF{fancyhdr}{2025/01/01}{%
+ \DeclareNewLayer[%
+ background,oddpage,
+ head,
+ contents={\hb@xt@ \layerwidth{%
+ \f@nch@head\f@nch@Oolh\f@nch@olh\f@nch@och\f@nch@orh\f@nch@Oorh
+ \f@nch@width@olh\f@nch@width@och\f@nch@width@orh
+ }}
+ ]{fancy.head.odd}
+ \DeclareNewLayer[%
+ background,evenpage,
+ head,
+ contents={\hb@xt@ \layerwidth{%
+ \f@nch@head\f@nch@Oelh\f@nch@elh\f@nch@ech\f@nch@erh\f@nch@Oerh
+ \f@nch@width@elh\f@nch@width@ech\f@nch@width@erh
+ }}
+ ]{fancy.head.even}
+ \DeclareNewLayer[%
+ foreground,oddpage,
+ foot,
+ contents={\hb@xt@ \layerwidth{%
+ \f@nch@foot\f@nch@Oolf\f@nch@olf\f@nch@ocf\f@nch@orf\f@nch@Oorf
+ \f@nch@width@olf\f@nch@width@ocf\f@nch@width@orf
+ }}
+ ]{fancy.foot.odd}
+ \DeclareNewLayer[%
+ foreground,evenpage,
+ foot,
+ contents={\hb@xt@ \layerwidth{%
+ \f@nch@foot\f@nch@Oelf\f@nch@elf\f@nch@ecf\f@nch@erf\f@nch@Oerf
+ \f@nch@width@elf\f@nch@width@ecf\f@nch@width@erf
+ }}
+ ]{fancy.foot.even}
+}{%
+ \DeclareNewLayer[%
+ background,oddpage,
+ head,
+ contents={\hb@xt@ \layerwidth{%
+ \f@nch@head\f@nch@Oolh\f@nch@olh\f@nch@och\f@nch@orh\f@nch@Oorh
+ }}
+ ]{fancy.head.odd}
+ \DeclareNewLayer[%
+ background,evenpage,
+ head,
+ contents={\hb@xt@ \layerwidth{%
+ \f@nch@head\f@nch@Oelh\f@nch@elh\f@nch@ech\f@nch@erh\f@nch@Oerh
+ }}
+ ]{fancy.head.even}
+ \DeclareNewLayer[%
+ foreground,oddpage,
+ foot,
+ contents={\hb@xt@ \layerwidth{%
+ \f@nch@foot\f@nch@Oolf\f@nch@olf\f@nch@ocf\f@nch@orf\f@nch@Oorf
+ }}
+ ]{fancy.foot.odd}
+ \DeclareNewLayer[%
+ foreground,evenpage,
+ foot,
+ contents={\hb@xt@ \layerwidth{%
+ \f@nch@foot\f@nch@Oelf\f@nch@elf\f@nch@ecf\f@nch@erf\f@nch@Oerf
+ }}
+ ]{fancy.foot.even}
+}
+\IfPackageAtLeastTF{fancyhdr}{2019/03/21}{%
\DeclarePageStyleByLayers[
onselect={\def\@mkboth{\protect\markboth}},
]{f@nch@fancycore}{%
diff --git a/Master/texmf-dist/tex/latex/se2thesis/se2colors.sty b/Master/texmf-dist/tex/latex/se2thesis/se2colors.sty
index 1ac9a8c7cbd..f58673afaa7 100644
--- a/Master/texmf-dist/tex/latex/se2thesis/se2colors.sty
+++ b/Master/texmf-dist/tex/latex/se2thesis/se2colors.sty
@@ -48,7 +48,7 @@
\endinput
}%
\providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion }
-\ProvidesExplPackage {se2colors} {2024-08-12} {4.3.2}
+\ProvidesExplPackage {se2colors} {2024-10-16} {4.4.0}
{A colour support package for the se2thesis bundle}
\keys_define:nn { seiicolors }
{
diff --git a/Master/texmf-dist/tex/latex/se2thesis/se2fonts.sty b/Master/texmf-dist/tex/latex/se2thesis/se2fonts.sty
index e86497c76be..e2beb64b008 100644
--- a/Master/texmf-dist/tex/latex/se2thesis/se2fonts.sty
+++ b/Master/texmf-dist/tex/latex/se2thesis/se2fonts.sty
@@ -48,7 +48,7 @@
\endinput
}%
\providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion }
-\ProvidesExplPackage {se2fonts} {2024-08-12} {4.3.2}
+\ProvidesExplPackage {se2fonts} {2024-10-16} {4.4.0}
{A font-selection support package for the se2thesis bundle}
\msg_new:nnnn { seiifonts } { pdflatex-used }
{ You~ are~ using~ pdfLaTeX~ with~ the~ se2fonts~ packages.}
@@ -78,6 +78,7 @@
{ Switch~ to~ pdfTeX~ or~ (preferably)~ LuaTeX. }
\msg_error:nn { seiifonts } { xetex-not-supported }
}
+\RequirePackage{mismath}
\ifengineTF { \luatexengine }
{
\RequirePackage{fontspec}
diff --git a/Master/texmf-dist/tex/latex/se2thesis/se2packages.sty b/Master/texmf-dist/tex/latex/se2thesis/se2packages.sty
index ae26465fee6..ff2c5661a59 100644
--- a/Master/texmf-dist/tex/latex/se2thesis/se2packages.sty
+++ b/Master/texmf-dist/tex/latex/se2thesis/se2packages.sty
@@ -48,7 +48,7 @@
\endinput
}%
\providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion }
-\ProvidesExplPackage {se2packages} {2024-08-12} {4.3.2}
+\ProvidesExplPackage {se2packages} {2024-10-16} {4.4.0}
{Supporting packages for the se2thesis bundle}
\bool_new:N \l__slcd_packages_csquotes_bool
\bool_new:N \l__slcd_packages_booktabs_bool
diff --git a/Master/texmf-dist/tex/latex/se2thesis/se2thesis.cls b/Master/texmf-dist/tex/latex/se2thesis/se2thesis.cls
index 7893d3da55c..ddc9f7e5ab7 100644
--- a/Master/texmf-dist/tex/latex/se2thesis/se2thesis.cls
+++ b/Master/texmf-dist/tex/latex/se2thesis/se2thesis.cls
@@ -48,7 +48,7 @@
\endinput
}%
\providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion }
-\ProvidesExplClass {se2thesis} {2024-08-12} {4.3.2}
+\ProvidesExplClass {se2thesis} {2024-10-16} {4.4.0}
{A thesis class for the Chair of Software Engineering II}
\prg_new_conditional:Nnn \slcd_package_if_loaded:n { p, T, F, TF }
{
@@ -243,11 +243,11 @@
{
\areaset[current]{350pt}{567pt}
\setlength{\marginparsep}{8.5cm}
- \setlength{\marginparsep}{1em}
+ \setlength{\marginparsep}{1.5em}
}{
\areaset[current]{350pt}{567pt}
\setlength{\marginparsep}{7.4cm}
- \setlength{\marginparsep}{0.87em}
+ \setlength{\marginparsep}{1.5em}
}
\PassOptionsToPackage{automark}{scrlayer-scrpage}
\RequirePackage{scrlayer-scrpage}
@@ -335,10 +335,9 @@
\DeclareNewLayer[
mode=picture,
foreground,
- align=tr,
- hoffset=\oddsidemargin+1.5in+\textwidth,
+ hoffset=\paperwidth-\coverpagerightmargin-\box_wd:N \l__slcd_logo_box,
voffset=\coverpagetopmargin+1.5in+\ht\strutbox,
- width=\textwidth - \box_wd:N \l__slcd_logo_box,
+ width=\box_wd:N \l__slcd_logo_box,
height=\box_ht:N \l__slcd_logo_box,
contents={\putUL{\box_use:N \l__slcd_logo_box}},
]{title.seii.logo}
diff --git a/Master/texmf-dist/tex/latex/se2thesis/se2translations-english.trsl b/Master/texmf-dist/tex/latex/se2thesis/se2translations-english.trsl
index 734d6f34a1f..bbada18df1e 100644
--- a/Master/texmf-dist/tex/latex/se2thesis/se2translations-english.trsl
+++ b/Master/texmf-dist/tex/latex/se2thesis/se2translations-english.trsl
@@ -32,7 +32,7 @@
%% se2packages.sty,
%% se2thesis-master-thesis-example.bib, and
%% se2thesis-master-thesis-example.pdf
-\ProvideDictionaryFor{English}{se2translations}[2024/08/12]
+\ProvideDictionaryFor{English}{se2translations}[2024/10/16]
\ProvideDictTranslation{abstract}{abstract}
\ProvideDictTranslation{Abstract}{Abstract}
\ProvideDictTranslation{acknowledgement}{acknowledgement}
diff --git a/Master/texmf-dist/tex/latex/se2thesis/se2translations-german.trsl b/Master/texmf-dist/tex/latex/se2thesis/se2translations-german.trsl
index 867b6e3b1aa..8838b0df892 100644
--- a/Master/texmf-dist/tex/latex/se2thesis/se2translations-german.trsl
+++ b/Master/texmf-dist/tex/latex/se2thesis/se2translations-german.trsl
@@ -32,7 +32,7 @@
%% se2packages.sty,
%% se2thesis-master-thesis-example.bib, and
%% se2thesis-master-thesis-example.pdf
-\ProvideDictionaryFor{German}{se2translations}[2024/08/12]
+\ProvideDictionaryFor{German}{se2translations}[2024/10/16]
\ProvideDictTranslation{abstract}{Zusammenfassung}
\ProvideDictTranslation{Abstract}{Zusammenfassung}
\ProvideDictTranslation{acknowledgement}{Danksagung}
diff --git a/Master/texmf-dist/tex/latex/setspaceenhanced/setspaceenhanced.sty b/Master/texmf-dist/tex/latex/setspaceenhanced/setspaceenhanced.sty
index ae0b94e9e0e..462e4977f2b 100644
--- a/Master/texmf-dist/tex/latex/setspaceenhanced/setspaceenhanced.sty
+++ b/Master/texmf-dist/tex/latex/setspaceenhanced/setspaceenhanced.sty
@@ -21,7 +21,7 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
\ProvidesExplPackage{setspaceenhanced}
- {2023-10-09}{1.02}
+ {2024-11-12}{1.04}
{%
improved setspace package%
}
@@ -70,9 +70,15 @@
{
\fp_if_nan:nF { \g__setspaceenhanced_fp }
{
- \fp_set:Nn \g__setspaceenhanced_linespread_fp
+ \fp_compare:nNnTF { \dim_to_fp:n \f@baselineskip } < \f@size
{
- \f@size / \dim_to_fp:n { \f@baselineskip } * \g__setspaceenhanced_fp
+ \fp_set_eq:NN \g__setspaceenhanced_fp \g__setspaceenhanced_linespread_fp
+ }
+ {
+ \fp_set:Nn \g__setspaceenhanced_linespread_fp
+ {
+ \f@size / \dim_to_fp:n { \f@baselineskip } * \g__setspaceenhanced_fp
+ }
}
}
}
@@ -82,8 +88,7 @@
{
\cs_if_exist:NT \size@update
{
- \fp_set:Nn \l_tmpa_fp { \f@linespread }
- \fp_compare:nNnT \g__setspaceenhanced_linespread_fp = \l_tmpa_fp
+ \fp_compare:nNnT \g__setspaceenhanced_linespread_fp = \f@linespread
{
\__setspaceenhanced_calc_stretch:
\set@fontsize
@@ -106,19 +111,29 @@
}
}
\DeclareKeys{%
- singlespacing .code = \__setspaceenhanced_set_spacing:nn {#1} {single},
- singlespacing .usage = general,
- onehalfspacing .code = \__setspaceenhanced_set_spacing:nn {#1} {onehalf},
- onehalfspacing .usage = general,
- doublespacing .code = \__setspaceenhanced_set_spacing:nn {#1} {double},
- doublespacing .usage = general,
byselectfont .bool_set:N = \g__setspaceenhanced_byselectfont_bool,
byselectfont .default:n = true,
byselectfont .initial:n = false,
+ byselectfont .usage = general,
keepfontsize .bool_set:N = \g__setspaceenhanced_fontsize_bool,
keepfontsize .default:n = true,
keepfontsize .initial:n = false,
+ keepfontsize .usage = general,
+ singlespacing .code = \__setspaceenhanced_set_spacing:nn {#1} {single},
+ singlespacing .usage = general,
+ singlespacing .initial:n = ,
+ onehalfspacing .code = \__setspaceenhanced_set_spacing:nn {#1} {onehalf},
+ onehalfspacing .usage = general,
+ doublespacing .code = \__setspaceenhanced_set_spacing:nn {#1} {double},
+ doublespacing .usage = general,
+ nodisplayskipstretch .code = \setdisplayskipstretch{1.0},
+ nodisplayskipstretch .usage = general,
}
+\clist_map_inline:nn
+ { nodisplayskipstretch, singlespacing, onehalfspacing, doublespacing }
+ {
+ \@ifpackagewith {setspace} {#1} {\SetKeys{#1}} { }
+ }
\ProcessKeyOptions\relax
\renewcommand*{\singlespacing}{
\__setspaceenhanced_set_spacing:nn {} {single}
diff --git a/Master/texmf-dist/tex/latex/sim-os-menus/sim-os-menus.sty b/Master/texmf-dist/tex/latex/sim-os-menus/sim-os-menus.sty
index 01da065abb9..ee8a15a8eba 100644
--- a/Master/texmf-dist/tex/latex/sim-os-menus/sim-os-menus.sty
+++ b/Master/texmf-dist/tex/latex/sim-os-menus/sim-os-menus.sty
@@ -2,7 +2,9 @@
% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{sim-os-menus}[2023/11/14 0.1.1 Present 'context menu'/'terminal'/'windows', with TikZ or tcolorbox (en of fr commands)]
+\ProvidesPackage{sim-os-menus}[2024/09/28 0.1.3 Present 'context menu'/'terminal'/'windows', with TikZ or tcolorbox (en or fr commands)]
+% 0.1.3 DirTree avec forest
+% 0.1.2 Ajout d'une visionneuse type python
% 0.1.1 French version of the commands
% 0.1.0 Initial version
@@ -794,4 +796,180 @@
\endtcolorbox%
}
+%====PYVIEWER (OK) 0.1.2
+\tcbset{StylePYViewer/.style={%
+ enhanced,boxrule=1pt,arc=3pt,before skip=\baselineskip,after skip=\baselineskip,%
+ colframe=gray,colback=lightgray!5,colbacktitle=lightgray!15,colupper=black,coltitle=black,titlerule=0.4pt,left=3pt,top=2pt,bottom=2pt,right=2pt,middle=0pt,fonttitle=\bfseries\small\sffamily
+ }
+}
+
+\setKVdefault[PYVisionn]{Titre={Éditeur Python},Align={center},Largeur={\linewidth},AlignH={flush left},Icones=true}
+
+\NewDocumentCommand\PYVIewerTitre{ s }{%
+ \IfBooleanTF{#1}%
+ {%
+ \begin{tblr}{colsep=4pt,rowsep=0pt,width=\linewidth,colspec={l|[1pt]X[c]|[1pt]c},cells={font=\footnotesize}}
+ \vphantom{p}\useKV[PYVisionn]{Titre} && \faPython \\
+ \end{tblr}
+ }%
+ {%
+ \begin{tblr}{colsep=4pt,rowsep=0pt,width=\linewidth,colspec={l|[1pt]l|[1pt]l|[1pt]l|[1pt]X[c]|[1pt]c},cells={font=\footnotesize}}
+ \vphantom{p}\useKV[PYVisionn]{Titre} & \faFile*[regular]~~\faIcon[regular]
+ {file-code}~~\faSave&\faPlay~~\faStop&\faBug&& \faPython \\
+ \end{tblr}
+ }%
+}
+
+\NewDocumentEnvironment{VisionnPY}{ O{} m }
+{%
+ \restoreKV[PYVisionn]%
+ \setKV[PYVisionn]{#1}%
+ \tcolorbox[StylePYViewer,{\useKV[PYVisionn]{Align}},title={\ifboolKV[PYVisionn]{Icones}{\PYVIewerTitre}{\PYVIewerTitre*}},width={\useKV[PYVisionn]{Largeur}},halign={\useKV[PYVisionn]{AlignH}},#2]
+}%
+{%
+ \endtcolorbox%
+}
+
+\setKVdefault[PYViewer]{title={Python editor},align={center},width={\linewidth},halign={flush left},icons=true}
+
+\NewDocumentCommand\PYVIewerTitle{ s }{%
+ \IfBooleanTF{#1}%
+ {%
+ \begin{tblr}{colsep=4pt,rowsep=0pt,width=\linewidth,colspec={l|[1pt]X[c]|[1pt]c},cells={font=\footnotesize}}
+ \vphantom{p}\useKV[PYViewer]{title} && \faPython \\
+ \end{tblr}
+ }%
+ {%
+ \begin{tblr}{colsep=4pt,rowsep=0pt,width=\linewidth,colspec={l|[1pt]l|[1pt]l|[1pt]l|[1pt]X[c]|[1pt]c},cells={font=\footnotesize}}
+ \vphantom{p}\useKV[PYViewer]{title} & \faFile*[regular]~~\faIcon[regular]
+ {file-code}~~\faSave&\faPlay~~\faStop&\faBug&& \faPython \\
+ \end{tblr}
+ }%
+}
+
+\NewDocumentEnvironment{PYViewer}{ O{} m }
+{%
+ \restoreKV[PYViewer]%
+ \setKV[PYViewer]{#1}%
+ \tcolorbox[StylePYViewer,{\useKV[PYViewer]{align}},title={\ifboolKV[PYViewer]{icons}{\PYVIewerTitle}{\PYVIewerTitle*}},width={\useKV[PYViewer]{width}},halign={\useKV[PYViewer]{halign}},#2]
+}%
+{%
+ \endtcolorbox%
+}
+
+%====FOLDERTREEE (forest)
+\RequirePackage{forest}
+\useforestlibrary{edges}
+
+%\def\foldertreecolor{yellow!50!pink}
+%\def\filefoldertreecolor{gray}
+
+\NewDocumentCommand\dirforest{ s O{\foldertreecolor} }{%
+ \IfBooleanTF{#1}{}{\scalebox{0.85}[0.85]{\color{#2}\foldertreeiconfolder}\hspace{0.25em}}%
+}
+
+\NewDocumentCommand\fileforest{ s O{\filefoldertreecolor} }{%
+ \IfBooleanTF{#1}{}{\scalebox{0.85}[0.85]{\color{#2}\foldertreeiconfile}\hspace{0.25em}}%
+}
+
+\tikzset{FTdir/.style={inner sep=1pt,execute at begin node=\vphantom{(pL)}\dirforest}}
+\tikzset{FTfile/.style={inner sep=1pt,execute at begin node=\vphantom{(pL)}\fileforest}}
+\tikzset{FTedge/.style={semithick,darkgray}}
+
+\defKV[forestdirtree]{%
+ font=\def\forestditreefont{#1},%
+ coliconfolder=\def\foldertreecolor{#1},%
+ iconfolder=\def\foldertreeiconfolder{#1},%
+ coliconfile=\def\filefoldertreecolor{#1},%
+ vsep=\def\filefoldertreevsep{#1},%
+ iconfile=\def\foldertreeiconfile{#1}
+}
+
+\setKVdefault[forestdirtree]{%
+ font=\footnotesize\ttfamily,%
+ coliconfolder=gray,%
+ coliconfile=gray,%
+ iconfolders=true,%
+ iconfiles=false,%
+ vsep=0.15em,%
+ iconfolder={\faFolderOpen},%
+ iconfile={\faIcon*[regular]{file}}
+}
+
+\NewDocumentEnvironment{ForestDirTree}{ O{} m +b }
+{
+ \restoreKV[forestdirtree]%
+ \setKV[forestdirtree]{#1}%
+ \ifboolKV[forestdirtree]{iconfolders}%
+ {%
+ \tikzset{FTdir/.style={inner sep=1pt,execute at begin node=\vphantom{(pL)}\dirforest}}%
+ }%
+ {%
+ \tikzset{FTdir/.style={inner sep=1pt,execute at begin node=\vphantom{(pL)}\dirforest*}}%
+ }%
+ \ifboolKV[forestdirtree]{iconfiles}%
+ {%
+ \tikzset{FTfile/.style={inner sep=1pt,execute at begin node=\vphantom{(pL)}\fileforest}}%
+ }%
+ {%
+ \tikzset{FTfile/.style={inner sep=1pt,execute at begin node=\vphantom{(pL)}\fileforest*}}%
+ }%
+ \forest
+ for tree={s sep=\filefoldertreevsep,folder,grow'=0,folder indent=0.5em,fit=band,font=\forestditreefont,edge={FTedge},#2}
+ #3
+}%
+{%
+ \endforest%
+}
+
+\tikzset{ADdos/.style={inner sep=1pt,execute at begin node=\vphantom{(pL)}\dirforest}}
+\tikzset{ADfic/.style={inner sep=1pt,execute at begin node=\vphantom{(pL)}\fileforest}}
+\tikzset{ADtrait/.style={semithick,darkgray}}
+
+\defKV[forestarbor]{%
+ Police=\def\forestditreefont{#1},%
+ CoulIcoD=\def\foldertreecolor{#1},%
+ CoulIcoF=\def\filefoldertreecolor{#1},%
+ EspaceV=\def\filefoldertreevsep{#1},%
+ IcoD=\def\foldertreeiconfolder{#1},%
+ IcoF=\def\foldertreeiconfile{#1}
+}
+
+\setKVdefault[forestarbor]{%
+ Police=\footnotesize\ttfamily,%
+ CoulIcoD=gray,%
+ CoulIcoF=gray,%
+ AffIcoD=true,%
+ AffIcoF=false,%
+ EspaceV=0.15em,%
+ IcoD={\faFolderOpen},%
+ IcoF={\faIcon*[regular]{file}}
+}
+
+\NewDocumentEnvironment{ArborDossiers}{ O{} m +b }
+{
+ \restoreKV[forestarbor]%
+ \setKV[forestarbor]{#1}%
+ \ifboolKV[forestarbor]{AffIcoD}%
+ {%
+ \tikzset{ADdos/.style={inner sep=1pt,execute at begin node=\vphantom{(pL)}\dirforest}}%
+ }%
+ {%
+ \tikzset{ADdos/.style={inner sep=1pt,execute at begin node=\vphantom{(pL)}\dirforest*}}%
+ }%
+ \ifboolKV[forestarbor]{AffIcoF}%
+ {%
+ \tikzset{ADfic/.style={inner sep=1pt,execute at begin node=\vphantom{(pL)}\fileforest}}%
+ }%
+ {%
+ \tikzset{ADfic/.style={inner sep=1pt,execute at begin node=\vphantom{(pL)}\fileforest*}}%
+ }%
+ \forest
+ for tree={s sep=\filefoldertreevsep,folder,grow'=0,folder indent=0.5em,fit=band,font=\forestditreefont,edge={ADtrait},#2}
+ #3
+}%
+{%
+ \endforest%
+}
+
\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/simpleicons/simpleicons.sty b/Master/texmf-dist/tex/latex/simpleicons/simpleicons.sty
index cde8a0271b2..e28a0f56756 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/simpleicons.sty
+++ b/Master/texmf-dist/tex/latex/simpleicons/simpleicons.sty
@@ -1,6 +1,6 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{simpleicons}[2024/09/06 13.8.0 Simple Icons 13.8.0 Logos]
+\ProvidesPackage{simpleicons}[2025/01/24 14.3.0 Simple Icons 14.3.0 Logos]
\RequirePackage{iftex}
diff --git a/Master/texmf-dist/tex/latex/simpleicons/simpleiconsglyphs-pdftex.tex b/Master/texmf-dist/tex/latex/simpleicons/simpleiconsglyphs-pdftex.tex
index d71dcdf0fa8..2745e7ba46d 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/simpleiconsglyphs-pdftex.tex
+++ b/Master/texmf-dist/tex/latex/simpleicons/simpleiconsglyphs-pdftex.tex
@@ -1,176 +1,176 @@
- \expandafter\def\csname simpleicon@1001tracklistsicon\endcsname {\simpleiconsmapone\symbol{0}}
- \expandafter\def\csname simpleicon@1dot1dot1dot1icon\endcsname {\simpleiconsmapone\symbol{1}}
- \expandafter\def\csname simpleicon@1panelicon\endcsname {\simpleiconsmapone\symbol{2}}
- \expandafter\def\csname simpleicon@1passwordicon\endcsname {\simpleiconsmapone\symbol{3}}
- \expandafter\def\csname simpleicon@2fasicon\endcsname {\simpleiconsmapone\symbol{4}}
- \expandafter\def\csname simpleicon@2kicon\endcsname {\simpleiconsmapone\symbol{5}}
- \expandafter\def\csname simpleicon@365datascienceicon\endcsname {\simpleiconsmapone\symbol{6}}
- \expandafter\def\csname simpleicon@3micon\endcsname {\simpleiconsmapone\symbol{7}}
- \expandafter\def\csname simpleicon@42icon\endcsname {\simpleiconsmapone\symbol{8}}
- \expandafter\def\csname simpleicon@4chanicon\endcsname {\simpleiconsmapone\symbol{9}}
- \expandafter\def\csname simpleicon@4dicon\endcsname {\simpleiconsmapone\symbol{10}}
- \expandafter\def\csname simpleicon@500pxicon\endcsname {\simpleiconsmapone\symbol{11}}
- \expandafter\def\csname simpleicon@7zipicon\endcsname {\simpleiconsmapone\symbol{12}}
- \expandafter\def\csname simpleicon@99designsicon\endcsname {\simpleiconsmapone\symbol{13}}
- \expandafter\def\csname simpleicon@9gagicon\endcsname {\simpleiconsmapone\symbol{14}}
- \expandafter\def\csname simpleicon@abbotticon\endcsname {\simpleiconsmapone\symbol{15}}
- \expandafter\def\csname simpleicon@abbrobotstudioicon\endcsname {\simpleiconsmapone\symbol{16}}
- \expandafter\def\csname simpleicon@abbvieicon\endcsname {\simpleiconsmapone\symbol{17}}
- \expandafter\def\csname simpleicon@aboutdotmeicon\endcsname {\simpleiconsmapone\symbol{18}}
- \expandafter\def\csname simpleicon@abstracticon\endcsname {\simpleiconsmapone\symbol{19}}
- \expandafter\def\csname simpleicon@abusedotchicon\endcsname {\simpleiconsmapone\symbol{20}}
- \expandafter\def\csname simpleicon@academiaicon\endcsname {\simpleiconsmapone\symbol{21}}
- \expandafter\def\csname simpleicon@accentureicon\endcsname {\simpleiconsmapone\symbol{22}}
- \expandafter\def\csname simpleicon@accusofticon\endcsname {\simpleiconsmapone\symbol{23}}
- \expandafter\def\csname simpleicon@acericon\endcsname {\simpleiconsmapone\symbol{24}}
- \expandafter\def\csname simpleicon@acmicon\endcsname {\simpleiconsmapone\symbol{25}}
- \expandafter\def\csname simpleicon@actigraphicon\endcsname {\simpleiconsmapone\symbol{26}}
- \expandafter\def\csname simpleicon@activisionicon\endcsname {\simpleiconsmapone\symbol{27}}
- \expandafter\def\csname simpleicon@activitypubicon\endcsname {\simpleiconsmapone\symbol{28}}
- \expandafter\def\csname simpleicon@actixicon\endcsname {\simpleiconsmapone\symbol{29}}
- \expandafter\def\csname simpleicon@acuraicon\endcsname {\simpleiconsmapone\symbol{30}}
- \expandafter\def\csname simpleicon@adafruiticon\endcsname {\simpleiconsmapone\symbol{31}}
- \expandafter\def\csname simpleicon@adblockicon\endcsname {\simpleiconsmapone\symbol{32}}
- \expandafter\def\csname simpleicon@adblockplusicon\endcsname {\simpleiconsmapone\symbol{33}}
- \expandafter\def\csname simpleicon@adguardicon\endcsname {\simpleiconsmapone\symbol{34}}
- \expandafter\def\csname simpleicon@adidasicon\endcsname {\simpleiconsmapone\symbol{35}}
- \expandafter\def\csname simpleicon@adminericon\endcsname {\simpleiconsmapone\symbol{36}}
- \expandafter\def\csname simpleicon@adobeicon\endcsname {\simpleiconsmapone\symbol{37}}
- \expandafter\def\csname simpleicon@adobeacrobatreadericon\endcsname {\simpleiconsmapone\symbol{38}}
- \expandafter\def\csname simpleicon@adobeaftereffectsicon\endcsname {\simpleiconsmapone\symbol{39}}
- \expandafter\def\csname simpleicon@adobeauditionicon\endcsname {\simpleiconsmapone\symbol{40}}
- \expandafter\def\csname simpleicon@adobecreativecloudicon\endcsname {\simpleiconsmapone\symbol{41}}
- \expandafter\def\csname simpleicon@adobedreamweavericon\endcsname {\simpleiconsmapone\symbol{42}}
- \expandafter\def\csname simpleicon@adobefontsicon\endcsname {\simpleiconsmapone\symbol{43}}
- \expandafter\def\csname simpleicon@adobeillustratoricon\endcsname {\simpleiconsmapone\symbol{44}}
- \expandafter\def\csname simpleicon@adobeindesignicon\endcsname {\simpleiconsmapone\symbol{45}}
- \expandafter\def\csname simpleicon@adobelightroomicon\endcsname {\simpleiconsmapone\symbol{46}}
- \expandafter\def\csname simpleicon@adobelightroomclassicicon\endcsname {\simpleiconsmapone\symbol{47}}
- \expandafter\def\csname simpleicon@adobephotoshopicon\endcsname {\simpleiconsmapone\symbol{48}}
- \expandafter\def\csname simpleicon@adobepremiereproicon\endcsname {\simpleiconsmapone\symbol{49}}
- \expandafter\def\csname simpleicon@adobexdicon\endcsname {\simpleiconsmapone\symbol{50}}
- \expandafter\def\csname simpleicon@adonisjsicon\endcsname {\simpleiconsmapone\symbol{51}}
- \expandafter\def\csname simpleicon@adpicon\endcsname {\simpleiconsmapone\symbol{52}}
- \expandafter\def\csname simpleicon@adrollicon\endcsname {\simpleiconsmapone\symbol{53}}
- \expandafter\def\csname simpleicon@adventofcodeicon\endcsname {\simpleiconsmapone\symbol{54}}
- \expandafter\def\csname simpleicon@adyenicon\endcsname {\simpleiconsmapone\symbol{55}}
- \expandafter\def\csname simpleicon@aegisauthenticatoricon\endcsname {\simpleiconsmapone\symbol{56}}
- \expandafter\def\csname simpleicon@aerlingusicon\endcsname {\simpleiconsmapone\symbol{57}}
- \expandafter\def\csname simpleicon@aerofloticon\endcsname {\simpleiconsmapone\symbol{58}}
- \expandafter\def\csname simpleicon@aeromexicoicon\endcsname {\simpleiconsmapone\symbol{59}}
- \expandafter\def\csname simpleicon@aerospikeicon\endcsname {\simpleiconsmapone\symbol{60}}
- \expandafter\def\csname simpleicon@aewicon\endcsname {\simpleiconsmapone\symbol{61}}
- \expandafter\def\csname simpleicon@affineicon\endcsname {\simpleiconsmapone\symbol{62}}
- \expandafter\def\csname simpleicon@affinityicon\endcsname {\simpleiconsmapone\symbol{63}}
- \expandafter\def\csname simpleicon@affinitydesignericon\endcsname {\simpleiconsmapone\symbol{64}}
- \expandafter\def\csname simpleicon@affinityphotoicon\endcsname {\simpleiconsmapone\symbol{65}}
- \expandafter\def\csname simpleicon@affinitypublishericon\endcsname {\simpleiconsmapone\symbol{66}}
- \expandafter\def\csname simpleicon@aframeicon\endcsname {\simpleiconsmapone\symbol{67}}
- \expandafter\def\csname simpleicon@afterpayicon\endcsname {\simpleiconsmapone\symbol{68}}
- \expandafter\def\csname simpleicon@agoraicon\endcsname {\simpleiconsmapone\symbol{69}}
- \expandafter\def\csname simpleicon@aibicon\endcsname {\simpleiconsmapone\symbol{70}}
- \expandafter\def\csname simpleicon@aidungeonicon\endcsname {\simpleiconsmapone\symbol{71}}
- \expandafter\def\csname simpleicon@aiohttpicon\endcsname {\simpleiconsmapone\symbol{72}}
- \expandafter\def\csname simpleicon@aiqfomeicon\endcsname {\simpleiconsmapone\symbol{73}}
- \expandafter\def\csname simpleicon@airasiaicon\endcsname {\simpleiconsmapone\symbol{74}}
- \expandafter\def\csname simpleicon@airbnbicon\endcsname {\simpleiconsmapone\symbol{75}}
- \expandafter\def\csname simpleicon@airbrakeicon\endcsname {\simpleiconsmapone\symbol{76}}
- \expandafter\def\csname simpleicon@airbusicon\endcsname {\simpleiconsmapone\symbol{77}}
- \expandafter\def\csname simpleicon@airbyteicon\endcsname {\simpleiconsmapone\symbol{78}}
- \expandafter\def\csname simpleicon@aircallicon\endcsname {\simpleiconsmapone\symbol{79}}
- \expandafter\def\csname simpleicon@aircanadaicon\endcsname {\simpleiconsmapone\symbol{80}}
- \expandafter\def\csname simpleicon@airchinaicon\endcsname {\simpleiconsmapone\symbol{81}}
- \expandafter\def\csname simpleicon@airfranceicon\endcsname {\simpleiconsmapone\symbol{82}}
- \expandafter\def\csname simpleicon@airindiaicon\endcsname {\simpleiconsmapone\symbol{83}}
- \expandafter\def\csname simpleicon@airplayaudioicon\endcsname {\simpleiconsmapone\symbol{84}}
- \expandafter\def\csname simpleicon@airplayvideoicon\endcsname {\simpleiconsmapone\symbol{85}}
- \expandafter\def\csname simpleicon@airtableicon\endcsname {\simpleiconsmapone\symbol{86}}
- \expandafter\def\csname simpleicon@airtelicon\endcsname {\simpleiconsmapone\symbol{87}}
- \expandafter\def\csname simpleicon@airtransaticon\endcsname {\simpleiconsmapone\symbol{88}}
- \expandafter\def\csname simpleicon@ajvicon\endcsname {\simpleiconsmapone\symbol{89}}
- \expandafter\def\csname simpleicon@akamaiicon\endcsname {\simpleiconsmapone\symbol{90}}
- \expandafter\def\csname simpleicon@akauntingicon\endcsname {\simpleiconsmapone\symbol{91}}
- \expandafter\def\csname simpleicon@akiflowicon\endcsname {\simpleiconsmapone\symbol{92}}
- \expandafter\def\csname simpleicon@alacrittyicon\endcsname {\simpleiconsmapone\symbol{93}}
- \expandafter\def\csname simpleicon@alamyicon\endcsname {\simpleiconsmapone\symbol{94}}
- \expandafter\def\csname simpleicon@albertheijnicon\endcsname {\simpleiconsmapone\symbol{95}}
- \expandafter\def\csname simpleicon@albyicon\endcsname {\simpleiconsmapone\symbol{96}}
- \expandafter\def\csname simpleicon@alchemyicon\endcsname {\simpleiconsmapone\symbol{97}}
- \expandafter\def\csname simpleicon@aldinordicon\endcsname {\simpleiconsmapone\symbol{98}}
- \expandafter\def\csname simpleicon@aldisudicon\endcsname {\simpleiconsmapone\symbol{99}}
- \expandafter\def\csname simpleicon@alfaromeoicon\endcsname {\simpleiconsmapone\symbol{100}}
- \expandafter\def\csname simpleicon@alfredicon\endcsname {\simpleiconsmapone\symbol{101}}
- \expandafter\def\csname simpleicon@algoliaicon\endcsname {\simpleiconsmapone\symbol{102}}
- \expandafter\def\csname simpleicon@algorandicon\endcsname {\simpleiconsmapone\symbol{103}}
- \expandafter\def\csname simpleicon@alibabacloudicon\endcsname {\simpleiconsmapone\symbol{104}}
- \expandafter\def\csname simpleicon@alibabadotcomicon\endcsname {\simpleiconsmapone\symbol{105}}
- \expandafter\def\csname simpleicon@alienwareicon\endcsname {\simpleiconsmapone\symbol{106}}
- \expandafter\def\csname simpleicon@aliexpressicon\endcsname {\simpleiconsmapone\symbol{107}}
- \expandafter\def\csname simpleicon@alipayicon\endcsname {\simpleiconsmapone\symbol{108}}
- \expandafter\def\csname simpleicon@allegroicon\endcsname {\simpleiconsmapone\symbol{109}}
- \expandafter\def\csname simpleicon@alliedmoddersicon\endcsname {\simpleiconsmapone\symbol{110}}
- \expandafter\def\csname simpleicon@allocineicon\endcsname {\simpleiconsmapone\symbol{111}}
- \expandafter\def\csname simpleicon@alltrailsicon\endcsname {\simpleiconsmapone\symbol{112}}
- \expandafter\def\csname simpleicon@almalinuxicon\endcsname {\simpleiconsmapone\symbol{113}}
- \expandafter\def\csname simpleicon@alpinedotjsicon\endcsname {\simpleiconsmapone\symbol{114}}
- \expandafter\def\csname simpleicon@alpinelinuxicon\endcsname {\simpleiconsmapone\symbol{115}}
- \expandafter\def\csname simpleicon@alteryxicon\endcsname {\simpleiconsmapone\symbol{116}}
- \expandafter\def\csname simpleicon@altiumdesignericon\endcsname {\simpleiconsmapone\symbol{117}}
- \expandafter\def\csname simpleicon@alwaysdataicon\endcsname {\simpleiconsmapone\symbol{118}}
- \expandafter\def\csname simpleicon@alxicon\endcsname {\simpleiconsmapone\symbol{119}}
- \expandafter\def\csname simpleicon@amazonicon\endcsname {\simpleiconsmapone\symbol{120}}
- \expandafter\def\csname simpleicon@amazonalexaicon\endcsname {\simpleiconsmapone\symbol{121}}
- \expandafter\def\csname simpleicon@amazonapigatewayicon\endcsname {\simpleiconsmapone\symbol{122}}
- \expandafter\def\csname simpleicon@amazoncloudwatchicon\endcsname {\simpleiconsmapone\symbol{123}}
- \expandafter\def\csname simpleicon@amazoncognitoicon\endcsname {\simpleiconsmapone\symbol{124}}
- \expandafter\def\csname simpleicon@amazondocumentdbicon\endcsname {\simpleiconsmapone\symbol{125}}
- \expandafter\def\csname simpleicon@amazondynamodbicon\endcsname {\simpleiconsmapone\symbol{126}}
- \expandafter\def\csname simpleicon@amazonec2icon\endcsname {\simpleiconsmapone\symbol{127}}
- \expandafter\def\csname simpleicon@amazonecsicon\endcsname {\simpleiconsmapone\symbol{128}}
- \expandafter\def\csname simpleicon@amazoneksicon\endcsname {\simpleiconsmapone\symbol{129}}
- \expandafter\def\csname simpleicon@amazonelasticacheicon\endcsname {\simpleiconsmapone\symbol{130}}
- \expandafter\def\csname simpleicon@amazonfiretvicon\endcsname {\simpleiconsmapone\symbol{131}}
- \expandafter\def\csname simpleicon@amazongamesicon\endcsname {\simpleiconsmapone\symbol{132}}
- \expandafter\def\csname simpleicon@amazoniamicon\endcsname {\simpleiconsmapone\symbol{133}}
- \expandafter\def\csname simpleicon@amazonlumberyardicon\endcsname {\simpleiconsmapone\symbol{134}}
- \expandafter\def\csname simpleicon@amazonlunaicon\endcsname {\simpleiconsmapone\symbol{135}}
- \expandafter\def\csname simpleicon@amazonmusicicon\endcsname {\simpleiconsmapone\symbol{136}}
- \expandafter\def\csname simpleicon@amazonpayicon\endcsname {\simpleiconsmapone\symbol{137}}
- \expandafter\def\csname simpleicon@amazonprimeicon\endcsname {\simpleiconsmapone\symbol{138}}
- \expandafter\def\csname simpleicon@amazonrdsicon\endcsname {\simpleiconsmapone\symbol{139}}
- \expandafter\def\csname simpleicon@amazonredshifticon\endcsname {\simpleiconsmapone\symbol{140}}
- \expandafter\def\csname simpleicon@amazonroute53icon\endcsname {\simpleiconsmapone\symbol{141}}
- \expandafter\def\csname simpleicon@amazons3icon\endcsname {\simpleiconsmapone\symbol{142}}
- \expandafter\def\csname simpleicon@amazonsimpleemailserviceicon\endcsname {\simpleiconsmapone\symbol{143}}
- \expandafter\def\csname simpleicon@amazonsqsicon\endcsname {\simpleiconsmapone\symbol{144}}
- \expandafter\def\csname simpleicon@amazonwebservicesicon\endcsname {\simpleiconsmapone\symbol{145}}
- \expandafter\def\csname simpleicon@amdicon\endcsname {\simpleiconsmapone\symbol{146}}
- \expandafter\def\csname simpleicon@amebaicon\endcsname {\simpleiconsmapone\symbol{147}}
- \expandafter\def\csname simpleicon@americanairlinesicon\endcsname {\simpleiconsmapone\symbol{148}}
- \expandafter\def\csname simpleicon@americanexpressicon\endcsname {\simpleiconsmapone\symbol{149}}
- \expandafter\def\csname simpleicon@amgicon\endcsname {\simpleiconsmapone\symbol{150}}
- \expandafter\def\csname simpleicon@ampicon\endcsname {\simpleiconsmapone\symbol{151}}
- \expandafter\def\csname simpleicon@amulicon\endcsname {\simpleiconsmapone\symbol{152}}
- \expandafter\def\csname simpleicon@anaicon\endcsname {\simpleiconsmapone\symbol{153}}
- \expandafter\def\csname simpleicon@anacondaicon\endcsname {\simpleiconsmapone\symbol{154}}
- \expandafter\def\csname simpleicon@analogueicon\endcsname {\simpleiconsmapone\symbol{155}}
- \expandafter\def\csname simpleicon@andelaicon\endcsname {\simpleiconsmapone\symbol{156}}
- \expandafter\def\csname simpleicon@androidicon\endcsname {\simpleiconsmapone\symbol{157}}
- \expandafter\def\csname simpleicon@androidautoicon\endcsname {\simpleiconsmapone\symbol{158}}
- \expandafter\def\csname simpleicon@androidstudioicon\endcsname {\simpleiconsmapone\symbol{159}}
- \expandafter\def\csname simpleicon@angularicon\endcsname {\simpleiconsmapone\symbol{160}}
- \expandafter\def\csname simpleicon@anilisticon\endcsname {\simpleiconsmapone\symbol{161}}
- \expandafter\def\csname simpleicon@animalplaneticon\endcsname {\simpleiconsmapone\symbol{162}}
- \expandafter\def\csname simpleicon@ankermakeicon\endcsname {\simpleiconsmapone\symbol{163}}
- \expandafter\def\csname simpleicon@ankiicon\endcsname {\simpleiconsmapone\symbol{164}}
- \expandafter\def\csname simpleicon@ansibleicon\endcsname {\simpleiconsmapone\symbol{165}}
- \expandafter\def\csname simpleicon@answericon\endcsname {\simpleiconsmapone\symbol{166}}
- \expandafter\def\csname simpleicon@ansysicon\endcsname {\simpleiconsmapone\symbol{167}}
+ \expandafter\def\csname simpleicon@dotenvicon\endcsname {\simpleiconsmapone\symbol{0}}
+ \expandafter\def\csname simpleicon@dotneticon\endcsname {\simpleiconsmapone\symbol{1}}
+ \expandafter\def\csname simpleicon@eicon\endcsname {\simpleiconsmapone\symbol{2}}
+ \expandafter\def\csname simpleicon@1dot1dot1dot1icon\endcsname {\simpleiconsmapone\symbol{3}}
+ \expandafter\def\csname simpleicon@1and1icon\endcsname {\simpleiconsmapone\symbol{4}}
+ \expandafter\def\csname simpleicon@1001tracklistsicon\endcsname {\simpleiconsmapone\symbol{5}}
+ \expandafter\def\csname simpleicon@1panelicon\endcsname {\simpleiconsmapone\symbol{6}}
+ \expandafter\def\csname simpleicon@1passwordicon\endcsname {\simpleiconsmapone\symbol{7}}
+ \expandafter\def\csname simpleicon@2fasicon\endcsname {\simpleiconsmapone\symbol{8}}
+ \expandafter\def\csname simpleicon@2kicon\endcsname {\simpleiconsmapone\symbol{9}}
+ \expandafter\def\csname simpleicon@30secondsofcodeicon\endcsname {\simpleiconsmapone\symbol{10}}
+ \expandafter\def\csname simpleicon@365datascienceicon\endcsname {\simpleiconsmapone\symbol{11}}
+ \expandafter\def\csname simpleicon@3micon\endcsname {\simpleiconsmapone\symbol{12}}
+ \expandafter\def\csname simpleicon@42icon\endcsname {\simpleiconsmapone\symbol{13}}
+ \expandafter\def\csname simpleicon@4chanicon\endcsname {\simpleiconsmapone\symbol{14}}
+ \expandafter\def\csname simpleicon@4dicon\endcsname {\simpleiconsmapone\symbol{15}}
+ \expandafter\def\csname simpleicon@500pxicon\endcsname {\simpleiconsmapone\symbol{16}}
+ \expandafter\def\csname simpleicon@7zipicon\endcsname {\simpleiconsmapone\symbol{17}}
+ \expandafter\def\csname simpleicon@99designsicon\endcsname {\simpleiconsmapone\symbol{18}}
+ \expandafter\def\csname simpleicon@9gagicon\endcsname {\simpleiconsmapone\symbol{19}}
+ \expandafter\def\csname simpleicon@aframeicon\endcsname {\simpleiconsmapone\symbol{20}}
+ \expandafter\def\csname simpleicon@abbrobotstudioicon\endcsname {\simpleiconsmapone\symbol{21}}
+ \expandafter\def\csname simpleicon@abbotticon\endcsname {\simpleiconsmapone\symbol{22}}
+ \expandafter\def\csname simpleicon@abbvieicon\endcsname {\simpleiconsmapone\symbol{23}}
+ \expandafter\def\csname simpleicon@aboutdotmeicon\endcsname {\simpleiconsmapone\symbol{24}}
+ \expandafter\def\csname simpleicon@abstracticon\endcsname {\simpleiconsmapone\symbol{25}}
+ \expandafter\def\csname simpleicon@abusedotchicon\endcsname {\simpleiconsmapone\symbol{26}}
+ \expandafter\def\csname simpleicon@academiaicon\endcsname {\simpleiconsmapone\symbol{27}}
+ \expandafter\def\csname simpleicon@accentureicon\endcsname {\simpleiconsmapone\symbol{28}}
+ \expandafter\def\csname simpleicon@accusofticon\endcsname {\simpleiconsmapone\symbol{29}}
+ \expandafter\def\csname simpleicon@accuweathericon\endcsname {\simpleiconsmapone\symbol{30}}
+ \expandafter\def\csname simpleicon@acericon\endcsname {\simpleiconsmapone\symbol{31}}
+ \expandafter\def\csname simpleicon@acmicon\endcsname {\simpleiconsmapone\symbol{32}}
+ \expandafter\def\csname simpleicon@actigraphicon\endcsname {\simpleiconsmapone\symbol{33}}
+ \expandafter\def\csname simpleicon@activisionicon\endcsname {\simpleiconsmapone\symbol{34}}
+ \expandafter\def\csname simpleicon@activitypubicon\endcsname {\simpleiconsmapone\symbol{35}}
+ \expandafter\def\csname simpleicon@actixicon\endcsname {\simpleiconsmapone\symbol{36}}
+ \expandafter\def\csname simpleicon@actualbudgeticon\endcsname {\simpleiconsmapone\symbol{37}}
+ \expandafter\def\csname simpleicon@acuraicon\endcsname {\simpleiconsmapone\symbol{38}}
+ \expandafter\def\csname simpleicon@adafruiticon\endcsname {\simpleiconsmapone\symbol{39}}
+ \expandafter\def\csname simpleicon@adblockicon\endcsname {\simpleiconsmapone\symbol{40}}
+ \expandafter\def\csname simpleicon@adblockplusicon\endcsname {\simpleiconsmapone\symbol{41}}
+ \expandafter\def\csname simpleicon@addydotioicon\endcsname {\simpleiconsmapone\symbol{42}}
+ \expandafter\def\csname simpleicon@adguardicon\endcsname {\simpleiconsmapone\symbol{43}}
+ \expandafter\def\csname simpleicon@adidasicon\endcsname {\simpleiconsmapone\symbol{44}}
+ \expandafter\def\csname simpleicon@adminericon\endcsname {\simpleiconsmapone\symbol{45}}
+ \expandafter\def\csname simpleicon@adonisjsicon\endcsname {\simpleiconsmapone\symbol{46}}
+ \expandafter\def\csname simpleicon@adpicon\endcsname {\simpleiconsmapone\symbol{47}}
+ \expandafter\def\csname simpleicon@adrollicon\endcsname {\simpleiconsmapone\symbol{48}}
+ \expandafter\def\csname simpleicon@adventofcodeicon\endcsname {\simpleiconsmapone\symbol{49}}
+ \expandafter\def\csname simpleicon@adyenicon\endcsname {\simpleiconsmapone\symbol{50}}
+ \expandafter\def\csname simpleicon@aegisauthenticatoricon\endcsname {\simpleiconsmapone\symbol{51}}
+ \expandafter\def\csname simpleicon@aerlingusicon\endcsname {\simpleiconsmapone\symbol{52}}
+ \expandafter\def\csname simpleicon@aerofloticon\endcsname {\simpleiconsmapone\symbol{53}}
+ \expandafter\def\csname simpleicon@aeromexicoicon\endcsname {\simpleiconsmapone\symbol{54}}
+ \expandafter\def\csname simpleicon@aerospikeicon\endcsname {\simpleiconsmapone\symbol{55}}
+ \expandafter\def\csname simpleicon@aewicon\endcsname {\simpleiconsmapone\symbol{56}}
+ \expandafter\def\csname simpleicon@afdianicon\endcsname {\simpleiconsmapone\symbol{57}}
+ \expandafter\def\csname simpleicon@affineicon\endcsname {\simpleiconsmapone\symbol{58}}
+ \expandafter\def\csname simpleicon@affinityicon\endcsname {\simpleiconsmapone\symbol{59}}
+ \expandafter\def\csname simpleicon@affinitydesignericon\endcsname {\simpleiconsmapone\symbol{60}}
+ \expandafter\def\csname simpleicon@affinityphotoicon\endcsname {\simpleiconsmapone\symbol{61}}
+ \expandafter\def\csname simpleicon@affinitypublishericon\endcsname {\simpleiconsmapone\symbol{62}}
+ \expandafter\def\csname simpleicon@afterpayicon\endcsname {\simpleiconsmapone\symbol{63}}
+ \expandafter\def\csname simpleicon@aftershipicon\endcsname {\simpleiconsmapone\symbol{64}}
+ \expandafter\def\csname simpleicon@agoraicon\endcsname {\simpleiconsmapone\symbol{65}}
+ \expandafter\def\csname simpleicon@aidungeonicon\endcsname {\simpleiconsmapone\symbol{66}}
+ \expandafter\def\csname simpleicon@aibicon\endcsname {\simpleiconsmapone\symbol{67}}
+ \expandafter\def\csname simpleicon@aiohttpicon\endcsname {\simpleiconsmapone\symbol{68}}
+ \expandafter\def\csname simpleicon@aiqfomeicon\endcsname {\simpleiconsmapone\symbol{69}}
+ \expandafter\def\csname simpleicon@aircanadaicon\endcsname {\simpleiconsmapone\symbol{70}}
+ \expandafter\def\csname simpleicon@airchinaicon\endcsname {\simpleiconsmapone\symbol{71}}
+ \expandafter\def\csname simpleicon@airfranceicon\endcsname {\simpleiconsmapone\symbol{72}}
+ \expandafter\def\csname simpleicon@airindiaicon\endcsname {\simpleiconsmapone\symbol{73}}
+ \expandafter\def\csname simpleicon@airserbiaicon\endcsname {\simpleiconsmapone\symbol{74}}
+ \expandafter\def\csname simpleicon@airtransaticon\endcsname {\simpleiconsmapone\symbol{75}}
+ \expandafter\def\csname simpleicon@airasiaicon\endcsname {\simpleiconsmapone\symbol{76}}
+ \expandafter\def\csname simpleicon@airbnbicon\endcsname {\simpleiconsmapone\symbol{77}}
+ \expandafter\def\csname simpleicon@airbrakeicon\endcsname {\simpleiconsmapone\symbol{78}}
+ \expandafter\def\csname simpleicon@airbusicon\endcsname {\simpleiconsmapone\symbol{79}}
+ \expandafter\def\csname simpleicon@airbyteicon\endcsname {\simpleiconsmapone\symbol{80}}
+ \expandafter\def\csname simpleicon@aircallicon\endcsname {\simpleiconsmapone\symbol{81}}
+ \expandafter\def\csname simpleicon@airplayaudioicon\endcsname {\simpleiconsmapone\symbol{82}}
+ \expandafter\def\csname simpleicon@airplayvideoicon\endcsname {\simpleiconsmapone\symbol{83}}
+ \expandafter\def\csname simpleicon@airtableicon\endcsname {\simpleiconsmapone\symbol{84}}
+ \expandafter\def\csname simpleicon@airtelicon\endcsname {\simpleiconsmapone\symbol{85}}
+ \expandafter\def\csname simpleicon@ajvicon\endcsname {\simpleiconsmapone\symbol{86}}
+ \expandafter\def\csname simpleicon@akamaiicon\endcsname {\simpleiconsmapone\symbol{87}}
+ \expandafter\def\csname simpleicon@akasaairicon\endcsname {\simpleiconsmapone\symbol{88}}
+ \expandafter\def\csname simpleicon@akauntingicon\endcsname {\simpleiconsmapone\symbol{89}}
+ \expandafter\def\csname simpleicon@akiflowicon\endcsname {\simpleiconsmapone\symbol{90}}
+ \expandafter\def\csname simpleicon@alacrittyicon\endcsname {\simpleiconsmapone\symbol{91}}
+ \expandafter\def\csname simpleicon@alamyicon\endcsname {\simpleiconsmapone\symbol{92}}
+ \expandafter\def\csname simpleicon@albertheijnicon\endcsname {\simpleiconsmapone\symbol{93}}
+ \expandafter\def\csname simpleicon@albyicon\endcsname {\simpleiconsmapone\symbol{94}}
+ \expandafter\def\csname simpleicon@alchemyicon\endcsname {\simpleiconsmapone\symbol{95}}
+ \expandafter\def\csname simpleicon@aldinordicon\endcsname {\simpleiconsmapone\symbol{96}}
+ \expandafter\def\csname simpleicon@aldisudicon\endcsname {\simpleiconsmapone\symbol{97}}
+ \expandafter\def\csname simpleicon@alfaromeoicon\endcsname {\simpleiconsmapone\symbol{98}}
+ \expandafter\def\csname simpleicon@alfredicon\endcsname {\simpleiconsmapone\symbol{99}}
+ \expandafter\def\csname simpleicon@algoliaicon\endcsname {\simpleiconsmapone\symbol{100}}
+ \expandafter\def\csname simpleicon@algorandicon\endcsname {\simpleiconsmapone\symbol{101}}
+ \expandafter\def\csname simpleicon@alibabacloudicon\endcsname {\simpleiconsmapone\symbol{102}}
+ \expandafter\def\csname simpleicon@alibabadotcomicon\endcsname {\simpleiconsmapone\symbol{103}}
+ \expandafter\def\csname simpleicon@alienwareicon\endcsname {\simpleiconsmapone\symbol{104}}
+ \expandafter\def\csname simpleicon@aliexpressicon\endcsname {\simpleiconsmapone\symbol{105}}
+ \expandafter\def\csname simpleicon@alipayicon\endcsname {\simpleiconsmapone\symbol{106}}
+ \expandafter\def\csname simpleicon@allegroicon\endcsname {\simpleiconsmapone\symbol{107}}
+ \expandafter\def\csname simpleicon@alliedmoddersicon\endcsname {\simpleiconsmapone\symbol{108}}
+ \expandafter\def\csname simpleicon@allocineicon\endcsname {\simpleiconsmapone\symbol{109}}
+ \expandafter\def\csname simpleicon@alltrailsicon\endcsname {\simpleiconsmapone\symbol{110}}
+ \expandafter\def\csname simpleicon@almalinuxicon\endcsname {\simpleiconsmapone\symbol{111}}
+ \expandafter\def\csname simpleicon@alpinelinuxicon\endcsname {\simpleiconsmapone\symbol{112}}
+ \expandafter\def\csname simpleicon@alpinedotjsicon\endcsname {\simpleiconsmapone\symbol{113}}
+ \expandafter\def\csname simpleicon@alternativetoicon\endcsname {\simpleiconsmapone\symbol{114}}
+ \expandafter\def\csname simpleicon@alteryxicon\endcsname {\simpleiconsmapone\symbol{115}}
+ \expandafter\def\csname simpleicon@altiumdesignericon\endcsname {\simpleiconsmapone\symbol{116}}
+ \expandafter\def\csname simpleicon@alwaysdataicon\endcsname {\simpleiconsmapone\symbol{117}}
+ \expandafter\def\csname simpleicon@alxicon\endcsname {\simpleiconsmapone\symbol{118}}
+ \expandafter\def\csname simpleicon@amazonicon\endcsname {\simpleiconsmapone\symbol{119}}
+ \expandafter\def\csname simpleicon@amazonalexaicon\endcsname {\simpleiconsmapone\symbol{120}}
+ \expandafter\def\csname simpleicon@amazonapigatewayicon\endcsname {\simpleiconsmapone\symbol{121}}
+ \expandafter\def\csname simpleicon@amazoncloudwatchicon\endcsname {\simpleiconsmapone\symbol{122}}
+ \expandafter\def\csname simpleicon@amazoncognitoicon\endcsname {\simpleiconsmapone\symbol{123}}
+ \expandafter\def\csname simpleicon@amazondocumentdbicon\endcsname {\simpleiconsmapone\symbol{124}}
+ \expandafter\def\csname simpleicon@amazondynamodbicon\endcsname {\simpleiconsmapone\symbol{125}}
+ \expandafter\def\csname simpleicon@amazonec2icon\endcsname {\simpleiconsmapone\symbol{126}}
+ \expandafter\def\csname simpleicon@amazonecsicon\endcsname {\simpleiconsmapone\symbol{127}}
+ \expandafter\def\csname simpleicon@amazoneksicon\endcsname {\simpleiconsmapone\symbol{128}}
+ \expandafter\def\csname simpleicon@amazonelasticacheicon\endcsname {\simpleiconsmapone\symbol{129}}
+ \expandafter\def\csname simpleicon@amazonfiretvicon\endcsname {\simpleiconsmapone\symbol{130}}
+ \expandafter\def\csname simpleicon@amazongamesicon\endcsname {\simpleiconsmapone\symbol{131}}
+ \expandafter\def\csname simpleicon@amazoniamicon\endcsname {\simpleiconsmapone\symbol{132}}
+ \expandafter\def\csname simpleicon@amazonlumberyardicon\endcsname {\simpleiconsmapone\symbol{133}}
+ \expandafter\def\csname simpleicon@amazonlunaicon\endcsname {\simpleiconsmapone\symbol{134}}
+ \expandafter\def\csname simpleicon@amazonmusicicon\endcsname {\simpleiconsmapone\symbol{135}}
+ \expandafter\def\csname simpleicon@amazonpayicon\endcsname {\simpleiconsmapone\symbol{136}}
+ \expandafter\def\csname simpleicon@amazonprimeicon\endcsname {\simpleiconsmapone\symbol{137}}
+ \expandafter\def\csname simpleicon@amazonrdsicon\endcsname {\simpleiconsmapone\symbol{138}}
+ \expandafter\def\csname simpleicon@amazonredshifticon\endcsname {\simpleiconsmapone\symbol{139}}
+ \expandafter\def\csname simpleicon@amazonroute53icon\endcsname {\simpleiconsmapone\symbol{140}}
+ \expandafter\def\csname simpleicon@amazons3icon\endcsname {\simpleiconsmapone\symbol{141}}
+ \expandafter\def\csname simpleicon@amazonsimpleemailserviceicon\endcsname {\simpleiconsmapone\symbol{142}}
+ \expandafter\def\csname simpleicon@amazonsqsicon\endcsname {\simpleiconsmapone\symbol{143}}
+ \expandafter\def\csname simpleicon@amazonwebservicesicon\endcsname {\simpleiconsmapone\symbol{144}}
+ \expandafter\def\csname simpleicon@amdicon\endcsname {\simpleiconsmapone\symbol{145}}
+ \expandafter\def\csname simpleicon@amebaicon\endcsname {\simpleiconsmapone\symbol{146}}
+ \expandafter\def\csname simpleicon@americanairlinesicon\endcsname {\simpleiconsmapone\symbol{147}}
+ \expandafter\def\csname simpleicon@americanexpressicon\endcsname {\simpleiconsmapone\symbol{148}}
+ \expandafter\def\csname simpleicon@amgicon\endcsname {\simpleiconsmapone\symbol{149}}
+ \expandafter\def\csname simpleicon@ampicon\endcsname {\simpleiconsmapone\symbol{150}}
+ \expandafter\def\csname simpleicon@amulicon\endcsname {\simpleiconsmapone\symbol{151}}
+ \expandafter\def\csname simpleicon@anaicon\endcsname {\simpleiconsmapone\symbol{152}}
+ \expandafter\def\csname simpleicon@anacondaicon\endcsname {\simpleiconsmapone\symbol{153}}
+ \expandafter\def\csname simpleicon@analogueicon\endcsname {\simpleiconsmapone\symbol{154}}
+ \expandafter\def\csname simpleicon@andelaicon\endcsname {\simpleiconsmapone\symbol{155}}
+ \expandafter\def\csname simpleicon@androidicon\endcsname {\simpleiconsmapone\symbol{156}}
+ \expandafter\def\csname simpleicon@androidautoicon\endcsname {\simpleiconsmapone\symbol{157}}
+ \expandafter\def\csname simpleicon@androidstudioicon\endcsname {\simpleiconsmapone\symbol{158}}
+ \expandafter\def\csname simpleicon@angularicon\endcsname {\simpleiconsmapone\symbol{159}}
+ \expandafter\def\csname simpleicon@anilisticon\endcsname {\simpleiconsmapone\symbol{160}}
+ \expandafter\def\csname simpleicon@animalplaneticon\endcsname {\simpleiconsmapone\symbol{161}}
+ \expandafter\def\csname simpleicon@ankermakeicon\endcsname {\simpleiconsmapone\symbol{162}}
+ \expandafter\def\csname simpleicon@ankiicon\endcsname {\simpleiconsmapone\symbol{163}}
+ \expandafter\def\csname simpleicon@ansibleicon\endcsname {\simpleiconsmapone\symbol{164}}
+ \expandafter\def\csname simpleicon@answericon\endcsname {\simpleiconsmapone\symbol{165}}
+ \expandafter\def\csname simpleicon@ansysicon\endcsname {\simpleiconsmapone\symbol{166}}
+ \expandafter\def\csname simpleicon@antdesignicon\endcsname {\simpleiconsmapone\symbol{167}}
\expandafter\def\csname simpleicon@antaicon\endcsname {\simpleiconsmapone\symbol{168}}
- \expandafter\def\csname simpleicon@antdesignicon\endcsname {\simpleiconsmapone\symbol{169}}
- \expandafter\def\csname simpleicon@antena3icon\endcsname {\simpleiconsmapone\symbol{170}}
- \expandafter\def\csname simpleicon@anthropicicon\endcsname {\simpleiconsmapone\symbol{171}}
+ \expandafter\def\csname simpleicon@antena3icon\endcsname {\simpleiconsmapone\symbol{169}}
+ \expandafter\def\csname simpleicon@anthropicicon\endcsname {\simpleiconsmapone\symbol{170}}
+ \expandafter\def\csname simpleicon@antvicon\endcsname {\simpleiconsmapone\symbol{171}}
\expandafter\def\csname simpleicon@anycubicicon\endcsname {\simpleiconsmapone\symbol{172}}
\expandafter\def\csname simpleicon@anydeskicon\endcsname {\simpleiconsmapone\symbol{173}}
\expandafter\def\csname simpleicon@anytypeicon\endcsname {\simpleiconsmapone\symbol{174}}
@@ -182,2989 +182,3078 @@
\expandafter\def\csname simpleicon@apachecloudstackicon\endcsname {\simpleiconsmapone\symbol{180}}
\expandafter\def\csname simpleicon@apachecordovaicon\endcsname {\simpleiconsmapone\symbol{181}}
\expandafter\def\csname simpleicon@apachecouchdbicon\endcsname {\simpleiconsmapone\symbol{182}}
- \expandafter\def\csname simpleicon@apachedruidicon\endcsname {\simpleiconsmapone\symbol{183}}
- \expandafter\def\csname simpleicon@apacheechartsicon\endcsname {\simpleiconsmapone\symbol{184}}
- \expandafter\def\csname simpleicon@apacheflinkicon\endcsname {\simpleiconsmapone\symbol{185}}
- \expandafter\def\csname simpleicon@apachefreemarkericon\endcsname {\simpleiconsmapone\symbol{186}}
- \expandafter\def\csname simpleicon@apachegroovyicon\endcsname {\simpleiconsmapone\symbol{187}}
- \expandafter\def\csname simpleicon@apacheguacamoleicon\endcsname {\simpleiconsmapone\symbol{188}}
- \expandafter\def\csname simpleicon@apachehadoopicon\endcsname {\simpleiconsmapone\symbol{189}}
- \expandafter\def\csname simpleicon@apachehbaseicon\endcsname {\simpleiconsmapone\symbol{190}}
- \expandafter\def\csname simpleicon@apachehiveicon\endcsname {\simpleiconsmapone\symbol{191}}
- \expandafter\def\csname simpleicon@apachejmetericon\endcsname {\simpleiconsmapone\symbol{192}}
- \expandafter\def\csname simpleicon@apachekafkaicon\endcsname {\simpleiconsmapone\symbol{193}}
- \expandafter\def\csname simpleicon@apachekylinicon\endcsname {\simpleiconsmapone\symbol{194}}
- \expandafter\def\csname simpleicon@apachemavenicon\endcsname {\simpleiconsmapone\symbol{195}}
- \expandafter\def\csname simpleicon@apachenetbeansideicon\endcsname {\simpleiconsmapone\symbol{196}}
- \expandafter\def\csname simpleicon@apacheopenofficeicon\endcsname {\simpleiconsmapone\symbol{197}}
- \expandafter\def\csname simpleicon@apacheparqueticon\endcsname {\simpleiconsmapone\symbol{198}}
- \expandafter\def\csname simpleicon@apachepulsaricon\endcsname {\simpleiconsmapone\symbol{199}}
- \expandafter\def\csname simpleicon@apacherocketmqicon\endcsname {\simpleiconsmapone\symbol{200}}
- \expandafter\def\csname simpleicon@apachesolricon\endcsname {\simpleiconsmapone\symbol{201}}
- \expandafter\def\csname simpleicon@apachesparkicon\endcsname {\simpleiconsmapone\symbol{202}}
- \expandafter\def\csname simpleicon@apachestormicon\endcsname {\simpleiconsmapone\symbol{203}}
- \expandafter\def\csname simpleicon@apachesuperseticon\endcsname {\simpleiconsmapone\symbol{204}}
- \expandafter\def\csname simpleicon@apachetomcaticon\endcsname {\simpleiconsmapone\symbol{205}}
- \expandafter\def\csname simpleicon@aparaticon\endcsname {\simpleiconsmapone\symbol{206}}
- \expandafter\def\csname simpleicon@apifoxicon\endcsname {\simpleiconsmapone\symbol{207}}
- \expandafter\def\csname simpleicon@apmterminalsicon\endcsname {\simpleiconsmapone\symbol{208}}
- \expandafter\def\csname simpleicon@apollographqlicon\endcsname {\simpleiconsmapone\symbol{209}}
- \expandafter\def\csname simpleicon@apostropheicon\endcsname {\simpleiconsmapone\symbol{210}}
- \expandafter\def\csname simpleicon@appianicon\endcsname {\simpleiconsmapone\symbol{211}}
- \expandafter\def\csname simpleicon@appiumicon\endcsname {\simpleiconsmapone\symbol{212}}
- \expandafter\def\csname simpleicon@appleicon\endcsname {\simpleiconsmapone\symbol{213}}
- \expandafter\def\csname simpleicon@applearcadeicon\endcsname {\simpleiconsmapone\symbol{214}}
- \expandafter\def\csname simpleicon@applemusicicon\endcsname {\simpleiconsmapone\symbol{215}}
- \expandafter\def\csname simpleicon@applenewsicon\endcsname {\simpleiconsmapone\symbol{216}}
- \expandafter\def\csname simpleicon@applepayicon\endcsname {\simpleiconsmapone\symbol{217}}
- \expandafter\def\csname simpleicon@applepodcastsicon\endcsname {\simpleiconsmapone\symbol{218}}
- \expandafter\def\csname simpleicon@appletvicon\endcsname {\simpleiconsmapone\symbol{219}}
- \expandafter\def\csname simpleicon@appsignalicon\endcsname {\simpleiconsmapone\symbol{220}}
- \expandafter\def\csname simpleicon@appsmithicon\endcsname {\simpleiconsmapone\symbol{221}}
- \expandafter\def\csname simpleicon@appstoreicon\endcsname {\simpleiconsmapone\symbol{222}}
- \expandafter\def\csname simpleicon@appveyoricon\endcsname {\simpleiconsmapone\symbol{223}}
- \expandafter\def\csname simpleicon@appwriteicon\endcsname {\simpleiconsmapone\symbol{224}}
- \expandafter\def\csname simpleicon@aquaicon\endcsname {\simpleiconsmapone\symbol{225}}
- \expandafter\def\csname simpleicon@aralicon\endcsname {\simpleiconsmapone\symbol{226}}
- \expandafter\def\csname simpleicon@arangodbicon\endcsname {\simpleiconsmapone\symbol{227}}
- \expandafter\def\csname simpleicon@arcicon\endcsname {\simpleiconsmapone\symbol{228}}
- \expandafter\def\csname simpleicon@arcgisicon\endcsname {\simpleiconsmapone\symbol{229}}
- \expandafter\def\csname simpleicon@archicadicon\endcsname {\simpleiconsmapone\symbol{230}}
- \expandafter\def\csname simpleicon@archiveofourownicon\endcsname {\simpleiconsmapone\symbol{231}}
- \expandafter\def\csname simpleicon@archlinuxicon\endcsname {\simpleiconsmapone\symbol{232}}
- \expandafter\def\csname simpleicon@ardouricon\endcsname {\simpleiconsmapone\symbol{233}}
- \expandafter\def\csname simpleicon@arduinoicon\endcsname {\simpleiconsmapone\symbol{234}}
- \expandafter\def\csname simpleicon@argoicon\endcsname {\simpleiconsmapone\symbol{235}}
- \expandafter\def\csname simpleicon@argosicon\endcsname {\simpleiconsmapone\symbol{236}}
- \expandafter\def\csname simpleicon@ariakiticon\endcsname {\simpleiconsmapone\symbol{237}}
- \expandafter\def\csname simpleicon@arkecosystemicon\endcsname {\simpleiconsmapone\symbol{238}}
- \expandafter\def\csname simpleicon@arloicon\endcsname {\simpleiconsmapone\symbol{239}}
- \expandafter\def\csname simpleicon@armicon\endcsname {\simpleiconsmapone\symbol{240}}
- \expandafter\def\csname simpleicon@armkeilicon\endcsname {\simpleiconsmapone\symbol{241}}
- \expandafter\def\csname simpleicon@arstechnicaicon\endcsname {\simpleiconsmapone\symbol{242}}
- \expandafter\def\csname simpleicon@artifacthubicon\endcsname {\simpleiconsmapone\symbol{243}}
- \expandafter\def\csname simpleicon@artixlinuxicon\endcsname {\simpleiconsmapone\symbol{244}}
- \expandafter\def\csname simpleicon@artstationicon\endcsname {\simpleiconsmapone\symbol{245}}
- \expandafter\def\csname simpleicon@arxivicon\endcsname {\simpleiconsmapone\symbol{246}}
- \expandafter\def\csname simpleicon@asahilinuxicon\endcsname {\simpleiconsmapone\symbol{247}}
- \expandafter\def\csname simpleicon@asanaicon\endcsname {\simpleiconsmapone\symbol{248}}
- \expandafter\def\csname simpleicon@asciidoctoricon\endcsname {\simpleiconsmapone\symbol{249}}
- \expandafter\def\csname simpleicon@asciinemaicon\endcsname {\simpleiconsmapone\symbol{250}}
- \expandafter\def\csname simpleicon@asdaicon\endcsname {\simpleiconsmapone\symbol{251}}
- \expandafter\def\csname simpleicon@asepriteicon\endcsname {\simpleiconsmapone\symbol{252}}
- \expandafter\def\csname simpleicon@askfmicon\endcsname {\simpleiconsmapone\symbol{253}}
- \expandafter\def\csname simpleicon@assemblyscripticon\endcsname {\simpleiconsmapone\symbol{254}}
- \expandafter\def\csname simpleicon@asteriskicon\endcsname {\simpleiconsmapone\symbol{255}}
- \expandafter\def\csname simpleicon@astonmartinicon\endcsname {\simpleiconsmaptwo\symbol{0}}
- \expandafter\def\csname simpleicon@astraicon\endcsname {\simpleiconsmaptwo\symbol{1}}
- \expandafter\def\csname simpleicon@astralicon\endcsname {\simpleiconsmaptwo\symbol{2}}
- \expandafter\def\csname simpleicon@astroicon\endcsname {\simpleiconsmaptwo\symbol{3}}
- \expandafter\def\csname simpleicon@asusicon\endcsname {\simpleiconsmaptwo\symbol{4}}
- \expandafter\def\csname simpleicon@atandticon\endcsname {\simpleiconsmaptwo\symbol{5}}
- \expandafter\def\csname simpleicon@atariicon\endcsname {\simpleiconsmaptwo\symbol{6}}
- \expandafter\def\csname simpleicon@atlassianicon\endcsname {\simpleiconsmaptwo\symbol{7}}
- \expandafter\def\csname simpleicon@auchanicon\endcsname {\simpleiconsmaptwo\symbol{8}}
- \expandafter\def\csname simpleicon@audacityicon\endcsname {\simpleiconsmaptwo\symbol{9}}
- \expandafter\def\csname simpleicon@audiicon\endcsname {\simpleiconsmaptwo\symbol{10}}
- \expandafter\def\csname simpleicon@audibleicon\endcsname {\simpleiconsmaptwo\symbol{11}}
- \expandafter\def\csname simpleicon@audiobookshelficon\endcsname {\simpleiconsmaptwo\symbol{12}}
- \expandafter\def\csname simpleicon@audioboomicon\endcsname {\simpleiconsmaptwo\symbol{13}}
- \expandafter\def\csname simpleicon@audiomackicon\endcsname {\simpleiconsmaptwo\symbol{14}}
- \expandafter\def\csname simpleicon@audiotechnicaicon\endcsname {\simpleiconsmaptwo\symbol{15}}
- \expandafter\def\csname simpleicon@aureliaicon\endcsname {\simpleiconsmaptwo\symbol{16}}
- \expandafter\def\csname simpleicon@auth0icon\endcsname {\simpleiconsmaptwo\symbol{17}}
- \expandafter\def\csname simpleicon@autheliaicon\endcsname {\simpleiconsmaptwo\symbol{18}}
- \expandafter\def\csname simpleicon@authentikicon\endcsname {\simpleiconsmaptwo\symbol{19}}
- \expandafter\def\csname simpleicon@authyicon\endcsname {\simpleiconsmaptwo\symbol{20}}
- \expandafter\def\csname simpleicon@autocadicon\endcsname {\simpleiconsmaptwo\symbol{21}}
- \expandafter\def\csname simpleicon@autocannonicon\endcsname {\simpleiconsmaptwo\symbol{22}}
- \expandafter\def\csname simpleicon@autodeskicon\endcsname {\simpleiconsmaptwo\symbol{23}}
- \expandafter\def\csname simpleicon@autodeskmayaicon\endcsname {\simpleiconsmaptwo\symbol{24}}
- \expandafter\def\csname simpleicon@autodeskreviticon\endcsname {\simpleiconsmaptwo\symbol{25}}
- \expandafter\def\csname simpleicon@autohotkeyicon\endcsname {\simpleiconsmaptwo\symbol{26}}
- \expandafter\def\csname simpleicon@autoiticon\endcsname {\simpleiconsmaptwo\symbol{27}}
- \expandafter\def\csname simpleicon@automatticicon\endcsname {\simpleiconsmaptwo\symbol{28}}
- \expandafter\def\csname simpleicon@autoprefixericon\endcsname {\simpleiconsmaptwo\symbol{29}}
- \expandafter\def\csname simpleicon@autozoneicon\endcsname {\simpleiconsmaptwo\symbol{30}}
- \expandafter\def\csname simpleicon@avajsicon\endcsname {\simpleiconsmaptwo\symbol{31}}
- \expandafter\def\csname simpleicon@avasticon\endcsname {\simpleiconsmaptwo\symbol{32}}
- \expandafter\def\csname simpleicon@aviancaicon\endcsname {\simpleiconsmaptwo\symbol{33}}
- \expandafter\def\csname simpleicon@aviraicon\endcsname {\simpleiconsmaptwo\symbol{34}}
- \expandafter\def\csname simpleicon@awesomelistsicon\endcsname {\simpleiconsmaptwo\symbol{35}}
- \expandafter\def\csname simpleicon@awesomewmicon\endcsname {\simpleiconsmaptwo\symbol{36}}
- \expandafter\def\csname simpleicon@awsamplifyicon\endcsname {\simpleiconsmaptwo\symbol{37}}
- \expandafter\def\csname simpleicon@awselasticloadbalancingicon\endcsname {\simpleiconsmaptwo\symbol{38}}
- \expandafter\def\csname simpleicon@awsfargateicon\endcsname {\simpleiconsmaptwo\symbol{39}}
- \expandafter\def\csname simpleicon@awslambdaicon\endcsname {\simpleiconsmaptwo\symbol{40}}
- \expandafter\def\csname simpleicon@awsorganizationsicon\endcsname {\simpleiconsmaptwo\symbol{41}}
- \expandafter\def\csname simpleicon@awssecretsmanagericon\endcsname {\simpleiconsmaptwo\symbol{42}}
- \expandafter\def\csname simpleicon@awwwardsicon\endcsname {\simpleiconsmaptwo\symbol{43}}
- \expandafter\def\csname simpleicon@axiosicon\endcsname {\simpleiconsmaptwo\symbol{44}}
- \expandafter\def\csname simpleicon@babelicon\endcsname {\simpleiconsmaptwo\symbol{45}}
- \expandafter\def\csname simpleicon@babelioicon\endcsname {\simpleiconsmaptwo\symbol{46}}
- \expandafter\def\csname simpleicon@babylondotjsicon\endcsname {\simpleiconsmaptwo\symbol{47}}
- \expandafter\def\csname simpleicon@backblazeicon\endcsname {\simpleiconsmaptwo\symbol{48}}
- \expandafter\def\csname simpleicon@backbonedotjsicon\endcsname {\simpleiconsmaptwo\symbol{49}}
- \expandafter\def\csname simpleicon@backendlessicon\endcsname {\simpleiconsmaptwo\symbol{50}}
- \expandafter\def\csname simpleicon@backstageicon\endcsname {\simpleiconsmaptwo\symbol{51}}
- \expandafter\def\csname simpleicon@badooicon\endcsname {\simpleiconsmaptwo\symbol{52}}
- \expandafter\def\csname simpleicon@baiduicon\endcsname {\simpleiconsmaptwo\symbol{53}}
- \expandafter\def\csname simpleicon@bakalariicon\endcsname {\simpleiconsmaptwo\symbol{54}}
- \expandafter\def\csname simpleicon@bambooicon\endcsname {\simpleiconsmaptwo\symbol{55}}
- \expandafter\def\csname simpleicon@bambulabicon\endcsname {\simpleiconsmaptwo\symbol{56}}
- \expandafter\def\csname simpleicon@bandcampicon\endcsname {\simpleiconsmaptwo\symbol{57}}
- \expandafter\def\csname simpleicon@bandlabicon\endcsname {\simpleiconsmaptwo\symbol{58}}
- \expandafter\def\csname simpleicon@bandrautomationicon\endcsname {\simpleiconsmaptwo\symbol{59}}
- \expandafter\def\csname simpleicon@bandsintownicon\endcsname {\simpleiconsmaptwo\symbol{60}}
- \expandafter\def\csname simpleicon@bankofamericaicon\endcsname {\simpleiconsmaptwo\symbol{61}}
- \expandafter\def\csname simpleicon@barclaysicon\endcsname {\simpleiconsmaptwo\symbol{62}}
- \expandafter\def\csname simpleicon@baremetricsicon\endcsname {\simpleiconsmaptwo\symbol{63}}
- \expandafter\def\csname simpleicon@barmeniaicon\endcsname {\simpleiconsmaptwo\symbol{64}}
- \expandafter\def\csname simpleicon@basecampicon\endcsname {\simpleiconsmaptwo\symbol{65}}
- \expandafter\def\csname simpleicon@baserowicon\endcsname {\simpleiconsmaptwo\symbol{66}}
- \expandafter\def\csname simpleicon@basicattentiontokenicon\endcsname {\simpleiconsmaptwo\symbol{67}}
- \expandafter\def\csname simpleicon@bastyonicon\endcsname {\simpleiconsmaptwo\symbol{68}}
- \expandafter\def\csname simpleicon@baticon\endcsname {\simpleiconsmaptwo\symbol{69}}
- \expandafter\def\csname simpleicon@bataicon\endcsname {\simpleiconsmaptwo\symbol{70}}
- \expandafter\def\csname simpleicon@battledotneticon\endcsname {\simpleiconsmaptwo\symbol{71}}
- \expandafter\def\csname simpleicon@bazelicon\endcsname {\simpleiconsmaptwo\symbol{72}}
- \expandafter\def\csname simpleicon@beatporticon\endcsname {\simpleiconsmaptwo\symbol{73}}
- \expandafter\def\csname simpleicon@beatsicon\endcsname {\simpleiconsmaptwo\symbol{74}}
- \expandafter\def\csname simpleicon@beatsbydreicon\endcsname {\simpleiconsmaptwo\symbol{75}}
- \expandafter\def\csname simpleicon@beatstarsicon\endcsname {\simpleiconsmaptwo\symbol{76}}
- \expandafter\def\csname simpleicon@beekeeperstudioicon\endcsname {\simpleiconsmaptwo\symbol{77}}
- \expandafter\def\csname simpleicon@behanceicon\endcsname {\simpleiconsmaptwo\symbol{78}}
- \expandafter\def\csname simpleicon@beijingsubwayicon\endcsname {\simpleiconsmaptwo\symbol{79}}
- \expandafter\def\csname simpleicon@bemicon\endcsname {\simpleiconsmaptwo\symbol{80}}
- \expandafter\def\csname simpleicon@bentleyicon\endcsname {\simpleiconsmaptwo\symbol{81}}
- \expandafter\def\csname simpleicon@bentoicon\endcsname {\simpleiconsmaptwo\symbol{82}}
- \expandafter\def\csname simpleicon@bentoboxicon\endcsname {\simpleiconsmaptwo\symbol{83}}
- \expandafter\def\csname simpleicon@bentomlicon\endcsname {\simpleiconsmaptwo\symbol{84}}
- \expandafter\def\csname simpleicon@berealicon\endcsname {\simpleiconsmaptwo\symbol{85}}
- \expandafter\def\csname simpleicon@betfairicon\endcsname {\simpleiconsmaptwo\symbol{86}}
- \expandafter\def\csname simpleicon@betterstackicon\endcsname {\simpleiconsmaptwo\symbol{87}}
- \expandafter\def\csname simpleicon@bevyicon\endcsname {\simpleiconsmaptwo\symbol{88}}
- \expandafter\def\csname simpleicon@bigbasketicon\endcsname {\simpleiconsmaptwo\symbol{89}}
- \expandafter\def\csname simpleicon@bigbluebuttonicon\endcsname {\simpleiconsmaptwo\symbol{90}}
- \expandafter\def\csname simpleicon@bigcartelicon\endcsname {\simpleiconsmaptwo\symbol{91}}
- \expandafter\def\csname simpleicon@bigcommerceicon\endcsname {\simpleiconsmaptwo\symbol{92}}
- \expandafter\def\csname simpleicon@bilibiliicon\endcsname {\simpleiconsmaptwo\symbol{93}}
- \expandafter\def\csname simpleicon@billboardicon\endcsname {\simpleiconsmaptwo\symbol{94}}
- \expandafter\def\csname simpleicon@bimicon\endcsname {\simpleiconsmaptwo\symbol{95}}
- \expandafter\def\csname simpleicon@binanceicon\endcsname {\simpleiconsmaptwo\symbol{96}}
- \expandafter\def\csname simpleicon@biolinkicon\endcsname {\simpleiconsmaptwo\symbol{97}}
- \expandafter\def\csname simpleicon@biomeicon\endcsname {\simpleiconsmaptwo\symbol{98}}
- \expandafter\def\csname simpleicon@bisecthostingicon\endcsname {\simpleiconsmaptwo\symbol{99}}
- \expandafter\def\csname simpleicon@biticon\endcsname {\simpleiconsmaptwo\symbol{100}}
- \expandafter\def\csname simpleicon@bitbucketicon\endcsname {\simpleiconsmaptwo\symbol{101}}
- \expandafter\def\csname simpleicon@bitcoinicon\endcsname {\simpleiconsmaptwo\symbol{102}}
- \expandafter\def\csname simpleicon@bitcoincashicon\endcsname {\simpleiconsmaptwo\symbol{103}}
- \expandafter\def\csname simpleicon@bitcoinsvicon\endcsname {\simpleiconsmaptwo\symbol{104}}
- \expandafter\def\csname simpleicon@bitcometicon\endcsname {\simpleiconsmaptwo\symbol{105}}
- \expandafter\def\csname simpleicon@bitdefendericon\endcsname {\simpleiconsmaptwo\symbol{106}}
- \expandafter\def\csname simpleicon@bitlyicon\endcsname {\simpleiconsmaptwo\symbol{107}}
- \expandafter\def\csname simpleicon@bitriseicon\endcsname {\simpleiconsmaptwo\symbol{108}}
- \expandafter\def\csname simpleicon@bittorrenticon\endcsname {\simpleiconsmaptwo\symbol{109}}
- \expandafter\def\csname simpleicon@bitwardenicon\endcsname {\simpleiconsmaptwo\symbol{110}}
- \expandafter\def\csname simpleicon@bitwigicon\endcsname {\simpleiconsmaptwo\symbol{111}}
- \expandafter\def\csname simpleicon@blackberryicon\endcsname {\simpleiconsmaptwo\symbol{112}}
- \expandafter\def\csname simpleicon@blackmagicdesignicon\endcsname {\simpleiconsmaptwo\symbol{113}}
- \expandafter\def\csname simpleicon@blazemetericon\endcsname {\simpleiconsmaptwo\symbol{114}}
- \expandafter\def\csname simpleicon@blazoricon\endcsname {\simpleiconsmaptwo\symbol{115}}
- \expandafter\def\csname simpleicon@blendericon\endcsname {\simpleiconsmaptwo\symbol{116}}
- \expandafter\def\csname simpleicon@blockbenchicon\endcsname {\simpleiconsmaptwo\symbol{117}}
- \expandafter\def\csname simpleicon@blockchaindotcomicon\endcsname {\simpleiconsmaptwo\symbol{118}}
- \expandafter\def\csname simpleicon@bloggericon\endcsname {\simpleiconsmaptwo\symbol{119}}
- \expandafter\def\csname simpleicon@bloglovinicon\endcsname {\simpleiconsmaptwo\symbol{120}}
- \expandafter\def\csname simpleicon@blueprinticon\endcsname {\simpleiconsmaptwo\symbol{121}}
- \expandafter\def\csname simpleicon@blueskyicon\endcsname {\simpleiconsmaptwo\symbol{122}}
- \expandafter\def\csname simpleicon@bluesoundicon\endcsname {\simpleiconsmaptwo\symbol{123}}
- \expandafter\def\csname simpleicon@bluetoothicon\endcsname {\simpleiconsmaptwo\symbol{124}}
- \expandafter\def\csname simpleicon@bmcsoftwareicon\endcsname {\simpleiconsmaptwo\symbol{125}}
- \expandafter\def\csname simpleicon@bmwicon\endcsname {\simpleiconsmaptwo\symbol{126}}
- \expandafter\def\csname simpleicon@bnbchainicon\endcsname {\simpleiconsmaptwo\symbol{127}}
- \expandafter\def\csname simpleicon@boardgamegeekicon\endcsname {\simpleiconsmaptwo\symbol{128}}
- \expandafter\def\csname simpleicon@boaticon\endcsname {\simpleiconsmaptwo\symbol{129}}
- \expandafter\def\csname simpleicon@boehringeringelheimicon\endcsname {\simpleiconsmaptwo\symbol{130}}
- \expandafter\def\csname simpleicon@boeingicon\endcsname {\simpleiconsmaptwo\symbol{131}}
- \expandafter\def\csname simpleicon@bombardiericon\endcsname {\simpleiconsmaptwo\symbol{132}}
- \expandafter\def\csname simpleicon@bookalopeicon\endcsname {\simpleiconsmaptwo\symbol{133}}
- \expandafter\def\csname simpleicon@bookbubicon\endcsname {\simpleiconsmaptwo\symbol{134}}
- \expandafter\def\csname simpleicon@bookmetericon\endcsname {\simpleiconsmaptwo\symbol{135}}
- \expandafter\def\csname simpleicon@bookmyshowicon\endcsname {\simpleiconsmaptwo\symbol{136}}
- \expandafter\def\csname simpleicon@bookstackicon\endcsname {\simpleiconsmaptwo\symbol{137}}
- \expandafter\def\csname simpleicon@boosticon\endcsname {\simpleiconsmaptwo\symbol{138}}
- \expandafter\def\csname simpleicon@boostyicon\endcsname {\simpleiconsmaptwo\symbol{139}}
- \expandafter\def\csname simpleicon@bootsicon\endcsname {\simpleiconsmaptwo\symbol{140}}
- \expandafter\def\csname simpleicon@bootstrapicon\endcsname {\simpleiconsmaptwo\symbol{141}}
- \expandafter\def\csname simpleicon@borgbackupicon\endcsname {\simpleiconsmaptwo\symbol{142}}
- \expandafter\def\csname simpleicon@boschicon\endcsname {\simpleiconsmaptwo\symbol{143}}
- \expandafter\def\csname simpleicon@boseicon\endcsname {\simpleiconsmaptwo\symbol{144}}
- \expandafter\def\csname simpleicon@botblecmsicon\endcsname {\simpleiconsmaptwo\symbol{145}}
- \expandafter\def\csname simpleicon@boulangericon\endcsname {\simpleiconsmaptwo\symbol{146}}
- \expandafter\def\csname simpleicon@bowericon\endcsname {\simpleiconsmaptwo\symbol{147}}
- \expandafter\def\csname simpleicon@boxicon\endcsname {\simpleiconsmaptwo\symbol{148}}
- \expandafter\def\csname simpleicon@boxysvgicon\endcsname {\simpleiconsmaptwo\symbol{149}}
- \expandafter\def\csname simpleicon@braintreeicon\endcsname {\simpleiconsmaptwo\symbol{150}}
- \expandafter\def\csname simpleicon@brandfoldericon\endcsname {\simpleiconsmaptwo\symbol{151}}
- \expandafter\def\csname simpleicon@braveicon\endcsname {\simpleiconsmaptwo\symbol{152}}
- \expandafter\def\csname simpleicon@breakericon\endcsname {\simpleiconsmaptwo\symbol{153}}
- \expandafter\def\csname simpleicon@brenntagicon\endcsname {\simpleiconsmaptwo\symbol{154}}
- \expandafter\def\csname simpleicon@brevoicon\endcsname {\simpleiconsmaptwo\symbol{155}}
- \expandafter\def\csname simpleicon@brexicon\endcsname {\simpleiconsmaptwo\symbol{156}}
- \expandafter\def\csname simpleicon@bricksicon\endcsname {\simpleiconsmaptwo\symbol{157}}
- \expandafter\def\csname simpleicon@britishairwaysicon\endcsname {\simpleiconsmaptwo\symbol{158}}
- \expandafter\def\csname simpleicon@broadcomicon\endcsname {\simpleiconsmaptwo\symbol{159}}
- \expandafter\def\csname simpleicon@brunoicon\endcsname {\simpleiconsmaptwo\symbol{160}}
- \expandafter\def\csname simpleicon@bsdicon\endcsname {\simpleiconsmaptwo\symbol{161}}
- \expandafter\def\csname simpleicon@bspwmicon\endcsname {\simpleiconsmaptwo\symbol{162}}
- \expandafter\def\csname simpleicon@bticon\endcsname {\simpleiconsmaptwo\symbol{163}}
- \expandafter\def\csname simpleicon@buddyicon\endcsname {\simpleiconsmaptwo\symbol{164}}
- \expandafter\def\csname simpleicon@budibaseicon\endcsname {\simpleiconsmaptwo\symbol{165}}
- \expandafter\def\csname simpleicon@buefyicon\endcsname {\simpleiconsmaptwo\symbol{166}}
- \expandafter\def\csname simpleicon@buffericon\endcsname {\simpleiconsmaptwo\symbol{167}}
- \expandafter\def\csname simpleicon@bugattiicon\endcsname {\simpleiconsmaptwo\symbol{168}}
- \expandafter\def\csname simpleicon@bugcrowdicon\endcsname {\simpleiconsmaptwo\symbol{169}}
- \expandafter\def\csname simpleicon@bugsnagicon\endcsname {\simpleiconsmaptwo\symbol{170}}
- \expandafter\def\csname simpleicon@buhlicon\endcsname {\simpleiconsmaptwo\symbol{171}}
- \expandafter\def\csname simpleicon@buildkiteicon\endcsname {\simpleiconsmaptwo\symbol{172}}
- \expandafter\def\csname simpleicon@bukalapakicon\endcsname {\simpleiconsmaptwo\symbol{173}}
- \expandafter\def\csname simpleicon@bulmaicon\endcsname {\simpleiconsmaptwo\symbol{174}}
- \expandafter\def\csname simpleicon@bunicon\endcsname {\simpleiconsmaptwo\symbol{175}}
- \expandafter\def\csname simpleicon@bungieicon\endcsname {\simpleiconsmaptwo\symbol{176}}
- \expandafter\def\csname simpleicon@bunqicon\endcsname {\simpleiconsmaptwo\symbol{177}}
- \expandafter\def\csname simpleicon@burgerkingicon\endcsname {\simpleiconsmaptwo\symbol{178}}
- \expandafter\def\csname simpleicon@burpsuiteicon\endcsname {\simpleiconsmaptwo\symbol{179}}
- \expandafter\def\csname simpleicon@burtonicon\endcsname {\simpleiconsmaptwo\symbol{180}}
- \expandafter\def\csname simpleicon@buymeacoffeeicon\endcsname {\simpleiconsmaptwo\symbol{181}}
- \expandafter\def\csname simpleicon@buyselladsicon\endcsname {\simpleiconsmaptwo\symbol{182}}
- \expandafter\def\csname simpleicon@buzzfeedicon\endcsname {\simpleiconsmaptwo\symbol{183}}
- \expandafter\def\csname simpleicon@bvgicon\endcsname {\simpleiconsmaptwo\symbol{184}}
- \expandafter\def\csname simpleicon@byjusicon\endcsname {\simpleiconsmaptwo\symbol{185}}
- \expandafter\def\csname simpleicon@bytedanceicon\endcsname {\simpleiconsmaptwo\symbol{186}}
- \expandafter\def\csname simpleicon@cicon\endcsname {\simpleiconsmaptwo\symbol{187}}
- \expandafter\def\csname simpleicon@cacheticon\endcsname {\simpleiconsmaptwo\symbol{188}}
- \expandafter\def\csname simpleicon@caddyicon\endcsname {\simpleiconsmaptwo\symbol{189}}
- \expandafter\def\csname simpleicon@cadillacicon\endcsname {\simpleiconsmaptwo\symbol{190}}
- \expandafter\def\csname simpleicon@cafepressicon\endcsname {\simpleiconsmaptwo\symbol{191}}
- \expandafter\def\csname simpleicon@caffeineicon\endcsname {\simpleiconsmaptwo\symbol{192}}
- \expandafter\def\csname simpleicon@cairographicsicon\endcsname {\simpleiconsmaptwo\symbol{193}}
- \expandafter\def\csname simpleicon@cairometroicon\endcsname {\simpleiconsmaptwo\symbol{194}}
- \expandafter\def\csname simpleicon@cakephpicon\endcsname {\simpleiconsmaptwo\symbol{195}}
- \expandafter\def\csname simpleicon@caldotcomicon\endcsname {\simpleiconsmaptwo\symbol{196}}
- \expandafter\def\csname simpleicon@calendlyicon\endcsname {\simpleiconsmaptwo\symbol{197}}
- \expandafter\def\csname simpleicon@calibrewebicon\endcsname {\simpleiconsmaptwo\symbol{198}}
- \expandafter\def\csname simpleicon@campaignmonitoricon\endcsname {\simpleiconsmaptwo\symbol{199}}
- \expandafter\def\csname simpleicon@camundaicon\endcsname {\simpleiconsmaptwo\symbol{200}}
- \expandafter\def\csname simpleicon@canonicalicon\endcsname {\simpleiconsmaptwo\symbol{201}}
- \expandafter\def\csname simpleicon@canvaicon\endcsname {\simpleiconsmaptwo\symbol{202}}
- \expandafter\def\csname simpleicon@canvasicon\endcsname {\simpleiconsmaptwo\symbol{203}}
- \expandafter\def\csname simpleicon@capacitoricon\endcsname {\simpleiconsmaptwo\symbol{204}}
- \expandafter\def\csname simpleicon@cardanoicon\endcsname {\simpleiconsmaptwo\symbol{205}}
- \expandafter\def\csname simpleicon@carlsberggroupicon\endcsname {\simpleiconsmaptwo\symbol{206}}
- \expandafter\def\csname simpleicon@carrdicon\endcsname {\simpleiconsmaptwo\symbol{207}}
- \expandafter\def\csname simpleicon@carrefouricon\endcsname {\simpleiconsmaptwo\symbol{208}}
- \expandafter\def\csname simpleicon@carthrottleicon\endcsname {\simpleiconsmaptwo\symbol{209}}
- \expandafter\def\csname simpleicon@cartoicon\endcsname {\simpleiconsmaptwo\symbol{210}}
- \expandafter\def\csname simpleicon@cashappicon\endcsname {\simpleiconsmaptwo\symbol{211}}
- \expandafter\def\csname simpleicon@castboxicon\endcsname {\simpleiconsmaptwo\symbol{212}}
- \expandafter\def\csname simpleicon@castoramaicon\endcsname {\simpleiconsmaptwo\symbol{213}}
- \expandafter\def\csname simpleicon@castroicon\endcsname {\simpleiconsmaptwo\symbol{214}}
- \expandafter\def\csname simpleicon@caterpillaricon\endcsname {\simpleiconsmaptwo\symbol{215}}
- \expandafter\def\csname simpleicon@cbcicon\endcsname {\simpleiconsmaptwo\symbol{216}}
- \expandafter\def\csname simpleicon@cbsicon\endcsname {\simpleiconsmaptwo\symbol{217}}
- \expandafter\def\csname simpleicon@ccleanericon\endcsname {\simpleiconsmaptwo\symbol{218}}
- \expandafter\def\csname simpleicon@cdprojekticon\endcsname {\simpleiconsmaptwo\symbol{219}}
- \expandafter\def\csname simpleicon@celeryicon\endcsname {\simpleiconsmaptwo\symbol{220}}
- \expandafter\def\csname simpleicon@celestronicon\endcsname {\simpleiconsmaptwo\symbol{221}}
- \expandafter\def\csname simpleicon@centosicon\endcsname {\simpleiconsmaptwo\symbol{222}}
- \expandafter\def\csname simpleicon@cephicon\endcsname {\simpleiconsmaptwo\symbol{223}}
- \expandafter\def\csname simpleicon@cesiumicon\endcsname {\simpleiconsmaptwo\symbol{224}}
- \expandafter\def\csname simpleicon@chaiicon\endcsname {\simpleiconsmaptwo\symbol{225}}
- \expandafter\def\csname simpleicon@chainguardicon\endcsname {\simpleiconsmaptwo\symbol{226}}
- \expandafter\def\csname simpleicon@chainlinkicon\endcsname {\simpleiconsmaptwo\symbol{227}}
- \expandafter\def\csname simpleicon@chakrauiicon\endcsname {\simpleiconsmaptwo\symbol{228}}
- \expandafter\def\csname simpleicon@channel4icon\endcsname {\simpleiconsmaptwo\symbol{229}}
- \expandafter\def\csname simpleicon@charlesicon\endcsname {\simpleiconsmaptwo\symbol{230}}
- \expandafter\def\csname simpleicon@chartdotjsicon\endcsname {\simpleiconsmaptwo\symbol{231}}
- \expandafter\def\csname simpleicon@chartmogulicon\endcsname {\simpleiconsmaptwo\symbol{232}}
- \expandafter\def\csname simpleicon@chaseicon\endcsname {\simpleiconsmaptwo\symbol{233}}
- \expandafter\def\csname simpleicon@chatboticon\endcsname {\simpleiconsmaptwo\symbol{234}}
- \expandafter\def\csname simpleicon@chatwooticon\endcsname {\simpleiconsmaptwo\symbol{235}}
- \expandafter\def\csname simpleicon@checkioicon\endcsname {\simpleiconsmaptwo\symbol{236}}
- \expandafter\def\csname simpleicon@checkmarxicon\endcsname {\simpleiconsmaptwo\symbol{237}}
- \expandafter\def\csname simpleicon@checkmkicon\endcsname {\simpleiconsmaptwo\symbol{238}}
- \expandafter\def\csname simpleicon@chedrauiicon\endcsname {\simpleiconsmaptwo\symbol{239}}
- \expandafter\def\csname simpleicon@cheerioicon\endcsname {\simpleiconsmaptwo\symbol{240}}
- \expandafter\def\csname simpleicon@cheficon\endcsname {\simpleiconsmaptwo\symbol{241}}
- \expandafter\def\csname simpleicon@chemexicon\endcsname {\simpleiconsmaptwo\symbol{242}}
- \expandafter\def\csname simpleicon@chessdotcomicon\endcsname {\simpleiconsmaptwo\symbol{243}}
- \expandafter\def\csname simpleicon@chevroleticon\endcsname {\simpleiconsmaptwo\symbol{244}}
- \expandafter\def\csname simpleicon@chianetworkicon\endcsname {\simpleiconsmaptwo\symbol{245}}
- \expandafter\def\csname simpleicon@chinaeasternairlinesicon\endcsname {\simpleiconsmaptwo\symbol{246}}
- \expandafter\def\csname simpleicon@chinasouthernairlinesicon\endcsname {\simpleiconsmaptwo\symbol{247}}
- \expandafter\def\csname simpleicon@chocolateyicon\endcsname {\simpleiconsmaptwo\symbol{248}}
- \expandafter\def\csname simpleicon@chromaticicon\endcsname {\simpleiconsmaptwo\symbol{249}}
- \expandafter\def\csname simpleicon@chromecasticon\endcsname {\simpleiconsmaptwo\symbol{250}}
- \expandafter\def\csname simpleicon@chromewebstoreicon\endcsname {\simpleiconsmaptwo\symbol{251}}
- \expandafter\def\csname simpleicon@chryslericon\endcsname {\simpleiconsmaptwo\symbol{252}}
- \expandafter\def\csname simpleicon@chupachupsicon\endcsname {\simpleiconsmaptwo\symbol{253}}
- \expandafter\def\csname simpleicon@ciliumicon\endcsname {\simpleiconsmaptwo\symbol{254}}
- \expandafter\def\csname simpleicon@cinema4dicon\endcsname {\simpleiconsmaptwo\symbol{255}}
- \expandafter\def\csname simpleicon@circleicon\endcsname {\simpleiconsmapthree\symbol{0}}
- \expandafter\def\csname simpleicon@circleciicon\endcsname {\simpleiconsmapthree\symbol{1}}
- \expandafter\def\csname simpleicon@circuitverseicon\endcsname {\simpleiconsmapthree\symbol{2}}
- \expandafter\def\csname simpleicon@cirrusciicon\endcsname {\simpleiconsmapthree\symbol{3}}
- \expandafter\def\csname simpleicon@ciscoicon\endcsname {\simpleiconsmapthree\symbol{4}}
- \expandafter\def\csname simpleicon@citrixicon\endcsname {\simpleiconsmapthree\symbol{5}}
- \expandafter\def\csname simpleicon@citroenicon\endcsname {\simpleiconsmapthree\symbol{6}}
- \expandafter\def\csname simpleicon@civicrmicon\endcsname {\simpleiconsmapthree\symbol{7}}
- \expandafter\def\csname simpleicon@civoicon\endcsname {\simpleiconsmapthree\symbol{8}}
- \expandafter\def\csname simpleicon@ckeditor4icon\endcsname {\simpleiconsmapthree\symbol{9}}
- \expandafter\def\csname simpleicon@clarifaiicon\endcsname {\simpleiconsmapthree\symbol{10}}
- \expandafter\def\csname simpleicon@clarisicon\endcsname {\simpleiconsmapthree\symbol{11}}
- \expandafter\def\csname simpleicon@clarivateicon\endcsname {\simpleiconsmapthree\symbol{12}}
- \expandafter\def\csname simpleicon@clerkicon\endcsname {\simpleiconsmapthree\symbol{13}}
- \expandafter\def\csname simpleicon@clevercloudicon\endcsname {\simpleiconsmapthree\symbol{14}}
- \expandafter\def\csname simpleicon@clickhouseicon\endcsname {\simpleiconsmapthree\symbol{15}}
- \expandafter\def\csname simpleicon@clickupicon\endcsname {\simpleiconsmapthree\symbol{16}}
- \expandafter\def\csname simpleicon@clionicon\endcsname {\simpleiconsmapthree\symbol{17}}
- \expandafter\def\csname simpleicon@cliqzicon\endcsname {\simpleiconsmapthree\symbol{18}}
- \expandafter\def\csname simpleicon@clockifyicon\endcsname {\simpleiconsmapthree\symbol{19}}
- \expandafter\def\csname simpleicon@clojureicon\endcsname {\simpleiconsmapthree\symbol{20}}
- \expandafter\def\csname simpleicon@cloud66icon\endcsname {\simpleiconsmapthree\symbol{21}}
- \expandafter\def\csname simpleicon@cloudbeesicon\endcsname {\simpleiconsmapthree\symbol{22}}
- \expandafter\def\csname simpleicon@cloudcannonicon\endcsname {\simpleiconsmapthree\symbol{23}}
- \expandafter\def\csname simpleicon@clouderaicon\endcsname {\simpleiconsmapthree\symbol{24}}
- \expandafter\def\csname simpleicon@cloudflareicon\endcsname {\simpleiconsmapthree\symbol{25}}
- \expandafter\def\csname simpleicon@cloudflarepagesicon\endcsname {\simpleiconsmapthree\symbol{26}}
- \expandafter\def\csname simpleicon@cloudflareworkersicon\endcsname {\simpleiconsmapthree\symbol{27}}
- \expandafter\def\csname simpleicon@cloudfoundryicon\endcsname {\simpleiconsmapthree\symbol{28}}
- \expandafter\def\csname simpleicon@cloudinaryicon\endcsname {\simpleiconsmapthree\symbol{29}}
- \expandafter\def\csname simpleicon@cloudronicon\endcsname {\simpleiconsmapthree\symbol{30}}
- \expandafter\def\csname simpleicon@cloudsmithicon\endcsname {\simpleiconsmapthree\symbol{31}}
- \expandafter\def\csname simpleicon@cloudwaysicon\endcsname {\simpleiconsmapthree\symbol{32}}
- \expandafter\def\csname simpleicon@clubforceicon\endcsname {\simpleiconsmapthree\symbol{33}}
- \expandafter\def\csname simpleicon@clubhouseicon\endcsname {\simpleiconsmapthree\symbol{34}}
- \expandafter\def\csname simpleicon@clypicon\endcsname {\simpleiconsmapthree\symbol{35}}
- \expandafter\def\csname simpleicon@cmakeicon\endcsname {\simpleiconsmapthree\symbol{36}}
- \expandafter\def\csname simpleicon@cncficon\endcsname {\simpleiconsmapthree\symbol{37}}
- \expandafter\def\csname simpleicon@cneticon\endcsname {\simpleiconsmapthree\symbol{38}}
- \expandafter\def\csname simpleicon@cnnicon\endcsname {\simpleiconsmapthree\symbol{39}}
- \expandafter\def\csname simpleicon@cocacolaicon\endcsname {\simpleiconsmapthree\symbol{40}}
- \expandafter\def\csname simpleicon@cockpiticon\endcsname {\simpleiconsmapthree\symbol{41}}
- \expandafter\def\csname simpleicon@cockroachlabsicon\endcsname {\simpleiconsmapthree\symbol{42}}
- \expandafter\def\csname simpleicon@cocoapodsicon\endcsname {\simpleiconsmapthree\symbol{43}}
- \expandafter\def\csname simpleicon@cocosicon\endcsname {\simpleiconsmapthree\symbol{44}}
- \expandafter\def\csname simpleicon@codaicon\endcsname {\simpleiconsmapthree\symbol{45}}
- \expandafter\def\csname simpleicon@codacyicon\endcsname {\simpleiconsmapthree\symbol{46}}
- \expandafter\def\csname simpleicon@codebergicon\endcsname {\simpleiconsmapthree\symbol{47}}
- \expandafter\def\csname simpleicon@codeblocksicon\endcsname {\simpleiconsmapthree\symbol{48}}
- \expandafter\def\csname simpleicon@codecademyicon\endcsname {\simpleiconsmapthree\symbol{49}}
- \expandafter\def\csname simpleicon@codeceptjsicon\endcsname {\simpleiconsmapthree\symbol{50}}
- \expandafter\def\csname simpleicon@codecheficon\endcsname {\simpleiconsmapthree\symbol{51}}
- \expandafter\def\csname simpleicon@codeclimateicon\endcsname {\simpleiconsmapthree\symbol{52}}
- \expandafter\def\csname simpleicon@codecovicon\endcsname {\simpleiconsmapthree\symbol{53}}
- \expandafter\def\csname simpleicon@codefactoricon\endcsname {\simpleiconsmapthree\symbol{54}}
- \expandafter\def\csname simpleicon@codeforcesicon\endcsname {\simpleiconsmapthree\symbol{55}}
- \expandafter\def\csname simpleicon@codefreshicon\endcsname {\simpleiconsmapthree\symbol{56}}
- \expandafter\def\csname simpleicon@codeignitericon\endcsname {\simpleiconsmapthree\symbol{57}}
- \expandafter\def\csname simpleicon@codeiumicon\endcsname {\simpleiconsmapthree\symbol{58}}
- \expandafter\def\csname simpleicon@codemagicicon\endcsname {\simpleiconsmapthree\symbol{59}}
- \expandafter\def\csname simpleicon@codementoricon\endcsname {\simpleiconsmapthree\symbol{60}}
- \expandafter\def\csname simpleicon@codemirroricon\endcsname {\simpleiconsmapthree\symbol{61}}
- \expandafter\def\csname simpleicon@codenewbieicon\endcsname {\simpleiconsmapthree\symbol{62}}
- \expandafter\def\csname simpleicon@codepenicon\endcsname {\simpleiconsmapthree\symbol{63}}
- \expandafter\def\csname simpleicon@codeprojecticon\endcsname {\simpleiconsmapthree\symbol{64}}
- \expandafter\def\csname simpleicon@codericon\endcsname {\simpleiconsmapthree\symbol{65}}
- \expandafter\def\csname simpleicon@codersrankicon\endcsname {\simpleiconsmapthree\symbol{66}}
- \expandafter\def\csname simpleicon@coderwallicon\endcsname {\simpleiconsmapthree\symbol{67}}
- \expandafter\def\csname simpleicon@codesandboxicon\endcsname {\simpleiconsmapthree\symbol{68}}
- \expandafter\def\csname simpleicon@codeshipicon\endcsname {\simpleiconsmapthree\symbol{69}}
- \expandafter\def\csname simpleicon@codesignalicon\endcsname {\simpleiconsmapthree\symbol{70}}
- \expandafter\def\csname simpleicon@codestreamicon\endcsname {\simpleiconsmapthree\symbol{71}}
- \expandafter\def\csname simpleicon@codewarsicon\endcsname {\simpleiconsmapthree\symbol{72}}
- \expandafter\def\csname simpleicon@codingameicon\endcsname {\simpleiconsmapthree\symbol{73}}
- \expandafter\def\csname simpleicon@codingninjasicon\endcsname {\simpleiconsmapthree\symbol{74}}
- \expandafter\def\csname simpleicon@codioicon\endcsname {\simpleiconsmapthree\symbol{75}}
- \expandafter\def\csname simpleicon@coffeescripticon\endcsname {\simpleiconsmapthree\symbol{76}}
- \expandafter\def\csname simpleicon@coggleicon\endcsname {\simpleiconsmapthree\symbol{77}}
- \expandafter\def\csname simpleicon@cognizanticon\endcsname {\simpleiconsmapthree\symbol{78}}
- \expandafter\def\csname simpleicon@coilicon\endcsname {\simpleiconsmapthree\symbol{79}}
- \expandafter\def\csname simpleicon@coinbaseicon\endcsname {\simpleiconsmapthree\symbol{80}}
- \expandafter\def\csname simpleicon@coinmarketcapicon\endcsname {\simpleiconsmapthree\symbol{81}}
- \expandafter\def\csname simpleicon@comicfuryicon\endcsname {\simpleiconsmapthree\symbol{82}}
- \expandafter\def\csname simpleicon@commaicon\endcsname {\simpleiconsmapthree\symbol{83}}
- \expandafter\def\csname simpleicon@commerzbankicon\endcsname {\simpleiconsmapthree\symbol{84}}
- \expandafter\def\csname simpleicon@commitlinticon\endcsname {\simpleiconsmapthree\symbol{85}}
- \expandafter\def\csname simpleicon@commodoreicon\endcsname {\simpleiconsmapthree\symbol{86}}
- \expandafter\def\csname simpleicon@commonworkflowlanguageicon\endcsname {\simpleiconsmapthree\symbol{87}}
- \expandafter\def\csname simpleicon@compilerexplorericon\endcsname {\simpleiconsmapthree\symbol{88}}
- \expandafter\def\csname simpleicon@composericon\endcsname {\simpleiconsmapthree\symbol{89}}
- \expandafter\def\csname simpleicon@comptiaicon\endcsname {\simpleiconsmapthree\symbol{90}}
- \expandafter\def\csname simpleicon@comsolicon\endcsname {\simpleiconsmapthree\symbol{91}}
- \expandafter\def\csname simpleicon@conanicon\endcsname {\simpleiconsmapthree\symbol{92}}
- \expandafter\def\csname simpleicon@concourseicon\endcsname {\simpleiconsmapthree\symbol{93}}
- \expandafter\def\csname simpleicon@condaforgeicon\endcsname {\simpleiconsmapthree\symbol{94}}
- \expandafter\def\csname simpleicon@conektaicon\endcsname {\simpleiconsmapthree\symbol{95}}
- \expandafter\def\csname simpleicon@confluenceicon\endcsname {\simpleiconsmapthree\symbol{96}}
- \expandafter\def\csname simpleicon@construct3icon\endcsname {\simpleiconsmapthree\symbol{97}}
- \expandafter\def\csname simpleicon@consulicon\endcsname {\simpleiconsmapthree\symbol{98}}
- \expandafter\def\csname simpleicon@contactlesspaymenticon\endcsname {\simpleiconsmapthree\symbol{99}}
- \expandafter\def\csname simpleicon@containerdicon\endcsname {\simpleiconsmapthree\symbol{100}}
- \expandafter\def\csname simpleicon@contaoicon\endcsname {\simpleiconsmapthree\symbol{101}}
- \expandafter\def\csname simpleicon@contentfulicon\endcsname {\simpleiconsmapthree\symbol{102}}
- \expandafter\def\csname simpleicon@contentstackicon\endcsname {\simpleiconsmapthree\symbol{103}}
- \expandafter\def\csname simpleicon@contributorcovenanticon\endcsname {\simpleiconsmapthree\symbol{104}}
- \expandafter\def\csname simpleicon@conventionalcommitsicon\endcsname {\simpleiconsmapthree\symbol{105}}
- \expandafter\def\csname simpleicon@convertioicon\endcsname {\simpleiconsmapthree\symbol{106}}
- \expandafter\def\csname simpleicon@cookiecuttericon\endcsname {\simpleiconsmapthree\symbol{107}}
- \expandafter\def\csname simpleicon@coolermastericon\endcsname {\simpleiconsmapthree\symbol{108}}
- \expandafter\def\csname simpleicon@coopicon\endcsname {\simpleiconsmapthree\symbol{109}}
- \expandafter\def\csname simpleicon@copaairlinesicon\endcsname {\simpleiconsmapthree\symbol{110}}
- \expandafter\def\csname simpleicon@coppelicon\endcsname {\simpleiconsmapthree\symbol{111}}
- \expandafter\def\csname simpleicon@coraicon\endcsname {\simpleiconsmapthree\symbol{112}}
- \expandafter\def\csname simpleicon@coreldrawicon\endcsname {\simpleiconsmapthree\symbol{113}}
- \expandafter\def\csname simpleicon@coronaengineicon\endcsname {\simpleiconsmapthree\symbol{114}}
- \expandafter\def\csname simpleicon@coronarenderericon\endcsname {\simpleiconsmapthree\symbol{115}}
- \expandafter\def\csname simpleicon@corsairicon\endcsname {\simpleiconsmapthree\symbol{116}}
- \expandafter\def\csname simpleicon@couchbaseicon\endcsname {\simpleiconsmapthree\symbol{117}}
- \expandafter\def\csname simpleicon@counterstrikeicon\endcsname {\simpleiconsmapthree\symbol{118}}
- \expandafter\def\csname simpleicon@countingworksproicon\endcsname {\simpleiconsmapthree\symbol{119}}
- \expandafter\def\csname simpleicon@courseraicon\endcsname {\simpleiconsmapthree\symbol{120}}
- \expandafter\def\csname simpleicon@coverallsicon\endcsname {\simpleiconsmapthree\symbol{121}}
- \expandafter\def\csname simpleicon@cpanelicon\endcsname {\simpleiconsmapthree\symbol{122}}
- \expandafter\def\csname simpleicon@cplusplusicon\endcsname {\simpleiconsmapthree\symbol{123}}
- \expandafter\def\csname simpleicon@cplusplusbuildericon\endcsname {\simpleiconsmapthree\symbol{124}}
- \expandafter\def\csname simpleicon@craftcmsicon\endcsname {\simpleiconsmapthree\symbol{125}}
- \expandafter\def\csname simpleicon@craftsmanicon\endcsname {\simpleiconsmapthree\symbol{126}}
- \expandafter\def\csname simpleicon@cratedbicon\endcsname {\simpleiconsmapthree\symbol{127}}
- \expandafter\def\csname simpleicon@crayonicon\endcsname {\simpleiconsmapthree\symbol{128}}
- \expandafter\def\csname simpleicon@crealityicon\endcsname {\simpleiconsmapthree\symbol{129}}
- \expandafter\def\csname simpleicon@createreactappicon\endcsname {\simpleiconsmapthree\symbol{130}}
- \expandafter\def\csname simpleicon@creativecommonsicon\endcsname {\simpleiconsmapthree\symbol{131}}
- \expandafter\def\csname simpleicon@creativetechnologyicon\endcsname {\simpleiconsmapthree\symbol{132}}
- \expandafter\def\csname simpleicon@credlyicon\endcsname {\simpleiconsmapthree\symbol{133}}
- \expandafter\def\csname simpleicon@crehanaicon\endcsname {\simpleiconsmapthree\symbol{134}}
- \expandafter\def\csname simpleicon@crewunitedicon\endcsname {\simpleiconsmapthree\symbol{135}}
- \expandafter\def\csname simpleicon@criticalroleicon\endcsname {\simpleiconsmapthree\symbol{136}}
- \expandafter\def\csname simpleicon@crowdinicon\endcsname {\simpleiconsmapthree\symbol{137}}
- \expandafter\def\csname simpleicon@crowdsourceicon\endcsname {\simpleiconsmapthree\symbol{138}}
- \expandafter\def\csname simpleicon@crunchbaseicon\endcsname {\simpleiconsmapthree\symbol{139}}
- \expandafter\def\csname simpleicon@crunchyrollicon\endcsname {\simpleiconsmapthree\symbol{140}}
- \expandafter\def\csname simpleicon@cryengineicon\endcsname {\simpleiconsmapthree\symbol{141}}
- \expandafter\def\csname simpleicon@cryptpadicon\endcsname {\simpleiconsmapthree\symbol{142}}
- \expandafter\def\csname simpleicon@crystalicon\endcsname {\simpleiconsmapthree\symbol{143}}
- \expandafter\def\csname simpleicon@css3icon\endcsname {\simpleiconsmapthree\symbol{144}}
- \expandafter\def\csname simpleicon@cssdesignawardsicon\endcsname {\simpleiconsmapthree\symbol{145}}
- \expandafter\def\csname simpleicon@cssmodulesicon\endcsname {\simpleiconsmapthree\symbol{146}}
- \expandafter\def\csname simpleicon@csswizardryicon\endcsname {\simpleiconsmapthree\symbol{147}}
- \expandafter\def\csname simpleicon@ctsicon\endcsname {\simpleiconsmapthree\symbol{148}}
- \expandafter\def\csname simpleicon@cucumbericon\endcsname {\simpleiconsmapthree\symbol{149}}
- \expandafter\def\csname simpleicon@culturaicon\endcsname {\simpleiconsmapthree\symbol{150}}
- \expandafter\def\csname simpleicon@curlicon\endcsname {\simpleiconsmapthree\symbol{151}}
- \expandafter\def\csname simpleicon@curseforgeicon\endcsname {\simpleiconsmapthree\symbol{152}}
- \expandafter\def\csname simpleicon@custominkicon\endcsname {\simpleiconsmapthree\symbol{153}}
- \expandafter\def\csname simpleicon@cyberdefendersicon\endcsname {\simpleiconsmapthree\symbol{154}}
- \expandafter\def\csname simpleicon@cycling74icon\endcsname {\simpleiconsmapthree\symbol{155}}
- \expandafter\def\csname simpleicon@cypressicon\endcsname {\simpleiconsmapthree\symbol{156}}
- \expandafter\def\csname simpleicon@cytoscapedotjsicon\endcsname {\simpleiconsmapthree\symbol{157}}
- \expandafter\def\csname simpleicon@dicon\endcsname {\simpleiconsmapthree\symbol{158}}
- \expandafter\def\csname simpleicon@d3dotjsicon\endcsname {\simpleiconsmapthree\symbol{159}}
- \expandafter\def\csname simpleicon@daciaicon\endcsname {\simpleiconsmapthree\symbol{160}}
- \expandafter\def\csname simpleicon@daficon\endcsname {\simpleiconsmapthree\symbol{161}}
- \expandafter\def\csname simpleicon@dailydotdevicon\endcsname {\simpleiconsmapthree\symbol{162}}
- \expandafter\def\csname simpleicon@dailymotionicon\endcsname {\simpleiconsmapthree\symbol{163}}
- \expandafter\def\csname simpleicon@daisyuiicon\endcsname {\simpleiconsmapthree\symbol{164}}
- \expandafter\def\csname simpleicon@dapricon\endcsname {\simpleiconsmapthree\symbol{165}}
- \expandafter\def\csname simpleicon@darkreadericon\endcsname {\simpleiconsmapthree\symbol{166}}
- \expandafter\def\csname simpleicon@darticon\endcsname {\simpleiconsmapthree\symbol{167}}
- \expandafter\def\csname simpleicon@dartyicon\endcsname {\simpleiconsmapthree\symbol{168}}
- \expandafter\def\csname simpleicon@dasersteicon\endcsname {\simpleiconsmapthree\symbol{169}}
- \expandafter\def\csname simpleicon@dashicon\endcsname {\simpleiconsmapthree\symbol{170}}
- \expandafter\def\csname simpleicon@dashlaneicon\endcsname {\simpleiconsmapthree\symbol{171}}
- \expandafter\def\csname simpleicon@daskicon\endcsname {\simpleiconsmapthree\symbol{172}}
- \expandafter\def\csname simpleicon@dassaultsystemesicon\endcsname {\simpleiconsmapthree\symbol{173}}
- \expandafter\def\csname simpleicon@databricksicon\endcsname {\simpleiconsmapthree\symbol{174}}
- \expandafter\def\csname simpleicon@datacampicon\endcsname {\simpleiconsmapthree\symbol{175}}
- \expandafter\def\csname simpleicon@datadogicon\endcsname {\simpleiconsmapthree\symbol{176}}
- \expandafter\def\csname simpleicon@datadotaiicon\endcsname {\simpleiconsmapthree\symbol{177}}
- \expandafter\def\csname simpleicon@datagripicon\endcsname {\simpleiconsmapthree\symbol{178}}
- \expandafter\def\csname simpleicon@dataikuicon\endcsname {\simpleiconsmapthree\symbol{179}}
- \expandafter\def\csname simpleicon@datastaxicon\endcsname {\simpleiconsmapthree\symbol{180}}
- \expandafter\def\csname simpleicon@datefnsicon\endcsname {\simpleiconsmapthree\symbol{181}}
- \expandafter\def\csname simpleicon@datevicon\endcsname {\simpleiconsmapthree\symbol{182}}
- \expandafter\def\csname simpleicon@datocmsicon\endcsname {\simpleiconsmapthree\symbol{183}}
- \expandafter\def\csname simpleicon@dattoicon\endcsname {\simpleiconsmapthree\symbol{184}}
- \expandafter\def\csname simpleicon@davinciresolveicon\endcsname {\simpleiconsmapthree\symbol{185}}
- \expandafter\def\csname simpleicon@dazhongdianpingicon\endcsname {\simpleiconsmapthree\symbol{186}}
- \expandafter\def\csname simpleicon@daznicon\endcsname {\simpleiconsmapthree\symbol{187}}
- \expandafter\def\csname simpleicon@dbeavericon\endcsname {\simpleiconsmapthree\symbol{188}}
- \expandafter\def\csname simpleicon@dblpicon\endcsname {\simpleiconsmapthree\symbol{189}}
- \expandafter\def\csname simpleicon@dbticon\endcsname {\simpleiconsmapthree\symbol{190}}
- \expandafter\def\csname simpleicon@dcentertainmenticon\endcsname {\simpleiconsmapthree\symbol{191}}
- \expandafter\def\csname simpleicon@debianicon\endcsname {\simpleiconsmapthree\symbol{192}}
- \expandafter\def\csname simpleicon@decapcmsicon\endcsname {\simpleiconsmapthree\symbol{193}}
- \expandafter\def\csname simpleicon@decentralandicon\endcsname {\simpleiconsmapthree\symbol{194}}
- \expandafter\def\csname simpleicon@dedgeicon\endcsname {\simpleiconsmapthree\symbol{195}}
- \expandafter\def\csname simpleicon@deepcoolicon\endcsname {\simpleiconsmapthree\symbol{196}}
- \expandafter\def\csname simpleicon@deepgramicon\endcsname {\simpleiconsmapthree\symbol{197}}
- \expandafter\def\csname simpleicon@deepinicon\endcsname {\simpleiconsmapthree\symbol{198}}
- \expandafter\def\csname simpleicon@deeplicon\endcsname {\simpleiconsmapthree\symbol{199}}
- \expandafter\def\csname simpleicon@deepnoteicon\endcsname {\simpleiconsmapthree\symbol{200}}
- \expandafter\def\csname simpleicon@deliciousicon\endcsname {\simpleiconsmapthree\symbol{201}}
- \expandafter\def\csname simpleicon@deliverooicon\endcsname {\simpleiconsmapthree\symbol{202}}
- \expandafter\def\csname simpleicon@dellicon\endcsname {\simpleiconsmapthree\symbol{203}}
- \expandafter\def\csname simpleicon@delonghiicon\endcsname {\simpleiconsmapthree\symbol{204}}
- \expandafter\def\csname simpleicon@delphiicon\endcsname {\simpleiconsmapthree\symbol{205}}
- \expandafter\def\csname simpleicon@deltaicon\endcsname {\simpleiconsmapthree\symbol{206}}
- \expandafter\def\csname simpleicon@delugeicon\endcsname {\simpleiconsmapthree\symbol{207}}
- \expandafter\def\csname simpleicon@denoicon\endcsname {\simpleiconsmapthree\symbol{208}}
- \expandafter\def\csname simpleicon@denonicon\endcsname {\simpleiconsmapthree\symbol{209}}
- \expandafter\def\csname simpleicon@dependaboticon\endcsname {\simpleiconsmapthree\symbol{210}}
- \expandafter\def\csname simpleicon@dependencycheckicon\endcsname {\simpleiconsmapthree\symbol{211}}
- \expandafter\def\csname simpleicon@depositphotosicon\endcsname {\simpleiconsmapthree\symbol{212}}
- \expandafter\def\csname simpleicon@derspiegelicon\endcsname {\simpleiconsmapthree\symbol{213}}
- \expandafter\def\csname simpleicon@deutschebahnicon\endcsname {\simpleiconsmapthree\symbol{214}}
- \expandafter\def\csname simpleicon@deutschebankicon\endcsname {\simpleiconsmapthree\symbol{215}}
- \expandafter\def\csname simpleicon@deutscheposticon\endcsname {\simpleiconsmapthree\symbol{216}}
- \expandafter\def\csname simpleicon@devdottoicon\endcsname {\simpleiconsmapthree\symbol{217}}
- \expandafter\def\csname simpleicon@devexpressicon\endcsname {\simpleiconsmapthree\symbol{218}}
- \expandafter\def\csname simpleicon@deviantarticon\endcsname {\simpleiconsmapthree\symbol{219}}
- \expandafter\def\csname simpleicon@devposticon\endcsname {\simpleiconsmapthree\symbol{220}}
- \expandafter\def\csname simpleicon@devranticon\endcsname {\simpleiconsmapthree\symbol{221}}
- \expandafter\def\csname simpleicon@dgraphicon\endcsname {\simpleiconsmapthree\symbol{222}}
- \expandafter\def\csname simpleicon@dhlicon\endcsname {\simpleiconsmapthree\symbol{223}}
- \expandafter\def\csname simpleicon@diagramsdotneticon\endcsname {\simpleiconsmapthree\symbol{224}}
- \expandafter\def\csname simpleicon@dialogflowicon\endcsname {\simpleiconsmapthree\symbol{225}}
- \expandafter\def\csname simpleicon@diasporaicon\endcsname {\simpleiconsmapthree\symbol{226}}
- \expandafter\def\csname simpleicon@dictionarydotcomicon\endcsname {\simpleiconsmapthree\symbol{227}}
- \expandafter\def\csname simpleicon@diggicon\endcsname {\simpleiconsmapthree\symbol{228}}
- \expandafter\def\csname simpleicon@digikeyelectronicsicon\endcsname {\simpleiconsmapthree\symbol{229}}
- \expandafter\def\csname simpleicon@digitaloceanicon\endcsname {\simpleiconsmapthree\symbol{230}}
- \expandafter\def\csname simpleicon@dinersclubicon\endcsname {\simpleiconsmapthree\symbol{231}}
- \expandafter\def\csname simpleicon@dioricon\endcsname {\simpleiconsmapthree\symbol{232}}
- \expandafter\def\csname simpleicon@directusicon\endcsname {\simpleiconsmapthree\symbol{233}}
- \expandafter\def\csname simpleicon@discogsicon\endcsname {\simpleiconsmapthree\symbol{234}}
- \expandafter\def\csname simpleicon@discordicon\endcsname {\simpleiconsmapthree\symbol{235}}
- \expandafter\def\csname simpleicon@discourseicon\endcsname {\simpleiconsmapthree\symbol{236}}
- \expandafter\def\csname simpleicon@discovericon\endcsname {\simpleiconsmapthree\symbol{237}}
- \expandafter\def\csname simpleicon@disqusicon\endcsname {\simpleiconsmapthree\symbol{238}}
- \expandafter\def\csname simpleicon@disrooticon\endcsname {\simpleiconsmapthree\symbol{239}}
- \expandafter\def\csname simpleicon@distrokidicon\endcsname {\simpleiconsmapthree\symbol{240}}
- \expandafter\def\csname simpleicon@djangoicon\endcsname {\simpleiconsmapthree\symbol{241}}
- \expandafter\def\csname simpleicon@djiicon\endcsname {\simpleiconsmapthree\symbol{242}}
- \expandafter\def\csname simpleicon@dlibicon\endcsname {\simpleiconsmapthree\symbol{243}}
- \expandafter\def\csname simpleicon@dlnaicon\endcsname {\simpleiconsmapthree\symbol{244}}
- \expandafter\def\csname simpleicon@dmicon\endcsname {\simpleiconsmapthree\symbol{245}}
- \expandafter\def\csname simpleicon@dockericon\endcsname {\simpleiconsmapthree\symbol{246}}
- \expandafter\def\csname simpleicon@docsdotrsicon\endcsname {\simpleiconsmapthree\symbol{247}}
- \expandafter\def\csname simpleicon@docsifyicon\endcsname {\simpleiconsmapthree\symbol{248}}
- \expandafter\def\csname simpleicon@doctrineicon\endcsname {\simpleiconsmapthree\symbol{249}}
- \expandafter\def\csname simpleicon@docusaurusicon\endcsname {\simpleiconsmapthree\symbol{250}}
- \expandafter\def\csname simpleicon@dogecoinicon\endcsname {\simpleiconsmapthree\symbol{251}}
- \expandafter\def\csname simpleicon@doiicon\endcsname {\simpleiconsmapthree\symbol{252}}
- \expandafter\def\csname simpleicon@dolbyicon\endcsname {\simpleiconsmapthree\symbol{253}}
- \expandafter\def\csname simpleicon@doordashicon\endcsname {\simpleiconsmapthree\symbol{254}}
- \expandafter\def\csname simpleicon@dota2icon\endcsname {\simpleiconsmapthree\symbol{255}}
- \expandafter\def\csname simpleicon@dotenvicon\endcsname {\simpleiconsmapfour\symbol{0}}
- \expandafter\def\csname simpleicon@dotneticon\endcsname {\simpleiconsmapfour\symbol{1}}
- \expandafter\def\csname simpleicon@doubanicon\endcsname {\simpleiconsmapfour\symbol{2}}
- \expandafter\def\csname simpleicon@doubanreadicon\endcsname {\simpleiconsmapfour\symbol{3}}
- \expandafter\def\csname simpleicon@dovecoticon\endcsname {\simpleiconsmapfour\symbol{4}}
- \expandafter\def\csname simpleicon@dovetailicon\endcsname {\simpleiconsmapfour\symbol{5}}
- \expandafter\def\csname simpleicon@doxygenicon\endcsname {\simpleiconsmapfour\symbol{6}}
- \expandafter\def\csname simpleicon@dpdicon\endcsname {\simpleiconsmapfour\symbol{7}}
- \expandafter\def\csname simpleicon@dragonframeicon\endcsname {\simpleiconsmapfour\symbol{8}}
- \expandafter\def\csname simpleicon@draugiemdotlvicon\endcsname {\simpleiconsmapfour\symbol{9}}
- \expandafter\def\csname simpleicon@dreamstimeicon\endcsname {\simpleiconsmapfour\symbol{10}}
- \expandafter\def\csname simpleicon@dribbbleicon\endcsname {\simpleiconsmapfour\symbol{11}}
- \expandafter\def\csname simpleicon@drizzleicon\endcsname {\simpleiconsmapfour\symbol{12}}
- \expandafter\def\csname simpleicon@droneicon\endcsname {\simpleiconsmapfour\symbol{13}}
- \expandafter\def\csname simpleicon@droobleicon\endcsname {\simpleiconsmapfour\symbol{14}}
- \expandafter\def\csname simpleicon@dropboxicon\endcsname {\simpleiconsmapfour\symbol{15}}
- \expandafter\def\csname simpleicon@drupalicon\endcsname {\simpleiconsmapfour\symbol{16}}
- \expandafter\def\csname simpleicon@dsautomobilesicon\endcsname {\simpleiconsmapfour\symbol{17}}
- \expandafter\def\csname simpleicon@dtsicon\endcsname {\simpleiconsmapfour\symbol{18}}
- \expandafter\def\csname simpleicon@dtubeicon\endcsname {\simpleiconsmapfour\symbol{19}}
- \expandafter\def\csname simpleicon@ducatiicon\endcsname {\simpleiconsmapfour\symbol{20}}
- \expandafter\def\csname simpleicon@duckdbicon\endcsname {\simpleiconsmapfour\symbol{21}}
- \expandafter\def\csname simpleicon@duckduckgoicon\endcsname {\simpleiconsmapfour\symbol{22}}
- \expandafter\def\csname simpleicon@dungeonsanddragonsicon\endcsname {\simpleiconsmapfour\symbol{23}}
- \expandafter\def\csname simpleicon@dunkedicon\endcsname {\simpleiconsmapfour\symbol{24}}
- \expandafter\def\csname simpleicon@dunzoicon\endcsname {\simpleiconsmapfour\symbol{25}}
- \expandafter\def\csname simpleicon@duolingoicon\endcsname {\simpleiconsmapfour\symbol{26}}
- \expandafter\def\csname simpleicon@duplicatiicon\endcsname {\simpleiconsmapfour\symbol{27}}
- \expandafter\def\csname simpleicon@dvcicon\endcsname {\simpleiconsmapfour\symbol{28}}
- \expandafter\def\csname simpleicon@dwavesystemsicon\endcsname {\simpleiconsmapfour\symbol{29}}
- \expandafter\def\csname simpleicon@dwmicon\endcsname {\simpleiconsmapfour\symbol{30}}
- \expandafter\def\csname simpleicon@dynatraceicon\endcsname {\simpleiconsmapfour\symbol{31}}
- \expandafter\def\csname simpleicon@eicon\endcsname {\simpleiconsmapfour\symbol{32}}
- \expandafter\def\csname simpleicon@e3icon\endcsname {\simpleiconsmapfour\symbol{33}}
- \expandafter\def\csname simpleicon@eaicon\endcsname {\simpleiconsmapfour\symbol{34}}
- \expandafter\def\csname simpleicon@eagleicon\endcsname {\simpleiconsmapfour\symbol{35}}
- \expandafter\def\csname simpleicon@easyedaicon\endcsname {\simpleiconsmapfour\symbol{36}}
- \expandafter\def\csname simpleicon@easyjeticon\endcsname {\simpleiconsmapfour\symbol{37}}
- \expandafter\def\csname simpleicon@ebayicon\endcsname {\simpleiconsmapfour\symbol{38}}
- \expandafter\def\csname simpleicon@eboxicon\endcsname {\simpleiconsmapfour\symbol{39}}
- \expandafter\def\csname simpleicon@eclipseadoptiumicon\endcsname {\simpleiconsmapfour\symbol{40}}
- \expandafter\def\csname simpleicon@eclipsecheicon\endcsname {\simpleiconsmapfour\symbol{41}}
- \expandafter\def\csname simpleicon@eclipseideicon\endcsname {\simpleiconsmapfour\symbol{42}}
- \expandafter\def\csname simpleicon@eclipsejettyicon\endcsname {\simpleiconsmapfour\symbol{43}}
- \expandafter\def\csname simpleicon@eclipsemosquittoicon\endcsname {\simpleiconsmapfour\symbol{44}}
- \expandafter\def\csname simpleicon@eclipsevertdotxicon\endcsname {\simpleiconsmapfour\symbol{45}}
- \expandafter\def\csname simpleicon@ecovacsicon\endcsname {\simpleiconsmapfour\symbol{46}}
- \expandafter\def\csname simpleicon@edekaicon\endcsname {\simpleiconsmapfour\symbol{47}}
- \expandafter\def\csname simpleicon@edgeimpulseicon\endcsname {\simpleiconsmapfour\symbol{48}}
- \expandafter\def\csname simpleicon@editorconfigicon\endcsname {\simpleiconsmapfour\symbol{49}}
- \expandafter\def\csname simpleicon@edotleclercicon\endcsname {\simpleiconsmapfour\symbol{50}}
- \expandafter\def\csname simpleicon@educativeicon\endcsname {\simpleiconsmapfour\symbol{51}}
- \expandafter\def\csname simpleicon@edxicon\endcsname {\simpleiconsmapfour\symbol{52}}
- \expandafter\def\csname simpleicon@eggheadicon\endcsname {\simpleiconsmapfour\symbol{53}}
- \expandafter\def\csname simpleicon@egnyteicon\endcsname {\simpleiconsmapfour\symbol{54}}
- \expandafter\def\csname simpleicon@eighticon\endcsname {\simpleiconsmapfour\symbol{55}}
- \expandafter\def\csname simpleicon@eightsleepicon\endcsname {\simpleiconsmapfour\symbol{56}}
- \expandafter\def\csname simpleicon@ejsicon\endcsname {\simpleiconsmapfour\symbol{57}}
- \expandafter\def\csname simpleicon@elasticicon\endcsname {\simpleiconsmapfour\symbol{58}}
- \expandafter\def\csname simpleicon@elasticcloudicon\endcsname {\simpleiconsmapfour\symbol{59}}
- \expandafter\def\csname simpleicon@elasticsearchicon\endcsname {\simpleiconsmapfour\symbol{60}}
- \expandafter\def\csname simpleicon@elasticstackicon\endcsname {\simpleiconsmapfour\symbol{61}}
- \expandafter\def\csname simpleicon@elavonicon\endcsname {\simpleiconsmapfour\symbol{62}}
- \expandafter\def\csname simpleicon@electronicon\endcsname {\simpleiconsmapfour\symbol{63}}
- \expandafter\def\csname simpleicon@electronbuildericon\endcsname {\simpleiconsmapfour\symbol{64}}
- \expandafter\def\csname simpleicon@electronfiddleicon\endcsname {\simpleiconsmapfour\symbol{65}}
- \expandafter\def\csname simpleicon@elegooicon\endcsname {\simpleiconsmapfour\symbol{66}}
- \expandafter\def\csname simpleicon@elementicon\endcsname {\simpleiconsmapfour\symbol{67}}
- \expandafter\def\csname simpleicon@elementaryicon\endcsname {\simpleiconsmapfour\symbol{68}}
- \expandafter\def\csname simpleicon@elementoricon\endcsname {\simpleiconsmapfour\symbol{69}}
- \expandafter\def\csname simpleicon@eleventyicon\endcsname {\simpleiconsmapfour\symbol{70}}
- \expandafter\def\csname simpleicon@elgatoicon\endcsname {\simpleiconsmapfour\symbol{71}}
- \expandafter\def\csname simpleicon@elixiricon\endcsname {\simpleiconsmapfour\symbol{72}}
- \expandafter\def\csname simpleicon@eljuevesicon\endcsname {\simpleiconsmapfour\symbol{73}}
- \expandafter\def\csname simpleicon@elloicon\endcsname {\simpleiconsmapfour\symbol{74}}
- \expandafter\def\csname simpleicon@elmicon\endcsname {\simpleiconsmapfour\symbol{75}}
- \expandafter\def\csname simpleicon@elseviericon\endcsname {\simpleiconsmapfour\symbol{76}}
- \expandafter\def\csname simpleicon@embarcaderoicon\endcsname {\simpleiconsmapfour\symbol{77}}
- \expandafter\def\csname simpleicon@embarkicon\endcsname {\simpleiconsmapfour\symbol{78}}
- \expandafter\def\csname simpleicon@emberdotjsicon\endcsname {\simpleiconsmapfour\symbol{79}}
- \expandafter\def\csname simpleicon@embyicon\endcsname {\simpleiconsmapfour\symbol{80}}
- \expandafter\def\csname simpleicon@emiratesicon\endcsname {\simpleiconsmapfour\symbol{81}}
- \expandafter\def\csname simpleicon@emlakjeticon\endcsname {\simpleiconsmapfour\symbol{82}}
- \expandafter\def\csname simpleicon@empirekredicon\endcsname {\simpleiconsmapfour\symbol{83}}
- \expandafter\def\csname simpleicon@endeavourosicon\endcsname {\simpleiconsmapfour\symbol{84}}
- \expandafter\def\csname simpleicon@engadgeticon\endcsname {\simpleiconsmapfour\symbol{85}}
- \expandafter\def\csname simpleicon@enpassicon\endcsname {\simpleiconsmapfour\symbol{86}}
- \expandafter\def\csname simpleicon@enterprisedbicon\endcsname {\simpleiconsmapfour\symbol{87}}
- \expandafter\def\csname simpleicon@envatoicon\endcsname {\simpleiconsmapfour\symbol{88}}
- \expandafter\def\csname simpleicon@envoyproxyicon\endcsname {\simpleiconsmapfour\symbol{89}}
- \expandafter\def\csname simpleicon@epelicon\endcsname {\simpleiconsmapfour\symbol{90}}
- \expandafter\def\csname simpleicon@epicgamesicon\endcsname {\simpleiconsmapfour\symbol{91}}
- \expandafter\def\csname simpleicon@epsonicon\endcsname {\simpleiconsmapfour\symbol{92}}
- \expandafter\def\csname simpleicon@equinixmetalicon\endcsname {\simpleiconsmapfour\symbol{93}}
- \expandafter\def\csname simpleicon@erasericon\endcsname {\simpleiconsmapfour\symbol{94}}
- \expandafter\def\csname simpleicon@ericssonicon\endcsname {\simpleiconsmapfour\symbol{95}}
- \expandafter\def\csname simpleicon@erlangicon\endcsname {\simpleiconsmapfour\symbol{96}}
- \expandafter\def\csname simpleicon@erpnexticon\endcsname {\simpleiconsmapfour\symbol{97}}
- \expandafter\def\csname simpleicon@esbuildicon\endcsname {\simpleiconsmapfour\symbol{98}}
- \expandafter\def\csname simpleicon@eseaicon\endcsname {\simpleiconsmapfour\symbol{99}}
- \expandafter\def\csname simpleicon@eslgamingicon\endcsname {\simpleiconsmapfour\symbol{100}}
- \expandafter\def\csname simpleicon@eslinticon\endcsname {\simpleiconsmapfour\symbol{101}}
- \expandafter\def\csname simpleicon@esotericsoftwareicon\endcsname {\simpleiconsmapfour\symbol{102}}
- \expandafter\def\csname simpleicon@esphomeicon\endcsname {\simpleiconsmapfour\symbol{103}}
- \expandafter\def\csname simpleicon@espressificon\endcsname {\simpleiconsmapfour\symbol{104}}
- \expandafter\def\csname simpleicon@esriicon\endcsname {\simpleiconsmapfour\symbol{105}}
- \expandafter\def\csname simpleicon@etcdicon\endcsname {\simpleiconsmapfour\symbol{106}}
- \expandafter\def\csname simpleicon@ethereumicon\endcsname {\simpleiconsmapfour\symbol{107}}
- \expandafter\def\csname simpleicon@ethersicon\endcsname {\simpleiconsmapfour\symbol{108}}
- \expandafter\def\csname simpleicon@ethiopianairlinesicon\endcsname {\simpleiconsmapfour\symbol{109}}
- \expandafter\def\csname simpleicon@etihadairwaysicon\endcsname {\simpleiconsmapfour\symbol{110}}
- \expandafter\def\csname simpleicon@etsyicon\endcsname {\simpleiconsmapfour\symbol{111}}
- \expandafter\def\csname simpleicon@eventbriteicon\endcsname {\simpleiconsmapfour\symbol{112}}
- \expandafter\def\csname simpleicon@eventstoreicon\endcsname {\simpleiconsmapfour\symbol{113}}
- \expandafter\def\csname simpleicon@evernoteicon\endcsname {\simpleiconsmapfour\symbol{114}}
- \expandafter\def\csname simpleicon@excalidrawicon\endcsname {\simpleiconsmapfour\symbol{115}}
- \expandafter\def\csname simpleicon@exercismicon\endcsname {\simpleiconsmapfour\symbol{116}}
- \expandafter\def\csname simpleicon@exordoicon\endcsname {\simpleiconsmapfour\symbol{117}}
- \expandafter\def\csname simpleicon@exoscaleicon\endcsname {\simpleiconsmapfour\symbol{118}}
- \expandafter\def\csname simpleicon@expediaicon\endcsname {\simpleiconsmapfour\symbol{119}}
- \expandafter\def\csname simpleicon@expensifyicon\endcsname {\simpleiconsmapfour\symbol{120}}
- \expandafter\def\csname simpleicon@expertsexchangeicon\endcsname {\simpleiconsmapfour\symbol{121}}
- \expandafter\def\csname simpleicon@expoicon\endcsname {\simpleiconsmapfour\symbol{122}}
- \expandafter\def\csname simpleicon@expressicon\endcsname {\simpleiconsmapfour\symbol{123}}
- \expandafter\def\csname simpleicon@expressvpnicon\endcsname {\simpleiconsmapfour\symbol{124}}
- \expandafter\def\csname simpleicon@eyeemicon\endcsname {\simpleiconsmapfour\symbol{125}}
- \expandafter\def\csname simpleicon@f1icon\endcsname {\simpleiconsmapfour\symbol{126}}
- \expandafter\def\csname simpleicon@f5icon\endcsname {\simpleiconsmapfour\symbol{127}}
- \expandafter\def\csname simpleicon@facebookicon\endcsname {\simpleiconsmapfour\symbol{128}}
- \expandafter\def\csname simpleicon@facebookgamingicon\endcsname {\simpleiconsmapfour\symbol{129}}
- \expandafter\def\csname simpleicon@facebookliveicon\endcsname {\simpleiconsmapfour\symbol{130}}
- \expandafter\def\csname simpleicon@faceiticon\endcsname {\simpleiconsmapfour\symbol{131}}
- \expandafter\def\csname simpleicon@facepunchicon\endcsname {\simpleiconsmapfour\symbol{132}}
- \expandafter\def\csname simpleicon@fairphoneicon\endcsname {\simpleiconsmapfour\symbol{133}}
- \expandafter\def\csname simpleicon@falcoicon\endcsname {\simpleiconsmapfour\symbol{134}}
- \expandafter\def\csname simpleicon@falconicon\endcsname {\simpleiconsmapfour\symbol{135}}
- \expandafter\def\csname simpleicon@fampayicon\endcsname {\simpleiconsmapfour\symbol{136}}
- \expandafter\def\csname simpleicon@fandangoicon\endcsname {\simpleiconsmapfour\symbol{137}}
- \expandafter\def\csname simpleicon@fandomicon\endcsname {\simpleiconsmapfour\symbol{138}}
- \expandafter\def\csname simpleicon@fanfouicon\endcsname {\simpleiconsmapfour\symbol{139}}
- \expandafter\def\csname simpleicon@fantomicon\endcsname {\simpleiconsmapfour\symbol{140}}
- \expandafter\def\csname simpleicon@farcastericon\endcsname {\simpleiconsmapfour\symbol{141}}
- \expandafter\def\csname simpleicon@fareharboricon\endcsname {\simpleiconsmapfour\symbol{142}}
- \expandafter\def\csname simpleicon@farfetchicon\endcsname {\simpleiconsmapfour\symbol{143}}
- \expandafter\def\csname simpleicon@fastapiicon\endcsname {\simpleiconsmapfour\symbol{144}}
- \expandafter\def\csname simpleicon@fastifyicon\endcsname {\simpleiconsmapfour\symbol{145}}
- \expandafter\def\csname simpleicon@fastlaneicon\endcsname {\simpleiconsmapfour\symbol{146}}
- \expandafter\def\csname simpleicon@fastlyicon\endcsname {\simpleiconsmapfour\symbol{147}}
- \expandafter\def\csname simpleicon@fathomicon\endcsname {\simpleiconsmapfour\symbol{148}}
- \expandafter\def\csname simpleicon@faunaicon\endcsname {\simpleiconsmapfour\symbol{149}}
- \expandafter\def\csname simpleicon@favroicon\endcsname {\simpleiconsmapfour\symbol{150}}
- \expandafter\def\csname simpleicon@fdroidicon\endcsname {\simpleiconsmapfour\symbol{151}}
- \expandafter\def\csname simpleicon@feathubicon\endcsname {\simpleiconsmapfour\symbol{152}}
- \expandafter\def\csname simpleicon@fedexicon\endcsname {\simpleiconsmapfour\symbol{153}}
- \expandafter\def\csname simpleicon@fedoraicon\endcsname {\simpleiconsmapfour\symbol{154}}
- \expandafter\def\csname simpleicon@feedlyicon\endcsname {\simpleiconsmapfour\symbol{155}}
- \expandafter\def\csname simpleicon@ferrariicon\endcsname {\simpleiconsmapfour\symbol{156}}
- \expandafter\def\csname simpleicon@ferrarinvicon\endcsname {\simpleiconsmapfour\symbol{157}}
- \expandafter\def\csname simpleicon@ferretdbicon\endcsname {\simpleiconsmapfour\symbol{158}}
- \expandafter\def\csname simpleicon@ffmpegicon\endcsname {\simpleiconsmapfour\symbol{159}}
- \expandafter\def\csname simpleicon@fiicon\endcsname {\simpleiconsmapfour\symbol{160}}
- \expandafter\def\csname simpleicon@fiaticon\endcsname {\simpleiconsmapfour\symbol{161}}
- \expandafter\def\csname simpleicon@fidoallianceicon\endcsname {\simpleiconsmapfour\symbol{162}}
- \expandafter\def\csname simpleicon@fifaicon\endcsname {\simpleiconsmapfour\symbol{163}}
- \expandafter\def\csname simpleicon@figicon\endcsname {\simpleiconsmapfour\symbol{164}}
- \expandafter\def\csname simpleicon@figmaicon\endcsname {\simpleiconsmapfour\symbol{165}}
- \expandafter\def\csname simpleicon@figshareicon\endcsname {\simpleiconsmapfour\symbol{166}}
- \expandafter\def\csname simpleicon@filaicon\endcsname {\simpleiconsmapfour\symbol{167}}
- \expandafter\def\csname simpleicon@filedotioicon\endcsname {\simpleiconsmapfour\symbol{168}}
- \expandafter\def\csname simpleicon@filesicon\endcsname {\simpleiconsmapfour\symbol{169}}
- \expandafter\def\csname simpleicon@filezillaicon\endcsname {\simpleiconsmapfour\symbol{170}}
- \expandafter\def\csname simpleicon@finecoicon\endcsname {\simpleiconsmapfour\symbol{171}}
- \expandafter\def\csname simpleicon@fingicon\endcsname {\simpleiconsmapfour\symbol{172}}
- \expandafter\def\csname simpleicon@firebaseicon\endcsname {\simpleiconsmapfour\symbol{173}}
- \expandafter\def\csname simpleicon@firefishicon\endcsname {\simpleiconsmapfour\symbol{174}}
- \expandafter\def\csname simpleicon@fireflyiiiicon\endcsname {\simpleiconsmapfour\symbol{175}}
- \expandafter\def\csname simpleicon@firefoxicon\endcsname {\simpleiconsmapfour\symbol{176}}
- \expandafter\def\csname simpleicon@firefoxbrowsericon\endcsname {\simpleiconsmapfour\symbol{177}}
- \expandafter\def\csname simpleicon@fireshipicon\endcsname {\simpleiconsmapfour\symbol{178}}
- \expandafter\def\csname simpleicon@firewallaicon\endcsname {\simpleiconsmapfour\symbol{179}}
- \expandafter\def\csname simpleicon@firsticon\endcsname {\simpleiconsmapfour\symbol{180}}
- \expandafter\def\csname simpleicon@fishshellicon\endcsname {\simpleiconsmapfour\symbol{181}}
- \expandafter\def\csname simpleicon@fitbiticon\endcsname {\simpleiconsmapfour\symbol{182}}
- \expandafter\def\csname simpleicon@fivemicon\endcsname {\simpleiconsmapfour\symbol{183}}
- \expandafter\def\csname simpleicon@fiverricon\endcsname {\simpleiconsmapfour\symbol{184}}
- \expandafter\def\csname simpleicon@fizzicon\endcsname {\simpleiconsmapfour\symbol{185}}
- \expandafter\def\csname simpleicon@flashforgeicon\endcsname {\simpleiconsmapfour\symbol{186}}
- \expandafter\def\csname simpleicon@flaskicon\endcsname {\simpleiconsmapfour\symbol{187}}
- \expandafter\def\csname simpleicon@flaticon\endcsname {\simpleiconsmapfour\symbol{188}}
- \expandafter\def\csname simpleicon@flathubicon\endcsname {\simpleiconsmapfour\symbol{189}}
- \expandafter\def\csname simpleicon@flatpakicon\endcsname {\simpleiconsmapfour\symbol{190}}
- \expandafter\def\csname simpleicon@flickricon\endcsname {\simpleiconsmapfour\symbol{191}}
- \expandafter\def\csname simpleicon@flightawareicon\endcsname {\simpleiconsmapfour\symbol{192}}
- \expandafter\def\csname simpleicon@flipboardicon\endcsname {\simpleiconsmapfour\symbol{193}}
- \expandafter\def\csname simpleicon@flipkarticon\endcsname {\simpleiconsmapfour\symbol{194}}
- \expandafter\def\csname simpleicon@floatplaneicon\endcsname {\simpleiconsmapfour\symbol{195}}
- \expandafter\def\csname simpleicon@floodicon\endcsname {\simpleiconsmapfour\symbol{196}}
- \expandafter\def\csname simpleicon@fluentbiticon\endcsname {\simpleiconsmapfour\symbol{197}}
- \expandafter\def\csname simpleicon@fluentdicon\endcsname {\simpleiconsmapfour\symbol{198}}
- \expandafter\def\csname simpleicon@flukeicon\endcsname {\simpleiconsmapfour\symbol{199}}
- \expandafter\def\csname simpleicon@fluttericon\endcsname {\simpleiconsmapfour\symbol{200}}
- \expandafter\def\csname simpleicon@fluxicon\endcsname {\simpleiconsmapfour\symbol{201}}
- \expandafter\def\csname simpleicon@fluxusicon\endcsname {\simpleiconsmapfour\symbol{202}}
- \expandafter\def\csname simpleicon@flydotioicon\endcsname {\simpleiconsmapfour\symbol{203}}
- \expandafter\def\csname simpleicon@flywayicon\endcsname {\simpleiconsmapfour\symbol{204}}
- \expandafter\def\csname simpleicon@fmodicon\endcsname {\simpleiconsmapfour\symbol{205}}
- \expandafter\def\csname simpleicon@fnacicon\endcsname {\simpleiconsmapfour\symbol{206}}
- \expandafter\def\csname simpleicon@foliumicon\endcsname {\simpleiconsmapfour\symbol{207}}
- \expandafter\def\csname simpleicon@fonomaicon\endcsname {\simpleiconsmapfour\symbol{208}}
- \expandafter\def\csname simpleicon@fontawesomeicon\endcsname {\simpleiconsmapfour\symbol{209}}
- \expandafter\def\csname simpleicon@fontbaseicon\endcsname {\simpleiconsmapfour\symbol{210}}
- \expandafter\def\csname simpleicon@fontforgeicon\endcsname {\simpleiconsmapfour\symbol{211}}
- \expandafter\def\csname simpleicon@foobar2000icon\endcsname {\simpleiconsmapfour\symbol{212}}
- \expandafter\def\csname simpleicon@foodpandaicon\endcsname {\simpleiconsmapfour\symbol{213}}
- \expandafter\def\csname simpleicon@fordicon\endcsname {\simpleiconsmapfour\symbol{214}}
- \expandafter\def\csname simpleicon@forgejoicon\endcsname {\simpleiconsmapfour\symbol{215}}
- \expandafter\def\csname simpleicon@formikicon\endcsname {\simpleiconsmapfour\symbol{216}}
- \expandafter\def\csname simpleicon@formspreeicon\endcsname {\simpleiconsmapfour\symbol{217}}
- \expandafter\def\csname simpleicon@formstackicon\endcsname {\simpleiconsmapfour\symbol{218}}
- \expandafter\def\csname simpleicon@fortineticon\endcsname {\simpleiconsmapfour\symbol{219}}
- \expandafter\def\csname simpleicon@fortranicon\endcsname {\simpleiconsmapfour\symbol{220}}
- \expandafter\def\csname simpleicon@fossaicon\endcsname {\simpleiconsmapfour\symbol{221}}
- \expandafter\def\csname simpleicon@fossilscmicon\endcsname {\simpleiconsmapfour\symbol{222}}
- \expandafter\def\csname simpleicon@foundryvirtualtabletopicon\endcsname {\simpleiconsmapfour\symbol{223}}
- \expandafter\def\csname simpleicon@foursquareicon\endcsname {\simpleiconsmapfour\symbol{224}}
- \expandafter\def\csname simpleicon@foursquarecityguideicon\endcsname {\simpleiconsmapfour\symbol{225}}
- \expandafter\def\csname simpleicon@foxicon\endcsname {\simpleiconsmapfour\symbol{226}}
- \expandafter\def\csname simpleicon@foxtelicon\endcsname {\simpleiconsmapfour\symbol{227}}
- \expandafter\def\csname simpleicon@fozzyicon\endcsname {\simpleiconsmapfour\symbol{228}}
- \expandafter\def\csname simpleicon@framericon\endcsname {\simpleiconsmapfour\symbol{229}}
- \expandafter\def\csname simpleicon@frameworkicon\endcsname {\simpleiconsmapfour\symbol{230}}
- \expandafter\def\csname simpleicon@framework7icon\endcsname {\simpleiconsmapfour\symbol{231}}
- \expandafter\def\csname simpleicon@franprixicon\endcsname {\simpleiconsmapfour\symbol{232}}
- \expandafter\def\csname simpleicon@frappeicon\endcsname {\simpleiconsmapfour\symbol{233}}
- \expandafter\def\csname simpleicon@fraunhofergesellschafticon\endcsname {\simpleiconsmapfour\symbol{234}}
- \expandafter\def\csname simpleicon@freebsdicon\endcsname {\simpleiconsmapfour\symbol{235}}
- \expandafter\def\csname simpleicon@freecadicon\endcsname {\simpleiconsmapfour\symbol{236}}
- \expandafter\def\csname simpleicon@freecodecampicon\endcsname {\simpleiconsmapfour\symbol{237}}
- \expandafter\def\csname simpleicon@freedesktopdotorgicon\endcsname {\simpleiconsmapfour\symbol{238}}
- \expandafter\def\csname simpleicon@freelancericon\endcsname {\simpleiconsmapfour\symbol{239}}
- \expandafter\def\csname simpleicon@freelancermapicon\endcsname {\simpleiconsmapfour\symbol{240}}
- \expandafter\def\csname simpleicon@freenasicon\endcsname {\simpleiconsmapfour\symbol{241}}
- \expandafter\def\csname simpleicon@freepikicon\endcsname {\simpleiconsmapfour\symbol{242}}
- \expandafter\def\csname simpleicon@frontendmentoricon\endcsname {\simpleiconsmapfour\symbol{243}}
- \expandafter\def\csname simpleicon@frontifyicon\endcsname {\simpleiconsmapfour\symbol{244}}
- \expandafter\def\csname simpleicon@fsecureicon\endcsname {\simpleiconsmapfour\symbol{245}}
- \expandafter\def\csname simpleicon@fsharpicon\endcsname {\simpleiconsmapfour\symbol{246}}
- \expandafter\def\csname simpleicon@fuboicon\endcsname {\simpleiconsmapfour\symbol{247}}
- \expandafter\def\csname simpleicon@fuelericon\endcsname {\simpleiconsmapfour\symbol{248}}
- \expandafter\def\csname simpleicon@fugacloudicon\endcsname {\simpleiconsmapfour\symbol{249}}
- \expandafter\def\csname simpleicon@fujifilmicon\endcsname {\simpleiconsmapfour\symbol{250}}
- \expandafter\def\csname simpleicon@fujitsuicon\endcsname {\simpleiconsmapfour\symbol{251}}
- \expandafter\def\csname simpleicon@funimationicon\endcsname {\simpleiconsmapfour\symbol{252}}
- \expandafter\def\csname simpleicon@furaffinityicon\endcsname {\simpleiconsmapfour\symbol{253}}
- \expandafter\def\csname simpleicon@furrynetworkicon\endcsname {\simpleiconsmapfour\symbol{254}}
- \expandafter\def\csname simpleicon@fusionauthicon\endcsname {\simpleiconsmapfour\symbol{255}}
- \expandafter\def\csname simpleicon@futurelearnicon\endcsname {\simpleiconsmapfive\symbol{0}}
- \expandafter\def\csname simpleicon@g2icon\endcsname {\simpleiconsmapfive\symbol{1}}
- \expandafter\def\csname simpleicon@g2aicon\endcsname {\simpleiconsmapfive\symbol{2}}
- \expandafter\def\csname simpleicon@g2gicon\endcsname {\simpleiconsmapfive\symbol{3}}
- \expandafter\def\csname simpleicon@galaxusicon\endcsname {\simpleiconsmapfive\symbol{4}}
- \expandafter\def\csname simpleicon@gameandwatchicon\endcsname {\simpleiconsmapfive\symbol{5}}
- \expandafter\def\csname simpleicon@gamebananaicon\endcsname {\simpleiconsmapfive\symbol{6}}
- \expandafter\def\csname simpleicon@gamedevelopericon\endcsname {\simpleiconsmapfive\symbol{7}}
- \expandafter\def\csname simpleicon@gamejolticon\endcsname {\simpleiconsmapfive\symbol{8}}
- \expandafter\def\csname simpleicon@gamelofticon\endcsname {\simpleiconsmapfive\symbol{9}}
- \expandafter\def\csname simpleicon@gamemakericon\endcsname {\simpleiconsmapfive\symbol{10}}
- \expandafter\def\csname simpleicon@garminicon\endcsname {\simpleiconsmapfive\symbol{11}}
- \expandafter\def\csname simpleicon@gatlingicon\endcsname {\simpleiconsmapfive\symbol{12}}
- \expandafter\def\csname simpleicon@gatsbyicon\endcsname {\simpleiconsmapfive\symbol{13}}
- \expandafter\def\csname simpleicon@gcoreicon\endcsname {\simpleiconsmapfive\symbol{14}}
- \expandafter\def\csname simpleicon@gdalicon\endcsname {\simpleiconsmapfive\symbol{15}}
- \expandafter\def\csname simpleicon@geanticon\endcsname {\simpleiconsmapfive\symbol{16}}
- \expandafter\def\csname simpleicon@geeksforgeeksicon\endcsname {\simpleiconsmapfive\symbol{17}}
- \expandafter\def\csname simpleicon@generalelectricicon\endcsname {\simpleiconsmapfive\symbol{18}}
- \expandafter\def\csname simpleicon@generalmotorsicon\endcsname {\simpleiconsmapfive\symbol{19}}
- \expandafter\def\csname simpleicon@geniusicon\endcsname {\simpleiconsmapfive\symbol{20}}
- \expandafter\def\csname simpleicon@gentooicon\endcsname {\simpleiconsmapfive\symbol{21}}
- \expandafter\def\csname simpleicon@geocachingicon\endcsname {\simpleiconsmapfive\symbol{22}}
- \expandafter\def\csname simpleicon@geodeicon\endcsname {\simpleiconsmapfive\symbol{23}}
- \expandafter\def\csname simpleicon@geopandasicon\endcsname {\simpleiconsmapfive\symbol{24}}
- \expandafter\def\csname simpleicon@gerriticon\endcsname {\simpleiconsmapfive\symbol{25}}
- \expandafter\def\csname simpleicon@getxicon\endcsname {\simpleiconsmapfive\symbol{26}}
- \expandafter\def\csname simpleicon@ghosticon\endcsname {\simpleiconsmapfive\symbol{27}}
- \expandafter\def\csname simpleicon@ghosteryicon\endcsname {\simpleiconsmapfive\symbol{28}}
- \expandafter\def\csname simpleicon@gimpicon\endcsname {\simpleiconsmapfive\symbol{29}}
- \expandafter\def\csname simpleicon@ginicon\endcsname {\simpleiconsmapfive\symbol{30}}
- \expandafter\def\csname simpleicon@giphyicon\endcsname {\simpleiconsmapfive\symbol{31}}
- \expandafter\def\csname simpleicon@giticon\endcsname {\simpleiconsmapfive\symbol{32}}
- \expandafter\def\csname simpleicon@gitbookicon\endcsname {\simpleiconsmapfive\symbol{33}}
- \expandafter\def\csname simpleicon@gitconnectedicon\endcsname {\simpleiconsmapfive\symbol{34}}
- \expandafter\def\csname simpleicon@giteaicon\endcsname {\simpleiconsmapfive\symbol{35}}
- \expandafter\def\csname simpleicon@giteeicon\endcsname {\simpleiconsmapfive\symbol{36}}
- \expandafter\def\csname simpleicon@gitextensionsicon\endcsname {\simpleiconsmapfive\symbol{37}}
- \expandafter\def\csname simpleicon@gitforwindowsicon\endcsname {\simpleiconsmapfive\symbol{38}}
- \expandafter\def\csname simpleicon@githubicon\endcsname {\simpleiconsmapfive\symbol{39}}
- \expandafter\def\csname simpleicon@githubactionsicon\endcsname {\simpleiconsmapfive\symbol{40}}
- \expandafter\def\csname simpleicon@githubcopiloticon\endcsname {\simpleiconsmapfive\symbol{41}}
- \expandafter\def\csname simpleicon@githubpagesicon\endcsname {\simpleiconsmapfive\symbol{42}}
- \expandafter\def\csname simpleicon@githubsponsorsicon\endcsname {\simpleiconsmapfive\symbol{43}}
- \expandafter\def\csname simpleicon@gitignoredotioicon\endcsname {\simpleiconsmapfive\symbol{44}}
- \expandafter\def\csname simpleicon@gitkrakenicon\endcsname {\simpleiconsmapfive\symbol{45}}
- \expandafter\def\csname simpleicon@gitlabicon\endcsname {\simpleiconsmapfive\symbol{46}}
- \expandafter\def\csname simpleicon@gitlfsicon\endcsname {\simpleiconsmapfive\symbol{47}}
- \expandafter\def\csname simpleicon@gitpodicon\endcsname {\simpleiconsmapfive\symbol{48}}
- \expandafter\def\csname simpleicon@gittericon\endcsname {\simpleiconsmapfive\symbol{49}}
- \expandafter\def\csname simpleicon@glassdooricon\endcsname {\simpleiconsmapfive\symbol{50}}
- \expandafter\def\csname simpleicon@glideicon\endcsname {\simpleiconsmapfive\symbol{51}}
- \expandafter\def\csname simpleicon@glitchicon\endcsname {\simpleiconsmapfive\symbol{52}}
- \expandafter\def\csname simpleicon@globusicon\endcsname {\simpleiconsmapfive\symbol{53}}
- \expandafter\def\csname simpleicon@glovoicon\endcsname {\simpleiconsmapfive\symbol{54}}
- \expandafter\def\csname simpleicon@gltficon\endcsname {\simpleiconsmapfive\symbol{55}}
- \expandafter\def\csname simpleicon@gmailicon\endcsname {\simpleiconsmapfive\symbol{56}}
- \expandafter\def\csname simpleicon@gnomeicon\endcsname {\simpleiconsmapfive\symbol{57}}
- \expandafter\def\csname simpleicon@gnometerminalicon\endcsname {\simpleiconsmapfive\symbol{58}}
- \expandafter\def\csname simpleicon@gnuicon\endcsname {\simpleiconsmapfive\symbol{59}}
- \expandafter\def\csname simpleicon@gnubashicon\endcsname {\simpleiconsmapfive\symbol{60}}
- \expandafter\def\csname simpleicon@gnuemacsicon\endcsname {\simpleiconsmapfive\symbol{61}}
- \expandafter\def\csname simpleicon@gnuicecaticon\endcsname {\simpleiconsmapfive\symbol{62}}
- \expandafter\def\csname simpleicon@gnuprivacyguardicon\endcsname {\simpleiconsmapfive\symbol{63}}
- \expandafter\def\csname simpleicon@gnusocialicon\endcsname {\simpleiconsmapfive\symbol{64}}
- \expandafter\def\csname simpleicon@goicon\endcsname {\simpleiconsmapfive\symbol{65}}
- \expandafter\def\csname simpleicon@gocdicon\endcsname {\simpleiconsmapfive\symbol{66}}
- \expandafter\def\csname simpleicon@godaddyicon\endcsname {\simpleiconsmapfive\symbol{67}}
- \expandafter\def\csname simpleicon@godotengineicon\endcsname {\simpleiconsmapfive\symbol{68}}
- \expandafter\def\csname simpleicon@gofundmeicon\endcsname {\simpleiconsmapfive\symbol{69}}
- \expandafter\def\csname simpleicon@gogdotcomicon\endcsname {\simpleiconsmapfive\symbol{70}}
- \expandafter\def\csname simpleicon@gojekicon\endcsname {\simpleiconsmapfive\symbol{71}}
- \expandafter\def\csname simpleicon@golandicon\endcsname {\simpleiconsmapfive\symbol{72}}
- \expandafter\def\csname simpleicon@goldenlineicon\endcsname {\simpleiconsmapfive\symbol{73}}
- \expandafter\def\csname simpleicon@goldmansachsicon\endcsname {\simpleiconsmapfive\symbol{74}}
- \expandafter\def\csname simpleicon@goodreadsicon\endcsname {\simpleiconsmapfive\symbol{75}}
- \expandafter\def\csname simpleicon@googleicon\endcsname {\simpleiconsmapfive\symbol{76}}
- \expandafter\def\csname simpleicon@googleadmobicon\endcsname {\simpleiconsmapfive\symbol{77}}
- \expandafter\def\csname simpleicon@googleadsicon\endcsname {\simpleiconsmapfive\symbol{78}}
- \expandafter\def\csname simpleicon@googleadsenseicon\endcsname {\simpleiconsmapfive\symbol{79}}
- \expandafter\def\csname simpleicon@googleanalyticsicon\endcsname {\simpleiconsmapfive\symbol{80}}
- \expandafter\def\csname simpleicon@googleappsscripticon\endcsname {\simpleiconsmapfive\symbol{81}}
- \expandafter\def\csname simpleicon@googleassistanticon\endcsname {\simpleiconsmapfive\symbol{82}}
- \expandafter\def\csname simpleicon@googleauthenticatoricon\endcsname {\simpleiconsmapfive\symbol{83}}
- \expandafter\def\csname simpleicon@googlebigqueryicon\endcsname {\simpleiconsmapfive\symbol{84}}
- \expandafter\def\csname simpleicon@googlebigtableicon\endcsname {\simpleiconsmapfive\symbol{85}}
- \expandafter\def\csname simpleicon@googlecalendaricon\endcsname {\simpleiconsmapfive\symbol{86}}
- \expandafter\def\csname simpleicon@googlecampaignmanager360icon\endcsname {\simpleiconsmapfive\symbol{87}}
- \expandafter\def\csname simpleicon@googlecardboardicon\endcsname {\simpleiconsmapfive\symbol{88}}
- \expandafter\def\csname simpleicon@googlechaticon\endcsname {\simpleiconsmapfive\symbol{89}}
- \expandafter\def\csname simpleicon@googlechromeicon\endcsname {\simpleiconsmapfive\symbol{90}}
- \expandafter\def\csname simpleicon@googlechronicleicon\endcsname {\simpleiconsmapfive\symbol{91}}
- \expandafter\def\csname simpleicon@googleclassroomicon\endcsname {\simpleiconsmapfive\symbol{92}}
- \expandafter\def\csname simpleicon@googlecloudicon\endcsname {\simpleiconsmapfive\symbol{93}}
- \expandafter\def\csname simpleicon@googlecloudcomposericon\endcsname {\simpleiconsmapfive\symbol{94}}
- \expandafter\def\csname simpleicon@googlecloudspannericon\endcsname {\simpleiconsmapfive\symbol{95}}
- \expandafter\def\csname simpleicon@googlecloudstorageicon\endcsname {\simpleiconsmapfive\symbol{96}}
- \expandafter\def\csname simpleicon@googlecolabicon\endcsname {\simpleiconsmapfive\symbol{97}}
- \expandafter\def\csname simpleicon@googlecontaineroptimizedosicon\endcsname {\simpleiconsmapfive\symbol{98}}
- \expandafter\def\csname simpleicon@googledataflowicon\endcsname {\simpleiconsmapfive\symbol{99}}
- \expandafter\def\csname simpleicon@googledataprocicon\endcsname {\simpleiconsmapfive\symbol{100}}
- \expandafter\def\csname simpleicon@googledatastudioicon\endcsname {\simpleiconsmapfive\symbol{101}}
- \expandafter\def\csname simpleicon@googledisplayandvideo360icon\endcsname {\simpleiconsmapfive\symbol{102}}
- \expandafter\def\csname simpleicon@googledocsicon\endcsname {\simpleiconsmapfive\symbol{103}}
- \expandafter\def\csname simpleicon@googledriveicon\endcsname {\simpleiconsmapfive\symbol{104}}
- \expandafter\def\csname simpleicon@googleearthicon\endcsname {\simpleiconsmapfive\symbol{105}}
- \expandafter\def\csname simpleicon@googleearthengineicon\endcsname {\simpleiconsmapfive\symbol{106}}
- \expandafter\def\csname simpleicon@googlefiticon\endcsname {\simpleiconsmapfive\symbol{107}}
- \expandafter\def\csname simpleicon@googlefontsicon\endcsname {\simpleiconsmapfive\symbol{108}}
- \expandafter\def\csname simpleicon@googleformsicon\endcsname {\simpleiconsmapfive\symbol{109}}
- \expandafter\def\csname simpleicon@googlegeminiicon\endcsname {\simpleiconsmapfive\symbol{110}}
- \expandafter\def\csname simpleicon@googlehomeicon\endcsname {\simpleiconsmapfive\symbol{111}}
- \expandafter\def\csname simpleicon@googlekeepicon\endcsname {\simpleiconsmapfive\symbol{112}}
- \expandafter\def\csname simpleicon@googlelensicon\endcsname {\simpleiconsmapfive\symbol{113}}
- \expandafter\def\csname simpleicon@googlemapsicon\endcsname {\simpleiconsmapfive\symbol{114}}
- \expandafter\def\csname simpleicon@googlemarketingplatformicon\endcsname {\simpleiconsmapfive\symbol{115}}
- \expandafter\def\csname simpleicon@googlemeeticon\endcsname {\simpleiconsmapfive\symbol{116}}
- \expandafter\def\csname simpleicon@googlemessagesicon\endcsname {\simpleiconsmapfive\symbol{117}}
- \expandafter\def\csname simpleicon@googlenearbyicon\endcsname {\simpleiconsmapfive\symbol{118}}
- \expandafter\def\csname simpleicon@googlenewsicon\endcsname {\simpleiconsmapfive\symbol{119}}
- \expandafter\def\csname simpleicon@googlepayicon\endcsname {\simpleiconsmapfive\symbol{120}}
- \expandafter\def\csname simpleicon@googlephotosicon\endcsname {\simpleiconsmapfive\symbol{121}}
- \expandafter\def\csname simpleicon@googleplayicon\endcsname {\simpleiconsmapfive\symbol{122}}
- \expandafter\def\csname simpleicon@googlepubsubicon\endcsname {\simpleiconsmapfive\symbol{123}}
- \expandafter\def\csname simpleicon@googlescholaricon\endcsname {\simpleiconsmapfive\symbol{124}}
- \expandafter\def\csname simpleicon@googlesearchconsoleicon\endcsname {\simpleiconsmapfive\symbol{125}}
- \expandafter\def\csname simpleicon@googlesheetsicon\endcsname {\simpleiconsmapfive\symbol{126}}
- \expandafter\def\csname simpleicon@googleslidesicon\endcsname {\simpleiconsmapfive\symbol{127}}
- \expandafter\def\csname simpleicon@googlestreetviewicon\endcsname {\simpleiconsmapfive\symbol{128}}
- \expandafter\def\csname simpleicon@googletagmanagericon\endcsname {\simpleiconsmapfive\symbol{129}}
- \expandafter\def\csname simpleicon@googletasksicon\endcsname {\simpleiconsmapfive\symbol{130}}
- \expandafter\def\csname simpleicon@googletranslateicon\endcsname {\simpleiconsmapfive\symbol{131}}
- \expandafter\def\csname simpleicon@gotomeetingicon\endcsname {\simpleiconsmapfive\symbol{132}}
- \expandafter\def\csname simpleicon@grabicon\endcsname {\simpleiconsmapfive\symbol{133}}
- \expandafter\def\csname simpleicon@gradleicon\endcsname {\simpleiconsmapfive\symbol{134}}
- \expandafter\def\csname simpleicon@gradleplaypublishericon\endcsname {\simpleiconsmapfive\symbol{135}}
- \expandafter\def\csname simpleicon@grafanaicon\endcsname {\simpleiconsmapfive\symbol{136}}
- \expandafter\def\csname simpleicon@grammarlyicon\endcsname {\simpleiconsmapfive\symbol{137}}
- \expandafter\def\csname simpleicon@grandfraisicon\endcsname {\simpleiconsmapfive\symbol{138}}
- \expandafter\def\csname simpleicon@grapheneosicon\endcsname {\simpleiconsmapfive\symbol{139}}
- \expandafter\def\csname simpleicon@graphiteicon\endcsname {\simpleiconsmapfive\symbol{140}}
- \expandafter\def\csname simpleicon@graphqlicon\endcsname {\simpleiconsmapfive\symbol{141}}
- \expandafter\def\csname simpleicon@gravicon\endcsname {\simpleiconsmapfive\symbol{142}}
- \expandafter\def\csname simpleicon@gravataricon\endcsname {\simpleiconsmapfive\symbol{143}}
- \expandafter\def\csname simpleicon@graylogicon\endcsname {\simpleiconsmapfive\symbol{144}}
- \expandafter\def\csname simpleicon@greasyforkicon\endcsname {\simpleiconsmapfive\symbol{145}}
- \expandafter\def\csname simpleicon@greatlearningicon\endcsname {\simpleiconsmapfive\symbol{146}}
- \expandafter\def\csname simpleicon@greenhouseicon\endcsname {\simpleiconsmapfive\symbol{147}}
- \expandafter\def\csname simpleicon@greensockicon\endcsname {\simpleiconsmapfive\symbol{148}}
- \expandafter\def\csname simpleicon@griddotaiicon\endcsname {\simpleiconsmapfive\symbol{149}}
- \expandafter\def\csname simpleicon@gridsomeicon\endcsname {\simpleiconsmapfive\symbol{150}}
- \expandafter\def\csname simpleicon@groupmeicon\endcsname {\simpleiconsmapfive\symbol{151}}
- \expandafter\def\csname simpleicon@grouponicon\endcsname {\simpleiconsmapfive\symbol{152}}
- \expandafter\def\csname simpleicon@grubhubicon\endcsname {\simpleiconsmapfive\symbol{153}}
- \expandafter\def\csname simpleicon@grunticon\endcsname {\simpleiconsmapfive\symbol{154}}
- \expandafter\def\csname simpleicon@gskicon\endcsname {\simpleiconsmapfive\symbol{155}}
- \expandafter\def\csname simpleicon@gsmarenadotcomicon\endcsname {\simpleiconsmapfive\symbol{156}}
- \expandafter\def\csname simpleicon@gstreamericon\endcsname {\simpleiconsmapfive\symbol{157}}
- \expandafter\def\csname simpleicon@gtkicon\endcsname {\simpleiconsmapfive\symbol{158}}
- \expandafter\def\csname simpleicon@guangzhoumetroicon\endcsname {\simpleiconsmapfive\symbol{159}}
- \expandafter\def\csname simpleicon@guildedicon\endcsname {\simpleiconsmapfive\symbol{160}}
- \expandafter\def\csname simpleicon@gulpicon\endcsname {\simpleiconsmapfive\symbol{161}}
- \expandafter\def\csname simpleicon@gumroadicon\endcsname {\simpleiconsmapfive\symbol{162}}
- \expandafter\def\csname simpleicon@gumtreeicon\endcsname {\simpleiconsmapfive\symbol{163}}
- \expandafter\def\csname simpleicon@gunicornicon\endcsname {\simpleiconsmapfive\symbol{164}}
- \expandafter\def\csname simpleicon@gurobiicon\endcsname {\simpleiconsmapfive\symbol{165}}
- \expandafter\def\csname simpleicon@gustoicon\endcsname {\simpleiconsmapfive\symbol{166}}
- \expandafter\def\csname simpleicon@gutenbergicon\endcsname {\simpleiconsmapfive\symbol{167}}
- \expandafter\def\csname simpleicon@h3icon\endcsname {\simpleiconsmapfive\symbol{168}}
- \expandafter\def\csname simpleicon@habricon\endcsname {\simpleiconsmapfive\symbol{169}}
- \expandafter\def\csname simpleicon@hackadayicon\endcsname {\simpleiconsmapfive\symbol{170}}
- \expandafter\def\csname simpleicon@hackclubicon\endcsname {\simpleiconsmapfive\symbol{171}}
- \expandafter\def\csname simpleicon@hackerearthicon\endcsname {\simpleiconsmapfive\symbol{172}}
- \expandafter\def\csname simpleicon@hackernoonicon\endcsname {\simpleiconsmapfive\symbol{173}}
- \expandafter\def\csname simpleicon@hackeroneicon\endcsname {\simpleiconsmapfive\symbol{174}}
- \expandafter\def\csname simpleicon@hackerrankicon\endcsname {\simpleiconsmapfive\symbol{175}}
- \expandafter\def\csname simpleicon@hackstericon\endcsname {\simpleiconsmapfive\symbol{176}}
- \expandafter\def\csname simpleicon@hacktheboxicon\endcsname {\simpleiconsmapfive\symbol{177}}
- \expandafter\def\csname simpleicon@halicon\endcsname {\simpleiconsmapfive\symbol{178}}
- \expandafter\def\csname simpleicon@handlebarsdotjsicon\endcsname {\simpleiconsmapfive\symbol{179}}
- \expandafter\def\csname simpleicon@handmicon\endcsname {\simpleiconsmapfive\symbol{180}}
- \expandafter\def\csname simpleicon@handshakeicon\endcsname {\simpleiconsmapfive\symbol{181}}
- \expandafter\def\csname simpleicon@handshakeprotocolicon\endcsname {\simpleiconsmapfive\symbol{182}}
- \expandafter\def\csname simpleicon@happycowicon\endcsname {\simpleiconsmapfive\symbol{183}}
- \expandafter\def\csname simpleicon@harboricon\endcsname {\simpleiconsmapfive\symbol{184}}
- \expandafter\def\csname simpleicon@harmonyosicon\endcsname {\simpleiconsmapfive\symbol{185}}
- \expandafter\def\csname simpleicon@hashicorpicon\endcsname {\simpleiconsmapfive\symbol{186}}
- \expandafter\def\csname simpleicon@hashnodeicon\endcsname {\simpleiconsmapfive\symbol{187}}
- \expandafter\def\csname simpleicon@haskellicon\endcsname {\simpleiconsmapfive\symbol{188}}
- \expandafter\def\csname simpleicon@hasuraicon\endcsname {\simpleiconsmapfive\symbol{189}}
- \expandafter\def\csname simpleicon@hatenabookmarkicon\endcsname {\simpleiconsmapfive\symbol{190}}
- \expandafter\def\csname simpleicon@haveibeenpwnedicon\endcsname {\simpleiconsmapfive\symbol{191}}
- \expandafter\def\csname simpleicon@haxeicon\endcsname {\simpleiconsmapfive\symbol{192}}
- \expandafter\def\csname simpleicon@hboicon\endcsname {\simpleiconsmapfive\symbol{193}}
- \expandafter\def\csname simpleicon@hclicon\endcsname {\simpleiconsmapfive\symbol{194}}
- \expandafter\def\csname simpleicon@hdfcbankicon\endcsname {\simpleiconsmapfive\symbol{195}}
- \expandafter\def\csname simpleicon@headlessuiicon\endcsname {\simpleiconsmapfive\symbol{196}}
- \expandafter\def\csname simpleicon@headphonezoneicon\endcsname {\simpleiconsmapfive\symbol{197}}
- \expandafter\def\csname simpleicon@headspaceicon\endcsname {\simpleiconsmapfive\symbol{198}}
- \expandafter\def\csname simpleicon@hearthicon\endcsname {\simpleiconsmapfive\symbol{199}}
- \expandafter\def\csname simpleicon@hearthisdotaticon\endcsname {\simpleiconsmapfive\symbol{200}}
- \expandafter\def\csname simpleicon@hederaicon\endcsname {\simpleiconsmapfive\symbol{201}}
- \expandafter\def\csname simpleicon@heliumicon\endcsname {\simpleiconsmapfive\symbol{202}}
- \expandafter\def\csname simpleicon@hellofreshicon\endcsname {\simpleiconsmapfive\symbol{203}}
- \expandafter\def\csname simpleicon@hellyhansenicon\endcsname {\simpleiconsmapfive\symbol{204}}
- \expandafter\def\csname simpleicon@helmicon\endcsname {\simpleiconsmapfive\symbol{205}}
- \expandafter\def\csname simpleicon@helpdeskicon\endcsname {\simpleiconsmapfive\symbol{206}}
- \expandafter\def\csname simpleicon@helpscouticon\endcsname {\simpleiconsmapfive\symbol{207}}
- \expandafter\def\csname simpleicon@hepsiemlakicon\endcsname {\simpleiconsmapfive\symbol{208}}
- \expandafter\def\csname simpleicon@hereicon\endcsname {\simpleiconsmapfive\symbol{209}}
- \expandafter\def\csname simpleicon@herokuicon\endcsname {\simpleiconsmapfive\symbol{210}}
- \expandafter\def\csname simpleicon@hetznericon\endcsname {\simpleiconsmapfive\symbol{211}}
- \expandafter\def\csname simpleicon@hevyicon\endcsname {\simpleiconsmapfive\symbol{212}}
- \expandafter\def\csname simpleicon@hexleticon\endcsname {\simpleiconsmapfive\symbol{213}}
- \expandafter\def\csname simpleicon@hexoicon\endcsname {\simpleiconsmapfive\symbol{214}}
- \expandafter\def\csname simpleicon@heyicon\endcsname {\simpleiconsmapfive\symbol{215}}
- \expandafter\def\csname simpleicon@hibernateicon\endcsname {\simpleiconsmapfive\symbol{216}}
- \expandafter\def\csname simpleicon@hibobicon\endcsname {\simpleiconsmapfive\symbol{217}}
- \expandafter\def\csname simpleicon@hiltonicon\endcsname {\simpleiconsmapfive\symbol{218}}
- \expandafter\def\csname simpleicon@hiltonhotelsandresortsicon\endcsname {\simpleiconsmapfive\symbol{219}}
- \expandafter\def\csname simpleicon@hitachiicon\endcsname {\simpleiconsmapfive\symbol{220}}
- \expandafter\def\csname simpleicon@hiveicon\endcsname {\simpleiconsmapfive\symbol{221}}
- \expandafter\def\csname simpleicon@hiveblockchainicon\endcsname {\simpleiconsmapfive\symbol{222}}
- \expandafter\def\csname simpleicon@hivemqicon\endcsname {\simpleiconsmapfive\symbol{223}}
- \expandafter\def\csname simpleicon@homarricon\endcsname {\simpleiconsmapfive\symbol{224}}
- \expandafter\def\csname simpleicon@homeadvisoricon\endcsname {\simpleiconsmapfive\symbol{225}}
- \expandafter\def\csname simpleicon@homeassistanticon\endcsname {\simpleiconsmapfive\symbol{226}}
- \expandafter\def\csname simpleicon@homeassistantcommunitystoreicon\endcsname {\simpleiconsmapfive\symbol{227}}
- \expandafter\def\csname simpleicon@homebrewicon\endcsname {\simpleiconsmapfive\symbol{228}}
- \expandafter\def\csname simpleicon@homebridgeicon\endcsname {\simpleiconsmapfive\symbol{229}}
- \expandafter\def\csname simpleicon@homepageicon\endcsname {\simpleiconsmapfive\symbol{230}}
- \expandafter\def\csname simpleicon@homifyicon\endcsname {\simpleiconsmapfive\symbol{231}}
- \expandafter\def\csname simpleicon@hondaicon\endcsname {\simpleiconsmapfive\symbol{232}}
- \expandafter\def\csname simpleicon@honeyicon\endcsname {\simpleiconsmapfive\symbol{233}}
- \expandafter\def\csname simpleicon@honoicon\endcsname {\simpleiconsmapfive\symbol{234}}
- \expandafter\def\csname simpleicon@honoricon\endcsname {\simpleiconsmapfive\symbol{235}}
- \expandafter\def\csname simpleicon@hootsuiteicon\endcsname {\simpleiconsmapfive\symbol{236}}
- \expandafter\def\csname simpleicon@hoppscotchicon\endcsname {\simpleiconsmapfive\symbol{237}}
- \expandafter\def\csname simpleicon@hostingericon\endcsname {\simpleiconsmapfive\symbol{238}}
- \expandafter\def\csname simpleicon@hotelsdotcomicon\endcsname {\simpleiconsmapfive\symbol{239}}
- \expandafter\def\csname simpleicon@hotjaricon\endcsname {\simpleiconsmapfive\symbol{240}}
- \expandafter\def\csname simpleicon@hotwireicon\endcsname {\simpleiconsmapfive\symbol{241}}
- \expandafter\def\csname simpleicon@houdiniicon\endcsname {\simpleiconsmapfive\symbol{242}}
- \expandafter\def\csname simpleicon@houzzicon\endcsname {\simpleiconsmapfive\symbol{243}}
- \expandafter\def\csname simpleicon@hpicon\endcsname {\simpleiconsmapfive\symbol{244}}
- \expandafter\def\csname simpleicon@hsbcicon\endcsname {\simpleiconsmapfive\symbol{245}}
- \expandafter\def\csname simpleicon@html5icon\endcsname {\simpleiconsmapfive\symbol{246}}
- \expandafter\def\csname simpleicon@htmlacademyicon\endcsname {\simpleiconsmapfive\symbol{247}}
- \expandafter\def\csname simpleicon@htmxicon\endcsname {\simpleiconsmapfive\symbol{248}}
- \expandafter\def\csname simpleicon@htopicon\endcsname {\simpleiconsmapfive\symbol{249}}
- \expandafter\def\csname simpleicon@httpieicon\endcsname {\simpleiconsmapfive\symbol{250}}
- \expandafter\def\csname simpleicon@huaweiicon\endcsname {\simpleiconsmapfive\symbol{251}}
- \expandafter\def\csname simpleicon@hubspoticon\endcsname {\simpleiconsmapfive\symbol{252}}
- \expandafter\def\csname simpleicon@huggingfaceicon\endcsname {\simpleiconsmapfive\symbol{253}}
- \expandafter\def\csname simpleicon@hugoicon\endcsname {\simpleiconsmapfive\symbol{254}}
- \expandafter\def\csname simpleicon@humblebundleicon\endcsname {\simpleiconsmapfive\symbol{255}}
- \expandafter\def\csname simpleicon@humhubicon\endcsname {\simpleiconsmapsix\symbol{0}}
- \expandafter\def\csname simpleicon@hungryjacksicon\endcsname {\simpleiconsmapsix\symbol{1}}
- \expandafter\def\csname simpleicon@husqvarnaicon\endcsname {\simpleiconsmapsix\symbol{2}}
- \expandafter\def\csname simpleicon@hypericon\endcsname {\simpleiconsmapsix\symbol{3}}
- \expandafter\def\csname simpleicon@hyperskillicon\endcsname {\simpleiconsmapsix\symbol{4}}
- \expandafter\def\csname simpleicon@hypothesisicon\endcsname {\simpleiconsmapsix\symbol{5}}
- \expandafter\def\csname simpleicon@hyprlandicon\endcsname {\simpleiconsmapsix\symbol{6}}
- \expandafter\def\csname simpleicon@hyundaiicon\endcsname {\simpleiconsmapsix\symbol{7}}
- \expandafter\def\csname simpleicon@i18nexticon\endcsname {\simpleiconsmapsix\symbol{8}}
- \expandafter\def\csname simpleicon@i3icon\endcsname {\simpleiconsmapsix\symbol{9}}
- \expandafter\def\csname simpleicon@iataicon\endcsname {\simpleiconsmapsix\symbol{10}}
- \expandafter\def\csname simpleicon@ibeaconicon\endcsname {\simpleiconsmapsix\symbol{11}}
- \expandafter\def\csname simpleicon@iberiaicon\endcsname {\simpleiconsmapsix\symbol{12}}
- \expandafter\def\csname simpleicon@icedicon\endcsname {\simpleiconsmapsix\symbol{13}}
- \expandafter\def\csname simpleicon@icelandicon\endcsname {\simpleiconsmapsix\symbol{14}}
- \expandafter\def\csname simpleicon@icicibankicon\endcsname {\simpleiconsmapsix\symbol{15}}
- \expandafter\def\csname simpleicon@icingaicon\endcsname {\simpleiconsmapsix\symbol{16}}
- \expandafter\def\csname simpleicon@icloudicon\endcsname {\simpleiconsmapsix\symbol{17}}
- \expandafter\def\csname simpleicon@icomoonicon\endcsname {\simpleiconsmapsix\symbol{18}}
- \expandafter\def\csname simpleicon@iconicon\endcsname {\simpleiconsmapsix\symbol{19}}
- \expandafter\def\csname simpleicon@iconfindericon\endcsname {\simpleiconsmapsix\symbol{20}}
- \expandafter\def\csname simpleicon@iconifyicon\endcsname {\simpleiconsmapsix\symbol{21}}
- \expandafter\def\csname simpleicon@iconjaricon\endcsname {\simpleiconsmapsix\symbol{22}}
- \expandafter\def\csname simpleicon@icons8icon\endcsname {\simpleiconsmapsix\symbol{23}}
- \expandafter\def\csname simpleicon@icqicon\endcsname {\simpleiconsmapsix\symbol{24}}
- \expandafter\def\csname simpleicon@ieeeicon\endcsname {\simpleiconsmapsix\symbol{25}}
- \expandafter\def\csname simpleicon@ifixiticon\endcsname {\simpleiconsmapsix\symbol{26}}
- \expandafter\def\csname simpleicon@ifoodicon\endcsname {\simpleiconsmapsix\symbol{27}}
- \expandafter\def\csname simpleicon@ifttticon\endcsname {\simpleiconsmapsix\symbol{28}}
- \expandafter\def\csname simpleicon@igdbicon\endcsname {\simpleiconsmapsix\symbol{29}}
- \expandafter\def\csname simpleicon@ignicon\endcsname {\simpleiconsmapsix\symbol{30}}
- \expandafter\def\csname simpleicon@iheartradioicon\endcsname {\simpleiconsmapsix\symbol{31}}
- \expandafter\def\csname simpleicon@ikeaicon\endcsname {\simpleiconsmapsix\symbol{32}}
- \expandafter\def\csname simpleicon@iledefrancemobilitesicon\endcsname {\simpleiconsmapsix\symbol{33}}
- \expandafter\def\csname simpleicon@imagedotscicon\endcsname {\simpleiconsmapsix\symbol{34}}
- \expandafter\def\csname simpleicon@imagejicon\endcsname {\simpleiconsmapsix\symbol{35}}
- \expandafter\def\csname simpleicon@imdbicon\endcsname {\simpleiconsmapsix\symbol{36}}
- \expandafter\def\csname simpleicon@imessageicon\endcsname {\simpleiconsmapsix\symbol{37}}
- \expandafter\def\csname simpleicon@imguricon\endcsname {\simpleiconsmapsix\symbol{38}}
- \expandafter\def\csname simpleicon@immericon\endcsname {\simpleiconsmapsix\symbol{39}}
- \expandafter\def\csname simpleicon@immichicon\endcsname {\simpleiconsmapsix\symbol{40}}
- \expandafter\def\csname simpleicon@imouicon\endcsname {\simpleiconsmapsix\symbol{41}}
- \expandafter\def\csname simpleicon@improvmxicon\endcsname {\simpleiconsmapsix\symbol{42}}
- \expandafter\def\csname simpleicon@indeedicon\endcsname {\simpleiconsmapsix\symbol{43}}
- \expandafter\def\csname simpleicon@indiansuperleagueicon\endcsname {\simpleiconsmapsix\symbol{44}}
- \expandafter\def\csname simpleicon@indiehackersicon\endcsname {\simpleiconsmapsix\symbol{45}}
- \expandafter\def\csname simpleicon@indigoicon\endcsname {\simpleiconsmapsix\symbol{46}}
- \expandafter\def\csname simpleicon@inductiveautomationicon\endcsname {\simpleiconsmapsix\symbol{47}}
- \expandafter\def\csname simpleicon@inertiaicon\endcsname {\simpleiconsmapsix\symbol{48}}
- \expandafter\def\csname simpleicon@infinitiicon\endcsname {\simpleiconsmapsix\symbol{49}}
- \expandafter\def\csname simpleicon@influxdbicon\endcsname {\simpleiconsmapsix\symbol{50}}
- \expandafter\def\csname simpleicon@infomaniakicon\endcsname {\simpleiconsmapsix\symbol{51}}
- \expandafter\def\csname simpleicon@infoqicon\endcsname {\simpleiconsmapsix\symbol{52}}
- \expandafter\def\csname simpleicon@informaticaicon\endcsname {\simpleiconsmapsix\symbol{53}}
- \expandafter\def\csname simpleicon@infosysicon\endcsname {\simpleiconsmapsix\symbol{54}}
- \expandafter\def\csname simpleicon@infracosticon\endcsname {\simpleiconsmapsix\symbol{55}}
- \expandafter\def\csname simpleicon@ingressicon\endcsname {\simpleiconsmapsix\symbol{56}}
- \expandafter\def\csname simpleicon@inkdropicon\endcsname {\simpleiconsmapsix\symbol{57}}
- \expandafter\def\csname simpleicon@inkscapeicon\endcsname {\simpleiconsmapsix\symbol{58}}
- \expandafter\def\csname simpleicon@inoreadericon\endcsname {\simpleiconsmapsix\symbol{59}}
- \expandafter\def\csname simpleicon@insomniaicon\endcsname {\simpleiconsmapsix\symbol{60}}
- \expandafter\def\csname simpleicon@inspireicon\endcsname {\simpleiconsmapsix\symbol{61}}
- \expandafter\def\csname simpleicon@insta360icon\endcsname {\simpleiconsmapsix\symbol{62}}
- \expandafter\def\csname simpleicon@instacarticon\endcsname {\simpleiconsmapsix\symbol{63}}
- \expandafter\def\csname simpleicon@instagramicon\endcsname {\simpleiconsmapsix\symbol{64}}
- \expandafter\def\csname simpleicon@instapapericon\endcsname {\simpleiconsmapsix\symbol{65}}
- \expandafter\def\csname simpleicon@instatusicon\endcsname {\simpleiconsmapsix\symbol{66}}
- \expandafter\def\csname simpleicon@instructablesicon\endcsname {\simpleiconsmapsix\symbol{67}}
- \expandafter\def\csname simpleicon@instructureicon\endcsname {\simpleiconsmapsix\symbol{68}}
- \expandafter\def\csname simpleicon@intelicon\endcsname {\simpleiconsmapsix\symbol{69}}
- \expandafter\def\csname simpleicon@intellijideaicon\endcsname {\simpleiconsmapsix\symbol{70}}
- \expandafter\def\csname simpleicon@interactiondesignfoundationicon\endcsname {\simpleiconsmapsix\symbol{71}}
- \expandafter\def\csname simpleicon@interactjsicon\endcsname {\simpleiconsmapsix\symbol{72}}
- \expandafter\def\csname simpleicon@interbaseicon\endcsname {\simpleiconsmapsix\symbol{73}}
- \expandafter\def\csname simpleicon@intercomicon\endcsname {\simpleiconsmapsix\symbol{74}}
- \expandafter\def\csname simpleicon@intermarcheicon\endcsname {\simpleiconsmapsix\symbol{75}}
- \expandafter\def\csname simpleicon@internetarchiveicon\endcsname {\simpleiconsmapsix\symbol{76}}
- \expandafter\def\csname simpleicon@internetcomputericon\endcsname {\simpleiconsmapsix\symbol{77}}
- \expandafter\def\csname simpleicon@intigritiicon\endcsname {\simpleiconsmapsix\symbol{78}}
- \expandafter\def\csname simpleicon@intuiticon\endcsname {\simpleiconsmapsix\symbol{79}}
- \expandafter\def\csname simpleicon@invisionicon\endcsname {\simpleiconsmapsix\symbol{80}}
- \expandafter\def\csname simpleicon@invoiceninjaicon\endcsname {\simpleiconsmapsix\symbol{81}}
- \expandafter\def\csname simpleicon@iobrokericon\endcsname {\simpleiconsmapsix\symbol{82}}
- \expandafter\def\csname simpleicon@ionicicon\endcsname {\simpleiconsmapsix\symbol{83}}
- \expandafter\def\csname simpleicon@ionosicon\endcsname {\simpleiconsmapsix\symbol{84}}
- \expandafter\def\csname simpleicon@iosicon\endcsname {\simpleiconsmapsix\symbol{85}}
- \expandafter\def\csname simpleicon@iotaicon\endcsname {\simpleiconsmapsix\symbol{86}}
- \expandafter\def\csname simpleicon@ipfsicon\endcsname {\simpleiconsmapsix\symbol{87}}
- \expandafter\def\csname simpleicon@irisicon\endcsname {\simpleiconsmapsix\symbol{88}}
- \expandafter\def\csname simpleicon@iroboticon\endcsname {\simpleiconsmapsix\symbol{89}}
- \expandafter\def\csname simpleicon@isc2icon\endcsname {\simpleiconsmapsix\symbol{90}}
- \expandafter\def\csname simpleicon@issuuicon\endcsname {\simpleiconsmapsix\symbol{91}}
- \expandafter\def\csname simpleicon@istioicon\endcsname {\simpleiconsmapsix\symbol{92}}
- \expandafter\def\csname simpleicon@itchdotioicon\endcsname {\simpleiconsmapsix\symbol{93}}
- \expandafter\def\csname simpleicon@iterm2icon\endcsname {\simpleiconsmapsix\symbol{94}}
- \expandafter\def\csname simpleicon@itunesicon\endcsname {\simpleiconsmapsix\symbol{95}}
- \expandafter\def\csname simpleicon@itvxicon\endcsname {\simpleiconsmapsix\symbol{96}}
- \expandafter\def\csname simpleicon@ivecoicon\endcsname {\simpleiconsmapsix\symbol{97}}
- \expandafter\def\csname simpleicon@jabbericon\endcsname {\simpleiconsmapsix\symbol{98}}
- \expandafter\def\csname simpleicon@jaegericon\endcsname {\simpleiconsmapsix\symbol{99}}
- \expandafter\def\csname simpleicon@jaguaricon\endcsname {\simpleiconsmapsix\symbol{100}}
- \expandafter\def\csname simpleicon@jamboardicon\endcsname {\simpleiconsmapsix\symbol{101}}
- \expandafter\def\csname simpleicon@jamesonicon\endcsname {\simpleiconsmapsix\symbol{102}}
- \expandafter\def\csname simpleicon@jamstackicon\endcsname {\simpleiconsmapsix\symbol{103}}
- \expandafter\def\csname simpleicon@jasmineicon\endcsname {\simpleiconsmapsix\symbol{104}}
- \expandafter\def\csname simpleicon@javascripticon\endcsname {\simpleiconsmapsix\symbol{105}}
- \expandafter\def\csname simpleicon@jblicon\endcsname {\simpleiconsmapsix\symbol{106}}
- \expandafter\def\csname simpleicon@jcbicon\endcsname {\simpleiconsmapsix\symbol{107}}
- \expandafter\def\csname simpleicon@jeepicon\endcsname {\simpleiconsmapsix\symbol{108}}
- \expandafter\def\csname simpleicon@jekyllicon\endcsname {\simpleiconsmapsix\symbol{109}}
- \expandafter\def\csname simpleicon@jellyfinicon\endcsname {\simpleiconsmapsix\symbol{110}}
- \expandafter\def\csname simpleicon@jenkinsicon\endcsname {\simpleiconsmapsix\symbol{111}}
- \expandafter\def\csname simpleicon@jesticon\endcsname {\simpleiconsmapsix\symbol{112}}
- \expandafter\def\csname simpleicon@jeticon\endcsname {\simpleiconsmapsix\symbol{113}}
- \expandafter\def\csname simpleicon@jetblueicon\endcsname {\simpleiconsmapsix\symbol{114}}
- \expandafter\def\csname simpleicon@jetbrainsicon\endcsname {\simpleiconsmapsix\symbol{115}}
- \expandafter\def\csname simpleicon@jetpackcomposeicon\endcsname {\simpleiconsmapsix\symbol{116}}
- \expandafter\def\csname simpleicon@jfrogicon\endcsname {\simpleiconsmapsix\symbol{117}}
- \expandafter\def\csname simpleicon@jfrogpipelinesicon\endcsname {\simpleiconsmapsix\symbol{118}}
- \expandafter\def\csname simpleicon@jhipstericon\endcsname {\simpleiconsmapsix\symbol{119}}
- \expandafter\def\csname simpleicon@jinjaicon\endcsname {\simpleiconsmapsix\symbol{120}}
- \expandafter\def\csname simpleicon@jiraicon\endcsname {\simpleiconsmapsix\symbol{121}}
- \expandafter\def\csname simpleicon@jirasoftwareicon\endcsname {\simpleiconsmapsix\symbol{122}}
- \expandafter\def\csname simpleicon@jitpackicon\endcsname {\simpleiconsmapsix\symbol{123}}
- \expandafter\def\csname simpleicon@jitsiicon\endcsname {\simpleiconsmapsix\symbol{124}}
- \expandafter\def\csname simpleicon@johndeereicon\endcsname {\simpleiconsmapsix\symbol{125}}
- \expandafter\def\csname simpleicon@joomlaicon\endcsname {\simpleiconsmapsix\symbol{126}}
- \expandafter\def\csname simpleicon@joplinicon\endcsname {\simpleiconsmapsix\symbol{127}}
- \expandafter\def\csname simpleicon@jordanicon\endcsname {\simpleiconsmapsix\symbol{128}}
- \expandafter\def\csname simpleicon@jouavicon\endcsname {\simpleiconsmapsix\symbol{129}}
- \expandafter\def\csname simpleicon@jovianicon\endcsname {\simpleiconsmapsix\symbol{130}}
- \expandafter\def\csname simpleicon@jpegicon\endcsname {\simpleiconsmapsix\symbol{131}}
- \expandafter\def\csname simpleicon@jqueryicon\endcsname {\simpleiconsmapsix\symbol{132}}
- \expandafter\def\csname simpleicon@jrgroupicon\endcsname {\simpleiconsmapsix\symbol{133}}
- \expandafter\def\csname simpleicon@jsdelivricon\endcsname {\simpleiconsmapsix\symbol{134}}
- \expandafter\def\csname simpleicon@jsfiddleicon\endcsname {\simpleiconsmapsix\symbol{135}}
- \expandafter\def\csname simpleicon@jsonicon\endcsname {\simpleiconsmapsix\symbol{136}}
- \expandafter\def\csname simpleicon@jsonwebtokensicon\endcsname {\simpleiconsmapsix\symbol{137}}
- \expandafter\def\csname simpleicon@jsricon\endcsname {\simpleiconsmapsix\symbol{138}}
- \expandafter\def\csname simpleicon@jssicon\endcsname {\simpleiconsmapsix\symbol{139}}
- \expandafter\def\csname simpleicon@juceicon\endcsname {\simpleiconsmapsix\symbol{140}}
- \expandafter\def\csname simpleicon@juejinicon\endcsname {\simpleiconsmapsix\symbol{141}}
- \expandafter\def\csname simpleicon@jukeicon\endcsname {\simpleiconsmapsix\symbol{142}}
- \expandafter\def\csname simpleicon@juliaicon\endcsname {\simpleiconsmapsix\symbol{143}}
- \expandafter\def\csname simpleicon@junipernetworksicon\endcsname {\simpleiconsmapsix\symbol{144}}
- \expandafter\def\csname simpleicon@junit5icon\endcsname {\simpleiconsmapsix\symbol{145}}
- \expandafter\def\csname simpleicon@jupytericon\endcsname {\simpleiconsmapsix\symbol{146}}
- \expandafter\def\csname simpleicon@justeaticon\endcsname {\simpleiconsmapsix\symbol{147}}
- \expandafter\def\csname simpleicon@justgivingicon\endcsname {\simpleiconsmapsix\symbol{148}}
- \expandafter\def\csname simpleicon@k3sicon\endcsname {\simpleiconsmapsix\symbol{149}}
- \expandafter\def\csname simpleicon@k6icon\endcsname {\simpleiconsmapsix\symbol{150}}
- \expandafter\def\csname simpleicon@kaggleicon\endcsname {\simpleiconsmapsix\symbol{151}}
- \expandafter\def\csname simpleicon@kagiicon\endcsname {\simpleiconsmapsix\symbol{152}}
- \expandafter\def\csname simpleicon@kahooticon\endcsname {\simpleiconsmapsix\symbol{153}}
- \expandafter\def\csname simpleicon@kaiosicon\endcsname {\simpleiconsmapsix\symbol{154}}
- \expandafter\def\csname simpleicon@kakaoicon\endcsname {\simpleiconsmapsix\symbol{155}}
- \expandafter\def\csname simpleicon@kakaotalkicon\endcsname {\simpleiconsmapsix\symbol{156}}
- \expandafter\def\csname simpleicon@kalilinuxicon\endcsname {\simpleiconsmapsix\symbol{157}}
- \expandafter\def\csname simpleicon@kamailioicon\endcsname {\simpleiconsmapsix\symbol{158}}
- \expandafter\def\csname simpleicon@kanikoicon\endcsname {\simpleiconsmapsix\symbol{159}}
- \expandafter\def\csname simpleicon@karlsruherverkehrsverbundicon\endcsname {\simpleiconsmapsix\symbol{160}}
- \expandafter\def\csname simpleicon@kasasmarticon\endcsname {\simpleiconsmapsix\symbol{161}}
- \expandafter\def\csname simpleicon@kashflowicon\endcsname {\simpleiconsmapsix\symbol{162}}
- \expandafter\def\csname simpleicon@kasperskyicon\endcsname {\simpleiconsmapsix\symbol{163}}
- \expandafter\def\csname simpleicon@katacodaicon\endcsname {\simpleiconsmapsix\symbol{164}}
- \expandafter\def\csname simpleicon@katanaicon\endcsname {\simpleiconsmapsix\symbol{165}}
- \expandafter\def\csname simpleicon@kauflandicon\endcsname {\simpleiconsmapsix\symbol{166}}
- \expandafter\def\csname simpleicon@kdeicon\endcsname {\simpleiconsmapsix\symbol{167}}
- \expandafter\def\csname simpleicon@kdenliveicon\endcsname {\simpleiconsmapsix\symbol{168}}
- \expandafter\def\csname simpleicon@kedroicon\endcsname {\simpleiconsmapsix\symbol{169}}
- \expandafter\def\csname simpleicon@keeneticicon\endcsname {\simpleiconsmapsix\symbol{170}}
- \expandafter\def\csname simpleicon@keepachangelogicon\endcsname {\simpleiconsmapsix\symbol{171}}
- \expandafter\def\csname simpleicon@keepassxcicon\endcsname {\simpleiconsmapsix\symbol{172}}
- \expandafter\def\csname simpleicon@kenticoicon\endcsname {\simpleiconsmapsix\symbol{173}}
- \expandafter\def\csname simpleicon@kerasicon\endcsname {\simpleiconsmapsix\symbol{174}}
- \expandafter\def\csname simpleicon@keybaseicon\endcsname {\simpleiconsmapsix\symbol{175}}
- \expandafter\def\csname simpleicon@keycdnicon\endcsname {\simpleiconsmapsix\symbol{176}}
- \expandafter\def\csname simpleicon@keycloakicon\endcsname {\simpleiconsmapsix\symbol{177}}
- \expandafter\def\csname simpleicon@keystoneicon\endcsname {\simpleiconsmapsix\symbol{178}}
- \expandafter\def\csname simpleicon@kfcicon\endcsname {\simpleiconsmapsix\symbol{179}}
- \expandafter\def\csname simpleicon@khanacademyicon\endcsname {\simpleiconsmapsix\symbol{180}}
- \expandafter\def\csname simpleicon@khronosgroupicon\endcsname {\simpleiconsmapsix\symbol{181}}
- \expandafter\def\csname simpleicon@kiaicon\endcsname {\simpleiconsmapsix\symbol{182}}
- \expandafter\def\csname simpleicon@kibanaicon\endcsname {\simpleiconsmapsix\symbol{183}}
- \expandafter\def\csname simpleicon@kicadicon\endcsname {\simpleiconsmapsix\symbol{184}}
- \expandafter\def\csname simpleicon@kickicon\endcsname {\simpleiconsmapsix\symbol{185}}
- \expandafter\def\csname simpleicon@kickstartericon\endcsname {\simpleiconsmapsix\symbol{186}}
- \expandafter\def\csname simpleicon@kikicon\endcsname {\simpleiconsmapsix\symbol{187}}
- \expandafter\def\csname simpleicon@kingstontechnologyicon\endcsname {\simpleiconsmapsix\symbol{188}}
- \expandafter\def\csname simpleicon@kinopoiskicon\endcsname {\simpleiconsmapsix\symbol{189}}
- \expandafter\def\csname simpleicon@kinstaicon\endcsname {\simpleiconsmapsix\symbol{190}}
- \expandafter\def\csname simpleicon@kirbyicon\endcsname {\simpleiconsmapsix\symbol{191}}
- \expandafter\def\csname simpleicon@kiticon\endcsname {\simpleiconsmapsix\symbol{192}}
- \expandafter\def\csname simpleicon@kitsuicon\endcsname {\simpleiconsmapsix\symbol{193}}
- \expandafter\def\csname simpleicon@klarnaicon\endcsname {\simpleiconsmapsix\symbol{194}}
- \expandafter\def\csname simpleicon@klmicon\endcsname {\simpleiconsmapsix\symbol{195}}
- \expandafter\def\csname simpleicon@klookicon\endcsname {\simpleiconsmapsix\symbol{196}}
- \expandafter\def\csname simpleicon@knativeicon\endcsname {\simpleiconsmapsix\symbol{197}}
- \expandafter\def\csname simpleicon@knexdotjsicon\endcsname {\simpleiconsmapsix\symbol{198}}
- \expandafter\def\csname simpleicon@knimeicon\endcsname {\simpleiconsmapsix\symbol{199}}
- \expandafter\def\csname simpleicon@knipicon\endcsname {\simpleiconsmapsix\symbol{200}}
- \expandafter\def\csname simpleicon@knowledgebaseicon\endcsname {\simpleiconsmapsix\symbol{201}}
- \expandafter\def\csname simpleicon@knownicon\endcsname {\simpleiconsmapsix\symbol{202}}
- \expandafter\def\csname simpleicon@koaicon\endcsname {\simpleiconsmapsix\symbol{203}}
- \expandafter\def\csname simpleicon@kocicon\endcsname {\simpleiconsmapsix\symbol{204}}
- \expandafter\def\csname simpleicon@kodakicon\endcsname {\simpleiconsmapsix\symbol{205}}
- \expandafter\def\csname simpleicon@kodiicon\endcsname {\simpleiconsmapsix\symbol{206}}
- \expandafter\def\csname simpleicon@koenigseggicon\endcsname {\simpleiconsmapsix\symbol{207}}
- \expandafter\def\csname simpleicon@kofaxicon\endcsname {\simpleiconsmapsix\symbol{208}}
- \expandafter\def\csname simpleicon@kofiicon\endcsname {\simpleiconsmapsix\symbol{209}}
- \expandafter\def\csname simpleicon@komooticon\endcsname {\simpleiconsmapsix\symbol{210}}
- \expandafter\def\csname simpleicon@konamiicon\endcsname {\simpleiconsmapsix\symbol{211}}
- \expandafter\def\csname simpleicon@kongicon\endcsname {\simpleiconsmapsix\symbol{212}}
- \expandafter\def\csname simpleicon@kongregateicon\endcsname {\simpleiconsmapsix\symbol{213}}
- \expandafter\def\csname simpleicon@konvaicon\endcsname {\simpleiconsmapsix\symbol{214}}
- \expandafter\def\csname simpleicon@kotlinicon\endcsname {\simpleiconsmapsix\symbol{215}}
- \expandafter\def\csname simpleicon@koyebicon\endcsname {\simpleiconsmapsix\symbol{216}}
- \expandafter\def\csname simpleicon@kritaicon\endcsname {\simpleiconsmapsix\symbol{217}}
- \expandafter\def\csname simpleicon@ktmicon\endcsname {\simpleiconsmapsix\symbol{218}}
- \expandafter\def\csname simpleicon@ktoricon\endcsname {\simpleiconsmapsix\symbol{219}}
- \expandafter\def\csname simpleicon@kuaishouicon\endcsname {\simpleiconsmapsix\symbol{220}}
- \expandafter\def\csname simpleicon@kubernetesicon\endcsname {\simpleiconsmapsix\symbol{221}}
- \expandafter\def\csname simpleicon@kubuntuicon\endcsname {\simpleiconsmapsix\symbol{222}}
- \expandafter\def\csname simpleicon@kucoinicon\endcsname {\simpleiconsmapsix\symbol{223}}
- \expandafter\def\csname simpleicon@kumaicon\endcsname {\simpleiconsmapsix\symbol{224}}
- \expandafter\def\csname simpleicon@kununuicon\endcsname {\simpleiconsmapsix\symbol{225}}
- \expandafter\def\csname simpleicon@kuulaicon\endcsname {\simpleiconsmapsix\symbol{226}}
- \expandafter\def\csname simpleicon@kxicon\endcsname {\simpleiconsmapsix\symbol{227}}
- \expandafter\def\csname simpleicon@kyoceraicon\endcsname {\simpleiconsmapsix\symbol{228}}
- \expandafter\def\csname simpleicon@labviewicon\endcsname {\simpleiconsmapsix\symbol{229}}
- \expandafter\def\csname simpleicon@ladaicon\endcsname {\simpleiconsmapsix\symbol{230}}
- \expandafter\def\csname simpleicon@lamborghiniicon\endcsname {\simpleiconsmapsix\symbol{231}}
- \expandafter\def\csname simpleicon@landrovericon\endcsname {\simpleiconsmapsix\symbol{232}}
- \expandafter\def\csname simpleicon@langchainicon\endcsname {\simpleiconsmapsix\symbol{233}}
- \expandafter\def\csname simpleicon@languagetoolicon\endcsname {\simpleiconsmapsix\symbol{234}}
- \expandafter\def\csname simpleicon@lapceicon\endcsname {\simpleiconsmapsix\symbol{235}}
- \expandafter\def\csname simpleicon@laragonicon\endcsname {\simpleiconsmapsix\symbol{236}}
- \expandafter\def\csname simpleicon@laravelicon\endcsname {\simpleiconsmapsix\symbol{237}}
- \expandafter\def\csname simpleicon@laravelhorizonicon\endcsname {\simpleiconsmapsix\symbol{238}}
- \expandafter\def\csname simpleicon@laravelnovaicon\endcsname {\simpleiconsmapsix\symbol{239}}
- \expandafter\def\csname simpleicon@lastdotfmicon\endcsname {\simpleiconsmapsix\symbol{240}}
- \expandafter\def\csname simpleicon@lastpassicon\endcsname {\simpleiconsmapsix\symbol{241}}
- \expandafter\def\csname simpleicon@latexicon\endcsname {\simpleiconsmapsix\symbol{242}}
- \expandafter\def\csname simpleicon@launchpadicon\endcsname {\simpleiconsmapsix\symbol{243}}
- \expandafter\def\csname simpleicon@lazarusicon\endcsname {\simpleiconsmapsix\symbol{244}}
- \expandafter\def\csname simpleicon@lazyvimicon\endcsname {\simpleiconsmapsix\symbol{245}}
- \expandafter\def\csname simpleicon@lbryicon\endcsname {\simpleiconsmapsix\symbol{246}}
- \expandafter\def\csname simpleicon@leaderpriceicon\endcsname {\simpleiconsmapsix\symbol{247}}
- \expandafter\def\csname simpleicon@leafleticon\endcsname {\simpleiconsmapsix\symbol{248}}
- \expandafter\def\csname simpleicon@leagueoflegendsicon\endcsname {\simpleiconsmapsix\symbol{249}}
- \expandafter\def\csname simpleicon@leanpubicon\endcsname {\simpleiconsmapsix\symbol{250}}
- \expandafter\def\csname simpleicon@leetcodeicon\endcsname {\simpleiconsmapsix\symbol{251}}
- \expandafter\def\csname simpleicon@lefthookicon\endcsname {\simpleiconsmapsix\symbol{252}}
- \expandafter\def\csname simpleicon@legacygamesicon\endcsname {\simpleiconsmapsix\symbol{253}}
- \expandafter\def\csname simpleicon@leicaicon\endcsname {\simpleiconsmapsix\symbol{254}}
- \expandafter\def\csname simpleicon@lemmyicon\endcsname {\simpleiconsmapsix\symbol{255}}
- \expandafter\def\csname simpleicon@lemonsqueezyicon\endcsname {\simpleiconsmapseven\symbol{0}}
- \expandafter\def\csname simpleicon@lenovoicon\endcsname {\simpleiconsmapseven\symbol{1}}
- \expandafter\def\csname simpleicon@lensicon\endcsname {\simpleiconsmapseven\symbol{2}}
- \expandafter\def\csname simpleicon@leptosicon\endcsname {\simpleiconsmapseven\symbol{3}}
- \expandafter\def\csname simpleicon@lequipeicon\endcsname {\simpleiconsmapseven\symbol{4}}
- \expandafter\def\csname simpleicon@lernaicon\endcsname {\simpleiconsmapseven\symbol{5}}
- \expandafter\def\csname simpleicon@leroymerlinicon\endcsname {\simpleiconsmapseven\symbol{6}}
- \expandafter\def\csname simpleicon@leslibrairesicon\endcsname {\simpleiconsmapseven\symbol{7}}
- \expandafter\def\csname simpleicon@lessicon\endcsname {\simpleiconsmapseven\symbol{8}}
- \expandafter\def\csname simpleicon@letsencrypticon\endcsname {\simpleiconsmapseven\symbol{9}}
- \expandafter\def\csname simpleicon@letterboxdicon\endcsname {\simpleiconsmapseven\symbol{10}}
- \expandafter\def\csname simpleicon@levelsdotfyiicon\endcsname {\simpleiconsmapseven\symbol{11}}
- \expandafter\def\csname simpleicon@lgicon\endcsname {\simpleiconsmapseven\symbol{12}}
- \expandafter\def\csname simpleicon@liberadotchaticon\endcsname {\simpleiconsmapseven\symbol{13}}
- \expandafter\def\csname simpleicon@liberapayicon\endcsname {\simpleiconsmapseven\symbol{14}}
- \expandafter\def\csname simpleicon@librariesdotioicon\endcsname {\simpleiconsmapseven\symbol{15}}
- \expandafter\def\csname simpleicon@librarythingicon\endcsname {\simpleiconsmapseven\symbol{16}}
- \expandafter\def\csname simpleicon@libreofficeicon\endcsname {\simpleiconsmapseven\symbol{17}}
- \expandafter\def\csname simpleicon@libreofficebaseicon\endcsname {\simpleiconsmapseven\symbol{18}}
- \expandafter\def\csname simpleicon@libreofficecalcicon\endcsname {\simpleiconsmapseven\symbol{19}}
- \expandafter\def\csname simpleicon@libreofficedrawicon\endcsname {\simpleiconsmapseven\symbol{20}}
- \expandafter\def\csname simpleicon@libreofficeimpressicon\endcsname {\simpleiconsmapseven\symbol{21}}
- \expandafter\def\csname simpleicon@libreofficemathicon\endcsname {\simpleiconsmapseven\symbol{22}}
- \expandafter\def\csname simpleicon@libreofficewritericon\endcsname {\simpleiconsmapseven\symbol{23}}
- \expandafter\def\csname simpleicon@librewolficon\endcsname {\simpleiconsmapseven\symbol{24}}
- \expandafter\def\csname simpleicon@libuvicon\endcsname {\simpleiconsmapseven\symbol{25}}
- \expandafter\def\csname simpleicon@lichessicon\endcsname {\simpleiconsmapseven\symbol{26}}
- \expandafter\def\csname simpleicon@lidlicon\endcsname {\simpleiconsmapseven\symbol{27}}
- \expandafter\def\csname simpleicon@lifxicon\endcsname {\simpleiconsmapseven\symbol{28}}
- \expandafter\def\csname simpleicon@lightburnicon\endcsname {\simpleiconsmapseven\symbol{29}}
- \expandafter\def\csname simpleicon@lighthouseicon\endcsname {\simpleiconsmapseven\symbol{30}}
- \expandafter\def\csname simpleicon@lightningicon\endcsname {\simpleiconsmapseven\symbol{31}}
- \expandafter\def\csname simpleicon@limesurveyicon\endcsname {\simpleiconsmapseven\symbol{32}}
- \expandafter\def\csname simpleicon@lineicon\endcsname {\simpleiconsmapseven\symbol{33}}
- \expandafter\def\csname simpleicon@lineageosicon\endcsname {\simpleiconsmapseven\symbol{34}}
- \expandafter\def\csname simpleicon@linearicon\endcsname {\simpleiconsmapseven\symbol{35}}
- \expandafter\def\csname simpleicon@liningicon\endcsname {\simpleiconsmapseven\symbol{36}}
- \expandafter\def\csname simpleicon@linkedinicon\endcsname {\simpleiconsmapseven\symbol{37}}
- \expandafter\def\csname simpleicon@linkerdicon\endcsname {\simpleiconsmapseven\symbol{38}}
- \expandafter\def\csname simpleicon@linkfireicon\endcsname {\simpleiconsmapseven\symbol{39}}
- \expandafter\def\csname simpleicon@linksysicon\endcsname {\simpleiconsmapseven\symbol{40}}
- \expandafter\def\csname simpleicon@linktreeicon\endcsname {\simpleiconsmapseven\symbol{41}}
- \expandafter\def\csname simpleicon@lintcodeicon\endcsname {\simpleiconsmapseven\symbol{42}}
- \expandafter\def\csname simpleicon@linuxicon\endcsname {\simpleiconsmapseven\symbol{43}}
- \expandafter\def\csname simpleicon@linuxcontainersicon\endcsname {\simpleiconsmapseven\symbol{44}}
- \expandafter\def\csname simpleicon@linuxfoundationicon\endcsname {\simpleiconsmapseven\symbol{45}}
- \expandafter\def\csname simpleicon@linuxminticon\endcsname {\simpleiconsmapseven\symbol{46}}
- \expandafter\def\csname simpleicon@linuxprofessionalinstituteicon\endcsname {\simpleiconsmapseven\symbol{47}}
- \expandafter\def\csname simpleicon@linuxservericon\endcsname {\simpleiconsmapseven\symbol{48}}
- \expandafter\def\csname simpleicon@lionairicon\endcsname {\simpleiconsmapseven\symbol{49}}
- \expandafter\def\csname simpleicon@liquibaseicon\endcsname {\simpleiconsmapseven\symbol{50}}
- \expandafter\def\csname simpleicon@listmonkicon\endcsname {\simpleiconsmapseven\symbol{51}}
- \expandafter\def\csname simpleicon@liticon\endcsname {\simpleiconsmapseven\symbol{52}}
- \expandafter\def\csname simpleicon@litecoinicon\endcsname {\simpleiconsmapseven\symbol{53}}
- \expandafter\def\csname simpleicon@literalicon\endcsname {\simpleiconsmapseven\symbol{54}}
- \expandafter\def\csname simpleicon@litiengineicon\endcsname {\simpleiconsmapseven\symbol{55}}
- \expandafter\def\csname simpleicon@livechaticon\endcsname {\simpleiconsmapseven\symbol{56}}
- \expandafter\def\csname simpleicon@livejournalicon\endcsname {\simpleiconsmapseven\symbol{57}}
- \expandafter\def\csname simpleicon@livewireicon\endcsname {\simpleiconsmapseven\symbol{58}}
- \expandafter\def\csname simpleicon@llvmicon\endcsname {\simpleiconsmapseven\symbol{59}}
- \expandafter\def\csname simpleicon@lmmsicon\endcsname {\simpleiconsmapseven\symbol{60}}
- \expandafter\def\csname simpleicon@lobstersicon\endcsname {\simpleiconsmapseven\symbol{61}}
- \expandafter\def\csname simpleicon@localicon\endcsname {\simpleiconsmapseven\symbol{62}}
- \expandafter\def\csname simpleicon@lodashicon\endcsname {\simpleiconsmapseven\symbol{63}}
- \expandafter\def\csname simpleicon@logitechicon\endcsname {\simpleiconsmapseven\symbol{64}}
- \expandafter\def\csname simpleicon@logitechgicon\endcsname {\simpleiconsmapseven\symbol{65}}
- \expandafter\def\csname simpleicon@logmeinicon\endcsname {\simpleiconsmapseven\symbol{66}}
- \expandafter\def\csname simpleicon@logseqicon\endcsname {\simpleiconsmapseven\symbol{67}}
- \expandafter\def\csname simpleicon@logstashicon\endcsname {\simpleiconsmapseven\symbol{68}}
- \expandafter\def\csname simpleicon@lookericon\endcsname {\simpleiconsmapseven\symbol{69}}
- \expandafter\def\csname simpleicon@loomicon\endcsname {\simpleiconsmapseven\symbol{70}}
- \expandafter\def\csname simpleicon@loopicon\endcsname {\simpleiconsmapseven\symbol{71}}
- \expandafter\def\csname simpleicon@loopbackicon\endcsname {\simpleiconsmapseven\symbol{72}}
- \expandafter\def\csname simpleicon@lootcrateicon\endcsname {\simpleiconsmapseven\symbol{73}}
- \expandafter\def\csname simpleicon@lospecicon\endcsname {\simpleiconsmapseven\symbol{74}}
- \expandafter\def\csname simpleicon@lotpolishairlinesicon\endcsname {\simpleiconsmapseven\symbol{75}}
- \expandafter\def\csname simpleicon@ltspiceicon\endcsname {\simpleiconsmapseven\symbol{76}}
- \expandafter\def\csname simpleicon@luaicon\endcsname {\simpleiconsmapseven\symbol{77}}
- \expandafter\def\csname simpleicon@lubuntuicon\endcsname {\simpleiconsmapseven\symbol{78}}
- \expandafter\def\csname simpleicon@luciaicon\endcsname {\simpleiconsmapseven\symbol{79}}
- \expandafter\def\csname simpleicon@lucidicon\endcsname {\simpleiconsmapseven\symbol{80}}
- \expandafter\def\csname simpleicon@ludwigicon\endcsname {\simpleiconsmapseven\symbol{81}}
- \expandafter\def\csname simpleicon@lufthansaicon\endcsname {\simpleiconsmapseven\symbol{82}}
- \expandafter\def\csname simpleicon@lumenicon\endcsname {\simpleiconsmapseven\symbol{83}}
- \expandafter\def\csname simpleicon@lunacyicon\endcsname {\simpleiconsmapseven\symbol{84}}
- \expandafter\def\csname simpleicon@lutrisicon\endcsname {\simpleiconsmapseven\symbol{85}}
- \expandafter\def\csname simpleicon@lydiaicon\endcsname {\simpleiconsmapseven\symbol{86}}
- \expandafter\def\csname simpleicon@lyfticon\endcsname {\simpleiconsmapseven\symbol{87}}
- \expandafter\def\csname simpleicon@maasicon\endcsname {\simpleiconsmapseven\symbol{88}}
- \expandafter\def\csname simpleicon@macosicon\endcsname {\simpleiconsmapseven\symbol{89}}
- \expandafter\def\csname simpleicon@macpawicon\endcsname {\simpleiconsmapseven\symbol{90}}
- \expandafter\def\csname simpleicon@macysicon\endcsname {\simpleiconsmapseven\symbol{91}}
- \expandafter\def\csname simpleicon@magasinsuicon\endcsname {\simpleiconsmapseven\symbol{92}}
- \expandafter\def\csname simpleicon@magentoicon\endcsname {\simpleiconsmapseven\symbol{93}}
- \expandafter\def\csname simpleicon@magicicon\endcsname {\simpleiconsmapseven\symbol{94}}
- \expandafter\def\csname simpleicon@magiskicon\endcsname {\simpleiconsmapseven\symbol{95}}
- \expandafter\def\csname simpleicon@mahindraicon\endcsname {\simpleiconsmapseven\symbol{96}}
- \expandafter\def\csname simpleicon@mailchimpicon\endcsname {\simpleiconsmapseven\symbol{97}}
- \expandafter\def\csname simpleicon@maildotcomicon\endcsname {\simpleiconsmapseven\symbol{98}}
- \expandafter\def\csname simpleicon@maildotruicon\endcsname {\simpleiconsmapseven\symbol{99}}
- \expandafter\def\csname simpleicon@mailgunicon\endcsname {\simpleiconsmapseven\symbol{100}}
- \expandafter\def\csname simpleicon@mailtrapicon\endcsname {\simpleiconsmapseven\symbol{101}}
- \expandafter\def\csname simpleicon@mainwpicon\endcsname {\simpleiconsmapseven\symbol{102}}
- \expandafter\def\csname simpleicon@majorleaguehackingicon\endcsname {\simpleiconsmapseven\symbol{103}}
- \expandafter\def\csname simpleicon@makeicon\endcsname {\simpleiconsmapseven\symbol{104}}
- \expandafter\def\csname simpleicon@makerboticon\endcsname {\simpleiconsmapseven\symbol{105}}
- \expandafter\def\csname simpleicon@malticon\endcsname {\simpleiconsmapseven\symbol{106}}
- \expandafter\def\csname simpleicon@malwarebytesicon\endcsname {\simpleiconsmapseven\symbol{107}}
- \expandafter\def\csname simpleicon@mambauiicon\endcsname {\simpleiconsmapseven\symbol{108}}
- \expandafter\def\csname simpleicon@mampicon\endcsname {\simpleiconsmapseven\symbol{109}}
- \expandafter\def\csname simpleicon@manicon\endcsname {\simpleiconsmapseven\symbol{110}}
- \expandafter\def\csname simpleicon@manageiqicon\endcsname {\simpleiconsmapseven\symbol{111}}
- \expandafter\def\csname simpleicon@manjaroicon\endcsname {\simpleiconsmapseven\symbol{112}}
- \expandafter\def\csname simpleicon@mantineicon\endcsname {\simpleiconsmapseven\symbol{113}}
- \expandafter\def\csname simpleicon@mapboxicon\endcsname {\simpleiconsmapseven\symbol{114}}
- \expandafter\def\csname simpleicon@maplibreicon\endcsname {\simpleiconsmapseven\symbol{115}}
- \expandafter\def\csname simpleicon@mariadbicon\endcsname {\simpleiconsmapseven\symbol{116}}
- \expandafter\def\csname simpleicon@mariadbfoundationicon\endcsname {\simpleiconsmapseven\symbol{117}}
- \expandafter\def\csname simpleicon@markdownicon\endcsname {\simpleiconsmapseven\symbol{118}}
- \expandafter\def\csname simpleicon@marketoicon\endcsname {\simpleiconsmapseven\symbol{119}}
- \expandafter\def\csname simpleicon@markoicon\endcsname {\simpleiconsmapseven\symbol{120}}
- \expandafter\def\csname simpleicon@marriotticon\endcsname {\simpleiconsmapseven\symbol{121}}
- \expandafter\def\csname simpleicon@marvelappicon\endcsname {\simpleiconsmapseven\symbol{122}}
- \expandafter\def\csname simpleicon@maseratiicon\endcsname {\simpleiconsmapseven\symbol{123}}
- \expandafter\def\csname simpleicon@mastercardicon\endcsname {\simpleiconsmapseven\symbol{124}}
- \expandafter\def\csname simpleicon@mastercomfigicon\endcsname {\simpleiconsmapseven\symbol{125}}
- \expandafter\def\csname simpleicon@mastodonicon\endcsname {\simpleiconsmapseven\symbol{126}}
- \expandafter\def\csname simpleicon@materialdesignicon\endcsname {\simpleiconsmapseven\symbol{127}}
- \expandafter\def\csname simpleicon@materialdesigniconsicon\endcsname {\simpleiconsmapseven\symbol{128}}
- \expandafter\def\csname simpleicon@materialformkdocsicon\endcsname {\simpleiconsmapseven\symbol{129}}
- \expandafter\def\csname simpleicon@matillionicon\endcsname {\simpleiconsmapseven\symbol{130}}
- \expandafter\def\csname simpleicon@matomoicon\endcsname {\simpleiconsmapseven\symbol{131}}
- \expandafter\def\csname simpleicon@matrixicon\endcsname {\simpleiconsmapseven\symbol{132}}
- \expandafter\def\csname simpleicon@matterdotjsicon\endcsname {\simpleiconsmapseven\symbol{133}}
- \expandafter\def\csname simpleicon@mattermosticon\endcsname {\simpleiconsmapseven\symbol{134}}
- \expandafter\def\csname simpleicon@matterneticon\endcsname {\simpleiconsmapseven\symbol{135}}
- \expandafter\def\csname simpleicon@mauticicon\endcsname {\simpleiconsmapseven\symbol{136}}
- \expandafter\def\csname simpleicon@maxicon\endcsname {\simpleiconsmapseven\symbol{137}}
- \expandafter\def\csname simpleicon@maxplanckgesellschafticon\endcsname {\simpleiconsmapseven\symbol{138}}
- \expandafter\def\csname simpleicon@maytagicon\endcsname {\simpleiconsmapseven\symbol{139}}
- \expandafter\def\csname simpleicon@mazdaicon\endcsname {\simpleiconsmapseven\symbol{140}}
- \expandafter\def\csname simpleicon@mcafeeicon\endcsname {\simpleiconsmapseven\symbol{141}}
- \expandafter\def\csname simpleicon@mcdonaldsicon\endcsname {\simpleiconsmapseven\symbol{142}}
- \expandafter\def\csname simpleicon@mclarenicon\endcsname {\simpleiconsmapseven\symbol{143}}
- \expandafter\def\csname simpleicon@mdbookicon\endcsname {\simpleiconsmapseven\symbol{144}}
- \expandafter\def\csname simpleicon@mdnwebdocsicon\endcsname {\simpleiconsmapseven\symbol{145}}
- \expandafter\def\csname simpleicon@mdxicon\endcsname {\simpleiconsmapseven\symbol{146}}
- \expandafter\def\csname simpleicon@mediafireicon\endcsname {\simpleiconsmapseven\symbol{147}}
- \expandafter\def\csname simpleicon@mediamarkticon\endcsname {\simpleiconsmapseven\symbol{148}}
- \expandafter\def\csname simpleicon@mediatekicon\endcsname {\simpleiconsmapseven\symbol{149}}
- \expandafter\def\csname simpleicon@medibangpainticon\endcsname {\simpleiconsmapseven\symbol{150}}
- \expandafter\def\csname simpleicon@mediumicon\endcsname {\simpleiconsmapseven\symbol{151}}
- \expandafter\def\csname simpleicon@medusaicon\endcsname {\simpleiconsmapseven\symbol{152}}
- \expandafter\def\csname simpleicon@meetupicon\endcsname {\simpleiconsmapseven\symbol{153}}
- \expandafter\def\csname simpleicon@megaicon\endcsname {\simpleiconsmapseven\symbol{154}}
- \expandafter\def\csname simpleicon@meilisearchicon\endcsname {\simpleiconsmapseven\symbol{155}}
- \expandafter\def\csname simpleicon@meituanicon\endcsname {\simpleiconsmapseven\symbol{156}}
- \expandafter\def\csname simpleicon@meizuicon\endcsname {\simpleiconsmapseven\symbol{157}}
- \expandafter\def\csname simpleicon@mendeleyicon\endcsname {\simpleiconsmapseven\symbol{158}}
- \expandafter\def\csname simpleicon@mentorcruiseicon\endcsname {\simpleiconsmapseven\symbol{159}}
- \expandafter\def\csname simpleicon@mercadopagoicon\endcsname {\simpleiconsmapseven\symbol{160}}
- \expandafter\def\csname simpleicon@mercedesicon\endcsname {\simpleiconsmapseven\symbol{161}}
- \expandafter\def\csname simpleicon@merckicon\endcsname {\simpleiconsmapseven\symbol{162}}
- \expandafter\def\csname simpleicon@mercurialicon\endcsname {\simpleiconsmapseven\symbol{163}}
- \expandafter\def\csname simpleicon@mermaidicon\endcsname {\simpleiconsmapseven\symbol{164}}
- \expandafter\def\csname simpleicon@messengericon\endcsname {\simpleiconsmapseven\symbol{165}}
- \expandafter\def\csname simpleicon@metaicon\endcsname {\simpleiconsmapseven\symbol{166}}
- \expandafter\def\csname simpleicon@metabaseicon\endcsname {\simpleiconsmapseven\symbol{167}}
- \expandafter\def\csname simpleicon@metacriticicon\endcsname {\simpleiconsmapseven\symbol{168}}
- \expandafter\def\csname simpleicon@metafiltericon\endcsname {\simpleiconsmapseven\symbol{169}}
- \expandafter\def\csname simpleicon@metasploiticon\endcsname {\simpleiconsmapseven\symbol{170}}
- \expandafter\def\csname simpleicon@meteoricon\endcsname {\simpleiconsmapseven\symbol{171}}
- \expandafter\def\csname simpleicon@metroicon\endcsname {\simpleiconsmapseven\symbol{172}}
- \expandafter\def\csname simpleicon@metrodelaciudaddemexicoicon\endcsname {\simpleiconsmapseven\symbol{173}}
- \expandafter\def\csname simpleicon@metrodemadridicon\endcsname {\simpleiconsmapseven\symbol{174}}
- \expandafter\def\csname simpleicon@metrodeparisicon\endcsname {\simpleiconsmapseven\symbol{175}}
- \expandafter\def\csname simpleicon@meweicon\endcsname {\simpleiconsmapseven\symbol{176}}
- \expandafter\def\csname simpleicon@mgicon\endcsname {\simpleiconsmapseven\symbol{177}}
- \expandafter\def\csname simpleicon@microbiticon\endcsname {\simpleiconsmapseven\symbol{178}}
- \expandafter\def\csname simpleicon@microdotblogicon\endcsname {\simpleiconsmapseven\symbol{179}}
- \expandafter\def\csname simpleicon@microeditoricon\endcsname {\simpleiconsmapseven\symbol{180}}
- \expandafter\def\csname simpleicon@microgeneticsicon\endcsname {\simpleiconsmapseven\symbol{181}}
- \expandafter\def\csname simpleicon@micropythonicon\endcsname {\simpleiconsmapseven\symbol{182}}
- \expandafter\def\csname simpleicon@microstationicon\endcsname {\simpleiconsmapseven\symbol{183}}
- \expandafter\def\csname simpleicon@microstrategyicon\endcsname {\simpleiconsmapseven\symbol{184}}
- \expandafter\def\csname simpleicon@midiicon\endcsname {\simpleiconsmapseven\symbol{185}}
- \expandafter\def\csname simpleicon@migaduicon\endcsname {\simpleiconsmapseven\symbol{186}}
- \expandafter\def\csname simpleicon@mikrotikicon\endcsname {\simpleiconsmapseven\symbol{187}}
- \expandafter\def\csname simpleicon@milanoteicon\endcsname {\simpleiconsmapseven\symbol{188}}
- \expandafter\def\csname simpleicon@milvusicon\endcsname {\simpleiconsmapseven\symbol{189}}
- \expandafter\def\csname simpleicon@mindsicon\endcsname {\simpleiconsmapseven\symbol{190}}
- \expandafter\def\csname simpleicon@minetesticon\endcsname {\simpleiconsmapseven\symbol{191}}
- \expandafter\def\csname simpleicon@mingww64icon\endcsname {\simpleiconsmapseven\symbol{192}}
- \expandafter\def\csname simpleicon@miniicon\endcsname {\simpleiconsmapseven\symbol{193}}
- \expandafter\def\csname simpleicon@minioicon\endcsname {\simpleiconsmapseven\symbol{194}}
- \expandafter\def\csname simpleicon@mintlifyicon\endcsname {\simpleiconsmapseven\symbol{195}}
- \expandafter\def\csname simpleicon@minutemailericon\endcsname {\simpleiconsmapseven\symbol{196}}
- \expandafter\def\csname simpleicon@mirahezeicon\endcsname {\simpleiconsmapseven\symbol{197}}
- \expandafter\def\csname simpleicon@miroicon\endcsname {\simpleiconsmapseven\symbol{198}}
- \expandafter\def\csname simpleicon@misskeyicon\endcsname {\simpleiconsmapseven\symbol{199}}
- \expandafter\def\csname simpleicon@mitsubishiicon\endcsname {\simpleiconsmapseven\symbol{200}}
- \expandafter\def\csname simpleicon@mixicon\endcsname {\simpleiconsmapseven\symbol{201}}
- \expandafter\def\csname simpleicon@mixcloudicon\endcsname {\simpleiconsmapseven\symbol{202}}
- \expandafter\def\csname simpleicon@mixpanelicon\endcsname {\simpleiconsmapseven\symbol{203}}
- \expandafter\def\csname simpleicon@mlbicon\endcsname {\simpleiconsmapseven\symbol{204}}
- \expandafter\def\csname simpleicon@mlflowicon\endcsname {\simpleiconsmapseven\symbol{205}}
- \expandafter\def\csname simpleicon@mobxicon\endcsname {\simpleiconsmapseven\symbol{206}}
- \expandafter\def\csname simpleicon@mobxstatetreeicon\endcsname {\simpleiconsmapseven\symbol{207}}
- \expandafter\def\csname simpleicon@mochaicon\endcsname {\simpleiconsmapseven\symbol{208}}
- \expandafter\def\csname simpleicon@mockserviceworkericon\endcsname {\simpleiconsmapseven\symbol{209}}
- \expandafter\def\csname simpleicon@modalicon\endcsname {\simpleiconsmapseven\symbol{210}}
- \expandafter\def\csname simpleicon@modinicon\endcsname {\simpleiconsmapseven\symbol{211}}
- \expandafter\def\csname simpleicon@modrinthicon\endcsname {\simpleiconsmapseven\symbol{212}}
- \expandafter\def\csname simpleicon@modxicon\endcsname {\simpleiconsmapseven\symbol{213}}
- \expandafter\def\csname simpleicon@moleculericon\endcsname {\simpleiconsmapseven\symbol{214}}
- \expandafter\def\csname simpleicon@momenteoicon\endcsname {\simpleiconsmapseven\symbol{215}}
- \expandafter\def\csname simpleicon@moneroicon\endcsname {\simpleiconsmapseven\symbol{216}}
- \expandafter\def\csname simpleicon@moneygramicon\endcsname {\simpleiconsmapseven\symbol{217}}
- \expandafter\def\csname simpleicon@mongodbicon\endcsname {\simpleiconsmapseven\symbol{218}}
- \expandafter\def\csname simpleicon@mongooseicon\endcsname {\simpleiconsmapseven\symbol{219}}
- \expandafter\def\csname simpleicon@mongoosedotwsicon\endcsname {\simpleiconsmapseven\symbol{220}}
- \expandafter\def\csname simpleicon@monicaicon\endcsname {\simpleiconsmapseven\symbol{221}}
- \expandafter\def\csname simpleicon@monkeytieicon\endcsname {\simpleiconsmapseven\symbol{222}}
- \expandafter\def\csname simpleicon@monkeytypeicon\endcsname {\simpleiconsmapseven\symbol{223}}
- \expandafter\def\csname simpleicon@monogameicon\endcsname {\simpleiconsmapseven\symbol{224}}
- \expandafter\def\csname simpleicon@monoprixicon\endcsname {\simpleiconsmapseven\symbol{225}}
- \expandafter\def\csname simpleicon@monstericon\endcsname {\simpleiconsmapseven\symbol{226}}
- \expandafter\def\csname simpleicon@monzoicon\endcsname {\simpleiconsmapseven\symbol{227}}
- \expandafter\def\csname simpleicon@mooicon\endcsname {\simpleiconsmapseven\symbol{228}}
- \expandafter\def\csname simpleicon@moodleicon\endcsname {\simpleiconsmapseven\symbol{229}}
- \expandafter\def\csname simpleicon@moonrepoicon\endcsname {\simpleiconsmapseven\symbol{230}}
- \expandafter\def\csname simpleicon@moqicon\endcsname {\simpleiconsmapseven\symbol{231}}
- \expandafter\def\csname simpleicon@moqupsicon\endcsname {\simpleiconsmapseven\symbol{232}}
- \expandafter\def\csname simpleicon@morrisonsicon\endcsname {\simpleiconsmapseven\symbol{233}}
- \expandafter\def\csname simpleicon@moscowmetroicon\endcsname {\simpleiconsmapseven\symbol{234}}
- \expandafter\def\csname simpleicon@motorolaicon\endcsname {\simpleiconsmapseven\symbol{235}}
- \expandafter\def\csname simpleicon@mozillaicon\endcsname {\simpleiconsmapseven\symbol{236}}
- \expandafter\def\csname simpleicon@mpvicon\endcsname {\simpleiconsmapseven\symbol{237}}
- \expandafter\def\csname simpleicon@mqtticon\endcsname {\simpleiconsmapseven\symbol{238}}
- \expandafter\def\csname simpleicon@msiicon\endcsname {\simpleiconsmapseven\symbol{239}}
- \expandafter\def\csname simpleicon@msibusinessicon\endcsname {\simpleiconsmapseven\symbol{240}}
- \expandafter\def\csname simpleicon@mtaicon\endcsname {\simpleiconsmapseven\symbol{241}}
- \expandafter\def\csname simpleicon@mtricon\endcsname {\simpleiconsmapseven\symbol{242}}
- \expandafter\def\csname simpleicon@mubiicon\endcsname {\simpleiconsmapseven\symbol{243}}
- \expandafter\def\csname simpleicon@muiicon\endcsname {\simpleiconsmapseven\symbol{244}}
- \expandafter\def\csname simpleicon@mulesofticon\endcsname {\simpleiconsmapseven\symbol{245}}
- \expandafter\def\csname simpleicon@mullericon\endcsname {\simpleiconsmapseven\symbol{246}}
- \expandafter\def\csname simpleicon@multisimicon\endcsname {\simpleiconsmapseven\symbol{247}}
- \expandafter\def\csname simpleicon@mumbleicon\endcsname {\simpleiconsmapseven\symbol{248}}
- \expandafter\def\csname simpleicon@muoicon\endcsname {\simpleiconsmapseven\symbol{249}}
- \expandafter\def\csname simpleicon@muralicon\endcsname {\simpleiconsmapseven\symbol{250}}
- \expandafter\def\csname simpleicon@musescoreicon\endcsname {\simpleiconsmapseven\symbol{251}}
- \expandafter\def\csname simpleicon@musicbrainzicon\endcsname {\simpleiconsmapseven\symbol{252}}
- \expandafter\def\csname simpleicon@mxlinuxicon\endcsname {\simpleiconsmapseven\symbol{253}}
- \expandafter\def\csname simpleicon@myanimelisticon\endcsname {\simpleiconsmapseven\symbol{254}}
- \expandafter\def\csname simpleicon@mygeticon\endcsname {\simpleiconsmapseven\symbol{255}}
- \expandafter\def\csname simpleicon@myobicon\endcsname {\simpleiconsmapeight\symbol{0}}
- \expandafter\def\csname simpleicon@myspaceicon\endcsname {\simpleiconsmapeight\symbol{1}}
- \expandafter\def\csname simpleicon@mysqlicon\endcsname {\simpleiconsmapeight\symbol{2}}
- \expandafter\def\csname simpleicon@n26icon\endcsname {\simpleiconsmapeight\symbol{3}}
- \expandafter\def\csname simpleicon@n8nicon\endcsname {\simpleiconsmapeight\symbol{4}}
- \expandafter\def\csname simpleicon@namebaseicon\endcsname {\simpleiconsmapeight\symbol{5}}
- \expandafter\def\csname simpleicon@namecheapicon\endcsname {\simpleiconsmapeight\symbol{6}}
- \expandafter\def\csname simpleicon@namemcicon\endcsname {\simpleiconsmapeight\symbol{7}}
- \expandafter\def\csname simpleicon@namesiloicon\endcsname {\simpleiconsmapeight\symbol{8}}
- \expandafter\def\csname simpleicon@namuwikiicon\endcsname {\simpleiconsmapeight\symbol{9}}
- \expandafter\def\csname simpleicon@nanoicon\endcsname {\simpleiconsmapeight\symbol{10}}
- \expandafter\def\csname simpleicon@nasaicon\endcsname {\simpleiconsmapeight\symbol{11}}
- \expandafter\def\csname simpleicon@nationalgridicon\endcsname {\simpleiconsmapeight\symbol{12}}
- \expandafter\def\csname simpleicon@nationalrailicon\endcsname {\simpleiconsmapeight\symbol{13}}
- \expandafter\def\csname simpleicon@nativescripticon\endcsname {\simpleiconsmapeight\symbol{14}}
- \expandafter\def\csname simpleicon@natsdotioicon\endcsname {\simpleiconsmapeight\symbol{15}}
- \expandafter\def\csname simpleicon@navericon\endcsname {\simpleiconsmapeight\symbol{16}}
- \expandafter\def\csname simpleicon@nbaicon\endcsname {\simpleiconsmapeight\symbol{17}}
- \expandafter\def\csname simpleicon@nbbicon\endcsname {\simpleiconsmapeight\symbol{18}}
- \expandafter\def\csname simpleicon@nbcicon\endcsname {\simpleiconsmapeight\symbol{19}}
- \expandafter\def\csname simpleicon@ndricon\endcsname {\simpleiconsmapeight\symbol{20}}
- \expandafter\def\csname simpleicon@nearicon\endcsname {\simpleiconsmapeight\symbol{21}}
- \expandafter\def\csname simpleicon@necicon\endcsname {\simpleiconsmapeight\symbol{22}}
- \expandafter\def\csname simpleicon@neo4jicon\endcsname {\simpleiconsmapeight\symbol{23}}
- \expandafter\def\csname simpleicon@neovimicon\endcsname {\simpleiconsmapeight\symbol{24}}
- \expandafter\def\csname simpleicon@neptuneicon\endcsname {\simpleiconsmapeight\symbol{25}}
- \expandafter\def\csname simpleicon@nestjsicon\endcsname {\simpleiconsmapeight\symbol{26}}
- \expandafter\def\csname simpleicon@netappicon\endcsname {\simpleiconsmapeight\symbol{27}}
- \expandafter\def\csname simpleicon@netbsdicon\endcsname {\simpleiconsmapeight\symbol{28}}
- \expandafter\def\csname simpleicon@netcupicon\endcsname {\simpleiconsmapeight\symbol{29}}
- \expandafter\def\csname simpleicon@netdataicon\endcsname {\simpleiconsmapeight\symbol{30}}
- \expandafter\def\csname simpleicon@neteasecloudmusicicon\endcsname {\simpleiconsmapeight\symbol{31}}
- \expandafter\def\csname simpleicon@netflixicon\endcsname {\simpleiconsmapeight\symbol{32}}
- \expandafter\def\csname simpleicon@netgearicon\endcsname {\simpleiconsmapeight\symbol{33}}
- \expandafter\def\csname simpleicon@netlifyicon\endcsname {\simpleiconsmapeight\symbol{34}}
- \expandafter\def\csname simpleicon@netteicon\endcsname {\simpleiconsmapeight\symbol{35}}
- \expandafter\def\csname simpleicon@nettoicon\endcsname {\simpleiconsmapeight\symbol{36}}
- \expandafter\def\csname simpleicon@neutralinojsicon\endcsname {\simpleiconsmapeight\symbol{37}}
- \expandafter\def\csname simpleicon@newbalanceicon\endcsname {\simpleiconsmapeight\symbol{38}}
- \expandafter\def\csname simpleicon@neweggicon\endcsname {\simpleiconsmapeight\symbol{39}}
- \expandafter\def\csname simpleicon@newjapanprowrestlingicon\endcsname {\simpleiconsmapeight\symbol{40}}
- \expandafter\def\csname simpleicon@newrelicicon\endcsname {\simpleiconsmapeight\symbol{41}}
- \expandafter\def\csname simpleicon@newyorktimesicon\endcsname {\simpleiconsmapeight\symbol{42}}
- \expandafter\def\csname simpleicon@nextbilliondotaiicon\endcsname {\simpleiconsmapeight\symbol{43}}
- \expandafter\def\csname simpleicon@nextcloudicon\endcsname {\simpleiconsmapeight\symbol{44}}
- \expandafter\def\csname simpleicon@nextdnsicon\endcsname {\simpleiconsmapeight\symbol{45}}
- \expandafter\def\csname simpleicon@nextdooricon\endcsname {\simpleiconsmapeight\symbol{46}}
- \expandafter\def\csname simpleicon@nextdotjsicon\endcsname {\simpleiconsmapeight\symbol{47}}
- \expandafter\def\csname simpleicon@nextraicon\endcsname {\simpleiconsmapeight\symbol{48}}
- \expandafter\def\csname simpleicon@nextuiicon\endcsname {\simpleiconsmapeight\symbol{49}}
- \expandafter\def\csname simpleicon@nexusmodsicon\endcsname {\simpleiconsmapeight\symbol{50}}
- \expandafter\def\csname simpleicon@nfcicon\endcsname {\simpleiconsmapeight\symbol{51}}
- \expandafter\def\csname simpleicon@nginxicon\endcsname {\simpleiconsmapeight\symbol{52}}
- \expandafter\def\csname simpleicon@nginxproxymanagericon\endcsname {\simpleiconsmapeight\symbol{53}}
- \expandafter\def\csname simpleicon@ngrokicon\endcsname {\simpleiconsmapeight\symbol{54}}
- \expandafter\def\csname simpleicon@ngrxicon\endcsname {\simpleiconsmapeight\symbol{55}}
- \expandafter\def\csname simpleicon@nhlicon\endcsname {\simpleiconsmapeight\symbol{56}}
- \expandafter\def\csname simpleicon@nicehashicon\endcsname {\simpleiconsmapeight\symbol{57}}
- \expandafter\def\csname simpleicon@niconicoicon\endcsname {\simpleiconsmapeight\symbol{58}}
- \expandafter\def\csname simpleicon@nikeicon\endcsname {\simpleiconsmapeight\symbol{59}}
- \expandafter\def\csname simpleicon@nikonicon\endcsname {\simpleiconsmapeight\symbol{60}}
- \expandafter\def\csname simpleicon@nimicon\endcsname {\simpleiconsmapeight\symbol{61}}
- \expandafter\def\csname simpleicon@nintendoicon\endcsname {\simpleiconsmapeight\symbol{62}}
- \expandafter\def\csname simpleicon@nintendo3dsicon\endcsname {\simpleiconsmapeight\symbol{63}}
- \expandafter\def\csname simpleicon@nintendogamecubeicon\endcsname {\simpleiconsmapeight\symbol{64}}
- \expandafter\def\csname simpleicon@nintendoswitchicon\endcsname {\simpleiconsmapeight\symbol{65}}
- \expandafter\def\csname simpleicon@nissanicon\endcsname {\simpleiconsmapeight\symbol{66}}
- \expandafter\def\csname simpleicon@nixosicon\endcsname {\simpleiconsmapeight\symbol{67}}
- \expandafter\def\csname simpleicon@nodedotjsicon\endcsname {\simpleiconsmapeight\symbol{68}}
- \expandafter\def\csname simpleicon@nodemonicon\endcsname {\simpleiconsmapeight\symbol{69}}
- \expandafter\def\csname simpleicon@noderedicon\endcsname {\simpleiconsmapeight\symbol{70}}
- \expandafter\def\csname simpleicon@nokiaicon\endcsname {\simpleiconsmapeight\symbol{71}}
- \expandafter\def\csname simpleicon@nomadicon\endcsname {\simpleiconsmapeight\symbol{72}}
- \expandafter\def\csname simpleicon@norcoicon\endcsname {\simpleiconsmapeight\symbol{73}}
- \expandafter\def\csname simpleicon@nordicsemiconductoricon\endcsname {\simpleiconsmapeight\symbol{74}}
- \expandafter\def\csname simpleicon@nordvpnicon\endcsname {\simpleiconsmapeight\symbol{75}}
- \expandafter\def\csname simpleicon@normalizedotcssicon\endcsname {\simpleiconsmapeight\symbol{76}}
- \expandafter\def\csname simpleicon@nortonicon\endcsname {\simpleiconsmapeight\symbol{77}}
- \expandafter\def\csname simpleicon@norwegianicon\endcsname {\simpleiconsmapeight\symbol{78}}
- \expandafter\def\csname simpleicon@notepadplusplusicon\endcsname {\simpleiconsmapeight\symbol{79}}
- \expandafter\def\csname simpleicon@notionicon\endcsname {\simpleiconsmapeight\symbol{80}}
- \expandafter\def\csname simpleicon@notisticon\endcsname {\simpleiconsmapeight\symbol{81}}
- \expandafter\def\csname simpleicon@nounprojecticon\endcsname {\simpleiconsmapeight\symbol{82}}
- \expandafter\def\csname simpleicon@novuicon\endcsname {\simpleiconsmapeight\symbol{83}}
- \expandafter\def\csname simpleicon@nowicon\endcsname {\simpleiconsmapeight\symbol{84}}
- \expandafter\def\csname simpleicon@npmicon\endcsname {\simpleiconsmapeight\symbol{85}}
- \expandafter\def\csname simpleicon@nrwlicon\endcsname {\simpleiconsmapeight\symbol{86}}
- \expandafter\def\csname simpleicon@nsisicon\endcsname {\simpleiconsmapeight\symbol{87}}
- \expandafter\def\csname simpleicon@ntfyicon\endcsname {\simpleiconsmapeight\symbol{88}}
- \expandafter\def\csname simpleicon@nubankicon\endcsname {\simpleiconsmapeight\symbol{89}}
- \expandafter\def\csname simpleicon@nucleoicon\endcsname {\simpleiconsmapeight\symbol{90}}
- \expandafter\def\csname simpleicon@nugeticon\endcsname {\simpleiconsmapeight\symbol{91}}
- \expandafter\def\csname simpleicon@nukeicon\endcsname {\simpleiconsmapeight\symbol{92}}
- \expandafter\def\csname simpleicon@numbaicon\endcsname {\simpleiconsmapeight\symbol{93}}
- \expandafter\def\csname simpleicon@numpyicon\endcsname {\simpleiconsmapeight\symbol{94}}
- \expandafter\def\csname simpleicon@nunjucksicon\endcsname {\simpleiconsmapeight\symbol{95}}
- \expandafter\def\csname simpleicon@nushellicon\endcsname {\simpleiconsmapeight\symbol{96}}
- \expandafter\def\csname simpleicon@nutanixicon\endcsname {\simpleiconsmapeight\symbol{97}}
- \expandafter\def\csname simpleicon@nuxtdotjsicon\endcsname {\simpleiconsmapeight\symbol{98}}
- \expandafter\def\csname simpleicon@nvidiaicon\endcsname {\simpleiconsmapeight\symbol{99}}
- \expandafter\def\csname simpleicon@nvmicon\endcsname {\simpleiconsmapeight\symbol{100}}
- \expandafter\def\csname simpleicon@nxicon\endcsname {\simpleiconsmapeight\symbol{101}}
- \expandafter\def\csname simpleicon@nxpicon\endcsname {\simpleiconsmapeight\symbol{102}}
- \expandafter\def\csname simpleicon@nzxticon\endcsname {\simpleiconsmapeight\symbol{103}}
- \expandafter\def\csname simpleicon@observableicon\endcsname {\simpleiconsmapeight\symbol{104}}
- \expandafter\def\csname simpleicon@obsidianicon\endcsname {\simpleiconsmapeight\symbol{105}}
- \expandafter\def\csname simpleicon@obsstudioicon\endcsname {\simpleiconsmapeight\symbol{106}}
- \expandafter\def\csname simpleicon@ocamlicon\endcsname {\simpleiconsmapeight\symbol{107}}
- \expandafter\def\csname simpleicon@oclificon\endcsname {\simpleiconsmapeight\symbol{108}}
- \expandafter\def\csname simpleicon@octanerendericon\endcsname {\simpleiconsmapeight\symbol{109}}
- \expandafter\def\csname simpleicon@octaveicon\endcsname {\simpleiconsmapeight\symbol{110}}
- \expandafter\def\csname simpleicon@octobercmsicon\endcsname {\simpleiconsmapeight\symbol{111}}
- \expandafter\def\csname simpleicon@octoprinticon\endcsname {\simpleiconsmapeight\symbol{112}}
- \expandafter\def\csname simpleicon@octopusdeployicon\endcsname {\simpleiconsmapeight\symbol{113}}
- \expandafter\def\csname simpleicon@oculusicon\endcsname {\simpleiconsmapeight\symbol{114}}
- \expandafter\def\csname simpleicon@odnoklassnikiicon\endcsname {\simpleiconsmapeight\symbol{115}}
- \expandafter\def\csname simpleicon@odooicon\endcsname {\simpleiconsmapeight\symbol{116}}
- \expandafter\def\csname simpleicon@odyseeicon\endcsname {\simpleiconsmapeight\symbol{117}}
- \expandafter\def\csname simpleicon@ohdearicon\endcsname {\simpleiconsmapeight\symbol{118}}
- \expandafter\def\csname simpleicon@okcupidicon\endcsname {\simpleiconsmapeight\symbol{119}}
- \expandafter\def\csname simpleicon@oktaicon\endcsname {\simpleiconsmapeight\symbol{120}}
- \expandafter\def\csname simpleicon@ollamaicon\endcsname {\simpleiconsmapeight\symbol{121}}
- \expandafter\def\csname simpleicon@oneplusicon\endcsname {\simpleiconsmapeight\symbol{122}}
- \expandafter\def\csname simpleicon@onlyfansicon\endcsname {\simpleiconsmapeight\symbol{123}}
- \expandafter\def\csname simpleicon@onlyofficeicon\endcsname {\simpleiconsmapeight\symbol{124}}
- \expandafter\def\csname simpleicon@onnxicon\endcsname {\simpleiconsmapeight\symbol{125}}
- \expandafter\def\csname simpleicon@onstaricon\endcsname {\simpleiconsmapeight\symbol{126}}
- \expandafter\def\csname simpleicon@opelicon\endcsname {\simpleiconsmapeight\symbol{127}}
- \expandafter\def\csname simpleicon@openaccessicon\endcsname {\simpleiconsmapeight\symbol{128}}
- \expandafter\def\csname simpleicon@openaiicon\endcsname {\simpleiconsmapeight\symbol{129}}
- \expandafter\def\csname simpleicon@openaigymicon\endcsname {\simpleiconsmapeight\symbol{130}}
- \expandafter\def\csname simpleicon@openapiinitiativeicon\endcsname {\simpleiconsmapeight\symbol{131}}
- \expandafter\def\csname simpleicon@openbadgesicon\endcsname {\simpleiconsmapeight\symbol{132}}
- \expandafter\def\csname simpleicon@openbsdicon\endcsname {\simpleiconsmapeight\symbol{133}}
- \expandafter\def\csname simpleicon@openbugbountyicon\endcsname {\simpleiconsmapeight\symbol{134}}
- \expandafter\def\csname simpleicon@opencollectiveicon\endcsname {\simpleiconsmapeight\symbol{135}}
- \expandafter\def\csname simpleicon@opencontainersinitiativeicon\endcsname {\simpleiconsmapeight\symbol{136}}
- \expandafter\def\csname simpleicon@opencvicon\endcsname {\simpleiconsmapeight\symbol{137}}
- \expandafter\def\csname simpleicon@openfaasicon\endcsname {\simpleiconsmapeight\symbol{138}}
- \expandafter\def\csname simpleicon@openglicon\endcsname {\simpleiconsmapeight\symbol{139}}
- \expandafter\def\csname simpleicon@openhabicon\endcsname {\simpleiconsmapeight\symbol{140}}
- \expandafter\def\csname simpleicon@openidicon\endcsname {\simpleiconsmapeight\symbol{141}}
- \expandafter\def\csname simpleicon@openjdkicon\endcsname {\simpleiconsmapeight\symbol{142}}
- \expandafter\def\csname simpleicon@openjsfoundationicon\endcsname {\simpleiconsmapeight\symbol{143}}
- \expandafter\def\csname simpleicon@openlayersicon\endcsname {\simpleiconsmapeight\symbol{144}}
- \expandafter\def\csname simpleicon@openmediavaulticon\endcsname {\simpleiconsmapeight\symbol{145}}
- \expandafter\def\csname simpleicon@openminedicon\endcsname {\simpleiconsmapeight\symbol{146}}
- \expandafter\def\csname simpleicon@opennebulaicon\endcsname {\simpleiconsmapeight\symbol{147}}
- \expandafter\def\csname simpleicon@openprojecticon\endcsname {\simpleiconsmapeight\symbol{148}}
- \expandafter\def\csname simpleicon@openscadicon\endcsname {\simpleiconsmapeight\symbol{149}}
- \expandafter\def\csname simpleicon@openseaicon\endcsname {\simpleiconsmapeight\symbol{150}}
- \expandafter\def\csname simpleicon@opensearchicon\endcsname {\simpleiconsmapeight\symbol{151}}
- \expandafter\def\csname simpleicon@opensourcehardwareicon\endcsname {\simpleiconsmapeight\symbol{152}}
- \expandafter\def\csname simpleicon@opensourceinitiativeicon\endcsname {\simpleiconsmapeight\symbol{153}}
- \expandafter\def\csname simpleicon@opensslicon\endcsname {\simpleiconsmapeight\symbol{154}}
- \expandafter\def\csname simpleicon@openstackicon\endcsname {\simpleiconsmapeight\symbol{155}}
- \expandafter\def\csname simpleicon@openstreetmapicon\endcsname {\simpleiconsmapeight\symbol{156}}
- \expandafter\def\csname simpleicon@opensuseicon\endcsname {\simpleiconsmapeight\symbol{157}}
- \expandafter\def\csname simpleicon@opentelemetryicon\endcsname {\simpleiconsmapeight\symbol{158}}
- \expandafter\def\csname simpleicon@opentexticon\endcsname {\simpleiconsmapeight\symbol{159}}
- \expandafter\def\csname simpleicon@opentofuicon\endcsname {\simpleiconsmapeight\symbol{160}}
- \expandafter\def\csname simpleicon@openverseicon\endcsname {\simpleiconsmapeight\symbol{161}}
- \expandafter\def\csname simpleicon@openvpnicon\endcsname {\simpleiconsmapeight\symbol{162}}
- \expandafter\def\csname simpleicon@openwrticon\endcsname {\simpleiconsmapeight\symbol{163}}
- \expandafter\def\csname simpleicon@openzeppelinicon\endcsname {\simpleiconsmapeight\symbol{164}}
- \expandafter\def\csname simpleicon@openzfsicon\endcsname {\simpleiconsmapeight\symbol{165}}
- \expandafter\def\csname simpleicon@operaicon\endcsname {\simpleiconsmapeight\symbol{166}}
- \expandafter\def\csname simpleicon@operagxicon\endcsname {\simpleiconsmapeight\symbol{167}}
- \expandafter\def\csname simpleicon@opnsenseicon\endcsname {\simpleiconsmapeight\symbol{168}}
- \expandafter\def\csname simpleicon@oppoicon\endcsname {\simpleiconsmapeight\symbol{169}}
- \expandafter\def\csname simpleicon@opsgenieicon\endcsname {\simpleiconsmapeight\symbol{170}}
- \expandafter\def\csname simpleicon@opslevelicon\endcsname {\simpleiconsmapeight\symbol{171}}
- \expandafter\def\csname simpleicon@optimismicon\endcsname {\simpleiconsmapeight\symbol{172}}
- \expandafter\def\csname simpleicon@oracleicon\endcsname {\simpleiconsmapeight\symbol{173}}
- \expandafter\def\csname simpleicon@orangeicon\endcsname {\simpleiconsmapeight\symbol{174}}
- \expandafter\def\csname simpleicon@orcidicon\endcsname {\simpleiconsmapeight\symbol{175}}
- \expandafter\def\csname simpleicon@oreillyicon\endcsname {\simpleiconsmapeight\symbol{176}}
- \expandafter\def\csname simpleicon@orgicon\endcsname {\simpleiconsmapeight\symbol{177}}
- \expandafter\def\csname simpleicon@organicmapsicon\endcsname {\simpleiconsmapeight\symbol{178}}
- \expandafter\def\csname simpleicon@originicon\endcsname {\simpleiconsmapeight\symbol{179}}
- \expandafter\def\csname simpleicon@osanoicon\endcsname {\simpleiconsmapeight\symbol{180}}
- \expandafter\def\csname simpleicon@osficon\endcsname {\simpleiconsmapeight\symbol{181}}
- \expandafter\def\csname simpleicon@osgeoicon\endcsname {\simpleiconsmapeight\symbol{182}}
- \expandafter\def\csname simpleicon@oshkoshicon\endcsname {\simpleiconsmapeight\symbol{183}}
- \expandafter\def\csname simpleicon@osmcicon\endcsname {\simpleiconsmapeight\symbol{184}}
- \expandafter\def\csname simpleicon@osuicon\endcsname {\simpleiconsmapeight\symbol{185}}
- \expandafter\def\csname simpleicon@ottoicon\endcsname {\simpleiconsmapeight\symbol{186}}
- \expandafter\def\csname simpleicon@outlineicon\endcsname {\simpleiconsmapeight\symbol{187}}
- \expandafter\def\csname simpleicon@overcasticon\endcsname {\simpleiconsmapeight\symbol{188}}
- \expandafter\def\csname simpleicon@overleaficon\endcsname {\simpleiconsmapeight\symbol{189}}
- \expandafter\def\csname simpleicon@ovhicon\endcsname {\simpleiconsmapeight\symbol{190}}
- \expandafter\def\csname simpleicon@owaspicon\endcsname {\simpleiconsmapeight\symbol{191}}
- \expandafter\def\csname simpleicon@owncloudicon\endcsname {\simpleiconsmapeight\symbol{192}}
- \expandafter\def\csname simpleicon@oxygenicon\endcsname {\simpleiconsmapeight\symbol{193}}
- \expandafter\def\csname simpleicon@oyoicon\endcsname {\simpleiconsmapeight\symbol{194}}
- \expandafter\def\csname simpleicon@p5dotjsicon\endcsname {\simpleiconsmapeight\symbol{195}}
- \expandafter\def\csname simpleicon@packagisticon\endcsname {\simpleiconsmapeight\symbol{196}}
- \expandafter\def\csname simpleicon@packericon\endcsname {\simpleiconsmapeight\symbol{197}}
- \expandafter\def\csname simpleicon@packticon\endcsname {\simpleiconsmapeight\symbol{198}}
- \expandafter\def\csname simpleicon@paddleicon\endcsname {\simpleiconsmapeight\symbol{199}}
- \expandafter\def\csname simpleicon@paddlepaddleicon\endcsname {\simpleiconsmapeight\symbol{200}}
- \expandafter\def\csname simpleicon@paddypowericon\endcsname {\simpleiconsmapeight\symbol{201}}
- \expandafter\def\csname simpleicon@pagekiticon\endcsname {\simpleiconsmapeight\symbol{202}}
- \expandafter\def\csname simpleicon@pagerdutyicon\endcsname {\simpleiconsmapeight\symbol{203}}
- \expandafter\def\csname simpleicon@pagespeedinsightsicon\endcsname {\simpleiconsmapeight\symbol{204}}
- \expandafter\def\csname simpleicon@pagseguroicon\endcsname {\simpleiconsmapeight\symbol{205}}
- \expandafter\def\csname simpleicon@palantiricon\endcsname {\simpleiconsmapeight\symbol{206}}
- \expandafter\def\csname simpleicon@paloaltonetworksicon\endcsname {\simpleiconsmapeight\symbol{207}}
- \expandafter\def\csname simpleicon@paloaltosoftwareicon\endcsname {\simpleiconsmapeight\symbol{208}}
- \expandafter\def\csname simpleicon@panasonicicon\endcsname {\simpleiconsmapeight\symbol{209}}
- \expandafter\def\csname simpleicon@pandasicon\endcsname {\simpleiconsmapeight\symbol{210}}
- \expandafter\def\csname simpleicon@pandoraicon\endcsname {\simpleiconsmapeight\symbol{211}}
- \expandafter\def\csname simpleicon@pantheonicon\endcsname {\simpleiconsmapeight\symbol{212}}
- \expandafter\def\csname simpleicon@paperlessngxicon\endcsname {\simpleiconsmapeight\symbol{213}}
- \expandafter\def\csname simpleicon@paperspaceicon\endcsname {\simpleiconsmapeight\symbol{214}}
- \expandafter\def\csname simpleicon@paperswithcodeicon\endcsname {\simpleiconsmapeight\symbol{215}}
- \expandafter\def\csname simpleicon@paramountplusicon\endcsname {\simpleiconsmapeight\symbol{216}}
- \expandafter\def\csname simpleicon@paritysubstrateicon\endcsname {\simpleiconsmapeight\symbol{217}}
- \expandafter\def\csname simpleicon@parrotsecurityicon\endcsname {\simpleiconsmapeight\symbol{218}}
- \expandafter\def\csname simpleicon@parsedotlyicon\endcsname {\simpleiconsmapeight\symbol{219}}
- \expandafter\def\csname simpleicon@passporticon\endcsname {\simpleiconsmapeight\symbol{220}}
- \expandafter\def\csname simpleicon@pastebinicon\endcsname {\simpleiconsmapeight\symbol{221}}
- \expandafter\def\csname simpleicon@patreonicon\endcsname {\simpleiconsmapeight\symbol{222}}
- \expandafter\def\csname simpleicon@paychexicon\endcsname {\simpleiconsmapeight\symbol{223}}
- \expandafter\def\csname simpleicon@payhipicon\endcsname {\simpleiconsmapeight\symbol{224}}
- \expandafter\def\csname simpleicon@payloadcmsicon\endcsname {\simpleiconsmapeight\symbol{225}}
- \expandafter\def\csname simpleicon@payoneericon\endcsname {\simpleiconsmapeight\symbol{226}}
- \expandafter\def\csname simpleicon@paypalicon\endcsname {\simpleiconsmapeight\symbol{227}}
- \expandafter\def\csname simpleicon@paytmicon\endcsname {\simpleiconsmapeight\symbol{228}}
- \expandafter\def\csname simpleicon@pcgamingwikiicon\endcsname {\simpleiconsmapeight\symbol{229}}
- \expandafter\def\csname simpleicon@pdmicon\endcsname {\simpleiconsmapeight\symbol{230}}
- \expandafter\def\csname simpleicon@pdqicon\endcsname {\simpleiconsmapeight\symbol{231}}
- \expandafter\def\csname simpleicon@peakdesignicon\endcsname {\simpleiconsmapeight\symbol{232}}
- \expandafter\def\csname simpleicon@pearsonicon\endcsname {\simpleiconsmapeight\symbol{233}}
- \expandafter\def\csname simpleicon@peerlisticon\endcsname {\simpleiconsmapeight\symbol{234}}
- \expandafter\def\csname simpleicon@peertubeicon\endcsname {\simpleiconsmapeight\symbol{235}}
- \expandafter\def\csname simpleicon@pegasusairlinesicon\endcsname {\simpleiconsmapeight\symbol{236}}
- \expandafter\def\csname simpleicon@pelicanicon\endcsname {\simpleiconsmapeight\symbol{237}}
- \expandafter\def\csname simpleicon@pelotonicon\endcsname {\simpleiconsmapeight\symbol{238}}
- \expandafter\def\csname simpleicon@pennyicon\endcsname {\simpleiconsmapeight\symbol{239}}
- \expandafter\def\csname simpleicon@penpoticon\endcsname {\simpleiconsmapeight\symbol{240}}
- \expandafter\def\csname simpleicon@percyicon\endcsname {\simpleiconsmapeight\symbol{241}}
- \expandafter\def\csname simpleicon@perforceicon\endcsname {\simpleiconsmapeight\symbol{242}}
- \expandafter\def\csname simpleicon@perlicon\endcsname {\simpleiconsmapeight\symbol{243}}
- \expandafter\def\csname simpleicon@perplexityicon\endcsname {\simpleiconsmapeight\symbol{244}}
- \expandafter\def\csname simpleicon@persistenticon\endcsname {\simpleiconsmapeight\symbol{245}}
- \expandafter\def\csname simpleicon@personioicon\endcsname {\simpleiconsmapeight\symbol{246}}
- \expandafter\def\csname simpleicon@petsathomeicon\endcsname {\simpleiconsmapeight\symbol{247}}
- \expandafter\def\csname simpleicon@peugeoticon\endcsname {\simpleiconsmapeight\symbol{248}}
- \expandafter\def\csname simpleicon@pexelsicon\endcsname {\simpleiconsmapeight\symbol{249}}
- \expandafter\def\csname simpleicon@pfsenseicon\endcsname {\simpleiconsmapeight\symbol{250}}
- \expandafter\def\csname simpleicon@phabricatoricon\endcsname {\simpleiconsmapeight\symbol{251}}
- \expandafter\def\csname simpleicon@philipshueicon\endcsname {\simpleiconsmapeight\symbol{252}}
- \expandafter\def\csname simpleicon@phoenixframeworkicon\endcsname {\simpleiconsmapeight\symbol{253}}
- \expandafter\def\csname simpleicon@phonepeicon\endcsname {\simpleiconsmapeight\symbol{254}}
- \expandafter\def\csname simpleicon@phosphoriconsicon\endcsname {\simpleiconsmapeight\symbol{255}}
- \expandafter\def\csname simpleicon@photobucketicon\endcsname {\simpleiconsmapnine\symbol{0}}
- \expandafter\def\csname simpleicon@photocrowdicon\endcsname {\simpleiconsmapnine\symbol{1}}
- \expandafter\def\csname simpleicon@photonicon\endcsname {\simpleiconsmapnine\symbol{2}}
- \expandafter\def\csname simpleicon@photopeaicon\endcsname {\simpleiconsmapnine\symbol{3}}
- \expandafter\def\csname simpleicon@phpicon\endcsname {\simpleiconsmapnine\symbol{4}}
- \expandafter\def\csname simpleicon@phpmyadminicon\endcsname {\simpleiconsmapnine\symbol{5}}
- \expandafter\def\csname simpleicon@phpstormicon\endcsname {\simpleiconsmapnine\symbol{6}}
- \expandafter\def\csname simpleicon@piaggiogroupicon\endcsname {\simpleiconsmapnine\symbol{7}}
- \expandafter\def\csname simpleicon@piaproicon\endcsname {\simpleiconsmapnine\symbol{8}}
- \expandafter\def\csname simpleicon@picardsurgelesicon\endcsname {\simpleiconsmapnine\symbol{9}}
- \expandafter\def\csname simpleicon@picartodottvicon\endcsname {\simpleiconsmapnine\symbol{10}}
- \expandafter\def\csname simpleicon@picnicicon\endcsname {\simpleiconsmapnine\symbol{11}}
- \expandafter\def\csname simpleicon@picpayicon\endcsname {\simpleiconsmapnine\symbol{12}}
- \expandafter\def\csname simpleicon@picrewicon\endcsname {\simpleiconsmapnine\symbol{13}}
- \expandafter\def\csname simpleicon@picxyicon\endcsname {\simpleiconsmapnine\symbol{14}}
- \expandafter\def\csname simpleicon@piholeicon\endcsname {\simpleiconsmapnine\symbol{15}}
- \expandafter\def\csname simpleicon@pimcoreicon\endcsname {\simpleiconsmapnine\symbol{16}}
- \expandafter\def\csname simpleicon@pinboardicon\endcsname {\simpleiconsmapnine\symbol{17}}
- \expandafter\def\csname simpleicon@pinescripticon\endcsname {\simpleiconsmapnine\symbol{18}}
- \expandafter\def\csname simpleicon@pinetworkicon\endcsname {\simpleiconsmapnine\symbol{19}}
- \expandafter\def\csname simpleicon@pingdomicon\endcsname {\simpleiconsmapnine\symbol{20}}
- \expandafter\def\csname simpleicon@pinoicon\endcsname {\simpleiconsmapnine\symbol{21}}
- \expandafter\def\csname simpleicon@pinteresticon\endcsname {\simpleiconsmapnine\symbol{22}}
- \expandafter\def\csname simpleicon@pioneerdjicon\endcsname {\simpleiconsmapnine\symbol{23}}
- \expandafter\def\csname simpleicon@pipedicon\endcsname {\simpleiconsmapnine\symbol{24}}
- \expandafter\def\csname simpleicon@pipxicon\endcsname {\simpleiconsmapnine\symbol{25}}
- \expandafter\def\csname simpleicon@pivotaltrackericon\endcsname {\simpleiconsmapnine\symbol{26}}
- \expandafter\def\csname simpleicon@piwigoicon\endcsname {\simpleiconsmapnine\symbol{27}}
- \expandafter\def\csname simpleicon@pixicon\endcsname {\simpleiconsmapnine\symbol{28}}
- \expandafter\def\csname simpleicon@pixabayicon\endcsname {\simpleiconsmapnine\symbol{29}}
- \expandafter\def\csname simpleicon@pixelfedicon\endcsname {\simpleiconsmapnine\symbol{30}}
- \expandafter\def\csname simpleicon@pixivicon\endcsname {\simpleiconsmapnine\symbol{31}}
- \expandafter\def\csname simpleicon@pixlricon\endcsname {\simpleiconsmapnine\symbol{32}}
- \expandafter\def\csname simpleicon@pkgsrcicon\endcsname {\simpleiconsmapnine\symbol{33}}
- \expandafter\def\csname simpleicon@planeticon\endcsname {\simpleiconsmapnine\symbol{34}}
- \expandafter\def\csname simpleicon@planetscaleicon\endcsname {\simpleiconsmapnine\symbol{35}}
- \expandafter\def\csname simpleicon@plangridicon\endcsname {\simpleiconsmapnine\symbol{36}}
- \expandafter\def\csname simpleicon@platformdotshicon\endcsname {\simpleiconsmapnine\symbol{37}}
- \expandafter\def\csname simpleicon@platformioicon\endcsname {\simpleiconsmapnine\symbol{38}}
- \expandafter\def\csname simpleicon@platziicon\endcsname {\simpleiconsmapnine\symbol{39}}
- \expandafter\def\csname simpleicon@plausibleanalyticsicon\endcsname {\simpleiconsmapnine\symbol{40}}
- \expandafter\def\csname simpleicon@playcanvasicon\endcsname {\simpleiconsmapnine\symbol{41}}
- \expandafter\def\csname simpleicon@playerdotmeicon\endcsname {\simpleiconsmapnine\symbol{42}}
- \expandafter\def\csname simpleicon@playerfmicon\endcsname {\simpleiconsmapnine\symbol{43}}
- \expandafter\def\csname simpleicon@playstationicon\endcsname {\simpleiconsmapnine\symbol{44}}
- \expandafter\def\csname simpleicon@playstation2icon\endcsname {\simpleiconsmapnine\symbol{45}}
- \expandafter\def\csname simpleicon@playstation3icon\endcsname {\simpleiconsmapnine\symbol{46}}
- \expandafter\def\csname simpleicon@playstation4icon\endcsname {\simpleiconsmapnine\symbol{47}}
- \expandafter\def\csname simpleicon@playstation5icon\endcsname {\simpleiconsmapnine\symbol{48}}
- \expandafter\def\csname simpleicon@playstationportableicon\endcsname {\simpleiconsmapnine\symbol{49}}
- \expandafter\def\csname simpleicon@playstationvitaicon\endcsname {\simpleiconsmapnine\symbol{50}}
- \expandafter\def\csname simpleicon@pleromaicon\endcsname {\simpleiconsmapnine\symbol{51}}
- \expandafter\def\csname simpleicon@pleskicon\endcsname {\simpleiconsmapnine\symbol{52}}
- \expandafter\def\csname simpleicon@plexicon\endcsname {\simpleiconsmapnine\symbol{53}}
- \expandafter\def\csname simpleicon@plotlyicon\endcsname {\simpleiconsmapnine\symbol{54}}
- \expandafter\def\csname simpleicon@plumeicon\endcsname {\simpleiconsmapnine\symbol{55}}
- \expandafter\def\csname simpleicon@pluralsighticon\endcsname {\simpleiconsmapnine\symbol{56}}
- \expandafter\def\csname simpleicon@plurkicon\endcsname {\simpleiconsmapnine\symbol{57}}
- \expandafter\def\csname simpleicon@pluscodesicon\endcsname {\simpleiconsmapnine\symbol{58}}
- \expandafter\def\csname simpleicon@pm2icon\endcsname {\simpleiconsmapnine\symbol{59}}
- \expandafter\def\csname simpleicon@pnpmicon\endcsname {\simpleiconsmapnine\symbol{60}}
- \expandafter\def\csname simpleicon@pocketicon\endcsname {\simpleiconsmapnine\symbol{61}}
- \expandafter\def\csname simpleicon@pocketbaseicon\endcsname {\simpleiconsmapnine\symbol{62}}
- \expandafter\def\csname simpleicon@pocketcastsicon\endcsname {\simpleiconsmapnine\symbol{63}}
- \expandafter\def\csname simpleicon@podcastaddicticon\endcsname {\simpleiconsmapnine\symbol{64}}
- \expandafter\def\csname simpleicon@podcastindexicon\endcsname {\simpleiconsmapnine\symbol{65}}
- \expandafter\def\csname simpleicon@podmanicon\endcsname {\simpleiconsmapnine\symbol{66}}
- \expandafter\def\csname simpleicon@poeicon\endcsname {\simpleiconsmapnine\symbol{67}}
- \expandafter\def\csname simpleicon@poetryicon\endcsname {\simpleiconsmapnine\symbol{68}}
- \expandafter\def\csname simpleicon@pointyicon\endcsname {\simpleiconsmapnine\symbol{69}}
- \expandafter\def\csname simpleicon@pokemonicon\endcsname {\simpleiconsmapnine\symbol{70}}
- \expandafter\def\csname simpleicon@polarsicon\endcsname {\simpleiconsmapnine\symbol{71}}
- \expandafter\def\csname simpleicon@polestaricon\endcsname {\simpleiconsmapnine\symbol{72}}
- \expandafter\def\csname simpleicon@polkadoticon\endcsname {\simpleiconsmapnine\symbol{73}}
- \expandafter\def\csname simpleicon@polyicon\endcsname {\simpleiconsmapnine\symbol{74}}
- \expandafter\def\csname simpleicon@polygonicon\endcsname {\simpleiconsmapnine\symbol{75}}
- \expandafter\def\csname simpleicon@polymerprojecticon\endcsname {\simpleiconsmapnine\symbol{76}}
- \expandafter\def\csname simpleicon@polyworkicon\endcsname {\simpleiconsmapnine\symbol{77}}
- \expandafter\def\csname simpleicon@pond5icon\endcsname {\simpleiconsmapnine\symbol{78}}
- \expandafter\def\csname simpleicon@poposicon\endcsname {\simpleiconsmapnine\symbol{79}}
- \expandafter\def\csname simpleicon@porkbunicon\endcsname {\simpleiconsmapnine\symbol{80}}
- \expandafter\def\csname simpleicon@porscheicon\endcsname {\simpleiconsmapnine\symbol{81}}
- \expandafter\def\csname simpleicon@portainericon\endcsname {\simpleiconsmapnine\symbol{82}}
- \expandafter\def\csname simpleicon@portswiggericon\endcsname {\simpleiconsmapnine\symbol{83}}
- \expandafter\def\csname simpleicon@positicon\endcsname {\simpleiconsmapnine\symbol{84}}
- \expandafter\def\csname simpleicon@postcssicon\endcsname {\simpleiconsmapnine\symbol{85}}
- \expandafter\def\csname simpleicon@postgresqlicon\endcsname {\simpleiconsmapnine\symbol{86}}
- \expandafter\def\csname simpleicon@posthogicon\endcsname {\simpleiconsmapnine\symbol{87}}
- \expandafter\def\csname simpleicon@postmanicon\endcsname {\simpleiconsmapnine\symbol{88}}
- \expandafter\def\csname simpleicon@postmatesicon\endcsname {\simpleiconsmapnine\symbol{89}}
- \expandafter\def\csname simpleicon@powersicon\endcsname {\simpleiconsmapnine\symbol{90}}
- \expandafter\def\csname simpleicon@prdotcoicon\endcsname {\simpleiconsmapnine\symbol{91}}
- \expandafter\def\csname simpleicon@preacticon\endcsname {\simpleiconsmapnine\symbol{92}}
- \expandafter\def\csname simpleicon@precommiticon\endcsname {\simpleiconsmapnine\symbol{93}}
- \expandafter\def\csname simpleicon@prefecticon\endcsname {\simpleiconsmapnine\symbol{94}}
- \expandafter\def\csname simpleicon@premierleagueicon\endcsname {\simpleiconsmapnine\symbol{95}}
- \expandafter\def\csname simpleicon@prepbytesicon\endcsname {\simpleiconsmapnine\symbol{96}}
- \expandafter\def\csname simpleicon@prestashopicon\endcsname {\simpleiconsmapnine\symbol{97}}
- \expandafter\def\csname simpleicon@prestoicon\endcsname {\simpleiconsmapnine\symbol{98}}
- \expandafter\def\csname simpleicon@prettiericon\endcsname {\simpleiconsmapnine\symbol{99}}
- \expandafter\def\csname simpleicon@pretzelicon\endcsname {\simpleiconsmapnine\symbol{100}}
- \expandafter\def\csname simpleicon@preventionicon\endcsname {\simpleiconsmapnine\symbol{101}}
- \expandafter\def\csname simpleicon@preziicon\endcsname {\simpleiconsmapnine\symbol{102}}
- \expandafter\def\csname simpleicon@primeicon\endcsname {\simpleiconsmapnine\symbol{103}}
- \expandafter\def\csname simpleicon@primengicon\endcsname {\simpleiconsmapnine\symbol{104}}
- \expandafter\def\csname simpleicon@primereacticon\endcsname {\simpleiconsmapnine\symbol{105}}
- \expandafter\def\csname simpleicon@primevideoicon\endcsname {\simpleiconsmapnine\symbol{106}}
- \expandafter\def\csname simpleicon@printablesicon\endcsname {\simpleiconsmapnine\symbol{107}}
- \expandafter\def\csname simpleicon@prismaicon\endcsname {\simpleiconsmapnine\symbol{108}}
- \expandafter\def\csname simpleicon@prismicicon\endcsname {\simpleiconsmapnine\symbol{109}}
- \expandafter\def\csname simpleicon@privatedivisionicon\endcsname {\simpleiconsmapnine\symbol{110}}
- \expandafter\def\csname simpleicon@privateinternetaccessicon\endcsname {\simpleiconsmapnine\symbol{111}}
- \expandafter\def\csname simpleicon@proboticon\endcsname {\simpleiconsmapnine\symbol{112}}
- \expandafter\def\csname simpleicon@processingfoundationicon\endcsname {\simpleiconsmapnine\symbol{113}}
- \expandafter\def\csname simpleicon@processwireicon\endcsname {\simpleiconsmapnine\symbol{114}}
- \expandafter\def\csname simpleicon@producthunticon\endcsname {\simpleiconsmapnine\symbol{115}}
- \expandafter\def\csname simpleicon@progateicon\endcsname {\simpleiconsmapnine\symbol{116}}
- \expandafter\def\csname simpleicon@progressicon\endcsname {\simpleiconsmapnine\symbol{117}}
- \expandafter\def\csname simpleicon@prometheusicon\endcsname {\simpleiconsmapnine\symbol{118}}
- \expandafter\def\csname simpleicon@pronounsdotpageicon\endcsname {\simpleiconsmapnine\symbol{119}}
- \expandafter\def\csname simpleicon@prosiebenicon\endcsname {\simpleiconsmapnine\symbol{120}}
- \expandafter\def\csname simpleicon@proteusicon\endcsname {\simpleiconsmapnine\symbol{121}}
- \expandafter\def\csname simpleicon@protocolsdotioicon\endcsname {\simpleiconsmapnine\symbol{122}}
- \expandafter\def\csname simpleicon@protodotioicon\endcsname {\simpleiconsmapnine\symbol{123}}
- \expandafter\def\csname simpleicon@protonicon\endcsname {\simpleiconsmapnine\symbol{124}}
- \expandafter\def\csname simpleicon@protoncalendaricon\endcsname {\simpleiconsmapnine\symbol{125}}
- \expandafter\def\csname simpleicon@protondbicon\endcsname {\simpleiconsmapnine\symbol{126}}
- \expandafter\def\csname simpleicon@protondriveicon\endcsname {\simpleiconsmapnine\symbol{127}}
- \expandafter\def\csname simpleicon@protonmailicon\endcsname {\simpleiconsmapnine\symbol{128}}
- \expandafter\def\csname simpleicon@protonvpnicon\endcsname {\simpleiconsmapnine\symbol{129}}
- \expandafter\def\csname simpleicon@protoolsicon\endcsname {\simpleiconsmapnine\symbol{130}}
- \expandafter\def\csname simpleicon@protractoricon\endcsname {\simpleiconsmapnine\symbol{131}}
- \expandafter\def\csname simpleicon@proxmoxicon\endcsname {\simpleiconsmapnine\symbol{132}}
- \expandafter\def\csname simpleicon@pterodactylicon\endcsname {\simpleiconsmapnine\symbol{133}}
- \expandafter\def\csname simpleicon@pubgicon\endcsname {\simpleiconsmapnine\symbol{134}}
- \expandafter\def\csname simpleicon@publonsicon\endcsname {\simpleiconsmapnine\symbol{135}}
- \expandafter\def\csname simpleicon@pubmedicon\endcsname {\simpleiconsmapnine\symbol{136}}
- \expandafter\def\csname simpleicon@pugicon\endcsname {\simpleiconsmapnine\symbol{137}}
- \expandafter\def\csname simpleicon@pulumiicon\endcsname {\simpleiconsmapnine\symbol{138}}
- \expandafter\def\csname simpleicon@pumaicon\endcsname {\simpleiconsmapnine\symbol{139}}
- \expandafter\def\csname simpleicon@puppeticon\endcsname {\simpleiconsmapnine\symbol{140}}
- \expandafter\def\csname simpleicon@puppeteericon\endcsname {\simpleiconsmapnine\symbol{141}}
- \expandafter\def\csname simpleicon@purescripticon\endcsname {\simpleiconsmapnine\symbol{142}}
- \expandafter\def\csname simpleicon@purgecssicon\endcsname {\simpleiconsmapnine\symbol{143}}
- \expandafter\def\csname simpleicon@purismicon\endcsname {\simpleiconsmapnine\symbol{144}}
- \expandafter\def\csname simpleicon@pushbulleticon\endcsname {\simpleiconsmapnine\symbol{145}}
- \expandafter\def\csname simpleicon@pushericon\endcsname {\simpleiconsmapnine\symbol{146}}
- \expandafter\def\csname simpleicon@pwaicon\endcsname {\simpleiconsmapnine\symbol{147}}
- \expandafter\def\csname simpleicon@pycharmicon\endcsname {\simpleiconsmapnine\symbol{148}}
- \expandafter\def\csname simpleicon@pycqaicon\endcsname {\simpleiconsmapnine\symbol{149}}
- \expandafter\def\csname simpleicon@pydanticicon\endcsname {\simpleiconsmapnine\symbol{150}}
- \expandafter\def\csname simpleicon@pygicon\endcsname {\simpleiconsmapnine\symbol{151}}
- \expandafter\def\csname simpleicon@pypiicon\endcsname {\simpleiconsmapnine\symbol{152}}
- \expandafter\def\csname simpleicon@pypyicon\endcsname {\simpleiconsmapnine\symbol{153}}
- \expandafter\def\csname simpleicon@pyscaffoldicon\endcsname {\simpleiconsmapnine\symbol{154}}
- \expandafter\def\csname simpleicon@pysyfticon\endcsname {\simpleiconsmapnine\symbol{155}}
- \expandafter\def\csname simpleicon@pytesticon\endcsname {\simpleiconsmapnine\symbol{156}}
- \expandafter\def\csname simpleicon@pythonicon\endcsname {\simpleiconsmapnine\symbol{157}}
- \expandafter\def\csname simpleicon@pythonanywhereicon\endcsname {\simpleiconsmapnine\symbol{158}}
- \expandafter\def\csname simpleicon@pytorchicon\endcsname {\simpleiconsmapnine\symbol{159}}
- \expandafter\def\csname simpleicon@pyupicon\endcsname {\simpleiconsmapnine\symbol{160}}
- \expandafter\def\csname simpleicon@qantasicon\endcsname {\simpleiconsmapnine\symbol{161}}
- \expandafter\def\csname simpleicon@qaseicon\endcsname {\simpleiconsmapnine\symbol{162}}
- \expandafter\def\csname simpleicon@qatarairwaysicon\endcsname {\simpleiconsmapnine\symbol{163}}
- \expandafter\def\csname simpleicon@qbittorrenticon\endcsname {\simpleiconsmapnine\symbol{164}}
- \expandafter\def\csname simpleicon@qemuicon\endcsname {\simpleiconsmapnine\symbol{165}}
- \expandafter\def\csname simpleicon@qgisicon\endcsname {\simpleiconsmapnine\symbol{166}}
- \expandafter\def\csname simpleicon@qiicon\endcsname {\simpleiconsmapnine\symbol{167}}
- \expandafter\def\csname simpleicon@qiitaicon\endcsname {\simpleiconsmapnine\symbol{168}}
- \expandafter\def\csname simpleicon@qiskiticon\endcsname {\simpleiconsmapnine\symbol{169}}
- \expandafter\def\csname simpleicon@qiwiicon\endcsname {\simpleiconsmapnine\symbol{170}}
- \expandafter\def\csname simpleicon@qlikicon\endcsname {\simpleiconsmapnine\symbol{171}}
- \expandafter\def\csname simpleicon@qmkicon\endcsname {\simpleiconsmapnine\symbol{172}}
- \expandafter\def\csname simpleicon@qnapicon\endcsname {\simpleiconsmapnine\symbol{173}}
- \expandafter\def\csname simpleicon@qticon\endcsname {\simpleiconsmapnine\symbol{174}}
- \expandafter\def\csname simpleicon@qualcommicon\endcsname {\simpleiconsmapnine\symbol{175}}
- \expandafter\def\csname simpleicon@qualtricsicon\endcsname {\simpleiconsmapnine\symbol{176}}
- \expandafter\def\csname simpleicon@qualysicon\endcsname {\simpleiconsmapnine\symbol{177}}
- \expandafter\def\csname simpleicon@quantcasticon\endcsname {\simpleiconsmapnine\symbol{178}}
- \expandafter\def\csname simpleicon@quantconnecticon\endcsname {\simpleiconsmapnine\symbol{179}}
- \expandafter\def\csname simpleicon@quarkusicon\endcsname {\simpleiconsmapnine\symbol{180}}
- \expandafter\def\csname simpleicon@quartoicon\endcsname {\simpleiconsmapnine\symbol{181}}
- \expandafter\def\csname simpleicon@quasaricon\endcsname {\simpleiconsmapnine\symbol{182}}
- \expandafter\def\csname simpleicon@qubesosicon\endcsname {\simpleiconsmapnine\symbol{183}}
- \expandafter\def\csname simpleicon@questicon\endcsname {\simpleiconsmapnine\symbol{184}}
- \expandafter\def\csname simpleicon@quickbooksicon\endcsname {\simpleiconsmapnine\symbol{185}}
- \expandafter\def\csname simpleicon@quicklookicon\endcsname {\simpleiconsmapnine\symbol{186}}
- \expandafter\def\csname simpleicon@quicktimeicon\endcsname {\simpleiconsmapnine\symbol{187}}
- \expandafter\def\csname simpleicon@quicktypeicon\endcsname {\simpleiconsmapnine\symbol{188}}
- \expandafter\def\csname simpleicon@quipicon\endcsname {\simpleiconsmapnine\symbol{189}}
- \expandafter\def\csname simpleicon@quizleticon\endcsname {\simpleiconsmapnine\symbol{190}}
- \expandafter\def\csname simpleicon@quoraicon\endcsname {\simpleiconsmapnine\symbol{191}}
- \expandafter\def\csname simpleicon@qwanticon\endcsname {\simpleiconsmapnine\symbol{192}}
- \expandafter\def\csname simpleicon@qwikicon\endcsname {\simpleiconsmapnine\symbol{193}}
- \expandafter\def\csname simpleicon@qwiklabsicon\endcsname {\simpleiconsmapnine\symbol{194}}
- \expandafter\def\csname simpleicon@qzoneicon\endcsname {\simpleiconsmapnine\symbol{195}}
- \expandafter\def\csname simpleicon@ricon\endcsname {\simpleiconsmapnine\symbol{196}}
- \expandafter\def\csname simpleicon@r3icon\endcsname {\simpleiconsmapnine\symbol{197}}
- \expandafter\def\csname simpleicon@rabbitmqicon\endcsname {\simpleiconsmapnine\symbol{198}}
- \expandafter\def\csname simpleicon@racketicon\endcsname {\simpleiconsmapnine\symbol{199}}
- \expandafter\def\csname simpleicon@radaricon\endcsname {\simpleiconsmapnine\symbol{200}}
- \expandafter\def\csname simpleicon@radarricon\endcsname {\simpleiconsmapnine\symbol{201}}
- \expandafter\def\csname simpleicon@radiopublicicon\endcsname {\simpleiconsmapnine\symbol{202}}
- \expandafter\def\csname simpleicon@radixuiicon\endcsname {\simpleiconsmapnine\symbol{203}}
- \expandafter\def\csname simpleicon@radstudioicon\endcsname {\simpleiconsmapnine\symbol{204}}
- \expandafter\def\csname simpleicon@railwayicon\endcsname {\simpleiconsmapnine\symbol{205}}
- \expandafter\def\csname simpleicon@rainmetericon\endcsname {\simpleiconsmapnine\symbol{206}}
- \expandafter\def\csname simpleicon@rakutenicon\endcsname {\simpleiconsmapnine\symbol{207}}
- \expandafter\def\csname simpleicon@ramicon\endcsname {\simpleiconsmapnine\symbol{208}}
- \expandafter\def\csname simpleicon@ranchericon\endcsname {\simpleiconsmapnine\symbol{209}}
- \expandafter\def\csname simpleicon@rapidicon\endcsname {\simpleiconsmapnine\symbol{210}}
- \expandafter\def\csname simpleicon@raribleicon\endcsname {\simpleiconsmapnine\symbol{211}}
- \expandafter\def\csname simpleicon@rasaicon\endcsname {\simpleiconsmapnine\symbol{212}}
- \expandafter\def\csname simpleicon@raspberrypiicon\endcsname {\simpleiconsmapnine\symbol{213}}
- \expandafter\def\csname simpleicon@ravelryicon\endcsname {\simpleiconsmapnine\symbol{214}}
- \expandafter\def\csname simpleicon@rayicon\endcsname {\simpleiconsmapnine\symbol{215}}
- \expandafter\def\csname simpleicon@raycasticon\endcsname {\simpleiconsmapnine\symbol{216}}
- \expandafter\def\csname simpleicon@raylibicon\endcsname {\simpleiconsmapnine\symbol{217}}
- \expandafter\def\csname simpleicon@razericon\endcsname {\simpleiconsmapnine\symbol{218}}
- \expandafter\def\csname simpleicon@razorpayicon\endcsname {\simpleiconsmapnine\symbol{219}}
- \expandafter\def\csname simpleicon@rcloneicon\endcsname {\simpleiconsmapnine\symbol{220}}
- \expandafter\def\csname simpleicon@reacticon\endcsname {\simpleiconsmapnine\symbol{221}}
- \expandafter\def\csname simpleicon@reactbootstrapicon\endcsname {\simpleiconsmapnine\symbol{222}}
- \expandafter\def\csname simpleicon@reacthookformicon\endcsname {\simpleiconsmapnine\symbol{223}}
- \expandafter\def\csname simpleicon@reactiveresumeicon\endcsname {\simpleiconsmapnine\symbol{224}}
- \expandafter\def\csname simpleicon@reactivexicon\endcsname {\simpleiconsmapnine\symbol{225}}
- \expandafter\def\csname simpleicon@reactosicon\endcsname {\simpleiconsmapnine\symbol{226}}
- \expandafter\def\csname simpleicon@reactqueryicon\endcsname {\simpleiconsmapnine\symbol{227}}
- \expandafter\def\csname simpleicon@reactroutericon\endcsname {\simpleiconsmapnine\symbol{228}}
- \expandafter\def\csname simpleicon@reacttableicon\endcsname {\simpleiconsmapnine\symbol{229}}
- \expandafter\def\csname simpleicon@readdotcvicon\endcsname {\simpleiconsmapnine\symbol{230}}
- \expandafter\def\csname simpleicon@readmeicon\endcsname {\simpleiconsmapnine\symbol{231}}
- \expandafter\def\csname simpleicon@readthedocsicon\endcsname {\simpleiconsmapnine\symbol{232}}
- \expandafter\def\csname simpleicon@realmicon\endcsname {\simpleiconsmapnine\symbol{233}}
- \expandafter\def\csname simpleicon@reasonicon\endcsname {\simpleiconsmapnine\symbol{234}}
- \expandafter\def\csname simpleicon@reasonstudiosicon\endcsname {\simpleiconsmapnine\symbol{235}}
- \expandafter\def\csname simpleicon@recoilicon\endcsname {\simpleiconsmapnine\symbol{236}}
- \expandafter\def\csname simpleicon@redicon\endcsname {\simpleiconsmapnine\symbol{237}}
- \expandafter\def\csname simpleicon@redashicon\endcsname {\simpleiconsmapnine\symbol{238}}
- \expandafter\def\csname simpleicon@redbubbleicon\endcsname {\simpleiconsmapnine\symbol{239}}
- \expandafter\def\csname simpleicon@redbullicon\endcsname {\simpleiconsmapnine\symbol{240}}
- \expandafter\def\csname simpleicon@redditicon\endcsname {\simpleiconsmapnine\symbol{241}}
- \expandafter\def\csname simpleicon@redhaticon\endcsname {\simpleiconsmapnine\symbol{242}}
- \expandafter\def\csname simpleicon@redhatopenshifticon\endcsname {\simpleiconsmapnine\symbol{243}}
- \expandafter\def\csname simpleicon@redisicon\endcsname {\simpleiconsmapnine\symbol{244}}
- \expandafter\def\csname simpleicon@redmineicon\endcsname {\simpleiconsmapnine\symbol{245}}
- \expandafter\def\csname simpleicon@redoxicon\endcsname {\simpleiconsmapnine\symbol{246}}
- \expandafter\def\csname simpleicon@redragonicon\endcsname {\simpleiconsmapnine\symbol{247}}
- \expandafter\def\csname simpleicon@redsysicon\endcsname {\simpleiconsmapnine\symbol{248}}
- \expandafter\def\csname simpleicon@reduxicon\endcsname {\simpleiconsmapnine\symbol{249}}
- \expandafter\def\csname simpleicon@reduxsagaicon\endcsname {\simpleiconsmapnine\symbol{250}}
- \expandafter\def\csname simpleicon@redwoodjsicon\endcsname {\simpleiconsmapnine\symbol{251}}
- \expandafter\def\csname simpleicon@reebokicon\endcsname {\simpleiconsmapnine\symbol{252}}
- \expandafter\def\csname simpleicon@refineicon\endcsname {\simpleiconsmapnine\symbol{253}}
- \expandafter\def\csname simpleicon@relayicon\endcsname {\simpleiconsmapnine\symbol{254}}
- \expandafter\def\csname simpleicon@relianceindustrieslimitedicon\endcsname {\simpleiconsmapnine\symbol{255}}
- \expandafter\def\csname simpleicon@remarkicon\endcsname {\simpleiconsmaponezero\symbol{0}}
- \expandafter\def\csname simpleicon@remedyentertainmenticon\endcsname {\simpleiconsmaponezero\symbol{1}}
- \expandafter\def\csname simpleicon@remixicon\endcsname {\simpleiconsmaponezero\symbol{2}}
- \expandafter\def\csname simpleicon@removedotbgicon\endcsname {\simpleiconsmaponezero\symbol{3}}
- \expandafter\def\csname simpleicon@renaulticon\endcsname {\simpleiconsmaponezero\symbol{4}}
- \expandafter\def\csname simpleicon@rendericon\endcsname {\simpleiconsmaponezero\symbol{5}}
- \expandafter\def\csname simpleicon@renovateicon\endcsname {\simpleiconsmaponezero\symbol{6}}
- \expandafter\def\csname simpleicon@renpyicon\endcsname {\simpleiconsmaponezero\symbol{7}}
- \expandafter\def\csname simpleicon@renrenicon\endcsname {\simpleiconsmaponezero\symbol{8}}
- \expandafter\def\csname simpleicon@repliticon\endcsname {\simpleiconsmaponezero\symbol{9}}
- \expandafter\def\csname simpleicon@republicofgamersicon\endcsname {\simpleiconsmaponezero\symbol{10}}
- \expandafter\def\csname simpleicon@rescripticon\endcsname {\simpleiconsmaponezero\symbol{11}}
- \expandafter\def\csname simpleicon@rescuetimeicon\endcsname {\simpleiconsmaponezero\symbol{12}}
- \expandafter\def\csname simpleicon@researchgateicon\endcsname {\simpleiconsmaponezero\symbol{13}}
- \expandafter\def\csname simpleicon@resendicon\endcsname {\simpleiconsmaponezero\symbol{14}}
- \expandafter\def\csname simpleicon@resharpericon\endcsname {\simpleiconsmaponezero\symbol{15}}
- \expandafter\def\csname simpleicon@resurrectionremixosicon\endcsname {\simpleiconsmaponezero\symbol{16}}
- \expandafter\def\csname simpleicon@retoolicon\endcsname {\simpleiconsmaponezero\symbol{17}}
- \expandafter\def\csname simpleicon@retroarchicon\endcsname {\simpleiconsmaponezero\symbol{18}}
- \expandafter\def\csname simpleicon@retropieicon\endcsname {\simpleiconsmaponezero\symbol{19}}
- \expandafter\def\csname simpleicon@revancedicon\endcsname {\simpleiconsmaponezero\symbol{20}}
- \expandafter\def\csname simpleicon@revealdotjsicon\endcsname {\simpleiconsmaponezero\symbol{21}}
- \expandafter\def\csname simpleicon@reverbnationicon\endcsname {\simpleiconsmaponezero\symbol{22}}
- \expandafter\def\csname simpleicon@revoltdotchaticon\endcsname {\simpleiconsmaponezero\symbol{23}}
- \expandafter\def\csname simpleicon@revoluticon\endcsname {\simpleiconsmaponezero\symbol{24}}
- \expandafter\def\csname simpleicon@revueicon\endcsname {\simpleiconsmaponezero\symbol{25}}
- \expandafter\def\csname simpleicon@reweicon\endcsname {\simpleiconsmaponezero\symbol{26}}
- \expandafter\def\csname simpleicon@rezgoicon\endcsname {\simpleiconsmaponezero\symbol{27}}
- \expandafter\def\csname simpleicon@rhinocerosicon\endcsname {\simpleiconsmaponezero\symbol{28}}
- \expandafter\def\csname simpleicon@richicon\endcsname {\simpleiconsmaponezero\symbol{29}}
- \expandafter\def\csname simpleicon@ridericon\endcsname {\simpleiconsmaponezero\symbol{30}}
- \expandafter\def\csname simpleicon@rimacautomobiliicon\endcsname {\simpleiconsmaponezero\symbol{31}}
- \expandafter\def\csname simpleicon@rimeicon\endcsname {\simpleiconsmaponezero\symbol{32}}
- \expandafter\def\csname simpleicon@ringicon\endcsname {\simpleiconsmaponezero\symbol{33}}
- \expandafter\def\csname simpleicon@riotgamesicon\endcsname {\simpleiconsmaponezero\symbol{34}}
- \expandafter\def\csname simpleicon@rippleicon\endcsname {\simpleiconsmaponezero\symbol{35}}
- \expandafter\def\csname simpleicon@riscvicon\endcsname {\simpleiconsmaponezero\symbol{36}}
- \expandafter\def\csname simpleicon@riseupicon\endcsname {\simpleiconsmaponezero\symbol{37}}
- \expandafter\def\csname simpleicon@ritzcarltonicon\endcsname {\simpleiconsmaponezero\symbol{38}}
- \expandafter\def\csname simpleicon@riveicon\endcsname {\simpleiconsmaponezero\symbol{39}}
- \expandafter\def\csname simpleicon@roadmapdotshicon\endcsname {\simpleiconsmaponezero\symbol{40}}
- \expandafter\def\csname simpleicon@roamresearchicon\endcsname {\simpleiconsmaponezero\symbol{41}}
- \expandafter\def\csname simpleicon@robinhoodicon\endcsname {\simpleiconsmaponezero\symbol{42}}
- \expandafter\def\csname simpleicon@robloxicon\endcsname {\simpleiconsmaponezero\symbol{43}}
- \expandafter\def\csname simpleicon@robloxstudioicon\endcsname {\simpleiconsmaponezero\symbol{44}}
- \expandafter\def\csname simpleicon@robotframeworkicon\endcsname {\simpleiconsmaponezero\symbol{45}}
- \expandafter\def\csname simpleicon@rocketicon\endcsname {\simpleiconsmaponezero\symbol{46}}
- \expandafter\def\csname simpleicon@rocketdotchaticon\endcsname {\simpleiconsmaponezero\symbol{47}}
- \expandafter\def\csname simpleicon@rocksdbicon\endcsname {\simpleiconsmaponezero\symbol{48}}
- \expandafter\def\csname simpleicon@rockstargamesicon\endcsname {\simpleiconsmaponezero\symbol{49}}
- \expandafter\def\csname simpleicon@rockwellautomationicon\endcsname {\simpleiconsmaponezero\symbol{50}}
- \expandafter\def\csname simpleicon@rockylinuxicon\endcsname {\simpleiconsmaponezero\symbol{51}}
- \expandafter\def\csname simpleicon@rokuicon\endcsname {\simpleiconsmaponezero\symbol{52}}
- \expandafter\def\csname simpleicon@roll20icon\endcsname {\simpleiconsmaponezero\symbol{53}}
- \expandafter\def\csname simpleicon@rollsroyceicon\endcsname {\simpleiconsmaponezero\symbol{54}}
- \expandafter\def\csname simpleicon@rollupdotjsicon\endcsname {\simpleiconsmaponezero\symbol{55}}
- \expandafter\def\csname simpleicon@roonicon\endcsname {\simpleiconsmaponezero\symbol{56}}
- \expandafter\def\csname simpleicon@rootmeicon\endcsname {\simpleiconsmaponezero\symbol{57}}
- \expandafter\def\csname simpleicon@rootsicon\endcsname {\simpleiconsmaponezero\symbol{58}}
- \expandafter\def\csname simpleicon@rootsbedrockicon\endcsname {\simpleiconsmaponezero\symbol{59}}
- \expandafter\def\csname simpleicon@rootssageicon\endcsname {\simpleiconsmaponezero\symbol{60}}
- \expandafter\def\csname simpleicon@rosicon\endcsname {\simpleiconsmaponezero\symbol{61}}
- \expandafter\def\csname simpleicon@rossmannicon\endcsname {\simpleiconsmaponezero\symbol{62}}
- \expandafter\def\csname simpleicon@rotaryinternationalicon\endcsname {\simpleiconsmaponezero\symbol{63}}
- \expandafter\def\csname simpleicon@rottentomatoesicon\endcsname {\simpleiconsmaponezero\symbol{64}}
- \expandafter\def\csname simpleicon@roundcubeicon\endcsname {\simpleiconsmaponezero\symbol{65}}
- \expandafter\def\csname simpleicon@rsocketicon\endcsname {\simpleiconsmaponezero\symbol{66}}
- \expandafter\def\csname simpleicon@rssicon\endcsname {\simpleiconsmaponezero\symbol{67}}
- \expandafter\def\csname simpleicon@rstudioideicon\endcsname {\simpleiconsmaponezero\symbol{68}}
- \expandafter\def\csname simpleicon@rteicon\endcsname {\simpleiconsmaponezero\symbol{69}}
- \expandafter\def\csname simpleicon@rtlicon\endcsname {\simpleiconsmaponezero\symbol{70}}
- \expandafter\def\csname simpleicon@rtlzweiicon\endcsname {\simpleiconsmaponezero\symbol{71}}
- \expandafter\def\csname simpleicon@rtmicon\endcsname {\simpleiconsmaponezero\symbol{72}}
- \expandafter\def\csname simpleicon@rubocopicon\endcsname {\simpleiconsmaponezero\symbol{73}}
- \expandafter\def\csname simpleicon@rubyicon\endcsname {\simpleiconsmaponezero\symbol{74}}
- \expandafter\def\csname simpleicon@rubygemsicon\endcsname {\simpleiconsmaponezero\symbol{75}}
- \expandafter\def\csname simpleicon@rubymineicon\endcsname {\simpleiconsmaponezero\symbol{76}}
- \expandafter\def\csname simpleicon@rubyonrailsicon\endcsname {\simpleiconsmaponezero\symbol{77}}
- \expandafter\def\csname simpleicon@rubysinatraicon\endcsname {\simpleiconsmaponezero\symbol{78}}
- \expandafter\def\csname simpleicon@rufficon\endcsname {\simpleiconsmaponezero\symbol{79}}
- \expandafter\def\csname simpleicon@rumahwebicon\endcsname {\simpleiconsmaponezero\symbol{80}}
- \expandafter\def\csname simpleicon@rumbleicon\endcsname {\simpleiconsmaponezero\symbol{81}}
- \expandafter\def\csname simpleicon@rundeckicon\endcsname {\simpleiconsmaponezero\symbol{82}}
- \expandafter\def\csname simpleicon@runkeepericon\endcsname {\simpleiconsmaponezero\symbol{83}}
- \expandafter\def\csname simpleicon@runkiticon\endcsname {\simpleiconsmaponezero\symbol{84}}
- \expandafter\def\csname simpleicon@runrundotiticon\endcsname {\simpleiconsmaponezero\symbol{85}}
- \expandafter\def\csname simpleicon@rusticon\endcsname {\simpleiconsmaponezero\symbol{86}}
- \expandafter\def\csname simpleicon@rustdeskicon\endcsname {\simpleiconsmaponezero\symbol{87}}
- \expandafter\def\csname simpleicon@rxdbicon\endcsname {\simpleiconsmaponezero\symbol{88}}
- \expandafter\def\csname simpleicon@ryanairicon\endcsname {\simpleiconsmaponezero\symbol{89}}
- \expandafter\def\csname simpleicon@ryeicon\endcsname {\simpleiconsmaponezero\symbol{90}}
- \expandafter\def\csname simpleicon@s7airlinesicon\endcsname {\simpleiconsmaponezero\symbol{91}}
- \expandafter\def\csname simpleicon@sabanciicon\endcsname {\simpleiconsmaponezero\symbol{92}}
- \expandafter\def\csname simpleicon@safariicon\endcsname {\simpleiconsmaponezero\symbol{93}}
- \expandafter\def\csname simpleicon@sageicon\endcsname {\simpleiconsmaponezero\symbol{94}}
- \expandafter\def\csname simpleicon@sahibindenicon\endcsname {\simpleiconsmaponezero\symbol{95}}
- \expandafter\def\csname simpleicon@sailfishosicon\endcsname {\simpleiconsmaponezero\symbol{96}}
- \expandafter\def\csname simpleicon@sailsdotjsicon\endcsname {\simpleiconsmaponezero\symbol{97}}
- \expandafter\def\csname simpleicon@salesforceicon\endcsname {\simpleiconsmaponezero\symbol{98}}
- \expandafter\def\csname simpleicon@sallaicon\endcsname {\simpleiconsmaponezero\symbol{99}}
- \expandafter\def\csname simpleicon@saltprojecticon\endcsname {\simpleiconsmaponezero\symbol{100}}
- \expandafter\def\csname simpleicon@samsclubicon\endcsname {\simpleiconsmaponezero\symbol{101}}
- \expandafter\def\csname simpleicon@samsungicon\endcsname {\simpleiconsmaponezero\symbol{102}}
- \expandafter\def\csname simpleicon@samsungpayicon\endcsname {\simpleiconsmaponezero\symbol{103}}
- \expandafter\def\csname simpleicon@sandiskicon\endcsname {\simpleiconsmaponezero\symbol{104}}
- \expandafter\def\csname simpleicon@sanfranciscomunicipalrailwayicon\endcsname {\simpleiconsmaponezero\symbol{105}}
- \expandafter\def\csname simpleicon@sanicicon\endcsname {\simpleiconsmaponezero\symbol{106}}
- \expandafter\def\csname simpleicon@sanityicon\endcsname {\simpleiconsmaponezero\symbol{107}}
- \expandafter\def\csname simpleicon@saopaulometroicon\endcsname {\simpleiconsmaponezero\symbol{108}}
- \expandafter\def\csname simpleicon@sapicon\endcsname {\simpleiconsmaponezero\symbol{109}}
- \expandafter\def\csname simpleicon@sartoriusicon\endcsname {\simpleiconsmaponezero\symbol{110}}
- \expandafter\def\csname simpleicon@sassicon\endcsname {\simpleiconsmaponezero\symbol{111}}
- \expandafter\def\csname simpleicon@sat1icon\endcsname {\simpleiconsmaponezero\symbol{112}}
- \expandafter\def\csname simpleicon@satelliteicon\endcsname {\simpleiconsmaponezero\symbol{113}}
- \expandafter\def\csname simpleicon@saturnicon\endcsname {\simpleiconsmaponezero\symbol{114}}
- \expandafter\def\csname simpleicon@saucelabsicon\endcsname {\simpleiconsmaponezero\symbol{115}}
- \expandafter\def\csname simpleicon@saudiaicon\endcsname {\simpleiconsmaponezero\symbol{116}}
- \expandafter\def\csname simpleicon@scalaicon\endcsname {\simpleiconsmaponezero\symbol{117}}
- \expandafter\def\csname simpleicon@scalewayicon\endcsname {\simpleiconsmaponezero\symbol{118}}
- \expandafter\def\csname simpleicon@scaniaicon\endcsname {\simpleiconsmaponezero\symbol{119}}
- \expandafter\def\csname simpleicon@schneiderelectricicon\endcsname {\simpleiconsmaponezero\symbol{120}}
- \expandafter\def\csname simpleicon@scikitlearnicon\endcsname {\simpleiconsmaponezero\symbol{121}}
- \expandafter\def\csname simpleicon@scilabicon\endcsname {\simpleiconsmaponezero\symbol{122}}
- \expandafter\def\csname simpleicon@scipyicon\endcsname {\simpleiconsmaponezero\symbol{123}}
- \expandafter\def\csname simpleicon@scopusicon\endcsname {\simpleiconsmaponezero\symbol{124}}
- \expandafter\def\csname simpleicon@scpfoundationicon\endcsname {\simpleiconsmaponezero\symbol{125}}
- \expandafter\def\csname simpleicon@scrapboxicon\endcsname {\simpleiconsmaponezero\symbol{126}}
- \expandafter\def\csname simpleicon@scrapyicon\endcsname {\simpleiconsmaponezero\symbol{127}}
- \expandafter\def\csname simpleicon@scratchicon\endcsname {\simpleiconsmaponezero\symbol{128}}
- \expandafter\def\csname simpleicon@screencastifyicon\endcsname {\simpleiconsmaponezero\symbol{129}}
- \expandafter\def\csname simpleicon@scribdicon\endcsname {\simpleiconsmaponezero\symbol{130}}
- \expandafter\def\csname simpleicon@scrimbaicon\endcsname {\simpleiconsmaponezero\symbol{131}}
- \expandafter\def\csname simpleicon@scrollrevealicon\endcsname {\simpleiconsmaponezero\symbol{132}}
- \expandafter\def\csname simpleicon@scrumallianceicon\endcsname {\simpleiconsmaponezero\symbol{133}}
- \expandafter\def\csname simpleicon@scrutinizerciicon\endcsname {\simpleiconsmaponezero\symbol{134}}
- \expandafter\def\csname simpleicon@scylladbicon\endcsname {\simpleiconsmaponezero\symbol{135}}
- \expandafter\def\csname simpleicon@seagateicon\endcsname {\simpleiconsmaponezero\symbol{136}}
- \expandafter\def\csname simpleicon@searxngicon\endcsname {\simpleiconsmaponezero\symbol{137}}
- \expandafter\def\csname simpleicon@seaticon\endcsname {\simpleiconsmaponezero\symbol{138}}
- \expandafter\def\csname simpleicon@seatgeekicon\endcsname {\simpleiconsmaponezero\symbol{139}}
- \expandafter\def\csname simpleicon@securityscorecardicon\endcsname {\simpleiconsmaponezero\symbol{140}}
- \expandafter\def\csname simpleicon@sefariaicon\endcsname {\simpleiconsmaponezero\symbol{141}}
- \expandafter\def\csname simpleicon@segaicon\endcsname {\simpleiconsmaponezero\symbol{142}}
- \expandafter\def\csname simpleicon@seleniumicon\endcsname {\simpleiconsmaponezero\symbol{143}}
- \expandafter\def\csname simpleicon@sellfyicon\endcsname {\simpleiconsmaponezero\symbol{144}}
- \expandafter\def\csname simpleicon@semanticreleaseicon\endcsname {\simpleiconsmaponezero\symbol{145}}
- \expandafter\def\csname simpleicon@semanticscholaricon\endcsname {\simpleiconsmaponezero\symbol{146}}
- \expandafter\def\csname simpleicon@semanticuiicon\endcsname {\simpleiconsmaponezero\symbol{147}}
- \expandafter\def\csname simpleicon@semanticuireacticon\endcsname {\simpleiconsmaponezero\symbol{148}}
- \expandafter\def\csname simpleicon@semanticwebicon\endcsname {\simpleiconsmaponezero\symbol{149}}
- \expandafter\def\csname simpleicon@semaphoreciicon\endcsname {\simpleiconsmaponezero\symbol{150}}
- \expandafter\def\csname simpleicon@semrushicon\endcsname {\simpleiconsmaponezero\symbol{151}}
- \expandafter\def\csname simpleicon@semvericon\endcsname {\simpleiconsmaponezero\symbol{152}}
- \expandafter\def\csname simpleicon@senchaicon\endcsname {\simpleiconsmaponezero\symbol{153}}
- \expandafter\def\csname simpleicon@sennheisericon\endcsname {\simpleiconsmaponezero\symbol{154}}
- \expandafter\def\csname simpleicon@sensuicon\endcsname {\simpleiconsmaponezero\symbol{155}}
- \expandafter\def\csname simpleicon@sentryicon\endcsname {\simpleiconsmaponezero\symbol{156}}
- \expandafter\def\csname simpleicon@sepaicon\endcsname {\simpleiconsmaponezero\symbol{157}}
- \expandafter\def\csname simpleicon@sequelizeicon\endcsname {\simpleiconsmaponezero\symbol{158}}
- \expandafter\def\csname simpleicon@serverfaulticon\endcsname {\simpleiconsmaponezero\symbol{159}}
- \expandafter\def\csname simpleicon@serverlessicon\endcsname {\simpleiconsmaponezero\symbol{160}}
- \expandafter\def\csname simpleicon@sessionicon\endcsname {\simpleiconsmaponezero\symbol{161}}
- \expandafter\def\csname simpleicon@sessionizeicon\endcsname {\simpleiconsmaponezero\symbol{162}}
- \expandafter\def\csname simpleicon@setappicon\endcsname {\simpleiconsmaponezero\symbol{163}}
- \expandafter\def\csname simpleicon@sfmlicon\endcsname {\simpleiconsmaponezero\symbol{164}}
- \expandafter\def\csname simpleicon@shadcnuiicon\endcsname {\simpleiconsmaponezero\symbol{165}}
- \expandafter\def\csname simpleicon@shadowicon\endcsname {\simpleiconsmaponezero\symbol{166}}
- \expandafter\def\csname simpleicon@shanghaimetroicon\endcsname {\simpleiconsmaponezero\symbol{167}}
- \expandafter\def\csname simpleicon@sharexicon\endcsname {\simpleiconsmaponezero\symbol{168}}
- \expandafter\def\csname simpleicon@sharpicon\endcsname {\simpleiconsmaponezero\symbol{169}}
- \expandafter\def\csname simpleicon@shazamicon\endcsname {\simpleiconsmaponezero\symbol{170}}
- \expandafter\def\csname simpleicon@shellicon\endcsname {\simpleiconsmaponezero\symbol{171}}
- \expandafter\def\csname simpleicon@shellyicon\endcsname {\simpleiconsmaponezero\symbol{172}}
- \expandafter\def\csname simpleicon@shenzhenmetroicon\endcsname {\simpleiconsmaponezero\symbol{173}}
- \expandafter\def\csname simpleicon@shieldsdotioicon\endcsname {\simpleiconsmaponezero\symbol{174}}
- \expandafter\def\csname simpleicon@shikimoriicon\endcsname {\simpleiconsmaponezero\symbol{175}}
- \expandafter\def\csname simpleicon@shopeeicon\endcsname {\simpleiconsmaponezero\symbol{176}}
- \expandafter\def\csname simpleicon@shopifyicon\endcsname {\simpleiconsmaponezero\symbol{177}}
- \expandafter\def\csname simpleicon@shopwareicon\endcsname {\simpleiconsmaponezero\symbol{178}}
- \expandafter\def\csname simpleicon@shortcuticon\endcsname {\simpleiconsmaponezero\symbol{179}}
- \expandafter\def\csname simpleicon@showpadicon\endcsname {\simpleiconsmaponezero\symbol{180}}
- \expandafter\def\csname simpleicon@showtimeicon\endcsname {\simpleiconsmaponezero\symbol{181}}
- \expandafter\def\csname simpleicon@showwcaseicon\endcsname {\simpleiconsmaponezero\symbol{182}}
- \expandafter\def\csname simpleicon@shutterstockicon\endcsname {\simpleiconsmaponezero\symbol{183}}
- \expandafter\def\csname simpleicon@sidekiqicon\endcsname {\simpleiconsmaponezero\symbol{184}}
- \expandafter\def\csname simpleicon@sidequesticon\endcsname {\simpleiconsmaponezero\symbol{185}}
- \expandafter\def\csname simpleicon@siemensicon\endcsname {\simpleiconsmaponezero\symbol{186}}
- \expandafter\def\csname simpleicon@sifiveicon\endcsname {\simpleiconsmaponezero\symbol{187}}
- \expandafter\def\csname simpleicon@signalicon\endcsname {\simpleiconsmaponezero\symbol{188}}
- \expandafter\def\csname simpleicon@similarwebicon\endcsname {\simpleiconsmaponezero\symbol{189}}
- \expandafter\def\csname simpleicon@simklicon\endcsname {\simpleiconsmaponezero\symbol{190}}
- \expandafter\def\csname simpleicon@simpleanalyticsicon\endcsname {\simpleiconsmaponezero\symbol{191}}
- \expandafter\def\csname simpleicon@simpleiconsicon\endcsname {\simpleiconsmaponezero\symbol{192}}
- \expandafter\def\csname simpleicon@simpleloginicon\endcsname {\simpleiconsmaponezero\symbol{193}}
- \expandafter\def\csname simpleicon@simplenoteicon\endcsname {\simpleiconsmaponezero\symbol{194}}
- \expandafter\def\csname simpleicon@sinaweiboicon\endcsname {\simpleiconsmaponezero\symbol{195}}
- \expandafter\def\csname simpleicon@singaporeairlinesicon\endcsname {\simpleiconsmaponezero\symbol{196}}
- \expandafter\def\csname simpleicon@singlestoreicon\endcsname {\simpleiconsmaponezero\symbol{197}}
- \expandafter\def\csname simpleicon@sitecoreicon\endcsname {\simpleiconsmaponezero\symbol{198}}
- \expandafter\def\csname simpleicon@sitepointicon\endcsname {\simpleiconsmaponezero\symbol{199}}
- \expandafter\def\csname simpleicon@siyuanicon\endcsname {\simpleiconsmaponezero\symbol{200}}
- \expandafter\def\csname simpleicon@skaffoldicon\endcsname {\simpleiconsmaponezero\symbol{201}}
- \expandafter\def\csname simpleicon@sketchicon\endcsname {\simpleiconsmaponezero\symbol{202}}
- \expandafter\def\csname simpleicon@sketchfabicon\endcsname {\simpleiconsmaponezero\symbol{203}}
- \expandafter\def\csname simpleicon@sketchupicon\endcsname {\simpleiconsmaponezero\symbol{204}}
- \expandafter\def\csname simpleicon@skillshareicon\endcsname {\simpleiconsmaponezero\symbol{205}}
- \expandafter\def\csname simpleicon@skodaicon\endcsname {\simpleiconsmaponezero\symbol{206}}
- \expandafter\def\csname simpleicon@skyicon\endcsname {\simpleiconsmaponezero\symbol{207}}
- \expandafter\def\csname simpleicon@skypackicon\endcsname {\simpleiconsmaponezero\symbol{208}}
- \expandafter\def\csname simpleicon@skyrockicon\endcsname {\simpleiconsmaponezero\symbol{209}}
- \expandafter\def\csname simpleicon@slackicon\endcsname {\simpleiconsmaponezero\symbol{210}}
- \expandafter\def\csname simpleicon@slackwareicon\endcsname {\simpleiconsmaponezero\symbol{211}}
- \expandafter\def\csname simpleicon@slashdoticon\endcsname {\simpleiconsmaponezero\symbol{212}}
- \expandafter\def\csname simpleicon@slickpicicon\endcsname {\simpleiconsmaponezero\symbol{213}}
- \expandafter\def\csname simpleicon@slidesicon\endcsname {\simpleiconsmaponezero\symbol{214}}
- \expandafter\def\csname simpleicon@slideshareicon\endcsname {\simpleiconsmaponezero\symbol{215}}
- \expandafter\def\csname simpleicon@slinticon\endcsname {\simpleiconsmaponezero\symbol{216}}
- \expandafter\def\csname simpleicon@smarticon\endcsname {\simpleiconsmaponezero\symbol{217}}
- \expandafter\def\csname simpleicon@smartthingsicon\endcsname {\simpleiconsmaponezero\symbol{218}}
- \expandafter\def\csname simpleicon@smashdotggicon\endcsname {\simpleiconsmaponezero\symbol{219}}
- \expandafter\def\csname simpleicon@smashingmagazineicon\endcsname {\simpleiconsmaponezero\symbol{220}}
- \expandafter\def\csname simpleicon@smrticon\endcsname {\simpleiconsmaponezero\symbol{221}}
- \expandafter\def\csname simpleicon@smugmugicon\endcsname {\simpleiconsmaponezero\symbol{222}}
- \expandafter\def\csname simpleicon@snapchaticon\endcsname {\simpleiconsmaponezero\symbol{223}}
- \expandafter\def\csname simpleicon@snapcrafticon\endcsname {\simpleiconsmaponezero\symbol{224}}
- \expandafter\def\csname simpleicon@sncficon\endcsname {\simpleiconsmaponezero\symbol{225}}
- \expandafter\def\csname simpleicon@snorticon\endcsname {\simpleiconsmaponezero\symbol{226}}
- \expandafter\def\csname simpleicon@snowflakeicon\endcsname {\simpleiconsmaponezero\symbol{227}}
- \expandafter\def\csname simpleicon@snowpackicon\endcsname {\simpleiconsmaponezero\symbol{228}}
- \expandafter\def\csname simpleicon@snykicon\endcsname {\simpleiconsmaponezero\symbol{229}}
- \expandafter\def\csname simpleicon@socialbladeicon\endcsname {\simpleiconsmaponezero\symbol{230}}
- \expandafter\def\csname simpleicon@society6icon\endcsname {\simpleiconsmaponezero\symbol{231}}
- \expandafter\def\csname simpleicon@socketdotioicon\endcsname {\simpleiconsmaponezero\symbol{232}}
- \expandafter\def\csname simpleicon@softpediaicon\endcsname {\simpleiconsmaponezero\symbol{233}}
- \expandafter\def\csname simpleicon@sogouicon\endcsname {\simpleiconsmaponezero\symbol{234}}
- \expandafter\def\csname simpleicon@solanaicon\endcsname {\simpleiconsmaponezero\symbol{235}}
- \expandafter\def\csname simpleicon@solidicon\endcsname {\simpleiconsmaponezero\symbol{236}}
- \expandafter\def\csname simpleicon@solidityicon\endcsname {\simpleiconsmaponezero\symbol{237}}
- \expandafter\def\csname simpleicon@sololearnicon\endcsname {\simpleiconsmaponezero\symbol{238}}
- \expandafter\def\csname simpleicon@solusicon\endcsname {\simpleiconsmaponezero\symbol{239}}
- \expandafter\def\csname simpleicon@sonaricon\endcsname {\simpleiconsmaponezero\symbol{240}}
- \expandafter\def\csname simpleicon@sonarcloudicon\endcsname {\simpleiconsmaponezero\symbol{241}}
- \expandafter\def\csname simpleicon@sonarlinticon\endcsname {\simpleiconsmaponezero\symbol{242}}
- \expandafter\def\csname simpleicon@sonarqubeicon\endcsname {\simpleiconsmaponezero\symbol{243}}
- \expandafter\def\csname simpleicon@sonarricon\endcsname {\simpleiconsmaponezero\symbol{244}}
- \expandafter\def\csname simpleicon@sonatypeicon\endcsname {\simpleiconsmaponezero\symbol{245}}
- \expandafter\def\csname simpleicon@songkickicon\endcsname {\simpleiconsmaponezero\symbol{246}}
- \expandafter\def\csname simpleicon@songodaicon\endcsname {\simpleiconsmaponezero\symbol{247}}
- \expandafter\def\csname simpleicon@sonicwallicon\endcsname {\simpleiconsmaponezero\symbol{248}}
- \expandafter\def\csname simpleicon@sonosicon\endcsname {\simpleiconsmaponezero\symbol{249}}
- \expandafter\def\csname simpleicon@sonyicon\endcsname {\simpleiconsmaponezero\symbol{250}}
- \expandafter\def\csname simpleicon@sorianaicon\endcsname {\simpleiconsmaponezero\symbol{251}}
- \expandafter\def\csname simpleicon@soundchartsicon\endcsname {\simpleiconsmaponezero\symbol{252}}
- \expandafter\def\csname simpleicon@soundcloudicon\endcsname {\simpleiconsmaponezero\symbol{253}}
- \expandafter\def\csname simpleicon@sourceengineicon\endcsname {\simpleiconsmaponezero\symbol{254}}
- \expandafter\def\csname simpleicon@sourceforgeicon\endcsname {\simpleiconsmaponezero\symbol{255}}
- \expandafter\def\csname simpleicon@sourcehuticon\endcsname {\simpleiconsmaponeone\symbol{0}}
- \expandafter\def\csname simpleicon@sourcetreeicon\endcsname {\simpleiconsmaponeone\symbol{1}}
- \expandafter\def\csname simpleicon@southwestairlinesicon\endcsname {\simpleiconsmaponeone\symbol{2}}
- \expandafter\def\csname simpleicon@spacemacsicon\endcsname {\simpleiconsmaponeone\symbol{3}}
- \expandafter\def\csname simpleicon@spaceshipicon\endcsname {\simpleiconsmaponeone\symbol{4}}
- \expandafter\def\csname simpleicon@spacexicon\endcsname {\simpleiconsmaponeone\symbol{5}}
- \expandafter\def\csname simpleicon@spacyicon\endcsname {\simpleiconsmaponeone\symbol{6}}
- \expandafter\def\csname simpleicon@sparkaricon\endcsname {\simpleiconsmaponeone\symbol{7}}
- \expandafter\def\csname simpleicon@sparkasseicon\endcsname {\simpleiconsmaponeone\symbol{8}}
- \expandafter\def\csname simpleicon@sparkfunicon\endcsname {\simpleiconsmaponeone\symbol{9}}
- \expandafter\def\csname simpleicon@sparkposticon\endcsname {\simpleiconsmaponeone\symbol{10}}
- \expandafter\def\csname simpleicon@spdxicon\endcsname {\simpleiconsmaponeone\symbol{11}}
- \expandafter\def\csname simpleicon@speakerdeckicon\endcsname {\simpleiconsmaponeone\symbol{12}}
- \expandafter\def\csname simpleicon@spectrumicon\endcsname {\simpleiconsmaponeone\symbol{13}}
- \expandafter\def\csname simpleicon@speedtesticon\endcsname {\simpleiconsmaponeone\symbol{14}}
- \expandafter\def\csname simpleicon@speedypageicon\endcsname {\simpleiconsmaponeone\symbol{15}}
- \expandafter\def\csname simpleicon@sphinxicon\endcsname {\simpleiconsmaponeone\symbol{16}}
- \expandafter\def\csname simpleicon@spigotmcicon\endcsname {\simpleiconsmaponeone\symbol{17}}
- \expandafter\def\csname simpleicon@spineicon\endcsname {\simpleiconsmaponeone\symbol{18}}
- \expandafter\def\csname simpleicon@spinnakericon\endcsname {\simpleiconsmaponeone\symbol{19}}
- \expandafter\def\csname simpleicon@spinrillaicon\endcsname {\simpleiconsmaponeone\symbol{20}}
- \expandafter\def\csname simpleicon@splunkicon\endcsname {\simpleiconsmaponeone\symbol{21}}
- \expandafter\def\csname simpleicon@spojicon\endcsname {\simpleiconsmaponeone\symbol{22}}
- \expandafter\def\csname simpleicon@spondicon\endcsname {\simpleiconsmaponeone\symbol{23}}
- \expandafter\def\csname simpleicon@spotifyicon\endcsname {\simpleiconsmaponeone\symbol{24}}
- \expandafter\def\csname simpleicon@spotlighticon\endcsname {\simpleiconsmaponeone\symbol{25}}
- \expandafter\def\csname simpleicon@spreadshirticon\endcsname {\simpleiconsmaponeone\symbol{26}}
- \expandafter\def\csname simpleicon@spreakericon\endcsname {\simpleiconsmaponeone\symbol{27}}
- \expandafter\def\csname simpleicon@springicon\endcsname {\simpleiconsmaponeone\symbol{28}}
- \expandafter\def\csname simpleicon@springcreatorsicon\endcsname {\simpleiconsmaponeone\symbol{29}}
- \expandafter\def\csname simpleicon@springbooticon\endcsname {\simpleiconsmaponeone\symbol{30}}
- \expandafter\def\csname simpleicon@springsecurityicon\endcsname {\simpleiconsmaponeone\symbol{31}}
- \expandafter\def\csname simpleicon@spyderideicon\endcsname {\simpleiconsmaponeone\symbol{32}}
- \expandafter\def\csname simpleicon@sqlalchemyicon\endcsname {\simpleiconsmaponeone\symbol{33}}
- \expandafter\def\csname simpleicon@sqliteicon\endcsname {\simpleiconsmaponeone\symbol{34}}
- \expandafter\def\csname simpleicon@squareicon\endcsname {\simpleiconsmaponeone\symbol{35}}
- \expandafter\def\csname simpleicon@squareenixicon\endcsname {\simpleiconsmaponeone\symbol{36}}
- \expandafter\def\csname simpleicon@squarespaceicon\endcsname {\simpleiconsmaponeone\symbol{37}}
- \expandafter\def\csname simpleicon@srgssricon\endcsname {\simpleiconsmaponeone\symbol{38}}
- \expandafter\def\csname simpleicon@ssrnicon\endcsname {\simpleiconsmaponeone\symbol{39}}
- \expandafter\def\csname simpleicon@ssticon\endcsname {\simpleiconsmaponeone\symbol{40}}
- \expandafter\def\csname simpleicon@stackbiticon\endcsname {\simpleiconsmaponeone\symbol{41}}
- \expandafter\def\csname simpleicon@stackblitzicon\endcsname {\simpleiconsmaponeone\symbol{42}}
- \expandafter\def\csname simpleicon@stackediticon\endcsname {\simpleiconsmaponeone\symbol{43}}
- \expandafter\def\csname simpleicon@stackexchangeicon\endcsname {\simpleiconsmaponeone\symbol{44}}
- \expandafter\def\csname simpleicon@stackhawkicon\endcsname {\simpleiconsmaponeone\symbol{45}}
- \expandafter\def\csname simpleicon@stackoverflowicon\endcsname {\simpleiconsmaponeone\symbol{46}}
- \expandafter\def\csname simpleicon@stackpathicon\endcsname {\simpleiconsmaponeone\symbol{47}}
- \expandafter\def\csname simpleicon@stackshareicon\endcsname {\simpleiconsmaponeone\symbol{48}}
- \expandafter\def\csname simpleicon@stadiaicon\endcsname {\simpleiconsmaponeone\symbol{49}}
- \expandafter\def\csname simpleicon@staffbaseicon\endcsname {\simpleiconsmaponeone\symbol{50}}
- \expandafter\def\csname simpleicon@stagetimericon\endcsname {\simpleiconsmaponeone\symbol{51}}
- \expandafter\def\csname simpleicon@standardjsicon\endcsname {\simpleiconsmaponeone\symbol{52}}
- \expandafter\def\csname simpleicon@standardresumeicon\endcsname {\simpleiconsmaponeone\symbol{53}}
- \expandafter\def\csname simpleicon@starbucksicon\endcsname {\simpleiconsmaponeone\symbol{54}}
- \expandafter\def\csname simpleicon@stardockicon\endcsname {\simpleiconsmaponeone\symbol{55}}
- \expandafter\def\csname simpleicon@starlingbankicon\endcsname {\simpleiconsmaponeone\symbol{56}}
- \expandafter\def\csname simpleicon@starshipicon\endcsname {\simpleiconsmaponeone\symbol{57}}
- \expandafter\def\csname simpleicon@startrekicon\endcsname {\simpleiconsmaponeone\symbol{58}}
- \expandafter\def\csname simpleicon@starzicon\endcsname {\simpleiconsmaponeone\symbol{59}}
- \expandafter\def\csname simpleicon@statamicicon\endcsname {\simpleiconsmaponeone\symbol{60}}
- \expandafter\def\csname simpleicon@statistaicon\endcsname {\simpleiconsmaponeone\symbol{61}}
- \expandafter\def\csname simpleicon@statuspageicon\endcsname {\simpleiconsmaponeone\symbol{62}}
- \expandafter\def\csname simpleicon@statuspalicon\endcsname {\simpleiconsmaponeone\symbol{63}}
- \expandafter\def\csname simpleicon@steamicon\endcsname {\simpleiconsmaponeone\symbol{64}}
- \expandafter\def\csname simpleicon@steamdbicon\endcsname {\simpleiconsmaponeone\symbol{65}}
- \expandafter\def\csname simpleicon@steamdeckicon\endcsname {\simpleiconsmaponeone\symbol{66}}
- \expandafter\def\csname simpleicon@steamworksicon\endcsname {\simpleiconsmaponeone\symbol{67}}
- \expandafter\def\csname simpleicon@steelseriesicon\endcsname {\simpleiconsmaponeone\symbol{68}}
- \expandafter\def\csname simpleicon@steemicon\endcsname {\simpleiconsmaponeone\symbol{69}}
- \expandafter\def\csname simpleicon@steemiticon\endcsname {\simpleiconsmaponeone\symbol{70}}
- \expandafter\def\csname simpleicon@steinbergicon\endcsname {\simpleiconsmaponeone\symbol{71}}
- \expandafter\def\csname simpleicon@stellaricon\endcsname {\simpleiconsmaponeone\symbol{72}}
- \expandafter\def\csname simpleicon@stencilicon\endcsname {\simpleiconsmaponeone\symbol{73}}
- \expandafter\def\csname simpleicon@stencylicon\endcsname {\simpleiconsmaponeone\symbol{74}}
- \expandafter\def\csname simpleicon@stimulusicon\endcsname {\simpleiconsmaponeone\symbol{75}}
- \expandafter\def\csname simpleicon@stitchericon\endcsname {\simpleiconsmaponeone\symbol{76}}
- \expandafter\def\csname simpleicon@stmicroelectronicsicon\endcsname {\simpleiconsmaponeone\symbol{77}}
- \expandafter\def\csname simpleicon@stockxicon\endcsname {\simpleiconsmaponeone\symbol{78}}
- \expandafter\def\csname simpleicon@stopstalkicon\endcsname {\simpleiconsmaponeone\symbol{79}}
- \expandafter\def\csname simpleicon@storyblokicon\endcsname {\simpleiconsmaponeone\symbol{80}}
- \expandafter\def\csname simpleicon@storybookicon\endcsname {\simpleiconsmaponeone\symbol{81}}
- \expandafter\def\csname simpleicon@strapiicon\endcsname {\simpleiconsmaponeone\symbol{82}}
- \expandafter\def\csname simpleicon@stravaicon\endcsname {\simpleiconsmaponeone\symbol{83}}
- \expandafter\def\csname simpleicon@streamlabsicon\endcsname {\simpleiconsmaponeone\symbol{84}}
- \expandafter\def\csname simpleicon@streamliticon\endcsname {\simpleiconsmaponeone\symbol{85}}
- \expandafter\def\csname simpleicon@streamrunnersicon\endcsname {\simpleiconsmaponeone\symbol{86}}
- \expandafter\def\csname simpleicon@stripeicon\endcsname {\simpleiconsmaponeone\symbol{87}}
- \expandafter\def\csname simpleicon@strongswanicon\endcsname {\simpleiconsmaponeone\symbol{88}}
- \expandafter\def\csname simpleicon@strykericon\endcsname {\simpleiconsmaponeone\symbol{89}}
- \expandafter\def\csname simpleicon@stubhubicon\endcsname {\simpleiconsmaponeone\symbol{90}}
- \expandafter\def\csname simpleicon@studio3ticon\endcsname {\simpleiconsmaponeone\symbol{91}}
- \expandafter\def\csname simpleicon@studyverseicon\endcsname {\simpleiconsmaponeone\symbol{92}}
- \expandafter\def\csname simpleicon@styledcomponentsicon\endcsname {\simpleiconsmaponeone\symbol{93}}
- \expandafter\def\csname simpleicon@stylelinticon\endcsname {\simpleiconsmaponeone\symbol{94}}
- \expandafter\def\csname simpleicon@styleshareicon\endcsname {\simpleiconsmaponeone\symbol{95}}
- \expandafter\def\csname simpleicon@stylusicon\endcsname {\simpleiconsmaponeone\symbol{96}}
- \expandafter\def\csname simpleicon@subaruicon\endcsname {\simpleiconsmaponeone\symbol{97}}
- \expandafter\def\csname simpleicon@sublimetexticon\endcsname {\simpleiconsmaponeone\symbol{98}}
- \expandafter\def\csname simpleicon@substackicon\endcsname {\simpleiconsmaponeone\symbol{99}}
- \expandafter\def\csname simpleicon@subtitleediticon\endcsname {\simpleiconsmaponeone\symbol{100}}
- \expandafter\def\csname simpleicon@subversionicon\endcsname {\simpleiconsmaponeone\symbol{101}}
- \expandafter\def\csname simpleicon@sucklessicon\endcsname {\simpleiconsmaponeone\symbol{102}}
- \expandafter\def\csname simpleicon@sumologicicon\endcsname {\simpleiconsmaponeone\symbol{103}}
- \expandafter\def\csname simpleicon@sunoicon\endcsname {\simpleiconsmaponeone\symbol{104}}
- \expandafter\def\csname simpleicon@sunriseicon\endcsname {\simpleiconsmaponeone\symbol{105}}
- \expandafter\def\csname simpleicon@supabaseicon\endcsname {\simpleiconsmaponeone\symbol{106}}
- \expandafter\def\csname simpleicon@supercreaseicon\endcsname {\simpleiconsmaponeone\symbol{107}}
- \expandafter\def\csname simpleicon@supermicroicon\endcsname {\simpleiconsmaponeone\symbol{108}}
- \expandafter\def\csname simpleicon@superusericon\endcsname {\simpleiconsmaponeone\symbol{109}}
- \expandafter\def\csname simpleicon@surrealdbicon\endcsname {\simpleiconsmaponeone\symbol{110}}
- \expandafter\def\csname simpleicon@surveymonkeyicon\endcsname {\simpleiconsmaponeone\symbol{111}}
- \expandafter\def\csname simpleicon@suseicon\endcsname {\simpleiconsmaponeone\symbol{112}}
- \expandafter\def\csname simpleicon@suzukiicon\endcsname {\simpleiconsmaponeone\symbol{113}}
- \expandafter\def\csname simpleicon@svelteicon\endcsname {\simpleiconsmaponeone\symbol{114}}
- \expandafter\def\csname simpleicon@svgicon\endcsname {\simpleiconsmaponeone\symbol{115}}
- \expandafter\def\csname simpleicon@svgdotjsicon\endcsname {\simpleiconsmaponeone\symbol{116}}
- \expandafter\def\csname simpleicon@svgoicon\endcsname {\simpleiconsmaponeone\symbol{117}}
- \expandafter\def\csname simpleicon@swaggericon\endcsname {\simpleiconsmaponeone\symbol{118}}
- \expandafter\def\csname simpleicon@swarmicon\endcsname {\simpleiconsmaponeone\symbol{119}}
- \expandafter\def\csname simpleicon@swcicon\endcsname {\simpleiconsmaponeone\symbol{120}}
- \expandafter\def\csname simpleicon@swifticon\endcsname {\simpleiconsmaponeone\symbol{121}}
- \expandafter\def\csname simpleicon@swiggyicon\endcsname {\simpleiconsmaponeone\symbol{122}}
- \expandafter\def\csname simpleicon@swipericon\endcsname {\simpleiconsmaponeone\symbol{123}}
- \expandafter\def\csname simpleicon@swricon\endcsname {\simpleiconsmaponeone\symbol{124}}
- \expandafter\def\csname simpleicon@symantecicon\endcsname {\simpleiconsmaponeone\symbol{125}}
- \expandafter\def\csname simpleicon@symbolabicon\endcsname {\simpleiconsmaponeone\symbol{126}}
- \expandafter\def\csname simpleicon@symfonyicon\endcsname {\simpleiconsmaponeone\symbol{127}}
- \expandafter\def\csname simpleicon@symphonyicon\endcsname {\simpleiconsmaponeone\symbol{128}}
- \expandafter\def\csname simpleicon@sympyicon\endcsname {\simpleiconsmaponeone\symbol{129}}
- \expandafter\def\csname simpleicon@syncthingicon\endcsname {\simpleiconsmaponeone\symbol{130}}
- \expandafter\def\csname simpleicon@synologyicon\endcsname {\simpleiconsmaponeone\symbol{131}}
- \expandafter\def\csname simpleicon@system76icon\endcsname {\simpleiconsmaponeone\symbol{132}}
- \expandafter\def\csname simpleicon@tabelogicon\endcsname {\simpleiconsmaponeone\symbol{133}}
- \expandafter\def\csname simpleicon@tableauicon\endcsname {\simpleiconsmaponeone\symbol{134}}
- \expandafter\def\csname simpleicon@tablecheckicon\endcsname {\simpleiconsmaponeone\symbol{135}}
- \expandafter\def\csname simpleicon@tacobellicon\endcsname {\simpleiconsmaponeone\symbol{136}}
- \expandafter\def\csname simpleicon@tadoicon\endcsname {\simpleiconsmaponeone\symbol{137}}
- \expandafter\def\csname simpleicon@taichigraphicsicon\endcsname {\simpleiconsmaponeone\symbol{138}}
- \expandafter\def\csname simpleicon@taichilangicon\endcsname {\simpleiconsmaponeone\symbol{139}}
- \expandafter\def\csname simpleicon@tailsicon\endcsname {\simpleiconsmaponeone\symbol{140}}
- \expandafter\def\csname simpleicon@tailscaleicon\endcsname {\simpleiconsmaponeone\symbol{141}}
- \expandafter\def\csname simpleicon@tailwindcssicon\endcsname {\simpleiconsmaponeone\symbol{142}}
- \expandafter\def\csname simpleicon@taipyicon\endcsname {\simpleiconsmaponeone\symbol{143}}
- \expandafter\def\csname simpleicon@taketwointeractivesoftwareicon\endcsname {\simpleiconsmaponeone\symbol{144}}
- \expandafter\def\csname simpleicon@talendicon\endcsname {\simpleiconsmaponeone\symbol{145}}
- \expandafter\def\csname simpleicon@talenthouseicon\endcsname {\simpleiconsmaponeone\symbol{146}}
- \expandafter\def\csname simpleicon@talosicon\endcsname {\simpleiconsmaponeone\symbol{147}}
- \expandafter\def\csname simpleicon@tamiyaicon\endcsname {\simpleiconsmaponeone\symbol{148}}
- \expandafter\def\csname simpleicon@tampermonkeyicon\endcsname {\simpleiconsmaponeone\symbol{149}}
- \expandafter\def\csname simpleicon@taobaoicon\endcsname {\simpleiconsmaponeone\symbol{150}}
- \expandafter\def\csname simpleicon@tapasicon\endcsname {\simpleiconsmaponeone\symbol{151}}
- \expandafter\def\csname simpleicon@targeticon\endcsname {\simpleiconsmaponeone\symbol{152}}
- \expandafter\def\csname simpleicon@taskicon\endcsname {\simpleiconsmaponeone\symbol{153}}
- \expandafter\def\csname simpleicon@tasmotaicon\endcsname {\simpleiconsmaponeone\symbol{154}}
- \expandafter\def\csname simpleicon@tataicon\endcsname {\simpleiconsmaponeone\symbol{155}}
- \expandafter\def\csname simpleicon@tauriicon\endcsname {\simpleiconsmaponeone\symbol{156}}
- \expandafter\def\csname simpleicon@taxbuzzicon\endcsname {\simpleiconsmaponeone\symbol{157}}
- \expandafter\def\csname simpleicon@tcsicon\endcsname {\simpleiconsmaponeone\symbol{158}}
- \expandafter\def\csname simpleicon@tealicon\endcsname {\simpleiconsmaponeone\symbol{159}}
- \expandafter\def\csname simpleicon@teamcityicon\endcsname {\simpleiconsmaponeone\symbol{160}}
- \expandafter\def\csname simpleicon@teamspeakicon\endcsname {\simpleiconsmaponeone\symbol{161}}
- \expandafter\def\csname simpleicon@teamviewericon\endcsname {\simpleiconsmaponeone\symbol{162}}
- \expandafter\def\csname simpleicon@techcrunchicon\endcsname {\simpleiconsmaponeone\symbol{163}}
- \expandafter\def\csname simpleicon@tedicon\endcsname {\simpleiconsmaponeone\symbol{164}}
- \expandafter\def\csname simpleicon@teepublicicon\endcsname {\simpleiconsmaponeone\symbol{165}}
- \expandafter\def\csname simpleicon@teespringicon\endcsname {\simpleiconsmaponeone\symbol{166}}
- \expandafter\def\csname simpleicon@tektonicon\endcsname {\simpleiconsmaponeone\symbol{167}}
- \expandafter\def\csname simpleicon@tele5icon\endcsname {\simpleiconsmaponeone\symbol{168}}
- \expandafter\def\csname simpleicon@telegramicon\endcsname {\simpleiconsmaponeone\symbol{169}}
- \expandafter\def\csname simpleicon@telegraphicon\endcsname {\simpleiconsmaponeone\symbol{170}}
- \expandafter\def\csname simpleicon@telequebecicon\endcsname {\simpleiconsmaponeone\symbol{171}}
- \expandafter\def\csname simpleicon@temporalicon\endcsname {\simpleiconsmaponeone\symbol{172}}
- \expandafter\def\csname simpleicon@tencentqqicon\endcsname {\simpleiconsmaponeone\symbol{173}}
- \expandafter\def\csname simpleicon@tensorflowicon\endcsname {\simpleiconsmaponeone\symbol{174}}
- \expandafter\def\csname simpleicon@teradataicon\endcsname {\simpleiconsmaponeone\symbol{175}}
- \expandafter\def\csname simpleicon@teratailicon\endcsname {\simpleiconsmaponeone\symbol{176}}
- \expandafter\def\csname simpleicon@termiusicon\endcsname {\simpleiconsmaponeone\symbol{177}}
- \expandafter\def\csname simpleicon@terraformicon\endcsname {\simpleiconsmaponeone\symbol{178}}
- \expandafter\def\csname simpleicon@tescoicon\endcsname {\simpleiconsmaponeone\symbol{179}}
- \expandafter\def\csname simpleicon@teslaicon\endcsname {\simpleiconsmaponeone\symbol{180}}
- \expandafter\def\csname simpleicon@testcafeicon\endcsname {\simpleiconsmaponeone\symbol{181}}
- \expandafter\def\csname simpleicon@testinicon\endcsname {\simpleiconsmaponeone\symbol{182}}
- \expandafter\def\csname simpleicon@testinglibraryicon\endcsname {\simpleiconsmaponeone\symbol{183}}
- \expandafter\def\csname simpleicon@testrailicon\endcsname {\simpleiconsmaponeone\symbol{184}}
- \expandafter\def\csname simpleicon@tethericon\endcsname {\simpleiconsmaponeone\symbol{185}}
- \expandafter\def\csname simpleicon@textpatternicon\endcsname {\simpleiconsmaponeone\symbol{186}}
- \expandafter\def\csname simpleicon@tgaicon\endcsname {\simpleiconsmaponeone\symbol{187}}
- \expandafter\def\csname simpleicon@thangsicon\endcsname {\simpleiconsmaponeone\symbol{188}}
- \expandafter\def\csname simpleicon@thanosicon\endcsname {\simpleiconsmaponeone\symbol{189}}
- \expandafter\def\csname simpleicon@thealgorithmsicon\endcsname {\simpleiconsmaponeone\symbol{190}}
- \expandafter\def\csname simpleicon@theboringcompanyicon\endcsname {\simpleiconsmaponeone\symbol{191}}
- \expandafter\def\csname simpleicon@theconversationicon\endcsname {\simpleiconsmaponeone\symbol{192}}
- \expandafter\def\csname simpleicon@thefinalsicon\endcsname {\simpleiconsmaponeone\symbol{193}}
- \expandafter\def\csname simpleicon@theirishtimesicon\endcsname {\simpleiconsmaponeone\symbol{194}}
- \expandafter\def\csname simpleicon@themightyicon\endcsname {\simpleiconsmaponeone\symbol{195}}
- \expandafter\def\csname simpleicon@themodelsresourceicon\endcsname {\simpleiconsmaponeone\symbol{196}}
- \expandafter\def\csname simpleicon@themoviedatabaseicon\endcsname {\simpleiconsmaponeone\symbol{197}}
- \expandafter\def\csname simpleicon@thenorthfaceicon\endcsname {\simpleiconsmaponeone\symbol{198}}
- \expandafter\def\csname simpleicon@theodinprojecticon\endcsname {\simpleiconsmaponeone\symbol{199}}
- \expandafter\def\csname simpleicon@theregistericon\endcsname {\simpleiconsmaponeone\symbol{200}}
- \expandafter\def\csname simpleicon@thesoundsresourceicon\endcsname {\simpleiconsmaponeone\symbol{201}}
- \expandafter\def\csname simpleicon@thespritersresourceicon\endcsname {\simpleiconsmaponeone\symbol{202}}
- \expandafter\def\csname simpleicon@thewashingtonposticon\endcsname {\simpleiconsmaponeone\symbol{203}}
- \expandafter\def\csname simpleicon@thingiverseicon\endcsname {\simpleiconsmaponeone\symbol{204}}
- \expandafter\def\csname simpleicon@thinkpadicon\endcsname {\simpleiconsmaponeone\symbol{205}}
- \expandafter\def\csname simpleicon@thirdwebicon\endcsname {\simpleiconsmaponeone\symbol{206}}
- \expandafter\def\csname simpleicon@threadlessicon\endcsname {\simpleiconsmaponeone\symbol{207}}
- \expandafter\def\csname simpleicon@threadsicon\endcsname {\simpleiconsmaponeone\symbol{208}}
- \expandafter\def\csname simpleicon@threedotjsicon\endcsname {\simpleiconsmaponeone\symbol{209}}
- \expandafter\def\csname simpleicon@threemaicon\endcsname {\simpleiconsmaponeone\symbol{210}}
- \expandafter\def\csname simpleicon@thumbtackicon\endcsname {\simpleiconsmaponeone\symbol{211}}
- \expandafter\def\csname simpleicon@thunderbirdicon\endcsname {\simpleiconsmaponeone\symbol{212}}
- \expandafter\def\csname simpleicon@thunderstoreicon\endcsname {\simpleiconsmaponeone\symbol{213}}
- \expandafter\def\csname simpleicon@thurgauerkantonalbankicon\endcsname {\simpleiconsmaponeone\symbol{214}}
- \expandafter\def\csname simpleicon@thymeleaficon\endcsname {\simpleiconsmaponeone\symbol{215}}
- \expandafter\def\csname simpleicon@ticketmastericon\endcsname {\simpleiconsmaponeone\symbol{216}}
- \expandafter\def\csname simpleicon@ticktickicon\endcsname {\simpleiconsmaponeone\symbol{217}}
- \expandafter\def\csname simpleicon@tidalicon\endcsname {\simpleiconsmaponeone\symbol{218}}
- \expandafter\def\csname simpleicon@tiddlywikiicon\endcsname {\simpleiconsmaponeone\symbol{219}}
- \expandafter\def\csname simpleicon@tideicon\endcsname {\simpleiconsmaponeone\symbol{220}}
- \expandafter\def\csname simpleicon@tidyverseicon\endcsname {\simpleiconsmaponeone\symbol{221}}
- \expandafter\def\csname simpleicon@tietoevryicon\endcsname {\simpleiconsmaponeone\symbol{222}}
- \expandafter\def\csname simpleicon@tiktokicon\endcsname {\simpleiconsmaponeone\symbol{223}}
- \expandafter\def\csname simpleicon@tildapublishingicon\endcsname {\simpleiconsmaponeone\symbol{224}}
- \expandafter\def\csname simpleicon@tileicon\endcsname {\simpleiconsmaponeone\symbol{225}}
- \expandafter\def\csname simpleicon@timescaleicon\endcsname {\simpleiconsmaponeone\symbol{226}}
- \expandafter\def\csname simpleicon@tinaicon\endcsname {\simpleiconsmaponeone\symbol{227}}
- \expandafter\def\csname simpleicon@tindericon\endcsname {\simpleiconsmaponeone\symbol{228}}
- \expandafter\def\csname simpleicon@tindieicon\endcsname {\simpleiconsmaponeone\symbol{229}}
- \expandafter\def\csname simpleicon@tinkercadicon\endcsname {\simpleiconsmaponeone\symbol{230}}
- \expandafter\def\csname simpleicon@tinygradicon\endcsname {\simpleiconsmaponeone\symbol{231}}
- \expandafter\def\csname simpleicon@tinylettericon\endcsname {\simpleiconsmaponeone\symbol{232}}
- \expandafter\def\csname simpleicon@tistoryicon\endcsname {\simpleiconsmaponeone\symbol{233}}
- \expandafter\def\csname simpleicon@tldrawicon\endcsname {\simpleiconsmaponeone\symbol{234}}
- \expandafter\def\csname simpleicon@tmobileicon\endcsname {\simpleiconsmaponeone\symbol{235}}
- \expandafter\def\csname simpleicon@tmuxicon\endcsname {\simpleiconsmaponeone\symbol{236}}
- \expandafter\def\csname simpleicon@todoisticon\endcsname {\simpleiconsmaponeone\symbol{237}}
- \expandafter\def\csname simpleicon@togglicon\endcsname {\simpleiconsmaponeone\symbol{238}}
- \expandafter\def\csname simpleicon@toggltrackicon\endcsname {\simpleiconsmaponeone\symbol{239}}
- \expandafter\def\csname simpleicon@tokyometroicon\endcsname {\simpleiconsmaponeone\symbol{240}}
- \expandafter\def\csname simpleicon@tollicon\endcsname {\simpleiconsmaponeone\symbol{241}}
- \expandafter\def\csname simpleicon@tomlicon\endcsname {\simpleiconsmaponeone\symbol{242}}
- \expandafter\def\csname simpleicon@tomorrowlandicon\endcsname {\simpleiconsmaponeone\symbol{243}}
- \expandafter\def\csname simpleicon@tonicon\endcsname {\simpleiconsmaponeone\symbol{244}}
- \expandafter\def\csname simpleicon@topcodericon\endcsname {\simpleiconsmaponeone\symbol{245}}
- \expandafter\def\csname simpleicon@topdotggicon\endcsname {\simpleiconsmaponeone\symbol{246}}
- \expandafter\def\csname simpleicon@toptalicon\endcsname {\simpleiconsmaponeone\symbol{247}}
- \expandafter\def\csname simpleicon@torbrowsericon\endcsname {\simpleiconsmaponeone\symbol{248}}
- \expandafter\def\csname simpleicon@torprojecticon\endcsname {\simpleiconsmaponeone\symbol{249}}
- \expandafter\def\csname simpleicon@toshibaicon\endcsname {\simpleiconsmaponeone\symbol{250}}
- \expandafter\def\csname simpleicon@totvsicon\endcsname {\simpleiconsmaponeone\symbol{251}}
- \expandafter\def\csname simpleicon@tourboxicon\endcsname {\simpleiconsmaponeone\symbol{252}}
- \expandafter\def\csname simpleicon@towericon\endcsname {\simpleiconsmaponeone\symbol{253}}
- \expandafter\def\csname simpleicon@toyotaicon\endcsname {\simpleiconsmaponeone\symbol{254}}
- \expandafter\def\csname simpleicon@tplinkicon\endcsname {\simpleiconsmaponeone\symbol{255}}
- \expandafter\def\csname simpleicon@tqdmicon\endcsname {\simpleiconsmaponetwo\symbol{0}}
- \expandafter\def\csname simpleicon@traccaricon\endcsname {\simpleiconsmaponetwo\symbol{1}}
- \expandafter\def\csname simpleicon@tradingviewicon\endcsname {\simpleiconsmaponetwo\symbol{2}}
- \expandafter\def\csname simpleicon@traefikmeshicon\endcsname {\simpleiconsmaponetwo\symbol{3}}
- \expandafter\def\csname simpleicon@traefikproxyicon\endcsname {\simpleiconsmaponetwo\symbol{4}}
- \expandafter\def\csname simpleicon@trailforksicon\endcsname {\simpleiconsmaponetwo\symbol{5}}
- \expandafter\def\csname simpleicon@trainerroadicon\endcsname {\simpleiconsmaponetwo\symbol{6}}
- \expandafter\def\csname simpleicon@trakticon\endcsname {\simpleiconsmaponetwo\symbol{7}}
- \expandafter\def\csname simpleicon@transifexicon\endcsname {\simpleiconsmaponetwo\symbol{8}}
- \expandafter\def\csname simpleicon@transmissionicon\endcsname {\simpleiconsmaponetwo\symbol{9}}
- \expandafter\def\csname simpleicon@transportforirelandicon\endcsname {\simpleiconsmaponetwo\symbol{10}}
- \expandafter\def\csname simpleicon@transportforlondonicon\endcsname {\simpleiconsmaponetwo\symbol{11}}
- \expandafter\def\csname simpleicon@travisciicon\endcsname {\simpleiconsmaponetwo\symbol{12}}
- \expandafter\def\csname simpleicon@treehouseicon\endcsname {\simpleiconsmaponetwo\symbol{13}}
- \expandafter\def\csname simpleicon@trelloicon\endcsname {\simpleiconsmaponetwo\symbol{14}}
- \expandafter\def\csname simpleicon@trendmicroicon\endcsname {\simpleiconsmaponetwo\symbol{15}}
- \expandafter\def\csname simpleicon@treyarchicon\endcsname {\simpleiconsmaponetwo\symbol{16}}
- \expandafter\def\csname simpleicon@tricentisicon\endcsname {\simpleiconsmaponetwo\symbol{17}}
- \expandafter\def\csname simpleicon@triliumicon\endcsname {\simpleiconsmaponetwo\symbol{18}}
- \expandafter\def\csname simpleicon@trillericon\endcsname {\simpleiconsmaponetwo\symbol{19}}
- \expandafter\def\csname simpleicon@trillertvicon\endcsname {\simpleiconsmaponetwo\symbol{20}}
- \expandafter\def\csname simpleicon@trinoicon\endcsname {\simpleiconsmaponetwo\symbol{21}}
- \expandafter\def\csname simpleicon@tripadvisoricon\endcsname {\simpleiconsmaponetwo\symbol{22}}
- \expandafter\def\csname simpleicon@tripdotcomicon\endcsname {\simpleiconsmaponetwo\symbol{23}}
- \expandafter\def\csname simpleicon@trivagoicon\endcsname {\simpleiconsmaponetwo\symbol{24}}
- \expandafter\def\csname simpleicon@trivyicon\endcsname {\simpleiconsmaponetwo\symbol{25}}
- \expandafter\def\csname simpleicon@troveicon\endcsname {\simpleiconsmaponetwo\symbol{26}}
- \expandafter\def\csname simpleicon@trpcicon\endcsname {\simpleiconsmaponetwo\symbol{27}}
- \expandafter\def\csname simpleicon@truenasicon\endcsname {\simpleiconsmaponetwo\symbol{28}}
- \expandafter\def\csname simpleicon@trueupicon\endcsname {\simpleiconsmaponetwo\symbol{29}}
- \expandafter\def\csname simpleicon@truliaicon\endcsname {\simpleiconsmaponetwo\symbol{30}}
- \expandafter\def\csname simpleicon@trustedshopsicon\endcsname {\simpleiconsmaponetwo\symbol{31}}
- \expandafter\def\csname simpleicon@trustpiloticon\endcsname {\simpleiconsmaponetwo\symbol{32}}
- \expandafter\def\csname simpleicon@tryhackmeicon\endcsname {\simpleiconsmaponetwo\symbol{33}}
- \expandafter\def\csname simpleicon@tryitonlineicon\endcsname {\simpleiconsmaponetwo\symbol{34}}
- \expandafter\def\csname simpleicon@tsnodeicon\endcsname {\simpleiconsmaponetwo\symbol{35}}
- \expandafter\def\csname simpleicon@tubiicon\endcsname {\simpleiconsmaponetwo\symbol{36}}
- \expandafter\def\csname simpleicon@tuiicon\endcsname {\simpleiconsmaponetwo\symbol{37}}
- \expandafter\def\csname simpleicon@tumblricon\endcsname {\simpleiconsmaponetwo\symbol{38}}
- \expandafter\def\csname simpleicon@tuneinicon\endcsname {\simpleiconsmaponetwo\symbol{39}}
- \expandafter\def\csname simpleicon@turboicon\endcsname {\simpleiconsmaponetwo\symbol{40}}
- \expandafter\def\csname simpleicon@turborepoicon\endcsname {\simpleiconsmaponetwo\symbol{41}}
- \expandafter\def\csname simpleicon@turbosquidicon\endcsname {\simpleiconsmaponetwo\symbol{42}}
- \expandafter\def\csname simpleicon@turkishairlinesicon\endcsname {\simpleiconsmaponetwo\symbol{43}}
- \expandafter\def\csname simpleicon@tursoicon\endcsname {\simpleiconsmaponetwo\symbol{44}}
- \expandafter\def\csname simpleicon@tutanotaicon\endcsname {\simpleiconsmaponetwo\symbol{45}}
- \expandafter\def\csname simpleicon@tv4playicon\endcsname {\simpleiconsmaponetwo\symbol{46}}
- \expandafter\def\csname simpleicon@tvtimeicon\endcsname {\simpleiconsmaponetwo\symbol{47}}
- \expandafter\def\csname simpleicon@twilioicon\endcsname {\simpleiconsmaponetwo\symbol{48}}
- \expandafter\def\csname simpleicon@twinklyicon\endcsname {\simpleiconsmaponetwo\symbol{49}}
- \expandafter\def\csname simpleicon@twinmotionicon\endcsname {\simpleiconsmaponetwo\symbol{50}}
- \expandafter\def\csname simpleicon@twitchicon\endcsname {\simpleiconsmaponetwo\symbol{51}}
- \expandafter\def\csname simpleicon@typeformicon\endcsname {\simpleiconsmaponetwo\symbol{52}}
- \expandafter\def\csname simpleicon@typeormicon\endcsname {\simpleiconsmaponetwo\symbol{53}}
- \expandafter\def\csname simpleicon@typericon\endcsname {\simpleiconsmaponetwo\symbol{54}}
- \expandafter\def\csname simpleicon@typescripticon\endcsname {\simpleiconsmaponetwo\symbol{55}}
- \expandafter\def\csname simpleicon@typo3icon\endcsname {\simpleiconsmaponetwo\symbol{56}}
- \expandafter\def\csname simpleicon@typsticon\endcsname {\simpleiconsmaponetwo\symbol{57}}
- \expandafter\def\csname simpleicon@ubericon\endcsname {\simpleiconsmaponetwo\symbol{58}}
- \expandafter\def\csname simpleicon@ubereatsicon\endcsname {\simpleiconsmaponetwo\symbol{59}}
- \expandafter\def\csname simpleicon@ubiquitiicon\endcsname {\simpleiconsmaponetwo\symbol{60}}
- \expandafter\def\csname simpleicon@ubisofticon\endcsname {\simpleiconsmaponetwo\symbol{61}}
- \expandafter\def\csname simpleicon@ublockoriginicon\endcsname {\simpleiconsmaponetwo\symbol{62}}
- \expandafter\def\csname simpleicon@ubuntuicon\endcsname {\simpleiconsmaponetwo\symbol{63}}
- \expandafter\def\csname simpleicon@ubuntumateicon\endcsname {\simpleiconsmaponetwo\symbol{64}}
- \expandafter\def\csname simpleicon@udacityicon\endcsname {\simpleiconsmaponetwo\symbol{65}}
- \expandafter\def\csname simpleicon@udemyicon\endcsname {\simpleiconsmaponetwo\symbol{66}}
- \expandafter\def\csname simpleicon@ufcicon\endcsname {\simpleiconsmaponetwo\symbol{67}}
- \expandafter\def\csname simpleicon@uikiticon\endcsname {\simpleiconsmaponetwo\symbol{68}}
- \expandafter\def\csname simpleicon@uipathicon\endcsname {\simpleiconsmaponetwo\symbol{69}}
- \expandafter\def\csname simpleicon@ululeicon\endcsname {\simpleiconsmaponetwo\symbol{70}}
- \expandafter\def\csname simpleicon@umamiicon\endcsname {\simpleiconsmaponetwo\symbol{71}}
- \expandafter\def\csname simpleicon@umbracoicon\endcsname {\simpleiconsmaponetwo\symbol{72}}
- \expandafter\def\csname simpleicon@umlicon\endcsname {\simpleiconsmaponetwo\symbol{73}}
- \expandafter\def\csname simpleicon@unacademyicon\endcsname {\simpleiconsmaponetwo\symbol{74}}
- \expandafter\def\csname simpleicon@underarmouricon\endcsname {\simpleiconsmaponetwo\symbol{75}}
- \expandafter\def\csname simpleicon@underscoredotjsicon\endcsname {\simpleiconsmaponetwo\symbol{76}}
- \expandafter\def\csname simpleicon@undertaleicon\endcsname {\simpleiconsmaponetwo\symbol{77}}
- \expandafter\def\csname simpleicon@unicodeicon\endcsname {\simpleiconsmaponetwo\symbol{78}}
- \expandafter\def\csname simpleicon@unilevericon\endcsname {\simpleiconsmaponetwo\symbol{79}}
- \expandafter\def\csname simpleicon@uniqloicon\endcsname {\simpleiconsmaponetwo\symbol{80}}
- \expandafter\def\csname simpleicon@uniqlojaicon\endcsname {\simpleiconsmaponetwo\symbol{81}}
- \expandafter\def\csname simpleicon@unitedairlinesicon\endcsname {\simpleiconsmaponetwo\symbol{82}}
- \expandafter\def\csname simpleicon@unitednationsicon\endcsname {\simpleiconsmaponetwo\symbol{83}}
- \expandafter\def\csname simpleicon@unityicon\endcsname {\simpleiconsmaponetwo\symbol{84}}
- \expandafter\def\csname simpleicon@unjsicon\endcsname {\simpleiconsmaponetwo\symbol{85}}
- \expandafter\def\csname simpleicon@unlicenseicon\endcsname {\simpleiconsmaponetwo\symbol{86}}
- \expandafter\def\csname simpleicon@unocssicon\endcsname {\simpleiconsmaponetwo\symbol{87}}
- \expandafter\def\csname simpleicon@unpkgicon\endcsname {\simpleiconsmaponetwo\symbol{88}}
- \expandafter\def\csname simpleicon@unraidicon\endcsname {\simpleiconsmaponetwo\symbol{89}}
- \expandafter\def\csname simpleicon@unrealengineicon\endcsname {\simpleiconsmaponetwo\symbol{90}}
- \expandafter\def\csname simpleicon@unsplashicon\endcsname {\simpleiconsmaponetwo\symbol{91}}
- \expandafter\def\csname simpleicon@untappdicon\endcsname {\simpleiconsmaponetwo\symbol{92}}
- \expandafter\def\csname simpleicon@upcloudicon\endcsname {\simpleiconsmaponetwo\symbol{93}}
- \expandafter\def\csname simpleicon@upholdicon\endcsname {\simpleiconsmaponetwo\symbol{94}}
- \expandafter\def\csname simpleicon@uplabsicon\endcsname {\simpleiconsmaponetwo\symbol{95}}
- \expandafter\def\csname simpleicon@upptimeicon\endcsname {\simpleiconsmaponetwo\symbol{96}}
- \expandafter\def\csname simpleicon@upsicon\endcsname {\simpleiconsmaponetwo\symbol{97}}
- \expandafter\def\csname simpleicon@upstashicon\endcsname {\simpleiconsmaponetwo\symbol{98}}
- \expandafter\def\csname simpleicon@uptimekumaicon\endcsname {\simpleiconsmaponetwo\symbol{99}}
- \expandafter\def\csname simpleicon@uptoboxicon\endcsname {\simpleiconsmaponetwo\symbol{100}}
- \expandafter\def\csname simpleicon@upworkicon\endcsname {\simpleiconsmaponetwo\symbol{101}}
- \expandafter\def\csname simpleicon@uspsicon\endcsname {\simpleiconsmaponetwo\symbol{102}}
- \expandafter\def\csname simpleicon@utorrenticon\endcsname {\simpleiconsmaponetwo\symbol{103}}
- \expandafter\def\csname simpleicon@vicon\endcsname {\simpleiconsmaponetwo\symbol{104}}
- \expandafter\def\csname simpleicon@v2exicon\endcsname {\simpleiconsmaponetwo\symbol{105}}
- \expandafter\def\csname simpleicon@v8icon\endcsname {\simpleiconsmaponetwo\symbol{106}}
- \expandafter\def\csname simpleicon@vaadinicon\endcsname {\simpleiconsmaponetwo\symbol{107}}
- \expandafter\def\csname simpleicon@vagranticon\endcsname {\simpleiconsmaponetwo\symbol{108}}
- \expandafter\def\csname simpleicon@valaicon\endcsname {\simpleiconsmaponetwo\symbol{109}}
- \expandafter\def\csname simpleicon@valoranticon\endcsname {\simpleiconsmaponetwo\symbol{110}}
- \expandafter\def\csname simpleicon@valveicon\endcsname {\simpleiconsmaponetwo\symbol{111}}
- \expandafter\def\csname simpleicon@vaporicon\endcsname {\simpleiconsmaponetwo\symbol{112}}
- \expandafter\def\csname simpleicon@vaulticon\endcsname {\simpleiconsmaponetwo\symbol{113}}
- \expandafter\def\csname simpleicon@vaultwardenicon\endcsname {\simpleiconsmaponetwo\symbol{114}}
- \expandafter\def\csname simpleicon@vauxhallicon\endcsname {\simpleiconsmaponetwo\symbol{115}}
- \expandafter\def\csname simpleicon@vbulletinicon\endcsname {\simpleiconsmaponetwo\symbol{116}}
- \expandafter\def\csname simpleicon@vectaryicon\endcsname {\simpleiconsmaponetwo\symbol{117}}
- \expandafter\def\csname simpleicon@vectorlogozoneicon\endcsname {\simpleiconsmaponetwo\symbol{118}}
- \expandafter\def\csname simpleicon@vectorworksicon\endcsname {\simpleiconsmaponetwo\symbol{119}}
- \expandafter\def\csname simpleicon@veeamicon\endcsname {\simpleiconsmaponetwo\symbol{120}}
- \expandafter\def\csname simpleicon@veedicon\endcsname {\simpleiconsmaponetwo\symbol{121}}
- \expandafter\def\csname simpleicon@veepeeicon\endcsname {\simpleiconsmaponetwo\symbol{122}}
- \expandafter\def\csname simpleicon@vegaicon\endcsname {\simpleiconsmaponetwo\symbol{123}}
- \expandafter\def\csname simpleicon@vegasicon\endcsname {\simpleiconsmaponetwo\symbol{124}}
- \expandafter\def\csname simpleicon@velogicon\endcsname {\simpleiconsmaponetwo\symbol{125}}
- \expandafter\def\csname simpleicon@venmoicon\endcsname {\simpleiconsmaponetwo\symbol{126}}
- \expandafter\def\csname simpleicon@vercelicon\endcsname {\simpleiconsmaponetwo\symbol{127}}
- \expandafter\def\csname simpleicon@verdaccioicon\endcsname {\simpleiconsmaponetwo\symbol{128}}
- \expandafter\def\csname simpleicon@veritasicon\endcsname {\simpleiconsmaponetwo\symbol{129}}
- \expandafter\def\csname simpleicon@verizonicon\endcsname {\simpleiconsmaponetwo\symbol{130}}
- \expandafter\def\csname simpleicon@vespaicon\endcsname {\simpleiconsmaponetwo\symbol{131}}
- \expandafter\def\csname simpleicon@vexxhosticon\endcsname {\simpleiconsmaponetwo\symbol{132}}
- \expandafter\def\csname simpleicon@vfairsicon\endcsname {\simpleiconsmaponetwo\symbol{133}}
- \expandafter\def\csname simpleicon@viadeoicon\endcsname {\simpleiconsmaponetwo\symbol{134}}
- \expandafter\def\csname simpleicon@viaplayicon\endcsname {\simpleiconsmaponetwo\symbol{135}}
- \expandafter\def\csname simpleicon@vibericon\endcsname {\simpleiconsmaponetwo\symbol{136}}
- \expandafter\def\csname simpleicon@vibloicon\endcsname {\simpleiconsmaponetwo\symbol{137}}
- \expandafter\def\csname simpleicon@victoriametricsicon\endcsname {\simpleiconsmaponetwo\symbol{138}}
- \expandafter\def\csname simpleicon@victronenergyicon\endcsname {\simpleiconsmaponetwo\symbol{139}}
- \expandafter\def\csname simpleicon@vimicon\endcsname {\simpleiconsmaponetwo\symbol{140}}
- \expandafter\def\csname simpleicon@vimeoicon\endcsname {\simpleiconsmaponetwo\symbol{141}}
- \expandafter\def\csname simpleicon@vimeolivestreamicon\endcsname {\simpleiconsmaponetwo\symbol{142}}
- \expandafter\def\csname simpleicon@virginicon\endcsname {\simpleiconsmaponetwo\symbol{143}}
- \expandafter\def\csname simpleicon@virginatlanticicon\endcsname {\simpleiconsmaponetwo\symbol{144}}
- \expandafter\def\csname simpleicon@virginmediaicon\endcsname {\simpleiconsmaponetwo\symbol{145}}
- \expandafter\def\csname simpleicon@virtualboxicon\endcsname {\simpleiconsmaponetwo\symbol{146}}
- \expandafter\def\csname simpleicon@virustotalicon\endcsname {\simpleiconsmaponetwo\symbol{147}}
- \expandafter\def\csname simpleicon@visaicon\endcsname {\simpleiconsmaponetwo\symbol{148}}
- \expandafter\def\csname simpleicon@visxicon\endcsname {\simpleiconsmaponetwo\symbol{149}}
- \expandafter\def\csname simpleicon@viteicon\endcsname {\simpleiconsmaponetwo\symbol{150}}
- \expandafter\def\csname simpleicon@vitepressicon\endcsname {\simpleiconsmaponetwo\symbol{151}}
- \expandafter\def\csname simpleicon@vitessicon\endcsname {\simpleiconsmaponetwo\symbol{152}}
- \expandafter\def\csname simpleicon@vitesticon\endcsname {\simpleiconsmaponetwo\symbol{153}}
- \expandafter\def\csname simpleicon@vivaldiicon\endcsname {\simpleiconsmaponetwo\symbol{154}}
- \expandafter\def\csname simpleicon@vivawalleticon\endcsname {\simpleiconsmaponetwo\symbol{155}}
- \expandafter\def\csname simpleicon@vivinoicon\endcsname {\simpleiconsmaponetwo\symbol{156}}
- \expandafter\def\csname simpleicon@vivinticon\endcsname {\simpleiconsmaponetwo\symbol{157}}
- \expandafter\def\csname simpleicon@vivoicon\endcsname {\simpleiconsmaponetwo\symbol{158}}
- \expandafter\def\csname simpleicon@vkicon\endcsname {\simpleiconsmaponetwo\symbol{159}}
- \expandafter\def\csname simpleicon@vlcmediaplayericon\endcsname {\simpleiconsmaponetwo\symbol{160}}
- \expandafter\def\csname simpleicon@vmwareicon\endcsname {\simpleiconsmaponetwo\symbol{161}}
- \expandafter\def\csname simpleicon@vodafoneicon\endcsname {\simpleiconsmaponetwo\symbol{162}}
- \expandafter\def\csname simpleicon@voidlinuxicon\endcsname {\simpleiconsmaponetwo\symbol{163}}
- \expandafter\def\csname simpleicon@voipdotmsicon\endcsname {\simpleiconsmaponetwo\symbol{164}}
- \expandafter\def\csname simpleicon@volkswagenicon\endcsname {\simpleiconsmaponetwo\symbol{165}}
- \expandafter\def\csname simpleicon@volvoicon\endcsname {\simpleiconsmaponetwo\symbol{166}}
- \expandafter\def\csname simpleicon@vonageicon\endcsname {\simpleiconsmaponetwo\symbol{167}}
- \expandafter\def\csname simpleicon@vorondesignicon\endcsname {\simpleiconsmaponetwo\symbol{168}}
- \expandafter\def\csname simpleicon@vowpalwabbiticon\endcsname {\simpleiconsmaponetwo\symbol{169}}
- \expandafter\def\csname simpleicon@voxicon\endcsname {\simpleiconsmaponetwo\symbol{170}}
- \expandafter\def\csname simpleicon@vscoicon\endcsname {\simpleiconsmaponetwo\symbol{171}}
- \expandafter\def\csname simpleicon@vscodiumicon\endcsname {\simpleiconsmaponetwo\symbol{172}}
- \expandafter\def\csname simpleicon@vtexicon\endcsname {\simpleiconsmaponetwo\symbol{173}}
- \expandafter\def\csname simpleicon@vuedotjsicon\endcsname {\simpleiconsmaponetwo\symbol{174}}
- \expandafter\def\csname simpleicon@vuetifyicon\endcsname {\simpleiconsmaponetwo\symbol{175}}
- \expandafter\def\csname simpleicon@vulkanicon\endcsname {\simpleiconsmaponetwo\symbol{176}}
- \expandafter\def\csname simpleicon@vultricon\endcsname {\simpleiconsmaponetwo\symbol{177}}
- \expandafter\def\csname simpleicon@vyondicon\endcsname {\simpleiconsmaponetwo\symbol{178}}
- \expandafter\def\csname simpleicon@w3schoolsicon\endcsname {\simpleiconsmaponetwo\symbol{179}}
- \expandafter\def\csname simpleicon@wacomicon\endcsname {\simpleiconsmaponetwo\symbol{180}}
- \expandafter\def\csname simpleicon@wagmiicon\endcsname {\simpleiconsmaponetwo\symbol{181}}
- \expandafter\def\csname simpleicon@wagtailicon\endcsname {\simpleiconsmaponetwo\symbol{182}}
- \expandafter\def\csname simpleicon@wailsicon\endcsname {\simpleiconsmaponetwo\symbol{183}}
- \expandafter\def\csname simpleicon@wakatimeicon\endcsname {\simpleiconsmaponetwo\symbol{184}}
- \expandafter\def\csname simpleicon@walkmanicon\endcsname {\simpleiconsmaponetwo\symbol{185}}
- \expandafter\def\csname simpleicon@wallabagicon\endcsname {\simpleiconsmaponetwo\symbol{186}}
- \expandafter\def\csname simpleicon@walletconnecticon\endcsname {\simpleiconsmaponetwo\symbol{187}}
- \expandafter\def\csname simpleicon@walmarticon\endcsname {\simpleiconsmaponetwo\symbol{188}}
- \expandafter\def\csname simpleicon@wantedlyicon\endcsname {\simpleiconsmaponetwo\symbol{189}}
- \expandafter\def\csname simpleicon@wappalyzericon\endcsname {\simpleiconsmaponetwo\symbol{190}}
- \expandafter\def\csname simpleicon@warnerbrosicon\endcsname {\simpleiconsmaponetwo\symbol{191}}
- \expandafter\def\csname simpleicon@warpicon\endcsname {\simpleiconsmaponetwo\symbol{192}}
- \expandafter\def\csname simpleicon@wasabiicon\endcsname {\simpleiconsmaponetwo\symbol{193}}
- \expandafter\def\csname simpleicon@wasmcloudicon\endcsname {\simpleiconsmaponetwo\symbol{194}}
- \expandafter\def\csname simpleicon@wasmericon\endcsname {\simpleiconsmaponetwo\symbol{195}}
- \expandafter\def\csname simpleicon@watchtowericon\endcsname {\simpleiconsmaponetwo\symbol{196}}
- \expandafter\def\csname simpleicon@wattpadicon\endcsname {\simpleiconsmaponetwo\symbol{197}}
- \expandafter\def\csname simpleicon@waylandicon\endcsname {\simpleiconsmaponetwo\symbol{198}}
- \expandafter\def\csname simpleicon@wazeicon\endcsname {\simpleiconsmaponetwo\symbol{199}}
- \expandafter\def\csname simpleicon@wazirxicon\endcsname {\simpleiconsmaponetwo\symbol{200}}
- \expandafter\def\csname simpleicon@wearosicon\endcsname {\simpleiconsmaponetwo\symbol{201}}
- \expandafter\def\csname simpleicon@weasylicon\endcsname {\simpleiconsmaponetwo\symbol{202}}
- \expandafter\def\csname simpleicon@web3dotjsicon\endcsname {\simpleiconsmaponetwo\symbol{203}}
- \expandafter\def\csname simpleicon@webassemblyicon\endcsname {\simpleiconsmaponetwo\symbol{204}}
- \expandafter\def\csname simpleicon@webauthnicon\endcsname {\simpleiconsmaponetwo\symbol{205}}
- \expandafter\def\csname simpleicon@webcomponentsdotorgicon\endcsname {\simpleiconsmaponetwo\symbol{206}}
- \expandafter\def\csname simpleicon@webdriverioicon\endcsname {\simpleiconsmaponetwo\symbol{207}}
- \expandafter\def\csname simpleicon@webexicon\endcsname {\simpleiconsmaponetwo\symbol{208}}
- \expandafter\def\csname simpleicon@webflowicon\endcsname {\simpleiconsmaponetwo\symbol{209}}
- \expandafter\def\csname simpleicon@webglicon\endcsname {\simpleiconsmaponetwo\symbol{210}}
- \expandafter\def\csname simpleicon@webgpuicon\endcsname {\simpleiconsmaponetwo\symbol{211}}
- \expandafter\def\csname simpleicon@weblateicon\endcsname {\simpleiconsmaponetwo\symbol{212}}
- \expandafter\def\csname simpleicon@webminicon\endcsname {\simpleiconsmaponetwo\symbol{213}}
- \expandafter\def\csname simpleicon@webmoneyicon\endcsname {\simpleiconsmaponetwo\symbol{214}}
- \expandafter\def\csname simpleicon@webpackicon\endcsname {\simpleiconsmaponetwo\symbol{215}}
- \expandafter\def\csname simpleicon@webrtcicon\endcsname {\simpleiconsmaponetwo\symbol{216}}
- \expandafter\def\csname simpleicon@webstormicon\endcsname {\simpleiconsmaponetwo\symbol{217}}
- \expandafter\def\csname simpleicon@webtoonicon\endcsname {\simpleiconsmaponetwo\symbol{218}}
- \expandafter\def\csname simpleicon@webtreesicon\endcsname {\simpleiconsmaponetwo\symbol{219}}
- \expandafter\def\csname simpleicon@wechaticon\endcsname {\simpleiconsmaponetwo\symbol{220}}
- \expandafter\def\csname simpleicon@wegameicon\endcsname {\simpleiconsmaponetwo\symbol{221}}
- \expandafter\def\csname simpleicon@weightsandbiasesicon\endcsname {\simpleiconsmaponetwo\symbol{222}}
- \expandafter\def\csname simpleicon@welcometothejungleicon\endcsname {\simpleiconsmaponetwo\symbol{223}}
- \expandafter\def\csname simpleicon@wellfoundicon\endcsname {\simpleiconsmaponetwo\symbol{224}}
- \expandafter\def\csname simpleicon@wellsfargoicon\endcsname {\simpleiconsmaponetwo\symbol{225}}
- \expandafter\def\csname simpleicon@wemoicon\endcsname {\simpleiconsmaponetwo\symbol{226}}
- \expandafter\def\csname simpleicon@westerndigitalicon\endcsname {\simpleiconsmaponetwo\symbol{227}}
- \expandafter\def\csname simpleicon@westernunionicon\endcsname {\simpleiconsmaponetwo\symbol{228}}
- \expandafter\def\csname simpleicon@wetransfericon\endcsname {\simpleiconsmaponetwo\symbol{229}}
- \expandafter\def\csname simpleicon@weztermicon\endcsname {\simpleiconsmaponetwo\symbol{230}}
- \expandafter\def\csname simpleicon@wgpuicon\endcsname {\simpleiconsmaponetwo\symbol{231}}
- \expandafter\def\csname simpleicon@whatsappicon\endcsname {\simpleiconsmaponetwo\symbol{232}}
- \expandafter\def\csname simpleicon@wheniworkicon\endcsname {\simpleiconsmaponetwo\symbol{233}}
- \expandafter\def\csname simpleicon@wiiicon\endcsname {\simpleiconsmaponetwo\symbol{234}}
- \expandafter\def\csname simpleicon@wiiuicon\endcsname {\simpleiconsmaponetwo\symbol{235}}
- \expandafter\def\csname simpleicon@wikidataicon\endcsname {\simpleiconsmaponetwo\symbol{236}}
- \expandafter\def\csname simpleicon@wikidotggicon\endcsname {\simpleiconsmaponetwo\symbol{237}}
- \expandafter\def\csname simpleicon@wikidotjsicon\endcsname {\simpleiconsmaponetwo\symbol{238}}
- \expandafter\def\csname simpleicon@wikimediacommonsicon\endcsname {\simpleiconsmaponetwo\symbol{239}}
- \expandafter\def\csname simpleicon@wikimediafoundationicon\endcsname {\simpleiconsmaponetwo\symbol{240}}
- \expandafter\def\csname simpleicon@wikipediaicon\endcsname {\simpleiconsmaponetwo\symbol{241}}
- \expandafter\def\csname simpleicon@wikiquoteicon\endcsname {\simpleiconsmaponetwo\symbol{242}}
- \expandafter\def\csname simpleicon@wikivoyageicon\endcsname {\simpleiconsmaponetwo\symbol{243}}
- \expandafter\def\csname simpleicon@winampicon\endcsname {\simpleiconsmaponetwo\symbol{244}}
- \expandafter\def\csname simpleicon@wiproicon\endcsname {\simpleiconsmaponetwo\symbol{245}}
- \expandafter\def\csname simpleicon@wireicon\endcsname {\simpleiconsmaponetwo\symbol{246}}
- \expandafter\def\csname simpleicon@wireguardicon\endcsname {\simpleiconsmaponetwo\symbol{247}}
- \expandafter\def\csname simpleicon@wiresharkicon\endcsname {\simpleiconsmaponetwo\symbol{248}}
- \expandafter\def\csname simpleicon@wiseicon\endcsname {\simpleiconsmaponetwo\symbol{249}}
- \expandafter\def\csname simpleicon@wishicon\endcsname {\simpleiconsmaponetwo\symbol{250}}
- \expandafter\def\csname simpleicon@wistiaicon\endcsname {\simpleiconsmaponetwo\symbol{251}}
- \expandafter\def\csname simpleicon@wixicon\endcsname {\simpleiconsmaponetwo\symbol{252}}
- \expandafter\def\csname simpleicon@wizzairicon\endcsname {\simpleiconsmaponetwo\symbol{253}}
- \expandafter\def\csname simpleicon@wolframicon\endcsname {\simpleiconsmaponetwo\symbol{254}}
- \expandafter\def\csname simpleicon@wolframlanguageicon\endcsname {\simpleiconsmaponetwo\symbol{255}}
- \expandafter\def\csname simpleicon@wolframmathematicaicon\endcsname {\simpleiconsmaponethree\symbol{0}}
- \expandafter\def\csname simpleicon@wondershareicon\endcsname {\simpleiconsmaponethree\symbol{1}}
- \expandafter\def\csname simpleicon@wondersharefilmoraicon\endcsname {\simpleiconsmaponethree\symbol{2}}
- \expandafter\def\csname simpleicon@wooicon\endcsname {\simpleiconsmaponethree\symbol{3}}
- \expandafter\def\csname simpleicon@woocommerceicon\endcsname {\simpleiconsmaponethree\symbol{4}}
- \expandafter\def\csname simpleicon@wordpressicon\endcsname {\simpleiconsmaponethree\symbol{5}}
- \expandafter\def\csname simpleicon@workplaceicon\endcsname {\simpleiconsmaponethree\symbol{6}}
- \expandafter\def\csname simpleicon@worldhealthorganizationicon\endcsname {\simpleiconsmaponethree\symbol{7}}
- \expandafter\def\csname simpleicon@wpengineicon\endcsname {\simpleiconsmaponethree\symbol{8}}
- \expandafter\def\csname simpleicon@wpexplorericon\endcsname {\simpleiconsmaponethree\symbol{9}}
- \expandafter\def\csname simpleicon@wprocketicon\endcsname {\simpleiconsmaponethree\symbol{10}}
- \expandafter\def\csname simpleicon@writedotasicon\endcsname {\simpleiconsmaponethree\symbol{11}}
- \expandafter\def\csname simpleicon@wweicon\endcsname {\simpleiconsmaponethree\symbol{12}}
- \expandafter\def\csname simpleicon@wwiseicon\endcsname {\simpleiconsmaponethree\symbol{13}}
- \expandafter\def\csname simpleicon@wykopicon\endcsname {\simpleiconsmaponethree\symbol{14}}
- \expandafter\def\csname simpleicon@wyzeicon\endcsname {\simpleiconsmaponethree\symbol{15}}
- \expandafter\def\csname simpleicon@xicon\endcsname {\simpleiconsmaponethree\symbol{16}}
- \expandafter\def\csname simpleicon@xamppicon\endcsname {\simpleiconsmaponethree\symbol{17}}
- \expandafter\def\csname simpleicon@xcodeicon\endcsname {\simpleiconsmaponethree\symbol{18}}
- \expandafter\def\csname simpleicon@xdadevelopersicon\endcsname {\simpleiconsmaponethree\symbol{19}}
- \expandafter\def\csname simpleicon@xdotorgicon\endcsname {\simpleiconsmaponethree\symbol{20}}
- \expandafter\def\csname simpleicon@xenditicon\endcsname {\simpleiconsmaponethree\symbol{21}}
- \expandafter\def\csname simpleicon@xeroicon\endcsname {\simpleiconsmaponethree\symbol{22}}
- \expandafter\def\csname simpleicon@xfceicon\endcsname {\simpleiconsmaponethree\symbol{23}}
- \expandafter\def\csname simpleicon@xiaohongshuicon\endcsname {\simpleiconsmaponethree\symbol{24}}
- \expandafter\def\csname simpleicon@xiaomiicon\endcsname {\simpleiconsmaponethree\symbol{25}}
- \expandafter\def\csname simpleicon@xingicon\endcsname {\simpleiconsmaponethree\symbol{26}}
- \expandafter\def\csname simpleicon@xmppicon\endcsname {\simpleiconsmaponethree\symbol{27}}
- \expandafter\def\csname simpleicon@xoicon\endcsname {\simpleiconsmaponethree\symbol{28}}
- \expandafter\def\csname simpleicon@xrpicon\endcsname {\simpleiconsmaponethree\symbol{29}}
- \expandafter\def\csname simpleicon@xspliticon\endcsname {\simpleiconsmaponethree\symbol{30}}
- \expandafter\def\csname simpleicon@xstateicon\endcsname {\simpleiconsmaponethree\symbol{31}}
- \expandafter\def\csname simpleicon@yabaiicon\endcsname {\simpleiconsmaponethree\symbol{32}}
- \expandafter\def\csname simpleicon@yaleicon\endcsname {\simpleiconsmaponethree\symbol{33}}
- \expandafter\def\csname simpleicon@yamahacorporationicon\endcsname {\simpleiconsmaponethree\symbol{34}}
- \expandafter\def\csname simpleicon@yamahamotorcorporationicon\endcsname {\simpleiconsmaponethree\symbol{35}}
- \expandafter\def\csname simpleicon@yamlicon\endcsname {\simpleiconsmaponethree\symbol{36}}
- \expandafter\def\csname simpleicon@yandexcloudicon\endcsname {\simpleiconsmaponethree\symbol{37}}
- \expandafter\def\csname simpleicon@yarnicon\endcsname {\simpleiconsmaponethree\symbol{38}}
- \expandafter\def\csname simpleicon@ycombinatoricon\endcsname {\simpleiconsmaponethree\symbol{39}}
- \expandafter\def\csname simpleicon@yelpicon\endcsname {\simpleiconsmaponethree\symbol{40}}
- \expandafter\def\csname simpleicon@yetiicon\endcsname {\simpleiconsmaponethree\symbol{41}}
- \expandafter\def\csname simpleicon@yiiicon\endcsname {\simpleiconsmaponethree\symbol{42}}
- \expandafter\def\csname simpleicon@yoasticon\endcsname {\simpleiconsmaponethree\symbol{43}}
- \expandafter\def\csname simpleicon@youtubeicon\endcsname {\simpleiconsmaponethree\symbol{44}}
- \expandafter\def\csname simpleicon@youtubegamingicon\endcsname {\simpleiconsmaponethree\symbol{45}}
- \expandafter\def\csname simpleicon@youtubekidsicon\endcsname {\simpleiconsmaponethree\symbol{46}}
- \expandafter\def\csname simpleicon@youtubemusicicon\endcsname {\simpleiconsmaponethree\symbol{47}}
- \expandafter\def\csname simpleicon@youtubeshortsicon\endcsname {\simpleiconsmaponethree\symbol{48}}
- \expandafter\def\csname simpleicon@youtubestudioicon\endcsname {\simpleiconsmaponethree\symbol{49}}
- \expandafter\def\csname simpleicon@youtubetvicon\endcsname {\simpleiconsmaponethree\symbol{50}}
- \expandafter\def\csname simpleicon@yricon\endcsname {\simpleiconsmaponethree\symbol{51}}
- \expandafter\def\csname simpleicon@yubicoicon\endcsname {\simpleiconsmaponethree\symbol{52}}
- \expandafter\def\csname simpleicon@yunohosticon\endcsname {\simpleiconsmaponethree\symbol{53}}
- \expandafter\def\csname simpleicon@zabkaicon\endcsname {\simpleiconsmaponethree\symbol{54}}
- \expandafter\def\csname simpleicon@zaimicon\endcsname {\simpleiconsmaponethree\symbol{55}}
- \expandafter\def\csname simpleicon@zalandoicon\endcsname {\simpleiconsmaponethree\symbol{56}}
- \expandafter\def\csname simpleicon@zaloicon\endcsname {\simpleiconsmaponethree\symbol{57}}
- \expandafter\def\csname simpleicon@zapicon\endcsname {\simpleiconsmaponethree\symbol{58}}
- \expandafter\def\csname simpleicon@zapiericon\endcsname {\simpleiconsmaponethree\symbol{59}}
- \expandafter\def\csname simpleicon@zaraicon\endcsname {\simpleiconsmaponethree\symbol{60}}
- \expandafter\def\csname simpleicon@zazzleicon\endcsname {\simpleiconsmaponethree\symbol{61}}
- \expandafter\def\csname simpleicon@zcashicon\endcsname {\simpleiconsmaponethree\symbol{62}}
- \expandafter\def\csname simpleicon@zcoolicon\endcsname {\simpleiconsmaponethree\symbol{63}}
- \expandafter\def\csname simpleicon@zdficon\endcsname {\simpleiconsmaponethree\symbol{64}}
- \expandafter\def\csname simpleicon@zebpayicon\endcsname {\simpleiconsmaponethree\symbol{65}}
- \expandafter\def\csname simpleicon@zebratechnologiesicon\endcsname {\simpleiconsmaponethree\symbol{66}}
- \expandafter\def\csname simpleicon@zedindustriesicon\endcsname {\simpleiconsmaponethree\symbol{67}}
- \expandafter\def\csname simpleicon@zelleicon\endcsname {\simpleiconsmaponethree\symbol{68}}
- \expandafter\def\csname simpleicon@zendicon\endcsname {\simpleiconsmaponethree\symbol{69}}
- \expandafter\def\csname simpleicon@zendeskicon\endcsname {\simpleiconsmaponethree\symbol{70}}
- \expandafter\def\csname simpleicon@zennicon\endcsname {\simpleiconsmaponethree\symbol{71}}
- \expandafter\def\csname simpleicon@zenodoicon\endcsname {\simpleiconsmaponethree\symbol{72}}
- \expandafter\def\csname simpleicon@zensaricon\endcsname {\simpleiconsmaponethree\symbol{73}}
- \expandafter\def\csname simpleicon@zerodhaicon\endcsname {\simpleiconsmaponethree\symbol{74}}
- \expandafter\def\csname simpleicon@zerotiericon\endcsname {\simpleiconsmaponethree\symbol{75}}
- \expandafter\def\csname simpleicon@zerplyicon\endcsname {\simpleiconsmaponethree\symbol{76}}
- \expandafter\def\csname simpleicon@zettlricon\endcsname {\simpleiconsmaponethree\symbol{77}}
- \expandafter\def\csname simpleicon@zhihuicon\endcsname {\simpleiconsmaponethree\symbol{78}}
- \expandafter\def\csname simpleicon@zigicon\endcsname {\simpleiconsmaponethree\symbol{79}}
- \expandafter\def\csname simpleicon@zigbeeicon\endcsname {\simpleiconsmaponethree\symbol{80}}
- \expandafter\def\csname simpleicon@zigbee2mqtticon\endcsname {\simpleiconsmaponethree\symbol{81}}
- \expandafter\def\csname simpleicon@ziggoicon\endcsname {\simpleiconsmaponethree\symbol{82}}
- \expandafter\def\csname simpleicon@zilchicon\endcsname {\simpleiconsmaponethree\symbol{83}}
- \expandafter\def\csname simpleicon@zillowicon\endcsname {\simpleiconsmaponethree\symbol{84}}
- \expandafter\def\csname simpleicon@zincsearchicon\endcsname {\simpleiconsmaponethree\symbol{85}}
- \expandafter\def\csname simpleicon@zingaticon\endcsname {\simpleiconsmaponethree\symbol{86}}
- \expandafter\def\csname simpleicon@zodicon\endcsname {\simpleiconsmaponethree\symbol{87}}
- \expandafter\def\csname simpleicon@zohoicon\endcsname {\simpleiconsmaponethree\symbol{88}}
- \expandafter\def\csname simpleicon@zoipericon\endcsname {\simpleiconsmaponethree\symbol{89}}
- \expandafter\def\csname simpleicon@zomatoicon\endcsname {\simpleiconsmaponethree\symbol{90}}
- \expandafter\def\csname simpleicon@zoomicon\endcsname {\simpleiconsmaponethree\symbol{91}}
- \expandafter\def\csname simpleicon@zorinicon\endcsname {\simpleiconsmaponethree\symbol{92}}
- \expandafter\def\csname simpleicon@zoteroicon\endcsname {\simpleiconsmaponethree\symbol{93}}
- \expandafter\def\csname simpleicon@zshicon\endcsname {\simpleiconsmaponethree\symbol{94}}
- \expandafter\def\csname simpleicon@zulipicon\endcsname {\simpleiconsmaponethree\symbol{95}}
- \expandafter\def\csname simpleicon@zyteicon\endcsname {\simpleiconsmaponethree\symbol{96}} \ No newline at end of file
+ \expandafter\def\csname simpleicon@apachedolphinschedulericon\endcsname {\simpleiconsmapone\symbol{183}}
+ \expandafter\def\csname simpleicon@apachedruidicon\endcsname {\simpleiconsmapone\symbol{184}}
+ \expandafter\def\csname simpleicon@apacheechartsicon\endcsname {\simpleiconsmapone\symbol{185}}
+ \expandafter\def\csname simpleicon@apacheflinkicon\endcsname {\simpleiconsmapone\symbol{186}}
+ \expandafter\def\csname simpleicon@apachefreemarkericon\endcsname {\simpleiconsmapone\symbol{187}}
+ \expandafter\def\csname simpleicon@apachegroovyicon\endcsname {\simpleiconsmapone\symbol{188}}
+ \expandafter\def\csname simpleicon@apacheguacamoleicon\endcsname {\simpleiconsmapone\symbol{189}}
+ \expandafter\def\csname simpleicon@apachehadoopicon\endcsname {\simpleiconsmapone\symbol{190}}
+ \expandafter\def\csname simpleicon@apachehbaseicon\endcsname {\simpleiconsmapone\symbol{191}}
+ \expandafter\def\csname simpleicon@apachehiveicon\endcsname {\simpleiconsmapone\symbol{192}}
+ \expandafter\def\csname simpleicon@apachejmetericon\endcsname {\simpleiconsmapone\symbol{193}}
+ \expandafter\def\csname simpleicon@apachekafkaicon\endcsname {\simpleiconsmapone\symbol{194}}
+ \expandafter\def\csname simpleicon@apachekylinicon\endcsname {\simpleiconsmapone\symbol{195}}
+ \expandafter\def\csname simpleicon@apacheluceneicon\endcsname {\simpleiconsmapone\symbol{196}}
+ \expandafter\def\csname simpleicon@apachemavenicon\endcsname {\simpleiconsmapone\symbol{197}}
+ \expandafter\def\csname simpleicon@apachenetbeansideicon\endcsname {\simpleiconsmapone\symbol{198}}
+ \expandafter\def\csname simpleicon@apachenifiicon\endcsname {\simpleiconsmapone\symbol{199}}
+ \expandafter\def\csname simpleicon@apacheopenofficeicon\endcsname {\simpleiconsmapone\symbol{200}}
+ \expandafter\def\csname simpleicon@apacheparqueticon\endcsname {\simpleiconsmapone\symbol{201}}
+ \expandafter\def\csname simpleicon@apachepulsaricon\endcsname {\simpleiconsmapone\symbol{202}}
+ \expandafter\def\csname simpleicon@apacherocketmqicon\endcsname {\simpleiconsmapone\symbol{203}}
+ \expandafter\def\csname simpleicon@apachesolricon\endcsname {\simpleiconsmapone\symbol{204}}
+ \expandafter\def\csname simpleicon@apachesparkicon\endcsname {\simpleiconsmapone\symbol{205}}
+ \expandafter\def\csname simpleicon@apachestormicon\endcsname {\simpleiconsmapone\symbol{206}}
+ \expandafter\def\csname simpleicon@apachesuperseticon\endcsname {\simpleiconsmapone\symbol{207}}
+ \expandafter\def\csname simpleicon@apachetomcaticon\endcsname {\simpleiconsmapone\symbol{208}}
+ \expandafter\def\csname simpleicon@aparaticon\endcsname {\simpleiconsmapone\symbol{209}}
+ \expandafter\def\csname simpleicon@apifoxicon\endcsname {\simpleiconsmapone\symbol{210}}
+ \expandafter\def\csname simpleicon@apmterminalsicon\endcsname {\simpleiconsmapone\symbol{211}}
+ \expandafter\def\csname simpleicon@apollographqlicon\endcsname {\simpleiconsmapone\symbol{212}}
+ \expandafter\def\csname simpleicon@apostropheicon\endcsname {\simpleiconsmapone\symbol{213}}
+ \expandafter\def\csname simpleicon@appstoreicon\endcsname {\simpleiconsmapone\symbol{214}}
+ \expandafter\def\csname simpleicon@appgalleryicon\endcsname {\simpleiconsmapone\symbol{215}}
+ \expandafter\def\csname simpleicon@appianicon\endcsname {\simpleiconsmapone\symbol{216}}
+ \expandafter\def\csname simpleicon@appiumicon\endcsname {\simpleiconsmapone\symbol{217}}
+ \expandafter\def\csname simpleicon@appleicon\endcsname {\simpleiconsmapone\symbol{218}}
+ \expandafter\def\csname simpleicon@applearcadeicon\endcsname {\simpleiconsmapone\symbol{219}}
+ \expandafter\def\csname simpleicon@applemusicicon\endcsname {\simpleiconsmapone\symbol{220}}
+ \expandafter\def\csname simpleicon@applenewsicon\endcsname {\simpleiconsmapone\symbol{221}}
+ \expandafter\def\csname simpleicon@applepayicon\endcsname {\simpleiconsmapone\symbol{222}}
+ \expandafter\def\csname simpleicon@applepodcastsicon\endcsname {\simpleiconsmapone\symbol{223}}
+ \expandafter\def\csname simpleicon@appletvicon\endcsname {\simpleiconsmapone\symbol{224}}
+ \expandafter\def\csname simpleicon@appsignalicon\endcsname {\simpleiconsmapone\symbol{225}}
+ \expandafter\def\csname simpleicon@appsmithicon\endcsname {\simpleiconsmapone\symbol{226}}
+ \expandafter\def\csname simpleicon@appveyoricon\endcsname {\simpleiconsmapone\symbol{227}}
+ \expandafter\def\csname simpleicon@appwriteicon\endcsname {\simpleiconsmapone\symbol{228}}
+ \expandafter\def\csname simpleicon@aquaicon\endcsname {\simpleiconsmapone\symbol{229}}
+ \expandafter\def\csname simpleicon@aralicon\endcsname {\simpleiconsmapone\symbol{230}}
+ \expandafter\def\csname simpleicon@arangodbicon\endcsname {\simpleiconsmapone\symbol{231}}
+ \expandafter\def\csname simpleicon@arcicon\endcsname {\simpleiconsmapone\symbol{232}}
+ \expandafter\def\csname simpleicon@arcgisicon\endcsname {\simpleiconsmapone\symbol{233}}
+ \expandafter\def\csname simpleicon@archlinuxicon\endcsname {\simpleiconsmapone\symbol{234}}
+ \expandafter\def\csname simpleicon@archicadicon\endcsname {\simpleiconsmapone\symbol{235}}
+ \expandafter\def\csname simpleicon@archiveofourownicon\endcsname {\simpleiconsmapone\symbol{236}}
+ \expandafter\def\csname simpleicon@ardouricon\endcsname {\simpleiconsmapone\symbol{237}}
+ \expandafter\def\csname simpleicon@arduinoicon\endcsname {\simpleiconsmapone\symbol{238}}
+ \expandafter\def\csname simpleicon@argoicon\endcsname {\simpleiconsmapone\symbol{239}}
+ \expandafter\def\csname simpleicon@argosicon\endcsname {\simpleiconsmapone\symbol{240}}
+ \expandafter\def\csname simpleicon@ariakiticon\endcsname {\simpleiconsmapone\symbol{241}}
+ \expandafter\def\csname simpleicon@arkecosystemicon\endcsname {\simpleiconsmapone\symbol{242}}
+ \expandafter\def\csname simpleicon@arloicon\endcsname {\simpleiconsmapone\symbol{243}}
+ \expandafter\def\csname simpleicon@armicon\endcsname {\simpleiconsmapone\symbol{244}}
+ \expandafter\def\csname simpleicon@armkeilicon\endcsname {\simpleiconsmapone\symbol{245}}
+ \expandafter\def\csname simpleicon@arstechnicaicon\endcsname {\simpleiconsmapone\symbol{246}}
+ \expandafter\def\csname simpleicon@artifacthubicon\endcsname {\simpleiconsmapone\symbol{247}}
+ \expandafter\def\csname simpleicon@artixlinuxicon\endcsname {\simpleiconsmapone\symbol{248}}
+ \expandafter\def\csname simpleicon@artstationicon\endcsname {\simpleiconsmapone\symbol{249}}
+ \expandafter\def\csname simpleicon@arxivicon\endcsname {\simpleiconsmapone\symbol{250}}
+ \expandafter\def\csname simpleicon@asahilinuxicon\endcsname {\simpleiconsmapone\symbol{251}}
+ \expandafter\def\csname simpleicon@asanaicon\endcsname {\simpleiconsmapone\symbol{252}}
+ \expandafter\def\csname simpleicon@asciidoctoricon\endcsname {\simpleiconsmapone\symbol{253}}
+ \expandafter\def\csname simpleicon@asciinemaicon\endcsname {\simpleiconsmapone\symbol{254}}
+ \expandafter\def\csname simpleicon@asdaicon\endcsname {\simpleiconsmapone\symbol{255}}
+ \expandafter\def\csname simpleicon@asepriteicon\endcsname {\simpleiconsmaptwo\symbol{0}}
+ \expandafter\def\csname simpleicon@assemblyscripticon\endcsname {\simpleiconsmaptwo\symbol{1}}
+ \expandafter\def\csname simpleicon@asteriskicon\endcsname {\simpleiconsmaptwo\symbol{2}}
+ \expandafter\def\csname simpleicon@astonmartinicon\endcsname {\simpleiconsmaptwo\symbol{3}}
+ \expandafter\def\csname simpleicon@astraicon\endcsname {\simpleiconsmaptwo\symbol{4}}
+ \expandafter\def\csname simpleicon@astralicon\endcsname {\simpleiconsmaptwo\symbol{5}}
+ \expandafter\def\csname simpleicon@astroicon\endcsname {\simpleiconsmaptwo\symbol{6}}
+ \expandafter\def\csname simpleicon@asusicon\endcsname {\simpleiconsmaptwo\symbol{7}}
+ \expandafter\def\csname simpleicon@atandticon\endcsname {\simpleiconsmaptwo\symbol{8}}
+ \expandafter\def\csname simpleicon@atariicon\endcsname {\simpleiconsmaptwo\symbol{9}}
+ \expandafter\def\csname simpleicon@atlasosicon\endcsname {\simpleiconsmaptwo\symbol{10}}
+ \expandafter\def\csname simpleicon@atlassianicon\endcsname {\simpleiconsmaptwo\symbol{11}}
+ \expandafter\def\csname simpleicon@auchanicon\endcsname {\simpleiconsmaptwo\symbol{12}}
+ \expandafter\def\csname simpleicon@audacityicon\endcsname {\simpleiconsmaptwo\symbol{13}}
+ \expandafter\def\csname simpleicon@audiicon\endcsname {\simpleiconsmaptwo\symbol{14}}
+ \expandafter\def\csname simpleicon@audibleicon\endcsname {\simpleiconsmaptwo\symbol{15}}
+ \expandafter\def\csname simpleicon@audiotechnicaicon\endcsname {\simpleiconsmaptwo\symbol{16}}
+ \expandafter\def\csname simpleicon@audiobookshelficon\endcsname {\simpleiconsmaptwo\symbol{17}}
+ \expandafter\def\csname simpleicon@audioboomicon\endcsname {\simpleiconsmaptwo\symbol{18}}
+ \expandafter\def\csname simpleicon@audiomackicon\endcsname {\simpleiconsmaptwo\symbol{19}}
+ \expandafter\def\csname simpleicon@aureliaicon\endcsname {\simpleiconsmaptwo\symbol{20}}
+ \expandafter\def\csname simpleicon@auth0icon\endcsname {\simpleiconsmaptwo\symbol{21}}
+ \expandafter\def\csname simpleicon@autheliaicon\endcsname {\simpleiconsmaptwo\symbol{22}}
+ \expandafter\def\csname simpleicon@authentikicon\endcsname {\simpleiconsmaptwo\symbol{23}}
+ \expandafter\def\csname simpleicon@authyicon\endcsname {\simpleiconsmaptwo\symbol{24}}
+ \expandafter\def\csname simpleicon@autocadicon\endcsname {\simpleiconsmaptwo\symbol{25}}
+ \expandafter\def\csname simpleicon@autocannonicon\endcsname {\simpleiconsmaptwo\symbol{26}}
+ \expandafter\def\csname simpleicon@autodeskicon\endcsname {\simpleiconsmaptwo\symbol{27}}
+ \expandafter\def\csname simpleicon@autodeskmayaicon\endcsname {\simpleiconsmaptwo\symbol{28}}
+ \expandafter\def\csname simpleicon@autodeskreviticon\endcsname {\simpleiconsmaptwo\symbol{29}}
+ \expandafter\def\csname simpleicon@autohotkeyicon\endcsname {\simpleiconsmaptwo\symbol{30}}
+ \expandafter\def\csname simpleicon@autoiticon\endcsname {\simpleiconsmaptwo\symbol{31}}
+ \expandafter\def\csname simpleicon@automatticicon\endcsname {\simpleiconsmaptwo\symbol{32}}
+ \expandafter\def\csname simpleicon@autoprefixericon\endcsname {\simpleiconsmaptwo\symbol{33}}
+ \expandafter\def\csname simpleicon@autozoneicon\endcsname {\simpleiconsmaptwo\symbol{34}}
+ \expandafter\def\csname simpleicon@avajsicon\endcsname {\simpleiconsmaptwo\symbol{35}}
+ \expandafter\def\csname simpleicon@avasticon\endcsname {\simpleiconsmaptwo\symbol{36}}
+ \expandafter\def\csname simpleicon@aviancaicon\endcsname {\simpleiconsmaptwo\symbol{37}}
+ \expandafter\def\csname simpleicon@aviraicon\endcsname {\simpleiconsmaptwo\symbol{38}}
+ \expandafter\def\csname simpleicon@awesomelistsicon\endcsname {\simpleiconsmaptwo\symbol{39}}
+ \expandafter\def\csname simpleicon@awesomewmicon\endcsname {\simpleiconsmaptwo\symbol{40}}
+ \expandafter\def\csname simpleicon@awsamplifyicon\endcsname {\simpleiconsmaptwo\symbol{41}}
+ \expandafter\def\csname simpleicon@awselasticloadbalancingicon\endcsname {\simpleiconsmaptwo\symbol{42}}
+ \expandafter\def\csname simpleicon@awsfargateicon\endcsname {\simpleiconsmaptwo\symbol{43}}
+ \expandafter\def\csname simpleicon@awslambdaicon\endcsname {\simpleiconsmaptwo\symbol{44}}
+ \expandafter\def\csname simpleicon@awsorganizationsicon\endcsname {\simpleiconsmaptwo\symbol{45}}
+ \expandafter\def\csname simpleicon@awssecretsmanagericon\endcsname {\simpleiconsmaptwo\symbol{46}}
+ \expandafter\def\csname simpleicon@awwwardsicon\endcsname {\simpleiconsmaptwo\symbol{47}}
+ \expandafter\def\csname simpleicon@axiosicon\endcsname {\simpleiconsmaptwo\symbol{48}}
+ \expandafter\def\csname simpleicon@bandrautomationicon\endcsname {\simpleiconsmaptwo\symbol{49}}
+ \expandafter\def\csname simpleicon@babelicon\endcsname {\simpleiconsmaptwo\symbol{50}}
+ \expandafter\def\csname simpleicon@babelioicon\endcsname {\simpleiconsmaptwo\symbol{51}}
+ \expandafter\def\csname simpleicon@babylondotjsicon\endcsname {\simpleiconsmaptwo\symbol{52}}
+ \expandafter\def\csname simpleicon@backblazeicon\endcsname {\simpleiconsmaptwo\symbol{53}}
+ \expandafter\def\csname simpleicon@backboneicon\endcsname {\simpleiconsmaptwo\symbol{54}}
+ \expandafter\def\csname simpleicon@backbonedotjsicon\endcsname {\simpleiconsmaptwo\symbol{55}}
+ \expandafter\def\csname simpleicon@backendlessicon\endcsname {\simpleiconsmaptwo\symbol{56}}
+ \expandafter\def\csname simpleicon@backstageicon\endcsname {\simpleiconsmaptwo\symbol{57}}
+ \expandafter\def\csname simpleicon@badooicon\endcsname {\simpleiconsmaptwo\symbol{58}}
+ \expandafter\def\csname simpleicon@baiduicon\endcsname {\simpleiconsmaptwo\symbol{59}}
+ \expandafter\def\csname simpleicon@bakalariicon\endcsname {\simpleiconsmaptwo\symbol{60}}
+ \expandafter\def\csname simpleicon@bambooicon\endcsname {\simpleiconsmaptwo\symbol{61}}
+ \expandafter\def\csname simpleicon@bambulabicon\endcsname {\simpleiconsmaptwo\symbol{62}}
+ \expandafter\def\csname simpleicon@bandcampicon\endcsname {\simpleiconsmaptwo\symbol{63}}
+ \expandafter\def\csname simpleicon@bandlabicon\endcsname {\simpleiconsmaptwo\symbol{64}}
+ \expandafter\def\csname simpleicon@bandsintownicon\endcsname {\simpleiconsmaptwo\symbol{65}}
+ \expandafter\def\csname simpleicon@bankofamericaicon\endcsname {\simpleiconsmaptwo\symbol{66}}
+ \expandafter\def\csname simpleicon@barclaysicon\endcsname {\simpleiconsmaptwo\symbol{67}}
+ \expandafter\def\csname simpleicon@baremetricsicon\endcsname {\simpleiconsmaptwo\symbol{68}}
+ \expandafter\def\csname simpleicon@barmeniaicon\endcsname {\simpleiconsmaptwo\symbol{69}}
+ \expandafter\def\csname simpleicon@basecampicon\endcsname {\simpleiconsmaptwo\symbol{70}}
+ \expandafter\def\csname simpleicon@baserowicon\endcsname {\simpleiconsmaptwo\symbol{71}}
+ \expandafter\def\csname simpleicon@basicattentiontokenicon\endcsname {\simpleiconsmaptwo\symbol{72}}
+ \expandafter\def\csname simpleicon@bastyonicon\endcsname {\simpleiconsmaptwo\symbol{73}}
+ \expandafter\def\csname simpleicon@baticon\endcsname {\simpleiconsmaptwo\symbol{74}}
+ \expandafter\def\csname simpleicon@bataicon\endcsname {\simpleiconsmaptwo\symbol{75}}
+ \expandafter\def\csname simpleicon@battledotneticon\endcsname {\simpleiconsmaptwo\symbol{76}}
+ \expandafter\def\csname simpleicon@bazelicon\endcsname {\simpleiconsmaptwo\symbol{77}}
+ \expandafter\def\csname simpleicon@beatporticon\endcsname {\simpleiconsmaptwo\symbol{78}}
+ \expandafter\def\csname simpleicon@beatsicon\endcsname {\simpleiconsmaptwo\symbol{79}}
+ \expandafter\def\csname simpleicon@beatsbydreicon\endcsname {\simpleiconsmaptwo\symbol{80}}
+ \expandafter\def\csname simpleicon@beatstarsicon\endcsname {\simpleiconsmaptwo\symbol{81}}
+ \expandafter\def\csname simpleicon@beekeeperstudioicon\endcsname {\simpleiconsmaptwo\symbol{82}}
+ \expandafter\def\csname simpleicon@behanceicon\endcsname {\simpleiconsmaptwo\symbol{83}}
+ \expandafter\def\csname simpleicon@beijingsubwayicon\endcsname {\simpleiconsmaptwo\symbol{84}}
+ \expandafter\def\csname simpleicon@bemicon\endcsname {\simpleiconsmaptwo\symbol{85}}
+ \expandafter\def\csname simpleicon@bentleyicon\endcsname {\simpleiconsmaptwo\symbol{86}}
+ \expandafter\def\csname simpleicon@bentoicon\endcsname {\simpleiconsmaptwo\symbol{87}}
+ \expandafter\def\csname simpleicon@bentoboxicon\endcsname {\simpleiconsmaptwo\symbol{88}}
+ \expandafter\def\csname simpleicon@bentomlicon\endcsname {\simpleiconsmaptwo\symbol{89}}
+ \expandafter\def\csname simpleicon@berealicon\endcsname {\simpleiconsmaptwo\symbol{90}}
+ \expandafter\def\csname simpleicon@betfairicon\endcsname {\simpleiconsmaptwo\symbol{91}}
+ \expandafter\def\csname simpleicon@betterstackicon\endcsname {\simpleiconsmaptwo\symbol{92}}
+ \expandafter\def\csname simpleicon@betterdiscordicon\endcsname {\simpleiconsmaptwo\symbol{93}}
+ \expandafter\def\csname simpleicon@bevyicon\endcsname {\simpleiconsmaptwo\symbol{94}}
+ \expandafter\def\csname simpleicon@bigcartelicon\endcsname {\simpleiconsmaptwo\symbol{95}}
+ \expandafter\def\csname simpleicon@bigbasketicon\endcsname {\simpleiconsmaptwo\symbol{96}}
+ \expandafter\def\csname simpleicon@bigbluebuttonicon\endcsname {\simpleiconsmaptwo\symbol{97}}
+ \expandafter\def\csname simpleicon@bigcommerceicon\endcsname {\simpleiconsmaptwo\symbol{98}}
+ \expandafter\def\csname simpleicon@bilibiliicon\endcsname {\simpleiconsmaptwo\symbol{99}}
+ \expandafter\def\csname simpleicon@billboardicon\endcsname {\simpleiconsmaptwo\symbol{100}}
+ \expandafter\def\csname simpleicon@bimicon\endcsname {\simpleiconsmaptwo\symbol{101}}
+ \expandafter\def\csname simpleicon@binanceicon\endcsname {\simpleiconsmaptwo\symbol{102}}
+ \expandafter\def\csname simpleicon@biolinkicon\endcsname {\simpleiconsmaptwo\symbol{103}}
+ \expandafter\def\csname simpleicon@biomeicon\endcsname {\simpleiconsmaptwo\symbol{104}}
+ \expandafter\def\csname simpleicon@bisecthostingicon\endcsname {\simpleiconsmaptwo\symbol{105}}
+ \expandafter\def\csname simpleicon@biticon\endcsname {\simpleiconsmaptwo\symbol{106}}
+ \expandafter\def\csname simpleicon@bitbucketicon\endcsname {\simpleiconsmaptwo\symbol{107}}
+ \expandafter\def\csname simpleicon@bitcoinicon\endcsname {\simpleiconsmaptwo\symbol{108}}
+ \expandafter\def\csname simpleicon@bitcoincashicon\endcsname {\simpleiconsmaptwo\symbol{109}}
+ \expandafter\def\csname simpleicon@bitcoinsvicon\endcsname {\simpleiconsmaptwo\symbol{110}}
+ \expandafter\def\csname simpleicon@bitcometicon\endcsname {\simpleiconsmaptwo\symbol{111}}
+ \expandafter\def\csname simpleicon@bitdefendericon\endcsname {\simpleiconsmaptwo\symbol{112}}
+ \expandafter\def\csname simpleicon@bitlyicon\endcsname {\simpleiconsmaptwo\symbol{113}}
+ \expandafter\def\csname simpleicon@bitriseicon\endcsname {\simpleiconsmaptwo\symbol{114}}
+ \expandafter\def\csname simpleicon@bittorrenticon\endcsname {\simpleiconsmaptwo\symbol{115}}
+ \expandafter\def\csname simpleicon@bitwardenicon\endcsname {\simpleiconsmaptwo\symbol{116}}
+ \expandafter\def\csname simpleicon@bitwigicon\endcsname {\simpleiconsmaptwo\symbol{117}}
+ \expandafter\def\csname simpleicon@blackberryicon\endcsname {\simpleiconsmaptwo\symbol{118}}
+ \expandafter\def\csname simpleicon@blackmagicdesignicon\endcsname {\simpleiconsmaptwo\symbol{119}}
+ \expandafter\def\csname simpleicon@blazemetericon\endcsname {\simpleiconsmaptwo\symbol{120}}
+ \expandafter\def\csname simpleicon@blazoricon\endcsname {\simpleiconsmaptwo\symbol{121}}
+ \expandafter\def\csname simpleicon@blendericon\endcsname {\simpleiconsmaptwo\symbol{122}}
+ \expandafter\def\csname simpleicon@blockbenchicon\endcsname {\simpleiconsmaptwo\symbol{123}}
+ \expandafter\def\csname simpleicon@blockchaindotcomicon\endcsname {\simpleiconsmaptwo\symbol{124}}
+ \expandafter\def\csname simpleicon@bloggericon\endcsname {\simpleiconsmaptwo\symbol{125}}
+ \expandafter\def\csname simpleicon@bloglovinicon\endcsname {\simpleiconsmaptwo\symbol{126}}
+ \expandafter\def\csname simpleicon@blueprinticon\endcsname {\simpleiconsmaptwo\symbol{127}}
+ \expandafter\def\csname simpleicon@blueskyicon\endcsname {\simpleiconsmaptwo\symbol{128}}
+ \expandafter\def\csname simpleicon@bluesoundicon\endcsname {\simpleiconsmaptwo\symbol{129}}
+ \expandafter\def\csname simpleicon@bluetoothicon\endcsname {\simpleiconsmaptwo\symbol{130}}
+ \expandafter\def\csname simpleicon@bmcsoftwareicon\endcsname {\simpleiconsmaptwo\symbol{131}}
+ \expandafter\def\csname simpleicon@bmwicon\endcsname {\simpleiconsmaptwo\symbol{132}}
+ \expandafter\def\csname simpleicon@bnbchainicon\endcsname {\simpleiconsmaptwo\symbol{133}}
+ \expandafter\def\csname simpleicon@boardgamegeekicon\endcsname {\simpleiconsmaptwo\symbol{134}}
+ \expandafter\def\csname simpleicon@boaticon\endcsname {\simpleiconsmaptwo\symbol{135}}
+ \expandafter\def\csname simpleicon@boehringeringelheimicon\endcsname {\simpleiconsmaptwo\symbol{136}}
+ \expandafter\def\csname simpleicon@boeingicon\endcsname {\simpleiconsmaptwo\symbol{137}}
+ \expandafter\def\csname simpleicon@bombardiericon\endcsname {\simpleiconsmaptwo\symbol{138}}
+ \expandafter\def\csname simpleicon@bookalopeicon\endcsname {\simpleiconsmaptwo\symbol{139}}
+ \expandafter\def\csname simpleicon@bookbubicon\endcsname {\simpleiconsmaptwo\symbol{140}}
+ \expandafter\def\csname simpleicon@bookmetericon\endcsname {\simpleiconsmaptwo\symbol{141}}
+ \expandafter\def\csname simpleicon@bookmyshowicon\endcsname {\simpleiconsmaptwo\symbol{142}}
+ \expandafter\def\csname simpleicon@bookstackicon\endcsname {\simpleiconsmaptwo\symbol{143}}
+ \expandafter\def\csname simpleicon@boosticon\endcsname {\simpleiconsmaptwo\symbol{144}}
+ \expandafter\def\csname simpleicon@boostyicon\endcsname {\simpleiconsmaptwo\symbol{145}}
+ \expandafter\def\csname simpleicon@bootsicon\endcsname {\simpleiconsmaptwo\symbol{146}}
+ \expandafter\def\csname simpleicon@bootstrapicon\endcsname {\simpleiconsmaptwo\symbol{147}}
+ \expandafter\def\csname simpleicon@borgbackupicon\endcsname {\simpleiconsmaptwo\symbol{148}}
+ \expandafter\def\csname simpleicon@boschicon\endcsname {\simpleiconsmaptwo\symbol{149}}
+ \expandafter\def\csname simpleicon@boseicon\endcsname {\simpleiconsmaptwo\symbol{150}}
+ \expandafter\def\csname simpleicon@botblecmsicon\endcsname {\simpleiconsmaptwo\symbol{151}}
+ \expandafter\def\csname simpleicon@boulangericon\endcsname {\simpleiconsmaptwo\symbol{152}}
+ \expandafter\def\csname simpleicon@bowericon\endcsname {\simpleiconsmaptwo\symbol{153}}
+ \expandafter\def\csname simpleicon@boxicon\endcsname {\simpleiconsmaptwo\symbol{154}}
+ \expandafter\def\csname simpleicon@boxysvgicon\endcsname {\simpleiconsmaptwo\symbol{155}}
+ \expandafter\def\csname simpleicon@braintreeicon\endcsname {\simpleiconsmaptwo\symbol{156}}
+ \expandafter\def\csname simpleicon@brandfoldericon\endcsname {\simpleiconsmaptwo\symbol{157}}
+ \expandafter\def\csname simpleicon@braveicon\endcsname {\simpleiconsmaptwo\symbol{158}}
+ \expandafter\def\csname simpleicon@breakericon\endcsname {\simpleiconsmaptwo\symbol{159}}
+ \expandafter\def\csname simpleicon@brenntagicon\endcsname {\simpleiconsmaptwo\symbol{160}}
+ \expandafter\def\csname simpleicon@brevoicon\endcsname {\simpleiconsmaptwo\symbol{161}}
+ \expandafter\def\csname simpleicon@brexicon\endcsname {\simpleiconsmaptwo\symbol{162}}
+ \expandafter\def\csname simpleicon@bricksicon\endcsname {\simpleiconsmaptwo\symbol{163}}
+ \expandafter\def\csname simpleicon@britishairwaysicon\endcsname {\simpleiconsmaptwo\symbol{164}}
+ \expandafter\def\csname simpleicon@broadcomicon\endcsname {\simpleiconsmaptwo\symbol{165}}
+ \expandafter\def\csname simpleicon@brunoicon\endcsname {\simpleiconsmaptwo\symbol{166}}
+ \expandafter\def\csname simpleicon@bsdicon\endcsname {\simpleiconsmaptwo\symbol{167}}
+ \expandafter\def\csname simpleicon@bspwmicon\endcsname {\simpleiconsmaptwo\symbol{168}}
+ \expandafter\def\csname simpleicon@bticon\endcsname {\simpleiconsmaptwo\symbol{169}}
+ \expandafter\def\csname simpleicon@buddyicon\endcsname {\simpleiconsmaptwo\symbol{170}}
+ \expandafter\def\csname simpleicon@budibaseicon\endcsname {\simpleiconsmaptwo\symbol{171}}
+ \expandafter\def\csname simpleicon@buefyicon\endcsname {\simpleiconsmaptwo\symbol{172}}
+ \expandafter\def\csname simpleicon@buffericon\endcsname {\simpleiconsmaptwo\symbol{173}}
+ \expandafter\def\csname simpleicon@bugattiicon\endcsname {\simpleiconsmaptwo\symbol{174}}
+ \expandafter\def\csname simpleicon@bugcrowdicon\endcsname {\simpleiconsmaptwo\symbol{175}}
+ \expandafter\def\csname simpleicon@bugsnagicon\endcsname {\simpleiconsmaptwo\symbol{176}}
+ \expandafter\def\csname simpleicon@buhlicon\endcsname {\simpleiconsmaptwo\symbol{177}}
+ \expandafter\def\csname simpleicon@buildkiteicon\endcsname {\simpleiconsmaptwo\symbol{178}}
+ \expandafter\def\csname simpleicon@builtbybiticon\endcsname {\simpleiconsmaptwo\symbol{179}}
+ \expandafter\def\csname simpleicon@bukalapakicon\endcsname {\simpleiconsmaptwo\symbol{180}}
+ \expandafter\def\csname simpleicon@bulmaicon\endcsname {\simpleiconsmaptwo\symbol{181}}
+ \expandafter\def\csname simpleicon@bunicon\endcsname {\simpleiconsmaptwo\symbol{182}}
+ \expandafter\def\csname simpleicon@bungieicon\endcsname {\simpleiconsmaptwo\symbol{183}}
+ \expandafter\def\csname simpleicon@bunqicon\endcsname {\simpleiconsmaptwo\symbol{184}}
+ \expandafter\def\csname simpleicon@burgerkingicon\endcsname {\simpleiconsmaptwo\symbol{185}}
+ \expandafter\def\csname simpleicon@burpsuiteicon\endcsname {\simpleiconsmaptwo\symbol{186}}
+ \expandafter\def\csname simpleicon@burtonicon\endcsname {\simpleiconsmaptwo\symbol{187}}
+ \expandafter\def\csname simpleicon@buymeacoffeeicon\endcsname {\simpleiconsmaptwo\symbol{188}}
+ \expandafter\def\csname simpleicon@buyselladsicon\endcsname {\simpleiconsmaptwo\symbol{189}}
+ \expandafter\def\csname simpleicon@buzzfeedicon\endcsname {\simpleiconsmaptwo\symbol{190}}
+ \expandafter\def\csname simpleicon@bvgicon\endcsname {\simpleiconsmaptwo\symbol{191}}
+ \expandafter\def\csname simpleicon@byjusicon\endcsname {\simpleiconsmaptwo\symbol{192}}
+ \expandafter\def\csname simpleicon@bytedanceicon\endcsname {\simpleiconsmaptwo\symbol{193}}
+ \expandafter\def\csname simpleicon@cicon\endcsname {\simpleiconsmaptwo\symbol{194}}
+ \expandafter\def\csname simpleicon@cplusplusicon\endcsname {\simpleiconsmaptwo\symbol{195}}
+ \expandafter\def\csname simpleicon@cplusplusbuildericon\endcsname {\simpleiconsmaptwo\symbol{196}}
+ \expandafter\def\csname simpleicon@cacheticon\endcsname {\simpleiconsmaptwo\symbol{197}}
+ \expandafter\def\csname simpleicon@caddyicon\endcsname {\simpleiconsmaptwo\symbol{198}}
+ \expandafter\def\csname simpleicon@cadillacicon\endcsname {\simpleiconsmaptwo\symbol{199}}
+ \expandafter\def\csname simpleicon@cafepressicon\endcsname {\simpleiconsmaptwo\symbol{200}}
+ \expandafter\def\csname simpleicon@cairographicsicon\endcsname {\simpleiconsmaptwo\symbol{201}}
+ \expandafter\def\csname simpleicon@cairometroicon\endcsname {\simpleiconsmaptwo\symbol{202}}
+ \expandafter\def\csname simpleicon@caixabankicon\endcsname {\simpleiconsmaptwo\symbol{203}}
+ \expandafter\def\csname simpleicon@cakephpicon\endcsname {\simpleiconsmaptwo\symbol{204}}
+ \expandafter\def\csname simpleicon@caldotcomicon\endcsname {\simpleiconsmaptwo\symbol{205}}
+ \expandafter\def\csname simpleicon@calendlyicon\endcsname {\simpleiconsmaptwo\symbol{206}}
+ \expandafter\def\csname simpleicon@calibrewebicon\endcsname {\simpleiconsmaptwo\symbol{207}}
+ \expandafter\def\csname simpleicon@campaignmonitoricon\endcsname {\simpleiconsmaptwo\symbol{208}}
+ \expandafter\def\csname simpleicon@camundaicon\endcsname {\simpleiconsmaptwo\symbol{209}}
+ \expandafter\def\csname simpleicon@canonicalicon\endcsname {\simpleiconsmaptwo\symbol{210}}
+ \expandafter\def\csname simpleicon@canvaicon\endcsname {\simpleiconsmaptwo\symbol{211}}
+ \expandafter\def\csname simpleicon@canvasicon\endcsname {\simpleiconsmaptwo\symbol{212}}
+ \expandafter\def\csname simpleicon@capacitoricon\endcsname {\simpleiconsmaptwo\symbol{213}}
+ \expandafter\def\csname simpleicon@caprovericon\endcsname {\simpleiconsmaptwo\symbol{214}}
+ \expandafter\def\csname simpleicon@carthrottleicon\endcsname {\simpleiconsmaptwo\symbol{215}}
+ \expandafter\def\csname simpleicon@cardanoicon\endcsname {\simpleiconsmaptwo\symbol{216}}
+ \expandafter\def\csname simpleicon@carlsberggroupicon\endcsname {\simpleiconsmaptwo\symbol{217}}
+ \expandafter\def\csname simpleicon@carrdicon\endcsname {\simpleiconsmaptwo\symbol{218}}
+ \expandafter\def\csname simpleicon@carrefouricon\endcsname {\simpleiconsmaptwo\symbol{219}}
+ \expandafter\def\csname simpleicon@cartoicon\endcsname {\simpleiconsmaptwo\symbol{220}}
+ \expandafter\def\csname simpleicon@cashappicon\endcsname {\simpleiconsmaptwo\symbol{221}}
+ \expandafter\def\csname simpleicon@castboxicon\endcsname {\simpleiconsmaptwo\symbol{222}}
+ \expandafter\def\csname simpleicon@castoramaicon\endcsname {\simpleiconsmaptwo\symbol{223}}
+ \expandafter\def\csname simpleicon@castroicon\endcsname {\simpleiconsmaptwo\symbol{224}}
+ \expandafter\def\csname simpleicon@caterpillaricon\endcsname {\simpleiconsmaptwo\symbol{225}}
+ \expandafter\def\csname simpleicon@cbcicon\endcsname {\simpleiconsmaptwo\symbol{226}}
+ \expandafter\def\csname simpleicon@cbsicon\endcsname {\simpleiconsmaptwo\symbol{227}}
+ \expandafter\def\csname simpleicon@cccicon\endcsname {\simpleiconsmaptwo\symbol{228}}
+ \expandafter\def\csname simpleicon@ccleanericon\endcsname {\simpleiconsmaptwo\symbol{229}}
+ \expandafter\def\csname simpleicon@cdprojekticon\endcsname {\simpleiconsmaptwo\symbol{230}}
+ \expandafter\def\csname simpleicon@ceicon\endcsname {\simpleiconsmaptwo\symbol{231}}
+ \expandafter\def\csname simpleicon@celeryicon\endcsname {\simpleiconsmaptwo\symbol{232}}
+ \expandafter\def\csname simpleicon@celestronicon\endcsname {\simpleiconsmaptwo\symbol{233}}
+ \expandafter\def\csname simpleicon@centosicon\endcsname {\simpleiconsmaptwo\symbol{234}}
+ \expandafter\def\csname simpleicon@cephicon\endcsname {\simpleiconsmaptwo\symbol{235}}
+ \expandafter\def\csname simpleicon@cesiumicon\endcsname {\simpleiconsmaptwo\symbol{236}}
+ \expandafter\def\csname simpleicon@chaiicon\endcsname {\simpleiconsmaptwo\symbol{237}}
+ \expandafter\def\csname simpleicon@chainguardicon\endcsname {\simpleiconsmaptwo\symbol{238}}
+ \expandafter\def\csname simpleicon@chainlinkicon\endcsname {\simpleiconsmaptwo\symbol{239}}
+ \expandafter\def\csname simpleicon@chakrauiicon\endcsname {\simpleiconsmaptwo\symbol{240}}
+ \expandafter\def\csname simpleicon@channel4icon\endcsname {\simpleiconsmaptwo\symbol{241}}
+ \expandafter\def\csname simpleicon@charlesicon\endcsname {\simpleiconsmaptwo\symbol{242}}
+ \expandafter\def\csname simpleicon@chartdotjsicon\endcsname {\simpleiconsmaptwo\symbol{243}}
+ \expandafter\def\csname simpleicon@chartmogulicon\endcsname {\simpleiconsmaptwo\symbol{244}}
+ \expandafter\def\csname simpleicon@chaseicon\endcsname {\simpleiconsmaptwo\symbol{245}}
+ \expandafter\def\csname simpleicon@chatboticon\endcsname {\simpleiconsmaptwo\symbol{246}}
+ \expandafter\def\csname simpleicon@chatwooticon\endcsname {\simpleiconsmaptwo\symbol{247}}
+ \expandafter\def\csname simpleicon@checkioicon\endcsname {\simpleiconsmaptwo\symbol{248}}
+ \expandafter\def\csname simpleicon@checkmarxicon\endcsname {\simpleiconsmaptwo\symbol{249}}
+ \expandafter\def\csname simpleicon@checkmkicon\endcsname {\simpleiconsmaptwo\symbol{250}}
+ \expandafter\def\csname simpleicon@chedrauiicon\endcsname {\simpleiconsmaptwo\symbol{251}}
+ \expandafter\def\csname simpleicon@cheerioicon\endcsname {\simpleiconsmaptwo\symbol{252}}
+ \expandafter\def\csname simpleicon@cheficon\endcsname {\simpleiconsmaptwo\symbol{253}}
+ \expandafter\def\csname simpleicon@chemexicon\endcsname {\simpleiconsmaptwo\symbol{254}}
+ \expandafter\def\csname simpleicon@chessdotcomicon\endcsname {\simpleiconsmaptwo\symbol{255}}
+ \expandafter\def\csname simpleicon@chevroleticon\endcsname {\simpleiconsmapthree\symbol{0}}
+ \expandafter\def\csname simpleicon@chianetworkicon\endcsname {\simpleiconsmapthree\symbol{1}}
+ \expandafter\def\csname simpleicon@chinaeasternairlinesicon\endcsname {\simpleiconsmapthree\symbol{2}}
+ \expandafter\def\csname simpleicon@chinasouthernairlinesicon\endcsname {\simpleiconsmapthree\symbol{3}}
+ \expandafter\def\csname simpleicon@chocolateyicon\endcsname {\simpleiconsmapthree\symbol{4}}
+ \expandafter\def\csname simpleicon@chromaticicon\endcsname {\simpleiconsmapthree\symbol{5}}
+ \expandafter\def\csname simpleicon@chromewebstoreicon\endcsname {\simpleiconsmapthree\symbol{6}}
+ \expandafter\def\csname simpleicon@chromecasticon\endcsname {\simpleiconsmapthree\symbol{7}}
+ \expandafter\def\csname simpleicon@chryslericon\endcsname {\simpleiconsmapthree\symbol{8}}
+ \expandafter\def\csname simpleicon@chupachupsicon\endcsname {\simpleiconsmapthree\symbol{9}}
+ \expandafter\def\csname simpleicon@ciliumicon\endcsname {\simpleiconsmapthree\symbol{10}}
+ \expandafter\def\csname simpleicon@cinema4dicon\endcsname {\simpleiconsmapthree\symbol{11}}
+ \expandafter\def\csname simpleicon@cinnamonicon\endcsname {\simpleiconsmapthree\symbol{12}}
+ \expandafter\def\csname simpleicon@circleicon\endcsname {\simpleiconsmapthree\symbol{13}}
+ \expandafter\def\csname simpleicon@circleciicon\endcsname {\simpleiconsmapthree\symbol{14}}
+ \expandafter\def\csname simpleicon@circuitverseicon\endcsname {\simpleiconsmapthree\symbol{15}}
+ \expandafter\def\csname simpleicon@cirrusciicon\endcsname {\simpleiconsmapthree\symbol{16}}
+ \expandafter\def\csname simpleicon@ciscoicon\endcsname {\simpleiconsmapthree\symbol{17}}
+ \expandafter\def\csname simpleicon@citrixicon\endcsname {\simpleiconsmapthree\symbol{18}}
+ \expandafter\def\csname simpleicon@citroenicon\endcsname {\simpleiconsmapthree\symbol{19}}
+ \expandafter\def\csname simpleicon@civicrmicon\endcsname {\simpleiconsmapthree\symbol{20}}
+ \expandafter\def\csname simpleicon@civoicon\endcsname {\simpleiconsmapthree\symbol{21}}
+ \expandafter\def\csname simpleicon@clarifaiicon\endcsname {\simpleiconsmapthree\symbol{22}}
+ \expandafter\def\csname simpleicon@clarisicon\endcsname {\simpleiconsmapthree\symbol{23}}
+ \expandafter\def\csname simpleicon@clarivateicon\endcsname {\simpleiconsmapthree\symbol{24}}
+ \expandafter\def\csname simpleicon@claudeicon\endcsname {\simpleiconsmapthree\symbol{25}}
+ \expandafter\def\csname simpleicon@clerkicon\endcsname {\simpleiconsmapthree\symbol{26}}
+ \expandafter\def\csname simpleicon@clevercloudicon\endcsname {\simpleiconsmapthree\symbol{27}}
+ \expandafter\def\csname simpleicon@clickhouseicon\endcsname {\simpleiconsmapthree\symbol{28}}
+ \expandafter\def\csname simpleicon@clickupicon\endcsname {\simpleiconsmapthree\symbol{29}}
+ \expandafter\def\csname simpleicon@clionicon\endcsname {\simpleiconsmapthree\symbol{30}}
+ \expandafter\def\csname simpleicon@clockifyicon\endcsname {\simpleiconsmapthree\symbol{31}}
+ \expandafter\def\csname simpleicon@clojureicon\endcsname {\simpleiconsmapthree\symbol{32}}
+ \expandafter\def\csname simpleicon@cloud66icon\endcsname {\simpleiconsmapthree\symbol{33}}
+ \expandafter\def\csname simpleicon@cloudfoundryicon\endcsname {\simpleiconsmapthree\symbol{34}}
+ \expandafter\def\csname simpleicon@cloudbeesicon\endcsname {\simpleiconsmapthree\symbol{35}}
+ \expandafter\def\csname simpleicon@cloudcannonicon\endcsname {\simpleiconsmapthree\symbol{36}}
+ \expandafter\def\csname simpleicon@clouderaicon\endcsname {\simpleiconsmapthree\symbol{37}}
+ \expandafter\def\csname simpleicon@cloudflareicon\endcsname {\simpleiconsmapthree\symbol{38}}
+ \expandafter\def\csname simpleicon@cloudflarepagesicon\endcsname {\simpleiconsmapthree\symbol{39}}
+ \expandafter\def\csname simpleicon@cloudflareworkersicon\endcsname {\simpleiconsmapthree\symbol{40}}
+ \expandafter\def\csname simpleicon@cloudinaryicon\endcsname {\simpleiconsmapthree\symbol{41}}
+ \expandafter\def\csname simpleicon@cloudronicon\endcsname {\simpleiconsmapthree\symbol{42}}
+ \expandafter\def\csname simpleicon@cloudsmithicon\endcsname {\simpleiconsmapthree\symbol{43}}
+ \expandafter\def\csname simpleicon@cloudwaysicon\endcsname {\simpleiconsmapthree\symbol{44}}
+ \expandafter\def\csname simpleicon@clubforceicon\endcsname {\simpleiconsmapthree\symbol{45}}
+ \expandafter\def\csname simpleicon@clubhouseicon\endcsname {\simpleiconsmapthree\symbol{46}}
+ \expandafter\def\csname simpleicon@clypicon\endcsname {\simpleiconsmapthree\symbol{47}}
+ \expandafter\def\csname simpleicon@cmakeicon\endcsname {\simpleiconsmapthree\symbol{48}}
+ \expandafter\def\csname simpleicon@cncficon\endcsname {\simpleiconsmapthree\symbol{49}}
+ \expandafter\def\csname simpleicon@cneticon\endcsname {\simpleiconsmapthree\symbol{50}}
+ \expandafter\def\csname simpleicon@cnnicon\endcsname {\simpleiconsmapthree\symbol{51}}
+ \expandafter\def\csname simpleicon@coopicon\endcsname {\simpleiconsmapthree\symbol{52}}
+ \expandafter\def\csname simpleicon@cocacolaicon\endcsname {\simpleiconsmapthree\symbol{53}}
+ \expandafter\def\csname simpleicon@cockpiticon\endcsname {\simpleiconsmapthree\symbol{54}}
+ \expandafter\def\csname simpleicon@cockroachlabsicon\endcsname {\simpleiconsmapthree\symbol{55}}
+ \expandafter\def\csname simpleicon@cocoapodsicon\endcsname {\simpleiconsmapthree\symbol{56}}
+ \expandafter\def\csname simpleicon@cocosicon\endcsname {\simpleiconsmapthree\symbol{57}}
+ \expandafter\def\csname simpleicon@codaicon\endcsname {\simpleiconsmapthree\symbol{58}}
+ \expandafter\def\csname simpleicon@codacyicon\endcsname {\simpleiconsmapthree\symbol{59}}
+ \expandafter\def\csname simpleicon@codeclimateicon\endcsname {\simpleiconsmapthree\symbol{60}}
+ \expandafter\def\csname simpleicon@codeblocksicon\endcsname {\simpleiconsmapthree\symbol{61}}
+ \expandafter\def\csname simpleicon@codebergicon\endcsname {\simpleiconsmapthree\symbol{62}}
+ \expandafter\def\csname simpleicon@codecademyicon\endcsname {\simpleiconsmapthree\symbol{63}}
+ \expandafter\def\csname simpleicon@codeceptjsicon\endcsname {\simpleiconsmapthree\symbol{64}}
+ \expandafter\def\csname simpleicon@codecheficon\endcsname {\simpleiconsmapthree\symbol{65}}
+ \expandafter\def\csname simpleicon@codecovicon\endcsname {\simpleiconsmapthree\symbol{66}}
+ \expandafter\def\csname simpleicon@codecraftersicon\endcsname {\simpleiconsmapthree\symbol{67}}
+ \expandafter\def\csname simpleicon@codefactoricon\endcsname {\simpleiconsmapthree\symbol{68}}
+ \expandafter\def\csname simpleicon@codeforcesicon\endcsname {\simpleiconsmapthree\symbol{69}}
+ \expandafter\def\csname simpleicon@codefreshicon\endcsname {\simpleiconsmapthree\symbol{70}}
+ \expandafter\def\csname simpleicon@codeignitericon\endcsname {\simpleiconsmapthree\symbol{71}}
+ \expandafter\def\csname simpleicon@codeiumicon\endcsname {\simpleiconsmapthree\symbol{72}}
+ \expandafter\def\csname simpleicon@codemagicicon\endcsname {\simpleiconsmapthree\symbol{73}}
+ \expandafter\def\csname simpleicon@codementoricon\endcsname {\simpleiconsmapthree\symbol{74}}
+ \expandafter\def\csname simpleicon@codemirroricon\endcsname {\simpleiconsmapthree\symbol{75}}
+ \expandafter\def\csname simpleicon@codenewbieicon\endcsname {\simpleiconsmapthree\symbol{76}}
+ \expandafter\def\csname simpleicon@codepenicon\endcsname {\simpleiconsmapthree\symbol{77}}
+ \expandafter\def\csname simpleicon@codeprojecticon\endcsname {\simpleiconsmapthree\symbol{78}}
+ \expandafter\def\csname simpleicon@codericon\endcsname {\simpleiconsmapthree\symbol{79}}
+ \expandafter\def\csname simpleicon@codersrankicon\endcsname {\simpleiconsmapthree\symbol{80}}
+ \expandafter\def\csname simpleicon@coderwallicon\endcsname {\simpleiconsmapthree\symbol{81}}
+ \expandafter\def\csname simpleicon@codesandboxicon\endcsname {\simpleiconsmapthree\symbol{82}}
+ \expandafter\def\csname simpleicon@codeshipicon\endcsname {\simpleiconsmapthree\symbol{83}}
+ \expandafter\def\csname simpleicon@codesignalicon\endcsname {\simpleiconsmapthree\symbol{84}}
+ \expandafter\def\csname simpleicon@codestreamicon\endcsname {\simpleiconsmapthree\symbol{85}}
+ \expandafter\def\csname simpleicon@codewarsicon\endcsname {\simpleiconsmapthree\symbol{86}}
+ \expandafter\def\csname simpleicon@codingninjasicon\endcsname {\simpleiconsmapthree\symbol{87}}
+ \expandafter\def\csname simpleicon@codingameicon\endcsname {\simpleiconsmapthree\symbol{88}}
+ \expandafter\def\csname simpleicon@codioicon\endcsname {\simpleiconsmapthree\symbol{89}}
+ \expandafter\def\csname simpleicon@coffeescripticon\endcsname {\simpleiconsmapthree\symbol{90}}
+ \expandafter\def\csname simpleicon@coggleicon\endcsname {\simpleiconsmapthree\symbol{91}}
+ \expandafter\def\csname simpleicon@cognizanticon\endcsname {\simpleiconsmapthree\symbol{92}}
+ \expandafter\def\csname simpleicon@cohosticon\endcsname {\simpleiconsmapthree\symbol{93}}
+ \expandafter\def\csname simpleicon@coinbaseicon\endcsname {\simpleiconsmapthree\symbol{94}}
+ \expandafter\def\csname simpleicon@coinmarketcapicon\endcsname {\simpleiconsmapthree\symbol{95}}
+ \expandafter\def\csname simpleicon@collaboraonlineicon\endcsname {\simpleiconsmapthree\symbol{96}}
+ \expandafter\def\csname simpleicon@comicfuryicon\endcsname {\simpleiconsmapthree\symbol{97}}
+ \expandafter\def\csname simpleicon@commaicon\endcsname {\simpleiconsmapthree\symbol{98}}
+ \expandafter\def\csname simpleicon@commerzbankicon\endcsname {\simpleiconsmapthree\symbol{99}}
+ \expandafter\def\csname simpleicon@commitlinticon\endcsname {\simpleiconsmapthree\symbol{100}}
+ \expandafter\def\csname simpleicon@commodoreicon\endcsname {\simpleiconsmapthree\symbol{101}}
+ \expandafter\def\csname simpleicon@commonlispicon\endcsname {\simpleiconsmapthree\symbol{102}}
+ \expandafter\def\csname simpleicon@commonworkflowlanguageicon\endcsname {\simpleiconsmapthree\symbol{103}}
+ \expandafter\def\csname simpleicon@compilerexplorericon\endcsname {\simpleiconsmapthree\symbol{104}}
+ \expandafter\def\csname simpleicon@composericon\endcsname {\simpleiconsmapthree\symbol{105}}
+ \expandafter\def\csname simpleicon@comptiaicon\endcsname {\simpleiconsmapthree\symbol{106}}
+ \expandafter\def\csname simpleicon@comsolicon\endcsname {\simpleiconsmapthree\symbol{107}}
+ \expandafter\def\csname simpleicon@conanicon\endcsname {\simpleiconsmapthree\symbol{108}}
+ \expandafter\def\csname simpleicon@concourseicon\endcsname {\simpleiconsmapthree\symbol{109}}
+ \expandafter\def\csname simpleicon@condaforgeicon\endcsname {\simpleiconsmapthree\symbol{110}}
+ \expandafter\def\csname simpleicon@conektaicon\endcsname {\simpleiconsmapthree\symbol{111}}
+ \expandafter\def\csname simpleicon@confluenceicon\endcsname {\simpleiconsmapthree\symbol{112}}
+ \expandafter\def\csname simpleicon@construct3icon\endcsname {\simpleiconsmapthree\symbol{113}}
+ \expandafter\def\csname simpleicon@consulicon\endcsname {\simpleiconsmapthree\symbol{114}}
+ \expandafter\def\csname simpleicon@contaboicon\endcsname {\simpleiconsmapthree\symbol{115}}
+ \expandafter\def\csname simpleicon@contactlesspaymenticon\endcsname {\simpleiconsmapthree\symbol{116}}
+ \expandafter\def\csname simpleicon@containerdicon\endcsname {\simpleiconsmapthree\symbol{117}}
+ \expandafter\def\csname simpleicon@contaoicon\endcsname {\simpleiconsmapthree\symbol{118}}
+ \expandafter\def\csname simpleicon@contentfulicon\endcsname {\simpleiconsmapthree\symbol{119}}
+ \expandafter\def\csname simpleicon@contentstackicon\endcsname {\simpleiconsmapthree\symbol{120}}
+ \expandafter\def\csname simpleicon@continenteicon\endcsname {\simpleiconsmapthree\symbol{121}}
+ \expandafter\def\csname simpleicon@contributorcovenanticon\endcsname {\simpleiconsmapthree\symbol{122}}
+ \expandafter\def\csname simpleicon@conventionalcommitsicon\endcsname {\simpleiconsmapthree\symbol{123}}
+ \expandafter\def\csname simpleicon@convertioicon\endcsname {\simpleiconsmapthree\symbol{124}}
+ \expandafter\def\csname simpleicon@cookiecuttericon\endcsname {\simpleiconsmapthree\symbol{125}}
+ \expandafter\def\csname simpleicon@coolermastericon\endcsname {\simpleiconsmapthree\symbol{126}}
+ \expandafter\def\csname simpleicon@copaairlinesicon\endcsname {\simpleiconsmapthree\symbol{127}}
+ \expandafter\def\csname simpleicon@coppelicon\endcsname {\simpleiconsmapthree\symbol{128}}
+ \expandafter\def\csname simpleicon@coraicon\endcsname {\simpleiconsmapthree\symbol{129}}
+ \expandafter\def\csname simpleicon@coreldrawicon\endcsname {\simpleiconsmapthree\symbol{130}}
+ \expandafter\def\csname simpleicon@coronaengineicon\endcsname {\simpleiconsmapthree\symbol{131}}
+ \expandafter\def\csname simpleicon@coronarenderericon\endcsname {\simpleiconsmapthree\symbol{132}}
+ \expandafter\def\csname simpleicon@corsairicon\endcsname {\simpleiconsmapthree\symbol{133}}
+ \expandafter\def\csname simpleicon@couchbaseicon\endcsname {\simpleiconsmapthree\symbol{134}}
+ \expandafter\def\csname simpleicon@counterstrikeicon\endcsname {\simpleiconsmapthree\symbol{135}}
+ \expandafter\def\csname simpleicon@countingworksproicon\endcsname {\simpleiconsmapthree\symbol{136}}
+ \expandafter\def\csname simpleicon@courseraicon\endcsname {\simpleiconsmapthree\symbol{137}}
+ \expandafter\def\csname simpleicon@coverallsicon\endcsname {\simpleiconsmapthree\symbol{138}}
+ \expandafter\def\csname simpleicon@cozeicon\endcsname {\simpleiconsmapthree\symbol{139}}
+ \expandafter\def\csname simpleicon@cpanelicon\endcsname {\simpleiconsmapthree\symbol{140}}
+ \expandafter\def\csname simpleicon@craftcmsicon\endcsname {\simpleiconsmapthree\symbol{141}}
+ \expandafter\def\csname simpleicon@craftsmanicon\endcsname {\simpleiconsmapthree\symbol{142}}
+ \expandafter\def\csname simpleicon@cratedbicon\endcsname {\simpleiconsmapthree\symbol{143}}
+ \expandafter\def\csname simpleicon@crayonicon\endcsname {\simpleiconsmapthree\symbol{144}}
+ \expandafter\def\csname simpleicon@crealityicon\endcsname {\simpleiconsmapthree\symbol{145}}
+ \expandafter\def\csname simpleicon@createreactappicon\endcsname {\simpleiconsmapthree\symbol{146}}
+ \expandafter\def\csname simpleicon@creativecommonsicon\endcsname {\simpleiconsmapthree\symbol{147}}
+ \expandafter\def\csname simpleicon@creativetechnologyicon\endcsname {\simpleiconsmapthree\symbol{148}}
+ \expandafter\def\csname simpleicon@credlyicon\endcsname {\simpleiconsmapthree\symbol{149}}
+ \expandafter\def\csname simpleicon@crehanaicon\endcsname {\simpleiconsmapthree\symbol{150}}
+ \expandafter\def\csname simpleicon@crewunitedicon\endcsname {\simpleiconsmapthree\symbol{151}}
+ \expandafter\def\csname simpleicon@crewaiicon\endcsname {\simpleiconsmapthree\symbol{152}}
+ \expandafter\def\csname simpleicon@criticalroleicon\endcsname {\simpleiconsmapthree\symbol{153}}
+ \expandafter\def\csname simpleicon@crowdinicon\endcsname {\simpleiconsmapthree\symbol{154}}
+ \expandafter\def\csname simpleicon@crowdsourceicon\endcsname {\simpleiconsmapthree\symbol{155}}
+ \expandafter\def\csname simpleicon@crunchbaseicon\endcsname {\simpleiconsmapthree\symbol{156}}
+ \expandafter\def\csname simpleicon@crunchyrollicon\endcsname {\simpleiconsmapthree\symbol{157}}
+ \expandafter\def\csname simpleicon@cryengineicon\endcsname {\simpleiconsmapthree\symbol{158}}
+ \expandafter\def\csname simpleicon@cryptomatoricon\endcsname {\simpleiconsmapthree\symbol{159}}
+ \expandafter\def\csname simpleicon@cryptpadicon\endcsname {\simpleiconsmapthree\symbol{160}}
+ \expandafter\def\csname simpleicon@crystalicon\endcsname {\simpleiconsmapthree\symbol{161}}
+ \expandafter\def\csname simpleicon@csdnicon\endcsname {\simpleiconsmapthree\symbol{162}}
+ \expandafter\def\csname simpleicon@cssicon\endcsname {\simpleiconsmapthree\symbol{163}}
+ \expandafter\def\csname simpleicon@cssdesignawardsicon\endcsname {\simpleiconsmapthree\symbol{164}}
+ \expandafter\def\csname simpleicon@cssmodulesicon\endcsname {\simpleiconsmapthree\symbol{165}}
+ \expandafter\def\csname simpleicon@csswizardryicon\endcsname {\simpleiconsmapthree\symbol{166}}
+ \expandafter\def\csname simpleicon@css3icon\endcsname {\simpleiconsmapthree\symbol{167}}
+ \expandafter\def\csname simpleicon@ctsicon\endcsname {\simpleiconsmapthree\symbol{168}}
+ \expandafter\def\csname simpleicon@cucumbericon\endcsname {\simpleiconsmapthree\symbol{169}}
+ \expandafter\def\csname simpleicon@culturaicon\endcsname {\simpleiconsmapthree\symbol{170}}
+ \expandafter\def\csname simpleicon@curlicon\endcsname {\simpleiconsmapthree\symbol{171}}
+ \expandafter\def\csname simpleicon@curseforgeicon\endcsname {\simpleiconsmapthree\symbol{172}}
+ \expandafter\def\csname simpleicon@custominkicon\endcsname {\simpleiconsmapthree\symbol{173}}
+ \expandafter\def\csname simpleicon@cyberdefendersicon\endcsname {\simpleiconsmapthree\symbol{174}}
+ \expandafter\def\csname simpleicon@cycling74icon\endcsname {\simpleiconsmapthree\symbol{175}}
+ \expandafter\def\csname simpleicon@cypressicon\endcsname {\simpleiconsmapthree\symbol{176}}
+ \expandafter\def\csname simpleicon@cytoscapedotjsicon\endcsname {\simpleiconsmapthree\symbol{177}}
+ \expandafter\def\csname simpleicon@dicon\endcsname {\simpleiconsmapthree\symbol{178}}
+ \expandafter\def\csname simpleicon@dedgeicon\endcsname {\simpleiconsmapthree\symbol{179}}
+ \expandafter\def\csname simpleicon@dwavesystemsicon\endcsname {\simpleiconsmapthree\symbol{180}}
+ \expandafter\def\csname simpleicon@d3icon\endcsname {\simpleiconsmapthree\symbol{181}}
+ \expandafter\def\csname simpleicon@daciaicon\endcsname {\simpleiconsmapthree\symbol{182}}
+ \expandafter\def\csname simpleicon@daficon\endcsname {\simpleiconsmapthree\symbol{183}}
+ \expandafter\def\csname simpleicon@dailydotdevicon\endcsname {\simpleiconsmapthree\symbol{184}}
+ \expandafter\def\csname simpleicon@dailymotionicon\endcsname {\simpleiconsmapthree\symbol{185}}
+ \expandafter\def\csname simpleicon@daisyuiicon\endcsname {\simpleiconsmapthree\symbol{186}}
+ \expandafter\def\csname simpleicon@dapricon\endcsname {\simpleiconsmapthree\symbol{187}}
+ \expandafter\def\csname simpleicon@darkreadericon\endcsname {\simpleiconsmapthree\symbol{188}}
+ \expandafter\def\csname simpleicon@darticon\endcsname {\simpleiconsmapthree\symbol{189}}
+ \expandafter\def\csname simpleicon@dartyicon\endcsname {\simpleiconsmapthree\symbol{190}}
+ \expandafter\def\csname simpleicon@dasersteicon\endcsname {\simpleiconsmapthree\symbol{191}}
+ \expandafter\def\csname simpleicon@dashicon\endcsname {\simpleiconsmapthree\symbol{192}}
+ \expandafter\def\csname simpleicon@dashlaneicon\endcsname {\simpleiconsmapthree\symbol{193}}
+ \expandafter\def\csname simpleicon@daskicon\endcsname {\simpleiconsmapthree\symbol{194}}
+ \expandafter\def\csname simpleicon@dassaultsystemesicon\endcsname {\simpleiconsmapthree\symbol{195}}
+ \expandafter\def\csname simpleicon@datadotaiicon\endcsname {\simpleiconsmapthree\symbol{196}}
+ \expandafter\def\csname simpleicon@databricksicon\endcsname {\simpleiconsmapthree\symbol{197}}
+ \expandafter\def\csname simpleicon@datacampicon\endcsname {\simpleiconsmapthree\symbol{198}}
+ \expandafter\def\csname simpleicon@datadogicon\endcsname {\simpleiconsmapthree\symbol{199}}
+ \expandafter\def\csname simpleicon@datagripicon\endcsname {\simpleiconsmapthree\symbol{200}}
+ \expandafter\def\csname simpleicon@dataikuicon\endcsname {\simpleiconsmapthree\symbol{201}}
+ \expandafter\def\csname simpleicon@datastaxicon\endcsname {\simpleiconsmapthree\symbol{202}}
+ \expandafter\def\csname simpleicon@datefnsicon\endcsname {\simpleiconsmapthree\symbol{203}}
+ \expandafter\def\csname simpleicon@datevicon\endcsname {\simpleiconsmapthree\symbol{204}}
+ \expandafter\def\csname simpleicon@datocmsicon\endcsname {\simpleiconsmapthree\symbol{205}}
+ \expandafter\def\csname simpleicon@dattoicon\endcsname {\simpleiconsmapthree\symbol{206}}
+ \expandafter\def\csname simpleicon@davinciresolveicon\endcsname {\simpleiconsmapthree\symbol{207}}
+ \expandafter\def\csname simpleicon@dazhongdianpingicon\endcsname {\simpleiconsmapthree\symbol{208}}
+ \expandafter\def\csname simpleicon@daznicon\endcsname {\simpleiconsmapthree\symbol{209}}
+ \expandafter\def\csname simpleicon@dbeavericon\endcsname {\simpleiconsmapthree\symbol{210}}
+ \expandafter\def\csname simpleicon@dblpicon\endcsname {\simpleiconsmapthree\symbol{211}}
+ \expandafter\def\csname simpleicon@dbticon\endcsname {\simpleiconsmapthree\symbol{212}}
+ \expandafter\def\csname simpleicon@dcentertainmenticon\endcsname {\simpleiconsmapthree\symbol{213}}
+ \expandafter\def\csname simpleicon@delonghiicon\endcsname {\simpleiconsmapthree\symbol{214}}
+ \expandafter\def\csname simpleicon@debianicon\endcsname {\simpleiconsmapthree\symbol{215}}
+ \expandafter\def\csname simpleicon@debridlinkicon\endcsname {\simpleiconsmapthree\symbol{216}}
+ \expandafter\def\csname simpleicon@decapcmsicon\endcsname {\simpleiconsmapthree\symbol{217}}
+ \expandafter\def\csname simpleicon@decentralandicon\endcsname {\simpleiconsmapthree\symbol{218}}
+ \expandafter\def\csname simpleicon@deepcoolicon\endcsname {\simpleiconsmapthree\symbol{219}}
+ \expandafter\def\csname simpleicon@deepgramicon\endcsname {\simpleiconsmapthree\symbol{220}}
+ \expandafter\def\csname simpleicon@deepinicon\endcsname {\simpleiconsmapthree\symbol{221}}
+ \expandafter\def\csname simpleicon@deeplicon\endcsname {\simpleiconsmapthree\symbol{222}}
+ \expandafter\def\csname simpleicon@deepnoteicon\endcsname {\simpleiconsmapthree\symbol{223}}
+ \expandafter\def\csname simpleicon@deliverooicon\endcsname {\simpleiconsmapthree\symbol{224}}
+ \expandafter\def\csname simpleicon@dellicon\endcsname {\simpleiconsmapthree\symbol{225}}
+ \expandafter\def\csname simpleicon@delphiicon\endcsname {\simpleiconsmapthree\symbol{226}}
+ \expandafter\def\csname simpleicon@deltaicon\endcsname {\simpleiconsmapthree\symbol{227}}
+ \expandafter\def\csname simpleicon@delugeicon\endcsname {\simpleiconsmapthree\symbol{228}}
+ \expandafter\def\csname simpleicon@denoicon\endcsname {\simpleiconsmapthree\symbol{229}}
+ \expandafter\def\csname simpleicon@denonicon\endcsname {\simpleiconsmapthree\symbol{230}}
+ \expandafter\def\csname simpleicon@dependaboticon\endcsname {\simpleiconsmapthree\symbol{231}}
+ \expandafter\def\csname simpleicon@depositphotosicon\endcsname {\simpleiconsmapthree\symbol{232}}
+ \expandafter\def\csname simpleicon@derspiegelicon\endcsname {\simpleiconsmapthree\symbol{233}}
+ \expandafter\def\csname simpleicon@deutschebahnicon\endcsname {\simpleiconsmapthree\symbol{234}}
+ \expandafter\def\csname simpleicon@deutschebankicon\endcsname {\simpleiconsmapthree\symbol{235}}
+ \expandafter\def\csname simpleicon@deutscheposticon\endcsname {\simpleiconsmapthree\symbol{236}}
+ \expandafter\def\csname simpleicon@deutschetelekomicon\endcsname {\simpleiconsmapthree\symbol{237}}
+ \expandafter\def\csname simpleicon@deutschewelleicon\endcsname {\simpleiconsmapthree\symbol{238}}
+ \expandafter\def\csname simpleicon@devdottoicon\endcsname {\simpleiconsmapthree\symbol{239}}
+ \expandafter\def\csname simpleicon@devexpressicon\endcsname {\simpleiconsmapthree\symbol{240}}
+ \expandafter\def\csname simpleicon@deviantarticon\endcsname {\simpleiconsmapthree\symbol{241}}
+ \expandafter\def\csname simpleicon@devposticon\endcsname {\simpleiconsmapthree\symbol{242}}
+ \expandafter\def\csname simpleicon@devranticon\endcsname {\simpleiconsmapthree\symbol{243}}
+ \expandafter\def\csname simpleicon@dgraphicon\endcsname {\simpleiconsmapthree\symbol{244}}
+ \expandafter\def\csname simpleicon@dhlicon\endcsname {\simpleiconsmapthree\symbol{245}}
+ \expandafter\def\csname simpleicon@diagramsdotneticon\endcsname {\simpleiconsmapthree\symbol{246}}
+ \expandafter\def\csname simpleicon@dialogflowicon\endcsname {\simpleiconsmapthree\symbol{247}}
+ \expandafter\def\csname simpleicon@diasporaicon\endcsname {\simpleiconsmapthree\symbol{248}}
+ \expandafter\def\csname simpleicon@dictionarydotcomicon\endcsname {\simpleiconsmapthree\symbol{249}}
+ \expandafter\def\csname simpleicon@diggicon\endcsname {\simpleiconsmapthree\symbol{250}}
+ \expandafter\def\csname simpleicon@digikeyelectronicsicon\endcsname {\simpleiconsmapthree\symbol{251}}
+ \expandafter\def\csname simpleicon@digitaloceanicon\endcsname {\simpleiconsmapthree\symbol{252}}
+ \expandafter\def\csname simpleicon@dinersclubicon\endcsname {\simpleiconsmapthree\symbol{253}}
+ \expandafter\def\csname simpleicon@dioricon\endcsname {\simpleiconsmapthree\symbol{254}}
+ \expandafter\def\csname simpleicon@directusicon\endcsname {\simpleiconsmapthree\symbol{255}}
+ \expandafter\def\csname simpleicon@discogsicon\endcsname {\simpleiconsmapfour\symbol{0}}
+ \expandafter\def\csname simpleicon@discordicon\endcsname {\simpleiconsmapfour\symbol{1}}
+ \expandafter\def\csname simpleicon@discourseicon\endcsname {\simpleiconsmapfour\symbol{2}}
+ \expandafter\def\csname simpleicon@discovericon\endcsname {\simpleiconsmapfour\symbol{3}}
+ \expandafter\def\csname simpleicon@disqusicon\endcsname {\simpleiconsmapfour\symbol{4}}
+ \expandafter\def\csname simpleicon@disrooticon\endcsname {\simpleiconsmapfour\symbol{5}}
+ \expandafter\def\csname simpleicon@distrokidicon\endcsname {\simpleiconsmapfour\symbol{6}}
+ \expandafter\def\csname simpleicon@djangoicon\endcsname {\simpleiconsmapfour\symbol{7}}
+ \expandafter\def\csname simpleicon@djiicon\endcsname {\simpleiconsmapfour\symbol{8}}
+ \expandafter\def\csname simpleicon@dlibicon\endcsname {\simpleiconsmapfour\symbol{9}}
+ \expandafter\def\csname simpleicon@dlnaicon\endcsname {\simpleiconsmapfour\symbol{10}}
+ \expandafter\def\csname simpleicon@dmicon\endcsname {\simpleiconsmapfour\symbol{11}}
+ \expandafter\def\csname simpleicon@dockericon\endcsname {\simpleiconsmapfour\symbol{12}}
+ \expandafter\def\csname simpleicon@docsdotrsicon\endcsname {\simpleiconsmapfour\symbol{13}}
+ \expandafter\def\csname simpleicon@docsifyicon\endcsname {\simpleiconsmapfour\symbol{14}}
+ \expandafter\def\csname simpleicon@doctrineicon\endcsname {\simpleiconsmapfour\symbol{15}}
+ \expandafter\def\csname simpleicon@docusaurusicon\endcsname {\simpleiconsmapfour\symbol{16}}
+ \expandafter\def\csname simpleicon@dogecoinicon\endcsname {\simpleiconsmapfour\symbol{17}}
+ \expandafter\def\csname simpleicon@doiicon\endcsname {\simpleiconsmapfour\symbol{18}}
+ \expandafter\def\csname simpleicon@dolbyicon\endcsname {\simpleiconsmapfour\symbol{19}}
+ \expandafter\def\csname simpleicon@doordashicon\endcsname {\simpleiconsmapfour\symbol{20}}
+ \expandafter\def\csname simpleicon@dota2icon\endcsname {\simpleiconsmapfour\symbol{21}}
+ \expandafter\def\csname simpleicon@doubanicon\endcsname {\simpleiconsmapfour\symbol{22}}
+ \expandafter\def\csname simpleicon@doubanreadicon\endcsname {\simpleiconsmapfour\symbol{23}}
+ \expandafter\def\csname simpleicon@dovecoticon\endcsname {\simpleiconsmapfour\symbol{24}}
+ \expandafter\def\csname simpleicon@dovetailicon\endcsname {\simpleiconsmapfour\symbol{25}}
+ \expandafter\def\csname simpleicon@downdetectoricon\endcsname {\simpleiconsmapfour\symbol{26}}
+ \expandafter\def\csname simpleicon@doxygenicon\endcsname {\simpleiconsmapfour\symbol{27}}
+ \expandafter\def\csname simpleicon@dpdicon\endcsname {\simpleiconsmapfour\symbol{28}}
+ \expandafter\def\csname simpleicon@dragonframeicon\endcsname {\simpleiconsmapfour\symbol{29}}
+ \expandafter\def\csname simpleicon@draugiemdotlvicon\endcsname {\simpleiconsmapfour\symbol{30}}
+ \expandafter\def\csname simpleicon@dreamstimeicon\endcsname {\simpleiconsmapfour\symbol{31}}
+ \expandafter\def\csname simpleicon@dribbbleicon\endcsname {\simpleiconsmapfour\symbol{32}}
+ \expandafter\def\csname simpleicon@drizzleicon\endcsname {\simpleiconsmapfour\symbol{33}}
+ \expandafter\def\csname simpleicon@droneicon\endcsname {\simpleiconsmapfour\symbol{34}}
+ \expandafter\def\csname simpleicon@droobleicon\endcsname {\simpleiconsmapfour\symbol{35}}
+ \expandafter\def\csname simpleicon@dropboxicon\endcsname {\simpleiconsmapfour\symbol{36}}
+ \expandafter\def\csname simpleicon@drupalicon\endcsname {\simpleiconsmapfour\symbol{37}}
+ \expandafter\def\csname simpleicon@dsautomobilesicon\endcsname {\simpleiconsmapfour\symbol{38}}
+ \expandafter\def\csname simpleicon@dtsicon\endcsname {\simpleiconsmapfour\symbol{39}}
+ \expandafter\def\csname simpleicon@dtubeicon\endcsname {\simpleiconsmapfour\symbol{40}}
+ \expandafter\def\csname simpleicon@ducatiicon\endcsname {\simpleiconsmapfour\symbol{41}}
+ \expandafter\def\csname simpleicon@duckdbicon\endcsname {\simpleiconsmapfour\symbol{42}}
+ \expandafter\def\csname simpleicon@duckduckgoicon\endcsname {\simpleiconsmapfour\symbol{43}}
+ \expandafter\def\csname simpleicon@dungeonsanddragonsicon\endcsname {\simpleiconsmapfour\symbol{44}}
+ \expandafter\def\csname simpleicon@dunkedicon\endcsname {\simpleiconsmapfour\symbol{45}}
+ \expandafter\def\csname simpleicon@dunzoicon\endcsname {\simpleiconsmapfour\symbol{46}}
+ \expandafter\def\csname simpleicon@duolingoicon\endcsname {\simpleiconsmapfour\symbol{47}}
+ \expandafter\def\csname simpleicon@duplicatiicon\endcsname {\simpleiconsmapfour\symbol{48}}
+ \expandafter\def\csname simpleicon@dvcicon\endcsname {\simpleiconsmapfour\symbol{49}}
+ \expandafter\def\csname simpleicon@dwmicon\endcsname {\simpleiconsmapfour\symbol{50}}
+ \expandafter\def\csname simpleicon@dynatraceicon\endcsname {\simpleiconsmapfour\symbol{51}}
+ \expandafter\def\csname simpleicon@edotleclercicon\endcsname {\simpleiconsmapfour\symbol{52}}
+ \expandafter\def\csname simpleicon@e3icon\endcsname {\simpleiconsmapfour\symbol{53}}
+ \expandafter\def\csname simpleicon@eaicon\endcsname {\simpleiconsmapfour\symbol{54}}
+ \expandafter\def\csname simpleicon@eacicon\endcsname {\simpleiconsmapfour\symbol{55}}
+ \expandafter\def\csname simpleicon@eagleicon\endcsname {\simpleiconsmapfour\symbol{56}}
+ \expandafter\def\csname simpleicon@easyedaicon\endcsname {\simpleiconsmapfour\symbol{57}}
+ \expandafter\def\csname simpleicon@easyjeticon\endcsname {\simpleiconsmapfour\symbol{58}}
+ \expandafter\def\csname simpleicon@ebayicon\endcsname {\simpleiconsmapfour\symbol{59}}
+ \expandafter\def\csname simpleicon@eboxicon\endcsname {\simpleiconsmapfour\symbol{60}}
+ \expandafter\def\csname simpleicon@eclipseadoptiumicon\endcsname {\simpleiconsmapfour\symbol{61}}
+ \expandafter\def\csname simpleicon@eclipsecheicon\endcsname {\simpleiconsmapfour\symbol{62}}
+ \expandafter\def\csname simpleicon@eclipseideicon\endcsname {\simpleiconsmapfour\symbol{63}}
+ \expandafter\def\csname simpleicon@eclipsejettyicon\endcsname {\simpleiconsmapfour\symbol{64}}
+ \expandafter\def\csname simpleicon@eclipsemosquittoicon\endcsname {\simpleiconsmapfour\symbol{65}}
+ \expandafter\def\csname simpleicon@eclipsevertdotxicon\endcsname {\simpleiconsmapfour\symbol{66}}
+ \expandafter\def\csname simpleicon@ecosiaicon\endcsname {\simpleiconsmapfour\symbol{67}}
+ \expandafter\def\csname simpleicon@ecovacsicon\endcsname {\simpleiconsmapfour\symbol{68}}
+ \expandafter\def\csname simpleicon@edekaicon\endcsname {\simpleiconsmapfour\symbol{69}}
+ \expandafter\def\csname simpleicon@edgeimpulseicon\endcsname {\simpleiconsmapfour\symbol{70}}
+ \expandafter\def\csname simpleicon@editorconfigicon\endcsname {\simpleiconsmapfour\symbol{71}}
+ \expandafter\def\csname simpleicon@educativeicon\endcsname {\simpleiconsmapfour\symbol{72}}
+ \expandafter\def\csname simpleicon@edxicon\endcsname {\simpleiconsmapfour\symbol{73}}
+ \expandafter\def\csname simpleicon@eggheadicon\endcsname {\simpleiconsmapfour\symbol{74}}
+ \expandafter\def\csname simpleicon@egnyteicon\endcsname {\simpleiconsmapfour\symbol{75}}
+ \expandafter\def\csname simpleicon@eighticon\endcsname {\simpleiconsmapfour\symbol{76}}
+ \expandafter\def\csname simpleicon@eightsleepicon\endcsname {\simpleiconsmapfour\symbol{77}}
+ \expandafter\def\csname simpleicon@ejsicon\endcsname {\simpleiconsmapfour\symbol{78}}
+ \expandafter\def\csname simpleicon@elasticicon\endcsname {\simpleiconsmapfour\symbol{79}}
+ \expandafter\def\csname simpleicon@elasticcloudicon\endcsname {\simpleiconsmapfour\symbol{80}}
+ \expandafter\def\csname simpleicon@elasticstackicon\endcsname {\simpleiconsmapfour\symbol{81}}
+ \expandafter\def\csname simpleicon@elasticsearchicon\endcsname {\simpleiconsmapfour\symbol{82}}
+ \expandafter\def\csname simpleicon@elavonicon\endcsname {\simpleiconsmapfour\symbol{83}}
+ \expandafter\def\csname simpleicon@electronicon\endcsname {\simpleiconsmapfour\symbol{84}}
+ \expandafter\def\csname simpleicon@electronfiddleicon\endcsname {\simpleiconsmapfour\symbol{85}}
+ \expandafter\def\csname simpleicon@electronbuildericon\endcsname {\simpleiconsmapfour\symbol{86}}
+ \expandafter\def\csname simpleicon@elegooicon\endcsname {\simpleiconsmapfour\symbol{87}}
+ \expandafter\def\csname simpleicon@elementicon\endcsname {\simpleiconsmapfour\symbol{88}}
+ \expandafter\def\csname simpleicon@elementaryicon\endcsname {\simpleiconsmapfour\symbol{89}}
+ \expandafter\def\csname simpleicon@elementoricon\endcsname {\simpleiconsmapfour\symbol{90}}
+ \expandafter\def\csname simpleicon@elevenlabsicon\endcsname {\simpleiconsmapfour\symbol{91}}
+ \expandafter\def\csname simpleicon@eleventyicon\endcsname {\simpleiconsmapfour\symbol{92}}
+ \expandafter\def\csname simpleicon@elgatoicon\endcsname {\simpleiconsmapfour\symbol{93}}
+ \expandafter\def\csname simpleicon@elixiricon\endcsname {\simpleiconsmapfour\symbol{94}}
+ \expandafter\def\csname simpleicon@elmicon\endcsname {\simpleiconsmapfour\symbol{95}}
+ \expandafter\def\csname simpleicon@elseviericon\endcsname {\simpleiconsmapfour\symbol{96}}
+ \expandafter\def\csname simpleicon@embarcaderoicon\endcsname {\simpleiconsmapfour\symbol{97}}
+ \expandafter\def\csname simpleicon@embarkicon\endcsname {\simpleiconsmapfour\symbol{98}}
+ \expandafter\def\csname simpleicon@emberdotjsicon\endcsname {\simpleiconsmapfour\symbol{99}}
+ \expandafter\def\csname simpleicon@embyicon\endcsname {\simpleiconsmapfour\symbol{100}}
+ \expandafter\def\csname simpleicon@emiratesicon\endcsname {\simpleiconsmapfour\symbol{101}}
+ \expandafter\def\csname simpleicon@emlakjeticon\endcsname {\simpleiconsmapfour\symbol{102}}
+ \expandafter\def\csname simpleicon@empirekredicon\endcsname {\simpleiconsmapfour\symbol{103}}
+ \expandafter\def\csname simpleicon@endeavourosicon\endcsname {\simpleiconsmapfour\symbol{104}}
+ \expandafter\def\csname simpleicon@engadgeticon\endcsname {\simpleiconsmapfour\symbol{105}}
+ \expandafter\def\csname simpleicon@enpassicon\endcsname {\simpleiconsmapfour\symbol{106}}
+ \expandafter\def\csname simpleicon@enterprisedbicon\endcsname {\simpleiconsmapfour\symbol{107}}
+ \expandafter\def\csname simpleicon@envatoicon\endcsname {\simpleiconsmapfour\symbol{108}}
+ \expandafter\def\csname simpleicon@envoyproxyicon\endcsname {\simpleiconsmapfour\symbol{109}}
+ \expandafter\def\csname simpleicon@epelicon\endcsname {\simpleiconsmapfour\symbol{110}}
+ \expandafter\def\csname simpleicon@epicgamesicon\endcsname {\simpleiconsmapfour\symbol{111}}
+ \expandafter\def\csname simpleicon@epsonicon\endcsname {\simpleiconsmapfour\symbol{112}}
+ \expandafter\def\csname simpleicon@equinixmetalicon\endcsname {\simpleiconsmapfour\symbol{113}}
+ \expandafter\def\csname simpleicon@erasericon\endcsname {\simpleiconsmapfour\symbol{114}}
+ \expandafter\def\csname simpleicon@ericssonicon\endcsname {\simpleiconsmapfour\symbol{115}}
+ \expandafter\def\csname simpleicon@erlangicon\endcsname {\simpleiconsmapfour\symbol{116}}
+ \expandafter\def\csname simpleicon@erpnexticon\endcsname {\simpleiconsmapfour\symbol{117}}
+ \expandafter\def\csname simpleicon@esbuildicon\endcsname {\simpleiconsmapfour\symbol{118}}
+ \expandafter\def\csname simpleicon@eseaicon\endcsname {\simpleiconsmapfour\symbol{119}}
+ \expandafter\def\csname simpleicon@eslgamingicon\endcsname {\simpleiconsmapfour\symbol{120}}
+ \expandafter\def\csname simpleicon@eslinticon\endcsname {\simpleiconsmapfour\symbol{121}}
+ \expandafter\def\csname simpleicon@esotericsoftwareicon\endcsname {\simpleiconsmapfour\symbol{122}}
+ \expandafter\def\csname simpleicon@esphomeicon\endcsname {\simpleiconsmapfour\symbol{123}}
+ \expandafter\def\csname simpleicon@espressificon\endcsname {\simpleiconsmapfour\symbol{124}}
+ \expandafter\def\csname simpleicon@esriicon\endcsname {\simpleiconsmapfour\symbol{125}}
+ \expandafter\def\csname simpleicon@etcdicon\endcsname {\simpleiconsmapfour\symbol{126}}
+ \expandafter\def\csname simpleicon@ethereumicon\endcsname {\simpleiconsmapfour\symbol{127}}
+ \expandafter\def\csname simpleicon@ethersicon\endcsname {\simpleiconsmapfour\symbol{128}}
+ \expandafter\def\csname simpleicon@ethiopianairlinesicon\endcsname {\simpleiconsmapfour\symbol{129}}
+ \expandafter\def\csname simpleicon@etihadairwaysicon\endcsname {\simpleiconsmapfour\symbol{130}}
+ \expandafter\def\csname simpleicon@etsyicon\endcsname {\simpleiconsmapfour\symbol{131}}
+ \expandafter\def\csname simpleicon@europeanunionicon\endcsname {\simpleiconsmapfour\symbol{132}}
+ \expandafter\def\csname simpleicon@eventstoreicon\endcsname {\simpleiconsmapfour\symbol{133}}
+ \expandafter\def\csname simpleicon@eventbriteicon\endcsname {\simpleiconsmapfour\symbol{134}}
+ \expandafter\def\csname simpleicon@evernoteicon\endcsname {\simpleiconsmapfour\symbol{135}}
+ \expandafter\def\csname simpleicon@excalidrawicon\endcsname {\simpleiconsmapfour\symbol{136}}
+ \expandafter\def\csname simpleicon@exercismicon\endcsname {\simpleiconsmapfour\symbol{137}}
+ \expandafter\def\csname simpleicon@exordoicon\endcsname {\simpleiconsmapfour\symbol{138}}
+ \expandafter\def\csname simpleicon@exoscaleicon\endcsname {\simpleiconsmapfour\symbol{139}}
+ \expandafter\def\csname simpleicon@expediaicon\endcsname {\simpleiconsmapfour\symbol{140}}
+ \expandafter\def\csname simpleicon@expensifyicon\endcsname {\simpleiconsmapfour\symbol{141}}
+ \expandafter\def\csname simpleicon@expertsexchangeicon\endcsname {\simpleiconsmapfour\symbol{142}}
+ \expandafter\def\csname simpleicon@expoicon\endcsname {\simpleiconsmapfour\symbol{143}}
+ \expandafter\def\csname simpleicon@expressicon\endcsname {\simpleiconsmapfour\symbol{144}}
+ \expandafter\def\csname simpleicon@expressdotcomicon\endcsname {\simpleiconsmapfour\symbol{145}}
+ \expandafter\def\csname simpleicon@expressvpnicon\endcsname {\simpleiconsmapfour\symbol{146}}
+ \expandafter\def\csname simpleicon@eyeemicon\endcsname {\simpleiconsmapfour\symbol{147}}
+ \expandafter\def\csname simpleicon@fdroidicon\endcsname {\simpleiconsmapfour\symbol{148}}
+ \expandafter\def\csname simpleicon@fsecureicon\endcsname {\simpleiconsmapfour\symbol{149}}
+ \expandafter\def\csname simpleicon@fsharpicon\endcsname {\simpleiconsmapfour\symbol{150}}
+ \expandafter\def\csname simpleicon@f1icon\endcsname {\simpleiconsmapfour\symbol{151}}
+ \expandafter\def\csname simpleicon@f5icon\endcsname {\simpleiconsmapfour\symbol{152}}
+ \expandafter\def\csname simpleicon@facebookicon\endcsname {\simpleiconsmapfour\symbol{153}}
+ \expandafter\def\csname simpleicon@facebookgamingicon\endcsname {\simpleiconsmapfour\symbol{154}}
+ \expandafter\def\csname simpleicon@facebookliveicon\endcsname {\simpleiconsmapfour\symbol{155}}
+ \expandafter\def\csname simpleicon@faceiticon\endcsname {\simpleiconsmapfour\symbol{156}}
+ \expandafter\def\csname simpleicon@facepunchicon\endcsname {\simpleiconsmapfour\symbol{157}}
+ \expandafter\def\csname simpleicon@fairphoneicon\endcsname {\simpleiconsmapfour\symbol{158}}
+ \expandafter\def\csname simpleicon@falcoicon\endcsname {\simpleiconsmapfour\symbol{159}}
+ \expandafter\def\csname simpleicon@falconicon\endcsname {\simpleiconsmapfour\symbol{160}}
+ \expandafter\def\csname simpleicon@fampayicon\endcsname {\simpleiconsmapfour\symbol{161}}
+ \expandafter\def\csname simpleicon@fandangoicon\endcsname {\simpleiconsmapfour\symbol{162}}
+ \expandafter\def\csname simpleicon@fandomicon\endcsname {\simpleiconsmapfour\symbol{163}}
+ \expandafter\def\csname simpleicon@fanfouicon\endcsname {\simpleiconsmapfour\symbol{164}}
+ \expandafter\def\csname simpleicon@fantomicon\endcsname {\simpleiconsmapfour\symbol{165}}
+ \expandafter\def\csname simpleicon@farcastericon\endcsname {\simpleiconsmapfour\symbol{166}}
+ \expandafter\def\csname simpleicon@fareharboricon\endcsname {\simpleiconsmapfour\symbol{167}}
+ \expandafter\def\csname simpleicon@farfetchicon\endcsname {\simpleiconsmapfour\symbol{168}}
+ \expandafter\def\csname simpleicon@fastapiicon\endcsname {\simpleiconsmapfour\symbol{169}}
+ \expandafter\def\csname simpleicon@fastifyicon\endcsname {\simpleiconsmapfour\symbol{170}}
+ \expandafter\def\csname simpleicon@fastlaneicon\endcsname {\simpleiconsmapfour\symbol{171}}
+ \expandafter\def\csname simpleicon@fastlyicon\endcsname {\simpleiconsmapfour\symbol{172}}
+ \expandafter\def\csname simpleicon@fathomicon\endcsname {\simpleiconsmapfour\symbol{173}}
+ \expandafter\def\csname simpleicon@faunaicon\endcsname {\simpleiconsmapfour\symbol{174}}
+ \expandafter\def\csname simpleicon@favroicon\endcsname {\simpleiconsmapfour\symbol{175}}
+ \expandafter\def\csname simpleicon@fccicon\endcsname {\simpleiconsmapfour\symbol{176}}
+ \expandafter\def\csname simpleicon@fedexicon\endcsname {\simpleiconsmapfour\symbol{177}}
+ \expandafter\def\csname simpleicon@fedoraicon\endcsname {\simpleiconsmapfour\symbol{178}}
+ \expandafter\def\csname simpleicon@feedlyicon\endcsname {\simpleiconsmapfour\symbol{179}}
+ \expandafter\def\csname simpleicon@ferrariicon\endcsname {\simpleiconsmapfour\symbol{180}}
+ \expandafter\def\csname simpleicon@ferrarinvicon\endcsname {\simpleiconsmapfour\symbol{181}}
+ \expandafter\def\csname simpleicon@ferretdbicon\endcsname {\simpleiconsmapfour\symbol{182}}
+ \expandafter\def\csname simpleicon@ffmpegicon\endcsname {\simpleiconsmapfour\symbol{183}}
+ \expandafter\def\csname simpleicon@fiicon\endcsname {\simpleiconsmapfour\symbol{184}}
+ \expandafter\def\csname simpleicon@fiaticon\endcsname {\simpleiconsmapfour\symbol{185}}
+ \expandafter\def\csname simpleicon@fidoallianceicon\endcsname {\simpleiconsmapfour\symbol{186}}
+ \expandafter\def\csname simpleicon@fifaicon\endcsname {\simpleiconsmapfour\symbol{187}}
+ \expandafter\def\csname simpleicon@figicon\endcsname {\simpleiconsmapfour\symbol{188}}
+ \expandafter\def\csname simpleicon@figmaicon\endcsname {\simpleiconsmapfour\symbol{189}}
+ \expandafter\def\csname simpleicon@figshareicon\endcsname {\simpleiconsmapfour\symbol{190}}
+ \expandafter\def\csname simpleicon@filaicon\endcsname {\simpleiconsmapfour\symbol{191}}
+ \expandafter\def\csname simpleicon@filamenticon\endcsname {\simpleiconsmapfour\symbol{192}}
+ \expandafter\def\csname simpleicon@filedotioicon\endcsname {\simpleiconsmapfour\symbol{193}}
+ \expandafter\def\csname simpleicon@filesicon\endcsname {\simpleiconsmapfour\symbol{194}}
+ \expandafter\def\csname simpleicon@filezillaicon\endcsname {\simpleiconsmapfour\symbol{195}}
+ \expandafter\def\csname simpleicon@finecoicon\endcsname {\simpleiconsmapfour\symbol{196}}
+ \expandafter\def\csname simpleicon@fingicon\endcsname {\simpleiconsmapfour\symbol{197}}
+ \expandafter\def\csname simpleicon@firebaseicon\endcsname {\simpleiconsmapfour\symbol{198}}
+ \expandafter\def\csname simpleicon@firefishicon\endcsname {\simpleiconsmapfour\symbol{199}}
+ \expandafter\def\csname simpleicon@fireflyiiiicon\endcsname {\simpleiconsmapfour\symbol{200}}
+ \expandafter\def\csname simpleicon@firefoxicon\endcsname {\simpleiconsmapfour\symbol{201}}
+ \expandafter\def\csname simpleicon@firefoxbrowsericon\endcsname {\simpleiconsmapfour\symbol{202}}
+ \expandafter\def\csname simpleicon@fireshipicon\endcsname {\simpleiconsmapfour\symbol{203}}
+ \expandafter\def\csname simpleicon@firewallaicon\endcsname {\simpleiconsmapfour\symbol{204}}
+ \expandafter\def\csname simpleicon@firsticon\endcsname {\simpleiconsmapfour\symbol{205}}
+ \expandafter\def\csname simpleicon@fishshellicon\endcsname {\simpleiconsmapfour\symbol{206}}
+ \expandafter\def\csname simpleicon@fitbiticon\endcsname {\simpleiconsmapfour\symbol{207}}
+ \expandafter\def\csname simpleicon@fivemicon\endcsname {\simpleiconsmapfour\symbol{208}}
+ \expandafter\def\csname simpleicon@fiverricon\endcsname {\simpleiconsmapfour\symbol{209}}
+ \expandafter\def\csname simpleicon@fizzicon\endcsname {\simpleiconsmapfour\symbol{210}}
+ \expandafter\def\csname simpleicon@flashforgeicon\endcsname {\simpleiconsmapfour\symbol{211}}
+ \expandafter\def\csname simpleicon@flaskicon\endcsname {\simpleiconsmapfour\symbol{212}}
+ \expandafter\def\csname simpleicon@flaticon\endcsname {\simpleiconsmapfour\symbol{213}}
+ \expandafter\def\csname simpleicon@flathubicon\endcsname {\simpleiconsmapfour\symbol{214}}
+ \expandafter\def\csname simpleicon@flatpakicon\endcsname {\simpleiconsmapfour\symbol{215}}
+ \expandafter\def\csname simpleicon@flickricon\endcsname {\simpleiconsmapfour\symbol{216}}
+ \expandafter\def\csname simpleicon@flightawareicon\endcsname {\simpleiconsmapfour\symbol{217}}
+ \expandafter\def\csname simpleicon@flipboardicon\endcsname {\simpleiconsmapfour\symbol{218}}
+ \expandafter\def\csname simpleicon@flipkarticon\endcsname {\simpleiconsmapfour\symbol{219}}
+ \expandafter\def\csname simpleicon@floatplaneicon\endcsname {\simpleiconsmapfour\symbol{220}}
+ \expandafter\def\csname simpleicon@floodicon\endcsname {\simpleiconsmapfour\symbol{221}}
+ \expandafter\def\csname simpleicon@fluentbiticon\endcsname {\simpleiconsmapfour\symbol{222}}
+ \expandafter\def\csname simpleicon@fluentdicon\endcsname {\simpleiconsmapfour\symbol{223}}
+ \expandafter\def\csname simpleicon@flukeicon\endcsname {\simpleiconsmapfour\symbol{224}}
+ \expandafter\def\csname simpleicon@fluttericon\endcsname {\simpleiconsmapfour\symbol{225}}
+ \expandafter\def\csname simpleicon@fluxicon\endcsname {\simpleiconsmapfour\symbol{226}}
+ \expandafter\def\csname simpleicon@flydotioicon\endcsname {\simpleiconsmapfour\symbol{227}}
+ \expandafter\def\csname simpleicon@flywayicon\endcsname {\simpleiconsmapfour\symbol{228}}
+ \expandafter\def\csname simpleicon@fmodicon\endcsname {\simpleiconsmapfour\symbol{229}}
+ \expandafter\def\csname simpleicon@fnacicon\endcsname {\simpleiconsmapfour\symbol{230}}
+ \expandafter\def\csname simpleicon@foliumicon\endcsname {\simpleiconsmapfour\symbol{231}}
+ \expandafter\def\csname simpleicon@fonomaicon\endcsname {\simpleiconsmapfour\symbol{232}}
+ \expandafter\def\csname simpleicon@fontawesomeicon\endcsname {\simpleiconsmapfour\symbol{233}}
+ \expandafter\def\csname simpleicon@fontbaseicon\endcsname {\simpleiconsmapfour\symbol{234}}
+ \expandafter\def\csname simpleicon@fontforgeicon\endcsname {\simpleiconsmapfour\symbol{235}}
+ \expandafter\def\csname simpleicon@foobar2000icon\endcsname {\simpleiconsmapfour\symbol{236}}
+ \expandafter\def\csname simpleicon@foodpandaicon\endcsname {\simpleiconsmapfour\symbol{237}}
+ \expandafter\def\csname simpleicon@fordicon\endcsname {\simpleiconsmapfour\symbol{238}}
+ \expandafter\def\csname simpleicon@forgejoicon\endcsname {\simpleiconsmapfour\symbol{239}}
+ \expandafter\def\csname simpleicon@formikicon\endcsname {\simpleiconsmapfour\symbol{240}}
+ \expandafter\def\csname simpleicon@formspreeicon\endcsname {\simpleiconsmapfour\symbol{241}}
+ \expandafter\def\csname simpleicon@formstackicon\endcsname {\simpleiconsmapfour\symbol{242}}
+ \expandafter\def\csname simpleicon@fortineticon\endcsname {\simpleiconsmapfour\symbol{243}}
+ \expandafter\def\csname simpleicon@fortranicon\endcsname {\simpleiconsmapfour\symbol{244}}
+ \expandafter\def\csname simpleicon@fossaicon\endcsname {\simpleiconsmapfour\symbol{245}}
+ \expandafter\def\csname simpleicon@fossilscmicon\endcsname {\simpleiconsmapfour\symbol{246}}
+ \expandafter\def\csname simpleicon@foundryvirtualtabletopicon\endcsname {\simpleiconsmapfour\symbol{247}}
+ \expandafter\def\csname simpleicon@foursquareicon\endcsname {\simpleiconsmapfour\symbol{248}}
+ \expandafter\def\csname simpleicon@foxicon\endcsname {\simpleiconsmapfour\symbol{249}}
+ \expandafter\def\csname simpleicon@foxtelicon\endcsname {\simpleiconsmapfour\symbol{250}}
+ \expandafter\def\csname simpleicon@fozzyicon\endcsname {\simpleiconsmapfour\symbol{251}}
+ \expandafter\def\csname simpleicon@framericon\endcsname {\simpleiconsmapfour\symbol{252}}
+ \expandafter\def\csname simpleicon@frameworkicon\endcsname {\simpleiconsmapfour\symbol{253}}
+ \expandafter\def\csname simpleicon@framework7icon\endcsname {\simpleiconsmapfour\symbol{254}}
+ \expandafter\def\csname simpleicon@franprixicon\endcsname {\simpleiconsmapfour\symbol{255}}
+ \expandafter\def\csname simpleicon@frappeicon\endcsname {\simpleiconsmapfive\symbol{0}}
+ \expandafter\def\csname simpleicon@fraunhofergesellschafticon\endcsname {\simpleiconsmapfive\symbol{1}}
+ \expandafter\def\csname simpleicon@freebsdicon\endcsname {\simpleiconsmapfive\symbol{2}}
+ \expandafter\def\csname simpleicon@freecadicon\endcsname {\simpleiconsmapfive\symbol{3}}
+ \expandafter\def\csname simpleicon@freecodecampicon\endcsname {\simpleiconsmapfive\symbol{4}}
+ \expandafter\def\csname simpleicon@freedesktopdotorgicon\endcsname {\simpleiconsmapfive\symbol{5}}
+ \expandafter\def\csname simpleicon@freelancericon\endcsname {\simpleiconsmapfive\symbol{6}}
+ \expandafter\def\csname simpleicon@freelancermapicon\endcsname {\simpleiconsmapfive\symbol{7}}
+ \expandafter\def\csname simpleicon@freenasicon\endcsname {\simpleiconsmapfive\symbol{8}}
+ \expandafter\def\csname simpleicon@freeneticon\endcsname {\simpleiconsmapfive\symbol{9}}
+ \expandafter\def\csname simpleicon@freepikicon\endcsname {\simpleiconsmapfive\symbol{10}}
+ \expandafter\def\csname simpleicon@freshicon\endcsname {\simpleiconsmapfive\symbol{11}}
+ \expandafter\def\csname simpleicon@frontendmentoricon\endcsname {\simpleiconsmapfive\symbol{12}}
+ \expandafter\def\csname simpleicon@frontifyicon\endcsname {\simpleiconsmapfive\symbol{13}}
+ \expandafter\def\csname simpleicon@fuboicon\endcsname {\simpleiconsmapfive\symbol{14}}
+ \expandafter\def\csname simpleicon@fuelericon\endcsname {\simpleiconsmapfive\symbol{15}}
+ \expandafter\def\csname simpleicon@fugacloudicon\endcsname {\simpleiconsmapfive\symbol{16}}
+ \expandafter\def\csname simpleicon@fujifilmicon\endcsname {\simpleiconsmapfive\symbol{17}}
+ \expandafter\def\csname simpleicon@fujitsuicon\endcsname {\simpleiconsmapfive\symbol{18}}
+ \expandafter\def\csname simpleicon@furaffinityicon\endcsname {\simpleiconsmapfive\symbol{19}}
+ \expandafter\def\csname simpleicon@furrynetworkicon\endcsname {\simpleiconsmapfive\symbol{20}}
+ \expandafter\def\csname simpleicon@fusionauthicon\endcsname {\simpleiconsmapfive\symbol{21}}
+ \expandafter\def\csname simpleicon@futurelearnicon\endcsname {\simpleiconsmapfive\symbol{22}}
+ \expandafter\def\csname simpleicon@fyleicon\endcsname {\simpleiconsmapfive\symbol{23}}
+ \expandafter\def\csname simpleicon@g2icon\endcsname {\simpleiconsmapfive\symbol{24}}
+ \expandafter\def\csname simpleicon@g2aicon\endcsname {\simpleiconsmapfive\symbol{25}}
+ \expandafter\def\csname simpleicon@g2gicon\endcsname {\simpleiconsmapfive\symbol{26}}
+ \expandafter\def\csname simpleicon@galaxusicon\endcsname {\simpleiconsmapfive\symbol{27}}
+ \expandafter\def\csname simpleicon@gamedevelopericon\endcsname {\simpleiconsmapfive\symbol{28}}
+ \expandafter\def\csname simpleicon@gamejolticon\endcsname {\simpleiconsmapfive\symbol{29}}
+ \expandafter\def\csname simpleicon@gamescienceicon\endcsname {\simpleiconsmapfive\symbol{30}}
+ \expandafter\def\csname simpleicon@gamebananaicon\endcsname {\simpleiconsmapfive\symbol{31}}
+ \expandafter\def\csname simpleicon@gamelofticon\endcsname {\simpleiconsmapfive\symbol{32}}
+ \expandafter\def\csname simpleicon@gamemakericon\endcsname {\simpleiconsmapfive\symbol{33}}
+ \expandafter\def\csname simpleicon@garminicon\endcsname {\simpleiconsmapfive\symbol{34}}
+ \expandafter\def\csname simpleicon@gatlingicon\endcsname {\simpleiconsmapfive\symbol{35}}
+ \expandafter\def\csname simpleicon@gatsbyicon\endcsname {\simpleiconsmapfive\symbol{36}}
+ \expandafter\def\csname simpleicon@gcoreicon\endcsname {\simpleiconsmapfive\symbol{37}}
+ \expandafter\def\csname simpleicon@gdalicon\endcsname {\simpleiconsmapfive\symbol{38}}
+ \expandafter\def\csname simpleicon@geeksforgeeksicon\endcsname {\simpleiconsmapfive\symbol{39}}
+ \expandafter\def\csname simpleicon@generalelectricicon\endcsname {\simpleiconsmapfive\symbol{40}}
+ \expandafter\def\csname simpleicon@generalmotorsicon\endcsname {\simpleiconsmapfive\symbol{41}}
+ \expandafter\def\csname simpleicon@geniusicon\endcsname {\simpleiconsmapfive\symbol{42}}
+ \expandafter\def\csname simpleicon@gentooicon\endcsname {\simpleiconsmapfive\symbol{43}}
+ \expandafter\def\csname simpleicon@geocachingicon\endcsname {\simpleiconsmapfive\symbol{44}}
+ \expandafter\def\csname simpleicon@geodeicon\endcsname {\simpleiconsmapfive\symbol{45}}
+ \expandafter\def\csname simpleicon@geopandasicon\endcsname {\simpleiconsmapfive\symbol{46}}
+ \expandafter\def\csname simpleicon@gerriticon\endcsname {\simpleiconsmapfive\symbol{47}}
+ \expandafter\def\csname simpleicon@getxicon\endcsname {\simpleiconsmapfive\symbol{48}}
+ \expandafter\def\csname simpleicon@ghosticon\endcsname {\simpleiconsmapfive\symbol{49}}
+ \expandafter\def\csname simpleicon@ghosteryicon\endcsname {\simpleiconsmapfive\symbol{50}}
+ \expandafter\def\csname simpleicon@gimpicon\endcsname {\simpleiconsmapfive\symbol{51}}
+ \expandafter\def\csname simpleicon@ginicon\endcsname {\simpleiconsmapfive\symbol{52}}
+ \expandafter\def\csname simpleicon@giphyicon\endcsname {\simpleiconsmapfive\symbol{53}}
+ \expandafter\def\csname simpleicon@giticon\endcsname {\simpleiconsmapfive\symbol{54}}
+ \expandafter\def\csname simpleicon@gitextensionsicon\endcsname {\simpleiconsmapfive\symbol{55}}
+ \expandafter\def\csname simpleicon@gitforwindowsicon\endcsname {\simpleiconsmapfive\symbol{56}}
+ \expandafter\def\csname simpleicon@gitlfsicon\endcsname {\simpleiconsmapfive\symbol{57}}
+ \expandafter\def\csname simpleicon@gitbookicon\endcsname {\simpleiconsmapfive\symbol{58}}
+ \expandafter\def\csname simpleicon@gitconnectedicon\endcsname {\simpleiconsmapfive\symbol{59}}
+ \expandafter\def\csname simpleicon@giteaicon\endcsname {\simpleiconsmapfive\symbol{60}}
+ \expandafter\def\csname simpleicon@giteeicon\endcsname {\simpleiconsmapfive\symbol{61}}
+ \expandafter\def\csname simpleicon@githubicon\endcsname {\simpleiconsmapfive\symbol{62}}
+ \expandafter\def\csname simpleicon@githubactionsicon\endcsname {\simpleiconsmapfive\symbol{63}}
+ \expandafter\def\csname simpleicon@githubcopiloticon\endcsname {\simpleiconsmapfive\symbol{64}}
+ \expandafter\def\csname simpleicon@githubpagesicon\endcsname {\simpleiconsmapfive\symbol{65}}
+ \expandafter\def\csname simpleicon@githubsponsorsicon\endcsname {\simpleiconsmapfive\symbol{66}}
+ \expandafter\def\csname simpleicon@gitignoredotioicon\endcsname {\simpleiconsmapfive\symbol{67}}
+ \expandafter\def\csname simpleicon@gitkrakenicon\endcsname {\simpleiconsmapfive\symbol{68}}
+ \expandafter\def\csname simpleicon@gitlabicon\endcsname {\simpleiconsmapfive\symbol{69}}
+ \expandafter\def\csname simpleicon@gitpodicon\endcsname {\simpleiconsmapfive\symbol{70}}
+ \expandafter\def\csname simpleicon@gittericon\endcsname {\simpleiconsmapfive\symbol{71}}
+ \expandafter\def\csname simpleicon@glassdooricon\endcsname {\simpleiconsmapfive\symbol{72}}
+ \expandafter\def\csname simpleicon@glideicon\endcsname {\simpleiconsmapfive\symbol{73}}
+ \expandafter\def\csname simpleicon@glitchicon\endcsname {\simpleiconsmapfive\symbol{74}}
+ \expandafter\def\csname simpleicon@globusicon\endcsname {\simpleiconsmapfive\symbol{75}}
+ \expandafter\def\csname simpleicon@glovoicon\endcsname {\simpleiconsmapfive\symbol{76}}
+ \expandafter\def\csname simpleicon@gltficon\endcsname {\simpleiconsmapfive\symbol{77}}
+ \expandafter\def\csname simpleicon@gmailicon\endcsname {\simpleiconsmapfive\symbol{78}}
+ \expandafter\def\csname simpleicon@gmxicon\endcsname {\simpleiconsmapfive\symbol{79}}
+ \expandafter\def\csname simpleicon@gnomeicon\endcsname {\simpleiconsmapfive\symbol{80}}
+ \expandafter\def\csname simpleicon@gnometerminalicon\endcsname {\simpleiconsmapfive\symbol{81}}
+ \expandafter\def\csname simpleicon@gnuicon\endcsname {\simpleiconsmapfive\symbol{82}}
+ \expandafter\def\csname simpleicon@gnubashicon\endcsname {\simpleiconsmapfive\symbol{83}}
+ \expandafter\def\csname simpleicon@gnuemacsicon\endcsname {\simpleiconsmapfive\symbol{84}}
+ \expandafter\def\csname simpleicon@gnuicecaticon\endcsname {\simpleiconsmapfive\symbol{85}}
+ \expandafter\def\csname simpleicon@gnuprivacyguardicon\endcsname {\simpleiconsmapfive\symbol{86}}
+ \expandafter\def\csname simpleicon@gnusocialicon\endcsname {\simpleiconsmapfive\symbol{87}}
+ \expandafter\def\csname simpleicon@goicon\endcsname {\simpleiconsmapfive\symbol{88}}
+ \expandafter\def\csname simpleicon@gocdicon\endcsname {\simpleiconsmapfive\symbol{89}}
+ \expandafter\def\csname simpleicon@godaddyicon\endcsname {\simpleiconsmapfive\symbol{90}}
+ \expandafter\def\csname simpleicon@godotengineicon\endcsname {\simpleiconsmapfive\symbol{91}}
+ \expandafter\def\csname simpleicon@gofundmeicon\endcsname {\simpleiconsmapfive\symbol{92}}
+ \expandafter\def\csname simpleicon@gogdotcomicon\endcsname {\simpleiconsmapfive\symbol{93}}
+ \expandafter\def\csname simpleicon@gojekicon\endcsname {\simpleiconsmapfive\symbol{94}}
+ \expandafter\def\csname simpleicon@golandicon\endcsname {\simpleiconsmapfive\symbol{95}}
+ \expandafter\def\csname simpleicon@goldenlineicon\endcsname {\simpleiconsmapfive\symbol{96}}
+ \expandafter\def\csname simpleicon@goldmansachsicon\endcsname {\simpleiconsmapfive\symbol{97}}
+ \expandafter\def\csname simpleicon@goodreadsicon\endcsname {\simpleiconsmapfive\symbol{98}}
+ \expandafter\def\csname simpleicon@googleicon\endcsname {\simpleiconsmapfive\symbol{99}}
+ \expandafter\def\csname simpleicon@googleadmobicon\endcsname {\simpleiconsmapfive\symbol{100}}
+ \expandafter\def\csname simpleicon@googleadsicon\endcsname {\simpleiconsmapfive\symbol{101}}
+ \expandafter\def\csname simpleicon@googleadsenseicon\endcsname {\simpleiconsmapfive\symbol{102}}
+ \expandafter\def\csname simpleicon@googleanalyticsicon\endcsname {\simpleiconsmapfive\symbol{103}}
+ \expandafter\def\csname simpleicon@googleappsscripticon\endcsname {\simpleiconsmapfive\symbol{104}}
+ \expandafter\def\csname simpleicon@googleassistanticon\endcsname {\simpleiconsmapfive\symbol{105}}
+ \expandafter\def\csname simpleicon@googleauthenticatoricon\endcsname {\simpleiconsmapfive\symbol{106}}
+ \expandafter\def\csname simpleicon@googlebigqueryicon\endcsname {\simpleiconsmapfive\symbol{107}}
+ \expandafter\def\csname simpleicon@googlebigtableicon\endcsname {\simpleiconsmapfive\symbol{108}}
+ \expandafter\def\csname simpleicon@googlecalendaricon\endcsname {\simpleiconsmapfive\symbol{109}}
+ \expandafter\def\csname simpleicon@googlecampaignmanager360icon\endcsname {\simpleiconsmapfive\symbol{110}}
+ \expandafter\def\csname simpleicon@googlecardboardicon\endcsname {\simpleiconsmapfive\symbol{111}}
+ \expandafter\def\csname simpleicon@googlechaticon\endcsname {\simpleiconsmapfive\symbol{112}}
+ \expandafter\def\csname simpleicon@googlechromeicon\endcsname {\simpleiconsmapfive\symbol{113}}
+ \expandafter\def\csname simpleicon@googlechronicleicon\endcsname {\simpleiconsmapfive\symbol{114}}
+ \expandafter\def\csname simpleicon@googleclassroomicon\endcsname {\simpleiconsmapfive\symbol{115}}
+ \expandafter\def\csname simpleicon@googlecloudicon\endcsname {\simpleiconsmapfive\symbol{116}}
+ \expandafter\def\csname simpleicon@googlecloudcomposericon\endcsname {\simpleiconsmapfive\symbol{117}}
+ \expandafter\def\csname simpleicon@googlecloudspannericon\endcsname {\simpleiconsmapfive\symbol{118}}
+ \expandafter\def\csname simpleicon@googlecloudstorageicon\endcsname {\simpleiconsmapfive\symbol{119}}
+ \expandafter\def\csname simpleicon@googlecolabicon\endcsname {\simpleiconsmapfive\symbol{120}}
+ \expandafter\def\csname simpleicon@googlecontaineroptimizedosicon\endcsname {\simpleiconsmapfive\symbol{121}}
+ \expandafter\def\csname simpleicon@googledatastudioicon\endcsname {\simpleiconsmapfive\symbol{122}}
+ \expandafter\def\csname simpleicon@googledataflowicon\endcsname {\simpleiconsmapfive\symbol{123}}
+ \expandafter\def\csname simpleicon@googledataprocicon\endcsname {\simpleiconsmapfive\symbol{124}}
+ \expandafter\def\csname simpleicon@googledisplayandvideo360icon\endcsname {\simpleiconsmapfive\symbol{125}}
+ \expandafter\def\csname simpleicon@googledocsicon\endcsname {\simpleiconsmapfive\symbol{126}}
+ \expandafter\def\csname simpleicon@googledriveicon\endcsname {\simpleiconsmapfive\symbol{127}}
+ \expandafter\def\csname simpleicon@googleearthicon\endcsname {\simpleiconsmapfive\symbol{128}}
+ \expandafter\def\csname simpleicon@googleearthengineicon\endcsname {\simpleiconsmapfive\symbol{129}}
+ \expandafter\def\csname simpleicon@googlefiticon\endcsname {\simpleiconsmapfive\symbol{130}}
+ \expandafter\def\csname simpleicon@googlefontsicon\endcsname {\simpleiconsmapfive\symbol{131}}
+ \expandafter\def\csname simpleicon@googleformsicon\endcsname {\simpleiconsmapfive\symbol{132}}
+ \expandafter\def\csname simpleicon@googlegeminiicon\endcsname {\simpleiconsmapfive\symbol{133}}
+ \expandafter\def\csname simpleicon@googlehomeicon\endcsname {\simpleiconsmapfive\symbol{134}}
+ \expandafter\def\csname simpleicon@googlekeepicon\endcsname {\simpleiconsmapfive\symbol{135}}
+ \expandafter\def\csname simpleicon@googlelensicon\endcsname {\simpleiconsmapfive\symbol{136}}
+ \expandafter\def\csname simpleicon@googlemapsicon\endcsname {\simpleiconsmapfive\symbol{137}}
+ \expandafter\def\csname simpleicon@googlemarketingplatformicon\endcsname {\simpleiconsmapfive\symbol{138}}
+ \expandafter\def\csname simpleicon@googlemeeticon\endcsname {\simpleiconsmapfive\symbol{139}}
+ \expandafter\def\csname simpleicon@googlemessagesicon\endcsname {\simpleiconsmapfive\symbol{140}}
+ \expandafter\def\csname simpleicon@googlenearbyicon\endcsname {\simpleiconsmapfive\symbol{141}}
+ \expandafter\def\csname simpleicon@googlenewsicon\endcsname {\simpleiconsmapfive\symbol{142}}
+ \expandafter\def\csname simpleicon@googlepayicon\endcsname {\simpleiconsmapfive\symbol{143}}
+ \expandafter\def\csname simpleicon@googlephotosicon\endcsname {\simpleiconsmapfive\symbol{144}}
+ \expandafter\def\csname simpleicon@googleplayicon\endcsname {\simpleiconsmapfive\symbol{145}}
+ \expandafter\def\csname simpleicon@googlepubsubicon\endcsname {\simpleiconsmapfive\symbol{146}}
+ \expandafter\def\csname simpleicon@googlescholaricon\endcsname {\simpleiconsmapfive\symbol{147}}
+ \expandafter\def\csname simpleicon@googlesearchconsoleicon\endcsname {\simpleiconsmapfive\symbol{148}}
+ \expandafter\def\csname simpleicon@googlesheetsicon\endcsname {\simpleiconsmapfive\symbol{149}}
+ \expandafter\def\csname simpleicon@googleslidesicon\endcsname {\simpleiconsmapfive\symbol{150}}
+ \expandafter\def\csname simpleicon@googlestreetviewicon\endcsname {\simpleiconsmapfive\symbol{151}}
+ \expandafter\def\csname simpleicon@googletagmanagericon\endcsname {\simpleiconsmapfive\symbol{152}}
+ \expandafter\def\csname simpleicon@googletasksicon\endcsname {\simpleiconsmapfive\symbol{153}}
+ \expandafter\def\csname simpleicon@googletranslateicon\endcsname {\simpleiconsmapfive\symbol{154}}
+ \expandafter\def\csname simpleicon@gotomeetingicon\endcsname {\simpleiconsmapfive\symbol{155}}
+ \expandafter\def\csname simpleicon@grabicon\endcsname {\simpleiconsmapfive\symbol{156}}
+ \expandafter\def\csname simpleicon@gradioicon\endcsname {\simpleiconsmapfive\symbol{157}}
+ \expandafter\def\csname simpleicon@gradleicon\endcsname {\simpleiconsmapfive\symbol{158}}
+ \expandafter\def\csname simpleicon@gradleplaypublishericon\endcsname {\simpleiconsmapfive\symbol{159}}
+ \expandafter\def\csname simpleicon@grafanaicon\endcsname {\simpleiconsmapfive\symbol{160}}
+ \expandafter\def\csname simpleicon@grammarlyicon\endcsname {\simpleiconsmapfive\symbol{161}}
+ \expandafter\def\csname simpleicon@grandfraisicon\endcsname {\simpleiconsmapfive\symbol{162}}
+ \expandafter\def\csname simpleicon@grapheneosicon\endcsname {\simpleiconsmapfive\symbol{163}}
+ \expandafter\def\csname simpleicon@graphiteicon\endcsname {\simpleiconsmapfive\symbol{164}}
+ \expandafter\def\csname simpleicon@graphqlicon\endcsname {\simpleiconsmapfive\symbol{165}}
+ \expandafter\def\csname simpleicon@gravicon\endcsname {\simpleiconsmapfive\symbol{166}}
+ \expandafter\def\csname simpleicon@gravataricon\endcsname {\simpleiconsmapfive\symbol{167}}
+ \expandafter\def\csname simpleicon@graylogicon\endcsname {\simpleiconsmapfive\symbol{168}}
+ \expandafter\def\csname simpleicon@greasyforkicon\endcsname {\simpleiconsmapfive\symbol{169}}
+ \expandafter\def\csname simpleicon@greatlearningicon\endcsname {\simpleiconsmapfive\symbol{170}}
+ \expandafter\def\csname simpleicon@greenhouseicon\endcsname {\simpleiconsmapfive\symbol{171}}
+ \expandafter\def\csname simpleicon@greensockicon\endcsname {\simpleiconsmapfive\symbol{172}}
+ \expandafter\def\csname simpleicon@griddotaiicon\endcsname {\simpleiconsmapfive\symbol{173}}
+ \expandafter\def\csname simpleicon@gridsomeicon\endcsname {\simpleiconsmapfive\symbol{174}}
+ \expandafter\def\csname simpleicon@grocyicon\endcsname {\simpleiconsmapfive\symbol{175}}
+ \expandafter\def\csname simpleicon@groupmeicon\endcsname {\simpleiconsmapfive\symbol{176}}
+ \expandafter\def\csname simpleicon@grouponicon\endcsname {\simpleiconsmapfive\symbol{177}}
+ \expandafter\def\csname simpleicon@grubhubicon\endcsname {\simpleiconsmapfive\symbol{178}}
+ \expandafter\def\csname simpleicon@grunticon\endcsname {\simpleiconsmapfive\symbol{179}}
+ \expandafter\def\csname simpleicon@gskicon\endcsname {\simpleiconsmapfive\symbol{180}}
+ \expandafter\def\csname simpleicon@gsmarenadotcomicon\endcsname {\simpleiconsmapfive\symbol{181}}
+ \expandafter\def\csname simpleicon@gstreamericon\endcsname {\simpleiconsmapfive\symbol{182}}
+ \expandafter\def\csname simpleicon@gtkicon\endcsname {\simpleiconsmapfive\symbol{183}}
+ \expandafter\def\csname simpleicon@guangzhoumetroicon\endcsname {\simpleiconsmapfive\symbol{184}}
+ \expandafter\def\csname simpleicon@guildedicon\endcsname {\simpleiconsmapfive\symbol{185}}
+ \expandafter\def\csname simpleicon@guitarproicon\endcsname {\simpleiconsmapfive\symbol{186}}
+ \expandafter\def\csname simpleicon@gulpicon\endcsname {\simpleiconsmapfive\symbol{187}}
+ \expandafter\def\csname simpleicon@gumroadicon\endcsname {\simpleiconsmapfive\symbol{188}}
+ \expandafter\def\csname simpleicon@gumtreeicon\endcsname {\simpleiconsmapfive\symbol{189}}
+ \expandafter\def\csname simpleicon@gunicornicon\endcsname {\simpleiconsmapfive\symbol{190}}
+ \expandafter\def\csname simpleicon@gurobiicon\endcsname {\simpleiconsmapfive\symbol{191}}
+ \expandafter\def\csname simpleicon@gustoicon\endcsname {\simpleiconsmapfive\symbol{192}}
+ \expandafter\def\csname simpleicon@gutenbergicon\endcsname {\simpleiconsmapfive\symbol{193}}
+ \expandafter\def\csname simpleicon@handmicon\endcsname {\simpleiconsmapfive\symbol{194}}
+ \expandafter\def\csname simpleicon@h3icon\endcsname {\simpleiconsmapfive\symbol{195}}
+ \expandafter\def\csname simpleicon@habricon\endcsname {\simpleiconsmapfive\symbol{196}}
+ \expandafter\def\csname simpleicon@hackclubicon\endcsname {\simpleiconsmapfive\symbol{197}}
+ \expandafter\def\csname simpleicon@hacktheboxicon\endcsname {\simpleiconsmapfive\symbol{198}}
+ \expandafter\def\csname simpleicon@hackadayicon\endcsname {\simpleiconsmapfive\symbol{199}}
+ \expandafter\def\csname simpleicon@hackernoonicon\endcsname {\simpleiconsmapfive\symbol{200}}
+ \expandafter\def\csname simpleicon@hackerearthicon\endcsname {\simpleiconsmapfive\symbol{201}}
+ \expandafter\def\csname simpleicon@hackeroneicon\endcsname {\simpleiconsmapfive\symbol{202}}
+ \expandafter\def\csname simpleicon@hackerrankicon\endcsname {\simpleiconsmapfive\symbol{203}}
+ \expandafter\def\csname simpleicon@hackstericon\endcsname {\simpleiconsmapfive\symbol{204}}
+ \expandafter\def\csname simpleicon@halicon\endcsname {\simpleiconsmapfive\symbol{205}}
+ \expandafter\def\csname simpleicon@handlebarsdotjsicon\endcsname {\simpleiconsmapfive\symbol{206}}
+ \expandafter\def\csname simpleicon@handshakeicon\endcsname {\simpleiconsmapfive\symbol{207}}
+ \expandafter\def\csname simpleicon@handshakeprotocolicon\endcsname {\simpleiconsmapfive\symbol{208}}
+ \expandafter\def\csname simpleicon@happycowicon\endcsname {\simpleiconsmapfive\symbol{209}}
+ \expandafter\def\csname simpleicon@harboricon\endcsname {\simpleiconsmapfive\symbol{210}}
+ \expandafter\def\csname simpleicon@harmonyosicon\endcsname {\simpleiconsmapfive\symbol{211}}
+ \expandafter\def\csname simpleicon@hashicorpicon\endcsname {\simpleiconsmapfive\symbol{212}}
+ \expandafter\def\csname simpleicon@hashnodeicon\endcsname {\simpleiconsmapfive\symbol{213}}
+ \expandafter\def\csname simpleicon@haskellicon\endcsname {\simpleiconsmapfive\symbol{214}}
+ \expandafter\def\csname simpleicon@hasuraicon\endcsname {\simpleiconsmapfive\symbol{215}}
+ \expandafter\def\csname simpleicon@hatenabookmarkicon\endcsname {\simpleiconsmapfive\symbol{216}}
+ \expandafter\def\csname simpleicon@haveibeenpwnedicon\endcsname {\simpleiconsmapfive\symbol{217}}
+ \expandafter\def\csname simpleicon@haxeicon\endcsname {\simpleiconsmapfive\symbol{218}}
+ \expandafter\def\csname simpleicon@hboicon\endcsname {\simpleiconsmapfive\symbol{219}}
+ \expandafter\def\csname simpleicon@hclicon\endcsname {\simpleiconsmapfive\symbol{220}}
+ \expandafter\def\csname simpleicon@hdfcbankicon\endcsname {\simpleiconsmapfive\symbol{221}}
+ \expandafter\def\csname simpleicon@headlessuiicon\endcsname {\simpleiconsmapfive\symbol{222}}
+ \expandafter\def\csname simpleicon@headphonezoneicon\endcsname {\simpleiconsmapfive\symbol{223}}
+ \expandafter\def\csname simpleicon@headspaceicon\endcsname {\simpleiconsmapfive\symbol{224}}
+ \expandafter\def\csname simpleicon@hearthicon\endcsname {\simpleiconsmapfive\symbol{225}}
+ \expandafter\def\csname simpleicon@hearthisdotaticon\endcsname {\simpleiconsmapfive\symbol{226}}
+ \expandafter\def\csname simpleicon@hederaicon\endcsname {\simpleiconsmapfive\symbol{227}}
+ \expandafter\def\csname simpleicon@heliumicon\endcsname {\simpleiconsmapfive\symbol{228}}
+ \expandafter\def\csname simpleicon@helixicon\endcsname {\simpleiconsmapfive\symbol{229}}
+ \expandafter\def\csname simpleicon@hellofreshicon\endcsname {\simpleiconsmapfive\symbol{230}}
+ \expandafter\def\csname simpleicon@hellyhansenicon\endcsname {\simpleiconsmapfive\symbol{231}}
+ \expandafter\def\csname simpleicon@helmicon\endcsname {\simpleiconsmapfive\symbol{232}}
+ \expandafter\def\csname simpleicon@helpscouticon\endcsname {\simpleiconsmapfive\symbol{233}}
+ \expandafter\def\csname simpleicon@helpdeskicon\endcsname {\simpleiconsmapfive\symbol{234}}
+ \expandafter\def\csname simpleicon@hepsiemlakicon\endcsname {\simpleiconsmapfive\symbol{235}}
+ \expandafter\def\csname simpleicon@hereicon\endcsname {\simpleiconsmapfive\symbol{236}}
+ \expandafter\def\csname simpleicon@hermesicon\endcsname {\simpleiconsmapfive\symbol{237}}
+ \expandafter\def\csname simpleicon@herokuicon\endcsname {\simpleiconsmapfive\symbol{238}}
+ \expandafter\def\csname simpleicon@hetznericon\endcsname {\simpleiconsmapfive\symbol{239}}
+ \expandafter\def\csname simpleicon@hevyicon\endcsname {\simpleiconsmapfive\symbol{240}}
+ \expandafter\def\csname simpleicon@hexleticon\endcsname {\simpleiconsmapfive\symbol{241}}
+ \expandafter\def\csname simpleicon@hexoicon\endcsname {\simpleiconsmapfive\symbol{242}}
+ \expandafter\def\csname simpleicon@heyicon\endcsname {\simpleiconsmapfive\symbol{243}}
+ \expandafter\def\csname simpleicon@hibobicon\endcsname {\simpleiconsmapfive\symbol{244}}
+ \expandafter\def\csname simpleicon@hibernateicon\endcsname {\simpleiconsmapfive\symbol{245}}
+ \expandafter\def\csname simpleicon@hiltonicon\endcsname {\simpleiconsmapfive\symbol{246}}
+ \expandafter\def\csname simpleicon@hiltonhotelsandresortsicon\endcsname {\simpleiconsmapfive\symbol{247}}
+ \expandafter\def\csname simpleicon@hitachiicon\endcsname {\simpleiconsmapfive\symbol{248}}
+ \expandafter\def\csname simpleicon@hiveicon\endcsname {\simpleiconsmapfive\symbol{249}}
+ \expandafter\def\csname simpleicon@hiveblockchainicon\endcsname {\simpleiconsmapfive\symbol{250}}
+ \expandafter\def\csname simpleicon@hivemqicon\endcsname {\simpleiconsmapfive\symbol{251}}
+ \expandafter\def\csname simpleicon@homarricon\endcsname {\simpleiconsmapfive\symbol{252}}
+ \expandafter\def\csname simpleicon@homeassistanticon\endcsname {\simpleiconsmapfive\symbol{253}}
+ \expandafter\def\csname simpleicon@homeassistantcommunitystoreicon\endcsname {\simpleiconsmapfive\symbol{254}}
+ \expandafter\def\csname simpleicon@homeadvisoricon\endcsname {\simpleiconsmapfive\symbol{255}}
+ \expandafter\def\csname simpleicon@homebrewicon\endcsname {\simpleiconsmapsix\symbol{0}}
+ \expandafter\def\csname simpleicon@homebridgeicon\endcsname {\simpleiconsmapsix\symbol{1}}
+ \expandafter\def\csname simpleicon@homepageicon\endcsname {\simpleiconsmapsix\symbol{2}}
+ \expandafter\def\csname simpleicon@homifyicon\endcsname {\simpleiconsmapsix\symbol{3}}
+ \expandafter\def\csname simpleicon@hondaicon\endcsname {\simpleiconsmapsix\symbol{4}}
+ \expandafter\def\csname simpleicon@honeyicon\endcsname {\simpleiconsmapsix\symbol{5}}
+ \expandafter\def\csname simpleicon@honeybadgericon\endcsname {\simpleiconsmapsix\symbol{6}}
+ \expandafter\def\csname simpleicon@honeygainicon\endcsname {\simpleiconsmapsix\symbol{7}}
+ \expandafter\def\csname simpleicon@honoicon\endcsname {\simpleiconsmapsix\symbol{8}}
+ \expandafter\def\csname simpleicon@honoricon\endcsname {\simpleiconsmapsix\symbol{9}}
+ \expandafter\def\csname simpleicon@hootsuiteicon\endcsname {\simpleiconsmapsix\symbol{10}}
+ \expandafter\def\csname simpleicon@hoppscotchicon\endcsname {\simpleiconsmapsix\symbol{11}}
+ \expandafter\def\csname simpleicon@hostingericon\endcsname {\simpleiconsmapsix\symbol{12}}
+ \expandafter\def\csname simpleicon@hotelsdotcomicon\endcsname {\simpleiconsmapsix\symbol{13}}
+ \expandafter\def\csname simpleicon@hotjaricon\endcsname {\simpleiconsmapsix\symbol{14}}
+ \expandafter\def\csname simpleicon@hotwireicon\endcsname {\simpleiconsmapsix\symbol{15}}
+ \expandafter\def\csname simpleicon@houdiniicon\endcsname {\simpleiconsmapsix\symbol{16}}
+ \expandafter\def\csname simpleicon@houzzicon\endcsname {\simpleiconsmapsix\symbol{17}}
+ \expandafter\def\csname simpleicon@hpicon\endcsname {\simpleiconsmapsix\symbol{18}}
+ \expandafter\def\csname simpleicon@hsbcicon\endcsname {\simpleiconsmapsix\symbol{19}}
+ \expandafter\def\csname simpleicon@htcicon\endcsname {\simpleiconsmapsix\symbol{20}}
+ \expandafter\def\csname simpleicon@htcviveicon\endcsname {\simpleiconsmapsix\symbol{21}}
+ \expandafter\def\csname simpleicon@htmlacademyicon\endcsname {\simpleiconsmapsix\symbol{22}}
+ \expandafter\def\csname simpleicon@html5icon\endcsname {\simpleiconsmapsix\symbol{23}}
+ \expandafter\def\csname simpleicon@htmxicon\endcsname {\simpleiconsmapsix\symbol{24}}
+ \expandafter\def\csname simpleicon@htopicon\endcsname {\simpleiconsmapsix\symbol{25}}
+ \expandafter\def\csname simpleicon@httpieicon\endcsname {\simpleiconsmapsix\symbol{26}}
+ \expandafter\def\csname simpleicon@huaweiicon\endcsname {\simpleiconsmapsix\symbol{27}}
+ \expandafter\def\csname simpleicon@hubspoticon\endcsname {\simpleiconsmapsix\symbol{28}}
+ \expandafter\def\csname simpleicon@huggingfaceicon\endcsname {\simpleiconsmapsix\symbol{29}}
+ \expandafter\def\csname simpleicon@hugoicon\endcsname {\simpleiconsmapsix\symbol{30}}
+ \expandafter\def\csname simpleicon@humblebundleicon\endcsname {\simpleiconsmapsix\symbol{31}}
+ \expandafter\def\csname simpleicon@humhubicon\endcsname {\simpleiconsmapsix\symbol{32}}
+ \expandafter\def\csname simpleicon@hungryjacksicon\endcsname {\simpleiconsmapsix\symbol{33}}
+ \expandafter\def\csname simpleicon@husqvarnaicon\endcsname {\simpleiconsmapsix\symbol{34}}
+ \expandafter\def\csname simpleicon@hypericon\endcsname {\simpleiconsmapsix\symbol{35}}
+ \expandafter\def\csname simpleicon@hyperskillicon\endcsname {\simpleiconsmapsix\symbol{36}}
+ \expandafter\def\csname simpleicon@hyperxicon\endcsname {\simpleiconsmapsix\symbol{37}}
+ \expandafter\def\csname simpleicon@hypothesisicon\endcsname {\simpleiconsmapsix\symbol{38}}
+ \expandafter\def\csname simpleicon@hyprlandicon\endcsname {\simpleiconsmapsix\symbol{39}}
+ \expandafter\def\csname simpleicon@hyundaiicon\endcsname {\simpleiconsmapsix\symbol{40}}
+ \expandafter\def\csname simpleicon@i18nexticon\endcsname {\simpleiconsmapsix\symbol{41}}
+ \expandafter\def\csname simpleicon@i3icon\endcsname {\simpleiconsmapsix\symbol{42}}
+ \expandafter\def\csname simpleicon@iataicon\endcsname {\simpleiconsmapsix\symbol{43}}
+ \expandafter\def\csname simpleicon@ibeaconicon\endcsname {\simpleiconsmapsix\symbol{44}}
+ \expandafter\def\csname simpleicon@iberiaicon\endcsname {\simpleiconsmapsix\symbol{45}}
+ \expandafter\def\csname simpleicon@icedicon\endcsname {\simpleiconsmapsix\symbol{46}}
+ \expandafter\def\csname simpleicon@icelandicon\endcsname {\simpleiconsmapsix\symbol{47}}
+ \expandafter\def\csname simpleicon@icicibankicon\endcsname {\simpleiconsmapsix\symbol{48}}
+ \expandafter\def\csname simpleicon@icingaicon\endcsname {\simpleiconsmapsix\symbol{49}}
+ \expandafter\def\csname simpleicon@icloudicon\endcsname {\simpleiconsmapsix\symbol{50}}
+ \expandafter\def\csname simpleicon@icomoonicon\endcsname {\simpleiconsmapsix\symbol{51}}
+ \expandafter\def\csname simpleicon@iconicon\endcsname {\simpleiconsmapsix\symbol{52}}
+ \expandafter\def\csname simpleicon@iconfindericon\endcsname {\simpleiconsmapsix\symbol{53}}
+ \expandafter\def\csname simpleicon@iconifyicon\endcsname {\simpleiconsmapsix\symbol{54}}
+ \expandafter\def\csname simpleicon@iconjaricon\endcsname {\simpleiconsmapsix\symbol{55}}
+ \expandafter\def\csname simpleicon@icons8icon\endcsname {\simpleiconsmapsix\symbol{56}}
+ \expandafter\def\csname simpleicon@icqicon\endcsname {\simpleiconsmapsix\symbol{57}}
+ \expandafter\def\csname simpleicon@ieeeicon\endcsname {\simpleiconsmapsix\symbol{58}}
+ \expandafter\def\csname simpleicon@ifixiticon\endcsname {\simpleiconsmapsix\symbol{59}}
+ \expandafter\def\csname simpleicon@ifoodicon\endcsname {\simpleiconsmapsix\symbol{60}}
+ \expandafter\def\csname simpleicon@ifttticon\endcsname {\simpleiconsmapsix\symbol{61}}
+ \expandafter\def\csname simpleicon@igdbicon\endcsname {\simpleiconsmapsix\symbol{62}}
+ \expandafter\def\csname simpleicon@ignicon\endcsname {\simpleiconsmapsix\symbol{63}}
+ \expandafter\def\csname simpleicon@iheartradioicon\endcsname {\simpleiconsmapsix\symbol{64}}
+ \expandafter\def\csname simpleicon@ikeaicon\endcsname {\simpleiconsmapsix\symbol{65}}
+ \expandafter\def\csname simpleicon@iledefrancemobilitesicon\endcsname {\simpleiconsmapsix\symbol{66}}
+ \expandafter\def\csname simpleicon@imagedotscicon\endcsname {\simpleiconsmapsix\symbol{67}}
+ \expandafter\def\csname simpleicon@imagejicon\endcsname {\simpleiconsmapsix\symbol{68}}
+ \expandafter\def\csname simpleicon@imdbicon\endcsname {\simpleiconsmapsix\symbol{69}}
+ \expandafter\def\csname simpleicon@imessageicon\endcsname {\simpleiconsmapsix\symbol{70}}
+ \expandafter\def\csname simpleicon@imguricon\endcsname {\simpleiconsmapsix\symbol{71}}
+ \expandafter\def\csname simpleicon@immericon\endcsname {\simpleiconsmapsix\symbol{72}}
+ \expandafter\def\csname simpleicon@immichicon\endcsname {\simpleiconsmapsix\symbol{73}}
+ \expandafter\def\csname simpleicon@imouicon\endcsname {\simpleiconsmapsix\symbol{74}}
+ \expandafter\def\csname simpleicon@improvmxicon\endcsname {\simpleiconsmapsix\symbol{75}}
+ \expandafter\def\csname simpleicon@indeedicon\endcsname {\simpleiconsmapsix\symbol{76}}
+ \expandafter\def\csname simpleicon@indiansuperleagueicon\endcsname {\simpleiconsmapsix\symbol{77}}
+ \expandafter\def\csname simpleicon@indiehackersicon\endcsname {\simpleiconsmapsix\symbol{78}}
+ \expandafter\def\csname simpleicon@indigoicon\endcsname {\simpleiconsmapsix\symbol{79}}
+ \expandafter\def\csname simpleicon@inductiveautomationicon\endcsname {\simpleiconsmapsix\symbol{80}}
+ \expandafter\def\csname simpleicon@inertiaicon\endcsname {\simpleiconsmapsix\symbol{81}}
+ \expandafter\def\csname simpleicon@infinitiicon\endcsname {\simpleiconsmapsix\symbol{82}}
+ \expandafter\def\csname simpleicon@influxdbicon\endcsname {\simpleiconsmapsix\symbol{83}}
+ \expandafter\def\csname simpleicon@infomaniakicon\endcsname {\simpleiconsmapsix\symbol{84}}
+ \expandafter\def\csname simpleicon@infoqicon\endcsname {\simpleiconsmapsix\symbol{85}}
+ \expandafter\def\csname simpleicon@informaticaicon\endcsname {\simpleiconsmapsix\symbol{86}}
+ \expandafter\def\csname simpleicon@infosysicon\endcsname {\simpleiconsmapsix\symbol{87}}
+ \expandafter\def\csname simpleicon@infracosticon\endcsname {\simpleiconsmapsix\symbol{88}}
+ \expandafter\def\csname simpleicon@ingressicon\endcsname {\simpleiconsmapsix\symbol{89}}
+ \expandafter\def\csname simpleicon@inkdropicon\endcsname {\simpleiconsmapsix\symbol{90}}
+ \expandafter\def\csname simpleicon@inkscapeicon\endcsname {\simpleiconsmapsix\symbol{91}}
+ \expandafter\def\csname simpleicon@inoreadericon\endcsname {\simpleiconsmapsix\symbol{92}}
+ \expandafter\def\csname simpleicon@insomniaicon\endcsname {\simpleiconsmapsix\symbol{93}}
+ \expandafter\def\csname simpleicon@inspireicon\endcsname {\simpleiconsmapsix\symbol{94}}
+ \expandafter\def\csname simpleicon@insta360icon\endcsname {\simpleiconsmapsix\symbol{95}}
+ \expandafter\def\csname simpleicon@instacarticon\endcsname {\simpleiconsmapsix\symbol{96}}
+ \expandafter\def\csname simpleicon@instagramicon\endcsname {\simpleiconsmapsix\symbol{97}}
+ \expandafter\def\csname simpleicon@instapapericon\endcsname {\simpleiconsmapsix\symbol{98}}
+ \expandafter\def\csname simpleicon@instatusicon\endcsname {\simpleiconsmapsix\symbol{99}}
+ \expandafter\def\csname simpleicon@instructablesicon\endcsname {\simpleiconsmapsix\symbol{100}}
+ \expandafter\def\csname simpleicon@instructureicon\endcsname {\simpleiconsmapsix\symbol{101}}
+ \expandafter\def\csname simpleicon@intelicon\endcsname {\simpleiconsmapsix\symbol{102}}
+ \expandafter\def\csname simpleicon@intellijideaicon\endcsname {\simpleiconsmapsix\symbol{103}}
+ \expandafter\def\csname simpleicon@interactiondesignfoundationicon\endcsname {\simpleiconsmapsix\symbol{104}}
+ \expandafter\def\csname simpleicon@interactjsicon\endcsname {\simpleiconsmapsix\symbol{105}}
+ \expandafter\def\csname simpleicon@interbaseicon\endcsname {\simpleiconsmapsix\symbol{106}}
+ \expandafter\def\csname simpleicon@intercomicon\endcsname {\simpleiconsmapsix\symbol{107}}
+ \expandafter\def\csname simpleicon@intermarcheicon\endcsname {\simpleiconsmapsix\symbol{108}}
+ \expandafter\def\csname simpleicon@internetarchiveicon\endcsname {\simpleiconsmapsix\symbol{109}}
+ \expandafter\def\csname simpleicon@internetcomputericon\endcsname {\simpleiconsmapsix\symbol{110}}
+ \expandafter\def\csname simpleicon@intigritiicon\endcsname {\simpleiconsmapsix\symbol{111}}
+ \expandafter\def\csname simpleicon@intuiticon\endcsname {\simpleiconsmapsix\symbol{112}}
+ \expandafter\def\csname simpleicon@invisionicon\endcsname {\simpleiconsmapsix\symbol{113}}
+ \expandafter\def\csname simpleicon@invoiceninjaicon\endcsname {\simpleiconsmapsix\symbol{114}}
+ \expandafter\def\csname simpleicon@iobrokericon\endcsname {\simpleiconsmapsix\symbol{115}}
+ \expandafter\def\csname simpleicon@ionicicon\endcsname {\simpleiconsmapsix\symbol{116}}
+ \expandafter\def\csname simpleicon@ionosicon\endcsname {\simpleiconsmapsix\symbol{117}}
+ \expandafter\def\csname simpleicon@iosicon\endcsname {\simpleiconsmapsix\symbol{118}}
+ \expandafter\def\csname simpleicon@iotaicon\endcsname {\simpleiconsmapsix\symbol{119}}
+ \expandafter\def\csname simpleicon@ipfsicon\endcsname {\simpleiconsmapsix\symbol{120}}
+ \expandafter\def\csname simpleicon@irisicon\endcsname {\simpleiconsmapsix\symbol{121}}
+ \expandafter\def\csname simpleicon@iroboticon\endcsname {\simpleiconsmapsix\symbol{122}}
+ \expandafter\def\csname simpleicon@isc2icon\endcsname {\simpleiconsmapsix\symbol{123}}
+ \expandafter\def\csname simpleicon@issuuicon\endcsname {\simpleiconsmapsix\symbol{124}}
+ \expandafter\def\csname simpleicon@istioicon\endcsname {\simpleiconsmapsix\symbol{125}}
+ \expandafter\def\csname simpleicon@itchdotioicon\endcsname {\simpleiconsmapsix\symbol{126}}
+ \expandafter\def\csname simpleicon@iterm2icon\endcsname {\simpleiconsmapsix\symbol{127}}
+ \expandafter\def\csname simpleicon@itunesicon\endcsname {\simpleiconsmapsix\symbol{128}}
+ \expandafter\def\csname simpleicon@itvxicon\endcsname {\simpleiconsmapsix\symbol{129}}
+ \expandafter\def\csname simpleicon@ivecoicon\endcsname {\simpleiconsmapsix\symbol{130}}
+ \expandafter\def\csname simpleicon@jabbericon\endcsname {\simpleiconsmapsix\symbol{131}}
+ \expandafter\def\csname simpleicon@jaegericon\endcsname {\simpleiconsmapsix\symbol{132}}
+ \expandafter\def\csname simpleicon@jaguaricon\endcsname {\simpleiconsmapsix\symbol{133}}
+ \expandafter\def\csname simpleicon@jamboardicon\endcsname {\simpleiconsmapsix\symbol{134}}
+ \expandafter\def\csname simpleicon@jamesonicon\endcsname {\simpleiconsmapsix\symbol{135}}
+ \expandafter\def\csname simpleicon@jamstackicon\endcsname {\simpleiconsmapsix\symbol{136}}
+ \expandafter\def\csname simpleicon@japanairlinesicon\endcsname {\simpleiconsmapsix\symbol{137}}
+ \expandafter\def\csname simpleicon@jasmineicon\endcsname {\simpleiconsmapsix\symbol{138}}
+ \expandafter\def\csname simpleicon@javascripticon\endcsname {\simpleiconsmapsix\symbol{139}}
+ \expandafter\def\csname simpleicon@jblicon\endcsname {\simpleiconsmapsix\symbol{140}}
+ \expandafter\def\csname simpleicon@jcbicon\endcsname {\simpleiconsmapsix\symbol{141}}
+ \expandafter\def\csname simpleicon@jeepicon\endcsname {\simpleiconsmapsix\symbol{142}}
+ \expandafter\def\csname simpleicon@jekyllicon\endcsname {\simpleiconsmapsix\symbol{143}}
+ \expandafter\def\csname simpleicon@jellyfinicon\endcsname {\simpleiconsmapsix\symbol{144}}
+ \expandafter\def\csname simpleicon@jenkinsicon\endcsname {\simpleiconsmapsix\symbol{145}}
+ \expandafter\def\csname simpleicon@jesticon\endcsname {\simpleiconsmapsix\symbol{146}}
+ \expandafter\def\csname simpleicon@jeticon\endcsname {\simpleiconsmapsix\symbol{147}}
+ \expandafter\def\csname simpleicon@jetblueicon\endcsname {\simpleiconsmapsix\symbol{148}}
+ \expandafter\def\csname simpleicon@jetbrainsicon\endcsname {\simpleiconsmapsix\symbol{149}}
+ \expandafter\def\csname simpleicon@jetpackcomposeicon\endcsname {\simpleiconsmapsix\symbol{150}}
+ \expandafter\def\csname simpleicon@jfrogicon\endcsname {\simpleiconsmapsix\symbol{151}}
+ \expandafter\def\csname simpleicon@jfrogpipelinesicon\endcsname {\simpleiconsmapsix\symbol{152}}
+ \expandafter\def\csname simpleicon@jhipstericon\endcsname {\simpleiconsmapsix\symbol{153}}
+ \expandafter\def\csname simpleicon@jinjaicon\endcsname {\simpleiconsmapsix\symbol{154}}
+ \expandafter\def\csname simpleicon@jioicon\endcsname {\simpleiconsmapsix\symbol{155}}
+ \expandafter\def\csname simpleicon@jiraicon\endcsname {\simpleiconsmapsix\symbol{156}}
+ \expandafter\def\csname simpleicon@jirasoftwareicon\endcsname {\simpleiconsmapsix\symbol{157}}
+ \expandafter\def\csname simpleicon@jitpackicon\endcsname {\simpleiconsmapsix\symbol{158}}
+ \expandafter\def\csname simpleicon@jitsiicon\endcsname {\simpleiconsmapsix\symbol{159}}
+ \expandafter\def\csname simpleicon@johndeereicon\endcsname {\simpleiconsmapsix\symbol{160}}
+ \expandafter\def\csname simpleicon@joomlaicon\endcsname {\simpleiconsmapsix\symbol{161}}
+ \expandafter\def\csname simpleicon@joplinicon\endcsname {\simpleiconsmapsix\symbol{162}}
+ \expandafter\def\csname simpleicon@jordanicon\endcsname {\simpleiconsmapsix\symbol{163}}
+ \expandafter\def\csname simpleicon@jouavicon\endcsname {\simpleiconsmapsix\symbol{164}}
+ \expandafter\def\csname simpleicon@jovianicon\endcsname {\simpleiconsmapsix\symbol{165}}
+ \expandafter\def\csname simpleicon@jpegicon\endcsname {\simpleiconsmapsix\symbol{166}}
+ \expandafter\def\csname simpleicon@jqueryicon\endcsname {\simpleiconsmapsix\symbol{167}}
+ \expandafter\def\csname simpleicon@jrgroupicon\endcsname {\simpleiconsmapsix\symbol{168}}
+ \expandafter\def\csname simpleicon@jsdelivricon\endcsname {\simpleiconsmapsix\symbol{169}}
+ \expandafter\def\csname simpleicon@jsfiddleicon\endcsname {\simpleiconsmapsix\symbol{170}}
+ \expandafter\def\csname simpleicon@jsonicon\endcsname {\simpleiconsmapsix\symbol{171}}
+ \expandafter\def\csname simpleicon@jsonwebtokensicon\endcsname {\simpleiconsmapsix\symbol{172}}
+ \expandafter\def\csname simpleicon@jsricon\endcsname {\simpleiconsmapsix\symbol{173}}
+ \expandafter\def\csname simpleicon@jssicon\endcsname {\simpleiconsmapsix\symbol{174}}
+ \expandafter\def\csname simpleicon@juceicon\endcsname {\simpleiconsmapsix\symbol{175}}
+ \expandafter\def\csname simpleicon@juejinicon\endcsname {\simpleiconsmapsix\symbol{176}}
+ \expandafter\def\csname simpleicon@jukeicon\endcsname {\simpleiconsmapsix\symbol{177}}
+ \expandafter\def\csname simpleicon@juliaicon\endcsname {\simpleiconsmapsix\symbol{178}}
+ \expandafter\def\csname simpleicon@junipernetworksicon\endcsname {\simpleiconsmapsix\symbol{179}}
+ \expandafter\def\csname simpleicon@junit5icon\endcsname {\simpleiconsmapsix\symbol{180}}
+ \expandafter\def\csname simpleicon@jupytericon\endcsname {\simpleiconsmapsix\symbol{181}}
+ \expandafter\def\csname simpleicon@justeaticon\endcsname {\simpleiconsmapsix\symbol{182}}
+ \expandafter\def\csname simpleicon@justgivingicon\endcsname {\simpleiconsmapsix\symbol{183}}
+ \expandafter\def\csname simpleicon@k3sicon\endcsname {\simpleiconsmapsix\symbol{184}}
+ \expandafter\def\csname simpleicon@k6icon\endcsname {\simpleiconsmapsix\symbol{185}}
+ \expandafter\def\csname simpleicon@kaggleicon\endcsname {\simpleiconsmapsix\symbol{186}}
+ \expandafter\def\csname simpleicon@kagiicon\endcsname {\simpleiconsmapsix\symbol{187}}
+ \expandafter\def\csname simpleicon@kahooticon\endcsname {\simpleiconsmapsix\symbol{188}}
+ \expandafter\def\csname simpleicon@kaiosicon\endcsname {\simpleiconsmapsix\symbol{189}}
+ \expandafter\def\csname simpleicon@kakaoicon\endcsname {\simpleiconsmapsix\symbol{190}}
+ \expandafter\def\csname simpleicon@kakaotalkicon\endcsname {\simpleiconsmapsix\symbol{191}}
+ \expandafter\def\csname simpleicon@kalilinuxicon\endcsname {\simpleiconsmapsix\symbol{192}}
+ \expandafter\def\csname simpleicon@kamailioicon\endcsname {\simpleiconsmapsix\symbol{193}}
+ \expandafter\def\csname simpleicon@kanikoicon\endcsname {\simpleiconsmapsix\symbol{194}}
+ \expandafter\def\csname simpleicon@karlsruherverkehrsverbundicon\endcsname {\simpleiconsmapsix\symbol{195}}
+ \expandafter\def\csname simpleicon@kasasmarticon\endcsname {\simpleiconsmapsix\symbol{196}}
+ \expandafter\def\csname simpleicon@kashflowicon\endcsname {\simpleiconsmapsix\symbol{197}}
+ \expandafter\def\csname simpleicon@kasperskyicon\endcsname {\simpleiconsmapsix\symbol{198}}
+ \expandafter\def\csname simpleicon@katanaicon\endcsname {\simpleiconsmapsix\symbol{199}}
+ \expandafter\def\csname simpleicon@kauflandicon\endcsname {\simpleiconsmapsix\symbol{200}}
+ \expandafter\def\csname simpleicon@kdeicon\endcsname {\simpleiconsmapsix\symbol{201}}
+ \expandafter\def\csname simpleicon@kdeplasmaicon\endcsname {\simpleiconsmapsix\symbol{202}}
+ \expandafter\def\csname simpleicon@kdenliveicon\endcsname {\simpleiconsmapsix\symbol{203}}
+ \expandafter\def\csname simpleicon@kedroicon\endcsname {\simpleiconsmapsix\symbol{204}}
+ \expandafter\def\csname simpleicon@keeneticicon\endcsname {\simpleiconsmapsix\symbol{205}}
+ \expandafter\def\csname simpleicon@keepachangelogicon\endcsname {\simpleiconsmapsix\symbol{206}}
+ \expandafter\def\csname simpleicon@keepassxcicon\endcsname {\simpleiconsmapsix\symbol{207}}
+ \expandafter\def\csname simpleicon@keepericon\endcsname {\simpleiconsmapsix\symbol{208}}
+ \expandafter\def\csname simpleicon@keewebicon\endcsname {\simpleiconsmapsix\symbol{209}}
+ \expandafter\def\csname simpleicon@kenticoicon\endcsname {\simpleiconsmapsix\symbol{210}}
+ \expandafter\def\csname simpleicon@kerasicon\endcsname {\simpleiconsmapsix\symbol{211}}
+ \expandafter\def\csname simpleicon@keybaseicon\endcsname {\simpleiconsmapsix\symbol{212}}
+ \expandafter\def\csname simpleicon@keycdnicon\endcsname {\simpleiconsmapsix\symbol{213}}
+ \expandafter\def\csname simpleicon@keycloakicon\endcsname {\simpleiconsmapsix\symbol{214}}
+ \expandafter\def\csname simpleicon@keystoneicon\endcsname {\simpleiconsmapsix\symbol{215}}
+ \expandafter\def\csname simpleicon@kfcicon\endcsname {\simpleiconsmapsix\symbol{216}}
+ \expandafter\def\csname simpleicon@khanacademyicon\endcsname {\simpleiconsmapsix\symbol{217}}
+ \expandafter\def\csname simpleicon@khronosgroupicon\endcsname {\simpleiconsmapsix\symbol{218}}
+ \expandafter\def\csname simpleicon@kiaicon\endcsname {\simpleiconsmapsix\symbol{219}}
+ \expandafter\def\csname simpleicon@kibanaicon\endcsname {\simpleiconsmapsix\symbol{220}}
+ \expandafter\def\csname simpleicon@kicadicon\endcsname {\simpleiconsmapsix\symbol{221}}
+ \expandafter\def\csname simpleicon@kickicon\endcsname {\simpleiconsmapsix\symbol{222}}
+ \expandafter\def\csname simpleicon@kickstartericon\endcsname {\simpleiconsmapsix\symbol{223}}
+ \expandafter\def\csname simpleicon@kikicon\endcsname {\simpleiconsmapsix\symbol{224}}
+ \expandafter\def\csname simpleicon@kingstontechnologyicon\endcsname {\simpleiconsmapsix\symbol{225}}
+ \expandafter\def\csname simpleicon@kinopoiskicon\endcsname {\simpleiconsmapsix\symbol{226}}
+ \expandafter\def\csname simpleicon@kinstaicon\endcsname {\simpleiconsmapsix\symbol{227}}
+ \expandafter\def\csname simpleicon@kirbyicon\endcsname {\simpleiconsmapsix\symbol{228}}
+ \expandafter\def\csname simpleicon@kiticon\endcsname {\simpleiconsmapsix\symbol{229}}
+ \expandafter\def\csname simpleicon@kitsuicon\endcsname {\simpleiconsmapsix\symbol{230}}
+ \expandafter\def\csname simpleicon@klarnaicon\endcsname {\simpleiconsmapsix\symbol{231}}
+ \expandafter\def\csname simpleicon@kleinanzeigenicon\endcsname {\simpleiconsmapsix\symbol{232}}
+ \expandafter\def\csname simpleicon@klmicon\endcsname {\simpleiconsmapsix\symbol{233}}
+ \expandafter\def\csname simpleicon@klookicon\endcsname {\simpleiconsmapsix\symbol{234}}
+ \expandafter\def\csname simpleicon@knativeicon\endcsname {\simpleiconsmapsix\symbol{235}}
+ \expandafter\def\csname simpleicon@knexdotjsicon\endcsname {\simpleiconsmapsix\symbol{236}}
+ \expandafter\def\csname simpleicon@knimeicon\endcsname {\simpleiconsmapsix\symbol{237}}
+ \expandafter\def\csname simpleicon@knipicon\endcsname {\simpleiconsmapsix\symbol{238}}
+ \expandafter\def\csname simpleicon@knowledgebaseicon\endcsname {\simpleiconsmapsix\symbol{239}}
+ \expandafter\def\csname simpleicon@knownicon\endcsname {\simpleiconsmapsix\symbol{240}}
+ \expandafter\def\csname simpleicon@kofiicon\endcsname {\simpleiconsmapsix\symbol{241}}
+ \expandafter\def\csname simpleicon@koaicon\endcsname {\simpleiconsmapsix\symbol{242}}
+ \expandafter\def\csname simpleicon@kocicon\endcsname {\simpleiconsmapsix\symbol{243}}
+ \expandafter\def\csname simpleicon@kodakicon\endcsname {\simpleiconsmapsix\symbol{244}}
+ \expandafter\def\csname simpleicon@kodiicon\endcsname {\simpleiconsmapsix\symbol{245}}
+ \expandafter\def\csname simpleicon@koenigseggicon\endcsname {\simpleiconsmapsix\symbol{246}}
+ \expandafter\def\csname simpleicon@kofaxicon\endcsname {\simpleiconsmapsix\symbol{247}}
+ \expandafter\def\csname simpleicon@komooticon\endcsname {\simpleiconsmapsix\symbol{248}}
+ \expandafter\def\csname simpleicon@konamiicon\endcsname {\simpleiconsmapsix\symbol{249}}
+ \expandafter\def\csname simpleicon@kongicon\endcsname {\simpleiconsmapsix\symbol{250}}
+ \expandafter\def\csname simpleicon@kongregateicon\endcsname {\simpleiconsmapsix\symbol{251}}
+ \expandafter\def\csname simpleicon@konvaicon\endcsname {\simpleiconsmapsix\symbol{252}}
+ \expandafter\def\csname simpleicon@kotlinicon\endcsname {\simpleiconsmapsix\symbol{253}}
+ \expandafter\def\csname simpleicon@koyebicon\endcsname {\simpleiconsmapsix\symbol{254}}
+ \expandafter\def\csname simpleicon@kritaicon\endcsname {\simpleiconsmapsix\symbol{255}}
+ \expandafter\def\csname simpleicon@ktmicon\endcsname {\simpleiconsmapseven\symbol{0}}
+ \expandafter\def\csname simpleicon@ktoricon\endcsname {\simpleiconsmapseven\symbol{1}}
+ \expandafter\def\csname simpleicon@kuaishouicon\endcsname {\simpleiconsmapseven\symbol{2}}
+ \expandafter\def\csname simpleicon@kubernetesicon\endcsname {\simpleiconsmapseven\symbol{3}}
+ \expandafter\def\csname simpleicon@kubuntuicon\endcsname {\simpleiconsmapseven\symbol{4}}
+ \expandafter\def\csname simpleicon@kucoinicon\endcsname {\simpleiconsmapseven\symbol{5}}
+ \expandafter\def\csname simpleicon@kueskiicon\endcsname {\simpleiconsmapseven\symbol{6}}
+ \expandafter\def\csname simpleicon@kumaicon\endcsname {\simpleiconsmapseven\symbol{7}}
+ \expandafter\def\csname simpleicon@kununuicon\endcsname {\simpleiconsmapseven\symbol{8}}
+ \expandafter\def\csname simpleicon@kuulaicon\endcsname {\simpleiconsmapseven\symbol{9}}
+ \expandafter\def\csname simpleicon@kxicon\endcsname {\simpleiconsmapseven\symbol{10}}
+ \expandafter\def\csname simpleicon@kyoceraicon\endcsname {\simpleiconsmapseven\symbol{11}}
+ \expandafter\def\csname simpleicon@lequipeicon\endcsname {\simpleiconsmapseven\symbol{12}}
+ \expandafter\def\csname simpleicon@labviewicon\endcsname {\simpleiconsmapseven\symbol{13}}
+ \expandafter\def\csname simpleicon@ladaicon\endcsname {\simpleiconsmapseven\symbol{14}}
+ \expandafter\def\csname simpleicon@lamborghiniicon\endcsname {\simpleiconsmapseven\symbol{15}}
+ \expandafter\def\csname simpleicon@landrovericon\endcsname {\simpleiconsmapseven\symbol{16}}
+ \expandafter\def\csname simpleicon@langchainicon\endcsname {\simpleiconsmapseven\symbol{17}}
+ \expandafter\def\csname simpleicon@langgraphicon\endcsname {\simpleiconsmapseven\symbol{18}}
+ \expandafter\def\csname simpleicon@languagetoolicon\endcsname {\simpleiconsmapseven\symbol{19}}
+ \expandafter\def\csname simpleicon@lapceicon\endcsname {\simpleiconsmapseven\symbol{20}}
+ \expandafter\def\csname simpleicon@laragonicon\endcsname {\simpleiconsmapseven\symbol{21}}
+ \expandafter\def\csname simpleicon@laravelicon\endcsname {\simpleiconsmapseven\symbol{22}}
+ \expandafter\def\csname simpleicon@laravelhorizonicon\endcsname {\simpleiconsmapseven\symbol{23}}
+ \expandafter\def\csname simpleicon@laravelnovaicon\endcsname {\simpleiconsmapseven\symbol{24}}
+ \expandafter\def\csname simpleicon@lastdotfmicon\endcsname {\simpleiconsmapseven\symbol{25}}
+ \expandafter\def\csname simpleicon@lastpassicon\endcsname {\simpleiconsmapseven\symbol{26}}
+ \expandafter\def\csname simpleicon@latexicon\endcsname {\simpleiconsmapseven\symbol{27}}
+ \expandafter\def\csname simpleicon@launchpadicon\endcsname {\simpleiconsmapseven\symbol{28}}
+ \expandafter\def\csname simpleicon@lazarusicon\endcsname {\simpleiconsmapseven\symbol{29}}
+ \expandafter\def\csname simpleicon@lazyvimicon\endcsname {\simpleiconsmapseven\symbol{30}}
+ \expandafter\def\csname simpleicon@lbryicon\endcsname {\simpleiconsmapseven\symbol{31}}
+ \expandafter\def\csname simpleicon@leaderpriceicon\endcsname {\simpleiconsmapseven\symbol{32}}
+ \expandafter\def\csname simpleicon@leafleticon\endcsname {\simpleiconsmapseven\symbol{33}}
+ \expandafter\def\csname simpleicon@leagueoflegendsicon\endcsname {\simpleiconsmapseven\symbol{34}}
+ \expandafter\def\csname simpleicon@leanpubicon\endcsname {\simpleiconsmapseven\symbol{35}}
+ \expandafter\def\csname simpleicon@leetcodeicon\endcsname {\simpleiconsmapseven\symbol{36}}
+ \expandafter\def\csname simpleicon@lefthookicon\endcsname {\simpleiconsmapseven\symbol{37}}
+ \expandafter\def\csname simpleicon@legacygamesicon\endcsname {\simpleiconsmapseven\symbol{38}}
+ \expandafter\def\csname simpleicon@leicaicon\endcsname {\simpleiconsmapseven\symbol{39}}
+ \expandafter\def\csname simpleicon@lemmyicon\endcsname {\simpleiconsmapseven\symbol{40}}
+ \expandafter\def\csname simpleicon@lemonsqueezyicon\endcsname {\simpleiconsmapseven\symbol{41}}
+ \expandafter\def\csname simpleicon@lenovoicon\endcsname {\simpleiconsmapseven\symbol{42}}
+ \expandafter\def\csname simpleicon@lensicon\endcsname {\simpleiconsmapseven\symbol{43}}
+ \expandafter\def\csname simpleicon@leptosicon\endcsname {\simpleiconsmapseven\symbol{44}}
+ \expandafter\def\csname simpleicon@lernaicon\endcsname {\simpleiconsmapseven\symbol{45}}
+ \expandafter\def\csname simpleicon@leroymerlinicon\endcsname {\simpleiconsmapseven\symbol{46}}
+ \expandafter\def\csname simpleicon@leslibrairesicon\endcsname {\simpleiconsmapseven\symbol{47}}
+ \expandafter\def\csname simpleicon@lessicon\endcsname {\simpleiconsmapseven\symbol{48}}
+ \expandafter\def\csname simpleicon@letsencrypticon\endcsname {\simpleiconsmapseven\symbol{49}}
+ \expandafter\def\csname simpleicon@letterboxdicon\endcsname {\simpleiconsmapseven\symbol{50}}
+ \expandafter\def\csname simpleicon@levelsdotfyiicon\endcsname {\simpleiconsmapseven\symbol{51}}
+ \expandafter\def\csname simpleicon@lgicon\endcsname {\simpleiconsmapseven\symbol{52}}
+ \expandafter\def\csname simpleicon@liningicon\endcsname {\simpleiconsmapseven\symbol{53}}
+ \expandafter\def\csname simpleicon@liberadotchaticon\endcsname {\simpleiconsmapseven\symbol{54}}
+ \expandafter\def\csname simpleicon@liberapayicon\endcsname {\simpleiconsmapseven\symbol{55}}
+ \expandafter\def\csname simpleicon@librariesdotioicon\endcsname {\simpleiconsmapseven\symbol{56}}
+ \expandafter\def\csname simpleicon@librarythingicon\endcsname {\simpleiconsmapseven\symbol{57}}
+ \expandafter\def\csname simpleicon@libreofficeicon\endcsname {\simpleiconsmapseven\symbol{58}}
+ \expandafter\def\csname simpleicon@libreofficebaseicon\endcsname {\simpleiconsmapseven\symbol{59}}
+ \expandafter\def\csname simpleicon@libreofficecalcicon\endcsname {\simpleiconsmapseven\symbol{60}}
+ \expandafter\def\csname simpleicon@libreofficedrawicon\endcsname {\simpleiconsmapseven\symbol{61}}
+ \expandafter\def\csname simpleicon@libreofficeimpressicon\endcsname {\simpleiconsmapseven\symbol{62}}
+ \expandafter\def\csname simpleicon@libreofficemathicon\endcsname {\simpleiconsmapseven\symbol{63}}
+ \expandafter\def\csname simpleicon@libreofficewritericon\endcsname {\simpleiconsmapseven\symbol{64}}
+ \expandafter\def\csname simpleicon@libretranslateicon\endcsname {\simpleiconsmapseven\symbol{65}}
+ \expandafter\def\csname simpleicon@libretubeicon\endcsname {\simpleiconsmapseven\symbol{66}}
+ \expandafter\def\csname simpleicon@librewolficon\endcsname {\simpleiconsmapseven\symbol{67}}
+ \expandafter\def\csname simpleicon@libuvicon\endcsname {\simpleiconsmapseven\symbol{68}}
+ \expandafter\def\csname simpleicon@lichessicon\endcsname {\simpleiconsmapseven\symbol{69}}
+ \expandafter\def\csname simpleicon@lidlicon\endcsname {\simpleiconsmapseven\symbol{70}}
+ \expandafter\def\csname simpleicon@lifxicon\endcsname {\simpleiconsmapseven\symbol{71}}
+ \expandafter\def\csname simpleicon@lightburnicon\endcsname {\simpleiconsmapseven\symbol{72}}
+ \expandafter\def\csname simpleicon@lighthouseicon\endcsname {\simpleiconsmapseven\symbol{73}}
+ \expandafter\def\csname simpleicon@lightningicon\endcsname {\simpleiconsmapseven\symbol{74}}
+ \expandafter\def\csname simpleicon@limesurveyicon\endcsname {\simpleiconsmapseven\symbol{75}}
+ \expandafter\def\csname simpleicon@lineicon\endcsname {\simpleiconsmapseven\symbol{76}}
+ \expandafter\def\csname simpleicon@lineageosicon\endcsname {\simpleiconsmapseven\symbol{77}}
+ \expandafter\def\csname simpleicon@linearicon\endcsname {\simpleiconsmapseven\symbol{78}}
+ \expandafter\def\csname simpleicon@linkerdicon\endcsname {\simpleiconsmapseven\symbol{79}}
+ \expandafter\def\csname simpleicon@linkfireicon\endcsname {\simpleiconsmapseven\symbol{80}}
+ \expandafter\def\csname simpleicon@linksysicon\endcsname {\simpleiconsmapseven\symbol{81}}
+ \expandafter\def\csname simpleicon@linktreeicon\endcsname {\simpleiconsmapseven\symbol{82}}
+ \expandafter\def\csname simpleicon@linphoneicon\endcsname {\simpleiconsmapseven\symbol{83}}
+ \expandafter\def\csname simpleicon@lintcodeicon\endcsname {\simpleiconsmapseven\symbol{84}}
+ \expandafter\def\csname simpleicon@linuxicon\endcsname {\simpleiconsmapseven\symbol{85}}
+ \expandafter\def\csname simpleicon@linuxcontainersicon\endcsname {\simpleiconsmapseven\symbol{86}}
+ \expandafter\def\csname simpleicon@linuxfoundationicon\endcsname {\simpleiconsmapseven\symbol{87}}
+ \expandafter\def\csname simpleicon@linuxminticon\endcsname {\simpleiconsmapseven\symbol{88}}
+ \expandafter\def\csname simpleicon@linuxprofessionalinstituteicon\endcsname {\simpleiconsmapseven\symbol{89}}
+ \expandafter\def\csname simpleicon@linuxservericon\endcsname {\simpleiconsmapseven\symbol{90}}
+ \expandafter\def\csname simpleicon@lionairicon\endcsname {\simpleiconsmapseven\symbol{91}}
+ \expandafter\def\csname simpleicon@liquibaseicon\endcsname {\simpleiconsmapseven\symbol{92}}
+ \expandafter\def\csname simpleicon@listmonkicon\endcsname {\simpleiconsmapseven\symbol{93}}
+ \expandafter\def\csname simpleicon@liticon\endcsname {\simpleiconsmapseven\symbol{94}}
+ \expandafter\def\csname simpleicon@litecoinicon\endcsname {\simpleiconsmapseven\symbol{95}}
+ \expandafter\def\csname simpleicon@literalicon\endcsname {\simpleiconsmapseven\symbol{96}}
+ \expandafter\def\csname simpleicon@litiengineicon\endcsname {\simpleiconsmapseven\symbol{97}}
+ \expandafter\def\csname simpleicon@livechaticon\endcsname {\simpleiconsmapseven\symbol{98}}
+ \expandafter\def\csname simpleicon@livejournalicon\endcsname {\simpleiconsmapseven\symbol{99}}
+ \expandafter\def\csname simpleicon@livewireicon\endcsname {\simpleiconsmapseven\symbol{100}}
+ \expandafter\def\csname simpleicon@llvmicon\endcsname {\simpleiconsmapseven\symbol{101}}
+ \expandafter\def\csname simpleicon@lmmsicon\endcsname {\simpleiconsmapseven\symbol{102}}
+ \expandafter\def\csname simpleicon@lobstersicon\endcsname {\simpleiconsmapseven\symbol{103}}
+ \expandafter\def\csname simpleicon@localicon\endcsname {\simpleiconsmapseven\symbol{104}}
+ \expandafter\def\csname simpleicon@lodashicon\endcsname {\simpleiconsmapseven\symbol{105}}
+ \expandafter\def\csname simpleicon@logitechicon\endcsname {\simpleiconsmapseven\symbol{106}}
+ \expandafter\def\csname simpleicon@logitechgicon\endcsname {\simpleiconsmapseven\symbol{107}}
+ \expandafter\def\csname simpleicon@logmeinicon\endcsname {\simpleiconsmapseven\symbol{108}}
+ \expandafter\def\csname simpleicon@logseqicon\endcsname {\simpleiconsmapseven\symbol{109}}
+ \expandafter\def\csname simpleicon@logstashicon\endcsname {\simpleiconsmapseven\symbol{110}}
+ \expandafter\def\csname simpleicon@lookericon\endcsname {\simpleiconsmapseven\symbol{111}}
+ \expandafter\def\csname simpleicon@loomicon\endcsname {\simpleiconsmapseven\symbol{112}}
+ \expandafter\def\csname simpleicon@loopicon\endcsname {\simpleiconsmapseven\symbol{113}}
+ \expandafter\def\csname simpleicon@loopbackicon\endcsname {\simpleiconsmapseven\symbol{114}}
+ \expandafter\def\csname simpleicon@lootcrateicon\endcsname {\simpleiconsmapseven\symbol{115}}
+ \expandafter\def\csname simpleicon@lospecicon\endcsname {\simpleiconsmapseven\symbol{116}}
+ \expandafter\def\csname simpleicon@lotpolishairlinesicon\endcsname {\simpleiconsmapseven\symbol{117}}
+ \expandafter\def\csname simpleicon@ltspiceicon\endcsname {\simpleiconsmapseven\symbol{118}}
+ \expandafter\def\csname simpleicon@luaicon\endcsname {\simpleiconsmapseven\symbol{119}}
+ \expandafter\def\csname simpleicon@lubuntuicon\endcsname {\simpleiconsmapseven\symbol{120}}
+ \expandafter\def\csname simpleicon@luciaicon\endcsname {\simpleiconsmapseven\symbol{121}}
+ \expandafter\def\csname simpleicon@lucidicon\endcsname {\simpleiconsmapseven\symbol{122}}
+ \expandafter\def\csname simpleicon@lucideicon\endcsname {\simpleiconsmapseven\symbol{123}}
+ \expandafter\def\csname simpleicon@ludwigicon\endcsname {\simpleiconsmapseven\symbol{124}}
+ \expandafter\def\csname simpleicon@lufthansaicon\endcsname {\simpleiconsmapseven\symbol{125}}
+ \expandafter\def\csname simpleicon@lumenicon\endcsname {\simpleiconsmapseven\symbol{126}}
+ \expandafter\def\csname simpleicon@lunacyicon\endcsname {\simpleiconsmapseven\symbol{127}}
+ \expandafter\def\csname simpleicon@lutrisicon\endcsname {\simpleiconsmapseven\symbol{128}}
+ \expandafter\def\csname simpleicon@lvglicon\endcsname {\simpleiconsmapseven\symbol{129}}
+ \expandafter\def\csname simpleicon@lydiaicon\endcsname {\simpleiconsmapseven\symbol{130}}
+ \expandafter\def\csname simpleicon@lyfticon\endcsname {\simpleiconsmapseven\symbol{131}}
+ \expandafter\def\csname simpleicon@maasicon\endcsname {\simpleiconsmapseven\symbol{132}}
+ \expandafter\def\csname simpleicon@macosicon\endcsname {\simpleiconsmapseven\symbol{133}}
+ \expandafter\def\csname simpleicon@macpawicon\endcsname {\simpleiconsmapseven\symbol{134}}
+ \expandafter\def\csname simpleicon@macysicon\endcsname {\simpleiconsmapseven\symbol{135}}
+ \expandafter\def\csname simpleicon@magasinsuicon\endcsname {\simpleiconsmapseven\symbol{136}}
+ \expandafter\def\csname simpleicon@magicicon\endcsname {\simpleiconsmapseven\symbol{137}}
+ \expandafter\def\csname simpleicon@magiskicon\endcsname {\simpleiconsmapseven\symbol{138}}
+ \expandafter\def\csname simpleicon@mahindraicon\endcsname {\simpleiconsmapseven\symbol{139}}
+ \expandafter\def\csname simpleicon@maildotcomicon\endcsname {\simpleiconsmapseven\symbol{140}}
+ \expandafter\def\csname simpleicon@maildotruicon\endcsname {\simpleiconsmapseven\symbol{141}}
+ \expandafter\def\csname simpleicon@mailboxdotorgicon\endcsname {\simpleiconsmapseven\symbol{142}}
+ \expandafter\def\csname simpleicon@mailchimpicon\endcsname {\simpleiconsmapseven\symbol{143}}
+ \expandafter\def\csname simpleicon@mailgunicon\endcsname {\simpleiconsmapseven\symbol{144}}
+ \expandafter\def\csname simpleicon@mailtrapicon\endcsname {\simpleiconsmapseven\symbol{145}}
+ \expandafter\def\csname simpleicon@mainwpicon\endcsname {\simpleiconsmapseven\symbol{146}}
+ \expandafter\def\csname simpleicon@majorleaguehackingicon\endcsname {\simpleiconsmapseven\symbol{147}}
+ \expandafter\def\csname simpleicon@makeicon\endcsname {\simpleiconsmapseven\symbol{148}}
+ \expandafter\def\csname simpleicon@makerboticon\endcsname {\simpleiconsmapseven\symbol{149}}
+ \expandafter\def\csname simpleicon@malticon\endcsname {\simpleiconsmapseven\symbol{150}}
+ \expandafter\def\csname simpleicon@malwarebytesicon\endcsname {\simpleiconsmapseven\symbol{151}}
+ \expandafter\def\csname simpleicon@mambauiicon\endcsname {\simpleiconsmapseven\symbol{152}}
+ \expandafter\def\csname simpleicon@mampicon\endcsname {\simpleiconsmapseven\symbol{153}}
+ \expandafter\def\csname simpleicon@manicon\endcsname {\simpleiconsmapseven\symbol{154}}
+ \expandafter\def\csname simpleicon@manageiqicon\endcsname {\simpleiconsmapseven\symbol{155}}
+ \expandafter\def\csname simpleicon@manjaroicon\endcsname {\simpleiconsmapseven\symbol{156}}
+ \expandafter\def\csname simpleicon@mantineicon\endcsname {\simpleiconsmapseven\symbol{157}}
+ \expandafter\def\csname simpleicon@mapboxicon\endcsname {\simpleiconsmapseven\symbol{158}}
+ \expandafter\def\csname simpleicon@mapillaryicon\endcsname {\simpleiconsmapseven\symbol{159}}
+ \expandafter\def\csname simpleicon@maplibreicon\endcsname {\simpleiconsmapseven\symbol{160}}
+ \expandafter\def\csname simpleicon@maptilericon\endcsname {\simpleiconsmapseven\symbol{161}}
+ \expandafter\def\csname simpleicon@mariadbicon\endcsname {\simpleiconsmapseven\symbol{162}}
+ \expandafter\def\csname simpleicon@mariadbfoundationicon\endcsname {\simpleiconsmapseven\symbol{163}}
+ \expandafter\def\csname simpleicon@markdownicon\endcsname {\simpleiconsmapseven\symbol{164}}
+ \expandafter\def\csname simpleicon@markoicon\endcsname {\simpleiconsmapseven\symbol{165}}
+ \expandafter\def\csname simpleicon@marriotticon\endcsname {\simpleiconsmapseven\symbol{166}}
+ \expandafter\def\csname simpleicon@marvelappicon\endcsname {\simpleiconsmapseven\symbol{167}}
+ \expandafter\def\csname simpleicon@maseratiicon\endcsname {\simpleiconsmapseven\symbol{168}}
+ \expandafter\def\csname simpleicon@mastercardicon\endcsname {\simpleiconsmapseven\symbol{169}}
+ \expandafter\def\csname simpleicon@mastercomfigicon\endcsname {\simpleiconsmapseven\symbol{170}}
+ \expandafter\def\csname simpleicon@mastodonicon\endcsname {\simpleiconsmapseven\symbol{171}}
+ \expandafter\def\csname simpleicon@materialdesignicon\endcsname {\simpleiconsmapseven\symbol{172}}
+ \expandafter\def\csname simpleicon@materialdesigniconsicon\endcsname {\simpleiconsmapseven\symbol{173}}
+ \expandafter\def\csname simpleicon@materialformkdocsicon\endcsname {\simpleiconsmapseven\symbol{174}}
+ \expandafter\def\csname simpleicon@matillionicon\endcsname {\simpleiconsmapseven\symbol{175}}
+ \expandafter\def\csname simpleicon@matomoicon\endcsname {\simpleiconsmapseven\symbol{176}}
+ \expandafter\def\csname simpleicon@matrixicon\endcsname {\simpleiconsmapseven\symbol{177}}
+ \expandafter\def\csname simpleicon@matterdotjsicon\endcsname {\simpleiconsmapseven\symbol{178}}
+ \expandafter\def\csname simpleicon@mattermosticon\endcsname {\simpleiconsmapseven\symbol{179}}
+ \expandafter\def\csname simpleicon@matterneticon\endcsname {\simpleiconsmapseven\symbol{180}}
+ \expandafter\def\csname simpleicon@mauticicon\endcsname {\simpleiconsmapseven\symbol{181}}
+ \expandafter\def\csname simpleicon@maxicon\endcsname {\simpleiconsmapseven\symbol{182}}
+ \expandafter\def\csname simpleicon@maxplanckgesellschafticon\endcsname {\simpleiconsmapseven\symbol{183}}
+ \expandafter\def\csname simpleicon@maytagicon\endcsname {\simpleiconsmapseven\symbol{184}}
+ \expandafter\def\csname simpleicon@mazdaicon\endcsname {\simpleiconsmapseven\symbol{185}}
+ \expandafter\def\csname simpleicon@mazeicon\endcsname {\simpleiconsmapseven\symbol{186}}
+ \expandafter\def\csname simpleicon@mcafeeicon\endcsname {\simpleiconsmapseven\symbol{187}}
+ \expandafter\def\csname simpleicon@mcdonaldsicon\endcsname {\simpleiconsmapseven\symbol{188}}
+ \expandafter\def\csname simpleicon@mclarenicon\endcsname {\simpleiconsmapseven\symbol{189}}
+ \expandafter\def\csname simpleicon@mdbookicon\endcsname {\simpleiconsmapseven\symbol{190}}
+ \expandafter\def\csname simpleicon@mdnwebdocsicon\endcsname {\simpleiconsmapseven\symbol{191}}
+ \expandafter\def\csname simpleicon@mdxicon\endcsname {\simpleiconsmapseven\symbol{192}}
+ \expandafter\def\csname simpleicon@mediafireicon\endcsname {\simpleiconsmapseven\symbol{193}}
+ \expandafter\def\csname simpleicon@mediamarkticon\endcsname {\simpleiconsmapseven\symbol{194}}
+ \expandafter\def\csname simpleicon@mediapipeicon\endcsname {\simpleiconsmapseven\symbol{195}}
+ \expandafter\def\csname simpleicon@mediatekicon\endcsname {\simpleiconsmapseven\symbol{196}}
+ \expandafter\def\csname simpleicon@medibangpainticon\endcsname {\simpleiconsmapseven\symbol{197}}
+ \expandafter\def\csname simpleicon@mediumicon\endcsname {\simpleiconsmapseven\symbol{198}}
+ \expandafter\def\csname simpleicon@medusaicon\endcsname {\simpleiconsmapseven\symbol{199}}
+ \expandafter\def\csname simpleicon@meetupicon\endcsname {\simpleiconsmapseven\symbol{200}}
+ \expandafter\def\csname simpleicon@megaicon\endcsname {\simpleiconsmapseven\symbol{201}}
+ \expandafter\def\csname simpleicon@meilisearchicon\endcsname {\simpleiconsmapseven\symbol{202}}
+ \expandafter\def\csname simpleicon@meituanicon\endcsname {\simpleiconsmapseven\symbol{203}}
+ \expandafter\def\csname simpleicon@meizuicon\endcsname {\simpleiconsmapseven\symbol{204}}
+ \expandafter\def\csname simpleicon@mendeleyicon\endcsname {\simpleiconsmapseven\symbol{205}}
+ \expandafter\def\csname simpleicon@mentorcruiseicon\endcsname {\simpleiconsmapseven\symbol{206}}
+ \expandafter\def\csname simpleicon@mercadopagoicon\endcsname {\simpleiconsmapseven\symbol{207}}
+ \expandafter\def\csname simpleicon@mercedesicon\endcsname {\simpleiconsmapseven\symbol{208}}
+ \expandafter\def\csname simpleicon@merckicon\endcsname {\simpleiconsmapseven\symbol{209}}
+ \expandafter\def\csname simpleicon@mercurialicon\endcsname {\simpleiconsmapseven\symbol{210}}
+ \expandafter\def\csname simpleicon@mermaidicon\endcsname {\simpleiconsmapseven\symbol{211}}
+ \expandafter\def\csname simpleicon@messengericon\endcsname {\simpleiconsmapseven\symbol{212}}
+ \expandafter\def\csname simpleicon@metaicon\endcsname {\simpleiconsmapseven\symbol{213}}
+ \expandafter\def\csname simpleicon@metabaseicon\endcsname {\simpleiconsmapseven\symbol{214}}
+ \expandafter\def\csname simpleicon@metacriticicon\endcsname {\simpleiconsmapseven\symbol{215}}
+ \expandafter\def\csname simpleicon@metafiltericon\endcsname {\simpleiconsmapseven\symbol{216}}
+ \expandafter\def\csname simpleicon@metasploiticon\endcsname {\simpleiconsmapseven\symbol{217}}
+ \expandafter\def\csname simpleicon@meteoricon\endcsname {\simpleiconsmapseven\symbol{218}}
+ \expandafter\def\csname simpleicon@metroicon\endcsname {\simpleiconsmapseven\symbol{219}}
+ \expandafter\def\csname simpleicon@metrodelaciudaddemexicoicon\endcsname {\simpleiconsmapseven\symbol{220}}
+ \expandafter\def\csname simpleicon@metrodemadridicon\endcsname {\simpleiconsmapseven\symbol{221}}
+ \expandafter\def\csname simpleicon@metrodeparisicon\endcsname {\simpleiconsmapseven\symbol{222}}
+ \expandafter\def\csname simpleicon@meweicon\endcsname {\simpleiconsmapseven\symbol{223}}
+ \expandafter\def\csname simpleicon@mgicon\endcsname {\simpleiconsmapseven\symbol{224}}
+ \expandafter\def\csname simpleicon@microeditoricon\endcsname {\simpleiconsmapseven\symbol{225}}
+ \expandafter\def\csname simpleicon@microbiticon\endcsname {\simpleiconsmapseven\symbol{226}}
+ \expandafter\def\csname simpleicon@microdotblogicon\endcsname {\simpleiconsmapseven\symbol{227}}
+ \expandafter\def\csname simpleicon@micropythonicon\endcsname {\simpleiconsmapseven\symbol{228}}
+ \expandafter\def\csname simpleicon@microstationicon\endcsname {\simpleiconsmapseven\symbol{229}}
+ \expandafter\def\csname simpleicon@microstrategyicon\endcsname {\simpleiconsmapseven\symbol{230}}
+ \expandafter\def\csname simpleicon@midiicon\endcsname {\simpleiconsmapseven\symbol{231}}
+ \expandafter\def\csname simpleicon@migaduicon\endcsname {\simpleiconsmapseven\symbol{232}}
+ \expandafter\def\csname simpleicon@mihoyoicon\endcsname {\simpleiconsmapseven\symbol{233}}
+ \expandafter\def\csname simpleicon@mikrotikicon\endcsname {\simpleiconsmapseven\symbol{234}}
+ \expandafter\def\csname simpleicon@milanoteicon\endcsname {\simpleiconsmapseven\symbol{235}}
+ \expandafter\def\csname simpleicon@milvusicon\endcsname {\simpleiconsmapseven\symbol{236}}
+ \expandafter\def\csname simpleicon@mindsicon\endcsname {\simpleiconsmapseven\symbol{237}}
+ \expandafter\def\csname simpleicon@minetesticon\endcsname {\simpleiconsmapseven\symbol{238}}
+ \expandafter\def\csname simpleicon@mingww64icon\endcsname {\simpleiconsmapseven\symbol{239}}
+ \expandafter\def\csname simpleicon@miniicon\endcsname {\simpleiconsmapseven\symbol{240}}
+ \expandafter\def\csname simpleicon@minioicon\endcsname {\simpleiconsmapseven\symbol{241}}
+ \expandafter\def\csname simpleicon@mintlifyicon\endcsname {\simpleiconsmapseven\symbol{242}}
+ \expandafter\def\csname simpleicon@minutemailericon\endcsname {\simpleiconsmapseven\symbol{243}}
+ \expandafter\def\csname simpleicon@mirahezeicon\endcsname {\simpleiconsmapseven\symbol{244}}
+ \expandafter\def\csname simpleicon@miroicon\endcsname {\simpleiconsmapseven\symbol{245}}
+ \expandafter\def\csname simpleicon@misskeyicon\endcsname {\simpleiconsmapseven\symbol{246}}
+ \expandafter\def\csname simpleicon@mitsubishiicon\endcsname {\simpleiconsmapseven\symbol{247}}
+ \expandafter\def\csname simpleicon@mixicon\endcsname {\simpleiconsmapseven\symbol{248}}
+ \expandafter\def\csname simpleicon@mixcloudicon\endcsname {\simpleiconsmapseven\symbol{249}}
+ \expandafter\def\csname simpleicon@mixpanelicon\endcsname {\simpleiconsmapseven\symbol{250}}
+ \expandafter\def\csname simpleicon@mlbicon\endcsname {\simpleiconsmapseven\symbol{251}}
+ \expandafter\def\csname simpleicon@mlflowicon\endcsname {\simpleiconsmapseven\symbol{252}}
+ \expandafter\def\csname simpleicon@mobxicon\endcsname {\simpleiconsmapseven\symbol{253}}
+ \expandafter\def\csname simpleicon@mobxstatetreeicon\endcsname {\simpleiconsmapseven\symbol{254}}
+ \expandafter\def\csname simpleicon@mochaicon\endcsname {\simpleiconsmapseven\symbol{255}}
+ \expandafter\def\csname simpleicon@mockserviceworkericon\endcsname {\simpleiconsmapeight\symbol{0}}
+ \expandafter\def\csname simpleicon@modalicon\endcsname {\simpleiconsmapeight\symbol{1}}
+ \expandafter\def\csname simpleicon@modinicon\endcsname {\simpleiconsmapeight\symbol{2}}
+ \expandafter\def\csname simpleicon@modrinthicon\endcsname {\simpleiconsmapeight\symbol{3}}
+ \expandafter\def\csname simpleicon@modxicon\endcsname {\simpleiconsmapeight\symbol{4}}
+ \expandafter\def\csname simpleicon@mojeekicon\endcsname {\simpleiconsmapeight\symbol{5}}
+ \expandafter\def\csname simpleicon@moleculericon\endcsname {\simpleiconsmapeight\symbol{6}}
+ \expandafter\def\csname simpleicon@momenteoicon\endcsname {\simpleiconsmapeight\symbol{7}}
+ \expandafter\def\csname simpleicon@moneroicon\endcsname {\simpleiconsmapeight\symbol{8}}
+ \expandafter\def\csname simpleicon@moneygramicon\endcsname {\simpleiconsmapeight\symbol{9}}
+ \expandafter\def\csname simpleicon@mongodbicon\endcsname {\simpleiconsmapeight\symbol{10}}
+ \expandafter\def\csname simpleicon@mongooseicon\endcsname {\simpleiconsmapeight\symbol{11}}
+ \expandafter\def\csname simpleicon@mongoosedotwsicon\endcsname {\simpleiconsmapeight\symbol{12}}
+ \expandafter\def\csname simpleicon@monicaicon\endcsname {\simpleiconsmapeight\symbol{13}}
+ \expandafter\def\csname simpleicon@monkeytieicon\endcsname {\simpleiconsmapeight\symbol{14}}
+ \expandafter\def\csname simpleicon@monkeytypeicon\endcsname {\simpleiconsmapeight\symbol{15}}
+ \expandafter\def\csname simpleicon@monogameicon\endcsname {\simpleiconsmapeight\symbol{16}}
+ \expandafter\def\csname simpleicon@monoprixicon\endcsname {\simpleiconsmapeight\symbol{17}}
+ \expandafter\def\csname simpleicon@monstericon\endcsname {\simpleiconsmapeight\symbol{18}}
+ \expandafter\def\csname simpleicon@monzoicon\endcsname {\simpleiconsmapeight\symbol{19}}
+ \expandafter\def\csname simpleicon@mooicon\endcsname {\simpleiconsmapeight\symbol{20}}
+ \expandafter\def\csname simpleicon@moodleicon\endcsname {\simpleiconsmapeight\symbol{21}}
+ \expandafter\def\csname simpleicon@moonrepoicon\endcsname {\simpleiconsmapeight\symbol{22}}
+ \expandafter\def\csname simpleicon@moqicon\endcsname {\simpleiconsmapeight\symbol{23}}
+ \expandafter\def\csname simpleicon@moqupsicon\endcsname {\simpleiconsmapeight\symbol{24}}
+ \expandafter\def\csname simpleicon@morrisonsicon\endcsname {\simpleiconsmapeight\symbol{25}}
+ \expandafter\def\csname simpleicon@moscowmetroicon\endcsname {\simpleiconsmapeight\symbol{26}}
+ \expandafter\def\csname simpleicon@motorolaicon\endcsname {\simpleiconsmapeight\symbol{27}}
+ \expandafter\def\csname simpleicon@movistaricon\endcsname {\simpleiconsmapeight\symbol{28}}
+ \expandafter\def\csname simpleicon@mozillaicon\endcsname {\simpleiconsmapeight\symbol{29}}
+ \expandafter\def\csname simpleicon@mpvicon\endcsname {\simpleiconsmapeight\symbol{30}}
+ \expandafter\def\csname simpleicon@mqtticon\endcsname {\simpleiconsmapeight\symbol{31}}
+ \expandafter\def\csname simpleicon@msiicon\endcsname {\simpleiconsmapeight\symbol{32}}
+ \expandafter\def\csname simpleicon@msibusinessicon\endcsname {\simpleiconsmapeight\symbol{33}}
+ \expandafter\def\csname simpleicon@mtaicon\endcsname {\simpleiconsmapeight\symbol{34}}
+ \expandafter\def\csname simpleicon@mtricon\endcsname {\simpleiconsmapeight\symbol{35}}
+ \expandafter\def\csname simpleicon@mubiicon\endcsname {\simpleiconsmapeight\symbol{36}}
+ \expandafter\def\csname simpleicon@muiicon\endcsname {\simpleiconsmapeight\symbol{37}}
+ \expandafter\def\csname simpleicon@mulesofticon\endcsname {\simpleiconsmapeight\symbol{38}}
+ \expandafter\def\csname simpleicon@mullericon\endcsname {\simpleiconsmapeight\symbol{39}}
+ \expandafter\def\csname simpleicon@mullvadicon\endcsname {\simpleiconsmapeight\symbol{40}}
+ \expandafter\def\csname simpleicon@multisimicon\endcsname {\simpleiconsmapeight\symbol{41}}
+ \expandafter\def\csname simpleicon@mumbleicon\endcsname {\simpleiconsmapeight\symbol{42}}
+ \expandafter\def\csname simpleicon@muoicon\endcsname {\simpleiconsmapeight\symbol{43}}
+ \expandafter\def\csname simpleicon@muralicon\endcsname {\simpleiconsmapeight\symbol{44}}
+ \expandafter\def\csname simpleicon@musescoreicon\endcsname {\simpleiconsmapeight\symbol{45}}
+ \expandafter\def\csname simpleicon@musicbrainzicon\endcsname {\simpleiconsmapeight\symbol{46}}
+ \expandafter\def\csname simpleicon@mxlinuxicon\endcsname {\simpleiconsmapeight\symbol{47}}
+ \expandafter\def\csname simpleicon@myanimelisticon\endcsname {\simpleiconsmapeight\symbol{48}}
+ \expandafter\def\csname simpleicon@mygeticon\endcsname {\simpleiconsmapeight\symbol{49}}
+ \expandafter\def\csname simpleicon@myobicon\endcsname {\simpleiconsmapeight\symbol{50}}
+ \expandafter\def\csname simpleicon@myspaceicon\endcsname {\simpleiconsmapeight\symbol{51}}
+ \expandafter\def\csname simpleicon@mysqlicon\endcsname {\simpleiconsmapeight\symbol{52}}
+ \expandafter\def\csname simpleicon@n26icon\endcsname {\simpleiconsmapeight\symbol{53}}
+ \expandafter\def\csname simpleicon@n8nicon\endcsname {\simpleiconsmapeight\symbol{54}}
+ \expandafter\def\csname simpleicon@namebaseicon\endcsname {\simpleiconsmapeight\symbol{55}}
+ \expandafter\def\csname simpleicon@namecheapicon\endcsname {\simpleiconsmapeight\symbol{56}}
+ \expandafter\def\csname simpleicon@namemcicon\endcsname {\simpleiconsmapeight\symbol{57}}
+ \expandafter\def\csname simpleicon@namesiloicon\endcsname {\simpleiconsmapeight\symbol{58}}
+ \expandafter\def\csname simpleicon@namuwikiicon\endcsname {\simpleiconsmapeight\symbol{59}}
+ \expandafter\def\csname simpleicon@nanoicon\endcsname {\simpleiconsmapeight\symbol{60}}
+ \expandafter\def\csname simpleicon@nanostoresicon\endcsname {\simpleiconsmapeight\symbol{61}}
+ \expandafter\def\csname simpleicon@napstericon\endcsname {\simpleiconsmapeight\symbol{62}}
+ \expandafter\def\csname simpleicon@nasaicon\endcsname {\simpleiconsmapeight\symbol{63}}
+ \expandafter\def\csname simpleicon@nationalgridicon\endcsname {\simpleiconsmapeight\symbol{64}}
+ \expandafter\def\csname simpleicon@nationalrailicon\endcsname {\simpleiconsmapeight\symbol{65}}
+ \expandafter\def\csname simpleicon@nativescripticon\endcsname {\simpleiconsmapeight\symbol{66}}
+ \expandafter\def\csname simpleicon@natsdotioicon\endcsname {\simpleiconsmapeight\symbol{67}}
+ \expandafter\def\csname simpleicon@navericon\endcsname {\simpleiconsmapeight\symbol{68}}
+ \expandafter\def\csname simpleicon@nbaicon\endcsname {\simpleiconsmapeight\symbol{69}}
+ \expandafter\def\csname simpleicon@nbbicon\endcsname {\simpleiconsmapeight\symbol{70}}
+ \expandafter\def\csname simpleicon@nbcicon\endcsname {\simpleiconsmapeight\symbol{71}}
+ \expandafter\def\csname simpleicon@ndricon\endcsname {\simpleiconsmapeight\symbol{72}}
+ \expandafter\def\csname simpleicon@nearicon\endcsname {\simpleiconsmapeight\symbol{73}}
+ \expandafter\def\csname simpleicon@nebulaicon\endcsname {\simpleiconsmapeight\symbol{74}}
+ \expandafter\def\csname simpleicon@necicon\endcsname {\simpleiconsmapeight\symbol{75}}
+ \expandafter\def\csname simpleicon@neo4jicon\endcsname {\simpleiconsmapeight\symbol{76}}
+ \expandafter\def\csname simpleicon@neovimicon\endcsname {\simpleiconsmapeight\symbol{77}}
+ \expandafter\def\csname simpleicon@neptuneicon\endcsname {\simpleiconsmapeight\symbol{78}}
+ \expandafter\def\csname simpleicon@nestjsicon\endcsname {\simpleiconsmapeight\symbol{79}}
+ \expandafter\def\csname simpleicon@netappicon\endcsname {\simpleiconsmapeight\symbol{80}}
+ \expandafter\def\csname simpleicon@netbsdicon\endcsname {\simpleiconsmapeight\symbol{81}}
+ \expandafter\def\csname simpleicon@netcupicon\endcsname {\simpleiconsmapeight\symbol{82}}
+ \expandafter\def\csname simpleicon@netdataicon\endcsname {\simpleiconsmapeight\symbol{83}}
+ \expandafter\def\csname simpleicon@neteasecloudmusicicon\endcsname {\simpleiconsmapeight\symbol{84}}
+ \expandafter\def\csname simpleicon@netflixicon\endcsname {\simpleiconsmapeight\symbol{85}}
+ \expandafter\def\csname simpleicon@netgearicon\endcsname {\simpleiconsmapeight\symbol{86}}
+ \expandafter\def\csname simpleicon@netlifyicon\endcsname {\simpleiconsmapeight\symbol{87}}
+ \expandafter\def\csname simpleicon@netteicon\endcsname {\simpleiconsmapeight\symbol{88}}
+ \expandafter\def\csname simpleicon@nettoicon\endcsname {\simpleiconsmapeight\symbol{89}}
+ \expandafter\def\csname simpleicon@neutralinojsicon\endcsname {\simpleiconsmapeight\symbol{90}}
+ \expandafter\def\csname simpleicon@newbalanceicon\endcsname {\simpleiconsmapeight\symbol{91}}
+ \expandafter\def\csname simpleicon@newjapanprowrestlingicon\endcsname {\simpleiconsmapeight\symbol{92}}
+ \expandafter\def\csname simpleicon@newrelicicon\endcsname {\simpleiconsmapeight\symbol{93}}
+ \expandafter\def\csname simpleicon@newyorktimesicon\endcsname {\simpleiconsmapeight\symbol{94}}
+ \expandafter\def\csname simpleicon@neweggicon\endcsname {\simpleiconsmapeight\symbol{95}}
+ \expandafter\def\csname simpleicon@nexonicon\endcsname {\simpleiconsmapeight\symbol{96}}
+ \expandafter\def\csname simpleicon@nextdotjsicon\endcsname {\simpleiconsmapeight\symbol{97}}
+ \expandafter\def\csname simpleicon@nextbilliondotaiicon\endcsname {\simpleiconsmapeight\symbol{98}}
+ \expandafter\def\csname simpleicon@nextcloudicon\endcsname {\simpleiconsmapeight\symbol{99}}
+ \expandafter\def\csname simpleicon@nextdnsicon\endcsname {\simpleiconsmapeight\symbol{100}}
+ \expandafter\def\csname simpleicon@nextdooricon\endcsname {\simpleiconsmapeight\symbol{101}}
+ \expandafter\def\csname simpleicon@nextflowicon\endcsname {\simpleiconsmapeight\symbol{102}}
+ \expandafter\def\csname simpleicon@nextraicon\endcsname {\simpleiconsmapeight\symbol{103}}
+ \expandafter\def\csname simpleicon@nextuiicon\endcsname {\simpleiconsmapeight\symbol{104}}
+ \expandafter\def\csname simpleicon@nexusmodsicon\endcsname {\simpleiconsmapeight\symbol{105}}
+ \expandafter\def\csname simpleicon@nfcoreicon\endcsname {\simpleiconsmapeight\symbol{106}}
+ \expandafter\def\csname simpleicon@nfcicon\endcsname {\simpleiconsmapeight\symbol{107}}
+ \expandafter\def\csname simpleicon@nginxicon\endcsname {\simpleiconsmapeight\symbol{108}}
+ \expandafter\def\csname simpleicon@nginxproxymanagericon\endcsname {\simpleiconsmapeight\symbol{109}}
+ \expandafter\def\csname simpleicon@ngrokicon\endcsname {\simpleiconsmapeight\symbol{110}}
+ \expandafter\def\csname simpleicon@ngrxicon\endcsname {\simpleiconsmapeight\symbol{111}}
+ \expandafter\def\csname simpleicon@nhlicon\endcsname {\simpleiconsmapeight\symbol{112}}
+ \expandafter\def\csname simpleicon@nicehashicon\endcsname {\simpleiconsmapeight\symbol{113}}
+ \expandafter\def\csname simpleicon@niconicoicon\endcsname {\simpleiconsmapeight\symbol{114}}
+ \expandafter\def\csname simpleicon@nikeicon\endcsname {\simpleiconsmapeight\symbol{115}}
+ \expandafter\def\csname simpleicon@nikonicon\endcsname {\simpleiconsmapeight\symbol{116}}
+ \expandafter\def\csname simpleicon@nimicon\endcsname {\simpleiconsmapeight\symbol{117}}
+ \expandafter\def\csname simpleicon@nissanicon\endcsname {\simpleiconsmapeight\symbol{118}}
+ \expandafter\def\csname simpleicon@nixosicon\endcsname {\simpleiconsmapeight\symbol{119}}
+ \expandafter\def\csname simpleicon@noderedicon\endcsname {\simpleiconsmapeight\symbol{120}}
+ \expandafter\def\csname simpleicon@nodedotjsicon\endcsname {\simpleiconsmapeight\symbol{121}}
+ \expandafter\def\csname simpleicon@nodemonicon\endcsname {\simpleiconsmapeight\symbol{122}}
+ \expandafter\def\csname simpleicon@nokiaicon\endcsname {\simpleiconsmapeight\symbol{123}}
+ \expandafter\def\csname simpleicon@nomadicon\endcsname {\simpleiconsmapeight\symbol{124}}
+ \expandafter\def\csname simpleicon@norcoicon\endcsname {\simpleiconsmapeight\symbol{125}}
+ \expandafter\def\csname simpleicon@nordicsemiconductoricon\endcsname {\simpleiconsmapeight\symbol{126}}
+ \expandafter\def\csname simpleicon@nordvpnicon\endcsname {\simpleiconsmapeight\symbol{127}}
+ \expandafter\def\csname simpleicon@normalizedotcssicon\endcsname {\simpleiconsmapeight\symbol{128}}
+ \expandafter\def\csname simpleicon@nortonicon\endcsname {\simpleiconsmapeight\symbol{129}}
+ \expandafter\def\csname simpleicon@norwegianicon\endcsname {\simpleiconsmapeight\symbol{130}}
+ \expandafter\def\csname simpleicon@notepadplusplusicon\endcsname {\simpleiconsmapeight\symbol{131}}
+ \expandafter\def\csname simpleicon@notionicon\endcsname {\simpleiconsmapeight\symbol{132}}
+ \expandafter\def\csname simpleicon@notisticon\endcsname {\simpleiconsmapeight\symbol{133}}
+ \expandafter\def\csname simpleicon@nounprojecticon\endcsname {\simpleiconsmapeight\symbol{134}}
+ \expandafter\def\csname simpleicon@novuicon\endcsname {\simpleiconsmapeight\symbol{135}}
+ \expandafter\def\csname simpleicon@nowicon\endcsname {\simpleiconsmapeight\symbol{136}}
+ \expandafter\def\csname simpleicon@npmicon\endcsname {\simpleiconsmapeight\symbol{137}}
+ \expandafter\def\csname simpleicon@nrwlicon\endcsname {\simpleiconsmapeight\symbol{138}}
+ \expandafter\def\csname simpleicon@nsisicon\endcsname {\simpleiconsmapeight\symbol{139}}
+ \expandafter\def\csname simpleicon@ntfyicon\endcsname {\simpleiconsmapeight\symbol{140}}
+ \expandafter\def\csname simpleicon@nubankicon\endcsname {\simpleiconsmapeight\symbol{141}}
+ \expandafter\def\csname simpleicon@nucleoicon\endcsname {\simpleiconsmapeight\symbol{142}}
+ \expandafter\def\csname simpleicon@nugeticon\endcsname {\simpleiconsmapeight\symbol{143}}
+ \expandafter\def\csname simpleicon@nukeicon\endcsname {\simpleiconsmapeight\symbol{144}}
+ \expandafter\def\csname simpleicon@numbaicon\endcsname {\simpleiconsmapeight\symbol{145}}
+ \expandafter\def\csname simpleicon@numpyicon\endcsname {\simpleiconsmapeight\symbol{146}}
+ \expandafter\def\csname simpleicon@nunjucksicon\endcsname {\simpleiconsmapeight\symbol{147}}
+ \expandafter\def\csname simpleicon@nushellicon\endcsname {\simpleiconsmapeight\symbol{148}}
+ \expandafter\def\csname simpleicon@nutanixicon\endcsname {\simpleiconsmapeight\symbol{149}}
+ \expandafter\def\csname simpleicon@nuxticon\endcsname {\simpleiconsmapeight\symbol{150}}
+ \expandafter\def\csname simpleicon@nvidiaicon\endcsname {\simpleiconsmapeight\symbol{151}}
+ \expandafter\def\csname simpleicon@nvmicon\endcsname {\simpleiconsmapeight\symbol{152}}
+ \expandafter\def\csname simpleicon@nxicon\endcsname {\simpleiconsmapeight\symbol{153}}
+ \expandafter\def\csname simpleicon@nxpicon\endcsname {\simpleiconsmapeight\symbol{154}}
+ \expandafter\def\csname simpleicon@nzxticon\endcsname {\simpleiconsmapeight\symbol{155}}
+ \expandafter\def\csname simpleicon@oreillyicon\endcsname {\simpleiconsmapeight\symbol{156}}
+ \expandafter\def\csname simpleicon@o2icon\endcsname {\simpleiconsmapeight\symbol{157}}
+ \expandafter\def\csname simpleicon@obbicon\endcsname {\simpleiconsmapeight\symbol{158}}
+ \expandafter\def\csname simpleicon@obsstudioicon\endcsname {\simpleiconsmapeight\symbol{159}}
+ \expandafter\def\csname simpleicon@observableicon\endcsname {\simpleiconsmapeight\symbol{160}}
+ \expandafter\def\csname simpleicon@obsidianicon\endcsname {\simpleiconsmapeight\symbol{161}}
+ \expandafter\def\csname simpleicon@obtainiumicon\endcsname {\simpleiconsmapeight\symbol{162}}
+ \expandafter\def\csname simpleicon@ocamlicon\endcsname {\simpleiconsmapeight\symbol{163}}
+ \expandafter\def\csname simpleicon@oclcicon\endcsname {\simpleiconsmapeight\symbol{164}}
+ \expandafter\def\csname simpleicon@oclificon\endcsname {\simpleiconsmapeight\symbol{165}}
+ \expandafter\def\csname simpleicon@octanerendericon\endcsname {\simpleiconsmapeight\symbol{166}}
+ \expandafter\def\csname simpleicon@octaveicon\endcsname {\simpleiconsmapeight\symbol{167}}
+ \expandafter\def\csname simpleicon@octobercmsicon\endcsname {\simpleiconsmapeight\symbol{168}}
+ \expandafter\def\csname simpleicon@octoprinticon\endcsname {\simpleiconsmapeight\symbol{169}}
+ \expandafter\def\csname simpleicon@octopusdeployicon\endcsname {\simpleiconsmapeight\symbol{170}}
+ \expandafter\def\csname simpleicon@oculusicon\endcsname {\simpleiconsmapeight\symbol{171}}
+ \expandafter\def\csname simpleicon@odinicon\endcsname {\simpleiconsmapeight\symbol{172}}
+ \expandafter\def\csname simpleicon@odnoklassnikiicon\endcsname {\simpleiconsmapeight\symbol{173}}
+ \expandafter\def\csname simpleicon@odooicon\endcsname {\simpleiconsmapeight\symbol{174}}
+ \expandafter\def\csname simpleicon@odyseeicon\endcsname {\simpleiconsmapeight\symbol{175}}
+ \expandafter\def\csname simpleicon@ohdearicon\endcsname {\simpleiconsmapeight\symbol{176}}
+ \expandafter\def\csname simpleicon@okcupidicon\endcsname {\simpleiconsmapeight\symbol{177}}
+ \expandafter\def\csname simpleicon@oktaicon\endcsname {\simpleiconsmapeight\symbol{178}}
+ \expandafter\def\csname simpleicon@okxicon\endcsname {\simpleiconsmapeight\symbol{179}}
+ \expandafter\def\csname simpleicon@ollamaicon\endcsname {\simpleiconsmapeight\symbol{180}}
+ \expandafter\def\csname simpleicon@omadacloudicon\endcsname {\simpleiconsmapeight\symbol{181}}
+ \expandafter\def\csname simpleicon@oneplusicon\endcsname {\simpleiconsmapeight\symbol{182}}
+ \expandafter\def\csname simpleicon@onlyfansicon\endcsname {\simpleiconsmapeight\symbol{183}}
+ \expandafter\def\csname simpleicon@onlyofficeicon\endcsname {\simpleiconsmapeight\symbol{184}}
+ \expandafter\def\csname simpleicon@onnxicon\endcsname {\simpleiconsmapeight\symbol{185}}
+ \expandafter\def\csname simpleicon@onstaricon\endcsname {\simpleiconsmapeight\symbol{186}}
+ \expandafter\def\csname simpleicon@opelicon\endcsname {\simpleiconsmapeight\symbol{187}}
+ \expandafter\def\csname simpleicon@openaccessicon\endcsname {\simpleiconsmapeight\symbol{188}}
+ \expandafter\def\csname simpleicon@openbadgesicon\endcsname {\simpleiconsmapeight\symbol{189}}
+ \expandafter\def\csname simpleicon@openbugbountyicon\endcsname {\simpleiconsmapeight\symbol{190}}
+ \expandafter\def\csname simpleicon@opencollectiveicon\endcsname {\simpleiconsmapeight\symbol{191}}
+ \expandafter\def\csname simpleicon@opencontainersinitiativeicon\endcsname {\simpleiconsmapeight\symbol{192}}
+ \expandafter\def\csname simpleicon@opensourcehardwareicon\endcsname {\simpleiconsmapeight\symbol{193}}
+ \expandafter\def\csname simpleicon@opensourceinitiativeicon\endcsname {\simpleiconsmapeight\symbol{194}}
+ \expandafter\def\csname simpleicon@openaiicon\endcsname {\simpleiconsmapeight\symbol{195}}
+ \expandafter\def\csname simpleicon@openaigymicon\endcsname {\simpleiconsmapeight\symbol{196}}
+ \expandafter\def\csname simpleicon@openapiinitiativeicon\endcsname {\simpleiconsmapeight\symbol{197}}
+ \expandafter\def\csname simpleicon@openbsdicon\endcsname {\simpleiconsmapeight\symbol{198}}
+ \expandafter\def\csname simpleicon@opencvicon\endcsname {\simpleiconsmapeight\symbol{199}}
+ \expandafter\def\csname simpleicon@openfaasicon\endcsname {\simpleiconsmapeight\symbol{200}}
+ \expandafter\def\csname simpleicon@openglicon\endcsname {\simpleiconsmapeight\symbol{201}}
+ \expandafter\def\csname simpleicon@openhabicon\endcsname {\simpleiconsmapeight\symbol{202}}
+ \expandafter\def\csname simpleicon@openidicon\endcsname {\simpleiconsmapeight\symbol{203}}
+ \expandafter\def\csname simpleicon@openjdkicon\endcsname {\simpleiconsmapeight\symbol{204}}
+ \expandafter\def\csname simpleicon@openjsfoundationicon\endcsname {\simpleiconsmapeight\symbol{205}}
+ \expandafter\def\csname simpleicon@openlayersicon\endcsname {\simpleiconsmapeight\symbol{206}}
+ \expandafter\def\csname simpleicon@openmediavaulticon\endcsname {\simpleiconsmapeight\symbol{207}}
+ \expandafter\def\csname simpleicon@openminedicon\endcsname {\simpleiconsmapeight\symbol{208}}
+ \expandafter\def\csname simpleicon@opennebulaicon\endcsname {\simpleiconsmapeight\symbol{209}}
+ \expandafter\def\csname simpleicon@openprojecticon\endcsname {\simpleiconsmapeight\symbol{210}}
+ \expandafter\def\csname simpleicon@openscadicon\endcsname {\simpleiconsmapeight\symbol{211}}
+ \expandafter\def\csname simpleicon@openseaicon\endcsname {\simpleiconsmapeight\symbol{212}}
+ \expandafter\def\csname simpleicon@opensearchicon\endcsname {\simpleiconsmapeight\symbol{213}}
+ \expandafter\def\csname simpleicon@opensslicon\endcsname {\simpleiconsmapeight\symbol{214}}
+ \expandafter\def\csname simpleicon@openstackicon\endcsname {\simpleiconsmapeight\symbol{215}}
+ \expandafter\def\csname simpleicon@openstreetmapicon\endcsname {\simpleiconsmapeight\symbol{216}}
+ \expandafter\def\csname simpleicon@opensuseicon\endcsname {\simpleiconsmapeight\symbol{217}}
+ \expandafter\def\csname simpleicon@opentelemetryicon\endcsname {\simpleiconsmapeight\symbol{218}}
+ \expandafter\def\csname simpleicon@opentexticon\endcsname {\simpleiconsmapeight\symbol{219}}
+ \expandafter\def\csname simpleicon@opentofuicon\endcsname {\simpleiconsmapeight\symbol{220}}
+ \expandafter\def\csname simpleicon@openverseicon\endcsname {\simpleiconsmapeight\symbol{221}}
+ \expandafter\def\csname simpleicon@openvpnicon\endcsname {\simpleiconsmapeight\symbol{222}}
+ \expandafter\def\csname simpleicon@openwrticon\endcsname {\simpleiconsmapeight\symbol{223}}
+ \expandafter\def\csname simpleicon@openzeppelinicon\endcsname {\simpleiconsmapeight\symbol{224}}
+ \expandafter\def\csname simpleicon@openzfsicon\endcsname {\simpleiconsmapeight\symbol{225}}
+ \expandafter\def\csname simpleicon@operaicon\endcsname {\simpleiconsmapeight\symbol{226}}
+ \expandafter\def\csname simpleicon@operagxicon\endcsname {\simpleiconsmapeight\symbol{227}}
+ \expandafter\def\csname simpleicon@opnsenseicon\endcsname {\simpleiconsmapeight\symbol{228}}
+ \expandafter\def\csname simpleicon@oppoicon\endcsname {\simpleiconsmapeight\symbol{229}}
+ \expandafter\def\csname simpleicon@opsgenieicon\endcsname {\simpleiconsmapeight\symbol{230}}
+ \expandafter\def\csname simpleicon@opslevelicon\endcsname {\simpleiconsmapeight\symbol{231}}
+ \expandafter\def\csname simpleicon@optimismicon\endcsname {\simpleiconsmapeight\symbol{232}}
+ \expandafter\def\csname simpleicon@orangeicon\endcsname {\simpleiconsmapeight\symbol{233}}
+ \expandafter\def\csname simpleicon@orcidicon\endcsname {\simpleiconsmapeight\symbol{234}}
+ \expandafter\def\csname simpleicon@orgicon\endcsname {\simpleiconsmapeight\symbol{235}}
+ \expandafter\def\csname simpleicon@organicmapsicon\endcsname {\simpleiconsmapeight\symbol{236}}
+ \expandafter\def\csname simpleicon@originicon\endcsname {\simpleiconsmapeight\symbol{237}}
+ \expandafter\def\csname simpleicon@osanoicon\endcsname {\simpleiconsmapeight\symbol{238}}
+ \expandafter\def\csname simpleicon@osficon\endcsname {\simpleiconsmapeight\symbol{239}}
+ \expandafter\def\csname simpleicon@osgeoicon\endcsname {\simpleiconsmapeight\symbol{240}}
+ \expandafter\def\csname simpleicon@oshkoshicon\endcsname {\simpleiconsmapeight\symbol{241}}
+ \expandafter\def\csname simpleicon@osmcicon\endcsname {\simpleiconsmapeight\symbol{242}}
+ \expandafter\def\csname simpleicon@osuicon\endcsname {\simpleiconsmapeight\symbol{243}}
+ \expandafter\def\csname simpleicon@ottoicon\endcsname {\simpleiconsmapeight\symbol{244}}
+ \expandafter\def\csname simpleicon@outlineicon\endcsname {\simpleiconsmapeight\symbol{245}}
+ \expandafter\def\csname simpleicon@overcasticon\endcsname {\simpleiconsmapeight\symbol{246}}
+ \expandafter\def\csname simpleicon@overleaficon\endcsname {\simpleiconsmapeight\symbol{247}}
+ \expandafter\def\csname simpleicon@ovhicon\endcsname {\simpleiconsmapeight\symbol{248}}
+ \expandafter\def\csname simpleicon@owaspicon\endcsname {\simpleiconsmapeight\symbol{249}}
+ \expandafter\def\csname simpleicon@dependencycheckicon\endcsname {\simpleiconsmapeight\symbol{250}}
+ \expandafter\def\csname simpleicon@owncloudicon\endcsname {\simpleiconsmapeight\symbol{251}}
+ \expandafter\def\csname simpleicon@oxygenicon\endcsname {\simpleiconsmapeight\symbol{252}}
+ \expandafter\def\csname simpleicon@oyoicon\endcsname {\simpleiconsmapeight\symbol{253}}
+ \expandafter\def\csname simpleicon@p5dotjsicon\endcsname {\simpleiconsmapeight\symbol{254}}
+ \expandafter\def\csname simpleicon@packagisticon\endcsname {\simpleiconsmapeight\symbol{255}}
+ \expandafter\def\csname simpleicon@packericon\endcsname {\simpleiconsmapnine\symbol{0}}
+ \expandafter\def\csname simpleicon@packticon\endcsname {\simpleiconsmapnine\symbol{1}}
+ \expandafter\def\csname simpleicon@paddleicon\endcsname {\simpleiconsmapnine\symbol{2}}
+ \expandafter\def\csname simpleicon@paddlepaddleicon\endcsname {\simpleiconsmapnine\symbol{3}}
+ \expandafter\def\csname simpleicon@paddypowericon\endcsname {\simpleiconsmapnine\symbol{4}}
+ \expandafter\def\csname simpleicon@pagekiticon\endcsname {\simpleiconsmapnine\symbol{5}}
+ \expandafter\def\csname simpleicon@pagerdutyicon\endcsname {\simpleiconsmapnine\symbol{6}}
+ \expandafter\def\csname simpleicon@pagespeedinsightsicon\endcsname {\simpleiconsmapnine\symbol{7}}
+ \expandafter\def\csname simpleicon@pagseguroicon\endcsname {\simpleiconsmapnine\symbol{8}}
+ \expandafter\def\csname simpleicon@palantiricon\endcsname {\simpleiconsmapnine\symbol{9}}
+ \expandafter\def\csname simpleicon@paloaltonetworksicon\endcsname {\simpleiconsmapnine\symbol{10}}
+ \expandafter\def\csname simpleicon@paloaltosoftwareicon\endcsname {\simpleiconsmapnine\symbol{11}}
+ \expandafter\def\csname simpleicon@panasonicicon\endcsname {\simpleiconsmapnine\symbol{12}}
+ \expandafter\def\csname simpleicon@pandasicon\endcsname {\simpleiconsmapnine\symbol{13}}
+ \expandafter\def\csname simpleicon@pandoraicon\endcsname {\simpleiconsmapnine\symbol{14}}
+ \expandafter\def\csname simpleicon@pantheonicon\endcsname {\simpleiconsmapnine\symbol{15}}
+ \expandafter\def\csname simpleicon@paperlessngxicon\endcsname {\simpleiconsmapnine\symbol{16}}
+ \expandafter\def\csname simpleicon@paperswithcodeicon\endcsname {\simpleiconsmapnine\symbol{17}}
+ \expandafter\def\csname simpleicon@paperspaceicon\endcsname {\simpleiconsmapnine\symbol{18}}
+ \expandafter\def\csname simpleicon@paradoxinteractiveicon\endcsname {\simpleiconsmapnine\symbol{19}}
+ \expandafter\def\csname simpleicon@paramountplusicon\endcsname {\simpleiconsmapnine\symbol{20}}
+ \expandafter\def\csname simpleicon@paritysubstrateicon\endcsname {\simpleiconsmapnine\symbol{21}}
+ \expandafter\def\csname simpleicon@parrotsecurityicon\endcsname {\simpleiconsmapnine\symbol{22}}
+ \expandafter\def\csname simpleicon@parsedotlyicon\endcsname {\simpleiconsmapnine\symbol{23}}
+ \expandafter\def\csname simpleicon@passporticon\endcsname {\simpleiconsmapnine\symbol{24}}
+ \expandafter\def\csname simpleicon@pastebinicon\endcsname {\simpleiconsmapnine\symbol{25}}
+ \expandafter\def\csname simpleicon@patreonicon\endcsname {\simpleiconsmapnine\symbol{26}}
+ \expandafter\def\csname simpleicon@paychexicon\endcsname {\simpleiconsmapnine\symbol{27}}
+ \expandafter\def\csname simpleicon@payhipicon\endcsname {\simpleiconsmapnine\symbol{28}}
+ \expandafter\def\csname simpleicon@payloadcmsicon\endcsname {\simpleiconsmapnine\symbol{29}}
+ \expandafter\def\csname simpleicon@payoneericon\endcsname {\simpleiconsmapnine\symbol{30}}
+ \expandafter\def\csname simpleicon@paypalicon\endcsname {\simpleiconsmapnine\symbol{31}}
+ \expandafter\def\csname simpleicon@paytmicon\endcsname {\simpleiconsmapnine\symbol{32}}
+ \expandafter\def\csname simpleicon@pcgamingwikiicon\endcsname {\simpleiconsmapnine\symbol{33}}
+ \expandafter\def\csname simpleicon@pdmicon\endcsname {\simpleiconsmapnine\symbol{34}}
+ \expandafter\def\csname simpleicon@pdqicon\endcsname {\simpleiconsmapnine\symbol{35}}
+ \expandafter\def\csname simpleicon@peakdesignicon\endcsname {\simpleiconsmapnine\symbol{36}}
+ \expandafter\def\csname simpleicon@pearsonicon\endcsname {\simpleiconsmapnine\symbol{37}}
+ \expandafter\def\csname simpleicon@peerlisticon\endcsname {\simpleiconsmapnine\symbol{38}}
+ \expandafter\def\csname simpleicon@peertubeicon\endcsname {\simpleiconsmapnine\symbol{39}}
+ \expandafter\def\csname simpleicon@pegasusairlinesicon\endcsname {\simpleiconsmapnine\symbol{40}}
+ \expandafter\def\csname simpleicon@pelicanicon\endcsname {\simpleiconsmapnine\symbol{41}}
+ \expandafter\def\csname simpleicon@pelotonicon\endcsname {\simpleiconsmapnine\symbol{42}}
+ \expandafter\def\csname simpleicon@pennyicon\endcsname {\simpleiconsmapnine\symbol{43}}
+ \expandafter\def\csname simpleicon@penpoticon\endcsname {\simpleiconsmapnine\symbol{44}}
+ \expandafter\def\csname simpleicon@percyicon\endcsname {\simpleiconsmapnine\symbol{45}}
+ \expandafter\def\csname simpleicon@perforceicon\endcsname {\simpleiconsmapnine\symbol{46}}
+ \expandafter\def\csname simpleicon@perlicon\endcsname {\simpleiconsmapnine\symbol{47}}
+ \expandafter\def\csname simpleicon@perplexityicon\endcsname {\simpleiconsmapnine\symbol{48}}
+ \expandafter\def\csname simpleicon@persistenticon\endcsname {\simpleiconsmapnine\symbol{49}}
+ \expandafter\def\csname simpleicon@personioicon\endcsname {\simpleiconsmapnine\symbol{50}}
+ \expandafter\def\csname simpleicon@petsathomeicon\endcsname {\simpleiconsmapnine\symbol{51}}
+ \expandafter\def\csname simpleicon@peugeoticon\endcsname {\simpleiconsmapnine\symbol{52}}
+ \expandafter\def\csname simpleicon@pexelsicon\endcsname {\simpleiconsmapnine\symbol{53}}
+ \expandafter\def\csname simpleicon@pfsenseicon\endcsname {\simpleiconsmapnine\symbol{54}}
+ \expandafter\def\csname simpleicon@phabricatoricon\endcsname {\simpleiconsmapnine\symbol{55}}
+ \expandafter\def\csname simpleicon@philipshueicon\endcsname {\simpleiconsmapnine\symbol{56}}
+ \expandafter\def\csname simpleicon@phoenixframeworkicon\endcsname {\simpleiconsmapnine\symbol{57}}
+ \expandafter\def\csname simpleicon@phonepeicon\endcsname {\simpleiconsmapnine\symbol{58}}
+ \expandafter\def\csname simpleicon@phosphoriconsicon\endcsname {\simpleiconsmapnine\symbol{59}}
+ \expandafter\def\csname simpleicon@photobucketicon\endcsname {\simpleiconsmapnine\symbol{60}}
+ \expandafter\def\csname simpleicon@photocrowdicon\endcsname {\simpleiconsmapnine\symbol{61}}
+ \expandafter\def\csname simpleicon@photonicon\endcsname {\simpleiconsmapnine\symbol{62}}
+ \expandafter\def\csname simpleicon@photopeaicon\endcsname {\simpleiconsmapnine\symbol{63}}
+ \expandafter\def\csname simpleicon@phpicon\endcsname {\simpleiconsmapnine\symbol{64}}
+ \expandafter\def\csname simpleicon@phpbbicon\endcsname {\simpleiconsmapnine\symbol{65}}
+ \expandafter\def\csname simpleicon@phpmyadminicon\endcsname {\simpleiconsmapnine\symbol{66}}
+ \expandafter\def\csname simpleicon@phpstormicon\endcsname {\simpleiconsmapnine\symbol{67}}
+ \expandafter\def\csname simpleicon@pinetworkicon\endcsname {\simpleiconsmapnine\symbol{68}}
+ \expandafter\def\csname simpleicon@piholeicon\endcsname {\simpleiconsmapnine\symbol{69}}
+ \expandafter\def\csname simpleicon@piaggiogroupicon\endcsname {\simpleiconsmapnine\symbol{70}}
+ \expandafter\def\csname simpleicon@piaproicon\endcsname {\simpleiconsmapnine\symbol{71}}
+ \expandafter\def\csname simpleicon@picardsurgelesicon\endcsname {\simpleiconsmapnine\symbol{72}}
+ \expandafter\def\csname simpleicon@picartodottvicon\endcsname {\simpleiconsmapnine\symbol{73}}
+ \expandafter\def\csname simpleicon@picnicicon\endcsname {\simpleiconsmapnine\symbol{74}}
+ \expandafter\def\csname simpleicon@picpayicon\endcsname {\simpleiconsmapnine\symbol{75}}
+ \expandafter\def\csname simpleicon@picrewicon\endcsname {\simpleiconsmapnine\symbol{76}}
+ \expandafter\def\csname simpleicon@picsarticon\endcsname {\simpleiconsmapnine\symbol{77}}
+ \expandafter\def\csname simpleicon@picxyicon\endcsname {\simpleiconsmapnine\symbol{78}}
+ \expandafter\def\csname simpleicon@pimcoreicon\endcsname {\simpleiconsmapnine\symbol{79}}
+ \expandafter\def\csname simpleicon@pinboardicon\endcsname {\simpleiconsmapnine\symbol{80}}
+ \expandafter\def\csname simpleicon@pinescripticon\endcsname {\simpleiconsmapnine\symbol{81}}
+ \expandafter\def\csname simpleicon@pingdomicon\endcsname {\simpleiconsmapnine\symbol{82}}
+ \expandafter\def\csname simpleicon@pinoicon\endcsname {\simpleiconsmapnine\symbol{83}}
+ \expandafter\def\csname simpleicon@pinteresticon\endcsname {\simpleiconsmapnine\symbol{84}}
+ \expandafter\def\csname simpleicon@pioneerdjicon\endcsname {\simpleiconsmapnine\symbol{85}}
+ \expandafter\def\csname simpleicon@pipedicon\endcsname {\simpleiconsmapnine\symbol{86}}
+ \expandafter\def\csname simpleicon@pipxicon\endcsname {\simpleiconsmapnine\symbol{87}}
+ \expandafter\def\csname simpleicon@pivotaltrackericon\endcsname {\simpleiconsmapnine\symbol{88}}
+ \expandafter\def\csname simpleicon@piwigoicon\endcsname {\simpleiconsmapnine\symbol{89}}
+ \expandafter\def\csname simpleicon@pixicon\endcsname {\simpleiconsmapnine\symbol{90}}
+ \expandafter\def\csname simpleicon@pixabayicon\endcsname {\simpleiconsmapnine\symbol{91}}
+ \expandafter\def\csname simpleicon@pixelfedicon\endcsname {\simpleiconsmapnine\symbol{92}}
+ \expandafter\def\csname simpleicon@pixivicon\endcsname {\simpleiconsmapnine\symbol{93}}
+ \expandafter\def\csname simpleicon@pixlricon\endcsname {\simpleiconsmapnine\symbol{94}}
+ \expandafter\def\csname simpleicon@pkgsrcicon\endcsname {\simpleiconsmapnine\symbol{95}}
+ \expandafter\def\csname simpleicon@planeticon\endcsname {\simpleiconsmapnine\symbol{96}}
+ \expandafter\def\csname simpleicon@planetscaleicon\endcsname {\simpleiconsmapnine\symbol{97}}
+ \expandafter\def\csname simpleicon@plangridicon\endcsname {\simpleiconsmapnine\symbol{98}}
+ \expandafter\def\csname simpleicon@platformdotshicon\endcsname {\simpleiconsmapnine\symbol{99}}
+ \expandafter\def\csname simpleicon@platformioicon\endcsname {\simpleiconsmapnine\symbol{100}}
+ \expandafter\def\csname simpleicon@platziicon\endcsname {\simpleiconsmapnine\symbol{101}}
+ \expandafter\def\csname simpleicon@plausibleanalyticsicon\endcsname {\simpleiconsmapnine\symbol{102}}
+ \expandafter\def\csname simpleicon@playcanvasicon\endcsname {\simpleiconsmapnine\symbol{103}}
+ \expandafter\def\csname simpleicon@playerfmicon\endcsname {\simpleiconsmapnine\symbol{104}}
+ \expandafter\def\csname simpleicon@playerdotmeicon\endcsname {\simpleiconsmapnine\symbol{105}}
+ \expandafter\def\csname simpleicon@playstationicon\endcsname {\simpleiconsmapnine\symbol{106}}
+ \expandafter\def\csname simpleicon@playstation2icon\endcsname {\simpleiconsmapnine\symbol{107}}
+ \expandafter\def\csname simpleicon@playstation3icon\endcsname {\simpleiconsmapnine\symbol{108}}
+ \expandafter\def\csname simpleicon@playstation4icon\endcsname {\simpleiconsmapnine\symbol{109}}
+ \expandafter\def\csname simpleicon@playstation5icon\endcsname {\simpleiconsmapnine\symbol{110}}
+ \expandafter\def\csname simpleicon@playstationportableicon\endcsname {\simpleiconsmapnine\symbol{111}}
+ \expandafter\def\csname simpleicon@playstationvitaicon\endcsname {\simpleiconsmapnine\symbol{112}}
+ \expandafter\def\csname simpleicon@pleromaicon\endcsname {\simpleiconsmapnine\symbol{113}}
+ \expandafter\def\csname simpleicon@pleskicon\endcsname {\simpleiconsmapnine\symbol{114}}
+ \expandafter\def\csname simpleicon@plexicon\endcsname {\simpleiconsmapnine\symbol{115}}
+ \expandafter\def\csname simpleicon@plotlyicon\endcsname {\simpleiconsmapnine\symbol{116}}
+ \expandafter\def\csname simpleicon@plumeicon\endcsname {\simpleiconsmapnine\symbol{117}}
+ \expandafter\def\csname simpleicon@pluralsighticon\endcsname {\simpleiconsmapnine\symbol{118}}
+ \expandafter\def\csname simpleicon@plurkicon\endcsname {\simpleiconsmapnine\symbol{119}}
+ \expandafter\def\csname simpleicon@pluscodesicon\endcsname {\simpleiconsmapnine\symbol{120}}
+ \expandafter\def\csname simpleicon@pm2icon\endcsname {\simpleiconsmapnine\symbol{121}}
+ \expandafter\def\csname simpleicon@pnpmicon\endcsname {\simpleiconsmapnine\symbol{122}}
+ \expandafter\def\csname simpleicon@pocketicon\endcsname {\simpleiconsmapnine\symbol{123}}
+ \expandafter\def\csname simpleicon@pocketcastsicon\endcsname {\simpleiconsmapnine\symbol{124}}
+ \expandafter\def\csname simpleicon@pocketbaseicon\endcsname {\simpleiconsmapnine\symbol{125}}
+ \expandafter\def\csname simpleicon@podcastaddicticon\endcsname {\simpleiconsmapnine\symbol{126}}
+ \expandafter\def\csname simpleicon@podcastindexicon\endcsname {\simpleiconsmapnine\symbol{127}}
+ \expandafter\def\csname simpleicon@podmanicon\endcsname {\simpleiconsmapnine\symbol{128}}
+ \expandafter\def\csname simpleicon@poeicon\endcsname {\simpleiconsmapnine\symbol{129}}
+ \expandafter\def\csname simpleicon@poetryicon\endcsname {\simpleiconsmapnine\symbol{130}}
+ \expandafter\def\csname simpleicon@pointyicon\endcsname {\simpleiconsmapnine\symbol{131}}
+ \expandafter\def\csname simpleicon@polarsicon\endcsname {\simpleiconsmapnine\symbol{132}}
+ \expandafter\def\csname simpleicon@polestaricon\endcsname {\simpleiconsmapnine\symbol{133}}
+ \expandafter\def\csname simpleicon@polkadoticon\endcsname {\simpleiconsmapnine\symbol{134}}
+ \expandafter\def\csname simpleicon@polyicon\endcsname {\simpleiconsmapnine\symbol{135}}
+ \expandafter\def\csname simpleicon@polygonicon\endcsname {\simpleiconsmapnine\symbol{136}}
+ \expandafter\def\csname simpleicon@polymerprojecticon\endcsname {\simpleiconsmapnine\symbol{137}}
+ \expandafter\def\csname simpleicon@polyworkicon\endcsname {\simpleiconsmapnine\symbol{138}}
+ \expandafter\def\csname simpleicon@pond5icon\endcsname {\simpleiconsmapnine\symbol{139}}
+ \expandafter\def\csname simpleicon@poposicon\endcsname {\simpleiconsmapnine\symbol{140}}
+ \expandafter\def\csname simpleicon@porkbunicon\endcsname {\simpleiconsmapnine\symbol{141}}
+ \expandafter\def\csname simpleicon@porscheicon\endcsname {\simpleiconsmapnine\symbol{142}}
+ \expandafter\def\csname simpleicon@portainericon\endcsname {\simpleiconsmapnine\symbol{143}}
+ \expandafter\def\csname simpleicon@portswiggericon\endcsname {\simpleiconsmapnine\symbol{144}}
+ \expandafter\def\csname simpleicon@positicon\endcsname {\simpleiconsmapnine\symbol{145}}
+ \expandafter\def\csname simpleicon@postcssicon\endcsname {\simpleiconsmapnine\symbol{146}}
+ \expandafter\def\csname simpleicon@postgresqlicon\endcsname {\simpleiconsmapnine\symbol{147}}
+ \expandafter\def\csname simpleicon@posthogicon\endcsname {\simpleiconsmapnine\symbol{148}}
+ \expandafter\def\csname simpleicon@postmanicon\endcsname {\simpleiconsmapnine\symbol{149}}
+ \expandafter\def\csname simpleicon@postmatesicon\endcsname {\simpleiconsmapnine\symbol{150}}
+ \expandafter\def\csname simpleicon@powersicon\endcsname {\simpleiconsmapnine\symbol{151}}
+ \expandafter\def\csname simpleicon@prdotcoicon\endcsname {\simpleiconsmapnine\symbol{152}}
+ \expandafter\def\csname simpleicon@precommiticon\endcsname {\simpleiconsmapnine\symbol{153}}
+ \expandafter\def\csname simpleicon@preacticon\endcsname {\simpleiconsmapnine\symbol{154}}
+ \expandafter\def\csname simpleicon@prefecticon\endcsname {\simpleiconsmapnine\symbol{155}}
+ \expandafter\def\csname simpleicon@premierleagueicon\endcsname {\simpleiconsmapnine\symbol{156}}
+ \expandafter\def\csname simpleicon@prepbytesicon\endcsname {\simpleiconsmapnine\symbol{157}}
+ \expandafter\def\csname simpleicon@prestashopicon\endcsname {\simpleiconsmapnine\symbol{158}}
+ \expandafter\def\csname simpleicon@prestoicon\endcsname {\simpleiconsmapnine\symbol{159}}
+ \expandafter\def\csname simpleicon@prettiericon\endcsname {\simpleiconsmapnine\symbol{160}}
+ \expandafter\def\csname simpleicon@pretzelicon\endcsname {\simpleiconsmapnine\symbol{161}}
+ \expandafter\def\csname simpleicon@preventionicon\endcsname {\simpleiconsmapnine\symbol{162}}
+ \expandafter\def\csname simpleicon@preziicon\endcsname {\simpleiconsmapnine\symbol{163}}
+ \expandafter\def\csname simpleicon@primeicon\endcsname {\simpleiconsmapnine\symbol{164}}
+ \expandafter\def\csname simpleicon@primevideoicon\endcsname {\simpleiconsmapnine\symbol{165}}
+ \expandafter\def\csname simpleicon@primefacesicon\endcsname {\simpleiconsmapnine\symbol{166}}
+ \expandafter\def\csname simpleicon@primengicon\endcsname {\simpleiconsmapnine\symbol{167}}
+ \expandafter\def\csname simpleicon@primereacticon\endcsname {\simpleiconsmapnine\symbol{168}}
+ \expandafter\def\csname simpleicon@primevueicon\endcsname {\simpleiconsmapnine\symbol{169}}
+ \expandafter\def\csname simpleicon@printablesicon\endcsname {\simpleiconsmapnine\symbol{170}}
+ \expandafter\def\csname simpleicon@prismaicon\endcsname {\simpleiconsmapnine\symbol{171}}
+ \expandafter\def\csname simpleicon@prismicicon\endcsname {\simpleiconsmapnine\symbol{172}}
+ \expandafter\def\csname simpleicon@privatedivisionicon\endcsname {\simpleiconsmapnine\symbol{173}}
+ \expandafter\def\csname simpleicon@privateinternetaccessicon\endcsname {\simpleiconsmapnine\symbol{174}}
+ \expandafter\def\csname simpleicon@protoolsicon\endcsname {\simpleiconsmapnine\symbol{175}}
+ \expandafter\def\csname simpleicon@proboticon\endcsname {\simpleiconsmapnine\symbol{176}}
+ \expandafter\def\csname simpleicon@processingfoundationicon\endcsname {\simpleiconsmapnine\symbol{177}}
+ \expandafter\def\csname simpleicon@processwireicon\endcsname {\simpleiconsmapnine\symbol{178}}
+ \expandafter\def\csname simpleicon@producthunticon\endcsname {\simpleiconsmapnine\symbol{179}}
+ \expandafter\def\csname simpleicon@progateicon\endcsname {\simpleiconsmapnine\symbol{180}}
+ \expandafter\def\csname simpleicon@progressicon\endcsname {\simpleiconsmapnine\symbol{181}}
+ \expandafter\def\csname simpleicon@prometheusicon\endcsname {\simpleiconsmapnine\symbol{182}}
+ \expandafter\def\csname simpleicon@pronounsdotpageicon\endcsname {\simpleiconsmapnine\symbol{183}}
+ \expandafter\def\csname simpleicon@prosiebenicon\endcsname {\simpleiconsmapnine\symbol{184}}
+ \expandafter\def\csname simpleicon@proteusicon\endcsname {\simpleiconsmapnine\symbol{185}}
+ \expandafter\def\csname simpleicon@protodotioicon\endcsname {\simpleiconsmapnine\symbol{186}}
+ \expandafter\def\csname simpleicon@protocolsdotioicon\endcsname {\simpleiconsmapnine\symbol{187}}
+ \expandafter\def\csname simpleicon@protonicon\endcsname {\simpleiconsmapnine\symbol{188}}
+ \expandafter\def\csname simpleicon@protoncalendaricon\endcsname {\simpleiconsmapnine\symbol{189}}
+ \expandafter\def\csname simpleicon@protondriveicon\endcsname {\simpleiconsmapnine\symbol{190}}
+ \expandafter\def\csname simpleicon@protonmailicon\endcsname {\simpleiconsmapnine\symbol{191}}
+ \expandafter\def\csname simpleicon@protonvpnicon\endcsname {\simpleiconsmapnine\symbol{192}}
+ \expandafter\def\csname simpleicon@protondbicon\endcsname {\simpleiconsmapnine\symbol{193}}
+ \expandafter\def\csname simpleicon@protractoricon\endcsname {\simpleiconsmapnine\symbol{194}}
+ \expandafter\def\csname simpleicon@proxmoxicon\endcsname {\simpleiconsmapnine\symbol{195}}
+ \expandafter\def\csname simpleicon@pterodactylicon\endcsname {\simpleiconsmapnine\symbol{196}}
+ \expandafter\def\csname simpleicon@pubgicon\endcsname {\simpleiconsmapnine\symbol{197}}
+ \expandafter\def\csname simpleicon@publonsicon\endcsname {\simpleiconsmapnine\symbol{198}}
+ \expandafter\def\csname simpleicon@pubmedicon\endcsname {\simpleiconsmapnine\symbol{199}}
+ \expandafter\def\csname simpleicon@pugicon\endcsname {\simpleiconsmapnine\symbol{200}}
+ \expandafter\def\csname simpleicon@pulumiicon\endcsname {\simpleiconsmapnine\symbol{201}}
+ \expandafter\def\csname simpleicon@pumaicon\endcsname {\simpleiconsmapnine\symbol{202}}
+ \expandafter\def\csname simpleicon@puppeticon\endcsname {\simpleiconsmapnine\symbol{203}}
+ \expandafter\def\csname simpleicon@puppeteericon\endcsname {\simpleiconsmapnine\symbol{204}}
+ \expandafter\def\csname simpleicon@purescripticon\endcsname {\simpleiconsmapnine\symbol{205}}
+ \expandafter\def\csname simpleicon@purgecssicon\endcsname {\simpleiconsmapnine\symbol{206}}
+ \expandafter\def\csname simpleicon@purismicon\endcsname {\simpleiconsmapnine\symbol{207}}
+ \expandafter\def\csname simpleicon@pushbulleticon\endcsname {\simpleiconsmapnine\symbol{208}}
+ \expandafter\def\csname simpleicon@pushericon\endcsname {\simpleiconsmapnine\symbol{209}}
+ \expandafter\def\csname simpleicon@pwaicon\endcsname {\simpleiconsmapnine\symbol{210}}
+ \expandafter\def\csname simpleicon@pycharmicon\endcsname {\simpleiconsmapnine\symbol{211}}
+ \expandafter\def\csname simpleicon@pycqaicon\endcsname {\simpleiconsmapnine\symbol{212}}
+ \expandafter\def\csname simpleicon@pydanticicon\endcsname {\simpleiconsmapnine\symbol{213}}
+ \expandafter\def\csname simpleicon@pygicon\endcsname {\simpleiconsmapnine\symbol{214}}
+ \expandafter\def\csname simpleicon@pypiicon\endcsname {\simpleiconsmapnine\symbol{215}}
+ \expandafter\def\csname simpleicon@pypyicon\endcsname {\simpleiconsmapnine\symbol{216}}
+ \expandafter\def\csname simpleicon@pyscaffoldicon\endcsname {\simpleiconsmapnine\symbol{217}}
+ \expandafter\def\csname simpleicon@pysyfticon\endcsname {\simpleiconsmapnine\symbol{218}}
+ \expandafter\def\csname simpleicon@pytesticon\endcsname {\simpleiconsmapnine\symbol{219}}
+ \expandafter\def\csname simpleicon@pythonicon\endcsname {\simpleiconsmapnine\symbol{220}}
+ \expandafter\def\csname simpleicon@pythonanywhereicon\endcsname {\simpleiconsmapnine\symbol{221}}
+ \expandafter\def\csname simpleicon@pytorchicon\endcsname {\simpleiconsmapnine\symbol{222}}
+ \expandafter\def\csname simpleicon@pyupicon\endcsname {\simpleiconsmapnine\symbol{223}}
+ \expandafter\def\csname simpleicon@qantasicon\endcsname {\simpleiconsmapnine\symbol{224}}
+ \expandafter\def\csname simpleicon@qaseicon\endcsname {\simpleiconsmapnine\symbol{225}}
+ \expandafter\def\csname simpleicon@qatarairwaysicon\endcsname {\simpleiconsmapnine\symbol{226}}
+ \expandafter\def\csname simpleicon@qbittorrenticon\endcsname {\simpleiconsmapnine\symbol{227}}
+ \expandafter\def\csname simpleicon@qemuicon\endcsname {\simpleiconsmapnine\symbol{228}}
+ \expandafter\def\csname simpleicon@qgisicon\endcsname {\simpleiconsmapnine\symbol{229}}
+ \expandafter\def\csname simpleicon@qiicon\endcsname {\simpleiconsmapnine\symbol{230}}
+ \expandafter\def\csname simpleicon@qiitaicon\endcsname {\simpleiconsmapnine\symbol{231}}
+ \expandafter\def\csname simpleicon@qiskiticon\endcsname {\simpleiconsmapnine\symbol{232}}
+ \expandafter\def\csname simpleicon@qiwiicon\endcsname {\simpleiconsmapnine\symbol{233}}
+ \expandafter\def\csname simpleicon@qlikicon\endcsname {\simpleiconsmapnine\symbol{234}}
+ \expandafter\def\csname simpleicon@qmkicon\endcsname {\simpleiconsmapnine\symbol{235}}
+ \expandafter\def\csname simpleicon@qnapicon\endcsname {\simpleiconsmapnine\symbol{236}}
+ \expandafter\def\csname simpleicon@qqicon\endcsname {\simpleiconsmapnine\symbol{237}}
+ \expandafter\def\csname simpleicon@qticon\endcsname {\simpleiconsmapnine\symbol{238}}
+ \expandafter\def\csname simpleicon@qualcommicon\endcsname {\simpleiconsmapnine\symbol{239}}
+ \expandafter\def\csname simpleicon@qualtricsicon\endcsname {\simpleiconsmapnine\symbol{240}}
+ \expandafter\def\csname simpleicon@qualysicon\endcsname {\simpleiconsmapnine\symbol{241}}
+ \expandafter\def\csname simpleicon@quantcasticon\endcsname {\simpleiconsmapnine\symbol{242}}
+ \expandafter\def\csname simpleicon@quantconnecticon\endcsname {\simpleiconsmapnine\symbol{243}}
+ \expandafter\def\csname simpleicon@quarkusicon\endcsname {\simpleiconsmapnine\symbol{244}}
+ \expandafter\def\csname simpleicon@quartoicon\endcsname {\simpleiconsmapnine\symbol{245}}
+ \expandafter\def\csname simpleicon@quasaricon\endcsname {\simpleiconsmapnine\symbol{246}}
+ \expandafter\def\csname simpleicon@qubesosicon\endcsname {\simpleiconsmapnine\symbol{247}}
+ \expandafter\def\csname simpleicon@questicon\endcsname {\simpleiconsmapnine\symbol{248}}
+ \expandafter\def\csname simpleicon@quickbooksicon\endcsname {\simpleiconsmapnine\symbol{249}}
+ \expandafter\def\csname simpleicon@quicklookicon\endcsname {\simpleiconsmapnine\symbol{250}}
+ \expandafter\def\csname simpleicon@quicktimeicon\endcsname {\simpleiconsmapnine\symbol{251}}
+ \expandafter\def\csname simpleicon@quicktypeicon\endcsname {\simpleiconsmapnine\symbol{252}}
+ \expandafter\def\csname simpleicon@quipicon\endcsname {\simpleiconsmapnine\symbol{253}}
+ \expandafter\def\csname simpleicon@quizleticon\endcsname {\simpleiconsmapnine\symbol{254}}
+ \expandafter\def\csname simpleicon@quoraicon\endcsname {\simpleiconsmapnine\symbol{255}}
+ \expandafter\def\csname simpleicon@qwanticon\endcsname {\simpleiconsmaponezero\symbol{0}}
+ \expandafter\def\csname simpleicon@qwikicon\endcsname {\simpleiconsmaponezero\symbol{1}}
+ \expandafter\def\csname simpleicon@qwiklabsicon\endcsname {\simpleiconsmaponezero\symbol{2}}
+ \expandafter\def\csname simpleicon@qzoneicon\endcsname {\simpleiconsmaponezero\symbol{3}}
+ \expandafter\def\csname simpleicon@ricon\endcsname {\simpleiconsmaponezero\symbol{4}}
+ \expandafter\def\csname simpleicon@r3icon\endcsname {\simpleiconsmaponezero\symbol{5}}
+ \expandafter\def\csname simpleicon@rabbitmqicon\endcsname {\simpleiconsmaponezero\symbol{6}}
+ \expandafter\def\csname simpleicon@racketicon\endcsname {\simpleiconsmaponezero\symbol{7}}
+ \expandafter\def\csname simpleicon@radstudioicon\endcsname {\simpleiconsmaponezero\symbol{8}}
+ \expandafter\def\csname simpleicon@radaricon\endcsname {\simpleiconsmaponezero\symbol{9}}
+ \expandafter\def\csname simpleicon@radarricon\endcsname {\simpleiconsmaponezero\symbol{10}}
+ \expandafter\def\csname simpleicon@radixuiicon\endcsname {\simpleiconsmaponezero\symbol{11}}
+ \expandafter\def\csname simpleicon@railwayicon\endcsname {\simpleiconsmaponezero\symbol{12}}
+ \expandafter\def\csname simpleicon@rainmetericon\endcsname {\simpleiconsmaponezero\symbol{13}}
+ \expandafter\def\csname simpleicon@rakutenicon\endcsname {\simpleiconsmaponezero\symbol{14}}
+ \expandafter\def\csname simpleicon@ramicon\endcsname {\simpleiconsmaponezero\symbol{15}}
+ \expandafter\def\csname simpleicon@ranchericon\endcsname {\simpleiconsmaponezero\symbol{16}}
+ \expandafter\def\csname simpleicon@rapidicon\endcsname {\simpleiconsmaponezero\symbol{17}}
+ \expandafter\def\csname simpleicon@raribleicon\endcsname {\simpleiconsmaponezero\symbol{18}}
+ \expandafter\def\csname simpleicon@rasaicon\endcsname {\simpleiconsmaponezero\symbol{19}}
+ \expandafter\def\csname simpleicon@raspberrypiicon\endcsname {\simpleiconsmaponezero\symbol{20}}
+ \expandafter\def\csname simpleicon@ravelryicon\endcsname {\simpleiconsmaponezero\symbol{21}}
+ \expandafter\def\csname simpleicon@rayicon\endcsname {\simpleiconsmaponezero\symbol{22}}
+ \expandafter\def\csname simpleicon@raycasticon\endcsname {\simpleiconsmaponezero\symbol{23}}
+ \expandafter\def\csname simpleicon@raylibicon\endcsname {\simpleiconsmaponezero\symbol{24}}
+ \expandafter\def\csname simpleicon@razericon\endcsname {\simpleiconsmaponezero\symbol{25}}
+ \expandafter\def\csname simpleicon@razorpayicon\endcsname {\simpleiconsmaponezero\symbol{26}}
+ \expandafter\def\csname simpleicon@rcloneicon\endcsname {\simpleiconsmaponezero\symbol{27}}
+ \expandafter\def\csname simpleicon@reacticon\endcsname {\simpleiconsmaponezero\symbol{28}}
+ \expandafter\def\csname simpleicon@reactbootstrapicon\endcsname {\simpleiconsmaponezero\symbol{29}}
+ \expandafter\def\csname simpleicon@reacthookformicon\endcsname {\simpleiconsmaponezero\symbol{30}}
+ \expandafter\def\csname simpleicon@reactqueryicon\endcsname {\simpleiconsmaponezero\symbol{31}}
+ \expandafter\def\csname simpleicon@reactroutericon\endcsname {\simpleiconsmaponezero\symbol{32}}
+ \expandafter\def\csname simpleicon@reacttableicon\endcsname {\simpleiconsmaponezero\symbol{33}}
+ \expandafter\def\csname simpleicon@reactiveresumeicon\endcsname {\simpleiconsmaponezero\symbol{34}}
+ \expandafter\def\csname simpleicon@reactivexicon\endcsname {\simpleiconsmaponezero\symbol{35}}
+ \expandafter\def\csname simpleicon@reactosicon\endcsname {\simpleiconsmaponezero\symbol{36}}
+ \expandafter\def\csname simpleicon@readthedocsicon\endcsname {\simpleiconsmaponezero\symbol{37}}
+ \expandafter\def\csname simpleicon@readdotcvicon\endcsname {\simpleiconsmaponezero\symbol{38}}
+ \expandafter\def\csname simpleicon@readmeicon\endcsname {\simpleiconsmaponezero\symbol{39}}
+ \expandafter\def\csname simpleicon@reasonicon\endcsname {\simpleiconsmaponezero\symbol{40}}
+ \expandafter\def\csname simpleicon@reasonstudiosicon\endcsname {\simpleiconsmaponezero\symbol{41}}
+ \expandafter\def\csname simpleicon@recoilicon\endcsname {\simpleiconsmaponezero\symbol{42}}
+ \expandafter\def\csname simpleicon@redicon\endcsname {\simpleiconsmaponezero\symbol{43}}
+ \expandafter\def\csname simpleicon@redbullicon\endcsname {\simpleiconsmaponezero\symbol{44}}
+ \expandafter\def\csname simpleicon@redcandlegamesicon\endcsname {\simpleiconsmaponezero\symbol{45}}
+ \expandafter\def\csname simpleicon@redhaticon\endcsname {\simpleiconsmaponezero\symbol{46}}
+ \expandafter\def\csname simpleicon@redhatopenshifticon\endcsname {\simpleiconsmaponezero\symbol{47}}
+ \expandafter\def\csname simpleicon@redashicon\endcsname {\simpleiconsmaponezero\symbol{48}}
+ \expandafter\def\csname simpleicon@redbubbleicon\endcsname {\simpleiconsmaponezero\symbol{49}}
+ \expandafter\def\csname simpleicon@redditicon\endcsname {\simpleiconsmaponezero\symbol{50}}
+ \expandafter\def\csname simpleicon@redisicon\endcsname {\simpleiconsmaponezero\symbol{51}}
+ \expandafter\def\csname simpleicon@redmineicon\endcsname {\simpleiconsmaponezero\symbol{52}}
+ \expandafter\def\csname simpleicon@redoxicon\endcsname {\simpleiconsmaponezero\symbol{53}}
+ \expandafter\def\csname simpleicon@redragonicon\endcsname {\simpleiconsmaponezero\symbol{54}}
+ \expandafter\def\csname simpleicon@redsysicon\endcsname {\simpleiconsmaponezero\symbol{55}}
+ \expandafter\def\csname simpleicon@reduxicon\endcsname {\simpleiconsmaponezero\symbol{56}}
+ \expandafter\def\csname simpleicon@reduxsagaicon\endcsname {\simpleiconsmaponezero\symbol{57}}
+ \expandafter\def\csname simpleicon@redwoodjsicon\endcsname {\simpleiconsmaponezero\symbol{58}}
+ \expandafter\def\csname simpleicon@reebokicon\endcsname {\simpleiconsmaponezero\symbol{59}}
+ \expandafter\def\csname simpleicon@refineicon\endcsname {\simpleiconsmaponezero\symbol{60}}
+ \expandafter\def\csname simpleicon@refinedgithubicon\endcsname {\simpleiconsmaponezero\symbol{61}}
+ \expandafter\def\csname simpleicon@relayicon\endcsname {\simpleiconsmaponezero\symbol{62}}
+ \expandafter\def\csname simpleicon@relianceindustrieslimitedicon\endcsname {\simpleiconsmaponezero\symbol{63}}
+ \expandafter\def\csname simpleicon@remarkicon\endcsname {\simpleiconsmaponezero\symbol{64}}
+ \expandafter\def\csname simpleicon@remedyentertainmenticon\endcsname {\simpleiconsmaponezero\symbol{65}}
+ \expandafter\def\csname simpleicon@remixicon\endcsname {\simpleiconsmaponezero\symbol{66}}
+ \expandafter\def\csname simpleicon@removedotbgicon\endcsname {\simpleiconsmaponezero\symbol{67}}
+ \expandafter\def\csname simpleicon@renpyicon\endcsname {\simpleiconsmaponezero\symbol{68}}
+ \expandafter\def\csname simpleicon@renaulticon\endcsname {\simpleiconsmaponezero\symbol{69}}
+ \expandafter\def\csname simpleicon@rendericon\endcsname {\simpleiconsmaponezero\symbol{70}}
+ \expandafter\def\csname simpleicon@renovateicon\endcsname {\simpleiconsmaponezero\symbol{71}}
+ \expandafter\def\csname simpleicon@renrenicon\endcsname {\simpleiconsmaponezero\symbol{72}}
+ \expandafter\def\csname simpleicon@replicateicon\endcsname {\simpleiconsmaponezero\symbol{73}}
+ \expandafter\def\csname simpleicon@repliticon\endcsname {\simpleiconsmaponezero\symbol{74}}
+ \expandafter\def\csname simpleicon@republicofgamersicon\endcsname {\simpleiconsmaponezero\symbol{75}}
+ \expandafter\def\csname simpleicon@rescripticon\endcsname {\simpleiconsmaponezero\symbol{76}}
+ \expandafter\def\csname simpleicon@rescuetimeicon\endcsname {\simpleiconsmaponezero\symbol{77}}
+ \expandafter\def\csname simpleicon@researchgateicon\endcsname {\simpleiconsmaponezero\symbol{78}}
+ \expandafter\def\csname simpleicon@resendicon\endcsname {\simpleiconsmaponezero\symbol{79}}
+ \expandafter\def\csname simpleicon@resharpericon\endcsname {\simpleiconsmaponezero\symbol{80}}
+ \expandafter\def\csname simpleicon@resurrectionremixosicon\endcsname {\simpleiconsmaponezero\symbol{81}}
+ \expandafter\def\csname simpleicon@retoolicon\endcsname {\simpleiconsmaponezero\symbol{82}}
+ \expandafter\def\csname simpleicon@retroarchicon\endcsname {\simpleiconsmaponezero\symbol{83}}
+ \expandafter\def\csname simpleicon@retropieicon\endcsname {\simpleiconsmaponezero\symbol{84}}
+ \expandafter\def\csname simpleicon@revancedicon\endcsname {\simpleiconsmaponezero\symbol{85}}
+ \expandafter\def\csname simpleicon@revealdotjsicon\endcsname {\simpleiconsmaponezero\symbol{86}}
+ \expandafter\def\csname simpleicon@reverbnationicon\endcsname {\simpleiconsmaponezero\symbol{87}}
+ \expandafter\def\csname simpleicon@revoltdotchaticon\endcsname {\simpleiconsmaponezero\symbol{88}}
+ \expandafter\def\csname simpleicon@revoluticon\endcsname {\simpleiconsmaponezero\symbol{89}}
+ \expandafter\def\csname simpleicon@reweicon\endcsname {\simpleiconsmaponezero\symbol{90}}
+ \expandafter\def\csname simpleicon@rezgoicon\endcsname {\simpleiconsmaponezero\symbol{91}}
+ \expandafter\def\csname simpleicon@rhinocerosicon\endcsname {\simpleiconsmaponezero\symbol{92}}
+ \expandafter\def\csname simpleicon@richicon\endcsname {\simpleiconsmaponezero\symbol{93}}
+ \expandafter\def\csname simpleicon@ridericon\endcsname {\simpleiconsmaponezero\symbol{94}}
+ \expandafter\def\csname simpleicon@rimacautomobiliicon\endcsname {\simpleiconsmaponezero\symbol{95}}
+ \expandafter\def\csname simpleicon@rimeicon\endcsname {\simpleiconsmaponezero\symbol{96}}
+ \expandafter\def\csname simpleicon@ringicon\endcsname {\simpleiconsmaponezero\symbol{97}}
+ \expandafter\def\csname simpleicon@riotgamesicon\endcsname {\simpleiconsmaponezero\symbol{98}}
+ \expandafter\def\csname simpleicon@rippleicon\endcsname {\simpleiconsmaponezero\symbol{99}}
+ \expandafter\def\csname simpleicon@riscvicon\endcsname {\simpleiconsmaponezero\symbol{100}}
+ \expandafter\def\csname simpleicon@riseupicon\endcsname {\simpleiconsmaponezero\symbol{101}}
+ \expandafter\def\csname simpleicon@ritzcarltonicon\endcsname {\simpleiconsmaponezero\symbol{102}}
+ \expandafter\def\csname simpleicon@riveicon\endcsname {\simpleiconsmaponezero\symbol{103}}
+ \expandafter\def\csname simpleicon@roadmapdotshicon\endcsname {\simpleiconsmaponezero\symbol{104}}
+ \expandafter\def\csname simpleicon@roamresearchicon\endcsname {\simpleiconsmaponezero\symbol{105}}
+ \expandafter\def\csname simpleicon@robinhoodicon\endcsname {\simpleiconsmaponezero\symbol{106}}
+ \expandafter\def\csname simpleicon@robloxicon\endcsname {\simpleiconsmaponezero\symbol{107}}
+ \expandafter\def\csname simpleicon@robloxstudioicon\endcsname {\simpleiconsmaponezero\symbol{108}}
+ \expandafter\def\csname simpleicon@roboflowicon\endcsname {\simpleiconsmaponezero\symbol{109}}
+ \expandafter\def\csname simpleicon@robotframeworkicon\endcsname {\simpleiconsmaponezero\symbol{110}}
+ \expandafter\def\csname simpleicon@rocketicon\endcsname {\simpleiconsmaponezero\symbol{111}}
+ \expandafter\def\csname simpleicon@rocketdotchaticon\endcsname {\simpleiconsmaponezero\symbol{112}}
+ \expandafter\def\csname simpleicon@rocksdbicon\endcsname {\simpleiconsmaponezero\symbol{113}}
+ \expandafter\def\csname simpleicon@rockstargamesicon\endcsname {\simpleiconsmaponezero\symbol{114}}
+ \expandafter\def\csname simpleicon@rockwellautomationicon\endcsname {\simpleiconsmaponezero\symbol{115}}
+ \expandafter\def\csname simpleicon@rockylinuxicon\endcsname {\simpleiconsmaponezero\symbol{116}}
+ \expandafter\def\csname simpleicon@rokuicon\endcsname {\simpleiconsmaponezero\symbol{117}}
+ \expandafter\def\csname simpleicon@roll20icon\endcsname {\simpleiconsmaponezero\symbol{118}}
+ \expandafter\def\csname simpleicon@rollsroyceicon\endcsname {\simpleiconsmaponezero\symbol{119}}
+ \expandafter\def\csname simpleicon@rollupdotjsicon\endcsname {\simpleiconsmaponezero\symbol{120}}
+ \expandafter\def\csname simpleicon@rookicon\endcsname {\simpleiconsmaponezero\symbol{121}}
+ \expandafter\def\csname simpleicon@roonicon\endcsname {\simpleiconsmaponezero\symbol{122}}
+ \expandafter\def\csname simpleicon@rootmeicon\endcsname {\simpleiconsmaponezero\symbol{123}}
+ \expandafter\def\csname simpleicon@rootsicon\endcsname {\simpleiconsmaponezero\symbol{124}}
+ \expandafter\def\csname simpleicon@rootsbedrockicon\endcsname {\simpleiconsmaponezero\symbol{125}}
+ \expandafter\def\csname simpleicon@rootssageicon\endcsname {\simpleiconsmaponezero\symbol{126}}
+ \expandafter\def\csname simpleicon@rosicon\endcsname {\simpleiconsmaponezero\symbol{127}}
+ \expandafter\def\csname simpleicon@rossmannicon\endcsname {\simpleiconsmaponezero\symbol{128}}
+ \expandafter\def\csname simpleicon@rotaryinternationalicon\endcsname {\simpleiconsmaponezero\symbol{129}}
+ \expandafter\def\csname simpleicon@rottentomatoesicon\endcsname {\simpleiconsmaponezero\symbol{130}}
+ \expandafter\def\csname simpleicon@roundcubeicon\endcsname {\simpleiconsmaponezero\symbol{131}}
+ \expandafter\def\csname simpleicon@rsocketicon\endcsname {\simpleiconsmaponezero\symbol{132}}
+ \expandafter\def\csname simpleicon@rssicon\endcsname {\simpleiconsmaponezero\symbol{133}}
+ \expandafter\def\csname simpleicon@rstudioideicon\endcsname {\simpleiconsmaponezero\symbol{134}}
+ \expandafter\def\csname simpleicon@rteicon\endcsname {\simpleiconsmaponezero\symbol{135}}
+ \expandafter\def\csname simpleicon@rtlicon\endcsname {\simpleiconsmaponezero\symbol{136}}
+ \expandafter\def\csname simpleicon@rtlzweiicon\endcsname {\simpleiconsmaponezero\symbol{137}}
+ \expandafter\def\csname simpleicon@rtmicon\endcsname {\simpleiconsmaponezero\symbol{138}}
+ \expandafter\def\csname simpleicon@rubocopicon\endcsname {\simpleiconsmaponezero\symbol{139}}
+ \expandafter\def\csname simpleicon@rubyicon\endcsname {\simpleiconsmaponezero\symbol{140}}
+ \expandafter\def\csname simpleicon@rubyonrailsicon\endcsname {\simpleiconsmaponezero\symbol{141}}
+ \expandafter\def\csname simpleicon@rubysinatraicon\endcsname {\simpleiconsmaponezero\symbol{142}}
+ \expandafter\def\csname simpleicon@rubygemsicon\endcsname {\simpleiconsmaponezero\symbol{143}}
+ \expandafter\def\csname simpleicon@rubymineicon\endcsname {\simpleiconsmaponezero\symbol{144}}
+ \expandafter\def\csname simpleicon@rufficon\endcsname {\simpleiconsmaponezero\symbol{145}}
+ \expandafter\def\csname simpleicon@rumahwebicon\endcsname {\simpleiconsmaponezero\symbol{146}}
+ \expandafter\def\csname simpleicon@rumbleicon\endcsname {\simpleiconsmaponezero\symbol{147}}
+ \expandafter\def\csname simpleicon@rundeckicon\endcsname {\simpleiconsmaponezero\symbol{148}}
+ \expandafter\def\csname simpleicon@runkeepericon\endcsname {\simpleiconsmaponezero\symbol{149}}
+ \expandafter\def\csname simpleicon@runkiticon\endcsname {\simpleiconsmaponezero\symbol{150}}
+ \expandafter\def\csname simpleicon@runrundotiticon\endcsname {\simpleiconsmaponezero\symbol{151}}
+ \expandafter\def\csname simpleicon@rusticon\endcsname {\simpleiconsmaponezero\symbol{152}}
+ \expandafter\def\csname simpleicon@rustdeskicon\endcsname {\simpleiconsmaponezero\symbol{153}}
+ \expandafter\def\csname simpleicon@rxdbicon\endcsname {\simpleiconsmaponezero\symbol{154}}
+ \expandafter\def\csname simpleicon@ryanairicon\endcsname {\simpleiconsmaponezero\symbol{155}}
+ \expandafter\def\csname simpleicon@ryeicon\endcsname {\simpleiconsmaponezero\symbol{156}}
+ \expandafter\def\csname simpleicon@s7airlinesicon\endcsname {\simpleiconsmaponezero\symbol{157}}
+ \expandafter\def\csname simpleicon@sabanciicon\endcsname {\simpleiconsmaponezero\symbol{158}}
+ \expandafter\def\csname simpleicon@safariicon\endcsname {\simpleiconsmaponezero\symbol{159}}
+ \expandafter\def\csname simpleicon@sageicon\endcsname {\simpleiconsmaponezero\symbol{160}}
+ \expandafter\def\csname simpleicon@sahibindenicon\endcsname {\simpleiconsmaponezero\symbol{161}}
+ \expandafter\def\csname simpleicon@sailfishosicon\endcsname {\simpleiconsmaponezero\symbol{162}}
+ \expandafter\def\csname simpleicon@sailsdotjsicon\endcsname {\simpleiconsmaponezero\symbol{163}}
+ \expandafter\def\csname simpleicon@salesforceicon\endcsname {\simpleiconsmaponezero\symbol{164}}
+ \expandafter\def\csname simpleicon@sallaicon\endcsname {\simpleiconsmaponezero\symbol{165}}
+ \expandafter\def\csname simpleicon@saltprojecticon\endcsname {\simpleiconsmaponezero\symbol{166}}
+ \expandafter\def\csname simpleicon@samsclubicon\endcsname {\simpleiconsmaponezero\symbol{167}}
+ \expandafter\def\csname simpleicon@samsungicon\endcsname {\simpleiconsmaponezero\symbol{168}}
+ \expandafter\def\csname simpleicon@samsungpayicon\endcsname {\simpleiconsmaponezero\symbol{169}}
+ \expandafter\def\csname simpleicon@sanfranciscomunicipalrailwayicon\endcsname {\simpleiconsmaponezero\symbol{170}}
+ \expandafter\def\csname simpleicon@sandiskicon\endcsname {\simpleiconsmaponezero\symbol{171}}
+ \expandafter\def\csname simpleicon@sanicicon\endcsname {\simpleiconsmaponezero\symbol{172}}
+ \expandafter\def\csname simpleicon@sanityicon\endcsname {\simpleiconsmaponezero\symbol{173}}
+ \expandafter\def\csname simpleicon@saopaulometroicon\endcsname {\simpleiconsmaponezero\symbol{174}}
+ \expandafter\def\csname simpleicon@sapicon\endcsname {\simpleiconsmaponezero\symbol{175}}
+ \expandafter\def\csname simpleicon@sartoriusicon\endcsname {\simpleiconsmaponezero\symbol{176}}
+ \expandafter\def\csname simpleicon@sassicon\endcsname {\simpleiconsmaponezero\symbol{177}}
+ \expandafter\def\csname simpleicon@sat1icon\endcsname {\simpleiconsmaponezero\symbol{178}}
+ \expandafter\def\csname simpleicon@satelliteicon\endcsname {\simpleiconsmaponezero\symbol{179}}
+ \expandafter\def\csname simpleicon@saturnicon\endcsname {\simpleiconsmaponezero\symbol{180}}
+ \expandafter\def\csname simpleicon@saucelabsicon\endcsname {\simpleiconsmaponezero\symbol{181}}
+ \expandafter\def\csname simpleicon@saudiaicon\endcsname {\simpleiconsmaponezero\symbol{182}}
+ \expandafter\def\csname simpleicon@scalaicon\endcsname {\simpleiconsmaponezero\symbol{183}}
+ \expandafter\def\csname simpleicon@scalaricon\endcsname {\simpleiconsmaponezero\symbol{184}}
+ \expandafter\def\csname simpleicon@scalewayicon\endcsname {\simpleiconsmaponezero\symbol{185}}
+ \expandafter\def\csname simpleicon@scaniaicon\endcsname {\simpleiconsmaponezero\symbol{186}}
+ \expandafter\def\csname simpleicon@schneiderelectricicon\endcsname {\simpleiconsmaponezero\symbol{187}}
+ \expandafter\def\csname simpleicon@scikitlearnicon\endcsname {\simpleiconsmaponezero\symbol{188}}
+ \expandafter\def\csname simpleicon@scilabicon\endcsname {\simpleiconsmaponezero\symbol{189}}
+ \expandafter\def\csname simpleicon@scipyicon\endcsname {\simpleiconsmaponezero\symbol{190}}
+ \expandafter\def\csname simpleicon@scopusicon\endcsname {\simpleiconsmaponezero\symbol{191}}
+ \expandafter\def\csname simpleicon@scpfoundationicon\endcsname {\simpleiconsmaponezero\symbol{192}}
+ \expandafter\def\csname simpleicon@scrapboxicon\endcsname {\simpleiconsmaponezero\symbol{193}}
+ \expandafter\def\csname simpleicon@scrapyicon\endcsname {\simpleiconsmaponezero\symbol{194}}
+ \expandafter\def\csname simpleicon@scratchicon\endcsname {\simpleiconsmaponezero\symbol{195}}
+ \expandafter\def\csname simpleicon@screencastifyicon\endcsname {\simpleiconsmaponezero\symbol{196}}
+ \expandafter\def\csname simpleicon@scribdicon\endcsname {\simpleiconsmaponezero\symbol{197}}
+ \expandafter\def\csname simpleicon@scrimbaicon\endcsname {\simpleiconsmaponezero\symbol{198}}
+ \expandafter\def\csname simpleicon@scrollrevealicon\endcsname {\simpleiconsmaponezero\symbol{199}}
+ \expandafter\def\csname simpleicon@scrumallianceicon\endcsname {\simpleiconsmaponezero\symbol{200}}
+ \expandafter\def\csname simpleicon@scrutinizerciicon\endcsname {\simpleiconsmaponezero\symbol{201}}
+ \expandafter\def\csname simpleicon@scylladbicon\endcsname {\simpleiconsmaponezero\symbol{202}}
+ \expandafter\def\csname simpleicon@seagateicon\endcsname {\simpleiconsmaponezero\symbol{203}}
+ \expandafter\def\csname simpleicon@searxngicon\endcsname {\simpleiconsmaponezero\symbol{204}}
+ \expandafter\def\csname simpleicon@seaticon\endcsname {\simpleiconsmaponezero\symbol{205}}
+ \expandafter\def\csname simpleicon@seatgeekicon\endcsname {\simpleiconsmaponezero\symbol{206}}
+ \expandafter\def\csname simpleicon@securityscorecardicon\endcsname {\simpleiconsmaponezero\symbol{207}}
+ \expandafter\def\csname simpleicon@sefariaicon\endcsname {\simpleiconsmaponezero\symbol{208}}
+ \expandafter\def\csname simpleicon@segaicon\endcsname {\simpleiconsmaponezero\symbol{209}}
+ \expandafter\def\csname simpleicon@seleniumicon\endcsname {\simpleiconsmaponezero\symbol{210}}
+ \expandafter\def\csname simpleicon@sellfyicon\endcsname {\simpleiconsmaponezero\symbol{211}}
+ \expandafter\def\csname simpleicon@semanticscholaricon\endcsname {\simpleiconsmaponezero\symbol{212}}
+ \expandafter\def\csname simpleicon@semanticuiicon\endcsname {\simpleiconsmaponezero\symbol{213}}
+ \expandafter\def\csname simpleicon@semanticuireacticon\endcsname {\simpleiconsmaponezero\symbol{214}}
+ \expandafter\def\csname simpleicon@semanticwebicon\endcsname {\simpleiconsmaponezero\symbol{215}}
+ \expandafter\def\csname simpleicon@semanticreleaseicon\endcsname {\simpleiconsmaponezero\symbol{216}}
+ \expandafter\def\csname simpleicon@semaphoreciicon\endcsname {\simpleiconsmaponezero\symbol{217}}
+ \expandafter\def\csname simpleicon@semrushicon\endcsname {\simpleiconsmaponezero\symbol{218}}
+ \expandafter\def\csname simpleicon@semvericon\endcsname {\simpleiconsmaponezero\symbol{219}}
+ \expandafter\def\csname simpleicon@senchaicon\endcsname {\simpleiconsmaponezero\symbol{220}}
+ \expandafter\def\csname simpleicon@sendgridicon\endcsname {\simpleiconsmaponezero\symbol{221}}
+ \expandafter\def\csname simpleicon@sennheisericon\endcsname {\simpleiconsmaponezero\symbol{222}}
+ \expandafter\def\csname simpleicon@sensuicon\endcsname {\simpleiconsmaponezero\symbol{223}}
+ \expandafter\def\csname simpleicon@sentryicon\endcsname {\simpleiconsmaponezero\symbol{224}}
+ \expandafter\def\csname simpleicon@sepaicon\endcsname {\simpleiconsmaponezero\symbol{225}}
+ \expandafter\def\csname simpleicon@sequelizeicon\endcsname {\simpleiconsmaponezero\symbol{226}}
+ \expandafter\def\csname simpleicon@serverfaulticon\endcsname {\simpleiconsmaponezero\symbol{227}}
+ \expandafter\def\csname simpleicon@serverlessicon\endcsname {\simpleiconsmaponezero\symbol{228}}
+ \expandafter\def\csname simpleicon@sessionicon\endcsname {\simpleiconsmaponezero\symbol{229}}
+ \expandafter\def\csname simpleicon@sessionizeicon\endcsname {\simpleiconsmaponezero\symbol{230}}
+ \expandafter\def\csname simpleicon@setappicon\endcsname {\simpleiconsmaponezero\symbol{231}}
+ \expandafter\def\csname simpleicon@sfmlicon\endcsname {\simpleiconsmaponezero\symbol{232}}
+ \expandafter\def\csname simpleicon@shadcnuiicon\endcsname {\simpleiconsmaponezero\symbol{233}}
+ \expandafter\def\csname simpleicon@shadowicon\endcsname {\simpleiconsmaponezero\symbol{234}}
+ \expandafter\def\csname simpleicon@shanghaimetroicon\endcsname {\simpleiconsmaponezero\symbol{235}}
+ \expandafter\def\csname simpleicon@sharexicon\endcsname {\simpleiconsmaponezero\symbol{236}}
+ \expandafter\def\csname simpleicon@sharpicon\endcsname {\simpleiconsmaponezero\symbol{237}}
+ \expandafter\def\csname simpleicon@shazamicon\endcsname {\simpleiconsmaponezero\symbol{238}}
+ \expandafter\def\csname simpleicon@shellicon\endcsname {\simpleiconsmaponezero\symbol{239}}
+ \expandafter\def\csname simpleicon@shellyicon\endcsname {\simpleiconsmaponezero\symbol{240}}
+ \expandafter\def\csname simpleicon@shenzhenmetroicon\endcsname {\simpleiconsmaponezero\symbol{241}}
+ \expandafter\def\csname simpleicon@shieldsdotioicon\endcsname {\simpleiconsmaponezero\symbol{242}}
+ \expandafter\def\csname simpleicon@shikimoriicon\endcsname {\simpleiconsmaponezero\symbol{243}}
+ \expandafter\def\csname simpleicon@shopeeicon\endcsname {\simpleiconsmaponezero\symbol{244}}
+ \expandafter\def\csname simpleicon@shopifyicon\endcsname {\simpleiconsmaponezero\symbol{245}}
+ \expandafter\def\csname simpleicon@shopwareicon\endcsname {\simpleiconsmaponezero\symbol{246}}
+ \expandafter\def\csname simpleicon@shortcuticon\endcsname {\simpleiconsmaponezero\symbol{247}}
+ \expandafter\def\csname simpleicon@showpadicon\endcsname {\simpleiconsmaponezero\symbol{248}}
+ \expandafter\def\csname simpleicon@showtimeicon\endcsname {\simpleiconsmaponezero\symbol{249}}
+ \expandafter\def\csname simpleicon@showwcaseicon\endcsname {\simpleiconsmaponezero\symbol{250}}
+ \expandafter\def\csname simpleicon@shutterstockicon\endcsname {\simpleiconsmaponezero\symbol{251}}
+ \expandafter\def\csname simpleicon@sidekiqicon\endcsname {\simpleiconsmaponezero\symbol{252}}
+ \expandafter\def\csname simpleicon@sidequesticon\endcsname {\simpleiconsmaponezero\symbol{253}}
+ \expandafter\def\csname simpleicon@siemensicon\endcsname {\simpleiconsmaponezero\symbol{254}}
+ \expandafter\def\csname simpleicon@sifiveicon\endcsname {\simpleiconsmaponezero\symbol{255}}
+ \expandafter\def\csname simpleicon@signalicon\endcsname {\simpleiconsmaponeone\symbol{0}}
+ \expandafter\def\csname simpleicon@silverairwaysicon\endcsname {\simpleiconsmaponeone\symbol{1}}
+ \expandafter\def\csname simpleicon@similarwebicon\endcsname {\simpleiconsmaponeone\symbol{2}}
+ \expandafter\def\csname simpleicon@simklicon\endcsname {\simpleiconsmaponeone\symbol{3}}
+ \expandafter\def\csname simpleicon@simpleanalyticsicon\endcsname {\simpleiconsmaponeone\symbol{4}}
+ \expandafter\def\csname simpleicon@simpleiconsicon\endcsname {\simpleiconsmaponeone\symbol{5}}
+ \expandafter\def\csname simpleicon@simpleloginicon\endcsname {\simpleiconsmaponeone\symbol{6}}
+ \expandafter\def\csname simpleicon@simplenoteicon\endcsname {\simpleiconsmaponeone\symbol{7}}
+ \expandafter\def\csname simpleicon@simplexicon\endcsname {\simpleiconsmaponeone\symbol{8}}
+ \expandafter\def\csname simpleicon@sinaweiboicon\endcsname {\simpleiconsmaponeone\symbol{9}}
+ \expandafter\def\csname simpleicon@singaporeairlinesicon\endcsname {\simpleiconsmaponeone\symbol{10}}
+ \expandafter\def\csname simpleicon@singlestoreicon\endcsname {\simpleiconsmaponeone\symbol{11}}
+ \expandafter\def\csname simpleicon@sitecoreicon\endcsname {\simpleiconsmaponeone\symbol{12}}
+ \expandafter\def\csname simpleicon@sitepointicon\endcsname {\simpleiconsmaponeone\symbol{13}}
+ \expandafter\def\csname simpleicon@siyuanicon\endcsname {\simpleiconsmaponeone\symbol{14}}
+ \expandafter\def\csname simpleicon@skaffoldicon\endcsname {\simpleiconsmaponeone\symbol{15}}
+ \expandafter\def\csname simpleicon@sketchicon\endcsname {\simpleiconsmaponeone\symbol{16}}
+ \expandafter\def\csname simpleicon@sketchfabicon\endcsname {\simpleiconsmaponeone\symbol{17}}
+ \expandafter\def\csname simpleicon@sketchupicon\endcsname {\simpleiconsmaponeone\symbol{18}}
+ \expandafter\def\csname simpleicon@skillshareicon\endcsname {\simpleiconsmaponeone\symbol{19}}
+ \expandafter\def\csname simpleicon@skodaicon\endcsname {\simpleiconsmaponeone\symbol{20}}
+ \expandafter\def\csname simpleicon@skyicon\endcsname {\simpleiconsmaponeone\symbol{21}}
+ \expandafter\def\csname simpleicon@skypackicon\endcsname {\simpleiconsmaponeone\symbol{22}}
+ \expandafter\def\csname simpleicon@slackicon\endcsname {\simpleiconsmaponeone\symbol{23}}
+ \expandafter\def\csname simpleicon@slackwareicon\endcsname {\simpleiconsmaponeone\symbol{24}}
+ \expandafter\def\csname simpleicon@slashdoticon\endcsname {\simpleiconsmaponeone\symbol{25}}
+ \expandafter\def\csname simpleicon@slickpicicon\endcsname {\simpleiconsmaponeone\symbol{26}}
+ \expandafter\def\csname simpleicon@slidesicon\endcsname {\simpleiconsmaponeone\symbol{27}}
+ \expandafter\def\csname simpleicon@slideshareicon\endcsname {\simpleiconsmaponeone\symbol{28}}
+ \expandafter\def\csname simpleicon@slinticon\endcsname {\simpleiconsmaponeone\symbol{29}}
+ \expandafter\def\csname simpleicon@smarticon\endcsname {\simpleiconsmaponeone\symbol{30}}
+ \expandafter\def\csname simpleicon@smartthingsicon\endcsname {\simpleiconsmaponeone\symbol{31}}
+ \expandafter\def\csname simpleicon@smashingmagazineicon\endcsname {\simpleiconsmaponeone\symbol{32}}
+ \expandafter\def\csname simpleicon@smrticon\endcsname {\simpleiconsmaponeone\symbol{33}}
+ \expandafter\def\csname simpleicon@smugmugicon\endcsname {\simpleiconsmaponeone\symbol{34}}
+ \expandafter\def\csname simpleicon@snapchaticon\endcsname {\simpleiconsmaponeone\symbol{35}}
+ \expandafter\def\csname simpleicon@snapcrafticon\endcsname {\simpleiconsmaponeone\symbol{36}}
+ \expandafter\def\csname simpleicon@snapdragonicon\endcsname {\simpleiconsmaponeone\symbol{37}}
+ \expandafter\def\csname simpleicon@sncficon\endcsname {\simpleiconsmaponeone\symbol{38}}
+ \expandafter\def\csname simpleicon@snorticon\endcsname {\simpleiconsmaponeone\symbol{39}}
+ \expandafter\def\csname simpleicon@snowflakeicon\endcsname {\simpleiconsmaponeone\symbol{40}}
+ \expandafter\def\csname simpleicon@snowpackicon\endcsname {\simpleiconsmaponeone\symbol{41}}
+ \expandafter\def\csname simpleicon@snykicon\endcsname {\simpleiconsmaponeone\symbol{42}}
+ \expandafter\def\csname simpleicon@socialbladeicon\endcsname {\simpleiconsmaponeone\symbol{43}}
+ \expandafter\def\csname simpleicon@society6icon\endcsname {\simpleiconsmaponeone\symbol{44}}
+ \expandafter\def\csname simpleicon@socketicon\endcsname {\simpleiconsmaponeone\symbol{45}}
+ \expandafter\def\csname simpleicon@socketdotioicon\endcsname {\simpleiconsmaponeone\symbol{46}}
+ \expandafter\def\csname simpleicon@softcatalaicon\endcsname {\simpleiconsmaponeone\symbol{47}}
+ \expandafter\def\csname simpleicon@softpediaicon\endcsname {\simpleiconsmaponeone\symbol{48}}
+ \expandafter\def\csname simpleicon@sogouicon\endcsname {\simpleiconsmaponeone\symbol{49}}
+ \expandafter\def\csname simpleicon@solanaicon\endcsname {\simpleiconsmaponeone\symbol{50}}
+ \expandafter\def\csname simpleicon@solidicon\endcsname {\simpleiconsmaponeone\symbol{51}}
+ \expandafter\def\csname simpleicon@solidityicon\endcsname {\simpleiconsmaponeone\symbol{52}}
+ \expandafter\def\csname simpleicon@sololearnicon\endcsname {\simpleiconsmaponeone\symbol{53}}
+ \expandafter\def\csname simpleicon@solusicon\endcsname {\simpleiconsmaponeone\symbol{54}}
+ \expandafter\def\csname simpleicon@sonaricon\endcsname {\simpleiconsmaponeone\symbol{55}}
+ \expandafter\def\csname simpleicon@sonarcloudicon\endcsname {\simpleiconsmaponeone\symbol{56}}
+ \expandafter\def\csname simpleicon@sonarlinticon\endcsname {\simpleiconsmaponeone\symbol{57}}
+ \expandafter\def\csname simpleicon@sonarqubeicon\endcsname {\simpleiconsmaponeone\symbol{58}}
+ \expandafter\def\csname simpleicon@sonarricon\endcsname {\simpleiconsmaponeone\symbol{59}}
+ \expandafter\def\csname simpleicon@sonatypeicon\endcsname {\simpleiconsmaponeone\symbol{60}}
+ \expandafter\def\csname simpleicon@songkickicon\endcsname {\simpleiconsmaponeone\symbol{61}}
+ \expandafter\def\csname simpleicon@songodaicon\endcsname {\simpleiconsmaponeone\symbol{62}}
+ \expandafter\def\csname simpleicon@sonicwallicon\endcsname {\simpleiconsmaponeone\symbol{63}}
+ \expandafter\def\csname simpleicon@sonosicon\endcsname {\simpleiconsmaponeone\symbol{64}}
+ \expandafter\def\csname simpleicon@sonyicon\endcsname {\simpleiconsmaponeone\symbol{65}}
+ \expandafter\def\csname simpleicon@sorianaicon\endcsname {\simpleiconsmaponeone\symbol{66}}
+ \expandafter\def\csname simpleicon@soundchartsicon\endcsname {\simpleiconsmaponeone\symbol{67}}
+ \expandafter\def\csname simpleicon@soundcloudicon\endcsname {\simpleiconsmaponeone\symbol{68}}
+ \expandafter\def\csname simpleicon@sourceengineicon\endcsname {\simpleiconsmaponeone\symbol{69}}
+ \expandafter\def\csname simpleicon@sourceforgeicon\endcsname {\simpleiconsmaponeone\symbol{70}}
+ \expandafter\def\csname simpleicon@sourcehuticon\endcsname {\simpleiconsmaponeone\symbol{71}}
+ \expandafter\def\csname simpleicon@sourcetreeicon\endcsname {\simpleiconsmaponeone\symbol{72}}
+ \expandafter\def\csname simpleicon@southwestairlinesicon\endcsname {\simpleiconsmaponeone\symbol{73}}
+ \expandafter\def\csname simpleicon@spacemacsicon\endcsname {\simpleiconsmaponeone\symbol{74}}
+ \expandafter\def\csname simpleicon@spaceshipicon\endcsname {\simpleiconsmaponeone\symbol{75}}
+ \expandafter\def\csname simpleicon@spacexicon\endcsname {\simpleiconsmaponeone\symbol{76}}
+ \expandafter\def\csname simpleicon@spacyicon\endcsname {\simpleiconsmaponeone\symbol{77}}
+ \expandafter\def\csname simpleicon@sparkaricon\endcsname {\simpleiconsmaponeone\symbol{78}}
+ \expandafter\def\csname simpleicon@sparkasseicon\endcsname {\simpleiconsmaponeone\symbol{79}}
+ \expandafter\def\csname simpleicon@sparkfunicon\endcsname {\simpleiconsmaponeone\symbol{80}}
+ \expandafter\def\csname simpleicon@sparkposticon\endcsname {\simpleiconsmaponeone\symbol{81}}
+ \expandafter\def\csname simpleicon@spdxicon\endcsname {\simpleiconsmaponeone\symbol{82}}
+ \expandafter\def\csname simpleicon@speakerdeckicon\endcsname {\simpleiconsmaponeone\symbol{83}}
+ \expandafter\def\csname simpleicon@spectrumicon\endcsname {\simpleiconsmaponeone\symbol{84}}
+ \expandafter\def\csname simpleicon@speedtesticon\endcsname {\simpleiconsmaponeone\symbol{85}}
+ \expandafter\def\csname simpleicon@speedypageicon\endcsname {\simpleiconsmaponeone\symbol{86}}
+ \expandafter\def\csname simpleicon@spojicon\endcsname {\simpleiconsmaponeone\symbol{87}}
+ \expandafter\def\csname simpleicon@sphinxicon\endcsname {\simpleiconsmaponeone\symbol{88}}
+ \expandafter\def\csname simpleicon@spigotmcicon\endcsname {\simpleiconsmaponeone\symbol{89}}
+ \expandafter\def\csname simpleicon@spineicon\endcsname {\simpleiconsmaponeone\symbol{90}}
+ \expandafter\def\csname simpleicon@spinnakericon\endcsname {\simpleiconsmaponeone\symbol{91}}
+ \expandafter\def\csname simpleicon@splunkicon\endcsname {\simpleiconsmaponeone\symbol{92}}
+ \expandafter\def\csname simpleicon@spondicon\endcsname {\simpleiconsmaponeone\symbol{93}}
+ \expandafter\def\csname simpleicon@spotifyicon\endcsname {\simpleiconsmaponeone\symbol{94}}
+ \expandafter\def\csname simpleicon@spotlighticon\endcsname {\simpleiconsmaponeone\symbol{95}}
+ \expandafter\def\csname simpleicon@spreadshirticon\endcsname {\simpleiconsmaponeone\symbol{96}}
+ \expandafter\def\csname simpleicon@spreakericon\endcsname {\simpleiconsmaponeone\symbol{97}}
+ \expandafter\def\csname simpleicon@springicon\endcsname {\simpleiconsmaponeone\symbol{98}}
+ \expandafter\def\csname simpleicon@springcreatorsicon\endcsname {\simpleiconsmaponeone\symbol{99}}
+ \expandafter\def\csname simpleicon@springbooticon\endcsname {\simpleiconsmaponeone\symbol{100}}
+ \expandafter\def\csname simpleicon@springsecurityicon\endcsname {\simpleiconsmaponeone\symbol{101}}
+ \expandafter\def\csname simpleicon@spyderideicon\endcsname {\simpleiconsmaponeone\symbol{102}}
+ \expandafter\def\csname simpleicon@sqlalchemyicon\endcsname {\simpleiconsmaponeone\symbol{103}}
+ \expandafter\def\csname simpleicon@sqliteicon\endcsname {\simpleiconsmaponeone\symbol{104}}
+ \expandafter\def\csname simpleicon@squareicon\endcsname {\simpleiconsmaponeone\symbol{105}}
+ \expandafter\def\csname simpleicon@squareenixicon\endcsname {\simpleiconsmaponeone\symbol{106}}
+ \expandafter\def\csname simpleicon@squarespaceicon\endcsname {\simpleiconsmaponeone\symbol{107}}
+ \expandafter\def\csname simpleicon@srgssricon\endcsname {\simpleiconsmaponeone\symbol{108}}
+ \expandafter\def\csname simpleicon@ssrnicon\endcsname {\simpleiconsmaponeone\symbol{109}}
+ \expandafter\def\csname simpleicon@ssticon\endcsname {\simpleiconsmaponeone\symbol{110}}
+ \expandafter\def\csname simpleicon@stackexchangeicon\endcsname {\simpleiconsmaponeone\symbol{111}}
+ \expandafter\def\csname simpleicon@stackoverflowicon\endcsname {\simpleiconsmaponeone\symbol{112}}
+ \expandafter\def\csname simpleicon@stackbiticon\endcsname {\simpleiconsmaponeone\symbol{113}}
+ \expandafter\def\csname simpleicon@stackblitzicon\endcsname {\simpleiconsmaponeone\symbol{114}}
+ \expandafter\def\csname simpleicon@stackediticon\endcsname {\simpleiconsmaponeone\symbol{115}}
+ \expandafter\def\csname simpleicon@stackhawkicon\endcsname {\simpleiconsmaponeone\symbol{116}}
+ \expandafter\def\csname simpleicon@stackshareicon\endcsname {\simpleiconsmaponeone\symbol{117}}
+ \expandafter\def\csname simpleicon@stadiaicon\endcsname {\simpleiconsmaponeone\symbol{118}}
+ \expandafter\def\csname simpleicon@staffbaseicon\endcsname {\simpleiconsmaponeone\symbol{119}}
+ \expandafter\def\csname simpleicon@stagetimericon\endcsname {\simpleiconsmaponeone\symbol{120}}
+ \expandafter\def\csname simpleicon@standardresumeicon\endcsname {\simpleiconsmaponeone\symbol{121}}
+ \expandafter\def\csname simpleicon@standardjsicon\endcsname {\simpleiconsmaponeone\symbol{122}}
+ \expandafter\def\csname simpleicon@startrekicon\endcsname {\simpleiconsmaponeone\symbol{123}}
+ \expandafter\def\csname simpleicon@starbucksicon\endcsname {\simpleiconsmaponeone\symbol{124}}
+ \expandafter\def\csname simpleicon@stardockicon\endcsname {\simpleiconsmaponeone\symbol{125}}
+ \expandafter\def\csname simpleicon@starlingbankicon\endcsname {\simpleiconsmaponeone\symbol{126}}
+ \expandafter\def\csname simpleicon@starshipicon\endcsname {\simpleiconsmaponeone\symbol{127}}
+ \expandafter\def\csname simpleicon@startdotggicon\endcsname {\simpleiconsmaponeone\symbol{128}}
+ \expandafter\def\csname simpleicon@startpageicon\endcsname {\simpleiconsmaponeone\symbol{129}}
+ \expandafter\def\csname simpleicon@starzicon\endcsname {\simpleiconsmaponeone\symbol{130}}
+ \expandafter\def\csname simpleicon@statamicicon\endcsname {\simpleiconsmaponeone\symbol{131}}
+ \expandafter\def\csname simpleicon@statistaicon\endcsname {\simpleiconsmaponeone\symbol{132}}
+ \expandafter\def\csname simpleicon@statuspageicon\endcsname {\simpleiconsmaponeone\symbol{133}}
+ \expandafter\def\csname simpleicon@statuspalicon\endcsname {\simpleiconsmaponeone\symbol{134}}
+ \expandafter\def\csname simpleicon@steamicon\endcsname {\simpleiconsmaponeone\symbol{135}}
+ \expandafter\def\csname simpleicon@steamdeckicon\endcsname {\simpleiconsmaponeone\symbol{136}}
+ \expandafter\def\csname simpleicon@steamdbicon\endcsname {\simpleiconsmaponeone\symbol{137}}
+ \expandafter\def\csname simpleicon@steamworksicon\endcsname {\simpleiconsmaponeone\symbol{138}}
+ \expandafter\def\csname simpleicon@steelseriesicon\endcsname {\simpleiconsmaponeone\symbol{139}}
+ \expandafter\def\csname simpleicon@steemicon\endcsname {\simpleiconsmaponeone\symbol{140}}
+ \expandafter\def\csname simpleicon@steemiticon\endcsname {\simpleiconsmaponeone\symbol{141}}
+ \expandafter\def\csname simpleicon@steinbergicon\endcsname {\simpleiconsmaponeone\symbol{142}}
+ \expandafter\def\csname simpleicon@stellaricon\endcsname {\simpleiconsmaponeone\symbol{143}}
+ \expandafter\def\csname simpleicon@stencilicon\endcsname {\simpleiconsmaponeone\symbol{144}}
+ \expandafter\def\csname simpleicon@stencylicon\endcsname {\simpleiconsmaponeone\symbol{145}}
+ \expandafter\def\csname simpleicon@stimulusicon\endcsname {\simpleiconsmaponeone\symbol{146}}
+ \expandafter\def\csname simpleicon@stmicroelectronicsicon\endcsname {\simpleiconsmaponeone\symbol{147}}
+ \expandafter\def\csname simpleicon@stockxicon\endcsname {\simpleiconsmaponeone\symbol{148}}
+ \expandafter\def\csname simpleicon@stopstalkicon\endcsname {\simpleiconsmaponeone\symbol{149}}
+ \expandafter\def\csname simpleicon@storyblokicon\endcsname {\simpleiconsmaponeone\symbol{150}}
+ \expandafter\def\csname simpleicon@storybookicon\endcsname {\simpleiconsmaponeone\symbol{151}}
+ \expandafter\def\csname simpleicon@strapiicon\endcsname {\simpleiconsmaponeone\symbol{152}}
+ \expandafter\def\csname simpleicon@stravaicon\endcsname {\simpleiconsmaponeone\symbol{153}}
+ \expandafter\def\csname simpleicon@streamlabsicon\endcsname {\simpleiconsmaponeone\symbol{154}}
+ \expandafter\def\csname simpleicon@streamliticon\endcsname {\simpleiconsmaponeone\symbol{155}}
+ \expandafter\def\csname simpleicon@streamrunnersicon\endcsname {\simpleiconsmaponeone\symbol{156}}
+ \expandafter\def\csname simpleicon@stremioicon\endcsname {\simpleiconsmaponeone\symbol{157}}
+ \expandafter\def\csname simpleicon@stripeicon\endcsname {\simpleiconsmaponeone\symbol{158}}
+ \expandafter\def\csname simpleicon@strongswanicon\endcsname {\simpleiconsmaponeone\symbol{159}}
+ \expandafter\def\csname simpleicon@strykericon\endcsname {\simpleiconsmaponeone\symbol{160}}
+ \expandafter\def\csname simpleicon@stubhubicon\endcsname {\simpleiconsmaponeone\symbol{161}}
+ \expandafter\def\csname simpleicon@studio3ticon\endcsname {\simpleiconsmaponeone\symbol{162}}
+ \expandafter\def\csname simpleicon@styledcomponentsicon\endcsname {\simpleiconsmaponeone\symbol{163}}
+ \expandafter\def\csname simpleicon@stylelinticon\endcsname {\simpleiconsmaponeone\symbol{164}}
+ \expandafter\def\csname simpleicon@styleshareicon\endcsname {\simpleiconsmaponeone\symbol{165}}
+ \expandafter\def\csname simpleicon@stylusicon\endcsname {\simpleiconsmaponeone\symbol{166}}
+ \expandafter\def\csname simpleicon@subaruicon\endcsname {\simpleiconsmaponeone\symbol{167}}
+ \expandafter\def\csname simpleicon@sublimetexticon\endcsname {\simpleiconsmaponeone\symbol{168}}
+ \expandafter\def\csname simpleicon@substackicon\endcsname {\simpleiconsmaponeone\symbol{169}}
+ \expandafter\def\csname simpleicon@subtitleediticon\endcsname {\simpleiconsmaponeone\symbol{170}}
+ \expandafter\def\csname simpleicon@subversionicon\endcsname {\simpleiconsmaponeone\symbol{171}}
+ \expandafter\def\csname simpleicon@sucklessicon\endcsname {\simpleiconsmaponeone\symbol{172}}
+ \expandafter\def\csname simpleicon@suiicon\endcsname {\simpleiconsmaponeone\symbol{173}}
+ \expandafter\def\csname simpleicon@sumologicicon\endcsname {\simpleiconsmaponeone\symbol{174}}
+ \expandafter\def\csname simpleicon@sunoicon\endcsname {\simpleiconsmaponeone\symbol{175}}
+ \expandafter\def\csname simpleicon@sunriseicon\endcsname {\simpleiconsmaponeone\symbol{176}}
+ \expandafter\def\csname simpleicon@supabaseicon\endcsname {\simpleiconsmaponeone\symbol{177}}
+ \expandafter\def\csname simpleicon@superusericon\endcsname {\simpleiconsmaponeone\symbol{178}}
+ \expandafter\def\csname simpleicon@supercreaseicon\endcsname {\simpleiconsmaponeone\symbol{179}}
+ \expandafter\def\csname simpleicon@supermicroicon\endcsname {\simpleiconsmaponeone\symbol{180}}
+ \expandafter\def\csname simpleicon@surfsharkicon\endcsname {\simpleiconsmaponeone\symbol{181}}
+ \expandafter\def\csname simpleicon@surrealdbicon\endcsname {\simpleiconsmaponeone\symbol{182}}
+ \expandafter\def\csname simpleicon@surveymonkeyicon\endcsname {\simpleiconsmaponeone\symbol{183}}
+ \expandafter\def\csname simpleicon@suseicon\endcsname {\simpleiconsmaponeone\symbol{184}}
+ \expandafter\def\csname simpleicon@suzukiicon\endcsname {\simpleiconsmaponeone\symbol{185}}
+ \expandafter\def\csname simpleicon@svelteicon\endcsname {\simpleiconsmaponeone\symbol{186}}
+ \expandafter\def\csname simpleicon@svgicon\endcsname {\simpleiconsmaponeone\symbol{187}}
+ \expandafter\def\csname simpleicon@svgdotjsicon\endcsname {\simpleiconsmaponeone\symbol{188}}
+ \expandafter\def\csname simpleicon@svgoicon\endcsname {\simpleiconsmaponeone\symbol{189}}
+ \expandafter\def\csname simpleicon@svgtraceicon\endcsname {\simpleiconsmaponeone\symbol{190}}
+ \expandafter\def\csname simpleicon@swaggericon\endcsname {\simpleiconsmaponeone\symbol{191}}
+ \expandafter\def\csname simpleicon@swarmicon\endcsname {\simpleiconsmaponeone\symbol{192}}
+ \expandafter\def\csname simpleicon@swayicon\endcsname {\simpleiconsmaponeone\symbol{193}}
+ \expandafter\def\csname simpleicon@swcicon\endcsname {\simpleiconsmaponeone\symbol{194}}
+ \expandafter\def\csname simpleicon@swifticon\endcsname {\simpleiconsmaponeone\symbol{195}}
+ \expandafter\def\csname simpleicon@swiggyicon\endcsname {\simpleiconsmaponeone\symbol{196}}
+ \expandafter\def\csname simpleicon@swipericon\endcsname {\simpleiconsmaponeone\symbol{197}}
+ \expandafter\def\csname simpleicon@swricon\endcsname {\simpleiconsmaponeone\symbol{198}}
+ \expandafter\def\csname simpleicon@symantecicon\endcsname {\simpleiconsmaponeone\symbol{199}}
+ \expandafter\def\csname simpleicon@symbolabicon\endcsname {\simpleiconsmaponeone\symbol{200}}
+ \expandafter\def\csname simpleicon@symfonyicon\endcsname {\simpleiconsmaponeone\symbol{201}}
+ \expandafter\def\csname simpleicon@symphonyicon\endcsname {\simpleiconsmaponeone\symbol{202}}
+ \expandafter\def\csname simpleicon@sympyicon\endcsname {\simpleiconsmaponeone\symbol{203}}
+ \expandafter\def\csname simpleicon@syncthingicon\endcsname {\simpleiconsmaponeone\symbol{204}}
+ \expandafter\def\csname simpleicon@synologyicon\endcsname {\simpleiconsmaponeone\symbol{205}}
+ \expandafter\def\csname simpleicon@system76icon\endcsname {\simpleiconsmaponeone\symbol{206}}
+ \expandafter\def\csname simpleicon@tabelogicon\endcsname {\simpleiconsmaponeone\symbol{207}}
+ \expandafter\def\csname simpleicon@tablecheckicon\endcsname {\simpleiconsmaponeone\symbol{208}}
+ \expandafter\def\csname simpleicon@tacobellicon\endcsname {\simpleiconsmaponeone\symbol{209}}
+ \expandafter\def\csname simpleicon@tadoicon\endcsname {\simpleiconsmaponeone\symbol{210}}
+ \expandafter\def\csname simpleicon@taichigraphicsicon\endcsname {\simpleiconsmaponeone\symbol{211}}
+ \expandafter\def\csname simpleicon@taichilangicon\endcsname {\simpleiconsmaponeone\symbol{212}}
+ \expandafter\def\csname simpleicon@tailsicon\endcsname {\simpleiconsmaponeone\symbol{213}}
+ \expandafter\def\csname simpleicon@tailscaleicon\endcsname {\simpleiconsmaponeone\symbol{214}}
+ \expandafter\def\csname simpleicon@tailwindcssicon\endcsname {\simpleiconsmaponeone\symbol{215}}
+ \expandafter\def\csname simpleicon@taipyicon\endcsname {\simpleiconsmaponeone\symbol{216}}
+ \expandafter\def\csname simpleicon@taketwointeractivesoftwareicon\endcsname {\simpleiconsmaponeone\symbol{217}}
+ \expandafter\def\csname simpleicon@talendicon\endcsname {\simpleiconsmaponeone\symbol{218}}
+ \expandafter\def\csname simpleicon@talenthouseicon\endcsname {\simpleiconsmaponeone\symbol{219}}
+ \expandafter\def\csname simpleicon@talosicon\endcsname {\simpleiconsmaponeone\symbol{220}}
+ \expandafter\def\csname simpleicon@tamiyaicon\endcsname {\simpleiconsmaponeone\symbol{221}}
+ \expandafter\def\csname simpleicon@tampermonkeyicon\endcsname {\simpleiconsmaponeone\symbol{222}}
+ \expandafter\def\csname simpleicon@taobaoicon\endcsname {\simpleiconsmaponeone\symbol{223}}
+ \expandafter\def\csname simpleicon@tapasicon\endcsname {\simpleiconsmaponeone\symbol{224}}
+ \expandafter\def\csname simpleicon@targeticon\endcsname {\simpleiconsmaponeone\symbol{225}}
+ \expandafter\def\csname simpleicon@taromicon\endcsname {\simpleiconsmaponeone\symbol{226}}
+ \expandafter\def\csname simpleicon@taskicon\endcsname {\simpleiconsmaponeone\symbol{227}}
+ \expandafter\def\csname simpleicon@tasmotaicon\endcsname {\simpleiconsmaponeone\symbol{228}}
+ \expandafter\def\csname simpleicon@tataicon\endcsname {\simpleiconsmaponeone\symbol{229}}
+ \expandafter\def\csname simpleicon@tcsicon\endcsname {\simpleiconsmaponeone\symbol{230}}
+ \expandafter\def\csname simpleicon@tauriicon\endcsname {\simpleiconsmaponeone\symbol{231}}
+ \expandafter\def\csname simpleicon@taxbuzzicon\endcsname {\simpleiconsmaponeone\symbol{232}}
+ \expandafter\def\csname simpleicon@tealicon\endcsname {\simpleiconsmaponeone\symbol{233}}
+ \expandafter\def\csname simpleicon@teamcityicon\endcsname {\simpleiconsmaponeone\symbol{234}}
+ \expandafter\def\csname simpleicon@teamspeakicon\endcsname {\simpleiconsmaponeone\symbol{235}}
+ \expandafter\def\csname simpleicon@teamviewericon\endcsname {\simpleiconsmaponeone\symbol{236}}
+ \expandafter\def\csname simpleicon@techcrunchicon\endcsname {\simpleiconsmaponeone\symbol{237}}
+ \expandafter\def\csname simpleicon@tedicon\endcsname {\simpleiconsmaponeone\symbol{238}}
+ \expandafter\def\csname simpleicon@teepublicicon\endcsname {\simpleiconsmaponeone\symbol{239}}
+ \expandafter\def\csname simpleicon@teespringicon\endcsname {\simpleiconsmaponeone\symbol{240}}
+ \expandafter\def\csname simpleicon@tektonicon\endcsname {\simpleiconsmaponeone\symbol{241}}
+ \expandafter\def\csname simpleicon@tele5icon\endcsname {\simpleiconsmaponeone\symbol{242}}
+ \expandafter\def\csname simpleicon@telequebecicon\endcsname {\simpleiconsmaponeone\symbol{243}}
+ \expandafter\def\csname simpleicon@telefonicaicon\endcsname {\simpleiconsmaponeone\symbol{244}}
+ \expandafter\def\csname simpleicon@telegramicon\endcsname {\simpleiconsmaponeone\symbol{245}}
+ \expandafter\def\csname simpleicon@telegraphicon\endcsname {\simpleiconsmaponeone\symbol{246}}
+ \expandafter\def\csname simpleicon@temporalicon\endcsname {\simpleiconsmaponeone\symbol{247}}
+ \expandafter\def\csname simpleicon@tensorflowicon\endcsname {\simpleiconsmaponeone\symbol{248}}
+ \expandafter\def\csname simpleicon@teradataicon\endcsname {\simpleiconsmaponeone\symbol{249}}
+ \expandafter\def\csname simpleicon@teratailicon\endcsname {\simpleiconsmaponeone\symbol{250}}
+ \expandafter\def\csname simpleicon@termiusicon\endcsname {\simpleiconsmaponeone\symbol{251}}
+ \expandafter\def\csname simpleicon@terraformicon\endcsname {\simpleiconsmaponeone\symbol{252}}
+ \expandafter\def\csname simpleicon@tescoicon\endcsname {\simpleiconsmaponeone\symbol{253}}
+ \expandafter\def\csname simpleicon@teslaicon\endcsname {\simpleiconsmaponeone\symbol{254}}
+ \expandafter\def\csname simpleicon@testcafeicon\endcsname {\simpleiconsmaponeone\symbol{255}}
+ \expandafter\def\csname simpleicon@testinicon\endcsname {\simpleiconsmaponetwo\symbol{0}}
+ \expandafter\def\csname simpleicon@testinglibraryicon\endcsname {\simpleiconsmaponetwo\symbol{1}}
+ \expandafter\def\csname simpleicon@testrailicon\endcsname {\simpleiconsmaponetwo\symbol{2}}
+ \expandafter\def\csname simpleicon@tethericon\endcsname {\simpleiconsmaponetwo\symbol{3}}
+ \expandafter\def\csname simpleicon@textpatternicon\endcsname {\simpleiconsmaponetwo\symbol{4}}
+ \expandafter\def\csname simpleicon@tgaicon\endcsname {\simpleiconsmaponetwo\symbol{5}}
+ \expandafter\def\csname simpleicon@thangsicon\endcsname {\simpleiconsmaponetwo\symbol{6}}
+ \expandafter\def\csname simpleicon@thanosicon\endcsname {\simpleiconsmaponetwo\symbol{7}}
+ \expandafter\def\csname simpleicon@thealgorithmsicon\endcsname {\simpleiconsmaponetwo\symbol{8}}
+ \expandafter\def\csname simpleicon@theboringcompanyicon\endcsname {\simpleiconsmaponetwo\symbol{9}}
+ \expandafter\def\csname simpleicon@theconversationicon\endcsname {\simpleiconsmaponetwo\symbol{10}}
+ \expandafter\def\csname simpleicon@thefinalsicon\endcsname {\simpleiconsmaponetwo\symbol{11}}
+ \expandafter\def\csname simpleicon@theguardianicon\endcsname {\simpleiconsmaponetwo\symbol{12}}
+ \expandafter\def\csname simpleicon@theirishtimesicon\endcsname {\simpleiconsmaponetwo\symbol{13}}
+ \expandafter\def\csname simpleicon@themightyicon\endcsname {\simpleiconsmaponetwo\symbol{14}}
+ \expandafter\def\csname simpleicon@themodelsresourceicon\endcsname {\simpleiconsmaponetwo\symbol{15}}
+ \expandafter\def\csname simpleicon@themoviedatabaseicon\endcsname {\simpleiconsmaponetwo\symbol{16}}
+ \expandafter\def\csname simpleicon@thenorthfaceicon\endcsname {\simpleiconsmaponetwo\symbol{17}}
+ \expandafter\def\csname simpleicon@theodinprojecticon\endcsname {\simpleiconsmaponetwo\symbol{18}}
+ \expandafter\def\csname simpleicon@theregistericon\endcsname {\simpleiconsmaponetwo\symbol{19}}
+ \expandafter\def\csname simpleicon@thesoundsresourceicon\endcsname {\simpleiconsmaponetwo\symbol{20}}
+ \expandafter\def\csname simpleicon@thespritersresourceicon\endcsname {\simpleiconsmaponetwo\symbol{21}}
+ \expandafter\def\csname simpleicon@thewashingtonposticon\endcsname {\simpleiconsmaponetwo\symbol{22}}
+ \expandafter\def\csname simpleicon@theweatherchannelicon\endcsname {\simpleiconsmaponetwo\symbol{23}}
+ \expandafter\def\csname simpleicon@thingiverseicon\endcsname {\simpleiconsmaponetwo\symbol{24}}
+ \expandafter\def\csname simpleicon@thinkpadicon\endcsname {\simpleiconsmaponetwo\symbol{25}}
+ \expandafter\def\csname simpleicon@thirdwebicon\endcsname {\simpleiconsmaponetwo\symbol{26}}
+ \expandafter\def\csname simpleicon@threadlessicon\endcsname {\simpleiconsmaponetwo\symbol{27}}
+ \expandafter\def\csname simpleicon@threadsicon\endcsname {\simpleiconsmaponetwo\symbol{28}}
+ \expandafter\def\csname simpleicon@threedotjsicon\endcsname {\simpleiconsmaponetwo\symbol{29}}
+ \expandafter\def\csname simpleicon@threemaicon\endcsname {\simpleiconsmaponetwo\symbol{30}}
+ \expandafter\def\csname simpleicon@thumbtackicon\endcsname {\simpleiconsmaponetwo\symbol{31}}
+ \expandafter\def\csname simpleicon@thunderbirdicon\endcsname {\simpleiconsmaponetwo\symbol{32}}
+ \expandafter\def\csname simpleicon@thunderstoreicon\endcsname {\simpleiconsmaponetwo\symbol{33}}
+ \expandafter\def\csname simpleicon@thurgauerkantonalbankicon\endcsname {\simpleiconsmaponetwo\symbol{34}}
+ \expandafter\def\csname simpleicon@thymeleaficon\endcsname {\simpleiconsmaponetwo\symbol{35}}
+ \expandafter\def\csname simpleicon@ticketmastericon\endcsname {\simpleiconsmaponetwo\symbol{36}}
+ \expandafter\def\csname simpleicon@ticktickicon\endcsname {\simpleiconsmaponetwo\symbol{37}}
+ \expandafter\def\csname simpleicon@tidalicon\endcsname {\simpleiconsmaponetwo\symbol{38}}
+ \expandafter\def\csname simpleicon@tiddlywikiicon\endcsname {\simpleiconsmaponetwo\symbol{39}}
+ \expandafter\def\csname simpleicon@tideicon\endcsname {\simpleiconsmaponetwo\symbol{40}}
+ \expandafter\def\csname simpleicon@tidyverseicon\endcsname {\simpleiconsmaponetwo\symbol{41}}
+ \expandafter\def\csname simpleicon@tietoevryicon\endcsname {\simpleiconsmaponetwo\symbol{42}}
+ \expandafter\def\csname simpleicon@tiktokicon\endcsname {\simpleiconsmaponetwo\symbol{43}}
+ \expandafter\def\csname simpleicon@tildapublishingicon\endcsname {\simpleiconsmaponetwo\symbol{44}}
+ \expandafter\def\csname simpleicon@tileicon\endcsname {\simpleiconsmaponetwo\symbol{45}}
+ \expandafter\def\csname simpleicon@timescaleicon\endcsname {\simpleiconsmaponetwo\symbol{46}}
+ \expandafter\def\csname simpleicon@tinaicon\endcsname {\simpleiconsmaponetwo\symbol{47}}
+ \expandafter\def\csname simpleicon@tindericon\endcsname {\simpleiconsmaponetwo\symbol{48}}
+ \expandafter\def\csname simpleicon@tindieicon\endcsname {\simpleiconsmaponetwo\symbol{49}}
+ \expandafter\def\csname simpleicon@tinkercadicon\endcsname {\simpleiconsmaponetwo\symbol{50}}
+ \expandafter\def\csname simpleicon@tinygradicon\endcsname {\simpleiconsmaponetwo\symbol{51}}
+ \expandafter\def\csname simpleicon@tinylettericon\endcsname {\simpleiconsmaponetwo\symbol{52}}
+ \expandafter\def\csname simpleicon@tistoryicon\endcsname {\simpleiconsmaponetwo\symbol{53}}
+ \expandafter\def\csname simpleicon@tldrawicon\endcsname {\simpleiconsmaponetwo\symbol{54}}
+ \expandafter\def\csname simpleicon@tmuxicon\endcsname {\simpleiconsmaponetwo\symbol{55}}
+ \expandafter\def\csname simpleicon@todoisticon\endcsname {\simpleiconsmaponetwo\symbol{56}}
+ \expandafter\def\csname simpleicon@togglicon\endcsname {\simpleiconsmaponetwo\symbol{57}}
+ \expandafter\def\csname simpleicon@toggltrackicon\endcsname {\simpleiconsmaponetwo\symbol{58}}
+ \expandafter\def\csname simpleicon@tokyometroicon\endcsname {\simpleiconsmaponetwo\symbol{59}}
+ \expandafter\def\csname simpleicon@tollicon\endcsname {\simpleiconsmaponetwo\symbol{60}}
+ \expandafter\def\csname simpleicon@tomlicon\endcsname {\simpleiconsmaponetwo\symbol{61}}
+ \expandafter\def\csname simpleicon@tomorrowlandicon\endcsname {\simpleiconsmaponetwo\symbol{62}}
+ \expandafter\def\csname simpleicon@tomtomicon\endcsname {\simpleiconsmaponetwo\symbol{63}}
+ \expandafter\def\csname simpleicon@tonicon\endcsname {\simpleiconsmaponetwo\symbol{64}}
+ \expandafter\def\csname simpleicon@topdotggicon\endcsname {\simpleiconsmaponetwo\symbol{65}}
+ \expandafter\def\csname simpleicon@topcodericon\endcsname {\simpleiconsmaponetwo\symbol{66}}
+ \expandafter\def\csname simpleicon@toptalicon\endcsname {\simpleiconsmaponetwo\symbol{67}}
+ \expandafter\def\csname simpleicon@torbrowsericon\endcsname {\simpleiconsmaponetwo\symbol{68}}
+ \expandafter\def\csname simpleicon@torprojecticon\endcsname {\simpleiconsmaponetwo\symbol{69}}
+ \expandafter\def\csname simpleicon@toshibaicon\endcsname {\simpleiconsmaponetwo\symbol{70}}
+ \expandafter\def\csname simpleicon@totvsicon\endcsname {\simpleiconsmaponetwo\symbol{71}}
+ \expandafter\def\csname simpleicon@tourboxicon\endcsname {\simpleiconsmaponetwo\symbol{72}}
+ \expandafter\def\csname simpleicon@towericon\endcsname {\simpleiconsmaponetwo\symbol{73}}
+ \expandafter\def\csname simpleicon@toyotaicon\endcsname {\simpleiconsmaponetwo\symbol{74}}
+ \expandafter\def\csname simpleicon@tplinkicon\endcsname {\simpleiconsmaponetwo\symbol{75}}
+ \expandafter\def\csname simpleicon@tqdmicon\endcsname {\simpleiconsmaponetwo\symbol{76}}
+ \expandafter\def\csname simpleicon@traccaricon\endcsname {\simpleiconsmaponetwo\symbol{77}}
+ \expandafter\def\csname simpleicon@tradingviewicon\endcsname {\simpleiconsmaponetwo\symbol{78}}
+ \expandafter\def\csname simpleicon@traefikmeshicon\endcsname {\simpleiconsmaponetwo\symbol{79}}
+ \expandafter\def\csname simpleicon@traefikproxyicon\endcsname {\simpleiconsmaponetwo\symbol{80}}
+ \expandafter\def\csname simpleicon@trailforksicon\endcsname {\simpleiconsmaponetwo\symbol{81}}
+ \expandafter\def\csname simpleicon@trainerroadicon\endcsname {\simpleiconsmaponetwo\symbol{82}}
+ \expandafter\def\csname simpleicon@trakticon\endcsname {\simpleiconsmaponetwo\symbol{83}}
+ \expandafter\def\csname simpleicon@transifexicon\endcsname {\simpleiconsmaponetwo\symbol{84}}
+ \expandafter\def\csname simpleicon@transmissionicon\endcsname {\simpleiconsmaponetwo\symbol{85}}
+ \expandafter\def\csname simpleicon@transportforirelandicon\endcsname {\simpleiconsmaponetwo\symbol{86}}
+ \expandafter\def\csname simpleicon@transportforlondonicon\endcsname {\simpleiconsmaponetwo\symbol{87}}
+ \expandafter\def\csname simpleicon@travisciicon\endcsname {\simpleiconsmaponetwo\symbol{88}}
+ \expandafter\def\csname simpleicon@treehouseicon\endcsname {\simpleiconsmaponetwo\symbol{89}}
+ \expandafter\def\csname simpleicon@trelloicon\endcsname {\simpleiconsmaponetwo\symbol{90}}
+ \expandafter\def\csname simpleicon@trendmicroicon\endcsname {\simpleiconsmaponetwo\symbol{91}}
+ \expandafter\def\csname simpleicon@treyarchicon\endcsname {\simpleiconsmaponetwo\symbol{92}}
+ \expandafter\def\csname simpleicon@tricentisicon\endcsname {\simpleiconsmaponetwo\symbol{93}}
+ \expandafter\def\csname simpleicon@triliumicon\endcsname {\simpleiconsmaponetwo\symbol{94}}
+ \expandafter\def\csname simpleicon@trillericon\endcsname {\simpleiconsmaponetwo\symbol{95}}
+ \expandafter\def\csname simpleicon@trillertvicon\endcsname {\simpleiconsmaponetwo\symbol{96}}
+ \expandafter\def\csname simpleicon@trimbleicon\endcsname {\simpleiconsmaponetwo\symbol{97}}
+ \expandafter\def\csname simpleicon@trinoicon\endcsname {\simpleiconsmaponetwo\symbol{98}}
+ \expandafter\def\csname simpleicon@tripdotcomicon\endcsname {\simpleiconsmaponetwo\symbol{99}}
+ \expandafter\def\csname simpleicon@tripadvisoricon\endcsname {\simpleiconsmaponetwo\symbol{100}}
+ \expandafter\def\csname simpleicon@trivagoicon\endcsname {\simpleiconsmaponetwo\symbol{101}}
+ \expandafter\def\csname simpleicon@trivyicon\endcsname {\simpleiconsmaponetwo\symbol{102}}
+ \expandafter\def\csname simpleicon@troveicon\endcsname {\simpleiconsmaponetwo\symbol{103}}
+ \expandafter\def\csname simpleicon@trpcicon\endcsname {\simpleiconsmaponetwo\symbol{104}}
+ \expandafter\def\csname simpleicon@truenasicon\endcsname {\simpleiconsmaponetwo\symbol{105}}
+ \expandafter\def\csname simpleicon@trueupicon\endcsname {\simpleiconsmaponetwo\symbol{106}}
+ \expandafter\def\csname simpleicon@truliaicon\endcsname {\simpleiconsmaponetwo\symbol{107}}
+ \expandafter\def\csname simpleicon@trustedshopsicon\endcsname {\simpleiconsmaponetwo\symbol{108}}
+ \expandafter\def\csname simpleicon@trustpiloticon\endcsname {\simpleiconsmaponetwo\symbol{109}}
+ \expandafter\def\csname simpleicon@tryitonlineicon\endcsname {\simpleiconsmaponetwo\symbol{110}}
+ \expandafter\def\csname simpleicon@tryhackmeicon\endcsname {\simpleiconsmaponetwo\symbol{111}}
+ \expandafter\def\csname simpleicon@tsnodeicon\endcsname {\simpleiconsmaponetwo\symbol{112}}
+ \expandafter\def\csname simpleicon@tubiicon\endcsname {\simpleiconsmaponetwo\symbol{113}}
+ \expandafter\def\csname simpleicon@tuiicon\endcsname {\simpleiconsmaponetwo\symbol{114}}
+ \expandafter\def\csname simpleicon@tumblricon\endcsname {\simpleiconsmaponetwo\symbol{115}}
+ \expandafter\def\csname simpleicon@tuneinicon\endcsname {\simpleiconsmaponetwo\symbol{116}}
+ \expandafter\def\csname simpleicon@turboicon\endcsname {\simpleiconsmaponetwo\symbol{117}}
+ \expandafter\def\csname simpleicon@turborepoicon\endcsname {\simpleiconsmaponetwo\symbol{118}}
+ \expandafter\def\csname simpleicon@turbosquidicon\endcsname {\simpleiconsmaponetwo\symbol{119}}
+ \expandafter\def\csname simpleicon@turkishairlinesicon\endcsname {\simpleiconsmaponetwo\symbol{120}}
+ \expandafter\def\csname simpleicon@tursoicon\endcsname {\simpleiconsmaponetwo\symbol{121}}
+ \expandafter\def\csname simpleicon@tutaicon\endcsname {\simpleiconsmaponetwo\symbol{122}}
+ \expandafter\def\csname simpleicon@tvtimeicon\endcsname {\simpleiconsmaponetwo\symbol{123}}
+ \expandafter\def\csname simpleicon@tv4playicon\endcsname {\simpleiconsmaponetwo\symbol{124}}
+ \expandafter\def\csname simpleicon@twilioicon\endcsname {\simpleiconsmaponetwo\symbol{125}}
+ \expandafter\def\csname simpleicon@twinklyicon\endcsname {\simpleiconsmaponetwo\symbol{126}}
+ \expandafter\def\csname simpleicon@twinmotionicon\endcsname {\simpleiconsmaponetwo\symbol{127}}
+ \expandafter\def\csname simpleicon@twitchicon\endcsname {\simpleiconsmaponetwo\symbol{128}}
+ \expandafter\def\csname simpleicon@typeformicon\endcsname {\simpleiconsmaponetwo\symbol{129}}
+ \expandafter\def\csname simpleicon@typeormicon\endcsname {\simpleiconsmaponetwo\symbol{130}}
+ \expandafter\def\csname simpleicon@typericon\endcsname {\simpleiconsmaponetwo\symbol{131}}
+ \expandafter\def\csname simpleicon@typescripticon\endcsname {\simpleiconsmaponetwo\symbol{132}}
+ \expandafter\def\csname simpleicon@typo3icon\endcsname {\simpleiconsmaponetwo\symbol{133}}
+ \expandafter\def\csname simpleicon@typsticon\endcsname {\simpleiconsmaponetwo\symbol{134}}
+ \expandafter\def\csname simpleicon@udotsdotnewsicon\endcsname {\simpleiconsmaponetwo\symbol{135}}
+ \expandafter\def\csname simpleicon@ubericon\endcsname {\simpleiconsmaponetwo\symbol{136}}
+ \expandafter\def\csname simpleicon@ubereatsicon\endcsname {\simpleiconsmaponetwo\symbol{137}}
+ \expandafter\def\csname simpleicon@ubiquitiicon\endcsname {\simpleiconsmaponetwo\symbol{138}}
+ \expandafter\def\csname simpleicon@ubisofticon\endcsname {\simpleiconsmaponetwo\symbol{139}}
+ \expandafter\def\csname simpleicon@ublockoriginicon\endcsname {\simpleiconsmaponetwo\symbol{140}}
+ \expandafter\def\csname simpleicon@ubuntuicon\endcsname {\simpleiconsmaponetwo\symbol{141}}
+ \expandafter\def\csname simpleicon@ubuntumateicon\endcsname {\simpleiconsmaponetwo\symbol{142}}
+ \expandafter\def\csname simpleicon@udacityicon\endcsname {\simpleiconsmaponetwo\symbol{143}}
+ \expandafter\def\csname simpleicon@udemyicon\endcsname {\simpleiconsmaponetwo\symbol{144}}
+ \expandafter\def\csname simpleicon@ufcicon\endcsname {\simpleiconsmaponetwo\symbol{145}}
+ \expandafter\def\csname simpleicon@uikiticon\endcsname {\simpleiconsmaponetwo\symbol{146}}
+ \expandafter\def\csname simpleicon@uipathicon\endcsname {\simpleiconsmaponetwo\symbol{147}}
+ \expandafter\def\csname simpleicon@ukcaicon\endcsname {\simpleiconsmaponetwo\symbol{148}}
+ \expandafter\def\csname simpleicon@ultralyticsicon\endcsname {\simpleiconsmaponetwo\symbol{149}}
+ \expandafter\def\csname simpleicon@ululeicon\endcsname {\simpleiconsmaponetwo\symbol{150}}
+ \expandafter\def\csname simpleicon@umamiicon\endcsname {\simpleiconsmaponetwo\symbol{151}}
+ \expandafter\def\csname simpleicon@umbracoicon\endcsname {\simpleiconsmaponetwo\symbol{152}}
+ \expandafter\def\csname simpleicon@umlicon\endcsname {\simpleiconsmaponetwo\symbol{153}}
+ \expandafter\def\csname simpleicon@unacademyicon\endcsname {\simpleiconsmaponetwo\symbol{154}}
+ \expandafter\def\csname simpleicon@underarmouricon\endcsname {\simpleiconsmaponetwo\symbol{155}}
+ \expandafter\def\csname simpleicon@underscoredotjsicon\endcsname {\simpleiconsmaponetwo\symbol{156}}
+ \expandafter\def\csname simpleicon@undertaleicon\endcsname {\simpleiconsmaponetwo\symbol{157}}
+ \expandafter\def\csname simpleicon@unicodeicon\endcsname {\simpleiconsmaponetwo\symbol{158}}
+ \expandafter\def\csname simpleicon@unilevericon\endcsname {\simpleiconsmaponetwo\symbol{159}}
+ \expandafter\def\csname simpleicon@uniqloicon\endcsname {\simpleiconsmaponetwo\symbol{160}}
+ \expandafter\def\csname simpleicon@uniqlojaicon\endcsname {\simpleiconsmaponetwo\symbol{161}}
+ \expandafter\def\csname simpleicon@unitedairlinesicon\endcsname {\simpleiconsmaponetwo\symbol{162}}
+ \expandafter\def\csname simpleicon@unitednationsicon\endcsname {\simpleiconsmaponetwo\symbol{163}}
+ \expandafter\def\csname simpleicon@unityicon\endcsname {\simpleiconsmaponetwo\symbol{164}}
+ \expandafter\def\csname simpleicon@unjsicon\endcsname {\simpleiconsmaponetwo\symbol{165}}
+ \expandafter\def\csname simpleicon@unlicenseicon\endcsname {\simpleiconsmaponetwo\symbol{166}}
+ \expandafter\def\csname simpleicon@unocssicon\endcsname {\simpleiconsmaponetwo\symbol{167}}
+ \expandafter\def\csname simpleicon@unpkgicon\endcsname {\simpleiconsmaponetwo\symbol{168}}
+ \expandafter\def\csname simpleicon@unraidicon\endcsname {\simpleiconsmaponetwo\symbol{169}}
+ \expandafter\def\csname simpleicon@unrealengineicon\endcsname {\simpleiconsmaponetwo\symbol{170}}
+ \expandafter\def\csname simpleicon@unsplashicon\endcsname {\simpleiconsmaponetwo\symbol{171}}
+ \expandafter\def\csname simpleicon@untappdicon\endcsname {\simpleiconsmaponetwo\symbol{172}}
+ \expandafter\def\csname simpleicon@upcloudicon\endcsname {\simpleiconsmaponetwo\symbol{173}}
+ \expandafter\def\csname simpleicon@upholdicon\endcsname {\simpleiconsmaponetwo\symbol{174}}
+ \expandafter\def\csname simpleicon@uplabsicon\endcsname {\simpleiconsmaponetwo\symbol{175}}
+ \expandafter\def\csname simpleicon@upptimeicon\endcsname {\simpleiconsmaponetwo\symbol{176}}
+ \expandafter\def\csname simpleicon@upsicon\endcsname {\simpleiconsmaponetwo\symbol{177}}
+ \expandafter\def\csname simpleicon@upstashicon\endcsname {\simpleiconsmaponetwo\symbol{178}}
+ \expandafter\def\csname simpleicon@uptimekumaicon\endcsname {\simpleiconsmaponetwo\symbol{179}}
+ \expandafter\def\csname simpleicon@upworkicon\endcsname {\simpleiconsmaponetwo\symbol{180}}
+ \expandafter\def\csname simpleicon@uspsicon\endcsname {\simpleiconsmaponetwo\symbol{181}}
+ \expandafter\def\csname simpleicon@utorrenticon\endcsname {\simpleiconsmaponetwo\symbol{182}}
+ \expandafter\def\csname simpleicon@uvicon\endcsname {\simpleiconsmaponetwo\symbol{183}}
+ \expandafter\def\csname simpleicon@vicon\endcsname {\simpleiconsmaponetwo\symbol{184}}
+ \expandafter\def\csname simpleicon@v0icon\endcsname {\simpleiconsmaponetwo\symbol{185}}
+ \expandafter\def\csname simpleicon@v2exicon\endcsname {\simpleiconsmaponetwo\symbol{186}}
+ \expandafter\def\csname simpleicon@v8icon\endcsname {\simpleiconsmaponetwo\symbol{187}}
+ \expandafter\def\csname simpleicon@vaadinicon\endcsname {\simpleiconsmaponetwo\symbol{188}}
+ \expandafter\def\csname simpleicon@vagranticon\endcsname {\simpleiconsmaponetwo\symbol{189}}
+ \expandafter\def\csname simpleicon@valaicon\endcsname {\simpleiconsmaponetwo\symbol{190}}
+ \expandafter\def\csname simpleicon@valoranticon\endcsname {\simpleiconsmaponetwo\symbol{191}}
+ \expandafter\def\csname simpleicon@valveicon\endcsname {\simpleiconsmaponetwo\symbol{192}}
+ \expandafter\def\csname simpleicon@vaporicon\endcsname {\simpleiconsmaponetwo\symbol{193}}
+ \expandafter\def\csname simpleicon@vaulticon\endcsname {\simpleiconsmaponetwo\symbol{194}}
+ \expandafter\def\csname simpleicon@vaultwardenicon\endcsname {\simpleiconsmaponetwo\symbol{195}}
+ \expandafter\def\csname simpleicon@vauxhallicon\endcsname {\simpleiconsmaponetwo\symbol{196}}
+ \expandafter\def\csname simpleicon@vbulletinicon\endcsname {\simpleiconsmaponetwo\symbol{197}}
+ \expandafter\def\csname simpleicon@vectaryicon\endcsname {\simpleiconsmaponetwo\symbol{198}}
+ \expandafter\def\csname simpleicon@vectorlogozoneicon\endcsname {\simpleiconsmaponetwo\symbol{199}}
+ \expandafter\def\csname simpleicon@vectorworksicon\endcsname {\simpleiconsmaponetwo\symbol{200}}
+ \expandafter\def\csname simpleicon@veeamicon\endcsname {\simpleiconsmaponetwo\symbol{201}}
+ \expandafter\def\csname simpleicon@veedicon\endcsname {\simpleiconsmaponetwo\symbol{202}}
+ \expandafter\def\csname simpleicon@veepeeicon\endcsname {\simpleiconsmaponetwo\symbol{203}}
+ \expandafter\def\csname simpleicon@vegaicon\endcsname {\simpleiconsmaponetwo\symbol{204}}
+ \expandafter\def\csname simpleicon@vegasicon\endcsname {\simpleiconsmaponetwo\symbol{205}}
+ \expandafter\def\csname simpleicon@velogicon\endcsname {\simpleiconsmaponetwo\symbol{206}}
+ \expandafter\def\csname simpleicon@vencordicon\endcsname {\simpleiconsmaponetwo\symbol{207}}
+ \expandafter\def\csname simpleicon@venmoicon\endcsname {\simpleiconsmaponetwo\symbol{208}}
+ \expandafter\def\csname simpleicon@vercelicon\endcsname {\simpleiconsmaponetwo\symbol{209}}
+ \expandafter\def\csname simpleicon@verdaccioicon\endcsname {\simpleiconsmaponetwo\symbol{210}}
+ \expandafter\def\csname simpleicon@veritasicon\endcsname {\simpleiconsmaponetwo\symbol{211}}
+ \expandafter\def\csname simpleicon@verizonicon\endcsname {\simpleiconsmaponetwo\symbol{212}}
+ \expandafter\def\csname simpleicon@vespaicon\endcsname {\simpleiconsmaponetwo\symbol{213}}
+ \expandafter\def\csname simpleicon@vestelicon\endcsname {\simpleiconsmaponetwo\symbol{214}}
+ \expandafter\def\csname simpleicon@vexxhosticon\endcsname {\simpleiconsmaponetwo\symbol{215}}
+ \expandafter\def\csname simpleicon@vfairsicon\endcsname {\simpleiconsmaponetwo\symbol{216}}
+ \expandafter\def\csname simpleicon@viadeoicon\endcsname {\simpleiconsmaponetwo\symbol{217}}
+ \expandafter\def\csname simpleicon@viaplayicon\endcsname {\simpleiconsmaponetwo\symbol{218}}
+ \expandafter\def\csname simpleicon@vibericon\endcsname {\simpleiconsmaponetwo\symbol{219}}
+ \expandafter\def\csname simpleicon@vibloicon\endcsname {\simpleiconsmaponetwo\symbol{220}}
+ \expandafter\def\csname simpleicon@victoriametricsicon\endcsname {\simpleiconsmaponetwo\symbol{221}}
+ \expandafter\def\csname simpleicon@victronenergyicon\endcsname {\simpleiconsmaponetwo\symbol{222}}
+ \expandafter\def\csname simpleicon@vimicon\endcsname {\simpleiconsmaponetwo\symbol{223}}
+ \expandafter\def\csname simpleicon@vimeoicon\endcsname {\simpleiconsmaponetwo\symbol{224}}
+ \expandafter\def\csname simpleicon@vimeolivestreamicon\endcsname {\simpleiconsmaponetwo\symbol{225}}
+ \expandafter\def\csname simpleicon@virginicon\endcsname {\simpleiconsmaponetwo\symbol{226}}
+ \expandafter\def\csname simpleicon@virginatlanticicon\endcsname {\simpleiconsmaponetwo\symbol{227}}
+ \expandafter\def\csname simpleicon@virginmediaicon\endcsname {\simpleiconsmaponetwo\symbol{228}}
+ \expandafter\def\csname simpleicon@virtualboxicon\endcsname {\simpleiconsmaponetwo\symbol{229}}
+ \expandafter\def\csname simpleicon@virustotalicon\endcsname {\simpleiconsmaponetwo\symbol{230}}
+ \expandafter\def\csname simpleicon@visaicon\endcsname {\simpleiconsmaponetwo\symbol{231}}
+ \expandafter\def\csname simpleicon@visxicon\endcsname {\simpleiconsmaponetwo\symbol{232}}
+ \expandafter\def\csname simpleicon@viteicon\endcsname {\simpleiconsmaponetwo\symbol{233}}
+ \expandafter\def\csname simpleicon@vitepressicon\endcsname {\simpleiconsmaponetwo\symbol{234}}
+ \expandafter\def\csname simpleicon@vitessicon\endcsname {\simpleiconsmaponetwo\symbol{235}}
+ \expandafter\def\csname simpleicon@vitesticon\endcsname {\simpleiconsmaponetwo\symbol{236}}
+ \expandafter\def\csname simpleicon@vivawalleticon\endcsname {\simpleiconsmaponetwo\symbol{237}}
+ \expandafter\def\csname simpleicon@vivaldiicon\endcsname {\simpleiconsmaponetwo\symbol{238}}
+ \expandafter\def\csname simpleicon@vivinoicon\endcsname {\simpleiconsmaponetwo\symbol{239}}
+ \expandafter\def\csname simpleicon@vivinticon\endcsname {\simpleiconsmaponetwo\symbol{240}}
+ \expandafter\def\csname simpleicon@vivoicon\endcsname {\simpleiconsmaponetwo\symbol{241}}
+ \expandafter\def\csname simpleicon@vkicon\endcsname {\simpleiconsmaponetwo\symbol{242}}
+ \expandafter\def\csname simpleicon@vlcmediaplayericon\endcsname {\simpleiconsmaponetwo\symbol{243}}
+ \expandafter\def\csname simpleicon@vmwareicon\endcsname {\simpleiconsmaponetwo\symbol{244}}
+ \expandafter\def\csname simpleicon@vodafoneicon\endcsname {\simpleiconsmaponetwo\symbol{245}}
+ \expandafter\def\csname simpleicon@voidlinuxicon\endcsname {\simpleiconsmaponetwo\symbol{246}}
+ \expandafter\def\csname simpleicon@voipdotmsicon\endcsname {\simpleiconsmaponetwo\symbol{247}}
+ \expandafter\def\csname simpleicon@volkswagenicon\endcsname {\simpleiconsmaponetwo\symbol{248}}
+ \expandafter\def\csname simpleicon@volvoicon\endcsname {\simpleiconsmaponetwo\symbol{249}}
+ \expandafter\def\csname simpleicon@vonageicon\endcsname {\simpleiconsmaponetwo\symbol{250}}
+ \expandafter\def\csname simpleicon@vorondesignicon\endcsname {\simpleiconsmaponetwo\symbol{251}}
+ \expandafter\def\csname simpleicon@vowpalwabbiticon\endcsname {\simpleiconsmaponetwo\symbol{252}}
+ \expandafter\def\csname simpleicon@voxicon\endcsname {\simpleiconsmaponetwo\symbol{253}}
+ \expandafter\def\csname simpleicon@vrchaticon\endcsname {\simpleiconsmaponetwo\symbol{254}}
+ \expandafter\def\csname simpleicon@vscoicon\endcsname {\simpleiconsmaponetwo\symbol{255}}
+ \expandafter\def\csname simpleicon@vscodiumicon\endcsname {\simpleiconsmaponethree\symbol{0}}
+ \expandafter\def\csname simpleicon@vtexicon\endcsname {\simpleiconsmaponethree\symbol{1}}
+ \expandafter\def\csname simpleicon@vuedotjsicon\endcsname {\simpleiconsmaponethree\symbol{2}}
+ \expandafter\def\csname simpleicon@vuetifyicon\endcsname {\simpleiconsmaponethree\symbol{3}}
+ \expandafter\def\csname simpleicon@vulkanicon\endcsname {\simpleiconsmaponethree\symbol{4}}
+ \expandafter\def\csname simpleicon@vultricon\endcsname {\simpleiconsmaponethree\symbol{5}}
+ \expandafter\def\csname simpleicon@vyondicon\endcsname {\simpleiconsmaponethree\symbol{6}}
+ \expandafter\def\csname simpleicon@w3schoolsicon\endcsname {\simpleiconsmaponethree\symbol{7}}
+ \expandafter\def\csname simpleicon@wacomicon\endcsname {\simpleiconsmaponethree\symbol{8}}
+ \expandafter\def\csname simpleicon@wagmiicon\endcsname {\simpleiconsmaponethree\symbol{9}}
+ \expandafter\def\csname simpleicon@wagtailicon\endcsname {\simpleiconsmaponethree\symbol{10}}
+ \expandafter\def\csname simpleicon@wailsicon\endcsname {\simpleiconsmaponethree\symbol{11}}
+ \expandafter\def\csname simpleicon@wakatimeicon\endcsname {\simpleiconsmaponethree\symbol{12}}
+ \expandafter\def\csname simpleicon@walkmanicon\endcsname {\simpleiconsmaponethree\symbol{13}}
+ \expandafter\def\csname simpleicon@wallabagicon\endcsname {\simpleiconsmaponethree\symbol{14}}
+ \expandafter\def\csname simpleicon@walletconnecticon\endcsname {\simpleiconsmaponethree\symbol{15}}
+ \expandafter\def\csname simpleicon@walmarticon\endcsname {\simpleiconsmaponethree\symbol{16}}
+ \expandafter\def\csname simpleicon@wantedlyicon\endcsname {\simpleiconsmaponethree\symbol{17}}
+ \expandafter\def\csname simpleicon@wappalyzericon\endcsname {\simpleiconsmaponethree\symbol{18}}
+ \expandafter\def\csname simpleicon@warnerbrosicon\endcsname {\simpleiconsmaponethree\symbol{19}}
+ \expandafter\def\csname simpleicon@warpicon\endcsname {\simpleiconsmaponethree\symbol{20}}
+ \expandafter\def\csname simpleicon@wasabiicon\endcsname {\simpleiconsmaponethree\symbol{21}}
+ \expandafter\def\csname simpleicon@wasmcloudicon\endcsname {\simpleiconsmaponethree\symbol{22}}
+ \expandafter\def\csname simpleicon@wasmericon\endcsname {\simpleiconsmaponethree\symbol{23}}
+ \expandafter\def\csname simpleicon@watchtowericon\endcsname {\simpleiconsmaponethree\symbol{24}}
+ \expandafter\def\csname simpleicon@wattpadicon\endcsname {\simpleiconsmaponethree\symbol{25}}
+ \expandafter\def\csname simpleicon@waylandicon\endcsname {\simpleiconsmaponethree\symbol{26}}
+ \expandafter\def\csname simpleicon@wazeicon\endcsname {\simpleiconsmaponethree\symbol{27}}
+ \expandafter\def\csname simpleicon@wazirxicon\endcsname {\simpleiconsmaponethree\symbol{28}}
+ \expandafter\def\csname simpleicon@wearosicon\endcsname {\simpleiconsmaponethree\symbol{29}}
+ \expandafter\def\csname simpleicon@weasylicon\endcsname {\simpleiconsmaponethree\symbol{30}}
+ \expandafter\def\csname simpleicon@webdotdeicon\endcsname {\simpleiconsmaponethree\symbol{31}}
+ \expandafter\def\csname simpleicon@web3dotjsicon\endcsname {\simpleiconsmaponethree\symbol{32}}
+ \expandafter\def\csname simpleicon@webassemblyicon\endcsname {\simpleiconsmaponethree\symbol{33}}
+ \expandafter\def\csname simpleicon@webauthnicon\endcsname {\simpleiconsmaponethree\symbol{34}}
+ \expandafter\def\csname simpleicon@webcomponentsdotorgicon\endcsname {\simpleiconsmaponethree\symbol{35}}
+ \expandafter\def\csname simpleicon@webdriverioicon\endcsname {\simpleiconsmaponethree\symbol{36}}
+ \expandafter\def\csname simpleicon@webexicon\endcsname {\simpleiconsmaponethree\symbol{37}}
+ \expandafter\def\csname simpleicon@webflowicon\endcsname {\simpleiconsmaponethree\symbol{38}}
+ \expandafter\def\csname simpleicon@webglicon\endcsname {\simpleiconsmaponethree\symbol{39}}
+ \expandafter\def\csname simpleicon@webgpuicon\endcsname {\simpleiconsmaponethree\symbol{40}}
+ \expandafter\def\csname simpleicon@weblateicon\endcsname {\simpleiconsmaponethree\symbol{41}}
+ \expandafter\def\csname simpleicon@webminicon\endcsname {\simpleiconsmaponethree\symbol{42}}
+ \expandafter\def\csname simpleicon@webmoneyicon\endcsname {\simpleiconsmaponethree\symbol{43}}
+ \expandafter\def\csname simpleicon@webpackicon\endcsname {\simpleiconsmaponethree\symbol{44}}
+ \expandafter\def\csname simpleicon@webrtcicon\endcsname {\simpleiconsmaponethree\symbol{45}}
+ \expandafter\def\csname simpleicon@webstormicon\endcsname {\simpleiconsmaponethree\symbol{46}}
+ \expandafter\def\csname simpleicon@webtoonicon\endcsname {\simpleiconsmaponethree\symbol{47}}
+ \expandafter\def\csname simpleicon@webtreesicon\endcsname {\simpleiconsmaponethree\symbol{48}}
+ \expandafter\def\csname simpleicon@wechaticon\endcsname {\simpleiconsmaponethree\symbol{49}}
+ \expandafter\def\csname simpleicon@wegameicon\endcsname {\simpleiconsmaponethree\symbol{50}}
+ \expandafter\def\csname simpleicon@weightsandbiasesicon\endcsname {\simpleiconsmaponethree\symbol{51}}
+ \expandafter\def\csname simpleicon@welcometothejungleicon\endcsname {\simpleiconsmaponethree\symbol{52}}
+ \expandafter\def\csname simpleicon@wellfoundicon\endcsname {\simpleiconsmaponethree\symbol{53}}
+ \expandafter\def\csname simpleicon@wellsfargoicon\endcsname {\simpleiconsmaponethree\symbol{54}}
+ \expandafter\def\csname simpleicon@wemoicon\endcsname {\simpleiconsmaponethree\symbol{55}}
+ \expandafter\def\csname simpleicon@westerndigitalicon\endcsname {\simpleiconsmaponethree\symbol{56}}
+ \expandafter\def\csname simpleicon@westernunionicon\endcsname {\simpleiconsmaponethree\symbol{57}}
+ \expandafter\def\csname simpleicon@wetransfericon\endcsname {\simpleiconsmaponethree\symbol{58}}
+ \expandafter\def\csname simpleicon@weztermicon\endcsname {\simpleiconsmaponethree\symbol{59}}
+ \expandafter\def\csname simpleicon@wgpuicon\endcsname {\simpleiconsmaponethree\symbol{60}}
+ \expandafter\def\csname simpleicon@whatsappicon\endcsname {\simpleiconsmaponethree\symbol{61}}
+ \expandafter\def\csname simpleicon@wheniworkicon\endcsname {\simpleiconsmaponethree\symbol{62}}
+ \expandafter\def\csname simpleicon@wikidotggicon\endcsname {\simpleiconsmaponethree\symbol{63}}
+ \expandafter\def\csname simpleicon@wikidotjsicon\endcsname {\simpleiconsmaponethree\symbol{64}}
+ \expandafter\def\csname simpleicon@wikibooksicon\endcsname {\simpleiconsmaponethree\symbol{65}}
+ \expandafter\def\csname simpleicon@wikidataicon\endcsname {\simpleiconsmaponethree\symbol{66}}
+ \expandafter\def\csname simpleicon@wikimediacommonsicon\endcsname {\simpleiconsmaponethree\symbol{67}}
+ \expandafter\def\csname simpleicon@wikimediafoundationicon\endcsname {\simpleiconsmaponethree\symbol{68}}
+ \expandafter\def\csname simpleicon@wikipediaicon\endcsname {\simpleiconsmaponethree\symbol{69}}
+ \expandafter\def\csname simpleicon@wikiquoteicon\endcsname {\simpleiconsmaponethree\symbol{70}}
+ \expandafter\def\csname simpleicon@wikiversityicon\endcsname {\simpleiconsmaponethree\symbol{71}}
+ \expandafter\def\csname simpleicon@wikivoyageicon\endcsname {\simpleiconsmaponethree\symbol{72}}
+ \expandafter\def\csname simpleicon@winampicon\endcsname {\simpleiconsmaponethree\symbol{73}}
+ \expandafter\def\csname simpleicon@wineicon\endcsname {\simpleiconsmaponethree\symbol{74}}
+ \expandafter\def\csname simpleicon@wiproicon\endcsname {\simpleiconsmaponethree\symbol{75}}
+ \expandafter\def\csname simpleicon@wireicon\endcsname {\simpleiconsmaponethree\symbol{76}}
+ \expandafter\def\csname simpleicon@wireguardicon\endcsname {\simpleiconsmaponethree\symbol{77}}
+ \expandafter\def\csname simpleicon@wiresharkicon\endcsname {\simpleiconsmaponethree\symbol{78}}
+ \expandafter\def\csname simpleicon@wiseicon\endcsname {\simpleiconsmaponethree\symbol{79}}
+ \expandafter\def\csname simpleicon@wishicon\endcsname {\simpleiconsmaponethree\symbol{80}}
+ \expandafter\def\csname simpleicon@wistiaicon\endcsname {\simpleiconsmaponethree\symbol{81}}
+ \expandafter\def\csname simpleicon@wixicon\endcsname {\simpleiconsmaponethree\symbol{82}}
+ \expandafter\def\csname simpleicon@wizzairicon\endcsname {\simpleiconsmaponethree\symbol{83}}
+ \expandafter\def\csname simpleicon@wolframicon\endcsname {\simpleiconsmaponethree\symbol{84}}
+ \expandafter\def\csname simpleicon@wolframlanguageicon\endcsname {\simpleiconsmaponethree\symbol{85}}
+ \expandafter\def\csname simpleicon@wolframmathematicaicon\endcsname {\simpleiconsmaponethree\symbol{86}}
+ \expandafter\def\csname simpleicon@wondershareicon\endcsname {\simpleiconsmaponethree\symbol{87}}
+ \expandafter\def\csname simpleicon@wondersharefilmoraicon\endcsname {\simpleiconsmaponethree\symbol{88}}
+ \expandafter\def\csname simpleicon@wooicon\endcsname {\simpleiconsmaponethree\symbol{89}}
+ \expandafter\def\csname simpleicon@woocommerceicon\endcsname {\simpleiconsmaponethree\symbol{90}}
+ \expandafter\def\csname simpleicon@wordpressicon\endcsname {\simpleiconsmaponethree\symbol{91}}
+ \expandafter\def\csname simpleicon@workplaceicon\endcsname {\simpleiconsmaponethree\symbol{92}}
+ \expandafter\def\csname simpleicon@worldhealthorganizationicon\endcsname {\simpleiconsmaponethree\symbol{93}}
+ \expandafter\def\csname simpleicon@wpengineicon\endcsname {\simpleiconsmaponethree\symbol{94}}
+ \expandafter\def\csname simpleicon@wprocketicon\endcsname {\simpleiconsmaponethree\symbol{95}}
+ \expandafter\def\csname simpleicon@wpexplorericon\endcsname {\simpleiconsmaponethree\symbol{96}}
+ \expandafter\def\csname simpleicon@writedotasicon\endcsname {\simpleiconsmaponethree\symbol{97}}
+ \expandafter\def\csname simpleicon@wweicon\endcsname {\simpleiconsmaponethree\symbol{98}}
+ \expandafter\def\csname simpleicon@wwiseicon\endcsname {\simpleiconsmaponethree\symbol{99}}
+ \expandafter\def\csname simpleicon@wxticon\endcsname {\simpleiconsmaponethree\symbol{100}}
+ \expandafter\def\csname simpleicon@wykopicon\endcsname {\simpleiconsmaponethree\symbol{101}}
+ \expandafter\def\csname simpleicon@wyzeicon\endcsname {\simpleiconsmaponethree\symbol{102}}
+ \expandafter\def\csname simpleicon@xicon\endcsname {\simpleiconsmaponethree\symbol{103}}
+ \expandafter\def\csname simpleicon@xdotorgicon\endcsname {\simpleiconsmaponethree\symbol{104}}
+ \expandafter\def\csname simpleicon@xamppicon\endcsname {\simpleiconsmaponethree\symbol{105}}
+ \expandafter\def\csname simpleicon@xcodeicon\endcsname {\simpleiconsmaponethree\symbol{106}}
+ \expandafter\def\csname simpleicon@xdadevelopersicon\endcsname {\simpleiconsmaponethree\symbol{107}}
+ \expandafter\def\csname simpleicon@xenditicon\endcsname {\simpleiconsmaponethree\symbol{108}}
+ \expandafter\def\csname simpleicon@xeroicon\endcsname {\simpleiconsmaponethree\symbol{109}}
+ \expandafter\def\csname simpleicon@xfceicon\endcsname {\simpleiconsmaponethree\symbol{110}}
+ \expandafter\def\csname simpleicon@xiaohongshuicon\endcsname {\simpleiconsmaponethree\symbol{111}}
+ \expandafter\def\csname simpleicon@xiaomiicon\endcsname {\simpleiconsmaponethree\symbol{112}}
+ \expandafter\def\csname simpleicon@xingicon\endcsname {\simpleiconsmaponethree\symbol{113}}
+ \expandafter\def\csname simpleicon@xmlicon\endcsname {\simpleiconsmaponethree\symbol{114}}
+ \expandafter\def\csname simpleicon@xmppicon\endcsname {\simpleiconsmaponethree\symbol{115}}
+ \expandafter\def\csname simpleicon@xoicon\endcsname {\simpleiconsmaponethree\symbol{116}}
+ \expandafter\def\csname simpleicon@xrpicon\endcsname {\simpleiconsmaponethree\symbol{117}}
+ \expandafter\def\csname simpleicon@xspliticon\endcsname {\simpleiconsmaponethree\symbol{118}}
+ \expandafter\def\csname simpleicon@xstateicon\endcsname {\simpleiconsmaponethree\symbol{119}}
+ \expandafter\def\csname simpleicon@xubuntuicon\endcsname {\simpleiconsmaponethree\symbol{120}}
+ \expandafter\def\csname simpleicon@ycombinatoricon\endcsname {\simpleiconsmaponethree\symbol{121}}
+ \expandafter\def\csname simpleicon@yabaiicon\endcsname {\simpleiconsmaponethree\symbol{122}}
+ \expandafter\def\csname simpleicon@yaleicon\endcsname {\simpleiconsmaponethree\symbol{123}}
+ \expandafter\def\csname simpleicon@yamahacorporationicon\endcsname {\simpleiconsmaponethree\symbol{124}}
+ \expandafter\def\csname simpleicon@yamahamotorcorporationicon\endcsname {\simpleiconsmaponethree\symbol{125}}
+ \expandafter\def\csname simpleicon@yamlicon\endcsname {\simpleiconsmaponethree\symbol{126}}
+ \expandafter\def\csname simpleicon@yandexcloudicon\endcsname {\simpleiconsmaponethree\symbol{127}}
+ \expandafter\def\csname simpleicon@yarnicon\endcsname {\simpleiconsmaponethree\symbol{128}}
+ \expandafter\def\csname simpleicon@yelpicon\endcsname {\simpleiconsmaponethree\symbol{129}}
+ \expandafter\def\csname simpleicon@yetiicon\endcsname {\simpleiconsmaponethree\symbol{130}}
+ \expandafter\def\csname simpleicon@yiiicon\endcsname {\simpleiconsmaponethree\symbol{131}}
+ \expandafter\def\csname simpleicon@yoasticon\endcsname {\simpleiconsmaponethree\symbol{132}}
+ \expandafter\def\csname simpleicon@youhodlericon\endcsname {\simpleiconsmaponethree\symbol{133}}
+ \expandafter\def\csname simpleicon@youtubeicon\endcsname {\simpleiconsmaponethree\symbol{134}}
+ \expandafter\def\csname simpleicon@youtubegamingicon\endcsname {\simpleiconsmaponethree\symbol{135}}
+ \expandafter\def\csname simpleicon@youtubekidsicon\endcsname {\simpleiconsmaponethree\symbol{136}}
+ \expandafter\def\csname simpleicon@youtubemusicicon\endcsname {\simpleiconsmaponethree\symbol{137}}
+ \expandafter\def\csname simpleicon@youtubeshortsicon\endcsname {\simpleiconsmaponethree\symbol{138}}
+ \expandafter\def\csname simpleicon@youtubestudioicon\endcsname {\simpleiconsmaponethree\symbol{139}}
+ \expandafter\def\csname simpleicon@youtubetvicon\endcsname {\simpleiconsmaponethree\symbol{140}}
+ \expandafter\def\csname simpleicon@yricon\endcsname {\simpleiconsmaponethree\symbol{141}}
+ \expandafter\def\csname simpleicon@yubicoicon\endcsname {\simpleiconsmaponethree\symbol{142}}
+ \expandafter\def\csname simpleicon@yunohosticon\endcsname {\simpleiconsmaponethree\symbol{143}}
+ \expandafter\def\csname simpleicon@zabkaicon\endcsname {\simpleiconsmaponethree\symbol{144}}
+ \expandafter\def\csname simpleicon@zaimicon\endcsname {\simpleiconsmaponethree\symbol{145}}
+ \expandafter\def\csname simpleicon@zalandoicon\endcsname {\simpleiconsmaponethree\symbol{146}}
+ \expandafter\def\csname simpleicon@zaloicon\endcsname {\simpleiconsmaponethree\symbol{147}}
+ \expandafter\def\csname simpleicon@zapicon\endcsname {\simpleiconsmaponethree\symbol{148}}
+ \expandafter\def\csname simpleicon@zapiericon\endcsname {\simpleiconsmaponethree\symbol{149}}
+ \expandafter\def\csname simpleicon@zaraicon\endcsname {\simpleiconsmaponethree\symbol{150}}
+ \expandafter\def\csname simpleicon@zazzleicon\endcsname {\simpleiconsmaponethree\symbol{151}}
+ \expandafter\def\csname simpleicon@zcashicon\endcsname {\simpleiconsmaponethree\symbol{152}}
+ \expandafter\def\csname simpleicon@zcoolicon\endcsname {\simpleiconsmaponethree\symbol{153}}
+ \expandafter\def\csname simpleicon@zdficon\endcsname {\simpleiconsmaponethree\symbol{154}}
+ \expandafter\def\csname simpleicon@zebpayicon\endcsname {\simpleiconsmaponethree\symbol{155}}
+ \expandafter\def\csname simpleicon@zebratechnologiesicon\endcsname {\simpleiconsmaponethree\symbol{156}}
+ \expandafter\def\csname simpleicon@zedindustriesicon\endcsname {\simpleiconsmaponethree\symbol{157}}
+ \expandafter\def\csname simpleicon@zelleicon\endcsname {\simpleiconsmaponethree\symbol{158}}
+ \expandafter\def\csname simpleicon@zendicon\endcsname {\simpleiconsmaponethree\symbol{159}}
+ \expandafter\def\csname simpleicon@zendeskicon\endcsname {\simpleiconsmaponethree\symbol{160}}
+ \expandafter\def\csname simpleicon@zennicon\endcsname {\simpleiconsmaponethree\symbol{161}}
+ \expandafter\def\csname simpleicon@zenodoicon\endcsname {\simpleiconsmaponethree\symbol{162}}
+ \expandafter\def\csname simpleicon@zensaricon\endcsname {\simpleiconsmaponethree\symbol{163}}
+ \expandafter\def\csname simpleicon@zerodhaicon\endcsname {\simpleiconsmaponethree\symbol{164}}
+ \expandafter\def\csname simpleicon@zerotiericon\endcsname {\simpleiconsmaponethree\symbol{165}}
+ \expandafter\def\csname simpleicon@zettlricon\endcsname {\simpleiconsmaponethree\symbol{166}}
+ \expandafter\def\csname simpleicon@zhihuicon\endcsname {\simpleiconsmaponethree\symbol{167}}
+ \expandafter\def\csname simpleicon@zigicon\endcsname {\simpleiconsmaponethree\symbol{168}}
+ \expandafter\def\csname simpleicon@zigbeeicon\endcsname {\simpleiconsmaponethree\symbol{169}}
+ \expandafter\def\csname simpleicon@zigbee2mqtticon\endcsname {\simpleiconsmaponethree\symbol{170}}
+ \expandafter\def\csname simpleicon@ziggoicon\endcsname {\simpleiconsmaponethree\symbol{171}}
+ \expandafter\def\csname simpleicon@zilchicon\endcsname {\simpleiconsmaponethree\symbol{172}}
+ \expandafter\def\csname simpleicon@zillowicon\endcsname {\simpleiconsmaponethree\symbol{173}}
+ \expandafter\def\csname simpleicon@zincsearchicon\endcsname {\simpleiconsmaponethree\symbol{174}}
+ \expandafter\def\csname simpleicon@zingaticon\endcsname {\simpleiconsmaponethree\symbol{175}}
+ \expandafter\def\csname simpleicon@zodicon\endcsname {\simpleiconsmaponethree\symbol{176}}
+ \expandafter\def\csname simpleicon@zohoicon\endcsname {\simpleiconsmaponethree\symbol{177}}
+ \expandafter\def\csname simpleicon@zoipericon\endcsname {\simpleiconsmaponethree\symbol{178}}
+ \expandafter\def\csname simpleicon@zomatoicon\endcsname {\simpleiconsmaponethree\symbol{179}}
+ \expandafter\def\csname simpleicon@zoomicon\endcsname {\simpleiconsmaponethree\symbol{180}}
+ \expandafter\def\csname simpleicon@zorinicon\endcsname {\simpleiconsmaponethree\symbol{181}}
+ \expandafter\def\csname simpleicon@zoteroicon\endcsname {\simpleiconsmaponethree\symbol{182}}
+ \expandafter\def\csname simpleicon@zshicon\endcsname {\simpleiconsmaponethree\symbol{183}}
+ \expandafter\def\csname simpleicon@zulipicon\endcsname {\simpleiconsmaponethree\symbol{184}}
+ \expandafter\def\csname simpleicon@zyteicon\endcsname {\simpleiconsmaponethree\symbol{185}} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/simpleicons/simpleiconsglyphs-xeluatex.tex b/Master/texmf-dist/tex/latex/simpleicons/simpleiconsglyphs-xeluatex.tex
index e209def4ce8..0d39729abb6 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/simpleiconsglyphs-xeluatex.tex
+++ b/Master/texmf-dist/tex/latex/simpleicons/simpleiconsglyphs-xeluatex.tex
@@ -1,176 +1,176 @@
- \expandafter\def\csname simpleicon@1001tracklistsicon\endcsname {\simpleiconsmap\symbol{"EA01}}
- \expandafter\def\csname simpleicon@1dot1dot1dot1icon\endcsname {\simpleiconsmap\symbol{"EA02}}
- \expandafter\def\csname simpleicon@1panelicon\endcsname {\simpleiconsmap\symbol{"EA03}}
- \expandafter\def\csname simpleicon@1passwordicon\endcsname {\simpleiconsmap\symbol{"EA04}}
- \expandafter\def\csname simpleicon@2fasicon\endcsname {\simpleiconsmap\symbol{"EA05}}
- \expandafter\def\csname simpleicon@2kicon\endcsname {\simpleiconsmap\symbol{"EA06}}
- \expandafter\def\csname simpleicon@365datascienceicon\endcsname {\simpleiconsmap\symbol{"EA07}}
- \expandafter\def\csname simpleicon@3micon\endcsname {\simpleiconsmap\symbol{"EA08}}
- \expandafter\def\csname simpleicon@42icon\endcsname {\simpleiconsmap\symbol{"EA09}}
- \expandafter\def\csname simpleicon@4chanicon\endcsname {\simpleiconsmap\symbol{"EA0A}}
- \expandafter\def\csname simpleicon@4dicon\endcsname {\simpleiconsmap\symbol{"EA0B}}
- \expandafter\def\csname simpleicon@500pxicon\endcsname {\simpleiconsmap\symbol{"EA0C}}
- \expandafter\def\csname simpleicon@7zipicon\endcsname {\simpleiconsmap\symbol{"EA0D}}
- \expandafter\def\csname simpleicon@99designsicon\endcsname {\simpleiconsmap\symbol{"EA0E}}
- \expandafter\def\csname simpleicon@9gagicon\endcsname {\simpleiconsmap\symbol{"EA0F}}
- \expandafter\def\csname simpleicon@abbotticon\endcsname {\simpleiconsmap\symbol{"EA10}}
- \expandafter\def\csname simpleicon@abbrobotstudioicon\endcsname {\simpleiconsmap\symbol{"EA11}}
- \expandafter\def\csname simpleicon@abbvieicon\endcsname {\simpleiconsmap\symbol{"EA12}}
- \expandafter\def\csname simpleicon@aboutdotmeicon\endcsname {\simpleiconsmap\symbol{"EA13}}
- \expandafter\def\csname simpleicon@abstracticon\endcsname {\simpleiconsmap\symbol{"EA14}}
- \expandafter\def\csname simpleicon@abusedotchicon\endcsname {\simpleiconsmap\symbol{"EA15}}
- \expandafter\def\csname simpleicon@academiaicon\endcsname {\simpleiconsmap\symbol{"EA16}}
- \expandafter\def\csname simpleicon@accentureicon\endcsname {\simpleiconsmap\symbol{"EA17}}
- \expandafter\def\csname simpleicon@accusofticon\endcsname {\simpleiconsmap\symbol{"EA18}}
- \expandafter\def\csname simpleicon@acericon\endcsname {\simpleiconsmap\symbol{"EA19}}
- \expandafter\def\csname simpleicon@acmicon\endcsname {\simpleiconsmap\symbol{"EA1A}}
- \expandafter\def\csname simpleicon@actigraphicon\endcsname {\simpleiconsmap\symbol{"EA1B}}
- \expandafter\def\csname simpleicon@activisionicon\endcsname {\simpleiconsmap\symbol{"EA1C}}
- \expandafter\def\csname simpleicon@activitypubicon\endcsname {\simpleiconsmap\symbol{"EA1D}}
- \expandafter\def\csname simpleicon@actixicon\endcsname {\simpleiconsmap\symbol{"EA1E}}
- \expandafter\def\csname simpleicon@acuraicon\endcsname {\simpleiconsmap\symbol{"EA1F}}
- \expandafter\def\csname simpleicon@adafruiticon\endcsname {\simpleiconsmap\symbol{"EA20}}
- \expandafter\def\csname simpleicon@adblockicon\endcsname {\simpleiconsmap\symbol{"EA21}}
- \expandafter\def\csname simpleicon@adblockplusicon\endcsname {\simpleiconsmap\symbol{"EA22}}
- \expandafter\def\csname simpleicon@adguardicon\endcsname {\simpleiconsmap\symbol{"EA23}}
- \expandafter\def\csname simpleicon@adidasicon\endcsname {\simpleiconsmap\symbol{"EA24}}
- \expandafter\def\csname simpleicon@adminericon\endcsname {\simpleiconsmap\symbol{"EA25}}
- \expandafter\def\csname simpleicon@adobeicon\endcsname {\simpleiconsmap\symbol{"EA26}}
- \expandafter\def\csname simpleicon@adobeacrobatreadericon\endcsname {\simpleiconsmap\symbol{"EA27}}
- \expandafter\def\csname simpleicon@adobeaftereffectsicon\endcsname {\simpleiconsmap\symbol{"EA28}}
- \expandafter\def\csname simpleicon@adobeauditionicon\endcsname {\simpleiconsmap\symbol{"EA29}}
- \expandafter\def\csname simpleicon@adobecreativecloudicon\endcsname {\simpleiconsmap\symbol{"EA2A}}
- \expandafter\def\csname simpleicon@adobedreamweavericon\endcsname {\simpleiconsmap\symbol{"EA2B}}
- \expandafter\def\csname simpleicon@adobefontsicon\endcsname {\simpleiconsmap\symbol{"EA2C}}
- \expandafter\def\csname simpleicon@adobeillustratoricon\endcsname {\simpleiconsmap\symbol{"EA2D}}
- \expandafter\def\csname simpleicon@adobeindesignicon\endcsname {\simpleiconsmap\symbol{"EA2E}}
- \expandafter\def\csname simpleicon@adobelightroomicon\endcsname {\simpleiconsmap\symbol{"EA2F}}
- \expandafter\def\csname simpleicon@adobelightroomclassicicon\endcsname {\simpleiconsmap\symbol{"EA30}}
- \expandafter\def\csname simpleicon@adobephotoshopicon\endcsname {\simpleiconsmap\symbol{"EA31}}
- \expandafter\def\csname simpleicon@adobepremiereproicon\endcsname {\simpleiconsmap\symbol{"EA32}}
- \expandafter\def\csname simpleicon@adobexdicon\endcsname {\simpleiconsmap\symbol{"EA33}}
- \expandafter\def\csname simpleicon@adonisjsicon\endcsname {\simpleiconsmap\symbol{"EA34}}
- \expandafter\def\csname simpleicon@adpicon\endcsname {\simpleiconsmap\symbol{"EA35}}
- \expandafter\def\csname simpleicon@adrollicon\endcsname {\simpleiconsmap\symbol{"EA36}}
- \expandafter\def\csname simpleicon@adventofcodeicon\endcsname {\simpleiconsmap\symbol{"EA37}}
- \expandafter\def\csname simpleicon@adyenicon\endcsname {\simpleiconsmap\symbol{"EA38}}
- \expandafter\def\csname simpleicon@aegisauthenticatoricon\endcsname {\simpleiconsmap\symbol{"EA39}}
- \expandafter\def\csname simpleicon@aerlingusicon\endcsname {\simpleiconsmap\symbol{"EA3A}}
- \expandafter\def\csname simpleicon@aerofloticon\endcsname {\simpleiconsmap\symbol{"EA3B}}
- \expandafter\def\csname simpleicon@aeromexicoicon\endcsname {\simpleiconsmap\symbol{"EA3C}}
- \expandafter\def\csname simpleicon@aerospikeicon\endcsname {\simpleiconsmap\symbol{"EA3D}}
- \expandafter\def\csname simpleicon@aewicon\endcsname {\simpleiconsmap\symbol{"EA3E}}
- \expandafter\def\csname simpleicon@affineicon\endcsname {\simpleiconsmap\symbol{"EA3F}}
- \expandafter\def\csname simpleicon@affinityicon\endcsname {\simpleiconsmap\symbol{"EA40}}
- \expandafter\def\csname simpleicon@affinitydesignericon\endcsname {\simpleiconsmap\symbol{"EA41}}
- \expandafter\def\csname simpleicon@affinityphotoicon\endcsname {\simpleiconsmap\symbol{"EA42}}
- \expandafter\def\csname simpleicon@affinitypublishericon\endcsname {\simpleiconsmap\symbol{"EA43}}
- \expandafter\def\csname simpleicon@aframeicon\endcsname {\simpleiconsmap\symbol{"EA44}}
- \expandafter\def\csname simpleicon@afterpayicon\endcsname {\simpleiconsmap\symbol{"EA45}}
- \expandafter\def\csname simpleicon@agoraicon\endcsname {\simpleiconsmap\symbol{"EA46}}
- \expandafter\def\csname simpleicon@aibicon\endcsname {\simpleiconsmap\symbol{"EA47}}
- \expandafter\def\csname simpleicon@aidungeonicon\endcsname {\simpleiconsmap\symbol{"EA48}}
- \expandafter\def\csname simpleicon@aiohttpicon\endcsname {\simpleiconsmap\symbol{"EA49}}
- \expandafter\def\csname simpleicon@aiqfomeicon\endcsname {\simpleiconsmap\symbol{"EA4A}}
- \expandafter\def\csname simpleicon@airasiaicon\endcsname {\simpleiconsmap\symbol{"EA4B}}
- \expandafter\def\csname simpleicon@airbnbicon\endcsname {\simpleiconsmap\symbol{"EA4C}}
- \expandafter\def\csname simpleicon@airbrakeicon\endcsname {\simpleiconsmap\symbol{"EA4D}}
- \expandafter\def\csname simpleicon@airbusicon\endcsname {\simpleiconsmap\symbol{"EA4E}}
- \expandafter\def\csname simpleicon@airbyteicon\endcsname {\simpleiconsmap\symbol{"EA4F}}
- \expandafter\def\csname simpleicon@aircallicon\endcsname {\simpleiconsmap\symbol{"EA50}}
- \expandafter\def\csname simpleicon@aircanadaicon\endcsname {\simpleiconsmap\symbol{"EA51}}
- \expandafter\def\csname simpleicon@airchinaicon\endcsname {\simpleiconsmap\symbol{"EA52}}
- \expandafter\def\csname simpleicon@airfranceicon\endcsname {\simpleiconsmap\symbol{"EA53}}
- \expandafter\def\csname simpleicon@airindiaicon\endcsname {\simpleiconsmap\symbol{"EA54}}
- \expandafter\def\csname simpleicon@airplayaudioicon\endcsname {\simpleiconsmap\symbol{"EA55}}
- \expandafter\def\csname simpleicon@airplayvideoicon\endcsname {\simpleiconsmap\symbol{"EA56}}
- \expandafter\def\csname simpleicon@airtableicon\endcsname {\simpleiconsmap\symbol{"EA57}}
- \expandafter\def\csname simpleicon@airtelicon\endcsname {\simpleiconsmap\symbol{"EA58}}
- \expandafter\def\csname simpleicon@airtransaticon\endcsname {\simpleiconsmap\symbol{"EA59}}
- \expandafter\def\csname simpleicon@ajvicon\endcsname {\simpleiconsmap\symbol{"EA5A}}
- \expandafter\def\csname simpleicon@akamaiicon\endcsname {\simpleiconsmap\symbol{"EA5B}}
- \expandafter\def\csname simpleicon@akauntingicon\endcsname {\simpleiconsmap\symbol{"EA5C}}
- \expandafter\def\csname simpleicon@akiflowicon\endcsname {\simpleiconsmap\symbol{"EA5D}}
- \expandafter\def\csname simpleicon@alacrittyicon\endcsname {\simpleiconsmap\symbol{"EA5E}}
- \expandafter\def\csname simpleicon@alamyicon\endcsname {\simpleiconsmap\symbol{"EA5F}}
- \expandafter\def\csname simpleicon@albertheijnicon\endcsname {\simpleiconsmap\symbol{"EA60}}
- \expandafter\def\csname simpleicon@albyicon\endcsname {\simpleiconsmap\symbol{"EA61}}
- \expandafter\def\csname simpleicon@alchemyicon\endcsname {\simpleiconsmap\symbol{"EA62}}
- \expandafter\def\csname simpleicon@aldinordicon\endcsname {\simpleiconsmap\symbol{"EA63}}
- \expandafter\def\csname simpleicon@aldisudicon\endcsname {\simpleiconsmap\symbol{"EA64}}
- \expandafter\def\csname simpleicon@alfaromeoicon\endcsname {\simpleiconsmap\symbol{"EA65}}
- \expandafter\def\csname simpleicon@alfredicon\endcsname {\simpleiconsmap\symbol{"EA66}}
- \expandafter\def\csname simpleicon@algoliaicon\endcsname {\simpleiconsmap\symbol{"EA67}}
- \expandafter\def\csname simpleicon@algorandicon\endcsname {\simpleiconsmap\symbol{"EA68}}
- \expandafter\def\csname simpleicon@alibabacloudicon\endcsname {\simpleiconsmap\symbol{"EA69}}
- \expandafter\def\csname simpleicon@alibabadotcomicon\endcsname {\simpleiconsmap\symbol{"EA6A}}
- \expandafter\def\csname simpleicon@alienwareicon\endcsname {\simpleiconsmap\symbol{"EA6B}}
- \expandafter\def\csname simpleicon@aliexpressicon\endcsname {\simpleiconsmap\symbol{"EA6C}}
- \expandafter\def\csname simpleicon@alipayicon\endcsname {\simpleiconsmap\symbol{"EA6D}}
- \expandafter\def\csname simpleicon@allegroicon\endcsname {\simpleiconsmap\symbol{"EA6E}}
- \expandafter\def\csname simpleicon@alliedmoddersicon\endcsname {\simpleiconsmap\symbol{"EA6F}}
- \expandafter\def\csname simpleicon@allocineicon\endcsname {\simpleiconsmap\symbol{"EA70}}
- \expandafter\def\csname simpleicon@alltrailsicon\endcsname {\simpleiconsmap\symbol{"EA71}}
- \expandafter\def\csname simpleicon@almalinuxicon\endcsname {\simpleiconsmap\symbol{"EA72}}
- \expandafter\def\csname simpleicon@alpinedotjsicon\endcsname {\simpleiconsmap\symbol{"EA73}}
- \expandafter\def\csname simpleicon@alpinelinuxicon\endcsname {\simpleiconsmap\symbol{"EA74}}
- \expandafter\def\csname simpleicon@alteryxicon\endcsname {\simpleiconsmap\symbol{"EA75}}
- \expandafter\def\csname simpleicon@altiumdesignericon\endcsname {\simpleiconsmap\symbol{"EA76}}
- \expandafter\def\csname simpleicon@alwaysdataicon\endcsname {\simpleiconsmap\symbol{"EA77}}
- \expandafter\def\csname simpleicon@alxicon\endcsname {\simpleiconsmap\symbol{"EA78}}
- \expandafter\def\csname simpleicon@amazonicon\endcsname {\simpleiconsmap\symbol{"EA79}}
- \expandafter\def\csname simpleicon@amazonalexaicon\endcsname {\simpleiconsmap\symbol{"EA7A}}
- \expandafter\def\csname simpleicon@amazonapigatewayicon\endcsname {\simpleiconsmap\symbol{"EA7B}}
- \expandafter\def\csname simpleicon@amazoncloudwatchicon\endcsname {\simpleiconsmap\symbol{"EA7C}}
- \expandafter\def\csname simpleicon@amazoncognitoicon\endcsname {\simpleiconsmap\symbol{"EA7D}}
- \expandafter\def\csname simpleicon@amazondocumentdbicon\endcsname {\simpleiconsmap\symbol{"EA7E}}
- \expandafter\def\csname simpleicon@amazondynamodbicon\endcsname {\simpleiconsmap\symbol{"EA7F}}
- \expandafter\def\csname simpleicon@amazonec2icon\endcsname {\simpleiconsmap\symbol{"EA80}}
- \expandafter\def\csname simpleicon@amazonecsicon\endcsname {\simpleiconsmap\symbol{"EA81}}
- \expandafter\def\csname simpleicon@amazoneksicon\endcsname {\simpleiconsmap\symbol{"EA82}}
- \expandafter\def\csname simpleicon@amazonelasticacheicon\endcsname {\simpleiconsmap\symbol{"EA83}}
- \expandafter\def\csname simpleicon@amazonfiretvicon\endcsname {\simpleiconsmap\symbol{"EA84}}
- \expandafter\def\csname simpleicon@amazongamesicon\endcsname {\simpleiconsmap\symbol{"EA85}}
- \expandafter\def\csname simpleicon@amazoniamicon\endcsname {\simpleiconsmap\symbol{"EA86}}
- \expandafter\def\csname simpleicon@amazonlumberyardicon\endcsname {\simpleiconsmap\symbol{"EA87}}
- \expandafter\def\csname simpleicon@amazonlunaicon\endcsname {\simpleiconsmap\symbol{"EA88}}
- \expandafter\def\csname simpleicon@amazonmusicicon\endcsname {\simpleiconsmap\symbol{"EA89}}
- \expandafter\def\csname simpleicon@amazonpayicon\endcsname {\simpleiconsmap\symbol{"EA8A}}
- \expandafter\def\csname simpleicon@amazonprimeicon\endcsname {\simpleiconsmap\symbol{"EA8B}}
- \expandafter\def\csname simpleicon@amazonrdsicon\endcsname {\simpleiconsmap\symbol{"EA8C}}
- \expandafter\def\csname simpleicon@amazonredshifticon\endcsname {\simpleiconsmap\symbol{"EA8D}}
- \expandafter\def\csname simpleicon@amazonroute53icon\endcsname {\simpleiconsmap\symbol{"EA8E}}
- \expandafter\def\csname simpleicon@amazons3icon\endcsname {\simpleiconsmap\symbol{"EA8F}}
- \expandafter\def\csname simpleicon@amazonsimpleemailserviceicon\endcsname {\simpleiconsmap\symbol{"EA90}}
- \expandafter\def\csname simpleicon@amazonsqsicon\endcsname {\simpleiconsmap\symbol{"EA91}}
- \expandafter\def\csname simpleicon@amazonwebservicesicon\endcsname {\simpleiconsmap\symbol{"EA92}}
- \expandafter\def\csname simpleicon@amdicon\endcsname {\simpleiconsmap\symbol{"EA93}}
- \expandafter\def\csname simpleicon@amebaicon\endcsname {\simpleiconsmap\symbol{"EA94}}
- \expandafter\def\csname simpleicon@americanairlinesicon\endcsname {\simpleiconsmap\symbol{"EA95}}
- \expandafter\def\csname simpleicon@americanexpressicon\endcsname {\simpleiconsmap\symbol{"EA96}}
- \expandafter\def\csname simpleicon@amgicon\endcsname {\simpleiconsmap\symbol{"EA97}}
- \expandafter\def\csname simpleicon@ampicon\endcsname {\simpleiconsmap\symbol{"EA98}}
- \expandafter\def\csname simpleicon@amulicon\endcsname {\simpleiconsmap\symbol{"EA99}}
- \expandafter\def\csname simpleicon@anaicon\endcsname {\simpleiconsmap\symbol{"EA9A}}
- \expandafter\def\csname simpleicon@anacondaicon\endcsname {\simpleiconsmap\symbol{"EA9B}}
- \expandafter\def\csname simpleicon@analogueicon\endcsname {\simpleiconsmap\symbol{"EA9C}}
- \expandafter\def\csname simpleicon@andelaicon\endcsname {\simpleiconsmap\symbol{"EA9D}}
- \expandafter\def\csname simpleicon@androidicon\endcsname {\simpleiconsmap\symbol{"EA9E}}
- \expandafter\def\csname simpleicon@androidautoicon\endcsname {\simpleiconsmap\symbol{"EA9F}}
- \expandafter\def\csname simpleicon@androidstudioicon\endcsname {\simpleiconsmap\symbol{"EAA0}}
- \expandafter\def\csname simpleicon@angularicon\endcsname {\simpleiconsmap\symbol{"EAA1}}
- \expandafter\def\csname simpleicon@anilisticon\endcsname {\simpleiconsmap\symbol{"EAA2}}
- \expandafter\def\csname simpleicon@animalplaneticon\endcsname {\simpleiconsmap\symbol{"EAA3}}
- \expandafter\def\csname simpleicon@ankermakeicon\endcsname {\simpleiconsmap\symbol{"EAA4}}
- \expandafter\def\csname simpleicon@ankiicon\endcsname {\simpleiconsmap\symbol{"EAA5}}
- \expandafter\def\csname simpleicon@ansibleicon\endcsname {\simpleiconsmap\symbol{"EAA6}}
- \expandafter\def\csname simpleicon@answericon\endcsname {\simpleiconsmap\symbol{"EAA7}}
- \expandafter\def\csname simpleicon@ansysicon\endcsname {\simpleiconsmap\symbol{"EAA8}}
+ \expandafter\def\csname simpleicon@dotenvicon\endcsname {\simpleiconsmap\symbol{"EA01}}
+ \expandafter\def\csname simpleicon@dotneticon\endcsname {\simpleiconsmap\symbol{"EA02}}
+ \expandafter\def\csname simpleicon@eicon\endcsname {\simpleiconsmap\symbol{"EA03}}
+ \expandafter\def\csname simpleicon@1dot1dot1dot1icon\endcsname {\simpleiconsmap\symbol{"EA04}}
+ \expandafter\def\csname simpleicon@1and1icon\endcsname {\simpleiconsmap\symbol{"EA05}}
+ \expandafter\def\csname simpleicon@1001tracklistsicon\endcsname {\simpleiconsmap\symbol{"EA06}}
+ \expandafter\def\csname simpleicon@1panelicon\endcsname {\simpleiconsmap\symbol{"EA07}}
+ \expandafter\def\csname simpleicon@1passwordicon\endcsname {\simpleiconsmap\symbol{"EA08}}
+ \expandafter\def\csname simpleicon@2fasicon\endcsname {\simpleiconsmap\symbol{"EA09}}
+ \expandafter\def\csname simpleicon@2kicon\endcsname {\simpleiconsmap\symbol{"EA0A}}
+ \expandafter\def\csname simpleicon@30secondsofcodeicon\endcsname {\simpleiconsmap\symbol{"EA0B}}
+ \expandafter\def\csname simpleicon@365datascienceicon\endcsname {\simpleiconsmap\symbol{"EA0C}}
+ \expandafter\def\csname simpleicon@3micon\endcsname {\simpleiconsmap\symbol{"EA0D}}
+ \expandafter\def\csname simpleicon@42icon\endcsname {\simpleiconsmap\symbol{"EA0E}}
+ \expandafter\def\csname simpleicon@4chanicon\endcsname {\simpleiconsmap\symbol{"EA0F}}
+ \expandafter\def\csname simpleicon@4dicon\endcsname {\simpleiconsmap\symbol{"EA10}}
+ \expandafter\def\csname simpleicon@500pxicon\endcsname {\simpleiconsmap\symbol{"EA11}}
+ \expandafter\def\csname simpleicon@7zipicon\endcsname {\simpleiconsmap\symbol{"EA12}}
+ \expandafter\def\csname simpleicon@99designsicon\endcsname {\simpleiconsmap\symbol{"EA13}}
+ \expandafter\def\csname simpleicon@9gagicon\endcsname {\simpleiconsmap\symbol{"EA14}}
+ \expandafter\def\csname simpleicon@aframeicon\endcsname {\simpleiconsmap\symbol{"EA15}}
+ \expandafter\def\csname simpleicon@abbrobotstudioicon\endcsname {\simpleiconsmap\symbol{"EA16}}
+ \expandafter\def\csname simpleicon@abbotticon\endcsname {\simpleiconsmap\symbol{"EA17}}
+ \expandafter\def\csname simpleicon@abbvieicon\endcsname {\simpleiconsmap\symbol{"EA18}}
+ \expandafter\def\csname simpleicon@aboutdotmeicon\endcsname {\simpleiconsmap\symbol{"EA19}}
+ \expandafter\def\csname simpleicon@abstracticon\endcsname {\simpleiconsmap\symbol{"EA1A}}
+ \expandafter\def\csname simpleicon@abusedotchicon\endcsname {\simpleiconsmap\symbol{"EA1B}}
+ \expandafter\def\csname simpleicon@academiaicon\endcsname {\simpleiconsmap\symbol{"EA1C}}
+ \expandafter\def\csname simpleicon@accentureicon\endcsname {\simpleiconsmap\symbol{"EA1D}}
+ \expandafter\def\csname simpleicon@accusofticon\endcsname {\simpleiconsmap\symbol{"EA1E}}
+ \expandafter\def\csname simpleicon@accuweathericon\endcsname {\simpleiconsmap\symbol{"EA1F}}
+ \expandafter\def\csname simpleicon@acericon\endcsname {\simpleiconsmap\symbol{"EA20}}
+ \expandafter\def\csname simpleicon@acmicon\endcsname {\simpleiconsmap\symbol{"EA21}}
+ \expandafter\def\csname simpleicon@actigraphicon\endcsname {\simpleiconsmap\symbol{"EA22}}
+ \expandafter\def\csname simpleicon@activisionicon\endcsname {\simpleiconsmap\symbol{"EA23}}
+ \expandafter\def\csname simpleicon@activitypubicon\endcsname {\simpleiconsmap\symbol{"EA24}}
+ \expandafter\def\csname simpleicon@actixicon\endcsname {\simpleiconsmap\symbol{"EA25}}
+ \expandafter\def\csname simpleicon@actualbudgeticon\endcsname {\simpleiconsmap\symbol{"EA26}}
+ \expandafter\def\csname simpleicon@acuraicon\endcsname {\simpleiconsmap\symbol{"EA27}}
+ \expandafter\def\csname simpleicon@adafruiticon\endcsname {\simpleiconsmap\symbol{"EA28}}
+ \expandafter\def\csname simpleicon@adblockicon\endcsname {\simpleiconsmap\symbol{"EA29}}
+ \expandafter\def\csname simpleicon@adblockplusicon\endcsname {\simpleiconsmap\symbol{"EA2A}}
+ \expandafter\def\csname simpleicon@addydotioicon\endcsname {\simpleiconsmap\symbol{"EA2B}}
+ \expandafter\def\csname simpleicon@adguardicon\endcsname {\simpleiconsmap\symbol{"EA2C}}
+ \expandafter\def\csname simpleicon@adidasicon\endcsname {\simpleiconsmap\symbol{"EA2D}}
+ \expandafter\def\csname simpleicon@adminericon\endcsname {\simpleiconsmap\symbol{"EA2E}}
+ \expandafter\def\csname simpleicon@adonisjsicon\endcsname {\simpleiconsmap\symbol{"EA2F}}
+ \expandafter\def\csname simpleicon@adpicon\endcsname {\simpleiconsmap\symbol{"EA30}}
+ \expandafter\def\csname simpleicon@adrollicon\endcsname {\simpleiconsmap\symbol{"EA31}}
+ \expandafter\def\csname simpleicon@adventofcodeicon\endcsname {\simpleiconsmap\symbol{"EA32}}
+ \expandafter\def\csname simpleicon@adyenicon\endcsname {\simpleiconsmap\symbol{"EA33}}
+ \expandafter\def\csname simpleicon@aegisauthenticatoricon\endcsname {\simpleiconsmap\symbol{"EA34}}
+ \expandafter\def\csname simpleicon@aerlingusicon\endcsname {\simpleiconsmap\symbol{"EA35}}
+ \expandafter\def\csname simpleicon@aerofloticon\endcsname {\simpleiconsmap\symbol{"EA36}}
+ \expandafter\def\csname simpleicon@aeromexicoicon\endcsname {\simpleiconsmap\symbol{"EA37}}
+ \expandafter\def\csname simpleicon@aerospikeicon\endcsname {\simpleiconsmap\symbol{"EA38}}
+ \expandafter\def\csname simpleicon@aewicon\endcsname {\simpleiconsmap\symbol{"EA39}}
+ \expandafter\def\csname simpleicon@afdianicon\endcsname {\simpleiconsmap\symbol{"EA3A}}
+ \expandafter\def\csname simpleicon@affineicon\endcsname {\simpleiconsmap\symbol{"EA3B}}
+ \expandafter\def\csname simpleicon@affinityicon\endcsname {\simpleiconsmap\symbol{"EA3C}}
+ \expandafter\def\csname simpleicon@affinitydesignericon\endcsname {\simpleiconsmap\symbol{"EA3D}}
+ \expandafter\def\csname simpleicon@affinityphotoicon\endcsname {\simpleiconsmap\symbol{"EA3E}}
+ \expandafter\def\csname simpleicon@affinitypublishericon\endcsname {\simpleiconsmap\symbol{"EA3F}}
+ \expandafter\def\csname simpleicon@afterpayicon\endcsname {\simpleiconsmap\symbol{"EA40}}
+ \expandafter\def\csname simpleicon@aftershipicon\endcsname {\simpleiconsmap\symbol{"EA41}}
+ \expandafter\def\csname simpleicon@agoraicon\endcsname {\simpleiconsmap\symbol{"EA42}}
+ \expandafter\def\csname simpleicon@aidungeonicon\endcsname {\simpleiconsmap\symbol{"EA43}}
+ \expandafter\def\csname simpleicon@aibicon\endcsname {\simpleiconsmap\symbol{"EA44}}
+ \expandafter\def\csname simpleicon@aiohttpicon\endcsname {\simpleiconsmap\symbol{"EA45}}
+ \expandafter\def\csname simpleicon@aiqfomeicon\endcsname {\simpleiconsmap\symbol{"EA46}}
+ \expandafter\def\csname simpleicon@aircanadaicon\endcsname {\simpleiconsmap\symbol{"EA47}}
+ \expandafter\def\csname simpleicon@airchinaicon\endcsname {\simpleiconsmap\symbol{"EA48}}
+ \expandafter\def\csname simpleicon@airfranceicon\endcsname {\simpleiconsmap\symbol{"EA49}}
+ \expandafter\def\csname simpleicon@airindiaicon\endcsname {\simpleiconsmap\symbol{"EA4A}}
+ \expandafter\def\csname simpleicon@airserbiaicon\endcsname {\simpleiconsmap\symbol{"EA4B}}
+ \expandafter\def\csname simpleicon@airtransaticon\endcsname {\simpleiconsmap\symbol{"EA4C}}
+ \expandafter\def\csname simpleicon@airasiaicon\endcsname {\simpleiconsmap\symbol{"EA4D}}
+ \expandafter\def\csname simpleicon@airbnbicon\endcsname {\simpleiconsmap\symbol{"EA4E}}
+ \expandafter\def\csname simpleicon@airbrakeicon\endcsname {\simpleiconsmap\symbol{"EA4F}}
+ \expandafter\def\csname simpleicon@airbusicon\endcsname {\simpleiconsmap\symbol{"EA50}}
+ \expandafter\def\csname simpleicon@airbyteicon\endcsname {\simpleiconsmap\symbol{"EA51}}
+ \expandafter\def\csname simpleicon@aircallicon\endcsname {\simpleiconsmap\symbol{"EA52}}
+ \expandafter\def\csname simpleicon@airplayaudioicon\endcsname {\simpleiconsmap\symbol{"EA53}}
+ \expandafter\def\csname simpleicon@airplayvideoicon\endcsname {\simpleiconsmap\symbol{"EA54}}
+ \expandafter\def\csname simpleicon@airtableicon\endcsname {\simpleiconsmap\symbol{"EA55}}
+ \expandafter\def\csname simpleicon@airtelicon\endcsname {\simpleiconsmap\symbol{"EA56}}
+ \expandafter\def\csname simpleicon@ajvicon\endcsname {\simpleiconsmap\symbol{"EA57}}
+ \expandafter\def\csname simpleicon@akamaiicon\endcsname {\simpleiconsmap\symbol{"EA58}}
+ \expandafter\def\csname simpleicon@akasaairicon\endcsname {\simpleiconsmap\symbol{"EA59}}
+ \expandafter\def\csname simpleicon@akauntingicon\endcsname {\simpleiconsmap\symbol{"EA5A}}
+ \expandafter\def\csname simpleicon@akiflowicon\endcsname {\simpleiconsmap\symbol{"EA5B}}
+ \expandafter\def\csname simpleicon@alacrittyicon\endcsname {\simpleiconsmap\symbol{"EA5C}}
+ \expandafter\def\csname simpleicon@alamyicon\endcsname {\simpleiconsmap\symbol{"EA5D}}
+ \expandafter\def\csname simpleicon@albertheijnicon\endcsname {\simpleiconsmap\symbol{"EA5E}}
+ \expandafter\def\csname simpleicon@albyicon\endcsname {\simpleiconsmap\symbol{"EA5F}}
+ \expandafter\def\csname simpleicon@alchemyicon\endcsname {\simpleiconsmap\symbol{"EA60}}
+ \expandafter\def\csname simpleicon@aldinordicon\endcsname {\simpleiconsmap\symbol{"EA61}}
+ \expandafter\def\csname simpleicon@aldisudicon\endcsname {\simpleiconsmap\symbol{"EA62}}
+ \expandafter\def\csname simpleicon@alfaromeoicon\endcsname {\simpleiconsmap\symbol{"EA63}}
+ \expandafter\def\csname simpleicon@alfredicon\endcsname {\simpleiconsmap\symbol{"EA64}}
+ \expandafter\def\csname simpleicon@algoliaicon\endcsname {\simpleiconsmap\symbol{"EA65}}
+ \expandafter\def\csname simpleicon@algorandicon\endcsname {\simpleiconsmap\symbol{"EA66}}
+ \expandafter\def\csname simpleicon@alibabacloudicon\endcsname {\simpleiconsmap\symbol{"EA67}}
+ \expandafter\def\csname simpleicon@alibabadotcomicon\endcsname {\simpleiconsmap\symbol{"EA68}}
+ \expandafter\def\csname simpleicon@alienwareicon\endcsname {\simpleiconsmap\symbol{"EA69}}
+ \expandafter\def\csname simpleicon@aliexpressicon\endcsname {\simpleiconsmap\symbol{"EA6A}}
+ \expandafter\def\csname simpleicon@alipayicon\endcsname {\simpleiconsmap\symbol{"EA6B}}
+ \expandafter\def\csname simpleicon@allegroicon\endcsname {\simpleiconsmap\symbol{"EA6C}}
+ \expandafter\def\csname simpleicon@alliedmoddersicon\endcsname {\simpleiconsmap\symbol{"EA6D}}
+ \expandafter\def\csname simpleicon@allocineicon\endcsname {\simpleiconsmap\symbol{"EA6E}}
+ \expandafter\def\csname simpleicon@alltrailsicon\endcsname {\simpleiconsmap\symbol{"EA6F}}
+ \expandafter\def\csname simpleicon@almalinuxicon\endcsname {\simpleiconsmap\symbol{"EA70}}
+ \expandafter\def\csname simpleicon@alpinelinuxicon\endcsname {\simpleiconsmap\symbol{"EA71}}
+ \expandafter\def\csname simpleicon@alpinedotjsicon\endcsname {\simpleiconsmap\symbol{"EA72}}
+ \expandafter\def\csname simpleicon@alternativetoicon\endcsname {\simpleiconsmap\symbol{"EA73}}
+ \expandafter\def\csname simpleicon@alteryxicon\endcsname {\simpleiconsmap\symbol{"EA74}}
+ \expandafter\def\csname simpleicon@altiumdesignericon\endcsname {\simpleiconsmap\symbol{"EA75}}
+ \expandafter\def\csname simpleicon@alwaysdataicon\endcsname {\simpleiconsmap\symbol{"EA76}}
+ \expandafter\def\csname simpleicon@alxicon\endcsname {\simpleiconsmap\symbol{"EA77}}
+ \expandafter\def\csname simpleicon@amazonicon\endcsname {\simpleiconsmap\symbol{"EA78}}
+ \expandafter\def\csname simpleicon@amazonalexaicon\endcsname {\simpleiconsmap\symbol{"EA79}}
+ \expandafter\def\csname simpleicon@amazonapigatewayicon\endcsname {\simpleiconsmap\symbol{"EA7A}}
+ \expandafter\def\csname simpleicon@amazoncloudwatchicon\endcsname {\simpleiconsmap\symbol{"EA7B}}
+ \expandafter\def\csname simpleicon@amazoncognitoicon\endcsname {\simpleiconsmap\symbol{"EA7C}}
+ \expandafter\def\csname simpleicon@amazondocumentdbicon\endcsname {\simpleiconsmap\symbol{"EA7D}}
+ \expandafter\def\csname simpleicon@amazondynamodbicon\endcsname {\simpleiconsmap\symbol{"EA7E}}
+ \expandafter\def\csname simpleicon@amazonec2icon\endcsname {\simpleiconsmap\symbol{"EA7F}}
+ \expandafter\def\csname simpleicon@amazonecsicon\endcsname {\simpleiconsmap\symbol{"EA80}}
+ \expandafter\def\csname simpleicon@amazoneksicon\endcsname {\simpleiconsmap\symbol{"EA81}}
+ \expandafter\def\csname simpleicon@amazonelasticacheicon\endcsname {\simpleiconsmap\symbol{"EA82}}
+ \expandafter\def\csname simpleicon@amazonfiretvicon\endcsname {\simpleiconsmap\symbol{"EA83}}
+ \expandafter\def\csname simpleicon@amazongamesicon\endcsname {\simpleiconsmap\symbol{"EA84}}
+ \expandafter\def\csname simpleicon@amazoniamicon\endcsname {\simpleiconsmap\symbol{"EA85}}
+ \expandafter\def\csname simpleicon@amazonlumberyardicon\endcsname {\simpleiconsmap\symbol{"EA86}}
+ \expandafter\def\csname simpleicon@amazonlunaicon\endcsname {\simpleiconsmap\symbol{"EA87}}
+ \expandafter\def\csname simpleicon@amazonmusicicon\endcsname {\simpleiconsmap\symbol{"EA88}}
+ \expandafter\def\csname simpleicon@amazonpayicon\endcsname {\simpleiconsmap\symbol{"EA89}}
+ \expandafter\def\csname simpleicon@amazonprimeicon\endcsname {\simpleiconsmap\symbol{"EA8A}}
+ \expandafter\def\csname simpleicon@amazonrdsicon\endcsname {\simpleiconsmap\symbol{"EA8B}}
+ \expandafter\def\csname simpleicon@amazonredshifticon\endcsname {\simpleiconsmap\symbol{"EA8C}}
+ \expandafter\def\csname simpleicon@amazonroute53icon\endcsname {\simpleiconsmap\symbol{"EA8D}}
+ \expandafter\def\csname simpleicon@amazons3icon\endcsname {\simpleiconsmap\symbol{"EA8E}}
+ \expandafter\def\csname simpleicon@amazonsimpleemailserviceicon\endcsname {\simpleiconsmap\symbol{"EA8F}}
+ \expandafter\def\csname simpleicon@amazonsqsicon\endcsname {\simpleiconsmap\symbol{"EA90}}
+ \expandafter\def\csname simpleicon@amazonwebservicesicon\endcsname {\simpleiconsmap\symbol{"EA91}}
+ \expandafter\def\csname simpleicon@amdicon\endcsname {\simpleiconsmap\symbol{"EA92}}
+ \expandafter\def\csname simpleicon@amebaicon\endcsname {\simpleiconsmap\symbol{"EA93}}
+ \expandafter\def\csname simpleicon@americanairlinesicon\endcsname {\simpleiconsmap\symbol{"EA94}}
+ \expandafter\def\csname simpleicon@americanexpressicon\endcsname {\simpleiconsmap\symbol{"EA95}}
+ \expandafter\def\csname simpleicon@amgicon\endcsname {\simpleiconsmap\symbol{"EA96}}
+ \expandafter\def\csname simpleicon@ampicon\endcsname {\simpleiconsmap\symbol{"EA97}}
+ \expandafter\def\csname simpleicon@amulicon\endcsname {\simpleiconsmap\symbol{"EA98}}
+ \expandafter\def\csname simpleicon@anaicon\endcsname {\simpleiconsmap\symbol{"EA99}}
+ \expandafter\def\csname simpleicon@anacondaicon\endcsname {\simpleiconsmap\symbol{"EA9A}}
+ \expandafter\def\csname simpleicon@analogueicon\endcsname {\simpleiconsmap\symbol{"EA9B}}
+ \expandafter\def\csname simpleicon@andelaicon\endcsname {\simpleiconsmap\symbol{"EA9C}}
+ \expandafter\def\csname simpleicon@androidicon\endcsname {\simpleiconsmap\symbol{"EA9D}}
+ \expandafter\def\csname simpleicon@androidautoicon\endcsname {\simpleiconsmap\symbol{"EA9E}}
+ \expandafter\def\csname simpleicon@androidstudioicon\endcsname {\simpleiconsmap\symbol{"EA9F}}
+ \expandafter\def\csname simpleicon@angularicon\endcsname {\simpleiconsmap\symbol{"EAA0}}
+ \expandafter\def\csname simpleicon@anilisticon\endcsname {\simpleiconsmap\symbol{"EAA1}}
+ \expandafter\def\csname simpleicon@animalplaneticon\endcsname {\simpleiconsmap\symbol{"EAA2}}
+ \expandafter\def\csname simpleicon@ankermakeicon\endcsname {\simpleiconsmap\symbol{"EAA3}}
+ \expandafter\def\csname simpleicon@ankiicon\endcsname {\simpleiconsmap\symbol{"EAA4}}
+ \expandafter\def\csname simpleicon@ansibleicon\endcsname {\simpleiconsmap\symbol{"EAA5}}
+ \expandafter\def\csname simpleicon@answericon\endcsname {\simpleiconsmap\symbol{"EAA6}}
+ \expandafter\def\csname simpleicon@ansysicon\endcsname {\simpleiconsmap\symbol{"EAA7}}
+ \expandafter\def\csname simpleicon@antdesignicon\endcsname {\simpleiconsmap\symbol{"EAA8}}
\expandafter\def\csname simpleicon@antaicon\endcsname {\simpleiconsmap\symbol{"EAA9}}
- \expandafter\def\csname simpleicon@antdesignicon\endcsname {\simpleiconsmap\symbol{"EAAA}}
- \expandafter\def\csname simpleicon@antena3icon\endcsname {\simpleiconsmap\symbol{"EAAB}}
- \expandafter\def\csname simpleicon@anthropicicon\endcsname {\simpleiconsmap\symbol{"EAAC}}
+ \expandafter\def\csname simpleicon@antena3icon\endcsname {\simpleiconsmap\symbol{"EAAA}}
+ \expandafter\def\csname simpleicon@anthropicicon\endcsname {\simpleiconsmap\symbol{"EAAB}}
+ \expandafter\def\csname simpleicon@antvicon\endcsname {\simpleiconsmap\symbol{"EAAC}}
\expandafter\def\csname simpleicon@anycubicicon\endcsname {\simpleiconsmap\symbol{"EAAD}}
\expandafter\def\csname simpleicon@anydeskicon\endcsname {\simpleiconsmap\symbol{"EAAE}}
\expandafter\def\csname simpleicon@anytypeicon\endcsname {\simpleiconsmap\symbol{"EAAF}}
@@ -182,2989 +182,3078 @@
\expandafter\def\csname simpleicon@apachecloudstackicon\endcsname {\simpleiconsmap\symbol{"EAB5}}
\expandafter\def\csname simpleicon@apachecordovaicon\endcsname {\simpleiconsmap\symbol{"EAB6}}
\expandafter\def\csname simpleicon@apachecouchdbicon\endcsname {\simpleiconsmap\symbol{"EAB7}}
- \expandafter\def\csname simpleicon@apachedruidicon\endcsname {\simpleiconsmap\symbol{"EAB8}}
- \expandafter\def\csname simpleicon@apacheechartsicon\endcsname {\simpleiconsmap\symbol{"EAB9}}
- \expandafter\def\csname simpleicon@apacheflinkicon\endcsname {\simpleiconsmap\symbol{"EABA}}
- \expandafter\def\csname simpleicon@apachefreemarkericon\endcsname {\simpleiconsmap\symbol{"EABB}}
- \expandafter\def\csname simpleicon@apachegroovyicon\endcsname {\simpleiconsmap\symbol{"EABC}}
- \expandafter\def\csname simpleicon@apacheguacamoleicon\endcsname {\simpleiconsmap\symbol{"EABD}}
- \expandafter\def\csname simpleicon@apachehadoopicon\endcsname {\simpleiconsmap\symbol{"EABE}}
- \expandafter\def\csname simpleicon@apachehbaseicon\endcsname {\simpleiconsmap\symbol{"EABF}}
- \expandafter\def\csname simpleicon@apachehiveicon\endcsname {\simpleiconsmap\symbol{"EAC0}}
- \expandafter\def\csname simpleicon@apachejmetericon\endcsname {\simpleiconsmap\symbol{"EAC1}}
- \expandafter\def\csname simpleicon@apachekafkaicon\endcsname {\simpleiconsmap\symbol{"EAC2}}
- \expandafter\def\csname simpleicon@apachekylinicon\endcsname {\simpleiconsmap\symbol{"EAC3}}
- \expandafter\def\csname simpleicon@apachemavenicon\endcsname {\simpleiconsmap\symbol{"EAC4}}
- \expandafter\def\csname simpleicon@apachenetbeansideicon\endcsname {\simpleiconsmap\symbol{"EAC5}}
- \expandafter\def\csname simpleicon@apacheopenofficeicon\endcsname {\simpleiconsmap\symbol{"EAC6}}
- \expandafter\def\csname simpleicon@apacheparqueticon\endcsname {\simpleiconsmap\symbol{"EAC7}}
- \expandafter\def\csname simpleicon@apachepulsaricon\endcsname {\simpleiconsmap\symbol{"EAC8}}
- \expandafter\def\csname simpleicon@apacherocketmqicon\endcsname {\simpleiconsmap\symbol{"EAC9}}
- \expandafter\def\csname simpleicon@apachesolricon\endcsname {\simpleiconsmap\symbol{"EACA}}
- \expandafter\def\csname simpleicon@apachesparkicon\endcsname {\simpleiconsmap\symbol{"EACB}}
- \expandafter\def\csname simpleicon@apachestormicon\endcsname {\simpleiconsmap\symbol{"EACC}}
- \expandafter\def\csname simpleicon@apachesuperseticon\endcsname {\simpleiconsmap\symbol{"EACD}}
- \expandafter\def\csname simpleicon@apachetomcaticon\endcsname {\simpleiconsmap\symbol{"EACE}}
- \expandafter\def\csname simpleicon@aparaticon\endcsname {\simpleiconsmap\symbol{"EACF}}
- \expandafter\def\csname simpleicon@apifoxicon\endcsname {\simpleiconsmap\symbol{"EAD0}}
- \expandafter\def\csname simpleicon@apmterminalsicon\endcsname {\simpleiconsmap\symbol{"EAD1}}
- \expandafter\def\csname simpleicon@apollographqlicon\endcsname {\simpleiconsmap\symbol{"EAD2}}
- \expandafter\def\csname simpleicon@apostropheicon\endcsname {\simpleiconsmap\symbol{"EAD3}}
- \expandafter\def\csname simpleicon@appianicon\endcsname {\simpleiconsmap\symbol{"EAD4}}
- \expandafter\def\csname simpleicon@appiumicon\endcsname {\simpleiconsmap\symbol{"EAD5}}
- \expandafter\def\csname simpleicon@appleicon\endcsname {\simpleiconsmap\symbol{"EAD6}}
- \expandafter\def\csname simpleicon@applearcadeicon\endcsname {\simpleiconsmap\symbol{"EAD7}}
- \expandafter\def\csname simpleicon@applemusicicon\endcsname {\simpleiconsmap\symbol{"EAD8}}
- \expandafter\def\csname simpleicon@applenewsicon\endcsname {\simpleiconsmap\symbol{"EAD9}}
- \expandafter\def\csname simpleicon@applepayicon\endcsname {\simpleiconsmap\symbol{"EADA}}
- \expandafter\def\csname simpleicon@applepodcastsicon\endcsname {\simpleiconsmap\symbol{"EADB}}
- \expandafter\def\csname simpleicon@appletvicon\endcsname {\simpleiconsmap\symbol{"EADC}}
- \expandafter\def\csname simpleicon@appsignalicon\endcsname {\simpleiconsmap\symbol{"EADD}}
- \expandafter\def\csname simpleicon@appsmithicon\endcsname {\simpleiconsmap\symbol{"EADE}}
- \expandafter\def\csname simpleicon@appstoreicon\endcsname {\simpleiconsmap\symbol{"EADF}}
- \expandafter\def\csname simpleicon@appveyoricon\endcsname {\simpleiconsmap\symbol{"EAE0}}
- \expandafter\def\csname simpleicon@appwriteicon\endcsname {\simpleiconsmap\symbol{"EAE1}}
- \expandafter\def\csname simpleicon@aquaicon\endcsname {\simpleiconsmap\symbol{"EAE2}}
- \expandafter\def\csname simpleicon@aralicon\endcsname {\simpleiconsmap\symbol{"EAE3}}
- \expandafter\def\csname simpleicon@arangodbicon\endcsname {\simpleiconsmap\symbol{"EAE4}}
- \expandafter\def\csname simpleicon@arcicon\endcsname {\simpleiconsmap\symbol{"EAE5}}
- \expandafter\def\csname simpleicon@arcgisicon\endcsname {\simpleiconsmap\symbol{"EAE6}}
- \expandafter\def\csname simpleicon@archicadicon\endcsname {\simpleiconsmap\symbol{"EAE7}}
- \expandafter\def\csname simpleicon@archiveofourownicon\endcsname {\simpleiconsmap\symbol{"EAE8}}
- \expandafter\def\csname simpleicon@archlinuxicon\endcsname {\simpleiconsmap\symbol{"EAE9}}
- \expandafter\def\csname simpleicon@ardouricon\endcsname {\simpleiconsmap\symbol{"EAEA}}
- \expandafter\def\csname simpleicon@arduinoicon\endcsname {\simpleiconsmap\symbol{"EAEB}}
- \expandafter\def\csname simpleicon@argoicon\endcsname {\simpleiconsmap\symbol{"EAEC}}
- \expandafter\def\csname simpleicon@argosicon\endcsname {\simpleiconsmap\symbol{"EAED}}
- \expandafter\def\csname simpleicon@ariakiticon\endcsname {\simpleiconsmap\symbol{"EAEE}}
- \expandafter\def\csname simpleicon@arkecosystemicon\endcsname {\simpleiconsmap\symbol{"EAEF}}
- \expandafter\def\csname simpleicon@arloicon\endcsname {\simpleiconsmap\symbol{"EAF0}}
- \expandafter\def\csname simpleicon@armicon\endcsname {\simpleiconsmap\symbol{"EAF1}}
- \expandafter\def\csname simpleicon@armkeilicon\endcsname {\simpleiconsmap\symbol{"EAF2}}
- \expandafter\def\csname simpleicon@arstechnicaicon\endcsname {\simpleiconsmap\symbol{"EAF3}}
- \expandafter\def\csname simpleicon@artifacthubicon\endcsname {\simpleiconsmap\symbol{"EAF4}}
- \expandafter\def\csname simpleicon@artixlinuxicon\endcsname {\simpleiconsmap\symbol{"EAF5}}
- \expandafter\def\csname simpleicon@artstationicon\endcsname {\simpleiconsmap\symbol{"EAF6}}
- \expandafter\def\csname simpleicon@arxivicon\endcsname {\simpleiconsmap\symbol{"EAF7}}
- \expandafter\def\csname simpleicon@asahilinuxicon\endcsname {\simpleiconsmap\symbol{"EAF8}}
- \expandafter\def\csname simpleicon@asanaicon\endcsname {\simpleiconsmap\symbol{"EAF9}}
- \expandafter\def\csname simpleicon@asciidoctoricon\endcsname {\simpleiconsmap\symbol{"EAFA}}
- \expandafter\def\csname simpleicon@asciinemaicon\endcsname {\simpleiconsmap\symbol{"EAFB}}
- \expandafter\def\csname simpleicon@asdaicon\endcsname {\simpleiconsmap\symbol{"EAFC}}
- \expandafter\def\csname simpleicon@asepriteicon\endcsname {\simpleiconsmap\symbol{"EAFD}}
- \expandafter\def\csname simpleicon@askfmicon\endcsname {\simpleiconsmap\symbol{"EAFE}}
- \expandafter\def\csname simpleicon@assemblyscripticon\endcsname {\simpleiconsmap\symbol{"EAFF}}
- \expandafter\def\csname simpleicon@asteriskicon\endcsname {\simpleiconsmap\symbol{"EB00}}
- \expandafter\def\csname simpleicon@astonmartinicon\endcsname {\simpleiconsmap\symbol{"EB01}}
- \expandafter\def\csname simpleicon@astraicon\endcsname {\simpleiconsmap\symbol{"EB02}}
- \expandafter\def\csname simpleicon@astralicon\endcsname {\simpleiconsmap\symbol{"EB03}}
- \expandafter\def\csname simpleicon@astroicon\endcsname {\simpleiconsmap\symbol{"EB04}}
- \expandafter\def\csname simpleicon@asusicon\endcsname {\simpleiconsmap\symbol{"EB05}}
- \expandafter\def\csname simpleicon@atandticon\endcsname {\simpleiconsmap\symbol{"EB06}}
- \expandafter\def\csname simpleicon@atariicon\endcsname {\simpleiconsmap\symbol{"EB07}}
- \expandafter\def\csname simpleicon@atlassianicon\endcsname {\simpleiconsmap\symbol{"EB08}}
- \expandafter\def\csname simpleicon@auchanicon\endcsname {\simpleiconsmap\symbol{"EB09}}
- \expandafter\def\csname simpleicon@audacityicon\endcsname {\simpleiconsmap\symbol{"EB0A}}
- \expandafter\def\csname simpleicon@audiicon\endcsname {\simpleiconsmap\symbol{"EB0B}}
- \expandafter\def\csname simpleicon@audibleicon\endcsname {\simpleiconsmap\symbol{"EB0C}}
- \expandafter\def\csname simpleicon@audiobookshelficon\endcsname {\simpleiconsmap\symbol{"EB0D}}
- \expandafter\def\csname simpleicon@audioboomicon\endcsname {\simpleiconsmap\symbol{"EB0E}}
- \expandafter\def\csname simpleicon@audiomackicon\endcsname {\simpleiconsmap\symbol{"EB0F}}
- \expandafter\def\csname simpleicon@audiotechnicaicon\endcsname {\simpleiconsmap\symbol{"EB10}}
- \expandafter\def\csname simpleicon@aureliaicon\endcsname {\simpleiconsmap\symbol{"EB11}}
- \expandafter\def\csname simpleicon@auth0icon\endcsname {\simpleiconsmap\symbol{"EB12}}
- \expandafter\def\csname simpleicon@autheliaicon\endcsname {\simpleiconsmap\symbol{"EB13}}
- \expandafter\def\csname simpleicon@authentikicon\endcsname {\simpleiconsmap\symbol{"EB14}}
- \expandafter\def\csname simpleicon@authyicon\endcsname {\simpleiconsmap\symbol{"EB15}}
- \expandafter\def\csname simpleicon@autocadicon\endcsname {\simpleiconsmap\symbol{"EB16}}
- \expandafter\def\csname simpleicon@autocannonicon\endcsname {\simpleiconsmap\symbol{"EB17}}
- \expandafter\def\csname simpleicon@autodeskicon\endcsname {\simpleiconsmap\symbol{"EB18}}
- \expandafter\def\csname simpleicon@autodeskmayaicon\endcsname {\simpleiconsmap\symbol{"EB19}}
- \expandafter\def\csname simpleicon@autodeskreviticon\endcsname {\simpleiconsmap\symbol{"EB1A}}
- \expandafter\def\csname simpleicon@autohotkeyicon\endcsname {\simpleiconsmap\symbol{"EB1B}}
- \expandafter\def\csname simpleicon@autoiticon\endcsname {\simpleiconsmap\symbol{"EB1C}}
- \expandafter\def\csname simpleicon@automatticicon\endcsname {\simpleiconsmap\symbol{"EB1D}}
- \expandafter\def\csname simpleicon@autoprefixericon\endcsname {\simpleiconsmap\symbol{"EB1E}}
- \expandafter\def\csname simpleicon@autozoneicon\endcsname {\simpleiconsmap\symbol{"EB1F}}
- \expandafter\def\csname simpleicon@avajsicon\endcsname {\simpleiconsmap\symbol{"EB20}}
- \expandafter\def\csname simpleicon@avasticon\endcsname {\simpleiconsmap\symbol{"EB21}}
- \expandafter\def\csname simpleicon@aviancaicon\endcsname {\simpleiconsmap\symbol{"EB22}}
- \expandafter\def\csname simpleicon@aviraicon\endcsname {\simpleiconsmap\symbol{"EB23}}
- \expandafter\def\csname simpleicon@awesomelistsicon\endcsname {\simpleiconsmap\symbol{"EB24}}
- \expandafter\def\csname simpleicon@awesomewmicon\endcsname {\simpleiconsmap\symbol{"EB25}}
- \expandafter\def\csname simpleicon@awsamplifyicon\endcsname {\simpleiconsmap\symbol{"EB26}}
- \expandafter\def\csname simpleicon@awselasticloadbalancingicon\endcsname {\simpleiconsmap\symbol{"EB27}}
- \expandafter\def\csname simpleicon@awsfargateicon\endcsname {\simpleiconsmap\symbol{"EB28}}
- \expandafter\def\csname simpleicon@awslambdaicon\endcsname {\simpleiconsmap\symbol{"EB29}}
- \expandafter\def\csname simpleicon@awsorganizationsicon\endcsname {\simpleiconsmap\symbol{"EB2A}}
- \expandafter\def\csname simpleicon@awssecretsmanagericon\endcsname {\simpleiconsmap\symbol{"EB2B}}
- \expandafter\def\csname simpleicon@awwwardsicon\endcsname {\simpleiconsmap\symbol{"EB2C}}
- \expandafter\def\csname simpleicon@axiosicon\endcsname {\simpleiconsmap\symbol{"EB2D}}
- \expandafter\def\csname simpleicon@babelicon\endcsname {\simpleiconsmap\symbol{"EB2E}}
- \expandafter\def\csname simpleicon@babelioicon\endcsname {\simpleiconsmap\symbol{"EB2F}}
- \expandafter\def\csname simpleicon@babylondotjsicon\endcsname {\simpleiconsmap\symbol{"EB30}}
- \expandafter\def\csname simpleicon@backblazeicon\endcsname {\simpleiconsmap\symbol{"EB31}}
- \expandafter\def\csname simpleicon@backbonedotjsicon\endcsname {\simpleiconsmap\symbol{"EB32}}
- \expandafter\def\csname simpleicon@backendlessicon\endcsname {\simpleiconsmap\symbol{"EB33}}
- \expandafter\def\csname simpleicon@backstageicon\endcsname {\simpleiconsmap\symbol{"EB34}}
- \expandafter\def\csname simpleicon@badooicon\endcsname {\simpleiconsmap\symbol{"EB35}}
- \expandafter\def\csname simpleicon@baiduicon\endcsname {\simpleiconsmap\symbol{"EB36}}
- \expandafter\def\csname simpleicon@bakalariicon\endcsname {\simpleiconsmap\symbol{"EB37}}
- \expandafter\def\csname simpleicon@bambooicon\endcsname {\simpleiconsmap\symbol{"EB38}}
- \expandafter\def\csname simpleicon@bambulabicon\endcsname {\simpleiconsmap\symbol{"EB39}}
- \expandafter\def\csname simpleicon@bandcampicon\endcsname {\simpleiconsmap\symbol{"EB3A}}
- \expandafter\def\csname simpleicon@bandlabicon\endcsname {\simpleiconsmap\symbol{"EB3B}}
- \expandafter\def\csname simpleicon@bandrautomationicon\endcsname {\simpleiconsmap\symbol{"EB3C}}
- \expandafter\def\csname simpleicon@bandsintownicon\endcsname {\simpleiconsmap\symbol{"EB3D}}
- \expandafter\def\csname simpleicon@bankofamericaicon\endcsname {\simpleiconsmap\symbol{"EB3E}}
- \expandafter\def\csname simpleicon@barclaysicon\endcsname {\simpleiconsmap\symbol{"EB3F}}
- \expandafter\def\csname simpleicon@baremetricsicon\endcsname {\simpleiconsmap\symbol{"EB40}}
- \expandafter\def\csname simpleicon@barmeniaicon\endcsname {\simpleiconsmap\symbol{"EB41}}
- \expandafter\def\csname simpleicon@basecampicon\endcsname {\simpleiconsmap\symbol{"EB42}}
- \expandafter\def\csname simpleicon@baserowicon\endcsname {\simpleiconsmap\symbol{"EB43}}
- \expandafter\def\csname simpleicon@basicattentiontokenicon\endcsname {\simpleiconsmap\symbol{"EB44}}
- \expandafter\def\csname simpleicon@bastyonicon\endcsname {\simpleiconsmap\symbol{"EB45}}
- \expandafter\def\csname simpleicon@baticon\endcsname {\simpleiconsmap\symbol{"EB46}}
- \expandafter\def\csname simpleicon@bataicon\endcsname {\simpleiconsmap\symbol{"EB47}}
- \expandafter\def\csname simpleicon@battledotneticon\endcsname {\simpleiconsmap\symbol{"EB48}}
- \expandafter\def\csname simpleicon@bazelicon\endcsname {\simpleiconsmap\symbol{"EB49}}
- \expandafter\def\csname simpleicon@beatporticon\endcsname {\simpleiconsmap\symbol{"EB4A}}
- \expandafter\def\csname simpleicon@beatsicon\endcsname {\simpleiconsmap\symbol{"EB4B}}
- \expandafter\def\csname simpleicon@beatsbydreicon\endcsname {\simpleiconsmap\symbol{"EB4C}}
- \expandafter\def\csname simpleicon@beatstarsicon\endcsname {\simpleiconsmap\symbol{"EB4D}}
- \expandafter\def\csname simpleicon@beekeeperstudioicon\endcsname {\simpleiconsmap\symbol{"EB4E}}
- \expandafter\def\csname simpleicon@behanceicon\endcsname {\simpleiconsmap\symbol{"EB4F}}
- \expandafter\def\csname simpleicon@beijingsubwayicon\endcsname {\simpleiconsmap\symbol{"EB50}}
- \expandafter\def\csname simpleicon@bemicon\endcsname {\simpleiconsmap\symbol{"EB51}}
- \expandafter\def\csname simpleicon@bentleyicon\endcsname {\simpleiconsmap\symbol{"EB52}}
- \expandafter\def\csname simpleicon@bentoicon\endcsname {\simpleiconsmap\symbol{"EB53}}
- \expandafter\def\csname simpleicon@bentoboxicon\endcsname {\simpleiconsmap\symbol{"EB54}}
- \expandafter\def\csname simpleicon@bentomlicon\endcsname {\simpleiconsmap\symbol{"EB55}}
- \expandafter\def\csname simpleicon@berealicon\endcsname {\simpleiconsmap\symbol{"EB56}}
- \expandafter\def\csname simpleicon@betfairicon\endcsname {\simpleiconsmap\symbol{"EB57}}
- \expandafter\def\csname simpleicon@betterstackicon\endcsname {\simpleiconsmap\symbol{"EB58}}
- \expandafter\def\csname simpleicon@bevyicon\endcsname {\simpleiconsmap\symbol{"EB59}}
- \expandafter\def\csname simpleicon@bigbasketicon\endcsname {\simpleiconsmap\symbol{"EB5A}}
- \expandafter\def\csname simpleicon@bigbluebuttonicon\endcsname {\simpleiconsmap\symbol{"EB5B}}
- \expandafter\def\csname simpleicon@bigcartelicon\endcsname {\simpleiconsmap\symbol{"EB5C}}
- \expandafter\def\csname simpleicon@bigcommerceicon\endcsname {\simpleiconsmap\symbol{"EB5D}}
- \expandafter\def\csname simpleicon@bilibiliicon\endcsname {\simpleiconsmap\symbol{"EB5E}}
- \expandafter\def\csname simpleicon@billboardicon\endcsname {\simpleiconsmap\symbol{"EB5F}}
- \expandafter\def\csname simpleicon@bimicon\endcsname {\simpleiconsmap\symbol{"EB60}}
- \expandafter\def\csname simpleicon@binanceicon\endcsname {\simpleiconsmap\symbol{"EB61}}
- \expandafter\def\csname simpleicon@biolinkicon\endcsname {\simpleiconsmap\symbol{"EB62}}
- \expandafter\def\csname simpleicon@biomeicon\endcsname {\simpleiconsmap\symbol{"EB63}}
- \expandafter\def\csname simpleicon@bisecthostingicon\endcsname {\simpleiconsmap\symbol{"EB64}}
- \expandafter\def\csname simpleicon@biticon\endcsname {\simpleiconsmap\symbol{"EB65}}
- \expandafter\def\csname simpleicon@bitbucketicon\endcsname {\simpleiconsmap\symbol{"EB66}}
- \expandafter\def\csname simpleicon@bitcoinicon\endcsname {\simpleiconsmap\symbol{"EB67}}
- \expandafter\def\csname simpleicon@bitcoincashicon\endcsname {\simpleiconsmap\symbol{"EB68}}
- \expandafter\def\csname simpleicon@bitcoinsvicon\endcsname {\simpleiconsmap\symbol{"EB69}}
- \expandafter\def\csname simpleicon@bitcometicon\endcsname {\simpleiconsmap\symbol{"EB6A}}
- \expandafter\def\csname simpleicon@bitdefendericon\endcsname {\simpleiconsmap\symbol{"EB6B}}
- \expandafter\def\csname simpleicon@bitlyicon\endcsname {\simpleiconsmap\symbol{"EB6C}}
- \expandafter\def\csname simpleicon@bitriseicon\endcsname {\simpleiconsmap\symbol{"EB6D}}
- \expandafter\def\csname simpleicon@bittorrenticon\endcsname {\simpleiconsmap\symbol{"EB6E}}
- \expandafter\def\csname simpleicon@bitwardenicon\endcsname {\simpleiconsmap\symbol{"EB6F}}
- \expandafter\def\csname simpleicon@bitwigicon\endcsname {\simpleiconsmap\symbol{"EB70}}
- \expandafter\def\csname simpleicon@blackberryicon\endcsname {\simpleiconsmap\symbol{"EB71}}
- \expandafter\def\csname simpleicon@blackmagicdesignicon\endcsname {\simpleiconsmap\symbol{"EB72}}
- \expandafter\def\csname simpleicon@blazemetericon\endcsname {\simpleiconsmap\symbol{"EB73}}
- \expandafter\def\csname simpleicon@blazoricon\endcsname {\simpleiconsmap\symbol{"EB74}}
- \expandafter\def\csname simpleicon@blendericon\endcsname {\simpleiconsmap\symbol{"EB75}}
- \expandafter\def\csname simpleicon@blockbenchicon\endcsname {\simpleiconsmap\symbol{"EB76}}
- \expandafter\def\csname simpleicon@blockchaindotcomicon\endcsname {\simpleiconsmap\symbol{"EB77}}
- \expandafter\def\csname simpleicon@bloggericon\endcsname {\simpleiconsmap\symbol{"EB78}}
- \expandafter\def\csname simpleicon@bloglovinicon\endcsname {\simpleiconsmap\symbol{"EB79}}
- \expandafter\def\csname simpleicon@blueprinticon\endcsname {\simpleiconsmap\symbol{"EB7A}}
- \expandafter\def\csname simpleicon@blueskyicon\endcsname {\simpleiconsmap\symbol{"EB7B}}
- \expandafter\def\csname simpleicon@bluesoundicon\endcsname {\simpleiconsmap\symbol{"EB7C}}
- \expandafter\def\csname simpleicon@bluetoothicon\endcsname {\simpleiconsmap\symbol{"EB7D}}
- \expandafter\def\csname simpleicon@bmcsoftwareicon\endcsname {\simpleiconsmap\symbol{"EB7E}}
- \expandafter\def\csname simpleicon@bmwicon\endcsname {\simpleiconsmap\symbol{"EB7F}}
- \expandafter\def\csname simpleicon@bnbchainicon\endcsname {\simpleiconsmap\symbol{"EB80}}
- \expandafter\def\csname simpleicon@boardgamegeekicon\endcsname {\simpleiconsmap\symbol{"EB81}}
- \expandafter\def\csname simpleicon@boaticon\endcsname {\simpleiconsmap\symbol{"EB82}}
- \expandafter\def\csname simpleicon@boehringeringelheimicon\endcsname {\simpleiconsmap\symbol{"EB83}}
- \expandafter\def\csname simpleicon@boeingicon\endcsname {\simpleiconsmap\symbol{"EB84}}
- \expandafter\def\csname simpleicon@bombardiericon\endcsname {\simpleiconsmap\symbol{"EB85}}
- \expandafter\def\csname simpleicon@bookalopeicon\endcsname {\simpleiconsmap\symbol{"EB86}}
- \expandafter\def\csname simpleicon@bookbubicon\endcsname {\simpleiconsmap\symbol{"EB87}}
- \expandafter\def\csname simpleicon@bookmetericon\endcsname {\simpleiconsmap\symbol{"EB88}}
- \expandafter\def\csname simpleicon@bookmyshowicon\endcsname {\simpleiconsmap\symbol{"EB89}}
- \expandafter\def\csname simpleicon@bookstackicon\endcsname {\simpleiconsmap\symbol{"EB8A}}
- \expandafter\def\csname simpleicon@boosticon\endcsname {\simpleiconsmap\symbol{"EB8B}}
- \expandafter\def\csname simpleicon@boostyicon\endcsname {\simpleiconsmap\symbol{"EB8C}}
- \expandafter\def\csname simpleicon@bootsicon\endcsname {\simpleiconsmap\symbol{"EB8D}}
- \expandafter\def\csname simpleicon@bootstrapicon\endcsname {\simpleiconsmap\symbol{"EB8E}}
- \expandafter\def\csname simpleicon@borgbackupicon\endcsname {\simpleiconsmap\symbol{"EB8F}}
- \expandafter\def\csname simpleicon@boschicon\endcsname {\simpleiconsmap\symbol{"EB90}}
- \expandafter\def\csname simpleicon@boseicon\endcsname {\simpleiconsmap\symbol{"EB91}}
- \expandafter\def\csname simpleicon@botblecmsicon\endcsname {\simpleiconsmap\symbol{"EB92}}
- \expandafter\def\csname simpleicon@boulangericon\endcsname {\simpleiconsmap\symbol{"EB93}}
- \expandafter\def\csname simpleicon@bowericon\endcsname {\simpleiconsmap\symbol{"EB94}}
- \expandafter\def\csname simpleicon@boxicon\endcsname {\simpleiconsmap\symbol{"EB95}}
- \expandafter\def\csname simpleicon@boxysvgicon\endcsname {\simpleiconsmap\symbol{"EB96}}
- \expandafter\def\csname simpleicon@braintreeicon\endcsname {\simpleiconsmap\symbol{"EB97}}
- \expandafter\def\csname simpleicon@brandfoldericon\endcsname {\simpleiconsmap\symbol{"EB98}}
- \expandafter\def\csname simpleicon@braveicon\endcsname {\simpleiconsmap\symbol{"EB99}}
- \expandafter\def\csname simpleicon@breakericon\endcsname {\simpleiconsmap\symbol{"EB9A}}
- \expandafter\def\csname simpleicon@brenntagicon\endcsname {\simpleiconsmap\symbol{"EB9B}}
- \expandafter\def\csname simpleicon@brevoicon\endcsname {\simpleiconsmap\symbol{"EB9C}}
- \expandafter\def\csname simpleicon@brexicon\endcsname {\simpleiconsmap\symbol{"EB9D}}
- \expandafter\def\csname simpleicon@bricksicon\endcsname {\simpleiconsmap\symbol{"EB9E}}
- \expandafter\def\csname simpleicon@britishairwaysicon\endcsname {\simpleiconsmap\symbol{"EB9F}}
- \expandafter\def\csname simpleicon@broadcomicon\endcsname {\simpleiconsmap\symbol{"EBA0}}
- \expandafter\def\csname simpleicon@brunoicon\endcsname {\simpleiconsmap\symbol{"EBA1}}
- \expandafter\def\csname simpleicon@bsdicon\endcsname {\simpleiconsmap\symbol{"EBA2}}
- \expandafter\def\csname simpleicon@bspwmicon\endcsname {\simpleiconsmap\symbol{"EBA3}}
- \expandafter\def\csname simpleicon@bticon\endcsname {\simpleiconsmap\symbol{"EBA4}}
- \expandafter\def\csname simpleicon@buddyicon\endcsname {\simpleiconsmap\symbol{"EBA5}}
- \expandafter\def\csname simpleicon@budibaseicon\endcsname {\simpleiconsmap\symbol{"EBA6}}
- \expandafter\def\csname simpleicon@buefyicon\endcsname {\simpleiconsmap\symbol{"EBA7}}
- \expandafter\def\csname simpleicon@buffericon\endcsname {\simpleiconsmap\symbol{"EBA8}}
- \expandafter\def\csname simpleicon@bugattiicon\endcsname {\simpleiconsmap\symbol{"EBA9}}
- \expandafter\def\csname simpleicon@bugcrowdicon\endcsname {\simpleiconsmap\symbol{"EBAA}}
- \expandafter\def\csname simpleicon@bugsnagicon\endcsname {\simpleiconsmap\symbol{"EBAB}}
- \expandafter\def\csname simpleicon@buhlicon\endcsname {\simpleiconsmap\symbol{"EBAC}}
- \expandafter\def\csname simpleicon@buildkiteicon\endcsname {\simpleiconsmap\symbol{"EBAD}}
- \expandafter\def\csname simpleicon@bukalapakicon\endcsname {\simpleiconsmap\symbol{"EBAE}}
- \expandafter\def\csname simpleicon@bulmaicon\endcsname {\simpleiconsmap\symbol{"EBAF}}
- \expandafter\def\csname simpleicon@bunicon\endcsname {\simpleiconsmap\symbol{"EBB0}}
- \expandafter\def\csname simpleicon@bungieicon\endcsname {\simpleiconsmap\symbol{"EBB1}}
- \expandafter\def\csname simpleicon@bunqicon\endcsname {\simpleiconsmap\symbol{"EBB2}}
- \expandafter\def\csname simpleicon@burgerkingicon\endcsname {\simpleiconsmap\symbol{"EBB3}}
- \expandafter\def\csname simpleicon@burpsuiteicon\endcsname {\simpleiconsmap\symbol{"EBB4}}
- \expandafter\def\csname simpleicon@burtonicon\endcsname {\simpleiconsmap\symbol{"EBB5}}
- \expandafter\def\csname simpleicon@buymeacoffeeicon\endcsname {\simpleiconsmap\symbol{"EBB6}}
- \expandafter\def\csname simpleicon@buyselladsicon\endcsname {\simpleiconsmap\symbol{"EBB7}}
- \expandafter\def\csname simpleicon@buzzfeedicon\endcsname {\simpleiconsmap\symbol{"EBB8}}
- \expandafter\def\csname simpleicon@bvgicon\endcsname {\simpleiconsmap\symbol{"EBB9}}
- \expandafter\def\csname simpleicon@byjusicon\endcsname {\simpleiconsmap\symbol{"EBBA}}
- \expandafter\def\csname simpleicon@bytedanceicon\endcsname {\simpleiconsmap\symbol{"EBBB}}
- \expandafter\def\csname simpleicon@cicon\endcsname {\simpleiconsmap\symbol{"EBBC}}
- \expandafter\def\csname simpleicon@cacheticon\endcsname {\simpleiconsmap\symbol{"EBBD}}
- \expandafter\def\csname simpleicon@caddyicon\endcsname {\simpleiconsmap\symbol{"EBBE}}
- \expandafter\def\csname simpleicon@cadillacicon\endcsname {\simpleiconsmap\symbol{"EBBF}}
- \expandafter\def\csname simpleicon@cafepressicon\endcsname {\simpleiconsmap\symbol{"EBC0}}
- \expandafter\def\csname simpleicon@caffeineicon\endcsname {\simpleiconsmap\symbol{"EBC1}}
- \expandafter\def\csname simpleicon@cairographicsicon\endcsname {\simpleiconsmap\symbol{"EBC2}}
- \expandafter\def\csname simpleicon@cairometroicon\endcsname {\simpleiconsmap\symbol{"EBC3}}
- \expandafter\def\csname simpleicon@cakephpicon\endcsname {\simpleiconsmap\symbol{"EBC4}}
- \expandafter\def\csname simpleicon@caldotcomicon\endcsname {\simpleiconsmap\symbol{"EBC5}}
- \expandafter\def\csname simpleicon@calendlyicon\endcsname {\simpleiconsmap\symbol{"EBC6}}
- \expandafter\def\csname simpleicon@calibrewebicon\endcsname {\simpleiconsmap\symbol{"EBC7}}
- \expandafter\def\csname simpleicon@campaignmonitoricon\endcsname {\simpleiconsmap\symbol{"EBC8}}
- \expandafter\def\csname simpleicon@camundaicon\endcsname {\simpleiconsmap\symbol{"EBC9}}
- \expandafter\def\csname simpleicon@canonicalicon\endcsname {\simpleiconsmap\symbol{"EBCA}}
- \expandafter\def\csname simpleicon@canvaicon\endcsname {\simpleiconsmap\symbol{"EBCB}}
- \expandafter\def\csname simpleicon@canvasicon\endcsname {\simpleiconsmap\symbol{"EBCC}}
- \expandafter\def\csname simpleicon@capacitoricon\endcsname {\simpleiconsmap\symbol{"EBCD}}
- \expandafter\def\csname simpleicon@cardanoicon\endcsname {\simpleiconsmap\symbol{"EBCE}}
- \expandafter\def\csname simpleicon@carlsberggroupicon\endcsname {\simpleiconsmap\symbol{"EBCF}}
- \expandafter\def\csname simpleicon@carrdicon\endcsname {\simpleiconsmap\symbol{"EBD0}}
- \expandafter\def\csname simpleicon@carrefouricon\endcsname {\simpleiconsmap\symbol{"EBD1}}
- \expandafter\def\csname simpleicon@carthrottleicon\endcsname {\simpleiconsmap\symbol{"EBD2}}
- \expandafter\def\csname simpleicon@cartoicon\endcsname {\simpleiconsmap\symbol{"EBD3}}
- \expandafter\def\csname simpleicon@cashappicon\endcsname {\simpleiconsmap\symbol{"EBD4}}
- \expandafter\def\csname simpleicon@castboxicon\endcsname {\simpleiconsmap\symbol{"EBD5}}
- \expandafter\def\csname simpleicon@castoramaicon\endcsname {\simpleiconsmap\symbol{"EBD6}}
- \expandafter\def\csname simpleicon@castroicon\endcsname {\simpleiconsmap\symbol{"EBD7}}
- \expandafter\def\csname simpleicon@caterpillaricon\endcsname {\simpleiconsmap\symbol{"EBD8}}
- \expandafter\def\csname simpleicon@cbcicon\endcsname {\simpleiconsmap\symbol{"EBD9}}
- \expandafter\def\csname simpleicon@cbsicon\endcsname {\simpleiconsmap\symbol{"EBDA}}
- \expandafter\def\csname simpleicon@ccleanericon\endcsname {\simpleiconsmap\symbol{"EBDB}}
- \expandafter\def\csname simpleicon@cdprojekticon\endcsname {\simpleiconsmap\symbol{"EBDC}}
- \expandafter\def\csname simpleicon@celeryicon\endcsname {\simpleiconsmap\symbol{"EBDD}}
- \expandafter\def\csname simpleicon@celestronicon\endcsname {\simpleiconsmap\symbol{"EBDE}}
- \expandafter\def\csname simpleicon@centosicon\endcsname {\simpleiconsmap\symbol{"EBDF}}
- \expandafter\def\csname simpleicon@cephicon\endcsname {\simpleiconsmap\symbol{"EBE0}}
- \expandafter\def\csname simpleicon@cesiumicon\endcsname {\simpleiconsmap\symbol{"EBE1}}
- \expandafter\def\csname simpleicon@chaiicon\endcsname {\simpleiconsmap\symbol{"EBE2}}
- \expandafter\def\csname simpleicon@chainguardicon\endcsname {\simpleiconsmap\symbol{"EBE3}}
- \expandafter\def\csname simpleicon@chainlinkicon\endcsname {\simpleiconsmap\symbol{"EBE4}}
- \expandafter\def\csname simpleicon@chakrauiicon\endcsname {\simpleiconsmap\symbol{"EBE5}}
- \expandafter\def\csname simpleicon@channel4icon\endcsname {\simpleiconsmap\symbol{"EBE6}}
- \expandafter\def\csname simpleicon@charlesicon\endcsname {\simpleiconsmap\symbol{"EBE7}}
- \expandafter\def\csname simpleicon@chartdotjsicon\endcsname {\simpleiconsmap\symbol{"EBE8}}
- \expandafter\def\csname simpleicon@chartmogulicon\endcsname {\simpleiconsmap\symbol{"EBE9}}
- \expandafter\def\csname simpleicon@chaseicon\endcsname {\simpleiconsmap\symbol{"EBEA}}
- \expandafter\def\csname simpleicon@chatboticon\endcsname {\simpleiconsmap\symbol{"EBEB}}
- \expandafter\def\csname simpleicon@chatwooticon\endcsname {\simpleiconsmap\symbol{"EBEC}}
- \expandafter\def\csname simpleicon@checkioicon\endcsname {\simpleiconsmap\symbol{"EBED}}
- \expandafter\def\csname simpleicon@checkmarxicon\endcsname {\simpleiconsmap\symbol{"EBEE}}
- \expandafter\def\csname simpleicon@checkmkicon\endcsname {\simpleiconsmap\symbol{"EBEF}}
- \expandafter\def\csname simpleicon@chedrauiicon\endcsname {\simpleiconsmap\symbol{"EBF0}}
- \expandafter\def\csname simpleicon@cheerioicon\endcsname {\simpleiconsmap\symbol{"EBF1}}
- \expandafter\def\csname simpleicon@cheficon\endcsname {\simpleiconsmap\symbol{"EBF2}}
- \expandafter\def\csname simpleicon@chemexicon\endcsname {\simpleiconsmap\symbol{"EBF3}}
- \expandafter\def\csname simpleicon@chessdotcomicon\endcsname {\simpleiconsmap\symbol{"EBF4}}
- \expandafter\def\csname simpleicon@chevroleticon\endcsname {\simpleiconsmap\symbol{"EBF5}}
- \expandafter\def\csname simpleicon@chianetworkicon\endcsname {\simpleiconsmap\symbol{"EBF6}}
- \expandafter\def\csname simpleicon@chinaeasternairlinesicon\endcsname {\simpleiconsmap\symbol{"EBF7}}
- \expandafter\def\csname simpleicon@chinasouthernairlinesicon\endcsname {\simpleiconsmap\symbol{"EBF8}}
- \expandafter\def\csname simpleicon@chocolateyicon\endcsname {\simpleiconsmap\symbol{"EBF9}}
- \expandafter\def\csname simpleicon@chromaticicon\endcsname {\simpleiconsmap\symbol{"EBFA}}
- \expandafter\def\csname simpleicon@chromecasticon\endcsname {\simpleiconsmap\symbol{"EBFB}}
- \expandafter\def\csname simpleicon@chromewebstoreicon\endcsname {\simpleiconsmap\symbol{"EBFC}}
- \expandafter\def\csname simpleicon@chryslericon\endcsname {\simpleiconsmap\symbol{"EBFD}}
- \expandafter\def\csname simpleicon@chupachupsicon\endcsname {\simpleiconsmap\symbol{"EBFE}}
- \expandafter\def\csname simpleicon@ciliumicon\endcsname {\simpleiconsmap\symbol{"EBFF}}
- \expandafter\def\csname simpleicon@cinema4dicon\endcsname {\simpleiconsmap\symbol{"EC00}}
- \expandafter\def\csname simpleicon@circleicon\endcsname {\simpleiconsmap\symbol{"EC01}}
- \expandafter\def\csname simpleicon@circleciicon\endcsname {\simpleiconsmap\symbol{"EC02}}
- \expandafter\def\csname simpleicon@circuitverseicon\endcsname {\simpleiconsmap\symbol{"EC03}}
- \expandafter\def\csname simpleicon@cirrusciicon\endcsname {\simpleiconsmap\symbol{"EC04}}
- \expandafter\def\csname simpleicon@ciscoicon\endcsname {\simpleiconsmap\symbol{"EC05}}
- \expandafter\def\csname simpleicon@citrixicon\endcsname {\simpleiconsmap\symbol{"EC06}}
- \expandafter\def\csname simpleicon@citroenicon\endcsname {\simpleiconsmap\symbol{"EC07}}
- \expandafter\def\csname simpleicon@civicrmicon\endcsname {\simpleiconsmap\symbol{"EC08}}
- \expandafter\def\csname simpleicon@civoicon\endcsname {\simpleiconsmap\symbol{"EC09}}
- \expandafter\def\csname simpleicon@ckeditor4icon\endcsname {\simpleiconsmap\symbol{"EC0A}}
- \expandafter\def\csname simpleicon@clarifaiicon\endcsname {\simpleiconsmap\symbol{"EC0B}}
- \expandafter\def\csname simpleicon@clarisicon\endcsname {\simpleiconsmap\symbol{"EC0C}}
- \expandafter\def\csname simpleicon@clarivateicon\endcsname {\simpleiconsmap\symbol{"EC0D}}
- \expandafter\def\csname simpleicon@clerkicon\endcsname {\simpleiconsmap\symbol{"EC0E}}
- \expandafter\def\csname simpleicon@clevercloudicon\endcsname {\simpleiconsmap\symbol{"EC0F}}
- \expandafter\def\csname simpleicon@clickhouseicon\endcsname {\simpleiconsmap\symbol{"EC10}}
- \expandafter\def\csname simpleicon@clickupicon\endcsname {\simpleiconsmap\symbol{"EC11}}
- \expandafter\def\csname simpleicon@clionicon\endcsname {\simpleiconsmap\symbol{"EC12}}
- \expandafter\def\csname simpleicon@cliqzicon\endcsname {\simpleiconsmap\symbol{"EC13}}
- \expandafter\def\csname simpleicon@clockifyicon\endcsname {\simpleiconsmap\symbol{"EC14}}
- \expandafter\def\csname simpleicon@clojureicon\endcsname {\simpleiconsmap\symbol{"EC15}}
- \expandafter\def\csname simpleicon@cloud66icon\endcsname {\simpleiconsmap\symbol{"EC16}}
- \expandafter\def\csname simpleicon@cloudbeesicon\endcsname {\simpleiconsmap\symbol{"EC17}}
- \expandafter\def\csname simpleicon@cloudcannonicon\endcsname {\simpleiconsmap\symbol{"EC18}}
- \expandafter\def\csname simpleicon@clouderaicon\endcsname {\simpleiconsmap\symbol{"EC19}}
- \expandafter\def\csname simpleicon@cloudflareicon\endcsname {\simpleiconsmap\symbol{"EC1A}}
- \expandafter\def\csname simpleicon@cloudflarepagesicon\endcsname {\simpleiconsmap\symbol{"EC1B}}
- \expandafter\def\csname simpleicon@cloudflareworkersicon\endcsname {\simpleiconsmap\symbol{"EC1C}}
- \expandafter\def\csname simpleicon@cloudfoundryicon\endcsname {\simpleiconsmap\symbol{"EC1D}}
- \expandafter\def\csname simpleicon@cloudinaryicon\endcsname {\simpleiconsmap\symbol{"EC1E}}
- \expandafter\def\csname simpleicon@cloudronicon\endcsname {\simpleiconsmap\symbol{"EC1F}}
- \expandafter\def\csname simpleicon@cloudsmithicon\endcsname {\simpleiconsmap\symbol{"EC20}}
- \expandafter\def\csname simpleicon@cloudwaysicon\endcsname {\simpleiconsmap\symbol{"EC21}}
- \expandafter\def\csname simpleicon@clubforceicon\endcsname {\simpleiconsmap\symbol{"EC22}}
- \expandafter\def\csname simpleicon@clubhouseicon\endcsname {\simpleiconsmap\symbol{"EC23}}
- \expandafter\def\csname simpleicon@clypicon\endcsname {\simpleiconsmap\symbol{"EC24}}
- \expandafter\def\csname simpleicon@cmakeicon\endcsname {\simpleiconsmap\symbol{"EC25}}
- \expandafter\def\csname simpleicon@cncficon\endcsname {\simpleiconsmap\symbol{"EC26}}
- \expandafter\def\csname simpleicon@cneticon\endcsname {\simpleiconsmap\symbol{"EC27}}
- \expandafter\def\csname simpleicon@cnnicon\endcsname {\simpleiconsmap\symbol{"EC28}}
- \expandafter\def\csname simpleicon@cocacolaicon\endcsname {\simpleiconsmap\symbol{"EC29}}
- \expandafter\def\csname simpleicon@cockpiticon\endcsname {\simpleiconsmap\symbol{"EC2A}}
- \expandafter\def\csname simpleicon@cockroachlabsicon\endcsname {\simpleiconsmap\symbol{"EC2B}}
- \expandafter\def\csname simpleicon@cocoapodsicon\endcsname {\simpleiconsmap\symbol{"EC2C}}
- \expandafter\def\csname simpleicon@cocosicon\endcsname {\simpleiconsmap\symbol{"EC2D}}
- \expandafter\def\csname simpleicon@codaicon\endcsname {\simpleiconsmap\symbol{"EC2E}}
- \expandafter\def\csname simpleicon@codacyicon\endcsname {\simpleiconsmap\symbol{"EC2F}}
- \expandafter\def\csname simpleicon@codebergicon\endcsname {\simpleiconsmap\symbol{"EC30}}
- \expandafter\def\csname simpleicon@codeblocksicon\endcsname {\simpleiconsmap\symbol{"EC31}}
- \expandafter\def\csname simpleicon@codecademyicon\endcsname {\simpleiconsmap\symbol{"EC32}}
- \expandafter\def\csname simpleicon@codeceptjsicon\endcsname {\simpleiconsmap\symbol{"EC33}}
- \expandafter\def\csname simpleicon@codecheficon\endcsname {\simpleiconsmap\symbol{"EC34}}
- \expandafter\def\csname simpleicon@codeclimateicon\endcsname {\simpleiconsmap\symbol{"EC35}}
- \expandafter\def\csname simpleicon@codecovicon\endcsname {\simpleiconsmap\symbol{"EC36}}
- \expandafter\def\csname simpleicon@codefactoricon\endcsname {\simpleiconsmap\symbol{"EC37}}
- \expandafter\def\csname simpleicon@codeforcesicon\endcsname {\simpleiconsmap\symbol{"EC38}}
- \expandafter\def\csname simpleicon@codefreshicon\endcsname {\simpleiconsmap\symbol{"EC39}}
- \expandafter\def\csname simpleicon@codeignitericon\endcsname {\simpleiconsmap\symbol{"EC3A}}
- \expandafter\def\csname simpleicon@codeiumicon\endcsname {\simpleiconsmap\symbol{"EC3B}}
- \expandafter\def\csname simpleicon@codemagicicon\endcsname {\simpleiconsmap\symbol{"EC3C}}
- \expandafter\def\csname simpleicon@codementoricon\endcsname {\simpleiconsmap\symbol{"EC3D}}
- \expandafter\def\csname simpleicon@codemirroricon\endcsname {\simpleiconsmap\symbol{"EC3E}}
- \expandafter\def\csname simpleicon@codenewbieicon\endcsname {\simpleiconsmap\symbol{"EC3F}}
- \expandafter\def\csname simpleicon@codepenicon\endcsname {\simpleiconsmap\symbol{"EC40}}
- \expandafter\def\csname simpleicon@codeprojecticon\endcsname {\simpleiconsmap\symbol{"EC41}}
- \expandafter\def\csname simpleicon@codericon\endcsname {\simpleiconsmap\symbol{"EC42}}
- \expandafter\def\csname simpleicon@codersrankicon\endcsname {\simpleiconsmap\symbol{"EC43}}
- \expandafter\def\csname simpleicon@coderwallicon\endcsname {\simpleiconsmap\symbol{"EC44}}
- \expandafter\def\csname simpleicon@codesandboxicon\endcsname {\simpleiconsmap\symbol{"EC45}}
- \expandafter\def\csname simpleicon@codeshipicon\endcsname {\simpleiconsmap\symbol{"EC46}}
- \expandafter\def\csname simpleicon@codesignalicon\endcsname {\simpleiconsmap\symbol{"EC47}}
- \expandafter\def\csname simpleicon@codestreamicon\endcsname {\simpleiconsmap\symbol{"EC48}}
- \expandafter\def\csname simpleicon@codewarsicon\endcsname {\simpleiconsmap\symbol{"EC49}}
- \expandafter\def\csname simpleicon@codingameicon\endcsname {\simpleiconsmap\symbol{"EC4A}}
- \expandafter\def\csname simpleicon@codingninjasicon\endcsname {\simpleiconsmap\symbol{"EC4B}}
- \expandafter\def\csname simpleicon@codioicon\endcsname {\simpleiconsmap\symbol{"EC4C}}
- \expandafter\def\csname simpleicon@coffeescripticon\endcsname {\simpleiconsmap\symbol{"EC4D}}
- \expandafter\def\csname simpleicon@coggleicon\endcsname {\simpleiconsmap\symbol{"EC4E}}
- \expandafter\def\csname simpleicon@cognizanticon\endcsname {\simpleiconsmap\symbol{"EC4F}}
- \expandafter\def\csname simpleicon@coilicon\endcsname {\simpleiconsmap\symbol{"EC50}}
- \expandafter\def\csname simpleicon@coinbaseicon\endcsname {\simpleiconsmap\symbol{"EC51}}
- \expandafter\def\csname simpleicon@coinmarketcapicon\endcsname {\simpleiconsmap\symbol{"EC52}}
- \expandafter\def\csname simpleicon@comicfuryicon\endcsname {\simpleiconsmap\symbol{"EC53}}
- \expandafter\def\csname simpleicon@commaicon\endcsname {\simpleiconsmap\symbol{"EC54}}
- \expandafter\def\csname simpleicon@commerzbankicon\endcsname {\simpleiconsmap\symbol{"EC55}}
- \expandafter\def\csname simpleicon@commitlinticon\endcsname {\simpleiconsmap\symbol{"EC56}}
- \expandafter\def\csname simpleicon@commodoreicon\endcsname {\simpleiconsmap\symbol{"EC57}}
- \expandafter\def\csname simpleicon@commonworkflowlanguageicon\endcsname {\simpleiconsmap\symbol{"EC58}}
- \expandafter\def\csname simpleicon@compilerexplorericon\endcsname {\simpleiconsmap\symbol{"EC59}}
- \expandafter\def\csname simpleicon@composericon\endcsname {\simpleiconsmap\symbol{"EC5A}}
- \expandafter\def\csname simpleicon@comptiaicon\endcsname {\simpleiconsmap\symbol{"EC5B}}
- \expandafter\def\csname simpleicon@comsolicon\endcsname {\simpleiconsmap\symbol{"EC5C}}
- \expandafter\def\csname simpleicon@conanicon\endcsname {\simpleiconsmap\symbol{"EC5D}}
- \expandafter\def\csname simpleicon@concourseicon\endcsname {\simpleiconsmap\symbol{"EC5E}}
- \expandafter\def\csname simpleicon@condaforgeicon\endcsname {\simpleiconsmap\symbol{"EC5F}}
- \expandafter\def\csname simpleicon@conektaicon\endcsname {\simpleiconsmap\symbol{"EC60}}
- \expandafter\def\csname simpleicon@confluenceicon\endcsname {\simpleiconsmap\symbol{"EC61}}
- \expandafter\def\csname simpleicon@construct3icon\endcsname {\simpleiconsmap\symbol{"EC62}}
- \expandafter\def\csname simpleicon@consulicon\endcsname {\simpleiconsmap\symbol{"EC63}}
- \expandafter\def\csname simpleicon@contactlesspaymenticon\endcsname {\simpleiconsmap\symbol{"EC64}}
- \expandafter\def\csname simpleicon@containerdicon\endcsname {\simpleiconsmap\symbol{"EC65}}
- \expandafter\def\csname simpleicon@contaoicon\endcsname {\simpleiconsmap\symbol{"EC66}}
- \expandafter\def\csname simpleicon@contentfulicon\endcsname {\simpleiconsmap\symbol{"EC67}}
- \expandafter\def\csname simpleicon@contentstackicon\endcsname {\simpleiconsmap\symbol{"EC68}}
- \expandafter\def\csname simpleicon@contributorcovenanticon\endcsname {\simpleiconsmap\symbol{"EC69}}
- \expandafter\def\csname simpleicon@conventionalcommitsicon\endcsname {\simpleiconsmap\symbol{"EC6A}}
- \expandafter\def\csname simpleicon@convertioicon\endcsname {\simpleiconsmap\symbol{"EC6B}}
- \expandafter\def\csname simpleicon@cookiecuttericon\endcsname {\simpleiconsmap\symbol{"EC6C}}
- \expandafter\def\csname simpleicon@coolermastericon\endcsname {\simpleiconsmap\symbol{"EC6D}}
- \expandafter\def\csname simpleicon@coopicon\endcsname {\simpleiconsmap\symbol{"EC6E}}
- \expandafter\def\csname simpleicon@copaairlinesicon\endcsname {\simpleiconsmap\symbol{"EC6F}}
- \expandafter\def\csname simpleicon@coppelicon\endcsname {\simpleiconsmap\symbol{"EC70}}
- \expandafter\def\csname simpleicon@coraicon\endcsname {\simpleiconsmap\symbol{"EC71}}
- \expandafter\def\csname simpleicon@coreldrawicon\endcsname {\simpleiconsmap\symbol{"EC72}}
- \expandafter\def\csname simpleicon@coronaengineicon\endcsname {\simpleiconsmap\symbol{"EC73}}
- \expandafter\def\csname simpleicon@coronarenderericon\endcsname {\simpleiconsmap\symbol{"EC74}}
- \expandafter\def\csname simpleicon@corsairicon\endcsname {\simpleiconsmap\symbol{"EC75}}
- \expandafter\def\csname simpleicon@couchbaseicon\endcsname {\simpleiconsmap\symbol{"EC76}}
- \expandafter\def\csname simpleicon@counterstrikeicon\endcsname {\simpleiconsmap\symbol{"EC77}}
- \expandafter\def\csname simpleicon@countingworksproicon\endcsname {\simpleiconsmap\symbol{"EC78}}
- \expandafter\def\csname simpleicon@courseraicon\endcsname {\simpleiconsmap\symbol{"EC79}}
- \expandafter\def\csname simpleicon@coverallsicon\endcsname {\simpleiconsmap\symbol{"EC7A}}
- \expandafter\def\csname simpleicon@cpanelicon\endcsname {\simpleiconsmap\symbol{"EC7B}}
- \expandafter\def\csname simpleicon@cplusplusicon\endcsname {\simpleiconsmap\symbol{"EC7C}}
- \expandafter\def\csname simpleicon@cplusplusbuildericon\endcsname {\simpleiconsmap\symbol{"EC7D}}
- \expandafter\def\csname simpleicon@craftcmsicon\endcsname {\simpleiconsmap\symbol{"EC7E}}
- \expandafter\def\csname simpleicon@craftsmanicon\endcsname {\simpleiconsmap\symbol{"EC7F}}
- \expandafter\def\csname simpleicon@cratedbicon\endcsname {\simpleiconsmap\symbol{"EC80}}
- \expandafter\def\csname simpleicon@crayonicon\endcsname {\simpleiconsmap\symbol{"EC81}}
- \expandafter\def\csname simpleicon@crealityicon\endcsname {\simpleiconsmap\symbol{"EC82}}
- \expandafter\def\csname simpleicon@createreactappicon\endcsname {\simpleiconsmap\symbol{"EC83}}
- \expandafter\def\csname simpleicon@creativecommonsicon\endcsname {\simpleiconsmap\symbol{"EC84}}
- \expandafter\def\csname simpleicon@creativetechnologyicon\endcsname {\simpleiconsmap\symbol{"EC85}}
- \expandafter\def\csname simpleicon@credlyicon\endcsname {\simpleiconsmap\symbol{"EC86}}
- \expandafter\def\csname simpleicon@crehanaicon\endcsname {\simpleiconsmap\symbol{"EC87}}
- \expandafter\def\csname simpleicon@crewunitedicon\endcsname {\simpleiconsmap\symbol{"EC88}}
- \expandafter\def\csname simpleicon@criticalroleicon\endcsname {\simpleiconsmap\symbol{"EC89}}
- \expandafter\def\csname simpleicon@crowdinicon\endcsname {\simpleiconsmap\symbol{"EC8A}}
- \expandafter\def\csname simpleicon@crowdsourceicon\endcsname {\simpleiconsmap\symbol{"EC8B}}
- \expandafter\def\csname simpleicon@crunchbaseicon\endcsname {\simpleiconsmap\symbol{"EC8C}}
- \expandafter\def\csname simpleicon@crunchyrollicon\endcsname {\simpleiconsmap\symbol{"EC8D}}
- \expandafter\def\csname simpleicon@cryengineicon\endcsname {\simpleiconsmap\symbol{"EC8E}}
- \expandafter\def\csname simpleicon@cryptpadicon\endcsname {\simpleiconsmap\symbol{"EC8F}}
- \expandafter\def\csname simpleicon@crystalicon\endcsname {\simpleiconsmap\symbol{"EC90}}
- \expandafter\def\csname simpleicon@css3icon\endcsname {\simpleiconsmap\symbol{"EC91}}
- \expandafter\def\csname simpleicon@cssdesignawardsicon\endcsname {\simpleiconsmap\symbol{"EC92}}
- \expandafter\def\csname simpleicon@cssmodulesicon\endcsname {\simpleiconsmap\symbol{"EC93}}
- \expandafter\def\csname simpleicon@csswizardryicon\endcsname {\simpleiconsmap\symbol{"EC94}}
- \expandafter\def\csname simpleicon@ctsicon\endcsname {\simpleiconsmap\symbol{"EC95}}
- \expandafter\def\csname simpleicon@cucumbericon\endcsname {\simpleiconsmap\symbol{"EC96}}
- \expandafter\def\csname simpleicon@culturaicon\endcsname {\simpleiconsmap\symbol{"EC97}}
- \expandafter\def\csname simpleicon@curlicon\endcsname {\simpleiconsmap\symbol{"EC98}}
- \expandafter\def\csname simpleicon@curseforgeicon\endcsname {\simpleiconsmap\symbol{"EC99}}
- \expandafter\def\csname simpleicon@custominkicon\endcsname {\simpleiconsmap\symbol{"EC9A}}
- \expandafter\def\csname simpleicon@cyberdefendersicon\endcsname {\simpleiconsmap\symbol{"EC9B}}
- \expandafter\def\csname simpleicon@cycling74icon\endcsname {\simpleiconsmap\symbol{"EC9C}}
- \expandafter\def\csname simpleicon@cypressicon\endcsname {\simpleiconsmap\symbol{"EC9D}}
- \expandafter\def\csname simpleicon@cytoscapedotjsicon\endcsname {\simpleiconsmap\symbol{"EC9E}}
- \expandafter\def\csname simpleicon@dicon\endcsname {\simpleiconsmap\symbol{"EC9F}}
- \expandafter\def\csname simpleicon@d3dotjsicon\endcsname {\simpleiconsmap\symbol{"ECA0}}
- \expandafter\def\csname simpleicon@daciaicon\endcsname {\simpleiconsmap\symbol{"ECA1}}
- \expandafter\def\csname simpleicon@daficon\endcsname {\simpleiconsmap\symbol{"ECA2}}
- \expandafter\def\csname simpleicon@dailydotdevicon\endcsname {\simpleiconsmap\symbol{"ECA3}}
- \expandafter\def\csname simpleicon@dailymotionicon\endcsname {\simpleiconsmap\symbol{"ECA4}}
- \expandafter\def\csname simpleicon@daisyuiicon\endcsname {\simpleiconsmap\symbol{"ECA5}}
- \expandafter\def\csname simpleicon@dapricon\endcsname {\simpleiconsmap\symbol{"ECA6}}
- \expandafter\def\csname simpleicon@darkreadericon\endcsname {\simpleiconsmap\symbol{"ECA7}}
- \expandafter\def\csname simpleicon@darticon\endcsname {\simpleiconsmap\symbol{"ECA8}}
- \expandafter\def\csname simpleicon@dartyicon\endcsname {\simpleiconsmap\symbol{"ECA9}}
- \expandafter\def\csname simpleicon@dasersteicon\endcsname {\simpleiconsmap\symbol{"ECAA}}
- \expandafter\def\csname simpleicon@dashicon\endcsname {\simpleiconsmap\symbol{"ECAB}}
- \expandafter\def\csname simpleicon@dashlaneicon\endcsname {\simpleiconsmap\symbol{"ECAC}}
- \expandafter\def\csname simpleicon@daskicon\endcsname {\simpleiconsmap\symbol{"ECAD}}
- \expandafter\def\csname simpleicon@dassaultsystemesicon\endcsname {\simpleiconsmap\symbol{"ECAE}}
- \expandafter\def\csname simpleicon@databricksicon\endcsname {\simpleiconsmap\symbol{"ECAF}}
- \expandafter\def\csname simpleicon@datacampicon\endcsname {\simpleiconsmap\symbol{"ECB0}}
- \expandafter\def\csname simpleicon@datadogicon\endcsname {\simpleiconsmap\symbol{"ECB1}}
- \expandafter\def\csname simpleicon@datadotaiicon\endcsname {\simpleiconsmap\symbol{"ECB2}}
- \expandafter\def\csname simpleicon@datagripicon\endcsname {\simpleiconsmap\symbol{"ECB3}}
- \expandafter\def\csname simpleicon@dataikuicon\endcsname {\simpleiconsmap\symbol{"ECB4}}
- \expandafter\def\csname simpleicon@datastaxicon\endcsname {\simpleiconsmap\symbol{"ECB5}}
- \expandafter\def\csname simpleicon@datefnsicon\endcsname {\simpleiconsmap\symbol{"ECB6}}
- \expandafter\def\csname simpleicon@datevicon\endcsname {\simpleiconsmap\symbol{"ECB7}}
- \expandafter\def\csname simpleicon@datocmsicon\endcsname {\simpleiconsmap\symbol{"ECB8}}
- \expandafter\def\csname simpleicon@dattoicon\endcsname {\simpleiconsmap\symbol{"ECB9}}
- \expandafter\def\csname simpleicon@davinciresolveicon\endcsname {\simpleiconsmap\symbol{"ECBA}}
- \expandafter\def\csname simpleicon@dazhongdianpingicon\endcsname {\simpleiconsmap\symbol{"ECBB}}
- \expandafter\def\csname simpleicon@daznicon\endcsname {\simpleiconsmap\symbol{"ECBC}}
- \expandafter\def\csname simpleicon@dbeavericon\endcsname {\simpleiconsmap\symbol{"ECBD}}
- \expandafter\def\csname simpleicon@dblpicon\endcsname {\simpleiconsmap\symbol{"ECBE}}
- \expandafter\def\csname simpleicon@dbticon\endcsname {\simpleiconsmap\symbol{"ECBF}}
- \expandafter\def\csname simpleicon@dcentertainmenticon\endcsname {\simpleiconsmap\symbol{"ECC0}}
- \expandafter\def\csname simpleicon@debianicon\endcsname {\simpleiconsmap\symbol{"ECC1}}
- \expandafter\def\csname simpleicon@decapcmsicon\endcsname {\simpleiconsmap\symbol{"ECC2}}
- \expandafter\def\csname simpleicon@decentralandicon\endcsname {\simpleiconsmap\symbol{"ECC3}}
- \expandafter\def\csname simpleicon@dedgeicon\endcsname {\simpleiconsmap\symbol{"ECC4}}
- \expandafter\def\csname simpleicon@deepcoolicon\endcsname {\simpleiconsmap\symbol{"ECC5}}
- \expandafter\def\csname simpleicon@deepgramicon\endcsname {\simpleiconsmap\symbol{"ECC6}}
- \expandafter\def\csname simpleicon@deepinicon\endcsname {\simpleiconsmap\symbol{"ECC7}}
- \expandafter\def\csname simpleicon@deeplicon\endcsname {\simpleiconsmap\symbol{"ECC8}}
- \expandafter\def\csname simpleicon@deepnoteicon\endcsname {\simpleiconsmap\symbol{"ECC9}}
- \expandafter\def\csname simpleicon@deliciousicon\endcsname {\simpleiconsmap\symbol{"ECCA}}
- \expandafter\def\csname simpleicon@deliverooicon\endcsname {\simpleiconsmap\symbol{"ECCB}}
- \expandafter\def\csname simpleicon@dellicon\endcsname {\simpleiconsmap\symbol{"ECCC}}
- \expandafter\def\csname simpleicon@delonghiicon\endcsname {\simpleiconsmap\symbol{"ECCD}}
- \expandafter\def\csname simpleicon@delphiicon\endcsname {\simpleiconsmap\symbol{"ECCE}}
- \expandafter\def\csname simpleicon@deltaicon\endcsname {\simpleiconsmap\symbol{"ECCF}}
- \expandafter\def\csname simpleicon@delugeicon\endcsname {\simpleiconsmap\symbol{"ECD0}}
- \expandafter\def\csname simpleicon@denoicon\endcsname {\simpleiconsmap\symbol{"ECD1}}
- \expandafter\def\csname simpleicon@denonicon\endcsname {\simpleiconsmap\symbol{"ECD2}}
- \expandafter\def\csname simpleicon@dependaboticon\endcsname {\simpleiconsmap\symbol{"ECD3}}
- \expandafter\def\csname simpleicon@dependencycheckicon\endcsname {\simpleiconsmap\symbol{"ECD4}}
- \expandafter\def\csname simpleicon@depositphotosicon\endcsname {\simpleiconsmap\symbol{"ECD5}}
- \expandafter\def\csname simpleicon@derspiegelicon\endcsname {\simpleiconsmap\symbol{"ECD6}}
- \expandafter\def\csname simpleicon@deutschebahnicon\endcsname {\simpleiconsmap\symbol{"ECD7}}
- \expandafter\def\csname simpleicon@deutschebankicon\endcsname {\simpleiconsmap\symbol{"ECD8}}
- \expandafter\def\csname simpleicon@deutscheposticon\endcsname {\simpleiconsmap\symbol{"ECD9}}
- \expandafter\def\csname simpleicon@devdottoicon\endcsname {\simpleiconsmap\symbol{"ECDA}}
- \expandafter\def\csname simpleicon@devexpressicon\endcsname {\simpleiconsmap\symbol{"ECDB}}
- \expandafter\def\csname simpleicon@deviantarticon\endcsname {\simpleiconsmap\symbol{"ECDC}}
- \expandafter\def\csname simpleicon@devposticon\endcsname {\simpleiconsmap\symbol{"ECDD}}
- \expandafter\def\csname simpleicon@devranticon\endcsname {\simpleiconsmap\symbol{"ECDE}}
- \expandafter\def\csname simpleicon@dgraphicon\endcsname {\simpleiconsmap\symbol{"ECDF}}
- \expandafter\def\csname simpleicon@dhlicon\endcsname {\simpleiconsmap\symbol{"ECE0}}
- \expandafter\def\csname simpleicon@diagramsdotneticon\endcsname {\simpleiconsmap\symbol{"ECE1}}
- \expandafter\def\csname simpleicon@dialogflowicon\endcsname {\simpleiconsmap\symbol{"ECE2}}
- \expandafter\def\csname simpleicon@diasporaicon\endcsname {\simpleiconsmap\symbol{"ECE3}}
- \expandafter\def\csname simpleicon@dictionarydotcomicon\endcsname {\simpleiconsmap\symbol{"ECE4}}
- \expandafter\def\csname simpleicon@diggicon\endcsname {\simpleiconsmap\symbol{"ECE5}}
- \expandafter\def\csname simpleicon@digikeyelectronicsicon\endcsname {\simpleiconsmap\symbol{"ECE6}}
- \expandafter\def\csname simpleicon@digitaloceanicon\endcsname {\simpleiconsmap\symbol{"ECE7}}
- \expandafter\def\csname simpleicon@dinersclubicon\endcsname {\simpleiconsmap\symbol{"ECE8}}
- \expandafter\def\csname simpleicon@dioricon\endcsname {\simpleiconsmap\symbol{"ECE9}}
- \expandafter\def\csname simpleicon@directusicon\endcsname {\simpleiconsmap\symbol{"ECEA}}
- \expandafter\def\csname simpleicon@discogsicon\endcsname {\simpleiconsmap\symbol{"ECEB}}
- \expandafter\def\csname simpleicon@discordicon\endcsname {\simpleiconsmap\symbol{"ECEC}}
- \expandafter\def\csname simpleicon@discourseicon\endcsname {\simpleiconsmap\symbol{"ECED}}
- \expandafter\def\csname simpleicon@discovericon\endcsname {\simpleiconsmap\symbol{"ECEE}}
- \expandafter\def\csname simpleicon@disqusicon\endcsname {\simpleiconsmap\symbol{"ECEF}}
- \expandafter\def\csname simpleicon@disrooticon\endcsname {\simpleiconsmap\symbol{"ECF0}}
- \expandafter\def\csname simpleicon@distrokidicon\endcsname {\simpleiconsmap\symbol{"ECF1}}
- \expandafter\def\csname simpleicon@djangoicon\endcsname {\simpleiconsmap\symbol{"ECF2}}
- \expandafter\def\csname simpleicon@djiicon\endcsname {\simpleiconsmap\symbol{"ECF3}}
- \expandafter\def\csname simpleicon@dlibicon\endcsname {\simpleiconsmap\symbol{"ECF4}}
- \expandafter\def\csname simpleicon@dlnaicon\endcsname {\simpleiconsmap\symbol{"ECF5}}
- \expandafter\def\csname simpleicon@dmicon\endcsname {\simpleiconsmap\symbol{"ECF6}}
- \expandafter\def\csname simpleicon@dockericon\endcsname {\simpleiconsmap\symbol{"ECF7}}
- \expandafter\def\csname simpleicon@docsdotrsicon\endcsname {\simpleiconsmap\symbol{"ECF8}}
- \expandafter\def\csname simpleicon@docsifyicon\endcsname {\simpleiconsmap\symbol{"ECF9}}
- \expandafter\def\csname simpleicon@doctrineicon\endcsname {\simpleiconsmap\symbol{"ECFA}}
- \expandafter\def\csname simpleicon@docusaurusicon\endcsname {\simpleiconsmap\symbol{"ECFB}}
- \expandafter\def\csname simpleicon@dogecoinicon\endcsname {\simpleiconsmap\symbol{"ECFC}}
- \expandafter\def\csname simpleicon@doiicon\endcsname {\simpleiconsmap\symbol{"ECFD}}
- \expandafter\def\csname simpleicon@dolbyicon\endcsname {\simpleiconsmap\symbol{"ECFE}}
- \expandafter\def\csname simpleicon@doordashicon\endcsname {\simpleiconsmap\symbol{"ECFF}}
- \expandafter\def\csname simpleicon@dota2icon\endcsname {\simpleiconsmap\symbol{"ED00}}
- \expandafter\def\csname simpleicon@dotenvicon\endcsname {\simpleiconsmap\symbol{"ED01}}
- \expandafter\def\csname simpleicon@dotneticon\endcsname {\simpleiconsmap\symbol{"ED02}}
- \expandafter\def\csname simpleicon@doubanicon\endcsname {\simpleiconsmap\symbol{"ED03}}
- \expandafter\def\csname simpleicon@doubanreadicon\endcsname {\simpleiconsmap\symbol{"ED04}}
- \expandafter\def\csname simpleicon@dovecoticon\endcsname {\simpleiconsmap\symbol{"ED05}}
- \expandafter\def\csname simpleicon@dovetailicon\endcsname {\simpleiconsmap\symbol{"ED06}}
- \expandafter\def\csname simpleicon@doxygenicon\endcsname {\simpleiconsmap\symbol{"ED07}}
- \expandafter\def\csname simpleicon@dpdicon\endcsname {\simpleiconsmap\symbol{"ED08}}
- \expandafter\def\csname simpleicon@dragonframeicon\endcsname {\simpleiconsmap\symbol{"ED09}}
- \expandafter\def\csname simpleicon@draugiemdotlvicon\endcsname {\simpleiconsmap\symbol{"ED0A}}
- \expandafter\def\csname simpleicon@dreamstimeicon\endcsname {\simpleiconsmap\symbol{"ED0B}}
- \expandafter\def\csname simpleicon@dribbbleicon\endcsname {\simpleiconsmap\symbol{"ED0C}}
- \expandafter\def\csname simpleicon@drizzleicon\endcsname {\simpleiconsmap\symbol{"ED0D}}
- \expandafter\def\csname simpleicon@droneicon\endcsname {\simpleiconsmap\symbol{"ED0E}}
- \expandafter\def\csname simpleicon@droobleicon\endcsname {\simpleiconsmap\symbol{"ED0F}}
- \expandafter\def\csname simpleicon@dropboxicon\endcsname {\simpleiconsmap\symbol{"ED10}}
- \expandafter\def\csname simpleicon@drupalicon\endcsname {\simpleiconsmap\symbol{"ED11}}
- \expandafter\def\csname simpleicon@dsautomobilesicon\endcsname {\simpleiconsmap\symbol{"ED12}}
- \expandafter\def\csname simpleicon@dtsicon\endcsname {\simpleiconsmap\symbol{"ED13}}
- \expandafter\def\csname simpleicon@dtubeicon\endcsname {\simpleiconsmap\symbol{"ED14}}
- \expandafter\def\csname simpleicon@ducatiicon\endcsname {\simpleiconsmap\symbol{"ED15}}
- \expandafter\def\csname simpleicon@duckdbicon\endcsname {\simpleiconsmap\symbol{"ED16}}
- \expandafter\def\csname simpleicon@duckduckgoicon\endcsname {\simpleiconsmap\symbol{"ED17}}
- \expandafter\def\csname simpleicon@dungeonsanddragonsicon\endcsname {\simpleiconsmap\symbol{"ED18}}
- \expandafter\def\csname simpleicon@dunkedicon\endcsname {\simpleiconsmap\symbol{"ED19}}
- \expandafter\def\csname simpleicon@dunzoicon\endcsname {\simpleiconsmap\symbol{"ED1A}}
- \expandafter\def\csname simpleicon@duolingoicon\endcsname {\simpleiconsmap\symbol{"ED1B}}
- \expandafter\def\csname simpleicon@duplicatiicon\endcsname {\simpleiconsmap\symbol{"ED1C}}
- \expandafter\def\csname simpleicon@dvcicon\endcsname {\simpleiconsmap\symbol{"ED1D}}
- \expandafter\def\csname simpleicon@dwavesystemsicon\endcsname {\simpleiconsmap\symbol{"ED1E}}
- \expandafter\def\csname simpleicon@dwmicon\endcsname {\simpleiconsmap\symbol{"ED1F}}
- \expandafter\def\csname simpleicon@dynatraceicon\endcsname {\simpleiconsmap\symbol{"ED20}}
- \expandafter\def\csname simpleicon@eicon\endcsname {\simpleiconsmap\symbol{"ED21}}
- \expandafter\def\csname simpleicon@e3icon\endcsname {\simpleiconsmap\symbol{"ED22}}
- \expandafter\def\csname simpleicon@eaicon\endcsname {\simpleiconsmap\symbol{"ED23}}
- \expandafter\def\csname simpleicon@eagleicon\endcsname {\simpleiconsmap\symbol{"ED24}}
- \expandafter\def\csname simpleicon@easyedaicon\endcsname {\simpleiconsmap\symbol{"ED25}}
- \expandafter\def\csname simpleicon@easyjeticon\endcsname {\simpleiconsmap\symbol{"ED26}}
- \expandafter\def\csname simpleicon@ebayicon\endcsname {\simpleiconsmap\symbol{"ED27}}
- \expandafter\def\csname simpleicon@eboxicon\endcsname {\simpleiconsmap\symbol{"ED28}}
- \expandafter\def\csname simpleicon@eclipseadoptiumicon\endcsname {\simpleiconsmap\symbol{"ED29}}
- \expandafter\def\csname simpleicon@eclipsecheicon\endcsname {\simpleiconsmap\symbol{"ED2A}}
- \expandafter\def\csname simpleicon@eclipseideicon\endcsname {\simpleiconsmap\symbol{"ED2B}}
- \expandafter\def\csname simpleicon@eclipsejettyicon\endcsname {\simpleiconsmap\symbol{"ED2C}}
- \expandafter\def\csname simpleicon@eclipsemosquittoicon\endcsname {\simpleiconsmap\symbol{"ED2D}}
- \expandafter\def\csname simpleicon@eclipsevertdotxicon\endcsname {\simpleiconsmap\symbol{"ED2E}}
- \expandafter\def\csname simpleicon@ecovacsicon\endcsname {\simpleiconsmap\symbol{"ED2F}}
- \expandafter\def\csname simpleicon@edekaicon\endcsname {\simpleiconsmap\symbol{"ED30}}
- \expandafter\def\csname simpleicon@edgeimpulseicon\endcsname {\simpleiconsmap\symbol{"ED31}}
- \expandafter\def\csname simpleicon@editorconfigicon\endcsname {\simpleiconsmap\symbol{"ED32}}
- \expandafter\def\csname simpleicon@edotleclercicon\endcsname {\simpleiconsmap\symbol{"ED33}}
- \expandafter\def\csname simpleicon@educativeicon\endcsname {\simpleiconsmap\symbol{"ED34}}
- \expandafter\def\csname simpleicon@edxicon\endcsname {\simpleiconsmap\symbol{"ED35}}
- \expandafter\def\csname simpleicon@eggheadicon\endcsname {\simpleiconsmap\symbol{"ED36}}
- \expandafter\def\csname simpleicon@egnyteicon\endcsname {\simpleiconsmap\symbol{"ED37}}
- \expandafter\def\csname simpleicon@eighticon\endcsname {\simpleiconsmap\symbol{"ED38}}
- \expandafter\def\csname simpleicon@eightsleepicon\endcsname {\simpleiconsmap\symbol{"ED39}}
- \expandafter\def\csname simpleicon@ejsicon\endcsname {\simpleiconsmap\symbol{"ED3A}}
- \expandafter\def\csname simpleicon@elasticicon\endcsname {\simpleiconsmap\symbol{"ED3B}}
- \expandafter\def\csname simpleicon@elasticcloudicon\endcsname {\simpleiconsmap\symbol{"ED3C}}
- \expandafter\def\csname simpleicon@elasticsearchicon\endcsname {\simpleiconsmap\symbol{"ED3D}}
- \expandafter\def\csname simpleicon@elasticstackicon\endcsname {\simpleiconsmap\symbol{"ED3E}}
- \expandafter\def\csname simpleicon@elavonicon\endcsname {\simpleiconsmap\symbol{"ED3F}}
- \expandafter\def\csname simpleicon@electronicon\endcsname {\simpleiconsmap\symbol{"ED40}}
- \expandafter\def\csname simpleicon@electronbuildericon\endcsname {\simpleiconsmap\symbol{"ED41}}
- \expandafter\def\csname simpleicon@electronfiddleicon\endcsname {\simpleiconsmap\symbol{"ED42}}
- \expandafter\def\csname simpleicon@elegooicon\endcsname {\simpleiconsmap\symbol{"ED43}}
- \expandafter\def\csname simpleicon@elementicon\endcsname {\simpleiconsmap\symbol{"ED44}}
- \expandafter\def\csname simpleicon@elementaryicon\endcsname {\simpleiconsmap\symbol{"ED45}}
- \expandafter\def\csname simpleicon@elementoricon\endcsname {\simpleiconsmap\symbol{"ED46}}
- \expandafter\def\csname simpleicon@eleventyicon\endcsname {\simpleiconsmap\symbol{"ED47}}
- \expandafter\def\csname simpleicon@elgatoicon\endcsname {\simpleiconsmap\symbol{"ED48}}
- \expandafter\def\csname simpleicon@elixiricon\endcsname {\simpleiconsmap\symbol{"ED49}}
- \expandafter\def\csname simpleicon@eljuevesicon\endcsname {\simpleiconsmap\symbol{"ED4A}}
- \expandafter\def\csname simpleicon@elloicon\endcsname {\simpleiconsmap\symbol{"ED4B}}
- \expandafter\def\csname simpleicon@elmicon\endcsname {\simpleiconsmap\symbol{"ED4C}}
- \expandafter\def\csname simpleicon@elseviericon\endcsname {\simpleiconsmap\symbol{"ED4D}}
- \expandafter\def\csname simpleicon@embarcaderoicon\endcsname {\simpleiconsmap\symbol{"ED4E}}
- \expandafter\def\csname simpleicon@embarkicon\endcsname {\simpleiconsmap\symbol{"ED4F}}
- \expandafter\def\csname simpleicon@emberdotjsicon\endcsname {\simpleiconsmap\symbol{"ED50}}
- \expandafter\def\csname simpleicon@embyicon\endcsname {\simpleiconsmap\symbol{"ED51}}
- \expandafter\def\csname simpleicon@emiratesicon\endcsname {\simpleiconsmap\symbol{"ED52}}
- \expandafter\def\csname simpleicon@emlakjeticon\endcsname {\simpleiconsmap\symbol{"ED53}}
- \expandafter\def\csname simpleicon@empirekredicon\endcsname {\simpleiconsmap\symbol{"ED54}}
- \expandafter\def\csname simpleicon@endeavourosicon\endcsname {\simpleiconsmap\symbol{"ED55}}
- \expandafter\def\csname simpleicon@engadgeticon\endcsname {\simpleiconsmap\symbol{"ED56}}
- \expandafter\def\csname simpleicon@enpassicon\endcsname {\simpleiconsmap\symbol{"ED57}}
- \expandafter\def\csname simpleicon@enterprisedbicon\endcsname {\simpleiconsmap\symbol{"ED58}}
- \expandafter\def\csname simpleicon@envatoicon\endcsname {\simpleiconsmap\symbol{"ED59}}
- \expandafter\def\csname simpleicon@envoyproxyicon\endcsname {\simpleiconsmap\symbol{"ED5A}}
- \expandafter\def\csname simpleicon@epelicon\endcsname {\simpleiconsmap\symbol{"ED5B}}
- \expandafter\def\csname simpleicon@epicgamesicon\endcsname {\simpleiconsmap\symbol{"ED5C}}
- \expandafter\def\csname simpleicon@epsonicon\endcsname {\simpleiconsmap\symbol{"ED5D}}
- \expandafter\def\csname simpleicon@equinixmetalicon\endcsname {\simpleiconsmap\symbol{"ED5E}}
- \expandafter\def\csname simpleicon@erasericon\endcsname {\simpleiconsmap\symbol{"ED5F}}
- \expandafter\def\csname simpleicon@ericssonicon\endcsname {\simpleiconsmap\symbol{"ED60}}
- \expandafter\def\csname simpleicon@erlangicon\endcsname {\simpleiconsmap\symbol{"ED61}}
- \expandafter\def\csname simpleicon@erpnexticon\endcsname {\simpleiconsmap\symbol{"ED62}}
- \expandafter\def\csname simpleicon@esbuildicon\endcsname {\simpleiconsmap\symbol{"ED63}}
- \expandafter\def\csname simpleicon@eseaicon\endcsname {\simpleiconsmap\symbol{"ED64}}
- \expandafter\def\csname simpleicon@eslgamingicon\endcsname {\simpleiconsmap\symbol{"ED65}}
- \expandafter\def\csname simpleicon@eslinticon\endcsname {\simpleiconsmap\symbol{"ED66}}
- \expandafter\def\csname simpleicon@esotericsoftwareicon\endcsname {\simpleiconsmap\symbol{"ED67}}
- \expandafter\def\csname simpleicon@esphomeicon\endcsname {\simpleiconsmap\symbol{"ED68}}
- \expandafter\def\csname simpleicon@espressificon\endcsname {\simpleiconsmap\symbol{"ED69}}
- \expandafter\def\csname simpleicon@esriicon\endcsname {\simpleiconsmap\symbol{"ED6A}}
- \expandafter\def\csname simpleicon@etcdicon\endcsname {\simpleiconsmap\symbol{"ED6B}}
- \expandafter\def\csname simpleicon@ethereumicon\endcsname {\simpleiconsmap\symbol{"ED6C}}
- \expandafter\def\csname simpleicon@ethersicon\endcsname {\simpleiconsmap\symbol{"ED6D}}
- \expandafter\def\csname simpleicon@ethiopianairlinesicon\endcsname {\simpleiconsmap\symbol{"ED6E}}
- \expandafter\def\csname simpleicon@etihadairwaysicon\endcsname {\simpleiconsmap\symbol{"ED6F}}
- \expandafter\def\csname simpleicon@etsyicon\endcsname {\simpleiconsmap\symbol{"ED70}}
- \expandafter\def\csname simpleicon@eventbriteicon\endcsname {\simpleiconsmap\symbol{"ED71}}
- \expandafter\def\csname simpleicon@eventstoreicon\endcsname {\simpleiconsmap\symbol{"ED72}}
- \expandafter\def\csname simpleicon@evernoteicon\endcsname {\simpleiconsmap\symbol{"ED73}}
- \expandafter\def\csname simpleicon@excalidrawicon\endcsname {\simpleiconsmap\symbol{"ED74}}
- \expandafter\def\csname simpleicon@exercismicon\endcsname {\simpleiconsmap\symbol{"ED75}}
- \expandafter\def\csname simpleicon@exordoicon\endcsname {\simpleiconsmap\symbol{"ED76}}
- \expandafter\def\csname simpleicon@exoscaleicon\endcsname {\simpleiconsmap\symbol{"ED77}}
- \expandafter\def\csname simpleicon@expediaicon\endcsname {\simpleiconsmap\symbol{"ED78}}
- \expandafter\def\csname simpleicon@expensifyicon\endcsname {\simpleiconsmap\symbol{"ED79}}
- \expandafter\def\csname simpleicon@expertsexchangeicon\endcsname {\simpleiconsmap\symbol{"ED7A}}
- \expandafter\def\csname simpleicon@expoicon\endcsname {\simpleiconsmap\symbol{"ED7B}}
- \expandafter\def\csname simpleicon@expressicon\endcsname {\simpleiconsmap\symbol{"ED7C}}
- \expandafter\def\csname simpleicon@expressvpnicon\endcsname {\simpleiconsmap\symbol{"ED7D}}
- \expandafter\def\csname simpleicon@eyeemicon\endcsname {\simpleiconsmap\symbol{"ED7E}}
- \expandafter\def\csname simpleicon@f1icon\endcsname {\simpleiconsmap\symbol{"ED7F}}
- \expandafter\def\csname simpleicon@f5icon\endcsname {\simpleiconsmap\symbol{"ED80}}
- \expandafter\def\csname simpleicon@facebookicon\endcsname {\simpleiconsmap\symbol{"ED81}}
- \expandafter\def\csname simpleicon@facebookgamingicon\endcsname {\simpleiconsmap\symbol{"ED82}}
- \expandafter\def\csname simpleicon@facebookliveicon\endcsname {\simpleiconsmap\symbol{"ED83}}
- \expandafter\def\csname simpleicon@faceiticon\endcsname {\simpleiconsmap\symbol{"ED84}}
- \expandafter\def\csname simpleicon@facepunchicon\endcsname {\simpleiconsmap\symbol{"ED85}}
- \expandafter\def\csname simpleicon@fairphoneicon\endcsname {\simpleiconsmap\symbol{"ED86}}
- \expandafter\def\csname simpleicon@falcoicon\endcsname {\simpleiconsmap\symbol{"ED87}}
- \expandafter\def\csname simpleicon@falconicon\endcsname {\simpleiconsmap\symbol{"ED88}}
- \expandafter\def\csname simpleicon@fampayicon\endcsname {\simpleiconsmap\symbol{"ED89}}
- \expandafter\def\csname simpleicon@fandangoicon\endcsname {\simpleiconsmap\symbol{"ED8A}}
- \expandafter\def\csname simpleicon@fandomicon\endcsname {\simpleiconsmap\symbol{"ED8B}}
- \expandafter\def\csname simpleicon@fanfouicon\endcsname {\simpleiconsmap\symbol{"ED8C}}
- \expandafter\def\csname simpleicon@fantomicon\endcsname {\simpleiconsmap\symbol{"ED8D}}
- \expandafter\def\csname simpleicon@farcastericon\endcsname {\simpleiconsmap\symbol{"ED8E}}
- \expandafter\def\csname simpleicon@fareharboricon\endcsname {\simpleiconsmap\symbol{"ED8F}}
- \expandafter\def\csname simpleicon@farfetchicon\endcsname {\simpleiconsmap\symbol{"ED90}}
- \expandafter\def\csname simpleicon@fastapiicon\endcsname {\simpleiconsmap\symbol{"ED91}}
- \expandafter\def\csname simpleicon@fastifyicon\endcsname {\simpleiconsmap\symbol{"ED92}}
- \expandafter\def\csname simpleicon@fastlaneicon\endcsname {\simpleiconsmap\symbol{"ED93}}
- \expandafter\def\csname simpleicon@fastlyicon\endcsname {\simpleiconsmap\symbol{"ED94}}
- \expandafter\def\csname simpleicon@fathomicon\endcsname {\simpleiconsmap\symbol{"ED95}}
- \expandafter\def\csname simpleicon@faunaicon\endcsname {\simpleiconsmap\symbol{"ED96}}
- \expandafter\def\csname simpleicon@favroicon\endcsname {\simpleiconsmap\symbol{"ED97}}
- \expandafter\def\csname simpleicon@fdroidicon\endcsname {\simpleiconsmap\symbol{"ED98}}
- \expandafter\def\csname simpleicon@feathubicon\endcsname {\simpleiconsmap\symbol{"ED99}}
- \expandafter\def\csname simpleicon@fedexicon\endcsname {\simpleiconsmap\symbol{"ED9A}}
- \expandafter\def\csname simpleicon@fedoraicon\endcsname {\simpleiconsmap\symbol{"ED9B}}
- \expandafter\def\csname simpleicon@feedlyicon\endcsname {\simpleiconsmap\symbol{"ED9C}}
- \expandafter\def\csname simpleicon@ferrariicon\endcsname {\simpleiconsmap\symbol{"ED9D}}
- \expandafter\def\csname simpleicon@ferrarinvicon\endcsname {\simpleiconsmap\symbol{"ED9E}}
- \expandafter\def\csname simpleicon@ferretdbicon\endcsname {\simpleiconsmap\symbol{"ED9F}}
- \expandafter\def\csname simpleicon@ffmpegicon\endcsname {\simpleiconsmap\symbol{"EDA0}}
- \expandafter\def\csname simpleicon@fiicon\endcsname {\simpleiconsmap\symbol{"EDA1}}
- \expandafter\def\csname simpleicon@fiaticon\endcsname {\simpleiconsmap\symbol{"EDA2}}
- \expandafter\def\csname simpleicon@fidoallianceicon\endcsname {\simpleiconsmap\symbol{"EDA3}}
- \expandafter\def\csname simpleicon@fifaicon\endcsname {\simpleiconsmap\symbol{"EDA4}}
- \expandafter\def\csname simpleicon@figicon\endcsname {\simpleiconsmap\symbol{"EDA5}}
- \expandafter\def\csname simpleicon@figmaicon\endcsname {\simpleiconsmap\symbol{"EDA6}}
- \expandafter\def\csname simpleicon@figshareicon\endcsname {\simpleiconsmap\symbol{"EDA7}}
- \expandafter\def\csname simpleicon@filaicon\endcsname {\simpleiconsmap\symbol{"EDA8}}
- \expandafter\def\csname simpleicon@filedotioicon\endcsname {\simpleiconsmap\symbol{"EDA9}}
- \expandafter\def\csname simpleicon@filesicon\endcsname {\simpleiconsmap\symbol{"EDAA}}
- \expandafter\def\csname simpleicon@filezillaicon\endcsname {\simpleiconsmap\symbol{"EDAB}}
- \expandafter\def\csname simpleicon@finecoicon\endcsname {\simpleiconsmap\symbol{"EDAC}}
- \expandafter\def\csname simpleicon@fingicon\endcsname {\simpleiconsmap\symbol{"EDAD}}
- \expandafter\def\csname simpleicon@firebaseicon\endcsname {\simpleiconsmap\symbol{"EDAE}}
- \expandafter\def\csname simpleicon@firefishicon\endcsname {\simpleiconsmap\symbol{"EDAF}}
- \expandafter\def\csname simpleicon@fireflyiiiicon\endcsname {\simpleiconsmap\symbol{"EDB0}}
- \expandafter\def\csname simpleicon@firefoxicon\endcsname {\simpleiconsmap\symbol{"EDB1}}
- \expandafter\def\csname simpleicon@firefoxbrowsericon\endcsname {\simpleiconsmap\symbol{"EDB2}}
- \expandafter\def\csname simpleicon@fireshipicon\endcsname {\simpleiconsmap\symbol{"EDB3}}
- \expandafter\def\csname simpleicon@firewallaicon\endcsname {\simpleiconsmap\symbol{"EDB4}}
- \expandafter\def\csname simpleicon@firsticon\endcsname {\simpleiconsmap\symbol{"EDB5}}
- \expandafter\def\csname simpleicon@fishshellicon\endcsname {\simpleiconsmap\symbol{"EDB6}}
- \expandafter\def\csname simpleicon@fitbiticon\endcsname {\simpleiconsmap\symbol{"EDB7}}
- \expandafter\def\csname simpleicon@fivemicon\endcsname {\simpleiconsmap\symbol{"EDB8}}
- \expandafter\def\csname simpleicon@fiverricon\endcsname {\simpleiconsmap\symbol{"EDB9}}
- \expandafter\def\csname simpleicon@fizzicon\endcsname {\simpleiconsmap\symbol{"EDBA}}
- \expandafter\def\csname simpleicon@flashforgeicon\endcsname {\simpleiconsmap\symbol{"EDBB}}
- \expandafter\def\csname simpleicon@flaskicon\endcsname {\simpleiconsmap\symbol{"EDBC}}
- \expandafter\def\csname simpleicon@flaticon\endcsname {\simpleiconsmap\symbol{"EDBD}}
- \expandafter\def\csname simpleicon@flathubicon\endcsname {\simpleiconsmap\symbol{"EDBE}}
- \expandafter\def\csname simpleicon@flatpakicon\endcsname {\simpleiconsmap\symbol{"EDBF}}
- \expandafter\def\csname simpleicon@flickricon\endcsname {\simpleiconsmap\symbol{"EDC0}}
- \expandafter\def\csname simpleicon@flightawareicon\endcsname {\simpleiconsmap\symbol{"EDC1}}
- \expandafter\def\csname simpleicon@flipboardicon\endcsname {\simpleiconsmap\symbol{"EDC2}}
- \expandafter\def\csname simpleicon@flipkarticon\endcsname {\simpleiconsmap\symbol{"EDC3}}
- \expandafter\def\csname simpleicon@floatplaneicon\endcsname {\simpleiconsmap\symbol{"EDC4}}
- \expandafter\def\csname simpleicon@floodicon\endcsname {\simpleiconsmap\symbol{"EDC5}}
- \expandafter\def\csname simpleicon@fluentbiticon\endcsname {\simpleiconsmap\symbol{"EDC6}}
- \expandafter\def\csname simpleicon@fluentdicon\endcsname {\simpleiconsmap\symbol{"EDC7}}
- \expandafter\def\csname simpleicon@flukeicon\endcsname {\simpleiconsmap\symbol{"EDC8}}
- \expandafter\def\csname simpleicon@fluttericon\endcsname {\simpleiconsmap\symbol{"EDC9}}
- \expandafter\def\csname simpleicon@fluxicon\endcsname {\simpleiconsmap\symbol{"EDCA}}
- \expandafter\def\csname simpleicon@fluxusicon\endcsname {\simpleiconsmap\symbol{"EDCB}}
- \expandafter\def\csname simpleicon@flydotioicon\endcsname {\simpleiconsmap\symbol{"EDCC}}
- \expandafter\def\csname simpleicon@flywayicon\endcsname {\simpleiconsmap\symbol{"EDCD}}
- \expandafter\def\csname simpleicon@fmodicon\endcsname {\simpleiconsmap\symbol{"EDCE}}
- \expandafter\def\csname simpleicon@fnacicon\endcsname {\simpleiconsmap\symbol{"EDCF}}
- \expandafter\def\csname simpleicon@foliumicon\endcsname {\simpleiconsmap\symbol{"EDD0}}
- \expandafter\def\csname simpleicon@fonomaicon\endcsname {\simpleiconsmap\symbol{"EDD1}}
- \expandafter\def\csname simpleicon@fontawesomeicon\endcsname {\simpleiconsmap\symbol{"EDD2}}
- \expandafter\def\csname simpleicon@fontbaseicon\endcsname {\simpleiconsmap\symbol{"EDD3}}
- \expandafter\def\csname simpleicon@fontforgeicon\endcsname {\simpleiconsmap\symbol{"EDD4}}
- \expandafter\def\csname simpleicon@foobar2000icon\endcsname {\simpleiconsmap\symbol{"EDD5}}
- \expandafter\def\csname simpleicon@foodpandaicon\endcsname {\simpleiconsmap\symbol{"EDD6}}
- \expandafter\def\csname simpleicon@fordicon\endcsname {\simpleiconsmap\symbol{"EDD7}}
- \expandafter\def\csname simpleicon@forgejoicon\endcsname {\simpleiconsmap\symbol{"EDD8}}
- \expandafter\def\csname simpleicon@formikicon\endcsname {\simpleiconsmap\symbol{"EDD9}}
- \expandafter\def\csname simpleicon@formspreeicon\endcsname {\simpleiconsmap\symbol{"EDDA}}
- \expandafter\def\csname simpleicon@formstackicon\endcsname {\simpleiconsmap\symbol{"EDDB}}
- \expandafter\def\csname simpleicon@fortineticon\endcsname {\simpleiconsmap\symbol{"EDDC}}
- \expandafter\def\csname simpleicon@fortranicon\endcsname {\simpleiconsmap\symbol{"EDDD}}
- \expandafter\def\csname simpleicon@fossaicon\endcsname {\simpleiconsmap\symbol{"EDDE}}
- \expandafter\def\csname simpleicon@fossilscmicon\endcsname {\simpleiconsmap\symbol{"EDDF}}
- \expandafter\def\csname simpleicon@foundryvirtualtabletopicon\endcsname {\simpleiconsmap\symbol{"EDE0}}
- \expandafter\def\csname simpleicon@foursquareicon\endcsname {\simpleiconsmap\symbol{"EDE1}}
- \expandafter\def\csname simpleicon@foursquarecityguideicon\endcsname {\simpleiconsmap\symbol{"EDE2}}
- \expandafter\def\csname simpleicon@foxicon\endcsname {\simpleiconsmap\symbol{"EDE3}}
- \expandafter\def\csname simpleicon@foxtelicon\endcsname {\simpleiconsmap\symbol{"EDE4}}
- \expandafter\def\csname simpleicon@fozzyicon\endcsname {\simpleiconsmap\symbol{"EDE5}}
- \expandafter\def\csname simpleicon@framericon\endcsname {\simpleiconsmap\symbol{"EDE6}}
- \expandafter\def\csname simpleicon@frameworkicon\endcsname {\simpleiconsmap\symbol{"EDE7}}
- \expandafter\def\csname simpleicon@framework7icon\endcsname {\simpleiconsmap\symbol{"EDE8}}
- \expandafter\def\csname simpleicon@franprixicon\endcsname {\simpleiconsmap\symbol{"EDE9}}
- \expandafter\def\csname simpleicon@frappeicon\endcsname {\simpleiconsmap\symbol{"EDEA}}
- \expandafter\def\csname simpleicon@fraunhofergesellschafticon\endcsname {\simpleiconsmap\symbol{"EDEB}}
- \expandafter\def\csname simpleicon@freebsdicon\endcsname {\simpleiconsmap\symbol{"EDEC}}
- \expandafter\def\csname simpleicon@freecadicon\endcsname {\simpleiconsmap\symbol{"EDED}}
- \expandafter\def\csname simpleicon@freecodecampicon\endcsname {\simpleiconsmap\symbol{"EDEE}}
- \expandafter\def\csname simpleicon@freedesktopdotorgicon\endcsname {\simpleiconsmap\symbol{"EDEF}}
- \expandafter\def\csname simpleicon@freelancericon\endcsname {\simpleiconsmap\symbol{"EDF0}}
- \expandafter\def\csname simpleicon@freelancermapicon\endcsname {\simpleiconsmap\symbol{"EDF1}}
- \expandafter\def\csname simpleicon@freenasicon\endcsname {\simpleiconsmap\symbol{"EDF2}}
- \expandafter\def\csname simpleicon@freepikicon\endcsname {\simpleiconsmap\symbol{"EDF3}}
- \expandafter\def\csname simpleicon@frontendmentoricon\endcsname {\simpleiconsmap\symbol{"EDF4}}
- \expandafter\def\csname simpleicon@frontifyicon\endcsname {\simpleiconsmap\symbol{"EDF5}}
- \expandafter\def\csname simpleicon@fsecureicon\endcsname {\simpleiconsmap\symbol{"EDF6}}
- \expandafter\def\csname simpleicon@fsharpicon\endcsname {\simpleiconsmap\symbol{"EDF7}}
- \expandafter\def\csname simpleicon@fuboicon\endcsname {\simpleiconsmap\symbol{"EDF8}}
- \expandafter\def\csname simpleicon@fuelericon\endcsname {\simpleiconsmap\symbol{"EDF9}}
- \expandafter\def\csname simpleicon@fugacloudicon\endcsname {\simpleiconsmap\symbol{"EDFA}}
- \expandafter\def\csname simpleicon@fujifilmicon\endcsname {\simpleiconsmap\symbol{"EDFB}}
- \expandafter\def\csname simpleicon@fujitsuicon\endcsname {\simpleiconsmap\symbol{"EDFC}}
- \expandafter\def\csname simpleicon@funimationicon\endcsname {\simpleiconsmap\symbol{"EDFD}}
- \expandafter\def\csname simpleicon@furaffinityicon\endcsname {\simpleiconsmap\symbol{"EDFE}}
- \expandafter\def\csname simpleicon@furrynetworkicon\endcsname {\simpleiconsmap\symbol{"EDFF}}
- \expandafter\def\csname simpleicon@fusionauthicon\endcsname {\simpleiconsmap\symbol{"EE00}}
- \expandafter\def\csname simpleicon@futurelearnicon\endcsname {\simpleiconsmap\symbol{"EE01}}
- \expandafter\def\csname simpleicon@g2icon\endcsname {\simpleiconsmap\symbol{"EE02}}
- \expandafter\def\csname simpleicon@g2aicon\endcsname {\simpleiconsmap\symbol{"EE03}}
- \expandafter\def\csname simpleicon@g2gicon\endcsname {\simpleiconsmap\symbol{"EE04}}
- \expandafter\def\csname simpleicon@galaxusicon\endcsname {\simpleiconsmap\symbol{"EE05}}
- \expandafter\def\csname simpleicon@gameandwatchicon\endcsname {\simpleiconsmap\symbol{"EE06}}
- \expandafter\def\csname simpleicon@gamebananaicon\endcsname {\simpleiconsmap\symbol{"EE07}}
- \expandafter\def\csname simpleicon@gamedevelopericon\endcsname {\simpleiconsmap\symbol{"EE08}}
- \expandafter\def\csname simpleicon@gamejolticon\endcsname {\simpleiconsmap\symbol{"EE09}}
- \expandafter\def\csname simpleicon@gamelofticon\endcsname {\simpleiconsmap\symbol{"EE0A}}
- \expandafter\def\csname simpleicon@gamemakericon\endcsname {\simpleiconsmap\symbol{"EE0B}}
- \expandafter\def\csname simpleicon@garminicon\endcsname {\simpleiconsmap\symbol{"EE0C}}
- \expandafter\def\csname simpleicon@gatlingicon\endcsname {\simpleiconsmap\symbol{"EE0D}}
- \expandafter\def\csname simpleicon@gatsbyicon\endcsname {\simpleiconsmap\symbol{"EE0E}}
- \expandafter\def\csname simpleicon@gcoreicon\endcsname {\simpleiconsmap\symbol{"EE0F}}
- \expandafter\def\csname simpleicon@gdalicon\endcsname {\simpleiconsmap\symbol{"EE10}}
- \expandafter\def\csname simpleicon@geanticon\endcsname {\simpleiconsmap\symbol{"EE11}}
- \expandafter\def\csname simpleicon@geeksforgeeksicon\endcsname {\simpleiconsmap\symbol{"EE12}}
- \expandafter\def\csname simpleicon@generalelectricicon\endcsname {\simpleiconsmap\symbol{"EE13}}
- \expandafter\def\csname simpleicon@generalmotorsicon\endcsname {\simpleiconsmap\symbol{"EE14}}
- \expandafter\def\csname simpleicon@geniusicon\endcsname {\simpleiconsmap\symbol{"EE15}}
- \expandafter\def\csname simpleicon@gentooicon\endcsname {\simpleiconsmap\symbol{"EE16}}
- \expandafter\def\csname simpleicon@geocachingicon\endcsname {\simpleiconsmap\symbol{"EE17}}
- \expandafter\def\csname simpleicon@geodeicon\endcsname {\simpleiconsmap\symbol{"EE18}}
- \expandafter\def\csname simpleicon@geopandasicon\endcsname {\simpleiconsmap\symbol{"EE19}}
- \expandafter\def\csname simpleicon@gerriticon\endcsname {\simpleiconsmap\symbol{"EE1A}}
- \expandafter\def\csname simpleicon@getxicon\endcsname {\simpleiconsmap\symbol{"EE1B}}
- \expandafter\def\csname simpleicon@ghosticon\endcsname {\simpleiconsmap\symbol{"EE1C}}
- \expandafter\def\csname simpleicon@ghosteryicon\endcsname {\simpleiconsmap\symbol{"EE1D}}
- \expandafter\def\csname simpleicon@gimpicon\endcsname {\simpleiconsmap\symbol{"EE1E}}
- \expandafter\def\csname simpleicon@ginicon\endcsname {\simpleiconsmap\symbol{"EE1F}}
- \expandafter\def\csname simpleicon@giphyicon\endcsname {\simpleiconsmap\symbol{"EE20}}
- \expandafter\def\csname simpleicon@giticon\endcsname {\simpleiconsmap\symbol{"EE21}}
- \expandafter\def\csname simpleicon@gitbookicon\endcsname {\simpleiconsmap\symbol{"EE22}}
- \expandafter\def\csname simpleicon@gitconnectedicon\endcsname {\simpleiconsmap\symbol{"EE23}}
- \expandafter\def\csname simpleicon@giteaicon\endcsname {\simpleiconsmap\symbol{"EE24}}
- \expandafter\def\csname simpleicon@giteeicon\endcsname {\simpleiconsmap\symbol{"EE25}}
- \expandafter\def\csname simpleicon@gitextensionsicon\endcsname {\simpleiconsmap\symbol{"EE26}}
- \expandafter\def\csname simpleicon@gitforwindowsicon\endcsname {\simpleiconsmap\symbol{"EE27}}
- \expandafter\def\csname simpleicon@githubicon\endcsname {\simpleiconsmap\symbol{"EE28}}
- \expandafter\def\csname simpleicon@githubactionsicon\endcsname {\simpleiconsmap\symbol{"EE29}}
- \expandafter\def\csname simpleicon@githubcopiloticon\endcsname {\simpleiconsmap\symbol{"EE2A}}
- \expandafter\def\csname simpleicon@githubpagesicon\endcsname {\simpleiconsmap\symbol{"EE2B}}
- \expandafter\def\csname simpleicon@githubsponsorsicon\endcsname {\simpleiconsmap\symbol{"EE2C}}
- \expandafter\def\csname simpleicon@gitignoredotioicon\endcsname {\simpleiconsmap\symbol{"EE2D}}
- \expandafter\def\csname simpleicon@gitkrakenicon\endcsname {\simpleiconsmap\symbol{"EE2E}}
- \expandafter\def\csname simpleicon@gitlabicon\endcsname {\simpleiconsmap\symbol{"EE2F}}
- \expandafter\def\csname simpleicon@gitlfsicon\endcsname {\simpleiconsmap\symbol{"EE30}}
- \expandafter\def\csname simpleicon@gitpodicon\endcsname {\simpleiconsmap\symbol{"EE31}}
- \expandafter\def\csname simpleicon@gittericon\endcsname {\simpleiconsmap\symbol{"EE32}}
- \expandafter\def\csname simpleicon@glassdooricon\endcsname {\simpleiconsmap\symbol{"EE33}}
- \expandafter\def\csname simpleicon@glideicon\endcsname {\simpleiconsmap\symbol{"EE34}}
- \expandafter\def\csname simpleicon@glitchicon\endcsname {\simpleiconsmap\symbol{"EE35}}
- \expandafter\def\csname simpleicon@globusicon\endcsname {\simpleiconsmap\symbol{"EE36}}
- \expandafter\def\csname simpleicon@glovoicon\endcsname {\simpleiconsmap\symbol{"EE37}}
- \expandafter\def\csname simpleicon@gltficon\endcsname {\simpleiconsmap\symbol{"EE38}}
- \expandafter\def\csname simpleicon@gmailicon\endcsname {\simpleiconsmap\symbol{"EE39}}
- \expandafter\def\csname simpleicon@gnomeicon\endcsname {\simpleiconsmap\symbol{"EE3A}}
- \expandafter\def\csname simpleicon@gnometerminalicon\endcsname {\simpleiconsmap\symbol{"EE3B}}
- \expandafter\def\csname simpleicon@gnuicon\endcsname {\simpleiconsmap\symbol{"EE3C}}
- \expandafter\def\csname simpleicon@gnubashicon\endcsname {\simpleiconsmap\symbol{"EE3D}}
- \expandafter\def\csname simpleicon@gnuemacsicon\endcsname {\simpleiconsmap\symbol{"EE3E}}
- \expandafter\def\csname simpleicon@gnuicecaticon\endcsname {\simpleiconsmap\symbol{"EE3F}}
- \expandafter\def\csname simpleicon@gnuprivacyguardicon\endcsname {\simpleiconsmap\symbol{"EE40}}
- \expandafter\def\csname simpleicon@gnusocialicon\endcsname {\simpleiconsmap\symbol{"EE41}}
- \expandafter\def\csname simpleicon@goicon\endcsname {\simpleiconsmap\symbol{"EE42}}
- \expandafter\def\csname simpleicon@gocdicon\endcsname {\simpleiconsmap\symbol{"EE43}}
- \expandafter\def\csname simpleicon@godaddyicon\endcsname {\simpleiconsmap\symbol{"EE44}}
- \expandafter\def\csname simpleicon@godotengineicon\endcsname {\simpleiconsmap\symbol{"EE45}}
- \expandafter\def\csname simpleicon@gofundmeicon\endcsname {\simpleiconsmap\symbol{"EE46}}
- \expandafter\def\csname simpleicon@gogdotcomicon\endcsname {\simpleiconsmap\symbol{"EE47}}
- \expandafter\def\csname simpleicon@gojekicon\endcsname {\simpleiconsmap\symbol{"EE48}}
- \expandafter\def\csname simpleicon@golandicon\endcsname {\simpleiconsmap\symbol{"EE49}}
- \expandafter\def\csname simpleicon@goldenlineicon\endcsname {\simpleiconsmap\symbol{"EE4A}}
- \expandafter\def\csname simpleicon@goldmansachsicon\endcsname {\simpleiconsmap\symbol{"EE4B}}
- \expandafter\def\csname simpleicon@goodreadsicon\endcsname {\simpleiconsmap\symbol{"EE4C}}
- \expandafter\def\csname simpleicon@googleicon\endcsname {\simpleiconsmap\symbol{"EE4D}}
- \expandafter\def\csname simpleicon@googleadmobicon\endcsname {\simpleiconsmap\symbol{"EE4E}}
- \expandafter\def\csname simpleicon@googleadsicon\endcsname {\simpleiconsmap\symbol{"EE4F}}
- \expandafter\def\csname simpleicon@googleadsenseicon\endcsname {\simpleiconsmap\symbol{"EE50}}
- \expandafter\def\csname simpleicon@googleanalyticsicon\endcsname {\simpleiconsmap\symbol{"EE51}}
- \expandafter\def\csname simpleicon@googleappsscripticon\endcsname {\simpleiconsmap\symbol{"EE52}}
- \expandafter\def\csname simpleicon@googleassistanticon\endcsname {\simpleiconsmap\symbol{"EE53}}
- \expandafter\def\csname simpleicon@googleauthenticatoricon\endcsname {\simpleiconsmap\symbol{"EE54}}
- \expandafter\def\csname simpleicon@googlebigqueryicon\endcsname {\simpleiconsmap\symbol{"EE55}}
- \expandafter\def\csname simpleicon@googlebigtableicon\endcsname {\simpleiconsmap\symbol{"EE56}}
- \expandafter\def\csname simpleicon@googlecalendaricon\endcsname {\simpleiconsmap\symbol{"EE57}}
- \expandafter\def\csname simpleicon@googlecampaignmanager360icon\endcsname {\simpleiconsmap\symbol{"EE58}}
- \expandafter\def\csname simpleicon@googlecardboardicon\endcsname {\simpleiconsmap\symbol{"EE59}}
- \expandafter\def\csname simpleicon@googlechaticon\endcsname {\simpleiconsmap\symbol{"EE5A}}
- \expandafter\def\csname simpleicon@googlechromeicon\endcsname {\simpleiconsmap\symbol{"EE5B}}
- \expandafter\def\csname simpleicon@googlechronicleicon\endcsname {\simpleiconsmap\symbol{"EE5C}}
- \expandafter\def\csname simpleicon@googleclassroomicon\endcsname {\simpleiconsmap\symbol{"EE5D}}
- \expandafter\def\csname simpleicon@googlecloudicon\endcsname {\simpleiconsmap\symbol{"EE5E}}
- \expandafter\def\csname simpleicon@googlecloudcomposericon\endcsname {\simpleiconsmap\symbol{"EE5F}}
- \expandafter\def\csname simpleicon@googlecloudspannericon\endcsname {\simpleiconsmap\symbol{"EE60}}
- \expandafter\def\csname simpleicon@googlecloudstorageicon\endcsname {\simpleiconsmap\symbol{"EE61}}
- \expandafter\def\csname simpleicon@googlecolabicon\endcsname {\simpleiconsmap\symbol{"EE62}}
- \expandafter\def\csname simpleicon@googlecontaineroptimizedosicon\endcsname {\simpleiconsmap\symbol{"EE63}}
- \expandafter\def\csname simpleicon@googledataflowicon\endcsname {\simpleiconsmap\symbol{"EE64}}
- \expandafter\def\csname simpleicon@googledataprocicon\endcsname {\simpleiconsmap\symbol{"EE65}}
- \expandafter\def\csname simpleicon@googledatastudioicon\endcsname {\simpleiconsmap\symbol{"EE66}}
- \expandafter\def\csname simpleicon@googledisplayandvideo360icon\endcsname {\simpleiconsmap\symbol{"EE67}}
- \expandafter\def\csname simpleicon@googledocsicon\endcsname {\simpleiconsmap\symbol{"EE68}}
- \expandafter\def\csname simpleicon@googledriveicon\endcsname {\simpleiconsmap\symbol{"EE69}}
- \expandafter\def\csname simpleicon@googleearthicon\endcsname {\simpleiconsmap\symbol{"EE6A}}
- \expandafter\def\csname simpleicon@googleearthengineicon\endcsname {\simpleiconsmap\symbol{"EE6B}}
- \expandafter\def\csname simpleicon@googlefiticon\endcsname {\simpleiconsmap\symbol{"EE6C}}
- \expandafter\def\csname simpleicon@googlefontsicon\endcsname {\simpleiconsmap\symbol{"EE6D}}
- \expandafter\def\csname simpleicon@googleformsicon\endcsname {\simpleiconsmap\symbol{"EE6E}}
- \expandafter\def\csname simpleicon@googlegeminiicon\endcsname {\simpleiconsmap\symbol{"EE6F}}
- \expandafter\def\csname simpleicon@googlehomeicon\endcsname {\simpleiconsmap\symbol{"EE70}}
- \expandafter\def\csname simpleicon@googlekeepicon\endcsname {\simpleiconsmap\symbol{"EE71}}
- \expandafter\def\csname simpleicon@googlelensicon\endcsname {\simpleiconsmap\symbol{"EE72}}
- \expandafter\def\csname simpleicon@googlemapsicon\endcsname {\simpleiconsmap\symbol{"EE73}}
- \expandafter\def\csname simpleicon@googlemarketingplatformicon\endcsname {\simpleiconsmap\symbol{"EE74}}
- \expandafter\def\csname simpleicon@googlemeeticon\endcsname {\simpleiconsmap\symbol{"EE75}}
- \expandafter\def\csname simpleicon@googlemessagesicon\endcsname {\simpleiconsmap\symbol{"EE76}}
- \expandafter\def\csname simpleicon@googlenearbyicon\endcsname {\simpleiconsmap\symbol{"EE77}}
- \expandafter\def\csname simpleicon@googlenewsicon\endcsname {\simpleiconsmap\symbol{"EE78}}
- \expandafter\def\csname simpleicon@googlepayicon\endcsname {\simpleiconsmap\symbol{"EE79}}
- \expandafter\def\csname simpleicon@googlephotosicon\endcsname {\simpleiconsmap\symbol{"EE7A}}
- \expandafter\def\csname simpleicon@googleplayicon\endcsname {\simpleiconsmap\symbol{"EE7B}}
- \expandafter\def\csname simpleicon@googlepubsubicon\endcsname {\simpleiconsmap\symbol{"EE7C}}
- \expandafter\def\csname simpleicon@googlescholaricon\endcsname {\simpleiconsmap\symbol{"EE7D}}
- \expandafter\def\csname simpleicon@googlesearchconsoleicon\endcsname {\simpleiconsmap\symbol{"EE7E}}
- \expandafter\def\csname simpleicon@googlesheetsicon\endcsname {\simpleiconsmap\symbol{"EE7F}}
- \expandafter\def\csname simpleicon@googleslidesicon\endcsname {\simpleiconsmap\symbol{"EE80}}
- \expandafter\def\csname simpleicon@googlestreetviewicon\endcsname {\simpleiconsmap\symbol{"EE81}}
- \expandafter\def\csname simpleicon@googletagmanagericon\endcsname {\simpleiconsmap\symbol{"EE82}}
- \expandafter\def\csname simpleicon@googletasksicon\endcsname {\simpleiconsmap\symbol{"EE83}}
- \expandafter\def\csname simpleicon@googletranslateicon\endcsname {\simpleiconsmap\symbol{"EE84}}
- \expandafter\def\csname simpleicon@gotomeetingicon\endcsname {\simpleiconsmap\symbol{"EE85}}
- \expandafter\def\csname simpleicon@grabicon\endcsname {\simpleiconsmap\symbol{"EE86}}
- \expandafter\def\csname simpleicon@gradleicon\endcsname {\simpleiconsmap\symbol{"EE87}}
- \expandafter\def\csname simpleicon@gradleplaypublishericon\endcsname {\simpleiconsmap\symbol{"EE88}}
- \expandafter\def\csname simpleicon@grafanaicon\endcsname {\simpleiconsmap\symbol{"EE89}}
- \expandafter\def\csname simpleicon@grammarlyicon\endcsname {\simpleiconsmap\symbol{"EE8A}}
- \expandafter\def\csname simpleicon@grandfraisicon\endcsname {\simpleiconsmap\symbol{"EE8B}}
- \expandafter\def\csname simpleicon@grapheneosicon\endcsname {\simpleiconsmap\symbol{"EE8C}}
- \expandafter\def\csname simpleicon@graphiteicon\endcsname {\simpleiconsmap\symbol{"EE8D}}
- \expandafter\def\csname simpleicon@graphqlicon\endcsname {\simpleiconsmap\symbol{"EE8E}}
- \expandafter\def\csname simpleicon@gravicon\endcsname {\simpleiconsmap\symbol{"EE8F}}
- \expandafter\def\csname simpleicon@gravataricon\endcsname {\simpleiconsmap\symbol{"EE90}}
- \expandafter\def\csname simpleicon@graylogicon\endcsname {\simpleiconsmap\symbol{"EE91}}
- \expandafter\def\csname simpleicon@greasyforkicon\endcsname {\simpleiconsmap\symbol{"EE92}}
- \expandafter\def\csname simpleicon@greatlearningicon\endcsname {\simpleiconsmap\symbol{"EE93}}
- \expandafter\def\csname simpleicon@greenhouseicon\endcsname {\simpleiconsmap\symbol{"EE94}}
- \expandafter\def\csname simpleicon@greensockicon\endcsname {\simpleiconsmap\symbol{"EE95}}
- \expandafter\def\csname simpleicon@griddotaiicon\endcsname {\simpleiconsmap\symbol{"EE96}}
- \expandafter\def\csname simpleicon@gridsomeicon\endcsname {\simpleiconsmap\symbol{"EE97}}
- \expandafter\def\csname simpleicon@groupmeicon\endcsname {\simpleiconsmap\symbol{"EE98}}
- \expandafter\def\csname simpleicon@grouponicon\endcsname {\simpleiconsmap\symbol{"EE99}}
- \expandafter\def\csname simpleicon@grubhubicon\endcsname {\simpleiconsmap\symbol{"EE9A}}
- \expandafter\def\csname simpleicon@grunticon\endcsname {\simpleiconsmap\symbol{"EE9B}}
- \expandafter\def\csname simpleicon@gskicon\endcsname {\simpleiconsmap\symbol{"EE9C}}
- \expandafter\def\csname simpleicon@gsmarenadotcomicon\endcsname {\simpleiconsmap\symbol{"EE9D}}
- \expandafter\def\csname simpleicon@gstreamericon\endcsname {\simpleiconsmap\symbol{"EE9E}}
- \expandafter\def\csname simpleicon@gtkicon\endcsname {\simpleiconsmap\symbol{"EE9F}}
- \expandafter\def\csname simpleicon@guangzhoumetroicon\endcsname {\simpleiconsmap\symbol{"EEA0}}
- \expandafter\def\csname simpleicon@guildedicon\endcsname {\simpleiconsmap\symbol{"EEA1}}
- \expandafter\def\csname simpleicon@gulpicon\endcsname {\simpleiconsmap\symbol{"EEA2}}
- \expandafter\def\csname simpleicon@gumroadicon\endcsname {\simpleiconsmap\symbol{"EEA3}}
- \expandafter\def\csname simpleicon@gumtreeicon\endcsname {\simpleiconsmap\symbol{"EEA4}}
- \expandafter\def\csname simpleicon@gunicornicon\endcsname {\simpleiconsmap\symbol{"EEA5}}
- \expandafter\def\csname simpleicon@gurobiicon\endcsname {\simpleiconsmap\symbol{"EEA6}}
- \expandafter\def\csname simpleicon@gustoicon\endcsname {\simpleiconsmap\symbol{"EEA7}}
- \expandafter\def\csname simpleicon@gutenbergicon\endcsname {\simpleiconsmap\symbol{"EEA8}}
- \expandafter\def\csname simpleicon@h3icon\endcsname {\simpleiconsmap\symbol{"EEA9}}
- \expandafter\def\csname simpleicon@habricon\endcsname {\simpleiconsmap\symbol{"EEAA}}
- \expandafter\def\csname simpleicon@hackadayicon\endcsname {\simpleiconsmap\symbol{"EEAB}}
- \expandafter\def\csname simpleicon@hackclubicon\endcsname {\simpleiconsmap\symbol{"EEAC}}
- \expandafter\def\csname simpleicon@hackerearthicon\endcsname {\simpleiconsmap\symbol{"EEAD}}
- \expandafter\def\csname simpleicon@hackernoonicon\endcsname {\simpleiconsmap\symbol{"EEAE}}
- \expandafter\def\csname simpleicon@hackeroneicon\endcsname {\simpleiconsmap\symbol{"EEAF}}
- \expandafter\def\csname simpleicon@hackerrankicon\endcsname {\simpleiconsmap\symbol{"EEB0}}
- \expandafter\def\csname simpleicon@hackstericon\endcsname {\simpleiconsmap\symbol{"EEB1}}
- \expandafter\def\csname simpleicon@hacktheboxicon\endcsname {\simpleiconsmap\symbol{"EEB2}}
- \expandafter\def\csname simpleicon@halicon\endcsname {\simpleiconsmap\symbol{"EEB3}}
- \expandafter\def\csname simpleicon@handlebarsdotjsicon\endcsname {\simpleiconsmap\symbol{"EEB4}}
- \expandafter\def\csname simpleicon@handmicon\endcsname {\simpleiconsmap\symbol{"EEB5}}
- \expandafter\def\csname simpleicon@handshakeicon\endcsname {\simpleiconsmap\symbol{"EEB6}}
- \expandafter\def\csname simpleicon@handshakeprotocolicon\endcsname {\simpleiconsmap\symbol{"EEB7}}
- \expandafter\def\csname simpleicon@happycowicon\endcsname {\simpleiconsmap\symbol{"EEB8}}
- \expandafter\def\csname simpleicon@harboricon\endcsname {\simpleiconsmap\symbol{"EEB9}}
- \expandafter\def\csname simpleicon@harmonyosicon\endcsname {\simpleiconsmap\symbol{"EEBA}}
- \expandafter\def\csname simpleicon@hashicorpicon\endcsname {\simpleiconsmap\symbol{"EEBB}}
- \expandafter\def\csname simpleicon@hashnodeicon\endcsname {\simpleiconsmap\symbol{"EEBC}}
- \expandafter\def\csname simpleicon@haskellicon\endcsname {\simpleiconsmap\symbol{"EEBD}}
- \expandafter\def\csname simpleicon@hasuraicon\endcsname {\simpleiconsmap\symbol{"EEBE}}
- \expandafter\def\csname simpleicon@hatenabookmarkicon\endcsname {\simpleiconsmap\symbol{"EEBF}}
- \expandafter\def\csname simpleicon@haveibeenpwnedicon\endcsname {\simpleiconsmap\symbol{"EEC0}}
- \expandafter\def\csname simpleicon@haxeicon\endcsname {\simpleiconsmap\symbol{"EEC1}}
- \expandafter\def\csname simpleicon@hboicon\endcsname {\simpleiconsmap\symbol{"EEC2}}
- \expandafter\def\csname simpleicon@hclicon\endcsname {\simpleiconsmap\symbol{"EEC3}}
- \expandafter\def\csname simpleicon@hdfcbankicon\endcsname {\simpleiconsmap\symbol{"EEC4}}
- \expandafter\def\csname simpleicon@headlessuiicon\endcsname {\simpleiconsmap\symbol{"EEC5}}
- \expandafter\def\csname simpleicon@headphonezoneicon\endcsname {\simpleiconsmap\symbol{"EEC6}}
- \expandafter\def\csname simpleicon@headspaceicon\endcsname {\simpleiconsmap\symbol{"EEC7}}
- \expandafter\def\csname simpleicon@hearthicon\endcsname {\simpleiconsmap\symbol{"EEC8}}
- \expandafter\def\csname simpleicon@hearthisdotaticon\endcsname {\simpleiconsmap\symbol{"EEC9}}
- \expandafter\def\csname simpleicon@hederaicon\endcsname {\simpleiconsmap\symbol{"EECA}}
- \expandafter\def\csname simpleicon@heliumicon\endcsname {\simpleiconsmap\symbol{"EECB}}
- \expandafter\def\csname simpleicon@hellofreshicon\endcsname {\simpleiconsmap\symbol{"EECC}}
- \expandafter\def\csname simpleicon@hellyhansenicon\endcsname {\simpleiconsmap\symbol{"EECD}}
- \expandafter\def\csname simpleicon@helmicon\endcsname {\simpleiconsmap\symbol{"EECE}}
- \expandafter\def\csname simpleicon@helpdeskicon\endcsname {\simpleiconsmap\symbol{"EECF}}
- \expandafter\def\csname simpleicon@helpscouticon\endcsname {\simpleiconsmap\symbol{"EED0}}
- \expandafter\def\csname simpleicon@hepsiemlakicon\endcsname {\simpleiconsmap\symbol{"EED1}}
- \expandafter\def\csname simpleicon@hereicon\endcsname {\simpleiconsmap\symbol{"EED2}}
- \expandafter\def\csname simpleicon@herokuicon\endcsname {\simpleiconsmap\symbol{"EED3}}
- \expandafter\def\csname simpleicon@hetznericon\endcsname {\simpleiconsmap\symbol{"EED4}}
- \expandafter\def\csname simpleicon@hevyicon\endcsname {\simpleiconsmap\symbol{"EED5}}
- \expandafter\def\csname simpleicon@hexleticon\endcsname {\simpleiconsmap\symbol{"EED6}}
- \expandafter\def\csname simpleicon@hexoicon\endcsname {\simpleiconsmap\symbol{"EED7}}
- \expandafter\def\csname simpleicon@heyicon\endcsname {\simpleiconsmap\symbol{"EED8}}
- \expandafter\def\csname simpleicon@hibernateicon\endcsname {\simpleiconsmap\symbol{"EED9}}
- \expandafter\def\csname simpleicon@hibobicon\endcsname {\simpleiconsmap\symbol{"EEDA}}
- \expandafter\def\csname simpleicon@hiltonicon\endcsname {\simpleiconsmap\symbol{"EEDB}}
- \expandafter\def\csname simpleicon@hiltonhotelsandresortsicon\endcsname {\simpleiconsmap\symbol{"EEDC}}
- \expandafter\def\csname simpleicon@hitachiicon\endcsname {\simpleiconsmap\symbol{"EEDD}}
- \expandafter\def\csname simpleicon@hiveicon\endcsname {\simpleiconsmap\symbol{"EEDE}}
- \expandafter\def\csname simpleicon@hiveblockchainicon\endcsname {\simpleiconsmap\symbol{"EEDF}}
- \expandafter\def\csname simpleicon@hivemqicon\endcsname {\simpleiconsmap\symbol{"EEE0}}
- \expandafter\def\csname simpleicon@homarricon\endcsname {\simpleiconsmap\symbol{"EEE1}}
- \expandafter\def\csname simpleicon@homeadvisoricon\endcsname {\simpleiconsmap\symbol{"EEE2}}
- \expandafter\def\csname simpleicon@homeassistanticon\endcsname {\simpleiconsmap\symbol{"EEE3}}
- \expandafter\def\csname simpleicon@homeassistantcommunitystoreicon\endcsname {\simpleiconsmap\symbol{"EEE4}}
- \expandafter\def\csname simpleicon@homebrewicon\endcsname {\simpleiconsmap\symbol{"EEE5}}
- \expandafter\def\csname simpleicon@homebridgeicon\endcsname {\simpleiconsmap\symbol{"EEE6}}
- \expandafter\def\csname simpleicon@homepageicon\endcsname {\simpleiconsmap\symbol{"EEE7}}
- \expandafter\def\csname simpleicon@homifyicon\endcsname {\simpleiconsmap\symbol{"EEE8}}
- \expandafter\def\csname simpleicon@hondaicon\endcsname {\simpleiconsmap\symbol{"EEE9}}
- \expandafter\def\csname simpleicon@honeyicon\endcsname {\simpleiconsmap\symbol{"EEEA}}
- \expandafter\def\csname simpleicon@honoicon\endcsname {\simpleiconsmap\symbol{"EEEB}}
- \expandafter\def\csname simpleicon@honoricon\endcsname {\simpleiconsmap\symbol{"EEEC}}
- \expandafter\def\csname simpleicon@hootsuiteicon\endcsname {\simpleiconsmap\symbol{"EEED}}
- \expandafter\def\csname simpleicon@hoppscotchicon\endcsname {\simpleiconsmap\symbol{"EEEE}}
- \expandafter\def\csname simpleicon@hostingericon\endcsname {\simpleiconsmap\symbol{"EEEF}}
- \expandafter\def\csname simpleicon@hotelsdotcomicon\endcsname {\simpleiconsmap\symbol{"EEF0}}
- \expandafter\def\csname simpleicon@hotjaricon\endcsname {\simpleiconsmap\symbol{"EEF1}}
- \expandafter\def\csname simpleicon@hotwireicon\endcsname {\simpleiconsmap\symbol{"EEF2}}
- \expandafter\def\csname simpleicon@houdiniicon\endcsname {\simpleiconsmap\symbol{"EEF3}}
- \expandafter\def\csname simpleicon@houzzicon\endcsname {\simpleiconsmap\symbol{"EEF4}}
- \expandafter\def\csname simpleicon@hpicon\endcsname {\simpleiconsmap\symbol{"EEF5}}
- \expandafter\def\csname simpleicon@hsbcicon\endcsname {\simpleiconsmap\symbol{"EEF6}}
- \expandafter\def\csname simpleicon@html5icon\endcsname {\simpleiconsmap\symbol{"EEF7}}
- \expandafter\def\csname simpleicon@htmlacademyicon\endcsname {\simpleiconsmap\symbol{"EEF8}}
- \expandafter\def\csname simpleicon@htmxicon\endcsname {\simpleiconsmap\symbol{"EEF9}}
- \expandafter\def\csname simpleicon@htopicon\endcsname {\simpleiconsmap\symbol{"EEFA}}
- \expandafter\def\csname simpleicon@httpieicon\endcsname {\simpleiconsmap\symbol{"EEFB}}
- \expandafter\def\csname simpleicon@huaweiicon\endcsname {\simpleiconsmap\symbol{"EEFC}}
- \expandafter\def\csname simpleicon@hubspoticon\endcsname {\simpleiconsmap\symbol{"EEFD}}
- \expandafter\def\csname simpleicon@huggingfaceicon\endcsname {\simpleiconsmap\symbol{"EEFE}}
- \expandafter\def\csname simpleicon@hugoicon\endcsname {\simpleiconsmap\symbol{"EEFF}}
- \expandafter\def\csname simpleicon@humblebundleicon\endcsname {\simpleiconsmap\symbol{"EF00}}
- \expandafter\def\csname simpleicon@humhubicon\endcsname {\simpleiconsmap\symbol{"EF01}}
- \expandafter\def\csname simpleicon@hungryjacksicon\endcsname {\simpleiconsmap\symbol{"EF02}}
- \expandafter\def\csname simpleicon@husqvarnaicon\endcsname {\simpleiconsmap\symbol{"EF03}}
- \expandafter\def\csname simpleicon@hypericon\endcsname {\simpleiconsmap\symbol{"EF04}}
- \expandafter\def\csname simpleicon@hyperskillicon\endcsname {\simpleiconsmap\symbol{"EF05}}
- \expandafter\def\csname simpleicon@hypothesisicon\endcsname {\simpleiconsmap\symbol{"EF06}}
- \expandafter\def\csname simpleicon@hyprlandicon\endcsname {\simpleiconsmap\symbol{"EF07}}
- \expandafter\def\csname simpleicon@hyundaiicon\endcsname {\simpleiconsmap\symbol{"EF08}}
- \expandafter\def\csname simpleicon@i18nexticon\endcsname {\simpleiconsmap\symbol{"EF09}}
- \expandafter\def\csname simpleicon@i3icon\endcsname {\simpleiconsmap\symbol{"EF0A}}
- \expandafter\def\csname simpleicon@iataicon\endcsname {\simpleiconsmap\symbol{"EF0B}}
- \expandafter\def\csname simpleicon@ibeaconicon\endcsname {\simpleiconsmap\symbol{"EF0C}}
- \expandafter\def\csname simpleicon@iberiaicon\endcsname {\simpleiconsmap\symbol{"EF0D}}
- \expandafter\def\csname simpleicon@icedicon\endcsname {\simpleiconsmap\symbol{"EF0E}}
- \expandafter\def\csname simpleicon@icelandicon\endcsname {\simpleiconsmap\symbol{"EF0F}}
- \expandafter\def\csname simpleicon@icicibankicon\endcsname {\simpleiconsmap\symbol{"EF10}}
- \expandafter\def\csname simpleicon@icingaicon\endcsname {\simpleiconsmap\symbol{"EF11}}
- \expandafter\def\csname simpleicon@icloudicon\endcsname {\simpleiconsmap\symbol{"EF12}}
- \expandafter\def\csname simpleicon@icomoonicon\endcsname {\simpleiconsmap\symbol{"EF13}}
- \expandafter\def\csname simpleicon@iconicon\endcsname {\simpleiconsmap\symbol{"EF14}}
- \expandafter\def\csname simpleicon@iconfindericon\endcsname {\simpleiconsmap\symbol{"EF15}}
- \expandafter\def\csname simpleicon@iconifyicon\endcsname {\simpleiconsmap\symbol{"EF16}}
- \expandafter\def\csname simpleicon@iconjaricon\endcsname {\simpleiconsmap\symbol{"EF17}}
- \expandafter\def\csname simpleicon@icons8icon\endcsname {\simpleiconsmap\symbol{"EF18}}
- \expandafter\def\csname simpleicon@icqicon\endcsname {\simpleiconsmap\symbol{"EF19}}
- \expandafter\def\csname simpleicon@ieeeicon\endcsname {\simpleiconsmap\symbol{"EF1A}}
- \expandafter\def\csname simpleicon@ifixiticon\endcsname {\simpleiconsmap\symbol{"EF1B}}
- \expandafter\def\csname simpleicon@ifoodicon\endcsname {\simpleiconsmap\symbol{"EF1C}}
- \expandafter\def\csname simpleicon@ifttticon\endcsname {\simpleiconsmap\symbol{"EF1D}}
- \expandafter\def\csname simpleicon@igdbicon\endcsname {\simpleiconsmap\symbol{"EF1E}}
- \expandafter\def\csname simpleicon@ignicon\endcsname {\simpleiconsmap\symbol{"EF1F}}
- \expandafter\def\csname simpleicon@iheartradioicon\endcsname {\simpleiconsmap\symbol{"EF20}}
- \expandafter\def\csname simpleicon@ikeaicon\endcsname {\simpleiconsmap\symbol{"EF21}}
- \expandafter\def\csname simpleicon@iledefrancemobilitesicon\endcsname {\simpleiconsmap\symbol{"EF22}}
- \expandafter\def\csname simpleicon@imagedotscicon\endcsname {\simpleiconsmap\symbol{"EF23}}
- \expandafter\def\csname simpleicon@imagejicon\endcsname {\simpleiconsmap\symbol{"EF24}}
- \expandafter\def\csname simpleicon@imdbicon\endcsname {\simpleiconsmap\symbol{"EF25}}
- \expandafter\def\csname simpleicon@imessageicon\endcsname {\simpleiconsmap\symbol{"EF26}}
- \expandafter\def\csname simpleicon@imguricon\endcsname {\simpleiconsmap\symbol{"EF27}}
- \expandafter\def\csname simpleicon@immericon\endcsname {\simpleiconsmap\symbol{"EF28}}
- \expandafter\def\csname simpleicon@immichicon\endcsname {\simpleiconsmap\symbol{"EF29}}
- \expandafter\def\csname simpleicon@imouicon\endcsname {\simpleiconsmap\symbol{"EF2A}}
- \expandafter\def\csname simpleicon@improvmxicon\endcsname {\simpleiconsmap\symbol{"EF2B}}
- \expandafter\def\csname simpleicon@indeedicon\endcsname {\simpleiconsmap\symbol{"EF2C}}
- \expandafter\def\csname simpleicon@indiansuperleagueicon\endcsname {\simpleiconsmap\symbol{"EF2D}}
- \expandafter\def\csname simpleicon@indiehackersicon\endcsname {\simpleiconsmap\symbol{"EF2E}}
- \expandafter\def\csname simpleicon@indigoicon\endcsname {\simpleiconsmap\symbol{"EF2F}}
- \expandafter\def\csname simpleicon@inductiveautomationicon\endcsname {\simpleiconsmap\symbol{"EF30}}
- \expandafter\def\csname simpleicon@inertiaicon\endcsname {\simpleiconsmap\symbol{"EF31}}
- \expandafter\def\csname simpleicon@infinitiicon\endcsname {\simpleiconsmap\symbol{"EF32}}
- \expandafter\def\csname simpleicon@influxdbicon\endcsname {\simpleiconsmap\symbol{"EF33}}
- \expandafter\def\csname simpleicon@infomaniakicon\endcsname {\simpleiconsmap\symbol{"EF34}}
- \expandafter\def\csname simpleicon@infoqicon\endcsname {\simpleiconsmap\symbol{"EF35}}
- \expandafter\def\csname simpleicon@informaticaicon\endcsname {\simpleiconsmap\symbol{"EF36}}
- \expandafter\def\csname simpleicon@infosysicon\endcsname {\simpleiconsmap\symbol{"EF37}}
- \expandafter\def\csname simpleicon@infracosticon\endcsname {\simpleiconsmap\symbol{"EF38}}
- \expandafter\def\csname simpleicon@ingressicon\endcsname {\simpleiconsmap\symbol{"EF39}}
- \expandafter\def\csname simpleicon@inkdropicon\endcsname {\simpleiconsmap\symbol{"EF3A}}
- \expandafter\def\csname simpleicon@inkscapeicon\endcsname {\simpleiconsmap\symbol{"EF3B}}
- \expandafter\def\csname simpleicon@inoreadericon\endcsname {\simpleiconsmap\symbol{"EF3C}}
- \expandafter\def\csname simpleicon@insomniaicon\endcsname {\simpleiconsmap\symbol{"EF3D}}
- \expandafter\def\csname simpleicon@inspireicon\endcsname {\simpleiconsmap\symbol{"EF3E}}
- \expandafter\def\csname simpleicon@insta360icon\endcsname {\simpleiconsmap\symbol{"EF3F}}
- \expandafter\def\csname simpleicon@instacarticon\endcsname {\simpleiconsmap\symbol{"EF40}}
- \expandafter\def\csname simpleicon@instagramicon\endcsname {\simpleiconsmap\symbol{"EF41}}
- \expandafter\def\csname simpleicon@instapapericon\endcsname {\simpleiconsmap\symbol{"EF42}}
- \expandafter\def\csname simpleicon@instatusicon\endcsname {\simpleiconsmap\symbol{"EF43}}
- \expandafter\def\csname simpleicon@instructablesicon\endcsname {\simpleiconsmap\symbol{"EF44}}
- \expandafter\def\csname simpleicon@instructureicon\endcsname {\simpleiconsmap\symbol{"EF45}}
- \expandafter\def\csname simpleicon@intelicon\endcsname {\simpleiconsmap\symbol{"EF46}}
- \expandafter\def\csname simpleicon@intellijideaicon\endcsname {\simpleiconsmap\symbol{"EF47}}
- \expandafter\def\csname simpleicon@interactiondesignfoundationicon\endcsname {\simpleiconsmap\symbol{"EF48}}
- \expandafter\def\csname simpleicon@interactjsicon\endcsname {\simpleiconsmap\symbol{"EF49}}
- \expandafter\def\csname simpleicon@interbaseicon\endcsname {\simpleiconsmap\symbol{"EF4A}}
- \expandafter\def\csname simpleicon@intercomicon\endcsname {\simpleiconsmap\symbol{"EF4B}}
- \expandafter\def\csname simpleicon@intermarcheicon\endcsname {\simpleiconsmap\symbol{"EF4C}}
- \expandafter\def\csname simpleicon@internetarchiveicon\endcsname {\simpleiconsmap\symbol{"EF4D}}
- \expandafter\def\csname simpleicon@internetcomputericon\endcsname {\simpleiconsmap\symbol{"EF4E}}
- \expandafter\def\csname simpleicon@intigritiicon\endcsname {\simpleiconsmap\symbol{"EF4F}}
- \expandafter\def\csname simpleicon@intuiticon\endcsname {\simpleiconsmap\symbol{"EF50}}
- \expandafter\def\csname simpleicon@invisionicon\endcsname {\simpleiconsmap\symbol{"EF51}}
- \expandafter\def\csname simpleicon@invoiceninjaicon\endcsname {\simpleiconsmap\symbol{"EF52}}
- \expandafter\def\csname simpleicon@iobrokericon\endcsname {\simpleiconsmap\symbol{"EF53}}
- \expandafter\def\csname simpleicon@ionicicon\endcsname {\simpleiconsmap\symbol{"EF54}}
- \expandafter\def\csname simpleicon@ionosicon\endcsname {\simpleiconsmap\symbol{"EF55}}
- \expandafter\def\csname simpleicon@iosicon\endcsname {\simpleiconsmap\symbol{"EF56}}
- \expandafter\def\csname simpleicon@iotaicon\endcsname {\simpleiconsmap\symbol{"EF57}}
- \expandafter\def\csname simpleicon@ipfsicon\endcsname {\simpleiconsmap\symbol{"EF58}}
- \expandafter\def\csname simpleicon@irisicon\endcsname {\simpleiconsmap\symbol{"EF59}}
- \expandafter\def\csname simpleicon@iroboticon\endcsname {\simpleiconsmap\symbol{"EF5A}}
- \expandafter\def\csname simpleicon@isc2icon\endcsname {\simpleiconsmap\symbol{"EF5B}}
- \expandafter\def\csname simpleicon@issuuicon\endcsname {\simpleiconsmap\symbol{"EF5C}}
- \expandafter\def\csname simpleicon@istioicon\endcsname {\simpleiconsmap\symbol{"EF5D}}
- \expandafter\def\csname simpleicon@itchdotioicon\endcsname {\simpleiconsmap\symbol{"EF5E}}
- \expandafter\def\csname simpleicon@iterm2icon\endcsname {\simpleiconsmap\symbol{"EF5F}}
- \expandafter\def\csname simpleicon@itunesicon\endcsname {\simpleiconsmap\symbol{"EF60}}
- \expandafter\def\csname simpleicon@itvxicon\endcsname {\simpleiconsmap\symbol{"EF61}}
- \expandafter\def\csname simpleicon@ivecoicon\endcsname {\simpleiconsmap\symbol{"EF62}}
- \expandafter\def\csname simpleicon@jabbericon\endcsname {\simpleiconsmap\symbol{"EF63}}
- \expandafter\def\csname simpleicon@jaegericon\endcsname {\simpleiconsmap\symbol{"EF64}}
- \expandafter\def\csname simpleicon@jaguaricon\endcsname {\simpleiconsmap\symbol{"EF65}}
- \expandafter\def\csname simpleicon@jamboardicon\endcsname {\simpleiconsmap\symbol{"EF66}}
- \expandafter\def\csname simpleicon@jamesonicon\endcsname {\simpleiconsmap\symbol{"EF67}}
- \expandafter\def\csname simpleicon@jamstackicon\endcsname {\simpleiconsmap\symbol{"EF68}}
- \expandafter\def\csname simpleicon@jasmineicon\endcsname {\simpleiconsmap\symbol{"EF69}}
- \expandafter\def\csname simpleicon@javascripticon\endcsname {\simpleiconsmap\symbol{"EF6A}}
- \expandafter\def\csname simpleicon@jblicon\endcsname {\simpleiconsmap\symbol{"EF6B}}
- \expandafter\def\csname simpleicon@jcbicon\endcsname {\simpleiconsmap\symbol{"EF6C}}
- \expandafter\def\csname simpleicon@jeepicon\endcsname {\simpleiconsmap\symbol{"EF6D}}
- \expandafter\def\csname simpleicon@jekyllicon\endcsname {\simpleiconsmap\symbol{"EF6E}}
- \expandafter\def\csname simpleicon@jellyfinicon\endcsname {\simpleiconsmap\symbol{"EF6F}}
- \expandafter\def\csname simpleicon@jenkinsicon\endcsname {\simpleiconsmap\symbol{"EF70}}
- \expandafter\def\csname simpleicon@jesticon\endcsname {\simpleiconsmap\symbol{"EF71}}
- \expandafter\def\csname simpleicon@jeticon\endcsname {\simpleiconsmap\symbol{"EF72}}
- \expandafter\def\csname simpleicon@jetblueicon\endcsname {\simpleiconsmap\symbol{"EF73}}
- \expandafter\def\csname simpleicon@jetbrainsicon\endcsname {\simpleiconsmap\symbol{"EF74}}
- \expandafter\def\csname simpleicon@jetpackcomposeicon\endcsname {\simpleiconsmap\symbol{"EF75}}
- \expandafter\def\csname simpleicon@jfrogicon\endcsname {\simpleiconsmap\symbol{"EF76}}
- \expandafter\def\csname simpleicon@jfrogpipelinesicon\endcsname {\simpleiconsmap\symbol{"EF77}}
- \expandafter\def\csname simpleicon@jhipstericon\endcsname {\simpleiconsmap\symbol{"EF78}}
- \expandafter\def\csname simpleicon@jinjaicon\endcsname {\simpleiconsmap\symbol{"EF79}}
- \expandafter\def\csname simpleicon@jiraicon\endcsname {\simpleiconsmap\symbol{"EF7A}}
- \expandafter\def\csname simpleicon@jirasoftwareicon\endcsname {\simpleiconsmap\symbol{"EF7B}}
- \expandafter\def\csname simpleicon@jitpackicon\endcsname {\simpleiconsmap\symbol{"EF7C}}
- \expandafter\def\csname simpleicon@jitsiicon\endcsname {\simpleiconsmap\symbol{"EF7D}}
- \expandafter\def\csname simpleicon@johndeereicon\endcsname {\simpleiconsmap\symbol{"EF7E}}
- \expandafter\def\csname simpleicon@joomlaicon\endcsname {\simpleiconsmap\symbol{"EF7F}}
- \expandafter\def\csname simpleicon@joplinicon\endcsname {\simpleiconsmap\symbol{"EF80}}
- \expandafter\def\csname simpleicon@jordanicon\endcsname {\simpleiconsmap\symbol{"EF81}}
- \expandafter\def\csname simpleicon@jouavicon\endcsname {\simpleiconsmap\symbol{"EF82}}
- \expandafter\def\csname simpleicon@jovianicon\endcsname {\simpleiconsmap\symbol{"EF83}}
- \expandafter\def\csname simpleicon@jpegicon\endcsname {\simpleiconsmap\symbol{"EF84}}
- \expandafter\def\csname simpleicon@jqueryicon\endcsname {\simpleiconsmap\symbol{"EF85}}
- \expandafter\def\csname simpleicon@jrgroupicon\endcsname {\simpleiconsmap\symbol{"EF86}}
- \expandafter\def\csname simpleicon@jsdelivricon\endcsname {\simpleiconsmap\symbol{"EF87}}
- \expandafter\def\csname simpleicon@jsfiddleicon\endcsname {\simpleiconsmap\symbol{"EF88}}
- \expandafter\def\csname simpleicon@jsonicon\endcsname {\simpleiconsmap\symbol{"EF89}}
- \expandafter\def\csname simpleicon@jsonwebtokensicon\endcsname {\simpleiconsmap\symbol{"EF8A}}
- \expandafter\def\csname simpleicon@jsricon\endcsname {\simpleiconsmap\symbol{"EF8B}}
- \expandafter\def\csname simpleicon@jssicon\endcsname {\simpleiconsmap\symbol{"EF8C}}
- \expandafter\def\csname simpleicon@juceicon\endcsname {\simpleiconsmap\symbol{"EF8D}}
- \expandafter\def\csname simpleicon@juejinicon\endcsname {\simpleiconsmap\symbol{"EF8E}}
- \expandafter\def\csname simpleicon@jukeicon\endcsname {\simpleiconsmap\symbol{"EF8F}}
- \expandafter\def\csname simpleicon@juliaicon\endcsname {\simpleiconsmap\symbol{"EF90}}
- \expandafter\def\csname simpleicon@junipernetworksicon\endcsname {\simpleiconsmap\symbol{"EF91}}
- \expandafter\def\csname simpleicon@junit5icon\endcsname {\simpleiconsmap\symbol{"EF92}}
- \expandafter\def\csname simpleicon@jupytericon\endcsname {\simpleiconsmap\symbol{"EF93}}
- \expandafter\def\csname simpleicon@justeaticon\endcsname {\simpleiconsmap\symbol{"EF94}}
- \expandafter\def\csname simpleicon@justgivingicon\endcsname {\simpleiconsmap\symbol{"EF95}}
- \expandafter\def\csname simpleicon@k3sicon\endcsname {\simpleiconsmap\symbol{"EF96}}
- \expandafter\def\csname simpleicon@k6icon\endcsname {\simpleiconsmap\symbol{"EF97}}
- \expandafter\def\csname simpleicon@kaggleicon\endcsname {\simpleiconsmap\symbol{"EF98}}
- \expandafter\def\csname simpleicon@kagiicon\endcsname {\simpleiconsmap\symbol{"EF99}}
- \expandafter\def\csname simpleicon@kahooticon\endcsname {\simpleiconsmap\symbol{"EF9A}}
- \expandafter\def\csname simpleicon@kaiosicon\endcsname {\simpleiconsmap\symbol{"EF9B}}
- \expandafter\def\csname simpleicon@kakaoicon\endcsname {\simpleiconsmap\symbol{"EF9C}}
- \expandafter\def\csname simpleicon@kakaotalkicon\endcsname {\simpleiconsmap\symbol{"EF9D}}
- \expandafter\def\csname simpleicon@kalilinuxicon\endcsname {\simpleiconsmap\symbol{"EF9E}}
- \expandafter\def\csname simpleicon@kamailioicon\endcsname {\simpleiconsmap\symbol{"EF9F}}
- \expandafter\def\csname simpleicon@kanikoicon\endcsname {\simpleiconsmap\symbol{"EFA0}}
- \expandafter\def\csname simpleicon@karlsruherverkehrsverbundicon\endcsname {\simpleiconsmap\symbol{"EFA1}}
- \expandafter\def\csname simpleicon@kasasmarticon\endcsname {\simpleiconsmap\symbol{"EFA2}}
- \expandafter\def\csname simpleicon@kashflowicon\endcsname {\simpleiconsmap\symbol{"EFA3}}
- \expandafter\def\csname simpleicon@kasperskyicon\endcsname {\simpleiconsmap\symbol{"EFA4}}
- \expandafter\def\csname simpleicon@katacodaicon\endcsname {\simpleiconsmap\symbol{"EFA5}}
- \expandafter\def\csname simpleicon@katanaicon\endcsname {\simpleiconsmap\symbol{"EFA6}}
- \expandafter\def\csname simpleicon@kauflandicon\endcsname {\simpleiconsmap\symbol{"EFA7}}
- \expandafter\def\csname simpleicon@kdeicon\endcsname {\simpleiconsmap\symbol{"EFA8}}
- \expandafter\def\csname simpleicon@kdenliveicon\endcsname {\simpleiconsmap\symbol{"EFA9}}
- \expandafter\def\csname simpleicon@kedroicon\endcsname {\simpleiconsmap\symbol{"EFAA}}
- \expandafter\def\csname simpleicon@keeneticicon\endcsname {\simpleiconsmap\symbol{"EFAB}}
- \expandafter\def\csname simpleicon@keepachangelogicon\endcsname {\simpleiconsmap\symbol{"EFAC}}
- \expandafter\def\csname simpleicon@keepassxcicon\endcsname {\simpleiconsmap\symbol{"EFAD}}
- \expandafter\def\csname simpleicon@kenticoicon\endcsname {\simpleiconsmap\symbol{"EFAE}}
- \expandafter\def\csname simpleicon@kerasicon\endcsname {\simpleiconsmap\symbol{"EFAF}}
- \expandafter\def\csname simpleicon@keybaseicon\endcsname {\simpleiconsmap\symbol{"EFB0}}
- \expandafter\def\csname simpleicon@keycdnicon\endcsname {\simpleiconsmap\symbol{"EFB1}}
- \expandafter\def\csname simpleicon@keycloakicon\endcsname {\simpleiconsmap\symbol{"EFB2}}
- \expandafter\def\csname simpleicon@keystoneicon\endcsname {\simpleiconsmap\symbol{"EFB3}}
- \expandafter\def\csname simpleicon@kfcicon\endcsname {\simpleiconsmap\symbol{"EFB4}}
- \expandafter\def\csname simpleicon@khanacademyicon\endcsname {\simpleiconsmap\symbol{"EFB5}}
- \expandafter\def\csname simpleicon@khronosgroupicon\endcsname {\simpleiconsmap\symbol{"EFB6}}
- \expandafter\def\csname simpleicon@kiaicon\endcsname {\simpleiconsmap\symbol{"EFB7}}
- \expandafter\def\csname simpleicon@kibanaicon\endcsname {\simpleiconsmap\symbol{"EFB8}}
- \expandafter\def\csname simpleicon@kicadicon\endcsname {\simpleiconsmap\symbol{"EFB9}}
- \expandafter\def\csname simpleicon@kickicon\endcsname {\simpleiconsmap\symbol{"EFBA}}
- \expandafter\def\csname simpleicon@kickstartericon\endcsname {\simpleiconsmap\symbol{"EFBB}}
- \expandafter\def\csname simpleicon@kikicon\endcsname {\simpleiconsmap\symbol{"EFBC}}
- \expandafter\def\csname simpleicon@kingstontechnologyicon\endcsname {\simpleiconsmap\symbol{"EFBD}}
- \expandafter\def\csname simpleicon@kinopoiskicon\endcsname {\simpleiconsmap\symbol{"EFBE}}
- \expandafter\def\csname simpleicon@kinstaicon\endcsname {\simpleiconsmap\symbol{"EFBF}}
- \expandafter\def\csname simpleicon@kirbyicon\endcsname {\simpleiconsmap\symbol{"EFC0}}
- \expandafter\def\csname simpleicon@kiticon\endcsname {\simpleiconsmap\symbol{"EFC1}}
- \expandafter\def\csname simpleicon@kitsuicon\endcsname {\simpleiconsmap\symbol{"EFC2}}
- \expandafter\def\csname simpleicon@klarnaicon\endcsname {\simpleiconsmap\symbol{"EFC3}}
- \expandafter\def\csname simpleicon@klmicon\endcsname {\simpleiconsmap\symbol{"EFC4}}
- \expandafter\def\csname simpleicon@klookicon\endcsname {\simpleiconsmap\symbol{"EFC5}}
- \expandafter\def\csname simpleicon@knativeicon\endcsname {\simpleiconsmap\symbol{"EFC6}}
- \expandafter\def\csname simpleicon@knexdotjsicon\endcsname {\simpleiconsmap\symbol{"EFC7}}
- \expandafter\def\csname simpleicon@knimeicon\endcsname {\simpleiconsmap\symbol{"EFC8}}
- \expandafter\def\csname simpleicon@knipicon\endcsname {\simpleiconsmap\symbol{"EFC9}}
- \expandafter\def\csname simpleicon@knowledgebaseicon\endcsname {\simpleiconsmap\symbol{"EFCA}}
- \expandafter\def\csname simpleicon@knownicon\endcsname {\simpleiconsmap\symbol{"EFCB}}
- \expandafter\def\csname simpleicon@koaicon\endcsname {\simpleiconsmap\symbol{"EFCC}}
- \expandafter\def\csname simpleicon@kocicon\endcsname {\simpleiconsmap\symbol{"EFCD}}
- \expandafter\def\csname simpleicon@kodakicon\endcsname {\simpleiconsmap\symbol{"EFCE}}
- \expandafter\def\csname simpleicon@kodiicon\endcsname {\simpleiconsmap\symbol{"EFCF}}
- \expandafter\def\csname simpleicon@koenigseggicon\endcsname {\simpleiconsmap\symbol{"EFD0}}
- \expandafter\def\csname simpleicon@kofaxicon\endcsname {\simpleiconsmap\symbol{"EFD1}}
- \expandafter\def\csname simpleicon@kofiicon\endcsname {\simpleiconsmap\symbol{"EFD2}}
- \expandafter\def\csname simpleicon@komooticon\endcsname {\simpleiconsmap\symbol{"EFD3}}
- \expandafter\def\csname simpleicon@konamiicon\endcsname {\simpleiconsmap\symbol{"EFD4}}
- \expandafter\def\csname simpleicon@kongicon\endcsname {\simpleiconsmap\symbol{"EFD5}}
- \expandafter\def\csname simpleicon@kongregateicon\endcsname {\simpleiconsmap\symbol{"EFD6}}
- \expandafter\def\csname simpleicon@konvaicon\endcsname {\simpleiconsmap\symbol{"EFD7}}
- \expandafter\def\csname simpleicon@kotlinicon\endcsname {\simpleiconsmap\symbol{"EFD8}}
- \expandafter\def\csname simpleicon@koyebicon\endcsname {\simpleiconsmap\symbol{"EFD9}}
- \expandafter\def\csname simpleicon@kritaicon\endcsname {\simpleiconsmap\symbol{"EFDA}}
- \expandafter\def\csname simpleicon@ktmicon\endcsname {\simpleiconsmap\symbol{"EFDB}}
- \expandafter\def\csname simpleicon@ktoricon\endcsname {\simpleiconsmap\symbol{"EFDC}}
- \expandafter\def\csname simpleicon@kuaishouicon\endcsname {\simpleiconsmap\symbol{"EFDD}}
- \expandafter\def\csname simpleicon@kubernetesicon\endcsname {\simpleiconsmap\symbol{"EFDE}}
- \expandafter\def\csname simpleicon@kubuntuicon\endcsname {\simpleiconsmap\symbol{"EFDF}}
- \expandafter\def\csname simpleicon@kucoinicon\endcsname {\simpleiconsmap\symbol{"EFE0}}
- \expandafter\def\csname simpleicon@kumaicon\endcsname {\simpleiconsmap\symbol{"EFE1}}
- \expandafter\def\csname simpleicon@kununuicon\endcsname {\simpleiconsmap\symbol{"EFE2}}
- \expandafter\def\csname simpleicon@kuulaicon\endcsname {\simpleiconsmap\symbol{"EFE3}}
- \expandafter\def\csname simpleicon@kxicon\endcsname {\simpleiconsmap\symbol{"EFE4}}
- \expandafter\def\csname simpleicon@kyoceraicon\endcsname {\simpleiconsmap\symbol{"EFE5}}
- \expandafter\def\csname simpleicon@labviewicon\endcsname {\simpleiconsmap\symbol{"EFE6}}
- \expandafter\def\csname simpleicon@ladaicon\endcsname {\simpleiconsmap\symbol{"EFE7}}
- \expandafter\def\csname simpleicon@lamborghiniicon\endcsname {\simpleiconsmap\symbol{"EFE8}}
- \expandafter\def\csname simpleicon@landrovericon\endcsname {\simpleiconsmap\symbol{"EFE9}}
- \expandafter\def\csname simpleicon@langchainicon\endcsname {\simpleiconsmap\symbol{"EFEA}}
- \expandafter\def\csname simpleicon@languagetoolicon\endcsname {\simpleiconsmap\symbol{"EFEB}}
- \expandafter\def\csname simpleicon@lapceicon\endcsname {\simpleiconsmap\symbol{"EFEC}}
- \expandafter\def\csname simpleicon@laragonicon\endcsname {\simpleiconsmap\symbol{"EFED}}
- \expandafter\def\csname simpleicon@laravelicon\endcsname {\simpleiconsmap\symbol{"EFEE}}
- \expandafter\def\csname simpleicon@laravelhorizonicon\endcsname {\simpleiconsmap\symbol{"EFEF}}
- \expandafter\def\csname simpleicon@laravelnovaicon\endcsname {\simpleiconsmap\symbol{"EFF0}}
- \expandafter\def\csname simpleicon@lastdotfmicon\endcsname {\simpleiconsmap\symbol{"EFF1}}
- \expandafter\def\csname simpleicon@lastpassicon\endcsname {\simpleiconsmap\symbol{"EFF2}}
- \expandafter\def\csname simpleicon@latexicon\endcsname {\simpleiconsmap\symbol{"EFF3}}
- \expandafter\def\csname simpleicon@launchpadicon\endcsname {\simpleiconsmap\symbol{"EFF4}}
- \expandafter\def\csname simpleicon@lazarusicon\endcsname {\simpleiconsmap\symbol{"EFF5}}
- \expandafter\def\csname simpleicon@lazyvimicon\endcsname {\simpleiconsmap\symbol{"EFF6}}
- \expandafter\def\csname simpleicon@lbryicon\endcsname {\simpleiconsmap\symbol{"EFF7}}
- \expandafter\def\csname simpleicon@leaderpriceicon\endcsname {\simpleiconsmap\symbol{"EFF8}}
- \expandafter\def\csname simpleicon@leafleticon\endcsname {\simpleiconsmap\symbol{"EFF9}}
- \expandafter\def\csname simpleicon@leagueoflegendsicon\endcsname {\simpleiconsmap\symbol{"EFFA}}
- \expandafter\def\csname simpleicon@leanpubicon\endcsname {\simpleiconsmap\symbol{"EFFB}}
- \expandafter\def\csname simpleicon@leetcodeicon\endcsname {\simpleiconsmap\symbol{"EFFC}}
- \expandafter\def\csname simpleicon@lefthookicon\endcsname {\simpleiconsmap\symbol{"EFFD}}
- \expandafter\def\csname simpleicon@legacygamesicon\endcsname {\simpleiconsmap\symbol{"EFFE}}
- \expandafter\def\csname simpleicon@leicaicon\endcsname {\simpleiconsmap\symbol{"EFFF}}
- \expandafter\def\csname simpleicon@lemmyicon\endcsname {\simpleiconsmap\symbol{"F000}}
- \expandafter\def\csname simpleicon@lemonsqueezyicon\endcsname {\simpleiconsmap\symbol{"F001}}
- \expandafter\def\csname simpleicon@lenovoicon\endcsname {\simpleiconsmap\symbol{"F002}}
- \expandafter\def\csname simpleicon@lensicon\endcsname {\simpleiconsmap\symbol{"F003}}
- \expandafter\def\csname simpleicon@leptosicon\endcsname {\simpleiconsmap\symbol{"F004}}
- \expandafter\def\csname simpleicon@lequipeicon\endcsname {\simpleiconsmap\symbol{"F005}}
- \expandafter\def\csname simpleicon@lernaicon\endcsname {\simpleiconsmap\symbol{"F006}}
- \expandafter\def\csname simpleicon@leroymerlinicon\endcsname {\simpleiconsmap\symbol{"F007}}
- \expandafter\def\csname simpleicon@leslibrairesicon\endcsname {\simpleiconsmap\symbol{"F008}}
- \expandafter\def\csname simpleicon@lessicon\endcsname {\simpleiconsmap\symbol{"F009}}
- \expandafter\def\csname simpleicon@letsencrypticon\endcsname {\simpleiconsmap\symbol{"F00A}}
- \expandafter\def\csname simpleicon@letterboxdicon\endcsname {\simpleiconsmap\symbol{"F00B}}
- \expandafter\def\csname simpleicon@levelsdotfyiicon\endcsname {\simpleiconsmap\symbol{"F00C}}
- \expandafter\def\csname simpleicon@lgicon\endcsname {\simpleiconsmap\symbol{"F00D}}
- \expandafter\def\csname simpleicon@liberadotchaticon\endcsname {\simpleiconsmap\symbol{"F00E}}
- \expandafter\def\csname simpleicon@liberapayicon\endcsname {\simpleiconsmap\symbol{"F00F}}
- \expandafter\def\csname simpleicon@librariesdotioicon\endcsname {\simpleiconsmap\symbol{"F010}}
- \expandafter\def\csname simpleicon@librarythingicon\endcsname {\simpleiconsmap\symbol{"F011}}
- \expandafter\def\csname simpleicon@libreofficeicon\endcsname {\simpleiconsmap\symbol{"F012}}
- \expandafter\def\csname simpleicon@libreofficebaseicon\endcsname {\simpleiconsmap\symbol{"F013}}
- \expandafter\def\csname simpleicon@libreofficecalcicon\endcsname {\simpleiconsmap\symbol{"F014}}
- \expandafter\def\csname simpleicon@libreofficedrawicon\endcsname {\simpleiconsmap\symbol{"F015}}
- \expandafter\def\csname simpleicon@libreofficeimpressicon\endcsname {\simpleiconsmap\symbol{"F016}}
- \expandafter\def\csname simpleicon@libreofficemathicon\endcsname {\simpleiconsmap\symbol{"F017}}
- \expandafter\def\csname simpleicon@libreofficewritericon\endcsname {\simpleiconsmap\symbol{"F018}}
- \expandafter\def\csname simpleicon@librewolficon\endcsname {\simpleiconsmap\symbol{"F019}}
- \expandafter\def\csname simpleicon@libuvicon\endcsname {\simpleiconsmap\symbol{"F01A}}
- \expandafter\def\csname simpleicon@lichessicon\endcsname {\simpleiconsmap\symbol{"F01B}}
- \expandafter\def\csname simpleicon@lidlicon\endcsname {\simpleiconsmap\symbol{"F01C}}
- \expandafter\def\csname simpleicon@lifxicon\endcsname {\simpleiconsmap\symbol{"F01D}}
- \expandafter\def\csname simpleicon@lightburnicon\endcsname {\simpleiconsmap\symbol{"F01E}}
- \expandafter\def\csname simpleicon@lighthouseicon\endcsname {\simpleiconsmap\symbol{"F01F}}
- \expandafter\def\csname simpleicon@lightningicon\endcsname {\simpleiconsmap\symbol{"F020}}
- \expandafter\def\csname simpleicon@limesurveyicon\endcsname {\simpleiconsmap\symbol{"F021}}
- \expandafter\def\csname simpleicon@lineicon\endcsname {\simpleiconsmap\symbol{"F022}}
- \expandafter\def\csname simpleicon@lineageosicon\endcsname {\simpleiconsmap\symbol{"F023}}
- \expandafter\def\csname simpleicon@linearicon\endcsname {\simpleiconsmap\symbol{"F024}}
- \expandafter\def\csname simpleicon@liningicon\endcsname {\simpleiconsmap\symbol{"F025}}
- \expandafter\def\csname simpleicon@linkedinicon\endcsname {\simpleiconsmap\symbol{"F026}}
- \expandafter\def\csname simpleicon@linkerdicon\endcsname {\simpleiconsmap\symbol{"F027}}
- \expandafter\def\csname simpleicon@linkfireicon\endcsname {\simpleiconsmap\symbol{"F028}}
- \expandafter\def\csname simpleicon@linksysicon\endcsname {\simpleiconsmap\symbol{"F029}}
- \expandafter\def\csname simpleicon@linktreeicon\endcsname {\simpleiconsmap\symbol{"F02A}}
- \expandafter\def\csname simpleicon@lintcodeicon\endcsname {\simpleiconsmap\symbol{"F02B}}
- \expandafter\def\csname simpleicon@linuxicon\endcsname {\simpleiconsmap\symbol{"F02C}}
- \expandafter\def\csname simpleicon@linuxcontainersicon\endcsname {\simpleiconsmap\symbol{"F02D}}
- \expandafter\def\csname simpleicon@linuxfoundationicon\endcsname {\simpleiconsmap\symbol{"F02E}}
- \expandafter\def\csname simpleicon@linuxminticon\endcsname {\simpleiconsmap\symbol{"F02F}}
- \expandafter\def\csname simpleicon@linuxprofessionalinstituteicon\endcsname {\simpleiconsmap\symbol{"F030}}
- \expandafter\def\csname simpleicon@linuxservericon\endcsname {\simpleiconsmap\symbol{"F031}}
- \expandafter\def\csname simpleicon@lionairicon\endcsname {\simpleiconsmap\symbol{"F032}}
- \expandafter\def\csname simpleicon@liquibaseicon\endcsname {\simpleiconsmap\symbol{"F033}}
- \expandafter\def\csname simpleicon@listmonkicon\endcsname {\simpleiconsmap\symbol{"F034}}
- \expandafter\def\csname simpleicon@liticon\endcsname {\simpleiconsmap\symbol{"F035}}
- \expandafter\def\csname simpleicon@litecoinicon\endcsname {\simpleiconsmap\symbol{"F036}}
- \expandafter\def\csname simpleicon@literalicon\endcsname {\simpleiconsmap\symbol{"F037}}
- \expandafter\def\csname simpleicon@litiengineicon\endcsname {\simpleiconsmap\symbol{"F038}}
- \expandafter\def\csname simpleicon@livechaticon\endcsname {\simpleiconsmap\symbol{"F039}}
- \expandafter\def\csname simpleicon@livejournalicon\endcsname {\simpleiconsmap\symbol{"F03A}}
- \expandafter\def\csname simpleicon@livewireicon\endcsname {\simpleiconsmap\symbol{"F03B}}
- \expandafter\def\csname simpleicon@llvmicon\endcsname {\simpleiconsmap\symbol{"F03C}}
- \expandafter\def\csname simpleicon@lmmsicon\endcsname {\simpleiconsmap\symbol{"F03D}}
- \expandafter\def\csname simpleicon@lobstersicon\endcsname {\simpleiconsmap\symbol{"F03E}}
- \expandafter\def\csname simpleicon@localicon\endcsname {\simpleiconsmap\symbol{"F03F}}
- \expandafter\def\csname simpleicon@lodashicon\endcsname {\simpleiconsmap\symbol{"F040}}
- \expandafter\def\csname simpleicon@logitechicon\endcsname {\simpleiconsmap\symbol{"F041}}
- \expandafter\def\csname simpleicon@logitechgicon\endcsname {\simpleiconsmap\symbol{"F042}}
- \expandafter\def\csname simpleicon@logmeinicon\endcsname {\simpleiconsmap\symbol{"F043}}
- \expandafter\def\csname simpleicon@logseqicon\endcsname {\simpleiconsmap\symbol{"F044}}
- \expandafter\def\csname simpleicon@logstashicon\endcsname {\simpleiconsmap\symbol{"F045}}
- \expandafter\def\csname simpleicon@lookericon\endcsname {\simpleiconsmap\symbol{"F046}}
- \expandafter\def\csname simpleicon@loomicon\endcsname {\simpleiconsmap\symbol{"F047}}
- \expandafter\def\csname simpleicon@loopicon\endcsname {\simpleiconsmap\symbol{"F048}}
- \expandafter\def\csname simpleicon@loopbackicon\endcsname {\simpleiconsmap\symbol{"F049}}
- \expandafter\def\csname simpleicon@lootcrateicon\endcsname {\simpleiconsmap\symbol{"F04A}}
- \expandafter\def\csname simpleicon@lospecicon\endcsname {\simpleiconsmap\symbol{"F04B}}
- \expandafter\def\csname simpleicon@lotpolishairlinesicon\endcsname {\simpleiconsmap\symbol{"F04C}}
- \expandafter\def\csname simpleicon@ltspiceicon\endcsname {\simpleiconsmap\symbol{"F04D}}
- \expandafter\def\csname simpleicon@luaicon\endcsname {\simpleiconsmap\symbol{"F04E}}
- \expandafter\def\csname simpleicon@lubuntuicon\endcsname {\simpleiconsmap\symbol{"F04F}}
- \expandafter\def\csname simpleicon@luciaicon\endcsname {\simpleiconsmap\symbol{"F050}}
- \expandafter\def\csname simpleicon@lucidicon\endcsname {\simpleiconsmap\symbol{"F051}}
- \expandafter\def\csname simpleicon@ludwigicon\endcsname {\simpleiconsmap\symbol{"F052}}
- \expandafter\def\csname simpleicon@lufthansaicon\endcsname {\simpleiconsmap\symbol{"F053}}
- \expandafter\def\csname simpleicon@lumenicon\endcsname {\simpleiconsmap\symbol{"F054}}
- \expandafter\def\csname simpleicon@lunacyicon\endcsname {\simpleiconsmap\symbol{"F055}}
- \expandafter\def\csname simpleicon@lutrisicon\endcsname {\simpleiconsmap\symbol{"F056}}
- \expandafter\def\csname simpleicon@lydiaicon\endcsname {\simpleiconsmap\symbol{"F057}}
- \expandafter\def\csname simpleicon@lyfticon\endcsname {\simpleiconsmap\symbol{"F058}}
- \expandafter\def\csname simpleicon@maasicon\endcsname {\simpleiconsmap\symbol{"F059}}
- \expandafter\def\csname simpleicon@macosicon\endcsname {\simpleiconsmap\symbol{"F05A}}
- \expandafter\def\csname simpleicon@macpawicon\endcsname {\simpleiconsmap\symbol{"F05B}}
- \expandafter\def\csname simpleicon@macysicon\endcsname {\simpleiconsmap\symbol{"F05C}}
- \expandafter\def\csname simpleicon@magasinsuicon\endcsname {\simpleiconsmap\symbol{"F05D}}
- \expandafter\def\csname simpleicon@magentoicon\endcsname {\simpleiconsmap\symbol{"F05E}}
- \expandafter\def\csname simpleicon@magicicon\endcsname {\simpleiconsmap\symbol{"F05F}}
- \expandafter\def\csname simpleicon@magiskicon\endcsname {\simpleiconsmap\symbol{"F060}}
- \expandafter\def\csname simpleicon@mahindraicon\endcsname {\simpleiconsmap\symbol{"F061}}
- \expandafter\def\csname simpleicon@mailchimpicon\endcsname {\simpleiconsmap\symbol{"F062}}
- \expandafter\def\csname simpleicon@maildotcomicon\endcsname {\simpleiconsmap\symbol{"F063}}
- \expandafter\def\csname simpleicon@maildotruicon\endcsname {\simpleiconsmap\symbol{"F064}}
- \expandafter\def\csname simpleicon@mailgunicon\endcsname {\simpleiconsmap\symbol{"F065}}
- \expandafter\def\csname simpleicon@mailtrapicon\endcsname {\simpleiconsmap\symbol{"F066}}
- \expandafter\def\csname simpleicon@mainwpicon\endcsname {\simpleiconsmap\symbol{"F067}}
- \expandafter\def\csname simpleicon@majorleaguehackingicon\endcsname {\simpleiconsmap\symbol{"F068}}
- \expandafter\def\csname simpleicon@makeicon\endcsname {\simpleiconsmap\symbol{"F069}}
- \expandafter\def\csname simpleicon@makerboticon\endcsname {\simpleiconsmap\symbol{"F06A}}
- \expandafter\def\csname simpleicon@malticon\endcsname {\simpleiconsmap\symbol{"F06B}}
- \expandafter\def\csname simpleicon@malwarebytesicon\endcsname {\simpleiconsmap\symbol{"F06C}}
- \expandafter\def\csname simpleicon@mambauiicon\endcsname {\simpleiconsmap\symbol{"F06D}}
- \expandafter\def\csname simpleicon@mampicon\endcsname {\simpleiconsmap\symbol{"F06E}}
- \expandafter\def\csname simpleicon@manicon\endcsname {\simpleiconsmap\symbol{"F06F}}
- \expandafter\def\csname simpleicon@manageiqicon\endcsname {\simpleiconsmap\symbol{"F070}}
- \expandafter\def\csname simpleicon@manjaroicon\endcsname {\simpleiconsmap\symbol{"F071}}
- \expandafter\def\csname simpleicon@mantineicon\endcsname {\simpleiconsmap\symbol{"F072}}
- \expandafter\def\csname simpleicon@mapboxicon\endcsname {\simpleiconsmap\symbol{"F073}}
- \expandafter\def\csname simpleicon@maplibreicon\endcsname {\simpleiconsmap\symbol{"F074}}
- \expandafter\def\csname simpleicon@mariadbicon\endcsname {\simpleiconsmap\symbol{"F075}}
- \expandafter\def\csname simpleicon@mariadbfoundationicon\endcsname {\simpleiconsmap\symbol{"F076}}
- \expandafter\def\csname simpleicon@markdownicon\endcsname {\simpleiconsmap\symbol{"F077}}
- \expandafter\def\csname simpleicon@marketoicon\endcsname {\simpleiconsmap\symbol{"F078}}
- \expandafter\def\csname simpleicon@markoicon\endcsname {\simpleiconsmap\symbol{"F079}}
- \expandafter\def\csname simpleicon@marriotticon\endcsname {\simpleiconsmap\symbol{"F07A}}
- \expandafter\def\csname simpleicon@marvelappicon\endcsname {\simpleiconsmap\symbol{"F07B}}
- \expandafter\def\csname simpleicon@maseratiicon\endcsname {\simpleiconsmap\symbol{"F07C}}
- \expandafter\def\csname simpleicon@mastercardicon\endcsname {\simpleiconsmap\symbol{"F07D}}
- \expandafter\def\csname simpleicon@mastercomfigicon\endcsname {\simpleiconsmap\symbol{"F07E}}
- \expandafter\def\csname simpleicon@mastodonicon\endcsname {\simpleiconsmap\symbol{"F07F}}
- \expandafter\def\csname simpleicon@materialdesignicon\endcsname {\simpleiconsmap\symbol{"F080}}
- \expandafter\def\csname simpleicon@materialdesigniconsicon\endcsname {\simpleiconsmap\symbol{"F081}}
- \expandafter\def\csname simpleicon@materialformkdocsicon\endcsname {\simpleiconsmap\symbol{"F082}}
- \expandafter\def\csname simpleicon@matillionicon\endcsname {\simpleiconsmap\symbol{"F083}}
- \expandafter\def\csname simpleicon@matomoicon\endcsname {\simpleiconsmap\symbol{"F084}}
- \expandafter\def\csname simpleicon@matrixicon\endcsname {\simpleiconsmap\symbol{"F085}}
- \expandafter\def\csname simpleicon@matterdotjsicon\endcsname {\simpleiconsmap\symbol{"F086}}
- \expandafter\def\csname simpleicon@mattermosticon\endcsname {\simpleiconsmap\symbol{"F087}}
- \expandafter\def\csname simpleicon@matterneticon\endcsname {\simpleiconsmap\symbol{"F088}}
- \expandafter\def\csname simpleicon@mauticicon\endcsname {\simpleiconsmap\symbol{"F089}}
- \expandafter\def\csname simpleicon@maxicon\endcsname {\simpleiconsmap\symbol{"F08A}}
- \expandafter\def\csname simpleicon@maxplanckgesellschafticon\endcsname {\simpleiconsmap\symbol{"F08B}}
- \expandafter\def\csname simpleicon@maytagicon\endcsname {\simpleiconsmap\symbol{"F08C}}
- \expandafter\def\csname simpleicon@mazdaicon\endcsname {\simpleiconsmap\symbol{"F08D}}
- \expandafter\def\csname simpleicon@mcafeeicon\endcsname {\simpleiconsmap\symbol{"F08E}}
- \expandafter\def\csname simpleicon@mcdonaldsicon\endcsname {\simpleiconsmap\symbol{"F08F}}
- \expandafter\def\csname simpleicon@mclarenicon\endcsname {\simpleiconsmap\symbol{"F090}}
- \expandafter\def\csname simpleicon@mdbookicon\endcsname {\simpleiconsmap\symbol{"F091}}
- \expandafter\def\csname simpleicon@mdnwebdocsicon\endcsname {\simpleiconsmap\symbol{"F092}}
- \expandafter\def\csname simpleicon@mdxicon\endcsname {\simpleiconsmap\symbol{"F093}}
- \expandafter\def\csname simpleicon@mediafireicon\endcsname {\simpleiconsmap\symbol{"F094}}
- \expandafter\def\csname simpleicon@mediamarkticon\endcsname {\simpleiconsmap\symbol{"F095}}
- \expandafter\def\csname simpleicon@mediatekicon\endcsname {\simpleiconsmap\symbol{"F096}}
- \expandafter\def\csname simpleicon@medibangpainticon\endcsname {\simpleiconsmap\symbol{"F097}}
- \expandafter\def\csname simpleicon@mediumicon\endcsname {\simpleiconsmap\symbol{"F098}}
- \expandafter\def\csname simpleicon@medusaicon\endcsname {\simpleiconsmap\symbol{"F099}}
- \expandafter\def\csname simpleicon@meetupicon\endcsname {\simpleiconsmap\symbol{"F09A}}
- \expandafter\def\csname simpleicon@megaicon\endcsname {\simpleiconsmap\symbol{"F09B}}
- \expandafter\def\csname simpleicon@meilisearchicon\endcsname {\simpleiconsmap\symbol{"F09C}}
- \expandafter\def\csname simpleicon@meituanicon\endcsname {\simpleiconsmap\symbol{"F09D}}
- \expandafter\def\csname simpleicon@meizuicon\endcsname {\simpleiconsmap\symbol{"F09E}}
- \expandafter\def\csname simpleicon@mendeleyicon\endcsname {\simpleiconsmap\symbol{"F09F}}
- \expandafter\def\csname simpleicon@mentorcruiseicon\endcsname {\simpleiconsmap\symbol{"F0A0}}
- \expandafter\def\csname simpleicon@mercadopagoicon\endcsname {\simpleiconsmap\symbol{"F0A1}}
- \expandafter\def\csname simpleicon@mercedesicon\endcsname {\simpleiconsmap\symbol{"F0A2}}
- \expandafter\def\csname simpleicon@merckicon\endcsname {\simpleiconsmap\symbol{"F0A3}}
- \expandafter\def\csname simpleicon@mercurialicon\endcsname {\simpleiconsmap\symbol{"F0A4}}
- \expandafter\def\csname simpleicon@mermaidicon\endcsname {\simpleiconsmap\symbol{"F0A5}}
- \expandafter\def\csname simpleicon@messengericon\endcsname {\simpleiconsmap\symbol{"F0A6}}
- \expandafter\def\csname simpleicon@metaicon\endcsname {\simpleiconsmap\symbol{"F0A7}}
- \expandafter\def\csname simpleicon@metabaseicon\endcsname {\simpleiconsmap\symbol{"F0A8}}
- \expandafter\def\csname simpleicon@metacriticicon\endcsname {\simpleiconsmap\symbol{"F0A9}}
- \expandafter\def\csname simpleicon@metafiltericon\endcsname {\simpleiconsmap\symbol{"F0AA}}
- \expandafter\def\csname simpleicon@metasploiticon\endcsname {\simpleiconsmap\symbol{"F0AB}}
- \expandafter\def\csname simpleicon@meteoricon\endcsname {\simpleiconsmap\symbol{"F0AC}}
- \expandafter\def\csname simpleicon@metroicon\endcsname {\simpleiconsmap\symbol{"F0AD}}
- \expandafter\def\csname simpleicon@metrodelaciudaddemexicoicon\endcsname {\simpleiconsmap\symbol{"F0AE}}
- \expandafter\def\csname simpleicon@metrodemadridicon\endcsname {\simpleiconsmap\symbol{"F0AF}}
- \expandafter\def\csname simpleicon@metrodeparisicon\endcsname {\simpleiconsmap\symbol{"F0B0}}
- \expandafter\def\csname simpleicon@meweicon\endcsname {\simpleiconsmap\symbol{"F0B1}}
- \expandafter\def\csname simpleicon@mgicon\endcsname {\simpleiconsmap\symbol{"F0B2}}
- \expandafter\def\csname simpleicon@microbiticon\endcsname {\simpleiconsmap\symbol{"F0B3}}
- \expandafter\def\csname simpleicon@microdotblogicon\endcsname {\simpleiconsmap\symbol{"F0B4}}
- \expandafter\def\csname simpleicon@microeditoricon\endcsname {\simpleiconsmap\symbol{"F0B5}}
- \expandafter\def\csname simpleicon@microgeneticsicon\endcsname {\simpleiconsmap\symbol{"F0B6}}
- \expandafter\def\csname simpleicon@micropythonicon\endcsname {\simpleiconsmap\symbol{"F0B7}}
- \expandafter\def\csname simpleicon@microstationicon\endcsname {\simpleiconsmap\symbol{"F0B8}}
- \expandafter\def\csname simpleicon@microstrategyicon\endcsname {\simpleiconsmap\symbol{"F0B9}}
- \expandafter\def\csname simpleicon@midiicon\endcsname {\simpleiconsmap\symbol{"F0BA}}
- \expandafter\def\csname simpleicon@migaduicon\endcsname {\simpleiconsmap\symbol{"F0BB}}
- \expandafter\def\csname simpleicon@mikrotikicon\endcsname {\simpleiconsmap\symbol{"F0BC}}
- \expandafter\def\csname simpleicon@milanoteicon\endcsname {\simpleiconsmap\symbol{"F0BD}}
- \expandafter\def\csname simpleicon@milvusicon\endcsname {\simpleiconsmap\symbol{"F0BE}}
- \expandafter\def\csname simpleicon@mindsicon\endcsname {\simpleiconsmap\symbol{"F0BF}}
- \expandafter\def\csname simpleicon@minetesticon\endcsname {\simpleiconsmap\symbol{"F0C0}}
- \expandafter\def\csname simpleicon@mingww64icon\endcsname {\simpleiconsmap\symbol{"F0C1}}
- \expandafter\def\csname simpleicon@miniicon\endcsname {\simpleiconsmap\symbol{"F0C2}}
- \expandafter\def\csname simpleicon@minioicon\endcsname {\simpleiconsmap\symbol{"F0C3}}
- \expandafter\def\csname simpleicon@mintlifyicon\endcsname {\simpleiconsmap\symbol{"F0C4}}
- \expandafter\def\csname simpleicon@minutemailericon\endcsname {\simpleiconsmap\symbol{"F0C5}}
- \expandafter\def\csname simpleicon@mirahezeicon\endcsname {\simpleiconsmap\symbol{"F0C6}}
- \expandafter\def\csname simpleicon@miroicon\endcsname {\simpleiconsmap\symbol{"F0C7}}
- \expandafter\def\csname simpleicon@misskeyicon\endcsname {\simpleiconsmap\symbol{"F0C8}}
- \expandafter\def\csname simpleicon@mitsubishiicon\endcsname {\simpleiconsmap\symbol{"F0C9}}
- \expandafter\def\csname simpleicon@mixicon\endcsname {\simpleiconsmap\symbol{"F0CA}}
- \expandafter\def\csname simpleicon@mixcloudicon\endcsname {\simpleiconsmap\symbol{"F0CB}}
- \expandafter\def\csname simpleicon@mixpanelicon\endcsname {\simpleiconsmap\symbol{"F0CC}}
- \expandafter\def\csname simpleicon@mlbicon\endcsname {\simpleiconsmap\symbol{"F0CD}}
- \expandafter\def\csname simpleicon@mlflowicon\endcsname {\simpleiconsmap\symbol{"F0CE}}
- \expandafter\def\csname simpleicon@mobxicon\endcsname {\simpleiconsmap\symbol{"F0CF}}
- \expandafter\def\csname simpleicon@mobxstatetreeicon\endcsname {\simpleiconsmap\symbol{"F0D0}}
- \expandafter\def\csname simpleicon@mochaicon\endcsname {\simpleiconsmap\symbol{"F0D1}}
- \expandafter\def\csname simpleicon@mockserviceworkericon\endcsname {\simpleiconsmap\symbol{"F0D2}}
- \expandafter\def\csname simpleicon@modalicon\endcsname {\simpleiconsmap\symbol{"F0D3}}
- \expandafter\def\csname simpleicon@modinicon\endcsname {\simpleiconsmap\symbol{"F0D4}}
- \expandafter\def\csname simpleicon@modrinthicon\endcsname {\simpleiconsmap\symbol{"F0D5}}
- \expandafter\def\csname simpleicon@modxicon\endcsname {\simpleiconsmap\symbol{"F0D6}}
- \expandafter\def\csname simpleicon@moleculericon\endcsname {\simpleiconsmap\symbol{"F0D7}}
- \expandafter\def\csname simpleicon@momenteoicon\endcsname {\simpleiconsmap\symbol{"F0D8}}
- \expandafter\def\csname simpleicon@moneroicon\endcsname {\simpleiconsmap\symbol{"F0D9}}
- \expandafter\def\csname simpleicon@moneygramicon\endcsname {\simpleiconsmap\symbol{"F0DA}}
- \expandafter\def\csname simpleicon@mongodbicon\endcsname {\simpleiconsmap\symbol{"F0DB}}
- \expandafter\def\csname simpleicon@mongooseicon\endcsname {\simpleiconsmap\symbol{"F0DC}}
- \expandafter\def\csname simpleicon@mongoosedotwsicon\endcsname {\simpleiconsmap\symbol{"F0DD}}
- \expandafter\def\csname simpleicon@monicaicon\endcsname {\simpleiconsmap\symbol{"F0DE}}
- \expandafter\def\csname simpleicon@monkeytieicon\endcsname {\simpleiconsmap\symbol{"F0DF}}
- \expandafter\def\csname simpleicon@monkeytypeicon\endcsname {\simpleiconsmap\symbol{"F0E0}}
- \expandafter\def\csname simpleicon@monogameicon\endcsname {\simpleiconsmap\symbol{"F0E1}}
- \expandafter\def\csname simpleicon@monoprixicon\endcsname {\simpleiconsmap\symbol{"F0E2}}
- \expandafter\def\csname simpleicon@monstericon\endcsname {\simpleiconsmap\symbol{"F0E3}}
- \expandafter\def\csname simpleicon@monzoicon\endcsname {\simpleiconsmap\symbol{"F0E4}}
- \expandafter\def\csname simpleicon@mooicon\endcsname {\simpleiconsmap\symbol{"F0E5}}
- \expandafter\def\csname simpleicon@moodleicon\endcsname {\simpleiconsmap\symbol{"F0E6}}
- \expandafter\def\csname simpleicon@moonrepoicon\endcsname {\simpleiconsmap\symbol{"F0E7}}
- \expandafter\def\csname simpleicon@moqicon\endcsname {\simpleiconsmap\symbol{"F0E8}}
- \expandafter\def\csname simpleicon@moqupsicon\endcsname {\simpleiconsmap\symbol{"F0E9}}
- \expandafter\def\csname simpleicon@morrisonsicon\endcsname {\simpleiconsmap\symbol{"F0EA}}
- \expandafter\def\csname simpleicon@moscowmetroicon\endcsname {\simpleiconsmap\symbol{"F0EB}}
- \expandafter\def\csname simpleicon@motorolaicon\endcsname {\simpleiconsmap\symbol{"F0EC}}
- \expandafter\def\csname simpleicon@mozillaicon\endcsname {\simpleiconsmap\symbol{"F0ED}}
- \expandafter\def\csname simpleicon@mpvicon\endcsname {\simpleiconsmap\symbol{"F0EE}}
- \expandafter\def\csname simpleicon@mqtticon\endcsname {\simpleiconsmap\symbol{"F0EF}}
- \expandafter\def\csname simpleicon@msiicon\endcsname {\simpleiconsmap\symbol{"F0F0}}
- \expandafter\def\csname simpleicon@msibusinessicon\endcsname {\simpleiconsmap\symbol{"F0F1}}
- \expandafter\def\csname simpleicon@mtaicon\endcsname {\simpleiconsmap\symbol{"F0F2}}
- \expandafter\def\csname simpleicon@mtricon\endcsname {\simpleiconsmap\symbol{"F0F3}}
- \expandafter\def\csname simpleicon@mubiicon\endcsname {\simpleiconsmap\symbol{"F0F4}}
- \expandafter\def\csname simpleicon@muiicon\endcsname {\simpleiconsmap\symbol{"F0F5}}
- \expandafter\def\csname simpleicon@mulesofticon\endcsname {\simpleiconsmap\symbol{"F0F6}}
- \expandafter\def\csname simpleicon@mullericon\endcsname {\simpleiconsmap\symbol{"F0F7}}
- \expandafter\def\csname simpleicon@multisimicon\endcsname {\simpleiconsmap\symbol{"F0F8}}
- \expandafter\def\csname simpleicon@mumbleicon\endcsname {\simpleiconsmap\symbol{"F0F9}}
- \expandafter\def\csname simpleicon@muoicon\endcsname {\simpleiconsmap\symbol{"F0FA}}
- \expandafter\def\csname simpleicon@muralicon\endcsname {\simpleiconsmap\symbol{"F0FB}}
- \expandafter\def\csname simpleicon@musescoreicon\endcsname {\simpleiconsmap\symbol{"F0FC}}
- \expandafter\def\csname simpleicon@musicbrainzicon\endcsname {\simpleiconsmap\symbol{"F0FD}}
- \expandafter\def\csname simpleicon@mxlinuxicon\endcsname {\simpleiconsmap\symbol{"F0FE}}
- \expandafter\def\csname simpleicon@myanimelisticon\endcsname {\simpleiconsmap\symbol{"F0FF}}
- \expandafter\def\csname simpleicon@mygeticon\endcsname {\simpleiconsmap\symbol{"F100}}
- \expandafter\def\csname simpleicon@myobicon\endcsname {\simpleiconsmap\symbol{"F101}}
- \expandafter\def\csname simpleicon@myspaceicon\endcsname {\simpleiconsmap\symbol{"F102}}
- \expandafter\def\csname simpleicon@mysqlicon\endcsname {\simpleiconsmap\symbol{"F103}}
- \expandafter\def\csname simpleicon@n26icon\endcsname {\simpleiconsmap\symbol{"F104}}
- \expandafter\def\csname simpleicon@n8nicon\endcsname {\simpleiconsmap\symbol{"F105}}
- \expandafter\def\csname simpleicon@namebaseicon\endcsname {\simpleiconsmap\symbol{"F106}}
- \expandafter\def\csname simpleicon@namecheapicon\endcsname {\simpleiconsmap\symbol{"F107}}
- \expandafter\def\csname simpleicon@namemcicon\endcsname {\simpleiconsmap\symbol{"F108}}
- \expandafter\def\csname simpleicon@namesiloicon\endcsname {\simpleiconsmap\symbol{"F109}}
- \expandafter\def\csname simpleicon@namuwikiicon\endcsname {\simpleiconsmap\symbol{"F10A}}
- \expandafter\def\csname simpleicon@nanoicon\endcsname {\simpleiconsmap\symbol{"F10B}}
- \expandafter\def\csname simpleicon@nasaicon\endcsname {\simpleiconsmap\symbol{"F10C}}
- \expandafter\def\csname simpleicon@nationalgridicon\endcsname {\simpleiconsmap\symbol{"F10D}}
- \expandafter\def\csname simpleicon@nationalrailicon\endcsname {\simpleiconsmap\symbol{"F10E}}
- \expandafter\def\csname simpleicon@nativescripticon\endcsname {\simpleiconsmap\symbol{"F10F}}
- \expandafter\def\csname simpleicon@natsdotioicon\endcsname {\simpleiconsmap\symbol{"F110}}
- \expandafter\def\csname simpleicon@navericon\endcsname {\simpleiconsmap\symbol{"F111}}
- \expandafter\def\csname simpleicon@nbaicon\endcsname {\simpleiconsmap\symbol{"F112}}
- \expandafter\def\csname simpleicon@nbbicon\endcsname {\simpleiconsmap\symbol{"F113}}
- \expandafter\def\csname simpleicon@nbcicon\endcsname {\simpleiconsmap\symbol{"F114}}
- \expandafter\def\csname simpleicon@ndricon\endcsname {\simpleiconsmap\symbol{"F115}}
- \expandafter\def\csname simpleicon@nearicon\endcsname {\simpleiconsmap\symbol{"F116}}
- \expandafter\def\csname simpleicon@necicon\endcsname {\simpleiconsmap\symbol{"F117}}
- \expandafter\def\csname simpleicon@neo4jicon\endcsname {\simpleiconsmap\symbol{"F118}}
- \expandafter\def\csname simpleicon@neovimicon\endcsname {\simpleiconsmap\symbol{"F119}}
- \expandafter\def\csname simpleicon@neptuneicon\endcsname {\simpleiconsmap\symbol{"F11A}}
- \expandafter\def\csname simpleicon@nestjsicon\endcsname {\simpleiconsmap\symbol{"F11B}}
- \expandafter\def\csname simpleicon@netappicon\endcsname {\simpleiconsmap\symbol{"F11C}}
- \expandafter\def\csname simpleicon@netbsdicon\endcsname {\simpleiconsmap\symbol{"F11D}}
- \expandafter\def\csname simpleicon@netcupicon\endcsname {\simpleiconsmap\symbol{"F11E}}
- \expandafter\def\csname simpleicon@netdataicon\endcsname {\simpleiconsmap\symbol{"F11F}}
- \expandafter\def\csname simpleicon@neteasecloudmusicicon\endcsname {\simpleiconsmap\symbol{"F120}}
- \expandafter\def\csname simpleicon@netflixicon\endcsname {\simpleiconsmap\symbol{"F121}}
- \expandafter\def\csname simpleicon@netgearicon\endcsname {\simpleiconsmap\symbol{"F122}}
- \expandafter\def\csname simpleicon@netlifyicon\endcsname {\simpleiconsmap\symbol{"F123}}
- \expandafter\def\csname simpleicon@netteicon\endcsname {\simpleiconsmap\symbol{"F124}}
- \expandafter\def\csname simpleicon@nettoicon\endcsname {\simpleiconsmap\symbol{"F125}}
- \expandafter\def\csname simpleicon@neutralinojsicon\endcsname {\simpleiconsmap\symbol{"F126}}
- \expandafter\def\csname simpleicon@newbalanceicon\endcsname {\simpleiconsmap\symbol{"F127}}
- \expandafter\def\csname simpleicon@neweggicon\endcsname {\simpleiconsmap\symbol{"F128}}
- \expandafter\def\csname simpleicon@newjapanprowrestlingicon\endcsname {\simpleiconsmap\symbol{"F129}}
- \expandafter\def\csname simpleicon@newrelicicon\endcsname {\simpleiconsmap\symbol{"F12A}}
- \expandafter\def\csname simpleicon@newyorktimesicon\endcsname {\simpleiconsmap\symbol{"F12B}}
- \expandafter\def\csname simpleicon@nextbilliondotaiicon\endcsname {\simpleiconsmap\symbol{"F12C}}
- \expandafter\def\csname simpleicon@nextcloudicon\endcsname {\simpleiconsmap\symbol{"F12D}}
- \expandafter\def\csname simpleicon@nextdnsicon\endcsname {\simpleiconsmap\symbol{"F12E}}
- \expandafter\def\csname simpleicon@nextdooricon\endcsname {\simpleiconsmap\symbol{"F12F}}
- \expandafter\def\csname simpleicon@nextdotjsicon\endcsname {\simpleiconsmap\symbol{"F130}}
- \expandafter\def\csname simpleicon@nextraicon\endcsname {\simpleiconsmap\symbol{"F131}}
- \expandafter\def\csname simpleicon@nextuiicon\endcsname {\simpleiconsmap\symbol{"F132}}
- \expandafter\def\csname simpleicon@nexusmodsicon\endcsname {\simpleiconsmap\symbol{"F133}}
- \expandafter\def\csname simpleicon@nfcicon\endcsname {\simpleiconsmap\symbol{"F134}}
- \expandafter\def\csname simpleicon@nginxicon\endcsname {\simpleiconsmap\symbol{"F135}}
- \expandafter\def\csname simpleicon@nginxproxymanagericon\endcsname {\simpleiconsmap\symbol{"F136}}
- \expandafter\def\csname simpleicon@ngrokicon\endcsname {\simpleiconsmap\symbol{"F137}}
- \expandafter\def\csname simpleicon@ngrxicon\endcsname {\simpleiconsmap\symbol{"F138}}
- \expandafter\def\csname simpleicon@nhlicon\endcsname {\simpleiconsmap\symbol{"F139}}
- \expandafter\def\csname simpleicon@nicehashicon\endcsname {\simpleiconsmap\symbol{"F13A}}
- \expandafter\def\csname simpleicon@niconicoicon\endcsname {\simpleiconsmap\symbol{"F13B}}
- \expandafter\def\csname simpleicon@nikeicon\endcsname {\simpleiconsmap\symbol{"F13C}}
- \expandafter\def\csname simpleicon@nikonicon\endcsname {\simpleiconsmap\symbol{"F13D}}
- \expandafter\def\csname simpleicon@nimicon\endcsname {\simpleiconsmap\symbol{"F13E}}
- \expandafter\def\csname simpleicon@nintendoicon\endcsname {\simpleiconsmap\symbol{"F13F}}
- \expandafter\def\csname simpleicon@nintendo3dsicon\endcsname {\simpleiconsmap\symbol{"F140}}
- \expandafter\def\csname simpleicon@nintendogamecubeicon\endcsname {\simpleiconsmap\symbol{"F141}}
- \expandafter\def\csname simpleicon@nintendoswitchicon\endcsname {\simpleiconsmap\symbol{"F142}}
- \expandafter\def\csname simpleicon@nissanicon\endcsname {\simpleiconsmap\symbol{"F143}}
- \expandafter\def\csname simpleicon@nixosicon\endcsname {\simpleiconsmap\symbol{"F144}}
- \expandafter\def\csname simpleicon@nodedotjsicon\endcsname {\simpleiconsmap\symbol{"F145}}
- \expandafter\def\csname simpleicon@nodemonicon\endcsname {\simpleiconsmap\symbol{"F146}}
- \expandafter\def\csname simpleicon@noderedicon\endcsname {\simpleiconsmap\symbol{"F147}}
- \expandafter\def\csname simpleicon@nokiaicon\endcsname {\simpleiconsmap\symbol{"F148}}
- \expandafter\def\csname simpleicon@nomadicon\endcsname {\simpleiconsmap\symbol{"F149}}
- \expandafter\def\csname simpleicon@norcoicon\endcsname {\simpleiconsmap\symbol{"F14A}}
- \expandafter\def\csname simpleicon@nordicsemiconductoricon\endcsname {\simpleiconsmap\symbol{"F14B}}
- \expandafter\def\csname simpleicon@nordvpnicon\endcsname {\simpleiconsmap\symbol{"F14C}}
- \expandafter\def\csname simpleicon@normalizedotcssicon\endcsname {\simpleiconsmap\symbol{"F14D}}
- \expandafter\def\csname simpleicon@nortonicon\endcsname {\simpleiconsmap\symbol{"F14E}}
- \expandafter\def\csname simpleicon@norwegianicon\endcsname {\simpleiconsmap\symbol{"F14F}}
- \expandafter\def\csname simpleicon@notepadplusplusicon\endcsname {\simpleiconsmap\symbol{"F150}}
- \expandafter\def\csname simpleicon@notionicon\endcsname {\simpleiconsmap\symbol{"F151}}
- \expandafter\def\csname simpleicon@notisticon\endcsname {\simpleiconsmap\symbol{"F152}}
- \expandafter\def\csname simpleicon@nounprojecticon\endcsname {\simpleiconsmap\symbol{"F153}}
- \expandafter\def\csname simpleicon@novuicon\endcsname {\simpleiconsmap\symbol{"F154}}
- \expandafter\def\csname simpleicon@nowicon\endcsname {\simpleiconsmap\symbol{"F155}}
- \expandafter\def\csname simpleicon@npmicon\endcsname {\simpleiconsmap\symbol{"F156}}
- \expandafter\def\csname simpleicon@nrwlicon\endcsname {\simpleiconsmap\symbol{"F157}}
- \expandafter\def\csname simpleicon@nsisicon\endcsname {\simpleiconsmap\symbol{"F158}}
- \expandafter\def\csname simpleicon@ntfyicon\endcsname {\simpleiconsmap\symbol{"F159}}
- \expandafter\def\csname simpleicon@nubankicon\endcsname {\simpleiconsmap\symbol{"F15A}}
- \expandafter\def\csname simpleicon@nucleoicon\endcsname {\simpleiconsmap\symbol{"F15B}}
- \expandafter\def\csname simpleicon@nugeticon\endcsname {\simpleiconsmap\symbol{"F15C}}
- \expandafter\def\csname simpleicon@nukeicon\endcsname {\simpleiconsmap\symbol{"F15D}}
- \expandafter\def\csname simpleicon@numbaicon\endcsname {\simpleiconsmap\symbol{"F15E}}
- \expandafter\def\csname simpleicon@numpyicon\endcsname {\simpleiconsmap\symbol{"F15F}}
- \expandafter\def\csname simpleicon@nunjucksicon\endcsname {\simpleiconsmap\symbol{"F160}}
- \expandafter\def\csname simpleicon@nushellicon\endcsname {\simpleiconsmap\symbol{"F161}}
- \expandafter\def\csname simpleicon@nutanixicon\endcsname {\simpleiconsmap\symbol{"F162}}
- \expandafter\def\csname simpleicon@nuxtdotjsicon\endcsname {\simpleiconsmap\symbol{"F163}}
- \expandafter\def\csname simpleicon@nvidiaicon\endcsname {\simpleiconsmap\symbol{"F164}}
- \expandafter\def\csname simpleicon@nvmicon\endcsname {\simpleiconsmap\symbol{"F165}}
- \expandafter\def\csname simpleicon@nxicon\endcsname {\simpleiconsmap\symbol{"F166}}
- \expandafter\def\csname simpleicon@nxpicon\endcsname {\simpleiconsmap\symbol{"F167}}
- \expandafter\def\csname simpleicon@nzxticon\endcsname {\simpleiconsmap\symbol{"F168}}
- \expandafter\def\csname simpleicon@observableicon\endcsname {\simpleiconsmap\symbol{"F169}}
- \expandafter\def\csname simpleicon@obsidianicon\endcsname {\simpleiconsmap\symbol{"F16A}}
- \expandafter\def\csname simpleicon@obsstudioicon\endcsname {\simpleiconsmap\symbol{"F16B}}
- \expandafter\def\csname simpleicon@ocamlicon\endcsname {\simpleiconsmap\symbol{"F16C}}
- \expandafter\def\csname simpleicon@oclificon\endcsname {\simpleiconsmap\symbol{"F16D}}
- \expandafter\def\csname simpleicon@octanerendericon\endcsname {\simpleiconsmap\symbol{"F16E}}
- \expandafter\def\csname simpleicon@octaveicon\endcsname {\simpleiconsmap\symbol{"F16F}}
- \expandafter\def\csname simpleicon@octobercmsicon\endcsname {\simpleiconsmap\symbol{"F170}}
- \expandafter\def\csname simpleicon@octoprinticon\endcsname {\simpleiconsmap\symbol{"F171}}
- \expandafter\def\csname simpleicon@octopusdeployicon\endcsname {\simpleiconsmap\symbol{"F172}}
- \expandafter\def\csname simpleicon@oculusicon\endcsname {\simpleiconsmap\symbol{"F173}}
- \expandafter\def\csname simpleicon@odnoklassnikiicon\endcsname {\simpleiconsmap\symbol{"F174}}
- \expandafter\def\csname simpleicon@odooicon\endcsname {\simpleiconsmap\symbol{"F175}}
- \expandafter\def\csname simpleicon@odyseeicon\endcsname {\simpleiconsmap\symbol{"F176}}
- \expandafter\def\csname simpleicon@ohdearicon\endcsname {\simpleiconsmap\symbol{"F177}}
- \expandafter\def\csname simpleicon@okcupidicon\endcsname {\simpleiconsmap\symbol{"F178}}
- \expandafter\def\csname simpleicon@oktaicon\endcsname {\simpleiconsmap\symbol{"F179}}
- \expandafter\def\csname simpleicon@ollamaicon\endcsname {\simpleiconsmap\symbol{"F17A}}
- \expandafter\def\csname simpleicon@oneplusicon\endcsname {\simpleiconsmap\symbol{"F17B}}
- \expandafter\def\csname simpleicon@onlyfansicon\endcsname {\simpleiconsmap\symbol{"F17C}}
- \expandafter\def\csname simpleicon@onlyofficeicon\endcsname {\simpleiconsmap\symbol{"F17D}}
- \expandafter\def\csname simpleicon@onnxicon\endcsname {\simpleiconsmap\symbol{"F17E}}
- \expandafter\def\csname simpleicon@onstaricon\endcsname {\simpleiconsmap\symbol{"F17F}}
- \expandafter\def\csname simpleicon@opelicon\endcsname {\simpleiconsmap\symbol{"F180}}
- \expandafter\def\csname simpleicon@openaccessicon\endcsname {\simpleiconsmap\symbol{"F181}}
- \expandafter\def\csname simpleicon@openaiicon\endcsname {\simpleiconsmap\symbol{"F182}}
- \expandafter\def\csname simpleicon@openaigymicon\endcsname {\simpleiconsmap\symbol{"F183}}
- \expandafter\def\csname simpleicon@openapiinitiativeicon\endcsname {\simpleiconsmap\symbol{"F184}}
- \expandafter\def\csname simpleicon@openbadgesicon\endcsname {\simpleiconsmap\symbol{"F185}}
- \expandafter\def\csname simpleicon@openbsdicon\endcsname {\simpleiconsmap\symbol{"F186}}
- \expandafter\def\csname simpleicon@openbugbountyicon\endcsname {\simpleiconsmap\symbol{"F187}}
- \expandafter\def\csname simpleicon@opencollectiveicon\endcsname {\simpleiconsmap\symbol{"F188}}
- \expandafter\def\csname simpleicon@opencontainersinitiativeicon\endcsname {\simpleiconsmap\symbol{"F189}}
- \expandafter\def\csname simpleicon@opencvicon\endcsname {\simpleiconsmap\symbol{"F18A}}
- \expandafter\def\csname simpleicon@openfaasicon\endcsname {\simpleiconsmap\symbol{"F18B}}
- \expandafter\def\csname simpleicon@openglicon\endcsname {\simpleiconsmap\symbol{"F18C}}
- \expandafter\def\csname simpleicon@openhabicon\endcsname {\simpleiconsmap\symbol{"F18D}}
- \expandafter\def\csname simpleicon@openidicon\endcsname {\simpleiconsmap\symbol{"F18E}}
- \expandafter\def\csname simpleicon@openjdkicon\endcsname {\simpleiconsmap\symbol{"F18F}}
- \expandafter\def\csname simpleicon@openjsfoundationicon\endcsname {\simpleiconsmap\symbol{"F190}}
- \expandafter\def\csname simpleicon@openlayersicon\endcsname {\simpleiconsmap\symbol{"F191}}
- \expandafter\def\csname simpleicon@openmediavaulticon\endcsname {\simpleiconsmap\symbol{"F192}}
- \expandafter\def\csname simpleicon@openminedicon\endcsname {\simpleiconsmap\symbol{"F193}}
- \expandafter\def\csname simpleicon@opennebulaicon\endcsname {\simpleiconsmap\symbol{"F194}}
- \expandafter\def\csname simpleicon@openprojecticon\endcsname {\simpleiconsmap\symbol{"F195}}
- \expandafter\def\csname simpleicon@openscadicon\endcsname {\simpleiconsmap\symbol{"F196}}
- \expandafter\def\csname simpleicon@openseaicon\endcsname {\simpleiconsmap\symbol{"F197}}
- \expandafter\def\csname simpleicon@opensearchicon\endcsname {\simpleiconsmap\symbol{"F198}}
- \expandafter\def\csname simpleicon@opensourcehardwareicon\endcsname {\simpleiconsmap\symbol{"F199}}
- \expandafter\def\csname simpleicon@opensourceinitiativeicon\endcsname {\simpleiconsmap\symbol{"F19A}}
- \expandafter\def\csname simpleicon@opensslicon\endcsname {\simpleiconsmap\symbol{"F19B}}
- \expandafter\def\csname simpleicon@openstackicon\endcsname {\simpleiconsmap\symbol{"F19C}}
- \expandafter\def\csname simpleicon@openstreetmapicon\endcsname {\simpleiconsmap\symbol{"F19D}}
- \expandafter\def\csname simpleicon@opensuseicon\endcsname {\simpleiconsmap\symbol{"F19E}}
- \expandafter\def\csname simpleicon@opentelemetryicon\endcsname {\simpleiconsmap\symbol{"F19F}}
- \expandafter\def\csname simpleicon@opentexticon\endcsname {\simpleiconsmap\symbol{"F1A0}}
- \expandafter\def\csname simpleicon@opentofuicon\endcsname {\simpleiconsmap\symbol{"F1A1}}
- \expandafter\def\csname simpleicon@openverseicon\endcsname {\simpleiconsmap\symbol{"F1A2}}
- \expandafter\def\csname simpleicon@openvpnicon\endcsname {\simpleiconsmap\symbol{"F1A3}}
- \expandafter\def\csname simpleicon@openwrticon\endcsname {\simpleiconsmap\symbol{"F1A4}}
- \expandafter\def\csname simpleicon@openzeppelinicon\endcsname {\simpleiconsmap\symbol{"F1A5}}
- \expandafter\def\csname simpleicon@openzfsicon\endcsname {\simpleiconsmap\symbol{"F1A6}}
- \expandafter\def\csname simpleicon@operaicon\endcsname {\simpleiconsmap\symbol{"F1A7}}
- \expandafter\def\csname simpleicon@operagxicon\endcsname {\simpleiconsmap\symbol{"F1A8}}
- \expandafter\def\csname simpleicon@opnsenseicon\endcsname {\simpleiconsmap\symbol{"F1A9}}
- \expandafter\def\csname simpleicon@oppoicon\endcsname {\simpleiconsmap\symbol{"F1AA}}
- \expandafter\def\csname simpleicon@opsgenieicon\endcsname {\simpleiconsmap\symbol{"F1AB}}
- \expandafter\def\csname simpleicon@opslevelicon\endcsname {\simpleiconsmap\symbol{"F1AC}}
- \expandafter\def\csname simpleicon@optimismicon\endcsname {\simpleiconsmap\symbol{"F1AD}}
- \expandafter\def\csname simpleicon@oracleicon\endcsname {\simpleiconsmap\symbol{"F1AE}}
- \expandafter\def\csname simpleicon@orangeicon\endcsname {\simpleiconsmap\symbol{"F1AF}}
- \expandafter\def\csname simpleicon@orcidicon\endcsname {\simpleiconsmap\symbol{"F1B0}}
- \expandafter\def\csname simpleicon@oreillyicon\endcsname {\simpleiconsmap\symbol{"F1B1}}
- \expandafter\def\csname simpleicon@orgicon\endcsname {\simpleiconsmap\symbol{"F1B2}}
- \expandafter\def\csname simpleicon@organicmapsicon\endcsname {\simpleiconsmap\symbol{"F1B3}}
- \expandafter\def\csname simpleicon@originicon\endcsname {\simpleiconsmap\symbol{"F1B4}}
- \expandafter\def\csname simpleicon@osanoicon\endcsname {\simpleiconsmap\symbol{"F1B5}}
- \expandafter\def\csname simpleicon@osficon\endcsname {\simpleiconsmap\symbol{"F1B6}}
- \expandafter\def\csname simpleicon@osgeoicon\endcsname {\simpleiconsmap\symbol{"F1B7}}
- \expandafter\def\csname simpleicon@oshkoshicon\endcsname {\simpleiconsmap\symbol{"F1B8}}
- \expandafter\def\csname simpleicon@osmcicon\endcsname {\simpleiconsmap\symbol{"F1B9}}
- \expandafter\def\csname simpleicon@osuicon\endcsname {\simpleiconsmap\symbol{"F1BA}}
- \expandafter\def\csname simpleicon@ottoicon\endcsname {\simpleiconsmap\symbol{"F1BB}}
- \expandafter\def\csname simpleicon@outlineicon\endcsname {\simpleiconsmap\symbol{"F1BC}}
- \expandafter\def\csname simpleicon@overcasticon\endcsname {\simpleiconsmap\symbol{"F1BD}}
- \expandafter\def\csname simpleicon@overleaficon\endcsname {\simpleiconsmap\symbol{"F1BE}}
- \expandafter\def\csname simpleicon@ovhicon\endcsname {\simpleiconsmap\symbol{"F1BF}}
- \expandafter\def\csname simpleicon@owaspicon\endcsname {\simpleiconsmap\symbol{"F1C0}}
- \expandafter\def\csname simpleicon@owncloudicon\endcsname {\simpleiconsmap\symbol{"F1C1}}
- \expandafter\def\csname simpleicon@oxygenicon\endcsname {\simpleiconsmap\symbol{"F1C2}}
- \expandafter\def\csname simpleicon@oyoicon\endcsname {\simpleiconsmap\symbol{"F1C3}}
- \expandafter\def\csname simpleicon@p5dotjsicon\endcsname {\simpleiconsmap\symbol{"F1C4}}
- \expandafter\def\csname simpleicon@packagisticon\endcsname {\simpleiconsmap\symbol{"F1C5}}
- \expandafter\def\csname simpleicon@packericon\endcsname {\simpleiconsmap\symbol{"F1C6}}
- \expandafter\def\csname simpleicon@packticon\endcsname {\simpleiconsmap\symbol{"F1C7}}
- \expandafter\def\csname simpleicon@paddleicon\endcsname {\simpleiconsmap\symbol{"F1C8}}
- \expandafter\def\csname simpleicon@paddlepaddleicon\endcsname {\simpleiconsmap\symbol{"F1C9}}
- \expandafter\def\csname simpleicon@paddypowericon\endcsname {\simpleiconsmap\symbol{"F1CA}}
- \expandafter\def\csname simpleicon@pagekiticon\endcsname {\simpleiconsmap\symbol{"F1CB}}
- \expandafter\def\csname simpleicon@pagerdutyicon\endcsname {\simpleiconsmap\symbol{"F1CC}}
- \expandafter\def\csname simpleicon@pagespeedinsightsicon\endcsname {\simpleiconsmap\symbol{"F1CD}}
- \expandafter\def\csname simpleicon@pagseguroicon\endcsname {\simpleiconsmap\symbol{"F1CE}}
- \expandafter\def\csname simpleicon@palantiricon\endcsname {\simpleiconsmap\symbol{"F1CF}}
- \expandafter\def\csname simpleicon@paloaltonetworksicon\endcsname {\simpleiconsmap\symbol{"F1D0}}
- \expandafter\def\csname simpleicon@paloaltosoftwareicon\endcsname {\simpleiconsmap\symbol{"F1D1}}
- \expandafter\def\csname simpleicon@panasonicicon\endcsname {\simpleiconsmap\symbol{"F1D2}}
- \expandafter\def\csname simpleicon@pandasicon\endcsname {\simpleiconsmap\symbol{"F1D3}}
- \expandafter\def\csname simpleicon@pandoraicon\endcsname {\simpleiconsmap\symbol{"F1D4}}
- \expandafter\def\csname simpleicon@pantheonicon\endcsname {\simpleiconsmap\symbol{"F1D5}}
- \expandafter\def\csname simpleicon@paperlessngxicon\endcsname {\simpleiconsmap\symbol{"F1D6}}
- \expandafter\def\csname simpleicon@paperspaceicon\endcsname {\simpleiconsmap\symbol{"F1D7}}
- \expandafter\def\csname simpleicon@paperswithcodeicon\endcsname {\simpleiconsmap\symbol{"F1D8}}
- \expandafter\def\csname simpleicon@paramountplusicon\endcsname {\simpleiconsmap\symbol{"F1D9}}
- \expandafter\def\csname simpleicon@paritysubstrateicon\endcsname {\simpleiconsmap\symbol{"F1DA}}
- \expandafter\def\csname simpleicon@parrotsecurityicon\endcsname {\simpleiconsmap\symbol{"F1DB}}
- \expandafter\def\csname simpleicon@parsedotlyicon\endcsname {\simpleiconsmap\symbol{"F1DC}}
- \expandafter\def\csname simpleicon@passporticon\endcsname {\simpleiconsmap\symbol{"F1DD}}
- \expandafter\def\csname simpleicon@pastebinicon\endcsname {\simpleiconsmap\symbol{"F1DE}}
- \expandafter\def\csname simpleicon@patreonicon\endcsname {\simpleiconsmap\symbol{"F1DF}}
- \expandafter\def\csname simpleicon@paychexicon\endcsname {\simpleiconsmap\symbol{"F1E0}}
- \expandafter\def\csname simpleicon@payhipicon\endcsname {\simpleiconsmap\symbol{"F1E1}}
- \expandafter\def\csname simpleicon@payloadcmsicon\endcsname {\simpleiconsmap\symbol{"F1E2}}
- \expandafter\def\csname simpleicon@payoneericon\endcsname {\simpleiconsmap\symbol{"F1E3}}
- \expandafter\def\csname simpleicon@paypalicon\endcsname {\simpleiconsmap\symbol{"F1E4}}
- \expandafter\def\csname simpleicon@paytmicon\endcsname {\simpleiconsmap\symbol{"F1E5}}
- \expandafter\def\csname simpleicon@pcgamingwikiicon\endcsname {\simpleiconsmap\symbol{"F1E6}}
- \expandafter\def\csname simpleicon@pdmicon\endcsname {\simpleiconsmap\symbol{"F1E7}}
- \expandafter\def\csname simpleicon@pdqicon\endcsname {\simpleiconsmap\symbol{"F1E8}}
- \expandafter\def\csname simpleicon@peakdesignicon\endcsname {\simpleiconsmap\symbol{"F1E9}}
- \expandafter\def\csname simpleicon@pearsonicon\endcsname {\simpleiconsmap\symbol{"F1EA}}
- \expandafter\def\csname simpleicon@peerlisticon\endcsname {\simpleiconsmap\symbol{"F1EB}}
- \expandafter\def\csname simpleicon@peertubeicon\endcsname {\simpleiconsmap\symbol{"F1EC}}
- \expandafter\def\csname simpleicon@pegasusairlinesicon\endcsname {\simpleiconsmap\symbol{"F1ED}}
- \expandafter\def\csname simpleicon@pelicanicon\endcsname {\simpleiconsmap\symbol{"F1EE}}
- \expandafter\def\csname simpleicon@pelotonicon\endcsname {\simpleiconsmap\symbol{"F1EF}}
- \expandafter\def\csname simpleicon@pennyicon\endcsname {\simpleiconsmap\symbol{"F1F0}}
- \expandafter\def\csname simpleicon@penpoticon\endcsname {\simpleiconsmap\symbol{"F1F1}}
- \expandafter\def\csname simpleicon@percyicon\endcsname {\simpleiconsmap\symbol{"F1F2}}
- \expandafter\def\csname simpleicon@perforceicon\endcsname {\simpleiconsmap\symbol{"F1F3}}
- \expandafter\def\csname simpleicon@perlicon\endcsname {\simpleiconsmap\symbol{"F1F4}}
- \expandafter\def\csname simpleicon@perplexityicon\endcsname {\simpleiconsmap\symbol{"F1F5}}
- \expandafter\def\csname simpleicon@persistenticon\endcsname {\simpleiconsmap\symbol{"F1F6}}
- \expandafter\def\csname simpleicon@personioicon\endcsname {\simpleiconsmap\symbol{"F1F7}}
- \expandafter\def\csname simpleicon@petsathomeicon\endcsname {\simpleiconsmap\symbol{"F1F8}}
- \expandafter\def\csname simpleicon@peugeoticon\endcsname {\simpleiconsmap\symbol{"F1F9}}
- \expandafter\def\csname simpleicon@pexelsicon\endcsname {\simpleiconsmap\symbol{"F1FA}}
- \expandafter\def\csname simpleicon@pfsenseicon\endcsname {\simpleiconsmap\symbol{"F1FB}}
- \expandafter\def\csname simpleicon@phabricatoricon\endcsname {\simpleiconsmap\symbol{"F1FC}}
- \expandafter\def\csname simpleicon@philipshueicon\endcsname {\simpleiconsmap\symbol{"F1FD}}
- \expandafter\def\csname simpleicon@phoenixframeworkicon\endcsname {\simpleiconsmap\symbol{"F1FE}}
- \expandafter\def\csname simpleicon@phonepeicon\endcsname {\simpleiconsmap\symbol{"F1FF}}
- \expandafter\def\csname simpleicon@phosphoriconsicon\endcsname {\simpleiconsmap\symbol{"F200}}
- \expandafter\def\csname simpleicon@photobucketicon\endcsname {\simpleiconsmap\symbol{"F201}}
- \expandafter\def\csname simpleicon@photocrowdicon\endcsname {\simpleiconsmap\symbol{"F202}}
- \expandafter\def\csname simpleicon@photonicon\endcsname {\simpleiconsmap\symbol{"F203}}
- \expandafter\def\csname simpleicon@photopeaicon\endcsname {\simpleiconsmap\symbol{"F204}}
- \expandafter\def\csname simpleicon@phpicon\endcsname {\simpleiconsmap\symbol{"F205}}
- \expandafter\def\csname simpleicon@phpmyadminicon\endcsname {\simpleiconsmap\symbol{"F206}}
- \expandafter\def\csname simpleicon@phpstormicon\endcsname {\simpleiconsmap\symbol{"F207}}
- \expandafter\def\csname simpleicon@piaggiogroupicon\endcsname {\simpleiconsmap\symbol{"F208}}
- \expandafter\def\csname simpleicon@piaproicon\endcsname {\simpleiconsmap\symbol{"F209}}
- \expandafter\def\csname simpleicon@picardsurgelesicon\endcsname {\simpleiconsmap\symbol{"F20A}}
- \expandafter\def\csname simpleicon@picartodottvicon\endcsname {\simpleiconsmap\symbol{"F20B}}
- \expandafter\def\csname simpleicon@picnicicon\endcsname {\simpleiconsmap\symbol{"F20C}}
- \expandafter\def\csname simpleicon@picpayicon\endcsname {\simpleiconsmap\symbol{"F20D}}
- \expandafter\def\csname simpleicon@picrewicon\endcsname {\simpleiconsmap\symbol{"F20E}}
- \expandafter\def\csname simpleicon@picxyicon\endcsname {\simpleiconsmap\symbol{"F20F}}
- \expandafter\def\csname simpleicon@piholeicon\endcsname {\simpleiconsmap\symbol{"F210}}
- \expandafter\def\csname simpleicon@pimcoreicon\endcsname {\simpleiconsmap\symbol{"F211}}
- \expandafter\def\csname simpleicon@pinboardicon\endcsname {\simpleiconsmap\symbol{"F212}}
- \expandafter\def\csname simpleicon@pinescripticon\endcsname {\simpleiconsmap\symbol{"F213}}
- \expandafter\def\csname simpleicon@pinetworkicon\endcsname {\simpleiconsmap\symbol{"F214}}
- \expandafter\def\csname simpleicon@pingdomicon\endcsname {\simpleiconsmap\symbol{"F215}}
- \expandafter\def\csname simpleicon@pinoicon\endcsname {\simpleiconsmap\symbol{"F216}}
- \expandafter\def\csname simpleicon@pinteresticon\endcsname {\simpleiconsmap\symbol{"F217}}
- \expandafter\def\csname simpleicon@pioneerdjicon\endcsname {\simpleiconsmap\symbol{"F218}}
- \expandafter\def\csname simpleicon@pipedicon\endcsname {\simpleiconsmap\symbol{"F219}}
- \expandafter\def\csname simpleicon@pipxicon\endcsname {\simpleiconsmap\symbol{"F21A}}
- \expandafter\def\csname simpleicon@pivotaltrackericon\endcsname {\simpleiconsmap\symbol{"F21B}}
- \expandafter\def\csname simpleicon@piwigoicon\endcsname {\simpleiconsmap\symbol{"F21C}}
- \expandafter\def\csname simpleicon@pixicon\endcsname {\simpleiconsmap\symbol{"F21D}}
- \expandafter\def\csname simpleicon@pixabayicon\endcsname {\simpleiconsmap\symbol{"F21E}}
- \expandafter\def\csname simpleicon@pixelfedicon\endcsname {\simpleiconsmap\symbol{"F21F}}
- \expandafter\def\csname simpleicon@pixivicon\endcsname {\simpleiconsmap\symbol{"F220}}
- \expandafter\def\csname simpleicon@pixlricon\endcsname {\simpleiconsmap\symbol{"F221}}
- \expandafter\def\csname simpleicon@pkgsrcicon\endcsname {\simpleiconsmap\symbol{"F222}}
- \expandafter\def\csname simpleicon@planeticon\endcsname {\simpleiconsmap\symbol{"F223}}
- \expandafter\def\csname simpleicon@planetscaleicon\endcsname {\simpleiconsmap\symbol{"F224}}
- \expandafter\def\csname simpleicon@plangridicon\endcsname {\simpleiconsmap\symbol{"F225}}
- \expandafter\def\csname simpleicon@platformdotshicon\endcsname {\simpleiconsmap\symbol{"F226}}
- \expandafter\def\csname simpleicon@platformioicon\endcsname {\simpleiconsmap\symbol{"F227}}
- \expandafter\def\csname simpleicon@platziicon\endcsname {\simpleiconsmap\symbol{"F228}}
- \expandafter\def\csname simpleicon@plausibleanalyticsicon\endcsname {\simpleiconsmap\symbol{"F229}}
- \expandafter\def\csname simpleicon@playcanvasicon\endcsname {\simpleiconsmap\symbol{"F22A}}
- \expandafter\def\csname simpleicon@playerdotmeicon\endcsname {\simpleiconsmap\symbol{"F22B}}
- \expandafter\def\csname simpleicon@playerfmicon\endcsname {\simpleiconsmap\symbol{"F22C}}
- \expandafter\def\csname simpleicon@playstationicon\endcsname {\simpleiconsmap\symbol{"F22D}}
- \expandafter\def\csname simpleicon@playstation2icon\endcsname {\simpleiconsmap\symbol{"F22E}}
- \expandafter\def\csname simpleicon@playstation3icon\endcsname {\simpleiconsmap\symbol{"F22F}}
- \expandafter\def\csname simpleicon@playstation4icon\endcsname {\simpleiconsmap\symbol{"F230}}
- \expandafter\def\csname simpleicon@playstation5icon\endcsname {\simpleiconsmap\symbol{"F231}}
- \expandafter\def\csname simpleicon@playstationportableicon\endcsname {\simpleiconsmap\symbol{"F232}}
- \expandafter\def\csname simpleicon@playstationvitaicon\endcsname {\simpleiconsmap\symbol{"F233}}
- \expandafter\def\csname simpleicon@pleromaicon\endcsname {\simpleiconsmap\symbol{"F234}}
- \expandafter\def\csname simpleicon@pleskicon\endcsname {\simpleiconsmap\symbol{"F235}}
- \expandafter\def\csname simpleicon@plexicon\endcsname {\simpleiconsmap\symbol{"F236}}
- \expandafter\def\csname simpleicon@plotlyicon\endcsname {\simpleiconsmap\symbol{"F237}}
- \expandafter\def\csname simpleicon@plumeicon\endcsname {\simpleiconsmap\symbol{"F238}}
- \expandafter\def\csname simpleicon@pluralsighticon\endcsname {\simpleiconsmap\symbol{"F239}}
- \expandafter\def\csname simpleicon@plurkicon\endcsname {\simpleiconsmap\symbol{"F23A}}
- \expandafter\def\csname simpleicon@pluscodesicon\endcsname {\simpleiconsmap\symbol{"F23B}}
- \expandafter\def\csname simpleicon@pm2icon\endcsname {\simpleiconsmap\symbol{"F23C}}
- \expandafter\def\csname simpleicon@pnpmicon\endcsname {\simpleiconsmap\symbol{"F23D}}
- \expandafter\def\csname simpleicon@pocketicon\endcsname {\simpleiconsmap\symbol{"F23E}}
- \expandafter\def\csname simpleicon@pocketbaseicon\endcsname {\simpleiconsmap\symbol{"F23F}}
- \expandafter\def\csname simpleicon@pocketcastsicon\endcsname {\simpleiconsmap\symbol{"F240}}
- \expandafter\def\csname simpleicon@podcastaddicticon\endcsname {\simpleiconsmap\symbol{"F241}}
- \expandafter\def\csname simpleicon@podcastindexicon\endcsname {\simpleiconsmap\symbol{"F242}}
- \expandafter\def\csname simpleicon@podmanicon\endcsname {\simpleiconsmap\symbol{"F243}}
- \expandafter\def\csname simpleicon@poeicon\endcsname {\simpleiconsmap\symbol{"F244}}
- \expandafter\def\csname simpleicon@poetryicon\endcsname {\simpleiconsmap\symbol{"F245}}
- \expandafter\def\csname simpleicon@pointyicon\endcsname {\simpleiconsmap\symbol{"F246}}
- \expandafter\def\csname simpleicon@pokemonicon\endcsname {\simpleiconsmap\symbol{"F247}}
- \expandafter\def\csname simpleicon@polarsicon\endcsname {\simpleiconsmap\symbol{"F248}}
- \expandafter\def\csname simpleicon@polestaricon\endcsname {\simpleiconsmap\symbol{"F249}}
- \expandafter\def\csname simpleicon@polkadoticon\endcsname {\simpleiconsmap\symbol{"F24A}}
- \expandafter\def\csname simpleicon@polyicon\endcsname {\simpleiconsmap\symbol{"F24B}}
- \expandafter\def\csname simpleicon@polygonicon\endcsname {\simpleiconsmap\symbol{"F24C}}
- \expandafter\def\csname simpleicon@polymerprojecticon\endcsname {\simpleiconsmap\symbol{"F24D}}
- \expandafter\def\csname simpleicon@polyworkicon\endcsname {\simpleiconsmap\symbol{"F24E}}
- \expandafter\def\csname simpleicon@pond5icon\endcsname {\simpleiconsmap\symbol{"F24F}}
- \expandafter\def\csname simpleicon@poposicon\endcsname {\simpleiconsmap\symbol{"F250}}
- \expandafter\def\csname simpleicon@porkbunicon\endcsname {\simpleiconsmap\symbol{"F251}}
- \expandafter\def\csname simpleicon@porscheicon\endcsname {\simpleiconsmap\symbol{"F252}}
- \expandafter\def\csname simpleicon@portainericon\endcsname {\simpleiconsmap\symbol{"F253}}
- \expandafter\def\csname simpleicon@portswiggericon\endcsname {\simpleiconsmap\symbol{"F254}}
- \expandafter\def\csname simpleicon@positicon\endcsname {\simpleiconsmap\symbol{"F255}}
- \expandafter\def\csname simpleicon@postcssicon\endcsname {\simpleiconsmap\symbol{"F256}}
- \expandafter\def\csname simpleicon@postgresqlicon\endcsname {\simpleiconsmap\symbol{"F257}}
- \expandafter\def\csname simpleicon@posthogicon\endcsname {\simpleiconsmap\symbol{"F258}}
- \expandafter\def\csname simpleicon@postmanicon\endcsname {\simpleiconsmap\symbol{"F259}}
- \expandafter\def\csname simpleicon@postmatesicon\endcsname {\simpleiconsmap\symbol{"F25A}}
- \expandafter\def\csname simpleicon@powersicon\endcsname {\simpleiconsmap\symbol{"F25B}}
- \expandafter\def\csname simpleicon@prdotcoicon\endcsname {\simpleiconsmap\symbol{"F25C}}
- \expandafter\def\csname simpleicon@preacticon\endcsname {\simpleiconsmap\symbol{"F25D}}
- \expandafter\def\csname simpleicon@precommiticon\endcsname {\simpleiconsmap\symbol{"F25E}}
- \expandafter\def\csname simpleicon@prefecticon\endcsname {\simpleiconsmap\symbol{"F25F}}
- \expandafter\def\csname simpleicon@premierleagueicon\endcsname {\simpleiconsmap\symbol{"F260}}
- \expandafter\def\csname simpleicon@prepbytesicon\endcsname {\simpleiconsmap\symbol{"F261}}
- \expandafter\def\csname simpleicon@prestashopicon\endcsname {\simpleiconsmap\symbol{"F262}}
- \expandafter\def\csname simpleicon@prestoicon\endcsname {\simpleiconsmap\symbol{"F263}}
- \expandafter\def\csname simpleicon@prettiericon\endcsname {\simpleiconsmap\symbol{"F264}}
- \expandafter\def\csname simpleicon@pretzelicon\endcsname {\simpleiconsmap\symbol{"F265}}
- \expandafter\def\csname simpleicon@preventionicon\endcsname {\simpleiconsmap\symbol{"F266}}
- \expandafter\def\csname simpleicon@preziicon\endcsname {\simpleiconsmap\symbol{"F267}}
- \expandafter\def\csname simpleicon@primeicon\endcsname {\simpleiconsmap\symbol{"F268}}
- \expandafter\def\csname simpleicon@primengicon\endcsname {\simpleiconsmap\symbol{"F269}}
- \expandafter\def\csname simpleicon@primereacticon\endcsname {\simpleiconsmap\symbol{"F26A}}
- \expandafter\def\csname simpleicon@primevideoicon\endcsname {\simpleiconsmap\symbol{"F26B}}
- \expandafter\def\csname simpleicon@printablesicon\endcsname {\simpleiconsmap\symbol{"F26C}}
- \expandafter\def\csname simpleicon@prismaicon\endcsname {\simpleiconsmap\symbol{"F26D}}
- \expandafter\def\csname simpleicon@prismicicon\endcsname {\simpleiconsmap\symbol{"F26E}}
- \expandafter\def\csname simpleicon@privatedivisionicon\endcsname {\simpleiconsmap\symbol{"F26F}}
- \expandafter\def\csname simpleicon@privateinternetaccessicon\endcsname {\simpleiconsmap\symbol{"F270}}
- \expandafter\def\csname simpleicon@proboticon\endcsname {\simpleiconsmap\symbol{"F271}}
- \expandafter\def\csname simpleicon@processingfoundationicon\endcsname {\simpleiconsmap\symbol{"F272}}
- \expandafter\def\csname simpleicon@processwireicon\endcsname {\simpleiconsmap\symbol{"F273}}
- \expandafter\def\csname simpleicon@producthunticon\endcsname {\simpleiconsmap\symbol{"F274}}
- \expandafter\def\csname simpleicon@progateicon\endcsname {\simpleiconsmap\symbol{"F275}}
- \expandafter\def\csname simpleicon@progressicon\endcsname {\simpleiconsmap\symbol{"F276}}
- \expandafter\def\csname simpleicon@prometheusicon\endcsname {\simpleiconsmap\symbol{"F277}}
- \expandafter\def\csname simpleicon@pronounsdotpageicon\endcsname {\simpleiconsmap\symbol{"F278}}
- \expandafter\def\csname simpleicon@prosiebenicon\endcsname {\simpleiconsmap\symbol{"F279}}
- \expandafter\def\csname simpleicon@proteusicon\endcsname {\simpleiconsmap\symbol{"F27A}}
- \expandafter\def\csname simpleicon@protocolsdotioicon\endcsname {\simpleiconsmap\symbol{"F27B}}
- \expandafter\def\csname simpleicon@protodotioicon\endcsname {\simpleiconsmap\symbol{"F27C}}
- \expandafter\def\csname simpleicon@protonicon\endcsname {\simpleiconsmap\symbol{"F27D}}
- \expandafter\def\csname simpleicon@protoncalendaricon\endcsname {\simpleiconsmap\symbol{"F27E}}
- \expandafter\def\csname simpleicon@protondbicon\endcsname {\simpleiconsmap\symbol{"F27F}}
- \expandafter\def\csname simpleicon@protondriveicon\endcsname {\simpleiconsmap\symbol{"F280}}
- \expandafter\def\csname simpleicon@protonmailicon\endcsname {\simpleiconsmap\symbol{"F281}}
- \expandafter\def\csname simpleicon@protonvpnicon\endcsname {\simpleiconsmap\symbol{"F282}}
- \expandafter\def\csname simpleicon@protoolsicon\endcsname {\simpleiconsmap\symbol{"F283}}
- \expandafter\def\csname simpleicon@protractoricon\endcsname {\simpleiconsmap\symbol{"F284}}
- \expandafter\def\csname simpleicon@proxmoxicon\endcsname {\simpleiconsmap\symbol{"F285}}
- \expandafter\def\csname simpleicon@pterodactylicon\endcsname {\simpleiconsmap\symbol{"F286}}
- \expandafter\def\csname simpleicon@pubgicon\endcsname {\simpleiconsmap\symbol{"F287}}
- \expandafter\def\csname simpleicon@publonsicon\endcsname {\simpleiconsmap\symbol{"F288}}
- \expandafter\def\csname simpleicon@pubmedicon\endcsname {\simpleiconsmap\symbol{"F289}}
- \expandafter\def\csname simpleicon@pugicon\endcsname {\simpleiconsmap\symbol{"F28A}}
- \expandafter\def\csname simpleicon@pulumiicon\endcsname {\simpleiconsmap\symbol{"F28B}}
- \expandafter\def\csname simpleicon@pumaicon\endcsname {\simpleiconsmap\symbol{"F28C}}
- \expandafter\def\csname simpleicon@puppeticon\endcsname {\simpleiconsmap\symbol{"F28D}}
- \expandafter\def\csname simpleicon@puppeteericon\endcsname {\simpleiconsmap\symbol{"F28E}}
- \expandafter\def\csname simpleicon@purescripticon\endcsname {\simpleiconsmap\symbol{"F28F}}
- \expandafter\def\csname simpleicon@purgecssicon\endcsname {\simpleiconsmap\symbol{"F290}}
- \expandafter\def\csname simpleicon@purismicon\endcsname {\simpleiconsmap\symbol{"F291}}
- \expandafter\def\csname simpleicon@pushbulleticon\endcsname {\simpleiconsmap\symbol{"F292}}
- \expandafter\def\csname simpleicon@pushericon\endcsname {\simpleiconsmap\symbol{"F293}}
- \expandafter\def\csname simpleicon@pwaicon\endcsname {\simpleiconsmap\symbol{"F294}}
- \expandafter\def\csname simpleicon@pycharmicon\endcsname {\simpleiconsmap\symbol{"F295}}
- \expandafter\def\csname simpleicon@pycqaicon\endcsname {\simpleiconsmap\symbol{"F296}}
- \expandafter\def\csname simpleicon@pydanticicon\endcsname {\simpleiconsmap\symbol{"F297}}
- \expandafter\def\csname simpleicon@pygicon\endcsname {\simpleiconsmap\symbol{"F298}}
- \expandafter\def\csname simpleicon@pypiicon\endcsname {\simpleiconsmap\symbol{"F299}}
- \expandafter\def\csname simpleicon@pypyicon\endcsname {\simpleiconsmap\symbol{"F29A}}
- \expandafter\def\csname simpleicon@pyscaffoldicon\endcsname {\simpleiconsmap\symbol{"F29B}}
- \expandafter\def\csname simpleicon@pysyfticon\endcsname {\simpleiconsmap\symbol{"F29C}}
- \expandafter\def\csname simpleicon@pytesticon\endcsname {\simpleiconsmap\symbol{"F29D}}
- \expandafter\def\csname simpleicon@pythonicon\endcsname {\simpleiconsmap\symbol{"F29E}}
- \expandafter\def\csname simpleicon@pythonanywhereicon\endcsname {\simpleiconsmap\symbol{"F29F}}
- \expandafter\def\csname simpleicon@pytorchicon\endcsname {\simpleiconsmap\symbol{"F2A0}}
- \expandafter\def\csname simpleicon@pyupicon\endcsname {\simpleiconsmap\symbol{"F2A1}}
- \expandafter\def\csname simpleicon@qantasicon\endcsname {\simpleiconsmap\symbol{"F2A2}}
- \expandafter\def\csname simpleicon@qaseicon\endcsname {\simpleiconsmap\symbol{"F2A3}}
- \expandafter\def\csname simpleicon@qatarairwaysicon\endcsname {\simpleiconsmap\symbol{"F2A4}}
- \expandafter\def\csname simpleicon@qbittorrenticon\endcsname {\simpleiconsmap\symbol{"F2A5}}
- \expandafter\def\csname simpleicon@qemuicon\endcsname {\simpleiconsmap\symbol{"F2A6}}
- \expandafter\def\csname simpleicon@qgisicon\endcsname {\simpleiconsmap\symbol{"F2A7}}
- \expandafter\def\csname simpleicon@qiicon\endcsname {\simpleiconsmap\symbol{"F2A8}}
- \expandafter\def\csname simpleicon@qiitaicon\endcsname {\simpleiconsmap\symbol{"F2A9}}
- \expandafter\def\csname simpleicon@qiskiticon\endcsname {\simpleiconsmap\symbol{"F2AA}}
- \expandafter\def\csname simpleicon@qiwiicon\endcsname {\simpleiconsmap\symbol{"F2AB}}
- \expandafter\def\csname simpleicon@qlikicon\endcsname {\simpleiconsmap\symbol{"F2AC}}
- \expandafter\def\csname simpleicon@qmkicon\endcsname {\simpleiconsmap\symbol{"F2AD}}
- \expandafter\def\csname simpleicon@qnapicon\endcsname {\simpleiconsmap\symbol{"F2AE}}
- \expandafter\def\csname simpleicon@qticon\endcsname {\simpleiconsmap\symbol{"F2AF}}
- \expandafter\def\csname simpleicon@qualcommicon\endcsname {\simpleiconsmap\symbol{"F2B0}}
- \expandafter\def\csname simpleicon@qualtricsicon\endcsname {\simpleiconsmap\symbol{"F2B1}}
- \expandafter\def\csname simpleicon@qualysicon\endcsname {\simpleiconsmap\symbol{"F2B2}}
- \expandafter\def\csname simpleicon@quantcasticon\endcsname {\simpleiconsmap\symbol{"F2B3}}
- \expandafter\def\csname simpleicon@quantconnecticon\endcsname {\simpleiconsmap\symbol{"F2B4}}
- \expandafter\def\csname simpleicon@quarkusicon\endcsname {\simpleiconsmap\symbol{"F2B5}}
- \expandafter\def\csname simpleicon@quartoicon\endcsname {\simpleiconsmap\symbol{"F2B6}}
- \expandafter\def\csname simpleicon@quasaricon\endcsname {\simpleiconsmap\symbol{"F2B7}}
- \expandafter\def\csname simpleicon@qubesosicon\endcsname {\simpleiconsmap\symbol{"F2B8}}
- \expandafter\def\csname simpleicon@questicon\endcsname {\simpleiconsmap\symbol{"F2B9}}
- \expandafter\def\csname simpleicon@quickbooksicon\endcsname {\simpleiconsmap\symbol{"F2BA}}
- \expandafter\def\csname simpleicon@quicklookicon\endcsname {\simpleiconsmap\symbol{"F2BB}}
- \expandafter\def\csname simpleicon@quicktimeicon\endcsname {\simpleiconsmap\symbol{"F2BC}}
- \expandafter\def\csname simpleicon@quicktypeicon\endcsname {\simpleiconsmap\symbol{"F2BD}}
- \expandafter\def\csname simpleicon@quipicon\endcsname {\simpleiconsmap\symbol{"F2BE}}
- \expandafter\def\csname simpleicon@quizleticon\endcsname {\simpleiconsmap\symbol{"F2BF}}
- \expandafter\def\csname simpleicon@quoraicon\endcsname {\simpleiconsmap\symbol{"F2C0}}
- \expandafter\def\csname simpleicon@qwanticon\endcsname {\simpleiconsmap\symbol{"F2C1}}
- \expandafter\def\csname simpleicon@qwikicon\endcsname {\simpleiconsmap\symbol{"F2C2}}
- \expandafter\def\csname simpleicon@qwiklabsicon\endcsname {\simpleiconsmap\symbol{"F2C3}}
- \expandafter\def\csname simpleicon@qzoneicon\endcsname {\simpleiconsmap\symbol{"F2C4}}
- \expandafter\def\csname simpleicon@ricon\endcsname {\simpleiconsmap\symbol{"F2C5}}
- \expandafter\def\csname simpleicon@r3icon\endcsname {\simpleiconsmap\symbol{"F2C6}}
- \expandafter\def\csname simpleicon@rabbitmqicon\endcsname {\simpleiconsmap\symbol{"F2C7}}
- \expandafter\def\csname simpleicon@racketicon\endcsname {\simpleiconsmap\symbol{"F2C8}}
- \expandafter\def\csname simpleicon@radaricon\endcsname {\simpleiconsmap\symbol{"F2C9}}
- \expandafter\def\csname simpleicon@radarricon\endcsname {\simpleiconsmap\symbol{"F2CA}}
- \expandafter\def\csname simpleicon@radiopublicicon\endcsname {\simpleiconsmap\symbol{"F2CB}}
- \expandafter\def\csname simpleicon@radixuiicon\endcsname {\simpleiconsmap\symbol{"F2CC}}
- \expandafter\def\csname simpleicon@radstudioicon\endcsname {\simpleiconsmap\symbol{"F2CD}}
- \expandafter\def\csname simpleicon@railwayicon\endcsname {\simpleiconsmap\symbol{"F2CE}}
- \expandafter\def\csname simpleicon@rainmetericon\endcsname {\simpleiconsmap\symbol{"F2CF}}
- \expandafter\def\csname simpleicon@rakutenicon\endcsname {\simpleiconsmap\symbol{"F2D0}}
- \expandafter\def\csname simpleicon@ramicon\endcsname {\simpleiconsmap\symbol{"F2D1}}
- \expandafter\def\csname simpleicon@ranchericon\endcsname {\simpleiconsmap\symbol{"F2D2}}
- \expandafter\def\csname simpleicon@rapidicon\endcsname {\simpleiconsmap\symbol{"F2D3}}
- \expandafter\def\csname simpleicon@raribleicon\endcsname {\simpleiconsmap\symbol{"F2D4}}
- \expandafter\def\csname simpleicon@rasaicon\endcsname {\simpleiconsmap\symbol{"F2D5}}
- \expandafter\def\csname simpleicon@raspberrypiicon\endcsname {\simpleiconsmap\symbol{"F2D6}}
- \expandafter\def\csname simpleicon@ravelryicon\endcsname {\simpleiconsmap\symbol{"F2D7}}
- \expandafter\def\csname simpleicon@rayicon\endcsname {\simpleiconsmap\symbol{"F2D8}}
- \expandafter\def\csname simpleicon@raycasticon\endcsname {\simpleiconsmap\symbol{"F2D9}}
- \expandafter\def\csname simpleicon@raylibicon\endcsname {\simpleiconsmap\symbol{"F2DA}}
- \expandafter\def\csname simpleicon@razericon\endcsname {\simpleiconsmap\symbol{"F2DB}}
- \expandafter\def\csname simpleicon@razorpayicon\endcsname {\simpleiconsmap\symbol{"F2DC}}
- \expandafter\def\csname simpleicon@rcloneicon\endcsname {\simpleiconsmap\symbol{"F2DD}}
- \expandafter\def\csname simpleicon@reacticon\endcsname {\simpleiconsmap\symbol{"F2DE}}
- \expandafter\def\csname simpleicon@reactbootstrapicon\endcsname {\simpleiconsmap\symbol{"F2DF}}
- \expandafter\def\csname simpleicon@reacthookformicon\endcsname {\simpleiconsmap\symbol{"F2E0}}
- \expandafter\def\csname simpleicon@reactiveresumeicon\endcsname {\simpleiconsmap\symbol{"F2E1}}
- \expandafter\def\csname simpleicon@reactivexicon\endcsname {\simpleiconsmap\symbol{"F2E2}}
- \expandafter\def\csname simpleicon@reactosicon\endcsname {\simpleiconsmap\symbol{"F2E3}}
- \expandafter\def\csname simpleicon@reactqueryicon\endcsname {\simpleiconsmap\symbol{"F2E4}}
- \expandafter\def\csname simpleicon@reactroutericon\endcsname {\simpleiconsmap\symbol{"F2E5}}
- \expandafter\def\csname simpleicon@reacttableicon\endcsname {\simpleiconsmap\symbol{"F2E6}}
- \expandafter\def\csname simpleicon@readdotcvicon\endcsname {\simpleiconsmap\symbol{"F2E7}}
- \expandafter\def\csname simpleicon@readmeicon\endcsname {\simpleiconsmap\symbol{"F2E8}}
- \expandafter\def\csname simpleicon@readthedocsicon\endcsname {\simpleiconsmap\symbol{"F2E9}}
- \expandafter\def\csname simpleicon@realmicon\endcsname {\simpleiconsmap\symbol{"F2EA}}
- \expandafter\def\csname simpleicon@reasonicon\endcsname {\simpleiconsmap\symbol{"F2EB}}
- \expandafter\def\csname simpleicon@reasonstudiosicon\endcsname {\simpleiconsmap\symbol{"F2EC}}
- \expandafter\def\csname simpleicon@recoilicon\endcsname {\simpleiconsmap\symbol{"F2ED}}
- \expandafter\def\csname simpleicon@redicon\endcsname {\simpleiconsmap\symbol{"F2EE}}
- \expandafter\def\csname simpleicon@redashicon\endcsname {\simpleiconsmap\symbol{"F2EF}}
- \expandafter\def\csname simpleicon@redbubbleicon\endcsname {\simpleiconsmap\symbol{"F2F0}}
- \expandafter\def\csname simpleicon@redbullicon\endcsname {\simpleiconsmap\symbol{"F2F1}}
- \expandafter\def\csname simpleicon@redditicon\endcsname {\simpleiconsmap\symbol{"F2F2}}
- \expandafter\def\csname simpleicon@redhaticon\endcsname {\simpleiconsmap\symbol{"F2F3}}
- \expandafter\def\csname simpleicon@redhatopenshifticon\endcsname {\simpleiconsmap\symbol{"F2F4}}
- \expandafter\def\csname simpleicon@redisicon\endcsname {\simpleiconsmap\symbol{"F2F5}}
- \expandafter\def\csname simpleicon@redmineicon\endcsname {\simpleiconsmap\symbol{"F2F6}}
- \expandafter\def\csname simpleicon@redoxicon\endcsname {\simpleiconsmap\symbol{"F2F7}}
- \expandafter\def\csname simpleicon@redragonicon\endcsname {\simpleiconsmap\symbol{"F2F8}}
- \expandafter\def\csname simpleicon@redsysicon\endcsname {\simpleiconsmap\symbol{"F2F9}}
- \expandafter\def\csname simpleicon@reduxicon\endcsname {\simpleiconsmap\symbol{"F2FA}}
- \expandafter\def\csname simpleicon@reduxsagaicon\endcsname {\simpleiconsmap\symbol{"F2FB}}
- \expandafter\def\csname simpleicon@redwoodjsicon\endcsname {\simpleiconsmap\symbol{"F2FC}}
- \expandafter\def\csname simpleicon@reebokicon\endcsname {\simpleiconsmap\symbol{"F2FD}}
- \expandafter\def\csname simpleicon@refineicon\endcsname {\simpleiconsmap\symbol{"F2FE}}
- \expandafter\def\csname simpleicon@relayicon\endcsname {\simpleiconsmap\symbol{"F2FF}}
- \expandafter\def\csname simpleicon@relianceindustrieslimitedicon\endcsname {\simpleiconsmap\symbol{"F300}}
- \expandafter\def\csname simpleicon@remarkicon\endcsname {\simpleiconsmap\symbol{"F301}}
- \expandafter\def\csname simpleicon@remedyentertainmenticon\endcsname {\simpleiconsmap\symbol{"F302}}
- \expandafter\def\csname simpleicon@remixicon\endcsname {\simpleiconsmap\symbol{"F303}}
- \expandafter\def\csname simpleicon@removedotbgicon\endcsname {\simpleiconsmap\symbol{"F304}}
- \expandafter\def\csname simpleicon@renaulticon\endcsname {\simpleiconsmap\symbol{"F305}}
- \expandafter\def\csname simpleicon@rendericon\endcsname {\simpleiconsmap\symbol{"F306}}
- \expandafter\def\csname simpleicon@renovateicon\endcsname {\simpleiconsmap\symbol{"F307}}
- \expandafter\def\csname simpleicon@renpyicon\endcsname {\simpleiconsmap\symbol{"F308}}
- \expandafter\def\csname simpleicon@renrenicon\endcsname {\simpleiconsmap\symbol{"F309}}
- \expandafter\def\csname simpleicon@repliticon\endcsname {\simpleiconsmap\symbol{"F30A}}
- \expandafter\def\csname simpleicon@republicofgamersicon\endcsname {\simpleiconsmap\symbol{"F30B}}
- \expandafter\def\csname simpleicon@rescripticon\endcsname {\simpleiconsmap\symbol{"F30C}}
- \expandafter\def\csname simpleicon@rescuetimeicon\endcsname {\simpleiconsmap\symbol{"F30D}}
- \expandafter\def\csname simpleicon@researchgateicon\endcsname {\simpleiconsmap\symbol{"F30E}}
- \expandafter\def\csname simpleicon@resendicon\endcsname {\simpleiconsmap\symbol{"F30F}}
- \expandafter\def\csname simpleicon@resharpericon\endcsname {\simpleiconsmap\symbol{"F310}}
- \expandafter\def\csname simpleicon@resurrectionremixosicon\endcsname {\simpleiconsmap\symbol{"F311}}
- \expandafter\def\csname simpleicon@retoolicon\endcsname {\simpleiconsmap\symbol{"F312}}
- \expandafter\def\csname simpleicon@retroarchicon\endcsname {\simpleiconsmap\symbol{"F313}}
- \expandafter\def\csname simpleicon@retropieicon\endcsname {\simpleiconsmap\symbol{"F314}}
- \expandafter\def\csname simpleicon@revancedicon\endcsname {\simpleiconsmap\symbol{"F315}}
- \expandafter\def\csname simpleicon@revealdotjsicon\endcsname {\simpleiconsmap\symbol{"F316}}
- \expandafter\def\csname simpleicon@reverbnationicon\endcsname {\simpleiconsmap\symbol{"F317}}
- \expandafter\def\csname simpleicon@revoltdotchaticon\endcsname {\simpleiconsmap\symbol{"F318}}
- \expandafter\def\csname simpleicon@revoluticon\endcsname {\simpleiconsmap\symbol{"F319}}
- \expandafter\def\csname simpleicon@revueicon\endcsname {\simpleiconsmap\symbol{"F31A}}
- \expandafter\def\csname simpleicon@reweicon\endcsname {\simpleiconsmap\symbol{"F31B}}
- \expandafter\def\csname simpleicon@rezgoicon\endcsname {\simpleiconsmap\symbol{"F31C}}
- \expandafter\def\csname simpleicon@rhinocerosicon\endcsname {\simpleiconsmap\symbol{"F31D}}
- \expandafter\def\csname simpleicon@richicon\endcsname {\simpleiconsmap\symbol{"F31E}}
- \expandafter\def\csname simpleicon@ridericon\endcsname {\simpleiconsmap\symbol{"F31F}}
- \expandafter\def\csname simpleicon@rimacautomobiliicon\endcsname {\simpleiconsmap\symbol{"F320}}
- \expandafter\def\csname simpleicon@rimeicon\endcsname {\simpleiconsmap\symbol{"F321}}
- \expandafter\def\csname simpleicon@ringicon\endcsname {\simpleiconsmap\symbol{"F322}}
- \expandafter\def\csname simpleicon@riotgamesicon\endcsname {\simpleiconsmap\symbol{"F323}}
- \expandafter\def\csname simpleicon@rippleicon\endcsname {\simpleiconsmap\symbol{"F324}}
- \expandafter\def\csname simpleicon@riscvicon\endcsname {\simpleiconsmap\symbol{"F325}}
- \expandafter\def\csname simpleicon@riseupicon\endcsname {\simpleiconsmap\symbol{"F326}}
- \expandafter\def\csname simpleicon@ritzcarltonicon\endcsname {\simpleiconsmap\symbol{"F327}}
- \expandafter\def\csname simpleicon@riveicon\endcsname {\simpleiconsmap\symbol{"F328}}
- \expandafter\def\csname simpleicon@roadmapdotshicon\endcsname {\simpleiconsmap\symbol{"F329}}
- \expandafter\def\csname simpleicon@roamresearchicon\endcsname {\simpleiconsmap\symbol{"F32A}}
- \expandafter\def\csname simpleicon@robinhoodicon\endcsname {\simpleiconsmap\symbol{"F32B}}
- \expandafter\def\csname simpleicon@robloxicon\endcsname {\simpleiconsmap\symbol{"F32C}}
- \expandafter\def\csname simpleicon@robloxstudioicon\endcsname {\simpleiconsmap\symbol{"F32D}}
- \expandafter\def\csname simpleicon@robotframeworkicon\endcsname {\simpleiconsmap\symbol{"F32E}}
- \expandafter\def\csname simpleicon@rocketicon\endcsname {\simpleiconsmap\symbol{"F32F}}
- \expandafter\def\csname simpleicon@rocketdotchaticon\endcsname {\simpleiconsmap\symbol{"F330}}
- \expandafter\def\csname simpleicon@rocksdbicon\endcsname {\simpleiconsmap\symbol{"F331}}
- \expandafter\def\csname simpleicon@rockstargamesicon\endcsname {\simpleiconsmap\symbol{"F332}}
- \expandafter\def\csname simpleicon@rockwellautomationicon\endcsname {\simpleiconsmap\symbol{"F333}}
- \expandafter\def\csname simpleicon@rockylinuxicon\endcsname {\simpleiconsmap\symbol{"F334}}
- \expandafter\def\csname simpleicon@rokuicon\endcsname {\simpleiconsmap\symbol{"F335}}
- \expandafter\def\csname simpleicon@roll20icon\endcsname {\simpleiconsmap\symbol{"F336}}
- \expandafter\def\csname simpleicon@rollsroyceicon\endcsname {\simpleiconsmap\symbol{"F337}}
- \expandafter\def\csname simpleicon@rollupdotjsicon\endcsname {\simpleiconsmap\symbol{"F338}}
- \expandafter\def\csname simpleicon@roonicon\endcsname {\simpleiconsmap\symbol{"F339}}
- \expandafter\def\csname simpleicon@rootmeicon\endcsname {\simpleiconsmap\symbol{"F33A}}
- \expandafter\def\csname simpleicon@rootsicon\endcsname {\simpleiconsmap\symbol{"F33B}}
- \expandafter\def\csname simpleicon@rootsbedrockicon\endcsname {\simpleiconsmap\symbol{"F33C}}
- \expandafter\def\csname simpleicon@rootssageicon\endcsname {\simpleiconsmap\symbol{"F33D}}
- \expandafter\def\csname simpleicon@rosicon\endcsname {\simpleiconsmap\symbol{"F33E}}
- \expandafter\def\csname simpleicon@rossmannicon\endcsname {\simpleiconsmap\symbol{"F33F}}
- \expandafter\def\csname simpleicon@rotaryinternationalicon\endcsname {\simpleiconsmap\symbol{"F340}}
- \expandafter\def\csname simpleicon@rottentomatoesicon\endcsname {\simpleiconsmap\symbol{"F341}}
- \expandafter\def\csname simpleicon@roundcubeicon\endcsname {\simpleiconsmap\symbol{"F342}}
- \expandafter\def\csname simpleicon@rsocketicon\endcsname {\simpleiconsmap\symbol{"F343}}
- \expandafter\def\csname simpleicon@rssicon\endcsname {\simpleiconsmap\symbol{"F344}}
- \expandafter\def\csname simpleicon@rstudioideicon\endcsname {\simpleiconsmap\symbol{"F345}}
- \expandafter\def\csname simpleicon@rteicon\endcsname {\simpleiconsmap\symbol{"F346}}
- \expandafter\def\csname simpleicon@rtlicon\endcsname {\simpleiconsmap\symbol{"F347}}
- \expandafter\def\csname simpleicon@rtlzweiicon\endcsname {\simpleiconsmap\symbol{"F348}}
- \expandafter\def\csname simpleicon@rtmicon\endcsname {\simpleiconsmap\symbol{"F349}}
- \expandafter\def\csname simpleicon@rubocopicon\endcsname {\simpleiconsmap\symbol{"F34A}}
- \expandafter\def\csname simpleicon@rubyicon\endcsname {\simpleiconsmap\symbol{"F34B}}
- \expandafter\def\csname simpleicon@rubygemsicon\endcsname {\simpleiconsmap\symbol{"F34C}}
- \expandafter\def\csname simpleicon@rubymineicon\endcsname {\simpleiconsmap\symbol{"F34D}}
- \expandafter\def\csname simpleicon@rubyonrailsicon\endcsname {\simpleiconsmap\symbol{"F34E}}
- \expandafter\def\csname simpleicon@rubysinatraicon\endcsname {\simpleiconsmap\symbol{"F34F}}
- \expandafter\def\csname simpleicon@rufficon\endcsname {\simpleiconsmap\symbol{"F350}}
- \expandafter\def\csname simpleicon@rumahwebicon\endcsname {\simpleiconsmap\symbol{"F351}}
- \expandafter\def\csname simpleicon@rumbleicon\endcsname {\simpleiconsmap\symbol{"F352}}
- \expandafter\def\csname simpleicon@rundeckicon\endcsname {\simpleiconsmap\symbol{"F353}}
- \expandafter\def\csname simpleicon@runkeepericon\endcsname {\simpleiconsmap\symbol{"F354}}
- \expandafter\def\csname simpleicon@runkiticon\endcsname {\simpleiconsmap\symbol{"F355}}
- \expandafter\def\csname simpleicon@runrundotiticon\endcsname {\simpleiconsmap\symbol{"F356}}
- \expandafter\def\csname simpleicon@rusticon\endcsname {\simpleiconsmap\symbol{"F357}}
- \expandafter\def\csname simpleicon@rustdeskicon\endcsname {\simpleiconsmap\symbol{"F358}}
- \expandafter\def\csname simpleicon@rxdbicon\endcsname {\simpleiconsmap\symbol{"F359}}
- \expandafter\def\csname simpleicon@ryanairicon\endcsname {\simpleiconsmap\symbol{"F35A}}
- \expandafter\def\csname simpleicon@ryeicon\endcsname {\simpleiconsmap\symbol{"F35B}}
- \expandafter\def\csname simpleicon@s7airlinesicon\endcsname {\simpleiconsmap\symbol{"F35C}}
- \expandafter\def\csname simpleicon@sabanciicon\endcsname {\simpleiconsmap\symbol{"F35D}}
- \expandafter\def\csname simpleicon@safariicon\endcsname {\simpleiconsmap\symbol{"F35E}}
- \expandafter\def\csname simpleicon@sageicon\endcsname {\simpleiconsmap\symbol{"F35F}}
- \expandafter\def\csname simpleicon@sahibindenicon\endcsname {\simpleiconsmap\symbol{"F360}}
- \expandafter\def\csname simpleicon@sailfishosicon\endcsname {\simpleiconsmap\symbol{"F361}}
- \expandafter\def\csname simpleicon@sailsdotjsicon\endcsname {\simpleiconsmap\symbol{"F362}}
- \expandafter\def\csname simpleicon@salesforceicon\endcsname {\simpleiconsmap\symbol{"F363}}
- \expandafter\def\csname simpleicon@sallaicon\endcsname {\simpleiconsmap\symbol{"F364}}
- \expandafter\def\csname simpleicon@saltprojecticon\endcsname {\simpleiconsmap\symbol{"F365}}
- \expandafter\def\csname simpleicon@samsclubicon\endcsname {\simpleiconsmap\symbol{"F366}}
- \expandafter\def\csname simpleicon@samsungicon\endcsname {\simpleiconsmap\symbol{"F367}}
- \expandafter\def\csname simpleicon@samsungpayicon\endcsname {\simpleiconsmap\symbol{"F368}}
- \expandafter\def\csname simpleicon@sandiskicon\endcsname {\simpleiconsmap\symbol{"F369}}
- \expandafter\def\csname simpleicon@sanfranciscomunicipalrailwayicon\endcsname {\simpleiconsmap\symbol{"F36A}}
- \expandafter\def\csname simpleicon@sanicicon\endcsname {\simpleiconsmap\symbol{"F36B}}
- \expandafter\def\csname simpleicon@sanityicon\endcsname {\simpleiconsmap\symbol{"F36C}}
- \expandafter\def\csname simpleicon@saopaulometroicon\endcsname {\simpleiconsmap\symbol{"F36D}}
- \expandafter\def\csname simpleicon@sapicon\endcsname {\simpleiconsmap\symbol{"F36E}}
- \expandafter\def\csname simpleicon@sartoriusicon\endcsname {\simpleiconsmap\symbol{"F36F}}
- \expandafter\def\csname simpleicon@sassicon\endcsname {\simpleiconsmap\symbol{"F370}}
- \expandafter\def\csname simpleicon@sat1icon\endcsname {\simpleiconsmap\symbol{"F371}}
- \expandafter\def\csname simpleicon@satelliteicon\endcsname {\simpleiconsmap\symbol{"F372}}
- \expandafter\def\csname simpleicon@saturnicon\endcsname {\simpleiconsmap\symbol{"F373}}
- \expandafter\def\csname simpleicon@saucelabsicon\endcsname {\simpleiconsmap\symbol{"F374}}
- \expandafter\def\csname simpleicon@saudiaicon\endcsname {\simpleiconsmap\symbol{"F375}}
- \expandafter\def\csname simpleicon@scalaicon\endcsname {\simpleiconsmap\symbol{"F376}}
- \expandafter\def\csname simpleicon@scalewayicon\endcsname {\simpleiconsmap\symbol{"F377}}
- \expandafter\def\csname simpleicon@scaniaicon\endcsname {\simpleiconsmap\symbol{"F378}}
- \expandafter\def\csname simpleicon@schneiderelectricicon\endcsname {\simpleiconsmap\symbol{"F379}}
- \expandafter\def\csname simpleicon@scikitlearnicon\endcsname {\simpleiconsmap\symbol{"F37A}}
- \expandafter\def\csname simpleicon@scilabicon\endcsname {\simpleiconsmap\symbol{"F37B}}
- \expandafter\def\csname simpleicon@scipyicon\endcsname {\simpleiconsmap\symbol{"F37C}}
- \expandafter\def\csname simpleicon@scopusicon\endcsname {\simpleiconsmap\symbol{"F37D}}
- \expandafter\def\csname simpleicon@scpfoundationicon\endcsname {\simpleiconsmap\symbol{"F37E}}
- \expandafter\def\csname simpleicon@scrapboxicon\endcsname {\simpleiconsmap\symbol{"F37F}}
- \expandafter\def\csname simpleicon@scrapyicon\endcsname {\simpleiconsmap\symbol{"F380}}
- \expandafter\def\csname simpleicon@scratchicon\endcsname {\simpleiconsmap\symbol{"F381}}
- \expandafter\def\csname simpleicon@screencastifyicon\endcsname {\simpleiconsmap\symbol{"F382}}
- \expandafter\def\csname simpleicon@scribdicon\endcsname {\simpleiconsmap\symbol{"F383}}
- \expandafter\def\csname simpleicon@scrimbaicon\endcsname {\simpleiconsmap\symbol{"F384}}
- \expandafter\def\csname simpleicon@scrollrevealicon\endcsname {\simpleiconsmap\symbol{"F385}}
- \expandafter\def\csname simpleicon@scrumallianceicon\endcsname {\simpleiconsmap\symbol{"F386}}
- \expandafter\def\csname simpleicon@scrutinizerciicon\endcsname {\simpleiconsmap\symbol{"F387}}
- \expandafter\def\csname simpleicon@scylladbicon\endcsname {\simpleiconsmap\symbol{"F388}}
- \expandafter\def\csname simpleicon@seagateicon\endcsname {\simpleiconsmap\symbol{"F389}}
- \expandafter\def\csname simpleicon@searxngicon\endcsname {\simpleiconsmap\symbol{"F38A}}
- \expandafter\def\csname simpleicon@seaticon\endcsname {\simpleiconsmap\symbol{"F38B}}
- \expandafter\def\csname simpleicon@seatgeekicon\endcsname {\simpleiconsmap\symbol{"F38C}}
- \expandafter\def\csname simpleicon@securityscorecardicon\endcsname {\simpleiconsmap\symbol{"F38D}}
- \expandafter\def\csname simpleicon@sefariaicon\endcsname {\simpleiconsmap\symbol{"F38E}}
- \expandafter\def\csname simpleicon@segaicon\endcsname {\simpleiconsmap\symbol{"F38F}}
- \expandafter\def\csname simpleicon@seleniumicon\endcsname {\simpleiconsmap\symbol{"F390}}
- \expandafter\def\csname simpleicon@sellfyicon\endcsname {\simpleiconsmap\symbol{"F391}}
- \expandafter\def\csname simpleicon@semanticreleaseicon\endcsname {\simpleiconsmap\symbol{"F392}}
- \expandafter\def\csname simpleicon@semanticscholaricon\endcsname {\simpleiconsmap\symbol{"F393}}
- \expandafter\def\csname simpleicon@semanticuiicon\endcsname {\simpleiconsmap\symbol{"F394}}
- \expandafter\def\csname simpleicon@semanticuireacticon\endcsname {\simpleiconsmap\symbol{"F395}}
- \expandafter\def\csname simpleicon@semanticwebicon\endcsname {\simpleiconsmap\symbol{"F396}}
- \expandafter\def\csname simpleicon@semaphoreciicon\endcsname {\simpleiconsmap\symbol{"F397}}
- \expandafter\def\csname simpleicon@semrushicon\endcsname {\simpleiconsmap\symbol{"F398}}
- \expandafter\def\csname simpleicon@semvericon\endcsname {\simpleiconsmap\symbol{"F399}}
- \expandafter\def\csname simpleicon@senchaicon\endcsname {\simpleiconsmap\symbol{"F39A}}
- \expandafter\def\csname simpleicon@sennheisericon\endcsname {\simpleiconsmap\symbol{"F39B}}
- \expandafter\def\csname simpleicon@sensuicon\endcsname {\simpleiconsmap\symbol{"F39C}}
- \expandafter\def\csname simpleicon@sentryicon\endcsname {\simpleiconsmap\symbol{"F39D}}
- \expandafter\def\csname simpleicon@sepaicon\endcsname {\simpleiconsmap\symbol{"F39E}}
- \expandafter\def\csname simpleicon@sequelizeicon\endcsname {\simpleiconsmap\symbol{"F39F}}
- \expandafter\def\csname simpleicon@serverfaulticon\endcsname {\simpleiconsmap\symbol{"F3A0}}
- \expandafter\def\csname simpleicon@serverlessicon\endcsname {\simpleiconsmap\symbol{"F3A1}}
- \expandafter\def\csname simpleicon@sessionicon\endcsname {\simpleiconsmap\symbol{"F3A2}}
- \expandafter\def\csname simpleicon@sessionizeicon\endcsname {\simpleiconsmap\symbol{"F3A3}}
- \expandafter\def\csname simpleicon@setappicon\endcsname {\simpleiconsmap\symbol{"F3A4}}
- \expandafter\def\csname simpleicon@sfmlicon\endcsname {\simpleiconsmap\symbol{"F3A5}}
- \expandafter\def\csname simpleicon@shadcnuiicon\endcsname {\simpleiconsmap\symbol{"F3A6}}
- \expandafter\def\csname simpleicon@shadowicon\endcsname {\simpleiconsmap\symbol{"F3A7}}
- \expandafter\def\csname simpleicon@shanghaimetroicon\endcsname {\simpleiconsmap\symbol{"F3A8}}
- \expandafter\def\csname simpleicon@sharexicon\endcsname {\simpleiconsmap\symbol{"F3A9}}
- \expandafter\def\csname simpleicon@sharpicon\endcsname {\simpleiconsmap\symbol{"F3AA}}
- \expandafter\def\csname simpleicon@shazamicon\endcsname {\simpleiconsmap\symbol{"F3AB}}
- \expandafter\def\csname simpleicon@shellicon\endcsname {\simpleiconsmap\symbol{"F3AC}}
- \expandafter\def\csname simpleicon@shellyicon\endcsname {\simpleiconsmap\symbol{"F3AD}}
- \expandafter\def\csname simpleicon@shenzhenmetroicon\endcsname {\simpleiconsmap\symbol{"F3AE}}
- \expandafter\def\csname simpleicon@shieldsdotioicon\endcsname {\simpleiconsmap\symbol{"F3AF}}
- \expandafter\def\csname simpleicon@shikimoriicon\endcsname {\simpleiconsmap\symbol{"F3B0}}
- \expandafter\def\csname simpleicon@shopeeicon\endcsname {\simpleiconsmap\symbol{"F3B1}}
- \expandafter\def\csname simpleicon@shopifyicon\endcsname {\simpleiconsmap\symbol{"F3B2}}
- \expandafter\def\csname simpleicon@shopwareicon\endcsname {\simpleiconsmap\symbol{"F3B3}}
- \expandafter\def\csname simpleicon@shortcuticon\endcsname {\simpleiconsmap\symbol{"F3B4}}
- \expandafter\def\csname simpleicon@showpadicon\endcsname {\simpleiconsmap\symbol{"F3B5}}
- \expandafter\def\csname simpleicon@showtimeicon\endcsname {\simpleiconsmap\symbol{"F3B6}}
- \expandafter\def\csname simpleicon@showwcaseicon\endcsname {\simpleiconsmap\symbol{"F3B7}}
- \expandafter\def\csname simpleicon@shutterstockicon\endcsname {\simpleiconsmap\symbol{"F3B8}}
- \expandafter\def\csname simpleicon@sidekiqicon\endcsname {\simpleiconsmap\symbol{"F3B9}}
- \expandafter\def\csname simpleicon@sidequesticon\endcsname {\simpleiconsmap\symbol{"F3BA}}
- \expandafter\def\csname simpleicon@siemensicon\endcsname {\simpleiconsmap\symbol{"F3BB}}
- \expandafter\def\csname simpleicon@sifiveicon\endcsname {\simpleiconsmap\symbol{"F3BC}}
- \expandafter\def\csname simpleicon@signalicon\endcsname {\simpleiconsmap\symbol{"F3BD}}
- \expandafter\def\csname simpleicon@similarwebicon\endcsname {\simpleiconsmap\symbol{"F3BE}}
- \expandafter\def\csname simpleicon@simklicon\endcsname {\simpleiconsmap\symbol{"F3BF}}
- \expandafter\def\csname simpleicon@simpleanalyticsicon\endcsname {\simpleiconsmap\symbol{"F3C0}}
- \expandafter\def\csname simpleicon@simpleiconsicon\endcsname {\simpleiconsmap\symbol{"F3C1}}
- \expandafter\def\csname simpleicon@simpleloginicon\endcsname {\simpleiconsmap\symbol{"F3C2}}
- \expandafter\def\csname simpleicon@simplenoteicon\endcsname {\simpleiconsmap\symbol{"F3C3}}
- \expandafter\def\csname simpleicon@sinaweiboicon\endcsname {\simpleiconsmap\symbol{"F3C4}}
- \expandafter\def\csname simpleicon@singaporeairlinesicon\endcsname {\simpleiconsmap\symbol{"F3C5}}
- \expandafter\def\csname simpleicon@singlestoreicon\endcsname {\simpleiconsmap\symbol{"F3C6}}
- \expandafter\def\csname simpleicon@sitecoreicon\endcsname {\simpleiconsmap\symbol{"F3C7}}
- \expandafter\def\csname simpleicon@sitepointicon\endcsname {\simpleiconsmap\symbol{"F3C8}}
- \expandafter\def\csname simpleicon@siyuanicon\endcsname {\simpleiconsmap\symbol{"F3C9}}
- \expandafter\def\csname simpleicon@skaffoldicon\endcsname {\simpleiconsmap\symbol{"F3CA}}
- \expandafter\def\csname simpleicon@sketchicon\endcsname {\simpleiconsmap\symbol{"F3CB}}
- \expandafter\def\csname simpleicon@sketchfabicon\endcsname {\simpleiconsmap\symbol{"F3CC}}
- \expandafter\def\csname simpleicon@sketchupicon\endcsname {\simpleiconsmap\symbol{"F3CD}}
- \expandafter\def\csname simpleicon@skillshareicon\endcsname {\simpleiconsmap\symbol{"F3CE}}
- \expandafter\def\csname simpleicon@skodaicon\endcsname {\simpleiconsmap\symbol{"F3CF}}
- \expandafter\def\csname simpleicon@skyicon\endcsname {\simpleiconsmap\symbol{"F3D0}}
- \expandafter\def\csname simpleicon@skypackicon\endcsname {\simpleiconsmap\symbol{"F3D1}}
- \expandafter\def\csname simpleicon@skyrockicon\endcsname {\simpleiconsmap\symbol{"F3D2}}
- \expandafter\def\csname simpleicon@slackicon\endcsname {\simpleiconsmap\symbol{"F3D3}}
- \expandafter\def\csname simpleicon@slackwareicon\endcsname {\simpleiconsmap\symbol{"F3D4}}
- \expandafter\def\csname simpleicon@slashdoticon\endcsname {\simpleiconsmap\symbol{"F3D5}}
- \expandafter\def\csname simpleicon@slickpicicon\endcsname {\simpleiconsmap\symbol{"F3D6}}
- \expandafter\def\csname simpleicon@slidesicon\endcsname {\simpleiconsmap\symbol{"F3D7}}
- \expandafter\def\csname simpleicon@slideshareicon\endcsname {\simpleiconsmap\symbol{"F3D8}}
- \expandafter\def\csname simpleicon@slinticon\endcsname {\simpleiconsmap\symbol{"F3D9}}
- \expandafter\def\csname simpleicon@smarticon\endcsname {\simpleiconsmap\symbol{"F3DA}}
- \expandafter\def\csname simpleicon@smartthingsicon\endcsname {\simpleiconsmap\symbol{"F3DB}}
- \expandafter\def\csname simpleicon@smashdotggicon\endcsname {\simpleiconsmap\symbol{"F3DC}}
- \expandafter\def\csname simpleicon@smashingmagazineicon\endcsname {\simpleiconsmap\symbol{"F3DD}}
- \expandafter\def\csname simpleicon@smrticon\endcsname {\simpleiconsmap\symbol{"F3DE}}
- \expandafter\def\csname simpleicon@smugmugicon\endcsname {\simpleiconsmap\symbol{"F3DF}}
- \expandafter\def\csname simpleicon@snapchaticon\endcsname {\simpleiconsmap\symbol{"F3E0}}
- \expandafter\def\csname simpleicon@snapcrafticon\endcsname {\simpleiconsmap\symbol{"F3E1}}
- \expandafter\def\csname simpleicon@sncficon\endcsname {\simpleiconsmap\symbol{"F3E2}}
- \expandafter\def\csname simpleicon@snorticon\endcsname {\simpleiconsmap\symbol{"F3E3}}
- \expandafter\def\csname simpleicon@snowflakeicon\endcsname {\simpleiconsmap\symbol{"F3E4}}
- \expandafter\def\csname simpleicon@snowpackicon\endcsname {\simpleiconsmap\symbol{"F3E5}}
- \expandafter\def\csname simpleicon@snykicon\endcsname {\simpleiconsmap\symbol{"F3E6}}
- \expandafter\def\csname simpleicon@socialbladeicon\endcsname {\simpleiconsmap\symbol{"F3E7}}
- \expandafter\def\csname simpleicon@society6icon\endcsname {\simpleiconsmap\symbol{"F3E8}}
- \expandafter\def\csname simpleicon@socketdotioicon\endcsname {\simpleiconsmap\symbol{"F3E9}}
- \expandafter\def\csname simpleicon@softpediaicon\endcsname {\simpleiconsmap\symbol{"F3EA}}
- \expandafter\def\csname simpleicon@sogouicon\endcsname {\simpleiconsmap\symbol{"F3EB}}
- \expandafter\def\csname simpleicon@solanaicon\endcsname {\simpleiconsmap\symbol{"F3EC}}
- \expandafter\def\csname simpleicon@solidicon\endcsname {\simpleiconsmap\symbol{"F3ED}}
- \expandafter\def\csname simpleicon@solidityicon\endcsname {\simpleiconsmap\symbol{"F3EE}}
- \expandafter\def\csname simpleicon@sololearnicon\endcsname {\simpleiconsmap\symbol{"F3EF}}
- \expandafter\def\csname simpleicon@solusicon\endcsname {\simpleiconsmap\symbol{"F3F0}}
- \expandafter\def\csname simpleicon@sonaricon\endcsname {\simpleiconsmap\symbol{"F3F1}}
- \expandafter\def\csname simpleicon@sonarcloudicon\endcsname {\simpleiconsmap\symbol{"F3F2}}
- \expandafter\def\csname simpleicon@sonarlinticon\endcsname {\simpleiconsmap\symbol{"F3F3}}
- \expandafter\def\csname simpleicon@sonarqubeicon\endcsname {\simpleiconsmap\symbol{"F3F4}}
- \expandafter\def\csname simpleicon@sonarricon\endcsname {\simpleiconsmap\symbol{"F3F5}}
- \expandafter\def\csname simpleicon@sonatypeicon\endcsname {\simpleiconsmap\symbol{"F3F6}}
- \expandafter\def\csname simpleicon@songkickicon\endcsname {\simpleiconsmap\symbol{"F3F7}}
- \expandafter\def\csname simpleicon@songodaicon\endcsname {\simpleiconsmap\symbol{"F3F8}}
- \expandafter\def\csname simpleicon@sonicwallicon\endcsname {\simpleiconsmap\symbol{"F3F9}}
- \expandafter\def\csname simpleicon@sonosicon\endcsname {\simpleiconsmap\symbol{"F3FA}}
- \expandafter\def\csname simpleicon@sonyicon\endcsname {\simpleiconsmap\symbol{"F3FB}}
- \expandafter\def\csname simpleicon@sorianaicon\endcsname {\simpleiconsmap\symbol{"F3FC}}
- \expandafter\def\csname simpleicon@soundchartsicon\endcsname {\simpleiconsmap\symbol{"F3FD}}
- \expandafter\def\csname simpleicon@soundcloudicon\endcsname {\simpleiconsmap\symbol{"F3FE}}
- \expandafter\def\csname simpleicon@sourceengineicon\endcsname {\simpleiconsmap\symbol{"F3FF}}
- \expandafter\def\csname simpleicon@sourceforgeicon\endcsname {\simpleiconsmap\symbol{"F400}}
- \expandafter\def\csname simpleicon@sourcehuticon\endcsname {\simpleiconsmap\symbol{"F401}}
- \expandafter\def\csname simpleicon@sourcetreeicon\endcsname {\simpleiconsmap\symbol{"F402}}
- \expandafter\def\csname simpleicon@southwestairlinesicon\endcsname {\simpleiconsmap\symbol{"F403}}
- \expandafter\def\csname simpleicon@spacemacsicon\endcsname {\simpleiconsmap\symbol{"F404}}
- \expandafter\def\csname simpleicon@spaceshipicon\endcsname {\simpleiconsmap\symbol{"F405}}
- \expandafter\def\csname simpleicon@spacexicon\endcsname {\simpleiconsmap\symbol{"F406}}
- \expandafter\def\csname simpleicon@spacyicon\endcsname {\simpleiconsmap\symbol{"F407}}
- \expandafter\def\csname simpleicon@sparkaricon\endcsname {\simpleiconsmap\symbol{"F408}}
- \expandafter\def\csname simpleicon@sparkasseicon\endcsname {\simpleiconsmap\symbol{"F409}}
- \expandafter\def\csname simpleicon@sparkfunicon\endcsname {\simpleiconsmap\symbol{"F40A}}
- \expandafter\def\csname simpleicon@sparkposticon\endcsname {\simpleiconsmap\symbol{"F40B}}
- \expandafter\def\csname simpleicon@spdxicon\endcsname {\simpleiconsmap\symbol{"F40C}}
- \expandafter\def\csname simpleicon@speakerdeckicon\endcsname {\simpleiconsmap\symbol{"F40D}}
- \expandafter\def\csname simpleicon@spectrumicon\endcsname {\simpleiconsmap\symbol{"F40E}}
- \expandafter\def\csname simpleicon@speedtesticon\endcsname {\simpleiconsmap\symbol{"F40F}}
- \expandafter\def\csname simpleicon@speedypageicon\endcsname {\simpleiconsmap\symbol{"F410}}
- \expandafter\def\csname simpleicon@sphinxicon\endcsname {\simpleiconsmap\symbol{"F411}}
- \expandafter\def\csname simpleicon@spigotmcicon\endcsname {\simpleiconsmap\symbol{"F412}}
- \expandafter\def\csname simpleicon@spineicon\endcsname {\simpleiconsmap\symbol{"F413}}
- \expandafter\def\csname simpleicon@spinnakericon\endcsname {\simpleiconsmap\symbol{"F414}}
- \expandafter\def\csname simpleicon@spinrillaicon\endcsname {\simpleiconsmap\symbol{"F415}}
- \expandafter\def\csname simpleicon@splunkicon\endcsname {\simpleiconsmap\symbol{"F416}}
- \expandafter\def\csname simpleicon@spojicon\endcsname {\simpleiconsmap\symbol{"F417}}
- \expandafter\def\csname simpleicon@spondicon\endcsname {\simpleiconsmap\symbol{"F418}}
- \expandafter\def\csname simpleicon@spotifyicon\endcsname {\simpleiconsmap\symbol{"F419}}
- \expandafter\def\csname simpleicon@spotlighticon\endcsname {\simpleiconsmap\symbol{"F41A}}
- \expandafter\def\csname simpleicon@spreadshirticon\endcsname {\simpleiconsmap\symbol{"F41B}}
- \expandafter\def\csname simpleicon@spreakericon\endcsname {\simpleiconsmap\symbol{"F41C}}
- \expandafter\def\csname simpleicon@springicon\endcsname {\simpleiconsmap\symbol{"F41D}}
- \expandafter\def\csname simpleicon@springcreatorsicon\endcsname {\simpleiconsmap\symbol{"F41E}}
- \expandafter\def\csname simpleicon@springbooticon\endcsname {\simpleiconsmap\symbol{"F41F}}
- \expandafter\def\csname simpleicon@springsecurityicon\endcsname {\simpleiconsmap\symbol{"F420}}
- \expandafter\def\csname simpleicon@spyderideicon\endcsname {\simpleiconsmap\symbol{"F421}}
- \expandafter\def\csname simpleicon@sqlalchemyicon\endcsname {\simpleiconsmap\symbol{"F422}}
- \expandafter\def\csname simpleicon@sqliteicon\endcsname {\simpleiconsmap\symbol{"F423}}
- \expandafter\def\csname simpleicon@squareicon\endcsname {\simpleiconsmap\symbol{"F424}}
- \expandafter\def\csname simpleicon@squareenixicon\endcsname {\simpleiconsmap\symbol{"F425}}
- \expandafter\def\csname simpleicon@squarespaceicon\endcsname {\simpleiconsmap\symbol{"F426}}
- \expandafter\def\csname simpleicon@srgssricon\endcsname {\simpleiconsmap\symbol{"F427}}
- \expandafter\def\csname simpleicon@ssrnicon\endcsname {\simpleiconsmap\symbol{"F428}}
- \expandafter\def\csname simpleicon@ssticon\endcsname {\simpleiconsmap\symbol{"F429}}
- \expandafter\def\csname simpleicon@stackbiticon\endcsname {\simpleiconsmap\symbol{"F42A}}
- \expandafter\def\csname simpleicon@stackblitzicon\endcsname {\simpleiconsmap\symbol{"F42B}}
- \expandafter\def\csname simpleicon@stackediticon\endcsname {\simpleiconsmap\symbol{"F42C}}
- \expandafter\def\csname simpleicon@stackexchangeicon\endcsname {\simpleiconsmap\symbol{"F42D}}
- \expandafter\def\csname simpleicon@stackhawkicon\endcsname {\simpleiconsmap\symbol{"F42E}}
- \expandafter\def\csname simpleicon@stackoverflowicon\endcsname {\simpleiconsmap\symbol{"F42F}}
- \expandafter\def\csname simpleicon@stackpathicon\endcsname {\simpleiconsmap\symbol{"F430}}
- \expandafter\def\csname simpleicon@stackshareicon\endcsname {\simpleiconsmap\symbol{"F431}}
- \expandafter\def\csname simpleicon@stadiaicon\endcsname {\simpleiconsmap\symbol{"F432}}
- \expandafter\def\csname simpleicon@staffbaseicon\endcsname {\simpleiconsmap\symbol{"F433}}
- \expandafter\def\csname simpleicon@stagetimericon\endcsname {\simpleiconsmap\symbol{"F434}}
- \expandafter\def\csname simpleicon@standardjsicon\endcsname {\simpleiconsmap\symbol{"F435}}
- \expandafter\def\csname simpleicon@standardresumeicon\endcsname {\simpleiconsmap\symbol{"F436}}
- \expandafter\def\csname simpleicon@starbucksicon\endcsname {\simpleiconsmap\symbol{"F437}}
- \expandafter\def\csname simpleicon@stardockicon\endcsname {\simpleiconsmap\symbol{"F438}}
- \expandafter\def\csname simpleicon@starlingbankicon\endcsname {\simpleiconsmap\symbol{"F439}}
- \expandafter\def\csname simpleicon@starshipicon\endcsname {\simpleiconsmap\symbol{"F43A}}
- \expandafter\def\csname simpleicon@startrekicon\endcsname {\simpleiconsmap\symbol{"F43B}}
- \expandafter\def\csname simpleicon@starzicon\endcsname {\simpleiconsmap\symbol{"F43C}}
- \expandafter\def\csname simpleicon@statamicicon\endcsname {\simpleiconsmap\symbol{"F43D}}
- \expandafter\def\csname simpleicon@statistaicon\endcsname {\simpleiconsmap\symbol{"F43E}}
- \expandafter\def\csname simpleicon@statuspageicon\endcsname {\simpleiconsmap\symbol{"F43F}}
- \expandafter\def\csname simpleicon@statuspalicon\endcsname {\simpleiconsmap\symbol{"F440}}
- \expandafter\def\csname simpleicon@steamicon\endcsname {\simpleiconsmap\symbol{"F441}}
- \expandafter\def\csname simpleicon@steamdbicon\endcsname {\simpleiconsmap\symbol{"F442}}
- \expandafter\def\csname simpleicon@steamdeckicon\endcsname {\simpleiconsmap\symbol{"F443}}
- \expandafter\def\csname simpleicon@steamworksicon\endcsname {\simpleiconsmap\symbol{"F444}}
- \expandafter\def\csname simpleicon@steelseriesicon\endcsname {\simpleiconsmap\symbol{"F445}}
- \expandafter\def\csname simpleicon@steemicon\endcsname {\simpleiconsmap\symbol{"F446}}
- \expandafter\def\csname simpleicon@steemiticon\endcsname {\simpleiconsmap\symbol{"F447}}
- \expandafter\def\csname simpleicon@steinbergicon\endcsname {\simpleiconsmap\symbol{"F448}}
- \expandafter\def\csname simpleicon@stellaricon\endcsname {\simpleiconsmap\symbol{"F449}}
- \expandafter\def\csname simpleicon@stencilicon\endcsname {\simpleiconsmap\symbol{"F44A}}
- \expandafter\def\csname simpleicon@stencylicon\endcsname {\simpleiconsmap\symbol{"F44B}}
- \expandafter\def\csname simpleicon@stimulusicon\endcsname {\simpleiconsmap\symbol{"F44C}}
- \expandafter\def\csname simpleicon@stitchericon\endcsname {\simpleiconsmap\symbol{"F44D}}
- \expandafter\def\csname simpleicon@stmicroelectronicsicon\endcsname {\simpleiconsmap\symbol{"F44E}}
- \expandafter\def\csname simpleicon@stockxicon\endcsname {\simpleiconsmap\symbol{"F44F}}
- \expandafter\def\csname simpleicon@stopstalkicon\endcsname {\simpleiconsmap\symbol{"F450}}
- \expandafter\def\csname simpleicon@storyblokicon\endcsname {\simpleiconsmap\symbol{"F451}}
- \expandafter\def\csname simpleicon@storybookicon\endcsname {\simpleiconsmap\symbol{"F452}}
- \expandafter\def\csname simpleicon@strapiicon\endcsname {\simpleiconsmap\symbol{"F453}}
- \expandafter\def\csname simpleicon@stravaicon\endcsname {\simpleiconsmap\symbol{"F454}}
- \expandafter\def\csname simpleicon@streamlabsicon\endcsname {\simpleiconsmap\symbol{"F455}}
- \expandafter\def\csname simpleicon@streamliticon\endcsname {\simpleiconsmap\symbol{"F456}}
- \expandafter\def\csname simpleicon@streamrunnersicon\endcsname {\simpleiconsmap\symbol{"F457}}
- \expandafter\def\csname simpleicon@stripeicon\endcsname {\simpleiconsmap\symbol{"F458}}
- \expandafter\def\csname simpleicon@strongswanicon\endcsname {\simpleiconsmap\symbol{"F459}}
- \expandafter\def\csname simpleicon@strykericon\endcsname {\simpleiconsmap\symbol{"F45A}}
- \expandafter\def\csname simpleicon@stubhubicon\endcsname {\simpleiconsmap\symbol{"F45B}}
- \expandafter\def\csname simpleicon@studio3ticon\endcsname {\simpleiconsmap\symbol{"F45C}}
- \expandafter\def\csname simpleicon@studyverseicon\endcsname {\simpleiconsmap\symbol{"F45D}}
- \expandafter\def\csname simpleicon@styledcomponentsicon\endcsname {\simpleiconsmap\symbol{"F45E}}
- \expandafter\def\csname simpleicon@stylelinticon\endcsname {\simpleiconsmap\symbol{"F45F}}
- \expandafter\def\csname simpleicon@styleshareicon\endcsname {\simpleiconsmap\symbol{"F460}}
- \expandafter\def\csname simpleicon@stylusicon\endcsname {\simpleiconsmap\symbol{"F461}}
- \expandafter\def\csname simpleicon@subaruicon\endcsname {\simpleiconsmap\symbol{"F462}}
- \expandafter\def\csname simpleicon@sublimetexticon\endcsname {\simpleiconsmap\symbol{"F463}}
- \expandafter\def\csname simpleicon@substackicon\endcsname {\simpleiconsmap\symbol{"F464}}
- \expandafter\def\csname simpleicon@subtitleediticon\endcsname {\simpleiconsmap\symbol{"F465}}
- \expandafter\def\csname simpleicon@subversionicon\endcsname {\simpleiconsmap\symbol{"F466}}
- \expandafter\def\csname simpleicon@sucklessicon\endcsname {\simpleiconsmap\symbol{"F467}}
- \expandafter\def\csname simpleicon@sumologicicon\endcsname {\simpleiconsmap\symbol{"F468}}
- \expandafter\def\csname simpleicon@sunoicon\endcsname {\simpleiconsmap\symbol{"F469}}
- \expandafter\def\csname simpleicon@sunriseicon\endcsname {\simpleiconsmap\symbol{"F46A}}
- \expandafter\def\csname simpleicon@supabaseicon\endcsname {\simpleiconsmap\symbol{"F46B}}
- \expandafter\def\csname simpleicon@supercreaseicon\endcsname {\simpleiconsmap\symbol{"F46C}}
- \expandafter\def\csname simpleicon@supermicroicon\endcsname {\simpleiconsmap\symbol{"F46D}}
- \expandafter\def\csname simpleicon@superusericon\endcsname {\simpleiconsmap\symbol{"F46E}}
- \expandafter\def\csname simpleicon@surrealdbicon\endcsname {\simpleiconsmap\symbol{"F46F}}
- \expandafter\def\csname simpleicon@surveymonkeyicon\endcsname {\simpleiconsmap\symbol{"F470}}
- \expandafter\def\csname simpleicon@suseicon\endcsname {\simpleiconsmap\symbol{"F471}}
- \expandafter\def\csname simpleicon@suzukiicon\endcsname {\simpleiconsmap\symbol{"F472}}
- \expandafter\def\csname simpleicon@svelteicon\endcsname {\simpleiconsmap\symbol{"F473}}
- \expandafter\def\csname simpleicon@svgicon\endcsname {\simpleiconsmap\symbol{"F474}}
- \expandafter\def\csname simpleicon@svgdotjsicon\endcsname {\simpleiconsmap\symbol{"F475}}
- \expandafter\def\csname simpleicon@svgoicon\endcsname {\simpleiconsmap\symbol{"F476}}
- \expandafter\def\csname simpleicon@swaggericon\endcsname {\simpleiconsmap\symbol{"F477}}
- \expandafter\def\csname simpleicon@swarmicon\endcsname {\simpleiconsmap\symbol{"F478}}
- \expandafter\def\csname simpleicon@swcicon\endcsname {\simpleiconsmap\symbol{"F479}}
- \expandafter\def\csname simpleicon@swifticon\endcsname {\simpleiconsmap\symbol{"F47A}}
- \expandafter\def\csname simpleicon@swiggyicon\endcsname {\simpleiconsmap\symbol{"F47B}}
- \expandafter\def\csname simpleicon@swipericon\endcsname {\simpleiconsmap\symbol{"F47C}}
- \expandafter\def\csname simpleicon@swricon\endcsname {\simpleiconsmap\symbol{"F47D}}
- \expandafter\def\csname simpleicon@symantecicon\endcsname {\simpleiconsmap\symbol{"F47E}}
- \expandafter\def\csname simpleicon@symbolabicon\endcsname {\simpleiconsmap\symbol{"F47F}}
- \expandafter\def\csname simpleicon@symfonyicon\endcsname {\simpleiconsmap\symbol{"F480}}
- \expandafter\def\csname simpleicon@symphonyicon\endcsname {\simpleiconsmap\symbol{"F481}}
- \expandafter\def\csname simpleicon@sympyicon\endcsname {\simpleiconsmap\symbol{"F482}}
- \expandafter\def\csname simpleicon@syncthingicon\endcsname {\simpleiconsmap\symbol{"F483}}
- \expandafter\def\csname simpleicon@synologyicon\endcsname {\simpleiconsmap\symbol{"F484}}
- \expandafter\def\csname simpleicon@system76icon\endcsname {\simpleiconsmap\symbol{"F485}}
- \expandafter\def\csname simpleicon@tabelogicon\endcsname {\simpleiconsmap\symbol{"F486}}
- \expandafter\def\csname simpleicon@tableauicon\endcsname {\simpleiconsmap\symbol{"F487}}
- \expandafter\def\csname simpleicon@tablecheckicon\endcsname {\simpleiconsmap\symbol{"F488}}
- \expandafter\def\csname simpleicon@tacobellicon\endcsname {\simpleiconsmap\symbol{"F489}}
- \expandafter\def\csname simpleicon@tadoicon\endcsname {\simpleiconsmap\symbol{"F48A}}
- \expandafter\def\csname simpleicon@taichigraphicsicon\endcsname {\simpleiconsmap\symbol{"F48B}}
- \expandafter\def\csname simpleicon@taichilangicon\endcsname {\simpleiconsmap\symbol{"F48C}}
- \expandafter\def\csname simpleicon@tailsicon\endcsname {\simpleiconsmap\symbol{"F48D}}
- \expandafter\def\csname simpleicon@tailscaleicon\endcsname {\simpleiconsmap\symbol{"F48E}}
- \expandafter\def\csname simpleicon@tailwindcssicon\endcsname {\simpleiconsmap\symbol{"F48F}}
- \expandafter\def\csname simpleicon@taipyicon\endcsname {\simpleiconsmap\symbol{"F490}}
- \expandafter\def\csname simpleicon@taketwointeractivesoftwareicon\endcsname {\simpleiconsmap\symbol{"F491}}
- \expandafter\def\csname simpleicon@talendicon\endcsname {\simpleiconsmap\symbol{"F492}}
- \expandafter\def\csname simpleicon@talenthouseicon\endcsname {\simpleiconsmap\symbol{"F493}}
- \expandafter\def\csname simpleicon@talosicon\endcsname {\simpleiconsmap\symbol{"F494}}
- \expandafter\def\csname simpleicon@tamiyaicon\endcsname {\simpleiconsmap\symbol{"F495}}
- \expandafter\def\csname simpleicon@tampermonkeyicon\endcsname {\simpleiconsmap\symbol{"F496}}
- \expandafter\def\csname simpleicon@taobaoicon\endcsname {\simpleiconsmap\symbol{"F497}}
- \expandafter\def\csname simpleicon@tapasicon\endcsname {\simpleiconsmap\symbol{"F498}}
- \expandafter\def\csname simpleicon@targeticon\endcsname {\simpleiconsmap\symbol{"F499}}
- \expandafter\def\csname simpleicon@taskicon\endcsname {\simpleiconsmap\symbol{"F49A}}
- \expandafter\def\csname simpleicon@tasmotaicon\endcsname {\simpleiconsmap\symbol{"F49B}}
- \expandafter\def\csname simpleicon@tataicon\endcsname {\simpleiconsmap\symbol{"F49C}}
- \expandafter\def\csname simpleicon@tauriicon\endcsname {\simpleiconsmap\symbol{"F49D}}
- \expandafter\def\csname simpleicon@taxbuzzicon\endcsname {\simpleiconsmap\symbol{"F49E}}
- \expandafter\def\csname simpleicon@tcsicon\endcsname {\simpleiconsmap\symbol{"F49F}}
- \expandafter\def\csname simpleicon@tealicon\endcsname {\simpleiconsmap\symbol{"F4A0}}
- \expandafter\def\csname simpleicon@teamcityicon\endcsname {\simpleiconsmap\symbol{"F4A1}}
- \expandafter\def\csname simpleicon@teamspeakicon\endcsname {\simpleiconsmap\symbol{"F4A2}}
- \expandafter\def\csname simpleicon@teamviewericon\endcsname {\simpleiconsmap\symbol{"F4A3}}
- \expandafter\def\csname simpleicon@techcrunchicon\endcsname {\simpleiconsmap\symbol{"F4A4}}
- \expandafter\def\csname simpleicon@tedicon\endcsname {\simpleiconsmap\symbol{"F4A5}}
- \expandafter\def\csname simpleicon@teepublicicon\endcsname {\simpleiconsmap\symbol{"F4A6}}
- \expandafter\def\csname simpleicon@teespringicon\endcsname {\simpleiconsmap\symbol{"F4A7}}
- \expandafter\def\csname simpleicon@tektonicon\endcsname {\simpleiconsmap\symbol{"F4A8}}
- \expandafter\def\csname simpleicon@tele5icon\endcsname {\simpleiconsmap\symbol{"F4A9}}
- \expandafter\def\csname simpleicon@telegramicon\endcsname {\simpleiconsmap\symbol{"F4AA}}
- \expandafter\def\csname simpleicon@telegraphicon\endcsname {\simpleiconsmap\symbol{"F4AB}}
- \expandafter\def\csname simpleicon@telequebecicon\endcsname {\simpleiconsmap\symbol{"F4AC}}
- \expandafter\def\csname simpleicon@temporalicon\endcsname {\simpleiconsmap\symbol{"F4AD}}
- \expandafter\def\csname simpleicon@tencentqqicon\endcsname {\simpleiconsmap\symbol{"F4AE}}
- \expandafter\def\csname simpleicon@tensorflowicon\endcsname {\simpleiconsmap\symbol{"F4AF}}
- \expandafter\def\csname simpleicon@teradataicon\endcsname {\simpleiconsmap\symbol{"F4B0}}
- \expandafter\def\csname simpleicon@teratailicon\endcsname {\simpleiconsmap\symbol{"F4B1}}
- \expandafter\def\csname simpleicon@termiusicon\endcsname {\simpleiconsmap\symbol{"F4B2}}
- \expandafter\def\csname simpleicon@terraformicon\endcsname {\simpleiconsmap\symbol{"F4B3}}
- \expandafter\def\csname simpleicon@tescoicon\endcsname {\simpleiconsmap\symbol{"F4B4}}
- \expandafter\def\csname simpleicon@teslaicon\endcsname {\simpleiconsmap\symbol{"F4B5}}
- \expandafter\def\csname simpleicon@testcafeicon\endcsname {\simpleiconsmap\symbol{"F4B6}}
- \expandafter\def\csname simpleicon@testinicon\endcsname {\simpleiconsmap\symbol{"F4B7}}
- \expandafter\def\csname simpleicon@testinglibraryicon\endcsname {\simpleiconsmap\symbol{"F4B8}}
- \expandafter\def\csname simpleicon@testrailicon\endcsname {\simpleiconsmap\symbol{"F4B9}}
- \expandafter\def\csname simpleicon@tethericon\endcsname {\simpleiconsmap\symbol{"F4BA}}
- \expandafter\def\csname simpleicon@textpatternicon\endcsname {\simpleiconsmap\symbol{"F4BB}}
- \expandafter\def\csname simpleicon@tgaicon\endcsname {\simpleiconsmap\symbol{"F4BC}}
- \expandafter\def\csname simpleicon@thangsicon\endcsname {\simpleiconsmap\symbol{"F4BD}}
- \expandafter\def\csname simpleicon@thanosicon\endcsname {\simpleiconsmap\symbol{"F4BE}}
- \expandafter\def\csname simpleicon@thealgorithmsicon\endcsname {\simpleiconsmap\symbol{"F4BF}}
- \expandafter\def\csname simpleicon@theboringcompanyicon\endcsname {\simpleiconsmap\symbol{"F4C0}}
- \expandafter\def\csname simpleicon@theconversationicon\endcsname {\simpleiconsmap\symbol{"F4C1}}
- \expandafter\def\csname simpleicon@thefinalsicon\endcsname {\simpleiconsmap\symbol{"F4C2}}
- \expandafter\def\csname simpleicon@theirishtimesicon\endcsname {\simpleiconsmap\symbol{"F4C3}}
- \expandafter\def\csname simpleicon@themightyicon\endcsname {\simpleiconsmap\symbol{"F4C4}}
- \expandafter\def\csname simpleicon@themodelsresourceicon\endcsname {\simpleiconsmap\symbol{"F4C5}}
- \expandafter\def\csname simpleicon@themoviedatabaseicon\endcsname {\simpleiconsmap\symbol{"F4C6}}
- \expandafter\def\csname simpleicon@thenorthfaceicon\endcsname {\simpleiconsmap\symbol{"F4C7}}
- \expandafter\def\csname simpleicon@theodinprojecticon\endcsname {\simpleiconsmap\symbol{"F4C8}}
- \expandafter\def\csname simpleicon@theregistericon\endcsname {\simpleiconsmap\symbol{"F4C9}}
- \expandafter\def\csname simpleicon@thesoundsresourceicon\endcsname {\simpleiconsmap\symbol{"F4CA}}
- \expandafter\def\csname simpleicon@thespritersresourceicon\endcsname {\simpleiconsmap\symbol{"F4CB}}
- \expandafter\def\csname simpleicon@thewashingtonposticon\endcsname {\simpleiconsmap\symbol{"F4CC}}
- \expandafter\def\csname simpleicon@thingiverseicon\endcsname {\simpleiconsmap\symbol{"F4CD}}
- \expandafter\def\csname simpleicon@thinkpadicon\endcsname {\simpleiconsmap\symbol{"F4CE}}
- \expandafter\def\csname simpleicon@thirdwebicon\endcsname {\simpleiconsmap\symbol{"F4CF}}
- \expandafter\def\csname simpleicon@threadlessicon\endcsname {\simpleiconsmap\symbol{"F4D0}}
- \expandafter\def\csname simpleicon@threadsicon\endcsname {\simpleiconsmap\symbol{"F4D1}}
- \expandafter\def\csname simpleicon@threedotjsicon\endcsname {\simpleiconsmap\symbol{"F4D2}}
- \expandafter\def\csname simpleicon@threemaicon\endcsname {\simpleiconsmap\symbol{"F4D3}}
- \expandafter\def\csname simpleicon@thumbtackicon\endcsname {\simpleiconsmap\symbol{"F4D4}}
- \expandafter\def\csname simpleicon@thunderbirdicon\endcsname {\simpleiconsmap\symbol{"F4D5}}
- \expandafter\def\csname simpleicon@thunderstoreicon\endcsname {\simpleiconsmap\symbol{"F4D6}}
- \expandafter\def\csname simpleicon@thurgauerkantonalbankicon\endcsname {\simpleiconsmap\symbol{"F4D7}}
- \expandafter\def\csname simpleicon@thymeleaficon\endcsname {\simpleiconsmap\symbol{"F4D8}}
- \expandafter\def\csname simpleicon@ticketmastericon\endcsname {\simpleiconsmap\symbol{"F4D9}}
- \expandafter\def\csname simpleicon@ticktickicon\endcsname {\simpleiconsmap\symbol{"F4DA}}
- \expandafter\def\csname simpleicon@tidalicon\endcsname {\simpleiconsmap\symbol{"F4DB}}
- \expandafter\def\csname simpleicon@tiddlywikiicon\endcsname {\simpleiconsmap\symbol{"F4DC}}
- \expandafter\def\csname simpleicon@tideicon\endcsname {\simpleiconsmap\symbol{"F4DD}}
- \expandafter\def\csname simpleicon@tidyverseicon\endcsname {\simpleiconsmap\symbol{"F4DE}}
- \expandafter\def\csname simpleicon@tietoevryicon\endcsname {\simpleiconsmap\symbol{"F4DF}}
- \expandafter\def\csname simpleicon@tiktokicon\endcsname {\simpleiconsmap\symbol{"F4E0}}
- \expandafter\def\csname simpleicon@tildapublishingicon\endcsname {\simpleiconsmap\symbol{"F4E1}}
- \expandafter\def\csname simpleicon@tileicon\endcsname {\simpleiconsmap\symbol{"F4E2}}
- \expandafter\def\csname simpleicon@timescaleicon\endcsname {\simpleiconsmap\symbol{"F4E3}}
- \expandafter\def\csname simpleicon@tinaicon\endcsname {\simpleiconsmap\symbol{"F4E4}}
- \expandafter\def\csname simpleicon@tindericon\endcsname {\simpleiconsmap\symbol{"F4E5}}
- \expandafter\def\csname simpleicon@tindieicon\endcsname {\simpleiconsmap\symbol{"F4E6}}
- \expandafter\def\csname simpleicon@tinkercadicon\endcsname {\simpleiconsmap\symbol{"F4E7}}
- \expandafter\def\csname simpleicon@tinygradicon\endcsname {\simpleiconsmap\symbol{"F4E8}}
- \expandafter\def\csname simpleicon@tinylettericon\endcsname {\simpleiconsmap\symbol{"F4E9}}
- \expandafter\def\csname simpleicon@tistoryicon\endcsname {\simpleiconsmap\symbol{"F4EA}}
- \expandafter\def\csname simpleicon@tldrawicon\endcsname {\simpleiconsmap\symbol{"F4EB}}
- \expandafter\def\csname simpleicon@tmobileicon\endcsname {\simpleiconsmap\symbol{"F4EC}}
- \expandafter\def\csname simpleicon@tmuxicon\endcsname {\simpleiconsmap\symbol{"F4ED}}
- \expandafter\def\csname simpleicon@todoisticon\endcsname {\simpleiconsmap\symbol{"F4EE}}
- \expandafter\def\csname simpleicon@togglicon\endcsname {\simpleiconsmap\symbol{"F4EF}}
- \expandafter\def\csname simpleicon@toggltrackicon\endcsname {\simpleiconsmap\symbol{"F4F0}}
- \expandafter\def\csname simpleicon@tokyometroicon\endcsname {\simpleiconsmap\symbol{"F4F1}}
- \expandafter\def\csname simpleicon@tollicon\endcsname {\simpleiconsmap\symbol{"F4F2}}
- \expandafter\def\csname simpleicon@tomlicon\endcsname {\simpleiconsmap\symbol{"F4F3}}
- \expandafter\def\csname simpleicon@tomorrowlandicon\endcsname {\simpleiconsmap\symbol{"F4F4}}
- \expandafter\def\csname simpleicon@tonicon\endcsname {\simpleiconsmap\symbol{"F4F5}}
- \expandafter\def\csname simpleicon@topcodericon\endcsname {\simpleiconsmap\symbol{"F4F6}}
- \expandafter\def\csname simpleicon@topdotggicon\endcsname {\simpleiconsmap\symbol{"F4F7}}
- \expandafter\def\csname simpleicon@toptalicon\endcsname {\simpleiconsmap\symbol{"F4F8}}
- \expandafter\def\csname simpleicon@torbrowsericon\endcsname {\simpleiconsmap\symbol{"F4F9}}
- \expandafter\def\csname simpleicon@torprojecticon\endcsname {\simpleiconsmap\symbol{"F4FA}}
- \expandafter\def\csname simpleicon@toshibaicon\endcsname {\simpleiconsmap\symbol{"F4FB}}
- \expandafter\def\csname simpleicon@totvsicon\endcsname {\simpleiconsmap\symbol{"F4FC}}
- \expandafter\def\csname simpleicon@tourboxicon\endcsname {\simpleiconsmap\symbol{"F4FD}}
- \expandafter\def\csname simpleicon@towericon\endcsname {\simpleiconsmap\symbol{"F4FE}}
- \expandafter\def\csname simpleicon@toyotaicon\endcsname {\simpleiconsmap\symbol{"F4FF}}
- \expandafter\def\csname simpleicon@tplinkicon\endcsname {\simpleiconsmap\symbol{"F500}}
- \expandafter\def\csname simpleicon@tqdmicon\endcsname {\simpleiconsmap\symbol{"F501}}
- \expandafter\def\csname simpleicon@traccaricon\endcsname {\simpleiconsmap\symbol{"F502}}
- \expandafter\def\csname simpleicon@tradingviewicon\endcsname {\simpleiconsmap\symbol{"F503}}
- \expandafter\def\csname simpleicon@traefikmeshicon\endcsname {\simpleiconsmap\symbol{"F504}}
- \expandafter\def\csname simpleicon@traefikproxyicon\endcsname {\simpleiconsmap\symbol{"F505}}
- \expandafter\def\csname simpleicon@trailforksicon\endcsname {\simpleiconsmap\symbol{"F506}}
- \expandafter\def\csname simpleicon@trainerroadicon\endcsname {\simpleiconsmap\symbol{"F507}}
- \expandafter\def\csname simpleicon@trakticon\endcsname {\simpleiconsmap\symbol{"F508}}
- \expandafter\def\csname simpleicon@transifexicon\endcsname {\simpleiconsmap\symbol{"F509}}
- \expandafter\def\csname simpleicon@transmissionicon\endcsname {\simpleiconsmap\symbol{"F50A}}
- \expandafter\def\csname simpleicon@transportforirelandicon\endcsname {\simpleiconsmap\symbol{"F50B}}
- \expandafter\def\csname simpleicon@transportforlondonicon\endcsname {\simpleiconsmap\symbol{"F50C}}
- \expandafter\def\csname simpleicon@travisciicon\endcsname {\simpleiconsmap\symbol{"F50D}}
- \expandafter\def\csname simpleicon@treehouseicon\endcsname {\simpleiconsmap\symbol{"F50E}}
- \expandafter\def\csname simpleicon@trelloicon\endcsname {\simpleiconsmap\symbol{"F50F}}
- \expandafter\def\csname simpleicon@trendmicroicon\endcsname {\simpleiconsmap\symbol{"F510}}
- \expandafter\def\csname simpleicon@treyarchicon\endcsname {\simpleiconsmap\symbol{"F511}}
- \expandafter\def\csname simpleicon@tricentisicon\endcsname {\simpleiconsmap\symbol{"F512}}
- \expandafter\def\csname simpleicon@triliumicon\endcsname {\simpleiconsmap\symbol{"F513}}
- \expandafter\def\csname simpleicon@trillericon\endcsname {\simpleiconsmap\symbol{"F514}}
- \expandafter\def\csname simpleicon@trillertvicon\endcsname {\simpleiconsmap\symbol{"F515}}
- \expandafter\def\csname simpleicon@trinoicon\endcsname {\simpleiconsmap\symbol{"F516}}
- \expandafter\def\csname simpleicon@tripadvisoricon\endcsname {\simpleiconsmap\symbol{"F517}}
- \expandafter\def\csname simpleicon@tripdotcomicon\endcsname {\simpleiconsmap\symbol{"F518}}
- \expandafter\def\csname simpleicon@trivagoicon\endcsname {\simpleiconsmap\symbol{"F519}}
- \expandafter\def\csname simpleicon@trivyicon\endcsname {\simpleiconsmap\symbol{"F51A}}
- \expandafter\def\csname simpleicon@troveicon\endcsname {\simpleiconsmap\symbol{"F51B}}
- \expandafter\def\csname simpleicon@trpcicon\endcsname {\simpleiconsmap\symbol{"F51C}}
- \expandafter\def\csname simpleicon@truenasicon\endcsname {\simpleiconsmap\symbol{"F51D}}
- \expandafter\def\csname simpleicon@trueupicon\endcsname {\simpleiconsmap\symbol{"F51E}}
- \expandafter\def\csname simpleicon@truliaicon\endcsname {\simpleiconsmap\symbol{"F51F}}
- \expandafter\def\csname simpleicon@trustedshopsicon\endcsname {\simpleiconsmap\symbol{"F520}}
- \expandafter\def\csname simpleicon@trustpiloticon\endcsname {\simpleiconsmap\symbol{"F521}}
- \expandafter\def\csname simpleicon@tryhackmeicon\endcsname {\simpleiconsmap\symbol{"F522}}
- \expandafter\def\csname simpleicon@tryitonlineicon\endcsname {\simpleiconsmap\symbol{"F523}}
- \expandafter\def\csname simpleicon@tsnodeicon\endcsname {\simpleiconsmap\symbol{"F524}}
- \expandafter\def\csname simpleicon@tubiicon\endcsname {\simpleiconsmap\symbol{"F525}}
- \expandafter\def\csname simpleicon@tuiicon\endcsname {\simpleiconsmap\symbol{"F526}}
- \expandafter\def\csname simpleicon@tumblricon\endcsname {\simpleiconsmap\symbol{"F527}}
- \expandafter\def\csname simpleicon@tuneinicon\endcsname {\simpleiconsmap\symbol{"F528}}
- \expandafter\def\csname simpleicon@turboicon\endcsname {\simpleiconsmap\symbol{"F529}}
- \expandafter\def\csname simpleicon@turborepoicon\endcsname {\simpleiconsmap\symbol{"F52A}}
- \expandafter\def\csname simpleicon@turbosquidicon\endcsname {\simpleiconsmap\symbol{"F52B}}
- \expandafter\def\csname simpleicon@turkishairlinesicon\endcsname {\simpleiconsmap\symbol{"F52C}}
- \expandafter\def\csname simpleicon@tursoicon\endcsname {\simpleiconsmap\symbol{"F52D}}
- \expandafter\def\csname simpleicon@tutanotaicon\endcsname {\simpleiconsmap\symbol{"F52E}}
- \expandafter\def\csname simpleicon@tv4playicon\endcsname {\simpleiconsmap\symbol{"F52F}}
- \expandafter\def\csname simpleicon@tvtimeicon\endcsname {\simpleiconsmap\symbol{"F530}}
- \expandafter\def\csname simpleicon@twilioicon\endcsname {\simpleiconsmap\symbol{"F531}}
- \expandafter\def\csname simpleicon@twinklyicon\endcsname {\simpleiconsmap\symbol{"F532}}
- \expandafter\def\csname simpleicon@twinmotionicon\endcsname {\simpleiconsmap\symbol{"F533}}
- \expandafter\def\csname simpleicon@twitchicon\endcsname {\simpleiconsmap\symbol{"F534}}
- \expandafter\def\csname simpleicon@typeformicon\endcsname {\simpleiconsmap\symbol{"F535}}
- \expandafter\def\csname simpleicon@typeormicon\endcsname {\simpleiconsmap\symbol{"F536}}
- \expandafter\def\csname simpleicon@typericon\endcsname {\simpleiconsmap\symbol{"F537}}
- \expandafter\def\csname simpleicon@typescripticon\endcsname {\simpleiconsmap\symbol{"F538}}
- \expandafter\def\csname simpleicon@typo3icon\endcsname {\simpleiconsmap\symbol{"F539}}
- \expandafter\def\csname simpleicon@typsticon\endcsname {\simpleiconsmap\symbol{"F53A}}
- \expandafter\def\csname simpleicon@ubericon\endcsname {\simpleiconsmap\symbol{"F53B}}
- \expandafter\def\csname simpleicon@ubereatsicon\endcsname {\simpleiconsmap\symbol{"F53C}}
- \expandafter\def\csname simpleicon@ubiquitiicon\endcsname {\simpleiconsmap\symbol{"F53D}}
- \expandafter\def\csname simpleicon@ubisofticon\endcsname {\simpleiconsmap\symbol{"F53E}}
- \expandafter\def\csname simpleicon@ublockoriginicon\endcsname {\simpleiconsmap\symbol{"F53F}}
- \expandafter\def\csname simpleicon@ubuntuicon\endcsname {\simpleiconsmap\symbol{"F540}}
- \expandafter\def\csname simpleicon@ubuntumateicon\endcsname {\simpleiconsmap\symbol{"F541}}
- \expandafter\def\csname simpleicon@udacityicon\endcsname {\simpleiconsmap\symbol{"F542}}
- \expandafter\def\csname simpleicon@udemyicon\endcsname {\simpleiconsmap\symbol{"F543}}
- \expandafter\def\csname simpleicon@ufcicon\endcsname {\simpleiconsmap\symbol{"F544}}
- \expandafter\def\csname simpleicon@uikiticon\endcsname {\simpleiconsmap\symbol{"F545}}
- \expandafter\def\csname simpleicon@uipathicon\endcsname {\simpleiconsmap\symbol{"F546}}
- \expandafter\def\csname simpleicon@ululeicon\endcsname {\simpleiconsmap\symbol{"F547}}
- \expandafter\def\csname simpleicon@umamiicon\endcsname {\simpleiconsmap\symbol{"F548}}
- \expandafter\def\csname simpleicon@umbracoicon\endcsname {\simpleiconsmap\symbol{"F549}}
- \expandafter\def\csname simpleicon@umlicon\endcsname {\simpleiconsmap\symbol{"F54A}}
- \expandafter\def\csname simpleicon@unacademyicon\endcsname {\simpleiconsmap\symbol{"F54B}}
- \expandafter\def\csname simpleicon@underarmouricon\endcsname {\simpleiconsmap\symbol{"F54C}}
- \expandafter\def\csname simpleicon@underscoredotjsicon\endcsname {\simpleiconsmap\symbol{"F54D}}
- \expandafter\def\csname simpleicon@undertaleicon\endcsname {\simpleiconsmap\symbol{"F54E}}
- \expandafter\def\csname simpleicon@unicodeicon\endcsname {\simpleiconsmap\symbol{"F54F}}
- \expandafter\def\csname simpleicon@unilevericon\endcsname {\simpleiconsmap\symbol{"F550}}
- \expandafter\def\csname simpleicon@uniqloicon\endcsname {\simpleiconsmap\symbol{"F551}}
- \expandafter\def\csname simpleicon@uniqlojaicon\endcsname {\simpleiconsmap\symbol{"F552}}
- \expandafter\def\csname simpleicon@unitedairlinesicon\endcsname {\simpleiconsmap\symbol{"F553}}
- \expandafter\def\csname simpleicon@unitednationsicon\endcsname {\simpleiconsmap\symbol{"F554}}
- \expandafter\def\csname simpleicon@unityicon\endcsname {\simpleiconsmap\symbol{"F555}}
- \expandafter\def\csname simpleicon@unjsicon\endcsname {\simpleiconsmap\symbol{"F556}}
- \expandafter\def\csname simpleicon@unlicenseicon\endcsname {\simpleiconsmap\symbol{"F557}}
- \expandafter\def\csname simpleicon@unocssicon\endcsname {\simpleiconsmap\symbol{"F558}}
- \expandafter\def\csname simpleicon@unpkgicon\endcsname {\simpleiconsmap\symbol{"F559}}
- \expandafter\def\csname simpleicon@unraidicon\endcsname {\simpleiconsmap\symbol{"F55A}}
- \expandafter\def\csname simpleicon@unrealengineicon\endcsname {\simpleiconsmap\symbol{"F55B}}
- \expandafter\def\csname simpleicon@unsplashicon\endcsname {\simpleiconsmap\symbol{"F55C}}
- \expandafter\def\csname simpleicon@untappdicon\endcsname {\simpleiconsmap\symbol{"F55D}}
- \expandafter\def\csname simpleicon@upcloudicon\endcsname {\simpleiconsmap\symbol{"F55E}}
- \expandafter\def\csname simpleicon@upholdicon\endcsname {\simpleiconsmap\symbol{"F55F}}
- \expandafter\def\csname simpleicon@uplabsicon\endcsname {\simpleiconsmap\symbol{"F560}}
- \expandafter\def\csname simpleicon@upptimeicon\endcsname {\simpleiconsmap\symbol{"F561}}
- \expandafter\def\csname simpleicon@upsicon\endcsname {\simpleiconsmap\symbol{"F562}}
- \expandafter\def\csname simpleicon@upstashicon\endcsname {\simpleiconsmap\symbol{"F563}}
- \expandafter\def\csname simpleicon@uptimekumaicon\endcsname {\simpleiconsmap\symbol{"F564}}
- \expandafter\def\csname simpleicon@uptoboxicon\endcsname {\simpleiconsmap\symbol{"F565}}
- \expandafter\def\csname simpleicon@upworkicon\endcsname {\simpleiconsmap\symbol{"F566}}
- \expandafter\def\csname simpleicon@uspsicon\endcsname {\simpleiconsmap\symbol{"F567}}
- \expandafter\def\csname simpleicon@utorrenticon\endcsname {\simpleiconsmap\symbol{"F568}}
- \expandafter\def\csname simpleicon@vicon\endcsname {\simpleiconsmap\symbol{"F569}}
- \expandafter\def\csname simpleicon@v2exicon\endcsname {\simpleiconsmap\symbol{"F56A}}
- \expandafter\def\csname simpleicon@v8icon\endcsname {\simpleiconsmap\symbol{"F56B}}
- \expandafter\def\csname simpleicon@vaadinicon\endcsname {\simpleiconsmap\symbol{"F56C}}
- \expandafter\def\csname simpleicon@vagranticon\endcsname {\simpleiconsmap\symbol{"F56D}}
- \expandafter\def\csname simpleicon@valaicon\endcsname {\simpleiconsmap\symbol{"F56E}}
- \expandafter\def\csname simpleicon@valoranticon\endcsname {\simpleiconsmap\symbol{"F56F}}
- \expandafter\def\csname simpleicon@valveicon\endcsname {\simpleiconsmap\symbol{"F570}}
- \expandafter\def\csname simpleicon@vaporicon\endcsname {\simpleiconsmap\symbol{"F571}}
- \expandafter\def\csname simpleicon@vaulticon\endcsname {\simpleiconsmap\symbol{"F572}}
- \expandafter\def\csname simpleicon@vaultwardenicon\endcsname {\simpleiconsmap\symbol{"F573}}
- \expandafter\def\csname simpleicon@vauxhallicon\endcsname {\simpleiconsmap\symbol{"F574}}
- \expandafter\def\csname simpleicon@vbulletinicon\endcsname {\simpleiconsmap\symbol{"F575}}
- \expandafter\def\csname simpleicon@vectaryicon\endcsname {\simpleiconsmap\symbol{"F576}}
- \expandafter\def\csname simpleicon@vectorlogozoneicon\endcsname {\simpleiconsmap\symbol{"F577}}
- \expandafter\def\csname simpleicon@vectorworksicon\endcsname {\simpleiconsmap\symbol{"F578}}
- \expandafter\def\csname simpleicon@veeamicon\endcsname {\simpleiconsmap\symbol{"F579}}
- \expandafter\def\csname simpleicon@veedicon\endcsname {\simpleiconsmap\symbol{"F57A}}
- \expandafter\def\csname simpleicon@veepeeicon\endcsname {\simpleiconsmap\symbol{"F57B}}
- \expandafter\def\csname simpleicon@vegaicon\endcsname {\simpleiconsmap\symbol{"F57C}}
- \expandafter\def\csname simpleicon@vegasicon\endcsname {\simpleiconsmap\symbol{"F57D}}
- \expandafter\def\csname simpleicon@velogicon\endcsname {\simpleiconsmap\symbol{"F57E}}
- \expandafter\def\csname simpleicon@venmoicon\endcsname {\simpleiconsmap\symbol{"F57F}}
- \expandafter\def\csname simpleicon@vercelicon\endcsname {\simpleiconsmap\symbol{"F580}}
- \expandafter\def\csname simpleicon@verdaccioicon\endcsname {\simpleiconsmap\symbol{"F581}}
- \expandafter\def\csname simpleicon@veritasicon\endcsname {\simpleiconsmap\symbol{"F582}}
- \expandafter\def\csname simpleicon@verizonicon\endcsname {\simpleiconsmap\symbol{"F583}}
- \expandafter\def\csname simpleicon@vespaicon\endcsname {\simpleiconsmap\symbol{"F584}}
- \expandafter\def\csname simpleicon@vexxhosticon\endcsname {\simpleiconsmap\symbol{"F585}}
- \expandafter\def\csname simpleicon@vfairsicon\endcsname {\simpleiconsmap\symbol{"F586}}
- \expandafter\def\csname simpleicon@viadeoicon\endcsname {\simpleiconsmap\symbol{"F587}}
- \expandafter\def\csname simpleicon@viaplayicon\endcsname {\simpleiconsmap\symbol{"F588}}
- \expandafter\def\csname simpleicon@vibericon\endcsname {\simpleiconsmap\symbol{"F589}}
- \expandafter\def\csname simpleicon@vibloicon\endcsname {\simpleiconsmap\symbol{"F58A}}
- \expandafter\def\csname simpleicon@victoriametricsicon\endcsname {\simpleiconsmap\symbol{"F58B}}
- \expandafter\def\csname simpleicon@victronenergyicon\endcsname {\simpleiconsmap\symbol{"F58C}}
- \expandafter\def\csname simpleicon@vimicon\endcsname {\simpleiconsmap\symbol{"F58D}}
- \expandafter\def\csname simpleicon@vimeoicon\endcsname {\simpleiconsmap\symbol{"F58E}}
- \expandafter\def\csname simpleicon@vimeolivestreamicon\endcsname {\simpleiconsmap\symbol{"F58F}}
- \expandafter\def\csname simpleicon@virginicon\endcsname {\simpleiconsmap\symbol{"F590}}
- \expandafter\def\csname simpleicon@virginatlanticicon\endcsname {\simpleiconsmap\symbol{"F591}}
- \expandafter\def\csname simpleicon@virginmediaicon\endcsname {\simpleiconsmap\symbol{"F592}}
- \expandafter\def\csname simpleicon@virtualboxicon\endcsname {\simpleiconsmap\symbol{"F593}}
- \expandafter\def\csname simpleicon@virustotalicon\endcsname {\simpleiconsmap\symbol{"F594}}
- \expandafter\def\csname simpleicon@visaicon\endcsname {\simpleiconsmap\symbol{"F595}}
- \expandafter\def\csname simpleicon@visxicon\endcsname {\simpleiconsmap\symbol{"F596}}
- \expandafter\def\csname simpleicon@viteicon\endcsname {\simpleiconsmap\symbol{"F597}}
- \expandafter\def\csname simpleicon@vitepressicon\endcsname {\simpleiconsmap\symbol{"F598}}
- \expandafter\def\csname simpleicon@vitessicon\endcsname {\simpleiconsmap\symbol{"F599}}
- \expandafter\def\csname simpleicon@vitesticon\endcsname {\simpleiconsmap\symbol{"F59A}}
- \expandafter\def\csname simpleicon@vivaldiicon\endcsname {\simpleiconsmap\symbol{"F59B}}
- \expandafter\def\csname simpleicon@vivawalleticon\endcsname {\simpleiconsmap\symbol{"F59C}}
- \expandafter\def\csname simpleicon@vivinoicon\endcsname {\simpleiconsmap\symbol{"F59D}}
- \expandafter\def\csname simpleicon@vivinticon\endcsname {\simpleiconsmap\symbol{"F59E}}
- \expandafter\def\csname simpleicon@vivoicon\endcsname {\simpleiconsmap\symbol{"F59F}}
- \expandafter\def\csname simpleicon@vkicon\endcsname {\simpleiconsmap\symbol{"F5A0}}
- \expandafter\def\csname simpleicon@vlcmediaplayericon\endcsname {\simpleiconsmap\symbol{"F5A1}}
- \expandafter\def\csname simpleicon@vmwareicon\endcsname {\simpleiconsmap\symbol{"F5A2}}
- \expandafter\def\csname simpleicon@vodafoneicon\endcsname {\simpleiconsmap\symbol{"F5A3}}
- \expandafter\def\csname simpleicon@voidlinuxicon\endcsname {\simpleiconsmap\symbol{"F5A4}}
- \expandafter\def\csname simpleicon@voipdotmsicon\endcsname {\simpleiconsmap\symbol{"F5A5}}
- \expandafter\def\csname simpleicon@volkswagenicon\endcsname {\simpleiconsmap\symbol{"F5A6}}
- \expandafter\def\csname simpleicon@volvoicon\endcsname {\simpleiconsmap\symbol{"F5A7}}
- \expandafter\def\csname simpleicon@vonageicon\endcsname {\simpleiconsmap\symbol{"F5A8}}
- \expandafter\def\csname simpleicon@vorondesignicon\endcsname {\simpleiconsmap\symbol{"F5A9}}
- \expandafter\def\csname simpleicon@vowpalwabbiticon\endcsname {\simpleiconsmap\symbol{"F5AA}}
- \expandafter\def\csname simpleicon@voxicon\endcsname {\simpleiconsmap\symbol{"F5AB}}
- \expandafter\def\csname simpleicon@vscoicon\endcsname {\simpleiconsmap\symbol{"F5AC}}
- \expandafter\def\csname simpleicon@vscodiumicon\endcsname {\simpleiconsmap\symbol{"F5AD}}
- \expandafter\def\csname simpleicon@vtexicon\endcsname {\simpleiconsmap\symbol{"F5AE}}
- \expandafter\def\csname simpleicon@vuedotjsicon\endcsname {\simpleiconsmap\symbol{"F5AF}}
- \expandafter\def\csname simpleicon@vuetifyicon\endcsname {\simpleiconsmap\symbol{"F5B0}}
- \expandafter\def\csname simpleicon@vulkanicon\endcsname {\simpleiconsmap\symbol{"F5B1}}
- \expandafter\def\csname simpleicon@vultricon\endcsname {\simpleiconsmap\symbol{"F5B2}}
- \expandafter\def\csname simpleicon@vyondicon\endcsname {\simpleiconsmap\symbol{"F5B3}}
- \expandafter\def\csname simpleicon@w3schoolsicon\endcsname {\simpleiconsmap\symbol{"F5B4}}
- \expandafter\def\csname simpleicon@wacomicon\endcsname {\simpleiconsmap\symbol{"F5B5}}
- \expandafter\def\csname simpleicon@wagmiicon\endcsname {\simpleiconsmap\symbol{"F5B6}}
- \expandafter\def\csname simpleicon@wagtailicon\endcsname {\simpleiconsmap\symbol{"F5B7}}
- \expandafter\def\csname simpleicon@wailsicon\endcsname {\simpleiconsmap\symbol{"F5B8}}
- \expandafter\def\csname simpleicon@wakatimeicon\endcsname {\simpleiconsmap\symbol{"F5B9}}
- \expandafter\def\csname simpleicon@walkmanicon\endcsname {\simpleiconsmap\symbol{"F5BA}}
- \expandafter\def\csname simpleicon@wallabagicon\endcsname {\simpleiconsmap\symbol{"F5BB}}
- \expandafter\def\csname simpleicon@walletconnecticon\endcsname {\simpleiconsmap\symbol{"F5BC}}
- \expandafter\def\csname simpleicon@walmarticon\endcsname {\simpleiconsmap\symbol{"F5BD}}
- \expandafter\def\csname simpleicon@wantedlyicon\endcsname {\simpleiconsmap\symbol{"F5BE}}
- \expandafter\def\csname simpleicon@wappalyzericon\endcsname {\simpleiconsmap\symbol{"F5BF}}
- \expandafter\def\csname simpleicon@warnerbrosicon\endcsname {\simpleiconsmap\symbol{"F5C0}}
- \expandafter\def\csname simpleicon@warpicon\endcsname {\simpleiconsmap\symbol{"F5C1}}
- \expandafter\def\csname simpleicon@wasabiicon\endcsname {\simpleiconsmap\symbol{"F5C2}}
- \expandafter\def\csname simpleicon@wasmcloudicon\endcsname {\simpleiconsmap\symbol{"F5C3}}
- \expandafter\def\csname simpleicon@wasmericon\endcsname {\simpleiconsmap\symbol{"F5C4}}
- \expandafter\def\csname simpleicon@watchtowericon\endcsname {\simpleiconsmap\symbol{"F5C5}}
- \expandafter\def\csname simpleicon@wattpadicon\endcsname {\simpleiconsmap\symbol{"F5C6}}
- \expandafter\def\csname simpleicon@waylandicon\endcsname {\simpleiconsmap\symbol{"F5C7}}
- \expandafter\def\csname simpleicon@wazeicon\endcsname {\simpleiconsmap\symbol{"F5C8}}
- \expandafter\def\csname simpleicon@wazirxicon\endcsname {\simpleiconsmap\symbol{"F5C9}}
- \expandafter\def\csname simpleicon@wearosicon\endcsname {\simpleiconsmap\symbol{"F5CA}}
- \expandafter\def\csname simpleicon@weasylicon\endcsname {\simpleiconsmap\symbol{"F5CB}}
- \expandafter\def\csname simpleicon@web3dotjsicon\endcsname {\simpleiconsmap\symbol{"F5CC}}
- \expandafter\def\csname simpleicon@webassemblyicon\endcsname {\simpleiconsmap\symbol{"F5CD}}
- \expandafter\def\csname simpleicon@webauthnicon\endcsname {\simpleiconsmap\symbol{"F5CE}}
- \expandafter\def\csname simpleicon@webcomponentsdotorgicon\endcsname {\simpleiconsmap\symbol{"F5CF}}
- \expandafter\def\csname simpleicon@webdriverioicon\endcsname {\simpleiconsmap\symbol{"F5D0}}
- \expandafter\def\csname simpleicon@webexicon\endcsname {\simpleiconsmap\symbol{"F5D1}}
- \expandafter\def\csname simpleicon@webflowicon\endcsname {\simpleiconsmap\symbol{"F5D2}}
- \expandafter\def\csname simpleicon@webglicon\endcsname {\simpleiconsmap\symbol{"F5D3}}
- \expandafter\def\csname simpleicon@webgpuicon\endcsname {\simpleiconsmap\symbol{"F5D4}}
- \expandafter\def\csname simpleicon@weblateicon\endcsname {\simpleiconsmap\symbol{"F5D5}}
- \expandafter\def\csname simpleicon@webminicon\endcsname {\simpleiconsmap\symbol{"F5D6}}
- \expandafter\def\csname simpleicon@webmoneyicon\endcsname {\simpleiconsmap\symbol{"F5D7}}
- \expandafter\def\csname simpleicon@webpackicon\endcsname {\simpleiconsmap\symbol{"F5D8}}
- \expandafter\def\csname simpleicon@webrtcicon\endcsname {\simpleiconsmap\symbol{"F5D9}}
- \expandafter\def\csname simpleicon@webstormicon\endcsname {\simpleiconsmap\symbol{"F5DA}}
- \expandafter\def\csname simpleicon@webtoonicon\endcsname {\simpleiconsmap\symbol{"F5DB}}
- \expandafter\def\csname simpleicon@webtreesicon\endcsname {\simpleiconsmap\symbol{"F5DC}}
- \expandafter\def\csname simpleicon@wechaticon\endcsname {\simpleiconsmap\symbol{"F5DD}}
- \expandafter\def\csname simpleicon@wegameicon\endcsname {\simpleiconsmap\symbol{"F5DE}}
- \expandafter\def\csname simpleicon@weightsandbiasesicon\endcsname {\simpleiconsmap\symbol{"F5DF}}
- \expandafter\def\csname simpleicon@welcometothejungleicon\endcsname {\simpleiconsmap\symbol{"F5E0}}
- \expandafter\def\csname simpleicon@wellfoundicon\endcsname {\simpleiconsmap\symbol{"F5E1}}
- \expandafter\def\csname simpleicon@wellsfargoicon\endcsname {\simpleiconsmap\symbol{"F5E2}}
- \expandafter\def\csname simpleicon@wemoicon\endcsname {\simpleiconsmap\symbol{"F5E3}}
- \expandafter\def\csname simpleicon@westerndigitalicon\endcsname {\simpleiconsmap\symbol{"F5E4}}
- \expandafter\def\csname simpleicon@westernunionicon\endcsname {\simpleiconsmap\symbol{"F5E5}}
- \expandafter\def\csname simpleicon@wetransfericon\endcsname {\simpleiconsmap\symbol{"F5E6}}
- \expandafter\def\csname simpleicon@weztermicon\endcsname {\simpleiconsmap\symbol{"F5E7}}
- \expandafter\def\csname simpleicon@wgpuicon\endcsname {\simpleiconsmap\symbol{"F5E8}}
- \expandafter\def\csname simpleicon@whatsappicon\endcsname {\simpleiconsmap\symbol{"F5E9}}
- \expandafter\def\csname simpleicon@wheniworkicon\endcsname {\simpleiconsmap\symbol{"F5EA}}
- \expandafter\def\csname simpleicon@wiiicon\endcsname {\simpleiconsmap\symbol{"F5EB}}
- \expandafter\def\csname simpleicon@wiiuicon\endcsname {\simpleiconsmap\symbol{"F5EC}}
- \expandafter\def\csname simpleicon@wikidataicon\endcsname {\simpleiconsmap\symbol{"F5ED}}
- \expandafter\def\csname simpleicon@wikidotggicon\endcsname {\simpleiconsmap\symbol{"F5EE}}
- \expandafter\def\csname simpleicon@wikidotjsicon\endcsname {\simpleiconsmap\symbol{"F5EF}}
- \expandafter\def\csname simpleicon@wikimediacommonsicon\endcsname {\simpleiconsmap\symbol{"F5F0}}
- \expandafter\def\csname simpleicon@wikimediafoundationicon\endcsname {\simpleiconsmap\symbol{"F5F1}}
- \expandafter\def\csname simpleicon@wikipediaicon\endcsname {\simpleiconsmap\symbol{"F5F2}}
- \expandafter\def\csname simpleicon@wikiquoteicon\endcsname {\simpleiconsmap\symbol{"F5F3}}
- \expandafter\def\csname simpleicon@wikivoyageicon\endcsname {\simpleiconsmap\symbol{"F5F4}}
- \expandafter\def\csname simpleicon@winampicon\endcsname {\simpleiconsmap\symbol{"F5F5}}
- \expandafter\def\csname simpleicon@wiproicon\endcsname {\simpleiconsmap\symbol{"F5F6}}
- \expandafter\def\csname simpleicon@wireicon\endcsname {\simpleiconsmap\symbol{"F5F7}}
- \expandafter\def\csname simpleicon@wireguardicon\endcsname {\simpleiconsmap\symbol{"F5F8}}
- \expandafter\def\csname simpleicon@wiresharkicon\endcsname {\simpleiconsmap\symbol{"F5F9}}
- \expandafter\def\csname simpleicon@wiseicon\endcsname {\simpleiconsmap\symbol{"F5FA}}
- \expandafter\def\csname simpleicon@wishicon\endcsname {\simpleiconsmap\symbol{"F5FB}}
- \expandafter\def\csname simpleicon@wistiaicon\endcsname {\simpleiconsmap\symbol{"F5FC}}
- \expandafter\def\csname simpleicon@wixicon\endcsname {\simpleiconsmap\symbol{"F5FD}}
- \expandafter\def\csname simpleicon@wizzairicon\endcsname {\simpleiconsmap\symbol{"F5FE}}
- \expandafter\def\csname simpleicon@wolframicon\endcsname {\simpleiconsmap\symbol{"F5FF}}
- \expandafter\def\csname simpleicon@wolframlanguageicon\endcsname {\simpleiconsmap\symbol{"F600}}
- \expandafter\def\csname simpleicon@wolframmathematicaicon\endcsname {\simpleiconsmap\symbol{"F601}}
- \expandafter\def\csname simpleicon@wondershareicon\endcsname {\simpleiconsmap\symbol{"F602}}
- \expandafter\def\csname simpleicon@wondersharefilmoraicon\endcsname {\simpleiconsmap\symbol{"F603}}
- \expandafter\def\csname simpleicon@wooicon\endcsname {\simpleiconsmap\symbol{"F604}}
- \expandafter\def\csname simpleicon@woocommerceicon\endcsname {\simpleiconsmap\symbol{"F605}}
- \expandafter\def\csname simpleicon@wordpressicon\endcsname {\simpleiconsmap\symbol{"F606}}
- \expandafter\def\csname simpleicon@workplaceicon\endcsname {\simpleiconsmap\symbol{"F607}}
- \expandafter\def\csname simpleicon@worldhealthorganizationicon\endcsname {\simpleiconsmap\symbol{"F608}}
- \expandafter\def\csname simpleicon@wpengineicon\endcsname {\simpleiconsmap\symbol{"F609}}
- \expandafter\def\csname simpleicon@wpexplorericon\endcsname {\simpleiconsmap\symbol{"F60A}}
- \expandafter\def\csname simpleicon@wprocketicon\endcsname {\simpleiconsmap\symbol{"F60B}}
- \expandafter\def\csname simpleicon@writedotasicon\endcsname {\simpleiconsmap\symbol{"F60C}}
- \expandafter\def\csname simpleicon@wweicon\endcsname {\simpleiconsmap\symbol{"F60D}}
- \expandafter\def\csname simpleicon@wwiseicon\endcsname {\simpleiconsmap\symbol{"F60E}}
- \expandafter\def\csname simpleicon@wykopicon\endcsname {\simpleiconsmap\symbol{"F60F}}
- \expandafter\def\csname simpleicon@wyzeicon\endcsname {\simpleiconsmap\symbol{"F610}}
- \expandafter\def\csname simpleicon@xicon\endcsname {\simpleiconsmap\symbol{"F611}}
- \expandafter\def\csname simpleicon@xamppicon\endcsname {\simpleiconsmap\symbol{"F612}}
- \expandafter\def\csname simpleicon@xcodeicon\endcsname {\simpleiconsmap\symbol{"F613}}
- \expandafter\def\csname simpleicon@xdadevelopersicon\endcsname {\simpleiconsmap\symbol{"F614}}
- \expandafter\def\csname simpleicon@xdotorgicon\endcsname {\simpleiconsmap\symbol{"F615}}
- \expandafter\def\csname simpleicon@xenditicon\endcsname {\simpleiconsmap\symbol{"F616}}
- \expandafter\def\csname simpleicon@xeroicon\endcsname {\simpleiconsmap\symbol{"F617}}
- \expandafter\def\csname simpleicon@xfceicon\endcsname {\simpleiconsmap\symbol{"F618}}
- \expandafter\def\csname simpleicon@xiaohongshuicon\endcsname {\simpleiconsmap\symbol{"F619}}
- \expandafter\def\csname simpleicon@xiaomiicon\endcsname {\simpleiconsmap\symbol{"F61A}}
- \expandafter\def\csname simpleicon@xingicon\endcsname {\simpleiconsmap\symbol{"F61B}}
- \expandafter\def\csname simpleicon@xmppicon\endcsname {\simpleiconsmap\symbol{"F61C}}
- \expandafter\def\csname simpleicon@xoicon\endcsname {\simpleiconsmap\symbol{"F61D}}
- \expandafter\def\csname simpleicon@xrpicon\endcsname {\simpleiconsmap\symbol{"F61E}}
- \expandafter\def\csname simpleicon@xspliticon\endcsname {\simpleiconsmap\symbol{"F61F}}
- \expandafter\def\csname simpleicon@xstateicon\endcsname {\simpleiconsmap\symbol{"F620}}
- \expandafter\def\csname simpleicon@yabaiicon\endcsname {\simpleiconsmap\symbol{"F621}}
- \expandafter\def\csname simpleicon@yaleicon\endcsname {\simpleiconsmap\symbol{"F622}}
- \expandafter\def\csname simpleicon@yamahacorporationicon\endcsname {\simpleiconsmap\symbol{"F623}}
- \expandafter\def\csname simpleicon@yamahamotorcorporationicon\endcsname {\simpleiconsmap\symbol{"F624}}
- \expandafter\def\csname simpleicon@yamlicon\endcsname {\simpleiconsmap\symbol{"F625}}
- \expandafter\def\csname simpleicon@yandexcloudicon\endcsname {\simpleiconsmap\symbol{"F626}}
- \expandafter\def\csname simpleicon@yarnicon\endcsname {\simpleiconsmap\symbol{"F627}}
- \expandafter\def\csname simpleicon@ycombinatoricon\endcsname {\simpleiconsmap\symbol{"F628}}
- \expandafter\def\csname simpleicon@yelpicon\endcsname {\simpleiconsmap\symbol{"F629}}
- \expandafter\def\csname simpleicon@yetiicon\endcsname {\simpleiconsmap\symbol{"F62A}}
- \expandafter\def\csname simpleicon@yiiicon\endcsname {\simpleiconsmap\symbol{"F62B}}
- \expandafter\def\csname simpleicon@yoasticon\endcsname {\simpleiconsmap\symbol{"F62C}}
- \expandafter\def\csname simpleicon@youtubeicon\endcsname {\simpleiconsmap\symbol{"F62D}}
- \expandafter\def\csname simpleicon@youtubegamingicon\endcsname {\simpleiconsmap\symbol{"F62E}}
- \expandafter\def\csname simpleicon@youtubekidsicon\endcsname {\simpleiconsmap\symbol{"F62F}}
- \expandafter\def\csname simpleicon@youtubemusicicon\endcsname {\simpleiconsmap\symbol{"F630}}
- \expandafter\def\csname simpleicon@youtubeshortsicon\endcsname {\simpleiconsmap\symbol{"F631}}
- \expandafter\def\csname simpleicon@youtubestudioicon\endcsname {\simpleiconsmap\symbol{"F632}}
- \expandafter\def\csname simpleicon@youtubetvicon\endcsname {\simpleiconsmap\symbol{"F633}}
- \expandafter\def\csname simpleicon@yricon\endcsname {\simpleiconsmap\symbol{"F634}}
- \expandafter\def\csname simpleicon@yubicoicon\endcsname {\simpleiconsmap\symbol{"F635}}
- \expandafter\def\csname simpleicon@yunohosticon\endcsname {\simpleiconsmap\symbol{"F636}}
- \expandafter\def\csname simpleicon@zabkaicon\endcsname {\simpleiconsmap\symbol{"F637}}
- \expandafter\def\csname simpleicon@zaimicon\endcsname {\simpleiconsmap\symbol{"F638}}
- \expandafter\def\csname simpleicon@zalandoicon\endcsname {\simpleiconsmap\symbol{"F639}}
- \expandafter\def\csname simpleicon@zaloicon\endcsname {\simpleiconsmap\symbol{"F63A}}
- \expandafter\def\csname simpleicon@zapicon\endcsname {\simpleiconsmap\symbol{"F63B}}
- \expandafter\def\csname simpleicon@zapiericon\endcsname {\simpleiconsmap\symbol{"F63C}}
- \expandafter\def\csname simpleicon@zaraicon\endcsname {\simpleiconsmap\symbol{"F63D}}
- \expandafter\def\csname simpleicon@zazzleicon\endcsname {\simpleiconsmap\symbol{"F63E}}
- \expandafter\def\csname simpleicon@zcashicon\endcsname {\simpleiconsmap\symbol{"F63F}}
- \expandafter\def\csname simpleicon@zcoolicon\endcsname {\simpleiconsmap\symbol{"F640}}
- \expandafter\def\csname simpleicon@zdficon\endcsname {\simpleiconsmap\symbol{"F641}}
- \expandafter\def\csname simpleicon@zebpayicon\endcsname {\simpleiconsmap\symbol{"F642}}
- \expandafter\def\csname simpleicon@zebratechnologiesicon\endcsname {\simpleiconsmap\symbol{"F643}}
- \expandafter\def\csname simpleicon@zedindustriesicon\endcsname {\simpleiconsmap\symbol{"F644}}
- \expandafter\def\csname simpleicon@zelleicon\endcsname {\simpleiconsmap\symbol{"F645}}
- \expandafter\def\csname simpleicon@zendicon\endcsname {\simpleiconsmap\symbol{"F646}}
- \expandafter\def\csname simpleicon@zendeskicon\endcsname {\simpleiconsmap\symbol{"F647}}
- \expandafter\def\csname simpleicon@zennicon\endcsname {\simpleiconsmap\symbol{"F648}}
- \expandafter\def\csname simpleicon@zenodoicon\endcsname {\simpleiconsmap\symbol{"F649}}
- \expandafter\def\csname simpleicon@zensaricon\endcsname {\simpleiconsmap\symbol{"F64A}}
- \expandafter\def\csname simpleicon@zerodhaicon\endcsname {\simpleiconsmap\symbol{"F64B}}
- \expandafter\def\csname simpleicon@zerotiericon\endcsname {\simpleiconsmap\symbol{"F64C}}
- \expandafter\def\csname simpleicon@zerplyicon\endcsname {\simpleiconsmap\symbol{"F64D}}
- \expandafter\def\csname simpleicon@zettlricon\endcsname {\simpleiconsmap\symbol{"F64E}}
- \expandafter\def\csname simpleicon@zhihuicon\endcsname {\simpleiconsmap\symbol{"F64F}}
- \expandafter\def\csname simpleicon@zigicon\endcsname {\simpleiconsmap\symbol{"F650}}
- \expandafter\def\csname simpleicon@zigbeeicon\endcsname {\simpleiconsmap\symbol{"F651}}
- \expandafter\def\csname simpleicon@zigbee2mqtticon\endcsname {\simpleiconsmap\symbol{"F652}}
- \expandafter\def\csname simpleicon@ziggoicon\endcsname {\simpleiconsmap\symbol{"F653}}
- \expandafter\def\csname simpleicon@zilchicon\endcsname {\simpleiconsmap\symbol{"F654}}
- \expandafter\def\csname simpleicon@zillowicon\endcsname {\simpleiconsmap\symbol{"F655}}
- \expandafter\def\csname simpleicon@zincsearchicon\endcsname {\simpleiconsmap\symbol{"F656}}
- \expandafter\def\csname simpleicon@zingaticon\endcsname {\simpleiconsmap\symbol{"F657}}
- \expandafter\def\csname simpleicon@zodicon\endcsname {\simpleiconsmap\symbol{"F658}}
- \expandafter\def\csname simpleicon@zohoicon\endcsname {\simpleiconsmap\symbol{"F659}}
- \expandafter\def\csname simpleicon@zoipericon\endcsname {\simpleiconsmap\symbol{"F65A}}
- \expandafter\def\csname simpleicon@zomatoicon\endcsname {\simpleiconsmap\symbol{"F65B}}
- \expandafter\def\csname simpleicon@zoomicon\endcsname {\simpleiconsmap\symbol{"F65C}}
- \expandafter\def\csname simpleicon@zorinicon\endcsname {\simpleiconsmap\symbol{"F65D}}
- \expandafter\def\csname simpleicon@zoteroicon\endcsname {\simpleiconsmap\symbol{"F65E}}
- \expandafter\def\csname simpleicon@zshicon\endcsname {\simpleiconsmap\symbol{"F65F}}
- \expandafter\def\csname simpleicon@zulipicon\endcsname {\simpleiconsmap\symbol{"F660}}
- \expandafter\def\csname simpleicon@zyteicon\endcsname {\simpleiconsmap\symbol{"F661}} \ No newline at end of file
+ \expandafter\def\csname simpleicon@apachedolphinschedulericon\endcsname {\simpleiconsmap\symbol{"EAB8}}
+ \expandafter\def\csname simpleicon@apachedruidicon\endcsname {\simpleiconsmap\symbol{"EAB9}}
+ \expandafter\def\csname simpleicon@apacheechartsicon\endcsname {\simpleiconsmap\symbol{"EABA}}
+ \expandafter\def\csname simpleicon@apacheflinkicon\endcsname {\simpleiconsmap\symbol{"EABB}}
+ \expandafter\def\csname simpleicon@apachefreemarkericon\endcsname {\simpleiconsmap\symbol{"EABC}}
+ \expandafter\def\csname simpleicon@apachegroovyicon\endcsname {\simpleiconsmap\symbol{"EABD}}
+ \expandafter\def\csname simpleicon@apacheguacamoleicon\endcsname {\simpleiconsmap\symbol{"EABE}}
+ \expandafter\def\csname simpleicon@apachehadoopicon\endcsname {\simpleiconsmap\symbol{"EABF}}
+ \expandafter\def\csname simpleicon@apachehbaseicon\endcsname {\simpleiconsmap\symbol{"EAC0}}
+ \expandafter\def\csname simpleicon@apachehiveicon\endcsname {\simpleiconsmap\symbol{"EAC1}}
+ \expandafter\def\csname simpleicon@apachejmetericon\endcsname {\simpleiconsmap\symbol{"EAC2}}
+ \expandafter\def\csname simpleicon@apachekafkaicon\endcsname {\simpleiconsmap\symbol{"EAC3}}
+ \expandafter\def\csname simpleicon@apachekylinicon\endcsname {\simpleiconsmap\symbol{"EAC4}}
+ \expandafter\def\csname simpleicon@apacheluceneicon\endcsname {\simpleiconsmap\symbol{"EAC5}}
+ \expandafter\def\csname simpleicon@apachemavenicon\endcsname {\simpleiconsmap\symbol{"EAC6}}
+ \expandafter\def\csname simpleicon@apachenetbeansideicon\endcsname {\simpleiconsmap\symbol{"EAC7}}
+ \expandafter\def\csname simpleicon@apachenifiicon\endcsname {\simpleiconsmap\symbol{"EAC8}}
+ \expandafter\def\csname simpleicon@apacheopenofficeicon\endcsname {\simpleiconsmap\symbol{"EAC9}}
+ \expandafter\def\csname simpleicon@apacheparqueticon\endcsname {\simpleiconsmap\symbol{"EACA}}
+ \expandafter\def\csname simpleicon@apachepulsaricon\endcsname {\simpleiconsmap\symbol{"EACB}}
+ \expandafter\def\csname simpleicon@apacherocketmqicon\endcsname {\simpleiconsmap\symbol{"EACC}}
+ \expandafter\def\csname simpleicon@apachesolricon\endcsname {\simpleiconsmap\symbol{"EACD}}
+ \expandafter\def\csname simpleicon@apachesparkicon\endcsname {\simpleiconsmap\symbol{"EACE}}
+ \expandafter\def\csname simpleicon@apachestormicon\endcsname {\simpleiconsmap\symbol{"EACF}}
+ \expandafter\def\csname simpleicon@apachesuperseticon\endcsname {\simpleiconsmap\symbol{"EAD0}}
+ \expandafter\def\csname simpleicon@apachetomcaticon\endcsname {\simpleiconsmap\symbol{"EAD1}}
+ \expandafter\def\csname simpleicon@aparaticon\endcsname {\simpleiconsmap\symbol{"EAD2}}
+ \expandafter\def\csname simpleicon@apifoxicon\endcsname {\simpleiconsmap\symbol{"EAD3}}
+ \expandafter\def\csname simpleicon@apmterminalsicon\endcsname {\simpleiconsmap\symbol{"EAD4}}
+ \expandafter\def\csname simpleicon@apollographqlicon\endcsname {\simpleiconsmap\symbol{"EAD5}}
+ \expandafter\def\csname simpleicon@apostropheicon\endcsname {\simpleiconsmap\symbol{"EAD6}}
+ \expandafter\def\csname simpleicon@appstoreicon\endcsname {\simpleiconsmap\symbol{"EAD7}}
+ \expandafter\def\csname simpleicon@appgalleryicon\endcsname {\simpleiconsmap\symbol{"EAD8}}
+ \expandafter\def\csname simpleicon@appianicon\endcsname {\simpleiconsmap\symbol{"EAD9}}
+ \expandafter\def\csname simpleicon@appiumicon\endcsname {\simpleiconsmap\symbol{"EADA}}
+ \expandafter\def\csname simpleicon@appleicon\endcsname {\simpleiconsmap\symbol{"EADB}}
+ \expandafter\def\csname simpleicon@applearcadeicon\endcsname {\simpleiconsmap\symbol{"EADC}}
+ \expandafter\def\csname simpleicon@applemusicicon\endcsname {\simpleiconsmap\symbol{"EADD}}
+ \expandafter\def\csname simpleicon@applenewsicon\endcsname {\simpleiconsmap\symbol{"EADE}}
+ \expandafter\def\csname simpleicon@applepayicon\endcsname {\simpleiconsmap\symbol{"EADF}}
+ \expandafter\def\csname simpleicon@applepodcastsicon\endcsname {\simpleiconsmap\symbol{"EAE0}}
+ \expandafter\def\csname simpleicon@appletvicon\endcsname {\simpleiconsmap\symbol{"EAE1}}
+ \expandafter\def\csname simpleicon@appsignalicon\endcsname {\simpleiconsmap\symbol{"EAE2}}
+ \expandafter\def\csname simpleicon@appsmithicon\endcsname {\simpleiconsmap\symbol{"EAE3}}
+ \expandafter\def\csname simpleicon@appveyoricon\endcsname {\simpleiconsmap\symbol{"EAE4}}
+ \expandafter\def\csname simpleicon@appwriteicon\endcsname {\simpleiconsmap\symbol{"EAE5}}
+ \expandafter\def\csname simpleicon@aquaicon\endcsname {\simpleiconsmap\symbol{"EAE6}}
+ \expandafter\def\csname simpleicon@aralicon\endcsname {\simpleiconsmap\symbol{"EAE7}}
+ \expandafter\def\csname simpleicon@arangodbicon\endcsname {\simpleiconsmap\symbol{"EAE8}}
+ \expandafter\def\csname simpleicon@arcicon\endcsname {\simpleiconsmap\symbol{"EAE9}}
+ \expandafter\def\csname simpleicon@arcgisicon\endcsname {\simpleiconsmap\symbol{"EAEA}}
+ \expandafter\def\csname simpleicon@archlinuxicon\endcsname {\simpleiconsmap\symbol{"EAEB}}
+ \expandafter\def\csname simpleicon@archicadicon\endcsname {\simpleiconsmap\symbol{"EAEC}}
+ \expandafter\def\csname simpleicon@archiveofourownicon\endcsname {\simpleiconsmap\symbol{"EAED}}
+ \expandafter\def\csname simpleicon@ardouricon\endcsname {\simpleiconsmap\symbol{"EAEE}}
+ \expandafter\def\csname simpleicon@arduinoicon\endcsname {\simpleiconsmap\symbol{"EAEF}}
+ \expandafter\def\csname simpleicon@argoicon\endcsname {\simpleiconsmap\symbol{"EAF0}}
+ \expandafter\def\csname simpleicon@argosicon\endcsname {\simpleiconsmap\symbol{"EAF1}}
+ \expandafter\def\csname simpleicon@ariakiticon\endcsname {\simpleiconsmap\symbol{"EAF2}}
+ \expandafter\def\csname simpleicon@arkecosystemicon\endcsname {\simpleiconsmap\symbol{"EAF3}}
+ \expandafter\def\csname simpleicon@arloicon\endcsname {\simpleiconsmap\symbol{"EAF4}}
+ \expandafter\def\csname simpleicon@armicon\endcsname {\simpleiconsmap\symbol{"EAF5}}
+ \expandafter\def\csname simpleicon@armkeilicon\endcsname {\simpleiconsmap\symbol{"EAF6}}
+ \expandafter\def\csname simpleicon@arstechnicaicon\endcsname {\simpleiconsmap\symbol{"EAF7}}
+ \expandafter\def\csname simpleicon@artifacthubicon\endcsname {\simpleiconsmap\symbol{"EAF8}}
+ \expandafter\def\csname simpleicon@artixlinuxicon\endcsname {\simpleiconsmap\symbol{"EAF9}}
+ \expandafter\def\csname simpleicon@artstationicon\endcsname {\simpleiconsmap\symbol{"EAFA}}
+ \expandafter\def\csname simpleicon@arxivicon\endcsname {\simpleiconsmap\symbol{"EAFB}}
+ \expandafter\def\csname simpleicon@asahilinuxicon\endcsname {\simpleiconsmap\symbol{"EAFC}}
+ \expandafter\def\csname simpleicon@asanaicon\endcsname {\simpleiconsmap\symbol{"EAFD}}
+ \expandafter\def\csname simpleicon@asciidoctoricon\endcsname {\simpleiconsmap\symbol{"EAFE}}
+ \expandafter\def\csname simpleicon@asciinemaicon\endcsname {\simpleiconsmap\symbol{"EAFF}}
+ \expandafter\def\csname simpleicon@asdaicon\endcsname {\simpleiconsmap\symbol{"EB00}}
+ \expandafter\def\csname simpleicon@asepriteicon\endcsname {\simpleiconsmap\symbol{"EB01}}
+ \expandafter\def\csname simpleicon@assemblyscripticon\endcsname {\simpleiconsmap\symbol{"EB02}}
+ \expandafter\def\csname simpleicon@asteriskicon\endcsname {\simpleiconsmap\symbol{"EB03}}
+ \expandafter\def\csname simpleicon@astonmartinicon\endcsname {\simpleiconsmap\symbol{"EB04}}
+ \expandafter\def\csname simpleicon@astraicon\endcsname {\simpleiconsmap\symbol{"EB05}}
+ \expandafter\def\csname simpleicon@astralicon\endcsname {\simpleiconsmap\symbol{"EB06}}
+ \expandafter\def\csname simpleicon@astroicon\endcsname {\simpleiconsmap\symbol{"EB07}}
+ \expandafter\def\csname simpleicon@asusicon\endcsname {\simpleiconsmap\symbol{"EB08}}
+ \expandafter\def\csname simpleicon@atandticon\endcsname {\simpleiconsmap\symbol{"EB09}}
+ \expandafter\def\csname simpleicon@atariicon\endcsname {\simpleiconsmap\symbol{"EB0A}}
+ \expandafter\def\csname simpleicon@atlasosicon\endcsname {\simpleiconsmap\symbol{"EB0B}}
+ \expandafter\def\csname simpleicon@atlassianicon\endcsname {\simpleiconsmap\symbol{"EB0C}}
+ \expandafter\def\csname simpleicon@auchanicon\endcsname {\simpleiconsmap\symbol{"EB0D}}
+ \expandafter\def\csname simpleicon@audacityicon\endcsname {\simpleiconsmap\symbol{"EB0E}}
+ \expandafter\def\csname simpleicon@audiicon\endcsname {\simpleiconsmap\symbol{"EB0F}}
+ \expandafter\def\csname simpleicon@audibleicon\endcsname {\simpleiconsmap\symbol{"EB10}}
+ \expandafter\def\csname simpleicon@audiotechnicaicon\endcsname {\simpleiconsmap\symbol{"EB11}}
+ \expandafter\def\csname simpleicon@audiobookshelficon\endcsname {\simpleiconsmap\symbol{"EB12}}
+ \expandafter\def\csname simpleicon@audioboomicon\endcsname {\simpleiconsmap\symbol{"EB13}}
+ \expandafter\def\csname simpleicon@audiomackicon\endcsname {\simpleiconsmap\symbol{"EB14}}
+ \expandafter\def\csname simpleicon@aureliaicon\endcsname {\simpleiconsmap\symbol{"EB15}}
+ \expandafter\def\csname simpleicon@auth0icon\endcsname {\simpleiconsmap\symbol{"EB16}}
+ \expandafter\def\csname simpleicon@autheliaicon\endcsname {\simpleiconsmap\symbol{"EB17}}
+ \expandafter\def\csname simpleicon@authentikicon\endcsname {\simpleiconsmap\symbol{"EB18}}
+ \expandafter\def\csname simpleicon@authyicon\endcsname {\simpleiconsmap\symbol{"EB19}}
+ \expandafter\def\csname simpleicon@autocadicon\endcsname {\simpleiconsmap\symbol{"EB1A}}
+ \expandafter\def\csname simpleicon@autocannonicon\endcsname {\simpleiconsmap\symbol{"EB1B}}
+ \expandafter\def\csname simpleicon@autodeskicon\endcsname {\simpleiconsmap\symbol{"EB1C}}
+ \expandafter\def\csname simpleicon@autodeskmayaicon\endcsname {\simpleiconsmap\symbol{"EB1D}}
+ \expandafter\def\csname simpleicon@autodeskreviticon\endcsname {\simpleiconsmap\symbol{"EB1E}}
+ \expandafter\def\csname simpleicon@autohotkeyicon\endcsname {\simpleiconsmap\symbol{"EB1F}}
+ \expandafter\def\csname simpleicon@autoiticon\endcsname {\simpleiconsmap\symbol{"EB20}}
+ \expandafter\def\csname simpleicon@automatticicon\endcsname {\simpleiconsmap\symbol{"EB21}}
+ \expandafter\def\csname simpleicon@autoprefixericon\endcsname {\simpleiconsmap\symbol{"EB22}}
+ \expandafter\def\csname simpleicon@autozoneicon\endcsname {\simpleiconsmap\symbol{"EB23}}
+ \expandafter\def\csname simpleicon@avajsicon\endcsname {\simpleiconsmap\symbol{"EB24}}
+ \expandafter\def\csname simpleicon@avasticon\endcsname {\simpleiconsmap\symbol{"EB25}}
+ \expandafter\def\csname simpleicon@aviancaicon\endcsname {\simpleiconsmap\symbol{"EB26}}
+ \expandafter\def\csname simpleicon@aviraicon\endcsname {\simpleiconsmap\symbol{"EB27}}
+ \expandafter\def\csname simpleicon@awesomelistsicon\endcsname {\simpleiconsmap\symbol{"EB28}}
+ \expandafter\def\csname simpleicon@awesomewmicon\endcsname {\simpleiconsmap\symbol{"EB29}}
+ \expandafter\def\csname simpleicon@awsamplifyicon\endcsname {\simpleiconsmap\symbol{"EB2A}}
+ \expandafter\def\csname simpleicon@awselasticloadbalancingicon\endcsname {\simpleiconsmap\symbol{"EB2B}}
+ \expandafter\def\csname simpleicon@awsfargateicon\endcsname {\simpleiconsmap\symbol{"EB2C}}
+ \expandafter\def\csname simpleicon@awslambdaicon\endcsname {\simpleiconsmap\symbol{"EB2D}}
+ \expandafter\def\csname simpleicon@awsorganizationsicon\endcsname {\simpleiconsmap\symbol{"EB2E}}
+ \expandafter\def\csname simpleicon@awssecretsmanagericon\endcsname {\simpleiconsmap\symbol{"EB2F}}
+ \expandafter\def\csname simpleicon@awwwardsicon\endcsname {\simpleiconsmap\symbol{"EB30}}
+ \expandafter\def\csname simpleicon@axiosicon\endcsname {\simpleiconsmap\symbol{"EB31}}
+ \expandafter\def\csname simpleicon@bandrautomationicon\endcsname {\simpleiconsmap\symbol{"EB32}}
+ \expandafter\def\csname simpleicon@babelicon\endcsname {\simpleiconsmap\symbol{"EB33}}
+ \expandafter\def\csname simpleicon@babelioicon\endcsname {\simpleiconsmap\symbol{"EB34}}
+ \expandafter\def\csname simpleicon@babylondotjsicon\endcsname {\simpleiconsmap\symbol{"EB35}}
+ \expandafter\def\csname simpleicon@backblazeicon\endcsname {\simpleiconsmap\symbol{"EB36}}
+ \expandafter\def\csname simpleicon@backboneicon\endcsname {\simpleiconsmap\symbol{"EB37}}
+ \expandafter\def\csname simpleicon@backbonedotjsicon\endcsname {\simpleiconsmap\symbol{"EB38}}
+ \expandafter\def\csname simpleicon@backendlessicon\endcsname {\simpleiconsmap\symbol{"EB39}}
+ \expandafter\def\csname simpleicon@backstageicon\endcsname {\simpleiconsmap\symbol{"EB3A}}
+ \expandafter\def\csname simpleicon@badooicon\endcsname {\simpleiconsmap\symbol{"EB3B}}
+ \expandafter\def\csname simpleicon@baiduicon\endcsname {\simpleiconsmap\symbol{"EB3C}}
+ \expandafter\def\csname simpleicon@bakalariicon\endcsname {\simpleiconsmap\symbol{"EB3D}}
+ \expandafter\def\csname simpleicon@bambooicon\endcsname {\simpleiconsmap\symbol{"EB3E}}
+ \expandafter\def\csname simpleicon@bambulabicon\endcsname {\simpleiconsmap\symbol{"EB3F}}
+ \expandafter\def\csname simpleicon@bandcampicon\endcsname {\simpleiconsmap\symbol{"EB40}}
+ \expandafter\def\csname simpleicon@bandlabicon\endcsname {\simpleiconsmap\symbol{"EB41}}
+ \expandafter\def\csname simpleicon@bandsintownicon\endcsname {\simpleiconsmap\symbol{"EB42}}
+ \expandafter\def\csname simpleicon@bankofamericaicon\endcsname {\simpleiconsmap\symbol{"EB43}}
+ \expandafter\def\csname simpleicon@barclaysicon\endcsname {\simpleiconsmap\symbol{"EB44}}
+ \expandafter\def\csname simpleicon@baremetricsicon\endcsname {\simpleiconsmap\symbol{"EB45}}
+ \expandafter\def\csname simpleicon@barmeniaicon\endcsname {\simpleiconsmap\symbol{"EB46}}
+ \expandafter\def\csname simpleicon@basecampicon\endcsname {\simpleiconsmap\symbol{"EB47}}
+ \expandafter\def\csname simpleicon@baserowicon\endcsname {\simpleiconsmap\symbol{"EB48}}
+ \expandafter\def\csname simpleicon@basicattentiontokenicon\endcsname {\simpleiconsmap\symbol{"EB49}}
+ \expandafter\def\csname simpleicon@bastyonicon\endcsname {\simpleiconsmap\symbol{"EB4A}}
+ \expandafter\def\csname simpleicon@baticon\endcsname {\simpleiconsmap\symbol{"EB4B}}
+ \expandafter\def\csname simpleicon@bataicon\endcsname {\simpleiconsmap\symbol{"EB4C}}
+ \expandafter\def\csname simpleicon@battledotneticon\endcsname {\simpleiconsmap\symbol{"EB4D}}
+ \expandafter\def\csname simpleicon@bazelicon\endcsname {\simpleiconsmap\symbol{"EB4E}}
+ \expandafter\def\csname simpleicon@beatporticon\endcsname {\simpleiconsmap\symbol{"EB4F}}
+ \expandafter\def\csname simpleicon@beatsicon\endcsname {\simpleiconsmap\symbol{"EB50}}
+ \expandafter\def\csname simpleicon@beatsbydreicon\endcsname {\simpleiconsmap\symbol{"EB51}}
+ \expandafter\def\csname simpleicon@beatstarsicon\endcsname {\simpleiconsmap\symbol{"EB52}}
+ \expandafter\def\csname simpleicon@beekeeperstudioicon\endcsname {\simpleiconsmap\symbol{"EB53}}
+ \expandafter\def\csname simpleicon@behanceicon\endcsname {\simpleiconsmap\symbol{"EB54}}
+ \expandafter\def\csname simpleicon@beijingsubwayicon\endcsname {\simpleiconsmap\symbol{"EB55}}
+ \expandafter\def\csname simpleicon@bemicon\endcsname {\simpleiconsmap\symbol{"EB56}}
+ \expandafter\def\csname simpleicon@bentleyicon\endcsname {\simpleiconsmap\symbol{"EB57}}
+ \expandafter\def\csname simpleicon@bentoicon\endcsname {\simpleiconsmap\symbol{"EB58}}
+ \expandafter\def\csname simpleicon@bentoboxicon\endcsname {\simpleiconsmap\symbol{"EB59}}
+ \expandafter\def\csname simpleicon@bentomlicon\endcsname {\simpleiconsmap\symbol{"EB5A}}
+ \expandafter\def\csname simpleicon@berealicon\endcsname {\simpleiconsmap\symbol{"EB5B}}
+ \expandafter\def\csname simpleicon@betfairicon\endcsname {\simpleiconsmap\symbol{"EB5C}}
+ \expandafter\def\csname simpleicon@betterstackicon\endcsname {\simpleiconsmap\symbol{"EB5D}}
+ \expandafter\def\csname simpleicon@betterdiscordicon\endcsname {\simpleiconsmap\symbol{"EB5E}}
+ \expandafter\def\csname simpleicon@bevyicon\endcsname {\simpleiconsmap\symbol{"EB5F}}
+ \expandafter\def\csname simpleicon@bigcartelicon\endcsname {\simpleiconsmap\symbol{"EB60}}
+ \expandafter\def\csname simpleicon@bigbasketicon\endcsname {\simpleiconsmap\symbol{"EB61}}
+ \expandafter\def\csname simpleicon@bigbluebuttonicon\endcsname {\simpleiconsmap\symbol{"EB62}}
+ \expandafter\def\csname simpleicon@bigcommerceicon\endcsname {\simpleiconsmap\symbol{"EB63}}
+ \expandafter\def\csname simpleicon@bilibiliicon\endcsname {\simpleiconsmap\symbol{"EB64}}
+ \expandafter\def\csname simpleicon@billboardicon\endcsname {\simpleiconsmap\symbol{"EB65}}
+ \expandafter\def\csname simpleicon@bimicon\endcsname {\simpleiconsmap\symbol{"EB66}}
+ \expandafter\def\csname simpleicon@binanceicon\endcsname {\simpleiconsmap\symbol{"EB67}}
+ \expandafter\def\csname simpleicon@biolinkicon\endcsname {\simpleiconsmap\symbol{"EB68}}
+ \expandafter\def\csname simpleicon@biomeicon\endcsname {\simpleiconsmap\symbol{"EB69}}
+ \expandafter\def\csname simpleicon@bisecthostingicon\endcsname {\simpleiconsmap\symbol{"EB6A}}
+ \expandafter\def\csname simpleicon@biticon\endcsname {\simpleiconsmap\symbol{"EB6B}}
+ \expandafter\def\csname simpleicon@bitbucketicon\endcsname {\simpleiconsmap\symbol{"EB6C}}
+ \expandafter\def\csname simpleicon@bitcoinicon\endcsname {\simpleiconsmap\symbol{"EB6D}}
+ \expandafter\def\csname simpleicon@bitcoincashicon\endcsname {\simpleiconsmap\symbol{"EB6E}}
+ \expandafter\def\csname simpleicon@bitcoinsvicon\endcsname {\simpleiconsmap\symbol{"EB6F}}
+ \expandafter\def\csname simpleicon@bitcometicon\endcsname {\simpleiconsmap\symbol{"EB70}}
+ \expandafter\def\csname simpleicon@bitdefendericon\endcsname {\simpleiconsmap\symbol{"EB71}}
+ \expandafter\def\csname simpleicon@bitlyicon\endcsname {\simpleiconsmap\symbol{"EB72}}
+ \expandafter\def\csname simpleicon@bitriseicon\endcsname {\simpleiconsmap\symbol{"EB73}}
+ \expandafter\def\csname simpleicon@bittorrenticon\endcsname {\simpleiconsmap\symbol{"EB74}}
+ \expandafter\def\csname simpleicon@bitwardenicon\endcsname {\simpleiconsmap\symbol{"EB75}}
+ \expandafter\def\csname simpleicon@bitwigicon\endcsname {\simpleiconsmap\symbol{"EB76}}
+ \expandafter\def\csname simpleicon@blackberryicon\endcsname {\simpleiconsmap\symbol{"EB77}}
+ \expandafter\def\csname simpleicon@blackmagicdesignicon\endcsname {\simpleiconsmap\symbol{"EB78}}
+ \expandafter\def\csname simpleicon@blazemetericon\endcsname {\simpleiconsmap\symbol{"EB79}}
+ \expandafter\def\csname simpleicon@blazoricon\endcsname {\simpleiconsmap\symbol{"EB7A}}
+ \expandafter\def\csname simpleicon@blendericon\endcsname {\simpleiconsmap\symbol{"EB7B}}
+ \expandafter\def\csname simpleicon@blockbenchicon\endcsname {\simpleiconsmap\symbol{"EB7C}}
+ \expandafter\def\csname simpleicon@blockchaindotcomicon\endcsname {\simpleiconsmap\symbol{"EB7D}}
+ \expandafter\def\csname simpleicon@bloggericon\endcsname {\simpleiconsmap\symbol{"EB7E}}
+ \expandafter\def\csname simpleicon@bloglovinicon\endcsname {\simpleiconsmap\symbol{"EB7F}}
+ \expandafter\def\csname simpleicon@blueprinticon\endcsname {\simpleiconsmap\symbol{"EB80}}
+ \expandafter\def\csname simpleicon@blueskyicon\endcsname {\simpleiconsmap\symbol{"EB81}}
+ \expandafter\def\csname simpleicon@bluesoundicon\endcsname {\simpleiconsmap\symbol{"EB82}}
+ \expandafter\def\csname simpleicon@bluetoothicon\endcsname {\simpleiconsmap\symbol{"EB83}}
+ \expandafter\def\csname simpleicon@bmcsoftwareicon\endcsname {\simpleiconsmap\symbol{"EB84}}
+ \expandafter\def\csname simpleicon@bmwicon\endcsname {\simpleiconsmap\symbol{"EB85}}
+ \expandafter\def\csname simpleicon@bnbchainicon\endcsname {\simpleiconsmap\symbol{"EB86}}
+ \expandafter\def\csname simpleicon@boardgamegeekicon\endcsname {\simpleiconsmap\symbol{"EB87}}
+ \expandafter\def\csname simpleicon@boaticon\endcsname {\simpleiconsmap\symbol{"EB88}}
+ \expandafter\def\csname simpleicon@boehringeringelheimicon\endcsname {\simpleiconsmap\symbol{"EB89}}
+ \expandafter\def\csname simpleicon@boeingicon\endcsname {\simpleiconsmap\symbol{"EB8A}}
+ \expandafter\def\csname simpleicon@bombardiericon\endcsname {\simpleiconsmap\symbol{"EB8B}}
+ \expandafter\def\csname simpleicon@bookalopeicon\endcsname {\simpleiconsmap\symbol{"EB8C}}
+ \expandafter\def\csname simpleicon@bookbubicon\endcsname {\simpleiconsmap\symbol{"EB8D}}
+ \expandafter\def\csname simpleicon@bookmetericon\endcsname {\simpleiconsmap\symbol{"EB8E}}
+ \expandafter\def\csname simpleicon@bookmyshowicon\endcsname {\simpleiconsmap\symbol{"EB8F}}
+ \expandafter\def\csname simpleicon@bookstackicon\endcsname {\simpleiconsmap\symbol{"EB90}}
+ \expandafter\def\csname simpleicon@boosticon\endcsname {\simpleiconsmap\symbol{"EB91}}
+ \expandafter\def\csname simpleicon@boostyicon\endcsname {\simpleiconsmap\symbol{"EB92}}
+ \expandafter\def\csname simpleicon@bootsicon\endcsname {\simpleiconsmap\symbol{"EB93}}
+ \expandafter\def\csname simpleicon@bootstrapicon\endcsname {\simpleiconsmap\symbol{"EB94}}
+ \expandafter\def\csname simpleicon@borgbackupicon\endcsname {\simpleiconsmap\symbol{"EB95}}
+ \expandafter\def\csname simpleicon@boschicon\endcsname {\simpleiconsmap\symbol{"EB96}}
+ \expandafter\def\csname simpleicon@boseicon\endcsname {\simpleiconsmap\symbol{"EB97}}
+ \expandafter\def\csname simpleicon@botblecmsicon\endcsname {\simpleiconsmap\symbol{"EB98}}
+ \expandafter\def\csname simpleicon@boulangericon\endcsname {\simpleiconsmap\symbol{"EB99}}
+ \expandafter\def\csname simpleicon@bowericon\endcsname {\simpleiconsmap\symbol{"EB9A}}
+ \expandafter\def\csname simpleicon@boxicon\endcsname {\simpleiconsmap\symbol{"EB9B}}
+ \expandafter\def\csname simpleicon@boxysvgicon\endcsname {\simpleiconsmap\symbol{"EB9C}}
+ \expandafter\def\csname simpleicon@braintreeicon\endcsname {\simpleiconsmap\symbol{"EB9D}}
+ \expandafter\def\csname simpleicon@brandfoldericon\endcsname {\simpleiconsmap\symbol{"EB9E}}
+ \expandafter\def\csname simpleicon@braveicon\endcsname {\simpleiconsmap\symbol{"EB9F}}
+ \expandafter\def\csname simpleicon@breakericon\endcsname {\simpleiconsmap\symbol{"EBA0}}
+ \expandafter\def\csname simpleicon@brenntagicon\endcsname {\simpleiconsmap\symbol{"EBA1}}
+ \expandafter\def\csname simpleicon@brevoicon\endcsname {\simpleiconsmap\symbol{"EBA2}}
+ \expandafter\def\csname simpleicon@brexicon\endcsname {\simpleiconsmap\symbol{"EBA3}}
+ \expandafter\def\csname simpleicon@bricksicon\endcsname {\simpleiconsmap\symbol{"EBA4}}
+ \expandafter\def\csname simpleicon@britishairwaysicon\endcsname {\simpleiconsmap\symbol{"EBA5}}
+ \expandafter\def\csname simpleicon@broadcomicon\endcsname {\simpleiconsmap\symbol{"EBA6}}
+ \expandafter\def\csname simpleicon@brunoicon\endcsname {\simpleiconsmap\symbol{"EBA7}}
+ \expandafter\def\csname simpleicon@bsdicon\endcsname {\simpleiconsmap\symbol{"EBA8}}
+ \expandafter\def\csname simpleicon@bspwmicon\endcsname {\simpleiconsmap\symbol{"EBA9}}
+ \expandafter\def\csname simpleicon@bticon\endcsname {\simpleiconsmap\symbol{"EBAA}}
+ \expandafter\def\csname simpleicon@buddyicon\endcsname {\simpleiconsmap\symbol{"EBAB}}
+ \expandafter\def\csname simpleicon@budibaseicon\endcsname {\simpleiconsmap\symbol{"EBAC}}
+ \expandafter\def\csname simpleicon@buefyicon\endcsname {\simpleiconsmap\symbol{"EBAD}}
+ \expandafter\def\csname simpleicon@buffericon\endcsname {\simpleiconsmap\symbol{"EBAE}}
+ \expandafter\def\csname simpleicon@bugattiicon\endcsname {\simpleiconsmap\symbol{"EBAF}}
+ \expandafter\def\csname simpleicon@bugcrowdicon\endcsname {\simpleiconsmap\symbol{"EBB0}}
+ \expandafter\def\csname simpleicon@bugsnagicon\endcsname {\simpleiconsmap\symbol{"EBB1}}
+ \expandafter\def\csname simpleicon@buhlicon\endcsname {\simpleiconsmap\symbol{"EBB2}}
+ \expandafter\def\csname simpleicon@buildkiteicon\endcsname {\simpleiconsmap\symbol{"EBB3}}
+ \expandafter\def\csname simpleicon@builtbybiticon\endcsname {\simpleiconsmap\symbol{"EBB4}}
+ \expandafter\def\csname simpleicon@bukalapakicon\endcsname {\simpleiconsmap\symbol{"EBB5}}
+ \expandafter\def\csname simpleicon@bulmaicon\endcsname {\simpleiconsmap\symbol{"EBB6}}
+ \expandafter\def\csname simpleicon@bunicon\endcsname {\simpleiconsmap\symbol{"EBB7}}
+ \expandafter\def\csname simpleicon@bungieicon\endcsname {\simpleiconsmap\symbol{"EBB8}}
+ \expandafter\def\csname simpleicon@bunqicon\endcsname {\simpleiconsmap\symbol{"EBB9}}
+ \expandafter\def\csname simpleicon@burgerkingicon\endcsname {\simpleiconsmap\symbol{"EBBA}}
+ \expandafter\def\csname simpleicon@burpsuiteicon\endcsname {\simpleiconsmap\symbol{"EBBB}}
+ \expandafter\def\csname simpleicon@burtonicon\endcsname {\simpleiconsmap\symbol{"EBBC}}
+ \expandafter\def\csname simpleicon@buymeacoffeeicon\endcsname {\simpleiconsmap\symbol{"EBBD}}
+ \expandafter\def\csname simpleicon@buyselladsicon\endcsname {\simpleiconsmap\symbol{"EBBE}}
+ \expandafter\def\csname simpleicon@buzzfeedicon\endcsname {\simpleiconsmap\symbol{"EBBF}}
+ \expandafter\def\csname simpleicon@bvgicon\endcsname {\simpleiconsmap\symbol{"EBC0}}
+ \expandafter\def\csname simpleicon@byjusicon\endcsname {\simpleiconsmap\symbol{"EBC1}}
+ \expandafter\def\csname simpleicon@bytedanceicon\endcsname {\simpleiconsmap\symbol{"EBC2}}
+ \expandafter\def\csname simpleicon@cicon\endcsname {\simpleiconsmap\symbol{"EBC3}}
+ \expandafter\def\csname simpleicon@cplusplusicon\endcsname {\simpleiconsmap\symbol{"EBC4}}
+ \expandafter\def\csname simpleicon@cplusplusbuildericon\endcsname {\simpleiconsmap\symbol{"EBC5}}
+ \expandafter\def\csname simpleicon@cacheticon\endcsname {\simpleiconsmap\symbol{"EBC6}}
+ \expandafter\def\csname simpleicon@caddyicon\endcsname {\simpleiconsmap\symbol{"EBC7}}
+ \expandafter\def\csname simpleicon@cadillacicon\endcsname {\simpleiconsmap\symbol{"EBC8}}
+ \expandafter\def\csname simpleicon@cafepressicon\endcsname {\simpleiconsmap\symbol{"EBC9}}
+ \expandafter\def\csname simpleicon@cairographicsicon\endcsname {\simpleiconsmap\symbol{"EBCA}}
+ \expandafter\def\csname simpleicon@cairometroicon\endcsname {\simpleiconsmap\symbol{"EBCB}}
+ \expandafter\def\csname simpleicon@caixabankicon\endcsname {\simpleiconsmap\symbol{"EBCC}}
+ \expandafter\def\csname simpleicon@cakephpicon\endcsname {\simpleiconsmap\symbol{"EBCD}}
+ \expandafter\def\csname simpleicon@caldotcomicon\endcsname {\simpleiconsmap\symbol{"EBCE}}
+ \expandafter\def\csname simpleicon@calendlyicon\endcsname {\simpleiconsmap\symbol{"EBCF}}
+ \expandafter\def\csname simpleicon@calibrewebicon\endcsname {\simpleiconsmap\symbol{"EBD0}}
+ \expandafter\def\csname simpleicon@campaignmonitoricon\endcsname {\simpleiconsmap\symbol{"EBD1}}
+ \expandafter\def\csname simpleicon@camundaicon\endcsname {\simpleiconsmap\symbol{"EBD2}}
+ \expandafter\def\csname simpleicon@canonicalicon\endcsname {\simpleiconsmap\symbol{"EBD3}}
+ \expandafter\def\csname simpleicon@canvaicon\endcsname {\simpleiconsmap\symbol{"EBD4}}
+ \expandafter\def\csname simpleicon@canvasicon\endcsname {\simpleiconsmap\symbol{"EBD5}}
+ \expandafter\def\csname simpleicon@capacitoricon\endcsname {\simpleiconsmap\symbol{"EBD6}}
+ \expandafter\def\csname simpleicon@caprovericon\endcsname {\simpleiconsmap\symbol{"EBD7}}
+ \expandafter\def\csname simpleicon@carthrottleicon\endcsname {\simpleiconsmap\symbol{"EBD8}}
+ \expandafter\def\csname simpleicon@cardanoicon\endcsname {\simpleiconsmap\symbol{"EBD9}}
+ \expandafter\def\csname simpleicon@carlsberggroupicon\endcsname {\simpleiconsmap\symbol{"EBDA}}
+ \expandafter\def\csname simpleicon@carrdicon\endcsname {\simpleiconsmap\symbol{"EBDB}}
+ \expandafter\def\csname simpleicon@carrefouricon\endcsname {\simpleiconsmap\symbol{"EBDC}}
+ \expandafter\def\csname simpleicon@cartoicon\endcsname {\simpleiconsmap\symbol{"EBDD}}
+ \expandafter\def\csname simpleicon@cashappicon\endcsname {\simpleiconsmap\symbol{"EBDE}}
+ \expandafter\def\csname simpleicon@castboxicon\endcsname {\simpleiconsmap\symbol{"EBDF}}
+ \expandafter\def\csname simpleicon@castoramaicon\endcsname {\simpleiconsmap\symbol{"EBE0}}
+ \expandafter\def\csname simpleicon@castroicon\endcsname {\simpleiconsmap\symbol{"EBE1}}
+ \expandafter\def\csname simpleicon@caterpillaricon\endcsname {\simpleiconsmap\symbol{"EBE2}}
+ \expandafter\def\csname simpleicon@cbcicon\endcsname {\simpleiconsmap\symbol{"EBE3}}
+ \expandafter\def\csname simpleicon@cbsicon\endcsname {\simpleiconsmap\symbol{"EBE4}}
+ \expandafter\def\csname simpleicon@cccicon\endcsname {\simpleiconsmap\symbol{"EBE5}}
+ \expandafter\def\csname simpleicon@ccleanericon\endcsname {\simpleiconsmap\symbol{"EBE6}}
+ \expandafter\def\csname simpleicon@cdprojekticon\endcsname {\simpleiconsmap\symbol{"EBE7}}
+ \expandafter\def\csname simpleicon@ceicon\endcsname {\simpleiconsmap\symbol{"EBE8}}
+ \expandafter\def\csname simpleicon@celeryicon\endcsname {\simpleiconsmap\symbol{"EBE9}}
+ \expandafter\def\csname simpleicon@celestronicon\endcsname {\simpleiconsmap\symbol{"EBEA}}
+ \expandafter\def\csname simpleicon@centosicon\endcsname {\simpleiconsmap\symbol{"EBEB}}
+ \expandafter\def\csname simpleicon@cephicon\endcsname {\simpleiconsmap\symbol{"EBEC}}
+ \expandafter\def\csname simpleicon@cesiumicon\endcsname {\simpleiconsmap\symbol{"EBED}}
+ \expandafter\def\csname simpleicon@chaiicon\endcsname {\simpleiconsmap\symbol{"EBEE}}
+ \expandafter\def\csname simpleicon@chainguardicon\endcsname {\simpleiconsmap\symbol{"EBEF}}
+ \expandafter\def\csname simpleicon@chainlinkicon\endcsname {\simpleiconsmap\symbol{"EBF0}}
+ \expandafter\def\csname simpleicon@chakrauiicon\endcsname {\simpleiconsmap\symbol{"EBF1}}
+ \expandafter\def\csname simpleicon@channel4icon\endcsname {\simpleiconsmap\symbol{"EBF2}}
+ \expandafter\def\csname simpleicon@charlesicon\endcsname {\simpleiconsmap\symbol{"EBF3}}
+ \expandafter\def\csname simpleicon@chartdotjsicon\endcsname {\simpleiconsmap\symbol{"EBF4}}
+ \expandafter\def\csname simpleicon@chartmogulicon\endcsname {\simpleiconsmap\symbol{"EBF5}}
+ \expandafter\def\csname simpleicon@chaseicon\endcsname {\simpleiconsmap\symbol{"EBF6}}
+ \expandafter\def\csname simpleicon@chatboticon\endcsname {\simpleiconsmap\symbol{"EBF7}}
+ \expandafter\def\csname simpleicon@chatwooticon\endcsname {\simpleiconsmap\symbol{"EBF8}}
+ \expandafter\def\csname simpleicon@checkioicon\endcsname {\simpleiconsmap\symbol{"EBF9}}
+ \expandafter\def\csname simpleicon@checkmarxicon\endcsname {\simpleiconsmap\symbol{"EBFA}}
+ \expandafter\def\csname simpleicon@checkmkicon\endcsname {\simpleiconsmap\symbol{"EBFB}}
+ \expandafter\def\csname simpleicon@chedrauiicon\endcsname {\simpleiconsmap\symbol{"EBFC}}
+ \expandafter\def\csname simpleicon@cheerioicon\endcsname {\simpleiconsmap\symbol{"EBFD}}
+ \expandafter\def\csname simpleicon@cheficon\endcsname {\simpleiconsmap\symbol{"EBFE}}
+ \expandafter\def\csname simpleicon@chemexicon\endcsname {\simpleiconsmap\symbol{"EBFF}}
+ \expandafter\def\csname simpleicon@chessdotcomicon\endcsname {\simpleiconsmap\symbol{"EC00}}
+ \expandafter\def\csname simpleicon@chevroleticon\endcsname {\simpleiconsmap\symbol{"EC01}}
+ \expandafter\def\csname simpleicon@chianetworkicon\endcsname {\simpleiconsmap\symbol{"EC02}}
+ \expandafter\def\csname simpleicon@chinaeasternairlinesicon\endcsname {\simpleiconsmap\symbol{"EC03}}
+ \expandafter\def\csname simpleicon@chinasouthernairlinesicon\endcsname {\simpleiconsmap\symbol{"EC04}}
+ \expandafter\def\csname simpleicon@chocolateyicon\endcsname {\simpleiconsmap\symbol{"EC05}}
+ \expandafter\def\csname simpleicon@chromaticicon\endcsname {\simpleiconsmap\symbol{"EC06}}
+ \expandafter\def\csname simpleicon@chromewebstoreicon\endcsname {\simpleiconsmap\symbol{"EC07}}
+ \expandafter\def\csname simpleicon@chromecasticon\endcsname {\simpleiconsmap\symbol{"EC08}}
+ \expandafter\def\csname simpleicon@chryslericon\endcsname {\simpleiconsmap\symbol{"EC09}}
+ \expandafter\def\csname simpleicon@chupachupsicon\endcsname {\simpleiconsmap\symbol{"EC0A}}
+ \expandafter\def\csname simpleicon@ciliumicon\endcsname {\simpleiconsmap\symbol{"EC0B}}
+ \expandafter\def\csname simpleicon@cinema4dicon\endcsname {\simpleiconsmap\symbol{"EC0C}}
+ \expandafter\def\csname simpleicon@cinnamonicon\endcsname {\simpleiconsmap\symbol{"EC0D}}
+ \expandafter\def\csname simpleicon@circleicon\endcsname {\simpleiconsmap\symbol{"EC0E}}
+ \expandafter\def\csname simpleicon@circleciicon\endcsname {\simpleiconsmap\symbol{"EC0F}}
+ \expandafter\def\csname simpleicon@circuitverseicon\endcsname {\simpleiconsmap\symbol{"EC10}}
+ \expandafter\def\csname simpleicon@cirrusciicon\endcsname {\simpleiconsmap\symbol{"EC11}}
+ \expandafter\def\csname simpleicon@ciscoicon\endcsname {\simpleiconsmap\symbol{"EC12}}
+ \expandafter\def\csname simpleicon@citrixicon\endcsname {\simpleiconsmap\symbol{"EC13}}
+ \expandafter\def\csname simpleicon@citroenicon\endcsname {\simpleiconsmap\symbol{"EC14}}
+ \expandafter\def\csname simpleicon@civicrmicon\endcsname {\simpleiconsmap\symbol{"EC15}}
+ \expandafter\def\csname simpleicon@civoicon\endcsname {\simpleiconsmap\symbol{"EC16}}
+ \expandafter\def\csname simpleicon@clarifaiicon\endcsname {\simpleiconsmap\symbol{"EC17}}
+ \expandafter\def\csname simpleicon@clarisicon\endcsname {\simpleiconsmap\symbol{"EC18}}
+ \expandafter\def\csname simpleicon@clarivateicon\endcsname {\simpleiconsmap\symbol{"EC19}}
+ \expandafter\def\csname simpleicon@claudeicon\endcsname {\simpleiconsmap\symbol{"EC1A}}
+ \expandafter\def\csname simpleicon@clerkicon\endcsname {\simpleiconsmap\symbol{"EC1B}}
+ \expandafter\def\csname simpleicon@clevercloudicon\endcsname {\simpleiconsmap\symbol{"EC1C}}
+ \expandafter\def\csname simpleicon@clickhouseicon\endcsname {\simpleiconsmap\symbol{"EC1D}}
+ \expandafter\def\csname simpleicon@clickupicon\endcsname {\simpleiconsmap\symbol{"EC1E}}
+ \expandafter\def\csname simpleicon@clionicon\endcsname {\simpleiconsmap\symbol{"EC1F}}
+ \expandafter\def\csname simpleicon@clockifyicon\endcsname {\simpleiconsmap\symbol{"EC20}}
+ \expandafter\def\csname simpleicon@clojureicon\endcsname {\simpleiconsmap\symbol{"EC21}}
+ \expandafter\def\csname simpleicon@cloud66icon\endcsname {\simpleiconsmap\symbol{"EC22}}
+ \expandafter\def\csname simpleicon@cloudfoundryicon\endcsname {\simpleiconsmap\symbol{"EC23}}
+ \expandafter\def\csname simpleicon@cloudbeesicon\endcsname {\simpleiconsmap\symbol{"EC24}}
+ \expandafter\def\csname simpleicon@cloudcannonicon\endcsname {\simpleiconsmap\symbol{"EC25}}
+ \expandafter\def\csname simpleicon@clouderaicon\endcsname {\simpleiconsmap\symbol{"EC26}}
+ \expandafter\def\csname simpleicon@cloudflareicon\endcsname {\simpleiconsmap\symbol{"EC27}}
+ \expandafter\def\csname simpleicon@cloudflarepagesicon\endcsname {\simpleiconsmap\symbol{"EC28}}
+ \expandafter\def\csname simpleicon@cloudflareworkersicon\endcsname {\simpleiconsmap\symbol{"EC29}}
+ \expandafter\def\csname simpleicon@cloudinaryicon\endcsname {\simpleiconsmap\symbol{"EC2A}}
+ \expandafter\def\csname simpleicon@cloudronicon\endcsname {\simpleiconsmap\symbol{"EC2B}}
+ \expandafter\def\csname simpleicon@cloudsmithicon\endcsname {\simpleiconsmap\symbol{"EC2C}}
+ \expandafter\def\csname simpleicon@cloudwaysicon\endcsname {\simpleiconsmap\symbol{"EC2D}}
+ \expandafter\def\csname simpleicon@clubforceicon\endcsname {\simpleiconsmap\symbol{"EC2E}}
+ \expandafter\def\csname simpleicon@clubhouseicon\endcsname {\simpleiconsmap\symbol{"EC2F}}
+ \expandafter\def\csname simpleicon@clypicon\endcsname {\simpleiconsmap\symbol{"EC30}}
+ \expandafter\def\csname simpleicon@cmakeicon\endcsname {\simpleiconsmap\symbol{"EC31}}
+ \expandafter\def\csname simpleicon@cncficon\endcsname {\simpleiconsmap\symbol{"EC32}}
+ \expandafter\def\csname simpleicon@cneticon\endcsname {\simpleiconsmap\symbol{"EC33}}
+ \expandafter\def\csname simpleicon@cnnicon\endcsname {\simpleiconsmap\symbol{"EC34}}
+ \expandafter\def\csname simpleicon@coopicon\endcsname {\simpleiconsmap\symbol{"EC35}}
+ \expandafter\def\csname simpleicon@cocacolaicon\endcsname {\simpleiconsmap\symbol{"EC36}}
+ \expandafter\def\csname simpleicon@cockpiticon\endcsname {\simpleiconsmap\symbol{"EC37}}
+ \expandafter\def\csname simpleicon@cockroachlabsicon\endcsname {\simpleiconsmap\symbol{"EC38}}
+ \expandafter\def\csname simpleicon@cocoapodsicon\endcsname {\simpleiconsmap\symbol{"EC39}}
+ \expandafter\def\csname simpleicon@cocosicon\endcsname {\simpleiconsmap\symbol{"EC3A}}
+ \expandafter\def\csname simpleicon@codaicon\endcsname {\simpleiconsmap\symbol{"EC3B}}
+ \expandafter\def\csname simpleicon@codacyicon\endcsname {\simpleiconsmap\symbol{"EC3C}}
+ \expandafter\def\csname simpleicon@codeclimateicon\endcsname {\simpleiconsmap\symbol{"EC3D}}
+ \expandafter\def\csname simpleicon@codeblocksicon\endcsname {\simpleiconsmap\symbol{"EC3E}}
+ \expandafter\def\csname simpleicon@codebergicon\endcsname {\simpleiconsmap\symbol{"EC3F}}
+ \expandafter\def\csname simpleicon@codecademyicon\endcsname {\simpleiconsmap\symbol{"EC40}}
+ \expandafter\def\csname simpleicon@codeceptjsicon\endcsname {\simpleiconsmap\symbol{"EC41}}
+ \expandafter\def\csname simpleicon@codecheficon\endcsname {\simpleiconsmap\symbol{"EC42}}
+ \expandafter\def\csname simpleicon@codecovicon\endcsname {\simpleiconsmap\symbol{"EC43}}
+ \expandafter\def\csname simpleicon@codecraftersicon\endcsname {\simpleiconsmap\symbol{"EC44}}
+ \expandafter\def\csname simpleicon@codefactoricon\endcsname {\simpleiconsmap\symbol{"EC45}}
+ \expandafter\def\csname simpleicon@codeforcesicon\endcsname {\simpleiconsmap\symbol{"EC46}}
+ \expandafter\def\csname simpleicon@codefreshicon\endcsname {\simpleiconsmap\symbol{"EC47}}
+ \expandafter\def\csname simpleicon@codeignitericon\endcsname {\simpleiconsmap\symbol{"EC48}}
+ \expandafter\def\csname simpleicon@codeiumicon\endcsname {\simpleiconsmap\symbol{"EC49}}
+ \expandafter\def\csname simpleicon@codemagicicon\endcsname {\simpleiconsmap\symbol{"EC4A}}
+ \expandafter\def\csname simpleicon@codementoricon\endcsname {\simpleiconsmap\symbol{"EC4B}}
+ \expandafter\def\csname simpleicon@codemirroricon\endcsname {\simpleiconsmap\symbol{"EC4C}}
+ \expandafter\def\csname simpleicon@codenewbieicon\endcsname {\simpleiconsmap\symbol{"EC4D}}
+ \expandafter\def\csname simpleicon@codepenicon\endcsname {\simpleiconsmap\symbol{"EC4E}}
+ \expandafter\def\csname simpleicon@codeprojecticon\endcsname {\simpleiconsmap\symbol{"EC4F}}
+ \expandafter\def\csname simpleicon@codericon\endcsname {\simpleiconsmap\symbol{"EC50}}
+ \expandafter\def\csname simpleicon@codersrankicon\endcsname {\simpleiconsmap\symbol{"EC51}}
+ \expandafter\def\csname simpleicon@coderwallicon\endcsname {\simpleiconsmap\symbol{"EC52}}
+ \expandafter\def\csname simpleicon@codesandboxicon\endcsname {\simpleiconsmap\symbol{"EC53}}
+ \expandafter\def\csname simpleicon@codeshipicon\endcsname {\simpleiconsmap\symbol{"EC54}}
+ \expandafter\def\csname simpleicon@codesignalicon\endcsname {\simpleiconsmap\symbol{"EC55}}
+ \expandafter\def\csname simpleicon@codestreamicon\endcsname {\simpleiconsmap\symbol{"EC56}}
+ \expandafter\def\csname simpleicon@codewarsicon\endcsname {\simpleiconsmap\symbol{"EC57}}
+ \expandafter\def\csname simpleicon@codingninjasicon\endcsname {\simpleiconsmap\symbol{"EC58}}
+ \expandafter\def\csname simpleicon@codingameicon\endcsname {\simpleiconsmap\symbol{"EC59}}
+ \expandafter\def\csname simpleicon@codioicon\endcsname {\simpleiconsmap\symbol{"EC5A}}
+ \expandafter\def\csname simpleicon@coffeescripticon\endcsname {\simpleiconsmap\symbol{"EC5B}}
+ \expandafter\def\csname simpleicon@coggleicon\endcsname {\simpleiconsmap\symbol{"EC5C}}
+ \expandafter\def\csname simpleicon@cognizanticon\endcsname {\simpleiconsmap\symbol{"EC5D}}
+ \expandafter\def\csname simpleicon@cohosticon\endcsname {\simpleiconsmap\symbol{"EC5E}}
+ \expandafter\def\csname simpleicon@coinbaseicon\endcsname {\simpleiconsmap\symbol{"EC5F}}
+ \expandafter\def\csname simpleicon@coinmarketcapicon\endcsname {\simpleiconsmap\symbol{"EC60}}
+ \expandafter\def\csname simpleicon@collaboraonlineicon\endcsname {\simpleiconsmap\symbol{"EC61}}
+ \expandafter\def\csname simpleicon@comicfuryicon\endcsname {\simpleiconsmap\symbol{"EC62}}
+ \expandafter\def\csname simpleicon@commaicon\endcsname {\simpleiconsmap\symbol{"EC63}}
+ \expandafter\def\csname simpleicon@commerzbankicon\endcsname {\simpleiconsmap\symbol{"EC64}}
+ \expandafter\def\csname simpleicon@commitlinticon\endcsname {\simpleiconsmap\symbol{"EC65}}
+ \expandafter\def\csname simpleicon@commodoreicon\endcsname {\simpleiconsmap\symbol{"EC66}}
+ \expandafter\def\csname simpleicon@commonlispicon\endcsname {\simpleiconsmap\symbol{"EC67}}
+ \expandafter\def\csname simpleicon@commonworkflowlanguageicon\endcsname {\simpleiconsmap\symbol{"EC68}}
+ \expandafter\def\csname simpleicon@compilerexplorericon\endcsname {\simpleiconsmap\symbol{"EC69}}
+ \expandafter\def\csname simpleicon@composericon\endcsname {\simpleiconsmap\symbol{"EC6A}}
+ \expandafter\def\csname simpleicon@comptiaicon\endcsname {\simpleiconsmap\symbol{"EC6B}}
+ \expandafter\def\csname simpleicon@comsolicon\endcsname {\simpleiconsmap\symbol{"EC6C}}
+ \expandafter\def\csname simpleicon@conanicon\endcsname {\simpleiconsmap\symbol{"EC6D}}
+ \expandafter\def\csname simpleicon@concourseicon\endcsname {\simpleiconsmap\symbol{"EC6E}}
+ \expandafter\def\csname simpleicon@condaforgeicon\endcsname {\simpleiconsmap\symbol{"EC6F}}
+ \expandafter\def\csname simpleicon@conektaicon\endcsname {\simpleiconsmap\symbol{"EC70}}
+ \expandafter\def\csname simpleicon@confluenceicon\endcsname {\simpleiconsmap\symbol{"EC71}}
+ \expandafter\def\csname simpleicon@construct3icon\endcsname {\simpleiconsmap\symbol{"EC72}}
+ \expandafter\def\csname simpleicon@consulicon\endcsname {\simpleiconsmap\symbol{"EC73}}
+ \expandafter\def\csname simpleicon@contaboicon\endcsname {\simpleiconsmap\symbol{"EC74}}
+ \expandafter\def\csname simpleicon@contactlesspaymenticon\endcsname {\simpleiconsmap\symbol{"EC75}}
+ \expandafter\def\csname simpleicon@containerdicon\endcsname {\simpleiconsmap\symbol{"EC76}}
+ \expandafter\def\csname simpleicon@contaoicon\endcsname {\simpleiconsmap\symbol{"EC77}}
+ \expandafter\def\csname simpleicon@contentfulicon\endcsname {\simpleiconsmap\symbol{"EC78}}
+ \expandafter\def\csname simpleicon@contentstackicon\endcsname {\simpleiconsmap\symbol{"EC79}}
+ \expandafter\def\csname simpleicon@continenteicon\endcsname {\simpleiconsmap\symbol{"EC7A}}
+ \expandafter\def\csname simpleicon@contributorcovenanticon\endcsname {\simpleiconsmap\symbol{"EC7B}}
+ \expandafter\def\csname simpleicon@conventionalcommitsicon\endcsname {\simpleiconsmap\symbol{"EC7C}}
+ \expandafter\def\csname simpleicon@convertioicon\endcsname {\simpleiconsmap\symbol{"EC7D}}
+ \expandafter\def\csname simpleicon@cookiecuttericon\endcsname {\simpleiconsmap\symbol{"EC7E}}
+ \expandafter\def\csname simpleicon@coolermastericon\endcsname {\simpleiconsmap\symbol{"EC7F}}
+ \expandafter\def\csname simpleicon@copaairlinesicon\endcsname {\simpleiconsmap\symbol{"EC80}}
+ \expandafter\def\csname simpleicon@coppelicon\endcsname {\simpleiconsmap\symbol{"EC81}}
+ \expandafter\def\csname simpleicon@coraicon\endcsname {\simpleiconsmap\symbol{"EC82}}
+ \expandafter\def\csname simpleicon@coreldrawicon\endcsname {\simpleiconsmap\symbol{"EC83}}
+ \expandafter\def\csname simpleicon@coronaengineicon\endcsname {\simpleiconsmap\symbol{"EC84}}
+ \expandafter\def\csname simpleicon@coronarenderericon\endcsname {\simpleiconsmap\symbol{"EC85}}
+ \expandafter\def\csname simpleicon@corsairicon\endcsname {\simpleiconsmap\symbol{"EC86}}
+ \expandafter\def\csname simpleicon@couchbaseicon\endcsname {\simpleiconsmap\symbol{"EC87}}
+ \expandafter\def\csname simpleicon@counterstrikeicon\endcsname {\simpleiconsmap\symbol{"EC88}}
+ \expandafter\def\csname simpleicon@countingworksproicon\endcsname {\simpleiconsmap\symbol{"EC89}}
+ \expandafter\def\csname simpleicon@courseraicon\endcsname {\simpleiconsmap\symbol{"EC8A}}
+ \expandafter\def\csname simpleicon@coverallsicon\endcsname {\simpleiconsmap\symbol{"EC8B}}
+ \expandafter\def\csname simpleicon@cozeicon\endcsname {\simpleiconsmap\symbol{"EC8C}}
+ \expandafter\def\csname simpleicon@cpanelicon\endcsname {\simpleiconsmap\symbol{"EC8D}}
+ \expandafter\def\csname simpleicon@craftcmsicon\endcsname {\simpleiconsmap\symbol{"EC8E}}
+ \expandafter\def\csname simpleicon@craftsmanicon\endcsname {\simpleiconsmap\symbol{"EC8F}}
+ \expandafter\def\csname simpleicon@cratedbicon\endcsname {\simpleiconsmap\symbol{"EC90}}
+ \expandafter\def\csname simpleicon@crayonicon\endcsname {\simpleiconsmap\symbol{"EC91}}
+ \expandafter\def\csname simpleicon@crealityicon\endcsname {\simpleiconsmap\symbol{"EC92}}
+ \expandafter\def\csname simpleicon@createreactappicon\endcsname {\simpleiconsmap\symbol{"EC93}}
+ \expandafter\def\csname simpleicon@creativecommonsicon\endcsname {\simpleiconsmap\symbol{"EC94}}
+ \expandafter\def\csname simpleicon@creativetechnologyicon\endcsname {\simpleiconsmap\symbol{"EC95}}
+ \expandafter\def\csname simpleicon@credlyicon\endcsname {\simpleiconsmap\symbol{"EC96}}
+ \expandafter\def\csname simpleicon@crehanaicon\endcsname {\simpleiconsmap\symbol{"EC97}}
+ \expandafter\def\csname simpleicon@crewunitedicon\endcsname {\simpleiconsmap\symbol{"EC98}}
+ \expandafter\def\csname simpleicon@crewaiicon\endcsname {\simpleiconsmap\symbol{"EC99}}
+ \expandafter\def\csname simpleicon@criticalroleicon\endcsname {\simpleiconsmap\symbol{"EC9A}}
+ \expandafter\def\csname simpleicon@crowdinicon\endcsname {\simpleiconsmap\symbol{"EC9B}}
+ \expandafter\def\csname simpleicon@crowdsourceicon\endcsname {\simpleiconsmap\symbol{"EC9C}}
+ \expandafter\def\csname simpleicon@crunchbaseicon\endcsname {\simpleiconsmap\symbol{"EC9D}}
+ \expandafter\def\csname simpleicon@crunchyrollicon\endcsname {\simpleiconsmap\symbol{"EC9E}}
+ \expandafter\def\csname simpleicon@cryengineicon\endcsname {\simpleiconsmap\symbol{"EC9F}}
+ \expandafter\def\csname simpleicon@cryptomatoricon\endcsname {\simpleiconsmap\symbol{"ECA0}}
+ \expandafter\def\csname simpleicon@cryptpadicon\endcsname {\simpleiconsmap\symbol{"ECA1}}
+ \expandafter\def\csname simpleicon@crystalicon\endcsname {\simpleiconsmap\symbol{"ECA2}}
+ \expandafter\def\csname simpleicon@csdnicon\endcsname {\simpleiconsmap\symbol{"ECA3}}
+ \expandafter\def\csname simpleicon@cssicon\endcsname {\simpleiconsmap\symbol{"ECA4}}
+ \expandafter\def\csname simpleicon@cssdesignawardsicon\endcsname {\simpleiconsmap\symbol{"ECA5}}
+ \expandafter\def\csname simpleicon@cssmodulesicon\endcsname {\simpleiconsmap\symbol{"ECA6}}
+ \expandafter\def\csname simpleicon@csswizardryicon\endcsname {\simpleiconsmap\symbol{"ECA7}}
+ \expandafter\def\csname simpleicon@css3icon\endcsname {\simpleiconsmap\symbol{"ECA8}}
+ \expandafter\def\csname simpleicon@ctsicon\endcsname {\simpleiconsmap\symbol{"ECA9}}
+ \expandafter\def\csname simpleicon@cucumbericon\endcsname {\simpleiconsmap\symbol{"ECAA}}
+ \expandafter\def\csname simpleicon@culturaicon\endcsname {\simpleiconsmap\symbol{"ECAB}}
+ \expandafter\def\csname simpleicon@curlicon\endcsname {\simpleiconsmap\symbol{"ECAC}}
+ \expandafter\def\csname simpleicon@curseforgeicon\endcsname {\simpleiconsmap\symbol{"ECAD}}
+ \expandafter\def\csname simpleicon@custominkicon\endcsname {\simpleiconsmap\symbol{"ECAE}}
+ \expandafter\def\csname simpleicon@cyberdefendersicon\endcsname {\simpleiconsmap\symbol{"ECAF}}
+ \expandafter\def\csname simpleicon@cycling74icon\endcsname {\simpleiconsmap\symbol{"ECB0}}
+ \expandafter\def\csname simpleicon@cypressicon\endcsname {\simpleiconsmap\symbol{"ECB1}}
+ \expandafter\def\csname simpleicon@cytoscapedotjsicon\endcsname {\simpleiconsmap\symbol{"ECB2}}
+ \expandafter\def\csname simpleicon@dicon\endcsname {\simpleiconsmap\symbol{"ECB3}}
+ \expandafter\def\csname simpleicon@dedgeicon\endcsname {\simpleiconsmap\symbol{"ECB4}}
+ \expandafter\def\csname simpleicon@dwavesystemsicon\endcsname {\simpleiconsmap\symbol{"ECB5}}
+ \expandafter\def\csname simpleicon@d3icon\endcsname {\simpleiconsmap\symbol{"ECB6}}
+ \expandafter\def\csname simpleicon@daciaicon\endcsname {\simpleiconsmap\symbol{"ECB7}}
+ \expandafter\def\csname simpleicon@daficon\endcsname {\simpleiconsmap\symbol{"ECB8}}
+ \expandafter\def\csname simpleicon@dailydotdevicon\endcsname {\simpleiconsmap\symbol{"ECB9}}
+ \expandafter\def\csname simpleicon@dailymotionicon\endcsname {\simpleiconsmap\symbol{"ECBA}}
+ \expandafter\def\csname simpleicon@daisyuiicon\endcsname {\simpleiconsmap\symbol{"ECBB}}
+ \expandafter\def\csname simpleicon@dapricon\endcsname {\simpleiconsmap\symbol{"ECBC}}
+ \expandafter\def\csname simpleicon@darkreadericon\endcsname {\simpleiconsmap\symbol{"ECBD}}
+ \expandafter\def\csname simpleicon@darticon\endcsname {\simpleiconsmap\symbol{"ECBE}}
+ \expandafter\def\csname simpleicon@dartyicon\endcsname {\simpleiconsmap\symbol{"ECBF}}
+ \expandafter\def\csname simpleicon@dasersteicon\endcsname {\simpleiconsmap\symbol{"ECC0}}
+ \expandafter\def\csname simpleicon@dashicon\endcsname {\simpleiconsmap\symbol{"ECC1}}
+ \expandafter\def\csname simpleicon@dashlaneicon\endcsname {\simpleiconsmap\symbol{"ECC2}}
+ \expandafter\def\csname simpleicon@daskicon\endcsname {\simpleiconsmap\symbol{"ECC3}}
+ \expandafter\def\csname simpleicon@dassaultsystemesicon\endcsname {\simpleiconsmap\symbol{"ECC4}}
+ \expandafter\def\csname simpleicon@datadotaiicon\endcsname {\simpleiconsmap\symbol{"ECC5}}
+ \expandafter\def\csname simpleicon@databricksicon\endcsname {\simpleiconsmap\symbol{"ECC6}}
+ \expandafter\def\csname simpleicon@datacampicon\endcsname {\simpleiconsmap\symbol{"ECC7}}
+ \expandafter\def\csname simpleicon@datadogicon\endcsname {\simpleiconsmap\symbol{"ECC8}}
+ \expandafter\def\csname simpleicon@datagripicon\endcsname {\simpleiconsmap\symbol{"ECC9}}
+ \expandafter\def\csname simpleicon@dataikuicon\endcsname {\simpleiconsmap\symbol{"ECCA}}
+ \expandafter\def\csname simpleicon@datastaxicon\endcsname {\simpleiconsmap\symbol{"ECCB}}
+ \expandafter\def\csname simpleicon@datefnsicon\endcsname {\simpleiconsmap\symbol{"ECCC}}
+ \expandafter\def\csname simpleicon@datevicon\endcsname {\simpleiconsmap\symbol{"ECCD}}
+ \expandafter\def\csname simpleicon@datocmsicon\endcsname {\simpleiconsmap\symbol{"ECCE}}
+ \expandafter\def\csname simpleicon@dattoicon\endcsname {\simpleiconsmap\symbol{"ECCF}}
+ \expandafter\def\csname simpleicon@davinciresolveicon\endcsname {\simpleiconsmap\symbol{"ECD0}}
+ \expandafter\def\csname simpleicon@dazhongdianpingicon\endcsname {\simpleiconsmap\symbol{"ECD1}}
+ \expandafter\def\csname simpleicon@daznicon\endcsname {\simpleiconsmap\symbol{"ECD2}}
+ \expandafter\def\csname simpleicon@dbeavericon\endcsname {\simpleiconsmap\symbol{"ECD3}}
+ \expandafter\def\csname simpleicon@dblpicon\endcsname {\simpleiconsmap\symbol{"ECD4}}
+ \expandafter\def\csname simpleicon@dbticon\endcsname {\simpleiconsmap\symbol{"ECD5}}
+ \expandafter\def\csname simpleicon@dcentertainmenticon\endcsname {\simpleiconsmap\symbol{"ECD6}}
+ \expandafter\def\csname simpleicon@delonghiicon\endcsname {\simpleiconsmap\symbol{"ECD7}}
+ \expandafter\def\csname simpleicon@debianicon\endcsname {\simpleiconsmap\symbol{"ECD8}}
+ \expandafter\def\csname simpleicon@debridlinkicon\endcsname {\simpleiconsmap\symbol{"ECD9}}
+ \expandafter\def\csname simpleicon@decapcmsicon\endcsname {\simpleiconsmap\symbol{"ECDA}}
+ \expandafter\def\csname simpleicon@decentralandicon\endcsname {\simpleiconsmap\symbol{"ECDB}}
+ \expandafter\def\csname simpleicon@deepcoolicon\endcsname {\simpleiconsmap\symbol{"ECDC}}
+ \expandafter\def\csname simpleicon@deepgramicon\endcsname {\simpleiconsmap\symbol{"ECDD}}
+ \expandafter\def\csname simpleicon@deepinicon\endcsname {\simpleiconsmap\symbol{"ECDE}}
+ \expandafter\def\csname simpleicon@deeplicon\endcsname {\simpleiconsmap\symbol{"ECDF}}
+ \expandafter\def\csname simpleicon@deepnoteicon\endcsname {\simpleiconsmap\symbol{"ECE0}}
+ \expandafter\def\csname simpleicon@deliverooicon\endcsname {\simpleiconsmap\symbol{"ECE1}}
+ \expandafter\def\csname simpleicon@dellicon\endcsname {\simpleiconsmap\symbol{"ECE2}}
+ \expandafter\def\csname simpleicon@delphiicon\endcsname {\simpleiconsmap\symbol{"ECE3}}
+ \expandafter\def\csname simpleicon@deltaicon\endcsname {\simpleiconsmap\symbol{"ECE4}}
+ \expandafter\def\csname simpleicon@delugeicon\endcsname {\simpleiconsmap\symbol{"ECE5}}
+ \expandafter\def\csname simpleicon@denoicon\endcsname {\simpleiconsmap\symbol{"ECE6}}
+ \expandafter\def\csname simpleicon@denonicon\endcsname {\simpleiconsmap\symbol{"ECE7}}
+ \expandafter\def\csname simpleicon@dependaboticon\endcsname {\simpleiconsmap\symbol{"ECE8}}
+ \expandafter\def\csname simpleicon@depositphotosicon\endcsname {\simpleiconsmap\symbol{"ECE9}}
+ \expandafter\def\csname simpleicon@derspiegelicon\endcsname {\simpleiconsmap\symbol{"ECEA}}
+ \expandafter\def\csname simpleicon@deutschebahnicon\endcsname {\simpleiconsmap\symbol{"ECEB}}
+ \expandafter\def\csname simpleicon@deutschebankicon\endcsname {\simpleiconsmap\symbol{"ECEC}}
+ \expandafter\def\csname simpleicon@deutscheposticon\endcsname {\simpleiconsmap\symbol{"ECED}}
+ \expandafter\def\csname simpleicon@deutschetelekomicon\endcsname {\simpleiconsmap\symbol{"ECEE}}
+ \expandafter\def\csname simpleicon@deutschewelleicon\endcsname {\simpleiconsmap\symbol{"ECEF}}
+ \expandafter\def\csname simpleicon@devdottoicon\endcsname {\simpleiconsmap\symbol{"ECF0}}
+ \expandafter\def\csname simpleicon@devexpressicon\endcsname {\simpleiconsmap\symbol{"ECF1}}
+ \expandafter\def\csname simpleicon@deviantarticon\endcsname {\simpleiconsmap\symbol{"ECF2}}
+ \expandafter\def\csname simpleicon@devposticon\endcsname {\simpleiconsmap\symbol{"ECF3}}
+ \expandafter\def\csname simpleicon@devranticon\endcsname {\simpleiconsmap\symbol{"ECF4}}
+ \expandafter\def\csname simpleicon@dgraphicon\endcsname {\simpleiconsmap\symbol{"ECF5}}
+ \expandafter\def\csname simpleicon@dhlicon\endcsname {\simpleiconsmap\symbol{"ECF6}}
+ \expandafter\def\csname simpleicon@diagramsdotneticon\endcsname {\simpleiconsmap\symbol{"ECF7}}
+ \expandafter\def\csname simpleicon@dialogflowicon\endcsname {\simpleiconsmap\symbol{"ECF8}}
+ \expandafter\def\csname simpleicon@diasporaicon\endcsname {\simpleiconsmap\symbol{"ECF9}}
+ \expandafter\def\csname simpleicon@dictionarydotcomicon\endcsname {\simpleiconsmap\symbol{"ECFA}}
+ \expandafter\def\csname simpleicon@diggicon\endcsname {\simpleiconsmap\symbol{"ECFB}}
+ \expandafter\def\csname simpleicon@digikeyelectronicsicon\endcsname {\simpleiconsmap\symbol{"ECFC}}
+ \expandafter\def\csname simpleicon@digitaloceanicon\endcsname {\simpleiconsmap\symbol{"ECFD}}
+ \expandafter\def\csname simpleicon@dinersclubicon\endcsname {\simpleiconsmap\symbol{"ECFE}}
+ \expandafter\def\csname simpleicon@dioricon\endcsname {\simpleiconsmap\symbol{"ECFF}}
+ \expandafter\def\csname simpleicon@directusicon\endcsname {\simpleiconsmap\symbol{"ED00}}
+ \expandafter\def\csname simpleicon@discogsicon\endcsname {\simpleiconsmap\symbol{"ED01}}
+ \expandafter\def\csname simpleicon@discordicon\endcsname {\simpleiconsmap\symbol{"ED02}}
+ \expandafter\def\csname simpleicon@discourseicon\endcsname {\simpleiconsmap\symbol{"ED03}}
+ \expandafter\def\csname simpleicon@discovericon\endcsname {\simpleiconsmap\symbol{"ED04}}
+ \expandafter\def\csname simpleicon@disqusicon\endcsname {\simpleiconsmap\symbol{"ED05}}
+ \expandafter\def\csname simpleicon@disrooticon\endcsname {\simpleiconsmap\symbol{"ED06}}
+ \expandafter\def\csname simpleicon@distrokidicon\endcsname {\simpleiconsmap\symbol{"ED07}}
+ \expandafter\def\csname simpleicon@djangoicon\endcsname {\simpleiconsmap\symbol{"ED08}}
+ \expandafter\def\csname simpleicon@djiicon\endcsname {\simpleiconsmap\symbol{"ED09}}
+ \expandafter\def\csname simpleicon@dlibicon\endcsname {\simpleiconsmap\symbol{"ED0A}}
+ \expandafter\def\csname simpleicon@dlnaicon\endcsname {\simpleiconsmap\symbol{"ED0B}}
+ \expandafter\def\csname simpleicon@dmicon\endcsname {\simpleiconsmap\symbol{"ED0C}}
+ \expandafter\def\csname simpleicon@dockericon\endcsname {\simpleiconsmap\symbol{"ED0D}}
+ \expandafter\def\csname simpleicon@docsdotrsicon\endcsname {\simpleiconsmap\symbol{"ED0E}}
+ \expandafter\def\csname simpleicon@docsifyicon\endcsname {\simpleiconsmap\symbol{"ED0F}}
+ \expandafter\def\csname simpleicon@doctrineicon\endcsname {\simpleiconsmap\symbol{"ED10}}
+ \expandafter\def\csname simpleicon@docusaurusicon\endcsname {\simpleiconsmap\symbol{"ED11}}
+ \expandafter\def\csname simpleicon@dogecoinicon\endcsname {\simpleiconsmap\symbol{"ED12}}
+ \expandafter\def\csname simpleicon@doiicon\endcsname {\simpleiconsmap\symbol{"ED13}}
+ \expandafter\def\csname simpleicon@dolbyicon\endcsname {\simpleiconsmap\symbol{"ED14}}
+ \expandafter\def\csname simpleicon@doordashicon\endcsname {\simpleiconsmap\symbol{"ED15}}
+ \expandafter\def\csname simpleicon@dota2icon\endcsname {\simpleiconsmap\symbol{"ED16}}
+ \expandafter\def\csname simpleicon@doubanicon\endcsname {\simpleiconsmap\symbol{"ED17}}
+ \expandafter\def\csname simpleicon@doubanreadicon\endcsname {\simpleiconsmap\symbol{"ED18}}
+ \expandafter\def\csname simpleicon@dovecoticon\endcsname {\simpleiconsmap\symbol{"ED19}}
+ \expandafter\def\csname simpleicon@dovetailicon\endcsname {\simpleiconsmap\symbol{"ED1A}}
+ \expandafter\def\csname simpleicon@downdetectoricon\endcsname {\simpleiconsmap\symbol{"ED1B}}
+ \expandafter\def\csname simpleicon@doxygenicon\endcsname {\simpleiconsmap\symbol{"ED1C}}
+ \expandafter\def\csname simpleicon@dpdicon\endcsname {\simpleiconsmap\symbol{"ED1D}}
+ \expandafter\def\csname simpleicon@dragonframeicon\endcsname {\simpleiconsmap\symbol{"ED1E}}
+ \expandafter\def\csname simpleicon@draugiemdotlvicon\endcsname {\simpleiconsmap\symbol{"ED1F}}
+ \expandafter\def\csname simpleicon@dreamstimeicon\endcsname {\simpleiconsmap\symbol{"ED20}}
+ \expandafter\def\csname simpleicon@dribbbleicon\endcsname {\simpleiconsmap\symbol{"ED21}}
+ \expandafter\def\csname simpleicon@drizzleicon\endcsname {\simpleiconsmap\symbol{"ED22}}
+ \expandafter\def\csname simpleicon@droneicon\endcsname {\simpleiconsmap\symbol{"ED23}}
+ \expandafter\def\csname simpleicon@droobleicon\endcsname {\simpleiconsmap\symbol{"ED24}}
+ \expandafter\def\csname simpleicon@dropboxicon\endcsname {\simpleiconsmap\symbol{"ED25}}
+ \expandafter\def\csname simpleicon@drupalicon\endcsname {\simpleiconsmap\symbol{"ED26}}
+ \expandafter\def\csname simpleicon@dsautomobilesicon\endcsname {\simpleiconsmap\symbol{"ED27}}
+ \expandafter\def\csname simpleicon@dtsicon\endcsname {\simpleiconsmap\symbol{"ED28}}
+ \expandafter\def\csname simpleicon@dtubeicon\endcsname {\simpleiconsmap\symbol{"ED29}}
+ \expandafter\def\csname simpleicon@ducatiicon\endcsname {\simpleiconsmap\symbol{"ED2A}}
+ \expandafter\def\csname simpleicon@duckdbicon\endcsname {\simpleiconsmap\symbol{"ED2B}}
+ \expandafter\def\csname simpleicon@duckduckgoicon\endcsname {\simpleiconsmap\symbol{"ED2C}}
+ \expandafter\def\csname simpleicon@dungeonsanddragonsicon\endcsname {\simpleiconsmap\symbol{"ED2D}}
+ \expandafter\def\csname simpleicon@dunkedicon\endcsname {\simpleiconsmap\symbol{"ED2E}}
+ \expandafter\def\csname simpleicon@dunzoicon\endcsname {\simpleiconsmap\symbol{"ED2F}}
+ \expandafter\def\csname simpleicon@duolingoicon\endcsname {\simpleiconsmap\symbol{"ED30}}
+ \expandafter\def\csname simpleicon@duplicatiicon\endcsname {\simpleiconsmap\symbol{"ED31}}
+ \expandafter\def\csname simpleicon@dvcicon\endcsname {\simpleiconsmap\symbol{"ED32}}
+ \expandafter\def\csname simpleicon@dwmicon\endcsname {\simpleiconsmap\symbol{"ED33}}
+ \expandafter\def\csname simpleicon@dynatraceicon\endcsname {\simpleiconsmap\symbol{"ED34}}
+ \expandafter\def\csname simpleicon@edotleclercicon\endcsname {\simpleiconsmap\symbol{"ED35}}
+ \expandafter\def\csname simpleicon@e3icon\endcsname {\simpleiconsmap\symbol{"ED36}}
+ \expandafter\def\csname simpleicon@eaicon\endcsname {\simpleiconsmap\symbol{"ED37}}
+ \expandafter\def\csname simpleicon@eacicon\endcsname {\simpleiconsmap\symbol{"ED38}}
+ \expandafter\def\csname simpleicon@eagleicon\endcsname {\simpleiconsmap\symbol{"ED39}}
+ \expandafter\def\csname simpleicon@easyedaicon\endcsname {\simpleiconsmap\symbol{"ED3A}}
+ \expandafter\def\csname simpleicon@easyjeticon\endcsname {\simpleiconsmap\symbol{"ED3B}}
+ \expandafter\def\csname simpleicon@ebayicon\endcsname {\simpleiconsmap\symbol{"ED3C}}
+ \expandafter\def\csname simpleicon@eboxicon\endcsname {\simpleiconsmap\symbol{"ED3D}}
+ \expandafter\def\csname simpleicon@eclipseadoptiumicon\endcsname {\simpleiconsmap\symbol{"ED3E}}
+ \expandafter\def\csname simpleicon@eclipsecheicon\endcsname {\simpleiconsmap\symbol{"ED3F}}
+ \expandafter\def\csname simpleicon@eclipseideicon\endcsname {\simpleiconsmap\symbol{"ED40}}
+ \expandafter\def\csname simpleicon@eclipsejettyicon\endcsname {\simpleiconsmap\symbol{"ED41}}
+ \expandafter\def\csname simpleicon@eclipsemosquittoicon\endcsname {\simpleiconsmap\symbol{"ED42}}
+ \expandafter\def\csname simpleicon@eclipsevertdotxicon\endcsname {\simpleiconsmap\symbol{"ED43}}
+ \expandafter\def\csname simpleicon@ecosiaicon\endcsname {\simpleiconsmap\symbol{"ED44}}
+ \expandafter\def\csname simpleicon@ecovacsicon\endcsname {\simpleiconsmap\symbol{"ED45}}
+ \expandafter\def\csname simpleicon@edekaicon\endcsname {\simpleiconsmap\symbol{"ED46}}
+ \expandafter\def\csname simpleicon@edgeimpulseicon\endcsname {\simpleiconsmap\symbol{"ED47}}
+ \expandafter\def\csname simpleicon@editorconfigicon\endcsname {\simpleiconsmap\symbol{"ED48}}
+ \expandafter\def\csname simpleicon@educativeicon\endcsname {\simpleiconsmap\symbol{"ED49}}
+ \expandafter\def\csname simpleicon@edxicon\endcsname {\simpleiconsmap\symbol{"ED4A}}
+ \expandafter\def\csname simpleicon@eggheadicon\endcsname {\simpleiconsmap\symbol{"ED4B}}
+ \expandafter\def\csname simpleicon@egnyteicon\endcsname {\simpleiconsmap\symbol{"ED4C}}
+ \expandafter\def\csname simpleicon@eighticon\endcsname {\simpleiconsmap\symbol{"ED4D}}
+ \expandafter\def\csname simpleicon@eightsleepicon\endcsname {\simpleiconsmap\symbol{"ED4E}}
+ \expandafter\def\csname simpleicon@ejsicon\endcsname {\simpleiconsmap\symbol{"ED4F}}
+ \expandafter\def\csname simpleicon@elasticicon\endcsname {\simpleiconsmap\symbol{"ED50}}
+ \expandafter\def\csname simpleicon@elasticcloudicon\endcsname {\simpleiconsmap\symbol{"ED51}}
+ \expandafter\def\csname simpleicon@elasticstackicon\endcsname {\simpleiconsmap\symbol{"ED52}}
+ \expandafter\def\csname simpleicon@elasticsearchicon\endcsname {\simpleiconsmap\symbol{"ED53}}
+ \expandafter\def\csname simpleicon@elavonicon\endcsname {\simpleiconsmap\symbol{"ED54}}
+ \expandafter\def\csname simpleicon@electronicon\endcsname {\simpleiconsmap\symbol{"ED55}}
+ \expandafter\def\csname simpleicon@electronfiddleicon\endcsname {\simpleiconsmap\symbol{"ED56}}
+ \expandafter\def\csname simpleicon@electronbuildericon\endcsname {\simpleiconsmap\symbol{"ED57}}
+ \expandafter\def\csname simpleicon@elegooicon\endcsname {\simpleiconsmap\symbol{"ED58}}
+ \expandafter\def\csname simpleicon@elementicon\endcsname {\simpleiconsmap\symbol{"ED59}}
+ \expandafter\def\csname simpleicon@elementaryicon\endcsname {\simpleiconsmap\symbol{"ED5A}}
+ \expandafter\def\csname simpleicon@elementoricon\endcsname {\simpleiconsmap\symbol{"ED5B}}
+ \expandafter\def\csname simpleicon@elevenlabsicon\endcsname {\simpleiconsmap\symbol{"ED5C}}
+ \expandafter\def\csname simpleicon@eleventyicon\endcsname {\simpleiconsmap\symbol{"ED5D}}
+ \expandafter\def\csname simpleicon@elgatoicon\endcsname {\simpleiconsmap\symbol{"ED5E}}
+ \expandafter\def\csname simpleicon@elixiricon\endcsname {\simpleiconsmap\symbol{"ED5F}}
+ \expandafter\def\csname simpleicon@elmicon\endcsname {\simpleiconsmap\symbol{"ED60}}
+ \expandafter\def\csname simpleicon@elseviericon\endcsname {\simpleiconsmap\symbol{"ED61}}
+ \expandafter\def\csname simpleicon@embarcaderoicon\endcsname {\simpleiconsmap\symbol{"ED62}}
+ \expandafter\def\csname simpleicon@embarkicon\endcsname {\simpleiconsmap\symbol{"ED63}}
+ \expandafter\def\csname simpleicon@emberdotjsicon\endcsname {\simpleiconsmap\symbol{"ED64}}
+ \expandafter\def\csname simpleicon@embyicon\endcsname {\simpleiconsmap\symbol{"ED65}}
+ \expandafter\def\csname simpleicon@emiratesicon\endcsname {\simpleiconsmap\symbol{"ED66}}
+ \expandafter\def\csname simpleicon@emlakjeticon\endcsname {\simpleiconsmap\symbol{"ED67}}
+ \expandafter\def\csname simpleicon@empirekredicon\endcsname {\simpleiconsmap\symbol{"ED68}}
+ \expandafter\def\csname simpleicon@endeavourosicon\endcsname {\simpleiconsmap\symbol{"ED69}}
+ \expandafter\def\csname simpleicon@engadgeticon\endcsname {\simpleiconsmap\symbol{"ED6A}}
+ \expandafter\def\csname simpleicon@enpassicon\endcsname {\simpleiconsmap\symbol{"ED6B}}
+ \expandafter\def\csname simpleicon@enterprisedbicon\endcsname {\simpleiconsmap\symbol{"ED6C}}
+ \expandafter\def\csname simpleicon@envatoicon\endcsname {\simpleiconsmap\symbol{"ED6D}}
+ \expandafter\def\csname simpleicon@envoyproxyicon\endcsname {\simpleiconsmap\symbol{"ED6E}}
+ \expandafter\def\csname simpleicon@epelicon\endcsname {\simpleiconsmap\symbol{"ED6F}}
+ \expandafter\def\csname simpleicon@epicgamesicon\endcsname {\simpleiconsmap\symbol{"ED70}}
+ \expandafter\def\csname simpleicon@epsonicon\endcsname {\simpleiconsmap\symbol{"ED71}}
+ \expandafter\def\csname simpleicon@equinixmetalicon\endcsname {\simpleiconsmap\symbol{"ED72}}
+ \expandafter\def\csname simpleicon@erasericon\endcsname {\simpleiconsmap\symbol{"ED73}}
+ \expandafter\def\csname simpleicon@ericssonicon\endcsname {\simpleiconsmap\symbol{"ED74}}
+ \expandafter\def\csname simpleicon@erlangicon\endcsname {\simpleiconsmap\symbol{"ED75}}
+ \expandafter\def\csname simpleicon@erpnexticon\endcsname {\simpleiconsmap\symbol{"ED76}}
+ \expandafter\def\csname simpleicon@esbuildicon\endcsname {\simpleiconsmap\symbol{"ED77}}
+ \expandafter\def\csname simpleicon@eseaicon\endcsname {\simpleiconsmap\symbol{"ED78}}
+ \expandafter\def\csname simpleicon@eslgamingicon\endcsname {\simpleiconsmap\symbol{"ED79}}
+ \expandafter\def\csname simpleicon@eslinticon\endcsname {\simpleiconsmap\symbol{"ED7A}}
+ \expandafter\def\csname simpleicon@esotericsoftwareicon\endcsname {\simpleiconsmap\symbol{"ED7B}}
+ \expandafter\def\csname simpleicon@esphomeicon\endcsname {\simpleiconsmap\symbol{"ED7C}}
+ \expandafter\def\csname simpleicon@espressificon\endcsname {\simpleiconsmap\symbol{"ED7D}}
+ \expandafter\def\csname simpleicon@esriicon\endcsname {\simpleiconsmap\symbol{"ED7E}}
+ \expandafter\def\csname simpleicon@etcdicon\endcsname {\simpleiconsmap\symbol{"ED7F}}
+ \expandafter\def\csname simpleicon@ethereumicon\endcsname {\simpleiconsmap\symbol{"ED80}}
+ \expandafter\def\csname simpleicon@ethersicon\endcsname {\simpleiconsmap\symbol{"ED81}}
+ \expandafter\def\csname simpleicon@ethiopianairlinesicon\endcsname {\simpleiconsmap\symbol{"ED82}}
+ \expandafter\def\csname simpleicon@etihadairwaysicon\endcsname {\simpleiconsmap\symbol{"ED83}}
+ \expandafter\def\csname simpleicon@etsyicon\endcsname {\simpleiconsmap\symbol{"ED84}}
+ \expandafter\def\csname simpleicon@europeanunionicon\endcsname {\simpleiconsmap\symbol{"ED85}}
+ \expandafter\def\csname simpleicon@eventstoreicon\endcsname {\simpleiconsmap\symbol{"ED86}}
+ \expandafter\def\csname simpleicon@eventbriteicon\endcsname {\simpleiconsmap\symbol{"ED87}}
+ \expandafter\def\csname simpleicon@evernoteicon\endcsname {\simpleiconsmap\symbol{"ED88}}
+ \expandafter\def\csname simpleicon@excalidrawicon\endcsname {\simpleiconsmap\symbol{"ED89}}
+ \expandafter\def\csname simpleicon@exercismicon\endcsname {\simpleiconsmap\symbol{"ED8A}}
+ \expandafter\def\csname simpleicon@exordoicon\endcsname {\simpleiconsmap\symbol{"ED8B}}
+ \expandafter\def\csname simpleicon@exoscaleicon\endcsname {\simpleiconsmap\symbol{"ED8C}}
+ \expandafter\def\csname simpleicon@expediaicon\endcsname {\simpleiconsmap\symbol{"ED8D}}
+ \expandafter\def\csname simpleicon@expensifyicon\endcsname {\simpleiconsmap\symbol{"ED8E}}
+ \expandafter\def\csname simpleicon@expertsexchangeicon\endcsname {\simpleiconsmap\symbol{"ED8F}}
+ \expandafter\def\csname simpleicon@expoicon\endcsname {\simpleiconsmap\symbol{"ED90}}
+ \expandafter\def\csname simpleicon@expressicon\endcsname {\simpleiconsmap\symbol{"ED91}}
+ \expandafter\def\csname simpleicon@expressdotcomicon\endcsname {\simpleiconsmap\symbol{"ED92}}
+ \expandafter\def\csname simpleicon@expressvpnicon\endcsname {\simpleiconsmap\symbol{"ED93}}
+ \expandafter\def\csname simpleicon@eyeemicon\endcsname {\simpleiconsmap\symbol{"ED94}}
+ \expandafter\def\csname simpleicon@fdroidicon\endcsname {\simpleiconsmap\symbol{"ED95}}
+ \expandafter\def\csname simpleicon@fsecureicon\endcsname {\simpleiconsmap\symbol{"ED96}}
+ \expandafter\def\csname simpleicon@fsharpicon\endcsname {\simpleiconsmap\symbol{"ED97}}
+ \expandafter\def\csname simpleicon@f1icon\endcsname {\simpleiconsmap\symbol{"ED98}}
+ \expandafter\def\csname simpleicon@f5icon\endcsname {\simpleiconsmap\symbol{"ED99}}
+ \expandafter\def\csname simpleicon@facebookicon\endcsname {\simpleiconsmap\symbol{"ED9A}}
+ \expandafter\def\csname simpleicon@facebookgamingicon\endcsname {\simpleiconsmap\symbol{"ED9B}}
+ \expandafter\def\csname simpleicon@facebookliveicon\endcsname {\simpleiconsmap\symbol{"ED9C}}
+ \expandafter\def\csname simpleicon@faceiticon\endcsname {\simpleiconsmap\symbol{"ED9D}}
+ \expandafter\def\csname simpleicon@facepunchicon\endcsname {\simpleiconsmap\symbol{"ED9E}}
+ \expandafter\def\csname simpleicon@fairphoneicon\endcsname {\simpleiconsmap\symbol{"ED9F}}
+ \expandafter\def\csname simpleicon@falcoicon\endcsname {\simpleiconsmap\symbol{"EDA0}}
+ \expandafter\def\csname simpleicon@falconicon\endcsname {\simpleiconsmap\symbol{"EDA1}}
+ \expandafter\def\csname simpleicon@fampayicon\endcsname {\simpleiconsmap\symbol{"EDA2}}
+ \expandafter\def\csname simpleicon@fandangoicon\endcsname {\simpleiconsmap\symbol{"EDA3}}
+ \expandafter\def\csname simpleicon@fandomicon\endcsname {\simpleiconsmap\symbol{"EDA4}}
+ \expandafter\def\csname simpleicon@fanfouicon\endcsname {\simpleiconsmap\symbol{"EDA5}}
+ \expandafter\def\csname simpleicon@fantomicon\endcsname {\simpleiconsmap\symbol{"EDA6}}
+ \expandafter\def\csname simpleicon@farcastericon\endcsname {\simpleiconsmap\symbol{"EDA7}}
+ \expandafter\def\csname simpleicon@fareharboricon\endcsname {\simpleiconsmap\symbol{"EDA8}}
+ \expandafter\def\csname simpleicon@farfetchicon\endcsname {\simpleiconsmap\symbol{"EDA9}}
+ \expandafter\def\csname simpleicon@fastapiicon\endcsname {\simpleiconsmap\symbol{"EDAA}}
+ \expandafter\def\csname simpleicon@fastifyicon\endcsname {\simpleiconsmap\symbol{"EDAB}}
+ \expandafter\def\csname simpleicon@fastlaneicon\endcsname {\simpleiconsmap\symbol{"EDAC}}
+ \expandafter\def\csname simpleicon@fastlyicon\endcsname {\simpleiconsmap\symbol{"EDAD}}
+ \expandafter\def\csname simpleicon@fathomicon\endcsname {\simpleiconsmap\symbol{"EDAE}}
+ \expandafter\def\csname simpleicon@faunaicon\endcsname {\simpleiconsmap\symbol{"EDAF}}
+ \expandafter\def\csname simpleicon@favroicon\endcsname {\simpleiconsmap\symbol{"EDB0}}
+ \expandafter\def\csname simpleicon@fccicon\endcsname {\simpleiconsmap\symbol{"EDB1}}
+ \expandafter\def\csname simpleicon@fedexicon\endcsname {\simpleiconsmap\symbol{"EDB2}}
+ \expandafter\def\csname simpleicon@fedoraicon\endcsname {\simpleiconsmap\symbol{"EDB3}}
+ \expandafter\def\csname simpleicon@feedlyicon\endcsname {\simpleiconsmap\symbol{"EDB4}}
+ \expandafter\def\csname simpleicon@ferrariicon\endcsname {\simpleiconsmap\symbol{"EDB5}}
+ \expandafter\def\csname simpleicon@ferrarinvicon\endcsname {\simpleiconsmap\symbol{"EDB6}}
+ \expandafter\def\csname simpleicon@ferretdbicon\endcsname {\simpleiconsmap\symbol{"EDB7}}
+ \expandafter\def\csname simpleicon@ffmpegicon\endcsname {\simpleiconsmap\symbol{"EDB8}}
+ \expandafter\def\csname simpleicon@fiicon\endcsname {\simpleiconsmap\symbol{"EDB9}}
+ \expandafter\def\csname simpleicon@fiaticon\endcsname {\simpleiconsmap\symbol{"EDBA}}
+ \expandafter\def\csname simpleicon@fidoallianceicon\endcsname {\simpleiconsmap\symbol{"EDBB}}
+ \expandafter\def\csname simpleicon@fifaicon\endcsname {\simpleiconsmap\symbol{"EDBC}}
+ \expandafter\def\csname simpleicon@figicon\endcsname {\simpleiconsmap\symbol{"EDBD}}
+ \expandafter\def\csname simpleicon@figmaicon\endcsname {\simpleiconsmap\symbol{"EDBE}}
+ \expandafter\def\csname simpleicon@figshareicon\endcsname {\simpleiconsmap\symbol{"EDBF}}
+ \expandafter\def\csname simpleicon@filaicon\endcsname {\simpleiconsmap\symbol{"EDC0}}
+ \expandafter\def\csname simpleicon@filamenticon\endcsname {\simpleiconsmap\symbol{"EDC1}}
+ \expandafter\def\csname simpleicon@filedotioicon\endcsname {\simpleiconsmap\symbol{"EDC2}}
+ \expandafter\def\csname simpleicon@filesicon\endcsname {\simpleiconsmap\symbol{"EDC3}}
+ \expandafter\def\csname simpleicon@filezillaicon\endcsname {\simpleiconsmap\symbol{"EDC4}}
+ \expandafter\def\csname simpleicon@finecoicon\endcsname {\simpleiconsmap\symbol{"EDC5}}
+ \expandafter\def\csname simpleicon@fingicon\endcsname {\simpleiconsmap\symbol{"EDC6}}
+ \expandafter\def\csname simpleicon@firebaseicon\endcsname {\simpleiconsmap\symbol{"EDC7}}
+ \expandafter\def\csname simpleicon@firefishicon\endcsname {\simpleiconsmap\symbol{"EDC8}}
+ \expandafter\def\csname simpleicon@fireflyiiiicon\endcsname {\simpleiconsmap\symbol{"EDC9}}
+ \expandafter\def\csname simpleicon@firefoxicon\endcsname {\simpleiconsmap\symbol{"EDCA}}
+ \expandafter\def\csname simpleicon@firefoxbrowsericon\endcsname {\simpleiconsmap\symbol{"EDCB}}
+ \expandafter\def\csname simpleicon@fireshipicon\endcsname {\simpleiconsmap\symbol{"EDCC}}
+ \expandafter\def\csname simpleicon@firewallaicon\endcsname {\simpleiconsmap\symbol{"EDCD}}
+ \expandafter\def\csname simpleicon@firsticon\endcsname {\simpleiconsmap\symbol{"EDCE}}
+ \expandafter\def\csname simpleicon@fishshellicon\endcsname {\simpleiconsmap\symbol{"EDCF}}
+ \expandafter\def\csname simpleicon@fitbiticon\endcsname {\simpleiconsmap\symbol{"EDD0}}
+ \expandafter\def\csname simpleicon@fivemicon\endcsname {\simpleiconsmap\symbol{"EDD1}}
+ \expandafter\def\csname simpleicon@fiverricon\endcsname {\simpleiconsmap\symbol{"EDD2}}
+ \expandafter\def\csname simpleicon@fizzicon\endcsname {\simpleiconsmap\symbol{"EDD3}}
+ \expandafter\def\csname simpleicon@flashforgeicon\endcsname {\simpleiconsmap\symbol{"EDD4}}
+ \expandafter\def\csname simpleicon@flaskicon\endcsname {\simpleiconsmap\symbol{"EDD5}}
+ \expandafter\def\csname simpleicon@flaticon\endcsname {\simpleiconsmap\symbol{"EDD6}}
+ \expandafter\def\csname simpleicon@flathubicon\endcsname {\simpleiconsmap\symbol{"EDD7}}
+ \expandafter\def\csname simpleicon@flatpakicon\endcsname {\simpleiconsmap\symbol{"EDD8}}
+ \expandafter\def\csname simpleicon@flickricon\endcsname {\simpleiconsmap\symbol{"EDD9}}
+ \expandafter\def\csname simpleicon@flightawareicon\endcsname {\simpleiconsmap\symbol{"EDDA}}
+ \expandafter\def\csname simpleicon@flipboardicon\endcsname {\simpleiconsmap\symbol{"EDDB}}
+ \expandafter\def\csname simpleicon@flipkarticon\endcsname {\simpleiconsmap\symbol{"EDDC}}
+ \expandafter\def\csname simpleicon@floatplaneicon\endcsname {\simpleiconsmap\symbol{"EDDD}}
+ \expandafter\def\csname simpleicon@floodicon\endcsname {\simpleiconsmap\symbol{"EDDE}}
+ \expandafter\def\csname simpleicon@fluentbiticon\endcsname {\simpleiconsmap\symbol{"EDDF}}
+ \expandafter\def\csname simpleicon@fluentdicon\endcsname {\simpleiconsmap\symbol{"EDE0}}
+ \expandafter\def\csname simpleicon@flukeicon\endcsname {\simpleiconsmap\symbol{"EDE1}}
+ \expandafter\def\csname simpleicon@fluttericon\endcsname {\simpleiconsmap\symbol{"EDE2}}
+ \expandafter\def\csname simpleicon@fluxicon\endcsname {\simpleiconsmap\symbol{"EDE3}}
+ \expandafter\def\csname simpleicon@flydotioicon\endcsname {\simpleiconsmap\symbol{"EDE4}}
+ \expandafter\def\csname simpleicon@flywayicon\endcsname {\simpleiconsmap\symbol{"EDE5}}
+ \expandafter\def\csname simpleicon@fmodicon\endcsname {\simpleiconsmap\symbol{"EDE6}}
+ \expandafter\def\csname simpleicon@fnacicon\endcsname {\simpleiconsmap\symbol{"EDE7}}
+ \expandafter\def\csname simpleicon@foliumicon\endcsname {\simpleiconsmap\symbol{"EDE8}}
+ \expandafter\def\csname simpleicon@fonomaicon\endcsname {\simpleiconsmap\symbol{"EDE9}}
+ \expandafter\def\csname simpleicon@fontawesomeicon\endcsname {\simpleiconsmap\symbol{"EDEA}}
+ \expandafter\def\csname simpleicon@fontbaseicon\endcsname {\simpleiconsmap\symbol{"EDEB}}
+ \expandafter\def\csname simpleicon@fontforgeicon\endcsname {\simpleiconsmap\symbol{"EDEC}}
+ \expandafter\def\csname simpleicon@foobar2000icon\endcsname {\simpleiconsmap\symbol{"EDED}}
+ \expandafter\def\csname simpleicon@foodpandaicon\endcsname {\simpleiconsmap\symbol{"EDEE}}
+ \expandafter\def\csname simpleicon@fordicon\endcsname {\simpleiconsmap\symbol{"EDEF}}
+ \expandafter\def\csname simpleicon@forgejoicon\endcsname {\simpleiconsmap\symbol{"EDF0}}
+ \expandafter\def\csname simpleicon@formikicon\endcsname {\simpleiconsmap\symbol{"EDF1}}
+ \expandafter\def\csname simpleicon@formspreeicon\endcsname {\simpleiconsmap\symbol{"EDF2}}
+ \expandafter\def\csname simpleicon@formstackicon\endcsname {\simpleiconsmap\symbol{"EDF3}}
+ \expandafter\def\csname simpleicon@fortineticon\endcsname {\simpleiconsmap\symbol{"EDF4}}
+ \expandafter\def\csname simpleicon@fortranicon\endcsname {\simpleiconsmap\symbol{"EDF5}}
+ \expandafter\def\csname simpleicon@fossaicon\endcsname {\simpleiconsmap\symbol{"EDF6}}
+ \expandafter\def\csname simpleicon@fossilscmicon\endcsname {\simpleiconsmap\symbol{"EDF7}}
+ \expandafter\def\csname simpleicon@foundryvirtualtabletopicon\endcsname {\simpleiconsmap\symbol{"EDF8}}
+ \expandafter\def\csname simpleicon@foursquareicon\endcsname {\simpleiconsmap\symbol{"EDF9}}
+ \expandafter\def\csname simpleicon@foxicon\endcsname {\simpleiconsmap\symbol{"EDFA}}
+ \expandafter\def\csname simpleicon@foxtelicon\endcsname {\simpleiconsmap\symbol{"EDFB}}
+ \expandafter\def\csname simpleicon@fozzyicon\endcsname {\simpleiconsmap\symbol{"EDFC}}
+ \expandafter\def\csname simpleicon@framericon\endcsname {\simpleiconsmap\symbol{"EDFD}}
+ \expandafter\def\csname simpleicon@frameworkicon\endcsname {\simpleiconsmap\symbol{"EDFE}}
+ \expandafter\def\csname simpleicon@framework7icon\endcsname {\simpleiconsmap\symbol{"EDFF}}
+ \expandafter\def\csname simpleicon@franprixicon\endcsname {\simpleiconsmap\symbol{"EE00}}
+ \expandafter\def\csname simpleicon@frappeicon\endcsname {\simpleiconsmap\symbol{"EE01}}
+ \expandafter\def\csname simpleicon@fraunhofergesellschafticon\endcsname {\simpleiconsmap\symbol{"EE02}}
+ \expandafter\def\csname simpleicon@freebsdicon\endcsname {\simpleiconsmap\symbol{"EE03}}
+ \expandafter\def\csname simpleicon@freecadicon\endcsname {\simpleiconsmap\symbol{"EE04}}
+ \expandafter\def\csname simpleicon@freecodecampicon\endcsname {\simpleiconsmap\symbol{"EE05}}
+ \expandafter\def\csname simpleicon@freedesktopdotorgicon\endcsname {\simpleiconsmap\symbol{"EE06}}
+ \expandafter\def\csname simpleicon@freelancericon\endcsname {\simpleiconsmap\symbol{"EE07}}
+ \expandafter\def\csname simpleicon@freelancermapicon\endcsname {\simpleiconsmap\symbol{"EE08}}
+ \expandafter\def\csname simpleicon@freenasicon\endcsname {\simpleiconsmap\symbol{"EE09}}
+ \expandafter\def\csname simpleicon@freeneticon\endcsname {\simpleiconsmap\symbol{"EE0A}}
+ \expandafter\def\csname simpleicon@freepikicon\endcsname {\simpleiconsmap\symbol{"EE0B}}
+ \expandafter\def\csname simpleicon@freshicon\endcsname {\simpleiconsmap\symbol{"EE0C}}
+ \expandafter\def\csname simpleicon@frontendmentoricon\endcsname {\simpleiconsmap\symbol{"EE0D}}
+ \expandafter\def\csname simpleicon@frontifyicon\endcsname {\simpleiconsmap\symbol{"EE0E}}
+ \expandafter\def\csname simpleicon@fuboicon\endcsname {\simpleiconsmap\symbol{"EE0F}}
+ \expandafter\def\csname simpleicon@fuelericon\endcsname {\simpleiconsmap\symbol{"EE10}}
+ \expandafter\def\csname simpleicon@fugacloudicon\endcsname {\simpleiconsmap\symbol{"EE11}}
+ \expandafter\def\csname simpleicon@fujifilmicon\endcsname {\simpleiconsmap\symbol{"EE12}}
+ \expandafter\def\csname simpleicon@fujitsuicon\endcsname {\simpleiconsmap\symbol{"EE13}}
+ \expandafter\def\csname simpleicon@furaffinityicon\endcsname {\simpleiconsmap\symbol{"EE14}}
+ \expandafter\def\csname simpleicon@furrynetworkicon\endcsname {\simpleiconsmap\symbol{"EE15}}
+ \expandafter\def\csname simpleicon@fusionauthicon\endcsname {\simpleiconsmap\symbol{"EE16}}
+ \expandafter\def\csname simpleicon@futurelearnicon\endcsname {\simpleiconsmap\symbol{"EE17}}
+ \expandafter\def\csname simpleicon@fyleicon\endcsname {\simpleiconsmap\symbol{"EE18}}
+ \expandafter\def\csname simpleicon@g2icon\endcsname {\simpleiconsmap\symbol{"EE19}}
+ \expandafter\def\csname simpleicon@g2aicon\endcsname {\simpleiconsmap\symbol{"EE1A}}
+ \expandafter\def\csname simpleicon@g2gicon\endcsname {\simpleiconsmap\symbol{"EE1B}}
+ \expandafter\def\csname simpleicon@galaxusicon\endcsname {\simpleiconsmap\symbol{"EE1C}}
+ \expandafter\def\csname simpleicon@gamedevelopericon\endcsname {\simpleiconsmap\symbol{"EE1D}}
+ \expandafter\def\csname simpleicon@gamejolticon\endcsname {\simpleiconsmap\symbol{"EE1E}}
+ \expandafter\def\csname simpleicon@gamescienceicon\endcsname {\simpleiconsmap\symbol{"EE1F}}
+ \expandafter\def\csname simpleicon@gamebananaicon\endcsname {\simpleiconsmap\symbol{"EE20}}
+ \expandafter\def\csname simpleicon@gamelofticon\endcsname {\simpleiconsmap\symbol{"EE21}}
+ \expandafter\def\csname simpleicon@gamemakericon\endcsname {\simpleiconsmap\symbol{"EE22}}
+ \expandafter\def\csname simpleicon@garminicon\endcsname {\simpleiconsmap\symbol{"EE23}}
+ \expandafter\def\csname simpleicon@gatlingicon\endcsname {\simpleiconsmap\symbol{"EE24}}
+ \expandafter\def\csname simpleicon@gatsbyicon\endcsname {\simpleiconsmap\symbol{"EE25}}
+ \expandafter\def\csname simpleicon@gcoreicon\endcsname {\simpleiconsmap\symbol{"EE26}}
+ \expandafter\def\csname simpleicon@gdalicon\endcsname {\simpleiconsmap\symbol{"EE27}}
+ \expandafter\def\csname simpleicon@geeksforgeeksicon\endcsname {\simpleiconsmap\symbol{"EE28}}
+ \expandafter\def\csname simpleicon@generalelectricicon\endcsname {\simpleiconsmap\symbol{"EE29}}
+ \expandafter\def\csname simpleicon@generalmotorsicon\endcsname {\simpleiconsmap\symbol{"EE2A}}
+ \expandafter\def\csname simpleicon@geniusicon\endcsname {\simpleiconsmap\symbol{"EE2B}}
+ \expandafter\def\csname simpleicon@gentooicon\endcsname {\simpleiconsmap\symbol{"EE2C}}
+ \expandafter\def\csname simpleicon@geocachingicon\endcsname {\simpleiconsmap\symbol{"EE2D}}
+ \expandafter\def\csname simpleicon@geodeicon\endcsname {\simpleiconsmap\symbol{"EE2E}}
+ \expandafter\def\csname simpleicon@geopandasicon\endcsname {\simpleiconsmap\symbol{"EE2F}}
+ \expandafter\def\csname simpleicon@gerriticon\endcsname {\simpleiconsmap\symbol{"EE30}}
+ \expandafter\def\csname simpleicon@getxicon\endcsname {\simpleiconsmap\symbol{"EE31}}
+ \expandafter\def\csname simpleicon@ghosticon\endcsname {\simpleiconsmap\symbol{"EE32}}
+ \expandafter\def\csname simpleicon@ghosteryicon\endcsname {\simpleiconsmap\symbol{"EE33}}
+ \expandafter\def\csname simpleicon@gimpicon\endcsname {\simpleiconsmap\symbol{"EE34}}
+ \expandafter\def\csname simpleicon@ginicon\endcsname {\simpleiconsmap\symbol{"EE35}}
+ \expandafter\def\csname simpleicon@giphyicon\endcsname {\simpleiconsmap\symbol{"EE36}}
+ \expandafter\def\csname simpleicon@giticon\endcsname {\simpleiconsmap\symbol{"EE37}}
+ \expandafter\def\csname simpleicon@gitextensionsicon\endcsname {\simpleiconsmap\symbol{"EE38}}
+ \expandafter\def\csname simpleicon@gitforwindowsicon\endcsname {\simpleiconsmap\symbol{"EE39}}
+ \expandafter\def\csname simpleicon@gitlfsicon\endcsname {\simpleiconsmap\symbol{"EE3A}}
+ \expandafter\def\csname simpleicon@gitbookicon\endcsname {\simpleiconsmap\symbol{"EE3B}}
+ \expandafter\def\csname simpleicon@gitconnectedicon\endcsname {\simpleiconsmap\symbol{"EE3C}}
+ \expandafter\def\csname simpleicon@giteaicon\endcsname {\simpleiconsmap\symbol{"EE3D}}
+ \expandafter\def\csname simpleicon@giteeicon\endcsname {\simpleiconsmap\symbol{"EE3E}}
+ \expandafter\def\csname simpleicon@githubicon\endcsname {\simpleiconsmap\symbol{"EE3F}}
+ \expandafter\def\csname simpleicon@githubactionsicon\endcsname {\simpleiconsmap\symbol{"EE40}}
+ \expandafter\def\csname simpleicon@githubcopiloticon\endcsname {\simpleiconsmap\symbol{"EE41}}
+ \expandafter\def\csname simpleicon@githubpagesicon\endcsname {\simpleiconsmap\symbol{"EE42}}
+ \expandafter\def\csname simpleicon@githubsponsorsicon\endcsname {\simpleiconsmap\symbol{"EE43}}
+ \expandafter\def\csname simpleicon@gitignoredotioicon\endcsname {\simpleiconsmap\symbol{"EE44}}
+ \expandafter\def\csname simpleicon@gitkrakenicon\endcsname {\simpleiconsmap\symbol{"EE45}}
+ \expandafter\def\csname simpleicon@gitlabicon\endcsname {\simpleiconsmap\symbol{"EE46}}
+ \expandafter\def\csname simpleicon@gitpodicon\endcsname {\simpleiconsmap\symbol{"EE47}}
+ \expandafter\def\csname simpleicon@gittericon\endcsname {\simpleiconsmap\symbol{"EE48}}
+ \expandafter\def\csname simpleicon@glassdooricon\endcsname {\simpleiconsmap\symbol{"EE49}}
+ \expandafter\def\csname simpleicon@glideicon\endcsname {\simpleiconsmap\symbol{"EE4A}}
+ \expandafter\def\csname simpleicon@glitchicon\endcsname {\simpleiconsmap\symbol{"EE4B}}
+ \expandafter\def\csname simpleicon@globusicon\endcsname {\simpleiconsmap\symbol{"EE4C}}
+ \expandafter\def\csname simpleicon@glovoicon\endcsname {\simpleiconsmap\symbol{"EE4D}}
+ \expandafter\def\csname simpleicon@gltficon\endcsname {\simpleiconsmap\symbol{"EE4E}}
+ \expandafter\def\csname simpleicon@gmailicon\endcsname {\simpleiconsmap\symbol{"EE4F}}
+ \expandafter\def\csname simpleicon@gmxicon\endcsname {\simpleiconsmap\symbol{"EE50}}
+ \expandafter\def\csname simpleicon@gnomeicon\endcsname {\simpleiconsmap\symbol{"EE51}}
+ \expandafter\def\csname simpleicon@gnometerminalicon\endcsname {\simpleiconsmap\symbol{"EE52}}
+ \expandafter\def\csname simpleicon@gnuicon\endcsname {\simpleiconsmap\symbol{"EE53}}
+ \expandafter\def\csname simpleicon@gnubashicon\endcsname {\simpleiconsmap\symbol{"EE54}}
+ \expandafter\def\csname simpleicon@gnuemacsicon\endcsname {\simpleiconsmap\symbol{"EE55}}
+ \expandafter\def\csname simpleicon@gnuicecaticon\endcsname {\simpleiconsmap\symbol{"EE56}}
+ \expandafter\def\csname simpleicon@gnuprivacyguardicon\endcsname {\simpleiconsmap\symbol{"EE57}}
+ \expandafter\def\csname simpleicon@gnusocialicon\endcsname {\simpleiconsmap\symbol{"EE58}}
+ \expandafter\def\csname simpleicon@goicon\endcsname {\simpleiconsmap\symbol{"EE59}}
+ \expandafter\def\csname simpleicon@gocdicon\endcsname {\simpleiconsmap\symbol{"EE5A}}
+ \expandafter\def\csname simpleicon@godaddyicon\endcsname {\simpleiconsmap\symbol{"EE5B}}
+ \expandafter\def\csname simpleicon@godotengineicon\endcsname {\simpleiconsmap\symbol{"EE5C}}
+ \expandafter\def\csname simpleicon@gofundmeicon\endcsname {\simpleiconsmap\symbol{"EE5D}}
+ \expandafter\def\csname simpleicon@gogdotcomicon\endcsname {\simpleiconsmap\symbol{"EE5E}}
+ \expandafter\def\csname simpleicon@gojekicon\endcsname {\simpleiconsmap\symbol{"EE5F}}
+ \expandafter\def\csname simpleicon@golandicon\endcsname {\simpleiconsmap\symbol{"EE60}}
+ \expandafter\def\csname simpleicon@goldenlineicon\endcsname {\simpleiconsmap\symbol{"EE61}}
+ \expandafter\def\csname simpleicon@goldmansachsicon\endcsname {\simpleiconsmap\symbol{"EE62}}
+ \expandafter\def\csname simpleicon@goodreadsicon\endcsname {\simpleiconsmap\symbol{"EE63}}
+ \expandafter\def\csname simpleicon@googleicon\endcsname {\simpleiconsmap\symbol{"EE64}}
+ \expandafter\def\csname simpleicon@googleadmobicon\endcsname {\simpleiconsmap\symbol{"EE65}}
+ \expandafter\def\csname simpleicon@googleadsicon\endcsname {\simpleiconsmap\symbol{"EE66}}
+ \expandafter\def\csname simpleicon@googleadsenseicon\endcsname {\simpleiconsmap\symbol{"EE67}}
+ \expandafter\def\csname simpleicon@googleanalyticsicon\endcsname {\simpleiconsmap\symbol{"EE68}}
+ \expandafter\def\csname simpleicon@googleappsscripticon\endcsname {\simpleiconsmap\symbol{"EE69}}
+ \expandafter\def\csname simpleicon@googleassistanticon\endcsname {\simpleiconsmap\symbol{"EE6A}}
+ \expandafter\def\csname simpleicon@googleauthenticatoricon\endcsname {\simpleiconsmap\symbol{"EE6B}}
+ \expandafter\def\csname simpleicon@googlebigqueryicon\endcsname {\simpleiconsmap\symbol{"EE6C}}
+ \expandafter\def\csname simpleicon@googlebigtableicon\endcsname {\simpleiconsmap\symbol{"EE6D}}
+ \expandafter\def\csname simpleicon@googlecalendaricon\endcsname {\simpleiconsmap\symbol{"EE6E}}
+ \expandafter\def\csname simpleicon@googlecampaignmanager360icon\endcsname {\simpleiconsmap\symbol{"EE6F}}
+ \expandafter\def\csname simpleicon@googlecardboardicon\endcsname {\simpleiconsmap\symbol{"EE70}}
+ \expandafter\def\csname simpleicon@googlechaticon\endcsname {\simpleiconsmap\symbol{"EE71}}
+ \expandafter\def\csname simpleicon@googlechromeicon\endcsname {\simpleiconsmap\symbol{"EE72}}
+ \expandafter\def\csname simpleicon@googlechronicleicon\endcsname {\simpleiconsmap\symbol{"EE73}}
+ \expandafter\def\csname simpleicon@googleclassroomicon\endcsname {\simpleiconsmap\symbol{"EE74}}
+ \expandafter\def\csname simpleicon@googlecloudicon\endcsname {\simpleiconsmap\symbol{"EE75}}
+ \expandafter\def\csname simpleicon@googlecloudcomposericon\endcsname {\simpleiconsmap\symbol{"EE76}}
+ \expandafter\def\csname simpleicon@googlecloudspannericon\endcsname {\simpleiconsmap\symbol{"EE77}}
+ \expandafter\def\csname simpleicon@googlecloudstorageicon\endcsname {\simpleiconsmap\symbol{"EE78}}
+ \expandafter\def\csname simpleicon@googlecolabicon\endcsname {\simpleiconsmap\symbol{"EE79}}
+ \expandafter\def\csname simpleicon@googlecontaineroptimizedosicon\endcsname {\simpleiconsmap\symbol{"EE7A}}
+ \expandafter\def\csname simpleicon@googledatastudioicon\endcsname {\simpleiconsmap\symbol{"EE7B}}
+ \expandafter\def\csname simpleicon@googledataflowicon\endcsname {\simpleiconsmap\symbol{"EE7C}}
+ \expandafter\def\csname simpleicon@googledataprocicon\endcsname {\simpleiconsmap\symbol{"EE7D}}
+ \expandafter\def\csname simpleicon@googledisplayandvideo360icon\endcsname {\simpleiconsmap\symbol{"EE7E}}
+ \expandafter\def\csname simpleicon@googledocsicon\endcsname {\simpleiconsmap\symbol{"EE7F}}
+ \expandafter\def\csname simpleicon@googledriveicon\endcsname {\simpleiconsmap\symbol{"EE80}}
+ \expandafter\def\csname simpleicon@googleearthicon\endcsname {\simpleiconsmap\symbol{"EE81}}
+ \expandafter\def\csname simpleicon@googleearthengineicon\endcsname {\simpleiconsmap\symbol{"EE82}}
+ \expandafter\def\csname simpleicon@googlefiticon\endcsname {\simpleiconsmap\symbol{"EE83}}
+ \expandafter\def\csname simpleicon@googlefontsicon\endcsname {\simpleiconsmap\symbol{"EE84}}
+ \expandafter\def\csname simpleicon@googleformsicon\endcsname {\simpleiconsmap\symbol{"EE85}}
+ \expandafter\def\csname simpleicon@googlegeminiicon\endcsname {\simpleiconsmap\symbol{"EE86}}
+ \expandafter\def\csname simpleicon@googlehomeicon\endcsname {\simpleiconsmap\symbol{"EE87}}
+ \expandafter\def\csname simpleicon@googlekeepicon\endcsname {\simpleiconsmap\symbol{"EE88}}
+ \expandafter\def\csname simpleicon@googlelensicon\endcsname {\simpleiconsmap\symbol{"EE89}}
+ \expandafter\def\csname simpleicon@googlemapsicon\endcsname {\simpleiconsmap\symbol{"EE8A}}
+ \expandafter\def\csname simpleicon@googlemarketingplatformicon\endcsname {\simpleiconsmap\symbol{"EE8B}}
+ \expandafter\def\csname simpleicon@googlemeeticon\endcsname {\simpleiconsmap\symbol{"EE8C}}
+ \expandafter\def\csname simpleicon@googlemessagesicon\endcsname {\simpleiconsmap\symbol{"EE8D}}
+ \expandafter\def\csname simpleicon@googlenearbyicon\endcsname {\simpleiconsmap\symbol{"EE8E}}
+ \expandafter\def\csname simpleicon@googlenewsicon\endcsname {\simpleiconsmap\symbol{"EE8F}}
+ \expandafter\def\csname simpleicon@googlepayicon\endcsname {\simpleiconsmap\symbol{"EE90}}
+ \expandafter\def\csname simpleicon@googlephotosicon\endcsname {\simpleiconsmap\symbol{"EE91}}
+ \expandafter\def\csname simpleicon@googleplayicon\endcsname {\simpleiconsmap\symbol{"EE92}}
+ \expandafter\def\csname simpleicon@googlepubsubicon\endcsname {\simpleiconsmap\symbol{"EE93}}
+ \expandafter\def\csname simpleicon@googlescholaricon\endcsname {\simpleiconsmap\symbol{"EE94}}
+ \expandafter\def\csname simpleicon@googlesearchconsoleicon\endcsname {\simpleiconsmap\symbol{"EE95}}
+ \expandafter\def\csname simpleicon@googlesheetsicon\endcsname {\simpleiconsmap\symbol{"EE96}}
+ \expandafter\def\csname simpleicon@googleslidesicon\endcsname {\simpleiconsmap\symbol{"EE97}}
+ \expandafter\def\csname simpleicon@googlestreetviewicon\endcsname {\simpleiconsmap\symbol{"EE98}}
+ \expandafter\def\csname simpleicon@googletagmanagericon\endcsname {\simpleiconsmap\symbol{"EE99}}
+ \expandafter\def\csname simpleicon@googletasksicon\endcsname {\simpleiconsmap\symbol{"EE9A}}
+ \expandafter\def\csname simpleicon@googletranslateicon\endcsname {\simpleiconsmap\symbol{"EE9B}}
+ \expandafter\def\csname simpleicon@gotomeetingicon\endcsname {\simpleiconsmap\symbol{"EE9C}}
+ \expandafter\def\csname simpleicon@grabicon\endcsname {\simpleiconsmap\symbol{"EE9D}}
+ \expandafter\def\csname simpleicon@gradioicon\endcsname {\simpleiconsmap\symbol{"EE9E}}
+ \expandafter\def\csname simpleicon@gradleicon\endcsname {\simpleiconsmap\symbol{"EE9F}}
+ \expandafter\def\csname simpleicon@gradleplaypublishericon\endcsname {\simpleiconsmap\symbol{"EEA0}}
+ \expandafter\def\csname simpleicon@grafanaicon\endcsname {\simpleiconsmap\symbol{"EEA1}}
+ \expandafter\def\csname simpleicon@grammarlyicon\endcsname {\simpleiconsmap\symbol{"EEA2}}
+ \expandafter\def\csname simpleicon@grandfraisicon\endcsname {\simpleiconsmap\symbol{"EEA3}}
+ \expandafter\def\csname simpleicon@grapheneosicon\endcsname {\simpleiconsmap\symbol{"EEA4}}
+ \expandafter\def\csname simpleicon@graphiteicon\endcsname {\simpleiconsmap\symbol{"EEA5}}
+ \expandafter\def\csname simpleicon@graphqlicon\endcsname {\simpleiconsmap\symbol{"EEA6}}
+ \expandafter\def\csname simpleicon@gravicon\endcsname {\simpleiconsmap\symbol{"EEA7}}
+ \expandafter\def\csname simpleicon@gravataricon\endcsname {\simpleiconsmap\symbol{"EEA8}}
+ \expandafter\def\csname simpleicon@graylogicon\endcsname {\simpleiconsmap\symbol{"EEA9}}
+ \expandafter\def\csname simpleicon@greasyforkicon\endcsname {\simpleiconsmap\symbol{"EEAA}}
+ \expandafter\def\csname simpleicon@greatlearningicon\endcsname {\simpleiconsmap\symbol{"EEAB}}
+ \expandafter\def\csname simpleicon@greenhouseicon\endcsname {\simpleiconsmap\symbol{"EEAC}}
+ \expandafter\def\csname simpleicon@greensockicon\endcsname {\simpleiconsmap\symbol{"EEAD}}
+ \expandafter\def\csname simpleicon@griddotaiicon\endcsname {\simpleiconsmap\symbol{"EEAE}}
+ \expandafter\def\csname simpleicon@gridsomeicon\endcsname {\simpleiconsmap\symbol{"EEAF}}
+ \expandafter\def\csname simpleicon@grocyicon\endcsname {\simpleiconsmap\symbol{"EEB0}}
+ \expandafter\def\csname simpleicon@groupmeicon\endcsname {\simpleiconsmap\symbol{"EEB1}}
+ \expandafter\def\csname simpleicon@grouponicon\endcsname {\simpleiconsmap\symbol{"EEB2}}
+ \expandafter\def\csname simpleicon@grubhubicon\endcsname {\simpleiconsmap\symbol{"EEB3}}
+ \expandafter\def\csname simpleicon@grunticon\endcsname {\simpleiconsmap\symbol{"EEB4}}
+ \expandafter\def\csname simpleicon@gskicon\endcsname {\simpleiconsmap\symbol{"EEB5}}
+ \expandafter\def\csname simpleicon@gsmarenadotcomicon\endcsname {\simpleiconsmap\symbol{"EEB6}}
+ \expandafter\def\csname simpleicon@gstreamericon\endcsname {\simpleiconsmap\symbol{"EEB7}}
+ \expandafter\def\csname simpleicon@gtkicon\endcsname {\simpleiconsmap\symbol{"EEB8}}
+ \expandafter\def\csname simpleicon@guangzhoumetroicon\endcsname {\simpleiconsmap\symbol{"EEB9}}
+ \expandafter\def\csname simpleicon@guildedicon\endcsname {\simpleiconsmap\symbol{"EEBA}}
+ \expandafter\def\csname simpleicon@guitarproicon\endcsname {\simpleiconsmap\symbol{"EEBB}}
+ \expandafter\def\csname simpleicon@gulpicon\endcsname {\simpleiconsmap\symbol{"EEBC}}
+ \expandafter\def\csname simpleicon@gumroadicon\endcsname {\simpleiconsmap\symbol{"EEBD}}
+ \expandafter\def\csname simpleicon@gumtreeicon\endcsname {\simpleiconsmap\symbol{"EEBE}}
+ \expandafter\def\csname simpleicon@gunicornicon\endcsname {\simpleiconsmap\symbol{"EEBF}}
+ \expandafter\def\csname simpleicon@gurobiicon\endcsname {\simpleiconsmap\symbol{"EEC0}}
+ \expandafter\def\csname simpleicon@gustoicon\endcsname {\simpleiconsmap\symbol{"EEC1}}
+ \expandafter\def\csname simpleicon@gutenbergicon\endcsname {\simpleiconsmap\symbol{"EEC2}}
+ \expandafter\def\csname simpleicon@handmicon\endcsname {\simpleiconsmap\symbol{"EEC3}}
+ \expandafter\def\csname simpleicon@h3icon\endcsname {\simpleiconsmap\symbol{"EEC4}}
+ \expandafter\def\csname simpleicon@habricon\endcsname {\simpleiconsmap\symbol{"EEC5}}
+ \expandafter\def\csname simpleicon@hackclubicon\endcsname {\simpleiconsmap\symbol{"EEC6}}
+ \expandafter\def\csname simpleicon@hacktheboxicon\endcsname {\simpleiconsmap\symbol{"EEC7}}
+ \expandafter\def\csname simpleicon@hackadayicon\endcsname {\simpleiconsmap\symbol{"EEC8}}
+ \expandafter\def\csname simpleicon@hackernoonicon\endcsname {\simpleiconsmap\symbol{"EEC9}}
+ \expandafter\def\csname simpleicon@hackerearthicon\endcsname {\simpleiconsmap\symbol{"EECA}}
+ \expandafter\def\csname simpleicon@hackeroneicon\endcsname {\simpleiconsmap\symbol{"EECB}}
+ \expandafter\def\csname simpleicon@hackerrankicon\endcsname {\simpleiconsmap\symbol{"EECC}}
+ \expandafter\def\csname simpleicon@hackstericon\endcsname {\simpleiconsmap\symbol{"EECD}}
+ \expandafter\def\csname simpleicon@halicon\endcsname {\simpleiconsmap\symbol{"EECE}}
+ \expandafter\def\csname simpleicon@handlebarsdotjsicon\endcsname {\simpleiconsmap\symbol{"EECF}}
+ \expandafter\def\csname simpleicon@handshakeicon\endcsname {\simpleiconsmap\symbol{"EED0}}
+ \expandafter\def\csname simpleicon@handshakeprotocolicon\endcsname {\simpleiconsmap\symbol{"EED1}}
+ \expandafter\def\csname simpleicon@happycowicon\endcsname {\simpleiconsmap\symbol{"EED2}}
+ \expandafter\def\csname simpleicon@harboricon\endcsname {\simpleiconsmap\symbol{"EED3}}
+ \expandafter\def\csname simpleicon@harmonyosicon\endcsname {\simpleiconsmap\symbol{"EED4}}
+ \expandafter\def\csname simpleicon@hashicorpicon\endcsname {\simpleiconsmap\symbol{"EED5}}
+ \expandafter\def\csname simpleicon@hashnodeicon\endcsname {\simpleiconsmap\symbol{"EED6}}
+ \expandafter\def\csname simpleicon@haskellicon\endcsname {\simpleiconsmap\symbol{"EED7}}
+ \expandafter\def\csname simpleicon@hasuraicon\endcsname {\simpleiconsmap\symbol{"EED8}}
+ \expandafter\def\csname simpleicon@hatenabookmarkicon\endcsname {\simpleiconsmap\symbol{"EED9}}
+ \expandafter\def\csname simpleicon@haveibeenpwnedicon\endcsname {\simpleiconsmap\symbol{"EEDA}}
+ \expandafter\def\csname simpleicon@haxeicon\endcsname {\simpleiconsmap\symbol{"EEDB}}
+ \expandafter\def\csname simpleicon@hboicon\endcsname {\simpleiconsmap\symbol{"EEDC}}
+ \expandafter\def\csname simpleicon@hclicon\endcsname {\simpleiconsmap\symbol{"EEDD}}
+ \expandafter\def\csname simpleicon@hdfcbankicon\endcsname {\simpleiconsmap\symbol{"EEDE}}
+ \expandafter\def\csname simpleicon@headlessuiicon\endcsname {\simpleiconsmap\symbol{"EEDF}}
+ \expandafter\def\csname simpleicon@headphonezoneicon\endcsname {\simpleiconsmap\symbol{"EEE0}}
+ \expandafter\def\csname simpleicon@headspaceicon\endcsname {\simpleiconsmap\symbol{"EEE1}}
+ \expandafter\def\csname simpleicon@hearthicon\endcsname {\simpleiconsmap\symbol{"EEE2}}
+ \expandafter\def\csname simpleicon@hearthisdotaticon\endcsname {\simpleiconsmap\symbol{"EEE3}}
+ \expandafter\def\csname simpleicon@hederaicon\endcsname {\simpleiconsmap\symbol{"EEE4}}
+ \expandafter\def\csname simpleicon@heliumicon\endcsname {\simpleiconsmap\symbol{"EEE5}}
+ \expandafter\def\csname simpleicon@helixicon\endcsname {\simpleiconsmap\symbol{"EEE6}}
+ \expandafter\def\csname simpleicon@hellofreshicon\endcsname {\simpleiconsmap\symbol{"EEE7}}
+ \expandafter\def\csname simpleicon@hellyhansenicon\endcsname {\simpleiconsmap\symbol{"EEE8}}
+ \expandafter\def\csname simpleicon@helmicon\endcsname {\simpleiconsmap\symbol{"EEE9}}
+ \expandafter\def\csname simpleicon@helpscouticon\endcsname {\simpleiconsmap\symbol{"EEEA}}
+ \expandafter\def\csname simpleicon@helpdeskicon\endcsname {\simpleiconsmap\symbol{"EEEB}}
+ \expandafter\def\csname simpleicon@hepsiemlakicon\endcsname {\simpleiconsmap\symbol{"EEEC}}
+ \expandafter\def\csname simpleicon@hereicon\endcsname {\simpleiconsmap\symbol{"EEED}}
+ \expandafter\def\csname simpleicon@hermesicon\endcsname {\simpleiconsmap\symbol{"EEEE}}
+ \expandafter\def\csname simpleicon@herokuicon\endcsname {\simpleiconsmap\symbol{"EEEF}}
+ \expandafter\def\csname simpleicon@hetznericon\endcsname {\simpleiconsmap\symbol{"EEF0}}
+ \expandafter\def\csname simpleicon@hevyicon\endcsname {\simpleiconsmap\symbol{"EEF1}}
+ \expandafter\def\csname simpleicon@hexleticon\endcsname {\simpleiconsmap\symbol{"EEF2}}
+ \expandafter\def\csname simpleicon@hexoicon\endcsname {\simpleiconsmap\symbol{"EEF3}}
+ \expandafter\def\csname simpleicon@heyicon\endcsname {\simpleiconsmap\symbol{"EEF4}}
+ \expandafter\def\csname simpleicon@hibobicon\endcsname {\simpleiconsmap\symbol{"EEF5}}
+ \expandafter\def\csname simpleicon@hibernateicon\endcsname {\simpleiconsmap\symbol{"EEF6}}
+ \expandafter\def\csname simpleicon@hiltonicon\endcsname {\simpleiconsmap\symbol{"EEF7}}
+ \expandafter\def\csname simpleicon@hiltonhotelsandresortsicon\endcsname {\simpleiconsmap\symbol{"EEF8}}
+ \expandafter\def\csname simpleicon@hitachiicon\endcsname {\simpleiconsmap\symbol{"EEF9}}
+ \expandafter\def\csname simpleicon@hiveicon\endcsname {\simpleiconsmap\symbol{"EEFA}}
+ \expandafter\def\csname simpleicon@hiveblockchainicon\endcsname {\simpleiconsmap\symbol{"EEFB}}
+ \expandafter\def\csname simpleicon@hivemqicon\endcsname {\simpleiconsmap\symbol{"EEFC}}
+ \expandafter\def\csname simpleicon@homarricon\endcsname {\simpleiconsmap\symbol{"EEFD}}
+ \expandafter\def\csname simpleicon@homeassistanticon\endcsname {\simpleiconsmap\symbol{"EEFE}}
+ \expandafter\def\csname simpleicon@homeassistantcommunitystoreicon\endcsname {\simpleiconsmap\symbol{"EEFF}}
+ \expandafter\def\csname simpleicon@homeadvisoricon\endcsname {\simpleiconsmap\symbol{"EF00}}
+ \expandafter\def\csname simpleicon@homebrewicon\endcsname {\simpleiconsmap\symbol{"EF01}}
+ \expandafter\def\csname simpleicon@homebridgeicon\endcsname {\simpleiconsmap\symbol{"EF02}}
+ \expandafter\def\csname simpleicon@homepageicon\endcsname {\simpleiconsmap\symbol{"EF03}}
+ \expandafter\def\csname simpleicon@homifyicon\endcsname {\simpleiconsmap\symbol{"EF04}}
+ \expandafter\def\csname simpleicon@hondaicon\endcsname {\simpleiconsmap\symbol{"EF05}}
+ \expandafter\def\csname simpleicon@honeyicon\endcsname {\simpleiconsmap\symbol{"EF06}}
+ \expandafter\def\csname simpleicon@honeybadgericon\endcsname {\simpleiconsmap\symbol{"EF07}}
+ \expandafter\def\csname simpleicon@honeygainicon\endcsname {\simpleiconsmap\symbol{"EF08}}
+ \expandafter\def\csname simpleicon@honoicon\endcsname {\simpleiconsmap\symbol{"EF09}}
+ \expandafter\def\csname simpleicon@honoricon\endcsname {\simpleiconsmap\symbol{"EF0A}}
+ \expandafter\def\csname simpleicon@hootsuiteicon\endcsname {\simpleiconsmap\symbol{"EF0B}}
+ \expandafter\def\csname simpleicon@hoppscotchicon\endcsname {\simpleiconsmap\symbol{"EF0C}}
+ \expandafter\def\csname simpleicon@hostingericon\endcsname {\simpleiconsmap\symbol{"EF0D}}
+ \expandafter\def\csname simpleicon@hotelsdotcomicon\endcsname {\simpleiconsmap\symbol{"EF0E}}
+ \expandafter\def\csname simpleicon@hotjaricon\endcsname {\simpleiconsmap\symbol{"EF0F}}
+ \expandafter\def\csname simpleicon@hotwireicon\endcsname {\simpleiconsmap\symbol{"EF10}}
+ \expandafter\def\csname simpleicon@houdiniicon\endcsname {\simpleiconsmap\symbol{"EF11}}
+ \expandafter\def\csname simpleicon@houzzicon\endcsname {\simpleiconsmap\symbol{"EF12}}
+ \expandafter\def\csname simpleicon@hpicon\endcsname {\simpleiconsmap\symbol{"EF13}}
+ \expandafter\def\csname simpleicon@hsbcicon\endcsname {\simpleiconsmap\symbol{"EF14}}
+ \expandafter\def\csname simpleicon@htcicon\endcsname {\simpleiconsmap\symbol{"EF15}}
+ \expandafter\def\csname simpleicon@htcviveicon\endcsname {\simpleiconsmap\symbol{"EF16}}
+ \expandafter\def\csname simpleicon@htmlacademyicon\endcsname {\simpleiconsmap\symbol{"EF17}}
+ \expandafter\def\csname simpleicon@html5icon\endcsname {\simpleiconsmap\symbol{"EF18}}
+ \expandafter\def\csname simpleicon@htmxicon\endcsname {\simpleiconsmap\symbol{"EF19}}
+ \expandafter\def\csname simpleicon@htopicon\endcsname {\simpleiconsmap\symbol{"EF1A}}
+ \expandafter\def\csname simpleicon@httpieicon\endcsname {\simpleiconsmap\symbol{"EF1B}}
+ \expandafter\def\csname simpleicon@huaweiicon\endcsname {\simpleiconsmap\symbol{"EF1C}}
+ \expandafter\def\csname simpleicon@hubspoticon\endcsname {\simpleiconsmap\symbol{"EF1D}}
+ \expandafter\def\csname simpleicon@huggingfaceicon\endcsname {\simpleiconsmap\symbol{"EF1E}}
+ \expandafter\def\csname simpleicon@hugoicon\endcsname {\simpleiconsmap\symbol{"EF1F}}
+ \expandafter\def\csname simpleicon@humblebundleicon\endcsname {\simpleiconsmap\symbol{"EF20}}
+ \expandafter\def\csname simpleicon@humhubicon\endcsname {\simpleiconsmap\symbol{"EF21}}
+ \expandafter\def\csname simpleicon@hungryjacksicon\endcsname {\simpleiconsmap\symbol{"EF22}}
+ \expandafter\def\csname simpleicon@husqvarnaicon\endcsname {\simpleiconsmap\symbol{"EF23}}
+ \expandafter\def\csname simpleicon@hypericon\endcsname {\simpleiconsmap\symbol{"EF24}}
+ \expandafter\def\csname simpleicon@hyperskillicon\endcsname {\simpleiconsmap\symbol{"EF25}}
+ \expandafter\def\csname simpleicon@hyperxicon\endcsname {\simpleiconsmap\symbol{"EF26}}
+ \expandafter\def\csname simpleicon@hypothesisicon\endcsname {\simpleiconsmap\symbol{"EF27}}
+ \expandafter\def\csname simpleicon@hyprlandicon\endcsname {\simpleiconsmap\symbol{"EF28}}
+ \expandafter\def\csname simpleicon@hyundaiicon\endcsname {\simpleiconsmap\symbol{"EF29}}
+ \expandafter\def\csname simpleicon@i18nexticon\endcsname {\simpleiconsmap\symbol{"EF2A}}
+ \expandafter\def\csname simpleicon@i3icon\endcsname {\simpleiconsmap\symbol{"EF2B}}
+ \expandafter\def\csname simpleicon@iataicon\endcsname {\simpleiconsmap\symbol{"EF2C}}
+ \expandafter\def\csname simpleicon@ibeaconicon\endcsname {\simpleiconsmap\symbol{"EF2D}}
+ \expandafter\def\csname simpleicon@iberiaicon\endcsname {\simpleiconsmap\symbol{"EF2E}}
+ \expandafter\def\csname simpleicon@icedicon\endcsname {\simpleiconsmap\symbol{"EF2F}}
+ \expandafter\def\csname simpleicon@icelandicon\endcsname {\simpleiconsmap\symbol{"EF30}}
+ \expandafter\def\csname simpleicon@icicibankicon\endcsname {\simpleiconsmap\symbol{"EF31}}
+ \expandafter\def\csname simpleicon@icingaicon\endcsname {\simpleiconsmap\symbol{"EF32}}
+ \expandafter\def\csname simpleicon@icloudicon\endcsname {\simpleiconsmap\symbol{"EF33}}
+ \expandafter\def\csname simpleicon@icomoonicon\endcsname {\simpleiconsmap\symbol{"EF34}}
+ \expandafter\def\csname simpleicon@iconicon\endcsname {\simpleiconsmap\symbol{"EF35}}
+ \expandafter\def\csname simpleicon@iconfindericon\endcsname {\simpleiconsmap\symbol{"EF36}}
+ \expandafter\def\csname simpleicon@iconifyicon\endcsname {\simpleiconsmap\symbol{"EF37}}
+ \expandafter\def\csname simpleicon@iconjaricon\endcsname {\simpleiconsmap\symbol{"EF38}}
+ \expandafter\def\csname simpleicon@icons8icon\endcsname {\simpleiconsmap\symbol{"EF39}}
+ \expandafter\def\csname simpleicon@icqicon\endcsname {\simpleiconsmap\symbol{"EF3A}}
+ \expandafter\def\csname simpleicon@ieeeicon\endcsname {\simpleiconsmap\symbol{"EF3B}}
+ \expandafter\def\csname simpleicon@ifixiticon\endcsname {\simpleiconsmap\symbol{"EF3C}}
+ \expandafter\def\csname simpleicon@ifoodicon\endcsname {\simpleiconsmap\symbol{"EF3D}}
+ \expandafter\def\csname simpleicon@ifttticon\endcsname {\simpleiconsmap\symbol{"EF3E}}
+ \expandafter\def\csname simpleicon@igdbicon\endcsname {\simpleiconsmap\symbol{"EF3F}}
+ \expandafter\def\csname simpleicon@ignicon\endcsname {\simpleiconsmap\symbol{"EF40}}
+ \expandafter\def\csname simpleicon@iheartradioicon\endcsname {\simpleiconsmap\symbol{"EF41}}
+ \expandafter\def\csname simpleicon@ikeaicon\endcsname {\simpleiconsmap\symbol{"EF42}}
+ \expandafter\def\csname simpleicon@iledefrancemobilitesicon\endcsname {\simpleiconsmap\symbol{"EF43}}
+ \expandafter\def\csname simpleicon@imagedotscicon\endcsname {\simpleiconsmap\symbol{"EF44}}
+ \expandafter\def\csname simpleicon@imagejicon\endcsname {\simpleiconsmap\symbol{"EF45}}
+ \expandafter\def\csname simpleicon@imdbicon\endcsname {\simpleiconsmap\symbol{"EF46}}
+ \expandafter\def\csname simpleicon@imessageicon\endcsname {\simpleiconsmap\symbol{"EF47}}
+ \expandafter\def\csname simpleicon@imguricon\endcsname {\simpleiconsmap\symbol{"EF48}}
+ \expandafter\def\csname simpleicon@immericon\endcsname {\simpleiconsmap\symbol{"EF49}}
+ \expandafter\def\csname simpleicon@immichicon\endcsname {\simpleiconsmap\symbol{"EF4A}}
+ \expandafter\def\csname simpleicon@imouicon\endcsname {\simpleiconsmap\symbol{"EF4B}}
+ \expandafter\def\csname simpleicon@improvmxicon\endcsname {\simpleiconsmap\symbol{"EF4C}}
+ \expandafter\def\csname simpleicon@indeedicon\endcsname {\simpleiconsmap\symbol{"EF4D}}
+ \expandafter\def\csname simpleicon@indiansuperleagueicon\endcsname {\simpleiconsmap\symbol{"EF4E}}
+ \expandafter\def\csname simpleicon@indiehackersicon\endcsname {\simpleiconsmap\symbol{"EF4F}}
+ \expandafter\def\csname simpleicon@indigoicon\endcsname {\simpleiconsmap\symbol{"EF50}}
+ \expandafter\def\csname simpleicon@inductiveautomationicon\endcsname {\simpleiconsmap\symbol{"EF51}}
+ \expandafter\def\csname simpleicon@inertiaicon\endcsname {\simpleiconsmap\symbol{"EF52}}
+ \expandafter\def\csname simpleicon@infinitiicon\endcsname {\simpleiconsmap\symbol{"EF53}}
+ \expandafter\def\csname simpleicon@influxdbicon\endcsname {\simpleiconsmap\symbol{"EF54}}
+ \expandafter\def\csname simpleicon@infomaniakicon\endcsname {\simpleiconsmap\symbol{"EF55}}
+ \expandafter\def\csname simpleicon@infoqicon\endcsname {\simpleiconsmap\symbol{"EF56}}
+ \expandafter\def\csname simpleicon@informaticaicon\endcsname {\simpleiconsmap\symbol{"EF57}}
+ \expandafter\def\csname simpleicon@infosysicon\endcsname {\simpleiconsmap\symbol{"EF58}}
+ \expandafter\def\csname simpleicon@infracosticon\endcsname {\simpleiconsmap\symbol{"EF59}}
+ \expandafter\def\csname simpleicon@ingressicon\endcsname {\simpleiconsmap\symbol{"EF5A}}
+ \expandafter\def\csname simpleicon@inkdropicon\endcsname {\simpleiconsmap\symbol{"EF5B}}
+ \expandafter\def\csname simpleicon@inkscapeicon\endcsname {\simpleiconsmap\symbol{"EF5C}}
+ \expandafter\def\csname simpleicon@inoreadericon\endcsname {\simpleiconsmap\symbol{"EF5D}}
+ \expandafter\def\csname simpleicon@insomniaicon\endcsname {\simpleiconsmap\symbol{"EF5E}}
+ \expandafter\def\csname simpleicon@inspireicon\endcsname {\simpleiconsmap\symbol{"EF5F}}
+ \expandafter\def\csname simpleicon@insta360icon\endcsname {\simpleiconsmap\symbol{"EF60}}
+ \expandafter\def\csname simpleicon@instacarticon\endcsname {\simpleiconsmap\symbol{"EF61}}
+ \expandafter\def\csname simpleicon@instagramicon\endcsname {\simpleiconsmap\symbol{"EF62}}
+ \expandafter\def\csname simpleicon@instapapericon\endcsname {\simpleiconsmap\symbol{"EF63}}
+ \expandafter\def\csname simpleicon@instatusicon\endcsname {\simpleiconsmap\symbol{"EF64}}
+ \expandafter\def\csname simpleicon@instructablesicon\endcsname {\simpleiconsmap\symbol{"EF65}}
+ \expandafter\def\csname simpleicon@instructureicon\endcsname {\simpleiconsmap\symbol{"EF66}}
+ \expandafter\def\csname simpleicon@intelicon\endcsname {\simpleiconsmap\symbol{"EF67}}
+ \expandafter\def\csname simpleicon@intellijideaicon\endcsname {\simpleiconsmap\symbol{"EF68}}
+ \expandafter\def\csname simpleicon@interactiondesignfoundationicon\endcsname {\simpleiconsmap\symbol{"EF69}}
+ \expandafter\def\csname simpleicon@interactjsicon\endcsname {\simpleiconsmap\symbol{"EF6A}}
+ \expandafter\def\csname simpleicon@interbaseicon\endcsname {\simpleiconsmap\symbol{"EF6B}}
+ \expandafter\def\csname simpleicon@intercomicon\endcsname {\simpleiconsmap\symbol{"EF6C}}
+ \expandafter\def\csname simpleicon@intermarcheicon\endcsname {\simpleiconsmap\symbol{"EF6D}}
+ \expandafter\def\csname simpleicon@internetarchiveicon\endcsname {\simpleiconsmap\symbol{"EF6E}}
+ \expandafter\def\csname simpleicon@internetcomputericon\endcsname {\simpleiconsmap\symbol{"EF6F}}
+ \expandafter\def\csname simpleicon@intigritiicon\endcsname {\simpleiconsmap\symbol{"EF70}}
+ \expandafter\def\csname simpleicon@intuiticon\endcsname {\simpleiconsmap\symbol{"EF71}}
+ \expandafter\def\csname simpleicon@invisionicon\endcsname {\simpleiconsmap\symbol{"EF72}}
+ \expandafter\def\csname simpleicon@invoiceninjaicon\endcsname {\simpleiconsmap\symbol{"EF73}}
+ \expandafter\def\csname simpleicon@iobrokericon\endcsname {\simpleiconsmap\symbol{"EF74}}
+ \expandafter\def\csname simpleicon@ionicicon\endcsname {\simpleiconsmap\symbol{"EF75}}
+ \expandafter\def\csname simpleicon@ionosicon\endcsname {\simpleiconsmap\symbol{"EF76}}
+ \expandafter\def\csname simpleicon@iosicon\endcsname {\simpleiconsmap\symbol{"EF77}}
+ \expandafter\def\csname simpleicon@iotaicon\endcsname {\simpleiconsmap\symbol{"EF78}}
+ \expandafter\def\csname simpleicon@ipfsicon\endcsname {\simpleiconsmap\symbol{"EF79}}
+ \expandafter\def\csname simpleicon@irisicon\endcsname {\simpleiconsmap\symbol{"EF7A}}
+ \expandafter\def\csname simpleicon@iroboticon\endcsname {\simpleiconsmap\symbol{"EF7B}}
+ \expandafter\def\csname simpleicon@isc2icon\endcsname {\simpleiconsmap\symbol{"EF7C}}
+ \expandafter\def\csname simpleicon@issuuicon\endcsname {\simpleiconsmap\symbol{"EF7D}}
+ \expandafter\def\csname simpleicon@istioicon\endcsname {\simpleiconsmap\symbol{"EF7E}}
+ \expandafter\def\csname simpleicon@itchdotioicon\endcsname {\simpleiconsmap\symbol{"EF7F}}
+ \expandafter\def\csname simpleicon@iterm2icon\endcsname {\simpleiconsmap\symbol{"EF80}}
+ \expandafter\def\csname simpleicon@itunesicon\endcsname {\simpleiconsmap\symbol{"EF81}}
+ \expandafter\def\csname simpleicon@itvxicon\endcsname {\simpleiconsmap\symbol{"EF82}}
+ \expandafter\def\csname simpleicon@ivecoicon\endcsname {\simpleiconsmap\symbol{"EF83}}
+ \expandafter\def\csname simpleicon@jabbericon\endcsname {\simpleiconsmap\symbol{"EF84}}
+ \expandafter\def\csname simpleicon@jaegericon\endcsname {\simpleiconsmap\symbol{"EF85}}
+ \expandafter\def\csname simpleicon@jaguaricon\endcsname {\simpleiconsmap\symbol{"EF86}}
+ \expandafter\def\csname simpleicon@jamboardicon\endcsname {\simpleiconsmap\symbol{"EF87}}
+ \expandafter\def\csname simpleicon@jamesonicon\endcsname {\simpleiconsmap\symbol{"EF88}}
+ \expandafter\def\csname simpleicon@jamstackicon\endcsname {\simpleiconsmap\symbol{"EF89}}
+ \expandafter\def\csname simpleicon@japanairlinesicon\endcsname {\simpleiconsmap\symbol{"EF8A}}
+ \expandafter\def\csname simpleicon@jasmineicon\endcsname {\simpleiconsmap\symbol{"EF8B}}
+ \expandafter\def\csname simpleicon@javascripticon\endcsname {\simpleiconsmap\symbol{"EF8C}}
+ \expandafter\def\csname simpleicon@jblicon\endcsname {\simpleiconsmap\symbol{"EF8D}}
+ \expandafter\def\csname simpleicon@jcbicon\endcsname {\simpleiconsmap\symbol{"EF8E}}
+ \expandafter\def\csname simpleicon@jeepicon\endcsname {\simpleiconsmap\symbol{"EF8F}}
+ \expandafter\def\csname simpleicon@jekyllicon\endcsname {\simpleiconsmap\symbol{"EF90}}
+ \expandafter\def\csname simpleicon@jellyfinicon\endcsname {\simpleiconsmap\symbol{"EF91}}
+ \expandafter\def\csname simpleicon@jenkinsicon\endcsname {\simpleiconsmap\symbol{"EF92}}
+ \expandafter\def\csname simpleicon@jesticon\endcsname {\simpleiconsmap\symbol{"EF93}}
+ \expandafter\def\csname simpleicon@jeticon\endcsname {\simpleiconsmap\symbol{"EF94}}
+ \expandafter\def\csname simpleicon@jetblueicon\endcsname {\simpleiconsmap\symbol{"EF95}}
+ \expandafter\def\csname simpleicon@jetbrainsicon\endcsname {\simpleiconsmap\symbol{"EF96}}
+ \expandafter\def\csname simpleicon@jetpackcomposeicon\endcsname {\simpleiconsmap\symbol{"EF97}}
+ \expandafter\def\csname simpleicon@jfrogicon\endcsname {\simpleiconsmap\symbol{"EF98}}
+ \expandafter\def\csname simpleicon@jfrogpipelinesicon\endcsname {\simpleiconsmap\symbol{"EF99}}
+ \expandafter\def\csname simpleicon@jhipstericon\endcsname {\simpleiconsmap\symbol{"EF9A}}
+ \expandafter\def\csname simpleicon@jinjaicon\endcsname {\simpleiconsmap\symbol{"EF9B}}
+ \expandafter\def\csname simpleicon@jioicon\endcsname {\simpleiconsmap\symbol{"EF9C}}
+ \expandafter\def\csname simpleicon@jiraicon\endcsname {\simpleiconsmap\symbol{"EF9D}}
+ \expandafter\def\csname simpleicon@jirasoftwareicon\endcsname {\simpleiconsmap\symbol{"EF9E}}
+ \expandafter\def\csname simpleicon@jitpackicon\endcsname {\simpleiconsmap\symbol{"EF9F}}
+ \expandafter\def\csname simpleicon@jitsiicon\endcsname {\simpleiconsmap\symbol{"EFA0}}
+ \expandafter\def\csname simpleicon@johndeereicon\endcsname {\simpleiconsmap\symbol{"EFA1}}
+ \expandafter\def\csname simpleicon@joomlaicon\endcsname {\simpleiconsmap\symbol{"EFA2}}
+ \expandafter\def\csname simpleicon@joplinicon\endcsname {\simpleiconsmap\symbol{"EFA3}}
+ \expandafter\def\csname simpleicon@jordanicon\endcsname {\simpleiconsmap\symbol{"EFA4}}
+ \expandafter\def\csname simpleicon@jouavicon\endcsname {\simpleiconsmap\symbol{"EFA5}}
+ \expandafter\def\csname simpleicon@jovianicon\endcsname {\simpleiconsmap\symbol{"EFA6}}
+ \expandafter\def\csname simpleicon@jpegicon\endcsname {\simpleiconsmap\symbol{"EFA7}}
+ \expandafter\def\csname simpleicon@jqueryicon\endcsname {\simpleiconsmap\symbol{"EFA8}}
+ \expandafter\def\csname simpleicon@jrgroupicon\endcsname {\simpleiconsmap\symbol{"EFA9}}
+ \expandafter\def\csname simpleicon@jsdelivricon\endcsname {\simpleiconsmap\symbol{"EFAA}}
+ \expandafter\def\csname simpleicon@jsfiddleicon\endcsname {\simpleiconsmap\symbol{"EFAB}}
+ \expandafter\def\csname simpleicon@jsonicon\endcsname {\simpleiconsmap\symbol{"EFAC}}
+ \expandafter\def\csname simpleicon@jsonwebtokensicon\endcsname {\simpleiconsmap\symbol{"EFAD}}
+ \expandafter\def\csname simpleicon@jsricon\endcsname {\simpleiconsmap\symbol{"EFAE}}
+ \expandafter\def\csname simpleicon@jssicon\endcsname {\simpleiconsmap\symbol{"EFAF}}
+ \expandafter\def\csname simpleicon@juceicon\endcsname {\simpleiconsmap\symbol{"EFB0}}
+ \expandafter\def\csname simpleicon@juejinicon\endcsname {\simpleiconsmap\symbol{"EFB1}}
+ \expandafter\def\csname simpleicon@jukeicon\endcsname {\simpleiconsmap\symbol{"EFB2}}
+ \expandafter\def\csname simpleicon@juliaicon\endcsname {\simpleiconsmap\symbol{"EFB3}}
+ \expandafter\def\csname simpleicon@junipernetworksicon\endcsname {\simpleiconsmap\symbol{"EFB4}}
+ \expandafter\def\csname simpleicon@junit5icon\endcsname {\simpleiconsmap\symbol{"EFB5}}
+ \expandafter\def\csname simpleicon@jupytericon\endcsname {\simpleiconsmap\symbol{"EFB6}}
+ \expandafter\def\csname simpleicon@justeaticon\endcsname {\simpleiconsmap\symbol{"EFB7}}
+ \expandafter\def\csname simpleicon@justgivingicon\endcsname {\simpleiconsmap\symbol{"EFB8}}
+ \expandafter\def\csname simpleicon@k3sicon\endcsname {\simpleiconsmap\symbol{"EFB9}}
+ \expandafter\def\csname simpleicon@k6icon\endcsname {\simpleiconsmap\symbol{"EFBA}}
+ \expandafter\def\csname simpleicon@kaggleicon\endcsname {\simpleiconsmap\symbol{"EFBB}}
+ \expandafter\def\csname simpleicon@kagiicon\endcsname {\simpleiconsmap\symbol{"EFBC}}
+ \expandafter\def\csname simpleicon@kahooticon\endcsname {\simpleiconsmap\symbol{"EFBD}}
+ \expandafter\def\csname simpleicon@kaiosicon\endcsname {\simpleiconsmap\symbol{"EFBE}}
+ \expandafter\def\csname simpleicon@kakaoicon\endcsname {\simpleiconsmap\symbol{"EFBF}}
+ \expandafter\def\csname simpleicon@kakaotalkicon\endcsname {\simpleiconsmap\symbol{"EFC0}}
+ \expandafter\def\csname simpleicon@kalilinuxicon\endcsname {\simpleiconsmap\symbol{"EFC1}}
+ \expandafter\def\csname simpleicon@kamailioicon\endcsname {\simpleiconsmap\symbol{"EFC2}}
+ \expandafter\def\csname simpleicon@kanikoicon\endcsname {\simpleiconsmap\symbol{"EFC3}}
+ \expandafter\def\csname simpleicon@karlsruherverkehrsverbundicon\endcsname {\simpleiconsmap\symbol{"EFC4}}
+ \expandafter\def\csname simpleicon@kasasmarticon\endcsname {\simpleiconsmap\symbol{"EFC5}}
+ \expandafter\def\csname simpleicon@kashflowicon\endcsname {\simpleiconsmap\symbol{"EFC6}}
+ \expandafter\def\csname simpleicon@kasperskyicon\endcsname {\simpleiconsmap\symbol{"EFC7}}
+ \expandafter\def\csname simpleicon@katanaicon\endcsname {\simpleiconsmap\symbol{"EFC8}}
+ \expandafter\def\csname simpleicon@kauflandicon\endcsname {\simpleiconsmap\symbol{"EFC9}}
+ \expandafter\def\csname simpleicon@kdeicon\endcsname {\simpleiconsmap\symbol{"EFCA}}
+ \expandafter\def\csname simpleicon@kdeplasmaicon\endcsname {\simpleiconsmap\symbol{"EFCB}}
+ \expandafter\def\csname simpleicon@kdenliveicon\endcsname {\simpleiconsmap\symbol{"EFCC}}
+ \expandafter\def\csname simpleicon@kedroicon\endcsname {\simpleiconsmap\symbol{"EFCD}}
+ \expandafter\def\csname simpleicon@keeneticicon\endcsname {\simpleiconsmap\symbol{"EFCE}}
+ \expandafter\def\csname simpleicon@keepachangelogicon\endcsname {\simpleiconsmap\symbol{"EFCF}}
+ \expandafter\def\csname simpleicon@keepassxcicon\endcsname {\simpleiconsmap\symbol{"EFD0}}
+ \expandafter\def\csname simpleicon@keepericon\endcsname {\simpleiconsmap\symbol{"EFD1}}
+ \expandafter\def\csname simpleicon@keewebicon\endcsname {\simpleiconsmap\symbol{"EFD2}}
+ \expandafter\def\csname simpleicon@kenticoicon\endcsname {\simpleiconsmap\symbol{"EFD3}}
+ \expandafter\def\csname simpleicon@kerasicon\endcsname {\simpleiconsmap\symbol{"EFD4}}
+ \expandafter\def\csname simpleicon@keybaseicon\endcsname {\simpleiconsmap\symbol{"EFD5}}
+ \expandafter\def\csname simpleicon@keycdnicon\endcsname {\simpleiconsmap\symbol{"EFD6}}
+ \expandafter\def\csname simpleicon@keycloakicon\endcsname {\simpleiconsmap\symbol{"EFD7}}
+ \expandafter\def\csname simpleicon@keystoneicon\endcsname {\simpleiconsmap\symbol{"EFD8}}
+ \expandafter\def\csname simpleicon@kfcicon\endcsname {\simpleiconsmap\symbol{"EFD9}}
+ \expandafter\def\csname simpleicon@khanacademyicon\endcsname {\simpleiconsmap\symbol{"EFDA}}
+ \expandafter\def\csname simpleicon@khronosgroupicon\endcsname {\simpleiconsmap\symbol{"EFDB}}
+ \expandafter\def\csname simpleicon@kiaicon\endcsname {\simpleiconsmap\symbol{"EFDC}}
+ \expandafter\def\csname simpleicon@kibanaicon\endcsname {\simpleiconsmap\symbol{"EFDD}}
+ \expandafter\def\csname simpleicon@kicadicon\endcsname {\simpleiconsmap\symbol{"EFDE}}
+ \expandafter\def\csname simpleicon@kickicon\endcsname {\simpleiconsmap\symbol{"EFDF}}
+ \expandafter\def\csname simpleicon@kickstartericon\endcsname {\simpleiconsmap\symbol{"EFE0}}
+ \expandafter\def\csname simpleicon@kikicon\endcsname {\simpleiconsmap\symbol{"EFE1}}
+ \expandafter\def\csname simpleicon@kingstontechnologyicon\endcsname {\simpleiconsmap\symbol{"EFE2}}
+ \expandafter\def\csname simpleicon@kinopoiskicon\endcsname {\simpleiconsmap\symbol{"EFE3}}
+ \expandafter\def\csname simpleicon@kinstaicon\endcsname {\simpleiconsmap\symbol{"EFE4}}
+ \expandafter\def\csname simpleicon@kirbyicon\endcsname {\simpleiconsmap\symbol{"EFE5}}
+ \expandafter\def\csname simpleicon@kiticon\endcsname {\simpleiconsmap\symbol{"EFE6}}
+ \expandafter\def\csname simpleicon@kitsuicon\endcsname {\simpleiconsmap\symbol{"EFE7}}
+ \expandafter\def\csname simpleicon@klarnaicon\endcsname {\simpleiconsmap\symbol{"EFE8}}
+ \expandafter\def\csname simpleicon@kleinanzeigenicon\endcsname {\simpleiconsmap\symbol{"EFE9}}
+ \expandafter\def\csname simpleicon@klmicon\endcsname {\simpleiconsmap\symbol{"EFEA}}
+ \expandafter\def\csname simpleicon@klookicon\endcsname {\simpleiconsmap\symbol{"EFEB}}
+ \expandafter\def\csname simpleicon@knativeicon\endcsname {\simpleiconsmap\symbol{"EFEC}}
+ \expandafter\def\csname simpleicon@knexdotjsicon\endcsname {\simpleiconsmap\symbol{"EFED}}
+ \expandafter\def\csname simpleicon@knimeicon\endcsname {\simpleiconsmap\symbol{"EFEE}}
+ \expandafter\def\csname simpleicon@knipicon\endcsname {\simpleiconsmap\symbol{"EFEF}}
+ \expandafter\def\csname simpleicon@knowledgebaseicon\endcsname {\simpleiconsmap\symbol{"EFF0}}
+ \expandafter\def\csname simpleicon@knownicon\endcsname {\simpleiconsmap\symbol{"EFF1}}
+ \expandafter\def\csname simpleicon@kofiicon\endcsname {\simpleiconsmap\symbol{"EFF2}}
+ \expandafter\def\csname simpleicon@koaicon\endcsname {\simpleiconsmap\symbol{"EFF3}}
+ \expandafter\def\csname simpleicon@kocicon\endcsname {\simpleiconsmap\symbol{"EFF4}}
+ \expandafter\def\csname simpleicon@kodakicon\endcsname {\simpleiconsmap\symbol{"EFF5}}
+ \expandafter\def\csname simpleicon@kodiicon\endcsname {\simpleiconsmap\symbol{"EFF6}}
+ \expandafter\def\csname simpleicon@koenigseggicon\endcsname {\simpleiconsmap\symbol{"EFF7}}
+ \expandafter\def\csname simpleicon@kofaxicon\endcsname {\simpleiconsmap\symbol{"EFF8}}
+ \expandafter\def\csname simpleicon@komooticon\endcsname {\simpleiconsmap\symbol{"EFF9}}
+ \expandafter\def\csname simpleicon@konamiicon\endcsname {\simpleiconsmap\symbol{"EFFA}}
+ \expandafter\def\csname simpleicon@kongicon\endcsname {\simpleiconsmap\symbol{"EFFB}}
+ \expandafter\def\csname simpleicon@kongregateicon\endcsname {\simpleiconsmap\symbol{"EFFC}}
+ \expandafter\def\csname simpleicon@konvaicon\endcsname {\simpleiconsmap\symbol{"EFFD}}
+ \expandafter\def\csname simpleicon@kotlinicon\endcsname {\simpleiconsmap\symbol{"EFFE}}
+ \expandafter\def\csname simpleicon@koyebicon\endcsname {\simpleiconsmap\symbol{"EFFF}}
+ \expandafter\def\csname simpleicon@kritaicon\endcsname {\simpleiconsmap\symbol{"F000}}
+ \expandafter\def\csname simpleicon@ktmicon\endcsname {\simpleiconsmap\symbol{"F001}}
+ \expandafter\def\csname simpleicon@ktoricon\endcsname {\simpleiconsmap\symbol{"F002}}
+ \expandafter\def\csname simpleicon@kuaishouicon\endcsname {\simpleiconsmap\symbol{"F003}}
+ \expandafter\def\csname simpleicon@kubernetesicon\endcsname {\simpleiconsmap\symbol{"F004}}
+ \expandafter\def\csname simpleicon@kubuntuicon\endcsname {\simpleiconsmap\symbol{"F005}}
+ \expandafter\def\csname simpleicon@kucoinicon\endcsname {\simpleiconsmap\symbol{"F006}}
+ \expandafter\def\csname simpleicon@kueskiicon\endcsname {\simpleiconsmap\symbol{"F007}}
+ \expandafter\def\csname simpleicon@kumaicon\endcsname {\simpleiconsmap\symbol{"F008}}
+ \expandafter\def\csname simpleicon@kununuicon\endcsname {\simpleiconsmap\symbol{"F009}}
+ \expandafter\def\csname simpleicon@kuulaicon\endcsname {\simpleiconsmap\symbol{"F00A}}
+ \expandafter\def\csname simpleicon@kxicon\endcsname {\simpleiconsmap\symbol{"F00B}}
+ \expandafter\def\csname simpleicon@kyoceraicon\endcsname {\simpleiconsmap\symbol{"F00C}}
+ \expandafter\def\csname simpleicon@lequipeicon\endcsname {\simpleiconsmap\symbol{"F00D}}
+ \expandafter\def\csname simpleicon@labviewicon\endcsname {\simpleiconsmap\symbol{"F00E}}
+ \expandafter\def\csname simpleicon@ladaicon\endcsname {\simpleiconsmap\symbol{"F00F}}
+ \expandafter\def\csname simpleicon@lamborghiniicon\endcsname {\simpleiconsmap\symbol{"F010}}
+ \expandafter\def\csname simpleicon@landrovericon\endcsname {\simpleiconsmap\symbol{"F011}}
+ \expandafter\def\csname simpleicon@langchainicon\endcsname {\simpleiconsmap\symbol{"F012}}
+ \expandafter\def\csname simpleicon@langgraphicon\endcsname {\simpleiconsmap\symbol{"F013}}
+ \expandafter\def\csname simpleicon@languagetoolicon\endcsname {\simpleiconsmap\symbol{"F014}}
+ \expandafter\def\csname simpleicon@lapceicon\endcsname {\simpleiconsmap\symbol{"F015}}
+ \expandafter\def\csname simpleicon@laragonicon\endcsname {\simpleiconsmap\symbol{"F016}}
+ \expandafter\def\csname simpleicon@laravelicon\endcsname {\simpleiconsmap\symbol{"F017}}
+ \expandafter\def\csname simpleicon@laravelhorizonicon\endcsname {\simpleiconsmap\symbol{"F018}}
+ \expandafter\def\csname simpleicon@laravelnovaicon\endcsname {\simpleiconsmap\symbol{"F019}}
+ \expandafter\def\csname simpleicon@lastdotfmicon\endcsname {\simpleiconsmap\symbol{"F01A}}
+ \expandafter\def\csname simpleicon@lastpassicon\endcsname {\simpleiconsmap\symbol{"F01B}}
+ \expandafter\def\csname simpleicon@latexicon\endcsname {\simpleiconsmap\symbol{"F01C}}
+ \expandafter\def\csname simpleicon@launchpadicon\endcsname {\simpleiconsmap\symbol{"F01D}}
+ \expandafter\def\csname simpleicon@lazarusicon\endcsname {\simpleiconsmap\symbol{"F01E}}
+ \expandafter\def\csname simpleicon@lazyvimicon\endcsname {\simpleiconsmap\symbol{"F01F}}
+ \expandafter\def\csname simpleicon@lbryicon\endcsname {\simpleiconsmap\symbol{"F020}}
+ \expandafter\def\csname simpleicon@leaderpriceicon\endcsname {\simpleiconsmap\symbol{"F021}}
+ \expandafter\def\csname simpleicon@leafleticon\endcsname {\simpleiconsmap\symbol{"F022}}
+ \expandafter\def\csname simpleicon@leagueoflegendsicon\endcsname {\simpleiconsmap\symbol{"F023}}
+ \expandafter\def\csname simpleicon@leanpubicon\endcsname {\simpleiconsmap\symbol{"F024}}
+ \expandafter\def\csname simpleicon@leetcodeicon\endcsname {\simpleiconsmap\symbol{"F025}}
+ \expandafter\def\csname simpleicon@lefthookicon\endcsname {\simpleiconsmap\symbol{"F026}}
+ \expandafter\def\csname simpleicon@legacygamesicon\endcsname {\simpleiconsmap\symbol{"F027}}
+ \expandafter\def\csname simpleicon@leicaicon\endcsname {\simpleiconsmap\symbol{"F028}}
+ \expandafter\def\csname simpleicon@lemmyicon\endcsname {\simpleiconsmap\symbol{"F029}}
+ \expandafter\def\csname simpleicon@lemonsqueezyicon\endcsname {\simpleiconsmap\symbol{"F02A}}
+ \expandafter\def\csname simpleicon@lenovoicon\endcsname {\simpleiconsmap\symbol{"F02B}}
+ \expandafter\def\csname simpleicon@lensicon\endcsname {\simpleiconsmap\symbol{"F02C}}
+ \expandafter\def\csname simpleicon@leptosicon\endcsname {\simpleiconsmap\symbol{"F02D}}
+ \expandafter\def\csname simpleicon@lernaicon\endcsname {\simpleiconsmap\symbol{"F02E}}
+ \expandafter\def\csname simpleicon@leroymerlinicon\endcsname {\simpleiconsmap\symbol{"F02F}}
+ \expandafter\def\csname simpleicon@leslibrairesicon\endcsname {\simpleiconsmap\symbol{"F030}}
+ \expandafter\def\csname simpleicon@lessicon\endcsname {\simpleiconsmap\symbol{"F031}}
+ \expandafter\def\csname simpleicon@letsencrypticon\endcsname {\simpleiconsmap\symbol{"F032}}
+ \expandafter\def\csname simpleicon@letterboxdicon\endcsname {\simpleiconsmap\symbol{"F033}}
+ \expandafter\def\csname simpleicon@levelsdotfyiicon\endcsname {\simpleiconsmap\symbol{"F034}}
+ \expandafter\def\csname simpleicon@lgicon\endcsname {\simpleiconsmap\symbol{"F035}}
+ \expandafter\def\csname simpleicon@liningicon\endcsname {\simpleiconsmap\symbol{"F036}}
+ \expandafter\def\csname simpleicon@liberadotchaticon\endcsname {\simpleiconsmap\symbol{"F037}}
+ \expandafter\def\csname simpleicon@liberapayicon\endcsname {\simpleiconsmap\symbol{"F038}}
+ \expandafter\def\csname simpleicon@librariesdotioicon\endcsname {\simpleiconsmap\symbol{"F039}}
+ \expandafter\def\csname simpleicon@librarythingicon\endcsname {\simpleiconsmap\symbol{"F03A}}
+ \expandafter\def\csname simpleicon@libreofficeicon\endcsname {\simpleiconsmap\symbol{"F03B}}
+ \expandafter\def\csname simpleicon@libreofficebaseicon\endcsname {\simpleiconsmap\symbol{"F03C}}
+ \expandafter\def\csname simpleicon@libreofficecalcicon\endcsname {\simpleiconsmap\symbol{"F03D}}
+ \expandafter\def\csname simpleicon@libreofficedrawicon\endcsname {\simpleiconsmap\symbol{"F03E}}
+ \expandafter\def\csname simpleicon@libreofficeimpressicon\endcsname {\simpleiconsmap\symbol{"F03F}}
+ \expandafter\def\csname simpleicon@libreofficemathicon\endcsname {\simpleiconsmap\symbol{"F040}}
+ \expandafter\def\csname simpleicon@libreofficewritericon\endcsname {\simpleiconsmap\symbol{"F041}}
+ \expandafter\def\csname simpleicon@libretranslateicon\endcsname {\simpleiconsmap\symbol{"F042}}
+ \expandafter\def\csname simpleicon@libretubeicon\endcsname {\simpleiconsmap\symbol{"F043}}
+ \expandafter\def\csname simpleicon@librewolficon\endcsname {\simpleiconsmap\symbol{"F044}}
+ \expandafter\def\csname simpleicon@libuvicon\endcsname {\simpleiconsmap\symbol{"F045}}
+ \expandafter\def\csname simpleicon@lichessicon\endcsname {\simpleiconsmap\symbol{"F046}}
+ \expandafter\def\csname simpleicon@lidlicon\endcsname {\simpleiconsmap\symbol{"F047}}
+ \expandafter\def\csname simpleicon@lifxicon\endcsname {\simpleiconsmap\symbol{"F048}}
+ \expandafter\def\csname simpleicon@lightburnicon\endcsname {\simpleiconsmap\symbol{"F049}}
+ \expandafter\def\csname simpleicon@lighthouseicon\endcsname {\simpleiconsmap\symbol{"F04A}}
+ \expandafter\def\csname simpleicon@lightningicon\endcsname {\simpleiconsmap\symbol{"F04B}}
+ \expandafter\def\csname simpleicon@limesurveyicon\endcsname {\simpleiconsmap\symbol{"F04C}}
+ \expandafter\def\csname simpleicon@lineicon\endcsname {\simpleiconsmap\symbol{"F04D}}
+ \expandafter\def\csname simpleicon@lineageosicon\endcsname {\simpleiconsmap\symbol{"F04E}}
+ \expandafter\def\csname simpleicon@linearicon\endcsname {\simpleiconsmap\symbol{"F04F}}
+ \expandafter\def\csname simpleicon@linkerdicon\endcsname {\simpleiconsmap\symbol{"F050}}
+ \expandafter\def\csname simpleicon@linkfireicon\endcsname {\simpleiconsmap\symbol{"F051}}
+ \expandafter\def\csname simpleicon@linksysicon\endcsname {\simpleiconsmap\symbol{"F052}}
+ \expandafter\def\csname simpleicon@linktreeicon\endcsname {\simpleiconsmap\symbol{"F053}}
+ \expandafter\def\csname simpleicon@linphoneicon\endcsname {\simpleiconsmap\symbol{"F054}}
+ \expandafter\def\csname simpleicon@lintcodeicon\endcsname {\simpleiconsmap\symbol{"F055}}
+ \expandafter\def\csname simpleicon@linuxicon\endcsname {\simpleiconsmap\symbol{"F056}}
+ \expandafter\def\csname simpleicon@linuxcontainersicon\endcsname {\simpleiconsmap\symbol{"F057}}
+ \expandafter\def\csname simpleicon@linuxfoundationicon\endcsname {\simpleiconsmap\symbol{"F058}}
+ \expandafter\def\csname simpleicon@linuxminticon\endcsname {\simpleiconsmap\symbol{"F059}}
+ \expandafter\def\csname simpleicon@linuxprofessionalinstituteicon\endcsname {\simpleiconsmap\symbol{"F05A}}
+ \expandafter\def\csname simpleicon@linuxservericon\endcsname {\simpleiconsmap\symbol{"F05B}}
+ \expandafter\def\csname simpleicon@lionairicon\endcsname {\simpleiconsmap\symbol{"F05C}}
+ \expandafter\def\csname simpleicon@liquibaseicon\endcsname {\simpleiconsmap\symbol{"F05D}}
+ \expandafter\def\csname simpleicon@listmonkicon\endcsname {\simpleiconsmap\symbol{"F05E}}
+ \expandafter\def\csname simpleicon@liticon\endcsname {\simpleiconsmap\symbol{"F05F}}
+ \expandafter\def\csname simpleicon@litecoinicon\endcsname {\simpleiconsmap\symbol{"F060}}
+ \expandafter\def\csname simpleicon@literalicon\endcsname {\simpleiconsmap\symbol{"F061}}
+ \expandafter\def\csname simpleicon@litiengineicon\endcsname {\simpleiconsmap\symbol{"F062}}
+ \expandafter\def\csname simpleicon@livechaticon\endcsname {\simpleiconsmap\symbol{"F063}}
+ \expandafter\def\csname simpleicon@livejournalicon\endcsname {\simpleiconsmap\symbol{"F064}}
+ \expandafter\def\csname simpleicon@livewireicon\endcsname {\simpleiconsmap\symbol{"F065}}
+ \expandafter\def\csname simpleicon@llvmicon\endcsname {\simpleiconsmap\symbol{"F066}}
+ \expandafter\def\csname simpleicon@lmmsicon\endcsname {\simpleiconsmap\symbol{"F067}}
+ \expandafter\def\csname simpleicon@lobstersicon\endcsname {\simpleiconsmap\symbol{"F068}}
+ \expandafter\def\csname simpleicon@localicon\endcsname {\simpleiconsmap\symbol{"F069}}
+ \expandafter\def\csname simpleicon@lodashicon\endcsname {\simpleiconsmap\symbol{"F06A}}
+ \expandafter\def\csname simpleicon@logitechicon\endcsname {\simpleiconsmap\symbol{"F06B}}
+ \expandafter\def\csname simpleicon@logitechgicon\endcsname {\simpleiconsmap\symbol{"F06C}}
+ \expandafter\def\csname simpleicon@logmeinicon\endcsname {\simpleiconsmap\symbol{"F06D}}
+ \expandafter\def\csname simpleicon@logseqicon\endcsname {\simpleiconsmap\symbol{"F06E}}
+ \expandafter\def\csname simpleicon@logstashicon\endcsname {\simpleiconsmap\symbol{"F06F}}
+ \expandafter\def\csname simpleicon@lookericon\endcsname {\simpleiconsmap\symbol{"F070}}
+ \expandafter\def\csname simpleicon@loomicon\endcsname {\simpleiconsmap\symbol{"F071}}
+ \expandafter\def\csname simpleicon@loopicon\endcsname {\simpleiconsmap\symbol{"F072}}
+ \expandafter\def\csname simpleicon@loopbackicon\endcsname {\simpleiconsmap\symbol{"F073}}
+ \expandafter\def\csname simpleicon@lootcrateicon\endcsname {\simpleiconsmap\symbol{"F074}}
+ \expandafter\def\csname simpleicon@lospecicon\endcsname {\simpleiconsmap\symbol{"F075}}
+ \expandafter\def\csname simpleicon@lotpolishairlinesicon\endcsname {\simpleiconsmap\symbol{"F076}}
+ \expandafter\def\csname simpleicon@ltspiceicon\endcsname {\simpleiconsmap\symbol{"F077}}
+ \expandafter\def\csname simpleicon@luaicon\endcsname {\simpleiconsmap\symbol{"F078}}
+ \expandafter\def\csname simpleicon@lubuntuicon\endcsname {\simpleiconsmap\symbol{"F079}}
+ \expandafter\def\csname simpleicon@luciaicon\endcsname {\simpleiconsmap\symbol{"F07A}}
+ \expandafter\def\csname simpleicon@lucidicon\endcsname {\simpleiconsmap\symbol{"F07B}}
+ \expandafter\def\csname simpleicon@lucideicon\endcsname {\simpleiconsmap\symbol{"F07C}}
+ \expandafter\def\csname simpleicon@ludwigicon\endcsname {\simpleiconsmap\symbol{"F07D}}
+ \expandafter\def\csname simpleicon@lufthansaicon\endcsname {\simpleiconsmap\symbol{"F07E}}
+ \expandafter\def\csname simpleicon@lumenicon\endcsname {\simpleiconsmap\symbol{"F07F}}
+ \expandafter\def\csname simpleicon@lunacyicon\endcsname {\simpleiconsmap\symbol{"F080}}
+ \expandafter\def\csname simpleicon@lutrisicon\endcsname {\simpleiconsmap\symbol{"F081}}
+ \expandafter\def\csname simpleicon@lvglicon\endcsname {\simpleiconsmap\symbol{"F082}}
+ \expandafter\def\csname simpleicon@lydiaicon\endcsname {\simpleiconsmap\symbol{"F083}}
+ \expandafter\def\csname simpleicon@lyfticon\endcsname {\simpleiconsmap\symbol{"F084}}
+ \expandafter\def\csname simpleicon@maasicon\endcsname {\simpleiconsmap\symbol{"F085}}
+ \expandafter\def\csname simpleicon@macosicon\endcsname {\simpleiconsmap\symbol{"F086}}
+ \expandafter\def\csname simpleicon@macpawicon\endcsname {\simpleiconsmap\symbol{"F087}}
+ \expandafter\def\csname simpleicon@macysicon\endcsname {\simpleiconsmap\symbol{"F088}}
+ \expandafter\def\csname simpleicon@magasinsuicon\endcsname {\simpleiconsmap\symbol{"F089}}
+ \expandafter\def\csname simpleicon@magicicon\endcsname {\simpleiconsmap\symbol{"F08A}}
+ \expandafter\def\csname simpleicon@magiskicon\endcsname {\simpleiconsmap\symbol{"F08B}}
+ \expandafter\def\csname simpleicon@mahindraicon\endcsname {\simpleiconsmap\symbol{"F08C}}
+ \expandafter\def\csname simpleicon@maildotcomicon\endcsname {\simpleiconsmap\symbol{"F08D}}
+ \expandafter\def\csname simpleicon@maildotruicon\endcsname {\simpleiconsmap\symbol{"F08E}}
+ \expandafter\def\csname simpleicon@mailboxdotorgicon\endcsname {\simpleiconsmap\symbol{"F08F}}
+ \expandafter\def\csname simpleicon@mailchimpicon\endcsname {\simpleiconsmap\symbol{"F090}}
+ \expandafter\def\csname simpleicon@mailgunicon\endcsname {\simpleiconsmap\symbol{"F091}}
+ \expandafter\def\csname simpleicon@mailtrapicon\endcsname {\simpleiconsmap\symbol{"F092}}
+ \expandafter\def\csname simpleicon@mainwpicon\endcsname {\simpleiconsmap\symbol{"F093}}
+ \expandafter\def\csname simpleicon@majorleaguehackingicon\endcsname {\simpleiconsmap\symbol{"F094}}
+ \expandafter\def\csname simpleicon@makeicon\endcsname {\simpleiconsmap\symbol{"F095}}
+ \expandafter\def\csname simpleicon@makerboticon\endcsname {\simpleiconsmap\symbol{"F096}}
+ \expandafter\def\csname simpleicon@malticon\endcsname {\simpleiconsmap\symbol{"F097}}
+ \expandafter\def\csname simpleicon@malwarebytesicon\endcsname {\simpleiconsmap\symbol{"F098}}
+ \expandafter\def\csname simpleicon@mambauiicon\endcsname {\simpleiconsmap\symbol{"F099}}
+ \expandafter\def\csname simpleicon@mampicon\endcsname {\simpleiconsmap\symbol{"F09A}}
+ \expandafter\def\csname simpleicon@manicon\endcsname {\simpleiconsmap\symbol{"F09B}}
+ \expandafter\def\csname simpleicon@manageiqicon\endcsname {\simpleiconsmap\symbol{"F09C}}
+ \expandafter\def\csname simpleicon@manjaroicon\endcsname {\simpleiconsmap\symbol{"F09D}}
+ \expandafter\def\csname simpleicon@mantineicon\endcsname {\simpleiconsmap\symbol{"F09E}}
+ \expandafter\def\csname simpleicon@mapboxicon\endcsname {\simpleiconsmap\symbol{"F09F}}
+ \expandafter\def\csname simpleicon@mapillaryicon\endcsname {\simpleiconsmap\symbol{"F0A0}}
+ \expandafter\def\csname simpleicon@maplibreicon\endcsname {\simpleiconsmap\symbol{"F0A1}}
+ \expandafter\def\csname simpleicon@maptilericon\endcsname {\simpleiconsmap\symbol{"F0A2}}
+ \expandafter\def\csname simpleicon@mariadbicon\endcsname {\simpleiconsmap\symbol{"F0A3}}
+ \expandafter\def\csname simpleicon@mariadbfoundationicon\endcsname {\simpleiconsmap\symbol{"F0A4}}
+ \expandafter\def\csname simpleicon@markdownicon\endcsname {\simpleiconsmap\symbol{"F0A5}}
+ \expandafter\def\csname simpleicon@markoicon\endcsname {\simpleiconsmap\symbol{"F0A6}}
+ \expandafter\def\csname simpleicon@marriotticon\endcsname {\simpleiconsmap\symbol{"F0A7}}
+ \expandafter\def\csname simpleicon@marvelappicon\endcsname {\simpleiconsmap\symbol{"F0A8}}
+ \expandafter\def\csname simpleicon@maseratiicon\endcsname {\simpleiconsmap\symbol{"F0A9}}
+ \expandafter\def\csname simpleicon@mastercardicon\endcsname {\simpleiconsmap\symbol{"F0AA}}
+ \expandafter\def\csname simpleicon@mastercomfigicon\endcsname {\simpleiconsmap\symbol{"F0AB}}
+ \expandafter\def\csname simpleicon@mastodonicon\endcsname {\simpleiconsmap\symbol{"F0AC}}
+ \expandafter\def\csname simpleicon@materialdesignicon\endcsname {\simpleiconsmap\symbol{"F0AD}}
+ \expandafter\def\csname simpleicon@materialdesigniconsicon\endcsname {\simpleiconsmap\symbol{"F0AE}}
+ \expandafter\def\csname simpleicon@materialformkdocsicon\endcsname {\simpleiconsmap\symbol{"F0AF}}
+ \expandafter\def\csname simpleicon@matillionicon\endcsname {\simpleiconsmap\symbol{"F0B0}}
+ \expandafter\def\csname simpleicon@matomoicon\endcsname {\simpleiconsmap\symbol{"F0B1}}
+ \expandafter\def\csname simpleicon@matrixicon\endcsname {\simpleiconsmap\symbol{"F0B2}}
+ \expandafter\def\csname simpleicon@matterdotjsicon\endcsname {\simpleiconsmap\symbol{"F0B3}}
+ \expandafter\def\csname simpleicon@mattermosticon\endcsname {\simpleiconsmap\symbol{"F0B4}}
+ \expandafter\def\csname simpleicon@matterneticon\endcsname {\simpleiconsmap\symbol{"F0B5}}
+ \expandafter\def\csname simpleicon@mauticicon\endcsname {\simpleiconsmap\symbol{"F0B6}}
+ \expandafter\def\csname simpleicon@maxicon\endcsname {\simpleiconsmap\symbol{"F0B7}}
+ \expandafter\def\csname simpleicon@maxplanckgesellschafticon\endcsname {\simpleiconsmap\symbol{"F0B8}}
+ \expandafter\def\csname simpleicon@maytagicon\endcsname {\simpleiconsmap\symbol{"F0B9}}
+ \expandafter\def\csname simpleicon@mazdaicon\endcsname {\simpleiconsmap\symbol{"F0BA}}
+ \expandafter\def\csname simpleicon@mazeicon\endcsname {\simpleiconsmap\symbol{"F0BB}}
+ \expandafter\def\csname simpleicon@mcafeeicon\endcsname {\simpleiconsmap\symbol{"F0BC}}
+ \expandafter\def\csname simpleicon@mcdonaldsicon\endcsname {\simpleiconsmap\symbol{"F0BD}}
+ \expandafter\def\csname simpleicon@mclarenicon\endcsname {\simpleiconsmap\symbol{"F0BE}}
+ \expandafter\def\csname simpleicon@mdbookicon\endcsname {\simpleiconsmap\symbol{"F0BF}}
+ \expandafter\def\csname simpleicon@mdnwebdocsicon\endcsname {\simpleiconsmap\symbol{"F0C0}}
+ \expandafter\def\csname simpleicon@mdxicon\endcsname {\simpleiconsmap\symbol{"F0C1}}
+ \expandafter\def\csname simpleicon@mediafireicon\endcsname {\simpleiconsmap\symbol{"F0C2}}
+ \expandafter\def\csname simpleicon@mediamarkticon\endcsname {\simpleiconsmap\symbol{"F0C3}}
+ \expandafter\def\csname simpleicon@mediapipeicon\endcsname {\simpleiconsmap\symbol{"F0C4}}
+ \expandafter\def\csname simpleicon@mediatekicon\endcsname {\simpleiconsmap\symbol{"F0C5}}
+ \expandafter\def\csname simpleicon@medibangpainticon\endcsname {\simpleiconsmap\symbol{"F0C6}}
+ \expandafter\def\csname simpleicon@mediumicon\endcsname {\simpleiconsmap\symbol{"F0C7}}
+ \expandafter\def\csname simpleicon@medusaicon\endcsname {\simpleiconsmap\symbol{"F0C8}}
+ \expandafter\def\csname simpleicon@meetupicon\endcsname {\simpleiconsmap\symbol{"F0C9}}
+ \expandafter\def\csname simpleicon@megaicon\endcsname {\simpleiconsmap\symbol{"F0CA}}
+ \expandafter\def\csname simpleicon@meilisearchicon\endcsname {\simpleiconsmap\symbol{"F0CB}}
+ \expandafter\def\csname simpleicon@meituanicon\endcsname {\simpleiconsmap\symbol{"F0CC}}
+ \expandafter\def\csname simpleicon@meizuicon\endcsname {\simpleiconsmap\symbol{"F0CD}}
+ \expandafter\def\csname simpleicon@mendeleyicon\endcsname {\simpleiconsmap\symbol{"F0CE}}
+ \expandafter\def\csname simpleicon@mentorcruiseicon\endcsname {\simpleiconsmap\symbol{"F0CF}}
+ \expandafter\def\csname simpleicon@mercadopagoicon\endcsname {\simpleiconsmap\symbol{"F0D0}}
+ \expandafter\def\csname simpleicon@mercedesicon\endcsname {\simpleiconsmap\symbol{"F0D1}}
+ \expandafter\def\csname simpleicon@merckicon\endcsname {\simpleiconsmap\symbol{"F0D2}}
+ \expandafter\def\csname simpleicon@mercurialicon\endcsname {\simpleiconsmap\symbol{"F0D3}}
+ \expandafter\def\csname simpleicon@mermaidicon\endcsname {\simpleiconsmap\symbol{"F0D4}}
+ \expandafter\def\csname simpleicon@messengericon\endcsname {\simpleiconsmap\symbol{"F0D5}}
+ \expandafter\def\csname simpleicon@metaicon\endcsname {\simpleiconsmap\symbol{"F0D6}}
+ \expandafter\def\csname simpleicon@metabaseicon\endcsname {\simpleiconsmap\symbol{"F0D7}}
+ \expandafter\def\csname simpleicon@metacriticicon\endcsname {\simpleiconsmap\symbol{"F0D8}}
+ \expandafter\def\csname simpleicon@metafiltericon\endcsname {\simpleiconsmap\symbol{"F0D9}}
+ \expandafter\def\csname simpleicon@metasploiticon\endcsname {\simpleiconsmap\symbol{"F0DA}}
+ \expandafter\def\csname simpleicon@meteoricon\endcsname {\simpleiconsmap\symbol{"F0DB}}
+ \expandafter\def\csname simpleicon@metroicon\endcsname {\simpleiconsmap\symbol{"F0DC}}
+ \expandafter\def\csname simpleicon@metrodelaciudaddemexicoicon\endcsname {\simpleiconsmap\symbol{"F0DD}}
+ \expandafter\def\csname simpleicon@metrodemadridicon\endcsname {\simpleiconsmap\symbol{"F0DE}}
+ \expandafter\def\csname simpleicon@metrodeparisicon\endcsname {\simpleiconsmap\symbol{"F0DF}}
+ \expandafter\def\csname simpleicon@meweicon\endcsname {\simpleiconsmap\symbol{"F0E0}}
+ \expandafter\def\csname simpleicon@mgicon\endcsname {\simpleiconsmap\symbol{"F0E1}}
+ \expandafter\def\csname simpleicon@microeditoricon\endcsname {\simpleiconsmap\symbol{"F0E2}}
+ \expandafter\def\csname simpleicon@microbiticon\endcsname {\simpleiconsmap\symbol{"F0E3}}
+ \expandafter\def\csname simpleicon@microdotblogicon\endcsname {\simpleiconsmap\symbol{"F0E4}}
+ \expandafter\def\csname simpleicon@micropythonicon\endcsname {\simpleiconsmap\symbol{"F0E5}}
+ \expandafter\def\csname simpleicon@microstationicon\endcsname {\simpleiconsmap\symbol{"F0E6}}
+ \expandafter\def\csname simpleicon@microstrategyicon\endcsname {\simpleiconsmap\symbol{"F0E7}}
+ \expandafter\def\csname simpleicon@midiicon\endcsname {\simpleiconsmap\symbol{"F0E8}}
+ \expandafter\def\csname simpleicon@migaduicon\endcsname {\simpleiconsmap\symbol{"F0E9}}
+ \expandafter\def\csname simpleicon@mihoyoicon\endcsname {\simpleiconsmap\symbol{"F0EA}}
+ \expandafter\def\csname simpleicon@mikrotikicon\endcsname {\simpleiconsmap\symbol{"F0EB}}
+ \expandafter\def\csname simpleicon@milanoteicon\endcsname {\simpleiconsmap\symbol{"F0EC}}
+ \expandafter\def\csname simpleicon@milvusicon\endcsname {\simpleiconsmap\symbol{"F0ED}}
+ \expandafter\def\csname simpleicon@mindsicon\endcsname {\simpleiconsmap\symbol{"F0EE}}
+ \expandafter\def\csname simpleicon@minetesticon\endcsname {\simpleiconsmap\symbol{"F0EF}}
+ \expandafter\def\csname simpleicon@mingww64icon\endcsname {\simpleiconsmap\symbol{"F0F0}}
+ \expandafter\def\csname simpleicon@miniicon\endcsname {\simpleiconsmap\symbol{"F0F1}}
+ \expandafter\def\csname simpleicon@minioicon\endcsname {\simpleiconsmap\symbol{"F0F2}}
+ \expandafter\def\csname simpleicon@mintlifyicon\endcsname {\simpleiconsmap\symbol{"F0F3}}
+ \expandafter\def\csname simpleicon@minutemailericon\endcsname {\simpleiconsmap\symbol{"F0F4}}
+ \expandafter\def\csname simpleicon@mirahezeicon\endcsname {\simpleiconsmap\symbol{"F0F5}}
+ \expandafter\def\csname simpleicon@miroicon\endcsname {\simpleiconsmap\symbol{"F0F6}}
+ \expandafter\def\csname simpleicon@misskeyicon\endcsname {\simpleiconsmap\symbol{"F0F7}}
+ \expandafter\def\csname simpleicon@mitsubishiicon\endcsname {\simpleiconsmap\symbol{"F0F8}}
+ \expandafter\def\csname simpleicon@mixicon\endcsname {\simpleiconsmap\symbol{"F0F9}}
+ \expandafter\def\csname simpleicon@mixcloudicon\endcsname {\simpleiconsmap\symbol{"F0FA}}
+ \expandafter\def\csname simpleicon@mixpanelicon\endcsname {\simpleiconsmap\symbol{"F0FB}}
+ \expandafter\def\csname simpleicon@mlbicon\endcsname {\simpleiconsmap\symbol{"F0FC}}
+ \expandafter\def\csname simpleicon@mlflowicon\endcsname {\simpleiconsmap\symbol{"F0FD}}
+ \expandafter\def\csname simpleicon@mobxicon\endcsname {\simpleiconsmap\symbol{"F0FE}}
+ \expandafter\def\csname simpleicon@mobxstatetreeicon\endcsname {\simpleiconsmap\symbol{"F0FF}}
+ \expandafter\def\csname simpleicon@mochaicon\endcsname {\simpleiconsmap\symbol{"F100}}
+ \expandafter\def\csname simpleicon@mockserviceworkericon\endcsname {\simpleiconsmap\symbol{"F101}}
+ \expandafter\def\csname simpleicon@modalicon\endcsname {\simpleiconsmap\symbol{"F102}}
+ \expandafter\def\csname simpleicon@modinicon\endcsname {\simpleiconsmap\symbol{"F103}}
+ \expandafter\def\csname simpleicon@modrinthicon\endcsname {\simpleiconsmap\symbol{"F104}}
+ \expandafter\def\csname simpleicon@modxicon\endcsname {\simpleiconsmap\symbol{"F105}}
+ \expandafter\def\csname simpleicon@mojeekicon\endcsname {\simpleiconsmap\symbol{"F106}}
+ \expandafter\def\csname simpleicon@moleculericon\endcsname {\simpleiconsmap\symbol{"F107}}
+ \expandafter\def\csname simpleicon@momenteoicon\endcsname {\simpleiconsmap\symbol{"F108}}
+ \expandafter\def\csname simpleicon@moneroicon\endcsname {\simpleiconsmap\symbol{"F109}}
+ \expandafter\def\csname simpleicon@moneygramicon\endcsname {\simpleiconsmap\symbol{"F10A}}
+ \expandafter\def\csname simpleicon@mongodbicon\endcsname {\simpleiconsmap\symbol{"F10B}}
+ \expandafter\def\csname simpleicon@mongooseicon\endcsname {\simpleiconsmap\symbol{"F10C}}
+ \expandafter\def\csname simpleicon@mongoosedotwsicon\endcsname {\simpleiconsmap\symbol{"F10D}}
+ \expandafter\def\csname simpleicon@monicaicon\endcsname {\simpleiconsmap\symbol{"F10E}}
+ \expandafter\def\csname simpleicon@monkeytieicon\endcsname {\simpleiconsmap\symbol{"F10F}}
+ \expandafter\def\csname simpleicon@monkeytypeicon\endcsname {\simpleiconsmap\symbol{"F110}}
+ \expandafter\def\csname simpleicon@monogameicon\endcsname {\simpleiconsmap\symbol{"F111}}
+ \expandafter\def\csname simpleicon@monoprixicon\endcsname {\simpleiconsmap\symbol{"F112}}
+ \expandafter\def\csname simpleicon@monstericon\endcsname {\simpleiconsmap\symbol{"F113}}
+ \expandafter\def\csname simpleicon@monzoicon\endcsname {\simpleiconsmap\symbol{"F114}}
+ \expandafter\def\csname simpleicon@mooicon\endcsname {\simpleiconsmap\symbol{"F115}}
+ \expandafter\def\csname simpleicon@moodleicon\endcsname {\simpleiconsmap\symbol{"F116}}
+ \expandafter\def\csname simpleicon@moonrepoicon\endcsname {\simpleiconsmap\symbol{"F117}}
+ \expandafter\def\csname simpleicon@moqicon\endcsname {\simpleiconsmap\symbol{"F118}}
+ \expandafter\def\csname simpleicon@moqupsicon\endcsname {\simpleiconsmap\symbol{"F119}}
+ \expandafter\def\csname simpleicon@morrisonsicon\endcsname {\simpleiconsmap\symbol{"F11A}}
+ \expandafter\def\csname simpleicon@moscowmetroicon\endcsname {\simpleiconsmap\symbol{"F11B}}
+ \expandafter\def\csname simpleicon@motorolaicon\endcsname {\simpleiconsmap\symbol{"F11C}}
+ \expandafter\def\csname simpleicon@movistaricon\endcsname {\simpleiconsmap\symbol{"F11D}}
+ \expandafter\def\csname simpleicon@mozillaicon\endcsname {\simpleiconsmap\symbol{"F11E}}
+ \expandafter\def\csname simpleicon@mpvicon\endcsname {\simpleiconsmap\symbol{"F11F}}
+ \expandafter\def\csname simpleicon@mqtticon\endcsname {\simpleiconsmap\symbol{"F120}}
+ \expandafter\def\csname simpleicon@msiicon\endcsname {\simpleiconsmap\symbol{"F121}}
+ \expandafter\def\csname simpleicon@msibusinessicon\endcsname {\simpleiconsmap\symbol{"F122}}
+ \expandafter\def\csname simpleicon@mtaicon\endcsname {\simpleiconsmap\symbol{"F123}}
+ \expandafter\def\csname simpleicon@mtricon\endcsname {\simpleiconsmap\symbol{"F124}}
+ \expandafter\def\csname simpleicon@mubiicon\endcsname {\simpleiconsmap\symbol{"F125}}
+ \expandafter\def\csname simpleicon@muiicon\endcsname {\simpleiconsmap\symbol{"F126}}
+ \expandafter\def\csname simpleicon@mulesofticon\endcsname {\simpleiconsmap\symbol{"F127}}
+ \expandafter\def\csname simpleicon@mullericon\endcsname {\simpleiconsmap\symbol{"F128}}
+ \expandafter\def\csname simpleicon@mullvadicon\endcsname {\simpleiconsmap\symbol{"F129}}
+ \expandafter\def\csname simpleicon@multisimicon\endcsname {\simpleiconsmap\symbol{"F12A}}
+ \expandafter\def\csname simpleicon@mumbleicon\endcsname {\simpleiconsmap\symbol{"F12B}}
+ \expandafter\def\csname simpleicon@muoicon\endcsname {\simpleiconsmap\symbol{"F12C}}
+ \expandafter\def\csname simpleicon@muralicon\endcsname {\simpleiconsmap\symbol{"F12D}}
+ \expandafter\def\csname simpleicon@musescoreicon\endcsname {\simpleiconsmap\symbol{"F12E}}
+ \expandafter\def\csname simpleicon@musicbrainzicon\endcsname {\simpleiconsmap\symbol{"F12F}}
+ \expandafter\def\csname simpleicon@mxlinuxicon\endcsname {\simpleiconsmap\symbol{"F130}}
+ \expandafter\def\csname simpleicon@myanimelisticon\endcsname {\simpleiconsmap\symbol{"F131}}
+ \expandafter\def\csname simpleicon@mygeticon\endcsname {\simpleiconsmap\symbol{"F132}}
+ \expandafter\def\csname simpleicon@myobicon\endcsname {\simpleiconsmap\symbol{"F133}}
+ \expandafter\def\csname simpleicon@myspaceicon\endcsname {\simpleiconsmap\symbol{"F134}}
+ \expandafter\def\csname simpleicon@mysqlicon\endcsname {\simpleiconsmap\symbol{"F135}}
+ \expandafter\def\csname simpleicon@n26icon\endcsname {\simpleiconsmap\symbol{"F136}}
+ \expandafter\def\csname simpleicon@n8nicon\endcsname {\simpleiconsmap\symbol{"F137}}
+ \expandafter\def\csname simpleicon@namebaseicon\endcsname {\simpleiconsmap\symbol{"F138}}
+ \expandafter\def\csname simpleicon@namecheapicon\endcsname {\simpleiconsmap\symbol{"F139}}
+ \expandafter\def\csname simpleicon@namemcicon\endcsname {\simpleiconsmap\symbol{"F13A}}
+ \expandafter\def\csname simpleicon@namesiloicon\endcsname {\simpleiconsmap\symbol{"F13B}}
+ \expandafter\def\csname simpleicon@namuwikiicon\endcsname {\simpleiconsmap\symbol{"F13C}}
+ \expandafter\def\csname simpleicon@nanoicon\endcsname {\simpleiconsmap\symbol{"F13D}}
+ \expandafter\def\csname simpleicon@nanostoresicon\endcsname {\simpleiconsmap\symbol{"F13E}}
+ \expandafter\def\csname simpleicon@napstericon\endcsname {\simpleiconsmap\symbol{"F13F}}
+ \expandafter\def\csname simpleicon@nasaicon\endcsname {\simpleiconsmap\symbol{"F140}}
+ \expandafter\def\csname simpleicon@nationalgridicon\endcsname {\simpleiconsmap\symbol{"F141}}
+ \expandafter\def\csname simpleicon@nationalrailicon\endcsname {\simpleiconsmap\symbol{"F142}}
+ \expandafter\def\csname simpleicon@nativescripticon\endcsname {\simpleiconsmap\symbol{"F143}}
+ \expandafter\def\csname simpleicon@natsdotioicon\endcsname {\simpleiconsmap\symbol{"F144}}
+ \expandafter\def\csname simpleicon@navericon\endcsname {\simpleiconsmap\symbol{"F145}}
+ \expandafter\def\csname simpleicon@nbaicon\endcsname {\simpleiconsmap\symbol{"F146}}
+ \expandafter\def\csname simpleicon@nbbicon\endcsname {\simpleiconsmap\symbol{"F147}}
+ \expandafter\def\csname simpleicon@nbcicon\endcsname {\simpleiconsmap\symbol{"F148}}
+ \expandafter\def\csname simpleicon@ndricon\endcsname {\simpleiconsmap\symbol{"F149}}
+ \expandafter\def\csname simpleicon@nearicon\endcsname {\simpleiconsmap\symbol{"F14A}}
+ \expandafter\def\csname simpleicon@nebulaicon\endcsname {\simpleiconsmap\symbol{"F14B}}
+ \expandafter\def\csname simpleicon@necicon\endcsname {\simpleiconsmap\symbol{"F14C}}
+ \expandafter\def\csname simpleicon@neo4jicon\endcsname {\simpleiconsmap\symbol{"F14D}}
+ \expandafter\def\csname simpleicon@neovimicon\endcsname {\simpleiconsmap\symbol{"F14E}}
+ \expandafter\def\csname simpleicon@neptuneicon\endcsname {\simpleiconsmap\symbol{"F14F}}
+ \expandafter\def\csname simpleicon@nestjsicon\endcsname {\simpleiconsmap\symbol{"F150}}
+ \expandafter\def\csname simpleicon@netappicon\endcsname {\simpleiconsmap\symbol{"F151}}
+ \expandafter\def\csname simpleicon@netbsdicon\endcsname {\simpleiconsmap\symbol{"F152}}
+ \expandafter\def\csname simpleicon@netcupicon\endcsname {\simpleiconsmap\symbol{"F153}}
+ \expandafter\def\csname simpleicon@netdataicon\endcsname {\simpleiconsmap\symbol{"F154}}
+ \expandafter\def\csname simpleicon@neteasecloudmusicicon\endcsname {\simpleiconsmap\symbol{"F155}}
+ \expandafter\def\csname simpleicon@netflixicon\endcsname {\simpleiconsmap\symbol{"F156}}
+ \expandafter\def\csname simpleicon@netgearicon\endcsname {\simpleiconsmap\symbol{"F157}}
+ \expandafter\def\csname simpleicon@netlifyicon\endcsname {\simpleiconsmap\symbol{"F158}}
+ \expandafter\def\csname simpleicon@netteicon\endcsname {\simpleiconsmap\symbol{"F159}}
+ \expandafter\def\csname simpleicon@nettoicon\endcsname {\simpleiconsmap\symbol{"F15A}}
+ \expandafter\def\csname simpleicon@neutralinojsicon\endcsname {\simpleiconsmap\symbol{"F15B}}
+ \expandafter\def\csname simpleicon@newbalanceicon\endcsname {\simpleiconsmap\symbol{"F15C}}
+ \expandafter\def\csname simpleicon@newjapanprowrestlingicon\endcsname {\simpleiconsmap\symbol{"F15D}}
+ \expandafter\def\csname simpleicon@newrelicicon\endcsname {\simpleiconsmap\symbol{"F15E}}
+ \expandafter\def\csname simpleicon@newyorktimesicon\endcsname {\simpleiconsmap\symbol{"F15F}}
+ \expandafter\def\csname simpleicon@neweggicon\endcsname {\simpleiconsmap\symbol{"F160}}
+ \expandafter\def\csname simpleicon@nexonicon\endcsname {\simpleiconsmap\symbol{"F161}}
+ \expandafter\def\csname simpleicon@nextdotjsicon\endcsname {\simpleiconsmap\symbol{"F162}}
+ \expandafter\def\csname simpleicon@nextbilliondotaiicon\endcsname {\simpleiconsmap\symbol{"F163}}
+ \expandafter\def\csname simpleicon@nextcloudicon\endcsname {\simpleiconsmap\symbol{"F164}}
+ \expandafter\def\csname simpleicon@nextdnsicon\endcsname {\simpleiconsmap\symbol{"F165}}
+ \expandafter\def\csname simpleicon@nextdooricon\endcsname {\simpleiconsmap\symbol{"F166}}
+ \expandafter\def\csname simpleicon@nextflowicon\endcsname {\simpleiconsmap\symbol{"F167}}
+ \expandafter\def\csname simpleicon@nextraicon\endcsname {\simpleiconsmap\symbol{"F168}}
+ \expandafter\def\csname simpleicon@nextuiicon\endcsname {\simpleiconsmap\symbol{"F169}}
+ \expandafter\def\csname simpleicon@nexusmodsicon\endcsname {\simpleiconsmap\symbol{"F16A}}
+ \expandafter\def\csname simpleicon@nfcoreicon\endcsname {\simpleiconsmap\symbol{"F16B}}
+ \expandafter\def\csname simpleicon@nfcicon\endcsname {\simpleiconsmap\symbol{"F16C}}
+ \expandafter\def\csname simpleicon@nginxicon\endcsname {\simpleiconsmap\symbol{"F16D}}
+ \expandafter\def\csname simpleicon@nginxproxymanagericon\endcsname {\simpleiconsmap\symbol{"F16E}}
+ \expandafter\def\csname simpleicon@ngrokicon\endcsname {\simpleiconsmap\symbol{"F16F}}
+ \expandafter\def\csname simpleicon@ngrxicon\endcsname {\simpleiconsmap\symbol{"F170}}
+ \expandafter\def\csname simpleicon@nhlicon\endcsname {\simpleiconsmap\symbol{"F171}}
+ \expandafter\def\csname simpleicon@nicehashicon\endcsname {\simpleiconsmap\symbol{"F172}}
+ \expandafter\def\csname simpleicon@niconicoicon\endcsname {\simpleiconsmap\symbol{"F173}}
+ \expandafter\def\csname simpleicon@nikeicon\endcsname {\simpleiconsmap\symbol{"F174}}
+ \expandafter\def\csname simpleicon@nikonicon\endcsname {\simpleiconsmap\symbol{"F175}}
+ \expandafter\def\csname simpleicon@nimicon\endcsname {\simpleiconsmap\symbol{"F176}}
+ \expandafter\def\csname simpleicon@nissanicon\endcsname {\simpleiconsmap\symbol{"F177}}
+ \expandafter\def\csname simpleicon@nixosicon\endcsname {\simpleiconsmap\symbol{"F178}}
+ \expandafter\def\csname simpleicon@noderedicon\endcsname {\simpleiconsmap\symbol{"F179}}
+ \expandafter\def\csname simpleicon@nodedotjsicon\endcsname {\simpleiconsmap\symbol{"F17A}}
+ \expandafter\def\csname simpleicon@nodemonicon\endcsname {\simpleiconsmap\symbol{"F17B}}
+ \expandafter\def\csname simpleicon@nokiaicon\endcsname {\simpleiconsmap\symbol{"F17C}}
+ \expandafter\def\csname simpleicon@nomadicon\endcsname {\simpleiconsmap\symbol{"F17D}}
+ \expandafter\def\csname simpleicon@norcoicon\endcsname {\simpleiconsmap\symbol{"F17E}}
+ \expandafter\def\csname simpleicon@nordicsemiconductoricon\endcsname {\simpleiconsmap\symbol{"F17F}}
+ \expandafter\def\csname simpleicon@nordvpnicon\endcsname {\simpleiconsmap\symbol{"F180}}
+ \expandafter\def\csname simpleicon@normalizedotcssicon\endcsname {\simpleiconsmap\symbol{"F181}}
+ \expandafter\def\csname simpleicon@nortonicon\endcsname {\simpleiconsmap\symbol{"F182}}
+ \expandafter\def\csname simpleicon@norwegianicon\endcsname {\simpleiconsmap\symbol{"F183}}
+ \expandafter\def\csname simpleicon@notepadplusplusicon\endcsname {\simpleiconsmap\symbol{"F184}}
+ \expandafter\def\csname simpleicon@notionicon\endcsname {\simpleiconsmap\symbol{"F185}}
+ \expandafter\def\csname simpleicon@notisticon\endcsname {\simpleiconsmap\symbol{"F186}}
+ \expandafter\def\csname simpleicon@nounprojecticon\endcsname {\simpleiconsmap\symbol{"F187}}
+ \expandafter\def\csname simpleicon@novuicon\endcsname {\simpleiconsmap\symbol{"F188}}
+ \expandafter\def\csname simpleicon@nowicon\endcsname {\simpleiconsmap\symbol{"F189}}
+ \expandafter\def\csname simpleicon@npmicon\endcsname {\simpleiconsmap\symbol{"F18A}}
+ \expandafter\def\csname simpleicon@nrwlicon\endcsname {\simpleiconsmap\symbol{"F18B}}
+ \expandafter\def\csname simpleicon@nsisicon\endcsname {\simpleiconsmap\symbol{"F18C}}
+ \expandafter\def\csname simpleicon@ntfyicon\endcsname {\simpleiconsmap\symbol{"F18D}}
+ \expandafter\def\csname simpleicon@nubankicon\endcsname {\simpleiconsmap\symbol{"F18E}}
+ \expandafter\def\csname simpleicon@nucleoicon\endcsname {\simpleiconsmap\symbol{"F18F}}
+ \expandafter\def\csname simpleicon@nugeticon\endcsname {\simpleiconsmap\symbol{"F190}}
+ \expandafter\def\csname simpleicon@nukeicon\endcsname {\simpleiconsmap\symbol{"F191}}
+ \expandafter\def\csname simpleicon@numbaicon\endcsname {\simpleiconsmap\symbol{"F192}}
+ \expandafter\def\csname simpleicon@numpyicon\endcsname {\simpleiconsmap\symbol{"F193}}
+ \expandafter\def\csname simpleicon@nunjucksicon\endcsname {\simpleiconsmap\symbol{"F194}}
+ \expandafter\def\csname simpleicon@nushellicon\endcsname {\simpleiconsmap\symbol{"F195}}
+ \expandafter\def\csname simpleicon@nutanixicon\endcsname {\simpleiconsmap\symbol{"F196}}
+ \expandafter\def\csname simpleicon@nuxticon\endcsname {\simpleiconsmap\symbol{"F197}}
+ \expandafter\def\csname simpleicon@nvidiaicon\endcsname {\simpleiconsmap\symbol{"F198}}
+ \expandafter\def\csname simpleicon@nvmicon\endcsname {\simpleiconsmap\symbol{"F199}}
+ \expandafter\def\csname simpleicon@nxicon\endcsname {\simpleiconsmap\symbol{"F19A}}
+ \expandafter\def\csname simpleicon@nxpicon\endcsname {\simpleiconsmap\symbol{"F19B}}
+ \expandafter\def\csname simpleicon@nzxticon\endcsname {\simpleiconsmap\symbol{"F19C}}
+ \expandafter\def\csname simpleicon@oreillyicon\endcsname {\simpleiconsmap\symbol{"F19D}}
+ \expandafter\def\csname simpleicon@o2icon\endcsname {\simpleiconsmap\symbol{"F19E}}
+ \expandafter\def\csname simpleicon@obbicon\endcsname {\simpleiconsmap\symbol{"F19F}}
+ \expandafter\def\csname simpleicon@obsstudioicon\endcsname {\simpleiconsmap\symbol{"F1A0}}
+ \expandafter\def\csname simpleicon@observableicon\endcsname {\simpleiconsmap\symbol{"F1A1}}
+ \expandafter\def\csname simpleicon@obsidianicon\endcsname {\simpleiconsmap\symbol{"F1A2}}
+ \expandafter\def\csname simpleicon@obtainiumicon\endcsname {\simpleiconsmap\symbol{"F1A3}}
+ \expandafter\def\csname simpleicon@ocamlicon\endcsname {\simpleiconsmap\symbol{"F1A4}}
+ \expandafter\def\csname simpleicon@oclcicon\endcsname {\simpleiconsmap\symbol{"F1A5}}
+ \expandafter\def\csname simpleicon@oclificon\endcsname {\simpleiconsmap\symbol{"F1A6}}
+ \expandafter\def\csname simpleicon@octanerendericon\endcsname {\simpleiconsmap\symbol{"F1A7}}
+ \expandafter\def\csname simpleicon@octaveicon\endcsname {\simpleiconsmap\symbol{"F1A8}}
+ \expandafter\def\csname simpleicon@octobercmsicon\endcsname {\simpleiconsmap\symbol{"F1A9}}
+ \expandafter\def\csname simpleicon@octoprinticon\endcsname {\simpleiconsmap\symbol{"F1AA}}
+ \expandafter\def\csname simpleicon@octopusdeployicon\endcsname {\simpleiconsmap\symbol{"F1AB}}
+ \expandafter\def\csname simpleicon@oculusicon\endcsname {\simpleiconsmap\symbol{"F1AC}}
+ \expandafter\def\csname simpleicon@odinicon\endcsname {\simpleiconsmap\symbol{"F1AD}}
+ \expandafter\def\csname simpleicon@odnoklassnikiicon\endcsname {\simpleiconsmap\symbol{"F1AE}}
+ \expandafter\def\csname simpleicon@odooicon\endcsname {\simpleiconsmap\symbol{"F1AF}}
+ \expandafter\def\csname simpleicon@odyseeicon\endcsname {\simpleiconsmap\symbol{"F1B0}}
+ \expandafter\def\csname simpleicon@ohdearicon\endcsname {\simpleiconsmap\symbol{"F1B1}}
+ \expandafter\def\csname simpleicon@okcupidicon\endcsname {\simpleiconsmap\symbol{"F1B2}}
+ \expandafter\def\csname simpleicon@oktaicon\endcsname {\simpleiconsmap\symbol{"F1B3}}
+ \expandafter\def\csname simpleicon@okxicon\endcsname {\simpleiconsmap\symbol{"F1B4}}
+ \expandafter\def\csname simpleicon@ollamaicon\endcsname {\simpleiconsmap\symbol{"F1B5}}
+ \expandafter\def\csname simpleicon@omadacloudicon\endcsname {\simpleiconsmap\symbol{"F1B6}}
+ \expandafter\def\csname simpleicon@oneplusicon\endcsname {\simpleiconsmap\symbol{"F1B7}}
+ \expandafter\def\csname simpleicon@onlyfansicon\endcsname {\simpleiconsmap\symbol{"F1B8}}
+ \expandafter\def\csname simpleicon@onlyofficeicon\endcsname {\simpleiconsmap\symbol{"F1B9}}
+ \expandafter\def\csname simpleicon@onnxicon\endcsname {\simpleiconsmap\symbol{"F1BA}}
+ \expandafter\def\csname simpleicon@onstaricon\endcsname {\simpleiconsmap\symbol{"F1BB}}
+ \expandafter\def\csname simpleicon@opelicon\endcsname {\simpleiconsmap\symbol{"F1BC}}
+ \expandafter\def\csname simpleicon@openaccessicon\endcsname {\simpleiconsmap\symbol{"F1BD}}
+ \expandafter\def\csname simpleicon@openbadgesicon\endcsname {\simpleiconsmap\symbol{"F1BE}}
+ \expandafter\def\csname simpleicon@openbugbountyicon\endcsname {\simpleiconsmap\symbol{"F1BF}}
+ \expandafter\def\csname simpleicon@opencollectiveicon\endcsname {\simpleiconsmap\symbol{"F1C0}}
+ \expandafter\def\csname simpleicon@opencontainersinitiativeicon\endcsname {\simpleiconsmap\symbol{"F1C1}}
+ \expandafter\def\csname simpleicon@opensourcehardwareicon\endcsname {\simpleiconsmap\symbol{"F1C2}}
+ \expandafter\def\csname simpleicon@opensourceinitiativeicon\endcsname {\simpleiconsmap\symbol{"F1C3}}
+ \expandafter\def\csname simpleicon@openaiicon\endcsname {\simpleiconsmap\symbol{"F1C4}}
+ \expandafter\def\csname simpleicon@openaigymicon\endcsname {\simpleiconsmap\symbol{"F1C5}}
+ \expandafter\def\csname simpleicon@openapiinitiativeicon\endcsname {\simpleiconsmap\symbol{"F1C6}}
+ \expandafter\def\csname simpleicon@openbsdicon\endcsname {\simpleiconsmap\symbol{"F1C7}}
+ \expandafter\def\csname simpleicon@opencvicon\endcsname {\simpleiconsmap\symbol{"F1C8}}
+ \expandafter\def\csname simpleicon@openfaasicon\endcsname {\simpleiconsmap\symbol{"F1C9}}
+ \expandafter\def\csname simpleicon@openglicon\endcsname {\simpleiconsmap\symbol{"F1CA}}
+ \expandafter\def\csname simpleicon@openhabicon\endcsname {\simpleiconsmap\symbol{"F1CB}}
+ \expandafter\def\csname simpleicon@openidicon\endcsname {\simpleiconsmap\symbol{"F1CC}}
+ \expandafter\def\csname simpleicon@openjdkicon\endcsname {\simpleiconsmap\symbol{"F1CD}}
+ \expandafter\def\csname simpleicon@openjsfoundationicon\endcsname {\simpleiconsmap\symbol{"F1CE}}
+ \expandafter\def\csname simpleicon@openlayersicon\endcsname {\simpleiconsmap\symbol{"F1CF}}
+ \expandafter\def\csname simpleicon@openmediavaulticon\endcsname {\simpleiconsmap\symbol{"F1D0}}
+ \expandafter\def\csname simpleicon@openminedicon\endcsname {\simpleiconsmap\symbol{"F1D1}}
+ \expandafter\def\csname simpleicon@opennebulaicon\endcsname {\simpleiconsmap\symbol{"F1D2}}
+ \expandafter\def\csname simpleicon@openprojecticon\endcsname {\simpleiconsmap\symbol{"F1D3}}
+ \expandafter\def\csname simpleicon@openscadicon\endcsname {\simpleiconsmap\symbol{"F1D4}}
+ \expandafter\def\csname simpleicon@openseaicon\endcsname {\simpleiconsmap\symbol{"F1D5}}
+ \expandafter\def\csname simpleicon@opensearchicon\endcsname {\simpleiconsmap\symbol{"F1D6}}
+ \expandafter\def\csname simpleicon@opensslicon\endcsname {\simpleiconsmap\symbol{"F1D7}}
+ \expandafter\def\csname simpleicon@openstackicon\endcsname {\simpleiconsmap\symbol{"F1D8}}
+ \expandafter\def\csname simpleicon@openstreetmapicon\endcsname {\simpleiconsmap\symbol{"F1D9}}
+ \expandafter\def\csname simpleicon@opensuseicon\endcsname {\simpleiconsmap\symbol{"F1DA}}
+ \expandafter\def\csname simpleicon@opentelemetryicon\endcsname {\simpleiconsmap\symbol{"F1DB}}
+ \expandafter\def\csname simpleicon@opentexticon\endcsname {\simpleiconsmap\symbol{"F1DC}}
+ \expandafter\def\csname simpleicon@opentofuicon\endcsname {\simpleiconsmap\symbol{"F1DD}}
+ \expandafter\def\csname simpleicon@openverseicon\endcsname {\simpleiconsmap\symbol{"F1DE}}
+ \expandafter\def\csname simpleicon@openvpnicon\endcsname {\simpleiconsmap\symbol{"F1DF}}
+ \expandafter\def\csname simpleicon@openwrticon\endcsname {\simpleiconsmap\symbol{"F1E0}}
+ \expandafter\def\csname simpleicon@openzeppelinicon\endcsname {\simpleiconsmap\symbol{"F1E1}}
+ \expandafter\def\csname simpleicon@openzfsicon\endcsname {\simpleiconsmap\symbol{"F1E2}}
+ \expandafter\def\csname simpleicon@operaicon\endcsname {\simpleiconsmap\symbol{"F1E3}}
+ \expandafter\def\csname simpleicon@operagxicon\endcsname {\simpleiconsmap\symbol{"F1E4}}
+ \expandafter\def\csname simpleicon@opnsenseicon\endcsname {\simpleiconsmap\symbol{"F1E5}}
+ \expandafter\def\csname simpleicon@oppoicon\endcsname {\simpleiconsmap\symbol{"F1E6}}
+ \expandafter\def\csname simpleicon@opsgenieicon\endcsname {\simpleiconsmap\symbol{"F1E7}}
+ \expandafter\def\csname simpleicon@opslevelicon\endcsname {\simpleiconsmap\symbol{"F1E8}}
+ \expandafter\def\csname simpleicon@optimismicon\endcsname {\simpleiconsmap\symbol{"F1E9}}
+ \expandafter\def\csname simpleicon@orangeicon\endcsname {\simpleiconsmap\symbol{"F1EA}}
+ \expandafter\def\csname simpleicon@orcidicon\endcsname {\simpleiconsmap\symbol{"F1EB}}
+ \expandafter\def\csname simpleicon@orgicon\endcsname {\simpleiconsmap\symbol{"F1EC}}
+ \expandafter\def\csname simpleicon@organicmapsicon\endcsname {\simpleiconsmap\symbol{"F1ED}}
+ \expandafter\def\csname simpleicon@originicon\endcsname {\simpleiconsmap\symbol{"F1EE}}
+ \expandafter\def\csname simpleicon@osanoicon\endcsname {\simpleiconsmap\symbol{"F1EF}}
+ \expandafter\def\csname simpleicon@osficon\endcsname {\simpleiconsmap\symbol{"F1F0}}
+ \expandafter\def\csname simpleicon@osgeoicon\endcsname {\simpleiconsmap\symbol{"F1F1}}
+ \expandafter\def\csname simpleicon@oshkoshicon\endcsname {\simpleiconsmap\symbol{"F1F2}}
+ \expandafter\def\csname simpleicon@osmcicon\endcsname {\simpleiconsmap\symbol{"F1F3}}
+ \expandafter\def\csname simpleicon@osuicon\endcsname {\simpleiconsmap\symbol{"F1F4}}
+ \expandafter\def\csname simpleicon@ottoicon\endcsname {\simpleiconsmap\symbol{"F1F5}}
+ \expandafter\def\csname simpleicon@outlineicon\endcsname {\simpleiconsmap\symbol{"F1F6}}
+ \expandafter\def\csname simpleicon@overcasticon\endcsname {\simpleiconsmap\symbol{"F1F7}}
+ \expandafter\def\csname simpleicon@overleaficon\endcsname {\simpleiconsmap\symbol{"F1F8}}
+ \expandafter\def\csname simpleicon@ovhicon\endcsname {\simpleiconsmap\symbol{"F1F9}}
+ \expandafter\def\csname simpleicon@owaspicon\endcsname {\simpleiconsmap\symbol{"F1FA}}
+ \expandafter\def\csname simpleicon@dependencycheckicon\endcsname {\simpleiconsmap\symbol{"F1FB}}
+ \expandafter\def\csname simpleicon@owncloudicon\endcsname {\simpleiconsmap\symbol{"F1FC}}
+ \expandafter\def\csname simpleicon@oxygenicon\endcsname {\simpleiconsmap\symbol{"F1FD}}
+ \expandafter\def\csname simpleicon@oyoicon\endcsname {\simpleiconsmap\symbol{"F1FE}}
+ \expandafter\def\csname simpleicon@p5dotjsicon\endcsname {\simpleiconsmap\symbol{"F1FF}}
+ \expandafter\def\csname simpleicon@packagisticon\endcsname {\simpleiconsmap\symbol{"F200}}
+ \expandafter\def\csname simpleicon@packericon\endcsname {\simpleiconsmap\symbol{"F201}}
+ \expandafter\def\csname simpleicon@packticon\endcsname {\simpleiconsmap\symbol{"F202}}
+ \expandafter\def\csname simpleicon@paddleicon\endcsname {\simpleiconsmap\symbol{"F203}}
+ \expandafter\def\csname simpleicon@paddlepaddleicon\endcsname {\simpleiconsmap\symbol{"F204}}
+ \expandafter\def\csname simpleicon@paddypowericon\endcsname {\simpleiconsmap\symbol{"F205}}
+ \expandafter\def\csname simpleicon@pagekiticon\endcsname {\simpleiconsmap\symbol{"F206}}
+ \expandafter\def\csname simpleicon@pagerdutyicon\endcsname {\simpleiconsmap\symbol{"F207}}
+ \expandafter\def\csname simpleicon@pagespeedinsightsicon\endcsname {\simpleiconsmap\symbol{"F208}}
+ \expandafter\def\csname simpleicon@pagseguroicon\endcsname {\simpleiconsmap\symbol{"F209}}
+ \expandafter\def\csname simpleicon@palantiricon\endcsname {\simpleiconsmap\symbol{"F20A}}
+ \expandafter\def\csname simpleicon@paloaltonetworksicon\endcsname {\simpleiconsmap\symbol{"F20B}}
+ \expandafter\def\csname simpleicon@paloaltosoftwareicon\endcsname {\simpleiconsmap\symbol{"F20C}}
+ \expandafter\def\csname simpleicon@panasonicicon\endcsname {\simpleiconsmap\symbol{"F20D}}
+ \expandafter\def\csname simpleicon@pandasicon\endcsname {\simpleiconsmap\symbol{"F20E}}
+ \expandafter\def\csname simpleicon@pandoraicon\endcsname {\simpleiconsmap\symbol{"F20F}}
+ \expandafter\def\csname simpleicon@pantheonicon\endcsname {\simpleiconsmap\symbol{"F210}}
+ \expandafter\def\csname simpleicon@paperlessngxicon\endcsname {\simpleiconsmap\symbol{"F211}}
+ \expandafter\def\csname simpleicon@paperswithcodeicon\endcsname {\simpleiconsmap\symbol{"F212}}
+ \expandafter\def\csname simpleicon@paperspaceicon\endcsname {\simpleiconsmap\symbol{"F213}}
+ \expandafter\def\csname simpleicon@paradoxinteractiveicon\endcsname {\simpleiconsmap\symbol{"F214}}
+ \expandafter\def\csname simpleicon@paramountplusicon\endcsname {\simpleiconsmap\symbol{"F215}}
+ \expandafter\def\csname simpleicon@paritysubstrateicon\endcsname {\simpleiconsmap\symbol{"F216}}
+ \expandafter\def\csname simpleicon@parrotsecurityicon\endcsname {\simpleiconsmap\symbol{"F217}}
+ \expandafter\def\csname simpleicon@parsedotlyicon\endcsname {\simpleiconsmap\symbol{"F218}}
+ \expandafter\def\csname simpleicon@passporticon\endcsname {\simpleiconsmap\symbol{"F219}}
+ \expandafter\def\csname simpleicon@pastebinicon\endcsname {\simpleiconsmap\symbol{"F21A}}
+ \expandafter\def\csname simpleicon@patreonicon\endcsname {\simpleiconsmap\symbol{"F21B}}
+ \expandafter\def\csname simpleicon@paychexicon\endcsname {\simpleiconsmap\symbol{"F21C}}
+ \expandafter\def\csname simpleicon@payhipicon\endcsname {\simpleiconsmap\symbol{"F21D}}
+ \expandafter\def\csname simpleicon@payloadcmsicon\endcsname {\simpleiconsmap\symbol{"F21E}}
+ \expandafter\def\csname simpleicon@payoneericon\endcsname {\simpleiconsmap\symbol{"F21F}}
+ \expandafter\def\csname simpleicon@paypalicon\endcsname {\simpleiconsmap\symbol{"F220}}
+ \expandafter\def\csname simpleicon@paytmicon\endcsname {\simpleiconsmap\symbol{"F221}}
+ \expandafter\def\csname simpleicon@pcgamingwikiicon\endcsname {\simpleiconsmap\symbol{"F222}}
+ \expandafter\def\csname simpleicon@pdmicon\endcsname {\simpleiconsmap\symbol{"F223}}
+ \expandafter\def\csname simpleicon@pdqicon\endcsname {\simpleiconsmap\symbol{"F224}}
+ \expandafter\def\csname simpleicon@peakdesignicon\endcsname {\simpleiconsmap\symbol{"F225}}
+ \expandafter\def\csname simpleicon@pearsonicon\endcsname {\simpleiconsmap\symbol{"F226}}
+ \expandafter\def\csname simpleicon@peerlisticon\endcsname {\simpleiconsmap\symbol{"F227}}
+ \expandafter\def\csname simpleicon@peertubeicon\endcsname {\simpleiconsmap\symbol{"F228}}
+ \expandafter\def\csname simpleicon@pegasusairlinesicon\endcsname {\simpleiconsmap\symbol{"F229}}
+ \expandafter\def\csname simpleicon@pelicanicon\endcsname {\simpleiconsmap\symbol{"F22A}}
+ \expandafter\def\csname simpleicon@pelotonicon\endcsname {\simpleiconsmap\symbol{"F22B}}
+ \expandafter\def\csname simpleicon@pennyicon\endcsname {\simpleiconsmap\symbol{"F22C}}
+ \expandafter\def\csname simpleicon@penpoticon\endcsname {\simpleiconsmap\symbol{"F22D}}
+ \expandafter\def\csname simpleicon@percyicon\endcsname {\simpleiconsmap\symbol{"F22E}}
+ \expandafter\def\csname simpleicon@perforceicon\endcsname {\simpleiconsmap\symbol{"F22F}}
+ \expandafter\def\csname simpleicon@perlicon\endcsname {\simpleiconsmap\symbol{"F230}}
+ \expandafter\def\csname simpleicon@perplexityicon\endcsname {\simpleiconsmap\symbol{"F231}}
+ \expandafter\def\csname simpleicon@persistenticon\endcsname {\simpleiconsmap\symbol{"F232}}
+ \expandafter\def\csname simpleicon@personioicon\endcsname {\simpleiconsmap\symbol{"F233}}
+ \expandafter\def\csname simpleicon@petsathomeicon\endcsname {\simpleiconsmap\symbol{"F234}}
+ \expandafter\def\csname simpleicon@peugeoticon\endcsname {\simpleiconsmap\symbol{"F235}}
+ \expandafter\def\csname simpleicon@pexelsicon\endcsname {\simpleiconsmap\symbol{"F236}}
+ \expandafter\def\csname simpleicon@pfsenseicon\endcsname {\simpleiconsmap\symbol{"F237}}
+ \expandafter\def\csname simpleicon@phabricatoricon\endcsname {\simpleiconsmap\symbol{"F238}}
+ \expandafter\def\csname simpleicon@philipshueicon\endcsname {\simpleiconsmap\symbol{"F239}}
+ \expandafter\def\csname simpleicon@phoenixframeworkicon\endcsname {\simpleiconsmap\symbol{"F23A}}
+ \expandafter\def\csname simpleicon@phonepeicon\endcsname {\simpleiconsmap\symbol{"F23B}}
+ \expandafter\def\csname simpleicon@phosphoriconsicon\endcsname {\simpleiconsmap\symbol{"F23C}}
+ \expandafter\def\csname simpleicon@photobucketicon\endcsname {\simpleiconsmap\symbol{"F23D}}
+ \expandafter\def\csname simpleicon@photocrowdicon\endcsname {\simpleiconsmap\symbol{"F23E}}
+ \expandafter\def\csname simpleicon@photonicon\endcsname {\simpleiconsmap\symbol{"F23F}}
+ \expandafter\def\csname simpleicon@photopeaicon\endcsname {\simpleiconsmap\symbol{"F240}}
+ \expandafter\def\csname simpleicon@phpicon\endcsname {\simpleiconsmap\symbol{"F241}}
+ \expandafter\def\csname simpleicon@phpbbicon\endcsname {\simpleiconsmap\symbol{"F242}}
+ \expandafter\def\csname simpleicon@phpmyadminicon\endcsname {\simpleiconsmap\symbol{"F243}}
+ \expandafter\def\csname simpleicon@phpstormicon\endcsname {\simpleiconsmap\symbol{"F244}}
+ \expandafter\def\csname simpleicon@pinetworkicon\endcsname {\simpleiconsmap\symbol{"F245}}
+ \expandafter\def\csname simpleicon@piholeicon\endcsname {\simpleiconsmap\symbol{"F246}}
+ \expandafter\def\csname simpleicon@piaggiogroupicon\endcsname {\simpleiconsmap\symbol{"F247}}
+ \expandafter\def\csname simpleicon@piaproicon\endcsname {\simpleiconsmap\symbol{"F248}}
+ \expandafter\def\csname simpleicon@picardsurgelesicon\endcsname {\simpleiconsmap\symbol{"F249}}
+ \expandafter\def\csname simpleicon@picartodottvicon\endcsname {\simpleiconsmap\symbol{"F24A}}
+ \expandafter\def\csname simpleicon@picnicicon\endcsname {\simpleiconsmap\symbol{"F24B}}
+ \expandafter\def\csname simpleicon@picpayicon\endcsname {\simpleiconsmap\symbol{"F24C}}
+ \expandafter\def\csname simpleicon@picrewicon\endcsname {\simpleiconsmap\symbol{"F24D}}
+ \expandafter\def\csname simpleicon@picsarticon\endcsname {\simpleiconsmap\symbol{"F24E}}
+ \expandafter\def\csname simpleicon@picxyicon\endcsname {\simpleiconsmap\symbol{"F24F}}
+ \expandafter\def\csname simpleicon@pimcoreicon\endcsname {\simpleiconsmap\symbol{"F250}}
+ \expandafter\def\csname simpleicon@pinboardicon\endcsname {\simpleiconsmap\symbol{"F251}}
+ \expandafter\def\csname simpleicon@pinescripticon\endcsname {\simpleiconsmap\symbol{"F252}}
+ \expandafter\def\csname simpleicon@pingdomicon\endcsname {\simpleiconsmap\symbol{"F253}}
+ \expandafter\def\csname simpleicon@pinoicon\endcsname {\simpleiconsmap\symbol{"F254}}
+ \expandafter\def\csname simpleicon@pinteresticon\endcsname {\simpleiconsmap\symbol{"F255}}
+ \expandafter\def\csname simpleicon@pioneerdjicon\endcsname {\simpleiconsmap\symbol{"F256}}
+ \expandafter\def\csname simpleicon@pipedicon\endcsname {\simpleiconsmap\symbol{"F257}}
+ \expandafter\def\csname simpleicon@pipxicon\endcsname {\simpleiconsmap\symbol{"F258}}
+ \expandafter\def\csname simpleicon@pivotaltrackericon\endcsname {\simpleiconsmap\symbol{"F259}}
+ \expandafter\def\csname simpleicon@piwigoicon\endcsname {\simpleiconsmap\symbol{"F25A}}
+ \expandafter\def\csname simpleicon@pixicon\endcsname {\simpleiconsmap\symbol{"F25B}}
+ \expandafter\def\csname simpleicon@pixabayicon\endcsname {\simpleiconsmap\symbol{"F25C}}
+ \expandafter\def\csname simpleicon@pixelfedicon\endcsname {\simpleiconsmap\symbol{"F25D}}
+ \expandafter\def\csname simpleicon@pixivicon\endcsname {\simpleiconsmap\symbol{"F25E}}
+ \expandafter\def\csname simpleicon@pixlricon\endcsname {\simpleiconsmap\symbol{"F25F}}
+ \expandafter\def\csname simpleicon@pkgsrcicon\endcsname {\simpleiconsmap\symbol{"F260}}
+ \expandafter\def\csname simpleicon@planeticon\endcsname {\simpleiconsmap\symbol{"F261}}
+ \expandafter\def\csname simpleicon@planetscaleicon\endcsname {\simpleiconsmap\symbol{"F262}}
+ \expandafter\def\csname simpleicon@plangridicon\endcsname {\simpleiconsmap\symbol{"F263}}
+ \expandafter\def\csname simpleicon@platformdotshicon\endcsname {\simpleiconsmap\symbol{"F264}}
+ \expandafter\def\csname simpleicon@platformioicon\endcsname {\simpleiconsmap\symbol{"F265}}
+ \expandafter\def\csname simpleicon@platziicon\endcsname {\simpleiconsmap\symbol{"F266}}
+ \expandafter\def\csname simpleicon@plausibleanalyticsicon\endcsname {\simpleiconsmap\symbol{"F267}}
+ \expandafter\def\csname simpleicon@playcanvasicon\endcsname {\simpleiconsmap\symbol{"F268}}
+ \expandafter\def\csname simpleicon@playerfmicon\endcsname {\simpleiconsmap\symbol{"F269}}
+ \expandafter\def\csname simpleicon@playerdotmeicon\endcsname {\simpleiconsmap\symbol{"F26A}}
+ \expandafter\def\csname simpleicon@playstationicon\endcsname {\simpleiconsmap\symbol{"F26B}}
+ \expandafter\def\csname simpleicon@playstation2icon\endcsname {\simpleiconsmap\symbol{"F26C}}
+ \expandafter\def\csname simpleicon@playstation3icon\endcsname {\simpleiconsmap\symbol{"F26D}}
+ \expandafter\def\csname simpleicon@playstation4icon\endcsname {\simpleiconsmap\symbol{"F26E}}
+ \expandafter\def\csname simpleicon@playstation5icon\endcsname {\simpleiconsmap\symbol{"F26F}}
+ \expandafter\def\csname simpleicon@playstationportableicon\endcsname {\simpleiconsmap\symbol{"F270}}
+ \expandafter\def\csname simpleicon@playstationvitaicon\endcsname {\simpleiconsmap\symbol{"F271}}
+ \expandafter\def\csname simpleicon@pleromaicon\endcsname {\simpleiconsmap\symbol{"F272}}
+ \expandafter\def\csname simpleicon@pleskicon\endcsname {\simpleiconsmap\symbol{"F273}}
+ \expandafter\def\csname simpleicon@plexicon\endcsname {\simpleiconsmap\symbol{"F274}}
+ \expandafter\def\csname simpleicon@plotlyicon\endcsname {\simpleiconsmap\symbol{"F275}}
+ \expandafter\def\csname simpleicon@plumeicon\endcsname {\simpleiconsmap\symbol{"F276}}
+ \expandafter\def\csname simpleicon@pluralsighticon\endcsname {\simpleiconsmap\symbol{"F277}}
+ \expandafter\def\csname simpleicon@plurkicon\endcsname {\simpleiconsmap\symbol{"F278}}
+ \expandafter\def\csname simpleicon@pluscodesicon\endcsname {\simpleiconsmap\symbol{"F279}}
+ \expandafter\def\csname simpleicon@pm2icon\endcsname {\simpleiconsmap\symbol{"F27A}}
+ \expandafter\def\csname simpleicon@pnpmicon\endcsname {\simpleiconsmap\symbol{"F27B}}
+ \expandafter\def\csname simpleicon@pocketicon\endcsname {\simpleiconsmap\symbol{"F27C}}
+ \expandafter\def\csname simpleicon@pocketcastsicon\endcsname {\simpleiconsmap\symbol{"F27D}}
+ \expandafter\def\csname simpleicon@pocketbaseicon\endcsname {\simpleiconsmap\symbol{"F27E}}
+ \expandafter\def\csname simpleicon@podcastaddicticon\endcsname {\simpleiconsmap\symbol{"F27F}}
+ \expandafter\def\csname simpleicon@podcastindexicon\endcsname {\simpleiconsmap\symbol{"F280}}
+ \expandafter\def\csname simpleicon@podmanicon\endcsname {\simpleiconsmap\symbol{"F281}}
+ \expandafter\def\csname simpleicon@poeicon\endcsname {\simpleiconsmap\symbol{"F282}}
+ \expandafter\def\csname simpleicon@poetryicon\endcsname {\simpleiconsmap\symbol{"F283}}
+ \expandafter\def\csname simpleicon@pointyicon\endcsname {\simpleiconsmap\symbol{"F284}}
+ \expandafter\def\csname simpleicon@polarsicon\endcsname {\simpleiconsmap\symbol{"F285}}
+ \expandafter\def\csname simpleicon@polestaricon\endcsname {\simpleiconsmap\symbol{"F286}}
+ \expandafter\def\csname simpleicon@polkadoticon\endcsname {\simpleiconsmap\symbol{"F287}}
+ \expandafter\def\csname simpleicon@polyicon\endcsname {\simpleiconsmap\symbol{"F288}}
+ \expandafter\def\csname simpleicon@polygonicon\endcsname {\simpleiconsmap\symbol{"F289}}
+ \expandafter\def\csname simpleicon@polymerprojecticon\endcsname {\simpleiconsmap\symbol{"F28A}}
+ \expandafter\def\csname simpleicon@polyworkicon\endcsname {\simpleiconsmap\symbol{"F28B}}
+ \expandafter\def\csname simpleicon@pond5icon\endcsname {\simpleiconsmap\symbol{"F28C}}
+ \expandafter\def\csname simpleicon@poposicon\endcsname {\simpleiconsmap\symbol{"F28D}}
+ \expandafter\def\csname simpleicon@porkbunicon\endcsname {\simpleiconsmap\symbol{"F28E}}
+ \expandafter\def\csname simpleicon@porscheicon\endcsname {\simpleiconsmap\symbol{"F28F}}
+ \expandafter\def\csname simpleicon@portainericon\endcsname {\simpleiconsmap\symbol{"F290}}
+ \expandafter\def\csname simpleicon@portswiggericon\endcsname {\simpleiconsmap\symbol{"F291}}
+ \expandafter\def\csname simpleicon@positicon\endcsname {\simpleiconsmap\symbol{"F292}}
+ \expandafter\def\csname simpleicon@postcssicon\endcsname {\simpleiconsmap\symbol{"F293}}
+ \expandafter\def\csname simpleicon@postgresqlicon\endcsname {\simpleiconsmap\symbol{"F294}}
+ \expandafter\def\csname simpleicon@posthogicon\endcsname {\simpleiconsmap\symbol{"F295}}
+ \expandafter\def\csname simpleicon@postmanicon\endcsname {\simpleiconsmap\symbol{"F296}}
+ \expandafter\def\csname simpleicon@postmatesicon\endcsname {\simpleiconsmap\symbol{"F297}}
+ \expandafter\def\csname simpleicon@powersicon\endcsname {\simpleiconsmap\symbol{"F298}}
+ \expandafter\def\csname simpleicon@prdotcoicon\endcsname {\simpleiconsmap\symbol{"F299}}
+ \expandafter\def\csname simpleicon@precommiticon\endcsname {\simpleiconsmap\symbol{"F29A}}
+ \expandafter\def\csname simpleicon@preacticon\endcsname {\simpleiconsmap\symbol{"F29B}}
+ \expandafter\def\csname simpleicon@prefecticon\endcsname {\simpleiconsmap\symbol{"F29C}}
+ \expandafter\def\csname simpleicon@premierleagueicon\endcsname {\simpleiconsmap\symbol{"F29D}}
+ \expandafter\def\csname simpleicon@prepbytesicon\endcsname {\simpleiconsmap\symbol{"F29E}}
+ \expandafter\def\csname simpleicon@prestashopicon\endcsname {\simpleiconsmap\symbol{"F29F}}
+ \expandafter\def\csname simpleicon@prestoicon\endcsname {\simpleiconsmap\symbol{"F2A0}}
+ \expandafter\def\csname simpleicon@prettiericon\endcsname {\simpleiconsmap\symbol{"F2A1}}
+ \expandafter\def\csname simpleicon@pretzelicon\endcsname {\simpleiconsmap\symbol{"F2A2}}
+ \expandafter\def\csname simpleicon@preventionicon\endcsname {\simpleiconsmap\symbol{"F2A3}}
+ \expandafter\def\csname simpleicon@preziicon\endcsname {\simpleiconsmap\symbol{"F2A4}}
+ \expandafter\def\csname simpleicon@primeicon\endcsname {\simpleiconsmap\symbol{"F2A5}}
+ \expandafter\def\csname simpleicon@primevideoicon\endcsname {\simpleiconsmap\symbol{"F2A6}}
+ \expandafter\def\csname simpleicon@primefacesicon\endcsname {\simpleiconsmap\symbol{"F2A7}}
+ \expandafter\def\csname simpleicon@primengicon\endcsname {\simpleiconsmap\symbol{"F2A8}}
+ \expandafter\def\csname simpleicon@primereacticon\endcsname {\simpleiconsmap\symbol{"F2A9}}
+ \expandafter\def\csname simpleicon@primevueicon\endcsname {\simpleiconsmap\symbol{"F2AA}}
+ \expandafter\def\csname simpleicon@printablesicon\endcsname {\simpleiconsmap\symbol{"F2AB}}
+ \expandafter\def\csname simpleicon@prismaicon\endcsname {\simpleiconsmap\symbol{"F2AC}}
+ \expandafter\def\csname simpleicon@prismicicon\endcsname {\simpleiconsmap\symbol{"F2AD}}
+ \expandafter\def\csname simpleicon@privatedivisionicon\endcsname {\simpleiconsmap\symbol{"F2AE}}
+ \expandafter\def\csname simpleicon@privateinternetaccessicon\endcsname {\simpleiconsmap\symbol{"F2AF}}
+ \expandafter\def\csname simpleicon@protoolsicon\endcsname {\simpleiconsmap\symbol{"F2B0}}
+ \expandafter\def\csname simpleicon@proboticon\endcsname {\simpleiconsmap\symbol{"F2B1}}
+ \expandafter\def\csname simpleicon@processingfoundationicon\endcsname {\simpleiconsmap\symbol{"F2B2}}
+ \expandafter\def\csname simpleicon@processwireicon\endcsname {\simpleiconsmap\symbol{"F2B3}}
+ \expandafter\def\csname simpleicon@producthunticon\endcsname {\simpleiconsmap\symbol{"F2B4}}
+ \expandafter\def\csname simpleicon@progateicon\endcsname {\simpleiconsmap\symbol{"F2B5}}
+ \expandafter\def\csname simpleicon@progressicon\endcsname {\simpleiconsmap\symbol{"F2B6}}
+ \expandafter\def\csname simpleicon@prometheusicon\endcsname {\simpleiconsmap\symbol{"F2B7}}
+ \expandafter\def\csname simpleicon@pronounsdotpageicon\endcsname {\simpleiconsmap\symbol{"F2B8}}
+ \expandafter\def\csname simpleicon@prosiebenicon\endcsname {\simpleiconsmap\symbol{"F2B9}}
+ \expandafter\def\csname simpleicon@proteusicon\endcsname {\simpleiconsmap\symbol{"F2BA}}
+ \expandafter\def\csname simpleicon@protodotioicon\endcsname {\simpleiconsmap\symbol{"F2BB}}
+ \expandafter\def\csname simpleicon@protocolsdotioicon\endcsname {\simpleiconsmap\symbol{"F2BC}}
+ \expandafter\def\csname simpleicon@protonicon\endcsname {\simpleiconsmap\symbol{"F2BD}}
+ \expandafter\def\csname simpleicon@protoncalendaricon\endcsname {\simpleiconsmap\symbol{"F2BE}}
+ \expandafter\def\csname simpleicon@protondriveicon\endcsname {\simpleiconsmap\symbol{"F2BF}}
+ \expandafter\def\csname simpleicon@protonmailicon\endcsname {\simpleiconsmap\symbol{"F2C0}}
+ \expandafter\def\csname simpleicon@protonvpnicon\endcsname {\simpleiconsmap\symbol{"F2C1}}
+ \expandafter\def\csname simpleicon@protondbicon\endcsname {\simpleiconsmap\symbol{"F2C2}}
+ \expandafter\def\csname simpleicon@protractoricon\endcsname {\simpleiconsmap\symbol{"F2C3}}
+ \expandafter\def\csname simpleicon@proxmoxicon\endcsname {\simpleiconsmap\symbol{"F2C4}}
+ \expandafter\def\csname simpleicon@pterodactylicon\endcsname {\simpleiconsmap\symbol{"F2C5}}
+ \expandafter\def\csname simpleicon@pubgicon\endcsname {\simpleiconsmap\symbol{"F2C6}}
+ \expandafter\def\csname simpleicon@publonsicon\endcsname {\simpleiconsmap\symbol{"F2C7}}
+ \expandafter\def\csname simpleicon@pubmedicon\endcsname {\simpleiconsmap\symbol{"F2C8}}
+ \expandafter\def\csname simpleicon@pugicon\endcsname {\simpleiconsmap\symbol{"F2C9}}
+ \expandafter\def\csname simpleicon@pulumiicon\endcsname {\simpleiconsmap\symbol{"F2CA}}
+ \expandafter\def\csname simpleicon@pumaicon\endcsname {\simpleiconsmap\symbol{"F2CB}}
+ \expandafter\def\csname simpleicon@puppeticon\endcsname {\simpleiconsmap\symbol{"F2CC}}
+ \expandafter\def\csname simpleicon@puppeteericon\endcsname {\simpleiconsmap\symbol{"F2CD}}
+ \expandafter\def\csname simpleicon@purescripticon\endcsname {\simpleiconsmap\symbol{"F2CE}}
+ \expandafter\def\csname simpleicon@purgecssicon\endcsname {\simpleiconsmap\symbol{"F2CF}}
+ \expandafter\def\csname simpleicon@purismicon\endcsname {\simpleiconsmap\symbol{"F2D0}}
+ \expandafter\def\csname simpleicon@pushbulleticon\endcsname {\simpleiconsmap\symbol{"F2D1}}
+ \expandafter\def\csname simpleicon@pushericon\endcsname {\simpleiconsmap\symbol{"F2D2}}
+ \expandafter\def\csname simpleicon@pwaicon\endcsname {\simpleiconsmap\symbol{"F2D3}}
+ \expandafter\def\csname simpleicon@pycharmicon\endcsname {\simpleiconsmap\symbol{"F2D4}}
+ \expandafter\def\csname simpleicon@pycqaicon\endcsname {\simpleiconsmap\symbol{"F2D5}}
+ \expandafter\def\csname simpleicon@pydanticicon\endcsname {\simpleiconsmap\symbol{"F2D6}}
+ \expandafter\def\csname simpleicon@pygicon\endcsname {\simpleiconsmap\symbol{"F2D7}}
+ \expandafter\def\csname simpleicon@pypiicon\endcsname {\simpleiconsmap\symbol{"F2D8}}
+ \expandafter\def\csname simpleicon@pypyicon\endcsname {\simpleiconsmap\symbol{"F2D9}}
+ \expandafter\def\csname simpleicon@pyscaffoldicon\endcsname {\simpleiconsmap\symbol{"F2DA}}
+ \expandafter\def\csname simpleicon@pysyfticon\endcsname {\simpleiconsmap\symbol{"F2DB}}
+ \expandafter\def\csname simpleicon@pytesticon\endcsname {\simpleiconsmap\symbol{"F2DC}}
+ \expandafter\def\csname simpleicon@pythonicon\endcsname {\simpleiconsmap\symbol{"F2DD}}
+ \expandafter\def\csname simpleicon@pythonanywhereicon\endcsname {\simpleiconsmap\symbol{"F2DE}}
+ \expandafter\def\csname simpleicon@pytorchicon\endcsname {\simpleiconsmap\symbol{"F2DF}}
+ \expandafter\def\csname simpleicon@pyupicon\endcsname {\simpleiconsmap\symbol{"F2E0}}
+ \expandafter\def\csname simpleicon@qantasicon\endcsname {\simpleiconsmap\symbol{"F2E1}}
+ \expandafter\def\csname simpleicon@qaseicon\endcsname {\simpleiconsmap\symbol{"F2E2}}
+ \expandafter\def\csname simpleicon@qatarairwaysicon\endcsname {\simpleiconsmap\symbol{"F2E3}}
+ \expandafter\def\csname simpleicon@qbittorrenticon\endcsname {\simpleiconsmap\symbol{"F2E4}}
+ \expandafter\def\csname simpleicon@qemuicon\endcsname {\simpleiconsmap\symbol{"F2E5}}
+ \expandafter\def\csname simpleicon@qgisicon\endcsname {\simpleiconsmap\symbol{"F2E6}}
+ \expandafter\def\csname simpleicon@qiicon\endcsname {\simpleiconsmap\symbol{"F2E7}}
+ \expandafter\def\csname simpleicon@qiitaicon\endcsname {\simpleiconsmap\symbol{"F2E8}}
+ \expandafter\def\csname simpleicon@qiskiticon\endcsname {\simpleiconsmap\symbol{"F2E9}}
+ \expandafter\def\csname simpleicon@qiwiicon\endcsname {\simpleiconsmap\symbol{"F2EA}}
+ \expandafter\def\csname simpleicon@qlikicon\endcsname {\simpleiconsmap\symbol{"F2EB}}
+ \expandafter\def\csname simpleicon@qmkicon\endcsname {\simpleiconsmap\symbol{"F2EC}}
+ \expandafter\def\csname simpleicon@qnapicon\endcsname {\simpleiconsmap\symbol{"F2ED}}
+ \expandafter\def\csname simpleicon@qqicon\endcsname {\simpleiconsmap\symbol{"F2EE}}
+ \expandafter\def\csname simpleicon@qticon\endcsname {\simpleiconsmap\symbol{"F2EF}}
+ \expandafter\def\csname simpleicon@qualcommicon\endcsname {\simpleiconsmap\symbol{"F2F0}}
+ \expandafter\def\csname simpleicon@qualtricsicon\endcsname {\simpleiconsmap\symbol{"F2F1}}
+ \expandafter\def\csname simpleicon@qualysicon\endcsname {\simpleiconsmap\symbol{"F2F2}}
+ \expandafter\def\csname simpleicon@quantcasticon\endcsname {\simpleiconsmap\symbol{"F2F3}}
+ \expandafter\def\csname simpleicon@quantconnecticon\endcsname {\simpleiconsmap\symbol{"F2F4}}
+ \expandafter\def\csname simpleicon@quarkusicon\endcsname {\simpleiconsmap\symbol{"F2F5}}
+ \expandafter\def\csname simpleicon@quartoicon\endcsname {\simpleiconsmap\symbol{"F2F6}}
+ \expandafter\def\csname simpleicon@quasaricon\endcsname {\simpleiconsmap\symbol{"F2F7}}
+ \expandafter\def\csname simpleicon@qubesosicon\endcsname {\simpleiconsmap\symbol{"F2F8}}
+ \expandafter\def\csname simpleicon@questicon\endcsname {\simpleiconsmap\symbol{"F2F9}}
+ \expandafter\def\csname simpleicon@quickbooksicon\endcsname {\simpleiconsmap\symbol{"F2FA}}
+ \expandafter\def\csname simpleicon@quicklookicon\endcsname {\simpleiconsmap\symbol{"F2FB}}
+ \expandafter\def\csname simpleicon@quicktimeicon\endcsname {\simpleiconsmap\symbol{"F2FC}}
+ \expandafter\def\csname simpleicon@quicktypeicon\endcsname {\simpleiconsmap\symbol{"F2FD}}
+ \expandafter\def\csname simpleicon@quipicon\endcsname {\simpleiconsmap\symbol{"F2FE}}
+ \expandafter\def\csname simpleicon@quizleticon\endcsname {\simpleiconsmap\symbol{"F2FF}}
+ \expandafter\def\csname simpleicon@quoraicon\endcsname {\simpleiconsmap\symbol{"F300}}
+ \expandafter\def\csname simpleicon@qwanticon\endcsname {\simpleiconsmap\symbol{"F301}}
+ \expandafter\def\csname simpleicon@qwikicon\endcsname {\simpleiconsmap\symbol{"F302}}
+ \expandafter\def\csname simpleicon@qwiklabsicon\endcsname {\simpleiconsmap\symbol{"F303}}
+ \expandafter\def\csname simpleicon@qzoneicon\endcsname {\simpleiconsmap\symbol{"F304}}
+ \expandafter\def\csname simpleicon@ricon\endcsname {\simpleiconsmap\symbol{"F305}}
+ \expandafter\def\csname simpleicon@r3icon\endcsname {\simpleiconsmap\symbol{"F306}}
+ \expandafter\def\csname simpleicon@rabbitmqicon\endcsname {\simpleiconsmap\symbol{"F307}}
+ \expandafter\def\csname simpleicon@racketicon\endcsname {\simpleiconsmap\symbol{"F308}}
+ \expandafter\def\csname simpleicon@radstudioicon\endcsname {\simpleiconsmap\symbol{"F309}}
+ \expandafter\def\csname simpleicon@radaricon\endcsname {\simpleiconsmap\symbol{"F30A}}
+ \expandafter\def\csname simpleicon@radarricon\endcsname {\simpleiconsmap\symbol{"F30B}}
+ \expandafter\def\csname simpleicon@radixuiicon\endcsname {\simpleiconsmap\symbol{"F30C}}
+ \expandafter\def\csname simpleicon@railwayicon\endcsname {\simpleiconsmap\symbol{"F30D}}
+ \expandafter\def\csname simpleicon@rainmetericon\endcsname {\simpleiconsmap\symbol{"F30E}}
+ \expandafter\def\csname simpleicon@rakutenicon\endcsname {\simpleiconsmap\symbol{"F30F}}
+ \expandafter\def\csname simpleicon@ramicon\endcsname {\simpleiconsmap\symbol{"F310}}
+ \expandafter\def\csname simpleicon@ranchericon\endcsname {\simpleiconsmap\symbol{"F311}}
+ \expandafter\def\csname simpleicon@rapidicon\endcsname {\simpleiconsmap\symbol{"F312}}
+ \expandafter\def\csname simpleicon@raribleicon\endcsname {\simpleiconsmap\symbol{"F313}}
+ \expandafter\def\csname simpleicon@rasaicon\endcsname {\simpleiconsmap\symbol{"F314}}
+ \expandafter\def\csname simpleicon@raspberrypiicon\endcsname {\simpleiconsmap\symbol{"F315}}
+ \expandafter\def\csname simpleicon@ravelryicon\endcsname {\simpleiconsmap\symbol{"F316}}
+ \expandafter\def\csname simpleicon@rayicon\endcsname {\simpleiconsmap\symbol{"F317}}
+ \expandafter\def\csname simpleicon@raycasticon\endcsname {\simpleiconsmap\symbol{"F318}}
+ \expandafter\def\csname simpleicon@raylibicon\endcsname {\simpleiconsmap\symbol{"F319}}
+ \expandafter\def\csname simpleicon@razericon\endcsname {\simpleiconsmap\symbol{"F31A}}
+ \expandafter\def\csname simpleicon@razorpayicon\endcsname {\simpleiconsmap\symbol{"F31B}}
+ \expandafter\def\csname simpleicon@rcloneicon\endcsname {\simpleiconsmap\symbol{"F31C}}
+ \expandafter\def\csname simpleicon@reacticon\endcsname {\simpleiconsmap\symbol{"F31D}}
+ \expandafter\def\csname simpleicon@reactbootstrapicon\endcsname {\simpleiconsmap\symbol{"F31E}}
+ \expandafter\def\csname simpleicon@reacthookformicon\endcsname {\simpleiconsmap\symbol{"F31F}}
+ \expandafter\def\csname simpleicon@reactqueryicon\endcsname {\simpleiconsmap\symbol{"F320}}
+ \expandafter\def\csname simpleicon@reactroutericon\endcsname {\simpleiconsmap\symbol{"F321}}
+ \expandafter\def\csname simpleicon@reacttableicon\endcsname {\simpleiconsmap\symbol{"F322}}
+ \expandafter\def\csname simpleicon@reactiveresumeicon\endcsname {\simpleiconsmap\symbol{"F323}}
+ \expandafter\def\csname simpleicon@reactivexicon\endcsname {\simpleiconsmap\symbol{"F324}}
+ \expandafter\def\csname simpleicon@reactosicon\endcsname {\simpleiconsmap\symbol{"F325}}
+ \expandafter\def\csname simpleicon@readthedocsicon\endcsname {\simpleiconsmap\symbol{"F326}}
+ \expandafter\def\csname simpleicon@readdotcvicon\endcsname {\simpleiconsmap\symbol{"F327}}
+ \expandafter\def\csname simpleicon@readmeicon\endcsname {\simpleiconsmap\symbol{"F328}}
+ \expandafter\def\csname simpleicon@reasonicon\endcsname {\simpleiconsmap\symbol{"F329}}
+ \expandafter\def\csname simpleicon@reasonstudiosicon\endcsname {\simpleiconsmap\symbol{"F32A}}
+ \expandafter\def\csname simpleicon@recoilicon\endcsname {\simpleiconsmap\symbol{"F32B}}
+ \expandafter\def\csname simpleicon@redicon\endcsname {\simpleiconsmap\symbol{"F32C}}
+ \expandafter\def\csname simpleicon@redbullicon\endcsname {\simpleiconsmap\symbol{"F32D}}
+ \expandafter\def\csname simpleicon@redcandlegamesicon\endcsname {\simpleiconsmap\symbol{"F32E}}
+ \expandafter\def\csname simpleicon@redhaticon\endcsname {\simpleiconsmap\symbol{"F32F}}
+ \expandafter\def\csname simpleicon@redhatopenshifticon\endcsname {\simpleiconsmap\symbol{"F330}}
+ \expandafter\def\csname simpleicon@redashicon\endcsname {\simpleiconsmap\symbol{"F331}}
+ \expandafter\def\csname simpleicon@redbubbleicon\endcsname {\simpleiconsmap\symbol{"F332}}
+ \expandafter\def\csname simpleicon@redditicon\endcsname {\simpleiconsmap\symbol{"F333}}
+ \expandafter\def\csname simpleicon@redisicon\endcsname {\simpleiconsmap\symbol{"F334}}
+ \expandafter\def\csname simpleicon@redmineicon\endcsname {\simpleiconsmap\symbol{"F335}}
+ \expandafter\def\csname simpleicon@redoxicon\endcsname {\simpleiconsmap\symbol{"F336}}
+ \expandafter\def\csname simpleicon@redragonicon\endcsname {\simpleiconsmap\symbol{"F337}}
+ \expandafter\def\csname simpleicon@redsysicon\endcsname {\simpleiconsmap\symbol{"F338}}
+ \expandafter\def\csname simpleicon@reduxicon\endcsname {\simpleiconsmap\symbol{"F339}}
+ \expandafter\def\csname simpleicon@reduxsagaicon\endcsname {\simpleiconsmap\symbol{"F33A}}
+ \expandafter\def\csname simpleicon@redwoodjsicon\endcsname {\simpleiconsmap\symbol{"F33B}}
+ \expandafter\def\csname simpleicon@reebokicon\endcsname {\simpleiconsmap\symbol{"F33C}}
+ \expandafter\def\csname simpleicon@refineicon\endcsname {\simpleiconsmap\symbol{"F33D}}
+ \expandafter\def\csname simpleicon@refinedgithubicon\endcsname {\simpleiconsmap\symbol{"F33E}}
+ \expandafter\def\csname simpleicon@relayicon\endcsname {\simpleiconsmap\symbol{"F33F}}
+ \expandafter\def\csname simpleicon@relianceindustrieslimitedicon\endcsname {\simpleiconsmap\symbol{"F340}}
+ \expandafter\def\csname simpleicon@remarkicon\endcsname {\simpleiconsmap\symbol{"F341}}
+ \expandafter\def\csname simpleicon@remedyentertainmenticon\endcsname {\simpleiconsmap\symbol{"F342}}
+ \expandafter\def\csname simpleicon@remixicon\endcsname {\simpleiconsmap\symbol{"F343}}
+ \expandafter\def\csname simpleicon@removedotbgicon\endcsname {\simpleiconsmap\symbol{"F344}}
+ \expandafter\def\csname simpleicon@renpyicon\endcsname {\simpleiconsmap\symbol{"F345}}
+ \expandafter\def\csname simpleicon@renaulticon\endcsname {\simpleiconsmap\symbol{"F346}}
+ \expandafter\def\csname simpleicon@rendericon\endcsname {\simpleiconsmap\symbol{"F347}}
+ \expandafter\def\csname simpleicon@renovateicon\endcsname {\simpleiconsmap\symbol{"F348}}
+ \expandafter\def\csname simpleicon@renrenicon\endcsname {\simpleiconsmap\symbol{"F349}}
+ \expandafter\def\csname simpleicon@replicateicon\endcsname {\simpleiconsmap\symbol{"F34A}}
+ \expandafter\def\csname simpleicon@repliticon\endcsname {\simpleiconsmap\symbol{"F34B}}
+ \expandafter\def\csname simpleicon@republicofgamersicon\endcsname {\simpleiconsmap\symbol{"F34C}}
+ \expandafter\def\csname simpleicon@rescripticon\endcsname {\simpleiconsmap\symbol{"F34D}}
+ \expandafter\def\csname simpleicon@rescuetimeicon\endcsname {\simpleiconsmap\symbol{"F34E}}
+ \expandafter\def\csname simpleicon@researchgateicon\endcsname {\simpleiconsmap\symbol{"F34F}}
+ \expandafter\def\csname simpleicon@resendicon\endcsname {\simpleiconsmap\symbol{"F350}}
+ \expandafter\def\csname simpleicon@resharpericon\endcsname {\simpleiconsmap\symbol{"F351}}
+ \expandafter\def\csname simpleicon@resurrectionremixosicon\endcsname {\simpleiconsmap\symbol{"F352}}
+ \expandafter\def\csname simpleicon@retoolicon\endcsname {\simpleiconsmap\symbol{"F353}}
+ \expandafter\def\csname simpleicon@retroarchicon\endcsname {\simpleiconsmap\symbol{"F354}}
+ \expandafter\def\csname simpleicon@retropieicon\endcsname {\simpleiconsmap\symbol{"F355}}
+ \expandafter\def\csname simpleicon@revancedicon\endcsname {\simpleiconsmap\symbol{"F356}}
+ \expandafter\def\csname simpleicon@revealdotjsicon\endcsname {\simpleiconsmap\symbol{"F357}}
+ \expandafter\def\csname simpleicon@reverbnationicon\endcsname {\simpleiconsmap\symbol{"F358}}
+ \expandafter\def\csname simpleicon@revoltdotchaticon\endcsname {\simpleiconsmap\symbol{"F359}}
+ \expandafter\def\csname simpleicon@revoluticon\endcsname {\simpleiconsmap\symbol{"F35A}}
+ \expandafter\def\csname simpleicon@reweicon\endcsname {\simpleiconsmap\symbol{"F35B}}
+ \expandafter\def\csname simpleicon@rezgoicon\endcsname {\simpleiconsmap\symbol{"F35C}}
+ \expandafter\def\csname simpleicon@rhinocerosicon\endcsname {\simpleiconsmap\symbol{"F35D}}
+ \expandafter\def\csname simpleicon@richicon\endcsname {\simpleiconsmap\symbol{"F35E}}
+ \expandafter\def\csname simpleicon@ridericon\endcsname {\simpleiconsmap\symbol{"F35F}}
+ \expandafter\def\csname simpleicon@rimacautomobiliicon\endcsname {\simpleiconsmap\symbol{"F360}}
+ \expandafter\def\csname simpleicon@rimeicon\endcsname {\simpleiconsmap\symbol{"F361}}
+ \expandafter\def\csname simpleicon@ringicon\endcsname {\simpleiconsmap\symbol{"F362}}
+ \expandafter\def\csname simpleicon@riotgamesicon\endcsname {\simpleiconsmap\symbol{"F363}}
+ \expandafter\def\csname simpleicon@rippleicon\endcsname {\simpleiconsmap\symbol{"F364}}
+ \expandafter\def\csname simpleicon@riscvicon\endcsname {\simpleiconsmap\symbol{"F365}}
+ \expandafter\def\csname simpleicon@riseupicon\endcsname {\simpleiconsmap\symbol{"F366}}
+ \expandafter\def\csname simpleicon@ritzcarltonicon\endcsname {\simpleiconsmap\symbol{"F367}}
+ \expandafter\def\csname simpleicon@riveicon\endcsname {\simpleiconsmap\symbol{"F368}}
+ \expandafter\def\csname simpleicon@roadmapdotshicon\endcsname {\simpleiconsmap\symbol{"F369}}
+ \expandafter\def\csname simpleicon@roamresearchicon\endcsname {\simpleiconsmap\symbol{"F36A}}
+ \expandafter\def\csname simpleicon@robinhoodicon\endcsname {\simpleiconsmap\symbol{"F36B}}
+ \expandafter\def\csname simpleicon@robloxicon\endcsname {\simpleiconsmap\symbol{"F36C}}
+ \expandafter\def\csname simpleicon@robloxstudioicon\endcsname {\simpleiconsmap\symbol{"F36D}}
+ \expandafter\def\csname simpleicon@roboflowicon\endcsname {\simpleiconsmap\symbol{"F36E}}
+ \expandafter\def\csname simpleicon@robotframeworkicon\endcsname {\simpleiconsmap\symbol{"F36F}}
+ \expandafter\def\csname simpleicon@rocketicon\endcsname {\simpleiconsmap\symbol{"F370}}
+ \expandafter\def\csname simpleicon@rocketdotchaticon\endcsname {\simpleiconsmap\symbol{"F371}}
+ \expandafter\def\csname simpleicon@rocksdbicon\endcsname {\simpleiconsmap\symbol{"F372}}
+ \expandafter\def\csname simpleicon@rockstargamesicon\endcsname {\simpleiconsmap\symbol{"F373}}
+ \expandafter\def\csname simpleicon@rockwellautomationicon\endcsname {\simpleiconsmap\symbol{"F374}}
+ \expandafter\def\csname simpleicon@rockylinuxicon\endcsname {\simpleiconsmap\symbol{"F375}}
+ \expandafter\def\csname simpleicon@rokuicon\endcsname {\simpleiconsmap\symbol{"F376}}
+ \expandafter\def\csname simpleicon@roll20icon\endcsname {\simpleiconsmap\symbol{"F377}}
+ \expandafter\def\csname simpleicon@rollsroyceicon\endcsname {\simpleiconsmap\symbol{"F378}}
+ \expandafter\def\csname simpleicon@rollupdotjsicon\endcsname {\simpleiconsmap\symbol{"F379}}
+ \expandafter\def\csname simpleicon@rookicon\endcsname {\simpleiconsmap\symbol{"F37A}}
+ \expandafter\def\csname simpleicon@roonicon\endcsname {\simpleiconsmap\symbol{"F37B}}
+ \expandafter\def\csname simpleicon@rootmeicon\endcsname {\simpleiconsmap\symbol{"F37C}}
+ \expandafter\def\csname simpleicon@rootsicon\endcsname {\simpleiconsmap\symbol{"F37D}}
+ \expandafter\def\csname simpleicon@rootsbedrockicon\endcsname {\simpleiconsmap\symbol{"F37E}}
+ \expandafter\def\csname simpleicon@rootssageicon\endcsname {\simpleiconsmap\symbol{"F37F}}
+ \expandafter\def\csname simpleicon@rosicon\endcsname {\simpleiconsmap\symbol{"F380}}
+ \expandafter\def\csname simpleicon@rossmannicon\endcsname {\simpleiconsmap\symbol{"F381}}
+ \expandafter\def\csname simpleicon@rotaryinternationalicon\endcsname {\simpleiconsmap\symbol{"F382}}
+ \expandafter\def\csname simpleicon@rottentomatoesicon\endcsname {\simpleiconsmap\symbol{"F383}}
+ \expandafter\def\csname simpleicon@roundcubeicon\endcsname {\simpleiconsmap\symbol{"F384}}
+ \expandafter\def\csname simpleicon@rsocketicon\endcsname {\simpleiconsmap\symbol{"F385}}
+ \expandafter\def\csname simpleicon@rssicon\endcsname {\simpleiconsmap\symbol{"F386}}
+ \expandafter\def\csname simpleicon@rstudioideicon\endcsname {\simpleiconsmap\symbol{"F387}}
+ \expandafter\def\csname simpleicon@rteicon\endcsname {\simpleiconsmap\symbol{"F388}}
+ \expandafter\def\csname simpleicon@rtlicon\endcsname {\simpleiconsmap\symbol{"F389}}
+ \expandafter\def\csname simpleicon@rtlzweiicon\endcsname {\simpleiconsmap\symbol{"F38A}}
+ \expandafter\def\csname simpleicon@rtmicon\endcsname {\simpleiconsmap\symbol{"F38B}}
+ \expandafter\def\csname simpleicon@rubocopicon\endcsname {\simpleiconsmap\symbol{"F38C}}
+ \expandafter\def\csname simpleicon@rubyicon\endcsname {\simpleiconsmap\symbol{"F38D}}
+ \expandafter\def\csname simpleicon@rubyonrailsicon\endcsname {\simpleiconsmap\symbol{"F38E}}
+ \expandafter\def\csname simpleicon@rubysinatraicon\endcsname {\simpleiconsmap\symbol{"F38F}}
+ \expandafter\def\csname simpleicon@rubygemsicon\endcsname {\simpleiconsmap\symbol{"F390}}
+ \expandafter\def\csname simpleicon@rubymineicon\endcsname {\simpleiconsmap\symbol{"F391}}
+ \expandafter\def\csname simpleicon@rufficon\endcsname {\simpleiconsmap\symbol{"F392}}
+ \expandafter\def\csname simpleicon@rumahwebicon\endcsname {\simpleiconsmap\symbol{"F393}}
+ \expandafter\def\csname simpleicon@rumbleicon\endcsname {\simpleiconsmap\symbol{"F394}}
+ \expandafter\def\csname simpleicon@rundeckicon\endcsname {\simpleiconsmap\symbol{"F395}}
+ \expandafter\def\csname simpleicon@runkeepericon\endcsname {\simpleiconsmap\symbol{"F396}}
+ \expandafter\def\csname simpleicon@runkiticon\endcsname {\simpleiconsmap\symbol{"F397}}
+ \expandafter\def\csname simpleicon@runrundotiticon\endcsname {\simpleiconsmap\symbol{"F398}}
+ \expandafter\def\csname simpleicon@rusticon\endcsname {\simpleiconsmap\symbol{"F399}}
+ \expandafter\def\csname simpleicon@rustdeskicon\endcsname {\simpleiconsmap\symbol{"F39A}}
+ \expandafter\def\csname simpleicon@rxdbicon\endcsname {\simpleiconsmap\symbol{"F39B}}
+ \expandafter\def\csname simpleicon@ryanairicon\endcsname {\simpleiconsmap\symbol{"F39C}}
+ \expandafter\def\csname simpleicon@ryeicon\endcsname {\simpleiconsmap\symbol{"F39D}}
+ \expandafter\def\csname simpleicon@s7airlinesicon\endcsname {\simpleiconsmap\symbol{"F39E}}
+ \expandafter\def\csname simpleicon@sabanciicon\endcsname {\simpleiconsmap\symbol{"F39F}}
+ \expandafter\def\csname simpleicon@safariicon\endcsname {\simpleiconsmap\symbol{"F3A0}}
+ \expandafter\def\csname simpleicon@sageicon\endcsname {\simpleiconsmap\symbol{"F3A1}}
+ \expandafter\def\csname simpleicon@sahibindenicon\endcsname {\simpleiconsmap\symbol{"F3A2}}
+ \expandafter\def\csname simpleicon@sailfishosicon\endcsname {\simpleiconsmap\symbol{"F3A3}}
+ \expandafter\def\csname simpleicon@sailsdotjsicon\endcsname {\simpleiconsmap\symbol{"F3A4}}
+ \expandafter\def\csname simpleicon@salesforceicon\endcsname {\simpleiconsmap\symbol{"F3A5}}
+ \expandafter\def\csname simpleicon@sallaicon\endcsname {\simpleiconsmap\symbol{"F3A6}}
+ \expandafter\def\csname simpleicon@saltprojecticon\endcsname {\simpleiconsmap\symbol{"F3A7}}
+ \expandafter\def\csname simpleicon@samsclubicon\endcsname {\simpleiconsmap\symbol{"F3A8}}
+ \expandafter\def\csname simpleicon@samsungicon\endcsname {\simpleiconsmap\symbol{"F3A9}}
+ \expandafter\def\csname simpleicon@samsungpayicon\endcsname {\simpleiconsmap\symbol{"F3AA}}
+ \expandafter\def\csname simpleicon@sanfranciscomunicipalrailwayicon\endcsname {\simpleiconsmap\symbol{"F3AB}}
+ \expandafter\def\csname simpleicon@sandiskicon\endcsname {\simpleiconsmap\symbol{"F3AC}}
+ \expandafter\def\csname simpleicon@sanicicon\endcsname {\simpleiconsmap\symbol{"F3AD}}
+ \expandafter\def\csname simpleicon@sanityicon\endcsname {\simpleiconsmap\symbol{"F3AE}}
+ \expandafter\def\csname simpleicon@saopaulometroicon\endcsname {\simpleiconsmap\symbol{"F3AF}}
+ \expandafter\def\csname simpleicon@sapicon\endcsname {\simpleiconsmap\symbol{"F3B0}}
+ \expandafter\def\csname simpleicon@sartoriusicon\endcsname {\simpleiconsmap\symbol{"F3B1}}
+ \expandafter\def\csname simpleicon@sassicon\endcsname {\simpleiconsmap\symbol{"F3B2}}
+ \expandafter\def\csname simpleicon@sat1icon\endcsname {\simpleiconsmap\symbol{"F3B3}}
+ \expandafter\def\csname simpleicon@satelliteicon\endcsname {\simpleiconsmap\symbol{"F3B4}}
+ \expandafter\def\csname simpleicon@saturnicon\endcsname {\simpleiconsmap\symbol{"F3B5}}
+ \expandafter\def\csname simpleicon@saucelabsicon\endcsname {\simpleiconsmap\symbol{"F3B6}}
+ \expandafter\def\csname simpleicon@saudiaicon\endcsname {\simpleiconsmap\symbol{"F3B7}}
+ \expandafter\def\csname simpleicon@scalaicon\endcsname {\simpleiconsmap\symbol{"F3B8}}
+ \expandafter\def\csname simpleicon@scalaricon\endcsname {\simpleiconsmap\symbol{"F3B9}}
+ \expandafter\def\csname simpleicon@scalewayicon\endcsname {\simpleiconsmap\symbol{"F3BA}}
+ \expandafter\def\csname simpleicon@scaniaicon\endcsname {\simpleiconsmap\symbol{"F3BB}}
+ \expandafter\def\csname simpleicon@schneiderelectricicon\endcsname {\simpleiconsmap\symbol{"F3BC}}
+ \expandafter\def\csname simpleicon@scikitlearnicon\endcsname {\simpleiconsmap\symbol{"F3BD}}
+ \expandafter\def\csname simpleicon@scilabicon\endcsname {\simpleiconsmap\symbol{"F3BE}}
+ \expandafter\def\csname simpleicon@scipyicon\endcsname {\simpleiconsmap\symbol{"F3BF}}
+ \expandafter\def\csname simpleicon@scopusicon\endcsname {\simpleiconsmap\symbol{"F3C0}}
+ \expandafter\def\csname simpleicon@scpfoundationicon\endcsname {\simpleiconsmap\symbol{"F3C1}}
+ \expandafter\def\csname simpleicon@scrapboxicon\endcsname {\simpleiconsmap\symbol{"F3C2}}
+ \expandafter\def\csname simpleicon@scrapyicon\endcsname {\simpleiconsmap\symbol{"F3C3}}
+ \expandafter\def\csname simpleicon@scratchicon\endcsname {\simpleiconsmap\symbol{"F3C4}}
+ \expandafter\def\csname simpleicon@screencastifyicon\endcsname {\simpleiconsmap\symbol{"F3C5}}
+ \expandafter\def\csname simpleicon@scribdicon\endcsname {\simpleiconsmap\symbol{"F3C6}}
+ \expandafter\def\csname simpleicon@scrimbaicon\endcsname {\simpleiconsmap\symbol{"F3C7}}
+ \expandafter\def\csname simpleicon@scrollrevealicon\endcsname {\simpleiconsmap\symbol{"F3C8}}
+ \expandafter\def\csname simpleicon@scrumallianceicon\endcsname {\simpleiconsmap\symbol{"F3C9}}
+ \expandafter\def\csname simpleicon@scrutinizerciicon\endcsname {\simpleiconsmap\symbol{"F3CA}}
+ \expandafter\def\csname simpleicon@scylladbicon\endcsname {\simpleiconsmap\symbol{"F3CB}}
+ \expandafter\def\csname simpleicon@seagateicon\endcsname {\simpleiconsmap\symbol{"F3CC}}
+ \expandafter\def\csname simpleicon@searxngicon\endcsname {\simpleiconsmap\symbol{"F3CD}}
+ \expandafter\def\csname simpleicon@seaticon\endcsname {\simpleiconsmap\symbol{"F3CE}}
+ \expandafter\def\csname simpleicon@seatgeekicon\endcsname {\simpleiconsmap\symbol{"F3CF}}
+ \expandafter\def\csname simpleicon@securityscorecardicon\endcsname {\simpleiconsmap\symbol{"F3D0}}
+ \expandafter\def\csname simpleicon@sefariaicon\endcsname {\simpleiconsmap\symbol{"F3D1}}
+ \expandafter\def\csname simpleicon@segaicon\endcsname {\simpleiconsmap\symbol{"F3D2}}
+ \expandafter\def\csname simpleicon@seleniumicon\endcsname {\simpleiconsmap\symbol{"F3D3}}
+ \expandafter\def\csname simpleicon@sellfyicon\endcsname {\simpleiconsmap\symbol{"F3D4}}
+ \expandafter\def\csname simpleicon@semanticscholaricon\endcsname {\simpleiconsmap\symbol{"F3D5}}
+ \expandafter\def\csname simpleicon@semanticuiicon\endcsname {\simpleiconsmap\symbol{"F3D6}}
+ \expandafter\def\csname simpleicon@semanticuireacticon\endcsname {\simpleiconsmap\symbol{"F3D7}}
+ \expandafter\def\csname simpleicon@semanticwebicon\endcsname {\simpleiconsmap\symbol{"F3D8}}
+ \expandafter\def\csname simpleicon@semanticreleaseicon\endcsname {\simpleiconsmap\symbol{"F3D9}}
+ \expandafter\def\csname simpleicon@semaphoreciicon\endcsname {\simpleiconsmap\symbol{"F3DA}}
+ \expandafter\def\csname simpleicon@semrushicon\endcsname {\simpleiconsmap\symbol{"F3DB}}
+ \expandafter\def\csname simpleicon@semvericon\endcsname {\simpleiconsmap\symbol{"F3DC}}
+ \expandafter\def\csname simpleicon@senchaicon\endcsname {\simpleiconsmap\symbol{"F3DD}}
+ \expandafter\def\csname simpleicon@sendgridicon\endcsname {\simpleiconsmap\symbol{"F3DE}}
+ \expandafter\def\csname simpleicon@sennheisericon\endcsname {\simpleiconsmap\symbol{"F3DF}}
+ \expandafter\def\csname simpleicon@sensuicon\endcsname {\simpleiconsmap\symbol{"F3E0}}
+ \expandafter\def\csname simpleicon@sentryicon\endcsname {\simpleiconsmap\symbol{"F3E1}}
+ \expandafter\def\csname simpleicon@sepaicon\endcsname {\simpleiconsmap\symbol{"F3E2}}
+ \expandafter\def\csname simpleicon@sequelizeicon\endcsname {\simpleiconsmap\symbol{"F3E3}}
+ \expandafter\def\csname simpleicon@serverfaulticon\endcsname {\simpleiconsmap\symbol{"F3E4}}
+ \expandafter\def\csname simpleicon@serverlessicon\endcsname {\simpleiconsmap\symbol{"F3E5}}
+ \expandafter\def\csname simpleicon@sessionicon\endcsname {\simpleiconsmap\symbol{"F3E6}}
+ \expandafter\def\csname simpleicon@sessionizeicon\endcsname {\simpleiconsmap\symbol{"F3E7}}
+ \expandafter\def\csname simpleicon@setappicon\endcsname {\simpleiconsmap\symbol{"F3E8}}
+ \expandafter\def\csname simpleicon@sfmlicon\endcsname {\simpleiconsmap\symbol{"F3E9}}
+ \expandafter\def\csname simpleicon@shadcnuiicon\endcsname {\simpleiconsmap\symbol{"F3EA}}
+ \expandafter\def\csname simpleicon@shadowicon\endcsname {\simpleiconsmap\symbol{"F3EB}}
+ \expandafter\def\csname simpleicon@shanghaimetroicon\endcsname {\simpleiconsmap\symbol{"F3EC}}
+ \expandafter\def\csname simpleicon@sharexicon\endcsname {\simpleiconsmap\symbol{"F3ED}}
+ \expandafter\def\csname simpleicon@sharpicon\endcsname {\simpleiconsmap\symbol{"F3EE}}
+ \expandafter\def\csname simpleicon@shazamicon\endcsname {\simpleiconsmap\symbol{"F3EF}}
+ \expandafter\def\csname simpleicon@shellicon\endcsname {\simpleiconsmap\symbol{"F3F0}}
+ \expandafter\def\csname simpleicon@shellyicon\endcsname {\simpleiconsmap\symbol{"F3F1}}
+ \expandafter\def\csname simpleicon@shenzhenmetroicon\endcsname {\simpleiconsmap\symbol{"F3F2}}
+ \expandafter\def\csname simpleicon@shieldsdotioicon\endcsname {\simpleiconsmap\symbol{"F3F3}}
+ \expandafter\def\csname simpleicon@shikimoriicon\endcsname {\simpleiconsmap\symbol{"F3F4}}
+ \expandafter\def\csname simpleicon@shopeeicon\endcsname {\simpleiconsmap\symbol{"F3F5}}
+ \expandafter\def\csname simpleicon@shopifyicon\endcsname {\simpleiconsmap\symbol{"F3F6}}
+ \expandafter\def\csname simpleicon@shopwareicon\endcsname {\simpleiconsmap\symbol{"F3F7}}
+ \expandafter\def\csname simpleicon@shortcuticon\endcsname {\simpleiconsmap\symbol{"F3F8}}
+ \expandafter\def\csname simpleicon@showpadicon\endcsname {\simpleiconsmap\symbol{"F3F9}}
+ \expandafter\def\csname simpleicon@showtimeicon\endcsname {\simpleiconsmap\symbol{"F3FA}}
+ \expandafter\def\csname simpleicon@showwcaseicon\endcsname {\simpleiconsmap\symbol{"F3FB}}
+ \expandafter\def\csname simpleicon@shutterstockicon\endcsname {\simpleiconsmap\symbol{"F3FC}}
+ \expandafter\def\csname simpleicon@sidekiqicon\endcsname {\simpleiconsmap\symbol{"F3FD}}
+ \expandafter\def\csname simpleicon@sidequesticon\endcsname {\simpleiconsmap\symbol{"F3FE}}
+ \expandafter\def\csname simpleicon@siemensicon\endcsname {\simpleiconsmap\symbol{"F3FF}}
+ \expandafter\def\csname simpleicon@sifiveicon\endcsname {\simpleiconsmap\symbol{"F400}}
+ \expandafter\def\csname simpleicon@signalicon\endcsname {\simpleiconsmap\symbol{"F401}}
+ \expandafter\def\csname simpleicon@silverairwaysicon\endcsname {\simpleiconsmap\symbol{"F402}}
+ \expandafter\def\csname simpleicon@similarwebicon\endcsname {\simpleiconsmap\symbol{"F403}}
+ \expandafter\def\csname simpleicon@simklicon\endcsname {\simpleiconsmap\symbol{"F404}}
+ \expandafter\def\csname simpleicon@simpleanalyticsicon\endcsname {\simpleiconsmap\symbol{"F405}}
+ \expandafter\def\csname simpleicon@simpleiconsicon\endcsname {\simpleiconsmap\symbol{"F406}}
+ \expandafter\def\csname simpleicon@simpleloginicon\endcsname {\simpleiconsmap\symbol{"F407}}
+ \expandafter\def\csname simpleicon@simplenoteicon\endcsname {\simpleiconsmap\symbol{"F408}}
+ \expandafter\def\csname simpleicon@simplexicon\endcsname {\simpleiconsmap\symbol{"F409}}
+ \expandafter\def\csname simpleicon@sinaweiboicon\endcsname {\simpleiconsmap\symbol{"F40A}}
+ \expandafter\def\csname simpleicon@singaporeairlinesicon\endcsname {\simpleiconsmap\symbol{"F40B}}
+ \expandafter\def\csname simpleicon@singlestoreicon\endcsname {\simpleiconsmap\symbol{"F40C}}
+ \expandafter\def\csname simpleicon@sitecoreicon\endcsname {\simpleiconsmap\symbol{"F40D}}
+ \expandafter\def\csname simpleicon@sitepointicon\endcsname {\simpleiconsmap\symbol{"F40E}}
+ \expandafter\def\csname simpleicon@siyuanicon\endcsname {\simpleiconsmap\symbol{"F40F}}
+ \expandafter\def\csname simpleicon@skaffoldicon\endcsname {\simpleiconsmap\symbol{"F410}}
+ \expandafter\def\csname simpleicon@sketchicon\endcsname {\simpleiconsmap\symbol{"F411}}
+ \expandafter\def\csname simpleicon@sketchfabicon\endcsname {\simpleiconsmap\symbol{"F412}}
+ \expandafter\def\csname simpleicon@sketchupicon\endcsname {\simpleiconsmap\symbol{"F413}}
+ \expandafter\def\csname simpleicon@skillshareicon\endcsname {\simpleiconsmap\symbol{"F414}}
+ \expandafter\def\csname simpleicon@skodaicon\endcsname {\simpleiconsmap\symbol{"F415}}
+ \expandafter\def\csname simpleicon@skyicon\endcsname {\simpleiconsmap\symbol{"F416}}
+ \expandafter\def\csname simpleicon@skypackicon\endcsname {\simpleiconsmap\symbol{"F417}}
+ \expandafter\def\csname simpleicon@slackicon\endcsname {\simpleiconsmap\symbol{"F418}}
+ \expandafter\def\csname simpleicon@slackwareicon\endcsname {\simpleiconsmap\symbol{"F419}}
+ \expandafter\def\csname simpleicon@slashdoticon\endcsname {\simpleiconsmap\symbol{"F41A}}
+ \expandafter\def\csname simpleicon@slickpicicon\endcsname {\simpleiconsmap\symbol{"F41B}}
+ \expandafter\def\csname simpleicon@slidesicon\endcsname {\simpleiconsmap\symbol{"F41C}}
+ \expandafter\def\csname simpleicon@slideshareicon\endcsname {\simpleiconsmap\symbol{"F41D}}
+ \expandafter\def\csname simpleicon@slinticon\endcsname {\simpleiconsmap\symbol{"F41E}}
+ \expandafter\def\csname simpleicon@smarticon\endcsname {\simpleiconsmap\symbol{"F41F}}
+ \expandafter\def\csname simpleicon@smartthingsicon\endcsname {\simpleiconsmap\symbol{"F420}}
+ \expandafter\def\csname simpleicon@smashingmagazineicon\endcsname {\simpleiconsmap\symbol{"F421}}
+ \expandafter\def\csname simpleicon@smrticon\endcsname {\simpleiconsmap\symbol{"F422}}
+ \expandafter\def\csname simpleicon@smugmugicon\endcsname {\simpleiconsmap\symbol{"F423}}
+ \expandafter\def\csname simpleicon@snapchaticon\endcsname {\simpleiconsmap\symbol{"F424}}
+ \expandafter\def\csname simpleicon@snapcrafticon\endcsname {\simpleiconsmap\symbol{"F425}}
+ \expandafter\def\csname simpleicon@snapdragonicon\endcsname {\simpleiconsmap\symbol{"F426}}
+ \expandafter\def\csname simpleicon@sncficon\endcsname {\simpleiconsmap\symbol{"F427}}
+ \expandafter\def\csname simpleicon@snorticon\endcsname {\simpleiconsmap\symbol{"F428}}
+ \expandafter\def\csname simpleicon@snowflakeicon\endcsname {\simpleiconsmap\symbol{"F429}}
+ \expandafter\def\csname simpleicon@snowpackicon\endcsname {\simpleiconsmap\symbol{"F42A}}
+ \expandafter\def\csname simpleicon@snykicon\endcsname {\simpleiconsmap\symbol{"F42B}}
+ \expandafter\def\csname simpleicon@socialbladeicon\endcsname {\simpleiconsmap\symbol{"F42C}}
+ \expandafter\def\csname simpleicon@society6icon\endcsname {\simpleiconsmap\symbol{"F42D}}
+ \expandafter\def\csname simpleicon@socketicon\endcsname {\simpleiconsmap\symbol{"F42E}}
+ \expandafter\def\csname simpleicon@socketdotioicon\endcsname {\simpleiconsmap\symbol{"F42F}}
+ \expandafter\def\csname simpleicon@softcatalaicon\endcsname {\simpleiconsmap\symbol{"F430}}
+ \expandafter\def\csname simpleicon@softpediaicon\endcsname {\simpleiconsmap\symbol{"F431}}
+ \expandafter\def\csname simpleicon@sogouicon\endcsname {\simpleiconsmap\symbol{"F432}}
+ \expandafter\def\csname simpleicon@solanaicon\endcsname {\simpleiconsmap\symbol{"F433}}
+ \expandafter\def\csname simpleicon@solidicon\endcsname {\simpleiconsmap\symbol{"F434}}
+ \expandafter\def\csname simpleicon@solidityicon\endcsname {\simpleiconsmap\symbol{"F435}}
+ \expandafter\def\csname simpleicon@sololearnicon\endcsname {\simpleiconsmap\symbol{"F436}}
+ \expandafter\def\csname simpleicon@solusicon\endcsname {\simpleiconsmap\symbol{"F437}}
+ \expandafter\def\csname simpleicon@sonaricon\endcsname {\simpleiconsmap\symbol{"F438}}
+ \expandafter\def\csname simpleicon@sonarcloudicon\endcsname {\simpleiconsmap\symbol{"F439}}
+ \expandafter\def\csname simpleicon@sonarlinticon\endcsname {\simpleiconsmap\symbol{"F43A}}
+ \expandafter\def\csname simpleicon@sonarqubeicon\endcsname {\simpleiconsmap\symbol{"F43B}}
+ \expandafter\def\csname simpleicon@sonarricon\endcsname {\simpleiconsmap\symbol{"F43C}}
+ \expandafter\def\csname simpleicon@sonatypeicon\endcsname {\simpleiconsmap\symbol{"F43D}}
+ \expandafter\def\csname simpleicon@songkickicon\endcsname {\simpleiconsmap\symbol{"F43E}}
+ \expandafter\def\csname simpleicon@songodaicon\endcsname {\simpleiconsmap\symbol{"F43F}}
+ \expandafter\def\csname simpleicon@sonicwallicon\endcsname {\simpleiconsmap\symbol{"F440}}
+ \expandafter\def\csname simpleicon@sonosicon\endcsname {\simpleiconsmap\symbol{"F441}}
+ \expandafter\def\csname simpleicon@sonyicon\endcsname {\simpleiconsmap\symbol{"F442}}
+ \expandafter\def\csname simpleicon@sorianaicon\endcsname {\simpleiconsmap\symbol{"F443}}
+ \expandafter\def\csname simpleicon@soundchartsicon\endcsname {\simpleiconsmap\symbol{"F444}}
+ \expandafter\def\csname simpleicon@soundcloudicon\endcsname {\simpleiconsmap\symbol{"F445}}
+ \expandafter\def\csname simpleicon@sourceengineicon\endcsname {\simpleiconsmap\symbol{"F446}}
+ \expandafter\def\csname simpleicon@sourceforgeicon\endcsname {\simpleiconsmap\symbol{"F447}}
+ \expandafter\def\csname simpleicon@sourcehuticon\endcsname {\simpleiconsmap\symbol{"F448}}
+ \expandafter\def\csname simpleicon@sourcetreeicon\endcsname {\simpleiconsmap\symbol{"F449}}
+ \expandafter\def\csname simpleicon@southwestairlinesicon\endcsname {\simpleiconsmap\symbol{"F44A}}
+ \expandafter\def\csname simpleicon@spacemacsicon\endcsname {\simpleiconsmap\symbol{"F44B}}
+ \expandafter\def\csname simpleicon@spaceshipicon\endcsname {\simpleiconsmap\symbol{"F44C}}
+ \expandafter\def\csname simpleicon@spacexicon\endcsname {\simpleiconsmap\symbol{"F44D}}
+ \expandafter\def\csname simpleicon@spacyicon\endcsname {\simpleiconsmap\symbol{"F44E}}
+ \expandafter\def\csname simpleicon@sparkaricon\endcsname {\simpleiconsmap\symbol{"F44F}}
+ \expandafter\def\csname simpleicon@sparkasseicon\endcsname {\simpleiconsmap\symbol{"F450}}
+ \expandafter\def\csname simpleicon@sparkfunicon\endcsname {\simpleiconsmap\symbol{"F451}}
+ \expandafter\def\csname simpleicon@sparkposticon\endcsname {\simpleiconsmap\symbol{"F452}}
+ \expandafter\def\csname simpleicon@spdxicon\endcsname {\simpleiconsmap\symbol{"F453}}
+ \expandafter\def\csname simpleicon@speakerdeckicon\endcsname {\simpleiconsmap\symbol{"F454}}
+ \expandafter\def\csname simpleicon@spectrumicon\endcsname {\simpleiconsmap\symbol{"F455}}
+ \expandafter\def\csname simpleicon@speedtesticon\endcsname {\simpleiconsmap\symbol{"F456}}
+ \expandafter\def\csname simpleicon@speedypageicon\endcsname {\simpleiconsmap\symbol{"F457}}
+ \expandafter\def\csname simpleicon@spojicon\endcsname {\simpleiconsmap\symbol{"F458}}
+ \expandafter\def\csname simpleicon@sphinxicon\endcsname {\simpleiconsmap\symbol{"F459}}
+ \expandafter\def\csname simpleicon@spigotmcicon\endcsname {\simpleiconsmap\symbol{"F45A}}
+ \expandafter\def\csname simpleicon@spineicon\endcsname {\simpleiconsmap\symbol{"F45B}}
+ \expandafter\def\csname simpleicon@spinnakericon\endcsname {\simpleiconsmap\symbol{"F45C}}
+ \expandafter\def\csname simpleicon@splunkicon\endcsname {\simpleiconsmap\symbol{"F45D}}
+ \expandafter\def\csname simpleicon@spondicon\endcsname {\simpleiconsmap\symbol{"F45E}}
+ \expandafter\def\csname simpleicon@spotifyicon\endcsname {\simpleiconsmap\symbol{"F45F}}
+ \expandafter\def\csname simpleicon@spotlighticon\endcsname {\simpleiconsmap\symbol{"F460}}
+ \expandafter\def\csname simpleicon@spreadshirticon\endcsname {\simpleiconsmap\symbol{"F461}}
+ \expandafter\def\csname simpleicon@spreakericon\endcsname {\simpleiconsmap\symbol{"F462}}
+ \expandafter\def\csname simpleicon@springicon\endcsname {\simpleiconsmap\symbol{"F463}}
+ \expandafter\def\csname simpleicon@springcreatorsicon\endcsname {\simpleiconsmap\symbol{"F464}}
+ \expandafter\def\csname simpleicon@springbooticon\endcsname {\simpleiconsmap\symbol{"F465}}
+ \expandafter\def\csname simpleicon@springsecurityicon\endcsname {\simpleiconsmap\symbol{"F466}}
+ \expandafter\def\csname simpleicon@spyderideicon\endcsname {\simpleiconsmap\symbol{"F467}}
+ \expandafter\def\csname simpleicon@sqlalchemyicon\endcsname {\simpleiconsmap\symbol{"F468}}
+ \expandafter\def\csname simpleicon@sqliteicon\endcsname {\simpleiconsmap\symbol{"F469}}
+ \expandafter\def\csname simpleicon@squareicon\endcsname {\simpleiconsmap\symbol{"F46A}}
+ \expandafter\def\csname simpleicon@squareenixicon\endcsname {\simpleiconsmap\symbol{"F46B}}
+ \expandafter\def\csname simpleicon@squarespaceicon\endcsname {\simpleiconsmap\symbol{"F46C}}
+ \expandafter\def\csname simpleicon@srgssricon\endcsname {\simpleiconsmap\symbol{"F46D}}
+ \expandafter\def\csname simpleicon@ssrnicon\endcsname {\simpleiconsmap\symbol{"F46E}}
+ \expandafter\def\csname simpleicon@ssticon\endcsname {\simpleiconsmap\symbol{"F46F}}
+ \expandafter\def\csname simpleicon@stackexchangeicon\endcsname {\simpleiconsmap\symbol{"F470}}
+ \expandafter\def\csname simpleicon@stackoverflowicon\endcsname {\simpleiconsmap\symbol{"F471}}
+ \expandafter\def\csname simpleicon@stackbiticon\endcsname {\simpleiconsmap\symbol{"F472}}
+ \expandafter\def\csname simpleicon@stackblitzicon\endcsname {\simpleiconsmap\symbol{"F473}}
+ \expandafter\def\csname simpleicon@stackediticon\endcsname {\simpleiconsmap\symbol{"F474}}
+ \expandafter\def\csname simpleicon@stackhawkicon\endcsname {\simpleiconsmap\symbol{"F475}}
+ \expandafter\def\csname simpleicon@stackshareicon\endcsname {\simpleiconsmap\symbol{"F476}}
+ \expandafter\def\csname simpleicon@stadiaicon\endcsname {\simpleiconsmap\symbol{"F477}}
+ \expandafter\def\csname simpleicon@staffbaseicon\endcsname {\simpleiconsmap\symbol{"F478}}
+ \expandafter\def\csname simpleicon@stagetimericon\endcsname {\simpleiconsmap\symbol{"F479}}
+ \expandafter\def\csname simpleicon@standardresumeicon\endcsname {\simpleiconsmap\symbol{"F47A}}
+ \expandafter\def\csname simpleicon@standardjsicon\endcsname {\simpleiconsmap\symbol{"F47B}}
+ \expandafter\def\csname simpleicon@startrekicon\endcsname {\simpleiconsmap\symbol{"F47C}}
+ \expandafter\def\csname simpleicon@starbucksicon\endcsname {\simpleiconsmap\symbol{"F47D}}
+ \expandafter\def\csname simpleicon@stardockicon\endcsname {\simpleiconsmap\symbol{"F47E}}
+ \expandafter\def\csname simpleicon@starlingbankicon\endcsname {\simpleiconsmap\symbol{"F47F}}
+ \expandafter\def\csname simpleicon@starshipicon\endcsname {\simpleiconsmap\symbol{"F480}}
+ \expandafter\def\csname simpleicon@startdotggicon\endcsname {\simpleiconsmap\symbol{"F481}}
+ \expandafter\def\csname simpleicon@startpageicon\endcsname {\simpleiconsmap\symbol{"F482}}
+ \expandafter\def\csname simpleicon@starzicon\endcsname {\simpleiconsmap\symbol{"F483}}
+ \expandafter\def\csname simpleicon@statamicicon\endcsname {\simpleiconsmap\symbol{"F484}}
+ \expandafter\def\csname simpleicon@statistaicon\endcsname {\simpleiconsmap\symbol{"F485}}
+ \expandafter\def\csname simpleicon@statuspageicon\endcsname {\simpleiconsmap\symbol{"F486}}
+ \expandafter\def\csname simpleicon@statuspalicon\endcsname {\simpleiconsmap\symbol{"F487}}
+ \expandafter\def\csname simpleicon@steamicon\endcsname {\simpleiconsmap\symbol{"F488}}
+ \expandafter\def\csname simpleicon@steamdeckicon\endcsname {\simpleiconsmap\symbol{"F489}}
+ \expandafter\def\csname simpleicon@steamdbicon\endcsname {\simpleiconsmap\symbol{"F48A}}
+ \expandafter\def\csname simpleicon@steamworksicon\endcsname {\simpleiconsmap\symbol{"F48B}}
+ \expandafter\def\csname simpleicon@steelseriesicon\endcsname {\simpleiconsmap\symbol{"F48C}}
+ \expandafter\def\csname simpleicon@steemicon\endcsname {\simpleiconsmap\symbol{"F48D}}
+ \expandafter\def\csname simpleicon@steemiticon\endcsname {\simpleiconsmap\symbol{"F48E}}
+ \expandafter\def\csname simpleicon@steinbergicon\endcsname {\simpleiconsmap\symbol{"F48F}}
+ \expandafter\def\csname simpleicon@stellaricon\endcsname {\simpleiconsmap\symbol{"F490}}
+ \expandafter\def\csname simpleicon@stencilicon\endcsname {\simpleiconsmap\symbol{"F491}}
+ \expandafter\def\csname simpleicon@stencylicon\endcsname {\simpleiconsmap\symbol{"F492}}
+ \expandafter\def\csname simpleicon@stimulusicon\endcsname {\simpleiconsmap\symbol{"F493}}
+ \expandafter\def\csname simpleicon@stmicroelectronicsicon\endcsname {\simpleiconsmap\symbol{"F494}}
+ \expandafter\def\csname simpleicon@stockxicon\endcsname {\simpleiconsmap\symbol{"F495}}
+ \expandafter\def\csname simpleicon@stopstalkicon\endcsname {\simpleiconsmap\symbol{"F496}}
+ \expandafter\def\csname simpleicon@storyblokicon\endcsname {\simpleiconsmap\symbol{"F497}}
+ \expandafter\def\csname simpleicon@storybookicon\endcsname {\simpleiconsmap\symbol{"F498}}
+ \expandafter\def\csname simpleicon@strapiicon\endcsname {\simpleiconsmap\symbol{"F499}}
+ \expandafter\def\csname simpleicon@stravaicon\endcsname {\simpleiconsmap\symbol{"F49A}}
+ \expandafter\def\csname simpleicon@streamlabsicon\endcsname {\simpleiconsmap\symbol{"F49B}}
+ \expandafter\def\csname simpleicon@streamliticon\endcsname {\simpleiconsmap\symbol{"F49C}}
+ \expandafter\def\csname simpleicon@streamrunnersicon\endcsname {\simpleiconsmap\symbol{"F49D}}
+ \expandafter\def\csname simpleicon@stremioicon\endcsname {\simpleiconsmap\symbol{"F49E}}
+ \expandafter\def\csname simpleicon@stripeicon\endcsname {\simpleiconsmap\symbol{"F49F}}
+ \expandafter\def\csname simpleicon@strongswanicon\endcsname {\simpleiconsmap\symbol{"F4A0}}
+ \expandafter\def\csname simpleicon@strykericon\endcsname {\simpleiconsmap\symbol{"F4A1}}
+ \expandafter\def\csname simpleicon@stubhubicon\endcsname {\simpleiconsmap\symbol{"F4A2}}
+ \expandafter\def\csname simpleicon@studio3ticon\endcsname {\simpleiconsmap\symbol{"F4A3}}
+ \expandafter\def\csname simpleicon@styledcomponentsicon\endcsname {\simpleiconsmap\symbol{"F4A4}}
+ \expandafter\def\csname simpleicon@stylelinticon\endcsname {\simpleiconsmap\symbol{"F4A5}}
+ \expandafter\def\csname simpleicon@styleshareicon\endcsname {\simpleiconsmap\symbol{"F4A6}}
+ \expandafter\def\csname simpleicon@stylusicon\endcsname {\simpleiconsmap\symbol{"F4A7}}
+ \expandafter\def\csname simpleicon@subaruicon\endcsname {\simpleiconsmap\symbol{"F4A8}}
+ \expandafter\def\csname simpleicon@sublimetexticon\endcsname {\simpleiconsmap\symbol{"F4A9}}
+ \expandafter\def\csname simpleicon@substackicon\endcsname {\simpleiconsmap\symbol{"F4AA}}
+ \expandafter\def\csname simpleicon@subtitleediticon\endcsname {\simpleiconsmap\symbol{"F4AB}}
+ \expandafter\def\csname simpleicon@subversionicon\endcsname {\simpleiconsmap\symbol{"F4AC}}
+ \expandafter\def\csname simpleicon@sucklessicon\endcsname {\simpleiconsmap\symbol{"F4AD}}
+ \expandafter\def\csname simpleicon@suiicon\endcsname {\simpleiconsmap\symbol{"F4AE}}
+ \expandafter\def\csname simpleicon@sumologicicon\endcsname {\simpleiconsmap\symbol{"F4AF}}
+ \expandafter\def\csname simpleicon@sunoicon\endcsname {\simpleiconsmap\symbol{"F4B0}}
+ \expandafter\def\csname simpleicon@sunriseicon\endcsname {\simpleiconsmap\symbol{"F4B1}}
+ \expandafter\def\csname simpleicon@supabaseicon\endcsname {\simpleiconsmap\symbol{"F4B2}}
+ \expandafter\def\csname simpleicon@superusericon\endcsname {\simpleiconsmap\symbol{"F4B3}}
+ \expandafter\def\csname simpleicon@supercreaseicon\endcsname {\simpleiconsmap\symbol{"F4B4}}
+ \expandafter\def\csname simpleicon@supermicroicon\endcsname {\simpleiconsmap\symbol{"F4B5}}
+ \expandafter\def\csname simpleicon@surfsharkicon\endcsname {\simpleiconsmap\symbol{"F4B6}}
+ \expandafter\def\csname simpleicon@surrealdbicon\endcsname {\simpleiconsmap\symbol{"F4B7}}
+ \expandafter\def\csname simpleicon@surveymonkeyicon\endcsname {\simpleiconsmap\symbol{"F4B8}}
+ \expandafter\def\csname simpleicon@suseicon\endcsname {\simpleiconsmap\symbol{"F4B9}}
+ \expandafter\def\csname simpleicon@suzukiicon\endcsname {\simpleiconsmap\symbol{"F4BA}}
+ \expandafter\def\csname simpleicon@svelteicon\endcsname {\simpleiconsmap\symbol{"F4BB}}
+ \expandafter\def\csname simpleicon@svgicon\endcsname {\simpleiconsmap\symbol{"F4BC}}
+ \expandafter\def\csname simpleicon@svgdotjsicon\endcsname {\simpleiconsmap\symbol{"F4BD}}
+ \expandafter\def\csname simpleicon@svgoicon\endcsname {\simpleiconsmap\symbol{"F4BE}}
+ \expandafter\def\csname simpleicon@svgtraceicon\endcsname {\simpleiconsmap\symbol{"F4BF}}
+ \expandafter\def\csname simpleicon@swaggericon\endcsname {\simpleiconsmap\symbol{"F4C0}}
+ \expandafter\def\csname simpleicon@swarmicon\endcsname {\simpleiconsmap\symbol{"F4C1}}
+ \expandafter\def\csname simpleicon@swayicon\endcsname {\simpleiconsmap\symbol{"F4C2}}
+ \expandafter\def\csname simpleicon@swcicon\endcsname {\simpleiconsmap\symbol{"F4C3}}
+ \expandafter\def\csname simpleicon@swifticon\endcsname {\simpleiconsmap\symbol{"F4C4}}
+ \expandafter\def\csname simpleicon@swiggyicon\endcsname {\simpleiconsmap\symbol{"F4C5}}
+ \expandafter\def\csname simpleicon@swipericon\endcsname {\simpleiconsmap\symbol{"F4C6}}
+ \expandafter\def\csname simpleicon@swricon\endcsname {\simpleiconsmap\symbol{"F4C7}}
+ \expandafter\def\csname simpleicon@symantecicon\endcsname {\simpleiconsmap\symbol{"F4C8}}
+ \expandafter\def\csname simpleicon@symbolabicon\endcsname {\simpleiconsmap\symbol{"F4C9}}
+ \expandafter\def\csname simpleicon@symfonyicon\endcsname {\simpleiconsmap\symbol{"F4CA}}
+ \expandafter\def\csname simpleicon@symphonyicon\endcsname {\simpleiconsmap\symbol{"F4CB}}
+ \expandafter\def\csname simpleicon@sympyicon\endcsname {\simpleiconsmap\symbol{"F4CC}}
+ \expandafter\def\csname simpleicon@syncthingicon\endcsname {\simpleiconsmap\symbol{"F4CD}}
+ \expandafter\def\csname simpleicon@synologyicon\endcsname {\simpleiconsmap\symbol{"F4CE}}
+ \expandafter\def\csname simpleicon@system76icon\endcsname {\simpleiconsmap\symbol{"F4CF}}
+ \expandafter\def\csname simpleicon@tabelogicon\endcsname {\simpleiconsmap\symbol{"F4D0}}
+ \expandafter\def\csname simpleicon@tablecheckicon\endcsname {\simpleiconsmap\symbol{"F4D1}}
+ \expandafter\def\csname simpleicon@tacobellicon\endcsname {\simpleiconsmap\symbol{"F4D2}}
+ \expandafter\def\csname simpleicon@tadoicon\endcsname {\simpleiconsmap\symbol{"F4D3}}
+ \expandafter\def\csname simpleicon@taichigraphicsicon\endcsname {\simpleiconsmap\symbol{"F4D4}}
+ \expandafter\def\csname simpleicon@taichilangicon\endcsname {\simpleiconsmap\symbol{"F4D5}}
+ \expandafter\def\csname simpleicon@tailsicon\endcsname {\simpleiconsmap\symbol{"F4D6}}
+ \expandafter\def\csname simpleicon@tailscaleicon\endcsname {\simpleiconsmap\symbol{"F4D7}}
+ \expandafter\def\csname simpleicon@tailwindcssicon\endcsname {\simpleiconsmap\symbol{"F4D8}}
+ \expandafter\def\csname simpleicon@taipyicon\endcsname {\simpleiconsmap\symbol{"F4D9}}
+ \expandafter\def\csname simpleicon@taketwointeractivesoftwareicon\endcsname {\simpleiconsmap\symbol{"F4DA}}
+ \expandafter\def\csname simpleicon@talendicon\endcsname {\simpleiconsmap\symbol{"F4DB}}
+ \expandafter\def\csname simpleicon@talenthouseicon\endcsname {\simpleiconsmap\symbol{"F4DC}}
+ \expandafter\def\csname simpleicon@talosicon\endcsname {\simpleiconsmap\symbol{"F4DD}}
+ \expandafter\def\csname simpleicon@tamiyaicon\endcsname {\simpleiconsmap\symbol{"F4DE}}
+ \expandafter\def\csname simpleicon@tampermonkeyicon\endcsname {\simpleiconsmap\symbol{"F4DF}}
+ \expandafter\def\csname simpleicon@taobaoicon\endcsname {\simpleiconsmap\symbol{"F4E0}}
+ \expandafter\def\csname simpleicon@tapasicon\endcsname {\simpleiconsmap\symbol{"F4E1}}
+ \expandafter\def\csname simpleicon@targeticon\endcsname {\simpleiconsmap\symbol{"F4E2}}
+ \expandafter\def\csname simpleicon@taromicon\endcsname {\simpleiconsmap\symbol{"F4E3}}
+ \expandafter\def\csname simpleicon@taskicon\endcsname {\simpleiconsmap\symbol{"F4E4}}
+ \expandafter\def\csname simpleicon@tasmotaicon\endcsname {\simpleiconsmap\symbol{"F4E5}}
+ \expandafter\def\csname simpleicon@tataicon\endcsname {\simpleiconsmap\symbol{"F4E6}}
+ \expandafter\def\csname simpleicon@tcsicon\endcsname {\simpleiconsmap\symbol{"F4E7}}
+ \expandafter\def\csname simpleicon@tauriicon\endcsname {\simpleiconsmap\symbol{"F4E8}}
+ \expandafter\def\csname simpleicon@taxbuzzicon\endcsname {\simpleiconsmap\symbol{"F4E9}}
+ \expandafter\def\csname simpleicon@tealicon\endcsname {\simpleiconsmap\symbol{"F4EA}}
+ \expandafter\def\csname simpleicon@teamcityicon\endcsname {\simpleiconsmap\symbol{"F4EB}}
+ \expandafter\def\csname simpleicon@teamspeakicon\endcsname {\simpleiconsmap\symbol{"F4EC}}
+ \expandafter\def\csname simpleicon@teamviewericon\endcsname {\simpleiconsmap\symbol{"F4ED}}
+ \expandafter\def\csname simpleicon@techcrunchicon\endcsname {\simpleiconsmap\symbol{"F4EE}}
+ \expandafter\def\csname simpleicon@tedicon\endcsname {\simpleiconsmap\symbol{"F4EF}}
+ \expandafter\def\csname simpleicon@teepublicicon\endcsname {\simpleiconsmap\symbol{"F4F0}}
+ \expandafter\def\csname simpleicon@teespringicon\endcsname {\simpleiconsmap\symbol{"F4F1}}
+ \expandafter\def\csname simpleicon@tektonicon\endcsname {\simpleiconsmap\symbol{"F4F2}}
+ \expandafter\def\csname simpleicon@tele5icon\endcsname {\simpleiconsmap\symbol{"F4F3}}
+ \expandafter\def\csname simpleicon@telequebecicon\endcsname {\simpleiconsmap\symbol{"F4F4}}
+ \expandafter\def\csname simpleicon@telefonicaicon\endcsname {\simpleiconsmap\symbol{"F4F5}}
+ \expandafter\def\csname simpleicon@telegramicon\endcsname {\simpleiconsmap\symbol{"F4F6}}
+ \expandafter\def\csname simpleicon@telegraphicon\endcsname {\simpleiconsmap\symbol{"F4F7}}
+ \expandafter\def\csname simpleicon@temporalicon\endcsname {\simpleiconsmap\symbol{"F4F8}}
+ \expandafter\def\csname simpleicon@tensorflowicon\endcsname {\simpleiconsmap\symbol{"F4F9}}
+ \expandafter\def\csname simpleicon@teradataicon\endcsname {\simpleiconsmap\symbol{"F4FA}}
+ \expandafter\def\csname simpleicon@teratailicon\endcsname {\simpleiconsmap\symbol{"F4FB}}
+ \expandafter\def\csname simpleicon@termiusicon\endcsname {\simpleiconsmap\symbol{"F4FC}}
+ \expandafter\def\csname simpleicon@terraformicon\endcsname {\simpleiconsmap\symbol{"F4FD}}
+ \expandafter\def\csname simpleicon@tescoicon\endcsname {\simpleiconsmap\symbol{"F4FE}}
+ \expandafter\def\csname simpleicon@teslaicon\endcsname {\simpleiconsmap\symbol{"F4FF}}
+ \expandafter\def\csname simpleicon@testcafeicon\endcsname {\simpleiconsmap\symbol{"F500}}
+ \expandafter\def\csname simpleicon@testinicon\endcsname {\simpleiconsmap\symbol{"F501}}
+ \expandafter\def\csname simpleicon@testinglibraryicon\endcsname {\simpleiconsmap\symbol{"F502}}
+ \expandafter\def\csname simpleicon@testrailicon\endcsname {\simpleiconsmap\symbol{"F503}}
+ \expandafter\def\csname simpleicon@tethericon\endcsname {\simpleiconsmap\symbol{"F504}}
+ \expandafter\def\csname simpleicon@textpatternicon\endcsname {\simpleiconsmap\symbol{"F505}}
+ \expandafter\def\csname simpleicon@tgaicon\endcsname {\simpleiconsmap\symbol{"F506}}
+ \expandafter\def\csname simpleicon@thangsicon\endcsname {\simpleiconsmap\symbol{"F507}}
+ \expandafter\def\csname simpleicon@thanosicon\endcsname {\simpleiconsmap\symbol{"F508}}
+ \expandafter\def\csname simpleicon@thealgorithmsicon\endcsname {\simpleiconsmap\symbol{"F509}}
+ \expandafter\def\csname simpleicon@theboringcompanyicon\endcsname {\simpleiconsmap\symbol{"F50A}}
+ \expandafter\def\csname simpleicon@theconversationicon\endcsname {\simpleiconsmap\symbol{"F50B}}
+ \expandafter\def\csname simpleicon@thefinalsicon\endcsname {\simpleiconsmap\symbol{"F50C}}
+ \expandafter\def\csname simpleicon@theguardianicon\endcsname {\simpleiconsmap\symbol{"F50D}}
+ \expandafter\def\csname simpleicon@theirishtimesicon\endcsname {\simpleiconsmap\symbol{"F50E}}
+ \expandafter\def\csname simpleicon@themightyicon\endcsname {\simpleiconsmap\symbol{"F50F}}
+ \expandafter\def\csname simpleicon@themodelsresourceicon\endcsname {\simpleiconsmap\symbol{"F510}}
+ \expandafter\def\csname simpleicon@themoviedatabaseicon\endcsname {\simpleiconsmap\symbol{"F511}}
+ \expandafter\def\csname simpleicon@thenorthfaceicon\endcsname {\simpleiconsmap\symbol{"F512}}
+ \expandafter\def\csname simpleicon@theodinprojecticon\endcsname {\simpleiconsmap\symbol{"F513}}
+ \expandafter\def\csname simpleicon@theregistericon\endcsname {\simpleiconsmap\symbol{"F514}}
+ \expandafter\def\csname simpleicon@thesoundsresourceicon\endcsname {\simpleiconsmap\symbol{"F515}}
+ \expandafter\def\csname simpleicon@thespritersresourceicon\endcsname {\simpleiconsmap\symbol{"F516}}
+ \expandafter\def\csname simpleicon@thewashingtonposticon\endcsname {\simpleiconsmap\symbol{"F517}}
+ \expandafter\def\csname simpleicon@theweatherchannelicon\endcsname {\simpleiconsmap\symbol{"F518}}
+ \expandafter\def\csname simpleicon@thingiverseicon\endcsname {\simpleiconsmap\symbol{"F519}}
+ \expandafter\def\csname simpleicon@thinkpadicon\endcsname {\simpleiconsmap\symbol{"F51A}}
+ \expandafter\def\csname simpleicon@thirdwebicon\endcsname {\simpleiconsmap\symbol{"F51B}}
+ \expandafter\def\csname simpleicon@threadlessicon\endcsname {\simpleiconsmap\symbol{"F51C}}
+ \expandafter\def\csname simpleicon@threadsicon\endcsname {\simpleiconsmap\symbol{"F51D}}
+ \expandafter\def\csname simpleicon@threedotjsicon\endcsname {\simpleiconsmap\symbol{"F51E}}
+ \expandafter\def\csname simpleicon@threemaicon\endcsname {\simpleiconsmap\symbol{"F51F}}
+ \expandafter\def\csname simpleicon@thumbtackicon\endcsname {\simpleiconsmap\symbol{"F520}}
+ \expandafter\def\csname simpleicon@thunderbirdicon\endcsname {\simpleiconsmap\symbol{"F521}}
+ \expandafter\def\csname simpleicon@thunderstoreicon\endcsname {\simpleiconsmap\symbol{"F522}}
+ \expandafter\def\csname simpleicon@thurgauerkantonalbankicon\endcsname {\simpleiconsmap\symbol{"F523}}
+ \expandafter\def\csname simpleicon@thymeleaficon\endcsname {\simpleiconsmap\symbol{"F524}}
+ \expandafter\def\csname simpleicon@ticketmastericon\endcsname {\simpleiconsmap\symbol{"F525}}
+ \expandafter\def\csname simpleicon@ticktickicon\endcsname {\simpleiconsmap\symbol{"F526}}
+ \expandafter\def\csname simpleicon@tidalicon\endcsname {\simpleiconsmap\symbol{"F527}}
+ \expandafter\def\csname simpleicon@tiddlywikiicon\endcsname {\simpleiconsmap\symbol{"F528}}
+ \expandafter\def\csname simpleicon@tideicon\endcsname {\simpleiconsmap\symbol{"F529}}
+ \expandafter\def\csname simpleicon@tidyverseicon\endcsname {\simpleiconsmap\symbol{"F52A}}
+ \expandafter\def\csname simpleicon@tietoevryicon\endcsname {\simpleiconsmap\symbol{"F52B}}
+ \expandafter\def\csname simpleicon@tiktokicon\endcsname {\simpleiconsmap\symbol{"F52C}}
+ \expandafter\def\csname simpleicon@tildapublishingicon\endcsname {\simpleiconsmap\symbol{"F52D}}
+ \expandafter\def\csname simpleicon@tileicon\endcsname {\simpleiconsmap\symbol{"F52E}}
+ \expandafter\def\csname simpleicon@timescaleicon\endcsname {\simpleiconsmap\symbol{"F52F}}
+ \expandafter\def\csname simpleicon@tinaicon\endcsname {\simpleiconsmap\symbol{"F530}}
+ \expandafter\def\csname simpleicon@tindericon\endcsname {\simpleiconsmap\symbol{"F531}}
+ \expandafter\def\csname simpleicon@tindieicon\endcsname {\simpleiconsmap\symbol{"F532}}
+ \expandafter\def\csname simpleicon@tinkercadicon\endcsname {\simpleiconsmap\symbol{"F533}}
+ \expandafter\def\csname simpleicon@tinygradicon\endcsname {\simpleiconsmap\symbol{"F534}}
+ \expandafter\def\csname simpleicon@tinylettericon\endcsname {\simpleiconsmap\symbol{"F535}}
+ \expandafter\def\csname simpleicon@tistoryicon\endcsname {\simpleiconsmap\symbol{"F536}}
+ \expandafter\def\csname simpleicon@tldrawicon\endcsname {\simpleiconsmap\symbol{"F537}}
+ \expandafter\def\csname simpleicon@tmuxicon\endcsname {\simpleiconsmap\symbol{"F538}}
+ \expandafter\def\csname simpleicon@todoisticon\endcsname {\simpleiconsmap\symbol{"F539}}
+ \expandafter\def\csname simpleicon@togglicon\endcsname {\simpleiconsmap\symbol{"F53A}}
+ \expandafter\def\csname simpleicon@toggltrackicon\endcsname {\simpleiconsmap\symbol{"F53B}}
+ \expandafter\def\csname simpleicon@tokyometroicon\endcsname {\simpleiconsmap\symbol{"F53C}}
+ \expandafter\def\csname simpleicon@tollicon\endcsname {\simpleiconsmap\symbol{"F53D}}
+ \expandafter\def\csname simpleicon@tomlicon\endcsname {\simpleiconsmap\symbol{"F53E}}
+ \expandafter\def\csname simpleicon@tomorrowlandicon\endcsname {\simpleiconsmap\symbol{"F53F}}
+ \expandafter\def\csname simpleicon@tomtomicon\endcsname {\simpleiconsmap\symbol{"F540}}
+ \expandafter\def\csname simpleicon@tonicon\endcsname {\simpleiconsmap\symbol{"F541}}
+ \expandafter\def\csname simpleicon@topdotggicon\endcsname {\simpleiconsmap\symbol{"F542}}
+ \expandafter\def\csname simpleicon@topcodericon\endcsname {\simpleiconsmap\symbol{"F543}}
+ \expandafter\def\csname simpleicon@toptalicon\endcsname {\simpleiconsmap\symbol{"F544}}
+ \expandafter\def\csname simpleicon@torbrowsericon\endcsname {\simpleiconsmap\symbol{"F545}}
+ \expandafter\def\csname simpleicon@torprojecticon\endcsname {\simpleiconsmap\symbol{"F546}}
+ \expandafter\def\csname simpleicon@toshibaicon\endcsname {\simpleiconsmap\symbol{"F547}}
+ \expandafter\def\csname simpleicon@totvsicon\endcsname {\simpleiconsmap\symbol{"F548}}
+ \expandafter\def\csname simpleicon@tourboxicon\endcsname {\simpleiconsmap\symbol{"F549}}
+ \expandafter\def\csname simpleicon@towericon\endcsname {\simpleiconsmap\symbol{"F54A}}
+ \expandafter\def\csname simpleicon@toyotaicon\endcsname {\simpleiconsmap\symbol{"F54B}}
+ \expandafter\def\csname simpleicon@tplinkicon\endcsname {\simpleiconsmap\symbol{"F54C}}
+ \expandafter\def\csname simpleicon@tqdmicon\endcsname {\simpleiconsmap\symbol{"F54D}}
+ \expandafter\def\csname simpleicon@traccaricon\endcsname {\simpleiconsmap\symbol{"F54E}}
+ \expandafter\def\csname simpleicon@tradingviewicon\endcsname {\simpleiconsmap\symbol{"F54F}}
+ \expandafter\def\csname simpleicon@traefikmeshicon\endcsname {\simpleiconsmap\symbol{"F550}}
+ \expandafter\def\csname simpleicon@traefikproxyicon\endcsname {\simpleiconsmap\symbol{"F551}}
+ \expandafter\def\csname simpleicon@trailforksicon\endcsname {\simpleiconsmap\symbol{"F552}}
+ \expandafter\def\csname simpleicon@trainerroadicon\endcsname {\simpleiconsmap\symbol{"F553}}
+ \expandafter\def\csname simpleicon@trakticon\endcsname {\simpleiconsmap\symbol{"F554}}
+ \expandafter\def\csname simpleicon@transifexicon\endcsname {\simpleiconsmap\symbol{"F555}}
+ \expandafter\def\csname simpleicon@transmissionicon\endcsname {\simpleiconsmap\symbol{"F556}}
+ \expandafter\def\csname simpleicon@transportforirelandicon\endcsname {\simpleiconsmap\symbol{"F557}}
+ \expandafter\def\csname simpleicon@transportforlondonicon\endcsname {\simpleiconsmap\symbol{"F558}}
+ \expandafter\def\csname simpleicon@travisciicon\endcsname {\simpleiconsmap\symbol{"F559}}
+ \expandafter\def\csname simpleicon@treehouseicon\endcsname {\simpleiconsmap\symbol{"F55A}}
+ \expandafter\def\csname simpleicon@trelloicon\endcsname {\simpleiconsmap\symbol{"F55B}}
+ \expandafter\def\csname simpleicon@trendmicroicon\endcsname {\simpleiconsmap\symbol{"F55C}}
+ \expandafter\def\csname simpleicon@treyarchicon\endcsname {\simpleiconsmap\symbol{"F55D}}
+ \expandafter\def\csname simpleicon@tricentisicon\endcsname {\simpleiconsmap\symbol{"F55E}}
+ \expandafter\def\csname simpleicon@triliumicon\endcsname {\simpleiconsmap\symbol{"F55F}}
+ \expandafter\def\csname simpleicon@trillericon\endcsname {\simpleiconsmap\symbol{"F560}}
+ \expandafter\def\csname simpleicon@trillertvicon\endcsname {\simpleiconsmap\symbol{"F561}}
+ \expandafter\def\csname simpleicon@trimbleicon\endcsname {\simpleiconsmap\symbol{"F562}}
+ \expandafter\def\csname simpleicon@trinoicon\endcsname {\simpleiconsmap\symbol{"F563}}
+ \expandafter\def\csname simpleicon@tripdotcomicon\endcsname {\simpleiconsmap\symbol{"F564}}
+ \expandafter\def\csname simpleicon@tripadvisoricon\endcsname {\simpleiconsmap\symbol{"F565}}
+ \expandafter\def\csname simpleicon@trivagoicon\endcsname {\simpleiconsmap\symbol{"F566}}
+ \expandafter\def\csname simpleicon@trivyicon\endcsname {\simpleiconsmap\symbol{"F567}}
+ \expandafter\def\csname simpleicon@troveicon\endcsname {\simpleiconsmap\symbol{"F568}}
+ \expandafter\def\csname simpleicon@trpcicon\endcsname {\simpleiconsmap\symbol{"F569}}
+ \expandafter\def\csname simpleicon@truenasicon\endcsname {\simpleiconsmap\symbol{"F56A}}
+ \expandafter\def\csname simpleicon@trueupicon\endcsname {\simpleiconsmap\symbol{"F56B}}
+ \expandafter\def\csname simpleicon@truliaicon\endcsname {\simpleiconsmap\symbol{"F56C}}
+ \expandafter\def\csname simpleicon@trustedshopsicon\endcsname {\simpleiconsmap\symbol{"F56D}}
+ \expandafter\def\csname simpleicon@trustpiloticon\endcsname {\simpleiconsmap\symbol{"F56E}}
+ \expandafter\def\csname simpleicon@tryitonlineicon\endcsname {\simpleiconsmap\symbol{"F56F}}
+ \expandafter\def\csname simpleicon@tryhackmeicon\endcsname {\simpleiconsmap\symbol{"F570}}
+ \expandafter\def\csname simpleicon@tsnodeicon\endcsname {\simpleiconsmap\symbol{"F571}}
+ \expandafter\def\csname simpleicon@tubiicon\endcsname {\simpleiconsmap\symbol{"F572}}
+ \expandafter\def\csname simpleicon@tuiicon\endcsname {\simpleiconsmap\symbol{"F573}}
+ \expandafter\def\csname simpleicon@tumblricon\endcsname {\simpleiconsmap\symbol{"F574}}
+ \expandafter\def\csname simpleicon@tuneinicon\endcsname {\simpleiconsmap\symbol{"F575}}
+ \expandafter\def\csname simpleicon@turboicon\endcsname {\simpleiconsmap\symbol{"F576}}
+ \expandafter\def\csname simpleicon@turborepoicon\endcsname {\simpleiconsmap\symbol{"F577}}
+ \expandafter\def\csname simpleicon@turbosquidicon\endcsname {\simpleiconsmap\symbol{"F578}}
+ \expandafter\def\csname simpleicon@turkishairlinesicon\endcsname {\simpleiconsmap\symbol{"F579}}
+ \expandafter\def\csname simpleicon@tursoicon\endcsname {\simpleiconsmap\symbol{"F57A}}
+ \expandafter\def\csname simpleicon@tutaicon\endcsname {\simpleiconsmap\symbol{"F57B}}
+ \expandafter\def\csname simpleicon@tvtimeicon\endcsname {\simpleiconsmap\symbol{"F57C}}
+ \expandafter\def\csname simpleicon@tv4playicon\endcsname {\simpleiconsmap\symbol{"F57D}}
+ \expandafter\def\csname simpleicon@twilioicon\endcsname {\simpleiconsmap\symbol{"F57E}}
+ \expandafter\def\csname simpleicon@twinklyicon\endcsname {\simpleiconsmap\symbol{"F57F}}
+ \expandafter\def\csname simpleicon@twinmotionicon\endcsname {\simpleiconsmap\symbol{"F580}}
+ \expandafter\def\csname simpleicon@twitchicon\endcsname {\simpleiconsmap\symbol{"F581}}
+ \expandafter\def\csname simpleicon@typeformicon\endcsname {\simpleiconsmap\symbol{"F582}}
+ \expandafter\def\csname simpleicon@typeormicon\endcsname {\simpleiconsmap\symbol{"F583}}
+ \expandafter\def\csname simpleicon@typericon\endcsname {\simpleiconsmap\symbol{"F584}}
+ \expandafter\def\csname simpleicon@typescripticon\endcsname {\simpleiconsmap\symbol{"F585}}
+ \expandafter\def\csname simpleicon@typo3icon\endcsname {\simpleiconsmap\symbol{"F586}}
+ \expandafter\def\csname simpleicon@typsticon\endcsname {\simpleiconsmap\symbol{"F587}}
+ \expandafter\def\csname simpleicon@udotsdotnewsicon\endcsname {\simpleiconsmap\symbol{"F588}}
+ \expandafter\def\csname simpleicon@ubericon\endcsname {\simpleiconsmap\symbol{"F589}}
+ \expandafter\def\csname simpleicon@ubereatsicon\endcsname {\simpleiconsmap\symbol{"F58A}}
+ \expandafter\def\csname simpleicon@ubiquitiicon\endcsname {\simpleiconsmap\symbol{"F58B}}
+ \expandafter\def\csname simpleicon@ubisofticon\endcsname {\simpleiconsmap\symbol{"F58C}}
+ \expandafter\def\csname simpleicon@ublockoriginicon\endcsname {\simpleiconsmap\symbol{"F58D}}
+ \expandafter\def\csname simpleicon@ubuntuicon\endcsname {\simpleiconsmap\symbol{"F58E}}
+ \expandafter\def\csname simpleicon@ubuntumateicon\endcsname {\simpleiconsmap\symbol{"F58F}}
+ \expandafter\def\csname simpleicon@udacityicon\endcsname {\simpleiconsmap\symbol{"F590}}
+ \expandafter\def\csname simpleicon@udemyicon\endcsname {\simpleiconsmap\symbol{"F591}}
+ \expandafter\def\csname simpleicon@ufcicon\endcsname {\simpleiconsmap\symbol{"F592}}
+ \expandafter\def\csname simpleicon@uikiticon\endcsname {\simpleiconsmap\symbol{"F593}}
+ \expandafter\def\csname simpleicon@uipathicon\endcsname {\simpleiconsmap\symbol{"F594}}
+ \expandafter\def\csname simpleicon@ukcaicon\endcsname {\simpleiconsmap\symbol{"F595}}
+ \expandafter\def\csname simpleicon@ultralyticsicon\endcsname {\simpleiconsmap\symbol{"F596}}
+ \expandafter\def\csname simpleicon@ululeicon\endcsname {\simpleiconsmap\symbol{"F597}}
+ \expandafter\def\csname simpleicon@umamiicon\endcsname {\simpleiconsmap\symbol{"F598}}
+ \expandafter\def\csname simpleicon@umbracoicon\endcsname {\simpleiconsmap\symbol{"F599}}
+ \expandafter\def\csname simpleicon@umlicon\endcsname {\simpleiconsmap\symbol{"F59A}}
+ \expandafter\def\csname simpleicon@unacademyicon\endcsname {\simpleiconsmap\symbol{"F59B}}
+ \expandafter\def\csname simpleicon@underarmouricon\endcsname {\simpleiconsmap\symbol{"F59C}}
+ \expandafter\def\csname simpleicon@underscoredotjsicon\endcsname {\simpleiconsmap\symbol{"F59D}}
+ \expandafter\def\csname simpleicon@undertaleicon\endcsname {\simpleiconsmap\symbol{"F59E}}
+ \expandafter\def\csname simpleicon@unicodeicon\endcsname {\simpleiconsmap\symbol{"F59F}}
+ \expandafter\def\csname simpleicon@unilevericon\endcsname {\simpleiconsmap\symbol{"F5A0}}
+ \expandafter\def\csname simpleicon@uniqloicon\endcsname {\simpleiconsmap\symbol{"F5A1}}
+ \expandafter\def\csname simpleicon@uniqlojaicon\endcsname {\simpleiconsmap\symbol{"F5A2}}
+ \expandafter\def\csname simpleicon@unitedairlinesicon\endcsname {\simpleiconsmap\symbol{"F5A3}}
+ \expandafter\def\csname simpleicon@unitednationsicon\endcsname {\simpleiconsmap\symbol{"F5A4}}
+ \expandafter\def\csname simpleicon@unityicon\endcsname {\simpleiconsmap\symbol{"F5A5}}
+ \expandafter\def\csname simpleicon@unjsicon\endcsname {\simpleiconsmap\symbol{"F5A6}}
+ \expandafter\def\csname simpleicon@unlicenseicon\endcsname {\simpleiconsmap\symbol{"F5A7}}
+ \expandafter\def\csname simpleicon@unocssicon\endcsname {\simpleiconsmap\symbol{"F5A8}}
+ \expandafter\def\csname simpleicon@unpkgicon\endcsname {\simpleiconsmap\symbol{"F5A9}}
+ \expandafter\def\csname simpleicon@unraidicon\endcsname {\simpleiconsmap\symbol{"F5AA}}
+ \expandafter\def\csname simpleicon@unrealengineicon\endcsname {\simpleiconsmap\symbol{"F5AB}}
+ \expandafter\def\csname simpleicon@unsplashicon\endcsname {\simpleiconsmap\symbol{"F5AC}}
+ \expandafter\def\csname simpleicon@untappdicon\endcsname {\simpleiconsmap\symbol{"F5AD}}
+ \expandafter\def\csname simpleicon@upcloudicon\endcsname {\simpleiconsmap\symbol{"F5AE}}
+ \expandafter\def\csname simpleicon@upholdicon\endcsname {\simpleiconsmap\symbol{"F5AF}}
+ \expandafter\def\csname simpleicon@uplabsicon\endcsname {\simpleiconsmap\symbol{"F5B0}}
+ \expandafter\def\csname simpleicon@upptimeicon\endcsname {\simpleiconsmap\symbol{"F5B1}}
+ \expandafter\def\csname simpleicon@upsicon\endcsname {\simpleiconsmap\symbol{"F5B2}}
+ \expandafter\def\csname simpleicon@upstashicon\endcsname {\simpleiconsmap\symbol{"F5B3}}
+ \expandafter\def\csname simpleicon@uptimekumaicon\endcsname {\simpleiconsmap\symbol{"F5B4}}
+ \expandafter\def\csname simpleicon@upworkicon\endcsname {\simpleiconsmap\symbol{"F5B5}}
+ \expandafter\def\csname simpleicon@uspsicon\endcsname {\simpleiconsmap\symbol{"F5B6}}
+ \expandafter\def\csname simpleicon@utorrenticon\endcsname {\simpleiconsmap\symbol{"F5B7}}
+ \expandafter\def\csname simpleicon@uvicon\endcsname {\simpleiconsmap\symbol{"F5B8}}
+ \expandafter\def\csname simpleicon@vicon\endcsname {\simpleiconsmap\symbol{"F5B9}}
+ \expandafter\def\csname simpleicon@v0icon\endcsname {\simpleiconsmap\symbol{"F5BA}}
+ \expandafter\def\csname simpleicon@v2exicon\endcsname {\simpleiconsmap\symbol{"F5BB}}
+ \expandafter\def\csname simpleicon@v8icon\endcsname {\simpleiconsmap\symbol{"F5BC}}
+ \expandafter\def\csname simpleicon@vaadinicon\endcsname {\simpleiconsmap\symbol{"F5BD}}
+ \expandafter\def\csname simpleicon@vagranticon\endcsname {\simpleiconsmap\symbol{"F5BE}}
+ \expandafter\def\csname simpleicon@valaicon\endcsname {\simpleiconsmap\symbol{"F5BF}}
+ \expandafter\def\csname simpleicon@valoranticon\endcsname {\simpleiconsmap\symbol{"F5C0}}
+ \expandafter\def\csname simpleicon@valveicon\endcsname {\simpleiconsmap\symbol{"F5C1}}
+ \expandafter\def\csname simpleicon@vaporicon\endcsname {\simpleiconsmap\symbol{"F5C2}}
+ \expandafter\def\csname simpleicon@vaulticon\endcsname {\simpleiconsmap\symbol{"F5C3}}
+ \expandafter\def\csname simpleicon@vaultwardenicon\endcsname {\simpleiconsmap\symbol{"F5C4}}
+ \expandafter\def\csname simpleicon@vauxhallicon\endcsname {\simpleiconsmap\symbol{"F5C5}}
+ \expandafter\def\csname simpleicon@vbulletinicon\endcsname {\simpleiconsmap\symbol{"F5C6}}
+ \expandafter\def\csname simpleicon@vectaryicon\endcsname {\simpleiconsmap\symbol{"F5C7}}
+ \expandafter\def\csname simpleicon@vectorlogozoneicon\endcsname {\simpleiconsmap\symbol{"F5C8}}
+ \expandafter\def\csname simpleicon@vectorworksicon\endcsname {\simpleiconsmap\symbol{"F5C9}}
+ \expandafter\def\csname simpleicon@veeamicon\endcsname {\simpleiconsmap\symbol{"F5CA}}
+ \expandafter\def\csname simpleicon@veedicon\endcsname {\simpleiconsmap\symbol{"F5CB}}
+ \expandafter\def\csname simpleicon@veepeeicon\endcsname {\simpleiconsmap\symbol{"F5CC}}
+ \expandafter\def\csname simpleicon@vegaicon\endcsname {\simpleiconsmap\symbol{"F5CD}}
+ \expandafter\def\csname simpleicon@vegasicon\endcsname {\simpleiconsmap\symbol{"F5CE}}
+ \expandafter\def\csname simpleicon@velogicon\endcsname {\simpleiconsmap\symbol{"F5CF}}
+ \expandafter\def\csname simpleicon@vencordicon\endcsname {\simpleiconsmap\symbol{"F5D0}}
+ \expandafter\def\csname simpleicon@venmoicon\endcsname {\simpleiconsmap\symbol{"F5D1}}
+ \expandafter\def\csname simpleicon@vercelicon\endcsname {\simpleiconsmap\symbol{"F5D2}}
+ \expandafter\def\csname simpleicon@verdaccioicon\endcsname {\simpleiconsmap\symbol{"F5D3}}
+ \expandafter\def\csname simpleicon@veritasicon\endcsname {\simpleiconsmap\symbol{"F5D4}}
+ \expandafter\def\csname simpleicon@verizonicon\endcsname {\simpleiconsmap\symbol{"F5D5}}
+ \expandafter\def\csname simpleicon@vespaicon\endcsname {\simpleiconsmap\symbol{"F5D6}}
+ \expandafter\def\csname simpleicon@vestelicon\endcsname {\simpleiconsmap\symbol{"F5D7}}
+ \expandafter\def\csname simpleicon@vexxhosticon\endcsname {\simpleiconsmap\symbol{"F5D8}}
+ \expandafter\def\csname simpleicon@vfairsicon\endcsname {\simpleiconsmap\symbol{"F5D9}}
+ \expandafter\def\csname simpleicon@viadeoicon\endcsname {\simpleiconsmap\symbol{"F5DA}}
+ \expandafter\def\csname simpleicon@viaplayicon\endcsname {\simpleiconsmap\symbol{"F5DB}}
+ \expandafter\def\csname simpleicon@vibericon\endcsname {\simpleiconsmap\symbol{"F5DC}}
+ \expandafter\def\csname simpleicon@vibloicon\endcsname {\simpleiconsmap\symbol{"F5DD}}
+ \expandafter\def\csname simpleicon@victoriametricsicon\endcsname {\simpleiconsmap\symbol{"F5DE}}
+ \expandafter\def\csname simpleicon@victronenergyicon\endcsname {\simpleiconsmap\symbol{"F5DF}}
+ \expandafter\def\csname simpleicon@vimicon\endcsname {\simpleiconsmap\symbol{"F5E0}}
+ \expandafter\def\csname simpleicon@vimeoicon\endcsname {\simpleiconsmap\symbol{"F5E1}}
+ \expandafter\def\csname simpleicon@vimeolivestreamicon\endcsname {\simpleiconsmap\symbol{"F5E2}}
+ \expandafter\def\csname simpleicon@virginicon\endcsname {\simpleiconsmap\symbol{"F5E3}}
+ \expandafter\def\csname simpleicon@virginatlanticicon\endcsname {\simpleiconsmap\symbol{"F5E4}}
+ \expandafter\def\csname simpleicon@virginmediaicon\endcsname {\simpleiconsmap\symbol{"F5E5}}
+ \expandafter\def\csname simpleicon@virtualboxicon\endcsname {\simpleiconsmap\symbol{"F5E6}}
+ \expandafter\def\csname simpleicon@virustotalicon\endcsname {\simpleiconsmap\symbol{"F5E7}}
+ \expandafter\def\csname simpleicon@visaicon\endcsname {\simpleiconsmap\symbol{"F5E8}}
+ \expandafter\def\csname simpleicon@visxicon\endcsname {\simpleiconsmap\symbol{"F5E9}}
+ \expandafter\def\csname simpleicon@viteicon\endcsname {\simpleiconsmap\symbol{"F5EA}}
+ \expandafter\def\csname simpleicon@vitepressicon\endcsname {\simpleiconsmap\symbol{"F5EB}}
+ \expandafter\def\csname simpleicon@vitessicon\endcsname {\simpleiconsmap\symbol{"F5EC}}
+ \expandafter\def\csname simpleicon@vitesticon\endcsname {\simpleiconsmap\symbol{"F5ED}}
+ \expandafter\def\csname simpleicon@vivawalleticon\endcsname {\simpleiconsmap\symbol{"F5EE}}
+ \expandafter\def\csname simpleicon@vivaldiicon\endcsname {\simpleiconsmap\symbol{"F5EF}}
+ \expandafter\def\csname simpleicon@vivinoicon\endcsname {\simpleiconsmap\symbol{"F5F0}}
+ \expandafter\def\csname simpleicon@vivinticon\endcsname {\simpleiconsmap\symbol{"F5F1}}
+ \expandafter\def\csname simpleicon@vivoicon\endcsname {\simpleiconsmap\symbol{"F5F2}}
+ \expandafter\def\csname simpleicon@vkicon\endcsname {\simpleiconsmap\symbol{"F5F3}}
+ \expandafter\def\csname simpleicon@vlcmediaplayericon\endcsname {\simpleiconsmap\symbol{"F5F4}}
+ \expandafter\def\csname simpleicon@vmwareicon\endcsname {\simpleiconsmap\symbol{"F5F5}}
+ \expandafter\def\csname simpleicon@vodafoneicon\endcsname {\simpleiconsmap\symbol{"F5F6}}
+ \expandafter\def\csname simpleicon@voidlinuxicon\endcsname {\simpleiconsmap\symbol{"F5F7}}
+ \expandafter\def\csname simpleicon@voipdotmsicon\endcsname {\simpleiconsmap\symbol{"F5F8}}
+ \expandafter\def\csname simpleicon@volkswagenicon\endcsname {\simpleiconsmap\symbol{"F5F9}}
+ \expandafter\def\csname simpleicon@volvoicon\endcsname {\simpleiconsmap\symbol{"F5FA}}
+ \expandafter\def\csname simpleicon@vonageicon\endcsname {\simpleiconsmap\symbol{"F5FB}}
+ \expandafter\def\csname simpleicon@vorondesignicon\endcsname {\simpleiconsmap\symbol{"F5FC}}
+ \expandafter\def\csname simpleicon@vowpalwabbiticon\endcsname {\simpleiconsmap\symbol{"F5FD}}
+ \expandafter\def\csname simpleicon@voxicon\endcsname {\simpleiconsmap\symbol{"F5FE}}
+ \expandafter\def\csname simpleicon@vrchaticon\endcsname {\simpleiconsmap\symbol{"F5FF}}
+ \expandafter\def\csname simpleicon@vscoicon\endcsname {\simpleiconsmap\symbol{"F600}}
+ \expandafter\def\csname simpleicon@vscodiumicon\endcsname {\simpleiconsmap\symbol{"F601}}
+ \expandafter\def\csname simpleicon@vtexicon\endcsname {\simpleiconsmap\symbol{"F602}}
+ \expandafter\def\csname simpleicon@vuedotjsicon\endcsname {\simpleiconsmap\symbol{"F603}}
+ \expandafter\def\csname simpleicon@vuetifyicon\endcsname {\simpleiconsmap\symbol{"F604}}
+ \expandafter\def\csname simpleicon@vulkanicon\endcsname {\simpleiconsmap\symbol{"F605}}
+ \expandafter\def\csname simpleicon@vultricon\endcsname {\simpleiconsmap\symbol{"F606}}
+ \expandafter\def\csname simpleicon@vyondicon\endcsname {\simpleiconsmap\symbol{"F607}}
+ \expandafter\def\csname simpleicon@w3schoolsicon\endcsname {\simpleiconsmap\symbol{"F608}}
+ \expandafter\def\csname simpleicon@wacomicon\endcsname {\simpleiconsmap\symbol{"F609}}
+ \expandafter\def\csname simpleicon@wagmiicon\endcsname {\simpleiconsmap\symbol{"F60A}}
+ \expandafter\def\csname simpleicon@wagtailicon\endcsname {\simpleiconsmap\symbol{"F60B}}
+ \expandafter\def\csname simpleicon@wailsicon\endcsname {\simpleiconsmap\symbol{"F60C}}
+ \expandafter\def\csname simpleicon@wakatimeicon\endcsname {\simpleiconsmap\symbol{"F60D}}
+ \expandafter\def\csname simpleicon@walkmanicon\endcsname {\simpleiconsmap\symbol{"F60E}}
+ \expandafter\def\csname simpleicon@wallabagicon\endcsname {\simpleiconsmap\symbol{"F60F}}
+ \expandafter\def\csname simpleicon@walletconnecticon\endcsname {\simpleiconsmap\symbol{"F610}}
+ \expandafter\def\csname simpleicon@walmarticon\endcsname {\simpleiconsmap\symbol{"F611}}
+ \expandafter\def\csname simpleicon@wantedlyicon\endcsname {\simpleiconsmap\symbol{"F612}}
+ \expandafter\def\csname simpleicon@wappalyzericon\endcsname {\simpleiconsmap\symbol{"F613}}
+ \expandafter\def\csname simpleicon@warnerbrosicon\endcsname {\simpleiconsmap\symbol{"F614}}
+ \expandafter\def\csname simpleicon@warpicon\endcsname {\simpleiconsmap\symbol{"F615}}
+ \expandafter\def\csname simpleicon@wasabiicon\endcsname {\simpleiconsmap\symbol{"F616}}
+ \expandafter\def\csname simpleicon@wasmcloudicon\endcsname {\simpleiconsmap\symbol{"F617}}
+ \expandafter\def\csname simpleicon@wasmericon\endcsname {\simpleiconsmap\symbol{"F618}}
+ \expandafter\def\csname simpleicon@watchtowericon\endcsname {\simpleiconsmap\symbol{"F619}}
+ \expandafter\def\csname simpleicon@wattpadicon\endcsname {\simpleiconsmap\symbol{"F61A}}
+ \expandafter\def\csname simpleicon@waylandicon\endcsname {\simpleiconsmap\symbol{"F61B}}
+ \expandafter\def\csname simpleicon@wazeicon\endcsname {\simpleiconsmap\symbol{"F61C}}
+ \expandafter\def\csname simpleicon@wazirxicon\endcsname {\simpleiconsmap\symbol{"F61D}}
+ \expandafter\def\csname simpleicon@wearosicon\endcsname {\simpleiconsmap\symbol{"F61E}}
+ \expandafter\def\csname simpleicon@weasylicon\endcsname {\simpleiconsmap\symbol{"F61F}}
+ \expandafter\def\csname simpleicon@webdotdeicon\endcsname {\simpleiconsmap\symbol{"F620}}
+ \expandafter\def\csname simpleicon@web3dotjsicon\endcsname {\simpleiconsmap\symbol{"F621}}
+ \expandafter\def\csname simpleicon@webassemblyicon\endcsname {\simpleiconsmap\symbol{"F622}}
+ \expandafter\def\csname simpleicon@webauthnicon\endcsname {\simpleiconsmap\symbol{"F623}}
+ \expandafter\def\csname simpleicon@webcomponentsdotorgicon\endcsname {\simpleiconsmap\symbol{"F624}}
+ \expandafter\def\csname simpleicon@webdriverioicon\endcsname {\simpleiconsmap\symbol{"F625}}
+ \expandafter\def\csname simpleicon@webexicon\endcsname {\simpleiconsmap\symbol{"F626}}
+ \expandafter\def\csname simpleicon@webflowicon\endcsname {\simpleiconsmap\symbol{"F627}}
+ \expandafter\def\csname simpleicon@webglicon\endcsname {\simpleiconsmap\symbol{"F628}}
+ \expandafter\def\csname simpleicon@webgpuicon\endcsname {\simpleiconsmap\symbol{"F629}}
+ \expandafter\def\csname simpleicon@weblateicon\endcsname {\simpleiconsmap\symbol{"F62A}}
+ \expandafter\def\csname simpleicon@webminicon\endcsname {\simpleiconsmap\symbol{"F62B}}
+ \expandafter\def\csname simpleicon@webmoneyicon\endcsname {\simpleiconsmap\symbol{"F62C}}
+ \expandafter\def\csname simpleicon@webpackicon\endcsname {\simpleiconsmap\symbol{"F62D}}
+ \expandafter\def\csname simpleicon@webrtcicon\endcsname {\simpleiconsmap\symbol{"F62E}}
+ \expandafter\def\csname simpleicon@webstormicon\endcsname {\simpleiconsmap\symbol{"F62F}}
+ \expandafter\def\csname simpleicon@webtoonicon\endcsname {\simpleiconsmap\symbol{"F630}}
+ \expandafter\def\csname simpleicon@webtreesicon\endcsname {\simpleiconsmap\symbol{"F631}}
+ \expandafter\def\csname simpleicon@wechaticon\endcsname {\simpleiconsmap\symbol{"F632}}
+ \expandafter\def\csname simpleicon@wegameicon\endcsname {\simpleiconsmap\symbol{"F633}}
+ \expandafter\def\csname simpleicon@weightsandbiasesicon\endcsname {\simpleiconsmap\symbol{"F634}}
+ \expandafter\def\csname simpleicon@welcometothejungleicon\endcsname {\simpleiconsmap\symbol{"F635}}
+ \expandafter\def\csname simpleicon@wellfoundicon\endcsname {\simpleiconsmap\symbol{"F636}}
+ \expandafter\def\csname simpleicon@wellsfargoicon\endcsname {\simpleiconsmap\symbol{"F637}}
+ \expandafter\def\csname simpleicon@wemoicon\endcsname {\simpleiconsmap\symbol{"F638}}
+ \expandafter\def\csname simpleicon@westerndigitalicon\endcsname {\simpleiconsmap\symbol{"F639}}
+ \expandafter\def\csname simpleicon@westernunionicon\endcsname {\simpleiconsmap\symbol{"F63A}}
+ \expandafter\def\csname simpleicon@wetransfericon\endcsname {\simpleiconsmap\symbol{"F63B}}
+ \expandafter\def\csname simpleicon@weztermicon\endcsname {\simpleiconsmap\symbol{"F63C}}
+ \expandafter\def\csname simpleicon@wgpuicon\endcsname {\simpleiconsmap\symbol{"F63D}}
+ \expandafter\def\csname simpleicon@whatsappicon\endcsname {\simpleiconsmap\symbol{"F63E}}
+ \expandafter\def\csname simpleicon@wheniworkicon\endcsname {\simpleiconsmap\symbol{"F63F}}
+ \expandafter\def\csname simpleicon@wikidotggicon\endcsname {\simpleiconsmap\symbol{"F640}}
+ \expandafter\def\csname simpleicon@wikidotjsicon\endcsname {\simpleiconsmap\symbol{"F641}}
+ \expandafter\def\csname simpleicon@wikibooksicon\endcsname {\simpleiconsmap\symbol{"F642}}
+ \expandafter\def\csname simpleicon@wikidataicon\endcsname {\simpleiconsmap\symbol{"F643}}
+ \expandafter\def\csname simpleicon@wikimediacommonsicon\endcsname {\simpleiconsmap\symbol{"F644}}
+ \expandafter\def\csname simpleicon@wikimediafoundationicon\endcsname {\simpleiconsmap\symbol{"F645}}
+ \expandafter\def\csname simpleicon@wikipediaicon\endcsname {\simpleiconsmap\symbol{"F646}}
+ \expandafter\def\csname simpleicon@wikiquoteicon\endcsname {\simpleiconsmap\symbol{"F647}}
+ \expandafter\def\csname simpleicon@wikiversityicon\endcsname {\simpleiconsmap\symbol{"F648}}
+ \expandafter\def\csname simpleicon@wikivoyageicon\endcsname {\simpleiconsmap\symbol{"F649}}
+ \expandafter\def\csname simpleicon@winampicon\endcsname {\simpleiconsmap\symbol{"F64A}}
+ \expandafter\def\csname simpleicon@wineicon\endcsname {\simpleiconsmap\symbol{"F64B}}
+ \expandafter\def\csname simpleicon@wiproicon\endcsname {\simpleiconsmap\symbol{"F64C}}
+ \expandafter\def\csname simpleicon@wireicon\endcsname {\simpleiconsmap\symbol{"F64D}}
+ \expandafter\def\csname simpleicon@wireguardicon\endcsname {\simpleiconsmap\symbol{"F64E}}
+ \expandafter\def\csname simpleicon@wiresharkicon\endcsname {\simpleiconsmap\symbol{"F64F}}
+ \expandafter\def\csname simpleicon@wiseicon\endcsname {\simpleiconsmap\symbol{"F650}}
+ \expandafter\def\csname simpleicon@wishicon\endcsname {\simpleiconsmap\symbol{"F651}}
+ \expandafter\def\csname simpleicon@wistiaicon\endcsname {\simpleiconsmap\symbol{"F652}}
+ \expandafter\def\csname simpleicon@wixicon\endcsname {\simpleiconsmap\symbol{"F653}}
+ \expandafter\def\csname simpleicon@wizzairicon\endcsname {\simpleiconsmap\symbol{"F654}}
+ \expandafter\def\csname simpleicon@wolframicon\endcsname {\simpleiconsmap\symbol{"F655}}
+ \expandafter\def\csname simpleicon@wolframlanguageicon\endcsname {\simpleiconsmap\symbol{"F656}}
+ \expandafter\def\csname simpleicon@wolframmathematicaicon\endcsname {\simpleiconsmap\symbol{"F657}}
+ \expandafter\def\csname simpleicon@wondershareicon\endcsname {\simpleiconsmap\symbol{"F658}}
+ \expandafter\def\csname simpleicon@wondersharefilmoraicon\endcsname {\simpleiconsmap\symbol{"F659}}
+ \expandafter\def\csname simpleicon@wooicon\endcsname {\simpleiconsmap\symbol{"F65A}}
+ \expandafter\def\csname simpleicon@woocommerceicon\endcsname {\simpleiconsmap\symbol{"F65B}}
+ \expandafter\def\csname simpleicon@wordpressicon\endcsname {\simpleiconsmap\symbol{"F65C}}
+ \expandafter\def\csname simpleicon@workplaceicon\endcsname {\simpleiconsmap\symbol{"F65D}}
+ \expandafter\def\csname simpleicon@worldhealthorganizationicon\endcsname {\simpleiconsmap\symbol{"F65E}}
+ \expandafter\def\csname simpleicon@wpengineicon\endcsname {\simpleiconsmap\symbol{"F65F}}
+ \expandafter\def\csname simpleicon@wprocketicon\endcsname {\simpleiconsmap\symbol{"F660}}
+ \expandafter\def\csname simpleicon@wpexplorericon\endcsname {\simpleiconsmap\symbol{"F661}}
+ \expandafter\def\csname simpleicon@writedotasicon\endcsname {\simpleiconsmap\symbol{"F662}}
+ \expandafter\def\csname simpleicon@wweicon\endcsname {\simpleiconsmap\symbol{"F663}}
+ \expandafter\def\csname simpleicon@wwiseicon\endcsname {\simpleiconsmap\symbol{"F664}}
+ \expandafter\def\csname simpleicon@wxticon\endcsname {\simpleiconsmap\symbol{"F665}}
+ \expandafter\def\csname simpleicon@wykopicon\endcsname {\simpleiconsmap\symbol{"F666}}
+ \expandafter\def\csname simpleicon@wyzeicon\endcsname {\simpleiconsmap\symbol{"F667}}
+ \expandafter\def\csname simpleicon@xicon\endcsname {\simpleiconsmap\symbol{"F668}}
+ \expandafter\def\csname simpleicon@xdotorgicon\endcsname {\simpleiconsmap\symbol{"F669}}
+ \expandafter\def\csname simpleicon@xamppicon\endcsname {\simpleiconsmap\symbol{"F66A}}
+ \expandafter\def\csname simpleicon@xcodeicon\endcsname {\simpleiconsmap\symbol{"F66B}}
+ \expandafter\def\csname simpleicon@xdadevelopersicon\endcsname {\simpleiconsmap\symbol{"F66C}}
+ \expandafter\def\csname simpleicon@xenditicon\endcsname {\simpleiconsmap\symbol{"F66D}}
+ \expandafter\def\csname simpleicon@xeroicon\endcsname {\simpleiconsmap\symbol{"F66E}}
+ \expandafter\def\csname simpleicon@xfceicon\endcsname {\simpleiconsmap\symbol{"F66F}}
+ \expandafter\def\csname simpleicon@xiaohongshuicon\endcsname {\simpleiconsmap\symbol{"F670}}
+ \expandafter\def\csname simpleicon@xiaomiicon\endcsname {\simpleiconsmap\symbol{"F671}}
+ \expandafter\def\csname simpleicon@xingicon\endcsname {\simpleiconsmap\symbol{"F672}}
+ \expandafter\def\csname simpleicon@xmlicon\endcsname {\simpleiconsmap\symbol{"F673}}
+ \expandafter\def\csname simpleicon@xmppicon\endcsname {\simpleiconsmap\symbol{"F674}}
+ \expandafter\def\csname simpleicon@xoicon\endcsname {\simpleiconsmap\symbol{"F675}}
+ \expandafter\def\csname simpleicon@xrpicon\endcsname {\simpleiconsmap\symbol{"F676}}
+ \expandafter\def\csname simpleicon@xspliticon\endcsname {\simpleiconsmap\symbol{"F677}}
+ \expandafter\def\csname simpleicon@xstateicon\endcsname {\simpleiconsmap\symbol{"F678}}
+ \expandafter\def\csname simpleicon@xubuntuicon\endcsname {\simpleiconsmap\symbol{"F679}}
+ \expandafter\def\csname simpleicon@ycombinatoricon\endcsname {\simpleiconsmap\symbol{"F67A}}
+ \expandafter\def\csname simpleicon@yabaiicon\endcsname {\simpleiconsmap\symbol{"F67B}}
+ \expandafter\def\csname simpleicon@yaleicon\endcsname {\simpleiconsmap\symbol{"F67C}}
+ \expandafter\def\csname simpleicon@yamahacorporationicon\endcsname {\simpleiconsmap\symbol{"F67D}}
+ \expandafter\def\csname simpleicon@yamahamotorcorporationicon\endcsname {\simpleiconsmap\symbol{"F67E}}
+ \expandafter\def\csname simpleicon@yamlicon\endcsname {\simpleiconsmap\symbol{"F67F}}
+ \expandafter\def\csname simpleicon@yandexcloudicon\endcsname {\simpleiconsmap\symbol{"F680}}
+ \expandafter\def\csname simpleicon@yarnicon\endcsname {\simpleiconsmap\symbol{"F681}}
+ \expandafter\def\csname simpleicon@yelpicon\endcsname {\simpleiconsmap\symbol{"F682}}
+ \expandafter\def\csname simpleicon@yetiicon\endcsname {\simpleiconsmap\symbol{"F683}}
+ \expandafter\def\csname simpleicon@yiiicon\endcsname {\simpleiconsmap\symbol{"F684}}
+ \expandafter\def\csname simpleicon@yoasticon\endcsname {\simpleiconsmap\symbol{"F685}}
+ \expandafter\def\csname simpleicon@youhodlericon\endcsname {\simpleiconsmap\symbol{"F686}}
+ \expandafter\def\csname simpleicon@youtubeicon\endcsname {\simpleiconsmap\symbol{"F687}}
+ \expandafter\def\csname simpleicon@youtubegamingicon\endcsname {\simpleiconsmap\symbol{"F688}}
+ \expandafter\def\csname simpleicon@youtubekidsicon\endcsname {\simpleiconsmap\symbol{"F689}}
+ \expandafter\def\csname simpleicon@youtubemusicicon\endcsname {\simpleiconsmap\symbol{"F68A}}
+ \expandafter\def\csname simpleicon@youtubeshortsicon\endcsname {\simpleiconsmap\symbol{"F68B}}
+ \expandafter\def\csname simpleicon@youtubestudioicon\endcsname {\simpleiconsmap\symbol{"F68C}}
+ \expandafter\def\csname simpleicon@youtubetvicon\endcsname {\simpleiconsmap\symbol{"F68D}}
+ \expandafter\def\csname simpleicon@yricon\endcsname {\simpleiconsmap\symbol{"F68E}}
+ \expandafter\def\csname simpleicon@yubicoicon\endcsname {\simpleiconsmap\symbol{"F68F}}
+ \expandafter\def\csname simpleicon@yunohosticon\endcsname {\simpleiconsmap\symbol{"F690}}
+ \expandafter\def\csname simpleicon@zabkaicon\endcsname {\simpleiconsmap\symbol{"F691}}
+ \expandafter\def\csname simpleicon@zaimicon\endcsname {\simpleiconsmap\symbol{"F692}}
+ \expandafter\def\csname simpleicon@zalandoicon\endcsname {\simpleiconsmap\symbol{"F693}}
+ \expandafter\def\csname simpleicon@zaloicon\endcsname {\simpleiconsmap\symbol{"F694}}
+ \expandafter\def\csname simpleicon@zapicon\endcsname {\simpleiconsmap\symbol{"F695}}
+ \expandafter\def\csname simpleicon@zapiericon\endcsname {\simpleiconsmap\symbol{"F696}}
+ \expandafter\def\csname simpleicon@zaraicon\endcsname {\simpleiconsmap\symbol{"F697}}
+ \expandafter\def\csname simpleicon@zazzleicon\endcsname {\simpleiconsmap\symbol{"F698}}
+ \expandafter\def\csname simpleicon@zcashicon\endcsname {\simpleiconsmap\symbol{"F699}}
+ \expandafter\def\csname simpleicon@zcoolicon\endcsname {\simpleiconsmap\symbol{"F69A}}
+ \expandafter\def\csname simpleicon@zdficon\endcsname {\simpleiconsmap\symbol{"F69B}}
+ \expandafter\def\csname simpleicon@zebpayicon\endcsname {\simpleiconsmap\symbol{"F69C}}
+ \expandafter\def\csname simpleicon@zebratechnologiesicon\endcsname {\simpleiconsmap\symbol{"F69D}}
+ \expandafter\def\csname simpleicon@zedindustriesicon\endcsname {\simpleiconsmap\symbol{"F69E}}
+ \expandafter\def\csname simpleicon@zelleicon\endcsname {\simpleiconsmap\symbol{"F69F}}
+ \expandafter\def\csname simpleicon@zendicon\endcsname {\simpleiconsmap\symbol{"F6A0}}
+ \expandafter\def\csname simpleicon@zendeskicon\endcsname {\simpleiconsmap\symbol{"F6A1}}
+ \expandafter\def\csname simpleicon@zennicon\endcsname {\simpleiconsmap\symbol{"F6A2}}
+ \expandafter\def\csname simpleicon@zenodoicon\endcsname {\simpleiconsmap\symbol{"F6A3}}
+ \expandafter\def\csname simpleicon@zensaricon\endcsname {\simpleiconsmap\symbol{"F6A4}}
+ \expandafter\def\csname simpleicon@zerodhaicon\endcsname {\simpleiconsmap\symbol{"F6A5}}
+ \expandafter\def\csname simpleicon@zerotiericon\endcsname {\simpleiconsmap\symbol{"F6A6}}
+ \expandafter\def\csname simpleicon@zettlricon\endcsname {\simpleiconsmap\symbol{"F6A7}}
+ \expandafter\def\csname simpleicon@zhihuicon\endcsname {\simpleiconsmap\symbol{"F6A8}}
+ \expandafter\def\csname simpleicon@zigicon\endcsname {\simpleiconsmap\symbol{"F6A9}}
+ \expandafter\def\csname simpleicon@zigbeeicon\endcsname {\simpleiconsmap\symbol{"F6AA}}
+ \expandafter\def\csname simpleicon@zigbee2mqtticon\endcsname {\simpleiconsmap\symbol{"F6AB}}
+ \expandafter\def\csname simpleicon@ziggoicon\endcsname {\simpleiconsmap\symbol{"F6AC}}
+ \expandafter\def\csname simpleicon@zilchicon\endcsname {\simpleiconsmap\symbol{"F6AD}}
+ \expandafter\def\csname simpleicon@zillowicon\endcsname {\simpleiconsmap\symbol{"F6AE}}
+ \expandafter\def\csname simpleicon@zincsearchicon\endcsname {\simpleiconsmap\symbol{"F6AF}}
+ \expandafter\def\csname simpleicon@zingaticon\endcsname {\simpleiconsmap\symbol{"F6B0}}
+ \expandafter\def\csname simpleicon@zodicon\endcsname {\simpleiconsmap\symbol{"F6B1}}
+ \expandafter\def\csname simpleicon@zohoicon\endcsname {\simpleiconsmap\symbol{"F6B2}}
+ \expandafter\def\csname simpleicon@zoipericon\endcsname {\simpleiconsmap\symbol{"F6B3}}
+ \expandafter\def\csname simpleicon@zomatoicon\endcsname {\simpleiconsmap\symbol{"F6B4}}
+ \expandafter\def\csname simpleicon@zoomicon\endcsname {\simpleiconsmap\symbol{"F6B5}}
+ \expandafter\def\csname simpleicon@zorinicon\endcsname {\simpleiconsmap\symbol{"F6B6}}
+ \expandafter\def\csname simpleicon@zoteroicon\endcsname {\simpleiconsmap\symbol{"F6B7}}
+ \expandafter\def\csname simpleicon@zshicon\endcsname {\simpleiconsmap\symbol{"F6B8}}
+ \expandafter\def\csname simpleicon@zulipicon\endcsname {\simpleiconsmap\symbol{"F6B9}}
+ \expandafter\def\csname simpleicon@zyteicon\endcsname {\simpleiconsmap\symbol{"F6BA}} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconseight.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconseight.fd
index 856175e37f2..d45c690ec0a 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconseight.fd
+++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconseight.fd
@@ -1,5 +1,5 @@
- \ProvidesFile{usimpleiconseight.fd}[2024/09/06 Font definitions for U/simpleiconseight.]
+ \ProvidesFile{usimpleiconseight.fd}[2025/01/24 Font definitions for U/simpleiconseight.]
\DeclareFontFamily{U}{simpleiconseight}{}
\DeclareFontShape{U}{simpleiconseight}{m}{n}{<-> SimpleIcons--simpleiconseight}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfive.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfive.fd
index cda9e560ba6..f1869c4ac04 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfive.fd
+++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfive.fd
@@ -1,5 +1,5 @@
- \ProvidesFile{usimpleiconsfive.fd}[2024/09/06 Font definitions for U/simpleiconsfive.]
+ \ProvidesFile{usimpleiconsfive.fd}[2025/01/24 Font definitions for U/simpleiconsfive.]
\DeclareFontFamily{U}{simpleiconsfive}{}
\DeclareFontShape{U}{simpleiconsfive}{m}{n}{<-> SimpleIcons--simpleiconsfive}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfour.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfour.fd
index 82bd9ca6dbe..adc0f9470b3 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfour.fd
+++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfour.fd
@@ -1,5 +1,5 @@
- \ProvidesFile{usimpleiconsfour.fd}[2024/09/06 Font definitions for U/simpleiconsfour.]
+ \ProvidesFile{usimpleiconsfour.fd}[2025/01/24 Font definitions for U/simpleiconsfour.]
\DeclareFontFamily{U}{simpleiconsfour}{}
\DeclareFontShape{U}{simpleiconsfour}{m}{n}{<-> SimpleIcons--simpleiconsfour}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsnine.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsnine.fd
index 0e3b1c375eb..15a350a2f47 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsnine.fd
+++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsnine.fd
@@ -1,5 +1,5 @@
- \ProvidesFile{usimpleiconsnine.fd}[2024/09/06 Font definitions for U/simpleiconsnine.]
+ \ProvidesFile{usimpleiconsnine.fd}[2025/01/24 Font definitions for U/simpleiconsnine.]
\DeclareFontFamily{U}{simpleiconsnine}{}
\DeclareFontShape{U}{simpleiconsnine}{m}{n}{<-> SimpleIcons--simpleiconsnine}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsone.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsone.fd
index 62ff3e5c637..193a9a2bddb 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsone.fd
+++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsone.fd
@@ -1,5 +1,5 @@
- \ProvidesFile{usimpleiconsone.fd}[2024/09/06 Font definitions for U/simpleiconsone.]
+ \ProvidesFile{usimpleiconsone.fd}[2025/01/24 Font definitions for U/simpleiconsone.]
\DeclareFontFamily{U}{simpleiconsone}{}
\DeclareFontShape{U}{simpleiconsone}{m}{n}{<-> SimpleIcons--simpleiconsone}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsoneone.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsoneone.fd
index fffc7318b15..240d886f31d 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsoneone.fd
+++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsoneone.fd
@@ -1,5 +1,5 @@
- \ProvidesFile{usimpleiconsoneone.fd}[2024/09/06 Font definitions for U/simpleiconsoneone.]
+ \ProvidesFile{usimpleiconsoneone.fd}[2025/01/24 Font definitions for U/simpleiconsoneone.]
\DeclareFontFamily{U}{simpleiconsoneone}{}
\DeclareFontShape{U}{simpleiconsoneone}{m}{n}{<-> SimpleIcons--simpleiconsoneone}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonethree.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonethree.fd
index 6ebfec5935c..beb5bb25e9a 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonethree.fd
+++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonethree.fd
@@ -1,5 +1,5 @@
- \ProvidesFile{usimpleiconsonethree.fd}[2024/09/06 Font definitions for U/simpleiconsonethree.]
+ \ProvidesFile{usimpleiconsonethree.fd}[2025/01/24 Font definitions for U/simpleiconsonethree.]
\DeclareFontFamily{U}{simpleiconsonethree}{}
\DeclareFontShape{U}{simpleiconsonethree}{m}{n}{<-> SimpleIcons--simpleiconsonethree}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonetwo.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonetwo.fd
index 15383e70271..2421caa5bb5 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonetwo.fd
+++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonetwo.fd
@@ -1,5 +1,5 @@
- \ProvidesFile{usimpleiconsonetwo.fd}[2024/09/06 Font definitions for U/simpleiconsonetwo.]
+ \ProvidesFile{usimpleiconsonetwo.fd}[2025/01/24 Font definitions for U/simpleiconsonetwo.]
\DeclareFontFamily{U}{simpleiconsonetwo}{}
\DeclareFontShape{U}{simpleiconsonetwo}{m}{n}{<-> SimpleIcons--simpleiconsonetwo}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonezero.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonezero.fd
index 55afcfd5317..050d2af9308 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonezero.fd
+++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonezero.fd
@@ -1,5 +1,5 @@
- \ProvidesFile{usimpleiconsonezero.fd}[2024/09/06 Font definitions for U/simpleiconsonezero.]
+ \ProvidesFile{usimpleiconsonezero.fd}[2025/01/24 Font definitions for U/simpleiconsonezero.]
\DeclareFontFamily{U}{simpleiconsonezero}{}
\DeclareFontShape{U}{simpleiconsonezero}{m}{n}{<-> SimpleIcons--simpleiconsonezero}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsseven.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsseven.fd
index ab2fee0b659..13a82f723ad 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsseven.fd
+++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsseven.fd
@@ -1,5 +1,5 @@
- \ProvidesFile{usimpleiconsseven.fd}[2024/09/06 Font definitions for U/simpleiconsseven.]
+ \ProvidesFile{usimpleiconsseven.fd}[2025/01/24 Font definitions for U/simpleiconsseven.]
\DeclareFontFamily{U}{simpleiconsseven}{}
\DeclareFontShape{U}{simpleiconsseven}{m}{n}{<-> SimpleIcons--simpleiconsseven}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconssix.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconssix.fd
index fd94f829969..d641e287ff3 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconssix.fd
+++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconssix.fd
@@ -1,5 +1,5 @@
- \ProvidesFile{usimpleiconssix.fd}[2024/09/06 Font definitions for U/simpleiconssix.]
+ \ProvidesFile{usimpleiconssix.fd}[2025/01/24 Font definitions for U/simpleiconssix.]
\DeclareFontFamily{U}{simpleiconssix}{}
\DeclareFontShape{U}{simpleiconssix}{m}{n}{<-> SimpleIcons--simpleiconssix}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsthree.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsthree.fd
index b2f34339d2a..d598dece91e 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsthree.fd
+++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsthree.fd
@@ -1,5 +1,5 @@
- \ProvidesFile{usimpleiconsthree.fd}[2024/09/06 Font definitions for U/simpleiconsthree.]
+ \ProvidesFile{usimpleiconsthree.fd}[2025/01/24 Font definitions for U/simpleiconsthree.]
\DeclareFontFamily{U}{simpleiconsthree}{}
\DeclareFontShape{U}{simpleiconsthree}{m}{n}{<-> SimpleIcons--simpleiconsthree}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconstwo.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconstwo.fd
index 93cd6dcf182..be8cfdb429a 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconstwo.fd
+++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconstwo.fd
@@ -1,5 +1,5 @@
- \ProvidesFile{usimpleiconstwo.fd}[2024/09/06 Font definitions for U/simpleiconstwo.]
+ \ProvidesFile{usimpleiconstwo.fd}[2025/01/24 Font definitions for U/simpleiconstwo.]
\DeclareFontFamily{U}{simpleiconstwo}{}
\DeclareFontShape{U}{simpleiconstwo}{m}{n}{<-> SimpleIcons--simpleiconstwo}{}
\endinput
diff --git a/Master/texmf-dist/tex/latex/siunitx/siunitx.sty b/Master/texmf-dist/tex/latex/siunitx/siunitx.sty
index 1c97adf20a1..7a3c04b4d1e 100644
--- a/Master/texmf-dist/tex/latex/siunitx/siunitx.sty
+++ b/Master/texmf-dist/tex/latex/siunitx/siunitx.sty
@@ -23,14 +23,20 @@
%% siunitx.dtx (with options: `package,interfaces')
%% siunitx-emulation.dtx (with options: `package,interfaces')
%%
-\providecommand\DeclareRelease[3]{}
-\providecommand\DeclareCurrentRelease[2]{}
+\providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion }
+\IfFormatAtLeastTF { 2022-11-01 }
+ { }
+ {%
+ \PackageError{siunitx}{LaTeX kernel too old}
+ {%
+ You need a newer LaTeX to use this release of siunitx.\MessageBreak
+ Loading~siunitx~will~abort!%
+ }%
+ \endinput
+ }
\DeclareRelease{2}{2010-05-23}{siunitx-v2.sty}
\DeclareRelease{v2}{2010-05-23}{siunitx-v2.sty}
\DeclareCurrentRelease{}{2021-05-17}
-\@ifundefined{ExplLoaderFileDate}
- {\RequirePackage{expl3}}
- {}
\@ifl@t@r\ExplLoaderFileDate{2022-11-09}
{}
{%
@@ -41,7 +47,7 @@
}%
\endinput
}%
-\ProvidesExplPackage {siunitx} {2024-08-20} {3.3.21}
+\ProvidesExplPackage {siunitx} {2025-01-21} {3.4.4}
{A comprehensive (SI) units package}
\msg_new:nnnn { siunitx } { incompatible-package }
{ Package~'#1'~incompatible. }
@@ -60,7 +66,6 @@
\clist_map_function:nN { SIunits , sistyle , units }
\__siunitx_load_check:n
}
-\providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion }
\tl_new:N \l__siunitx_tmp_tl
\cs_generate_variant:Nn \keys_set:nn { nx }
\cs_generate_variant:Nn \tl_if_blank:nTF { e }
@@ -165,19 +170,24 @@
\tl_replace_all:Nnn #1 {#2} {#3}
\__siunitx_number_normalize_aux:NnN #1
}
-\tl_const:Nn \c__siunitx_number_normalize_tl
- {
- { -+ } \mp
- { +- } \pm
- { << } \ll
- { <= } \le
- { >> } \gg
- { >= } \ge
- }
+\group_begin:
+ \char_set_catcode_other:N \~
+ \tl_const:Nn \c__siunitx_number_normalize_tl
+ {
+ { -+ } \mp
+ { +- } \pm
+ { << } \ll
+ { <= } \le
+ { >> } \gg
+ { >= } \ge
+ { ~ } \sim
+ }
+\group_end:
\group_begin:
\char_set_catcode_active:N \-
\char_set_catcode_active:N \<
\char_set_catcode_active:N \>
+ \char_set_catcode_active:N \~
\cs_new_protected:Npx \__siunitx_number_normalize_actives:N #1
{
\tl_replace_all:Nnn #1
@@ -186,6 +196,8 @@
{ \exp_not:N < } { \token_to_str:N < }
\tl_replace_all:Nnn #1
{ \exp_not:N > } { \token_to_str:N > }
+ \tl_replace_all:Nnn #1
+ { \exp_not:N ~ } { \token_to_str:N ~ }
}
\group_end:
\cs_new_protected:Npn \siunitx_number_parse:nN #1#2
@@ -216,6 +228,8 @@
\siunitx_number_normalize_symbols:N \l__siunitx_number_arg_tl
\tl_map_inline:Nn \l__siunitx_number_input_ignore_tl
{ \tl_remove_all:Nn \l__siunitx_number_arg_tl {##1} }
+ \protected@edef \l__siunitx_number_input_digit_tl
+ { \l__siunitx_number_input_digit_tl }
\tl_if_empty:NF \l__siunitx_number_arg_tl
{
\__siunitx_number_parse_comparator:
@@ -958,6 +972,14 @@
}
\cs_new_protected:Npn \__siunitx_number_set_threshold:nn #1#2
{ \int_set:cn { l__siunitx_number_ #1 _threshold_int } { 0 #2 } }
+\prg_new_conditional:Npnn \__siunitx_number_if_threshold_exceeded:n #1 { T , F , TF , p }
+ {
+ \bool_lazy_and:nnTF
+ { \int_compare_p:nNn {#1} > \l__siunitx_number_lower_threshold_int }
+ { \int_compare_p:nNn {#1} < \l__siunitx_number_upper_threshold_int }
+ \prg_return_true:
+ \prg_return_false:
+ }
\cs_new_protected:Npn \siunitx_number_process:NN #1#2
{
\tl_if_empty:NTF #1
@@ -1257,9 +1279,7 @@
\cs_generate_variant:Nn \__siunitx_number_exponent_threshold:n { e }
\cs_new:Npn \__siunitx_number_exponent_threshold_aux:nnnnnnn #1#2#3#4#5#6#7
{
- \bool_lazy_and:nnTF
- { \int_compare_p:nNn {#6#7} > \l__siunitx_number_lower_threshold_int }
- { \int_compare_p:nNn {#6#7} < \l__siunitx_number_upper_threshold_int }
+ \__siunitx_number_if_threshold_exceeded:nTF {#6#7}
{
\exp_not:n { {#1} {#2} }
\__siunitx_number_exponent_shift:nnn { -#6#7 } {#3} {#4}
@@ -1377,8 +1397,14 @@
}
{
\str_if_eq:nnTF {#4} { \empty }
- { \use:c { __siunitx_number_round_ \l__siunitx_number_round_mode_tl :nnnnnnn } {#1} {#2} {#3} { } }
- { \use:c { __siunitx_number_round_ \l__siunitx_number_round_mode_tl :nnnnnnn } {#1} {#2} {#3} {#4} }
+ {
+ \use:c { __siunitx_number_round_ \l__siunitx_number_round_mode_tl :nnnnnnn }
+ {#1} {#2} {#3} { }
+ }
+ {
+ \use:c { __siunitx_number_round_ \l__siunitx_number_round_mode_tl :nnnnnnn }
+ {#1} {#2} {#3} {#4}
+ }
{#5} {#6} {#7}
}
}
@@ -1656,6 +1682,13 @@
}
\__siunitx_number_round_final_shift:Nw 1
}
+\cs_new:Npn \__siunitx_number_round_threshold:nn #1#2
+ {
+ \__siunitx_number_if_threshold_exceeded:nTF {#1}
+ { \__siunitx_number_round_input:nn }
+ { \__siunitx_number_round_scientific:nn }
+ {#1} {#2}
+ }
\cs_new:Npn \__siunitx_number_round_final_shift:Nw #1#2 \__siunitx_number_round_end:nnn #3#4#5
{
\exp_not:n { {#3} }
@@ -1963,17 +1996,7 @@
{
\bool_lazy_and_p:nn
{ \str_if_eq_p:Vn \l__siunitx_number_exponent_mode_tl { threshold } }
- {
- ! \bool_lazy_or_p:nn
- {
- \int_compare_p:nNn {#5#6} >
- \l__siunitx_number_lower_threshold_int
- }
- {
- \int_compare_p:nNn {#5#6} <
- \l__siunitx_number_upper_threshold_int
- }
- }
+ { ! \__siunitx_number_if_threshold_exceeded_p:n {#5#6} }
}
}
{
@@ -2028,9 +2051,7 @@
}
\cs_new:Npn \__siunitx_number_round_uncertainty_threshold:nnn #1#2#3
{
- \bool_lazy_and:nnTF
- { \int_compare_p:nNn {#2#3} > \l__siunitx_number_lower_threshold_int }
- { \int_compare_p:nNn {#2#3} < \l__siunitx_number_upper_threshold_int }
+ \__siunitx_number_if_threshold_exceeded:nTF {#2#3}
{ \__siunitx_number_round_uncertainty_input:nnn }
{ \__siunitx_number_round_uncertainty_scientific:nnn }
{#1} {#2} {#3}
@@ -2046,9 +2067,13 @@
\cs_new:Npn \__siunitx_number_zero_decimal:nnnnnnn #1#2#3#4#5#6#7
{
\exp_not:n { {#1} {#2} {#3} }
- \str_if_eq:eeTF
- { \exp_not:n {#4} }
- { \prg_replicate:nn { \tl_count:n {#4} } { 0 } }
+ \bool_lazy_and:nnTF
+ { \tl_if_empty_p:n {#5} }
+ {
+ \str_if_eq_p:ee
+ { \exp_not:n {#4} }
+ { \prg_replicate:nn { \tl_count:n {#4} } { 0 } }
+ }
{ { } }
{ \exp_not:n { {#4} } }
\exp_not:n { {#5} {#6} {#7} }
@@ -2083,6 +2108,8 @@
\tl_new:N \l_siunitx_number_output_decimal_tl
\keys_define:nn { siunitx }
{
+ allow-uncertainty-breaks .bool_set:N =
+ \l__siunitx_number_uncert_break_bool ,
bracket-ambiguous-numbers .bool_set:N =
\l_siunitx_number_bracket_ambiguous_bool ,
bracket-negative-numbers .bool_set:N =
@@ -2152,6 +2179,8 @@
\l__siunitx_number_zero_exponent_bool ,
print-zero-integer .bool_set:N =
\l__siunitx_number_zero_integer_bool ,
+ simplify-uncertainty .bool_set:N =
+ \l__siunitx_number_uncert_simplify_bool ,
tight-spacing .bool_set:N =
\l__siunitx_number_tight_bool ,
uncertainty-descriptor-mode .choices:nn =
@@ -2516,14 +2545,16 @@
}
\cs_new:Npn \__siunitx_number_output_uncert:nnnnn #1#2#3#4#5
{
- \__siunitx_number_output_uncert_loop:nnN {#2} {#3}
+ \__siunitx_number_output_uncert_first:nnN {#2} {#3}
#4 \q_recursion_tail #1 , \q_recursion_stop {#5}
}
\cs_generate_variant:Nn \__siunitx_number_output_uncert:nnnnn { V }
+\cs_new:Npn \__siunitx_number_output_uncert_first:nnN #1#2#3
+ { \__siunitx_number_output_uncert_loop:nnNw {#1} {#2} #3 }
\cs_new:Npn \__siunitx_number_output_uncert_loop:nnN #1#2#3
{
\quark_if_recursion_tail_stop:N #3
- \__siunitx_number_output_uncert_loop:nnNw {#1} {#2} #3
+ \__siunitx_number_output_uncert_loop:nnNw {#1} { } #3
}
\cs_new:Npn \__siunitx_number_output_uncert_loop:nnNw
#1#2#3#4 \q_recursion_tail #5 , #6 \q_recursion_stop #7
@@ -2579,20 +2610,28 @@
{ \__siunitx_number_output_uncert_A:nnnnn {#1} {#2} {#3} #4 }
\cs_new_eq:NN \__siunitx_number_output_uncert_A_multi:nnnn
\__siunitx_number_output_uncert_A:nnnn
-\cs_new:Npx \__siunitx_number_output_uncert_A:nnnnn #1#2#3#4#5
+\cs_new:Npn \__siunitx_number_output_uncert_A:nnnnn #1#2#3#4#5
+ {
+ \bool_lazy_and:nnTF
+ { \l__siunitx_number_uncert_simplify_bool }
+ { \str_if_eq_p:nn {#4} {#5} }
+ { \__siunitx_number_output_uncert_S_sep:nnnn {#1} {#2} { } {#4} }
+ { \__siunitx_number_output_uncert_A_aux:nnnn {#1} {#2} {#4} {#5} }
+ }
+\cs_new:Npx \__siunitx_number_output_uncert_A_aux:nnnn #1#2#3#4
{
{ }
^
{
+
\exp_not:N \__siunitx_number_output_uncert_augment:nnnn
- {#4} {#1} {#4} { }
+ {#3} {#1} {#3} { }
}
\char_generate:nn { `\_ } { 8 }
{
-
\exp_not:N \__siunitx_number_output_uncert_augment:nnnn
- {#5} {#1} {#5} { }
+ {#4} {#1} {#4} { }
}
\exp_not:N \__siunitx_number_output_uncertainty_unaligned:n {#2}
}
@@ -2614,7 +2653,8 @@
\bool_if:NTF \l__siunitx_number_tight_bool
{ \exp_not:N \mathord }
{ \use:n }
- { \exp_not:n { \pm } }
+ { \pm }
+ \bool_if:NF \l__siunitx_number_uncert_break_bool { \exp_not:N \nobreak }
\exp_not:n {#2}
\__siunitx_number_output_uncert_augment:nnnn {#4} {#1} {#4} {#2}
}
@@ -2822,6 +2862,7 @@
}
\keys_set:nn { siunitx }
{
+ allow-uncertainty-breaks = true ,
bracket-ambiguous-numbers = true ,
bracket-negative-numbers = false ,
drop-exponent = false ,
@@ -2872,6 +2913,7 @@
round-pad = true ,
round-precision = 2 ,
round-zero-positive = true ,
+ simplify-uncertainty = false ,
tight-spacing = false ,
uncertainty-descriptor-mode = bracket-separator ,
uncertainty-descriptor-separator = \ ,
@@ -2924,8 +2966,6 @@
\l__siunitx_angle_fill_minutes_bool ,
fill-angle-seconds .bool_set:N =
\l__siunitx_angle_fill_seconds_bool ,
- number-angle-product .tl_set:N =
- \l__siunitx_angle_product_tl
}
\bool_new:N \l__siunitx_angle_force_arc_bool
\bool_new:N \l__siunitx_angle_force_decimal_bool
@@ -2967,7 +3007,7 @@
\bool_if:NTF \l__siunitx_angle_force_decimal_bool
{
\siunitx_angle:e
- { \fp_eval:n { #1 + (#2) / 60 + (#3) / 3600 } }
+ { \fp_eval:n { #1 + ( 0 #2 ) / 60 + ( 0 #3 ) / 3600 } }
}
{ \__siunitx_angle_arc_sign:nnn {#1} {#2} {#3} }
}
@@ -2987,22 +3027,35 @@
\cs_generate_variant:Nn \siunitx_angle:nnn { eee , xxx }
\cs_new_protected:Npn \__siunitx_angle_arc_convert:n #1
{
- \siunitx_angle:eee
- { \fp_eval:n { trunc(#1,0) } }
- { \fp_eval:n { abs(trunc((#1 - trunc(#1,0)) * 60,0)) } }
+ \__siunitx_angle_arc_convert:w #1 . \q_nil . \q_stop
+ }
+\cs_generate_variant:Nn \__siunitx_angle_arc_convert:n { e }
+\cs_new_protected:Npn \__siunitx_angle_arc_convert:w #1 . #2 . #3 \q_stop
+ {
+ \quark_if_nil:nTF {#2}
{
- \fp_eval:n
+ \siunitx_angle:eee
+ { \fp_eval:n { trunc(#1,0) } }
+ { \bool_if:NT \l__siunitx_angle_fill_minutes_bool { 0 } }
+ { \bool_if:NT \l__siunitx_angle_fill_seconds_bool { 0 } }
+ }
+ {
+ \siunitx_angle:eee
+ { \fp_eval:n { trunc(#1.#2,0) } }
+ { \fp_eval:n { abs(trunc((#1.#2 - trunc(#1,0)) * 60,0)) } }
{
- abs
- (
- (#1 - trunc(#1,0)) * 60
- - trunc((#1 - trunc(#1,0)) * 60,0)
- )
- * 60
+ \fp_eval:n
+ {
+ abs
+ (
+ (#1.#2 - trunc(#1.#2,0)) * 60
+ - trunc((#1.#2 - trunc(#1.#2,0)) * 60,0)
+ )
+ * 60
+ }
}
}
}
-\cs_generate_variant:Nn \__siunitx_angle_arc_convert:n { e }
\clist_const:Nn \c__siunitx_angle_parts_tl { degrees , minutes , seconds }
\tl_new:N \l__siunitx_angle_degrees_tl
\tl_new:N \l__siunitx_angle_minutes_tl
@@ -3011,36 +3064,62 @@
\tl_new:N \l__siunitx_angle_signed_bool
\keys_precompile:nnN
{ siunitx }
+ { input-comparators = }
+ \l__siunitx_angle_tmp_tl
+\cs_set_protected:Npx \__siunitx_angle_suppress_comp:
+ { \exp_not:V \l__siunitx_angle_tmp_tl }
+\keys_precompile:nnN
+ { siunitx }
+ { input-exponent-markers = }
+ \l__siunitx_angle_tmp_tl
+\cs_set_protected:Npx \__siunitx_angle_suppress_exp:
+ { \exp_not:V \l__siunitx_angle_tmp_tl }
+\keys_precompile:nnN
+ { siunitx }
{
input-close-uncertainty = ,
- input-exponent-markers = ,
input-open-uncertainty = ,
input-uncertainty-signs =
}
\l__siunitx_angle_tmp_tl
-\cs_set_protected:Npx \__siunitx_angle_suppress_exp_uncert:
- { \exp_not:V \l__siunitx_angle_tmp_tl }
-\keys_precompile:nnN
- { siunitx }
- { input-comparators = }
- \l__siunitx_angle_tmp_tl
-\cs_set_protected:Npx \__siunitx_angle_suppress_comp:
+\cs_set_protected:Npx \__siunitx_angle_suppress_uncert:
{ \exp_not:V \l__siunitx_angle_tmp_tl }
\cs_new_protected:Npn \__siunitx_angle_arc_sign:nnn #1#2#3
{
\group_begin:
- \__siunitx_angle_suppress_exp_uncert:
\tl_clear:N \l__siunitx_angle_sign_tl
\bool_set_false:N \l__siunitx_angle_signed_bool
- \str_if_eq:nnTF {#1} { -0 }
- {
- \__siunitx_angle_arc_sign:nn { } { degrees }
- \__siunitx_angle_suppress_comp:
- \tl_set:Nn \l__siunitx_angle_sign_tl { - }
- \bool_set_true:N \l__siunitx_angle_signed_bool
- }
- { \__siunitx_angle_arc_sign:nn {#1} { degrees } }
- \__siunitx_angle_arc_sign:nn {#2} { minutes }
+ \group_begin:
+ \__siunitx_angle_suppress_exp:
+ \__siunitx_angle_suppress_uncert:
+ \str_if_eq:nnTF {#1} { -0 }
+ {
+ \__siunitx_angle_arc_sign:nn { } { degrees }
+ \__siunitx_angle_suppress_comp:
+ \tl_set:Nn \l__siunitx_angle_sign_tl { - }
+ \bool_set_true:N \l__siunitx_angle_signed_bool
+ }
+ { \__siunitx_angle_arc_sign:nn {#1} { degrees } }
+ \__siunitx_angle_arc_sign:nn {#2} { minutes }
+ \tl_set:Nx \l__siunitx_angle_tmp_tl
+ {
+ \tl_set:Nn \exp_not:N \l__siunitx_angle_sign_tl
+ { \exp_not:V \l__siunitx_angle_sign_tl }
+ \tl_set:Nn \exp_not:N \l__siunitx_angle_degrees_tl
+ { \exp_not:V \l__siunitx_angle_degrees_tl }
+ \tl_set:Nn \exp_not:N \l__siunitx_angle_minutes_tl
+ { \exp_not:V \l__siunitx_angle_minutes_tl }
+ \exp_not:c
+ {
+ bool_set_
+ \bool_if:NTF \l__siunitx_angle_signed_bool
+ { true }
+ { false }
+ :N
+ }
+ \exp_not:N \l__siunitx_angle_signed_bool
+ }
+ \exp_after:wN \group_end: \l__siunitx_angle_tmp_tl
\__siunitx_angle_arc_sign:nn {#3} { seconds }
\tl_if_empty:NF \l__siunitx_angle_sign_tl
{
@@ -3067,8 +3146,11 @@
}
{
\siunitx_number_parse:nN {#1} \l__siunitx_angle_tmp_tl
- \exp_after:wN \__siunitx_angle_extract_sign:nnnnnnnn \l__siunitx_angle_tmp_tl {#2}
- \bool_set_true:N \l__siunitx_angle_signed_bool
+ \tl_if_empty:NF \l__siunitx_angle_tmp_tl
+ {
+ \exp_after:wN \__siunitx_angle_extract_sign:nnnnnnnn \l__siunitx_angle_tmp_tl {#2}
+ \bool_set_true:N \l__siunitx_angle_signed_bool
+ }
}
}
\cs_new_protected:Npn \__siunitx_angle_arc_sign_auxi:n #1
@@ -3140,13 +3222,13 @@
\bool_if:NTF \l__siunitx_angle_astronomy_bool
{ \__siunitx_angle_arc_print_auxii:nw {#2} #1 \q_stop }
{
- \__siunitx_angle_arc_print_auxv:w #1 \q_stop
- \__siunitx_angle_arc_print_auxvi:n {#2}
+ \__siunitx_angle_arc_print_auxvii:w #1 \q_stop
+ \__siunitx_angle_arc_print_auxix:n {#2}
}
}
{
\siunitx_print_number:n {#1}
- \__siunitx_angle_arc_print_auxvi:n {#2}
+ \__siunitx_angle_arc_print_auxix:n {#2}
}
\tl_if_blank:nF {#3}
{
@@ -3157,25 +3239,36 @@
}
\cs_generate_variant:Nn \__siunitx_angle_arc_print_auxi:nnn { nV }
\cs_new_protected:Npn \__siunitx_angle_arc_print_auxii:nw
- #1#2 \q_nil #3 \q_nil #4 \q_nil #5 \q_nil #6 \q_nil #7 \q_nil #8 \q_stop
+ #1#2 \q_nil #3 \q_nil #4 \q_nil #5 \q_nil #6 \q_nil #7 \q_stop
+ {
+ \__siunitx_angle_arc_print_auxiii:nw {#6} #7 \q_stop
+ {#2#3#4} {#5} {#1}
+ }
+\cs_new_protected:Npn \__siunitx_angle_arc_print_auxiii:nw
+ #1#2 \q_nil #3 \q_nil #4 \q_nil #5 \q_nil #6 \q_nil #7 \q_stop
+ { \__siunitx_angle_arc_print_auxiv:nnnnn {#1} {#6#7} }
+\cs_new_protected:Npn \__siunitx_angle_arc_print_auxiv:nnnnn #1#2#3#4#5
{
\mode_if_math:TF
{ \bool_set_true:N \l__siunitx_angle_tmp_bool }
{ \bool_set_false:N \l__siunitx_angle_tmp_bool }
- \siunitx_print_number:n {#2#3#4}
- \tl_if_blank:nTF {#6}
- { \__siunitx_angle_arc_print_auxvi:n {#1} }
+ \siunitx_print_number:n {#3}
+ \tl_if_blank:nTF {#1}
+ {
+ \siunitx_print_number:n {#2}
+ \__siunitx_angle_arc_print_auxix:n {#5}
+ }
{
\hbox_set:Nn \l__siunitx_angle_marker_box
{
- \__siunitx_angle_arc_print_auxiii:n
- { \siunitx_print_number:n {#5} }
+ \__siunitx_angle_arc_print_auxv:n
+ { \siunitx_print_number:n {#4} }
}
\hbox_set:Nn \l__siunitx_angle_unit_box
{
- \__siunitx_angle_arc_print_auxiii:n
+ \__siunitx_angle_arc_print_auxv:n
{
- \siunitx_unit_format:nN {#1} \l__siunitx_angle_tmp_tl
+ \siunitx_unit_format:nN {#5} \l__siunitx_angle_tmp_tl
\siunitx_print_unit:V \l__siunitx_angle_tmp_tl
\skip_horizontal:n { -\scriptspace }
}
@@ -3183,12 +3276,12 @@
\dim_compare:nNnTF { \box_wd:N \l__siunitx_angle_marker_box } >
{ \box_wd:N \l__siunitx_angle_unit_box }
{
- \__siunitx_angle_arc_print_auxiv:NN
+ \__siunitx_angle_arc_print_auxvi:NN
\l__siunitx_angle_marker_box
\l__siunitx_angle_unit_box
}
{
- \__siunitx_angle_arc_print_auxiv:NN
+ \__siunitx_angle_arc_print_auxvi:NN
\l__siunitx_angle_unit_box
\l__siunitx_angle_marker_box
}
@@ -3203,17 +3296,17 @@
}
\box_use:N \l__siunitx_angle_marker_box
\skip_horizontal:N \scriptspace
- \siunitx_print_number:n {#6}
+ \siunitx_print_number:n {#1#2}
}
}
-\cs_new_protected:Npn \__siunitx_angle_arc_print_auxiii:n #1
+\cs_new_protected:Npn \__siunitx_angle_arc_print_auxv:n #1
{
\bool_if:NTF \l__siunitx_angle_tmp_bool
{ \ensuremath }
{ \use:n }
{#1}
}
-\cs_new_protected:Npn \__siunitx_angle_arc_print_auxiv:NN #1#2
+\cs_new_protected:Npn \__siunitx_angle_arc_print_auxvi:NN #1#2
{
\dim_set:Nn \l__siunitx_angle_tmp_dim { \box_wd:N #1 }
\hbox_set_to_wd:Nnn #2
@@ -3224,15 +3317,19 @@
\tex_hss:D
}
}
-\cs_new_protected:Npn \__siunitx_angle_arc_print_auxv:w
+\cs_new_protected:Npn \__siunitx_angle_arc_print_auxvii:w
#1 \q_nil #2 \q_nil #3 \q_nil #4 \q_nil #5 \q_nil #6 \q_stop
- { \siunitx_print_number:n {#1#2#3#4#5} }
-\cs_new_protected:Npn \__siunitx_angle_arc_print_auxvi:n #1
+ { \__siunitx_angle_arc_print_auxiix:w {#1#2#3#4#5} #6 \q_stop }
+\cs_new_protected:Npn \__siunitx_angle_arc_print_auxiix:w
+ #1#2 \q_nil #3 \q_nil #4 \q_nil #5 \q_nil #6 \q_nil #7 \q_stop
+ { \siunitx_print_number:n {#1#6#7} }
+\cs_new_protected:Npn \__siunitx_angle_arc_print_auxix:n #1
{
- \nobreak
- \l__siunitx_angle_product_tl
- \siunitx_unit_format:nN {#1} \l__siunitx_angle_tmp_tl
- \siunitx_print_unit:V \l__siunitx_angle_tmp_tl
+ \group_begin:
+ \siunitx_unit_options_apply:n {#1}
+ \siunitx_unit_format:nN {#1} \l__siunitx_angle_tmp_tl
+ \siunitx_quantity_print:nV { } \l__siunitx_angle_tmp_tl
+ \group_end:
}
\msg_new:nnnn { siunitx } { arc-multi-sign }
{ Multiple~signs~given~for~arc~angle! }
@@ -3240,6 +3337,26 @@
An~angle~given~as~an~arc~should~have~at~most~one~sign:~
only~the~first~sign~will~be~used.
}
+\msg_new:nnn { siunitx } { angle-option-deprecated }
+ {
+ Option~"#1"~has~been~deprecated~in~this~release.\\ \\
+ Set~the~"quantity-product"~option~for~the~units~
+ \token_to_str:N \arcminute,~\arcsecond\ and~\degree\ instead.
+ }
+\keys_define:nn { siunitx }
+ {
+ number-angle-product .code:n =
+ {
+ \msg_info:nnn { siunitx } { angle-option-deprecated }
+ { number-angle-product }
+ \siunitx_unit_options_declare:Nn \arcminute
+ { quantity-product = {#1} }
+ \siunitx_unit_options_declare:Nn \arcsecond
+ { quantity-product = {#1} }
+ \siunitx_unit_options_declare:Nn \degree
+ { quantity-product = {#1} }
+ }
+ }
\keys_set:nn { siunitx }
{
angle-mode = input ,
@@ -3250,8 +3367,7 @@
angle-separator = ,
fill-angle-degrees = false ,
fill-angle-minutes = false ,
- fill-angle-seconds = false ,
- number-angle-product =
+ fill-angle-seconds = false
}
\fp_new:N \l__siunitx_complex_tmp_fp
\tl_new:N \l__siunitx_complex_tmp_tl
@@ -3291,13 +3407,13 @@
{ \bool_set_true:N \l__siunitx_complex_polar_degree_bool } ,
complex-angle-unit / radians .code:n =
{ \bool_set_false:N \l__siunitx_complex_polar_degree_bool } ,
+ complex-phase-command .tl_set:N =
+ \l__siunitx_complex_phase_tl ,
complex-root-position .choice: ,
complex-root-position / after-number .code:n =
{ \bool_set_true:N \l__siunitx_complex_root_after_bool } ,
complex-root-position / before-number .code:n =
{ \bool_set_false:N \l__siunitx_complex_root_after_bool } ,
- complex-symbol-angle .tl_set:N =
- \l__siunitx_complex_symbol_angle_tl ,
complex-symbol-degree .tl_set:N =
\l__siunitx_complex_symbol_degree_tl ,
input-complex-root .tl_set:N =
@@ -3831,17 +3947,9 @@
\bool_if:NTF \l_siunitx_number_parse_bool
{ \siunitx_number_output:N \l__siunitx_complex_mag_tl }
{ \exp_not:V \l__siunitx_complex_mag_tl }
- \exp_not:V \l__siunitx_complex_symbol_angle_tl
- \mathord % TEMP
- \exp_not:V \l__siunitx_complex_angle_tl
}
\siunitx_print_number:V \l__siunitx_complex_tmp_tl
- \bool_if:NT \l__siunitx_complex_polar_degree_bool
- {
- \siunitx_unit_format:VN \l__siunitx_complex_symbol_degree_tl \l__siunitx_complex_tmp_tl
- \nobreak
- \siunitx_print_unit:V \l__siunitx_complex_tmp_tl
- }
+ \l__siunitx_complex_phase_tl { \__siunitx_complex_format_phase: }
\siunitx_quantity_print:nV { } \l__siunitx_complex_unit_tl
}
\cs_new_protected:cpn { __siunitx_complex_format_polar_combine-exponent:n } #1
@@ -3866,6 +3974,18 @@
{ \siunitx_number_process:NN \l__siunitx_complex_mag_tl \l__siunitx_complex_mag_tl }
\siunitx_unit_format:nN {#1} \l__siunitx_complex_unit_tl
}
+\cs_new_protected:Npn \__siunitx_complex_format_phase:
+ {
+ \group_begin:
+ \bool_if:NTF \l__siunitx_complex_polar_degree_bool
+ {
+ \exp_args:NV \siunitx_unit_options_apply:n \l__siunitx_complex_symbol_degree_tl
+ \siunitx_unit_format:VN \l__siunitx_complex_symbol_degree_tl \l__siunitx_complex_tmp_tl
+ }
+ { \tl_clear:N \l__siunitx_complex_tmp_tl }
+ \siunitx_quantity_print:VV \l__siunitx_complex_angle_tl \l__siunitx_complex_tmp_tl
+ \group_end:
+ }
\cs_new:Npn \__siunitx_complex_convert_cartesian:nn #1#2
{
\__siunitx_complex_convert_cartesian_aux:ee
@@ -3880,22 +4000,43 @@
}
\cs_new:Npn \__siunitx_complex_convert_cartesian_aux:nn #1#2
{
- \__siunitx_complex_convert_cartesian_aux:w #1 e e \q_mark #2 e e \q_stop
+ \__siunitx_complex_convert_cartesian_aux:w #1 e 0 e \q_mark #2 e 0 e \q_stop
}
\cs_generate_variant:Nn \__siunitx_complex_convert_cartesian_aux:nn { ee }
\cs_new:Npn \__siunitx_complex_convert_cartesian_aux:w
#1 e #2 e #3 \q_mark #4 e #5 e #6 \q_stop
{
+ \int_compare:nNnTF {#2} = {#5}
+ { \__siunitx_complex_convert_cartesian_aux:nnn {#1} {#4} {#2} }
+ {
+ \int_compare:nNnTF {#2} > {#5}
+ {
+ \__siunitx_complex_convert_cartesian_aux:nen
+ {#1}
+ { \fp_to_decimal:n { #4 * 10 ** (#5 - #2) } }
+ {#2}
+ }
+ {
+ \__siunitx_complex_convert_cartesian_aux:enn
+ { \fp_to_decimal:n { #1 * 10 ** (#2 - #5) } }
+ {#4}
+ {#5}
+ }
+ }
+ }
+\cs_new:Npn \__siunitx_complex_convert_cartesian_aux:nnn #1#2#3
+ {
\fp_compare:nNnF {#1} = \c_zero_fp
{#1}
- \fp_compare:nNnF {#4} = \c_zero_fp
+ \fp_compare:nNnF {#2} = \c_zero_fp
{
- \fp_compare:nNnF {#4} < \c_zero_fp { + }
- #4 i
+ \fp_compare:nNnF {#2} < \c_zero_fp { + }
+ #2 i
}
- \tl_if_blank:nF {#2}
- { e #2 }
+ \int_compare:nNnF {#3} = 0
+ { e #3 }
}
+\cs_generate_variant:Nn \__siunitx_complex_convert_cartesian_aux:nnn { e , ne }
\cs_new:Npn \__siunitx_complex_convert_polar:n #1
{ \__siunitx_complex_convert_polar_auxi:w #1 e e \q_stop }
\cs_new:Npn \__siunitx_complex_convert_polar_auxi:w #1 e #2 e #3 \q_stop
@@ -3917,7 +4058,7 @@
\tl_if_blank:nTF {#4}
{ \__siunitx_complex_convert_polar_auxiv:nnw {#1} {#2} #3 - - \q_stop }
{
- \str_if_eq:nnTF {#4} { i }
+ \str_if_eq:eeTF { \use:n #4 } { i }
{ \__siunitx_complex_convert_polar_auxvii:nnn {#2#3} { 1 } {#1} }
{ \__siunitx_complex_convert_polar_auxv:nnw {#2#3} {#1} #4 i \q_nil i \q_stop }
}
@@ -3927,7 +4068,7 @@
\tl_if_blank:nTF {#4}
{ \__siunitx_complex_convert_polar_auxv:nnw { } {#1} #2#3 i \q_nil i \q_stop }
{
- \str_if_eq:nnTF {#4} { i }
+ \str_if_eq:eeTF { \use:n #4 } { i }
{ \__siunitx_complex_convert_polar_auxvii:nnn { } { -1 } {#1} }
{ \__siunitx_complex_convert_polar_auxv:nnw {#2#3} {#1} -#4 i \q_nil i \q_stop }
}
@@ -3973,15 +4114,25 @@
Complex~numbers~in~polar~form~must~have~both~a~magnitude~and~and~
angle.
}
+\keys_define:nn { siunitx }
+ {
+ complex-symbol-angle .code:n =
+ {
+ \msg_info:nnnn { siunitx } { option-deprecated }
+ { number-angle-product }
+ { complex-phase-command }
+ complex-phase-command = {#1}
+ }
+ }
\keys_set:nn { siunitx }
{
- complex-angle-unit = degrees ,
- complex-mode = input ,
- complex-root-position = after-number ,
- complex-symbol-angle = \angle ,
- complex-symbol-degree = \degree ,
- input-complex-root = ij ,
- output-complex-root = \mathrm { i } ,
+ complex-angle-unit = degrees ,
+ complex-mode = input ,
+ complex-root-position = after-number ,
+ complex-phase-command = \ensuremath { \angle } ,
+ complex-symbol-degree = \degree ,
+ input-complex-root = ij ,
+ output-complex-root = \mathrm { i } ,
print-complex-unity = false
}
\cs_generate_variant:Nn \seq_use:Nnnn { NVVV }
@@ -4646,41 +4797,41 @@
compound-exponents = individual ,
compound-final-separator =
{
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
\text { and }
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
} ,
compound-independent-prefix = false ,
compound-open-boundary = ,
compound-open-bracket = ( , % )
compound-pair-separator =
{
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
\text { and }
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
} ,
compound-separator =
- { , \ifmmode \ \else \space \fi } ,
+ { , \TextOrMath { \space } { \ } } ,
compound-separator-mode = text ,
compound-units = repeat , % (
list-close-bracket = ) ,
list-exponents = individual ,
list-final-separator =
{
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
\text { and }
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
} ,
list-independent-prefix = false ,
list-open-bracket = ( , % )
list-pair-separator =
{
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
\text { and }
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
} ,
list-separator =
- { , \ifmmode \ \else \space \fi } ,
+ { , \TextOrMath { \space } { \ } } ,
list-units = repeat , % (
product-close-bracket = ) ,
product-exponents = individual ,
@@ -4689,9 +4840,9 @@
product-open-bracket = ( , % )
product-phrase =
{
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
\text { by }
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
} ,
product-symbol = \times ,
product-units = repeat , % (
@@ -4702,9 +4853,9 @@
range-open-phrase = ,
range-phrase =
{
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
\text { to }
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
} ,
range-units = repeat
}
@@ -4767,6 +4918,7 @@
\DeclareTranslation { Italian } { and } { e }
\DeclareTranslation { Portuguese } { and } { e }
\DeclareTranslation { Slovene } { and } { in }
+ \DeclareTranslation { Italian } { from~(numerical~range) } { da }
\DeclareTranslation { Brazilian } { to~(numerical~range) } { a }
\DeclareTranslation { Catalan } { to~(numerical~range) } { a }
\DeclareTranslation { English } { to~(numerical~range) } { to }
@@ -4781,21 +4933,39 @@
{
list-final-separator =
{
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
\text { \GetTranslation { and } }
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
} ,
- list-pair-separator =
+ list-pair-separator =
{
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
\text { \GetTranslation { and } }
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
+ } ,
+ range-open-phrase =
+ {
+ \bool_lazy_or:nnF
+ {
+ \tl_if_blank_p:e
+ { \GetTranslation { from~(numerical~range) } }
+ }
+ {
+ \str_if_eq_p:ee
+ { \GetTranslation { from~(numerical~range) } }
+ { from~(numerical~range) }
+ }
+ {
+ \TextOrMath { \space } { \ }
+ \text { \GetTranslation { from~(numerical~range) } }
+ \TextOrMath { \space } { \ }
+ }
} ,
- range-phrase =
+ range-phrase =
{
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
\text { \GetTranslation { to~(numerical~range) } }
- \ifmmode \ \else \space \fi
+ \TextOrMath { \space } { \ }
}
}
}
@@ -5576,12 +5746,26 @@
\cs_new_eq:NN
\__siunitx_table_align_auxii:nn
\__siunitx_table_align_auxi:nn
- \cs_set_protected:Npn \__siunitx_table_align_auxi:nn #1#2
+ \cs_gset_protected:Npn \__siunitx_table_align_auxi:nn #1#2
{
\__siunitx_table_skip:n{ 0pt~plus~-0.5fill }
\__siunitx_table_align_auxii:nn {#1} {#2}
\__siunitx_table_skip:n { 0pt~plus~-0.5fill }
}
+ \@ifpackageloaded { tabularray }
+ {
+ \cs_new_eq:NN
+ \__siunitx_table_align_auxiii:nn
+ \__siunitx_table_align_auxi:nn
+ \cs_gset_protected:Npn \__siunitx_table_align_auxi:nn #1#2
+ {
+ \int_compare:nNnTF \g_tblr_level_int = 0
+ { \__siunitx_table_align_auxii:nn }
+ { \__siunitx_table_align_auxiii:nn }
+ {#1} {#2}
+ }
+ }
+ { }
}
{ }
}
@@ -6388,26 +6572,24 @@
{#2}
{ \__siunitx_unit_parse_unit:Nn #1 {#2} }
}
- \tl_clear_new:c { l__siunitx_unit_options_ \token_to_str:N #1 _tl }
- \tl_if_empty:nF {#3}
- { \tl_set:cn { l__siunitx_unit_options_ \token_to_str:N #1 _tl } {#3} }
+ \siunitx_unit_options_declare:Nn #1 {#3}
}
\cs_generate_variant:Nn \siunitx_declare_unit:Nnn { Ne , Nx }
-\bool_new:N \l__siunitx_unit_options_bool
+\cs_new_protected:Npn \siunitx_unit_options_declare:Nn #1#2
+ {
+ \tl_clear_new:c { l__siunitx_unit_options_ \token_to_str:N #1 _tl }
+ \tl_set:cn { l__siunitx_unit_options_ \token_to_str:N #1 _tl } {#2}
+ }
\cs_new_protected:Npn \siunitx_unit_options_apply:n #1
{
- \bool_if:NF \l__siunitx_unit_options_bool
+ \tl_if_single_token:nT {#1}
{
- \tl_if_single_token:nT {#1}
+ \tl_if_exist:cT { l__siunitx_unit_options_ \token_to_str:N #1 _tl }
{
- \tl_if_exist:cT { l__siunitx_unit_options_ \token_to_str:N #1 _tl }
- {
- \keys_set:nv { siunitx }
- { l__siunitx_unit_options_ \token_to_str:N #1 _tl }
- }
+ \keys_set:nv { siunitx }
+ { l__siunitx_unit_options_ \token_to_str:N #1 _tl }
}
}
- \bool_set_true:N \l__siunitx_unit_options_bool
}
\__siunitx_unit_set_symbolic:Nnn \per
{ / }
@@ -7550,7 +7732,10 @@
\str_if_eq:eeT
{ \exp_not:o { \familydefault } }
{ \exp_not:n { \sfdefault } }
- { \keys_set:nn { siunitx } { unit-font-command = \mathsf } }
+ {
+ \tl_if_eq:VnT \l_siunitx_unit_font_tl { \mathrm }
+ { \keys_set:nn { siunitx } { unit-font-command = \mathsf } }
+ }
}
{ }
}
@@ -7703,20 +7888,42 @@
\siunitx_print_number:n {#1}
\tl_if_blank:nF {#2}
{
- \bool_lazy_or:nnTF
- { \tl_if_blank_p:n {#1} }
- { ! \tl_if_head_eq_charcode_p:nN {#2} { 1 } }
+ \tl_if_blank:nTF {#1}
+ { \__siunitx_quantity_print_unit:n {#2} }
{
- \bool_if:NTF \l__siunitx_quantity_break_bool
- { \penalty \binoppenalty }
- { \nobreak }
- \tl_use:N \l__siunitx_quantity_product_tl
- \siunitx_print_unit:n {#2}
+ \tl_if_head_eq_charcode:nNTF {#2} 1
+ { \siunitx_print_unit:o { \use_none:n #2 } }
+ {
+ \tl_if_head_eq_meaning:nNTF {#2} \mathchoice
+ { \__siunitx_quantity_print_mathchoice:Nnnnn #2 }
+ { \__siunitx_quantity_print_unit:n {#2} }
+ }
}
- { \siunitx_print_unit:o { \use_none:n #2 } }
}
}
\cs_generate_variant:Nn \siunitx_quantity_print:nn { nV , VV , eV , xV }
+\cs_new_protected:Npn \__siunitx_quantity_print_unit:n #1
+ {
+ \bool_if:NTF \l__siunitx_quantity_break_bool
+ { \penalty \binoppenalty }
+ { \nobreak }
+ \tl_use:N \l__siunitx_quantity_product_tl
+ \siunitx_print_unit:n {#1}
+ }
+\cs_new_protected:Npn \__siunitx_quantity_print_mathchoice:Nnnnn #1#2#3#4#5
+ {
+ \tl_if_head_eq_charcode:nNTF {#3} 1
+ {
+ \exp_args:No \__siunitx_quantity_print_mathchoice:nnN
+ { \use_none:n #3 } {#2} #1
+ }
+ { \__siunitx_quantity_print_unit:n { #1 {#2} {#3} {#4} {#5} } }
+ }
+\cs_new_protected:Npn \__siunitx_quantity_print_mathchoice:nnN #1#2#3
+ {
+ \siunitx_print_unit:n
+ { #3 { \__siunitx_quantity_print_unit:n {#2} } {#1} {#1} {#1} }
+ }
\keys_set:nn { siunitx }
{
allow-quantity-breaks = false ,
@@ -7724,17 +7931,14 @@
quantity-product = \, ,
separate-uncertainty-units = bracket
}
-\cs_new:Npn \__siunitx_quantity_non_latin:n #1
- { \codepoint_generate:nn {#1} { \char_value_catcode:n {#1} } }
-\siunitx_declare_unit:Nen \arcminute
- { \__siunitx_quantity_non_latin:n { "02B9 } }
- { quantity-product = { } }
-\siunitx_declare_unit:Nen \arcsecond
- { \__siunitx_quantity_non_latin:n { "02BA } }
- { quantity-product = { } }
-\siunitx_declare_unit:Nen \degree
- { \__siunitx_quantity_non_latin:n { "00B0 } }
- { quantity-product = { } }
+\siunitx_unit_options_declare:Nn \arcminute
+ { prefix-mode = input , quantity-product = { } }
+\siunitx_unit_options_declare:Nn \arcsecond
+ { prefix-mode = input , quantity-product = { } }
+\siunitx_unit_options_declare:Nn \degree
+ { prefix-mode = input , quantity-product = { } }
+\siunitx_unit_options_declare:Nn \percent
+ { prefix-mode = input }
\tl_new:N \l__siunitx_symbol_tmpa_tl
\tl_new:N \l__siunitx_symbol_tmpb_tl
\AtBeginDocument
@@ -7769,13 +7973,13 @@
{
\siunitx_declare_unit:Nnn \arcminute
{ \ensuremath { { } ' } }
- { quantity-product = { } }
+ { prefix-mode = input , quantity-product = { } }
}
\__siunitx_symbol_if_replace:NnT \arcsecond { "02BA }
{
\siunitx_declare_unit:Nnn \arcsecond
{ \ensuremath { { } '' } }
- { quantity-product = { } }
+ { prefix-mode = input , quantity-product = { } }
}
\__siunitx_symbol_if_replace:NnT \degree { "00B0 }
{
@@ -7793,7 +7997,7 @@
{ { } ^ { \exp_not:N \circ } }
}
}
- { quantity-product = { } }
+ { prefix-mode = input , quantity-product = { } }
}
\group_begin:
\tl_set:Nx \l__siunitx_symbol_tmpa_tl { \__siunitx_symbol_non_latin:n { "00B0 } C }
@@ -7854,16 +8058,23 @@
\@ifpackageloaded { fontspec }
{ \exp_not:V \l__siunitx_symbol_tmpb_tl }
{
- \bool_lazy_or:nnTF
- {
- \@ifclassloaded { beamer }
- \c_true_bool
- \c_false_bool
- }
+ \bool_lazy_any:nTF
{
- \@ifpackageloaded { kmath }
- \c_true_bool
- \c_false_bool
+ {
+ \@ifclassloaded { beamer }
+ \c_true_bool
+ \c_false_bool
+ }
+ {
+ \@ifpackageloaded { kmath }
+ \c_true_bool
+ \c_false_bool
+ }
+ {
+ \@ifpackageloaded { mathastext }
+ \c_true_bool
+ \c_false_bool
+ }
}
{ \exp_not:V \l__siunitx_symbol_tmpb_tl }
{ \exp_not:V \l__siunitx_symbol_tmpa_tl }
@@ -7887,6 +8098,10 @@
}
}
}
+\DeclareHookRule { begindocument } { siunitx } { after }
+ { unicode-math-luatex }
+\DeclareHookRule { begindocument } { siunitx } { after }
+ { unicode-math-xetex }
\AtBeginDocument
{
\@ifpackageloaded { hyperref }
@@ -8569,7 +8784,7 @@
table-space-text-pre .code:n =
{
\msg_info:nnnn { siunitx } { option-deprecated }
- { table-space-text-post }
+ { table-space-text-pre }
{ table-format }
\tl_set:Nn \l__siunitx_table_before_model_tl {#1}
}
@@ -8787,19 +9002,7 @@
{ \msg_info:nnnn { siunitx } { option-deprecated } {#1} {#2} }
\seq_gput_right:Nn \g__siunitx_deprecated_seq {#1}
}
-\IfFormatAtLeastTF { 2022-06-01 }
- { \ProcessKeyOptions [ siunitx ] }
- {
- \RequirePackage { l3keys2e }
- \ProcessKeysOptions { siunitx }
- }
-\IfFormatAtLeastTF { 2020-10-01 }
- { }
- {
- \RequirePackage { xparse }
- \providecommand \ExpandArgs [1]
- { \cs_if_exist_use:c { exp_args:N #1 } }
- }
+\ProcessKeyOptions
\NewDocumentCommand \DeclareSIPower { +m +m m }
{
\siunitx_declare_power:NNn #1 #2 {#3}
@@ -9114,7 +9317,7 @@
{
\seq_map_inline:Nn \c__siunitx_bookmark_seq
{
- \cs_set_eq:Nc #1
+ \ExpandArgs { Nc } \DeclareCommandCopy #1
{ \cs_to_str:N #1 \c_space_tl ( pdfstring ~ context ) }
}
}
@@ -9300,20 +9503,22 @@
}
\cs_new_protected:Npx \SIUnitSymbolOhm
{
- \exp_not:N \ifmmode
- \cs_if_exist:NTF \upOmega
- { \exp_not:N \upOmega }
- { \exp_not:N \Omega }
- \exp_not:N \else
- \siunitx_print_text:n
- {
- \bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
- { \__siunitx_emulation_non_latin:n { "03A9 } }
- { \exp_not:N \textohm }
- }
- \exp_not:N \fi
+ \exp_not:N \TextOrMath
+ {
+ \siunitx_print_text:n
+ {
+ \bool_lazy_or:nnTF
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ { \__siunitx_emulation_non_latin:n { "03A9 } }
+ { \exp_not:N \textohm }
+ }
+ }
+ {
+ \cs_if_exist:NTF \upOmega
+ { \exp_not:N \upOmega }
+ { \exp_not:N \Omega }
+ }
}
}
\siunitx_declare_unit:Nn \celsius { \degreeCelsius }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe-ja.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe-ja.def
index ce55e644817..7a1a06ae70c 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe-ja.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe-ja.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Adobe CJK fonts definition for Japanese (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-adobe-ja.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{ \__sjtu_fontset_error:nn { cjk } { adobe } }
{
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe-zh.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe-zh.def
index 37b96e47c4a..a1e0c1f44f8 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe-zh.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe-zh.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Adobe CJK fonts definition for Chinese (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-adobe-zh.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nnn
{ \__sjtu_fontset_error:nn { cjk } { adobe } }
{
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe.def
index d61429b1aca..6fb16d0b312 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-adobe.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Adobe CJK fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-adobe.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\tl_if_eq:NNTF \g__sjtu_lang_tl \c__sjtu_lang_ja_tl
{ \ctex_file_input:n { sjtu-cjk-font-adobe-ja.def } }
{ \ctex_file_input:n { sjtu-cjk-font-adobe-zh.def } }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol-ja.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol-ja.def
index 798a2319eef..922dc4d3d27 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol-ja.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol-ja.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Fandol CJK fonts definition for Japanese (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-fandol-ja.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{ \__sjtu_fontset_error:nn { cjk } { fandol } }
{
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol-zh.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol-zh.def
index 9a64be9d385..525605b2915 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol-zh.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol-zh.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Fandol CJK fonts definition for Chinese (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-fandol-zh.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nnn
{ \__sjtu_fontset_error:nn { cjk } { fandol } }
{
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol.def
index ad3d0e5978b..deb9f1bd937 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-fandol.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Fandol CJK fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-fandol.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\tl_if_eq:NNTF \g__sjtu_lang_tl \c__sjtu_lang_ja_tl
{ \ctex_file_input:n { sjtu-cjk-font-fandol-ja.def } }
{ \ctex_file_input:n { sjtu-cjk-font-fandol-zh.def } }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder-ja.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder-ja.def
index 8aba1cb30aa..4ed4090bd02 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder-ja.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder-ja.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Founder CJK fonts definition for Japanese (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-founder-ja.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{ \__sjtu_fontset_error:nn { cjk } { founder } }
{
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder-zh.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder-zh.def
index 1e93ecb54b1..685ef91a466 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder-zh.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder-zh.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Founder CJK fonts definition for Chinese (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-founder-zh.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{
\ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhfs } { founder }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder.def
index 73e5cac53d1..006c69d9e17 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-founder.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Founder CJK fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-founder.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\tl_if_eq:NNTF \g__sjtu_lang_tl \c__sjtu_lang_ja_tl
{ \ctex_file_input:n { sjtu-cjk-font-founder-ja.def } }
{ \ctex_file_input:n { sjtu-cjk-font-founder-zh.def } }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac-ja.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac-ja.def
index 7923336bea5..5b9ed84fc04 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac-ja.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac-ja.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{macOS CJK fonts definition for Japanese (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-mac-ja.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{ \__sjtu_fontset_error:nn { cjk } { mac } }
{
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac-zh.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac-zh.def
index e38d0f08e09..8d25704c60b 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac-zh.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac-zh.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{macOS CJK fonts definition for Chinese (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-mac-zh.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nnn
{ \__sjtu_fontset_error:nn { cjk } { mac } }
{
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac.def
index 0e5a94d1900..dea9680ebca 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-mac.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{macOS CJK fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-mac.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\tl_if_eq:NNTF \g__sjtu_lang_tl \c__sjtu_lang_ja_tl
{ \ctex_file_input:n { sjtu-cjk-font-mac-ja.def } }
{ \ctex_file_input:n { sjtu-cjk-font-mac-zh.def } }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu-ja.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu-ja.def
index 9cb1ed81233..a2480b0312f 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu-ja.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu-ja.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Ubuntu CJK fonts definition for Japanese (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-ubuntu-ja.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{ \__sjtu_fontset_error:nn { cjk } { ubuntu } }
{
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu-zh.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu-zh.def
index cf6f87a7a27..57522f0a756 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu-zh.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu-zh.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Ubuntu CJK fonts definition for Chinese (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-ubuntu-zh.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nnn
{ \__sjtu_fontset_error:nn { cjk } { ubuntu } }
{
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu.def
index 82c2c26154c..47735857fc3 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-ubuntu.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Ubuntu CJK fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-ubuntu.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\tl_if_eq:NNTF \g__sjtu_lang_tl \c__sjtu_lang_ja_tl
{ \ctex_file_input:n { sjtu-cjk-font-ubuntu-ja.def } }
{ \ctex_file_input:n { sjtu-cjk-font-ubuntu-zh.def } }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows-ja.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows-ja.def
index af93cc24389..50bef8c98d9 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows-ja.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows-ja.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Windows CJK fonts definition for Japanese (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-windows-ja.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{ \__sjtu_fontset_error:nn { cjk } { windows } }
{
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows-zh.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows-zh.def
index 2fcb8ba3c26..18930a244ce 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows-zh.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows-zh.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Windows CJK fonts definition for Chinese (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-windows-zh.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{
\ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhfs } { windows }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows.def
index a9575e0ac53..105e9d6900a 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-cjk-font-windows.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Windows CJK fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-cjk-font-windows.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\tl_if_eq:NNTF \g__sjtu_lang_tl \c__sjtu_lang_ja_tl
{ \ctex_file_input:n { sjtu-cjk-font-windows-ja.def } }
{ \ctex_file_input:n { sjtu-cjk-font-windows-zh.def } }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-cambria.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-cambria.def
index 66fa4aee1ac..aeff9077b24 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-cambria.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-cambria.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Cambria math fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-math-font-cambria.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{ \__sjtu_fontset_error:nn { math } { cambria } }
{
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-libertinus.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-libertinus.def
index adcbcf10540..95d08e7805a 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-libertinus.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-libertinus.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Libertinus math fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-math-font-libertinus.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{
\exp_args:No \PassOptionsToPackage
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-lm.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-lm.def
index 600933baa76..be6790c68c0 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-lm.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-lm.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Latin Modern math fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-math-font-lm.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\RequirePackage { amssymb, upgreek }
\SetSymbolFont { operators } { normal } { OT1 } { lmr } { m } { n }
\SetSymbolFont { letters } { normal } { OML } { lmm } { m } { it }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newcm.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newcm.def
index 116ae6f33b7..58c6edd416d 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newcm.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newcm.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{New Computer Modern math fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-math-font-newcm.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{ \__sjtu_fontset_error:nn { math } { newcm } }
{
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newpx.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newpx.def
index 94af3799272..d4331d64aa0 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newpx.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newpx.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{New PX math fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-math-font-newpx.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\tl_set_eq:NN \l__sjtu_save_encodingdefault_tl \encodingdefault
\tl_set_eq:NN \l__sjtu_save_rmdefault_tl \rmdefault
\tl_set_eq:NN \l__sjtu_save_sfdefault_tl \sfdefault
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newtx.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newtx.def
index bc819b36161..5bc2283c466 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newtx.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-newtx.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{New TX math fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-math-font-newtx.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\tl_set_eq:NN \l__sjtu_save_encodingdefault_tl \encodingdefault
\tl_set_eq:NN \l__sjtu_save_rmdefault_tl \rmdefault
\tl_set_eq:NN \l__sjtu_save_sfdefault_tl \sfdefault
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-stixtwo.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-stixtwo.def
index 326609e123b..f9279e52c40 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-stixtwo.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-stixtwo.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{STIX Two math fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-math-font-stixtwo.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{
\DeclareSizeFunction { sub } { \sub@sfcnt \@font@info }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-times.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-times.def
index 8d516d6cab5..b0aa00e2661 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-times.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-times.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Times math fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-math-font-times.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\PassOptionsToPackage { Symbol } { upgreek }
\RequirePackage { amssymb, upgreek }
\tl_set_eq:NN \l__sjtu_save_rmdefault_tl \rmdefault
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-xits.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-xits.def
index b8e08efd59b..9da4c6376f2 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-xits.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-math-font-xits.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{XITS math fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-math-font-xits.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{ \__sjtu_fontset_error:nn { math } { xits } }
{
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-cambria.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-cambria.def
index 95fbeb8f5de..5f07e74f517 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-cambria.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-cambria.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Cambria text fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-text-font-cambria.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{ \__sjtu_fontset_error:nn { text } { cambria } }
{
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-libertinus.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-libertinus.def
index 3bbf819a4cb..95ed9fa7400 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-libertinus.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-libertinus.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Libertinus text fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-text-font-libertinus.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{
\tl_set:Nn \encodingdefault { T1 }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-lm.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-lm.def
index 656fe6a64af..4ad4852c194 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-lm.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-lm.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Latin Modern text fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-text-font-lm.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{
\tl_set:Nn \encodingdefault { T1 }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newcm.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newcm.def
index 0c27b2305ef..bb07bfe0493 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newcm.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newcm.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{New Computer Modern text fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-text-font-newcm.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{ \__sjtu_fontset_error:nn { text } { newcm } }
{
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newpx.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newpx.def
index dfbe2bb1778..3cd4b850c49 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newpx.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newpx.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{New PX text fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-text-font-newpx.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{
\tl_set:Nn \encodingdefault { T1 }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newtx.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newtx.def
index 85095ff0d22..3225a233e4b 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newtx.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-newtx.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{New TX text fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-text-font-newtx.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{
\tl_set:Nn \encodingdefault { T1 }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-stixtwo.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-stixtwo.def
index 1fb82eabf3d..0039c44a990 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-stixtwo.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-stixtwo.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{STIX Two text fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-text-font-stixtwo.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{
\tl_set:Nn \encodingdefault { T1 }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-times.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-times.def
index d368168d3d4..ccd8ade74ba 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-times.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-times.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Times text fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-text-font-times.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{
\tl_set:Nn \encodingdefault { T1 }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-xits.def b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-xits.def
index 6c921e96092..b6fb8235667 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-xits.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/font/sjtu-text-font-xits.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{XITS text fonts definition (SJTUTeX)}
\ProvidesExplFile{sjtu-text-font-xits.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_fontset_case:nn
{ \__sjtu_fontset_error:nn { text } { xits } }
{
diff --git a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-de.def b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-de.def
index 2e18ecf30c9..358a9630b69 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-de.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-de.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{German specific definition for generic (SJTUTeX)}
\ProvidesExplFile{sjtu-lang-generic-de.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\cs_new:Npn \__sjtu_date_aux_de:nnn #1#2#3
{
\clist_item:Nn \c__sjtu_name_month_de_clist {#2} ~
diff --git a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-en.def b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-en.def
index 15f1b627a5f..34f319974ed 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-en.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-en.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{English specific definition for generic (SJTUTeX)}
\ProvidesExplFile{sjtu-lang-generic-en.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\cs_new:Npn \__sjtu_ordinal_en:n #1
{
\int_to_arabic:n {#1}
diff --git a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-ja.def b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-ja.def
index 641b8bcb57a..57ed7bb6d1c 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-ja.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-ja.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Japanese specific definition for generic (SJTUTeX)}
\ProvidesExplFile{sjtu-lang-generic-ja.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\cs_new:Npn \__sjtu_date_aux_ja:nnn #1#2#3
{
\int_to_arabic:n {#1} ~ { \exp_not:V \c__sjtu_name_year_ja_tl } ~
diff --git a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-zh.def b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-zh.def
index 5a116ad7634..cd65215797c 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-zh.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-generic-zh.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Chinese specific definition for generic (SJTUTeX)}
\ProvidesExplFile{sjtu-lang-generic-zh.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\cs_new:Npn \__sjtu_date_aux_zh:nnn #1#2#3
{
\int_to_arabic:n {#1} ~ { \exp_not:V \c__sjtu_name_year_zh_tl } ~
diff --git a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-de.def b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-de.def
index be0b3e14915..9346d596523 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-de.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-de.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{German specific definition for thesis (SJTUTeX)}
\ProvidesExplFile{sjtu-lang-thesis-de.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_info_keys_define:n { de }
\keys_define:nn { sjtu / info / de }
{
@@ -88,7 +88,7 @@
\__sjtu_title_page_info_i:nxx { de }
{
r @ { \exp_not:V \c__sjtu_name_info_sep_de_tl }
- >{ \exp_not:N \normalfont } l
+ > { \exp_not:N \setbaselineskip { 22.5 bp } \exp_not:N \normalfont } l
}
{ author, \l__sjtu_info_supervisors_clist }
} ,
diff --git a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-en.def b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-en.def
index 5c83d773dd0..e4559e1d98f 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-en.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-en.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{English specific definition for thesis (SJTUTeX)}
\ProvidesExplFile{sjtu-lang-thesis-en.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_info_keys_define:n { en }
\keys_define:nn { sjtu / info / en }
{
@@ -111,7 +111,7 @@
\__sjtu_title_page_info_i:nxx { en }
{
r @ { \exp_not:V \c__sjtu_name_info_sep_en_tl }
- >{ \exp_not:N \normalfont } l
+ > { \exp_not:N \setbaselineskip { 22.5 bp } \exp_not:N \normalfont } l
}
{ author, \l__sjtu_info_supervisors_clist }
} ,
diff --git a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-ja.def b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-ja.def
index c3ca7db4b61..6acddb394ad 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-ja.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-ja.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Japanese specific definition for thesis (SJTUTeX)}
\ProvidesExplFile{sjtu-lang-thesis-ja.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_info_keys_define:n { ja }
\keys_define:nn { sjtu / info / ja }
{
@@ -96,7 +96,7 @@
\__sjtu_title_page_info_i:nxx { ja }
{
r @ { \exp_not:V \c__sjtu_name_info_sep_ja_tl }
- >{ \exp_not:N \normalfont } l
+ > { \exp_not:N \setbaselineskip { 22.5 bp } \exp_not:N \normalfont } l
}
{ author, \l__sjtu_info_supervisors_clist }
} ,
diff --git a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-zh.def b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-zh.def
index a92088896dd..92bac2ce28b 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-zh.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/lang/sjtu-lang-thesis-zh.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Chinese specific definition for thesis (SJTUTeX)}
\ProvidesExplFile{sjtu-lang-thesis-zh.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\__sjtu_info_keys_define:n { zh }
\keys_define:nn { sjtu / info / zh }
{
@@ -105,7 +105,7 @@
{
\exp_not:N \SJTU@CT@D { 5 em }
@ { \exp_not:V \c__sjtu_name_info_sep_zh_tl }
- >{ \exp_not:N \normalfont } l
+ > { \exp_not:N \setbaselineskip { 22.5 bp } \exp_not:N \normalfont } l
}
{
author,
diff --git a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-de.def b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-de.def
index cef48f0b3dc..d513de1edfc 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-de.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-de.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{German name config for generic (SJTUTeX)}
\ProvidesExplFile{sjtu-name-generic-de.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\clist_const:Nn \c__sjtu_name_month_de_clist
{
Januar, Februar, März, April, Mai, Juni,
diff --git a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-en.def b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-en.def
index ef8933ef801..ad7ce493862 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-en.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-en.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{English name config for generic (SJTUTeX)}
\ProvidesExplFile{sjtu-name-generic-en.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\clist_const:Nn \c__sjtu_name_month_en_clist
{
January, February, March, April, May, June,
diff --git a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-ja.def b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-ja.def
index b6b3d5ef33f..b8c553cafac 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-ja.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-ja.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Japanese name config for generic (SJTUTeX)}
\ProvidesExplFile{sjtu-name-generic-ja.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\clist_map_inline:nn
{
{ year } { 年 } ,
diff --git a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-zh.def b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-zh.def
index d8674da5a80..550487e60bb 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-zh.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-generic-zh.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Chinese name config for generic (SJTUTeX)}
\ProvidesExplFile{sjtu-name-generic-zh.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\clist_map_inline:nn
{
{ year } { 年 } ,
diff --git a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-de.def b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-de.def
index a514200058b..7f903e28ce6 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-de.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-de.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{German name config for thesis (SJTUTeX)}
\ProvidesExplFile{sjtu-name-thesis-de.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\clist_const:Nn \c__sjtu_name_month_de_clist
{
Januar, Februar, März, April, Mai, Juni,
diff --git a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-en.def b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-en.def
index 3fd6fa5a86b..a07154ca199 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-en.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-en.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{English name config for thesis (SJTUTeX)}
\ProvidesExplFile{sjtu-name-thesis-en.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\clist_const:Nn \c__sjtu_name_month_en_clist
{
January, February, March, April, May, June,
diff --git a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-ja.def b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-ja.def
index 1a8ebb66106..d728a7a497f 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-ja.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-ja.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Japanese name config for thesis (SJTUTeX)}
\ProvidesExplFile{sjtu-name-thesis-ja.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\clist_map_inline:nn
{
{ year } { 年 } ,
diff --git a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-zh.def b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-zh.def
index 07e547f3225..a0f04fe59eb 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-zh.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/name/sjtu-name-thesis-zh.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Chinese name config for thesis (SJTUTeX)}
\ProvidesExplFile{sjtu-name-thesis-zh.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\clist_map_inline:nn
{
{ year } { 年 } ,
diff --git a/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-de.def b/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-de.def
index a4fc305f5a7..ad6948cbca2 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-de.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-de.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{German scheme (SJTUTeX)}
\ProvidesExplFile{sjtu-scheme-de.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\keys_set_known:nn { sjtu / name }
{
contents = { Inhaltsverzeichnis } ,
diff --git a/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-en.def b/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-en.def
index 5feec1fe222..2cef74deb42 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-en.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-en.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{English scheme (SJTUTeX)}
\ProvidesExplFile{sjtu-scheme-en.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\ctex_if_autoindent_touched:F
{ \ctex_set:n { autoindent = 1.5 em } }
\ctex_patch_cmd:Nnn \quotation { 1.5em } { \parindent }
diff --git a/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-ja.def b/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-ja.def
index 9df2d3efc8c..b04ecf5b089 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-ja.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-ja.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Japanese scheme (SJTUTeX)}
\ProvidesExplFile{sjtu-scheme-ja.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\keys_set_known:nn { sjtu / name }
{
contents = { 目 \protect \quad 次 } ,
diff --git a/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-zh.def b/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-zh.def
index b19a38cf830..48795ade587 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-zh.def
+++ b/Master/texmf-dist/tex/latex/sjtutex/scheme/sjtu-scheme-zh.def
@@ -20,10 +20,10 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Chinese scheme (SJTUTeX)}
\ProvidesExplFile{sjtu-scheme-zh.def}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\keys_set_known:nn { sjtu / name }
{
contents = { 目 \protect \quad 录 } ,
diff --git a/Master/texmf-dist/tex/latex/sjtutex/sjtuarticle.cls b/Master/texmf-dist/tex/latex/sjtutex/sjtuarticle.cls
index e1f07a922e1..0abc90423d5 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/sjtuarticle.cls
+++ b/Master/texmf-dist/tex/latex/sjtutex/sjtuarticle.cls
@@ -28,10 +28,10 @@
Release `2020/10/01' or newer is required to\MessageBreak
compile this document.\MessageBreak\MessageBreak
Please update your TeX distribution}{}}
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Article document class for Shanghai Jiao Tong University (SJTUTeX)}
\ProvidesExplClass{sjtuarticle}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\dim_new:N \l__sjtu_tmp_dim
\skip_new:N \l__sjtu_tmp_skip
\box_new:N \l__sjtu_tmp_box
diff --git a/Master/texmf-dist/tex/latex/sjtutex/sjtureport.cls b/Master/texmf-dist/tex/latex/sjtutex/sjtureport.cls
index a407f871745..52c925057dc 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/sjtureport.cls
+++ b/Master/texmf-dist/tex/latex/sjtutex/sjtureport.cls
@@ -28,10 +28,10 @@
Release `2020/10/01' or newer is required to\MessageBreak
compile this document.\MessageBreak\MessageBreak
Please update your TeX distribution}{}}
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Report document class for Shanghai Jiao Tong University (SJTUTeX)}
\ProvidesExplClass{sjtureport}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\dim_new:N \l__sjtu_tmp_dim
\skip_new:N \l__sjtu_tmp_skip
\box_new:N \l__sjtu_tmp_box
diff --git a/Master/texmf-dist/tex/latex/sjtutex/sjtuthesis.cls b/Master/texmf-dist/tex/latex/sjtutex/sjtuthesis.cls
index 11d49273a31..329f751a8a7 100644
--- a/Master/texmf-dist/tex/latex/sjtutex/sjtuthesis.cls
+++ b/Master/texmf-dist/tex/latex/sjtutex/sjtuthesis.cls
@@ -28,10 +28,10 @@
Release `2020/10/01' or newer is required to\MessageBreak
compile this document.\MessageBreak\MessageBreak
Please update your TeX distribution}{}}
-\GetIdInfo$Id: sjtutex.dtx 78f11bc 2024-06-29 23:01:32 +0800 Alexara Wu <alexarawu@outlook.com> $
+\GetIdInfo$Id: sjtutex.dtx 879eea9 2024-11-06 19:54:03 +0800 Alexara Wu <alexarawu@outlook.com> $
{Thesis document class for Shanghai Jiao Tong University (SJTUTeX)}
\ProvidesExplClass{sjtuthesis}
- {\ExplFileDate}{2.1.3}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\bool_new:N \l__sjtu_tmp_bool
\clist_new:N \l__sjtu_tmp_clist
\dim_new:N \l__sjtu_tmp_dim
@@ -1054,7 +1054,7 @@
\tl_set:Nv \today { l__sjtu_info_date_ \g__sjtu_lang_tl _tl }
\__sjtu_engine_case:nnn
{
- \NewDocumentEnvironment { SJTU@CJK@FTS } { m b }
+ \NewDocumentEnvironment { SJTU@CJK@FTS } { m }
{
\mode_leave_vertical:
\bool_set_false:N \l__sjtu_tmp_bool
@@ -1068,28 +1068,34 @@
\bool_set_true:N \l__sjtu_tmp_bool
}
}
- \hbox_to_wd:nn {#1} {#2}
- } { }
+ \use:e { \exp_not:N \tex_hbox:D to \dim_eval:n {#1} }
+ \bgroup \ignorespaces
+ }
+ { \egroup }
}
{
- \NewDocumentEnvironment { SJTU@CJK@FTS } { m b }
+ \NewDocumentEnvironment { SJTU@CJK@FTS } { m }
{
\mode_leave_vertical:
\cs_set:Npn \CJKglue
{ \skip_horizontal:n { \c_zero_dim plus 1 filll } }
- \hbox_to_wd:nn {#1} {#2}
- } { }
+ \use:e { \exp_not:N \tex_hbox:D to \dim_eval:n {#1} }
+ \bgroup \ignorespaces
+ }
+ { \egroup }
}
{
- \NewDocumentEnvironment { SJTU@CJK@FTS } { m b }
+ \NewDocumentEnvironment { SJTU@CJK@FTS } { m }
{
\mode_leave_vertical:
\ltjsetparameter { kanjiskip = { \c_zero_dim plus 1 filll } }
- \hbox_to_wd:nn {#1} {#2}
- } { }
+ \use:e { \exp_not:N \tex_hbox:D to \dim_eval:n {#1} }
+ \bgroup \ignorespaces
+ }
+ { \egroup }
}
\newcolumntype { \SJTU@CT@D } [ 1 ]
- { >{ \begin { SJTU@CJK@FTS } {#1} } c <{ \end { SJTU@CJK@FTS } } }
+ { > { \begin { SJTU@CJK@FTS } {#1} } c < { \end { SJTU@CJK@FTS } } }
\cs_new:Npn \__sjtu_title_page_info_i:nnn #1#2#3
{
\clist_clear:N \l__sjtu_tmp_clist
@@ -1099,7 +1105,12 @@
{
\exp_not:o { \cs:w c__sjtu_name_ ##1 _ #1 _tl \cs_end: }
&
- \exp_not:o { \cs:w l__sjtu_info_ ##1 _ #1 _tl \cs_end: }
+ \exp_not:N \hbox:n
+ {
+ \exp_not:N \tabular [ t ] { @{} l @{} }
+ \exp_not:o { \cs:w l__sjtu_info_ ##1 _ #1 _tl \cs_end: }
+ \exp_not:N \endtabular
+ }
}
}
\group_begin:
diff --git a/Master/texmf-dist/tex/latex/skdoc/skdoc.cls b/Master/texmf-dist/tex/latex/skdoc/skdoc.cls
index ececc0cbed8..2d060ca8cac 100644
--- a/Master/texmf-dist/tex/latex/skdoc/skdoc.cls
+++ b/Master/texmf-dist/tex/latex/skdoc/skdoc.cls
@@ -8,7 +8,7 @@
%%
%% skdoc documentation class
%%
-%% Copyright (C) 2012-2020 by Simon Sigurdhsson <sigurdhsson@gmail.com>
+%% Copyright (C) 2012-2025 by Simon Sigurdhsson <sigurdhsson@gmail.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -26,7 +26,7 @@
%% and the derived filebase skdoc.cls.
\RequirePackage{expl3}
\ProvidesExplClass{skdoc}
- {2020/11/16}{1.5d}{skdoc documentation class}
+ {2025/01/08}{1.5e}{skdoc documentation class}
\PassOptionsToPackage{log-declarations=false}{xparse}
\LoadClass[ DIV7,
headings=big,
@@ -130,7 +130,7 @@
\cs_undefine:N\cl@linenumber
\cs_undefine:N\p@linenumber
\cs_undefine:N\thelinenumber
- \RequirePackage{minted}
+ \RequirePackage{minted2}
\renewcommand{\theFancyVerbLine}{
\sffamily\tiny\textcolor{lightgray}{
\oldstylenums{\arabic{FancyVerbLine}}}
@@ -1050,7 +1050,7 @@
\underline{\hyperup{#1}}
}
\newglossarystyle{docindex}{
- \glossarystyle{indexgroup}
+ \setglossarystyle{indexgroup}
\renewcommand*{\glspostdescription}{\unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}
\renewenvironment{theglossary}{
\bool_gset_true:N\g__skdoc_no_index_bool
@@ -1062,10 +1062,7 @@
\end{multicols}
\bool_gset_false:N\g__skdoc_no_index_bool
}
- \renewcommand*{\glossaryentryfield}[5]{
- \item\glsentryitem{##1}\glstarget{##1}{##2}
- \ifx\relax##4\relax\else\space(##4)\fi
- ##3\glspostdescription\space ##5}
+ \renewcommand*{\glstreenamefmt}[1]{##1}
\renewcommand*{\glsgroupheading}[1]{
\IfStrEq{##1}{default}{
\item{\descfont\glssymbolsgroupname}
@@ -1129,28 +1126,25 @@
nonumberlist=true
}
\ifx\skdoc@macroname@key\@empty
- \newglossaryentry{#1-general}{
- type=changes,
- description={\generalname{}:~#2},
- parent={#1},
- sort={0},
- nonumberlist=true
- }
- \glsadd[types=changes,format=@gobble]{#1-general}
+ \exp_args:Ne\@changes{\generalname}{!general}{#1}{#2}
\else
- \newglossaryentry{#1-\skdoc@macroname@key}{
- type=changes,
- description={\skdoc@macroname@stylized{}:~#2},
- parent={#1},
- sort={\skdoc@macroname@key},
- nonumberlist=true
- }
- \glsadd[types=changes,format=@gobble]{#1-\skdoc@macroname@key}
+ \exp_args:Nee\@changes{\skdoc@macroname@stylized}{\skdoc@macroname@key}{#1}{#2}
\fi
\@esphack
}
+\DeclareDocumentCommand\@changes{mmmm}{%
+ \newglossaryentry{#3-#2}{
+ type=changes,
+ name={#1},
+ description={#4},
+ parent={#3},
+ sort={#2},
+ nonumberlist=true
+ }
+ \glsadd[types=changes,format=@gobble]{#3-#2}
+}
\newglossarystyle{changelog}{
- \glossarystyle{altlist}
+ \setglossarystyle{altlist}
\renewenvironment{theglossary}{
\bool_gset_true:N\g__skdoc_no_index_bool
\begin{multicols}{2}\begin{description}
@@ -1158,15 +1152,16 @@
\end{description}\end{multicols}
\bool_gset_false:N\g__skdoc_no_index_bool
}
- \renewcommand*{\glossaryentryfield}[5]{
+ \renewcommand*{\glossentry}[2]{
\par\vspace{5\p@}\relax
- \item[\glsentryitem{##1}\glstarget{##1}{##2}]
- \mbox{}\par\nobreak\@afterheading
+ \item[\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}}]
+ \mbox{}\par\nobreak\@afterheading
}
- \renewcommand{\glossarysubentryfield}[6]{%
+ \renewcommand*{\subglossentry}[3]{
\par\hspace*{\itemindent}
- \glssubentryitem{##2}%
- \glstarget{##2}{\strut}##4\glspostdescription\space ##6
+ \glssubentryitem{##2}\glstarget{##2}{\strut}%
+ \glossentryname{##2}:~\glossentrydesc{##2}%
+ \glspostdescription\space ##3
}
}
\newglossary{changes}{gls}{glo}{Changes}
@@ -1231,7 +1226,7 @@
}%
\IfNoValueTF{#1}{}{\keys_set:nn{skdoc@package}{#1}}%
\def\@package{#2}%
- \title{The~\textbf{\pkg*{\@package}}~package}%
+ \title{The~\textbf{\textsf{\@package}}~package}%
}
\DeclareDocumentCommand\ctan{m}{%
\def\@ctan{\url{http://www.ctan.org/pkg/#1}}%
@@ -1254,7 +1249,7 @@
\def\skdocpdfsettings{%
\hypersetup{%
pdfauthor = {\@author\space<\@plainemail>},
- pdftitle = {\@title},
+ pdftitle = {\text_purify:n{\@title}},
pdfsubject = {Documentation~of~LaTeX~package~\@package},
pdfkeywords = {\@package,~LaTeX,~TeX}
}%
diff --git a/Master/texmf-dist/tex/latex/skeldoc/skeldoc.sty b/Master/texmf-dist/tex/latex/skeldoc/skeldoc.sty
index 4754716d028..7c8934c606d 100644
--- a/Master/texmf-dist/tex/latex/skeldoc/skeldoc.sty
+++ b/Master/texmf-dist/tex/latex/skeldoc/skeldoc.sty
@@ -1,4 +1,4 @@
-% Copyright (c) 2021 Magnus Lie Hetland
+% Copyright (c) 2020–2025 Magnus Lie Hetland
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the "Software"), to deal
@@ -18,8 +18,8 @@
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
-\def \skelversion {0.1.2}
-\def \skeldate {2021-02-25}
+\def \skelversion {0.1.3}
+\def \skeldate {2025-01-15}
\RequirePackage{expl3}
@@ -80,6 +80,11 @@
}
+\cs_new:Npn \skel_show:n #1 { #1 }
+\cs_new:Npn \skel_hide:n #1 { }
+
+\cs_set_eq:NN \skel_maybe:n \skel_show:n
+
%% Configuration %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Blue from Solarized (https://ethanschoonover.com/solarized/)
@@ -217,7 +222,17 @@
pseudo-newlines .tl_set:N = \l_skel_pseudo_newlines_default_tl ,
pseudo-newlines .initial:n = {
\\+, \\-, \\+, \\+, \\--, \\+, \\, \\-
- },
+ } ,
+
+ %% Showing/hiding
+
+ hide-notes .bool_set:N = \l_skel_hide_notes_bool ,
+ hide-notes .initial:n = false ,
+ hide-notes .default:n = true ,
+
+ hide-all .code:n = {
+ \cs_set_eq:NN \skel_maybe:n \skel_hide:n
+ } ,
}
@@ -279,7 +294,7 @@
width .initial:n = \l_skel_line_width_default_tl ,
}
-\NewDocumentCommand \skelline { +O{} +g } {
+\NewDocumentCommand \skelline { +O{} +g } { \skel_maybe:n {
\group_begin:
@@ -291,7 +306,7 @@
\group_end:
-}
+} }
%% skelref %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -301,7 +316,7 @@
width .initial:n = \l_skel_ref_width_default_tl ,
}
-\NewDocumentCommand \skelref { +O{} +g } {
+\NewDocumentCommand \skelref { +O{} +g } { \skel_maybe:n {
\group_begin:
@@ -313,7 +328,7 @@
\group_end:
-}
+} }
%% skelcite %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -329,7 +344,7 @@
right .initial:n = \l_skel_cite_right_default_tl ,
}
-\NewDocumentCommand \skelcite { +O{} +g } {
+\NewDocumentCommand \skelcite { +O{} +g } { \skel_maybe:n {
\group_begin:
@@ -343,7 +358,7 @@
\group_end:
-}
+} }
%% skelpar %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -364,7 +379,7 @@
last-width .initial:n = \l_skel_par_last_width_default_tl ,
}
-\NewDocumentCommand \skelpar { +O{} +g } {
+\NewDocumentCommand \skelpar { +O{} +g } { \skel_maybe:n {
\group_begin:
@@ -377,7 +392,7 @@
\group_end:
-}
+} }
% \skelpar implementation -- also used in \skelcaption
@@ -420,7 +435,7 @@
height .initial:n = \l_skel_fig_height_default_tl ,
}
-\NewDocumentCommand \skelfig { +O{} +g } {
+\NewDocumentCommand \skelfig { +O{} +g } { \skel_maybe:n {
\group_begin:
@@ -435,7 +450,7 @@
\group_end:
-}
+} }
%% \skelcaption %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -454,9 +469,14 @@
last-width .initial:n = \l_skel_par_last_width_default_tl ,
}
-\NewDocumentCommand \skelcaption { +O{} +g } {
+\NewDocumentCommand \skelcaption { +O{} +g } { \skel_maybe:n {
- \group_begin:
+ % Dropping the surrounding group, so \@currentlabel, \cref@currentlabel and
+ % any other similar constructs can "leak out" to a following \label command.
+ % Assuming that the the caption is inside a figure or table, or the like,
+ % which acts as the local environment, this should be safe.
+ %
+ % \group_begin:
\skel_args:nn { skelcaption } { #1 }
\int_set:Nn \l_skel_par_lines_int \l_skel_caption_lines_tl
@@ -476,9 +496,9 @@
\skel_par:
}
- \group_end:
+ % \group_end:
-}
+} }
%% \skelpars %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -490,7 +510,7 @@
pars .initial:n = \l_skel_pars_default_int ,
}
-\NewDocumentCommand \skelpars { +O{} +g } {
+\NewDocumentCommand \skelpars { +O{} +g } { \skel_maybe:n {
\group_begin:
@@ -509,7 +529,7 @@
\group_end:
-}
+} }
%% Lists: \skelitems and \skelenum %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -523,17 +543,17 @@
}
-\NewDocumentCommand \skelitems { +O{} +g } {
+\NewDocumentCommand \skelitems { +O{} +g } { \skel_maybe:n {
\skel_list:nnn { #1 } { #2 } { itemize }
-}
+} }
-\NewDocumentCommand \skelenum { +O{} +g } {
+\NewDocumentCommand \skelenum { +O{} +g } { \skel_maybe:n {
\skel_list:nnn { #1 } { #2 } { enumerate }
-}
+} }
\cs_new:Npn \skel_list:nnn #1 #2 #3 {
@@ -587,7 +607,7 @@
stretch .initial:n = \l_skel_tabular_stretch_default_tl ,
}
-\NewDocumentCommand \skeltabular { +O{} +g } {
+\NewDocumentCommand \skeltabular { +O{} +g } { \skel_maybe:n {
\group_begin:
@@ -619,7 +639,7 @@
\group_end:
-}
+} }
%% \skelbib %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -632,7 +652,7 @@
item-lines .initial:n = \l_skel_bib_item_lines_default_int ,
}
-\NewDocumentCommand \skelbib { +O{} +g } {
+\NewDocumentCommand \skelbib { +O{} +g } { \skel_maybe:n {
\group_begin:
@@ -653,7 +673,7 @@
\group_end:
-}
+} }
%% \skelpseudo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -674,7 +694,7 @@
newlines .initial:n = ,
}
-\NewDocumentCommand \skelpseudo { +O{} +g } {
+\NewDocumentCommand \skelpseudo { +O{} +g } { \skel_maybe:n {
\group_begin:
@@ -737,26 +757,28 @@
% new paragraph.
\noindent\ignorespaces
-}
+} }
%% Notes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cs_new:Npn \skel_note:n #1 {
- \leavevmode
- % Smash to avoid messing with vertical alignment of of surrounding text
- \smash{\marginnote{
- \l_skel_note_font_tl
- \textcolor{skel-note-color}{
- \endnotemark
- }
- }}
- \endnotetext{\ignorespaces #1 \unskip}
+ \bool_if:NF \l_skel_hide_notes_bool {
+ \leavevmode
+ % Smash to avoid messing with vertical alignment of of surrounding text
+ \smash{\marginnote{
+ \l_skel_note_font_tl
+ \textcolor{skel-note-color}{
+ \endnotemark
+ }
+ }}
+ \endnotetext{\ignorespaces #1 \unskip}
+ }
\ignorespaces
}
-\NewDocumentCommand \skelnote { +m } {
+\NewDocumentCommand \skelnote { +m } { \skel_maybe:n {
\skel_note:n { #1 }
-}
+} }
\cs_set_eq:NN \skel_note_orig:n \skel_note:n
@@ -840,9 +862,9 @@
list-type = skel-note-list-type,
}
-\NewDocumentCommand \printskelnotes { } {
+\NewDocumentCommand \printskelnotes { } { \skel_maybe:n {
\tl_set:Ne \g_skel_widest_note_label_tl \theendnote
\printendnotes[skel-note-list]
-}
+} }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/Master/texmf-dist/tex/latex/spbmark/spbmark.sty b/Master/texmf-dist/tex/latex/spbmark/spbmark.sty
index 4046c8bf9c0..2e4a13bf4c9 100644
--- a/Master/texmf-dist/tex/latex/spbmark/spbmark.sty
+++ b/Master/texmf-dist/tex/latex/spbmark/spbmark.sty
@@ -9,7 +9,7 @@
% https://creativecommons.org/licenses/by/4.0/legalcode
\NeedsTeXFormat{LaTeX2e}[2018/12/31]
\RequirePackage{xparse}
-\ProvidesExplPackage{spbmark}{2024/07/14}{1.46n}
+\ProvidesExplPackage{spbmark}{2024/12/08}{1.46w}
{Customize superscripts and subscripts}
\cs_generate_variant:Nn \box_set_ht:Nn { cv }
@@ -136,14 +136,19 @@
}
\tl_new:N \g__spb_mark_case_init_tl
+\bool_new:N \l__spb_mark_at_local_bool
\cs_new_protected:Npn \spb_local_case_init:nnn #1#2#3
{
- \str_case:Vn \g__spb_mark_case_init_tl
+ \bool_if:NTF \l__spb_mark_at_local_bool
{
- { super } {#1}
- { sub } {#2}
- { supersub } {#3}
+ \str_case:Vn \g__spb_mark_case_init_tl
+ {
+ { super } {#1}
+ { sub } {#2}
+ { supersub } {#3}
+ }
}
+ { #1#2#3 }
}
\NewDocumentCommand{\spb@both@vsep@assign}
{>{\SplitArgument{1}{,}}m}
@@ -222,7 +227,7 @@
{ \box_move_up:nn {#1} { \box_use:N \g__super_ii_box } }
\cs_new:Npn \spb_box_sub_move_down_ii:n #1
{ \box_move_down:nn {#1} { \box_use:N \g__sub_ii_box } }
-\cs_new:Npn \spb_box_vmove_i:nn #1
+\cs_new:Npn \spb_inner_box_vmove_i:nn #1
{
\str_case:nn {#1}
{
@@ -233,7 +238,7 @@
\cs_generate_variant:Nn \spb_box_super_move_up_ii:n { V }
\cs_generate_variant:Nn \spb_box_sub_move_down_ii:n { V }
\providecommand{\hbox_overlap_center:n}[1]
- { \hbox_to_zero:n { \hss #1\hss } }
+ {\hbox_to_zero:n { \hss #1\hss }}
\cs_new:Npn \spb_hbox_overlap_vmove_ii:n #1
{
\use:c { hbox_overlap_#1:n }
@@ -333,40 +338,70 @@
\tl_set:Nn \maxwd { \dim_max:VV \superwd \subwd }
\tl_set:Nn \l__spb_box_super_wd_i_tl { \box_wd:N \g__super_i_inner_box }
\tl_set:Nn \l__spb_box_sub_wd_i_tl { \box_wd:N \g__sub_i_inner_box }
-\cs_new:Npn \spb_math_print_store_i:nn #1#2
+\providecommand{\NewHookWithArguments}[2]{}
+\providecommand{\UseHookWithArguments}[4]{}
+\NewHookWithArguments{spb/super/before}{2}
+\NewHookWithArguments{spb/super/after}{2}
+\NewHookWithArguments{spb/sub/before}{2}
+\NewHookWithArguments{spb/sub/after}{2}
+\NewHookWithArguments{spb/super*/before}{2}
+\NewHookWithArguments{spb/super*/after}{2}
+\NewHookWithArguments{spb/sub*/before}{2}
+\NewHookWithArguments{spb/sub*/after}{2}
+\NewHookWithArguments{cmd+/super/after}{2}
+\NewHookWithArguments{cmd+/sub/after}{2}
+\cs_new:Npn \spb_math_print_store_i:nnnn #1#2#3#4
{
- \hbox_gset:cn { g__#1_i_inner_box }
- {
- \ensuremath
- {
- \use:c { spb@math@#1@core }
- { \tl_use:c { l__spb_#1_cmd_i_tl }{#2} }
+ \bool_if:NTF \l__spb_nobox_mark_bool
+ { \tl_gset:cn { g__#1_i_nobox_mark_tl } }
+ { \hbox_gset:cn { g__#1_i_inner_box } }
+ {
+ #3{
+ \UseHookWithArguments{spb/#1/before}{2}{#1}{#2}
+ \use:c {#4} { \tl_use:c { l__spb_#1_cmd_i_tl }{#2} }
+ \UseHookWithArguments{spb/#1/after}{2}{#1}{#2}
}
}
\dim_gset:Nv \rlastwd { l__spb_box_#1_wd_i_tl }
}
+\cs_new:Npn \spb_math_print_store_i:nn #1#2
+ {
+ \spb_math_print_store_i:nnnn
+ {#1} {#2} { \ensuremath } { spb@math@#1@core }
+ }
\cs_new:Npn \spb_text_print_store_i:nn #1#2
{
- \hbox_gset:cn { g__#1_i_inner_box }
+ \spb_math_print_store_i:nnnn
+ {#1} {#2} { \use:n } { spb@text#1script@core }
+ }
+\cs_new:Npn \spb_math_print_store_ii:nnnnn #1#2#3#4#5
+ {
+ \hbox_gset:Nn \g__super_ii_box
{
- \use:c { spb@text#1script@core }
- { \tl_use:c { l__spb_#1_cmd_i_tl }{#2} }
+ #3{
+ \UseHookWithArguments{spb/super*/before}{2}{super}{#1}
+ #4{\l__spb_super_cmd_ii_tl{#1}}
+ \UseHookWithArguments{spb/super*/after}{2}{super}{#1}
+ }
+ }
+ \hbox_gset:Nn \g__sub_ii_box
+ {
+ #3{
+ \UseHookWithArguments{spb/sub*/before}{2}{sub}{#2}
+ #5{\l__spb_sub_cmd_ii_tl{#2}}
+ \UseHookWithArguments{spb/sub*/after}{2}{sub}{#2}
+ }
}
- \dim_gset:Nv \rlastwd { l__spb_box_#1_wd_i_tl }
}
\cs_new:Npn \spb_math_print_store_ii:nn #1#2
{
- \hbox_gset:Nn \g__super_ii_box
- { \ensuremath{\spb@math@super@core{\l__spb_super_cmd_ii_tl{#1}}} }
- \hbox_gset:Nn \g__sub_ii_box
- { \ensuremath{\spb@math@sub@core{\l__spb_sub_cmd_ii_tl{#2}}} }
+ \spb_math_print_store_ii:nnnnn {#1} {#2}
+ { \ensuremath } { \spb@math@super@core } { \spb@math@sub@core }
}
\cs_new:Npn \spb_text_print_store_ii:nn #1#2
{
- \hbox_gset:Nn \g__super_ii_box
- { \spb@textsuperscript@core{\l__spb_super_cmd_ii_tl{#1}} }
- \hbox_gset:Nn \g__sub_ii_box
- { \spb@textsubscript@core{\l__spb_sub_cmd_ii_tl{#2}} }
+ \spb_math_print_store_ii:nnnnn {#1} {#2}
+ { \use:n } { \spb@textsuperscript@core } { \spb@textsubscript@core }
}
\cs_set_eq:NN \spbifmath \use_ii:nn
\cs_new:Npn \spb@ifmathtrue { \cs_set_eq:NN \spbifmath \use_i:nn }
@@ -420,7 +455,8 @@
spregex .tl_set:N = \l__spb_super_regex_next_tl,
spregex .initial:n = \c{sub}|\c{textsubscript}|\c{sb}|\_,
sbregex .tl_set:N = \l__spb_sub_regex_next_tl,
- sbregex .initial:n = \c{super}|\c{textsuperscript}|\c{sp}|\^
+ sbregex .initial:n = \c{super}|\c{textsuperscript}|\c{sp}|\^,
+ nobox .bool_set:N = \l__spb_nobox_mark_bool
}
\cs_new:Npn \spb_clear_thiswd:n #1
{
@@ -460,23 +496,29 @@
\exp_args:Nc \NewDocumentCommand {#1}{sO{}O{}mO{}}
{
\group_begin:
+ \bool_set_true:N \l__spb_mark_at_local_bool
\mode_leave_vertical:
\tl_gset:Nn \g__spb_mark_case_init_tl {#1}
\spb_set:n { ##2,##3,##5 }
\spb_mode_switch:nnn {#1} {##4} { i }
- \spb_content_hbox_set:nn {#1} {##1}
- \spb_ht_dp_assign:nnnn {#1} {#1} { i } { _outer }
- \box_use:c { g__#1_i_outer_box }
+ \bool_if:NTF \l__spb_nobox_mark_bool
+ { \tl_use:c { g__#1_i_nobox_mark_tl } }
+ {
+ \spb_mark_box_set:nn {#1} {##1}
+ \spb_ht_dp_assign:nnnn {#1} {#1} { i } { _outer }
+ \box_use:c { g__#1_i_outer_box }
+ }
\exp_last_unbraced:Nx
\group_end:
{
+ \UseHookWithArguments{cmd+/#1/after}{2}{#1}{##4}
\exp_args:Nv \str_if_eq:nnT
{ l__spb_#1_thiswd_mode_tl } { auto }
{ \spb_clear_thiswd:n {#1} }
}
}
}
-\cs_new_protected:Npn \spb_content_hbox_set:nn #1#2
+\cs_new_protected:Npn \spb_mark_box_set:nn #1#2
{
\dim_gset:Nn \clastwd { (\llastwd + \rlastwd)/2 }
\tl_set:Nn \abs@hmove@i { \dim_abs:v { l__spb_#1_hmove_tl } }
@@ -487,7 +529,7 @@
\hbox_overlap_left:n
{
\hbox_overlap_right:n
- { \spb_box_vmove_i:nn {#1} { \tl_use:c { l__spb_#1_vmove_tl } } }
+ { \spb_inner_box_vmove_i:nn {#1} { \tl_use:c { l__spb_#1_vmove_tl } } }
\skip_horizontal:n { \abs@hmove@i }
}
\IfBooleanT{#2}
@@ -499,7 +541,7 @@
{
\hbox_to_wd:nn
{ \tl_use:c { l__spb_box_#1_wd_i_tl } + \tl_use:c { l__spb_#1_hmove_tl } }
- { \hss\spb_box_vmove_i:nn {#1} { \tl_use:c { l__spb_#1_vmove_tl } } }
+ { \hss\spb_inner_box_vmove_i:nn {#1} { \tl_use:c { l__spb_#1_vmove_tl } } }
}
}
\dim_gset:Nv \llastwd { l__spb_box_#1_wd_i_tl }
@@ -520,6 +562,7 @@
\NewDocumentCommand{\supersub}{sO{}mmO{}}
{
\group_begin:
+ \bool_set_true:N \l__spb_mark_at_local_bool
\mode_leave_vertical:
\tl_gset:Nn \g__spb_mark_case_init_tl { supersub }
\spb_set:n {#2,#5}
diff --git a/Master/texmf-dist/tex/latex/spelatex/spelatex.sty b/Master/texmf-dist/tex/latex/spelatex/spelatex.sty
index 1c2e1185b39..f1d034774f7 100644
--- a/Master/texmf-dist/tex/latex/spelatex/spelatex.sty
+++ b/Master/texmf-dist/tex/latex/spelatex/spelatex.sty
@@ -23,16 +23,20 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{spelatex}
- [2024/09/09 v0.92 SpeLaTeX - Speech-enabled LaTeX (DMW and LVP)]
-\def\fileversion{0.92}
-\def\filedate{2024/09/09}
+ [2024/11/04 v0.94b SpeLaTeX - Speech-enabled LaTeX (DMW and LVP)]
+\def\fileversion{0.94b}
+\def\filedate{2024/11/04}
%%
+
%% \begin{spelchunk}
\RequirePackage{expl3}
\RequirePackage{hyperref}
+\AtBeginDocument{
+ \hypersetup{colorlinks=false,hidelinks=true}
+}
\RequirePackage{xcolor}
\RequirePackage{ifthen}
\RequirePackage{verbatim}
@@ -40,19 +44,6 @@
\RequirePackage{newfile}
\RequirePackage{rotating}
\RequirePackage{babel}
-\hypersetup{backref=true,
- breaklinks=true,
- colorlinks=true,
- citecolor=black,
- filecolor=black,
- hyperindex=true,
- linkcolor=black,
- pageanchor=true,
- pagebackref=true,
- pagecolor=black,
- pdfpagemode=UseOutlines,
- bookmarksopen=true,
- urlcolor=black}
\RequirePackage{kvoptions}
\RequirePackage{xkeyval}
\SetupKeyvalOptions{
@@ -65,7 +56,7 @@
\DeclareBoolOption[false]{disabled}
\DeclareBoolOption[false]{extramath}
\ProcessKeyvalOptions*
-\DeclareRobustCommand{\spelatex}{S\kern-0.3ex\raisebox{-0.1ex}{\rotatebox{-15}{p}}\kern-0.25ex\raisebox{0.1ex}{\rotatebox{10}{e}}\kern-0.1ex\LaTeX}
+\DeclareRobustCommand{\spelatex}{S\kern-0.3ex\raisebox{-0.1ex}{\rotatebox{-15}{p}}\kern-0.25ex\raisebox{0.1ex}{\rotatebox{10}{e}}\kern-0.1ex\-\LaTeX}
\DeclareRobustCommand{\spelpl}{\texttt{spel-wizard.pl}}
\newoutputstream{chunk}
\newoutputstream{spelidx}
@@ -80,11 +71,13 @@
\addtostream{spelidx}{chunkdir|\chunkdir}
\addtostream{spelidx}{server|\spel@server}
\ExplSyntaxOn
-\newcommand\linksdir{\str_if_eq:VnTF{\spel@server}{local}{./\audiodir}{\spel@server/\audiodir}}
+\newcommand\linksdir{
+ \str_if_eq:VnTF{\spel@server}{local}{./\audiodir}{\spel@server/\audiodir}
+}
\ExplSyntaxOff
\ifspel@disabled\newcommand{\spel@idxwrite}[2]{}\else
\newcommand{\spel@idxwrite}[2]{%
- \typeout{spel: Generating #1 - #2}%
+ \typeout{SpeLaTeX: Generating #1 - #2}%
\addtostream{spelidx}{#1|#2}%
}
\fi
@@ -144,12 +137,11 @@
\expandafter\gdef\csname #1\endcsname##1{%
\spel@chunkwrite{#1}{##1}
\csname spel@@#1\endcsname{\href{\linksdir/#1.\spel@format}{##1}}
- }
- \expandafter\AtBeginDocument{
\spel@idxwrite{#1}{#1}
}
}
\fi
+\spel@idxwrite{language}{\languagename}
\spel@registerelement{title}
\spel@registerelement{date}
\spel@registerelement{author}
@@ -195,10 +187,18 @@
\spel@chunkwrite{\spel@@optpart star-\thespel@spart}{#1}%
}
\fi
+\newif\ifspel@inschapter
+\spel@inschapterfalse
\ifspel@disabled\else
+\ifx\thechapter\@undefined\else%
+\renewcommand\thechapter{%
+\ifspel@inschapter star-\thespel@schapter\else\@arabic\c@chapter\fi%
+}
+\fi
\ifx\chapter\@undefined\else
\let\spel@@chapter\@chapter
\def\@chapter[#1]#2{%
+ \spel@inschapterfalse%
\setcounter{spel@chunk}{0}% need this because counter resetting fails
\spel@@chapter[#1]{%
\href{\linksdir/\spel@@optpart\thechapter.\spel@format}{#2}}%
@@ -208,9 +208,10 @@
\fi
\fi
\ifspel@disabled\else
-\ifx\schapter\@undefined\else
+\ifx\chapter\@undefined\else
\let\spel@@schapter\@schapter
\def\@schapter#1{%
+ \spel@inschaptertrue%
\stepcounter{spel@schapter}%
\setcounter{spel@chunk}{0}% need this because counter resetting fails
\spel@@schapter{%
@@ -230,8 +231,10 @@
\setcounter{spel@chunk}{0}% need this because counter resetting fails
\spel@@sect{#1}{#2}{#3}{#4}{#5}{#6}[#7]{%
\href{\linksdir/\spel@@optpart\thesubparagraph.\spel@format}{#8}\hfill%
- \href{\linksdir/\spel@@optpart\thesubparagraph.m3u}{\textcolor{spel@color@right}{$\triangleright$}}}%
- \def\spel@@label{\ifnum #2>\c@secnumdepth\else#1 \csname the#1\endcsname\fi}
+ \href{\linksdir/\spel@@optpart\thesubparagraph.m3u}
+ {\textcolor{spel@color@right}{$\triangleright$}}}%
+ \def\spel@@label{%
+ \ifnum #2>\c@secnumdepth paragraph\else#1 \csname the#1\endcsname\fi}
\spel@idxwrite{\spel@@label}{\spel@@optpart\thesubparagraph}%
\spel@chunkwrite{\spel@@optpart\thesubparagraph}{#8}%
}
@@ -242,8 +245,8 @@
\stepcounter{spel@ssect}%
%\setcounter{spel@chunk}{0}% need this because counter resetting fails
\spel@@ssect{#1}{#2}{#3}{#4}{%
- \href{\linksdir/\spel@@optpart\thesubparagraph-star-\thespel@ssect.\spel@format}%
- {#5}}%
+\href{\linksdir/\spel@@optpart\thesubparagraph-star-\thespel@ssect.\spel@format}%
+ {#5}}%
\spel@idxwrite{section}{\spel@@optpart\thesubparagraph-star-\thespel@ssect}%
\spel@chunkwrite{\spel@@optpart\thesubparagraph-star-\thespel@ssect}{#5}%
}
@@ -254,7 +257,9 @@
\stepcounter{spel@footnote}%
\settowidth\spel@mptboxwidth{\usebox\spel@mptbox}%
\spel@@fntext{%
- \hspace*{-\spel@mptboxwidth}\href{\linksdir/footnote-\thespel@footnote.\spel@format}{\usebox\spel@mptbox}#1}%
+ \hspace*{-\spel@mptboxwidth}%
+ \href{\linksdir/footnote-\thespel@footnote.\spel@format}
+ {\usebox\spel@mptbox}#1}%
\spel@idxwrite{footnote}{footnote-\thespel@footnote}%
\spel@chunkwrite{footnote-\thespel@footnote}{#1}%
}
@@ -271,28 +276,107 @@
\settowidth\spel@mptboxwidth{\usebox\spel@mptbox}%
\spel@idxwrite{item}{\spel@@optpart\thesubparagraph-\thespel@chunk}%
\spel@chunkwrite{\spel@@optpart\thesubparagraph-\thespel@chunk}{#1}%
- \item \hspace*{-\spel@mptboxwidth}\href{\linksdir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}{\usebox\spel@mptbox}#1}
+ \item \hspace*{-\spel@mptboxwidth}%
+ \href{\linksdir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}
+ {\usebox\spel@mptbox}#1}
\def\spelitem@inttwo#1#2{%
\stepcounter{spel@chunk}%
\settowidth\spel@mptboxwidth{\usebox\spel@mptbox}%
\spel@idxwrite{item}{\spel@@optpart\thesubparagraph-\thespel@chunk}%
\spel@chunkwrite{\spel@@optpart\thesubparagraph-\thespel@chunk}{#1 . #2}%
-\item[#1] \hspace*{-\spel@mptboxwidth}\href{\linksdir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}{\usebox\spel@mptbox}#2}
-\ifspel@disabled\else
-\let\spel@@caption\caption
-\renewcommand\caption[2][]{%
- \stepcounter{spel@chunk}%
- \spel@idxwrite{caption}{\spel@@optpart\thesubparagraph-\thespel@chunk}%
- \spel@chunkwrite{\spel@@optpart\thesubparagraph-\thespel@chunk}{#2}%
- \spel@@caption[#1]{\protect\href{\linksdir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}{#2}}
-}
+ \item[#1] \hspace*{-\spel@mptboxwidth}%
+ \href{\linksdir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}
+ {\usebox\spel@mptbox}#2}
+\ifspel@disabled
+ \newcommand\spelcaption[2][]{\caption[#1]{#2}}
+\else
+ \newcommand\spelcaption[2][]{%
+ \stepcounter{spel@chunk}%
+ \spel@idxwrite{caption}{\spel@@optpart\thesubparagraph-\thespel@chunk}%
+ \spel@chunkwrite{\spel@@optpart\thesubparagraph-\thespel@chunk}{#2}%
+ \caption[#1]{%
+\protect\href{\linksdir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}
+ {#2}}
+ }
\fi
+\newcommand\spelwrapenvironment@b[1]{
+ \NewDocumentEnvironment{spel#1}{+b}{
+ \<<<[arealink]{%
+ \begin{#1}
+ ##1
+ \end{#1}%
+ }\hspace*{-0.75ex}%
+ }{}%
+}
+\newcommand\spelwrapenvironment@ob[1]{
+ \NewDocumentEnvironment{spel#1}{O{}+b}{
+ \<<<[arealink]{
+ \begin{#1}[##1]
+ ##2
+ \end{#1}
+ }\hspace*{-0.75ex}%
+ }{}
+}
+\newcommand\spelwrapenvironment@mb[1]{
+ \NewDocumentEnvironment{spel#1}{m+b}{
+ \<<<[arealink]{
+ \begin{#1}{##1}
+ ##2
+ \end{#1}
+ }\hspace*{-0.75ex}%
+ }{}
+}
+\newcommand\spelwrapenvironment@mob[1]{
+ \NewDocumentEnvironment{spel#1}{mO{}+b}{
+ \<<<[arealink]{
+ \begin{#1}{##1}[##2]
+ ##3
+ \end{#1}
+ }\hspace*{-0.75ex}%
+ }{}
+}
+\newcommand\spelwrapenvironment@omb[1]{
+ \NewDocumentEnvironment{spel#1}{O{}m+b}{
+ \<<<[arealink]{
+ \begin{#1}[##1]{##2}
+ ##3
+ \end{#1}
+ }\hspace*{-0.75ex}%
+ }{}
+}
+\AtBeginDocument{
+ \@ifpackageloaded{amsmath}{
+ \message{SpeLaTeX: detected amsmath package}
+ \spelmacpp{ensuremath}[1]{#1}
+ \@ifpackageloaded{empheq}{
+ \message{SpeLaTeX: detected package empheq}
+ \spelwrapenvironment@omb{empheq}}{}
+ \@ifpackagewith{empheq}{overload}{
+ \message{..........with overload option}
+ \spelwrapenvironment@ob{gather}
+ \spelwrapenvironment@ob{align}
+ \spelwrapenvironment@mob{alignat}
+ }
+ {
+ \message{..........without overload option}
+ \spelwrapenvironment@b{gather}
+ \spelwrapenvironment@b{align}
+ \spelwrapenvironment@mb{alignat}
+ }
+ }
+ {}
+}
\newlength\spel@mptboxwidth
\newsavebox\spel@mptbox
-\savebox\spel@mptbox{\textcolor{spel@color@left}{\quad\strut\tiny\raisebox{0.4ex}{$\triangleright$}\,}}
+\savebox\spel@mptbox{%
+ \textcolor{spel@color@left}
+ {\quad\strut\tiny\raisebox{0.4ex}{$\triangleright$}\,}%
+}
\newif\ifspel@chunkarealink
\define@key{spelchunk}{arealink}[]{\spel@chunkarealinktrue}
-\ifspel@disabled\def\spelchunk{}\else
+\ifspel@disabled
+ \def\spelchunk{\@ifnextchar[{\spelchunk@optdisabled}{spelchunk@intdisabled}}%
+\else
\def\spelchunk{%
\catcode`\^^M=\active%
\stepcounter{spel@chunk}%
@@ -300,60 +384,65 @@
\@ifnextchar[{\catcode`\^^M=5\spelchunk@opt}{\catcode`\^^M=5\spelchunk@int}}%
\fi
\ifspel@disabled\def\endspelchunk{}\else
-\def\endspelchunk{%
- \end{VerbatimOut}%
+\def\endspelchunk{
+ \end{VerbatimOut}
\catcode`\^^M=5\relax%
\ifspel@chunkarealink%
- \href{\linksdir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}{\input{./\chunkdir/\spel@@optpart\thesubparagraph-\thespel@chunk}}%
+ \href{\linksdir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}
+ {\input{./\chunkdir/\spel@@optpart\thesubparagraph-\thespel@chunk}}%
\else%
\settowidth\spel@mptboxwidth{\usebox\spel@mptbox}%
- \hspace*{-\spel@mptboxwidth}\href{\linksdir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}{\usebox\spel@mptbox}\input{./\chunkdir/\spel@@optpart\thesubparagraph-\thespel@chunk}%
+ \hspace*{-\spel@mptboxwidth}%
+ \href{\linksdir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}
+ {\usebox\spel@mptbox}%
+ \input{./\chunkdir/\spel@@optpart\thesubparagraph-\thespel@chunk}%
\fi%
\spel@chunkarealinkfalse%
}%
\fi
\def\spelchunk@opt[#1]{\setkeys{spelchunk}{#1}\spelchunk@int}
+\def\spelchunk@optdisabled[#1]{\setkeys{spelchunk}{#1}\spelchunk@intdisabled}
\def\spelchunk@int{%
\VerbatimEnvironment
\begin{VerbatimOut}{\chunkdir/\spel@@optpart\thesubparagraph-\thespel@chunk.tex}}
-\ExplSyntaxOn
-\NewDocumentCommand{\spelchunkatom}{O{}m}{
+\def\spelchunk@intdisabled{}
+\NewDocumentCommand{\spelchunkatom}{O{}+m}{%
+ \ifspel@disabled #2\else%
\stepcounter{spel@chunk}%
\spel@idxwrite{chunk}{\spel@@optpart\thesubparagraph-\thespel@chunk}%
- \setkeys{spelchunk}{#1}
- \scantokens{
- \makeatletter
- \begin{spelverbatimwrite}{\chunkdir/\spel@@optpart\thesubparagraph-\thespel@chunk.tex}
- #2
- \end{spelverbatimwrite}
- \makeatother
- }
+ \setkeys{spelchunk}{#1}%
+ \makeatletter%
+ \scantokens{%
+\begin{spelverbatimwrite}{\chunkdir/\spel@@optpart\thesubparagraph-\thespel@chunk.tex}
+ #2
+\end{spelverbatimwrite}
+ }%
+ \makeatother
\ifspel@chunkarealink%
- \href{\linksdir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}{\input{./\chunkdir/\spel@@optpart\thesubparagraph-\thespel@chunk}}%
+ \href{\linksdir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}
+ {\input{./\chunkdir/\spel@@optpart\thesubparagraph-\thespel@chunk}}%
\else%
\settowidth\spel@mptboxwidth{\usebox\spel@mptbox}%
- \hspace*{-\spel@mptboxwidth}\href{\linksdir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}{\usebox\spel@mptbox}\input{./\chunkdir/\spel@@optpart\thesubparagraph-\thespel@chunk}%
+ \hspace*{-\spel@mptboxwidth}%
+ \href{\linksdir/\spel@@optpart\thesubparagraph-\thespel@chunk.\spel@format}
+ {\usebox\spel@mptbox}\input{./\chunkdir/\spel@@optpart\thesubparagraph-\thespel@chunk}%
\fi%
\spel@chunkarealinkfalse%
+ \fi%
}
\def\spelverbatimwrite#1{%
- \@bsphack
+ \@bsphack%
\openoutputfile{#1}{chunk}%
\def\verbatim@processline{\addtostream{chunk}{\the\verbatim@line}}%
\let\do\@makeother\dospecials
\catcode`\^^M\active \catcode`\^^I=12
\verbatim@start}%
-\def\endspelverbatimwrite{%
- \closeoutputstream{chunk}%
- \@esphack%
+\def\endspelverbatimwrite{
+ \closeoutputstream{chunk}
+ \@esphack
}
-\ifspel@disabled
- \newcommand\<<<[2][]{#2}
-\else
- \def\<<<{\spelchunkatom}
-\fi
-\ExplSyntaxOff
+\def\<<<{\spelchunkatom}
\def\spelchunkad{%
\catcode`\^^M=\active
\@ifnextchar[{\catcode`\^^M=5\spelchunk@opt}{\catcode`\^^M=5\spelchunk@int}}
@@ -386,12 +475,14 @@
\spelmacpp{scriptsize}{}
\spelmacpp{tiny}{}
\spelmacpp{minuscule}{}
-\spelmacpp{textsf}[1]{keep}
-\spelmacpp{textit}[1]{keep}
-\spelmacpp{texttt}[1]{keep}
-\spelmacpp{textbf}[1]{keep}
-\spelmacpp{mathbb}[1]{keep}
-\spelmacpp{mathcal}[1]{keep}
+\spelmacpp{textsf}[1]{#1}
+\spelmacpp{textit}[1]{#1}
+\spelmacpp{texttt}[1]{#1}
+\spelmacpp{textbf}[1]{#1}
+\spelmacpp{mathbb}[1]{#1}
+\spelmacpp{mathcal}[1]{#1}
+\spelmacpp{url}[1]{#1}
+\spelmacpp{phantom}[1]{}
\spelmacpp{quad}{}
\spelmacpp{qquad}{}
\spelmacpp{displaystyle}{}
@@ -399,14 +490,14 @@
\spelmacpp{strut}{}
\spelmacpp{mathstrut}{}
\spelmacpp{label}[1]{}
-\spelmacpp{fbox}[1]{keep}
+\spelmacpp{fbox}[1]{#1}
\ExplSyntaxOn
\NewDocumentCommand{\spelenvpp}{moom}
{
\addtostream{spelidx}{envpp|#1|#2|#3|#4}
}
\ExplSyntaxOff
-\spelenvpp{center}{keep}
+\spelenvpp{center}{#1}
\ExplSyntaxOn
\NewDocumentCommand{\spelmacad}{moom}
{
@@ -416,17 +507,20 @@
\spelmacad{spelatex}{spee-lay-tech}
\spelmacad{spelpl}{spel wizzard dot pl}
\spelmacad{LaTeX}{lay-tech}
+\spelmacad{LuaLaTeX}{lua lay-tech}
\spelmacad{TeX}{tech}
-\spelmacad{textsf}[1]{#1}
-\spelmacad{texttt}[1]{#1}
-\spelmacad{textit}[1]{#1}
-\spelmacad{emph}[1]{#1}
-\spelmacad{underline}[1]{#1}
+\spelmacpp{textsf}[1]{#1}
+\spelmacpp{texttt}[1]{#1}
+\spelmacpp{textit}[1]{#1}
+\spelmacpp{mathit}[1]{\string\text{#1}}
+\spelmacpp{emph}[1]{#1}
+\spelmacpp{underline}[1]{#1}
\spelmacad{mbox}[1]{#1}
\spelmacad{text}[1]{#1}
-\spelmacad{nobreakspace}{#1}
-\spelmacad{textasciitilde}[1]{ }
+\spelmacpp{nobreakspace}{#1}
+\spelmacpp{textasciitilde}[1]{ }
\spelmacad{textbackslash}{backslash}
+\spelmacad{textsuperscript}[1]{#1}
\spelmacad{footnote}[1]{}
\spelmacad{pm}{@{i18n(plusminus)}}
\spelmacad{ldots}{...}
@@ -440,11 +534,17 @@
}
\ExplSyntaxOff
\spelenvad{center}{}{}
+\ExplSyntaxOn
+\NewDocumentCommand{\spelinlad}{mm}{#1}
+\spelmacpp{spelinlad}[2]{#2}
+\ExplSyntaxOff
\ifspel@extramath
\DeclareRobustCommand{\setenum}[1]{\left\{#1\right\}}
\spelmacad{setenum}[1]{@{i18n(Setenum,#1)}}
\DeclareRobustCommand{\setdesc}[1]{\left\{#1\right\}}
\spelmacad{setdesc}[1]{@{i18n(Setdesc,#1)}}
+\DeclareRobustCommand{\unitof}[1]{\left[#1\right]}
+\spelmacad{unitof}[1]{@{i18n(Unitof,#1)}}
\fi
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/srdp-mathematik/srdp-mathematik.sty b/Master/texmf-dist/tex/latex/srdp-mathematik/srdp-mathematik.sty
index 5612d145c33..d93e32b86b7 100644
--- a/Master/texmf-dist/tex/latex/srdp-mathematik/srdp-mathematik.sty
+++ b/Master/texmf-dist/tex/latex/srdp-mathematik/srdp-mathematik.sty
@@ -10,8 +10,7 @@
%
\NeedsTeXFormat{LaTeX2e}[1996/12/26]
-\ProvidesPackage{srdp-mathematik}[2024/03/29 v1.13.0 Standard-Schularbeitsformate]
-
+\ProvidesPackage{srdp-mathematik}[2024/11/24 v1.13.1 Standard-Schularbeitsformate]
\usepackage{color}
\usepackage{xcolor}
@@ -46,8 +45,6 @@
\usepackage{eso-pic}
\usepackage{esvect}
\usepackage{phaistos}
-\usepackage{substitutefont}
-\substitutefont{LPH}{\familydefault}{cmr}
\renewcommand{\vec}[1]{\vv{#1}}
\usepackage{graphicx}
\usepackage{setspace}
diff --git a/Master/texmf-dist/tex/latex/sshrc-insight/sshrc-insight.cls b/Master/texmf-dist/tex/latex/sshrc-insight/sshrc-insight.cls
new file mode 100644
index 00000000000..6806cae05a8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/sshrc-insight/sshrc-insight.cls
@@ -0,0 +1,213 @@
+%%
+%% This is file `sshrc-insight.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% sshrc-insight.dtx (with options: `class')
+%%
+%% This is a generated file.
+%%
+%% Copyright 2024 Tristan Miller
+%% Copyright 2021 Steven B. Segletes
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008 or later.
+%%
+\NeedsTeXFormat{LaTeX2e}[2018-04-01]
+\DeclareRelease{2024}{}{sshrc-insight.cls}
+\DeclareRelease{v2024}{}{sshrc-insight.cls}
+\DeclareCurrentRelease{v2024.1.0}{2024-10-21}
+\ProvidesClass{sshrc-insight}
+[2024-10-21 v2024.1.0 Class for SSHRC Insight Grant proposals]
+\LoadClass[12pt,letterpaper]{article}
+
+%% Conditionals for detecting the typesetting engine
+\RequirePackage{ifxetex,ifluatex}
+\newif\ifxetexorluatex
+\ifxetex
+ \xetexorluatextrue
+\else
+ \ifluatex
+ \xetexorluatextrue
+ \else
+ \xetexorluatexfalse
+ \fi
+\fi
+
+\RequirePackage{subfiles}
+\ifxetexorluatex
+\RequirePackage{fontspec}
+\defaultfontfeatures{Mapping=tex-text}
+\setromanfont{Times New Roman}
+\else
+\RequirePackage[T1]{fontenc} % T1 font encoding
+\RequirePackage{newtxtext} % Use Times for main text
+\RequirePackage{newtxmath} % Use Times for math
+\fi
+\RequirePackage[letterpaper,
+ left=0.75in,
+ top=0.75in,
+ bottom=0.75in,
+ right=0.75in,
+ ]{geometry}
+\RequirePackage{nopageno} % No page numbers
+%% Compact title for subfiles
+\RequirePackage[normalem]{ulem}
+\NewDocumentCommand{\subfiletitle}
+ {m}
+ {%
+ \newpage
+ \ifSubfilesClassLoaded{
+ \@ifpackageloaded{hyperref}
+ {\hypersetup{pdftitle=\GetTranslation{#1}}}
+ {}
+ }
+ {\phantomsection\addcontentsline{toc}{section}{\GetTranslation{#1}}}
+ \begingroup
+ \centering\bfseries\MakeUppercase{\uline{\GetTranslation{#1}}}
+ \par
+ \vskip 1.5em%
+ \endgroup
+ \par\@afterindentfalse\@afterheading
+ }
+
+%% Suppress section numbers in table of contents
+\addtocontents{toc}{\protect\renewcommand{\protect\numberline}[1]{}}
+
+%% Localized (sub)section headings
+\NewDocumentCommand{\subfilesection}
+ {m}
+ {\section*{\GetTranslation{#1}}}
+\NewDocumentCommand{\subfilesubsection}
+ {m}
+ {\subsection*{\GetTranslation{#1}}}
+%% Count characters, adapted from code by Steven B. Segletes at
+%% https://tex.stackexchange.com/a/587567/22603
+\RequirePackage{tokcycle}[2021-03-10]
+\RequirePackage{xcolor}
+\newcounter{wordcount}
+\newcounter{lettercount}
+\newcounter{wordlimit}
+\newif\ifinword
+%% USER PARAMETERS
+\newif\ifrunningcount
+\newif\ifsummarycount
+\def\limitcolor{red}
+\setcounter{wordlimit}{0}
+%%%
+%% \tc@defx is like \def, but expands the replacement text once prior
+%% to assignment
+\newcommand\addtomacro[2]{\tc@defx#1{#1#2}}
+\newcommand\changecolor[1]
+ {\tctestifx{.#1}{}{\addcytoks{\color{#1}{}}%
+ \tc@defx\currentcolor{#1}}}
+\newcommand\dumpword{%
+ \addcytoks[1]{\accumword}%
+ \ifinword\stepcounter{wordcount}\stepcounter{lettercount}
+ \ifrunningcount\addcytoks[x]{$^{\thewordcount,\thelettercount}$}\fi
+ \ifnum\thewordcount=\value{wordlimit}\relax%
+ \changecolor{\limitcolor}\fi
+ \fi%
+ \inwordfalse
+ \def\accumword{}}
+\newcommand\addletter[1]{%
+ \stepcounter{lettercount}%
+ \tctestifcatnx A#1{\inwordtrue}{\dumpword}%
+ \addtomacro\accumword{#1}}
+\xtokcycleenvironment\countem
+ {\addletter{##1}}
+ {\dumpword\groupedcytoks{\processtoks{##1}%
+ \dumpword\expandafter}\expandafter
+ \changecolor\expandafter{\currentcolor}}
+ {\dumpword\addcytoks{##1}}
+ {\dumpword\addcytoks{##1}}
+ {\stripgroupingtrue\def\accumword{}\def\currentcolor{.}
+ \setcounter{wordcount}{0}\setcounter{lettercount}{0}}
+ {\dumpword\ifsummarycount\tcafterenv{%
+ \par(Wordcount=\thewordcount, Lettercount=\thelettercount)}\fi}
+
+\def\characterlimit{3800}
+\newcommand{\countchars}[2][\characterlimit]
+ {\countem #2\endcountem\par\hfill
+ \GetTranslation{Character count:}
+ \thelettercount\ \GetTranslation{of} #1
+ }
+\reversemarginpar
+\NewDocumentCommand{\sshrcsupported}
+ {}
+ {%
+ \leavevmode%
+ \marginparsep=0pt%
+ \marginpar{\raggedleft\mbox{\textasteriskcentered~}}%
+ }
+\NewDocumentCommand{\sshrcstudent}
+ {}
+ {\textsuperscript{+}}
+\AtBeginDocument{
+ \@ifpackageloaded{biblatex}
+ {
+ \ifSubfilesClassLoaded
+ {
+ % Force subfiles to read the main file's bibliography
+ \RequirePackage[bblfile=\preamble@file]{biblatex-readbbl}
+ }
+ {}
+ \renewcommand*{\mkbibnamefamily}[1]{%
+ \ifitemannotation{student}
+ {#1\sshrcstudent}
+ {#1}%
+ }
+ \renewbibmacro*{begentry}
+ {%
+ \ifkeyword{sshrc}
+ {\makebox[0pt][r]{\textasteriskcentered~}}
+ {}%
+ }
+ }
+ {}
+}
+%% Disable citation hyperlinks in subfiles
+\ifSubfilesClassLoaded{
+ \PassOptionsToPackage{hyperref=false}{biblatex}
+}{}
+%% Localizations
+\RequirePackage{translations}
+\DeclareTranslation{french}{1. Relevant research contributions over the last six years}{1. Contributions pertinentes à la recherche faites au cours des six dernières années}
+\DeclareTranslation{french}{2. Other research contributions}{2. Autres contributions à la recherche}
+\DeclareTranslation{french}{3. Most significant career research contributions}{3. Plus importantes contributions à la recherche faites au cours d'une carrière}
+\DeclareTranslation{french}{4. Contributions to training}{4. Contributions à la formation}
+\DeclareTranslation{french}{Budget Justification}{Justification du budget}
+\DeclareTranslation{french}{Career Interruptions and Special Circumstances}{Interruptions de carrière et circonstances spéciales}
+\DeclareTranslation{french}{Context}{Contexte}
+\DeclareTranslation{french}{Creative outputs}{Réalisations artistiques}
+\DeclareTranslation{french}{Description of previous and ongoing research results}{Description des résultats de recherche les plus récents ou en cours}
+\DeclareTranslation{french}{Description of proposed student training strategies}{Description des stratégies proposées de formation des étudiants}
+\DeclareTranslation{french}{Description of the research team}{Description de l'équipe de recherche}
+\DeclareTranslation{french}{Detailed Description}{Description détaillée}
+\DeclareTranslation{french}{Exclusion of Potential Reviewers}{Exclusion d'évaluateurs éventuels}
+\DeclareTranslation{french}{Expected Outcomes}{Résultats escomptés}
+\DeclareTranslation{french}{Forthcoming contributions}{Contributions à venir}
+\DeclareTranslation{french}{Knowledge Mobilization Plan}{Plan de mobilisation des connaissances}
+\DeclareTranslation{french}{List of References}{Liste des références}
+\DeclareTranslation{french}{Methodology}{Méthodologie}
+\DeclareTranslation{french}{Nonrefereed contributions}{Contributions non soumises à des comités de lecture}
+\DeclareTranslation{french}{Objectives}{Objectifs}
+\DeclareTranslation{french}{Other refereed contributions}{Autres contributions soumises à des comités de lecture}
+\DeclareTranslation{french}{Previous Critiques}{Réponse à des critiques précédentes}
+\DeclareTranslation{french}{Refereed contributions}{Publications soumises à des comités de lecture}
+\DeclareTranslation{french}{Request for Multi/Interdisciplinary Evaluation}{Demande d'évaluation interdisciplinaire ou multidisciplinaire}
+\DeclareTranslation{french}{Research Contributions}{Contributions à la recherche}
+\DeclareTranslation{french}{Research Team, Student Training, Previous Output}{Équipe de recherche, résultats les plus récents et formation des étudiants}
+\DeclareTranslation{french}{Research-creation Support Material}{Documents d'appui liés à la recherche-création}
+\DeclareTranslation{french}{Summary of Proposal}{Résumé de la proposition}
+\DeclareTranslation{french}{Character count:}{Nombre de caractères:}
+\DeclareTranslation{french}{of}{sur}
+\endinput
+%%
+%% End of file `sshrc-insight.cls'.
diff --git a/Master/texmf-dist/tex/latex/stickstoo/ly1minstickstootext.fd b/Master/texmf-dist/tex/latex/stickstoo/ly1minstickstootext.fd
new file mode 100644
index 00000000000..72dd4632717
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/stickstoo/ly1minstickstootext.fd
@@ -0,0 +1,84 @@
+%% Generated by msharpe on 2022/01/23
+%%
+\ProvidesFile{ly1minstickstootext.fd}
+ [2022/01/23 (msharpe) Font definitions for LY1/minstickstootext.]
+
+\expandafter\ifx\csname ntxmath@scaled\endcsname\relax
+ \let\ntxmath@scaled\@empty
+\fi
+
+\DeclareFontFamily{LY1}{minstickstootext}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{m}{scit}{
+ <-> \ntxmath@scaled SticksTooText-Italic-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{m}{it}{
+ <-> \ntxmath@scaled SticksTooText-Italic-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{m}{n}{
+ <-> \ntxmath@scaled SticksTooText-Regular-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{m}{sc}{
+ <-> \ntxmath@scaled SticksTooText-Regular-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{m}{sl}{
+ <-> ssub * minstickstootext/m/it
+}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{m}{scsl}{
+ <-> ssub * minstickstootext/m/scit
+}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{b}{scit}{
+ <-> \ntxmath@scaled SticksTooText-BoldItalic-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{b}{it}{
+ <-> \ntxmath@scaled SticksTooText-BoldItalic-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{b}{n}{
+ <-> \ntxmath@scaled SticksTooText-Bold-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{b}{sc}{
+ <-> \ntxmath@scaled SticksTooText-Bold-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{b}{sl}{
+ <-> ssub * minstickstootext/b/it
+}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{b}{scsl}{
+ <-> ssub * minstickstootext/b/scit
+}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{bx}{scit}{
+ <-> ssub * minstickstootext/b/scit
+}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{bx}{scsl}{
+ <-> ssub * minstickstootext/b/scsl
+}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{bx}{it}{
+ <-> ssub * minstickstootext/b/it
+}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{bx}{n}{
+ <-> ssub * minstickstootext/b/n
+}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{bx}{sc}{
+ <-> ssub * minstickstootext/b/sc
+}{}
+
+\DeclareFontShape{LY1}{minstickstootext}{bx}{sl}{
+ <-> ssub * minstickstootext/b/sl
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/stickstoo/ot1minstickstootext.fd b/Master/texmf-dist/tex/latex/stickstoo/ot1minstickstootext.fd
new file mode 100644
index 00000000000..e3a19f3615c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/stickstoo/ot1minstickstootext.fd
@@ -0,0 +1,84 @@
+%% Generated by msharpe on 2022/01/23
+%%
+\ProvidesFile{ot1minstickstootext.fd}
+ [2022/01/23 (msharpe) Font definitions for OT1/minstickstootext.]
+
+\expandafter\ifx\csname ntxmath@scaled\endcsname\relax
+ \let\ntxmath@scaled\@empty
+\fi
+
+\DeclareFontFamily{OT1}{minstickstootext}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{m}{sc}{
+ <-> \ntxmath@scaled SticksTooText-Regular-tlf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{m}{scit}{
+ <-> \ntxmath@scaled SticksTooText-Italic-tlf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{m}{it}{
+ <-> \ntxmath@scaled SticksTooText-Italic-tlf-ot1G
+}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{m}{n}{
+ <-> \ntxmath@scaled SticksTooText-Regular-tlf-ot1G
+}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{m}{sl}{
+ <-> ssub * minstickstootext/m/it
+}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{m}{scsl}{
+ <-> ssub * minstickstootext/m/scit
+}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{b}{sc}{
+ <-> \ntxmath@scaled SticksTooText-Bold-tlf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{b}{n}{
+ <-> \ntxmath@scaled SticksTooText-Bold-tlf-ot1G
+}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{b}{it}{
+ <-> \ntxmath@scaled SticksTooText-BoldItalic-tlf-ot1G
+}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{b}{scit}{
+ <-> \ntxmath@scaled SticksTooText-BoldItalic-tlf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{b}{sl}{
+ <-> ssub * minstickstootext/b/it
+}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{b}{scsl}{
+ <-> ssub * minstickstootext/b/scit
+}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{bx}{sl}{
+ <-> ssub * minstickstootext/b/sl
+}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{bx}{sc}{
+ <-> ssub * minstickstootext/b/sc
+}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{bx}{scit}{
+ <-> ssub * minstickstootext/b/scit
+}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{bx}{n}{
+ <-> ssub * minstickstootext/b/n
+}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{bx}{it}{
+ <-> ssub * minstickstootext/b/it
+}{}
+
+\DeclareFontShape{OT1}{minstickstootext}{bx}{scsl}{
+ <-> ssub * minstickstootext/b/scsl
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/stickstoo/stickstootext.sty b/Master/texmf-dist/tex/latex/stickstoo/stickstootext.sty
index f9d1351ede9..6a5af23b517 100644
--- a/Master/texmf-dist/tex/latex/stickstoo/stickstootext.sty
+++ b/Master/texmf-dist/tex/latex/stickstoo/stickstootext.sty
@@ -1,7 +1,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
-\def\fileversion{1.035}
-\def\filedate{2021/10/17}
+\def\fileversion{1.036}
+\def\filedate{2024/09/22}
\ProvidesPackage{stickstootext}
[\filedate\space v\fileversion]
\message{`SticksTooText' v\fileversion, \filedate\space Text macros taking advantage of the STIXTwoText fonts (msharpe)}
@@ -44,10 +44,10 @@
}{}
\IfFileExists{xkeyval.sty}{
- \newcommand*{\SticksToo@scale}{1}
+ \newcommand*{\SticksTooText@scale}{1}
\RequirePackage{xkeyval}
- \DeclareOptionX{scale}{\renewcommand*{\SticksToo@scale}{##1}}
- \DeclareOptionX{scaled}{\renewcommand*{\SticksToo@scale}{##1}}
+ \DeclareOptionX{scale}{\renewcommand*{\SticksTooText@scale}{##1}}
+ \DeclareOptionX{scaled}{\renewcommand*{\SticksTooText@scale}{##1}}
}{
\let\DeclareOptionX\DeclareOption
\let\ExecuteOptionsX\ExecuteOptions
diff --git a/Master/texmf-dist/tex/latex/stickstoo/t1minstickstootext.fd b/Master/texmf-dist/tex/latex/stickstoo/t1minstickstootext.fd
new file mode 100644
index 00000000000..e737beb61cb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/stickstoo/t1minstickstootext.fd
@@ -0,0 +1,90 @@
+%% Generated by msharpe on 2022/01/23
+%%
+\ProvidesFile{t1minstickstootext.fd}
+ [2022/01/23 (msharpe) Font definitions for T1/minstickstootext.]
+
+\expandafter\ifx\csname ntxmath@scaled\endcsname\relax
+ \let\ntxmath@scaled\@empty
+\fi
+
+%\expandafter\ifx\csname SticksTooText@scale\endcsname\relax
+% \let\ntxmath@scaled\@empty
+%\else
+% \edef\ntxmath@scaled{s*[\csname SticksTooText@scale\endcsname]}%
+%\fi
+
+\DeclareFontFamily{T1}{minstickstootext}{}
+
+\DeclareFontShape{T1}{minstickstootext}{b}{scit}{
+ <-> \ntxmath@scaled SticksTooText-BoldItalic-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{minstickstootext}{b}{n}{
+ <-> \ntxmath@scaled SticksTooText-Bold-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{minstickstootext}{b}{sc}{
+ <-> \ntxmath@scaled SticksTooText-Bold-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{minstickstootext}{b}{it}{
+ <-> \ntxmath@scaled SticksTooText-BoldItalic-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{minstickstootext}{b}{sl}{
+ <-> ssub * minstickstootext/b/it
+}{}
+
+\DeclareFontShape{T1}{minstickstootext}{b}{scsl}{
+ <-> ssub * minstickstootext/b/scit
+}{}
+
+\DeclareFontShape{T1}{minstickstootext}{m}{sc}{
+ <-> \ntxmath@scaled SticksTooText-Regular-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{minstickstootext}{m}{it}{
+ <-> \ntxmath@scaled SticksTooText-Italic-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{minstickstootext}{m}{n}{
+ <-> \ntxmath@scaled SticksTooText-Regular-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{minstickstootext}{m}{scit}{
+ <-> \ntxmath@scaled SticksTooText-Italic-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{minstickstootext}{m}{sl}{
+ <-> \ntxmath@scaled SticksTooText-Italic-tlf-th-t1
+}{}
+
+\DeclareFontShape{T1}{minstickstootext}{m}{scsl}{
+ <-> ssub * minstickstootext/m/scit
+}{}
+
+\DeclareFontShape{T1}{minstickstootext}{bx}{it}{
+ <-> ssub * minstickstootext/b/it
+}{}
+
+\DeclareFontShape{T1}{minstickstootext}{bx}{scsl}{
+ <-> ssub * minstickstootext/b/scsl
+}{}
+
+\DeclareFontShape{T1}{minstickstootext}{bx}{sc}{
+ <-> ssub * minstickstootext/b/sc
+}{}
+
+\DeclareFontShape{T1}{minstickstootext}{bx}{scit}{
+ <-> ssub * minstickstootext/b/scit
+}{}
+
+\DeclareFontShape{T1}{minstickstootext}{bx}{sl}{
+ <-> ssub * minstickstootext/b/sl
+}{}
+
+\DeclareFontShape{T1}{minstickstootext}{bx}{n}{
+ <-> ssub * minstickstootext/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/stocksize/stocksize.sty b/Master/texmf-dist/tex/latex/stocksize/stocksize.sty
new file mode 100644
index 00000000000..c3abb9fb63b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/stocksize/stocksize.sty
@@ -0,0 +1,70 @@
+%% This is file `stocksize.sty',
+%%
+%% Copyright (C) 2024 by João M. Lourenço <joao.lourenco@fct.unl.pt>
+%%
+%% 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:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2006/05/20 or later.
+%%
+\def\fileversion{1.0.3}
+\def\filedate {2024/11/23}
+\edef\filename {\@currname}
+
+\ProvidesPackage{stocksize}[%
+ \filedate\ v\fileversion (João M. Lourenço) User defined PDF paper (stock) size.]
+
+% Load geometry if it was was not loaded by the user
+\AddToHook{begindocument/before}{
+ \@ifpackageloaded{geometry}{}{
+ \RequirePackage[reset]{geometry}
+ }
+}
+
+% Change the physical paper (stock) size
+% Works with pdfLaTeX, XeLaTeX and LuaLaTeX
+\newcommand*{\@ss@setpdfpagesize}[2]{%
+ \@ifundefined{pdfpageheight}{}{\pdfpageheight=#1}%
+ \@ifundefined{pdfpagewidth}{}{\pdfpagewidth=#2}%
+ \@ifundefined{pageheight}{}{\pageheight=#1}%
+ \@ifundefined{pagewidth}{}{\pagewidth=#2}%
+ \paperheight=#1\stockheight=#1%
+ \paperwidth=#2\stockwidth=#2%
+}
+
+\newcounter{@ss@cnt}
+\newcommand*{\pdfsavegeometry}[1]{%
+ \expandafter\edef\csname @sspw@\arabic{@ss@cnt}\endcsname%
+ {\the\dimexpr\Gm@lmargin+\Gm@width+\Gm@rmargin\relax}%
+ \expandafter\edef\csname @ssph@\arabic{@ss@cnt}\endcsname%
+ {\the\dimexpr\Gm@tmargin+\Gm@height+\Gm@bmargin\relax}%
+ \stepcounter{@ss@cnt}%
+ \savegeometry{@ss@cnt@\arabic{@ss@cnt}}%
+ \newdimen\@tempdimd%
+ \@tempdima=\Gm@lmargin\@tempdimb=\Gm@rmargin%
+ \@tempdimc=\Gm@tmargin\@tempdimd=\Gm@bmargin%
+ \define@key{Gm}{keepmargins}[true]{\setkeys{Gm}{lmargin=\the\@tempdima,
+ rmargin=\the\@tempdimb, tmargin=\the\@tempdimc, bmargin=\the\@tempdimd
+ }}%
+ \restoregeometry%
+ \newgeometry{#1}%
+ \edef\@sspw{\the\dimexpr\Gm@lmargin+\Gm@width+\Gm@rmargin\relax}%
+ \edef\@ssph{\the\dimexpr\Gm@tmargin+\Gm@height+\Gm@bmargin\relax}%
+ \@ss@setpdfpagesize{\@ssph}{\@sspw}%
+}
+
+\newcommand*{\pdfrestoregeometry}{%
+ \loadgeometry{@ss@cnt@\arabic{@ss@cnt}}%
+ \addtocounter{@ss@cnt}{-1}%
+ \@ss@setpdfpagesize{\csname @ssph@\arabic{@ss@cnt}\endcsname}%
+ {\csname @sspw@\arabic{@ss@cnt}\endcsname}%
+}
+
+\newcommand*{\newstocksize}{\pdfsavegeometry}
+\newcommand*{\restorestocksize}{\pdfrestoregeometry}
+
diff --git a/Master/texmf-dist/tex/latex/suanpan-l3/suanpan-l3.sty b/Master/texmf-dist/tex/latex/suanpan-l3/suanpan-l3.sty
index ac30c79d740..b712d0063e4 100644
--- a/Master/texmf-dist/tex/latex/suanpan-l3/suanpan-l3.sty
+++ b/Master/texmf-dist/tex/latex/suanpan-l3/suanpan-l3.sty
@@ -16,8 +16,11 @@
% \ProvidesExplPackage{suanpan-l3}{2024-09-04}{v1.2.0} % 添加\lab横梁文字标记命令
% \ProvidesExplPackage{suanpan-l3}{2024-09-05}{v1.2.1} % 将草稿模式所有算珠改为圆冒
% % 直线并取消所有高光特效
-\ProvidesExplPackage{suanpan-l3}{2024-09-07}{v1.2.2} % 为珠高、珠宽、档杆宽度和
- % 边框宽度添加设置选项
+% \ProvidesExplPackage{suanpan-l3}{2024-09-07}{v1.2.2} % 为珠高、珠宽、档杆宽度和
+% % 边框宽度添加设置选项
+% \ProvidesExplPackage{suanpan-l3}{2024-09-07}{v1.2.3} % 将算珠高光改为ball类型,
+% % 并添加高光位置(角度)选项。
+\ProvidesExplPackage{suanpan-l3}{2024-10-13}{v1.2.4} % 删除tikz宏包库加载补丁
{draw suanpan(abacus) with LaTeX3}
\RequirePackage{l3keys2e}
@@ -25,6 +28,8 @@
\RequirePackage{l3draw}
\RequirePackage {tikz}
+% 添加tikz宏包的库
+\usetikzlibrary{shadings}
\cs_new:Npn \__suanpan_error:n { \msg_error:nn { suanpan(abacus) } }
@@ -162,6 +167,7 @@
\tl_new:N \l__suanpan_bid_fill_color_tl
\tl_new:N \l__suanpan_scale_tl
\tl_new:N \l__suanpan_mark_font_tl
+\tl_new:N \l__suanpan_bid_spot_angle_tl
% 档位最大值
\int_new:N \l__suanpan_rod_max_int
@@ -454,11 +460,13 @@
innerfill .initial:n = black,
% 横梁标记字符格式
- font .code:n = {%
- \tl_gset:Nn \l__suanpan_mark_font_tl {#1}
- },
+ font .tl_set:N = \l__suanpan_mark_font_tl,
font .initial:n = \bfseries\Large,
+ % 算珠高光点位置(角度)
+ bidspot .tl_set:N = \l__suanpan_bid_spot_angle_tl,
+ bidspot .initial:n = 0,
+
unknown .code:n = { \msg_error:nn { suanpan } { unknown-option } }
}
@@ -486,9 +494,9 @@
{ \l__suanpan_bid_d_half_dim - \l__suanpan_bid_draw_h_half_dim }
\tikzset{bid/.style = {% 内珠高光填充样式
- inner~color = innerfillcolor!30,
- outer~color = innerfillcolor,
- draw = innerdrawcolor,
+ shading = ball,
+ ball~color = innerfillcolor,
+ shading~angle = \l__suanpan_bid_spot_angle_tl,
line~width = \l__suanpan_bid_linewidth_dim,
rounded~corners = \l__suanpan_bid_arc_dim,
},
@@ -528,9 +536,9 @@
{ \l__suanpan_bid_d_half_dim - \l__suanpan_bid_draw_h_half_dim }
\tikzset{bid/.style ={
- inner~color = outerfillcolor!30,
- outer~color = outerfillcolor,
- draw = outerdrawcolor,
+ shading = ball,
+ ball~color = outerfillcolor,
+ shading~angle = \l__suanpan_bid_spot_angle_tl,
line~width = \l__suanpan_bid_linewidth_dim,
rounded~corners = \l__suanpan_bid_arc_dim,
},
@@ -572,7 +580,12 @@
\dim_set:Nn \l_tmpa_dim
{ \l__suanpan_bid_d_half_dim - \l__suanpan_bid_draw_h_half_dim }
- \tikzset{bid/.style ={
+ \tikzset{bid/.style~args = { #1/#2 }{
+ draw = #1,
+ shading = ball,
+ ball~color = #2,
+ shading~angle = 0,
+ shading~angle = \l__suanpan_bid_spot_angle_tl,
line~width = \l__suanpan_bid_linewidth_dim,
rounded~corners = \l__suanpan_bid_arc_dim,
},
@@ -594,10 +607,7 @@
\end{tikzpicture}
}{
\begin{tikzpicture}
- \shadedraw[draw = #1,
- inner~color=#2!30,
- outer~color=#2,
- bid]%
+ \shadedraw[bid=#1/#2]
( -\l__suanpan_bid_d_half_dim, \l__suanpan_bid_lower_dim)
rectangle
( \l__suanpan_bid_d_half_dim, \l__suanpan_bid_upper_dim);
@@ -778,8 +788,9 @@
\bool_if:NT \l__suanpan_support_unit_bool
{
\shade[%
- inner~color=black!40,
- outer~color=black!80,
+ shading = ball,
+ ball~color = black,
+ shading~angle = \l__suanpan_bid_spot_angle_tl,
] (0pt, 0pt) circle
[radius = \l__suanpan_frame_unit_r_dim];
}
diff --git a/Master/texmf-dist/tex/latex/suftesi/suftesi.cls b/Master/texmf-dist/tex/latex/suftesi/suftesi.cls
index ffd5470ecf5..0d1aad72110 100644
--- a/Master/texmf-dist/tex/latex/suftesi/suftesi.cls
+++ b/Master/texmf-dist/tex/latex/suftesi/suftesi.cls
@@ -7,14 +7,15 @@
%% suftesi.dtx (with options: `class')
%%
%% The 'suftesi' document class
-%% Copyright (C) 2009-2023 Ivan Valbusa
+%% Copyright (C) 2009-2024 Ivan Valbusa
%% <ivan dot valbusa at gmail dot com>
%%
%% All rights reserved.
%%
-%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
+%% This work may be distributed and/or modified under
+%% the conditions of the LaTeX Project Public License,
+%% either version 1.3 of this license or (at your
+%% option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
@@ -26,7 +27,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesClass{suftesi}
- [2023/09/07 v3.2.1 A class for typesetting theses, books and articles]
+ [2024/12/06 v3.2.6 A class for typesetting theses, books and articles]
\RequirePackage{xkeyval}
\newif\ifsuftesi@article
\newif\ifsuftesi@collection
@@ -74,6 +75,7 @@
\newif\ifsuftesi@ctocpar
\newif\ifsuftesi@ctocsubpar
\newif\ifsuftesi@FSPL
+\newif\ifsuftesi@loadfontsize
\DeclareOption{a4paper}{%
\ClassWarningNoLine{suftesi}{Option 'a4paper' not available}{}}
\DeclareOption{a5paper}{%
@@ -90,10 +92,13 @@
\ProcessOptions
\relax
\LoadClass{book}
-\RequirePackage{fontsize}
+\DeclareOptionX{loadfontsize}{\suftesi@loadfontsizetrue}
\DeclareOptionX{parindent}{\setlength{\parindent}{#1}}
\ExecuteOptionsX{parindent=\baselineskip}
\ProcessOptionsX*\relax
+\ifsuftesi@loadfontsize
+\RequirePackage{fontsize}
+\else\fi
\define@choicekey{}{structure}[\suftesi@val\suftesi@nr]
{book,article,collection}[book]{%
\ifcase\suftesi@nr\relax
@@ -2780,17 +2785,20 @@
\SUF@quotation@size}
{\endlist}
\ifSUF@fewfootnotes
-\RequirePackage[perpage]{zref}
- \zmakeperpage{footnote}
+ \RequirePackage{footnpag}
\AtBeginDocument{%
\def\@fnsymbol#1{%
\ifcase#1\or \TextOrMath\textasteriskcentered *\or
\TextOrMath {\textasteriskcentered\textasteriskcentered}{**}\or
\TextOrMath {\textasteriskcentered%
\textasteriskcentered\textasteriskcentered}{***}\or
- \protect\ClassWarningNoLine{suftesi}%
- {Too many footnotes per page. Compile again or\MessageBreak
- remove the class option 'fewfootnote'}
+ \protect\ClassError{suftesi}%
+ {Too many footnotes per page. \MessageBreak
+ Remove the class option 'fewfootnote'\MessageBreak
+ Two LaTeX runs required.}
+ {Too many footnotes per page. \MessageBreak
+ Remove the class option 'fewfootnote'\MessageBreak
+ Two LaTeX runs required.}
\fi
}%
}
@@ -3381,9 +3389,10 @@ Janusz M.~Nowacki.
\@ifpackageloaded{polyglossia}
{\AtBeginDocument{\RequirePackage{fixltxhyph}}}{}
\let\hemph\emph
+\AtBeginDocument{%
\unless\ifPDFTeX% if xetex or luatex
- \let\@afterindenttrue\@afterindentfalse
-\fi
+ \let\@afterindenttrue\@afterindentfalse
+\fi}
\frenchspacing
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/sunpath/sunpath.sty b/Master/texmf-dist/tex/latex/sunpath/sunpath.sty
new file mode 100644
index 00000000000..d9efce39ce8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/sunpath/sunpath.sty
@@ -0,0 +1,161 @@
+%%
+%% This is file `sunpath.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% sunpath.dtx (with options: `package')
+%%
+\NeedsTeXFormat{LaTeX2e}[2022/11/01]
+\ProvidesPackage{sunpath}[2024/10/20 v0.5 Draw Sun Path]
+
+
+\RequirePackage{expl3}
+\RequirePackage{tikz}
+\usetikzlibrary{calc,math,through}
+
+
+\pgfkeys{/tikz/.cd,
+ spradius/.store in=\spradius,
+ spradius=5.5,
+ altitude mapping/.store in = \altmapping,
+ altitude mapping=spherical
+}
+
+\makeatletter
+
+\tikzset{
+ cs/azi/.store in=\tikz@cs@azi,
+ cs/alt/.store in=\tikz@cs@alt,
+}
+
+\tikzset{
+ declare function = {
+ spherical(\alt) = \spradius * cos(\alt);
+ equidistance(\alt) = \spradius - \spradius*abs(\alt)/90;
+ altradius(\alt) = \altmapping(\alt);
+ aziangle(\x) = 90 - \x;
+ }
+}
+
+\tikzdeclarecoordinatesystem{sunpath}%
+{
+ \tikzset{cs/.cd,azi=0,alt=0,#1}
+ \tikzmath{
+ \r = altradius(\tikz@cs@alt);
+ \angle = aziangle(\tikz@cs@azi);
+ }
+ \pgfpointadd{\pgfpointxy{0}{0}}{%
+ \pgfpointpolarxy{\angle}{\r}
+ }
+}
+\makeatother
+
+\tikzset{
+ sunpath grid/.style={help lines,color=blue!45!white!80},
+ sunpath tick/.style={draw,thick,color=blue!90!white!80},
+ sunpath minor tick/.style={draw,thin,color=blue!90!white!80},
+ altitude label/.style={
+ font=\footnotesize\sffamily,
+ fill=white,minimum width={width("90")+2pt},
+ inner sep=0.5pt
+ },
+ azimuth label/.style={
+ font=\footnotesize\sffamily,
+ minimum width={width("360")+2pt},
+ inner sep=0.5pt
+ },
+ direction label/.style={
+ font=\normalsize\rmfamily
+ }
+}
+
+
+\NewDocumentCommand\spcrosshair{O{sunpath grid}}{
+ \draw[#1] (-\spradius,0) -- (\spradius,0);
+ \draw[#1] (0,-\spradius) -- (0,\spradius);
+}
+
+\NewDocumentCommand\spgeodirection{O{22pt} O{direction label}}{
+ \foreach \dname / \dgrad in {N/0, E/90, S/180, W/270}{
+ \tikzmath{
+ \polarangle = aziangle(\dgrad);
+ }
+ \coordinate (D) at (\polarangle:\spradius cm + #1);
+ \node[#2,anchor=270-\dgrad] at (D) {\dname};
+ }
+}
+
+\NewDocumentCommand\spaltitudecircle{m O{sunpath grid}}{
+ \foreach \altitude in #1 {
+ \coordinate (A) at (sunpath cs:azi=0,alt=\altitude) ;
+ \path[draw,sunpath grid] (0,0) circle[radius=altradius(\altitude)];
+ }
+}
+
+\NewDocumentCommand\spaltitudelabel{m O{135} O{altitude label}}{
+ \foreach \altitude in #1 {
+ \coordinate (A) at (sunpath cs:azi=#2,alt=\altitude) ;
+ \node [anchor=east,#3] at (A) {\altitude};
+ }
+}
+
+\NewDocumentCommand\spazimuthlabel{m O{azimuth label}}{
+ \foreach \azimuth in #1 {
+ \tikzmath{
+ \polarangle = aziangle(\azimuth);
+ }
+ \coordinate (D) at (\polarangle:\spradius cm + 13pt);
+ \node[#2] at (D) {\azimuth};
+ }
+}
+
+\NewDocumentCommand\spazimuthline{m m m}{
+ \foreach \azimuth in #1{
+ \draw[sunpath grid]
+ (sunpath cs:azi=\azimuth,alt={#2}) -- (sunpath cs:azi=\azimuth,alt={#3});
+ }
+}
+
+\NewDocumentCommand\spazimuthtick{O{6pt} O{2.5pt} O{5pt}}{
+ \foreach \azimuth in {10,20,...,360}{
+ \tikzmath{
+ \pa = aziangle(\azimuth);
+ }
+ \path[sunpath tick] (\pa:\spradius) -- (\pa:{\spradius cm + #1});
+ }
+
+ \foreach \azimuth in {1,2,...,360}{
+ \tikzmath{
+ \pa = aziangle(\azimuth);
+ }
+ \path[sunpath minor tick] (\pa:\spradius) -- (\pa:{\spradius cm + #2});
+ }
+
+ \foreach \azimuth in {15,45,...,345}{
+ \tikzmath{
+ \pa = aziangle(\azimuth);
+ }
+ \path[sunpath minor tick] (\pa:\spradius) -- (\pa:{\spradius cm + #3});
+ }
+}
+
+%%%%%%%%%%%%%%
+%% Copyright (C) 2024 by
+%% Hong-Phuc Bui
+%%
+%% It may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License (LPPL), either version 1.3c of
+%% this license or (at your option) any later version. The latest
+%% version of this license is in the file:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%%
+%% This work consists of the files sunpath.dtx,
+%% sunpath.ins,
+%% and the derived files sunpath.pdf,
+%% sunpath.sty.
+%%
+%%
+%% End of file `sunpath.sty'.
diff --git a/Master/texmf-dist/tex/latex/tableof/tableof.sty b/Master/texmf-dist/tex/latex/tableof/tableof.sty
index 0af308c5eca..b2cc137c4ba 100644
--- a/Master/texmf-dist/tex/latex/tableof/tableof.sty
+++ b/Master/texmf-dist/tex/latex/tableof/tableof.sty
@@ -22,14 +22,14 @@
%% in the same archive or directory.)
%%
\ProvidesPackage{tableof}
- [2021/07/05 v1.4c Tables of tagged contents (JFB)]
+ [2024/09/17 v1.4d Tables of tagged contents (JFB)]
%%
%% Package: tableof
-%% Version: 1.4c (2021/07/05)
+%% Version: 1.4d (2024/09/17)
%% License: LPPL 1.3c
-%% Copyright (C) 2012, 2013, 2015, 2018, 2021 Jean-Francois Burnol <jfbu at free dot fr>
+%% Copyright (C) 2012, 2013, 2015, 2018, 2021, 2024 Jean-Francois Burnol <jfbu at free dot fr>
%%
-\NeedsTeXFormat{LaTeX2e}
+\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{atveryend}
\DeclareOption*{\PackageWarning{tableof}{Option `\CurrentOption' is unknown.}}
\ProcessOptions\relax
@@ -42,7 +42,8 @@
{\expandafter\the\expandafter\tof@toctoks\tof@buffer}%
\expandafter\tof@readtoc
\fi }
-\AtBeginDocument{\IfFileExists{\jobname.toc}
+\AtBeginDocument{%
+ \IfFileExists{\jobname.toc}
{{\endlinechar\m@ne
\makeatletter
\newread\tof@tf
@@ -50,20 +51,20 @@
\tof@toctoks{\tof@begingroup}%
\tof@readtoc
\global\tof@toctoks=\expandafter{\the\tof@toctoks\tof@endgroup}%
- \closein\tof@tf}}{}}
-\AtBeginDocument{
+ \closein\tof@tf}}
+ {}%
+}
+\AtBeginDocument{%
\addtocontents{toc}{\string\@ifundefined{tof@begin}%
{\global\let\string\tof@begin\relax
\global\let\string\tof@finish\string\@empty
\global\let\string\tof@starttags\string\@gobble
\global\let\string\tof@stoptags\string\@gobble
\global\let\string\tof@tagthis\string\@gobble
- \global\let\string\tof@untagthis\string\@gobble}\relax}
- \addtocontents{toc}{\string\tof@begin}
- \@ifpackageloaded{hyperref}
- {\def\tof@gobblethree@orfour#1#2#3#4{}%
- \ifx\hyper@last\@undefined\tof@toctoks{}\fi}
- {\def\tof@gobblethree@orfour#1#2#3{}}}
+ \global\let\string\tof@untagthis\string\@gobble}\relax}%
+ \addtocontents{toc}{\string\tof@begin}%
+}
+\let\tof@gobblethree@orfour\@gobblefour
\AfterLastShipout
{\immediate\write\@auxout{\string\@writefile{toc}{\string\tof@finish}}}
\let\tof@global \@empty
diff --git a/Master/texmf-dist/tex/latex/tabularray-abnt/tabularray-abnt.sty b/Master/texmf-dist/tex/latex/tabularray-abnt/tabularray-abnt.sty
new file mode 100644
index 00000000000..7769fdc0ad2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tabularray-abnt/tabularray-abnt.sty
@@ -0,0 +1,485 @@
+%%% % -*- coding: utf-8 -*-
+%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% % tabularray-abnt.sty
+%%% %----------------------------------------------------------------------
+%%% % copyright (C) January, 2025 by Sadao Massago
+%%% % autor:
+%%% % Sadao Massago
+%%% % e-mail: sadao@ufscar.br
+%%% %
+%%% % Licença: LaTeX Project Public License versão 1.3c or (se for a sua escolha) qualquer versão posterior.
+%%% % https://www.latex-project.org/lppl/
+%%% %----------------------------------------------------------------------
+
+%% Need LaTeX 2e version 2020-10-01 or latter (due to AddToHoock)
+\NeedsTeXFormat{LaTeX2e}[2020/10/01]
+
+%%% file name
+\ProvidesFile{tabularray-abnt.sty}
+ [2025/01/16 tabularray-abnt style (require tabularray package)]
+\typeout{tabularray-abnt style 2025-01-16 <January/2025>.}
+
+%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% It not works on older LaTeX compatibility mode (documentstyle)
+
+\if@compatibility
+ \PackageError{tabularray-abnt}{Not support older compatible mode (documentstyle)}
+ {Use documentclass instead of documentstyle}
+ \endinput
+\else
+ %% OK
+\fi
+
+%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% In way to adjust on memoir (ex. abntex2) or abntexto as document class
+
+\newif\if@tabularray@abnt@using@memoir
+\newif\if@tabularray@abnt@using@abntexto
+\@tabularray@abnt@using@memoirfalse
+\@tabularray@abnt@using@abntextofalse
+\@ifclassloaded{memoir}% Using memoir?
+{\@tabularray@abnt@using@memoirtrue}% YES
+{
+ \@ifclassloaded{abntexto}% Using ABNTexto?
+ {\@tabularray@abnt@using@abntextotrue}% YES
+ { % generic class
+ \RequirePackage{float}
+ }
+}
+
+%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Required package
+
+\RequirePackage{tabularray}
+\UseTblrLibrary{hook}
+
+%%% %----------------------
+%%> \section{ABNT theme}
+
+%% ABNT theme for table
+\NewTblrTheme{abnt}{
+ \DefTblrTemplate{caption-sep}{default}{\space ---\space}% default is ": \space"
+ \SetTblrTemplate{firsthead-text,lasthead-text,conthead-text}{abnt}
+ \SetTblrTemplate{caption,lasthead,capcont}{abnt}
+ \DefTblrTemplate{firstfoot,middlefoot}{default}{}% disabling the first and middle footnote
+
+%%% \SetTblrTemplate{lastfoot-text,lastfoot-text-note}{abnt}
+
+ %% for abntexto, need to change lot write
+ \if@tabularray@abnt@using@abntexto
+ \SetTblrTemplate{caption-lot}{abnt}
+ \fi
+
+ \SetTblrTemplate{remark-tag}{abnt}
+ \SetTblrTemplate{remark}{abnt}
+
+ \SetTblrStyle{caption,lasthead,capcont}{font=\normalsize}
+ \SetTblrStyle{firsthead-text,lasthead-text,conthead-text}{font=\footnotesize}
+ \SetTblrStyle{lastfoot}{font=\footnotesize}
+}
+
+%%% Example of how to insert value from parameter
+%%% %\DefTblrTemplate{caption-text}{default}{\InsertTblrText{caption}
+
+%%% ---------------------------------
+%% theme ``quadro'' (text only table)
+
+%%% % Caution: Avoid space between braces and parameters
+\NewTblrTheme{quadro}{
+ %% same as abnt theme of table
+ \DefTblrTemplate{caption-sep}{default}{\space ---\space}% default is ": \space"
+ \SetTblrTemplate{firsthead-text,lasthead-text,conthead-text}{abnt}
+ \SetTblrTemplate{caption,lasthead,capcont}{abnt}
+ \DefTblrTemplate{firstfoot,middlefoot}{default}{}% desabling first and middle footnote
+
+%%% \SetTblrTemplate{lastfoot-text,lastfoot-text-note}{abnt}
+
+%%% %% for abntexto, need to change lot write
+%%% \if@tabularray@abnt@using@abntexto
+%%% %%\SetTblrTemplate{caption-lot}{abnt}
+%%% \fi
+
+ \SetTblrTemplate{remark-tag}{abnt}
+ \SetTblrTemplate{remark}{abnt}
+
+ \SetTblrStyle{caption,lasthead,capcont}{font=\normalsize}
+ \SetTblrStyle{firsthead-text,lasthead-text,conthead-text}{font=\footnotesize}
+ \SetTblrStyle{lastfoot}{font=\footnotesize}
+
+ %% Change specific for ``quadro'
+ \SetTblrTemplate{caption-tag}{quadro} % caption change
+ \SetTblrTemplate{caption-lot}{quadro} % lot wire change
+}
+
+%%% -----------------------------
+%%> \section{Setup table as ABNT}
+
+%% counter of table are not nested
+
+\ifdefined\chapter
+ \counterwithout{table}{chapter}
+\else
+ \ifdefined\section
+ \counterwithout{table}{section}
+ \fi
+\fi
+
+%% counting table and quadro together
+
+%%% \ExplSyntaxOn
+\if@tabularray@abnt@using@abntexto
+
+%%% \newcommand{\tabularray@abnt@tblr@count@roman}{\romannumeral\inteval{\g__tblr_table_count_int + \countquadro}}
+ \newcommand{\tabularray@abnt@tblr@count@roman}{\romannumeral\inteval{\value{table} + \countquadro}}
+\else
+
+%%% \newcommand{\tabularray@abnt@tblr@count@roman}{\romannumeral\inteval{\g__tblr_table_count_int + \value{quadro}}}
+ \newcommand{\tabularray@abnt@tblr@count@roman}{\romannumeral\inteval{\value{table} + \value{quadro}}}
+\fi
+
+%%% \ExplSyntaxOff
+
+%% additional text for header
+\DefTblrTemplate{firsthead-text}{abnt}{\par~\hfill(continua)} % first header
+\DefTblrTemplate{lasthead-text}{abnt}{\par~\hfill(conclusão)} % last header
+\DefTblrTemplate{conthead-text}{abnt}{\par~\hfill(continuação)} % middle header
+%% first header
+\DefTblrTemplate{caption}{abnt}{
+ \UseTblrTemplate{caption-tag}{default}
+ \UseTblrTemplate{caption-sep}{default}
+ \UseTblrTemplate{caption-text}{default}
+
+%%% % like \ifdefined, but with csname
+ \ifcsname tabularray@abnt@tblr@spanpages@\tabularray@abnt@tblr@count@roman\endcsname % if span pages
+ \UseTblrTemplate{firsthead-text}{abnt} % add the firsthead-text
+
+%%% DEBUG:\tabularray@abnt@tblr@count@roman
+%%% \else
+%%% DEBUG (no span pages): \roman{tabularray@abnt@global@tblr@counter}
+ \fi
+}
+
+%% redefine last head title
+\DefTblrTemplate{lasthead}{abnt}{
+ \UseTblrTemplate{caption-tag}{default}
+ \UseTblrTemplate{caption-sep}{default}
+ \UseTblrTemplate{caption-text}{default}
+ \UseTblrTemplate{lasthead-text}{abnt} % add lasthead-text
+}
+%% redefine middle head title
+\DefTblrTemplate{capcont}{abnt}{
+ \UseTblrTemplate{caption-tag}{default}
+ \UseTblrTemplate{caption-sep}{default}
+ \UseTblrTemplate{caption-text}{default}
+ \UseTblrTemplate{conthead-text}{abnt}
+}
+
+%%% %-------------------------------------------------
+%%> \section{To save ``page span'' status}
+
+\newif\if@tablularray@abnt@mark@spanpages
+
+%%% \AtBeginDocument{%
+
+%%% % \@tablularray@abnt@mark@spanpagesfalse % initially false
+\global\let\if@tablularray@abnt@mark@spanpages\iffalse
+
+%%% } % \AtBeginDocument{%
+
+%%% hook tabularray not working as expected. Need more recente version of tabularray?
+%%% \AddToHook{tabularray/table/before}
+%%% {
+
+%%% % \@tablularray@abnt@mark@spanpagestrue
+%%% \global\let\if@tablularray@abnt@mark@spanpages\iftrue
+%%% }
+%%% \AddToHook{tabularray/table/after}
+%%% {
+
+%%%% \@tablularray@abnt@mark@spanpagesfalse
+%%% \global\let\if@tablularray@abnt@mark@spanpages\iffalse
+%%% }
+
+%%% % check page span status for longtblr
+\AddToHook{env/longtblr/after}{ \global\let\if@tablularray@abnt@mark@spanpages\iftrue }
+\AddToHook{env/longtblr/end}{ \global\let\if@tablularray@abnt@mark@spanpages\iffalse }
+
+%%% % check page span status for tblr (with possible long option)
+\AddToHook{env/tblr/after}{ \global\let\if@tablularray@abnt@mark@spanpages\iftrue }
+\AddToHook{env/tblr/end}{ \global\let\if@tablularray@abnt@mark@spanpages\iffalse }
+
+%%% % check page span status for tblr like env
+%%% % Not work as exprected
+%%% \AddToHook{tabularray/table/before}{ \global\let\if@tablularray@abnt@mark@spanpages\iftrue }
+%%% \AddToHook{tabularray/table/after}{ \global\let\if@tablularray@abnt@mark@spanpages\iffalse }
+
+%%% {
+
+
+%%% \AddToHook{env/longtblr/begin}
+%%% {
+
+%%% % \@tablularray@abnt@mark@spanpagestrue
+%%% \global\let\if@tablularray@abnt@mark@spanpages\iftrue
+%%% }
+
+%%% \AddToHook{env/longtblr/end}
+%%% {
+
+%%% \@tablularray@abnt@mark@spanpagesfalse
+%%% \global\let\if@tablularray@abnt@mark@spanpages\iffalse
+%%% }
+
+%%% % For tblr with long opcion
+%%% \AddToHook{env/tblr/begin}
+%%% {
+
+%%% % \@tablularray@abnt@mark@spanpagestrue
+%%% \global\let\if@tablularray@abnt@mark@spanpages\iftrue
+%%% }
+
+%%% \AddToHook{env/tblr/end}
+%%% {
+
+%%% % \@tablularray@abnt@mark@spanpagesfalse
+%%% \global\let\if@tablularray@abnt@mark@spanpages\iffalse
+%% }
+
+%%% talltblr fit in single page (no hook)
+
+%% if change pages, mark as ``span pages'' on aux file
+
+%%% \AddToHook{shipout/after}
+\AddToHook{shipout/after}
+{
+ \if@tablularray@abnt@mark@spanpages
+ %% to the associated commands act globally
+ %% tip from https://tex.stackexchange.com/questions/115932/on-the-basics-of-writing-to-reading-from-auxiliary-files-aux-toc-etc
+ \immediate\write\@auxout{\gdef\string\tabularray@abnt@tblr@spanpages@\tabularray@abnt@tblr@count@roman{true}}
+
+%%% \else % DEBUG
+%%% \immediate\write\@auxout{\gdef\string\tabularray@abnt@tblr@spanpages@\tabularray@abnt@tblr@count@roman{false}}
+
+\fi
+ %% to the associated commands act globally
+ %% tip from https://tex.stackexchange.com/questions/566884/setting-a-newif-to-false-ignored-on-first-check-in-custom-itemize-environment
+ \global\let\if@tablularray@abnt@mark@spanpages\iffalse
+
+%%% % DEBUG:
+%%% \immediate\write\@auxout{\gdef\string\tabularray@abnt@shipout@message{DEGUB: page=\thepage, tblrnum=\tabularray@abnt@tblr@count@roman}}
+}
+
+%% For abntexto class, need change the form to write on ``lot''
+%% For others, only add global counter
+\if@tabularray@abnt@using@abntexto
+ \ExplSyntaxOn
+ \DefTblrTemplate{caption-lot}{abnt}
+ {
+ \tl_if_empty:NTF \lTblrEntryTl
+ {\tl_set_eq:NN \l__tblr_caption_short_tl \lTblrCaptionTl}
+ {\tl_set_eq:NN \l__tblr_caption_short_tl \lTblrEntryTl}
+ %% \addcontentsline { lot } { table }
+ %% { \protect\numberline { \thetable } { \l__tblr_caption_short_tl } }
+ %% add on list of tables using command from abntexto
+ \addtoext{lot}{lofi}{\protect\lotlabelbox{\thetable}{\l__tblr_caption_short_tl}}
+ }
+ \ExplSyntaxOff
+%%%\else% \if@tabularray@abnt@using@abntexto
+%%% \ExplSyntaxOn
+%%% \DefTblrTemplate {caption-lot}{abnt}
+%%% {
+%%%
+%%% %% \stepcounter{tabularray@abnt@global@tblr@counter}% global table/quadro counter
+%%% \tl_if_empty:NTF \lTblrEntryTl
+%%% { \tl_set_eq:NN \l__tblr_caption_short_tl \lTblrCaptionTl }
+%%% { \tl_set_eq:NN \l__tblr_caption_short_tl \lTblrEntryTl }
+%%% \addcontentsline { lot } { table }
+%%% { \protect\numberline { \thetable } { \l__tblr_caption_short_tl } }
+%%% }
+%%% \ExplSyntaxOff
+\fi% \if@tabularray@abnt@using@abntexto
+
+%% Change remark to use for source and note as ABNT
+\DefTblrTemplate{remark-tag}{abnt}{\InsertTblrRemarkTag}
+
+%% Change left margin using tip from
+%% https://tex.stackexchange.com/questions/645175/how-to-indent-notes-in-tabularray
+\newlength\tabularray@abnt@remark@labellength
+\DefTblrTemplate{remark}{abnt}{%
+ \MapTblrRemarks{%
+ \settowidth{\tabularray@abnt@remark@labellength}{\UseTblrTemplate{remark-tag}{abnt}\UseTblrTemplate{remark-sep}{default}}%
+ \UseTblrTemplate{remark-tag}{abnt}\UseTblrTemplate{remark-sep}{default}%
+ \parbox[t]{\dimexpr\linewidth-\tabularray@abnt@remark@labellength}{\UseTblrTemplate{remark-text}{default}}%
+ \par}\medskip
+}
+
+%%% %-------------------
+%%> \section{``Quadro'' (text only table)}
+
+%%% %------------------
+%% On the abntexto class, create legend entry named ``quadro''. In other cases, create environment ``quadro''.
+
+%% Names
+\providecommand{\quadroname}{Quadro}
+\providecommand{\listquadroname}{Lista de quadros}
+\@ifpackageloaded{babel}{
+ \ifdefined\captionsportugese
+ \addto\captionsportugese{% portugese
+ \renewcommand{\quadroname}{Quadro}
+ \renewcommand{\listquadroname}{Lista de quadros}
+ }
+ \fi
+ \ifdefined\captionsbrazil
+ \addto\captionsbrazil{% brazilian portugese
+ \renewcommand{\quadroname}{Quadro}
+ \renewcommand{\listquadroname}{Lista de quadros}
+ }
+ \fi
+ \ifdefined\captionsbrazilian
+ \addto\captionsbrazilian{% brazilian portugese
+ \renewcommand{\quadroname}{Quadro}
+ \renewcommand{\listquadroname}{Lista de quadros}
+ }
+ \fi
+ \ifdefined\captionsenglish
+ \addto\captionsenglish{% English
+ \renewcommand{\quadroname}{Text table}
+ \renewcommand{\listquadroname}{List of text table}
+ }
+ \fi
+}{} % \@ifpackageloaded{babel}{
+
+%% define for each class
+
+%% ABNTexto class
+\if@tabularray@abnt@using@abntexto % ABNTexto.
+ %% using command from ABNTexto
+ \definelegendplace{quadro}{Quadro}{quad.\,}{loq} % new legend entry
+
+ \ifdefined\chapter
+ \newcommand{\listadequadros}{\notoc\nonum\chapter{\listquadroname}\makeloq}
+ \else
+ \newcommand{\listadequadros}{\notoc\nonum\section{\listquadroname}\makeloq}
+ \fi
+ %% Caution: don't put space between braces and parameters
+ \DefTblrTemplate{caption-tag}{quadro}{\quadroname\hspace{0.25em}\the\countquadro}
+
+ \ExplSyntaxOn
+ \DefTblrTemplate{caption-lot}{quadro}
+ {
+
+%%% \stepcounter{tabularray@abnt@global@tblr@counter}% global table/quadro counter
+ \addtocounter{table}{-1}%Não contar como table
+ %% counter created by \definelegendplace{quadro} is not \c@quadro+, but \countquadro, and is necessary to use TeX command to increase
+ \global\advance\countquadro by 1% count as ``quadro''
+ \tl_if_empty:NTF \lTblrEntryTl
+ {\tl_set_eq:NN \l__tblr_caption_short_tl \lTblrCaptionTl}
+ {\tl_set_eq:NN \l__tblr_caption_short_tl \lTblrEntryTl}
+ %% add to list of ``quadro'' using command from abntexto
+ \addtoext{loq}{loqi}{\protect\loqlabelbox{\the\countquadro} {\l__tblr_caption_short_tl}}%
+ }
+ \ExplSyntaxOff
+\else %% memoir (ABNTeX2 or like) or generic class
+ \if@tabularray@abnt@using@memoir %% memoir (ABNTeX2 or like)
+
+%%% %\newfloat[chapter]{quadro}{loq}{\quadroname}
+%%% %\counterwithout{quadro}{chapter}
+ %% using command from memoir
+ \newfloat{quadro}{loq}{\quadroname}
+ \newlistof{listadequadros}{loq}{\listquadroname}
+
+%%% %\newlistentry[chapter]{quadro}{loq}{0}
+ \newlistentry{quadro}{loq}{0}
+
+ \cftsetindents{quadro}{0em}{2.3em}
+ \renewcommand{\cftquadroname}{\quadroname\space}
+ \renewcommand*{\cftquadroaftersnum}{\hfill\textendash\hfill}
+ \else %% generic class
+ %% using float package
+ \newcommand{\listadequadros}{\listof{quadro}{\listofquadrosname}}
+ \newfloat{quadro}{tbp}{loq}%[chapter]
+
+%%% %\counterwithout{quadro}{chapter} counter not nested frm chapter
+ \fi
+
+%%% % We need to use \hspace and \enskip, but not ~ or \space,
+%%% % since we want a correct hangindent caption paragraph.
+ \DefTblrTemplate{caption-tag}{quadro}{\quadroname\hspace{0.25em}\thequadro}
+
+ \ExplSyntaxOn
+ \DefTblrTemplate{caption-lot}{quadro}
+ {
+
+%%% \stepcounter{tabularray@abnt@global@tblr@counter}% global table/quadro counter
+ \addtocounter{table}{-1}% not count as table
+ \stepcounter{quadro}% count as quadro
+ \tl_if_empty:NTF \lTblrEntryTl
+ { \tl_set_eq:NN \l__tblr_caption_short_tl \lTblrCaptionTl }
+ { \tl_set_eq:NN \l__tblr_caption_short_tl \lTblrEntryTl }
+ \addcontentsline { loq } { quadro }
+ { \protect\numberline { \thequadro } { \l__tblr_caption_short_tl } }
+ }
+ \ExplSyntaxOff
+\fi
+
+%%% %------------------------------
+%%> \section{New table environment}
+%% New environment as wrapper for tblr, instead of new tblr, in way to support table font settings
+
+%% To set table font for new envrronment
+\NewDocumentCommand{\SetAbntTblrFont}{+m}
+{
+ \gdef\@tabularray@abnt@tblr@font{#1}
+}
+
+%%% % New environments for tables
+\NewDocumentEnvironment{abnttblr}{+o +m +b}{
+\ifdefined\@tabularray@abnt@tblr@font \@tabularray@abnt@tblr@font \fi
+\begin{tblr}[theme=abnt,#1]{#2}
+#3
+\end{tblr}
+}{}
+
+\NewDocumentEnvironment{tallabnttblr}{+o +m +b}{
+
+%%% tallabnttblr begin
+%%% \if@tablularray@abnt@mark@spanpages
+%%% DEBUG: mark span pages active
+%%% \fi
+%%% table+quadro counter = \tabularray@abnt@tblr@count@roman
+\ifdefined\@tabularray@abnt@tblr@font \@tabularray@abnt@tblr@font \fi
+\begin{talltblr}[theme=abnt,#1]{#2}
+#3
+\end{talltblr}
+
+%%% tallabnttblr end
+%%% \if@tablularray@abnt@mark@spanpages
+%%% DEBUG: mark span pages active
+%%% \fi
+%%% table+quadro counter = \tabularray@abnt@tblr@count@roman
+}{}
+
+\NewDocumentEnvironment{longabnttblr}{+o +m +b}{
+
+%%% longabnttblr begin
+%%% \if@tablularray@abnt@mark@spanpages
+%%% DEBUG: mark span pages active
+%%% \fi
+%%% table+quadro counter = \tabularray@abnt@tblr@count@roman
+%%% \global\let\if@tablularray@abnt@mark@spanpages\iftrue
+\ifdefined\@tabularray@abnt@tblr@font \@tabularray@abnt@tblr@font \fi
+\begin{longtblr}[theme=abnt,#1]{#2}
+#3
+\end{longtblr}
+
+%%% \global\let\if@tablularray@abnt@mark@spanpages\iffalse
+
+%%% longabnttblr end
+%%% \if@tablularray@abnt@mark@spanpages
+%%% DEBUG: mark span pages active
+%%% \fi
+%%% table+quadro counter = \tabularray@abnt@tblr@count@roman
+}{}
+
+%% end: tabularray-abnt.sty
+
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-base.sty b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-base.sty
index e02c03e63ad..038daddd692 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-base.sty
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-base.sty
@@ -25,7 +25,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf.dtx
-\ProvidesExplPackage {tagpdf-base} {2024-09-11} {0.99e}
+\ProvidesExplPackage {tagpdf-base} {2025-01-12} {0.99l}
{part of tagpdf - provide base, no-op versions of the user commands }
\cs_new_protected:Npn \__tag_whatsits: {}
\AddToHook{begindocument}
@@ -45,12 +45,13 @@
\cs_new_protected:Npn \tagstart{}
\cs_new_protected:Npn \tag_stop:n #1 {}
\cs_new_protected:Npn \tag_start:n #1 {}
+\cs_set_eq:NN \tag_suspend:n \tag_stop:n
+\cs_set_eq:NN \tag_resume:n \tag_start:n
%% File: tagpdf-mc-generic.dtx
\cs_new_protected:Npn \tag_mc_begin:n #1 { \__tag_whatsits: \int_gincr:N \c@g__tag_MCID_abs_int }
\cs_new_protected:Nn \tag_mc_end:{ \__tag_whatsits: }
%% File: tagpdf-mc-shared.dtx
-
\newcounter { g__tag_MCID_abs_int }
\cs_new:Npn \__tag_get_data_mc_counter:
{
@@ -87,8 +88,11 @@
%% File: tagpdf-checks.dtx
\cs_new:Npn \tag_get:n #1 { \use:c {__tag_get_data_#1: } }
-\prg_new_conditional:Npnn \tag_if_active: { p , T , TF, F }
- { \prg_return_false: }
+\cs_if_exist:NF\tag_if_active:T
+ {
+ \prg_new_conditional:Npnn \tag_if_active: { p , T , TF, F }
+ { \prg_return_false: }
+ }
\prg_new_conditional:Npnn \tag_if_box_tagged:N #1 {p,T,F,TF}
{
\tl_if_exist:cTF {l_tag_box_\int_use:N #1_tl}
@@ -106,7 +110,6 @@
-
\NewDocumentCommand \tagpdfsetup { m }{}
\cs_new_protected:Npn\tag_tool:n #1 {}
\cs_set_eq:NN\tagtool\tag_tool:n
@@ -142,7 +145,13 @@
}
\providecommand\tag_socket_use:n[1]{}
\providecommand\tag_socket_use:nn[2]{}
+\providecommand\tag_socket_use:nnn[3]{#3}
+\providecommand\tag_socket_use_expandable:n[1]{}
+\providecommand\socket_use_expandable:nw [1] {
+ \use:c { __socket_#1_plug_ \str_use:c { l__socket_#1_plug_str } :w }
+}
\providecommand\UseTaggingSocket[1]{}
+\providecommand\UseExpandableTaggingSocket[1]{}
\bool_new:N \l__tag_para_flattened_bool
\bool_new:N \l__tag_para_bool
\newcommand\tagpdfparaOn {}
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-generic.sty b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-generic.sty
index c49870fb282..5aa593f0730 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-generic.sty
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-generic.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-mc-generic.dtx
-\ProvidesExplPackage {tagpdf-debug-generic} {2024-09-11} {0.99e}
+\ProvidesExplPackage {tagpdf-debug-generic} {2025-01-12} {0.99l}
{part of tagpdf - debugging code related to marking chunks - generic mode}
\cs_set_protected:Npn \tag_mc_begin:n #1 %#1 keyval
{
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-lua.sty b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-lua.sty
index 1ae2ed1edf1..d387502e385 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-lua.sty
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-lua.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-mc-luacode.dtx
-\ProvidesExplPackage {tagpdf-debug-lua} {2024-09-11} {0.99e}
+\ProvidesExplPackage {tagpdf-debug-lua} {2025-01-12} {0.99l}
{part of tagpdf - debugging code related to marking chunks - lua mode}
\cs_set_protected:Npn \__tag_mc_handle_stash:n #1 %1 mcidnum
{
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug.sty b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug.sty
index e2ef54ead5d..4e0ed206950 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug.sty
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug.sty
@@ -26,14 +26,14 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf.dtx
-\ProvidesExplPackage {tagpdf-debug} {2024-09-11} {0.99e}
+\ProvidesExplPackage {tagpdf-debug} {2025-01-12} {0.99l}
{ debug code for tagpdf }
\@ifpackageloaded{tagpdf}{}{\PackageWarning{tagpdf-debug}{tagpdf~not~loaded,~quitting}\endinput}
\prop_gput:Nnn \g_msg_module_type_prop { tag / debug} {}
\prop_gput:Nnn \g_msg_module_name_prop { tag / debug }{tagpdf~DEBUG}
\cs_set_protected:Npn \tag_stop:
{
- \msg_note:nne {tag / debug }{tag-stop}{ \int_use:N \l__tag_tag_stop_int }
+ \msg_note:nne {tag / debug }{tag-suspend}{ \int_use:N \l__tag_tag_stop_int }
\int_incr:N \l__tag_tag_stop_int
\bool_set_false:N \l__tag_active_struct_bool
\bool_set_false:N \l__tag_active_mc_bool
@@ -50,13 +50,13 @@
\bool_set_true:N \l__tag_active_socket_bool
\__tag_start_para_ints:
}
- \msg_note:nne {tag / debug }{tag-start}{ \int_use:N \l__tag_tag_stop_int }
+ \msg_note:nne {tag / debug }{tag-resume}{ \int_use:N \l__tag_tag_stop_int }
}
\cs_set_eq:NN\tagstop\tag_stop:
\cs_set_eq:NN\tagstart\tag_start:
-\cs_set_protected:Npn \tag_stop:n #1
+\cs_set_protected:Npn \tag_suspend:n #1
{
- \msg_note:nnee {tag / debug }{tag-stop}
+ \msg_note:nnee {tag / debug }{tag-suspend}
{ \int_use:N \l__tag_tag_stop_int }{\exp_not:n{#1}}
\int_incr:N \l__tag_tag_stop_int
\bool_set_false:N \l__tag_active_struct_bool
@@ -64,7 +64,8 @@
\bool_set_false:N \l__tag_active_socket_bool
\__tag_stop_para_ints:
}
-\cs_set_protected:Npn \tag_start:n #1
+\cs_set_eq:NN \tag_stop:n \tag_suspend:n
+\cs_set_protected:Npn \tag_resume:n #1
{
\int_if_zero:nF { \l__tag_tag_stop_int } { \int_decr:N \l__tag_tag_stop_int }
\int_if_zero:nT { \l__tag_tag_stop_int }
@@ -74,9 +75,10 @@
\bool_set_true:N \l__tag_active_socket_bool
\__tag_start_para_ints:
}
- \msg_note:nnee {tag / debug }{tag-start}
+ \msg_note:nnee {tag / debug }{tag-resume}
{ \int_use:N \l__tag_tag_stop_int }{\exp_not:n{#1}}
}
+\cs_set_eq:NN \tag_start:n \tag_resume:n
\bool_if:NTF \g__tag_mode_lua_bool
{
\RequirePackage {tagpdf-debug-lua}
@@ -195,20 +197,20 @@
}
}
}
-\msg_new:nnn { tag / debug } {tag-stop}
+\msg_new:nnn { tag / debug } {tag-suspend}
{
\int_if_zero:nTF
{#1}
- {Tagging~stopped}
- {Tagging~(not)~stopped~(already~inactive)}\\
+ {Tagging~suspended}
+ {Tagging~(not)~suspended~(already~inactive)}\\
level:~#1~==>~\int_eval:n{#1+1}\tl_if_empty:nF{#2}{,~label:~#2}~[\msg_line_context:]
}
-\msg_new:nnn { tag / debug } {tag-start}
+\msg_new:nnn { tag / debug } {tag-resume}
{
\int_if_zero:nTF
{#1}
- {Tagging~restarted}
- {Tagging~(not)~restarted}\\
+ {Tagging~resumed}
+ {Tagging~(not)~resumed}\\
level:~\int_eval:n{#1+1}~==>~#1\tl_if_empty:nF{#2}{,~label:~#2}~[\msg_line_context:]
}
%% File: tagpdf-user.dtx
@@ -217,7 +219,6 @@
-
\keys_define:nn { __tag / show }
{
,debug/structures .code:n =
@@ -247,7 +248,6 @@
,debug/structures .default:n = 1
}
%% File: tagpdf-mc-shared.dtx
-
%% File: tagpdf-tree.dtx
%% File: tagpdf-roles.dtx
%% File: tagpdf-struct.dtx
@@ -263,7 +263,7 @@
\seq_new:c { g__tag_struct_debug_kids_1_seq }
\prop_gset_eq:cc { g__tag_struct_debug_1_prop }{ g__tag_struct_1_prop }
\prop_gremove:cn { g__tag_struct_debug_1_prop }{Namespaces}
-\cs_set_protected:Npn \__tag_struct_kid_mc_gput_right:nn #1 #2 %#1 structure num, #2 MCID absnum%
+\cs_set_protected:Npn \__tag_struct_kid_mc_gput_right:nn #1 #2
{
\__tag_seq_gput_right:ce
{ g__tag_struct_kids_#1_seq }
@@ -281,7 +281,8 @@
\prop_item:Nn \g__tag_struct_cont_mc_prop {#2}
}
}
-\cs_set_protected:Npn\__tag_struct_kid_struct_gput_right:nn #1 #2 %#1 num of parent struct, #2 kid struct
+\cs_set_protected:Npn\__tag_struct_kid_struct_gput_right:nn #1 #2
+%%#1 num of parent struct, #2 kid struct
{
\__tag_seq_gput_right:ce
{ g__tag_struct_kids_#1_seq }
@@ -294,8 +295,22 @@
Struct~#2
}
}
-
+\cs_set_protected:Npn\__tag_struct_kid_struct_gput_left:nn #1 #2
+%%#1 num of parent struct, #2 kid struct
+ {
+ \__tag_seq_gput_left:ce
+ { g__tag_struct_kids_#1_seq }
+ {
+ \pdf_object_ref_indexed:nn { __tag/struct }{ #2 }
+ }
+ \seq_gput_left:cn
+ { g__tag_struct_debug_kids_#1_seq }
+ {
+ Struct~#2
+ }
+ }
\cs_set_protected:Npn\__tag_struct_kid_OBJR_gput_right:nnn #1 #2 #3
+%%#1 num of parent struct,#2 obj reference,#3 page object reference
{
\pdf_object_unnamed_write:nn
{ dict }
@@ -450,7 +465,7 @@
%record this structure as kid:
%\tl_show:N \g__tag_struct_stack_current_tl
%\tl_show:N \l__tag_struct_stack_parent_tmpa_tl
- \__tag_struct_kid_struct_gput_right:ee
+ \use:c { __tag_struct_kid_struct_gput_ \l__tag_struct_addkid_tl :ee }
{ \l__tag_struct_stack_parent_tmpa_tl }
{ \g__tag_struct_stack_current_tl }
%\prop_show:c { g__tag_struct_\g__tag_struct_stack_current_tl _prop }
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-luatex.def b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-luatex.def
index d9496473f6f..c246c0aedb6 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-luatex.def
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-luatex.def
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-backend.dtx
-\ProvidesExplFile {tagpdf-luatex.def} {2024-09-11} {0.99e}
+\ProvidesExplFile {tagpdf-luatex.def} {2025-01-12} {0.99l}
{tagpdf~driver~for~luatex}
{
\fontencoding{TU}\fontfamily{lmr}\fontseries{m}\fontshape{n}\fontsize{10pt}{10pt}\selectfont
@@ -54,7 +54,11 @@
\seq_gput_right:Nn #1 { #2 }
\lua_now:e { table.insert(ltx.__tag.tables.\cs_to_str:N#1, "#2") }
}
-
+\cs_set_protected:Npn \__tag_seq_gput_left:Nn #1 #2
+ {
+ \seq_gput_left:Nn #1 { #2 }
+ \lua_now:e { table.insert(ltx.__tag.tables.\cs_to_str:N#1, "#2") }
+ }
\cs_set:Npn \__tag_seq_item:cn #1 #2
{
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-generic.sty b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-generic.sty
index 44a984cba60..d52651e63c7 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-generic.sty
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-generic.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-mc-generic.dtx
-\ProvidesExplPackage {tagpdf-mc-code-generic} {2024-09-11} {0.99e}
+\ProvidesExplPackage {tagpdf-mc-code-generic} {2025-01-12} {0.99l}
{part of tagpdf - code related to marking chunks - generic mode}
\tl_new:N \l__tag_mc_ref_abspage_tl
@@ -29,7 +29,10 @@
\seq_new:N \g__tag_mc_main_marks_seq
\seq_new:N \g__tag_mc_footnote_marks_seq
\seq_new:N \g__tag_mc_multicol_marks_seq
-
+\cs_new_protected:Npn \tag_mc_new_stream:n #1
+ {
+ \seq_new:c { g__tag_mc_multicol_#1_seq }
+ }
\seq_new:N \l__tag_mc_firstmarks_seq
\seq_new:N \l__tag_mc_botmarks_seq
\cs_new_protected:Npn \__tag_mc_begin_marks:nn #1 #2 %#1 tag, #2 label
@@ -233,6 +236,7 @@
%%
}
}
+\cs_set_eq:NN \tag_mc_add_missing_to_stream:Nn \__tag_add_missing_mcs_to_stream:Nn
\prg_new_conditional:Nnn \__tag_mc_if_in: {p,T,F,TF}
{
\bool_if:NTF \g__tag_in_mc_bool
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-lua.sty b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-lua.sty
index 8bc92d6fbd4..d4cea83b0c3 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-lua.sty
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-lua.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-mc-luacode.dtx
-\ProvidesExplPackage {tagpdf-mc-code-lua} {2024-09-11} {0.99e}
+\ProvidesExplPackage {tagpdf-mc-code-lua} {2025-01-12} {0.99l}
{tagpdf - mc code only for the luamode }
\hook_gput_code:nnn{begindocument}{tagpdf/mc}
{
@@ -76,6 +76,8 @@
}
}
\cs_new_protected:Npn \__tag_add_missing_mcs_to_stream:Nn #1#2 {}
+\cs_set_eq:NN \tag_mc_add_missing_to_stream:Nn \__tag_add_missing_mcs_to_stream:Nn
+\cs_new_protected:Npn \tag_mc_new_stream:n #1 {}
\prg_new_conditional:Nnn \__tag_mc_if_in: {p,T,F,TF}
{
\int_compare:nNnTF
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex-book.def b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex-book.def
index dae09e93850..deb3f83e0ae 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex-book.def
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex-book.def
@@ -19,8 +19,8 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-data.dtx
-%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2024-09-11} {0.99e}
-%% {latex-book} {https://www.latex-project.org/ns/book/2022}{}
+%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2025-01-12} {0.99l}
+%% {latex-book} {https://www.latex-project.org/ns/book}{}
chapter, H1,pdf2,
section, H2,pdf2,
subsection, H3,pdf2,
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex.def b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex.def
index 66dc96804b9..55989f39ef2 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex.def
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex.def
@@ -19,8 +19,8 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-data.dtx
-%% \ProvidesExplFile {tagpdf-ns-latex.def} {2024-09-11} {0.99e}
-%% {latex} {https://www.latex-project.org/ns/dflt/2022}{}
+%% \ProvidesExplFile {tagpdf-ns-latex.def} {2025-01-12} {0.99l}
+%% {latex} {https://www.latex-project.org/ns/dflt}{}
title, Title, pdf2,
part, Title, pdf2,
section, H1, pdf2,
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-mathml.def b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-mathml.def
index 7b7b2bc9309..4e15ef5ac3a 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-mathml.def
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-mathml.def
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-data.dtx
-%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2024-09-11} {0.99e}
+%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2025-01-12} {0.99l}
abs,abs,mathml,
and,and,mathml,
annotation,annotation,mathml,
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf.def b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf.def
index 99b8c6c8fb4..83f4c5842f8 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf.def
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf.def
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-data.dtx
-%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2024-09-11} {0.99e}
+%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2025-01-12} {0.99l}
%% {pdf} {http://iso.org/pdf/ssn}{}
StructTreeRoot,StructTreeRoot,pdf,D,
Document,Document,pdf,D,
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf2.def b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf2.def
index e893515d66a..5503387b3dd 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf2.def
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf2.def
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-data.dtx
-%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2024-09-11} {0.99e}
+%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2025-01-12} {0.99l}
%% {pdf2} {http://iso.org/pdf2/ssn}{}
StructTreeRoot,StructTreeRoot,pdf2,D,
Document,Document,pdf2,D,
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child-2.csv b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child-2.csv
index 9b4b6343479..ebbf854a917 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child-2.csv
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child-2.csv
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-data.dtx
-%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2024-09-11} {0.99e}
+%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2025-01-12} {0.99l}
,,,StructTreeRoot,Document,DocumentFragment,Art,Part,Div,Sect,Aside,BlockQuote,NonStruct,TOC,TOCI,Index,Private,Title,Sub,Quote,Note,Reference,BibEntry,P,Hn,H,Lbl,Code,Em,Strong,Span,Link,Annot,Form,Ruby,RB,RT,RP,Warichu,WT,WP,FENote,L,LI,LBody,Table,TR,TH,TD,THead,TBody,TFoot,Caption,Figure,Formula,math,mathml,Artifact,MC
Document,both,document level,1,0..n,0..n,∅,‡,‡,∅,0..n,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,0..n,∅
DocumentFragment,2.0,document level,∅,0..n,0..n,0..n,‡,‡,0..n,0..n,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅*,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅*,∅*,∅,∅,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅,0..n,∅
@@ -38,7 +38,7 @@ P,both,block,∅,0..n,0..n,0..n,‡,‡,0..n,0..n,0..n,‡,∅,0..n,0..n,0..n,0.
Hn,both,block,∅,0..n,0..n,0..n,‡,‡,0..n,0..n,0..n,‡,∅,∅,0..n,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅*,∅*,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,0..n,∅,∅,0..n,0..n,∅,∅,∅,0..n,0..n,0..n,∅,∅,0..n,∅
H,both,block,∅,0..1,0..1,0..1,‡,‡,0..1,0..1,0..1,‡,∅,∅,0..n,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅*,∅*,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,0..1,∅,∅,0..1,0..1,∅,∅,∅,0..1,0..1,0..1,∅,∅,0..1,∅
Title,2.0,grouping!block,∅,0..n,0..n,0..n,‡,‡,0..n,∅,∅,‡,∅,∅,∅,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅*,∅*,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,0..n,∅
-Sub,2.0,inline,∅,∅,∅,∅,‡,‡,∅,∅,∅,‡,∅,∅,∅,0..n,∅,∅,0..n,0..n,∅,∅,0..n,0..n,0..n,0..n,∅,0..n,0..n,0..n,0..n,0..n,∅,∅,0..n,0..n,0..n,∅,0..n,0..n,0..n,∅,∅,0..n,∅,∅,∅,∅,∅,∅,∅,0..n,∅*,0..n,∅,∅,0..n,∅
+Sub,2.0,inline,∅,∅,∅,∅,‡,‡,∅,∅,∅,‡,∅,∅,∅,0..n,∅,∅,0..n,0..n,∅,∅,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,∅,∅,0..n,0..n,0..n,∅,0..n,0..n,0..n,∅,∅,0..n,∅,∅,∅,∅,∅,∅,∅,0..n,∅*,0..n,∅,∅,0..n,∅
Quote,1.7,inline,∅,∅,∅,∅,‡,‡,∅,∅,∅,‡,∅,∅,∅,0..n,0..n,0..n,0..n,0..n,∅,∅,0..n,0..n,0..n,0..n,∅,0..n,0..n,0..n,0..n,0..n,∅,∅,0..n,0..n,0..n,∅,0..n,0..n,0..n,∅,∅,0..n,∅,∅,0..n,0..n,∅,∅,∅,0..n,0..n,0..n,∅,∅,0..n,∅
Note,1.7,inline,∅,0..n,0..n,0..n,‡,‡,0..n,0..n,0..n,‡,∅,∅,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,∅,∅,∅,∅,∅,∅,∅,0..n,∅,∅,0..n,∅,∅,0..n,0..n,∅,∅,∅,0..n,0..n,0..n,∅,∅,0..n,∅
Reference,1.7,inline,∅,∅,∅,∅,‡,‡,∅,0..n,0..n,‡,∅,0..n,0..n,0..n,0..n,0..n,0..n,0..n,∅,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,0..n,∅*,∅*,∅,0..n,0..n,0..n,∅,0..n,0..n,0..n,∅,∅,0..n,∅,∅,0..n,0..n,∅,∅,∅,0..n,0..n,0..n,∅,∅,0..n,∅
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child.csv b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child.csv
index aef127400d9..a3121b59af5 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child.csv
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child.csv
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-data.dtx
-%% \ProvidesExplFile {tagpdf-parent-child.csv} {2024-09-11} {0.99e}
+%% \ProvidesExplFile {tagpdf-parent-child.csv} {2025-01-12} {0.99l}
,,,StructTreeRoot,Document,Art,Part,Div,Sect,BlockQuote,NonStruct,TOC,TOCI,Index,Private,Quote,Note,Reference,BibEntry,P,Hn,H,Lbl,Code,Span,Link,Annot,Form,Ruby,RB,RT,RP,Warichu,WT,WP,L,LI,LBody,Table,TR,TH,TD,THead,TBody,TFoot,Caption,Figure,Formula,MC
Document,both,document level,1,0..n,∅,‡,‡,∅,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅
Art,1.7,grouping,∅,0..n,∅,‡,‡,0..n,0..n,‡,∅,∅,∅,0..n,∅,0..n,∅,∅,∅,0..1,0..1,∅,∅,∅,0..n,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,0..n,∅,∅,0..n,0..n,∅,∅,∅,0..n,0..n,∅,∅
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf.lua b/Master/texmf-dist/tex/latex/tagpdf/tagpdf.lua
index a5573a14ba5..c716ef521cf 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf.lua
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf.lua
@@ -24,8 +24,8 @@
local ProvidesLuaModule = {
name = "tagpdf",
- version = "0.99e", --TAGVERSION
- date = "2024-09-11", --TAGDATE
+ version = "0.99l", --TAGVERSION
+ date = "2025-01-12", --TAGDATE
description = "tagpdf lua code",
license = "The LATEX Project Public License 1.3c"
}
@@ -81,6 +81,9 @@ functions
ltx.__tag.trace.show_prop: shows a prop
ltx.__tag.trace.log
ltx.__tag.trace.showspaces : boolean
+
+ ltx.tag.get_structnum: number, shows the current structure number
+ ltx.tag.get_structnum_next: number, shows the next structure number
--]]
local mctypeattributeid = luatexbase.new_attribute ("g__tag_mc_type_attr")
@@ -127,6 +130,7 @@ local MATH = node.id("math")
local explicit_disc = 1
local regular_disc = 3
ltx = ltx or { }
+ltx.tag = ltx.tag or { } -- user commands
ltx.__tag = ltx.__tag or { }
ltx.__tag.mc = ltx.__tag.mc or { } -- mc data
ltx.__tag.struct = ltx.__tag.struct or { } -- struct data
@@ -138,6 +142,28 @@ ltx.__tag.page = ltx.__tag.page or { } -- page data, currently only i->{0
ltx.__tag.trace = ltx.__tag.trace or { } -- show commands
ltx.__tag.func = ltx.__tag.func or { } -- functions
ltx.__tag.conf = ltx.__tag.conf or { } -- configuration variables
+
+local __tag_get_struct_num =
+ function()
+ local a = token.get_macro("g__tag_struct_stack_current_tl")
+ return a
+ end
+
+local __tag_get_struct_counter =
+ function()
+ local a = tex.getcount("c@g__tag_struct_abs_int")
+ return a
+ end
+
+local __tag_get_struct_num_next =
+ function()
+ local a = tex.getcount("c@g__tag_struct_abs_int") + 1
+ return a
+ end
+
+ltx.tag.get_struct_num = __tag_get_struct_num
+ltx.tag.get_struct_counter = __tag_get_struct_counter
+ltx.tag.get_struct_num_next = __tag_get_struct_num_next
local __tag_log =
function (message,loglevel)
if (loglevel or 3) <= tex.count["l__tag_loglevel_int"] then
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty b/Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty
index 93217d1fc28..02dad6c2681 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty
@@ -28,7 +28,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf.dtx
-\ProvidesExplPackage {tagpdf} {2024-09-11} {0.99e}
+\ProvidesExplPackage {tagpdf} {2025-01-12} {0.99l}
{ LaTeX kernel code for PDF tagging }
\bool_if:nF
@@ -180,12 +180,14 @@
\cs_set_eq:NN \__tag_seq_new:N \seq_new:N
\cs_set_eq:NN \__tag_prop_gput:Nnn \prop_gput:Nnn
\cs_set_eq:NN \__tag_seq_gput_right:Nn \seq_gput_right:Nn
+\cs_set_eq:NN \__tag_seq_gput_left:Nn \seq_gput_left:Nn
\cs_set_eq:NN \__tag_seq_item:cn \seq_item:cn
\cs_set_eq:NN \__tag_prop_item:cn \prop_item:cn
\cs_set_eq:NN \__tag_seq_show:N \seq_show:N
\cs_set_eq:NN \__tag_prop_show:N \prop_show:N
\cs_generate_variant:Nn \__tag_prop_gput:Nnn { Nen , Nee, Nne , cnn, cen, cne, cno, cnx}
\cs_generate_variant:Nn \__tag_seq_gput_right:Nn { Ne , No, cn, ce }
+\cs_generate_variant:Nn \__tag_seq_gput_left:Nn { ce }
\cs_generate_variant:Nn \__tag_prop_new:N { c }
\cs_generate_variant:Nn \__tag_seq_new:N { c }
\cs_generate_variant:Nn \__tag_seq_show:N { c }
@@ -212,7 +214,7 @@
}
\cs_set_eq:NN\tagstop\tag_stop:
\cs_set_eq:NN\tagstart\tag_start:
-\cs_set_protected:Npn \tag_stop:n #1
+\cs_set_protected:Npn \tag_suspend:n #1
{
\int_incr:N \l__tag_tag_stop_int
\bool_set_false:N \l__tag_active_struct_bool
@@ -220,7 +222,8 @@
\bool_set_false:N \l__tag_active_socket_bool
\__tag_stop_para_ints:
}
-\cs_set_protected:Npn \tag_start:n #1
+\cs_set_eq:NN \tag_stop:n \tag_suspend:n
+\cs_set_protected:Npn \tag_resume:n #1
{
\int_if_zero:nF { \l__tag_tag_stop_int } { \int_decr:N \l__tag_tag_stop_int }
\int_if_zero:nT { \l__tag_tag_stop_int }
@@ -231,6 +234,7 @@
\__tag_start_para_ints:
}
}
+\cs_set_eq:NN \tag_start:n \tag_resume:n
\keys_define:nn { __tag / setup }
{
activate/mc .bool_gset:N = \g__tag_active_mc_bool,
@@ -444,7 +448,7 @@
\msg_error:nnn { tag } {role-missing} {#1}
}
{
- \prop_get:NnNTF \g__tag_role_tags_NS_prop {#2} \l_tmpa_tl
+ \prop_get:NnNTF \g__tag_role_tags_NS_prop {#2} \l__tag_tmpa_tl
{
\int_compare:nNnT {\l__tag_loglevel_int} > { 0 }
{
@@ -463,7 +467,7 @@
\msg_error:nnn { tag } {role-missing} {#1}
}
{
- \prop_get:cnNTF { g__tag_role_NS_#3_prop } {#2} \l_tmpa_tl
+ \prop_get:cnNTF { g__tag_role_NS_#3_prop } {#2} \l__tag_tmpa_tl
{
\int_compare:nNnT {\l__tag_loglevel_int} > { 0 }
{
@@ -551,7 +555,7 @@
\l__tag_tmpa_tl
}
{
- \seq_clear:N \l_tmpa_seq
+ \seq_clear:N \l__tag_tmpa_seq
\int_step_inline:nnnn
{1}
{1}
@@ -571,7 +575,7 @@
##1
}
{
- \seq_gput_right:Ne \l_tmpa_seq
+ \seq_gput_right:Ne \l__tag_tmpa_seq
{
Page##1-####1-
\property_ref:enn
@@ -581,7 +585,7 @@
}
}
}
- \seq_show:N \l_tmpa_seq
+ \seq_show:N \l__tag_tmpa_seq
}
}
\prg_new_conditional:Npnn \__tag_check_if_mc_in_galley: { T,F,TF }
@@ -620,7 +624,6 @@
}
}
%% File: tagpdf-mc-shared.dtx
-
\cs_new:Npn \__tag_get_mc_abs_cnt: { \int_use:N \c@g__tag_MCID_abs_int }
\bool_new:N \g__tag_in_mc_bool
\__tag_prop_new_linked:N \g__tag_mc_parenttree_prop
@@ -666,12 +669,12 @@
\tag_mc_end_push:
\tag_mc_begin:n {artifact=#1}
\group_begin:
- \tag_stop:n{artifact-group}
+ \tag_suspend:n{artifact-group}
}
\cs_set_protected:Npn \tag_mc_artifact_group_end:
{
- \tag_start:n{artifact-group}
+ \tag_resume:n{artifact-group}
\group_end:
\tag_mc_end:
\tag_mc_begin_pop:n{}
@@ -1241,8 +1244,8 @@
\__tag_role_NS_new:nnn {pdf} {http://iso.org/pdf/ssn}{}
\__tag_role_NS_new:nnn {pdf2} {http://iso.org/pdf2/ssn}{}
\__tag_role_NS_new:nnn {mathml}{http://www.w3.org/1998/Math/MathML}{}
-\__tag_role_NS_new:nnn {latex} {https://www.latex-project.org/ns/dflt/2022}{}
-\__tag_role_NS_new:nnn {latex-book} {https://www.latex-project.org/ns/book/2022}{}
+\__tag_role_NS_new:nnn {latex} {https://www.latex-project.org/ns/dflt}{}
+\__tag_role_NS_new:nnn {latex-book} {https://www.latex-project.org/ns/book}{}
\exp_args:Nne
\__tag_role_NS_new:nnn {user}{\c__tag_role_userNS_id_str}{}
\pdf_version_compare:NnTF < {2.0}
@@ -1874,12 +1877,12 @@
tag-namespace=user,
role-namespace=, %so that we can test for it.
#1
- }{__tag/tag-role}\l_tmpa_tl
- \tl_if_empty:NF \l_tmpa_tl
+ }{__tag/tag-role}\l__tag_tmpa_tl
+ \tl_if_empty:NF \l__tag_tmpa_tl
{
- \exp_args:NNno \seq_set_split:Nnn \l_tmpa_seq { / } {\l_tmpa_tl/}
- \tl_set:Ne \l__tag_role_tag_tmpa_tl { \seq_item:Nn \l_tmpa_seq {1} }
- \tl_set:Ne \l__tag_role_role_tmpa_tl { \seq_item:Nn \l_tmpa_seq {2} }
+ \exp_args:NNno \seq_set_split:Nnn \l__tag_tmpa_seq { / } {\l__tag_tmpa_tl/}
+ \tl_set:Ne \l__tag_role_tag_tmpa_tl { \seq_item:Nn \l__tag_tmpa_seq {1} }
+ \tl_set:Ne \l__tag_role_role_tmpa_tl { \seq_item:Nn \l__tag_tmpa_seq {2} }
}
\tl_if_empty:NT \l__tag_role_role_namespace_tmpa_tl
{
@@ -1915,6 +1918,20 @@
,role/map-tags .choice:
,role/map-tags/false .code:n = { \socket_assign_plug:nn { tag/struct/tag } {latex-tags} }
,role/map-tags/pdf .code:n = { \socket_assign_plug:nn { tag/struct/tag } {pdf-tags} }
+ ,role/user-NS .code:n =
+ {
+ \pdf_version_compare:NnF < {2.0}
+ {
+ \pdf_string_from_unicode:nnN{utf8/string}{https://www.latex-project.org/ns/local/#1}\l__tag_tmpa_str
+ \tl_if_empty:NF \l__tag_tmpa_str
+ {
+ \pdfdict_gput:nne
+ {g__tag_role/Namespace_user_dict}
+ {NS}
+ {\l__tag_tmpa_str}
+ }
+ }
+ }
, mathml-tags .bool_gset:N = \g__tag_role_add_mathml_bool
, add-new-tag .meta:n = {role/new-tag={#1}}
}
@@ -1973,6 +1990,9 @@
\prop_new_linked:N \g__tag_struct_label_num_prop
\bool_new:N \l__tag_struct_elem_stash_bool
+\tl_new:N \l__tag_struct_addkid_tl
+\tl_set:Nn \l__tag_struct_addkid_tl {right}
+
\prop_new_linked:N \g__tag_struct_ref_by_dest_prop
\cs_new:Npn \__tag_struct_output_prop_aux:nn #1 #2 %#1 num, #2 key
{
@@ -2097,7 +2117,7 @@
/MCID \c_space_tl \property_ref:enn{mcid-#1}{tagmcid}{1}
>>
}
-\cs_new_protected:Npn \__tag_struct_kid_mc_gput_right:nn #1 #2 %#1 structure num, #2 MCID absnum%
+\cs_new_protected:Npn \__tag_struct_kid_mc_gput_right:nn #1 #2
{
\__tag_seq_gput_right:ce
{ g__tag_struct_kids_#1_seq }
@@ -2111,7 +2131,8 @@
}
}
\cs_generate_variant:Nn \__tag_struct_kid_mc_gput_right:nn {ne}
-\cs_new_protected:Npn\__tag_struct_kid_struct_gput_right:nn #1 #2 %#1 num of parent struct, #2 kid struct
+\cs_new_protected:Npn\__tag_struct_kid_struct_gput_right:nn #1 #2
+%%#1 num of parent struct, #2 kid struct
{
\__tag_seq_gput_right:ce
{ g__tag_struct_kids_#1_seq }
@@ -2119,11 +2140,21 @@
\pdf_object_ref_indexed:nn { __tag/struct }{ #2 }
}
}
-
\cs_generate_variant:Nn \__tag_struct_kid_struct_gput_right:nn {ee}
-\cs_new_protected:Npn\__tag_struct_kid_OBJR_gput_right:nnn #1 #2 #3 %#1 num of parent struct,
- %#2 obj reference
- %#3 page object reference
+\cs_new_protected:Npn\__tag_struct_kid_struct_gput_left:nn #1 #2
+%%#1 num of parent struct, #2 kid struct
+ {
+ \__tag_seq_gput_left:ce
+ { g__tag_struct_kids_#1_seq }
+ {
+ \pdf_object_ref_indexed:nn { __tag/struct }{ #2 }
+ }
+ }
+\cs_generate_variant:Nn \__tag_struct_kid_struct_gput_left:nn {ee}
+\cs_new_protected:Npn\__tag_struct_kid_OBJR_gput_right:nnn #1 #2 #3
+
+
+%%#1 num of parent struct,#2 obj reference,#3 page object reference
{
\pdf_object_unnamed_write:nn
{ dict }
@@ -2262,7 +2293,8 @@
{
\prop_get:cnNF { g__tag_struct_#1_prop } {P}\l__tag_tmpb_tl
{
- \prop_gput:cne { g__tag_struct_#1_prop } {P}{\pdf_object_ref_indexed:nn { __tag/struct }{1}}
+ \prop_gput:cne { g__tag_struct_#1_prop } {P}
+ {\pdf_object_ref_indexed:nn { __tag/struct }{1}}
\prop_gput:cne { g__tag_struct_#1_prop } {S}{/Artifact}
\seq_if_empty:cF {g__tag_struct_kids_#1_seq}
{
@@ -2288,8 +2320,9 @@
\msg_error:nnn { tag } { struct-no-objnum } { #1}
}
}
-\cs_new_protected:Npn \__tag_struct_insert_annot:nn #1 #2 %#1 object reference to the annotation/xform
- %#2 structparent number
+\cs_new_protected:Npn \__tag_struct_insert_annot:nn #1 #2
+ %#1 object reference to the annotation/xform
+ %#2 structparent number
{
\bool_if:NT \g__tag_active_struct_bool
{
@@ -2311,7 +2344,8 @@
#1 %
}
{
- \pdf_pageobject_ref:n { \property_ref:nnn {@tag@objr@page@#2 }{ tagabspage }{1} }
+ \pdf_pageobject_ref:n
+ { \property_ref:nnn {@tag@objr@page@#2 }{ tagabspage }{1} }
}
% add the parent obj number to the parent tree:
\exp_args:Nne
@@ -2320,7 +2354,8 @@
#2
}
{
- \pdf_object_ref_indexed:nn { __tag/struct }{ \l__tag_struct_stack_parent_tmpa_tl }
+ \pdf_object_ref_indexed:nn
+ { __tag/struct }{ \l__tag_struct_stack_parent_tmpa_tl }
}
% increase the int:
\int_gincr:N \c@g__tag_parenttree_obj_int
@@ -2341,7 +2376,8 @@
\socket_new:nn { tag/struct/tag }{1}
\socket_new_plug:nnn { tag/struct/tag }{ latex-tags }
{
- \seq_set_split:Nne \l__tag_tmpa_seq { / } {#1/\prop_item:Ne\g__tag_role_tags_NS_prop{#1}}
+ \seq_set_split:Nne \l__tag_tmpa_seq { / }
+ {#1/\prop_item:Ne\g__tag_role_tags_NS_prop{#1}}
\tl_gset:Ne \g__tag_struct_tag_tl { \seq_item:Nn\l__tag_tmpa_seq {1} }
\tl_gset:Ne \g__tag_struct_tag_NS_tl{ \seq_item:Nn\l__tag_tmpa_seq {2} }
\__tag_check_structure_tag:N \g__tag_struct_tag_tl
@@ -2349,10 +2385,12 @@
\socket_new_plug:nnn { tag/struct/tag }{ pdf-tags }
{
- \seq_set_split:Nne \l__tag_tmpa_seq { / } {#1/\prop_item:Ne\g__tag_role_tags_NS_prop{#1}}
+ \seq_set_split:Nne \l__tag_tmpa_seq { / }
+ {#1/\prop_item:Ne\g__tag_role_tags_NS_prop{#1}}
\tl_gset:Ne \g__tag_struct_tag_tl { \seq_item:Nn\l__tag_tmpa_seq {1} }
\tl_gset:Ne \g__tag_struct_tag_NS_tl{ \seq_item:Nn\l__tag_tmpa_seq {2} }
- \__tag_role_get:VVNN \g__tag_struct_tag_tl\g__tag_struct_tag_NS_tl\l__tag_tmpa_tl\l__tag_tmpb_tl
+ \__tag_role_get:VVNN
+ \g__tag_struct_tag_tl \g__tag_struct_tag_NS_tl \l__tag_tmpa_tl \l__tag_tmpb_tl
\tl_gset:Ne \g__tag_struct_tag_tl {\l__tag_tmpa_tl}
\tl_gset:Ne \g__tag_struct_tag_NS_tl{\l__tag_tmpb_tl}
\__tag_check_structure_tag:N \g__tag_struct_tag_tl
@@ -2387,6 +2425,7 @@
}
},
parent .default:n = {-1},
+firstkid .code:n = { \tl_set:Nn \l__tag_struct_addkid_tl {left} },
tag .code:n = % S property
{
\socket_use:nn { tag/struct/tag }{#1}
@@ -2548,7 +2587,7 @@
}
\cs_generate_variant:Nn \__tag_struct_add_inline_AF:nn {on}
-\cs_new_protected:Npn \__tag_struct_add_AF:nn #1 #2 % #1 struct num #2 object reference
+\cs_new_protected:Npn \__tag_struct_add_AF:nn #1 #2
{
\tl_if_exist:cTF
{
@@ -2574,7 +2613,8 @@
{
\pdf_object_if_exist:eTF {#1}
{
- \__tag_struct_add_AF:ee { \int_use:N \c@g__tag_struct_abs_int }{\pdf_object_ref:e {#1}}
+ \__tag_struct_add_AF:ee
+ { \int_use:N \c@g__tag_struct_abs_int }{\pdf_object_ref:e {#1}}
\__tag_struct_prop_gput:nne
{ \int_use:N \c@g__tag_struct_abs_int }
{ AF }
@@ -2788,7 +2828,7 @@
%record this structure as kid:
%\tl_show:N \g__tag_struct_stack_current_tl
%\tl_show:N \l__tag_struct_stack_parent_tmpa_tl
- \__tag_struct_kid_struct_gput_right:ee
+ \use:c { __tag_struct_kid_struct_gput_ \l__tag_struct_addkid_tl :ee }
{ \l__tag_struct_stack_parent_tmpa_tl }
{ \g__tag_struct_stack_current_tl }
%\prop_show:c { g__tag_struct_\g__tag_struct_stack_current_tl _prop }
@@ -3229,7 +3269,6 @@
-
\RenewDocumentCommand \tagpdfsetup { m }
{
\keys_set:nn { __tag / setup } { #1 }
@@ -3248,24 +3287,51 @@
\cs_set_protected:Npn \tag_socket_use:n #1
{
\bool_if:NT \l__tag_active_socket_bool
- { \UseSocket {tagsupport/#1} }
+ { \socket_use:n {tagsupport/#1} }
}
\cs_set_protected:Npn \tag_socket_use:nn #1#2
{
\bool_if:NT \l__tag_active_socket_bool
- { \UseSocket {tagsupport/#1} {#2} }
+ { \socket_use:nn {tagsupport/#1} {#2} }
+ }
+\cs_set_protected:Npn \tag_socket_use:nnn #1#2#3
+ {
+ \bool_if:NTF \l__tag_active_socket_bool
+ { \socket_use:nnn {tagsupport/#1} {#2} {#3} }
+ { #3 }
+ }
+\cs_set:Npn \tag_socket_use_expandable:n #1
+ {
+ \bool_if:NT \l__tag_active_socket_bool
+ { \socket_use_expandable:n {tagsupport/#1} }
}
\cs_set_protected:Npn \UseTaggingSocket #1
{
\bool_if:NTF \l__tag_active_socket_bool
- { \UseSocket{tagsupport/#1} }
+ { \socket_use:nw {tagsupport/#1} }
{
\int_case:nnF
{ \int_use:c { c__socket_tagsupport/#1_args_int } }
{
0 \prg_do_nothing:
1 \use_none:n
- 2 \use_none:nn
+ 2 \use_ii:nn
+ }
+ \ERRORusetaggingsocket
+ }
+ }
+
+\cs_set:Npn \UseExpandableTaggingSocket #1
+ {
+ \bool_if:NTF \l__tag_active_socket_bool
+ { \socket_use_expandable:nw {tagsupport/#1} }
+ {
+ \int_case:nnF
+ { \int_use:c { c__socket_tagsupport/#1_args_int } }
+ {
+ 0 \prg_do_nothing:
+ 1 \use_none:n
+ 2 \use_ii:nn
}
\ERRORusetaggingsocket
}
@@ -3515,9 +3581,9 @@
{\tagmcbegin{tag=Lbl}}
{#1}
}
- \tag_stop:n{hangfrom}
+ \tag_suspend:n{hangfrom}
\hangindent \wd\@tempboxa\noindent
- \tag_start:n{hangfrom}
+ \tag_resume:n{hangfrom}
\tagmcbegin{}\box\@tempboxa\tagmcend\tagstructend\tagmcbegin{}
}
}
@@ -3579,75 +3645,78 @@
\tag_mc_end:
}
}
-\socket_new:nn {tagsupport/para/begin}{0}
-\socket_new:nn {tagsupport/para/end}{0}
-
-\socket_new_plug:nnn{tagsupport/para/begin}{plain}
+\str_if_exist:cF { l__socket_tagsupport/para/begin_plug_str }
{
- \bool_if:NT \l__tag_para_bool
+ \socket_new:nn {tagsupport/para/begin}{0}
+ \socket_new:nn {tagsupport/para/end}{0}
+
+ \socket_new_plug:nnn{tagsupport/para/begin}{plain}
{
- \bool_if:NF \l__tag_para_flattened_bool
- {
- \__tag_gincr_para_main_begin_int:
- \tag_struct_begin:n
+ \bool_if:NT \l__tag_para_bool
+ {
+ \bool_if:NF \l__tag_para_flattened_bool
{
- tag=\l__tag_para_main_tag_tl,
+ \__tag_gincr_para_main_begin_int:
+ \tag_struct_begin:n
+ {
+ tag=\l__tag_para_main_tag_tl,
+ }
+ \__tag_para_main_store_struct:
}
- \__tag_para_main_store_struct:
- }
- \__tag_gincr_para_begin_int:
- \tag_struct_begin:n {tag=\l__tag_para_tag_tl}
- \__tag_check_para_begin_show:nn {green}{}
- \tag_mc_begin:n {}
+ \__tag_gincr_para_begin_int:
+ \tag_struct_begin:n {tag=\l__tag_para_tag_tl}
+ \__tag_check_para_begin_show:nn {green}{}
+ \tag_mc_begin:n {}
+ }
}
- }
-\socket_new_plug:nnn{tagsupport/para/begin}{block}
- {
- \bool_if:NT \l__tag_para_bool
+ \socket_new_plug:nnn{tagsupport/para/begin}{block}
{
- \legacy_if:nF { @inlabel }
+ \bool_if:NT \l__tag_para_bool
{
- \__tag_check_typeout_v:n
- {==>~ @endpe = \legacy_if:nTF { @endpe }{true}{false} \on@line }
- \legacy_if:nF { @endpe }
- {
- \bool_if:NF \l__tag_para_flattened_bool
- {
- \__tag_gincr_para_main_begin_int:
- \tag_struct_begin:n
- {
- tag=\l__tag_para_main_tag_tl,
- attribute-class=\l__tag_para_main_attr_class_tl,
- }
- \__tag_para_main_store_struct:
+ \legacy_if:nF { @inlabel }
+ {
+ \__tag_check_typeout_v:n
+ {==>~ @endpe = \legacy_if:nTF { @endpe }{true}{false} \on@line }
+ \legacy_if:nF { @endpe }
+ {
+ \bool_if:NF \l__tag_para_flattened_bool
+ {
+ \__tag_gincr_para_main_begin_int:
+ \tag_struct_begin:n
+ {
+ tag=\l__tag_para_main_tag_tl,
+ attribute-class=\l__tag_para_main_attr_class_tl,
+ }
+ \__tag_para_main_store_struct:
+ }
}
- }
- \__tag_gincr_para_begin_int:
- \__tag_check_typeout_v:n {==>~increment~ P \on@line }
- \tag_struct_begin:n
- {
- tag=\l__tag_para_tag_tl
- ,attribute-class=\l__tag_para_attr_class_tl
- }
- \__tag_check_para_begin_show:nn {green}{\PARALABEL}
- \tag_mc_begin:n {}
- }
- }
- }
-\socket_new_plug:nnn{tagsupport/para/end}{plain}
- {
- \bool_if:NT \l__tag_para_bool
+ \__tag_gincr_para_begin_int:
+ \__tag_check_typeout_v:n {==>~increment~ P \on@line }
+ \tag_struct_begin:n
+ {
+ tag=\l__tag_para_tag_tl
+ ,attribute-class=\l__tag_para_attr_class_tl
+ }
+ \__tag_check_para_begin_show:nn {green}{\PARALABEL}
+ \tag_mc_begin:n {}
+ }
+ }
+ }
+ \socket_new_plug:nnn{tagsupport/para/end}{plain}
{
- \__tag_gincr_para_end_int:
- \__tag_check_typeout_v:n {==>~increment~ /P \on@line }
- \tag_mc_end:
- \__tag_check_para_end_show:nn {red}{}
- \tag_struct_end:
- \bool_if:NF \l__tag_para_flattened_bool
- {
- \__tag_gincr_para_main_end_int:
- \tag_struct_end:
- }
+ \bool_if:NT \l__tag_para_bool
+ {
+ \__tag_gincr_para_end_int:
+ \__tag_check_typeout_v:n {==>~increment~ /P \on@line }
+ \tag_mc_end:
+ \__tag_check_para_end_show:nn {red}{}
+ \tag_struct_end:
+ \bool_if:NF \l__tag_para_flattened_bool
+ {
+ \__tag_gincr_para_main_end_int:
+ \tag_struct_end:
+ }
+ }
}
}
\socket_assign_plug:nn { tagsupport/para/begin}{plain}
@@ -3708,26 +3777,29 @@
\cs_if_exist:NT \@kernel@before@footins
{
\tl_put_right:Nn \@kernel@before@footins
- { \__tag_add_missing_mcs_to_stream:Nn \footins {footnote} }
+ { \tag_mc_add_missing_to_stream:Nn \footins {footnote} }
\tl_put_right:Nn \@kernel@before@cclv
{
\__tag_check_typeout_v:n {====>~In~\token_to_str:N \@makecol\c_space_tl\the\c@page}
- \__tag_add_missing_mcs_to_stream:Nn \@cclv {main}
+ \tag_mc_add_missing_to_stream:Nn \@cclv {main}
}
\tl_put_right:Nn \@kernel@tagsupport@@makecol
{
\__tag_check_typeout_v:n {====>~In~\token_to_str:N \@makecol\c_space_tl\the\c@page}
- \__tag_add_missing_mcs_to_stream:Nn \@outputbox {main}
+ \tag_mc_add_missing_to_stream:Nn \@outputbox {main}
}
- \tl_put_right:Nn \@mult@ptagging@hook
- {
- \__tag_check_typeout_v:n {====>~In~\string\page@sofar}
- \process@cols\mult@firstbox
+ \tl_if_exist:NT \@mult@ptagging@hook
+ {
+ \tl_put_right:Nn \@mult@ptagging@hook
{
- \__tag_add_missing_mcs_to_stream:Nn \count@ {multicol}
+ \__tag_check_typeout_v:n {====>~In~\string\page@sofar}
+ \process@cols\mult@firstbox
+ {
+ \tag_mc_add_missing_to_stream:Nn \count@ {multicol}
+ }
+ \tag_mc_add_missing_to_stream:Nn \mult@rightbox {multicol}
}
- \__tag_add_missing_mcs_to_stream:Nn \mult@rightbox {multicol}
- }
+ }
}
}
}
@@ -3768,11 +3840,11 @@
\bool_gset_false:N \g__tag_in_mc_bool
}
\tag_mc_begin:n {artifact}
- \tag_stop:n{headfoot}
+ \tag_suspend:n{headfoot}
}
\cs_new_protected:Npn \__tag_exclude_headfoot_end:
{
- \tag_start:n{headfoot}
+ \tag_resume:n{headfoot}
\tag_mc_end:
\bool_if:NTF \g__tag_mode_lua_bool
{
@@ -3796,12 +3868,12 @@
}
\tag_struct_begin:n{tag=Artifact,attribute-class=__tag/attr/#1}
\tag_mc_begin:n {artifact=#1}
- \tag_stop:n{headfoot}
+ \tag_suspend:n{headfoot}
}
\cs_new_protected:Npn \__tag_exclude_struct_headfoot_end:
{
- \tag_start:n{headfoot}
+ \tag_resume:n{headfoot}
\tag_mc_end:
\tag_struct_end:
\bool_if:NTF \g__tag_mode_lua_bool
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdfdocu-patches.sty b/Master/texmf-dist/tex/latex/tagpdf/tagpdfdocu-patches.sty
index 5619d595715..ab23a61e248 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdfdocu-patches.sty
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdfdocu-patches.sty
@@ -1,5 +1,5 @@
%\RequirePackage[enable-debug]{expl3}[2018/06/14]
-\ProvidesExplPackage {tagpdfdocu-patches} {2024-09-11} {0.99e}
+\ProvidesExplPackage {tagpdfdocu-patches} {2025-01-12} {0.99l}
{patches/commands for the tagpdf documentation}
\RequirePackage{etoolbox,xpatch}
@@ -116,10 +116,11 @@
rightmargin=\kvtcb@doc@right,
}%
\tagtool{para=false}%
- \AssignSocketPlug{tagsupport/minipage/before}{noop}
- \AssignSocketPlug{tagsupport/minipage/after}{noop}
- \AssignSocketPlug{tagsupport/parbox/before}{noop}
- \AssignSocketPlug{tagsupport/parbox/after}{noop}
+ \AssignSocketPlug{tagsupport/minipage/before}{noop}%
+ \AssignSocketPlug{tagsupport/minipage/after}{noop}%
+ \AssignSocketPlug{tagsupport/parbox/before}{noop}%
+ \AssignSocketPlug{tagsupport/parbox/after}{noop}%
+ \AssignSocketPlug{tagsupport/para/restore}{noop}%
}
{\endblockenv }
diff --git a/Master/texmf-dist/tex/latex/tangramtikz/TangramTikz.sty b/Master/texmf-dist/tex/latex/tangramtikz/TangramTikz.sty
index 9773eb1d11e..304ae6310d7 100644
--- a/Master/texmf-dist/tex/latex/tangramtikz/TangramTikz.sty
+++ b/Master/texmf-dist/tex/latex/tangramtikz/TangramTikz.sty
@@ -1,9 +1,11 @@
% Author.........: C. Pierquet
-% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
% Inspiration....: https://tex.stackexchange.com/questions/407449/typesetting-tangram-figures-in-latex
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{TangramTikz}[2023/02/25 v0.1.5 Tangram Puzzles with TikZ]
+\ProvidesPackage{TangramTikz}[2025/01/25 v0.1.7 Tangram Puzzles with TikZ]
+% 0.1.7 Améliorations pour la version [en]
+% 0.1.6 Ajout de modèles
% 0.1.5 Ajout de modèles
% 0.1.4 Ajout de modèles
% 0.1.3 Ajout de modèles
@@ -872,12 +874,35 @@
}%
}
+%the goose / l'oie (0.1.6)
+\NewDocumentCommand\TangramGoose{ s O{TangPuzz} }{%*=colorcorrection,[key for pic]
+ \IfBooleanTF{#1}%
+ {%
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=-135>({sqrt(2)},{sqrt(2)}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[4]}]<rotate=-135>({0},{0}){TangCar}
+ \PieceTangram[TangSol={\TanGListeCouleurs[1]}]<rotate=-45>({-1.5*sqrt(2)},{0.5*sqrt(2)}){TangGrandTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[5]}]<xscale=-1>({1-1.5*sqrt(2)},{0.5*sqrt(2)}){TangPara}
+ \PieceTangram[TangSol={\TanGListeCouleurs[2]}]({-1.5*sqrt(2)-2},{1+0.5*sqrt(2)}){TangMoyTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]<rotate=45>({sqrt(2)},{-1.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[TangSol={\TanGListeCouleurs[3]}]({-0.5},{-sqrt(2)-0.5}){TangPetTri}
+ }%
+ {%
+ \PieceTangram[#2]<rotate=-135>({sqrt(2)},{sqrt(2)}){TangGrandTri}
+ \PieceTangram[#2]<rotate=-135>({0},{0}){TangCar}
+ \PieceTangram[#2]<rotate=-45>({-1.5*sqrt(2)},{0.5*sqrt(2)}){TangGrandTri}
+ \PieceTangram[#2]<xscale=-1>({1-1.5*sqrt(2)},{0.5*sqrt(2)}){TangPara}
+ \PieceTangram[#2]({-1.5*sqrt(2)-2},{1+0.5*sqrt(2)}){TangMoyTri}
+ \PieceTangram[#2]<rotate=45>({sqrt(2)},{-1.5*sqrt(2)}){TangPetTri}
+ \PieceTangram[#2]({-0.5},{-sqrt(2)-0.5}){TangPetTri}
+ }%
+}
+
%macros for tangram creation / commandes pour créer le tangram
\NewDocumentCommand\TangramTikzCreateEN{ m }{%
\readlist*\TanGListeCouleurs{\TangColors}%
\ifboolKV[TGRMTikz]{Puzzle}{#1[TangPuzz={\TangColor}]}{}%
- \ifboolKV[TGRMTikz]{Correction}{#1[TangSol={\TangColor}]}{}%
- \ifboolKV[TGRMTikz]{ColorCorrection}{#1*}{}%
+ \ifboolKV[TGRMTikz]{Solution}{#1[TangSol={\TangColor}]}{}%
+ \ifboolKV[TGRMTikz]{ColorSolution}{#1*}{}%
}
\NewDocumentCommand\TangramTikzCreateFR{ m }{%
\readlist*\TanGListeCouleurs{\TangCouleurs}%
@@ -896,8 +921,9 @@
\setKVdefault[TGRMTikz]{%keys by default [en] and [fr]
Puzzle=true,%
Correction=false,%
- ColorCorrection=false,%
CorrectionCouleur=false,%
+ Solution=false,%en
+ ColorSolution=false,%en
ListeCouleurs={red,orange,blue,green,purple},%
ColorList={red,orange,blue,green,purple},%
Couleur=black,%
@@ -1018,6 +1044,9 @@
%SNAIL
\IfStrEq{#3}{Snail}{\TangramTikzCreateEN{\TangramSnail}}{}%
\IfStrEq{#3}{Escargot}{\TangramTikzCreateFR{\TangramSnail}}{}%
+ %GOOSE
+ \IfStrEq{#3}{Goose}{\TangramTikzCreateEN{\TangramGoose}}{}%
+ \IfStrEq{#3}{Oie}{\TangramTikzCreateFR{\TangramGoose}}{}%
\end{tikzpicture}%
}
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbbreakable.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbbreakable.code.tex
index cade134ab2d..2ac98f28cdc 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcbbreakable.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbbreakable.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcbbreakable.code.tex: Code for breakable colorboxes
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\RequirePackage{pdfcol}
\pdfcolInitStack{tcb@breakable}
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbdocumentation.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbdocumentation.code.tex
index a550de9fff3..676c69caf05 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcbdocumentation.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbdocumentation.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcbdocumentation.code.tex: Code for LaTeX documentations
%%
%% -------------------------------------------------------------------------------------------
@@ -17,13 +17,13 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\tcbuselibrary{listings,skins,external,raster}
\ifdefined\printindex\else%
\RequirePackage{makeidx}[2000/03/29]%
- \AddToHook{begindocument/before}{%
+ \AddToHook{begindocument/before}[tcolorbox]{%
\@ifpackageloaded{imakeidx}{%
\tcb@warning{`imakeidx' package should be loaded before `documentation' library}%
}{}}%
@@ -66,7 +66,7 @@
\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
\def\meta@font@select{\rmfamily\itshape}
-\AtEndPreamble{%
+\AtEndPreamble[tcolorbox]{%
\@ifpackageloaded{doc}{%
}{% code taken from doc.sty
\ifx\l@nohyphenation\undefined
@@ -228,7 +228,7 @@
value=value,values=Values}},
}
-\AtBeginDocument{%
+\AtBeginDocument[tcolorbox]{%
\csname tcb@doc@index@\idx@format\endcsname%
\hypersetup{
citecolor=\kvtcb@colhyper,
@@ -922,7 +922,16 @@
\def\refKey{\tcb@ref@doc{key}}
\def\refPathOperation{\tcb@ref@doc{path}}
-\AtBeginDocument{%
+\NewDocumentCommand \refPkg { O{#2} m } {%
+ \href{https://ctan.org/pkg/#1}%
+ {%
+ \refAux{#2}%
+ \kvtcb@doc@format@page{{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\selectfont\char213}%
+ \,CTAN}%
+ }%
+}
+
+\AtBeginDocument[tcolorbox]{%
\ifHy@colorlinks
\def\refAux#1{\textcolor{\kvtcb@colhyper}{\tcb@scantokens{#1}}}%
\def\refAuxcs#1{\textcolor{\kvtcb@colhyper}{\tcb@cs{#1}}}%
@@ -1065,8 +1074,6 @@
% deprecated
\tcbset{
- before example/.store in=\kvtcb@beforeexample,
- after example/.store in=\kvtcb@afterexample,
- before example=\par\smallskip,
- after example=,
+ before example/.code = {\tcb@warning@deprecatedkey{v3.50 (2015/03/16)}},
+ after example/.code = {\tcb@warning@deprecatedkey{v3.50 (2015/03/16)}},
}
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbexternal.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbexternal.code.tex
index 060f1bb9a0e..b69f6089a2d 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcbexternal.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbexternal.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcbexternal.code.tex: Code for externalization
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\tcbuselibrary{pro@cessing}
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbfitting.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbfitting.code.tex
index e133063705f..c042bfad402 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcbfitting.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbfitting.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcbfitting.code.tex: Code for fit boxes
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\newdimen\tcbfitdim
\newdimen\tcb@lowerfitdim
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbhooks.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbhooks.code.tex
index 6a60587177c..79534fff844 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcbhooks.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbhooks.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcbhooks.code.tex: Code for adding hooks
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\tcbset{%
before upper app/.code={\appto\kvtcb@before@upper{#1}},%
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcblistings.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcblistings.code.tex
index 9a869f870f6..c189baab3d7 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcblistings.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcblistings.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcblistings.code.tex: Code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\RequirePackage{listings}[2007/02/22]
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcblistingscore.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcblistingscore.code.tex
index f3ffb31b906..6fc6f597cb0 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcblistingscore.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcblistingscore.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcblistingscode.code.tex: Auxiliary code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\tcbuselibrary{pro@cessing}
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcblistingsutf8.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcblistingsutf8.code.tex
index 0fb3fd8d22a..69c651081de 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcblistingsutf8.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcblistingsutf8.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcblistingsutf8.code.tex: Code for colorboxes with listings in UTF-8
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\tcbuselibrary{listings}
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbmagazine.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbmagazine.code.tex
index 49059a0863a..1d6d55e60d2 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcbmagazine.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbmagazine.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcbmagazine.code.tex: Code for box sets and magazine styles
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\tcbuselibrary{breakable}
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbminted.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbminted.code.tex
index d21bc110367..3380129f488 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcbminted.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbminted.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcbminted.code.tex: Code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
@@ -18,12 +18,14 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\RequirePackage{minted}[2021/12/24]
% to be removed, if integrated into the minted package (#281)
-\minted@def@optcl{envname}{-P envname}{#1}
+\IfPackageAtLeastTF{minted}{2024/08/25}{}{%
+ \minted@def@optcl{envname}{-P envname}{#1}%
+}
\tcbuselibrary{listings@core}
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbposter.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbposter.code.tex
index 3fcec6b22c3..eaf2a7e8e91 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcbposter.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbposter.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcbposter.code.tex: Code for posters
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\tcbuselibrary{breakable,magazine,skins,fitting}
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbprocessing.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbprocessing.code.tex
index a5bdabc874b..55d595ce946 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcbprocessing.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbprocessing.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcbprocessing.code.tex: Code for conditional processing
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\ExplSyntaxOn
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbraster.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbraster.code.tex
index e3645497e90..9955d76a3e1 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcbraster.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbraster.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcbskinsjigsaw.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\newcounter{tcbrastercolumn}
\newcounter{tcbrasterrow}
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbskins.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbskins.code.tex
index 5e3faed9dde..3917f90b9d5 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcbskins.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbskins.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcbskins.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\RequirePackage{tikzfill.image}
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbskinsjigsaw.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbskinsjigsaw.code.tex
index 6a54fca567f..58d15193964 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcbskinsjigsaw.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbskinsjigsaw.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcbskinsjigsaw.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\tcbuselibrary{skins}
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbtheorems.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbtheorems.code.tex
index cfbc1ba796c..0d71f064708 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcbtheorems.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbtheorems.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcbtheorems.code.tex: Code for theorems in colorboxes
%%
%% -------------------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\RequirePackage{amsmath}
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbvignette.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbvignette.code.tex
index 51a4c9d6d05..8fbef36136a 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcbvignette.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbvignette.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcbvignette.code.tex: Code for ornamental frames
%%
%% -------------------------------------------------------------------------------------------
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\tcbuselibrary{skins}
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbxparse.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbxparse.code.tex
index 5223be23ea1..f35617ba698 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcbxparse.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbxparse.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcbxparse.code.tex: Code for xparse features
%%
%% -------------------------------------------------------------------------------------------
@@ -18,6 +18,6 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{6.3.0}
+\tcb@set@library@version{6.4.1}
\RequirePackage{xparse}[2013/12/31]
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcolorbox.sty b/Master/texmf-dist/tex/latex/tcolorbox/tcolorbox.sty
index 23f0d51569f..6815ef0159f 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcolorbox.sty
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcolorbox.sty
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 6.3.0 (2024/07/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcolorbox.sty: Text color boxes
%%
%% -------------------------------------------------------------------------------------------
@@ -18,8 +18,8 @@
%% This work consists of all files listed in README
%%
\NeedsTeXFormat{LaTeX2e}[2023-11-01]
-\ProvidesPackage{tcolorbox}[2024/07/10 version 6.3.0 text color boxes]
-\def\tcb@version{6.3.0}
+\ProvidesPackage{tcolorbox}[2024/10/22 version 6.4.1 text color boxes]
+\def\tcb@version{6.4.1}
%\RequirePackage{pgf}[2008/01/15]
\RequirePackage{tikz}[2023/01/15]
@@ -73,7 +73,9 @@
\def\tcb@info#1{\PackageInfo{tcolorbox}{#1}}
\def\tcb@warning#1{\PackageWarning{tcolorbox}{#1}}
\def\tcb@error#1#2{\PackageError{tcolorbox}{#1}{#2}}
-
+\def\tcb@warning@deprecatedkey#1{%
+ \tcb@warning{`\pgfkeyscurrentkey' key is deprecated hence ignored since #1.}%
+}
% key management
\pgfkeys{/tcb/.is family}
@@ -563,7 +565,6 @@
toggle left and right/evenpage/.code={\let\tcb@lrtoggle=\tcb@lrtoggle@evenpage\tcbset{check odd page}},
toggle left and right/forced/.code={\let\tcb@lrtoggle=\tcb@lrtoggle@forced},
toggle left and right/.default=evenpage,
- graphical environment/.style=,% deprecated
%
frame engine/.is choice,
frame engine/standard/.style={frame code=\tcb@drawframe@standard},
@@ -932,6 +933,11 @@
}
+\bool_new:N \g__tcobox_cleveref_loaded_bool
+\AddToHook{package/cleveref/after}
+ { \bool_gset_true:N \g__tcobox_cleveref_loaded_bool }
+
+
\cs_new:Npn \__tcobox_label_label:n #1
{
\quark_if_nil:NTF \l__tcobox_kv_labeltype_tl
@@ -939,16 +945,12 @@
\label{#1}
}
{
- \exp_last_unbraced:NNV \label[\l__tcobox_kv_labeltype_tl]{#1}
- }
- }
-
-
-\cs_new_protected:Npn \__tcobox_zcsetup_reftype:n #1
- {
- \cs_if_exist:NT \zcsetup
- {
- \zcsetup { reftype={#1} }
+ \group_begin:
+ \exp_args:NV \__tcobox_zcsetup_reftype:n \l__tcobox_kv_labeltype_tl
+ \bool_if:NTF \g__tcobox_cleveref_loaded_bool
+ { \exp_last_unbraced:NNV \label[\l__tcobox_kv_labeltype_tl]{#1} }
+ { \label{#1} }
+ \group_end:
}
}
@@ -968,6 +970,15 @@
}
+\cs_new_protected:Npn \__tcobox_zcsetup_reftype:n #1
+ {
+ \cs_if_exist:NT \zcsetup
+ {
+ \zcsetup { reftype={#1} }
+ }
+ }
+
+
\tcbset
{
label /.style = { phantom={\__tcobox_label:n{#1}} },
@@ -1103,7 +1114,7 @@
% counter for float
-\AtBeginDocument{%
+\AtBeginDocument[tcolorbox]{%
\@ifundefined{c@float@type}%
{\edef\ftype@tcbfloat{\ifx\c@figure\@undefined 1\else 4\fi}}%
{\edef\ftype@tcbfloat{\the\c@float@type}%
@@ -1594,7 +1605,7 @@
\fi%
}{%
\csxdef{tcb@ehg@current@\tcb@ehgid}{#1}%
- \begingroup\edef\x{\endgroup\noexpand\AtEndDocument{\noexpand\tcb@saveehg{\tcb@ehgid}}}\x%
+ \begingroup\edef\x{\endgroup\noexpand\AtEndDocument[tcolorbox]{\noexpand\tcb@saveehg{\tcb@ehgid}}}\x%
}%
}
@@ -2035,6 +2046,8 @@
\ExplSyntaxOn
+\exp_args_generate:n {nNo}
+
\NewSocket{tagsupport/tcb/drawing/begin}{0}
\NewSocket{tagsupport/tcb/drawing/end}{0}
\NewSocketPlug{tagsupport/tcb/drawing/begin}{suspend}
@@ -2047,7 +2060,7 @@
\NewDocumentEnvironment{ tcb@drawing }{ }
{
\use:c{ tcb@before@\tcb@split@state }
- \exp_last_unbraced:NnNo \begin{tikzpicture}[\tcb@tikz@option@hook]
+ \exp_args:NnNo \begin{tikzpicture}[\tcb@tikz@option@hook]
\UseTaggingSocket{tcb/drawing/begin}
\SuspendTagging{tcb/drawing}
\tcb@tikz@begin@hook
@@ -2557,28 +2570,36 @@
\__tcobox_new_TotalTCBox:w \ProvideDocumentCommand
}
+\NewDocumentCommand \tcolorboxenvironment { m +m }
+ {
+ \hook_gput_code:nnn{ env/#1/before }{ tcolorbox }
+ {
+ \begin{tcolorbox}
+ [{
+ savedelimiter = {#1},
+ #2,
+ wrap@environment,
+ code = \def\tcb@end@tcolorboxenvironment{\end{tcolorbox}}
+ }]
+ }
+ \hook_gput_code:nnn{ env/#1/after }{ tcolorbox }
+ {
+ \tcb@end@tcolorboxenvironment
+ }
+ }
-\ExplSyntaxOff
-
-
-\newcommand{\tcolorboxenvironment}[2]{%
- \AddToHook{env/#1/before}{%
- \begin{tcolorbox}[{savedelimiter={#1},#2,wrap@environment,%
- code={\def\tcb@end@tcolorboxenvironment{\end{tcolorbox}}}}]%
- }%
- \AddToHook{env/#1/after}{%
- \tcb@end@tcolorboxenvironment%
- }%
-}
+\DeclareTotalTCBox{ \tcboxverb }{ O{} v }{ verbatim,#1 }{ #2 }
-\DeclareTotalTCBox{\tcboxverb}{ O{} v }{verbatim,#1}{#2}
+\DeclareTotalTColorBox{ \tcbsidebyside }{ +O{} +m +m }
+ {
+ code = \long\def\tcb@sbs@text@left{#2}\long\def\tcb@sbs@text@right{#3},
+ #1,
+ sidebyside,
+ sidebyside@switch,
+ sidebyside@adapt@process
+ }{ \tcb@sbs@content }
-\DeclareTotalTColorBox{\tcbsidebyside}{ +O{} +m +m }{%
- code={\long\def\tcb@sbs@text@left{#2}\long\def\tcb@sbs@text@right{#3}},%
- #1,%
- sidebyside,%
- sidebyside@switch,sidebyside@adapt@process%
-}{\tcb@sbs@content}
+\ExplSyntaxOff
\def\tcb@addcontentsline#1#2{%
@@ -2919,3 +2940,8 @@
\ProcessOptions*
\begingroup\edef\x{\endgroup\noexpand\tcbuselibrary{\tcb@optionlist}}\x
+
+% deprecated
+\tcbset{
+ graphical environment/.code = {\tcb@warning@deprecatedkey{v6.3.0 (2024/07/10)}},
+}
diff --git a/Master/texmf-dist/tex/latex/temporal-logic/temporal-logic.sty b/Master/texmf-dist/tex/latex/temporal-logic/temporal-logic.sty
new file mode 100644
index 00000000000..e570a3de5d5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/temporal-logic/temporal-logic.sty
@@ -0,0 +1,215 @@
+%%
+%% This is file `temporal-logic.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% temporal-logic.dtx (with options: `package')
+%% Copyright (C) 2024 Dominik Schmid and Till Schallau
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The current maintainer of this work is Dominik Schmid<dominik.schmid@tu-dortmund.de>.
+%%
+%% This work consists of the files temporal-logic.dtx, temporal-logic.ins,
+%% and the derived file temporal-logic.sty.
+
+\RequirePackage{amsmath}
+\RequirePackage{expl3}
+\RequirePackage{xparse}
+\RequirePackage{tikz}
+
+\ProvidesExplPackage {temporal-logic} { 2024-10-17 } { v1.0 }{
+ Symbols for Temporal Logics
+}
+
+\cs_new:Nn \__@@_op_sup_sub:Nnn {
+ \ensuremath {
+ #1
+ \tl_if_empty:nF { #2 } { \c_math_superscript_token { \,#2 } }
+ \tl_if_empty:nF { #3 } { \c_math_subscript_token { \,#3 } }
+ \,
+ }
+}
+\cs_generate_variant:Nn \__@@_op_sup_sub:Nnn { cnn }
+
+\cs_new:Nn \__@@_op_sup:Nn { \__@@_op_sup_sub:Nnn { #1 } { #2 } {} }
+\cs_generate_variant:Nn \__@@_op_sup:Nn { cn }
+
+\cs_new:Nn \__@@_op_sub:Nn { \__@@_op_sup_sub:Nnn { #1 } { } { #2 } }
+\cs_generate_variant:Nn \__@@_op_sub:Nn { cn }
+
+\cs_new:Nn \__@@_op:N { \__@@_op_sup_sub:Nnn { #1 } { } { } }
+\cs_generate_variant:Nn \__@@_op:N { c }
+
+\dim_new:N \__@@_fht_dim
+\cs_new:Nn \__@@_ex: { \dim_use:N \__@@_fht_dim }
+
+\cs_new:Nn \__@@_render_op:n {
+ \dim_set:Nn \__@@_fht_dim {\fontcharht\font`X}
+ \tikz[execute~at~end~picture={
+ \useasboundingbox (0, 0) rectangle (\__@@_ex:, \__@@_ex:);
+ }]{
+ \group_begin:
+ \cs_set_eq:NN \EX \__@@_ex:
+ #1
+ \group_end:
+ }
+}
+
+\DeclareMathOperator { \csymbeventually } {
+ \__@@_render_op:n {
+ \draw
+ (.5*\EX, 0) --
+ (.2*\EX, .5*\EX) --
+ (.5*\EX, \EX) --
+ (.8*\EX, .5*\EX) --
+ cycle;
+ }
+}
+\DeclareMathOperator { \csymbonce } {
+ \__@@_render_op:n {
+ \draw[fill]
+ (.5*\EX, 0) --
+ (.2*\EX, .5*\EX) --
+ (.5*\EX, \EX) --
+ (.8*\EX, .5*\EX) --
+ cycle;
+}
+}
+\DeclareMathOperator { \csymbglobally } {
+ \__@@_render_op:n {
+ \draw
+ (.15*\EX, .15*\EX)
+ rectangle
+ (.85*\EX, .85*\EX);
+ }
+}
+\DeclareMathOperator { \csymbhistorically } {
+ \__@@_render_op:n {
+ \draw[fill]
+ (.15*\EX, .15*\EX)
+ rectangle
+ (.85*\EX, .85*\EX);
+ }
+}
+\DeclareMathOperator { \csymbnext } {
+ \__@@_render_op:n {
+ \draw
+ (.5*\EX, .5*\EX)
+ circle
+ (.4*\EX);
+ }
+}
+\DeclareMathOperator { \csymbprevious } {
+ \__@@_render_op:n {
+ \draw[fill]
+ (.5*\EX, .5*\EX)
+ circle
+ (.4*\EX);
+ }
+}
+\DeclareMathOperator { \csymbuntil } {
+ \ensuremath\mathcal{U}
+}
+\DeclareMathOperator { \csymbsince } {
+ \ensuremath\mathcal{S}
+}
+\DeclareMathOperator { \csymbminprevalence } {
+ \__@@_render_op:n {
+ \draw
+ (.1*\EX, .9*\EX) --
+ (.9*\EX, .9*\EX) --
+ (.5*\EX, .1*\EX) --
+ cycle;
+ }
+}
+\DeclareMathOperator { \csymbpastminprevalence } {
+ \__@@_render_op:n {
+ \draw[fill]
+ (.1*\EX, .9*\EX) --
+ (.9*\EX, .9*\EX) --
+ (.5*\EX, .1*\EX) --
+ cycle;
+ }
+}
+\DeclareMathOperator { \csymbmaxprevalence } {
+ \__@@_render_op:n {
+ \draw
+ (.1*\EX, .1*\EX) --
+ (.9*\EX, .1*\EX) --
+ (.5*\EX, .9*\EX) --
+ cycle;
+}
+ }
+\DeclareMathOperator { \csymbpastmaxprevalence } {
+ \__@@_render_op:n {
+ \draw[fill]
+ (.1*\EX, .1*\EX) --
+ (.9*\EX, .1*\EX) --
+ (.5*\EX, .9*\EX) --
+ cycle;
+ }
+}
+\DeclareMathOperator { \csymbbind } {
+ \__@@_render_op:n {
+ \draw (.5*\EX, \EX) -- (.5*\EX, 0);
+ \draw
+ (.2*\EX, .3*\EX) ..
+ controls (.4*\EX, .2*\EX) ..
+ (.5*\EX, 0) ..
+ controls (.6*\EX, .2*\EX) ..
+ (.8*\EX, .3*\EX);
+ }
+}
+
+\ProvideDocumentCommand { \ceventually } { O{} } {
+ \__@@_op_sub:cn { csymbeventually } { #1 }
+}
+\ProvideDocumentCommand { \conce } { O{} } {
+ \__@@_op_sub:cn { csymbonce } { #1 }
+}
+\ProvideDocumentCommand { \cglobally } { O{} } {
+ \__@@_op_sub:cn { csymbglobally } { #1 }
+}
+\ProvideDocumentCommand { \chistorically } { O{} } {
+ \__@@_op_sub:cn { csymbhistorically } { #1 }
+}
+\ProvideDocumentCommand { \cnext } { O{} } {
+ \__@@_op_sub:cn { csymbnext } { #1 }
+}
+\ProvideDocumentCommand { \cprevious } { O{} } {
+ \__@@_op_sub:cn { csymbprevious } { #1 }
+}
+\ProvideDocumentCommand { \cuntil } { O{} } {
+ \__@@_op_sub:Nn { \;\csymbuntil } { #1 }
+}
+\ProvideDocumentCommand { \csince } { O{} } {
+ \__@@_op_sub:Nn { \;\csymbsince } { #1 }
+}
+\ProvideDocumentCommand { \cminprevalence } { m O{} } {
+ \__@@_op_sup_sub:cnn { csymbminprevalence } { #1 } { #2 }
+}
+\ProvideDocumentCommand { \cpastminprevalence } { m O{} } {
+ \__@@_op_sup_sub:cnn { csymbpastminprevalence } { #1 } { #2 }
+}
+\ProvideDocumentCommand { \cmaxprevalence } { m O{} } {
+ \__@@_op_sup_sub:cnn { csymbmaxprevalence } { #1 } { #2 }
+}
+\ProvideDocumentCommand { \cpastmaxprevalence } { m O{} } {
+ \__@@_op_sup_sub:cnn { csymbpastmaxprevalence } { #1 } { #2 }
+}
+\ProvideDocumentCommand { \cbind } { m m } {
+ \__@@_op_sup_sub:cnn { csymbbind } { #1 } { #2 }
+}
+%%
+%%
+%% End of file `temporal-logic.sty'.
diff --git a/Master/texmf-dist/tex/latex/testhyphens/testhyphens.sty b/Master/texmf-dist/tex/latex/testhyphens/testhyphens.sty
index 91cefba9de5..0ded5e112db 100644
--- a/Master/texmf-dist/tex/latex/testhyphens/testhyphens.sty
+++ b/Master/texmf-dist/tex/latex/testhyphens/testhyphens.sty
@@ -5,70 +5,55 @@
%% The original source files were:
%%
%% testhyphens.dtx (with options: `package')
-%% Copyright 2014 Claudio Beccari All rights reserved.
+%% Copyright 2025 Claudio Beccari All rights reserved.
%%
-%% This system is distributed in the hope that it will be useful,
-%% but WITHOUT ANY WARRANTY; without even the implied warranty of
-%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+%% This system is distributed in the hope that it will
+%% be useful, but WITHOUT ANY WARRANTY; without even
+%% the implied warranty of MERCHANTABILITY or FITNESS
+%% FOR A PARTICULAR PURPOSE.
%%
-%% This file is distributed under the LPPL licence, version 1.3c
-%% dated 2008-05-04 or later as it appears in
-%% CTAN/macros/latex/base/lppl.tex.
-%% See the end of the file.
+%% This file is distributed under the LPPL licence,
+%% version 1.3c dated 2008-05-04 or later as it appears
+%% in CTAN/macros/latex/base/lppl.tex.
+%% See the end of this file.
%%
-%% IMPORTANT NOTICE:
-%%
-%% You are allowed to distribute this file under the conditions that are
-%% specified in the source file testhyphens.dtx.
-%%
-%% If you receive only some of these files from someone, complain!
-%%
-%% You are NOT ALLOWED to distribute this file alone.
-%% You are NOT ALLOWED to take money for the distribution or use
-%% of either this file or a changed version, except for a nominal
-%% charge for copying, etc.
-%% \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 \~}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{testhyphens}[%
-2015/11/23 v.0.7
+2025/01/16 v.1.0
Prints list of hyphenated words]
-\def\t@sthyphens{\everypar{\setbox0\lastbox \setbox1\hbox{\strut}\vbox\bgroup
-\offinterlineskip
-\everypar{\setbox0\lastbox \nobreak\hskip\z@}\dimen0=\hsize
-\hsize=\z@ \hfuzz\maxdimen \def\par{\endgraf \hsize=\dimen0\getlastline
-\egroup\endgraf}}\breakafterword}
+\def\t@sthyphens{%
+ \everypar{\setbox0\lastbox
+ \setbox1\hbox{\strut}\vbox\bgroup
+ \offinterlineskip
+ \everypar{\setbox0\lastbox \nobreak\hskip\z@}\dimen0=\hsize
+ \hsize=\z@ \hfuzz\maxdimen \def\par{\endgraf \hsize=\dimen0\getlastline
+ \egroup\endgraf}}\breakafterword
+}
-\def\breakafterword{\catcode`\^^M\active\catcode`\ \active}
+\def\breakafterword{%
+\catcode`\^^M=13 \catcode`\ =13
+}
{\breakafterword\gdef^^M{\par}\global\let ^^M}
-\def\getlastline{\setbox0\lastbox\ifvoid0\let\next\nomorelines
-\else\unskip\unpenalty\setbox1\hbox{\unhbox0\strut\discretionary{}{}{}%
-\unhbox1}\let\next\getlastline\fi\next}
+\def\getlastline{\setbox0\lastbox
+\ifvoid0
+ \let\next\nomorelines
+\else
+ \unskip\unpenalty
+ \setbox1\hbox{\unhbox0\strut\discretionary{}{}{}%
+ \unhbox1}\let\next\getlastline
+\fi
+\next}
\def\nomorelines{\unhbox1}
-\let\testhyphens\t@sthyphens
-
\newenvironment{checkhyphens}[1][\lefthyphenmin-\righthyphenmin]{%
\@tempcnta=\lefthyphenmin
\@tempcntb=\righthyphenmin
-\s@thyphenpars[#1]\par\bgroup\t@sthyphens
+\s@thyphenpars[#1]\par
+\bgroup\t@sthyphens
}{%
\egroup\par
}
diff --git a/Master/texmf-dist/tex/latex/texfindpkg/texfindpkg.json.gz b/Master/texmf-dist/tex/latex/texfindpkg/texfindpkg.json.gz
index db4d301d9c7..599951641ea 100644
--- a/Master/texmf-dist/tex/latex/texfindpkg/texfindpkg.json.gz
+++ b/Master/texmf-dist/tex/latex/texfindpkg/texfindpkg.json.gz
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/thmlist/thmlist.sty b/Master/texmf-dist/tex/latex/thmlist/thmlist.sty
deleted file mode 100644
index 40e19ef13e2..00000000000
--- a/Master/texmf-dist/tex/latex/thmlist/thmlist.sty
+++ /dev/null
@@ -1,63 +0,0 @@
-%% ****************************************************************************************************
-%% Copyright 2024 by Mingyu Hsia <xiamyphys@gmail.com> *
-%% *
-%% This work may be distributed and/or modified under * ***** * * *
-%% the conditions of the LaTeX Project Public License * ** * * *** * * *
-%% * * ** * * * ** *
-%% http://www.latex-project.org/lppl.txt * * * * ***** ** *
-%% * * ** * * * * *
-%% either version 1.3c of this license or any later ***** ** * * *** * * *
-%% version. *
-%% *
-%% This work has the LPPL maintenance status `maintained'. *
-%% *
-%% The Current Maintainer of this work is Mingyu Hsia. *
-%% *
-%% This work consists of the files thmlist.sty, *
-%% and README.md. *
-%% available at https://github.com/xiamyphys/thmlist *
-%% ****************************************************************************************************
-\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesPackage{thmlist}[2024/03/26/ v0.1b Package for creating amsthm environments quickly.]
-
-\DeclareOptionX{amscounter}{\gdef\@amscounter{#1}}
-\DeclareOptionX{mdfcounter}{\gdef\@mdfcounter{#1}}
-\ExecuteOptionsX{amscounter=section}
-\ExecuteOptionsX{mdfcounter=section}
-
-\DeclareOptionX{amsstyle}{\gdef\@amsstyle{#1}}
-\DeclareOptionX{mdfstyle}{\gdef\@mdfstyle{#1}}
-\ExecuteOptionsX{amsstyle=definition}
-\ExecuteOptionsX{mdfstyle=mdempty}
-
-\DeclareOptionX{thmfont}{\gdef\@thmfont{#1}}
-\ExecuteOptionsX{thmfont=\sffamily}
-
-\DeclareOptionX*{\PackageWarning{thmlist}{`\CurrentOption' ignored}}
-\ProcessOptionsX\relax
-
-\RequirePackage{amsthm,mdframed,listofitems,pgffor}
-\def\th@definition{\thm@notefont{}\normalfont}
-\theoremstyle{\@amsstyle}\mdfdefinestyle{mdempty}{}
-
-\setsepchar{;/,}\ignoreemptyitems
-\def\mdflist#1{\gdef\@mdflist{#1}}
-\def\amslist#1{\gdef\@amslist{#1}}
-\AtBeginDocument{%
- \ifcsname @mdflist\endcsname
- \readlist*\mdflist{\@mdflist}
- \def\@mdfnum{\listlen\mdflist[1]}
- \foreach \x in {1,...,\@mdfnum}{%
- \expandafter\xdef\csname\x\x\endcsname{\noexpand
- \newmdtheoremenv[linecolor=\mdflist[3,\x],style=\@mdfstyle]{\mdflist[1,\x]}
- {\noexpand\color{\mdflist[3,\x]}\noexpand\@thmfont{\mdflist[2,\x]}}[\@mdfcounter]}\csname\x\x\endcsname}
- \fi
- \ifcsname @amslist\endcsname
- \readlist*\amslist{\@amslist}
- \def\@amsnum{\listlen\amslist[1]}
- \foreach \x in {1,...,\@amsnum}{%
- \expandafter\xdef\csname\x\x\endcsname{\noexpand
- \newtheorem{\amslist[1,\x]}
- {\noexpand\color{\amslist[3,\x]}\noexpand\@thmfont{\amslist[2,\x]}}[\@amscounter]}\csname\x\x\endcsname}
- \fi
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikz-bpmn/tikzlibrarybpmn.code.tex b/Master/texmf-dist/tex/latex/tikz-bpmn/tikzlibrarybpmn.code.tex
new file mode 100644
index 00000000000..01c9e9db197
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tikz-bpmn/tikzlibrarybpmn.code.tex
@@ -0,0 +1,1031 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{tikz-bpmn}[2011/08/16 BPMN diagrams using the
+Tikz library]
+
+\RequirePackage{xcolor}
+\RequirePackage{tikz}
+\RequirePackage{bm}
+
+%this can be overridden to set the background colour, necessary for drawing double lines and other things.
+\colorlet{defaultbackgroundcolour}{white}
+
+\usetikzlibrary{shapes,shapes.geometric}
+\usetikzlibrary{arrows}
+\usetikzlibrary{calc}
+
+\tikzstyle{every task} = []
+\tikzstyle{every gateway} = []
+\tikzstyle{every sequence} = []
+\tikzstyle{every message} = []
+\tikzstyle{every association} = []
+\tikzstyle{every event} = []
+\tikzstyle{every intermediate event} = []
+\tikzstyle{every token} = []
+\tikzstyle{every call activity} = []
+
+\tikzstyle{task} = [rectangle, draw, minimum width=4em, minimum height=2em,rounded corners,align=center,every task]
+
+\tikzstyle{sequence} = [->,>=triangle 45,every sequence]
+\tikzstyle{reverse sequence} = [sequence,<-]
+\tikzstyle{message} = [o->,dashed,>=open triangle 45,every sequence]
+\tikzstyle{reverse message} = [message,<-o]
+\tikzstyle{association} = [densely dotted,>=angle 45,every association]
+\tikzstyle{event} = [circle,minimum width=1.5em, minimum height=1.5em,draw,every event]
+\tikzstyle{end event} = [event,ultra thick,every event]
+\tikzstyle{intermediate event}[defaultbackgroundcolour] = [event,double=#1,every event, every intermediate event]
+\tikzstyle{token} = [solid,circle,fill,inner sep=0.5mm]
+\tikzstyle{open token} = [solid,circle,draw,fill=red,inner sep=0.5mm,thick]
+
+\tikzset{fit margins/.style={/tikz/afit/.cd,#1,
+ /tikz/.cd,
+ inner xsep=\pgfkeysvalueof{/tikz/afit/left}+\pgfkeysvalueof{/tikz/afit/right},
+ inner ysep=\pgfkeysvalueof{/tikz/afit/top}+\pgfkeysvalueof{/tikz/afit/bottom},
+ xshift=-\pgfkeysvalueof{/tikz/afit/left}+\pgfkeysvalueof{/tikz/afit/right},
+ yshift=-\pgfkeysvalueof{/tikz/afit/bottom}+\pgfkeysvalueof{/tikz/afit/top}},
+ afit/.cd,left/.initial=2pt,right/.initial=2pt,bottom/.initial=2pt,top/.initial=2pt}
+
+\tikzstyle{text annotation} = [
+ font=\tiny,
+ path picture = {
+ \def\w{3mm}
+ \draw ($(path picture bounding box.north west)+(\w,0)$) to (path picture bounding box.north west) to (path picture bounding box.south west) to ($(path picture bounding box.south west)+(\w,0)$);
+ }
+]
+
+%%%%% gateways %%%%%
+
+\tikzstyle{gateway} = [
+ diamond,
+ draw,
+ inner sep=0pt,
+ minimum width=1.5em,
+ minimum height=1.5em,
+ align=center,
+ every gateway
+]
+
+\tikzstyle{and gateway} = [parallel gateway]
+\tikzstyle{parallel gateway} = [
+ gateway,
+ label=center:\Large +
+]
+
+\tikzstyle{xor gateway} = [exclusive gateway]
+\tikzstyle{exclusive gateway} = [
+ gateway,
+ label=center:\Large\texttimes
+]
+
+\tikzstyle{or gateway} = [inclusive gateway]
+\tikzstyle{inclusive gateway} = [
+ gateway,
+ path picture = {
+ \pgfpointdiff{\pgfpointanchor{path picture bounding box}{south east}}{\pgfpointanchor{path picture bounding box}{north east}}
+ \pgfmathsetmacro\d{\csname pgf@y\endcsname}
+ \node [draw, thick, circle, inner sep=0, minimum size=0.55*\d pt, anchor=center] at (path picture bounding box.center) {};
+ }
+]
+
+\tikzstyle{eventbased gateway} = [
+ gateway,
+ path picture = {
+ \pgfpointdiff{\pgfpointanchor{path picture bounding box}{south east}}{\pgfpointanchor{path picture bounding box}{north east}}
+ \pgfmathsetmacro\d{\csname pgf@y\endcsname}
+ \node [draw, thin, circle, inner sep=0, minimum size=0.6*\d pt, anchor=center] at (path picture bounding box.center) {};
+ \node [draw, thin, circle, inner sep=0, minimum size=0.5*\d pt, anchor=center] at (path picture bounding box.center) {};
+ \node [draw, thin, regular polygon, regular polygon sides=5, inner sep=0, minimum size=0.35*\d pt, anchor=center] at (path picture bounding box.center) {};
+ }
+]
+
+%%%%% empty events %%%%%
+
+\tikzstyle{start event} = [event]
+\tikzstyle{none start event} = [start event]
+
+%%%%% message events %%%%%
+
+\tikzstyle{message start event} = [
+ start event,
+ draw message
+]
+
+\tikzstyle{catching message intermediate event}[defaultbackgroundcolour] = [
+ draw message,
+ intermediate event=#1
+]
+
+\tikzstyle{throwing message event}[defaultbackgroundcolour] = [
+ path picture = {
+ \def\w{1.7mm}
+ \def\h{1.1mm}
+ \fill ($(path picture bounding box)+(\w,\h)$) rectangle ($(path picture bounding box)+(-\w,-\h)$);
+ \draw [#1, line cap=round, thin] ($(path picture bounding box)+(\w,\h)$) to (path picture bounding box.center);
+ \draw [#1, line cap=round, thin] ($(path picture bounding box)+(-\w,\h)$) to (path picture bounding box.center);
+ }
+]
+
+\tikzstyle{throwing message intermediate event}[defaultbackgroundcolour] = [
+ draw filled message={#1},
+ intermediate event=#1
+]
+
+\tikzstyle{message end event}[defaultbackgroundcolour] = [
+ end event,
+ draw filled message={#1}
+]
+
+\tikzstyle{terminate event} = [
+ end event,
+ path picture = {
+ \pgfpointdiff{\pgfpointanchor{path picture bounding box}{south east}}{\pgfpointanchor{path picture bounding box}{north east}}
+ \pgfmathsetmacro\d{\csname pgf@y\endcsname}
+ \node [fill, circle, inner sep=0, minimum size=0.65*\d pt, anchor=center] at (path picture bounding box.center) {};
+ }
+]
+
+%%%%% other events %%%%%
+
+\tikzstyle{draw signal}[] = [
+ path picture = {
+ \def\ma{0.8} %1 - margin
+ \pgfpointdiff{\pgfpointanchor{path picture bounding box}{south east}}{\pgfpointanchor{path picture bounding box}{north east}}
+ \pgfmathsetmacro\d{\csname pgf@y\endcsname}
+ \coordinate (a) at ($(path picture bounding box.center)+(90:\ma*0.5*\d pt)$);
+ \coordinate (b) at ($(path picture bounding box.center)+(210:\ma*0.5*\d pt)$);
+ \coordinate (c) at ($(path picture bounding box.center)+(330:\ma*0.5*\d pt)$);
+ \draw [solid, #1] (a) to (b) to (c) to cycle;
+ }
+]
+
+\tikzstyle{draw error}[] = [
+ path picture = {
+ \def\de{38} %degrees low peaks
+ \def\df{100} %degrees high peaks
+ \def\dd{0.38} %width at valleys
+ \def\ma{0.8} %1 - margin
+ \pgfpointdiff{\pgfpointanchor{path picture bounding box}{south east}}{\pgfpointanchor{path picture bounding box}{north east}}
+ \pgfmathsetmacro\d{\csname pgf@y\endcsname}
+ \coordinate (path picture bounding box a) at ($(path picture bounding box.center)+(\de:\ma*0.5*\d pt)$);
+ \coordinate (path picture bounding box b) at ($(path picture bounding box.center)+(180+\de:\ma*0.5*\d pt)$);
+ \coordinate (path picture bounding box c) at ($(path picture bounding box.center)+(\df:\ma*0.5*\d pt)$);
+ \coordinate (path picture bounding box d) at ($(path picture bounding box.center)+(180+\df:\ma*0.5*\d pt)$);
+ \coordinate (path picture bounding box e) at ($(path picture bounding box c)+(0,-\dd*\d pt)$);
+ \coordinate (path picture bounding box f) at ($(path picture bounding box d)+(0,\dd*\d pt)$);
+ \draw [solid, #1] (path picture bounding box a) to (path picture bounding box f) to (path picture bounding box c) to (path picture bounding box b) to (path picture bounding box e) to (path picture bounding box d) to cycle;
+ }
+]
+
+\tikzstyle{draw message} = [
+ path picture = {
+ \def\de{38} %degrees
+ \def\ma{0.2} %margin
+ \def\li{0.4} %lid
+ \coordinate (path picture bounding box a1) at ($(path picture bounding box.east)!{sin(\de)-\ma}!(path picture bounding box.north east)$);
+ \coordinate (path picture bounding box a2) at ($(path picture bounding box.center)!{cos(\de)-\ma}!(path picture bounding box.east)$);
+ \coordinate (path picture bounding box a) at (path picture bounding box a1 -| path picture bounding box a2);
+ \coordinate (path picture bounding box b1) at ($(path picture bounding box.east)!{sin(\de)-\ma}!(path picture bounding box.south east)$);
+ \coordinate (path picture bounding box b) at (path picture bounding box b1 -| path picture bounding box a2);
+ \coordinate (path picture bounding box c1) at ($(path picture bounding box.west)!{sin(\de)-\ma}!(path picture bounding box.north west)$);
+ \coordinate (path picture bounding box c2) at ($(path picture bounding box.center)!{cos(\de)-\ma}!(path picture bounding box.west)$);
+ \coordinate (path picture bounding box c) at (path picture bounding box c1 -| path picture bounding box c2);
+ \coordinate (path picture bounding box d1) at ($(path picture bounding box.west)!{sin(\de)-\ma}!(path picture bounding box.south west)$);
+ \coordinate (path picture bounding box d) at (path picture bounding box d1 -| path picture bounding box c2);
+ \coordinate (path picture bounding box e1) at ($(path picture bounding box a)!0.5!(path picture bounding box c)$);
+ \coordinate (path picture bounding box e2) at ($(path picture bounding box b)!0.5!(path picture bounding box d)$);
+ \coordinate (path picture bounding box e) at ($(path picture bounding box e1)!\li!(path picture bounding box e2)$);
+ \draw [solid] (path picture bounding box a) to (path picture bounding box b) to (path picture bounding box d) to (path picture bounding box c) to cycle;
+ \draw [solid, line cap=round] (path picture bounding box a) to (path picture bounding box e) to (path picture bounding box c);
+ }
+]
+
+\tikzstyle{draw filled message} = [
+ path picture = {
+ \def\de{38} %degrees
+ \def\ma{0.2} %margin
+ \def\li{0.4} %lid
+ \coordinate (path picture bounding box a1) at ($(path picture bounding box.east)!{sin(\de)-\ma}!(path picture bounding box.north east)$);
+ \coordinate (path picture bounding box a2) at ($(path picture bounding box.center)!{cos(\de)-\ma}!(path picture bounding box.east)$);
+ \coordinate (path picture bounding box a) at (path picture bounding box a1 -| path picture bounding box a2);
+ \coordinate (path picture bounding box b1) at ($(path picture bounding box.east)!{sin(\de)-\ma}!(path picture bounding box.south east)$);
+ \coordinate (path picture bounding box b) at (path picture bounding box b1 -| path picture bounding box a2);
+ \coordinate (path picture bounding box c1) at ($(path picture bounding box.west)!{sin(\de)-\ma}!(path picture bounding box.north west)$);
+ \coordinate (path picture bounding box c2) at ($(path picture bounding box.center)!{cos(\de)-\ma}!(path picture bounding box.west)$);
+ \coordinate (path picture bounding box c) at (path picture bounding box c1 -| path picture bounding box c2);
+ \coordinate (path picture bounding box d1) at ($(path picture bounding box.west)!{sin(\de)-\ma}!(path picture bounding box.south west)$);
+ \coordinate (path picture bounding box d) at (path picture bounding box d1 -| path picture bounding box c2);
+ \coordinate (path picture bounding box e1) at ($(path picture bounding box a)!0.5!(path picture bounding box c)$);
+ \coordinate (path picture bounding box e2) at ($(path picture bounding box b)!0.5!(path picture bounding box d)$);
+ \coordinate (path picture bounding box e) at ($(path picture bounding box e1)!\li!(path picture bounding box e2)$);
+ \fill (path picture bounding box a) to (path picture bounding box b) to (path picture bounding box d) to (path picture bounding box c) to cycle;
+ \draw [line cap=round, line width=1pt, #1] (path picture bounding box a) to (path picture bounding box e) to (path picture bounding box c);
+ }
+]
+
+\tikzstyle{draw compensation}[] = [
+ path picture = {
+ \def\de{40} %degrees
+ \def\ma{0.2} %margin
+ \coordinate (a1) at ($(path picture bounding box.east)!{sin(\de)-\ma}!(path picture bounding box.north east)$);
+ \coordinate (a2) at ($(path picture bounding box.center)!{cos(\de)-\ma}!(path picture bounding box.east)$);
+ \coordinate (a) at (a1 -| a2);
+ \coordinate (b1) at ($(path picture bounding box.east)!{sin(\de)-\ma}!(path picture bounding box.south east)$);
+ \coordinate (b) at (b1 -| a2);
+ \coordinate (c) at ($(path picture bounding box.west)!\ma!(path picture bounding box.center)$);
+ \coordinate (d1) at ($(a)!0.5!(b)$);
+ \coordinate (d) at ($(c)!0.5!(d1)$);
+ \coordinate (e) at (d |- a);
+ \coordinate (f) at (d |- b);
+ \draw [solid, #1] (d)
+ to (a)
+ to (b)
+ to cycle;
+ \draw [solid, #1] (c)
+ to (e)
+ to (f)
+ to cycle;
+ }
+]
+
+\tikzstyle{draw timer} = [
+ path picture = {
+ \def\ma{0.75} %1 - margin
+ \pgfpointdiff{\pgfpointanchor{path picture bounding box}{south east}}{\pgfpointanchor{path picture bounding box}{north east}}
+ \pgfmathsetmacro\r{\csname pgf@y\endcsname}
+ \draw [solid, #1] (path picture bounding box.center) circle (\ma*0.5*\r pt);
+ \foreach \angle in {0,30,...,330}
+ \draw [solid, ultra thin, #1] ($(path picture bounding box.center)+(\angle:\ma*0.4*\r pt)$) to ($(path picture bounding box.center)+(\angle:\ma*0.5*\r pt)$);
+ \draw [solid, line cap=round, #1] ($(path picture bounding box.center)+(77:\ma*0.425*\r pt)$) to (path picture bounding box.center);
+ \draw [solid, line cap=round, #1] ($(path picture bounding box.center)+(0:\ma*0.3*\r pt)$) to (path picture bounding box.center);
+ }
+]
+
+\tikzstyle{throwing compensation intermediate event}[defaultbackgroundcolour] = [
+ draw compensation={fill},
+ intermediate event=#1,
+]
+
+\tikzstyle{throwing compensation end event} = [
+ end event,
+ draw compensation={fill,thin}
+]
+
+\tikzstyle{error event} = [throwing error end event]
+\tikzstyle{throwing error end event} = [
+ end event,
+ draw error={fill,thin}
+]
+
+\tikzstyle{timer start event} = [
+ start event,
+ draw timer
+]
+
+\tikzstyle{timer event} = [timer intermediate event]
+\tikzstyle{timer intermediate event}[defaultbackgroundcolour] = [
+ intermediate event=#1,
+ draw timer
+]
+
+\tikzstyle{signal start event} = [
+ start event,
+ draw signal
+]
+
+\tikzstyle{signal intermediate event}[defaultbackgroundcolour] = [catching signal intermediate event=#1]
+\tikzstyle{catching signal intermediate event}[defaultbackgroundcolour] = [
+ intermediate event=#1,
+ draw signal
+]
+
+\tikzstyle{throwing signal intermediate event}[defaultbackgroundcolour] = [
+ intermediate event=#1,
+ draw signal={fill,draw=none}
+]
+
+\tikzstyle{signal end event} = [
+ end event,
+ draw signal={fill,draw=none}
+]
+
+%%%%% boundary events %%%%%
+
+\tikzstyle{boundary event}[defaultbackgroundcolour] = [
+ circle,
+ draw,
+ fill=#1,
+ double=#1,
+ anchor=center
+]
+
+\tikzstyle{noninterrupting boundary event}[defaultbackgroundcolour] = [
+ circle,
+ dashed,
+ dash pattern=on 1.5pt off 1pt,
+ draw,
+ fill=#1,
+ double=#1,
+ anchor=center
+]
+
+\tikzstyle{compensation boundary event}[defaultbackgroundcolour] = [
+ boundary event=#1,
+ draw compensation
+]
+
+\tikzstyle{message boundary event}[defaultbackgroundcolour] = [
+ boundary event=#1,
+ draw message
+]
+
+\tikzstyle{message noninterrupting boundary event}[defaultbackgroundcolour] = [
+ draw message,
+ noninterrupting boundary event=#1
+]
+
+\tikzstyle{timer boundary event}[defaultbackgroundcolour] = [
+ boundary event=#1,
+ draw timer
+]
+
+\tikzstyle{timer noninterrupting boundary event}[defaultbackgroundcolour] = [
+ draw timer,
+ noninterrupting boundary event=#1
+]
+
+\tikzstyle{error boundary event}[defaultbackgroundcolour] = [
+ boundary event=#1,
+ draw error
+]
+
+\tikzstyle{signal boundary event}[defaultbackgroundcolour] = [
+ boundary event=#1,
+ draw signal
+]
+
+\tikzstyle{signal noninterrupting boundary event}[defaultbackgroundcolour] = [
+ draw signal,
+ noninterrupting boundary event=#1
+]
+
+%%%%% event sub-process %%%%%
+
+\tikzstyle{event subprocess} = [
+ expanded subprocess,
+ dotted
+]
+
+\tikzstyle{collapsed event subprocess} = [
+ collapsed subprocess,
+ dotted,
+ label={[anchor=north west,#1,circle,draw,minimum size=0.3cm,inner sep=0,xshift=0.1cm,yshift=-0.1cm]north west:}
+]
+
+\tikzstyle{collapsed noninterrupting event subprocess} = [
+ collapsed subprocess,
+ dotted,
+ label={[anchor=north west,
+ #1,
+ dashed,
+ draw,
+ circle,
+ dash pattern=on 1pt off 1pt,
+ minimum size=0.3cm,
+ inner sep=0,
+ xshift=0.1cm,
+ yshift=-0.1cm]north west:}
+]
+
+\tikzstyle{event subprocess label} = [
+ task,
+ fit margins={left=1.5mm,right=1.5mm,bottom=1.5mm,top=2.1mm},
+ label={[anchor=north west]north west:\footnotesize#1},
+ dotted
+]
+
+\tikzstyle{message event subprocess} = [
+ collapsed event subprocess=draw message
+]
+
+\tikzstyle{timer event subprocess} = [
+ collapsed event subprocess=draw timer
+]
+
+\tikzstyle{compensation event subprocess} = [
+ collapsed event subprocess=draw compensation
+]
+
+\tikzstyle{signal event subprocess} = [
+ collapsed event subprocess=draw signal
+]
+
+\tikzstyle{error event subprocess} = [
+ collapsed event subprocess=draw error
+]
+
+\tikzstyle{message noninterrupting event subprocess} = [
+ collapsed noninterrupting event subprocess=draw message
+]
+
+\tikzstyle{timer noninterrupting event subprocess} = [
+ collapsed noninterrupting event subprocess=draw timer
+]
+
+\tikzstyle{signal noninterrupting event subprocess} = [
+ collapsed noninterrupting event subprocess=draw signal
+]
+
+\tikzstyle{subprocess event} = [
+ start event
+]
+
+\tikzstyle{noninterrupting subprocess event} = [
+ start event,
+ dashed,
+ dash pattern=on 2pt off 2pt
+]
+
+\tikzstyle{message subprocess event} = [
+ subprocess event,
+ draw message
+]
+
+\tikzstyle{message noninterrupting subprocess event} = [
+ noninterrupting subprocess event,
+ draw message
+]
+
+\tikzstyle{timer subprocess event} = [
+ subprocess event,
+ draw timer
+]
+
+\tikzstyle{timer noninterrupting subprocess event} = [
+ noninterrupting subprocess event,
+ draw timer
+]
+
+\tikzstyle{signal subprocess event} = [
+ subprocess event,
+ draw signal
+]
+
+\tikzstyle{signal noninterrupting subprocess event} = [
+ noninterrupting subprocess event,
+ draw signal
+]
+
+\tikzstyle{compensation subprocess event} = [
+ subprocess event,
+ draw compensation
+]
+
+\tikzstyle{error subprocess event} = [
+ subprocess event,
+ draw error
+]
+
+%%%%% call activity %%%%%
+
+\tikzstyle{call task} = [
+ task,
+ thick,
+ every call activity
+]
+
+\tikzstyle{collapsed call subprocess} = [call subprocess]
+\tikzstyle{call subprocess} = [
+ call task,
+ inner sep=3mm,
+ label={[anchor=south,
+ inner sep=-0.25mm,
+ shape=square,
+ draw,
+ regular polygon,
+ regular polygon sides=4,
+ yshift=0.5mm
+ ]below:\footnotesize +},
+ every call activity
+]
+
+%%%%% sub-processes %%%%%
+
+\def\tikzsubprocessmarker{\tikz{\node[draw, regular polygon, regular polygon sides=4, inner sep=-0.25mm]{\footnotesize +};}}
+\def\tikzmultimarker{%
+ \def\x{0.5mm}%
+ \def\y{0.6mm}%
+ \tikz{
+ \node (b) [opacity=0, draw, regular polygon, regular polygon sides=4, inner sep=-0.25mm]{\footnotesize +};
+ \draw ($(b.center)+(0,-\y)$) to ++(0,2*\y);
+ \draw ($(b.center)+(\x,-\y)$) to ++(0,2*\y);
+ \draw ($(b.center)+(-\x,-\y)$) to ++(0,2*\y);
+ }%
+}
+\def\tikzloopmarker{%
+ \tikz{
+ \node (b) [opacity=0, draw, regular polygon, regular polygon sides=4, inner sep=-0.25mm]{\footnotesize +};
+ \node at (b.center) [rotate=170,yshift=-0.9mm] {\pmb{\circlearrowleft}};
+ }%
+}
+\def\tikzcompensationmarker{%
+ \tikz{
+ \def\y{0.4mm}
+ \node (b) [opacity=0, draw, regular polygon, regular polygon sides=4, inner sep=-0.25mm]{\footnotesize +};
+ \draw [rounded corners=0.05mm] (b.center) to ($(b.north)+(0,-\y)$) to (b.west) to ($(b.south)+(0,\y)$) to (b.center);
+ \draw [rounded corners=0.05mm] (b.center) to ($(b.north east)+(0,-\y)$) to ($(b.south east)+(0,\y)$) to cycle;
+ }%
+}
+
+\tikzstyle{subprocess marker} = [
+ task,
+ inner sep=3mm,
+ task marker=#1
+]
+\tikzstyle{task marker} = [
+ task,
+ label={[anchor=south,inner sep=0]below:#1}
+]
+
+\tikzstyle{subprocess} = [
+ subprocess marker=\tikzsubprocessmarker
+]
+\tikzstyle{collapsed subprocess} = [subprocess]
+\tikzstyle{expanded subprocess} = [task, inner sep=3mm]
+\tikzstyle{subprocess label} = [task, fit margins={left=1.5mm,right=1.5mm,bottom=1.5mm,top=2.1mm}, label={[anchor=north]above:\footnotesize#1}]
+
+\tikzstyle{adhoc subprocess} = [collapsed adhoc subprocess]
+\tikzstyle{collapsed adhoc subprocess} = [
+ subprocess marker=\tikzsubprocessmarker{} $\thicksim$
+]
+
+\tikzstyle{expanded adhoc subprocess} = [
+ subprocess marker=$\thicksim$
+]
+
+\tikzstyle{multiinstance task} = [
+ subprocess marker=\tikzmultimarker
+]
+
+\tikzstyle{multiinstance subprocess} = [collapsed multiinstance subprocess]
+\tikzstyle{collapsed multiinstance subprocess} = [
+ subprocess marker=\tikzsubprocessmarker \tikzmultimarker
+]
+
+\tikzstyle{expanded multiinstance subprocess} = [
+ subprocess marker=\tikzmultimarker
+]
+
+\tikzstyle{loop task} = [
+ task marker=\tikzloopmarker
+]
+
+\tikzstyle{loop subprocess} = [collapsed loop subprocess]
+\tikzstyle{collapsed loop subprocess} = [
+ subprocess marker=\tikzsubprocessmarker{} \tikzloopmarker
+]
+
+\tikzstyle{expanded loop subprocess} = [
+ subprocess marker=\tikzloopmarker
+]
+
+\tikzstyle{compensation task} = [
+ fit margins={left=0.8mm,right=0.8mm,bottom=2.1mm,top=0.8mm},
+ task marker=\tikzcompensationmarker
+]
+
+\tikzstyle{compensation subprocess} = [collapsed compensation subprocess]
+\tikzstyle{collapsed compensation subprocess} = [
+ subprocess marker=\tikzsubprocessmarker{} \tikzcompensationmarker
+]
+
+\tikzstyle{expanded compensation subprocess} = [
+ subprocess marker=\tikzcompensationmarker
+]
+
+%%%%% task type marker %%%%%
+
+\tikzstyle{task type marker} = [
+ task,
+ label={[anchor=north west,
+ line width=0.1pt,
+ #1,
+ minimum size=0.2cm,
+ inner sep=0,
+ xshift=0.05cm,
+ yshift=-0.05cm]north west:}
+]
+
+\tikzstyle{manual task} = [
+ task type marker=draw manual
+]
+
+\tikzstyle{receive task} = [
+ task type marker=draw message
+]
+
+\tikzstyle{script task} = [
+ task type marker=draw script
+]
+
+\tikzstyle{send task}[defaultbackgroundcolour] = [
+ task type marker={draw filled message={#1, line width=0.1pt}}
+]
+
+\tikzstyle{service task}[defaultbackgroundcolour] = [
+ task type marker={draw service={#1}}
+]
+
+\tikzstyle{user task} = [
+ task type marker=draw user
+]
+
+\tikzstyle{draw service}[defaultbackgroundcolour] = [
+ path picture = {
+ \coordinate (ne) at ($(path picture bounding box.north east)-(0.5pt,0.5pt)$);
+ \coordinate (sw) at ($(path picture bounding box.south west)+(0.5pt,0.5pt)$);
+ %\draw (path picture bounding box.north east) rectangle (path picture bounding box.south west);
+\coordinate (c1x) at ($(sw)!0.613157894736843!(ne)$);\coordinate (c1y) at ($(sw)!0.774869109947646!(ne)$);\coordinate (c4x) at ($(sw)!0.673684210526316!(ne)$);\coordinate (c4y) at ($(sw)!0.837696335078536!(ne)$);\coordinate (c8x) at ($(sw)!0.665789473684211!(ne)$);\coordinate (c8y) at ($(sw)!0.869109947643979!(ne)$);\coordinate (c12x) at ($(sw)!0.649999999999999!(ne)$);\coordinate (c12y) at ($(sw)!0.890052356020943!(ne)$);\coordinate (c16x) at ($(sw)!0.626315789473683!(ne)$);\coordinate (c16y) at ($(sw)!0.908376963350787!(ne)$);\coordinate (c20x) at ($(sw)!0.594736842105263!(ne)$);\coordinate (c20y) at ($(sw)!0.916230366492146!(ne)$);\coordinate (c24x) at ($(sw)!0.526315789473684!(ne)$);\coordinate (c24y) at ($(sw)!0.853403141361256!(ne)$);\coordinate (c28x) at ($(sw)!0.489473684210527!(ne)$);\coordinate (c28y) at ($(sw)!0.869109947643979!(ne)$);\coordinate (c32x) at ($(sw)!0.452631578947368!(ne)$);\coordinate (c32y) at ($(sw)!0.882198952879582!(ne)$);\coordinate (c36x) at ($(sw)!0.444736842105262!(ne)$);\coordinate (c36y) at ($(sw)!0.976439790575915!(ne)$);\coordinate (c40x) at ($(sw)!0.421052631578948!(ne)$);\coordinate (c40y) at ($(sw)!0.992146596858639!(ne)$);\coordinate (c44x) at ($(sw)!0.389473684210526!(ne)$);\coordinate (c44y) at ($(sw)!1!(ne)$);\coordinate (c48x) at ($(sw)!0.360526315789475!(ne)$);\coordinate (c48y) at ($(sw)!0.992146596858639!(ne)$);\coordinate (c52x) at ($(sw)!0.33421052631579!(ne)$);\coordinate (c52y) at ($(sw)!0.976439790575915!(ne)$);\coordinate (c56x) at ($(sw)!0.328947368421053!(ne)$);\coordinate (c56y) at ($(sw)!0.882198952879582!(ne)$);\coordinate (c60x) at ($(sw)!0.278947368421053!(ne)$);\coordinate (c60y) at ($(sw)!0.866492146596859!(ne)$);\coordinate (c64x) at ($(sw)!0.234210526315788!(ne)$);\coordinate (c64y) at ($(sw)!0.840314136125656!(ne)$);\coordinate (c68x) at ($(sw)!0.150000000000001!(ne)$);\coordinate (c68y) at ($(sw)!0.916230366492146!(ne)$);\coordinate (c72x) at ($(sw)!0.121052631578947!(ne)$);\coordinate (c72y) at ($(sw)!0.908376963350787!(ne)$);\coordinate (c76x) at ($(sw)!0.0947368421052642!(ne)$);\coordinate (c76y) at ($(sw)!0.890052356020943!(ne)$);\coordinate (c80x) at ($(sw)!0.0789473684210531!(ne)$);\coordinate (c80y) at ($(sw)!0.869109947643979!(ne)$);\coordinate (c84x) at ($(sw)!0.0736842105263161!(ne)$);\coordinate (c84y) at ($(sw)!0.837696335078536!(ne)$);\coordinate (c88x) at ($(sw)!0.150000000000001!(ne)$);\coordinate (c88y) at ($(sw)!0.751308900523561!(ne)$);\coordinate (c92x) at ($(sw)!0.131578947368421!(ne)$);\coordinate (c92y) at ($(sw)!0.709424083769635!(ne)$);\coordinate (c96x) at ($(sw)!0.118421052631578!(ne)$);\coordinate (c96y) at ($(sw)!0.667539267015707!(ne)$);\coordinate (c100x) at ($(sw)!0.0184210526315796!(ne)$);\coordinate (c100y) at ($(sw)!0.662303664921466!(ne)$);\coordinate (c104x) at ($(sw)!0.00263157894736852!(ne)$);\coordinate (c104y) at ($(sw)!0.636125654450263!(ne)$);\coordinate (c108x) at ($(sw)!0!(ne)$);\coordinate (c108y) at ($(sw)!0.607329842931938!(ne)$);\coordinate (c112x) at ($(sw)!0.00263157894736852!(ne)$);\coordinate (c112y) at ($(sw)!0.578534031413614!(ne)$);\coordinate (c116x) at ($(sw)!0.0184210526315796!(ne)$);\coordinate (c116y) at ($(sw)!0.55497382198953!(ne)$);\coordinate (c120x) at ($(sw)!0.118421052631578!(ne)$);\coordinate (c120y) at ($(sw)!0.547120418848168!(ne)$);\coordinate (c124x) at ($(sw)!0.126315789473684!(ne)$);\coordinate (c124y) at ($(sw)!0.510471204188483!(ne)$);\coordinate (c128x) at ($(sw)!0.147368421052632!(ne)$);\coordinate (c128y) at ($(sw)!0.473821989528796!(ne)$);\coordinate (c132x) at ($(sw)!0.0736842105263161!(ne)$);\coordinate (c132y) at ($(sw)!0.392670157068063!(ne)$);\coordinate (c136x) at ($(sw)!0.0789473684210531!(ne)$);\coordinate (c136y) at ($(sw)!0.363874345549739!(ne)$);\coordinate (c140x) at ($(sw)!0.0947368421052642!(ne)$);\coordinate (c140y) at ($(sw)!0.340314136125655!(ne)$);\coordinate (c144x) at ($(sw)!0.121052631578947!(ne)$);\coordinate (c144y) at ($(sw)!0.321989528795811!(ne)$);\coordinate (c148x) at ($(sw)!0.150000000000001!(ne)$);\coordinate (c148y) at ($(sw)!0.316753926701573!(ne)$);\coordinate (c152x) at ($(sw)!0.226315789473685!(ne)$);\coordinate (c152y) at ($(sw)!0.382198952879583!(ne)$);\coordinate (c156x) at ($(sw)!0.273684210526316!(ne)$);\coordinate (c156y) at ($(sw)!0.353403141361257!(ne)$);\coordinate (c160x) at ($(sw)!0.328947368421053!(ne)$);\coordinate (c160y) at ($(sw)!0.337696335078534!(ne)$);\coordinate (c164x) at ($(sw)!0.33421052631579!(ne)$);\coordinate (c164y) at ($(sw)!0.23821989528796!(ne)$);\coordinate (c168x) at ($(sw)!0.360526315789475!(ne)$);\coordinate (c168y) at ($(sw)!0.222513089005236!(ne)$);\coordinate (c172x) at ($(sw)!0.389473684210526!(ne)$);\coordinate (c172y) at ($(sw)!0.217277486910995!(ne)$);\coordinate (c176x) at ($(sw)!0.421052631578948!(ne)$);\coordinate (c176y) at ($(sw)!0.222513089005236!(ne)$);\coordinate (c180x) at ($(sw)!0.444736842105262!(ne)$);\coordinate (c180y) at ($(sw)!0.23821989528796!(ne)$);\coordinate (c184x) at ($(sw)!0.452631578947368!(ne)$);\coordinate (c184y) at ($(sw)!0.337696335078534!(ne)$);\coordinate (c188x) at ($(sw)!0.492105263157896!(ne)$);\coordinate (c188y) at ($(sw)!0.350785340314137!(ne)$);\coordinate (c192x) at ($(sw)!0.53421052631579!(ne)$);\coordinate (c192y) at ($(sw)!0.36910994764398!(ne)$);\coordinate (c196x) at ($(sw)!0.594736842105263!(ne)$);\coordinate (c196y) at ($(sw)!0.316753926701573!(ne)$);\coordinate (c200x) at ($(sw)!0.626315789473683!(ne)$);\coordinate (c200y) at ($(sw)!0.321989528795811!(ne)$);\coordinate (c204x) at ($(sw)!0.649999999999999!(ne)$);\coordinate (c204y) at ($(sw)!0.340314136125655!(ne)$);\coordinate (c208x) at ($(sw)!0.665789473684211!(ne)$);\coordinate (c208y) at ($(sw)!0.363874345549739!(ne)$);\coordinate (c212x) at ($(sw)!0.673684210526316!(ne)$);\coordinate (c212y) at ($(sw)!0.392670157068063!(ne)$);\coordinate (c216x) at ($(sw)!0.621052631578948!(ne)$);\coordinate (c216y) at ($(sw)!0.452879581151832!(ne)$);\coordinate (c220x) at ($(sw)!0.647368421052631!(ne)$);\coordinate (c220y) at ($(sw)!0.500000000000001!(ne)$);\coordinate (c224x) at ($(sw)!0.663157894736842!(ne)$);\coordinate (c224y) at ($(sw)!0.547120418848168!(ne)$);\coordinate (c228x) at ($(sw)!0.760526315789472!(ne)$);\coordinate (c228y) at ($(sw)!0.55497382198953!(ne)$);\coordinate (c232x) at ($(sw)!0.776315789473683!(ne)$);\coordinate (c232y) at ($(sw)!0.578534031413614!(ne)$);\coordinate (c236x) at ($(sw)!0.778947368421052!(ne)$);\coordinate (c236y) at ($(sw)!0.607329842931938!(ne)$);\coordinate (c240x) at ($(sw)!0.776315789473683!(ne)$);\coordinate (c240y) at ($(sw)!0.636125654450263!(ne)$);\coordinate (c244x) at ($(sw)!0.760526315789472!(ne)$);\coordinate (c244y) at ($(sw)!0.662303664921466!(ne)$);\coordinate (c248x) at ($(sw)!0.663157894736842!(ne)$);\coordinate (c248y) at ($(sw)!0.667539267015707!(ne)$);\coordinate (c252x) at ($(sw)!0.642105263157894!(ne)$);\coordinate (c252y) at ($(sw)!0.722513089005235!(ne)$);\coordinate (c256x) at ($(sw)!0.613157894736843!(ne)$);\coordinate (c256y) at ($(sw)!0.774869109947646!(ne)$);
+ \draw (c1x |- c1y) -- (c4x |- c4y) -- (c8x |- c8y) -- (c12x |- c12y) -- (c16x |- c16y) -- (c20x |- c20y) -- (c24x |- c24y) -- (c28x |- c28y) -- (c32x |- c32y) -- (c36x |- c36y) -- (c40x |- c40y) -- (c44x |- c44y) -- (c48x |- c48y) -- (c52x |- c52y) -- (c56x |- c56y) -- (c60x |- c60y) -- (c64x |- c64y) -- (c68x |- c68y) -- (c72x |- c72y) -- (c76x |- c76y) -- (c80x |- c80y) -- (c84x |- c84y) -- (c88x |- c88y) -- (c92x |- c92y) -- (c96x |- c96y) -- (c100x |- c100y) -- (c104x |- c104y) -- (c108x |- c108y) -- (c112x |- c112y) -- (c116x |- c116y) -- (c120x |- c120y) -- (c124x |- c124y) -- (c128x |- c128y) -- (c132x |- c132y) -- (c136x |- c136y) -- (c140x |- c140y) -- (c144x |- c144y) -- (c148x |- c148y) -- (c152x |- c152y) -- (c156x |- c156y) -- (c160x |- c160y) -- (c164x |- c164y) -- (c168x |- c168y) -- (c172x |- c172y) -- (c176x |- c176y) -- (c180x |- c180y) -- (c184x |- c184y) -- (c188x |- c188y) -- (c192x |- c192y) -- (c196x |- c196y) -- (c200x |- c200y) -- (c204x |- c204y) -- (c208x |- c208y) -- (c212x |- c212y) -- (c216x |- c216y) -- (c220x |- c220y) -- (c224x |- c224y) -- (c228x |- c228y) -- (c232x |- c232y) -- (c236x |- c236y) -- (c240x |- c240y) -- (c244x |- c244y) -- (c248x |- c248y) -- (c252x |- c252y) -- (c256x |- c256y) ;
+ \coordinate (c301x) at ($(sw)!0.476315789473685!(ne)$);\coordinate (c301y) at ($(sw)!0.672774869109948!(ne)$);\coordinate (c304x) at ($(sw)!0.499999999999999!(ne)$);\coordinate (c304y) at ($(sw)!0.696335078534033!(ne)$);\coordinate (c308x) at ($(sw)!0.49736842105263!(ne)$);\coordinate (c308y) at ($(sw)!0.709424083769635!(ne)$);\coordinate (c312x) at ($(sw)!0.489473684210527!(ne)$);\coordinate (c312y) at ($(sw)!0.719895287958115!(ne)$);\coordinate (c316x) at ($(sw)!0.481578947368422!(ne)$);\coordinate (c316y) at ($(sw)!0.725130890052356!(ne)$);\coordinate (c320x) at ($(sw)!0.471052631578948!(ne)$);\coordinate (c320y) at ($(sw)!0.730366492146597!(ne)$);\coordinate (c324x) at ($(sw)!0.442105263157894!(ne)$);\coordinate (c324y) at ($(sw)!0.704188481675394!(ne)$);\coordinate (c328x) at ($(sw)!0.413157894736843!(ne)$);\coordinate (c328y) at ($(sw)!0.712041884816756!(ne)$);\coordinate (c332x) at ($(sw)!0.410526315789474!(ne)$);\coordinate (c332y) at ($(sw)!0.751308900523561!(ne)$);\coordinate (c336x) at ($(sw)!0.389473684210526!(ne)$);\coordinate (c336y) at ($(sw)!0.761780104712043!(ne)$);\coordinate (c340x) at ($(sw)!0.368421052631578!(ne)$);\coordinate (c340y) at ($(sw)!0.751308900523561!(ne)$);\coordinate (c344x) at ($(sw)!0.365789473684209!(ne)$);\coordinate (c344y) at ($(sw)!0.712041884816756!(ne)$);\coordinate (c348x) at ($(sw)!0.347368421052632!(ne)$);\coordinate (c348y) at ($(sw)!0.706806282722515!(ne)$);\coordinate (c352x) at ($(sw)!0.331578947368421!(ne)$);\coordinate (c352y) at ($(sw)!0.701570680628274!(ne)$);\coordinate (c356x) at ($(sw)!0.294736842105264!(ne)$);\coordinate (c356y) at ($(sw)!0.730366492146597!(ne)$);\coordinate (c360x) at ($(sw)!0.286842105263159!(ne)$);\coordinate (c360y) at ($(sw)!0.725130890052356!(ne)$);\coordinate (c364x) at ($(sw)!0.276315789473685!(ne)$);\coordinate (c364y) at ($(sw)!0.719895287958115!(ne)$);\coordinate (c368x) at ($(sw)!0.271052631578948!(ne)$);\coordinate (c368y) at ($(sw)!0.709424083769635!(ne)$);\coordinate (c372x) at ($(sw)!0.268421052631579!(ne)$);\coordinate (c372y) at ($(sw)!0.696335078534033!(ne)$);\coordinate (c376x) at ($(sw)!0.294736842105264!(ne)$);\coordinate (c376y) at ($(sw)!0.664921465968586!(ne)$);\coordinate (c380x) at ($(sw)!0.28421052631579!(ne)$);\coordinate (c380y) at ($(sw)!0.630890052356022!(ne)$);\coordinate (c384x) at ($(sw)!0.244736842105262!(ne)$);\coordinate (c384y) at ($(sw)!0.630890052356022!(ne)$);\coordinate (c388x) at ($(sw)!0.239473684210525!(ne)$);\coordinate (c388y) at ($(sw)!0.62041884816754!(ne)$);\coordinate (c392x) at ($(sw)!0.239473684210525!(ne)$);\coordinate (c392y) at ($(sw)!0.599476439790576!(ne)$);\coordinate (c396x) at ($(sw)!0.244736842105262!(ne)$);\coordinate (c396y) at ($(sw)!0.586387434554973!(ne)$);\coordinate (c400x) at ($(sw)!0.28421052631579!(ne)$);\coordinate (c400y) at ($(sw)!0.586387434554973!(ne)$);\coordinate (c404x) at ($(sw)!0.294736842105264!(ne)$);\coordinate (c404y) at ($(sw)!0.55759162303665!(ne)$);\coordinate (c408x) at ($(sw)!0.268421052631579!(ne)$);\coordinate (c408y) at ($(sw)!0.526178010471204!(ne)$);\coordinate (c412x) at ($(sw)!0.271052631578948!(ne)$);\coordinate (c412y) at ($(sw)!0.513089005235604!(ne)$);\coordinate (c416x) at ($(sw)!0.276315789473685!(ne)$);\coordinate (c416y) at ($(sw)!0.502617801047122!(ne)$);\coordinate (c420x) at ($(sw)!0.286842105263159!(ne)$);\coordinate (c420y) at ($(sw)!0.497382198952881!(ne)$);\coordinate (c424x) at ($(sw)!0.294736842105264!(ne)$);\coordinate (c424y) at ($(sw)!0.49476439790576!(ne)$);\coordinate (c428x) at ($(sw)!0.328947368421053!(ne)$);\coordinate (c428y) at ($(sw)!0.518324607329842!(ne)$);\coordinate (c432x) at ($(sw)!0.365789473684209!(ne)$);\coordinate (c432y) at ($(sw)!0.502617801047122!(ne)$);\coordinate (c436x) at ($(sw)!0.368421052631578!(ne)$);\coordinate (c436y) at ($(sw)!0.465968586387435!(ne)$);\coordinate (c440x) at ($(sw)!0.378947368421052!(ne)$);\coordinate (c440y) at ($(sw)!0.458115183246073!(ne)$);\coordinate (c444x) at ($(sw)!0.389473684210526!(ne)$);\coordinate (c444y) at ($(sw)!0.455497382198952!(ne)$);\coordinate (c448x) at ($(sw)!0.4!(ne)$);\coordinate (c448y) at ($(sw)!0.458115183246073!(ne)$);\coordinate (c452x) at ($(sw)!0.410526315789474!(ne)$);\coordinate (c452y) at ($(sw)!0.465968586387435!(ne)$);\coordinate (c456x) at ($(sw)!0.413157894736843!(ne)$);\coordinate (c456y) at ($(sw)!0.502617801047122!(ne)$);\coordinate (c460x) at ($(sw)!0.444736842105262!(ne)$);\coordinate (c460y) at ($(sw)!0.515706806282724!(ne)$);\coordinate (c464x) at ($(sw)!0.471052631578948!(ne)$);\coordinate (c464y) at ($(sw)!0.49476439790576!(ne)$);\coordinate (c468x) at ($(sw)!0.481578947368422!(ne)$);\coordinate (c468y) at ($(sw)!0.497382198952881!(ne)$);\coordinate (c472x) at ($(sw)!0.489473684210527!(ne)$);\coordinate (c472y) at ($(sw)!0.502617801047122!(ne)$);\coordinate (c476x) at ($(sw)!0.49736842105263!(ne)$);\coordinate (c476y) at ($(sw)!0.513089005235604!(ne)$);\coordinate (c480x) at ($(sw)!0.499999999999999!(ne)$);\coordinate (c480y) at ($(sw)!0.526178010471204!(ne)$);\coordinate (c484x) at ($(sw)!0.481578947368422!(ne)$);\coordinate (c484y) at ($(sw)!0.547120418848168!(ne)$);\coordinate (c488x) at ($(sw)!0.489473684210527!(ne)$);\coordinate (c488y) at ($(sw)!0.568062827225132!(ne)$);\coordinate (c492x) at ($(sw)!0.49736842105263!(ne)$);\coordinate (c492y) at ($(sw)!0.586387434554973!(ne)$);\coordinate (c496x) at ($(sw)!0.53421052631579!(ne)$);\coordinate (c496y) at ($(sw)!0.586387434554973!(ne)$);\coordinate (c500x) at ($(sw)!0.542105263157895!(ne)$);\coordinate (c500y) at ($(sw)!0.599476439790576!(ne)$);\coordinate (c504x) at ($(sw)!0.542105263157895!(ne)$);\coordinate (c504y) at ($(sw)!0.62041884816754!(ne)$);\coordinate (c508x) at ($(sw)!0.53421052631579!(ne)$);\coordinate (c508y) at ($(sw)!0.630890052356022!(ne)$);\coordinate (c512x) at ($(sw)!0.49736842105263!(ne)$);\coordinate (c512y) at ($(sw)!0.633507853403143!(ne)$);\coordinate (c516x) at ($(sw)!0.489473684210527!(ne)$);\coordinate (c516y) at ($(sw)!0.651832460732984!(ne)$);\coordinate (c520x) at ($(sw)!0.476315789473685!(ne)$);\coordinate (c520y) at ($(sw)!0.672774869109948!(ne)$);
+ \draw (c301x |- c301y) -- (c304x |- c304y) -- (c308x |- c308y) -- (c312x |- c312y) -- (c316x |- c316y) -- (c320x |- c320y) -- (c324x |- c324y) -- (c328x |- c328y) -- (c332x |- c332y) -- (c336x |- c336y) -- (c340x |- c340y) -- (c344x |- c344y) -- (c348x |- c348y) -- (c352x |- c352y) -- (c356x |- c356y) -- (c360x |- c360y) -- (c364x |- c364y) -- (c368x |- c368y) -- (c372x |- c372y) -- (c376x |- c376y) -- (c380x |- c380y) -- (c384x |- c384y) -- (c388x |- c388y) -- (c392x |- c392y) -- (c396x |- c396y) -- (c400x |- c400y) -- (c404x |- c404y) -- (c408x |- c408y) -- (c412x |- c412y) -- (c416x |- c416y) -- (c420x |- c420y) -- (c424x |- c424y) -- (c428x |- c428y) -- (c432x |- c432y) -- (c436x |- c436y) -- (c440x |- c440y) -- (c444x |- c444y) -- (c448x |- c448y) -- (c452x |- c452y) -- (c456x |- c456y) -- (c460x |- c460y) -- (c464x |- c464y) -- (c468x |- c468y) -- (c472x |- c472y) -- (c476x |- c476y) -- (c480x |- c480y) -- (c484x |- c484y) -- (c488x |- c488y) -- (c492x |- c492y) -- (c496x |- c496y) -- (c500x |- c500y) -- (c504x |- c504y) -- (c508x |- c508y) -- (c512x |- c512y) -- (c516x |- c516y) -- (c520x |- c520y) ;
+ \coordinate (c601x) at ($(sw)!0.834210526315788!(ne)$);\coordinate (c601y) at ($(sw)!0.55497382198953!(ne)$);\coordinate (c604x) at ($(sw)!0.892105263157893!(ne)$);\coordinate (c604y) at ($(sw)!0.62041884816754!(ne)$);\coordinate (c608x) at ($(sw)!0.88421052631579!(ne)$);\coordinate (c608y) at ($(sw)!0.649214659685863!(ne)$);\coordinate (c612x) at ($(sw)!0.86578947368421!(ne)$);\coordinate (c612y) at ($(sw)!0.675392670157068!(ne)$);\coordinate (c616x) at ($(sw)!0.844736842105262!(ne)$);\coordinate (c616y) at ($(sw)!0.691099476439792!(ne)$);\coordinate (c620x) at ($(sw)!0.815789473684211!(ne)$);\coordinate (c620y) at ($(sw)!0.701570680628274!(ne)$);\coordinate (c624x) at ($(sw)!0.742105263157895!(ne)$);\coordinate (c624y) at ($(sw)!0.636125654450263!(ne)$);\coordinate (c628x) at ($(sw)!0.705263157894736!(ne)$);\coordinate (c628y) at ($(sw)!0.651832460732984!(ne)$);\coordinate (c632x) at ($(sw)!0.668421052631579!(ne)$);\coordinate (c632y) at ($(sw)!0.662303664921466!(ne)$);\coordinate (c636x) at ($(sw)!0.663157894736842!(ne)$);\coordinate (c636y) at ($(sw)!0.761780104712043!(ne)$);\coordinate (c640x) at ($(sw)!0.636842105263157!(ne)$);\coordinate (c640y) at ($(sw)!0.777486910994766!(ne)$);\coordinate (c644x) at ($(sw)!0.607894736842106!(ne)$);\coordinate (c644y) at ($(sw)!0.782722513089005!(ne)$);\coordinate (c648x) at ($(sw)!0.578947368421052!(ne)$);\coordinate (c648y) at ($(sw)!0.777486910994766!(ne)$);\coordinate (c652x) at ($(sw)!0.550000000000001!(ne)$);\coordinate (c652y) at ($(sw)!0.761780104712043!(ne)$);\coordinate (c656x) at ($(sw)!0.547368421052632!(ne)$);\coordinate (c656y) at ($(sw)!0.662303664921466!(ne)$);\coordinate (c660x) at ($(sw)!0.49736842105263!(ne)$);\coordinate (c660y) at ($(sw)!0.649214659685863!(ne)$);\coordinate (c664x) at ($(sw)!0.452631578947368!(ne)$);\coordinate (c664y) at ($(sw)!0.623036649214661!(ne)$);\coordinate (c668x) at ($(sw)!0.365789473684209!(ne)$);\coordinate (c668y) at ($(sw)!0.701570680628274!(ne)$);\coordinate (c672x) at ($(sw)!0.336842105263158!(ne)$);\coordinate (c672y) at ($(sw)!0.691099476439792!(ne)$);\coordinate (c676x) at ($(sw)!0.31578947368421!(ne)$);\coordinate (c676y) at ($(sw)!0.675392670157068!(ne)$);\coordinate (c680x) at ($(sw)!0.294736842105264!(ne)$);\coordinate (c680y) at ($(sw)!0.649214659685863!(ne)$);\coordinate (c684x) at ($(sw)!0.289473684210527!(ne)$);\coordinate (c684y) at ($(sw)!0.62041884816754!(ne)$);\coordinate (c688x) at ($(sw)!0.365789473684209!(ne)$);\coordinate (c688y) at ($(sw)!0.534031413612566!(ne)$);\coordinate (c692x) at ($(sw)!0.347368421052632!(ne)$);\coordinate (c692y) at ($(sw)!0.49476439790576!(ne)$);\coordinate (c696x) at ($(sw)!0.33421052631579!(ne)$);\coordinate (c696y) at ($(sw)!0.452879581151832!(ne)$);\coordinate (c700x) at ($(sw)!0.234210526315788!(ne)$);\coordinate (c700y) at ($(sw)!0.445026178010473!(ne)$);\coordinate (c704x) at ($(sw)!0.21842105263158!(ne)$);\coordinate (c704y) at ($(sw)!0.421465968586388!(ne)$);\coordinate (c708x) at ($(sw)!0.215789473684211!(ne)$);\coordinate (c708y) at ($(sw)!0.392670157068063!(ne)$);\coordinate (c712x) at ($(sw)!0.21842105263158!(ne)$);\coordinate (c712y) at ($(sw)!0.363874345549739!(ne)$);\coordinate (c716x) at ($(sw)!0.234210526315788!(ne)$);\coordinate (c716y) at ($(sw)!0.337696335078534!(ne)$);\coordinate (c720x) at ($(sw)!0.33421052631579!(ne)$);\coordinate (c720y) at ($(sw)!0.332460732984293!(ne)$);\coordinate (c724x) at ($(sw)!0.347368421052632!(ne)$);\coordinate (c724y) at ($(sw)!0.293193717277488!(ne)$);\coordinate (c728x) at ($(sw)!0.363157894736841!(ne)$);\coordinate (c728y) at ($(sw)!0.259162303664921!(ne)$);\coordinate (c732x) at ($(sw)!0.289473684210527!(ne)$);\coordinate (c732y) at ($(sw)!0.17539267015707!(ne)$);\coordinate (c736x) at ($(sw)!0.294736842105264!(ne)$);\coordinate (c736y) at ($(sw)!0.146596858638744!(ne)$);\coordinate (c740x) at ($(sw)!0.31578947368421!(ne)$);\coordinate (c740y) at ($(sw)!0.120418848167541!(ne)$);\coordinate (c744x) at ($(sw)!0.336842105263158!(ne)$);\coordinate (c744y) at ($(sw)!0.104712041884818!(ne)$);\coordinate (c748x) at ($(sw)!0.365789473684209!(ne)$);\coordinate (c748y) at ($(sw)!0.0994764397905771!(ne)$);\coordinate (c752x) at ($(sw)!0.442105263157894!(ne)$);\coordinate (c752y) at ($(sw)!0.164921465968588!(ne)$);\coordinate (c756x) at ($(sw)!0.492105263157896!(ne)$);\coordinate (c756y) at ($(sw)!0.136125654450262!(ne)$);\coordinate (c760x) at ($(sw)!0.547368421052632!(ne)$);\coordinate (c760y) at ($(sw)!0.117801047120421!(ne)$);\coordinate (c764x) at ($(sw)!0.550000000000001!(ne)$);\coordinate (c764y) at ($(sw)!0.0235602094240846!(ne)$);\coordinate (c768x) at ($(sw)!0.578947368421052!(ne)$);\coordinate (c768y) at ($(sw)!0.00785340314136155!(ne)$);\coordinate (c772x) at ($(sw)!0.607894736842106!(ne)$);\coordinate (c772y) at ($(sw)!0!(ne)$);\coordinate (c776x) at ($(sw)!0.636842105263157!(ne)$);\coordinate (c776y) at ($(sw)!0.00785340314136155!(ne)$);\coordinate (c780x) at ($(sw)!0.663157894736842!(ne)$);\coordinate (c780y) at ($(sw)!0.0235602094240846!(ne)$);\coordinate (c784x) at ($(sw)!0.668421052631579!(ne)$);\coordinate (c784y) at ($(sw)!0.117801047120421!(ne)$);\coordinate (c788x) at ($(sw)!0.710526315789473!(ne)$);\coordinate (c788y) at ($(sw)!0.133507853403141!(ne)$);\coordinate (c792x) at ($(sw)!0.750000000000001!(ne)$);\coordinate (c792y) at ($(sw)!0.154450261780105!(ne)$);\coordinate (c796x) at ($(sw)!0.815789473684211!(ne)$);\coordinate (c796y) at ($(sw)!0.0994764397905771!(ne)$);\coordinate (c800x) at ($(sw)!0.844736842105262!(ne)$);\coordinate (c800y) at ($(sw)!0.104712041884818!(ne)$);\coordinate (c804x) at ($(sw)!0.86578947368421!(ne)$);\coordinate (c804y) at ($(sw)!0.120418848167541!(ne)$);\coordinate (c808x) at ($(sw)!0.88421052631579!(ne)$);\coordinate (c808y) at ($(sw)!0.146596858638744!(ne)$);\coordinate (c812x) at ($(sw)!0.892105263157893!(ne)$);\coordinate (c812y) at ($(sw)!0.17539267015707!(ne)$);\coordinate (c816x) at ($(sw)!0.836842105263157!(ne)$);\coordinate (c816y) at ($(sw)!0.235602094240839!(ne)$);\coordinate (c820x) at ($(sw)!0.863157894736842!(ne)$);\coordinate (c820y) at ($(sw)!0.280104712041885!(ne)$);\coordinate (c824x) at ($(sw)!0.878947368421053!(ne)$);\coordinate (c824y) at ($(sw)!0.332460732984293!(ne)$);\coordinate (c828x) at ($(sw)!0.976315789473683!(ne)$);\coordinate (c828y) at ($(sw)!0.337696335078534!(ne)$);\coordinate (c832x) at ($(sw)!0.992105263157895!(ne)$);\coordinate (c832y) at ($(sw)!0.363874345549739!(ne)$);\coordinate (c836x) at ($(sw)!1!(ne)$);\coordinate (c836y) at ($(sw)!0.392670157068063!(ne)$);\coordinate (c840x) at ($(sw)!0.992105263157895!(ne)$);\coordinate (c840y) at ($(sw)!0.421465968586388!(ne)$);\coordinate (c844x) at ($(sw)!0.976315789473683!(ne)$);\coordinate (c844y) at ($(sw)!0.445026178010473!(ne)$);\coordinate (c848x) at ($(sw)!0.878947368421053!(ne)$);\coordinate (c848y) at ($(sw)!0.452879581151832!(ne)$);\coordinate (c852x) at ($(sw)!0.863157894736842!(ne)$);\coordinate (c852y) at ($(sw)!0.505235602094242!(ne)$);\coordinate (c856x) at ($(sw)!0.834210526315788!(ne)$);\coordinate (c856y) at ($(sw)!0.55497382198953!(ne)$);
+ \draw [fill=#1] (c601x |- c601y) -- (c604x |- c604y) -- (c608x |- c608y) -- (c612x |- c612y) -- (c616x |- c616y) -- (c620x |- c620y) -- (c624x |- c624y) -- (c628x |- c628y) -- (c632x |- c632y) -- (c636x |- c636y) -- (c640x |- c640y) -- (c644x |- c644y) -- (c648x |- c648y) -- (c652x |- c652y) -- (c656x |- c656y) -- (c660x |- c660y) -- (c664x |- c664y) -- (c668x |- c668y) -- (c672x |- c672y) -- (c676x |- c676y) -- (c680x |- c680y) -- (c684x |- c684y) -- (c688x |- c688y) -- (c692x |- c692y) -- (c696x |- c696y) -- (c700x |- c700y) -- (c704x |- c704y) -- (c708x |- c708y) -- (c712x |- c712y) -- (c716x |- c716y) -- (c720x |- c720y) -- (c724x |- c724y) -- (c728x |- c728y) -- (c732x |- c732y) -- (c736x |- c736y) -- (c740x |- c740y) -- (c744x |- c744y) -- (c748x |- c748y) -- (c752x |- c752y) -- (c756x |- c756y) -- (c760x |- c760y) -- (c764x |- c764y) -- (c768x |- c768y) -- (c772x |- c772y) -- (c776x |- c776y) -- (c780x |- c780y) -- (c784x |- c784y) -- (c788x |- c788y) -- (c792x |- c792y) -- (c796x |- c796y) -- (c800x |- c800y) -- (c804x |- c804y) -- (c808x |- c808y) -- (c812x |- c812y) -- (c816x |- c816y) -- (c820x |- c820y) -- (c824x |- c824y) -- (c828x |- c828y) -- (c832x |- c832y) -- (c836x |- c836y) -- (c840x |- c840y) -- (c844x |- c844y) -- (c848x |- c848y) -- (c852x |- c852y) -- (c856x |- c856y) -- cycle;
+ \coordinate (c901x) at ($(sw)!0.694736842105262!(ne)$);\coordinate (c901y) at ($(sw)!0.455497382198952!(ne)$);\coordinate (c904x) at ($(sw)!0.71578947368421!(ne)$);\coordinate (c904y) at ($(sw)!0.481675392670158!(ne)$);\coordinate (c908x) at ($(sw)!0.71578947368421!(ne)$);\coordinate (c908y) at ($(sw)!0.49476439790576!(ne)$);\coordinate (c912x) at ($(sw)!0.710526315789473!(ne)$);\coordinate (c912y) at ($(sw)!0.502617801047122!(ne)$);\coordinate (c916x) at ($(sw)!0.699999999999999!(ne)$);\coordinate (c916y) at ($(sw)!0.510471204188483!(ne)$);\coordinate (c920x) at ($(sw)!0.686842105263159!(ne)$);\coordinate (c920y) at ($(sw)!0.510471204188483!(ne)$);\coordinate (c924x) at ($(sw)!0.657894736842105!(ne)$);\coordinate (c924y) at ($(sw)!0.486910994764399!(ne)$);\coordinate (c928x) at ($(sw)!0.628947368421051!(ne)$);\coordinate (c928y) at ($(sw)!0.497382198952881!(ne)$);\coordinate (c932x) at ($(sw)!0.626315789473683!(ne)$);\coordinate (c932y) at ($(sw)!0.534031413612566!(ne)$);\coordinate (c936x) at ($(sw)!0.61842105263158!(ne)$);\coordinate (c936y) at ($(sw)!0.541884816753927!(ne)$);\coordinate (c940x) at ($(sw)!0.607894736842106!(ne)$);\coordinate (c940y) at ($(sw)!0.544502617801048!(ne)$);\coordinate (c944x) at ($(sw)!0.594736842105263!(ne)$);\coordinate (c944y) at ($(sw)!0.541884816753927!(ne)$);\coordinate (c948x) at ($(sw)!0.586842105263157!(ne)$);\coordinate (c948y) at ($(sw)!0.534031413612566!(ne)$);\coordinate (c952x) at ($(sw)!0.58157894736842!(ne)$);\coordinate (c952y) at ($(sw)!0.497382198952881!(ne)$);\coordinate (c956x) at ($(sw)!0.563157894736841!(ne)$);\coordinate (c956y) at ($(sw)!0.489528795811519!(ne)$);\coordinate (c960x) at ($(sw)!0.547368421052632!(ne)$);\coordinate (c960y) at ($(sw)!0.481675392670158!(ne)$);\coordinate (c964x) at ($(sw)!0.513157894736841!(ne)$);\coordinate (c964y) at ($(sw)!0.510471204188483!(ne)$);\coordinate (c968x) at ($(sw)!0.502631578947367!(ne)$);\coordinate (c968y) at ($(sw)!0.510471204188483!(ne)$);\coordinate (c972x) at ($(sw)!0.492105263157896!(ne)$);\coordinate (c972y) at ($(sw)!0.502617801047122!(ne)$);\coordinate (c976x) at ($(sw)!0.486842105263159!(ne)$);\coordinate (c976y) at ($(sw)!0.49476439790576!(ne)$);\coordinate (c980x) at ($(sw)!0.48421052631579!(ne)$);\coordinate (c980y) at ($(sw)!0.481675392670158!(ne)$);\coordinate (c984x) at ($(sw)!0.513157894736841!(ne)$);\coordinate (c984y) at ($(sw)!0.445026178010473!(ne)$);\coordinate (c988x) at ($(sw)!0.499999999999999!(ne)$);\coordinate (c988y) at ($(sw)!0.413612565445027!(ne)$);\coordinate (c992x) at ($(sw)!0.460526315789473!(ne)$);\coordinate (c992y) at ($(sw)!0.413612565445027!(ne)$);\coordinate (c996x) at ($(sw)!0.457894736842105!(ne)$);\coordinate (c996y) at ($(sw)!0.400523560209424!(ne)$);\coordinate (c1000x) at ($(sw)!0.455263157894736!(ne)$);\coordinate (c1000y) at ($(sw)!0.392670157068063!(ne)$);\coordinate (c1004x) at ($(sw)!0.457894736842105!(ne)$);\coordinate (c1004y) at ($(sw)!0.379581151832462!(ne)$);\coordinate (c1008x) at ($(sw)!0.460526315789473!(ne)$);\coordinate (c1008y) at ($(sw)!0.36910994764398!(ne)$);\coordinate (c1012x) at ($(sw)!0.499999999999999!(ne)$);\coordinate (c1012y) at ($(sw)!0.36649214659686!(ne)$);\coordinate (c1016x) at ($(sw)!0.513157894736841!(ne)$);\coordinate (c1016y) at ($(sw)!0.340314136125655!(ne)$);\coordinate (c1020x) at ($(sw)!0.48421052631579!(ne)$);\coordinate (c1020y) at ($(sw)!0.308900523560211!(ne)$);\coordinate (c1024x) at ($(sw)!0.486842105263159!(ne)$);\coordinate (c1024y) at ($(sw)!0.295811518324608!(ne)$);\coordinate (c1028x) at ($(sw)!0.492105263157896!(ne)$);\coordinate (c1028y) at ($(sw)!0.287958115183247!(ne)$);\coordinate (c1032x) at ($(sw)!0.502631578947367!(ne)$);\coordinate (c1032y) at ($(sw)!0.280104712041885!(ne)$);\coordinate (c1036x) at ($(sw)!0.513157894736841!(ne)$);\coordinate (c1036y) at ($(sw)!0.277486910994765!(ne)$);\coordinate (c1040x) at ($(sw)!0.544736842105264!(ne)$);\coordinate (c1040y) at ($(sw)!0.30366492146597!(ne)$);\coordinate (c1044x) at ($(sw)!0.563157894736841!(ne)$);\coordinate (c1044y) at ($(sw)!0.293193717277488!(ne)$);\coordinate (c1048x) at ($(sw)!0.58157894736842!(ne)$);\coordinate (c1048y) at ($(sw)!0.287958115183247!(ne)$);\coordinate (c1052x) at ($(sw)!0.586842105263157!(ne)$);\coordinate (c1052y) at ($(sw)!0.248691099476442!(ne)$);\coordinate (c1056x) at ($(sw)!0.594736842105263!(ne)$);\coordinate (c1056y) at ($(sw)!0.243455497382201!(ne)$);\coordinate (c1060x) at ($(sw)!0.607894736842106!(ne)$);\coordinate (c1060y) at ($(sw)!0.23821989528796!(ne)$);\coordinate (c1064x) at ($(sw)!0.61842105263158!(ne)$);\coordinate (c1064y) at ($(sw)!0.243455497382201!(ne)$);\coordinate (c1068x) at ($(sw)!0.626315789473683!(ne)$);\coordinate (c1068y) at ($(sw)!0.248691099476442!(ne)$);\coordinate (c1072x) at ($(sw)!0.628947368421051!(ne)$);\coordinate (c1072y) at ($(sw)!0.287958115183247!(ne)$);\coordinate (c1076x) at ($(sw)!0.663157894736842!(ne)$);\coordinate (c1076y) at ($(sw)!0.298429319371729!(ne)$);\coordinate (c1080x) at ($(sw)!0.686842105263159!(ne)$);\coordinate (c1080y) at ($(sw)!0.277486910994765!(ne)$);\coordinate (c1084x) at ($(sw)!0.699999999999999!(ne)$);\coordinate (c1084y) at ($(sw)!0.280104712041885!(ne)$);\coordinate (c1088x) at ($(sw)!0.710526315789473!(ne)$);\coordinate (c1088y) at ($(sw)!0.287958115183247!(ne)$);\coordinate (c1092x) at ($(sw)!0.71578947368421!(ne)$);\coordinate (c1092y) at ($(sw)!0.295811518324608!(ne)$);\coordinate (c1096x) at ($(sw)!0.71578947368421!(ne)$);\coordinate (c1096y) at ($(sw)!0.308900523560211!(ne)$);\coordinate (c1100x) at ($(sw)!0.69736842105263!(ne)$);\coordinate (c1100y) at ($(sw)!0.332460732984293!(ne)$);\coordinate (c1104x) at ($(sw)!0.705263157894736!(ne)$);\coordinate (c1104y) at ($(sw)!0.348167539267016!(ne)$);\coordinate (c1108x) at ($(sw)!0.713157894736841!(ne)$);\coordinate (c1108y) at ($(sw)!0.36910994764398!(ne)$);\coordinate (c1112x) at ($(sw)!0.750000000000001!(ne)$);\coordinate (c1112y) at ($(sw)!0.36910994764398!(ne)$);\coordinate (c1116x) at ($(sw)!0.757894736842104!(ne)$);\coordinate (c1116y) at ($(sw)!0.379581151832462!(ne)$);\coordinate (c1120x) at ($(sw)!0.760526315789472!(ne)$);\coordinate (c1120y) at ($(sw)!0.392670157068063!(ne)$);\coordinate (c1124x) at ($(sw)!0.757894736842104!(ne)$);\coordinate (c1124y) at ($(sw)!0.400523560209424!(ne)$);\coordinate (c1128x) at ($(sw)!0.750000000000001!(ne)$);\coordinate (c1128y) at ($(sw)!0.413612565445027!(ne)$);\coordinate (c1132x) at ($(sw)!0.713157894736841!(ne)$);\coordinate (c1132y) at ($(sw)!0.413612565445027!(ne)$);\coordinate (c1136x) at ($(sw)!0.705263157894736!(ne)$);\coordinate (c1136y) at ($(sw)!0.437172774869111!(ne)$);\coordinate (c1140x) at ($(sw)!0.694736842105262!(ne)$);\coordinate (c1140y) at ($(sw)!0.455497382198952!(ne)$);
+ \draw (c901x |- c901y) -- (c904x |- c904y) -- (c908x |- c908y) -- (c912x |- c912y) -- (c916x |- c916y) -- (c920x |- c920y) -- (c924x |- c924y) -- (c928x |- c928y) -- (c932x |- c932y) -- (c936x |- c936y) -- (c940x |- c940y) -- (c944x |- c944y) -- (c948x |- c948y) -- (c952x |- c952y) -- (c956x |- c956y) -- (c960x |- c960y) -- (c964x |- c964y) -- (c968x |- c968y) -- (c972x |- c972y) -- (c976x |- c976y) -- (c980x |- c980y) -- (c984x |- c984y) -- (c988x |- c988y) -- (c992x |- c992y) -- (c996x |- c996y) -- (c1000x |- c1000y) -- (c1004x |- c1004y) -- (c1008x |- c1008y) -- (c1012x |- c1012y) -- (c1016x |- c1016y) -- (c1020x |- c1020y) -- (c1024x |- c1024y) -- (c1028x |- c1028y) -- (c1032x |- c1032y) -- (c1036x |- c1036y) -- (c1040x |- c1040y) -- (c1044x |- c1044y) -- (c1048x |- c1048y) -- (c1052x |- c1052y) -- (c1056x |- c1056y) -- (c1060x |- c1060y) -- (c1064x |- c1064y) -- (c1068x |- c1068y) -- (c1072x |- c1072y) -- (c1076x |- c1076y) -- (c1080x |- c1080y) -- (c1084x |- c1084y) -- (c1088x |- c1088y) -- (c1092x |- c1092y) -- (c1096x |- c1096y) -- (c1100x |- c1100y) -- (c1104x |- c1104y) -- (c1108x |- c1108y) -- (c1112x |- c1112y) -- (c1116x |- c1116y) -- (c1120x |- c1120y) -- (c1124x |- c1124y) -- (c1128x |- c1128y) -- (c1132x |- c1132y) -- (c1136x |- c1136y) -- (c1140x |- c1140y);
+ }
+]
+
+\tikzstyle{draw manual} = [
+ path picture = {
+ \coordinate (ne) at ($(path picture bounding box.north east)-(0.5pt,0.5pt)$);
+ \coordinate (sw) at ($(path picture bounding box.south west)+(0.5pt,0.5pt)$);
+ %\draw (path picture bounding box.north east) rectangle (path picture bounding box.south west);
+\coordinate (c1x) at ($(sw)!0.70189701897019!(ne)$);
+\coordinate (c2x) at ($(sw)!0.520325203252032!(ne)$);
+\coordinate (c3x) at ($(sw)!0.51219512195122!(ne)$);
+\coordinate (c4x) at ($(sw)!0.506775067750678!(ne)$);
+\coordinate (c5x) at ($(sw)!0.51219512195122!(ne)$);
+\coordinate (c6x) at ($(sw)!0.520325203252032!(ne)$);
+\coordinate (c7x) at ($(sw)!0.905149051490515!(ne)$);
+\coordinate (c8x) at ($(sw)!0.932249322493225!(ne)$);
+\coordinate (c9x) at ($(sw)!0.956639566395664!(ne)$);
+\coordinate (c10x) at ($(sw)!0.975609756097561!(ne)$);
+\coordinate (c11x) at ($(sw)!0.994579945799458!(ne)$);
+\coordinate (c12x) at ($(sw)!1!(ne)$);
+\coordinate (c13x) at ($(sw)!0.986449864498645!(ne)$);
+\coordinate (c14x) at ($(sw)!0.97289972899729!(ne)$);
+\coordinate (c15x) at ($(sw)!0.959349593495935!(ne)$);
+\coordinate (c16x) at ($(sw)!0.284552845528455!(ne)$);
+\coordinate (c17x) at ($(sw)!0.314363143631436!(ne)$);
+\coordinate (c18x) at ($(sw)!0.485094850948509!(ne)$);
+\coordinate (c19x) at ($(sw)!0.528455284552846!(ne)$);
+\coordinate (c20x) at ($(sw)!0.563685636856369!(ne)$);
+\coordinate (c21x) at ($(sw)!0.590785907859079!(ne)$);
+\coordinate (c22x) at ($(sw)!0.590785907859079!(ne)$);
+\coordinate (c23x) at ($(sw)!0.582655826558266!(ne)$);
+\coordinate (c24x) at ($(sw)!0.168021680216802!(ne)$);
+\coordinate (c25x) at ($(sw)!0!(ne)$);
+\coordinate (c26x) at ($(sw)!0!(ne)$);
+\coordinate (c27x) at ($(sw)!0.0921409214092141!(ne)$);
+\coordinate (c28x) at ($(sw)!0.769647696476965!(ne)$);
+\coordinate (c29x) at ($(sw)!0.794037940379404!(ne)$);
+\coordinate (c30x) at ($(sw)!0.815718157181572!(ne)$);
+\coordinate (c31x) at ($(sw)!0.831978319783198!(ne)$);
+\coordinate (c32x) at ($(sw)!0.840108401084011!(ne)$);
+\coordinate (c33x) at ($(sw)!0.826558265582656!(ne)$);
+\coordinate (c34x) at ($(sw)!0.799457994579946!(ne)$);
+\coordinate (c35x) at ($(sw)!0.669376693766938!(ne)$);
+\coordinate (c36x) at ($(sw)!0.650406504065041!(ne)$);
+\coordinate (c37x) at ($(sw)!0.542005420054201!(ne)$);
+\coordinate (c38x) at ($(sw)!0.531165311653117!(ne)$);
+\coordinate (c39x) at ($(sw)!0.528455284552846!(ne)$);
+\coordinate (c40x) at ($(sw)!0.531165311653117!(ne)$);
+\coordinate (c41x) at ($(sw)!0.542005420054201!(ne)$);
+\coordinate (c42x) at ($(sw)!0.688346883468834!(ne)$);
+\coordinate (c43x) at ($(sw)!0.823848238482385!(ne)$);
+\coordinate (c44x) at ($(sw)!0.853658536585366!(ne)$);
+\coordinate (c45x) at ($(sw)!0.875338753387534!(ne)$);
+\coordinate (c46x) at ($(sw)!0.894308943089431!(ne)$);
+\coordinate (c47x) at ($(sw)!0.910569105691057!(ne)$);
+\coordinate (c48x) at ($(sw)!0.921409214092141!(ne)$);
+\coordinate (c49x) at ($(sw)!0.905149051490515!(ne)$);
+\coordinate (c50x) at ($(sw)!0.894308943089431!(ne)$);
+\coordinate (c51x) at ($(sw)!0.880758807588076!(ne)$);
+\coordinate (c52x) at ($(sw)!0.550135501355014!(ne)$);
+\coordinate (c53x) at ($(sw)!0.542005420054201!(ne)$);
+\coordinate (c54x) at ($(sw)!0.536585365853658!(ne)$);
+\coordinate (c55x) at ($(sw)!0.542005420054201!(ne)$);
+\coordinate (c56x) at ($(sw)!0.550135501355014!(ne)$);
+\coordinate (c57x) at ($(sw)!0.688346883468834!(ne)$);
+\coordinate (c58x) at ($(sw)!0.70189701897019!(ne)$);
+\coordinate (c59x) at ($(sw)!0.856368563685637!(ne)$);
+\coordinate (c60x) at ($(sw)!0.888888888888889!(ne)$);
+\coordinate (c61x) at ($(sw)!0.91869918699187!(ne)$);
+\coordinate (c62x) at ($(sw)!0.940379403794038!(ne)$);
+\coordinate (c63x) at ($(sw)!0.959349593495935!(ne)$);
+\coordinate (c64x) at ($(sw)!0.970189701897019!(ne)$);
+\coordinate (c65x) at ($(sw)!0.953929539295393!(ne)$);
+\coordinate (c66x) at ($(sw)!0.937669376693767!(ne)$);
+\coordinate (c67x) at ($(sw)!0.924119241192412!(ne)$);
+\coordinate (c68x) at ($(sw)!0.70189701897019!(ne)$);
+\coordinate (c1y) at ($(sw)!0.73657094216209!(ne)$);
+\coordinate (c2y) at ($(sw)!0.73657094216209!(ne)$);
+\coordinate (c3y) at ($(sw)!0.741947045383272!(ne)$);
+\coordinate (c4y) at ($(sw)!0.752699251825636!(ne)$);
+\coordinate (c5y) at ($(sw)!0.760763406657407!(ne)$);
+\coordinate (c6y) at ($(sw)!0.763451458268!(ne)$);
+\coordinate (c7y) at ($(sw)!0.763451458268!(ne)$);
+\coordinate (c8y) at ($(sw)!0.768827561489182!(ne)$);
+\coordinate (c9y) at ($(sw)!0.774203664710364!(ne)$);
+\coordinate (c10y) at ($(sw)!0.787643922763317!(ne)$);
+\coordinate (c11y) at ($(sw)!0.803772232426863!(ne)$);
+\coordinate (c12y) at ($(sw)!0.82796469692218!(ne)$);
+\coordinate (c13y) at ($(sw)!0.862909367859866!(ne)$);
+\coordinate (c14y) at ($(sw)!0.873661574302225!(ne)$);
+\coordinate (c15y) at ($(sw)!0.879037677523407!(ne)$);
+\coordinate (c16y) at ($(sw)!0.879037677523407!(ne)$);
+\coordinate (c17y) at ($(sw)!0.895165987186953!(ne)$);
+\coordinate (c18y) at ($(sw)!0.895165987186953!(ne)$);
+\coordinate (c19y) at ($(sw)!0.905918193629317!(ne)$);
+\coordinate (c20y) at ($(sw)!0.924734554903457!(ne)$);
+\coordinate (c21y) at ($(sw)!0.956991174230544!(ne)$);
+\coordinate (c22y) at ($(sw)!0.981183638725865!(ne)$);
+\coordinate (c23y) at ($(sw)!1!(ne)$);
+\coordinate (c24y) at ($(sw)!1!(ne)$);
+\coordinate (c25y) at ($(sw)!0.879037677523407!(ne)$);
+\coordinate (c26y) at ($(sw)!0.427445006944135!(ne)$);
+\coordinate (c27y) at ($(sw)!0.376372026342908!(ne)$);
+\coordinate (c28y) at ($(sw)!0.376372026342908!(ne)$);
+\coordinate (c29y) at ($(sw)!0.379060077953497!(ne)$);
+\coordinate (c30y) at ($(sw)!0.392500336006455!(ne)$);
+\coordinate (c31y) at ($(sw)!0.403252542448814!(ne)$);
+\coordinate (c32y) at ($(sw)!0.422068903722953!(ne)$);
+\coordinate (c33y) at ($(sw)!0.448949419828863!(ne)$);
+\coordinate (c34y) at ($(sw)!0.459701626271228!(ne)$);
+\coordinate (c35y) at ($(sw)!0.459701626271228!(ne)$);
+\coordinate (c36y) at ($(sw)!0.46507772949241!(ne)$);
+\coordinate (c37y) at ($(sw)!0.46507772949241!(ne)$);
+\coordinate (c38y) at ($(sw)!0.467765781102998!(ne)$);
+\coordinate (c39y) at ($(sw)!0.478517987545362!(ne)$);
+\coordinate (c40y) at ($(sw)!0.486582142377133!(ne)$);
+\coordinate (c41y) at ($(sw)!0.494646297208908!(ne)$);
+\coordinate (c42y) at ($(sw)!0.494646297208908!(ne)$);
+\coordinate (c43y) at ($(sw)!0.486582142377133!(ne)$);
+\coordinate (c44y) at ($(sw)!0.489270193987726!(ne)$);
+\coordinate (c45y) at ($(sw)!0.497334348819497!(ne)$);
+\coordinate (c46y) at ($(sw)!0.510774606872454!(ne)$);
+\coordinate (c47y) at ($(sw)!0.524214864925407!(ne)$);
+\coordinate (c48y) at ($(sw)!0.543031226199542!(ne)$);
+\coordinate (c49y) at ($(sw)!0.575287845526634!(ne)$);
+\coordinate (c50y) at ($(sw)!0.586040051968998!(ne)$);
+\coordinate (c51y) at ($(sw)!0.59141615519018!(ne)$);
+\coordinate (c52y) at ($(sw)!0.59141615519018!(ne)$);
+\coordinate (c53y) at ($(sw)!0.594104206800774!(ne)$);
+\coordinate (c54y) at ($(sw)!0.604856413243132!(ne)$);
+\coordinate (c55y) at ($(sw)!0.615608619685497!(ne)$);
+\coordinate (c56y) at ($(sw)!0.620984722906679!(ne)$);
+\coordinate (c57y) at ($(sw)!0.620984722906679!(ne)$);
+\coordinate (c58y) at ($(sw)!0.623672774517272!(ne)$);
+\coordinate (c59y) at ($(sw)!0.620984722906679!(ne)$);
+\coordinate (c60y) at ($(sw)!0.623672774517272!(ne)$);
+\coordinate (c61y) at ($(sw)!0.631736929349043!(ne)$);
+\coordinate (c62y) at ($(sw)!0.642489135791407!(ne)$);
+\coordinate (c63y) at ($(sw)!0.661305497065547!(ne)$);
+\coordinate (c64y) at ($(sw)!0.68280990995027!(ne)$);
+\coordinate (c65y) at ($(sw)!0.717754580887955!(ne)$);
+\coordinate (c66y) at ($(sw)!0.731194838940908!(ne)$);
+\coordinate (c67y) at ($(sw)!0.739258993772679!(ne)$);
+\coordinate (c68y) at ($(sw)!0.739258993772679!(ne)$);
+\draw[line width=0.1pt, line cap=rect,line join=round]
+ (c1x |- c1y) -- (c2x |- c2y)-- (c3x |- c3y)-- (c4x |- c4y)-- (c5x |- c5y)-- (c6x |- c6y)-- (c7x |- c7y)-- (c8x |- c8y)-- (c9x |- c9y)-- (c10x |- c10y)-- (c11x |- c11y)-- (c12x |- c12y)-- (c13x |- c13y)-- (c14x |- c14y)-- (c15x |- c15y)-- (c16x |- c16y)-- (c17x |- c17y)-- (c18x |- c18y)-- (c19x |- c19y)-- (c20x |- c20y)-- (c21x |- c21y)-- (c22x |- c22y)-- (c23x |- c23y)-- (c24x |- c24y)-- (c25x |- c25y)-- (c26x |- c26y)-- (c27x |- c27y)-- (c28x |- c28y)-- (c29x |- c29y)-- (c30x |- c30y)-- (c31x |- c31y)-- (c32x |- c32y)-- (c33x |- c33y)-- (c34x |- c34y)-- (c35x |- c35y)-- (c36x |- c36y)-- (c37x |- c37y)-- (c38x |- c38y)-- (c39x |- c39y)-- (c40x |- c40y)-- (c41x |- c41y)-- (c42x |- c42y)-- (c43x |- c43y)-- (c44x |- c44y)-- (c45x |- c45y)-- (c46x |- c46y)-- (c47x |- c47y)-- (c48x |- c48y)-- (c49x |- c49y)-- (c50x |- c50y)-- (c51x |- c51y)-- (c52x |- c52y)-- (c53x |- c53y)-- (c54x |- c54y)-- (c55x |- c55y)-- (c56x |- c56y)-- (c57x |- c57y)-- (c58x |- c58y)-- (c59x |- c59y)-- (c60x |- c60y)-- (c61x |- c61y)-- (c62x |- c62y)-- (c63x |- c63y)-- (c64x |- c64y)-- (c65x |- c65y)-- (c66x |- c66y)-- (c67x |- c67y)-- (c68x |- c68y);
+ }
+]
+
+\tikzstyle{draw script} = [
+ path picture = {
+ \def\de{40} %degrees
+ \def\ma{0.2} %margin
+ \coordinate (a1) at ($(path picture bounding box.east)!{sin(\de)-\ma}!(path picture bounding box.north east)$);
+ \coordinate (a2) at ($(path picture bounding box.center)!{cos(\de)-\ma}!(path picture bounding box.east)$);
+ %\coordinate (ne) at (4.323838pt, -0.8041138pt);
+ %\coordinate (sw) at (0.7419678pt, -4.077197pt);
+ \coordinate (ne) at ($(path picture bounding box.north east)-(0.5pt,0.5pt)$);
+ \coordinate (sw) at ($(path picture bounding box.south west)+(0.5pt,0.5pt)$);
+ \coordinate (sm) at ($(sw)!0.6793108!(ne |- sw)$); %south middle: lower right corner
+ \coordinate (nm) at ($(ne)!0.6793108!(ne -| sw)$); %north middle: top left corner
+ \coordinate (l1) at ($(ne)!0.20377!(sw)$);
+ \coordinate (l2) at ($(ne)!0.4!(sw)$);
+ \coordinate (l3) at ($(ne)!0.626414!(sw)$);
+ \coordinate (l4) at ($(ne)!0.826416!(sw)$);
+ \coordinate (linestart12) at ($(sw)!0.179310!(ne)$);
+ \coordinate (lineend12) at ($(sw)!0.637931!(ne)$);
+ \coordinate (linestart3) at ($(sw)!0.2965524!(ne)$);
+ \coordinate (lineend3) at ($(sw)!0.751723!(ne)$);
+ \coordinate (linestart4) at ($(sw)!0.286207!(ne)$);
+ \coordinate (lineend4) at ($(sw)!0.74137868!(ne)$);
+ \coordinate (em) at ($(ne)!0.4792457!(sw)$);
+ \coordinate (bezierright) at ($(sw)!0.7793097!(ne)$);
+ \coordinate (bezierleft) at ($(sw)!0.0965516!(ne)$);
+ \coordinate (b11x) at ($(sw)!0.632702!(ne)$);
+ \coordinate (b11y) at ($(ne)!0.219119!(sw)$);
+ \coordinate (b12x) at ($(sw)!0.775287!(ne)$);
+ \coordinate (b12y) at ($(ne)!0.087421!(sw)$);
+ \coordinate (b21x) at ($(sw)!0.951148!(ne)$);
+ \coordinate (b21y) at ($(ne)!0.686793!(sw)$);
+ \coordinate (b22x) at ($(sw)!0.933448!(ne)$);
+ \coordinate (b22y) at ($(ne)!0.898365!(sw)$);
+ \coordinate (b31x) at ($(sw)!-0.051781!(ne)$);
+ \coordinate (b31y) at ($(ne)!0.220063!(sw)$);
+ \coordinate (b32x) at ($(sw)!0.092529!(ne)$);
+ \coordinate (b32y) at ($(ne)!0.084087!(sw)$);
+ \coordinate (b41x) at ($(sw)!0.265459!(ne)$);
+ \coordinate (b41y) at ($(ne)!0.694026!(sw)$);
+ \coordinate (b42x) at ($(sw)!0.250402!(ne)$);
+ \coordinate (b42y) at ($(ne)!0.886981!(sw)$);
+ \draw[line width=0.1pt, solid,line cap=round,line join=round]
+ (linestart12 |- l1) -- (lineend12 |- l1) %(302.6953pt, -147.1082pt)
+ (linestart12 |- l2) -- (lineend12 |- l2) %(302.6953pt, -211.3347pt)
+ (linestart3 |- l3) -- (lineend3 |- l3) %(343.4541pt, -285.4421pt)
+ (linestart4 |- l4) -- (lineend4 |- l4) %(339.749pt, -350.9043pt)
+ (ne) -- (nm) %top
+ (sw) -- (sm) %bottom
+ (bezierright |- em)
+ .. controls (b11x |- b11y) and (b12x |- b12y) ..
+ (ne)
+ (bezierright |- em)
+ .. controls (b21x |- b21y) and (b22x |- b22y) ..
+ (sm)
+ (bezierleft |- em)
+ .. controls (b31x |- b31y) and (b32x |- b32y) ..
+ (nm)
+ (bezierleft |- em)
+ .. controls (b41x |- b41y) and (b42x |- b42y) ..
+ (sw);
+ }
+]
+
+\tikzstyle{draw user} = [
+ path picture = {
+ \coordinate (ne) at ($(path picture bounding box.north east)-(0.5pt,0.5pt)$);
+ \coordinate (sw) at ($(path picture bounding box.south west)+(0.5pt,0.5pt)$);
+% \draw (path picture bounding box.north east) rectangle (path picture bounding box.south west);
+\coordinate (c1x) at ($(sw)!0.67936507936508!(ne)$); \coordinate (c1y) at ($(sw)!0.527950310559006!(ne)$);
+\coordinate (c2x) at ($(sw)!0.67936507936508!(ne)$); \coordinate (c2y) at ($(sw)!0.527950310559006!(ne)$);
+\coordinate (c3x) at ($(sw)!0.67936507936508!(ne)$); \coordinate (c3y) at ($(sw)!0.527950310559006!(ne)$);
+\coordinate (c4x) at ($(sw)!0.67936507936508!(ne)$); \coordinate (c4y) at ($(sw)!0.555905797101449!(ne)$);
+\coordinate (c5x) at ($(sw)!0.67936507936508!(ne)$); \coordinate (c5y) at ($(sw)!0.555905797101449!(ne)$);
+\coordinate (c6x) at ($(sw)!0.67936507936508!(ne)$); \coordinate (c6y) at ($(sw)!0.555905797101449!(ne)$);
+\coordinate (c7x) at ($(sw)!0.67936507936508!(ne)$); \coordinate (c7y) at ($(sw)!0.555905797101449!(ne)$);
+\coordinate (c8x) at ($(sw)!0.644444444444444!(ne)$); \coordinate (c8y) at ($(sw)!0.593167701863355!(ne)$);
+\coordinate (c9x) at ($(sw)!0.644444444444444!(ne)$); \coordinate (c9y) at ($(sw)!0.593167701863355!(ne)$);
+\coordinate (c10x) at ($(sw)!0.644444444444444!(ne)$); \coordinate (c10y) at ($(sw)!0.593167701863355!(ne)$);
+\coordinate (c11x) at ($(sw)!0.644444444444444!(ne)$); \coordinate (c11y) at ($(sw)!0.593167701863355!(ne)$);
+\coordinate (c12x) at ($(sw)!0.511111111111112!(ne)$); \coordinate (c12y) at ($(sw)!1!(ne)$);
+\coordinate (c13x) at ($(sw)!0.511111111111112!(ne)$); \coordinate (c13y) at ($(sw)!1!(ne)$);
+\coordinate (c14x) at ($(sw)!0.511111111111112!(ne)$); \coordinate (c14y) at ($(sw)!1!(ne)$);
+\coordinate (c15x) at ($(sw)!0.371428571428571!(ne)$); \coordinate (c15y) at ($(sw)!0.593167701863355!(ne)$);
+\coordinate (c16x) at ($(sw)!0.371428571428571!(ne)$); \coordinate (c16y) at ($(sw)!0.593167701863355!(ne)$);
+\coordinate (c17x) at ($(sw)!0.371428571428571!(ne)$); \coordinate (c17y) at ($(sw)!0.593167701863355!(ne)$);
+\coordinate (c18x) at ($(sw)!0.336507936507936!(ne)$); \coordinate (c18y) at ($(sw)!0.555905797101449!(ne)$);
+\coordinate (c19x) at ($(sw)!0.336507936507936!(ne)$); \coordinate (c19y) at ($(sw)!0.555905797101449!(ne)$);
+\coordinate (c20x) at ($(sw)!0.336507936507936!(ne)$); \coordinate (c20y) at ($(sw)!0.555905797101449!(ne)$);
+\coordinate (c21x) at ($(sw)!0.336507936507936!(ne)$); \coordinate (c21y) at ($(sw)!0.555905797101449!(ne)$);
+\coordinate (c22x) at ($(sw)!0.336507936507936!(ne)$); \coordinate (c22y) at ($(sw)!0.509316770186336!(ne)$);
+\coordinate (c23x) at ($(sw)!0.336507936507936!(ne)$); \coordinate (c23y) at ($(sw)!0.509316770186336!(ne)$);
+\coordinate (c24x) at ($(sw)!0.336507936507936!(ne)$); \coordinate (c24y) at ($(sw)!0.509316770186336!(ne)$);
+\coordinate (c25x) at ($(sw)!0.336507936507936!(ne)$); \coordinate (c25y) at ($(sw)!0.509316770186336!(ne)$);
+\coordinate (c26x) at ($(sw)!0.333333333333333!(ne)$); \coordinate (c26y) at ($(sw)!0.527950310559006!(ne)$);
+\coordinate (c27x) at ($(sw)!0.333333333333333!(ne)$); \coordinate (c27y) at ($(sw)!0.527950310559006!(ne)$);
+\coordinate (c28x) at ($(sw)!0.333333333333333!(ne)$); \coordinate (c28y) at ($(sw)!0.527950310559006!(ne)$);
+\coordinate (c29x) at ($(sw)!0.333333333333333!(ne)$); \coordinate (c29y) at ($(sw)!0.527950310559006!(ne)$);
+\coordinate (c30x) at ($(sw)!0!(ne)$); \coordinate (c30y) at ($(sw)!0.350931677018634!(ne)$);
+\coordinate (c31x) at ($(sw)!0!(ne)$); \coordinate (c31y) at ($(sw)!0.350931677018634!(ne)$);
+\coordinate (c32x) at ($(sw)!0!(ne)$); \coordinate (c32y) at ($(sw)!0.350931677018634!(ne)$);
+\coordinate (c33x) at ($(sw)!0!(ne)$); \coordinate (c33y) at ($(sw)!0!(ne)$);
+\coordinate (c34x) at ($(sw)!0!(ne)$); \coordinate (c34y) at ($(sw)!0!(ne)$);
+\coordinate (c35x) at ($(sw)!0!(ne)$); \coordinate (c35y) at ($(sw)!0!(ne)$);
+\coordinate (c36x) at ($(sw)!0!(ne)$); \coordinate (c36y) at ($(sw)!0!(ne)$);
+\coordinate (c37x) at ($(sw)!1!(ne)$); \coordinate (c37y) at ($(sw)!0!(ne)$);
+\coordinate (c38x) at ($(sw)!1!(ne)$); \coordinate (c38y) at ($(sw)!0!(ne)$);
+\coordinate (c39x) at ($(sw)!1!(ne)$); \coordinate (c39y) at ($(sw)!0!(ne)$);
+\coordinate (c40x) at ($(sw)!1!(ne)$); \coordinate (c40y) at ($(sw)!0!(ne)$);
+\coordinate (c41x) at ($(sw)!1!(ne)$); \coordinate (c41y) at ($(sw)!0.350931677018634!(ne)$);
+\coordinate (c42x) at ($(sw)!1!(ne)$); \coordinate (c42y) at ($(sw)!0.350931677018634!(ne)$);
+\coordinate (c43x) at ($(sw)!1!(ne)$); \coordinate (c43y) at ($(sw)!0.350931677018634!(ne)$);
+\coordinate (c44x) at ($(sw)!1!(ne)$); \coordinate (c44y) at ($(sw)!0.350931677018634!(ne)$);
+\coordinate (c45x) at ($(sw)!0.444444444444444!(ne)$); \coordinate (c45y) at ($(sw)!0.406832298136645!(ne)$);
+\coordinate (c46x) at ($(sw)!0.444444444444444!(ne)$); \coordinate (c46y) at ($(sw)!0.406832298136645!(ne)$);
+\coordinate (c47x) at ($(sw)!0.444444444444444!(ne)$); \coordinate (c47y) at ($(sw)!0.406832298136645!(ne)$);
+\coordinate (c48x) at ($(sw)!0.555555555555556!(ne)$); \coordinate (c48y) at ($(sw)!0.406832298136645!(ne)$);
+\coordinate (c49x) at ($(sw)!0.555555555555556!(ne)$); \coordinate (c49y) at ($(sw)!0.406832298136645!(ne)$);
+\coordinate (c50x) at ($(sw)!0.555555555555556!(ne)$); \coordinate (c50y) at ($(sw)!0.406832298136645!(ne)$);
+\coordinate (c51x) at ($(sw)!0.555555555555556!(ne)$); \coordinate (c51y) at ($(sw)!0.406832298136645!(ne)$);
+\coordinate (c52x) at ($(sw)!0.53015873015873!(ne)$); \coordinate (c52y) at ($(sw)!0.400626293995859!(ne)$);
+\coordinate (c53x) at ($(sw)!0.53015873015873!(ne)$); \coordinate (c53y) at ($(sw)!0.400626293995859!(ne)$);
+\coordinate (c54x) at ($(sw)!0.53015873015873!(ne)$); \coordinate (c54y) at ($(sw)!0.400626293995859!(ne)$);
+\coordinate (c55x) at ($(sw)!0.53015873015873!(ne)$); \coordinate (c55y) at ($(sw)!0.400626293995859!(ne)$);
+\coordinate (c56x) at ($(sw)!0.498412698412698!(ne)$); \coordinate (c56y) at ($(sw)!0.397515527950311!(ne)$);
+\coordinate (c57x) at ($(sw)!0.498412698412698!(ne)$); \coordinate (c57y) at ($(sw)!0.397515527950311!(ne)$);
+\coordinate (c58x) at ($(sw)!0.498412698412698!(ne)$); \coordinate (c58y) at ($(sw)!0.397515527950311!(ne)$);
+\coordinate (c59x) at ($(sw)!0.498412698412698!(ne)$); \coordinate (c59y) at ($(sw)!0.397515527950311!(ne)$);
+\coordinate (c60x) at ($(sw)!0.473015873015873!(ne)$); \coordinate (c60y) at ($(sw)!0.400626293995859!(ne)$);
+\coordinate (c61x) at ($(sw)!0.473015873015873!(ne)$); \coordinate (c61y) at ($(sw)!0.400626293995859!(ne)$);
+\coordinate (c62x) at ($(sw)!0.473015873015873!(ne)$); \coordinate (c62y) at ($(sw)!0.400626293995859!(ne)$);
+\coordinate (c63x) at ($(sw)!0.473015873015873!(ne)$); \coordinate (c63y) at ($(sw)!0.400626293995859!(ne)$);
+\coordinate (c64x) at ($(sw)!0.444444444444444!(ne)$); \coordinate (c64y) at ($(sw)!0.406832298136645!(ne)$);
+\coordinate (b11x1) at ($(sw)!0.798148148148148!(ne)$);
+\coordinate (b11y1) at ($(sw)!0.722670807453416!(ne)$);
+\coordinate (b11x2) at ($(sw)!0.722222222222222!(ne)$);
+\coordinate (b11y2) at ($(sw)!0.994151138716356!(ne)$);
+\coordinate (b11x3) at ($(sw)!0.511111111111112!(ne)$);
+\coordinate (b11y3) at ($(sw)!1!(ne)$);
+\coordinate (b14x1) at ($(sw)!0.297671957671958!(ne)$);
+\coordinate (b14y1) at ($(sw)!1.00020703933747!(ne)$);
+\coordinate (b14x2) at ($(sw)!0.215714285714286!(ne)$);
+\coordinate (b14y2) at ($(sw)!0.723240165631469!(ne)$);
+\coordinate (b14x3) at ($(sw)!0.371428571428571!(ne)$);
+\coordinate (b14y3) at ($(sw)!0.593167701863355!(ne)$);
+\coordinate (b29x1) at ($(sw)!0.209100529100529!(ne)$);
+\coordinate (b29y1) at ($(sw)!0.531418219461698!(ne)$);
+\coordinate (b29x2) at ($(sw)!0.062804232804232!(ne)$);
+\coordinate (b29y2) at ($(sw)!0.455020703933747!(ne)$);
+\coordinate (b29x3) at ($(sw)!0!(ne)$);
+\coordinate (b29y3) at ($(sw)!0.350931677018634!(ne)$);
+\coordinate (b44x1) at ($(sw)!0.935185185185186!(ne)$);
+\coordinate (b44y1) at ($(sw)!0.454606625258799!(ne)$);
+\coordinate (b44x2) at ($(sw)!0.800899470899472!(ne)$);
+\coordinate (b44y2) at ($(sw)!0.523654244306418!(ne)$);
+\coordinate (b44x3) at ($(sw)!0.67936507936508!(ne)$);
+\coordinate (b44y3) at ($(sw)!0.527950310559006!(ne)$);
+\draw[line width=0.1pt, line cap=rect,line join=round]
+ (c1x |- c1y) -- (c2x |- c2y) -- (c3x |- c3y) -- (c4x |- c4y) -- (c5x |- c5y) -- (c6x |- c6y) -- (c7x |- c7y) -- (c8x |- c8y) -- (c9x |- c9y) -- (c10x |- c10y) -- (c11x |- c11y) .. controls (b11x1 |- b11y1) and (b11x2 |- b11y2) .. (b11x3 |- b11y3) -- (c12x |- c12y) -- (c13x |- c13y) -- (c14x |- c14y) .. controls (b14x1 |- b14y1) and (b14x2 |- b14y2) .. (b14x3 |- b14y3) -- (c15x |- c15y) -- (c16x |- c16y) -- (c17x |- c17y) -- (c18x |- c18y) -- (c19x |- c19y) -- (c20x |- c20y) -- (c21x |- c21y) -- (c22x |- c22y) -- (c23x |- c23y) -- (c24x |- c24y) -- (c25x |- c25y) -- (c26x |- c26y) -- (c27x |- c27y) -- (c28x |- c28y) -- (c29x |- c29y) .. controls (b29x1 |- b29y1) and (b29x2 |- b29y2) .. (b29x3 |- b29y3) -- (c30x |- c30y) -- (c31x |- c31y) -- (c32x |- c32y) -- (c33x |- c33y) -- (c34x |- c34y) -- (c35x |- c35y) -- (c36x |- c36y) -- (c37x |- c37y) -- (c38x |- c38y) -- (c39x |- c39y) -- (c40x |- c40y) -- (c41x |- c41y) -- (c42x |- c42y) -- (c43x |- c43y) -- (c44x |- c44y) .. controls (b44x1 |- b44y1) and (b44x2 |- b44y2) .. (b44x3 |- b44y3);
+ (c45x |- c45y) -- (c46x |- c46y) -- (c47x |- c47y) -- (c48x |- c48y) -- (c49x |- c49y) -- (c50x |- c50y) -- (c51x |- c51y) -- (c52x |- c52y) -- (c53x |- c53y) -- (c54x |- c54y) -- (c55x |- c55y) -- (c56x |- c56y) -- (c57x |- c57y) -- (c58x |- c58y) -- (c59x |- c59y) -- (c60x |- c60y) -- (c61x |- c61y) -- (c62x |- c62y) -- (c63x |- c63y) -- (c64x |- c64y) -- cycle;
+ }
+]
+
+%%%%% resources %%%%%
+
+\tikzstyle{pool} = [
+ draw
+]
+
+\tikzstyle{pool label} = [
+ pool,
+ label={[rotate=90,anchor=north]left:\footnotesize #1},
+ fit margins={left=0.8em,right=0.1em,bottom=0.1em,top=0.1em},
+ path picture = {
+ \def\x{1.2em}
+ \draw ($(path picture bounding box.north west)+(\x,0)$) to ($(path picture bounding box.south west)+(\x,0)$);
+ }
+]
+
+%%%%% data %%%%%
+
+\tikzstyle{data object} = [
+ inner sep=0,
+ minimum width=1em,
+ minimum height=1.5em,
+ path picture = {
+ \def\i{0.3em}
+ \draw (path picture bounding box.north west) to (path picture bounding box.south west) to (path picture bounding box.south east) |- ($(path picture bounding box.north east)+(-\i,-\i)$) |- cycle;
+ \draw ($(path picture bounding box.north east)+(-\i,0)$) to ($(path picture bounding box.north east)+(0,-\i)$);
+ }
+]
+
+\tikzstyle{data collection} = [
+ data object,
+ label={[anchor=south,inner sep=0]below:\tikzmultimarker}
+]
+
+\tikzstyle{data store} = [
+ database,
+ database segment height=0.3mm,
+ database bottom segment height=3mm,
+ database aspect ratio=0.25,
+ database radius=0.35cm
+]
+
+%adapted from https://tex.stackexchange.com/questions/442991/database-shape-in-tikz
+\makeatletter
+\tikzset{
+ database/.style={
+ path picture={
+ \draw (0, 1.5*\database@segmentheight+0.5*\database@bottomsegmentheight) circle [x radius=\database@radius,y radius=\database@aspectratio*\database@radius];
+ \draw (-\database@radius, 0.5*\database@segmentheight+0.5*\database@bottomsegmentheight) arc [start angle=180,end angle=360,x radius=\database@radius, y radius=\database@aspectratio*\database@radius];
+ \draw (-\database@radius,-0.5*\database@segmentheight+0.5*\database@bottomsegmentheight) arc [start angle=180,end angle=360,x radius=\database@radius, y radius=\database@aspectratio*\database@radius];
+ \draw (-\database@radius,1.5*\database@segmentheight+0.5*\database@bottomsegmentheight)
+ to ++(0,-2*\database@segmentheight-\database@bottomsegmentheight)
+ arc [start angle=180,end angle=360,x radius=\database@radius, y radius=\database@aspectratio*\database@radius]
+ to ++(0,2*\database@segmentheight+\database@bottomsegmentheight);
+ },
+ minimum width=2*\database@radius + 2*\pgflinewidth,
+ minimum height=2*\database@segmentheight + \database@bottomsegmentheight + 2*\database@aspectratio*\database@radius + 2*\pgflinewidth,
+ },
+ database segment height/.store in=\database@segmentheight,
+ database bottom segment height/.store in=\database@bottomsegmentheight,
+ database radius/.store in=\database@radius,
+ database aspect ratio/.store in=\database@aspectratio,
+ database segment height=0.1cm,
+ database radius=0.25cm,
+ database aspect ratio=0.35,
+}
+\makeatother
diff --git a/Master/texmf-dist/tex/latex/tikz-decofonts/tikz-decofonts.sty b/Master/texmf-dist/tex/latex/tikz-decofonts/tikz-decofonts.sty
new file mode 100644
index 00000000000..61cf680863e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tikz-decofonts/tikz-decofonts.sty
@@ -0,0 +1,976 @@
+% Author : C. Pierquet
+% licences : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+% : CC BY-SA 4.0 (https://tex.stackexchange.com/questions/475141/simulating-paintbrush-strokes-in-tikz from user121799)
+% : (https://tex.stackexchange.com/questions/460836/custom-line-cap-to-simulate-inked-line-in-tikz/460842#460842 from user121799)
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{tikz-decofonts}[2025/01/04 0.1.1 Custom fonts, made with TikZ, with effects]
+
+%------History
+% 0.1.1 Bicolor txt
+% 0.1.0 Initial version
+
+%------Packages and library
+\RequirePackage{tikz}
+\RequirePackage{xstring}
+\RequirePackage{xintexpr}
+\RequirePackage{listofitems}
+\RequirePackage{simplekv}
+\usetikzlibrary{decorations,decorations.pathreplacing,calc,positioning,bbox,arrows.meta,bending}
+
+%------Paintbrush
+\pgfmathdeclarerandomlist{randcolor}{{black}{white}}
+\pgfkeys{/brush pars/.cd,
+ lines/.initial={\tkzbrushlines},
+ distance/.initial=0.25pt
+}
+\tikzset{
+ brush/.style={
+ decorate,
+ decoration={
+ show path construction,
+ lineto code={
+ \foreach\Xbrush in{1,...,\pgfkeysvalueof{/brush pars/lines}}{
+ \pgfmathrandomitem{\c}{randcolor}
+ \pgfmathtruncatemacro{\mix}{100-24*rnd}
+ \draw[color=brushcolor!\mix!\c,
+ shorten >={(3-4*rnd)*1pt
+ -0.5*\pgfkeysvalueof{/brush pars/lines}*\pgfkeysvalueof{/brush pars/distance}},
+ shorten <={(3-4*rnd)*1pt
+ -0.5*\pgfkeysvalueof{/brush pars/lines}*\pgfkeysvalueof{/brush pars/distance}}]
+ let \p1=($(\tikzinputsegmentlast)-(\tikzinputsegmentfirst)$),
+ \n1={90+atan2(\y1,\x1)} in
+ ($(\tikzinputsegmentfirst)+(\n1:{((1.02-0.04*rnd)*\Xbrush-\pgfkeysvalueof{/brush pars/lines}/2)*\pgfkeysvalueof{/brush pars/distance}})$)
+ --
+ ($(\tikzinputsegmentlast)+(\n1:{((1.02-0.04*rnd)*\Xbrush-\pgfkeysvalueof{/brush pars/lines}/2)*\pgfkeysvalueof{/brush pars/distance}})$);
+ }
+ },
+ curveto code={
+ \foreach\Xbrush in{1,...,\pgfkeysvalueof{/brush pars/lines}}{
+ \pgfmathrandomitem{\c}{randcolor}
+ \pgfmathtruncatemacro{\mix}{100-24*rnd}
+ \draw[color=brushcolor!\mix!\c,shorten >={(3-4*rnd)*1pt
+ -0.5*\pgfkeysvalueof{/brush pars/lines}*\pgfkeysvalueof{/brush pars/distance}},
+ shorten <={(3-4*rnd)*1pt
+ -0.5*\pgfkeysvalueof{/brush pars/lines}*\pgfkeysvalueof{/brush pars/distance}}]
+ let \p1=($(\tikzinputsegmentsupporta)-(\tikzinputsegmentfirst)$),
+ \p2=($(\tikzinputsegmentsupportb)-(\tikzinputsegmentsupporta)$),
+ \p3=($(\tikzinputsegmentlast)-(\tikzinputsegmentsupportb)$),
+ \n1={90+atan2(\y1,\x1)}, \n2={90+atan2(\y2,\x2)},
+ \n3={90+atan2(\y3,\x3)} in
+ ($(\tikzinputsegmentfirst)+(\n1:{((1.02-0.04*rnd)*\Xbrush-\pgfkeysvalueof{/brush pars/lines}/2)*\pgfkeysvalueof{/brush pars/distance}})$)
+ .. controls ($(\tikzinputsegmentsupporta)+(\n2:{((1.02-0.04*rnd)*\Xbrush-\pgfkeysvalueof{/brush pars/lines}/2)*\pgfkeysvalueof{/brush pars/distance}})$)
+ and ($(\tikzinputsegmentsupportb)+(\n3:{((1.02-0.04*rnd)*\Xbrush-\pgfkeysvalueof{/brush pars/lines}/2)*\pgfkeysvalueof{/brush pars/distance}})$) ..
+ ($(\tikzinputsegmentlast)+(\n3:{((1.02-0.04*rnd)*\Xbrush-\pgfkeysvalueof{/brush pars/lines}/2)*\pgfkeysvalueof{/brush pars/distance}})$);
+ }
+ },
+ }
+ }
+}
+\tikzset{pics/.cd,
+ brushA/.style={code={%
+ \draw[brush] (0,-0.5) -- (0.25,0.5) -- (0.5,-0.5);
+ \draw[brush] (0.125,-0.15) -- (0.375,-0.15);
+ %\path (0.725,0);%
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }%
+ },
+ brushB/.style={code={%
+ \draw[brush] (0,-0.5) -- (0,0.5) to[out=0,in=0,looseness=2.5] (0,0) to[out=0,in=0,looseness=3] cycle;
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushC/.style={code={%
+ \draw[brush] (0,0) to[out=90,in=180] (0.25,0.5) to[out=0,in=110] (0.5,0.325) ;
+ \draw[brush] (0,0) to[out=-90,in=180] (0.25,-0.5) to[out=0,in=-110] (0.5,-0.325) ;
+ %\draw[brush] (0,0) to[out=90,in=110,looseness=2] (0.5,0.325);
+ %\draw[brush](0,0) to[out=-90,in=-110,looseness=2] (0.5,-0.2325);
+ %\path (0.7,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushD/.style={code={%
+ \draw[brush] (0,-0.5) -- (0,0.5) to[out=0,in=0,looseness=1.75] cycle;
+ %\path (0.675,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushE/.style={code={%
+ \draw[brush] (0.425,-0.5) --(0,-0.5) -- (0,0.5) -- (0.425,0.5);
+ \draw[brush] (0,0) -- (0.425,0);
+ \path (0.5,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushF/.style={code={%
+ \draw[brush] (0,-0.5) -- (0,0.5) -- (0.425,0.5);
+ \draw[brush] (0,0) -- (0.425,0);
+ \path (0.5,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushG/.style={code={%
+ \draw[brush] (0,0) to[out=90,in=180] (0.25,0.5) to[out=0,in=100] (0.475,0.325) ;
+ \draw[brush] (0,0) to[out=-90,in=180] (0.25,-0.5) to[out=0,in=-110] (0.475,-0.1) ;
+ \draw[brush] (0.475,-0.1) to (0.275,-0.1);
+ %\draw[brush] (0,0) to[out=90,in=110,looseness=2] (0.5,0.25);
+ %\draw[brush] (0,0) to[out=-90,in=-110,looseness=2] (0.5,-0.25);
+ %\draw[brush] (0.5,-0.25) to (0.25,-0.25);
+ %\path (0.7,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushH/.style={code={%
+ \draw[brush] (0,-0.5) -- (0,0.5);
+ \draw[brush] (0.5,-0.5) -- (0.5,0.5);
+ \draw[brush] (0,0) -- (0.5,0);
+ %\path (0.7,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushI/.style={code={%
+ \draw[brush] (0,-0.5) -- (0,0.5);
+ %\path (0.25,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushJ/.style={code={%
+ \draw[brush] (0.35,0.5) -- (0.35,-0.35) to[out=-90,in=0] (0.175,-0.5) to[out=180,in=-90] (0,-0.3);
+ %\path (0.45,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushK/.style={code={%
+ \draw[brush] (0,-0.5) -- (0,0.5);
+ \draw[brush] (0.4,0.475) -- (0.02,0) -- (0.4,-0.475);
+ %\path (0.6,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushL/.style={code={
+ \draw[brush] (0,0.5) -- (0,-0.5) -- (0.5,-0.5);
+ %\path (0.6,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushM/.style={code={
+ \draw[brush] (0,-0.5) -- (0,0.5) -- (0.25,0.25) -- (0.5,0.5) -- (0.5,-0.5);
+ %\path (0.8,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushN/.style={code={
+ \draw[brush] (0,-0.5) -- (0,0.5) -- (0.5,-0.5) -- (0.5,0.5);
+ %\path (0.8,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushO/.style={code={
+ \draw[brush] (0.25,0) circle(0.25 and 0.5);
+ %\path (0.8,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushP/.style={code={
+ \draw[brush] (0,-0.5) -- (0,0.5) to[out=0,in=0,looseness=2.5] (0,0);
+ %\path (0.6,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushQ/.style={code={
+ \draw[brush] (0.25,0) circle(0.25 and 0.5);
+ \draw[brush](0.35,-0.25) -- (0.475,-0.45);
+ %\path (0.8,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushR/.style={code={
+ \draw[brush] (0,-0.5) -- (0,0.5) to[out=0,in=0,looseness=2.5] (0.05,0) -- (0.5,-0.5);
+ %\path (0.6,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushS/.style={code={
+ \draw[brush] (0.475,0.475) to[out=150,in=165,looseness=2.25] (0.25,0) to[out=-15,in=-30,looseness=2.25] (0.025,-0.475);
+ %\path (0.65,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushT/.style={code={
+ \draw[brush] (0.25,-0.5) -- (0.25,0.5) (0,0.5) -- (0.5,0.5);
+ %\path (0.85,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushU/.style={code={
+ \draw[brush] (0,0.5) -- (0,0) to[out=-90,in=-90,looseness=4] (0.5,0) -- (0.5,0.5);
+ %\path (0.8,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushV/.style={code={
+ \draw[brush] (0,0.5) -- (0.25,-0.5) -- (0.5,0.5);
+ %\path (0.8,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushW/.style={code={
+ \draw[brush] (0,0.5) -- (0.15,-0.5) -- (0.3,-0.25) -- (0.45,-0.5) -- (0.6,0.5);
+ %\path (1.1,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushX/.style={code={
+ \draw[brush] (0,0.5) -- (0.5,-0.5);
+ \draw[brush] (0.5,0.5) -- (0,-0.5);
+ %\path (0.8,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushY/.style={code={
+ \draw[brush] (0,0.5) -- (0.25,0);
+ \draw[brush] (0.5,0.5) -- (0,-0.5);
+ %\path (0.8,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushZ/.style={code={
+ \draw[brush] (0,0.5) --(0.5,0.5) -- (0,-0.5) -- (0.5,-0.5);
+ %\path (0.8,0);
+ %\filldraw[blue] (0,0) circle[radius=2pt] ;
+ }
+ },
+ brushspace/.style={code={\path (0,0) (0.2,0);}},
+}
+
+
+\defKV[tkzbrush]{%
+ scale=\def\tkzbrushscale{#1},%
+ color=\colorlet{brushcolor}{#1},%
+ lines=\def\tkzbrushlines{#1},%
+ thick=\def\tkzbrushthick{#1}
+}
+
+\setKVdefault[tkzbrush]{%
+ scale=1,%
+ color=black,%
+ lines=12,%
+ thick=3
+}
+
+%------inkbrush
+\pgfdeclarearrow{
+ name=ink,
+ parameters= {\the\pgfarrowlength},
+ setup code={
+ \pgfarrowssettipend{0pt}
+ \pgfarrowssetlineend{-\pgfarrowlength}
+ \pgfarrowlinewidth=\pgflinewidth
+ \pgfarrowssavethe\pgfarrowlength
+ },
+ drawing code={
+ \pgfpathmoveto{\pgfpoint{-\pgfarrowlength}{0.5\pgflinewidth}}
+ \pgfpathcurveto{\pgfpoint{-0.75\pgfarrowlength}{0.6\pgflinewidth}}{%
+ \pgfpoint{-0.01\pgfarrowlength}{0.6\pgflinewidth}}{%
+ \pgfpoint{0pt}{0pt}}
+ \pgfpathcurveto{\pgfpoint{-0.01\pgfarrowlength}{-0.5\pgflinewidth}}{%
+ \pgfpoint{-0.2\pgfarrowlength}{-(1+0.3*rnd)*\pgflinewidth}}{%
+ \pgfpoint{-0.3\pgfarrowlength}{-0.8*(1+0.3*rnd)*\pgflinewidth}}
+ \pgfpathcurveto{\pgfpoint{-0.4\pgfarrowlength}{-0.6*(1+0.3*rnd)*\pgflinewidth}}{%
+ \pgfpoint{-0.6\pgfarrowlength}{-0.3*(1+0.3*rnd)*\pgflinewidth}}{%
+ \pgfpoint{-1\pgfarrowlength}{-0.5\pgflinewidth}}
+ \pgfusepathqfill
+ },
+ defaults={length=8pt}
+}
+
+\tikzset{pics/.cd,
+ inkA/.style={code={%
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,-0.5) -- (0.25,0.5) -- (0.5,-0.5);
+ \draw[line width={\tkzbrushthick}] (0.125,-0.15) -- (0.375,-0.15);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0,-0.55) -- (0.3,0.4) -- (0.6,-0.55);
+ %\draw[line width=5](0.1,1/3-0.45) -- (0.5,1/3-0.45);
+ %\path (0.7,0);
+ }
+ },
+ inkB/.style={code={
+ \draw[line width={\tkzbrushthick},{ink[bend]}-{ink[bend]}] (0,-0.5) -- (0,0.5) to[out=0,in=0,looseness=2.5] (0,0) to[out=0,in=0,looseness=3] cycle;
+ %\draw[line width=5] (0,-0.45) -- (0,0.45) to[out=0,in=0,looseness=2.5] (0,0) to[out=0,in=0,looseness=3] cycle;
+ }
+ },
+ inkC/.style={code={
+ \draw[line width={\tkzbrushthick}] (0,0) to[out=90,in=180] (0.25,0.5) to[out=0,in=110] (0.5,0.325) ;
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,0) to[out=-90,in=180] (0.25,-0.5) to[out=0,in=-110] (0.5,-0.325) ;
+ %\draw[line width=5,-{ink[bend]}] (0,0) to[out=90,in=110,looseness=2] (0.5,0.25);
+ %\draw[line width=5,-{ink[bend]}] (0,0) to[out=-90,in=-110,looseness=2] (0.5,-0.25);
+ %\path (0.7,0);
+ }
+ },
+ inkD/.style={code={%
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,-0.5) -- (0,0.5) to[out=0,in=0,looseness=1.75] (0.075,-0.5) ;
+ %\draw[line width=5] (0,-0.45) -- (0,0.45) to[out=0,in=0,looseness=2.25] cycle;
+ %\path (0.7,0);
+ }
+ },
+ inkE/.style={code={%
+ \draw[line width={\tkzbrushthick},{ink[bend]}-] (0.5,0.5) -- (0,0.5) -- (0,-0.5) ;
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,0) -- (0.425,0) ;
+ \draw[line width={\tkzbrushthick}] (0,-0.5) -- (0.4,-0.5);
+ %\draw[line width={\tkzbrushthick},{ink[bend]}-{ink[bend]}] (0.5,-0.45) --(0,-0.45) -- (0,0.45) -- (0.5,0.45);
+ %\draw[line width={\tkzbrushthick},-{ink[bend]}] (0,0) -- (0.5,0);
+ %\path (0.7,0);
+ }
+ },
+ inkF/.style={code={%
+ \draw[line width={\tkzbrushthick},{ink[bend]}-] (0.5,0.5) -- (0,0.5) -- (0,-0.5) ;
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,0) -- (0.425,0) ;
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0,-0.45) -- (0,0.45) -- (0.5,0.45);
+ %\draw[line width=5,-{ink[bend]}] (0,0) -- (0.5,0);
+ %\path (0.7,0);
+ }
+ },
+ inkG/.style={code={%
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,0) to[out=90,in=180] (0.25,0.5) to[out=0,in=100] (0.475,0.325) ;
+ \draw[line width={\tkzbrushthick}] (0,0) to[out=-90,in=180] (0.25,-0.5) to[out=0,in=-110] (0.475,-0.1) ;
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0.475,-0.1) to (0.275,-0.1);
+ %\draw[line width=5,-{ink[bend]}] (0,0) to[out=90,in=110,looseness=2] (0.5,0.25);
+ %\draw[line width=5] (0,0) to[out=-90,in=-110,looseness=2] (0.5,-0.25);
+ %\draw[line width=5,-{ink[bend]}] (0.54,-0.25) to (0.3,-0.25);
+ %\path (0.7,0);
+ }
+ },
+ inkH/.style={code={%
+ \draw[line width={\tkzbrushthick},{ink[bend]}-] (0,-0.5) -- (0,0.5);
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0.5,-0.5) -- ([yshift=1pt]0.5,0.5);
+ \draw[line width={\tkzbrushthick}] (0,0) -- (0.5,0);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0,-0.5) -- (0,0.5);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0.5,-0.5) -- (0.5,0.5);
+ %\draw[line width=5] (0,0) -- (0.5,0);
+ \path (0.7,0);
+ }
+ },
+ inkI/.style={code={
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] ([yshift=-0.5pt]0,-0.5) -- ([yshift=1pt]0,0.5);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0,-0.45) -- (0,0.45);
+ \path (0.075,0);
+ }
+ },
+ inkJ/.style={code={%
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0.35,0.5) -- (0.35,-0.35) to[out=-90,in=0] (0.175,-0.5) to[out=180,in=-90] (0,-0.3);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0.2,0.45) -- (0.2,-0.35) to[out=-90,in=0] (0.1,-0.45) to[out=180,in=-90] (0,-0.35);
+ %\path (0.45,0);
+ }
+ },
+ inkK/.style={code={%
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,-0.5) -- ([yshift=1pt]0,0.5);
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0.4,0.5) -- (0.02,0) -- (0.4,-0.5);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0,-0.45) -- (0,0.45);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0.4,0.45) -- (0.02,0) -- (0.4,-0.45);
+ %\path (0.6,0);
+ }
+ },
+ inkL/.style={code={%
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,0.5) -- (0,-0.5) -- (0.5,-0.5);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0,0.5) -- (0,-0.45) -- (0.4,-0.45);
+ %\path (0.6,0);
+ }
+ },
+ inkM/.style={code={%
+ \draw[line width={\tkzbrushthick}] (0,-0.5)--(0,0.45) ;
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,0.475) -- (0.25,0.25) -- (0.5,0.45) -- (0.5,-0.5);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0,-0.45) -- (0,0.45) -- (0.3,0.25) -- (0.6,0.45) -- (0.6,-0.45);
+ %\path (0.8,0);%
+ }
+ },
+ inkN/.style={code={%
+ \draw[line width={\tkzbrushthick}] (0,-0.5)--(0,0.45) ;
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,0.475) -- (0.5,-0.51) -- (0.5,0.515);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0,-0.45) -- (0,0.45) -- (0.6,-0.4) -- (0.6,0.45);
+ %\path (0.8,0);
+ }
+ },
+ inkO/.style={code={%
+ \draw[line width={\tkzbrushthick}] (0.25,0) circle(0.25 and 0.5);
+ %\path (0.8,0);
+ }
+ },
+ inkP/.style={code={%
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,-0.5) -- (0,0.5) to[out=0,in=0,looseness=2.5] (0,0);
+ %\draw[line width=5,{ink[bend]}-] (0,-0.45) -- (0,0.45) to[out=0,in=0,looseness=2.5] (0,0);
+ %\path (0.6,0);
+ }
+ },
+ inkQ/.style={code={%
+ \draw[line width={\tkzbrushthick}] (0.25,0) circle(0.25 and 0.5);
+ \draw[line width={\tkzbrushthick},{ink[bend]}-{ink[bend]}](0.35,-0.25) -- (0.5,-0.5);
+ %\draw[line width=5] (0.3,0) circle(0.3 and 0.48);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}](0.35,-0.25) -- (0.6,-0.45);
+ %\path (0.8,0);
+ }
+ },
+ inkR/.style={code={%
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,-0.5) -- (0,0.5) to[out=0,in=0,looseness=2.5] (0.05,0) -- (0.5,-0.5);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0,-0.45) -- (0,0.45) to[out=0,in=0,looseness=2.5] (0.05,0) -- (0.4,-0.45);
+ %\path (0.6,0);
+ }
+ },
+ inkS/.style={code={%
+ \draw[line width={\tkzbrushthick},{ink[bend]}-] (0.475,0.475) to[out=150,in=165,looseness=2.25] (0.25,0) to[out=-15,in=-30,looseness=2.25] (0.025,-0.475);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0.5,0.4) to[out=160,in=165,looseness=2] (0.3,0) to[out=-15,in=-20,looseness=2] (0.1,-0.4);
+ %\path (0.65,0);
+ }
+ },
+ inkT/.style={code={%
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0.25,-0.5) -- (0.25,0.5) ;
+ \draw[line width={\tkzbrushthick}] (0,0.5) -- (0.5,0.5);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0.35,-0.45) -- (0.35,0.45) (0,0.45) -- (0.7,0.45);
+ %\path (0.85,0);
+ }
+ },
+ inkU/.style={code={%
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,0.5) -- (0,0.25) to[out=-90,in=180] (0.25,-0.5) to[out=0,in=-90] (0.5,0.25) -- (0.5,0.5);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0,0.5) -- (0,0) to[out=-90,in=-90,looseness=2.5] (0.6,0) -- (0.6,0.5);
+ %\path (0.8,0);
+ }
+ },
+ inkV/.style={code={%
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,0.5) -- (0.25,-0.5) -- (0.5,0.5);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0,0.5) -- (0.3,-0.4) -- (0.6,0.5);
+ %\path (0.8,0);
+ }
+ },
+ inkW/.style={code={%
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,0.5) -- (0.15,-0.5) -- (0.3,-0.25) -- (0.45,-0.5) -- (0.6,0.5);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0,0.45) -- (0.3,-0.4) -- (0.45,-0.1) -- (0.6,-0.4) -- (0.9,0.45);
+ %\path (1.1,0);
+ }
+ },
+ inkX/.style={code={%
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,0.5) -- (0.5,-0.5);
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0.5,0.5) -- (0,-0.5);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0,0.45) -- (0.6,-0.45);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0.6,0.45) -- (0,-0.45);
+ %\path (0.8,0);
+ }
+ },
+ inkY/.style={code={
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,0.5) -- (0.25,0);
+ \draw[line width={\tkzbrushthick},{ink[bend]}-{ink[bend]}] (0.5,0.5) -- (0,-0.5);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0,0.45) -- (0.3,0);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0.6,0.45) -- (0,-0.45);
+ %\path (0.8,0);
+ }
+ },
+ inkZ/.style={code={%
+ \draw[line width={\tkzbrushthick},-{ink[bend]}] (0,0.5) --(0.5,0.5) -- (0,-0.5) -- (0.5,-0.45);
+ %\draw[line width=5,{ink[bend]}-{ink[bend]}] (0,0.45) --(0.6,0.45) -- (0,-0.45) -- (0.6,-0.45);
+ %\path (0.8,0);
+ }
+ },
+ inkspace/.style={code={\path (0,0) (0.2,0);}},
+}
+
+%------macros
+\NewDocumentCommand\tkzbrush{ O{} D<>{} m }{%
+ \restoreKV[tkzbrush]%
+ \setKV[tkzbrush]{#1}%
+ \StrChar{#3}{1}[\myfisrtchar]%
+ \StrLen{#3}[\mynbofchars]%
+ \begin{tikzpicture}%[bezier bounding box]
+ \pic[bezier bounding box,local bounding box=box1,scale={\tkzbrushscale},#2] at (0,0) {brush\myfisrtchar} ;%
+ %on boucle les lettres une par une ??
+ \foreach \i [count=\Y,evaluate=\Y as \Z using {int(\Y+1)}] in {2,...,\mynbofchars}{%
+ \StrChar{#3}{\i}[\mytmpchar]%
+ \IfStrEq{\mytmpchar}{ }%
+ {%
+ \edef\temp{\noexpand\pic[bezier bounding box,right=2mm of box\Y,local bounding box=box\Z,scale={\tkzbrushscale},#2] {brushspace};}
+ \temp%
+ }%
+ {%
+ \edef\temp{\noexpand\pic[bezier bounding box,right=2mm of box\Y,local bounding box=box\Z,scale={\tkzbrushscale},#2] {brush\mytmpchar};}
+ \temp%
+ }%
+ }%
+ \end{tikzpicture}%
+}
+
+\NewDocumentCommand\tkzink{ O{} D<>{} m }{%
+ \restoreKV[tkzbrush]%
+ \setKV[tkzbrush]{#1}%
+ \StrChar{#3}{1}[\myfisrtchar]%
+ \StrLen{#3}[\mynbofchars]%
+ \begin{tikzpicture}[brushcolor,line join=round,line cap=round]%,bezier bounding box]
+ \pic[bezier bounding box,local bounding box=box1,scale={\tkzbrushscale},#2] at (0,0) {ink\myfisrtchar} ;%
+ \foreach \i [count=\Y,evaluate=\Y as \Z using {int(\Y+1)}] in {2,...,\mynbofchars}{%
+ \StrChar{#3}{\i}[\mytmpchar]%
+ \IfStrEq{\mytmpchar}{ }%
+ {%
+ \edef\temp{\noexpand\pic[bezier bounding box,right=2mm of box\Y,local bounding box=box\Z,scale={\tkzbrushscale},#2] {inkspace};}
+ \temp%
+ }%
+ {%
+ \edef\temp{\noexpand\pic[bezier bounding box,right=2mm of box\Y,local bounding box=box\Z,scale={\tkzbrushscale},#2] {ink\mytmpchar};}
+ \temp%
+ }%
+ }%
+ \end{tikzpicture}%
+}
+
+
+%====PixlArt Words
+\def\lsteightbittikzA{0,1,1,1,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,0,0,0,1}%7C*5L
+\def\lsteightbittikzB{1,1,1,1,0,1,0,0,0,1,1,0,0,0,1,1,1,1,1,0,1,0,0,0,1,1,0,0,0,1,1,1,1,1,0}%7C*5L
+\def\lsteightbittikzC{0,1,1,1,0,1,0,0,0,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,1,1,1,0}
+\def\lsteightbittikzD{1,1,1,0,0,1,0,0,1,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,0,1,1,1,0,0}
+\def\lsteightbittikzE{1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,1,1,1,1}
+\def\lsteightbittikzF{1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0}
+\def\lsteightbittikzG{0,1,1,1,0,1,0,0,0,1,1,0,0,0,0,1,0,1,1,1,1,0,0,0,1,1,0,0,0,1,0,1,1,1,0}
+\def\lsteightbittikzH{1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1}
+\def\lsteightbittikzI{1,1,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,1,1}
+\def\lsteightbittikzJ{0,0,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,1,0,0,1,0,0,1,1,0,0}
+\def\lsteightbittikzK{1,0,0,0,1,1,0,0,1,0,1,0,1,0,0,1,1,0,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,1}
+\def\lsteightbittikzL{1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,1,1,1,1}
+\def\lsteightbittikzM{1,0,0,0,1,1,1,0,1,1,1,0,1,0,1,1,0,1,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1}
+\def\lsteightbittikzN{1,0,0,0,1,1,0,0,0,1,1,1,0,0,1,1,0,1,0,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,1}
+\def\lsteightbittikzO{0,1,1,1,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,0,1,1,1,0}
+\def\lsteightbittikzP{1,1,1,1,0,1,0,0,0,1,1,0,0,0,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0}
+\def\lsteightbittikzQ{0,1,1,1,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,1,0,1,1,0,0,1,0,0,1,1,0,1}
+\def\lsteightbittikzR{1,1,1,1,0,1,0,0,0,1,1,0,0,0,1,1,1,1,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,1}
+\def\lsteightbittikzS{0,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,0}
+\def\lsteightbittikzT{1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0}
+\def\lsteightbittikzU{1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,0,1,1,1,0}
+\def\lsteightbittikzV{1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0}
+\def\lsteightbittikzW{1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,0,1,0}
+\def\lsteightbittikzX{1,0,0,0,1,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,1,0,0,0,1}
+\def\lsteightbittikzY{1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0}
+\def\lsteightbittikzZ{1,1,1,1,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,1,1}
+\def\lsteightbittikza{0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,0,1,1,1,1,1,0,0,0,1,0,1,1,1,1}
+\def\lsteightbittikzaaccent{0,1,1,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,0,1,1,1,1,1,0,0,0,1,0,1,1,1,1}
+\def\lsteightbittikzaaigu{0,1,0,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,0,1,1,1,1,1,0,0,0,1,0,1,1,1,1}
+\def\lsteightbittikzb{1,0,0,0,0,1,0,0,0,0,1,0,1,1,0,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1,0}
+\def\lsteightbittikzc{0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,1,1,1,0}
+\def\lsteightbittikzd{0,0,0,0,1,0,0,0,0,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,1,0,1,1,1,1}
+\def\lsteightbittikze{0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,0}
+\def\lsteightbittikzeaccent{0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,0}
+\def\lsteightbittikzeaigu{0,1,0,1,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,0}
+\def\lsteightbittikzf{0,0,1,1,0,0,1,0,0,1,0,1,0,0,0,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0}
+\def\lsteightbittikzg{0,0,0,0,0,0,1,1,1,1,1,0,0,0,1,1,0,0,0,1,0,1,1,1,1,0,0,0,0,1,0,1,1,1,0}
+\def\lsteightbittikzh{1,0,0,0,0,1,0,0,0,0,1,0,1,1,0,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1}
+\def\lsteightbittikzi{0,1,0,0,0,0,1,1,0,0,1,0,0,1,0,0,1,0,1,1,1}
+\def\lsteightbittikziaccent{1,1,1,0,0,0,1,1,0,0,1,0,0,1,0,0,1,0,1,1,1}
+\def\lsteightbittikziaigu{1,0,1,0,0,0,1,1,0,0,1,0,0,1,0,0,1,0,1,1,1}
+\def\lsteightbittikzj{0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,1,0,1,1,0}
+\def\lsteightbittikzk{1,0,0,0,1,0,0,0,1,0,0,1,1,0,1,0,1,1,0,0,1,0,1,0,1,0,0,1}
+\def\lsteightbittikzl{1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,1,1}
+\def\lsteightbittikzm{0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,1,0,1,0,1,1,0,1,0,1,1,0,0,0,1,1,0,0,0,1}
+\def\lsteightbittikzn{0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1}
+\def\lsteightbittikzo{0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,0,1,1,1,0}
+\def\lsteightbittikzp{0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,0,0,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0}
+\def\lsteightbittikzq{0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1,1,0,1,1,1,1,0,0,0,0,1,0,0,0,0,1}
+\def\lsteightbittikzr{0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,1,0,0,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0}
+\def\lsteightbittikzs{0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,1,0}
+\def\lsteightbittikzt{0,1,0,0,0,0,1,0,0,0,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,1,0}
+\def\lsteightbittikzu{0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0,1}
+\def\lsteightbittikzv{0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,0,1,1,1,0,0,0,1,0,0}
+\def\lsteightbittikzw{0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,1,0}
+\def\lsteightbittikzx{0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1}
+\def\lsteightbittikzy{0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,1,0,1,1,1,1,0,0,0,0,1,0,1,1,1,0}
+\def\lsteightbittikzz{0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1}
+\def\lsteightbittikzzero{0,1,1,1,0,1,0,0,0,1,1,0,0,1,1,1,0,1,0,1,1,1,0,0,1,1,0,0,0,1,0,1,1,1,0}
+\def\lsteightbittikzun{0,1,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,1,1}
+\def\lsteightbittikzdeux{0,1,1,1,0,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1}
+\def\lsteightbittikztrois{1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,1,0,1,1,1,0}
+\def\lsteightbittikzquatre{0,0,0,1,0,0,0,1,1,0,0,1,0,1,0,1,0,0,1,0,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0}
+\def\lsteightbittikzcinq{1,1,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,1,0,1,1,1,0}
+\def\lsteightbittikzsix{0,0,1,1,0,0,1,0,0,0,1,0,0,0,0,1,1,1,1,0,1,0,0,0,1,1,0,0,0,1,0,1,1,1,0}
+\def\lsteightbittikzsept{1,1,1,1,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0}
+\def\lsteightbittikzhuit{0,1,1,1,0,1,0,0,0,1,1,0,0,0,1,0,1,1,1,0,1,0,0,0,1,1,0,0,0,1,0,1,1,1,0}
+\def\lsteightbittikzneuf{0,1,1,1,0,1,0,0,0,1,1,0,0,0,1,0,1,1,1,1,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0}
+\def\lsteightbittikzapostr{1,1,0,1,1,0,0,0,0,0,0,0,0}
+\def\lsteightbittikzparg{0,0,1,0,1,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,1}
+\def\lsteightbittikzpard{1,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0,0}
+\def\lsteightbittikzfois{0,0,0,0,0,0,0,1,0,0,1,0,1,0,1,0,1,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0}
+\def\lsteightbittikzplus{0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0}
+\def\lsteightbittikzvirgule{0,0,0,0,0,0,0,0,1,1,0,1,1,0}
+\def\lsteightbittikzmoins{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
+\def\lsteightbittikzpoint{0,0,0,0,0,0,0,0,0,0,1,1,1,1}
+\def\lsteightbittikzslash{0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0}
+\def\lsteightbittikzdeuxpoints{0,0,1,1,1,1,0,0,1,1,1,1,0,0}
+\def\lsteightbittikzpointvirg{0,0,1,1,1,1,0,0,1,1,0,1,1,0}
+\def\lsteightbittikzinf{0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0}
+\def\lsteightbittikzeggal{0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0}
+\def\lsteightbittikzsup{1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0}
+\def\lsteightbittikzinterro{0,1,1,1,0,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0}
+\def\lsteightbittikzexcla{1,1,1,1,1,0,1}
+\def\lsteightbittikzcrog{1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1}
+\def\lsteightbittikzgrod{1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1}
+\def\lsteightbittikzbarre{1,1,1,1,1,1,1}
+\def\lsteightbittikzspace{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
+
+\newlength{\eightbitpartthick}
+\newlength{\eightbitpartheight}
+\newlength{\eightbitpartunit}
+\setlength{\eightbitpartthick}{0.1mm}
+\setlength{\eightbitpartheight}{11mm}
+\setlength{\eightbitpartunit}{1mm}
+
+\defKV[eightbitpart]{%
+ %unit=\def\eightbitpartunit{#1},%
+ height=\setlength{\eightbitpartheight}{#1},%
+ thick=\setlength{\eightbitpartthick}{#1},%
+ color=\def\eightbitpartcolor{#1},%
+ gridcolor=\def\eightbitpartgridcolor{#1},%
+ offseth=\def\eightbitpartoffseth{#1},%
+ offsetv=\def\eightbitpartoffsetv{#1}%
+}
+
+\setKVdefault[eightbitpart]{%
+ height=11mm,%
+ thick=0.1mm,%
+ color=black,%
+ gridcolor=gray,
+ offseth=1,%
+ offsetv=2,%
+ gridafter=false,%
+ nospaceafter=false,%
+ border=false
+}
+
+\NewDocumentCommand\tkzpixletter{ }{%
+ \begingroup
+ \catcode`\;=12
+ \catcode`\:=12
+ \catcode`\!=12
+ \catcode`\?=12
+ \PixlLetterAux
+}
+
+\NewDocumentCommand\PixlLetterAux{ O{} D<>{} m }{%
+ \endgroup
+ \restoreKV[eightbitpart]%
+ \setKV[eightbitpart]{#1}%
+ \xdef\tmplarg{5}%
+ %MAJUSCULE
+ \IfStrEq{#3}{A}{\xdef\TMPLIST{\lsteightbittikzA}}{}%
+ \IfStrEq{#3}{B}{\xdef\TMPLIST{\lsteightbittikzB}}{}%
+ \IfStrEq{#3}{C}{\xdef\TMPLIST{\lsteightbittikzC}}{}%
+ \IfStrEq{#3}{D}{\xdef\TMPLIST{\lsteightbittikzD}}{}%
+ \IfStrEq{#3}{E}{\xdef\TMPLIST{\lsteightbittikzE}}{}%
+ \IfStrEq{#3}{F}{\xdef\TMPLIST{\lsteightbittikzF}}{}%
+ \IfStrEq{#3}{G}{\xdef\TMPLIST{\lsteightbittikzG}}{}%
+ \IfStrEq{#3}{H}{\xdef\TMPLIST{\lsteightbittikzH}}{}%
+ \IfStrEq{#3}{I}{\xdef\TMPLIST{\lsteightbittikzI}\xdef\tmplarg{3}}{}%
+ \IfStrEq{#3}{J}{\xdef\TMPLIST{\lsteightbittikzJ}}{}%
+ \IfStrEq{#3}{K}{\xdef\TMPLIST{\lsteightbittikzK}}{}%
+ \IfStrEq{#3}{L}{\xdef\TMPLIST{\lsteightbittikzL}}{}%
+ \IfStrEq{#3}{M}{\xdef\TMPLIST{\lsteightbittikzM}}{}%
+ \IfStrEq{#3}{N}{\xdef\TMPLIST{\lsteightbittikzN}}{}%
+ \IfStrEq{#3}{O}{\xdef\TMPLIST{\lsteightbittikzO}}{}%
+ \IfStrEq{#3}{P}{\xdef\TMPLIST{\lsteightbittikzP}}{}%
+ \IfStrEq{#3}{Q}{\xdef\TMPLIST{\lsteightbittikzQ}}{}%
+ \IfStrEq{#3}{R}{\xdef\TMPLIST{\lsteightbittikzR}}{}%
+ \IfStrEq{#3}{S}{\xdef\TMPLIST{\lsteightbittikzS}}{}%
+ \IfStrEq{#3}{T}{\xdef\TMPLIST{\lsteightbittikzT}}{}%
+ \IfStrEq{#3}{U}{\xdef\TMPLIST{\lsteightbittikzU}}{}%
+ \IfStrEq{#3}{V}{\xdef\TMPLIST{\lsteightbittikzV}}{}%
+ \IfStrEq{#3}{W}{\xdef\TMPLIST{\lsteightbittikzW}}{}%
+ \IfStrEq{#3}{X}{\xdef\TMPLIST{\lsteightbittikzX}}{}%
+ \IfStrEq{#3}{Y}{\xdef\TMPLIST{\lsteightbittikzY}}{}%
+ \IfStrEq{#3}{Z}{\xdef\TMPLIST{\lsteightbittikzZ}}{}%
+ %minuscule
+ \IfStrEq{#3}{a}{\xdef\TMPLIST{\lsteightbittikza}}{}%
+ \IfStrEq{#3}{à}{\xdef\TMPLIST{\lsteightbittikzaaccent}}{}%
+ \IfStrEq{#3}{ä}{\xdef\TMPLIST{\lsteightbittikzaaigu}}{}%
+ \IfStrEq{#3}{b}{\xdef\TMPLIST{\lsteightbittikzb}}{}%
+ \IfStrEq{#3}{c}{\xdef\TMPLIST{\lsteightbittikzc}}{}%
+ \IfStrEq{#3}{d}{\xdef\TMPLIST{\lsteightbittikzd}}{}%
+ \IfStrEq{#3}{e}{\xdef\TMPLIST{\lsteightbittikze}}{}%
+ \IfStrEq{#3}{é}{\xdef\TMPLIST{\lsteightbittikzeaccent}}{}%
+ \IfStrEq{#3}{è}{\xdef\TMPLIST{\lsteightbittikzeaccent}}{}%
+ \IfStrEq{#3}{ê}{\xdef\TMPLIST{\lsteightbittikzeaccent}}{}%
+ \IfStrEq{#3}{ë}{\xdef\TMPLIST{\lsteightbittikzeaigu}}{}%
+ \IfStrEq{#3}{f}{\xdef\TMPLIST{\lsteightbittikzf}}{}%
+ \IfStrEq{#3}{g}{\xdef\TMPLIST{\lsteightbittikzg}}{}%
+ \IfStrEq{#3}{h}{\xdef\TMPLIST{\lsteightbittikzh}}{}%
+ \IfStrEq{#3}{i}{\xdef\TMPLIST{\lsteightbittikzi}\xdef\tmplarg{3}}{}%
+ \IfStrEq{#3}{î}{\xdef\TMPLIST{\lsteightbittikziaccent}\xdef\tmplarg{3}}{}%
+ \IfStrEq{#3}{ï}{\xdef\TMPLIST{\lsteightbittikziaigu}\xdef\tmplarg{3}}{}%
+ \IfStrEq{#3}{j}{\xdef\TMPLIST{\lsteightbittikzj}\xdef\tmplarg{4}}{}%
+ \IfStrEq{#3}{k}{\xdef\TMPLIST{\lsteightbittikzk}\xdef\tmplarg{4}}{}%
+ \IfStrEq{#3}{l}{\xdef\TMPLIST{\lsteightbittikzl}\xdef\tmplarg{3}}{}%
+ \IfStrEq{#3}{m}{\xdef\TMPLIST{\lsteightbittikzm}}{}%
+ \IfStrEq{#3}{n}{\xdef\TMPLIST{\lsteightbittikzn}}{}%
+ \IfStrEq{#3}{o}{\xdef\TMPLIST{\lsteightbittikzo}}{}%
+ \IfStrEq{#3}{p}{\xdef\TMPLIST{\lsteightbittikzp}}{}%
+ \IfStrEq{#3}{q}{\xdef\TMPLIST{\lsteightbittikzq}}{}%
+ \IfStrEq{#3}{r}{\xdef\TMPLIST{\lsteightbittikzr}}{}%
+ \IfStrEq{#3}{s}{\xdef\TMPLIST{\lsteightbittikzs}}{}%
+ \IfStrEq{#3}{t}{\xdef\TMPLIST{\lsteightbittikzt}}{}%
+ \IfStrEq{#3}{u}{\xdef\TMPLIST{\lsteightbittikzu}}{}%
+ \IfStrEq{#3}{v}{\xdef\TMPLIST{\lsteightbittikzv}}{}%
+ \IfStrEq{#3}{w}{\xdef\TMPLIST{\lsteightbittikzw}}{}%
+ \IfStrEq{#3}{x}{\xdef\TMPLIST{\lsteightbittikzx}}{}%
+ \IfStrEq{#3}{y}{\xdef\TMPLIST{\lsteightbittikzy}}{}%
+ \IfStrEq{#3}{z}{\xdef\TMPLIST{\lsteightbittikzz}}{}%
+ %chiffres
+ \IfStrEq{#3}{0}{\xdef\TMPLIST{\lsteightbittikzzero}}{}%
+ \IfStrEq{#3}{1}{\xdef\TMPLIST{\lsteightbittikzun}\xdef\tmplarg{3}}{}%
+ \IfStrEq{#3}{2}{\xdef\TMPLIST{\lsteightbittikzdeux}}{}%
+ \IfStrEq{#3}{3}{\xdef\TMPLIST{\lsteightbittikztrois}}{}%
+ \IfStrEq{#3}{4}{\xdef\TMPLIST{\lsteightbittikzquatre}}{}%
+ \IfStrEq{#3}{5}{\xdef\TMPLIST{\lsteightbittikzcinq}}{}%
+ \IfStrEq{#3}{6}{\xdef\TMPLIST{\lsteightbittikzsix}}{}%
+ \IfStrEq{#3}{7}{\xdef\TMPLIST{\lsteightbittikzsept}}{}%
+ \IfStrEq{#3}{8}{\xdef\TMPLIST{\lsteightbittikzhuit}}{}%
+ \IfStrEq{#3}{9}{\xdef\TMPLIST{\lsteightbittikzneuf}}{}%
+ %ponctuation
+ \IfStrEq{#3}{'}{\xdef\TMPLIST{\lsteightbittikzapostr}\xdef\tmplarg{2}}{}%
+ \IfStrEq{#3}{(}{\xdef\TMPLIST{\lsteightbittikzparg}\xdef\tmplarg{3}}{}%
+ \IfStrEq{#3}{)}{\xdef\TMPLIST{\lsteightbittikzpard}\xdef\tmplarg{3}}{}%
+ \IfStrEq{#3}{*}{\xdef\TMPLIST{\lsteightbittikzfois}}{}%
+ \IfStrEq{#3}{+}{\xdef\TMPLIST{\lsteightbittikzplus}}{}%
+ \IfStrEq{#3}{,}{\xdef\TMPLIST{\lsteightbittikzvirgule}\xdef\tmplarg{2}}{}%
+ \IfStrEq{#3}{-}{\xdef\TMPLIST{\lsteightbittikzmoins}}{}%
+ \IfStrEq{#3}{.}{\xdef\TMPLIST{\lsteightbittikzpoint}\xdef\tmplarg{2}}{}%
+ \IfStrEq{#3}{/}{\xdef\TMPLIST{\lsteightbittikzslash}}{}%
+ \IfStrEq{#3}{:}{\xdef\TMPLIST{\lsteightbittikzdeuxpoints}\xdef\tmplarg{2}}{}%
+ \IfStrEq{#3}{;}{\xdef\TMPLIST{\lsteightbittikzpointvirg}\xdef\tmplarg{2}}{}%
+ \IfStrEq{#3}{<}{\xdef\TMPLIST{\lsteightbittikzinf}}{}%
+ \IfStrEq{#3}{=}{\xdef\TMPLIST{\lsteightbittikzeggal}}{}%
+ \IfStrEq{#3}{>}{\xdef\TMPLIST{\lsteightbittikzsup}}{}%
+ \IfStrEq{#3}{?}{\xdef\TMPLIST{\lsteightbittikzinterro}}{}%
+ \IfStrEq{#3}{!}{\xdef\TMPLIST{\lsteightbittikzexcla}\xdef\tmplarg{1}}{}%
+ \IfStrEq{#3}{[}{\xdef\TMPLIST{\lsteightbittikzcrog}\xdef\tmplarg{3}}{}%
+ \IfStrEq{#3}{]}{\xdef\TMPLIST{\lsteightbittikzgrod}\xdef\tmplarg{3}}{}%
+ \IfStrEq{#3}{|}{\xdef\TMPLIST{\lsteightbittikzbarre}\xdef\tmplarg{1}}{}%
+ \IfStrEq{#3}{ }{\xdef\TMPLIST{\lsteightbittikzspace}\xdef\tmplarg{3}}{}%
+ %la case !
+ \xdef\tmpnumbercasesv{\inteval{7+2*\eightbitpartoffsetv}}%
+ \pgfmathsetlength{\eightbitpartunit}{\eightbitpartheight/\tmpnumbercasesv}%
+ %tikzpicture
+ \begin{tikzpicture}[line cap=rect,x=\eightbitpartunit,y=\eightbitpartunit,line width=\eightbitpartthick,#2]
+ %clipping ?
+ %\clip ([shift={(-0.5\eightbitpartthick,-0.5\eightbitpartthick)}]{-\eightbitpartoffseth},{-\eightbitpartoffsetv}) rectangle ([shift={(0.5\eightbitpartthick,0.5\eightbitpartthick)}]{\tmplarg+\eightbitpartoffseth},{7+\eightbitpartoffsetv}) ;
+ %gridbefore
+ \ifboolKV[eightbitpart]{gridafter}%
+ {}%
+ {%
+ \foreach \x in {-\eightbitpartoffseth,...,\numexpr\tmplarg+\eightbitpartoffseth\relax}
+ {%
+ \draw[line width=\eightbitpartthick,\eightbitpartgridcolor] (\x,{-\eightbitpartoffsetv}) --++ (0,{7+2*\eightbitpartoffsetv}) ;
+ }%
+ \foreach \y in {-\eightbitpartoffsetv,...,\numexpr7+\eightbitpartoffseth+\eightbitpartoffseth\relax}
+ {%
+ \draw[line width=\eightbitpartthick,\eightbitpartgridcolor] ({-\eightbitpartoffseth},\y) --++ ({\tmplarg+2*\eightbitpartoffseth},0) ;
+ }%
+ }%
+ \ifnum\tmplarg=1%
+ \foreach \i [count=\j] in \TMPLIST {%
+ \ifnum\i=1%
+ \fill[\eightbitpartcolor] (0,{7-\j}) rectangle++ (1,1) ;
+ \fi%
+ }%
+ \fi%
+ \ifnum\tmplarg=2%
+ \foreach \i [count=\j] in \TMPLIST {%
+ \ifnum\i=1%
+ \xintifboolexpr{ \xintiiOdd{\j} == 1 }%
+ {%si c'est impair
+ \xdef\tmpX{0}%
+ \xdef\tmpY{\xintieval{(\j-1)/2}}%
+ }%
+ {%si c'est pair
+ \xdef\tmpX{1}%
+ \xdef\tmpY{\xintieval{(\j)/2-1}}%
+ }%
+ \fill[\eightbitpartcolor] ({\tmpX},{6-\tmpY}) rectangle++ (1,1) ;
+ \fi%
+ }%
+ \fi%
+ \ifnum\tmplarg>2%
+ \foreach \i [count=\j] in \TMPLIST {%
+ \ifnum\i=1%
+ \xdef\tmpX{\xintiiRem{\j-1}{\tmplarg}}%
+ \xdef\tmpY{\xintiiQuo{\j-1}{\tmplarg}}%
+ \fill[\eightbitpartcolor] ({\tmpX},{6-\tmpY}) rectangle++ (1,1) ;
+ \fi%
+ }%
+ \fi%
+ %gridafter
+ \ifboolKV[eightbitpart]{gridafter}%
+ {%
+ \foreach \x in {-\eightbitpartoffseth,...,\numexpr\tmplarg+\eightbitpartoffseth\relax}
+ {%
+ \draw[line width=\eightbitpartthick,\eightbitpartgridcolor] (\x,{-\eightbitpartoffsetv}) --++ (0,{7+2*\eightbitpartoffsetv}) ;
+ }%
+ \foreach \y in {-\eightbitpartoffsetv,...,\numexpr7+\eightbitpartoffseth+\eightbitpartoffseth\relax}
+ {%
+ \draw[line width=\eightbitpartthick,\eightbitpartgridcolor] ({-\eightbitpartoffseth},\y) --++ ({\tmplarg+2*\eightbitpartoffseth},0) ;
+ }%
+ }%
+ {}%
+ \end{tikzpicture}%
+ \ifboolKV[eightbitpart]{nospaceafter}{\hspace*{-\eightbitpartthick}}{}%
+}
+
+\NewDocumentCommand\tkzpixlquote{ O{} D<>{} }{%
+ \restoreKV[eightbitpart]%
+ \setKV[eightbitpart]{#1}%
+ \xdef\tmplarg{2}%
+ \xdef\tmpnumbercasesv{\inteval{7+2*\eightbitpartoffsetv}}%
+ \pgfmathsetlength{\eightbitpartunit}{\eightbitpartheight/\tmpnumbercasesv}%
+ \begin{tikzpicture}[line cap=rect,x=\eightbitpartunit,y=\eightbitpartunit,line width=\eightbitpartthick,#2]
+ %clipping ?
+ %\clip ({-\eightbitpartoffseth},{-\eightbitpartoffsetv}) rectangle ({\tmplarg+\eightbitpartoffseth},{7+\eightbitpartoffsetv}) ;
+ %gridbefore
+ \ifboolKV[eightbitpart]{gridafter}%
+ {}%
+ {%
+ \foreach \x in {-\eightbitpartoffseth,...,\numexpr\tmplarg+\eightbitpartoffseth\relax}
+ {%
+ \draw[line width=\eightbitpartthick,\eightbitpartgridcolor] (\x,{-\eightbitpartoffsetv}) --++ (0,{7+2*\eightbitpartoffsetv}) ;
+ }%
+ \foreach \y in {-\eightbitpartoffsetv,...,\numexpr7+\eightbitpartoffseth+\eightbitpartoffseth\relax}
+ {%
+ \draw[line width=\eightbitpartthick,\eightbitpartgridcolor] ({-\eightbitpartoffseth},\y) --++ ({\tmplarg+2*\eightbitpartoffseth},0) ;
+ }%
+ }%
+ \fill[\eightbitpartcolor] ({0},{6}) rectangle++ (1,1) ;
+ \fill[\eightbitpartcolor] ({1},{6}) rectangle++ (1,1) ;
+ \fill[\eightbitpartcolor] ({1},{5}) rectangle++ (1,1) ;
+ \fill[\eightbitpartcolor] ({0},{4}) rectangle++ (1,1) ;
+ %gridafter
+ \ifboolKV[eightbitpart]{gridafter}%
+ {%
+ \foreach \x in {-\eightbitpartoffseth,...,\numexpr\tmplarg+\eightbitpartoffseth\relax}
+ {%
+ \draw[line width=\eightbitpartthick,\eightbitpartgridcolor] (\x,{-\eightbitpartoffsetv}) --++ (0,{7+2*\eightbitpartoffsetv}) ;
+ }%
+ \foreach \y in {-\eightbitpartoffsetv,...,\numexpr7+\eightbitpartoffseth+\eightbitpartoffseth\relax}
+ {%
+ \draw[line width=\eightbitpartthick,\eightbitpartgridcolor] ({-\eightbitpartoffseth},\y) --++ ({\tmplarg+2*\eightbitpartoffseth},0) ;
+ }%
+ }%
+ {}%
+ \end{tikzpicture}%
+ \ifboolKV[eightbitpart]{nospaceafter}{\hspace*{-2\eightbitpartthick}}{}%
+}
+
+\NewDocumentCommand\tkzpixl{ }{%
+ \begingroup
+ \catcode`\;=12
+ \catcode`\:=12
+ \catcode`\!=12
+ \catcode`\?=12
+ \PixlLettersAux
+}
+
+\NewDocumentCommand\PixlLettersAux{ O{} D<>{} m }{%
+ \endgroup
+ \setKV[eightbitpart]{#1}%
+ \StrLen{#3}[\tmpnbcaract]%
+ \ifboolKV[eightbitpart]{border}%
+ {%
+ \setlength{\fboxrule}{1.75\eightbitpartthick}%
+ \setlength{\fboxsep}{-\eightbitpartthick}%
+ \fbox{%
+ \foreach \i in {1,...,\tmpnbcaract}{%
+ \StrChar{#3}{\i}[\tmpcaract]%
+ \tkzpixletter[#1]<#2>{\tmpcaract}%
+ \ifnum\i<\tmpnbcaract\hspace*{-\eightbitpartthick}\fi%
+ }%
+ }%
+ \ifboolKV[eightbitpart]{nospaceafter}{\hspace*{-\eightbitpartthick}}{}%
+ \fboxrule=0.4pt%
+ \fboxsep=3.0pt%
+ }%
+ {%
+ \foreach \i in {1,...,\tmpnbcaract}{%
+ \StrChar{#3}{\i}[\tmpcaract]%
+ \tkzpixletter[#1]<#2>{\tmpcaract}%
+ \ifnum\i<\tmpnbcaract\hspace*{-\eightbitpartthick}\fi%
+ \ifboolKV[eightbitpart]{nospaceafter}{\hspace*{-\eightbitpartthick}}{}%
+ }%
+ }%
+}
+
+%====BICOLORTXT
+\defKV[bicolortxt]{colors=\def\bicolortxtcols{#1},style=\def\bicolortxtsttyle{#1},intdelta=\def\bicolortxtdelta{#1},paralcolors=\def\bicolortxtcolstrapez{#1}}
+\setKVdefault[bicolortxt]{colors={red/blue},style=midh,intdelta=0.66,paralcolors={red/blue/orange/gray}}
+
+\NewDocumentCommand\tkzbicolor{ O{} m }{%
+ \restoreKV[bicolortxt]%
+ \setKV[bicolortxt]{#1}%
+ \IfStrEq{\bicolortxtsttyle}{paral}%
+ {%
+ \setsepchar[.]{/}%
+ \readlist*\bicolortrapez{\bicolortxtcolstrapez}%
+ }%
+ {%
+ \StrCut{\bicolortxtcols}{/}{\bicolorabove}{\bicolorbelow}%
+ }%
+ \tikz[baseline=(l.base),inner sep=0pt,outer sep=0pt]{%
+ \node[inner sep=0pt,outer sep=0pt](l){\phantom{#2}};
+ \coordinate (lnw) at ([shift={(-0.5\pgflinewidth,0.5\pgflinewidth)}]l.north west) ;
+ \coordinate (ln) at ([shift={(0,0.5\pgflinewidth)}]l.north) ;
+ \coordinate (lne) at ([shift={(0.5\pgflinewidth,0.5\pgflinewidth)}]l.north east) ;
+ \coordinate (le) at ([shift={(0.5\pgflinewidth,0)}]l.east) ;
+ \coordinate (lse) at ([shift={(0.5\pgflinewidth,-0.5\pgflinewidth)}]l.south east) ;
+ \coordinate (ls) at ([shift={(0,-0.5\pgflinewidth)}]l.south) ;
+ \coordinate (lsw) at ([shift={(-0.5\pgflinewidth,-0.5\pgflinewidth)}]l.south west) ;
+ \coordinate (lw) at ([shift={(-0.5\pgflinewidth,0)}]l.west) ;
+ \IfStrEqCase{\bicolortxtsttyle}{%
+ {ellips}%
+ {%
+ \coordinate (lcircn) at ($(l.center)!\bicolortxtdelta!(l.north)$) ;
+ \coordinate (lcirce) at ($(l.center)!\bicolortxtdelta!(l.east)$) ;
+ }%
+ {rect}%
+ {%
+ \coordinate (lrectnw) at ($(l.center)!\bicolortxtdelta!(l.north west)$) ;
+ \coordinate (lrectse) at ($(l.center)!\bicolortxtdelta!(l.south east)$) ;
+ }%
+ {paral}%
+ {%
+ \coordinate (ltrapna) at ($(l.north west)!0.333!(l.north east)$) ;
+ \coordinate (ltrapnb) at ($(l.north west)!0.666!(l.north east)$) ;
+ \coordinate (ltrapsa) at ($(l.south west)!0.333!(l.south east)$) ;
+ \coordinate (ltrapsb) at ($(l.south west)!0.666!(l.south east)$) ;
+ }%
+ }%
+ \begin{scope}
+ \IfStrEqCase{\bicolortxtsttyle}{%
+ {midh}{\clip(ls)rectangle(lnw);\node[\bicolorabove]at(l){#2};}%
+ {midv}{\clip(lnw)rectangle(le);\node[\bicolorabove]at(l){#2};}%
+ {ndiag}{\clip(lnw)--(lne)--(lse)--cycle;\node[\bicolorabove]at(l){#2};}%
+ {sdiag}{\clip(lsw)--(lnw)--(lne)--cycle;\node[\bicolorabove]at(l){#2};}%
+ {ellips}{\clip(lsw)rectangle(lne);\node[\bicolorabove]at(l){#2};}%
+ {rect}{\clip(lsw)rectangle(lne);\node[\bicolorabove]at(l){#2};}%
+ {paral}{\clip(lsw)--(lnw)--(ltrapna)--cycle;\node[{\bicolortrapez[1]}]at(l){#2};}%
+ }%
+ \end{scope}
+ \begin{scope}
+ \IfStrEqCase{\bicolortxtsttyle}{%
+ {midh}{\clip(ls)rectangle(lne);\node[\bicolorbelow]at(l){#2};}%
+ {midv}{\clip(lsw)rectangle(le);\node[\bicolorbelow]at(l){#2};}%
+ {ndiag}{\clip(lsw)--(lnw)--(lse)--cycle;\node[\bicolorbelow]at(l){#2};}%
+ {sdiag}{\clip(lsw)--(lne)--(lse)--cycle;\node[\bicolorbelow]at(l){#2};}%
+ {ellips}{\clip(lsw)rectangle(lne);\pgfpathellipse{\pgfpointanchor{l}{center}}{\pgfpointanchor{lcirce}{center}}{\pgfpointanchor{lcircn}{center}}\pgfusepath{clip}\node[\bicolorbelow]at(l){#2};}%
+ {rect}{\clip(lrectnw)rectangle(lrectse);\node[\bicolorbelow]at(l){#2};}%
+ {paral}{\clip(lsw)--(ltrapna)--(ltrapnb)--(ltrapsa)--cycle;\node[{\bicolortrapez[2]}]at(l){#2};}%
+ }%
+ \end{scope}
+ \IfStrEq{\bicolortxtsttyle}{paral}%
+ {%
+ \begin{scope}%3
+ \clip(ltrapsa)--(ltrapnb)--(lne)--(ltrapsb)--cycle;\node[{\bicolortrapez[3]}]at(l){#2};
+ \end{scope}
+ \begin{scope}%
+ \clip(ltrapsb)--(lne)--(lse)--cycle;\node[{\bicolortrapez[4]}]at(l){#2};
+ \end{scope}
+ }%
+ {}%
+ }%
+}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikz-triminos/tikz-triminos.sty b/Master/texmf-dist/tex/latex/tikz-triminos/tikz-triminos.sty
new file mode 100644
index 00000000000..95e0c32836f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tikz-triminos/tikz-triminos.sty
@@ -0,0 +1,179 @@
+% Author : C. Pierquet
+% licences : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+% Inspiration.....: https://schule.paul-matthies.de/Trimino.php (CC BY-NC-SA 4.0)
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{tikz-triminos}[2025/01/20 0.1.0 triminos, made with TikZ]
+
+%------History
+% 0.1.0 Initial version
+
+%------Packages and library
+\RequirePackage{tikz}
+\usetikzlibrary{calc,decorations.text}
+\RequirePackage{xstring}
+\RequirePackage{fontawesome5}
+\RequirePackage{ifthen}
+\RequirePackage{settobox}
+\RequirePackage{simplekv}
+\RequirePackage{listofitems}
+
+%------tikz styles
+\tikzset{tkztriminoside/.style={thick}}
+\tikzset{tkztriminolabel/.style={font=\tkztriminofont,inner sep=1pt}}
+\tikzset{tkztriminosidedeco/.style={semithick,draw=black,fill=\tkztriminocolor}}
+
+%------lengths
+\newlength{\tkztriminotmpnode}
+\newlength{\tkztriminosize}
+\newsavebox{\tkztriminobox}
+
+%------keys
+\defKV[tkztrimino]{%
+ size=\setlength\tkztriminosize{#1},
+ font=\def\tkztriminofont{#1},
+ decocolor=\def\tkztriminocolor{#1},
+ bgcolor=\def\tkztriminobgcolor{#1},%
+ txtlogo=\def\tkztriminotxtlogo{#1},%
+ iconlogo=\def\tkztriminoiconlogo{#1},%
+ scaledeco=\def\tkztriminostar{#1},%
+ fontdeco=\def\tkztriminodecofont{#1}
+}
+\setKVdefault[tkztrimino]{%
+ size=5cm,%
+ font=\Large,%
+ decocolor=lightgray,%
+ decoration=true,%
+ showtxtlogo=false,%
+ showiconlogo=false,%
+ bgcolor={},%
+ txtlogo={TriMino~TriMino~TriMino~},%
+ iconlogo={\scalebox{2}[2]{\textcolor{darkgray}{\faBahai}}},%
+ scaledeco=0.25,%
+ fontdeco={\tiny\sffamily}
+}
+
+%------internal macro
+\NewDocumentCommand\inttrimino{ m m m }{%
+ \begin{scope}[shift={#1},rotate=#2,transform shape,line join=round]
+ \IfEq{\tkztriminobgcolor}{}%
+ {%
+ \draw[tkztriminoside] (0,0) --++ (60:{\tkztriminosize}) --++ (-60:{\tkztriminosize}) -- cycle ;
+ }%
+ {%
+ \draw[fill=\tkztriminobgcolor,tkztriminoside] (0,0) --++ (60:{\tkztriminosize}) --++ (-60:{\tkztriminosize}) -- cycle ;
+ }%
+ \ifboolKV[tkztrimino]{decoration}%
+ {%
+ \draw[tkztriminosidedeco] (0,0) --++ (60:{\tkztriminostar\tkztriminosize}) -- (30:{\tkztriminostaralt\tkztriminosize}) -- (0:{\tkztriminostar\tkztriminosize}) -- cycle ;
+ \begin{scope}[shift={(0:{\tkztriminosize})},rotate=120]
+ \fill[tkztriminosidedeco] (0,0) --++ (60:{\tkztriminostar\tkztriminosize}) -- (30:{\tkztriminostaralt\tkztriminosize}) -- (0:{\tkztriminostar\tkztriminosize}) -- cycle ;
+ \end{scope}
+ \begin{scope}[shift={(60:{\tkztriminosize})},rotate=-120]
+ \fill[tkztriminosidedeco] (0,0) --++ (60:{\tkztriminostar\tkztriminosize}) -- (30:{\tkztriminostaralt\tkztriminosize}) -- (0:{\tkztriminostar\tkztriminosize}) -- cycle ;
+ \end{scope}
+ }%
+ {}%
+ \ifboolKV[tkztrimino]{showtxtlogo}%
+ {%
+ \path[decorate,decoration={text along path,text={|\tkztriminodecofont|\tkztriminotxtlogo},text align=fit to path}] (30:{sqrt(3)/3*\tkztriminosize}) circle[radius=0.085\tkztriminosize];
+ }%
+ {}%
+ \ifboolKV[tkztrimino]{showiconlogo}%
+ {%
+ \draw (30:{sqrt(3)/3*\tkztriminosize}) node {\tkztriminoiconlogo};
+ }%
+ {}%
+ \foreach \tkztext [count=\i] in {#3}{
+ \ifnum\i=1
+ \sbox{\tkztriminobox}{\pgfinterruptpicture \tkztriminofont\tkztext\endpgfinterruptpicture}\settoboxwidth{\tkztriminotmpnode}{\tkztriminobox}
+ \ifthenelse{\lengthtest{\tkztriminotmpnode < \fpeval{1-2*\tkztriminostar}\tkztriminosize}}%
+ {%
+ \path (60:{\tkztriminosize}) -- (0,0) node[midway,sloped,above,tkztriminolabel,rotate=180] {\strut\tkztext} ;
+ }%
+ {%
+ \path (60:{\tkztriminosize}) -- (0,0) node[midway,sloped,above,tkztriminolabel,rotate=180] {\strut\resizebox{\fpeval{1-2*\tkztriminostar}\tkztriminosize}{!}{\tkztext}} ;
+ }%
+ \fi
+ \ifnum\i=2
+ \sbox{\tkztriminobox}{\pgfinterruptpicture \tkztriminofont\tkztext\endpgfinterruptpicture}\settoboxwidth{\tkztriminotmpnode}{\tkztriminobox}
+ \ifthenelse{\lengthtest{\tkztriminotmpnode < \fpeval{1-2*\tkztriminostar}\tkztriminosize}}%
+ {%
+ \path (0,0) -- ({\tkztriminosize},0) node[midway,sloped,above,tkztriminolabel] {\strut\tkztext} ;
+ }%
+ {%
+ \path (0,0) -- ({\tkztriminosize},0) node[midway,sloped,above,tkztriminolabel] {\strut\resizebox{\fpeval{1-2*\tkztriminostar}\tkztriminosize}{!}{\tkztext}} ;
+ }%
+ \fi
+ \ifnum\i=3
+ \sbox{\tkztriminobox}{\pgfinterruptpicture \tkztriminofont\tkztext\endpgfinterruptpicture}\settoboxwidth{\tkztriminotmpnode}{\tkztriminobox}
+ \ifthenelse{\lengthtest{\tkztriminotmpnode < \fpeval{1-2*\tkztriminostar}\tkztriminosize}}%
+ {%
+ \path ({\tkztriminosize},0) -- (60:{\tkztriminosize}) node[midway,sloped,above,tkztriminolabel,rotate=180] {\strut\tkztext} ;
+ }%
+ {%
+ \path ({\tkztriminosize},0) -- (60:{\tkztriminosize}) node[midway,sloped,above,tkztriminolabel,rotate=180] {\strut\resizebox{\fpeval{1-2*\tkztriminostar}\tkztriminosize}{!}{\tkztext}} ; ;
+ }%
+ \fi
+ }
+ \end{scope}
+}
+
+%------main macro
+\NewDocumentCommand\tkztriminos{ O{} D<>{} m }{%
+ \restoreKV[tkztrimino]%
+ \setKV[tkztrimino]{#1}%
+ \xdef\tkztriminostaralt{\fpeval{0.5*(\tkztriminostar)}}%
+ \setsepchar{§}%
+ \readlist*\listitemstrimino{#3}%
+ \begin{tikzpicture}[#2]
+ \ifnum\listitemstriminolen=3
+ %only one
+ \inttrimino{(0,0)}{0}{\listitemstrimino[1],\listitemstrimino[2],\listitemstrimino[3]}
+ \fi
+ \ifnum\listitemstriminolen=19
+ %with 9 triminos (5 jokers)
+ \inttrimino{(0,0)}{0}{\listitemstrimino[-1],\listitemstrimino[7],\listitemstrimino[3]}
+ \inttrimino{(0:{\tkztriminosize})}{60}{\listitemstrimino[4],\listitemstrimino[6],\listitemstrimino[2]}
+ \inttrimino{(0:{\tkztriminosize})}{0}{\listitemstrimino[5],\listitemstrimino[9],\listitemstrimino[-1]}
+ \inttrimino{(0,0)}{-60}{\listitemstrimino[8],\listitemstrimino[12],\listitemstrimino[14]}
+ \inttrimino{(0:{\tkztriminosize})}{-120}{\listitemstrimino[15],\listitemstrimino[13],\listitemstrimino[-1]}
+ \inttrimino{(0:{\tkztriminosize})}{-60}{\listitemstrimino[10],\listitemstrimino[16],\listitemstrimino[18]}
+ \inttrimino{(-60:{\tkztriminosize})}{-60}{\listitemstrimino[1],\listitemstrimino[-1],\listitemstrimino[-1]}
+ \inttrimino{(-60:{\tkztriminosize})}{-120}{\listitemstrimino[-1],\listitemstrimino[11],\listitemstrimino[-1]}
+ \inttrimino{(-30:{sqrt(3)*\tkztriminosize})}{-120}{\listitemstrimino[17],\listitemstrimino[-1],\listitemstrimino[-1]}
+ \fi
+ \ifnum\listitemstriminolen=25
+ %with 12 triminos (10 jokers)
+ \inttrimino{(0,0)}{0}{\listitemstrimino[13],\listitemstrimino[11],\listitemstrimino[1]}
+ \inttrimino{(0:{\tkztriminosize})}{60}{\listitemstrimino[2],\listitemstrimino[4],\listitemstrimino[16]}
+ \inttrimino{(0:{\tkztriminosize})}{0}{\listitemstrimino[3],\listitemstrimino[5],\listitemstrimino[17]}
+ \inttrimino{(0,0)}{-60}{\listitemstrimino[12],\listitemstrimino[24],\listitemstrimino[10]}
+ \inttrimino{(0:{\tkztriminosize})}{-120}{\listitemstrimino[7],\listitemstrimino[9],\listitemstrimino[21]}
+ \inttrimino{(0:{\tkztriminosize})}{-60}{\listitemstrimino[6],\listitemstrimino[8],\listitemstrimino[20]}
+ \inttrimino{(-60:{\tkztriminosize})}{-60}{\listitemstrimino[22],\listitemstrimino[-1],\listitemstrimino[-1]}
+ \inttrimino{(-60:{\tkztriminosize})}{-120}{\listitemstrimino[-1],\listitemstrimino[23],\listitemstrimino[-1]}
+ \inttrimino{(-30:{sqrt(3)*\tkztriminosize})}{-120}{\listitemstrimino[19],\listitemstrimino[-1],\listitemstrimino[-1]}
+ \inttrimino{(-60:{2*\tkztriminosize})}{-120}{\listitemstrimino[-1],\listitemstrimino[-1],\listitemstrimino[15]}
+ \inttrimino{(-60:{2*\tkztriminosize})}{-60}{\listitemstrimino[-1],\listitemstrimino[-1],\listitemstrimino[18]}
+ \inttrimino{(-60:{2*\tkztriminosize})}{-180}{\listitemstrimino[-1],\listitemstrimino[-1],\listitemstrimino[14]}
+ \fi
+ \ifnum\listitemstriminolen=36
+ %with 12 triminos tous remplis
+ \inttrimino{(0,0)}{0}{\listitemstrimino[13],\listitemstrimino[11],\listitemstrimino[1]}
+ \inttrimino{(0:{\tkztriminosize})}{60}{\listitemstrimino[2],\listitemstrimino[4],\listitemstrimino[16]}
+ \inttrimino{(0:{\tkztriminosize})}{0}{\listitemstrimino[3],\listitemstrimino[5],\listitemstrimino[17]}
+ \inttrimino{(0,0)}{-60}{\listitemstrimino[12],\listitemstrimino[24],\listitemstrimino[10]}
+ \inttrimino{(0:{\tkztriminosize})}{-120}{\listitemstrimino[7],\listitemstrimino[9],\listitemstrimino[21]}
+ \inttrimino{(0:{\tkztriminosize})}{-60}{\listitemstrimino[6],\listitemstrimino[8],\listitemstrimino[20]}
+ \inttrimino{(-60:{\tkztriminosize})}{-60}{\listitemstrimino[22],\listitemstrimino[31],\listitemstrimino[25]}
+ \inttrimino{(-60:{\tkztriminosize})}{-120}{\listitemstrimino[32],\listitemstrimino[23],\listitemstrimino[33]}
+ \inttrimino{(-30:{sqrt(3)*\tkztriminosize})}{-120}{\listitemstrimino[19],\listitemstrimino[26],\listitemstrimino[35]}
+ \inttrimino{(-60:{2*\tkztriminosize})}{-120}{\listitemstrimino[30],\listitemstrimino[28],\listitemstrimino[15]}
+ \inttrimino{(-60:{2*\tkztriminosize})}{-60}{\listitemstrimino[36],\listitemstrimino[29],\listitemstrimino[18]}
+ \inttrimino{(-60:{2*\tkztriminosize})}{-180}{\listitemstrimino[27],\listitemstrimino[34],\listitemstrimino[14]}
+ \fi
+ \end{tikzpicture}%
+}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikz3d-fr/tikz3d-fr.sty b/Master/texmf-dist/tex/latex/tikz3d-fr/tikz3d-fr.sty
index 5056c951a87..b6d4e20829f 100644
--- a/Master/texmf-dist/tex/latex/tikz3d-fr/tikz3d-fr.sty
+++ b/Master/texmf-dist/tex/latex/tikz3d-fr/tikz3d-fr.sty
@@ -3,15 +3,18 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tikz3d-fr}[2023/07/22 0.1.2 Aide pour l'utilisation de TikZ 3D]
+\ProvidesPackage{tikz3d-fr}[2024/09/16 0.1.3 Aide pour l'utilisation de TikZ 3D]
+%0.1.3 Dés à jouer en 3D
%0.1.2 Option pour l'épaisseur des traits + [line join=round] pour les cubes
%0.1.1 Segments avec [line cap=round]
%0.1.0 Version initiale
%------Packages utiles
\RequirePackage{tikz}
+\RequirePackage{tikz-3dplot}
\RequirePackage{xstring}
\RequirePackage{simplekv}
+\RequirePackage{randomlist}
\RequirePackage{xinttools}
\RequirePackage{xintexpr}
\RequirePackage{listofitems}
@@ -328,4 +331,258 @@
{\end{EnvTikzEspace}}
}
+%====DÉS EN 3D
+\newlength{\detridimoffseth}
+\setlength{\detridimoffseth}{0mm}
+
+\defKV[DeTriDim]{%
+ Echelle=\def\detridimscale{#1},%
+ Couleur=\def\detridimcouleur{#1},%
+ EspaceH=\setlength{\detridimoffseth}{#1},%
+ Couleurs=\def\detridimcouleurs{#1},%
+ CouleurPoints=\def\detridimcouleurpts{#1},%
+ Phi=\def\detridimphi{#1},%
+ Theta=\def\detridimtheta{#1},%
+ Vue=\def\deftridimvue{#1},%
+ Origine=\def\deftridimorigin{#1}
+}
+\setKVdefault[DeTriDim]{%
+ Echelle=1,%
+ Couleur=lightgray!25,%
+ CouleurPoints=black,%
+ Hasard=false,%
+ EspaceH={0mm},%
+ Couleurs=lightgray!25,%
+ Phi=110,%
+ Theta=70,%
+ Vue=D,%
+ Origine={(0,0)},%
+ Yams=false
+}
+
+\NewDocumentCommand\FaceDeTriDim{ m }{%
+ %1 = face avec points communs si besoin pour simplifier le code
+ \xintifboolexpr{#1 == 2 'or' #1 == 4 'or' #1 == 5 'or' #1 == 6}%
+ {%
+ \fill[\detridimcouleurpts] (0.5,0.5) circle[radius=1/6] ; % HG
+ \fill[\detridimcouleurpts] (-0.5,-0.5) circle[radius=1/6] ; % BD
+ }%
+ {}%
+ \xintifboolexpr{#1 == 3 'or' #1 == 4 'or' #1 == 5 'or' #1 == 6}%
+ {%
+ \fill[\detridimcouleurpts] (-0.5,0.5) circle[radius=1/6] ; % HD
+ \fill[\detridimcouleurpts] (0.5,-0.5) circle[radius=1/6] ; % BG
+ }%
+ {}%
+ \xintifboolexpr{#1 == 1 'or' #1 == 3 'or' #1 == 5}%
+ {%
+ \fill[\detridimcouleurpts] (0,0) circle[radius=1/6] ; % CENTRE
+ }%
+ {}%
+ \xintifboolexpr{#1 == 6}%
+ {%
+ \fill[\detridimcouleurpts] (0.5,0) circle[radius=1/6] ; % MG
+ \fill[\detridimcouleurpts] (-0.5,0) circle[radius=1/6] ; % MD
+ }%
+ {}%
+}
+
+%liste pour les faces
+\NewList{detridimfaceU}\SetList{detridimfaceU}{2,3,4,5}
+\NewList{detridimfaceD}\SetList{detridimfaceD}{1,3,4,6}
+\NewList{detridimfaceT}\SetList{detridimfaceT}{1,2,6,5}
+\NewList{detridimfaceQ}\SetList{detridimfaceQ}{1,5,6,2}
+\NewList{detridimfaceC}\SetList{detridimfaceC}{1,3,6,4}
+\NewList{detridimfaceS}\SetList{detridimfaceS}{2,4,5,3}
+
+%commande autonome
+\NewDocumentCommand\DeTriDim{ s O{} D<>{} m }{%
+ %* = mode non autonome
+ %1 = clés
+ %2 = options tikzpicture
+ %3 = faces devant/dessus
+ \restoreKV[DeTriDim]%
+ \setKV[DeTriDim]{#2}%
+ %si aléatoire
+ \ifboolKV[DeTriDim]{Hasard}%
+ {%
+ \xdef\detridimfacedevant{\xinteval{randrange(1,7)}}%
+ \xintifboolexpr{\detridimfacedevant == 1}%
+ {%
+ \GetRandomItem{detridimfaceU}{detridimfacedessus}%
+ }%
+ {}%
+ \xintifboolexpr{\detridimfacedevant == 2}%
+ {%
+ \GetRandomItem{detridimfaceD}{detridimfacedessus}%
+ }%
+ {}%
+ \xintifboolexpr{\detridimfacedevant == 3}%
+ {%
+ \GetRandomItem{detridimfaceT}{detridimfacedessus}%
+ }%
+ {}%
+ \xintifboolexpr{\detridimfacedevant == 4}%
+ {%
+ \GetRandomItem{detridimfaceQ}{detridimfacedessus}%
+ }%
+ {}%
+ \xintifboolexpr{\detridimfacedevant == 5}%
+ {%
+ \GetRandomItem{detridimfaceC}{detridimfacedessus}%
+ }%
+ {}%
+ \xintifboolexpr{\detridimfacedevant == 6}%
+ {%
+ \GetRandomItem{detridimfaceS}{detridimfacedessus}%
+ }%
+ {}%
+ \xdef\detridimfaces{\detridimfacedevant/\detridimfacedessus}%
+ }%
+ {%
+ \xdef\detridimfaces{#4}%
+ \StrCut{#4}{/}{\detridimfacedevant}{\detridimfacedessus}%
+ }%
+ \IfStrEq{\deftridimvue}{D}%
+ {%
+ \IfStrEqCase{\detridimfaces}{%
+ {1/2}{\def\detridimfacedroite{3}}%
+ {1/3}{\def\detridimfacedroite{5}}%
+ {1/5}{\def\detridimfacedroite{4}}%
+ {1/4}{\def\detridimfacedroite{2}}%
+ %
+ {2/1}{\def\detridimfacedroite{4}}%
+ {2/4}{\def\detridimfacedroite{6}}%
+ {2/6}{\def\detridimfacedroite{3}}%
+ {2/3}{\def\detridimfacedroite{1}}%
+ %
+ {3/1}{\def\detridimfacedroite{2}}%
+ {3/2}{\def\detridimfacedroite{6}}%
+ {3/6}{\def\detridimfacedroite{5}}%
+ {3/5}{\def\detridimfacedroite{1}}%
+ %
+ {4/1}{\def\detridimfacedroite{5}}%
+ {4/5}{\def\detridimfacedroite{6}}%
+ {4/6}{\def\detridimfacedroite{2}}%
+ {4/2}{\def\detridimfacedroite{1}}%
+ %
+ {5/1}{\def\detridimfacedroite{3}}%
+ {5/3}{\def\detridimfacedroite{6}}%
+ {5/6}{\def\detridimfacedroite{4}}%
+ {5/4}{\def\detridimfacedroite{1}}%
+ %
+ {6/2}{\def\detridimfacedroite{4}}%
+ {6/4}{\def\detridimfacedroite{5}}%
+ {6/5}{\def\detridimfacedroite{3}}%
+ {6/3}{\def\detridimfacedroite{2}}%
+ }%
+ }%
+ {%
+ \IfStrEqCase{\detridimfaces}{%
+ {1/2}{\def\detridimfacedroite{4}}%
+ {1/3}{\def\detridimfacedroite{2}}%
+ {1/5}{\def\detridimfacedroite{3}}%
+ {1/4}{\def\detridimfacedroite{5}}%
+ %
+ {2/1}{\def\detridimfacedroite{3}}%
+ {2/4}{\def\detridimfacedroite{1}}%
+ {2/6}{\def\detridimfacedroite{4}}%
+ {2/3}{\def\detridimfacedroite{6}}%
+ %
+ {3/1}{\def\detridimfacedroite{5}}%
+ {3/2}{\def\detridimfacedroite{1}}%
+ {3/6}{\def\detridimfacedroite{2}}%
+ {3/5}{\def\detridimfacedroite{6}}%
+ %
+ {4/1}{\def\detridimfacedroite{2}}%
+ {4/5}{\def\detridimfacedroite{1}}%
+ {4/6}{\def\detridimfacedroite{5}}%
+ {4/2}{\def\detridimfacedroite{6}}%
+ %
+ {5/1}{\def\detridimfacedroite{3}}%
+ {5/3}{\def\detridimfacedroite{6}}%
+ {5/6}{\def\detridimfacedroite{4}}%
+ {5/4}{\def\detridimfacedroite{1}}%
+ %
+ {6/2}{\def\detridimfacedroite{3}}%
+ {6/4}{\def\detridimfacedroite{2}}%
+ {6/5}{\def\detridimfacedroite{4}}%
+ {6/3}{\def\detridimfacedroite{5}}%
+ }%
+ }%
+ \IfStrEq{\deftridimvue}{D}{\def\tmpdetridimxscale{1}}{\def\tmpdetridimxscale{-1}}%
+ \IfBooleanF{#1}{\begin{tikzpicture}[#3]}%
+ \tdplotsetmaincoords{\detridimtheta}{\detridimphi}
+ \begin{scope}[shift={(\deftridimorigin)},scale=\fpeval{0.5*\detridimscale},xscale=\tmpdetridimxscale,thick,tdplot_main_coords,rounded corners=\fpeval{\detridimscale*0.5*0.33}cm,fill=\detridimcouleur]
+ \begin{scope}[canvas is xy plane at z=-1]
+ \filldraw (-1,-1) rectangle (1,1);
+ \end{scope}
+ \begin{scope}[canvas is xz plane at y=-1]
+ \filldraw (-1,-1) rectangle (1,1);
+ \end{scope}
+ \begin{scope}[canvas is yz plane at x=-1]
+ \filldraw (-1,-1) rectangle (1,1);
+ \end{scope}
+ \begin{scope}[canvas is xy plane at z=1]%face du dessus
+ \filldraw (-1,-1) rectangle (1,1);
+ \FaceDeTriDim{\detridimfacedessus}
+ \end{scope}
+ \begin{scope}[canvas is xz plane at y=1]%face de droite
+ \filldraw (-1,-1) rectangle (1,1);
+ \FaceDeTriDim{\detridimfacedroite}
+ \end{scope}
+ \begin{scope}[canvas is yz plane at x=1]%face de devant
+ \filldraw (-1,-1) rectangle (1,1);
+ \FaceDeTriDim{\detridimfacedevant}
+ \end{scope}
+ \end{scope}
+ \IfBooleanF{#1}{\end{tikzpicture}}%
+}
+
+\NewDocumentCommand\TirageAleaDesTriDim{ O{} D<>{} m }{%
+ \restoreKV[DeTriDim]%
+ \setKV[DeTriDim]{#1}%
+ \readlist*\detridimlstcolors{\detridimcouleurs}%
+ \ifboolKV[DeTriDim]{Yams}%
+ {%
+ \begin{tikzpicture}[#2]
+ \ifnum\detridimlstcolorslen=1\relax
+ \foreach \i in {1,...,#3}{%
+ \IfStrEq{\deftridimvue}{D}%
+ {%
+ \DeTriDim*[#1,Hasard,Couleur=\detridimcouleurs,Origine={(\i*\detridimscale,-\i*\detridimscale*0.1)}]{}%
+ }%
+ {%
+ \DeTriDim*[#1,Hasard,Couleur=\detridimcouleurs,Origine={(-\i*\detridimscale,-\i*\detridimscale*0.1)}]{}%
+ }%
+ }%
+ \else%
+ \foreach \i in {1,...,#3}{%
+ \itemtomacro\detridimlstcolors[\i]{\tmpdetridimcolor}%
+ \IfStrEq{\deftridimvue}{D}%
+ {%
+ \DeTriDim*[#1,Hasard,Couleur=\tmpdetridimcolor,Origine={(\i*\detridimscale,-\i*\detridimscale*0.1)}]{}%
+ }%
+ {%
+ \DeTriDim*[#1,Hasard,Couleur=\tmpdetridimcolor,Origine={(-\i*\detridimscale,-\i*\detridimscale*0.1)}]{}%
+ }%
+ }%
+ \fi%
+ \end{tikzpicture}
+ }%
+ {%
+ \ifnum\detridimlstcolorslen=1\relax
+ \foreach \i in {1,...,#3}{%
+ \DeTriDim[#1,Hasard,Couleur=\detridimcouleurs]<#2>{}\ifnum\i<#3\relax\hspace*{\detridimoffseth}\fi%
+ }%
+ \else%
+ \foreach \i in {1,...,#3}{%
+ \itemtomacro\detridimlstcolors[\i]{\tmpdetridimcolor}%
+ \DeTriDim[#1,Hasard,Couleur=\tmpdetridimcolor]<#2>{}\ifnum\i<#3\relax\hspace*{\detridimoffseth}\fi%
+ }%
+ \fi%
+ }%
+}
+
+
\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzbricks/tikzbricks.sty b/Master/texmf-dist/tex/latex/tikzbricks/tikzbricks.sty
index 01b070bb605..2ca3786a42e 100644
--- a/Master/texmf-dist/tex/latex/tikzbricks/tikzbricks.sty
+++ b/Master/texmf-dist/tex/latex/tikzbricks/tikzbricks.sty
@@ -9,10 +9,10 @@
% https://github.com/samcarter/TikZbricks
%
% Released under the LaTeX Project Public License v1.3c or later
-% See http://www.latex-project.org/lppl.txt
+% See https://www.latex-project.org/lppl.txt
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzbricks}[2024/04/26 version v0.5 Drawing bricks with TikZ]
+\ProvidesPackage{tikzbricks}[2024/12/16 version v0.6 Drawing bricks with TikZ]
\RequirePackage{tikz}
\RequirePackage{tikz-3dplot}
@@ -29,12 +29,14 @@
\DeclareOptionX{studcolor}[\brick@color]{\def\brick@default@studcolor{#1}}
\DeclareOptionX{brickheight}[1.3]{\def\brick@default@height{#1}}
\DeclareOptionX{bricklength}[1.0]{\def\brick@default@length{#1}}
+\DeclareOptionX{bricktext}[]{\def\brick@default@facetext{#1}}
\DeclareOptionX{brickwidth}[1.0]{\def\brick@default@width{#1}}
\DeclareOptionX{studradius}[0.35]{\def\brick@default@radius{#1}}
\DeclareOptionX{studheight}[0.3]{\def\brick@default@studheight{#1}}
\DeclareOptionX{studtext}[]{\def\brick@default@text{#1}}
-\ExecuteOptionsX{color,frontcolor,topcolor,sidecolor,studcolor,brickheight,bricklength,brickwidth,studradius,studheight,studtext}
+
+\ExecuteOptionsX{color,frontcolor,topcolor,sidecolor,studcolor,brickheight,bricklength,bricktext,brickwidth,studradius,studheight,studtext}
\ProcessOptionsX
@@ -104,15 +106,17 @@
topcolor/.code = \def\brick@topcolor{#1},
topcolor = \brick@default@topcolor,
sidecolor/.code = \def\brick@sidecolor{#1},
- sidecolor = \brick@default@sidecolor,
+ sidecolor = \brick@default@sidecolor,
studcolor/.code = \def\brick@studcolor{#1},
- studcolor = \brick@default@studcolor,
+ studcolor = \brick@default@studcolor,
brickheight/.code = \def\brick@height{#1},
brickheight = \brick@default@height,
bricklength/.code = \def\brick@length{#1},
bricklength = \brick@default@length,
+ bricktext/.code = \def\brick@facetext{#1},
+ bricktext = \brick@default@facetext,
brickwidth/.code = \def\brick@width{#1},
- brickwidth = \brick@default@width,
+ brickwidth = \brick@default@width,
studradius/.code = \def\brick@radius{#1},
studradius = \brick@default@radius,
studheight/.code = \def\brick@studheight{#1},
@@ -134,42 +138,42 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Drawing the brick
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{scope}[tdplot_main_coords]
-
+
% Drawing faces
\pgfmathparse{sign(sin(\tdplotmainphi))}
\let\brick@sin\pgfmathresult
\pgfmathparse{sign(cos(\tdplotmainphi))}
- \let\brick@cos\pgfmathresult
-
+ \let\brick@cos\pgfmathresult
+
\ifnum\brick@sin<0
% Right
- \fill[\brick@sidecolor,thick]
+ \fill[\brick@sidecolor,thick]
(
\brick@length*\value{brickx},
\brick@width*\value{bricky},
\brick@height*\value{brickz}
- )
- -- ++(0,0,\brick@height)
- -- ++(0,\brick@width*#2,0)
- -- ++(0,0,-\brick@height)
+ )
+ -- ++(0,0,\brick@height)
+ -- ++(0,\brick@width*#2,0)
+ -- ++(0,0,-\brick@height)
-- cycle;
\else
% Left
- \fill[\brick@sidecolor,thick]
+ \fill[\brick@sidecolor,thick]
(
{\brick@length*(#1+\value{brickx})},
\brick@width*\value{bricky},
\brick@height*\value{brickz}
- )
- -- ++(0,0,\brick@height)
- -- ++(0,\brick@width*#2,0)
- -- ++(0,0,-\brick@height)
- -- cycle;
+ )
+ -- ++(0,0,\brick@height)
+ -- ++(0,\brick@width*#2,0)
+ -- ++(0,0,-\brick@height)
+ -- cycle;
\fi
-
+
\ifnum\brick@cos<0
% Front
\fill[\brick@frontcolor,thick]
@@ -178,77 +182,84 @@
{\brick@width*(#2+\value{bricky})},
\brick@height*\value{brickz}
)
- -- ++(\brick@length*#1,0,0)
- -- ++(0,0,\brick@height)
- -- ++(-\brick@length*#1,0,0)
+ -- ++(\brick@length*#1,0,0)
+ -- ++(0,0,\brick@height)
+ -- ++(-\brick@length*#1,0,0)
-- cycle;
+
+ \node[align=center, transform shape, canvas is zx plane at y=0, rotate=-90] at (
+ \brick@length*\value{brickx} + 0.5*\brick@length*#1,
+ {\brick@width*(#2+\value{bricky})},
+ \brick@height*\value{brickz} + 0.5*\brick@height
+ ) {\brick@facetext};
+
\else
- % Back
+ % Back
\fill[\brick@frontcolor,thick]
(
\brick@length*\value{brickx},
\brick@width*\value{bricky},
\brick@height*\value{brickz}
)
- -- ++(\brick@length*#1,0,0)
- -- ++(0,0,\brick@height)
- -- ++(-\brick@length*#1,0,0)
+ -- ++(\brick@length*#1,0,0)
+ -- ++(0,0,\brick@height)
+ -- ++(-\brick@length*#1,0,0)
-- cycle;
\fi
- % Top
- \fill[\brick@topcolor,thick]
+ % Top
+ \fill[\brick@topcolor,thick]
(
\brick@length*\value{brickx},
\brick@width*\value{bricky},
{\brick@height*(1+\value{brickz})}
)
- -- ++(0,\brick@width*#2,0)
- -- ++(\brick@length*#1,0,0)
- -- +(0,-\brick@width*#2,0)
+ -- ++(0,\brick@width*#2,0)
+ -- ++(\brick@length*#1,0,0)
+ -- +(0,-\brick@width*#2,0)
-- cycle;
-
-
+
+
% Drawing studs
\foreach \x in {1,...,#1}{
\foreach \y in {1,...,#2}{
-
+
% Bottom circle
- \fill[\brick@studcolor]
+ \fill[\brick@studcolor]
(
{\brick@length*(\x-0.5+\value{brickx})},
{\brick@width*(\y-0.5+\value{bricky})},
{\brick@height*(1+\value{brickz})}
- )
- circle [radius=\brick@radius];
-
+ )
+ circle [radius=\brick@radius];
+
% Rectangular stem
- \fill[\brick@studcolor]
+ \fill[\brick@studcolor]
(
{\brick@length*(\x-0.5+\value{brickx})},
{\brick@width*(\y-0.5+\value{bricky})},
{\brick@height*(1+\value{brickz})}
- )
- ++(canvas cs:x=-\brick@radius/0.35*10)
- -- ++(canvas cs:y=\brick@studheight*17.8)
- -- ++(canvas cs:x=\brick@radius/0.35*20)
+ )
+ ++(canvas cs:x=-\brick@radius/0.35*10)
+ -- ++(canvas cs:y=\brick@studheight*17.8)
+ -- ++(canvas cs:x=\brick@radius/0.35*20)
-- ++(canvas cs:y=-\brick@studheight*17.8);
-
+
% Top circle with text
- \fill[\brick@topcolor]
+ \fill[\brick@topcolor]
(
{\brick@length*(\x-0.5+\value{brickx})},
{\brick@width*(\y-0.5+\value{bricky})},
{\brick@height*(1+\value{brickz})}
- )
- ++(canvas cs:y=\brick@studheight*17.8)
- circle [radius=\brick@radius]
+ )
+ ++(canvas cs:y=\brick@studheight*17.8)
+ circle [radius=\brick@radius]
node[\brick@color,scale=\scalingfactor*0.5, font=\sffamily] {\brick@text};
}
}
-
+
\end{scope}
}
diff --git a/Master/texmf-dist/tex/latex/tikzdotncross/tikzdotncross.sty b/Master/texmf-dist/tex/latex/tikzdotncross/tikzdotncross.sty
index 2385fb155e4..8c2975e6fa6 100644
--- a/Master/texmf-dist/tex/latex/tikzdotncross/tikzdotncross.sty
+++ b/Master/texmf-dist/tex/latex/tikzdotncross/tikzdotncross.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {1.1} {2024/01/11}
+%% This is version {1.2c} {2025/01/23}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/tikzdotncross
@@ -26,8 +26,8 @@
\ProvidesExplPackage
{tikzdotncross}
- {2024/01/11}
- {1.1}
+ {2025/01/23}
+ {1.2c}
{Marking coordinates and crossing paths}
%%%%%%%
@@ -40,8 +40,8 @@
{
name .code:n = {tikzdotncross} ,
prefix .code:n = {tikzdotncross} ,
- date .code:n = {2024/01/11},
- version .code:n = {1.1} ,
+ date .code:n = {2025/01/23},
+ version .code:n = {1.2c} ,
description .code:n = {Marking~ coordinates~ and~ crossing~ paths}
}
\cs_if_exist:NF \PkgInfo
@@ -54,10 +54,50 @@
%%% End of cut-n-paste
%%%%%%%
+%%%
+%%% why that here? well, the token list's commands will be used outside expl3 'domain'
+%%%
+\makeatletter
+
+\keys_define:nn { tikzdotncross }
+ {
+ pin size .tl_set:N = \dotncross@@pinsep ,
+ pin size .value_required:n = true ,
+ pin size .initial:n = 1.2 ,
+ pin size .usage:n = general ,
+
+ pin ang .tl_set:N = \dotncross@@pinang ,
+ pin ang .value_required:n = true ,
+ pin ang .initial:n = 45 ,
+ pin ang .usage:n = general ,
+
+ pin color .tl_set:N = \dotncross@@pincolor ,
+ pin color .value_required:n = true ,
+ pin color .initial:n = blue ,
+ pin color .usage:n = general ,
+
+ pin length .tl_set:N = \dotncross@@pindistance ,
+ pin length .value_required:n = true ,
+ pin length .initial:n = 4 ,
+ pin length .usage:n = general ,
+
+ coord color .tl_set:N = \dotncross@@coordcolor ,
+ coord color .value_required:n = true ,
+ coord color .initial:n = red ,
+ coord color .usage:n = general ,
+ }
+
+\ProcessKeyOptions [ tikzdotncross ]
+
+\NewDocumentCommand{\setpindefaults}{m} {
+ \keys_set:nn {tikzdotncross}{#1}
+}
+
\ExplSyntaxOff
-\makeatletter
-\usetikzlibrary{intersections}
+%\makeatletter
+\usetikzlibrary{math,intersections}
+\RequirePackage{etoolbox}
%%
%% There is no easy and clean way
@@ -84,17 +124,16 @@
\pgfextra{\csxdef{#2T}{\CrossTotal}}
\foreach \aux in {1,...,\csuse{#2T}}{(#2-\aux) node[minimum size=#6-\pgflinewidth,inner sep=0pt](n#2-\aux){}};
\tikzmath{%
- coordinate \Ctmp; real \dx , \dy , \d; int \idx;
+ coordinate \Ctmp; real \dtmp; int \idx;
\Ctmp{from} = (#3);
\Ctmp{to} = (#4);
- \dx{tmp} = \Ctmpx{to} - \Ctmpx{from};
- \dy{tmp} = \Ctmpy{to} - \Ctmpy{from};
- \d{ang} = atan2(\dy{tmp},\dx{tmp});
+ \dtmp{x} = \Ctmpx{to} - \Ctmpx{from};
+ \dtmp{y} = \Ctmpy{to} - \Ctmpy{from};
+ \dtmp{ang} = atan2(\dtmp{y},\dtmp{x});
\Ctmp{1st} = (n#2-1);
\Ctmp{last} = (n#2-\csuse{#2T});
\idx{1st} = 1;
\idx{last} = \csuse{#2T};
- \idx{crossing} = 1;
if \Ctmpx{1st} == \Ctmpx{from} then {
if \Ctmpy{1st} == \Ctmpy{from} then {
\idx{1st} = 2;
@@ -109,9 +148,9 @@
\ifnum\idx{last}<\idx{1st}
\draw (#3) -- (#4);
\else
- \draw[line width=1.8\pgflinewidth,white,rotate=\d{ang}]
+ \draw[line width=1.8\pgflinewidth,white,rotate=\dtmp{ang}]
\foreach \aux in {\idx{1st},...,\idx{last}}{(#2-\aux) +(-#6/2,0) arc[start angle=\dotncross@@sign180,end angle=0,radius=#6/2]};
- \draw[rotate=\d{ang},line cap=round]
+ \draw[rotate=\dtmp{ang},line cap=round]
\foreach \aux in {\idx{1st},...,\idx{last}}{(#2-\aux) +(-#6/2,0) arc[start angle=\dotncross@@sign180,end angle=0,radius=#6/2]};
\gdef\dotncross@@tmpA{#3}
@@ -133,14 +172,14 @@
\newcommand\showcoordsfalse{\let\ncoord=\dotncross@@coordnode \let\dotcoord=\dotncross@@dotcoordnode \let\odotcoord=\dotncross@@odotcoordnode}
\newcommand\showcoordstrue{\let\ncoord=\dotncross@@coordpin \let\dotcoord=\dotncross@@dotcoordpin \let\odotcoord=\dotncross@@odotcoordpin}
-\def\dotncross@@coordpin(#1){\pincoord(#1,red,45)}
-\def\dotncross@@coordnode(#1){coordinate(#1) node[minimum size=1.2pt,inner sep=1.2pt](n#1){}}
+\def\dotncross@@coordpin(#1){\pincoord(#1,\dotncross@@coordcolor,\dotncross@@pinang)}
+\def\dotncross@@coordnode(#1){coordinate(#1) node[minimum size=\dotncross@@pinsep pt,inner sep=\dotncross@@pinsep pt](n#1){}}
-\def\dotncross@@dotcoordpin(#1){\dotpincoord(#1,red,45)}
-\def\dotncross@@dotcoordnode(#1){coordinate(#1) node[circle,minimum size=1.2pt,inner sep=1.2pt,fill](n#1){}}
+\def\dotncross@@dotcoordpin(#1){\dotpincoord(#1,\dotncross@@coordcolor,\dotncross@@pinang)}
+\def\dotncross@@dotcoordnode(#1){coordinate(#1) node[circle,minimum size=\dotncross@@pinsep pt,inner sep=\dotncross@@pinsep pt,fill](n#1){}}
-\def\dotncross@@odotcoordpin(#1){\odotpincoord(#1,red,45)}
-\def\dotncross@@odotcoordnode(#1){coordinate(#1) node[circle,minimum size=1.2pt,inner sep=1.2pt,fill=white,draw](n#1){}}
+\def\dotncross@@odotcoordpin(#1){\odotpincoord(#1,\dotncross@@coordcolor,\dotncross@@pinang)}
+\def\dotncross@@odotcoordnode(#1){coordinate(#1) node[circle,minimum size=\dotncross@@pinsep pt,inner sep=\dotncross@@pinsep pt,fill=white,draw](n#1){}}
%%%%
%%
@@ -155,17 +194,17 @@
\def\dotncross@@pincasew#1#2{\dotncross@@pincase#1,,,,\dotncross@@pincaseA\dotncross@@pincaseB\dotncross@@pincaseC\dotncross@@pincaseD;#2:}
\def\dotncross@@pincase#1,#2,#3,#4,#5#6#7#8#9:{#8:#1:#2:#3:#4:#9:}
\def\dotncross@@pincaseA:#1:#2:#3:#4:#5;#6:{\dotncross@@pincoord{#1}{#2}{#3}{#4}{#6}}
-\def\dotncross@@pincaseB:#1:#2:#3:#4:#5;#6:{\dotncross@@pincoord{#1}{#2}{#3}{4}{#6}}
-\def\dotncross@@pincaseC:#1:#2:#3:#4:#5;#6:{\dotncross@@pincoord{#1}{#2}{-45}{4}{#6}}
-\def\dotncross@@pincaseD:#1:#2:#3:#4:#5;#6:{\dotncross@@pincoord{#1}{blue}{-45}{4}{#6}}
+\def\dotncross@@pincaseB:#1:#2:#3:#4:#5;#6:{\dotncross@@pincoord{#1}{#2}{#3}{\dotncross@@pindistance}{#6}}
+\def\dotncross@@pincaseC:#1:#2:#3:#4:#5;#6:{\dotncross@@pincoord{#1}{#2}{-\dotncross@@pinang}{\dotncross@@pindistance}{#6}}
+\def\dotncross@@pincaseD:#1:#2:#3:#4:#5;#6:{\dotncross@@pincoord{#1}{\dotncross@@pincolor}{-\dotncross@@pinang}{\dotncross@@pindistance}{#6}}
\def\pincoord(#1){\dotncross@@pincasew{#1}{}}
\def\dotpincoord(#1){\dotncross@@pincasew{#1}{circle,fill,}}
\def\odotpincoord(#1){\dotncross@@pincasew{#1}{circle,fill=white,draw,}}
\newcommand\dotncross@@pincoord[5]{%
- coordinate(#1) node[#5minimum size=1.2pt,inner sep=1.2pt](n#1){}
- node[circle, #2, inner sep=1.2pt, outer sep=0pt, radius=1pt, fill=#2!20!white, fill opacity=0.2, draw opacity=0.4, draw,
+ coordinate(#1) node[#5minimum size=\dotncross@@pinsep pt,inner sep=\dotncross@@pinsep pt](n#1){}
+ node[circle, #2, inner sep=\dotncross@@pinsep pt, outer sep=0pt, radius=1pt, fill=#2!20!white, fill opacity=0.2, draw opacity=0.4, draw,
pin={[#2, overlay, inner sep=0pt, outer sep=1pt, font=\tiny, pin distance=#4pt,
pin edge={#2, overlay}]#3:#1}]{}%
}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlibrarytikzlings.code.tex b/Master/texmf-dist/tex/latex/tikzlings/tikzlibrarytikzlings.code.tex
index 449b2ce5b13..7fcc0e83971 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlibrarytikzlings.code.tex
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlibrarytikzlings.code.tex
@@ -8,7 +8,7 @@
% https://github.com/samcarter/tikzlings
%
% Released under the LaTeX Project Public License v1.3c or later
-% See http://www.latex-project.org/lppl.txt
+% See https://www.latex-project.org/lppl.txt
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{tikzlings}
@@ -29,6 +29,6 @@
\tikzset{
tikzling/.pic={\tikzling},
- tikzling/.search also={,/tikz,/pgf,/thing},
- thing/.search also={,/tikz,/pgf},
+ tikzling/.search also={,/tikz,/pgf,/thing},
+ thing/.search also={,/tikz,/pgf},
} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-addons.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-addons.sty
index 9c41b7cfdef..ef2fb63bebf 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-addons.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-addons.sty
@@ -9,13 +9,15 @@
% https://github.com/samcarter/tikzlings
%
% Released under the LaTeX Project Public License v1.3c or later
-% See http://www.latex-project.org/lppl.txt
+% See https://www.latex-project.org/lppl.txt
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-addons}[2022/06/17 version v1.0 Draw additional items for the tikzlings]
+\ProvidesPackage{tikzlings-addons}[2025/01/05 version v2.2 Draw additional items for the tikzlings]
\RequirePackage{tikz}
\usetikzlibrary{patterns} % for the wizard hat
+\usetikzlibrary{decorations.shapes} % for sombrero
+\usetikzlibrary{decorations.pathmorphing}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -56,60 +58,81 @@
\end{scope}%
}
+\def\thing@listhead{}
+\def\thing@listacces{}
+\def\thing@headtext{head}
+\def\thing@accesstext{acess}
+
+\ExplSyntaxOn
+\NewDocumentCommand{\thing@ini}{om}{
+ \expandafter\newif\csname ifthing@#2\endcsname
+ \def\thing@tmp{#1}
+ \ifx\thing@headtext\thing@tmp
+ \tl_put_right:Nn \thing@listhead { {#2} }
+ \fi
+ \ifx\thing@accesstext\thing@tmp
+ \tl_put_right:Nn \thing@listacces { {#2} }
+ \fi
+}
+\ExplSyntaxOff
+
% Hats %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newif\ifthing@hat
-\newif\ifthing@tophat
-\newif\ifthing@beret
-\newif\ifthing@strawhat
-\newif\ifthing@harlequin
-\newif\ifthing@witch
-\newif\ifthing@magichat
-\newif\ifthing@crown
-\newif\ifthing@queencrown
-\newif\ifthing@kingcrown
-\newif\ifthing@santa
-\newif\ifthing@chef
-\newif\ifthing@graduate
-\newif\ifthing@alien
+\thing@ini[head]{hat}
+\thing@ini[head]{tophat}
+\thing@ini[head]{beret}
+\thing@ini[head]{strawhat}
+\thing@ini[head]{harlequin}
+\thing@ini[head]{witch}
+\thing@ini[head]{magichat}
+\thing@ini[head]{crown}
+\thing@ini[head]{queencrown}
+\thing@ini[head]{kingcrown}
+\thing@ini[head]{santa}
+\thing@ini[head]{chef}
+\thing@ini[head]{graduate}
+\thing@ini[head]{sombrero}
+\thing@ini[head]{alien}
% Communication %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newif\ifthing@book
-\newif\ifthing@signpost
+\thing@ini[acess]{book}
+\thing@ini[acess]{signpost}
\newif\ifthing@speech
\newif\ifthing@think
% Food %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newif\ifthing@pizza
+\thing@ini[acess]{pizza}
\newif\ifthing@davidlikespineapplepizza
-\newif\ifthing@cheese
-\newif\ifthing@baguette
-\newif\ifthing@cake
-\newif\ifthing@icecream
-\newif\ifthing@milkshake
-\newif\ifthing@wine
-\newif\ifthing@cocktail
+\thing@ini[acess]{cheese}
+\thing@ini[acess]{baguette}
+\thing@ini[acess]{cake}
+\thing@ini[acess]{icecream}
+\thing@ini[acess]{milkshake}
+\thing@ini[acess]{wine}
+\thing@ini[acess]{cocktail}
+\thing@ini[acess]{banana}
% Sport %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newif\ifthing@cricket
-\newif\ifthing@hockey
-\newif\ifthing@football
+\thing@ini[acess]{cricket}
+\thing@ini[acess]{hockey}
+\thing@ini[acess]{football}
% Other %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newif\ifthing@crystalball
-\newif\ifthing@magicwand
-\newif\ifthing@rollingpin
-\newif\ifthing@lightsaber
-\newif\ifthing@torch
-\newif\ifthing@basket
-\newif\ifthing@easter
-\newif\ifthing@crozier
-\newif\ifthing@shovel
-\newif\ifthing@pickaxe
-\newif\ifthing@strawbroom
-\newif\ifthing@broom
-\newif\ifthing@umbrella
-\newif\ifthing@umbrellaclosed
-\newif\ifthing@handbag
+\thing@ini[acess]{crystalball}
+\thing@ini[acess]{magicwand}
+\thing@ini[acess]{rollingpin}
+\thing@ini[acess]{lightsaber}
+\thing@ini[acess]{torch}
+\thing@ini[acess]{basket}
+\thing@ini[acess]{easter}
+\thing@ini[acess]{crozier}
+\thing@ini[acess]{shovel}
+\thing@ini[acess]{pickaxe}
+\thing@ini[acess]{strawbroom}
+\thing@ini[acess]{broom}
+\thing@ini[acess]{umbrella}
+\thing@ini[acess]{umbrellaclosed}
+\thing@ini[acess]{handbag}
+\thing@ini[acess]{stick}
\tikzset{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% General
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -121,62 +144,71 @@
% Hats
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- hat/.code = \thing@hattrue
+ hat/.code = \thing@hattrue
\def\thing@hat{#1},
- hat/.default = blue!40!black,
- tophat/.code = \thing@tophattrue
+ hat/.default = blue!40!black,
+ tophat/.code = \thing@tophattrue
\def\thing@tophat{#1},
top hat/.forward to = /thing/tophat,
tophat/.default = black!90!white,
- beret/.code = \thing@berettrue
+ beret/.code = \thing@berettrue
\def\thing@beret{#1},
- beret/.default = black,
+ beret/.default = black,
strawhat/.code = \thing@strawhattrue
\def\thing@strawhat{#1},
straw hat/.forward to = /thing/strawhat,
strawhat/.default = gray!30!white,
ribbon/.code = \def\thing@ribbon{#1},
ribbon = black,
- harlequin/.code = \thing@harlequintrue
+ harlequin/.code = \thing@harlequintrue
\def\thing@harlequin{#1},
harlequin/.default = blue,
- niuqelrah/.code = \def\thing@niuqelrah{#1},
- niuqelrah = red,
- witch/.code = \thing@witchtrue
- \def\thing@witch{#1},
- witch/.default = black,
- magichat/.code = \thing@magichattrue
+ niuqelrah/.code = \def\thing@niuqelrah{#1},
+ niuqelrah = red,
+ witch/.code = \thing@witchtrue
+ \def\thing@witch{#1},
+ witch/.default = black,
+ magichat/.code = \thing@magichattrue
\def\thing@magichat{#1},
magic hat/.forward to = /thing/magichat,
magichat/.default = violet,
magicstars/.code = \def\thing@magicstars{#1},
- magic stars/.forward to = /thing/magicstars,
- magicstars = yellow!80!brown,
- crown/.code = \thing@crowntrue
+ magic stars/.forward to = /thing/magicstars,
+ magicstars = yellow!80!brown,
+ crown/.code = \thing@crowntrue
\def\thing@crown{#1},
- crown/.default = yellow!90!orange,
- queencrown/.code = \thing@queencrowntrue
+ crown/.default = yellow!90!orange,
+ queencrown/.code = \thing@queencrowntrue
\def\thing@queencrown{#1},
queen crown/.forward to = /thing/queencrown,
queencrown/.default = yellow,
- kingcrown/.code = \thing@kingcrowntrue
+ kingcrown/.code = \thing@kingcrowntrue
\def\thing@kingcrown{#1},
king crown/.forward to = /thing/kingcrown,
kingcrown/.default = gray,
- santa/.code = \thing@santatrue
+ santa/.code = \thing@santatrue
\def\thing@santa{#1},
santa/.default = red!80!black,
- chef/.code = \thing@cheftrue
- \def\thing@chef{#1},
- chef/.default = gray!20!white,
- graduate/.code = \thing@graduatetrue
+ chef/.code = \thing@cheftrue
+ \def\thing@chef{#1},
+ chef/.default = gray!20!white,
+ graduate/.code = \thing@graduatetrue
\def\thing@graduate{#1},
graduate/.default = black,
- tassel/.code = \def\thing@tassel{#1},
+ tassel/.code = \def\thing@tassel{#1},
tassel = red,
- alien/.code = \thing@alientrue
+ sombrero/.code = \thing@sombrerotrue
+ \def\thing@sombrero{#1},
+ sombrero/.default = orange!70!yellow,
+ sombreroa/.code = \def\thing@sombreroa{#1},
+ sombreroa = green!70!blue,
+ sombrerob/.code = \def\thing@sombrerob{#1},
+ sombrerob = red,
+ sombreroc/.code = \def\thing@sombreroc{#1},
+ sombreroc = blue,
+ alien/.code = \thing@alientrue
\def\thing@alien{#1},
- alien/.default = green,
+ alien/.default = green,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Communication
@@ -189,17 +221,17 @@
book color/.forward to = /thing/bookcolour,
bookcolor/.forward to = /thing/bookcolour,
bookcolour = brown,
- signpost/.code = \thing@signposttrue
+ signpost/.code = \thing@signposttrue
\def\thing@signpost{#1},
sign post/.forward to = /thing/signpost,
signcolour/.code = \def\thing@signcolour{#1},
sign colour/.forward to = /thing/signcolour,
sign color/.forward to = /thing/signcolour,
- signcolor/.forward to = /thing/signcolour,
- signcolour = brown!50!black,
+ signcolor/.forward to = /thing/signcolour,
+ signcolour = brown!50!black,
signback/.code = \def\thing@signback{#1},
sign back/.forward to = /thing/signback,
- signback = green!40!black,
+ signback = green!40!black,
speech/.code = \thing@speechtrue
\def\thing@speech{#1},
think/.code = \thing@thinktrue
@@ -207,7 +239,7 @@
bubblecolour/.code = \def\thing@bubblecolour{#1},
bubble colour/.forward to = /thing/bubblecolour,
bubble color/.forward to = /thing/bubblecolour,
- bubblecolor/.forward to = /thing/bubblecolour,
+ bubblecolor/.forward to = /thing/bubblecolour,
bubblecolour = gray!30!white,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -216,12 +248,12 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
pizza/.code = \thing@pizzatrue,
davidlikespineapplepizza/.code = \thing@davidlikespineapplepizzatrue
- \thing@speechtrue
+ \thing@speechtrue
\def\thing@speech{\scalebox{\scalingfactor}{\scalebox{0.9}{\tiny ih, che schifo!}}},
david likes pineapple pizza/.forward to = /thing/davidlikespineapplepizza,
cheese/.code = \thing@cheesetrue
\def\thing@cheese{#1},
- cheese/.default = yellow!30!orange!60!white,
+ cheese/.default = yellow!30!orange!60!white,
baguette/.code = \thing@baguettetrue
\def\thing@baguette{#1},
baguette/.default = brown,
@@ -240,14 +272,17 @@
flavourb = white!70!brown,
flavourc/.code = \def\thing@flavourc{#1},
flavour c/.forward to = /thing/flavourc,
- flavourc = red!50!white,
+ flavourc = red!50!white,
milkshake/.code = \thing@milkshaketrue
- \def\thing@milkshake{#1},
- milkshake/.default = red!20!white,
+ \def\thing@milkshake{#1},
+ milkshake/.default = red!20!white,
wine/.code = \thing@winetrue
- \def\thing@wine{#1},
- wine/.default = red!70!black,
- cocktail/.code = \thing@cocktailtrue,
+ \def\thing@wine{#1},
+ wine/.default = red!70!black,
+ cocktail/.code = \thing@cocktailtrue,
+ banana/.code = \thing@bananatrue
+ \def\thing@banana{#1},
+ banana/.default = yellow!80!orange,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Sport
@@ -269,11 +304,11 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
crystalball/.code = \thing@crystalballtrue
\def\thing@crystalball{#1},
- crystal ball/.forward to = /thing/crystalball,
- crystalball/.default = cyan,
+ crystal ball/.forward to = /thing/crystalball,
+ crystalball/.default = cyan,
magicwand/.code = \thing@magicwandtrue,
magic want/.forward to = /thing/magicwand,
- rollingpin/.code = \thing@rollingpintrue
+ rollingpin/.code = \thing@rollingpintrue
\def\thing@rollingpin{#1},
rolling pin/.forward to = /thing/rollingpin,
rollingpin/.default = brown,
@@ -330,7 +365,12 @@
umbrella closed/.forward to = /thing/umbrellaclosed,
handbag/.code = \thing@handbagtrue
\def\thing@handbag{#1},
- handbag/.default = red!70!black,
+ handbag/.default = red!70!black,
+ stick/.code = \thing@sticktrue
+ \def\thing@stick{#1},
+ stick/.default = brown!50!black,
+ leaf/.store in = \thing@leaf,
+ leaf = green!70!red,
}
\def\thing@draw{%
@@ -345,6 +385,7 @@
\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))*sqrt(abs((\pgf@xx/1cm)*(\pgf@yy/1cm)-(\pgf@xy/1cm)*(\pgf@yx/1cm)))}%
\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+\pgfmathsetmacro{\decoscalefactor}{sign(\tmpscaleA)*sign(\tmpscaleD)*\scalingfactor}%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -355,15 +396,15 @@
% Hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifthing@hat
\fill[\thing@hat,rotate around={-15:(-0.3,2.01)}] (-0.3,2.01) rectangle (0.46,2.31);
- \fill[\thing@hat] (0.05,1.92) ellipse[x radius=0.6, y radius=0.1, rotate=-15];
- \fill[\thing@hat] (0.14,2.2) ellipse[x radius=0.37, y radius=0.08, rotate=-15];
+ \fill[\thing@hat] (0.05,1.92) ellipse[x radius=0.6, y radius=0.1, rotate=-15];
+ \fill[\thing@hat] (0.14,2.2) ellipse[x radius=0.37, y radius=0.08, rotate=-15];
\fi
%
% Tophat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifthing@tophat
\fill[\thing@tophat] (0.1,1.94) ellipse[x radius=0.48, y radius=0.1, rotate=-15];
\fill[\thing@tophat,rotate around={-15:(0.15,2.165)}] (-0.17, 1.94) -- (0.46, 1.94) -- (0.52, 2.39) -- (-0.22, 2.39) -- cycle;
- \fill[\thing@tophat] (0.21,2.385) ellipse[x radius=0.37, y radius=0.08, rotate=-15];
+ \fill[\thing@tophat] (0.21,2.385) ellipse[x radius=0.37, y radius=0.08, rotate=-15];
\fi
%
% Beret %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -378,13 +419,13 @@
% Straw hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifthing@strawhat
\begin{scope}[xshift=-16,rotate=12,yshift=-1]
- \fill[\thing@strawhat,rotate=-15] (0.44,2.0) ellipse[x radius=0.75, y radius=0.1];
+ \fill[\thing@strawhat,rotate=-15] (0.44,2.0) ellipse[x radius=0.75, y radius=0.1];
\fill[\thing@strawhat,rotate=-15] (0.1,2.05) rectangle (0.78,2.5);
- \fill[\thing@strawhat,rotate=-15] (0.44,2.5) ellipse[x radius=0.34, y radius=0.08];
+ \fill[\thing@strawhat,rotate=-15] (0.44,2.5) ellipse[x radius=0.34, y radius=0.08];
\fill[\thing@strawhat,rotate=-15] (-0.3,2.02) -- (1.18,2.02) -- (0.78,2.2) -- (0.1,2.2) -- cycle;
- \fill[\thing@ribbon,rotate=-15] (0.44,2.2) ellipse[x radius=0.34, y radius=0.08];
+ \fill[\thing@ribbon,rotate=-15] (0.44,2.2) ellipse[x radius=0.34, y radius=0.08];
\fill[\thing@ribbon,rotate=-15] (0.1,2.2) rectangle (0.78,2.3);
- \fill[\thing@strawhat,rotate=-15] (0.44,2.3) ellipse[x radius=0.34, y radius=0.08];
+ \fill[\thing@strawhat,rotate=-15] (0.44,2.3) ellipse[x radius=0.34, y radius=0.08];
\end{scope}
\fi
%
@@ -401,8 +442,8 @@
%
% witch %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifthing@witch
- \begin{scope}[xshift=-26]
- \fill[\thing@witch,rotate=-15] (0.44,2.13) ellipse[x radius=0.75, y radius=0.17];
+ \begin{scope}[xshift=-26]
+ \fill[\thing@witch,rotate=-15] (0.44,2.13) ellipse[x radius=0.75, y radius=0.17];
\fill[\thing@witch,rotate=-15] (0.05,2.2)--(0.45,3.2)--(0.82,2.2);
\end{scope}
\fi
@@ -410,9 +451,7 @@
% magic hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifthing@magichat
\begin{scope}[xshift=-26]
- \path[preaction={fill, \thing@magichat!100},rotate=-5,
- pattern=fivepointed stars, pattern color=\thing@magicstars!100]
- (0.36,1.95)--(0.86,2.95)--(1.20,1.85);
+ \path[preaction={fill, \thing@magichat!100},rotate=-5,pattern=fivepointed stars, pattern color=\thing@magicstars!100] (0.36,1.95)--(0.86,2.95)--(1.20,1.85);
\end{scope}
\fi
%
@@ -479,17 +518,8 @@
% Santa %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifthing@santa
\begin{scope}[xshift=-26]
- \fill[\thing@santa]
- (0.430,1.803) .. controls (0.590,2.174) and (0.837,2.065) ..
- (1.118,1.954) .. controls (1.679,1.731) and (1.328,1.193) ..
- (1.647,1.057) .. controls (1.638,1.255) and (1.745,2.104) ..
- (1.168,2.270) .. controls (0.867,2.356) and (0.536,2.280) ..
- (0.430,1.803) -- cycle;
- \fill[white!80!brown]
- (0.44,1.733) .. controls (0.211,2.299) and (1.082,2.188) ..
- (1.456,1.759) .. controls (1.534,1.637) and (1.480,1.545) ..
- (1.400,1.566) .. controls (1.265,1.714) and (0.577,2.267) ..
- (0.44,1.733) -- cycle;
+ \fill[\thing@santa] (0.430,1.803) .. controls (0.590,2.174) and (0.837,2.065) .. (1.118,1.954) .. controls (1.679,1.731) and (1.328,1.193) .. (1.647,1.057) .. controls (1.638,1.255) and (1.745,2.104) .. (1.168,2.270) .. controls (0.867,2.356) and (0.536,2.280) .. (0.430,1.803) -- cycle;
+ \fill[white!80!brown] (0.44,1.733) .. controls (0.211,2.299) and (1.082,2.188) .. (1.456,1.759) .. controls (1.534,1.637) and (1.480,1.545) .. (1.400,1.566) .. controls (1.265,1.714) and (0.577,2.267) .. (0.44,1.733) -- cycle;
\fill[white!80!brown] (1.6,1.0) circle[radius=0.17];
\end{scope}
\fi
@@ -497,7 +527,7 @@
% Chef hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifthing@chef
\begin{scope}[xshift=-26]
- \fill[\thing@chef,rotate=-15] (0.44,2.1) ellipse[x radius=0.37, y radius=0.08];
+ \fill[\thing@chef,rotate=-15] (0.44,2.1) ellipse[x radius=0.37, y radius=0.08];
\fill[\thing@chef,rotate=-15] (0.07,2.1) rectangle (0.81,2.55);
\fill[\thing@chef] (1.01,2.47) circle[radius=0.17];
\fill[\thing@chef] (1.24,2.35) circle[radius=0.15];
@@ -509,7 +539,7 @@
% graduate hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifthing@graduate
\begin{scope}[xshift=-26]
- \fill[\thing@graduate,rotate=-15] (0.44,2.1) ellipse[x radius=0.37, y radius=0.1];
+ \fill[\thing@graduate,rotate=-15] (0.44,2.1) ellipse[x radius=0.37, y radius=0.1];
\fill[\thing@graduate,rotate=-15] (0.07,2.1) rectangle (0.81,2.3);
\fill[\thing@graduate] (0.3,2.25) -- (1.05,2.35) -- (1.7,1.95) -- (0.92,1.85) -- cycle;
\fill[\thing@tassel,rounded corners=\scalingfactor*1] (1.12,1.89) -- (1.01,2.1) -- (1.09,2.11) -- (1.2,1.9) -- (1.2,1.3) -- (1.12,1.3) -- cycle;
@@ -517,6 +547,20 @@
\end{scope}
\fi
%
+% sombrero %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@sombrero
+ \fill[\thing@sombrero] (-.45,2) to[in=200] (0,2.8) to[out=-20] (.45,2) -- cycle;
+ \fill[\thing@sombrero] (-0.65, 1.75) .. controls (-0.85, 1.7) and (-0.85, 1.9) .. (-0.85, 1.9) .. controls (-0.30, 2.2) and (0.30, 2.2) .. ( 0.85, 1.9) .. controls ( 0.85, 1.9) and (0.85, 1.7) .. ( 0.65, 1.75) .. controls ( 0.30, 1.95) and (-0.30, 1.95) .. (-0.65, 1.75) -- cycle;
+ \draw[\thing@sombrerob,line width=\scalingfactor*0.8pt] (-0.85, 1.9) .. controls (-0.30, 2.2) and (0.30, 2.2) .. ( 0.85, 1.9);
+ \draw[decorate,decoration={zigzag, amplitude=\decoscalefactor*1pt, segment length=\scalingfactor*6pt},\thing@sombreroa, line width=\scalingfactor*1pt] (-0.81, 1.8) .. controls (-0.30, 2.1) and (0.30, 2.1) .. ( 0.82, 1.8);
+ \begin{scope}
+ \clip (-.45,2) to[in=200] (0,2.8) to[out=-20] (.45,2) -- cycle;
+ \draw[decorate,decoration={zigzag, amplitude=\decoscalefactor*1pt, segment length=\scalingfactor*3pt},\thing@sombreroa, line width=\scalingfactor*1pt] (-.4,2.4) to[bend left] (.4,2.4);
+ \fill[decorate,decoration={shape backgrounds,shape=circle, shape size=\scalingfactor*2pt, shape evenly spread=7}, \thing@sombreroc] (-.3,2.6) to[bend left] (.3,2.6);
+ \fill[decorate,decoration={shape backgrounds,shape=circle,shape size=\scalingfactor*2pt,shape evenly spread=9},\thing@sombreroc] (-.4,2.18) to[bend left] (.4,2.18);
+ \end{scope}
+\fi
+%
% alien %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifthing@alien
\fill[\thing@alien,rotate around={15:(-0.175,2.115)}] (-0.2,1.93) rectangle (-0.15,2.3);
@@ -534,8 +578,7 @@
% book %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifthing@book
\begin{scope}[xshift=-25,yshift=1]
- \fill[\thing@bookcolour,rotate=-20]
- (0.40,1.20) rectangle (0.80,0.60);
+ \fill[\thing@bookcolour,rotate=-20] (0.40,1.20) rectangle (0.80,0.60);
\node[rotate=-20*\yscalefactor/\xscalefactor, color=white] at (0.88,0.70) {\thing@book};%
\end{scope}
\fi
@@ -562,7 +605,7 @@
% think bubble %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifthing@think
\begin{scope}[xshift=-26]
- \fill[\thing@bubblecolour] (2,2.4) ellipse[x radius=0.7, y radius=0.35];
+ \fill[\thing@bubblecolour] (2,2.4) ellipse[x radius=0.7, y radius=0.35];
\fill[\thing@bubblecolour] (1.55,2.35) circle[radius=0.25] (2.0,2.15) circle[radius=0.25] (2.4,2.25) circle[radius=0.25] (1.6,2.55) circle[radius=0.25] (2.0,2.6) circle[radius=0.25] (2.35,2.5) circle[radius=0.25] (1.65,1.95) circle[radius=0.1] (1.55,1.80) circle[radius=0.06] (1.47,1.70) circle[radius=0.03];
\node at (2,2.4) {\thing@think};
\end{scope}
@@ -579,9 +622,9 @@
\begin{scope}[xshift=-28,yshift=2]
\fill[brown] (1.00,0.60) ellipse[x radius=0.4, y radius=0.2];
\fill[red!70!black] (1.00,0.60) ellipse[x radius=0.34, y radius=0.16];
- \fill[white!85!yellow] (1.15,0.65) ellipse[x radius=0.065, y radius=0.04];
- \fill[white!85!yellow] (0.81,0.57) ellipse[x radius=0.065, y radius=0.04];
- \fill[white!85!yellow] (0.95,0.68) ellipse[x radius=0.065, y radius=0.04];
+ \fill[white!85!yellow] (1.15,0.65) ellipse[x radius=0.065, y radius=0.04];
+ \fill[white!85!yellow] (0.81,0.57) ellipse[x radius=0.065, y radius=0.04];
+ \fill[white!85!yellow] (0.95,0.68) ellipse[x radius=0.065, y radius=0.04];
\fill[white!85!yellow] (1.02,0.54) ellipse[x radius=0.065, y radius=0.04];
\fill[green!40!brown] (1.09,0.54) ellipse[x radius=0.07, y radius=0.02];
\fill[green!40!brown,rotate=20] (1.0,0.34) ellipse[x radius=0.07, y radius=0.02];
@@ -589,23 +632,23 @@
\fill[green!40!brown] (1.00,0.60) ellipse[x radius=0.03, y radius=0.06];
\end{scope}
\fi
-% no pizza %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% not pizza %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifthing@davidlikespineapplepizza
\begin{scope}[xshift=-28,yshift=2]
\fill[brown] (1.00,0.60) ellipse[x radius=0.4, y radius=0.2];
\fill[red!70!black] (1.00,0.60) ellipse[x radius=0.34, y radius=0.16];
- \fill[yellow!70!brown] (1.15,0.65) ellipse[x radius=0.08, y radius=0.06];
- \fill[red!70!black] (1.15,0.65) ellipse[x radius=0.04, y radius=0.03];
- \fill[yellow!70!brown] (0.81,0.57) ellipse[x radius=0.08, y radius=0.06];
- \fill[red!70!black] (0.81,0.57) ellipse[x radius=0.04, y radius=0.03];
- \fill[yellow!70!brown] (0.95,0.68) ellipse[x radius=0.08, y radius=0.06];
- \fill[red!70!black] (0.95,0.68) ellipse[x radius=0.04, y radius=0.03];
+ \fill[yellow!70!brown] (1.15,0.65) ellipse[x radius=0.08, y radius=0.06];
+ \fill[red!70!black] (1.15,0.65) ellipse[x radius=0.04, y radius=0.03];
+ \fill[yellow!70!brown] (0.81,0.57) ellipse[x radius=0.08, y radius=0.06];
+ \fill[red!70!black] (0.81,0.57) ellipse[x radius=0.04, y radius=0.03];
+ \fill[yellow!70!brown] (0.95,0.68) ellipse[x radius=0.08, y radius=0.06];
+ \fill[red!70!black] (0.95,0.68) ellipse[x radius=0.04, y radius=0.03];
\fill[yellow!70!brown] (1.02,0.54) ellipse[x radius=0.08, y radius=0.06];
- \fill[red!70!black] (1.02,0.54) ellipse[x radius=0.04, y radius=0.03];
+ \fill[red!70!black] (1.02,0.54) ellipse[x radius=0.04, y radius=0.03];
\fill[green!40!brown] (1.09,0.54) ellipse[x radius=0.07, y radius=0.02];
\fill[green!40!brown,rotate=20] (1.0,0.34) ellipse[x radius=0.07, y radius=0.02];
\fill[green!40!brown,rotate=-20] (0.9,1.05) ellipse[x radius=0.07, y radius=0.02];
- \fill[green!40!brown] (1.00,0.60) ellipse[x radius=0.03, y radius=0.06];
+ \fill[green!40!brown] (1.00,0.60) ellipse[x radius=0.03, y radius=0.06];
\end{scope}
\fi
%
@@ -645,7 +688,7 @@
\fill[\thing@cone,rotate=-20] (0.35,1.20)--(0.50,0.60)--(0.75,1.20);
\fill[\thing@flavoura] (0.85,1.03) circle[radius=0.12];
\fill[\thing@flavourb] (1.05,0.95) circle[radius=0.12];
- \fill[\thing@flavourc] (0.95,1.1) circle[radius=0.12];
+ \fill[\thing@flavourc] (0.95,1.1) circle[radius=0.12];
\end{scope}
\fi
%
@@ -655,7 +698,7 @@
\fill[cyan!10!white, rotate=-10] (0.8,0.50) ellipse[x radius=0.17, y radius=0.05];
\fill[cyan!10!white, rotate=-10] (0.8,0.55) ellipse[x radius=0.12, y radius=0.03];
\begin{scope}
- \clip[rotate=-10] (0.58,0.5) rectangle (1.02,1.03);
+ \clip[rotate=-10] (0.58,0.5) rectangle (1.02,1.03);
\fill[cyan!10!white, rotate=-10] (0.8,0.94) ellipse[x radius=0.18, y radius=0.4];
\fill[\thing@milkshake, rotate=-10] (0.8,0.94) ellipse[x radius=0.15, y radius=0.36];
\end{scope}
@@ -663,7 +706,7 @@
\fill[red!90!black] (1.0,1.1) circle[radius=0.05];
\fill[white!85!yellow] (0.94,1.05) circle[radius=0.05] (1.03,1.03) circle[radius=0.05];
\fill[cyan!10!white, rotate=-10] (0.8,0.50) ellipse[x radius=0.17, y radius=0.05];
- \fill[red!90!black,rotate=20] (1.2,0.58) rectangle (1.22,0.85);
+ \fill[red!90!black,rotate=20] (1.2,0.58) rectangle (1.22,0.85);
\end{scope}
\fi
%
@@ -674,11 +717,11 @@
\fill[cyan!10!white, rotate=-10] (0.8,0.55) ellipse[x radius=0.12, y radius=0.03];
\fill[cyan!10!white, rotate=-10] (0.8,0.7) ellipse[x radius=0.03, y radius=0.2];
\begin{scope}
- \clip[rotate=-10] (0.58,0.5) rectangle (1.02,1.03);
+ \clip[rotate=-10] (0.58,0.5) rectangle (1.02,1.03);
\fill[cyan!10!white, rotate=-10] (0.8,1.1) ellipse[x radius=0.18, y radius=0.4];
\end{scope}
\begin{scope}
- \clip[rotate=-10] (0.58,0.5) rectangle (1.02,0.87);
+ \clip[rotate=-10] (0.58,0.5) rectangle (1.02,0.87);
\fill[\thing@wine, rotate=-10] (0.8,1.1) ellipse[x radius=0.15, y radius=0.36];
\end{scope}
\end{scope}
@@ -697,6 +740,19 @@
\end{scope}
\fi
%
+% banana %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@banana
+ \begin{scope}[yshift=27, xshift=7,rotate=25]
+ \fill[\thing@banana!30!] (0.02,0) .. controls (0.21,0.20) and (0.21,0.40) .. (0.02,0.6) arc [start angle=60,end angle=120, radius =0.04] .. controls (0.07,0.40) and (0.07,0.20) .. (-0.02,0) --cycle ;
+ %peel
+ \begin{scope}
+ \clip (-0.04,-0.01) rectangle (0.20,0.3);
+ \fill[\thing@banana] (0.03,0) .. controls (0.22,0.20) and (0.22,0.40) .. (0.03,0.6) arc [start angle=60,end angle=120, radius =0.06] .. controls (0.06,0.40) and (0.06,0.20) .. (-0.03,0);
+ \end{scope}
+ \fill[\thing@banana!60!] (0.12,0.3) arc [start angle=140, end angle=-100, y radius=0.20, x radius=0.06] arc [start angle=-90, end angle=90, y radius=0.15, x radius=0.02] (0.12,0.3) arc [start angle=60, end angle=270, y radius=0.15, x radius=0.1] arc [start angle=270, end angle=90, y radius=0.13, x radius=0.04];
+ \end{scope}
+\fi
+%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Sport
@@ -740,7 +796,7 @@
\ifthing@crystalball
\shade[ball color=\thing@crystalball,opacity=0.7] (0,0.8) circle[radius=0.33];
\fi
-%
+%
% magic wand %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifthing@magicwand
\begin{scope}[xshift=-16,yshift=2]
@@ -768,51 +824,36 @@
% torch %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifthing@torch
\begin{scope}[xshift=-26]
- \fill[red!50!yellow]
- (1.4338,1.025) .. controls (1.4308,0.8877) and (1.3468,0.8997) ..
- (1.2447,0.748) .. controls (1.1427,0.8982) and (1.0721,0.8892) ..
- (1.0646,1.024) .. controls (1.0541,1.1714) and (1.2642,1.1654) ..
- (1.2492,1.386) .. controls (1.3093,1.3110) and (1.4383,1.2705) ..
- (1.4338,1.025) -- cycle;
- \fill[red!25!yellow, scale=0.67, xshift=17, yshift=15]
- (1.4338,1.025) .. controls (1.4308,0.8877) and (1.3468,0.8997) ..
- (1.2447,0.748) .. controls (1.1427,0.8982) and (1.0721,0.8892) ..
- (1.0646,1.024) .. controls (1.0541,1.1714) and (1.2642,1.1654) ..
- (1.2492,1.386) .. controls (1.3093,1.3110) and (1.4383,1.2705) ..
- (1.4338,1.025) -- cycle;
- \fill[white!50!yellow, scale=0.4, xshift=53.5, yshift=45.3]
- (1.4338,1.025) .. controls (1.4308,0.8877) and (1.3468,0.8997) ..
- (1.2447,0.748) .. controls (1.1427,0.8982) and (1.0721,0.8892) ..
- (1.0646,1.024) .. controls (1.0541,1.1714) and (1.2642,1.1654) ..
- (1.2492,1.386) .. controls (1.3093,1.3110) and (1.4383,1.2705) ..
- (1.4338,1.025) -- cycle;
+ \fill[red!50!yellow] (1.4338,1.025) .. controls (1.4308,0.8877) and (1.3468,0.8997) .. (1.2447,0.748) .. controls (1.1427,0.8982) and (1.0721,0.8892) .. (1.0646,1.024) .. controls (1.0541,1.1714) and (1.2642,1.1654) .. (1.2492,1.386) .. controls (1.3093,1.3110) and (1.4383,1.2705) .. (1.4338,1.025) -- cycle;
+ \fill[red!25!yellow, scale=0.67, xshift=17, yshift=15] (1.4338,1.025) .. controls (1.4308,0.8877) and (1.3468,0.8997) .. (1.2447,0.748) .. controls (1.1427,0.8982) and (1.0721,0.8892) .. (1.0646,1.024) .. controls (1.0541,1.1714) and (1.2642,1.1654) .. (1.2492,1.386) .. controls (1.3093,1.3110) and (1.4383,1.2705) .. (1.4338,1.025) -- cycle;
+ \fill[white!50!yellow, scale=0.4, xshift=53.5, yshift=45.3] (1.4338,1.025) .. controls (1.4308,0.8877) and (1.3468,0.8997) .. (1.2447,0.748) .. controls (1.1427,0.8982) and (1.0721,0.8892) .. (1.0646,1.024) .. controls (1.0541,1.1714) and (1.2642,1.1654) .. (1.2492,1.386) .. controls (1.3093,1.3110) and (1.4383,1.2705) .. (1.4338,1.025) -- cycle;
\fill[\thing@torch,rounded corners=\scalingfactor*1]
(1.1,0.96) -- (0.77,0.25) -- (0.83,0.25) -- (1.3,0.86) -- cycle;
\fill[\thing@torch,rotate=-28] (0.62,1.32) ellipse[x radius=0.2, y radius=0.08];
\end{scope}
\fi%
-%
+%
% basket %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifthing@basket
\begin{scope}[xshift=-28.5]
\fill[\thing@basket, start angle=180, end angle=360, x radius=0.35, y radius=0.35] (0.65,0.61) arc -- cycle;
\fill[\thing@basket, start angle=180, end angle=0, even odd rule] [x radius=0.35, y radius=0.5] (0.65,0.6) arc -- cycle [x radius=0.3, y radius=0.45] (0.7,0.6) arc -- cycle;
- \fill[\thing@basket, even odd rule] (1,0.6) ellipse[x radius=0.35, y radius=0.1] (1,0.6) ellipse[x radius=0.3, y radius=0.07];
+ \fill[\thing@basket, even odd rule] (1,0.6) ellipse[x radius=0.35, y radius=0.1] (1,0.6) ellipse[x radius=0.3, y radius=0.07];
\fill[\thing@basket!75!black] (1,0.6) ellipse[x radius=0.3, y radius=0.07];
- \end{scope}
-\fi%
+ \end{scope}
+\fi%
%
% easter basket %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifthing@easter
\begin{scope}[xshift=-28.5]
\begin{scope}
- \clip [start angle=180, end angle=0, x radius=0.3, y radius=0.45] (0.7,0.6) arc -- cycle [start angle=180, end angle=360, x radius=0.3, y radius=0.07] (0.7,0.6) arc -- cycle;
+ \clip [start angle=180, end angle=0, x radius=0.3, y radius=0.45] (0.7,0.6) arc -- cycle [start angle=180, end angle=360, x radius=0.3, y radius=0.07] (0.7,0.6) arc -- cycle;
\fill[\thing@eggb, rotate=-5] (0.95,0.72) ellipse[x radius=0.09, y radius=0.13];
\fill[\thing@egga, rotate=10] (0.94,0.42) ellipse[x radius=0.09, y radius=0.13];
\fill[\thing@eggc, rotate=-30] (0.7,1.08) ellipse[x radius=0.09, y radius=0.13];
\end{scope}
- \end{scope}
-\fi%
+ \end{scope}
+\fi%
%
% crozier %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifthing@crozier
@@ -821,7 +862,7 @@
\clip [rotate=-20] (0.6,2.3) rectangle (1.1,1.999);
\fill[even odd rule,\thing@crozier] (1.5,1.6) circle[radius=0.2] (1.5,1.6) circle[radius=0.1];
\end{scope}
- \fill[\thing@crozier,rotate=-20] (0.663,0.5) rectangle (0.763,2.0);
+ \fill[\thing@crozier,rotate=-20] (0.663,0.5) rectangle (0.763,2.0);
\end{scope}
\fi
%
@@ -877,4 +918,38 @@
\fill[\thing@handbag!70!black] (0.4143, 0.4354) .. controls (0.5139, 0.9811) and (0.1204, 1.0719) .. (0.0134, 0.5155) -- (0.0957, 0.4996) .. controls (0.1753, 0.8952) and (0.3949, 0.8883) .. (0.3324, 0.4536) -- cycle;
\fi
%
+% stick %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@stick
+ \begin{scope}[rotate=-30,yshift=26,xshift=-7]
+ %leaf
+ \begin{scope}[rotate=60, xshift=8.2,yshift=8.1]
+ \fill[\thing@leaf] (-0.01,0) .. controls (-0.1,0) and (-0.02, 0.2) .. (0,0.2) .. controls (0.02, 0.2) and (0.1,0) .. (0.01,0.0);
+ \path[clip] (-0.04,-0.04)-- (-0.01,0) .. controls (-0.1,0) and (-0.02, 0.2) .. (0,0.2) .. controls (0.02, 0.2) and (0.1,0) .. (0.01,0)-- (0.04,-0.04) --cycle;
+ \draw[\thing@leaf!80!, line width=0.1] (0,-0.04) -- (0,0.2) \foreach \i in {0.02,0.04,...,0.2} {(0,\i) -- ++(0.1,\i) (0,\i) -- ++(-0.1,\i)} ;
+ \end{scope}
+ %stick itself
+ \fill[\thing@stick!90!red] (-0.04,0.8) -- (-0.04,0.4) arc[start angle=345,end angle=270,radius=0.03] -- ++(0,-0.01) arc[start angle=90,end angle=15,radius=0.03] -- (-0.04,0) arc [start angle=180, end angle=360 ,x radius=0.04, y radius=0.02] -- (0.04, 0.4) arc [start angle=180, end angle=120, radius=0.08] arc [start angle=-90, end angle=90, x radius=0.02, y radius=0.04] arc [start angle=240, end angle=180, radius=0.08] -- (0.04,0.75) arc [start angle=0, end angle=120 ,x radius=0.04, y radius=0.02] --cycle;
+ \fill[\thing@stick!90!] (0.08, 0.51) ellipse [x radius=0.02, y radius=0.04] (0,0.75) ellipse [x radius=0.04, y radius=0.02] ;
+ \draw[\thing@stick!90!red, line width=0.06] (0.08, 0.51) ellipse [x radius=0.016, y radius=0.032]
+ ellipse [x radius=0.012, y radius=0.024] ellipse [x radius=0.008, y radius=0.016] (0,0.75) ellipse [y radius=0.016, x radius=0.032] ellipse [y radius=0.012, x radius=0.024] ellipse [y radius=0.008, x radius=0.016] ;
+ \fill[\thing@stick!90!red] (0.08, 0.51) ellipse [x radius=0.004, y radius=0.008] (0,0.75) ellipse [x radius=0.008, y radius=0.004];
+ \end{scope}
+\fi
+%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Random items
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\pgfmathdeclarerandomlist{head}{\thing@listhead}
+\pgfmathdeclarerandomlist{accessories}{\thing@listacces}
+
+\def\shufflethings{%
+ \pgfmathrandomitem{\head}{head}%
+ \edef\randomhead{\head}%
+ \pgfmathrandomitem{\accessories}{accessories}%
+ \edef\randomaccessories{\accessories}%
}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-anteaters.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-anteaters.sty
index 6e2b75b30e2..a8dfafb0b69 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-anteaters.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-anteaters.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-anteaters}[2022/06/17 version v1.0 Drawing anteaters in TikZ]
+\ProvidesPackage{tikzlings-anteaters}[2025/01/05 version v2.2 Drawing anteaters in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -31,6 +31,8 @@
\newif\ifanteater@threeD
\newif\ifanteater@back
\newif\ifanteater@contour
+\newif\ifanteater@leftstep
+\newif\ifanteater@rightstep
\tikzset{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -48,24 +50,28 @@
body/.store in = \anteater@body,
body = red!55!green!75!blue!66!white,
eye/.store in = \anteater@eye,
- eye = \anteater@body!70!brown!50!darkgray,
+ eye = \anteater@body!70!brown!50!darkgray,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 3D/.code = \anteater@threeDtrue,
- back/.code = \anteater@backtrue,
+ 3D/.code = \anteater@threeDtrue,
+ leftstep/.code = \anteater@leftsteptrue,
+ left step/.forward to = /anteater/leftstep,
+ rightstep/.code = \anteater@rightsteptrue,
+ right step/.forward to = /anteater/rightstep,
+ back/.code = \anteater@backtrue,
contour/.code = \anteater@contourtrue
\def\anteater@contour{#1},
- contour/.default = black,
- outline/.forward to = /anteater/contour,
+ contour/.default = black,
+ outline/.forward to = /anteater/contour,
}
\def\anteater@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.75,0.1) rectangle (1.12,2.26);
@@ -83,7 +89,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -101,16 +107,25 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname anteaterhookbackground\endcsname
\csname tikzlinghookbackground\endcsname
- %
+ %
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
- \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \ifanteater@leftstep
+ \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
+ \else% step
+ \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \fi% step
+ %
+ \ifanteater@rightstep
+ \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
+ \else% step
+ \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \fi% step
%
% Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifanteater@back
@@ -125,9 +140,8 @@
%
% Collar %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifanteater@back
- \anteater@part@draw[\anteater@body!45!white!95!orange] (-0,1.47) ellipse [x radius=0.36, y radius=0.28];
- \anteater@part@draw[\anteater@body!70!brown!50!darkgray]
- (-0,1.47) ellipse [x radius=0.35, y radius=0.23];
+ \anteater@part@draw[\anteater@body!45!white!95!orange] (-0,1.47) ellipse [x radius=0.36, y radius=0.28];
+ \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (-0,1.47) ellipse [x radius=0.35, y radius=0.23];
\else% back
\anteater@part@draw[\anteater@body!45!white!95!orange] (0.33, 1.55) -- (-0.33, 1.55) .. controls (-0.5, 1.05) and (-0.1, 0.95) .. (0, 0.60) .. controls (0.1, 0.95) and (0.5, 1.05) .. (0.33, 1.55) -- cycle;
\anteater@part@draw[\anteater@body!70!brown!50!darkgray] (0.33, 1.55) -- (-0.33, 1.55) .. controls (-0.45, 1.1) and (-0.1, 1) .. (0, 0.70) .. controls (0.1, 1) and (0.45, 1.1) .. (0.33, 1.55) -- cycle;
@@ -136,15 +150,15 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname anteaterhookbelly\endcsname
\csname tikzlinghookbelly\endcsname
- %
+ %
\ifanteater@back
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\anteater@part@draw[\anteater@body] (-0,1.73) ellipse [x radius=0.36, y radius=0.33];
%
% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (0.5551, 2.2281) .. controls (0.4961, 2.2273) and (0.4390, 2.2093) .. (0.3831, 2.1919) .. controls (0.3282, 2.173) and (0.2725, 2.1539) .. (0.2231, 2.1228) .. controls (0.1875, 2.0984) and (0.1524, 2.0637) .. (0.1470, 2.0187) .. controls (0.1446, 2.0028) and (0.1518, 1.9881) .. (0.1584, 1.9744) .. controls (0.1706, 1.9343) and (0.2090, 1.9063) .. (0.25, 1.9017) .. controls (0.3079, 1.8943) and (0.3684, 1.9134) .. (0.4132, 1.9504) .. controls (0.4657, 1.9988) and (0.5111, 2.0545) .. (0.5513, 2.1133) .. controls (0.5692, 2.1404) and (0.5854, 2.1692) .. (0.5945, 2.2004) .. controls (0.5989, 2.2232) and (0.5717, 2.2282) .. (0.5551, 2.2281) -- cycle;
- \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (-0.5551, 2.2281) .. controls (-0.4961, 2.2273) and (-0.4390, 2.2093) .. (-0.3831, 2.1919) .. controls (-0.3282, 2.173) and (-0.2725, 2.1539) .. (-0.2231, 2.1228) .. controls (-0.1875, 2.0984) and (-0.1524, 2.0637) .. (-0.1470, 2.0187) .. controls (-0.1446, 2.0028) and (-0.1518, 1.9881) .. (-0.1584, 1.9744) .. controls (-0.1706, 1.9343) and (-0.2090, 1.9063) .. (-0.25, 1.9017) .. controls (-0.3079, 1.8943) and (-0.3684, 1.9134) .. (-0.4132, 1.9504) .. controls (-0.4657, 1.9988) and (-0.5111, 2.0545) .. (-0.5513, 2.1133) .. controls (-0.5692, 2.1404) and (-0.5854, 2.1692) .. (-0.5945, 2.2004) .. controls (-0.5989, 2.2232) and (-0.5717, 2.2282) .. (-0.5551, 2.2281) -- cycle;
- %
+ \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (0.5551, 2.2281) .. controls (0.4961, 2.2273) and (0.4390, 2.2093) .. (0.3831, 2.1919) .. controls (0.3282, 2.173) and (0.2725, 2.1539) .. (0.2231, 2.1228) .. controls (0.1875, 2.0984) and (0.1524, 2.0637) .. (0.1470, 2.0187) .. controls (0.1446, 2.0028) and (0.1518, 1.9881) .. (0.1584, 1.9744) .. controls (0.1706, 1.9343) and (0.2090, 1.9063) .. (0.25, 1.9017) .. controls (0.3079, 1.8943) and (0.3684, 1.9134) .. (0.4132, 1.9504) .. controls (0.4657, 1.9988) and (0.5111, 2.0545) .. (0.5513, 2.1133) .. controls (0.5692, 2.1404) and (0.5854, 2.1692) .. (0.5945, 2.2004) .. controls (0.5989, 2.2232) and (0.5717, 2.2282) .. (0.5551, 2.2281) -- cycle;
+ \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (-0.5551, 2.2281) .. controls (-0.4961, 2.2273) and (-0.4390, 2.2093) .. (-0.3831, 2.1919) .. controls (-0.3282, 2.173) and (-0.2725, 2.1539) .. (-0.2231, 2.1228) .. controls (-0.1875, 2.0984) and (-0.1524, 2.0637) .. (-0.1470, 2.0187) .. controls (-0.1446, 2.0028) and (-0.1518, 1.9881) .. (-0.1584, 1.9744) .. controls (-0.1706, 1.9343) and (-0.2090, 1.9063) .. (-0.25, 1.9017) .. controls (-0.3079, 1.8943) and (-0.3684, 1.9134) .. (-0.4132, 1.9504) .. controls (-0.4657, 1.9988) and (-0.5111, 2.0545) .. (-0.5513, 2.1133) .. controls (-0.5692, 2.1404) and (-0.5854, 2.1692) .. (-0.5945, 2.2004) .. controls (-0.5989, 2.2232) and (-0.5717, 2.2282) .. (-0.5551, 2.2281) -- cycle;
+ %
\else% back
%
% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -154,19 +168,18 @@
(-0.4086, 1.9465) .. controls (-0.4679, 1.9952) and (-0.6205, 2.1813) .. (-0.5862, 2.2146) .. controls (-0.5517, 2.2477) and (-0.3434, 2.1152) .. (-0.2841, 2.0665) .. controls (-0.2249, 2.0177) and (-0.2048, 1.9515) .. (-0.2391, 1.9184) .. controls (-0.2736, 1.8853) and (-0.3494, 1.8979) .. (-0.40861, 1.9465) -- cycle;
%
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \anteater@part@draw[\anteater@body]
- (0.33, 1.71) .. controls (0.16, 1.52) and (0.1, 1.5) .. (0.08, 1.05) .. controls (0.07, 1) and (-0.07, 1) .. (-0.08, 1.05) .. controls (-0.1, 1.5) and (-0.16, 1.52) .. (-0.33, 1.7) .. controls (-0.45, 1.85) and (-0.22, 2.05) .. (0, 2.05) .. controls (0.22, 2.05) and (0.45, 1.85) .. (0.33, 1.7) -- cycle;
+ \anteater@part@draw[\anteater@body] (0.33, 1.71) .. controls (0.16, 1.52) and (0.1, 1.5) .. (0.08, 1.05) .. controls (0.07, 1) and (-0.07, 1) .. (-0.08, 1.05) .. controls (-0.1, 1.5) and (-0.16, 1.52) .. (-0.33, 1.7) .. controls (-0.45, 1.85) and (-0.22, 2.05) .. (0, 2.05) .. controls (0.22, 2.05) and (0.45, 1.85) .. (0.33, 1.7) -- cycle;
%
% Cheeks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\anteater@part@draw[\anteater@body!45!white!95!orange] (0.3508, 1.739) .. controls (0.3508, 1.739) and (0.2861, 1.8489) .. (0.1571, 1.7664) .. controls (0.0279, 1.684) and (0.0627, 1.0524) .. (0.0627, 1.0524) .. controls (0.0627, 1.0524) and (0.131, 1.3772) .. (0.2314, 1.44) .. controls (0.3599, 1.5206) and (0.3508, 1.739) .. (0.3508, 1.739) -- cycle
(-0.3508, 1.739) .. controls (-0.3508, 1.739) and (-0.2861, 1.8489) .. (-0.1571, 1.7664) .. controls (-0.0279, 1.684) and (-0.0627, 1.0524) .. (-0.0627, 1.0524) .. controls (-0.0627, 1.0524) and (-0.131, 1.3772) .. (-0.2314, 1.44) .. controls (-0.3599, 1.5206) and (-0.3508, 1.739) .. (-0.3508, 1.739) -- cycle;
- %
+ %
% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\anteater@part@draw[\anteater@body!70!brown!50!darkgray] (0, 1.08) ellipse[x radius=0.08, y radius=0.05];
%
% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\anteater@part@draw[\anteater@eye] (0.23, 1.7) circle[radius=0.05];
- \anteater@part@draw[\anteater@eye] (-0.23, 1.7) circle[radius=0.05];
+ \anteater@part@draw[\anteater@eye] (-0.23, 1.7) circle[radius=0.05];
\fi% back
%
% Tail if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -177,7 +190,7 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname anteaterhookbody\endcsname
\csname tikzlinghookbody\endcsname
- %
+ %
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -190,41 +203,47 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-anteaters}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-anteaters}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic anteater}}
%\anteater
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic anteater can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\anteater[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of the eyes can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\anteater[eye=red]
%\end{tcblisting}
%
+%And the anteater can lift its legs:
+%\begin{tcblisting}{title={Walking}}
+%\anteater[leftstep]
+%\anteater[rightstep,xshift=2cm]
+%\end{tcblisting}
+%
%To view the anteater from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\anteater[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the anteater 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the anteater 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\anteater[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\anteater[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-apes.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-apes.sty
new file mode 100644
index 00000000000..58edf5c636a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-apes.sty
@@ -0,0 +1,401 @@
+ % !TeX root = ./examples/ape.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% This package is part of the TikZlings package
+%% A package to bring cute little animals and other beings into tikz
+%% Maintained by samcarter
+%%
+%% Project repository and bug tracker:
+%% https://github.com/samcarter/tikzlings
+%%
+%% Released under the LaTeX Project Public License v1.3c or later
+%% See https://www.latex-project.org/lppl.txt
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-apes}[2025/01/05 version v2.2 Drawing apes in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-addons}
+
+\newcommand*{\ape}[1][]{%
+ \begin{scope}%
+ \tikzset{/ape/.cd,#1}%
+ \ape@draw%
+ \end{scope}%
+ \thing[#1]%
+ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \csname apehookforeground\endcsname
+ \csname tikzlinghookforeground\endcsname
+}
+
+\newif\ifape@threeD
+\newif\ifape@handposition@hearnoevil
+\newif\ifape@handposition@seenoevil
+\newif\ifape@handposition@speaknoevil
+\newif\ifape@handposition@clap
+\newif\ifape@handposition@waving
+\newif\ifape@back
+\newif\ifape@contour
+\newif\ifape@openmouth
+
+\tikzset{
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Pass unknown keys on to tikz
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /ape/.search also={/tikz,/pgf,/thing},
+ /ape/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.store in = \ape@body,
+ body = red!15!brown!80!black,
+ eye/.store in = \ape@eye,
+ eye = \ape@body!40!black,
+ eyes/.forward to = /ape/eye,
+ skin/.store in = \ape@skin,
+ skin = \ape@body!50!gray,
+ nose/.store in = \ape@nose,
+ nose = \ape@skin!60!black,
+ mouth/.store in = \ape@mouth,
+ mouth = \ape@skin!50!black,
+ muzzle/.store in = \ape@muzzle,
+ muzzle = \ape@skin!80!white,
+ legs/.store in = \ape@legs,
+ legs = \ape@body!90!black,
+ arms/.store in = \ape@arms,
+ arms = \ape@body!95!black,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % options
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ 3D/.code = \ape@threeDtrue,
+ handposition/.code = \csname ape@handposition@#1true\endcsname,
+ kikazaru/.code = \ape@handposition@hearnoeviltrue,
+ mizaru/.code = \ape@handposition@seenoeviltrue,
+ iwazaru/.code = \ape@handposition@speaknoeviltrue,
+ %clap/.code = \ape@handposition@claptrue, %%% should we support this too?
+ %waving/.code = \ape@handposition@wavingtrue, %%% should we support this too?
+ hearnoevil/.code = \ape@handposition@hearnoeviltrue,
+ seenoevil/.code = \ape@handposition@seenoeviltrue,
+ speaknoevil/.code = \ape@handposition@speaknoeviltrue,
+ back/.code = \ape@backtrue,
+ openmouth/.code = \ape@openmouthtrue,
+ open mouth/.forward to = /ape/openmouth,
+ contour/.code = \ape@contourtrue
+ \def\ape@contour{#1}
+ \def\ape@mouth{#1},
+ contour/.default = black,
+ outline/.forward to = /ape/contour,
+}
+
+\def\ape@draw{%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % minimal bounding box size
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \path (-1.435,0.1) rectangle (1.435, 2.27);
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % store the current scale factor
+ % from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+ \pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))*sqrt(abs((\pgf@xx/1cm)*(\pgf@yy/1cm)-(\pgf@xy/1cm)*(\pgf@yx/1cm)))}%
+ \pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % switch between 2D, 3D and contours, from
+ % https://chat.stackexchange.com/transcript/message/45991801#45991801
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ifape@threeD
+ \def\ape@part@draw[##1]{\shade[ball color=##1]}
+ \else% 3D
+ \ifape@contour
+ \def\ape@part@draw[##1]{\draw[##1,\ape@contour,fill=white,line width=\scalingfactor*0.4pt]}
+ \else% contour
+ \def\ape@part@draw[##1]{\fill[##1]}
+ \fi% contour
+ \fi% 3D
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Body parts
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \csname apehookbackground\endcsname
+ \csname tikzlinghookbackground\endcsname
+ %
+ % Draw backside partially in reversed order %%%%%%%%%%%%%%%%%%%%%%%%
+ \ifape@back
+ % arms / hand for hear-no-evil pose backside %%%%%%%%%%%%%%%%%%%%%
+ \ifape@handposition@hearnoevil%
+ \ape@part@draw[\ape@skin!90!white] (-0.45,1.9) ellipse [x radius=0.3, y radius=0.1,rotate=80];
+ \ape@part@draw[\ape@arms] (-0.55,1.73) {[rotate=-20] arc [start angle=35, end angle=350,x radius=0.475, y radius=0.15]} --cycle;
+ \ape@part@draw[\ape@arms] (-0.9,1.61) ellipse[x radius=0.15, y radius=0.6, rotate=-125];
+ \ape@part@draw[\ape@skin!90!white] (0.45,1.9) ellipse [x radius=0.3, y radius=0.1,rotate=100];
+ \ape@part@draw[\ape@arms] (0.55,1.73) {[rotate=20] arc [start angle=145, end angle=-170,x radius=0.475, y radius=0.15]} --cycle;
+ \ape@part@draw[\ape@arms] (0.9,1.61) ellipse[x radius=0.15, y radius=0.6, rotate=125];
+ % see-no-evil pose backside %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \else\ifape@handposition@seenoevil%
+ \ape@part@draw[\ape@skin!90!white] (-0.325,1.91) ++(390:0.3 and 0.1) arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle;
+ \ape@part@draw[\ape@arms] (-0.59,1.97) arc [start angle=25, end angle=335,x radius=0.475, y radius=0.15] --cycle;
+ \ape@part@draw[\ape@arms] (-0.93,1.70) ellipse[x radius=0.15, y radius=0.6, rotate=70];
+ \ape@part@draw[\ape@skin!90!white] (0.325,1.91) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle;
+ \ape@part@draw[\ape@arms] (0.59,1.97) arc [start angle=155, end angle=-155,x radius=0.475, y radius=0.15] --cycle;
+ \ape@part@draw[\ape@arms] (0.93,1.70) ellipse[x radius=0.15, y radius=0.6, rotate=110];
+ % speak-no-evil pose backside %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \else\ifape@handposition@speaknoevil%
+ \ape@part@draw[\ape@arms] (-0.85,1.55) ellipse[x radius=0.15, y radius=0.6, rotate=-100];
+ \ape@part@draw[\ape@skin!90!white] (-0.275,1.46) ++(390:0.3 and 0.1) arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle;
+ \ape@part@draw[\ape@arms] (-0.53,1.52) {[rotate=-10] arc [start angle=15, end angle=335,x radius=0.475, y radius=0.15]} --cycle;
+ \ape@part@draw[\ape@arms] (0.85,1.55) ellipse[x radius=0.15, y radius=0.6, rotate=100];
+ \ape@part@draw[\ape@skin!90!white] (0.275,1.46) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle;
+ \ape@part@draw[\ape@arms] (0.53,1.52) {[rotate=10] arc [start angle=165, end angle=-155,x radius=0.475, y radius=0.15]} --cycle;
+ % clapping hand pose backside %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \else\ifape@handposition@clap%
+ \ape@part@draw[\ape@skin!90!white] (-0.115,2.85) ellipse [x radius=0.3, y radius=0.1,rotate=80];
+ \ape@part@draw[\ape@arms] (-0.23,2.65) {[rotate=10] arc [start angle=35, end angle=350,x radius=0.475, y radius=0.15]} --cycle;
+ \ape@part@draw[\ape@arms] (-0.75,1.95) ellipse[x radius=0.15, y radius=0.6, rotate=30];
+ \ape@part@draw[\ape@skin!90!white] (0.115,2.85) ellipse [x radius=0.3, y radius=0.1,rotate=100];
+ \ape@part@draw[\ape@arms] (0.23,2.65) {[rotate=-10] arc [start angle=145, end angle=-170,x radius=0.475, y radius=0.15]} --cycle;
+ \ape@part@draw[\ape@arms] (0.75,1.95) ellipse[x radius=0.15, y radius=0.6, rotate=150];
+ % waving left hand pose backside %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \else\ifape@handposition@waving%
+ \ape@part@draw[\ape@arms] (-0.53,1.115) {[rotate=5] arc [start angle=25, end angle=335,x radius=0.475, y radius=0.15]} --cycle;
+ \ape@part@draw[\ape@arms] (-0.9,1.25) ellipse[x radius=0.15, y radius=0.6, rotate=-60];
+ \ape@part@draw[\ape@skin!90!white] (0.97,3.2) ++(390:0.3 and 0.1) {[rotate=90] arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle};
+ \ape@part@draw[\ape@arms] (1.35,2.74) {[rotate=100] arc [start angle=335, end angle=25,x radius=0.475, y radius=0.15]} --cycle;
+ \ape@part@draw[\ape@arms] (0.93,1.70) ellipse[x radius=0.15, y radius=0.6, rotate=-70];
+ % default pose backside %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \else
+ \ape@part@draw[\ape@arms] (-0.53,1.115) {[rotate=5] arc [start angle=25, end angle=335,x radius=0.475, y radius=0.15]} --cycle;
+ \ape@part@draw[\ape@arms] (-0.9,1.25) ellipse[x radius=0.15, y radius=0.6, rotate=-60];
+ \ape@part@draw[\ape@arms] (0.53,1.115) {[rotate=-5] arc [start angle=155, end angle=-155,x radius=0.475, y radius=0.15]} --cycle;
+ \ape@part@draw[\ape@arms] (0.9,1.25) ellipse[x radius=0.15, y radius=0.6, rotate=60];
+ \fi\fi\fi\fi\fi
+ %
+ % legs / feet backside %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ape@part@draw[\ape@skin] (1.2,0.27) ++(210:0.3 and 0.1) {[rotate=180] arc [start angle=210, end angle=-30,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=-30, end angle=-240,x radius=0.15, y radius=0.03]}-- cycle};
+ \ape@part@draw[\ape@legs] (0.7,0.67) ellipse[x radius=0.15, y radius=0.6, rotate=-30];
+ \ape@part@draw[\ape@legs] (0.52,0.68) ellipse[x radius=0.15, y radius=0.7, rotate=-45];
+ \ape@part@draw[\ape@skin] (-1.2,0.27) ++(-30:0.3 and 0.1) {[rotate=180] arc [start angle=-30, end angle=210,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=210, end angle=420,x radius=0.15, y radius=0.03]}-- cycle};
+ \ape@part@draw[\ape@legs] (-0.7,0.67) ellipse[x radius=0.15, y radius=0.6, rotate=30];
+ \ape@part@draw[\ape@legs] (-0.52,0.68) ellipse[x radius=0.15, y radius=0.7, rotate=45];
+ %
+ % head backside %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ape@part@draw[\ape@body] (0, 1.76) circle[x radius=0.4,y radius=0.5];
+ \fi% back
+ %
+ % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ape@part@draw[\ape@body] ( 0.5, 0.8 ) .. controls ( 0.5 , 0.4) and ( 0.35, 0.17) .. ( 0.0, 0.17) .. controls (-0.35, 0.17) and (-0.5 , 0.4) .. (-0.5, 0.8 ) .. controls (-0.9 , 1.6) and (-0.4, 1.65) .. ( 0.0, 1.65) .. controls ( 0.4, 1.65) and ( 0.9 , 1.6) .. ( 0.5, 0.8) -- cycle;
+ %
+ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \csname apehookbelly\endcsname
+ \csname tikzlinghookbelly\endcsname
+ %
+ % Show details only from the front %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \unless\ifape@back
+ % Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ape@part@draw[\ape@body] (0, 1.76) circle[x radius=0.4,y radius=0.5];
+ \ape@part@draw[\ape@skin] (0, 1.76) circle[x radius=0.32,y radius=0.40];
+ %
+ % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ape@part@draw[\ape@eye] (-0.08, 1.9) ellipse[x radius=0.04, y radius=0.04];
+ \ape@part@draw[\ape@eye] (0.08, 1.9) ellipse[x radius=0.04, y radius=0.04];
+ %
+ % muzzle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ape@part@draw[\ape@muzzle] (0, 1.55) ellipse[x radius=0.28, y radius=0.2];
+ %
+ % mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ifape@openmouth
+ \ifape@threeD
+ \fill[\ape@mouth] (0,1.5) ellipse[x radius=0.05,y radius=0.07];
+ \else
+ \ape@part@draw[\ape@mouth] (0,1.5) ellipse[x radius=0.05,y radius=0.07];
+ \fi
+ \else
+ \draw[\ape@mouth,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2] ;
+ \fi
+ %
+ % Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ifape@threeD
+ \fill[\ape@nose] (-0.03, 1.63) ellipse[x radius=0.025, y radius=0.035, rotate=30 ];
+ \fill[\ape@nose] (0.03, 1.63) ellipse[x radius=0.025, y radius=0.035, rotate=-30 ];
+ \else
+ \ape@part@draw[\ape@nose] (-0.03, 1.63) ellipse[x radius=0.025, y radius=0.035, rotate=30 ];
+ \ape@part@draw[\ape@nose] (0.03, 1.63) ellipse[x radius=0.025, y radius=0.035, rotate=-30 ];
+ \fi
+ %
+ % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ape@part@draw[\ape@skin] (0.675,0.2) ++(-30:0.3 and 0.1) arc [start angle=-30, end angle=210,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=210, end angle=420,x radius=0.15, y radius=0.03]}-- cycle;
+ \ape@part@draw[\ape@skin] (-0.675,0.2) ++(210:0.3 and 0.1) arc [start angle=210, end angle=-30,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=-30, end angle=-240,x radius=0.15, y radius=0.03]}-- cycle;
+ %
+ % Legs %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ape@part@draw[\ape@legs] (0.52,0.68) ellipse[x radius=0.15, y radius=0.7, rotate=-45];
+ \ape@part@draw[\ape@legs] (0.7,0.67) ellipse[x radius=0.15, y radius=0.6, rotate=-30];
+ \ape@part@draw[\ape@legs] (-0.52,0.68) ellipse[x radius=0.15, y radius=0.7, rotate=45];
+ \ape@part@draw[\ape@legs] (-0.7,0.67) ellipse[x radius=0.15, y radius=0.6, rotate=30];
+ %
+ % hear-no-evil pose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ifape@handposition@hearnoevil
+ \ape@part@draw[\ape@arms] (-0.9,1.61) ellipse[x radius=0.15, y radius=0.6, rotate=-125];
+ \ape@part@draw[\ape@skin!90!white] (-0.45,1.9) ellipse [x radius=0.3, y radius=0.1,rotate=80];
+ \ape@part@draw[\ape@arms] (-0.55,1.73) {[rotate=-20] arc [start angle=35, end angle=350,x radius=0.475, y radius=0.15]} --cycle;
+ \ape@part@draw[\ape@arms] (0.9,1.61) ellipse[x radius=0.15, y radius=0.6, rotate=125];
+ \ape@part@draw[\ape@skin!90!white] (0.45,1.9) ellipse [x radius=0.3, y radius=0.1,rotate=100];
+ \ape@part@draw[\ape@arms] (0.55,1.73) {[rotate=20] arc [start angle=145, end angle=-170,x radius=0.475, y radius=0.15]} --cycle;
+ % see-no-evil pose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \else\ifape@handposition@seenoevil
+ \ape@part@draw[\ape@arms] (-0.93,1.70) ellipse[x radius=0.15, y radius=0.6, rotate=70];
+ \ape@part@draw[\ape@skin!90!white] (-0.325,1.91) ++(390:0.3 and 0.1) arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle;
+ \ape@part@draw[\ape@arms] (-0.59,1.97) arc [start angle=25, end angle=335,x radius=0.475, y radius=0.15] --cycle;
+ \ape@part@draw[\ape@arms] (0.93,1.70) ellipse[x radius=0.15, y radius=0.6, rotate=110];
+ \ape@part@draw[\ape@skin!90!white] (0.325,1.91) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle;
+ \ape@part@draw[\ape@arms] (0.59,1.97) arc [start angle=155, end angle=-155,x radius=0.475, y radius=0.15] --cycle;
+ % speak-no-evil pose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \else\ifape@handposition@speaknoevil%
+ \ape@part@draw[\ape@arms] (-0.85,1.55) ellipse[x radius=0.15, y radius=0.6, rotate=-100];
+ \ape@part@draw[\ape@skin!90!white] (-0.275,1.46) ++(390:0.3 and 0.1) arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle;
+ \ape@part@draw[\ape@arms] (-0.53,1.52) {[rotate=-10] arc [start angle=15, end angle=335,x radius=0.475, y radius=0.15]} --cycle;
+ \ape@part@draw[\ape@arms] (0.85,1.55) ellipse[x radius=0.15, y radius=0.6, rotate=100];
+ \ape@part@draw[\ape@skin!90!white] (0.275,1.46) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle;
+ \ape@part@draw[\ape@arms] (0.53,1.52) {[rotate=10] arc [start angle=165, end angle=-155,x radius=0.475, y radius=0.15]} --cycle;
+ % clapping pose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \else\ifape@handposition@clap%
+ \ape@part@draw[\ape@arms] (-0.75,1.95) ellipse[x radius=0.15, y radius=0.6, rotate=30];
+ \ape@part@draw[\ape@skin!90!white] (-0.115,2.85) ellipse [x radius=0.3, y radius=0.1,rotate=80];
+ \ape@part@draw[\ape@arms] (-0.23,2.65) {[rotate=10] arc [start angle=35, end angle=350,x radius=0.475, y radius=0.15]} --cycle;
+ \ape@part@draw[\ape@arms] (0.75,1.95) ellipse[x radius=0.15, y radius=0.6, rotate=150];
+ \ape@part@draw[\ape@skin!90!white] (0.115,2.85) ellipse [x radius=0.3, y radius=0.1,rotate=100];
+ \ape@part@draw[\ape@arms] (0.23,2.65) {[rotate=-10] arc [start angle=145, end angle=-170,x radius=0.475, y radius=0.15]} --cycle;
+ % waving hand pose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \else\ifape@handposition@waving%
+ \ape@part@draw[\ape@arms] (-0.93,1.70) ellipse[x radius=0.15, y radius=0.6, rotate=70];
+ \ape@part@draw[\ape@skin!90!white] (-0.97,3.2) ++(150:0.3 and 0.1) {[rotate=-90] arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle};
+ \ape@part@draw[\ape@arms] (-1.35,2.74) {[rotate=80] arc [start angle=25, end angle=335,x radius=0.475, y radius=0.15]} --cycle;
+ \ape@part@draw[\ape@arms] (0.9,1.25) ellipse[x radius=0.15, y radius=0.6, rotate=60];
+ \ape@part@draw[\ape@skin!90!white] (0.325,1.05) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle;
+ \ape@part@draw[\ape@arms] (0.53,1.115) {[rotate=-5] arc [start angle=155, end angle=-155,x radius=0.475, y radius=0.15]} --cycle;
+ % normal pose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \else
+ \ape@part@draw[\ape@arms] (-0.9,1.25) ellipse[x radius=0.15, y radius=0.6, rotate=-60];
+ \ape@part@draw[\ape@skin!90!white] (-0.325,1.05) ++(390:0.3 and 0.1) arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle;
+ \ape@part@draw[\ape@arms] (-0.53,1.115) {[rotate=5] arc [start angle=25, end angle=335,x radius=0.475, y radius=0.15]} --cycle;
+ \ape@part@draw[\ape@arms] (0.9,1.25) ellipse[x radius=0.15, y radius=0.6, rotate=60];
+ \ape@part@draw[\ape@skin!90!white] (0.325,1.05) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle;
+ \ape@part@draw[\ape@arms] (0.53,1.115) {[rotate=-5] arc [start angle=155, end angle=-155,x radius=0.475, y radius=0.15]} --cycle;
+ \fi\fi\fi\fi\fi%
+ \fi%
+ %
+ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \csname apehookbody\endcsname
+ \csname tikzlinghookbody\endcsname
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Documentation
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\clearpage
+%\section[Ape]{Sandra, the orangutan}
+%
+%\emph{The ape was kindly contributed by @NuzzleTOO. It is named after an orangutan who was freed from living alone in a zoo in Bueonos Aires and taken to a sanctuary for great apes after temporarily becoming legally a non-human person.}
+%
+%\subsection{Package name}
+%
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-apes}
+%\end{samcode}
+%\end{tcolorbox}
+%
+%\subsection{Basic Usage}
+%
+%\begin{tcblisting}{title={Basic ape}}
+%\ape
+%\end{tcblisting}
+%
+%\subsection{Options}
+%
+%The basic ape can be modified by changing its colour:
+%\begin{tcblisting}{title={Body colour}}
+%\ape[body=blue]
+%\end{tcblisting}
+%
+%In addition to the colour of the body, the colour of various body parts can be adjusted:
+%\begin{tcblisting}{title={Eye colour}}
+%\ape[eye=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Nose colour}}
+%\ape[nose=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Mouth colour}}
+%\ape[mouth=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Muzzle colour}}
+%\ape[muzzle=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Skin colour}}
+%\ape[skin=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Arm colour}}
+%\ape[arms=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Leg colour}}
+%\ape[legs=red]
+%\end{tcblisting}
+%
+%The ape make can make use of it hands in different ways:
+%\begin{tcblisting}{title={Clapping ape}}
+%\ape[handposition=clap]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Waving ape}}
+%\ape[handposition=waving]
+%\end{tcblisting}
+%
+%Including the gestures of the three mystic apes \textbf{Mizaru} (see no evil), \textbf{Kikazaru} (hear no evil) and \textbf{Iwazaru} (speak no evil):
+%\begin{tcblisting}{title={See no evil}}
+%\ape[handposition=seenoevil]
+%\end{tcblisting}
+%\begin{tcblisting}{title={hear no evil}}
+%\ape[handposition=hearnoevil]
+%\end{tcblisting}
+%\begin{tcblisting}{title={speak no evil}}
+%\ape[handposition=speaknoevil]
+%\end{tcblisting}
+% As shortcuts, these three apes are also available via
+%\saminline|\ape[seenoevil]|, \saminline|\ape[hearnoevil]|, \saminline|\ape[speaknoevil]| and \saminline|\ape[mizaru]|, \saminline|\ape[kikazaru]|, \saminline|\ape[iwazaru]|.
+%
+%To see a hooting ape:
+%\begin{tcblisting}{title={Hooting ape}}
+%\ape[openmouth]
+%\end{tcblisting}
+%
+%To view the ape from behind:
+%\begin{tcblisting}{title={Back view}}
+%\ape[back]
+%\end{tcblisting}
+%
+%The key \saminline|3D| will make the ape 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
+%\ape[3D]
+%\end{tcblisting}
+%
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
+%\ape[contour=black]
+%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bats.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bats.sty
index 3d1bbb27fd6..3c0880f950c 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bats.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bats.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-bats}[2022/06/17 version v1.0 Drawing bats in TikZ]
+\ProvidesPackage{tikzlings-bats}[2025/01/05 version v2.2 Drawing bats in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -26,13 +26,14 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname bathookforeground\endcsname
\csname tikzlinghookforeground\endcsname
- %
+ %
}
\newif\ifbat@threeD
\newif\ifbat@back
\newif\ifbat@contour
\newif\ifbat@teeth
+\newif\ifbat@openmouth
\tikzset{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -50,39 +51,41 @@
body/.store in = \bat@body,
body = black!75!white,
ears/.store in = \bat@ears,
- ears = \bat@body,
+ ears = \bat@body,
eye/.store in = \bat@eye,
eye = white,
pupil/.store in = \bat@pupil,
pupil = black,
mouth/.store in = \bat@mouth,
- mouth = black,
+ mouth = black,
feet/.store in = \bat@feet,
- feet = orange,
+ feet = orange,
wings/.store in = \bat@wings,
- wings = 1,
+ wings = 1,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- teeth/.code = \bat@teethtrue
- \def\bat@teeth{#1},
+ teeth/.code = \bat@teethtrue
+ \def\bat@teeth{#1},
teeth/.default = white,
- 3D/.code = \bat@threeDtrue,
- back/.code = \bat@backtrue,
+ openmouth/.code = \bat@openmouthtrue,
+ open mouth/.forward to = /bat/openmouth,
+ 3D/.code = \bat@threeDtrue,
+ back/.code = \bat@backtrue,
contour/.code = \bat@contourtrue
\def\bat@contour{#1}
\def\bat@antennas{#1}
\def\bat@mouth{#1},
- contour/.default = black,
- outline/.forward to = /bat/contour,
+ contour/.default = black,
+ outline/.forward to = /bat/contour,
}
\def\bat@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.44,0.0) rectangle (0.44, 2.2);
@@ -99,7 +102,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -117,7 +120,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -171,13 +174,17 @@
%
% Teeth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifbat@teeth
- \bat@part@draw[\bat@teeth] (-0.1,1.36) -- (-0.12,1.3) -- (-0.14,1.38) -- cycle;
- \bat@part@draw[\bat@teeth] (0.1,1.36) -- (0.12,1.3) -- (0.14,1.38) -- cycle;
+ \bat@part@draw[\bat@teeth] (-0.1,1.36) -- (-0.12,1.3) -- (-0.14,1.38) -- cycle;
+ \bat@part@draw[\bat@teeth] (0.1,1.36) -- (0.12,1.3) -- (0.14,1.38) -- cycle;
\fi
%
% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \draw[\bat@mouth,line width=\scalingfactor*0.4pt] (0.18, 1.42) arc [start angle=-40, end angle=-140, radius=0.23];
- %
+ \ifbat@openmouth
+ \filldraw[\bat@mouth,line width=\scalingfactor*0.4pt] (0.18, 1.42) arc [start angle=-40, end angle=-140, radius=0.23];
+ \else
+ \draw[\bat@mouth,line width=\scalingfactor*0.4pt] (0.18, 1.42) arc [start angle=-40, end angle=-140, radius=0.23];
+ \fi
+ %
%
\fi% back
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -198,63 +205,68 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-bats}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-bats}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic bat}}
%\bat
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic bat can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\bat[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\bat[eye=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Pupil colour}}
%\bat[pupil=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Mouth colour}}
%\bat[mouth=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Ear colour}}
%\bat[ears=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Foot colour}}
%\bat[feet=red]
%\end{tcblisting}
%
-%The spread of the wings can be adjusted by passing values between 0 and 1 to the \lstinline|wings| option:
-%\begin{tcblisting}{}
+% The bat can open its mouth:
+%\begin{tcblisting}{title={Open mouth}}
+%\bat[openmouth]
+%\end{tcblisting}
+%
+%With the \saminline|wings| option, one can adjust the spread of the wings. It accepts values between~0 and~1:
+%\begin{tcblisting}{title={Wing span}}
%\bat[wings=0.5]
%\end{tcblisting}
%
-%To turn the bat into a vampire bat, the \lstinline|teeth| option can be used:
-%\begin{tcblisting}{}
+%To turn the bat into a vampire bat, the \saminline|teeth| option can be used:
+%\begin{tcblisting}{title={Vampire}}
%\bat[teeth=white]
%\end{tcblisting}
%
%To view the bat from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\bat[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the bat 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the bat 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\bat[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\bat[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bears.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bears.sty
index 22fbe6c3f32..a85104c34ef 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bears.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bears.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-bears}[2022/06/17 version v1.0 Draw teddy bears in TikZ]
+\ProvidesPackage{tikzlings-bears}[2025/01/05 version v2.2 Draw teddy bears in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -31,6 +31,7 @@
\newif\ifbear@threeD
\newif\ifbear@back
\newif\ifbear@contour
+\newif\ifbear@openmouth
\tikzset{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -46,29 +47,31 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
body/.store in = \bear@body,
- body = brown,
+ body = brown!70!black,
eye/.store in = \bear@eye,
- eye = \bear@body!30!black,
+ eye = \bear@body!42!black,
mouth/.store in = \bear@mouth,
- mouth = \bear@body!30!black,
+ mouth = \bear@body!42!black,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 3D/.code = \bear@threeDtrue,
- back/.code = \bear@backtrue,
+ openmouth/.code = \bear@openmouthtrue,
+ open mouth/.forward to = /bear/openmouth,
+ 3D/.code = \bear@threeDtrue,
+ back/.code = \bear@backtrue,
contour/.code = \bear@contourtrue
\def\bear@contour{#1}
\def\bear@mouth{#1},
- contour/.default = black,
- outline/.forward to = /bear/contour,
+ contour/.default = black,
+ outline/.forward to = /bear/contour,
}
\def\bear@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.8, 0.0) rectangle (0.8, 2.13);
@@ -85,7 +88,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -102,8 +105,20 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
+ % generating saturated/brighter version of body colour
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \extractcolorspecs{\bear@body}{\bear@model}{\bear@colorspec}
+ \convertcolorspec{\bear@model}{\bear@colorspec}{hsb}{\bear@hsbcolorspec}
+ \pgfmathsetmacro{\bear@hue}{(array({\bear@hsbcolorspec},0))}
+ \pgfmathsetmacro{\bear@sat}{(array({\bear@hsbcolorspec},1))-0.38}
+ \pgfmathsetmacro{\bear@bright}{(array({\bear@hsbcolorspec},2))+0.35}
+ \definecolor{bear@bright}{hsb}{\bear@hue,\bear@sat,\bear@bright}
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -111,19 +126,19 @@
\csname tikzlinghookbackground\endcsname
%
% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \bear@part@draw[\bear@body!70!black] (0.525,0.9) ellipse[x radius=0.35, y radius=0.15, rotate=-50];
- \bear@part@draw[\bear@body!70!black] (-0.525,0.9) ellipse[x radius=0.35, y radius=0.15, rotate=50];
+ \bear@part@draw[\bear@body] (0.525,0.9) ellipse[x radius=0.35, y radius=0.15, rotate=-50];
+ \bear@part@draw[\bear@body] (-0.525,0.9) ellipse[x radius=0.35, y radius=0.15, rotate=50];
%
% Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifbear@back
- \bear@part@draw[\bear@body!70!black] (0.425, 0.3) circle[radius=0.28];
- \bear@part@draw[\bear@body!70!black] (-0.425, 0.3) circle[radius=0.28];
+ \bear@part@draw[\bear@body] (0.425, 0.3) circle[radius=0.28];
+ \bear@part@draw[\bear@body] (-0.425, 0.3) circle[radius=0.28];
\fi% back
%
% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \bear@part@draw[\bear@body!70!black] (0,0.75) ellipse[x radius=0.55, y radius=0.65];
+ \bear@part@draw[\bear@body] (0,0.75) ellipse[x radius=0.55, y radius=0.65];
\unless\ifbear@back
- \bear@part@draw[\bear@body!50!white] (0,0.7) ellipse[x radius=0.35, y radius=0.4];
+ \bear@part@draw[bear@bright] (0,0.7) ellipse[x radius=0.35, y radius=0.4];
\fi% back
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -132,36 +147,40 @@
%
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifbear@back
- \bear@part@draw[\bear@body!70!black] (0.425, 0.3) circle[radius=0.28];
- \bear@part@draw[\bear@body!70!black] (-0.425, 0.3) circle[radius=0.28];
- \bear@part@draw[\bear@body!50!white] (0.425, 0.3) circle[radius=0.17];
- \bear@part@draw[\bear@body!50!white] (-0.425, 0.3) circle[radius=0.17];
+ \bear@part@draw[\bear@body] (0.425, 0.3) circle[radius=0.28];
+ \bear@part@draw[\bear@body] (-0.425, 0.3) circle[radius=0.28];
+ \bear@part@draw[bear@bright] (0.425, 0.3) circle[radius=0.17];
+ \bear@part@draw[bear@bright] (-0.425, 0.3) circle[radius=0.17];
\fi% back
%
% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \bear@part@draw[\bear@body!70!black] (0.375, 1.95) circle[radius=0.15];
- \bear@part@draw[\bear@body!70!black] (-0.375, 1.95) circle[radius=0.15];
+ \bear@part@draw[\bear@body] (0.375, 1.95) circle[radius=0.15];
+ \bear@part@draw[\bear@body] (-0.375, 1.95) circle[radius=0.15];
\unless\ifbear@back
- \bear@part@draw[\bear@body!50!white] (0.375, 1.95) circle[radius=0.1];
- \bear@part@draw[\bear@body!50!white] (-0.375, 1.95) circle[radius=0.1];
+ \bear@part@draw[bear@bright] (0.375, 1.95) circle[radius=0.1];
+ \bear@part@draw[bear@bright] (-0.375, 1.95) circle[radius=0.1];
\fi% back
%
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \bear@part@draw[\bear@body!70!black] (0, 1.55) circle[radius=0.5];
+ \bear@part@draw[\bear@body] (0, 1.55) circle[radius=0.5];
%
% Show details only from the front %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifbear@back
%
% Muzzle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \bear@part@draw[\bear@body!50!white] (0, 1.4) ellipse[x radius=0.28, y radius=0.2];
- \bear@part@draw[\bear@body!70!white!80!red] (0, 1.5) ellipse[x radius=0.15, y radius=0.08];
+ \bear@part@draw[bear@bright] (0, 1.4) ellipse[x radius=0.28, y radius=0.2];
+ \bear@part@draw[bear@bright!60!red] (0, 1.5) ellipse[x radius=0.15, y radius=0.08];
%
% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \bear@part@draw[\bear@eye] (-0.155, 1.7) circle[radius=0.05];
- \bear@part@draw[\bear@eye] (0.155, 1.7) circle[radius=0.05];
+ \bear@part@draw[\bear@eye] (-0.155, 1.7) circle[radius=0.05];
+ \bear@part@draw[\bear@eye] (0.155, 1.7) circle[radius=0.05];
%
% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \draw[\bear@mouth,line width=\scalingfactor*0.4pt] (0.145, 1.38) arc [start angle=-20, end angle=-160, radius=0.16];
+ \ifbear@openmouth
+ \filldraw[\bear@mouth,line width=\scalingfactor*0.4pt] (0.145, 1.38) arc [start angle=-20, end angle=-160, radius=0.16];
+ \else
+ \draw[\bear@mouth,line width=\scalingfactor*0.4pt] (0.145, 1.38) arc [start angle=-20, end angle=-160, radius=0.16];
+ \fi
%
\fi% back
%
@@ -183,61 +202,66 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-bears}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-bears}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic bear}}
%\bear
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic teddy bear can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\bear[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\bear[eye=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Mouth colour}}
%\bear[mouth=red]
%\end{tcblisting}
%
+% The bear can open its mouth:
+%\begin{tcblisting}{title={Open mouth}}
+%\bear[openmouth]
+%\end{tcblisting}
+%
%To view the teddy bear from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\bear[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the teddy bear 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the teddy bear 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\bear[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\bear[contour=black]
%\end{tcblisting}
%
%\subsection{Extension}
%
-%The B\"ar and Ulrike Fischer wrote the fantastic \lstinline|bearwear| package, that provides many different clothing options for the \lstinline|TikZbears|. All the other \tikzlings admire them for the nice clothing!
+%The B\"ar and Ulrike Fischer wrote the fantastic \saminline|bearwear| package, that provides many different clothing options for the \saminline|TikZbears|. All the other \tikzlings admire them for the nice clothing!
%
%A short example:
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Bearwear example}}
%%\usepackage{bearwear}
%\bear
%\bearwear[
-% long sleeves,
+% long sleeves,
% shirt=red!80!black
%]
%\end{tcblisting}
%
-%Many more options and examples can be found in the package documentation \url{https://ctan.org/pkg/bearwear}.
+%Many more options and examples can be found in the package documentation \url{https://ctan.org/pkg/bearwear}.
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bees.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bees.sty
index 9fec259bdbd..18d8ff9bcde 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bees.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bees.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-bees}[2022/06/17 version v1.0 Drawing bees in TikZ]
+\ProvidesPackage{tikzlings-bees}[2025/01/05 version v2.2 Drawing bees in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -26,12 +26,13 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname beehookforeground\endcsname
\csname tikzlinghookforeground\endcsname
- %
+ %
}
\newif\ifbee@threeD
\newif\ifbee@back
\newif\ifbee@contour
+\newif\ifbee@openmouth
\tikzset{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -49,36 +50,38 @@
body/.store in = \bee@body,
body = yellow!70!orange,
hands/.store in = \bee@hands,
- hands = black,
+ hands = black,
wings/.store in = \bee@wings,
- wings = blue!20!cyan!30!white,
+ wings = blue!20!cyan!30!white,
stripes/.store in = \bee@stripes,
- stripes = black,
+ stripes = black,
antennas/.store in = \bee@antennas,
- antennas = black,
+ antennas = black,
eye/.store in = \bee@eye,
- eye = black,
+ eye = black,
mouth/.store in = \bee@mouth,
- mouth = black,
+ mouth = black,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 3D/.code = \bee@threeDtrue,
- back/.code = \bee@backtrue,
+ openmouth/.code = \bee@openmouthtrue,
+ open mouth/.forward to = /bee/openmouth,
+ 3D/.code = \bee@threeDtrue,
+ back/.code = \bee@backtrue,
contour/.code = \bee@contourtrue
\def\bee@contour{#1}
\def\bee@antennas{#1}
\def\bee@mouth{#1},
- contour/.default = black,
- outline/.forward to = /bee/contour,
+ contour/.default = black,
+ outline/.forward to = /bee/contour,
}
\def\bee@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.88,0.1) rectangle (0.88, 2.4);
@@ -95,7 +98,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -113,11 +116,11 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \csname beeshookbackground\endcsname
+ \csname beehookbackground\endcsname
\csname tikzlinghookbackground\endcsname
%
\ifbee@back
@@ -141,18 +144,11 @@
\fi% back
%
% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \begin{scope}
- \bee@part@draw[\bee@body] (0,2.1) to[out=180,in=140,looseness=1.2] (-0.3,1.5) to[out=-110,in=180,looseness=1.2] (0,0.15) to[out=00,in=-65,looseness=1.2] (0.3,1.5) to[out=40,in=0,looseness=1.2] cycle;
- \clip (0,2.1) to[out=180,in=140,looseness=1.2] (-0.3,1.5) to[out=-110,in=180,looseness=1.2] (0,0.15) to[out=00,in=-65,looseness=1.2] (0.3,1.5) to[out=40,in=0,looseness=1.2] cycle;
- % stripes
- \bee@part@draw[\bee@stripes] (-0.475,1.3) arc(180:360:0.5 and 0.1) -- ++ (0,-0.15) arc(360:180:0.5 and 0.1) -- cycle
- (-0.475,1.0) arc(180:360:0.5 and 0.1) -- ++ (0,-0.15) arc(360:180:0.5 and 0.1) -- cycle
- (-0.475,0.65) arc(180:360:0.5 and 0.1) -- ++ (0,-0.15) arc(360:180:0.5 and 0.1) -- cycle
- (-0.475,0.35) arc(180:360:0.5 and 0.1) -- ++ (0,-0.15) arc(360:180:0.5 and 0.1) -- cycle;
- \end{scope}
+ \bee@part@draw[\bee@body] (0,2.1) to[out=180,in=140,looseness=1.2] (-0.3,1.5) to[out=-110,in=180,looseness=1.2] (0,0.15) to[out=00,in=-65,looseness=1.2] (0.3,1.5) to[out=40,in=0,looseness=1.2] cycle;
+ \bee@part@draw[\bee@stripes] (-0.3845, 1.2427).. controls (-0.3978, 1.1967) and (-0.4102, 1.1508) .. (-0.4213, 1.1051).. controls (-0.339, 1.0724) and (-0.1703, 1.05) .. (0.025, 1.05).. controls (0.2024, 1.05) and (0.3578, 1.0685) .. (0.4466, 1.0964).. controls (0.4345, 1.1426) and (0.4206, 1.1889) .. (0.4053, 1.2351).. controls (0.3136, 1.2136) and (0.1774, 1.2) .. (0.025, 1.2).. controls (-0.1445, 1.2) and (-0.2941, 1.2169) .. (-0.3845, 1.2427) -- cycle(-0.4505, 0.9692).. controls (-0.4588, 0.9242) and (-0.4654, 0.88) .. (-0.4704, 0.8366).. controls (-0.4375, 0.7877) and (-0.2284, 0.75) .. (0.025, 0.75).. controls (0.2433, 0.75) and (0.4285, 0.778) .. (0.4966, 0.817).. controls (0.4925, 0.8629) and (0.4858, 0.9099) .. (0.4772, 0.9575).. controls (0.3973, 0.9236) and (0.2251, 0.9) .. (0.025, 0.9).. controls (-0.1973, 0.9) and (-0.3855, 0.929) .. (-0.4505, 0.9692) -- cycle(-0.475, 0.65) -- (-0.475, 0.5798).. controls (-0.4712, 0.5424) and (-0.465, 0.5067) .. (-0.4563, 0.4729).. controls (-0.3973, 0.4309) and (-0.2042, 0.4) .. (0.025, 0.4).. controls (0.2141, 0.4) and (0.3785, 0.421) .. (0.4635, 0.452).. controls (0.4809, 0.5028) and (0.4921, 0.5583) .. (0.4975, 0.6175).. controls (0.43, 0.5782) and (0.2442, 0.55) .. (0.025, 0.55).. controls (-0.2511, 0.55) and (-0.475, 0.5947) .. (-0.475, 0.65) -- cycle(-0.3628, 0.2869).. controls (-0.2871, 0.2009) and (-0.1703, 0.15) .. (-0.0, 0.15).. controls (0.1603, 0.15) and (0.2765, 0.1965) .. (0.3564, 0.2753).. controls (0.2681, 0.2596) and (0.1523, 0.25) .. (0.025, 0.25).. controls (-0.1315, 0.25) and (-0.2711, 0.2644) .. (-0.3628, 0.2869) -- cycle;
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \csname beeshookbelly\endcsname
+ \csname beehookbelly\endcsname
\csname tikzlinghookbelly\endcsname
%
% Show details only from the front %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -171,16 +167,20 @@
\else% back
%
% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \bee@part@draw[\bee@eye] (-0.15,1.8) circle[radius=0.05];
- \bee@part@draw[\bee@eye] (0.15,1.8) circle[radius=0.05];
+ \bee@part@draw[\bee@eye] (-0.15,1.8) circle[radius=0.05];
+ \bee@part@draw[\bee@eye] (0.15,1.8) circle[radius=0.05];
%
% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\bee@part@draw[\bee@hands] (-0.25,0.88) circle[x radius=0.07,y radius=0.2, rotate=25];
\bee@part@draw[\bee@hands] (0.25,0.88) circle[x radius=0.07,y radius=0.2, rotate=-25];
%
% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \draw[\bee@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.6) arc [start angle=-40, end angle=-140, radius=0.16];
- %
+ \ifbee@openmouth
+ \filldraw[\bee@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.6) arc [start angle=-40, end angle=-140, radius=0.16];
+ \else
+ \draw[\bee@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.6) arc [start angle=-40, end angle=-140, radius=0.16];
+ \fi
+ %
% Antenna %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\fill[\bee@antennas,rotate around={15:(-0.175,2.115)}] (-0.2,1.93) rectangle (-0.15,2.3);
\fill[\bee@antennas,rotate around={-15:(0.175,2.115)}] (0.2,1.93) rectangle (0.15,2.3);
@@ -190,7 +190,7 @@
\fi% back
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \csname beeshookbody\endcsname
+ \csname beehookbody\endcsname
\csname tikzlinghookbody\endcsname
%
}
@@ -207,15 +207,15 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-bees}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-bees}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic bee}}
%\bee
%\end{tcblisting}
%
@@ -227,36 +227,41 @@
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Antenna colour}}
%\bee[antennas=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\bee[eye=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Mouth colour}}
%\bee[mouth=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Wing colour}}
%\bee[wings=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Hand colour}}
%\bee[hands=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Stripe colour}}
%\bee[stripes=red]
%\end{tcblisting}
%
+% The bee can open its mouth:
+%\begin{tcblisting}{title={Open mouth}}
+%\bee[openmouth]
+%\end{tcblisting}
+%
%To view the bee from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={back view}}
%\bee[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the bee 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the bee 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\bee[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\bee[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bugs.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bugs.sty
index 65febf3bbc2..8f618899f58 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bugs.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bugs.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-bugs}[2022/06/17 version v1.0 Drawing bugs in TikZ]
+\ProvidesPackage{tikzlings-bugs}[2025/01/05 version v2.2 Drawing bugs in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -26,12 +26,15 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname bughookforeground\endcsname
\csname tikzlinghookforeground\endcsname
- %
+ %
}
\newif\ifbug@threeD
+\newif\ifbug@leftstep
+\newif\ifbug@rightstep
\newif\ifbug@back
\newif\ifbug@contour
+\newif\ifbug@openmouth
\tikzset{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -49,40 +52,46 @@
body/.store in = \bug@body,
body = black!90!white,
arms/.store in = \bug@arms,
- arms = red!80!black,
+ arms = red!80!black,
wings/.store in = \bug@wings,
- wings = red!80!black,
+ wings = red!80!black,
dots/.store in = \bug@dots,
- dots = black!90!white,
+ dots = black!90!white,
antennas/.store in = \bug@antennas,
- antennas = red!80!black,
+ antennas = red!80!black,
eye/.store in = \bug@eye,
eye = white,
pupil/.store in = \bug@pupil,
pupil = black,
mouth/.store in = \bug@mouth,
- mouth = red,
+ mouth = red,
feet/.store in = \bug@feet,
- feet = red!80!black,
+ feet = red!80!black,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 3D/.code = \bug@threeDtrue,
- back/.code = \bug@backtrue,
+ 3D/.code = \bug@threeDtrue,
+ leftstep/.code = \bug@leftsteptrue,
+ left step/.forward to = /bug/leftstep,
+ rightstep/.code = \bug@rightsteptrue,
+ right step/.forward to = /bug/rightstep,
+ openmouth/.code = \bug@openmouthtrue,
+ open mouth/.forward to = /bug/openmouth,
+ back/.code = \bug@backtrue,
contour/.code = \bug@contourtrue
\def\bug@contour{#1}
\def\bug@antennas{#1}
\def\bug@mouth{#1},
- contour/.default = black,
- outline/.forward to = /bug/contour,
+ contour/.default = black,
+ outline/.forward to = /bug/contour,
}
\def\bug@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.92,0.02) rectangle (0.92, 2.36);
@@ -99,7 +108,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -117,33 +126,41 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \csname bugshookbackground\endcsname
+ \csname bughookbackground\endcsname
\csname tikzlinghookbackground\endcsname
%
\ifbug@back
- %
+ %
% Antenna %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\draw[\bug@antennas,line width=\scalingfactor*0.8pt] (0.1134, 1.911) .. controls (0.0917, 2.0537) and (0.0986, 2.1999) .. (0.1608, 2.2816) .. controls (0.245, 2.3919) and (0.3278, 2.3011) .. (0.3272, 2.2192) .. controls (0.3266, 2.1341) and (0.2237, 2.0423) .. (0.1978, 2.1538);
\draw[\bug@antennas,line width=\scalingfactor*0.8pt] (-0.1134, 1.911) .. controls (-0.0917, 2.0537) and (-0.0986, 2.1999) .. (-0.1608, 2.2816) .. controls (-0.245, 2.3919) and (-0.3278, 2.3011) .. (-0.3272, 2.2192) .. controls (-0.3266, 2.1341) and (-0.2237, 2.0423) .. (-0.1978, 2.1538);
\else% back
%
% Wings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \bug@part@draw[\bug@wings] (-0.0955, 1.4222) .. controls (-0.2086, 1.6765) and (-0.692, 1.2508) .. (-0.8174, 1.0023) .. controls (-0.9304, 0.7786) and (-0.9533, 0.379) .. (-0.7355, 0.2548) .. controls (-0.5988, 0.1768) and (-0.4043, 0.3269) .. (-0.3054, 0.4494) .. controls (-0.097, 0.7075) and (0.0589, 1.0749) .. (-0.0955, 1.4222) -- cycle;
+ \bug@part@draw[\bug@wings] (-0.0955, 1.4222) .. controls (-0.2086, 1.6765) and (-0.692, 1.2508) .. (-0.8174, 1.0023) .. controls (-0.9304, 0.7786) and (-0.9533, 0.379) .. (-0.7355, 0.2548) .. controls (-0.5988, 0.1768) and (-0.4043, 0.3269) .. (-0.3054, 0.4494) .. controls (-0.097, 0.7075) and (0.0589, 1.0749) .. (-0.0955, 1.4222) -- cycle;
\bug@part@draw[\bug@wings] (0.0955, 1.4222) .. controls (0.2086, 1.6765) and (0.692, 1.2508) .. (0.8174, 1.0023) .. controls (0.9304, 0.7786) and (0.9533, 0.379) .. (0.7355, 0.2548) .. controls (0.5988, 0.1768) and (0.4043, 0.3269) .. (0.3054, 0.4494) .. controls (0.097, 0.7075) and (-0.0589, 1.0749) .. (0.0955, 1.4222) -- cycle;
\ifbug@contour
- \bug@part@draw[\bug@dots] (-0.2,0.85) circle [radius=0.08] (-0.5,0.8) circle [radius=0.08] (-0.8,0.75) circle [radius=0.08] (-0.35,0.6) circle [radius=0.08] (-0.65,0.5) circle [radius=0.08] (-0.3,1.05) circle [radius=0.08] (-0.6,1.1) circle [radius=0.08] (-0.35,1.35) circle [radius=0.08] (0.2,0.85) circle [radius=0.08] (0.5,0.8) circle [radius=0.08] (0.8,0.75) circle [radius=0.08] (0.35,0.6) circle [radius=0.08] (0.65,0.5) circle [radius=0.08] (0.3,1.05) circle [radius=0.08] (0.6,1.1) circle [radius=0.08] (0.35,1.35) circle [radius=0.08];
- \else% contour
- \fill[\bug@dots] (-0.2,0.85) circle [radius=0.08] (-0.5,0.8) circle [radius=0.08] (-0.8,0.75) circle [radius=0.08] (-0.35,0.6) circle [radius=0.08] (-0.65,0.5) circle [radius=0.08] (-0.3,1.05) circle [radius=0.08] (-0.6,1.1) circle [radius=0.08] (-0.35,1.35) circle [radius=0.08] (0.2,0.85) circle [radius=0.08] (0.5,0.8) circle [radius=0.08] (0.8,0.75) circle [radius=0.08] (0.35,0.6) circle [radius=0.08] (0.65,0.5) circle [radius=0.08] (0.3,1.05) circle [radius=0.08] (0.6,1.1) circle [radius=0.08] (0.35,1.35) circle [radius=0.08];
+ \bug@part@draw[\bug@dots] (-0.2,0.85) circle [radius=0.08] (-0.5,0.8) circle [radius=0.08] (-0.8,0.75) circle [radius=0.08] (-0.35,0.6) circle [radius=0.08] (-0.65,0.5) circle [radius=0.08] (-0.3,1.05) circle [radius=0.08] (-0.6,1.1) circle [radius=0.08] (-0.35,1.35) circle [radius=0.08] (0.2,0.85) circle [radius=0.08] (0.5,0.8) circle [radius=0.08] (0.8,0.75) circle [radius=0.08] (0.35,0.6) circle [radius=0.08] (0.65,0.5) circle [radius=0.08] (0.3,1.05) circle [radius=0.08] (0.6,1.1) circle [radius=0.08] (0.35,1.35) circle [radius=0.08];
+ \else% contour
+ \fill[\bug@dots] (-0.2,0.85) circle [radius=0.08] (-0.5,0.8) circle [radius=0.08] (-0.8,0.75) circle [radius=0.08] (-0.35,0.6) circle [radius=0.08] (-0.65,0.5) circle [radius=0.08] (-0.3,1.05) circle [radius=0.08] (-0.6,1.1) circle [radius=0.08] (-0.35,1.35) circle [radius=0.08] (0.2,0.85) circle [radius=0.08] (0.5,0.8) circle [radius=0.08] (0.8,0.75) circle [radius=0.08] (0.35,0.6) circle [radius=0.08] (0.65,0.5) circle [radius=0.08] (0.3,1.05) circle [radius=0.08] (0.6,1.1) circle [radius=0.08] (0.35,1.35) circle [radius=0.08];
\fi% contour
\fi% back
%
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \bug@part@draw[\bug@feet] (0.2,0.1) ellipse[x radius=0.18, y radius=0.06];
- \bug@part@draw[\bug@feet] (-0.2,0.1) ellipse[x radius=0.18, y radius=0.06];
+ \ifbug@leftstep
+ \bug@part@draw[\bug@feet] (-0.2,0.12) ellipse[x radius=0.18, y radius=0.06];
+ \else% step
+ \bug@part@draw[\bug@feet] (-0.2,0.1) ellipse[x radius=0.18, y radius=0.06];
+ \fi% step
+ \ifbug@rightstep
+ \bug@part@draw[\bug@feet] (0.2,0.12) ellipse[x radius=0.18, y radius=0.06];
+ \else% step
+ \bug@part@draw[\bug@feet] (0.2,0.1) ellipse[x radius=0.18, y radius=0.06];
+ \fi% step
%
% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\bug@part@draw[\bug@body] ( 0.55, 0.75) .. controls ( 0.55, 0.40) and ( 0.55, 0.08) .. ( 0.00, 0.08) .. controls (-0.55, 0.08) and (-0.55, 0.40) .. (-0.55, 0.75) .. controls (-0.55, 1.13) and (-0.30, 1.44) .. ( 0.00, 1.44) .. controls ( 0.30, 1.44) and ( 0.55, 1.13) .. ( 0.55, 0.75) -- cycle;
@@ -152,19 +169,19 @@
\bug@part@draw[\bug@body] (0,1.7) circle [radius=0.37];
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \csname bugshookbelly\endcsname
+ \csname bughookbelly\endcsname
\csname tikzlinghookbelly\endcsname
%
% Show details only from the front %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifbug@back
%
% Wings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \bug@part@draw[\bug@wings] (-0.0955, 1.4222) .. controls (-0.2086, 1.6765) and (-0.692, 1.2508) .. (-0.8174, 1.0023) .. controls (-0.9304, 0.7786) and (-0.9533, 0.379) .. (-0.7355, 0.2548) .. controls (-0.5988, 0.1768) and (-0.4043, 0.3269) .. (-0.3054, 0.4494) .. controls (-0.097, 0.7075) and (0.0589, 1.0749) .. (-0.0955, 1.4222) -- cycle;
+ \bug@part@draw[\bug@wings] (-0.0955, 1.4222) .. controls (-0.2086, 1.6765) and (-0.692, 1.2508) .. (-0.8174, 1.0023) .. controls (-0.9304, 0.7786) and (-0.9533, 0.379) .. (-0.7355, 0.2548) .. controls (-0.5988, 0.1768) and (-0.4043, 0.3269) .. (-0.3054, 0.4494) .. controls (-0.097, 0.7075) and (0.0589, 1.0749) .. (-0.0955, 1.4222) -- cycle;
\bug@part@draw[\bug@wings] (0.0955, 1.4222) .. controls (0.2086, 1.6765) and (0.692, 1.2508) .. (0.8174, 1.0023) .. controls (0.9304, 0.7786) and (0.9533, 0.379) .. (0.7355, 0.2548) .. controls (0.5988, 0.1768) and (0.4043, 0.3269) .. (0.3054, 0.4494) .. controls (0.097, 0.7075) and (-0.0589, 1.0749) .. (0.0955, 1.4222) -- cycle;
\ifbug@contour
- \bug@part@draw[\bug@dots] (-0.2,0.85) circle [radius=0.08] (-0.5,0.8) circle [radius=0.08] (-0.8,0.75) circle [radius=0.08] (-0.35,0.6) circle [radius=0.08] (-0.65,0.5) circle [radius=0.08] (-0.3,1.05) circle [radius=0.08] (-0.6,1.1) circle [radius=0.08] (-0.35,1.35) circle [radius=0.08] (0.2,0.85) circle [radius=0.08] (0.5,0.8) circle [radius=0.08] (0.8,0.75) circle [radius=0.08] (0.35,0.6) circle [radius=0.08] (0.65,0.5) circle [radius=0.08] (0.3,1.05) circle [radius=0.08] (0.6,1.1) circle [radius=0.08] (0.35,1.35) circle [radius=0.08];
+ \bug@part@draw[\bug@dots] (-0.2,0.85) circle [radius=0.08] (-0.5,0.8) circle [radius=0.08] (-0.8,0.75) circle [radius=0.08] (-0.35,0.6) circle [radius=0.08] (-0.65,0.5) circle [radius=0.08] (-0.3,1.05) circle [radius=0.08] (-0.6,1.1) circle [radius=0.08] (-0.35,1.35) circle [radius=0.08] (0.2,0.85) circle [radius=0.08] (0.5,0.8) circle [radius=0.08] (0.8,0.75) circle [radius=0.08] (0.35,0.6) circle [radius=0.08] (0.65,0.5) circle [radius=0.08] (0.3,1.05) circle [radius=0.08] (0.6,1.1) circle [radius=0.08] (0.35,1.35) circle [radius=0.08];
\else% contour
- \fill[\bug@dots] (-0.2,0.85) circle [radius=0.08] (-0.5,0.8) circle [radius=0.08] (-0.8,0.75) circle [radius=0.08] (-0.35,0.6) circle [radius=0.08] (-0.65,0.5) circle [radius=0.08] (-0.3,1.05) circle [radius=0.08] (-0.6,1.1) circle [radius=0.08] (-0.35,1.35) circle [radius=0.08] (0.2,0.85) circle [radius=0.08] (0.5,0.8) circle [radius=0.08] (0.8,0.75) circle [radius=0.08] (0.35,0.6) circle [radius=0.08] (0.65,0.5) circle [radius=0.08] (0.3,1.05) circle [radius=0.08] (0.6,1.1) circle [radius=0.08] (0.35,1.35) circle [radius=0.08];
+ \fill[\bug@dots] (-0.2,0.85) circle [radius=0.08] (-0.5,0.8) circle [radius=0.08] (-0.8,0.75) circle [radius=0.08] (-0.35,0.6) circle [radius=0.08] (-0.65,0.5) circle [radius=0.08] (-0.3,1.05) circle [radius=0.08] (-0.6,1.1) circle [radius=0.08] (-0.35,1.35) circle [radius=0.08] (0.2,0.85) circle [radius=0.08] (0.5,0.8) circle [radius=0.08] (0.8,0.75) circle [radius=0.08] (0.35,0.6) circle [radius=0.08] (0.65,0.5) circle [radius=0.08] (0.3,1.05) circle [radius=0.08] (0.6,1.1) circle [radius=0.08] (0.35,1.35) circle [radius=0.08];
\fi% contour
\else% back
%
@@ -179,8 +196,12 @@
\bug@part@draw[\bug@arms] (0.25,0.88) circle[x radius=0.07,y radius=0.18, rotate=-35];
%
% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \draw[\bug@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.56) arc [start angle=-40, end angle=-140, radius=0.16];
- %
+ \ifbug@openmouth
+ \filldraw[\bug@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.56) arc [start angle=-40, end angle=-140, radius=0.16];
+ \else
+ \draw[\bug@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.56) arc [start angle=-40, end angle=-140, radius=0.16];
+ \fi
+ %
% Antenna %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\draw[\bug@antennas,line width=\scalingfactor*0.8pt] (0.1134, 1.911) .. controls (0.0917, 2.0537) and (0.0986, 2.1999) .. (0.1608, 2.2816) .. controls (0.245, 2.3919) and (0.3278, 2.3011) .. (0.3272, 2.2192) .. controls (0.3266, 2.1341) and (0.2237, 2.0423) .. (0.1978, 2.1538);
\draw[\bug@antennas,line width=\scalingfactor*0.8pt] (-0.1134, 1.911) .. controls (-0.0917, 2.0537) and (-0.0986, 2.1999) .. (-0.1608, 2.2816) .. controls (-0.245, 2.3919) and (-0.3278, 2.3011) .. (-0.3272, 2.2192) .. controls (-0.3266, 2.1341) and (-0.2237, 2.0423) .. (-0.1978, 2.1538);
@@ -188,7 +209,7 @@
\fi% back
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \csname bugshookbody\endcsname
+ \csname bughookbody\endcsname
\csname tikzlinghookbody\endcsname
%
}
@@ -205,59 +226,70 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-bugs}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-bugs}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic bug}}
%\bug
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic bug can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\bug[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Antenna Colour}}
%\bug[antennas=blue]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\bug[eye=blue]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Pupil colour}}
%\bug[pupil=blue]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Mouth colour}}
%\bug[mouth=blue]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Arm colour}}
%\bug[arms=blue]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Wing colour}}
%\bug[wings=blue]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Foot colour}}
%\bug[feet=blue]
%\end{tcblisting}
%
+% The bug can open its mouth:
+%\begin{tcblisting}{title={Open mouth}}
+%\bug[openmouth]
+%\end{tcblisting}
+%
+%And the bug can lift its legs:
+%\begin{tcblisting}{title={Walking}}
+%\bug[leftstep]
+%\bug[rightstep,xshift=2cm]
+%\end{tcblisting}
+%
%To view the bug from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\bug[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the bug 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the bug 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\bug[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\bug[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-cats.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-cats.sty
index d34599cd7aa..41dc7521ad7 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-cats.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-cats.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-cats}[2022/06/17 version v1.0 Drawing cats in TikZ]
+\ProvidesPackage{tikzlings-cats}[2025/01/05 version v2.2 Drawing cats in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -24,13 +24,13 @@
\else
\ifdefined\pdfrandomseed % pdflatex
\else
- \ifdefined\randomseed
+ \ifdefined\randomseed
\let\pdfrandomseed\randomseed % post TL19 xelatex and lualatex
\else
\let\pdfrandomseed\time % pre TL19 xelatex
\fi
\fi
- \pgfmathsetseed{\number\pdfrandomseed}
+ \pgfmathsetseed{\number\pdfrandomseed}
\fi
\ExplSyntaxOff
@@ -59,6 +59,7 @@
\newif\ifcat@schroedinger
\newif\ifcat@back
\newif\ifcat@contour
+\newif\ifcat@openmouth
\tikzset{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -103,21 +104,23 @@
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 3D/.code = \cat@threeDtrue,
schroedinger/.code = \cat@schroedingertrue,
- back/.code = \cat@backtrue,
+ openmouth/.code = \cat@openmouthtrue,
+ open mouth/.forward to = /cat/openmouth,
+ 3D/.code = \cat@threeDtrue,
+ back/.code = \cat@backtrue,
contour/.code = \cat@contourtrue
\def\cat@contour{#1}
\def\cat@whiskers{#1},
- contour/.default = black,
- outline/.forward to = /cat/contour,
+ contour/.default = black,
+ outline/.forward to = /cat/contour,
}
\def\cat@draw{%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.56,0.1) rectangle (1.63, 2.22);
@@ -134,7 +137,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -152,7 +155,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -164,7 +167,7 @@
%
% Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifcat@back
- \cat@part@draw[\cat@paws] (-0.255,0.3) circle[radius=0.18];
+ \cat@part@draw[\cat@paws] (-0.255,0.3) circle[radius=0.18];
\cat@part@draw[\cat@paws] (0.255,0.3) circle[radius=0.18];
\fi% back
%
@@ -176,10 +179,8 @@
\csname tikzlinghookbelly\endcsname
%
% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \cat@part@draw[\cat@body]
- (0.12, 2.0392) .. controls (0.16, 2.1584) and (0.37, 2.22) .. (0.37, 2.20) .. controls (0.37, 2.2) and (0.39, 1.9) .. (0.2721, 1.9) .. controls (0.1891, 1.88) and (0.12, 1.88) .. (0.12, 2.0392) -- cycle;
- \cat@part@draw[\cat@body]
- (-0.12, 2.0392) .. controls (-0.16, 2.1584) and (-0.37, 2.22) .. (-0.37, 2.20) .. controls (-0.37, 2.2) and (-0.39, 1.9) .. (-0.2721, 1.9) .. controls (-0.1891, 1.88) and (-0.12, 1.88) .. (-0.12, 2.0392) -- cycle;
+ \cat@part@draw[\cat@body] (0.12, 2.0392) .. controls (0.16, 2.1584) and (0.37, 2.22) .. (0.37, 2.20) .. controls (0.37, 2.2) and (0.39, 1.9) .. (0.2721, 1.9) .. controls (0.1891, 1.88) and (0.12, 1.88) .. (0.12, 2.0392) -- cycle;
+ \cat@part@draw[\cat@body] (-0.12, 2.0392) .. controls (-0.16, 2.1584) and (-0.37, 2.22) .. (-0.37, 2.20) .. controls (-0.37, 2.2) and (-0.39, 1.9) .. (-0.2721, 1.9) .. controls (-0.1891, 1.88) and (-0.12, 1.88) .. (-0.12, 2.0392) -- cycle;
%
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cat@part@draw[\cat@body] (0,1.64) circle[radius=0.44];
@@ -196,7 +197,11 @@
\cat@part@draw[\cat@pupil] ( 0.1720, 1.8071) .. controls ( 0.1720+\cat@pupil@width, 1.7827+\cat@pupil@offset) and ( 0.1720+\cat@pupil@width, 1.7584-\cat@pupil@offset) .. ( 0.1720, 1.7341) .. controls ( 0.1720-\cat@pupil@width, 1.7584-\cat@pupil@offset) and ( 0.1720-\cat@pupil@width, 1.7827+\cat@pupil@offset) .. ( 0.1720, 1.8071) -- cycle;
%
% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \draw[\cat@whiskers,line width=\scalingfactor*0.2pt] (-0.16, 1.527) .. controls (-0.16, 1.527) and (-0.062, 1.420) .. ( 0.000, 1.556) .. controls ( 0.062, 1.420) and ( 0.16, 1.527) .. ( 0.16, 1.527);
+ \ifcat@openmouth
+ \filldraw[\cat@whiskers,line width=\scalingfactor*0.2pt] (-0.16, 1.527) .. controls (-0.16, 1.527) and (-0.062, 1.420) .. ( 0.000, 1.556) .. controls ( 0.062, 1.420) and ( 0.16, 1.527) .. ( 0.16, 1.527) (0.16,1.527) arc [start angle=-20, end angle=-160, radius=0.17];
+ \else
+ \draw[\cat@whiskers,line width=\scalingfactor*0.2pt] (-0.16, 1.527) .. controls (-0.16, 1.527) and (-0.062, 1.420) .. ( 0.000, 1.556) .. controls ( 0.062, 1.420) and ( 0.16, 1.527) .. ( 0.16, 1.527);
+ \fi
%
% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cat@part@draw[\cat@nose] (-0.069, 1.6452) .. controls (-0.0524, 1.6613) and (0.0524, 1.6613) .. (0.069, 1.6452) .. controls (0.08, 1.625) and (0.0206, 1.55) .. (0, 1.55) .. controls (-0.0206, 1.55) and (-0.08, 1.625) .. (-0.069, 1.6452) -- cycle;
@@ -210,8 +215,8 @@
\fill[\cat@whiskers] (-0.0671, 1.6243) .. controls (-0.1414, 1.6725) and (-0.2182, 1.6964) .. (-0.2925, 1.6482) -- (-0.2925, 1.6582) .. controls (-0.2179, 1.7066) and (-0.1417, 1.6727) .. (-0.0671, 1.6243) -- cycle;
%
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \cat@part@draw[\cat@paws] (-0.255,0.3) circle[radius=0.18];
- \cat@part@draw[\cat@paws] (0.255,0.3) circle[radius=0.18];
+ \cat@part@draw[\cat@paws] (-0.255,0.3) circle[radius=0.18];
+ \cat@part@draw[\cat@paws] (0.255,0.3) circle[radius=0.18];
%
\fi% back
%
@@ -224,7 +229,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.55,0.39) rectangle (0.55, 2.06);
@@ -241,7 +246,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -257,7 +262,7 @@
\fi% 3D
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% Drawing the tomebstone
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -307,50 +312,55 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-cats}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-cats}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic cat}}
%\cat
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic cat can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\cat[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\cat[eye=green]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Pupil colour}}
%\cat[pupil=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Nose colour}}
%\cat[nose=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Whiskers colour}}
%\cat[whiskers=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Paw colour}}
%\cat[paws=red]
%\end{tcblisting}
%
-%The shape of the \lstinline|pupil| can be changed with the \lstinline|pupilwidth| option:
-%\begin{tcblisting}{}
+% The cat can open its mouth:
+%\begin{tcblisting}{title={Open mouth}}
+%\cat[openmouth]
+%\end{tcblisting}
+%
+%The shape of the \saminline|pupil| can be changed with the \saminline|pupilwidth| option:
+%\begin{tcblisting}{title={Width of pupils}}
%\cat[pupilwidth=0.015]
%\end{tcblisting}
%
%Additionally several predefined widths exist:
-%\begin{tcolorbox}
-%\begin{lstlisting}[morekeywords={narrow,medium,wide,very,pupils}]
+%\begin{tcolorbox}[title={Predefined pupil widths}]
+%\begin{samcode}
%\cat[narrow pupils]
%
%\cat[medium pupils]
@@ -358,7 +368,7 @@
%\cat[wide pupils]
%
%\cat[very wide pupils]
-%\end{lstlisting}
+%\end{samcode}
%
%\tcblower
%\begin{tikzpicture}[yshift=2.4cm,xshift=1.8cm]
@@ -369,7 +379,7 @@
%\end{tikzpicture}
%\end{tcolorbox}
%
-%There is also the special option \lstinline|schroedinger|. This cat is both alive and dead as long as you did not compile your document.
+%There is also the special option \saminline|schroedinger|. This cat is both alive and dead as long as you did not compile your document.
%Be prepared for a possibly disturbing scene when you open the pdf, this option is not suited for sensitive \tikzlings.
%\begingroup
%\makeatletter
@@ -379,22 +389,22 @@
%}
%\renewcommand{\cathookbackground}{}
%\makeatother
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Schrödingers cat}}
%\cat[schroedinger]
%\end{tcblisting}
%\endgroup
%
%To view the cat from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\cat[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the cat 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the cat 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\cat[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\cat[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-chickens.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-chickens.sty
index 1d96fc9d662..ff770860fda 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-chickens.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-chickens.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-chickens}[2022/06/17 version v1.0 Draw chickens in TikZ]
+\ProvidesPackage{tikzlings-chickens}[2025/01/05 version v2.2 Draw chickens in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -31,7 +31,7 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname chickenhookforeground\endcsname
\csname tikzlinghookforeground\endcsname
- %
+ %
}
\newif\ifchicken@threeD
@@ -53,7 +53,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
body/.store in = \chicken@body,
- body = brown!50!orange!70!yellow!80!white,
+ body = brown!90!orange!70!yellow!40!white,
eye/.store in = \chicken@eye,
eye = white!90!gray,
pupil/.store in = \chicken@pupil,
@@ -61,24 +61,24 @@
bill/.store in = \chicken@bill,
bill = yellow,
feet/.store in = \chicken@feet,
- feet = orange!90!yellow,
+ feet = orange!90!yellow,
comb/.store in = \chicken@comb,
- comb = red,
+ comb = red,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3D/.code = \chicken@threeDtrue,
- back/.code = \chicken@backtrue,
+ back/.code = \chicken@backtrue,
contour/.code = \chicken@contourtrue
\def\chicken@contour{#1},
- contour/.default = black,
- outline/.forward to = /chicken/contour,
+ contour/.default = black,
+ outline/.forward to = /chicken/contour,
baby/.code = \chicken@babytrue
\def\chicken@baby{#1}
\def\chicken@bill{\chicken@feet},
- baby/.default = yellow!80!orange,
+ baby/.default = yellow!80!orange,
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -89,7 +89,7 @@
\def\chicken@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.96, 0.08) rectangle (0.96, 2.35);
@@ -106,7 +106,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -123,8 +123,20 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
+ % generating saturated version of body colour
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \extractcolorspecs{\chicken@body}{\chicken@model}{\chicken@colorspec}
+ \convertcolorspec{\chicken@model}{\chicken@colorspec}{hsb}{\chicken@hsbcolorspec}
+ \pgfmathsetmacro{\chicken@hue}{(array({\chicken@hsbcolorspec},0))}
+ \pgfmathsetmacro{\chicken@sat}{(array({\chicken@hsbcolorspec},1)+0.5)}
+ \pgfmathsetmacro{\chicken@bright}{(array({\chicken@hsbcolorspec},2))}
+ \definecolor{chicken@bodysat50}{hsb}{\chicken@hue,\chicken@sat,\chicken@bright}
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -132,12 +144,12 @@
\csname tikzlinghookbackground\endcsname
%
% Wings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \chicken@part@draw[\chicken@body] (0.57,0.95) ellipse[x radius=0.3, y radius=0.08, rotate=-65];
- \chicken@part@draw[\chicken@body] (0.64,1.07) ellipse[x radius=0.3, y radius=0.08, rotate=-43];
- \chicken@part@draw[\chicken@body] (0.66,1.18) ellipse[x radius=0.3, y radius=0.08, rotate=-18];
- \chicken@part@draw[\chicken@body] (-0.57,0.95) ellipse[x radius=0.3, y radius=0.08, rotate=65];
- \chicken@part@draw[\chicken@body] (-0.64,1.07) ellipse[x radius=0.3, y radius=0.08, rotate=43];
- \chicken@part@draw[\chicken@body] (-0.66,1.18) ellipse[x radius=0.3, y radius=0.08, rotate=18];
+ \chicken@part@draw[chicken@bodysat50] (0.57,0.95) ellipse[x radius=0.3, y radius=0.08, rotate=-65];
+ \chicken@part@draw[chicken@bodysat50] (0.64,1.07) ellipse[x radius=0.3, y radius=0.08, rotate=-43];
+ \chicken@part@draw[chicken@bodysat50] (0.66,1.18) ellipse[x radius=0.3, y radius=0.08, rotate=-18];
+ \chicken@part@draw[chicken@bodysat50] (-0.57,0.95) ellipse[x radius=0.3, y radius=0.08, rotate=65];
+ \chicken@part@draw[chicken@bodysat50] (-0.64,1.07) ellipse[x radius=0.3, y radius=0.08, rotate=43];
+ \chicken@part@draw[chicken@bodysat50] (-0.66,1.18) ellipse[x radius=0.3, y radius=0.08, rotate=18];
%
% Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifchicken@back
@@ -152,8 +164,8 @@
\fi% back
%
% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \chicken@part@draw[\chicken@body!50!white] ( 0.00, 0.33) .. controls (-0.60, 0.33) and (-0.55, 0.65) .. (-0.55, 0.90) .. controls (-0.55, 1.10) and (-0.48, 1.20) .. (-0.39, 1.40) .. controls (-0.32, 1.58) and (-0.32, 2.09) .. ( 0.00, 2.09) .. controls ( 0.32, 2.09) and ( 0.32, 1.58) .. ( 0.39, 1.40) .. controls ( 0.48, 1.20) and ( 0.55, 1.10) .. ( 0.55, 0.90) .. controls ( 0.55, 0.65) and ( 0.60, 0.33) .. ( 0, 0.33) -- cycle;
- \chicken@part@draw[\chicken@body,decoration={snake,amplitude=\scalingfactor*1.5pt,segment length=\scalingfactor*6.1pt}] ( -0.39, 1.40) .. controls (-0.32, 1.58) and (-0.32, 2.09) .. ( 0.00, 2.09) .. controls ( 0.32, 2.09) and ( 0.32, 1.58) .. ( 0.39, 1.40) decorate {arc [start angle=-60,end angle=-120,radius=0.77]} -- cycle;
+ \chicken@part@draw[\chicken@body] ( 0.00, 0.33) .. controls (-0.60, 0.33) and (-0.55, 0.65) .. (-0.55, 0.90) .. controls (-0.55, 1.10) and (-0.48, 1.20) .. (-0.39, 1.40) .. controls (-0.32, 1.58) and (-0.32, 2.09) .. ( 0.00, 2.09) .. controls ( 0.32, 2.09) and ( 0.32, 1.58) .. ( 0.39, 1.40) .. controls ( 0.48, 1.20) and ( 0.55, 1.10) .. ( 0.55, 0.90) .. controls ( 0.55, 0.65) and ( 0.60, 0.33) .. ( 0, 0.33) -- cycle;
+ \chicken@part@draw[chicken@bodysat50,decoration={snake,amplitude=\scalingfactor*1.5pt,segment length=\scalingfactor*6.1pt}] ( -0.39, 1.40) .. controls (-0.32, 1.58) and (-0.32, 2.09) .. ( 0.00, 2.09) .. controls ( 0.32, 2.09) and ( 0.32, 1.58) .. ( 0.39, 1.40) decorate {arc [start angle=-60,end angle=-120,radius=0.77]} -- cycle;
%
% Comb %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chicken@part@draw[\chicken@comb] (0.04,2.132) ellipse[x radius=0.22, y radius=0.06, rotate=70];
@@ -175,7 +187,7 @@
% Bill %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifchicken@back
\chicken@part@draw[\chicken@comb] (-0.04, 1.57) ellipse[x radius=0.04, y radius=0.08, rotate=-20];
- \chicken@part@draw[\chicken@comb] (0.04, 1.57) ellipse[x radius=0.04, y radius=0.08, rotate=20];
+ \chicken@part@draw[\chicken@comb] (0.04, 1.57) ellipse[x radius=0.04, y radius=0.08, rotate=20];
\chicken@part@draw[\chicken@bill] (-0.09, 1.7) -- (0, 1.58) -- (0.09, 1.7) arc [start angle=50, end angle=130, radius=0.14] -- cycle;
\fi% back
%
@@ -193,10 +205,10 @@
%
% Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifchicken@back
- \chicken@part@draw[\chicken@body] (0.12, 0.795) ellipse[x radius=0.20, y radius=0.06, rotate=58];
- \chicken@part@draw[\chicken@body] (0.04, 0.87) ellipse[x radius=0.25, y radius=0.06, rotate=80];
- \chicken@part@draw[\chicken@body] (-0.03, 0.83) ellipse[x radius=0.20, y radius=0.06, rotate=102];
- \chicken@part@draw[\chicken@body] (-0.082, 0.76) ellipse[x radius=0.17, y radius=0.06, rotate=130];
+ \chicken@part@draw[chicken@bodysat50] (0.12, 0.795) ellipse[x radius=0.20, y radius=0.06, rotate=58];
+ \chicken@part@draw[chicken@bodysat50] (0.04, 0.87) ellipse[x radius=0.25, y radius=0.06, rotate=80];
+ \chicken@part@draw[chicken@bodysat50] (-0.03, 0.83) ellipse[x radius=0.20, y radius=0.06, rotate=102];
+ \chicken@part@draw[chicken@bodysat50] (-0.082, 0.76) ellipse[x radius=0.17, y radius=0.06, rotate=130];
\fi% back
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -213,7 +225,7 @@
\def\chicken@drawbaby{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.53, 0.1) rectangle (0.53, 1.22);
@@ -230,7 +242,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -248,7 +260,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts (center: x=0.925)
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -341,62 +353,62 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-chickens}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-chickens}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic chicken}}
%\chicken
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic chicken can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\chicken[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Comb colour}}
%\chicken[comb=green]
%\end{tcblisting}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\chicken[eye=red]
%\end{tcblisting}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Pupil color}}
%\chicken[pupil=red]
%\end{tcblisting}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Bill colour}}
%\chicken[bill=red]
%\end{tcblisting}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Foot colour}}
%\chicken[feet=red]
%\end{tcblisting}
%
-%There is also the special option \lstinline|baby| which will draw a baby chicken called \emph{Pio}:
-%\begin{tcblisting}{}
+%There is also the special option \saminline|baby| which will draw a baby chicken called \emph{Pio}:
+%\begin{tcblisting}{title={Baby chicken}}
%\chicken[baby=yellow]
%\end{tcblisting}
%
%To view the chicken from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\chicken[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the chicken 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the chicken 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\chicken[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\chicken[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-coatis.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-coatis.sty
index d98c1398f26..1e5bba28a7b 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-coatis.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-coatis.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-coatis}[2022/06/17 version v1.0 Drawing coatis in TikZ]
+\ProvidesPackage{tikzlings-coatis}[2025/01/05 version v2.2 Drawing coatis in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -30,6 +30,8 @@
\newif\ifcoati@threeD
\newif\ifcoati@sideward
+\newif\ifcoati@leftstep
+\newif\ifcoati@rightstep
\newif\ifcoati@back
\newif\ifcoati@contour
@@ -47,9 +49,9 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
body/.store in = \coati@body,
- body = brown!50!darkgray!97!yellow,
+ body = brown!50!darkgray!97!yellow!50!darkgray,
eye/.store in = \coati@eye,
- eye = \coati@body!50!black,
+ eye = coati@bodybright!50!black,
rotatehead/.store in = \coati@rotatehead,
rotate head/.forward to = /coati/rotatehead,
rotatehead = 0,
@@ -58,19 +60,23 @@
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 3D/.code = \coati@threeDtrue,
+ 3D/.code = \coati@threeDtrue,
sideward/.code = \coati@sidewardtrue,
- back/.code = \coati@backtrue,
+ leftstep/.code = \coati@leftsteptrue,
+ left step/.forward to = /coati/leftstep,
+ rightstep/.code = \coati@rightsteptrue,
+ right step/.forward to = /coati/rightstep,
+ back/.code = \coati@backtrue,
contour/.code = \coati@contourtrue
\def\coati@contour{#1},
- contour/.default = black,
- outline/.forward to = /coati/contour,
+ contour/.default = black,
+ outline/.forward to = /coati/contour,
}
\def\coati@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.84,0.1) rectangle (1.63,2.26);
@@ -87,7 +93,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -102,75 +108,93 @@
\fi% contour
\fi% 3D
%
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % generating saturated version of body colour
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \extractcolorspecs{\coati@body}{\coati@model}{\coati@colorspec}
+ \convertcolorspec{\coati@model}{\coati@colorspec}{hsb}{\coati@hsbcolorspec}
+ \pgfmathsetmacro{\coati@hue}{(array({\coati@hsbcolorspec},0))}
+ \pgfmathsetmacro{\coati@sat}{(array({\coati@hsbcolorspec},1)+0.1)}
+ \pgfmathsetmacro{\coati@bright}{(array({\coati@hsbcolorspec},2))+0.13}
+ \definecolor{coati@bodybright}{hsb}{\coati@hue,\coati@sat,\coati@bright}
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname coatihookbackground\endcsname
\csname tikzlinghookbackground\endcsname
- %
+ %
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \coati@part@draw[\coati@body!80!white] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
- \coati@part@draw[\coati@body!80!white] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \ifcoati@leftstep
+ \coati@part@draw[coati@bodybright!80!white] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
+ \else% step
+ \coati@part@draw[coati@bodybright!80!white] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \fi% step
+ \ifcoati@rightstep
+ \coati@part@draw[coati@bodybright!80!white] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
+ \else% step
+ \coati@part@draw[coati@bodybright!80!white] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \fi% step
%
% Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifcoati@back
- \coati@part@draw[\coati@body!50!darkgray] (0.2845, 0.5595) .. controls (0.6382, 0.8326) and (0.7302, 1.5138) .. (1.0504, 1.6639) .. controls (1.3206, 1.7840) and (1.7609, 1.3537) .. (1.5608, 1.3437) .. controls (0.9203, 2.0442) and (0.8642, 0.6247) .. (0.5001, 0.3831) .. controls (0.3214, 0.2645) and (-0.1764, 0.1117) .. (-0.1408, 0.3245) .. controls (-0.1082, 0.5191) and (0.0508, 0.3791) .. (0.2845, 0.5595) -- cycle;
- \begin{scope}
- \clip (0.2845, 0.5595) .. controls (0.6382, 0.8326) and (0.7302, 1.5138) .. (1.0504, 1.6639) .. controls (1.3206, 1.7840) and (1.7609, 1.3537) .. (1.5608, 1.3437) .. controls (0.9203, 2.0442) and (0.8642, 0.6247) .. (0.5001, 0.3831) .. controls (0.3214, 0.2645) and (-0.1764, 0.1117) .. (-0.1408, 0.3245) .. controls (-0.1082, 0.5191) and (0.0508, 0.3791) .. (0.2845, 0.5595) -- cycle;
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-30:(0.8,1.15)}] (0.6,1.1) rectangle ++(0.4,0.1);
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-30:(0.9,1.35)}] (0.7,1.3) rectangle ++(0.4,0.1);
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-50:(1.0,1.5)}] (0.8,1.45) rectangle ++(0.4,0.1);
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-80:(1.2,1.6)}] (1.0,1.55) rectangle ++(0.4,0.1);
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-130:(1.5,1.5)}] (1.3,1.45) rectangle ++(0.4,0.1);
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-30:(0.55,0.65)}] (0.35,0.6) rectangle ++(0.4,0.1);
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-30:(0.65,0.9)}] (0.45,0.85) rectangle ++(0.4,0.1);
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-40:(0.35,0.45)}] (0.15,0.4) rectangle ++(0.4,0.1);
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-60:(0.05,0.3)}] (-0.15,0.25) rectangle ++(0.4,0.1);
- \end{scope}
+ \coati@part@draw[\coati@body] (0.2845, 0.5595) .. controls (0.6382, 0.8326) and (0.7302, 1.5138) .. (1.0504, 1.6639) .. controls (1.3206, 1.7840) and (1.7609, 1.3537) .. (1.5608, 1.3437) .. controls (0.9203, 2.0442) and (0.8642, 0.6247) .. (0.5001, 0.3831) .. controls (0.3214, 0.2645) and (-0.1764, 0.1117) .. (-0.1408, 0.3245) .. controls (-0.1082, 0.5191) and (0.0508, 0.3791) .. (0.2845, 0.5595) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (1.48, 1.554) -- (1.4139, 1.4752).. controls (1.4389, 1.4583) and (1.4649, 1.4375) .. (1.492, 1.4127) -- (1.5537, 1.4862).. controls (1.5333, 1.5087) and (1.5084, 1.5318) .. (1.48, 1.554) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (1.2166, 1.6794) -- (1.2121, 1.5329).. controls (1.2432, 1.5385) and (1.2764, 1.5364) .. (1.3119, 1.5258) -- (1.3158, 1.6501).. controls (1.2832, 1.6633) and (1.2498, 1.6736) .. (1.2166, 1.6794) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (1.0093, 1.6405).. controls (0.9821, 1.6229) and (0.9566, 1.6014) .. (0.9325, 1.5765) -- (1.0545, 1.4296).. controls (1.0777, 1.4572) and (1.1021, 1.4801) .. (1.1281, 1.4976) -- (1.0093, 1.6405) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange](0.8327, 1.4466).. controls (0.8154, 1.4193) and (0.7988, 1.3901) .. (0.7823, 1.3602) -- (0.9497, 1.2635).. controls (0.9655, 1.2946) and (0.9818, 1.3236) .. (0.9987, 1.3507) -- (0.8327, 1.4466) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (0.7253, 1.2508).. controls (0.7107, 1.2213) and (0.6961, 1.1912) .. (0.6814, 1.1607) -- (0.859, 1.0582).. controls (0.8717, 1.0897) and (0.8844, 1.1212) .. (0.8975, 1.1514) -- (0.7253, 1.2508) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (0.5972, 0.9882).. controls (0.5821, 0.9583) and (0.5665, 0.9288) .. (0.5505, 0.8997) -- (0.7501, 0.7845).. controls (0.7627, 0.8154) and (0.7754, 0.8463) .. (0.7878, 0.8781) -- (0.5972, 0.9882) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (0.464, 0.7574).. controls (0.4448, 0.7293) and (0.4248, 0.7022) .. (0.4037, 0.6767) -- (0.6357, 0.5427).. controls (0.6519, 0.5703) and (0.6676, 0.5997) .. (0.6828, 0.6311) -- (0.464, 0.7574) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange](0.2881, 0.5624).. controls (0.2869, 0.5615) and (0.2857, 0.5604) .. (0.2845, 0.5595).. controls (0.2564, 0.5378) and (0.2295, 0.521) .. (0.2036, 0.5074) -- (0.3683, 0.3141).. controls (0.4022, 0.3288) and (0.4337, 0.3442) .. (0.461, 0.3595) -- (0.2881, 0.5624) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (0.0822, 0.4628).. controls (0.0453, 0.4543) and (0.0123, 0.4501) .. (-0.0164, 0.445) -- (0.039, 0.2211).. controls (0.0701, 0.2242) and (0.1034, 0.23) .. (0.1379, 0.2379) -- (0.0822, 0.4628) -- cycle;
\fi% back
%
% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \coati@part@draw[\coati@body!80!white] (-0.625,1) ellipse[x radius=0.42, y radius=0.13, rotate=70];
- \coati@part@draw[\coati@body!80!white] (0.625,1) ellipse[x radius=0.42, y radius=0.13, rotate=-70];
+ \coati@part@draw[coati@bodybright!80!white] (-0.625,1) ellipse[x radius=0.42, y radius=0.13, rotate=70];
+ \coati@part@draw[coati@bodybright!80!white] (0.625,1) ellipse[x radius=0.42, y radius=0.13, rotate=-70];
%
% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \coati@part@draw[\coati@body!50!darkgray] (0.595, 0.92) .. controls (0.595, 0.26) and (0.355, 0.18) .. (0, 0.18) .. controls (-0.355, 0.18) and (-0.595, 0.26) .. (-0.595, 0.92) .. controls (-0.605, 1.58) and (-0.335, 2.11) .. (0, 2.11) .. controls (0.335, 2.11) and (0.605, 1.58) .. (0.595, 0.92) -- cycle;
+ \coati@part@draw[\coati@body] (0.595, 0.92) .. controls (0.595, 0.26) and (0.355, 0.18) .. (0, 0.18) .. controls (-0.355, 0.18) and (-0.595, 0.26) .. (-0.595, 0.92) .. controls (-0.605, 1.58) and (-0.335, 2.11) .. (0, 2.11) .. controls (0.335, 2.11) and (0.605, 1.58) .. (0.595, 0.92) -- cycle;
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname coatihookbelly\endcsname
\csname tikzlinghookbelly\endcsname
- %
+ %
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{scope}[rotate around={\coati@rotatehead:(0,1.68)}]
%
% Sidewards head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifcoati@sideward
- %
+ %
% Left Ear %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \coati@part@draw[\coati@body!45!white!95!orange] (-0.212, 2.135) ellipse[x radius=0.09, y radius=0.12, rotate=-16];
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (-0.212, 2.135) ellipse[x radius=0.09, y radius=0.12, rotate=-16];
\unless\ifcoati@back
- \coati@part@draw[\coati@body!80!white] (-0.212, 2.135) ellipse[x radius=0.065, y radius=0.09, rotate=-16];
+ \coati@part@draw[coati@bodybright!80!white] (-0.212, 2.135) ellipse[x radius=0.065, y radius=0.09, rotate=-16];
\fi% back
- %
+ %
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifcoati@back
- \coati@part@draw[\coati@body!45!white!95!orange] (0.4569, 1.5608) .. controls (0.3680, 1.3594) and (0.0005, 1.2699) .. (-0.1826, 1.3507) .. controls (-0.3657, 1.4315) and (-0.5475, 1.7632) .. (-0.4587, 1.9646) .. controls (-0.1103, 2.3578) and (0.5123, 2.0832) .. (0.4569, 1.5608) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (0.4569, 1.5608) .. controls (0.3680, 1.3594) and (0.0005, 1.2699) .. (-0.1826, 1.3507) .. controls (-0.3657, 1.4315) and (-0.5475, 1.7632) .. (-0.4587, 1.9646) .. controls (-0.1103, 2.3578) and (0.5123, 2.0832) .. (0.4569, 1.5608) -- cycle;
\else% back
- \coati@part@draw[\coati@body!45!white!95!orange] (0.4808, 1.7911) .. controls (0.5682, 1.2837) and (-0.3468, 1.3575) .. (-0.6360, 1.3679) .. controls (-0.7582, 1.4729) and (-0.5198, 1.7911) .. (-0.5198, 1.7911) .. controls (-0.3597, 2.2914) and (0.3207, 2.2914) .. (0.4808, 1.7911) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (0.4808, 1.7911) .. controls (0.5682, 1.2837) and (-0.3468, 1.3575) .. (-0.6360, 1.3679) .. controls (-0.7582, 1.4729) and (-0.5198, 1.7911) .. (-0.5198, 1.7911) .. controls (-0.3597, 2.2914) and (0.3207, 2.2914) .. (0.4808, 1.7911) -- cycle;
\fi% back
- %
+ %
% Cheek %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifcoati@back
- \coati@part@draw[\coati@body!80!white] (0.30, 1.4552) .. controls (0.30, 1.4552) and (0.1016, 1.7565) .. (-0.0005, 1.7581) -- (-0.6360, 1.3679) .. controls (-0.3083, 1.3437) and (0.0283, 1.332) .. (0.30, 1.4552) -- cycle (-0.4166, 1.9824) .. controls (-0.4166, 1.9824) and (-0.2413, 1.9758) .. (-0.2226, 1.9112) -- (-0.6875, 1.4906) .. controls (-0.6875, 1.4906) and (-0.5712, 1.7549) .. (-0.4166, 1.9824) -- cycle;
+ \coati@part@draw[coati@bodybright!80!white] (0.30, 1.4552) .. controls (0.30, 1.4552) and (0.1016, 1.7565) .. (-0.0005, 1.7581) -- (-0.6360, 1.3679) .. controls (-0.3083, 1.3437) and (0.0283, 1.332) .. (0.30, 1.4552) -- cycle (-0.4166, 1.9824) .. controls (-0.4166, 1.9824) and (-0.2413, 1.9758) .. (-0.2226, 1.9112) -- (-0.6875, 1.4906) .. controls (-0.6875, 1.4906) and (-0.5712, 1.7549) .. (-0.4166, 1.9824) -- cycle;
\fi% back
%
% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifcoati@back
- \coati@part@draw[\coati@body!50!black] (-0.605, 1.453) circle[radius=0.09];
+ \coati@part@draw[coati@bodybright!50!black] (-0.605, 1.453) circle[radius=0.09];
\fi% back
%
% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -180,29 +204,29 @@
\fi% back
%
% Right Ear %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \coati@part@draw[\coati@body!45!white!95!orange] (0.417, 1.875) ellipse[x radius=0.1, y radius=0.14, rotate=-16];
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (0.417, 1.875) ellipse[x radius=0.1, y radius=0.14, rotate=-16];
\unless\ifcoati@back
- \coati@part@draw[\coati@body!80!white] (0.417, 1.875) ellipse[x radius=0.07, y radius=0.10, rotate=-16];
+ \coati@part@draw[coati@bodybright!80!white] (0.417, 1.875) ellipse[x radius=0.07, y radius=0.10, rotate=-16];
\fi% back
%
% Normal Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\else% sidewards
- %
+ %
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifcoati@back
- \coati@part@draw[\coati@body!45!white!95!orange] (0.5, 1.8) .. controls (0.5, 1.58) and (0.2, 1.35) .. (0, 1.35) .. controls (-0.2, 1.35) and (-0.5, 1.58) .. (-0.5, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) .. (0.5, 1.8) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (0.5, 1.8) .. controls (0.5, 1.58) and (0.2, 1.35) .. (0, 1.35) .. controls (-0.2, 1.35) and (-0.5, 1.58) .. (-0.5, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) .. (0.5, 1.8) -- cycle;
\else% back
- \coati@part@draw[\coati@body!45!white!95!orange] (0.5, 1.8) .. controls (0.5, 1.58) and (0.2, 1.25) .. (0, 1.16) .. controls (-0.2, 1.25) and (-0.5, 1.58) .. (-0.5, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) .. (0.5, 1.8) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (0.5, 1.8) .. controls (0.5, 1.58) and (0.2, 1.25) .. (0, 1.16) .. controls (-0.2, 1.25) and (-0.5, 1.58) .. (-0.5, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) .. (0.5, 1.8) -- cycle;
\fi% back
%
% Cheeks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifcoati@back
- \coati@part@draw[\coati@body!80!white] (-0.4935, 1.7443) .. controls (-0.4935, 1.7443) and (-0.1917, 1.7798) .. (-0.1371, 1.7333) .. controls (-0.07, 1.2) and (-0.07, 1.2) .. (-0.07, 1.2) .. controls (-0.259, 1.3169) and (-0.46, 1.5665) .. (-0.4935, 1.7443) -- cycle (0.4935, 1.7443) .. controls (0.4935, 1.7443) and (0.1917, 1.7798) .. (0.1371, 1.7333) .. controls (0.07, 1.2) and (0.07, 1.2) .. (0.07, 1.2) .. controls (0.259, 1.3169) and (0.46, 1.5665) .. (0.4935, 1.7443) -- cycle;
+ \coati@part@draw[coati@bodybright!80!white] (-0.4935, 1.7443) .. controls (-0.4935, 1.7443) and (-0.1917, 1.7798) .. (-0.1371, 1.7333) .. controls (-0.07, 1.2) and (-0.07, 1.2) .. (-0.07, 1.2) .. controls (-0.259, 1.3169) and (-0.46, 1.5665) .. (-0.4935, 1.7443) -- cycle (0.4935, 1.7443) .. controls (0.4935, 1.7443) and (0.1917, 1.7798) .. (0.1371, 1.7333) .. controls (0.07, 1.2) and (0.07, 1.2) .. (0.07, 1.2) .. controls (0.259, 1.3169) and (0.46, 1.5665) .. (0.4935, 1.7443) -- cycle;
\fi% back
%
% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \unless\ifcoati@back
- \coati@part@draw[\coati@body!50!black] (0, 1.248) circle[radius=0.09];
+ \unless\ifcoati@back
+ \coati@part@draw[coati@bodybright!50!black] (0, 1.248) circle[radius=0.09];
\fi% back
%
% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -212,37 +236,34 @@
\fi% back
%
% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \coati@part@draw[\coati@body!45!white!95!orange] (0.44, 2.02) circle[radius=0.12];
- \coati@part@draw[\coati@body!45!white!95!orange] (-0.44, 2.02) circle[radius=0.12];
- \unless\ifcoati@back
- \coati@part@draw[\coati@body!80!white] (0.44, 2.02) circle[radius=0.09];
- \coati@part@draw[\coati@body!80!white] (-0.44, 2.02) circle[radius=0.09];
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (0.44, 2.02) circle[radius=0.12];
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (-0.44, 2.02) circle[radius=0.12];
+ \unless\ifcoati@back
+ \coati@part@draw[coati@bodybright!80!white] (0.44, 2.02) circle[radius=0.09];
+ \coati@part@draw[coati@bodybright!80!white] (-0.44, 2.02) circle[radius=0.09];
\fi% back
- %
+ %
\fi% sidewards
\end{scope}
%
% Tail if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifcoati@back
- \coati@part@draw[\coati@body!50!darkgray] (0.2845, 0.5595) .. controls (0.6382, 0.8326) and (0.7302, 1.5138) .. (1.0504, 1.6639) .. controls (1.3206, 1.7840) and (1.7609, 1.3537) .. (1.5608, 1.3437) .. controls (0.9203, 2.0442) and (0.8642, 0.6247) .. (0.5001, 0.3831) .. controls (0.3214, 0.2645) and (-0.1764, 0.1117) .. (-0.1408, 0.3245) .. controls (-0.1082, 0.5191) and (0.0508, 0.3791) .. (0.2845, 0.5595) -- cycle;
- \begin{scope}
- \clip (0.2845, 0.5595) .. controls (0.6382, 0.8326) and (0.7302, 1.5138) .. (1.0504, 1.6639) .. controls (1.3206, 1.7840) and (1.7609, 1.3537) .. (1.5608, 1.3437) .. controls (0.9203, 2.0442) and (0.8642, 0.6247) .. (0.5001, 0.3831) .. controls (0.3214, 0.2645) and (-0.1764, 0.1117) .. (-0.1408, 0.3245) .. controls (-0.1082, 0.5191) and (0.0508, 0.3791) .. (0.2845, 0.5595) -- cycle;
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-30:(0.8,1.15)}] (0.6,1.1) rectangle ++(0.4,0.1);
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-30:(0.9,1.35)}] (0.7,1.3) rectangle ++(0.4,0.1);
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-50:(1.0,1.5)}] (0.8,1.45) rectangle ++(0.4,0.1);
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-80:(1.2,1.6)}] (1.0,1.55) rectangle ++(0.4,0.1);
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-130:(1.5,1.5)}] (1.3,1.45) rectangle ++(0.4,0.1);
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-30:(0.55,0.65)}] (0.35,0.6) rectangle ++(0.4,0.1);
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-30:(0.65,0.9)}] (0.45,0.85) rectangle ++(0.4,0.1);
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-40:(0.35,0.45)}] (0.15,0.4) rectangle ++(0.4,0.1);
- \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-60:(0.05,0.3)}] (-0.15,0.25) rectangle ++(0.4,0.1);
- \end{scope}
+ \coati@part@draw[\coati@body] (0.2845, 0.5595) .. controls (0.6382, 0.8326) and (0.7302, 1.5138) .. (1.0504, 1.6639) .. controls (1.3206, 1.7840) and (1.7609, 1.3537) .. (1.5608, 1.3437) .. controls (0.9203, 2.0442) and (0.8642, 0.6247) .. (0.5001, 0.3831) .. controls (0.3214, 0.2645) and (-0.1764, 0.1117) .. (-0.1408, 0.3245) .. controls (-0.1082, 0.5191) and (0.0508, 0.3791) .. (0.2845, 0.5595) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (1.48, 1.554) -- (1.4139, 1.4752).. controls (1.4389, 1.4583) and (1.4649, 1.4375) .. (1.492, 1.4127) -- (1.5537, 1.4862).. controls (1.5333, 1.5087) and (1.5084, 1.5318) .. (1.48, 1.554) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (1.2166, 1.6794) -- (1.2121, 1.5329).. controls (1.2432, 1.5385) and (1.2764, 1.5364) .. (1.3119, 1.5258) -- (1.3158, 1.6501).. controls (1.2832, 1.6633) and (1.2498, 1.6736) .. (1.2166, 1.6794) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (1.0093, 1.6405).. controls (0.9821, 1.6229) and (0.9566, 1.6014) .. (0.9325, 1.5765) -- (1.0545, 1.4296).. controls (1.0777, 1.4572) and (1.1021, 1.4801) .. (1.1281, 1.4976) -- (1.0093, 1.6405) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange](0.8327, 1.4466).. controls (0.8154, 1.4193) and (0.7988, 1.3901) .. (0.7823, 1.3602) -- (0.9497, 1.2635).. controls (0.9655, 1.2946) and (0.9818, 1.3236) .. (0.9987, 1.3507) -- (0.8327, 1.4466) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (0.7253, 1.2508).. controls (0.7107, 1.2213) and (0.6961, 1.1912) .. (0.6814, 1.1607) -- (0.859, 1.0582).. controls (0.8717, 1.0897) and (0.8844, 1.1212) .. (0.8975, 1.1514) -- (0.7253, 1.2508) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (0.5972, 0.9882).. controls (0.5821, 0.9583) and (0.5665, 0.9288) .. (0.5505, 0.8997) -- (0.7501, 0.7845).. controls (0.7627, 0.8154) and (0.7754, 0.8463) .. (0.7878, 0.8781) -- (0.5972, 0.9882) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (0.464, 0.7574).. controls (0.4448, 0.7293) and (0.4248, 0.7022) .. (0.4037, 0.6767) -- (0.6357, 0.5427).. controls (0.6519, 0.5703) and (0.6676, 0.5997) .. (0.6828, 0.6311) -- (0.464, 0.7574) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange](0.2881, 0.5624).. controls (0.2869, 0.5615) and (0.2857, 0.5604) .. (0.2845, 0.5595).. controls (0.2564, 0.5378) and (0.2295, 0.521) .. (0.2036, 0.5074) -- (0.3683, 0.3141).. controls (0.4022, 0.3288) and (0.4337, 0.3442) .. (0.461, 0.3595) -- (0.2881, 0.5624) -- cycle;
+ \coati@part@draw[coati@bodybright!45!white!95!orange] (0.0822, 0.4628).. controls (0.0453, 0.4543) and (0.0123, 0.4501) .. (-0.0164, 0.445) -- (0.039, 0.2211).. controls (0.0701, 0.2242) and (0.1034, 0.23) .. (0.1379, 0.2379) -- (0.0822, 0.4628) -- cycle;
\fi% back
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname coatihookbody\endcsname
\csname tikzlinghookbody\endcsname
- %
+ %
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -257,51 +278,57 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-coatis}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-coatis}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic coati}}
%\coati
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic coati can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\coati[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of the eyes can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\coati[eye=red]
%\end{tcblisting}
%
%The head of the coati can be rotated, but please don't overdo this, otherwise his neck might break!
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Rotate head}}
%\coati[rotatehead=-15]
%\end{tcblisting}
%
-%For the head an alternative sidewards facing head is available. It can be combined with the \lstinline|rotatehead| option.
-%\begin{tcblisting}{}
+%For the head an alternative sidewards facing head is available. It can be combined with the \saminline|rotatehead| option.
+%\begin{tcblisting}{title={Sidewards head}}
%\coati[sideward]
%\end{tcblisting}
%
+%And the coati can lift its legs:
+%\begin{tcblisting}{title={Walking}}
+%\coati[leftstep]
+%\coati[rightstep,xshift=2cm]
+%\end{tcblisting}
+%
%To view the coati from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\coati[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the coati 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the coati 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\coati[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\coati[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-elephants.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-elephants.sty
index ffd517febda..d846c1d9d45 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-elephants.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-elephants.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-elephants}[2022/06/17 version v1.0 Draw teddy elephants in TikZ]
+\ProvidesPackage{tikzlings-elephants}[2025/01/05 version v2.2 Draw teddy elephants in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -48,24 +48,34 @@
body/.store in = \elephant@body,
body = gray,
eye/.store in = \elephant@eye,
- eye = \elephant@body!30!black,
+ eye = \elephant@body!30!black,
+ ears/.store in = \elephant@ears,
+ ears = \elephant@body!30!white,
+ feet/.store in = \elephant@feet,
+ feet = \elephant@body!30!white,
+ hands/.store in = \elephant@hands,
+ hands = \elephant@body!30!white,
+ belly/.store in = \elephant@belly,
+ belly = \elephant@body!30!white,
+ tail/.store in = \elephant@tail,
+ tail = \elephant@body!30!white,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 3D/.code = \elephant@threeDtrue,
- back/.code = \elephant@backtrue,
+ 3D/.code = \elephant@threeDtrue,
+ back/.code = \elephant@backtrue,
contour/.code = \elephant@contourtrue
\def\elephant@contour{#1},
- contour/.default = black,
- outline/.forward to = /elephant/contour,
+ contour/.default = black,
+ outline/.forward to = /elephant/contour,
}
\def\elephant@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.86, 0.0) rectangle (0.86, 2.17);
@@ -82,7 +92,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -100,7 +110,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -113,16 +123,16 @@
%
% Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifelephant@back
- \elephant@part@draw[\elephant@body] (0.425, 0.3) circle[radius=0.28];
+ \elephant@part@draw[\elephant@body] (0.425, 0.3) circle[radius=0.28];
\elephant@part@draw[\elephant@body] (-0.425, 0.3) circle[radius=0.28];
\elephant@part@draw[\elephant@body] (0.57,0.74) circle [radius=0.20];
\elephant@part@draw[\elephant@body] (-0.57,0.74) circle [radius=0.20];
\fi% back
%
% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \elephant@part@draw[\elephant@body] (0,0.75) ellipse[x radius=0.55, y radius=0.65];
+ \elephant@part@draw[\elephant@body] (0,0.75) ellipse[x radius=0.55, y radius=0.65];
\unless\ifelephant@back
- \elephant@part@draw[\elephant@body!30!white] (0,0.7) ellipse[x radius=0.35, y radius=0.4];
+ \elephant@part@draw[\elephant@belly] (0,0.7) ellipse[x radius=0.35, y radius=0.4];
\fi% back
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -131,26 +141,26 @@
%
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifelephant@back
- \elephant@part@draw[\elephant@body] (0.425, 0.3) circle[radius=0.28];
+ \elephant@part@draw[\elephant@body] (0.425, 0.3) circle[radius=0.28];
\elephant@part@draw[\elephant@body] (-0.425, 0.3) circle[radius=0.28];
- \elephant@part@draw[\elephant@body!30!white] (0.425, 0.3) circle[radius=0.17];
- \elephant@part@draw[\elephant@body!30!white] (-0.425, 0.3) circle[radius=0.17];
- \elephant@part@draw[\elephant@body] (0.57,0.75) circle [radius=0.20];
- \elephant@part@draw[\elephant@body!30!white] (0.57,0.74) circle [radius=0.12];
+ \elephant@part@draw[\elephant@feet] (0.425, 0.3) circle[radius=0.17];
+ \elephant@part@draw[\elephant@feet] (-0.425, 0.3) circle[radius=0.17];
+ \elephant@part@draw[\elephant@body] (0.57,0.75) circle [radius=0.20];
+ \elephant@part@draw[\elephant@hands] (0.57,0.74) circle [radius=0.12];
\elephant@part@draw[\elephant@body] (-0.57,0.74) circle [radius=0.20];
- \elephant@part@draw[\elephant@body!30!white] (-0.57,0.74) circle [radius=0.12];
+ \elephant@part@draw[\elephant@hands] (-0.57,0.74) circle [radius=0.12];
\fi% back
%
% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\elephant@part@draw[\elephant@body] (0.5, 1.7) ellipse [x radius=0.35,y radius=0.45];
\elephant@part@draw[\elephant@body] (-0.5, 1.7) ellipse [x radius=0.35,y radius=0.45];
\unless\ifelephant@back
- \elephant@part@draw[\elephant@body!30!white] (0.5, 1.7) ellipse [x radius=0.25,y radius=0.35];
- \elephant@part@draw[\elephant@body!30!white] (-0.5, 1.7) ellipse [x radius=0.25,y radius=0.35];
+ \elephant@part@draw[\elephant@ears] (0.5, 1.7) ellipse [x radius=0.25,y radius=0.35];
+ \elephant@part@draw[\elephant@ears] (-0.5, 1.7) ellipse [x radius=0.25,y radius=0.35];
\fi% back
%
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \elephant@part@draw[\elephant@body] (0, 1.55) circle[radius=0.5];
+ \elephant@part@draw[\elephant@body] (0, 1.55) circle[radius=0.5];
%
% Show details only from the front %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifelephant@back
@@ -165,15 +175,15 @@
\fi% 3D
%
% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \elephant@part@draw[\elephant@eye] (-0.155, 1.7) circle[radius=0.05];
- \elephant@part@draw[\elephant@eye] (0.155, 1.7) circle[radius=0.05];
+ \elephant@part@draw[\elephant@eye] (-0.155, 1.7) circle[radius=0.05];
+ \elephant@part@draw[\elephant@eye] (0.155, 1.7) circle[radius=0.05];
%
\fi% back
%
% Tail if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifelephant@back
- \draw[\elephant@body!30!white,line width=\scalingfactor*0.6pt] (0, 0.5904) .. controls (-0.1619, 0.4147) and (0.203, 0.4157) .. (0.2422, 0.2712);
- \elephant@part@draw[\elephant@body!30!white] (0.2008, 0.1949) .. controls (0.2452, 0.2121) and (0.2799, 0.242) .. (0.2691, 0.2755) .. controls (0.2611, 0.3005) and (0.2127, 0.3115) .. (0.1927, 0.2945) .. controls (0.1674, 0.2729) and (0.2082, 0.2383) .. (0.2008, 0.1949) -- cycle;
+ \draw[\elephant@tail,line width=\scalingfactor*0.6pt] (0, 0.5904) .. controls (-0.1619, 0.4147) and (0.203, 0.4157) .. (0.2422, 0.2712);
+ \elephant@part@draw[\elephant@tail] (0.2008, 0.1949) .. controls (0.2452, 0.2121) and (0.2799, 0.242) .. (0.2691, 0.2755) .. controls (0.2611, 0.3005) and (0.2127, 0.3115) .. (0.1927, 0.2945) .. controls (0.1674, 0.2729) and (0.2082, 0.2383) .. (0.2008, 0.1949) -- cycle;
\fi% back
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -194,41 +204,56 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-elephants}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-elephants}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic elephant}}
%\elephant
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic elephant can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\elephant[body=blue]
%\end{tcblisting}
%
-%In addition to the colour of the body, the colour of the eyes can be adjusted:
-%\begin{tcblisting}{}
+%In addition to the colour of the body, the colour of various body parts can be adjusted:
+%\begin{tcblisting}{title={Ear colour}}
+%\elephant[ears=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Eye colour}}
%\elephant[eye=red]
%\end{tcblisting}
+%\begin{tcblisting}{title={Hand colour}}
+%\elephant[hands=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Belly colour}}
+%\elephant[belly=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Foot colour}}
+%\elephant[feet=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Tail colour}}
+%\elephant[back,tail=red]
+%\end{tcblisting}
%
%To view the elephant from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\elephant[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the elephant 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the elephant 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\elephant[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\elephant[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-hippos.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-hippos.sty
index 4761516d538..22f48a85c03 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-hippos.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-hippos.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-hippos}[2022/06/17 version v1.0 Drawing hippos in TikZ]
+\ProvidesPackage{tikzlings-hippos}[2025/01/05 version v2.2 Drawing hippos in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -31,6 +31,7 @@
\newif\ifhippo@threeD
\newif\ifhippo@back
\newif\ifhippo@contour
+\newif\ifhippo@openmouth
\tikzset{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -46,33 +47,36 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
body/.store in = \hippo@body,
- body = gray,
+ body = gray!55!white,
eye/.store in = \hippo@eye,
- eye = white,
+ eye = white,
pupil/.store in = \hippo@pupil,
- pupil = black,
+ pupil = black,
toes/.store in = \hippo@toes,
- toes = \hippo@body!55!white,
+ toes = \hippo@body,
mouth/.store in = \hippo@mouth,
- mouth = \hippo@body!70!black,
+ mouth = \hippo@body!50!black,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 3D/.code = \hippo@threeDtrue,
+ openmouth/.code = \hippo@openmouthtrue,
+ open mouth/.forward to = /hippo/openmouth,
+ 3D/.code = \hippo@threeDtrue
+ \def\hippo@mouth{black},
back/.code = \hippo@backtrue,
contour/.code = \hippo@contourtrue
\def\hippo@contour{#1}
\def\hippo@mouth{#1},
- contour/.default = black,
- outline/.forward to = /hippo/contour,
+ contour/.default = black,
+ outline/.forward to = /hippo/contour,
}
\def\hippo@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.625,0.1) rectangle (0.625, 2.17);
@@ -89,7 +93,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -107,46 +111,43 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname hippohookbackground\endcsname
- \csname tikzlinghookbackground\endcsname
+ \csname tikzlinghookbackground\endcsname
%
% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \hippo@part@draw[\hippo@body] (0.23,2.03) ellipse[x radius=0.09, y radius=0.13, rotate=-30];
- \hippo@part@draw[\hippo@body] (-0.23,2.03) ellipse[x radius=0.09, y radius=0.13, rotate=30];
+ \hippo@part@draw[\hippo@body!70!black] (0.23,2.03) ellipse[x radius=0.09, y radius=0.13, rotate=-30];
+ \hippo@part@draw[\hippo@body!70!black] (-0.23,2.03) ellipse[x radius=0.09, y radius=0.13, rotate=30];
%
% Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifhippo@back
- \begin{scope}
- \clip (-0.5,0.4) rectangle (0.5,0.13);
- \hippo@part@draw[\hippo@body] (-0.25,0.15) ellipse[x radius=0.16, y radius=0.17];
- \hippo@part@draw[\hippo@body] (0.25,0.15) ellipse[x radius=0.16, y radius=0.17];
- \end{scope}
+ \hippo@part@draw[\hippo@body!70!black] (-0.08,0.13) arc [start angle=0, end angle=180, x radius=0.17, y radius=0.19] -- cycle;
+ \hippo@part@draw[\hippo@body!70!black](0.08,0.13) arc [start angle=180, end angle=0, x radius=0.17, y radius=0.19] -- cycle;
\fi% back
%
% Nose if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifhippo@back
- \hippo@part@draw[\hippo@body!80!white] (0, 1.55) ellipse[x radius=0.42, y radius=0.2];
+ \hippo@part@draw[\hippo@body!85!black] (0, 1.55) ellipse[x radius=0.42, y radius=0.2];
\fi% back
%
% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \hippo@part@draw[\hippo@body!55!white] ( 0.6, 0.8 ) .. controls ( 0.6 , 0.4) and ( 0.35, 0.19) .. ( 0.0, 0.19) .. controls (-0.35, 0.19) and (-0.6 , 0.4) .. (-0.6, 0.8 ) .. controls (-0.6 , 1.3) and (-0.35, 1.65) .. ( 0.0, 1.65) .. controls ( 0.35, 1.65) and ( 0.6 , 1.3) .. ( 0.6, 0.8) -- cycle;
+ \hippo@part@draw[\hippo@body] ( 0.6, 0.8 ) .. controls ( 0.6 , 0.4) and ( 0.35, 0.19) .. ( 0.0, 0.19) .. controls (-0.35, 0.19) and (-0.6 , 0.4) .. (-0.6, 0.8 ) .. controls (-0.6 , 1.3) and (-0.35, 1.65) .. ( 0.0, 1.65) .. controls ( 0.35, 1.65) and ( 0.6 , 1.3) .. ( 0.6, 0.8) -- cycle;
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname hippohookbelly\endcsname
\csname tikzlinghookbelly\endcsname
- %
+ %
% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifhippo@back
- \hippo@part@draw[\hippo@body] (0.35,1.0) ellipse[x radius=0.24, y radius=0.13, rotate=90];
- \hippo@part@draw[\hippo@body] (-0.35,1.0) ellipse[x radius=0.24, y radius=0.13, rotate=-90];
+ \hippo@part@draw[\hippo@body!70!black] (0.35,1.0) ellipse[x radius=0.24, y radius=0.13, rotate=90];
+ \hippo@part@draw[\hippo@body!70!black] (-0.35,1.0) ellipse[x radius=0.24, y radius=0.13, rotate=-90];
\fi% back
%
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \hippo@part@draw[\hippo@body!55!white] (0, 1.76) circle[radius=0.36];
+ \hippo@part@draw[\hippo@body] (0, 1.76) circle[radius=0.36];
%
% Show details only from the front %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifhippo@back
@@ -165,29 +166,26 @@
\fi% contour
%
% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \hippo@part@draw[\hippo@body!80!white] (0, 1.55) ellipse[x radius=0.42, y radius=0.2];
- \hippo@part@draw[\hippo@body!70!black] (-0.07, 1.63) circle[radius=0.035];
- \hippo@part@draw[\hippo@body!70!black] (0.07, 1.63) circle[radius=0.035];
+ \hippo@part@draw[\hippo@body!85!black] (0, 1.55) ellipse[x radius=0.42, y radius=0.2];
+ \hippo@part@draw[\hippo@mouth] (-0.07, 1.63) circle[radius=0.035];
+ \hippo@part@draw[\hippo@mouth] (0.07, 1.63) circle[radius=0.035];
%
% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \ifhippo@threeD
- \draw[black,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2] ;
- \else% 3D
+ \ifhippo@openmouth
+ \filldraw[\hippo@mouth,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2];
+ \else% open mouth
\draw[\hippo@mouth,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2];
- \fi% 3D
+ \fi% open mouth
%
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \begin{scope}
- \clip (-0.5,0.4) rectangle (0.5,0.13);
- \hippo@part@draw[\hippo@body] (-0.25,0.15) ellipse[x radius=0.16, y radius=0.17];
- \hippo@part@draw[\hippo@body] (0.25,0.15) ellipse[x radius=0.16, y radius=0.17];
- \hippo@part@draw[\hippo@toes] (0.25,0.13) ellipse[x radius=0.05, y radius=0.1];
- \hippo@part@draw[\hippo@toes] (0.13,0.11) ellipse[x radius=0.05, y radius=0.1];
- \hippo@part@draw[\hippo@toes] (0.37,0.11) ellipse[x radius=0.05, y radius=0.1];
- \hippo@part@draw[\hippo@toes] (-0.25,0.13) ellipse[x radius=0.05, y radius=0.1];
- \hippo@part@draw[\hippo@toes] (-0.13,0.11) ellipse[x radius=0.05, y radius=0.1];
- \hippo@part@draw[\hippo@toes] (-0.37,0.11) ellipse[x radius=0.05, y radius=0.1];
- \end{scope}
+ \hippo@part@draw[\hippo@body!70!black] (-0.08,0.13) arc [start angle=0, end angle=180, x radius=0.17, y radius=0.19] -- cycle;
+ \hippo@part@draw[\hippo@body!70!black](0.08,0.13) arc [start angle=180, end angle=0, x radius=0.17, y radius=0.19] -- cycle;
+ \hippo@part@draw[\hippo@toes] (-0.08,0.13) arc [start angle=0, end angle=180, x radius=0.05, y radius=0.08] -- cycle;
+ \hippo@part@draw[\hippo@toes] (-0.2,0.13) arc [start angle=0, end angle=180, x radius=0.05, y radius=0.1] -- cycle;
+ \hippo@part@draw[\hippo@toes] (-0.32,0.13) arc [start angle=0, end angle=180, x radius=0.05, y radius=0.08] -- cycle;
+ \hippo@part@draw[\hippo@toes] (0.08,0.13) arc [start angle=180, end angle=0, x radius=0.05, y radius=0.08] -- cycle;
+ \hippo@part@draw[\hippo@toes] (0.2,0.13) arc [start angle=180, end angle=0, x radius=0.05, y radius=0.1] -- cycle;
+ \hippo@part@draw[\hippo@toes] (0.32,0.13) arc [start angle=180, end angle=0, x radius=0.05, y radius=0.08] -- cycle;
%
\fi% back
%
@@ -209,52 +207,57 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-hippos}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-hippos}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic hippo}}
%\hippo
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic hippo can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\hippo[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\hippo[eye=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Pupil colour}}
%\hippo[pupil=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Mouth colour}}
%\hippo[mouth=red]
%\end{tcblisting}
%
+% The hippo can open its mouth:
+%\begin{tcblisting}{title={Open mouth}}
+%\hippo[openmouth]
+%\end{tcblisting}
+%
%The hippo can also do its nails:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Toe colour}}
%\hippo[toes=red]
%\end{tcblisting}
%
%To view the hippo from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\hippo[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the hippo 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the hippo 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\hippo[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\hippo[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-koalas.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-koalas.sty
index 4968d7b5168..3b3a2975177 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-koalas.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-koalas.sty
@@ -9,15 +9,15 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-koalas}[2022/06/17 version v1.0 Drawing koalas in TikZ]
+\ProvidesPackage{tikzlings-koalas}[2025/01/05 version v2.2 Drawing koalas in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
\usetikzlibrary{shadows.blur}
-\usetikzlibrary{fadings}
+\usetikzlibrary{fadings}
\tikzfading[name=koala@blush,inner color=transparent!50,outer color=transparent!100]
@@ -38,6 +38,7 @@
\newif\ifkoala@threeD
\newif\ifkoala@back
\newif\ifkoala@contour
+\newif\ifkoala@openmouth
\tikzset{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -55,7 +56,7 @@
body/.store in = \koala@body,
body = gray!75!white,
eye/.store in = \koala@eye,
- eye = black,
+ eye = black,
mouth/.store in = \koala@mouth,
mouth = \koala@body!40!black,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -65,23 +66,25 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
blush/.code = \koala@blushtrue
\def\koala@blushcolor{#1},
- blush/.default = red,
- sleeping/.code = \koala@sleepingtrue,
+ blush/.default = red,
+ sleeping/.code = \koala@sleepingtrue,
+ openmouth/.code = \koala@openmouthtrue,
+ open mouth/.forward to = /koala/openmouth,
3D/.code = \koala@threeDtrue
- \def\koala@mouth{black},
- back/.code = \koala@backtrue,
+ \def\koala@mouth{black},
+ back/.code = \koala@backtrue,
contour/.code = \koala@contourtrue
\def\koala@contour{#1}
\def\koala@blushcolor{#1}
\def\koala@mouth{#1},
- contour/.default = black,
- outline/.forward to = /koala/contour,
+ contour/.default = black,
+ outline/.forward to = /koala/contour,
}
\def\koala@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.88,0.1) rectangle (0.88, 2.35);
@@ -98,7 +101,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -116,7 +119,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -124,7 +127,7 @@
\csname tikzlinghookbackground\endcsname
%
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \koala@part@draw[\koala@body!50!black] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \koala@part@draw[\koala@body!50!black] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
\koala@part@draw[\koala@body!50!black] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
%
% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -173,18 +176,22 @@
\fill[\koala@body!50!black,rotate around={-20:(-0.2925, 1.6925)}] (-0.29, 1.68) rectangle ++(-0.005, 0.03);
\fill[\koala@body!50!black,rotate around={20:(-0.2143, 1.6925)}] (-0.2168, 1.68) rectangle ++(-0.005, 0.03);
\fill[\koala@body!50!black,rotate around={-40:(-0.3255, 1.7025)}] (-0.323, 1.69) rectangle ++(-0.005, 0.03);
- \fill[\koala@body!50!black,rotate around={40:(-0.1813, 1.7025)}] (-0.1838, 1.69) rectangle ++(-0.005, 0.03);
+ \fill[\koala@body!50!black,rotate around={40:(-0.1813, 1.7025)}] (-0.1838, 1.69) rectangle ++(-0.005, 0.03);
\fill[\koala@body!50!black, even odd rule] (0.3331, 1.741) .. controls (0.3331, 1.685) and (0.1737, 1.685) .. (0.1737, 1.741) .. controls (0.1737, 1.848) and (0.3331, 1.848) .. (0.3331, 1.741) -- cycle (0.328, 1.741) .. controls (0.323, 1.705) and (0.184, 1.705) .. (0.179, 1.741) .. controls (0.184, 1.843) and (0.323, 1.843) .. (0.328, 1.741) -- cycle;
\fill[\koala@body!50!black, even odd rule] (-0.3331, 1.741) .. controls (-0.3331, 1.685) and (-0.1737, 1.685) .. (-0.1737, 1.741) .. controls (-0.1737, 1.848) and (-0.3331, 1.848) .. (-0.3331, 1.741) -- cycle (-0.328, 1.741) .. controls (-0.323, 1.705) and (-0.184, 1.705) .. (-0.179, 1.741) .. controls (-0.184, 1.843) and (-0.323, 1.843) .. (-0.328, 1.741) -- cycle;
\else% sleeping
- \koala@part@draw[\koala@eye] (-0.255, 1.74) circle[radius=0.08];
- \koala@part@draw[\koala@eye] (0.255, 1.74) circle[radius=0.08];
- \fill[white] (-0.27, 1.76) circle[radius=0.015];
- \fill[white] (0.24, 1.76) circle[radius=0.015];
+ \koala@part@draw[\koala@eye] (-0.255, 1.74) circle[radius=0.08];
+ \koala@part@draw[\koala@eye] (0.255, 1.74) circle[radius=0.08];
+ \fill[white] (-0.27, 1.76) circle[radius=0.015];
+ \fill[white] (0.24, 1.76) circle[radius=0.015];
\fi% sleeping
%
% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \draw[\koala@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.39) arc [start angle=-40, end angle=-140, radius=0.16];
+ \ifkoala@openmouth
+ \filldraw[\koala@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.39) arc [start angle=-40, end angle=-140, radius=0.16];
+ \else
+ \draw[\koala@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.39) arc [start angle=-40, end angle=-140, radius=0.16];
+ \fi
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -194,7 +201,7 @@
%
% Blushed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifkoala@blush
- \fill[\koala@blushcolor,path fading=koala@blush] (-0.3, 1.52) circle[radius=0.1];
+ \fill[\koala@blushcolor,path fading=koala@blush] (-0.3, 1.52) circle[radius=0.1];
\fill[\koala@blushcolor,path fading=koala@blush] (0.3, 1.52) circle[radius=0.1];
\fi% blush
%
@@ -218,54 +225,59 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-koalas}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-koalas}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic koala}}
%\koala
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic koala can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\koala[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\koala[eye=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Mouth colour}}
%\koala[mouth=red]
%\end{tcblisting}
%
+% The koala can open its mouth:
+%\begin{tcblisting}{title={Open mouth}}
+%\koala[openmouth]
+%\end{tcblisting}
+%
%It can also blush
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Blushing koala}}
%\koala[blush=red]
%\end{tcblisting}
%
%and if tired, it is going to take a nap:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Sleep}}
%\koala[sleeping]
%\end{tcblisting}
%
%To view the koala from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\koala[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the koala 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the koala 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\koala[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\koala[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-list.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-list.sty
index 09a0967f2c7..b8cd2cdb387 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-list.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-list.sty
@@ -1,4 +1,4 @@
-\ProvidesPackage{tikzlings-list}[2022/06/17 version v1.0 Helper package for the tikzlings]
+\ProvidesPackage{tikzlings-list}[2025/01/05 version v2.2 Helper package for the tikzlings]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -11,6 +11,7 @@
\clist_const:Nn \c__tikzlings_clist
{
anteater / anteaters,
+ ape / apes,
bat / bats,
bear / bears,
bee / bees,
@@ -22,6 +23,7 @@
hippo / hippos,
koala / koalas,
marmot / marmots,
+ meerkat / meerkats,
mouse / mice,
moles / moles, % avoid conflict with siunitx's \mole
owl / owls,
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-marmots.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-marmots.sty
index d67b9fb51db..8a274a550e8 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-marmots.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-marmots.sty
@@ -9,15 +9,15 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-marmots}[2022/06/17 version v1.0 Drawing marmots in TikZ]
+\ProvidesPackage{tikzlings-marmots}[2025/01/05 version v2.2 Drawing marmots in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
\usetikzlibrary{shadows.blur}
-\usetikzlibrary{fadings}
+\usetikzlibrary{fadings}
\tikzfading[name=marmot@blush,inner color=transparent!50,outer color=transparent!100]
@@ -28,13 +28,13 @@
\else
\ifdefined\pdfrandomseed % pdflatex
\else
- \ifdefined\randomseed
+ \ifdefined\randomseed
\let\pdfrandomseed\randomseed % post TL19 xelatex and lualatex
\else
\let\pdfrandomseed\time % pre TL19 xelatex
\fi
\fi
- \pgfmathsetseed{\number\pdfrandomseed}
+ \pgfmathsetseed{\number\pdfrandomseed}
\fi
\ExplSyntaxOff
@@ -47,7 +47,7 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname marmothookforeground\endcsname
\csname tikzlinghookforeground\endcsname
- %
+ %
}
\newif\ifmarmot@blush
@@ -60,6 +60,7 @@
\newif\ifmarmot@rightstep
\newif\ifmarmot@back
\newif\ifmarmot@contour
+\newif\ifmarmot@openmouth
\tikzset{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -77,7 +78,7 @@
body/.store in = \marmot@body,
body = brown,
eye/.store in = \marmot@eye,
- eye = \marmot@body!50!black,
+ eye = \marmot@body!50!black,
mouth/.store in = \marmot@mouth,
mouth = \marmot@body!50!black,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -87,13 +88,15 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
blush/.code = \marmot@blushtrue
\def\marmot@blushcolor{#1},
- blush/.default = red,
- whiskers/.code = \marmot@whiskerstrue
+ blush/.default = red,
+ whiskers/.code = \marmot@whiskerstrue
\def\marmot@whiskers{#1},
whiskers/.default = gray,
- teeth/.code = \marmot@teethtrue
- \def\marmot@teeth{#1},
+ teeth/.code = \marmot@teethtrue
+ \def\marmot@teeth{#1},
teeth/.default = white,
+ openmouth/.code = \marmot@openmouthtrue,
+ open mouth/.forward to = /marmot/openmouth,
3D/.code = \marmot@threeDtrue,
shadow/.code = \marmot@shadowtrue,
askphil/.code = \marmot@askphiltrue,
@@ -101,20 +104,20 @@
leftstep/.code = \marmot@leftsteptrue,
left step/.forward to = /marmot/leftstep,
rightstep/.code = \marmot@rightsteptrue,
- right step/.forward to = /marmot/rightstep,
- back/.code = \marmot@backtrue,
+ right step/.forward to = /marmot/rightstep,
+ back/.code = \marmot@backtrue,
contour/.code = \marmot@contourtrue
\def\marmot@contour{#1}
\def\marmot@blushcolor{#1}
\def\marmot@mouth{#1},
- contour/.default = black,
- outline/.forward to = /marmot/contour,
+ contour/.default = black,
+ outline/.forward to = /marmot/contour,
}
\def\marmot@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.625,0.1) rectangle (0.905, 2.17);
@@ -131,7 +134,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -171,20 +174,20 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifmarmot@leftstep
- \marmot@part@draw[\marmot@body!50!black] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
+ \marmot@part@draw[\marmot@body!50!black] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
\else% step
- \marmot@part@draw[\marmot@body!50!black] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \marmot@part@draw[\marmot@body!50!black] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
\fi% step
%
\ifmarmot@rightstep
- \marmot@part@draw[\marmot@body!50!black] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
+ \marmot@part@draw[\marmot@body!50!black] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
\else% step
- \marmot@part@draw[\marmot@body!50!black] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \marmot@part@draw[\marmot@body!50!black] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
\fi% step
%
% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -221,17 +224,21 @@
\marmot@part@draw[\marmot@body!50!black] (-0.385,0.93) ellipse[x radius=0.24, y radius=0.13, rotate=-70];
%
% Muzzle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \marmot@part@draw[\marmot@body!50!white] (0,1.47) ellipse[x radius=0.23, y radius=0.13];
+ \marmot@part@draw[\marmot@body!50!white] (0,1.47) ellipse[x radius=0.23, y radius=0.13];
%
% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\marmot@part@draw[\marmot@body!50!black] (0,1.6) circle[radius=0.08];
%
% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \marmot@part@draw[\marmot@eye] (-0.155,1.77) circle[radius=0.05];
- \marmot@part@draw[\marmot@eye] (0.155,1.77) circle[radius=0.05];
+ \marmot@part@draw[\marmot@eye] (-0.155,1.77) circle[radius=0.05];
+ \marmot@part@draw[\marmot@eye] (0.155,1.77) circle[radius=0.05];
%
% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \fill[\marmot@mouth] (0.145,1.51) arc [start angle=-20, end angle=-160, radius=0.16] -- (-0.14,1.51) -- (-0.14,1.51) arc [start angle=-160, end angle=-20, radius=0.144] -- cycle ;
+ \ifmarmot@openmouth
+ \filldraw[\marmot@mouth, line width=\scalingfactor*0.4pt] (0.145,1.51) arc [start angle=-20, end angle=-160, radius=0.155] (-0.145,1.51) arc [start angle=-120, end angle=-60, radius=0.29];
+ \else
+ \draw[\marmot@mouth, line width=\scalingfactor*0.4pt] (0.145,1.51) arc [start angle=-20, end angle=-160, radius=0.16];
+ \fi
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -241,8 +248,8 @@
%
% Blushed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifmarmot@blush
- \fill[\marmot@blushcolor,path fading=marmot@blush] (-0.295,1.6) circle[radius=0.1];
- \fill[\marmot@blushcolor,path fading=marmot@blush] (0.295,1.6) circle[radius=0.1];
+ \fill[\marmot@blushcolor,path fading=marmot@blush] (-0.295,1.6) circle[radius=0.1];
+ \fill[\marmot@blushcolor,path fading=marmot@blush] (0.295,1.6) circle[radius=0.1];
\fi% blush
%
% Wiskers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -259,7 +266,7 @@
\ifmarmot@teeth
\fill[\marmot@body!50!black] (0.048,1.413) rectangle (-0.048,1.373);
\fill[\marmot@teeth] (-0.045,1.407) rectangle (-0.004,1.376);
- \fill[\marmot@teeth] (0.045,1.407) rectangle (0.004,1.376);
+ \fill[\marmot@teeth] (0.045,1.407) rectangle (0.004,1.376);
\fi% teeth
%
\fi% back
@@ -282,75 +289,80 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-marmots}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-marmots}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic marmot}}
%\marmot
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic marmot can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\marmot[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\marmot[eye=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Mouth colour}}
%\marmot[mouth=red]
%\end{tcblisting}
%
+% The marmot can open its mouth:
+%\begin{tcblisting}{title={Open mouth}}
+%\marmot[openmouth]
+%\end{tcblisting}
+%
%The marmot can also blush
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Blushing marmot}}
%\marmot[blush=red]
%\end{tcblisting}
%
%and whiskers can be added:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Whiskers colour}}
%\marmot[whiskers=gray]
%\end{tcblisting}
%
%Some marmots even show their chisel teeth:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Teeth colour}}
%\marmot[teeth=white]
%\end{tcblisting}
%
%or can cast a shadow:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Shadow}}
%\marmot[shadow]
%\end{tcblisting}
%
-%This ability is important if you want to ask Punxsutawney Phil\footnote{\url{https://en.wikipedia.org/wiki/Punxsutawney_Phil}} on Groundhog Day how the weather is going to be. With a probability derived from the statistics of 120 Groundhog Days\footnote{\hbadness=99999\url{https://www.livescience.com/32974-punxsutawney-phil-weather-prediction-accuracy.html}} the option \lstinline|askphil| might or might not result in a shadow.
-%\begin{tcblisting}{}
+%This ability is important if you want to ask Punxsutawney Phil\footnote{\url{https://en.wikipedia.org/wiki/Punxsutawney_Phil}} on Groundhog Day how the weather is going to be. With a probability derived from the statistics of 120 Groundhog Days\footnote{\hbadness=99999\url{https://www.livescience.com/32974-punxsutawney-phil-weather-prediction-accuracy.html}} the option \saminline|askphil| might or might not result in a shadow.
+%\begin{tcblisting}{title={Ask Phil}}
%\marmot[askphil]
%\end{tcblisting}
%
-%If a good weather prognosis is derived, the happy marmot can dance by lifting up its left and right foot:
-%\begin{tcblisting}{}
+%If a good weather prognosis is derived, the happy marmot can dance by lifting up its left and right foot:
+%\begin{tcblisting}{title={Walking}}
%\marmot[leftstep]
%\marmot[rightstep,xshift=2cm]
%\end{tcblisting}
%
%To view the marmot from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\marmot[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the marmot 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the marmot 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\marmot[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\marmot[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-meerkats.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-meerkats.sty
new file mode 100644
index 00000000000..42337105d62
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-meerkats.sty
@@ -0,0 +1,340 @@
+ % !TeX root = ./examples/meerkat.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% This package is part of the TikZlings package
+%% A package to bring cute little animals and other beings into tikz
+%% Maintained by samcarter
+%%
+%% Project repository and bug tracker:
+%% https://github.com/samcarter/tikzlings
+%%
+%% Released under the LaTeX Project Public License v1.3c or later
+%% See https://www.latex-project.org/lppl.txt
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-meerkats}[2025/01/05 version v2.2 Drawing meerkats in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-addons}
+
+\newcommand*{\meerkat}[1][]{%
+ \begin{scope}%
+ \tikzset{/meerkat/.cd,#1}%
+ \meerkat@draw%
+ \end{scope}%
+ \thing[#1]%
+ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \csname meerkathookforeground\endcsname
+ \csname tikzlinghookforeground\endcsname
+ %
+}
+
+\newif\ifmeerkat@standing
+\newif\ifmeerkat@threeD
+\newif\ifmeerkat@back
+\newif\ifmeerkat@contour
+\newif\ifmeerkat@openmouth
+
+\def\meerkat@shift{0}
+
+\tikzset{
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Pass unknown keys on to tikz
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /meerkat/.search also={/tikz,/pgf,/thing},
+ /meerkat/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.store in = \meerkat@body,
+ body = brown,
+ upperbody/.store in = \meerkat@upperbody,
+ upperbody = \meerkat@body!70!white,
+ upper body/.forward to = /meerkat/upperbody,
+ chest/.store in = \meerkat@chest,
+ chest = \meerkat@body!45!white,
+ legs/.store in = \meerkat@legs,
+ legs = \meerkat@body,
+ tail/.store in = \meerkat@tail,
+ tail = \meerkat@body,
+ tip/.store in = \meerkat@tip,
+ tip = \meerkat@tail!50!black,
+ ears/.store in = \meerkat@ears,
+ ears = \meerkat@body!50!black,
+ eye/.store in = \meerkat@eye,
+ eye = black,
+ eyecircles/.store in = \meerkat@eyecircles,
+ eyecircles = \meerkat@body!75!black,
+ eye circles/.forward to = /meerkat/eyecircles,
+ muzzle/.store in = \meerkat@muzzle,
+ muzzle = \meerkat@body!45!white,
+ nose/.store in = \meerkat@nose,
+ nose = \meerkat@body!50!black,
+ mouth/.store in = \meerkat@mouth,
+ mouth = \meerkat@body!50!black,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % options
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ openmouth/.code = \meerkat@openmouthtrue,
+ open mouth/.forward to = /meerkat/openmouth,
+ standing/.code = \meerkat@standingtrue
+ \def\meerkat@shift{15},
+ 3D/.code = \meerkat@threeDtrue,
+ back/.code = \meerkat@backtrue,
+ contour/.code = \meerkat@contourtrue
+ \def\meerkat@contour{#1}
+ \def\meerkat@blushcolor{#1}
+ \def\meerkat@mouth{#1},
+ contour/.default = black,
+ outline/.forward to = /meerkat/contour,
+}
+
+\def\meerkat@draw{%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % minimal bounding box size
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ifmeerkat@standing
+ \path (-0.55,0.05) rectangle (0.85, 2.65);
+ \else
+ \path (-0.55,0.05) rectangle (0.85, 2.13);
+ \fi
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % store the current scale factor
+ % from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+ \pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))*sqrt(abs((\pgf@xx/1cm)*(\pgf@yy/1cm)-(\pgf@xy/1cm)*(\pgf@yx/1cm)))}%
+ \pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % switch between 2D, 3D and contours, from
+ % https://chat.stackexchange.com/transcript/message/45991801#45991801
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ifmeerkat@threeD
+ \def\meerkat@part@draw[##1]{\shade[ball color=##1]}
+ \else% 3D
+ \ifmeerkat@contour
+ \def\meerkat@part@draw[##1]{\draw[##1,\meerkat@contour,fill=white,line width=\scalingfactor*0.4pt]}
+ \else% contour
+ \def\meerkat@part@draw[##1]{\fill[##1]}
+ \fi% contour
+ \fi% 3D
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Body parts
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \csname meerkathookbackground\endcsname
+ \csname tikzlinghookbackground\endcsname
+ %
+ \ifmeerkat@standing
+ %
+ \unless\ifmeerkat@back
+ % Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \meerkat@part@draw[\meerkat@tail] (0.0071, 1.0065).. controls (0.0949, 0.7556) and (0.2077, 0.5139) .. (0.3436, 0.2854).. controls (0.3809, 0.2966) and (0.4183, 0.3078) .. (0.4557, 0.319).. controls (0.3377, 0.5524) and (0.2434, 0.7968) .. (0.174, 1.049);
+ %
+ % Tip of tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \meerkat@part@draw[\meerkat@tip] (0.8483, 0.1284).. controls (0.7159, 0.1309) and (0.575, 0.1064) .. (0.4503, 0.163).. controls (0.3999, 0.1871) and (0.3617, 0.2328) .. (0.3436, 0.2854).. controls (0.3809, 0.2966) and (0.4183, 0.3078) .. (0.4557, 0.319).. controls (0.5224, 0.2163) and (0.6411, 0.1646) .. (0.7581, 0.145).. controls (0.7881, 0.1389) and (0.8182, 0.1337) .. (0.8483, 0.1284) -- cycle;
+ \fi %back
+ %
+ % Legs %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \meerkat@part@draw[\meerkat@legs] (-0.3454, 1.3191).. controls (-0.3768, 1.128) and (-0.4158, 0.9325) .. (-0.3865, 0.7386).. controls (-0.3749, 0.6541) and (-0.3231, 0.5584) .. (-0.2285, 0.5516).. controls (-0.1819, 0.5615) and (-0.1524, 0.5219) .. (-0.1531, 0.48).. controls (-0.1406, 0.4015) and (-0.126, 0.3232) .. (-0.1147, 0.2446).. controls (-0.1149, 0.1841) and (-0.2292, 0.195) .. (-0.2042, 0.1256).. controls (-0.1635, 0.0562) and (-0.0406, 0.0684) .. (-0.021, 0.15).. controls (0.0009, 0.2391) and (-0.0108, 0.3319) .. (-0.0078, 0.4229).. controls (-0.0101, 0.4797) and (-0.0028, 0.5377) .. (-0.0126, 0.5937).. controls (-0.0473, 0.6539) and (-0.1009, 0.7107) .. (-0.0889, 0.7877).. controls (-0.0857, 0.8768) and (-0.0601, 0.963) .. (-0.0454, 1.0505);
+ \meerkat@part@draw[\meerkat@legs] (0.3522, 1.3191).. controls (0.3836, 1.128) and (0.4226, 0.9325) .. (0.3932, 0.7386).. controls (0.3817, 0.6541) and (0.3299, 0.5584) .. (0.2352, 0.5516).. controls (0.1887, 0.5615) and (0.1592, 0.5219) .. (0.1599, 0.48).. controls (0.1474, 0.4015) and (0.1327, 0.3232) .. (0.1215, 0.2446).. controls (0.1217, 0.1841) and (0.236, 0.195) .. (0.211, 0.1256).. controls (0.1702, 0.0562) and (0.0474, 0.0684) .. (0.0278, 0.15).. controls (0.0058, 0.2391) and (0.0176, 0.3319) .. (0.0146, 0.4229).. controls (0.0168, 0.4797) and (0.0095, 0.5377) .. (0.0194, 0.5937).. controls (0.0541, 0.6539) and (0.1077, 0.7107) .. (0.0956, 0.7877).. controls (0.0924, 0.8768) and (0.0668, 0.963) .. (0.0521, 1.0505);
+ %
+ \ifmeerkat@back
+ % Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \meerkat@part@draw[\meerkat@tail] (0.0071, 1.0065).. controls (0.0949, 0.7556) and (0.2077, 0.5139) .. (0.3436, 0.2854).. controls (0.3809, 0.2966) and (0.4183, 0.3078) .. (0.4557, 0.319).. controls (0.3377, 0.5524) and (0.2434, 0.7968) .. (0.174, 1.049);
+ %
+ % Tip of tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \meerkat@part@draw[\meerkat@tip] (0.8483, 0.1284).. controls (0.7159, 0.1309) and (0.575, 0.1064) .. (0.4503, 0.163).. controls (0.3999, 0.1871) and (0.3617, 0.2328) .. (0.3436, 0.2854).. controls (0.3809, 0.2966) and (0.4183, 0.3078) .. (0.4557, 0.319).. controls (0.5224, 0.2163) and (0.6411, 0.1646) .. (0.7581, 0.145).. controls (0.7881, 0.1389) and (0.8182, 0.1337) .. (0.8483, 0.1284) -- cycle;
+ \fi %back
+ \else % sitting meerkat
+ %
+ \unless\ifmeerkat@back
+ % Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \meerkat@part@draw[\meerkat@tail] (-0.0555, 0.5998).. controls (-0.0555, 0.4298) and (0.1812, 0.2011) .. (0.341, 0.143) -- (0.44, 0.253).. controls (0.3106, 0.3001) and (0.0959, 0.4717) .. (0.0959, 0.6094);
+ %
+ % Tip of the tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \meerkat@part@draw[\meerkat@tip] (0.836, 0.132).. controls (0.6422, 0.132) and (0.5231, 0.0767) .. (0.341, 0.143) -- (0.44, 0.253).. controls (0.5922, 0.1976) and (0.6765, 0.1601) .. (0.836, 0.132);
+ \fi % back
+ %
+ % Legs %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \meerkat@part@draw[\meerkat@legs] (-0.2759, 0.6554).. controls (-0.2927, 0.7506) and (-0.3983, 0.77) .. (-0.4598, 0.77).. controls (-0.4793, 0.77) and (-0.4959, 0.7543) .. (-0.4971, 0.7349).. controls (-0.5094, 0.5297) and (-0.4208, 0.3526) .. (-0.2493, 0.2393).. controls (-0.2331, 0.2287) and (-0.236, 0.2231) .. (-0.2551, 0.22) -- (-0.4553, 0.1878).. controls (-0.4745, 0.1847) and (-0.5016, 0.1767) .. (-0.5153, 0.1629).. controls (-0.5208, 0.1574) and (-0.5208, 0.1081) .. (-0.5153, 0.1026).. controls (-0.5016, 0.0889) and (-0.4747, 0.0794) .. (-0.4553, 0.0796).. controls (-0.0935, 0.0833) and (-0.055, 0.0466) .. (-0.055, 0.1848).. controls (-0.055, 0.2042) and (-0.0521, 0.2354) .. (-0.0485, 0.2545) -- (-0.0187, 0.4185);
+ \meerkat@part@draw[\meerkat@legs] (0.2759, 0.6554).. controls (0.2927, 0.7506) and (0.3983, 0.77) .. (0.4598, 0.77).. controls (0.4793, 0.77) and (0.4959, 0.7543) .. (0.4971, 0.7349).. controls (0.5094, 0.5297) and (0.4208, 0.3526) .. (0.2493, 0.2393).. controls (0.2331, 0.2287) and (0.236, 0.2231) .. (0.2551, 0.22) -- (0.4553, 0.1878).. controls (0.4745, 0.1847) and (0.5016, 0.1767) .. (0.5153, 0.1629).. controls (0.5208, 0.1574) and (0.5208, 0.1081) .. (0.5153, 0.1026).. controls (0.5016, 0.0889) and (0.4747, 0.0794) .. (0.4553, 0.0796).. controls (0.0935, 0.0833) and (0.055, 0.0466) .. (0.055, 0.1848).. controls (0.055, 0.2042) and (0.0521, 0.2354) .. (0.0485, 0.2545) -- (0.0187, 0.4185);
+ %
+ \ifmeerkat@back
+ % Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \meerkat@part@draw[\meerkat@tail] (-0.0555, 0.5998).. controls (-0.0555, 0.4298) and (0.1812, 0.2011) .. (0.341, 0.143) -- (0.44, 0.253).. controls (0.3106, 0.3001) and (0.0959, 0.4717) .. (0.0959, 0.6094);
+ %
+ % Tip of the tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \meerkat@part@draw[\meerkat@tip] (0.836, 0.132).. controls (0.6422, 0.132) and (0.5231, 0.0767) .. (0.341, 0.143) -- (0.44, 0.253).. controls (0.5922, 0.1976) and (0.6765, 0.1601) .. (0.836, 0.132);
+ \fi % back
+ %
+ \fi % standling
+ %
+ \begin{scope}[yshift=\meerkat@shift]
+ %
+ % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \meerkat@part@draw[\meerkat@body] (0,0.77) circle [radius=0.35];
+ %
+ % Upper body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ifmeerkat@back
+ \meerkat@part@draw[\meerkat@upperbody] (-0.374, 1.32).. controls (-0.3892, 1.1462) and (-0.2287, 0.903) .. (-0.0859, 0.7515).. controls (-0.0594, 0.7213) and (-0.031, 0.691) .. (0.0, 0.66).. controls (0.031, 0.691) and (0.0595, 0.7213) .. (0.0859, 0.7515).. controls (0.2399, 0.9179) and (0.3892, 1.1462) .. (0.374, 1.32).. controls (0.374, 1.4277) and (0.1868, 1.582) .. (0.0, 1.65).. controls (-0.1876, 1.5817) and (-0.374, 1.4271) .. (-0.374, 1.32) -- cycle;
+ \else
+ \meerkat@part@draw[\meerkat@upperbody] (-0.374, 1.32).. controls (-0.3974, 1.0521) and (-0.176, 0.9289) .. (-0.176, 0.66).. controls (-0.176, 0.467) and (-0.077, 0.467) .. (-0.077, 0.66).. controls (-0.077, 0.6924) and (-0.0803, 0.7227) .. (-0.0859, 0.7515).. controls (-0.0594, 0.7213) and (-0.031, 0.691) .. (-0.0, 0.66).. controls (0.031, 0.691) and (0.0595, 0.7213) .. (0.0859, 0.7515).. controls (0.0803, 0.7227) and (0.077, 0.6924) .. (0.077, 0.66).. controls (0.077, 0.467) and (0.176, 0.467) .. (0.176, 0.66).. controls (0.176, 0.9289) and (0.3974, 1.0521) .. (0.374, 1.32).. controls (0.374, 1.4277) and (0.1868, 1.582) .. (-0.0, 1.65).. controls (-0.1876, 1.5817) and (-0.374, 1.4271) .. (-0.374, 1.32) -- cycle;
+ \fi % back
+ %
+ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \csname meerkathookbelly\endcsname
+ \csname tikzlinghookbelly\endcsname
+ %
+ % Chest %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \unless\ifmeerkat@back
+ \meerkat@part@draw[\meerkat@chest] (-0.0, 1.54).. controls (-0.1378, 1.54) and (-0.275, 1.4578) .. (-0.275, 1.32).. controls (-0.275, 1.1168) and (-0.1437, 1.0237) .. (-0.0, 0.88).. controls (0.1437, 1.0237) and (0.275, 1.1168) .. (0.275, 1.32).. controls (0.275, 1.4578) and (0.1378, 1.54) .. (-0.0, 1.54) -- cycle;
+ \fi % back
+ %
+ % Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \meerkat@part@draw[\meerkat@ears] (-0.35, 1.87) circle [radius=0.11];
+ \meerkat@part@draw[\meerkat@ears] (0.35, 1.87) circle [radius=0.11];
+ %
+ % Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ifmeerkat@back
+ \meerkat@part@draw[\meerkat@muzzle] (0,1.7) ellipse [x radius=0.38, y radius=0.21];
+ \meerkat@part@draw[\meerkat@body] (0,1.775) ellipse [x radius=0.34, y radius=0.32];
+ \else
+ \meerkat@part@draw[\meerkat@body] (0,1.85) ellipse [x radius=0.34, y radius=0.25];
+ \meerkat@part@draw[\meerkat@muzzle] (0,1.7) ellipse [x radius=0.38, y radius=0.21];
+ %
+ % Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \meerkat@part@draw[\meerkat@nose] (0.0176, 1.6987) -- (0.0437, 1.7439).. controls (0.0534, 1.7607) and (0.0455, 1.7743) .. (0.0261, 1.7743) -- (-0.0261, 1.7743).. controls (-0.0455, 1.7743) and (-0.0534, 1.7607) .. (-0.0437, 1.7439) -- (-0.0176, 1.6987).. controls (-0.0079, 1.6819) and (0.0079, 1.6819) .. (0.0176, 1.6987) -- cycle;
+ %
+ % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ifmeerkat@openmouth
+ \filldraw[\meerkat@mouth,line width=\scalingfactor*0.4pt] (-0.16, 1.727) .. controls (-0.16, 1.727) and (-0.062, 1.62) .. (0, 1.7) .. controls (0.062, 1.62) and (0.16, 1.727) .. (0.16, 1.727) (0.16, 1.727) arc [start angle=-20, end angle=-160, radius=0.17];
+ \else
+ \draw[\meerkat@mouth,line width=\scalingfactor*0.4pt] (-0.16, 1.727) .. controls (-0.16, 1.727) and (-0.062, 1.62) .. (0, 1.7) .. controls (0.062, 1.62) and (0.16, 1.727) .. (0.16, 1.727);
+ \fi
+ %
+ % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \meerkat@part@draw[\meerkat@eyecircles,rotate=30] (0.75,1.7) ellipse [x radius=0.14, y radius=0.08];
+ \meerkat@part@draw[\meerkat@eyecircles,rotate=-30] (-0.75,1.7) ellipse [x radius=0.14, y radius=0.08];
+ \meerkat@part@draw[\meerkat@eye] (0.18,1.86) circle [radius=0.055];
+ \meerkat@part@draw[\meerkat@eye] (-0.18,1.86) circle [radius=0.055];
+ \meerkat@part@draw[white] (0.165,1.88) circle [radius=0.01];
+ \meerkat@part@draw[white] (-0.195,1.88) circle [radius=0.01];
+ \fi % back
+ %
+ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \csname meerkathookbody\endcsname
+ \csname tikzlinghookbody\endcsname
+ %
+ \end{scope}% body shift
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Documentation
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\clearpage
+%\section[Meerkat]{Ambrogio, the meerkat}
+%
+%\emph{The Meerkat was first created by Carla for the Great TikZlings Extravanganza 2022\footnote{\url{https://github.com/TikZlings/Extravaganza2022}}. Ambrogio got his name from the patreon saint of his home town Milan, Saint Ambrogio}
+%
+%\subsection{Package name}
+%
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-meerkats}
+%\end{samcode}
+%\end{tcolorbox}
+%
+%\subsection{Basic Usage}
+%
+%\begin{tcblisting}{title={Basic meerkat}}
+%\meerkat
+%\end{tcblisting}
+%
+%\subsection{Options}
+%
+%The basic meerkat can be modified by changing its colour:
+%\begin{tcblisting}{title={Body colour}}
+%\meerkat[body=blue]
+%\end{tcblisting}
+%
+%In addition to the colour of the body, the colour of various body parts can be adjusted:
+%\begin{tcblisting}{title={Eye colour}}
+%\meerkat[eye=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Eye circle colour}}
+%\meerkat[eyecircles=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Ear colour}}
+%\meerkat[ears=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Muzzle colour}}
+%\meerkat[muzzle=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Nose colour}}
+%\meerkat[nose=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Mouth colour}}
+%\meerkat[mouth=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Upper body colour}}
+%\meerkat[upperbody=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Chest colour}}
+%\meerkat[chest=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Leg colour}}
+%\meerkat[legs=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Tail colour}}
+%\meerkat[tail=red]
+%\end{tcblisting}
+%\begin{tcblisting}{title={Tail tip colour}}
+%\meerkat[tip=red]
+%\end{tcblisting}
+%
+% The meerkat can open its mouth:
+%\begin{tcblisting}{title={Open mouth}}
+%\meerkat[openmouth]
+%\end{tcblisting}
+%
+%The meerkat can also stand up
+%\begin{tcblisting}{title={Standing meerkat}}
+%\meerkat[standing]
+%\end{tcblisting}
+%
+%To view the meerkat from behind:
+%\begin{tcblisting}{title={Back view}}
+%\meerkat[back]
+%\end{tcblisting}
+%
+%The key \saminline|3D| will make the meerkat 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
+%\meerkat[3D]
+%\end{tcblisting}
+%
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
+%\meerkat[contour=black]
+%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-mice.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-mice.sty
index b864d03fd6f..f6bc29e3a14 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-mice.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-mice.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-mice}[2022/06/17 version v1.0 Drawing mice in TikZ]
+\ProvidesPackage{tikzlings-mice}[2025/01/05 version v2.2 Drawing mice in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -26,7 +26,7 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname mousehookforeground\endcsname
\csname tikzlinghookforeground\endcsname
- %
+ %
}
\newif\ifmouse@threeD
@@ -52,7 +52,7 @@
body/.store in = \mouse@body,
body = gray!90!white,
eye/.store in = \mouse@eye,
- eye = \mouse@body!50!black,
+ eye = \mouse@body!50!black,
whiskers/.store in = \mouse@whiskers,
whiskers = \mouse@body!50!black,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -68,19 +68,19 @@
leftstep/.code = \mouse@leftsteptrue,
left step/.forward to = /mouse/leftstep,
rightstep/.code = \mouse@rightsteptrue,
- right step/.forward to = /mouse/rightstep,
- back/.code = \mouse@backtrue,
+ right step/.forward to = /mouse/rightstep,
+ back/.code = \mouse@backtrue,
contour/.code = \mouse@contourtrue
\def\mouse@contour{#1}
\def\mouse@whiskers{#1},
- contour/.default = black,
- outline/.forward to = /mouse/contour,
+ contour/.default = black,
+ outline/.forward to = /mouse/contour,
}
\def\mouse@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.625,0.1) rectangle (0.905, 2.17);
@@ -97,7 +97,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -115,24 +115,24 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname mousehookbackground\endcsname
\csname tikzlinghookbackground\endcsname
- %
+ %
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifmouse@leftstep
- \mouse@part@draw[\mouse@body!65!white] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
+ \mouse@part@draw[\mouse@body!65!white] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
\else% step
- \mouse@part@draw[\mouse@body!65!white] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \mouse@part@draw[\mouse@body!65!white] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
\fi% step
%
\ifmouse@rightstep
- \mouse@part@draw[\mouse@body!65!white] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
+ \mouse@part@draw[\mouse@body!65!white] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
\else% step
- \mouse@part@draw[\mouse@body!65!white] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \mouse@part@draw[\mouse@body!65!white] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
\fi% step
%
% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -154,7 +154,7 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname mousehookbelly\endcsname
\csname tikzlinghookbelly\endcsname
- %
+ %
% Tail if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifmouse@back
\mouse@part@draw[\mouse@body!65!white] (1.0825, 1.6326) .. controls (1.3527, 1.7527) and (1.6609, 1.3164) .. (1.5928, 1.3124) .. controls (0.9164, 2.186) and (0.8338, 0.6325) .. (0.3708, 0.4451) .. controls (0.2529, 0.3974) and (-0.0064, 0.3874) .. (-0.0064, 0.3874) .. controls (-0.0776, 0.3765) and (-0.0862, 0.5026) .. (-0.0092, 0.5034) .. controls (-0.0092, 0.5034) and (0.0363, 0.4591) .. (0.3516, 0.54360) .. controls (0.6710, 0.6988) and (0.7613, 1.4825) .. (1.0825, 1.6326) -- cycle;
@@ -162,11 +162,7 @@
%
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifmouse@back
- \mouse@part@draw[\mouse@body!65!white]
- (0.5, 1.8) .. controls (0.5, 1.58) and (0.2, 1.35) ..
- (0, 1.35) .. controls (-0.2, 1.35) and (-0.5, 1.58) ..
- (-0.5, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) ..
- (0.5, 1.8) -- cycle;
+ \mouse@part@draw[\mouse@body!65!white] (0.5, 1.8) .. controls (0.5, 1.58) and (0.2, 1.35) .. (0, 1.35) .. controls (-0.2, 1.35) and (-0.5, 1.58) .. (-0.5, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) .. (0.5, 1.8) -- cycle;
\else% back
\mouse@part@draw[\mouse@body!65!white] (0.5, 1.8) .. controls (0.5, 1.58) and (0.2, 1.25) .. (0, 1.16) .. controls (-0.2, 1.25) and (-0.5, 1.58) .. (-0.5, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) .. (0.5, 1.8) -- cycle;
\fi% back
@@ -198,7 +194,7 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname mousehookbody\endcsname
\csname tikzlinghookbody\endcsname
- %
+ %
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -213,55 +209,55 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-mice}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-mice}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic mouse}}
%\mouse
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic mouse can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\mouse[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\mouse[eye=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Whiskers colour}}
%\mouse[whiskers=red]
%\end{tcblisting}
%
%The rotation angle of its arms can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Rotating the arms}}
%\mouse[rotatearms=40]
%\end{tcblisting}
%
%And the mouse can lift its legs:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Walking}}
%\mouse[leftstep]
%\mouse[rightstep,xshift=2cm]
%\end{tcblisting}
%
%To view the mouse from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\mouse[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the mouse 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the mouse 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\mouse[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\mouse[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-moles.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-moles.sty
index a64afa5720e..6363a8944cc 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-moles.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-moles.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-moles}[2022/06/17 version v1.0 Drawing moles in TikZ]
+\ProvidesPackage{tikzlings-moles}[2025/01/05 version v2.2 Drawing moles in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -26,12 +26,15 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname moleshookforeground\endcsname
\csname tikzlinghookforeground\endcsname
- %
+ %
}
\newif\ifmoles@threeD
+\newif\ifmoles@leftstep
+\newif\ifmoles@rightstep
\newif\ifmoles@back
\newif\ifmoles@contour
+\newif\ifmoles@openmouth
\tikzset{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -49,13 +52,13 @@
body/.store in = \moles@body,
body = gray,
eye/.store in = \moles@eye,
- eye = \moles@body!60!black,
+ eye = \moles@body!60!black,
feet/.store in = \moles@feet,
feet = red!20!white!50!brown,
hands/.store in = \moles@hands,
- hands = red!20!white!50!brown,
+ hands = red!20!white!50!brown,
muzzle/.store in = \moles@muzzle,
- muzzle = red!20!white!50!brown,
+ muzzle = red!20!white!50!brown,
mouth/.store in = \moles@mouth,
mouth = \moles@body!60!black,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -63,20 +66,26 @@
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 3D/.code = \moles@threeDtrue,
- back/.code = \moles@backtrue,
+ openmouth/.code = \moles@openmouthtrue,
+ open mouth/.forward to = /moles/openmouth,
+ 3D/.code = \moles@threeDtrue,
+ leftstep/.code = \moles@leftsteptrue,
+ left step/.forward to = /moles/leftstep,
+ rightstep/.code = \moles@rightsteptrue,
+ right step/.forward to = /moles/rightstep,
+ back/.code = \moles@backtrue,
contour/.code = \moles@contourtrue
\def\moles@contour{#1}
\def\moles@mouth{#1}
\def\moles@eye{#1},
- contour/.default = black,
- outline/.forward to = /moles/contour,
+ contour/.default = black,
+ outline/.forward to = /moles/contour,
}
\def\moles@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.625,0.1) rectangle (0.905, 2.17);
@@ -93,7 +102,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -111,7 +120,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -119,8 +128,16 @@
\csname tikzlinghookbackground\endcsname
%
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \moles@part@draw[\moles@feet] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
- \moles@part@draw[\moles@feet] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \ifmoles@leftstep
+ \moles@part@draw[\moles@feet] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
+ \else% step
+ \moles@part@draw[\moles@feet] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \fi% step
+ \ifmoles@rightstep
+ \moles@part@draw[\moles@feet] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
+ \else% step
+ \moles@part@draw[\moles@feet] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \fi% step
%
% Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifmoles@back
@@ -173,15 +190,19 @@
%
% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifmoles@threeD
- \fill[\moles@eye] (-0.165,1.79) ellipse[x radius=0.055, y radius=0.015, rotate=-15];
- \fill[\moles@eye!50!black] (0.165,1.79) ellipse[x radius=0.055, y radius=0.015, rotate=15];
+ \fill[\moles@eye] (-0.165,1.79) ellipse[x radius=0.055, y radius=0.015, rotate=-15];
+ \fill[\moles@eye!50!black] (0.165,1.79) ellipse[x radius=0.055, y radius=0.015, rotate=15];
\else% 3D
- \fill[\moles@eye] (-0.165,1.79) ellipse[x radius=0.055, y radius=0.015, rotate=-15];
- \fill[\moles@eye] (0.165,1.79) ellipse[x radius=0.055, y radius=0.015, rotate=15];
+ \fill[\moles@eye] (-0.165,1.79) ellipse[x radius=0.055, y radius=0.015, rotate=-15];
+ \fill[\moles@eye] (0.165,1.79) ellipse[x radius=0.055, y radius=0.015, rotate=15];
\fi% 3D
%
% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \draw[\moles@mouth, line width=\scalingfactor*0.4pt] (0.145,1.51) arc [start angle=-20, end angle=-160, radius=0.16] ;
+ \ifmoles@openmouth
+ \filldraw[\moles@mouth, line width=\scalingfactor*0.4pt] (0.145,1.51) arc [start angle=-20, end angle=-160, radius=0.16] ;
+ \else
+ \draw[\moles@mouth, line width=\scalingfactor*0.4pt] (0.145,1.51) arc [start angle=-20, end angle=-160, radius=0.16];
+ \fi
%
\fi% back
%
@@ -203,58 +224,65 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-moles}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-moles}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\textcolor{red!60!black}{\textbf{Attention:} In contrast to the other \tikzlings the macro name is the plural form to avoid conflicts with \lstinline|siunitx| and similar packages.}
-%\begin{tcblisting}{}
+%\textcolor{samred}{\textbf{Attention:} In contrast to the other \tikzlings the macro name is the plural form to avoid conflicts with \saminline|siunitx| and similar packages.}
+%\begin{tcblisting}{title={Basic mole}}
%\moles
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic mole can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\moles[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\moles[eye=red]
%\end{tcblisting}
-%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Muzzle colour}}
%\moles[muzzle=red]
%\end{tcblisting}
-%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Hand colour}}
%\moles[hands=red]
%\end{tcblisting}
-%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Foot colour}}
%\moles[feet=red]
%\end{tcblisting}
-%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Mouth colour}}
%\moles[mouth=red]
%\end{tcblisting}
%
+% The mole can open its mouth:
+%\begin{tcblisting}{title={Open mouth}}
+%\moles[openmouth]
+%\end{tcblisting}
+%
+%And the mole can lift its legs:
+%\begin{tcblisting}{title={Walking}}
+%\moles[leftstep]
+%\moles[rightstep,xshift=2cm]
+%\end{tcblisting}
+%
%To view the mole from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\moles[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the mole 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the mole 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\moles[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\moles[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-owls.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-owls.sty
index cf57616cc89..23b9f0ff8e7 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-owls.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-owls.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-owls}[2022/06/17 version v1.0 Draw owls in TikZ]
+\ProvidesPackage{tikzlings-owls}[2025/01/05 version v2.2 Draw owls in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -26,7 +26,7 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname owlhookforeground\endcsname
\csname tikzlinghookforeground\endcsname
- %
+ %
}
\newif\ifowl@threeD
@@ -55,24 +55,24 @@
bill/.store in = \owl@bill,
bill = orange,
feet/.store in = \owl@feet,
- feet = orange,
+ feet = orange,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3D/.code = \owl@threeDtrue,
- back/.code = \owl@backtrue,
+ back/.code = \owl@backtrue,
contour/.code = \owl@contourtrue
\def\owl@contour{#1},
- contour/.default = black,
- outline/.forward to = /owl/contour,
+ contour/.default = black,
+ outline/.forward to = /owl/contour,
}
\def\owl@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.73, 0.08) rectangle (0.73, 2.24);
@@ -89,7 +89,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -107,7 +107,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -116,7 +116,7 @@
%
% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\owl@part@draw[\owl@body] (0.575,0.8) ellipse[x radius=0.38, y radius=0.1, rotate=-80];
- \owl@part@draw[\owl@body] (-0.575,0.8) ellipse[x radius=0.38, y radius=0.1, rotate=80];
+ \owl@part@draw[\owl@body] (-0.575,0.8) ellipse[x radius=0.38, y radius=0.1, rotate=80];
%
% Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifowl@back
@@ -194,50 +194,50 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-owls}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-owls}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic owl}}
%\owl
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic owl can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\owl[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\owl[eye=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Pupil colour}}
%\owl[pupil=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Bill colour}}
%\owl[bill=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Foot colour}}
%\owl[feet=red]
%\end{tcblisting}
%
%To view the owl from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\owl[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the owl 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the owl 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\owl[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\owl[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-pandas.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-pandas.sty
index f746d880e19..241f76a2a22 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-pandas.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-pandas.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-pandas}[2022/06/17 version v1.0 Drawing pandas in TikZ]
+\ProvidesPackage{tikzlings-pandas}[2025/01/05 version v2.2 Drawing pandas in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -26,12 +26,13 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname pandahookforeground\endcsname
\csname tikzlinghookforeground\endcsname
- %
+ %
}
\newif\ifpanda@threeD
\newif\ifpanda@back
\newif\ifpanda@contour
+\newif\ifpanda@openmouth
\tikzset{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -47,31 +48,33 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
body/.store in = \panda@body,
- body = white!90!black,
+ body = white!90!gray,
eye/.store in = \panda@eye,
- eye = white,
+ eye = white,
pupil/.store in = \panda@pupil,
- pupil = black,
+ pupil = black,
mouth/.store in = \panda@mouth,
- mouth = black,
+ mouth = black,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 3D/.code = \panda@threeDtrue,
- back/.code = \panda@backtrue,
+ openmouth/.code = \panda@openmouthtrue,
+ open mouth/.forward to = /panda/openmouth,
+ 3D/.code = \panda@threeDtrue,
+ back/.code = \panda@backtrue,
contour/.code = \panda@contourtrue
\def\panda@contour{#1}
\def\panda@mouth{#1},
- contour/.default = black,
- outline/.forward to = /panda/contour,
+ contour/.default = black,
+ outline/.forward to = /panda/contour,
}
\def\panda@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.62,0.05) rectangle (0.62, 2.18);
@@ -88,7 +91,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -106,7 +109,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -115,12 +118,12 @@
%
% Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifpanda@back
- \panda@part@draw[black] (0.32, 0.27) circle[radius=0.2];
+ \panda@part@draw[black] (0.32, 0.27) circle[radius=0.2];
\panda@part@draw[black] (-0.32, 0.27) circle[radius=0.2];
\fi% back
%
% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \panda@part@draw[\panda@body!55!white] (0,0.78) ellipse[x radius=0.57, y radius=0.65];
+ \panda@part@draw[\panda@body] (0,0.78) ellipse[x radius=0.57, y radius=0.65];
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname pandahookbelly\endcsname
@@ -136,7 +139,7 @@
%
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifpanda@back
- \panda@part@draw[black] (0.32, 0.27) circle[radius=0.2];
+ \panda@part@draw[black] (0.32, 0.27) circle[radius=0.2];
\panda@part@draw[black] (-0.32, 0.27) circle[radius=0.2];
\fi% back
%
@@ -145,7 +148,7 @@
\panda@part@draw[black] (-0.32, 2) circle[radius=0.15];
%
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \panda@part@draw[\panda@body!55!white] (0.4897, 1.5886) .. controls (0.4614, 1.8238) and (0.25, 2.1172) .. (0, 2.1134) .. controls (-0.25, 2.1172) and (-0.4614, 1.8238) .. (-0.4897, 1.5886) .. controls (-0.5261, 1.3269) and (-0.2748, 1.2377) .. (0, 1.2377) .. controls (0.2748, 1.2377) and (0.5261, 1.3269) .. (0.4897, 1.5886) -- cycle;
+ \panda@part@draw[\panda@body] (0.4897, 1.5886) .. controls (0.4614, 1.8238) and (0.25, 2.1172) .. (0, 2.1134) .. controls (-0.25, 2.1172) and (-0.4614, 1.8238) .. (-0.4897, 1.5886) .. controls (-0.5261, 1.3269) and (-0.2748, 1.2377) .. (0, 1.2377) .. controls (0.2748, 1.2377) and (0.5261, 1.3269) .. (0.4897, 1.5886) -- cycle;
%
% Show details only from the front %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifpanda@back
@@ -159,7 +162,11 @@
\panda@part@draw[\panda@pupil] (-0.17, 1.695) circle[radius=0.02];
%
% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \draw[\panda@mouth,line width=\scalingfactor*0.2pt] (-0.16, 1.477) .. controls (-0.16, 1.477) and (-0.062, 1.37) .. (0, 1.506) .. controls (0.062, 1.37) and (0.16, 1.477) .. (0.16, 1.477);
+ \ifpanda@openmouth
+ \filldraw[\panda@mouth,line width=\scalingfactor*0.2pt] (-0.16, 1.477) .. controls (-0.16, 1.477) and (-0.062, 1.37) .. (0, 1.506) .. controls (0.062, 1.37) and (0.16, 1.477) .. (0.16, 1.477) (0.16,1.477) arc [start angle=-20, end angle=-160, radius=0.17];
+ \else
+ \draw[\panda@mouth,line width=\scalingfactor*0.2pt] (-0.16, 1.477) .. controls (-0.16, 1.477) and (-0.062, 1.37) .. (0, 1.506) .. controls (0.062, 1.37) and (0.16, 1.477) .. (0.16, 1.477);
+ \fi
%
% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\panda@part@draw[black] (0,1.55) ellipse[x radius=0.07, y radius=0.04];
@@ -184,47 +191,52 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-pandas}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-pandas}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic panda}}
%\panda
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic panda can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\panda[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\panda[eye=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Pupil colour}}
%\panda[pupil=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Mouth colour}}
%\panda[mouth=red]
%\end{tcblisting}
%
+% The panda can open its mouth:
+%\begin{tcblisting}{title={Open mouth}}
+%\panda[openmouth]
+%\end{tcblisting}
+%
%To view the panda from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\panda[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the panda 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the panda 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\panda[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\panda[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-penguins.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-penguins.sty
index 8bceea8a19d..93a76e7ab02 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-penguins.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-penguins.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-penguins}[2022/06/17 version v1.0 Draw penguins in TikZ]
+\ProvidesPackage{tikzlings-penguins}[2025/01/05 version v2.2 Draw penguins in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -26,7 +26,7 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname penguinhookforeground\endcsname
\csname tikzlinghookforeground\endcsname
- %
+ %
}
\newif\ifpenguin@threeD
@@ -53,28 +53,28 @@
feet/.store in = \penguin@feet,
feet = yellow!50!orange,
bill/.store in = \penguin@bill,
- bill = orange,
+ bill = orange,
eye/.store in = \penguin@eye,
eye = white!95!black,
pupil/.store in = \penguin@pupil,
- pupil = black,
+ pupil = black,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 3D/.code = \penguin@threeDtrue,
- back/.code = \penguin@backtrue,
+ 3D/.code = \penguin@threeDtrue,
+ back/.code = \penguin@backtrue,
contour/.code = \penguin@contourtrue
\def\penguin@contour{#1},
- contour/.default = black,
- outline/.forward to = /penguin/contour,
+ contour/.default = black,
+ outline/.forward to = /penguin/contour,
}
\def\penguin@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.865, 0.15) rectangle (0.865, 2.13);
@@ -91,7 +91,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -109,7 +109,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -118,14 +118,12 @@
%
% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\penguin@part@draw[\penguin@body] (0.575,1.2) ellipse[x radius=0.38, y radius=0.1, rotate=-50];
- \penguin@part@draw[\penguin@body] (-0.575,1.2) ellipse[x radius=0.38, y radius=0.1, rotate=50];
+ \penguin@part@draw[\penguin@body] (-0.575,1.2) ellipse[x radius=0.38, y radius=0.1, rotate=50];
%
% Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifpenguin@back
- \penguin@part@draw[\penguin@feet]
- (-0.265, 0.3941) .. controls (-0.283, 0.4505) and (-0.373, 0.6014) .. (-0.470, 0.6533) .. controls (-0.571, 0.7075) and (-0.576, 0.6369) .. (-0.554, 0.596) .. controls (-0.526, 0.5416) and (-0.573, 0.5302) .. (-0.602, 0.5384) .. controls (-0.695, 0.5653) and (-0.767, 0.5169) .. (-0.684, 0.434) .. controls (-0.664, 0.4137) and (-0.587, 0.3557) .. (-0.699, 0.3492) .. controls (-0.772, 0.345) and (-0.779, 0.268) .. (-0.689, 0.2445) .. controls (-0.597, 0.2206) and (-0.476, 0.2043) .. (-0.34, 0.2096) .. controls (-0.252, 0.2131) and (-0.237, 0.3059) .. (-0.265, 0.3941) -- cycle;
- \penguin@part@draw[\penguin@feet]
- (0.265, 0.3941) .. controls (0.283, 0.4505) and (0.3725, 0.6014) .. (0.469, 0.6533) .. controls (0.571, 0.7075) and (0.5756, 0.6369) .. (0.554, 0.596) .. controls (0.526, 0.5416) and (0.5733, 0.5302) .. (0.602, 0.5384) .. controls (0.695, 0.5653) and (0.7672, 0.5169) .. (0.684, 0.434) .. controls (0.663, 0.4137) and (0.587, 0.3557) .. (0.699, 0.3492) .. controls (0.772, 0.345) and (0.7789, 0.268) .. (0.689, 0.2445) .. controls (0.597, 0.2206) and (0.4764, 0.2043) .. (0.34, 0.2096) .. controls (0.252, 0.2131) and (0.2368, 0.3059) .. (0.265, 0.3941) -- cycle;
+ \penguin@part@draw[\penguin@feet] (-0.265, 0.3941) .. controls (-0.283, 0.4505) and (-0.373, 0.6014) .. (-0.470, 0.6533) .. controls (-0.571, 0.7075) and (-0.576, 0.6369) .. (-0.554, 0.596) .. controls (-0.526, 0.5416) and (-0.573, 0.5302) .. (-0.602, 0.5384) .. controls (-0.695, 0.5653) and (-0.767, 0.5169) .. (-0.684, 0.434) .. controls (-0.664, 0.4137) and (-0.587, 0.3557) .. (-0.699, 0.3492) .. controls (-0.772, 0.345) and (-0.779, 0.268) .. (-0.689, 0.2445) .. controls (-0.597, 0.2206) and (-0.476, 0.2043) .. (-0.34, 0.2096) .. controls (-0.252, 0.2131) and (-0.237, 0.3059) .. (-0.265, 0.3941) -- cycle;
+ \penguin@part@draw[\penguin@feet] (0.265, 0.3941) .. controls (0.283, 0.4505) and (0.3725, 0.6014) .. (0.469, 0.6533) .. controls (0.571, 0.7075) and (0.5756, 0.6369) .. (0.554, 0.596) .. controls (0.526, 0.5416) and (0.5733, 0.5302) .. (0.602, 0.5384) .. controls (0.695, 0.5653) and (0.7672, 0.5169) .. (0.684, 0.434) .. controls (0.663, 0.4137) and (0.587, 0.3557) .. (0.699, 0.3492) .. controls (0.772, 0.345) and (0.7789, 0.268) .. (0.689, 0.2445) .. controls (0.597, 0.2206) and (0.4764, 0.2043) .. (0.34, 0.2096) .. controls (0.252, 0.2131) and (0.2368, 0.3059) .. (0.265, 0.3941) -- cycle;
\fi% back
%
% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -142,10 +140,8 @@
%
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifpenguin@back
- \penguin@part@draw[\penguin@feet]
- (-0.265, 0.3941) .. controls (-0.283, 0.4505) and (-0.373, 0.6014) .. (-0.470, 0.6533) .. controls (-0.571, 0.7075) and (-0.576, 0.6369) .. (-0.554, 0.596) .. controls (-0.526, 0.5416) and (-0.573, 0.5302) .. (-0.602, 0.5384) .. controls (-0.695, 0.5653) and (-0.767, 0.5169) .. (-0.684, 0.434) .. controls (-0.664, 0.4137) and (-0.587, 0.3557) .. (-0.699, 0.3492) .. controls (-0.772, 0.345) and (-0.779, 0.268) .. (-0.689, 0.2445) .. controls (-0.597, 0.2206) and (-0.476, 0.2043) .. (-0.34, 0.2096) .. controls (-0.252, 0.2131) and (-0.237, 0.3059) .. (-0.265, 0.3941) -- cycle;
- \penguin@part@draw[\penguin@feet]
- (0.265, 0.3941) .. controls (0.283, 0.4505) and (0.3725, 0.6014) .. (0.469, 0.6533) .. controls (0.571, 0.7075) and (0.5756, 0.6369) .. (0.554, 0.596) .. controls (0.526, 0.5416) and (0.5733, 0.5302) .. (0.602, 0.5384) .. controls (0.695, 0.5653) and (0.7672, 0.5169) .. (0.684, 0.434) .. controls (0.663, 0.4137) and (0.587, 0.3557) .. (0.699, 0.3492) .. controls (0.772, 0.345) and (0.7789, 0.268) .. (0.689, 0.2445) .. controls (0.597, 0.2206) and (0.4764, 0.2043) .. (0.34, 0.2096) .. controls (0.252, 0.2131) and (0.2368, 0.3059) .. (0.265, 0.3941) -- cycle;
+ \penguin@part@draw[\penguin@feet] (-0.265, 0.3941) .. controls (-0.283, 0.4505) and (-0.373, 0.6014) .. (-0.470, 0.6533) .. controls (-0.571, 0.7075) and (-0.576, 0.6369) .. (-0.554, 0.596) .. controls (-0.526, 0.5416) and (-0.573, 0.5302) .. (-0.602, 0.5384) .. controls (-0.695, 0.5653) and (-0.767, 0.5169) .. (-0.684, 0.434) .. controls (-0.664, 0.4137) and (-0.587, 0.3557) .. (-0.699, 0.3492) .. controls (-0.772, 0.345) and (-0.779, 0.268) .. (-0.689, 0.2445) .. controls (-0.597, 0.2206) and (-0.476, 0.2043) .. (-0.34, 0.2096) .. controls (-0.252, 0.2131) and (-0.237, 0.3059) .. (-0.265, 0.3941) -- cycle;
+ \penguin@part@draw[\penguin@feet] (0.265, 0.3941) .. controls (0.283, 0.4505) and (0.3725, 0.6014) .. (0.469, 0.6533) .. controls (0.571, 0.7075) and (0.5756, 0.6369) .. (0.554, 0.596) .. controls (0.526, 0.5416) and (0.5733, 0.5302) .. (0.602, 0.5384) .. controls (0.695, 0.5653) and (0.7672, 0.5169) .. (0.684, 0.434) .. controls (0.663, 0.4137) and (0.587, 0.3557) .. (0.699, 0.3492) .. controls (0.772, 0.345) and (0.7789, 0.268) .. (0.689, 0.2445) .. controls (0.597, 0.2206) and (0.4764, 0.2043) .. (0.34, 0.2096) .. controls (0.252, 0.2131) and (0.2368, 0.3059) .. (0.265, 0.3941) -- cycle;
\fi% back
%
% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -186,53 +182,53 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-penguins}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-penguins}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic penguin}}
%\penguin
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic penguin can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\penguin[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\penguin[eye=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Pupil colour}}
%\penguin[pupil=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Bill colour}}
%\penguin[bill=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Belly colour}}
%\penguin[belly=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Foot colour}}
%\penguin[feet=red]
%\end{tcblisting}
%
%To view the penguin from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\penguin[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the penguin 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the penguin 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\penguin[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\penguin[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-pigs.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-pigs.sty
index d551f0a0602..13845d86718 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-pigs.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-pigs.sty
@@ -9,14 +9,14 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-pigs}[2022/06/17 version v1.0 Drawing pigs in TikZ]
+\ProvidesPackage{tikzlings-pigs}[2025/01/05 version v2.2 Drawing pigs in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
-\definecolor{pigdark}{RGB}{241,164,142}
+\definecolor{piglight}{RGB}{247,205,193}
\newcommand*{\pig}[1][]{%
\begin{scope}%
@@ -27,12 +27,13 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname pighookforeground\endcsname
\csname tikzlinghookforeground\endcsname
- %
+ %
}
\newif\ifpig@threeD
\newif\ifpig@back
\newif\ifpig@contour
+\newif\ifpig@openmouth
\tikzset{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -48,11 +49,11 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
body/.store in = \pig@body,
- body = pigdark,
+ body = piglight,
eye/.store in = \pig@eye,
- eye = gray,
+ eye = gray,
tail/.store in = \pig@tail,
- tail = \pig@body,
+ tail = pig@bodysat22,
mouth/.store in = \pig@mouth,
mouth = gray,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -60,21 +61,23 @@
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ openmouth/.code = \pig@openmouthtrue,
+ open mouth/.forward to = /pig/openmouth,
3D/.code = \pig@threeDtrue
- \def\pig@mouth{gray!70!black},
- back/.code = \pig@backtrue,
+ \def\pig@mouth{gray!70!black},
+ back/.code = \pig@backtrue,
contour/.code = \pig@contourtrue
\def\pig@contour{#1}
\def\pig@mouth{#1}
\def\pig@tail{#1},
- contour/.default = black,
- outline/.forward to = /pig/contour,
+ contour/.default = black,
+ outline/.forward to = /pig/contour,
}
\def\pig@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.625,0.1) rectangle (0.905, 2.27);
@@ -91,7 +94,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -108,8 +111,20 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
+ % generating saturated version of body colour
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \extractcolorspecs{\pig@body}{\pig@model}{\pig@colorspec}
+ \convertcolorspec{\pig@model}{\pig@colorspec}{hsb}{\pig@hsbcolorspec}
+ \pgfmathsetmacro{\pig@hue}{(array({\pig@hsbcolorspec},0))}
+ \pgfmathsetmacro{\pig@sat}{(array({\pig@hsbcolorspec},1)+0.22)}
+ \pgfmathsetmacro{\pig@bright}{(array({\pig@hsbcolorspec},2))}
+ \definecolor{pig@bodysat22}{hsb}{\pig@hue,\pig@sat,\pig@bright}
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -123,12 +138,12 @@
%
% Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifpig@back
- \pig@part@draw[\pig@body] (0.3216,0.15) arc (-15:195:0.12) -- (0.16,0.15) to [bend left] (0.25,0.15) -- cycle;
- \pig@part@draw[\pig@body] (-0.3216,0.15) arc (195:-15:0.12) -- (-0.16,0.15) to[bend right] (-0.25,0.15) --cycle;
+ \pig@part@draw[pig@bodysat22] (0.3216,0.15) arc (-15:195:0.12) -- (0.16,0.15) to [bend left] (0.25,0.15) -- cycle;
+ \pig@part@draw[pig@bodysat22] (-0.3216,0.15) arc (195:-15:0.12) -- (-0.16,0.15) to[bend right] (-0.25,0.15) --cycle;
\fi% back
%
% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \pig@part@draw[\pig@body!55!white] ( 0.6, 0.8 ) .. controls ( 0.6 , 0.4) and ( 0.35, 0.16) .. ( 0.0, 0.16) .. controls (-0.35, 0.16) and (-0.6 , 0.4) .. (-0.6, 0.8 ) .. controls (-0.6 , 1.3) and (-0.35, 1.5) .. ( 0.0, 1.5) .. controls ( 0.35, 1.5) and ( 0.6 , 1.3) .. ( 0.6, 0.75) -- cycle;
+ \pig@part@draw[\pig@body] ( 0.6, 0.8 ) .. controls ( 0.6 , 0.4) and ( 0.35, 0.16) .. ( 0.0, 0.16) .. controls (-0.35, 0.16) and (-0.6 , 0.4) .. (-0.6, 0.8 ) .. controls (-0.6 , 1.3) and (-0.35, 1.5) .. ( 0.0, 1.5) .. controls ( 0.35, 1.5) and ( 0.6 , 1.3) .. ( 0.6, 0.75) -- cycle;
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname pighookbelly\endcsname
@@ -136,12 +151,12 @@
%
% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifpig@back
- \pig@part@draw[\pig@body] (-0.2402, 0.9823) .. controls (-0.2994, 1.0582) and (-0.3721, 1.0651) .. (-0.4024, 0.9978) .. controls (-0.4327, 0.9305) and (-0.4092, 0.8145) .. (-0.35, 0.7386) .. controls (-0.3311, 0.7145) and (-0.3101, 0.6964) .. (-0.289, 0.6862) .. controls (-0.2755, 0.7023) and (-0.2498, 0.7563) .. (-0.2498, 0.7563) .. controls (-0.2498, 0.7563) and (-0.1790, 0.731) .. (-0.1611, 0.746) .. controls (-0.1611, 0.746) and (-0.1809, 0.9064) .. (-0.2402, 0.9823) -- cycle;
- \pig@part@draw[\pig@body] (0.2402, 0.9823) .. controls (0.2994, 1.0582) and (0.3721, 1.0651) .. (0.4024, 0.9978) .. controls (0.4327, 0.9305) and (0.4092, 0.8145) .. (0.35, 0.7386) .. controls (0.3311, 0.7145) and (0.3101, 0.6964) .. (0.289, 0.6862) .. controls (0.2755, 0.7023) and (0.2498, 0.7563) .. (0.2498, 0.7563) .. controls (0.2498, 0.7563) and (0.1790, 0.731) .. (0.1611, 0.746) .. controls (0.1611, 0.746) and (0.1809, 0.9064) .. (0.2402, 0.9823) -- cycle;
+ \pig@part@draw[pig@bodysat22] (-0.2402, 0.9823) .. controls (-0.2994, 1.0582) and (-0.3721, 1.0651) .. (-0.4024, 0.9978) .. controls (-0.4327, 0.9305) and (-0.4092, 0.8145) .. (-0.35, 0.7386) .. controls (-0.3311, 0.7145) and (-0.3101, 0.6964) .. (-0.289, 0.6862) .. controls (-0.2755, 0.7023) and (-0.2498, 0.7563) .. (-0.2498, 0.7563) .. controls (-0.2498, 0.7563) and (-0.1790, 0.731) .. (-0.1611, 0.746) .. controls (-0.1611, 0.746) and (-0.1809, 0.9064) .. (-0.2402, 0.9823) -- cycle;
+ \pig@part@draw[pig@bodysat22] (0.2402, 0.9823) .. controls (0.2994, 1.0582) and (0.3721, 1.0651) .. (0.4024, 0.9978) .. controls (0.4327, 0.9305) and (0.4092, 0.8145) .. (0.35, 0.7386) .. controls (0.3311, 0.7145) and (0.3101, 0.6964) .. (0.289, 0.6862) .. controls (0.2755, 0.7023) and (0.2498, 0.7563) .. (0.2498, 0.7563) .. controls (0.2498, 0.7563) and (0.1790, 0.731) .. (0.1611, 0.746) .. controls (0.1611, 0.746) and (0.1809, 0.9064) .. (0.2402, 0.9823) -- cycle;
\fi% back
%
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \pig@part@draw[\pig@body!55!white] (0,1.64) ellipse[x radius=.5, y radius=.5];
+ \pig@part@draw[\pig@body] (0,1.64) ellipse[x radius=.5, y radius=.5];
%
% Show details only from the front %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifpig@back
@@ -151,28 +166,32 @@
\pig@part@draw[\pig@eye] ( 0.09, 1.82) circle[radius=0.02];
%
% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \pig@part@draw[\pig@body] (0, 1.62) ellipse[x radius=0.18, y radius=0.14];
+ \pig@part@draw[pig@bodysat22] (0, 1.62) ellipse[x radius=0.18, y radius=0.14];
\pig@part@draw[gray] (-0.06, 1.62) circle[radius=0.035];
\pig@part@draw[gray] ( 0.06, 1.62) circle[radius=0.035];
%
% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \draw[\pig@mouth,line width=\scalingfactor*0.4pt] (0.105, 1.46) arc [start angle=-50, end angle=-130, radius=0.16] ;
+ \ifpig@openmouth
+ \filldraw[\pig@mouth,line width=\scalingfactor*0.4pt] (0.105, 1.46) arc [start angle=-50, end angle=-130, radius=0.16];
+ \else
+ \draw[\pig@mouth,line width=\scalingfactor*0.4pt] (0.105, 1.46) arc [start angle=-50, end angle=-130, radius=0.16];
+ \fi
%
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \pig@part@draw[\pig@body] (0.3216,0.15) arc (-15:195:0.12) -- (0.16,0.15) to [bend left] (0.25,0.15) -- cycle;
- \pig@part@draw[\pig@body] (-0.3216,0.15) arc (195:-15:0.12) -- (-0.16,0.15) to[bend right] (-0.25,0.15) --cycle;
+ \pig@part@draw[pig@bodysat22] (0.3216,0.15) arc (-15:195:0.12) -- (0.16,0.15) to [bend left] (0.25,0.15) -- cycle;
+ \pig@part@draw[pig@bodysat22] (-0.3216,0.15) arc (195:-15:0.12) -- (-0.16,0.15) to[bend right] (-0.25,0.15) --cycle;
%
\fi% back
%
% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \pig@part@draw[\pig@body] (0.22, 2.0392) .. controls (0.22, 2.1584) and (0.49460, 2.255) .. (0.49460, 2.255) .. controls (0.49460, 2.255) and (0.5300, 1.86) .. (0.3721, 1.86) .. controls (0.2891, 1.86) and (0.22, 1.9201) .. (0.22, 2.0392) -- cycle;
- \pig@part@draw[\pig@body!55!white] (0.22, 2.0392) .. controls (0.26, 2.1584) and (0.47, 2.22) .. (0.47, 2.20) .. controls (0.47, 2.2) and (0.49, 1.9) .. (0.3721, 1.9) .. controls (0.2891, 1.88) and (0.22, 1.88) .. (0.22, 2.0392) -- cycle;
- \pig@part@draw[\pig@body] (-0.22, 2.0392) .. controls (-0.22, 2.1584) and (-0.49460, 2.255) .. (-0.49460, 2.255) .. controls (-0.49460, 2.255) and (-0.5300, 1.86) .. (-0.3721, 1.86) .. controls (-0.2891, 1.86) and (-0.22, 1.9201) .. (-0.22, 2.0392) -- cycle;
- \pig@part@draw[\pig@body!55!white] (-0.22, 2.0392) .. controls (-0.26, 2.1584) and (-0.47, 2.22) .. (-0.47, 2.20) .. controls (-0.47, 2.2) and (-0.49, 1.9) .. (-0.3721, 1.9) .. controls (-0.2891, 1.88) and (-0.22, 1.88) .. (-0.22, 2.0392) -- cycle;
- %
+ \pig@part@draw[pig@bodysat22] (0.22, 2.0392) .. controls (0.22, 2.1584) and (0.49460, 2.255) .. (0.49460, 2.255) .. controls (0.49460, 2.255) and (0.5300, 1.86) .. (0.3721, 1.86) .. controls (0.2891, 1.86) and (0.22, 1.9201) .. (0.22, 2.0392) -- cycle;
+ \pig@part@draw[\pig@body] (0.22, 2.0392) .. controls (0.26, 2.1584) and (0.47, 2.22) .. (0.47, 2.20) .. controls (0.47, 2.2) and (0.49, 1.9) .. (0.3721, 1.9) .. controls (0.2891, 1.88) and (0.22, 1.88) .. (0.22, 2.0392) -- cycle;
+ \pig@part@draw[pig@bodysat22] (-0.22, 2.0392) .. controls (-0.22, 2.1584) and (-0.49460, 2.255) .. (-0.49460, 2.255) .. controls (-0.49460, 2.255) and (-0.5300, 1.86) .. (-0.3721, 1.86) .. controls (-0.2891, 1.86) and (-0.22, 1.9201) .. (-0.22, 2.0392) -- cycle;
+ \pig@part@draw[\pig@body] (-0.22, 2.0392) .. controls (-0.26, 2.1584) and (-0.47, 2.22) .. (-0.47, 2.20) .. controls (-0.47, 2.2) and (-0.49, 1.9) .. (-0.3721, 1.9) .. controls (-0.2891, 1.88) and (-0.22, 1.88) .. (-0.22, 2.0392) -- cycle;
+ %
% Tail if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifpig@back
- \draw[\pig@tail,line width=\scalingfactor*0.8pt] (0.8431, 0.583) .. controls (0.8609, 0.4063) and (0.7006, 0.361) .. (0.6384, 0.4293) .. controls (0.5762, 0.4976) and (0.5613, 0.6052) .. (0.6551, 0.629) .. controls (0.7537, 0.6541) and (0.7759, 0.5628) .. (0.7455, 0.4948) .. controls (0.6412, 0.2697) and (0.3543, 0.356) .. (0.2638, 0.4238) .. controls (0.1967, 0.4779) and (0.1788, 0.6076) .. (0.3192, 0.633) .. controls (0.6000, 0.6836) and (0.5130, 0.3048) .. (0.2098, 0.3322) .. controls (0.0809, 0.3438) and (0.0809, 0.5236) .. (0.0809, 0.5236);
+ \draw[\pig@tail,line width=\scalingfactor*0.8pt] (0.8431, 0.583) .. controls (0.8609, 0.4063) and (0.7006, 0.361) .. (0.6384, 0.4293) .. controls (0.5762, 0.4976) and (0.5613, 0.6052) .. (0.6551, 0.629) .. controls (0.7537, 0.6541) and (0.7759, 0.5628) .. (0.7455, 0.4948) .. controls (0.6412, 0.2697) and (0.3543, 0.356) .. (0.2638, 0.4238) .. controls (0.1967, 0.4779) and (0.1788, 0.6076) .. (0.3192, 0.633) .. controls (0.6000, 0.6836) and (0.5130, 0.3048) .. (0.2098, 0.3322) .. controls (0.0809, 0.3438) and (0.0809, 0.5236) .. (0.0809, 0.5236);
\fi% back
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -193,47 +212,52 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-pigs}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-pigs}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic pig}}
%\pig
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic pig can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\pig[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\pig[eye=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Tail colour}}
%\pig[tail=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Mouth colour}}
%\pig[mouth=red]
%\end{tcblisting}
%
+% The pig can open its mouth:
+%\begin{tcblisting}{title={Open mouth}}
+%\pig[openmouth]
+%\end{tcblisting}
+%
%To view the pig from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\pig[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the pig 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the pig 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\pig[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\pig[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-rhinos.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-rhinos.sty
index 5ce10d34be2..47f868b0b71 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-rhinos.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-rhinos.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-rhinos}[2022/06/17 version v1.0 Drawing rhinos in TikZ]
+\ProvidesPackage{tikzlings-rhinos}[2025/01/05 version v2.2 Drawing rhinos in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -26,12 +26,13 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname rhinohookforeground\endcsname
\csname tikzlinghookforeground\endcsname
- %
+ %
}
\newif\ifrhino@threeD
\newif\ifrhino@back
\newif\ifrhino@contour
+\newif\ifrhino@openmouth
\tikzset{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -47,34 +48,38 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
body/.store in = \rhino@body,
- body = gray,
+ body = gray!55!white,
toes/.store in = \rhino@toes,
- toes = \rhino@body!55!white,
+ toes = \rhino@body,
eye/.store in = \rhino@eye,
- eye = white,
+ eye = white,
pupil/.store in = \rhino@pupil,
- pupil = black,
+ pupil = black,
mouth/.store in = \rhino@mouth,
- mouth = \rhino@body!70!black,
+ mouth = \rhino@body!50!black,
+ horn/.store in = \rhino@horn,
+ horn = white!95!yellow,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ openmouth/.code = \rhino@openmouthtrue,
+ open mouth/.forward to = /rhino/openmouth,
3D/.code = \rhino@threeDtrue
- \def\rhino@mouth{black},
- back/.code = \rhino@backtrue,
+ \def\rhino@mouth{black},
+ back/.code = \rhino@backtrue,
contour/.code = \rhino@contourtrue
\def\rhino@contour{#1}
\def\rhino@mouth{#1},
- contour/.default = black,
- outline/.forward to = /rhino/contour,
+ contour/.default = black,
+ outline/.forward to = /rhino/contour,
}
\def\rhino@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.625,0.1) rectangle (0.625, 2.17);
@@ -91,7 +96,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -109,7 +114,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -117,25 +122,22 @@
\csname tikzlinghookbackground\endcsname
%
% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \rhino@part@draw[\rhino@body] (-0.1772, 2.0686) .. controls (-0.2057, 2.1602) and (-0.3552, 2.2076) .. (-0.3552, 2.1922) .. controls (-0.3552, 2.1922) and (-0.3694, 1.9615) .. (-0.2855, 1.9615) .. controls (-0.2264, 1.9462) and (-0.1772, 1.9462) .. (-0.1772, 2.0686) -- cycle;
- \rhino@part@draw[\rhino@body] (0.1772, 2.0686) .. controls (0.2057, 2.1602) and (0.3552, 2.2076) .. (0.3552, 2.1922) .. controls (0.3552, 2.1922) and (0.3694, 1.9615) .. (0.2855, 1.9615) .. controls (0.2264, 1.9462) and (0.1772, 1.9462) .. (0.1772, 2.0686) -- cycle;
+ \rhino@part@draw[\rhino@body!70!black] (-0.1772, 2.0686) .. controls (-0.2057, 2.1602) and (-0.3552, 2.2076) .. (-0.3552, 2.1922) .. controls (-0.3552, 2.1922) and (-0.3694, 1.9615) .. (-0.2855, 1.9615) .. controls (-0.2264, 1.9462) and (-0.1772, 1.9462) .. (-0.1772, 2.0686) -- cycle;
+ \rhino@part@draw[\rhino@body!70!black] (0.1772, 2.0686) .. controls (0.2057, 2.1602) and (0.3552, 2.2076) .. (0.3552, 2.1922) .. controls (0.3552, 2.1922) and (0.3694, 1.9615) .. (0.2855, 1.9615) .. controls (0.2264, 1.9462) and (0.1772, 1.9462) .. (0.1772, 2.0686) -- cycle;
%
% Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifrhino@back
- \begin{scope}
- \clip (-0.5,0.4) rectangle (0.5,0.13);
- \rhino@part@draw[\rhino@body] (-0.25,0.15) ellipse[x radius=0.16, y radius=0.17];
- \rhino@part@draw[\rhino@body] (0.25,0.15) ellipse[x radius=0.16, y radius=0.17];
- \end{scope}
+ \rhino@part@draw[\rhino@body!70!black] (-0.08,0.13) arc [start angle=0, end angle=180, x radius=0.17, y radius=0.19] -- cycle;
+ \rhino@part@draw[\rhino@body!70!black](0.08,0.13) arc [start angle=180, end angle=0, x radius=0.17, y radius=0.19] -- cycle;
\fi% back
%
% Nose if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifrhino@back
- \rhino@part@draw[\rhino@body!80!white] (0, 1.55) ellipse[x radius=0.36, y radius=0.2];
+ \rhino@part@draw[\rhino@body!83!black] (0, 1.55) ellipse[x radius=0.36, y radius=0.2];
\fi% back
%
% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \rhino@part@draw[\rhino@body!55!white] ( 0.55, 0.8 ) .. controls ( 0.55 , 0.4) and ( 0.35, 0.19) .. ( 0.0, 0.19) .. controls (-0.35, 0.19) and (-0.55 , 0.4) .. (-0.55, 0.8 ) .. controls (-0.55 , 1.3) and (-0.35, 1.65) .. ( 0.0, 1.65) .. controls ( 0.35, 1.65) and ( 0.55 , 1.3) .. ( 0.55, 0.75) -- cycle;
+ \rhino@part@draw[\rhino@body] ( 0.55, 0.8 ) .. controls ( 0.55 , 0.4) and ( 0.35, 0.19) .. ( 0.0, 0.19) .. controls (-0.35, 0.19) and (-0.55 , 0.4) .. (-0.55, 0.8 ) .. controls (-0.55 , 1.3) and (-0.35, 1.65) .. ( 0.0, 1.65) .. controls ( 0.35, 1.65) and ( 0.55 , 1.3) .. ( 0.55, 0.75) -- cycle;
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname rhinohookbelly\endcsname
@@ -143,12 +145,12 @@
%
% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifrhino@back
- \rhino@part@draw[\rhino@body] (0.3,1.0) ellipse[x radius=0.24, y radius=0.13, rotate=90];
- \rhino@part@draw[\rhino@body] (-0.3,1.0) ellipse[x radius=0.24, y radius=0.13, rotate=-90];
+ \rhino@part@draw[\rhino@body!70!black] (0.3,1.0) ellipse[x radius=0.24, y radius=0.13, rotate=90];
+ \rhino@part@draw[\rhino@body!70!black] (-0.3,1.0) ellipse[x radius=0.24, y radius=0.13, rotate=-90];
\fi% back
%
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \rhino@part@draw[\rhino@body!55!white] (0, 1.76) circle[radius=0.36];
+ \rhino@part@draw[\rhino@body] (0, 1.76) circle[radius=0.36];
%
% Show details only from the front %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifrhino@back
@@ -167,26 +169,27 @@
\fi% contour
%
% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \rhino@part@draw[\rhino@body!80!white] (0, 1.55) ellipse[x radius=0.36, y radius=0.2];
+ \rhino@part@draw[\rhino@body!83!black] (0, 1.55) ellipse[x radius=0.36, y radius=0.2];
%
% Horn %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \rhino@part@draw[white!95!yellow] (0, 1.7911) .. controls (-0.0231, 1.7372) and (-0.0463, 1.6832) .. (-0.0642, 1.6274) .. controls (-0.0687, 1.6132) and (-0.0724, 1.5981) .. (-0.0678, 1.5834) .. controls (-0.0603, 1.552) and (-0.0287, 1.5287) .. (0, 1.531) .. controls (0.0287, 1.5287) and (0.0603, 1.552) .. (0.0678, 1.5834) .. controls (0.0724, 1.5981) and (0.0687, 1.6132) .. (0.0642, 1.6274) .. controls (0.0463, 1.6832) and (0.0231, 1.7372) .. (0, 1.7911) -- cycle;
+ \rhino@part@draw[\rhino@horn] (0, 1.7911) .. controls (-0.0231, 1.7372) and (-0.0463, 1.6832) .. (-0.0642, 1.6274) .. controls (-0.0687, 1.6132) and (-0.0724, 1.5981) .. (-0.0678, 1.5834) .. controls (-0.0603, 1.552) and (-0.0287, 1.5287) .. (0, 1.531) .. controls (0.0287, 1.5287) and (0.0603, 1.552) .. (0.0678, 1.5834) .. controls (0.0724, 1.5981) and (0.0687, 1.6132) .. (0.0642, 1.6274) .. controls (0.0463, 1.6832) and (0.0231, 1.7372) .. (0, 1.7911) -- cycle;
%
% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \draw[\rhino@mouth,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2] ;
+ \ifrhino@openmouth
+ \filldraw[\rhino@mouth,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2];
+ \else
+ \draw[\rhino@mouth,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2];
+ \fi
%
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \begin{scope}
- \clip (-0.5,0.4) rectangle (0.5,0.13);
- \rhino@part@draw[\rhino@body] (-0.25,0.15) ellipse[x radius=0.16, y radius=0.17];
- \rhino@part@draw[\rhino@body] (0.25,0.15) ellipse[x radius=0.16, y radius=0.17];
- \rhino@part@draw[\rhino@toes] (0.25,0.13) ellipse[x radius=0.05, y radius=0.1];
- \rhino@part@draw[\rhino@toes] (0.13,0.11) ellipse[x radius=0.05, y radius=0.1];
- \rhino@part@draw[\rhino@toes] (0.37,0.11) ellipse[x radius=0.05, y radius=0.1];
- \rhino@part@draw[\rhino@toes] (-0.25,0.13) ellipse[x radius=0.05, y radius=0.1];
- \rhino@part@draw[\rhino@toes] (-0.13,0.11) ellipse[x radius=0.05, y radius=0.1];
- \rhino@part@draw[\rhino@toes] (-0.37,0.11) ellipse[x radius=0.05, y radius=0.1];
- \end{scope}
+ \rhino@part@draw[\rhino@body!70!black] (-0.08,0.13) arc [start angle=0, end angle=180, x radius=0.17, y radius=0.19] -- cycle;
+ \rhino@part@draw[\rhino@toes] (-0.08,0.13) arc [start angle=0, end angle=180, x radius=0.05, y radius=0.08] -- cycle;
+ \rhino@part@draw[\rhino@toes] (-0.2,0.13) arc [start angle=0, end angle=180, x radius=0.05, y radius=0.1] -- cycle;
+ \rhino@part@draw[\rhino@toes] (-0.32,0.13) arc [start angle=0, end angle=180, x radius=0.05, y radius=0.08] -- cycle;
+ \rhino@part@draw[\rhino@body!70!black](0.08,0.13) arc [start angle=180, end angle=0, x radius=0.17, y radius=0.19] -- cycle;
+ \rhino@part@draw[\rhino@toes] (0.08,0.13) arc [start angle=180, end angle=0, x radius=0.05, y radius=0.08] -- cycle;
+ \rhino@part@draw[\rhino@toes] (0.2,0.13) arc [start angle=180, end angle=0, x radius=0.05, y radius=0.1] -- cycle;
+ \rhino@part@draw[\rhino@toes] (0.32,0.13) arc [start angle=180, end angle=0, x radius=0.05, y radius=0.08] -- cycle;
%
\fi% back
%
@@ -208,52 +211,60 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-rhinos}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-rhinos}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic rhino}}
%\rhino
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic rhino can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\rhino[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\rhino[eye=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Pupil colour}}
%\rhino[pupil=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Mouth colour}}
%\rhino[mouth=red]
%\end{tcblisting}
+%\begin{tcblisting}{title={Horn colour}}
+%\rhino[horn=red]
+%\end{tcblisting}
+%
+% The rhino can open its mouth:
+%\begin{tcblisting}{title={Open mouth}}
+%\rhino[openmouth]
+%\end{tcblisting}
%
%The hippo can also do its nails:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Toe colour}}
%\rhino[toes=red]
%\end{tcblisting}
%
%To view the rhino from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\rhino[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the rhino 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the rhino 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\rhino[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\rhino[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-sheep.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-sheep.sty
index 5c8cd7e6bc3..c412796adc6 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-sheep.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-sheep.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-sheep}[2022/06/17 version v1.0 Drawing sheep in TikZ]
+\ProvidesPackage{tikzlings-sheep}[2025/01/05 version v2.2 Drawing sheep in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -52,11 +52,11 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
body/.store in = \sheep@body,
- body = brown!50!darkgray!97!yellow,
+ body = brown!50!darkgray!97!yellow!50!darkgray,
eye/.store in = \sheep@eye,
- eye = \sheep@body!50!black,
+ eye = sheep@bright!50!black,
nose/.store in = \sheep@nose,
- nose = \sheep@body!50!black,
+ nose = sheep@bright!50!black,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% options
@@ -64,22 +64,22 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
blush/.code = \sheep@blushtrue
\def\sheep@blushcolor{#1},
- blush/.default = red,
+ blush/.default = red,
monocle/.code = \sheep@monocletrue,
- 3D/.code = \sheep@threeDtrue,
- back/.code = \sheep@backtrue,
+ 3D/.code = \sheep@threeDtrue,
+ back/.code = \sheep@backtrue,
contour/.code = \sheep@contourtrue
\def\sheep@contour{#1}
\def\sheep@blushcolor{#1}
\def\sheep@nose{#1},
- contour/.default = black,
- outline/.forward to = /sheep/contour,
+ contour/.default = black,
+ outline/.forward to = /sheep/contour,
}
\def\sheep@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.7,0.08) rectangle (0.7,2.33);
@@ -94,9 +94,10 @@
\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))*sqrt(abs((\pgf@xx/1cm)*(\pgf@yy/1cm)-(\pgf@xy/1cm)*(\pgf@yx/1cm)))}%
\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+ \pgfmathsetmacro{\decoscalefactor}{sign(\tmpscaleA)*sign(\tmpscaleD)*\scalingfactor}%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -113,28 +114,40 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
+ % generating saturated/brighter version of body colour
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \extractcolorspecs{\sheep@body}{\sheep@model}{\sheep@colorspec}
+ \convertcolorspec{\sheep@model}{\sheep@colorspec}{hsb}{\sheep@hsbcolorspec}
+ \pgfmathsetmacro{\sheep@hue}{(array({\sheep@hsbcolorspec},0))}
+ \pgfmathsetmacro{\sheep@sat}{(array({\sheep@hsbcolorspec},1))}
+ \pgfmathsetmacro{\sheep@bright}{(array({\sheep@hsbcolorspec},2))+0.1}
+ \definecolor{sheep@bright}{hsb}{\sheep@hue,\sheep@sat,\sheep@bright}
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname sheephookbackground\endcsname
\csname tikzlinghookbackground\endcsname
- %
+ %
% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \sheep@part@draw[\sheep@body] (0.22, 2.0392) .. controls (0.22, 2.1584) and (0.49460, 2.255) .. (0.49460, 2.255) .. controls (0.49460, 2.255) and (0.5300, 1.86) .. (0.3721, 1.86) .. controls (0.2891, 1.86) and (0.22, 1.9201) .. (0.22, 2.0392) -- cycle;
- \sheep@part@draw[\sheep@body!55!white] (0.22, 2.0392) .. controls (0.26, 2.1584) and (0.47, 2.22) .. (0.47, 2.20) .. controls (0.47, 2.2) and (0.49, 1.9) .. (0.3721, 1.9) .. controls (0.2891, 1.88) and (0.22, 1.88) .. (0.22, 2.0392) -- cycle;
- \sheep@part@draw[\sheep@body] (-0.22, 2.0392) .. controls (-0.22, 2.1584) and (-0.49460, 2.255) .. (-0.49460, 2.255) .. controls (-0.49460, 2.255) and (-0.5300, 1.86) .. (-0.3721, 1.86) .. controls (-0.2891, 1.86) and (-0.22, 1.9201) .. (-0.22, 2.0392) -- cycle;
- \sheep@part@draw[\sheep@body!55!white] (-0.22, 2.0392) .. controls (-0.26, 2.1584) and (-0.47, 2.22) .. (-0.47, 2.20) .. controls (-0.47, 2.2) and (-0.49, 1.9) .. (-0.3721, 1.9) .. controls (-0.2891, 1.88) and (-0.22, 1.88) .. (-0.22, 2.0392) -- cycle;
- %
+ \sheep@part@draw[sheep@bright] (0.22, 2.0392) .. controls (0.22, 2.1584) and (0.49460, 2.255) .. (0.49460, 2.255) .. controls (0.49460, 2.255) and (0.5300, 1.86) .. (0.3721, 1.86) .. controls (0.2891, 1.86) and (0.22, 1.9201) .. (0.22, 2.0392) -- cycle;
+ \sheep@part@draw[sheep@bright!55!white] (0.22, 2.0392) .. controls (0.26, 2.1584) and (0.47, 2.22) .. (0.47, 2.20) .. controls (0.47, 2.2) and (0.49, 1.9) .. (0.3721, 1.9) .. controls (0.2891, 1.88) and (0.22, 1.88) .. (0.22, 2.0392) -- cycle;
+ \sheep@part@draw[sheep@bright] (-0.22, 2.0392) .. controls (-0.22, 2.1584) and (-0.49460, 2.255) .. (-0.49460, 2.255) .. controls (-0.49460, 2.255) and (-0.5300, 1.86) .. (-0.3721, 1.86) .. controls (-0.2891, 1.86) and (-0.22, 1.9201) .. (-0.22, 2.0392) -- cycle;
+ \sheep@part@draw[sheep@bright!55!white] (-0.22, 2.0392) .. controls (-0.26, 2.1584) and (-0.47, 2.22) .. (-0.47, 2.20) .. controls (-0.47, 2.2) and (-0.49, 1.9) .. (-0.3721, 1.9) .. controls (-0.2891, 1.88) and (-0.22, 1.88) .. (-0.22, 2.0392) -- cycle;
+ %
% Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifsheep@back
- \sheep@part@draw[\sheep@body] (0.3216,0.15) arc (-15:195:0.12) -- (0.16,0.15) to [bend left] (0.25,0.15) -- cycle;
- \sheep@part@draw[\sheep@body] (-0.3216,0.15) arc (195:-15:0.12) -- (-0.16,0.15) to[bend right] (-0.25,0.15) --cycle;
+ \sheep@part@draw[sheep@bright] (0.3216,0.15) arc (-15:195:0.12) -- (0.16,0.15) to [bend left] (0.25,0.15) -- cycle;
+ \sheep@part@draw[sheep@bright] (-0.3216,0.15) arc (195:-15:0.12) -- (-0.16,0.15) to[bend right] (-0.25,0.15) --cycle;
\fi% back
%
% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \sheep@part@draw[\sheep@body!50!darkgray,decorate,decoration={bumps,amplitude=\scalingfactor*2.5pt,segment length=\scalingfactor*10pt}] (0.595, 0.92) .. controls (0.595, 0.26) and (0.355, 0.18) .. (0, 0.18) .. controls (-0.355, 0.18) and (-0.595, 0.26) .. (-0.595, 0.92) .. controls (-0.605, 1.58) and (-0.335, 2.11) .. (0, 2.11) .. controls (0.335, 2.11) and (0.605, 1.58) .. (0.595, 0.92) -- cycle;
+ \sheep@part@draw[\sheep@body,decorate,decoration={bumps,amplitude=\decoscalefactor*2.5pt,segment length=\scalingfactor*10pt}] (0.595, 0.92) .. controls (0.595, 0.26) and (0.355, 0.18) .. (0, 0.18) .. controls (-0.355, 0.18) and (-0.595, 0.26) .. (-0.595, 0.92) .. controls (-0.605, 1.58) and (-0.335, 2.11) .. (0, 2.11) .. controls (0.335, 2.11) and (0.605, 1.58) .. (0.595, 0.92) -- cycle;
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname sheephookbelly\endcsname
@@ -142,30 +155,30 @@
%
% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifsheep@back
- \sheep@part@draw[\sheep@body!45!white!95!orange] (-0.2402, 0.9823) .. controls (-0.2994, 1.0582) and (-0.3721, 1.0651) .. (-0.4024, 0.9978) .. controls (-0.4327, 0.9305) and (-0.4092, 0.8145) .. (-0.35, 0.7386) .. controls (-0.3311, 0.7145) and (-0.3101, 0.6964) .. (-0.289, 0.6862) .. controls (-0.2755, 0.7023) and (-0.2498, 0.7563) .. (-0.2498, 0.7563) .. controls (-0.2498, 0.7563) and (-0.1790, 0.731) .. (-0.1611, 0.746) .. controls (-0.1611, 0.746) and (-0.1809, 0.9064) .. (-0.2402, 0.9823) -- cycle;
- \sheep@part@draw[\sheep@body!45!white!95!orange] (0.2402, 0.9823) .. controls (0.2994, 1.0582) and (0.3721, 1.0651) .. (0.4024, 0.9978) .. controls (0.4327, 0.9305) and (0.4092, 0.8145) .. (0.35, 0.7386) .. controls (0.3311, 0.7145) and (0.3101, 0.6964) .. (0.289, 0.6862) .. controls (0.2755, 0.7023) and (0.2498, 0.7563) .. (0.2498, 0.7563) .. controls (0.2498, 0.7563) and (0.1790, 0.731) .. (0.1611, 0.746) .. controls (0.1611, 0.746) and (0.1809, 0.9064) .. (0.2402, 0.9823) -- cycle;
+ \sheep@part@draw[sheep@bright!45!white!95!orange] (-0.2402, 0.9823) .. controls (-0.2994, 1.0582) and (-0.3721, 1.0651) .. (-0.4024, 0.9978) .. controls (-0.4327, 0.9305) and (-0.4092, 0.8145) .. (-0.35, 0.7386) .. controls (-0.3311, 0.7145) and (-0.3101, 0.6964) .. (-0.289, 0.6862) .. controls (-0.2755, 0.7023) and (-0.2498, 0.7563) .. (-0.2498, 0.7563) .. controls (-0.2498, 0.7563) and (-0.1790, 0.731) .. (-0.1611, 0.746) .. controls (-0.1611, 0.746) and (-0.1809, 0.9064) .. (-0.2402, 0.9823) -- cycle;
+ \sheep@part@draw[sheep@bright!45!white!95!orange] (0.2402, 0.9823) .. controls (0.2994, 1.0582) and (0.3721, 1.0651) .. (0.4024, 0.9978) .. controls (0.4327, 0.9305) and (0.4092, 0.8145) .. (0.35, 0.7386) .. controls (0.3311, 0.7145) and (0.3101, 0.6964) .. (0.289, 0.6862) .. controls (0.2755, 0.7023) and (0.2498, 0.7563) .. (0.2498, 0.7563) .. controls (0.2498, 0.7563) and (0.1790, 0.731) .. (0.1611, 0.746) .. controls (0.1611, 0.746) and (0.1809, 0.9064) .. (0.2402, 0.9823) -- cycle;
\fi% back
%
% Hair %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \sheep@part@draw[\sheep@body!50!darkgray,decorate,decoration={bumps,amplitude=\scalingfactor*2.5pt,segment length=\scalingfactor*10pt}] (-0.275,1.98) -- (-0.2,2.2) -- (-0.008,2.2) -- (0.2,2.2) -- (0.275,1.98) -- cycle;
+ \sheep@part@draw[\sheep@body,decorate,decoration={bumps,amplitude=\decoscalefactor*2.5pt,segment length=\scalingfactor*10pt}] (-0.275,1.98) -- (-0.2,2.2) -- (-0.008,2.2) -- (0.2,2.2) -- (0.275,1.98) -- cycle;
%
% Tail if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifsheep@back
- \sheep@part@draw[\sheep@body!45!white!95!orange,rounded corners=\scalingfactor*0.1pt] (0,0.7) -- (0.08, 0.3236) arc (0:-180:\scalingfactor*2pt) -- cycle;
+ \sheep@part@draw[sheep@bright!45!white!95!orange,rounded corners=\scalingfactor*0.1pt] (0,0.7) -- (0.08, 0.3236) arc (0:-180:\scalingfactor*2pt) -- cycle;
\fi% back
%
% Show details only from the front %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifsheep@back
%
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \sheep@part@draw[\sheep@body!45!white!95!orange] (0.4, 1.8) .. controls (0.4, 1.5) and (0.2, 1.25) .. (0, 1.16) .. controls (-0.2, 1.25) and (-0.4, 1.5) .. (-0.4, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) .. (0.4, 1.8) -- cycle;
+ \sheep@part@draw[sheep@bright!45!white!95!orange] (0.4, 1.8) .. controls (0.4, 1.5) and (0.2, 1.25) .. (0, 1.16) .. controls (-0.2, 1.25) and (-0.4, 1.5) .. (-0.4, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) .. (0.4, 1.8) -- cycle;
%
% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \sheep@part@draw[\sheep@body] (0.22, 2.0392) .. controls (0.22, 2.1584) and (0.49460, 2.255) .. (0.49460, 2.255) .. controls (0.49460, 2.255) and (0.5300, 1.86) .. (0.3721, 1.86) .. controls (0.2891, 1.86) and (0.22, 1.9201) .. (0.22, 2.0392) -- cycle;
- \sheep@part@draw[\sheep@body!55!white] (0.22, 2.0392) .. controls (0.26, 2.1584) and (0.47, 2.22) .. (0.47, 2.20) .. controls (0.47, 2.2) and (0.49, 1.9) .. (0.3721, 1.9) .. controls (0.2891, 1.88) and (0.22, 1.88) .. (0.22, 2.0392) -- cycle;
- \sheep@part@draw[\sheep@body] (-0.22, 2.0392) .. controls (-0.22, 2.1584) and (-0.49460, 2.255) .. (-0.49460, 2.255) .. controls (-0.49460, 2.255) and (-0.5300, 1.86) .. (-0.3721, 1.86) .. controls (-0.2891, 1.86) and (-0.22, 1.9201) .. (-0.22, 2.0392) -- cycle;
- \sheep@part@draw[\sheep@body!55!white] (-0.22, 2.0392) .. controls (-0.26, 2.1584) and (-0.47, 2.22) .. (-0.47, 2.20) .. controls (-0.47, 2.2) and (-0.49, 1.9) .. (-0.3721, 1.9) .. controls (-0.2891, 1.88) and (-0.22, 1.88) .. (-0.22, 2.0392) -- cycle;
- %
+ \sheep@part@draw[sheep@bright] (0.22, 2.0392) .. controls (0.22, 2.1584) and (0.49460, 2.255) .. (0.49460, 2.255) .. controls (0.49460, 2.255) and (0.5300, 1.86) .. (0.3721, 1.86) .. controls (0.2891, 1.86) and (0.22, 1.9201) .. (0.22, 2.0392) -- cycle;
+ \sheep@part@draw[sheep@bright!55!white] (0.22, 2.0392) .. controls (0.26, 2.1584) and (0.47, 2.22) .. (0.47, 2.20) .. controls (0.47, 2.2) and (0.49, 1.9) .. (0.3721, 1.9) .. controls (0.2891, 1.88) and (0.22, 1.88) .. (0.22, 2.0392) -- cycle;
+ \sheep@part@draw[sheep@bright] (-0.22, 2.0392) .. controls (-0.22, 2.1584) and (-0.49460, 2.255) .. (-0.49460, 2.255) .. controls (-0.49460, 2.255) and (-0.5300, 1.86) .. (-0.3721, 1.86) .. controls (-0.2891, 1.86) and (-0.22, 1.9201) .. (-0.22, 2.0392) -- cycle;
+ \sheep@part@draw[sheep@bright!55!white] (-0.22, 2.0392) .. controls (-0.26, 2.1584) and (-0.47, 2.22) .. (-0.47, 2.20) .. controls (-0.47, 2.2) and (-0.49, 1.9) .. (-0.3721, 1.9) .. controls (-0.2891, 1.88) and (-0.22, 1.88) .. (-0.22, 2.0392) -- cycle;
+ %
% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifsheep@back
\sheep@part@draw[\sheep@eye] (0.2, 1.66) circle[radius=0.06];
@@ -176,15 +189,15 @@
\draw[\sheep@nose,line width=\scalingfactor*0.8pt,line cap=round] (0.16,1.43) arc [start angle=-30, end angle=-150, radius=0.185] (0.0,1.335) -- (0,1.175);
%
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \sheep@part@draw[\sheep@body!45!white!95!orange] (0.3216,0.13) arc (-15:195:0.10) -- (0.16,0.13) to [bend left] (0.25,0.13) -- cycle;
- \sheep@part@draw[\sheep@body!45!white!95!orange] (-0.3216,0.13) arc (195:-15:0.10) -- (-0.16,0.13) to[bend right] (-0.25,0.13) --cycle;
+ \sheep@part@draw[sheep@bright!45!white!95!orange] (0.3216,0.13) arc (-15:195:0.10) -- (0.16,0.13) to [bend left] (0.25,0.13) -- cycle;
+ \sheep@part@draw[sheep@bright!45!white!95!orange] (-0.3216,0.13) arc (195:-15:0.10) -- (-0.16,0.13) to[bend right] (-0.25,0.13) --cycle;
%
% Hair %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \sheep@part@draw[\sheep@body!50!darkgray,decorate,decoration={bumps,amplitude=\scalingfactor*2.5pt,segment length=\scalingfactor*10pt}] (-0.275,1.98) -- (-0.2,2.2) -- (-0.008,2.2) -- (0.2,2.2) -- (0.275,1.98) -- cycle;
+ \sheep@part@draw[\sheep@body,decorate,decoration={bumps,amplitude=\decoscalefactor*2.5pt,segment length=\scalingfactor*10pt}] (-0.275,1.98) -- (-0.2,2.2) -- (-0.008,2.2) -- (0.2,2.2) -- (0.275,1.98) -- cycle;
%
% Blush %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifsheep@blush
- \fill[\sheep@blushcolor,path fading=sheep@blush] (-0.25, 1.5) circle[radius=0.1];
+ \fill[\sheep@blushcolor,path fading=sheep@blush] (-0.25, 1.5) circle[radius=0.1];
\fill[\sheep@blushcolor,path fading=sheep@blush] (0.25, 1.5) circle[radius=0.1];
\fi% blush
%
@@ -199,7 +212,7 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname sheephookbody\endcsname
\csname tikzlinghookbody\endcsname
- %
+ %
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -214,54 +227,54 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-sheep}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-sheep}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic sheep}}
%\sheep
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic sheep can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\sheep[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\sheep[eye=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Nose colour}}
%\sheep[nose=red]
%\end{tcblisting}
%
%The sheep can also blush
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Blushing sheep}}
%\sheep[blush=red]
%\end{tcblisting}
%
%and put on a monocle
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Monocle}}
%\sheep[monocle]
%\end{tcblisting}
%
%To view the sheep from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\sheep[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the sheep 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the sheep 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\sheep[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\sheep[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-sloths.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-sloths.sty
index fc7658629dd..514fd727316 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-sloths.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-sloths.sty
@@ -9,15 +9,15 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-sloths}[2022/06/17 version v1.0 Drawing sloths in TikZ]
+\ProvidesPackage{tikzlings-sloths}[2025/01/05 version v2.2 Drawing sloths in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
-\definecolor{slothcol}{RGB}{168,156,123}
+\definecolor{slothcol}{RGB}{143,133,105}
\newcommand*{\sloth}[1][]{%
\begin{scope}%
@@ -28,13 +28,14 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname slothhookforeground\endcsname
\csname tikzlinghookforeground\endcsname
- %
+ %
}
\newif\ifsloth@sleeping
\newif\ifsloth@threeD
\newif\ifsloth@back
\newif\ifsloth@contour
+\newif\ifsloth@openmouth
\tikzset{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -52,31 +53,33 @@
body/.store in = \sloth@body,
body = slothcol,
eye/.store in = \sloth@eye,
- eye = black,
+ eye = black,
eyelid/.store in = \sloth@eyelid,
- eyelid = \sloth@body!50!white,
+ eyelid = sloth@bright10!50!white,
mouth/.store in = \sloth@mouth,
- mouth = \sloth@body!40!black,
+ mouth = sloth@bright10!40!black,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- sleeping/.code = \sloth@sleepingtrue,
- 3D/.code = \sloth@threeDtrue,
- back/.code = \sloth@backtrue,
+ sleeping/.code = \sloth@sleepingtrue,
+ openmouth/.code = \sloth@openmouthtrue,
+ open mouth/.forward to = /sloth/openmouth,
+ 3D/.code = \sloth@threeDtrue,
+ back/.code = \sloth@backtrue,
contour/.code = \sloth@contourtrue
\def\sloth@contour{#1}
\def\sloth@mouth{#1}
\def\sloth@eyelid{#1},
- contour/.default = black,
- outline/.forward to = /sloth/contour,
+ contour/.default = black,
+ outline/.forward to = /sloth/contour,
}
\def\sloth@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.7,0.12) rectangle (0.7, 2.27);
@@ -93,7 +96,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -110,8 +113,20 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
+ % generating saturated/brighter version of body colour
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \extractcolorspecs{\sloth@body}{\sloth@model}{\sloth@colorspec}
+ \convertcolorspec{\sloth@model}{\sloth@colorspec}{hsb}{\sloth@hsbcolorspec}
+ \pgfmathsetmacro{\sloth@hue}{(array({\sloth@hsbcolorspec},0))}
+ \pgfmathsetmacro{\sloth@sat}{(array({\sloth@hsbcolorspec},1))}
+ \pgfmathsetmacro{\sloth@bright}{(array({\sloth@hsbcolorspec},2))+0.1}
+ \definecolor{sloth@bright10}{hsb}{\sloth@hue,\sloth@sat,\sloth@bright}
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -120,29 +135,28 @@
%
% Arms if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifsloth@back
- \sloth@part@draw[\sloth@body] (0.53,0.95) ellipse[x radius=0.1, y radius=0.27, rotate=10];
- \sloth@part@draw[\sloth@body] (-0.53,0.95) ellipse[x radius=0.1, y radius=0.27, rotate=-10];
+ \sloth@part@draw[sloth@bright10] (0.53,0.95) ellipse[x radius=0.1, y radius=0.27, rotate=10];
+ \sloth@part@draw[sloth@bright10] (-0.53,0.95) ellipse[x radius=0.1, y radius=0.27, rotate=-10];
\fi% back
%
% Feet if back%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifsloth@back
- \fill[\sloth@body!50!black] (-0.125,0.265) ellipse[x radius=0.07, y radius=0.019,rotate=-10];
- \fill[\sloth@body!50!black] (-0.14,0.21) ellipse[x radius=0.07, y radius=0.017, rotate=-16];
- \fill[\sloth@body!50!black] (-0.16,0.165) ellipse[x radius=0.07, y radius=0.015, rotate=-22];
- \fill[\sloth@body!50!black] (0.125,0.265) ellipse[x radius=0.07, y radius=0.019, rotate=10];
- \fill[\sloth@body!50!black] (0.14,0.21) ellipse[x radius=0.07, y radius=0.017, rotate=16];
- \fill[\sloth@body!50!black] (0.16,0.165) ellipse[x radius=0.07, y radius=0.015, rotate=22];
- \sloth@part@draw[\sloth@body] (0.33,0.31) ellipse[x radius=0.25, y radius=0.13, rotate=25];
- \sloth@part@draw[\sloth@body] (-0.33,0.31) ellipse[x radius=0.25, y radius=0.13, rotate=-25];
+ \fill[sloth@bright10!50!black] (-0.125,0.265) ellipse[x radius=0.07, y radius=0.019,rotate=-10];
+ \fill[sloth@bright10!50!black] (-0.14,0.21) ellipse[x radius=0.07, y radius=0.017, rotate=-16];
+ \fill[sloth@bright10!50!black] (-0.16,0.165) ellipse[x radius=0.07, y radius=0.015, rotate=-22];
+ \fill[sloth@bright10!50!black] (0.125,0.265) ellipse[x radius=0.07, y radius=0.019, rotate=10];
+ \fill[sloth@bright10!50!black] (0.14,0.21) ellipse[x radius=0.07, y radius=0.017, rotate=16];
+ \fill[sloth@bright10!50!black] (0.16,0.165) ellipse[x radius=0.07, y radius=0.015, rotate=22];
+ \sloth@part@draw[sloth@bright10] (0.33,0.31) ellipse[x radius=0.25, y radius=0.13, rotate=25];
+ \sloth@part@draw[sloth@bright10] (-0.33,0.31) ellipse[x radius=0.25, y radius=0.13, rotate=-25];
\fi% back
%
% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \sloth@part@draw[\sloth@body!85!black] (0.53,0.85) .. controls (0.53,0.29) and (0.32,0.22) .. (0,0.22) .. controls (-0.32,0.22) and (-0.53,0.29) ..
- (-0.53,0.85) .. controls (-0.53,1.41) and (-0.32,1.87) .. (0,1.87) .. controls (0.33,1.87) and (0.53,1.41) .. (0.53,0.85) -- cycle;
+ \sloth@part@draw[\sloth@body] (0.53,0.85) .. controls (0.53,0.29) and (0.32,0.22) .. (0,0.22) .. controls (-0.32,0.22) and (-0.53,0.29) .. (-0.53,0.85) .. controls (-0.53,1.41) and (-0.32,1.87) .. (0,1.87) .. controls (0.33,1.87) and (0.53,1.41) .. (0.53,0.85) -- cycle;
%
% Belly %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifsloth@back
- \sloth@part@draw[\sloth@body!70!white] (0.36, 0.74) .. controls (0.36, 0.49) and (0.22, 0.41) .. (0, 0.41) .. controls (-0.22, 0.41) and (-0.36, 0.49) .. (-0.36, 0.74) .. controls (-0.36, 1) and (-0.22, 1.16) .. (0, 1.16) .. controls (0.22, 1.16) and (0.36, 1) .. (0.36, 0.74) -- cycle;
+ \sloth@part@draw[sloth@bright10!70!white] (0.36, 0.74) .. controls (0.36, 0.49) and (0.22, 0.41) .. (0, 0.41) .. controls (-0.22, 0.41) and (-0.36, 0.49) .. (-0.36, 0.74) .. controls (-0.36, 1) and (-0.22, 1.16) .. (0, 1.16) .. controls (0.22, 1.16) and (0.36, 1) .. (0.36, 0.74) -- cycle;
\fi% back
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -150,46 +164,42 @@
\csname tikzlinghookbelly\endcsname
%
% Hair %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \sloth@part@draw[\sloth@body] (-0.1128,2.0724) .. controls (-0.1128,2.0724) and (-0.1499,2.2329) .. (-0.0972,2.2525) .. controls (-0.1082,2.1318) and (-0.0047,2.0839) .. (-0.0047,2.0839) .. controls (-0.0047,2.0839) and (-0.0219,2.1866) .. (0.0145,2.1933) .. controls (0.0142,2.1159) and (0.0770,2.0884) .. (0.0770,2.0884) -- cycle;
+ \sloth@part@draw[sloth@bright10] (-0.1128,2.0724) .. controls (-0.1128,2.0724) and (-0.1499,2.2329) .. (-0.0972,2.2525) .. controls (-0.1082,2.1318) and (-0.0047,2.0839) .. (-0.0047,2.0839) .. controls (-0.0047,2.0839) and (-0.0219,2.1866) .. (0.0145,2.1933) .. controls (0.0142,2.1159) and (0.0770,2.0884) .. (0.0770,2.0884) -- cycle;
%
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \sloth@part@draw[\sloth@body]
- ( 0.50,1.67) .. controls ( 0.50,1.91) and ( 0.27,2.10) ..
- ( 0.00,2.10) .. controls (-0.27,2.10) and (-0.50,1.91) .. (-0.50,1.67) .. controls (-0.50,1.43) and (-0.33,1.28) ..
- ( 0.00,1.28) .. controls ( 0.33,1.28) and ( 0.50,1.43) ..
- ( 0.50,1.67) -- cycle;
+ \sloth@part@draw[sloth@bright10] ( 0.50,1.67) .. controls ( 0.50,1.91) and ( 0.27,2.10) .. ( 0.00,2.10) .. controls (-0.27,2.10) and (-0.50,1.91) .. (-0.50,1.67) .. controls (-0.50,1.43) and (-0.33,1.28) .. ( 0.00,1.28) .. controls ( 0.33,1.28) and ( 0.50,1.43) .. ( 0.50,1.67) -- cycle;
%
% Show details only from the front %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifsloth@back
%
% Inner part of hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \sloth@part@draw[\sloth@body!50!white] ( 0.40,1.67) .. controls ( 0.40,1.90) and ( 0.12,2.09) .. ( 0.00,1.93) .. controls (-0.12,2.09) and (-0.40,1.90) .. (-0.40,1.67) .. controls (-0.40,1.45) and (-0.25,1.38) .. ( 0.00,1.38) .. controls ( 0.25,1.38) and ( 0.40,1.45) .. ( 0.40,1.67) -- cycle;
+ \sloth@part@draw[sloth@bright10!50!white] ( 0.40,1.67) .. controls ( 0.40,1.90) and ( 0.12,2.09) .. ( 0.00,1.93) .. controls (-0.12,2.09) and (-0.40,1.90) .. (-0.40,1.67) .. controls (-0.40,1.45) and (-0.25,1.38) .. ( 0.00,1.38) .. controls ( 0.25,1.38) and ( 0.40,1.45) .. ( 0.40,1.67) -- cycle;
%
% behind the eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifsloth@contour
\draw[\sloth@contour,fill=white,line width=\scalingfactor*0.4pt] (0.3785,1.5336) .. controls (0.3012,1.5864) and (0.1829,1.6693) .. (0.1377,1.7234) .. controls (0.1184,1.7464) and (0.1624,1.8242) .. (0.1906,1.8137) .. controls (0.2673,1.7851) and (0.3597,1.7125) .. (0.3994,1.6531) .. controls (0.4129,1.6328) and (0.3785,1.5336) .. (0.3785,1.5336) -- cycle;
\draw[\sloth@contour,fill=white,line width=\scalingfactor*0.4pt] (-0.3785,1.5336) .. controls (-0.3012,1.5864) and (-0.1829,1.6693) .. (-0.1377,1.7234) .. controls (-0.1184,1.7464) and (-0.1624,1.8242) .. (-0.1906,1.8137) .. controls (-0.2673,1.7851) and (-0.3597,1.7125) .. (-0.3994,1.6531) .. controls (-0.4129,1.6328) and (-0.3785,1.5336) .. (-0.3785,1.5336) -- cycle;
\else% contour
- \fill[\sloth@body!60!black] (0.3785,1.5336) .. controls (0.3012,1.5864) and (0.1829,1.6693) .. (0.1377,1.7234) .. controls (0.1184,1.7464) and (0.1624,1.8242) .. (0.1906,1.8137) .. controls (0.2673,1.7851) and (0.3597,1.7125) .. (0.3994,1.6531) .. controls (0.4129,1.6328) and (0.3785,1.5336) .. (0.3785,1.5336) -- cycle;
- \fill[\sloth@body!60!black] (-0.3785,1.5336) .. controls (-0.3012,1.5864) and (-0.1829,1.6693) .. (-0.1377,1.7234) .. controls (-0.1184,1.7464) and (-0.1624,1.8242) .. (-0.1906,1.8137) .. controls (-0.2673,1.7851) and (-0.3597,1.7125) .. (-0.3994,1.6531) .. controls (-0.4129,1.6328) and (-0.3785,1.5336) .. (-0.3785,1.5336) -- cycle;
+ \fill[sloth@bright10!60!black] (0.3785,1.5336) .. controls (0.3012,1.5864) and (0.1829,1.6693) .. (0.1377,1.7234) .. controls (0.1184,1.7464) and (0.1624,1.8242) .. (0.1906,1.8137) .. controls (0.2673,1.7851) and (0.3597,1.7125) .. (0.3994,1.6531) .. controls (0.4129,1.6328) and (0.3785,1.5336) .. (0.3785,1.5336) -- cycle;
+ \fill[sloth@bright10!60!black] (-0.3785,1.5336) .. controls (-0.3012,1.5864) and (-0.1829,1.6693) .. (-0.1377,1.7234) .. controls (-0.1184,1.7464) and (-0.1624,1.8242) .. (-0.1906,1.8137) .. controls (-0.2673,1.7851) and (-0.3597,1.7125) .. (-0.3994,1.6531) .. controls (-0.4129,1.6328) and (-0.3785,1.5336) .. (-0.3785,1.5336) -- cycle;
\fi% contour
%
% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifsloth@sleeping
- \fill[\sloth@eyelid] (0.195, 1.705) rectangle ++(0.005, 0.02);
- \fill[\sloth@eyelid,rotate around={22:(0.195, 1.76)}] (0.195, 1.705) rectangle ++(0.005, 0.02);
- \fill[\sloth@eyelid,rotate around={44:(0.195, 1.76)}] (0.195, 1.701) rectangle ++(0.005, 0.02);
- \fill[\sloth@eyelid,rotate around={-22:(0.195, 1.76)}] (0.195, 1.705) rectangle ++(0.005, 0.02);
- \fill[\sloth@eyelid,rotate around={-44:(0.195, 1.76)}] (0.195, 1.705) rectangle ++(0.005, 0.02);
+ \fill[\sloth@eyelid] (0.195, 1.705) rectangle ++(0.005, 0.02);
+ \fill[\sloth@eyelid,rotate around={22:(0.195, 1.76)}] (0.195, 1.705) rectangle ++(0.005, 0.02);
+ \fill[\sloth@eyelid,rotate around={44:(0.195, 1.76)}] (0.195, 1.701) rectangle ++(0.005, 0.02);
+ \fill[\sloth@eyelid,rotate around={-22:(0.195, 1.76)}] (0.195, 1.705) rectangle ++(0.005, 0.02);
+ \fill[\sloth@eyelid,rotate around={-44:(0.195, 1.76)}] (0.195, 1.705) rectangle ++(0.005, 0.02);
%
- \fill[\sloth@eyelid] (-0.195, 1.705) rectangle ++(0.005, 0.02);
- \fill[\sloth@eyelid,rotate around={22:(-0.195, 1.76)}] (-0.195, 1.705) rectangle ++(0.005, 0.02);
- \fill[\sloth@eyelid,rotate around={44:(-0.195, 1.76)}] (-0.195, 1.705) rectangle ++(0.005, 0.02);
- \fill[\sloth@eyelid,rotate around={-22:(-0.195, 1.76)}] (-0.195, 1.705) rectangle ++(0.005, 0.02);
- \fill[\sloth@eyelid,rotate around={-44:(-0.195, 1.76)}] (-0.195, 1.701) rectangle ++(0.005, 0.02);
+ \fill[\sloth@eyelid] (-0.195, 1.705) rectangle ++(0.005, 0.02);
+ \fill[\sloth@eyelid,rotate around={22:(-0.195, 1.76)}] (-0.195, 1.705) rectangle ++(0.005, 0.02);
+ \fill[\sloth@eyelid,rotate around={44:(-0.195, 1.76)}] (-0.195, 1.705) rectangle ++(0.005, 0.02);
+ \fill[\sloth@eyelid,rotate around={-22:(-0.195, 1.76)}] (-0.195, 1.705) rectangle ++(0.005, 0.02);
+ \fill[\sloth@eyelid,rotate around={-44:(-0.195, 1.76)}] (-0.195, 1.701) rectangle ++(0.005, 0.02);
%
\sloth@part@draw[\sloth@eyelid] (0.237, 1.743) .. controls (0.237, 1.712) and (0.157, 1.712) .. (0.157, 1.743) .. controls (0.157, 1.802) and (0.237, 1.802) .. (0.237, 1.743) -- cycle;
- \sloth@part@draw[\sloth@eyelid] (-0.237, 1.743) .. controls (-0.237, 1.712) and (-0.157, 1.712) .. (-0.157, 1.743) .. controls (-0.157, 1.802) and (-0.237, 1.802) .. (-0.237, 1.743) -- cycle;
+ \sloth@part@draw[\sloth@eyelid] (-0.237, 1.743) .. controls (-0.237, 1.712) and (-0.157, 1.712) .. (-0.157, 1.743) .. controls (-0.157, 1.802) and (-0.237, 1.802) .. (-0.237, 1.743) -- cycle;
\else% sleeping
\sloth@part@draw[\sloth@eye] (0.193,1.75) circle[radius=0.04];
\sloth@part@draw[\sloth@eye] (-0.193,1.75) circle[radius=0.04];
@@ -198,14 +208,18 @@
\fi% sleeping
%
% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \sloth@part@draw[\sloth@body!40!black] (0,1.665) ellipse[x radius=0.078, y radius=0.048];
+ \sloth@part@draw[sloth@bright10!40!black] (0,1.665) ellipse[x radius=0.078, y radius=0.048];
%
% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \draw[\sloth@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.55) arc [start angle=-40, end angle=-140, radius=0.16];
+ \ifsloth@openmouth
+ \filldraw[\sloth@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.55) arc [start angle=-40, end angle=-140, radius=0.16];
+ \else
+ \draw[\sloth@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.55) arc [start angle=-40, end angle=-140, radius=0.16];
+ \fi
%
% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \sloth@part@draw[\sloth@body] (-0.50, 1.24) .. controls (-0.54, 1.24) and (-0.55, 1.20) .. (-0.56, 1.17) .. controls (-0.61, 1.06) and (-0.63, 0.95) .. (-0.64, 0.83) .. controls (-0.64, 0.80) and (-0.64, 0.77) .. (-0.63, 0.74) .. controls (-0.57, 0.66) and (-0.47, 0.60) .. (-0.38, 0.56) .. controls (-0.31, 0.54) and (-0.23, 0.52) .. (-0.16, 0.54) .. controls (-0.12, 0.54) and (-0.10, 0.59) .. (-0.13, 0.61) .. controls (-0.17, 0.68) and (-0.24, 0.73) .. (-0.30, 0.77) .. controls (-0.34, 0.79) and (-0.38, 0.81) .. (-0.42, 0.83) .. controls (-0.41, 0.92) and (-0.41, 1.01) .. (-0.42, 1.09) .. controls (-0.43, 1.14) and (-0.44, 1.19) .. (-0.48, 1.23) .. controls (-0.48, 1.24) and (-0.49, 1.24) .. (-0.50, 1.24) -- cycle;
- \sloth@part@draw[\sloth@body] (0.50, 1.24) .. controls (0.54, 1.24) and (0.55, 1.20) .. (0.56, 1.17) .. controls (0.61, 1.06) and (0.63, 0.95) .. (0.64, 0.83) .. controls (0.64, 0.80) and (0.64, 0.77) .. (0.63, 0.74) .. controls (0.57, 0.66) and (0.47, 0.60) .. (0.38, 0.56) .. controls (0.31, 0.54) and (0.23, 0.52) .. (0.16, 0.54) .. controls (0.12, 0.54) and (0.10, 0.59) .. (0.13, 0.61) .. controls (0.17, 0.68) and (0.24, 0.73) .. (0.30, 0.77) .. controls (0.34, 0.79) and (0.38, 0.81) .. (0.42, 0.83) .. controls (0.41, 0.92) and (0.41, 1.01) .. (0.42, 1.09) .. controls (0.43, 1.14) and (0.44, 1.19) .. (0.48, 1.23) .. controls (0.48, 1.24) and (0.49, 1.24) .. (0.50, 1.24) -- cycle;
+ \sloth@part@draw[sloth@bright10] (-0.50, 1.24) .. controls (-0.54, 1.24) and (-0.55, 1.20) .. (-0.56, 1.17) .. controls (-0.61, 1.06) and (-0.63, 0.95) .. (-0.64, 0.83) .. controls (-0.64, 0.80) and (-0.64, 0.77) .. (-0.63, 0.74) .. controls (-0.57, 0.66) and (-0.47, 0.60) .. (-0.38, 0.56) .. controls (-0.31, 0.54) and (-0.23, 0.52) .. (-0.16, 0.54) .. controls (-0.12, 0.54) and (-0.10, 0.59) .. (-0.13, 0.61) .. controls (-0.17, 0.68) and (-0.24, 0.73) .. (-0.30, 0.77) .. controls (-0.34, 0.79) and (-0.38, 0.81) .. (-0.42, 0.83) .. controls (-0.41, 0.92) and (-0.41, 1.01) .. (-0.42, 1.09) .. controls (-0.43, 1.14) and (-0.44, 1.19) .. (-0.48, 1.23) .. controls (-0.48, 1.24) and (-0.49, 1.24) .. (-0.50, 1.24) -- cycle;
+ \sloth@part@draw[sloth@bright10] (0.50, 1.24) .. controls (0.54, 1.24) and (0.55, 1.20) .. (0.56, 1.17) .. controls (0.61, 1.06) and (0.63, 0.95) .. (0.64, 0.83) .. controls (0.64, 0.80) and (0.64, 0.77) .. (0.63, 0.74) .. controls (0.57, 0.66) and (0.47, 0.60) .. (0.38, 0.56) .. controls (0.31, 0.54) and (0.23, 0.52) .. (0.16, 0.54) .. controls (0.12, 0.54) and (0.10, 0.59) .. (0.13, 0.61) .. controls (0.17, 0.68) and (0.24, 0.73) .. (0.30, 0.77) .. controls (0.34, 0.79) and (0.38, 0.81) .. (0.42, 0.83) .. controls (0.41, 0.92) and (0.41, 1.01) .. (0.42, 1.09) .. controls (0.43, 1.14) and (0.44, 1.19) .. (0.48, 1.23) .. controls (0.48, 1.24) and (0.49, 1.24) .. (0.50, 1.24) -- cycle;
%
\ifsloth@contour
\draw[\sloth@contour,fill=white,line width=\scalingfactor*0.4pt] (0.15, 0.61) ellipse[x radius=0.017, y radius=0.07, rotate=110];
@@ -216,18 +230,18 @@
\draw[\sloth@contour,fill=white,line width=\scalingfactor*0.4pt] (-0.17, 0.57) ellipse[x radius=0.015, y radius=0.07, rotate=-117];
\draw[\sloth@contour,fill=white,line width=\scalingfactor*0.4pt] (-0.19, 0.53) ellipse[x radius=0.012, y radius=0.062, rotate=-125];
\else% contour
- \fill[\sloth@body!50!black] (0.15, 0.61) ellipse[x radius=0.017, y radius=0.07, rotate=110];
- \fill[\sloth@body!50!black] (0.17, 0.57) ellipse[x radius=0.015, y radius=0.07, rotate=117];
- \fill[\sloth@body!50!black] (0.19, 0.53) ellipse[x radius=0.012, y radius=0.062, rotate=125];
+ \fill[sloth@bright10!50!black] (0.15, 0.61) ellipse[x radius=0.017, y radius=0.07, rotate=110];
+ \fill[sloth@bright10!50!black] (0.17, 0.57) ellipse[x radius=0.015, y radius=0.07, rotate=117];
+ \fill[sloth@bright10!50!black] (0.19, 0.53) ellipse[x radius=0.012, y radius=0.062, rotate=125];
%
- \fill[\sloth@body!50!black] (-0.15, 0.61) ellipse[x radius=0.017, y radius=0.07, rotate=-110];
- \fill[\sloth@body!50!black] (-0.17, 0.57) ellipse[x radius=0.015, y radius=0.07, rotate=-117];
- \fill[\sloth@body!50!black] (-0.19, 0.53) ellipse[x radius=0.012, y radius=0.062, rotate=-125];
+ \fill[sloth@bright10!50!black] (-0.15, 0.61) ellipse[x radius=0.017, y radius=0.07, rotate=-110];
+ \fill[sloth@bright10!50!black] (-0.17, 0.57) ellipse[x radius=0.015, y radius=0.07, rotate=-117];
+ \fill[sloth@bright10!50!black] (-0.19, 0.53) ellipse[x radius=0.012, y radius=0.062, rotate=-125];
\fi% contour
%
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \sloth@part@draw[\sloth@body] (0.33,0.31) ellipse[x radius=0.25, y radius=0.13, rotate=25];
- \sloth@part@draw[\sloth@body] (-0.33,0.31) ellipse[x radius=0.25, y radius=0.13, rotate=-25];
+ \sloth@part@draw[sloth@bright10] (0.33,0.31) ellipse[x radius=0.25, y radius=0.13, rotate=25];
+ \sloth@part@draw[sloth@bright10] (-0.33,0.31) ellipse[x radius=0.25, y radius=0.13, rotate=-25];
%
\ifsloth@contour
\draw[\sloth@contour,fill=white,line width=\scalingfactor*0.4pt] (-0.125,0.265) ellipse[x radius=0.07, y radius=0.019, rotate=-10];
@@ -237,12 +251,12 @@
\draw[\sloth@contour,fill=white,line width=\scalingfactor*0.4pt] (0.14,0.21) ellipse[x radius=0.07, y radius=0.017, rotate=16];
\draw[\sloth@contour,fill=white,line width=\scalingfactor*0.4pt] (0.16,0.165) ellipse[x radius=0.07, y radius=0.015, rotate=22];
\else% contour
- \fill[\sloth@body!50!black] (-0.125,0.265) ellipse[x radius=0.07, y radius=0.019, rotate=-10];
- \fill[\sloth@body!50!black] (-0.14,0.21) ellipse[x radius=0.07, y radius=0.017, rotate=-16];
- \fill[\sloth@body!50!black] (-0.16,0.165) ellipse[x radius=0.07, y radius=0.015, rotate=-22];
- \fill[\sloth@body!50!black] (0.125,0.265) ellipse[x radius=0.07, y radius=0.019, rotate=10];
- \fill[\sloth@body!50!black] (0.14,0.21) ellipse[x radius=0.07, y radius=0.017, rotate=16];
- \fill[\sloth@body!50!black] (0.16,0.165) ellipse[x radius=0.07, y radius=0.015, rotate=22];
+ \fill[sloth@bright10!50!black] (-0.125,0.265) ellipse[x radius=0.07, y radius=0.019, rotate=-10];
+ \fill[sloth@bright10!50!black] (-0.14,0.21) ellipse[x radius=0.07, y radius=0.017, rotate=-16];
+ \fill[sloth@bright10!50!black] (-0.16,0.165) ellipse[x radius=0.07, y radius=0.015, rotate=-22];
+ \fill[sloth@bright10!50!black] (0.125,0.265) ellipse[x radius=0.07, y radius=0.019, rotate=10];
+ \fill[sloth@bright10!50!black] (0.14,0.21) ellipse[x radius=0.07, y radius=0.017, rotate=16];
+ \fill[sloth@bright10!50!black] (0.16,0.165) ellipse[x radius=0.07, y radius=0.015, rotate=22];
\fi% contour
%
\fi% back
@@ -265,52 +279,57 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-sloths}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-sloths}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic sloth}}
%\sloth
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic sloth can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\sloth[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\sloth[eye=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Mouth colour}}
%\sloth[mouth=red]
%\end{tcblisting}
%
+% The sloth can open its mouth:
+%\begin{tcblisting}{title={Open mouth}}
+%\sloth[openmouth]
+%\end{tcblisting}
+%
%If tired, the sloth can take a nap:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Sleep}}
%\sloth[sleeping]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eyelid colour}}
%\sloth[sleeping,eyelid=red]
%\end{tcblisting}
%
%To view the sloth from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\sloth[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the sloth 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the sloth 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\sloth[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\sloth[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-snowmen.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-snowmen.sty
index a95bda001cb..600b17227a2 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-snowmen.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-snowmen.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-snowmen}[2022/06/17 version v1.0 Draw snowmen in TikZ]
+\ProvidesPackage{tikzlings-snowmen}[2025/01/05 version v2.2 Draw snowmen in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -26,13 +26,14 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname snowmanhookforeground\endcsname
\csname tikzlinghookforeground\endcsname
- %
+ %
}
\newif\ifsnowman@threeD
\newif\ifsnowman@back
\newif\ifsnowman@globalwarming
\newif\ifsnowman@contour
+\newif\ifsnowman@openmouth
\tikzset{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -56,29 +57,31 @@
mouth/.store in = \snowman@mouth,
mouth = black,
buttons/.store in = \snowman@buttons,
- buttons = black,
+ buttons = black,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 3D/.code = \snowman@threeDtrue,
+ openmouth/.code = \snowman@openmouthtrue,
+ open mouth/.forward to = /snowman/openmouth,
+ 3D/.code = \snowman@threeDtrue,
back/.code = \snowman@backtrue,
globalwarming/.code= \snowman@globalwarmingtrue
\def\snowman@globalwarming{#1},
- globalwarming/.default = blue!10!white,
+ globalwarming/.default = blue!10!white,
global warming/.forward to = /snowman/globalwarming,
contour/.code = \snowman@contourtrue
\def\snowman@contour{#1}
\def\snowman@mouth{#1},
- contour/.default = black,
- outline/.forward to = /snowman/contour,
+ contour/.default = black,
+ outline/.forward to = /snowman/contour,
}
\def\snowman@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.75, 0.0) rectangle (0.75, 2.13);
@@ -95,7 +98,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -113,7 +116,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -135,25 +138,25 @@
\csname tikzlinghookbelly\endcsname
%
% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \fill[\snowman@mouth] (0,1.23) circle[radius=0.025];
- \fill[\snowman@mouth] (0.06,1.3) circle[radius=0.025];
- \fill[\snowman@mouth] (-0.06,1.27) circle[radius=0.025];
- \fill[\snowman@mouth] (0.09,1.37) circle[radius=0.025];
- \fill[\snowman@mouth] (-0.18,1.28) circle[radius=0.025];
- \fill[\snowman@mouth] (0.2,1.28) circle[radius=0.025];
+ \fill[\snowman@mouth] (0,1.23) circle[radius=0.025];
+ \fill[\snowman@mouth] (0.06,1.3) circle[radius=0.025];
+ \fill[\snowman@mouth] (-0.06,1.27) circle[radius=0.025];
+ \fill[\snowman@mouth] (0.09,1.37) circle[radius=0.025];
+ \fill[\snowman@mouth] (-0.18,1.28) circle[radius=0.025];
+ \fill[\snowman@mouth] (0.2,1.28) circle[radius=0.025];
\fill[\snowman@mouth] (-0.25,1.2) circle[radius=0.025];
%
% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \snowman@part@draw[\snowman@eye] (-0.5,1.75) circle[radius=0.06];
- \snowman@part@draw[\snowman@eye] (-0.1,1.55) circle[radius=0.06];
+ \snowman@part@draw[\snowman@eye] (-0.5,1.75) circle[radius=0.06];
+ \snowman@part@draw[\snowman@eye] (-0.1,1.55) circle[radius=0.06];
%
% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \snowman@part@draw[\snowman@nose] (-0.6,1.4) -- (-0.8,1.42) -- (-0.6,1.54) (-0.6,1.4) arc[radius=0.07, start angle=-90, end angle=90];
+ \snowman@part@draw[\snowman@nose] (-0.6,1.4) -- (-0.8,1.42) -- (-0.6,1.54) (-0.6,1.4) arc[radius=0.07, start angle=-90, end angle=90];
%
% Buttons %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\snowman@part@draw[\snowman@buttons] (0.1,0.8) circle[radius=0.06];
\snowman@part@draw[\snowman@buttons] (-0.15,0.55) circle[radius=0.06];
- \snowman@part@draw[\snowman@buttons] (0,0.25) circle[radius=0.06];
+ \snowman@part@draw[\snowman@buttons] (0,0.25) circle[radius=0.06];
%
% normal snowman %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\else% global warming
@@ -165,7 +168,7 @@
% Body + Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\snowman@part@draw[\snowman@body] (0,0.5) ellipse[x radius=0.6, y radius=0.5];
\snowman@part@draw[\snowman@body] (0,1.1) ellipse[x radius=0.5, y radius=0.4];
- \snowman@part@draw[\snowman@body] (0,1.7) circle[radius=0.4];
+ \snowman@part@draw[\snowman@body] (0,1.7) circle[radius=0.4];
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname snowmanhookbelly\endcsname
@@ -182,18 +185,25 @@
\fill[\snowman@mouth] (-0.08,1.522) circle[radius=0.016];
\fill[\snowman@mouth] (0.12,1.543) circle[radius=0.016];
\fill[\snowman@mouth] (-0.12,1.543) circle[radius=0.016];
+ \ifsnowman@openmouth
+ \fill[\snowman@mouth] (0,1.57) circle[radius=0.016];
+ \fill[\snowman@mouth] (-0.04,1.565) circle[radius=0.016];
+ \fill[\snowman@mouth] (-0.08,1.56) circle[radius=0.016];
+ \fill[\snowman@mouth] (0.04,1.565) circle[radius=0.016];
+ \fill[\snowman@mouth] (0.08,1.56) circle[radius=0.016];
+ \fi
%
% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \snowman@part@draw[\snowman@eye] (-0.155,1.8) circle[radius=0.04];
- \snowman@part@draw[\snowman@eye] (0.155,1.8) circle[radius=0.04];
+ \snowman@part@draw[\snowman@eye] (-0.155,1.8) circle[radius=0.04];
+ \snowman@part@draw[\snowman@eye] (0.155,1.8) circle[radius=0.04];
%
% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\snowman@part@draw[\snowman@nose] (0,1.72) arc [radius=0.05, start angle=90, end angle=270] (0,1.62) -- (0.15,1.64) -- (0,1.72);
%
% Buttons %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \snowman@part@draw[\snowman@buttons] (0,1.15) circle[radius=0.04];
- \snowman@part@draw[\snowman@buttons] (0,0.95) circle[radius=0.04];
- \snowman@part@draw[\snowman@buttons] (0,0.75) circle[radius=0.04];
+ \snowman@part@draw[\snowman@buttons] (0,1.15) circle[radius=0.04];
+ \snowman@part@draw[\snowman@buttons] (0,0.95) circle[radius=0.04];
+ \snowman@part@draw[\snowman@buttons] (0,0.75) circle[radius=0.04];
%
\fi% back
%
@@ -217,55 +227,60 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-snowmen}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-snowmen}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic snowman}}
%\snowman
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic snowman can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\snowman[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of various body parts can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\snowman[eye=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Nose colour}}
%\snowman[nose=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Mouth colour}}
%\snowman[mouth=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Button colour}}
%\snowman[buttons=red]
%\end{tcblisting}
%
+% The snowman can open its mouth:
+%\begin{tcblisting}{title={Open mouth}}
+%\snowman[openmouth]
+%\end{tcblisting}
+%
%The biggest enemy of the snowman are raising temperatures:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Global warming}}
%\snowman[globalwarming,tophat]
%\end{tcblisting}
%
%To view the snowman from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\snowman[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the snowman 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the snowman 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\snowman[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\snowman[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-squirrels.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-squirrels.sty
index 0852a3fd92b..7f132d75853 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-squirrels.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-squirrels.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-squirrels}[2022/06/17 version v1.0 Drawing squirrels in TikZ]
+\ProvidesPackage{tikzlings-squirrels}[2025/01/05 version v2.2 Drawing squirrels in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -29,8 +29,11 @@
}
\newif\ifsquirrel@threeD
+\newif\ifsquirrel@leftstep
+\newif\ifsquirrel@rightstep
\newif\ifsquirrel@back
\newif\ifsquirrel@contour
+\newif\ifsquirrel@openmouth
\tikzset{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -48,16 +51,25 @@
body/.store in = \squirrel@body,
body = brown!40!gray!90!red,
eye/.store in = \squirrel@eye,
- eye = white,
+ eye = white,
pupil/.store in = \squirrel@pupil,
- pupil = black,
+ pupil = black,
+ mouth/.store in = \squirrel@mouth,
+ mouth = \squirrel@body!70!brown!60!black,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% options
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 3D/.code = \squirrel@threeDtrue,
- back/.code = \squirrel@backtrue,
+ openmouth/.code = \squirrel@openmouthtrue,
+ open mouth/.forward to = /squirrel/openmouth,
+ 3D/.code = \squirrel@threeDtrue
+ \def\squirrel@mouth{\squirrel@body!40!black},
+ leftstep/.code = \squirrel@leftsteptrue,
+ left step/.forward to = /squirrel/leftstep,
+ rightstep/.code = \squirrel@rightsteptrue,
+ right step/.forward to = /squirrel/rightstep,
+ back/.code = \squirrel@backtrue,
contour/.code = \squirrel@contourtrue
\def\squirrel@contour{#1},
contour/.default = black,
@@ -67,7 +79,7 @@
\def\squirrel@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.53,0.1) rectangle (1.12,2.15);
%
@@ -83,7 +95,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -101,16 +113,24 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname squirrelhookbackground\endcsname
\csname tikzlinghookbackground\endcsname
- %
+ %
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
- \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \ifsquirrel@leftstep
+ \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
+ \else% step
+ \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \fi% step
+ \ifsquirrel@rightstep
+ \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
+ \else% step
+ \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \fi% step
%
% Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifsquirrel@back
@@ -119,8 +139,7 @@
\fi% back
%
% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \squirrel@part@draw[\squirrel@body]
- (0.5,0.5) .. controls (0.5,0.09) and (-0.5,0.09) .. (-0.5,0.5) .. controls (-0.5,0.85) and (-0.25,1.6) .. (0,1.7) .. controls (0.25,1.6) and (0.5,0.85) .. (0.5,0.5) -- cycle;
+ \squirrel@part@draw[\squirrel@body] (0.5,0.5) .. controls (0.5,0.09) and (-0.5,0.09) .. (-0.5,0.5) .. controls (-0.5,0.85) and (-0.25,1.6) .. (0,1.7) .. controls (0.25,1.6) and (0.5,0.85) .. (0.5,0.5) -- cycle;
%
% Belly %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifsquirrel@back
@@ -132,17 +151,16 @@
\csname tikzlinghookbelly\endcsname
%
% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (0.1920,1.9906) .. controls (0.1657,2.0780) and (0.1839,2.1332) .. (0.1839,2.1332) .. controls (0.1839,2.1332) and (0.1123,2.1773) .. (0.0941,2.0720) .. controls (0.0716,2.0156) and (0.0753,1.9519) .. (0.1023,1.9293) .. controls (0.1293,1.9068) and (0.1696,1.9342) .. (0.1920,1.9906) -- cycle;
- \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray]
- (-0.1920,1.9906) .. controls (-0.1657,2.0780) and (-0.1839,2.1332) .. (-0.1839,2.1332) .. controls (-0.1839,2.1332) and (-0.1123,2.1773) .. (-0.0941,2.0720) .. controls (-0.0716,2.0156) and (-0.0753,1.9519) .. (-0.1023,1.9293) .. controls (-0.1293,1.9068) and (-0.1696,1.9342) .. (-0.1920,1.9906) -- cycle;
+ \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (0.1920,1.9906) .. controls (0.1657,2.0780) and (0.1839,2.1332) .. (0.1839,2.1332) .. controls (0.1839,2.1332) and (0.1123,2.1773) .. (0.0941,2.0720) .. controls (0.0716,2.0156) and (0.0753,1.9519) .. (0.1023,1.9293) .. controls (0.1293,1.9068) and (0.1696,1.9342) .. (0.1920,1.9906) -- cycle;
+ \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (-0.1920,1.9906) .. controls (-0.1657,2.0780) and (-0.1839,2.1332) .. (-0.1839,2.1332) .. controls (-0.1839,2.1332) and (-0.1123,2.1773) .. (-0.0941,2.0720) .. controls (-0.0716,2.0156) and (-0.0753,1.9519) .. (-0.1023,1.9293) .. controls (-0.1293,1.9068) and (-0.1696,1.9342) .. (-0.1920,1.9906) -- cycle;
%
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifsquirrel@contour
- \squirrel@part@draw[\squirrel@body] (0,1.75) circle[radius=0.3];
- \squirrel@part@draw[\squirrel@body] (0.2,1.6) circle[radius=0.15];
+ \squirrel@part@draw[\squirrel@body] (0,1.75) circle[radius=0.3];
+ \squirrel@part@draw[\squirrel@body] (0.2,1.6) circle[radius=0.15];
\squirrel@part@draw[\squirrel@body] (-0.2,1.6) circle[radius=0.15];
\ifsquirrel@back
- \squirrel@part@draw[\squirrel@body] (0,1.75) circle[radius=0.3];
+ \squirrel@part@draw[\squirrel@body] (0,1.75) circle[radius=0.3];
\fi% back
\else% contour
\squirrel@part@draw[\squirrel@body] (0,1.75) circle[radius=0.3] (0.2,1.6) circle[radius=0.15] (-0.2,1.6) circle[radius=0.15];
@@ -156,7 +174,7 @@
%
% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\squirrel@part@draw[\squirrel@body!70!brown!60!black] (0,1.66) ellipse[x radius=0.06, y radius=0.03];
- %
+ %
% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\squirrel@part@draw[\squirrel@eye] (0.07,1.78) ellipse[x radius=0.05, y radius=0.07];
\squirrel@part@draw[\squirrel@eye] (-0.07,1.78) ellipse[x radius=0.05, y radius=0.07];
@@ -165,15 +183,19 @@
%
% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifsquirrel@contour
+ \draw[\squirrel@contour,fill=white,line width=\scalingfactor*0.4pt] (-0.15,1.61) .. controls (-0.15,1.61) and (-0.15,1.52) .. (0.0,1.61) .. controls (0.15,1.52) and (0.15,1.61) .. (0.15,1.61) (0.15,1.61) arc [start angle=-20, end angle=-160, radius=0.16];
\draw[\squirrel@contour,fill=white,line width=\scalingfactor*0.4pt] (-0.025,1.567) rectangle ++(0.02,0.03);
\draw[\squirrel@contour,fill=white,line width=\scalingfactor*0.4pt] (0.025,1.567) rectangle ++(-0.02,0.03);
\draw[\squirrel@contour,line width=\scalingfactor*0.4pt] (-0.15,1.61) .. controls (-0.15,1.61) and (-0.15,1.52) .. (0.0,1.61) .. controls (0.15,1.52) and (0.15,1.61) .. (0.15,1.61);
\else% contour
+ \ifsquirrel@openmouth
+ \filldraw[\squirrel@mouth,line width=\scalingfactor*0.4pt] (-0.15,1.61) .. controls (-0.15,1.61) and (-0.15,1.52) .. (0.0,1.61) .. controls (0.15,1.52) and (0.15,1.61) .. (0.15,1.61) (0.15,1.61) arc [start angle=-20, end angle=-160, radius=0.16];
+ \fi% open mouth
\fill[white] (-0.025,1.567) rectangle ++(0.02,0.03);
\fill[white] (0.025,1.567) rectangle ++(-0.02,0.03);
- \draw[\squirrel@body!70!brown!60!black,line width=\scalingfactor*0.4pt] (-0.15,1.61) .. controls (-0.15,1.61) and (-0.15,1.52) .. (0.0,1.61) .. controls (0.15,1.52) and (0.15,1.61) .. (0.15,1.61);
+ \draw[\squirrel@mouth,line width=\scalingfactor*0.4pt] (-0.15,1.61) .. controls (-0.15,1.61) and (-0.15,1.52) .. (0.0,1.61) .. controls (0.15,1.52) and (0.15,1.61) .. (0.15,1.61);
\fi% contour
- %
+ %
% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (0.2,0.85) ellipse[x radius=0.22, y radius=0.11, rotate=70];
\squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (-0.2,0.85) ellipse[x radius=0.22, y radius=0.11, rotate=-70];
@@ -183,7 +205,7 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname squirrelhookbody\endcsname
\csname tikzlinghookbody\endcsname
- %
+ %
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -198,44 +220,58 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-squirrels}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-squirrels}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic squirrel}}
%\squirrel
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic squirrel can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\squirrel[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of the eyes can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\squirrel[eye=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Pupil colour}}
%\squirrel[pupil=red]
%\end{tcblisting}
+%\begin{tcblisting}{title={Mouth colour}}
+%\squirrel[mouth=red]
+%\end{tcblisting}
+%
+% The squirrel can open its mouth:
+%\begin{tcblisting}{title={Open mouth}}
+%\squirrel[openmouth]
+%\end{tcblisting}
+%
+%And the squirrel can lift its legs:
+%\begin{tcblisting}{title={Walking}}
+%\squirrel[leftstep]
+%\squirrel[rightstep,xshift=2cm]
+%\end{tcblisting}
%
%To view the squirrel from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\squirrel[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the squirrel 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the squirrel 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\squirrel[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\squirrel[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-wolves.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-wolves.sty
index 060e7b21f2e..f4bf79719a9 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-wolves.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-wolves.sty
@@ -9,10 +9,10 @@
%% https://github.com/samcarter/tikzlings
%%
%% Released under the LaTeX Project Public License v1.3c or later
-%% See http://www.latex-project.org/lppl.txt
+%% See https://www.latex-project.org/lppl.txt
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings-wolves}[2022/06/17 version v1.0 Drawing wolves in TikZ]
+\ProvidesPackage{tikzlings-wolves}[2025/01/05 version v2.2 Drawing wolves in TikZ]
\RequirePackage{tikz}
\RequirePackage{tikzlings-addons}
@@ -27,7 +27,7 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname wolfhookforeground\endcsname
\csname tikzlinghookforeground\endcsname
- %
+ %
}
\newif\ifwolf@threeD
@@ -53,9 +53,9 @@
body/.store in = \wolf@body,
body = gray!90!white,
eye/.store in = \wolf@eye,
- eye = white,
+ eye = white,
pupil/.store in = \wolf@pupil,
- pupil = black,
+ pupil = black,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% options
@@ -69,18 +69,18 @@
leftstep/.code = \wolf@leftsteptrue,
left step/.forward to = /wolf/leftstep,
rightstep/.code = \wolf@rightsteptrue,
- right step/.forward to = /wolf/rightstep,
- back/.code = \wolf@backtrue,
+ right step/.forward to = /wolf/rightstep,
+ back/.code = \wolf@backtrue,
contour/.code = \wolf@contourtrue
\def\wolf@contour{#1},
- contour/.default = black,
- outline/.forward to = /wolf/contour,
+ contour/.default = black,
+ outline/.forward to = /wolf/contour,
}
\def\wolf@draw{%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
- % minimal bounding box size
+ % minimal bounding box size
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (-0.625,0.1) rectangle (0.905, 2.17);
@@ -97,7 +97,7 @@
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
+ %
% switch between 2D, 3D and contours, from
% https://chat.stackexchange.com/transcript/message/45991801#45991801
%
@@ -115,32 +115,32 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
- %
+ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname wolfhookbackground\endcsname
\csname tikzlinghookbackground\endcsname
- %
+ %
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifwolf@leftstep
- \wolf@part@draw[\wolf@body!65!white] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
+ \wolf@part@draw[\wolf@body!65!white] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
\else% step
- \wolf@part@draw[\wolf@body!65!white] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \wolf@part@draw[\wolf@body!65!white] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
\fi% step
%
\ifwolf@rightstep
- \wolf@part@draw[\wolf@body!65!white] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
+ \wolf@part@draw[\wolf@body!65!white] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09];
\else% step
- \wolf@part@draw[\wolf@body!65!white] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
+ \wolf@part@draw[\wolf@body!65!white] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09];
\fi% step
%
% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\wolf@part@draw[\wolf@body] (0.22, 2.0392) .. controls (0.22, 2.1584) and (0.49460, 2.255) .. (0.49460, 2.255) .. controls (0.49460, 2.255) and (0.5300, 1.86) .. (0.3721, 1.86) .. controls (0.2891, 1.86) and (0.22, 1.9201) .. (0.22, 2.0392) -- cycle;
- \wolf@part@draw[\wolf@body!55!white] (0.22, 2.0392) .. controls (0.26, 2.1584) and (0.47, 2.22) .. (0.47, 2.20) .. controls (0.47, 2.2) and (0.49, 1.9) .. (0.3721, 1.9) .. controls (0.2891, 1.88) and (0.22, 1.88) .. (0.22, 2.0392) -- cycle;
+ \wolf@part@draw[\wolf@body!55!white] (0.22, 2.0392) .. controls (0.26, 2.1584) and (0.47, 2.22) .. (0.47, 2.20) .. controls (0.47, 2.2) and (0.49, 1.9) .. (0.3721, 1.9) .. controls (0.2891, 1.88) and (0.22, 1.88) .. (0.22, 2.0392) -- cycle;
\wolf@part@draw[\wolf@body] (-0.22, 2.0392) .. controls (-0.22, 2.1584) and (-0.49460, 2.255) .. (-0.49460, 2.255) .. controls (-0.49460, 2.255) and (-0.5300, 1.86) .. (-0.3721, 1.86) .. controls (-0.2891, 1.86) and (-0.22, 1.9201) .. (-0.22, 2.0392) -- cycle;
- \wolf@part@draw[\wolf@body!55!white] (-0.22, 2.0392) .. controls (-0.26, 2.1584) and (-0.47, 2.22) .. (-0.47, 2.20) .. controls (-0.47, 2.2) and (-0.49, 1.9) .. (-0.3721, 1.9) .. controls (-0.2891, 1.88) and (-0.22, 1.88) .. (-0.22, 2.0392) -- cycle;
- %
+ \wolf@part@draw[\wolf@body!55!white] (-0.22, 2.0392) .. controls (-0.26, 2.1584) and (-0.47, 2.22) .. (-0.47, 2.20) .. controls (-0.47, 2.2) and (-0.49, 1.9) .. (-0.3721, 1.9) .. controls (-0.2891, 1.88) and (-0.22, 1.88) .. (-0.22, 2.0392) -- cycle;
+ %
% Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\unless\ifwolf@back
\wolf@part@draw[\wolf@body!50!darkgray] (1.0893, 1.5779) .. controls (0.3433, 1.6612) and (0.4863, 0.6062) .. (-0.0243, 0.348) .. controls (1.0671, 0.068) and (0.8133, 1.1808) .. (1.0893, 1.5779) -- cycle;
@@ -161,7 +161,7 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname wolfhookbelly\endcsname
\csname tikzlinghookbelly\endcsname
- %
+ %
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifwolf@back
\wolf@part@draw[\wolf@body!70!white!95!brown] (0.5, 1.8) .. controls (0.5, 1.58) and (0.2, 1.35) .. (0, 1.35) .. controls (-0.2, 1.35) and (-0.5, 1.58) .. (-0.5, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) .. (0.5, 1.8) -- cycle;
@@ -202,7 +202,7 @@
% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\csname wolfhookbody\endcsname
\csname tikzlinghookbody\endcsname
- %
+ %
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -217,55 +217,55 @@
%
%\subsection{Package name}
%
-%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
-%\vspace*{0.5cm}
-%\lstinline|\usepackage{tikzlings-wolves}|
-%\vspace*{0.5cm}
+%\begin{tcolorbox}[title={Package usage}]
+%\begin{samcode}
+%\usepackage{tikzlings-wolves}
+%\end{samcode}
%\end{tcolorbox}
%
%\subsection{Basic Usage}
%
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Basic wolf}}
%\wolf
%\end{tcblisting}
%
%\subsection{Options}
%
%The basic wolf can be modified by changing its colour:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Body colour}}
%\wolf[body=blue]
%\end{tcblisting}
%
%In addition to the colour of the body, the colour of the eyes can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Eye colour}}
%\wolf[eye=red]
%\end{tcblisting}
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Pupil Colour}}
%\wolf[pupil=red]
%\end{tcblisting}
%
%The rotation angle of its arms can be adjusted:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Rotating the arms}}
%\wolf[rotatearms=40]
%\end{tcblisting}
%
%And the wolf can lift its legs:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Walking}}
%\wolf[leftstep]
%\wolf[rightstep,xshift=2cm]
%\end{tcblisting}
%
%To view the wolf from behind:
-%\begin{tcblisting}{}
+%\begin{tcblisting}{title={Back view}}
%\wolf[back]
%\end{tcblisting}
%
-%The key \lstinline|3D| will make the wolf 3-dimensional:
-%\begin{tcblisting}{}
+%The key \saminline|3D| will make the wolf 3-dimensional:
+%\begin{tcblisting}{title={3D view}}
%\wolf[3D]
%\end{tcblisting}
%
-%And finally the \lstinline|contour| key will only draw the outlines:
-%\begin{tcblisting}{}
+%And finally the \saminline|contour| key will only draw the outlines:
+%\begin{tcblisting}{title={Contours}}
%\wolf[contour=black]
%\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings.sty
index ecd7562fb87..4db7af570ac 100644
--- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings.sty
+++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings.sty
@@ -9,10 +9,10 @@
% https://github.com/samcarter/tikzlings
%
% Released under the LaTeX Project Public License v1.3c or later
-% See http://www.latex-project.org/lppl.txt
+% See https://www.latex-project.org/lppl.txt
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzlings}[2022/06/17 version v1.0 Collection of packages to draw animals and other beings in TikZ]
+\ProvidesPackage{tikzlings}[2025/01/05 version v2.2 Collection of packages to draw animals and other beings in TikZ]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -49,13 +49,13 @@
\else
\ifdefined\pdfrandomseed % pdflatex
\else
- \ifdefined\randomseed
+ \ifdefined\randomseed
\let\pdfrandomseed\randomseed % post TL19 xelatex and lualatex
\else
\let\pdfrandomseed\time % pre TL19 xelatex
\fi
\fi
- \pgfmathsetseed{\number\pdfrandomseed}
+ \pgfmathsetseed{\number\pdfrandomseed}
\fi
% #1: tikzling name.
diff --git a/Master/texmf-dist/tex/latex/tikzmarmots/tikzlibrarymarmots.code.tex b/Master/texmf-dist/tex/latex/tikzmarmots/tikzlibrarymarmots.code.tex
index 41b7f854c25..4b3e80e64be 100644
--- a/Master/texmf-dist/tex/latex/tikzmarmots/tikzlibrarymarmots.code.tex
+++ b/Master/texmf-dist/tex/latex/tikzmarmots/tikzlibrarymarmots.code.tex
@@ -8,7 +8,7 @@
% https://github.com/samcarter/tikzmarmots
%
% Released under the LaTeX Project Public License v1.3c or later
-% See http://www.latex-project.org/lppl.txt
+% See https://www.latex-project.org/lppl.txt
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{tikzmarmots}
diff --git a/Master/texmf-dist/tex/latex/tikzmarmots/tikzmarmots-v1.sty b/Master/texmf-dist/tex/latex/tikzmarmots/tikzmarmots-v1.sty
index 7651accdfb2..6ec62bacf0f 100644
--- a/Master/texmf-dist/tex/latex/tikzmarmots/tikzmarmots-v1.sty
+++ b/Master/texmf-dist/tex/latex/tikzmarmots/tikzmarmots-v1.sty
@@ -9,7 +9,7 @@
% https://github.com/samcarter/tikzmarmots
%
% Released under the LaTeX Project Public License v1.3c or later
-% See http://www.latex-project.org/lppl.txt
+% See https://www.latex-project.org/lppl.txt
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesPackage{tikzmarmots}
diff --git a/Master/texmf-dist/tex/latex/tikzmarmots/tikzmarmots.sty b/Master/texmf-dist/tex/latex/tikzmarmots/tikzmarmots.sty
index 7a929dd930b..a0562c35fcb 100644
--- a/Master/texmf-dist/tex/latex/tikzmarmots/tikzmarmots.sty
+++ b/Master/texmf-dist/tex/latex/tikzmarmots/tikzmarmots.sty
@@ -9,9 +9,9 @@
% https://github.com/samcarter/tikzmarmots
%
% Released under the LaTeX Project Public License v1.3c or later
-% See http://www.latex-project.org/lppl.txt
+% See https://www.latex-project.org/lppl.txt
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzmarmots}[2024/04/24 version v2.1 Drawing marmots in TikZ]
+\ProvidesPackage{tikzmarmots}[2024/12/11 version v2.2 Drawing marmots in TikZ]
\RequirePackage{tikzlings-marmots}
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-bee.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-bee.lib.tex
deleted file mode 100644
index 66e613445d9..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-bee.lib.tex
+++ /dev/null
@@ -1,64 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-% TODO: integrate?
-% TODO: allow to specify rotation anchor
-
-\pingu@create@extra{bee}{%
- bee/.code = {\pingu@set@extra{bee}{true}\pingu@color{bee}{#1}},
- bee/.default = pingu@yellow!60!pingu@white,%
- bee body/.code = \pingu@color{bee@body}{#1},
- bee eyes/.code = \pingu@color{bee@eyes}{#1},
- bee wings/.code = \pingu@color{bee@wings}{#1},
- bee mouth/.code = \pingu@color{bee@mouth}{#1},
- bee blush/.code = \pingu@color{bee@blush}{#1},
- bee position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@bee@angle{#1}\def\pingu@x@bee@xshift{#2}\def\pingu@x@bee@yshift{#3}\def\pingu@x@bee@scale{#4}},
-}{bee body=pingu@black!82!gray,bee wings=pingu@blue!8!pingu@white,bee mouth=\pingu@color@bee@body,bee eyes=\pingu@color@bee@body,bee blush=pingu@red!21!\pingu@color@bee,bee position={-27.5:(8mm,15mm){.875}}}
-
-\def\pingu@bee@x@lbody{ (left) to[out=270,in=150] (0,-.725) to[out=30,in=270] (right)}
-
-\def\pingu@draw@ea@bee{%
-\scope[very path/.append style={line join=round},rotate around={\pingu@x@bee@angle:(\pingu@name-head)},shift={(\pingu@name-head)},shift={(\pingu@x@bee@xshift,\pingu@x@bee@yshift)},scale=\pingu@x@bee@scale]
-% wings
-\coordinate (wl) at(20:2.55mm);
-\coordinate (wr) at(160:2.55mm);
-\pingu@draw[fill=\pingu@color@bee@wings!80!white,rotate around=-32:(wl)]{\pingu@color@bee@body} (wl) ellipse [x radius=6.15mm, y radius=2.75mm];
-\pingu@draw[fill=\pingu@color@bee@wings!80!white,rotate around=32:(wr)]{\pingu@color@bee@body} (wr) ellipse [x radius=6.15mm, y radius=2.75mm];
-\pingu@draw[fill=\pingu@color@bee@wings,rotate around=19:(wl)]{\pingu@color@bee@body} (wl) ellipse [x radius=6.55mm, y radius=3.125mm];
-\pingu@draw[fill=\pingu@color@bee@wings,rotate around=-19:(wr)]{\pingu@color@bee@body} (wr) ellipse [x radius=6.55mm, y radius=3.125mm];
-% body
-\path (-.375,0) coordinate (left) -- (.375,0) coordinate (right);
-% TODO: block draw?
-\pingu@block[draw=\pingu@color@bee@body]{\pingu@color@bee@body} \pingu@bee@x@lbody;
-\scope\clip\pingu@bee@x@lbody;
-\foreach \angl in {30,1} {
-\pingu@block{\pingu@color@bee} (-\angl:.75) to[bend left=14] (180+\angl:.75) -- ++(0,-1.75mm)
- to[bend right=14] (-\angl-14:.75) -- cycle;
-}\endscope
-% left and right arm
-\foreach\m/\s/\k in {right/-2.45/95,left/-.75/80} {
-\scope[shift=(\m),yshift=\s,rotate around=\k:(\m),scale=.166]
-\pingu@block{\pingu@color@bee@body} (-.965,0) arc(270:90:.29) -- ++(1.233,0) arc (90:-90:.29) -- cycle;
-\endscope}
-% sting
-\pingu@draw[line cap=round,thick]{\pingu@color@bee@body} (0,-.725) -- ++(0,-.035);
-% head
-\pingu@draw[fill=\pingu@color@bee,rounded corners=1.5pt]{\pingu@color@bee@body} (.85mm,-.55mm) to[bend right=30,looseness=.9] ([xshift=1.45mm,yshift=1.35mm]right) arc(0:180:{(.75cm+2*1.45mm)/2} and {(.75cm+2*1.45mm)/2.05}) to[bend right=30,looseness=.9] (-.85mm,-.55mm) -- cycle;
-% eyes [intersect with left and right]
-\pingu@block{\pingu@color@bee@eyes} (left|-0,2.265mm)++(.6mm,0) coordinate (el) circle[radius=.6mm];
-\coordinate (ell) at ([yshift=-.8mm]el);
-\pingu@block[rotate around=3:(ell)]{\pingu@color@bee@blush} ([yshift=-.8mm]el) ellipse[x radius=.412mm, y radius=.165mm];
-\pingu@block{\pingu@color@bee@eyes} (right|-0,2.265mm)++(-.6mm,0) coordinate (er) circle[radius=.6mm];
-\coordinate (err) at ([yshift=-.8mm]er);
-\pingu@block[rotate around=-1:(err)]{\pingu@color@bee@blush} ([yshift=-.8mm]er) ellipse[x radius=.4mm, y radius=.155mm];
-% mouth
-\scope[yshift=1mm]
-\pingu@draw[semithick,line cap=round]{\pingu@color@bee@mouth} (-.6mm,0) arc (180:360:.6mm and .415mm);
-% antenna
-\pingu@draw[line cap=round]{\pingu@color@bee@body} (123:4mm) to[out=110,in=-41] ++(-1mm,3mm) coordinate (@);
-\pingu@block[rotate around=-41:(@)]{\pingu@color@bee@body} ([xshift=-.1mm,yshift=-.185mm]@) ellipse[x radius=.55mm,y radius=.35mm];
-\pingu@draw[line cap=round]{\pingu@color@bee@body} (57:4mm) to[out=70,in=180+41] ++(1mm,3mm) coordinate (@);
-\pingu@block[rotate around=41:(@)]{\pingu@color@bee@body} ([xshift=-.1mm,yshift=-.2mm]@) ellipse[x radius=.55mm,y radius=.35mm];
-\endscope
-\endscope
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-christmas.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-christmas.lib.tex
deleted file mode 100644
index b86e799d79f..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-christmas.lib.tex
+++ /dev/null
@@ -1,153 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\pingu@create@extra{santahat}{%
- santa hat/.code = \pingu@set@extra{santahat}{true}\pingu@color{santahat}{#1}\pgfqkeys{/pingu}{hair=\@pingu@none},
- santa hat/.default = pingu@red!87!pingu@black,
- santa hat second/.code = \pingu@color{santahat@second}{#1},
- santa hat bobble/.code = \pingu@color{santahat@bobble}{#1}
-}{santa hat second={pingu@white!97!\pingu@color@santahat},santa hat bobble={\pingu@color@santahat@second}}
-\def\pingu@draw@ea@santahat{%
-\path (\pingu@name-head-center)+(152:\pingu@w@half{} and \pingu@head@h@half) coordinate (\pingu@name-santa-right);
-\path (\pingu@name-head-center)+(5:\pingu@w@half{} and \pingu@head@h@half) coordinate (\pingu@name-santa-left);
-\pingu@layer{middle}[]
-\pingu@block{\pingu@color@santahat@second} (\pingu@name-santa-right) to[out=48,in=132] (\pingu@name-santa-left) to[out=30,in=-45,looseness=1.325] ++(0,3.2mm)
-to[out=135,in=47,looseness=1.025] coordinate[pos=.915] (\pingu@name-santa-ur) coordinate[pos=.055] (\pingu@name-santa-ul) ([yshift=2mm]\pingu@name-santa-right) to[out=240,in=140] cycle;
-\endpingu@layer
-\pingu@layer{background}[]
-\pingu@block{\pingu@color@santahat} (\pingu@name-santa-ur) arc(145:-25:11.85mm and 14.915mm)
- to[bend right=7] coordinate[pos=.5] (\pingu@name-santa-lc) ++(-1.11mm,.375mm) to[bend right=11] (\pingu@name-santa-ul) to[bend right=15] cycle;
-\pingu@block{\pingu@color@santahat@bobble} (\pingu@name-santa-lc) circle[radius=2.625mm];
-\endpingu@layer
-}
-\pingu@create@extra{santabeard}{%
- santa beard/.code = \pingu@set@extra{santabeard}{true}\pingu@color{santabeard}{#1},
- santa beard/.default = pingu@white!96!pingu@red!98!pingu@black!92!gray,
- santa beard string/.code = \pingu@color{santabeard@string}{#1}
-}{santa beard string=\pingu@color@body@main!85!pingu@black}
-\def\pingu@draw@ea@santabeard{%
-% \coordinate (\pingu@name-santa-beard-center) at ([yshift=1.25mm]\pingu@name-belly-center);
-\pingu@block{\pingu@color@santabeard@string} ([xshift=-.35mm,yshift=.575mm]\pingu@name-head-back-con-right) to[bend right=28,edge node={foreach[count=\i] \l in {0.03,0.085,...,0.992} {coordinate[pos=\l-rand*.015,yshift=-.85pt] (\pingu@name-santa-beard-\i)}}]
-([yshift=.575mm,xshift=.35mm]\pingu@name-head-back-con-left) arc(20:110:.05mm and .15mm) to[bend left=26] ([yshift=.575mm+.15mm,xshift=-.35mm]\pingu@name-head-back-con-right) to[bend right] cycle;
-\ifx\pingu@color@santabeard\@pingu@none\else% to allow for random
-\xdef\@pmaxY{18}\xdef\@pmaxYI{17}%
-\foreach[evaluate=\j as \maxj using int(\@pmaxY-\j),evaluate=\j as \widthred using \j/23pt] \j in {0,...,\@pmaxYI} {
-\foreach[remember=\i as \li (initially 0)] \i in {1,...,\maxj} {
- \pgfmathsetmacro\@ptmp{94+rand*2.6}
- \pingu@block{\pingu@color@santabeard!\@ptmp!pingu@black} (\pingu@name-santa-beard-\i) circle [radius=1.85pt-\widthred pt+rand*.35pt];
- \ifnum\li>0 % make middle of last
- \path (\pingu@name-santa-beard-\li) -- (\pingu@name-santa-beard-\i) coordinate[pos=.5,yshift=-1.1pt,xshift=.133pt] (\pingu@name-santa-beard-\li); % smoll shift
- \fi
-}}\fi
-}
-
-\pingu@create@extra{woolhat}{%
- wool hat/.code = \pingu@set@extra{woolhat}{true}\pingu@color{woolhat}{#1}\pgfqkeys{/pingu}{hair=\@pingu@none},
- wool hat/.default = pingu@blue!57!pingu@black,
- wool hat second/.code = \pingu@color{woolhat@second}{#1},
- wool hat bobble/.code = \pingu@color{woolhat@bobble}{#1}
-}{wool hat second={\pingu@color@woolhat!55!pingu@white},wool hat bobble={\pingu@color@woolhat@second}}
-\def\pingu@draw@ea@woolhat{%
-\path ([yshift=.5mm,xshift=.165mm]\pingu@name-head-center)+(165:\pingu@w@half{} and \pingu@head@h@half) coordinate (\pingu@name-wool-right);
-\path ([yshift=.5mm,xshift=-.045mm]\pingu@name-head-center)+(4:\pingu@w@half{} and \pingu@head@h@half) coordinate (\pingu@name-wool-left);
-\pingu@layer{middle}[]
-\pingu@block{\pingu@color@woolhat@second} (\pingu@name-wool-right) to[out=37,in=170] (\pingu@name-wool-left) to[out=50,in=-55] ++(0,1.52mm) coordinate (\pingu@name-wool-left-up)
-to[out=167,in=38] coordinate[pos=.915] (\pingu@name-wool-ur) coordinate[pos=.055] (\pingu@name-wool-ul) ([yshift=1.5mm]\pingu@name-wool-right) coordinate (\pingu@name-wool-right-up) to[out=240,in=140] cycle;
-\endpingu@layer
-\path (\pingu@name-wool-left-up) -- (\pingu@name-wool-right-up) coordinate[pos=.455,yshift=9.75mm] (@mid);
-\pingu@block{\pingu@color@woolhat} (\pingu@name-wool-right-up) to[out=71,in=203] [rounded corners=2pt] (@mid) to[out=-34,in=100] [sharp corners] (\pingu@name-wool-left-up) to[in=37,out=172] cycle;
-\pingu@layer{background}[]
-\pingu@block{\pingu@color@woolhat@bobble} (@mid) circle [radius=1.25mm];
-\endpingu@layer
-}
-
-
-\pingu@create@extra{deerhat}{%
- deer hat/.code = \pingu@set@extra{deerhat}{true}\pingu@color{deerhat}{#1}\pgfqkeys{/pingu}{hair=\@pingu@none},
- deer hat/.default = pingu@bronze!57!pingu@black,
- deer hat b/.code = \pingu@color{deerhat@b}{#1},
- deer hat band/.code = \pingu@color{deerhat@band}{#1},
-}{deer hat band={\pingu@color@deerhat!85!pingu@black},deer hat b=\pingu@color@deerhat}
-\pgfmathsetmacro\pingu@deerhat@baseang@l{90-360*(1-\pinguanglehl)}
-\pgfmathsetmacro\pingu@deerhat@baseang@r{90-360*(1-\pinguanglehr)}
-\def\pingu@deerhat@baseoff{47}
-\def\pingu@deerhat@yshift{.15mm}
-\def\pingu@deerhat@linewidth{1.32mm}
-\def\pingu@deerhat@headoff@l{22}
-\def\pingu@deerhat@headoff@r{19}
-\def\pingu@draw@ea@deerhat{%
-\path ([yshift=-\pingu@deerhat@yshift]\pingu@name-head-left) arc (\pingu@deerhat@baseang@l:\pingu@deerhat@baseang@l-\pingu@deerhat@baseoff:\pingu@w@half{} and \pingu@head@h@half) coordinate[yshift=.05mm] (@target);
-\pingu@draw[line width=.7mm]{\pingu@color@deerhat@band} ([xshift=-.8mm]@target) arc (\pingu@deerhat@baseang@l-\pingu@deerhat@baseoff:360+\pingu@deerhat@baseang@r+\pingu@deerhat@baseoff:\pingu@w@half{}-.8mm and \pingu@head@h@half);
-
-\path ([yshift=-\pingu@deerhat@yshift]\pingu@name-head-top) arc (90:90-\pingu@deerhat@headoff@l:\pingu@w@half{} and \pingu@head@h@half) coordinate (@left);
-\path ([yshift=-\pingu@deerhat@yshift]\pingu@name-head-top) arc (90:90+\pingu@deerhat@headoff@r:\pingu@w@half{} and \pingu@head@h@half) coordinate (@right);
-
-\pgfonlayer{background}
-\pingu@draw[line width=\pingu@deerhat@linewidth,rounded corners=2pt,line cap=round]{\pingu@color@deerhat} (@left) to[bend right=4] ++(.85mm,1.5mm) coordinate (@a) -- ++(3.15mm,.5mm) coordinate (@b) -- ++(4.65mm,4.35mm) coordinate[pos=.5] (@c) to[bend right=10] ++(-.75mm,2.55mm);
-\pingu@draw[line width=\pingu@deerhat@linewidth,rounded corners=2pt,line cap=round]{\pingu@color@deerhat} ([xshift=-.135mm,yshift=-.425mm]@a) to[bend left=3] ++(1mm,3.9mm) ([xshift=-.4mm,yshift=-.05mm]@b) to[bend right=2] ++(3.75mm,.1mm) (@c) to[bend left=12] ++(-1mm,3.5mm);
-\pingu@draw[line width=\pingu@deerhat@linewidth,rounded corners=2pt,line cap=round]{\pingu@color@deerhat@b} (@right) to[bend left=4] ++(-.85mm,1.5mm) coordinate (@a) -- ++(-3.15mm,.5mm) coordinate (@b) -- ++(-4.65mm,4.35mm) coordinate[pos=.5] (@c) to[bend left=10] ++(.75mm,2.55mm);
-\pingu@draw[line width=\pingu@deerhat@linewidth,rounded corners=2pt,line cap=round]{\pingu@color@deerhat@b} ([yshift=-.425mm,xshift=.135mm]@a) to[bend right=3] ++(-1mm,3.9mm) ([xshift=.4mm,yshift=-.05mm]@b) to[bend right=2] ++(-3.75mm,.1mm) (@c) to[bend right=12] ++(1mm,3.5mm);
-\endpgfonlayer
-}
-
-\pingu@create@wing@extra{present}{%
- present \@lr/.code = {\pingu@set@extra{present\@lr}{true}\pingu@color{present\@lr}{##1}},
- present \@lr/.default = pingu@red!50!pingu@black!60!red,
- present \@lr\space width/.code = \@namedef{pingu@present@\@lr @width}{##1},
- present \@lr\space height/.code = \@namedef{pingu@present@\@lr @height}{##1},
- present \@lr\space ribbon/.code = \pingu@color{present\@lr @ribbon}{##1},%
- present \@lr\space band/.code = \pingu@color{present\@lr @band}{##1},%
- present \@lr\space band width/.code = \@namedef{pingu@present@\@lr @band@width}{##1},
- present \@lr\space xshift/.code = \@namedef{pingu@present@\@lr @xshift}{##1},
- present \@lr\space yshift/.code = \@namedef{pingu@present@\@lr @yshift}{##1},
- present \@lr\space band second height/.code = \@namedef{pingu@present@\@lr @band@second@height}{##1},
- present \@lr\space band second yshift/.code = \@namedef{pingu@present@\@lr @band@second@yshift}{##1},
- present \@lr\space lid/.code = \pingu@color{present\@lr @lid}{##1},%
- present \@lr\space lid height/.code = \@namedef{pingu@present@\@lr @lid@height}{##1},
- present \@lr\space lid overhang/.code = \@namedef{pingu@present@\@lr @lid@overhang}{##1},
- present \@lr\space lid yshift/.code = \@namedef{pingu@present@\@lr @lid@yshift}{##1},
- present \@lr\space lid band/.code = \pingu@color{present\@lr @lid@band}{##1},%
-}{present \@lr\space band=pingu@green!70!pingu@black!90!pingu@white,present \@lr\space width=7.75mm,present \@lr\space band width=1.75mm,present \@lr\space height=7mm,present \@lr\space yshift=-0.25*(\csname pingu@present@\@lr @height\endcsname),present \@lr\space band second height=\csname pingu@present@\@lr @band@width\endcsname, present \@lr\space band second yshift=0.5*(\csname pingu@present@\@lr @height\endcsname),present \@lr\space xshift=-0.25*(\csname pingu@present@\@lr @width\endcsname),present \@lr\space lid=\csname pingu@color@present\@lr\endcsname!92!pingu@black,present \@lr\space lid height=1.33mm,present \@lr\space lid overhang=.125mm,present \@lr\space lid yshift=0,present \@lr\space lid band=\csname pingu@color@present\@lr @band\endcsname!98!pingu@black,present \@lr\space ribbon=\csname pingu@color@present\@lr @band\endcsname!97!pingu@black}
-
-% TODO: more ribbon color control
-% #1 wing
-\def\pingu@draw@wi@present#1{%
- \pingu@setup@wing{present}{#1}%
- \scope[rotate around={\@angle:(\pingu@name-wing-#1)}]
- \pingu@block[rounded corners=2pt]{\@col}(\pingu@name-wing-#1)++(-{0.5*(\csname pingu@present@#1@width\endcsname)+\csname pingu@present@#1@xshift\endcsname},{\csname pingu@present@#1@yshift\endcsname}) coordinate (@ll) rectangle ++({\csname pingu@present@#1@width\endcsname},{\csname pingu@present@#1@height\endcsname}) coordinate (@ur);
- % vert band
- \pingu@block{\csname pingu@color@present#1@band\endcsname}(@ll)++({0.5*(\csname pingu@present@#1@width\endcsname)-0.5*(\csname pingu@present@#1@band@width\endcsname)},0) rectangle ++({\csname pingu@present@#1@band@width\endcsname},{\csname pingu@present@#1@height\endcsname});
- % horiz band
- \pingu@block{\csname pingu@color@present#1@band\endcsname}(@ll)++(0,{\csname pingu@present@#1@band@second@yshift\endcsname-0.5*(\csname pingu@present@#1@band@second@height\endcsname)}) rectangle ++({\csname pingu@present@#1@width\endcsname},{\csname pingu@present@#1@band@second@height\endcsname});
- % lid
- \pingu@block[rounded corners=.75pt]{\csname pingu@color@present#1@lid\endcsname} ([yshift={\csname pingu@present@\@lr @lid@yshift\endcsname},xshift=\csname pingu@present@\@lr @lid@overhang\endcsname]@ur) rectangle ++({-\csname pingu@present@#1@width\endcsname-2*(\csname pingu@present@\@lr @lid@overhang\endcsname)},-\csname pingu@present@#1@lid@height\endcsname) coordinate (@ll);
- % upper lid band
- \pingu@block{\csname pingu@color@present#1@lid@band\endcsname}(@ll)++({0.5*(\csname pingu@present@#1@width\endcsname)-0.5*(\csname pingu@present@#1@band@width\endcsname)+\csname pingu@present@\@lr @lid@overhang\endcsname},0) rectangle ++({\csname pingu@present@#1@band@width\endcsname},{\csname pingu@present@#1@lid@height\endcsname});
- % ribbon
- \path (@ll)++({0.5*(\csname pingu@present@#1@width\endcsname)+\csname pingu@present@\@lr @lid@overhang\endcsname+0.2*(\csname pingu@present@#1@band@width\endcsname)},{\csname pingu@present@#1@lid@height\endcsname+.25mm}) coordinate (@top);
- \pingu@block[even odd rule]{\csname pingu@color@present#1@ribbon\endcsname} (@top) to[out=40,in=110] ++(4mm,1mm)
- to[out=-70,in=-20] ++(-4mm,-1.5mm) to[bend left=55] cycle ([xshift=.5mm]@top) to[out=40,in=110] ++(2.55mm,.5mm)
- to[out=-70,in=-20] [rounded corners=1pt] ++(-2.85mm,-.835mm) -- cycle;
- \path (@ll)++({0.5*(\csname pingu@present@#1@width\endcsname)+\csname pingu@present@\@lr @lid@overhang\endcsname-0.2*(\csname pingu@present@#1@band@width\endcsname)},{\csname pingu@present@#1@lid@height\endcsname+.25mm}) coordinate (@top);
- \pingu@block[even odd rule]{\csname pingu@color@present#1@ribbon\endcsname} (@top) to[out=180-40,in=180-110] ++(-3.6mm,1mm)
- to[out=-110,in=-160] ++(3.6mm,-1.5mm) to[bend right=55] cycle ([xshift=-.5mm]@top) to[out=140,in=70] ++(-2.55mm,.5mm)
- to[out=-110,in=-160] [rounded corners=1pt] ++(2.55mm,-.75mm) -- cycle;
- \pingu@block[rounded corners=.5pt]{\csname pingu@color@present#1@ribbon\endcsname} (@top)++(-.3mm,-.65mm) rectangle ++(1.3mm,.65mm); % TODO: make that round? (i.e., bend edges)
- \endscope
-}
-
-\pingu@create@wing@extra{snowball}{%
- snowball \@lr/.code = {\pingu@set@extra{snowball\@lr}{true}\pingu@color{snowball\@lr}{##1}},
- snowball \@lr/.default = pingu@white!90!pingu@black,
- snowball \@lr\space size/.code = \expandafter\def\csname pingu@snowball@\@lr @size\endcsname{##1},
- snowball \@lr\space xshift/.code = \expandafter\def\csname pingu@snowball@\@lr @xshift\endcsname{##1},
- snowball \@lr\space yshift/.code = \expandafter\def\csname pingu@snowball@\@lr @yshift\endcsname{##1}
-}{snowball \@lr\space size=2.33mm, snowball \@lr\space xshift=0pt, snowball \@lr\space yshift=0pt}
-
-% #1 wing
-% TODO: shifts
-\def\pingu@draw@wi@snowball#1{%
-\pingu@setup@wing{snowball}{#1}%
- \pingu@draw[opacity=.35]{\@col} ([xshift=\csname pingu@snowball@#1@xshift\endcsname,yshift=\csname pingu@snowball@#1@yshift\endcsname]\pingu@name-wing-#1) coordinate (@) circle[radius=\csname pingu@snowball@#1@size\endcsname];
- \pingu@block[rotate around={\@angle-1:(\pingu@name-wing-#1)},decoration={random steps,segment length=1pt,amplitude=.075pt},decorate,rounded corners=.35pt,save path=\snowball@outer]{\@col}(@) circle[radius=\csname pingu@snowball@#1@size\endcsname];
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-cloak.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-cloak.lib.tex
deleted file mode 100644
index cef863291e2..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-cloak.lib.tex
+++ /dev/null
@@ -1,78 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\newif\if@pingu@x@cloak@wings
-\pingu@create@extra{cloak}{%
- cloak/.code = \pingu@set@extra{cloak}{true}\pingu@color{cloak}{#1},
- cloak/.default = pingu@bronze,
- cloak cap/.code = \pingu@color{cloak@cap}{#1},
- cloak wings color/.code = \pingu@color{cloak@wings}{#1},
- cloak bottom color/.code = \pingu@color{cloak@bottom}{#1},
- cloak front color/.code = \pingu@color{cloak@front}{#1},
- cloak padding/.code = \def\pingu@x@cloak@padding{#1},
- cloak wings/.is if = @pingu@x@cloak@wings,
- cape/.style = {/pingu/cloak=#1, /pingu/cloak wings=false,/pingu/cloak front color=\@pingu@none, /pingu/cloak cap=\@pingu@none,/pingu/cloak front color=\@pingu@none},
- cape/.default = pingu@bronze,
-}{cloak padding=1.95mm,cloak bottom color=\pingu@color@cloak!90!black,cloak cap=\pingu@color@cloak!98!pingu@black,cloak front color=\pingu@color@cloak!90!white,cloak wings color=\pingu@color@cloak@front!94!pingu@black,cloak wings=true}
-\def\pingu@draw@cloth@cloak@behind{%
- \pingu@block[bottom color=\pingu@color@cloak@bottom,top color=\pingu@color@cloak]{\pingu@color@cloak} (\pingu@name-bottom-center)++(-\pingu@x@cloak@padding-\pingu@w@half,-.5mm) arc (180:0:{\pingu@x@cloak@padding+\pingu@w@half} and \pingu@one) to[bend left=1] (\pingu@name-wings-side-left) arc(0:180:\pingu@w@half{} and .75mm) to[bend left=1] cycle;
-}
-
-\def\pingu@draw@cloth@cloak@middle{\pingu@block[rounded corners=.7mm]{\pingu@color@cloak@front}
-(\pingu@name-bottom-center)++(-\pingu@x@cloak@padding-\pingu@w@half,-.5mm) arc (180:250:{\pingu@x@cloak@padding+\pingu@w@half} and \pingu@one) to[bend right=6]
-([xshift=1.3mm,yshift=.4mm]\pingu@name-wings-side-right) to[bend right=3] ([yshift=.65mm]\pingu@name-wings-side-right);
-\pingu@block[rounded corners=.7mm]{\pingu@color@cloak@front}
-(\pingu@name-bottom-center)++(\pingu@x@cloak@padding+\pingu@w@half,-.5mm) arc (0:-70:{\pingu@x@cloak@padding+\pingu@w@half} and \pingu@one) to[bend left=6]
-([xshift=-1.3mm,yshift=.4mm]\pingu@name-wings-side-left) to[bend left=3] ([yshift=.65mm]\pingu@name-wings-side-left);}
-
-% TODO: if flags to draw parts
-\def\pingu@draw@cloth@cloak{%
-\scope[rounded corners=.6\p@]
- % wings
- \if@pingu@x@cloak@wings
- \edef\@la{\csname @pingu@wingdown@\@pingu@select@leftwing@ @\endcsname}
- \ifnum\@la>0 % wing is going inverted up or down / \ => left
- \pingu@layer{foreground}[]
- \ifnum\@la>70
- \pingu@block[right color=\pingu@color@cloak@front,left color=\pingu@color@cloak@wings]{\pingu@color@cloak@wings} (\pingu@name-wing-left-start)++(.5mm,-3.5mm) to[bend left=10] (\pingu@name-wing-left-low) to[bend right=13] (\pingu@name-wing-left-up) to[bend left=3] (\pingu@name-wing-left-start-up) to[bend left] ([xshift=.35mm,yshift=1mm]\pingu@name-wing-left-start);
- \else % down
- \pingu@block[right color=\pingu@color@cloak@front,left color=\pingu@color@cloak@wings]{\pingu@color@cloak@wings} (\pingu@name-wing-left-start)++(.5mm,-3.5mm) to[bend left=10] (\pingu@name-wing-left-low) to[bend right=13] (\pingu@name-wing-left-up) to[bend left=3] ([xshift=1mm,yshift=1mm]\pingu@name-wing-left-start-up) to[bend left=4.5] ([xshift=.5mm,yshift=-3.5mm]\pingu@name-wing-left-start);
- \fi
- \endpingu@layer
- \else
- \ifnum\@la<-90% normal up \ / => left side
- \pingu@block[upper right=\pingu@color@cloak@wings,lower right=\pingu@color@cloak@front,lower left=\pingu@color@cloak@front,upper left=\pingu@color@cloak@front]{\pingu@color@cloak@wings} ([xshift=.25mm]\pingu@name-wing-left-start-low) to[bend right=14] (\pingu@name-wing-left-low) to[bend left=8] ([yshift=-.5mm]\pingu@name-wing-left-up) to[bend right=17] ([yshift=1.6mm]\pingu@name-wing-left-start-up) to[bend right=13] ([xshift=-.15mm,yshift=.15mm]\pingu@name-waist-left) -- cycle;
- \else % normal and hugging down => right
- \pingu@block[top color=\pingu@color@cloak@front,middle color=\pingu@color@cloak,bottom color=\pingu@color@cloak@wings]{\pingu@color@cloak@wings} plot[smooth] coordinates {([xshift=-1.38mm]\pingu@name-wings-side-left) (\pingu@name-wing-left-start-low) ([yshift=.65mm,xshift=-.65mm]\pingu@name-wing-left-low) ([yshift=.65mm,xshift=-.65mm]\pingu@name-wing-left-up) ([xshift=.68mm]\pingu@name-wings-side-left) ([xshift=-1.38mm]\pingu@name-wings-side-left)};
- \fi
- \fi
- \edef\@ra{\csname @pingu@wingdown@\@pingu@select@rightwing@ @\endcsname}
- \ifnum\@ra>0 % wing is going inverted up or down => right
- \pingu@layer{foreground}[]
- \ifnum\@ra>70
- \pingu@block[left color=\pingu@color@cloak@front,middle color=\pingu@color@cloak@front,right color=\pingu@color@cloak@wings]{\pingu@color@cloak@wings} (\pingu@name-wing-right-start-low) to[bend right=10] (\pingu@name-wing-right-low) to[bend left=13] (\pingu@name-wing-right-up) to[bend right=3] (\pingu@name-wing-right-start-up) -- ++(-.25mm,0mm) to[bend right=11] cycle;
- \else
- \pingu@block[left color=\pingu@color@cloak@front,middle color=\pingu@color@cloak@front,right color=\pingu@color@cloak@wings]{\pingu@color@cloak@wings} ([xshift=1mm,yshift=-1mm]\pingu@name-wing-right-start-low) to[bend right=10] (\pingu@name-wing-right-low) to[bend left=13] (\pingu@name-wing-right-up) to[bend right=3] ([xshift=-1mm,yshift=1mm]\pingu@name-wing-right-start-up) to[bend right=4.5] ([xshift=-.5mm,yshift=-3.5mm]\pingu@name-wing-right-start);
- \fi
- \endpingu@layer
- \else
- \ifnum\@ra<-90% normal up => right side
- \pingu@block[upper left=\pingu@color@cloak@wings,lower left=\pingu@color@cloak@front,lower right=\pingu@color@cloak@front,upper right=\pingu@color@cloak@front]{\pingu@color@cloak@wings} ([xshift=.25mm]\pingu@name-wing-right-start-low) to[bend left=14] (\pingu@name-wing-right-low) to[bend right=8] ([yshift=-.5mm]\pingu@name-wing-right-up) to[bend left=17] ([yshift=1.6mm]\pingu@name-wing-right-start-up) to[bend left=13] ([xshift=.15mm,yshift=.15mm]\pingu@name-waist-right) -- cycle;
- \else % normal and hugging down => left
- \pingu@block[top color=\pingu@color@cloak@front,middle color=\pingu@color@cloak@front,bottom color=\pingu@color@cloak@wings]{\pingu@color@cloak@wings} plot[smooth] coordinates {([xshift=1.38mm]\pingu@name-wings-side-right) (\pingu@name-wing-right-start-low) ([yshift=.85mm,xshift=-.35mm]\pingu@name-wing-right-low) ([yshift=.85mm,xshift=.35mm]\pingu@name-wing-right-up) ([xshift=-.68mm]\pingu@name-wings-side-right) ([xshift=1.38mm]\pingu@name-wings-side-right)};
- \fi
- \fi
-\fi
- % cape
- \pingu@block[rounded corners=.8mm]{\pingu@color@cloak@cap} ([xshift=.85mm,yshift=-2.75mm]\pingu@name-wing-left-start) to[bend left=4] ([xshift=-.45mm,yshift=-.65mm]\pingu@name-wings-side-left) to[bend right=3]
- (\pingu@name-head)
- to[bend right=3]
- ([xshift=.4mm,yshift=-.65mm]\pingu@name-wings-side-right) [rounded corners=.15mm] to[bend left=3] ([xshift=-.85mm,yshift=-2.75mm]\pingu@name-wing-right-start)
- to[bend left=8]
- ([xshift=-.66mm]\pingu@name-wings-side-right)
- [rounded corners=.15mm]
- to[bend left=32] ++(\pingu@w@half+.66mm,\pingu@w@half+1.2\pingu@one)
- to[bend left=32] ++(\pingu@w@half+.66mm,-\pingu@w@half-1.2\pingu@one)
- to[bend left=8] cycle;
-\endscope
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-devil.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-devil.lib.tex
deleted file mode 100644
index a1ec5f9a559..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-devil.lib.tex
+++ /dev/null
@@ -1,90 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\pingu@create@extra{devilhorns}{%
- devilhorns/.forward to = /pingu/devil horns,
- devil-horns/.forward to = /pingu/devil horns,
- devil horns/.code = \pingu@set@extra{devilhorns}{true}\pingu@color{devilhorns}{#1},
- devil horns/.default = pingu@purple,
- devil horns b/.code = \pingu@color{devilhorns@b}{#1},
- devilhorns b/.forward to = /pingu/devil horns b,
- devil-horns b/.forward to = /pingu/devil horns b
-}{devil horns b=\pingu@color@devilhorns}
-
-\pgfmathsetmacro\pingu@devilhorns@baseang@l{90-360*(1-\pinguanglehl)}
-\pgfmathsetmacro\pingu@devilhorns@baseang@r{90-360*(1-\pinguanglehr)}
-\def\pingu@devilhorns@baseoff{12}
-\def\pingu@devilhorns@yshift{.65mm}
-\def\pingu@draw@ea@devilhorns{%
- % 90 - 360*.06
- \pingu@block{\pingu@color@devilhorns} ([yshift=-\pingu@devilhorns@yshift]\pingu@name-head-left) arc (\pingu@devilhorns@baseang@l:\pingu@devilhorns@baseang@l-\pingu@devilhorns@baseoff:\pingu@w@half{} and \pingu@head@h@half) coordinate (\pingu@name-devilhorns-left-goal) to[out=32,in=-32,looseness=.9] ++(.3mm,2.65mm) to[bend left=17] ([yshift=-\pingu@devilhorns@yshift]\pingu@name-head-left) -- cycle;
- \pingu@block{\pingu@color@devilhorns} ([yshift=-\pingu@devilhorns@yshift]\pingu@name-head-left) to [bend right=38] (\pingu@name-devilhorns-left-goal) to[bend right=30] ([yshift=-\pingu@devilhorns@yshift]\pingu@name-head-left) -- cycle;
- \pingu@block{\pingu@color@devilhorns@b} ([yshift=-\pingu@devilhorns@yshift]\pingu@name-head-right) arc (\pingu@devilhorns@baseang@r:\pingu@devilhorns@baseang@r+\pingu@devilhorns@baseoff:\pingu@w@half{} and \pingu@head@h@half) coordinate (\pingu@name-devilhorns-right-goal) to[out=148,in=-148,looseness=.9] ++(-.3mm,2.65mm) to[bend right=17] ([yshift=-\pingu@devilhorns@yshift]\pingu@name-head-right) -- cycle;
- \pingu@block{\pingu@color@devilhorns@b} ([yshift=-\pingu@devilhorns@yshift]\pingu@name-head-right) to [bend left=38] (\pingu@name-devilhorns-right-goal) to[bend left=30] ([yshift=-\pingu@devilhorns@yshift]\pingu@name-head-right) -- cycle;
-}
-
-% wip hack
-\colorlet{pingu@devil@ring}{pingu@black}
-\def\pingu@devil@x@opacity{.75}
-\pingu@eyes@s{devil}{%
-\pingu@layer{foreground}[]
- \pingu@block{pingu@devil@ring} ([yshift=.75mm,xshift=\pingu@eye@shift]\pingu@name-eye-back-left) coordinate (\pingu@name-eye-left) ellipse [x radius=.1535cm, y radius=.1575cm];
- \pingu@block{\pingu@color@eye@second@left} ([yshift=.75mm,xshift=\pingu@eye@shift]\pingu@name-eye-back-left) coordinate (\pingu@name-eye-left) ellipse [x radius=.1325cm, y radius=.1375cm];
- \fill[\pingu@color@eye@left,/pingu/@glow] (\pingu@name-eye-left) circle [radius=1.325mm];
- \pingu@block[fill opacity=\pingu@devil@x@opacity]{\pingu@color@eye@left} (\pingu@name-eye-left)++(0,.36) to[bend right=58] ++(.36,-.36) to[bend right=58] ++(-.36,-.36) to[bend right=58] ++(-.36,.36) to[bend right=58] cycle;
- \fill[/pingu/@glow,fill=\pingu@color@eye@left!20!pingu@yellow!15!pingu@white] (\pingu@name-eye-left)++(0,.10) to[bend right=60] ++(.10,-.10) to[bend right=60] ++(-.10,-.10) to[bend right=60] ++(-.10,.10) to[bend right=60] cycle;
- \fill[\pingu@color@eye@left!20!pingu@yellow!7!pingu@white] (\pingu@name-eye-left) circle [radius=.5pt]; %
- \pingu@block{pingu@white} (\pingu@name-eye-left) circle [radius=.15pt];
-\endpingu@layer
-}{%
-\pingu@layer{foreground}[]
- \pingu@block{pingu@black} ([yshift=.75mm,xshift=-\pingu@eye@shift]\pingu@name-eye-back-right) coordinate (\pingu@name-eye-right) ellipse [x radius=.1535cm, y radius=.1575cm];
- \pingu@block{\pingu@color@eye@second@right} ([yshift=.75mm,xshift=-\pingu@eye@shift]\pingu@name-eye-back-right) coordinate (\pingu@name-eye-right) ellipse [x radius=.1325cm, y radius=.1375cm];
- \fill[\pingu@color@eye@right,/pingu/@glow] (\pingu@name-eye-right) circle [radius=1.325mm];
- \pingu@block[fill opacity=.75]{\pingu@color@eye@right} (\pingu@name-eye-right)++(0,.36) to[bend right=58] ++(.36,-.36) to[bend right=58] ++(-.36,-.36) to[bend right=58] ++(-.36,.36) to[bend right=58] cycle;
- \fill[/pingu/@glow,fill=\pingu@color@eye@right!20!pingu@yellow!15!pingu@white] (\pingu@name-eye-right)++(0,.10) to[bend right=60] ++(.10,-.10) to[bend right=60] ++(-.10,-.10) to[bend right=60] ++(-.10,.10) to[bend right=60] cycle;
- \fill[\pingu@color@eye@right!20!pingu@yellow!7!pingu@white] (\pingu@name-eye-right) circle [radius=.5pt]; %
- \pingu@block{pingu@white} (\pingu@name-eye-right) circle [radius=.15pt];
-\endpingu@layer
-}[pingu@purple]
-
-\pingu@create@wing@extra{devilfork}{%
- devil fork \@lr/.code = {\pingu@set@extra{devilfork\@lr}{true}\pingu@color{devilfork\@lr}{##1}},
- devil fork \@lr/.default = pingu@red,
- devil fork \@lr\space second/.code= \pingu@color{devilfork\@lr @second}{##1},
- devil fork \@lr\space length/.code =\expandafter\def\csname pingu@devilfork@\@lr @length\endcsname{##1}
-}{devil fork \@lr\space length=20mm,devil fork \@lr\space second=pingu@bronze!10!black}
-\def\pingu@draw@wi@devilfork#1{%
- \pingu@setup@wing{devilfork}{#1}%
-\scope[rotate around={\@angle:(\pingu@name-wing-#1)}]
- \pingu@block{\csname pingu@color@devilfork#1@second\endcsname} (\pingu@name-wing-#1)++(\@sidesign*-.2mm,-7mm) -- ++(0,\csname pingu@devilfork@#1@length\endcsname) arc(180:0:\@sidesign*.4mm and .3mm) coordinate[pos=.5] (\pingu@name-devilfork-#1-top) -- ++(0,-\csname pingu@devilfork@#1@length\endcsname) arc(360:180:\@sidesign*.4mm and .3mm) -- cycle;
- \pingu@block{\@col} ([yshift=4mm]\pingu@name-devilfork-#1-top) to[out=240,in=90] ++(-.65mm,-4mm) to[out=180,in=-60] ++(-1mm,5.5mm) to[out=240,in=90] ++(-.65mm,-5.9mm) to[bend right] ++(4.4mm,0) to[out=90,in=-60] ++(-.65mm,5.9mm) to[out=240,in=0] ++(-1mm,-5.5mm) to[out=90,in=-60] cycle;
-\endscope
-}
-
-\pingu@create@extra{devilwings}{%
- devilwings/.forward to = /pingu/devil wings,
- devil-wings/.forward to = /pingu/devil wings,
- devil wings/.code = \pingu@set@extra{devilwings}{true}\pingu@color{devilwings}{#1},
- devil wings/.default = pingu@black,
- devil wings b/.code = \pingu@color{devilwings@b}{#1},
- devilwings b/.forward to = /pingu/devil wings b,
- devil-wings b/.forward to = /pingu/devil wings b
-}{devil wings b=\pingu@color@devilwings}
-
-% taken over and adapted from the old penguins
-% lower wing based on https://tex.stackexchange.com/a/464828
-\def\@pingu@devilwings@lower@wing@code{(0,0.2) -- (0,1.4) -- (-2,1.4) .. controls (-4,0.8) .. (-4.3,0.2) .. controls (-4.48,0.08) .. (-4.5,-0.15) .. controls (-4.9,-0.5) and (-4.9,-0.7) .. (-4.7,-0.9) .. controls (-4.7,-1) .. (-4.6,-1.1) .. controls (-4.9,-1.8) .. (-4.2,-2) -- (-4,-2.4) .. controls (-4.1,-3) .. (-3.6,-3.1) -- (-3.25,-3.7) .. controls (-3.5,-4.5) .. (-4.1,-5.4) .. controls (-4.2,-5.9) and (-3.6,-5.9) .. (-3.5,-5.4) .. controls (-3.55,-5.1) and (-3.4,-4.8) .. (-3,-4.1) -- (-2.6,-4.1) .. controls (-2.35,-4.35) .. (-2,-4.2) .. controls (-1.75,-4.6) and (-1.25,-4.6) .. (-1.25,-3.90) .. controls (-0.9,-4) .. (-0.6,-2.8) -- (-0.3,-1) -- (0,0.2)}
-
-\def\pingu@draw@eb@devilwings{%
-\pgfonlayer{background}
- \scope[scale=0.225,shift={(\pingu@name-head-back-con-right)}]
- \pingu@block[thick,rounded corners=.75mm]{\pingu@color@devilwings} \@pingu@devilwings@lower@wing@code;
- \pingu@block[thick]{\pingu@color@devilwings} (0,1) -- (0,2.2) [rounded corners=5mm] parabola[bend at end] (-6,6) -- (-5,1) -- (0,1);
- \endscope
- \scope[scale=0.225,shift={(\pingu@name-head-back-con-left)},xscale=-1]
- \pingu@block[thick,rounded corners=0.75mm]{\pingu@color@devilwings@b} \@pingu@devilwings@lower@wing@code;
- \pingu@block[thick]{\pingu@color@devilwings@b} (0,1) -- (0,2.2) [rounded corners=5mm] parabola[bend at end] (-6,6) -- (-5,1) -- (0,1);
- \endscope
-\endpgfonlayer
-}
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-emotions.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-emotions.lib.tex
deleted file mode 100644
index b482ccb2201..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-emotions.lib.tex
+++ /dev/null
@@ -1,56 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\pingu@eyes@s{sad}{%
- \path (\pingu@name-eye-back-left)++(\pingu@eye@shift,.75mm) coordinate (\pingu@name-eye-left);
- \pingu@block{\pingu@color@eye@left} (\pingu@name-eye-left)++(15:.1225cm and .1275cm) arc (15:-245:.1225cm and .1275cm) to[out=-45,in=175] cycle;
-}{%
- \path (\pingu@name-eye-back-right)++(-\pingu@eye@shift,.75mm) coordinate (\pingu@name-eye-right);
- \pingu@block{\pingu@color@eye@right} (\pingu@name-eye-right)++(165:.1225cm and .1275cm) arc (165:425:.1225cm and .1275cm) to[out=225,in=5] cycle;
-}
-
-\pingu@eyes@s{angry}{%
- \path (\pingu@name-eye-back-left)++(\pingu@eye@shift,.75mm) coordinate (\pingu@name-eye-left);
- \pingu@block{\pingu@color@eye@left} (\pingu@name-eye-left) ellipse [x radius=.1225cm, y radius=.1275cm];
- \pingu@block{\pingu@color@body@front} (\pingu@name-eye-left) ++(120:.1225cm and .1275cm) ellipse [x radius=1.5mm,y radius=.5mm];
-}{%
- \path (\pingu@name-eye-back-right)++(-\pingu@eye@shift,.75mm) coordinate (\pingu@name-eye-right);
- \pingu@block{\pingu@color@eye@right} (\pingu@name-eye-right) ellipse [x radius=.1225cm, y radius=.1275cm];
- \pingu@block{\pingu@color@body@front} (\pingu@name-eye-right) ++(60:.1225cm and .1275cm) ellipse [x radius=1.5mm,y radius=.5mm];
-}
-
-\pingu@bill@s{angry}{%
-\pingu@block{\pingu@color@bill} (\pingu@name-bill)++(-.19cm,0)
- to[out=-90,in=170] ++(1.9mm,-2.25mm) coordinate (\pingu@name-bill-bottom)
- to[out=10,in=-90] ++(1.9mm,2.25mm)
- to[bend right=.25cm] cycle;
-}
-
-\pingu@create@extra{blush}{%
- blush/.code = \pingu@set@extra{blush}{true}\pingu@color{blush}{#1},
- blush/.default = pingu@red,
- blush second/.code = \pingu@color{blush@second}{#1},
- blush opacity/.code = \def\pingu@x@blush@opacity{#1},
-}{blush opacity=.35,blush second=\pingu@color@blush}
-\def\pingu@draw@eb@blush{%
- \pingu@block[/pingu/@glow,opacity=\pingu@x@blush@opacity]{\pingu@color@blush} ([yshift=-2.7mm,xshift=-1.85mm]\pingu@name-eye-right) ellipse [x radius=2.66mm,y radius=2.25mm];
- \pingu@block[/pingu/@glow,opacity=\pingu@x@blush@opacity]{\pingu@color@blush@second} ([yshift=-2.7mm,xshift=1.85mm]\pingu@name-eye-left) ellipse [x radius=2.66mm,y radius=2.25mm];
-}
-
-\pingu@eyes@s{hearts}{%
- \path (\pingu@name-eye-back-left)++(\pingu@eye@shift,.75mm) coordinate (\pingu@name-eye-left);
- \pingu@block[rounded corners=0pt]{\pingu@color@eye@left} ([yshift=.3mm]\pingu@name-eye-left) arc(0:180:.065cm)
- to[out=270,in=110] ++(.13cm,-.2cm) to[out=70,in=270] ++(.13cm,.2cm) arc (0:180:.065cm) -- cycle;
-}{%
- \path (\pingu@name-eye-back-right)++(-\pingu@eye@shift,.75mm) coordinate (\pingu@name-eye-right);
- \pingu@block{\pingu@color@eye@right} ([yshift=.3mm]\pingu@name-eye-right) arc(0:180:.065cm)
- to[out=270,in=110] ++(.13cm,-.2cm) to[out=70,in=270] ++(.13cm,.2cm) arc (0:180:.065cm) -- cycle;
-}
-
-\pingu@eyes@s{critical}{%
- \pingu@block{\pingu@color@eye@left} ([yshift=.75mm,xshift=\pingu@eye@shift]\pingu@name-eye-back-left) coordinate (\pingu@name-eye-left) ellipse [x radius=1.13mm, y radius=.145cm];
- \pingu@draw[thick]{\pingu@color@eye@left} (\pingu@name-eye-left)++(45:1.35mm and 1.85mm) arc(45:135:1.35mm and 1.85mm);
-}{%
- \pingu@block{\pingu@color@eye@right} ([yshift=.75mm,xshift=-\pingu@eye@shift]\pingu@name-eye-back-right) coordinate(\pingu@name-eye-right) ellipse [x radius=1.13mm, y radius=.145cm];
- \pingu@draw[thick]{\pingu@color@eye@right} (\pingu@name-eye-right)++(45:1.35mm and 1.85mm) arc(45:135:1.35mm and 1.85mm);
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-flags.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-flags.lib.tex
deleted file mode 100644
index 3e1955bb1ad..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-flags.lib.tex
+++ /dev/null
@@ -1,45 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\pingu@create@wing@extra{flag}{%
- flag \@lr/.code = {\pingu@set@extra{flag\@lr}{true}\pingu@color{flag\@lr}{##1}},
- flag \@lr/.default = pingu@purple,
- flag \@lr\space pole/.code = \pingu@color{flag\@lr @pole}{##1},
- flag \@lr\space code/.code = \expandafter\def\csname pingu@flag@\@lr @code\endcsname{##1},
- flag \@lr\space bobble/.code = {\pingu@color{flag\@lr @bobble}{##1}},
- pride flag \@lr/.style = {%
- /pingu/flag \@lr\space code = {%
- \noexpand\node[/pingu/@flag@first,/pingu/@flag={{rgb:yellow,1;red,5;magenta,2;black,1}}{1.9mm}] (a) at (0,0) {};
- \noexpand\node[below,/pingu/@flag={{rgb:yellow,5;red,5;green,1;white,1}}{1.9mm}] (b) at (a.south) {};
- \noexpand\node[below,/pingu/@flag={yellow}{1.9mm}] (c) at (b.south) {};
- \noexpand\node[below,/pingu/@flag={{rgb:blue,1;cyan,1;green,4;black,2}}{1.9mm}] (d) at (c.south) {};
- \noexpand\node[below,/pingu/@flag={{rgb:magenta,3;blue,5;cyan,4;black,3}}{1.9mm}] (e) at (d.south) {};
- \noexpand\node[below,/pingu/@flag={{rgb:red,2;magenta,2;blue,5}}{1.9mm}] (f) at (e.south) {};
- }, /pingu/flag \@lr, /pingu/flag \@lr\space pole={##1}%
- },%
- @flag/.style 2 args={tape bend height=.5mm,shape=tape,minimum height=##2, minimum width=15mm,outer sep=\z@,inner sep=\z@,fill=##1,draw=##1,rotate=\noexpand\@angle},
- pride flag \@lr/.default = pingu@bronze,%
- german flag \@lr/.style = {%
- /pingu/flag \@lr\space code = {%
- \noexpand\node[/pingu/@flag@first,/pingu/@flag={black}{3.33mm}] (a) at (0,0) {};
- \noexpand\node[below,/pingu/@flag={red}{3.33mm}] (b) at (a.south) {};
- \noexpand\node[below,/pingu/@flag={yellow}{3.33mm}] (c) at (b.south) {};
- }, /pingu/flag \@lr, /pingu/flag \@lr\space pole={##1}%
- },%
- german flag \@lr/.default = pingu@bronze%
-}{flag \@lr\space bobble=pingu@bronze, flag \@lr\space pole=pingu@bronze, flag \@lr\space code = {%
- \noexpand\node[/pingu/@flag@first,/pingu/@flag={\noexpand\@col}{9.75mm}] (a) at (0,0) {};
-}}
-\def\pingu@draw@wi@flag#1{%
- \pingu@setup@wing{flag}{#1}%
-\scope[rotate around={\@angle:(\pingu@name-wing-#1)}]
- % NOTE: not full foreground if placed under the wing
- \pingu@layer{foreground}[shift={(\pingu@name-wing-#1)},shift={(\@sidesign*.15mm,17.5mm-3.5\p@)}]
- \if@pingu@wing@item@side@left@\pgfqkeys{/pingu}{@flag@first/.style={below right}}\else\pgfqkeys{/pingu}{@flag@first/.style={below left}}\fi
- \csname pingu@flag@#1@code\endcsname
- \pingu@block[thick]{\csname pingu@color@flag#1@pole\endcsname}(\pingu@name-wing-#1)++(\@sidesign*-.15mm,3mm) -- ++(0,13.65mm) -| ++(\@sidesign*.6mm,-13.65mm) -- cycle;
- \endpingu@layer
- \pingu@block[thick]{\csname pingu@color@flag#1@pole\endcsname}(\pingu@name-wing-#1)++(\@sidesign*-.15mm,-3mm) -- ++(0,20mm) arc(180:0:\@sidesign*.3mm and .375mm) -- ++(0,-20mm) arc(360:180:\@sidesign*.3mm and .375mm) -- cycle;
- \pingu@block{\csname pingu@color@flag#1@bobble\endcsname} (\pingu@name-wing-#1)++(\@sidesign*.15mm,17.5mm) circle [radius=2.15\p@];
-\endscope
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-formal.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-formal.lib.tex
deleted file mode 100644
index 7e058876b93..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-formal.lib.tex
+++ /dev/null
@@ -1,116 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\pingu@create@extra{tie}{%
- tie/.code = \pingu@set@extra{tie}{true}\pingu@color{tie}{#1},
- tie/.default = pingu@green,
- tie knot/.code = \pingu@color{tie@knot}{#1},
- tie length/.code = \def\pingu@x@tie@length{#1},
- tie offset/.code = \def\pingu@x@tie@offset{#1},
- tie width/.code = \def\pingu@x@tie@width{#1},
- tie pattern/.code = \def\pingu@x@tie@pattern{#1},
- tie dots/.style = {%
- tie pattern={%
- \pingu@block[postaction={pattern={Dots[angle=40,distance=1.5pt,radius=.35pt]},pattern color=#1}]{\pingu@color@tie} \pingupathxtie;
- \pingu@block[postaction={pattern={Dots[angle=-30,distance=1.45pt,radius=.35pt@]},pattern color=#1}]{\pingu@color@tie@knot} \pingupathxtieknot;
- }%
- },
- tie dots/.default={pingu@white}%
-}{% defaults
- tie length=.625\pingu@side@h@half, tie offset=.399cm,%
- tie knot=\pingu@color@tie!92!black, tie width=.21cm,%
- tie pattern={%
- \pingu@block{\pingu@color@tie} \pingupathxtie;
- \pingu@block{\pingu@color@tie@knot} \pingupathxtieknot;
- }%
-}
-\def\pingupathxtie{[rounded corners=.15mm] (\pingu@name-tie-start)++(-.4mm,-.25mm) -- ++(-\pingu@x@tie@width/2, -\pingu@x@tie@length+.125cm) -- ++(\pingu@x@tie@width/2+.4mm,-.125cm) -- ++(\pingu@x@tie@width/2+.4mm,.125cm) -- +(-\pingu@x@tie@width/2, \pingu@x@tie@length-.125cm) -- cycle}
-\def\pingupathxtieknot{[rounded corners=.25mm] (\pingu@name-tie-start)++(-.095cm-.02*\pingu@x@tie@width,\z@) -- ++(.3mm,-.15cm-.01*\pingu@x@tie@width) -- ++(.13cm+.04*\pingu@x@tie@width,\z@) -- ++(.3mm,.15cm+.01*\pingu@x@tie@width) -- cycle}
-\def\pingu@draw@eb@tie{%
- \path (\pingu@name-bill)++(0,-\pingu@x@tie@offset) coordinate(\pingu@name-tie-start);
- \pingu@x@tie@pattern
-}
-
-\pingu@create@extra{bowtie}{%
- bowtie/.forward to = /pingu/bow tie,
- bow-tie/.forward to = /pingu/bow tie,
- bow tie/.code = \pingu@set@extra{bowtie}{true}\pingu@color{bowtie}{#1},
- bow tie/.default = pingu@blue,
- bow tie b/.code = \pingu@color{bowtie@b}{#1},
- bowtie b/.forward to = /pingu/bow tie b,
- bow-tie b/.forward to = /pingu/bow tie b,
- bowtie offset/.forward to = /pingu/bow tie offset,
- bow-tie offset/.forward to = /pingu/bow tie offset,
- bow tie offset/.code = \def\pingu@x@bowtie@offset{#1},
- bowtie knot/.forward to = /pingu/bow tie knot,
- bow-tie knot/.forward to = /pingu/bow tie knot,
- bow tie knot/.code = \pingu@color{bowtie@knot}{#1},
-}{% defaults
- bow tie knot=\pingu@color@bowtie!92!black,bow tie offset=.315cm,%
- bow tie b=\pingu@color@bowtie%
-}
-
-\def\pingupathxbowtieknot{[rounded corners=.25mm] (\pingu@name-bow-tie-start)++(-.0625cm,-.35mm) to[bend right=10] ++(.125cm,0) -- ++(0,-.13cm) to[bend right=10] ++(-.125cm, 0) -- cycle}
-\def\pingupathxbowtieleft{[rounded corners=.25mm] (\pingu@name-bow-tie-start)++(-.15mm,-.06cm) to[out=155,in=-5] ++(-.25cm,.065cm) to[bend right=15] ++(0,-.21cm) to[in=-155,out=5] ++(.25cm,.065cm) -- cycle}
-\def\pingupathxbowtieright{[rounded corners=.25mm] (\pingu@name-bow-tie-start)++(.15mm,-.06cm) to[out=25,in=-175] ++(.25cm,.065cm) to[bend left=15] ++(0,-.21cm) to[in=-25,out=175] ++(-.25cm,.065cm) -- cycle}
-\def\pingu@draw@eb@bowtie{%
- \path (\pingu@name-bill)++(0,-\pingu@x@bowtie@offset) coordinate(\pingu@name-bow-tie-start);
- \pingu@block{\pingu@color@bowtie} \pingupathxbowtieleft;
- \pingu@block{\pingu@color@bowtie@b} \pingupathxbowtieright;
- \pingu@block{\pingu@color@bowtie@knot} \pingupathxbowtieknot;
-}
-
-\newif\if@pingu@x@pants@bands
-\pingu@create@extra{pants}{%
- pants/.code = \pingu@set@extra{pants}{true}\pingu@color{pants}{#1},
- pants/.default = pingu@red,
- pants bands/.is if = @pingu@x@pants@bands,
- pants button left/.code = \pingu@color{pants@button@left}{#1},
- pants button right/.code = \pingu@color{pants@button@right}{#1},
- pants buttons/.style = {/pingu/pants button left={#1}, /pingu/pants button right={#1}},
- pants button left shade/.code = \pingu@color{pants@button@left@shade}{#1},
- pants button right shade/.code = \pingu@color{pants@button@right@shade}{#1},
- pants buttons shade/.style = {/pingu/pants button left shade={#1}, /pingu/pants button right shade={#1}},
- pants without buttons/.forward to=/pingu/pants no buttons,
- pants no buttons/.style = {/pingu/pants buttons=\@pingu@none, /pingu/pants buttons shade=\@pingu@none},
- pants extra height/.code = \def\pingu@x@pants@extra@height{#1},
-}{pants extra height=1.5mm,pants buttons=pingu@black,pants button left shade=\pingu@color@pants@button@left!70!white,pants button right shade=\pingu@color@pants@button@right!70!white}
-
-\def\pingu@draw@eb@pants{%
-\pingu@block[rounded corners=\p@]{\pingu@color@pants} ([xshift=.85mm,yshift=\pingu@x@pants@extra@height]\pingu@name-waist-right) coordinate(@tmp) to[bend right=6] ([xshift=-.85mm,yshift=\pingu@x@pants@extra@height]\pingu@name-waist-left) coordinate(@tmpb) -- ++(0,-\pingu@x@pants@extra@height) arc(180:270:.85mm and 2.25mm) to[bend left=\pingu@bend] (\pingu@name-bottom-center-|\pingu@name-waist-left) to[bend left=15] ([yshift=-.15mm]\pingu@name-bottom-center) to[bend left=15] (\pingu@name-bottom-center-|\pingu@name-waist-right) to[bend left=6] ([yshift=-2.5mm]\pingu@name-waist-right) arc (-90:0:.85mm and 2.25mm) -- cycle;
-\if@pingu@x@pants@bands
-\pingu@layer{middle}[]
-% draw stripes
-\scope
-\clip \pingu@path@lowerpingu;
-\pingu@block{\pingu@color@pants} (@tmp)++(.55mm,-\pingu@one) to[bend right=3] ([yshift=1.65mm]\pingu@name-wings-side-right) -- ++(-.25mm,-.25mm) to[bend left=3] ([yshift=-\pingu@one]@tmp) -- cycle;
-\pingu@block{\pingu@color@pants} (@tmpb)++(-.55mm,-\pingu@one) to[bend left=3] ([yshift=1.65mm]\pingu@name-wings-side-left) -- ++(.25mm,-.25mm) to[bend right=3] ([yshift=-\pingu@one]@tmpb) -- cycle;
-\endscope
-\fi
-\pingu@block{\pingu@color@pants@button@right}(@tmp)++(.25mm,-.25mm)circle[radius=.7mm];
-\pingu@block{\pingu@color@pants@button@left}(@tmpb)++(-.25mm,-.25mm)circle[radius=.7mm];
-\pingu@block[even odd rule]{\pingu@color@pants@button@right@shade}(@tmp)++(.25mm,-.25mm)circle[radius=.7mm] circle[radius=.615mm];
-\pingu@block[even odd rule]{\pingu@color@pants@button@left@shade}(@tmpb)++(-.25mm,-.25mm)circle[radius=.7mm] circle[radius=.615mm];
-\@for\i:={0,90,180,270}\do{
- \pingu@block{\pingu@color@pants@button@right@shade} (@tmp)++(.25mm,-.25mm)++(\i:.
- 35mm) circle[radius=.1mm];
- \pingu@block{\pingu@color@pants@button@left@shade} (@tmpb)++(-.25mm,-.25mm)++(\i:.35mm) circle[radius=.1mm];
-}%
-\if@pingu@x@pants@bands \endpingu@layer \fi
-}
-
-
-\pingu@create@extra{belt}{%
- belt/.code = \pingu@set@extra{belt}{true}\pingu@color{belt}{#1},
- belt/.default = pingu@bronze!80!black,
- belt knot color/.code = \pingu@color{belt@knot}{#1}
-}{% defaults
- belt knot color = pingu@silver
-}
-
-\def\pingu@draw@eb@belt@wh{1.25mm}
-\def\pingu@draw@eb@belt{%
- \path ([yshift=-1.66mm/2]\pingu@name-waist-left) -- ([yshift=-1.66mm/2]\pingu@name-waist-right) coordinate[pos=.5] (\pingu@name @belt@center);
- \pingu@block[rounded corners=.5pt]{\pingu@color@belt} (\pingu@name-waist-left) coordinate (@) to[bend left=5] (\pingu@name-waist-right) -- ++(0,-1.66mm) to[bend right=5] ([yshift=-1.66mm]@) -- cycle;
- \pingu@block[rounded corners=1.5pt]{\pingu@color@belt@knot} ([xshift=-1mm,yshift=-.7mm-1.66mm/2]\pingu@name @belt@center) rectangle ++(2mm,2mm);
-}
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-fun.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-fun.lib.tex
deleted file mode 100644
index f4d49e5cad0..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-fun.lib.tex
+++ /dev/null
@@ -1,309 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\pingu@create@extra{cakehat}{%
- cake-hat/.code = \pingu@set@extra{cakehat}{true}\pingu@color{cakehat}{#1},
- cake-hat/.default = pingu@white!92!\pingu@color@cakehat@top,
- cake-hat top/.code = \pingu@color{cakehat@top}{#1},
- cake-hat shade/.code = \pingu@color{cakehat@shade}{#1},
- cake-hat candle/.code = \pingu@color{cakehat@candle}{#1},
- cake-hat candle fire/.code = \pingu@color{cakehat@candle@fire}{#1},
- cake-hat candle fire 2/.code = \pingu@color{cakehat@candle@fire@b}{#1},
- cake-hat candle fire 3/.code = \pingu@color{cakehat@candle@fire@c}{#1},
- cake-hat candle wick/.code = \pingu@color{cakehat@candle@wick}{#1},
- cake-hat candle shade/.code = \pingu@color{cakehat@candle@shade}{#1},
- cake-hat candle back/.code = \pingu@color{cakehat@candle@back}{#1},
- cake-hat outline/.code = \pingu@color{cakehat@outline}{#1},
- cake-hat outline width/.code = \def\pingu@x@cakehat@outline@w{#1},
- cake-hat position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@cakehat@angle{#1}\def\pingu@x@cakehat@xshift{#2}\def\pingu@x@cakehat@yshift{#3}\def\pingu@x@cakehat@scale{#4}}
-}{cake-hat position={-9:(1mm,0mm)1},cake-hat outline=pingu@black!80!\pingu@color@cakehat,cake-hat outline width=.25pt,cake-hat top=pingu@purple,cake-hat candle=pingu@purple!60!pingu@black,cake-hat candle back=\pingu@color@cakehat@candle!85!black,cake-hat candle wick=pingu@black,cake-hat candle fire=pingu@red,cake-hat candle fire 2=\pingu@color@cakehat@candle@fire!50!yellow,cake-hat candle fire 3=\pingu@color@cakehat@candle@fire@b!50!white,cake-hat shade=gray,cake-hat candle shade=gray!80!\pingu@color@cakehat@candle@back}
-
-\def\pingu@p@cake@outline{(-6.25mm,-.25cm) to[bend left=2] (\pingu@name-cake-tl) arc (180:0:1.375cm/2+.01mm and 1.41mm) to[bend left=2] ++(0,-3.125mm*.97) to[bend left=20] (-6mm,-.26cm) -- cycle}
-\def\pingu@draw@ea@cakehat{%
-\scope[rotate around={\pingu@x@cakehat@angle:(\pingu@name-head-top)},%
-shift={(\pingu@name-head-top)},
-shift={(\pingu@x@cakehat@xshift,\pingu@x@cakehat@yshift)},
-scale=\pingu@x@cakehat@scale]
- \pingu@block{\pingu@color@cakehat} [rounded corners=.2mm](-6.25mm,-.25cm) to[bend left=2] coordinate[pos=.97] (\pingu@name-cake-tl) ++(0,3.125mm) to[bend right=20]
- ++(1.375cm,0) to[bend left=2] coordinate[pos=.03] (\pingu@name-cake-tr) ++(0,-3.125mm) to[bend left=20] (-6mm,-.26cm) -- cycle;
- \pingu@block[fill opacity=.1]{\pingu@color@cakehat@shade} [rounded corners=.2mm](-6.25mm,-.25cm) to[bend right=20]
- ++(1.375cm,0) to[bend right=2] ++(0,3.125mm) [sharp corners] to[bend left=20] (-6.25mm,-.225cm) [rounded corners=.2mm] -- cycle;
- \path (\pingu@name-cake-tl) -- (\pingu@name-cake-tr) coordinate[pos=.5] (\pingu@name-cake-tc);
- % cake side
- \scope
- \clip\pingu@p@cake@outline;
- \path (\pingu@name-cake-tl) arc (180:360:1.375cm/2+.01mm and 1.41mm) foreach[count=\i] \a in {0,.19,.295,.375,.485,.625,.72,.85,1} {coordinate[pos=\a] (\pingu@name-cake-\i)};
- \pingu@block{\pingu@color@cakehat@top} (\pingu@name-cake-1) ellipse [x radius=.255mm,y radius=2mm];
- \pingu@block{\pingu@color@cakehat@top} (\pingu@name-cake-9) ellipse [x radius=.265mm,y radius=1.45mm];
- \foreach \i in {2,...,9} {
- \pgfmathsetmacro\@tmprand{rand}
- \pingu@draw[opacity=.5]{gray} (\pingu@name-cake-\i)++(-.02mm,0) to[bend left=1] ++(+.145mm,{-1.075mm-(\@tmprand+.15)*.5125mm}) arc(370:300:.145mm);
- \pingu@block{\pingu@color@cakehat@top} (\pingu@name-cake-\i)++(0,.1mm) -- ++(-.125mm,0) to[bend left=1] ++(0,{-1.2mm-(\@tmprand+.15)*.5125mm}) arc(170:370:.145mm) to[bend right=1] cycle;
- }
- \foreach \i in {2,...,9} {
- \ifnum\i=2\relax
- \pingu@block{\pingu@color@cakehat@top} (\pingu@name-cake-\the\numexpr\i-1\relax)++(-.05mm,-.5mm) to[bend left=8] ([xshift=-.05mm,yshift=-.25mm]\pingu@name-cake-\i) -- ++(0,.33mm) to[bend right=30] (\pingu@name-cake-\the\numexpr\i-1\relax);
- \else\ifnum\i=9\relax
- \pingu@block{\pingu@color@cakehat@top} (\pingu@name-cake-\the\numexpr\i-1\relax)++(-.05mm,-.25mm) to[bend left=8] ([xshift=-.05mm,yshift=-.5mm]\pingu@name-cake-\i) -- ++(0,.33mm) to[bend right=30] (\pingu@name-cake-\the\numexpr\i-1\relax);
- \else
- \pingu@block{\pingu@color@cakehat@top} (\pingu@name-cake-\the\numexpr\i-1\relax)++(-.05mm,-.25mm) to[bend left=9.5+2*rand] ([xshift=-.05mm,yshift=-.25mm]\pingu@name-cake-\i) -- ++(0,.33mm) to[bend right=30] (\pingu@name-cake-\the\numexpr\i-1\relax);
- \fi\fi
- }
- \endscope
- \pingu@block{\pingu@color@cakehat@top} (\pingu@name-cake-tc) ellipse [x radius=1.375cm/2+.01mm, y radius=1.41mm];
- % outline
- \pingu@draw[line width=\pingu@x@cakehat@outline@w,rounded corners=.075mm]{\pingu@color@cakehat@outline} \pingu@p@cake@outline;
-% % 3d sides
-% \pingu@block[rounded corners=.04mm]{\pingu@color@cakehat@top} ([xshift=.1mm,yshift=.125mm]\pingu@name-cake-tl) to[out=246,in=97] ++(-.11mm,-2.125mm) -- ++(.04mm,0) to[bend right=12] (\pingu@name-cake-ttl) -- cycle;
-% \pingu@block[rounded corners=.09mm]{green} ([xshift=-.1mm]\pingu@name-cake-ttr) to[out=294,in=83] ++(.125mm,-2.125mm) to[bend left=12] ([xshift=-.11mm,yshift=.125mm]\pingu@name-cake-tr) -- cycle;
- % candle
- \pingu@block{\pingu@color@cakehat@candle@back} (\pingu@name-cake-tc)++(.8mm,2.66mm) to[bend right=7] ++(-1.1mm,-.1mm) to[bend right=30]++(1.1mm,0) -- cycle;
- % wick
- \pingu@draw[very thin]{\pingu@color@cakehat@candle@wick} (\pingu@name-cake-tc)++(.25mm,2mm) to[out=75,in=-95] coordinate[pos=.8] (\pingu@name-wick-1) ++(0,1mm) coordinate(\pingu@name-wick-top);
- \pingu@block{\pingu@color@cakehat@candle@fire} (\pingu@name-wick-1)++(-.045mm,0) to[out=115,in=240] ++(0,1.5mm) to[out=300,in=65] ([xshift=.045mm]\pingu@name-wick-1) -- cycle;
- \pingu@block{\pingu@color@cakehat@candle@fire@b} (\pingu@name-wick-1)++(-.045mm,0) to[out=105,in=240] ++(0,1.3mm) to[out=300,in=75] ([xshift=.045mm]\pingu@name-wick-1) -- cycle;
- \pingu@block{\pingu@color@cakehat@candle@fire@c} (\pingu@name-wick-1)++(-.035mm,0) to[out=95,in=250] ++(0,1.1mm) to[out=290,in=85] ([xshift=.035mm]\pingu@name-wick-1) -- cycle;
- % front
- \pingu@block{\pingu@color@cakehat@candle} (\pingu@name-cake-tc)++(.25mm,0) ++(.55mm,0) to[bend left=0.5] ++(0,2.66mm) to[bend left=20] ++(-1.1mm,-.1mm) to[bend right=0.5] ++(0,-2.66mm) to[bend right=20] cycle;
- \pingu@block[fill opacity=.125]{\pingu@color@cakehat@candle@shade} (\pingu@name-cake-tc)++(-.3mm,-.1mm) to[bend right=20] ++(1.1mm,0) to[bend left=.5] ++(0,2.66mm) to[bend left=15] ++(-1.1mm,-2.5mm) -- cycle;
- \pingu@block[fill opacity=.225]{\pingu@color@cakehat@candle@shade} (\pingu@name-cake-tc)++(-.3mm,-.1mm) to[bend left=2] ++(1.1mm,-1.1mm) to[bend left=5] ++(1.1mm,0) to[bend left=2] ++(-1.1mm,1.2mm) to[bend left =15] cycle;
- \pingu@block[fill opacity=.225]{\pingu@color@cakehat@candle@shade} (\pingu@name-cake-tc)++(1.35mm,-1.25mm) circle [radius=.1mm];
-\endscope
-}
-\pingu@create@extra{pumpkinhat}{%
- pumpkin-hat/.code = \pingu@set@extra{pumpkinhat}{true}\pingu@color{pumpkinhat}{#1},
- pumpkin-hat/.default = pingu@bronze!97!white,
- pumpkin-hat stalk/.code = \pingu@color{pumpkinhat@stalk}{#1},
- pumpkin-hat stalk top/.code = \pingu@color{pumpkinhat@stalk@top}{#1},
- pumpkin-hat stripe a/.code = \pingu@color{pumpkinhat@stripe@a}{#1},
- pumpkin-hat stripe b/.code = \pingu@color{pumpkinhat@stripe@b}{#1},
- pumpkin-hat stripe c/.code = \pingu@color{pumpkinhat@stripe@c}{#1},
- pumpkin-hat outline/.code = \pingu@color{pumpkinhat@outline}{#1},
- pumpkin-hat outline width/.code = \def\pingu@x@pumpkinhat@outline@w{#1},
- pumpkin-hat position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@pumpkinhat@angle{#1}\def\pingu@x@pumpkinhat@xshift{#2}\def\pingu@x@pumpkinhat@yshift{#3}\def\pingu@x@pumpkinhat@scale{#4}}
-}{pumpkin-hat position={-9:(1.65mm,.25mm)1.05},pumpkin-hat stalk=pingu@green!95!\pingu@color@pumpkinhat!45!pingu@black,pumpkin-hat stalk top=\pingu@color@pumpkinhat@stalk!95!pingu@black,pumpkin-hat stripe a=pingu@black,pumpkin-hat stripe b=\pingu@color@pumpkinhat@stripe@a,pumpkin-hat stripe c=\pingu@color@pumpkinhat@stripe@b,pumpkin-hat outline=pingu@black,pumpkin-hat outline width=.7pt}
-
-\def\pingu@pumpkinhat@outerpath{(0,.125cm)++(-60:6.75mm and 5.5mm) arc(-60:86: 6.75mm and 5.5mm) to[bend left=3] ++(-1.75mm,0) arc(95:242:6.75mm and 5.5mm) to[bend left=5] cycle;}
-\def\pingu@draw@ea@pumpkinhat{%
-\scope[rotate around={\pingu@x@pumpkinhat@angle:(\pingu@name-head-top)},%
-shift={(\pingu@name-head-top)},
-shift={(\pingu@x@pumpkinhat@xshift,\pingu@x@pumpkinhat@yshift)},
-scale=\pingu@x@pumpkinhat@scale]
- % give it a small cut
- \pingu@block{\pingu@color@pumpkinhat} (0,.125cm)++(-60:6.75mm and 5.5mm) coordinate (@pkll) arc(-60:86: 6.75mm and 5.5mm) coordinate (@pkl) to[bend left=3] coordinate[pos=.5] (@pkuc) ++(-1.75mm,0) coordinate (@pkr) arc(95:242:6.75mm and 5.5mm) coordinate (@pklr) to[bend left=5] coordinate[pos=.5] (@pklc) cycle;
- \pingu@draw[line join=round,line width=\pingu@x@pumpkinhat@outline@w]{\pingu@color@pumpkinhat@outline} \pingu@pumpkinhat@outerpath;
-\scope
-\clip (0,.125cm)++(-60:6.75mm and 5.5mm) coordinate (@pkll) arc(-60:86: 6.75mm and 5.5mm) coordinate (@pkl) to[bend left=3] ++(-1.75mm,0) coordinate (@pkr) arc(95:242:6.75mm and 5.5mm) coordinate (@pklr) to[bend left=5] cycle;
- \pingu@draw[line cap=round,opacity=.3]{\pingu@color@pumpkinhat@stripe@a} (@pklr) to[bend left=55] (@pkr);
- \pingu@draw[line cap=round,opacity=.3]{\pingu@color@pumpkinhat@stripe@c} (@pkll) to[bend right=55] (@pkl);
- \pingu@draw[line cap=round,opacity=.3]{\pingu@color@pumpkinhat@stripe@b} (@pklc) to[bend right=5] (@pkuc);
-\endscope
-\pingu@block{\pingu@color@pumpkinhat@stalk} ([yshift=-.5*\pingu@x@pumpkinhat@outline@w]@pkl) to[bend left=3] ([yshift=-.5*\pingu@x@pumpkinhat@outline@w]@pkr) to[bend right=8] ++(.85mm,2mm) -- ++(.65mm,0) coordinate[pos=.5] (@pkc) to[bend right=3] cycle;
-\pingu@block{\pingu@color@pumpkinhat@stalk@top} (@pkc) ellipse[x radius=.65mm/2, y radius=.085mm];
-\endscope
-}
-
-\pingu@create@wing@extra{lollipop}{%
- lollipop \@lr/.code = {\pingu@set@extra{lollipop\@lr}{true}\pingu@color{lollipop\@lr}{##1}},
- lollipop \@lr/.default = pingu@green,
- lollipop \@lr\space handle/.code = \pingu@color{lollipop\@lr @handle}{##1},%
- lollipop \@lr\space second/.code = \pingu@color{lollipop\@lr @second}{##1}%
-}{lollipop \@lr\space handle=pingu@bronze,lollipop \@lr\space second={\csname pingu@color@lollipop\@lr\endcsname!86!white}}
-
-% #1 wing
-\def\pingu@draw@wi@lollipop#1{%
- \pingu@setup@wing{lollipop}{#1}%
- \pingu@draw[thick,rotate around={\@angle:(\pingu@name-wing-#1)}]{\csname pingu@color@lollipop#1@handle\endcsname}(\pingu@name-wing-#1)++(0,4.75mm) -- ++(0,-6.25mm);
- \pingu@block[thick,rotate around={\@angle:(\pingu@name-wing-#1)}]{\@col}(\pingu@name-wing-#1)++(0,4.75mm) coordinate (\pingu@name-lollipop-#1-top) circle[radius=1.4mm];
- \pingu@block[thick,rotate around={\@angle-1:(\pingu@name-lollipop-#1-top)}]{\csname pingu@color@lollipop#1@second\endcsname} (\pingu@name-lollipop-#1-top) ellipse [x radius=1.57mm, y radius=1.5\p@];
- \pingu@block[thick,rotate around={\@angle-1:(\pingu@name-lollipop-#1-top)}]{\@col} (\pingu@name-lollipop-#1-top)++(0,.5\p@) ellipse [x radius=1.4mm, y radius=\p@];
-}
-
-\pingu@create@extra{heart}{%
- heart/.code = {\pingu@set@extra{heart}{true}\pingu@color{heart}{#1}},
- heart/.default = lightgray
-}{}
-
-\def\pingu@draw@eb@heart{%
- \pingu@block[sharp corners]{\pingu@color@heart}
- ([yshift=1mm]\pingu@name-belly-center) arc(0:180:.13cm)
- to[out=270,in=110] ++(.26cm,-.36cm) to[out=70,in=270] ++(.26cm,.36cm) arc (0:180:.13cm) -- cycle;
-}
-
-\pingu@create@extra{vampireteeth}{%
- vampire teeth/.code = {\pingu@set@extra{vampireteeth}{true}\pingu@color{vampireteeth}{#1}},
- vampire teeth/.default = pingu@yellow!10!pingu@black!70!lightgray
-}{}
-
-\def\pingu@draw@eb@vampireteeth{%
- \pingu@block{\pingu@color@vampireteeth} (\pingu@name-bill) ++(-1.35mm,-2.5mm)
- arc(180:0:1.35mm and 2.5mm)
- arc(0:180:1.35mm and .95mm);
-}
-
-\pingu@create@wing@extra{broom}{%
- broom \@lr/.code = {\pingu@set@extra{broom\@lr}{true}\pingu@color{broom\@lr}{##1}},
- broom \@lr/.default = pingu@bronze,
- broom \@lr\space length/.code = \expandafter\def\csname pingu@broom@\@lr @length\endcsname{##1},
- broom \@lr\space shift/.code = \expandafter\def\csname pingu@broom@\@lr @shift\endcsname{##1},
- broom \@lr\space band/.code = \pingu@color{broom@\@lr @band}{##1},
- broom \@lr\space bristles a/.code = \pingu@color{broom@\@lr @bristles@a}{##1},
- broom \@lr\space bristles b/.code = \pingu@color{broom@\@lr @bristles@b}{##1},
- broom \@lr\space bristles c/.code = \pingu@color{broom@\@lr @bristles@c}{##1},
-}{broom \@lr\space length=22mm,broom \@lr\space shift=8mm, broom \@lr\space band=pingu@red!80!pingu@black!80!pingu@bronze, broom \@lr\space bristles a=pingu@bronze!16!pingu@yellow!41!pingu@white!80!brown!95!\csname pingu@color@broom\@lr\endcsname, broom \@lr\space bristles b=\csname pingu@color@broom@\@lr @bristles@a\endcsname!83!pingu@white, broom \@lr\space bristles c=\csname pingu@color@broom@\@lr @bristles@b\endcsname!83!pingu@white}
-\def\pingu@draw@wi@broom#1{%
- \pingu@setup@wing{broom}{#1}%
- % TODO: mirror on other wing?
-\scope[rotate around={\@angle:(\pingu@name-wing-#1)}]
- \pingu@block{\csname pingu@color@broom#1\endcsname}(\pingu@name-wing-#1)++(\@sidesign*-.2mm,-\csname pingu@broom@#1@shift\endcsname) -- ++(0,\csname pingu@broom@#1@length\endcsname) arc(180:0:\@sidesign*.4mm and .3mm) coordinate[pos=.5] (\pingu@name-broom-#1-top) -- ++(0,-\csname pingu@broom@#1@length\endcsname) arc(360:180:\@sidesign*.4mm and .3mm) -- cycle;
- \pingu@block[rounded corners=.44pt]{\csname pingu@color@broom@#1@bristles@a\endcsname} (\pingu@name-broom-#1-top)++(-1mm,-2mm) to[out=115,in=240] ++(1mm,10.5mm) to[out=300,in=65] ([xshift=.95mm,yshift=-2mm]\pingu@name-broom-#1-top) to[bend right=4] ([xshift=-.75mm,yshift=-2mm]\pingu@name-broom-#1-top) -- cycle;
- \pingu@block[rounded corners=.44pt]{\csname pingu@color@broom@#1@bristles@a\endcsname} (\pingu@name-broom-#1-top)++(-1mm,-2mm) to[out=115,in=240] ++(1.66mm,9.75mm) to[out=300,in=65] coordinate[pos=.81] (@l) coordinate[pos=.79] (@l2) ([xshift=.95mm,yshift=-2mm]\pingu@name-broom-#1-top) to[bend right=4] ([xshift=-.75mm,yshift=-2mm]\pingu@name-broom-#1-top) -- cycle;
- \pingu@block[rounded corners=.44pt]{\csname pingu@color@broom@#1@bristles@a\endcsname} (\pingu@name-broom-#1-top)++(-1mm,-2mm) to[out=115,in=240] coordinate[pos=.17] (@r) coordinate[pos=.19] (@r2) ++(.25mm,10.5mm) to[out=300,in=65] ([xshift=.95mm,yshift=-2mm]\pingu@name-broom-#1-top) to[bend right=4] ([xshift=-.75mm,yshift=-2mm]\pingu@name-broom-#1-top) -- cycle;
- \pingu@block[rounded corners=.44pt]{\csname pingu@color@broom@#1@bristles@b\endcsname} (\pingu@name-broom-#1-top)++(-.75mm,-1.75mm) to[out=115,in=240] ++(1.35mm,9.25mm) to[out=300,in=65] ([xshift=.75mm,yshift=-1.75mm]\pingu@name-broom-#1-top) -- cycle;
- \pingu@block[rounded corners=.44pt]{\csname pingu@color@broom@#1@bristles@b\endcsname} (\pingu@name-broom-#1-top)++(-.75mm,-1.75mm) to[out=115,in=240] ++(0mm,9.65mm) to[out=300,in=65] ([xshift=.75mm,yshift=-1.75mm]\pingu@name-broom-#1-top) -- cycle;
- \pingu@block{\csname pingu@color@broom@#1@bristles@c\endcsname} (\pingu@name-broom-#1-top)++(-.5mm,-1.5mm) to[out=115,in=240] ++(.5mm,9.5mm) to[out=300,in=65] ([xshift=.5mm,yshift=-1.5mm]\pingu@name-broom-#1-top) -- cycle;
- % TODO: broom cap color etc
- \pingu@block{\csname pingu@color@broom@#1@band\endcsname} (@r) to[bend right=10] (@l) -- (@l2) to[bend left=10] (@r2);
-\endscope
-}
-
-\tikzset{pingu@clip even odd rule/.code={\pgfseteorule}, % Credit to Andrew Stacey
-pingu@invclip/.style={
- clip,insert path=
- [pingu@clip even odd rule]{
- [reset cm](-\maxdimen,-\maxdimen)rectangle(\maxdimen,\maxdimen)
- }
-}}
-\pingu@create@extra{jackolantern}{%
- jack o lantern/.code = \pingu@set@extra{jackolantern}{true}\pingu@color{jackolantern}{#1},
- jack o lantern/.default = pingu@bronze!97!pingu@black,
- jack o lantern helmet/.style = {jack o lantern=#1,jack o lantern background=none,jack o lantern position={-2.15:(2.05mm,-11.35mm){1.5}},jack o lantern back stripe a=\@pingu@none, jack o lantern back stripe b=\@pingu@none,jack o lantern back stripe c=\@pingu@none,jack o lantern height=6.25mm,jack o lantern width=6.1mm,hair=\@pingu@none},
- jack o lantern helmet/.default = pingu@bronze!97!pingu@black,
- jack o lantern stalk/.code = \pingu@color{jackolantern@stalk}{#1},
- jack o lantern stalk top/.code = \pingu@color{jackolantern@stalk@top}{#1},
- jack o lantern background/.code= \pingu@color{jackolantern@background}{#1},
- jack o lantern stripe a/.code = \pingu@color{jackolantern@stripe@a}{#1},
- jack o lantern stripe b/.code = \pingu@color{jackolantern@stripe@b}{#1},
- jack o lantern stripe c/.code = \pingu@color{jackolantern@stripe@c}{#1},
- jack o lantern back stripe a/.code = \pingu@color{jackolantern@backstripe@a}{#1},
- jack o lantern back stripe b/.code = \pingu@color{jackolantern@backstripe@b}{#1},
- jack o lantern back stripe c/.code = \pingu@color{jackolantern@backstripe@c}{#1},
- jack o lantern outline/.code = \pingu@color{jackolantern@outline}{#1},
- jack o lantern outline width/.code = \def\pingu@x@jackolantern@outline@w{#1},
- jack o lantern height/.code = \def\pingu@x@jackolantern@height{#1},
- jack o lantern width/.code = \def\pingu@x@jackolantern@width{#1},
- jack o lantern position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@jackolantern@angle{#1}\def\pingu@x@jackolantern@xshift{#2}\def\pingu@x@jackolantern@yshift{#3}\def\pingu@x@jackolantern@scale{#4}}
-}{jack o lantern position={-9:(3.15mm,.95mm){1.3}},jack o lantern stripe a=pingu@black,jack o lantern stripe b=\pingu@color@jackolantern@stripe@a,jack o lantern stripe c=\pingu@color@jackolantern@stripe@b,jack o lantern back stripe a=pingu@black,jack o lantern back stripe b=\pingu@color@jackolantern@stripe@a,jack o lantern back stripe c=\pingu@color@jackolantern@stripe@b,jack o lantern outline=pingu@black,jack o lantern outline width=.7pt,jack o lantern stalk=pingu@green!95!\pingu@color@jackolantern!45!pingu@black,jack o lantern stalk top=\pingu@color@jackolantern@stalk!95!pingu@black,jack o lantern background=\pingu@color@jackolantern!85!pingu@black,jack o lantern height=5.5mm,jack o lantern width=5.75mm}
-
-\def\pingu@jackolantern@outerpath{(0,.125cm)++(-60:{\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) arc(-60:86:{\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) to[bend right=3] ++(-3.75mm,0) arc(95:242:{\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) to[bend left=5] cycle;}
-\def\pingu@x@jackolantern{(-5.15mm,.6mm) to[bend right] ++(1.5mm,-.5mm) -- ++(.33mm,.33mm) to[bend right=10] ++(1.5mm,0) -- ++(.66mm,-.75mm) -- ++(.66mm,.75mm) to[bend right=10] ++(1.5mm,0) -- ++(.33mm,-.33mm) to[bend right] ++(1.5mm,.5mm) to[bend left] ++(-1.5mm,-2.15mm) to[bend left=10] ++(-.33mm,.33mm) to[bend left=10] ++(-1.5mm,0) -- ++(-.66mm,-.5mm) -- ++(-.66mm,.5mm) to[bend left=10] ++(-1.5mm,0) -- ++(-.33mm,-.33mm) to[bend left] cycle}
-
-\def\pingu@x@jackolantern@eye@left{(0.9mm,2mm) -- ++(2mm,-.15mm) to[bend right=40] ++(-.5mm,2mm) -- cycle}
-\def\pingu@x@jackolantern@eye@right{(-3mm,2mm) -- ++(-2mm,-.15mm) to[bend left=40] ++(.5mm,2mm) -- cycle}
-\def\pingu@x@jackolantern@nose{(0.965mm*0.5-3.225mm*0.5,1mm) -- ++(1mm,1.2mm) to[bend right=10] ++(-2mm,0) -- cycle}
-
-\def\pingu@draw@ea@jackolantern{%
-\scope[rotate around={\pingu@x@jackolantern@angle:(\pingu@name-head-top)},%
-shift={(\pingu@name-head-top)},
-shift={(\pingu@x@jackolantern@xshift,\pingu@x@jackolantern@yshift)},
-scale=\pingu@x@jackolantern@scale]
-\scope
-\pgfinterruptboundingbox
-\path[pingu@invclip]\pingu@x@jackolantern \pingu@x@jackolantern@eye@left \pingu@x@jackolantern@eye@right \pingu@x@jackolantern@nose;
- % give it a small cut
- \pingu@block{\pingu@color@jackolantern} (0,.125cm)++(-60:{\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) coordinate (@pkll) arc(-60:86: {\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) coordinate (@pkl) to[bend right=3] coordinate[pos=.5] (@pkuc) coordinate[pos=.225] (@pksl) coordinate[pos=.775] (@pksr) ++(-3.75mm,0) coordinate (@pkr) arc(95:242:{\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) coordinate (@pklr) to[bend left=5] coordinate[pos=.5] (@pklc) cycle;
- \pingu@draw[line join=round,line width=\pingu@x@jackolantern@outline@w]{\pingu@color@jackolantern@outline} \pingu@jackolantern@outerpath;
-\endpgfinterruptboundingbox
-\scope
-\clip (0,.125cm)++(-60:{\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) arc(-60:86:{\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) to[bend right=3] ++(-3.75mm,0) arc(95:242:{\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) to[bend left=5] cycle;
- \pingu@draw[line cap=round,opacity=.2]{\pingu@color@jackolantern@stripe@a} (@pklr) to[bend left=42] (@pkr);
- \pingu@draw[line cap=round,opacity=.2]{\pingu@color@jackolantern@stripe@c} (@pkll) to[bend right=54] (@pkl);
- \pingu@draw[line cap=round,opacity=.2]{\pingu@color@jackolantern@stripe@b} (@pklc) to[bend right=6] (@pkuc);
-\endscope
-\endscope
- \pingu@draw[fill=\pingu@color@jackolantern@background,rounded corners=.25pt]{\pingu@color@jackolantern@outline} \pingu@x@jackolantern@eye@left;
- \pingu@draw[fill=\pingu@color@jackolantern@background,rounded corners=.25pt]{\pingu@color@jackolantern@outline} \pingu@x@jackolantern@eye@right;
-
- \pingu@draw[fill=\pingu@color@jackolantern@background,rounded corners=.25pt]{\pingu@color@jackolantern@outline} \pingu@x@jackolantern@nose;
-
- \pingu@draw[fill=\pingu@color@jackolantern@background]{\pingu@color@jackolantern@outline} \pingu@x@jackolantern;
- \scope
- \clip\pingu@x@jackolantern \pingu@x@jackolantern@eye@left \pingu@x@jackolantern@eye@right \pingu@x@jackolantern@nose;
- \pingu@draw[line cap=round,opacity=.2]{\pingu@color@jackolantern@backstripe@a} ([xshift=1.6mm]@pklr) to[bend left=18] (@pkr);
- \pingu@draw[line cap=round,opacity=.2]{\pingu@color@jackolantern@backstripe@c} ([xshift=-1.6mm]@pkll) to[bend right=22] (@pkl);
- \pingu@draw[line cap=round,opacity=.2]{\pingu@color@jackolantern@backstripe@b} (@pklc) to[bend right=1] (@pkuc);
- \endscope
- \pingu@block{\pingu@color@jackolantern@stalk} ([yshift=-.5*\pingu@x@jackolantern@outline@w]@pksl) to[bend left=3] ([yshift=-.5*\pingu@x@jackolantern@outline@w]@pksr) to[bend right=8] ++(.85mm,2mm) -- ++(.65mm,0) coordinate[pos=.5] (@pkc) to[bend right=3] cycle;
-\pingu@block{\pingu@color@jackolantern@stalk@top} (@pkc) ellipse[x radius=.65mm/2, y radius=.085mm];
-\endscope
-}
-
-\pingu@create@wing@extra{hammer}{%
- hammer \@lr/.code = {\pingu@set@extra{hammer\@lr}{true}\pingu@color{hammer\@lr}{##1}},
- hammer \@lr/.default = pingu@silver,
- hammer \@lr\space handle length/.code = \expandafter\def\csname pingu@hammer@\@lr @length\endcsname{##1},
- hammer \@lr\space handle shift/.code = \expandafter\def\csname pingu@hammer@\@lr @shift\endcsname{##1},
- hammer \@lr\space width/.code = \expandafter\def\csname pingu@hammer@\@lr @width\endcsname{##1},
- hammer \@lr\space height/.code = \expandafter\def\csname pingu@hammer@\@lr @height\endcsname{##1},
- hammer \@lr\space xshift/.code = \expandafter\def\csname pingu@hammer@\@lr @xshift\endcsname{##1},
- hammer \@lr\space yshift/.code = \expandafter\def\csname pingu@hammer@\@lr @yshift\endcsname{##1},
- hammer \@lr\space handle/.code = \pingu@color{hammer@\@lr @handle}{##1},%
- hammer \@lr\space with knob/.style = {hammer \@lr=##1, hammer \@lr\space handle length=\dimexpr9mm+\csname pingu@hammer@\@lr @height\endcsname+.5mm,hammer \@lr\space yshift=\dimexpr-.5mm-\csname pingu@hammer@\@lr @height\endcsname},
- hammer \@lr\space with knob/.default = pingu@silver
-}{hammer \@lr\space handle length=9mm, hammer \@lr\space handle=pingu@bronze, hammer \@lr\space handle shift=-4mm, hammer \@lr\space width=7mm,hammer \@lr\space height=3.5mm, hammer \@lr\space xshift=-0.5*\csname pingu@hammer@\@lr @width\endcsname,hammer \@lr\space yshift=-1mm}
-\def\pingu@draw@wi@hammer#1{%
- \pingu@setup@wing{hammer}{#1}%
-\scope[rotate around={\@angle:(\pingu@name-wing-#1)}]
-% \csname pingu@color@hammer#1\endcsname
- \pingu@block{\csname pingu@color@hammer@#1@handle\endcsname}(\pingu@name-wing-#1)++(\@sidesign*-.2mm,\csname pingu@hammer@#1@shift\endcsname) -- ++(0,\csname pingu@hammer@#1@length\endcsname) arc(180:0:\@sidesign*.4mm and .3mm) coordinate[pos=.5] (\pingu@name-hammer-#1-top) -- ++(0,-\csname pingu@hammer@#1@length\endcsname) arc(360:180:\@sidesign*.4mm and .3mm) -- cycle;
- \pingu@block[rounded corners=2pt]{\csname pingu@color@hammer#1\endcsname} (\pingu@name-hammer-#1-top)++(\csname pingu@hammer@#1@xshift\endcsname,\csname pingu@hammer@#1@yshift\endcsname) rectangle ++(\csname pingu@hammer@#1@width\endcsname,\csname pingu@hammer@#1@height\endcsname);
-\endscope
-}
-
-\pingu@create@wing@extra{plank}{%
- plank \@lr/.code = {\pingu@set@extra{plank\@lr}{true}\pingu@color{plank\@lr}{##1}},
- plank \@lr/.default = pingu@bronze!80!pingu@black,
- plank \@lr\space width/.code = \expandafter\def\csname pingu@plank@\@lr @width\endcsname{##1},
- plank \@lr\space height/.code = \expandafter\def\csname pingu@plank@\@lr @height\endcsname{##1},
- plank \@lr\space xshift/.code = \expandafter\def\csname pingu@plank@\@lr @xshift\endcsname{##1},
- plank \@lr\space yshift/.code = \expandafter\def\csname pingu@plank@\@lr @yshift\endcsname{##1}
-}{plank \@lr\space width=7mm,plank \@lr\space height=16.5mm, plank \@lr\space xshift=0mm,plank \@lr\space yshift=-1mm}
-\def\pingu@draw@wi@plank#1{%
- \pingu@setup@wing{plank}{#1}%
-\scope[rotate around={\@angle:(\pingu@name-wing-#1)}]
-\pingu@block[rounded corners=2pt]{\@col}([xshift=\csname pingu@plank@#1@xshift\endcsname,yshift=\csname pingu@plank@#1@yshift\endcsname]\pingu@name-wing-#1)++({-.5*(\csname pingu@plank@#1@width\endcsname)},{-.5*(\csname pingu@plank@#1@height\endcsname)}) rectangle ++({\csname pingu@plank@#1@width\endcsname},{\csname pingu@plank@#1@height\endcsname});
-\endscope
-}
-
-% \usetikzlibrary{spy}
-
-\pingu@create@wing@extra{magnifier}{%
- magnifier \@lr/.code = {\pingu@set@extra{magnifier\@lr}{true}\pingu@color{magnifier\@lr}{##1}}, % \noexpand\tikzset{/pingu/@pingu/.append style={spy scope={circle,draw,magnification=4,size=1cm}}}
- magnifier \@lr/.default = pingu@bronze,
- magnifier \@lr\space handle length/.code = \expandafter\def\csname pingu@magnifier@\@lr @length\endcsname{##1},
- magnifier \@lr\space handle shift/.code = \expandafter\def\csname pingu@magnifier@\@lr @shift\endcsname{##1},
- magnifier \@lr\space size/.code = \expandafter\def\csname pingu@magnifier@\@lr @size\endcsname{##1},
- magnifier \@lr\space glass/.code = \pingu@color{magnifier@\@lr @glass}{##1},
- magnifier \@lr\space opacity/.code = \expandafter\def\csname pingu@magnifier@\@lr @opacity\endcsname{##1},
- magnifier \@lr\space thick/.code = \expandafter\def\csname pingu@magnifier@\@lr @thick\endcsname{##1},
- magnifier \@lr\space xshift/.code = \expandafter\def\csname pingu@magnifier@\@lr @xshift\endcsname{##1},
- magnifier \@lr\space yshift/.code = \expandafter\def\csname pingu@magnifier@\@lr @yshift\endcsname{##1},
- magnifier \@lr\space handle/.code = \pingu@color{magnifier@\@lr @handle}{##1}%
-}{magnifier \@lr\space handle length=3.5mm, magnifier \@lr\space handle shift=-4mm, magnifier \@lr\space xshift=0mm,magnifier \@lr\space yshift=1mm,magnifier \@lr\space size=2.5mm,magnifier \@lr\space thick=.5mm,magnifier \@lr\space glass=pingu@blue!90!pingu@yellow,magnifier \@lr\space opacity=0.24}
-\def\pingu@draw@wi@magnifier#1{%
- \pingu@setup@wing{magnifier}{#1}%
- \scope[rotate around={\@angle:(\pingu@name-wing-#1)}]
-% \csname pingu@color@magnifier#1\endcsname
- \path ([yshift=\csname pingu@magnifier@#1@yshift\endcsname+\csname pingu@magnifier@#1@size\endcsname,xshift=\csname pingu@magnifier@\@lr @xshift\endcsname]\pingu@name-wing-#1) coordinate (@);
-
- % \spy[draw=green] on (@) in node at (@);
-% \pgfonlayer{foreground}
- \pingu@block[even odd rule]{\@col} (@) circle[radius=\csname pingu@magnifier@#1@size\endcsname] circle[radius=\csname pingu@magnifier@#1@size\endcsname-\csname pingu@magnifier@#1@thick\endcsname];
-
- \pingu@block[opacity=\csname pingu@magnifier@#1@opacity\endcsname]{\csname pingu@color@magnifier@#1@glass\endcsname} (@) circle[radius=\csname pingu@magnifier@#1@size\endcsname-\csname pingu@magnifier@#1@thick\endcsname];
-
- \pingu@block{\@col} % TODO: adapt size
- (@) ([shift={(-70:2.5mm)}]@) to[out=230,in=90] ++(-.5mm,-\csname pingu@magnifier@#1@length\endcsname) arc(360:180:.33mm) to[out=90,in=-50] ++(-.5mm,\csname pingu@magnifier@#1@length\endcsname);%
-% \endpgfonlayer
-\endscope
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-glasses.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-glasses.lib.tex
deleted file mode 100644
index 609adcb71dc..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-glasses.lib.tex
+++ /dev/null
@@ -1,105 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\pingu@create@extra{glasses}{%
- glasses/.code = \pingu@set@extra{glasses}{true}\pingu@color{glasses}{#1},
- glasses/.default = pingu@black,
- glasses left fill/.code = \pingu@color{glasses@fill@l}{#1},
- glasses right fill/.code = \pingu@color{glasses@fill@r}{#1},
- glasses left opacity/.code = \def\pingu@x@glasses@op@l{#1},
- glasses right opacity/.code = \def\pingu@x@glasses@op@r{#1},
- glasses fill/.style = {/pingu/glasses left fill=#1, /pingu/glasses right fill=#1},
- glasses opacity/.style = {/pingu/glasses left opacity=#1, /pingu/glasses right opacity=#1},
- glasses line width/.code = \def\pingu@x@glasses@lw{#1},
- sunglasses/.forward to = /pingu/sun glasses,
- glasses bend left/.code = \def\pingu@x@glasses@bend@l{#1},
- glasses bend right/.code = \def\pingu@x@glasses@bend@r{#1},
- glasses bend/.style = {/pingu/glasses bend left=#1,/pingu/glasses bend right=#1},
- sun glasses/.style = {/pingu/glasses, /pingu/glasses fill=#1},
- sun glasses/.default = pingu@black,
-}{glasses line width=1.125\p@,glasses fill=\@pingu@none,glasses opacity=.825,glasses bend left=32.5,glasses bend right=32.5}
-
-\def\pingu@draw@ea@glasses{% fact: 1.33; modified first shift and ht
- \pingu@block[opacity=\pingu@x@glasses@op@l]{\pingu@color@glasses@fill@l} (\pingu@name-eye-left)++(-2.66mm,1.75mm) to[bend left=8] ++(5.586mm,0) to[out=-80,in=70] ++(-.266mm,-3.6mm) to[bend left=\pingu@x@glasses@bend@l] ++(-4.8545mm,\z@) to[out=135,in=-90] ++(-1.064mm,3.5mm) -- cycle;
- \pingu@block[opacity=\pingu@x@glasses@op@r]{\pingu@color@glasses@fill@r} (\pingu@name-eye-right)++(2.66mm,1.75mm) to[bend right=8] ++(-5.586mm,0) to[out=-100,in=110] ++(.266mm,-3.6mm) to[bend right=\pingu@x@glasses@bend@r] ++(4.8545mm,\z@) to[out=45,in=-90] ++(1.064mm,3.5mm) -- cycle;
- \pingu@draw[line width=\pingu@x@glasses@lw]{\pingu@color@glasses} [rounded corners=.25mm](\pingu@name-eye-left)++(-2.66mm,1.75mm) coordinate (\pingu@name-glasses-left-mid) to[bend left=8] ++(5.586mm,0) coordinate (\pingu@name-glasses-left-outer) to[out=-80,in=70] ++(-.266mm,-3.6mm) to[bend left=\pingu@x@glasses@bend@l] ++(-4.8545mm,\z@) to[out=135,in=-90] coordinate[pos=.9] (\pingu@name-glasses-left-mid-b) ++(-1.064mm,3.5mm) -- cycle;
- \pingu@draw[line width=\pingu@x@glasses@lw]{\pingu@color@glasses} [rounded corners=.25mm] (\pingu@name-eye-right)++(2.66mm,1.75mm) coordinate (\pingu@name-glasses-right-mid) to[bend right=8] ++(-5.586mm,0) coordinate (\pingu@name-glasses-right-outer) to[out=-100,in=110] ++(.266mm,-3.6mm) to[bend right=\pingu@x@glasses@bend@r] ++(4.8545mm,\z@) to[out=45,in=-90] coordinate[pos=.9] (\pingu@name-glasses-right-mid-b) ++(1.064mm,3.5mm) -- cycle;
- \pingu@draw[line width=\pingu@x@glasses@lw]{\pingu@color@glasses} (\pingu@name-glasses-right-mid) to[bend right=10] (\pingu@name-glasses-left-mid);
- \pingu@draw[line width=\pingu@x@glasses@lw]{\pingu@color@glasses} (\pingu@name-glasses-right-mid-b) to[bend left=20] (\pingu@name-glasses-left-mid-b);
- \scope
- \clip[use path=\pingu@upperpingu];
- \pingu@draw[line width=\pingu@x@glasses@lw]{\pingu@color@glasses}
- (\pingu@name-glasses-right-mid) to[bend right=8] ++(-5.586mm,0) -- ++(-5mm,.5mm);
- \pingu@draw[line width=\pingu@x@glasses@lw]{\pingu@color@glasses}
- (\pingu@name-glasses-left-mid) to[bend left=8] ++(5.586mm,0) -- ++(5mm,.5mm);
- \endscope
-}
-\pingu@create@extra{glassesround}{%
- glasses round/.code = \pingu@set@extra{glassesround}{true}\pingu@color{glassesround}{#1},
- glasses round/.default = pingu@black,
- glasses round left fill/.code = \pingu@color{glassesround@fill@l}{#1},
- glasses round right fill/.code = \pingu@color{glassesround@fill@r}{#1},
- glasses round fill/.style = {/pingu/glasses round left fill=#1, /pingu/glasses round right fill=#1},
- glasses round left opacity/.code = \def\pingu@x@glassesround@op@l{#1},
- glasses round right opacity/.code = \def\pingu@x@glassesround@op@r{#1},
- glasses round opacity/.style = {/pingu/glasses round left opacity=#1, /pingu/glasses round right opacity=#1},
- glasses round left radius/.code = \def\pingu@x@glassesround@r@l{#1},
- glasses round right radius/.code = \def\pingu@x@glassesround@r@r{#1},
- glasses round radius/.style = {/pingu/glasses round left radius=#1, /pingu/glasses round right radius=#1},
- glasses round line width/.code = \def\pingu@x@glassesround@lw{#1},
- sunglasses round/.forward to = /pingu/sun glasses round,
- sun glasses round/.style = {/pingu/glasses round, /pingu/glasses round fill=#1},
- sun glasses round/.default = pingu@black,
- % todo: width/radius allow for different
-}{glasses round line width=.75\p@,glasses round fill=\@pingu@none,glasses round opacity=.825,glasses round radius=3.15mm}
-\def\pingu@draw@ea@glassesround{% fact: 1.33; modified first shift and ht
- \pingu@block[opacity=\pingu@x@glassesround@op@l]{\pingu@color@glassesround@fill@l} (\pingu@name-eye-left) circle [radius=\pingu@x@glassesround@r@l];
- \pingu@block[opacity=\pingu@x@glassesround@op@r]{\pingu@color@glassesround@fill@r} (\pingu@name-eye-right) circle [radius=\pingu@x@glassesround@r@r];
- \pingu@draw[line width=\pingu@x@glassesround@lw]{\pingu@color@glassesround} [rounded corners=.25mm](\pingu@name-eye-left) ++(150:\pingu@x@glassesround@r@l) coordinate (\pingu@name-glassesround-left-mid) arc (150:510:\pingu@x@glassesround@r@l);
- \pingu@draw[line width=\pingu@x@glassesround@lw]{\pingu@color@glassesround} [rounded corners=.25mm] (\pingu@name-eye-right) ++(30:\pingu@x@glassesround@r@r) coordinate (\pingu@name-glassesround-right-mid) arc (30:390:\pingu@x@glassesround@r@r);
- \pingu@draw[line width=\pingu@x@glassesround@lw]{\pingu@color@glassesround} (\pingu@name-glassesround-left-mid) to[bend right=30] (\pingu@name-glassesround-right-mid);
- \scope
- \clip[use path=\pingu@upperpingu];
- \pingu@draw[line width=\pingu@x@glassesround@lw]{\pingu@color@glassesround}
- (\pingu@name-glassesround-right-mid) arc(30:150:\pingu@x@glassesround@r@l) -- ++(-5mm,.65mm);
- \pingu@draw[line width=\pingu@x@glassesround@lw]{\pingu@color@glassesround}
- (\pingu@name-glassesround-left-mid) arc(150:30:\pingu@x@glassesround@r@r) -- ++(5mm,.65mm);
- \endscope
-}
-\pingu@create@extra{monocleleft}{%
- monocle left/.code = \pingu@set@extra{monocleleft}{true}\pingu@color{monocleleft}{#1},
- monocle left/.default = pingu@black,
- monocle left glass/.code = \pingu@color{monocleleft@glass}{#1},
- monocle left fill/.forward to = /pingu/monocle left glass,
- monocle left opacity/.code = \def\pingu@x@monocleleft@opacity{#1},
- monocle left fill opacity/.forward to = /pingu/monocle left opacity,
- monocle left string/.code = \pingu@color{monocleleft@string}{#1},
- monocle left string length/.code= \def\pingu@x@monocleleft@string@l{#1},
- monocle left blob/.code = \pingu@color{monocleleft@blob}{#1},
-}{monocle left glass=pingu@blue,monocle left opacity=.155,monocle left string=\pingu@color@monocleleft,monocle left blob=\pingu@color@monocleleft,monocle left string length=5.55mm}
-
-\def\pingu@draw@eb@monocle@l{%
- \pingu@block[/pingu/glow,opacity=\pingu@x@monocleleft@opacity]{\pingu@color@monocleleft@glass} (\pingu@name-eye-left) circle[radius=2mm];
- \pingu@draw[thin]{\pingu@color@monocleleft@string} (\pingu@name-eye-left)++(2mm,0)
- to[out=-75,in=100] ++(0,-\pingu@x@monocleleft@string@l);
- \pingu@block{\pingu@color@monocleleft@blob} (\pingu@name-eye-left)++(2mm,-\pingu@x@monocleleft@string@l) circle [radius=.65\p@];
- \pingu@draw[semithick]{\pingu@color@monocleleft} (\pingu@name-eye-left) circle[radius=2mm];
-}
-\pingu@create@extra{monocleright}{%
- monocle right/.code = \pingu@set@extra{monocleright}{true}\pingu@color{monocleright}{#1},
- monocle right/.default = pingu@black,
- monocle right glass/.code = \pingu@color{monocleright@glass}{#1},
- monocle right fill/.forward to = /pingu/monocle right glass,
- monocle right opacity/.code = \def\pingu@x@monocleright@opacity{#1},
- monocle right fill opacity/.forward to = /pingu/monocle right opacity,
- monocle right string/.code = \pingu@color{monocleright@string}{#1},
- monocle right string length/.code= \def\pingu@x@monocleright@string@r{#1},
- monocle right blob/.code = \pingu@color{monocleright@blob}{#1},
-}{monocle right glass=pingu@blue,monocle right opacity=.155,monocle right string=\pingu@color@monocleright,monocle right blob=\pingu@color@monocleright,monocle right string length=5.55mm}
-\def\pingu@draw@eb@monocle@r{%
- \pingu@block[/pingu/glow,opacity=\pingu@x@monocleright@opacity]{\pingu@color@monocleright@glass} (\pingu@name-eye-right) circle[radius=2mm];
- \pingu@draw[thin]{\pingu@color@monocleright@string} (\pingu@name-eye-right)++(-2mm,0)
- to[out=-105,in=80] ++(0,-\pingu@x@monocleright@string@r);
- \pingu@block{\pingu@color@monocleright@blob} (\pingu@name-eye-right)++(-2mm,-\pingu@x@monocleright@string@r) circle [radius=.65\p@];
- \pingu@draw[semithick]{\pingu@color@monocleright} (\pingu@name-eye-right) circle[radius=2mm];
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-hats.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-hats.lib.tex
deleted file mode 100644
index f37d2c33634..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-hats.lib.tex
+++ /dev/null
@@ -1,173 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\pingu@create@extra{strawhat}{%
- % extra strawhat (tikzducks basis)
- straw hat/.forward to = /pingu/strawhat,
- strawhat/.default = brown!50!white,
- strawhat/.code = \pingu@set@extra{strawhat}{true}\pingu@color{strawhat}{#1},
- straw hat ribbon/.forward to = /pingu/strawhat ribbon,
- strawhat ribbon/.code = \pingu@color{strawhat@ribbon}{#1},
- straw hat position/.forward to= /pingu/strawhat position,
- strawhat position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@strawhat@angle{#1}\def\pingu@x@strawhat@xshift{#2}\def\pingu@x@strawhat@yshift{#3}\def\pingu@x@strawhat@scale{#4}},
-}{strawhat ribbon= gray!85!black,strawhat position={-26.5:(-.185cm,.14cm){1.375}}}
-
-\def\pingu@draw@ea@strawhat{%
-\scope[rotate around={\pingu@x@strawhat@angle:(\pingu@name-head)},shift={(\pingu@name-head)},shift={(\pingu@x@strawhat@xshift,\pingu@x@strawhat@yshift)},scale=\pingu@x@strawhat@scale]
-\pingu@block{\pingu@color@strawhat} (.34cm,0) ellipse[x radius=.75cm, y radius=\pingu@one];
-\pingu@block{\pingu@color@strawhat} (0,.5mm) rectangle (.68cm,5mm);
-\pingu@block{\pingu@color@strawhat} (.34cm,5mm) ellipse[x radius=.34cm, y radius=.8mm];
-\pingu@block{\pingu@color@strawhat} (-.3955cm,.2mm) -- (1.0755cm,.2mm) -- (.68cm,2mm) -- (0,2mm) -- cycle;
-\pingu@block{\pingu@color@strawhat@ribbon} (.34cm,2mm) ellipse[x radius=.34cm, y radius=.8mm];
-\pingu@block{\pingu@color@strawhat@ribbon} (0,2mm) rectangle (.68cm,3mm);
-\pingu@block{\pingu@color@strawhat} (.34cm,3mm) ellipse[x radius=.34cm, y radius=.8mm];
-\endscope}
-
-\pingu@create@extra{hat}{%
- hat/.default = pingu@black!90!black,
- hat/.code = \pingu@set@extra{hat}{true}\pingu@color{hat}{#1},
- hat base/.code = \pingu@color{hat@base}{#1},
- hat coronal/.code = \pingu@color{hat@coronal}{#1},
- hat ribbon/.code = \pingu@color{hat@ribbon}{#1},
- hat position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@hat@angle{#1}\def\pingu@x@hat@xshift{#2}\def\pingu@x@hat@yshift{#3}\def\pingu@x@hat@scale{#4}},
-}{hat position={-2:(.35mm,0)1},hat base=\pingu@color@hat,hat coronal=\pingu@color@hat!91!white,hat ribbon=\pingu@color@hat!87!white}
-
-\newdimen\pingu@hat@w@half \pingu@hat@w@half=.925cm
-\newdimen\pingu@hat@h \pingu@hat@h=.625cm
-\def\pingupathhatupper{[rounded corners=.25mm](-.65cm,-.25cm) to[out=90,in=200] ++(.35cm,\pingu@hat@h) to[bend left=11] ++(.25cm,0) to[bend right=2.5] ++(\pingu@one,0) to[bend left=11] ++(.25cm,0) to[out=-20,in=90] ++(.35cm,-\pingu@hat@h) to[bend left=12] (-.65cm,-.25cm) -- cycle}
-\def\pingu@draw@ea@hat{%
-\scope[rotate around={\pingu@x@hat@angle:(\pingu@name-head-top)},shift={(\pingu@name-head-top)},shift={(\pingu@x@hat@xshift,\pingu@x@hat@yshift)},scale=\pingu@x@hat@scale]
-\pingu@block[/pingu/@draw=\pingu@color@hat@coronal,thick]{\pingu@color@hat@base} (0,-.25cm)++(180:\pingu@hat@w@half{} and .15cm) arc (180:360:\pingu@hat@w@half{} and .15cm) arc (0:180:\pingu@hat@w@half{} and .115cm) -- cycle;
-\pingu@block{\pingu@color@hat} \pingupathhatupper;
-\scope
-\clip\pingupathhatupper;
-\pingu@block{\pingu@color@hat@ribbon} (\z@,.2mm) ellipse [x radius=.95\pingu@hat@w@half, y radius=.13cm];
-\pingu@block{\pingu@color@hat} (\z@,.134cm) ellipse [x radius=.95\pingu@hat@w@half, y radius=.13cm];
-\endscope\endscope}
-
-\pingu@create@extra{cap}{%
- cap/.default = pingu@bronze,
- cap/.code = \pingu@set@extra{cap}{true}\pingu@color{cap}{#1},
- cap padding/.code = {\def\pingu@x@cap@padding{#1}},
- cap extra height/.code = {\def\pingu@x@cap@height{#1}},
-}{cap padding=.8mm, cap extra height=0pt}
-
-\def\pingu@draw@ea@cap{%
-\pingu@layer{foreground}[]
-\pingu@block[rounded corners=.7mm]{\pingu@color@cap} ([xshift=.25mm]\pingu@name-wing-left-start) to[bend left=4] ([xshift=-\pingu@x@cap@padding]\pingu@name-wings-side-left) to[bend right=3]
-([yshift=\pingu@x@cap@height]\pingu@name-head)
-to[bend right=3]
-([xshift=\pingu@x@cap@padding]\pingu@name-wings-side-right) [rounded corners=.15mm] to[bend left=4] ([xshift=-.25mm]\pingu@name-wing-right-start)
-to[bend left=8]
-([xshift=-\pingu@x@cap@padding]\pingu@name-wings-side-right)
-[rounded corners=.15mm]
-to[bend left=32] ++(\pingu@w@half+\pingu@x@cap@padding,\pingu@w@half+\pingu@one)
-to[bend left=32] ++(\pingu@w@half+\pingu@x@cap@padding,-\pingu@w@half-\pingu@one)
-to[bend left=8] cycle;
-\endpingu@layer
-}
-
-\pingu@create@extra{constructionhelmet}{%
- construction helmet/.default = pingu@yellow,
- construction helmet/.code = \pingu@set@extra{constructionhelmet}{true}\pingu@color{constructionhelmet}{#1},
- construction helmet padding/.code = {\def\pingu@x@constructionhelmet@padding{#1}},
- construction helmet extra height/.code = {\def\pingu@x@constructionhelmet@height{#1}},
- construction helmet position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@constructionhelmet@angle{#1}\def\pingu@x@constructionhelmet@xshift{#2}\def\pingu@x@constructionhelmet@yshift{#3}\def\pingu@x@constructionhelmet@scale{#4}},
-}{construction helmet padding=.325cm, construction helmet extra height=0pt,construction helmet position={-.5:(.05mm,-1.25mm)1}}
-
-\newdimen\pingu@constructionhelmet@w@half \pingu@constructionhelmet@w@half=.85cm
-\def\pingu@draw@ea@constructionhelmet{%
-\scope[rotate around={\pingu@x@constructionhelmet@angle:(\pingu@name-head-top)},shift={(\pingu@name-head-top)},shift={(\pingu@x@constructionhelmet@xshift,\pingu@x@constructionhelmet@yshift)},scale=\pingu@x@constructionhelmet@scale]
-\pingu@block{\pingu@color@constructionhelmet} (0,-.25cm)++(180:\pingu@constructionhelmet@w@half{} and \pingu@x@constructionhelmet@padding) arc (180:360:\pingu@constructionhelmet@w@half{} and \pingu@x@constructionhelmet@padding) arc (0:180:\pingu@constructionhelmet@w@half{} and .2cm) -- cycle;
-\scope
-\pingu@block{\pingu@color@constructionhelmet!93!pingu@black} (0,-.25cm)++(0:{.95\pingu@constructionhelmet@w@half} and .675cm) arc (0:180:{.95\pingu@constructionhelmet@w@half} and .675cm) coordinate[pos=.212] (@a) coordinate[pos=.256] (@aa) coordinate[pos=.788] (@b) coordinate[pos=.744] (@bb) arc (180:360:{.95\pingu@constructionhelmet@w@half} and .125cm) -- cycle;
-\clip (0,-.25cm)++(0:{.95\pingu@constructionhelmet@w@half} and .675cm) arc (0:180:{.95\pingu@constructionhelmet@w@half} and .675cm) arc (180:360:{.95\pingu@constructionhelmet@w@half} and .125cm) -- cycle;
-\pingu@block{\pingu@color@constructionhelmet!99!pingu@black} (-.75mm,-.25cm-.125cm) to[bend left=1] ++ (0,.675cm+.125cm) -- ++(1.5mm,0) to[bend right=1] ++(0,-.675cm-.125cm) -- cycle;
-\pingu@block{\pingu@color@constructionhelmet!99!pingu@black} (-.95mm,-.25cm-.125cm) to[bend left=3] ++ (-8mm,.675cm+.125cm) -- ++(1.5mm,0) to[bend right=3] ++(8mm,-.675cm-.125cm) -- cycle;
-\pingu@block{\pingu@color@constructionhelmet!99!pingu@black} (-.55mm,-.25cm-.125cm) to[bend right=3] ++ (8mm,.675cm+.125cm) -- ++(1.5mm,0) to[bend left=3] ++(-8mm,-.675cm-.125cm) -- cycle;
-\endscope
-% get the 3d wobbles
-\pingu@block[rounded corners=.03mm]{\pingu@color@constructionhelmet!99!pingu@black} (-.75mm,-.25cm+.675cm-.25mm) -- ++(0,.3mm) -| ++(1.5mm,-.3mm) -- cycle;
-\pingu@block{\pingu@color@constructionhelmet!99!pingu@black} (@a) to[bend right=14] (@aa);
-\pingu@block{\pingu@color@constructionhelmet!99!pingu@black} (@bb) to[bend right=14] (@b);
-\endscope
-}
-
-\pingu@create@extra{conicalhat}{%
- conical hat/.default = pingu@bronze,
- conical hat/.code = \pingu@set@extra{conicalhat}{true}\pingu@color{conicalhat}{#1},
- conical hat rounding/.code = {\def\pingu@x@conicalhat@rounding{#1}},
- conical hat shade/.code = {\def\pingu@x@conicalhat@shade{#1}},
- conical hat height/.code = {\def\pingu@x@conicalhat@height{#1}},
- conical hat width/.code = {\def\pingu@x@conicalhat@width{#1}},
- conical hat position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@conicalhat@angle{#1}\def\pingu@x@conicalhat@xshift{#2}\def\pingu@x@conicalhat@yshift{#3}\def\pingu@x@conicalhat@scale{#4}},
-}{conical hat position={-15:(2mm,-3mm)1}, conical hat height=8mm, conical hat width=2.25cm,conical hat shade=\pingu@color@conicalhat!80!pingu@black, conical hat rounding=.4pt}
-
-\def\pingu@draw@ea@conicalhat{%
-\scope[rotate around={\pingu@x@conicalhat@angle:(\pingu@name-head-top)},shift={(\pingu@name-head-top)},shift={(\pingu@x@conicalhat@xshift,\pingu@x@conicalhat@yshift)},scale=\pingu@x@conicalhat@scale]
-
-\pingu@layer{background}[]
-\pingu@block[rounded corners=\pingu@x@conicalhat@rounding]{\pingu@x@conicalhat@shade} (0,-.22cm)++(180:{\pingu@x@conicalhat@width/2+.05mm} and 1mm) coordinate (@) arc (180:360:{\pingu@x@conicalhat@width/2+.05mm} and 1mm) -- ++(.15mm,.3mm) to[bend right=5] ++(-\pingu@x@conicalhat@width/2, \pingu@x@conicalhat@height-.025cm) to[bend right=5] ([xshift=-.15mm,yshift=.3mm]@) -- cycle;
-\endpingu@layer
-
-\pingu@block[rounded corners=\pingu@x@conicalhat@rounding]{\pingu@color@conicalhat} (0,-.25cm)++(180:\pingu@x@conicalhat@width/2 and 1mm) coordinate (@) arc (180:0:\pingu@x@conicalhat@width/2 and 1mm) -- ++(.225mm,.6mm) to[bend right=5] ++(-\pingu@x@conicalhat@width/2, \pingu@x@conicalhat@height) to[bend right=5] ([xshift=-.225mm,yshift=.6mm]@) -- cycle;
-\endscope
-}
-
-\pingu@create@extra{witchhat}{%
- witch hat/.code = \pingu@set@extra{witchhat}{true}\pingu@color{witchhat}{#1},
- witch hat/.default = pingu@purple!40!black,
- witch hat base/.code = \pingu@color{witchhat@base}{#1},
- witch hat coronal/.code = \pingu@color{witchhat@coronal}{#1},
- witch hat ribbon/.code = \pingu@color{witchhat@ribbon}{#1},
- witch hat band/.code = \pingu@color{witchhat@band}{#1},
- witch hat position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@witchhat@angle{#1}\def\pingu@x@witchhat@xshift{#2}\def\pingu@x@witchhat@yshift{#3}\def\pingu@x@witchhat@scale{#4}},
-}{witch hat position={-7:(.625mm,.45mm){1.15}},witch hat base=\pingu@color@witchhat,witch hat coronal=\pingu@color@witchhat!91!white,witch hat ribbon=\pingu@color@witchhat!87!white,witch hat band=!hide}
-
-\newdimen\pingu@witchhat@w@half \pingu@witchhat@w@half=1.125cm
-\newdimen\pingu@witchhat@h \pingu@witchhat@h=1.3cm
-\def\pingupathwitchhatupper{[rounded corners=.65mm](-.625cm,-.25cm) -- ++(.8cm,\pingu@witchhat@h-4.5mm) -- ++(6.5mm,4.5mm) -- ++(-1.5mm,-4.5mm) -- ++(-1.25mm,-\pingu@witchhat@h+4.5mm)}
-\def\pingu@draw@ea@witchhat{%
-\scope[rotate around={\pingu@x@witchhat@angle:(\pingu@name-head-top)},shift={(\pingu@name-head-top)},shift={(\pingu@x@witchhat@xshift,\pingu@x@witchhat@yshift)},scale=\pingu@x@witchhat@scale]
-\pingu@draw[semithick]{\pingu@color@witchhat@band} (-.615cm,-.25cm) to[out=-100,in=180] ++(.5cm,-1.1cm) to[bend right=5] ++(3.5mm,.1mm) to[out=0,in=-78] ++(.433cm,1.1cm);
-\pingu@block[/pingu/@draw=\pingu@color@witchhat@coronal,thick]{\pingu@color@witchhat@base} (0,-.25cm)++(180:\pingu@witchhat@w@half{} and .15cm) arc (180:360:\pingu@witchhat@w@half{} and .15cm) arc (0:180:\pingu@witchhat@w@half{} and .115cm) -- cycle;
-\pingu@block{\pingu@color@witchhat} \pingupathwitchhatupper;
-\clip\pingupathwitchhatupper;
-\pingu@block{\pingu@color@witchhat@ribbon} (\z@,.2mm) ellipse [x radius=.95\pingu@witchhat@w@half, y radius=.12cm];
-\pingu@block{\pingu@color@witchhat} (\z@,.134cm) ellipse [x radius=.95\pingu@witchhat@w@half, y radius=.12cm];
-\endscope
-}
-
-
-\pingu@create@extra{mitra}{%
- mitra/.default = pingu@red!67!pingu@black,%pingu@black!90!black,
- mitra/.code = \pingu@set@extra{mitra}{true}\pingu@color{mitra}{#1},
- mitra height/.code = {\def\pingu@x@mitra@height{#1}},
- mitra background/.code = \pingu@color{mitra@background}{#1},
- mitra overset/.code = {\def\pingu@x@mitra@overset{#1}},
- mitra lower angle/.code = {\def\pingu@x@mitra@lowerangle{#1}},
- mitra upper angle/.code = {\def\pingu@x@mitra@upperangle{#1}},
- mitra lower band/.code = \pingu@color{mitra@lower@band}{#1},
- mitra lower band height/.code = {\def\pingu@x@mitra@lowerband@height{#1}},
- mitra upper band/.code = \pingu@color{mitra@upper@band}{#1},
- mitra upper band height/.code = {\def\pingu@x@mitra@upperband@height{#1}},
- mitra center band/.code = \pingu@color{mitra@center@band}{#1},
- mitra center band width/.code = {\def\pingu@x@mitra@centerband@width{#1}},
- mitra position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@mitra@angle{#1}\def\pingu@x@mitra@xshift{#2}\def\pingu@x@mitra@yshift{#3}\def\pingu@x@mitra@scale{#4}},
-}{mitra position={0:(0,0)1},mitra height=1.125cm,mitra overset=1.25mm,mitra lower angle=125,mitra upper angle=-35,mitra lower band=pingu@yellow!75!pingu@black,mitra center band=\pingu@color@mitra@lower@band,mitra lower band height=.2,mitra center band width={2*\pingu@x@mitra@lowerband@height},mitra upper band=\pingu@color@mitra@lower@band,mitra upper band height={1.5*\pingu@x@mitra@lowerband@height},mitra background=\pingu@color@mitra!80!pingu@black}
-
-\newdimen\pingu@mitra@w@half \pingu@mitra@w@half=.625cm
-\def\pingu@x@mitra@path{(0,-.2185cm)++(180:\pingu@mitra@w@half{} and .035cm) arc (180:360:\pingu@mitra@w@half{} and .035cm) [rounded corners=1pt] -- ++(\pingu@x@mitra@overset,.3*\pingu@x@mitra@height) to[out=\pingu@x@mitra@lowerangle,in=\pingu@x@mitra@upperangle] ++(-\pingu@x@mitra@overset-\pingu@mitra@w@half,.7*\pingu@x@mitra@height)
-to[out=180-\pingu@x@mitra@upperangle,in=180-\pingu@x@mitra@lowerangle] ++(-\pingu@x@mitra@overset-\pingu@mitra@w@half,-.7*\pingu@x@mitra@height) [sharp corners] -- cycle}
-\def\pingu@draw@ea@mitra{%
-\scope[rotate around={\pingu@x@mitra@angle:(\pingu@name-head-top)},shift={(\pingu@name-head-top)},shift={(\pingu@x@mitra@xshift,\pingu@x@mitra@yshift)},scale=\pingu@x@mitra@scale]
-\pingu@block{\pingu@color@mitra@background} (0,-.2185cm)++(180:\pingu@mitra@w@half{} and .035cm) arc (180:360:\pingu@mitra@w@half{} and .035cm) [rounded corners=1pt] -- ++(\pingu@x@mitra@overset,.3*\pingu@x@mitra@height) to[out=\pingu@x@mitra@lowerangle,in=\pingu@x@mitra@upperangle] ++(-\pingu@x@mitra@overset-\pingu@mitra@w@half-.66mm,.7*\pingu@x@mitra@height-.1mm)
-to[out=180-\pingu@x@mitra@upperangle+2,in=180-\pingu@x@mitra@lowerangle-2] ++(-\pingu@x@mitra@overset-\pingu@mitra@w@half+.66mm,-.7*\pingu@x@mitra@height+.1mm) [sharp corners] -- cycle;
-\pingu@block{\pingu@color@mitra} \pingu@x@mitra@path;
-% \pingu@block{\pingu@color@mitra} \pingupathmitraupper;
-\scope\clip\pingu@x@mitra@path;
-% TODO: switch to factors non relative to \pingu@x@mitra@overset
-\pingu@block{\pingu@color@mitra@lower@band} (0,-.2185cm)++(180:\pingu@mitra@w@half{} and .035cm) arc (180:360:\pingu@mitra@w@half{} and .035cm) -- ++(\pingu@x@mitra@lowerband@height*\pingu@x@mitra@overset,\pingu@x@mitra@lowerband@height*.3*\pingu@x@mitra@height) arc (0:-180:{\pingu@x@mitra@lowerband@height*\pingu@x@mitra@overset+\pingu@mitra@w@half} and .035cm) -- cycle;
-\pingu@block{\pingu@color@mitra@center@band} (\pingu@x@mitra@centerband@width*\pingu@x@mitra@overset+.1mm,-.2185cm) to[bend right=4] ++(0,\pingu@x@mitra@height) to[bend right] ++(-2*\pingu@x@mitra@centerband@width*\pingu@x@mitra@overset-.1mm,0) to[bend left=4] ++(0,-\pingu@x@mitra@height) -- cycle;
-\pingu@block{\pingu@color@mitra@upper@band} (0,.3*\pingu@x@mitra@height-.2185cm-0.5*\pingu@x@mitra@upperband@height*.3*\pingu@x@mitra@height)++(180:{\pingu@x@mitra@overset+\pingu@mitra@w@half} and .035cm) arc (180:360:{\pingu@x@mitra@overset+\pingu@mitra@w@half} and .035cm) -- ++(0,\pingu@x@mitra@upperband@height*.3*\pingu@x@mitra@height) arc (0:-180:{\pingu@x@mitra@overset+\pingu@mitra@w@half} and .035cm) -- cycle;
-\endscope\endscope} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-horse.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-horse.lib.tex
deleted file mode 100644
index 1fefbf8c480..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-horse.lib.tex
+++ /dev/null
@@ -1,229 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-% TODO: get all of this customizable
-\colorlet{base@a}{lightgray!95!black}
-\colorlet{base@b}{lightgray!79!black}
-
-\colorlet{a}{lightgray!63!black}
-\colorlet{b}{lightgray!81!black}
-\def\basew{12}
-\def\pingu@@horse@scale{.1}
-
-\def\pingu@@horse@@main{(1.275,.55) -- ++(\if@pingu@@horse@@donkey@.05\else.1\fi,.2) -- ++(\if@pingu@@horse@@donkey@-.2\else-.25\fi,.25) to[bend right=4] ++(-.425,1.75) to[bend left=15] ++(.05,.2) to[bend right=30] ++(-.1,1.9) to[bend left=30] ++(0,1.65) coordinate(@back) to[bend left=30] ++(2,.625) to[bend right=18,looseness=.8] ++(3.25,-.1) [rounded corners=2*\pingu@@horse@scale] coordinate(@hair) to[out=34,in=185] ++(3,1.3) to[bend left=19] coordinate[pos=.5](@ear) ++(.85,-.4) to[bend left=5] ++(.24,-.45) to[bend right=20] ++(\if@pingu@@horse@@donkey@.25\else0\fi,\if@pingu@@horse@@donkey@-1.2\else-.7\fi) to[bend left=2] ++(.1,-.55) to[out=-85,in=-60,looseness=.75] ++(\if@pingu@@horse@@donkey@-.55\else-.475\fi,\if@pingu@@horse@@donkey@-.45\else-.35\fi) coordinate(@mouth) to[out=-135,in=-120] ++(\if@pingu@@horse@@donkey@-.4\else-.37\fi,\if@pingu@@horse@@donkey@.2\else.25\fi) -- ++(0,.1)
-to[out=125,in=-68] ++(-.58,.615) coordinate (@mouth-low)
-to[out=215,in=80] ++(-1.25,-2) to[bend left=24] ++(-.65,-1) to[out=258,in=86] ++(-.42,-1.25) to[bend left=3] ++(-.2,-.6) to[bend right=10] ++(-.14,-1.15) to[bend left=2] coordinate[pos=.62] (@hooffront) ++(.355,-.565) to[bend left=15] ++(-.4,-.075) to[bend left=10] ++(-.28,.1) to[bend left=9] ++(.06,.3) to[bend right=9] ++(-.2,.4) to[out=80,in=-80] ++(.138,1.4) to[out=70,in=-103] ++(.2,1.3) to[bend right=10] ++(-.225,.44) coordinate (@frontleg) to[out=196,in=\if@pingu@@horse@@donkey@-65\else-25\fi] ++(-3.3,\if@pingu@@horse@@donkey@.4\else.575\fi) coordinate (@backleg) to[bend right=\if@pingu@@horse@@donkey@16\else10\fi] ++(-.8,\if@pingu@@horse@@donkey@-1.375\else-1.5\fi) to[bend right=\if@pingu@@horse@@donkey@9\else20\fi] ++(.1,-2.35) -- ++(\if@pingu@@horse@@donkey@.1\else.2\fi,-.25)
-coordinate (@hoofback) to[bend right=\if@pingu@@horse@@donkey@9\else8\fi] ++(.15,-.26) to[bend left=10] ++(\if@pingu@@horse@@donkey@-.66\else-.55\fi,\if@pingu@@horse@@donkey@-.15\else-.05\fi) -- cycle}
-
-% #1 is the wing for the color and key assignments
-\def\pingu@@drawer@horse#1{
-% this ensures all coordinates are set in place
-% i know this i inefficient, but atm this is of no greater
-% concern -- i can not use layers as they would clash with that
-% of the penguin and who wants that... no one does!
-% penguins deserve freedom!
-\path \pingu@@horse@@main;
-
-% no we draw "behind" the horse:
-
-% Sockel
-\csname if@pingu@x@horse@#1@base@\endcsname
-\pingu@block[draw=\csname pingu@color@horse#1@base@shade@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@base@shade\endcsname} (4.35-\basew/2,.433) -- ++(0,-.5) arc(180:360:\basew/2 and 1) -- ++(0,.5) arc(360:180:\basew/2 and 1);
-\pingu@block[draw=\csname pingu@color@horse#1@base@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@base\endcsname} (4.35,.433) ellipse[x radius=\basew/2,y radius=1];
-\fi
-% background front leg
-\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1\endcsname} [rounded corners=1*\pingu@@horse@scale](@frontleg) to[out=266,in=85] ++(.09,-.5) to[bend left=10] ++(-.15,-.8)
-to[bend right=7] ++(-.05,-.2) to[bend left=13] ++(-.2,-1.15) to[bend right=13] ++(.15,-.2) to[bend left=10] ++(-.07,-.3) to[bend right=100] ++(.45,-.1) to[bend right=10] coordinate[pos=0.08](@hooffront@) ([yshift=5mm,xshift=3mm]@frontleg) -- cycle;
-\pingu@block[draw=\csname pingu@color@horse#1@fr@hoof\endcsname!80!pingu@black,line width=2pt*\pingu@@horse@scale,rounded corners=.12]{\csname pingu@color@horse#1@fr@hoof\endcsname} (@hooffront@) to[bend left=2] ++(0,-.565*.665) to[bend left=59] ++(-.225,-.08) -- ++(-.02,.03) to[bend left=20] ++(-.315,.11) to[bend right=6] ++(.092,.2) to[bend right=25] cycle;
-% background back le0
-\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1\endcsname} [rounded corners=1*\pingu@@horse@scale](@backleg) to[out=-115,in=\if@pingu@@horse@@donkey@120\else130\fi] ++(-.3,-3.5) -- ++(.2,-.3) coordinate(@hoofback@) to[bend left] ++(-.5,-.1)
--- ++(\if@pingu@@horse@@donkey@-.2\else-.05\fi,.15) -- ++(0,.15) to[bend left=\if@pingu@@horse@@donkey@45\else60\fi] cycle;
-\pingu@block[draw=\csname pingu@color@horse#1@br@hoof\endcsname!80!pingu@black,line width=2pt*\pingu@@horse@scale]{\csname pingu@color@horse#1@br@hoof\endcsname} (@hoofback@) to[bend right=\if@pingu@@horse@@donkey@9\else9\fi] ++(.206,-.265) to[bend left=10] ++(\if@pingu@@horse@@donkey@-.66\else-.55\fi,\if@pingu@@horse@@donkey@-.15\else-.05\fi) -- ++(-1.73mm,2.42mm) to[bend right=6] cycle;
-
-\if@pingu@@horse@@donkey@
-\pingu@block[draw=\csname pingu@color@horse#1@tail@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@tail\endcsname} [rounded corners=1*\pingu@@horse@scale](@back) to[out=215,in=95] ++(-.1,-2) to[out=270,in=92] ++(0,-.75) [sharp corners] to[bend right=20] coordinate[pos=.5] (@) ++(.15,0) to[bend right=10] cycle;
-% TODO: hide support
-%\node[draw=\csname pingu@color@horse#1@tail@draw\endcsname,fill=\csname pingu@color@horse#1@tail\endcsname,cloud,cloud puffs=30,cloud ignores aspect,scale=1.33*\pingu@@horse@scale,yshift=16mm,rotate=-5,line width=\@pingu@@horse@lw*\pingu@@horse@scale] at (@) {\rotatebox{90}{\phantom{A}\hskip7.5em}};
-\scope[rotate around={180:(@)}] % adapted from the broom
-\pingu@block[rounded corners=.44pt,draw=\csname pingu@color@horse#1@tail@draw\endcsname]{\csname pingu@color@horse#1@tail\endcsname} (@)++(-1mm,-2mm) to[out=115,in=240] ++(3mm,12.5mm) to[out=300,in=65] ([xshift=.95mm,yshift=-2mm]@) to[bend right=4] ([xshift=-.75mm,yshift=-2mm]@) -- cycle;
-\pingu@block[rounded corners=.44pt,draw=\csname pingu@color@horse#1@tail@draw\endcsname]{\csname pingu@color@horse#1@tail\endcsname} (@)++(-1mm,-2mm) to[out=115,in=240] coordinate[pos=.17] (@r) coordinate[pos=.19] (@r2) ++(-.75mm,10.5mm) to[out=300,in=65] ([xshift=.95mm,yshift=-2mm]@) to[bend right=4] ([xshift=-.75mm,yshift=-2mm]@) -- cycle;
-\pingu@block[rounded corners=.44pt,draw=\csname pingu@color@horse#1@tail@draw\endcsname]{\csname pingu@color@horse#1@tail\endcsname}(@)++(-.5mm,-1.5mm) to[out=115,in=240] ++(.5mm,12mm) to[out=300,in=65] ([xshift=.5mm,yshift=-1.5mm]@) -- cycle;
-\endscope
-\else
-\pingu@block[draw=\csname pingu@color@horse#1@tail@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@tail\endcsname} [rounded corners=1*\pingu@@horse@scale](@back) to[out=215,in=90] ++(-.4,-2.5) to[out=270,in=92] ++(0,-2.8) [sharp corners] to[bend right=20] ++(.6,0) to[bend right=10] cycle;
-\fi
-
-% back ear
-\if@pingu@@horse@@donkey@
-\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@ears\endcsname} ([xshift=.2mm,yshift=-1.5mm]@ear) to[bend left=20] ++(.373,1.465) coordinate(@) to[bend left=10] ++(-.15,-1.5);
-\else
-\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@ears\endcsname} ([xshift=.2mm,yshift=-1.5mm]@ear) to[bend left=20] ++(.373,.565) coordinate(@) to[bend left=10] ++(-.15,-.75);
-\fi
-% and here comes the wheeee (imagine-horse-sound)
-\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1\endcsname} [rounded corners=1*\pingu@@horse@scale] \pingu@@horse@@main;
-
-\pingu@draw[line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@draw\endcsname} ([yshift=-.1mm]@mouth-low) to[bend left=12] ++(.06,.65);
-\pingu@draw[line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@mouth\endcsname} ([yshift=-.115mm]@mouth) -- ++(-.035,.225);
-
-\edef\pingu@tmp{\if@pingu@@horse@@donkey@4.5mm\else3.85mm\fi}%
-\edef\pingu@tmpb{\if@pingu@@horse@@donkey@3.65mm\else2.45mm\fi}%
-\pingu@draw[line width=\@pingu@@horse@lw*\pingu@@horse@scale,line join=round]{\csname pingu@color@horse#1@nose\endcsname} ([xshift=\pingu@tmp,yshift=\pingu@tmpb]@mouth) to[out=140,in=10] ++(-.17,-.074) to[bend right=49] cycle;
-
-\pingu@draw[line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@draw\endcsname} ([yshift=-.35mm]@frontleg) to[bend left=12] ++(.01,.325);
-\pingu@draw[line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@draw\endcsname} ([yshift=-.2mm]@backleg) to[bend right=13] ++(.25,.425);
-
-\if@pingu@@horse@@donkey@
-\pingu@block[draw=\csname pingu@color@horse#1@mane@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@mane\endcsname} [rounded corners=1*\pingu@@horse@scale](@hair) to[out=34,in=185] ++(3,1.3) to[bend left=10] ++(.415,-.1) -- ++(-.1,-.25) to[out=186,in=35] ([yshift=-4mm,xshift=1.5mm]@hair) -- cycle;
-
-\pingu@block[draw=\csname pingu@color@horse#1@thatch@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@thatch\endcsname} [rounded corners=1*\pingu@@horse@scale]([xshift=2.1mm,yshift=-1.05mm]@ear) -- ++(-.1,-.2) to[bend left=4] ++(.45,-.275) to[bend right=9] cycle;
-\else
-\pingu@block[draw=\csname pingu@color@horse#1@mane@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@mane\endcsname} [rounded corners=1*\pingu@@horse@scale](@hair) to[out=34,in=185] ++(3,1.3) to[bend left=10] ++(.415,-.1) -- ++(-.1,-.4) to[out=194,in=30] ([yshift=-11.5mm,xshift=1.5mm]@hair) -- cycle;
-
-\pingu@block[draw=\csname pingu@color@horse#1@thatch@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@thatch\endcsname} [rounded corners=1*\pingu@@horse@scale]([xshift=2mm,yshift=-1mm]@ear) -- ++(-.1,-.3275) to[bend left=4] ++(.455,-.175) to[bend right=9] cycle;
-\fi
-
-% ear
-\if@pingu@@horse@@donkey@
-\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@ears\endcsname} ([xshift=-1mm,yshift=-1mm]@ear) to[bend left=15] ++(.393,1.685) coordinate(@) to[bend right=17] ++(-.15,-1.8);
-\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@ears\endcsname} (@) to[bend right=17] ++(-.15,-1.8) to[bend right=14] cycle;
-\else
-\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@ears\endcsname} ([xshift=-.75mm,yshift=-1mm]@ear) to[bend left=20] ++(.393,.585) coordinate(@) to[bend right=10] ++(-.15,-.7);
-\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@ears\endcsname} (@) to[bend right=7] ++(-.15,-.7) to[bend right=14] cycle;
-\fi
-
-% the eye; this is no error it has draw as fill
-\pingu@block{\csname pingu@color@horse#1@eyes\endcsname} [rounded corners=.25*\pingu@@horse@scale] ([xshift=3mm,yshift=-7.5mm]@ear) to[bend right=20] ++(.125,-.2) to[bend right=50] ++(.1,.125) to[bend left=15] cycle;
-
-\pingu@block[draw=\csname pingu@color@horse#1@fl@hoof\endcsname!80!pingu@black,line width=2pt*\pingu@@horse@scale]{\csname pingu@color@horse#1@fl@hoof\endcsname} (@hooffront) to[bend left=2] ++(.355*.49,-.545*.49) to[bend left=11] ++(-.45-.295,-.05+0.033)to[bend right=2] ++(.046,.29) to[bend right=10] cycle;
-\pingu@block[draw=\csname pingu@color@horse#1@bl@hoof\endcsname!80!pingu@black,line width=2pt*\pingu@@horse@scale]{\csname pingu@color@horse#1@bl@hoof\endcsname} (@hoofback) to[bend right=\if@pingu@@horse@@donkey@9\else8\fi] ++(.15,-.26) to[bend left=10] ++(\if@pingu@@horse@@donkey@-.66\else-.55\fi,\if@pingu@@horse@@donkey@-.15\else-.05\fi) -- ++(-1.73mm,2.42mm) to[bend right=6] cycle; %to[bend left=2] ++(.355*.65,-.565*.65) to[bend left=15] ++(-.395,-.075) to[bend left=10] ++(-.293,.105) to[bend left=9] ++(.06,.3) to[bend left=5] cycle;
-}
-
-% universal switch for all three positions
-\newif\if@pingu@@horse@@donkey@
-
-\newif\if@pingu@x@horse@left@flip@
-\newif\if@pingu@x@horse@right@flip@
-\newif\if@pingu@x@horse@left@base@
-\newif\if@pingu@x@horse@right@base@
-\newif\if@pingu@x@horse@left@donkey@
-\newif\if@pingu@x@horse@right@donkey@
-\pingu@create@wing@extra{horse}{%
- horse \@lr/.code = {\pingu@set@extra{horse\@lr}{true}\pingu@color{horse\@lr}{##1}},
- horse \@lr/.default = pingu@bronze!80!pingu@black,
- horse \@lr\space flip/.is if = @pingu@x@horse@\@lr @flip@,
- horse \@lr\space donkey/.is if = @pingu@x@horse@\@lr @donkey@,
- horse \@lr\space has base/.is if = @pingu@x@horse@\@lr @base@,
- horse \@lr\space draw/.code = \pingu@color{horse\@lr @draw}{##1},%
- horse \@lr\space line width/.code = \@namedef{pingu@horse\@lr @x@line@width}{##1},%
- horse \@lr\space mane/.code = \pingu@color{horse\@lr @mane}{##1},%
- horse \@lr\space mane draw/.code = \pingu@color{horse\@lr @mane@draw}{##1},%
- horse \@lr\space thatch/.code = \pingu@color{horse\@lr @thatch}{##1},%
- horse \@lr\space thatch draw/.code = \pingu@color{horse\@lr @thatch@draw}{##1},%
- horse \@lr\space tail/.code = \pingu@color{horse\@lr @tail}{##1},%
- horse \@lr\space tail draw/.code = \pingu@color{horse\@lr @tail@draw}{##1},%
- horse \@lr\space eyes/.code = \pingu@color{horse\@lr @eyes}{##1},%
- horse \@lr\space eye/.forward to = /pingu/horse \@lr\space eyes,%
- horse \@lr\space mouth/.code = \pingu@color{horse\@lr @mouth}{##1},%
- horse \@lr\space nose/.code = \pingu@color{horse\@lr @nose}{##1},%
- horse \@lr\space ears/.code = \pingu@color{horse\@lr @ears}{##1},%
- horse \@lr\space base/.code = \pingu@color{horse\@lr @base}{##1},%
- horse \@lr\space base draw/.code = \pingu@color{horse\@lr @base@draw}{##1},%
- horse \@lr\space base shade/.code = \pingu@color{horse\@lr @base@shade}{##1},%
- horse \@lr\space base shade draw/.code = \pingu@color{horse\@lr @base@shade@draw}{##1},%
- horse \@lr\space front left hoof/.code = \pingu@color{horse\@lr @fl@hoof}{##1},%
- horse \@lr\space front right hoof/.code= \pingu@color{horse\@lr @fr@hoof}{##1},%
- horse \@lr\space back left hoof/.code = \pingu@color{horse\@lr @bl@hoof}{##1},%
- horse \@lr\space back right hoof/.code = \pingu@color{horse\@lr @br@hoof}{##1},%
- horse \@lr\space front hoofs/.style = {/pingu/horse \@lr\space front left hoof=##1,/pingu/horse \@lr\space front right hoof=##1},
- horse \@lr\space back hoofs/.style = {/pingu/horse \@lr\space back left hoof=##1,/pingu/horse \@lr\space back right hoof=##1},
- horse \@lr\space hoofs/.style = {/pingu/horse \@lr\space front hoofs=##1,/pingu/horse \@lr\space back hoofs=##1},
- horse \@lr\space hoofs/.default = gray!80!white,
- % TODO: allow colors to be styles?
- horse \@lr\space xshift/.code = \@namedef{pingu@x@horse\@lr @xshift}{##1},
- horse \@lr\space yshift/.code = \@namedef{pingu@x@horse\@lr @yshift}{##1},
- horse \@lr\space on base/.style ={/pingu/horse \@lr\space yshift=4cm},
-}{horse \@lr\space draw=\csname pingu@color@horse\@lr\endcsname!80!pingu@black,horse \@lr\space mane=\csname pingu@color@horse\@lr\endcsname!86!pingu@white,horse \@lr\space mane draw=\csname pingu@color@horse\@lr @mane\endcsname!80!pingu@black,horse \@lr\space eyes=\csname pingu@color@horse\@lr @draw\endcsname,horse \@lr\space mouth=\csname pingu@color@horse\@lr @draw\endcsname,horse \@lr\space nose=\csname pingu@color@horse\@lr @draw\endcsname,horse \@lr\space ears=\csname pingu@color@horse\@lr\endcsname,horse \@lr\space thatch=\csname pingu@color@horse\@lr @mane\endcsname,horse \@lr\space thatch draw=\csname pingu@color@horse\@lr @thatch\endcsname!80!pingu@black,horse \@lr\space tail=\csname pingu@color@horse\@lr @mane\endcsname,horse \@lr\space tail draw=\csname pingu@color@horse\@lr @tail\endcsname!80!pingu@black,horse \@lr\space has base=false,horse \@lr\space base=lightgray!90!black,horse \@lr\space base draw=\csname pingu@color@horse\@lr @base\endcsname!91!pingu@black,horse \@lr\space base shade=lightgray!80!black,horse \@lr\space base shade draw=\csname pingu@color@horse\@lr @base@shade\endcsname!91!pingu@black,horse \@lr\space xshift=0pt,horse \@lr\space yshift=0pt,horse \@lr\space flip=\ifx\@lr\pingu@str@wing@left true\else false\fi,horse \@lr\space donkey=false,horse \@lr\space line width=1.75pt,horse \@lr\space hoofs=\@pingu@none}
-
-\def\pingu@draw@wi@horse#1{%
- \pingu@setup@wing{horse}{#1}%
-\scope[scale=\pingu@@horse@scale,every path/.append style={line cap=round, line join=round},shift=(\pingu@name-wing-#1),rotate around={\@angle-5:(\pingu@name-wing-#1)}]
-\csname if@pingu@x@horse@#1@flip@\endcsname
-\scope[xshift=-4cm-\csname pingu@x@horse#1@xshift\endcsname,yshift=-42mm+\csname pingu@x@horse#1@yshift\endcsname]
-\else
-\scope[xshift=4cm+\csname pingu@x@horse#1@xshift\endcsname,yshift=-42mm+\csname pingu@x@horse#1@yshift\endcsname,xscale=-1]
-\fi
-\csname if@pingu@x@horse@#1@donkey@\endcsname
- \@pingu@@horse@@donkey@true
-\fi
- \edef\@pingu@@horse@lw{\csname pingu@horse#1@x@line@width\endcsname}
- \pingu@@drawer@horse{#1}
- % TODO-SET: hoof
-\endscope\endscope
-}
-% todo: make statue extra
-% todo: make horse hat
-
-% to get on horse we create some kind of third wing item: 'on'
-% that will be used to initialize all of the colors and keys
-\newif\if@pingu@x@horse@on@flip@
-\newif\if@pingu@x@horse@on@base@
-\newif\if@pingu@x@horse@on@boundingbox@
-\newif\if@pingu@x@horse@on@donkey@
-% TODO: select keys
-% TODO: option so it does not affect the bounding box (default!)
-\pingu@create@extra{horseon}{%
- on horse/.code = {\pingu@set@extra{horseon}{true}\pingu@color{horseon}{#1}},
- on horse/.default = pingu@bronze!80!pingu@black,
- horse behind/.style = {on horse=#1, on horse scale=.325, on horse yshift=6.15cm},
- horse behind/.default = pingu@bronze!80!pingu@black,
- on horse flip/.is if = @pingu@x@horse@on@flip@,
- on horse donkey/.is if = @pingu@x@horse@on@donkey@,
- on horse has base/.is if = @pingu@x@horse@on@base@,
- on horse has bounding box/.is if = @pingu@x@horse@on@boundingbox@,
- on horse draw/.code = \pingu@color{horseon@draw}{#1},%
- on horse line width/.code = \@namedef{pingu@horseon@x@line@width}{#1},%
- on horse mane/.code = \pingu@color{horseon@mane}{#1},%
- on horse mane draw/.code = \pingu@color{horseon@mane@draw}{#1},%
- on horse thatch/.code = \pingu@color{horseon@thatch}{#1},%
- on horse thatch draw/.code = \pingu@color{horseon@thatch@draw}{#1},%
- on horse tail/.code = \pingu@color{horseon@tail}{#1},%
- on horse tail draw/.code = \pingu@color{horseon@tail@draw}{#1},%
- on horse eyes/.code = \pingu@color{horseon@eyes}{#1},%
- on horse eye/.forward to = /pingu/on horse eyes,%
- on horse mouth/.code = \pingu@color{horseon@mouth}{#1},%
- on horse nose/.code = \pingu@color{horseon@nose}{#1},%
- on horse ears/.code = \pingu@color{horseon@ears}{#1},%
- on horse base/.code = \pingu@color{horseon@base}{#1},%
- on horse base draw/.code = \pingu@color{horseon@base@draw}{#1},%
- on horse base shade/.code = \pingu@color{horseon@base@shade}{#1},%
- on horse base shade draw/.code = \pingu@color{horseon@base@shade@draw}{#1},%
- on horse front left hoof/.code = \pingu@color{horseon@fl@hoof}{#1},%
- on horse front right hoof/.code = \pingu@color{horseon@fr@hoof}{#1},%
- on horse back left hoof/.code = \pingu@color{horseon@bl@hoof}{#1},%
- on horse back right hoof/.code = \pingu@color{horseon@br@hoof}{#1},%
- on horse front hoofs/.style = {/pingu/on horse front left hoof=#1,/pingu/on horse front right hoof=#1},
- on horse back hoofs/.style = {/pingu/on horse back left hoof=#1,/pingu/on horse back right hoof=#1},
- on horse hoofs/.style = {/pingu/on horse front hoofs=#1,/pingu/on horse back hoofs=#1},
- on horse hoofs/.default = gray!80!white,
- on horse xshift/.code = \@namedef{pingu@x@horseon@xshift}{#1},
- on horse yshift/.code = \@namedef{pingu@x@horseon@yshift}{#1},
- on horse scale/.code = \@namedef{pingu@x@horseon@scale}{#1}
-}{on horse draw=\pingu@color@horseon!80!pingu@black,on horse mane=\pingu@color@horseon!86!pingu@white,on horse mane draw=\pingu@color@horseon@mane!80!pingu@black,on horse eyes=\pingu@color@horseon@draw,on horse mouth=\pingu@color@horseon@draw,on horse nose=\pingu@color@horseon@draw,on horse ears=\pingu@color@horseon,on horse thatch=\pingu@color@horseon@mane,on horse thatch draw=\pingu@color@horseon@thatch!80!pingu@black,on horse tail=\pingu@color@horseon@mane,on horse tail draw=\pingu@color@horseon@tail!80!pingu@black,on horse has base=false,on horse base=lightgray!90!black,on horse base draw=\pingu@color@horseon@base!91!pingu@black,on horse base shade=lightgray!80!black,on horse base shade draw=\pingu@color@horseon@base@shade!91!pingu@black,on horse xshift=0pt,on horse yshift=0pt,on horse flip=false,on horse scale=0.75,on horse has bounding box=false,on horse donkey=false,on horse line width=1.75pt,on horse hoofs=\@pingu@none}
-
-
-\def\pingu@draw@eb@horseon{%
-\pingu@layer{background}[scale=\pingu@x@horseon@scale,every path/.append style={line cap=round, line join=round},shift=(\pingu@name-bottom-center)]
-\if@pingu@x@horse@on@donkey@
- \@pingu@@horse@@donkey@true
-\fi
-\if@pingu@x@horse@on@flip@
- \scope[xshift=-45mm-\pingu@x@horseon@xshift,yshift=-67mm+\pingu@x@horseon@yshift,xscale=\if@pingu@x@horse@on@donkey@ 1.1\else1\fi,yscale=\if@pingu@@horse@@donkey@.9\else1\fi]
- \else
- \scope[xshift=45mm+\pingu@x@horseon@xshift,yshift=-67mm+\pingu@x@horseon@yshift,xscale=\if@pingu@x@horse@on@donkey@-1.1\else-1\fi,yscale=\if@pingu@@horse@@donkey@.9\else1\fi]
- \fi
-\edef\@pingu@@horse@lw{\pingu@horseon@x@line@width}
-\if@pingu@x@horse@on@boundingbox@\else\pgfinterruptboundingbox\fi
- \pingu@@drawer@horse{on}
-\if@pingu@x@horse@on@boundingbox@\else\endpgfinterruptboundingbox\fi
-\endscope\endpingu@layer
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-magic.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-magic.lib.tex
deleted file mode 100644
index a5e3fb2ddc2..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-magic.lib.tex
+++ /dev/null
@@ -1,14 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\pingu@create@wing@extra{handcast}{%
- handcast \@lr/.forward to = /pingu/hand cast \@lr,
- hand cast \@lr/.code = {\pingu@set@extra{handcast\@lr}{true}\@namedef{pingu@handcast@\@lr}{##1}},
- hand cast \@lr/.default = {X},
- handcast \@lr\space color/.forward to = /pingu/hand cast \@lr\space color,
- hand cast \@lr\space color/.code = \pingu@color{handcast@\@lr @color}{##1},%
-}{hand cast \@lr\space color=pingu@purple}
-\def\pingu@draw@wi@handcast#1{%
- \pingu@setup@wing{handcast}{#1}%
- \path[rotate around={\@angle:(\pingu@name-wing-#1)}] (\pingu@name-wing-#1)++(0,5mm) node[\csname pingu@color@handcast@#1@color\endcsname] {\@nameuse{pingu@handcast@#1}};
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-medieval.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-medieval.lib.tex
deleted file mode 100644
index 4e81c4416c2..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-medieval.lib.tex
+++ /dev/null
@@ -1,205 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\newif\if@pingu@x@rook@draw@hatch@
-\pingu@create@extra{rook}{%
- rook/.code = \pingu@set@extra{rook}{true}\pingu@color{rook}{#1},
- rook/.default = pingu@silver,
- rook back/.code = \pingu@color{rook@back}{#1},
- rook hatch/.is if = @pingu@x@rook@draw@hatch@,
- rook hatch/.default = true,
- rook shade/.code = \pingu@color{rook@shade}{#1},
-}{rook back=\pingu@color@rook!85!black,rook shade=\pingu@color@rook!92!black,rook hatch}
-\def\pingu@draw@ea@rook{%
-\if@pingu@do@back@\else\if@pingu@x@rook@draw@hatch@\else\pingu@layer{foreground}[]\fi\fi
- \pingu@block[even odd rule]{\pingu@color@rook} ([xshift=-.2mm]\pingu@name-wings-side-right|-\pingu@name-foot-right) [rounded corners=\p@] to[bend right=9] coordinate[pos=.15] (@tmpe) ([xshift=.2mm]\pingu@name-wings-side-left|-\pingu@name-foot-left) [sharp corners] to[bend right=1.5*\pingu@bend] (\pingu@name-wings-side-left|-\pingu@name-head-top) coordinate (@tmp) to[bend left=3] coordinate[pos=.3] (@tmpc) coordinate[pos=.7] (@tmpd) (\pingu@name-wings-side-right|-\pingu@name-head-top) [rounded corners=\p@] coordinate (@tmpb) to[bend right=1.5*\pingu@bend] cycle \if@pingu@x@rook@draw@hatch@ (\pingu@name-head-center) ellipse[x radius=.8\pingu@w@half, y radius=.45\pingu@w@half]\fi;
- \pingu@block{\pingu@color@rook} (@tmp) to[bend right=2] ++(0,2mm) [rounded corners=.25mm] to[bend left=1] ++(-2mm,-.1mm) -- ++(0,-2.25mm);
- \pingu@block{\pingu@color@rook} (@tmpb) to[bend left=2] ++(0,2mm) [rounded corners=.25mm] to[bend right=1] ++(2mm,-.1mm) -- ++(0,-2.25mm);
-
- \pingu@block{\pingu@color@rook} (@tmpc)++(-2mm,-.25mm) [rounded corners=.25mm] to[bend left=2] ++(0,2.25mm) to[bend right=1] ++(4mm,.05mm) -- ++(0,-2.25mm);
- \pingu@block{\pingu@color@rook} (@tmpd)++(2mm,-.25mm) [rounded corners=.25mm] to[bend left=2] ++(0,2.25mm) to[bend left=1] ++(-4mm,-.05mm) -- ++(0,-2.25mm);
-
- % custom shade boi (or gurl, wateva)
- \scope
- \clip ([xshift=-.2mm]\pingu@name-wings-side-right|-\pingu@name-foot-right) [rounded corners=\p@] to[bend right=5] ([xshift=.2mm]\pingu@name-wings-side-left|-\pingu@name-foot-left) [sharp corners] to[bend right=1.5*\pingu@bend] (\pingu@name-wings-side-left|-\pingu@name-head-top) -- ++(0,2mm) to[bend left=3] (\pingu@name-wings-side-right|-\pingu@name-head-top) to[bend right=1.5*\pingu@bend] cycle;
- \if@pingu@x@rook@draw@hatch@
- \clip[/pingu/@invclip] (\pingu@name-head-center) ellipse[x radius=.8\pingu@w@half, y radius=.45\pingu@w@half];
- \fi
- \pingu@block{\pingu@color@rook@shade} (@tmpe) to[bend right=5] ([xshift=.2mm]@tmpe-|@tmp) to[bend right=1.5*\pingu@bend] ([yshift=2mm]@tmp) to[bend left=10] cycle;
- \endscope
- \if@pingu@do@back@\else\if@pingu@x@rook@draw@hatch@\else\endpingu@layer\fi\fi
-
- \pingu@layer{background}[]
- \pingu@block{\pingu@color@rook@back} (@tmp) to[bend right=3] coordinate[pos=.3] (@tmpc) coordinate[pos=.7] (@tmpd) (@tmpb) to[bend right=30] cycle;
- \pingu@block{\pingu@color@rook@back} (@tmpb) to[bend left=2] ++(0,2mm) [rounded corners=.25mm] to[bend left=1] ++(2mm,.1mm) -- ++(0,-2.25mm);
- \pingu@block{\pingu@color@rook@back} (@tmp) to[bend right=2] ++(0,2mm) [rounded corners=.25mm] to[bend right=1] ++(-2mm,.1mm) -- ++(0,-2.25mm);
-
- \pingu@block{\pingu@color@rook@back} (@tmpc)++(-2mm,-.49mm) [rounded corners=.25mm] to[bend left=2] ++(0,2.25mm) to[bend right=1] ++(4mm,.05mm) -- ++(0,-2.25mm);
- \pingu@block{\pingu@color@rook@back} (@tmpd)++(2mm,-.49mm) [rounded corners=.25mm] to[bend left=2] ++(0,2.25mm) to[bend left=1] ++(-4mm,-.05mm) -- ++(0,-2.25mm);
- \endpingu@layer
-}
-
-\newif\if@pingu@x@crown@ddd@ % 3d
-\newif\if@pingu@x@crown@shade@ % 3d
-\pingu@create@extra{crown}{%
- crown/.code = \pingu@set@extra{crown}{true}\pingu@color{crown}{#1},
- crown/.default = pingu@yellow,
- crown 3d/.is if = @pingu@x@crown@ddd@, crown 3d/.default = true,
- crown 2d/.style = {crown=#1, crown 3d=false},
- crown 2d/.default = pingu@yellow,
- crown back/.code = \pingu@color{crown@back}{#1},
- crown front bend/.code = \def\pingu@x@crown@f@bend{#1},
- crown back bend/.code = \def\pingu@x@crown@b@bend{#1},
- crown gem shade/.is if = @pingu@x@crown@shade@, crown gem shade/.default = true,
- crown gem colors/.code n args = 7{\pingu@color{crown@gem@a}{#1}\pingu@color{crown@gem@b}{#2}\pingu@color{crown@gem@c}{#3}\pingu@color{crown@gem@d}{#4}\pingu@color{crown@gem@e}{#5}\pingu@color{crown@gem@f}{#6}\pingu@color{crown@gem@g}{#7}},
- crown gem ring/.code = \pingu@color{crown@gem@ring}{#1},
- crown position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@crown@angle{#1}\def\pingu@x@crown@xshift{#2}\def\pingu@x@crown@yshift{#3}\def\pingu@x@crown@scale{#4}},
-}{crown position={-9:(1mm,0mm)1},crown front bend=16,crown back bend=9,crown back=\pingu@color@crown!93!black,crown 3d,crown gem colors={pingu@purple}{pingu@blue}{pingu@green}{pingu@purple}{pingu@green}{pingu@blue}{pingu@purple},crown gem ring=\pingu@color@crown!85!white,crown gem shade}
-
-% color | bend1 | bend1
-\def\pingu@draw@ea@crown@s#1#2#3{
-\pingu@block{#1} [rounded corners=.2mm](-6.25mm,-.25cm) to[bend left=2] ++(0,3.125mm) to[bend #2=\pingu@x@crown@f@bend]
- coordinate[pos=0] (r2) coordinate[pos=.07] (r1)
- coordinate[pos=.14-.07] (a1) coordinate[pos=.14] (a2) coordinate[pos=.14+.07] (a3)
- coordinate[pos=.30-.08] (b1) coordinate[pos=.30] (b2) coordinate[pos=.30+.08] (b3)
- coordinate[pos=.50- .1] (c1) coordinate[pos=.50] (x2) coordinate[pos=.50+ .1] (c3)
- coordinate[pos=.69-.08] (d1) coordinate[pos=.69] (d2) coordinate[pos=.69+.08] (d3)
- coordinate[pos=.85-.07] (e1) coordinate[pos=.85] (e2) coordinate[pos=.85+.07] (e3)
- coordinate[pos=1] (l2) coordinate[pos=.93] (l1)
- ++(1.375cm,0) to[bend left=2] ++(0,-3.125mm) to[bend #3=\pingu@x@crown@f@bend] (-6mm,-.25cm) -- cycle;
-\path (x2)++(0,.9mm) coordinate (c2);
-\@for\a:={a,b,c,d,e}\do{
- \pingu@block{#1} ([yshift=-.1mm]\a1) to[bend right=\pingu@x@crown@f@bend] ([yshift=-.1mm]\a3) to[bend right=2] ([yshift=1.85mm]\a2) to[bend right=2] ([yshift=-.1mm]\a1) -- cycle;
-}
-\pingu@block{#1} (l2)++(0,-.2mm) to[bend right=2] ++(0,1.95mm) -- (l1) -- cycle;
-\pingu@block{#1} (r2)++(0,-.2mm) to[bend left=2] ++(0,1.95mm) -- (r1) -- cycle;
-}
-
-% color | at | shift | scale
-\def\pingu@draw@ea@crown@g#1#2#3#4{
-\scope[shift={(#22)},shift={(#3,-.33mm)}]
- \pingu@block{\pingu@color@crown@gem@ring} ellipse [x radius=.715mm*#4, y radius=.925mm*#4];
- \pingu@block{#1} ellipse [x radius=.633mm*#4, y radius=.85mm*#4];
- \protected@edef\@tmp{#1}\ifx\@tmp\@pingu@none\else
- \if@pingu@x@crown@shade@
- \shade[ball color=#1,fill opacity=.45,shading angle=-95] ellipse [x radius=.633mm*#4, y radius=.85mm*#4];
- \else
- \pingu@block[rotate around={7:(42:.3mm*#4 and .4mm*#4)}]{#1!45!pingu@white} (42:.3mm*#4 and .4mm*#4) ellipse[x radius=.17mm*#4, y radius=.24mm*#4];
- \pingu@block[rotate around={7:(232:.275mm*#4 and .35mm*#4)}]{#1!45!pingu@white} (232:.275mm*#4 and .35mm*#4) ellipse[x radius=.06mm*#4, y radius=.085mm*#4];
- \fi\fi
-\endscope
-}
-\def\pingu@draw@ea@crown{%
-\scope[rotate around={\pingu@x@crown@angle:(\pingu@name-head-top)},%
- shift={(\pingu@name-head-top)},
- shift={(\pingu@x@crown@xshift,\pingu@x@crown@yshift)},
- scale=\pingu@x@crown@scale]
-% draw front
-\if@pingu@x@crown@ddd@
- \pingu@draw@ea@crown@s{\pingu@color@crown}{right}{left}
- \def\@tmpa{.05mm}\def\@tmpb{.025mm}
-\else
- \pingu@draw@ea@crown@s{\pingu@color@crown}{left}{right}
- \def\@tmpa{-.015mm}\def\@tmpb{-.035mm}
-\fi
-% draw the emeralds
-\pingu@draw@ea@crown@g{\pingu@color@crown@gem@b}{a}{-\@tmpa}1
-\pingu@draw@ea@crown@g{\pingu@color@crown@gem@c}{b}{-\@tmpb}1
-\pingu@draw@ea@crown@g{\pingu@color@crown@gem@d}{x}{\z@}{1.35}
-\pingu@draw@ea@crown@g{\pingu@color@crown@gem@e}{d}{\@tmpb}1
-\pingu@draw@ea@crown@g{\pingu@color@crown@gem@f}{e}{\@tmpa}1
-\pingu@layer{background}[]
-\pingu@block{\pingu@color@crown@gem@a} (r2)++(0,-.33mm) ellipse [x radius=.3mm, y radius=.8mm];
-\pingu@block{\pingu@color@crown@gem@ring} (r2)++(0,-.33mm) ellipse [x radius=.1mm, y radius=.885mm];
-\pingu@block{\pingu@color@crown@gem@g} (l2)++(0,-.33mm) ellipse [x radius=.3mm, y radius=.8mm];
-\pingu@block{\pingu@color@crown@gem@ring} (l2)++(0,-.33mm) ellipse [x radius=.1mm, y radius=.885mm];
-% draw back if 3d
-\if@pingu@x@crown@ddd@
- \pingu@draw@ea@crown@s{\pingu@color@crown@back}{left}{right}
-\fi
-\endpingu@layer
-\endscope
-}
-
-\newif\if@pingu@x@princesscrown@ddd@
-\newif\if@pingu@x@princesscrown@shade@
-\newif\if@pingu@x@princesscrown@bobbles@
-\pingu@create@extra{princesscrown}{%
- princess crown/.code = \pingu@set@extra{princesscrown}{true}\pingu@color{princesscrown}{#1},
- princess crown/.default = pingu@yellow,
- princess crown 3d/.is if= @pingu@x@princesscrown@ddd@, princess crown 3d/.default = true,
- princess crown 2d/.style = {princess crown=#1, princess crown 3d=false},
- princess crown 2d/.default = pingu@yellow,
- princess crown back/.code = \pingu@color{princesscrown@back}{#1},
- princess crown front bend/.code = \def\pingu@x@princesscrown@f@bend{#1},
- princess crown back bend/.code = \def\pingu@x@princesscrown@b@bend{#1},
- princess crown gem shade/.is if = @pingu@x@princesscrown@shade@,
- princess crown bobbles/.is if = @pingu@x@princesscrown@bobbles@,
- princess crown gem shade/.default = true,
- princess crown gem colors/.code n args = 5{\pingu@color{princesscrown@gem@a}{#1}\pingu@color{princesscrown@gem@b}{#2}\pingu@color{princesscrown@gem@c}{#3}\pingu@color{princesscrown@gem@d}{#4}\pingu@color{princesscrown@gem@e}{#5}},
- princess crown gem ring/.code = \pingu@color{princesscrown@gem@ring}{#1},
- princess crown position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@princesscrown@angle{#1}\def\pingu@x@princesscrown@xshift{#2}\def\pingu@x@princesscrown@yshift{#3}\def\pingu@x@princesscrown@scale{#4}},
-}{princess crown position={-9:(1mm,0mm)1},princess crown front bend=12,princess crown back bend=7,princess crown back=\pingu@color@princesscrown!93!black,princess crown 3d,princess crown gem colors={pingu@purple}{pingu@blue}{pingu@green}{pingu@blue}{pingu@purple},princess crown gem ring=\pingu@color@princesscrown!85!white,princess crown gem shade,princess crown bobbles}
-
-% color | bend1 | bend2
-\def\pingu@draw@ea@princesscrown@s#1#2#3{
-\pingu@block{#1} [rounded corners=.2mm](-3.25mm,-.15cm) to[bend left=2] ++(0,2.32mm) to[bend #2=\pingu@x@princesscrown@f@bend]
- coordinate[pos=0] (r2) coordinate[pos=.065] (r1)
- coordinate[pos=.11] (a1) coordinate[pos=.2] (a2) coordinate[pos=.29] (a3)
- coordinate[pos=.35] (b1) coordinate[pos=.50] (x2) coordinate[pos=.65] (b3)
- coordinate[pos=.71] (c1) coordinate[pos=.8] (c2) coordinate[pos=.89] (c3)
- coordinate[pos=1] (l2) coordinate[pos=.93] (l1)
- ++(8mm,0) to[bend left=2] ++(0,-2.32mm) to[bend #3=\pingu@x@princesscrown@f@bend] (-3mm,-.15cm) -- cycle;
-\path (x2)++(0,.9mm) coordinate (b2);
-\@for\a:={a,b,c}\do{
- \pingu@block{#1} ([yshift=-.1mm]\a1) to[bend right=\pingu@x@princesscrown@f@bend] ([yshift=-.1mm]\a3) to[bend left=2] ([yshift=2.15mm]\a2) to[bend left=2] ([yshift=-.1mm]\a1) -- cycle;
- \if@pingu@x@princesscrown@bobbles@\pingu@block{#1} ([yshift=2.15mm]\a2) circle [radius=.45\p@];\fi
-}
-\pingu@block{#1} (l2)++(0,-.2mm) to[bend left=2] ++(0,2.25mm) -- (l1) -- cycle;
-\pingu@block{#1} (r2)++(0,-.2mm) to[bend right=2] ++(0,2.25mm) -- (r1) -- cycle;
-\if@pingu@x@princesscrown@bobbles@\pingu@block{#1} (l2)++(0,2.05mm) circle [radius=.45\p@];
-\pingu@block{#1} (r2)++(0,2.05mm) circle [radius=.45\p@];\fi
-}
-
-% draw single gem; color | at | shift | scale
-\def\pingu@draw@ea@princesscrown@g#1#2#3#4{
-\scope[shift={(#22)},shift={(#3,-.33mm)}]
- \pingu@block{\pingu@color@princesscrown@gem@ring} ellipse [x radius=.715mm*#4, y radius=.925mm*#4];
- \pingu@block{#1} ellipse [x radius=.633mm*#4, y radius=.85mm*#4];
- \protected@edef\@tmp{#1}\ifx\@tmp\@pingu@none\else
- \if@pingu@x@princesscrown@shade@
- \shade[ball color=#1,fill opacity=.45,shading angle=-95] ellipse [x radius=.633mm*#4, y radius=.85mm*#4];
- \else
- \pingu@block[rotate around={7:(42:.3mm*#4 and .4mm*#4)}]{#1!45!pingu@white} (42:.3mm*#4 and .4mm*#4) ellipse[x radius=.17mm*#4, y radius=.24mm*#4];
- \pingu@block[rotate around={7:(232:.275mm*#4 and .35mm*#4)}]{#1!45!pingu@white} (232:.275mm*#4 and .35mm*#4) ellipse[x radius=.06mm*#4, y radius=.085mm*#4];
- \fi\fi
-\endscope}
-\def\pingu@draw@ea@princesscrown{%
-\scope[rotate around={\pingu@x@princesscrown@angle:(\pingu@name-head-top)},%
- shift={(\pingu@name-head-top)},
- shift={(\pingu@x@princesscrown@xshift,\pingu@x@princesscrown@yshift)},
- scale=\pingu@x@princesscrown@scale]
-% draw front
-\if@pingu@x@princesscrown@ddd@
- \pingu@draw@ea@princesscrown@s{\pingu@color@princesscrown}{right}{left}
- \def\@tmpa{.05mm}
-\else
- \pingu@draw@ea@princesscrown@s{\pingu@color@princesscrown}{left}{right}
- \def\@tmpa{-.015mm}
-\fi
-% draw the emaralds
-\pingu@draw@ea@princesscrown@g{\pingu@color@princesscrown@gem@b}{a}{-\@tmpa}{.95}
-\pingu@draw@ea@princesscrown@g{\pingu@color@princesscrown@gem@c}{x}{\z@}{1.3}
-\pingu@draw@ea@princesscrown@g{\pingu@color@princesscrown@gem@d}{c}{\@tmpa}{.95}
-\pingu@layer{background}[]
-\pingu@block{\pingu@color@princesscrown@gem@a} (r2)++(0,-.33mm) ellipse [x radius=.3mm, y radius=.8mm];
-\pingu@block{\pingu@color@princesscrown@gem@ring} (r2)++(0,-.33mm) ellipse [x radius=.1mm, y radius=.885mm];
-\pingu@block{\pingu@color@princesscrown@gem@e} (l2)++(0,-.33mm) ellipse [x radius=.3mm, y radius=.8mm];
-\pingu@block{\pingu@color@princesscrown@gem@ring} (l2)++(0,-.33mm) ellipse [x radius=.1mm, y radius=.885mm];
-% draw back if 3d
-\if@pingu@x@princesscrown@ddd@
- \pingu@draw@ea@princesscrown@s{\pingu@color@princesscrown@back}{left}{right}
-\fi
-\endpingu@layer
-\endscope
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-movement.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-movement.lib.tex
deleted file mode 100644
index 0916cda3476..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-movement.lib.tex
+++ /dev/null
@@ -1,75 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\pingu@bodytype@add{tilt-right}{%
-\pingu@block[save path=\pingu@lowerpingu]{\pingu@color@body@main} (0,\pingu@outer@off)
-% left side
-to[bend right=\pingu@bend] coordinate[pos=.775] (\pingu@name-waist-right) ++(0,-\pingu@side@h@half-\pingu@outer@off)
-% feety stuff
-arc (180:270:\pingu@foot@outer@w{}-1mm and \pingu@foot@outer@h) coordinate[yshift=-.2mm] (\pingu@name-foot-right)
-arc (270:332:\pingu@foot@inner@w{}+1mm and 2.5*\pingu@foot@inner@h)
-coordinate (\pingu@name-bottom-center)
-arc (208:270:\pingu@foot@inner@w{} and 1.25*\pingu@foot@inner@h) coordinate[yshift=-.4mm] (\pingu@name-foot-left)
-arc (270:360:\pingu@foot@outer@w{} and 1.125*\pingu@foot@outer@h)%
-% right side
-to[bend right=\pingu@bend] coordinate[pos=.225] (\pingu@name-waist-left) ++(0,\pingu@side@h@half+\pingu@outer@off)
-% coordinate
-coordinate (\pingu@name-wings-side-left)
--- (0,\pingu@outer@off) coordinate (\pingu@name-wings-side-right) coordinate[pos=.5] (\pingu@name-head-center) -- cycle;
-
-\pingu@block[save path=\pingu@upperpingu]{\pingu@color@body@head} (\pingu@name-head-center)
-++(0,\pingu@head@h@half) coordinate (\pingu@name-head-top)
-arc(90:450:\pingu@w@half{} and \pingu@head@h@half)
-coordinate[pos=\pinguanglehr] (\pingu@name-head-right)
-coordinate[pos=\pinguanglehl] (\pingu@name-head-left);
-
-\coordinate (\pingu@name-belly-back) at (\pingu@w@half,-1cm);
-\coordinate (\pingu@name-belly-center) at (\pingu@w@half,-.68\pingu@side@h@half);
-\pingu@block[save path=\pingu@whitepingu]{\pingu@color@body@front} (\pingu@name-belly-back)++(-\pingu@w@half+\pingu@one,\pingu@lower@off) to[bend right=.8\pingu@bend] ++(-.05mm,1.05cm-\pingu@side@h@half-\pingu@lower@off) arc (180:270:3.7mm and 2mm) arc (270:331:5mm and 3*.85mm) arc (207:270:5.3mm and 1.125*.85mm) arc (270:360:4.025mm and 1.25*2mm) to[bend right=.8\pingu@bend] ++(0,\pingu@side@h@half-1.05cm+\pingu@lower@off) arc (0:180:\pingu@w@half-.96mm and \pingu@w@half-\pingu@one) -- cycle;
-
-\coordinate (\pingu@name-eye-back-right) at ([xshift=-.275cm,yshift=.25cm-\pingu@outer@off]\pingu@name-head-center);
-\coordinate (\pingu@name-eye-back-left) at ([xshift=.275cm,yshift=.25cm-\pingu@outer@off]\pingu@name-head-center);
-
-\coordinate (\pingu@name-head-back-con-right) at ([xshift=-\pingu@headcon@x,yshift=-\pingu@headcon@y]\pingu@name-eye-back-right);
-\coordinate (\pingu@name-head-back-con-left) at ([xshift=\pingu@headcon@x,yshift=-\pingu@headcon@y]\pingu@name-eye-back-left);
-
-\pingu@block{\pingu@color@body@front} (\pingu@name-eye-back-right)++(0,-.25mm) ellipse [x radius=.525cm,y radius=.625cm];
-\pingu@block{\pingu@color@body@front} (\pingu@name-eye-back-left)++(0,-.25mm) ellipse [x radius=.525cm,y radius=.625cm];
-}
-
-
-\pingu@bodytype@add{tilt-left}{%
-\pingu@block[save path=\pingu@lowerpingu]{\pingu@color@body@main} (0,\pingu@outer@off)
-% left side
-to[bend right=\pingu@bend] coordinate[pos=.775] (\pingu@name-waist-right) ++(0,-\pingu@side@h@half-\pingu@outer@off)
-% feety stuff
-arc (180:270:\pingu@foot@outer@w{}-1mm and 1.25*\pingu@foot@outer@h) coordinate[yshift=-.2mm] (\pingu@name-foot-right)
-arc (270:332:\pingu@foot@inner@w{}+1mm and 1.125*\pingu@foot@inner@h)
-coordinate (\pingu@name-bottom-center)
-arc (208:270:\pingu@foot@inner@w{} and 2.5*\pingu@foot@inner@h) coordinate[yshift=-.4mm] (\pingu@name-foot-left)
-arc (270:360:\pingu@foot@outer@w{} and \pingu@foot@outer@h)%
-% right side
-to[bend right=\pingu@bend] coordinate[pos=.225] (\pingu@name-waist-left) ++(0,\pingu@side@h@half+\pingu@outer@off)
-% coordinate
-coordinate (\pingu@name-wings-side-left)
--- (0,\pingu@outer@off) coordinate (\pingu@name-wings-side-right) coordinate[pos=.5] (\pingu@name-head-center) -- cycle;
-
-\pingu@block[save path=\pingu@upperpingu]{\pingu@color@body@head} (\pingu@name-head-center)
-++(0,\pingu@head@h@half) coordinate (\pingu@name-head-top)
-arc(90:450:\pingu@w@half{} and \pingu@head@h@half)
-coordinate[pos=\pinguanglehr] (\pingu@name-head-right)
-coordinate[pos=\pinguanglehl] (\pingu@name-head-left);
-
-\coordinate (\pingu@name-belly-back) at (\pingu@w@half,-1cm);
-\coordinate (\pingu@name-belly-center) at (\pingu@w@half,-.68\pingu@side@h@half);
-\pingu@block[save path=\pingu@whitepingu]{\pingu@color@body@front} (\pingu@name-belly-back)++(-\pingu@w@half+\pingu@one,\pingu@lower@off) to[bend right=.8\pingu@bend] ++(-.05mm,1.05cm-\pingu@side@h@half-\pingu@lower@off) arc (180:270:4.025mm and 1.25*2mm) arc (270:331:5.25mm and 1.125*.85mm) arc (207:270:5mm and 3*.85mm) arc (270:360:3.75mm and 2mm) to[bend right=.8\pingu@bend] ++(0,\pingu@side@h@half-1.05cm+\pingu@lower@off) arc (0:180:\pingu@w@half-.96mm and \pingu@w@half-\pingu@one) -- cycle;
-
-\coordinate (\pingu@name-eye-back-right) at ([xshift=-.275cm,yshift=.25cm-\pingu@outer@off]\pingu@name-head-center);
-\coordinate (\pingu@name-eye-back-left) at ([xshift=.275cm,yshift=.25cm-\pingu@outer@off]\pingu@name-head-center);
-
-\coordinate (\pingu@name-head-back-con-right) at ([xshift=-\pingu@headcon@x,yshift=-\pingu@headcon@y]\pingu@name-eye-back-right);
-\coordinate (\pingu@name-head-back-con-left) at ([xshift=\pingu@headcon@x,yshift=-\pingu@headcon@y]\pingu@name-eye-back-left);
-
-\pingu@block{\pingu@color@body@front} (\pingu@name-eye-back-right)++(0,-.25mm) ellipse [x radius=.525cm,y radius=.625cm];
-\pingu@block{\pingu@color@body@front} (\pingu@name-eye-back-left)++(0,-.25mm) ellipse [x radius=.525cm,y radius=.625cm];
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-safe.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-safe.lib.tex
deleted file mode 100644
index d25913d3cd6..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-safe.lib.tex
+++ /dev/null
@@ -1,30 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\pingu@create@extra{mask}{%
- mask/.code = {\pingu@set@extra{mask}{true}\pingu@color{mask}{#1}},
- mask/.default = pingu@white!61!gray,%
- mask band/.code = \pingu@color{mask@band}{#1},%
- mask line width/.code = \def\pingu@x@mask@line@width{#1},%
- mask band inner/.code = \pingu@color{mask@band@inner}{#1},%
- mask band outer/.code = \pingu@color{mask@band@outer}{#1}%
-}{mask band=\pingu@color@body@main, mask band inner=\pingu@color@mask@band!60!\pingu@color@mask, mask band outer=\pingu@color@mask@band!82!\pingu@color@mask,mask line width=.565pt}
-
-\def\pingu@draw@ea@mask{%
-\pingu@block{\pingu@color@mask} [rounded corners=.8mm] ([xshift=-5mm,yshift=.75mm]\pingu@name-bill) coordinate (@ul) [rounded corners=.1mm]-- ++(3.5mm,.55mm) to[bend left=3] ++(3mm,0) -- ++(3.5mm,-.55mm) coordinate (@ur) -- ++(0,-4.25mm)[rounded corners=.8mm] coordinate (@lr) -- ++(-3.5mm,-.45mm) to[bend left=3] ++(-3mm,0) [rounded corners=.1mm] -- ++(-3.5mm,.45mm) coordinate (@ll) -- cycle;
-\scope
-\clip[use path=\pingu@upperpingu];
-\pingu@draw[line width=\pingu@x@mask@line@width]{\pingu@color@mask@band} ([yshift=-.1mm,xshift=.2mm]@ul) to[bend left=3] ([yshift=-1.1mm]\pingu@name-wings-side-right);
-\pingu@draw[line width=\pingu@x@mask@line@width]{\pingu@color@mask@band} ([yshift=-.1mm,xshift=-.2mm]@ur) to[bend right=3] ([yshift=-1.1mm]\pingu@name-wings-side-left);
-\endscope\scope
-\clip[use path=\pingu@lowerpingu];
-\pingu@draw[line width=\pingu@x@mask@line@width]{\pingu@color@mask@band} ([yshift=.01mm,xshift=.2mm]@ll) to[bend left=3] ([yshift=2mm]\pingu@name-wing-right-start);
-\pingu@draw[line width=\pingu@x@mask@line@width]{\pingu@color@mask@band} ([yshift=.01mm,xshift=-.2mm]@lr) to[bend right=3] ([yshift=2mm]\pingu@name-wing-left-start);
-\endscope
-% TODO: fix this sloppy overwrite
-\pingu@block{\pingu@color@mask} [rounded corners=.8mm] ([xshift=-5mm,yshift=.75mm]\pingu@name-bill) coordinate (@ul) [rounded corners=.1mm]-- ++(3.5mm,.55mm) to[bend left=3] ++(3mm,0) -- ++(3.5mm,-.55mm) coordinate (@ur) -- ++(0,-4.25mm)[rounded corners=.8mm] coordinate (@lr) -- ++(-3.5mm,-.45mm) to[bend left=3] ++(-3mm,0) [rounded corners=.1mm] -- ++(-3.5mm,.45mm) coordinate (@ll) -- cycle;
-\pingu@draw[very thin]{\pingu@color@mask@band@inner} ([xshift=-5mm,yshift=.75mm-4.25mm/2]\pingu@name-bill) to[bend right=1] ++(10mm,0);
-\foreach \i/\b/\c in {1.6mm/very thin/\pingu@color@mask@band@inner,.8mm/very thin/\pingu@color@mask@band@inner,0mm//\pingu@color@mask@band@outer} {
-\pingu@draw[\b]{\c} [rounded corners=.8mm] ([xshift=-5mm,yshift=.75mm-\i]\pingu@name-bill) [rounded corners=.1mm]-- ++(3.5mm,.55mm) to[bend left=3] ++(3mm,0) -- ++(3.5mm,-.55mm) -- ++(0,-4.25mm+2*\i)[rounded corners=.8mm] -- ++(-3.5mm,-.45mm) to[bend left=3] ++(-3mm,0) [rounded corners=.1mm] -- ++(-3.5mm,.45mm) -- cycle;
-}
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-science-fiction.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-science-fiction.lib.tex
deleted file mode 100644
index 226a4645b8c..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-science-fiction.lib.tex
+++ /dev/null
@@ -1,190 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\newif\if@pingu@x@lightsaber@glow@left
-\newif\if@pingu@x@lightsaber@glow@right
-\newif\if@pingu@x@lightsaber@double@left
-\newif\if@pingu@x@lightsaber@double@right
-\def\pingu@x@saberglow@w@half{.9mm}
-\def\pingulightsaberfactor{.013}
-\pingu@create@wing@extra{lightsaber}{%
- lightsaber \@lr/.code = {\pingu@set@extra{lightsaber\@lr}{true}\pingu@color{lightsaber\@lr}{##1}},
- lightsaber \@lr/.default = pingu@blue,
- lightsaber \@lr\space handle/.code = \pingu@color{lightsaber\@lr @handle}{##1},%
- lightsaber \@lr\space deco/.code = \pingu@color{lightsaber\@lr @deco}{##1},%
- lightsaber \@lr\space ribbs/.code = \pingu@color{lightsaber\@lr @ribbs}{##1},%
- lightsaber \@lr\space button/.code = \pingu@color{lightsaber\@lr @button}{##1},%
- lightsaber \@lr\space button b/.code = \pingu@color{lightsaber\@lr @button@b}{##1},%
- lightsaber \@lr\space color b/.code = \pingu@color{lightsaber\@lr @color@b}{##1},%
- lightsaber \@lr\space length/.code = {\@namedef{pingu@x@lightsaber@length@\@lr}{##1}},%
- lightsaber \@lr\space length b/.code = {\@namedef{pingu@x@lightsaber@length@b@\@lr}{##1}},%
- lightsaber \@lr\space yshift/.code = {\@namedef{pingu@x@lightsaber@yshift@\@lr}{##1}},%
- lightsaber \@lr\space glow/.is if = @pingu@x@lightsaber@glow@\@lr,%
- lightsaber \@lr\space double/.is if = @pingu@x@lightsaber@double@\@lr,%
- lightsaber \@lr\space glow core/.code = \pingu@color{lightsaber\@lr @glow@core}{##1},%
- lightsaber \@lr\space solid/.style = {/pingu/lightsaber \@lr\space glow=false},
- lightsaber \@lr\space disabled/.style = {/pingu/lightsaber \@lr\space solid,/pingu/lightsaber \@lr=\@pingu@none},
- lightsaber \@lr\space outer glow factor/.code = {\@namedef{pingu@x@lightsaber@ogf@\@lr}{##1}}%
-}{lightsaber \@lr\space handle=pingu@silver, lightsaber \@lr\space deco=pingu@silver!12!pingu@black, lightsaber \@lr\space button=pingu@red!85!pingu@black,lightsaber \@lr\space button b=pingu@red!85!pingu@black, lightsaber \@lr\space ribbs=pingu@silver!50!pingu@black,lightsaber \@lr\space length=2cm,lightsaber \@lr\space glow=\ifpengu@setup@glows@ true\else false\fi,lightsaber \@lr\space glow core=white,lightsaber \@lr\space outer glow factor=\pingulightsaberfactor,lightsaber \@lr\space yshift=0pt,lightsaber \@lr\space length b=\csname pingu@x@lightsaber@length@\@lr\endcsname,lightsaber \@lr\space color b=\noexpand\@col}
-
-% #region lightsaber base
-\def\pingu@draw@wi@lightsaber@base#1{%
-% deco-elements
- % base
- \pingu@block{\csname pingu@color@lightsaber#1@deco\endcsname}(\pingu@name-wing-#1)++(-.4mm,2.65mm+\csname pingu@x@lightsaber@yshift@#1\endcsname) -- ++(0,-5mm) -- ++(.8mm,0) |- cycle;
- \if@pingu@wing@item@side@left@
- % ribbs; single path saves memory :D
- \pingu@block{\csname pingu@color@lightsaber#1@ribbs\endcsname}(\pingu@name-wing-#1)++(-.40mm,2.225mm+\csname pingu@x@lightsaber@yshift@#1\endcsname)
- arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
- arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
- arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
- arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
- arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
- arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
- arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
- arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
- arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
- arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
- arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
- arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
- arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
- arc(90:270:.075mm) -- ++(.8mm,0) |- cycle;
- % button
- \pingu@block{\csname pingu@color@lightsaber#1@button@b\endcsname}(\pingu@name-wing-#1)++(.49mm,-1.75mm+\csname pingu@x@lightsaber@yshift@#1\endcsname) ellipse [x radius=.1mm, y radius=.3mm];
- \pingu@block{\csname pingu@color@lightsaber#1@button\endcsname}(\pingu@name-wing-#1)++(.49mm,1.9mm+\csname pingu@x@lightsaber@yshift@#1\endcsname) ellipse [x radius=.1mm, y radius=.3mm];
- % cover
- \pingu@block{\csname pingu@color@lightsaber#1@handle\endcsname}(\pingu@name-wing-#1)++(-.5mm,2.65mm+\csname pingu@x@lightsaber@yshift@#1\endcsname) arc(180:90:.15mm) -- ++(.7mm,0) arc(90:0:.16mm) -- ++(0,-5mm) arc(360:270:.15mm) -- ++(-.7mm,0) arc (270:180:.15mm) -- ++(0,.25mm) arc(270:360:.33mm and .2mm) -- ++(0,4.1mm) arc(0:90:.33mm and .2mm) -- ++(0,.25mm) -- cycle;
- \else
- % ribbs; single path saves memory :D (the second)
- \pingu@block{\csname pingu@color@lightsaber#1@ribbs\endcsname}(\pingu@name-wing-#1)++(.40mm,2.225mm+\csname pingu@x@lightsaber@yshift@#1\endcsname)
- arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
- arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
- arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
- arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
- arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
- arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
- arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
- arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
- arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
- arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
- arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
- arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
- arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
- arc(90:-90:.075mm) -- ++(-.8mm,0) |- cycle;
- % buttons
- \pingu@block{\csname pingu@color@lightsaber#1@button@b\endcsname}(\pingu@name-wing-#1)++(-.49mm,-1.75mm+\csname pingu@x@lightsaber@yshift@#1\endcsname) ellipse [x radius=.1mm, y radius=.3mm];
- \pingu@block{\csname pingu@color@lightsaber#1@button\endcsname}(\pingu@name-wing-#1)++(-.49mm,1.9mm+\csname pingu@x@lightsaber@yshift@#1\endcsname) ellipse [x radius=.1mm, y radius=.3mm];
- % cover
- \pingu@block{\csname pingu@color@lightsaber#1@handle\endcsname}(\pingu@name-wing-#1)++(.5mm,2.65mm+\csname pingu@x@lightsaber@yshift@#1\endcsname) arc(0:90:.15mm) -- ++(-.7mm,0) arc(90:180:.16mm) -- ++(0,-5mm) arc(180:270:.15mm) -- ++(.7mm,0) arc (270:360:.15mm) -- ++(0,.25mm) arc(270:180:.33mm and .2mm) -- ++(0,4.1mm) arc(180:90:.33mm and .2mm) -- ++(0,.25mm) -- cycle;
- \fi
-}
-% #endregion
-% #1 wing, #2 yshift, #3 angle, #4 length, #5 color
-\def\pingu@draw@wi@lightsaber@pre#1#2#3#4#5{
- \scope[rotate around={#3:(\pingu@name-wing-#1)}]
- \csname if@pingu@x@lightsaber@glow@#1\endcsname
- \@for\i:={0,2,4,6,7,8,9,10,11,12,13,14,15,16,17}\do{
- \pingu@block[fill opacity=\ifnum\i>14 .225\else.1\fi*\i/20]{#5} (\pingu@name-wing-#1)++(-\pingu@x@saberglow@w@half+\i*\i mm/440,#2) -- ++(.05mm,#4) arc(180:0:\pingu@x@saberglow@w@half-.05mm-\i*\i mm/440 and \ifnum\i>14 .85mm\else\pingu@one\fi-\i mm/30) -- ++(.05mm,-#4) arc (0:-180:\pingu@x@saberglow@w@half-\i*\i mm/440 and .35mm);
- }
- \else % draw solid
- \pingu@block{#5} (\pingu@name-wing-#1)++(-.425mm,#2-.1mm) -- ++(.05mm,#4) arc(180:0:.375mm and .375mm) -- ++(.05mm,-#4) arc (0:-180:.425mm and .05mm);
- \fi
- \endscope
-}
-
-% #1 wing, #2 yshift, #3 angle, #4 length, #5 color
-\def\pingu@draw@wi@lightsaber@post#1#2#3#4#5{
- \scope[rotate around={#3:(\pingu@name-wing-#1)}]
- \csname if@pingu@x@lightsaber@glow@#1\endcsname
- \ifdim\csname pingu@x@lightsaber@ogf@#1\endcsname pt>\z@
- \pingu@layer{foreground}[]
- \pgfinterruptboundingbox
- \path[clip,/pingu/@invclip] (\pingu@name-wing-#1)++(-.275mm,#2-.1mm) -- ++(.1mm,#4) arc(180:0:.175mm and .25mm) -- ++(.1mm,-#4) arc (0:-180:.275mm and .065mm);
- \@for\i:={1,1.1,1.2,1.3,1.4}\do{
- \pingu@block[fill opacity=\csname pingu@x@lightsaber@ogf@#1\endcsname/\i]{#5} (\pingu@name-wing-#1) ++(.05mm,#2+#4/2) circle[radius=\i*#4];
- }
- \endpgfinterruptboundingbox
- \endpingu@layer
- \fi
- % fadings had a rotation angle bug
- \@for\i:={1,2}\do{
- \pingu@block[fill opacity=.125*\i/10]{#5} (\pingu@name-wing-#1)++(-\pingu@x@saberglow@w@half+\i*\i mm/440,#2) -- ++(.05mm,#4) arc(180:0:\pingu@x@saberglow@w@half-.05mm-\i*\i mm/440 and \pingu@one-\i mm/30) -- ++(.05mm,-#4) arc (0:-180:\pingu@x@saberglow@w@half-\i*\i mm/440 and .35mm);
- }
- \pingu@block{\csname pingu@color@lightsaber#1@glow@core\endcsname} (\pingu@name-wing-#1)++(-.275mm,#2-.1mm) -- ++(.1mm,#4) arc(180:0:.175mm and .25mm) -- ++(.1mm,-#4) arc (0:-180:.275mm and .065mm);
- \fi
- \endscope
-}
-
-% #1 wing
-\def\pingu@draw@wi@lightsaber#1{%
- \pingu@setup@wing{lightsaber}{#1}%
- \scope[rotate around={\@angle:([yshift=+\csname pingu@x@lightsaber@yshift@#1\endcsname]\pingu@name-wing-#1)},xscale=1.2]
- \pingu@draw@wi@lightsaber@pre{#1}{2.9mm+\csname pingu@x@lightsaber@yshift@#1\endcsname}{0}{\csname pingu@x@lightsaber@length@#1\endcsname}{\@col}
- \csname if@pingu@x@lightsaber@double@#1\endcsname
- \pingu@draw@wi@lightsaber@pre{#1}{2.65mm-\csname pingu@x@lightsaber@yshift@#1\endcsname}{180}{\csname pingu@x@lightsaber@length@b@#1\endcsname}{\csname pingu@color@lightsaber#1@color@b\endcsname}
- \fi
- \pingu@draw@wi@lightsaber@base{#1}
- % afterglow (whuile watching everglow :D)
- \pingu@draw@wi@lightsaber@post{#1}{2.9mm+\csname pingu@x@lightsaber@yshift@#1\endcsname}{0}{\csname pingu@x@lightsaber@length@#1\endcsname}{\@col}
- \csname if@pingu@x@lightsaber@double@#1\endcsname
- \pingu@draw@wi@lightsaber@post{#1}{2.65mm-\csname pingu@x@lightsaber@yshift@#1\endcsname}{180}{\csname pingu@x@lightsaber@length@b@#1\endcsname}{\csname pingu@color@lightsaber#1@color@b\endcsname}
- \fi
- \endscope
-}
-
-
-\newif\if@pingu@x@lightstaff@glow@left
-\newif\if@pingu@x@lightstaff@glow@right
-\pingu@create@wing@extra{lightstaff}{%
- light-staff \@lr/.code = {\pingu@set@extra{lightstaff\@lr}{true}\pingu@color{lightstaff\@lr}{##1}},
- light-staff \@lr/.default = pingu@green,
- light-staff \@lr\space length/.code =\expandafter\def\csname pingu@lightstaff@\@lr @length\endcsname{##1},
- light-staff \@lr\space glow length/.code =\expandafter\def\csname pingu@lightstaff@\@lr @glow@length\endcsname{##1},
- light-staff \@lr\space head/.code = \pingu@color{lightstaff\@lr}{##1},%
- light-staff \@lr\space staff/.code = \pingu@color{lightstaff@\@lr @staff}{##1},%
- light-staff \@lr\space core/.code = \pingu@color{lightstaff@\@lr @head@core}{##1},%
- light-staff \@lr\space core width/.code = \expandafter\def\csname pingu@lightstaff@\@lr @core@width\endcsname{##1},%
- light-staff \@lr\space glow/.is if = @pingu@x@lightstaff@glow@\@lr,%
- light-staff \@lr\space outer glow factor/.code = {\@namedef{pingu@x@lightstaff@ogf@\@lr}{##1}},%
-}{light-staff \@lr\space length=28mm,light-staff \@lr\space staff=pingu@bronze,light-staff \@lr\space head=pingu@green,light-staff \@lr\space core=pingu@white,light-staff \@lr\space glow=\ifpengu@setup@glows@ true\else false\fi,light-staff \@lr\space outer glow factor=.022,light-staff \@lr\space glow length=13mm,light-staff \@lr\space core width=.44mm}
-\def\pingu@draw@wi@lightstaff#1{%
- \pingu@setup@wing{lightstaff}{#1}%
-\scope[rotate around={\@angle:(\pingu@name-wing-#1)}]
- \pingu@block{\csname pingu@color@lightstaff@#1@staff\endcsname}(\pingu@name-wing-#1)++(\@sidesign*-.2mm,-11mm) -- ++(0,\csname pingu@lightstaff@#1@length\endcsname) arc(180:0:\@sidesign*.4mm and .3mm) coordinate[pos=.5] (\pingu@name-lightstaff-#1-top) -- ++(0,-\csname pingu@lightstaff@#1@length\endcsname) arc(360:180:\@sidesign*.4mm and .3mm) -- cycle;
- \pingu@draw@wi@lightstaff@pre{#1}{[yshift=-1.1mm]\pingu@name-lightstaff-#1-top}{\@col}
- \pingu@block{\csname pingu@color@lightstaff@#1@head@core\endcsname} ([yshift=-1.1mm]\pingu@name-lightstaff-#1-top) -- ++(-\csname pingu@lightstaff@#1@core@width\endcsname,1mm) -- ++(0,2mm) -- ++(\csname pingu@lightstaff@#1@core@width\endcsname,1mm) -- ++(\csname pingu@lightstaff@#1@core@width\endcsname,-1mm) -- ++(0,-2mm) -- cycle;
- \pingu@draw@wi@lightstaff@post{#1}{[yshift=-1.1mm]\pingu@name-lightstaff-#1-top}{\@col}
-\endscope
-}
-
-% #1 wing, #2 start, #3 color
-\def\pingu@draw@wi@lightstaff@pre#1#2#3{
-\csname if@pingu@x@lightstaff@glow@#1\endcsname
-\@for\i:={0,1,2,3,6,7,9,10,13}\do{
- \pingu@block[fill opacity=\ifnum\i>14 .225\else.1\fi*\i/20]{#3} (#2)++(0,-\i mm/15) -- ++(-\csname pingu@lightstaff@#1@core@width\endcsname-\i mm/30,1mm+\i mm/30) -- ++(0,2mm+\i mm/15) -- ++(\csname pingu@lightstaff@#1@core@width\endcsname+\i mm/30,1mm+\i mm/30) -- ++(\csname pingu@lightstaff@#1@core@width\endcsname+\i mm/30,-1mm-\i mm/30) -- ++(0,-2mm-\i mm/15) -- cycle;
- % -- ++(.05mm,#4) arc(180:0:\pingu@x@saberglow@w@half-.05mm-\i*\i mm/440 and \ifnum\i>14 .85mm\else\pingu@one\fi-\i mm/30) -- ++(.05mm,-#4) arc (0:-180:\pingu@x@saberglow@w@half-\i*\i mm/440 and .35mm);
-}
-\else % draw solid
- \pingu@block{#3} (#2) -- ++(-.55mm,1mm) -- ++(0,2mm) -- ++(.55mm,1mm) -- ++(.55mm,-1mm) -- ++(0,-2mm) -- cycle;
-\fi
-}
-
-\def\pingu@draw@wi@lightstaff@post#1#2#3{
-\csname if@pingu@x@lightstaff@glow@#1\endcsname
-\ifdim\csname pingu@x@lightstaff@ogf@#1\endcsname pt>\z@
-\pingu@layer{foreground}[]
-\pgfinterruptboundingbox
-\@for\i:={1,1.1,1.2,1.3,1.4}\do{
- \pingu@block[fill opacity=\csname pingu@x@lightstaff@ogf@#1\endcsname/\i]{#3} (#2)++(0,2mm) circle[radius=\i*\csname pingu@lightstaff@#1@glow@length\endcsname];
-}
-\endpgfinterruptboundingbox
-\pingu@block[opacity=.65]{\csname pingu@color@lightstaff@#1@head@core\endcsname} (#2)++(0,.5mm) -- ++(-.20mm,.75mm) -- ++(0,1.5mm) -- ++(.20mm,.75mm) -- ++(.20mm,-.75mm) -- ++(0,-1.5mm) -- cycle;
-\endpingu@layer
-\fi
-% fadings hat a rotation angle bug
-\@for\i:={1,2}\do{
- \pingu@block[fill opacity=.125*\i/10]{#3} (#2)++(0,-\i mm/15+2mm) -- ++(-\csname pingu@lightstaff@#1@core@width\endcsname-\i mm/30,1mm+\i mm/30) -- ++(0,2mm+\i mm/15) -- ++(\csname pingu@lightstaff@#1@core@width\endcsname+\i mm/30,1mm+\i mm/30) -- ++(\csname pingu@lightstaff@#1@core@width\endcsname+\i mm/30,-1mm-\i mm/30) -- ++(0,-2mm-\i mm/15) -- cycle;
-}
-\pingu@block{\csname pingu@color@lightstaff@#1@head@core\endcsname} (#2) -- ++(-\csname pingu@lightstaff@#1@core@width\endcsname,1mm) -- ++(0,2mm) -- ++(\csname pingu@lightstaff@#1@core@width\endcsname,1mm) -- ++(\csname pingu@lightstaff@#1@core@width\endcsname,-1mm) -- ++(0,-2mm) -- cycle;
-\fi
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-shirts.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-shirts.lib.tex
deleted file mode 100644
index ce337dd4b1b..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-shirts.lib.tex
+++ /dev/null
@@ -1,63 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\newif\if@pingu@shirt@above
-\pingu@create@extra{shirt}{%
- shirt/.code = \pingu@set@extra{shirt}{true}\pingu@color{shirt}{#1},
- shirt/.default = pingu@bronze,
- shirt above/.is if = @pingu@shirt@above,
- shirt raise/.code = \def\pingu@shirt@raise{#1},
- shirt padding/.code = \def\pingu@shirt@padding{#1},
- shirt button top/.code = \pingu@color{shirt@button@top}{#1},
- shirt button middle/.code = \pingu@color{shirt@button@middle}{#1},
- shirt button bottom/.code = \pingu@color{shirt@button@bottom}{#1},
- shirt buttons/.style = {/pingu/shirt button top={#1}, /pingu/shirt button middle={#1}, /pingu/shirt button bottom={#1}},
- shirt button top shade/.code = \pingu@color{shirt@button@top@shade}{#1},
- shirt button middle shade/.code = \pingu@color{shirt@button@middle@shade}{#1},
- shirt button bottom shade/.code = \pingu@color{shirt@button@bottom@shade}{#1},
- shirt buttons shade/.style = {/pingu/shirt button top shade={#1}, /pingu/shirt button middle shade={#1}, /pingu/shirt button bottom shade={#1}},
- shirt without buttons/.forward to=/pingu/shirt no buttons,
- shirt no buttons/.style = {/pingu/shirt buttons=\@pingu@none, /pingu/shirt buttons shade=\@pingu@none},
-}{shirt buttons=pingu@black,shirt padding=0mm,shirt button top shade=\pingu@color@shirt@button@top!70!\pingu@color@shirt!70!white,shirt button middle shade=\pingu@color@shirt@button@middle!70!\pingu@color@shirt!70!white,shirt button bottom shade=\pingu@color@shirt@button@bottom!70!\pingu@color@shirt!70!white,shirt raise=2.25mm,shirt above=false}
-\def\pingu@draw@cloth@shirt@behind{}
-
-\def\pingu@draw@cloth@shirt@middle{\if@pingu@shirt@above\else\pingu@draw@cloth@shirt@main\fi}
-
-\def\pingu@draw@cloth@shirt@main{%
-\coordinate (\pingu@name-shirt-low) at ([yshift=\pingu@shirt@raise]\pingu@name-belly-center);
-\pingu@block{\pingu@color@shirt} [rounded corners=.131mm] ([xshift=.2mm,yshift=.18mm]\pingu@name-head-back-con-right) -- (\pingu@name-shirt-low) -- ([xshift=-.1mm,yshift=.24mm]\pingu@name-head-back-con-left) to[bend left=12] (\pingu@name-waist-left) to[bend left=3] ([xshift=\pingu@shirt@padding]\pingu@name-bottom-center-|\pingu@name-waist-left) to[bend left=10] ([yshift=-1.1\pingu@one]\pingu@name-bottom-center) to[bend left=10] ([xshift=-\pingu@shirt@padding]\pingu@name-bottom-center-|\pingu@name-waist-right) to[bend left=3] (\pingu@name-waist-right) to[bend left=12] (\pingu@name-head-back-con-right) -- cycle;
-
-\coordinate (\pingu@name-shirt-bt) at ([yshift=-\pingu@one]\pingu@name-shirt-low);
-\pingu@block{\pingu@color@shirt@button@top}(\pingu@name-shirt-bt) circle[radius=.4mm];
-\pingu@block{\pingu@color@shirt@button@middle}(\pingu@name-shirt-bt)++(0,-1.35mm)circle[radius=.4mm];
-\pingu@block{\pingu@color@shirt@button@bottom}(\pingu@name-shirt-bt)++(0,2*-1.35mm)circle[radius=.4mm];
-\pingu@block[even odd rule]{\pingu@color@shirt@button@top@shade}(\pingu@name-shirt-bt) circle[radius=.4mm] circle[radius=.465mm];
-\pingu@block[even odd rule]{\pingu@color@shirt@button@middle@shade}(\pingu@name-shirt-bt)++(0,-1.35mm)circle[radius=.4mm] circle[radius=.465mm];
-\pingu@block[even odd rule]{\pingu@color@shirt@button@bottom@shade}(\pingu@name-shirt-bt)++(0,2*-1.35mm)circle[radius=.4mm] circle[radius=.465mm];
-\@for\i:={0,90,180,270}\do{
- \pingu@block{\pingu@color@shirt@button@top@shade} (\pingu@name-shirt-bt)++(\i:.
- 25mm) circle[radius=.065mm];
- \pingu@block{\pingu@color@shirt@button@middle@shade} (\pingu@name-shirt-bt)++(0,-1.35mm)++(\i:.25mm) circle[radius=.065mm];
- \pingu@block{\pingu@color@shirt@button@bottom@shade} (\pingu@name-shirt-bt)++(0,2*-1.35mm)++(\i:.25mm) circle[radius=.065mm];
-}}
-
-% TODO: if flags to draw parts
-\def\pingu@draw@cloth@shirt{\if@pingu@shirt@above\pingu@draw@cloth@shirt@main\fi}
-
-\pingu@create@extra{secondshirt}{%
- second shirt/.code = \pingu@set@extra{secondshirt}{true}\pingu@color{secondshirt}{#1},
- second shirt raise/.code = \def\pingu@secondshirt@raise{#1},
- second shirt neck/.code = \pingu@color{secondshirt@neck}{#1},
- second shirt/.default = purple,
-}{second shirt raise=3.35mm,second shirt neck=\pingu@color@secondshirt!32!pingu@white}
-\def\pingu@draw@cloth@secondshirt@behind{}
-
-\def\pingu@draw@cloth@secondshirt@middle{%
-\coordinate (\pingu@name-secondshirt-low) at ([yshift=\pingu@secondshirt@raise]\pingu@name-belly-center);
-\pingu@block{\pingu@color@secondshirt} [rounded corners=.131mm] ([xshift=.2mm,yshift=.05mm]\pingu@name-head-back-con-right) -- (\pingu@name-secondshirt-low) -- ([xshift=-.16mm,yshift=.09mm]\pingu@name-head-back-con-left) to[bend left=12] (\pingu@name-waist-left) to[bend left=3] ([xshift=-.22mm]\pingu@name-bottom-center-|\pingu@name-waist-left) to[bend left=10] ([yshift=-1\pingu@one]\pingu@name-bottom-center) to[bend left=10] ([xshift=.22mm]\pingu@name-bottom-center-|\pingu@name-waist-right) to[bend left=3] (\pingu@name-waist-right) to[bend left=12] (\pingu@name-head-back-con-right) -- cycle;
-\pingu@draw{\pingu@color@secondshirt@neck} [rounded corners=.131mm] ([xshift=.025mm,yshift=-.09mm]\pingu@name-head-back-con-right) -- ([xshift=.2mm,yshift=.05mm]\pingu@name-head-back-con-right) -- (\pingu@name-secondshirt-low) -- ([xshift=-.19mm,yshift=.09mm]\pingu@name-head-back-con-left) -- ([xshift=-.02mm,yshift=-.02mm]\pingu@name-head-back-con-left);
-}
-
-% TODO: if flags to draw parts
-\def\pingu@draw@cloth@secondshirt{%
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-signs.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-signs.lib.tex
deleted file mode 100644
index f1a42a05561..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-signs.lib.tex
+++ /dev/null
@@ -1,53 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\pingu@create@wing@extra{signpost}{%
- signpost \@lr/.forward to = /pingu/sign post \@lr,
- sign post \@lr/.code = {\pingu@set@extra{signpost\@lr}{true}\@namedef{pingu@signpost@\@lr}{##1}},
- sign post \@lr/.default = {},
- signpost \@lr\space color/.forward to = /pingu/sign post \@lr\space color,
- sign post \@lr\space color/.code = \pingu@color{signpost\@lr}{##1},
- signpost \@lr\space fontcolor/.forward to = /pingu/sign post \@lr\space font color,
- sign post \@lr\space font color/.code = \pingu@color{signpost\@lr @font}{##1},
-}{sign post \@lr\space color=brown!70!black, sign post \@lr\space font color=white!90!brown}
-\def\pingu@draw@wi@signpost#1{%
- \pingu@setup@wing{signpost}{#1}%
- \def\@rot{\if@pingu@wing@item@side@left@-5\else+5\fi}%
-\scope[rotate around={\@angle+\@rot:(\pingu@name-wing-#1)}]
- \pingu@block[thick]{\@col}(\pingu@name-wing-#1)++(\@sidesign*-.225mm,-2mm) -- ++(0,15mm) arc(180:0:\@sidesign*.45mm and .375mm) -- ++(0,-15mm) arc(360:180:\@sidesign*.45mm and .375mm) -- cycle;
- \path (\pingu@name-wing-#1)++(\@sidesign*.225mm,13mm) node[fill=\@col,rounded corners=2\p@,minimum width=14mm,minimum height=8mm,align=center,rotate=\@angle+\@rot,text=\csname pingu@color@signpost#1@font\endcsname] {\csname pingu@signpost@#1\endcsname};
-\endscope
-}
-
-\pingu@create@extra{banner}{%
- banner/.code = \pingu@set@extra{banner}{true}\@namedef{pingu@banner}{#1},
- banner/.default = Bannertext,
- banner band/.code = \pingu@color{banner@band}{#1},
- banner text color/.code = \pingu@color{banner@text@color}{#1},
- banner sticks color/.style={/pingu/banner stick left color=#1,/pingu/banner stick right color=#1},
- banner stick left color/.code = \pingu@color{banner@stick@left}{#1},
- banner stick right color/.code = \pingu@color{banner@stick@right}{#1},
- banner sticks length/.style={/pingu/banner stick left length=#1,/pingu/banner stick right length=#1},
- banner stick left length/.code = \@namedef{pingu@banner@stick@left@l}{#1},
- banner stick right length/.code = \@namedef{pingu@banner@stick@right@l}{#1},
- banner raise/.code = \@namedef{pingu@banner@raise}{#1},
- banner height/.code = \@namedef{pingu@banner@height}{#1},
- banner font/.code = \@namedef{pingu@banner@font}{#1},
- banner bent/.code = \@namedef{pingu@banner@bent}{#1}
-}{banner band=pingu@white!91!pingu@black,banner text color=pingu@black,banner sticks color=pingu@bronze,banner stick left length=20mm, banner stick right length=20mm,banner bent=30,banner raise=-1mm,banner height=4mm,banner font=\bfseries}
-
-\usetikzlibrary{decorations.text}
-\def\pingu@draw@ea@banner{%
-\pingu@setup@wing{staff}{left}% we do not need the staff color, but we will use it
-\scope[rotate around={\@angle:(\pingu@name-wing-left)}]
- \pingu@block{\pingu@color@banner@stick@left}(\pingu@name-wing-left)++(\@sidesign*-.2mm,-7mm) -- ++(0,\pingu@banner@stick@left@l) arc(180:0:\@sidesign*.4mm and .3mm) coordinate[pos=.5] (\pingu@name-s-left) -- ++(0,-\pingu@banner@stick@left@l) arc(360:180:\@sidesign*.4mm and .3mm) -- cycle;
- \path (\pingu@name-s-left)++(.5mm,\pingu@banner@height) coordinate (\pingu@name-s-left-top) ++(0,-2*\pingu@banner@height) coordinate (\pingu@name-s-left-bot);
-\endscope
-\pingu@setup@wing{staff}{right}% we do not need the staff color, but we will use it
-\scope[rotate around={\@angle:(\pingu@name-wing-right)}]
- \pingu@block{\pingu@color@banner@stick@right}(\pingu@name-wing-right)++(\@sidesign*-.2mm,-7mm) -- ++(0,\pingu@banner@stick@right@l) arc(180:0:\@sidesign*.4mm and .3mm) coordinate[pos=.5] (\pingu@name-s-right) -- ++(0,-\pingu@banner@stick@right@l) arc(360:180:\@sidesign*.4mm and .3mm) -- cycle;
- \path (\pingu@name-s-right)++(-.5mm,\pingu@banner@height) coordinate (\pingu@name-s-right-top) ++(0,-2*\pingu@banner@height) coordinate (\pingu@name-s-right-bot);
-\endscope
-\pingu@block[rounded corners=.3mm]{\pingu@color@banner@band} (\pingu@name-s-left-top) to[bend right=\pingu@banner@bent] (\pingu@name-s-right-top) -- (\pingu@name-s-right-bot) to[bend left=\pingu@banner@bent] (\pingu@name-s-left-bot) -- cycle;
-\path[postaction={decorate},decoration={text color=\pingu@color@banner@text@color,text along path, raise=\pingu@banner@raise, text={|\pingu@banner@font|\pingu@banner},text align={center,left indent=1mm,right indent=1mm}}] (\pingu@name-s-right) to[bend left=\pingu@banner@bent+3] (\pingu@name-s-left);
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-sport.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-sport.lib.tex
deleted file mode 100644
index 257f8685daa..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-sport.lib.tex
+++ /dev/null
@@ -1,79 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\pingu@create@extra{medal}{%
- medal/.code = {\pingu@set@extra{medal}{true}\pingu@color{medal}{#1}},
- medal/.default = pingu@yellow,%
- gold medal/.style = {medal, medal text=#1}, gold medal/.default={1},
- silver medal/.style = {medal=pingu@silver, medal text=#1}, silver medal/.default={2},
- bronze medal/.style = {medal=pingu@bronze, medal text=#1}, bronze medal/.default={3},
- medal band/.code = \pingu@color{medal@band}{#1},%
- medal shade/.code = \pingu@color{medal@shade}{#1},%
- medal shade width/.code = \def\pingu@medal@shade@w{#1},%
- medal text/.code = \def\pingu@x@medal@text{#1},%
- medal text style/.style = {\pingu@color@medal!65!pingu@white},
-}{medal band=pingu@red,medal text={},medal shade={\pingu@color@medal!65!pingu@white},medal shade width=.75\p@}
-
-\def\pingu@draw@eb@medal{%
-\coordinate (\pingu@name-medal-center) at ([yshift=1.25mm]\pingu@name-belly-center);
-\pingu@block{\pingu@color@medal@band} [rounded corners=.15mm] (\pingu@name-head-back-con-right) -- (\pingu@name-medal-center) -- (\pingu@name-head-back-con-left) to[bend left=11] ++(-1.35mm,-.5mm) -- ([yshift=.7mm]\pingu@name-medal-center) -- ([xshift=1.35mm,yshift=-.5mm]\pingu@name-head-back-con-right) to[bend left=11] (\pingu@name-head-back-con-right) -- cycle;
-\pingu@block{\pingu@color@medal} (\pingu@name-medal-center) circle [radius=2.35mm];
-\pingu@draw[line width=\pingu@medal@shade@w]{\pingu@color@medal@shade} (\pingu@name-medal-center) circle [radius=2.35mm];
-\node[/pingu/@text,/pingu/medal text style] at (\pingu@name-medal-center) {\pingu@x@medal@text};
-}
-\newif\if@pingu@x@headband@knot@
-\newif\if@pingu@x@headband@bands@
-\pingu@create@extra{headband}{%
- headband/.forward to = /pingu/head band,
- head-band/.forward to = /pingu/head band,
- head band/.code = \pingu@set@extra{headband}{true}\pingu@color{headband}{#1},
- head band/.default = pingu@red,
- headband bend/.forward to = /pingu/head band bend,
- head-band bend/.forward to = /pingu/head band bend,
- head band bend/.code = \def\pingu@x@headband@bend{#1},
- headband angle/.forward to = /pingu/head band angle,
- head-band angle/.forward to = /pingu/head band angle,
- head band angle/.code = \def\pingu@x@headband@angle{#1},
- headband upper angle/.forward to = /pingu/head band upper angle,
- head-band upper angle/.forward to = /pingu/head band upper angle,
- head band upper angle/.code = \def\pingu@x@headband@upangle{#1},
- % knot
- headband knot/.forward to = /pingu/head band knot,
- head-band knot/.forward to = /pingu/head band knot,
- head band knot/.is if = @pingu@x@headband@knot@,
- headband knot color/.forward to = /pingu/head band knot color,
- head-band knot color/.forward to = /pingu/head band knot color,
- head band knot color/.code = \pingu@color{headband@knot}{#1},
- headband knot a color/.forward to = /pingu/head band knot a color,
- head-band knot a color/.forward to = /pingu/head band knot a color,
- head band knot a color/.code = \pingu@color{headband@knot@a}{#1},
- headband knot b color/.forward to = /pingu/head band knot b color,
- head-band knot b color/.forward to = /pingu/head band knot b color,
- head band knot b color/.code = \pingu@color{headband@knot@b}{#1},
- headband bands/.forward to = /pingu/head band bands,
- head-band bands/.forward to = /pingu/head band bands,
- head band bands/.is if = @pingu@x@headband@bands@,
- headband bands a color/.forward to = /pingu/head band bands a color,
- head-band bands a color/.forward to = /pingu/head band bands a color,
- head band bands a color/.code = \pingu@color{headband@bands@a}{#1},
- headband bands b color/.forward to = /pingu/head band bands b color,
- head-band bands b color/.forward to = /pingu/head band bands b color,
- head band bands b color/.code = \pingu@color{headband@bands@b}{#1},
-}{head band bend=9, head band angle=16,head band upper angle=49, head band knot color=\pingu@color@headband!78!black,head band knot a color=\pingu@color@headband@knot!90!black,head band knot b color=\pingu@color@headband@knot@a,head band bands,head band bands a color=\pingu@color@headband!78!black,head band bands b color=\pingu@color@headband}
-
-\def\pingu@draw@ea@headband@wh{1.25mm}
-\def\pingu@draw@ea@headband{%
- \path (\pingu@name-head-center)+(\pingu@x@headband@upangle-\pingu@x@headband@angle:\pingu@w@half{} and \pingu@head@h@half) coordinate (\pingu@name-head-band-lower);
- \path (\pingu@name-head-center)+(\pingu@x@headband@upangle:\pingu@w@half{} and \pingu@head@h@half) coordinate (\pingu@name-head-band-upper);
- \if@pingu@x@headband@bands@
- \pingu@block{\pingu@color@headband@bands@a} (\pingu@name-head-band-lower) to[out=-50,in=75] ++(2.75mm,-4mm) to[bend right] ++(.6mm,0) to[out=80,in=-5] (\pingu@name-head-band-upper) -- cycle;
- \pingu@block{\pingu@color@headband@bands@b} (\pingu@name-head-band-lower) to[out=-80,in=80] ++(1.75mm,-3.35mm) to[bend right] ++(.45mm,0) to[out=80,in=-8] (\pingu@name-head-band-upper) -- cycle;
- \fi
- \pingu@block{\pingu@color@headband} (\pingu@name-head-center)+(\pingu@x@headband@upangle:\pingu@w@half{} and \pingu@head@h@half) to[bend left=\pingu@x@headband@bend] coordinate[pos=.5] (\pingu@name-headband-center-a) +(180-\pingu@x@headband@upangle:\pingu@w@half{} and \pingu@head@h@half) arc(180-\pingu@x@headband@upangle:180-\pingu@x@headband@upangle+\pingu@x@headband@angle:\pingu@w@half{} and \pingu@head@h@half) to[bend right=\pingu@x@headband@bend] coordinate[pos=.5] (\pingu@name-headband-center-b) (\pingu@name-head-band-lower) arc(\pingu@x@headband@upangle-\pingu@x@headband@angle:\pingu@x@headband@upangle:\pingu@w@half{} and \pingu@head@h@half) -- cycle;
- \path (\pingu@name-headband-center-a) -- (\pingu@name-headband-center-b) coordinate[pos=.5] (\pingu@name-headband-center);
- \if@pingu@x@headband@knot@
- \pingu@block[rounded corners=.25mm]{\pingu@color@headband@knot@a} (\pingu@name-headband-center-a)++(-.15mm,-.6mm) to[out=155,in=-5] ++(-3mm,\pingu@one) to[bend right=15] ([xshift=-3mm,yshift=-.2mm]\pingu@name-headband-center-b) to[in=-155,out=5] ++(.285cm,.8mm) -- cycle;
- \pingu@block[rounded corners=.25mm]{\pingu@color@headband@knot@b} (\pingu@name-headband-center-a)++(.15mm,-.6mm) to[out=25,in=-175] ++(3mm,\pingu@one) to[bend left=15] ([xshift=3mm,yshift=-.2mm]\pingu@name-headband-center-b) to[in=-25,out=175] ++(-.285cm,.8mm) -- cycle;
- \pingu@block[rounded corners=.25mm]{\pingu@color@headband@knot} (\pingu@name-headband-center-a)++(-\pingu@draw@ea@headband@wh,.12mm) to[bend right=9] ++(2*\pingu@draw@ea@headband@wh,0) -- ([xshift=\pingu@draw@ea@headband@wh,yshift=-.12mm]\pingu@name-headband-center-b) to[bend right=9] ++(-2*\pingu@draw@ea@headband@wh, 0) -- cycle;
- \fi
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-technology.lib.tex b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-technology.lib.tex
deleted file mode 100644
index fbb2f484198..00000000000
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-technology.lib.tex
+++ /dev/null
@@ -1,126 +0,0 @@
-% Florian Sihler, 2022
-% Licensed under GNU General Public License version 3
-% https://opensource.org/licenses/gpl-3.0.html
-\pingu@create@extra{vrheadset}{%
- vr-headset/.code = \pingu@set@extra{vrheadset}{true}\pingu@color{vrheadset}{#1},
- vr-headset/.default = pingu@black!92!gray,
- vr-headset band/.code = \pingu@color{vrheadset@band}{#1},
- vr-headset band top/.code = \pingu@color{vrheadset@band@top}{#1},
- vr-headset text/.code = \def\pingu@x@vrheadset@text{#1},
- vr-headset text color/.code = \pingu@color{vrheadset@text@color}{#1},
- vr-headset hair/.style = {/pingu/hair 2=!hide,/pingu/hair 3=!hide,/pingu/hair 4=!hide}
-}{vr-headset band=\pingu@color@vrheadset!92!gray,vr-headset text={\textit{\textsf{VR\thinspace\texttrademark}}},vr-headset text color=pingu@white,vr-headset band top=\pingu@color@vrheadset!96!gray}
-
-\def\pingu@draw@ea@vrheadset{%
-\pingu@layer{middle}[]
- \pingu@block{\pingu@color@vrheadset} [rounded corners=1.25mm]([yshift=3.45mm]\pingu@name-waist-right|-\pingu@name-eye-right) to[bend left=2] coordinate[pos=.5] (@) ([yshift=3.45mm]\pingu@name-waist-left|-\pingu@name-eye-left) to[bend left=3] coordinate (\pingu@name-vrh-ol) ++(0,-6.25mm) to[bend left=13] ([yshift=-1mm]\pingu@name-head-center) to[bend left=13] ([yshift=3.45mm-6.25mm]\pingu@name-waist-right|-\pingu@name-eye-right) -- cycle;
- \path (\pingu@name-vrh-ol)++(-2.25mm,2mm) node[text=\pingu@color@vrheadset@text@color,scale=.25] {\pingu@x@vrheadset@text};
-\endpingu@layer
-\if@pingu@do@back@\else
- % top band
- \pingu@block[rounded corners=1pt]{\pingu@color@vrheadset@band@top} (@)++(-1.05mm+.15mm,0) to[bend right=2] ([xshift=-.85mm+.3mm,yshift=.3mm]\pingu@name-head-top) to[bend left=2] ++(1.6mm,0) to[bend left=2] ([xshift=1.25mm+.15mm]@);
-\fi
- % we draw a band for the background
-\pingu@layer{background}[]
-\pingu@block[line cap=round]{\pingu@color@vrheadset@band} ([yshift=1mm]\pingu@name-waist-right|-\pingu@name-eye-right) to[bend left=3] coordinate[pos=.5] (@b) ([yshift=1mm]\pingu@name-waist-left|-\pingu@name-eye-left) arc(90:-90:.25mm and 1mm) to[bend right=3] ([yshift=-1mm]\pingu@name-waist-right|-\pingu@name-eye-right) arc (270:90:.25mm and 1mm);
-\pingu@block[rounded corners=1pt]{\pingu@color@vrheadset@band@top} (@b)++(-1.25mm+.2mm,-1.25mm) to[bend right=2] ([xshift=-.85mm+.3mm,yshift=.3mm]\pingu@name-head-top) to[bend right=2] ++(1.6mm,0) to[bend right=2] ([xshift=1.15mm+.2mm,yshift=-1.25mm]@b) -- cycle;
-\endpingu@layer
-}
-\pingu@create@extra{headphone}{%
- headphones/.forward to = /pingu/headphone,
- headphone/.code = \pingu@set@extra{headphone}{true}\pingu@color{headphone}{#1},
- headphone/.default = pingu@blue!80!pingu@black,
- headphone left/.code = \pingu@color{headphone@left}{#1},
- headphone right/.code = \pingu@color{headphone@right}{#1},
- headphones outer/.forward to = /pingu/headphone outer,
- headphone outer/.style = {/pingu/headphone left outer=#1,/pingu/headphone right outer=#1}, headphone outer/.default = pingu@black,
- headphone left outer/.code = \pingu@color{headphone@left@p}{#1}, headphone left outer/.default =pingu@black,
- headphone right outer/.code = \pingu@color{headphone@right@p}{#1}, headphone right outer/.default=pingu@black,
- headphones inner/.forward to = /pingu/headphone inner,
- headphone inner/.style = {/pingu/headphone left inner=#1,/pingu/headphone right inner=#1}, headphone inner/.default = pingu@black,
- headphone left inner/.code = \pingu@color{headphone@left@i}{#1}, headphone left inner/.default = pingu@black,
- headphone right inner/.code = \pingu@color{headphone@right@i}{#1}, headphone right inner/.default=pingu@black,
-}{headphone left=\pingu@color@headphone!65!pingu@black,headphone right=\pingu@color@headphone@left,headphone left outer=\@pingu@none,
-,headphone right outer=\@pingu@none,,headphone left inner=\@pingu@none,
-,headphone right inner=\@pingu@none}
-
-\def\pingu@draw@ea@headphone{%
-\if@pingu@do@back@ \pingu@layer{background}[] \fi
- \pingu@block[rounded corners=.1mm]{\pingu@color@headphone@right@p} ([xshift=-\pingu@one,yshift=3.22mm]\pingu@name-wings-side-right|-\pingu@name-eye-right) arc (93:273:.565mm and 2.11mm) -- ++(.8mm,.075mm) -- ++(0,4.075mm);
- \pingu@block[rounded corners=.1mm]{\pingu@color@headphone@right@i} ([xshift=\pingu@one-.366mm,yshift=3.22mm]\pingu@name-wings-side-right|-\pingu@name-eye-right) arc (87:-93:.565mm and 2.14mm) -- ++(-.8mm,.075mm) -- ++(0,4.075mm) -- cycle;
- \pingu@block[rounded corners=.1mm]{\pingu@color@headphone@right} ([xshift=-\pingu@one+.2mm,yshift=3.22mm]\pingu@name-wings-side-right|-\pingu@name-eye-right) arc (92:272:.565mm and 2.1mm) -- ++(.8mm,-.05mm) arc (270:450:.425mm and 2.1mm) -- cycle;
- \pingu@block[rounded corners=.1mm]{\pingu@color@headphone@left@p} ([xshift=\pingu@one,yshift=3.22mm]\pingu@name-wings-side-left|-\pingu@name-eye-left) arc (87:-93:.565mm and 2.11mm) -- ++(-.8mm,.075mm) -- ++(0,4.075mm) -- cycle;
- \pingu@block[rounded corners=.1mm]{\pingu@color@headphone@left@i} ([xshift=-\pingu@one+.366mm,yshift=3.22mm]\pingu@name-wings-side-left|-\pingu@name-eye-left) arc (93:273:.565mm and 2.14mm) -- ++(.8mm,.075mm) -- ++(0,4.075mm);
- \pingu@block[rounded corners=.1mm]{\pingu@color@headphone@left} ([xshift=\pingu@one-.2mm,yshift=3.22mm]\pingu@name-wings-side-left|-\pingu@name-eye-left) arc (88:-92:.565mm and 2.1mm) -- ++(-.8mm,-.05mm) arc (270:90:.425mm and 2.1mm) -- cycle;
- \pingu@block{\pingu@color@headphone} ([xshift=-\pingu@one,yshift=\pingu@one]\pingu@name-wings-side-right|-\pingu@name-eye-right)
- arc(180:0:{\pingu@one+\pingu@w@half} and {\pingu@head@h@half-.5\pingu@one}) arc(0:-180:.65mm and .33mm)
- arc(0:180:{\pingu@one+\pingu@w@half-2*.65mm} and {\pingu@head@h@half+.33\pingu@one-2*.6mm-1.1\pingu@one})
- arc(0:-180:.65mm and .33mm) -- cycle;
-\if@pingu@do@back@ \endpingu@layer \fi
-}
-
-\pingu@create@wing@extra{vrcontroller}{%
-vr-controller \@lr/.code = {\pingu@set@extra{vrcontroller\@lr}{true}\pingu@color{vrcontroller\@lr}{##1}},
-vr-controller \@lr/.default = pingu@green,
-vr-controller \@lr\space handle/.code = \pingu@color{vrcontroller\@lr @handle}{##1},%
-vr-controller \@lr\space second/.code = \pingu@color{vrcontroller\@lr @second}{##1},%
-vr-controller \@lr\space second shade/.code = \pingu@color{vrcontroller\@lr @second@shade}{##1}%
-}{vr-controller \@lr\space handle={\csname pingu@color@vrcontroller\@lr\endcsname!76!pingu@black},vr-controller \@lr\space second={\csname pingu@color@vrcontroller\@lr\endcsname!56!pingu@black},vr-controller \@lr\space second shade={\csname pingu@color@vrcontroller\@lr\endcsname!96!pingu@black}}
-
-% #1 wing
-\def\pingu@draw@wi@vrcontroller#1{%
- \pingu@setup@wing{vrcontroller}{#1}%
- \pingu@block[rotate around={\@angle:(\pingu@name-wing-#1)}]{\csname pingu@color@vrcontroller#1@handle\endcsname}(\pingu@name-wing-#1)++(.5mm,5mm) to[bend right=1] ++(-.25mm,-5.5mm) arc (0:-180:.325mm and .1mm) to[bend right=1] ++(-.7mm,5.5mm) -- cycle coordinate[pos=.5] (@);
- \def\@y{2.06mm} \def\@@y{.78mm}
- \pingu@block[rotate around={\@angle:(\pingu@name-wing-#1)},even odd rule]{\csname pingu@color@vrcontroller#1@second\endcsname}([yshift=.1mm]@) arc (90:450:{\@y} and 1mm) coordinate[pos=.25] (@r) coordinate[pos=.75] (@l) ([yshift=-.6mm]@) arc (90:0:{\@@y} and .25mm) arc (0:-180:{\@@y} and .35mm) arc (180:90:{\@@y} and .25mm);
- % \pingu@draw[rotate around={\@angle:(\pingu@name-wing-#1)}]{\csname pingu@color@vrcontroller#1@second@shade\endcsname} ([yshift=-.9mm]@)++(180:{\@@y} and .3mm) arc (180:0:{\@@y} and .3mm);
- \def\@toruslow{(@l) to[bend left=7] ++(-.2mm,-.875mm) to[bend left=15] coordinate[pos=.95] (@c) ++(-2*\@y+.4mm,0) [sharp corners] to[bend left=7] ++(-.2mm,.875mm) to[bend right=30] cycle}
- \pingu@block[rounded corners=.1mm,rotate around={\@angle:(\pingu@name-wing-#1)}]{\csname pingu@color@vrcontroller#1@second\endcsname} \@toruslow;
- \scope[rounded corners=.1mm,rotate around={\@angle:(\pingu@name-wing-#1)}]
- \clip \@toruslow;
- \pingu@block[opacity=.1]{black} (@l) to[bend left=14] (@c) -- ++(0,-2mm) -| cycle;
- \endscope
-}
-
-
-\pingu@create@wing@extra{laptop}{%
- laptop \@lr/.code = {\pingu@set@extra{laptop\@lr}{true}\pingu@color{laptop\@lr}{##1}},
- laptop \@lr/.default = gray!80!pingu@white,
- laptop \@lr\space bracket/.code = \pingu@color{laptop\@lr @bracket}{##1},
- laptop \@lr\space lower/.code = \pingu@color{laptop\@lr @lower}{##1},
- laptop \@lr\space key/.code = \pingu@color{laptop\@lr @key}{##1},
- laptop \@lr\space display/.code = \pingu@color{laptop\@lr @display}{##1},
- laptop \@lr\space content/.code = \@namedef{pingu@x@laptop\@lr @content}{##1}, % tikz content
- laptop \@lr\space mid/.code = \@namedef{pingu@x@laptop\@lr @mid}{##1}, % tikz content
-}{laptop \@lr\space bracket=pingu@black!80!\csname pingu@color@laptop\@lr\endcsname,laptop \@lr\space lower=\csname pingu@color@laptop\@lr\endcsname!95!pingu@black,laptop \@lr\space key=\csname pingu@color@laptop\@lr\endcsname!92!pingu@white,laptop \@lr\space display=\csname pingu@color@laptop\@lr\endcsname!32!pingu@white,laptop \@lr\space content={},laptop \@lr\space mid={}}
-
-% #1 wing
-\def\pingu@draw@wi@laptop#1{%
- \pingu@setup@wing{laptop}{#1}%
- \scope[rotate around={\@angle+5:(\pingu@name-wing-#1)},shift={(\pingu@name-wing-#1)}]
- \pingu@block[rounded corners=1pt]{\csname pingu@color@laptop#1@lower\endcsname}(-6.9mm,0) -- ++(-.1mm,-4.75mm) -- ++(14mm,0) -- ++(-.1mm,4.75mm) -- cycle;
- \pingu@block[rounded corners=1pt]{\@col}(-6.9mm,0) -- ++(0,7mm) -- ++(13.8mm,0) -- ++(0,-7mm) -- cycle;
- \pingu@block[rounded corners=.125mm]{\csname pingu@color@laptop#1@bracket\endcsname}(-6.4mm,.125mm) -- ++(0,-.25mm) -- ++(12.8mm,0) -- ++(0,.25mm) -- cycle;
- % keys
- \foreach[count=\y from 0,evaluate=\y as \extpadding using 0.005*\y,evaluate=\y as \rextpadding using 0.05*\y] \row in {
- % manually account for padding
- {0,1,1,1,1,1,1,1,1,1,1,1,1,1},
- {.63,1.5,1,1,1,1,1,1,1,1,1,1,1},
- {0,1,1,1,1,1,1,1,1,1,1,1,1,1},
- {0,1,1,1,1,1,4.62,1,1,1,1},
- } {
- \def\lengthincr{-\rextpadding mm}
- \foreach[count=\i from 0,evaluate=\len as \l using 0.85*\len] \len in \row {
- \ifnum\i=0 \else % first one is silent:
- \pingu@block[rounded corners=.125mm]{\csname pingu@color@laptop#1@key\endcsname}(\lengthincr-6.4mm,-\y mm-.5mm) rectangle ++(\l mm,-.75mm) node[midway,centered,text=\@col,scale=.3] {\textbullet};
- \fi
- \xdef\lengthincr{\the\dimexpr\lengthincr+\l mm+.13mm+\extpadding mm}
- }
- }
- % display, we modify the lower shift to adjust height offset
- \pingu@block[rounded corners=1pt]{\csname pingu@color@laptop#1@display\endcsname}(-6.7mm,.25mm+.05mm) rectangle ++(13.4mm,6.45mm) node[midway,centered,rotate=\@angle+5,text width=13.2mm,align=center,minimum height=6.2mm] {\csname pingu@x@laptop#1@mid\endcsname};
- \scope[shift={(-6.7mm,.25mm+.05mm)}]
- \csname pingu@x@laptop#1@content\endcsname
- \endscope
- \endscope
-} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus.sty b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus.sty
index 903d95a98f0..49d81082230 100644
--- a/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus.sty
+++ b/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus.sty
@@ -2,13 +2,13 @@
% Licensed under GNU General Public License version 3
% https://opensource.org/licenses/gpl-3.0.html
\def\tikzpingus@filename{tikzpingus}
-\ProvidesPackage{\tikzpingus@filename}[2023/09/17 version v1.1 Penguins in TikZ]
+\ProvidesPackage{\tikzpingus@filename}[2024/11/27 version v1.2 Penguins in TikZ]
\newif\ifpengu@setup@glows@
\DeclareOption{glows}{\pengu@setup@glows@true}\DeclareOption{noglows}{\pengu@setup@glows@false}
\newif\ifpengu@setup@manual@layers@
\DeclareOption{manual-layers}{\pengu@setup@manual@layers@true}\DeclareOption{nomanual-layers}{\pengu@setup@manual@layers@false}
-\newif\ifpengu@setup@bare@
-\DeclareOption{bare}{\pengu@setup@bare@true}\DeclareOption{nobare}{\pengu@setup@bare@false}
+% \newif\ifpengu@setup@bare@
+% \DeclareOption{bare}{\pengu@setup@bare@true}\DeclareOption{nobare}{\pengu@setup@bare@false}
\ProcessOptions*
\RequirePackage{etoolbox}
@@ -364,26 +364,23 @@
\ifpengu@setup@manual@layers@\pgfsetlayers{background,main,middle,foreground}\fi\begingroup
\@pingu@do@back@false
\pgfqkeys{/pingu}{defaults, #1}%
+\let\pingu@path@lowerpingu\pingu@default@path@lowerpingu\relax
+\let\pingu@path@upperpingu\pingu@default@path@upperpingu\relax
\ifdim\pingu@side@h@half<10.33mm \PackageWarning{\tikzpingus@filename}{Penguins with a height below 10.33mm may have unwanted artifacts.}\fi
\scope[/pingu/@pingu,/pingu/@pingu@main]
\scope[/pingu/@body]
\@pingu@drawer@bodytype@
\pingu@body@app
\endscope
-
-\path (\pingu@name-head-center)++(0,-.05mm-\pingu@outer@off) coordinate (\pingu@name-bill);
-
+\path(\pingu@name-head-center)++(0,-.05mm-\pingu@outer@off) coordinate (\pingu@name-bill);
\scope[shift=(\pingu@name-belly-center),/pingu/@belly]
\clip[use path=\pingu@whitepingu]; \pingu@belly@raw
\endscope
-\coordinate (\pingu@name-head) at (\pingu@w@half,.7375cm);
-
+\coordinate(\pingu@name-head) at (\pingu@w@half,.7375cm);
\scope[/pingu/@eyes]
\@pingu@drawer@lefteye@ \@pingu@drawer@righteye@
\endscope
-
\pingu@layer{background}[]\pingu@draw@clothing@behind\endpingu@layer
-
\pingu@draw@clothing@middle
\scope[/pingu/@extras,/pingu/@extras@below]
\pingu@draw@extras@below
@@ -444,7 +441,7 @@
% #region lower-pingu
% Note: to be used in clippies
-\def\pingu@path@lowerpingu{(0,\pingu@outer@off)
+\def\pingu@default@path@lowerpingu{(0,\pingu@outer@off)
% left side
to[bend right=\pingu@bend] ++(0,-\pingu@side@h@half-\pingu@outer@off)
% feety stuff
@@ -453,8 +450,9 @@ arc (208:270:\pingu@foot@inner@w{} and \pingu@foot@inner@h) arc (270:360:\pingu@
% right side
to[bend right=\pingu@bend] ++(0,\pingu@side@h@half+\pingu@outer@off)
arc(0:180:\pingu@w@half{} and \pingu@head@h@half) -- cycle}% arc clip to secure wings
-\def\pingu@path@upperpingu{(\pingu@name-head-center) ellipse [x radius=\pingu@w@half, y radius=\pingu@head@h@half]}
-
+\def\pingu@default@path@upperpingu{(\pingu@name-head-center) ellipse [x radius=\pingu@w@half, y radius=\pingu@head@h@half]}
+\let\pingu@path@lowerpingu\pingu@default@path@lowerpingu
+\let\pingu@path@upperpingu\pingu@default@path@upperpingu
% #endregion
% #endregion
@@ -601,6 +599,21 @@ coordinate[pos=\pinguanglehl] (\pingu@name-head-left);
% #endregion
% #region legacy
\pingu@bodytype@add{legacy}{%
+\gdef\pingu@path@lowerpingu{%
+(0,\pingu@outer@off)
+% left side
+to[bend right=1.25*\pingu@bend] ++(0,-.95\pingu@side@h@half-\pingu@outer@off+.65\pingu@one)%
+% feety stuff
+to[out=270,in=270]
+++(2*\pingu@w@half,0)
+% right side
+to[bend right=1.25*\pingu@bend] ++(0,.95\pingu@side@h@half+\pingu@outer@off-.65\pingu@one)
+arc(0:180:\pingu@w@half{} and \pingu@head@h@half) -- cycle
+}
+\gdef\pingu@path@upperpingu{(\pingu@name-head-center)
+++(0,\pingu@head@h@half)
+arc(90:450:\pingu@w@half{} and \pingu@head@h@half);
+}
\pingu@block[save path=\pingu@lowerpingu]{\pingu@color@body@main} (0,\pingu@outer@off)
% left side
to[bend right=1.25*\pingu@bend] coordinate[pos=.77] (\pingu@name-waist-right) ++(0,-.95\pingu@side@h@half-\pingu@outer@off+.65\pingu@one) coordinate (@b) % for bottom clip
@@ -753,6 +766,9 @@ coordinate[pos=\pinguanglehl] (\pingu@name-head-left);
\def\@pingu@wingangle@items@none@{90}
\def\@pingu@wingdown@none@{90}
+% to hide it with the glow
+\def\pingu@wing@compensator#1{#1}
+
% #region wings-normal
\@pingu@wings@s{normal}{%
\coordinate (\pingu@name-wing-left-start) at ([yshift=-6.5mm]\pingu@name-wings-side-left);
@@ -778,8 +794,8 @@ coordinate[pos=\pinguanglehl] (\pingu@name-head-left);
\path[/pingu/@invclip] \pingu@path@lowerpingu;
\endpgfinterruptboundingbox
\pingu@block[rotate around={-39:(\pingu@name-wing-left-start)}]{\pingu@color@left@wing} (\pingu@name-wing-left-start) ellipse [x radius=2.2mm, y radius=9.35mm] +(90:.22cm and .935cm) coordinate (\pingu@name-wing-left-tip) +(150:.22cm and .935cm) coordinate (\pingu@name-wing-left-cap-up) +(-3:.22cm and .935cm) coordinate (\pingu@name-wing-left-cap-down) +(90:.175cm and .75cm) coordinate (\pingu@name-wing-left);
- \pingu@block{\pingu@color@left@wing} (\pingu@name-wing-left-start)++(.03mm,4.6mm) to[out=-80,in=220] (\pingu@name-wing-left-cap-up) -- (\pingu@name-wing-left-start) -- cycle;
- \pingu@block{\pingu@color@left@wing} (\pingu@name-wing-left-start)++(.085mm,-4.4mm) to[out=80,in=-131] (\pingu@name-wing-left-cap-down) -- (\pingu@name-wing-left-start) -- cycle;
+ \pingu@wing@compensator{\pingu@block{\pingu@color@left@wing} (\pingu@name-wing-left-start)++(.03mm,4.6mm) to[out=-80,in=220] (\pingu@name-wing-left-cap-up) -- (\pingu@name-wing-left-start) -- cycle;
+ \pingu@block{\pingu@color@left@wing} (\pingu@name-wing-left-start)++(.085mm,-4.4mm) to[out=80,in=-131] (\pingu@name-wing-left-cap-down) -- (\pingu@name-wing-left-start) -- cycle;}
\endscope}{%
\coordinate (\pingu@name-wing-right-start) at ([yshift=-5.85mm]\pingu@name-wings-side-right);
\scope[xshift=\p@] % shift to avoid rounding errors in pdf viewers
@@ -787,8 +803,8 @@ coordinate[pos=\pinguanglehl] (\pingu@name-head-left);
\path[/pingu/@invclip] \pingu@path@lowerpingu;
\endpgfinterruptboundingbox
\pingu@block[rotate around={39:(\pingu@name-wing-right-start)}]{\pingu@color@right@wing} (\pingu@name-wing-right-start) ellipse [x radius=.22cm, y radius=.935cm] +(90:.22cm and .935cm) coordinate (\pingu@name-wing-right-tip) +(30:.22cm and .935cm) coordinate (\pingu@name-wing-right-cap-up) +(177:.22cm and .935cm) coordinate (\pingu@name-wing-right-cap-down) +(90:.175cm and .775cm) coordinate (\pingu@name-wing-right);
- \pingu@block{\pingu@color@right@wing} (\pingu@name-wing-right-start)++(-.03mm,4.6mm) to[out=-100,in=-45] (\pingu@name-wing-right-cap-up) -- (\pingu@name-wing-right-start) -- cycle;
- \pingu@block{\pingu@color@right@wing} (\pingu@name-wing-right-start)++(-.1mm,-4.4mm) to[out=100,in=-50] (\pingu@name-wing-right-cap-down) -- (\pingu@name-wing-right-start) -- cycle;
+ \pingu@wing@compensator{\pingu@block{\pingu@color@right@wing} (\pingu@name-wing-right-start)++(-.03mm,4.6mm) to[out=-100,in=-45] (\pingu@name-wing-right-cap-up) -- (\pingu@name-wing-right-start) -- cycle;
+ \pingu@block{\pingu@color@right@wing} (\pingu@name-wing-right-start)++(-.1mm,-4.4mm) to[out=100,in=-50] (\pingu@name-wing-right-cap-down) -- (\pingu@name-wing-right-start) -- cycle;}
\endscope}{\pingu@wi@above}{-10}{-110}
% #endregion
% #region wings-raise
@@ -845,8 +861,8 @@ coordinate[pos=\pinguanglehl] (\pingu@name-head-left);
\path[/pingu/@invclip] \pingu@path@lowerpingu;
\endpgfinterruptboundingbox
\pingu@block[rotate around={-128:(\pingu@name-wing-left-start)}]{\pingu@color@left@wing} (\pingu@name-wing-left-start) ellipse [x radius=.235cm, y radius=.925cm] +(90:.235cm and .935cm) coordinate (\pingu@name-wing-left-tip) +(175:.235cm and .935cm) coordinate (\pingu@name-wing-left-cap-up) +(22:.235cm and .935cm) coordinate (\pingu@name-wing-left-cap-down) +(90:.175cm and .775cm) coordinate (\pingu@name-wing-left);
-\pingu@block{\pingu@color@left@wing} (\pingu@name-wing-left-start)++(.03mm,4.6mm) to[out=-80,in=140] (\pingu@name-wing-left-cap-up) -- (\pingu@name-wing-left-start) -- cycle;
-\pingu@block{\pingu@color@left@wing} (\pingu@name-wing-left-start)++(.085mm,-4.4mm) to[out=82,in=155] (\pingu@name-wing-left-cap-down) -- (\pingu@name-wing-left-start) -- cycle;
+\pingu@wing@compensator{\pingu@block{\pingu@color@left@wing} (\pingu@name-wing-left-start)++(.03mm,4.6mm) to[out=-80,in=140] (\pingu@name-wing-left-cap-up) -- (\pingu@name-wing-left-start) -- cycle;
+\pingu@block{\pingu@color@left@wing} (\pingu@name-wing-left-start)++(.085mm,-4.4mm) to[out=82,in=155] (\pingu@name-wing-left-cap-down) -- (\pingu@name-wing-left-start) -- cycle;}
\endscope}{%
\coordinate (\pingu@name-wing-right-start) at ([yshift=-6.25mm]\pingu@name-wings-side-right);
\scope[xshift=\p@] % shift to avoid rounding errors in pdf viewers
@@ -854,8 +870,8 @@ coordinate[pos=\pinguanglehl] (\pingu@name-head-left);
\path[/pingu/@invclip] \pingu@path@lowerpingu;
\endpgfinterruptboundingbox
\pingu@block[rotate around={128:(\pingu@name-wing-right-start)}]{\pingu@color@right@wing} (\pingu@name-wing-right-start) ellipse [x radius=.235cm, y radius=.935cm] +(90:.235cm and .935cm) coordinate (\pingu@name-wing-right-tip) +(5:.235cm and .935cm) coordinate (\pingu@name-wing-right-cap-up) +(160:.235cm and .935cm) coordinate (\pingu@name-wing-right-cap-down) +(90:.175cm and .775cm) coordinate (\pingu@name-wing-right);
-\pingu@block{\pingu@color@right@wing} (\pingu@name-wing-right-start)++(-.03mm,4.6mm) to[out=-100,in=40] (\pingu@name-wing-right-cap-up) -- (\pingu@name-wing-right-start) -- cycle;
-\pingu@block{\pingu@color@right@wing} (\pingu@name-wing-right-start)++(-.085mm,-4.4mm) to[out=92,in=20] (\pingu@name-wing-right-cap-down) -- (\pingu@name-wing-right-start) -- cycle;
+\pingu@wing@compensator{\pingu@block{\pingu@color@right@wing} (\pingu@name-wing-right-start)++(-.03mm,4.6mm) to[out=-100,in=40] (\pingu@name-wing-right-cap-up) -- (\pingu@name-wing-right-start) -- cycle;
+\pingu@block{\pingu@color@right@wing} (\pingu@name-wing-right-start)++(-.085mm,-4.4mm) to[out=92,in=20] (\pingu@name-wing-right-cap-down) -- (\pingu@name-wing-right-start) -- cycle;}
\endscope}{\pingu@wi@above}{-30}{-62}
\let\@pingu@wings@s\relax
% #endregion
@@ -1075,6 +1091,7 @@ coordinate[pos=\pinguanglehl] (\pingu@name-head-left);
\pingu@xif@eb{devilwings}{devilwings}%
\pingu@xif@eb{glow}{glow}%
\pingu@xif@eb{belt}{belt}%
+ \pingu@xif@eb{santabeard}{santabeard}%
\pingu@xif@eb{tie}{tie}%
\pingu@xif@eb{pants}{pants}%
\pingu@xif@eb{medal}{medal}%
@@ -1161,9 +1178,11 @@ coordinate[pos=\pinguanglehl] (\pingu@name-head-left);
\pingu@layer{background}[]
\@for\i:={\pingu@x@extra@glow@steps}\do{
\scope[/pingu/@block/.append style={draw=\pingu@color@glow,line width=\pingu@x@extra@glow@width@func},/pingu/@draw/.append style={draw=\pingu@color@glow,line width=\pingu@x@extra@glow@width@func},opacity=\pingu@x@extra@glow@func,transparency group]
- \pingu@draw{\pingu@color@glow} \pingu@path@lowerpingu;
+ \pingu@draw[sharp corners]{\pingu@color@glow} \pingu@path@lowerpingu;
+ \pingu@draw[sharp corners]{\pingu@color@glow} \pingu@path@upperpingu;
% todo: disable re set of coordinates
- % only draw, if not ofset
+ % only draw, if not offset
+ \tikzset{rounded corners/.style={}}\def\pingu@wing@compensator##1{}%
\csname @pingu@wingitem@\@pingu@select@leftwing@ @\endcsname\@pingu@drawer@leftwing@\fi
\csname @pingu@wingitem@\@pingu@select@rightwing@ @\endcsname\@pingu@drawer@rightwing@\fi
\endscope
@@ -1185,8 +1204,11 @@ coordinate[pos=\pinguanglehl] (\pingu@name-head-left);
\pingu@xif@ea{glassesround}{glassesround}%
\pingu@xif@ea{devilhorns}{devilhorns}%
\pingu@xif@ea{headband}{headband}%
+ \pingu@xif@ea{vrheadset}{vrheadset}%
\pingu@xif@ea{strawhat}{strawhat}%
+ \pingu@xif@ea{graduate}{graduate}%
\pingu@xif@ea{hat}{hat}%
+ \pingu@xif@ea{spacehelmet}{spacehelmet}%
\pingu@xif@ea{mitra}{mitra}%
\pingu@xif@ea{witchhat}{witchhat}%
\pingu@xif@ea{constructionhelmet}{constructionhelmet}%
@@ -1198,13 +1220,11 @@ coordinate[pos=\pinguanglehl] (\pingu@name-head-left);
\pingu@xif@ea{princesscrown}{princesscrown}%
\pingu@xif@ea{rook}{rook}%
\pingu@xif@ea{halo}{halo}%
- \pingu@xif@ea{vrheadset}{vrheadset}%
\pingu@xif@ea{headphone}{headphone}%
\pingu@xif@ea{sheriffstar}{sheriffstar}%
\pingu@xif@ea{santahat}{santahat}%
\pingu@xif@ea{woolhat}{woolhat}%
\pingu@xif@ea{deerhat}{deerhat}%
- \pingu@xif@ea{santabeard}{santabeard}%
\pingu@xif@ea{banner}{banner}%
\pingu@xif@ea{bee}{bee}%
}
@@ -1381,69 +1401,2345 @@ coordinate[pos=\pinguanglehl] (\pingu@name-head-left);
}
% #endregion
-\def\pingu@@dummy@lib#1#2{%
- \pgfqkeys{/pingu}{#1/.code={\PackageError{\tikzpingus@filename}{To use '#1' you need to load the '#2' library via '\string\pinguloadlibrary{#2}'}}}%
- \expandafter\def\csname pingu@@lib@#1@\endcsname{#2}%
-}
-\def\pingu@@dummy@selector#1#2#3{%
- \expandafter\csname pingu@#3@add\endcsname{#1}{\PackageError{\tikzpingus@filename}{To use '#1' with '#3' you need to load the '#2' library via '\string\pinguloadlibrary{#2}'}}%
- \expandafter\def\csname pingu@@lib@#1@#3@\endcsname{#2}%
-}
-\def\pingu@dummy@lib#1#2{\edef\tmp@list{#2}\@for\@current:=\tmp@list\do{\expandafter\pingu@@dummy@lib\expandafter{\@current}{#1}}\xappto\pingu@defaultlibs{,{#1}/{#2}}\xappto\pingu@@defaultlibs{,#1}}%
-% library | selector | keys
-\def\pingu@dummy@selector#1#2#3{\edef\tmp@list{#3}\@for\@current:=\tmp@list\do{\expandafter\pingu@@dummy@selector\expandafter{\@current}{#1}{#2}}}
-\def\pingu@defaultlibs{}\def\pingu@@defaultlibs{}
-\providecommand\pingulibpathprefix{}
-\def\pingu@load@library#1{%
-% store common catcodes
-\expandafter\edef\csname pingu@lib@#1@atcode\endcsname{\the\catcode`\@}%
-\expandafter\edef\csname pingu@lib@#1@barcode\endcsname{\the\catcode`\|}%
-\expandafter\edef\csname pingu@lib@#1@dollarcode\endcsname{\the\catcode`\$}%
-\catcode`\@=11 \catcode`\|=12 \catcode`\$=3\relax
-\def\pingu@tmp{\pingulibpathprefix tikzpingus-#1.lib.tex}\relax
-\InputIfFileExists{\pingu@tmp}{}{\PackageError{\tikzpingus@filename}{There is no '#1' library (searched: '\pingu@tmp')}}
-% restore catcodes
-\catcode`\@=\csname pingu@lib@#1@atcode\endcsname
-\catcode`\|=\csname pingu@lib@#1@barcode\endcsname
-\catcode`\$=\csname pingu@lib@#1@dollarcode\endcsname
-}
-\def\pingu@loadlibrary#1{%
-\ifcsname pingu@lib@#1@loaded\endcsname\else% do not load again
- \expandafter\let\csname pingu@lib@#1@loaded\endcsname=\@empty
- \pingu@load@library{#1}\relax
+
+% #region bee-lib
+\pingu@create@extra{bee}{%
+ bee/.code = {\pingu@set@extra{bee}{true}\pingu@color{bee}{#1}},
+ bee/.default = pingu@yellow!60!pingu@white,%
+ bee body/.code = \pingu@color{bee@body}{#1},
+ bee eyes/.code = \pingu@color{bee@eyes}{#1},
+ bee wings/.code = \pingu@color{bee@wings}{#1},
+ bee mouth/.code = \pingu@color{bee@mouth}{#1},
+ bee blush/.code = \pingu@color{bee@blush}{#1},
+ bee position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@bee@angle{#1}\def\pingu@x@bee@xshift{#2}\def\pingu@x@bee@yshift{#3}\def\pingu@x@bee@scale{#4}},
+}{bee body=pingu@black!82!gray,bee wings=pingu@blue!8!pingu@white,bee mouth=\pingu@color@bee@body,bee eyes=\pingu@color@bee@body,bee blush=pingu@red!21!\pingu@color@bee,bee position={-27.5:(8mm,15mm){.875}}}
+
+\def\pingu@bee@x@lbody{ (left) to[out=270,in=150] (0,-.725) to[out=30,in=270] (right)}
+
+\def\pingu@draw@ea@bee{%
+\scope[very path/.append style={line join=round},rotate around={\pingu@x@bee@angle:(\pingu@name-head)},shift={(\pingu@name-head)},shift={(\pingu@x@bee@xshift,\pingu@x@bee@yshift)},scale=\pingu@x@bee@scale]
+% wings
+\coordinate (wl) at(20:2.55mm);
+\coordinate (wr) at(160:2.55mm);
+\pingu@draw[fill=\pingu@color@bee@wings!80!white,rotate around=-32:(wl)]{\pingu@color@bee@body} (wl) ellipse [x radius=6.15mm, y radius=2.75mm];
+\pingu@draw[fill=\pingu@color@bee@wings!80!white,rotate around=32:(wr)]{\pingu@color@bee@body} (wr) ellipse [x radius=6.15mm, y radius=2.75mm];
+\pingu@draw[fill=\pingu@color@bee@wings,rotate around=19:(wl)]{\pingu@color@bee@body} (wl) ellipse [x radius=6.55mm, y radius=3.125mm];
+\pingu@draw[fill=\pingu@color@bee@wings,rotate around=-19:(wr)]{\pingu@color@bee@body} (wr) ellipse [x radius=6.55mm, y radius=3.125mm];
+% body
+\path (-.375,0) coordinate (left) -- (.375,0) coordinate (right);
+% TODO: block draw?
+\pingu@block[draw=\pingu@color@bee@body]{\pingu@color@bee@body} \pingu@bee@x@lbody;
+\scope\clip\pingu@bee@x@lbody;
+\foreach \angl in {30,1} {
+\pingu@block{\pingu@color@bee} (-\angl:.75) to[bend left=14] (180+\angl:.75) -- ++(0,-1.75mm)
+ to[bend right=14] (-\angl-14:.75) -- cycle;
+}\endscope
+% left and right arm
+\foreach\m/\s/\k in {right/-2.45/95,left/-.75/80} {
+\scope[shift=(\m),yshift=\s,rotate around=\k:(\m),scale=.166]
+\pingu@block{\pingu@color@bee@body} (-.965,0) arc(270:90:.29) -- ++(1.233,0) arc (90:-90:.29) -- cycle;
+\endscope}
+% sting
+\pingu@draw[line cap=round,thick]{\pingu@color@bee@body} (0,-.725) -- ++(0,-.035);
+% head
+\pingu@draw[fill=\pingu@color@bee,rounded corners=1.5pt]{\pingu@color@bee@body} (.85mm,-.55mm) to[bend right=30,looseness=.9] ([xshift=1.45mm,yshift=1.35mm]right) arc(0:180:{(.75cm+2*1.45mm)/2} and {(.75cm+2*1.45mm)/2.05}) to[bend right=30,looseness=.9] (-.85mm,-.55mm) -- cycle;
+% eyes [intersect with left and right]
+\pingu@block{\pingu@color@bee@eyes} (left|-0,2.265mm)++(.6mm,0) coordinate (el) circle[radius=.6mm];
+\coordinate (ell) at ([yshift=-.8mm]el);
+\pingu@block[rotate around=3:(ell)]{\pingu@color@bee@blush} ([yshift=-.8mm]el) ellipse[x radius=.412mm, y radius=.165mm];
+\pingu@block{\pingu@color@bee@eyes} (right|-0,2.265mm)++(-.6mm,0) coordinate (er) circle[radius=.6mm];
+\coordinate (err) at ([yshift=-.8mm]er);
+\pingu@block[rotate around=-1:(err)]{\pingu@color@bee@blush} ([yshift=-.8mm]er) ellipse[x radius=.4mm, y radius=.155mm];
+% mouth
+\scope[yshift=1mm]
+\pingu@draw[semithick,line cap=round]{\pingu@color@bee@mouth} (-.6mm,0) arc (180:360:.6mm and .415mm);
+% antenna
+\pingu@draw[line cap=round]{\pingu@color@bee@body} (123:4mm) to[out=110,in=-41] ++(-1mm,3mm) coordinate (@);
+\pingu@block[rotate around=-41:(@)]{\pingu@color@bee@body} ([xshift=-.1mm,yshift=-.185mm]@) ellipse[x radius=.55mm,y radius=.35mm];
+\pingu@draw[line cap=round]{\pingu@color@bee@body} (57:4mm) to[out=70,in=180+41] ++(1mm,3mm) coordinate (@);
+\pingu@block[rotate around=41:(@)]{\pingu@color@bee@body} ([xshift=-.1mm,yshift=-.2mm]@) ellipse[x radius=.55mm,y radius=.35mm];
+\endscope
+\endscope
+}
+
+\pingu@create@wing@extra{flower}{%
+ flower \@lr/.code = {\pingu@set@extra{flower\@lr}{true}\pingu@color{flower\@lr}{##1}},
+ flower \@lr/.default = pingu@purple!80!pingu@yellow,
+ flower \@lr\space center/.code = \pingu@color{flower@\@lr @center}{##1},
+ flower \@lr\space center size/.code = \expandafter\def\csname pingu@flower@\@lr @center@size\endcsname{##1},
+ flower \@lr\space stem/.code = \pingu@color{flower@\@lr @stem}{##1},
+ flower \@lr\space stem length/.code = \expandafter\def\csname pingu@flower@\@lr @stem@length\endcsname{##1},
+ flower \@lr\space stem width/.code = \expandafter\def\csname pingu@flower@\@lr @stem@width\endcsname{##1},
+ flower \@lr\space stem tilt/.code = \expandafter\def\csname pingu@flower@\@lr @stem@tilt\endcsname{##1},
+ flower \@lr\space size/.code = \expandafter\def\csname pingu@flower@\@lr @size\endcsname{##1},
+ flower \@lr\space petal count/.code = \expandafter\def\csname pingu@flower@\@lr @petals\endcsname{##1},
+ flower \@lr\space petal width/.code = \expandafter\def\csname pingu@flower@\@lr @petals@width\endcsname{##1},
+ flower \@lr\space petal start angle/.code = \expandafter\def\csname pingu@flower@\@lr @petals@start@angle\endcsname{##1},
+ flower \@lr\space petal peak/.code = \expandafter\def\csname pingu@flower@\@lr @petals@peak\endcsname{##1},
+}{flower \@lr\space size=.3mm, flower \@lr\space center=brown!50!pingu@yellow, flower \@lr\space center size=.65mm, flower \@lr\space stem=green!90!pingu@yellow!70!pingu@black, flower \@lr\space stem length=6mm,flower \@lr\space stem width=.15mm,flower \@lr\space stem tilt=-.5mm, flower \@lr\space petal count=5, flower \@lr\space petal start angle=27, flower \@lr\space petal width=4.5pt, flower \@lr\space petal peak=2}
+
+% #1 wing
+\def\pingu@draw@wi@flower#1{%
+\pingu@setup@wing{flower}{#1}%
+ \pingu@draw[line width=\csname pingu@flower@#1@stem@width\endcsname]{\csname pingu@color@flower@#1@stem\endcsname} ([yshift=-.5mm]\pingu@name-wing-#1) to[out=80,in=-20] ++(\csname pingu@flower@#1@stem@tilt\endcsname,\csname pingu@flower@#1@stem@length\endcsname) coordinate (\pingu@name-flower-center-#1) coordinate (@);
+\pgfmathsetmacro\AnglePerPetal{360/\csname pingu@flower@#1@petals\endcsname}
+\edef\@currwidth{\csname pingu@flower@#1@petals@width\endcsname}%
+\foreach \i in {1,...,\csname pingu@flower@#1@petals\endcsname} {
+ \pgfmathsetmacro{\@currrot}{\i*\AnglePerPetal+\csname pingu@flower@#1@petals@start@angle\endcsname}%
+ \scope[rotate around={\@currrot:(@)}]
+\pingu@block{\@col} (@) to[bend right=4] ++(\@currwidth,.5*\csname pingu@flower@#1@size\endcsname) arc(-9:189:\@currwidth\space and \@currwidth*\csname pingu@flower@#1@petals@peak\endcsname) to[bend right=4] ++(\@currwidth,-.5*\csname pingu@flower@#1@size\endcsname) -- cycle;
+\endscope
+\pingu@block{\csname pingu@color@flower@#1@center\endcsname} (\pingu@name-flower-center-#1) circle[radius=\csname pingu@flower@#1@center@size\endcsname];
+}
+}
+% #endregion
+% #endregion
+
+% #region christmas-lib
+\pingu@create@extra{santahat}{%
+ santa hat/.code = \pingu@set@extra{santahat}{true}\pingu@color{santahat}{#1}\pgfqkeys{/pingu}{hair=\@pingu@none},
+ santa hat/.default = pingu@red!87!pingu@black,
+ santa hat second/.code = \pingu@color{santahat@second}{#1},
+ santa hat bobble/.code = \pingu@color{santahat@bobble}{#1}
+}{santa hat second={pingu@white!97!\pingu@color@santahat},santa hat bobble={\pingu@color@santahat@second}}
+\def\pingu@draw@ea@santahat{%
+\path (\pingu@name-head-center)+(152:\pingu@w@half{} and \pingu@head@h@half) coordinate (\pingu@name-santa-right);
+\path (\pingu@name-head-center)+(5:\pingu@w@half{} and \pingu@head@h@half) coordinate (\pingu@name-santa-left);
+\pingu@layer{middle}[]
+\pingu@block{\pingu@color@santahat@second} (\pingu@name-santa-right) to[out=48,in=132] (\pingu@name-santa-left) to[out=30,in=-45,looseness=1.325] ++(0,3.2mm)
+to[out=135,in=47,looseness=1.025] coordinate[pos=.915] (\pingu@name-santa-ur) coordinate[pos=.055] (\pingu@name-santa-ul) ([yshift=2mm]\pingu@name-santa-right) to[out=240,in=140] cycle;
+\endpingu@layer
+\pingu@layer{background}[]
+\pingu@block{\pingu@color@santahat} (\pingu@name-santa-ur) arc(145:-25:11.85mm and 14.915mm)
+ to[bend right=7] coordinate[pos=.5] (\pingu@name-santa-lc) ++(-1.11mm,.375mm) to[bend right=11] (\pingu@name-santa-ul) to[bend right=15] cycle;
+\pingu@block{\pingu@color@santahat@bobble} (\pingu@name-santa-lc) circle[radius=2.625mm];
+\endpingu@layer
+}
+\pingu@create@extra{santabeard}{%
+ santa beard/.code = \pingu@set@extra{santabeard}{true}\pingu@color{santabeard}{#1},
+ santa beard/.default = pingu@white!96!pingu@red!98!pingu@black!92!gray,
+ santa beard string/.code = \pingu@color{santabeard@string}{#1}
+}{santa beard string=\pingu@color@body@main!85!pingu@black}
+\def\pingu@draw@eb@santabeard{%
+% \coordinate (\pingu@name-santa-beard-center) at ([yshift=1.25mm]\pingu@name-belly-center);
+\pingu@block{\pingu@color@santabeard@string} ([xshift=-.35mm,yshift=.575mm]\pingu@name-head-back-con-right) to[bend right=28,edge node={foreach[count=\i] \l in {0.03,0.085,...,0.992} {coordinate[pos=\l-rand*.015,yshift=-.85pt] (\pingu@name-santa-beard-\i)}}]
+([yshift=.575mm,xshift=.35mm]\pingu@name-head-back-con-left) arc(20:110:.05mm and .15mm) to[bend left=26] ([yshift=.575mm+.15mm,xshift=-.35mm]\pingu@name-head-back-con-right) to[bend right] cycle;
+\ifx\pingu@color@santabeard\@pingu@none\else% to allow for random
+\xdef\@pmaxY{18}\xdef\@pmaxYI{17}%
+\foreach[evaluate=\j as \maxj using int(\@pmaxY-\j),evaluate=\j as \widthred using \j/23pt] \j in {0,...,\@pmaxYI} {
+\foreach[remember=\i as \li (initially 0)] \i in {1,...,\maxj} {
+ \pgfmathsetmacro\@ptmp{94+rand*2.6}
+ \pingu@block{\pingu@color@santabeard!\@ptmp!pingu@black} (\pingu@name-santa-beard-\i) circle [radius=1.85pt-\widthred pt+rand*.35pt];
+ \ifnum\li>0 % make middle of last
+ \path (\pingu@name-santa-beard-\li) -- (\pingu@name-santa-beard-\i) coordinate[pos=.5,yshift=-1.1pt,xshift=.133pt] (\pingu@name-santa-beard-\li); % smoll shift
+ \fi
+}}\fi
+}
+
+\pingu@create@extra{woolhat}{%
+ wool hat/.code = \pingu@set@extra{woolhat}{true}\pingu@color{woolhat}{#1}\pgfqkeys{/pingu}{hair=\@pingu@none},
+ wool hat/.default = pingu@blue!57!pingu@black,
+ wool hat second/.code = \pingu@color{woolhat@second}{#1},
+ wool hat bobble/.code = \pingu@color{woolhat@bobble}{#1}
+}{wool hat second={\pingu@color@woolhat!55!pingu@white},wool hat bobble={\pingu@color@woolhat@second}}
+\def\pingu@draw@ea@woolhat{%
+\path ([yshift=.5mm,xshift=.165mm]\pingu@name-head-center)+(165:\pingu@w@half{} and \pingu@head@h@half) coordinate (\pingu@name-wool-right);
+\path ([yshift=.5mm,xshift=-.045mm]\pingu@name-head-center)+(4:\pingu@w@half{} and \pingu@head@h@half) coordinate (\pingu@name-wool-left);
+\pingu@layer{middle}[]
+\pingu@block{\pingu@color@woolhat@second} (\pingu@name-wool-right) to[out=37,in=170] (\pingu@name-wool-left) to[out=50,in=-55] ++(0,1.52mm) coordinate (\pingu@name-wool-left-up)
+to[out=167,in=38] coordinate[pos=.915] (\pingu@name-wool-ur) coordinate[pos=.055] (\pingu@name-wool-ul) ([yshift=1.5mm]\pingu@name-wool-right) coordinate (\pingu@name-wool-right-up) to[out=240,in=140] cycle;
+\endpingu@layer
+\path (\pingu@name-wool-left-up) -- (\pingu@name-wool-right-up) coordinate[pos=.455,yshift=9.75mm] (@mid);
+\pingu@block{\pingu@color@woolhat} (\pingu@name-wool-right-up) to[out=71,in=203] [rounded corners=2pt] (@mid) to[out=-34,in=100] [sharp corners] (\pingu@name-wool-left-up) to[in=37,out=172] cycle;
+\pingu@layer{background}[]
+\pingu@block{\pingu@color@woolhat@bobble} (@mid) circle [radius=1.25mm];
+\endpingu@layer
+}
+
+
+\pingu@create@extra{deerhat}{%
+ deer hat/.code = \pingu@set@extra{deerhat}{true}\pingu@color{deerhat}{#1}\pgfqkeys{/pingu}{hair=\@pingu@none},
+ deer hat/.default = pingu@bronze!57!pingu@black,
+ deer hat b/.code = \pingu@color{deerhat@b}{#1},
+ deer hat band/.code = \pingu@color{deerhat@band}{#1},
+}{deer hat band={\pingu@color@deerhat!85!pingu@black},deer hat b=\pingu@color@deerhat}
+\pgfmathsetmacro\pingu@deerhat@baseang@l{90-360*(1-\pinguanglehl)}
+\pgfmathsetmacro\pingu@deerhat@baseang@r{90-360*(1-\pinguanglehr)}
+\def\pingu@deerhat@baseoff{47}
+\def\pingu@deerhat@yshift{.15mm}
+\def\pingu@deerhat@linewidth{1.32mm}
+\def\pingu@deerhat@headoff@l{22}
+\def\pingu@deerhat@headoff@r{19}
+\def\pingu@draw@ea@deerhat{%
+\path ([yshift=-\pingu@deerhat@yshift]\pingu@name-head-left) arc (\pingu@deerhat@baseang@l:\pingu@deerhat@baseang@l-\pingu@deerhat@baseoff:\pingu@w@half{} and \pingu@head@h@half) coordinate[yshift=.05mm] (@target);
+\pingu@draw[line width=.7mm]{\pingu@color@deerhat@band} ([xshift=-.8mm]@target) arc (\pingu@deerhat@baseang@l-\pingu@deerhat@baseoff:360+\pingu@deerhat@baseang@r+\pingu@deerhat@baseoff:\pingu@w@half{}-.8mm and \pingu@head@h@half);
+
+\path ([yshift=-\pingu@deerhat@yshift]\pingu@name-head-top) arc (90:90-\pingu@deerhat@headoff@l:\pingu@w@half{} and \pingu@head@h@half) coordinate (@left);
+\path ([yshift=-\pingu@deerhat@yshift]\pingu@name-head-top) arc (90:90+\pingu@deerhat@headoff@r:\pingu@w@half{} and \pingu@head@h@half) coordinate (@right);
+
+\pgfonlayer{background}
+\pingu@draw[line width=\pingu@deerhat@linewidth,rounded corners=2pt,line cap=round]{\pingu@color@deerhat} (@left) to[bend right=4] ++(.85mm,1.5mm) coordinate (@a) -- ++(3.15mm,.5mm) coordinate (@b) -- ++(4.65mm,4.35mm) coordinate[pos=.5] (@c) to[bend right=10] ++(-.75mm,2.55mm);
+\pingu@draw[line width=\pingu@deerhat@linewidth,rounded corners=2pt,line cap=round]{\pingu@color@deerhat} ([xshift=-.135mm,yshift=-.425mm]@a) to[bend left=3] ++(1mm,3.9mm) ([xshift=-.4mm,yshift=-.05mm]@b) to[bend right=2] ++(3.75mm,.1mm) (@c) to[bend left=12] ++(-1mm,3.5mm);
+\pingu@draw[line width=\pingu@deerhat@linewidth,rounded corners=2pt,line cap=round]{\pingu@color@deerhat@b} (@right) to[bend left=4] ++(-.85mm,1.5mm) coordinate (@a) -- ++(-3.15mm,.5mm) coordinate (@b) -- ++(-4.65mm,4.35mm) coordinate[pos=.5] (@c) to[bend left=10] ++(.75mm,2.55mm);
+\pingu@draw[line width=\pingu@deerhat@linewidth,rounded corners=2pt,line cap=round]{\pingu@color@deerhat@b} ([yshift=-.425mm,xshift=.135mm]@a) to[bend right=3] ++(-1mm,3.9mm) ([xshift=.4mm,yshift=-.05mm]@b) to[bend right=2] ++(-3.75mm,.1mm) (@c) to[bend right=12] ++(1mm,3.5mm);
+\endpgfonlayer
+}
+
+\pingu@create@wing@extra{present}{%
+ present \@lr/.code = {\pingu@set@extra{present\@lr}{true}\pingu@color{present\@lr}{##1}},
+ present \@lr/.default = pingu@red!50!pingu@black!60!red,
+ present \@lr\space width/.code = \@namedef{pingu@present@\@lr @width}{##1},
+ present \@lr\space height/.code = \@namedef{pingu@present@\@lr @height}{##1},
+ present \@lr\space ribbon/.code = \pingu@color{present\@lr @ribbon}{##1},%
+ present \@lr\space band/.code = \pingu@color{present\@lr @band}{##1},%
+ present \@lr\space band width/.code = \@namedef{pingu@present@\@lr @band@width}{##1},
+ present \@lr\space xshift/.code = \@namedef{pingu@present@\@lr @xshift}{##1},
+ present \@lr\space yshift/.code = \@namedef{pingu@present@\@lr @yshift}{##1},
+ present \@lr\space band second height/.code = \@namedef{pingu@present@\@lr @band@second@height}{##1},
+ present \@lr\space band second yshift/.code = \@namedef{pingu@present@\@lr @band@second@yshift}{##1},
+ present \@lr\space lid/.code = \pingu@color{present\@lr @lid}{##1},%
+ present \@lr\space lid height/.code = \@namedef{pingu@present@\@lr @lid@height}{##1},
+ present \@lr\space lid overhang/.code = \@namedef{pingu@present@\@lr @lid@overhang}{##1},
+ present \@lr\space lid yshift/.code = \@namedef{pingu@present@\@lr @lid@yshift}{##1},
+ present \@lr\space lid band/.code = \pingu@color{present\@lr @lid@band}{##1},%
+}{present \@lr\space band=pingu@green!70!pingu@black!90!pingu@white,present \@lr\space width=7.75mm,present \@lr\space band width=1.75mm,present \@lr\space height=7mm,present \@lr\space yshift=-0.25*(\csname pingu@present@\@lr @height\endcsname),present \@lr\space band second height=\csname pingu@present@\@lr @band@width\endcsname, present \@lr\space band second yshift=0.5*(\csname pingu@present@\@lr @height\endcsname),present \@lr\space xshift=-0.25*(\csname pingu@present@\@lr @width\endcsname),present \@lr\space lid=\csname pingu@color@present\@lr\endcsname!92!pingu@black,present \@lr\space lid height=1.33mm,present \@lr\space lid overhang=.125mm,present \@lr\space lid yshift=0,present \@lr\space lid band=\csname pingu@color@present\@lr @band\endcsname!98!pingu@black,present \@lr\space ribbon=\csname pingu@color@present\@lr @band\endcsname!97!pingu@black}
+
+% TODO: more ribbon color control
+% #1 wing
+\def\pingu@draw@wi@present#1{%
+ \pingu@setup@wing{present}{#1}%
+ \scope[rotate around={\@angle:(\pingu@name-wing-#1)}]
+ \pingu@block[rounded corners=2pt]{\@col}(\pingu@name-wing-#1)++(-{0.5*(\csname pingu@present@#1@width\endcsname)+\csname pingu@present@#1@xshift\endcsname},{\csname pingu@present@#1@yshift\endcsname}) coordinate (@ll) rectangle ++({\csname pingu@present@#1@width\endcsname},{\csname pingu@present@#1@height\endcsname}) coordinate (@ur);
+ % vert band
+ \pingu@block{\csname pingu@color@present#1@band\endcsname}(@ll)++({0.5*(\csname pingu@present@#1@width\endcsname)-0.5*(\csname pingu@present@#1@band@width\endcsname)},0) rectangle ++({\csname pingu@present@#1@band@width\endcsname},{\csname pingu@present@#1@height\endcsname});
+ % horiz band
+ \pingu@block{\csname pingu@color@present#1@band\endcsname}(@ll)++(0,{\csname pingu@present@#1@band@second@yshift\endcsname-0.5*(\csname pingu@present@#1@band@second@height\endcsname)}) rectangle ++({\csname pingu@present@#1@width\endcsname},{\csname pingu@present@#1@band@second@height\endcsname});
+ % lid
+ \pingu@block[rounded corners=.75pt]{\csname pingu@color@present#1@lid\endcsname} ([yshift={\csname pingu@present@\@lr @lid@yshift\endcsname},xshift=\csname pingu@present@\@lr @lid@overhang\endcsname]@ur) rectangle ++({-\csname pingu@present@#1@width\endcsname-2*(\csname pingu@present@\@lr @lid@overhang\endcsname)},-\csname pingu@present@#1@lid@height\endcsname) coordinate (@ll);
+ % upper lid band
+ \pingu@block{\csname pingu@color@present#1@lid@band\endcsname}(@ll)++({0.5*(\csname pingu@present@#1@width\endcsname)-0.5*(\csname pingu@present@#1@band@width\endcsname)+\csname pingu@present@\@lr @lid@overhang\endcsname},0) rectangle ++({\csname pingu@present@#1@band@width\endcsname},{\csname pingu@present@#1@lid@height\endcsname});
+ % ribbon
+ \path (@ll)++({0.5*(\csname pingu@present@#1@width\endcsname)+\csname pingu@present@\@lr @lid@overhang\endcsname+0.2*(\csname pingu@present@#1@band@width\endcsname)},{\csname pingu@present@#1@lid@height\endcsname+.25mm}) coordinate (@top);
+ \pingu@block[even odd rule]{\csname pingu@color@present#1@ribbon\endcsname} (@top) to[out=40,in=110] ++(4mm,1mm)
+ to[out=-70,in=-20] ++(-4mm,-1.5mm) to[bend left=55] cycle ([xshift=.5mm]@top) to[out=40,in=110] ++(2.55mm,.5mm)
+ to[out=-70,in=-20] [rounded corners=1pt] ++(-2.85mm,-.835mm) -- cycle;
+ \path (@ll)++({0.5*(\csname pingu@present@#1@width\endcsname)+\csname pingu@present@\@lr @lid@overhang\endcsname-0.2*(\csname pingu@present@#1@band@width\endcsname)},{\csname pingu@present@#1@lid@height\endcsname+.25mm}) coordinate (@top);
+ \pingu@block[even odd rule]{\csname pingu@color@present#1@ribbon\endcsname} (@top) to[out=180-40,in=180-110] ++(-3.6mm,1mm)
+ to[out=-110,in=-160] ++(3.6mm,-1.5mm) to[bend right=55] cycle ([xshift=-.5mm]@top) to[out=140,in=70] ++(-2.55mm,.5mm)
+ to[out=-110,in=-160] [rounded corners=1pt] ++(2.55mm,-.75mm) -- cycle;
+ \pingu@block[rounded corners=.5pt]{\csname pingu@color@present#1@ribbon\endcsname} (@top)++(-.3mm,-.65mm) rectangle ++(1.3mm,.65mm); % TODO: make that round? (i.e., bend edges)
+ \endscope
+}
+
+\pingu@create@wing@extra{snowball}{%
+ snowball \@lr/.code = {\pingu@set@extra{snowball\@lr}{true}\pingu@color{snowball\@lr}{##1}},
+ snowball \@lr/.default = pingu@white!90!pingu@black,
+ snowball \@lr\space size/.code = \expandafter\def\csname pingu@snowball@\@lr @size\endcsname{##1},
+ snowball \@lr\space xshift/.code = \expandafter\def\csname pingu@snowball@\@lr @xshift\endcsname{##1},
+ snowball \@lr\space yshift/.code = \expandafter\def\csname pingu@snowball@\@lr @yshift\endcsname{##1}
+}{snowball \@lr\space size=2.33mm, snowball \@lr\space xshift=0pt, snowball \@lr\space yshift=0pt}
+
+% #1 wing
+% TODO: shifts
+\def\pingu@draw@wi@snowball#1{%
+\pingu@setup@wing{snowball}{#1}%
+ \pingu@draw[opacity=.35]{\@col} ([xshift=\csname pingu@snowball@#1@xshift\endcsname,yshift=\csname pingu@snowball@#1@yshift\endcsname]\pingu@name-wing-#1) coordinate (@) circle[radius=\csname pingu@snowball@#1@size\endcsname];
+ \pingu@block[rotate around={\@angle-1:(\pingu@name-wing-#1)},decoration={random steps,segment length=1pt,amplitude=.075pt},decorate,rounded corners=.35pt,save path=\snowball@outer]{\@col}(@) circle[radius=\csname pingu@snowball@#1@size\endcsname];
+}
+% #endregion
+
+% #region cloak-lib
+\newif\if@pingu@x@cloak@wings
+\pingu@create@extra{cloak}{%
+ cloak/.code = \pingu@set@extra{cloak}{true}\pingu@color{cloak}{#1},
+ cloak/.default = pingu@bronze,
+ cloak cap/.code = \pingu@color{cloak@cap}{#1},
+ cloak wings color/.code = \pingu@color{cloak@wings}{#1},
+ cloak bottom color/.code = \pingu@color{cloak@bottom}{#1},
+ cloak front color/.code = \pingu@color{cloak@front}{#1},
+ cloak padding/.code = \def\pingu@x@cloak@padding{#1},
+ cloak wings/.is if = @pingu@x@cloak@wings,
+ cape/.style = {/pingu/cloak=#1, /pingu/cloak wings=false,/pingu/cloak front color=\@pingu@none, /pingu/cloak cap=\@pingu@none,/pingu/cloak front color=\@pingu@none},
+ cape/.default = pingu@bronze,
+}{cloak padding=1.95mm,cloak bottom color=\pingu@color@cloak!90!black,cloak cap=\pingu@color@cloak!98!pingu@black,cloak front color=\pingu@color@cloak!90!white,cloak wings color=\pingu@color@cloak@front!94!pingu@black,cloak wings=true}
+\def\pingu@draw@cloth@cloak@behind{%
+ \pingu@block[bottom color=\pingu@color@cloak@bottom,top color=\pingu@color@cloak]{\pingu@color@cloak} (\pingu@name-bottom-center)++(-\pingu@x@cloak@padding-\pingu@w@half,-.5mm) arc (180:0:{\pingu@x@cloak@padding+\pingu@w@half} and \pingu@one) to[bend left=1] (\pingu@name-wings-side-left) arc(0:180:\pingu@w@half{} and .75mm) to[bend left=1] cycle;
+}
+
+\def\pingu@draw@cloth@cloak@middle{\pingu@block[rounded corners=.7mm]{\pingu@color@cloak@front}
+(\pingu@name-bottom-center)++(-\pingu@x@cloak@padding-\pingu@w@half,-.5mm) arc (180:250:{\pingu@x@cloak@padding+\pingu@w@half} and \pingu@one) to[bend right=6]
+([xshift=1.3mm,yshift=.4mm]\pingu@name-wings-side-right) to[bend right=3] ([yshift=.65mm]\pingu@name-wings-side-right);
+\pingu@block[rounded corners=.7mm]{\pingu@color@cloak@front}
+(\pingu@name-bottom-center)++(\pingu@x@cloak@padding+\pingu@w@half,-.5mm) arc (0:-70:{\pingu@x@cloak@padding+\pingu@w@half} and \pingu@one) to[bend left=6]
+([xshift=-1.3mm,yshift=.4mm]\pingu@name-wings-side-left) to[bend left=3] ([yshift=.65mm]\pingu@name-wings-side-left);}
+
+% TODO: if flags to draw parts
+\def\pingu@draw@cloth@cloak{%
+\scope[rounded corners=.6\p@]
+ % wings
+ \if@pingu@x@cloak@wings
+ \edef\@la{\csname @pingu@wingdown@\@pingu@select@leftwing@ @\endcsname}
+ \ifnum\@la>0 % wing is going inverted up or down / \ => left
+ \pingu@layer{foreground}[]
+ \ifnum\@la>70
+ \pingu@block[right color=\pingu@color@cloak@front,left color=\pingu@color@cloak@wings]{\pingu@color@cloak@wings} (\pingu@name-wing-left-start)++(.5mm,-3.5mm) to[bend left=10] (\pingu@name-wing-left-low) to[bend right=13] (\pingu@name-wing-left-up) to[bend left=3] (\pingu@name-wing-left-start-up) to[bend left] ([xshift=.35mm,yshift=1mm]\pingu@name-wing-left-start);
+ \else % down
+ \pingu@block[right color=\pingu@color@cloak@front,left color=\pingu@color@cloak@wings]{\pingu@color@cloak@wings} (\pingu@name-wing-left-start)++(.5mm,-3.5mm) to[bend left=10] (\pingu@name-wing-left-low) to[bend right=13] (\pingu@name-wing-left-up) to[bend left=3] ([xshift=1mm,yshift=1mm]\pingu@name-wing-left-start-up) to[bend left=4.5] ([xshift=.5mm,yshift=-3.5mm]\pingu@name-wing-left-start);
+ \fi
+ \endpingu@layer
+ \else
+ \ifnum\@la<-90% normal up \ / => left side
+ \pingu@block[upper right=\pingu@color@cloak@wings,lower right=\pingu@color@cloak@front,lower left=\pingu@color@cloak@front,upper left=\pingu@color@cloak@front]{\pingu@color@cloak@wings} ([xshift=.25mm]\pingu@name-wing-left-start-low) to[bend right=14] (\pingu@name-wing-left-low) to[bend left=8] ([yshift=-.5mm]\pingu@name-wing-left-up) to[bend right=17] ([yshift=1.6mm]\pingu@name-wing-left-start-up) to[bend right=13] ([xshift=-.15mm,yshift=.15mm]\pingu@name-waist-left) -- cycle;
+ \else % normal and hugging down => right
+ \pingu@block[top color=\pingu@color@cloak@front,middle color=\pingu@color@cloak,bottom color=\pingu@color@cloak@wings]{\pingu@color@cloak@wings} plot[smooth] coordinates {([xshift=-1.38mm]\pingu@name-wings-side-left) (\pingu@name-wing-left-start-low) ([yshift=.65mm,xshift=-.65mm]\pingu@name-wing-left-low) ([yshift=.65mm,xshift=-.65mm]\pingu@name-wing-left-up) ([xshift=.68mm]\pingu@name-wings-side-left) ([xshift=-1.38mm]\pingu@name-wings-side-left)};
+ \fi
+ \fi
+ \edef\@ra{\csname @pingu@wingdown@\@pingu@select@rightwing@ @\endcsname}
+ \ifnum\@ra>0 % wing is going inverted up or down => right
+ \pingu@layer{foreground}[]
+ \ifnum\@ra>70
+ \pingu@block[left color=\pingu@color@cloak@front,middle color=\pingu@color@cloak@front,right color=\pingu@color@cloak@wings]{\pingu@color@cloak@wings} (\pingu@name-wing-right-start-low) to[bend right=10] (\pingu@name-wing-right-low) to[bend left=13] (\pingu@name-wing-right-up) to[bend right=3] (\pingu@name-wing-right-start-up) -- ++(-.25mm,0mm) to[bend right=11] cycle;
+ \else
+ \pingu@block[left color=\pingu@color@cloak@front,middle color=\pingu@color@cloak@front,right color=\pingu@color@cloak@wings]{\pingu@color@cloak@wings} ([xshift=1mm,yshift=-1mm]\pingu@name-wing-right-start-low) to[bend right=10] (\pingu@name-wing-right-low) to[bend left=13] (\pingu@name-wing-right-up) to[bend right=3] ([xshift=-1mm,yshift=1mm]\pingu@name-wing-right-start-up) to[bend right=4.5] ([xshift=-.5mm,yshift=-3.5mm]\pingu@name-wing-right-start);
+ \fi
+ \endpingu@layer
+ \else
+ \ifnum\@ra<-90% normal up => right side
+ \pingu@block[upper left=\pingu@color@cloak@wings,lower left=\pingu@color@cloak@front,lower right=\pingu@color@cloak@front,upper right=\pingu@color@cloak@front]{\pingu@color@cloak@wings} ([xshift=.25mm]\pingu@name-wing-right-start-low) to[bend left=14] (\pingu@name-wing-right-low) to[bend right=8] ([yshift=-.5mm]\pingu@name-wing-right-up) to[bend left=17] ([yshift=1.6mm]\pingu@name-wing-right-start-up) to[bend left=13] ([xshift=.15mm,yshift=.15mm]\pingu@name-waist-right) -- cycle;
+ \else % normal and hugging down => left
+ \pingu@block[top color=\pingu@color@cloak@front,middle color=\pingu@color@cloak@front,bottom color=\pingu@color@cloak@wings]{\pingu@color@cloak@wings} plot[smooth] coordinates {([xshift=1.38mm]\pingu@name-wings-side-right) (\pingu@name-wing-right-start-low) ([yshift=.85mm,xshift=-.35mm]\pingu@name-wing-right-low) ([yshift=.85mm,xshift=.35mm]\pingu@name-wing-right-up) ([xshift=-.68mm]\pingu@name-wings-side-right) ([xshift=1.38mm]\pingu@name-wings-side-right)};
+ \fi
+ \fi
+\fi
+ % cape
+ \pingu@block[rounded corners=.8mm]{\pingu@color@cloak@cap} ([xshift=.85mm,yshift=-2.75mm]\pingu@name-wing-left-start) to[bend left=4] ([xshift=-.45mm,yshift=-.65mm]\pingu@name-wings-side-left) to[bend right=3]
+ (\pingu@name-head)
+ to[bend right=3]
+ ([xshift=.4mm,yshift=-.65mm]\pingu@name-wings-side-right) [rounded corners=.15mm] to[bend left=3] ([xshift=-.85mm,yshift=-2.75mm]\pingu@name-wing-right-start)
+ to[bend left=8]
+ ([xshift=-.66mm]\pingu@name-wings-side-right)
+ [rounded corners=.15mm]
+ to[bend left=32] ++(\pingu@w@half+.66mm,\pingu@w@half+1.2\pingu@one)
+ to[bend left=32] ++(\pingu@w@half+.66mm,-\pingu@w@half-1.2\pingu@one)
+ to[bend left=8] cycle;
+\endscope
+}
+% #endregion
+
+% #region devil-lib
+\pingu@create@extra{devilhorns}{%
+ devilhorns/.forward to = /pingu/devil horns,
+ devil-horns/.forward to = /pingu/devil horns,
+ devil horns/.code = \pingu@set@extra{devilhorns}{true}\pingu@color{devilhorns}{#1},
+ devil horns/.default = pingu@purple,
+ devil horns b/.code = \pingu@color{devilhorns@b}{#1},
+ devilhorns b/.forward to = /pingu/devil horns b,
+ devil-horns b/.forward to = /pingu/devil horns b
+}{devil horns b=\pingu@color@devilhorns}
+
+\pgfmathsetmacro\pingu@devilhorns@baseang@l{90-360*(1-\pinguanglehl)}
+\pgfmathsetmacro\pingu@devilhorns@baseang@r{90-360*(1-\pinguanglehr)}
+\def\pingu@devilhorns@baseoff{12}
+\def\pingu@devilhorns@yshift{.65mm}
+\def\pingu@draw@ea@devilhorns{%
+ % 90 - 360*.06
+ \pingu@block{\pingu@color@devilhorns} ([yshift=-\pingu@devilhorns@yshift]\pingu@name-head-left) arc (\pingu@devilhorns@baseang@l:\pingu@devilhorns@baseang@l-\pingu@devilhorns@baseoff:\pingu@w@half{} and \pingu@head@h@half) coordinate (\pingu@name-devilhorns-left-goal) to[out=32,in=-32,looseness=.9] ++(.3mm,2.65mm) to[bend left=17] ([yshift=-\pingu@devilhorns@yshift]\pingu@name-head-left) -- cycle;
+ \pingu@block{\pingu@color@devilhorns} ([yshift=-\pingu@devilhorns@yshift]\pingu@name-head-left) to [bend right=38] (\pingu@name-devilhorns-left-goal) to[bend right=30] ([yshift=-\pingu@devilhorns@yshift]\pingu@name-head-left) -- cycle;
+ \pingu@block{\pingu@color@devilhorns@b} ([yshift=-\pingu@devilhorns@yshift]\pingu@name-head-right) arc (\pingu@devilhorns@baseang@r:\pingu@devilhorns@baseang@r+\pingu@devilhorns@baseoff:\pingu@w@half{} and \pingu@head@h@half) coordinate (\pingu@name-devilhorns-right-goal) to[out=148,in=-148,looseness=.9] ++(-.3mm,2.65mm) to[bend right=17] ([yshift=-\pingu@devilhorns@yshift]\pingu@name-head-right) -- cycle;
+ \pingu@block{\pingu@color@devilhorns@b} ([yshift=-\pingu@devilhorns@yshift]\pingu@name-head-right) to [bend left=38] (\pingu@name-devilhorns-right-goal) to[bend left=30] ([yshift=-\pingu@devilhorns@yshift]\pingu@name-head-right) -- cycle;
+}
+
+% wip hack
+\colorlet{pingu@devil@ring}{pingu@black}
+\def\pingu@devil@x@opacity{.75}
+\pingu@eyes@s{devil}{%
+\pingu@layer{foreground}[]
+ \pingu@block{pingu@devil@ring} ([yshift=.75mm,xshift=\pingu@eye@shift]\pingu@name-eye-back-left) coordinate (\pingu@name-eye-left) ellipse [x radius=.1535cm, y radius=.1575cm];
+ \pingu@block{\pingu@color@eye@second@left} ([yshift=.75mm,xshift=\pingu@eye@shift]\pingu@name-eye-back-left) coordinate (\pingu@name-eye-left) ellipse [x radius=.1325cm, y radius=.1375cm];
+ \fill[\pingu@color@eye@left,/pingu/@glow] (\pingu@name-eye-left) circle [radius=1.325mm];
+ \pingu@block[fill opacity=\pingu@devil@x@opacity]{\pingu@color@eye@left} (\pingu@name-eye-left)++(0,.36) to[bend right=58] ++(.36,-.36) to[bend right=58] ++(-.36,-.36) to[bend right=58] ++(-.36,.36) to[bend right=58] cycle;
+ \fill[/pingu/@glow,fill=\pingu@color@eye@left!20!pingu@yellow!15!pingu@white] (\pingu@name-eye-left)++(0,.10) to[bend right=60] ++(.10,-.10) to[bend right=60] ++(-.10,-.10) to[bend right=60] ++(-.10,.10) to[bend right=60] cycle;
+ \fill[\pingu@color@eye@left!20!pingu@yellow!7!pingu@white] (\pingu@name-eye-left) circle [radius=.5pt]; %
+ \pingu@block{pingu@white} (\pingu@name-eye-left) circle [radius=.15pt];
+\endpingu@layer
+}{%
+\pingu@layer{foreground}[]
+ \pingu@block{pingu@black} ([yshift=.75mm,xshift=-\pingu@eye@shift]\pingu@name-eye-back-right) coordinate (\pingu@name-eye-right) ellipse [x radius=.1535cm, y radius=.1575cm];
+ \pingu@block{\pingu@color@eye@second@right} ([yshift=.75mm,xshift=-\pingu@eye@shift]\pingu@name-eye-back-right) coordinate (\pingu@name-eye-right) ellipse [x radius=.1325cm, y radius=.1375cm];
+ \fill[\pingu@color@eye@right,/pingu/@glow] (\pingu@name-eye-right) circle [radius=1.325mm];
+ \pingu@block[fill opacity=.75]{\pingu@color@eye@right} (\pingu@name-eye-right)++(0,.36) to[bend right=58] ++(.36,-.36) to[bend right=58] ++(-.36,-.36) to[bend right=58] ++(-.36,.36) to[bend right=58] cycle;
+ \fill[/pingu/@glow,fill=\pingu@color@eye@right!20!pingu@yellow!15!pingu@white] (\pingu@name-eye-right)++(0,.10) to[bend right=60] ++(.10,-.10) to[bend right=60] ++(-.10,-.10) to[bend right=60] ++(-.10,.10) to[bend right=60] cycle;
+ \fill[\pingu@color@eye@right!20!pingu@yellow!7!pingu@white] (\pingu@name-eye-right) circle [radius=.5pt]; %
+ \pingu@block{pingu@white} (\pingu@name-eye-right) circle [radius=.15pt];
+\endpingu@layer
+}[pingu@purple]
+
+\pingu@create@wing@extra{devilfork}{%
+ devil fork \@lr/.code = {\pingu@set@extra{devilfork\@lr}{true}\pingu@color{devilfork\@lr}{##1}},
+ devil fork \@lr/.default = pingu@red,
+ devil fork \@lr\space second/.code= \pingu@color{devilfork\@lr @second}{##1},
+ devil fork \@lr\space length/.code =\expandafter\def\csname pingu@devilfork@\@lr @length\endcsname{##1}
+}{devil fork \@lr\space length=20mm,devil fork \@lr\space second=pingu@bronze!10!black}
+\def\pingu@draw@wi@devilfork#1{%
+ \pingu@setup@wing{devilfork}{#1}%
+\scope[rotate around={\@angle:(\pingu@name-wing-#1)}]
+ \pingu@block{\csname pingu@color@devilfork#1@second\endcsname} (\pingu@name-wing-#1)++(\@sidesign*-.2mm,-7mm) -- ++(0,\csname pingu@devilfork@#1@length\endcsname) arc(180:0:\@sidesign*.4mm and .3mm) coordinate[pos=.5] (\pingu@name-devilfork-#1-top) -- ++(0,-\csname pingu@devilfork@#1@length\endcsname) arc(360:180:\@sidesign*.4mm and .3mm) -- cycle;
+ \pingu@block{\@col} ([yshift=4mm]\pingu@name-devilfork-#1-top) to[out=240,in=90] ++(-.65mm,-4mm) to[out=180,in=-60] ++(-1mm,5.5mm) to[out=240,in=90] ++(-.65mm,-5.9mm) to[bend right] ++(4.4mm,0) to[out=90,in=-60] ++(-.65mm,5.9mm) to[out=240,in=0] ++(-1mm,-5.5mm) to[out=90,in=-60] cycle;
+\endscope
+}
+
+\pingu@create@extra{devilwings}{%
+ devilwings/.forward to = /pingu/devil wings,
+ devil-wings/.forward to = /pingu/devil wings,
+ devil wings/.code = \pingu@set@extra{devilwings}{true}\pingu@color{devilwings}{#1},
+ devil wings/.default = pingu@black,
+ devil wings b/.code = \pingu@color{devilwings@b}{#1},
+ devilwings b/.forward to = /pingu/devil wings b,
+ devil-wings b/.forward to = /pingu/devil wings b
+}{devil wings b=\pingu@color@devilwings}
+
+% taken over and adapted from the old penguins
+% lower wing based on https://tex.stackexchange.com/a/464828
+\def\@pingu@devilwings@lower@wing@code{(0,0.2) -- (0,1.4) -- (-2,1.4) .. controls (-4,0.8) .. (-4.3,0.2) .. controls (-4.48,0.08) .. (-4.5,-0.15) .. controls (-4.9,-0.5) and (-4.9,-0.7) .. (-4.7,-0.9) .. controls (-4.7,-1) .. (-4.6,-1.1) .. controls (-4.9,-1.8) .. (-4.2,-2) -- (-4,-2.4) .. controls (-4.1,-3) .. (-3.6,-3.1) -- (-3.25,-3.7) .. controls (-3.5,-4.5) .. (-4.1,-5.4) .. controls (-4.2,-5.9) and (-3.6,-5.9) .. (-3.5,-5.4) .. controls (-3.55,-5.1) and (-3.4,-4.8) .. (-3,-4.1) -- (-2.6,-4.1) .. controls (-2.35,-4.35) .. (-2,-4.2) .. controls (-1.75,-4.6) and (-1.25,-4.6) .. (-1.25,-3.90) .. controls (-0.9,-4) .. (-0.6,-2.8) -- (-0.3,-1) -- (0,0.2)}
+
+\def\pingu@draw@eb@devilwings{%
+\pgfonlayer{background}
+ \scope[scale=0.225,shift={(\pingu@name-head-back-con-right)}]
+ \pingu@block[thick,rounded corners=.75mm]{\pingu@color@devilwings} \@pingu@devilwings@lower@wing@code;
+ \pingu@block[thick]{\pingu@color@devilwings} (0,1) -- (0,2.2) [rounded corners=5mm] parabola[bend at end] (-6,6) -- (-5,1) -- (0,1);
+ \endscope
+ \scope[scale=0.225,shift={(\pingu@name-head-back-con-left)},xscale=-1]
+ \pingu@block[thick,rounded corners=0.75mm]{\pingu@color@devilwings@b} \@pingu@devilwings@lower@wing@code;
+ \pingu@block[thick]{\pingu@color@devilwings@b} (0,1) -- (0,2.2) [rounded corners=5mm] parabola[bend at end] (-6,6) -- (-5,1) -- (0,1);
+ \endscope
+\endpgfonlayer
+}
+% #endregion
+
+% #region emotions-lib
+\pingu@eyes@s{sad}{%
+ \path (\pingu@name-eye-back-left)++(\pingu@eye@shift,.75mm) coordinate (\pingu@name-eye-left);
+ \pingu@block{\pingu@color@eye@left} (\pingu@name-eye-left)++(15:.1225cm and .1275cm) arc (15:-245:.1225cm and .1275cm) to[out=-45,in=175] cycle;
+}{%
+ \path (\pingu@name-eye-back-right)++(-\pingu@eye@shift,.75mm) coordinate (\pingu@name-eye-right);
+ \pingu@block{\pingu@color@eye@right} (\pingu@name-eye-right)++(165:.1225cm and .1275cm) arc (165:425:.1225cm and .1275cm) to[out=225,in=5] cycle;
+}
+
+\pingu@eyes@s{angry}{%
+ \path (\pingu@name-eye-back-left)++(\pingu@eye@shift,.75mm) coordinate (\pingu@name-eye-left);
+ \pingu@block{\pingu@color@eye@left} (\pingu@name-eye-left) ellipse [x radius=.1225cm, y radius=.1275cm];
+ \pingu@block{\pingu@color@body@front} (\pingu@name-eye-left) ++(120:.1225cm and .1275cm) ellipse [x radius=1.5mm,y radius=.5mm];
+}{%
+ \path (\pingu@name-eye-back-right)++(-\pingu@eye@shift,.75mm) coordinate (\pingu@name-eye-right);
+ \pingu@block{\pingu@color@eye@right} (\pingu@name-eye-right) ellipse [x radius=.1225cm, y radius=.1275cm];
+ \pingu@block{\pingu@color@body@front} (\pingu@name-eye-right) ++(60:.1225cm and .1275cm) ellipse [x radius=1.5mm,y radius=.5mm];
+}
+
+\pingu@bill@s{angry}{%
+\pingu@block{\pingu@color@bill} (\pingu@name-bill)++(-.19cm,0)
+ to[out=-90,in=170] ++(1.9mm,-2.25mm) coordinate (\pingu@name-bill-bottom)
+ to[out=10,in=-90] ++(1.9mm,2.25mm)
+ to[bend right=.25cm] cycle;
+}
+
+\pingu@create@extra{blush}{%
+ blush/.code = \pingu@set@extra{blush}{true}\pingu@color{blush}{#1},
+ blush/.default = pingu@red,
+ blush second/.code = \pingu@color{blush@second}{#1},
+ blush opacity/.code = \def\pingu@x@blush@opacity{#1},
+}{blush opacity=.35,blush second=\pingu@color@blush}
+\def\pingu@draw@eb@blush{%
+ \pingu@block[/pingu/@glow,opacity=\pingu@x@blush@opacity]{\pingu@color@blush} ([yshift=-2.7mm,xshift=-1.85mm]\pingu@name-eye-right) ellipse [x radius=2.66mm,y radius=2.25mm];
+ \pingu@block[/pingu/@glow,opacity=\pingu@x@blush@opacity]{\pingu@color@blush@second} ([yshift=-2.7mm,xshift=1.85mm]\pingu@name-eye-left) ellipse [x radius=2.66mm,y radius=2.25mm];
+}
+
+\pingu@eyes@s{hearts}{%
+ \path (\pingu@name-eye-back-left)++(\pingu@eye@shift,.75mm) coordinate (\pingu@name-eye-left);
+ \pingu@block[rounded corners=0pt]{\pingu@color@eye@left} ([yshift=.3mm]\pingu@name-eye-left) arc(0:180:.065cm)
+ to[out=270,in=110] ++(.13cm,-.2cm) to[out=70,in=270] ++(.13cm,.2cm) arc (0:180:.065cm) -- cycle;
+}{%
+ \path (\pingu@name-eye-back-right)++(-\pingu@eye@shift,.75mm) coordinate (\pingu@name-eye-right);
+ \pingu@block{\pingu@color@eye@right} ([yshift=.3mm]\pingu@name-eye-right) arc(0:180:.065cm)
+ to[out=270,in=110] ++(.13cm,-.2cm) to[out=70,in=270] ++(.13cm,.2cm) arc (0:180:.065cm) -- cycle;
+}
+
+\pingu@eyes@s{critical}{%
+ \pingu@block{\pingu@color@eye@left} ([yshift=.75mm,xshift=\pingu@eye@shift]\pingu@name-eye-back-left) coordinate (\pingu@name-eye-left) ellipse [x radius=1.13mm, y radius=.145cm];
+ \pingu@draw[thick]{\pingu@color@eye@left} (\pingu@name-eye-left)++(45:1.35mm and 1.85mm) arc(45:135:1.35mm and 1.85mm);
+}{%
+ \pingu@block{\pingu@color@eye@right} ([yshift=.75mm,xshift=-\pingu@eye@shift]\pingu@name-eye-back-right) coordinate(\pingu@name-eye-right) ellipse [x radius=1.13mm, y radius=.145cm];
+ \pingu@draw[thick]{\pingu@color@eye@right} (\pingu@name-eye-right)++(45:1.35mm and 1.85mm) arc(45:135:1.35mm and 1.85mm);
+}
+% #endregion
+
+% #region flags-lib
+\pingu@create@wing@extra{flag}{%
+ flag \@lr/.code = {\pingu@set@extra{flag\@lr}{true}\pingu@color{flag\@lr}{##1}},
+ flag \@lr/.default = pingu@purple,
+ flag \@lr\space pole/.code = \pingu@color{flag\@lr @pole}{##1},
+ flag \@lr\space code/.code = \expandafter\def\csname pingu@flag@\@lr @code\endcsname{##1},
+ flag \@lr\space bobble/.code = {\pingu@color{flag\@lr @bobble}{##1}},
+ pride flag \@lr/.style = {%
+ /pingu/flag \@lr\space code = {%
+ \noexpand\node[/pingu/@flag@first,/pingu/@flag={{rgb:yellow,1;red,5;magenta,2;black,1}}{1.9mm}] (a) at (0,0) {};
+ \noexpand\node[below,/pingu/@flag={{rgb:yellow,5;red,5;green,1;white,1}}{1.9mm}] (b) at (a.south) {};
+ \noexpand\node[below,/pingu/@flag={yellow}{1.9mm}] (c) at (b.south) {};
+ \noexpand\node[below,/pingu/@flag={{rgb:blue,1;cyan,1;green,4;black,2}}{1.9mm}] (d) at (c.south) {};
+ \noexpand\node[below,/pingu/@flag={{rgb:magenta,3;blue,5;cyan,4;black,3}}{1.9mm}] (e) at (d.south) {};
+ \noexpand\node[below,/pingu/@flag={{rgb:red,2;magenta,2;blue,5}}{1.9mm}] (f) at (e.south) {};
+ }, /pingu/flag \@lr, /pingu/flag \@lr\space pole={##1}%
+ },%
+ @flag/.style 2 args={tape bend height=.5mm,shape=tape,minimum height=##2, minimum width=15mm,outer sep=\z@,inner sep=\z@,fill=##1,draw=##1,rotate=\noexpand\@angle},
+ pride flag \@lr/.default = pingu@bronze,%
+ german flag \@lr/.style = {%
+ /pingu/flag \@lr\space code = {%
+ \noexpand\node[/pingu/@flag@first,/pingu/@flag={black}{3.33mm}] (a) at (0,0) {};
+ \noexpand\node[below,/pingu/@flag={red}{3.33mm}] (b) at (a.south) {};
+ \noexpand\node[below,/pingu/@flag={yellow}{3.33mm}] (c) at (b.south) {};
+ }, /pingu/flag \@lr, /pingu/flag \@lr\space pole={##1}%
+ },%
+ german flag \@lr/.default = pingu@bronze%
+}{flag \@lr\space bobble=pingu@bronze, flag \@lr\space pole=pingu@bronze, flag \@lr\space code = {%
+ \noexpand\node[/pingu/@flag@first,/pingu/@flag={\noexpand\@col}{9.75mm}] (a) at (0,0) {};
+}}
+\def\pingu@draw@wi@flag#1{%
+ \pingu@setup@wing{flag}{#1}%
+\scope[rotate around={\@angle:(\pingu@name-wing-#1)}]
+ % NOTE: not full foreground if placed under the wing
+ \pingu@layer{foreground}[shift={(\pingu@name-wing-#1)},shift={(\@sidesign*.15mm,17.5mm-3.5\p@)}]
+ \if@pingu@wing@item@side@left@\pgfqkeys{/pingu}{@flag@first/.style={below right}}\else\pgfqkeys{/pingu}{@flag@first/.style={below left}}\fi
+ \csname pingu@flag@#1@code\endcsname
+ \pingu@block[thick]{\csname pingu@color@flag#1@pole\endcsname}(\pingu@name-wing-#1)++(\@sidesign*-.15mm,3mm) -- ++(0,13.65mm) -| ++(\@sidesign*.6mm,-13.65mm) -- cycle;
+ \endpingu@layer
+ \pingu@block[thick]{\csname pingu@color@flag#1@pole\endcsname}(\pingu@name-wing-#1)++(\@sidesign*-.15mm,-3mm) -- ++(0,20mm) arc(180:0:\@sidesign*.3mm and .375mm) -- ++(0,-20mm) arc(360:180:\@sidesign*.3mm and .375mm) -- cycle;
+ \pingu@block{\csname pingu@color@flag#1@bobble\endcsname} (\pingu@name-wing-#1)++(\@sidesign*.15mm,17.5mm) circle [radius=2.15\p@];
+\endscope
+}
+% #endregion
+
+% #region formal-lib
+\pingu@create@extra{tie}{%
+ tie/.code = \pingu@set@extra{tie}{true}\pingu@color{tie}{#1},
+ tie/.default = pingu@green,
+ tie knot/.code = \pingu@color{tie@knot}{#1},
+ tie length/.code = \def\pingu@x@tie@length{#1},
+ tie offset/.code = \def\pingu@x@tie@offset{#1},
+ tie width/.code = \def\pingu@x@tie@width{#1},
+ tie pattern/.code = \def\pingu@x@tie@pattern{#1},
+ tie dots/.style = {%
+ tie pattern={%
+ \pingu@block[postaction={pattern={Dots[angle=40,distance=1.5pt,radius=.35pt]},pattern color=#1}]{\pingu@color@tie} \pingupathxtie;
+ \pingu@block[postaction={pattern={Dots[angle=-30,distance=1.45pt,radius=.35pt@]},pattern color=#1}]{\pingu@color@tie@knot} \pingupathxtieknot;
+ }%
+ },
+ tie dots/.default={pingu@white}%
+}{% defaults
+ tie length=.625\pingu@side@h@half, tie offset=.399cm,%
+ tie knot=\pingu@color@tie!92!black, tie width=.21cm,%
+ tie pattern={%
+ \pingu@block{\pingu@color@tie} \pingupathxtie;
+ \pingu@block{\pingu@color@tie@knot} \pingupathxtieknot;
+ }%
+}
+\def\pingupathxtie{[rounded corners=.15mm] (\pingu@name-tie-start)++(-.4mm,-.25mm) -- ++(-\pingu@x@tie@width/2, -\pingu@x@tie@length+.125cm) -- ++(\pingu@x@tie@width/2+.4mm,-.125cm) -- ++(\pingu@x@tie@width/2+.4mm,.125cm) -- +(-\pingu@x@tie@width/2, \pingu@x@tie@length-.125cm) -- cycle}
+\def\pingupathxtieknot{[rounded corners=.25mm] (\pingu@name-tie-start)++(-.095cm-.02*\pingu@x@tie@width,\z@) -- ++(.3mm,-.15cm-.01*\pingu@x@tie@width) -- ++(.13cm+.04*\pingu@x@tie@width,\z@) -- ++(.3mm,.15cm+.01*\pingu@x@tie@width) -- cycle}
+\def\pingu@draw@eb@tie{%
+ \path (\pingu@name-bill)++(0,-\pingu@x@tie@offset) coordinate(\pingu@name-tie-start);
+ \pingu@x@tie@pattern
+}
+
+\pingu@create@extra{bowtie}{%
+ bowtie/.forward to = /pingu/bow tie,
+ bow-tie/.forward to = /pingu/bow tie,
+ bow tie/.code = \pingu@set@extra{bowtie}{true}\pingu@color{bowtie}{#1},
+ bow tie/.default = pingu@blue,
+ bow tie b/.code = \pingu@color{bowtie@b}{#1},
+ bowtie b/.forward to = /pingu/bow tie b,
+ bow-tie b/.forward to = /pingu/bow tie b,
+ bowtie offset/.forward to = /pingu/bow tie offset,
+ bow-tie offset/.forward to = /pingu/bow tie offset,
+ bow tie offset/.code = \def\pingu@x@bowtie@offset{#1},
+ bowtie knot/.forward to = /pingu/bow tie knot,
+ bow-tie knot/.forward to = /pingu/bow tie knot,
+ bow tie knot/.code = \pingu@color{bowtie@knot}{#1},
+}{% defaults
+ bow tie knot=\pingu@color@bowtie!92!black,bow tie offset=.315cm,%
+ bow tie b=\pingu@color@bowtie%
+}
+
+\def\pingupathxbowtieknot{[rounded corners=.25mm] (\pingu@name-bow-tie-start)++(-.0625cm,-.35mm) to[bend right=10] ++(.125cm,0) -- ++(0,-.13cm) to[bend right=10] ++(-.125cm, 0) -- cycle}
+\def\pingupathxbowtieleft{[rounded corners=.25mm] (\pingu@name-bow-tie-start)++(-.15mm,-.06cm) to[out=155,in=-5] ++(-.25cm,.065cm) to[bend right=15] ++(0,-.21cm) to[in=-155,out=5] ++(.25cm,.065cm) -- cycle}
+\def\pingupathxbowtieright{[rounded corners=.25mm] (\pingu@name-bow-tie-start)++(.15mm,-.06cm) to[out=25,in=-175] ++(.25cm,.065cm) to[bend left=15] ++(0,-.21cm) to[in=-25,out=175] ++(-.25cm,.065cm) -- cycle}
+\def\pingu@draw@eb@bowtie{%
+ \path (\pingu@name-bill)++(0,-\pingu@x@bowtie@offset) coordinate(\pingu@name-bow-tie-start);
+ \pingu@block{\pingu@color@bowtie} \pingupathxbowtieleft;
+ \pingu@block{\pingu@color@bowtie@b} \pingupathxbowtieright;
+ \pingu@block{\pingu@color@bowtie@knot} \pingupathxbowtieknot;
+}
+
+\newif\if@pingu@x@pants@bands
+\pingu@create@extra{pants}{%
+ pants/.code = \pingu@set@extra{pants}{true}\pingu@color{pants}{#1},
+ pants/.default = pingu@red,
+ pants bands/.is if = @pingu@x@pants@bands,
+ pants button left/.code = \pingu@color{pants@button@left}{#1},
+ pants button right/.code = \pingu@color{pants@button@right}{#1},
+ pants buttons/.style = {/pingu/pants button left={#1}, /pingu/pants button right={#1}},
+ pants button left shade/.code = \pingu@color{pants@button@left@shade}{#1},
+ pants button right shade/.code = \pingu@color{pants@button@right@shade}{#1},
+ pants buttons shade/.style = {/pingu/pants button left shade={#1}, /pingu/pants button right shade={#1}},
+ pants without buttons/.forward to=/pingu/pants no buttons,
+ pants no buttons/.style = {/pingu/pants buttons=\@pingu@none, /pingu/pants buttons shade=\@pingu@none},
+ pants extra height/.code = \def\pingu@x@pants@extra@height{#1},
+}{pants extra height=1.5mm,pants buttons=pingu@black,pants button left shade=\pingu@color@pants@button@left!70!white,pants button right shade=\pingu@color@pants@button@right!70!white}
+
+\def\pingu@draw@eb@pants{%
+\pingu@block[rounded corners=\p@]{\pingu@color@pants} ([xshift=.85mm,yshift=\pingu@x@pants@extra@height]\pingu@name-waist-right) coordinate(@tmp) to[bend right=6] ([xshift=-.85mm,yshift=\pingu@x@pants@extra@height]\pingu@name-waist-left) coordinate(@tmpb) -- ++(0,-\pingu@x@pants@extra@height) arc(180:270:.85mm and 2.25mm) to[bend left=\pingu@bend] (\pingu@name-bottom-center-|\pingu@name-waist-left) to[bend left=15] ([yshift=-.15mm]\pingu@name-bottom-center) to[bend left=15] (\pingu@name-bottom-center-|\pingu@name-waist-right) to[bend left=6] ([yshift=-2.5mm]\pingu@name-waist-right) arc (-90:0:.85mm and 2.25mm) -- cycle;
+\if@pingu@x@pants@bands
+\pingu@layer{middle}[]
+% draw stripes
+\scope
+\clip \pingu@path@lowerpingu;
+\pingu@block{\pingu@color@pants} (@tmp)++(.55mm,-\pingu@one) to[bend right=3] ([yshift=1.65mm]\pingu@name-wings-side-right) -- ++(-.25mm,-.25mm) to[bend left=3] ([yshift=-\pingu@one]@tmp) -- cycle;
+\pingu@block{\pingu@color@pants} (@tmpb)++(-.55mm,-\pingu@one) to[bend left=3] ([yshift=1.65mm]\pingu@name-wings-side-left) -- ++(.25mm,-.25mm) to[bend right=3] ([yshift=-\pingu@one]@tmpb) -- cycle;
+\endscope
\fi
+\pingu@block{\pingu@color@pants@button@right}(@tmp)++(.25mm,-.25mm)circle[radius=.7mm];
+\pingu@block{\pingu@color@pants@button@left}(@tmpb)++(-.25mm,-.25mm)circle[radius=.7mm];
+\pingu@block[even odd rule]{\pingu@color@pants@button@right@shade}(@tmp)++(.25mm,-.25mm)circle[radius=.7mm] circle[radius=.615mm];
+\pingu@block[even odd rule]{\pingu@color@pants@button@left@shade}(@tmpb)++(-.25mm,-.25mm)circle[radius=.7mm] circle[radius=.615mm];
+\@for\i:={0,90,180,270}\do{
+ \pingu@block{\pingu@color@pants@button@right@shade} (@tmp)++(.25mm,-.25mm)++(\i:.
+ 35mm) circle[radius=.1mm];
+ \pingu@block{\pingu@color@pants@button@left@shade} (@tmpb)++(-.25mm,-.25mm)++(\i:.35mm) circle[radius=.1mm];
+}%
+\if@pingu@x@pants@bands \endpingu@layer \fi
+}
+
+
+\pingu@create@extra{belt}{%
+ belt/.code = \pingu@set@extra{belt}{true}\pingu@color{belt}{#1},
+ belt/.default = pingu@bronze!80!black,
+ belt knot color/.code = \pingu@color{belt@knot}{#1}
+}{% defaults
+ belt knot color = pingu@silver
+}
+
+\def\pingu@draw@eb@belt@wh{1.25mm}
+\def\pingu@draw@eb@belt{%
+ \path ([yshift=-1.66mm/2]\pingu@name-waist-left) -- ([yshift=-1.66mm/2]\pingu@name-waist-right) coordinate[pos=.5] (\pingu@name @belt@center);
+ \pingu@block[rounded corners=.5pt]{\pingu@color@belt} (\pingu@name-waist-left) coordinate (@) to[bend left=5] (\pingu@name-waist-right) -- ++(0,-1.66mm) to[bend right=5] ([yshift=-1.66mm]@) -- cycle;
+ \pingu@block[rounded corners=1.5pt]{\pingu@color@belt@knot} ([xshift=-1mm,yshift=-.7mm-1.66mm/2]\pingu@name @belt@center) rectangle ++(2mm,2mm);
+}
+% #endregion
+
+% #region fun-lib
+\pingu@create@extra{cakehat}{%
+ cake-hat/.code = \pingu@set@extra{cakehat}{true}\pingu@color{cakehat}{#1},
+ cake-hat/.default = pingu@white!92!\pingu@color@cakehat@top,
+ cake-hat top/.code = \pingu@color{cakehat@top}{#1},
+ cake-hat shade/.code = \pingu@color{cakehat@shade}{#1},
+ cake-hat candle/.code = \pingu@color{cakehat@candle}{#1},
+ cake-hat candle fire/.code = \pingu@color{cakehat@candle@fire}{#1},
+ cake-hat candle fire 2/.code = \pingu@color{cakehat@candle@fire@b}{#1},
+ cake-hat candle fire 3/.code = \pingu@color{cakehat@candle@fire@c}{#1},
+ cake-hat candle wick/.code = \pingu@color{cakehat@candle@wick}{#1},
+ cake-hat candle shade/.code = \pingu@color{cakehat@candle@shade}{#1},
+ cake-hat candle back/.code = \pingu@color{cakehat@candle@back}{#1},
+ cake-hat outline/.code = \pingu@color{cakehat@outline}{#1},
+ cake-hat outline width/.code = \def\pingu@x@cakehat@outline@w{#1},
+ cake-hat position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@cakehat@angle{#1}\def\pingu@x@cakehat@xshift{#2}\def\pingu@x@cakehat@yshift{#3}\def\pingu@x@cakehat@scale{#4}}
+}{cake-hat position={-9:(1mm,0mm)1},cake-hat outline=pingu@black!80!\pingu@color@cakehat,cake-hat outline width=.25pt,cake-hat top=pingu@purple,cake-hat candle=pingu@purple!60!pingu@black,cake-hat candle back=\pingu@color@cakehat@candle!85!black,cake-hat candle wick=pingu@black,cake-hat candle fire=pingu@red,cake-hat candle fire 2=\pingu@color@cakehat@candle@fire!50!yellow,cake-hat candle fire 3=\pingu@color@cakehat@candle@fire@b!50!white,cake-hat shade=gray,cake-hat candle shade=gray!80!\pingu@color@cakehat@candle@back}
+
+\def\pingu@p@cake@outline{(-6.25mm,-.25cm) to[bend left=2] (\pingu@name-cake-tl) arc (180:0:1.375cm/2+.01mm and 1.41mm) to[bend left=2] ++(0,-3.125mm*.97) to[bend left=20] (-6mm,-.26cm) -- cycle}
+\def\pingu@draw@ea@cakehat{%
+\scope[rotate around={\pingu@x@cakehat@angle:(\pingu@name-head-top)},%
+shift={(\pingu@name-head-top)},
+shift={(\pingu@x@cakehat@xshift,\pingu@x@cakehat@yshift)},
+scale=\pingu@x@cakehat@scale]
+ \pingu@block{\pingu@color@cakehat} [rounded corners=.2mm](-6.25mm,-.25cm) to[bend left=2] coordinate[pos=.97] (\pingu@name-cake-tl) ++(0,3.125mm) to[bend right=20]
+ ++(1.375cm,0) to[bend left=2] coordinate[pos=.03] (\pingu@name-cake-tr) ++(0,-3.125mm) to[bend left=20] (-6mm,-.26cm) -- cycle;
+ \pingu@block[fill opacity=.1]{\pingu@color@cakehat@shade} [rounded corners=.2mm](-6.25mm,-.25cm) to[bend right=20]
+ ++(1.375cm,0) to[bend right=2] ++(0,3.125mm) [sharp corners] to[bend left=20] (-6.25mm,-.225cm) [rounded corners=.2mm] -- cycle;
+ \path (\pingu@name-cake-tl) -- (\pingu@name-cake-tr) coordinate[pos=.5] (\pingu@name-cake-tc);
+ % cake side
+ \scope
+ \clip\pingu@p@cake@outline;
+ \path (\pingu@name-cake-tl) arc (180:360:1.375cm/2+.01mm and 1.41mm) foreach[count=\i] \a in {0,.19,.295,.375,.485,.625,.72,.85,1} {coordinate[pos=\a] (\pingu@name-cake-\i)};
+ \pingu@block{\pingu@color@cakehat@top} (\pingu@name-cake-1) ellipse [x radius=.255mm,y radius=2mm];
+ \pingu@block{\pingu@color@cakehat@top} (\pingu@name-cake-9) ellipse [x radius=.265mm,y radius=1.45mm];
+ \foreach \i in {2,...,9} {
+ \pgfmathsetmacro\@tmprand{rand}
+ \pingu@draw[opacity=.5]{gray} (\pingu@name-cake-\i)++(-.02mm,0) to[bend left=1] ++(+.145mm,{-1.075mm-(\@tmprand+.15)*.5125mm}) arc(370:300:.145mm);
+ \pingu@block{\pingu@color@cakehat@top} (\pingu@name-cake-\i)++(0,.1mm) -- ++(-.125mm,0) to[bend left=1] ++(0,{-1.2mm-(\@tmprand+.15)*.5125mm}) arc(170:370:.145mm) to[bend right=1] cycle;
+ }
+ \foreach \i in {2,...,9} {
+ \ifnum\i=2\relax
+ \pingu@block{\pingu@color@cakehat@top} (\pingu@name-cake-\the\numexpr\i-1\relax)++(-.05mm,-.5mm) to[bend left=8] ([xshift=-.05mm,yshift=-.25mm]\pingu@name-cake-\i) -- ++(0,.33mm) to[bend right=30] (\pingu@name-cake-\the\numexpr\i-1\relax);
+ \else\ifnum\i=9\relax
+ \pingu@block{\pingu@color@cakehat@top} (\pingu@name-cake-\the\numexpr\i-1\relax)++(-.05mm,-.25mm) to[bend left=8] ([xshift=-.05mm,yshift=-.5mm]\pingu@name-cake-\i) -- ++(0,.33mm) to[bend right=30] (\pingu@name-cake-\the\numexpr\i-1\relax);
+ \else
+ \pingu@block{\pingu@color@cakehat@top} (\pingu@name-cake-\the\numexpr\i-1\relax)++(-.05mm,-.25mm) to[bend left=9.5+2*rand] ([xshift=-.05mm,yshift=-.25mm]\pingu@name-cake-\i) -- ++(0,.33mm) to[bend right=30] (\pingu@name-cake-\the\numexpr\i-1\relax);
+ \fi\fi
+ }
+ \endscope
+ \pingu@block{\pingu@color@cakehat@top} (\pingu@name-cake-tc) ellipse [x radius=1.375cm/2+.01mm, y radius=1.41mm];
+ % outline
+ \pingu@draw[line width=\pingu@x@cakehat@outline@w,rounded corners=.075mm]{\pingu@color@cakehat@outline} \pingu@p@cake@outline;
+% % 3d sides
+% \pingu@block[rounded corners=.04mm]{\pingu@color@cakehat@top} ([xshift=.1mm,yshift=.125mm]\pingu@name-cake-tl) to[out=246,in=97] ++(-.11mm,-2.125mm) -- ++(.04mm,0) to[bend right=12] (\pingu@name-cake-ttl) -- cycle;
+% \pingu@block[rounded corners=.09mm]{green} ([xshift=-.1mm]\pingu@name-cake-ttr) to[out=294,in=83] ++(.125mm,-2.125mm) to[bend left=12] ([xshift=-.11mm,yshift=.125mm]\pingu@name-cake-tr) -- cycle;
+ % candle
+ \pingu@block{\pingu@color@cakehat@candle@back} (\pingu@name-cake-tc)++(.8mm,2.66mm) to[bend right=7] ++(-1.1mm,-.1mm) to[bend right=30]++(1.1mm,0) -- cycle;
+ % wick
+ \pingu@draw[very thin]{\pingu@color@cakehat@candle@wick} (\pingu@name-cake-tc)++(.25mm,2mm) to[out=75,in=-95] coordinate[pos=.8] (\pingu@name-wick-1) ++(0,1mm) coordinate(\pingu@name-wick-top);
+ \pingu@block{\pingu@color@cakehat@candle@fire} (\pingu@name-wick-1)++(-.045mm,0) to[out=115,in=240] ++(0,1.5mm) to[out=300,in=65] ([xshift=.045mm]\pingu@name-wick-1) -- cycle;
+ \pingu@block{\pingu@color@cakehat@candle@fire@b} (\pingu@name-wick-1)++(-.045mm,0) to[out=105,in=240] ++(0,1.3mm) to[out=300,in=75] ([xshift=.045mm]\pingu@name-wick-1) -- cycle;
+ \pingu@block{\pingu@color@cakehat@candle@fire@c} (\pingu@name-wick-1)++(-.035mm,0) to[out=95,in=250] ++(0,1.1mm) to[out=290,in=85] ([xshift=.035mm]\pingu@name-wick-1) -- cycle;
+ % front
+ \pingu@block{\pingu@color@cakehat@candle} (\pingu@name-cake-tc)++(.25mm,0) ++(.55mm,0) to[bend left=0.5] ++(0,2.66mm) to[bend left=20] ++(-1.1mm,-.1mm) to[bend right=0.5] ++(0,-2.66mm) to[bend right=20] cycle;
+ \pingu@block[fill opacity=.125]{\pingu@color@cakehat@candle@shade} (\pingu@name-cake-tc)++(-.3mm,-.1mm) to[bend right=20] ++(1.1mm,0) to[bend left=.5] ++(0,2.66mm) to[bend left=15] ++(-1.1mm,-2.5mm) -- cycle;
+ \pingu@block[fill opacity=.225]{\pingu@color@cakehat@candle@shade} (\pingu@name-cake-tc)++(-.3mm,-.1mm) to[bend left=2] ++(1.1mm,-1.1mm) to[bend left=5] ++(1.1mm,0) to[bend left=2] ++(-1.1mm,1.2mm) to[bend left =15] cycle;
+ \pingu@block[fill opacity=.225]{\pingu@color@cakehat@candle@shade} (\pingu@name-cake-tc)++(1.35mm,-1.25mm) circle [radius=.1mm];
+\endscope
+}
+\pingu@create@extra{pumpkinhat}{%
+ pumpkin-hat/.code = \pingu@set@extra{pumpkinhat}{true}\pingu@color{pumpkinhat}{#1},
+ pumpkin-hat/.default = pingu@bronze!97!white,
+ pumpkin-hat stalk/.code = \pingu@color{pumpkinhat@stalk}{#1},
+ pumpkin-hat stalk top/.code = \pingu@color{pumpkinhat@stalk@top}{#1},
+ pumpkin-hat stripe a/.code = \pingu@color{pumpkinhat@stripe@a}{#1},
+ pumpkin-hat stripe b/.code = \pingu@color{pumpkinhat@stripe@b}{#1},
+ pumpkin-hat stripe c/.code = \pingu@color{pumpkinhat@stripe@c}{#1},
+ pumpkin-hat outline/.code = \pingu@color{pumpkinhat@outline}{#1},
+ pumpkin-hat outline width/.code = \def\pingu@x@pumpkinhat@outline@w{#1},
+ pumpkin-hat position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@pumpkinhat@angle{#1}\def\pingu@x@pumpkinhat@xshift{#2}\def\pingu@x@pumpkinhat@yshift{#3}\def\pingu@x@pumpkinhat@scale{#4}}
+}{pumpkin-hat position={-9:(1.65mm,.25mm)1.05},pumpkin-hat stalk=pingu@green!95!\pingu@color@pumpkinhat!45!pingu@black,pumpkin-hat stalk top=\pingu@color@pumpkinhat@stalk!95!pingu@black,pumpkin-hat stripe a=pingu@black,pumpkin-hat stripe b=\pingu@color@pumpkinhat@stripe@a,pumpkin-hat stripe c=\pingu@color@pumpkinhat@stripe@b,pumpkin-hat outline=pingu@black,pumpkin-hat outline width=.7pt}
+
+\def\pingu@pumpkinhat@outerpath{(0,.125cm)++(-60:6.75mm and 5.5mm) arc(-60:86: 6.75mm and 5.5mm) to[bend left=3] ++(-1.75mm,0) arc(95:242:6.75mm and 5.5mm) to[bend left=5] cycle;}
+\def\pingu@draw@ea@pumpkinhat{%
+\scope[rotate around={\pingu@x@pumpkinhat@angle:(\pingu@name-head-top)},%
+shift={(\pingu@name-head-top)},
+shift={(\pingu@x@pumpkinhat@xshift,\pingu@x@pumpkinhat@yshift)},
+scale=\pingu@x@pumpkinhat@scale]
+ % give it a small cut
+ \pingu@block{\pingu@color@pumpkinhat} (0,.125cm)++(-60:6.75mm and 5.5mm) coordinate (@pkll) arc(-60:86: 6.75mm and 5.5mm) coordinate (@pkl) to[bend left=3] coordinate[pos=.5] (@pkuc) ++(-1.75mm,0) coordinate (@pkr) arc(95:242:6.75mm and 5.5mm) coordinate (@pklr) to[bend left=5] coordinate[pos=.5] (@pklc) cycle;
+ \pingu@draw[line join=round,line width=\pingu@x@pumpkinhat@outline@w]{\pingu@color@pumpkinhat@outline} \pingu@pumpkinhat@outerpath;
+\scope
+\clip (0,.125cm)++(-60:6.75mm and 5.5mm) coordinate (@pkll) arc(-60:86: 6.75mm and 5.5mm) coordinate (@pkl) to[bend left=3] ++(-1.75mm,0) coordinate (@pkr) arc(95:242:6.75mm and 5.5mm) coordinate (@pklr) to[bend left=5] cycle;
+ \pingu@draw[line cap=round,opacity=.3]{\pingu@color@pumpkinhat@stripe@a} (@pklr) to[bend left=55] (@pkr);
+ \pingu@draw[line cap=round,opacity=.3]{\pingu@color@pumpkinhat@stripe@c} (@pkll) to[bend right=55] (@pkl);
+ \pingu@draw[line cap=round,opacity=.3]{\pingu@color@pumpkinhat@stripe@b} (@pklc) to[bend right=5] (@pkuc);
+\endscope
+\pingu@block{\pingu@color@pumpkinhat@stalk} ([yshift=-.5*\pingu@x@pumpkinhat@outline@w]@pkl) to[bend left=3] ([yshift=-.5*\pingu@x@pumpkinhat@outline@w]@pkr) to[bend right=8] ++(.85mm,2mm) -- ++(.65mm,0) coordinate[pos=.5] (@pkc) to[bend right=3] cycle;
+\pingu@block{\pingu@color@pumpkinhat@stalk@top} (@pkc) ellipse[x radius=.65mm/2, y radius=.085mm];
+\endscope
}
-\def\pinguloadlibrary#1{\edef\tmp@list{#1}\@for\tmp@elem:=\tmp@list\do{\ifx\tmp@elem\@empty\else\pingu@loadlibrary{\tmp@elem}\fi}}
-\let\pinguloadlibraries\pinguloadlibrary
-
-\pingu@dummy@lib{shirts}{shirt,second shirt}
-\pingu@dummy@lib{glasses}{glasses,glasses round,monocle left,monocle right}
-\pingu@dummy@lib{medieval}{rook,crown,princess crown}
-\pingu@dummy@lib{cloak}{cloak,cape}
-\pingu@dummy@lib{christmas}{santa hat,santa beard,wool hat,deer hat,present left, present right,snowball left, snowball right}
-\pingu@dummy@lib{science-fiction}{lightsaber left,lightsaber right}
-\pingu@dummy@lib{fun}{cake-hat,pumpkin-hat,lollipop left,lollipop right,vampire teeth,broom left,broom right,jack o lantern,jack o lantern helmet,hammer left, hammer right,plank left, plank right,magnifier left, magnifier right}
-\pingu@dummy@lib{technology}{vr-headset,headphone,vr-controller left,vr-controller right,laptop left,laptop right}
-\pingu@dummy@lib{flags}{flag left,flag right}
-\pingu@dummy@lib{hats}{strawhat,hat,cap,construction helmet,conical hat,witch hat,mitra}
-\pingu@dummy@lib{sport}{head band,medal}
-\pingu@dummy@lib{formal}{tie,bow tie,pants,belt}
-\pingu@dummy@lib{signs}{sign post left,sign post right}
-\pingu@dummy@lib{devil}{devil horns,devil wings,devil fork left,devil fork right,eyes devil,left eye devil,right eye devil}
-\pingu@dummy@selector{devil}{lefteye}{devil}
-\pingu@dummy@selector{devil}{righteye}{devil}
-\pingu@dummy@lib{safe}{mask}
-\pingu@dummy@lib{magic}{hand cast left,hand cast right}
-\pingu@dummy@lib{movement}{}% register the lib
-\pingu@dummy@selector{movement}{bodytype}{tilt-right,tilt-left}
-\pingu@dummy@lib{emotions}{eyes sad,left eye sad,right eye sad,eyes angry,left eye angry,right eye angry,eyes hearts,left eye heart,right eye hearts,bill angry,blush,eyes critical,left eye critical,right eye critical}
-\pingu@dummy@selector{emotions}{lefteye}{sad,angry,hearts}
-\pingu@dummy@selector{emotions}{righteye}{sad,angry,hearts}
-
-\pingu@dummy@lib{horse}{horse left,horse right,on horse,horse behind}
-\pingu@dummy@lib{bee}{bee}
-
-\ifpengu@setup@bare@\else
-\pinguloadlibraries{\pingu@@defaultlibs}
+
+\pingu@create@wing@extra{lollipop}{%
+ lollipop \@lr/.code = {\pingu@set@extra{lollipop\@lr}{true}\pingu@color{lollipop\@lr}{##1}},
+ lollipop \@lr/.default = pingu@green,
+ lollipop \@lr\space handle/.code = \pingu@color{lollipop\@lr @handle}{##1},%
+ lollipop \@lr\space second/.code = \pingu@color{lollipop\@lr @second}{##1}%
+}{lollipop \@lr\space handle=pingu@bronze,lollipop \@lr\space second={\csname pingu@color@lollipop\@lr\endcsname!86!white}}
+
+% #1 wing
+\def\pingu@draw@wi@lollipop#1{%
+ \pingu@setup@wing{lollipop}{#1}%
+ \pingu@draw[thick,rotate around={\@angle:(\pingu@name-wing-#1)}]{\csname pingu@color@lollipop#1@handle\endcsname}(\pingu@name-wing-#1)++(0,4.75mm) -- ++(0,-6.25mm);
+ \pingu@block[thick,rotate around={\@angle:(\pingu@name-wing-#1)}]{\@col}(\pingu@name-wing-#1)++(0,4.75mm) coordinate (\pingu@name-lollipop-#1-top) circle[radius=1.4mm];
+ \pingu@block[thick,rotate around={\@angle-1:(\pingu@name-lollipop-#1-top)}]{\csname pingu@color@lollipop#1@second\endcsname} (\pingu@name-lollipop-#1-top) ellipse [x radius=1.57mm, y radius=1.5\p@];
+ \pingu@block[thick,rotate around={\@angle-1:(\pingu@name-lollipop-#1-top)}]{\@col} (\pingu@name-lollipop-#1-top)++(0,.5\p@) ellipse [x radius=1.4mm, y radius=\p@];
+}
+
+\pingu@create@extra{heart}{%
+ heart/.code = {\pingu@set@extra{heart}{true}\pingu@color{heart}{#1}},
+ heart/.default = lightgray
+}{}
+
+\def\pingu@draw@eb@heart{%
+ \pingu@block[sharp corners]{\pingu@color@heart}
+ ([yshift=1mm]\pingu@name-belly-center) arc(0:180:.13cm)
+ to[out=270,in=110] ++(.26cm,-.36cm) to[out=70,in=270] ++(.26cm,.36cm) arc (0:180:.13cm) -- cycle;
+}
+
+\pingu@create@extra{vampireteeth}{%
+ vampire teeth/.code = {\pingu@set@extra{vampireteeth}{true}\pingu@color{vampireteeth}{#1}},
+ vampire teeth/.default = pingu@yellow!10!pingu@black!70!lightgray
+}{}
+
+\def\pingu@draw@eb@vampireteeth{%
+ \pingu@block{\pingu@color@vampireteeth} (\pingu@name-bill) ++(-1.35mm,-2.5mm)
+ arc(180:0:1.35mm and 2.5mm)
+ arc(0:180:1.35mm and .95mm);
+}
+
+\pingu@create@wing@extra{broom}{%
+ broom \@lr/.code = {\pingu@set@extra{broom\@lr}{true}\pingu@color{broom\@lr}{##1}},
+ broom \@lr/.default = pingu@bronze,
+ broom \@lr\space length/.code = \expandafter\def\csname pingu@broom@\@lr @length\endcsname{##1},
+ broom \@lr\space shift/.code = \expandafter\def\csname pingu@broom@\@lr @shift\endcsname{##1},
+ broom \@lr\space band/.code = \pingu@color{broom@\@lr @band}{##1},
+ broom \@lr\space bristles a/.code = \pingu@color{broom@\@lr @bristles@a}{##1},
+ broom \@lr\space bristles b/.code = \pingu@color{broom@\@lr @bristles@b}{##1},
+ broom \@lr\space bristles c/.code = \pingu@color{broom@\@lr @bristles@c}{##1},
+}{broom \@lr\space length=22mm,broom \@lr\space shift=8mm, broom \@lr\space band=pingu@red!80!pingu@black!80!pingu@bronze, broom \@lr\space bristles a=pingu@bronze!16!pingu@yellow!41!pingu@white!80!brown!95!\csname pingu@color@broom\@lr\endcsname, broom \@lr\space bristles b=\csname pingu@color@broom@\@lr @bristles@a\endcsname!83!pingu@white, broom \@lr\space bristles c=\csname pingu@color@broom@\@lr @bristles@b\endcsname!83!pingu@white}
+\def\pingu@draw@wi@broom#1{%
+ \pingu@setup@wing{broom}{#1}%
+ % TODO: mirror on other wing?
+\scope[rotate around={\@angle:(\pingu@name-wing-#1)}]
+ \pingu@block{\csname pingu@color@broom#1\endcsname}(\pingu@name-wing-#1)++(\@sidesign*-.2mm,-\csname pingu@broom@#1@shift\endcsname) -- ++(0,\csname pingu@broom@#1@length\endcsname) arc(180:0:\@sidesign*.4mm and .3mm) coordinate[pos=.5] (\pingu@name-broom-#1-top) -- ++(0,-\csname pingu@broom@#1@length\endcsname) arc(360:180:\@sidesign*.4mm and .3mm) -- cycle;
+ \pingu@block[rounded corners=.44pt]{\csname pingu@color@broom@#1@bristles@a\endcsname} (\pingu@name-broom-#1-top)++(-1mm,-2mm) to[out=115,in=240] ++(1mm,10.5mm) to[out=300,in=65] ([xshift=.95mm,yshift=-2mm]\pingu@name-broom-#1-top) to[bend right=4] ([xshift=-.75mm,yshift=-2mm]\pingu@name-broom-#1-top) -- cycle;
+ \pingu@block[rounded corners=.44pt]{\csname pingu@color@broom@#1@bristles@a\endcsname} (\pingu@name-broom-#1-top)++(-1mm,-2mm) to[out=115,in=240] ++(1.66mm,9.75mm) to[out=300,in=65] coordinate[pos=.81] (@l) coordinate[pos=.79] (@l2) ([xshift=.95mm,yshift=-2mm]\pingu@name-broom-#1-top) to[bend right=4] ([xshift=-.75mm,yshift=-2mm]\pingu@name-broom-#1-top) -- cycle;
+ \pingu@block[rounded corners=.44pt]{\csname pingu@color@broom@#1@bristles@a\endcsname} (\pingu@name-broom-#1-top)++(-1mm,-2mm) to[out=115,in=240] coordinate[pos=.17] (@r) coordinate[pos=.19] (@r2) ++(.25mm,10.5mm) to[out=300,in=65] ([xshift=.95mm,yshift=-2mm]\pingu@name-broom-#1-top) to[bend right=4] ([xshift=-.75mm,yshift=-2mm]\pingu@name-broom-#1-top) -- cycle;
+ \pingu@block[rounded corners=.44pt]{\csname pingu@color@broom@#1@bristles@b\endcsname} (\pingu@name-broom-#1-top)++(-.75mm,-1.75mm) to[out=115,in=240] ++(1.35mm,9.25mm) to[out=300,in=65] ([xshift=.75mm,yshift=-1.75mm]\pingu@name-broom-#1-top) -- cycle;
+ \pingu@block[rounded corners=.44pt]{\csname pingu@color@broom@#1@bristles@b\endcsname} (\pingu@name-broom-#1-top)++(-.75mm,-1.75mm) to[out=115,in=240] ++(0mm,9.65mm) to[out=300,in=65] ([xshift=.75mm,yshift=-1.75mm]\pingu@name-broom-#1-top) -- cycle;
+ \pingu@block{\csname pingu@color@broom@#1@bristles@c\endcsname} (\pingu@name-broom-#1-top)++(-.5mm,-1.5mm) to[out=115,in=240] ++(.5mm,9.5mm) to[out=300,in=65] ([xshift=.5mm,yshift=-1.5mm]\pingu@name-broom-#1-top) -- cycle;
+ % TODO: broom cap color etc
+ \pingu@block{\csname pingu@color@broom@#1@band\endcsname} (@r) to[bend right=10] (@l) -- (@l2) to[bend left=10] (@r2);
+\endscope
+}
+
+\tikzset{pingu@clip even odd rule/.code={\pgfseteorule}, % Credit to Andrew Stacey
+pingu@invclip/.style={
+ clip,insert path=
+ [pingu@clip even odd rule]{
+ [reset cm](-\maxdimen,-\maxdimen)rectangle(\maxdimen,\maxdimen)
+ }
+}}
+\pingu@create@extra{jackolantern}{%
+ jack o lantern/.code = \pingu@set@extra{jackolantern}{true}\pingu@color{jackolantern}{#1},
+ jack o lantern/.default = pingu@bronze!97!pingu@black,
+ jack o lantern helmet/.style = {jack o lantern=#1,jack o lantern background=none,jack o lantern position={-2.15:(2.05mm,-11.35mm){1.5}},jack o lantern back stripe a=\@pingu@none, jack o lantern back stripe b=\@pingu@none,jack o lantern back stripe c=\@pingu@none,jack o lantern height=6.25mm,jack o lantern width=6.1mm,hair=\@pingu@none},
+ jack o lantern helmet/.default = pingu@bronze!97!pingu@black,
+ jack o lantern stalk/.code = \pingu@color{jackolantern@stalk}{#1},
+ jack o lantern stalk top/.code = \pingu@color{jackolantern@stalk@top}{#1},
+ jack o lantern background/.code= \pingu@color{jackolantern@background}{#1},
+ jack o lantern stripe a/.code = \pingu@color{jackolantern@stripe@a}{#1},
+ jack o lantern stripe b/.code = \pingu@color{jackolantern@stripe@b}{#1},
+ jack o lantern stripe c/.code = \pingu@color{jackolantern@stripe@c}{#1},
+ jack o lantern back stripe a/.code = \pingu@color{jackolantern@backstripe@a}{#1},
+ jack o lantern back stripe b/.code = \pingu@color{jackolantern@backstripe@b}{#1},
+ jack o lantern back stripe c/.code = \pingu@color{jackolantern@backstripe@c}{#1},
+ jack o lantern outline/.code = \pingu@color{jackolantern@outline}{#1},
+ jack o lantern outline width/.code = \def\pingu@x@jackolantern@outline@w{#1},
+ jack o lantern height/.code = \def\pingu@x@jackolantern@height{#1},
+ jack o lantern width/.code = \def\pingu@x@jackolantern@width{#1},
+ jack o lantern position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@jackolantern@angle{#1}\def\pingu@x@jackolantern@xshift{#2}\def\pingu@x@jackolantern@yshift{#3}\def\pingu@x@jackolantern@scale{#4}}
+}{jack o lantern position={-9:(3.15mm,.95mm){1.3}},jack o lantern stripe a=pingu@black,jack o lantern stripe b=\pingu@color@jackolantern@stripe@a,jack o lantern stripe c=\pingu@color@jackolantern@stripe@b,jack o lantern back stripe a=pingu@black,jack o lantern back stripe b=\pingu@color@jackolantern@stripe@a,jack o lantern back stripe c=\pingu@color@jackolantern@stripe@b,jack o lantern outline=pingu@black,jack o lantern outline width=.7pt,jack o lantern stalk=pingu@green!95!\pingu@color@jackolantern!45!pingu@black,jack o lantern stalk top=\pingu@color@jackolantern@stalk!95!pingu@black,jack o lantern background=\pingu@color@jackolantern!85!pingu@black,jack o lantern height=5.5mm,jack o lantern width=5.75mm}
+
+\def\pingu@jackolantern@outerpath{(0,.125cm)++(-60:{\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) arc(-60:86:{\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) to[bend right=3] ++(-3.75mm,0) arc(95:242:{\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) to[bend left=5] cycle;}
+\def\pingu@x@jackolantern{(-5.15mm,.6mm) to[bend right] ++(1.5mm,-.5mm) -- ++(.33mm,.33mm) to[bend right=10] ++(1.5mm,0) -- ++(.66mm,-.75mm) -- ++(.66mm,.75mm) to[bend right=10] ++(1.5mm,0) -- ++(.33mm,-.33mm) to[bend right] ++(1.5mm,.5mm) to[bend left] ++(-1.5mm,-2.15mm) to[bend left=10] ++(-.33mm,.33mm) to[bend left=10] ++(-1.5mm,0) -- ++(-.66mm,-.5mm) -- ++(-.66mm,.5mm) to[bend left=10] ++(-1.5mm,0) -- ++(-.33mm,-.33mm) to[bend left] cycle}
+
+\def\pingu@x@jackolantern@eye@left{(0.9mm,2mm) -- ++(2mm,-.15mm) to[bend right=40] ++(-.5mm,2mm) -- cycle}
+\def\pingu@x@jackolantern@eye@right{(-3mm,2mm) -- ++(-2mm,-.15mm) to[bend left=40] ++(.5mm,2mm) -- cycle}
+\def\pingu@x@jackolantern@nose{(0.965mm*0.5-3.225mm*0.5,1mm) -- ++(1mm,1.2mm) to[bend right=10] ++(-2mm,0) -- cycle}
+
+\def\pingu@draw@ea@jackolantern{%
+\scope[rotate around={\pingu@x@jackolantern@angle:(\pingu@name-head-top)},%
+shift={(\pingu@name-head-top)},
+shift={(\pingu@x@jackolantern@xshift,\pingu@x@jackolantern@yshift)},
+scale=\pingu@x@jackolantern@scale]
+\scope
+\pgfinterruptboundingbox
+\path[pingu@invclip]\pingu@x@jackolantern \pingu@x@jackolantern@eye@left \pingu@x@jackolantern@eye@right \pingu@x@jackolantern@nose;
+ % give it a small cut
+ \pingu@block{\pingu@color@jackolantern} (0,.125cm)++(-60:{\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) coordinate (@pkll) arc(-60:86: {\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) coordinate (@pkl) to[bend right=3] coordinate[pos=.5] (@pkuc) coordinate[pos=.225] (@pksl) coordinate[pos=.775] (@pksr) ++(-3.75mm,0) coordinate (@pkr) arc(95:242:{\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) coordinate (@pklr) to[bend left=5] coordinate[pos=.5] (@pklc) cycle;
+ \pingu@draw[line join=round,line width=\pingu@x@jackolantern@outline@w]{\pingu@color@jackolantern@outline} \pingu@jackolantern@outerpath;
+\endpgfinterruptboundingbox
+\scope
+\clip (0,.125cm)++(-60:{\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) arc(-60:86:{\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) to[bend right=3] ++(-3.75mm,0) arc(95:242:{\pingu@x@jackolantern@width} and \pingu@x@jackolantern@height) to[bend left=5] cycle;
+ \pingu@draw[line cap=round,opacity=.2]{\pingu@color@jackolantern@stripe@a} (@pklr) to[bend left=42] (@pkr);
+ \pingu@draw[line cap=round,opacity=.2]{\pingu@color@jackolantern@stripe@c} (@pkll) to[bend right=54] (@pkl);
+ \pingu@draw[line cap=round,opacity=.2]{\pingu@color@jackolantern@stripe@b} (@pklc) to[bend right=6] (@pkuc);
+\endscope
+\endscope
+ \pingu@draw[fill=\pingu@color@jackolantern@background,rounded corners=.25pt]{\pingu@color@jackolantern@outline} \pingu@x@jackolantern@eye@left;
+ \pingu@draw[fill=\pingu@color@jackolantern@background,rounded corners=.25pt]{\pingu@color@jackolantern@outline} \pingu@x@jackolantern@eye@right;
+
+ \pingu@draw[fill=\pingu@color@jackolantern@background,rounded corners=.25pt]{\pingu@color@jackolantern@outline} \pingu@x@jackolantern@nose;
+
+ \pingu@draw[fill=\pingu@color@jackolantern@background]{\pingu@color@jackolantern@outline} \pingu@x@jackolantern;
+ \scope
+ \clip\pingu@x@jackolantern \pingu@x@jackolantern@eye@left \pingu@x@jackolantern@eye@right \pingu@x@jackolantern@nose;
+ \pingu@draw[line cap=round,opacity=.2]{\pingu@color@jackolantern@backstripe@a} ([xshift=1.6mm]@pklr) to[bend left=18] (@pkr);
+ \pingu@draw[line cap=round,opacity=.2]{\pingu@color@jackolantern@backstripe@c} ([xshift=-1.6mm]@pkll) to[bend right=22] (@pkl);
+ \pingu@draw[line cap=round,opacity=.2]{\pingu@color@jackolantern@backstripe@b} (@pklc) to[bend right=1] (@pkuc);
+ \endscope
+ \pingu@block{\pingu@color@jackolantern@stalk} ([yshift=-.5*\pingu@x@jackolantern@outline@w]@pksl) to[bend left=3] ([yshift=-.5*\pingu@x@jackolantern@outline@w]@pksr) to[bend right=8] ++(.85mm,2mm) -- ++(.65mm,0) coordinate[pos=.5] (@pkc) to[bend right=3] cycle;
+\pingu@block{\pingu@color@jackolantern@stalk@top} (@pkc) ellipse[x radius=.65mm/2, y radius=.085mm];
+\endscope
+}
+
+\pingu@create@wing@extra{hammer}{%
+ hammer \@lr/.code = {\pingu@set@extra{hammer\@lr}{true}\pingu@color{hammer\@lr}{##1}},
+ hammer \@lr/.default = pingu@silver,
+ hammer \@lr\space handle length/.code = \expandafter\def\csname pingu@hammer@\@lr @length\endcsname{##1},
+ hammer \@lr\space handle shift/.code = \expandafter\def\csname pingu@hammer@\@lr @shift\endcsname{##1},
+ hammer \@lr\space width/.code = \expandafter\def\csname pingu@hammer@\@lr @width\endcsname{##1},
+ hammer \@lr\space height/.code = \expandafter\def\csname pingu@hammer@\@lr @height\endcsname{##1},
+ hammer \@lr\space xshift/.code = \expandafter\def\csname pingu@hammer@\@lr @xshift\endcsname{##1},
+ hammer \@lr\space yshift/.code = \expandafter\def\csname pingu@hammer@\@lr @yshift\endcsname{##1},
+ hammer \@lr\space handle/.code = \pingu@color{hammer@\@lr @handle}{##1},%
+ hammer \@lr\space with knob/.style = {hammer \@lr=##1, hammer \@lr\space handle length=\dimexpr9mm+\csname pingu@hammer@\@lr @height\endcsname+.5mm,hammer \@lr\space yshift=\dimexpr-.5mm-\csname pingu@hammer@\@lr @height\endcsname},
+ hammer \@lr\space with knob/.default = pingu@silver
+}{hammer \@lr\space handle length=9mm, hammer \@lr\space handle=pingu@bronze, hammer \@lr\space handle shift=-4mm, hammer \@lr\space width=7mm,hammer \@lr\space height=3.5mm, hammer \@lr\space xshift=-0.5*\csname pingu@hammer@\@lr @width\endcsname,hammer \@lr\space yshift=-1mm}
+\def\pingu@draw@wi@hammer#1{%
+ \pingu@setup@wing{hammer}{#1}%
+\scope[rotate around={\@angle:(\pingu@name-wing-#1)}]
+% \csname pingu@color@hammer#1\endcsname
+ \pingu@block{\csname pingu@color@hammer@#1@handle\endcsname}(\pingu@name-wing-#1)++(\@sidesign*-.2mm,\csname pingu@hammer@#1@shift\endcsname) -- ++(0,\csname pingu@hammer@#1@length\endcsname) arc(180:0:\@sidesign*.4mm and .3mm) coordinate[pos=.5] (\pingu@name-hammer-#1-top) -- ++(0,-\csname pingu@hammer@#1@length\endcsname) arc(360:180:\@sidesign*.4mm and .3mm) -- cycle;
+ \pingu@block[rounded corners=2pt]{\csname pingu@color@hammer#1\endcsname} (\pingu@name-hammer-#1-top)++(\csname pingu@hammer@#1@xshift\endcsname,\csname pingu@hammer@#1@yshift\endcsname) rectangle ++(\csname pingu@hammer@#1@width\endcsname,\csname pingu@hammer@#1@height\endcsname);
+\endscope
+}
+
+\pingu@create@wing@extra{plank}{%
+ plank \@lr/.code = {\pingu@set@extra{plank\@lr}{true}\pingu@color{plank\@lr}{##1}},
+ plank \@lr/.default = pingu@bronze!80!pingu@black,
+ plank \@lr\space width/.code = \expandafter\def\csname pingu@plank@\@lr @width\endcsname{##1},
+ plank \@lr\space height/.code = \expandafter\def\csname pingu@plank@\@lr @height\endcsname{##1},
+ plank \@lr\space xshift/.code = \expandafter\def\csname pingu@plank@\@lr @xshift\endcsname{##1},
+ plank \@lr\space yshift/.code = \expandafter\def\csname pingu@plank@\@lr @yshift\endcsname{##1}
+}{plank \@lr\space width=7mm,plank \@lr\space height=16.5mm, plank \@lr\space xshift=0mm,plank \@lr\space yshift=-1mm}
+\def\pingu@draw@wi@plank#1{%
+ \pingu@setup@wing{plank}{#1}%
+\scope[rotate around={\@angle:(\pingu@name-wing-#1)}]
+\pingu@block[rounded corners=2pt]{\@col}([xshift=\csname pingu@plank@#1@xshift\endcsname,yshift=\csname pingu@plank@#1@yshift\endcsname]\pingu@name-wing-#1)++({-.5*(\csname pingu@plank@#1@width\endcsname)},{-.5*(\csname pingu@plank@#1@height\endcsname)}) rectangle ++({\csname pingu@plank@#1@width\endcsname},{\csname pingu@plank@#1@height\endcsname});
+\endscope
+}
+
+% \usetikzlibrary{spy}
+
+\pingu@create@wing@extra{magnifier}{%
+ magnifier \@lr/.code = {\pingu@set@extra{magnifier\@lr}{true}\pingu@color{magnifier\@lr}{##1}}, % \noexpand\tikzset{/pingu/@pingu/.append style={spy scope={circle,draw,magnification=4,size=1cm}}}
+ magnifier \@lr/.default = pingu@bronze,
+ magnifier \@lr\space handle length/.code = \expandafter\def\csname pingu@magnifier@\@lr @length\endcsname{##1},
+ magnifier \@lr\space handle shift/.code = \expandafter\def\csname pingu@magnifier@\@lr @shift\endcsname{##1},
+ magnifier \@lr\space size/.code = \expandafter\def\csname pingu@magnifier@\@lr @size\endcsname{##1},
+ magnifier \@lr\space glass/.code = \pingu@color{magnifier@\@lr @glass}{##1},
+ magnifier \@lr\space opacity/.code = \expandafter\def\csname pingu@magnifier@\@lr @opacity\endcsname{##1},
+ magnifier \@lr\space thick/.code = \expandafter\def\csname pingu@magnifier@\@lr @thick\endcsname{##1},
+ magnifier \@lr\space xshift/.code = \expandafter\def\csname pingu@magnifier@\@lr @xshift\endcsname{##1},
+ magnifier \@lr\space yshift/.code = \expandafter\def\csname pingu@magnifier@\@lr @yshift\endcsname{##1},
+ magnifier \@lr\space handle/.code = \pingu@color{magnifier@\@lr @handle}{##1}%
+}{magnifier \@lr\space handle length=3.5mm, magnifier \@lr\space handle shift=-4mm, magnifier \@lr\space xshift=0mm,magnifier \@lr\space yshift=1mm,magnifier \@lr\space size=2.5mm,magnifier \@lr\space thick=.5mm,magnifier \@lr\space glass=pingu@blue!90!pingu@yellow,magnifier \@lr\space opacity=0.24}
+\def\pingu@draw@wi@magnifier#1{%
+ \pingu@setup@wing{magnifier}{#1}%
+ \scope[rotate around={\@angle:(\pingu@name-wing-#1)}]
+% \csname pingu@color@magnifier#1\endcsname
+ \path ([yshift=\csname pingu@magnifier@#1@yshift\endcsname+\csname pingu@magnifier@#1@size\endcsname,xshift=\csname pingu@magnifier@\@lr @xshift\endcsname]\pingu@name-wing-#1) coordinate (@);
+
+ % \spy[draw=green] on (@) in node at (@);
+% \pgfonlayer{foreground}
+ \pingu@block[even odd rule]{\@col} (@) circle[radius=\csname pingu@magnifier@#1@size\endcsname] circle[radius=\csname pingu@magnifier@#1@size\endcsname-\csname pingu@magnifier@#1@thick\endcsname];
+
+ \pingu@block[opacity=\csname pingu@magnifier@#1@opacity\endcsname]{\csname pingu@color@magnifier@#1@glass\endcsname} (@) circle[radius=\csname pingu@magnifier@#1@size\endcsname-\csname pingu@magnifier@#1@thick\endcsname];
+
+ \pingu@block{\@col} % TODO: adapt size
+ (@) ([shift={(-70:2.5mm)}]@) to[out=230,in=90] ++(-.5mm,-\csname pingu@magnifier@#1@length\endcsname) arc(360:180:.33mm) to[out=90,in=-50] ++(-.5mm,\csname pingu@magnifier@#1@length\endcsname);%
+% \endpgfonlayer
+\endscope
+}
+% #endregion
+
+% #region glasses-lib
+\pingu@create@extra{glasses}{%
+ glasses/.code = \pingu@set@extra{glasses}{true}\pingu@color{glasses}{#1},
+ glasses/.default = pingu@black,
+ glasses left fill/.code = \pingu@color{glasses@fill@l}{#1},
+ glasses right fill/.code = \pingu@color{glasses@fill@r}{#1},
+ glasses left opacity/.code = \def\pingu@x@glasses@op@l{#1},
+ glasses right opacity/.code = \def\pingu@x@glasses@op@r{#1},
+ glasses fill/.style = {/pingu/glasses left fill=#1, /pingu/glasses right fill=#1},
+ glasses opacity/.style = {/pingu/glasses left opacity=#1, /pingu/glasses right opacity=#1},
+ glasses line width/.code = \def\pingu@x@glasses@lw{#1},
+ sunglasses/.forward to = /pingu/sun glasses,
+ glasses bend left/.code = \def\pingu@x@glasses@bend@l{#1},
+ glasses bend right/.code = \def\pingu@x@glasses@bend@r{#1},
+ glasses bend/.style = {/pingu/glasses bend left=#1,/pingu/glasses bend right=#1},
+ sun glasses/.style = {/pingu/glasses, /pingu/glasses fill=#1},
+ sun glasses/.default = pingu@black,
+}{glasses line width=1.125\p@,glasses fill=\@pingu@none,glasses opacity=.825,glasses bend left=32.5,glasses bend right=32.5}
+
+\def\pingu@draw@ea@glasses{% fact: 1.33; modified first shift and ht
+ \pingu@block[opacity=\pingu@x@glasses@op@l]{\pingu@color@glasses@fill@l} (\pingu@name-eye-left)++(-2.66mm,1.75mm) to[bend left=8] ++(5.586mm,0) to[out=-80,in=70] ++(-.266mm,-3.6mm) to[bend left=\pingu@x@glasses@bend@l] ++(-4.8545mm,\z@) to[out=135,in=-90] ++(-1.064mm,3.5mm) -- cycle;
+ \pingu@block[opacity=\pingu@x@glasses@op@r]{\pingu@color@glasses@fill@r} (\pingu@name-eye-right)++(2.66mm,1.75mm) to[bend right=8] ++(-5.586mm,0) to[out=-100,in=110] ++(.266mm,-3.6mm) to[bend right=\pingu@x@glasses@bend@r] ++(4.8545mm,\z@) to[out=45,in=-90] ++(1.064mm,3.5mm) -- cycle;
+ \pingu@draw[line width=\pingu@x@glasses@lw]{\pingu@color@glasses} [rounded corners=.25mm](\pingu@name-eye-left)++(-2.66mm,1.75mm) coordinate (\pingu@name-glasses-left-mid) to[bend left=8] ++(5.586mm,0) coordinate (\pingu@name-glasses-left-outer) to[out=-80,in=70] ++(-.266mm,-3.6mm) to[bend left=\pingu@x@glasses@bend@l] ++(-4.8545mm,\z@) to[out=135,in=-90] coordinate[pos=.9] (\pingu@name-glasses-left-mid-b) ++(-1.064mm,3.5mm) -- cycle;
+ \pingu@draw[line width=\pingu@x@glasses@lw]{\pingu@color@glasses} [rounded corners=.25mm] (\pingu@name-eye-right)++(2.66mm,1.75mm) coordinate (\pingu@name-glasses-right-mid) to[bend right=8] ++(-5.586mm,0) coordinate (\pingu@name-glasses-right-outer) to[out=-100,in=110] ++(.266mm,-3.6mm) to[bend right=\pingu@x@glasses@bend@r] ++(4.8545mm,\z@) to[out=45,in=-90] coordinate[pos=.9] (\pingu@name-glasses-right-mid-b) ++(1.064mm,3.5mm) -- cycle;
+ \pingu@draw[line width=\pingu@x@glasses@lw]{\pingu@color@glasses} (\pingu@name-glasses-right-mid) to[bend right=10] (\pingu@name-glasses-left-mid);
+ \pingu@draw[line width=\pingu@x@glasses@lw]{\pingu@color@glasses} (\pingu@name-glasses-right-mid-b) to[bend left=20] (\pingu@name-glasses-left-mid-b);
+ \scope
+ \clip[use path=\pingu@upperpingu];
+ \pingu@draw[line width=\pingu@x@glasses@lw]{\pingu@color@glasses}
+ (\pingu@name-glasses-right-mid) to[bend right=8] ++(-5.586mm,0) -- ++(-5mm,.5mm);
+ \pingu@draw[line width=\pingu@x@glasses@lw]{\pingu@color@glasses}
+ (\pingu@name-glasses-left-mid) to[bend left=8] ++(5.586mm,0) -- ++(5mm,.5mm);
+ \endscope
+}
+\pingu@create@extra{glassesround}{%
+ glasses round/.code = \pingu@set@extra{glassesround}{true}\pingu@color{glassesround}{#1},
+ glasses round/.default = pingu@black,
+ glasses round left fill/.code = \pingu@color{glassesround@fill@l}{#1},
+ glasses round right fill/.code = \pingu@color{glassesround@fill@r}{#1},
+ glasses round fill/.style = {/pingu/glasses round left fill=#1, /pingu/glasses round right fill=#1},
+ glasses round left opacity/.code = \def\pingu@x@glassesround@op@l{#1},
+ glasses round right opacity/.code = \def\pingu@x@glassesround@op@r{#1},
+ glasses round opacity/.style = {/pingu/glasses round left opacity=#1, /pingu/glasses round right opacity=#1},
+ glasses round left radius/.code = \def\pingu@x@glassesround@r@l{#1},
+ glasses round right radius/.code = \def\pingu@x@glassesround@r@r{#1},
+ glasses round radius/.style = {/pingu/glasses round left radius=#1, /pingu/glasses round right radius=#1},
+ glasses round line width/.code = \def\pingu@x@glassesround@lw{#1},
+ sunglasses round/.forward to = /pingu/sun glasses round,
+ sun glasses round/.style = {/pingu/glasses round, /pingu/glasses round fill=#1},
+ sun glasses round/.default = pingu@black,
+ % todo: width/radius allow for different
+}{glasses round line width=.75\p@,glasses round fill=\@pingu@none,glasses round opacity=.825,glasses round radius=3.15mm}
+\def\pingu@draw@ea@glassesround{% fact: 1.33; modified first shift and ht
+ \pingu@block[opacity=\pingu@x@glassesround@op@l]{\pingu@color@glassesround@fill@l} (\pingu@name-eye-left) circle [radius=\pingu@x@glassesround@r@l];
+ \pingu@block[opacity=\pingu@x@glassesround@op@r]{\pingu@color@glassesround@fill@r} (\pingu@name-eye-right) circle [radius=\pingu@x@glassesround@r@r];
+ \pingu@draw[line width=\pingu@x@glassesround@lw]{\pingu@color@glassesround} [rounded corners=.25mm](\pingu@name-eye-left) ++(150:\pingu@x@glassesround@r@l) coordinate (\pingu@name-glassesround-left-mid) arc (150:510:\pingu@x@glassesround@r@l);
+ \pingu@draw[line width=\pingu@x@glassesround@lw]{\pingu@color@glassesround} [rounded corners=.25mm] (\pingu@name-eye-right) ++(30:\pingu@x@glassesround@r@r) coordinate (\pingu@name-glassesround-right-mid) arc (30:390:\pingu@x@glassesround@r@r);
+ \pingu@draw[line width=\pingu@x@glassesround@lw]{\pingu@color@glassesround} (\pingu@name-glassesround-left-mid) to[bend right=30] (\pingu@name-glassesround-right-mid);
+ \scope
+ \clip[use path=\pingu@upperpingu];
+ \pingu@draw[line width=\pingu@x@glassesround@lw]{\pingu@color@glassesround}
+ (\pingu@name-glassesround-right-mid) arc(30:150:\pingu@x@glassesround@r@l) -- ++(-5mm,.65mm);
+ \pingu@draw[line width=\pingu@x@glassesround@lw]{\pingu@color@glassesround}
+ (\pingu@name-glassesround-left-mid) arc(150:30:\pingu@x@glassesround@r@r) -- ++(5mm,.65mm);
+ \endscope
+}
+\pingu@create@extra{monocleleft}{%
+ monocle left/.code = \pingu@set@extra{monocleleft}{true}\pingu@color{monocleleft}{#1},
+ monocle left/.default = pingu@black,
+ monocle left glass/.code = \pingu@color{monocleleft@glass}{#1},
+ monocle left fill/.forward to = /pingu/monocle left glass,
+ monocle left opacity/.code = \def\pingu@x@monocleleft@opacity{#1},
+ monocle left fill opacity/.forward to = /pingu/monocle left opacity,
+ monocle left string/.code = \pingu@color{monocleleft@string}{#1},
+ monocle left string length/.code= \def\pingu@x@monocleleft@string@l{#1},
+ monocle left blob/.code = \pingu@color{monocleleft@blob}{#1},
+}{monocle left glass=pingu@blue,monocle left opacity=.155,monocle left string=\pingu@color@monocleleft,monocle left blob=\pingu@color@monocleleft,monocle left string length=5.55mm}
+
+\def\pingu@draw@eb@monocle@l{%
+ \pingu@block[/pingu/glow,opacity=\pingu@x@monocleleft@opacity]{\pingu@color@monocleleft@glass} (\pingu@name-eye-left) circle[radius=2mm];
+ \pingu@draw[thin]{\pingu@color@monocleleft@string} (\pingu@name-eye-left)++(2mm,0)
+ to[out=-75,in=100] ++(0,-\pingu@x@monocleleft@string@l);
+ \pingu@block{\pingu@color@monocleleft@blob} (\pingu@name-eye-left)++(2mm,-\pingu@x@monocleleft@string@l) circle [radius=.65\p@];
+ \pingu@draw[semithick]{\pingu@color@monocleleft} (\pingu@name-eye-left) circle[radius=2mm];
+}
+\pingu@create@extra{monocleright}{%
+ monocle right/.code = \pingu@set@extra{monocleright}{true}\pingu@color{monocleright}{#1},
+ monocle right/.default = pingu@black,
+ monocle right glass/.code = \pingu@color{monocleright@glass}{#1},
+ monocle right fill/.forward to = /pingu/monocle right glass,
+ monocle right opacity/.code = \def\pingu@x@monocleright@opacity{#1},
+ monocle right fill opacity/.forward to = /pingu/monocle right opacity,
+ monocle right string/.code = \pingu@color{monocleright@string}{#1},
+ monocle right string length/.code= \def\pingu@x@monocleright@string@r{#1},
+ monocle right blob/.code = \pingu@color{monocleright@blob}{#1},
+}{monocle right glass=pingu@blue,monocle right opacity=.155,monocle right string=\pingu@color@monocleright,monocle right blob=\pingu@color@monocleright,monocle right string length=5.55mm}
+\def\pingu@draw@eb@monocle@r{%
+ \pingu@block[/pingu/glow,opacity=\pingu@x@monocleright@opacity]{\pingu@color@monocleright@glass} (\pingu@name-eye-right) circle[radius=2mm];
+ \pingu@draw[thin]{\pingu@color@monocleright@string} (\pingu@name-eye-right)++(-2mm,0)
+ to[out=-105,in=80] ++(0,-\pingu@x@monocleright@string@r);
+ \pingu@block{\pingu@color@monocleright@blob} (\pingu@name-eye-right)++(-2mm,-\pingu@x@monocleright@string@r) circle [radius=.65\p@];
+ \pingu@draw[semithick]{\pingu@color@monocleright} (\pingu@name-eye-right) circle[radius=2mm];
+}
+% #endregion
+
+% #region hats-lib
+\pingu@create@extra{strawhat}{%
+ % extra strawhat (tikzducks basis)
+ straw hat/.forward to = /pingu/strawhat,
+ strawhat/.default = brown!50!white,
+ strawhat/.code = \pingu@set@extra{strawhat}{true}\pingu@color{strawhat}{#1},
+ straw hat ribbon/.forward to = /pingu/strawhat ribbon,
+ strawhat ribbon/.code = \pingu@color{strawhat@ribbon}{#1},
+ straw hat position/.forward to= /pingu/strawhat position,
+ strawhat position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@strawhat@angle{#1}\def\pingu@x@strawhat@xshift{#2}\def\pingu@x@strawhat@yshift{#3}\def\pingu@x@strawhat@scale{#4}},
+}{strawhat ribbon= gray!85!black,strawhat position={-26.5:(-.185cm,.14cm){1.375}}}
+
+\def\pingu@draw@ea@strawhat{%
+\scope[rotate around={\pingu@x@strawhat@angle:(\pingu@name-head)},shift={(\pingu@name-head)},shift={(\pingu@x@strawhat@xshift,\pingu@x@strawhat@yshift)},scale=\pingu@x@strawhat@scale]
+\pingu@block{\pingu@color@strawhat} (.34cm,0) ellipse[x radius=.75cm, y radius=\pingu@one];
+\pingu@block{\pingu@color@strawhat} (0,.5mm) rectangle (.68cm,5mm);
+\pingu@block{\pingu@color@strawhat} (.34cm,5mm) ellipse[x radius=.34cm, y radius=.8mm];
+\pingu@block{\pingu@color@strawhat} (-.3955cm,.2mm) -- (1.0755cm,.2mm) -- (.68cm,2mm) -- (0,2mm) -- cycle;
+\pingu@block{\pingu@color@strawhat@ribbon} (.34cm,2mm) ellipse[x radius=.34cm, y radius=.8mm];
+\pingu@block{\pingu@color@strawhat@ribbon} (0,2mm) rectangle (.68cm,3mm);
+\pingu@block{\pingu@color@strawhat} (.34cm,3mm) ellipse[x radius=.34cm, y radius=.8mm];
+\endscope}
+
+\pingu@create@extra{hat}{%
+ hat/.default = pingu@black!90!black,
+ hat/.code = \pingu@set@extra{hat}{true}\pingu@color{hat}{#1},
+ hat base/.code = \pingu@color{hat@base}{#1},
+ hat coronal/.code = \pingu@color{hat@coronal}{#1},
+ hat ribbon/.code = \pingu@color{hat@ribbon}{#1},
+ hat position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@hat@angle{#1}\def\pingu@x@hat@xshift{#2}\def\pingu@x@hat@yshift{#3}\def\pingu@x@hat@scale{#4}},
+}{hat position={-2:(.35mm,0)1},hat base=\pingu@color@hat,hat coronal=\pingu@color@hat!91!white,hat ribbon=\pingu@color@hat!87!white}
+
+\newdimen\pingu@hat@w@half \pingu@hat@w@half=.925cm
+\newdimen\pingu@hat@h \pingu@hat@h=.625cm
+\def\pingupathhatupper{[rounded corners=.25mm](-.65cm,-.25cm) to[out=90,in=200] ++(.35cm,\pingu@hat@h) to[bend left=11] ++(.25cm,0) to[bend right=2.5] ++(\pingu@one,0) to[bend left=11] ++(.25cm,0) to[out=-20,in=90] ++(.35cm,-\pingu@hat@h) to[bend left=12] (-.65cm,-.25cm) -- cycle}
+\def\pingu@draw@ea@hat{%
+\scope[rotate around={\pingu@x@hat@angle:(\pingu@name-head-top)},shift={(\pingu@name-head-top)},shift={(\pingu@x@hat@xshift,\pingu@x@hat@yshift)},scale=\pingu@x@hat@scale]
+\pingu@block[/pingu/@draw=\pingu@color@hat@coronal,thick]{\pingu@color@hat@base} (0,-.25cm)++(180:\pingu@hat@w@half{} and .15cm) arc (180:360:\pingu@hat@w@half{} and .15cm) arc (0:180:\pingu@hat@w@half{} and .115cm) -- cycle;
+\pingu@block{\pingu@color@hat} \pingupathhatupper;
+\scope
+\clip\pingupathhatupper;
+\pingu@block{\pingu@color@hat@ribbon} (\z@,.2mm) ellipse [x radius=.95\pingu@hat@w@half, y radius=.13cm];
+\pingu@block{\pingu@color@hat} (\z@,.134cm) ellipse [x radius=.95\pingu@hat@w@half, y radius=.13cm];
+\endscope\endscope}
+
+% TODO: tassel
+\pingu@create@extra{graduate}{%
+ graduate cap/.forward to = /pingu/graduate,
+ graduate/.default = pingu@black!95!white,
+ graduate/.code = \pingu@set@extra{graduate}{true}\pingu@color{graduate}{#1},
+ graduate cap top/.forward to = /pingu/graduate top,
+ graduate top/.code = \pingu@color{graduate@top}{#1},
+ graduate cap tilt/.forward to = /pingu/graduate tilt,
+ graduate tilt/.code = \def\pingu@x@graduate@tilt{#1},
+ graduate cap tassel/.forward to = /pingu/graduate tassel,
+ graduate tassel/.code = \pingu@color{graduate@tassel}{#1},
+ graduate tassel/.default = pingu@red!65!black,
+ graduate cap tassel drop/.forward to = /pingu/graduate tassel drop,
+ graduate tassel drop/.code = \pingu@color{graduate@tassel@drop}{#1},
+ graduate cap tassel start/.forward to = /pingu/graduate tassel start,
+ graduate tassel start/.code = \def\pingu@x@tassel@start{#1},
+ graduate cap tassel width/.forward to = /pingu/graduate tassel width,
+ graduate tassel width/.code = \def\pingu@x@tassel@width{#1},
+ graduate cap tassel length/.forward to = /pingu/graduate length,
+ graduate tassel length/.code = \def\pingu@x@tassel@length{#1},
+ graduate cap tassel drop size/.forward to = /pingu/graduate drop size,
+ graduate tassel drop size/.code = \def\pingu@x@tassel@drop@size{#1},
+ graduate cap position/.forward to = /pingu/graduate position,
+ graduate position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@graduate@angle{#1}\def\pingu@x@graduate@xshift{#2}\def\pingu@x@graduate@yshift{#3}\def\pingu@x@graduate@scale{#4}},
+}{graduate position={-27:(-.19cm,.14cm){1.375}}, graduate top=\pingu@color@graduate!95!white,graduate tilt=2.33mm,graduate tassel=\@pingu@none, graduate tassel width=.5mm, graduate tassel length=5.5mm,graduate tassel drop size=.75*\pingu@x@tassel@width,graduate tassel drop=\pingu@color@graduate@tassel,graduate cap tassel start={(.55cm,3.5mm-\pingu@x@graduate@tilt)}} % ; tassel color to hide
+
+\def\pingu@draw@ea@graduate{%
+\scope[rotate around={\pingu@x@graduate@angle:(\pingu@name-head)},shift={(\pingu@name-head)},shift={(\pingu@x@graduate@xshift,\pingu@x@graduate@yshift)},scale=\pingu@x@graduate@scale]
+\pingu@block{\pingu@color@graduate} (0,1mm) rectangle (.75cm,3.5mm);
+\pingu@block{\pingu@color@graduate} (.375cm,1mm) ellipse[x radius=.375cm, y radius=.8mm];
+\pingu@block[rounded corners=.33mm]{\pingu@color@graduate@top} (-3mm,3.5mm)
+ % minor slant for visuals
+ -- ++(.675cm + .1mm,\pingu@x@graduate@tilt) -- (1.05cm,3.5mm) -- ++(-.675cm - .1mm,-\pingu@x@graduate@tilt) -- cycle;
+% counter rotation
+\scope[rotate around={-\pingu@x@graduate@angle:(\pingu@name-head)}]
+\pingu@draw[line width=\pingu@x@tassel@width]{\pingu@color@graduate@tassel} \pingu@x@tassel@start to[out=-45,in=90] ++(.2*\pingu@x@tassel@length,-\pingu@x@tassel@length) coordinate(@);
+\pingu@block{\pingu@color@graduate@tassel@drop} (@) circle[x radius=\pingu@x@tassel@drop@size, y radius=1.75*\pingu@x@tassel@drop@size];
+\endscope
+\endscope}
+
+\pingu@create@extra{cap}{%
+ cap/.default = pingu@bronze,
+ cap/.code = \pingu@set@extra{cap}{true}\pingu@color{cap}{#1},
+ cap padding/.code = {\def\pingu@x@cap@padding{#1}},
+ cap extra height/.code = {\def\pingu@x@cap@height{#1}},
+}{cap padding=.8mm, cap extra height=0pt}
+
+\def\pingu@draw@ea@cap{%
+\pingu@layer{foreground}[]
+\pingu@block[rounded corners=.7mm]{\pingu@color@cap} ([xshift=.25mm]\pingu@name-wing-left-start) to[bend left=4] ([xshift=-\pingu@x@cap@padding]\pingu@name-wings-side-left) to[bend right=3]
+([yshift=\pingu@x@cap@height]\pingu@name-head)
+to[bend right=3]
+([xshift=\pingu@x@cap@padding]\pingu@name-wings-side-right) [rounded corners=.15mm] to[bend left=4] ([xshift=-.25mm]\pingu@name-wing-right-start)
+to[bend left=8]
+([xshift=-\pingu@x@cap@padding]\pingu@name-wings-side-right)
+[rounded corners=.15mm]
+to[bend left=32] ++(\pingu@w@half+\pingu@x@cap@padding,\pingu@w@half+\pingu@one)
+to[bend left=32] ++(\pingu@w@half+\pingu@x@cap@padding,-\pingu@w@half-\pingu@one)
+to[bend left=8] cycle;
+\endpingu@layer
+}
+
+\pingu@create@extra{constructionhelmet}{%
+ construction helmet/.default = pingu@yellow,
+ construction helmet/.code = \pingu@set@extra{constructionhelmet}{true}\pingu@color{constructionhelmet}{#1},
+ construction helmet padding/.code = {\def\pingu@x@constructionhelmet@padding{#1}},
+ construction helmet extra height/.code = {\def\pingu@x@constructionhelmet@height{#1}},
+ construction helmet position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@constructionhelmet@angle{#1}\def\pingu@x@constructionhelmet@xshift{#2}\def\pingu@x@constructionhelmet@yshift{#3}\def\pingu@x@constructionhelmet@scale{#4}},
+}{construction helmet padding=.325cm, construction helmet extra height=0pt,construction helmet position={-.5:(.05mm,-1.25mm)1}}
+
+\newdimen\pingu@constructionhelmet@w@half \pingu@constructionhelmet@w@half=.85cm
+\def\pingu@draw@ea@constructionhelmet{%
+\scope[rotate around={\pingu@x@constructionhelmet@angle:(\pingu@name-head-top)},shift={(\pingu@name-head-top)},shift={(\pingu@x@constructionhelmet@xshift,\pingu@x@constructionhelmet@yshift)},scale=\pingu@x@constructionhelmet@scale]
+\pingu@block{\pingu@color@constructionhelmet} (0,-.25cm)++(180:\pingu@constructionhelmet@w@half{} and \pingu@x@constructionhelmet@padding) arc (180:360:\pingu@constructionhelmet@w@half{} and \pingu@x@constructionhelmet@padding) arc (0:180:\pingu@constructionhelmet@w@half{} and .2cm) -- cycle;
+\scope
+\pingu@block{\pingu@color@constructionhelmet!93!pingu@black} (0,-.25cm)++(0:{.95\pingu@constructionhelmet@w@half} and .675cm) arc (0:180:{.95\pingu@constructionhelmet@w@half} and .675cm) coordinate[pos=.212] (@a) coordinate[pos=.256] (@aa) coordinate[pos=.788] (@b) coordinate[pos=.744] (@bb) arc (180:360:{.95\pingu@constructionhelmet@w@half} and .125cm) -- cycle;
+\clip (0,-.25cm)++(0:{.95\pingu@constructionhelmet@w@half} and .675cm) arc (0:180:{.95\pingu@constructionhelmet@w@half} and .675cm) arc (180:360:{.95\pingu@constructionhelmet@w@half} and .125cm) -- cycle;
+\pingu@block{\pingu@color@constructionhelmet!99!pingu@black} (-.75mm,-.25cm-.125cm) to[bend left=1] ++ (0,.675cm+.125cm) -- ++(1.5mm,0) to[bend right=1] ++(0,-.675cm-.125cm) -- cycle;
+\pingu@block{\pingu@color@constructionhelmet!99!pingu@black} (-.95mm,-.25cm-.125cm) to[bend left=3] ++ (-8mm,.675cm+.125cm) -- ++(1.5mm,0) to[bend right=3] ++(8mm,-.675cm-.125cm) -- cycle;
+\pingu@block{\pingu@color@constructionhelmet!99!pingu@black} (-.55mm,-.25cm-.125cm) to[bend right=3] ++ (8mm,.675cm+.125cm) -- ++(1.5mm,0) to[bend left=3] ++(-8mm,-.675cm-.125cm) -- cycle;
+\endscope
+% get the 3d wobbles
+\pingu@block[rounded corners=.03mm]{\pingu@color@constructionhelmet!99!pingu@black} (-.75mm,-.25cm+.675cm-.25mm) -- ++(0,.3mm) -| ++(1.5mm,-.3mm) -- cycle;
+\pingu@block{\pingu@color@constructionhelmet!99!pingu@black} (@a) to[bend right=14] (@aa);
+\pingu@block{\pingu@color@constructionhelmet!99!pingu@black} (@bb) to[bend right=14] (@b);
+\endscope
+}
+
+\pingu@create@extra{conicalhat}{%
+ conical hat/.default = pingu@bronze,
+ conical hat/.code = \pingu@set@extra{conicalhat}{true}\pingu@color{conicalhat}{#1},
+ conical hat rounding/.code = {\def\pingu@x@conicalhat@rounding{#1}},
+ conical hat shade/.code = {\def\pingu@x@conicalhat@shade{#1}},
+ conical hat height/.code = {\def\pingu@x@conicalhat@height{#1}},
+ conical hat width/.code = {\def\pingu@x@conicalhat@width{#1}},
+ conical hat position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@conicalhat@angle{#1}\def\pingu@x@conicalhat@xshift{#2}\def\pingu@x@conicalhat@yshift{#3}\def\pingu@x@conicalhat@scale{#4}},
+}{conical hat position={-15:(2mm,-3mm)1}, conical hat height=8mm, conical hat width=2.25cm,conical hat shade=\pingu@color@conicalhat!80!pingu@black, conical hat rounding=.4pt}
+
+\def\pingu@draw@ea@conicalhat{%
+\scope[rotate around={\pingu@x@conicalhat@angle:(\pingu@name-head-top)},shift={(\pingu@name-head-top)},shift={(\pingu@x@conicalhat@xshift,\pingu@x@conicalhat@yshift)},scale=\pingu@x@conicalhat@scale]
+
+\pingu@layer{background}[]
+\pingu@block[rounded corners=\pingu@x@conicalhat@rounding]{\pingu@x@conicalhat@shade} (0,-.22cm)++(180:{\pingu@x@conicalhat@width/2+.05mm} and 1mm) coordinate (@) arc (180:360:{\pingu@x@conicalhat@width/2+.05mm} and 1mm) -- ++(.15mm,.3mm) to[bend right=5] ++(-\pingu@x@conicalhat@width/2, \pingu@x@conicalhat@height-.025cm) to[bend right=5] ([xshift=-.15mm,yshift=.3mm]@) -- cycle;
+\endpingu@layer
+
+\pingu@block[rounded corners=\pingu@x@conicalhat@rounding]{\pingu@color@conicalhat} (0,-.25cm)++(180:\pingu@x@conicalhat@width/2 and 1mm) coordinate (@) arc (180:0:\pingu@x@conicalhat@width/2 and 1mm) -- ++(.225mm,.6mm) to[bend right=5] ++(-\pingu@x@conicalhat@width/2, \pingu@x@conicalhat@height) to[bend right=5] ([xshift=-.225mm,yshift=.6mm]@) -- cycle;
+\endscope
+}
+
+\pingu@create@extra{spacehelmet}{%
+ space helmet/.default = pingu@black!45!white,
+ space helmet/.code = \pingu@set@extra{spacehelmet}{true}\pingu@color{spacehelmet}{#1},
+ space helmet glass/.code= \pingu@color{spacehelmet@glass}{#1},
+ space helmet glass opacity/.code = \def\pingu@x@spacehelmet@glass@opacity{#1},
+ space helmet position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@spacehelmet@angle{#1}\def\pingu@x@spacehelmet@xshift{#2}\def\pingu@x@spacehelmet@yshift{#3}\def\pingu@x@spacehelmet@scale{#4}},
+}{space helmet position={-2:(.35mm,0)1},space helmet glass=pingu@blue!40!pingu@yellow!50!white,space helmet glass opacity=.33}
+
+\newdimen\pingu@spacehelmet@w@half \pingu@spacehelmet@w@half=.935cm
+\newdimen\pingu@spacehelmet@h \pingu@spacehelmet@h=1.125cm
+\def\pingu@draw@ea@spacehelmet{%
+\scope[rotate around={\pingu@x@spacehelmet@angle:(\pingu@name-head-top)},shift={(\pingu@name-head-top)},shift={(\pingu@x@spacehelmet@xshift,\pingu@x@spacehelmet@yshift)},scale=\pingu@x@spacehelmet@scale]
+\pingu@block[opacity=\pingu@x@spacehelmet@glass@opacity]{\pingu@color@spacehelmet@glass} (\pingu@name-head-center) ellipse [x radius=.9\pingu@spacehelmet@w@half, y radius=.45\pingu@spacehelmet@h];
+
+\pingu@block[/pingu/@draw=\pingu@color@spacehelmet,thick, even odd rule]{\pingu@color@spacehelmet}
+ ([yshift=-1mm]\pingu@name-wings-side-right) to[bend right=57] ([yshift=-1mm]\pingu@name-wings-side-left)
+ arc (0:180:\pingu@spacehelmet@w@half{} and \pingu@spacehelmet@h) -- cycle
+ (\pingu@name-head-center) ellipse [x radius=.9\pingu@spacehelmet@w@half, y radius=.45\pingu@spacehelmet@h];
+\endscope}
+
+\pingu@create@extra{witchhat}{%
+ witch hat/.code = \pingu@set@extra{witchhat}{true}\pingu@color{witchhat}{#1},
+ witch hat/.default = pingu@purple!40!black,
+ witch hat base/.code = \pingu@color{witchhat@base}{#1},
+ witch hat coronal/.code = \pingu@color{witchhat@coronal}{#1},
+ witch hat ribbon/.code = \pingu@color{witchhat@ribbon}{#1},
+ witch hat band/.code = \pingu@color{witchhat@band}{#1},
+ witch hat position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@witchhat@angle{#1}\def\pingu@x@witchhat@xshift{#2}\def\pingu@x@witchhat@yshift{#3}\def\pingu@x@witchhat@scale{#4}},
+}{witch hat position={-7:(.625mm,.45mm){1.15}},witch hat base=\pingu@color@witchhat,witch hat coronal=\pingu@color@witchhat!91!white,witch hat ribbon=\pingu@color@witchhat!87!white,witch hat band=!hide}
+
+\newdimen\pingu@witchhat@w@half \pingu@witchhat@w@half=1.125cm
+\newdimen\pingu@witchhat@h \pingu@witchhat@h=1.3cm
+\def\pingupathwitchhatupper{[rounded corners=.65mm](-.625cm,-.25cm) -- ++(.8cm,\pingu@witchhat@h-4.5mm) -- ++(6.5mm,4.5mm) -- ++(-1.5mm,-4.5mm) -- ++(-1.25mm,-\pingu@witchhat@h+4.5mm)}
+\def\pingu@draw@ea@witchhat{%
+\scope[rotate around={\pingu@x@witchhat@angle:(\pingu@name-head-top)},shift={(\pingu@name-head-top)},shift={(\pingu@x@witchhat@xshift,\pingu@x@witchhat@yshift)},scale=\pingu@x@witchhat@scale]
+\pingu@draw[semithick]{\pingu@color@witchhat@band} (-.615cm,-.25cm) to[out=-100,in=180] ++(.5cm,-1.1cm) to[bend right=5] ++(3.5mm,.1mm) to[out=0,in=-78] ++(.433cm,1.1cm);
+\pingu@block[/pingu/@draw=\pingu@color@witchhat@coronal,thick]{\pingu@color@witchhat@base} (0,-.25cm)++(180:\pingu@witchhat@w@half{} and .15cm) arc (180:360:\pingu@witchhat@w@half{} and .15cm) arc (0:180:\pingu@witchhat@w@half{} and .115cm) -- cycle;
+\pingu@block{\pingu@color@witchhat} \pingupathwitchhatupper;
+\clip\pingupathwitchhatupper;
+\pingu@block{\pingu@color@witchhat@ribbon} (\z@,.2mm) ellipse [x radius=.95\pingu@witchhat@w@half, y radius=.12cm];
+\pingu@block{\pingu@color@witchhat} (\z@,.134cm) ellipse [x radius=.95\pingu@witchhat@w@half, y radius=.12cm];
+\endscope
+}
+
+
+\pingu@create@extra{mitra}{%
+ mitra/.default = pingu@red!67!pingu@black,%pingu@black!90!black,
+ mitra/.code = \pingu@set@extra{mitra}{true}\pingu@color{mitra}{#1},
+ mitra height/.code = {\def\pingu@x@mitra@height{#1}},
+ mitra background/.code = \pingu@color{mitra@background}{#1},
+ mitra overset/.code = {\def\pingu@x@mitra@overset{#1}},
+ mitra lower angle/.code = {\def\pingu@x@mitra@lowerangle{#1}},
+ mitra upper angle/.code = {\def\pingu@x@mitra@upperangle{#1}},
+ mitra lower band/.code = \pingu@color{mitra@lower@band}{#1},
+ mitra lower band height/.code = {\def\pingu@x@mitra@lowerband@height{#1}},
+ mitra upper band/.code = \pingu@color{mitra@upper@band}{#1},
+ mitra upper band height/.code = {\def\pingu@x@mitra@upperband@height{#1}},
+ mitra center band/.code = \pingu@color{mitra@center@band}{#1},
+ mitra center band width/.code = {\def\pingu@x@mitra@centerband@width{#1}},
+ mitra position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@mitra@angle{#1}\def\pingu@x@mitra@xshift{#2}\def\pingu@x@mitra@yshift{#3}\def\pingu@x@mitra@scale{#4}},
+}{mitra position={0:(0,0)1},mitra height=1.125cm,mitra overset=1.25mm,mitra lower angle=125,mitra upper angle=-35,mitra lower band=pingu@yellow!75!pingu@black,mitra center band=\pingu@color@mitra@lower@band,mitra lower band height=.2,mitra center band width={2*\pingu@x@mitra@lowerband@height},mitra upper band=\pingu@color@mitra@lower@band,mitra upper band height={1.5*\pingu@x@mitra@lowerband@height},mitra background=\pingu@color@mitra!80!pingu@black}
+
+\newdimen\pingu@mitra@w@half \pingu@mitra@w@half=.625cm
+\def\pingu@x@mitra@path{(0,-.2185cm)++(180:\pingu@mitra@w@half{} and .035cm) arc (180:360:\pingu@mitra@w@half{} and .035cm) [rounded corners=1pt] -- ++(\pingu@x@mitra@overset,.3*\pingu@x@mitra@height) to[out=\pingu@x@mitra@lowerangle,in=\pingu@x@mitra@upperangle] ++(-\pingu@x@mitra@overset-\pingu@mitra@w@half,.7*\pingu@x@mitra@height)
+to[out=180-\pingu@x@mitra@upperangle,in=180-\pingu@x@mitra@lowerangle] ++(-\pingu@x@mitra@overset-\pingu@mitra@w@half,-.7*\pingu@x@mitra@height) [sharp corners] -- cycle}
+\def\pingu@draw@ea@mitra{%
+\scope[rotate around={\pingu@x@mitra@angle:(\pingu@name-head-top)},shift={(\pingu@name-head-top)},shift={(\pingu@x@mitra@xshift,\pingu@x@mitra@yshift)},scale=\pingu@x@mitra@scale]
+\pingu@block{\pingu@color@mitra@background} (0,-.2185cm)++(180:\pingu@mitra@w@half{} and .035cm) arc (180:360:\pingu@mitra@w@half{} and .035cm) [rounded corners=1pt] -- ++(\pingu@x@mitra@overset,.3*\pingu@x@mitra@height) to[out=\pingu@x@mitra@lowerangle,in=\pingu@x@mitra@upperangle] ++(-\pingu@x@mitra@overset-\pingu@mitra@w@half-.66mm,.7*\pingu@x@mitra@height-.1mm)
+to[out=180-\pingu@x@mitra@upperangle+2,in=180-\pingu@x@mitra@lowerangle-2] ++(-\pingu@x@mitra@overset-\pingu@mitra@w@half+.66mm,-.7*\pingu@x@mitra@height+.1mm) [sharp corners] -- cycle;
+\pingu@block{\pingu@color@mitra} \pingu@x@mitra@path;
+% \pingu@block{\pingu@color@mitra} \pingupathmitraupper;
+\scope\clip\pingu@x@mitra@path;
+% TODO: switch to factors non relative to \pingu@x@mitra@overset
+\pingu@block{\pingu@color@mitra@lower@band} (0,-.2185cm)++(180:\pingu@mitra@w@half{} and .035cm) arc (180:360:\pingu@mitra@w@half{} and .035cm) -- ++(\pingu@x@mitra@lowerband@height*\pingu@x@mitra@overset,\pingu@x@mitra@lowerband@height*.3*\pingu@x@mitra@height) arc (0:-180:{\pingu@x@mitra@lowerband@height*\pingu@x@mitra@overset+\pingu@mitra@w@half} and .035cm) -- cycle;
+\pingu@block{\pingu@color@mitra@center@band} (\pingu@x@mitra@centerband@width*\pingu@x@mitra@overset+.1mm,-.2185cm) to[bend right=4] ++(0,\pingu@x@mitra@height) to[bend right] ++(-2*\pingu@x@mitra@centerband@width*\pingu@x@mitra@overset-.1mm,0) to[bend left=4] ++(0,-\pingu@x@mitra@height) -- cycle;
+\pingu@block{\pingu@color@mitra@upper@band} (0,.3*\pingu@x@mitra@height-.2185cm-0.5*\pingu@x@mitra@upperband@height*.3*\pingu@x@mitra@height)++(180:{\pingu@x@mitra@overset+\pingu@mitra@w@half} and .035cm) arc (180:360:{\pingu@x@mitra@overset+\pingu@mitra@w@half} and .035cm) -- ++(0,\pingu@x@mitra@upperband@height*.3*\pingu@x@mitra@height) arc (0:-180:{\pingu@x@mitra@overset+\pingu@mitra@w@half} and .035cm) -- cycle;
+\endscope\endscope}
+% #endregion
+
+% #region horse-lib
+\colorlet{base@a}{lightgray!95!black}
+\colorlet{base@b}{lightgray!79!black}
+
+\colorlet{a}{lightgray!63!black}
+\colorlet{b}{lightgray!81!black}
+\def\basew{12}
+\def\pingu@@horse@scale{.1}
+
+\def\pingu@@horse@@main{(1.275,.55) -- ++(\if@pingu@@horse@@donkey@.05\else.1\fi,.2) -- ++(\if@pingu@@horse@@donkey@-.2\else-.25\fi,.25) to[bend right=4] ++(-.425,1.75) to[bend left=15] ++(.05,.2) to[bend right=30] ++(-.1,1.9) to[bend left=30] ++(0,1.65) coordinate(@back) to[bend left=30] ++(2,.625) to[bend right=18,looseness=.8] ++(3.25,-.1) [rounded corners=2*\pingu@@horse@scale] coordinate(@hair) to[out=34,in=185] ++(3,1.3) to[bend left=19] coordinate[pos=.5](@ear) ++(.85,-.4) to[bend left=5] ++(.24,-.45) to[bend right=20] ++(\if@pingu@@horse@@donkey@.25\else0\fi,\if@pingu@@horse@@donkey@-1.2\else-.7\fi) to[bend left=2] ++(.1,-.55) to[out=-85,in=-60,looseness=.75] ++(\if@pingu@@horse@@donkey@-.55\else-.475\fi,\if@pingu@@horse@@donkey@-.45\else-.35\fi) coordinate(@mouth) to[out=-135,in=-120] ++(\if@pingu@@horse@@donkey@-.4\else-.37\fi,\if@pingu@@horse@@donkey@.2\else.25\fi) -- ++(0,.1)
+to[out=125,in=-68] ++(-.58,.615) coordinate (@mouth-low)
+to[out=215,in=80] ++(-1.25,-2) to[bend left=24] ++(-.65,-1) to[out=258,in=86] ++(-.42,-1.25) to[bend left=3] ++(-.2,-.6) to[bend right=10] ++(-.14,-1.15) to[bend left=2] coordinate[pos=.62] (@hooffront) ++(.355,-.565) to[bend left=15] ++(-.4,-.075) to[bend left=10] ++(-.28,.1) to[bend left=9] ++(.06,.3) to[bend right=9] ++(-.2,.4) to[out=80,in=-80] ++(.138,1.4) to[out=70,in=-103] ++(.2,1.3) to[bend right=10] ++(-.225,.44) coordinate (@frontleg) to[out=196,in=\if@pingu@@horse@@donkey@-65\else-25\fi] ++(-3.3,\if@pingu@@horse@@donkey@.4\else.575\fi) coordinate (@backleg) to[bend right=\if@pingu@@horse@@donkey@16\else10\fi] ++(-.8,\if@pingu@@horse@@donkey@-1.375\else-1.5\fi) to[bend right=\if@pingu@@horse@@donkey@9\else20\fi] ++(.1,-2.35) -- ++(\if@pingu@@horse@@donkey@.1\else.2\fi,-.25)
+coordinate (@hoofback) to[bend right=\if@pingu@@horse@@donkey@9\else8\fi] ++(.15,-.26) to[bend left=10] ++(\if@pingu@@horse@@donkey@-.66\else-.55\fi,\if@pingu@@horse@@donkey@-.15\else-.05\fi) -- cycle}
+
+% #1 is the wing for the color and key assignments
+\def\pingu@@drawer@horse#1{
+% this ensures all coordinates are set in place
+% i know this i inefficient, but atm this is of no greater
+% concern -- i can not use layers as they would clash with that
+% of the penguin and who wants that... no one does!
+% penguins deserve freedom!
+\path \pingu@@horse@@main;
+
+% no we draw "behind" the horse:
+
+% Sockel
+\csname if@pingu@x@horse@#1@base@\endcsname
+\pingu@block[draw=\csname pingu@color@horse#1@base@shade@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@base@shade\endcsname} (4.35-\basew/2,.433) -- ++(0,-.5) arc(180:360:\basew/2 and 1) -- ++(0,.5) arc(360:180:\basew/2 and 1);
+\pingu@block[draw=\csname pingu@color@horse#1@base@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@base\endcsname} (4.35,.433) ellipse[x radius=\basew/2,y radius=1];
+\fi
+% background front leg
+\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1\endcsname} [rounded corners=1*\pingu@@horse@scale](@frontleg) to[out=266,in=85] ++(.09,-.5) to[bend left=10] ++(-.15,-.8)
+to[bend right=7] ++(-.05,-.2) to[bend left=13] ++(-.2,-1.15) to[bend right=13] ++(.15,-.2) to[bend left=10] ++(-.07,-.3) to[bend right=100] ++(.45,-.1) to[bend right=10] coordinate[pos=0.08](@hooffront@) ([yshift=5mm,xshift=3mm]@frontleg) -- cycle;
+\pingu@block[draw=\csname pingu@color@horse#1@fr@hoof\endcsname!80!pingu@black,line width=2pt*\pingu@@horse@scale,rounded corners=.12]{\csname pingu@color@horse#1@fr@hoof\endcsname} (@hooffront@) to[bend left=2] ++(0,-.565*.665) to[bend left=59] ++(-.225,-.08) -- ++(-.02,.03) to[bend left=20] ++(-.315,.11) to[bend right=6] ++(.092,.2) to[bend right=25] cycle;
+% background back le0
+\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1\endcsname} [rounded corners=1*\pingu@@horse@scale](@backleg) to[out=-115,in=\if@pingu@@horse@@donkey@120\else130\fi] ++(-.3,-3.5) -- ++(.2,-.3) coordinate(@hoofback@) to[bend left] ++(-.5,-.1)
+-- ++(\if@pingu@@horse@@donkey@-.2\else-.05\fi,.15) -- ++(0,.15) to[bend left=\if@pingu@@horse@@donkey@45\else60\fi] cycle;
+\pingu@block[draw=\csname pingu@color@horse#1@br@hoof\endcsname!80!pingu@black,line width=2pt*\pingu@@horse@scale]{\csname pingu@color@horse#1@br@hoof\endcsname} (@hoofback@) to[bend right=\if@pingu@@horse@@donkey@9\else9\fi] ++(.206,-.265) to[bend left=10] ++(\if@pingu@@horse@@donkey@-.66\else-.55\fi,\if@pingu@@horse@@donkey@-.15\else-.05\fi) -- ++(-1.73mm,2.42mm) to[bend right=6] cycle;
+
+\if@pingu@@horse@@donkey@
+\pingu@block[draw=\csname pingu@color@horse#1@tail@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@tail\endcsname} [rounded corners=1*\pingu@@horse@scale](@back) to[out=215,in=95] ++(-.1,-2) to[out=270,in=92] ++(0,-.75) [sharp corners] to[bend right=20] coordinate[pos=.5] (@) ++(.15,0) to[bend right=10] cycle;
+% TODO: hide support
+%\node[draw=\csname pingu@color@horse#1@tail@draw\endcsname,fill=\csname pingu@color@horse#1@tail\endcsname,cloud,cloud puffs=30,cloud ignores aspect,scale=1.33*\pingu@@horse@scale,yshift=16mm,rotate=-5,line width=\@pingu@@horse@lw*\pingu@@horse@scale] at (@) {\rotatebox{90}{\phantom{A}\hskip7.5em}};
+\scope[rotate around={180:(@)}] % adapted from the broom
+\pingu@block[rounded corners=.44pt,draw=\csname pingu@color@horse#1@tail@draw\endcsname]{\csname pingu@color@horse#1@tail\endcsname} (@)++(-1mm,-2mm) to[out=115,in=240] ++(3mm,12.5mm) to[out=300,in=65] ([xshift=.95mm,yshift=-2mm]@) to[bend right=4] ([xshift=-.75mm,yshift=-2mm]@) -- cycle;
+\pingu@block[rounded corners=.44pt,draw=\csname pingu@color@horse#1@tail@draw\endcsname]{\csname pingu@color@horse#1@tail\endcsname} (@)++(-1mm,-2mm) to[out=115,in=240] coordinate[pos=.17] (@r) coordinate[pos=.19] (@r2) ++(-.75mm,10.5mm) to[out=300,in=65] ([xshift=.95mm,yshift=-2mm]@) to[bend right=4] ([xshift=-.75mm,yshift=-2mm]@) -- cycle;
+\pingu@block[rounded corners=.44pt,draw=\csname pingu@color@horse#1@tail@draw\endcsname]{\csname pingu@color@horse#1@tail\endcsname}(@)++(-.5mm,-1.5mm) to[out=115,in=240] ++(.5mm,12mm) to[out=300,in=65] ([xshift=.5mm,yshift=-1.5mm]@) -- cycle;
+\endscope
+\else
+\pingu@block[draw=\csname pingu@color@horse#1@tail@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@tail\endcsname} [rounded corners=1*\pingu@@horse@scale](@back) to[out=215,in=90] ++(-.4,-2.5) to[out=270,in=92] ++(0,-2.8) [sharp corners] to[bend right=20] ++(.6,0) to[bend right=10] cycle;
+\fi
+
+% back ear
+\if@pingu@@horse@@donkey@
+\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@ears\endcsname} ([xshift=.2mm,yshift=-1.5mm]@ear) to[bend left=20] ++(.373,1.465) coordinate(@) to[bend left=10] ++(-.15,-1.5);
+\else
+\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@ears\endcsname} ([xshift=.2mm,yshift=-1.5mm]@ear) to[bend left=20] ++(.373,.565) coordinate(@) to[bend left=10] ++(-.15,-.75);
\fi
+% and here comes the wheeee (imagine-horse-sound)
+\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1\endcsname} [rounded corners=1*\pingu@@horse@scale] \pingu@@horse@@main;
+
+\pingu@draw[line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@draw\endcsname} ([yshift=-.1mm]@mouth-low) to[bend left=12] ++(.06,.65);
+\pingu@draw[line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@mouth\endcsname} ([yshift=-.115mm]@mouth) -- ++(-.035,.225);
+
+\edef\pingu@tmp{\if@pingu@@horse@@donkey@4.5mm\else3.85mm\fi}%
+\edef\pingu@tmpb{\if@pingu@@horse@@donkey@3.65mm\else2.45mm\fi}%
+\pingu@draw[line width=\@pingu@@horse@lw*\pingu@@horse@scale,line join=round]{\csname pingu@color@horse#1@nose\endcsname} ([xshift=\pingu@tmp,yshift=\pingu@tmpb]@mouth) to[out=140,in=10] ++(-.17,-.074) to[bend right=49] cycle;
+
+\pingu@draw[line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@draw\endcsname} ([yshift=-.35mm]@frontleg) to[bend left=12] ++(.01,.325);
+\pingu@draw[line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@draw\endcsname} ([yshift=-.2mm]@backleg) to[bend right=13] ++(.25,.425);
+
+\if@pingu@@horse@@donkey@
+\pingu@block[draw=\csname pingu@color@horse#1@mane@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@mane\endcsname} [rounded corners=1*\pingu@@horse@scale](@hair) to[out=34,in=185] ++(3,1.3) to[bend left=10] ++(.415,-.1) -- ++(-.1,-.25) to[out=186,in=35] ([yshift=-4mm,xshift=1.5mm]@hair) -- cycle;
+
+\pingu@block[draw=\csname pingu@color@horse#1@thatch@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@thatch\endcsname} [rounded corners=1*\pingu@@horse@scale]([xshift=2.1mm,yshift=-1.05mm]@ear) -- ++(-.1,-.2) to[bend left=4] ++(.45,-.275) to[bend right=9] cycle;
+\else
+\pingu@block[draw=\csname pingu@color@horse#1@mane@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@mane\endcsname} [rounded corners=1*\pingu@@horse@scale](@hair) to[out=34,in=185] ++(3,1.3) to[bend left=10] ++(.415,-.1) -- ++(-.1,-.4) to[out=194,in=30] ([yshift=-11.5mm,xshift=1.5mm]@hair) -- cycle;
+
+\pingu@block[draw=\csname pingu@color@horse#1@thatch@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@thatch\endcsname} [rounded corners=1*\pingu@@horse@scale]([xshift=2mm,yshift=-1mm]@ear) -- ++(-.1,-.3275) to[bend left=4] ++(.455,-.175) to[bend right=9] cycle;
+\fi
+
+% ear
+\if@pingu@@horse@@donkey@
+\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@ears\endcsname} ([xshift=-1mm,yshift=-1mm]@ear) to[bend left=15] ++(.393,1.685) coordinate(@) to[bend right=17] ++(-.15,-1.8);
+\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@ears\endcsname} (@) to[bend right=17] ++(-.15,-1.8) to[bend right=14] cycle;
+\else
+\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@ears\endcsname} ([xshift=-.75mm,yshift=-1mm]@ear) to[bend left=20] ++(.393,.585) coordinate(@) to[bend right=10] ++(-.15,-.7);
+\pingu@block[draw=\csname pingu@color@horse#1@draw\endcsname,line width=\@pingu@@horse@lw*\pingu@@horse@scale]{\csname pingu@color@horse#1@ears\endcsname} (@) to[bend right=7] ++(-.15,-.7) to[bend right=14] cycle;
+\fi
+
+% the eye; this is no error it has draw as fill
+\pingu@block{\csname pingu@color@horse#1@eyes\endcsname} [rounded corners=.25*\pingu@@horse@scale] ([xshift=3mm,yshift=-7.5mm]@ear) to[bend right=20] ++(.125,-.2) to[bend right=50] ++(.1,.125) to[bend left=15] cycle;
+
+\pingu@block[draw=\csname pingu@color@horse#1@fl@hoof\endcsname!80!pingu@black,line width=2pt*\pingu@@horse@scale]{\csname pingu@color@horse#1@fl@hoof\endcsname} (@hooffront) to[bend left=2] ++(.355*.49,-.545*.49) to[bend left=11] ++(-.45-.295,-.05+0.033)to[bend right=2] ++(.046,.29) to[bend right=10] cycle;
+\pingu@block[draw=\csname pingu@color@horse#1@bl@hoof\endcsname!80!pingu@black,line width=2pt*\pingu@@horse@scale]{\csname pingu@color@horse#1@bl@hoof\endcsname} (@hoofback) to[bend right=\if@pingu@@horse@@donkey@9\else8\fi] ++(.15,-.26) to[bend left=10] ++(\if@pingu@@horse@@donkey@-.66\else-.55\fi,\if@pingu@@horse@@donkey@-.15\else-.05\fi) -- ++(-1.73mm,2.42mm) to[bend right=6] cycle; %to[bend left=2] ++(.355*.65,-.565*.65) to[bend left=15] ++(-.395,-.075) to[bend left=10] ++(-.293,.105) to[bend left=9] ++(.06,.3) to[bend left=5] cycle;
+}
+
+% universal switch for all three positions
+\newif\if@pingu@@horse@@donkey@
+
+\newif\if@pingu@x@horse@left@flip@
+\newif\if@pingu@x@horse@right@flip@
+\newif\if@pingu@x@horse@left@base@
+\newif\if@pingu@x@horse@right@base@
+\newif\if@pingu@x@horse@left@donkey@
+\newif\if@pingu@x@horse@right@donkey@
+\pingu@create@wing@extra{horse}{%
+ horse \@lr/.code = {\pingu@set@extra{horse\@lr}{true}\pingu@color{horse\@lr}{##1}},
+ horse \@lr/.default = pingu@bronze!80!pingu@black,
+ horse \@lr\space flip/.is if = @pingu@x@horse@\@lr @flip@,
+ horse \@lr\space donkey/.is if = @pingu@x@horse@\@lr @donkey@,
+ horse \@lr\space has base/.is if = @pingu@x@horse@\@lr @base@,
+ horse \@lr\space draw/.code = \pingu@color{horse\@lr @draw}{##1},%
+ horse \@lr\space line width/.code = \@namedef{pingu@horse\@lr @x@line@width}{##1},%
+ horse \@lr\space mane/.code = \pingu@color{horse\@lr @mane}{##1},%
+ horse \@lr\space mane draw/.code = \pingu@color{horse\@lr @mane@draw}{##1},%
+ horse \@lr\space thatch/.code = \pingu@color{horse\@lr @thatch}{##1},%
+ horse \@lr\space thatch draw/.code = \pingu@color{horse\@lr @thatch@draw}{##1},%
+ horse \@lr\space tail/.code = \pingu@color{horse\@lr @tail}{##1},%
+ horse \@lr\space tail draw/.code = \pingu@color{horse\@lr @tail@draw}{##1},%
+ horse \@lr\space eyes/.code = \pingu@color{horse\@lr @eyes}{##1},%
+ horse \@lr\space eye/.forward to = /pingu/horse \@lr\space eyes,%
+ horse \@lr\space mouth/.code = \pingu@color{horse\@lr @mouth}{##1},%
+ horse \@lr\space nose/.code = \pingu@color{horse\@lr @nose}{##1},%
+ horse \@lr\space ears/.code = \pingu@color{horse\@lr @ears}{##1},%
+ horse \@lr\space base/.code = \pingu@color{horse\@lr @base}{##1},%
+ horse \@lr\space base draw/.code = \pingu@color{horse\@lr @base@draw}{##1},%
+ horse \@lr\space base shade/.code = \pingu@color{horse\@lr @base@shade}{##1},%
+ horse \@lr\space base shade draw/.code = \pingu@color{horse\@lr @base@shade@draw}{##1},%
+ horse \@lr\space front left hoof/.code = \pingu@color{horse\@lr @fl@hoof}{##1},%
+ horse \@lr\space front right hoof/.code= \pingu@color{horse\@lr @fr@hoof}{##1},%
+ horse \@lr\space back left hoof/.code = \pingu@color{horse\@lr @bl@hoof}{##1},%
+ horse \@lr\space back right hoof/.code = \pingu@color{horse\@lr @br@hoof}{##1},%
+ horse \@lr\space front hoofs/.style = {/pingu/horse \@lr\space front left hoof=##1,/pingu/horse \@lr\space front right hoof=##1},
+ horse \@lr\space back hoofs/.style = {/pingu/horse \@lr\space back left hoof=##1,/pingu/horse \@lr\space back right hoof=##1},
+ horse \@lr\space hoofs/.style = {/pingu/horse \@lr\space front hoofs=##1,/pingu/horse \@lr\space back hoofs=##1},
+ horse \@lr\space hoofs/.default = gray!80!white,
+ % TODO: allow colors to be styles?
+ horse \@lr\space xshift/.code = \@namedef{pingu@x@horse\@lr @xshift}{##1},
+ horse \@lr\space yshift/.code = \@namedef{pingu@x@horse\@lr @yshift}{##1},
+ horse \@lr\space on base/.style ={/pingu/horse \@lr\space yshift=4cm},
+}{horse \@lr\space draw=\csname pingu@color@horse\@lr\endcsname!80!pingu@black,horse \@lr\space mane=\csname pingu@color@horse\@lr\endcsname!86!pingu@white,horse \@lr\space mane draw=\csname pingu@color@horse\@lr @mane\endcsname!80!pingu@black,horse \@lr\space eyes=\csname pingu@color@horse\@lr @draw\endcsname,horse \@lr\space mouth=\csname pingu@color@horse\@lr @draw\endcsname,horse \@lr\space nose=\csname pingu@color@horse\@lr @draw\endcsname,horse \@lr\space ears=\csname pingu@color@horse\@lr\endcsname,horse \@lr\space thatch=\csname pingu@color@horse\@lr @mane\endcsname,horse \@lr\space thatch draw=\csname pingu@color@horse\@lr @thatch\endcsname!80!pingu@black,horse \@lr\space tail=\csname pingu@color@horse\@lr @mane\endcsname,horse \@lr\space tail draw=\csname pingu@color@horse\@lr @tail\endcsname!80!pingu@black,horse \@lr\space has base=false,horse \@lr\space base=lightgray!90!black,horse \@lr\space base draw=\csname pingu@color@horse\@lr @base\endcsname!91!pingu@black,horse \@lr\space base shade=lightgray!80!black,horse \@lr\space base shade draw=\csname pingu@color@horse\@lr @base@shade\endcsname!91!pingu@black,horse \@lr\space xshift=0pt,horse \@lr\space yshift=0pt,horse \@lr\space flip=\ifx\@lr\pingu@str@wing@left true\else false\fi,horse \@lr\space donkey=false,horse \@lr\space line width=1.75pt,horse \@lr\space hoofs=\@pingu@none}
+
+\def\pingu@draw@wi@horse#1{%
+ \pingu@setup@wing{horse}{#1}%
+\scope[scale=\pingu@@horse@scale,every path/.append style={line cap=round, line join=round},shift=(\pingu@name-wing-#1),rotate around={\@angle-5:(\pingu@name-wing-#1)}]
+\csname if@pingu@x@horse@#1@flip@\endcsname
+\scope[xshift=-4cm-\csname pingu@x@horse#1@xshift\endcsname,yshift=-42mm+\csname pingu@x@horse#1@yshift\endcsname]
+\else
+\scope[xshift=4cm+\csname pingu@x@horse#1@xshift\endcsname,yshift=-42mm+\csname pingu@x@horse#1@yshift\endcsname,xscale=-1]
+\fi
+\csname if@pingu@x@horse@#1@donkey@\endcsname
+ \@pingu@@horse@@donkey@true
+\fi
+ \edef\@pingu@@horse@lw{\csname pingu@horse#1@x@line@width\endcsname}
+ \pingu@@drawer@horse{#1}
+ % TODO-SET: hoof
+\endscope\endscope
+}
+% todo: make statue extra
+% todo: make horse hat
+
+% to get on horse we create some kind of third wing item: 'on'
+% that will be used to initialize all of the colors and keys
+\newif\if@pingu@x@horse@on@flip@
+\newif\if@pingu@x@horse@on@base@
+\newif\if@pingu@x@horse@on@boundingbox@
+\newif\if@pingu@x@horse@on@donkey@
+% TODO: select keys
+% TODO: option so it does not affect the bounding box (default!)
+\pingu@create@extra{horseon}{%
+ on horse/.code = {\pingu@set@extra{horseon}{true}\pingu@color{horseon}{#1}},
+ on horse/.default = pingu@bronze!80!pingu@black,
+ horse behind/.style = {on horse=#1, on horse scale=.325, on horse yshift=6.15cm},
+ horse behind/.default = pingu@bronze!80!pingu@black,
+ on horse flip/.is if = @pingu@x@horse@on@flip@,
+ on horse donkey/.is if = @pingu@x@horse@on@donkey@,
+ on horse has base/.is if = @pingu@x@horse@on@base@,
+ on horse has bounding box/.is if = @pingu@x@horse@on@boundingbox@,
+ on horse draw/.code = \pingu@color{horseon@draw}{#1},%
+ on horse line width/.code = \@namedef{pingu@horseon@x@line@width}{#1},%
+ on horse mane/.code = \pingu@color{horseon@mane}{#1},%
+ on horse mane draw/.code = \pingu@color{horseon@mane@draw}{#1},%
+ on horse thatch/.code = \pingu@color{horseon@thatch}{#1},%
+ on horse thatch draw/.code = \pingu@color{horseon@thatch@draw}{#1},%
+ on horse tail/.code = \pingu@color{horseon@tail}{#1},%
+ on horse tail draw/.code = \pingu@color{horseon@tail@draw}{#1},%
+ on horse eyes/.code = \pingu@color{horseon@eyes}{#1},%
+ on horse eye/.forward to = /pingu/on horse eyes,%
+ on horse mouth/.code = \pingu@color{horseon@mouth}{#1},%
+ on horse nose/.code = \pingu@color{horseon@nose}{#1},%
+ on horse ears/.code = \pingu@color{horseon@ears}{#1},%
+ on horse base/.code = \pingu@color{horseon@base}{#1},%
+ on horse base draw/.code = \pingu@color{horseon@base@draw}{#1},%
+ on horse base shade/.code = \pingu@color{horseon@base@shade}{#1},%
+ on horse base shade draw/.code = \pingu@color{horseon@base@shade@draw}{#1},%
+ on horse front left hoof/.code = \pingu@color{horseon@fl@hoof}{#1},%
+ on horse front right hoof/.code = \pingu@color{horseon@fr@hoof}{#1},%
+ on horse back left hoof/.code = \pingu@color{horseon@bl@hoof}{#1},%
+ on horse back right hoof/.code = \pingu@color{horseon@br@hoof}{#1},%
+ on horse front hoofs/.style = {/pingu/on horse front left hoof=#1,/pingu/on horse front right hoof=#1},
+ on horse back hoofs/.style = {/pingu/on horse back left hoof=#1,/pingu/on horse back right hoof=#1},
+ on horse hoofs/.style = {/pingu/on horse front hoofs=#1,/pingu/on horse back hoofs=#1},
+ on horse hoofs/.default = gray!80!white,
+ on horse xshift/.code = \@namedef{pingu@x@horseon@xshift}{#1},
+ on horse yshift/.code = \@namedef{pingu@x@horseon@yshift}{#1},
+ on horse scale/.code = \@namedef{pingu@x@horseon@scale}{#1}
+}{on horse draw=\pingu@color@horseon!80!pingu@black,on horse mane=\pingu@color@horseon!86!pingu@white,on horse mane draw=\pingu@color@horseon@mane!80!pingu@black,on horse eyes=\pingu@color@horseon@draw,on horse mouth=\pingu@color@horseon@draw,on horse nose=\pingu@color@horseon@draw,on horse ears=\pingu@color@horseon,on horse thatch=\pingu@color@horseon@mane,on horse thatch draw=\pingu@color@horseon@thatch!80!pingu@black,on horse tail=\pingu@color@horseon@mane,on horse tail draw=\pingu@color@horseon@tail!80!pingu@black,on horse has base=false,on horse base=lightgray!90!black,on horse base draw=\pingu@color@horseon@base!91!pingu@black,on horse base shade=lightgray!80!black,on horse base shade draw=\pingu@color@horseon@base@shade!91!pingu@black,on horse xshift=0pt,on horse yshift=0pt,on horse flip=false,on horse scale=0.75,on horse has bounding box=false,on horse donkey=false,on horse line width=1.75pt,on horse hoofs=\@pingu@none}
+
+
+\def\pingu@draw@eb@horseon{%
+\pingu@layer{background}[scale=\pingu@x@horseon@scale,every path/.append style={line cap=round, line join=round},shift=(\pingu@name-bottom-center)]
+\if@pingu@x@horse@on@donkey@
+ \@pingu@@horse@@donkey@true
+\fi
+\if@pingu@x@horse@on@flip@
+ \scope[xshift=-45mm-\pingu@x@horseon@xshift,yshift=-67mm+\pingu@x@horseon@yshift,xscale=\if@pingu@x@horse@on@donkey@ 1.1\else1\fi,yscale=\if@pingu@@horse@@donkey@.9\else1\fi]
+ \else
+ \scope[xshift=45mm+\pingu@x@horseon@xshift,yshift=-67mm+\pingu@x@horseon@yshift,xscale=\if@pingu@x@horse@on@donkey@-1.1\else-1\fi,yscale=\if@pingu@@horse@@donkey@.9\else1\fi]
+ \fi
+\edef\@pingu@@horse@lw{\pingu@horseon@x@line@width}
+\if@pingu@x@horse@on@boundingbox@\else\pgfinterruptboundingbox\fi
+ \pingu@@drawer@horse{on}
+\if@pingu@x@horse@on@boundingbox@\else\endpgfinterruptboundingbox\fi
+\endscope\endpingu@layer
+}
+% #endregion
+
+% #region magic-lib
+\pingu@create@wing@extra{handcast}{%
+ handcast \@lr/.forward to = /pingu/hand cast \@lr,
+ hand cast \@lr/.code = {\pingu@set@extra{handcast\@lr}{true}\@namedef{pingu@handcast@\@lr}{##1}},
+ hand cast \@lr/.default = {X},
+ handcast \@lr\space color/.forward to = /pingu/hand cast \@lr\space color,
+ hand cast \@lr\space color/.code = \pingu@color{handcast@\@lr @color}{##1},%
+}{hand cast \@lr\space color=pingu@purple}
+\def\pingu@draw@wi@handcast#1{%
+ \pingu@setup@wing{handcast}{#1}%
+ \path[rotate around={\@angle:(\pingu@name-wing-#1)}] (\pingu@name-wing-#1)++(0,5mm) node[\csname pingu@color@handcast@#1@color\endcsname] {\@nameuse{pingu@handcast@#1}};
+}
+% #endregion
+
+% #region medieval-lib
+\newif\if@pingu@x@rook@draw@hatch@
+\pingu@create@extra{rook}{%
+ rook/.code = \pingu@set@extra{rook}{true}\pingu@color{rook}{#1},
+ rook/.default = pingu@silver,
+ rook back/.code = \pingu@color{rook@back}{#1},
+ rook hatch/.is if = @pingu@x@rook@draw@hatch@,
+ rook hatch/.default = true,
+ rook shade/.code = \pingu@color{rook@shade}{#1},
+}{rook back=\pingu@color@rook!85!black,rook shade=\pingu@color@rook!92!black,rook hatch}
+\def\pingu@draw@ea@rook{%
+\if@pingu@do@back@\else\if@pingu@x@rook@draw@hatch@\else\pingu@layer{foreground}[]\fi\fi
+ \pingu@block[even odd rule]{\pingu@color@rook} ([xshift=-.2mm]\pingu@name-wings-side-right|-\pingu@name-foot-right) [rounded corners=\p@] to[bend right=9] coordinate[pos=.15] (@tmpe) ([xshift=.2mm]\pingu@name-wings-side-left|-\pingu@name-foot-left) [sharp corners] to[bend right=1.5*\pingu@bend] (\pingu@name-wings-side-left|-\pingu@name-head-top) coordinate (@tmp) to[bend left=3] coordinate[pos=.3] (@tmpc) coordinate[pos=.7] (@tmpd) (\pingu@name-wings-side-right|-\pingu@name-head-top) [rounded corners=\p@] coordinate (@tmpb) to[bend right=1.5*\pingu@bend] cycle \if@pingu@x@rook@draw@hatch@ (\pingu@name-head-center) ellipse[x radius=.8\pingu@w@half, y radius=.45\pingu@w@half]\fi;
+ \pingu@block{\pingu@color@rook} (@tmp) to[bend right=2] ++(0,2mm) [rounded corners=.25mm] to[bend left=1] ++(-2mm,-.1mm) -- ++(0,-2.25mm);
+ \pingu@block{\pingu@color@rook} (@tmpb) to[bend left=2] ++(0,2mm) [rounded corners=.25mm] to[bend right=1] ++(2mm,-.1mm) -- ++(0,-2.25mm);
+
+ \pingu@block{\pingu@color@rook} (@tmpc)++(-2mm,-.25mm) [rounded corners=.25mm] to[bend left=2] ++(0,2.25mm) to[bend right=1] ++(4mm,.05mm) -- ++(0,-2.25mm);
+ \pingu@block{\pingu@color@rook} (@tmpd)++(2mm,-.25mm) [rounded corners=.25mm] to[bend left=2] ++(0,2.25mm) to[bend left=1] ++(-4mm,-.05mm) -- ++(0,-2.25mm);
+
+ % custom shade boi (or gurl, wateva)
+ \scope
+ \clip ([xshift=-.2mm]\pingu@name-wings-side-right|-\pingu@name-foot-right) [rounded corners=\p@] to[bend right=5] ([xshift=.2mm]\pingu@name-wings-side-left|-\pingu@name-foot-left) [sharp corners] to[bend right=1.5*\pingu@bend] (\pingu@name-wings-side-left|-\pingu@name-head-top) -- ++(0,2mm) to[bend left=3] (\pingu@name-wings-side-right|-\pingu@name-head-top) to[bend right=1.5*\pingu@bend] cycle;
+ \if@pingu@x@rook@draw@hatch@
+ \clip[/pingu/@invclip] (\pingu@name-head-center) ellipse[x radius=.8\pingu@w@half, y radius=.45\pingu@w@half];
+ \fi
+ \pingu@block{\pingu@color@rook@shade} (@tmpe) to[bend right=5] ([xshift=.2mm]@tmpe-|@tmp) to[bend right=1.5*\pingu@bend] ([yshift=2mm]@tmp) to[bend left=10] cycle;
+ \endscope
+ \if@pingu@do@back@\else\if@pingu@x@rook@draw@hatch@\else\endpingu@layer\fi\fi
+
+ \pingu@layer{background}[]
+ \pingu@block{\pingu@color@rook@back} (@tmp) to[bend right=3] coordinate[pos=.3] (@tmpc) coordinate[pos=.7] (@tmpd) (@tmpb) to[bend right=30] cycle;
+ \pingu@block{\pingu@color@rook@back} (@tmpb) to[bend left=2] ++(0,2mm) [rounded corners=.25mm] to[bend left=1] ++(2mm,.1mm) -- ++(0,-2.25mm);
+ \pingu@block{\pingu@color@rook@back} (@tmp) to[bend right=2] ++(0,2mm) [rounded corners=.25mm] to[bend right=1] ++(-2mm,.1mm) -- ++(0,-2.25mm);
+
+ \pingu@block{\pingu@color@rook@back} (@tmpc)++(-2mm,-.49mm) [rounded corners=.25mm] to[bend left=2] ++(0,2.25mm) to[bend right=1] ++(4mm,.05mm) -- ++(0,-2.25mm);
+ \pingu@block{\pingu@color@rook@back} (@tmpd)++(2mm,-.49mm) [rounded corners=.25mm] to[bend left=2] ++(0,2.25mm) to[bend left=1] ++(-4mm,-.05mm) -- ++(0,-2.25mm);
+ \endpingu@layer
+}
+
+\newif\if@pingu@x@crown@ddd@ % 3d
+\newif\if@pingu@x@crown@shade@ % 3d
+\pingu@create@extra{crown}{%
+ crown/.code = \pingu@set@extra{crown}{true}\pingu@color{crown}{#1},
+ crown/.default = pingu@yellow,
+ crown 3d/.is if = @pingu@x@crown@ddd@, crown 3d/.default = true,
+ crown 2d/.style = {crown=#1, crown 3d=false},
+ crown 2d/.default = pingu@yellow,
+ crown back/.code = \pingu@color{crown@back}{#1},
+ crown front bend/.code = \def\pingu@x@crown@f@bend{#1},
+ crown back bend/.code = \def\pingu@x@crown@b@bend{#1},
+ crown gem shade/.is if = @pingu@x@crown@shade@, crown gem shade/.default = true,
+ crown gem colors/.code n args = 7{\pingu@color{crown@gem@a}{#1}\pingu@color{crown@gem@b}{#2}\pingu@color{crown@gem@c}{#3}\pingu@color{crown@gem@d}{#4}\pingu@color{crown@gem@e}{#5}\pingu@color{crown@gem@f}{#6}\pingu@color{crown@gem@g}{#7}},
+ crown gem ring/.code = \pingu@color{crown@gem@ring}{#1},
+ crown position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@crown@angle{#1}\def\pingu@x@crown@xshift{#2}\def\pingu@x@crown@yshift{#3}\def\pingu@x@crown@scale{#4}},
+}{crown position={-9:(1mm,0mm)1},crown front bend=16,crown back bend=9,crown back=\pingu@color@crown!93!black,crown 3d,crown gem colors={pingu@purple}{pingu@blue}{pingu@green}{pingu@purple}{pingu@green}{pingu@blue}{pingu@purple},crown gem ring=\pingu@color@crown!85!white,crown gem shade}
+
+% color | bend1 | bend1
+\def\pingu@draw@ea@crown@s#1#2#3{
+\pingu@block{#1} [rounded corners=.2mm](-6.25mm,-.25cm) to[bend left=2] ++(0,3.125mm) to[bend #2=\pingu@x@crown@f@bend]
+ coordinate[pos=0] (r2) coordinate[pos=.07] (r1)
+ coordinate[pos=.14-.07] (a1) coordinate[pos=.14] (a2) coordinate[pos=.14+.07] (a3)
+ coordinate[pos=.30-.08] (b1) coordinate[pos=.30] (b2) coordinate[pos=.30+.08] (b3)
+ coordinate[pos=.50- .1] (c1) coordinate[pos=.50] (x2) coordinate[pos=.50+ .1] (c3)
+ coordinate[pos=.69-.08] (d1) coordinate[pos=.69] (d2) coordinate[pos=.69+.08] (d3)
+ coordinate[pos=.85-.07] (e1) coordinate[pos=.85] (e2) coordinate[pos=.85+.07] (e3)
+ coordinate[pos=1] (l2) coordinate[pos=.93] (l1)
+ ++(1.375cm,0) to[bend left=2] ++(0,-3.125mm) to[bend #3=\pingu@x@crown@f@bend] (-6mm,-.25cm) -- cycle;
+\path (x2)++(0,.9mm) coordinate (c2);
+\@for\a:={a,b,c,d,e}\do{
+ \pingu@block{#1} ([yshift=-.1mm]\a1) to[bend right=\pingu@x@crown@f@bend] ([yshift=-.1mm]\a3) to[bend right=2] ([yshift=1.85mm]\a2) to[bend right=2] ([yshift=-.1mm]\a1) -- cycle;
+}
+\pingu@block{#1} (l2)++(0,-.2mm) to[bend right=2] ++(0,1.95mm) -- (l1) -- cycle;
+\pingu@block{#1} (r2)++(0,-.2mm) to[bend left=2] ++(0,1.95mm) -- (r1) -- cycle;
+}
+
+% color | at | shift | scale
+\def\pingu@draw@ea@crown@g#1#2#3#4{
+\scope[shift={(#22)},shift={(#3,-.33mm)}]
+ \pingu@block{\pingu@color@crown@gem@ring} ellipse [x radius=.715mm*#4, y radius=.925mm*#4];
+ \pingu@block{#1} ellipse [x radius=.633mm*#4, y radius=.85mm*#4];
+ \protected@edef\@tmp{#1}\ifx\@tmp\@pingu@none\else
+ \if@pingu@x@crown@shade@
+ \shade[ball color=#1,fill opacity=.45,shading angle=-95] ellipse [x radius=.633mm*#4, y radius=.85mm*#4];
+ \else
+ \pingu@block[rotate around={7:(42:.3mm*#4 and .4mm*#4)}]{#1!45!pingu@white} (42:.3mm*#4 and .4mm*#4) ellipse[x radius=.17mm*#4, y radius=.24mm*#4];
+ \pingu@block[rotate around={7:(232:.275mm*#4 and .35mm*#4)}]{#1!45!pingu@white} (232:.275mm*#4 and .35mm*#4) ellipse[x radius=.06mm*#4, y radius=.085mm*#4];
+ \fi\fi
+\endscope
+}
+\def\pingu@draw@ea@crown{%
+\scope[rotate around={\pingu@x@crown@angle:(\pingu@name-head-top)},%
+ shift={(\pingu@name-head-top)},
+ shift={(\pingu@x@crown@xshift,\pingu@x@crown@yshift)},
+ scale=\pingu@x@crown@scale]
+% draw front
+\if@pingu@x@crown@ddd@
+ \pingu@draw@ea@crown@s{\pingu@color@crown}{right}{left}
+ \def\@tmpa{.05mm}\def\@tmpb{.025mm}
+\else
+ \pingu@draw@ea@crown@s{\pingu@color@crown}{left}{right}
+ \def\@tmpa{-.015mm}\def\@tmpb{-.035mm}
+\fi
+% draw the emeralds
+\pingu@draw@ea@crown@g{\pingu@color@crown@gem@b}{a}{-\@tmpa}1
+\pingu@draw@ea@crown@g{\pingu@color@crown@gem@c}{b}{-\@tmpb}1
+\pingu@draw@ea@crown@g{\pingu@color@crown@gem@d}{x}{\z@}{1.35}
+\pingu@draw@ea@crown@g{\pingu@color@crown@gem@e}{d}{\@tmpb}1
+\pingu@draw@ea@crown@g{\pingu@color@crown@gem@f}{e}{\@tmpa}1
+\pingu@layer{background}[]
+\pingu@block{\pingu@color@crown@gem@a} (r2)++(0,-.33mm) ellipse [x radius=.3mm, y radius=.8mm];
+\pingu@block{\pingu@color@crown@gem@ring} (r2)++(0,-.33mm) ellipse [x radius=.1mm, y radius=.885mm];
+\pingu@block{\pingu@color@crown@gem@g} (l2)++(0,-.33mm) ellipse [x radius=.3mm, y radius=.8mm];
+\pingu@block{\pingu@color@crown@gem@ring} (l2)++(0,-.33mm) ellipse [x radius=.1mm, y radius=.885mm];
+% draw back if 3d
+\if@pingu@x@crown@ddd@
+ \pingu@draw@ea@crown@s{\pingu@color@crown@back}{left}{right}
+\fi
+\endpingu@layer
+\endscope
+}
+
+\newif\if@pingu@x@princesscrown@ddd@
+\newif\if@pingu@x@princesscrown@shade@
+\newif\if@pingu@x@princesscrown@bobbles@
+\pingu@create@extra{princesscrown}{%
+ princess crown/.code = \pingu@set@extra{princesscrown}{true}\pingu@color{princesscrown}{#1},
+ princess crown/.default = pingu@yellow,
+ princess crown 3d/.is if= @pingu@x@princesscrown@ddd@, princess crown 3d/.default = true,
+ princess crown 2d/.style = {princess crown=#1, princess crown 3d=false},
+ princess crown 2d/.default = pingu@yellow,
+ princess crown back/.code = \pingu@color{princesscrown@back}{#1},
+ princess crown front bend/.code = \def\pingu@x@princesscrown@f@bend{#1},
+ princess crown back bend/.code = \def\pingu@x@princesscrown@b@bend{#1},
+ princess crown gem shade/.is if = @pingu@x@princesscrown@shade@,
+ princess crown bobbles/.is if = @pingu@x@princesscrown@bobbles@,
+ princess crown gem shade/.default = true,
+ princess crown gem colors/.code n args = 5{\pingu@color{princesscrown@gem@a}{#1}\pingu@color{princesscrown@gem@b}{#2}\pingu@color{princesscrown@gem@c}{#3}\pingu@color{princesscrown@gem@d}{#4}\pingu@color{princesscrown@gem@e}{#5}},
+ princess crown gem ring/.code = \pingu@color{princesscrown@gem@ring}{#1},
+ princess crown position/.code args = {#1:(#2,#3)#4}{\def\pingu@x@princesscrown@angle{#1}\def\pingu@x@princesscrown@xshift{#2}\def\pingu@x@princesscrown@yshift{#3}\def\pingu@x@princesscrown@scale{#4}},
+}{princess crown position={-9:(1mm,0mm)1},princess crown front bend=12,princess crown back bend=7,princess crown back=\pingu@color@princesscrown!93!black,princess crown 3d,princess crown gem colors={pingu@purple}{pingu@blue}{pingu@green}{pingu@blue}{pingu@purple},princess crown gem ring=\pingu@color@princesscrown!85!white,princess crown gem shade,princess crown bobbles}
+
+% color | bend1 | bend2
+\def\pingu@draw@ea@princesscrown@s#1#2#3{
+\pingu@block{#1} [rounded corners=.2mm](-3.25mm,-.15cm) to[bend left=2] ++(0,2.32mm) to[bend #2=\pingu@x@princesscrown@f@bend]
+ coordinate[pos=0] (r2) coordinate[pos=.065] (r1)
+ coordinate[pos=.11] (a1) coordinate[pos=.2] (a2) coordinate[pos=.29] (a3)
+ coordinate[pos=.35] (b1) coordinate[pos=.50] (x2) coordinate[pos=.65] (b3)
+ coordinate[pos=.71] (c1) coordinate[pos=.8] (c2) coordinate[pos=.89] (c3)
+ coordinate[pos=1] (l2) coordinate[pos=.93] (l1)
+ ++(8mm,0) to[bend left=2] ++(0,-2.32mm) to[bend #3=\pingu@x@princesscrown@f@bend] (-3mm,-.15cm) -- cycle;
+\path (x2)++(0,.9mm) coordinate (b2);
+\@for\a:={a,b,c}\do{
+ \pingu@block{#1} ([yshift=-.1mm]\a1) to[bend right=\pingu@x@princesscrown@f@bend] ([yshift=-.1mm]\a3) to[bend left=2] ([yshift=2.15mm]\a2) to[bend left=2] ([yshift=-.1mm]\a1) -- cycle;
+ \if@pingu@x@princesscrown@bobbles@\pingu@block{#1} ([yshift=2.15mm]\a2) circle [radius=.45\p@];\fi
+}
+\pingu@block{#1} (l2)++(0,-.2mm) to[bend left=2] ++(0,2.25mm) -- (l1) -- cycle;
+\pingu@block{#1} (r2)++(0,-.2mm) to[bend right=2] ++(0,2.25mm) -- (r1) -- cycle;
+\if@pingu@x@princesscrown@bobbles@\pingu@block{#1} (l2)++(0,2.05mm) circle [radius=.45\p@];
+\pingu@block{#1} (r2)++(0,2.05mm) circle [radius=.45\p@];\fi
+}
+
+% draw single gem; color | at | shift | scale
+\def\pingu@draw@ea@princesscrown@g#1#2#3#4{
+\scope[shift={(#22)},shift={(#3,-.33mm)}]
+ \pingu@block{\pingu@color@princesscrown@gem@ring} ellipse [x radius=.715mm*#4, y radius=.925mm*#4];
+ \pingu@block{#1} ellipse [x radius=.633mm*#4, y radius=.85mm*#4];
+ \protected@edef\@tmp{#1}\ifx\@tmp\@pingu@none\else
+ \if@pingu@x@princesscrown@shade@
+ \shade[ball color=#1,fill opacity=.45,shading angle=-95] ellipse [x radius=.633mm*#4, y radius=.85mm*#4];
+ \else
+ \pingu@block[rotate around={7:(42:.3mm*#4 and .4mm*#4)}]{#1!45!pingu@white} (42:.3mm*#4 and .4mm*#4) ellipse[x radius=.17mm*#4, y radius=.24mm*#4];
+ \pingu@block[rotate around={7:(232:.275mm*#4 and .35mm*#4)}]{#1!45!pingu@white} (232:.275mm*#4 and .35mm*#4) ellipse[x radius=.06mm*#4, y radius=.085mm*#4];
+ \fi\fi
+\endscope}
+\def\pingu@draw@ea@princesscrown{%
+\scope[rotate around={\pingu@x@princesscrown@angle:(\pingu@name-head-top)},%
+ shift={(\pingu@name-head-top)},
+ shift={(\pingu@x@princesscrown@xshift,\pingu@x@princesscrown@yshift)},
+ scale=\pingu@x@princesscrown@scale]
+% draw front
+\if@pingu@x@princesscrown@ddd@
+ \pingu@draw@ea@princesscrown@s{\pingu@color@princesscrown}{right}{left}
+ \def\@tmpa{.05mm}
+\else
+ \pingu@draw@ea@princesscrown@s{\pingu@color@princesscrown}{left}{right}
+ \def\@tmpa{-.015mm}
+\fi
+% draw the emaralds
+\pingu@draw@ea@princesscrown@g{\pingu@color@princesscrown@gem@b}{a}{-\@tmpa}{.95}
+\pingu@draw@ea@princesscrown@g{\pingu@color@princesscrown@gem@c}{x}{\z@}{1.3}
+\pingu@draw@ea@princesscrown@g{\pingu@color@princesscrown@gem@d}{c}{\@tmpa}{.95}
+\pingu@layer{background}[]
+\pingu@block{\pingu@color@princesscrown@gem@a} (r2)++(0,-.33mm) ellipse [x radius=.3mm, y radius=.8mm];
+\pingu@block{\pingu@color@princesscrown@gem@ring} (r2)++(0,-.33mm) ellipse [x radius=.1mm, y radius=.885mm];
+\pingu@block{\pingu@color@princesscrown@gem@e} (l2)++(0,-.33mm) ellipse [x radius=.3mm, y radius=.8mm];
+\pingu@block{\pingu@color@princesscrown@gem@ring} (l2)++(0,-.33mm) ellipse [x radius=.1mm, y radius=.885mm];
+% draw back if 3d
+\if@pingu@x@princesscrown@ddd@
+ \pingu@draw@ea@princesscrown@s{\pingu@color@princesscrown@back}{left}{right}
+\fi
+\endpingu@layer
+\endscope
+}
+% #endregion
+
+% #region movement-lib
+\pingu@bodytype@add{tilt-right}{%
+\pingu@block[save path=\pingu@lowerpingu]{\pingu@color@body@main} (0,\pingu@outer@off)
+% left side
+to[bend right=\pingu@bend] coordinate[pos=.775] (\pingu@name-waist-right) ++(0,-\pingu@side@h@half-\pingu@outer@off)
+% feety stuff
+arc (180:270:\pingu@foot@outer@w{}-1mm and \pingu@foot@outer@h) coordinate[yshift=-.2mm] (\pingu@name-foot-right)
+arc (270:332:\pingu@foot@inner@w{}+1mm and 2.5*\pingu@foot@inner@h)
+coordinate (\pingu@name-bottom-center)
+arc (208:270:\pingu@foot@inner@w{} and 1.25*\pingu@foot@inner@h) coordinate[yshift=-.4mm] (\pingu@name-foot-left)
+arc (270:360:\pingu@foot@outer@w{} and 1.125*\pingu@foot@outer@h)%
+% right side
+to[bend right=\pingu@bend] coordinate[pos=.225] (\pingu@name-waist-left) ++(0,\pingu@side@h@half+\pingu@outer@off)
+% coordinate
+coordinate (\pingu@name-wings-side-left)
+-- (0,\pingu@outer@off) coordinate (\pingu@name-wings-side-right) coordinate[pos=.5] (\pingu@name-head-center) -- cycle;
+
+\pingu@block[save path=\pingu@upperpingu]{\pingu@color@body@head} (\pingu@name-head-center)
+++(0,\pingu@head@h@half) coordinate (\pingu@name-head-top)
+arc(90:450:\pingu@w@half{} and \pingu@head@h@half)
+coordinate[pos=\pinguanglehr] (\pingu@name-head-right)
+coordinate[pos=\pinguanglehl] (\pingu@name-head-left);
+
+\coordinate (\pingu@name-belly-back) at (\pingu@w@half,-1cm);
+\coordinate (\pingu@name-belly-center) at (\pingu@w@half,-.68\pingu@side@h@half);
+\pingu@block[save path=\pingu@whitepingu]{\pingu@color@body@front} (\pingu@name-belly-back)++(-\pingu@w@half+\pingu@one,\pingu@lower@off) to[bend right=.8\pingu@bend] ++(-.05mm,1.05cm-\pingu@side@h@half-\pingu@lower@off) arc (180:270:3.7mm and 2mm) arc (270:331:5mm and 3*.85mm) arc (207:270:5.3mm and 1.125*.85mm) arc (270:360:4.025mm and 1.25*2mm) to[bend right=.8\pingu@bend] ++(0,\pingu@side@h@half-1.05cm+\pingu@lower@off) arc (0:180:\pingu@w@half-.96mm and \pingu@w@half-\pingu@one) -- cycle;
+
+\coordinate (\pingu@name-eye-back-right) at ([xshift=-.275cm,yshift=.25cm-\pingu@outer@off]\pingu@name-head-center);
+\coordinate (\pingu@name-eye-back-left) at ([xshift=.275cm,yshift=.25cm-\pingu@outer@off]\pingu@name-head-center);
+
+\coordinate (\pingu@name-head-back-con-right) at ([xshift=-\pingu@headcon@x,yshift=-\pingu@headcon@y]\pingu@name-eye-back-right);
+\coordinate (\pingu@name-head-back-con-left) at ([xshift=\pingu@headcon@x,yshift=-\pingu@headcon@y]\pingu@name-eye-back-left);
+
+\pingu@block{\pingu@color@body@front} (\pingu@name-eye-back-right)++(0,-.25mm) ellipse [x radius=.525cm,y radius=.625cm];
+\pingu@block{\pingu@color@body@front} (\pingu@name-eye-back-left)++(0,-.25mm) ellipse [x radius=.525cm,y radius=.625cm];
+}
+
+
+\pingu@bodytype@add{tilt-left}{%
+\pingu@block[save path=\pingu@lowerpingu]{\pingu@color@body@main} (0,\pingu@outer@off)
+% left side
+to[bend right=\pingu@bend] coordinate[pos=.775] (\pingu@name-waist-right) ++(0,-\pingu@side@h@half-\pingu@outer@off)
+% feety stuff
+arc (180:270:\pingu@foot@outer@w{}-1mm and 1.25*\pingu@foot@outer@h) coordinate[yshift=-.2mm] (\pingu@name-foot-right)
+arc (270:332:\pingu@foot@inner@w{}+1mm and 1.125*\pingu@foot@inner@h)
+coordinate (\pingu@name-bottom-center)
+arc (208:270:\pingu@foot@inner@w{} and 2.5*\pingu@foot@inner@h) coordinate[yshift=-.4mm] (\pingu@name-foot-left)
+arc (270:360:\pingu@foot@outer@w{} and \pingu@foot@outer@h)%
+% right side
+to[bend right=\pingu@bend] coordinate[pos=.225] (\pingu@name-waist-left) ++(0,\pingu@side@h@half+\pingu@outer@off)
+% coordinate
+coordinate (\pingu@name-wings-side-left)
+-- (0,\pingu@outer@off) coordinate (\pingu@name-wings-side-right) coordinate[pos=.5] (\pingu@name-head-center) -- cycle;
+
+\pingu@block[save path=\pingu@upperpingu]{\pingu@color@body@head} (\pingu@name-head-center)
+++(0,\pingu@head@h@half) coordinate (\pingu@name-head-top)
+arc(90:450:\pingu@w@half{} and \pingu@head@h@half)
+coordinate[pos=\pinguanglehr] (\pingu@name-head-right)
+coordinate[pos=\pinguanglehl] (\pingu@name-head-left);
+
+\coordinate (\pingu@name-belly-back) at (\pingu@w@half,-1cm);
+\coordinate (\pingu@name-belly-center) at (\pingu@w@half,-.68\pingu@side@h@half);
+\pingu@block[save path=\pingu@whitepingu]{\pingu@color@body@front} (\pingu@name-belly-back)++(-\pingu@w@half+\pingu@one,\pingu@lower@off) to[bend right=.8\pingu@bend] ++(-.05mm,1.05cm-\pingu@side@h@half-\pingu@lower@off) arc (180:270:4.025mm and 1.25*2mm) arc (270:331:5.25mm and 1.125*.85mm) arc (207:270:5mm and 3*.85mm) arc (270:360:3.75mm and 2mm) to[bend right=.8\pingu@bend] ++(0,\pingu@side@h@half-1.05cm+\pingu@lower@off) arc (0:180:\pingu@w@half-.96mm and \pingu@w@half-\pingu@one) -- cycle;
+
+\coordinate (\pingu@name-eye-back-right) at ([xshift=-.275cm,yshift=.25cm-\pingu@outer@off]\pingu@name-head-center);
+\coordinate (\pingu@name-eye-back-left) at ([xshift=.275cm,yshift=.25cm-\pingu@outer@off]\pingu@name-head-center);
+
+\coordinate (\pingu@name-head-back-con-right) at ([xshift=-\pingu@headcon@x,yshift=-\pingu@headcon@y]\pingu@name-eye-back-right);
+\coordinate (\pingu@name-head-back-con-left) at ([xshift=\pingu@headcon@x,yshift=-\pingu@headcon@y]\pingu@name-eye-back-left);
+
+\pingu@block{\pingu@color@body@front} (\pingu@name-eye-back-right)++(0,-.25mm) ellipse [x radius=.525cm,y radius=.625cm];
+\pingu@block{\pingu@color@body@front} (\pingu@name-eye-back-left)++(0,-.25mm) ellipse [x radius=.525cm,y radius=.625cm];
+}
+% #endregion
+
+% #region safe-lib
+\pingu@create@extra{mask}{%
+ mask/.code = {\pingu@set@extra{mask}{true}\pingu@color{mask}{#1}},
+ mask/.default = pingu@white!61!gray,%
+ mask band/.code = \pingu@color{mask@band}{#1},%
+ mask line width/.code = \def\pingu@x@mask@line@width{#1},%
+ mask band inner/.code = \pingu@color{mask@band@inner}{#1},%
+ mask band outer/.code = \pingu@color{mask@band@outer}{#1}%
+}{mask band=\pingu@color@body@main, mask band inner=\pingu@color@mask@band!60!\pingu@color@mask, mask band outer=\pingu@color@mask@band!82!\pingu@color@mask,mask line width=.565pt}
+
+\def\pingu@draw@ea@mask{%
+\pingu@block{\pingu@color@mask} [rounded corners=.8mm] ([xshift=-5mm,yshift=.75mm]\pingu@name-bill) coordinate (@ul) [rounded corners=.1mm]-- ++(3.5mm,.55mm) to[bend left=3] ++(3mm,0) -- ++(3.5mm,-.55mm) coordinate (@ur) -- ++(0,-4.25mm)[rounded corners=.8mm] coordinate (@lr) -- ++(-3.5mm,-.45mm) to[bend left=3] ++(-3mm,0) [rounded corners=.1mm] -- ++(-3.5mm,.45mm) coordinate (@ll) -- cycle;
+\scope
+\clip[use path=\pingu@upperpingu];
+\pingu@draw[line width=\pingu@x@mask@line@width]{\pingu@color@mask@band} ([yshift=-.1mm,xshift=.2mm]@ul) to[bend left=3] ([yshift=-1.1mm]\pingu@name-wings-side-right);
+\pingu@draw[line width=\pingu@x@mask@line@width]{\pingu@color@mask@band} ([yshift=-.1mm,xshift=-.2mm]@ur) to[bend right=3] ([yshift=-1.1mm]\pingu@name-wings-side-left);
+\endscope\scope
+\clip[use path=\pingu@lowerpingu];
+\pingu@draw[line width=\pingu@x@mask@line@width]{\pingu@color@mask@band} ([yshift=.01mm,xshift=.2mm]@ll) to[bend left=3] ([yshift=2mm]\pingu@name-wing-right-start);
+\pingu@draw[line width=\pingu@x@mask@line@width]{\pingu@color@mask@band} ([yshift=.01mm,xshift=-.2mm]@lr) to[bend right=3] ([yshift=2mm]\pingu@name-wing-left-start);
+\endscope
+% TODO: fix this sloppy overwrite
+\pingu@block{\pingu@color@mask} [rounded corners=.8mm] ([xshift=-5mm,yshift=.75mm]\pingu@name-bill) coordinate (@ul) [rounded corners=.1mm]-- ++(3.5mm,.55mm) to[bend left=3] ++(3mm,0) -- ++(3.5mm,-.55mm) coordinate (@ur) -- ++(0,-4.25mm)[rounded corners=.8mm] coordinate (@lr) -- ++(-3.5mm,-.45mm) to[bend left=3] ++(-3mm,0) [rounded corners=.1mm] -- ++(-3.5mm,.45mm) coordinate (@ll) -- cycle;
+\pingu@draw[very thin]{\pingu@color@mask@band@inner} ([xshift=-5mm,yshift=.75mm-4.25mm/2]\pingu@name-bill) to[bend right=1] ++(10mm,0);
+\foreach \i/\b/\c in {1.6mm/very thin/\pingu@color@mask@band@inner,.8mm/very thin/\pingu@color@mask@band@inner,0mm//\pingu@color@mask@band@outer} {
+\pingu@draw[\b]{\c} [rounded corners=.8mm] ([xshift=-5mm,yshift=.75mm-\i]\pingu@name-bill) [rounded corners=.1mm]-- ++(3.5mm,.55mm) to[bend left=3] ++(3mm,0) -- ++(3.5mm,-.55mm) -- ++(0,-4.25mm+2*\i)[rounded corners=.8mm] -- ++(-3.5mm,-.45mm) to[bend left=3] ++(-3mm,0) [rounded corners=.1mm] -- ++(-3.5mm,.45mm) -- cycle;
+}
+}
+% #endregion
+
+% #region science-fiction
+\newif\if@pingu@x@lightsaber@glow@left
+\newif\if@pingu@x@lightsaber@glow@right
+\newif\if@pingu@x@lightsaber@double@left
+\newif\if@pingu@x@lightsaber@double@right
+\def\pingu@x@saberglow@w@half{.9mm}
+\def\pingulightsaberfactor{.013}
+\pingu@create@wing@extra{lightsaber}{%
+ lightsaber \@lr/.code = {\pingu@set@extra{lightsaber\@lr}{true}\pingu@color{lightsaber\@lr}{##1}},
+ lightsaber \@lr/.default = pingu@blue,
+ lightsaber \@lr\space handle/.code = \pingu@color{lightsaber\@lr @handle}{##1},%
+ lightsaber \@lr\space deco/.code = \pingu@color{lightsaber\@lr @deco}{##1},%
+ lightsaber \@lr\space ribbs/.code = \pingu@color{lightsaber\@lr @ribbs}{##1},%
+ lightsaber \@lr\space button/.code = \pingu@color{lightsaber\@lr @button}{##1},%
+ lightsaber \@lr\space button b/.code = \pingu@color{lightsaber\@lr @button@b}{##1},%
+ lightsaber \@lr\space color b/.code = \pingu@color{lightsaber\@lr @color@b}{##1},%
+ lightsaber \@lr\space length/.code = {\@namedef{pingu@x@lightsaber@length@\@lr}{##1}},%
+ lightsaber \@lr\space length b/.code = {\@namedef{pingu@x@lightsaber@length@b@\@lr}{##1}},%
+ lightsaber \@lr\space yshift/.code = {\@namedef{pingu@x@lightsaber@yshift@\@lr}{##1}},%
+ lightsaber \@lr\space glow/.is if = @pingu@x@lightsaber@glow@\@lr,%
+ lightsaber \@lr\space double/.is if = @pingu@x@lightsaber@double@\@lr,%
+ lightsaber \@lr\space glow core/.code = \pingu@color{lightsaber\@lr @glow@core}{##1},%
+ lightsaber \@lr\space solid/.style = {/pingu/lightsaber \@lr\space glow=false},
+ lightsaber \@lr\space disabled/.style = {/pingu/lightsaber \@lr\space solid,/pingu/lightsaber \@lr=\@pingu@none},
+ lightsaber \@lr\space outer glow factor/.code = {\@namedef{pingu@x@lightsaber@ogf@\@lr}{##1}}%
+}{lightsaber \@lr\space handle=pingu@silver, lightsaber \@lr\space deco=pingu@silver!12!pingu@black, lightsaber \@lr\space button=pingu@red!85!pingu@black,lightsaber \@lr\space button b=pingu@red!85!pingu@black, lightsaber \@lr\space ribbs=pingu@silver!50!pingu@black,lightsaber \@lr\space length=2cm,lightsaber \@lr\space glow=\ifpengu@setup@glows@ true\else false\fi,lightsaber \@lr\space glow core=white,lightsaber \@lr\space outer glow factor=\pingulightsaberfactor,lightsaber \@lr\space yshift=0pt,lightsaber \@lr\space length b=\csname pingu@x@lightsaber@length@\@lr\endcsname,lightsaber \@lr\space color b=\noexpand\@col}
+
+% #region lightsaber base
+\def\pingu@draw@wi@lightsaber@base#1{%
+% deco-elements
+ % base
+ \pingu@block{\csname pingu@color@lightsaber#1@deco\endcsname}(\pingu@name-wing-#1)++(-.4mm,2.65mm+\csname pingu@x@lightsaber@yshift@#1\endcsname) -- ++(0,-5mm) -- ++(.8mm,0) |- cycle;
+ \if@pingu@wing@item@side@left@
+ % ribbs; single path saves memory :D
+ \pingu@block{\csname pingu@color@lightsaber#1@ribbs\endcsname}(\pingu@name-wing-#1)++(-.40mm,2.225mm+\csname pingu@x@lightsaber@yshift@#1\endcsname)
+ arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+ arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+ arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+ arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+ arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+ arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+ arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+ arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+ arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+ arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+ arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+ arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+ arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+ arc(90:270:.075mm) -- ++(.8mm,0) |- cycle;
+ % button
+ \pingu@block{\csname pingu@color@lightsaber#1@button@b\endcsname}(\pingu@name-wing-#1)++(.49mm,-1.75mm+\csname pingu@x@lightsaber@yshift@#1\endcsname) ellipse [x radius=.1mm, y radius=.3mm];
+ \pingu@block{\csname pingu@color@lightsaber#1@button\endcsname}(\pingu@name-wing-#1)++(.49mm,1.9mm+\csname pingu@x@lightsaber@yshift@#1\endcsname) ellipse [x radius=.1mm, y radius=.3mm];
+ % cover
+ \pingu@block{\csname pingu@color@lightsaber#1@handle\endcsname}(\pingu@name-wing-#1)++(-.5mm,2.65mm+\csname pingu@x@lightsaber@yshift@#1\endcsname) arc(180:90:.15mm) -- ++(.7mm,0) arc(90:0:.16mm) -- ++(0,-5mm) arc(360:270:.15mm) -- ++(-.7mm,0) arc (270:180:.15mm) -- ++(0,.25mm) arc(270:360:.33mm and .2mm) -- ++(0,4.1mm) arc(0:90:.33mm and .2mm) -- ++(0,.25mm) -- cycle;
+ \else
+ % ribbs; single path saves memory :D (the second)
+ \pingu@block{\csname pingu@color@lightsaber#1@ribbs\endcsname}(\pingu@name-wing-#1)++(.40mm,2.225mm+\csname pingu@x@lightsaber@yshift@#1\endcsname)
+ arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+ arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+ arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+ arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+ arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+ arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+ arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+ arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+ arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+ arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+ arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+ arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+ arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+ arc(90:-90:.075mm) -- ++(-.8mm,0) |- cycle;
+ % buttons
+ \pingu@block{\csname pingu@color@lightsaber#1@button@b\endcsname}(\pingu@name-wing-#1)++(-.49mm,-1.75mm+\csname pingu@x@lightsaber@yshift@#1\endcsname) ellipse [x radius=.1mm, y radius=.3mm];
+ \pingu@block{\csname pingu@color@lightsaber#1@button\endcsname}(\pingu@name-wing-#1)++(-.49mm,1.9mm+\csname pingu@x@lightsaber@yshift@#1\endcsname) ellipse [x radius=.1mm, y radius=.3mm];
+ % cover
+ \pingu@block{\csname pingu@color@lightsaber#1@handle\endcsname}(\pingu@name-wing-#1)++(.5mm,2.65mm+\csname pingu@x@lightsaber@yshift@#1\endcsname) arc(0:90:.15mm) -- ++(-.7mm,0) arc(90:180:.16mm) -- ++(0,-5mm) arc(180:270:.15mm) -- ++(.7mm,0) arc (270:360:.15mm) -- ++(0,.25mm) arc(270:180:.33mm and .2mm) -- ++(0,4.1mm) arc(180:90:.33mm and .2mm) -- ++(0,.25mm) -- cycle;
+ \fi
+}
+% #endregion
+% #1 wing, #2 yshift, #3 angle, #4 length, #5 color
+\def\pingu@draw@wi@lightsaber@pre#1#2#3#4#5{
+ \scope[rotate around={#3:(\pingu@name-wing-#1)}]
+ \csname if@pingu@x@lightsaber@glow@#1\endcsname
+ \@for\i:={0,2,4,6,7,8,9,10,11,12,13,14,15,16,17}\do{
+ \pingu@block[fill opacity=\ifnum\i>14 .225\else.1\fi*\i/20]{#5} (\pingu@name-wing-#1)++(-\pingu@x@saberglow@w@half+\i*\i mm/440,#2) -- ++(.05mm,#4) arc(180:0:\pingu@x@saberglow@w@half-.05mm-\i*\i mm/440 and \ifnum\i>14 .85mm\else\pingu@one\fi-\i mm/30) -- ++(.05mm,-#4) arc (0:-180:\pingu@x@saberglow@w@half-\i*\i mm/440 and .35mm);
+ }
+ \else % draw solid
+ \pingu@block{#5} (\pingu@name-wing-#1)++(-.425mm,#2-.1mm) -- ++(.05mm,#4) arc(180:0:.375mm and .375mm) -- ++(.05mm,-#4) arc (0:-180:.425mm and .05mm);
+ \fi
+ \endscope
+}
+
+% #1 wing, #2 yshift, #3 angle, #4 length, #5 color
+\def\pingu@draw@wi@lightsaber@post#1#2#3#4#5{
+ \scope[rotate around={#3:(\pingu@name-wing-#1)}]
+ \csname if@pingu@x@lightsaber@glow@#1\endcsname
+ \ifdim\csname pingu@x@lightsaber@ogf@#1\endcsname pt>\z@
+ \pingu@layer{foreground}[]
+ \pgfinterruptboundingbox
+ \path[clip,/pingu/@invclip] (\pingu@name-wing-#1)++(-.275mm,#2-.1mm) -- ++(.1mm,#4) arc(180:0:.175mm and .25mm) -- ++(.1mm,-#4) arc (0:-180:.275mm and .065mm);
+ \@for\i:={1,1.1,1.2,1.3,1.4}\do{
+ \pingu@block[fill opacity=\csname pingu@x@lightsaber@ogf@#1\endcsname/\i]{#5} (\pingu@name-wing-#1) ++(.05mm,#2+#4/2) circle[radius=\i*#4];
+ }
+ \endpgfinterruptboundingbox
+ \endpingu@layer
+ \fi
+ % fadings had a rotation angle bug
+ \@for\i:={1,2}\do{
+ \pingu@block[fill opacity=.125*\i/10]{#5} (\pingu@name-wing-#1)++(-\pingu@x@saberglow@w@half+\i*\i mm/440,#2) -- ++(.05mm,#4) arc(180:0:\pingu@x@saberglow@w@half-.05mm-\i*\i mm/440 and \pingu@one-\i mm/30) -- ++(.05mm,-#4) arc (0:-180:\pingu@x@saberglow@w@half-\i*\i mm/440 and .35mm);
+ }
+ \pingu@block{\csname pingu@color@lightsaber#1@glow@core\endcsname} (\pingu@name-wing-#1)++(-.275mm,#2-.1mm) -- ++(.1mm,#4) arc(180:0:.175mm and .25mm) -- ++(.1mm,-#4) arc (0:-180:.275mm and .065mm);
+ \fi
+ \endscope
+}
+
+% #1 wing
+\def\pingu@draw@wi@lightsaber#1{%
+ \pingu@setup@wing{lightsaber}{#1}%
+ \scope[rotate around={\@angle:([yshift=+\csname pingu@x@lightsaber@yshift@#1\endcsname]\pingu@name-wing-#1)},xscale=1.2]
+ \pingu@draw@wi@lightsaber@pre{#1}{2.9mm+\csname pingu@x@lightsaber@yshift@#1\endcsname}{0}{\csname pingu@x@lightsaber@length@#1\endcsname}{\@col}
+ \csname if@pingu@x@lightsaber@double@#1\endcsname
+ \pingu@draw@wi@lightsaber@pre{#1}{2.65mm-\csname pingu@x@lightsaber@yshift@#1\endcsname}{180}{\csname pingu@x@lightsaber@length@b@#1\endcsname}{\csname pingu@color@lightsaber#1@color@b\endcsname}
+ \fi
+ \pingu@draw@wi@lightsaber@base{#1}
+ % afterglow (whuile watching everglow :D)
+ \pingu@draw@wi@lightsaber@post{#1}{2.9mm+\csname pingu@x@lightsaber@yshift@#1\endcsname}{0}{\csname pingu@x@lightsaber@length@#1\endcsname}{\@col}
+ \csname if@pingu@x@lightsaber@double@#1\endcsname
+ \pingu@draw@wi@lightsaber@post{#1}{2.65mm-\csname pingu@x@lightsaber@yshift@#1\endcsname}{180}{\csname pingu@x@lightsaber@length@b@#1\endcsname}{\csname pingu@color@lightsaber#1@color@b\endcsname}
+ \fi
+ \endscope
+}
+
+
+\newif\if@pingu@x@lightstaff@glow@left
+\newif\if@pingu@x@lightstaff@glow@right
+\pingu@create@wing@extra{lightstaff}{%
+ light-staff \@lr/.code = {\pingu@set@extra{lightstaff\@lr}{true}\pingu@color{lightstaff\@lr}{##1}},
+ light-staff \@lr/.default = pingu@green,
+ light-staff \@lr\space length/.code =\expandafter\def\csname pingu@lightstaff@\@lr @length\endcsname{##1},
+ light-staff \@lr\space glow length/.code =\expandafter\def\csname pingu@lightstaff@\@lr @glow@length\endcsname{##1},
+ light-staff \@lr\space head/.code = \pingu@color{lightstaff\@lr}{##1},%
+ light-staff \@lr\space staff/.code = \pingu@color{lightstaff@\@lr @staff}{##1},%
+ light-staff \@lr\space core/.code = \pingu@color{lightstaff@\@lr @head@core}{##1},%
+ light-staff \@lr\space core width/.code = \expandafter\def\csname pingu@lightstaff@\@lr @core@width\endcsname{##1},%
+ light-staff \@lr\space glow/.is if = @pingu@x@lightstaff@glow@\@lr,%
+ light-staff \@lr\space outer glow factor/.code = {\@namedef{pingu@x@lightstaff@ogf@\@lr}{##1}},%
+}{light-staff \@lr\space length=28mm,light-staff \@lr\space staff=pingu@bronze,light-staff \@lr\space head=pingu@green,light-staff \@lr\space core=pingu@white,light-staff \@lr\space glow=\ifpengu@setup@glows@ true\else false\fi,light-staff \@lr\space outer glow factor=.022,light-staff \@lr\space glow length=13mm,light-staff \@lr\space core width=.44mm}
+\def\pingu@draw@wi@lightstaff#1{%
+ \pingu@setup@wing{lightstaff}{#1}%
+\scope[rotate around={\@angle:(\pingu@name-wing-#1)}]
+ \pingu@block{\csname pingu@color@lightstaff@#1@staff\endcsname}(\pingu@name-wing-#1)++(\@sidesign*-.2mm,-11mm) -- ++(0,\csname pingu@lightstaff@#1@length\endcsname) arc(180:0:\@sidesign*.4mm and .3mm) coordinate[pos=.5] (\pingu@name-lightstaff-#1-top) -- ++(0,-\csname pingu@lightstaff@#1@length\endcsname) arc(360:180:\@sidesign*.4mm and .3mm) -- cycle;
+ \pingu@draw@wi@lightstaff@pre{#1}{[yshift=-1.1mm]\pingu@name-lightstaff-#1-top}{\@col}
+ \pingu@block{\csname pingu@color@lightstaff@#1@head@core\endcsname} ([yshift=-1.1mm]\pingu@name-lightstaff-#1-top) -- ++(-\csname pingu@lightstaff@#1@core@width\endcsname,1mm) -- ++(0,2mm) -- ++(\csname pingu@lightstaff@#1@core@width\endcsname,1mm) -- ++(\csname pingu@lightstaff@#1@core@width\endcsname,-1mm) -- ++(0,-2mm) -- cycle;
+ \pingu@draw@wi@lightstaff@post{#1}{[yshift=-1.1mm]\pingu@name-lightstaff-#1-top}{\@col}
+\endscope
+}
+
+% #1 wing, #2 start, #3 color
+\def\pingu@draw@wi@lightstaff@pre#1#2#3{
+\csname if@pingu@x@lightstaff@glow@#1\endcsname
+\@for\i:={0,1,2,3,6,7,9,10,13}\do{
+ \pingu@block[fill opacity=\ifnum\i>14 .225\else.1\fi*\i/20]{#3} (#2)++(0,-\i mm/15) -- ++(-\csname pingu@lightstaff@#1@core@width\endcsname-\i mm/30,1mm+\i mm/30) -- ++(0,2mm+\i mm/15) -- ++(\csname pingu@lightstaff@#1@core@width\endcsname+\i mm/30,1mm+\i mm/30) -- ++(\csname pingu@lightstaff@#1@core@width\endcsname+\i mm/30,-1mm-\i mm/30) -- ++(0,-2mm-\i mm/15) -- cycle;
+ % -- ++(.05mm,#4) arc(180:0:\pingu@x@saberglow@w@half-.05mm-\i*\i mm/440 and \ifnum\i>14 .85mm\else\pingu@one\fi-\i mm/30) -- ++(.05mm,-#4) arc (0:-180:\pingu@x@saberglow@w@half-\i*\i mm/440 and .35mm);
+}
+\else % draw solid
+ \pingu@block{#3} (#2) -- ++(-.55mm,1mm) -- ++(0,2mm) -- ++(.55mm,1mm) -- ++(.55mm,-1mm) -- ++(0,-2mm) -- cycle;
+\fi
+}
+
+\def\pingu@draw@wi@lightstaff@post#1#2#3{
+\csname if@pingu@x@lightstaff@glow@#1\endcsname
+\ifdim\csname pingu@x@lightstaff@ogf@#1\endcsname pt>\z@
+\pingu@layer{foreground}[]
+\pgfinterruptboundingbox
+\@for\i:={1,1.1,1.2,1.3,1.4}\do{
+ \pingu@block[fill opacity=\csname pingu@x@lightstaff@ogf@#1\endcsname/\i]{#3} (#2)++(0,2mm) circle[radius=\i*\csname pingu@lightstaff@#1@glow@length\endcsname];
+}
+\endpgfinterruptboundingbox
+\pingu@block[opacity=.65]{\csname pingu@color@lightstaff@#1@head@core\endcsname} (#2)++(0,.5mm) -- ++(-.20mm,.75mm) -- ++(0,1.5mm) -- ++(.20mm,.75mm) -- ++(.20mm,-.75mm) -- ++(0,-1.5mm) -- cycle;
+\endpingu@layer
+\fi
+% fadings hat a rotation angle bug
+\@for\i:={1,2}\do{
+ \pingu@block[fill opacity=.125*\i/10]{#3} (#2)++(0,-\i mm/15+2mm) -- ++(-\csname pingu@lightstaff@#1@core@width\endcsname-\i mm/30,1mm+\i mm/30) -- ++(0,2mm+\i mm/15) -- ++(\csname pingu@lightstaff@#1@core@width\endcsname+\i mm/30,1mm+\i mm/30) -- ++(\csname pingu@lightstaff@#1@core@width\endcsname+\i mm/30,-1mm-\i mm/30) -- ++(0,-2mm-\i mm/15) -- cycle;
+}
+\pingu@block{\csname pingu@color@lightstaff@#1@head@core\endcsname} (#2) -- ++(-\csname pingu@lightstaff@#1@core@width\endcsname,1mm) -- ++(0,2mm) -- ++(\csname pingu@lightstaff@#1@core@width\endcsname,1mm) -- ++(\csname pingu@lightstaff@#1@core@width\endcsname,-1mm) -- ++(0,-2mm) -- cycle;
+\fi
+}
+% #endregion
+
+% #region shirts-lib
+\newif\if@pingu@shirt@above
+\pingu@create@extra{shirt}{%
+ shirt/.code = \pingu@set@extra{shirt}{true}\pingu@color{shirt}{#1},
+ shirt/.default = pingu@bronze,
+ shirt above/.is if = @pingu@shirt@above,
+ shirt raise/.code = \def\pingu@shirt@raise{#1},
+ shirt padding/.code = \def\pingu@shirt@padding{#1},
+ shirt button top/.code = \pingu@color{shirt@button@top}{#1},
+ shirt button middle/.code = \pingu@color{shirt@button@middle}{#1},
+ shirt button bottom/.code = \pingu@color{shirt@button@bottom}{#1},
+ shirt buttons/.style = {/pingu/shirt button top={#1}, /pingu/shirt button middle={#1}, /pingu/shirt button bottom={#1}},
+ shirt button top shade/.code = \pingu@color{shirt@button@top@shade}{#1},
+ shirt button middle shade/.code = \pingu@color{shirt@button@middle@shade}{#1},
+ shirt button bottom shade/.code = \pingu@color{shirt@button@bottom@shade}{#1},
+ shirt buttons shade/.style = {/pingu/shirt button top shade={#1}, /pingu/shirt button middle shade={#1}, /pingu/shirt button bottom shade={#1}},
+ shirt without buttons/.forward to=/pingu/shirt no buttons,
+ shirt no buttons/.style = {/pingu/shirt buttons=\@pingu@none, /pingu/shirt buttons shade=\@pingu@none},
+}{shirt buttons=pingu@black,shirt padding=0mm,shirt button top shade=\pingu@color@shirt@button@top!70!\pingu@color@shirt!70!white,shirt button middle shade=\pingu@color@shirt@button@middle!70!\pingu@color@shirt!70!white,shirt button bottom shade=\pingu@color@shirt@button@bottom!70!\pingu@color@shirt!70!white,shirt raise=2.25mm,shirt above=false}
+\def\pingu@draw@cloth@shirt@behind{}
+
+\def\pingu@draw@cloth@shirt@middle{\if@pingu@shirt@above\else\pingu@draw@cloth@shirt@main\fi}
+
+\def\pingu@draw@cloth@shirt@main{%
+\coordinate (\pingu@name-shirt-low) at ([yshift=\pingu@shirt@raise]\pingu@name-belly-center);
+\pingu@block{\pingu@color@shirt} [rounded corners=.131mm] ([xshift=.2mm,yshift=.18mm]\pingu@name-head-back-con-right) -- (\pingu@name-shirt-low) -- ([xshift=-.1mm,yshift=.24mm]\pingu@name-head-back-con-left) to[bend left=12] (\pingu@name-waist-left) to[bend left=3] ([xshift=\pingu@shirt@padding]\pingu@name-bottom-center-|\pingu@name-waist-left) to[bend left=10] ([yshift=-1.1\pingu@one]\pingu@name-bottom-center) to[bend left=10] ([xshift=-\pingu@shirt@padding]\pingu@name-bottom-center-|\pingu@name-waist-right) to[bend left=3] (\pingu@name-waist-right) to[bend left=12] (\pingu@name-head-back-con-right) -- cycle;
+
+\coordinate (\pingu@name-shirt-bt) at ([yshift=-\pingu@one]\pingu@name-shirt-low);
+\pingu@block{\pingu@color@shirt@button@top}(\pingu@name-shirt-bt) circle[radius=.4mm];
+\pingu@block{\pingu@color@shirt@button@middle}(\pingu@name-shirt-bt)++(0,-1.35mm)circle[radius=.4mm];
+\pingu@block{\pingu@color@shirt@button@bottom}(\pingu@name-shirt-bt)++(0,2*-1.35mm)circle[radius=.4mm];
+\pingu@block[even odd rule]{\pingu@color@shirt@button@top@shade}(\pingu@name-shirt-bt) circle[radius=.4mm] circle[radius=.465mm];
+\pingu@block[even odd rule]{\pingu@color@shirt@button@middle@shade}(\pingu@name-shirt-bt)++(0,-1.35mm)circle[radius=.4mm] circle[radius=.465mm];
+\pingu@block[even odd rule]{\pingu@color@shirt@button@bottom@shade}(\pingu@name-shirt-bt)++(0,2*-1.35mm)circle[radius=.4mm] circle[radius=.465mm];
+\@for\i:={0,90,180,270}\do{
+ \pingu@block{\pingu@color@shirt@button@top@shade} (\pingu@name-shirt-bt)++(\i:.
+ 25mm) circle[radius=.065mm];
+ \pingu@block{\pingu@color@shirt@button@middle@shade} (\pingu@name-shirt-bt)++(0,-1.35mm)++(\i:.25mm) circle[radius=.065mm];
+ \pingu@block{\pingu@color@shirt@button@bottom@shade} (\pingu@name-shirt-bt)++(0,2*-1.35mm)++(\i:.25mm) circle[radius=.065mm];
+}}
+
+% TODO: if flags to draw parts
+\def\pingu@draw@cloth@shirt{\if@pingu@shirt@above\pingu@draw@cloth@shirt@main\fi}
+
+\pingu@create@extra{secondshirt}{%
+ second shirt/.code = \pingu@set@extra{secondshirt}{true}\pingu@color{secondshirt}{#1},
+ second shirt raise/.code = \def\pingu@secondshirt@raise{#1},
+ second shirt neck/.code = \pingu@color{secondshirt@neck}{#1},
+ second shirt/.default = purple,
+}{second shirt raise=3.35mm,second shirt neck=\pingu@color@secondshirt!32!pingu@white}
+\def\pingu@draw@cloth@secondshirt@behind{}
+
+\def\pingu@draw@cloth@secondshirt@middle{%
+\coordinate (\pingu@name-secondshirt-low) at ([yshift=\pingu@secondshirt@raise]\pingu@name-belly-center);
+\pingu@block{\pingu@color@secondshirt} [rounded corners=.131mm] ([xshift=.2mm,yshift=.05mm]\pingu@name-head-back-con-right) -- (\pingu@name-secondshirt-low) -- ([xshift=-.16mm,yshift=.09mm]\pingu@name-head-back-con-left) to[bend left=12] (\pingu@name-waist-left) to[bend left=3] ([xshift=-.22mm]\pingu@name-bottom-center-|\pingu@name-waist-left) to[bend left=10] ([yshift=-1\pingu@one]\pingu@name-bottom-center) to[bend left=10] ([xshift=.22mm]\pingu@name-bottom-center-|\pingu@name-waist-right) to[bend left=3] (\pingu@name-waist-right) to[bend left=12] (\pingu@name-head-back-con-right) -- cycle;
+\pingu@draw{\pingu@color@secondshirt@neck} [rounded corners=.131mm] ([xshift=.025mm,yshift=-.09mm]\pingu@name-head-back-con-right) -- ([xshift=.2mm,yshift=.05mm]\pingu@name-head-back-con-right) -- (\pingu@name-secondshirt-low) -- ([xshift=-.19mm,yshift=.09mm]\pingu@name-head-back-con-left) -- ([xshift=-.02mm,yshift=-.02mm]\pingu@name-head-back-con-left);
+}
+
+% TODO: if flags to draw parts
+\def\pingu@draw@cloth@secondshirt{%
+}
+% #endregion
+
+% #region signs-lib
+\pingu@create@wing@extra{signpost}{%
+ signpost \@lr/.forward to = /pingu/sign post \@lr,
+ sign post \@lr/.code = {\pingu@set@extra{signpost\@lr}{true}\@namedef{pingu@signpost@\@lr}{##1}},
+ sign post \@lr/.default = {},
+ signpost \@lr\space color/.forward to = /pingu/sign post \@lr\space color,
+ sign post \@lr\space color/.code = \pingu@color{signpost\@lr}{##1},
+ signpost \@lr\space fontcolor/.forward to = /pingu/sign post \@lr\space font color,
+ sign post \@lr\space font color/.code = \pingu@color{signpost\@lr @font}{##1},
+}{sign post \@lr\space color=brown!70!black, sign post \@lr\space font color=white!90!brown}
+\def\pingu@draw@wi@signpost#1{%
+ \pingu@setup@wing{signpost}{#1}%
+ \def\@rot{\if@pingu@wing@item@side@left@-5\else+5\fi}%
+\scope[rotate around={\@angle+\@rot:(\pingu@name-wing-#1)}]
+ \pingu@block[thick]{\@col}(\pingu@name-wing-#1)++(\@sidesign*-.225mm,-2mm) -- ++(0,15mm) arc(180:0:\@sidesign*.45mm and .375mm) -- ++(0,-15mm) arc(360:180:\@sidesign*.45mm and .375mm) -- cycle;
+ \path (\pingu@name-wing-#1)++(\@sidesign*.225mm,13mm) node[fill=\@col,rounded corners=2\p@,minimum width=14mm,minimum height=8mm,align=center,rotate=\@angle+\@rot,text=\csname pingu@color@signpost#1@font\endcsname] {\csname pingu@signpost@#1\endcsname};
+\endscope
+}
+
+\pingu@create@extra{banner}{%
+ banner/.code = \pingu@set@extra{banner}{true}\@namedef{pingu@banner}{#1},
+ banner/.default = Bannertext,
+ banner band/.code = \pingu@color{banner@band}{#1},
+ banner text color/.code = \pingu@color{banner@text@color}{#1},
+ banner sticks color/.style={/pingu/banner stick left color=#1,/pingu/banner stick right color=#1},
+ banner stick left color/.code = \pingu@color{banner@stick@left}{#1},
+ banner stick right color/.code = \pingu@color{banner@stick@right}{#1},
+ banner sticks length/.style={/pingu/banner stick left length=#1,/pingu/banner stick right length=#1},
+ banner stick left length/.code = \@namedef{pingu@banner@stick@left@l}{#1},
+ banner stick right length/.code = \@namedef{pingu@banner@stick@right@l}{#1},
+ banner raise/.code = \@namedef{pingu@banner@raise}{#1},
+ banner height/.code = \@namedef{pingu@banner@height}{#1},
+ banner font/.code = \@namedef{pingu@banner@font}{#1},
+ banner bent/.code = \@namedef{pingu@banner@bent}{#1}
+}{banner band=pingu@white!91!pingu@black,banner text color=pingu@black,banner sticks color=pingu@bronze,banner stick left length=20mm, banner stick right length=20mm,banner bent=30,banner raise=-1mm,banner height=4mm,banner font=\bfseries}
+
+\usetikzlibrary{decorations.text}
+\def\pingu@draw@ea@banner{%
+\pingu@setup@wing{staff}{left}% we do not need the staff color, but we will use it
+\scope[rotate around={\@angle:(\pingu@name-wing-left)}]
+ \pingu@block{\pingu@color@banner@stick@left}(\pingu@name-wing-left)++(\@sidesign*-.2mm,-7mm) -- ++(0,\pingu@banner@stick@left@l) arc(180:0:\@sidesign*.4mm and .3mm) coordinate[pos=.5] (\pingu@name-s-left) -- ++(0,-\pingu@banner@stick@left@l) arc(360:180:\@sidesign*.4mm and .3mm) -- cycle;
+ \path (\pingu@name-s-left)++(.5mm,\pingu@banner@height) coordinate (\pingu@name-s-left-top) ++(0,-2*\pingu@banner@height) coordinate (\pingu@name-s-left-bot);
+\endscope
+\pingu@setup@wing{staff}{right}% we do not need the staff color, but we will use it
+\scope[rotate around={\@angle:(\pingu@name-wing-right)}]
+ \pingu@block{\pingu@color@banner@stick@right}(\pingu@name-wing-right)++(\@sidesign*-.2mm,-7mm) -- ++(0,\pingu@banner@stick@right@l) arc(180:0:\@sidesign*.4mm and .3mm) coordinate[pos=.5] (\pingu@name-s-right) -- ++(0,-\pingu@banner@stick@right@l) arc(360:180:\@sidesign*.4mm and .3mm) -- cycle;
+ \path (\pingu@name-s-right)++(-.5mm,\pingu@banner@height) coordinate (\pingu@name-s-right-top) ++(0,-2*\pingu@banner@height) coordinate (\pingu@name-s-right-bot);
+\endscope
+\pingu@block[rounded corners=.3mm]{\pingu@color@banner@band} (\pingu@name-s-left-top) to[bend right=\pingu@banner@bent] (\pingu@name-s-right-top) -- (\pingu@name-s-right-bot) to[bend left=\pingu@banner@bent] (\pingu@name-s-left-bot) -- cycle;
+\path[postaction={decorate},decoration={text color=\pingu@color@banner@text@color,text along path, raise=\pingu@banner@raise, text={|\pingu@banner@font|\pingu@banner},text align={center,left indent=1mm,right indent=1mm}}] (\pingu@name-s-right) to[bend left=\pingu@banner@bent+3] (\pingu@name-s-left);
+}
+% #endregion
+
+% #region sport-lib
+\pingu@create@extra{medal}{%
+ medal/.code = {\pingu@set@extra{medal}{true}\pingu@color{medal}{#1}},
+ medal/.default = pingu@yellow,%
+ gold medal/.style = {medal, medal text=#1}, gold medal/.default={1},
+ silver medal/.style = {medal=pingu@silver, medal text=#1}, silver medal/.default={2},
+ bronze medal/.style = {medal=pingu@bronze, medal text=#1}, bronze medal/.default={3},
+ medal band/.code = \pingu@color{medal@band}{#1},%
+ medal shade/.code = \pingu@color{medal@shade}{#1},%
+ medal shade width/.code = \def\pingu@medal@shade@w{#1},%
+ medal text/.code = \def\pingu@x@medal@text{#1},%
+ medal text style/.style = {\pingu@color@medal!65!pingu@white},
+}{medal band=pingu@red,medal text={},medal shade={\pingu@color@medal!65!pingu@white},medal shade width=.75\p@}
+
+\def\pingu@draw@eb@medal{%
+\coordinate (\pingu@name-medal-center) at ([yshift=1.25mm]\pingu@name-belly-center);
+\pingu@block{\pingu@color@medal@band} [rounded corners=.15mm] (\pingu@name-head-back-con-right) -- (\pingu@name-medal-center) -- (\pingu@name-head-back-con-left) to[bend left=11] ++(-1.35mm,-.5mm) -- ([yshift=.7mm]\pingu@name-medal-center) -- ([xshift=1.35mm,yshift=-.5mm]\pingu@name-head-back-con-right) to[bend left=11] (\pingu@name-head-back-con-right) -- cycle;
+\pingu@block{\pingu@color@medal} (\pingu@name-medal-center) circle [radius=2.35mm];
+\pingu@draw[line width=\pingu@medal@shade@w]{\pingu@color@medal@shade} (\pingu@name-medal-center) circle [radius=2.35mm];
+\node[/pingu/@text,/pingu/medal text style] at (\pingu@name-medal-center) {\pingu@x@medal@text};
+}
+\newif\if@pingu@x@headband@knot@
+\newif\if@pingu@x@headband@bands@
+\pingu@create@extra{headband}{%
+ headband/.forward to = /pingu/head band,
+ head-band/.forward to = /pingu/head band,
+ head band/.code = \pingu@set@extra{headband}{true}\pingu@color{headband}{#1},
+ head band/.default = pingu@red,
+ headband bend/.forward to = /pingu/head band bend,
+ head-band bend/.forward to = /pingu/head band bend,
+ head band bend/.code = \def\pingu@x@headband@bend{#1},
+ headband angle/.forward to = /pingu/head band angle,
+ head-band angle/.forward to = /pingu/head band angle,
+ head band angle/.code = \def\pingu@x@headband@angle{#1},
+ headband upper angle/.forward to = /pingu/head band upper angle,
+ head-band upper angle/.forward to = /pingu/head band upper angle,
+ head band upper angle/.code = \def\pingu@x@headband@upangle{#1},
+ % knot
+ headband knot/.forward to = /pingu/head band knot,
+ head-band knot/.forward to = /pingu/head band knot,
+ head band knot/.is if = @pingu@x@headband@knot@,
+ headband knot color/.forward to = /pingu/head band knot color,
+ head-band knot color/.forward to = /pingu/head band knot color,
+ head band knot color/.code = \pingu@color{headband@knot}{#1},
+ headband knot a color/.forward to = /pingu/head band knot a color,
+ head-band knot a color/.forward to = /pingu/head band knot a color,
+ head band knot a color/.code = \pingu@color{headband@knot@a}{#1},
+ headband knot b color/.forward to = /pingu/head band knot b color,
+ head-band knot b color/.forward to = /pingu/head band knot b color,
+ head band knot b color/.code = \pingu@color{headband@knot@b}{#1},
+ headband bands/.forward to = /pingu/head band bands,
+ head-band bands/.forward to = /pingu/head band bands,
+ head band bands/.is if = @pingu@x@headband@bands@,
+ headband bands a color/.forward to = /pingu/head band bands a color,
+ head-band bands a color/.forward to = /pingu/head band bands a color,
+ head band bands a color/.code = \pingu@color{headband@bands@a}{#1},
+ headband bands b color/.forward to = /pingu/head band bands b color,
+ head-band bands b color/.forward to = /pingu/head band bands b color,
+ head band bands b color/.code = \pingu@color{headband@bands@b}{#1},
+}{head band bend=9, head band angle=17,head band upper angle=50, head band knot color=\pingu@color@headband!78!black,head band knot a color=\pingu@color@headband@knot!90!black,head band knot b color=\pingu@color@headband@knot@a,head band bands,head band bands a color=\pingu@color@headband!78!black,head band bands b color=\pingu@color@headband}
+
+\def\pingu@draw@ea@headband@wh{1.25mm}
+\def\pingu@draw@ea@headband{%
+ \path (\pingu@name-head-center)+(\pingu@x@headband@upangle-\pingu@x@headband@angle:\pingu@w@half{} and \pingu@head@h@half) coordinate (\pingu@name-head-band-lower);
+ \path (\pingu@name-head-center)+(\pingu@x@headband@upangle:\pingu@w@half{} and \pingu@head@h@half) coordinate (\pingu@name-head-band-upper);
+ \if@pingu@x@headband@bands@
+ \pingu@block{\pingu@color@headband@bands@a} (\pingu@name-head-band-lower) to[out=-50,in=75] ++(2.75mm,-4mm) to[bend right] ++(.6mm,0) to[out=80,in=-5] (\pingu@name-head-band-upper) -- cycle;
+ \pingu@block{\pingu@color@headband@bands@b} (\pingu@name-head-band-lower) to[out=-80,in=80] ++(1.75mm,-3.35mm) to[bend right] ++(.45mm,0) to[out=80,in=-8] (\pingu@name-head-band-upper) -- cycle;
+ \fi
+ \pingu@block{\pingu@color@headband} (\pingu@name-head-center)+(\pingu@x@headband@upangle:\pingu@w@half{} and \pingu@head@h@half) to[bend left=\pingu@x@headband@bend] coordinate[pos=.5] (\pingu@name-headband-center-a) +(180-\pingu@x@headband@upangle:\pingu@w@half{} and \pingu@head@h@half) arc(180-\pingu@x@headband@upangle:180-\pingu@x@headband@upangle+\pingu@x@headband@angle:\pingu@w@half{} and \pingu@head@h@half) to[bend right=\pingu@x@headband@bend] coordinate[pos=.5] (\pingu@name-headband-center-b) (\pingu@name-head-band-lower) arc(\pingu@x@headband@upangle-\pingu@x@headband@angle:\pingu@x@headband@upangle:\pingu@w@half{} and \pingu@head@h@half) -- cycle;
+ \path (\pingu@name-headband-center-a) -- (\pingu@name-headband-center-b) coordinate[pos=.5] (\pingu@name-headband-center);
+ \if@pingu@x@headband@knot@
+ \pingu@block[rounded corners=.25mm]{\pingu@color@headband@knot@a} (\pingu@name-headband-center-a)++(-.15mm,-.6mm) to[out=155,in=-5] ++(-3mm,\pingu@one) to[bend right=15] ([xshift=-3mm,yshift=-.2mm]\pingu@name-headband-center-b) to[in=-155,out=5] ++(.285cm,.8mm) -- cycle;
+ \pingu@block[rounded corners=.25mm]{\pingu@color@headband@knot@b} (\pingu@name-headband-center-a)++(.15mm,-.6mm) to[out=25,in=-175] ++(3mm,\pingu@one) to[bend left=15] ([xshift=3mm,yshift=-.2mm]\pingu@name-headband-center-b) to[in=-25,out=175] ++(-.285cm,.8mm) -- cycle;
+ \pingu@block[rounded corners=.25mm]{\pingu@color@headband@knot} (\pingu@name-headband-center-a)++(-\pingu@draw@ea@headband@wh,.12mm) to[bend right=9] ++(2*\pingu@draw@ea@headband@wh,0) -- ([xshift=\pingu@draw@ea@headband@wh,yshift=-.12mm]\pingu@name-headband-center-b) to[bend right=9] ++(-2*\pingu@draw@ea@headband@wh, 0) -- cycle;
+ \fi
+}
+% #endregion
+
+% #region technology-lib
+\pingu@create@extra{vrheadset}{%
+ vr-headset/.code = \pingu@set@extra{vrheadset}{true}\pingu@color{vrheadset}{#1},
+ vr-headset/.default = pingu@black!92!gray,
+ vr-headset band/.code = \pingu@color{vrheadset@band}{#1},
+ vr-headset band top/.code = \pingu@color{vrheadset@band@top}{#1},
+ vr-headset text/.code = \def\pingu@x@vrheadset@text{#1},
+ vr-headset text color/.code = \pingu@color{vrheadset@text@color}{#1},
+ vr-headset hair/.style = {/pingu/hair 2=!hide,/pingu/hair 3=!hide,/pingu/hair 4=!hide}
+}{vr-headset band=\pingu@color@vrheadset!92!gray,vr-headset text={\textit{\textsf{VR\thinspace\texttrademark}}},vr-headset text color=pingu@white,vr-headset band top=\pingu@color@vrheadset!96!gray}
+
+\def\pingu@draw@ea@vrheadset{%
+\pingu@layer{middle}[]
+ \pingu@block{\pingu@color@vrheadset} [rounded corners=1.25mm]([yshift=3.45mm]\pingu@name-waist-right|-\pingu@name-eye-right) to[bend left=2] coordinate[pos=.5] (@) ([yshift=3.45mm]\pingu@name-waist-left|-\pingu@name-eye-left) to[bend left=3] coordinate (\pingu@name-vrh-ol) ++(0,-6.25mm) to[bend left=13] ([yshift=-1mm]\pingu@name-head-center) to[bend left=13] ([yshift=3.45mm-6.25mm]\pingu@name-waist-right|-\pingu@name-eye-right) -- cycle;
+ \path (\pingu@name-vrh-ol)++(-2.25mm,2mm) node[text=\pingu@color@vrheadset@text@color,scale=.25] {\pingu@x@vrheadset@text};
+\endpingu@layer
+\if@pingu@do@back@\else
+ % top band
+ \pingu@block[rounded corners=1pt]{\pingu@color@vrheadset@band@top} (@)++(-1.05mm+.15mm,0) to[bend right=2] ([xshift=-.85mm+.3mm,yshift=.3mm]\pingu@name-head-top) to[bend left=2] ++(1.6mm,0) to[bend left=2] ([xshift=1.25mm+.15mm]@);
+\fi
+ % we draw a band for the background
+\pingu@layer{background}[]
+\pingu@block[line cap=round]{\pingu@color@vrheadset@band} ([yshift=1mm]\pingu@name-waist-right|-\pingu@name-eye-right) to[bend left=3] coordinate[pos=.5] (@b) ([yshift=1mm]\pingu@name-waist-left|-\pingu@name-eye-left) arc(90:-90:.25mm and 1mm) to[bend right=3] ([yshift=-1mm]\pingu@name-waist-right|-\pingu@name-eye-right) arc (270:90:.25mm and 1mm);
+\pingu@block[rounded corners=1pt]{\pingu@color@vrheadset@band@top} (@b)++(-1.25mm+.2mm,-1.25mm) to[bend right=2] ([xshift=-.85mm+.3mm,yshift=.3mm]\pingu@name-head-top) to[bend right=2] ++(1.6mm,0) to[bend right=2] ([xshift=1.15mm+.2mm,yshift=-1.25mm]@b) -- cycle;
+\endpingu@layer
+}
+\pingu@create@extra{headphone}{%
+ headphones/.forward to = /pingu/headphone,
+ headphone/.code = \pingu@set@extra{headphone}{true}\pingu@color{headphone}{#1},
+ headphone/.default = pingu@blue!80!pingu@black,
+ headphone left/.code = \pingu@color{headphone@left}{#1},
+ headphone right/.code = \pingu@color{headphone@right}{#1},
+ headphones outer/.forward to = /pingu/headphone outer,
+ headphone outer/.style = {/pingu/headphone left outer=#1,/pingu/headphone right outer=#1}, headphone outer/.default = pingu@black,
+ headphone left outer/.code = \pingu@color{headphone@left@p}{#1}, headphone left outer/.default =pingu@black,
+ headphone right outer/.code = \pingu@color{headphone@right@p}{#1}, headphone right outer/.default=pingu@black,
+ headphones inner/.forward to = /pingu/headphone inner,
+ headphone inner/.style = {/pingu/headphone left inner=#1,/pingu/headphone right inner=#1}, headphone inner/.default = pingu@black,
+ headphone left inner/.code = \pingu@color{headphone@left@i}{#1}, headphone left inner/.default = pingu@black,
+ headphone right inner/.code = \pingu@color{headphone@right@i}{#1}, headphone right inner/.default=pingu@black,
+}{headphone left=\pingu@color@headphone!65!pingu@black,headphone right=\pingu@color@headphone@left,headphone left outer=\@pingu@none,
+,headphone right outer=\@pingu@none,,headphone left inner=\@pingu@none,
+,headphone right inner=\@pingu@none}
+
+\def\pingu@draw@ea@headphone{%
+\if@pingu@do@back@ \pingu@layer{background}[] \fi
+ \pingu@block[rounded corners=.1mm]{\pingu@color@headphone@right@p} ([xshift=-\pingu@one,yshift=3.22mm]\pingu@name-wings-side-right|-\pingu@name-eye-right) arc (93:273:.565mm and 2.11mm) -- ++(.8mm,.075mm) -- ++(0,4.075mm);
+ \pingu@block[rounded corners=.1mm]{\pingu@color@headphone@right@i} ([xshift=\pingu@one-.366mm,yshift=3.22mm]\pingu@name-wings-side-right|-\pingu@name-eye-right) arc (87:-93:.565mm and 2.14mm) -- ++(-.8mm,.075mm) -- ++(0,4.075mm) -- cycle;
+ \pingu@block[rounded corners=.1mm]{\pingu@color@headphone@right} ([xshift=-\pingu@one+.2mm,yshift=3.22mm]\pingu@name-wings-side-right|-\pingu@name-eye-right) arc (92:272:.565mm and 2.1mm) -- ++(.8mm,-.05mm) arc (270:450:.425mm and 2.1mm) -- cycle;
+ \pingu@block[rounded corners=.1mm]{\pingu@color@headphone@left@p} ([xshift=\pingu@one,yshift=3.22mm]\pingu@name-wings-side-left|-\pingu@name-eye-left) arc (87:-93:.565mm and 2.11mm) -- ++(-.8mm,.075mm) -- ++(0,4.075mm) -- cycle;
+ \pingu@block[rounded corners=.1mm]{\pingu@color@headphone@left@i} ([xshift=-\pingu@one+.366mm,yshift=3.22mm]\pingu@name-wings-side-left|-\pingu@name-eye-left) arc (93:273:.565mm and 2.14mm) -- ++(.8mm,.075mm) -- ++(0,4.075mm);
+ \pingu@block[rounded corners=.1mm]{\pingu@color@headphone@left} ([xshift=\pingu@one-.2mm,yshift=3.22mm]\pingu@name-wings-side-left|-\pingu@name-eye-left) arc (88:-92:.565mm and 2.1mm) -- ++(-.8mm,-.05mm) arc (270:90:.425mm and 2.1mm) -- cycle;
+ \pingu@block{\pingu@color@headphone} ([xshift=-\pingu@one,yshift=1.75\pingu@one]\pingu@name-wings-side-right|-\pingu@name-eye-right)
+ arc(180:0:{\pingu@one+\pingu@w@half} and {\pingu@head@h@half-1.3\pingu@one}) arc(0:-180:.6mm and .33mm)
+ arc(0:180:{\pingu@one+\pingu@w@half-2*.6mm} and {\pingu@head@h@half+.33\pingu@one-2*.6mm-1.8\pingu@one})
+ arc(0:-180:.6mm and .33mm) -- cycle;
+\if@pingu@do@back@ \endpingu@layer \fi
+}
+
+\pingu@create@wing@extra{vrcontroller}{%
+vr-controller \@lr/.code = {\pingu@set@extra{vrcontroller\@lr}{true}\pingu@color{vrcontroller\@lr}{##1}},
+vr-controller \@lr/.default = pingu@green,
+vr-controller \@lr\space handle/.code = \pingu@color{vrcontroller\@lr @handle}{##1},%
+vr-controller \@lr\space second/.code = \pingu@color{vrcontroller\@lr @second}{##1},%
+vr-controller \@lr\space second shade/.code = \pingu@color{vrcontroller\@lr @second@shade}{##1}%
+}{vr-controller \@lr\space handle={\csname pingu@color@vrcontroller\@lr\endcsname!76!pingu@black},vr-controller \@lr\space second={\csname pingu@color@vrcontroller\@lr\endcsname!56!pingu@black},vr-controller \@lr\space second shade={\csname pingu@color@vrcontroller\@lr\endcsname!96!pingu@black}}
+
+% #1 wing
+\def\pingu@draw@wi@vrcontroller#1{%
+ \pingu@setup@wing{vrcontroller}{#1}%
+ \pingu@block[rotate around={\@angle:(\pingu@name-wing-#1)}]{\csname pingu@color@vrcontroller#1@handle\endcsname}(\pingu@name-wing-#1)++(.5mm,5mm) to[bend right=1] ++(-.25mm,-5.5mm) arc (0:-180:.325mm and .1mm) to[bend right=1] ++(-.7mm,5.5mm) -- cycle coordinate[pos=.5] (@);
+ \def\@y{2.06mm} \def\@@y{.78mm}
+ \pingu@block[rotate around={\@angle:(\pingu@name-wing-#1)},even odd rule]{\csname pingu@color@vrcontroller#1@second\endcsname}([yshift=.1mm]@) arc (90:450:{\@y} and 1mm) coordinate[pos=.25] (@r) coordinate[pos=.75] (@l) ([yshift=-.6mm]@) arc (90:0:{\@@y} and .25mm) arc (0:-180:{\@@y} and .35mm) arc (180:90:{\@@y} and .25mm);
+ % \pingu@draw[rotate around={\@angle:(\pingu@name-wing-#1)}]{\csname pingu@color@vrcontroller#1@second@shade\endcsname} ([yshift=-.9mm]@)++(180:{\@@y} and .3mm) arc (180:0:{\@@y} and .3mm);
+ \def\@toruslow{(@l) to[bend left=7] ++(-.2mm,-.875mm) to[bend left=15] coordinate[pos=.95] (@c) ++(-2*\@y+.4mm,0) [sharp corners] to[bend left=7] ++(-.2mm,.875mm) to[bend right=30] cycle}
+ \pingu@block[rounded corners=.1mm,rotate around={\@angle:(\pingu@name-wing-#1)}]{\csname pingu@color@vrcontroller#1@second\endcsname} \@toruslow;
+ \scope[rounded corners=.1mm,rotate around={\@angle:(\pingu@name-wing-#1)}]
+ \clip \@toruslow;
+ \pingu@block[opacity=.1]{black} (@l) to[bend left=14] (@c) -- ++(0,-2mm) -| cycle;
+ \endscope
+}
+
+
+\pingu@create@wing@extra{laptop}{%
+ laptop \@lr/.code = {\pingu@set@extra{laptop\@lr}{true}\pingu@color{laptop\@lr}{##1}},
+ laptop \@lr/.default = gray!80!pingu@white,
+ laptop \@lr\space bracket/.code = \pingu@color{laptop\@lr @bracket}{##1},
+ laptop \@lr\space lower/.code = \pingu@color{laptop\@lr @lower}{##1},
+ laptop \@lr\space key/.code = \pingu@color{laptop\@lr @key}{##1},
+ laptop \@lr\space display/.code = \pingu@color{laptop\@lr @display}{##1},
+ laptop \@lr\space content/.code = \@namedef{pingu@x@laptop\@lr @content}{##1}, % tikz content
+ laptop \@lr\space mid/.code = \@namedef{pingu@x@laptop\@lr @mid}{##1}, % tikz content
+}{laptop \@lr\space bracket=pingu@black!80!\csname pingu@color@laptop\@lr\endcsname,laptop \@lr\space lower=\csname pingu@color@laptop\@lr\endcsname!95!pingu@black,laptop \@lr\space key=\csname pingu@color@laptop\@lr\endcsname!92!pingu@white,laptop \@lr\space display=\csname pingu@color@laptop\@lr\endcsname!32!pingu@white,laptop \@lr\space content={},laptop \@lr\space mid={}}
+
+% #1 wing
+\def\pingu@draw@wi@laptop#1{%
+ \pingu@setup@wing{laptop}{#1}%
+ \scope[rotate around={\@angle+5:(\pingu@name-wing-#1)},shift={(\pingu@name-wing-#1)}]
+ \pingu@block[rounded corners=1pt]{\csname pingu@color@laptop#1@lower\endcsname}(-6.9mm,0) -- ++(-.1mm,-4.75mm) -- ++(14mm,0) -- ++(-.1mm,4.75mm) -- cycle;
+ \pingu@block[rounded corners=1pt]{\@col}(-6.9mm,0) -- ++(0,7mm) -- ++(13.8mm,0) -- ++(0,-7mm) -- cycle;
+ \pingu@block[rounded corners=.125mm]{\csname pingu@color@laptop#1@bracket\endcsname}(-6.4mm,.125mm) -- ++(0,-.25mm) -- ++(12.8mm,0) -- ++(0,.25mm) -- cycle;
+ % keys
+ \foreach[count=\y from 0,evaluate=\y as \extpadding using 0.005*\y,evaluate=\y as \rextpadding using 0.05*\y] \row in {
+ % manually account for padding
+ {0,1,1,1,1,1,1,1,1,1,1,1,1,1},
+ {.63,1.5,1,1,1,1,1,1,1,1,1,1,1},
+ {0,1,1,1,1,1,1,1,1,1,1,1,1,1},
+ {0,1,1,1,1,1,4.62,1,1,1,1},
+ } {
+ \def\lengthincr{-\rextpadding mm}
+ \foreach[count=\i from 0,evaluate=\len as \l using 0.85*\len] \len in \row {
+ \ifnum\i=0 \else % first one is silent:
+ \pingu@block[rounded corners=.125mm]{\csname pingu@color@laptop#1@key\endcsname}(\lengthincr-6.4mm,-\y mm-.5mm) rectangle ++(\l mm,-.75mm) node[midway,centered,text=\@col,scale=.3] {\textbullet};
+ \fi
+ \xdef\lengthincr{\the\dimexpr\lengthincr+\l mm+.13mm+\extpadding mm}
+ }
+ }
+ % display, we modify the lower shift to adjust height offset
+ \pingu@block[rounded corners=1pt]{\csname pingu@color@laptop#1@display\endcsname}(-6.7mm,.25mm+.05mm) rectangle ++(13.4mm,6.45mm) node[midway,centered,rotate=\@angle+5,text width=13.2mm,align=center,minimum height=6.2mm] {\csname pingu@x@laptop#1@mid\endcsname};
+ \scope[shift={(-6.7mm,.25mm+.05mm)}]
+ \csname pingu@x@laptop#1@content\endcsname
+ \endscope
+ \endscope
+}
+% #endregion
\endinput
diff --git a/Master/texmf-dist/tex/latex/tikzquads/tikzquads.sty b/Master/texmf-dist/tex/latex/tikzquads/tikzquads.sty
index 31fc6757421..1cdaf13300b 100644
--- a/Master/texmf-dist/tex/latex/tikzquads/tikzquads.sty
+++ b/Master/texmf-dist/tex/latex/tikzquads/tikzquads.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {1.0} {2024/01/13}
+%% This is version {1.1} {2024/10/17}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/tikzquads
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{tikzquads}
- {2024/01/13}
- {1.0}
+ {2024/10/17}
+ {1.1}
{CircuiTikZ Extension - Quadripoles and Dipoles}
\ExplSyntaxOn
@@ -42,8 +42,8 @@
{
name .code:n = {tikzquads} ,
prefix .code:n = {tikzquads} ,
- date .code:n = {2024/01/13},
- version .code:n = {1.0} ,
+ date .code:n = {2024/10/17},
+ version .code:n = {1.1} ,
description .code:n = {CircuiTikZ~ Extension~- Quadripoles~ and~ Dipoles}
}
\cs_if_exist:NF \PkgInfo
@@ -86,6 +86,7 @@
\newtoggle{tikzquads@@toggle@outermarks}
\newtoggle{tikzquads@@toggle@beziertip}
\newtoggle{tikzquads@@toggle@roundsources}
+\newtoggle{tikzquads@@toggle@rawsources}
%
%
@@ -301,7 +302,7 @@
%%%%%%%%%%%%%%%
%%%
-%%% "QUadKeys" Path (Quadripoles)
+%%% "QuadKeys" Path (Quadripoles)
%%%
%%%%%%%%%%%%%%%
@@ -503,6 +504,8 @@
inner marks/.style={@inner marks},
@outer marks/.code={\toggletrue{tikzquads@@toggle@outermarks}},
outer marks/.style={@outer marks},
+ @raw sources/.code={\toggletrue{tikzquads@@toggle@rawsources}},
+ raw sources/.style={@raw sources},
@invert/.code={\toggletrue{tikzquads@@toggle@inverted}},
invert/.style={%
/tikz/xscale=-1,
@@ -803,7 +806,11 @@
\SearchValueOf{QuadKeys}{#3}{\@@valC}
\pgftransformresetnontranslations
\tikzquads@@CondDraw{#1}{}{\pgftext[\tikzquads@@TanchorA,at={\pgfpointanchor{\tikz@fig@name-#1}{\tikzquads@@NanchorA}}]{\@@valA}}
- \tikzquads@@CondDraw{#2}{}{\pgftext[\tikzquads@@TanchorB,at={\pgfpointanchor{\tikz@fig@name-#2}{\tikzquads@@NanchorB}}]{\@@valB\@@valC}}
+ \ifboolexpr{togl{tikzquads@@toggle@rawsources}}{%
+ \tikzquads@@CondDraw{#2}{}{\pgftext[\tikzquads@@TanchorB,at={\pgfpointanchor{\tikz@fig@name-#2}{\tikzquads@@NanchorB}}]{\@@valB}}
+ }{%
+ \tikzquads@@CondDraw{#2}{}{\pgftext[\tikzquads@@TanchorB,at={\pgfpointanchor{\tikz@fig@name-#2}{\tikzquads@@NanchorB}}]{\@@valB\@@valC}}
+ }
}
}
@@ -901,7 +908,11 @@
\SearchValueOf{QuadKeys}{#4}{\@@valC}
\pgftransformresetnontranslations
\tikzquads@@CondDraw{#2}{}{\pgftext[\tikzquads@@TanchorA,at={\pgfpointanchor{\tikz@fig@name-#2}{\tikzquads@@NanchorA}}]{\@@valA}}
- \tikzquads@@CondDraw{#3}{}{\pgftext[\tikzquads@@TanchorB,at={\pgfpointanchor{\tikz@fig@name-#3}{\tikzquads@@NanchorB}}]{\@@valB\@@valC}}
+ \ifboolexpr{togl{tikzquads@@toggle@rawsources}}{%
+ \tikzquads@@CondDraw{#3}{}{\pgftext[\tikzquads@@TanchorB,at={\pgfpointanchor{\tikz@fig@name-#3}{\tikzquads@@NanchorB}}]{\@@valB}}
+ }{%
+ \tikzquads@@CondDraw{#3}{}{\pgftext[\tikzquads@@TanchorB,at={\pgfpointanchor{\tikz@fig@name-#3}{\tikzquads@@NanchorB}}]{\@@valB\@@valC}}
+ }
}
}
diff --git a/Master/texmf-dist/tex/latex/tikzquests/tikzquests.sty b/Master/texmf-dist/tex/latex/tikzquests/tikzquests.sty
index 4ecad3156ba..6e170c76719 100644
--- a/Master/texmf-dist/tex/latex/tikzquests/tikzquests.sty
+++ b/Master/texmf-dist/tex/latex/tikzquests/tikzquests.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {1.1} {2024/01/11}
+%% This is version {1.2} {2025/01/09}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/tikzquests
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{tikzquests}
- {2024/01/11}
- {1.1}
+ {2025/01/09}
+ {1.2}
{A Simple Framework for (tikz/text) Parametric Questions}
\ExplSyntaxOn
@@ -42,8 +42,8 @@
{
name .code:n = {tikzquests} ,
prefix .code:n = {tikzquests} ,
- date .code:n = {2024/01/11},
- version .code:n = {1.1} ,
+ date .code:n = {2025/01/09},
+ version .code:n = {1.2} ,
description .code:n = {A Simple Framework for (tikz/text) Parametric Questions}
}
\cs_if_exist:NF \PkgInfo
@@ -134,7 +134,8 @@
\seq_new:N \l__tikzquests_repositories_seq
\tl_new:N \l__tikzquests_active_repository_tl
-\seq_new:N \l__tikzquests_tmp_seq
+\seq_new:N \l__tikzquests_tmpa_seq
+\seq_new:N \l__tikzquests_tmpb_seq
\tl_new:N \l__tikzquests_tmp_tl
\cs_new_protected:Npn \__tikzquests_select_repository:n #1
@@ -155,10 +156,10 @@
\msg_warning:nnne {tikzquests}{repository already defined}{new~01}{#2}
}
{
- \prop_new:c {l__tikzquests_ #2 _tikzrepo_prop}
- \prop_new:c {l__tikzquests_ #2 _tikzrepo_remarks_prop}
- \prop_new:c {l__tikzquests_ #2 _textrepo_prop}
- \prop_new:c {l__tikzquests_ #2 _textrepo_remarks_prop}
+ \prop_new_linked:c {l__tikzquests_ #2 _tikzrepo_prop}
+ \prop_new_linked:c {l__tikzquests_ #2 _tikzrepo_remarks_prop}
+ \prop_new_linked:c {l__tikzquests_ #2 _textrepo_prop}
+ \prop_new_linked:c {l__tikzquests_ #2 _textrepo_remarks_prop}
\seq_put_right:Nn \l__tikzquests_repositories_seq {#2}
}
\bool_if:nT {#1}
@@ -365,19 +366,41 @@
{
\tl_if_blank:nTF {#1}
{
- \seq_set_eq:NN \l__tikzquests_tmp_seq \l__tikzquests_repositories_seq
+ \seq_set_eq:NN \l__tikzquests_tmpb_seq \l__tikzquests_repositories_seq
}
{
- \seq_set_from_clist:Nn \l__tikzquests_tmp_seq {#1}
+ \seq_set_from_clist:Nn \l__tikzquests_tmpb_seq {#1}
}
- \seq_remove_duplicates:N \l__tikzquests_tmp_seq
- \seq_sort:Nn \l__tikzquests_tmp_seq
+
+ \seq_map_inline:Nn \l__tikzquests_tmpb_seq
+ {
+ \regex_match:nnTF {/$}{##1}
+ {
+ \tl_set:Nn \l_tmpa_tl {##1}
+ \regex_replace_once:nnN {/$}{} \l_tmpa_tl
+ \seq_put_right:Nn \l__tikzquests_tmpa_seq {\l_tmpa_tl}
+ \seq_map_inline:Nn \l__tikzquests_repositories_seq
+ {
+ \regex_match:nnTF {##1}{####1}
+ {
+ \seq_put_right:Nn \l__tikzquests_tmpa_seq {####1}
+ }
+ {}
+ }
+ }
+ {
+ \seq_put_right:Nn \l__tikzquests_tmpa_seq {##1}
+ }
+ }
+
+ \seq_remove_duplicates:N \l__tikzquests_tmpa_seq
+ \seq_sort:Nn \l__tikzquests_tmpa_seq
{
\str_compare:eNeTF { ##1 } > { ##2 }
{ \sort_return_swapped: }
{ \sort_return_same: }
}
- \seq_map_inline:Nn \l__tikzquests_tmp_seq
+ \seq_map_inline:Nn \l__tikzquests_tmpa_seq
{
\prop_if_exist:cTF {l__tikzquests_ ##1 _tikzrepo_prop}
{
diff --git a/Master/texmf-dist/tex/latex/timeop/timeop.sty b/Master/texmf-dist/tex/latex/timeop/timeop.sty
new file mode 100644
index 00000000000..d3130cbf49a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/timeop/timeop.sty
@@ -0,0 +1,280 @@
+% Author : C. Pierquet
+% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{timeop}[2024/11/17 0.1.0 Calculates and displays arithmetic operations with durations.]
+
+%====HISTORY
+% v 0.1.0 Initial version
+
+%====OPTION
+\newif\if@amsmath \@amsmathtrue
+\DeclareOption{noamsmath}{\@amsmathfalse}
+\DeclareOption*{}
+\ProcessOptions\relax
+
+%====BASE
+\if@amsmath
+ \RequirePackage{amsmath}
+\fi
+\RequirePackage{xstring}
+\RequirePackage{xintexpr}
+\RequirePackage{listofitems}
+\RequirePackage{tabularray}
+\RequirePackage{simplekv}
+\RequirePackage{tcolorbox}
+\tcbuselibrary{skins}
+
+%====SPECIAL
+\newlength\convhmsopecolsep
+\NewDocumentCommand\formathms{ m }{%
+ \ifboolKV[stohms]{zeros}{\xintifboolexpr{#1 < 10}{0#1}{#1}}{#1}%
+}
+\newtcbox\myopbox[1][black]{%
+ colframe=#1,colback=white,size=fbox,boxrule=0.8pt,arc=1.2pt,boxsep=-0.8pt,top=3pt,bottom=2.2pt,%
+ box align=base,nobeforeafter,opacityback=0,enhanced jigsaw%
+}
+\NewDocumentCommand\boxhms{ m }{%
+ \myopbox[#1]{\phantom{00}}%
+}
+
+%====CONVERSION (INTERNAL)
+\NewDocumentCommand\hmstos{ m O{\convtosec} }{%
+ \readlist*\tmpophmsA{#1}%
+ \xdef#2{\fpeval{3600*(\tmpophmsA[1])+60*(\tmpophmsA[2])+(\tmpophmsA[3])}}%
+}
+\NewDocumentCommand\hmtos{ m O{\convtosec} }{%
+ \readlist*\tmpophmsA{#1}%
+ \xdef#2{\fpeval{3600*(\tmpophmsA[1])+60*(\tmpophmsA[2])}}%
+}
+
+%====KEYS
+\defKV[stohms]{%
+ sys=\def\stohmssys{#1}
+}
+\setKVdefault[stohms]{%
+ zeros=true,%
+ raw=true,%
+ sys=eu
+}
+
+%====MACROS
+\NewDocumentCommand\stohms{ O{} m O{\convtohms} }{%
+ \restoreKV[stohms]%
+ \setKV[stohms]{#1}%
+ \ifboolKV[stohms]{raw}%
+ {%
+ \xdef#3{}%
+ \xdef#3{\fpeval{trunc((#2)/3600,0)},}%
+ \xdef\tmpHHrest{\fpeval{(#2)-trunc((#2)/3600,0)*3600}}%
+ \xdef#3{#3\fpeval{trunc((\tmpHHrest)/60,0)},\fpeval{(\tmpHHrest)-trunc((\tmpHHrest)/60,0)*60}}%
+ }%
+ {%
+ \IfEq{\stohmssys}{eu}%
+ {%
+ \xdef\tmpHH{\xintfloateval{trunc((#2)/3600,0)}}%
+ \xdef\tmpHHrest{\xintfloateval{(#2)-trunc((#2)/3600,0)*3600}}%
+ \xdef\tmpMM{\xintfloateval{trunc((\tmpHHrest)/60,0)}}%
+ \xdef\tmpSS{\xintfloateval{(\tmpHHrest)-trunc((\tmpHHrest)/60,0)*60}}%
+ \xintifboolexpr{\tmpHH !=0 'and' \tmpMM != 0 'and' \tmpSS != 0}%HMS
+ {\formathms{\tmpHH}\:\text{h}\:\formathms{\tmpMM}\:\text{min}\:\formathms{\tmpSS}\:\text{s}}{}%
+ \xintifboolexpr{\tmpHH ==0 'and' \tmpMM != 0 'and' \tmpSS != 0}%MS
+ {\formathms{\tmpMM}\:\text{min}\:\formathms{\tmpSS}\:\text{s}}{}%
+ \xintifboolexpr{\tmpHH !=0 'and' \tmpMM == 0 'and' \tmpSS != 0}%HS
+ {\formathms{\tmpHH}\:\text{h}\:\formathms{\tmpSS}\:\text{s}}{}%
+ \xintifboolexpr{\tmpHH !=0 'and' \tmpMM != 0 'and' \tmpSS == 0}%HM
+ {\formathms{\tmpHH}\:\text{h}\:\formathms{\tmpMM}\:\text{min}}{}%
+ \xintifboolexpr{\tmpHH != 0 'and' \tmpMM == 0 'and' \tmpSS == 0}%H
+ {\formathms{\tmpHH}\:\text{h}}{}%
+ \xintifboolexpr{\tmpHH == 0 'and' \tmpMM != 0 'and' \tmpSS == 0}%M
+ {\formathms{\tmpMM}\:\text{min}}{}%
+ \xintifboolexpr{\tmpHH == 0 'and' \tmpMM == 0 'and' \tmpSS != 0}%S
+ {\formathms{\tmpSS}\:\text{s}}{}%
+ }%
+ {%
+ \xdef\tmpHH{\xintfloateval{trunc((#2)/3600,0)}}%
+ \xdef\tmpHHrest{\xintfloateval{(#2)-trunc((#2)/3600,0)*3600}}%
+ \xdef\tmpMM{\xintfloateval{trunc((\tmpHHrest)/60,0)}}%
+ \xdef\tmpSS{\xintfloateval{(\tmpHHrest)-trunc((\tmpHHrest)/60,0)*60}}%
+ \formathms{\tmpHH}:\formathms{\tmpMM}:\formathms{\tmpSS}%
+ }%
+ }%
+}
+
+\defKV[convhms]{%
+ type=\def\convhmsope{#1},%
+ find=\def\convhmsaffval{#1},%
+ colsep=\setlength{\convhmsopecolsep}{#1}
+}
+\setKVdefault[convhms]{%
+ zeros=false,%
+ find={},%
+ type=+,%
+ colsep=1.5pt
+}
+
+\NewDocumentCommand\simpletimeop{ O{} m m m }{%
+ \restoreKV[convhms]%
+ \setKV[convhms]{#1}%
+ \readlist*\tmpophmsA{#2}%
+ \readlist*\tmpophmsB{#3}%
+ \readlist*\tmpophmsC{#4}%
+ \ifnum\tmpophmsAlen=2\relax%
+ \begin{tblr}{colspec={crcrc},colsep=1pt}
+ &{\tmpophmsA[1]}&h&{\tmpophmsA[2]}&min\\
+ $\convhmsope$&{\tmpophmsB[1]}&h&{\tmpophmsB[2]}&min\\\hline
+ &{\tmpophmsC[1]}&h&{\tmpophmsC[2]}&min\\
+ \end{tblr}%
+ \else%
+ \begin{tblr}{colspec={crcrcrc},colsep=1pt}
+ &{\tmpophmsA[1]}&h&{\tmpophmsA[2]}&min&{\tmpophmsA[3]}&s\\
+ $\convhmsope$&{\tmpophmsB[1]}&h&{\tmpophmsB[2]}&min&{\tmpophmsB[3]}&s\\\hline
+ &{\tmpophmsC[1]}&h&{\tmpophmsC[2]}&min&{\tmpophmsC[3]}&s\\
+ \end{tblr}%
+ \fi%
+}
+
+\NewDocumentCommand\intaffhmsbox{ m m }{%
+ %1=\tmpophmsa
+ %2=i
+ \IfEq{\convhmsaffval}{}{#1}%
+ {%
+ \itemtomacro\tmpophmsaffvals[#2]{\tmpophcol}%
+ \IfEq{\tmpophcol}{-}%
+ {%
+ #1%
+ }%
+ {%
+ \boxhms{\tmpophcol}%
+ }%
+ }%
+}
+
+\NewDocumentCommand\calctimeop{ O{} m m }{%
+ \restoreKV[convhms]%
+ \setKV[convhms]{#1}%
+ \readlist*\tmpophmsA{#2}%
+ \ifnum\tmpophmsAlen=2%just HM
+ \itemtomacro\tmpophmsA[1]\tmpophmsa%
+ \itemtomacro\tmpophmsA[2]\tmpophmsb%
+ \readlist*\tmpophmsB{#3}%
+ \itemtomacro\tmpophmsB[1]\tmpophmsd%
+ \itemtomacro\tmpophmsB[2]\tmpophmse%
+ \hmtos{#2}[\tmpHeureA]%
+ \hmtos{#3}[\tmpHeureB]%
+ \IfEq{\convhmsope}{+}%
+ {%
+ \xdef\tmpCalculHeureAB{\inteval{(\tmpHeureA)+(\tmpHeureB)}}%
+ }%
+ {%
+ \xdef\tmpCalculHeureAB{\inteval{(\tmpHeureA)-(\tmpHeureB)}}%
+ }%
+ \stohms{\tmpCalculHeureAB}%
+ \readlist*\tmpophmsC{\convtohms}%
+ \itemtomacro\tmpophmsC[1]\tmpophmsg%
+ \itemtomacro\tmpophmsC[2]\tmpophmsh%
+ %reading of 'findind boxes'
+ \IfEq{\convhmsaffval}{}{}%
+ {\readlist*\tmpophmsaffvals{\convhmsaffval}}%
+ %format
+ \begin{tblr}{colspec={crcrc},colsep=\convhmsopecolsep}
+ &
+ \intaffhmsbox{\tmpophmsa}{1}%
+ &
+ h
+ &
+ \intaffhmsbox{\tmpophmsb}{2}%
+ &
+ min
+ \\
+ $\convhmsope$
+ &
+ \intaffhmsbox{\tmpophmsd}{3}%
+ &
+ h
+ &
+ \intaffhmsbox{\tmpophmse}{4}%
+ &
+ min
+ \\\hline
+ &
+ \intaffhmsbox{\tmpophmsg}{5}%
+ &
+ h
+ &
+ \intaffhmsbox{\tmpophmsh}{6}%
+ &
+ min
+ \\
+ \end{tblr}%
+ \else%HMS
+ \itemtomacro\tmpophmsA[1]\tmpophmsa%
+ \itemtomacro\tmpophmsA[2]\tmpophmsb%
+ \itemtomacro\tmpophmsA[3]\tmpophmsc%
+ \readlist*\tmpophmsB{#3}%
+ \itemtomacro\tmpophmsB[1]\tmpophmsd%
+ \itemtomacro\tmpophmsB[2]\tmpophmse%
+ \itemtomacro\tmpophmsB[3]\tmpophmsf%
+ \hmstos{#2}[\tmpHeureA]%
+ \hmstos{#3}[\tmpHeureB]%
+ \IfEq{\convhmsope}{+}%
+ {%
+ \xdef\tmpCalculHeureAB{\inteval{(\tmpHeureA)+(\tmpHeureB)}}%
+ }%
+ {%
+ \xdef\tmpCalculHeureAB{\inteval{(\tmpHeureA)-(\tmpHeureB)}}%
+ }%
+ \stohms{\tmpCalculHeureAB}%
+ \readlist*\tmpophmsC{\convtohms}%
+ \itemtomacro\tmpophmsC[1]\tmpophmsg%
+ \itemtomacro\tmpophmsC[2]\tmpophmsh%
+ \itemtomacro\tmpophmsC[3]\tmpophmsi%
+ %reading of 'findind boxes'
+ \IfEq{\convhmsaffval}{}{}%
+ {\readlist*\tmpophmsaffvals{\convhmsaffval}}%
+ %format
+ \begin{tblr}{colspec={crcrcrc},colsep=\convhmsopecolsep}
+ &
+ \intaffhmsbox{\tmpophmsa}{1}%
+ &
+ h
+ &
+ \intaffhmsbox{\tmpophmsb}{2}%
+ &
+ min
+ &
+ \intaffhmsbox{\tmpophmsc}{3}%
+ &
+ s
+ \\
+ $\convhmsope$
+ &
+ \intaffhmsbox{\tmpophmsd}{4}%
+ &
+ h
+ &
+ \intaffhmsbox{\tmpophmse}{5}%
+ &
+ min
+ &
+ \intaffhmsbox{\tmpophmsf}{6}%
+ &
+ s
+ \\\hline
+ &
+ \intaffhmsbox{\tmpophmsg}{7}%
+ &
+ h
+ &
+ \intaffhmsbox{\tmpophmsh}{8}%
+ &
+ min
+ &
+ \intaffhmsbox{\tmpophmsi}{9}%
+ &
+ s\\
+ \end{tblr}%
+ \fi%
+}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/titlesec/titleps.sty b/Master/texmf-dist/tex/latex/titlesec/titleps.sty
index 7e75a746fcd..b8682327ac7 100644
--- a/Master/texmf-dist/tex/latex/titlesec/titleps.sty
+++ b/Master/texmf-dist/tex/latex/titlesec/titleps.sty
@@ -1,5 +1,5 @@
%
-% Copyright (C) 1998-2023 Javier Bezos http://www.texnia.com
+% Copyright (C) 1998-2025 Javier Bezos http://www.texnia.com
%
% This file may be distributed and/or modified under the conditions of
% the MIT License. A version can be found at the end of this file.
@@ -13,7 +13,7 @@
\ifx\ttl@coreps\@empty\else % START code for package
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{titleps}[2023/10/27 v2.16 Page styles]
+\ProvidesPackage{titleps}[2025/01/04 v2.17 Page styles]
% This package is mainly a wrapper for the pagestyle macros provided
% by titlesec, so that they can be used without it. Functionality is
diff --git a/Master/texmf-dist/tex/latex/titlesec/titlesec.sty b/Master/texmf-dist/tex/latex/titlesec/titlesec.sty
index 749a3fad7c6..5b928a76997 100644
--- a/Master/texmf-dist/tex/latex/titlesec/titlesec.sty
+++ b/Master/texmf-dist/tex/latex/titlesec/titlesec.sty
@@ -1,5 +1,5 @@
%
-% Copyright (C) 1998-2023 Javier Bezos http://www.texnia.com
+% Copyright (C) 1998-2025 Javier Bezos http://www.texnia.com
%
% This file may be distributed and/or modified under the conditions of
% the MIT License. A version can be found at the end of this file.
@@ -34,7 +34,7 @@
% ~~~~~~~
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{titlesec}[2023/10/27 v2.16 Sectioning titles]
+\ProvidesPackage{titlesec}[2025/01/04 v2.17 Sectioning titles]
% Initialization
% ~~~~~~~~~~~~~~
diff --git a/Master/texmf-dist/tex/latex/titlesec/titletoc.sty b/Master/texmf-dist/tex/latex/titlesec/titletoc.sty
index 7d3ac5e93a6..74e3f244524 100644
--- a/Master/texmf-dist/tex/latex/titlesec/titletoc.sty
+++ b/Master/texmf-dist/tex/latex/titlesec/titletoc.sty
@@ -1,5 +1,5 @@
%
-% Copyright (C) 1998-2023 Javier Bezos http://www.texnia.com
+% Copyright (C) 1998-2025 Javier Bezos http://www.texnia.com
%
% This file may be distributed and/or modified under the conditions of
% the MIT License. A version can be found at the end of this file.
@@ -7,7 +7,7 @@
% Repository: https://github.com/jbezos/titlesec
%
-\ProvidesPackage{titletoc}[2023/10/27 v2.16 TOC entries]
+\ProvidesPackage{titletoc}[2025/01/04 v2.17 TOC entries]
% The following tags are used:
% ttl@ : the generic one, shared with titlesec
@@ -102,22 +102,15 @@
\DeclareOption{rubberseps}{%
\def\ttl@contentsstretch{\vskip\z@\@plus.1\p@}}
+\newcommand\contentslabel{}
\DeclareOption{leftlabels}{%
\renewcommand\numberline[1]{\hb@xt@\@tempdima{#1\ttl@idot\hfil}}%
- \newcommand\contentslabel[2][\thecontentslabel\ttl@idot]{%
-% \let\ttl@a\thecontentslabel %%%%% For the star variant
-% \def\thecontentslabel{#2}% %%% To be fully implemented... when?
-% \setbox\z@\hbox{#1}%
-% \dimen@\wd\z@
-% \let\thecontentslabel\ttl@a
-% \hspace*{-\dimen@}\hb@xt@\dimen@{#1\hfil}
-% \show\ttl@b \show\ttl@a
+ \renewcommand\contentslabel[2][\thecontentslabel\ttl@idot]{%
\hspace*{-#2}\hb@xt@#2{#1\hfil}}}
\DeclareOption{rightlabels}{%
\renewcommand\numberline[1]{\hb@xt@\@tempdima{\hss#1\ttl@idot\enspace}}%
- \let\contentslabel\relax
- \newcommand\contentslabel[2][\thecontentslabel\ttl@idot\enspace]{%
+ \renewcommand\contentslabel[2][\thecontentslabel\ttl@idot\enspace]{%
\hspace*{-#2}\hb@xt@#2{\hfil#1}}}
\newcommand\contentspage[1][\thecontentspage]{%
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz-elements.sty b/Master/texmf-dist/tex/latex/tkz-elements/tkz-elements.sty
index 597a0508506..f0b32574e1f 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz-elements.sty
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz-elements.sty
@@ -1,5 +1,5 @@
% encoding : utf8
-% tkz-elements.sty v2.30c
+% tkz-elements.sty v3.0c
% Copyright 2024 Alain Matthes
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -11,29 +11,34 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\ProvidesPackage{tkz-elements}[2024/07/16 version 2.30c Graphic Object Library]
-\RequirePackage{luacode}
-\directlua{require "tkz_elements_main"}
+\ProvidesPackage{tkz-elements}[2025/01/06 version 3.10 Graphic Object Library]
+%\RequirePackage{luacode}
+ \directlua{
+ require "tkz_elements_main"
+ tkz_epsilon = 1e-8
+ tkz_dc = 2
+ indirect = true
+ inside = true
+ init_elements()}%
+
\newenvironment{tkzelements}
{ \directlua{scale=1}
- \directlua{tkz_epsilon=1e-8}
- \directlua{tkz_dc=2}
- \directlua{indirect = true}
- \directlua{z={}
- C={}
- E={}
- L={}
- M={}
- P={}
- Q={}
- R={}
- RP={}
- S={}
- T={}
- V={}}
+ \directlua{z = {}
+ C = {}
+ E = {}
+ L = {}
+ M = {}
+ P = {}
+ Q = {}
+ R = {}
+ RP= {}
+ S = {}
+ T = {}
+ V = {}}
\luacode}
- {\endluacode}
+ {\endluacode}%
+
% new version of the next macro proposed by Sanskar Singh
\def\tkzGetNodes{\directlua{%
for K,V in pairs(z) do
@@ -48,7 +53,7 @@
tex.sprint("\string\\coordinate ("..K..") at ("..V.re..","..V.im..") ; \string\r")
end}}
-\def\tkzUseLua#1{\directlua{tex.print(tostring(#1))}}
+\def\tkzUseLua#1{\directlua{tex.print(#1)}}
\makeatletter
\def\tkzDrawLuaEllipse{\pgfutil@ifnextchar[{\tkz@DrawLuaEllipse}{\tkz@DrawLuaEllipse[]}}
\def\tkz@DrawLuaEllipse[#1](#2,#3,#4){%
@@ -63,6 +68,7 @@ end}}
\pgfmathprintnumber{#2}
\endgroup
}
+\let\percentchar\@percentchar
\makeatother
\endinput
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_circle.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_circle.lua
index e17ccb2ebb4..7ed5e1839f9 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_circle.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_circle.lua
@@ -1,6 +1,6 @@
-- tkz_elements-circles.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -24,6 +24,8 @@ function circle: new (c, t) -- c --> center t --> through
local east = c + point (radius,0)
local north = c + point (0,radius)
local west = c - point (radius,0)
+ local perimeter = 2*math.pi*radius
+ local area = 4*math.pi*radius*radius
local o = { center = c,
through = t,
ct = ct,
@@ -33,7 +35,9 @@ function circle: new (c, t) -- c --> center t --> through
east = east,
north = north,
west = west,
- type = type}
+ type = type,
+ perimeter = perimeter,
+ area = area}
setmetatable(o, self)
self.__index = self
return o
@@ -51,26 +55,12 @@ end
-----------------------
-- boolean --
-----------------------
-function circle: in_out (pt)
- local d
- d = point.abs (pt - self.center)
- if math.abs(d-self.radius) < tkz_epsilon
- then
- return true
- else
- return false
- end
+function circle:in_out(pt)
+ return math.abs(point.abs(pt - self.center) - self.radius) < tkz_epsilon
end
-function circle: in_out_disk (pt)
- local d
- d = point.abs (pt - self.center)
- if d <= self.radius
- then
- return true
- else
- return false
- end
+function circle:in_out_disk(pt)
+ return point.abs(pt - self.center) <= self.radius
end
-- new version 1.80 added
@@ -78,6 +68,16 @@ function circle : circles_position (C)
return circles_position_ (self.center,self.radius,C.center,C.radius)
end
+function circle:is_tangent(l)
+ local a, b = intersection(self, l)
+ -- Checks whether the intersection produces valid points
+ if not a or not b then
+ return false
+ end
+ -- Checks whether the distance between the two intersection points is less than a given tolerance
+ return (point.abs(b - a) < tkz_epsilon)
+end
+
-----------------------
-- real --
-----------------------
@@ -131,59 +131,64 @@ end
-----------------------
-- lines --
-----------------------
-function circle: tangent_at (pt)
- return line : new ( rotation_ (pt,math.pi/2,self.center),rotation_ (pt,-math.pi/2,self.center))
+function circle:tangent_at(pt)
+ return line:new(
+ rotation_(pt, math.pi / 2, self.center),
+ rotation_(pt, -math.pi / 2, self.center)
+ )
+end
+
+
+ function circle:tangent_from(pt)
+ local t1, t2 = tangent_from_(self.center, self.through, pt)
+ return line:new(pt, t1), line:new(pt, t2)
end
-function circle: tangent_from (pt)
- local t1,t2
- t1,t2 = tangent_from_ (self.center,self.through,pt)
- return line :new (pt,t1),line : new (pt,t2)
+ function circle:radical_axis(C)
+ local t1, t2
+ if self.radius > C.radius then
+ t1, t2 = radical_axis_(self.center, self.through, C.center, C.through)
+ else
+ t1, t2 = radical_axis_(C.center, C.through, self.center, self.through)
+ end
+ return line:new(t1, t2)
end
- function circle: radical_axis (C)
- local t1,t2
- if self.radius > C.radius then
- t1,t2 = radical_axis_ (self.center,self.through,C.center,C.through)
- else
- t1,t2 = radical_axis_ (C.center,C.through,self.center,self.through)
- end
- return line :new (t1,t2)
- end
-function circle: radical_center (C1,C2)
-if C2 == nil then
- if self.radius > C1.radius then
- return radical_center_ (self.center,self.through,C1.center,C1.through)
- else
- return radical_center_ (C1.center,C1.through,self.center,self.through)
- end
-else
- return radical_center3 (self,C1,C2)
-end
-end
+ function circle:radical_center(C1, C2)
+ if C2 == nil then
+ if self.radius > C1.radius then
+ return radical_center_(self.center, self.through, C1.center, C1.through)
+ else
+ return radical_center_(C1.center, C1.through, self.center, self.through)
+ end
+ else
+ return radical_center3(self, C1, C2)
+ end
+ end
-function circle : radical_circle (C1,C2)
- local rc
- if C2 == nil then
- rc = self : radical_center (C1)
- return self : orthogonal_from (rc)
- else
- rc = self : radical_center (C1,C2)
- return C1 : orthogonal_from (rc)
- end
-end
+ function circle : radical_circle (C1,C2)
+ local rc
+ if C2 == nil then
+ rc = self : radical_center (C1)
+ return self : orthogonal_from (rc)
+ else
+ rc = self : radical_center (C1,C2)
+ return C1 : orthogonal_from (rc)
+ end
+ end
- function circle : external_tangent(C)
- local i,t1,t2,k,T1,T2
- i = barycenter_ ({C.center,self.radius},{self.center,-C.radius})
- t1,t2 = tangent_from_ (self.center,self.through,i)
- k = point.mod((C.center-i)/(self.center-i))
- T1 = homothety_(i,k,t1)
- T2 = homothety_(i,k,t2)
- return line : new (t1,T1),line : new (t2,T2)
+ function circle:external_tangent(C)
+ local i, t1, t2, k, T1, T2
+ i = barycenter_({C.center, self.radius}, {self.center, -C.radius})
+ t1, t2 = tangent_from_(self.center, self.through, i)
+ k = point.mod((C.center - i) / (self.center - i))
+ T1 = homothety_(i, k, t1)
+ T2 = homothety_(i, k, t2)
+ return line:new(t1, T1), line:new(t2, T2)
end
+
function circle : internal_tangent(C)
local i,t1,t2,k,T1,T2
i = barycenter_ ({C.center,self.radius},{self.center,C.radius})
@@ -221,54 +226,52 @@ function circle: orthogonal_through (pta,ptb)
return circle : new (orthogonal_through_ (self.center,self.through,pta,ptb),pta)
end
- function circle: inversion_L (L)
- local p,q
- if L: in_out (self.center) then
- return L
- else
- p = L: projection (self.center)
- q = inversion_ (self.center,self.through,p)
- return circle: new (midpoint_(self.center,q),q)
- end
+ function circle:inversion_L(L)
+ if L:in_out(self.center) then
+ return L
+ else
+ local p = L:projection(self.center)
+ local q = inversion_(self.center, self.through, p)
+ return circle:new(midpoint_(self.center, q), q)
+ end
end
-
- function circle: inversion_C (C)
- local p,q,x,y
- if C: in_out (self.center) then
- p = C : antipode (self.center)
- q = inversion_ (self.center,self.through,p)
- x = ortho_from_ ( q , self.center , p )
- y = ortho_from_ ( q , p, self.center)
- return line : new (x,y)
- else
- x,y = intersection_lc_ (self.center,C.center,C.center,C.through)
- X = inversion_ (self.center,self.through,x)
- Y = inversion_ (self.center,self.through,y)
- return circle : new (midpoint_(X,Y),X)
- end
+
+ function circle:inversion_C(C)
+ local p, q, x, y, X, Y
+ if C:in_out(self.center) then
+ p = C:antipode(self.center)
+ q = inversion_(self.center, self.through, p)
+ x = ortho_from_(q, self.center, p)
+ y = ortho_from_(q, p, self.center)
+ return line:new(x, y)
+ else
+ x, y = intersection_lc_(self.center, C.center, C.center, C.through)
+ X = inversion_(self.center, self.through, x)
+ Y = inversion_(self.center, self.through, y)
+ return circle:new(midpoint_(X, Y), X)
+ end
end
-function circle: inversion (...)
- local obj,nb,t
- local tp = table.pack(...)
- obj = tp[1]
- nb = tp.n
- if nb == 1 then
- if obj.type == "point" then
- return inversion_ (self.center,self.through,obj)
- elseif obj.type == "line" then
- return self: inversion_L (obj)
- else
- return self: inversion_C (obj)
- end
- else
- t = {}
- for i=1,tp.n do
- table.insert( t , inversion_ (self.center,self.through , tp[i]) )
+ function circle:inversion(...)
+ local tp = table.pack(...)
+ local obj = tp[1]
+ local nb = tp.n
+ if nb == 1 then
+ if obj.type == "point" then
+ return inversion_(self.center, self.through, obj)
+ elseif obj.type == "line" then
+ return self:inversion_L(obj)
+ else
+ return self:inversion_C(obj)
end
- return table.unpack ( t )
- end
-end
+ else
+ local t = {}
+ for i = 1, nb do
+ table.insert(t, inversion_(self.center, self.through, tp[i]))
+ end
+ return table.unpack(t)
+ end
+ end
function circle: draw ()
local x,y
@@ -282,4 +285,111 @@ function circle: midcircle(C)
return midcircle_ (self,C)
end
+-- -----------------------------------------------------------
+-- Circle tangent to a circle passing through two points
+function circle : c_c_pp(a,b)
+
+ -- test If one point is inside the disk and the other is outside, there is no solution.
+ if (self:in_out_disk(a) and not self:in_out_disk(b)) or ( self:in_out_disk(b) and not self:in_out_disk(a)) then
+ tex.error("An error has occurred", {"Bad configuration. Only one point is in the disk"})
+return end
+
+-- Find the mediator of the current line
+local lab = line : new (a,b)
+local lmed = lab : mediator()
+
+if self : is_tangent (lab) then
+ local c = intersection (self,lab)
+ local d = self : antipode (c)
+
+ return circle:new (circum_circle_(a, b, d),a),
+ circle:new (circum_circle_(a, b, d),a)
+end
+
+-- pb are (AB) tgt to circle A and B equidistant of O tgt and equidistant
+if lab : is_equidistant (self.center) then
+ local t1,t2 = intersection (lmed,self)
+ return circle:new (circum_circle_(a, b, t1),t1),
+ circle:new (circum_circle_(a, b, t2),t2)
+else
+ -- Create a circumcircle passing through a, b, and a point on C
+ local Cc = circle:new(circum_circle_(a, b, self.center), a)
+ -- Find the intersection points of C and Cc
+ local c, d = intersection(self, Cc)
+ -- Create a line passing through the two intersection points
+ local lcd = line:new(c, d)
+ -- Find the intersection of the current line (self) with the line lcd
+ local i = intersection(lab, lcd)
+ -- Create tangents from the intersection point to C
+ local lt, ltp = self:tangent_from(i)
+ -- Get the tangent points
+ local t, tp = lt.pb, ltp.pb
+ -- Return two new circles tangent to C and passing through the tangent points
+ return circle:new(intersection(lmed, line:new(self.center, t)), t),
+ circle:new(intersection(lmed, line:new(self.center, tp)), tp)
+end
+end
+
+
+-- Circle tangent to two circles passing through a point
+function circle : c_cc_p (C,p)
+ local i = self: external_similitude (C)
+ local lofcenters = line : new (self.center,C.center)
+ local u1,u2 = intersection (lofcenters,self)
+ local v1,v2 = intersection (lofcenters,C)
+ local u1,v1 = self : common_tangent (C)
+ local o = circum_circle_(u1,v1,p)
+ local a,b = intersection_lc_(i,p,o,p)
+ if (point.abs(a - b) < tkz_epsilon) then
+ local li = line:new (i,p)
+ return C : c_lc_p (li,a)
+ else
+ local q
+ -- problem if p == q ?
+ if (point.abs(a - p) < tkz_epsilon) then q = b else q=a end
+ return C : c_c_pp (p,q)
+ end
+end
+
+-- Circle tangent to one circle, on line and passing through a point
+function circle : c_lc_p (l,p,inside)
+ inside = inside or false
+ if self : in_out (p) then
+ local t1 = intersection_ll_( self.north,p,l.pa,l.pb)
+ local t2 = intersection_ll_( self.south,p,l.pa,l.pb)
+ local l1 = l : ortho_from (t1)
+ local l2 = l : ortho_from (t2)
+ local o1 = intersection_ll_( self.center,p,l1.pa,l1.pb)
+ local o2 = intersection_ll_( self.center,p,l2.pa,l2.pb)
+ return circle:new(o1,t1),circle:new(o2,t2)
+ else
+ if l : in_out (p) then
+ local i = l : projection (self.center)
+ local lortho = l : ortho_from (p)
+ local u = lortho : report (self.radius,p)
+ local v = lortho : report (-self.radius,p)
+ local ux,uy = mediator_ (self.center,u)
+ local vx,vy = mediator_ (self.center,v)
+ -- pb if c tgt l
+ local o1= intersection_ll_(u,v,ux,uy)
+ local o2 = intersection_ll_(u,v,vx,vy)
+ return circle:new(o1,p),circle:new(o2,p)
+ else -- genral case
+ local u = self.north
+ local v = self.south
+ local h = intersection_ll_(u,v,l.pa,l.pb)
+ if inside then
+ local o = circum_circle_(p,u,h)
+ local q = intersection_lc_(p,v,o,p)
+ return self : c_c_pp (p,q)
+ else
+ local o = circum_circle_(p,v,h)
+ local q = intersection_lc_(u,p,o,v)
+ return self : c_c_pp (p,q)
+ end
+ end
+ end
+end
+
+
return circle \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_class.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_class.lua
index 3ded691d539..3469a89c418 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_class.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_class.lua
@@ -1,6 +1,6 @@
-- tkz_elements_class.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- from class.lua (Simple Lua Classes from Lua-users wiki)
-- Compatible with Lua 5.1 (not 5.0).
-- http://lua-users.org/wiki/SimpleLuaClasses DavidManura
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_ellipse.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_ellipse.lua
index 7581c19d7a9..9983ae3391e 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_ellipse.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_ellipse.lua
@@ -1,6 +1,6 @@
-- tkz_elements-ellipses.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_circles.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_circles.lua
index 88f9040b7f0..5dfece2eb38 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_circles.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_circles.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_circles.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -37,45 +37,52 @@ function orthogonal_from_ (a,b,p)
return tangent_from_ (a,b,p)
end
-function orthogonal_through_ (a,b,x,y)
- local d,z
- d = 1/point.mod(x-a)
- z = a +(b-a)*d
- return circum_center_ (x,y,z)
+function orthogonal_through_(a, b, x, y)
+ local d = 1 / point.mod(x - a)
+ local z = a + (b - a) * d
+ return circum_center_(x, y, z)
end
-function inversion_ (c,p,pt)
- local ry = point.abs(c-p)
- local d = point.abs(c-pt)
- local r = (ry*ry)/d
- return c+polar_ (r,point.arg(pt-c))
+function inversion_(c, p, pt)
+ local ry = point.abs(c - p)
+ local d = point.abs(c - pt)
+ local r = (ry * ry) / d
+ return c + polar_(r, point.arg(pt - c))
end
-function circles_position_ (c1,r1,c2,r2)
- local d,max,min
- d = point.mod(c1-c2)
- max = r1+r2
- min = math.abs ( r1 - r2)
- if d > max then return "outside"
- elseif math.abs(d - max) < tkz_epsilon then return "outside tangent" -- epsilon
- elseif math.abs(d - min) < tkz_epsilon then return "inside tangent" -- epsilon
- elseif d < min then return "inside"
- else return "intersect"
- end
+function circles_position_(c1, r1, c2, r2)
+ local d = point.mod(c1 - c2)
+ local max = r1 + r2
+ local min = math.abs(r1 - r2)
+
+ if d > max then
+ return "outside"
+ elseif math.abs(d - max) < tkz_epsilon then
+ return "outside tangent"
+ elseif math.abs(d - min) < tkz_epsilon then
+ return "inside tangent"
+ elseif d < min then
+ return "inside"
+ else
+ return "intersect"
+ end
end
+
-function radical_axis_ (c1,p1,c2,p2)
- local ci,cj
- r1 = point.abs(c1-p1)
- r2 = point.abs(c2-p2)
- d = point.abs(c1-c2)
- h = (r1*r1-r2*r2+d*d)/(2*d)
- ck = radical_center_ (c1,p1,c2,p2)
- cj = rotation_ (ck,-math.pi/2,c1)
- ci = symmetry_ (ck,cj)
- return cj,ci
+function radical_axis_(c1, p1, c2, p2)
+ local r1 = point.abs(c1 - p1)
+ local r2 = point.abs(c2 - p2)
+ local d = point.abs(c1 - c2)
+ local h = (r1 * r1 - r2 * r2 + d * d) / (2 * d)
+
+ local ck = radical_center_(c1, p1, c2, p2)
+ local cj = rotation_(ck, -math.pi / 2, c1)
+ local ci = symmetry_(ck, cj)
+
+ return cj, ci
end
+
function radical_center_ (c1,p1,c2,p2)
local d,r1,r2,h
r1 = point.abs(c1-p1)
@@ -96,18 +103,16 @@ return intersection_ll_ (t1,t2,t3,t4)
end
end
-function south_pole_ (c,p)
- local r
- r = point.abs (c-p)
- return c - point (0,r)
- end
+function south_pole_(c, p)
+ return c - point(0, point.abs(c - p))
+end
+
-function north_pole_ (c,p)
- local r
- r = point.abs (c-p)
- return c + point (0,r)
+function north_pole_(c, p)
+ return c + point(0, point.abs(c - p))
end
+
function antipode_ (c,pt)
return 2 * c - pt
end
@@ -126,42 +131,46 @@ function circlepoint_ (c,t,k)
end
function midcircle_(C1,C2)
- local state,r,s,t1,t2,T1,T2,p,a,b,c,d,Cx,Cy,i,j
- state = circles_position_(C1.center,C1.radius,C2.center,C2.radius)
- i = barycenter_ ({C2.center,C1.radius},{C1.center,-C2.radius})
- j = barycenter_ ({C2.center,C1.radius},{C1.center,C2.radius})
- t1,t2 = tangent_from_ (C1.center,C1.through,i)
- T1,T2 = tangent_from_ (C2.center,C2.through,i)
+ local state, r, s, t1, t2, T1, T2, p, a, b, c, d, Cx, Cy, i, j
+ state = circles_position_(C1.center, C1.radius, C2.center, C2.radius)
+ i = barycenter_({C2.center, C1.radius}, {C1.center, -C2.radius})
+ j = barycenter_({C2.center, C1.radius}, {C1.center, C2.radius})
+ t1, t2 = tangent_from_(C1.center, C1.through, i)
+ T1, T2 = tangent_from_(C2.center, C2.through, i)
- if (state == 'outside') or (state == 'outside tangent')then
- p = math.sqrt(point.mod(i-t1)*point.mod(i-T1))
- return circle : radius (i,p)
- elseif state == 'intersect' then
- r,s = intersection (C1,C2)
- return circle : radius (i,point.mod(r-i)) , circle : radius (j,point.mod(r-j))
- elseif (state == 'inside') or (state == 'inside tangent') then
- a,b = intersection_lc_ (C1.center,C2.center,C1.center,C1.through)
- c,d = intersection_lc_ (C1.center,C2.center,C2.center,C2.through)
-
+ if (state == 'outside') or (state == 'outside tangent') then
+ p = math.sqrt(point.mod(i - t1) * point.mod(i - T1))
+ return circle:radius(i, p)
+ elseif state == 'intersect' then
+ r, s = intersection(C1, C2)
+ return circle:radius(i, point.mod(r - i)), circle:radius(j, point.mod(r - j))
+ elseif (state == 'inside') or (state == 'inside tangent') then
+ a, b = intersection_lc_(C1.center, C2.center, C1.center, C1.through)
+ c, d = intersection_lc_(C1.center, C2.center, C2.center, C2.through)
+
+ -- Ensure the smaller radius circle is used first
if C1.radius < C2.radius then
z.u, z.v, z.r, z.s = a, b, c, d
else
z.u, z.v, z.r, z.s = c, d, a, b
end
- if (in_segment_ (z.s,z.v,z.u) == true)
- then
- Cx = circle : diameter (z.r,z.v)
- Cy = circle : diameter (z.u,z.s)
- else
- Cx = circle : diameter (z.s,z.v)
- Cy = circle : diameter (z.u,z.r)
- end
- if (Cx.radius) < (Cy.radius) then
- return Cy : orthogonal_from (j)
- else
- return Cx : orthogonal_from (j)
- end
- end
+ -- Determine circle orientation and return orthogonal from j
+ if in_segment_(z.s, z.v, z.u) then
+ Cx = circle:diameter(z.r, z.v)
+ Cy = circle:diameter(z.u, z.s)
+ else
+ Cx = circle:diameter(z.s, z.v)
+ Cy = circle:diameter(z.u, z.r)
+ end
+
+ -- Return the circle with the smaller radius orthogonal from j
+ if Cx.radius < Cy.radius then
+ return Cy:orthogonal_from(j)
+ else
+ return Cx:orthogonal_from(j)
+ end
+ end
end
+
\ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_intersections.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_intersections.lua
index fe253e9aa23..cb318bb6d00 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_intersections.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_intersections.lua
@@ -1,6 +1,6 @@
-- tkz_elements_intersections.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -72,133 +72,142 @@ function intersection_le (L,E)
end
end
-function intersection_ll_ (a,b,c,d)
- local x1,x2,x3,x4,y1,y2,y3,y4,DN,NX,NY
- x1 = a.re
- y1 = a.im
- x2 = b.re
- y2 = b.im
- x3 = c.re
- y3 = c.im
- x4 = d.re
- y4 = d.im
- DN = (x1-x2)*(y3-y4) - (y1-y2)*(x3-x4)
- if math.abs ( DN ) < tkz_epsilon then
- return false
- else
- NX = (x1*y2-y1*x2)*(x3-x4) - (x1-x2)*(x3*y4-y3*x4)
- NY = (x1*y2-y1*x2)*(y3-y4) - (y1-y2)*(x3*y4-y3*x4)
- return point (NX/DN,NY/DN)
+function intersection_ll_(a, b, c, d)
+ local x1, y1, x2, y2, x3, y3, x4, y4
+ local DN, NX, NY
+
+ x1, y1 = a.re, a.im
+ x2, y2 = b.re, b.im
+ x3, y3 = c.re, c.im
+ x4, y4 = d.re, d.im
+
+ DN = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4)
+
+ if math.abs(DN) < tkz_epsilon then
+ return false
end
+
+ NX = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4)
+ NY = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4)
+
+ return point(NX / DN, NY / DN)
end
-function intersection_lc_ (pa,pb,c,p)
- local zh, dh, arg_ab, test, phi,c1,c2,r
- r = point.mod (c-p)
- zh = projection_ (pa,pb,c)
- dh = point.abs (c - zh)
- arg_ab = point.arg (pa - pb)
- if dh < tkz_epsilon
- then
- return
- c + polar_ (r , math.pi + arg_ab), -- through center
- c + polar_ (r , arg_ab)
- elseif math.abs (r - dh) < tkz_epsilon
- then
- return zh , zh -- tangent
- elseif dh > r
- then return false , false -- no intersection
- else
- phi = math.asin (dh / r)
- -- phi = angle_normalize(phi)
- test = (pa-pb) * point.conj (c-zh)
- if test.im < 0
- then phi = math.pi + phi
- end
- c1 = angle_normalize (arg_ab + phi )
- c2 = angle_normalize (math.pi + arg_ab - phi )
- if c2 < c1 then
- return
- c + polar_ (r, c2) ,
- c + polar_ (r, c1)
- else
- return
- c + polar_ (r, c1) ,
- c + polar_ (r, c2)
- end -- if
- end -- if
+function intersection_lc_(pa, pb, c, p)
+ local zh, dh, arg_ab, phi, c1, c2, r, test
-end -- function
+ r = point.mod(c - p)
+ zh = projection_(pa, pb, c)
+ dh = point.abs(c - zh)
+ arg_ab = point.arg(pa - pb)
+
+ if dh < tkz_epsilon then
+ -- Le centre du cercle est sur la droite
+ return c + polar_(r, math.pi + arg_ab), c + polar_(r, arg_ab)
+ elseif math.abs(r - dh) < tkz_epsilon then
+ -- La droite est tangente au cercle
+ return zh, zh
+ elseif dh > r then
+ -- Aucune intersection
+ return false, false
+ else
+ -- Il y a une intersection, calcul de l'angle
+ phi = math.asin(dh / r)
+ test = (pa - pb) * point.conj(c - zh)
+ if test.im < 0 then
+ phi = math.pi + phi
+ end
+
+ c1 = angle_normalize(arg_ab + phi)
+ c2 = angle_normalize(math.pi + arg_ab - phi)
+
+ -- Retourner les deux points d'intersection
+ if c2 < c1 then
+ return c + polar_(r, c2), c + polar_(r, c1)
+ else
+ return c + polar_(r, c1), c + polar_(r, c2)
+ end
+ end
+end
-function intersection_cc_ (ca,pa,cb,pb )
- local d, cosphi, phi,ra,rb,c1,c2,epsilon
+function intersection_cc_(ca, pa, cb, pb)
+ local d, cosphi, phi, ra, rb, c1, c2, epsilon
+
+ -- Précision pour arrondir les résultats
epsilon = 12
- d = point.abs (ca - cb)
- ra = point.abs (ca - pa)
- rb = point.abs (cb - pb)
- cosphi = tkzround(((ra * ra + d * d - rb * rb)
- /( 2 * ra * d )) , epsilon)
- phi = tkzround (math.acos(cosphi),epsilon)
- if not phi then
- return false , false
- elseif phi == 0 then
- return ca + polar_ (ra, phi + point.arg (cb - ca)) ,
- ca + polar_ (ra, phi + point.arg (cb - ca))
- else
- c1 = angle_normalize ( phi + point.arg(cb - ca))
- c2 = angle_normalize (-phi + point.arg(cb - ca))
- if c1 < c2 then
- return
- ca + polar_(ra, c1),
- ca + polar_(ra, c2)
-else
- return
- ca + polar_(ra, c2),
- ca + polar_(ra, c1)
- end -- if
- end -- if
- end -- function
-
-function intersection ( X , Y )
- local i,z1,z2
- local t = {}
-
- if X.type == 'circle'
- then
- if Y.type == 'circle'
- then
- z1,z2 = intersection_cc ( X , Y )
- table.insert (t , z1 )
- table.insert (t , z2 )
- else -- Y[i] est une droite
- z1,z2 = intersection_lc ( Y , X )
- table.insert (t , z1 )
- table.insert (t , z2 )
- end -- if
- else
- if X.type == 'line' then
- if Y.type == 'circle'
- then
- z1,z2 = intersection_lc ( X , Y )
- table.insert ( t , z1 )
- table.insert ( t , z2 )
- else
- if Y.type == 'line' then
- z1 = intersection_ll ( X , Y )
- table.insert (t , z1 )
- else -- ellipse
- z1,z2 = intersection_le ( X , Y )
- table.insert ( t , z1 )
- table.insert ( t , z2 )
- end
- end -- if
- else
- if X.type == 'ellipse' then
- z1,z2 = intersection_le ( Y,X)
- table.insert ( t , z1 )
- table.insert ( t , z2 )
- end
+ -- Distance entre les centres des cercles
+ d = point.abs(ca - cb)
+ -- Rayons des cercles
+ ra = point.abs(ca - pa)
+ rb = point.abs(cb - pb)
+
+ -- Calcul du cosinus de l'angle phi entre les centres et les points sur les cercles
+ cosphi = tkzround((ra * ra + d * d - rb * rb) / (2 * ra * d), epsilon)
+
+ -- Calcul de l'angle phi
+ phi = tkzround(math.acos(cosphi), epsilon)
+
+ -- Si phi est invalide (par exemple, cosphi > 1 ou < -1), aucune intersection
+ if not phi then
+ return false, false
+ elseif phi == 0 then
+ -- Les cercles sont tangents l'un à l'autre, retourne le même point pour les deux intersections
+ return ca + polar_(ra, point.arg(cb - ca)), ca + polar_(ra, point.arg(cb - ca))
+ else
+ -- Calcul des angles des points d'intersection
+ c1 = angle_normalize(phi + point.arg(cb - ca))
+ c2 = angle_normalize(-phi + point.arg(cb - ca))
+
+ -- Retourner les points d'intersection dans l'ordre croissant des angles
+ if c1 < c2 then
+ return ca + polar_(ra, c1), ca + polar_(ra, c2)
+ else
+ return ca + polar_(ra, c2), ca + polar_(ra, c1)
+ end
+ end
+end
+
+function intersection(X, Y)
+ local t = {} -- Tableau pour stocker les points d'intersection
+
+ -- Cas où X est un cercle
+ if X.type == 'circle' then
+ if Y.type == 'circle' then
+ -- Intersection entre deux cercles
+ local z1, z2 = intersection_cc(X, Y)
+ table.insert(t, z1)
+ table.insert(t, z2)
+ else -- Y est une droite
+ local z1, z2 = intersection_lc(Y, X) -- Intersection entre un cercle et une droite
+ table.insert(t, z1)
+ table.insert(t, z2)
+ end
+
+ -- Cas où X est une droite
+ elseif X.type == 'line' then
+ if Y.type == 'circle' then
+ -- Intersection entre une droite et un cercle
+ local z1, z2 = intersection_lc(X, Y)
+ table.insert(t, z1)
+ table.insert(t, z2)
+ elseif Y.type == 'line' then
+ -- Intersection entre deux droites
+ local z1 = intersection_ll(X, Y)
+ table.insert(t, z1)
+ else -- Y est une ellipse
+ local z1, z2 = intersection_le(X, Y) -- Intersection entre une droite et une ellipse
+ table.insert(t, z1)
+ table.insert(t, z2)
end
- end -- if
- return table.unpack ( t )
-end -- function \ No newline at end of file
+
+ -- Cas où X est une ellipse
+ elseif X.type == 'ellipse' then
+ -- Intersection entre une ellipse et l'autre objet (cercle, droite ou ellipse)
+ local z1, z2 = intersection_le(Y, X)
+ table.insert(t, z1)
+ table.insert(t, z2)
+ end
+
+ -- Retourner les résultats sous forme de valeurs distinctes
+ return table.unpack(t)
+end
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_lines.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_lines.lua
index a5504593c06..dfea7c4d3c6 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_lines.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_lines.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_lines.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -15,16 +15,17 @@
---------------------------------------------------------------------------
-- Lines
---------------------------------------------------------------------------
-function normalize_ (a,b)
- return a+(b-a)/point.mod(b-a)
+function normalize_(a, b)
+ return a + (b - a) / point.mod(b - a)
end
-function ortho_from_ ( p , a , b )
- return p+(b-a)*point(0,1)
+
+function ortho_from_(p, a, b)
+ return p + (b - a) * point(0, 1)
end
function ll_from_ ( p , a , b )
- return p+b-a
+ return p + b - a
end
function slope_ (a,b)
@@ -32,7 +33,7 @@ function slope_ (a,b)
end
function gold_segment_ (a,b)
- return a + (b-a)*tkzinvphi
+ return a + (b - a) * tkzinvphi
end
function online_ (a,b,t)
@@ -52,26 +53,25 @@ function equilateral_tr_ (a,b)
return rotation_ (a,math.pi/3,b)
end
-function isosceles_right_tr (a,b)
- local pt
- pt = rotation_ (a,math.pi/4,b)
- return a + (pt-a) * math.sin(math.pi/4)
+function isosceles_right_tr(a, b)
+ local pt = rotation_(a, math.pi / 4, b)
+ return a + (pt - a) * math.sin(math.pi / 4)
end
-function gold_tr (a,b)
- local pt
- pt = rotation_ (a,math.pi/2,b)
- return a + (pt-a) * tkzinvphi
+
+function gold_tr(a, b)
+ local pt = rotation_(a, math.pi / 2, b)
+ return a + (pt - a) * tkzinvphi
end
+
function euclide_tr (a,b)
return rotation_ (a,math.pi/5,b)
end
function golden_tr (a,b)
- local pt
- pt = rotation_ (a,2*math.pi/5,b)
- return a + (pt-a) * tkzphi
+ local pt = rotation_ (a,2*math.pi/5,b)
+ return a + (pt-a) * tkzphi
end
function div_harmonic_int_(a,b,n)
@@ -97,66 +97,56 @@ function projection ( Dt,pt )
return projection_ ( Dt.pa,Dt.pb,pt )
end
-function projection_ ( pa,pb,pt )
- local v
- local z
- if aligned ( pa,pb,pt ) then
- return pt
- else
- v = pb - pa
- z = ((pt - pa)..v)/(point.norm(v)) -- .. dot product
- return pa + z * v
- end
+function projection_(pa, pb, pt)
+ if aligned(pa, pb, pt) then
+ return pt
+ else
+ local v = pb - pa
+ local z = ((pt - pa) .. v) / point.norm(v) -- .. dot product
+ return pa + z * v
+ end
end
+
function symmetry_axial_(pa,pb,pt)
- local p
- p = projection_ (pa,pb,pt)
+ local p = projection_ (pa,pb,pt)
return symmetry_(p,pt)
end
-function set_symmetry_axial_ (u,v,...)
- local tp = table.pack(...)
- local i
+function set_symmetry_axial_(u, v, ...)
local t = {}
- for i=1,tp.n do
- table.insert( t , symmetry_axial_ (u,v , tp[i]) )
- end
- return table.unpack ( t )
+ for _, value in ipairs({...}) do
+ table.insert(t, symmetry_axial_(u, v, value))
+ end
+ return table.unpack(t)
end
+
function square_ (a,b)
return rotation_ (b,-math.pi/2,a), rotation_ (a,math.pi/2,b)
end
-function in_segment_ (a,b,pt)
- local sc
- sc = point.mod (pt-a) + point.mod (pt-b) - point.mod(b-a)
- if sc <= tkz_epsilon
- then
- return true
+function in_segment_(a, b, pt)
+ return point.mod(pt - a) + point.mod(pt - b) - point.mod(b - a) <= tkz_epsilon
+end
+
+function report_(za, zb, d, pt)
+ local len = point.mod(zb - za)
+ local t = d / len
+ local result = barycenter_({za, 1 - t}, {zb, t})
+
+ if pt then
+ return result + pt - za
else
- return false
+ return result
end
end
-function report_ (za,zb,d,pt)
- local t,len
- len = point.mod(zb-za)
- t = d/len
- if pt == nil
- then
- return barycenter_({za,1-t},{zb,(t)})
-else
- return barycenter_({za,1-t},{zb,(t)}) +pt-za
-end
+function colinear_at_(za, zb, pt, k)
+ if k then
+ return pt + k * (zb - za)
+ else
+ return pt + (zb - za)
+ end
end
-function colinear_at_ (za,zb,pt,k)
- if k == nil
- then
- return pt+zb-za
-else
- return pt+k*(zb-za)
-end
-end
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_maths.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_maths.lua
index c3f7e54ffd3..8b666897686 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_maths.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_maths.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_maths.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -38,27 +38,26 @@ function Cramer22(a1,a2,b1,b2)
return a1*b2-a2*b1
end
-function aligned ( m,a,b )
+function aligned(m, a, b)
local z
- z = (b-a)/(m-b)
- if math.abs(z.im) < tkz_epsilon
- then
- return true
- else
- return false
- end
-end
+ z = (b - a) / (m - b)
+ if math.abs(z.im) < tkz_epsilon then
+ return true
+ else
+ return false
+ end
+end
-function islinear (z1,z2,z3)
- local dp
- dp = (z2-z1) ^ (z3-z1)
- if math.abs(dp) < tkz_epsilon
- then
+function islinear(z1, z2, z3)
+ local dp
+ dp = (z2 - z1) ^ (z3 - z1)
+ if math.abs(dp) < tkz_epsilon then
return true
- else
+ else
return false
end
end
+is_linear = islinear
function isortho (z1,z2,z3)
local dp
@@ -71,6 +70,8 @@ function isortho (z1,z2,z3)
end
end
+is_ortho = isortho
+
function parabola (a,b,c)
local xa,xb,xc,ya,yb,yc
xa = a.re
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_matrices.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_matrices.lua
index c80420090f4..47d3ce99679 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_matrices.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_matrices.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_matrices.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_points.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_points.lua
index e2366e25e3d..9937c0589dd 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_points.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_points.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_points.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -23,30 +23,29 @@ function polar_ (radius, phi)
end
function barycenter_ (...)
-local cp = table.pack(...)
-local i
-local sum = 0
-local weight=0
-for i=1,cp.n do
- sum = sum + cp[i][1]*cp[i][2]
- weight = weight + cp[i][2]
-end
-return sum/weight
+ local cp = table.pack(...)
+ local sum = 0
+ local weight = 0
+ for i = 1, cp.n do
+ sum = sum + cp[i][1] * cp[i][2]
+ weight = weight + cp[i][2]
+ end
+ return sum / weight
end
-function rotation_ (c,a,pt)
- local z = point( math.cos(a) , math.sin(a) )
- return z*(pt-c)+c
+function rotation_ (c, a, pt)
+ local z = point(math.cos(a), math.sin(a))
+ return z * (pt - c) + c
end
-function set_rotation_ (c,angle,...)
+-- Define the set_rotation_ function
+function set_rotation_ (c, angle, ...)
local tp = table.pack(...)
- local i
local t = {}
for i=1,tp.n do
- table.insert( t , rotation_(c , angle , tp[i] ))
+ table.insert(t, rotation_(c, angle, tp[i]))
end
- return table.unpack ( t )
+ return table.unpack(t)
end
function symmetry_(c,pt)
@@ -55,8 +54,7 @@ end
function set_symmetry_ (c,...)
local tp = table.pack(...)
- local i
- local t = {}
+ local t = {}
for i=1,tp.n do
table.insert( t , symmetry_ (c , tp[i]) )
end
@@ -69,8 +67,7 @@ end
function set_homothety_ (c,coeff,...)
local tp = table.pack(...)
- local i
- local t = {}
+ local t = {}
for i=1,tp.n do
table.insert( t , homothety_ (c, coeff , tp[i]) )
end
@@ -83,7 +80,6 @@ end
function set_translation_ (u,...)
local tp = table.pack(...)
- local i
local t = {}
for i=1,tp.n do
table.insert( t , (u + tp[i]) )
@@ -101,7 +97,6 @@ end
function midpoints_ (...)
local arg = table.pack(...)
local n = arg.n
- local i
local t = {}
for i=1, n-1 do
table.insert( t , (arg[i]+arg[i+1])/2 )
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_regular.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_regular.lua
index 0f74d28fe98..01d98ad29a3 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_regular.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_regular.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_regular.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_triangles.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_triangles.lua
index 02d3058a161..b27353f2dc1 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_triangles.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_triangles.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_triangles.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -70,20 +70,32 @@ w = point.abs(b-a)
return barycenter_ ({a,u*u},{b,v*v},{c,w*w})
end
-function nagel_point_ (a,b,c)
- local u,v,w
- u,v,w = extouch_tr_ ( a,b,c )
-return intersection_ll_ (a,u,b,v)
+function nagel_point_ (a, b, c)
+ -- Calculate the excircle tangency points (u, v, w)
+ local u, v, w = extouch_tr_ (a, b, c)
+
+ -- Find the intersection of lines through a and u, and through b and v
+ return intersection_ll_ (a, u, b, v)
end
-function feuerbach_point_ (a,b,c)
- local i,h,e,ma
- i,h = in_circle_ (a,b,c)
- e = euler_center_ (a,b,c)
- ma = (b+c)/2
-return intersection_cc_ (i,h,e,ma)
+
+function feuerbach_point_ (a, b, c)
+ local i, h, e, ma
+
+ -- Calculate the incenter and some related point (likely the orthocenter or another center)
+ i, h = in_circle_ (a, b, c)
+
+ -- Calculate the Euler center (center of the nine-point circle)
+ e = euler_center_ (a, b, c)
+
+ -- Calculate the midpoint of side BC
+ ma = (b + c) / 2
+
+ -- Find the intersection of the circles at (i, h) and (e, ma), which gives the Feuerbach point
+ return intersection_cc_ (i, h, e, ma)
end
+
function spieker_center_ (a,b,c)
return in_center_ (medial_tr_ ( a,b,c))
end
@@ -160,18 +172,28 @@ function ex_circle_ ( a,b,c )
projection_ (b,a,o)
end
-function euler_circle_ (a,b,c)
- local o,ma,mb,mc,H,ha,hb,hc
- o = euler_center_ (a,b,c)
- ma,mb,mc = medial_tr_ ( a,b,c)
- ha,hb,hc = orthic_tr_ ( a,b,c)
- local _,_,H,_ = euler_line_ (a,b,c)
- return
- o,ma,mb,mc,ha,hb,hc,
- midpoint_ ( H,a ),
- midpoint_ ( H,b ),
- midpoint_ ( H,c )
+function euler_circle_ (a, b, c)
+ local o, ma, mb, mc, H, ha, hb, hc
+ -- Compute the Euler center (center of the nine-point circle)
+ o = euler_center_ (a, b, c)
+
+ -- Calculate the medial triangle (midpoints of the sides)
+ ma, mb, mc = medial_tr_ (a, b, c)
+
+ -- Calculate the orthic triangle (feet of the altitudes)
+ ha, hb, hc = orthic_tr_ (a, b, c)
+
+ -- Get the Euler line and midpoint (H) on the Euler line
+ _, _, H, _ = euler_line_ (a, b, c)
+
+ -- Return all relevant geometric elements
+ return
+ o, ma, mb, mc, ha, hb, hc,
+ midpoint_ (H, a), -- Midpoint between H and vertex a
+ midpoint_ (H, b), -- Midpoint between H and vertex b
+ midpoint_ (H, c) -- Midpoint between H and vertex c
end
+
--------------------
-- triangles --
--------------------
@@ -194,15 +216,21 @@ function anti_tr_(a,b,c)
barycenter_ ( {a,1} , {b,1} , {c,-1} )
end
-function incentral_tr_ (a,b,c)
- local i,r,s,t
- i = in_center_ (a , b , c)
- r = intersection_ll_ ( a,i , b,c)
- s = intersection_ll_ ( b,i , a,c)
- t = intersection_ll_ ( c,i , a,b)
-return r,s,t
+function incentral_tr_ (a, b, c)
+ local i, r, s, t
+ -- Compute the incenter (center of the incircle)
+ i = in_center_ (a, b, c)
+
+ -- Calculate the points of tangency where the incircle touches the sides
+ r = intersection_ll_ (a, i, b, c) -- Intersection of lines a-i and b-c
+ s = intersection_ll_ (b, i, a, c) -- Intersection of lines b-i and a-c
+ t = intersection_ll_ (c, i, a, b) -- Intersection of lines c-i and a-b
+
+ -- Return the points of tangency that form the incentral triangle
+ return r, s, t
end
+
function excentral_tr_ (a,b,c)
local r,s,t,ka,kb,kc
ka = point.abs (b-c)
@@ -290,19 +318,22 @@ function area_ (a,b,c)
return point.mod(a - projection_(b,c,a))*point.mod (b - c)/2
end
-function check_equilateral_ (a,b,c)
- local A,B,C
- A = b - c
- B = a - c
- C = a - b
- if (point.abs(A)-point.abs(B) < tkz_epsilon) and (point.abs(B)-point.abs(C) < tkz_epsilon)
- then
- return true
- else
- return false
+function check_equilateral_ (a, b, c)
+ local A, B, C
+ -- Compute the vectors representing the sides of the triangle
+ A = b - c -- Side from b to c
+ B = a - c -- Side from a to c
+ C = a - b -- Side from a to b
+
+ -- Check if all sides have approximately equal lengths
+ if (point.abs(A) - point.abs(B) < tkz_epsilon) and (point.abs(B) - point.abs(C) < tkz_epsilon) then
+ return true -- The triangle is equilateral
+ else
+ return false -- The triangle is not equilateral
end
end
+
function parallelogram_ (a,b,c)
local x = c + a - b
return x
@@ -337,22 +368,34 @@ function in_out_ (a,b,c,pt)
end
end
-function soddy_center_ (a,b,c)
- local i,ha,hb,hc,e,f,g,x,y,z,xp,yp,zp
- i,e,f,g = in_circle_ (a,b,c)
- ha,hb,hc = orthic_tr_ (a,b,c)
- x,xp = intersection_lc_ (a,ha,a,g)
- if (point.mod(ha-x)<point.mod(ha-xp)) then else x,xp=swap(x,xp) end
- y,yp = intersection_lc_ (b,hb,b,e)
- if (point.mod(hb-y)<point.mod(hb-yp)) then else y,yp=swap(y,yp) end
- z,zp = intersection_lc_ (c,hc,c,f)
- if (point.mod(hc-z)<point.mod(hc-zp)) then else z,zp=swap(z,zp) end
- xi,t = intersection_lc_ (xp,e,a,g)
- if in_out_ (a,b,c,xi) then else xi,t = swap(xi,t) end
- yi,t = intersection_lc_ (yp,f,b,e)
- if in_out_ (a,b,c,yi) then else yi,t = swap(yi,t) end
- zi,t = intersection_lc_ (zp,g,c,f)
- if in_out_ (a,b,c,zi) then else zi,t = swap(zi,t) end
- s = circum_center_ (xi,yi,zi)
- return s,xi,yi,zi
+function soddy_center_ (a,b,c)
+ -- Step 1: Compute the incenter and excircle centers
+ local i,e,f,g = in_circle_ (a,b,c)
+ local ha,hb,hc = orthic_tr_ (a,b,c)
+
+ -- Step 2: Find the intersection points for the tangent lines
+ local x,xp = intersection_lc_ (a,ha,a,g)
+ if (point.mod(ha-x) < point.mod(ha-xp)) then else x,xp = swap(x,xp) end
+
+ local y,yp = intersection_lc_ (b,hb,b,e)
+ if (point.mod(hb-y) < point.mod(hb-yp)) then else y,yp = swap(y,yp) end
+
+ local z,zp = intersection_lc_ (c,hc,c,f)
+ if (point.mod(hc-z) < point.mod(hc-zp)) then else z,zp = swap(z,zp) end
+
+ -- Step 3: Calculate the intersections with the opposite triangle sides
+ local xi,t = intersection_lc_ (xp,e,a,g)
+ if in_out_ (a,b,c,xi) then else xi,t = swap(xi,t) end
+
+ local yi,t = intersection_lc_ (yp,f,b,e)
+ if in_out_ (a,b,c,yi) then else yi,t = swap(yi,t) end
+
+ local zi,t = intersection_lc_ (zp,g,c,f)
+ if in_out_ (a,b,c,zi) then else zi,t = swap(zi,t) end
+
+ -- Step 4: Calculate the circumcenter of the triangle formed by the tangent points
+ local s = circum_center_ (xi,yi,zi)
+
+ return s,xi,yi,zi -- Return the Soddy center and the tangent points
end
+
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_line.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_line.lua
index 797365f33f4..2b4b320e19a 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_line.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_line.lua
@@ -1,6 +1,6 @@
-- tkz_elements_lines.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -16,7 +16,7 @@
-- Lines
-- -------------------------------------------------------------------------
line = {}
-function line: new(za, zb)
+function line:new(za, zb)
local type = 'line'
local mid = (za+zb)/2
local north_pa = rotation_ (za,math.pi/2,zb)
@@ -49,122 +49,119 @@ end
-------------------
-- Result -> real
-------------------
-function line: distance (pt)
+function line:distance(pt)
return point.mod(projection(self,pt)-pt)
end
-function length(a,b)
- return point.abs (a-b)
-end
-
-function line: slope ()
+function line:slope()
return slope_(self.pa,self.pb)
end
-------------------
-- Result -> boolean
-------------------
-function line: in_out (pt)
- local sc
- sc = math.abs ((pt-self.pa)^(pt-self.pb))
- if sc <= tkz_epsilon
- then
- return true
- else
- return false
- end
+function line:in_out(pt)
+ return math.abs((pt - self.pa) ^ (pt - self.pb)) <= tkz_epsilon
end
-function line: in_out_segment (pt)
- local sc
- sc = point.mod (pt-self.pa) + point.mod (pt-self.pb) - point.mod(self.pb-self.pa)
- if sc <= tkz_epsilon
- then
- return true
- else
- return false
- end
+function line:in_out_segment(pt)
+ return point.mod(pt - self.pa) + point.mod(pt - self.pb) - point.mod(self.pb - self.pa) <= tkz_epsilon
+end
+
+function line:is_parallel(L)
+ return math.abs(self.slope - L.slope) < tkz_epsilon
+end
+
+function line:is_orthogonal(L)
+ return math.abs(self.slope * L.slope + 1) < tkz_epsilon
+end
+
+function line:is_equidistant(p)
+ return math.abs( (point.mod(self.pa-p)-(point.mod(self.pb-p)))) < tkz_epsilon
end
-------------------
-- Result -> point
-------------------
-function line: barycenter (ka,kb)
+function line:barycenter(ka,kb)
return barycenter_({self.pa,ka},{self.pb,kb})
end
-function line: point (t) -- t=o A t=1 B t = AM / AB
+function line:point(t) -- t=o A t=1 B t = AM / AB
return barycenter_({self.pa,1-t},{self.pb,(t)})
end
-function line: midpoint ()
+function line:midpoint()
return (self.pa+self.pb)/2
end
-function line: harmonic_int (pt)
+function line:harmonic_int(pt)
return div_harmonic_int_(self.pa,self.pb,pt)
end
-function line: harmonic_ext (pt)
+function line:harmonic_ext(pt)
return div_harmonic_ext_(self.pa,self.pb,pt)
end
-function line: harmonic_both (k)
+function line:harmonic_both(k)
return div_harmonic_both_(self.pa,self.pb,k)
end
-function line: gold_ratio()
+function line:gold_ratio()
return self.pa + (self.pb-self.pa)*tkzinvphi
end
-function line: normalize ()
+function line:normalize()
return self.pa+(self.pb-self.pa)/point.mod(self.pb-self.pa)
end
-function line: normalize_inv ()
+function line:normalize_inv()
return normalize_ (self.pb,self.pa)
end
-function line: _east (d)
+function line:_east(d)
local d = d or 1
return self.pb+ d/self.length * (self.pb-self.pa)
end
-function line: _west (d)
+function line:_west(d)
local d = d or 1
return self.pa+ d/self.length * (self.pa-self.pb)
end
-function line: _north_pa (d)
+function line:_north_pa(d)
local d = d or 1
return d/self.length * ( self.north_pa - self.pa ) + self.pa
end
-function line: _south_pa (d)
+function line:_south_pa(d)
local d = d or 1
return d/self.length *( self.south_pa - self.pa ) + self.pa
end
-function line: _south_pb (d)
+function line:_south_pb(d)
local d = d or 1
return d/self.length *( self.south_pb - self.pb ) + self.pb
end
-function line: _north_pb (d)
+function line:_north_pb(d)
local d = d or 1
return d/self.length *( self.north_pb - self.pb ) + self.pb
end
-function line : report (d,pt)
- local t
- t = d/self.length
- if pt == nil
- then
- return barycenter_({self.pa,1-t},{self.pb,(t)})
- else
- return barycenter_({self.pa,1-t},{self.pb,(t)}) +pt-self.pa
- end
+function line:report(d, pt)
+ if not self.length or self.length == 0 then
+ error("self.length must be non-zero")
+ end
+ local t = d / self.length
+ local result = barycenter_({self.pa, 1 - t}, {self.pb, t})
+ if pt then
+ return result + pt - self.pa
+ else
+ return result
+ end
end
-function line : colinear_at (pt,k)
+
+function line:colinear_at (pt,k)
if k == nil
then
return colinear_at_ (self.pa,self.pb,pt,1)
@@ -173,28 +170,28 @@ function line : colinear_at (pt,k)
end
end
-------------- transformations -------------
-function line: translation_pt ( pt )
+function line:translation_pt( pt )
return translation_ ( self.pb-self.pa,pt )
end
-function line: translation_C ( obj )
+function line:translation_C( obj )
local pa,pb,x,y
pa = obj.center
pb = obj.through
- x,y = set_translation_ ( self.pb-self.pa,pa,pb )
+ x,y = set_translation_( self.pb-self.pa,pa,pb )
return circle : new (x,y)
end
-function line: translation_T ( obj )
+function line: translation_T( obj )
local pa,pb,pc,x,y,z
pa = obj.pa
pb = obj.pb
pc = obj.pc
- x,y,z = set_translation_ ( self.pb-self.pa,pa,pb,pc )
+ x,y,z = set_translation_( self.pb-self.pa,pa,pb,pc )
return triangle : new (x,y,z)
end
-function line: translation_L ( obj )
+function line: translation_L( obj )
local pa,pb,x,y
pa = obj.pa
pb = obj.pb
@@ -202,35 +199,42 @@ function line: translation_L ( obj )
return line : new (x,y)
end
-function line: translation (...)
- local obj,nb,t
+function line:translation(...)
+ local obj, nb, t
local tp = table.pack(...)
obj = tp[1]
nb = tp.n
- if nb == 1 then
- if obj.type == "point" then
- return translation_ ( self.pb-self.pa,obj )
- elseif obj.type == "line" then
- return self: translation_L (obj)
- elseif obj.type == "triangle" then
- return self: translation_T (obj)
- else
- return self: translation_C (obj)
- end
- else
+
+ -- If only one object is passed
+ if nb == 1 then
+ if obj.type == "point" then
+ return translation_(self.pb - self.pa, obj) -- Translate point
+ elseif obj.type == "line" then
+ return self:translation_L(obj) -- Translate line
+ elseif obj.type == "triangle" then
+ return self:translation_T(obj) -- Translate triangle
+ elseif obj.type == "circle" then
+ return self:translation_C(obj) -- Translate circle
+ else
+ error("Unsupported object type for translation")
+ end
+ else
+ -- If multiple objects are passed, translate each one
t = {}
- for i=1,tp.n do
- table.insert(t , translation_ ( self.pb-self.pa , tp[i]))
- end
- return table.unpack ( t )
- end
+ for i = 1, nb do
+ -- Translate each object using the translation vector
+ table.insert(t, translation_(self.pb - self.pa, tp[i]))
+ end
+ return table.unpack(t) -- Return the translated objects
+ end
end
+
function line: set_translation ( ...)
return set_translation_ ( self.pb-self.pa,... )
end
-function line: projection (...)
+function line:projection(...)
local obj,nb,t
local tp = table.pack(...)
obj = tp[1]
@@ -246,7 +250,7 @@ function line: projection (...)
end
end
-function line: set_projection (...)
+function line:set_projection(...)
local tp = table.pack(...)
local i
local t = {}
@@ -256,31 +260,31 @@ function line: set_projection (...)
return table.unpack ( t )
end
-function line: symmetry_axial_L ( obj )
+function line:symmetry_axial_L( obj )
local pa,pb,x,y
pa = obj.pa
pb = obj.pb
- x,y = self:set_reflection ( pa,pb )
+ x,y = self:set_reflection(pa, pb)
return line : new (x,y)
end
-function line: symmetry_axial_T ( obj )
+function line:symmetry_axial_T( obj )
local pa,pb,pc,x,y,z
pa = obj.pa
pb = obj.pb
pc = obj.pc
- x,y,z = self:set_reflection ( pa,pb,pc )
+ x,y,z = self:set_reflection (pa, pb, pc)
return triangle : new (x,y,z)
end
-function line: symmetry_axial_C ( obj )
+function line:symmetry_axial_C( obj )
local pa,pb,x,y
pa = obj.center
pb = obj.through
- x,y = self:set_reflection ( pa,pb )
+ x,y = self:set_reflection( pa,pb )
return circle : new (x,y)
end
-function line: reflection (...)
+function line:reflection(...)
local obj,nb,t
local tp = table.pack(...)
obj = tp[1]
@@ -304,195 +308,379 @@ function line: reflection (...)
end
end
-function line: set_reflection (...)
+function line:set_reflection (...)
return set_symmetry_axial_ ( self.pb,self.pa,... )
end
-------------------
-- Result -> line
-------------------
-function line: ll_from ( pt )
+function line:ll_from( pt )
return line : new (pt,pt+self.pb-self.pa)
end
-function line: ortho_from ( pt )
+function line:ortho_from( pt )
return line : new (pt+(self.pb-self.pa)*point(0,-1),pt+(self.pb-self.pa)*point(0,1))
end
-function line: mediator ()
- local m
- m = midpoint_ (self.pa,self.pb)
+function line:mediator()
+ local m = midpoint_ (self.pa,self.pb)
return line : new (rotation_ (m,-math.pi/2,self.pb),rotation_ (m,math.pi/2,self.pb))
end
-function line : perpendicular_bisector ()
- local m
- m = midpoint_ (self.pa,self.pb)
+function line:perpendicular_bisector ()
+ local m = midpoint_ (self.pa,self.pb)
return line : new (rotation_ (m,-math.pi/2,self.pb),rotation_ (m,math.pi/2,self.pb))
end
-------------------
-- Result -> circle
-------------------
-function line: circle (swap)
- if swap == nil then
- swap = false
- end
+function line:circle(swap)
+ swap = swap or false
if swap then
- return circle : new (self.pb,self.pa)
+ return circle:new(self.pb,self.pa)
else
- return circle : new (self.pa,self.pb)
+ return circle:new(self.pa,self.pb)
end
end
-function line: circle_swap ()
+function line:circle_swap()
return circle : new (self.pb,self.pa)
end
-function line : diameter ()
- local c = midpoint_ (self.pa,self.pb)
- return circle : new (c,self.pb)
+function line:diameter()
+ local c = midpoint_(self.pa,self.pb)
+ return circle:new (c,self.pb)
end
-function line : apollonius (k)
+function line:apollonius(k)
local z1,z2,c
- z1 = barycenter_ ({self.pa,1},{self.pb,k})
- z2 = barycenter_ ({self.pa,1},{self.pb,-k})
- c = midpoint_ (z1,z2)
+ z1 = barycenter_({self.pa,1},{self.pb,k})
+ z2 = barycenter_({self.pa,1},{self.pb,-k})
+ c = midpoint_ (z1,z2)
return circle : new (c,z2)
end
+function line:test(x,y)
+
+end
+
+
+-- Circle tangent to a line passing through two points
+-- In general, there are two solutions
+function line:c_l_pp(a, b) -- a and b on the same side
+ -- Initialisation
+ local lab = line:new(a, b) -- Line through a and b
+ local Cab = circle:diameter(a, b) -- Circle with a and b diameters
+ local i = intersection(lab, self) -- Intersection with current line
+
+ -- One point on the line (a)
+ if self : in_out(a) and not self:in_out(b) then
+ local lmed = lab : mediator()
+ local laperp = self:ortho_from(a)
+ local o = intersection(lmed,laperp)
+ return circle:new(o,a),
+ circle:new(o,a)
+ end
+ -- One point on the line (b)
+ if self:in_out(b) and not self:in_out(a) then
+ local lmed = lab:mediator()
+ local laperp = self:ortho_from(b)
+ local o = intersection(lmed,laperp)
+ return circle:new(o,b),
+ circle:new(o,b)
+ end
+ -- Check: if the intersection exists and lies on the segment [a, b].
+ if i and lab:in_out_segment(i) then
+ return nil, nil -- No circle is possible
+ end
+
+ -- If the current line is orthogonal to lab
+ if self:is_orthogonal(lab) then
+ local lmed = lab:mediator()
+ local m = midpoint(a, b)
+ local r = length(m, i)
+ local pt1 = lab:isosceles_s(r)
+ local pt2 = lab:isosceles_s(r, true)
+ return circle:new(pt1, a),
+ circle:new(pt2, a)
+ end
+
+ -- If the two lines are parallel
+ if lab:is_parallel(self) then
+ local mid = midpoint(a, b) -- Midpoint of segment [a, b]
+ local proj = self:projection(mid) -- Mid projection on the running line
+
+ return circle:new(circum_center_(a, b, proj), proj),
+ circle:new(circum_center_(a, b, proj), proj)
+ end
+
+ -- General case
+ local t = Cab:tangent_from(i).pb
+ local x, y = intersection(self, circle:new(i, t))
+ return circle:new(intersection(self:ortho_from(x), lab:mediator()), x),
+ circle:new(intersection(self:ortho_from(y), lab:mediator()), y)
+end
+
+
+-- Circle tangent to two straight lines passing through a given point
+function line:c_ll_p(a, p)
+
+ -- Compute the bisector of the triangle formed by self.pa, self.pb, and a
+ local lbi = bisector(self.pa, self.pb, a)
+
+ if lbi:in_out(p) then
+ -- Orthogonal projection of p onto the bisector
+ local lp = lbi:ortho_from(p)
+
+ -- Intersection of line from p to its projection with self.pa and self.pb
+ local i = intersection_ll_(p, lp.pb, self.pa, self.pb)
+
+ -- Intersection points of the line with the circle defined by (i, p)
+ local t1, t2 = intersection_lc_(self.pa, self.pb, i, p)
+
+ -- Create the main line and find orthogonal projections from t1 and t2
+ local lab = line:new(self.pa, self.pb)
+ local x = lab:ortho_from(t1).pb
+ local y = lab:ortho_from(t2).pb
+
+ -- Return two circles based on the orthogonal projections and points t1, t2
+ return circle:new(intersection_ll_(x, t1, self.pa, p), t1),
+ circle:new(intersection_ll_(y, t2, self.pa, p), t2)
+ else
+ -- Reflection of p across the bisector
+ local q = lbi : reflection (p)
+
+ -- Compute circles from the Wallis construction
+ local c1, c2 = self:c_l_pp(p, q)
+
+ -- Return two circles with centers and points on their circumference
+ return c1,c2
+ end
+end
+
+
+
----------------------
-- Result -> triangle
----------------------
-function line: equilateral (swap)
- if swap == nil then
- swap = false
- end
- if swap then
- return triangle : new (self.pa,self.pb,rotation_ (self.pa,-math.pi/3,self.pb))
+function line:equilateral(swap)
+ swap = swap or false
+ if swap then
+ return triangle:new(self.pa, self.pb, rotation_(self.pa, -math.pi / 3, self.pb))
else
- return triangle : new (self.pa,self.pb,rotation_ (self.pa,math.pi/3,self.pb))
-end
+ return triangle:new(self.pa, self.pb, rotation_(self.pa, math.pi / 3, self.pb))
+ end
end
-function line: isosceles (phi,swap)
- local pta,ptb
- if swap == nil then
- swap = false
- end
+function line:isosceles(phi,swap)
+ local pta,ptb
+ swap = swap or false
if swap then
- pta = rotation_ (self.pa,-phi,self.pb)
- ptb = rotation_ (self.pb,phi,self.pa)
- return triangle : new (self.pa,self.pb, intersection_ll_ (self.pa,pta,self.pb,ptb ))
+ pta = rotation_(self.pa,-phi,self.pb)
+ ptb = rotation_(self.pb,phi,self.pa)
+ return triangle : new (self.pa,self.pb, intersection_ll_(self.pa,pta,self.pb,ptb ))
else
- pta = rotation_ (self.pa,phi,self.pb)
- ptb = rotation_ (self.pb,-phi,self.pa)
+ pta = rotation_(self.pa,phi,self.pb)
+ ptb = rotation_(self.pb,-phi,self.pa)
return triangle : new (self.pa,self.pb, intersection_ll_ (self.pa,pta,self.pb,ptb ))
end
end
+line.isosceles_a = line.isosceles
+
+function line:isosceles_s(a,swap)
+ local c1,c2,pta,ptb,pt1,pt2
+ c1 = circle : radius (self.pa,a)
+ c2 = circle : radius (self.pb,a)
+ pta,ptb = intersection_cc (c1,c2)
+ if get_angle(self.pa,self.pb,pta) < get_angle(self.pa,self.pb,ptb) then
+ pt1=pta pt2=ptb
+ else pt1=ptb pt2=pta end
+ swap = swap or false
+ if swap then
+ return triangle : new (self.pa,self.pb,pt2 )
+ else
+ return triangle : new (self.pa,self.pb,pt1)
+end
+end
-function line: two_angles (alpha,beta)
+function line:two_angles(alpha,beta,swap)
local pta,ptb,pt
- pta = rotation_ (self.pa,alpha,self.pb)
- ptb = rotation_ (self.pb,-beta,self.pa)
- pt = intersection_ll_ (self.pa,pta,self.pb,ptb)
- return triangle : new (self.pa,self.pb,pt)
+ swap = swap or false
+ if swap then
+ pta = rotation_(self.pa,-alpha,self.pb)
+ ptb = rotation_(self.pb,beta,self.pa)
+ else
+ pta = rotation_(self.pa,alpha,self.pb)
+ ptb = rotation_(self.pb,-beta,self.pa)
+ end
+ pt = intersection_ll_(self.pa,pta,self.pb,ptb)
+ return triangle:new(self.pa,self.pb,pt)
end
-function line: school ()
+function line:school(swap)
local pta,ptb,pt
- pta = rotation_ (self.pa,math.pi/6,self.pb)
- ptb = rotation_ (self.pb,-math.pi/3,self.pa)
- pt = intersection_ll_ (self.pa,pta,self.pb,ptb)
- return triangle : new (self.pa,self.pb,pt)
+ swap = swap or false
+ if swap then
+ pta = rotation_(self.pa,-math.pi/6,self.pb)
+ ptb = rotation_(self.pb,math.pi/3,self.pa)
+ else
+ pta = rotation_(self.pa,math.pi/6,self.pb)
+ ptb = rotation_(self.pb,-math.pi/3,self.pa)
+ end
+ pt = intersection_ll_(self.pa,pta,self.pb,ptb)
+ return triangle:new(self.pa,self.pb,pt)
end
-function line: half ()
+function line:half(swap)
local x,pt
x = midpoint_(self.pa,self.pb)
- pt = rotation_ (self.pb,-math.pi/2,x)
- return triangle : new (self.pa,self.pb,pt)
+ swap = swap or false
+ if swap then
+ pt = rotation_(self.pb,math.pi/2,x)
+ else
+ pt = rotation_(self.pb,-math.pi/2,x)
+ end
+ return triangle:new(self.pa,self.pb,pt)
end
-function line: sss (a,b)
+function line:sss(a,b,swap)
local pta,ptb,i,j
+ swap = swap or false
pta = self.pa + point ( a, 0 )
ptb = self.pb + point ( -b , 0)
i,j = intersection_cc_ (self.pa,pta,self.pb,ptb)
- return triangle : new (self.pa,self.pb,i),triangle : new (self.pa,self.pb,j)
+ if swap then
+ return triangle : new (self.pa,self.pb,j)
+ else
+ return triangle : new (self.pa,self.pb,i)
+ end
end
-function line: ssa (a,phi)
- local x,y,pt
- x = rotation_ (self.pb,-phi,self.pa)
- y = self.pa + polar_ ( a , self.slope)
- i,j = intersection_lc_ (self.pb,x,self.pa,y)
- return triangle : new (self.pa,self.pb,i),triangle : new (self.pa,self.pb,j)
+function line:ssa(a, phi,swap)
+ local x, y, i, j
+ swap = swap or false
+ x = rotation_(self.pb, -phi, self.pa)
+ y = self.pa + polar_(a, self.slope)
+ i, j = intersection_lc_(self.pb, x, self.pa, y)
+ if swap then
+ return triangle:new(self.pa, self.pb, j)
+ else
+ return triangle:new(self.pa, self.pb, i)
+ end
end
-function line: sas (a,phi)
- local x,pt
- x = self.pa + polar_ ( a , self.slope)
- pt = rotation_ (self.pa,phi,x)
+function line:sas(a, phi,swap)
+ local x, pt
+ swap = swap or false
+ x = self.pa + polar_(a, self.slope)
+ if swap then
+ pt = rotation_(self.pa, -phi, x)
+ else
+ pt = rotation_(self.pa, phi, x)
+ end
+ return triangle:new(self.pa, self.pb, pt)
+end
+
+function line:asa(alpha,beta,swap)
+ local pta,ptb,pt
+ swap = swap or false
+ if swap then
+ pta = rotation_ (self.pa,-alpha,self.pb)
+ ptb = rotation_ (self.pb,beta,self.pa)
+ else
+ pta = rotation_ (self.pa,alpha,self.pb)
+ ptb = rotation_ (self.pb,-beta,self.pa)
+ end
+ pt = intersection_ll_ (self.pa,pta,self.pb,ptb)
return triangle : new (self.pa,self.pb,pt)
end
---- sacred triangles ----
-function line: gold (swap)
+function line:gold(swap)
local pt
- if swap == nil then
- swap = false
- end
-if swap then
- pt = rotation_ (self.pa,-math.pi/2,self.pb)
- return triangle : new (self.pa,self.pb, self.pa + (pt-self.pa) * tkzinvphi)
-else
- pt = rotation_ (self.pa,math.pi/2,self.pb)
- return triangle : new (self.pa,self.pb, self.pa + (pt-self.pa) * tkzinvphi)
-end
+ swap = swap or false
+ if swap then
+ pt = rotation_ (self.pa,-math.pi/2,self.pb)
+ return triangle : new (self.pa,self.pb, self.pa + (pt-self.pa) * tkzinvphi)
+ else
+ pt = rotation_ (self.pa,math.pi/2,self.pb)
+ return triangle : new (self.pa,self.pb, self.pa + (pt-self.pa) * tkzinvphi)
+ end
end
-function line: sublime ()
+function line:sublime(swap)
local pta,ptb,pt
- pta = rotation_ (self.pa,2*math.pi/5,self.pb)
- ptb = rotation_ (self.pb,-2*math.pi/5,self.pa)
- pt = intersection_ll_ (self.pa,pta,self.pb,ptb)
- return triangle : new (self.pa,self.pb,pt)
+ swap = swap or false
+ if swap then
+ pta = rotation_(self.pa,-2*math.pi/5,self.pb)
+ ptb = rotation_(self.pb,2*math.pi/5,self.pa)
+ pt = intersection_ll_(self.pa,pta,self.pb,ptb)
+ return triangle:new(self.pa,self.pb,pt)
+ else
+ pta = rotation_(self.pa,2*math.pi/5,self.pb)
+ ptb = rotation_(self.pb,-2*math.pi/5,self.pa)
+ pt = intersection_ll_(self.pa,pta,self.pb,ptb)
+ return triangle:new(self.pa,self.pb,pt)
+end
end
line.euclid = line.sublime
-function line: euclide (swap)
- if swap == nil then
- return triangle : new (self.pa,self.pb, rotation_ (self.pa,math.pi/5,self.pb))
- else
- return triangle : new (self.pa,self.pb, rotation_ (self.pa,-math.pi/5,self.pb))
- end
+function line:euclide (swap)
+ swap = swap or false
+ if swap then
+ return triangle : new (self.pa,self.pb, rotation_(self.pa,-math.pi/5,self.pb))
+ else
+ return triangle : new (self.pa,self.pb, rotation_(self.pa,math.pi/5,self.pb))
+ end
end
-function line: divine ()
- local pta,ptb,pt,h
- pta = rotation_ (self.pa,math.pi/5,self.pb)
- ptb = rotation_ (self.pb,-math.pi/5,self.pa)
- pt = intersection_ll_ (self.pa,pta,self.pb,ptb)
- return triangle : new (self.pa,self.pb,pt)
-end
+ function line:divine(swap)
+ local pta, ptb, pt
+ swap = swap or false
+ if swap then
+ pta = rotation_(self.pa, -math.pi / 5, self.pb)
+ ptb = rotation_(self.pb, math.pi / 5, self.pa)
+ pt = intersection_ll_(self.pa, pta, self.pb, ptb)
+ return triangle:new(self.pa, self.pb, pt)
+ else
+ pta = rotation_(self.pa, math.pi / 5, self.pb)
+ ptb = rotation_(self.pb, -math.pi / 5, self.pa)
+ pt = intersection_ll_(self.pa, pta, self.pb, ptb)
+ return triangle:new(self.pa, self.pb, pt)
+ end
+ end
-function line: cheops ()
- local m,n,pt
- m = midpoint_ (self.pa,self.pb)
- n = rotation_ (m,- math.pi/2,self.pa)
- pt = m + (n-m)* tkzsqrtphi
- return triangle : new (self.pa,self.pb,pt)
+function line:cheops(swap)
+ local m, n, pt
+ m = midpoint_(self.pa, self.pb)
+ swap = swap or false
+ if swap then
+ n = rotation_(m, math.pi / 2, self.pa)
+ pt = m + (n - m) * tkzsqrtphi
+else
+ n = rotation_(m, -math.pi / 2, self.pa)
+ pt = m + (n - m) * tkzsqrtphi
+ end
+ return triangle:new(self.pa, self.pb, pt)
end
-function line: egyptian ()
- local n,pt
- n = rotation_ (self.pb,- math.pi/2,self.pa)
- pt = self.pb + (n-self.pb)/point.mod(n-self.pb)*self.length* 0.75
- return triangle : new (self.pa,self.pb,pt)
+
+function line:egyptian(swap)
+ local n, pt
+ swap = swap or false
+ if swap then
+ n = rotation_(self.pb, math.pi / 2, self.pa)
+ pt = self.pb + (n - self.pb) / point.mod(n - self.pb) * self.length * 0.75
+ else
+ n = rotation_(self.pb, -math.pi / 2, self.pa)
+ pt = self.pb + (n - self.pb) / point.mod(n - self.pb) * self.length * 0.75
+ end
+ return triangle:new(self.pa, self.pb, pt)
end
+
line.pythagoras = line.egyptian
line.isis = line.egyptian
line.golden = line.sublime
@@ -501,12 +689,14 @@ line.golden_gnomon = line.divine
------------------------------
-- Result -> square
------------------------------
-function line: square (swap)
- if swap == nil
+function line:square (swap)
+ swap = swap or false
+ if swap
then
- return square : side (self.pa,self.pb)
- else
return square : side (self.pa,self.pb,indirect)
+ else
+ return square : side (self.pa,self.pb)
+
end
end
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_main.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_main.lua
index 142f00c8ed0..e5843dae1a0 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_main.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_main.lua
@@ -1,6 +1,6 @@
-- tkz_elements-main.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -12,20 +12,7 @@
-- This work has the LPPL maintenance status “maintained”.
-- The Current Maintainer of this work is Alain Matthes.
- z = {}
- C = {}
- E = {}
- L = {}
- P = {}
- M = {}
- Q = {}
- R = {}
- RP = {}
- S = {}
- T = {}
- V = {}
-
- -- loads module
+-- loads module
require "tkz_elements_point.lua"
require "tkz_elements_line.lua"
require "tkz_elements_circle.lua"
@@ -48,4 +35,20 @@ require "tkz_elements_functions_circles.lua"
require "tkz_elements_functions_triangles.lua"
require "tkz_elements_functions_regular.lua"
require "tkz_elements_functions_matrices.lua"
-require "tkz_elements_matrices.lua" \ No newline at end of file
+require "tkz_elements_matrices.lua"
+
+function init_elements ()
+ scale=1
+ z={}
+ C={}
+ E={}
+ L={}
+ M={}
+ P={}
+ Q={}
+ R={}
+ RP={}
+ S={}
+ T={}
+ V={}
+end \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_matrices.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_matrices.lua
index 035e8a0a33e..07048af557f 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_matrices.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_matrices.lua
@@ -1,6 +1,6 @@
-- tkz_elements_matrices.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -44,26 +44,37 @@ function matrix.__sub(m1,m2)
return add_matrix(m1,k_mul_matrix(-1, m2))
end
-function matrix.__pow( m, num )
- if num =='T' then
- return transposeMatrix(m)
- else
- if num == 0 then
- return matrix:new( #m,"I" )
- end
- if num < 0 then
- local i; m,i = inv_matrix ( m )
- if not m then return m, i end
- num = -num
- end
- local mt = m
- for i = 2,num do
- mt = mul_matrix(mt,m)
- end
- return mt
-end
+function matrix.__pow(m, num)
+ -- Handle transpose (when num is 'T')
+ if num == 'T' then
+ return transposeMatrix(m)
+ end
+
+ -- Handle exponentiation by 0 (returns the identity matrix)
+ if num == 0 then
+ return matrix:new(#m, "I") -- Identity matrix
+ end
+
+ -- Handle negative exponents (invert the matrix)
+ if num < 0 then
+ local inv_matrix, err = inv_matrix(m)
+ if not inv_matrix then
+ return nil, err -- Return nil and the error if matrix is non-invertible
+ end
+ num = -num -- Make exponent positive for easier handling
+ m = inv_matrix -- Now use the inverted matrix
+ end
+
+ -- Now handle the positive exponentiation
+ local result = m
+ for i = 2, num do
+ result = mul_matrix(result, m) -- Repeated multiplication
+ end
+
+ return result
end
+
function matrix.__tostring( A )
local mt = (A.type=='matrix' and A.set or A)
local k = {}
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_misc.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_misc.lua
index daa3e21872b..5f01756b5a4 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_misc.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_misc.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_maths.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -14,19 +14,31 @@
-- ----------------------------------------------------------------
--
-- ----------------------------------------------------------------
-function get_points (obj)
-if obj.type == 'line' then return obj.pa,obj.pb
- elseif
- obj.type == 'triangle' then return obj.pa,obj.pb,obj.pc
- elseif
- obj.type == 'circle' then return obj.center,obj.through
- elseif
- obj.type == 'ellipse' then return obj.pc,obj.pa,obj.pb
- elseif
- obj.type == 'square' or obj.type == 'rectangle' or obj.type == 'quadrilateral' or obj.type == 'parallelogram'
- then return obj.pa,obj.pb,obj.pc,obj.pd
-end
-end
+function get_points(obj)
+ -- Map of object types to their respective point keys
+ local point_map = {
+ line = {"pa", "pb"}, -- Line has two points
+ triangle = {"pa", "pb", "pc"}, -- Triangle has three points
+ circle = {"center", "through"}, -- Circle has center and a point through its circumference
+ ellipse = {"pc", "pa", "pb"}, -- Ellipse has three key points
+ square = {"pa", "pb", "pc", "pd"}, -- Square has four vertices
+ rectangle = {"pa", "pb", "pc", "pd"}, -- Rectangle has four vertices
+ quadrilateral = {"pa", "pb", "pc", "pd"}, -- Quadrilateral has four vertices
+ parallelogram = {"pa", "pb", "pc", "pd"} -- Parallelogram has four vertices
+ }
+
+ -- Check if the object's type is recognized
+ if point_map[obj.type] then
+ local points = {}
+ -- Iterate over the keys for the given type and extract the corresponding values
+ for _, key in ipairs(point_map[obj.type]) do
+ table.insert(points, obj[key])
+ end
+ -- Return all points as multiple return values
+ return table.unpack(points)
+ end
+ end
+
function set_lua_to_tex (t)
for k,v in pairs(t) do
@@ -35,29 +47,49 @@ function set_lua_to_tex (t)
end
function bisector (a,b,c)
- local i
- i = in_center_ (a,b,c)
+ local i = in_center_ (a,b,c)
return line : new (a,intersection_ll_ (a,i,b,c))
end
-function altitude (a,b,c)
- local o,p
- o = ortho_center_ (a,b,c)
- p = projection_ (b,c,a)
- return line : new (a,p)
+function altitude(a, b, c)
+ local o, p
+ -- Get the orthocenter (which is the point of concurrency of the altitudes)
+ o = ortho_center_(a, b, c)
+
+ -- Get the perpendicular projection of point 'a' onto the line defined by 'b' and 'c'
+ p = projection_(b, c, a)
+
+ -- Return the altitude, which is the line from point 'a' to the point 'p'
+ return line:new(a, p)
end
-function bisector_ext(a,b,c) -- n =1 swap n=2 2 swap
- local i,p
- i = in_center_ (a,b,c)
- p = rotation_ (a,math.pi/2,i)
- return line : new (a,p)
+
+function bisector_ext(a, b, c) -- n=1 swap n=2 swap 2
+ local i, p
+ -- Get the incenter of the triangle
+ i = in_center_(a, b, c)
+
+ -- Rotate the incenter by 90 degrees around point 'a' to compute the external bisector
+ p = rotation_(a, math.pi / 2, i)
+
+ -- Return the external bisector as the line passing through points 'a' and 'p'
+ return line:new(a, p)
end
+
function equilateral (a,b)
return equilateral_tr_ (a,b)
end
function midpoint (a,b)
return (a+b)/2
+end
+
+function midpoints (...)
+ return midpoints_(...)
+end
+
+
+function length(a,b)
+ return point.abs (a-b)
end \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_parallelogram.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_parallelogram.lua
index d471976d066..8cd02bf73ee 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_parallelogram.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_parallelogram.lua
@@ -1,6 +1,6 @@
-- tkz_elements_parallelogram.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_point.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_point.lua
index e29779ef791..be28002328c 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_point.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_point.lua
@@ -1,6 +1,6 @@
-- tkz_elements_point.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -252,28 +252,28 @@ function point: west(d)
-- return symmetry_ (self ,pt)
-- end
-function point: symmetry (...)
- local obj,nb,t
- local tp = table.pack(...)
- obj = tp[1]
- nb = tp.n
- if nb == 1 then
- if obj.type == "point" then
- return symmetry_ (self,obj)
- elseif obj.type == "line" then
- return line: new (set_symmetry_ (self,obj.pa,obj.pb))
- elseif obj.type == "circle" then
- return circle: new (set_symmetry_ (self,obj.center,obj.through))
- else
- return triangle: new (set_symmetry (self,obj.pa,obj.pb,obj.pc))
- end
- else
- local t = {}
- for i=1,tp.n do
- table.insert( t , symmetry_ (self , tp[i]) )
- end
- return table.unpack ( t )
- end
+function point:symmetry(...)
+ local tp = table.pack(...) -- Pack arguments into a table
+ local nb = tp.n -- Number of arguments
+ local obj = tp[1] -- The first object in the arguments
+
+ if nb == 1 then -- If there's only one argument
+ if obj.type == "point" then
+ return symmetry_(self, obj) -- Apply symmetry on the point
+ elseif obj.type == "line" then
+ return line:new(set_symmetry_(self, obj.pa, obj.pb)) -- Create a new line
+ elseif obj.type == "circle" then
+ return circle:new(set_symmetry_(self, obj.center, obj.through)) -- Create a new circle
+ else
+ return triangle:new(set_symmetry(self, obj.pa, obj.pb, obj.pc)) -- Create a new triangle
+ end
+ else -- If there are multiple arguments
+ local results = {} -- Initialize a table to store results
+ for i = 1, nb do
+ table.insert(results, symmetry_(self, tp[i])) -- Apply symmetry on each object
+ end
+ return table.unpack(results) -- Return the results as separate values
+ end
end
function point: set_symmetry (...)
@@ -288,56 +288,56 @@ function point:set_rotation (angle,...)
return set_rotation_ ( self,angle,... )
end
-function point : rotation (angle,...)
- local obj,nb,t
- local tp = table.pack(...)
- obj = tp[1]
- nb = tp.n
- if nb == 1 then
- if obj.type == "point" then
- return rotation_ (self,angle,obj )
- elseif obj.type == "line" then
- return line : new (set_rotation_ (self, angle,obj.pa,obj.pb ))
- elseif obj.type == "triangle" then
- return triangle: new (set_rotation_ (self, angle,obj.pa,obj.pb,obj.pc))
- elseif obj.type == "circle" then
-return circle : new (set_rotation_ (self,angle,obj.center,obj.through))
- else
-return square: new (set_rotation_(self,angle,obj.pa,obj.pb,obj.pc,obj.pd))
- end
- else
- t = {}
- for i=1,tp.n do
- table.insert( t , rotation_ ( self,angle,tp[i]))
- end
- return table.unpack ( t )
- end
+function point:rotation(angle, ...)
+ local tp = table.pack(...) -- Pack arguments into a table
+ local nb = tp.n -- Number of arguments
+ local obj = tp[1] -- The first object in the arguments
+
+ if nb == 1 then -- If there's only one argument
+ if obj.type == "point" then
+ return rotation_(self, angle, obj) -- Rotate the point
+ elseif obj.type == "line" then
+ return line:new(set_rotation_(self, angle, obj.pa, obj.pb)) -- Rotate the line
+ elseif obj.type == "triangle" then
+ return triangle:new(set_rotation_(self, angle, obj.pa, obj.pb, obj.pc)) -- Rotate the triangle
+ elseif obj.type == "circle" then
+ return circle:new(set_rotation_(self, angle, obj.center, obj.through)) -- Rotate the circle
+ else -- For other shapes like square
+ return square:new(set_rotation_(self, angle, obj.pa, obj.pb, obj.pc, obj.pd)) -- Rotate the square
+ end
+ else -- If there are multiple arguments
+ local results = {} -- Initialize a table to store results
+ for i = 1, nb do
+ table.insert(results, rotation_(self, angle, tp[i])) -- Rotate each object
+ end
+ return table.unpack(results) -- Return the results as separate values
+ end
end
-function point : homothety (coeff,...)
-local obj,nb,t
-local tp = table.pack(...)
-obj = tp[1]
-nb = tp.n
- if nb == 1 then
- if obj.type == "point" then
- return homothety_ (self,coeff,obj )
- elseif obj.type == "line" then
- return line : new (set_homothety_ (self, coeff,obj.pa,obj.pb ))
- elseif obj.type == "triangle" then
- return triangle: new (set_homothety_(self,coeff,obj.pa,obj.pb,obj.pc))
- elseif obj.type == "circle" then
- return circle: new (set_homothety_(self,coeff,obj.center,obj.through))
- else
-return square: new (set_homothety_(self,coeff,obj.pa,obj.pb))
- end
- else
- t = {}
- for i=1,tp.n do
- table.insert( t , homothety_ ( self,coeff,tp[i]))
- end
- return table.unpack ( t )
- end
+function point:homothety(coeff, ...)
+ local tp = table.pack(...) -- Pack arguments into a table
+ local nb = tp.n -- Number of arguments
+ local obj = tp[1] -- The first object in the arguments
+ local t = {} -- Initialize a table to store results
+
+ if nb == 1 then -- If there's only one argument
+ if obj.type == "point" then
+ return homothety_(self, coeff, obj) -- Apply homothety to the point
+ elseif obj.type == "line" then
+ return line:new(set_homothety_(self, coeff, obj.pa, obj.pb)) -- Apply homothety to the line
+ elseif obj.type == "triangle" then
+ return triangle:new(set_homothety_(self, coeff, obj.pa, obj.pb, obj.pc)) -- Apply homothety to the triangle
+ elseif obj.type == "circle" then
+ return circle:new(set_homothety_(self, coeff, obj.center, obj.through)) -- Apply homothety to the circle
+ else -- For other shapes like square
+ return square:new(set_homothety_(self, coeff, obj.pa, obj.pb, obj.pc, obj.pd)) -- Apply homothety to the square
+ end
+ else -- If there are multiple arguments
+ for i = 1, nb do
+ table.insert(t, homothety_(self, coeff, tp[i])) -- Apply homothety to each object
+ end
+ return table.unpack(t) -- Return the results as separate values
+ end
end
function point: normalize()
@@ -345,16 +345,19 @@ function point: normalize()
return point(self.re/d,self.im/d)
end
-function point: orthogonal(d)
+function point:orthogonal(d)
local m
- if d==nil then
- return point(-self.im,self.re)
-else
- m = point.mod(self)
- return point(-self.im*d/m,self.re*d/m)
-end
+ if d == nil then
+ -- If no scaling factor d is provided, return the point rotated 90 degrees counterclockwise
+ return point(-self.im, self.re)
+ else
+ -- If a scaling factor d is provided, scale the orthogonal point
+ m = point.mod(self) -- Get the modulus (magnitude) of the current point
+ return point(-self.im * d / m, self.re * d / m) -- Return the scaled orthogonal point
+ end
end
+
function point : at (z)
return point(self.re+z.re,self.im+z.im)
end
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_quadrilateral.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_quadrilateral.lua
index 6625b9d7898..0cc6ca30a6e 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_quadrilateral.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_quadrilateral.lua
@@ -1,6 +1,6 @@
-- tkz_elements_quadrilateral.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_rectangle.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_rectangle.lua
index fdc30845018..5247d48e1b7 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_rectangle.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_rectangle.lua
@@ -1,6 +1,6 @@
-- tkz_elements-rectangle.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -24,34 +24,34 @@ function rectangle: new (za, zb,zc,zd)
end
if math.abs(point.abs (zc-za)-point.abs (zd-zb)) < tkz_epsilon then else error ("it's not a rectangle")
end
- local type = 'rectangle'
- local center = midpoint_ (za,zc)
- local exradius = point.abs (center-za)
- local ab = line : new (za,zb)
- local bc = line : new (zb,zc)
- local cd = line : new (zc,zd)
- local da = line : new (zd,za)
- local ac = line : new (za,zc)
- local bd = line : new (zb,zd)
- local length = point.mod (zb-za)
- local width = point.mod (zd-za)
- local diagonal = point.abs (zc-za)
- local o = { pa = za,
- pb = zb,
- pc = zc,
- pd = zd,
- ab = ab,
- ac = ac,
- bc = bc,
- da = da,
- cd = cd,
- bd = bd,
- diagonal = diagonal,
- exradius = exradius,
- center = center,
- length = length,
- width = width,
- type = type }
+ local type = 'rectangle'
+ local center = midpoint_ (za,zc)
+ local circumradius = point.abs (center-za)
+ local ab = line : new (za,zb)
+ local bc = line : new (zb,zc)
+ local cd = line : new (zc,zd)
+ local da = line : new (zd,za)
+ local ac = line : new (za,zc)
+ local bd = line : new (zb,zd)
+ local length = point.mod (zb-za)
+ local width = point.mod (zd-za)
+ local diagonal = point.abs (zc-za)
+ local o = { pa = za,
+ pb = zb,
+ pc = zc,
+ pd = zd,
+ ab = ab,
+ ac = ac,
+ bc = bc,
+ da = da,
+ cd = cd,
+ bd = bd,
+ diagonal = diagonal,
+ circumradius = circumradius,
+ center = center,
+ length = length,
+ width = width,
+ type = type }
setmetatable(o, self)
self.__index = self
return o
@@ -69,7 +69,7 @@ function rectangle : gold (za,zb,swap)
local zc,zd
local a = point.arg (zb-za)
local d = point.abs(zb-za)/tkzphi
- if swap == nil then swap = false end
+ swap = swap or false
if swap then
zc = zb : south (d/scale)
zc = rotation_ (zb,a,zc)
@@ -87,7 +87,7 @@ end
function rectangle : diagonal (za,zc,swap)
local zb,zd
- if swap == nil then swap = false end
+ swap = swap or false
if swap then
zd = point (zc.re,za.im)
zb = point (za.re,zc.im)
@@ -102,7 +102,7 @@ end
function rectangle : side (za,zb,d,swap)
local a,zc,zd
a = point.arg (zb-za)
- if swap == nil then swap = false end
+ swap = swap or false
if swap then
zc = zb : south (d/scale)
zc = rotation_ (zb,a,zc)
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_regular.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_regular.lua
index a4527c779b9..65c197d3152 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_regular.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_regular.lua
@@ -1,6 +1,6 @@
-- tkz_elements_regular.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -11,32 +11,36 @@
-- version 2005/12/01 or later.
-- This work has the LPPL maintenance status “maintained”.
-- The Current Maintainer of this work is Alain Matthes.
-
+-- za = center zb a vertex
regular_polygon = {}
function regular_polygon: new (za, zb ,nb)
local type = 'regular_polygon'
- local table = regular_ (za , zb , nb)
+ local table = regular_ (za , zb , nb)
local center = za
local through = zb
local angle = 2 * math.pi/nb
- local exradius = point.abs (zb-za)
+ local circumradius = point.abs (zb-za)
local circle = circle : new (za,zb)
- local inradius = exradius * math.cos(math.pi/nb)
- local side = exradius * math.sin(math.pi/nb)
+ local inradius = circumradius * math.cos(math.pi/nb)
+ local side = circumradius * math.sin(math.pi/nb)
local next = table[2]
local first = table[1]
local proj = projection_ (first,next,za)
+ local perimeter = nb * side
+ local area = (perimeter * inradius)/2
local o = { type = type,
center = center,
through = through,
- exradius = exradius,
+ circumradius= circumradius,
inradius = inradius,
table = table,
circle = circle,
nb = nb,
angle = angle,
side = side,
- proj = proj }
+ proj = proj,
+ perimeter = perimeter,
+ area = area}
setmetatable(o, self)
self.__index = self
return o
@@ -52,7 +56,7 @@ end
-----------------------
function regular_polygon : incircle ()
local next,first
- next = self.table[2]
+ next = self.table[2]
first = self.table[1]
return circle : new ( self.center , projection_ (first,next,self.center) )
end
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_square.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_square.lua
index 93860b825c9..d968feacdec 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_square.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_square.lua
@@ -1,6 +1,6 @@
-- tkz_elements-square.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -27,38 +27,42 @@ function square: new (za, zb,zc,zd)
if math.abs(point.abs (zb-za) - point.abs (zd-za)) < tkz_epsilon then else error ("it's not a square (side)")
end
- local type = 'square'
- local side = point.abs ( zb - za )
- local pc = rotation_ (zb,-math.pi/2,za)
- local pd = rotation_ (za,math.pi/2,zb)
- local center = midpoint_ (za,zc)
- local exradius = point.abs (center-za)
- local inradius = exradius * math.cos(math.pi/4)
- local diagonal = math.sqrt(2) * side
- local proj = projection_ (za,zb,center)
- local ab = line : new (za,zb)
- local bc = line : new (zb,zc)
- local cd = line : new (zc,zd)
- local da = line : new (zd,za)
- local bd = line : new (zb,zd)
- local ac = line : new (za,zc)
- local o = { pa = za,
- pb = zb,
- pc = zc,
- pd = zd,
- side = side,
- center = center,
- exradius = exradius,
- inradius = inradius,
- diagonal = diagonal,
- proj = proj,
- ab = ab,
- ac = ac,
- bc = bc,
- da = da,
- cd = cd,
- bd = bd,
- type = type }
+ local type = 'square'
+ local side = point.abs ( zb - za )
+ local pc = rotation_ (zb,-math.pi/2,za)
+ local pd = rotation_ (za,math.pi/2,zb)
+ local center = midpoint_ (za,zc)
+ local circumradius = point.abs (center-za)
+ local inradius = circumradius * math.cos(math.pi/4)
+ local diagonal = math.sqrt(2) * side
+ local proj = projection_ (za,zb,center)
+ local ab = line : new (za,zb)
+ local bc = line : new (zb,zc)
+ local cd = line : new (zc,zd)
+ local da = line : new (zd,za)
+ local bd = line : new (zb,zd)
+ local ac = line : new (za,zc)
+ local area = side * side
+ local perimeter = 4 * side
+ local o = { pa = za,
+ pb = zb,
+ pc = zc,
+ pd = zd,
+ side = side,
+ center = center,
+ circumradius = circumradius,
+ inradius = inradius,
+ diagonal = diagonal,
+ proj = proj,
+ ab = ab,
+ ac = ac,
+ bc = bc,
+ da = da,
+ cd = cd,
+ bd = bd,
+ type = type,
+ area = area,
+ perimeter = perimeter }
setmetatable(o, self)
self.__index = self
return o
@@ -71,16 +75,20 @@ function square : rotation (zi,za)
return square : new (za,zb,zc,zd)
end
-function square : side (za,zb,swap)
- if swap == nil
- then
- local zc = rotation_ (zb,-math.pi/2,za)
- local zd = rotation_ (za,math.pi/2,zb)
- return square : new (za,zb,zc,zd)
+function square:side(za, zb, swap)
+ swap = swap or false
+ if swap then
+ -- Rotate zb clockwise around za to get zc
+ local zc = rotation_(zb, math.pi / 2, za)
+ -- Rotate za counterclockwise around zb to get zd
+ local zd = rotation_(za, -math.pi / 2, zb)
+ return square:new(za, zb, zc, zd)
else
- local zc = rotation_ (zb,math.pi/2,za)
- local zd = rotation_ (za,-math.pi/2,zb)
- return square : new (za,zb,zc,zd)
+ -- Rotate zb counterclockwise around za to get zc
+ local zc = rotation_(zb, -math.pi / 2, za)
+ -- Rotate za clockwise around zb to get zd
+ local zd = rotation_(za, math.pi / 2, zb)
+ return square:new(za, zb, zc, zd)
end
end
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_triangle.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_triangle.lua
index 84b10273dad..52677400339 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_triangle.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_triangle.lua
@@ -1,6 +1,6 @@
-- tkz_elements_triangles.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -30,6 +30,10 @@ function triangle: new (za, zb ,zc)
local ab = line : new (za,zb)
local ca = line : new (zc,za)
local bc = line : new (zb,zc)
+ local semiperimeter = (a+b+c)/2
+ local area = math.sqrt((semiperimeter)*(semiperimeter-a)*(semiperimeter-b)*(semiperimeter-c))
+ local inradius = area / semiperimeter
+ local circumradius = (a*b*c)/(4*inradius*semiperimeter)
local o = { pa = za,
pb = zb,
pc = zc,
@@ -48,7 +52,11 @@ function triangle: new (za, zb ,zc)
bc = bc,
alpha = alpha,
beta = beta,
- gamma = gamma}
+ gamma = gamma,
+ semiperimeter = semiperimeter,
+ area = area,
+ inradius = inradius,
+ circumradius = circumradius}
setmetatable(o, self)
self.__index = self
return o
@@ -110,24 +118,25 @@ function triangle: euler_points ()
return midpoint_ ( H,self.pa ), midpoint_ ( H,self.pb ), midpoint_ ( H,self.pc )
end
-function triangle: nine_points ()
- local H,ma,mb,mc,H,ha,hb,hc
- ma,mb,mc = medial_tr_ ( self.pa , self.pb , self.pc)
- ha,hb,hc = orthic_tr_ ( self.pa , self.pb , self.pc)
- H = ortho_center_ ( self.pa , self.pb , self.pc )
- return
- ma,mb,mc,
- ha,hb,hc,
- midpoint_ ( H,self.pa ),
- midpoint_ ( H,self.pb ),
- midpoint_ ( H,self.pc )
+function triangle:nine_points()
+ local ma, mb, mc, ha, hb, hc, H
+ -- Calculate the medial triangle
+ ma, mb, mc = medial_tr_(self.pa, self.pb, self.pc)
+ -- Calculate the orthic triangle
+ ha, hb, hc = orthic_tr_(self.pa, self.pb, self.pc)
+ -- Calculate the orthocenter
+ H = ortho_center_(self.pa, self.pb, self.pc)
+
+ -- Return the points of the nine-point circle
+ return ma, mb, mc, ha, hb, hc,
+ midpoint_(H, self.pa), midpoint_(H, self.pb), midpoint_(H, self.pc)
end
+
function triangle : point (t)
- local t1,t2,p
- p = (self.a + self.b + self.c)
- t1 = self.a / p
- t2 = (self.a + self.b) / p
+ local p = (self.a + self.b + self.c)
+ local t1 = self.a / p
+ local t2 = (self.a + self.b) / p
if t<= t1 then
return self.ab : point (t/t1)
elseif t <= t2 then
@@ -163,11 +172,10 @@ function triangle: euler_line ()
end
function triangle: symmedian_line (n)
- local a,b,c,l
- a = self.pa
- b = self.pb
- c = self.pc
- l = self : lemoine_point ()
+ local a = self.pa
+ local b = self.pb
+ local c = self.pc
+ local l = self : lemoine_point ()
if n==1 then
return line : new (b,intersection_ll_ (b,l,a,c))
elseif n==2 then
@@ -184,23 +192,22 @@ function triangle: altitude (n)
c = self.pc
o = ortho_center_ (a,b,c)
if n==1 then
- p = projection_ (a,c,b)
+ p = projection_ (a,c,b)
return line : new (b,p)
elseif n==2 then
p = projection_ (a,b,c)
return line : new (c,p)
else
- p = projection_ (b,c,a)
+ p = projection_ (b,c,a)
return line : new (a,p)
end
end
function triangle: bisector (n)
- local a,b,c,i
- a = self.pa
- b = self.pb
- c = self.pc
- i = in_center_ (a,b,c)
+ local a = self.pa
+ local b = self.pb
+ local c = self.pc
+ local i = in_center_ (a,b,c)
if n==1 then
return line : new (b,intersection_ll_ (b,i,a,c))
elseif n==2 then
@@ -211,10 +218,9 @@ function triangle: bisector (n)
end
function triangle: bisector_ext(n) -- n =1 swap n=2 2 swap
-local a,b,c
- a = self.pa
- b = self.pb
- c = self.pc
+ local a = self.pa
+ local b = self.pb
+ local c = self.pc
if n==1 then -- ac
return line : new (b,bisector_ext_ (b,c,a))
elseif n==2 then -- ab
@@ -254,21 +260,21 @@ end
-----------------------
--- Result -> circles --
-----------------------
-function triangle: euler_circle ()
+function triangle:euler_circle()
return circle : new (euler_center_ ( self.pa , self.pb , self.pc),midpoint_( self.pb , self.pc))
end
-function triangle: circum_circle()
+function triangle:circum_circle()
return circle : new (circum_circle_ ( self.pa , self.pb , self.pc), self.pa )
end
-function triangle: in_circle ()
+function triangle:in_circle()
local o
o = in_center_ ( self.pa , self.pb , self.pc)
return circle : new (o, projection_ (self.pb , self.pc,o) )
end
-function triangle: ex_circle (n) -- n =1 swap n=2 2 swap
+function triangle:ex_circle (n) -- n =1 swap n=2 2 swap
local a,b,c,o
a = self.pa
b = self.pb
@@ -505,5 +511,42 @@ function triangle: check_acutangle()
end
end
+-- Circle tangent to two straight lines passing through a given point
+function triangle:c_ll_p(p)
+
+ -- Compute the bisector of the triangle
+ local lbi = bisector(self.pa, self.pb,self.pc)
+
+ if lbi:in_out(p) then
+ -- Orthogonal projection of p onto the bisector
+ local lp = lbi:ortho_from(p)
+
+ -- Intersection of line from p to its projection with self.pa and self.pb
+ local i = intersection_ll_(p, lp.pb, self.pa, self.pb)
+
+ -- Intersection points of the line with the circle defined by (i, p)
+ local t1, t2 = intersection_lc_(self.pa, self.pb, i, p)
+
+ -- Create the main line and find orthogonal projections from t1 and t2
+ local lab = line:new(self.pa, self.pb)
+ local x = lab:ortho_from(t1).pb
+ local y = lab:ortho_from(t2).pb
+
+ -- Return two circles based on the orthogonal projections and points t1, t2
+ return circle:new(intersection_ll_(x, t1, self.pa, p), t1),
+ circle:new(intersection_ll_(y, t2, self.pa, p), t2)
+ else
+ local lab = line:new(self.pa, self.pb)
+ -- Reflection of p across the bisector
+ local q = lbi : reflection (p)
+
+ -- Compute circles from the Wallis construction
+ local c1, c2 = lab:c_l_pp(p, q)
+
+ -- Return two circles with centers and points on their circumference
+ return c1,c2
+ end
+end
+
return triangle \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_vector.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_vector.lua
index 0dcbbfde61d..7e9f0ff94fe 100644
--- a/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_vector.lua
+++ b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_vector.lua
@@ -1,6 +1,6 @@
-- tkz_elements_vectors.lua
--- date 2024/07/16
--- version 2.30c
+-- date 2025/01/06
+-- version 3.10
-- Copyright 2024 Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
diff --git a/Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty b/Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty
index 274adac46cc..be1337a9709 100644
--- a/Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty
+++ b/Master/texmf-dist/tex/latex/tkz-grapheur/tkz-grapheur.sty
@@ -2,9 +2,11 @@
% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tkz-grapheur}[2024/09/08 0.1.8 Des outils en TikZ pour travailler comme avec un grapheur]
+\ProvidesPackage{tkz-grapheur}[2024/10/29 0.2.0 Des outils en TikZ pour travailler comme avec un grapheur]
%====HISTORIQUE
+% v 0.2.0 Petites commandes en lien avec pgfplots + modification mineure splinecubique (calculs Alt)
+% v 0.1.9 Correction d'un bug avec la détermination des unités...
% v 0.1.8 Ajout des courbes d'ECC/FCC + Toile récurrence + Points discontinuité + Histobinom
% v 0.1.7 Méthodes intégrales avec des splines
% v 0.1.6 Asymptote verticale + Monte Carlo + Méthode intégrales (rectangles, etc)
@@ -28,6 +30,10 @@
\DeclareOption{nonxintreg}{\@loadxintregfalse}%
\DeclareOption{noxintreg}{\@loadxintregfalse}%
+\newif\if@loadpgfplots \@loadpgfplotstrue
+\DeclareOption{nonpgfplots}{\@loadpgfplotsfalse}%
+\DeclareOption{nopgfplots}{\@loadpgfplotsfalse}%
+
\newif\if@lngenglish \@lngenglishfalse
\DeclareOption{english}{\@lngenglishtrue}%
@@ -37,6 +43,10 @@
%====BASE
\RequirePackage{tikz}
\RequirePackage{ifthen}
+\if@loadpgfplots
+ \RequirePackage{pgfplots}
+ \usepgfplotslibrary{fillbetween}
+\fi
\usetikzlibrary{calc,intersections,patterns,patterns.meta,bbox}
\RequirePackage{simplekv}
\RequirePackage{xintexpr}
@@ -100,10 +110,26 @@
%====PATCH NUM
\@ifundefined{ArrondirNum}%
{%
- \NewDocumentCommand\ArrondirNum{ O{2} m}{\num{\xintfloateval{round(#2,#1)}}\relax}%
+ \NewDocumentCommand\ArrondirNum{ s O{2} m}{%
+ \IfBooleanTF{#1}%
+ {%
+ \xintfloateval{round(#3,#2)}\relax%
+ }%
+ {%
+ \num{\xintfloateval{round(#3,#2)}}\relax%
+ }%
+ }%
}%
{%
- \RenewDocumentCommand\ArrondirNum{ O{2} m}{\num{\xintfloateval{round(#2,#1)}}\relax}%
+ \RenewDocumentCommand\ArrondirNum{ s O{2} m}{%
+ \IfBooleanTF{#1}%
+ {%
+ \xintfloateval{round(#3,#2)}\relax%
+ }%
+ {%
+ \num{\xintfloateval{round(#3,#2)}}\relax%
+ }%
+ }%
}%
%====STYLES DE BASE
@@ -321,9 +347,9 @@
}
\newcommand\TikZUnites{
- \coordinate (@0) at (0,0) ;
- \coordinate (@X) at (1,0) ;
- \coordinate (@Y) at (0,1) ;
+ \coordinate (@0) at (\pflOx,\pflOy) ;
+ \coordinate (@X) at ({\pflOx+1},\pflOy) ;
+ \coordinate (@Y) at ({\pflOx},{\pflOy+1}) ;
\DistanceEntreNoeuds[\pflxunit]{@0}{@X}
\DistanceEntreNoeuds[\pflyunit]{@0}{@Y}
}
@@ -868,17 +894,18 @@
Nom=spline,%
Couleur=black,%
Coeffs=3,%
- Trace=false
+ Trace=false,%
+ Alt=false
}
-\NewDocumentCommand\GenererSpline{ m m O{\monspline} }{%
+\NewDocumentCommand\GenererSpline{ s m m O{\monspline} }{%
%1=liste
\setsepchar[.]{§./}%
- \readlist*\SPLlistepoints{#1}%
+ \readlist*\SPLlistepoints{#2}%
%les données
\def\tmpsplinenumdeb{1}
\def\tmpsplinenumfin{\SPLlistepointslen}%
- \pflextractcoeff{#2}{\tmpsplinenumdeb}%
+ \pflextractcoeff{#3}{\tmpsplinenumdeb}%
%nb de calculs
\def\SPLnbsplines{\inteval{\tmpsplinenumfin-1}}%
%extraction des coordonnées
@@ -888,10 +915,16 @@
\itemtomacro\SPLlistepoints[\tmpsplinenumdeb,1]\xb%
\itemtomacro\SPLlistepoints[\tmpsplinenumdeb,2]\yb%
\itemtomacro\SPLlistepoints[\tmpsplinenumdeb,3]\fprimeb%
- \xdef#3{(\xa,\ya) ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFA}).. (\xb,\yb)}%
+ \IfBooleanTF{#1}%
+ {%
+ \xdef#4{(\xa,\ya) ..controls +({(\xb-\xa)/\COEFFA},{\fprimea*(\xb-\xa)/\COEFFA}) and +({-(\xb-\xa)/\COEFFA},{-\fprimeb*(\xb-\xa)/\COEFFA}).. (\xb,\yb)}%
+ }%
+ {%
+ \xdef#4{(\xa,\ya) ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFA}).. (\xb,\yb)}%
+ }%
\foreach \i in {\tmpsplinenumdeb,...,\SPLnbsplines}{%
%extraction des coeffs de compensation
- \pflextractcoeff{#2}{\i}%
+ \pflextractcoeff{#3}{\i}%
\def\j{\inteval{\i+1}}%
\itemtomacro\SPLlistepoints[\i,1]\xa%
\itemtomacro\SPLlistepoints[\i,2]\ya%
@@ -899,7 +932,13 @@
\itemtomacro\SPLlistepoints[\j,1]\xb%
\itemtomacro\SPLlistepoints[\j,2]\yb%
\itemtomacro\SPLlistepoints[\j,3]\fprimeb%
- \xdef#3{#3 ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFB}).. (\xb,\yb)}%
+ \IfBooleanTF{#1}%
+ {%
+ \xdef#4{#4 ..controls +({(\xb-\xa)/\COEFFA},{\fprimea*(\xb-\xa)/\COEFFA}) and +({-(\xb-\xa)/\COEFFA},{-\fprimeb*(\xb-\xa)/\COEFFA}).. (\xb,\yb)}%
+ }%
+ {%
+ \xdef#4{#4 ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFB}).. (\xb,\yb)}%
+ }%
}%
}
@@ -907,7 +946,13 @@
%1=liste
\restoreKV[GraphiqueTikzSpline]%
\setKV[GraphiqueTikzSpline]{#1}%
- \GenererSpline{#2}{\pflsplinecoeffs}[#3]%
+ \ifboolKV[GraphiqueTikzSpline]{Alt}%
+ {%
+ \GenererSpline*{#2}{\pflsplinecoeffs}[#3]%
+ }%
+ {%
+ \GenererSpline{#2}{\pflsplinecoeffs}[#3]%
+ }%
\begin{scope}
\ifboolKV[GraphiqueTikzSpline]{Trace}%
{%
@@ -939,7 +984,13 @@
%1=liste
\restoreKV[GraphiqueTikzSpline]%
\setKV[GraphiqueTikzSpline]{#1}%
- \GenererSpline{#2}{\pflsplinecoeffs}[#3]%
+ \ifboolKV[GraphiqueTikzSpline]{Alt}%
+ {%
+ \GenererSpline*{#2}{\pflsplinecoeffs}[#3]%
+ }%
+ {%
+ \GenererSpline{#2}{\pflsplinecoeffs}[#3]%
+ }%
\begin{scope}
\draw[pflcourbe,{\useKV[GraphiqueTikzSpline]{Couleur}}] #3 ;
\end{scope}
@@ -2214,7 +2265,7 @@
}
\setKVdefault[GraphiqueTikzNode]{%
Couleur=black,%
- Debut={\normalfont\normalsize},%
+ Police={\normalfont\normalsize},%
Position={}
}
\NewDocumentCommand\PlacerTexte{ O{} m m }{%
@@ -3017,7 +3068,8 @@
Name=spline,%
Color=black,%
Coeffs=3,%
- Trace=false
+ Trace=false,%
+ Alt=false
}
\NewDocumentCommand\GenerateSpline{ m m O{\myspline} }{%
@@ -4585,4 +4637,98 @@
{}%
}
+%====pgfplots small macros
+\NewDocumentCommand\findintersectionspgf{ O{ITSC} m m D<>{\myt} }{%
+ %1 = name of node name
+ %2 = 1st object
+ %3 = 2d object
+ %4 = macro storing number of intersections
+ \path[name intersections={of=#2 and #3,name=#1,total=\t}] \pgfextra{\xdef#4{\t}} ;
+}
+
+\NewDocumentCommand\gextractxnodepgf{ m O{\myxcoord} }{%
+ \path \pgfextra{\pgfplotspointgetcoordinates{#1}\pgfkeysgetvalue{/data point/x}{\tmpxgetvalue}\xdef#2{\tmpxgetvalue}} ;
+}
+
+\NewDocumentCommand\gextractynodepgf{ m O{\myycoord} }{%
+ \path \pgfextra{\pgfplotspointgetcoordinates{#1}\pgfkeysgetvalue{/data point/y}{\tmpygetvalue}\xdef#2{\tmpygetvalue}} ;
+}
+
+\NewDocumentCommand\gextractxynodepgf{ m O{\myxcoord} O{\myycoord} }{%
+ \path \pgfextra{\pgfplotspointgetcoordinates{#1}\pgfkeysgetvalue{/data point/x}{\tmpxgetvalue}\xdef#2{\tmpxgetvalue}\pgfkeysgetvalue{/data point/y}{\tmpygetvalue}\xdef#3{\tmpygetvalue}} ;
+}
+
+\NewDocumentCommand\fillbetweencurvespgf{ O{gray,fill opacity=0.25} m m D<>{} }{%
+ \addplot[#1] fill between [of=#2 and #3,soft clip={#4}];
+}
+
+\NewDocumentCommand\gensplinecubicpgf{ s m m O{\monspline} }{%
+ %1=liste
+ \setsepchar[.]{§./}%
+ \readlist*\SPLlistepoints{#2}%
+ %les données
+ \def\tmpsplinenumdeb{1}
+ \def\tmpsplinenumfin{\SPLlistepointslen}%
+ \pflextractcoeff{#3}{\tmpsplinenumdeb}%
+ %nb de calculs
+ \def\SPLnbsplines{\inteval{\tmpsplinenumfin-1}}%
+ %extraction des coordonnées
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,1]\xa%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,2]\ya%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,3]\fprimea%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,1]\xb%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,2]\yb%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,3]\fprimeb%
+ \IfBooleanTF{#1}%
+ {%
+ \xdef\tmpcontrolsxa{\xintfloateval{(\xa)+(\xb-\xa)/\COEFFA}}%
+ \xdef\tmpcontrolsya{\xintfloateval{(\ya)+\fprimea*(\xb-\xa)/\COEFFA}}%
+ \xdef\tmpcontrolsxb{\xintfloateval{(\xb)-(\xb-\xa)/\COEFFA}}%
+ \xdef\tmpcontrolsyb{\xintfloateval{(\yb)-\fprimeb*(\xb-\xa)/\COEFFA}}%
+ }%
+ {%
+ \xdef\tmpcontrolsxa{\xintfloateval{(\xa)+cos(atand(\fprimea))*(\xb-\xa)/\COEFFA}}%
+ \xdef\tmpcontrolsya{\xintfloateval{(\ya)+sin(atand(\fprimea))*(\xb-\xa)/\COEFFA}}%
+ \xdef\tmpcontrolsxb{\xintfloateval{(\xb)-cos(atand(\fprimeb))*(\xb-\xa)/\COEFFA}}%
+ \xdef\tmpcontrolsyb{\xintfloateval{(\yb)-sin(atand(\fprimeb))*(\xb-\xa)/\COEFFA}}%
+ }%
+ \xdef#4{(\xa,\ya) ..controls (\tmpcontrolsxa,\tmpcontrolsya) and (\tmpcontrolsxb,\tmpcontrolsyb).. (\xb,\yb)}%
+ \foreach \i in {\tmpsplinenumdeb,...,\SPLnbsplines}{%
+ %extraction des coeffs de compensation
+ \pflextractcoeff{#3}{\i}%
+ \def\j{\inteval{\i+1}}%
+ \itemtomacro\SPLlistepoints[\i,1]\xa%
+ \itemtomacro\SPLlistepoints[\i,2]\ya%
+ \itemtomacro\SPLlistepoints[\i,3]\fprimea%
+ \itemtomacro\SPLlistepoints[\j,1]\xb%
+ \itemtomacro\SPLlistepoints[\j,2]\yb%
+ \itemtomacro\SPLlistepoints[\j,3]\fprimeb%
+ \IfBooleanTF{#1}%
+ {%
+ \xdef\tmpcontrolsxa{\xintfloateval{(\xa)+(\xb-\xa)/\COEFFA}}%
+ \xdef\tmpcontrolsya{\xintfloateval{(\ya)+\fprimea*(\xb-\xa)/\COEFFA\fprimea*(\xb-\xa)/\COEFFA}}%
+ \xdef\tmpcontrolsxb{\xintfloateval{(\xb)-(\xb-\xa)/\COEFFA}}%
+ \xdef\tmpcontrolsyb{\xintfloateval{(\yb)-\fprimeb*(\xb-\xa)/\COEFFA}}%
+ }%
+ {%
+ \xdef\tmpcontrolsxa{\xintfloateval{(\xa)+cos(atand(\fprimea))*(\xb-\xa)/\COEFFA}}%
+ \xdef\tmpcontrolsya{\xintfloateval{(\ya)+sin(atand(\fprimea))*(\xb-\xa)/\COEFFA}}%
+ \xdef\tmpcontrolsxb{\xintfloateval{(\xb)-cos(atand(\fprimeb))*(\xb-\xa)/\COEFFA}}%
+ \xdef\tmpcontrolsyb{\xintfloateval{(\yb)-sin(atand(\fprimeb))*(\xb-\xa)/\COEFFA}}%
+ }%
+ \xdef#4{#4 ..controls (\tmpcontrolsxa,\tmpcontrolsya) and (\tmpcontrolsxb,\tmpcontrolsyb).. (\xb,\yb)}%
+ }%
+}
+
+\NewDocumentCommand\addplotspline{ s O{} D<>{3} m O{\monspline} }{%
+ \IfBooleanTF{#1}%
+ {%
+ \gensplinecubicpgf*{#4}{#3}[#5]%
+ }%
+ {%
+ \gensplinecubicpgf{#4}{#3}[#5]%
+ }%
+ \draw[#2] #5 ;
+}
+
\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/to-be-determined/to-be-determined.sty b/Master/texmf-dist/tex/latex/to-be-determined/to-be-determined.sty
index 02051d05e48..ae33c1ad9b3 100644
--- a/Master/texmf-dist/tex/latex/to-be-determined/to-be-determined.sty
+++ b/Master/texmf-dist/tex/latex/to-be-determined/to-be-determined.sty
@@ -7,7 +7,7 @@
%% to-be-determined.dtx (with options: `package')
%% (The MIT License)
%%
-%% Copyright (c) 2021-2022 Yegor Bugayenko
+%% Copyright (c) 2021-2024 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
@@ -31,7 +31,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{to-be-determined}
-[31.10.20220 0.3.0 Highlighting places requiring future work]
+[2024/10/11 0.3.2 Highlighting places requiring future work]
@@ -50,15 +50,18 @@
\ProcessOptionsX\relax
\RequirePackage{xcolor}
+
+\RequirePackage{mathtools}
+
\RequirePackage{soul}
\makeatletter\newcommand\tbd[1]{{%
\iftbd@off\else%
\sethlcolor{yellow}%
\iftbd@hide%
- \hl{TBD}%
+ \text{\hl{TBD}}%
\else%
- \hl{#1}%
+ \text{\hl{#1}}%
\fi%
\fi%
}}\makeatother
diff --git a/Master/texmf-dist/tex/latex/tools/.tex b/Master/texmf-dist/tex/latex/tools/.tex
index ff0d77e6fc4..a6b7144e01d 100644
--- a/Master/texmf-dist/tex/latex/tools/.tex
+++ b/Master/texmf-dist/tex/latex/tools/.tex
@@ -1,5 +1,5 @@
%%
-%% This is file `.tex',
+%% This is file `rename-to-empty-base.tex',
%% generated with the docstrip utility.
%%
%% The original source files were:
@@ -38,4 +38,4 @@
\message{File ignored}
\endinput
%%
-%% End of file `.tex'.
+%% End of file `rename-to-empty-base.tex'.
diff --git a/Master/texmf-dist/tex/latex/tools/array.sty b/Master/texmf-dist/tex/latex/tools/array.sty
index 2f24b0ef837..a190c9f7714 100644
--- a/Master/texmf-dist/tex/latex/tools/array.sty
+++ b/Master/texmf-dist/tex/latex/tools/array.sty
@@ -47,7 +47,7 @@
\NeedsTeXFormat{LaTeX2e}[2024/06/01]
\ProvidesPackage{array}
- [2024/06/14 v2.6d Tabular extension package (FMi)]
+ [2024/10/17 v2.6g Tabular extension package (FMi)]
%%
\ExplSyntaxOn
@@ -96,15 +96,16 @@
\def\save@decl{\toks\count@ \expandafter{\@nextchar}}
\def\insert@column{%
\UseTaggingSocket{tbl/cell/begin}%
- \the@toks \the \@tempcnta
- \ignorespaces \@sharp \textonly@unskip
+ \@protected@firstofone { \the@toks \the \@tempcnta \ignorespaces }
+ \@sharp \textonly@unskip
\the@toks \the \count@ \relax
\UseTaggingSocket{tbl/cell/end}%
}
\protected\def\textonly@unskip{\ifhmode\unskip\fi}
+\protected\long\def\@protected@firstofone#1{#1}
\def\insert@pcolumn{%
\UseTaggingSocket{tbl/pcell/begin}%
- \the@toks \the \@tempcnta
+ \the@toks \the \@tempcnta \relax
\ignorespaces \@sharp \unskip
\the@toks \the \count@ \relax
\UseTaggingSocket{tbl/pcell/end}%
@@ -432,6 +433,23 @@
<{\d@llarend\end{lrbox}%
\let\hss\hfil
\makebox[#2][#1]{\unhbox\ar@cellbox}}}
+\ExplSyntaxOn
+\def\@cline#1-#2\@nil{
+ \omit
+ \@multicnt#1
+ \advance\@multispan\m@ne
+ \ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi
+ \@multicnt#2
+ \advance\@multicnt-#1
+ \advance\@multispan\@ne
+ \UseTaggingSocket{tbl/leaders/begin}
+ \leaders\hrule\@height\arrayrulewidth\hfill
+ \UseTaggingSocket{tbl/leaders/end}
+ \tbl_gdecr_row_count:
+ \cr
+ \noalign{\vskip-\arrayrulewidth}
+}
+\ExplSyntaxOff
\ExplSyntaxOff
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/tools/longtable.sty b/Master/texmf-dist/tex/latex/tools/longtable.sty
index aa19b28096a..0bc422eb465 100644
--- a/Master/texmf-dist/tex/latex/tools/longtable.sty
+++ b/Master/texmf-dist/tex/latex/tools/longtable.sty
@@ -43,7 +43,7 @@
\DeclareCurrentRelease{}{2020-02-07}
\ProvidesPackage{longtable}
- [2024-04-26 v4.20 Multi-page Table package (DPC)]
+ [2024-10-27 v4.22 Multi-page Table package (DPC)]
\def\LT@err{\PackageError{longtable}}
\def\LT@warn{\PackageWarning{longtable}}
\def\LT@final@warn{%
@@ -65,6 +65,7 @@
\newcount\LTchunksize \LTchunksize=200
\let\c@LTchunksize\LTchunksize
\newdimen\LTcapwidth \LTcapwidth=4in
+\providecommand\LTcaptype{table}
\newbox\LT@head
\newbox\LT@firsthead
\newbox\LT@foot
@@ -73,6 +74,7 @@
\newcount\LT@cols
\newcount\LT@rows
\newcounter{LT@tables}
+\providecommand\theHLT@tables{\theLT@tables}
\newcounter{LT@chunks}[LT@tables]
\ifx\c@table\undefined
\newcounter{table}
@@ -105,8 +107,14 @@
\ExplSyntaxOn
\def\LT@array[#1]#2{%
\UseTaggingSocket{tbl/init}
- \@kernel@refstepcounter{table}\stepcounter{LT@tables}
- \tl_gset:Ne \@currentHref {table.\cs_if_exist_use:N\theHtable}
+ \tl_if_empty:eTF { \LTcaptype }
+ {
+ \tl_gset:Ne \@currentHref {LT@tables.\theHLT@tables}
+ }
+ {
+ \@kernel@refstepcounter{\LTcaptype}\stepcounter{LT@tables}
+ \tl_gset:Ne \@currentHref {\LTcaptype.\cs_if_exist_use:c {theH\LTcaptype}}
+ }
\tbl_gzero_row_count:
\UseTaggingSocket{tbl/longtable/init}
\if l#1%
@@ -220,7 +228,13 @@
\dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@
\maxdepth\z@
\fi
- \MakeLinkTarget{table}
+ \tl_if_empty:eTF{\LTcaptype}
+ {
+ \MakeLinkTarget{LT@tables}
+ }
+ {
+ \MakeLinkTarget{\LTcaptype}
+ }
\ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak
\UseTaggingSocket{tbl/longtable/head}
\output{\LT@output}}
@@ -245,14 +259,20 @@
\ifx\LT@save@row\LT@@save@row
\else
\LT@warn{Column~ widths~ have~ changed\MessageBreak
- in~ table~ \thetable}%
+ in~
+ \tl_if_empty:eTF{\LTcaptype}
+ {longtable~ \theLT@tables}
+ {\LTcaptype\c_space_tl\use:c{the\LTcaptype}}
+ }
\LT@final@warn
\fi
\endgraf\penalty -\LT@end@pen
\ifvoid\LT@foot\else
\global\advance\vsize\ht\LT@foot
\global\advance\@colroom\ht\LT@foot
- \dimen@\pagegoal\advance\dimen@\ht\LT@foot\pagegoal\dimen@
+ \ifdim\pagegoal<\maxdimen
+ \dimen@\pagegoal\advance\dimen@\ht\LT@foot\pagegoal\dimen@
+ \fi
\fi
\endgroup
\global\@mparbottom\z@
@@ -431,17 +451,22 @@
\tbl_gdecr_row_count:
\penalty\@M}
\@gtempa}
-\ExplSyntaxOff
\def\LT@caption{%
\noalign\bgroup
\@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n}
-\def\LT@c@ption#1[#2]#3{%
- \LT@makecaption#1\fnum@table{#3}%
- \def\@tempa{#2}%
- \ifx\@tempa\@empty\else
- {\let\\\space
- \addcontentsline{\ext@table}{table}{\protect\numberline{\thetable}{#2}}}%
- \fi}
+\def\LT@c@ption#1[#2]#3{
+ \tl_if_empty:eTF{\LTcaptype}
+ {\LT@makecaption\@gobble{}{#3}}
+ {\LT@makecaption#1{\csname fnum@\LTcaptype\endcsname}{#3}
+ \def\@tempa{#2}
+ \ifx\@tempa\@empty\else
+ {\let\\\space
+ \addcontentsline
+ {\@nameuse{ext@\LTcaptype}}
+ {\LTcaptype}
+ {\protect\numberline{\@nameuse{the\LTcaptype}}{#2}}}
+ \fi}}
+\ExplSyntaxOff
\def\LT@capti@n{%
\@ifstar
{\egroup\LT@c@ption\@gobble[]}%
@@ -506,6 +531,13 @@
{
\crcr
\noalign{
+ \int_step_inline:nn
+ { \LT@rows }
+ {
+ \seq_gput_left:ce
+ {g__tbl_\cs_to_str:N #1 _rows_seq }
+ { \int_eval:n {\g__tbl_row_int - ##1 } }
+ }
\tbl_gdecr_row_count: % undo the increment
\int_gset:Nn \LT@rows { \LTchunksize }
}
diff --git a/Master/texmf-dist/tex/latex/tools/multicol.sty b/Master/texmf-dist/tex/latex/tools/multicol.sty
index ebe9ea853a8..89a3fd13905 100644
--- a/Master/texmf-dist/tex/latex/tools/multicol.sty
+++ b/Master/texmf-dist/tex/latex/tools/multicol.sty
@@ -35,7 +35,7 @@
%% given in the file `manifest.txt'.
%%
%% Package `multicol' to use with LaTeX2e
-%% Copyright 1989-2023 Frank Mittelbach
+%% Copyright 1989-2024 Frank Mittelbach
%%
%% In addition to the terms of LPPL any distributed version
%% (unchanged or modified) of multicol has to keep the statement
@@ -92,7 +92,7 @@
%% not for the payment of a license fee per se (which might or might
%% not follow from this evaluation).
%%
-%% The license fee, if any, can be payed either to the LaTeX fund
+%% The license fee, if any, can be paid either to the LaTeX fund
%% (see ltx3info.txt in the base LaTeX distribution) or to the author of
%% the program who can be contacted at
%%
@@ -105,7 +105,8 @@
\DeclareCurrentRelease{}{2021-11-15}
\ProvidesPackage{multicol}
- [2024/05/23 v1.9h multicolumn formatting (FMi)]
+ [2024/09/14 v1.9i multicolumn formatting (FMi)]
+
\DeclareOption{twocolumn}
{\PackageWarning{multicol}{May not work
with the twocolumn option}}
@@ -872,9 +873,17 @@
\emergencystretch 4pt
\multiply\emergencystretch#1}
+\ExplSyntaxOn
+\str_if_exist:cF { l__socket_tagsupport/float/end_plug_str }
+ {
+ \NewSocket{tagsupport/float/end}{0}
+ \NewSocket{tagsupport/float/hmode/end}{0}
+ }
+\ExplSyntaxOff
\def\set@floatcmds{%
\let\@dblfloat\@dbflt
\def\end@dblfloat{\@endfloatbox
+ \UseTaggingSocket{float/end}%
\@largefloatcheck
\outer@nobreak
\ifnum\@floatpenalty<\z@
@@ -882,6 +891,7 @@
\fi
\ifnum\@floatpenalty=-\@Mii
\@Esphack
+ \UseTaggingSocket{float/hmode/end}%
\fi}}
\def\kept@topmark{{}{}}
\let\kept@firstmark\@empty
diff --git a/Master/texmf-dist/tex/latex/tools/thb.sty b/Master/texmf-dist/tex/latex/tools/thb.sty
index 7d78943b773..c7c01d6d8f8 100644
--- a/Master/texmf-dist/tex/latex/tools/thb.sty
+++ b/Master/texmf-dist/tex/latex/tools/thb.sty
@@ -36,7 +36,7 @@
%% given in the file `manifest.txt'.
%%
%%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
%%
%% Package `theorem' to use with LaTeX2e
%% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.
diff --git a/Master/texmf-dist/tex/latex/tools/thc.sty b/Master/texmf-dist/tex/latex/tools/thc.sty
index 7819ee2f44f..77b0c88c478 100644
--- a/Master/texmf-dist/tex/latex/tools/thc.sty
+++ b/Master/texmf-dist/tex/latex/tools/thc.sty
@@ -36,7 +36,7 @@
%% given in the file `manifest.txt'.
%%
%%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
%%
%% Package `theorem' to use with LaTeX2e
%% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.
diff --git a/Master/texmf-dist/tex/latex/tools/thcb.sty b/Master/texmf-dist/tex/latex/tools/thcb.sty
index d05f9459ae2..e02fb365d80 100644
--- a/Master/texmf-dist/tex/latex/tools/thcb.sty
+++ b/Master/texmf-dist/tex/latex/tools/thcb.sty
@@ -36,7 +36,7 @@
%% given in the file `manifest.txt'.
%%
%%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
%%
%% Package `theorem' to use with LaTeX2e
%% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.
diff --git a/Master/texmf-dist/tex/latex/tools/theorem.sty b/Master/texmf-dist/tex/latex/tools/theorem.sty
index 565fe7344b0..474a44eacca 100644
--- a/Master/texmf-dist/tex/latex/tools/theorem.sty
+++ b/Master/texmf-dist/tex/latex/tools/theorem.sty
@@ -36,7 +36,7 @@
%% given in the file `manifest.txt'.
%%
%%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
%%
%% Package `theorem' to use with LaTeX2e
%% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.
diff --git a/Master/texmf-dist/tex/latex/tools/thm.sty b/Master/texmf-dist/tex/latex/tools/thm.sty
index 26474e89142..18837285335 100644
--- a/Master/texmf-dist/tex/latex/tools/thm.sty
+++ b/Master/texmf-dist/tex/latex/tools/thm.sty
@@ -36,7 +36,7 @@
%% given in the file `manifest.txt'.
%%
%%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
%%
%% Package `theorem' to use with LaTeX2e
%% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.
diff --git a/Master/texmf-dist/tex/latex/tools/thmb.sty b/Master/texmf-dist/tex/latex/tools/thmb.sty
index eb8cdc7e396..d5f9b089190 100644
--- a/Master/texmf-dist/tex/latex/tools/thmb.sty
+++ b/Master/texmf-dist/tex/latex/tools/thmb.sty
@@ -36,7 +36,7 @@
%% given in the file `manifest.txt'.
%%
%%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
%%
%% Package `theorem' to use with LaTeX2e
%% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.
diff --git a/Master/texmf-dist/tex/latex/tools/thp.sty b/Master/texmf-dist/tex/latex/tools/thp.sty
index 1fc19ff5a99..16f97840d6a 100644
--- a/Master/texmf-dist/tex/latex/tools/thp.sty
+++ b/Master/texmf-dist/tex/latex/tools/thp.sty
@@ -36,7 +36,7 @@
%% given in the file `manifest.txt'.
%%
%%
-\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2024/08/06 v2.2c Theorem extension package (FMi)}
%%
%% Package `theorem' to use with LaTeX2e
%% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved.
diff --git a/Master/texmf-dist/tex/latex/toptesi/topcoman.sty b/Master/texmf-dist/tex/latex/toptesi/topcoman.sty
index 46d5bda1726..c07d7343ea7 100644
--- a/Master/texmf-dist/tex/latex/toptesi/topcoman.sty
+++ b/Master/texmf-dist/tex/latex/toptesi/topcoman.sty
@@ -7,14 +7,14 @@
%% toptesi.dtx (with options: `topcmn')
%% ______________________________________________________
%% The TOPtesi bundle
-%% Copyright (C) 2015-2020 Claudio Beccari
+%% Copyright (C) 1989-2025 Claudio Beccari
%% All rights reserved
%%
%% License information appended
%%
\NeedsTeXFormat{LaTeX2e}[2018/01/01]
\ProvidesPackage{topcoman}[%
-2020-09-06 v.6.4.06
+2025-01-15 v.6.4.07
Additional commands for the TOPtesi bundle]
@@ -46,7 +46,7 @@ Additional commands for the TOPtesi bundle]
\providecommand*\textsubscript{\raisebox{-0.5ex}}
\ifPDFTeX
-\@ifpackageloaded{textcomp}{}{\RequirePackage{textcomp}}
+\IfPackageLoadedF{textcomp}{\RequirePackage{textcomp}}
\fi
\providecommand{\ohm}{\textormath{\textohm}{\mathrm{\Omega}}}
\@ifpackageloaded{toptesi}{%
@@ -96,14 +96,15 @@ Additional commands for the TOPtesi bundle]
\let\p@figure\empty\let\p@table\empty}
\DisableFigTabNames
%%
-%% Copyright 2005-2020 Claudio Beccari
+%% Copyright 2005-2025 Claudio Beccari
%%
-%% Distributable under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
+%% Distributable under the LaTeX Project Public
+%% License, version 1.3c or higher (your choice).
+%% The latest version of this license is at:
+%% http://www.latex-project.org/lppl.txt
%%
-%% For important further details see the English or the Italian
-%% documentation.
+%% For important further details see the English or
+%% the Italian documentation.
%%
%% This work is "author-maintained"
%%
@@ -121,43 +122,47 @@ Additional commands for the TOPtesi bundle]
%% toptesi-dottorale.sty,
%% and the English documentation toptesi.pdf.
%%
-%% Furthermore the bundle contains the documentation source
-%% file toptesi-it.tex and the derived file
+%% Furthermore the bundle contains the documentation
+%% source file toptesi-it.tex and the derived file
%% toptesi-it.pdf.
%%
-%% The toptesi-example.tex source file is just an example
-%% that shows how to use the various commands; by commenting
-%% or uncommenting certain source lines it is possible to
-%% typeset different kind of theses and their front pages.
+%% The toptesi-example.tex source file is just an
+%% example that shows how to use the various commands;
+%% by commenting or uncommenting certain source lines
+%% it is possible to typeset different kind of theses
+%% and their front pages.
%%
-%% The topfront-example.tex source file is an example of how
-%% to produce just the title page with TOPtesi and the external
-%% package frontespizio.
+%% The topfront-example.tex source file is an example
+%% of how to produce just the title page with TOPtesi
+%% and the external package frontespizio.
%%
-%% The toptesi-scudo-example.tex source file is an example
-%% that shows the particular features available with TOPtesi,
-%% when a doctoral thesis is produced for the Scuola di
-%% Dottorato (ScuDo) of Politecnico di Torino.
+%% The toptesi-scudo-example.tex source file is an
+%% example that shows the particular features
+%% available with TOPtesi, when a doctoral thesis is
+%% produced for the Scuola di Dottorato (ScuDo) of
+%% Politecnico di Torino.
%%
-%% The toptesi.cfg file is a sample of a local configuration
-%% file that can be copied to another file and its copy freely
+%% The toptesi.cfg file is a sample of a local
+%% configuration file that can be copied to another
+%% file with different name and its copy freely
%% edited and customised.
%%
-%% The other toptesi-*.sty files are extension modules for
-%% typesetting the specific thesis kinds described by the
-%% suffix that replaces the asterisk.
+%% The other toptesi-*.sty files are extension modules
+%% for typesetting the specific thesis kinds described
+%% by the suffix that replaces the asterisk.
%%
-%% By running pdflatex on toptesi.dtx the user gets the class,
-%% sty and cfg files and the English documentation file in
-%% PDF format.
+%% By running pdflatex on toptesi.dtx the user gets
+%% the class, sty and cfg files and the English
+%% documentation file in PDF format.
%%
%% The source file of the Italian documentation file
-%% toptesi-it.pdf is another example of how to use TOPtesi.
-%% This file toptesi-it.tex may be typeset with pdfLaTeX,
-%% XeLaTeX, and LuaLateX; see the first comment lines of
-%% the file for how-to information. In spite of being mainly
-%% written in Italian, it contains several sections in English
-%% for the benefit of foreign students attending the Doctoral
+%% toptesi-it.pdf is another example of how to use
+%% TOPtesi. This file toptesi-it.tex may be typeset
+%% with pdfLaTeX, XeLaTeX, and LuaLateX; see the first
+%% comment lines of the file for how-to information.
+%% In spite of being mainly written in Italian, it
+%% contains several sections in English for the
+%% benefit of foreign students attending the Doctoral
%% School of Turin.
%%
%% End of file `topcoman.sty'.
diff --git a/Master/texmf-dist/tex/latex/toptesi/topfront.sty b/Master/texmf-dist/tex/latex/toptesi/topfront.sty
index a0259a82df8..9297d0c85e4 100644
--- a/Master/texmf-dist/tex/latex/toptesi/topfront.sty
+++ b/Master/texmf-dist/tex/latex/toptesi/topfront.sty
@@ -7,20 +7,20 @@
%% toptesi.dtx (with options: `topfrn')
%% ______________________________________________________
%% The TOPtesi bundle
-%% Copyright (C) 2015-2020 Claudio Beccari
+%% Copyright (C) 1989-2025 Claudio Beccari
%% All rights reserved
%%
%% License information appended
%%
\NeedsTeXFormat{LaTeX2e}[2018/01/01]
\ProvidesPackage{topfront}[%
-2020-09-06 v.6.4.06
+2025-01-15 v.6.4.07
Title page for TOPtesi and other classes]
-\@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}}
-\@ifpackageloaded{xspace}{}{\RequirePackage{xspace}}
-\@ifpackageloaded{xparse}{}{\RequirePackage{xparse}}
+\IfPackageLoadedF{etoolbox}{\RequirePackage{etoolbox}}
+\IfPackageLoadedF{xspace}{\RequirePackage{xspace}}
+\IfPackageLoadedF{xparse}{\RequirePackage{xparse}}
\ifcsundef{ifclassica}{\newif\ifclassica \classicafalse}{}
\ifcsundef{if@utoretitolo}{\newif\if@utoretitolo\@utoretitolofalse}{}
@@ -121,6 +121,7 @@ Title page for TOPtesi and other classes]
\gdef\@stitle{#1}}\gdef\@titolo{#2}%
}
\def\sottotitolo#1{\gdef\@subtitle{#1}}
+ this:\\[\bigskipamount]
\let\@materia\empty
\def\Materia#1{\def\@materia{#1}}\let\materia\Materia
\newif\ifDirettore \Direttorefalse
@@ -555,14 +556,15 @@ Title page for TOPtesi and other classes]
{\null\vfill\thispagestyle{empty}\@retrofrontespizio\par\clearpage}%
\endgroup}
%%
-%% Copyright 2005-2020 Claudio Beccari
+%% Copyright 2005-2025 Claudio Beccari
%%
-%% Distributable under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
+%% Distributable under the LaTeX Project Public
+%% License, version 1.3c or higher (your choice).
+%% The latest version of this license is at:
+%% http://www.latex-project.org/lppl.txt
%%
-%% For important further details see the English or the Italian
-%% documentation.
+%% For important further details see the English or
+%% the Italian documentation.
%%
%% This work is "author-maintained"
%%
@@ -580,43 +582,47 @@ Title page for TOPtesi and other classes]
%% toptesi-dottorale.sty,
%% and the English documentation toptesi.pdf.
%%
-%% Furthermore the bundle contains the documentation source
-%% file toptesi-it.tex and the derived file
+%% Furthermore the bundle contains the documentation
+%% source file toptesi-it.tex and the derived file
%% toptesi-it.pdf.
%%
-%% The toptesi-example.tex source file is just an example
-%% that shows how to use the various commands; by commenting
-%% or uncommenting certain source lines it is possible to
-%% typeset different kind of theses and their front pages.
+%% The toptesi-example.tex source file is just an
+%% example that shows how to use the various commands;
+%% by commenting or uncommenting certain source lines
+%% it is possible to typeset different kind of theses
+%% and their front pages.
%%
-%% The topfront-example.tex source file is an example of how
-%% to produce just the title page with TOPtesi and the external
-%% package frontespizio.
+%% The topfront-example.tex source file is an example
+%% of how to produce just the title page with TOPtesi
+%% and the external package frontespizio.
%%
-%% The toptesi-scudo-example.tex source file is an example
-%% that shows the particular features available with TOPtesi,
-%% when a doctoral thesis is produced for the Scuola di
-%% Dottorato (ScuDo) of Politecnico di Torino.
+%% The toptesi-scudo-example.tex source file is an
+%% example that shows the particular features
+%% available with TOPtesi, when a doctoral thesis is
+%% produced for the Scuola di Dottorato (ScuDo) of
+%% Politecnico di Torino.
%%
-%% The toptesi.cfg file is a sample of a local configuration
-%% file that can be copied to another file and its copy freely
+%% The toptesi.cfg file is a sample of a local
+%% configuration file that can be copied to another
+%% file with different name and its copy freely
%% edited and customised.
%%
-%% The other toptesi-*.sty files are extension modules for
-%% typesetting the specific thesis kinds described by the
-%% suffix that replaces the asterisk.
+%% The other toptesi-*.sty files are extension modules
+%% for typesetting the specific thesis kinds described
+%% by the suffix that replaces the asterisk.
%%
-%% By running pdflatex on toptesi.dtx the user gets the class,
-%% sty and cfg files and the English documentation file in
-%% PDF format.
+%% By running pdflatex on toptesi.dtx the user gets
+%% the class, sty and cfg files and the English
+%% documentation file in PDF format.
%%
%% The source file of the Italian documentation file
-%% toptesi-it.pdf is another example of how to use TOPtesi.
-%% This file toptesi-it.tex may be typeset with pdfLaTeX,
-%% XeLaTeX, and LuaLateX; see the first comment lines of
-%% the file for how-to information. In spite of being mainly
-%% written in Italian, it contains several sections in English
-%% for the benefit of foreign students attending the Doctoral
+%% toptesi-it.pdf is another example of how to use
+%% TOPtesi. This file toptesi-it.tex may be typeset
+%% with pdfLaTeX, XeLaTeX, and LuaLateX; see the first
+%% comment lines of the file for how-to information.
+%% In spite of being mainly written in Italian, it
+%% contains several sections in English for the
+%% benefit of foreign students attending the Doctoral
%% School of Turin.
%%
%% End of file `topfront.sty'.
diff --git a/Master/texmf-dist/tex/latex/toptesi/toptesi-dottorale.sty b/Master/texmf-dist/tex/latex/toptesi/toptesi-dottorale.sty
index eb19b8c03dd..fbadc77fcb6 100644
--- a/Master/texmf-dist/tex/latex/toptesi/toptesi-dottorale.sty
+++ b/Master/texmf-dist/tex/latex/toptesi/toptesi-dottorale.sty
@@ -7,19 +7,19 @@
%% toptesi.dtx (with options: `topdoc')
%% ______________________________________________________
%% The TOPtesi bundle
-%% Copyright (C) 2015-2020 Claudio Beccari
+%% Copyright (C) 1989-2025 Claudio Beccari
%% All rights reserved
%%
%% License information appended
%%
\ProvidesPackage{toptesi-dottorale}[%
-2020-09-06 v.6.4.06
+2025-01-15 v.6.4.07
Ph.D. degree title page]
-\@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}}
-\@ifpackageloaded{xspace}{}{\RequirePackage{xspace}}
-\@ifpackageloaded{xparse}{}{\RequirePackage{xparse}}
+\IfPackageLoadedF{etoolbox}{\RequirePackage{etoolbox}}
+\IfPackageLoadedF{xspace}{\RequirePackage{xspace}}
+\IfPackageLoadedF{xparse}{\RequirePackage{xparse}}
\ifcsundef{ifclassica}{\newif\ifclassica \classicafalse}{}
\ifcsundef{if@utoretitolo}{\newif\if@utoretitolo\@utoretitolofalse}{}
\ifcsundef{if@ldstyle}{\newif\if@ldstyle\@ldstylefalse}{}
@@ -541,14 +541,15 @@ Ph.D. degree title page]
{\null\vfill\thispagestyle{empty}\@retrofrontespizio\par\clearpage}%
\endgroup}
%%
-%% Copyright 2005-2020 Claudio Beccari
+%% Copyright 2005-2025 Claudio Beccari
%%
-%% Distributable under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
+%% Distributable under the LaTeX Project Public
+%% License, version 1.3c or higher (your choice).
+%% The latest version of this license is at:
+%% http://www.latex-project.org/lppl.txt
%%
-%% For important further details see the English or the Italian
-%% documentation.
+%% For important further details see the English or
+%% the Italian documentation.
%%
%% This work is "author-maintained"
%%
@@ -566,43 +567,47 @@ Ph.D. degree title page]
%% toptesi-dottorale.sty,
%% and the English documentation toptesi.pdf.
%%
-%% Furthermore the bundle contains the documentation source
-%% file toptesi-it.tex and the derived file
+%% Furthermore the bundle contains the documentation
+%% source file toptesi-it.tex and the derived file
%% toptesi-it.pdf.
%%
-%% The toptesi-example.tex source file is just an example
-%% that shows how to use the various commands; by commenting
-%% or uncommenting certain source lines it is possible to
-%% typeset different kind of theses and their front pages.
+%% The toptesi-example.tex source file is just an
+%% example that shows how to use the various commands;
+%% by commenting or uncommenting certain source lines
+%% it is possible to typeset different kind of theses
+%% and their front pages.
%%
-%% The topfront-example.tex source file is an example of how
-%% to produce just the title page with TOPtesi and the external
-%% package frontespizio.
+%% The topfront-example.tex source file is an example
+%% of how to produce just the title page with TOPtesi
+%% and the external package frontespizio.
%%
-%% The toptesi-scudo-example.tex source file is an example
-%% that shows the particular features available with TOPtesi,
-%% when a doctoral thesis is produced for the Scuola di
-%% Dottorato (ScuDo) of Politecnico di Torino.
+%% The toptesi-scudo-example.tex source file is an
+%% example that shows the particular features
+%% available with TOPtesi, when a doctoral thesis is
+%% produced for the Scuola di Dottorato (ScuDo) of
+%% Politecnico di Torino.
%%
-%% The toptesi.cfg file is a sample of a local configuration
-%% file that can be copied to another file and its copy freely
+%% The toptesi.cfg file is a sample of a local
+%% configuration file that can be copied to another
+%% file with different name and its copy freely
%% edited and customised.
%%
-%% The other toptesi-*.sty files are extension modules for
-%% typesetting the specific thesis kinds described by the
-%% suffix that replaces the asterisk.
+%% The other toptesi-*.sty files are extension modules
+%% for typesetting the specific thesis kinds described
+%% by the suffix that replaces the asterisk.
%%
-%% By running pdflatex on toptesi.dtx the user gets the class,
-%% sty and cfg files and the English documentation file in
-%% PDF format.
+%% By running pdflatex on toptesi.dtx the user gets
+%% the class, sty and cfg files and the English
+%% documentation file in PDF format.
%%
%% The source file of the Italian documentation file
-%% toptesi-it.pdf is another example of how to use TOPtesi.
-%% This file toptesi-it.tex may be typeset with pdfLaTeX,
-%% XeLaTeX, and LuaLateX; see the first comment lines of
-%% the file for how-to information. In spite of being mainly
-%% written in Italian, it contains several sections in English
-%% for the benefit of foreign students attending the Doctoral
+%% toptesi-it.pdf is another example of how to use
+%% TOPtesi. This file toptesi-it.tex may be typeset
+%% with pdfLaTeX, XeLaTeX, and LuaLateX; see the first
+%% comment lines of the file for how-to information.
+%% In spite of being mainly written in Italian, it
+%% contains several sections in English for the
+%% benefit of foreign students attending the Doctoral
%% School of Turin.
%%
%% End of file `toptesi-dottorale.sty'.
diff --git a/Master/texmf-dist/tex/latex/toptesi/toptesi-magistrale.sty b/Master/texmf-dist/tex/latex/toptesi/toptesi-magistrale.sty
index c02ec8f205d..163b978c522 100644
--- a/Master/texmf-dist/tex/latex/toptesi/toptesi-magistrale.sty
+++ b/Master/texmf-dist/tex/latex/toptesi/toptesi-magistrale.sty
@@ -7,21 +7,21 @@
%% toptesi.dtx (with options: `topmag')
%% ______________________________________________________
%% The TOPtesi bundle
-%% Copyright (C) 2015-2020 Claudio Beccari
+%% Copyright (C) 1989-2025 Claudio Beccari
%% All rights reserved
%%
%% License information appended
%%
\NeedsTeXFormat{LaTeX2e}[2018/01/01]
\ProvidesPackage{toptesi-magistrale}[%
-2020-09-06 v.6.4.06
+2025-01-15 v.6.4.07
Master degree title page]
-\@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}}
-\@ifpackageloaded{xspace}{}{\RequirePackage{xspace}}
-\@ifpackageloaded{xparse}{}{\RequirePackage{xparse}}
+\IfPackageLoadedF{etoolbox}{\RequirePackage{etoolbox}}
+\IfPackageLoadedF{xspace}{\RequirePackage{xspace}}
+\IfPackageLoadedF{xparse}{\RequirePackage{xparse}}
\ifcsundef{ifclassica}{\newif\ifclassica \classicafalse}{}
\ifcsundef{if@utoretitolo}{\newif\if@utoretitolo\@utoretitolofalse}{}
\ifcsundef{if@ldstyle}{\newif\if@ldstyle\@ldstylefalse}{}
@@ -490,14 +490,15 @@ Master degree title page]
{\null\vfill\thispagestyle{empty}\@retrofrontespizio\par\clearpage}%
\endgroup}
%%
-%% Copyright 2005-2020 Claudio Beccari
+%% Copyright 2005-2025 Claudio Beccari
%%
-%% Distributable under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
+%% Distributable under the LaTeX Project Public
+%% License, version 1.3c or higher (your choice).
+%% The latest version of this license is at:
+%% http://www.latex-project.org/lppl.txt
%%
-%% For important further details see the English or the Italian
-%% documentation.
+%% For important further details see the English or
+%% the Italian documentation.
%%
%% This work is "author-maintained"
%%
@@ -515,43 +516,47 @@ Master degree title page]
%% toptesi-dottorale.sty,
%% and the English documentation toptesi.pdf.
%%
-%% Furthermore the bundle contains the documentation source
-%% file toptesi-it.tex and the derived file
+%% Furthermore the bundle contains the documentation
+%% source file toptesi-it.tex and the derived file
%% toptesi-it.pdf.
%%
-%% The toptesi-example.tex source file is just an example
-%% that shows how to use the various commands; by commenting
-%% or uncommenting certain source lines it is possible to
-%% typeset different kind of theses and their front pages.
+%% The toptesi-example.tex source file is just an
+%% example that shows how to use the various commands;
+%% by commenting or uncommenting certain source lines
+%% it is possible to typeset different kind of theses
+%% and their front pages.
%%
-%% The topfront-example.tex source file is an example of how
-%% to produce just the title page with TOPtesi and the external
-%% package frontespizio.
+%% The topfront-example.tex source file is an example
+%% of how to produce just the title page with TOPtesi
+%% and the external package frontespizio.
%%
-%% The toptesi-scudo-example.tex source file is an example
-%% that shows the particular features available with TOPtesi,
-%% when a doctoral thesis is produced for the Scuola di
-%% Dottorato (ScuDo) of Politecnico di Torino.
+%% The toptesi-scudo-example.tex source file is an
+%% example that shows the particular features
+%% available with TOPtesi, when a doctoral thesis is
+%% produced for the Scuola di Dottorato (ScuDo) of
+%% Politecnico di Torino.
%%
-%% The toptesi.cfg file is a sample of a local configuration
-%% file that can be copied to another file and its copy freely
+%% The toptesi.cfg file is a sample of a local
+%% configuration file that can be copied to another
+%% file with different name and its copy freely
%% edited and customised.
%%
-%% The other toptesi-*.sty files are extension modules for
-%% typesetting the specific thesis kinds described by the
-%% suffix that replaces the asterisk.
+%% The other toptesi-*.sty files are extension modules
+%% for typesetting the specific thesis kinds described
+%% by the suffix that replaces the asterisk.
%%
-%% By running pdflatex on toptesi.dtx the user gets the class,
-%% sty and cfg files and the English documentation file in
-%% PDF format.
+%% By running pdflatex on toptesi.dtx the user gets
+%% the class, sty and cfg files and the English
+%% documentation file in PDF format.
%%
%% The source file of the Italian documentation file
-%% toptesi-it.pdf is another example of how to use TOPtesi.
-%% This file toptesi-it.tex may be typeset with pdfLaTeX,
-%% XeLaTeX, and LuaLateX; see the first comment lines of
-%% the file for how-to information. In spite of being mainly
-%% written in Italian, it contains several sections in English
-%% for the benefit of foreign students attending the Doctoral
+%% toptesi-it.pdf is another example of how to use
+%% TOPtesi. This file toptesi-it.tex may be typeset
+%% with pdfLaTeX, XeLaTeX, and LuaLateX; see the first
+%% comment lines of the file for how-to information.
+%% In spite of being mainly written in Italian, it
+%% contains several sections in English for the
+%% benefit of foreign students attending the Doctoral
%% School of Turin.
%%
%% End of file `toptesi-magistrale.sty'.
diff --git a/Master/texmf-dist/tex/latex/toptesi/toptesi-monografia.sty b/Master/texmf-dist/tex/latex/toptesi/toptesi-monografia.sty
index 1a2416163b2..613907120cf 100644
--- a/Master/texmf-dist/tex/latex/toptesi/toptesi-monografia.sty
+++ b/Master/texmf-dist/tex/latex/toptesi/toptesi-monografia.sty
@@ -7,21 +7,21 @@
%% toptesi.dtx (with options: `topmon')
%% ______________________________________________________
%% The TOPtesi bundle
-%% Copyright (C) 2015-2020 Claudio Beccari
+%% Copyright (C) 1989-2025 Claudio Beccari
%% All rights reserved
%%
%% License information appended
%%
\NeedsTeXFormat{LaTeX2e}[2018/01/01]
\ProvidesPackage{toptesi-monografia}[%
-2020-09-06 v.6.4.06
+2025-01-15 v.6.4.07
Bachelor degree title page]
\monografiatrue
-\@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}}
-\@ifpackageloaded{xparse}{}{\RequirePackage{xparse}}
-\@ifpackageloaded{xspace}{}{\RequirePackage{xspace}}
+\IfPackageLoadedF{etoolbox}{\RequirePackage{etoolbox}}
+\IfPackageLoadedF{xparse}{\RequirePackage{xparse}}
+\IfPackageLoadedF{xspace}{\RequirePackage{xspace}}
\ifcsundef{ifclassica}{\newif\ifclassica \classicafalse}{}
\ifcsundef{if@autoretitolo}{\newif\if@utoretitolo \@utoretitolofalse}{}
@@ -330,14 +330,15 @@ Bachelor degree title page]
\newpage}
}
%%
-%% Copyright 2005-2020 Claudio Beccari
+%% Copyright 2005-2025 Claudio Beccari
%%
-%% Distributable under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
+%% Distributable under the LaTeX Project Public
+%% License, version 1.3c or higher (your choice).
+%% The latest version of this license is at:
+%% http://www.latex-project.org/lppl.txt
%%
-%% For important further details see the English or the Italian
-%% documentation.
+%% For important further details see the English or
+%% the Italian documentation.
%%
%% This work is "author-maintained"
%%
@@ -355,43 +356,47 @@ Bachelor degree title page]
%% toptesi-dottorale.sty,
%% and the English documentation toptesi.pdf.
%%
-%% Furthermore the bundle contains the documentation source
-%% file toptesi-it.tex and the derived file
+%% Furthermore the bundle contains the documentation
+%% source file toptesi-it.tex and the derived file
%% toptesi-it.pdf.
%%
-%% The toptesi-example.tex source file is just an example
-%% that shows how to use the various commands; by commenting
-%% or uncommenting certain source lines it is possible to
-%% typeset different kind of theses and their front pages.
+%% The toptesi-example.tex source file is just an
+%% example that shows how to use the various commands;
+%% by commenting or uncommenting certain source lines
+%% it is possible to typeset different kind of theses
+%% and their front pages.
%%
-%% The topfront-example.tex source file is an example of how
-%% to produce just the title page with TOPtesi and the external
-%% package frontespizio.
+%% The topfront-example.tex source file is an example
+%% of how to produce just the title page with TOPtesi
+%% and the external package frontespizio.
%%
-%% The toptesi-scudo-example.tex source file is an example
-%% that shows the particular features available with TOPtesi,
-%% when a doctoral thesis is produced for the Scuola di
-%% Dottorato (ScuDo) of Politecnico di Torino.
+%% The toptesi-scudo-example.tex source file is an
+%% example that shows the particular features
+%% available with TOPtesi, when a doctoral thesis is
+%% produced for the Scuola di Dottorato (ScuDo) of
+%% Politecnico di Torino.
%%
-%% The toptesi.cfg file is a sample of a local configuration
-%% file that can be copied to another file and its copy freely
+%% The toptesi.cfg file is a sample of a local
+%% configuration file that can be copied to another
+%% file with different name and its copy freely
%% edited and customised.
%%
-%% The other toptesi-*.sty files are extension modules for
-%% typesetting the specific thesis kinds described by the
-%% suffix that replaces the asterisk.
+%% The other toptesi-*.sty files are extension modules
+%% for typesetting the specific thesis kinds described
+%% by the suffix that replaces the asterisk.
%%
-%% By running pdflatex on toptesi.dtx the user gets the class,
-%% sty and cfg files and the English documentation file in
-%% PDF format.
+%% By running pdflatex on toptesi.dtx the user gets
+%% the class, sty and cfg files and the English
+%% documentation file in PDF format.
%%
%% The source file of the Italian documentation file
-%% toptesi-it.pdf is another example of how to use TOPtesi.
-%% This file toptesi-it.tex may be typeset with pdfLaTeX,
-%% XeLaTeX, and LuaLateX; see the first comment lines of
-%% the file for how-to information. In spite of being mainly
-%% written in Italian, it contains several sections in English
-%% for the benefit of foreign students attending the Doctoral
+%% toptesi-it.pdf is another example of how to use
+%% TOPtesi. This file toptesi-it.tex may be typeset
+%% with pdfLaTeX, XeLaTeX, and LuaLateX; see the first
+%% comment lines of the file for how-to information.
+%% In spite of being mainly written in Italian, it
+%% contains several sections in English for the
+%% benefit of foreign students attending the Doctoral
%% School of Turin.
%%
%% End of file `toptesi-monografia.sty'.
diff --git a/Master/texmf-dist/tex/latex/toptesi/toptesi-scudo.sty b/Master/texmf-dist/tex/latex/toptesi/toptesi-scudo.sty
index aa142be8441..f493b229de2 100644
--- a/Master/texmf-dist/tex/latex/toptesi/toptesi-scudo.sty
+++ b/Master/texmf-dist/tex/latex/toptesi/toptesi-scudo.sty
@@ -7,14 +7,14 @@
%% toptesi.dtx (with options: `topscu')
%% ______________________________________________________
%% The TOPtesi bundle
-%% Copyright (C) 2015-2020 Claudio Beccari
+%% Copyright (C) 1989-2025 Claudio Beccari
%% All rights reserved
%%
%% License information appended
%%
\NeedsTeXFormat{LaTeX2e}[2018/01/01]
\ProvidesPackage{toptesi-scudo}[%
-2020-09-06 v.6.4.06
+2025-01-15 v.6.4.07
Extension for ScuDo theses]
@@ -266,14 +266,15 @@ This class is available in every up-to-date and complete
}
%%
-%% Copyright 2005-2020 Claudio Beccari
+%% Copyright 2005-2025 Claudio Beccari
%%
-%% Distributable under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
+%% Distributable under the LaTeX Project Public
+%% License, version 1.3c or higher (your choice).
+%% The latest version of this license is at:
+%% http://www.latex-project.org/lppl.txt
%%
-%% For important further details see the English or the Italian
-%% documentation.
+%% For important further details see the English or
+%% the Italian documentation.
%%
%% This work is "author-maintained"
%%
@@ -291,43 +292,47 @@ This class is available in every up-to-date and complete
%% toptesi-dottorale.sty,
%% and the English documentation toptesi.pdf.
%%
-%% Furthermore the bundle contains the documentation source
-%% file toptesi-it.tex and the derived file
+%% Furthermore the bundle contains the documentation
+%% source file toptesi-it.tex and the derived file
%% toptesi-it.pdf.
%%
-%% The toptesi-example.tex source file is just an example
-%% that shows how to use the various commands; by commenting
-%% or uncommenting certain source lines it is possible to
-%% typeset different kind of theses and their front pages.
+%% The toptesi-example.tex source file is just an
+%% example that shows how to use the various commands;
+%% by commenting or uncommenting certain source lines
+%% it is possible to typeset different kind of theses
+%% and their front pages.
%%
-%% The topfront-example.tex source file is an example of how
-%% to produce just the title page with TOPtesi and the external
-%% package frontespizio.
+%% The topfront-example.tex source file is an example
+%% of how to produce just the title page with TOPtesi
+%% and the external package frontespizio.
%%
-%% The toptesi-scudo-example.tex source file is an example
-%% that shows the particular features available with TOPtesi,
-%% when a doctoral thesis is produced for the Scuola di
-%% Dottorato (ScuDo) of Politecnico di Torino.
+%% The toptesi-scudo-example.tex source file is an
+%% example that shows the particular features
+%% available with TOPtesi, when a doctoral thesis is
+%% produced for the Scuola di Dottorato (ScuDo) of
+%% Politecnico di Torino.
%%
-%% The toptesi.cfg file is a sample of a local configuration
-%% file that can be copied to another file and its copy freely
+%% The toptesi.cfg file is a sample of a local
+%% configuration file that can be copied to another
+%% file with different name and its copy freely
%% edited and customised.
%%
-%% The other toptesi-*.sty files are extension modules for
-%% typesetting the specific thesis kinds described by the
-%% suffix that replaces the asterisk.
+%% The other toptesi-*.sty files are extension modules
+%% for typesetting the specific thesis kinds described
+%% by the suffix that replaces the asterisk.
%%
-%% By running pdflatex on toptesi.dtx the user gets the class,
-%% sty and cfg files and the English documentation file in
-%% PDF format.
+%% By running pdflatex on toptesi.dtx the user gets
+%% the class, sty and cfg files and the English
+%% documentation file in PDF format.
%%
%% The source file of the Italian documentation file
-%% toptesi-it.pdf is another example of how to use TOPtesi.
-%% This file toptesi-it.tex may be typeset with pdfLaTeX,
-%% XeLaTeX, and LuaLateX; see the first comment lines of
-%% the file for how-to information. In spite of being mainly
-%% written in Italian, it contains several sections in English
-%% for the benefit of foreign students attending the Doctoral
+%% toptesi-it.pdf is another example of how to use
+%% TOPtesi. This file toptesi-it.tex may be typeset
+%% with pdfLaTeX, XeLaTeX, and LuaLateX; see the first
+%% comment lines of the file for how-to information.
+%% In spite of being mainly written in Italian, it
+%% contains several sections in English for the
+%% benefit of foreign students attending the Doctoral
%% School of Turin.
%%
%% End of file `toptesi-scudo.sty'.
diff --git a/Master/texmf-dist/tex/latex/toptesi/toptesi-sss.sty b/Master/texmf-dist/tex/latex/toptesi/toptesi-sss.sty
index cda07d34b80..41579ee5869 100644
--- a/Master/texmf-dist/tex/latex/toptesi/toptesi-sss.sty
+++ b/Master/texmf-dist/tex/latex/toptesi/toptesi-sss.sty
@@ -7,14 +7,14 @@
%% toptesi.dtx (with options: `topsss')
%% ______________________________________________________
%% The TOPtesi bundle
-%% Copyright (C) 2015-2020 Claudio Beccari
+%% Copyright (C) 1989-2025 Claudio Beccari
%% All rights reserved
%%
%% License information appended
%%
\NeedsTeXFormat{LaTeX2e}[2018/01/01]
\ProvidesPackage{toptesi-sss}[%
-2020-09-06 v.6.4.06
+2025-01-15 v.6.4.07
High school title page]
@@ -116,8 +116,9 @@ High school title page]
\normalsize\@subtitle\par}
\ifBlank{\@SSSLogo}%
{\vspace{\stretch{1}}}%
- {\vspace{\stretch{1}}\setbox0\hbox{\includegraphics[height=30mm]{\@SSSLogo}}
- \ifdim\wd0>\linewidth \resizebox{\linewidth}{!}{\box0}\else\box0\fi
+ {\vspace{\stretch{1}}\makebox[\textwidth]{%
+ \setbox0\hbox{\includegraphics[height=30mm]{\@SSSLogo}}
+ \ifdim\wd0>\textwidth \resizebox{\linewidth}{!}{\box0}\else\box0\fi}
\par\vspace{\stretch{1}}}
\begin{minipage}[t]{0.45\textwidth}\flushleft
\ifBlank{\@presidente}{}{\@Npresidente\\
@@ -143,14 +144,15 @@ Anno scolastico \@annoscolastico}}
\clearpage}%%
%%
%%
-%% Copyright 2005-2020 Claudio Beccari
+%% Copyright 2005-2025 Claudio Beccari
%%
-%% Distributable under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
+%% Distributable under the LaTeX Project Public
+%% License, version 1.3c or higher (your choice).
+%% The latest version of this license is at:
+%% http://www.latex-project.org/lppl.txt
%%
-%% For important further details see the English or the Italian
-%% documentation.
+%% For important further details see the English or
+%% the Italian documentation.
%%
%% This work is "author-maintained"
%%
@@ -168,43 +170,47 @@ Anno scolastico \@annoscolastico}}
%% toptesi-dottorale.sty,
%% and the English documentation toptesi.pdf.
%%
-%% Furthermore the bundle contains the documentation source
-%% file toptesi-it.tex and the derived file
+%% Furthermore the bundle contains the documentation
+%% source file toptesi-it.tex and the derived file
%% toptesi-it.pdf.
%%
-%% The toptesi-example.tex source file is just an example
-%% that shows how to use the various commands; by commenting
-%% or uncommenting certain source lines it is possible to
-%% typeset different kind of theses and their front pages.
+%% The toptesi-example.tex source file is just an
+%% example that shows how to use the various commands;
+%% by commenting or uncommenting certain source lines
+%% it is possible to typeset different kind of theses
+%% and their front pages.
%%
-%% The topfront-example.tex source file is an example of how
-%% to produce just the title page with TOPtesi and the external
-%% package frontespizio.
+%% The topfront-example.tex source file is an example
+%% of how to produce just the title page with TOPtesi
+%% and the external package frontespizio.
%%
-%% The toptesi-scudo-example.tex source file is an example
-%% that shows the particular features available with TOPtesi,
-%% when a doctoral thesis is produced for the Scuola di
-%% Dottorato (ScuDo) of Politecnico di Torino.
+%% The toptesi-scudo-example.tex source file is an
+%% example that shows the particular features
+%% available with TOPtesi, when a doctoral thesis is
+%% produced for the Scuola di Dottorato (ScuDo) of
+%% Politecnico di Torino.
%%
-%% The toptesi.cfg file is a sample of a local configuration
-%% file that can be copied to another file and its copy freely
+%% The toptesi.cfg file is a sample of a local
+%% configuration file that can be copied to another
+%% file with different name and its copy freely
%% edited and customised.
%%
-%% The other toptesi-*.sty files are extension modules for
-%% typesetting the specific thesis kinds described by the
-%% suffix that replaces the asterisk.
+%% The other toptesi-*.sty files are extension modules
+%% for typesetting the specific thesis kinds described
+%% by the suffix that replaces the asterisk.
%%
-%% By running pdflatex on toptesi.dtx the user gets the class,
-%% sty and cfg files and the English documentation file in
-%% PDF format.
+%% By running pdflatex on toptesi.dtx the user gets
+%% the class, sty and cfg files and the English
+%% documentation file in PDF format.
%%
%% The source file of the Italian documentation file
-%% toptesi-it.pdf is another example of how to use TOPtesi.
-%% This file toptesi-it.tex may be typeset with pdfLaTeX,
-%% XeLaTeX, and LuaLateX; see the first comment lines of
-%% the file for how-to information. In spite of being mainly
-%% written in Italian, it contains several sections in English
-%% for the benefit of foreign students attending the Doctoral
+%% toptesi-it.pdf is another example of how to use
+%% TOPtesi. This file toptesi-it.tex may be typeset
+%% with pdfLaTeX, XeLaTeX, and LuaLateX; see the first
+%% comment lines of the file for how-to information.
+%% In spite of being mainly written in Italian, it
+%% contains several sections in English for the
+%% benefit of foreign students attending the Doctoral
%% School of Turin.
%%
%% End of file `toptesi-sss.sty'.
diff --git a/Master/texmf-dist/tex/latex/toptesi/toptesi.cfg b/Master/texmf-dist/tex/latex/toptesi/toptesi.cfg
index 38eea3ea284..e9c34eb1d70 100644
--- a/Master/texmf-dist/tex/latex/toptesi/toptesi.cfg
+++ b/Master/texmf-dist/tex/latex/toptesi/toptesi.cfg
@@ -7,7 +7,7 @@
%% toptesi.dtx (with options: `topcfg')
%% ______________________________________________________
%% The TOPtesi bundle
-%% Copyright (C) 2015-2020 Claudio Beccari
+%% Copyright (C) 1989-2025 Claudio Beccari
%% All rights reserved
%%
%% License information appended
@@ -64,14 +64,15 @@
provided that credit is given to the original author.}
\fi
%%
-%% Copyright 2005-2020 Claudio Beccari
+%% Copyright 2005-2025 Claudio Beccari
%%
-%% Distributable under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
+%% Distributable under the LaTeX Project Public
+%% License, version 1.3c or higher (your choice).
+%% The latest version of this license is at:
+%% http://www.latex-project.org/lppl.txt
%%
-%% For important further details see the English or the Italian
-%% documentation.
+%% For important further details see the English or
+%% the Italian documentation.
%%
%% This work is "author-maintained"
%%
@@ -89,43 +90,47 @@
%% toptesi-dottorale.sty,
%% and the English documentation toptesi.pdf.
%%
-%% Furthermore the bundle contains the documentation source
-%% file toptesi-it.tex and the derived file
+%% Furthermore the bundle contains the documentation
+%% source file toptesi-it.tex and the derived file
%% toptesi-it.pdf.
%%
-%% The toptesi-example.tex source file is just an example
-%% that shows how to use the various commands; by commenting
-%% or uncommenting certain source lines it is possible to
-%% typeset different kind of theses and their front pages.
+%% The toptesi-example.tex source file is just an
+%% example that shows how to use the various commands;
+%% by commenting or uncommenting certain source lines
+%% it is possible to typeset different kind of theses
+%% and their front pages.
%%
-%% The topfront-example.tex source file is an example of how
-%% to produce just the title page with TOPtesi and the external
-%% package frontespizio.
+%% The topfront-example.tex source file is an example
+%% of how to produce just the title page with TOPtesi
+%% and the external package frontespizio.
%%
-%% The toptesi-scudo-example.tex source file is an example
-%% that shows the particular features available with TOPtesi,
-%% when a doctoral thesis is produced for the Scuola di
-%% Dottorato (ScuDo) of Politecnico di Torino.
+%% The toptesi-scudo-example.tex source file is an
+%% example that shows the particular features
+%% available with TOPtesi, when a doctoral thesis is
+%% produced for the Scuola di Dottorato (ScuDo) of
+%% Politecnico di Torino.
%%
-%% The toptesi.cfg file is a sample of a local configuration
-%% file that can be copied to another file and its copy freely
+%% The toptesi.cfg file is a sample of a local
+%% configuration file that can be copied to another
+%% file with different name and its copy freely
%% edited and customised.
%%
-%% The other toptesi-*.sty files are extension modules for
-%% typesetting the specific thesis kinds described by the
-%% suffix that replaces the asterisk.
+%% The other toptesi-*.sty files are extension modules
+%% for typesetting the specific thesis kinds described
+%% by the suffix that replaces the asterisk.
%%
-%% By running pdflatex on toptesi.dtx the user gets the class,
-%% sty and cfg files and the English documentation file in
-%% PDF format.
+%% By running pdflatex on toptesi.dtx the user gets
+%% the class, sty and cfg files and the English
+%% documentation file in PDF format.
%%
%% The source file of the Italian documentation file
-%% toptesi-it.pdf is another example of how to use TOPtesi.
-%% This file toptesi-it.tex may be typeset with pdfLaTeX,
-%% XeLaTeX, and LuaLateX; see the first comment lines of
-%% the file for how-to information. In spite of being mainly
-%% written in Italian, it contains several sections in English
-%% for the benefit of foreign students attending the Doctoral
+%% toptesi-it.pdf is another example of how to use
+%% TOPtesi. This file toptesi-it.tex may be typeset
+%% with pdfLaTeX, XeLaTeX, and LuaLateX; see the first
+%% comment lines of the file for how-to information.
+%% In spite of being mainly written in Italian, it
+%% contains several sections in English for the
+%% benefit of foreign students attending the Doctoral
%% School of Turin.
%%
%% End of file `toptesi.cfg'.
diff --git a/Master/texmf-dist/tex/latex/toptesi/toptesi.cls b/Master/texmf-dist/tex/latex/toptesi/toptesi.cls
index bcc3404abae..6e5812aa9d1 100644
--- a/Master/texmf-dist/tex/latex/toptesi/toptesi.cls
+++ b/Master/texmf-dist/tex/latex/toptesi/toptesi.cls
@@ -7,14 +7,14 @@
%% toptesi.dtx (with options: `class')
%% ______________________________________________________
%% The TOPtesi bundle
-%% Copyright (C) 2015-2020 Claudio Beccari
+%% Copyright (C) 1989-2025 Claudio Beccari
%% All rights reserved
%%
%% License information appended
%%
\NeedsTeXFormat{LaTeX2e}[2018/01/01]
\ProvidesClass{toptesi}[%
-2020-09-06 v.6.4.06
+2025-01-15 v.6.4.07
Class for typesetting university theses]
@@ -72,14 +72,15 @@ Class for typesetting university theses]
\expandafter\stop
\fi
%%
-%% Copyright 2005-2020 Claudio Beccari
+%% Copyright 2005-2025 Claudio Beccari
%%
-%% Distributable under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
+%% Distributable under the LaTeX Project Public
+%% License, version 1.3c or higher (your choice).
+%% The latest version of this license is at:
+%% http://www.latex-project.org/lppl.txt
%%
-%% For important further details see the English or the Italian
-%% documentation.
+%% For important further details see the English or
+%% the Italian documentation.
%%
%% This work is "author-maintained"
%%
@@ -97,43 +98,47 @@ Class for typesetting university theses]
%% toptesi-dottorale.sty,
%% and the English documentation toptesi.pdf.
%%
-%% Furthermore the bundle contains the documentation source
-%% file toptesi-it.tex and the derived file
+%% Furthermore the bundle contains the documentation
+%% source file toptesi-it.tex and the derived file
%% toptesi-it.pdf.
%%
-%% The toptesi-example.tex source file is just an example
-%% that shows how to use the various commands; by commenting
-%% or uncommenting certain source lines it is possible to
-%% typeset different kind of theses and their front pages.
+%% The toptesi-example.tex source file is just an
+%% example that shows how to use the various commands;
+%% by commenting or uncommenting certain source lines
+%% it is possible to typeset different kind of theses
+%% and their front pages.
%%
-%% The topfront-example.tex source file is an example of how
-%% to produce just the title page with TOPtesi and the external
-%% package frontespizio.
+%% The topfront-example.tex source file is an example
+%% of how to produce just the title page with TOPtesi
+%% and the external package frontespizio.
%%
-%% The toptesi-scudo-example.tex source file is an example
-%% that shows the particular features available with TOPtesi,
-%% when a doctoral thesis is produced for the Scuola di
-%% Dottorato (ScuDo) of Politecnico di Torino.
+%% The toptesi-scudo-example.tex source file is an
+%% example that shows the particular features
+%% available with TOPtesi, when a doctoral thesis is
+%% produced for the Scuola di Dottorato (ScuDo) of
+%% Politecnico di Torino.
%%
-%% The toptesi.cfg file is a sample of a local configuration
-%% file that can be copied to another file and its copy freely
+%% The toptesi.cfg file is a sample of a local
+%% configuration file that can be copied to another
+%% file with different name and its copy freely
%% edited and customised.
%%
-%% The other toptesi-*.sty files are extension modules for
-%% typesetting the specific thesis kinds described by the
-%% suffix that replaces the asterisk.
+%% The other toptesi-*.sty files are extension modules
+%% for typesetting the specific thesis kinds described
+%% by the suffix that replaces the asterisk.
%%
-%% By running pdflatex on toptesi.dtx the user gets the class,
-%% sty and cfg files and the English documentation file in
-%% PDF format.
+%% By running pdflatex on toptesi.dtx the user gets
+%% the class, sty and cfg files and the English
+%% documentation file in PDF format.
%%
%% The source file of the Italian documentation file
-%% toptesi-it.pdf is another example of how to use TOPtesi.
-%% This file toptesi-it.tex may be typeset with pdfLaTeX,
-%% XeLaTeX, and LuaLateX; see the first comment lines of
-%% the file for how-to information. In spite of being mainly
-%% written in Italian, it contains several sections in English
-%% for the benefit of foreign students attending the Doctoral
+%% toptesi-it.pdf is another example of how to use
+%% TOPtesi. This file toptesi-it.tex may be typeset
+%% with pdfLaTeX, XeLaTeX, and LuaLateX; see the first
+%% comment lines of the file for how-to information.
+%% In spite of being mainly written in Italian, it
+%% contains several sections in English for the
+%% benefit of foreign students attending the Doctoral
%% School of Turin.
%%
%% End of file `toptesi.cls'.
diff --git a/Master/texmf-dist/tex/latex/toptesi/toptesi.sty b/Master/texmf-dist/tex/latex/toptesi/toptesi.sty
index 479b3bf2a72..48a596129b0 100644
--- a/Master/texmf-dist/tex/latex/toptesi/toptesi.sty
+++ b/Master/texmf-dist/tex/latex/toptesi/toptesi.sty
@@ -7,14 +7,14 @@
%% toptesi.dtx (with options: `topsty')
%% ______________________________________________________
%% The TOPtesi bundle
-%% Copyright (C) 2015-2020 Claudio Beccari
+%% Copyright (C) 1989-2025 Claudio Beccari
%% All rights reserved
%%
%% License information appended
%%
\NeedsTeXFormat{LaTeX2e}[2018/01/01]
\ProvidesPackage{toptesi}[%
-2020-09-06 v.6.4.06
+2025-01-15 v.6.4.07
Extension for toptesi.cls]
@@ -46,11 +46,11 @@ Extension for toptesi.cls]
\newif\ifchapterbibliography \chapterbibliographyfalse
\newif\ifclassica \classicafalse
-\@ifpackageloaded{xkeyval}{}{\RequirePackage{xkeyval}}
-\@ifpackageloaded{scrextend}{}{\RequirePackage{scrextend}}
-\@ifpackageloaded{iftex}{}{\RequirePackage{iftex}}
-\@ifpackageloaded{xspace}{}{\RequirePackage{xspace}}
-\@ifpackageloaded{xparse}{}{\RequirePackage{xparse}}
+\IfPackageLoadedF{xkeyval}{\RequirePackage{xkeyval}}
+\IfPackageLoadedF{scrextend}{\RequirePackage{scrextend}}
+\IfPackageLoadedF{iftex}{\RequirePackage{iftex}}
+\IfPackageLoadedF{xspace}{\RequirePackage{xspace}}
+\IfPackageLoadedF{xparse}{\RequirePackage{xparse}}
\DeclareOptionX{cucitura}[7mm]{\setlength\T@Pbinding{#1}\@bindingtrue}
\DeclareOptionX{corpo}[10pt]{\unless\ifdim#1<\@xivpt\p@\@xivpttrue\fi
@@ -620,7 +620,7 @@ Extension for toptesi.cls]
\edef\@tempD{r@\@tempSD}%
\edef\@tempD{\expandafter\csuse\expandafter{\@tempD}}%
\edef\@tempD{\@tempD}%
- \ifcsdef{ver@hyperref.sty}%
+ \IfPackageLoadedTF{hyperref}%
{%
\edef\@tempD{\noexpand\@secondoffive\@tempD}%
}%
@@ -884,14 +884,15 @@ Skipping any redefinition\MessageBreak}%
}
\let\wittysentences\citazioni \let\endwittysentences\endcitazioni
%%
-%% Copyright 2005-2020 Claudio Beccari
+%% Copyright 2005-2025 Claudio Beccari
%%
-%% Distributable under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
+%% Distributable under the LaTeX Project Public
+%% License, version 1.3c or higher (your choice).
+%% The latest version of this license is at:
+%% http://www.latex-project.org/lppl.txt
%%
-%% For important further details see the English or the Italian
-%% documentation.
+%% For important further details see the English or
+%% the Italian documentation.
%%
%% This work is "author-maintained"
%%
@@ -909,43 +910,47 @@ Skipping any redefinition\MessageBreak}%
%% toptesi-dottorale.sty,
%% and the English documentation toptesi.pdf.
%%
-%% Furthermore the bundle contains the documentation source
-%% file toptesi-it.tex and the derived file
+%% Furthermore the bundle contains the documentation
+%% source file toptesi-it.tex and the derived file
%% toptesi-it.pdf.
%%
-%% The toptesi-example.tex source file is just an example
-%% that shows how to use the various commands; by commenting
-%% or uncommenting certain source lines it is possible to
-%% typeset different kind of theses and their front pages.
+%% The toptesi-example.tex source file is just an
+%% example that shows how to use the various commands;
+%% by commenting or uncommenting certain source lines
+%% it is possible to typeset different kind of theses
+%% and their front pages.
%%
-%% The topfront-example.tex source file is an example of how
-%% to produce just the title page with TOPtesi and the external
-%% package frontespizio.
+%% The topfront-example.tex source file is an example
+%% of how to produce just the title page with TOPtesi
+%% and the external package frontespizio.
%%
-%% The toptesi-scudo-example.tex source file is an example
-%% that shows the particular features available with TOPtesi,
-%% when a doctoral thesis is produced for the Scuola di
-%% Dottorato (ScuDo) of Politecnico di Torino.
+%% The toptesi-scudo-example.tex source file is an
+%% example that shows the particular features
+%% available with TOPtesi, when a doctoral thesis is
+%% produced for the Scuola di Dottorato (ScuDo) of
+%% Politecnico di Torino.
%%
-%% The toptesi.cfg file is a sample of a local configuration
-%% file that can be copied to another file and its copy freely
+%% The toptesi.cfg file is a sample of a local
+%% configuration file that can be copied to another
+%% file with different name and its copy freely
%% edited and customised.
%%
-%% The other toptesi-*.sty files are extension modules for
-%% typesetting the specific thesis kinds described by the
-%% suffix that replaces the asterisk.
+%% The other toptesi-*.sty files are extension modules
+%% for typesetting the specific thesis kinds described
+%% by the suffix that replaces the asterisk.
%%
-%% By running pdflatex on toptesi.dtx the user gets the class,
-%% sty and cfg files and the English documentation file in
-%% PDF format.
+%% By running pdflatex on toptesi.dtx the user gets
+%% the class, sty and cfg files and the English
+%% documentation file in PDF format.
%%
%% The source file of the Italian documentation file
-%% toptesi-it.pdf is another example of how to use TOPtesi.
-%% This file toptesi-it.tex may be typeset with pdfLaTeX,
-%% XeLaTeX, and LuaLateX; see the first comment lines of
-%% the file for how-to information. In spite of being mainly
-%% written in Italian, it contains several sections in English
-%% for the benefit of foreign students attending the Doctoral
+%% toptesi-it.pdf is another example of how to use
+%% TOPtesi. This file toptesi-it.tex may be typeset
+%% with pdfLaTeX, XeLaTeX, and LuaLateX; see the first
+%% comment lines of the file for how-to information.
+%% In spite of being mainly written in Italian, it
+%% contains several sections in English for the
+%% benefit of foreign students attending the Doctoral
%% School of Turin.
%%
%% End of file `toptesi.sty'.
diff --git a/Master/texmf-dist/tex/latex/tracklang/tracklang-scripts.sty b/Master/texmf-dist/tex/latex/tracklang/tracklang-scripts.sty
index 21dd91d115f..47cd4452dcf 100644
--- a/Master/texmf-dist/tex/latex/tracklang/tracklang-scripts.sty
+++ b/Master/texmf-dist/tex/latex/tracklang/tracklang-scripts.sty
@@ -7,7 +7,7 @@
%% tracklang.dtx (with options: `tracklang-scripts.sty,package')
%%
%% tracklang.dtx
-%% Copyright 2022 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -39,7 +39,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tracklang-scripts}[2022/12/13 v1.6.1 (NLCT) Track
+\ProvidesPackage{tracklang-scripts}[2025/01/26 v1.6.4 (NLCT) Track
Language Scripts (LaTeX)]
\RequirePackage{tracklang}
\input{tracklang-scripts}
diff --git a/Master/texmf-dist/tex/latex/tracklang/tracklang.sty b/Master/texmf-dist/tex/latex/tracklang/tracklang.sty
index fdc2c98e038..e68e2ee7bf1 100644
--- a/Master/texmf-dist/tex/latex/tracklang/tracklang.sty
+++ b/Master/texmf-dist/tex/latex/tracklang/tracklang.sty
@@ -7,7 +7,7 @@
%% tracklang.dtx (with options: `tracklang.sty,package')
%%
%% tracklang.dtx
-%% Copyright 2022 Nicola Talbot
+%% Copyright 2025 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -39,176 +39,200 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tracklang}[2022/12/13 v1.6.1 (NLCT) Track Languages]
+\ProvidesPackage{tracklang}[2025/01/26 v1.6.4 (NLCT) Track Languages]
\providecommand*{\@tracklang@declareoption}[1]{%
\DeclareOption{#1}{\TrackPredefinedDialect{#1}}%
}
\input{tracklang}
\let\@tracklang@declaredoptions\@declaredoptions
+\DeclareOption{verbose}{\TrackLangShowVerbosetrue}
+\DeclareOption{noverbose}{\TrackLangShowVerbosefalse}
\ProcessOptions
\let\@tracklang@declareoption\@gobble
\csname @tracklang@prelangpkgcheck@hook\endcsname
\ifx\@tracklang@languages\@empty
- \@ifundefined{bbl@loaded}%
- {%
- \@ifundefined{trans@languages}
+ \ifx\LocaleForEach\undefined
+ \@ifundefined{bbl@loaded}%
{%
- \@ifpackageloaded{ngerman}%
- {%
- \@tracklang@add@ngerman
- }%
- {%
- \@ifpackageloaded{german}%
+ \@ifundefined{trans@languages}
+ {%
+ \@ifpackageloaded{ngerman}%
{%
- \@tracklang@add@german
+ \@tracklang@add@ngerman
}%
{%
- \@ifpackageloaded{polyglossia}
+ \@ifpackageloaded{german}%
+ {%
+ \@tracklang@add@german
+ }%
{%
- \@ifundefined{xpg@bcp@loaded}%
+ \@ifpackageloaded{polyglossia}
{%
- \@ifundefined{xpg@loaded}%
+ \@ifundefined{xpg@bcp@loaded}%
{%
- \PackageInfo{tracklang}{polyglossia loaded but
- \string\xpg@loaded\space not defined. Will attempt
- to track known languages.}%
- \@for\this@language:=\@tracklang@declaredoptions\do{%
- \@ifundefined{\this@language @loaded}%
- {}%
- {\@nameuse{@tracklang@add@\this@language}}%
- }%
- }%
+ \@ifundefined{xpg@loaded}%
{%
- \@for\this@language:=\xpg@loaded\do{%
- \@ifundefined{@tracklang@add@\this@language}%
- {%
- \PackageWarning{tracklang}%
- {Adding unknown polyglossia language `\this@language'}%
- \AddTrackedLanguage{\this@language}%
+ \PackageInfo{tracklang}{polyglossia loaded but
+ \string\xpg@loaded\space not defined. Will attempt
+ to track known languages.}%
+ \@for\this@language:=\@tracklang@declaredoptions\do{%
+ \@ifundefined{\this@language @loaded}%
+ {}%
+ {\@nameuse{@tracklang@add@\this@language}}%
}%
- {\@nameuse{@tracklang@add@\this@language}}%
- }%
- }%
- }%
- {%
- \@for\this@language:=\xpg@bcp@loaded\do{%
- \expandafter\TrackLanguageTag{\this@language}%
- }%
- }%
- \@ifundefined{mainbabelname}{}%
- {%
- \let\@org@tracklang@add@latex\@tracklang@add@latex
- \def\@tracklang@add@latex{%
- \PackageWarning{tracklang}%
- {Can't detect polyglossia main language. It may
- not have been set yet}%
+ }%
+ {%
+ \@for\this@language:=\xpg@loaded\do{%
+ \@ifundefined{@tracklang@add@\this@language}%
+ {%
+ \PackageWarning{tracklang}%
+ {Adding unknown polyglossia language `\this@language'}%
+ \AddTrackedLanguage{\this@language}%
+ }%
+ {\@nameuse{@tracklang@add@\this@language}}%
+ }%
+ }%
}%
- \@ifundefined{@tracklang@add@\mainbabelname}%
{%
- \PackageWarning{tracklang}%
- {Adding unknown polyglossia main babel name `\mainbabelname'}%
- \expandafter\AddTrackedLanguage{\mainbabelname}%
+ \@for\this@language:=\xpg@bcp@loaded\do{%
+ \expandafter\TrackLanguageTag{\this@language}%
+ }%
}%
+ \@ifundefined{mainbabelname}{}%
{%
- \@nameuse{@tracklang@add@\mainbabelname}%
+ \let\@org@tracklang@add@latex\@tracklang@add@latex
+ \def\@tracklang@add@latex{%
+ \PackageWarning{tracklang}%
+ {Can't detect polyglossia main language. It may
+ not have been set yet}%
+ }%
+ \@ifundefined{@tracklang@add@\mainbabelname}%
+ {%
+ \PackageWarning{tracklang}%
+ {Adding unknown polyglossia main babel name `\mainbabelname'}%
+ \expandafter\AddTrackedLanguage{\mainbabelname}%
+ }%
+ {%
+ \@nameuse{@tracklang@add@\mainbabelname}%
+ }%
+ \let\@tracklang@add@latex\@org@tracklang@add@latex
}%
- \let\@tracklang@add@latex\@org@tracklang@add@latex
}%
- }%
- {%
- \@ifpackageloaded{babel}
{%
- \PackageInfo{tracklang}{babel loaded but
- \string\bbl@loaded\space not defined. Will attempt
- to track known languages.}%
- \@for\this@language:=\@tracklang@declaredoptions\do{%
- \@ifundefined{captions\this@language}%
- {}%
- {\@nameuse{@tracklang@add@\this@language}}%
+ \@ifpackageloaded{babel}
+ {%
+ \PackageInfo{tracklang}{babel loaded but
+ \string\bbl@loaded\space not defined. Will attempt
+ to track known languages.}%
+ \@for\this@language:=\@tracklang@declaredoptions\do{%
+ \@ifundefined{captions\this@language}%
+ {}%
+ {\@nameuse{@tracklang@add@\this@language}}%
+ }%
}%
+ {}%
}%
- {}%
}%
}%
- }%
+ }%
+ {%
+ \let\@tracklang@add@Acadian\@tracklang@add@acadian
+ \let\@tracklang@add@French\@tracklang@add@french
+ \let\@tracklang@add@Afrikaans\@tracklang@add@afrikaans
+ \let\@tracklang@add@Dutch\@tracklang@add@dutch
+ \let\@tracklang@add@AmericanEnglish\@tracklang@add@american
+ \let\@tracklang@add@Austrian\@tracklang@add@austrian
+ \@namedef{@tracklang@add@Austrian1997}{\@tracklang@add@naustrian}%
+ \let\@tracklang@add@Bahasa\@tracklang@add@bahasa
+ \let\@tracklang@add@Basque\@tracklang@add@basque
+ \let\@tracklang@add@Brazilian\@tracklang@add@brazil
+ \let\@tracklang@add@Portuguese\@tracklang@add@portuguese
+ \let\@tracklang@add@Breton\@tracklang@add@breton
+ \let\@tracklang@add@BritishEnglish\@tracklang@add@british
+ \let\@tracklang@add@Bulgarian\@tracklang@add@bulgarian
+ \let\@tracklang@add@Canadian\@tracklang@add@canadian
+ \let\@tracklang@add@Canadien\@tracklang@add@canadien
+ \let\@tracklang@add@Catalan\@tracklang@add@catalan
+ \let\@tracklang@add@Croatian\@tracklang@add@croatian
+ \let\@tracklang@add@Czech\@tracklang@add@czech
+ \let\@tracklang@add@Danish\@tracklang@add@danish
+ \let\@tracklang@add@Dutch\@tracklang@add@dutch
+ \let\@tracklang@add@English\@tracklang@add@english
+ \let\@tracklang@add@Esperanto\@tracklang@add@esperanto
+ \let\@tracklang@add@Estonian\@tracklang@add@estonian
+ \let\@tracklang@add@Finnish\@tracklang@add@finnish
+ \let\@tracklang@add@French\@tracklang@add@french
+ \let\@tracklang@add@Galician\@tracklang@add@galician
+ \let\@tracklang@add@German\@tracklang@add@german
+ \@namedef{@tracklang@add@German1997}{\@tracklang@add@ngerman}%
+ \let\@tracklang@add@Greek\@tracklang@add@greek
+ \let\@tracklang@add@Polutoniko\@tracklang@add@polutoniko
+ \let\@tracklang@add@Hebrew\@tracklang@add@hebrew
+ \let\@tracklang@add@Hungarian\@tracklang@add@hungarian
+ \let\@tracklang@add@Icelandic\@tracklang@add@icelandic
+ \let\@tracklang@add@Irish\@tracklang@add@irish
+ \let\@tracklang@add@Italian\@tracklang@add@italian
+ \let\@tracklang@add@Latin\@tracklang@add@latin
+ \let\@tracklang@add@LowerSorbian\@tracklang@add@lowersorbian
+ \let\@tracklang@add@Magyar\@tracklang@add@magyar
+ \let\@tracklang@add@Nynorsk\@tracklang@add@nynorsk
+ \let\@tracklang@add@Norsk\@tracklang@add@norsk
+ \let\@tracklang@add@Polish\@tracklang@add@polish
+ \let\@tracklang@add@Portuguese\@tracklang@add@portuguese
+ \let\@tracklang@add@Romanian\@tracklang@add@romanian
+ \let\@tracklang@add@Russian\@tracklang@add@russian
+ \let\@tracklang@add@Scottish\@tracklang@add@scottish
+ \let\@tracklang@add@Serbian\@tracklang@add@serbian
+ \let\@tracklang@add@Slovak\@tracklang@add@slovak
+ \let\@tracklang@add@Slovene\@tracklang@add@slovene
+ \let\@tracklang@add@Spanish\@tracklang@add@spanish
+ \let\@tracklang@add@Swedish\@tracklang@add@swedish
+ \let\@tracklang@add@Turkish\@tracklang@add@turkish
+ \let\@tracklang@add@Ukrainian\@tracklang@add@ukrainian
+ \let\@tracklang@add@UpperSorbian\@tracklang@add@uppersorbian
+ \let\@tracklang@add@Welsh\@tracklang@add@welsh
+ \@for\this@language:=\trans@languages\do{%
+ \@ifundefined{@tracklang@add@\this@language}{}%
+ {\@nameuse{@tracklang@add@\this@language}}%
+ }%
+ }%
}%
{%
- \let\@tracklang@add@Acadian\@tracklang@add@acadian
- \let\@tracklang@add@French\@tracklang@add@french
- \let\@tracklang@add@Afrikaans\@tracklang@add@afrikaans
- \let\@tracklang@add@Dutch\@tracklang@add@dutch
- \let\@tracklang@add@AmericanEnglish\@tracklang@add@american
- \let\@tracklang@add@Austrian\@tracklang@add@austrian
- \@namedef{@tracklang@add@Austrian1997}{\@tracklang@add@naustrian}
- \let\@tracklang@add@Bahasa\@tracklang@add@bahasa
- \let\@tracklang@add@Basque\@tracklang@add@basque
- \let\@tracklang@add@Brazilian\@tracklang@add@brazil
- \let\@tracklang@add@Portuguese\@tracklang@add@portuguese
- \let\@tracklang@add@Breton\@tracklang@add@breton
- \let\@tracklang@add@BritishEnglish\@tracklang@add@british
- \let\@tracklang@add@Bulgarian\@tracklang@add@bulgarian
- \let\@tracklang@add@Canadian\@tracklang@add@canadian
- \let\@tracklang@add@Canadien\@tracklang@add@canadien
- \let\@tracklang@add@Catalan\@tracklang@add@catalan
- \let\@tracklang@add@Croatian\@tracklang@add@croatian
- \let\@tracklang@add@Czech\@tracklang@add@czech
- \let\@tracklang@add@Danish\@tracklang@add@danish
- \let\@tracklang@add@Dutch\@tracklang@add@dutch
- \let\@tracklang@add@English\@tracklang@add@english
- \let\@tracklang@add@Esperanto\@tracklang@add@esperanto
- \let\@tracklang@add@Estonian\@tracklang@add@estonian
- \let\@tracklang@add@Finnish\@tracklang@add@finnish
- \let\@tracklang@add@French\@tracklang@add@french
- \let\@tracklang@add@Galician\@tracklang@add@galician
- \let\@tracklang@add@German\@tracklang@add@german
- \@namedef{@tracklang@add@German1997}{\@tracklang@add@ngerman}
- \let\@tracklang@add@Greek\@tracklang@add@greek
- \let\@tracklang@add@Polutoniko\@tracklang@add@polutoniko
- \let\@tracklang@add@Hebrew\@tracklang@add@hebrew
- \let\@tracklang@add@Hungarian\@tracklang@add@hungarian
- \let\@tracklang@add@Icelandic\@tracklang@add@icelandic
- \let\@tracklang@add@Irish\@tracklang@add@irish
- \let\@tracklang@add@Italian\@tracklang@add@italian
- \let\@tracklang@add@Latin\@tracklang@add@latin
- \let\@tracklang@add@LowerSorbian\@tracklang@add@lowersorbian
- \let\@tracklang@add@Magyar\@tracklang@add@magyar
- \let\@tracklang@add@Nynorsk\@tracklang@add@nynorsk
- \let\@tracklang@add@Norsk\@tracklang@add@norsk
- \let\@tracklang@add@Polish\@tracklang@add@polish
- \let\@tracklang@add@Portuguese\@tracklang@add@portuguese
- \let\@tracklang@add@Romanian\@tracklang@add@romanian
- \let\@tracklang@add@Russian\@tracklang@add@russian
- \let\@tracklang@add@Scottish\@tracklang@add@scottish
- \let\@tracklang@add@Serbian\@tracklang@add@serbian
- \let\@tracklang@add@Slovak\@tracklang@add@slovak
- \let\@tracklang@add@Slovene\@tracklang@add@slovene
- \let\@tracklang@add@Spanish\@tracklang@add@spanish
- \let\@tracklang@add@Swedish\@tracklang@add@swedish
- \let\@tracklang@add@Turkish\@tracklang@add@turkish
- \let\@tracklang@add@Ukrainian\@tracklang@add@ukrainian
- \let\@tracklang@add@UpperSorbian\@tracklang@add@uppersorbian
- \let\@tracklang@add@Welsh\@tracklang@add@welsh
- \@for\this@language:=\trans@languages\do{%
- \@ifundefined{@tracklang@add@\this@language}{}%
+ \@for\this@language:=\bbl@loaded\do{%
+ \@ifundefined{@tracklang@add@\this@language}%
+ {%
+ \PackageWarning{tracklang}%
+ {Adding unknown babel language `\this@language'}%
+ \AddTrackedLanguage{\this@language}%
+ }%
{\@nameuse{@tracklang@add@\this@language}}%
- }%
+ }%
+ \ifx\captionsserbian\undefined
+ \else
+ \SetTrackedDialectScript{serbian}{Latn}%
+ \fi
}%
- }%
- {%
- \@for\this@language:=\bbl@loaded\do{%
- \@ifundefined{@tracklang@add@\this@language}%
+ \else
+ \LocaleForEach
+ {%
+ \@tracklang@ifundef{@tracklang@add@#1}%
+ {
+ \getlocaleproperty\tracklang@propresult{#1}{identification/tag.bcp47}%
+ \expandafter\TrackLanguageTag\expandafter{\tracklang@propresult}%
+ \edef\@tracklang@tmp{#1}%
+ \ifx\TrackLangLastTrackedDialect\@tracklang@tmp
+ \else
+ \@tracklang@info
+ {Adding mapping `\TrackLangLastTrackedDialect' -> `#1'}%
+ \expandafter\SetTrackedDialectLabelMap\expandafter
+ {\TrackLangLastTrackedDialect}{#1}%
+ \fi
+ }%
{%
- \PackageWarning{tracklang}%
- {Adding unknown babel language `\this@language'}%
- \AddTrackedLanguage{\this@language}%
+ \@nameuse{@tracklang@add@#1}%
}%
- {\@nameuse{@tracklang@add@\this@language}}%
- }%
- \ifx\captionsserbian\undefined
- \else
- \SetTrackedDialectScript{serbian}{Latn}%
- \fi
- }
+ }%
+ \fi
\fi
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/trivialpursuit/TrivialPursuit.sty b/Master/texmf-dist/tex/latex/trivialpursuit/TrivialPursuit.sty
index d8b84111300..9bc0185a91e 100644
--- a/Master/texmf-dist/tex/latex/trivialpursuit/TrivialPursuit.sty
+++ b/Master/texmf-dist/tex/latex/trivialpursuit/TrivialPursuit.sty
@@ -4,7 +4,8 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{TrivialPursuit}[2023/11/26 0.1.1 Present a Trivial Pursuit Board]
+\ProvidesPackage{TrivialPursuit}[2024/10/21 0.1.2 Present a Trivial Pursuit Board]
+% 0.1.2 'Short' version
% 0.1.1 Adding schemes of colors
% 0.1.0 Initial version
@@ -62,7 +63,8 @@
Epaisseur=0.8pt,%
Rotation=0,%
Jokers=true,%
- IconeJoker={\faDice}
+ IconeJoker={\faDice},%
+ VersionCourte=false
}
%====INTERN COMMANDS
@@ -113,17 +115,17 @@
\ifboolKV[TrivPurs]{Couleurs}%
{%
%Couleur du 1er camembert
- \filldraw[{\triv@purs@lstcol[1]}] (PB-47)--(GB-47) arc ({-\triv@purs@anglecases}:{\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-1) arc ({\triv@purs@anglecases}:{-\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (PB-47)--(GB-47) arc ({-\triv@purs@anglecases}:{\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-1) arc ({\triv@purs@anglecases}:{-\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
%Couleur du 2ème
- \filldraw[{\triv@purs@lstcol[2]}] (PB-7)--(GB-7) arc ({7*\triv@purs@anglecases}:{9*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-9) arc ({9*\triv@purs@anglecases}:{7*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (PB-7)--(GB-7) arc ({7*\triv@purs@anglecases}:{9*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-9) arc ({9*\triv@purs@anglecases}:{7*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
%Couleur du 3ème
- \filldraw[{\triv@purs@lstcol[3]}] (PB-15)--(GB-15) arc ({15*\triv@purs@anglecases}:{17*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-17) arc ({17*\triv@purs@anglecases}:{15*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (PB-15)--(GB-15) arc ({15*\triv@purs@anglecases}:{17*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-17) arc ({17*\triv@purs@anglecases}:{15*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
%Couleur du 4ème
- \filldraw[{\triv@purs@lstcol[4]}] (PB-23)--(GB-23) arc ({23*\triv@purs@anglecases}:{25*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-25) arc ({25*\triv@purs@anglecases}:{23*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (PB-23)--(GB-23) arc ({23*\triv@purs@anglecases}:{25*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-25) arc ({25*\triv@purs@anglecases}:{23*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
%Couleur du 5ème
- \filldraw[{\triv@purs@lstcol[5]}] (PB-31)--(GB-31) arc ({31*\triv@purs@anglecases}:{33*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-33) arc ({33*\triv@purs@anglecases}:{31*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (PB-31)--(GB-31) arc ({31*\triv@purs@anglecases}:{33*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-33) arc ({33*\triv@purs@anglecases}:{31*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
%Couleur du 6ème
- \filldraw[{\triv@purs@lstcol[6]}] (PB-39)--(GB-39) arc ({39*\triv@purs@anglecases}:{41*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-41) arc ({41*\triv@purs@anglecases}:{39*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (PB-39)--(GB-39) arc ({39*\triv@purs@anglecases}:{41*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-41) arc ({41*\triv@purs@anglecases}:{39*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
}%
{}%
%si on affiche les icones
@@ -141,7 +143,7 @@
\NewDocumentCommand\RemplirCaseTrivial{ m m m }{%deb + fin + numcouleur
\ifboolKV[TrivPurs]{Couleurs}%
{%
- \filldraw[{\triv@purs@lstcol[#3]}] (PB-#1)--(GB-#1) arc ({#1*\triv@purs@anglecases}:{#2*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-#2) arc ({#2*\triv@purs@anglecases}:{#1*\triv@purs@anglecases}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[#3]}] (PB-#1)--(GB-#1) arc ({#1*\triv@purs@anglecases}:{#2*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-#2) arc ({#2*\triv@purs@anglecases}:{#1*\triv@purs@anglecases}:{\triv@purs@rayonint});
}%
{}%
\ifboolKV[TrivPurs]{Icones}%
@@ -160,7 +162,7 @@
\xdef\tmpcaseap{\xinteval{#2+1}}%
\xintifboolexpr{#2 > 1 'and' #2 < 5}%
{%
- \filldraw[{\triv@purs@lstcol[#3]}] (C-#1-\tmpcase)--(D-#1-\tmpcase)--(D-#1-#2)--(C-#1-#2)--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[#3]}] (C-#1-\tmpcase)--(D-#1-\tmpcase)--(D-#1-#2)--(C-#1-#2)--cycle ;
}%
{}%
\xintifboolexpr{#2 == 5}%
@@ -178,12 +180,12 @@
{%
\xintifboolexpr{#1 == 1}%
{%
- \filldraw[{\triv@purs@lstcol[#3]}] (C-1-1)--(PB-\triv@purs@numcasavant) arc({-\triv@purs@anglecases}:{\triv@purs@anglecases}:{\triv@purs@rayonint}) --(D-1-1)--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[#3]}] (C-1-1)--(PB-\triv@purs@numcasavant) arc({-\triv@purs@anglecases}:{\triv@purs@anglecases}:{\triv@purs@rayonint}) --(D-1-1)--cycle ;
}%
{%
\xdef\tmp@ii{\xinteval{(-1+8*(#1-1))}}%
\xdef\tmp@jj{\xinteval{(\tmp@ii+2)}}%
- \filldraw[{\triv@purs@lstcol[#3]}] (C-#1-1)--(PB-\tmp@ii) arc({\tmp@ii*\triv@purs@anglecases}:{\tmp@jj*\triv@purs@anglecases}:{\triv@purs@rayonint}) --(D-#1-1)--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[#3]}] (C-#1-1)--(PB-\tmp@ii) arc({\tmp@ii*\triv@purs@anglecases}:{\tmp@jj*\triv@purs@anglecases}:{\triv@purs@rayonint}) --(D-#1-1)--cycle ;
}%
}%
{}%
@@ -398,6 +400,361 @@
\end{scope}
}
+%courte
+\NewDocumentCommand\CreationNoeudsTrivialCourt{}{%OK !!!!!!!!!!!!!!
+ %création des nœuds grand bord petit bord GB-i (et PB-i)
+ \coordinate (GB-1) at ({7.5}:{\triv@purs@rayon}) ;
+ \coordinate (PB-1) at ({7.5}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-2) at ({7.5+9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-2) at ({7.5+9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-3) at ({7.5+2*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-3) at ({7.5+2*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-4) at ({7.5+3*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-4) at ({7.5+3*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-5) at ({7.5+4*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-5) at ({7.5+4*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-6) at ({7.5+5*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-6) at ({7.5+5*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-7) at ({67.5}:{\triv@purs@rayon}) ;
+ \coordinate (PB-7) at ({67.5}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-8) at ({67.5+9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-8) at ({67.5+9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-9) at ({67.5+2*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-9) at ({67.5+2*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-10) at ({67.5+3*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-10) at ({67.5+3*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-11) at ({67.5+4*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-11) at ({67.5+4*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-12) at ({67.5+5*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-12) at ({67.5+5*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-13) at ({127.5}:{\triv@purs@rayon}) ;
+ \coordinate (PB-13) at ({127.5}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-14) at ({127.5+9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-14) at ({127.5+9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-15) at ({127.5+2*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-15) at ({127.5+2*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-16) at ({127.5+3*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-16) at ({127.5+3*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-17) at ({127.5+4*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-17) at ({127.5+4*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-18) at ({127.5+5*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-18) at ({127.5+5*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-19) at ({187.5}:{\triv@purs@rayon}) ;
+ \coordinate (PB-19) at ({187.5}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-20) at ({187.5+9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-20) at ({187.5+9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-21) at ({187.5+2*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-21) at ({187.5+2*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-22) at ({187.5+3*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-22) at ({187.5+3*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-23) at ({187.5+4*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-23) at ({187.5+4*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-24) at ({187.5+5*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-24) at ({187.5+5*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-25) at ({247.5}:{\triv@purs@rayon}) ;
+ \coordinate (PB-25) at ({247.5}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-26) at ({247.5+9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-26) at ({247.5+9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-27) at ({247.5+2*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-27) at ({247.5+2*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-28) at ({247.5+3*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-28) at ({247.5+3*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-29) at ({247.5+4*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-29) at ({247.5+4*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-30) at ({247.5+5*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-30) at ({247.5+5*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-31) at ({307.5}:{\triv@purs@rayon}) ;
+ \coordinate (PB-31) at ({307.5}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-32) at ({307.5+9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-32) at ({307.5+9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-33) at ({307.5+2*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-33) at ({307.5+2*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-34) at ({307.5+3*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-34) at ({307.5+3*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-35) at ({307.5+4*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-35) at ({307.5+4*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-36) at ({307.5+5*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-36) at ({307.5+5*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ %tests ?!?!
+% \foreach \i in {1,...,36}{%OK
+% \filldraw[teal] (GB-\i) circle[radius=1.75pt] node[font=\tiny\ttfamily] {GB-\i};
+% \filldraw[purple] (PB-\i) circle[radius=1.75pt] node[font=\tiny\ttfamily] {PB-\i};
+% }
+ %création des nœuds pour la figure centrale, boucle pour les 1ers + le dernier
+ \foreach \i in {1,...,\triv@purs@nbcat}{%
+ \coordinate (OM-\i) at ({30+(\i-1)*60}:{\triv@purs@rayonhexag}) ;
+ %\filldraw[orange] (OM-\i) circle[radius=1.75pt] node[font=\tiny\ttfamily] {OM-\i};
+ }%
+ %les nœuds des cases verticales
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-1-\j) at ($(PB-1)!\tmp@coeff!(OM-1)$) ;
+ %\filldraw[yellow] (D-1-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-1-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-2-\j) at ($(PB-6)!\tmp@coeff!(OM-1)$) ;
+ %\filldraw[yellow] (D-2-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-2-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-3-\j) at ($(PB-7)!\tmp@coeff!(OM-2)$) ;
+ %\filldraw[yellow] (D-3-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-3-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-4-\j) at ($(PB-12)!\tmp@coeff!(OM-2)$) ;
+ %\filldraw[yellow] (D-4-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-4-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-5-\j) at ($(PB-13)!\tmp@coeff!(OM-3)$) ;
+ %\filldraw[yellow] (D-5-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-5-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-6-\j) at ($(PB-18)!\tmp@coeff!(OM-3)$) ;
+ %\filldraw[yellow] (D-6-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-5-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-7-\j) at ($(PB-19)!\tmp@coeff!(OM-4)$) ;
+ %\filldraw[yellow] (D-7-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-7-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-8-\j) at ($(PB-24)!\tmp@coeff!(OM-4)$) ;
+ %\filldraw[yellow] (D-8-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-8-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-9-\j) at ($(PB-25)!\tmp@coeff!(OM-5)$) ;
+ %\filldraw[yellow] (D-9-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-9-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-10-\j) at ($(PB-30)!\tmp@coeff!(OM-5)$) ;
+ %\filldraw[yellow] (D-10-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-10-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-11-\j) at ($(PB-31)!\tmp@coeff!(OM-6)$) ;
+ %\filldraw[yellow] (D-11-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-11-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-12-\j) at ($(PB-36)!\tmp@coeff!(OM-6)$) ;
+ %\filldraw[yellow] (D-12-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-12-\j};
+ }%
+}
+
+\NewDocumentCommand\RemplirCasesTourCourt{}{%
+ %-------Vertical
+ %niveau 1 vertical
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (OM-6)--(OM-1)--(D-1-4)--(D-12-4)--cycle ;
+ \node[rotate={90},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(OM-6)!0.5!(D-1-4)$) {\triv@purs@lsticons[2]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (D-12-4)--(D-1-4)--(D-1-3)--(D-12-3)--cycle ;
+ \node[rotate={90},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-12-4)!0.5!(D-1-3)$) {\triv@purs@lsticons[6]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (D-12-3)--(D-1-3)--(D-1-2)--(D-12-2)--cycle ;
+ \node[rotate={90},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-12-3)!0.5!(D-1-2)$) {\triv@purs@lsticons[5]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (D-12-2)--(D-1-2)--(D-1-1)--(D-12-1)--cycle ;
+ \node[rotate={90},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-12-2)!0.5!(D-1-1)$) {\triv@purs@lsticons[3]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (D-1-1)--(PB-1) arc({\triv@purs@anglecases}:{-\triv@purs@anglecases}:{\triv@purs@rayonint}) --(D-12-1)--cycle ;
+ \node[rotate={90},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-12-1)!0.5!(PB-1)$) {\triv@purs@lsticons[4]} ;
+ %niveau 2 vertical
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (OM-1)--(OM-2)--(D-3-4)--(D-2-4)--cycle ;
+ \node[rotate={90+(8)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(OM-1)!0.5!(D-3-4)$) {\triv@purs@lsticons[3]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (D-2-4)--(D-3-4)--(D-3-3)--(D-2-3)--cycle ;
+ \node[rotate={90+(8)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-2-4)!0.5!(D-3-3)$) {\triv@purs@lsticons[1]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (D-2-3)--(D-3-3)--(D-3-2)--(D-2-2)--cycle ;
+ \node[rotate={90+(8)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-2-3)!0.5!(D-3-2)$) {\triv@purs@lsticons[6]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (D-2-2)--(D-3-2)--(D-3-1)--(D-2-1)--cycle ;
+ \node[rotate={90+(8)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-2-2)!0.5!(D-3-1)$) {\triv@purs@lsticons[4]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (D-3-1)--(PB-7) arc({67.5}:{52.5}:{\triv@purs@rayonint}) --(D-2-1)--cycle ;
+ \node[rotate={90+(8)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-2-1)!0.5!(PB-7)$) {\triv@purs@lsticons[5]} ;
+ %niveau 3 vertical
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (OM-2)--(OM-3)--(D-5-4)--(D-4-4)--cycle ;
+ \node[rotate={90+(16)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(OM-2)!0.5!(D-5-4)$) {\triv@purs@lsticons[4]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (D-4-4)--(D-5-4)--(D-5-3)--(D-4-3)--cycle ;
+ \node[rotate={90+(16)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-4-4)!0.5!(D-5-3)$) {\triv@purs@lsticons[2]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (D-4-3)--(D-5-3)--(D-5-2)--(D-4-2)--cycle ;
+ \node[rotate={90+(16)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-4-3)!0.5!(D-5-2)$) {\triv@purs@lsticons[1]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (D-4-2)--(D-5-2)--(D-5-1)--(D-4-1)--cycle ;
+ \node[rotate={90+(16)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-4-2)!0.5!(D-5-1)$) {\triv@purs@lsticons[5]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (D-5-1)--(PB-13) arc({127.5}:{112.5}:{\triv@purs@rayonint}) --(D-4-1)--cycle ;
+ \node[rotate={90+(16)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-4-1)!0.5!(PB-13)$) {\triv@purs@lsticons[6]} ;
+ %niveau 4 vertical
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (OM-3)--(OM-4)--(D-7-4)--(D-6-4)--cycle ;
+ \node[rotate={90+(24)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(OM-3)!0.5!(D-7-4)$) {\triv@purs@lsticons[5]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (D-6-4)--(D-7-4)--(D-7-3)--(D-6-3)--cycle ;
+ \node[rotate={90+(24)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-6-4)!0.5!(D-7-3)$) {\triv@purs@lsticons[3]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (D-6-3)--(D-7-3)--(D-7-2)--(D-6-2)--cycle ;
+ \node[rotate={90+(24)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-6-3)!0.5!(D-7-2)$) {\triv@purs@lsticons[2]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (D-6-2)--(D-7-2)--(D-7-1)--(D-6-1)--cycle ;
+ \node[rotate={90+(24)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-6-2)!0.5!(D-7-1)$) {\triv@purs@lsticons[6]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (D-7-1)--(PB-19) arc({187.5}:{172.5}:{\triv@purs@rayonint}) --(D-6-1)--cycle ;
+ \node[rotate={90+(24)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-6-1)!0.5!(PB-19)$) {\triv@purs@lsticons[1]} ;
+ %niveau 5 vertical
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (OM-4)--(OM-5)--(D-9-4)--(D-8-4)--cycle ;
+ \node[rotate={90+(32)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(OM-4)!0.5!(D-9-4)$) {\triv@purs@lsticons[6]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (D-8-4)--(D-9-4)--(D-9-3)--(D-8-3)--cycle ;
+ \node[rotate={90+(32)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-8-4)!0.5!(D-9-3)$) {\triv@purs@lsticons[4]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (D-8-3)--(D-9-3)--(D-9-2)--(D-8-2)--cycle ;
+ \node[rotate={90+(32)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-8-3)!0.5!(D-9-2)$) {\triv@purs@lsticons[3]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (D-8-2)--(D-9-2)--(D-9-1)--(D-8-1)--cycle ;
+ \node[rotate={90+(32)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-8-2)!0.5!(D-9-1)$) {\triv@purs@lsticons[1]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (D-9-1)--(PB-25) arc({247.5}:{232.5}:{\triv@purs@rayonint}) --(D-8-1)--cycle ;
+ \node[rotate={90+(32)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-8-1)!0.5!(PB-25)$) {\triv@purs@lsticons[2]} ;
+ %niveau 6 vertical
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (OM-5)--(OM-6)--(D-11-4)--(D-10-4)--cycle ;
+ \node[rotate={90+(40)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(OM-5)!0.5!(D-11-4)$) {\triv@purs@lsticons[1]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (D-10-4)--(D-11-4)--(D-11-3)--(D-10-3)--cycle ;
+ \node[rotate={90+(40)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-10-4)!0.5!(D-11-3)$) {\triv@purs@lsticons[5]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (D-10-3)--(D-11-3)--(D-11-2)--(D-10-2)--cycle ;
+ \node[rotate={90+(40)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-10-3)!0.5!(D-11-2)$) {\triv@purs@lsticons[4]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (D-10-2)--(D-11-2)--(D-11-1)--(D-10-1)--cycle ;
+ \node[rotate={90+(40)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-10-2)!0.5!(D-11-1)$) {\triv@purs@lsticons[2]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (D-11-1)--(PB-31) arc({307.5}:{292.5}:{\triv@purs@rayonint}) --(D-10-1)--cycle ;
+ \node[rotate={90+(40)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-10-1)!0.5!(PB-31)$) {\triv@purs@lsticons[3]} ;
+ %--------BORDS !!!
+ \ifboolKV[TrivPurs]{Couleurs}%
+ {%
+ %Secteur1
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (PB-1)--(GB-1) arc ({7.5+0*9}:{7.5+1*9}:{\triv@purs@rayon})--(PB-2) arc ({7.5+1*9}:{7.5+0*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (PB-2)--(GB-2) arc ({7.5+1*9}:{7.5+2*9}:{\triv@purs@rayon})--(PB-3) arc ({7.5+2*9}:{7.5+1*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (PB-4)--(GB-4) arc ({7.5+3*9}:{7.5+4*9}:{\triv@purs@rayon})--(PB-5) arc ({7.5+4*9}:{7.5+3*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (PB-5)--(GB-5) arc ({7.5+4*9}:{7.5+5*9}:{\triv@purs@rayon})--(PB-6) arc ({7.5+5*9}:{7.5+4*9}:{\triv@purs@rayonint});
+ %Secteur2
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (PB-7)--(GB-7) arc ({7.5+60+0*9}:{7.5+60+1*9}:{\triv@purs@rayon})--(PB-8) arc ({7.5+60+1*9}:{7.5+60+0*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (PB-8)--(GB-8) arc ({7.5+60+1*9}:{7.5+60+2*9}:{\triv@purs@rayon})--(PB-9) arc ({7.5+60+2*9}:{7.5+60+1*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (PB-10)--(GB-10) arc ({7.5+60+3*9}:{7.5+60+4*9}:{\triv@purs@rayon})--(PB-11) arc ({7.5+60+4*9}:{7.5+60+3*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (PB-11)--(GB-11) arc ({7.5+60+4*9}:{7.5+60+5*9}:{\triv@purs@rayon})--(PB-12) arc ({7.5+60+5*9}:{7.5+60+4*9}:{\triv@purs@rayonint});
+ %Secteur3
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (PB-13)--(GB-13) arc ({7.5+120+0*9}:{7.5+120+1*9}:{\triv@purs@rayon})--(PB-14) arc ({7.5+120+1*9}:{7.5+120+0*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (PB-14)--(GB-14) arc ({7.5+120+1*9}:{7.5+120+2*9}:{\triv@purs@rayon})--(PB-15) arc ({7.5+120+2*9}:{7.5+120+1*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (PB-16)--(GB-16) arc ({7.5+120+3*9}:{7.5+120+4*9}:{\triv@purs@rayon})--(PB-17) arc ({7.5+120+4*9}:{7.5+120+3*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (PB-17)--(GB-17) arc ({7.5+120+4*9}:{7.5+120+5*9}:{\triv@purs@rayon})--(PB-18) arc ({7.5+120+5*9}:{7.5+120+4*9}:{\triv@purs@rayonint});
+ %Secteur4
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (PB-19)--(GB-19) arc ({7.5+180+0*9}:{7.5+180+1*9}:{\triv@purs@rayon})--(PB-20) arc ({7.5+180+1*9}:{7.5+180+0*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (PB-20)--(GB-20) arc ({7.5+180+1*9}:{7.5+180+2*9}:{\triv@purs@rayon})--(PB-21) arc ({7.5+180+2*9}:{7.5+180+1*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (PB-22)--(GB-22) arc ({7.5+180+3*9}:{7.5+180+4*9}:{\triv@purs@rayon})--(PB-23) arc ({7.5+180+4*9}:{7.5+180+3*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (PB-23)--(GB-23) arc ({7.5+180+4*9}:{7.5+180+5*9}:{\triv@purs@rayon})--(PB-24) arc ({7.5+180+5*9}:{7.5+180+4*9}:{\triv@purs@rayonint});
+ %Secteur5
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (PB-25)--(GB-25) arc ({7.5+240+0*9}:{7.5+240+1*9}:{\triv@purs@rayon})--(PB-26) arc ({7.5+240+1*9}:{7.5+240+0*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (PB-26)--(GB-26) arc ({7.5+240+1*9}:{7.5+240+2*9}:{\triv@purs@rayon})--(PB-27) arc ({7.5+240+2*9}:{7.5+240+1*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (PB-28)--(GB-28) arc ({7.5+240+3*9}:{7.5+240+4*9}:{\triv@purs@rayon})--(PB-29) arc ({7.5+240+4*9}:{7.5+240+3*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (PB-29)--(GB-29) arc ({7.5+240+4*9}:{7.5+240+5*9}:{\triv@purs@rayon})--(PB-30) arc ({7.5+240+5*9}:{7.5+240+4*9}:{\triv@purs@rayonint});
+ %Secteur6
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (PB-31)--(GB-31) arc ({7.5+300+0*9}:{7.5+300+1*9}:{\triv@purs@rayon})--(PB-32) arc ({7.5+300+1*9}:{7.5+300+0*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (PB-32)--(GB-32) arc ({7.5+300+1*9}:{7.5+300+2*9}:{\triv@purs@rayon})--(PB-33) arc ({7.5+300+2*9}:{7.5+300+1*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (PB-34)--(GB-34) arc ({7.5+300+3*9}:{7.5+300+4*9}:{\triv@purs@rayon})--(PB-35) arc ({7.5+300+4*9}:{7.5+300+3*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (PB-35)--(GB-35) arc ({7.5+300+4*9}:{7.5+300+5*9}:{\triv@purs@rayon})--(PB-36) arc ({7.5+300+5*9}:{7.5+300+4*9}:{\triv@purs@rayonint});
+ }%
+ {}%
+ \ifboolKV[TrivPurs]{Icones}%
+ {%
+ %secteur1
+ \node[rotate={90+0.5*(7.5+0*9+7.5+1*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(7.5+7.5+1*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[4]} ;
+ \node[rotate={90+0.5*(7.5+1*9+7.5+2*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(7.5+1*9+7.5+2*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[3]} ;
+ \node[rotate={90+0.5*(7.5+3*9+7.5+4*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(7.5+3*9+7.5+4*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[6]} ;
+ \node[rotate={90+0.5*(7.5+5*9+7.5+5*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(7.5+4*9+7.5+5*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[5]} ;
+ %secteur2
+ \node[rotate={90+0.5*(2*60+7.5+0*9+7.5+1*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*60+7.5+7.5+1*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[5]} ;
+ \node[rotate={90+0.5*(2*60+7.5+1*9+7.5+2*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*60+7.5+1*9+7.5+2*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[4]} ;
+ \node[rotate={90+0.5*(2*60+7.5+3*9+7.5+4*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*60+7.5+3*9+7.5+4*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[1]} ;
+ \node[rotate={90+0.5*(2*60+7.5+5*9+7.5+5*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*60+7.5+4*9+7.5+5*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[6]} ;
+ %secteur3
+ \node[rotate={90+0.5*(2*120+7.5+0*9+7.5+1*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*120+7.5+7.5+1*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[6]} ;
+ \node[rotate={90+0.5*(2*120+7.5+1*9+7.5+2*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*120+7.5+1*9+7.5+2*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[5]} ;
+ \node[rotate={90+0.5*(2*120+7.5+3*9+7.5+4*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*120+7.5+3*9+7.5+4*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[2]} ;
+ \node[rotate={90+0.5*(2*120+7.5+5*9+7.5+5*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*120+7.5+4*9+7.5+5*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[1]} ;
+ %secteur4
+ \node[rotate={90+0.5*(2*180+7.5+0*9+7.5+1*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*180+7.5+7.5+1*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[1]} ;
+ \node[rotate={90+0.5*(2*180+7.5+1*9+7.5+2*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*180+7.5+1*9+7.5+2*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[6]} ;
+ \node[rotate={90+0.5*(2*180+7.5+3*9+7.5+4*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*180+7.5+3*9+7.5+4*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[3]} ;
+ \node[rotate={90+0.5*(2*180+7.5+5*9+7.5+5*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*180+7.5+4*9+7.5+5*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[2]} ;
+ %secteur5
+ \node[rotate={90+0.5*(2*240+7.5+0*9+7.5+1*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*240+7.5+7.5+1*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[2]} ;
+ \node[rotate={90+0.5*(2*240+7.5+1*9+7.5+2*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*240+7.5+1*9+7.5+2*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[1]} ;
+ \node[rotate={90+0.5*(2*240+7.5+3*9+7.5+4*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*240+7.5+3*9+7.5+4*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[4]} ;
+ \node[rotate={90+0.5*(2*240+7.5+5*9+7.5+5*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*240+7.5+4*9+7.5+5*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[3]} ;
+ %secteur6
+ \node[rotate={90+0.5*(2*300+7.5+0*9+7.5+1*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*300+7.5+7.5+1*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[3]} ;
+ \node[rotate={90+0.5*(2*300+7.5+1*9+7.5+2*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*300+7.5+1*9+7.5+2*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[2]} ;
+ \node[rotate={90+0.5*(2*300+7.5+3*9+7.5+4*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*300+7.5+3*9+7.5+4*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[5]} ;
+ \node[rotate={90+0.5*(2*300+7.5+5*9+7.5+5*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*300+7.5+4*9+7.5+5*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[4]} ;
+ }%
+ {}%
+
+ %les jokers
+ \ifboolKV[TrivPurs]{Icones}%
+ {%
+ \ifboolKV[TrivPurs]{Jokers}%
+ {%
+ \node[rotate=30,scale={\triv@purs@scaleicons*\triv@purs@hautcases}] at ({30}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@iconjok} ;
+ \node[rotate=90,scale={\triv@purs@scaleicons*\triv@purs@hautcases}] at ({90}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@iconjok} ;
+ \node[rotate=150,scale={\triv@purs@scaleicons*\triv@purs@hautcases}] at ({150}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@iconjok} ;
+ \node[rotate=210,scale={\triv@purs@scaleicons*\triv@purs@hautcases}] at ({210}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@iconjok} ;
+ \node[rotate=270,scale={\triv@purs@scaleicons*\triv@purs@hautcases}] at ({270}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@iconjok} ;
+ \node[rotate=330,scale={\triv@purs@scaleicons*\triv@purs@hautcases}] at ({330}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@iconjok} ;
+ }%
+ {}%
+ }%
+ {}%
+}
+\NewDocumentCommand\TraceBorduresTrivialCourt{ }{%OK Court
+ %les tracés des cases
+ \draw[EpTraits] (0,0) circle[radius=\triv@purs@rayon] ;
+ \draw[EpTraits] (0,0) circle[radius={\triv@purs@rayon-\triv@purs@hautcases}] ;
+ \foreach \i in {1,...,36}{%
+ \draw[EpTraits] (PB-\i)--(GB-\i) ;
+ }
+ \draw[EpTraits] (PB-1)--(OM-1)--(OM-6)--(PB-36) ;
+ \draw[EpTraits] (PB-6)--(OM-1)--(OM-2)--(PB-7) ;
+ \draw[EpTraits] (PB-12)--(OM-2)--(OM-3)--(PB-13) ;
+ \draw[EpTraits] (PB-18)--(OM-3)--(OM-4)--(PB-19) ;
+ \draw[EpTraits] (PB-24)--(OM-4)--(OM-5)--(PB-25) ;
+ \draw[EpTraits] (PB-30)--(OM-5)--(OM-6)--(PB-31) ;
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \draw[EpTraits] (D-2-\j)--(D-3-\j) ;
+ \draw[EpTraits] (D-4-\j)--(D-5-\j) ;
+ \draw[EpTraits] (D-6-\j)--(D-7-\j) ;
+ \draw[EpTraits] (D-8-\j)--(D-9-\j) ;
+ \draw[EpTraits] (D-10-\j)--(D-11-\j) ;
+ \draw[EpTraits] (D-12-\j)--(D-1-\j) ;
+ }%
+}
+
+\NewDocumentCommand\RemplirCamembertsTrivialCourt{ }{%numéro des camemberts, en partant de la droite
+ \ifboolKV[TrivPurs]{Couleurs}%
+ {%
+ %Couleur du 1er camembert
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (PB-36)--(GB-36) arc ({-\triv@purs@anglecases}:{\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-1) arc ({\triv@purs@anglecases}:{-\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ %Couleur du 2ème
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (PB-6)--(GB-6) arc ({7*\triv@purs@anglecases}:{9*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-7) arc ({9*\triv@purs@anglecases}:{7*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ %Couleur du 3ème
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (PB-12)--(GB-12) arc ({15*\triv@purs@anglecases}:{17*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-13) arc ({17*\triv@purs@anglecases}:{15*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ %Couleur du 4ème
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (PB-18)--(GB-18) arc ({23*\triv@purs@anglecases}:{25*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-19) arc ({25*\triv@purs@anglecases}:{23*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ %Couleur du 5ème
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (PB-24)--(GB-24) arc ({31*\triv@purs@anglecases}:{33*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-25) arc ({33*\triv@purs@anglecases}:{31*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ %Couleur du 6ème
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (PB-30)--(GB-30) arc ({39*\triv@purs@anglecases}:{41*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-31) arc ({41*\triv@purs@anglecases}:{39*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ }%
+ {}%
+ %si on affiche les icones
+ \ifboolKV[TrivPurs]{Icones}%
+ {%
+ \node[rotate={90+0*\triv@purs@anglecases},scale={1.5*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[1]} ;
+ \node[rotate={90+8*\triv@purs@anglecases},scale={1.5*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({8*\triv@purs@anglecases}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[2]} ;
+ \node[rotate={90+16*\triv@purs@anglecases},scale={1.5*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({16*\triv@purs@anglecases}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[3]} ;
+ \node[rotate={90+24*\triv@purs@anglecases},scale={1.5*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({24*\triv@purs@anglecases}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[4]} ;
+ \node[rotate={90+32*\triv@purs@anglecases},scale={1.5*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({32*\triv@purs@anglecases}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[5]} ;
+ \node[rotate={90+40*\triv@purs@anglecases},scale={1.5*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({40*\triv@purs@anglecases}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[6]} ;
+ }%
+ {}%
+}
+
%====CREATION
\NewDocumentCommand\PlateauTrivialPursuit{ O{} D<>{} }{%
\restoreKV[TrivPurs]% revenir au valeurs par défaut
@@ -433,18 +790,35 @@
\useasboundingbox (0,0) circle[radius={\triv@purs@rayon}] ;
%création
\begin{scope}[rotate=\triv@purs@rotate]
- %les nœuds OK
- \CreationNoeudsTrivial
- %test avec centre OK
- \ifboolKV[TrivPurs]{Centre}{\RemplirCentreTrivial}{}
- %camemberts OK
- \RemplirCamembertsTrivial
- %cases OK
- \RemplirCasesTour
- %bordures
- \TraceBorduresTrivial
- %logo central
- \ifboolKV[TrivPurs]{Logo}{\LogoTrivialPursuit}{}
+ \ifboolKV[TrivPurs]{VersionCourte}%
+ {%
+ %les nœuds OK
+ \CreationNoeudsTrivialCourt
+ %test avec centre OK
+ \ifboolKV[TrivPurs]{Centre}{\RemplirCentreTrivial}{}
+ %camemberts OK
+ \RemplirCamembertsTrivialCourt
+ %cases OK
+ \RemplirCasesTourCourt
+ %bordures
+ \TraceBorduresTrivialCourt
+ %logo central
+ \ifboolKV[TrivPurs]{Logo}{\LogoTrivialPursuit}{}
+ }%
+ {%
+ %les nœuds OK
+ \CreationNoeudsTrivial
+ %test avec centre OK
+ \ifboolKV[TrivPurs]{Centre}{\RemplirCentreTrivial}{}
+ %camemberts OK
+ \RemplirCamembertsTrivial
+ %cases OK
+ \RemplirCasesTour
+ %bordures
+ \TraceBorduresTrivial
+ %logo central
+ \ifboolKV[TrivPurs]{Logo}{\LogoTrivialPursuit}{}
+ }%
\end{scope}
\end{tikzpicture}%
}
@@ -477,7 +851,8 @@
Thickness=0.8pt,%
Rotation=0,%
Jokers=true,%
- IconJoker={\faDice}
+ IconJoker={\faDice},%
+ ShortVersion=false
}
%====INTERN COMMANDS
@@ -528,17 +903,17 @@
\ifboolKV[TrivPursEN]{Colors}%
{%
%Couleur du 1er camembert
- \filldraw[{\triv@purs@lstcol[1]}] (PB-47)--(GB-47) arc ({-\triv@purs@anglecases}:{\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-1) arc ({\triv@purs@anglecases}:{-\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (PB-47)--(GB-47) arc ({-\triv@purs@anglecases}:{\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-1) arc ({\triv@purs@anglecases}:{-\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
%Couleur du 2ème
- \filldraw[{\triv@purs@lstcol[2]}] (PB-7)--(GB-7) arc ({7*\triv@purs@anglecases}:{9*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-9) arc ({9*\triv@purs@anglecases}:{7*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (PB-7)--(GB-7) arc ({7*\triv@purs@anglecases}:{9*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-9) arc ({9*\triv@purs@anglecases}:{7*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
%Couleur du 3ème
- \filldraw[{\triv@purs@lstcol[3]}] (PB-15)--(GB-15) arc ({15*\triv@purs@anglecases}:{17*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-17) arc ({17*\triv@purs@anglecases}:{15*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (PB-15)--(GB-15) arc ({15*\triv@purs@anglecases}:{17*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-17) arc ({17*\triv@purs@anglecases}:{15*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
%Couleur du 4ème
- \filldraw[{\triv@purs@lstcol[4]}] (PB-23)--(GB-23) arc ({23*\triv@purs@anglecases}:{25*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-25) arc ({25*\triv@purs@anglecases}:{23*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (PB-23)--(GB-23) arc ({23*\triv@purs@anglecases}:{25*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-25) arc ({25*\triv@purs@anglecases}:{23*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
%Couleur du 5ème
- \filldraw[{\triv@purs@lstcol[5]}] (PB-31)--(GB-31) arc ({31*\triv@purs@anglecases}:{33*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-33) arc ({33*\triv@purs@anglecases}:{31*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (PB-31)--(GB-31) arc ({31*\triv@purs@anglecases}:{33*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-33) arc ({33*\triv@purs@anglecases}:{31*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
%Couleur du 6ème
- \filldraw[{\triv@purs@lstcol[6]}] (PB-39)--(GB-39) arc ({39*\triv@purs@anglecases}:{41*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-41) arc ({41*\triv@purs@anglecases}:{39*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (PB-39)--(GB-39) arc ({39*\triv@purs@anglecases}:{41*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-41) arc ({41*\triv@purs@anglecases}:{39*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
}%
{}%
%si on affiche les icones
@@ -556,7 +931,7 @@
\NewDocumentCommand\FillCellTrivial{ m m m }{%deb + fin + numcouleur
\ifboolKV[TrivPursEN]{Colors}%
{%
- \filldraw[{\triv@purs@lstcol[#3]}] (PB-#1)--(GB-#1) arc ({#1*\triv@purs@anglecases}:{#2*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-#2) arc ({#2*\triv@purs@anglecases}:{#1*\triv@purs@anglecases}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[#3]}] (PB-#1)--(GB-#1) arc ({#1*\triv@purs@anglecases}:{#2*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-#2) arc ({#2*\triv@purs@anglecases}:{#1*\triv@purs@anglecases}:{\triv@purs@rayonint});
}%
{}%
\ifboolKV[TrivPursEN]{Icons}%
@@ -575,17 +950,17 @@
\xdef\tmpcaseap{\xinteval{#2+1}}%
\xintifboolexpr{#2 > 1 'and' #2 < 5}%
{%
- \filldraw[{\triv@purs@lstcol[#3]}] (C-#1-\tmpcase)--(D-#1-\tmpcase)--(D-#1-#2)--(C-#1-#2)--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[#3]}] (C-#1-\tmpcase)--(D-#1-\tmpcase)--(D-#1-#2)--(C-#1-#2)--cycle ;
}%
{}%
\xintifboolexpr{#2 == 5}%
{%
\xintifboolexpr{#1 == 1}%
{%
- \filldraw[{\triv@purs@lstcol[#3]}] (C-#1-\tmpcase)--(D-#1-\tmpcase)--(OM-#1)--(OM-6)--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[#3]}] (C-#1-\tmpcase)--(D-#1-\tmpcase)--(OM-#1)--(OM-6)--cycle ;
}%
{%
- \filldraw[{\triv@purs@lstcol[#3]}] (C-#1-\tmpcase)--(D-#1-\tmpcase)--(OM-#1)--(OM-\tmpnivav)--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[#3]}] (C-#1-\tmpcase)--(D-#1-\tmpcase)--(OM-#1)--(OM-\tmpnivav)--cycle ;
}%
}%
{}%
@@ -593,12 +968,12 @@
{%
\xintifboolexpr{#1 == 1}%
{%
- \filldraw[{\triv@purs@lstcol[#3]}] (C-1-1)--(PB-\triv@purs@numcasavant) arc({-\triv@purs@anglecases}:{\triv@purs@anglecases}:{\triv@purs@rayonint}) --(D-1-1)--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[#3]}] (C-1-1)--(PB-\triv@purs@numcasavant) arc({-\triv@purs@anglecases}:{\triv@purs@anglecases}:{\triv@purs@rayonint}) --(D-1-1)--cycle ;
}%
{%
\xdef\tmp@ii{\xinteval{(-1+8*(#1-1))}}%
\xdef\tmp@jj{\xinteval{(\tmp@ii+2)}}%
- \filldraw[{\triv@purs@lstcol[#3]}] (C-#1-1)--(PB-\tmp@ii) arc({\tmp@ii*\triv@purs@anglecases}:{\tmp@jj*\triv@purs@anglecases}:{\triv@purs@rayonint}) --(D-#1-1)--cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[#3]}] (C-#1-1)--(PB-\tmp@ii) arc({\tmp@ii*\triv@purs@anglecases}:{\tmp@jj*\triv@purs@anglecases}:{\triv@purs@rayonint}) --(D-#1-1)--cycle ;
}%
}%
{}%
@@ -766,7 +1141,7 @@
\begin{scope}[shift={(0:{0.15*\triv@purs@lgcamemb})}]
\ifboolKV[TrivPursEN]{Colors}%
{%
- \filldraw[{\triv@purs@lstcol[1]}] (0,0)--({-30}:{0.765*\triv@purs@lgcamemb}) arc (-30:30:{0.765*\triv@purs@lgcamemb}) -- cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (0,0)--({-30}:{0.765*\triv@purs@lgcamemb}) arc (-30:30:{0.765*\triv@purs@lgcamemb}) -- cycle ;
}%
{}%
\draw[EpTraitsPlus] (0,0)--({-30}:{0.765*\triv@purs@lgcamemb}) arc (-30:30:{0.765*\triv@purs@lgcamemb}) -- cycle ;
@@ -774,7 +1149,7 @@
\begin{scope}[shift={(60:{0.15*\triv@purs@lgcamemb})}]
\ifboolKV[TrivPursEN]{Colors}%
{%
- \filldraw[{\triv@purs@lstcol[2]}] (0,0)--({30}:{0.765*\triv@purs@lgcamemb}) arc (30:90:{0.765*\triv@purs@lgcamemb}) -- cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (0,0)--({30}:{0.765*\triv@purs@lgcamemb}) arc (30:90:{0.765*\triv@purs@lgcamemb}) -- cycle ;
}%
{}%
\draw[EpTraitsPlus] (0,0)--({30}:{0.765*\triv@purs@lgcamemb}) arc (30:90:{0.765*\triv@purs@lgcamemb}) -- cycle ;
@@ -782,7 +1157,7 @@
\begin{scope}[shift={(120:{0.15*\triv@purs@lgcamemb})}]
\ifboolKV[TrivPursEN]{Colors}%
{%
- \filldraw[{\triv@purs@lstcol[3]}] (0,0)--({90}:{0.765*\triv@purs@lgcamemb}) arc (90:150:{0.765*\triv@purs@lgcamemb}) -- cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (0,0)--({90}:{0.765*\triv@purs@lgcamemb}) arc (90:150:{0.765*\triv@purs@lgcamemb}) -- cycle ;
}%
{}%
\draw[EpTraitsPlus] (0,0)--({90}:{0.765*\triv@purs@lgcamemb}) arc (90:150:{0.765*\triv@purs@lgcamemb}) -- cycle ;
@@ -790,7 +1165,7 @@
\begin{scope}[shift={(180:{0.15*\triv@purs@lgcamemb})}]
\ifboolKV[TrivPursEN]{Colors}%
{%
- \filldraw[{\triv@purs@lstcol[4]}] (0,0)--({150}:{0.765*\triv@purs@lgcamemb}) arc (150:210:{0.765*\triv@purs@lgcamemb}) -- cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (0,0)--({150}:{0.765*\triv@purs@lgcamemb}) arc (150:210:{0.765*\triv@purs@lgcamemb}) -- cycle ;
}%
{}%
\draw[EpTraitsPlus] (0,0)--({150}:{0.765*\triv@purs@lgcamemb}) arc (150:210:{0.765*\triv@purs@lgcamemb}) -- cycle ;
@@ -798,7 +1173,7 @@
\begin{scope}[shift={(240:{0.15*\triv@purs@lgcamemb})}]
\ifboolKV[TrivPursEN]{Colors}%
{%
- \filldraw[{\triv@purs@lstcol[5]}] (0,0)--({210}:{0.765*\triv@purs@lgcamemb}) arc (210:270:{0.765*\triv@purs@lgcamemb}) -- cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (0,0)--({210}:{0.765*\triv@purs@lgcamemb}) arc (210:270:{0.765*\triv@purs@lgcamemb}) -- cycle ;
}%
{}%
\draw[EpTraitsPlus] (0,0)--({210}:{0.765*\triv@purs@lgcamemb}) arc (210:270:{0.765*\triv@purs@lgcamemb}) -- cycle ;
@@ -806,13 +1181,368 @@
\begin{scope}[shift={(300:{0.15*\triv@purs@lgcamemb})}]
\ifboolKV[TrivPursEN]{Colors}%
{%
- \filldraw[{\triv@purs@lstcol[6]}] (0,0)--({270}:{0.765*\triv@purs@lgcamemb}) arc (270:330:{0.765*\triv@purs@lgcamemb}) -- cycle ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (0,0)--({270}:{0.765*\triv@purs@lgcamemb}) arc (270:330:{0.765*\triv@purs@lgcamemb}) -- cycle ;
}%
{}%
\draw[EpTraitsPlus] (0,0)--({270}:{0.765*\triv@purs@lgcamemb}) arc (270:330:{0.765*\triv@purs@lgcamemb}) -- cycle ;
\end{scope}
}
+%courte
+\NewDocumentCommand\CreationNodesTrivialShort{}{%OK !!!!!!!!!!!!!!
+ %création des nœuds grand bord petit bord GB-i (et PB-i)
+ \coordinate (GB-1) at ({7.5}:{\triv@purs@rayon}) ;
+ \coordinate (PB-1) at ({7.5}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-2) at ({7.5+9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-2) at ({7.5+9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-3) at ({7.5+2*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-3) at ({7.5+2*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-4) at ({7.5+3*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-4) at ({7.5+3*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-5) at ({7.5+4*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-5) at ({7.5+4*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-6) at ({7.5+5*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-6) at ({7.5+5*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-7) at ({67.5}:{\triv@purs@rayon}) ;
+ \coordinate (PB-7) at ({67.5}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-8) at ({67.5+9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-8) at ({67.5+9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-9) at ({67.5+2*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-9) at ({67.5+2*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-10) at ({67.5+3*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-10) at ({67.5+3*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-11) at ({67.5+4*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-11) at ({67.5+4*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-12) at ({67.5+5*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-12) at ({67.5+5*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-13) at ({127.5}:{\triv@purs@rayon}) ;
+ \coordinate (PB-13) at ({127.5}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-14) at ({127.5+9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-14) at ({127.5+9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-15) at ({127.5+2*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-15) at ({127.5+2*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-16) at ({127.5+3*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-16) at ({127.5+3*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-17) at ({127.5+4*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-17) at ({127.5+4*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-18) at ({127.5+5*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-18) at ({127.5+5*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-19) at ({187.5}:{\triv@purs@rayon}) ;
+ \coordinate (PB-19) at ({187.5}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-20) at ({187.5+9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-20) at ({187.5+9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-21) at ({187.5+2*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-21) at ({187.5+2*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-22) at ({187.5+3*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-22) at ({187.5+3*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-23) at ({187.5+4*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-23) at ({187.5+4*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-24) at ({187.5+5*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-24) at ({187.5+5*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-25) at ({247.5}:{\triv@purs@rayon}) ;
+ \coordinate (PB-25) at ({247.5}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-26) at ({247.5+9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-26) at ({247.5+9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-27) at ({247.5+2*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-27) at ({247.5+2*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-28) at ({247.5+3*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-28) at ({247.5+3*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-29) at ({247.5+4*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-29) at ({247.5+4*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-30) at ({247.5+5*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-30) at ({247.5+5*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-31) at ({307.5}:{\triv@purs@rayon}) ;
+ \coordinate (PB-31) at ({307.5}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-32) at ({307.5+9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-32) at ({307.5+9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-33) at ({307.5+2*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-33) at ({307.5+2*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-34) at ({307.5+3*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-34) at ({307.5+3*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-35) at ({307.5+4*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-35) at ({307.5+4*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ \coordinate (GB-36) at ({307.5+5*9}:{\triv@purs@rayon}) ;
+ \coordinate (PB-36) at ({307.5+5*9}:{\triv@purs@rayon-\triv@purs@hautcases}) ;
+ %tests ?!?!
+% \foreach \i in {1,...,36}{%OK
+% \draw[EpTraits,fill=teal] (GB-\i) circle[radius=1.75pt] node[font=\tiny\ttfamily] {GB-\i};
+% \draw[EpTraits,fill=purple] (PB-\i) circle[radius=1.75pt] node[font=\tiny\ttfamily] {PB-\i};
+% }
+ %création des nœuds pour la figure centrale, boucle pour les 1ers + le dernier
+ \foreach \i in {1,...,\triv@purs@nbcat}{%
+ \coordinate (OM-\i) at ({30+(\i-1)*60}:{\triv@purs@rayonhexag}) ;
+ %\draw[EpTraits,fill=orange] (OM-\i) circle[radius=1.75pt] node[font=\tiny\ttfamily] {OM-\i};
+ }%
+ %les nœuds des cases verticales
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-1-\j) at ($(PB-1)!\tmp@coeff!(OM-1)$) ;
+ %\draw[EpTraits,fill=yellow] (D-1-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-1-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-2-\j) at ($(PB-6)!\tmp@coeff!(OM-1)$) ;
+ %\draw[EpTraits,fill=yellow] (D-2-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-2-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-3-\j) at ($(PB-7)!\tmp@coeff!(OM-2)$) ;
+ %\draw[EpTraits,fill=yellow] (D-3-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-3-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-4-\j) at ($(PB-12)!\tmp@coeff!(OM-2)$) ;
+ %\draw[EpTraits,fill=yellow] (D-4-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-4-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-5-\j) at ($(PB-13)!\tmp@coeff!(OM-3)$) ;
+ %\draw[EpTraits,fill=yellow] (D-5-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-5-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-6-\j) at ($(PB-18)!\tmp@coeff!(OM-3)$) ;
+ %\draw[EpTraits,fill=yellow] (D-6-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-5-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-7-\j) at ($(PB-19)!\tmp@coeff!(OM-4)$) ;
+ %\draw[EpTraits,fill=yellow] (D-7-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-7-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-8-\j) at ($(PB-24)!\tmp@coeff!(OM-4)$) ;
+ %\draw[EpTraits,fill=yellow] (D-8-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-8-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-9-\j) at ($(PB-25)!\tmp@coeff!(OM-5)$) ;
+ %\draw[EpTraits,fill=yellow] (D-9-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-9-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-10-\j) at ($(PB-30)!\tmp@coeff!(OM-5)$) ;
+ %\draw[EpTraits,fill=yellow] (D-10-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-10-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-11-\j) at ($(PB-31)!\tmp@coeff!(OM-6)$) ;
+ %\draw[EpTraits,fill=yellow] (D-11-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-11-\j};
+ }%
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \xdef\tmp@coeff{\xintfloateval{\j/(\triv@purs@nbcat-1)}}%
+ \coordinate (D-12-\j) at ($(PB-36)!\tmp@coeff!(OM-6)$) ;
+ %\draw[EpTraits,fill=yellow] (D-12-\j) circle[radius=1.75pt] node[font=\tiny\ttfamily] {D-12-\j};
+ }%
+}
+
+\NewDocumentCommand\FillCellsBorderShort{}{%
+ %-------Vertical
+ %niveau 1 vertical
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (OM-6)--(OM-1)--(D-1-4)--(D-12-4)--cycle ;
+ \node[rotate={90},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(OM-6)!0.5!(D-1-4)$) {\triv@purs@lsticons[2]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (D-12-4)--(D-1-4)--(D-1-3)--(D-12-3)--cycle ;
+ \node[rotate={90},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-12-4)!0.5!(D-1-3)$) {\triv@purs@lsticons[6]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (D-12-3)--(D-1-3)--(D-1-2)--(D-12-2)--cycle ;
+ \node[rotate={90},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-12-3)!0.5!(D-1-2)$) {\triv@purs@lsticons[5]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (D-12-2)--(D-1-2)--(D-1-1)--(D-12-1)--cycle ;
+ \node[rotate={90},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-12-2)!0.5!(D-1-1)$) {\triv@purs@lsticons[3]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (D-1-1)--(PB-1) arc({\triv@purs@anglecases}:{-\triv@purs@anglecases}:{\triv@purs@rayonint}) --(D-12-1)--cycle ;
+ \node[rotate={90},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-12-1)!0.5!(PB-1)$) {\triv@purs@lsticons[4]} ;
+ %niveau 2 vertical
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (OM-1)--(OM-2)--(D-3-4)--(D-2-4)--cycle ;
+ \node[rotate={90+(8)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(OM-1)!0.5!(D-3-4)$) {\triv@purs@lsticons[3]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (D-2-4)--(D-3-4)--(D-3-3)--(D-2-3)--cycle ;
+ \node[rotate={90+(8)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-2-4)!0.5!(D-3-3)$) {\triv@purs@lsticons[1]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (D-2-3)--(D-3-3)--(D-3-2)--(D-2-2)--cycle ;
+ \node[rotate={90+(8)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-2-3)!0.5!(D-3-2)$) {\triv@purs@lsticons[6]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (D-2-2)--(D-3-2)--(D-3-1)--(D-2-1)--cycle ;
+ \node[rotate={90+(8)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-2-2)!0.5!(D-3-1)$) {\triv@purs@lsticons[4]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (D-3-1)--(PB-7) arc({67.5}:{52.5}:{\triv@purs@rayonint}) --(D-2-1)--cycle ;
+ \node[rotate={90+(8)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-2-1)!0.5!(PB-7)$) {\triv@purs@lsticons[5]} ;
+ %niveau 3 vertical
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (OM-2)--(OM-3)--(D-5-4)--(D-4-4)--cycle ;
+ \node[rotate={90+(16)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(OM-2)!0.5!(D-5-4)$) {\triv@purs@lsticons[4]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (D-4-4)--(D-5-4)--(D-5-3)--(D-4-3)--cycle ;
+ \node[rotate={90+(16)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-4-4)!0.5!(D-5-3)$) {\triv@purs@lsticons[2]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (D-4-3)--(D-5-3)--(D-5-2)--(D-4-2)--cycle ;
+ \node[rotate={90+(16)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-4-3)!0.5!(D-5-2)$) {\triv@purs@lsticons[1]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (D-4-2)--(D-5-2)--(D-5-1)--(D-4-1)--cycle ;
+ \node[rotate={90+(16)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-4-2)!0.5!(D-5-1)$) {\triv@purs@lsticons[5]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (D-5-1)--(PB-13) arc({127.5}:{112.5}:{\triv@purs@rayonint}) --(D-4-1)--cycle ;
+ \node[rotate={90+(16)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-4-1)!0.5!(PB-13)$) {\triv@purs@lsticons[6]} ;
+ %niveau 4 vertical
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (OM-3)--(OM-4)--(D-7-4)--(D-6-4)--cycle ;
+ \node[rotate={90+(24)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(OM-3)!0.5!(D-7-4)$) {\triv@purs@lsticons[5]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (D-6-4)--(D-7-4)--(D-7-3)--(D-6-3)--cycle ;
+ \node[rotate={90+(24)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-6-4)!0.5!(D-7-3)$) {\triv@purs@lsticons[3]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (D-6-3)--(D-7-3)--(D-7-2)--(D-6-2)--cycle ;
+ \node[rotate={90+(24)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-6-3)!0.5!(D-7-2)$) {\triv@purs@lsticons[2]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (D-6-2)--(D-7-2)--(D-7-1)--(D-6-1)--cycle ;
+ \node[rotate={90+(24)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-6-2)!0.5!(D-7-1)$) {\triv@purs@lsticons[6]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (D-7-1)--(PB-19) arc({187.5}:{172.5}:{\triv@purs@rayonint}) --(D-6-1)--cycle ;
+ \node[rotate={90+(24)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-6-1)!0.5!(PB-19)$) {\triv@purs@lsticons[1]} ;
+ %niveau 5 vertical
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (OM-4)--(OM-5)--(D-9-4)--(D-8-4)--cycle ;
+ \node[rotate={90+(32)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(OM-4)!0.5!(D-9-4)$) {\triv@purs@lsticons[6]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (D-8-4)--(D-9-4)--(D-9-3)--(D-8-3)--cycle ;
+ \node[rotate={90+(32)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-8-4)!0.5!(D-9-3)$) {\triv@purs@lsticons[4]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (D-8-3)--(D-9-3)--(D-9-2)--(D-8-2)--cycle ;
+ \node[rotate={90+(32)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-8-3)!0.5!(D-9-2)$) {\triv@purs@lsticons[3]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (D-8-2)--(D-9-2)--(D-9-1)--(D-8-1)--cycle ;
+ \node[rotate={90+(32)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-8-2)!0.5!(D-9-1)$) {\triv@purs@lsticons[1]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (D-9-1)--(PB-25) arc({247.5}:{232.5}:{\triv@purs@rayonint}) --(D-8-1)--cycle ;
+ \node[rotate={90+(32)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-8-1)!0.5!(PB-25)$) {\triv@purs@lsticons[2]} ;
+ %niveau 6 vertical
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (OM-5)--(OM-6)--(D-11-4)--(D-10-4)--cycle ;
+ \node[rotate={90+(40)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(OM-5)!0.5!(D-11-4)$) {\triv@purs@lsticons[1]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (D-10-4)--(D-11-4)--(D-11-3)--(D-10-3)--cycle ;
+ \node[rotate={90+(40)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-10-4)!0.5!(D-11-3)$) {\triv@purs@lsticons[5]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (D-10-3)--(D-11-3)--(D-11-2)--(D-10-2)--cycle ;
+ \node[rotate={90+(40)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-10-3)!0.5!(D-11-2)$) {\triv@purs@lsticons[4]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (D-10-2)--(D-11-2)--(D-11-1)--(D-10-1)--cycle ;
+ \node[rotate={90+(40)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-10-2)!0.5!(D-11-1)$) {\triv@purs@lsticons[2]} ;
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (D-11-1)--(PB-31) arc({307.5}:{292.5}:{\triv@purs@rayonint}) --(D-10-1)--cycle ;
+ \node[rotate={90+(40)*\triv@purs@anglecases},scale={0.75*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ($(D-10-1)!0.5!(PB-31)$) {\triv@purs@lsticons[3]} ;
+ %--------BORDS !!!
+ \ifboolKV[TrivPursEN]{Colors}%
+ {%
+ %Secteur1
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (PB-1)--(GB-1) arc ({7.5+0*9}:{7.5+1*9}:{\triv@purs@rayon})--(PB-2) arc ({7.5+1*9}:{7.5+0*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (PB-2)--(GB-2) arc ({7.5+1*9}:{7.5+2*9}:{\triv@purs@rayon})--(PB-3) arc ({7.5+2*9}:{7.5+1*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (PB-4)--(GB-4) arc ({7.5+3*9}:{7.5+4*9}:{\triv@purs@rayon})--(PB-5) arc ({7.5+4*9}:{7.5+3*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (PB-5)--(GB-5) arc ({7.5+4*9}:{7.5+5*9}:{\triv@purs@rayon})--(PB-6) arc ({7.5+5*9}:{7.5+4*9}:{\triv@purs@rayonint});
+ %Secteur2
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (PB-7)--(GB-7) arc ({7.5+60+0*9}:{7.5+60+1*9}:{\triv@purs@rayon})--(PB-8) arc ({7.5+60+1*9}:{7.5+60+0*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (PB-8)--(GB-8) arc ({7.5+60+1*9}:{7.5+60+2*9}:{\triv@purs@rayon})--(PB-9) arc ({7.5+60+2*9}:{7.5+60+1*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (PB-10)--(GB-10) arc ({7.5+60+3*9}:{7.5+60+4*9}:{\triv@purs@rayon})--(PB-11) arc ({7.5+60+4*9}:{7.5+60+3*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (PB-11)--(GB-11) arc ({7.5+60+4*9}:{7.5+60+5*9}:{\triv@purs@rayon})--(PB-12) arc ({7.5+60+5*9}:{7.5+60+4*9}:{\triv@purs@rayonint});
+ %Secteur3
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (PB-13)--(GB-13) arc ({7.5+120+0*9}:{7.5+120+1*9}:{\triv@purs@rayon})--(PB-14) arc ({7.5+120+1*9}:{7.5+120+0*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (PB-14)--(GB-14) arc ({7.5+120+1*9}:{7.5+120+2*9}:{\triv@purs@rayon})--(PB-15) arc ({7.5+120+2*9}:{7.5+120+1*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (PB-16)--(GB-16) arc ({7.5+120+3*9}:{7.5+120+4*9}:{\triv@purs@rayon})--(PB-17) arc ({7.5+120+4*9}:{7.5+120+3*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (PB-17)--(GB-17) arc ({7.5+120+4*9}:{7.5+120+5*9}:{\triv@purs@rayon})--(PB-18) arc ({7.5+120+5*9}:{7.5+120+4*9}:{\triv@purs@rayonint});
+ %Secteur4
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (PB-19)--(GB-19) arc ({7.5+180+0*9}:{7.5+180+1*9}:{\triv@purs@rayon})--(PB-20) arc ({7.5+180+1*9}:{7.5+180+0*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (PB-20)--(GB-20) arc ({7.5+180+1*9}:{7.5+180+2*9}:{\triv@purs@rayon})--(PB-21) arc ({7.5+180+2*9}:{7.5+180+1*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (PB-22)--(GB-22) arc ({7.5+180+3*9}:{7.5+180+4*9}:{\triv@purs@rayon})--(PB-23) arc ({7.5+180+4*9}:{7.5+180+3*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (PB-23)--(GB-23) arc ({7.5+180+4*9}:{7.5+180+5*9}:{\triv@purs@rayon})--(PB-24) arc ({7.5+180+5*9}:{7.5+180+4*9}:{\triv@purs@rayonint});
+ %Secteur5
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (PB-25)--(GB-25) arc ({7.5+240+0*9}:{7.5+240+1*9}:{\triv@purs@rayon})--(PB-26) arc ({7.5+240+1*9}:{7.5+240+0*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (PB-26)--(GB-26) arc ({7.5+240+1*9}:{7.5+240+2*9}:{\triv@purs@rayon})--(PB-27) arc ({7.5+240+2*9}:{7.5+240+1*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (PB-28)--(GB-28) arc ({7.5+240+3*9}:{7.5+240+4*9}:{\triv@purs@rayon})--(PB-29) arc ({7.5+240+4*9}:{7.5+240+3*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (PB-29)--(GB-29) arc ({7.5+240+4*9}:{7.5+240+5*9}:{\triv@purs@rayon})--(PB-30) arc ({7.5+240+5*9}:{7.5+240+4*9}:{\triv@purs@rayonint});
+ %Secteur6
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (PB-31)--(GB-31) arc ({7.5+300+0*9}:{7.5+300+1*9}:{\triv@purs@rayon})--(PB-32) arc ({7.5+300+1*9}:{7.5+300+0*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (PB-32)--(GB-32) arc ({7.5+300+1*9}:{7.5+300+2*9}:{\triv@purs@rayon})--(PB-33) arc ({7.5+300+2*9}:{7.5+300+1*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (PB-34)--(GB-34) arc ({7.5+300+3*9}:{7.5+300+4*9}:{\triv@purs@rayon})--(PB-35) arc ({7.5+300+4*9}:{7.5+300+3*9}:{\triv@purs@rayonint});
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (PB-35)--(GB-35) arc ({7.5+300+4*9}:{7.5+300+5*9}:{\triv@purs@rayon})--(PB-36) arc ({7.5+300+5*9}:{7.5+300+4*9}:{\triv@purs@rayonint});
+ }%
+ {}%
+ \ifboolKV[TrivPursEN]{Icons}%
+ {%
+ %secteur1
+ \node[rotate={90+0.5*(7.5+0*9+7.5+1*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(7.5+7.5+1*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[4]} ;
+ \node[rotate={90+0.5*(7.5+1*9+7.5+2*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(7.5+1*9+7.5+2*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[3]} ;
+ \node[rotate={90+0.5*(7.5+3*9+7.5+4*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(7.5+3*9+7.5+4*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[6]} ;
+ \node[rotate={90+0.5*(7.5+5*9+7.5+5*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(7.5+4*9+7.5+5*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[5]} ;
+ %secteur2
+ \node[rotate={90+0.5*(2*60+7.5+0*9+7.5+1*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*60+7.5+7.5+1*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[5]} ;
+ \node[rotate={90+0.5*(2*60+7.5+1*9+7.5+2*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*60+7.5+1*9+7.5+2*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[4]} ;
+ \node[rotate={90+0.5*(2*60+7.5+3*9+7.5+4*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*60+7.5+3*9+7.5+4*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[1]} ;
+ \node[rotate={90+0.5*(2*60+7.5+5*9+7.5+5*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*60+7.5+4*9+7.5+5*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[6]} ;
+ %secteur3
+ \node[rotate={90+0.5*(2*120+7.5+0*9+7.5+1*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*120+7.5+7.5+1*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[6]} ;
+ \node[rotate={90+0.5*(2*120+7.5+1*9+7.5+2*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*120+7.5+1*9+7.5+2*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[5]} ;
+ \node[rotate={90+0.5*(2*120+7.5+3*9+7.5+4*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*120+7.5+3*9+7.5+4*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[2]} ;
+ \node[rotate={90+0.5*(2*120+7.5+5*9+7.5+5*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*120+7.5+4*9+7.5+5*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[1]} ;
+ %secteur4
+ \node[rotate={90+0.5*(2*180+7.5+0*9+7.5+1*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*180+7.5+7.5+1*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[1]} ;
+ \node[rotate={90+0.5*(2*180+7.5+1*9+7.5+2*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*180+7.5+1*9+7.5+2*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[6]} ;
+ \node[rotate={90+0.5*(2*180+7.5+3*9+7.5+4*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*180+7.5+3*9+7.5+4*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[3]} ;
+ \node[rotate={90+0.5*(2*180+7.5+5*9+7.5+5*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*180+7.5+4*9+7.5+5*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[2]} ;
+ %secteur5
+ \node[rotate={90+0.5*(2*240+7.5+0*9+7.5+1*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*240+7.5+7.5+1*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[2]} ;
+ \node[rotate={90+0.5*(2*240+7.5+1*9+7.5+2*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*240+7.5+1*9+7.5+2*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[1]} ;
+ \node[rotate={90+0.5*(2*240+7.5+3*9+7.5+4*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*240+7.5+3*9+7.5+4*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[4]} ;
+ \node[rotate={90+0.5*(2*240+7.5+5*9+7.5+5*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*240+7.5+4*9+7.5+5*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[3]} ;
+ %secteur6
+ \node[rotate={90+0.5*(2*300+7.5+0*9+7.5+1*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*300+7.5+7.5+1*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[3]} ;
+ \node[rotate={90+0.5*(2*300+7.5+1*9+7.5+2*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*300+7.5+1*9+7.5+2*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[2]} ;
+ \node[rotate={90+0.5*(2*300+7.5+3*9+7.5+4*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*300+7.5+3*9+7.5+4*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[5]} ;
+ \node[rotate={90+0.5*(2*300+7.5+5*9+7.5+5*9)},scale={\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0.5*(2*300+7.5+4*9+7.5+5*9)}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[4]} ;
+ }%
+ {}%
+
+ %les jokers
+ \ifboolKV[TrivPursEN]{Icons}%
+ {%
+ \ifboolKV[TrivPursEN]{Jokers}%
+ {%
+ \node[rotate=30,scale={\triv@purs@scaleicons*\triv@purs@hautcases}] at ({30}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@iconjok} ;
+ \node[rotate=90,scale={\triv@purs@scaleicons*\triv@purs@hautcases}] at ({90}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@iconjok} ;
+ \node[rotate=150,scale={\triv@purs@scaleicons*\triv@purs@hautcases}] at ({150}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@iconjok} ;
+ \node[rotate=210,scale={\triv@purs@scaleicons*\triv@purs@hautcases}] at ({210}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@iconjok} ;
+ \node[rotate=270,scale={\triv@purs@scaleicons*\triv@purs@hautcases}] at ({270}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@iconjok} ;
+ \node[rotate=330,scale={\triv@purs@scaleicons*\triv@purs@hautcases}] at ({330}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@iconjok} ;
+ }%
+ {}%
+ }%
+ {}%
+}
+\NewDocumentCommand\DrawBordersTrivialShort{ }{%OK Court
+ %les tracés des cases
+ \draw[EpTraits] (0,0) circle[radius=\triv@purs@rayon] ;
+ \draw[EpTraits] (0,0) circle[radius={\triv@purs@rayon-\triv@purs@hautcases}] ;
+ \foreach \i in {1,...,36}{%
+ \draw[EpTraits] (PB-\i)--(GB-\i) ;
+ }
+ \draw[EpTraits] (PB-1)--(OM-1)--(OM-6)--(PB-36) ;
+ \draw[EpTraits] (PB-6)--(OM-1)--(OM-2)--(PB-7) ;
+ \draw[EpTraits] (PB-12)--(OM-2)--(OM-3)--(PB-13) ;
+ \draw[EpTraits] (PB-18)--(OM-3)--(OM-4)--(PB-19) ;
+ \draw[EpTraits] (PB-24)--(OM-4)--(OM-5)--(PB-25) ;
+ \draw[EpTraits] (PB-30)--(OM-5)--(OM-6)--(PB-31) ;
+ \foreach \j in {1,...,\xinteval{\triv@purs@nbcat-2}}{%
+ \draw[EpTraits] (D-2-\j)--(D-3-\j) ;
+ \draw[EpTraits] (D-4-\j)--(D-5-\j) ;
+ \draw[EpTraits] (D-6-\j)--(D-7-\j) ;
+ \draw[EpTraits] (D-8-\j)--(D-9-\j) ;
+ \draw[EpTraits] (D-10-\j)--(D-11-\j) ;
+ \draw[EpTraits] (D-12-\j)--(D-1-\j) ;
+ }%
+}
+
+\NewDocumentCommand\FillCamembersTrivialShort{ }{%numéro des camemberts, en partant de la droite
+ \ifboolKV[TrivPursEN]{Colors}%
+ {%
+ %Couleur du 1er camembert
+ \draw[EpTraits,fill={\triv@purs@lstcol[1]}] (PB-36)--(GB-36) arc ({-\triv@purs@anglecases}:{\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-1) arc ({\triv@purs@anglecases}:{-\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ %Couleur du 2ème
+ \draw[EpTraits,fill={\triv@purs@lstcol[2]}] (PB-6)--(GB-6) arc ({7*\triv@purs@anglecases}:{9*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-7) arc ({9*\triv@purs@anglecases}:{7*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ %Couleur du 3ème
+ \draw[EpTraits,fill={\triv@purs@lstcol[3]}] (PB-12)--(GB-12) arc ({15*\triv@purs@anglecases}:{17*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-13) arc ({17*\triv@purs@anglecases}:{15*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ %Couleur du 4ème
+ \draw[EpTraits,fill={\triv@purs@lstcol[4]}] (PB-18)--(GB-18) arc ({23*\triv@purs@anglecases}:{25*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-19) arc ({25*\triv@purs@anglecases}:{23*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ %Couleur du 5ème
+ \draw[EpTraits,fill={\triv@purs@lstcol[5]}] (PB-24)--(GB-24) arc ({31*\triv@purs@anglecases}:{33*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-25) arc ({33*\triv@purs@anglecases}:{31*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ %Couleur du 6ème
+ \draw[EpTraits,fill={\triv@purs@lstcol[6]}] (PB-30)--(GB-30) arc ({39*\triv@purs@anglecases}:{41*\triv@purs@anglecases}:{\triv@purs@rayon})--(PB-31) arc ({41*\triv@purs@anglecases}:{39*\triv@purs@anglecases}:{\triv@purs@rayonint})--cycle ;
+ }%
+ {}%
+ %si on affiche les icones
+ \ifboolKV[TrivPursEN]{Icons}%
+ {%
+ \node[rotate={90+0*\triv@purs@anglecases},scale={1.5*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({0}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[1]} ;
+ \node[rotate={90+8*\triv@purs@anglecases},scale={1.5*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({8*\triv@purs@anglecases}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[2]} ;
+ \node[rotate={90+16*\triv@purs@anglecases},scale={1.5*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({16*\triv@purs@anglecases}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[3]} ;
+ \node[rotate={90+24*\triv@purs@anglecases},scale={1.5*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({24*\triv@purs@anglecases}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[4]} ;
+ \node[rotate={90+32*\triv@purs@anglecases},scale={1.5*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({32*\triv@purs@anglecases}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[5]} ;
+ \node[rotate={90+40*\triv@purs@anglecases},scale={1.5*\triv@purs@scaleicons*\triv@purs@hautcases},anchor=center] at ({40*\triv@purs@anglecases}:{\triv@purs@rayon-0.5*\triv@purs@hautcases}) {\triv@purs@lsticons[6]} ;
+ }%
+ {}%
+}
+
%====CREATION
\NewDocumentCommand\BoardTrivialPursuit{ O{} D<>{} }{%
\restoreKV[TrivPursEN]% revenir au valeurs par défaut
@@ -848,18 +1578,35 @@
\useasboundingbox (0,0) circle[radius={\triv@purs@rayon}] ;
%création
\begin{scope}[rotate=\triv@purs@rotate]
- %les nœuds OK
- \CreationNodesTrivial
- %test avec centre OK
- \ifboolKV[TrivPursEN]{Center}{\FillCenterTrivial}{}
- %camemberts OK
- \FillCamembersTrivial
- %cases OK
- \FillCellsBorder
- %bordures
- \DrawBordersTrivial
- %logo central
- \ifboolKV[TrivPursEN]{Logo}{\LogoCenterTrivialPursuit}{}
+ \ifboolKV[TrivPursEN]{ShortVersion}%
+ {%
+ %les nœuds OK
+ \CreationNodesTrivialShort
+ %test avec centre OK
+ \ifboolKV[TrivPursEN]{Center}{\FillCenterTrivial}{}
+ %camemberts OK
+ \FillCamembersTrivialShort
+ %cases OK
+ \FillCellsBorderShort
+ %bordures
+ \DrawBordersTrivialShort
+ %logo central
+ \ifboolKV[TrivPursEN]{Logo}{\LogoCenterTrivialPursuit}{}
+ }%
+ {%
+ %les nœuds OK
+ \CreationNodesTrivial
+ %test avec centre OK
+ \ifboolKV[TrivPursEN]{Center}{\FillCenterTrivial}{}
+ %camemberts OK
+ \FillCamembersTrivial
+ %cases OK
+ \FillCellsBorder
+ %bordures
+ \DrawBordersTrivial
+ %logo central
+ \ifboolKV[TrivPursEN]{Logo}{\LogoCenterTrivialPursuit}{}
+ }%
\end{scope}
\end{tikzpicture}%
}
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa.sty
index 62af9069e55..e07c116668b 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa.sty
@@ -1,10 +1,18 @@
-%% This is file `beamercolorthemeTUDa.sty' version 3.41 (2024-07-02),
+%%
+%% This is file `beamercolorthemeTUDa.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% beamercolorthemeTUDa.dtx (with options: `package,main')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,95 +21,86 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
+%%
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesPackage{beamercolorthemeTUDa}[2024-01-22 v3.35]
+\ProvidesExplPackage{beamercolorthemeTUDa}{2025-01-26}{4.00}{Beamer color theme of tuda-ci}
-\ExplSyntaxOn
\clist_map_inline:nn {
- colortitle,
- colorbacktitle,
- colorframetitle,
- colorback
+colortitle,
+colorbacktitle,
+colorframetitle,
+colorback
} {
- \keys_define:nn {ptxcd/beamer/color} {#1 .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {#1}}
-}
-
-\keys_define:nn {ptxcd/beamer/color} {
-
+\keys_define:nn {ptxcd/beamer/color} {#1 .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {#1}}
}
\ExplSyntaxOff
-
\ProcessKeyOptions[ptxcd/beamer/color]
-
+\mode<presentation>{\PassOptionsToPackage{RGB}{tudacolors}}
\RequirePackage{tudacolors}
-
\definecolorset{HTML}{TUDa-}{}{%
- dark1,000000;%
- dark2,44546A;%
- light1,FFFFFF;%
- light2,E7E6E6;%
- accent1,E6001A;%
- accent2,004E8A;%
- accent3,009CDA;%
- accent4,00689D;%
- accent5,B5B5B5;%
- accent5,535353;%
- hyperlink,243572%
+dark1,000000;%
+dark2,44546A;%
+light1,FFFFFF;%
+light2,E7E6E6;%
+accent1,E6001A;%
+accent2,004E8A;%
+accent3,009CDA;%
+accent4,00689D;%
+accent5,B5B5B5;%
+accent5,535353;%
+hyperlink,243572%
}
-
\mode<presentation>
-
\setbeamercolor*{title}{parent=normal text}
\setbeamercolor{subtitle}{parent=title}
\setbeamercolor{author}{parent=title}
\setbeamercolor{institute}{parent=title}
\setbeamercolor{date}{parent=title}
\setbeamercolor{titlelike}{parent=title}
-
\setbeamercolor*{author}{parent=title}
\setbeamercolor*{institute}{parent=title}
-
\setbeamercolor*{normal text}{bg=,fg=black}
\setbeamercolor*{background canvas}{parent=normal text}
\setbeamercolor*{section in toc}{parent=normal text}
-\setbeamercolor*{footline}{parent=normal text}
-
+\setbeamercolor*{footline}{
+fg=black!50
+}
\setbeamercolor*{alerted text}{fg=textaccentcolor}
\setbeamercolor*{structure}{fg=black}
-
\setbeamercolor{bibliography item}{parent=item}
\setbeamercolor{bibliography entry author}{use=structure,fg=structure.fg}
\setbeamercolor{bibliography entry title}{use=normal text,fg=normal text.fg}
\setbeamercolor{bibliography entry location}{use=structure,fg=structure.fg}
\setbeamercolor{bibliography entry note}{use=structure,fg=normal text.fg}
-
-
-
\setbeamercolor*{block title}{fg=textonaccentcolor,bg=accentcolor}
\setbeamercolor*{block body}{fg=black,bg=black!15}
-
-\setbeamercolor*{block title alerted}{fg=TUDa-accent1,bg=TUDa-light2}
+\setbeamercolor*{block title alerted}{
+fg=TUDa-accent1,bg=TUDa-light2
+}
\setbeamercolor*{block body alerted}{use=normal text, bg=white}
-\setbeamercolor*{block frame alerted}{bg=TUDa-accent1}
-
-\setbeamercolor*{block title example}{fg=TUDa-accent2,bg=TUDa-light2}
+\setbeamercolor*{block frame alerted}{
+bg=TUDa-accent1
+}
+\setbeamercolor*{block title example}{
+fg=TUDa-accent2,bg=TUDa-light2
+}
\setbeamercolor*{block body example}{use=normal text, bg=white}
-\setbeamercolor*{block frame example}{bg=TUDa-accent2}
-
-\setbeamercolor{footline}{fg=black!50}
-
+\setbeamercolor*{block frame example}{
+bg=TUDa-accent2
+}
+\ExplSyntaxOn
\mode<all>
-
\endinput
+%%
+%% End of file `beamercolorthemeTUDa.sty'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa2008.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa2008.sty
index 14a86607d18..6c9fc32a1c5 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa2008.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa2008.sty
@@ -1,10 +1,18 @@
-%% This is file `beamercolorthemeTUDa2008.sty' version 3.41 (2024-07-02)
+%%
+%% This is file `beamercolorthemeTUDa2008.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% beamercolorthemeTUDa.dtx (with options: `package,2008')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,93 +21,87 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
+%%
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesExplPackage{beamercolorthemeTUDa2008}{2024-04-21}{3.37}{Beamer color theme of tuda-ci, compatibility for design of 2008}
-\bool_if_exist:NF \g__ptxcd_colorframetitle_bool {\bool_new:N \g__ptxcd_colorframetitle_bool}
+\ProvidesExplPackage{beamercolorthemeTUDa2008}{2025-01-26}{4.00}{Beamer color theme of tuda-ci, compatibility for design of 2008}
+\bool_if_exist:NF \g__ptxcd_colorframetitle_bool {\bool_new:N \g__ptxcd_colorframetitle_bool}
\keys_define:nn {ptxcd/beamer/color} {
- colortitle .bool_gset:N = \g_ptxcd_beamer_colortitle_bool,
- colortitle .default:n = true,
- colortitle .initial:n = true,
- colorbacktitle .meta:n = {colortitle=#1},
- colorframetitle .code:n = \use:c {bool_gset_#1:N} \g__ptxcd_colorframetitle_bool \cs_if_exist_use:N \__ptxcd_setup_frametitle_color:,
- colorframetitle .default:n = true,
- colorback .meta:n = {colorframetitle=#1}
-}
-
-\ProcessKeyOptions[ptxcd/beamer/color]
-
-\ExplSyntaxOff
-\RequirePackage[RGB]{tudacolors}
-
-\mode<presentation>
-
-\setbeamercolor*{smallrule}{bg=black}
-\setbeamercolor*{identbar}{bg=identbarcolor}
-
-\ExplSyntaxOn
-\bool_if:NTF \g_ptxcd_beamer_colortitle_bool {
- \setbeamercolor*{title}{fg=textonaccentcolor,bg=accentcolor}
-}{
- \setbeamercolor*{title}{parent=normal~text}
+colortitle .bool_gset:N = \g_ptxcd_beamer_colortitle_bool,
+colortitle .default:n = true,
+colortitle .initial:n = true,
+colorbacktitle .meta:n = {colortitle=#1},
+ colorframetitle .choices:nn = {true, false} {
+ \use:c {bool_gset_ \l_keys_choice_tl :N} \g__ptxcd_colorframetitle_bool
+ \cs_if_exist_use:N \__ptxcd_setup_frametitle_color:
+ },
+colorframetitle .default:n = true,
+colorback .meta:n = {colorframetitle=#1}
}
-
-\cs_new:Nn \__ptxcd_setup_frametitle_color: {
- \bool_if:NTF \g__ptxcd_colorframetitle_bool {
- \setbeamercolor*{frametitle}{fg=textonaccentcolor,bg=accentcolor}
- } {
- \setbeamercolor*{frametitle}{use=normal~text,fg=normal~text.fg,bg=}
- }
-}
-
-\__ptxcd_setup_frametitle_color:
-
\ExplSyntaxOff
+\ProcessKeyOptions[ptxcd/beamer/color]
+\mode<presentation>{\PassOptionsToPackage{RGB}{tudacolors}}
+\RequirePackage{tudacolors}
+\setbeamercolor{titlelike}{fg=textaccentcolor,bg=white}
\setbeamercolor*{author}{parent=title}
\setbeamercolor*{institute}{parent=title}
-
\setbeamercolor*{normal text}{bg=,fg=black}
\setbeamercolor*{background canvas}{parent=normal text}
\setbeamercolor*{section in toc}{parent=normal text}
-\setbeamercolor*{footline}{parent=normal text}
-
+\setbeamercolor*{footline}{
+parent=normal text
+}
\setbeamercolor*{alerted text}{fg=textaccentcolor}
\setbeamercolor*{structure}{fg=textaccentcolor}
-
\setbeamercolor{bibliography item}{parent=item}
\setbeamercolor{bibliography entry author}{use=structure,fg=structure.fg}
\setbeamercolor{bibliography entry title}{use=normal text,fg=normal text.fg}
\setbeamercolor{bibliography entry location}{use=structure,fg=structure.fg}
\setbeamercolor{bibliography entry note}{use=structure,fg=normal text.fg}
-
-\setbeamercolor{titlelike}{fg=textaccentcolor,bg=white}
-
\setbeamercolor*{block title}{fg=textonaccentcolor,bg=accentcolor}
\setbeamercolor*{block body}{fg=black,bg=black!15}
-
-\setbeamercolor*{block title alerted}{fg=TUDa-9b,bg=black!15}
+\setbeamercolor*{block title alerted}{
+fg=TUDa-9b,bg=black!15
+}
\setbeamercolor*{block body alerted}{use=normal text, bg=white}
-\setbeamercolor*{block frame alerted}{bg=TUDa-9b}
-
-\setbeamercolor*{block title example}{fg=TUDa-4d,bg=black!15}
+\setbeamercolor*{block frame alerted}{
+bg=TUDa-9b
+}
+\setbeamercolor*{block title example}{
+fg=TUDa-4d,bg=black!15
+}
\setbeamercolor*{block body example}{use=normal text, bg=white}
-\setbeamercolor*{block frame example}{bg=TUDa-4d}
+\setbeamercolor*{block frame example}{
+bg=TUDa-4d
+}
+\setbeamercolor*{smallrule}{bg=black}
+\setbeamercolor*{identbar}{bg=identbarcolor}
\ExplSyntaxOn
-
+\bool_if:NTF \g_ptxcd_beamer_colortitle_bool {
+\setbeamercolor*{title}{fg=textonaccentcolor,bg=accentcolor}
+}{
+\setbeamercolor*{title}{parent=normal~text}
+}
+\cs_new:Nn \__ptxcd_setup_frametitle_color: {
+\bool_if:NTF \g__ptxcd_colorframetitle_bool {
+\setbeamercolor*{frametitle}{fg=textonaccentcolor,bg=accentcolor}
+} {
+\setbeamercolor*{frametitle}{use=normal~text,fg=normal~text.fg,bg=}
+}
+}
+\__ptxcd_setup_frametitle_color:
\mode<all>
-
-
-
\endinput
+%%
+%% End of file `beamercolorthemeTUDa2008.sty'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa.sty
index c2ec43d33ea..8d16f772bbd 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa.sty
@@ -1,10 +1,18 @@
-%% This is file `beamerfontthemeTUDa.sty' version 3.41 (2024-07-02)
+%%
+%% This is file `beamerfontthemeTUDa.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% beamerfontthemeTUDa.dtx (with options: `package,main')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,62 +21,51 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
+%%
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesExplPackage{beamerfontthemeTUDa}{2024-04-21}{3.37}{Beamer font theme of tuda-ci}
+\ProvidesExplPackage{beamerfontthemeTUDa}{2025-01-26}{4.00}{Beamer font theme of tuda-ci}
\RequirePackage{tudafonts}
-
\keys_define:nn {ptxcd/beamer/fonts} {
- serif .bool_gset:N = \g_ptxcd_serif_bool,
- serif .default:n = true,
- serif .initial:n = false,
- sans-serif .bool_gset_inverse:N = \g_ptxcd_serif_bool,
- sans-serif .default:n = true,
+serif .bool_gset:N = \g_ptxcd_serif_bool,
+serif .default:n = true,
+serif .initial:n = false,
+sans-serif .bool_gset_inverse:N = \g_ptxcd_serif_bool,
+sans-serif .default:n = true,
}
-
\ProcessKeyOptions[ptxcd/beamer/fonts]
-
\mode<presentation>
-
\bool_if:NTF \g_ptxcd_serif_bool
- {\usefonttheme{serif}}
- {\renewcommand*{\familydefault}{\sfdefault}}
-
+{\usefonttheme{serif}}
+{\renewcommand*{\familydefault}{\sfdefault}}
+\setbeamerfont{author}{size=\footnotesize, series=\bfseries}
+\setbeamerfont{institute}{size=\footnotesize, series=\mdseries}
\ExplSyntaxOff
-
\setbeamerfont{title}{family=\robotoblack,size=\huge}
\setbeamerfont*{subtitle}{family=\normalfont,size=\small}
-
-\setbeamerfont{author}{size=\footnotesize, series=\bfseries}
-\setbeamerfont{institute}{size=\footnotesize, series=\mdseries}
-
\setbeamerfont*{frametitle}{size*={20}{20},family=\robotoblack}
-
\setbeamerfont{footline}{size*={3.8}{5}}
\setbeamerfont{author in head/foot}{parent=footline}
\setbeamerfont{title in head/foot}{family=\robotoblackspaced}
-
\setbeamerfont*{section title}{size=\huge,family=\robotoblack}
\setbeamerfont*{section name}{size=\small}
\setbeamerfont{section entry}{size=\footnotesize}
\setbeamerfont{toc section number}{family=\robotoblack,size=\huge}
-
+\setbeamerfont{section entry}{size=\footnotesize}
\setbeamerfont{subsection in toc}{parent=section entry}
\setbeamerfont{subsubsection in toc}{parent=section entry}
-
\ExplSyntaxOn
-
\mode<all>
-
\endinput
+%%
+%% End of file `beamerfontthemeTUDa.sty'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa2008.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa2008.sty
index 4ac32a79cda..329ee0f60f4 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa2008.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa2008.sty
@@ -1,10 +1,18 @@
-%% This is file `beamerfontthemeTUDa2008.sty' version 3.41 (2024-07-02)
+%%
+%% This is file `beamerfontthemeTUDa2008.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% beamerfontthemeTUDa.dtx (with options: `package,2008')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,47 +21,40 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
+%%
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesExplPackage{beamerfontthemeTUDa2008}{2024-04-21}{3.37}{Beamer font theme of tuda-ci, compatibility for design of 2008}
-
+\ProvidesExplPackage{beamerfontthemeTUDa2008}{2025-01-26}{4.00}{Beamer font theme of tuda-ci, compatibility for design of 2008}
\RequirePackage{tudafonts}
-
\keys_define:nn {ptxcd/beamer/fonts} {
- serif .bool_gset:N = \g_ptxcd_serif_bool,
- serif .default:n = true,
- serif .initial:n = false,
- sans-serif .bool_gset_inverse:N = \g_ptxcd_serif_bool,
- sans-serif .default:n = true,
+serif .bool_gset:N = \g_ptxcd_serif_bool,
+serif .default:n = true,
+serif .initial:n = false,
+sans-serif .bool_gset_inverse:N = \g_ptxcd_serif_bool,
+sans-serif .default:n = true,
}
-
\ProcessKeyOptions[ptxcd/beamer/fonts]
-
\mode<presentation>
-
\bool_if:NTF \g_ptxcd_serif_bool
- {\usefonttheme{serif}}
- {\renewcommand*{\familydefault}{\sfdefault}}
-
-\setbeamerfont{title}{size=\large,series=\bfseries}
-\setbeamerfont{subtitle}{size=\normalsize,series=\bfseries}
+{\usefonttheme{serif}}
+{\renewcommand*{\familydefault}{\sfdefault}}
\setbeamerfont{author}{size=\footnotesize, series=\bfseries}
\setbeamerfont{institute}{size=\footnotesize, series=\mdseries}
-
+\setbeamerfont{title}{size=\large,series=\bfseries}
+\setbeamerfont{subtitle}{size=\normalsize,series=\bfseries}
\setbeamerfont{frametitle}{size=\large,series=\bfseries}
\setbeamerfont{author~in~head/foot}{size=\tiny}
-
\mode<all>
-
\endinput
+%%
+%% End of file `beamerfontthemeTUDa2008.sty'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa.sty
index f2a82c86a5f..2aea2dc4c2a 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa.sty
@@ -1,10 +1,18 @@
-%% This is file `beamerinnerthemeTUDa.sty' version 3.41 (2024-07-02)
+%%
+%% This is file `beamerinnerthemeTUDa.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% beamerinnerthemeTUDa.dtx (with options: `package,main')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,163 +21,148 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{beamerinnerthemeTUDa}{2024-04-21}{3.37}{Inner~beamer~theme~of~tuda-ci}
-
+%%
+\NeedsTeXFormat{LaTeX2e}[2022/06/01]
+\ProvidesExplPackage{beamerinnerthemeTUDa}{2025-01-26}{4.00}{Inner beamer theme of tuda-ci}
\int_new:N \g__ptxcd_beamer_toc_col_int
-
\tl_if_exist:NF \g__ptxcd_design_tl {
- \tl_new:N \g__ptxcd_design_tl
- \keys_define:nn {ptxcd/beamer} {
- design .choice:,
- design / 2023 .code:n = {
- \tl_gset:Nn \g__ptxcd_design_tl {2023}
- \PassOptionsToClass{aspectratio=169}{beamer}
- },
- design / 2008 .code:n = {
- \tl_gset:Nn \g__ptxcd_design_tl {2008}
- },
- design .initial:n = 2023,
- design2023 .meta:n = {design=2023},
- design2008 .meta:n = {design=2008},
- }
+\tl_new:N \g__ptxcd_design_tl
+\keys_define:nn {ptxcd/beamer} {
+design .choice:,
+design / 2023 .code:n = {
+\tl_gset:Nn \g__ptxcd_design_tl {2023}
+\PassOptionsToClass{aspectratio=169}{beamer}
+},
+design / 2008 .code:n = {
+\tl_gset:Nn \g__ptxcd_design_tl {2008}
+},
+design .initial:n = 2023,
+design .usage:n = load,
+design2023 .meta:n = {design=2023},
+design2008 .meta:n = {design=2008},
+}
}
-
\keys_define:nn {ptxcd/beamer/inner} {
- author-on-title .bool_gset:N = \g_ptxcd_authorontitle_bool,
- author-on-title .initial:n = false,
- author-on-title .default:n = true,
- authorontitle .meta:n = {author-on-title=#1},
- toc-columns .choices:nn = {one,two,auto} {
- \int_gset_eq:NN \g__ptxcd_beamer_toc_col_int \l_keys_choice_int
- },
- toc-columns / 1 .meta:n = {toc-columns=one},
- toc-columns / 2 .meta:n = {toc-columns=two},
- toc-columns .initial:n = auto,
- design .meta:nn = {ptxcd/beamer} {design=#1}
+author-on-title .bool_gset:N = \g_ptxcd_authorontitle_bool,
+author-on-title .initial:n = false,
+author-on-title .default:n = true,
+authorontitle .meta:n = {author-on-title=#1},
+toc-columns .choices:nn = {one,two,auto} {
+\int_gset_eq:NN \g__ptxcd_beamer_toc_col_int \l_keys_choice_int
+},
+toc-columns / 1 .meta:n = {toc-columns=one},
+toc-columns / 2 .meta:n = {toc-columns=two},
+toc-columns .initial:n = auto,
+design .meta:nn = {ptxcd/beamer} {design=#1}
}
-
\ProcessKeyOptions[ptxcd/beamer/inner]
-
\ExplSyntaxOff
\RequirePackage{trimclip}
\ExplSyntaxOn
-
\box_new:N \l__ptxcd_titlegraphic_box
\box_new:N \l__ptxcd_titlehead_box
\dim_new:N \l__ptxcd_titlegraphic_ht_dim
\dim_new:N \l__ptxcd_titlegraphic_wd_dim
-
\box_if_exist:NF \g__ptxcd_logo_box {
- \dim_new:N \g__ptxcd_beamer_logosep_dim
- \dim_new:N \l__ptxcd_beamer_extraindent_dim
- \dim_new:N \g__ptxcd_beamer_sep_dim
- \box_new:N \g__ptxcd_logo_box
+\dim_new:N \g__ptxcd_beamer_logosep_dim
+\dim_new:N \l__ptxcd_beamer_extraindent_dim
+\dim_new:N \g__ptxcd_beamer_sep_dim
+\box_new:N \g__ptxcd_logo_box
}
-
\cs_set:Nn \__ptxcd_block_colorsep: {.75ex}
-
\RenewDocumentCommand{\titlegraphic}{sm}{
- \IfBooleanTF{#1}{
- \def\inserttitlegraphic{
- \hbox_set:Nn \l__ptxcd_titlegraphic_box {\raisebox{\depth}{#2}}
- \box_resize_to_wd:Nn \l__ptxcd_titlegraphic_box {\width}
- \dim_compare:nTF {\box_ht:N \l__ptxcd_titlegraphic_box - \height> \c_zero_dim}
- {
- \dim_set:Nn \l_tmpa_dim {.5\box_ht:N \l__ptxcd_titlegraphic_box - .5\height}
- \clipbox{0pt~\dim_eval:n{\l_tmpa_dim}~0pt~\dim_eval:n{\l_tmpa_dim}}{\box_use:N \l__ptxcd_titlegraphic_box}
- }{
- \box_resize_to_ht:Nn \l__ptxcd_titlegraphic_box {\height}
- \dim_set:Nn \l_tmpa_dim {(\box_wd:N \l__ptxcd_titlegraphic_box - \width) / 2}
- \clipbox{\dim_eval:n{\l_tmpa_dim}~0pt~\dim_eval:n{\l_tmpa_dim}~0pt}{\box_use:N \l__ptxcd_titlegraphic_box}
- }
- }
- }{
- \def\inserttitlegraphic{#2}
- }
+\IfBooleanTF{#1}{
+\def\inserttitlegraphic{
+\hbox_set:Nn \l__ptxcd_titlegraphic_box {\raisebox{\depth}{#2}}
+\box_resize_to_wd:Nn \l__ptxcd_titlegraphic_box {\width}
+\dim_compare:nTF {\box_ht:N \l__ptxcd_titlegraphic_box - \height> \c_zero_dim}
+{
+\dim_set:Nn \l_tmpa_dim {.5\box_ht:N \l__ptxcd_titlegraphic_box - .5\height}
+\clipbox{0pt~\dim_eval:n{\l_tmpa_dim}~0pt~\dim_eval:n{\l_tmpa_dim}}{\box_use:N \l__ptxcd_titlegraphic_box}
+}{
+\box_resize_to_ht:Nn \l__ptxcd_titlegraphic_box {\height}
+\dim_set:Nn \l_tmpa_dim {(\box_wd:N \l__ptxcd_titlegraphic_box - \width) / 2}
+\clipbox{\dim_eval:n{\l_tmpa_dim}~0pt~\dim_eval:n{\l_tmpa_dim}~0pt}{\box_use:N \l__ptxcd_titlegraphic_box}
+}
+}
+}{
+\def\inserttitlegraphic{#2}
+}
}
-
\useinnertheme{TUDa\g__ptxcd_design_tl}
-
-% Blocks
\defbeamertemplate*{block~begin}{TUDa}{
- \par\vskip\medskipamount%
- \begin{beamercolorbox}[wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim,sep=.5pt,
- leftskip=\dim_eval:n {\dim_compare:nTF {\l__ptxcd_beamer_extraindent_dim>\c_zero_dim} {\l__ptxcd_beamer_extraindent_dim-\beamer@colbox@sep} {\__ptxcd_block_colorsep:}},
- ]{block~title}
- \ifx\insertblocktitle\@empty
- \else
- \begin{beamercolorbox}[colsep*=\__ptxcd_block_colorsep:,
- wd=\dimexpr\linewidth-1pt-1.5ex\relax]{block~title}
- \usebeamerfont*{block title}\insertblocktitle%
- \end{beamercolorbox}%
- \ifbeamercolorempty[bg]{block~title}
- {}
- {\ifbeamercolorempty[bg]{block~body}{}{\par\nointerlineskip\vskip-0.5pt}}%
- \leavevmode
- \fi
- \begin{beamercolorbox}[colsep*=\__ptxcd_block_colorsep:,vmode, wd=\dimexpr\linewidth-1.5ex-1pt\relax]{block~body}%
- \usebeamerfont{block~body}%
- \ifbeamercolorempty[bg]{block~body}{\vskip-.25ex}{\vskip-\__ptxcd_block_colorsep:}\vbox{}%
+\par\vskip\medskipamount%
+\begin{beamercolorbox}[wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim,sep=.5pt,
+leftskip=\dim_eval:n {\dim_compare:nTF {\l__ptxcd_beamer_extraindent_dim>\c_zero_dim} {\l__ptxcd_beamer_extraindent_dim-\beamer@colbox@sep} {\__ptxcd_block_colorsep:}},
+]{block~title}
+\ifx\insertblocktitle\@empty
+\else
+\begin{beamercolorbox}[colsep*=\__ptxcd_block_colorsep:,
+ wd=\dimexpr\linewidth-1pt-1.5ex\relax]{block~title}
+\usebeamerfont*{block title}\insertblocktitle%
+\end{beamercolorbox}%
+\ifbeamercolorempty[bg]{block~title}
+{}
+{\ifbeamercolorempty[bg]{block~body}{}{\par\nointerlineskip\vskip-0.5pt}}%
+\leavevmode
+\fi
+\begin{beamercolorbox}[colsep*=\__ptxcd_block_colorsep:,vmode, wd=\dimexpr\linewidth-1.5ex-1pt\relax]{block~body}%
+\usebeamerfont{block~body}%
+\ifbeamercolorempty[bg]{block~body}{\vskip-.25ex}{\vskip-\__ptxcd_block_colorsep:}\vbox{}%
}
\defbeamertemplate*{block~end}{TUDa}
- {\end{beamercolorbox}\end{beamercolorbox}\vskip\smallskipamount}
-
+{\end{beamercolorbox}\end{beamercolorbox}\vskip\smallskipamount}
\defbeamertemplate*{block~alerted~begin}{TUDa}{
- \par\vskip\medskipamount%
- \begin{beamercolorbox}[
- wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim,
- sep=1.5pt,
- leftskip=\dim_eval:n {\dim_compare:nTF {\l__ptxcd_beamer_extraindent_dim>\c_zero_dim} {\l__ptxcd_beamer_extraindent_dim-\beamer@colbox@sep} {\__ptxcd_block_colorsep:}},
- ]{block~frame~alerted}
- \ifx\insertblocktitle\@empty
- \else
- \begin{beamercolorbox}[wd=\dim_eval:n {\linewidth-1.5ex-3pt},colsep*=\__ptxcd_block_colorsep:]{block~title~alerted}
- \usebeamerfont*{block~title~alerted}\insertblocktitle%
- \end{beamercolorbox}%
- \vskip1.5pt\par\nointerlineskip
- \fi
- \leavevmode
- \usebeamerfont{block~body~alerted}%
- \begin{beamercolorbox}[wd=\dim_eval:n {\linewidth-1.5ex-3pt},colsep*=\__ptxcd_block_colorsep:]{block~body~alerted}%
+\par\vskip\medskipamount%
+\begin{beamercolorbox}[
+wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim,
+sep=1.5pt,
+leftskip=\dim_eval:n {\dim_compare:nTF {\l__ptxcd_beamer_extraindent_dim>\c_zero_dim} {\l__ptxcd_beamer_extraindent_dim-\beamer@colbox@sep} {\__ptxcd_block_colorsep:}},
+]{block~frame~alerted}
+\ifx\insertblocktitle\@empty
+\else
+\begin{beamercolorbox}[wd=\dim_eval:n {\linewidth-1.5ex-3pt},colsep*=\__ptxcd_block_colorsep:]{block~title~alerted}
+\usebeamerfont*{block~title~alerted}\insertblocktitle%
+\end{beamercolorbox}%
+\vskip1.5pt\par\nointerlineskip
+\fi
+\leavevmode
+\usebeamerfont{block~body~alerted}%
+\begin{beamercolorbox}[wd=\dim_eval:n {\linewidth-1.5ex-3pt},colsep*=\__ptxcd_block_colorsep:]{block~body~alerted}%
}
\defbeamertemplate*{block~alerted~end}{TUDa}
- {\end{beamercolorbox}\end{beamercolorbox}\vskip\smallskipamount}
-
-
+{\end{beamercolorbox}\end{beamercolorbox}\vskip\smallskipamount}
\defbeamertemplate*{block~example~begin}{TUDa}{
- \par\vskip\medskipamount%
- \begin{beamercolorbox}[
- wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim,
- sep=1.5pt,
- leftskip=\dim_eval:n {\dim_compare:nTF {\l__ptxcd_beamer_extraindent_dim>\c_zero_dim} {\l__ptxcd_beamer_extraindent_dim-\beamer@colbox@sep} {\__ptxcd_block_colorsep:}},
- ]{block~frame~example}
- \ifx\insertblocktitle\@empty
- \else
- \begin{beamercolorbox}[wd=\dim_eval:n {\linewidth-1.5ex-3pt},colsep*=\__ptxcd_block_colorsep:]{block~title~example}
- \usebeamerfont*{block~title~example}\insertblocktitle%
- \end{beamercolorbox}%
+\par\vskip\medskipamount%
+\begin{beamercolorbox}[
+wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim,
+sep=1.5pt,
+leftskip=\dim_eval:n {\dim_compare:nTF {\l__ptxcd_beamer_extraindent_dim>\c_zero_dim} {\l__ptxcd_beamer_extraindent_dim-\beamer@colbox@sep} {\__ptxcd_block_colorsep:}},
+]{block~frame~example}
+\ifx\insertblocktitle\@empty
+\else
+\begin{beamercolorbox}[wd=\dim_eval:n {\linewidth-1.5ex-3pt},colsep*=\__ptxcd_block_colorsep:]{block~title~example}
+\usebeamerfont*{block~title~example}\insertblocktitle%
+\end{beamercolorbox}%
\vskip1.5pt\par\nointerlineskip
- \fi
- \leavevmode
- \usebeamerfont{block~body~example}%
- \begin{beamercolorbox}[wd=\dim_eval:n {\linewidth-1.5ex-3pt},colsep*=\__ptxcd_block_colorsep:]{block~body~example}%
+\fi
+\leavevmode
+\usebeamerfont{block~body~example}%
+\begin{beamercolorbox}[wd=\dim_eval:n {\linewidth-1.5ex-3pt},colsep*=\__ptxcd_block_colorsep:]{block~body~example}%
}
\defbeamertemplate*{block~example~end}{TUDa}
- {\end{beamercolorbox}\end{beamercolorbox}\vskip\smallskipamount}
-
-
-
+{\end{beamercolorbox}\end{beamercolorbox}\vskip\smallskipamount}
\endinput
+%%
+%% End of file `beamerinnerthemeTUDa.sty'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2008.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2008.sty
index 55644e97664..7f846afb74b 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2008.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2008.sty
@@ -1,10 +1,18 @@
-%% This is file `beamerinnerthemeTUDa2008.sty' version 3.41 (2024-07-02),
+%%
+%% This is file `beamerinnerthemeTUDa2008.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% beamerinnerthemeTUDa.dtx (with options: `package,2008')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,105 +21,98 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\NeedsTeXFormat{LaTeX2e}[2022-06-01]
-\ProvidesExplPackage{beamerinnerthemeTUDa2008}{2024-04-21}{3.37}{Inner~beamer~theme~of~tuda-ci, compatibility for design of 2008}
-
+%%
+\NeedsTeXFormat{LaTeX2e}[2022/06/01]
+\ProvidesExplPackage{beamerinnerthemeTUDa2008}{2025-01-26}{4.00}{Inner beamer theme of tuda-ci, compatibility for design of 2008}
\mode<presentation>
-
\RequirePackage{beamerinnerthemeTUDa2008}
-
\defbeamertemplate*{title~ page}{TUDa}[1][]{
- \nointerlineskip
- \vspace{\dim_eval:n {-\c_ptxcd_largerule_dim}}
- \hbox_set:Nn \l__ptxcd_titlehead_box {
- \parbox{\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim}{%
- \begin{beamercolorbox}[
- wd=\linewidth,
- sep=\g__ptxcd_beamer_logosep_dim,
- ]{title}
- \raggedright
- \usebeamerfont{title}
- \skip_horizontal:n {1ex}
- \strut\parbox[t]{\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box-2ex\relax}{
- \inserttitle
- \par
- }
- \hspace{\fill}\raisebox{\dimexpr-\height+\ht\strutbox\relax}{\box_use:N \g__ptxcd_logo_box}
- \ifx\insertsubtitle\@empty
- \else
- \par\vspace{\c_ptxcd_largerule_dim}
- \skip_horizontal:n {1ex}\parbox[t]{\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box-2ex\relax}{
- \usebeamerfont{subtitle}\insertsubtitle
- }
- \fi
- \end{beamercolorbox}
-
- \bool_if:NT \g_ptxcd_authorontitle_bool {
- \par\nointerlineskip
- \begin{beamercolorbox}[
- wd=\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim,ht=\c_ptxcd_smallrule_dim,dp=\z@]{smallrule}
- \end{beamercolorbox}
- \par\nointerlineskip
- \begin{beamercolorbox}[
- wd=\linewidth,
- sep=\c_ptxcd_largerule_dim,
- ]{title}
- \raggedright
- \skip_horizontal:n {1ex}
- \parbox[t]{\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim-2ex\relax}{
- \ifx\insertauthor\@empty
- \else
- \usebeamercolor[fg]{author}\usebeamerfont{author}\insertauthor\par
- \fi
- \ifx\insertauthor\@empty
- \else
- \usebeamercolor[fg]{institute}\usebeamerfont{institute}\insertinstitute
- \fi
- }
- \end{beamercolorbox}
- }
- }
- }
- \box_use:N \l__ptxcd_titlehead_box
- \nointerlineskip\begin{beamercolorbox}[
- wd=\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim,ht=\c_ptxcd_smallrule_dim,dp=\z@]{smallrule}
- \end{beamercolorbox}
- \dim_set:Nn \l__ptxcd_titlegraphic_ht_dim {\textheight-\box_ht:N\l__ptxcd_titlehead_box-\box_dp:N \l__ptxcd_titlehead_box
- +\c_ptxcd_largerule_dim-.5\c_ptxcd_rulesep_dim-\c_ptxcd_smallrule_dim}
- \let\height\l__ptxcd_titlegraphic_ht_dim
- \dim_set:Nn \l__ptxcd_titlegraphic_wd_dim{\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim}
- \let\width\l__ptxcd_titlegraphic_wd_dim
- \nointerlineskip
- \begin{beamercolorbox}[wd=\width,center]{titlegraphic}
- \raisebox{-\c_ptxcd_largerule_dim}[\dim_eval:n {\height-\c_ptxcd_largerule_dim}][0pt]{\inserttitlegraphic}
- \end{beamercolorbox}
+\nointerlineskip
+\vspace{\dim_eval:n {-\c_ptxcd_largerule_dim}}
+\hbox_set:Nn \l__ptxcd_titlehead_box {
+\parbox{\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim}{%
+\begin{beamercolorbox}[
+wd=\linewidth,
+sep=\g__ptxcd_beamer_logosep_dim,
+]{title}
+\raggedright
+\usebeamerfont{title}
+\skip_horizontal:n {1ex}
+\strut\parbox[t]{\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box-2ex\relax}{
+\inserttitle
+\par
+}
+\hspace{\fill}\raisebox{\dimexpr-\height+\ht\strutbox\relax}{\box_use:N \g__ptxcd_logo_box}
+\ifx\insertsubtitle\@empty
+\else
+\par\vspace{\c_ptxcd_largerule_dim}
+\skip_horizontal:n {1ex}\parbox[t]{\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box-2ex\relax}{
+\usebeamerfont{subtitle}\insertsubtitle
+}
+\fi
+\end{beamercolorbox}
+\bool_if:NT \g_ptxcd_authorontitle_bool {
+\par\nointerlineskip
+\begin{beamercolorbox}[
+wd=\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim,ht=\c_ptxcd_smallrule_dim,dp=\z@]{smallrule}
+\end{beamercolorbox}
+\par\nointerlineskip
+\begin{beamercolorbox}[
+wd=\linewidth,
+sep=\c_ptxcd_largerule_dim,
+]{title}
+\raggedright
+\skip_horizontal:n {1ex}
+\parbox[t]{\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim-2ex\relax}{
+\ifx\insertauthor\@empty
+\else
+\usebeamercolor[fg]{author}\usebeamerfont{author}\insertauthor\par
+\fi
+\ifx\insertauthor\@empty
+\else
+\usebeamercolor[fg]{institute}\usebeamerfont{institute}\insertinstitute
+\fi
+}
+\end{beamercolorbox}
+}
+}
+}
+\box_use:N \l__ptxcd_titlehead_box
+\nointerlineskip\begin{beamercolorbox}[
+wd=\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim,ht=\c_ptxcd_smallrule_dim,dp=\z@]{smallrule}
+\end{beamercolorbox}
+\dim_set:Nn \l__ptxcd_titlegraphic_ht_dim {\textheight-\box_ht:N\l__ptxcd_titlehead_box-\box_dp:N \l__ptxcd_titlehead_box
++\c_ptxcd_largerule_dim-.5\c_ptxcd_rulesep_dim-\c_ptxcd_smallrule_dim}
+\let\height\l__ptxcd_titlegraphic_ht_dim
+\dim_set:Nn \l__ptxcd_titlegraphic_wd_dim{\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim}
+\let\width\l__ptxcd_titlegraphic_wd_dim
+\nointerlineskip
+\begin{beamercolorbox}[wd=\width,center]{titlegraphic}
+\raisebox{-\c_ptxcd_largerule_dim}[\dim_eval:n {\height-\c_ptxcd_largerule_dim}][0pt]{\inserttitlegraphic}
+\end{beamercolorbox}
}
-
-%Itemize Items
\defbeamertemplate*{itemize~item}{TUDa}{
- \usebeamerfont*{itemize~item}
- \raise\dimexpr.4\ht\strutbox-.4ex\hbox{\rule{.8ex}{.8ex}}
+\usebeamerfont*{itemize~item}
+\raise\dimexpr.4\ht\strutbox-.4ex\hbox{\rule{.8ex}{.8ex}}
}
\defbeamertemplate*{itemize~subitem}{TUDa}{
- \usebeamerfont*{itemize~subitem}
- \setlength{\fboxsep}{\z@}\setlength{\fboxrule}{1pt}
- \raise\dimexpr.4\ht\strutbox-.2ex-\fboxrule\hbox{\fbox{\color{bg}\rule{.4ex}{.4ex}}}
+\usebeamerfont*{itemize~subitem}
+\setlength{\fboxsep}{\z@}\setlength{\fboxrule}{1pt}
+\raise\dimexpr.4\ht\strutbox-.2ex-\fboxrule\hbox{\fbox{\color{bg}\rule{.4ex}{.4ex}}}
}
\defbeamertemplate*{itemize~subsubitem}{TUDa}{\usebeamerfont*{itemize~subsubitem}\hbox{--}}
-
\mode<all>
-
\endinput
-
+%%
+%% End of file `beamerinnerthemeTUDa2008.sty'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2023.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2023.sty
index e4780a9fefd..a9adc043a92 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2023.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2023.sty
@@ -1,10 +1,18 @@
-%% This is file `beamerinnerthemeTUDa2023.sty' version 3.41 (2024-07-02),
+%%
+%% This is file `beamerinnerthemeTUDa2023.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% beamerinnerthemeTUDa.dtx (with options: `package,2023')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,186 +21,150 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\NeedsTeXFormat{LaTeX2e}[2022/10/01]
-\ProvidesExplPackage{beamerinnerthemeTUDa2023}{2024-04-21}{3.37}{Inner~beamer~theme~of~tuda-ci,~Design~of~2023}
-
+%%
+\NeedsTeXFormat{LaTeX2e}[2022/06/01]
+\ProvidesExplPackage{beamerinnerthemeTUDa2023}{2025-01-26}{4.00}{Inner beamer theme of tuda-ci, Design of 2023}
\mode<presentation>
-
\RequirePackage{beamerinnerthemeTUDa}
-
\ExplSyntaxOff
\RequirePackage{multicol}
\ExplSyntaxOn
-
\AddToHook{begindocument}[ptxcd-titlegraphic]{
- \dim_set:Nn \l__ptxcd_titlegraphic_ht_dim {\paperheight}
- \dim_set:Nn \l__ptxcd_titlegraphic_wd_dim {\paperwidth}
+\dim_set:Nn \l__ptxcd_titlegraphic_ht_dim {\paperheight}
+\dim_set:Nn \l__ptxcd_titlegraphic_wd_dim {\paperwidth}
}
-
\defbeamertemplate*{titlegraphic}{TUDa2023}{{
- \def\width{\l__ptxcd_titlegraphic_wd_dim}
- \def\height{\l__ptxcd_titlegraphic_ht_dim}
- \usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par
- }}
-
+\def\width{\l__ptxcd_titlegraphic_wd_dim}
+\def\height{\l__ptxcd_titlegraphic_ht_dim}
+\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par
+}}
\def\ps@titlegraphic@titlepage{%
- \setbeamertemplate{background}{\usebeamertemplate{titlegraphic}}
- \@nameuse{ps@navigation}%
+\setbeamertemplate{background}{\usebeamertemplate{titlegraphic}}
+\@nameuse{ps@navigation}%
}
-
\defbeamertemplate*{title~page}{TUDa2023}[1][]
{
- \ifbeamer@plainframe
- \skip_vertical:n {\dimexpr\paperheight/38- \beamer@frametopskip}%
- \color{red}
- \hspace*{\fill}
- \raisebox{\dimexpr-\height+.33\c_ptxcd_logoheight_dim}{\includegraphics[height=\dim_use:N \c_ptxcd_logoheight_dim]{tuda_logo}}\hspace*{\dimexpr.7pt-\beamer@rightmargin}
- \par
- \vskip1.39\baselineskip
- \fi
- \vbox{}
- \thispagestyle{titlegraphic@titlepage}
- \vskip.185\paperheight
- \begingroup
- \centering
- \usebeamertemplate{title}
- % \vskip1em\par
- \bool_if:NT \g_ptxcd_authorontitle_bool {
- \usebeamertemplate{author}
- \usebeamertemplate{institute}
- }
- \usebeamertemplate{date}
- \endgroup
- \vfill
+\ifbeamer@plainframe
+\skip_vertical:n {\dimexpr\paperheight/38- \beamer@frametopskip}%
+\color{red}
+\hspace*{\fill}
+\raisebox{\dimexpr-\height+.33\c_ptxcd_logoheight_dim}{\includegraphics[height=\dim_use:N \c_ptxcd_logoheight_dim]{tuda_logo}}\hspace*{\dimexpr.7pt-\beamer@rightmargin}
+\par
+\vskip1.39\baselineskip
+\fi
+\vbox{}
+\thispagestyle{titlegraphic@titlepage}
+\vskip.185\paperheight
+\begingroup
+\centering
+\usebeamertemplate{title}
+\bool_if:NT \g_ptxcd_authorontitle_bool {
+\usebeamertemplate{author}
+\usebeamertemplate{institute}
+}
+\usebeamertemplate{date}
+\endgroup
+\vfill
}
-
\defbeamertemplate*{title}{TUDa2023}[1][]{%
- \begin{beamercolorbox}[sep=8pt,center,#1]{title}
- \usebeamerfont{title}\text_uppercase:n {\inserttitle}\par%
- \ifx\insertsubtitle\@empty%
- \else%
- \vskip.45em%
- {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}%
- \fi%
- \end{beamercolorbox}%
+\begin{beamercolorbox}[sep=8pt,center,#1]{title}
+\usebeamerfont{title}\text_uppercase:n {\inserttitle}\par%
+\ifx\insertsubtitle\@empty%
+\else%
+\vskip.45em%
+{\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}%
+\fi%
+\end{beamercolorbox}%
}
-
\defbeamertemplate{author}{TUDa2023}[1][]{%
- \begin{beamercolorbox}[sep=8pt,center,#1]{author}
- \usebeamerfont{author}\insertauthor
- \end{beamercolorbox}
+\begin{beamercolorbox}[sep=8pt,center,#1]{author}
+\usebeamerfont{author}\insertauthor
+\end{beamercolorbox}
}
-
\defbeamertemplate{institute}{TUDa2023}[1][]{%
- \begin{beamercolorbox}[sep=8pt,center,#1]{institute}
- \usebeamerfont{institute}\insertinstitute
- \end{beamercolorbox}
+\begin{beamercolorbox}[sep=8pt,center,#1]{institute}
+\usebeamerfont{institute}\insertinstitute
+\end{beamercolorbox}
}
-
\defbeamertemplate{date}{TUDa2023}[1][]{%
- \begin{beamercolorbox}[sep=8pt,center,#1]{date}
- \usebeamerfont{date}\insertdate
- \end{beamercolorbox}
+\begin{beamercolorbox}[sep=8pt,center,#1]{date}
+\usebeamerfont{date}\insertdate
+\end{beamercolorbox}
}
-
-% partner/sub logo
\box_new:N \g__ptxcd_partnerlogo_box
\dim_new:N \l__ptxcd_partnerlogo_ht_dim
\dim_gset:Nn \l__ptxcd_partnerlogo_ht_dim {.6\c_ptxcd_logoheight_dim}
\dim_new:N \l__ptxcd_partnerlogo_wd_dim
\dim_gset:Nn \l__ptxcd_partnerlogo_wd_dim {1.6\c_ptxcd_logoheight_dim}
-
\box_new:N \g__ptxcd_sublogo_box
\dim_new:N \l__ptxcd_sublogo_wd_dim
\dim_gset:Nn \l__ptxcd_sublogo_wd_dim {2.2\c_ptxcd_logoheight_dim}
\dim_new:N \l__ptxcd_sublogo_ht_dim
\dim_gset:Nn \l__ptxcd_sublogo_ht_dim {.6\c_ptxcd_logoheight_dim}
-
\cs_new:Nn \__ptxcd_setup_logo_box:nnn {
- \begingroup
- \def\width{\use:c {l__ptxcd_#2_wd_dim}}
- \def\height{\use:c {l__ptxcd_#2_ht_dim}}
- \IfBooleanTF{#1}{
- \hbox_gset:cn {g__ptxcd_#2_box} {#3}
- \box_gautosize_to_wd_and_ht_plus_dp:cnn {g__ptxcd_#2_box} {\width} {\height}
- } {
- \hbox_gset:cn {g__ptxcd_#2_box} {
- #3
- }
- }
- \endgroup
+\begingroup
+\def\width{\use:c {l__ptxcd_#2_wd_dim}}
+\def\height{\use:c {l__ptxcd_#2_ht_dim}}
+\IfBooleanTF{#1}{
+\hbox_gset:cn {g__ptxcd_#2_box} {#3}
+\box_gautosize_to_wd_and_ht_plus_dp:cnn {g__ptxcd_#2_box} {\width} {\height}
+} {
+\hbox_gset:cn {g__ptxcd_#2_box} {
+#3
+}
+}
+\endgroup
}
-
\NewDocumentCommand{\partnerlogo}{sm}{
- \__ptxcd_setup_logo_box:nnn {#1} {partnerlogo} {#2}
+\__ptxcd_setup_logo_box:nnn {#1} {partnerlogo} {#2}
}
-
\NewDocumentCommand{\sublogo}{sms}{
- \__ptxcd_setup_logo_box:nnn {#1} {sublogo} {#2}
- \IfBooleanT{#3}{
- \hbox_gset:Nn \g__ptxcd_sublogo_box {
- \hbox_unpack_drop:N \g__ptxcd_sublogo_box
- \hskip.6\l__ptxcd_sublogo_ht_dim
- }
- }
+\__ptxcd_setup_logo_box:nnn {#1} {sublogo} {#2}
+\IfBooleanT{#3}{
+\hbox_gset:Nn \g__ptxcd_sublogo_box {
+\hbox_unpack_drop:N \g__ptxcd_sublogo_box
+\hskip.6\l__ptxcd_sublogo_ht_dim
+}
+}
}
-
-% section page
\defbeamertemplate*{section~page}{TUDa2023}[1][]
{%
- \ifbeamer@inframe
- \begingroup
- \vbox{}
- \vspace{0pt plus 1 filll}
- \begin{beamercolorbox}[#1]{section title}
- \usebeamerfont{section~title}\text_uppercase:n {\secname}\par
- \end{beamercolorbox}
- {\usebeamerfont{section~name}\usebeamercolor[fg]{section~name}\sectionname{}~\insertsectionnumber}
- \par
- \skip_vertical:n {\c_ptxcd_logoheight_dim+\baselineskip}
- \endgroup
- \else
- \begin{frame}[b]
- \begin{beamercolorbox}[#1]{section title}
- \usebeamerfont{section~title}\text_uppercase:n {\secname}\par
- \end{beamercolorbox}
- {\usebeamerfont{section~name}\usebeamercolor[fg]{section~name}\sectionname{}~\insertsectionnumber}
- \skip_vertical:n {\c_ptxcd_logoheight_dim+\baselineskip}
- \end{frame}
- \fi
+\ifbeamer@inframe
+\begingroup
+\vbox{}
+\vspace{0pt plus 1 filll}
+\begin{beamercolorbox}[#1]{section title}
+\usebeamerfont{section~title}\text_uppercase:n {\secname}\par
+\end{beamercolorbox}
+{\usebeamerfont{section~name}\usebeamercolor[fg]{section~name}\sectionname{}~\insertsectionnumber}
+\par
+\skip_vertical:n {\c_ptxcd_logoheight_dim+\baselineskip}
+\endgroup
+\else
+\begin{frame}[b]
+\begin{beamercolorbox}[#1]{section title}
+\usebeamerfont{section~title}\text_uppercase:n {\secname}\par
+\end{beamercolorbox}
+{\usebeamerfont{section~name}\usebeamercolor[fg]{section~name}\sectionname{}~\insertsectionnumber}
+\skip_vertical:n {\c_ptxcd_logoheight_dim+\baselineskip}
+\end{frame}
+\fi
}
-
-% toc
-% original definition can be found in beamerbasetoc.sty which is part of the beamer package
-% Copyright 2003--2007 by Till Tantau
-% Copyright 2010 by Vedran Mileti\'c
-% Copyright 2012,2013,2015 by Vedran Mileti\'c, Joseph Wright
-% Copyright 2017,2018 by Louis Stuart, Joseph Wright
-% Copyright 2021 by Joseph Wright, samcarter
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file LICENSE.md for more details.
\ExplSyntaxOn
\cs_new:Nn \__ptxcd_toc_check: {
\int_compare:nNnT {\g__ptxcd_beamer_toc_col_int} = {3} {
-% if all subsections/subsubsections are hidden we can have two columns
-\str_if_eq:eeTF {
+\str_if_eq:eeTF {
\beamer@toc@css
\beamer@toc@oss
\beamer@toc@ooss
@@ -203,121 +175,100 @@
}{
\prg_replicate:nn {7} {hide}
}{
-% if all subsections/subsubsections are hidden standard twocolumn layout will be choosen
\int_set:Nn \g__ptxcd_beamer_toc_col_int {2}
} {
-% check if there are subsections/subsubsections
\int_gzero:N \g_tmpa_int
{\makeatletter%%
- \let\babel@toc\use_none:nn
- \let\beamer@sectionintoc \use_none:nnnnn
- \def\beamer@subsectionintoc##1##2##3##4##5##6{\int_gset:Nn \g_tmpa_int {1}\endinput}
- \def\beamer@subsubsectionintoc##1##2##3##4##5##6##7{\int_gset:Nn \g_tmpa_int {1}\endinput}
- \@input{\jobname.toc}%
+\let\babel@toc\use_none:nn
+\let\beamer@sectionintoc \use_none:nnnnn
+\def\beamer@subsectionintoc##1##2##3##4##5##6{\int_gset:Nn \g_tmpa_int {1}\endinput}
+\def\beamer@subsubsectionintoc##1##2##3##4##5##6##7{\int_gset:Nn \g_tmpa_int {1}\endinput}
+\@input{\jobname.toc}%
}
\int_compare:nNnT {\g_tmpa_int} = {1} {\int_set:Nn \g__ptxcd_beamer_toc_col_int {1}}
}
}
}
-
\def\beamer@twocoltableofcontents[#1]{%
- \begin{beamercolorbox}[wd=\paperwidth]{}%
- \def\beamer@toc@cs{show}%
- \def\beamer@toc@os{show}%
- \def\beamer@toc@css{show}%
- \def\beamer@toc@oss{show}%
- \def\beamer@toc@ooss{show}%
- \def\beamer@toc@csss{show}%
- \def\beamer@toc@osss{show}%
- \def\beamer@toc@oosss{show}%
- \def\beamer@toc@ooosss{show}%
- \beamer@showpartnumber=\c@part%
- \beamer@pausesectionsfalse%
- \beamer@pausesubsectionsfalse%
- \def\beamer@tocsections{<*>}%
- \setkeys{beamertoc}{firstsection=1}%
- \setkeys{beamertoc}{#1}%
- \UseName{__ptxcd_toc_check:}
- \int_compare:nNnT {\g__ptxcd_beamer_toc_col_int} > {1} {
- \setlength{\columnsep}{5ex}%
- \raggedcolumns
- \begin{multicols}{2}
- }
- {\makeatletter%
- \pause[0]%
- \@input{\jobname.toc}%
- }%
- \int_compare:nNnT {\g__ptxcd_beamer_toc_col_int} > {1} {
- \end{multicols}%
- }
- \end{beamercolorbox}%
- \vspace*{.68\baselineskip}%}
+\begin{beamercolorbox}[wd=\paperwidth]{}%
+\def\beamer@toc@cs{show}%
+\def\beamer@toc@os{show}%
+\def\beamer@toc@css{show}%
+\def\beamer@toc@oss{show}%
+\def\beamer@toc@ooss{show}%
+\def\beamer@toc@csss{show}%
+\def\beamer@toc@osss{show}%
+\def\beamer@toc@oosss{show}%
+\def\beamer@toc@ooosss{show}%
+\beamer@showpartnumber=\c@part%
+\beamer@pausesectionsfalse%
+\beamer@pausesubsectionsfalse%
+\def\beamer@tocsections{<*>}%
+\setkeys{beamertoc}{firstsection=1}%
+\setkeys{beamertoc}{#1}%
+\UseName{__ptxcd_toc_check:}
+\int_compare:nNnT {\g__ptxcd_beamer_toc_col_int} > {1} {
+\setlength{\columnsep}{5ex}%
+\raggedcolumns
+\begin{multicols}{2}
+}
+{\makeatletter%
+\pause[0]%
+\@input{\jobname.toc}%
+}%
+\int_compare:nNnT {\g__ptxcd_beamer_toc_col_int} > {1} {
+\end{multicols}%
+}
+\end{beamercolorbox}%
+\vspace*{.68\baselineskip}%}
}
-
\define@key{beamertoc}{columns}{\keys_set:nn {ptxcd/beamer/inner} {toc-columns=#1}}
-
\def\beamer@tableofcontents[#1]{%
- \ifbeamer@inframe
- \beamer@twocoltableofcontents[#1]
- \else
- \begin{frame}[b]{\contentsname}
- \beamer@twocoltableofcontents[#1]
- \end{frame}
- \fi
+\ifbeamer@inframe
+\beamer@twocoltableofcontents[#1]
+\else
+\begin{frame}[b]{\contentsname}
+\beamer@twocoltableofcontents[#1]
+\end{frame}
+\fi
}
-
-
-
\defbeamertemplate*{section~in~toc}{TUDa}{%
- \ifvmode\nointerlineskip\fi
- \leavevmode
- \ifnum\beamer@tempcount>\beamer@toclastsection
- \else
- \ifnum\beamer@tempcount>0\relax
- \usebeamertemplate***{toc~section~number}%
- \fi\fi%
- \usebeamertemplate***{section~entry}%
- \par
+\ifvmode\nointerlineskip\fi
+\leavevmode
+\ifnum\beamer@tempcount>\beamer@toclastsection
+\else
+\ifnum\beamer@tempcount>0\relax
+\usebeamertemplate***{toc~section~number}%
+\fi\fi%
+\usebeamertemplate***{section~entry}%
+\par
}
-
-
-% (sub-)section in toc: default
\cs_new:Nn \__ptxcd_toc_sub_level_entry_numbered:n {
- \exp_args:Nc \tl_if_blank:nF {inserttoc#1subsectionnumber}
- {\hphantom{0}\llap{\use:c {inserttoc#1subsectionnumber}}\hspace{.5em}}
+\exp_args:Nc \tl_if_blank:nF {inserttoc#1subsectionnumber}
+{\hphantom{0}\llap{\use:c {inserttoc#1subsectionnumber}}\hspace{.5em}}
}
-
\cs_new:Nn \__ptxcd_toc_sub_level_entry_itemize:n {
- \strut
- \usebeamertemplate{itemize~#1item}\hspace{.5em}
+\strut
+\usebeamertemplate{itemize~#1item}\hspace{.5em}
}
-
\defbeamertemplate*{subsection~in~toc}{TUDa}[1][false]{\leavevmode
- \leftskip=12.4mm
- \use:c {__ptxcd_toc_sub_level_entry_#1:n} {}
- \inserttocsubsection\par}
-
+\leftskip=12.4mm
+\use:c {__ptxcd_toc_sub_level_entry_#1:n} {}
+\inserttocsubsection\par}
\defbeamertemplate*{subsubsection~in~toc}{TUDa}[1][false]{\leavevmode
- \leftskip=\dimexpr12.4mm+.5em\relax
- \use:c {__ptxcd_toc_sub_level_entry_#1:n} {sub}
- \inserttocsubsubsection\par}
-
-
+\leftskip=\dimexpr12.4mm+.5em\relax
+\use:c {__ptxcd_toc_sub_level_entry_#1:n} {sub}
+\inserttocsubsubsection\par}
\defbeamertemplate*{toc~section~number}{TUDa}{
- \hphantom{00}\llap{\inserttocsectionnumber}\hspace{.5em}
+\hphantom{00}\llap{\inserttocsectionnumber}\hspace{.5em}
}
-
\defbeamertemplate*{section~entry}{TUDa}{
- \strut\inserttocsection\strut
+\strut\inserttocsection\strut
}
-
-
-%Itemize Items
\defbeamertemplate*{itemize~item}{TUDa}{\raise.2\baselineskip\hbox{\vrule width .5ex height .5ex}}
\defbeamertemplate*{itemize~subitem}{TUDa}{\raise.2\baselineskip\hbox{\small\vrule width .5ex height .5ex}}
\defbeamertemplate*{itemize~subsubitem}{TUDa}{\raise.2\baselineskip\hbox{\small\vrule width .5ex height 1ex}}
-
\mode<all>
-
\endinput
-
+%%
+%% End of file `beamerinnerthemeTUDa2023.sty'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa.sty
index 38f1a7b00a2..60f1ba60e22 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa.sty
@@ -1,10 +1,20 @@
-%% This is file `beamerouterthemeTUDa.sty' version 3.41 (2024-07-02),
+%%
+%% This is file `beamerouterthemeTUDa.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% beamerouterthemeTUDa.dtx (with options: `package,initialize,main')
+%% tuda-ci.dtx (with options: `options,beamer-outer')
+%% beamerouterthemeTUDa.dtx (with options: `package,main,body')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,212 +23,213 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\NeedsTeXFormat{LaTeX2e}[2022-06-01]
-\ProvidesExplPackage{beamerouterthemeTUDa}{2024-04-21}{3.37}{Outer~beamer~theme~of~tuda-ci~design~of~2023}
+%%
+\NeedsTeXFormat{LaTeX2e}[2022/06/01]
+\ProvidesExplPackage{beamerouterthemeTUDa}{2025-01-26}{4.00}{Outer beamer theme of tuda-ci design of 2023}
\PassOptionsToPackage{paper=slide}{tudarules}
\RequirePackage{tudarules}
-
+\bool_if_exist:NF \l_ptxcd_tmpa_bool {\bool_new:N \l_ptxcd_tmpa_bool}
\dim_new:N \l__ptxcd_beamer_extraindent_dim
\dim_new:N {\g__ptxcd_beamer_sep_dim}
\dim_gset:Nn \g__ptxcd_beamer_sep_dim {.3\c_ptxcd_logoheight_dim}
\dim_new:N \g__ptxcd_beamer_logosep_dim
\dim_gset:Nn \g__ptxcd_beamer_logosep_dim{2mm}
-
-
\cs_if_exist:NF \g__ptxcd_colorframetitle_bool {\bool_new:N \g__ptxcd_colorframetitle_bool}
-
\keys_define:nn {ptxcd/beamer/outer} {
- logo .bool_gset:N = \g_ptxcd_headlinelogo_bool,
- logo .default:n =true,
- logo .initial:n =true,
- logofile .tl_gset:N = \g_ptxcd_logofile_tl,
- logofile .initial:n = tuda_logo,
- colorframetitle .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {colorframetitle},
- centerframetitle .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {centerframetitle},
- framebgcolor .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {framebgcolor},
- singleframebgcolor .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {singleframebgcolor},
- headsepline .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {headsepline},
- extendedspace .bool_gset:N = \g__ptxcd_extended_space_bool,
- headrule .bool_gset:N = \g__ptxcd_headrule_bool,
- uppercase-frametitle .bool_gset:N = \g__ptxcd_uppercase_frametitle_bool,
- uppercase-frametitle .default:n = true,
- uppercase-frametitle .initial:n = true,
+ logo .bool_gset:N = \g_ptxcd_headlinelogo_bool,
+ logo .default:n =true,
+ logo .initial:n =true,
+ colorframetitle .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {colorframetitle},
+ centerframetitle
+ .code:n = \msg_warning:nnn {tudabeamer} {option-removed},
+ framebgcolor
+ .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {framebgcolor},
+ singleframebgcolor .code:n =
+ \msg_warning:nnn {tudabeamer} {option-removed} {singleframebgcolor},
+ headsepline
+ .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {headsepline},
+ extendedspace .bool_gset:N = \g__ptxcd_extended_space_bool,
+ headrule .bool_gset:N = \g__ptxcd_headrule_bool,
+ uppercase-frametitle .bool_gset:N = \g__ptxcd_uppercase_frametitle_bool,
+ uppercase-frametitle .default:n = true,
+ uppercase-frametitle .initial:n = true,
+ logofile .tl_gset:N = \g_ptxcd_logofile_tl,
+ logofile .initial:n = tuda_logo,
+ accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool,
+ accept-missing-logos .initial:n = false,
+ accept-missing-logos .usage:n = load,
+ accept-missing-logos .default:n = true,
+%% color options
+%% color options
}
-
-\define@key{beamerframe}{bgcolor}{
- \keys_set:nn {ptxcd/beamer/outer} {
- singleframebgcolor=#1
- }
+\cs_if_exist:NT \TUDaDefaultBuildOptions {
+ \exp_args:Ne \keys_set:ne { ptxcd /
+ beamer/outer
+ } {
+ \TUDaDefaultBuildOptions
+ }
+}
+\cs_new:Nn \__ptxcd_insert_logo: {
+ \bool_if:NTF \g_ptxcd_logo_workaround_bool {
+ \file_if_exist:nTF {\g_ptxcd_logofile_tl.pdf}
+ \use_ii:nn
+ \use_i:nn
+ } {
+ \use_ii:nn
+ }
+ {\rule{0pt}{\c_ptxcd_logoheight_dim}\makebox[2.5\c_ptxcd_logoheight_dim][c]{\rule[.1\c_ptxcd_logoheight_dim]{2.05\c_ptxcd_logoheight_dim}{.8\c_ptxcd_logoheight_dim}}}
+ {\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}
}
\define@key{beamerframe}{uppercase}{
- \keys_set:nn {ptxcd/beamer/outer} {
- uppercase-frametitle=#1
- }
+ \keys_set:nn {ptxcd/beamer/outer} {
+ uppercase-frametitle=#1
+ }
}
-
\ProcessKeyOptions[ptxcd/beamer/outer]
-
-
\mode<presentation>
-
\RequirePackage{graphicx}
-
-\bool_if:NT \g__ptxcd_colorframetitle_bool
- {\dim_set:Nn \l__ptxcd_beamer_extraindent_dim {\g__ptxcd_beamer_logosep_dim}}
-
\setbeamersize{
- text~margin~left=\dim_eval:n {\paperwidth/34},
- text~margin~right=\dim_eval:n {\paperwidth/38}
-}
+ text~margin~left=\dim_eval:n {
+ \paperwidth/34
+},
+ text~margin~right=\dim_eval:n {
+ \paperwidth/38
+ }
+}
\cs_new:Nn \__ptxcd_beamer_linewidth: {\dim_eval:n {\paperwidth-\beamer@leftmargin-\beamer@rightmargin}}
-
-%Logo
-
\box_new:N \g__ptxcd_logo_box
\hbox_gset:Nn \g__ptxcd_logo_box {%
- \raisebox{\dim_eval:n {-\height+.33\c_ptxcd_logoheight_dim}}{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}%
+ \raisebox{\dim_eval:n {-\height+.33\c_ptxcd_logoheight_dim}}
+ {\__ptxcd_insert_logo:}%
+}
+\RenewDocumentCommand{\logo}{sm}{
+\IfBooleanTF{#1}{
+\setbeamertemplate{logo}{\resizebox{!}{.06\beamer@paperheight}{\mbox{#2}}}
+}{
+\setbeamertemplate{logo}{#2}
+}
+}
+\newcommand*{\setupTUDaFrame}[1]{
+ \keys_set:nn {ptxcd/beamer/outer} {#1}
}
-
-\bool_if_exist:NF \l_ptxcd_tmpa_bool {\bool_new:N \l_ptxcd_tmpa_bool}
-
\defbeamertemplate*{footline}{TUDa2023}{
- \begin{beamercolorbox}[leftskip=\beamer@leftmargin,rightskip=\beamer@rightmargin]{footline}
- \usebeamerfont{footline}
- \rlap{\insertshortdate}
- \hfill
- \makebox[0pt][c]{
- \bool_set_false:N \l_ptxcd_separate_bool
- \clist_map_variable:nNn {department, institute, author} \l_tmpa_tl {
- \tl_if_empty:cF {beamer@short\l_tmpa_tl} {
- \bool_if:NTF \l_ptxcd_separate_bool
- {\usebeamertemplate{footline~sep}}
- {\bool_set_true:N \l_ptxcd_separate_bool}
- \use:c {insertshort\l_tmpa_tl}
- }
- }
- }
- \hfill
- \llap{\insertframenumber}
- \par\vspace{-\dp\strutbox}
- \end{beamercolorbox}
- \skip_vertical:n {\dimexpr\paperheight/32-\dp\strutbox}
+ \begin{beamercolorbox}[leftskip=\beamer@leftmargin,rightskip=\beamer@rightmargin]{footline}
+ \usebeamerfont{footline}
+ \rlap{\insertshortdate}
+ \hfill
+ \makebox[0pt][c]{
+ \bool_set_false:N \l_ptxcd_separate_bool
+ \clist_map_variable:nNn {department, institute, author} \l_tmpa_tl {
+ \tl_if_empty:cF {beamer@short\l_tmpa_tl} {
+ \bool_if:NTF \l_ptxcd_separate_bool
+ {\usebeamertemplate{footline~sep}}
+ {\bool_set_true:N \l_ptxcd_separate_bool}
+ \use:c {insertshort\l_tmpa_tl}
+ }
+ }
+ }
+ \hfill
+ \llap{\insertframenumber}
+ \par\vspace{-\dp\strutbox}
+ \end{beamercolorbox}
+ \skip_vertical:n {\dimexpr\paperheight/32-\dp\strutbox}
}
-
\setbeamertemplate{footline~sep}{\space\smash{\rule[-.5\dp\strutbox]{.25pt}{\ht\strutbox}}\space}
-
-\RenewDocumentCommand{\logo}{sm}{
- \IfBooleanTF{#1}{
- \setbeamertemplate{logo}{\resizebox{!}{.06\beamer@paperheight}{\mbox{#2}}}
- }{
- \setbeamertemplate{logo}{#2}
- }
-}
-
\defbeamertemplate*{headline}{TUDa2023}{
- \bool_if:NT \g__ptxcd_headrule_bool {
- \cs_if_exist:NF \ptxcd_beamer_headrule {
- \ptxcd_makeheadrule[color=identbarcolor,width=\paperwidth]{ptxcd_beamer_headrule}
- }
- \ptxcd_beamer_headrule\par\nointerlineskip
- }
- \bool_if:NTF \g__ptxcd_extended_space_bool {
- \bool_if:NTF \g__ptxcd_headrule_bool {
- \skip_vertical:n {\dim_eval:n {+\paperheight/38}}
- \strut
- } {
- \skip_vertical:n {\dim_eval:n {\paperheight/16}}
- }
- }{
- \skip_vertical:n {\dimexpr\paperheight/38}
- \hspace*{\beamer@leftmargin}\rlap{\usebeamertemplate***{title~in~head/foot}}
- }
- \hspace*{\fill}
-
- \bool_if:NT \g_ptxcd_headlinelogo_bool {
- %partnerlogo
- \bool_if:NT \g__ptxcd_extended_space_bool \smash {
- \raisebox{\dimexpr-\height+\ht\strutbox}{
- \box_use:N \g__ptxcd_partnerlogo_box
- }
- }
-
- \skip_horizontal:n {\dimexpr\paperheight/38}
- %logo
- \bool_if:NTF \g__ptxcd_headrule_bool {
- \raisebox{2mm}[0pt][0pt]{\setlength{\fboxsep}{\z@}\colorbox{white}{\rule{\z@}{\dim_eval:n {\box_ht:N \g__ptxcd_logo_box+\box_ht:N \ptxcd_beamer_headrule_box + \box_dp:N \ptxcd_beamer_headrule_box+1pt}}\box_use:N \g__ptxcd_logo_box}}
- \hspace*{10pt}
- } {
- \bool_if:NT \g__ptxcd_extended_space_bool \smash {\box_use:N \g__ptxcd_logo_box}
- \hspace*{.7pt}
- }
- }
- \par
+ \bool_if:NT \g__ptxcd_headrule_bool {
+ \cs_if_exist:NF \ptxcd_beamer_headrule {
+ \ptxcd_makeheadrule[color=identbarcolor,width=\paperwidth]{ptxcd_beamer_headrule}
+ }
+ \ptxcd_beamer_headrule\par\nointerlineskip
+ }
+ \bool_if:NTF \g__ptxcd_extended_space_bool {
+ \bool_if:NTF \g__ptxcd_headrule_bool {
+ \skip_vertical:n {\dim_eval:n {+\paperheight/38}}
+ \strut
+ } {
+ \skip_vertical:n {\dim_eval:n {\paperheight/16}}
+ }
+ }{
+ \skip_vertical:n {\dimexpr\paperheight/38}
+ \hspace*{\beamer@leftmargin}\rlap{\usebeamertemplate***{title~in~head/foot}}
+ }
+ \hspace*{\fill}
+ \bool_if:NT \g_ptxcd_headlinelogo_bool {
+ %partnerlogo
+ \bool_if:NT \g__ptxcd_extended_space_bool \smash {
+ \raisebox{\dimexpr-\height+\ht\strutbox}{
+ \box_use:N \g__ptxcd_partnerlogo_box
+ }
+ }
+ \skip_horizontal:n {\dimexpr\paperheight/38}
+ %logo
+ \bool_if:NTF \g__ptxcd_headrule_bool {
+ \raisebox{2mm}[0pt][0pt]{\setlength{\fboxsep}{\z@}\colorbox{white}{\rule{\z@}{\dim_eval:n {\box_ht:N \g__ptxcd_logo_box+\box_ht:N \ptxcd_beamer_headrule_box + \box_dp:N \ptxcd_beamer_headrule_box+1pt}}\box_use:N \g__ptxcd_logo_box}}
+ \hspace*{10pt}
+ } {
+ \bool_if:NT \g__ptxcd_extended_space_bool \smash {\box_use:N \g__ptxcd_logo_box}
+ \hspace*{.7pt}
+ }
+ }
+ \par
}
-
\setbeamertemplate{title~in~head/foot}{
- \bool_set_false:N \l_ptxcd_separate_bool
- \tl_if_empty:NF {\beamer@shorttitle} {
- \bool_set_true:N \l_ptxcd_separate_bool
- \text_uppercase:n {\beamer@shorttitle}
- }
- \tl_if_empty:NF {\beamer@shortauthor} {
- \bool_if:NT \l_ptxcd_separate_bool {
- \space/\space
- }
- \text_uppercase:n {\beamer@shortauthor}
- }
+ \bool_set_false:N \l_ptxcd_separate_bool
+ \tl_if_empty:NF {\beamer@shorttitle} {
+ \bool_set_true:N \l_ptxcd_separate_bool
+ \text_uppercase:n {\beamer@shorttitle}
+ }
+ \tl_if_empty:NF {\beamer@shortauthor} {
+ \bool_if:NT \l_ptxcd_separate_bool {
+ \space/\space
+ }
+ \text_uppercase:n {\beamer@shortauthor}
+ }
}
-
-
\defbeamertemplate*{sidebar~right}{TUDa2023}{
- \bool_if:NT \g_ptxcd_headlinelogo_bool {
- \vspace{\c_ptxcd_logoheight_dim}
- \llap{\box_use:N \g__ptxcd_sublogo_box}
- }
+ \bool_if:NT \g_ptxcd_headlinelogo_bool {
+ \vspace{\c_ptxcd_logoheight_dim}
+ \llap{\box_use:N \g__ptxcd_sublogo_box}
+ }
}
-
\defbeamertemplate*{frametitle}{TUDa2023}[1][left]{%
- \nointerlineskip%
- \bool_if:NF \g__ptxcd_extended_space_bool
- {\vskip.55ex}
- \begin{beamercolorbox}[
- wd=\dim_eval:n {\bool_if:NT \g__ptxcd_extended_space_bool {-\box_wd:N \g__ptxcd_logo_box } \box_if_empty:NF \g__ptxcd_sublogo_box {-\box_wd:N \g__ptxcd_sublogo_box - 1em}+ \textwidth},
- ]{frametitle}
- \usebeamerfont{frametitle}%
- \if@tempswa\else\csname beamer@fte#1\endcsname\fi%
- \vphantom{Ü}
- \bool_if:NT \g__ptxcd_uppercase_frametitle_bool \text_uppercase:n {\insertframetitle}\strut
- \par%
- {%
- \ifx\insertframesubtitle\@empty%
- \else%
- {\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\strut\text_uppercase:n {\insertframesubtitle}\strut\par}%
- \fi
- }%
- \if@tempswa\else\vskip-.3cm\fi% set inside beamercolorbox... evil here...
- \end{beamercolorbox}
- \vskip.5ex
-}
-\newcommand*{\setupTUDaFrame}[1]{
- \keys_set:nn {ptxcd/beamer/outer} {#1}
+ \nointerlineskip%
+ \bool_if:NF \g__ptxcd_extended_space_bool
+ {\vskip.55ex}
+ \begin{beamercolorbox}[
+ wd=\dim_eval:n {\bool_if:NT \g__ptxcd_extended_space_bool {-\box_wd:N \g__ptxcd_logo_box } \box_if_empty:NF \g__ptxcd_sublogo_box {-\box_wd:N \g__ptxcd_sublogo_box - 1em}+ \textwidth},
+ ]{frametitle}
+ \usebeamerfont{frametitle}%
+ \if@tempswa\else\csname beamer@fte#1\endcsname\fi%
+ \vphantom{Ü}
+ \bool_if:NT \g__ptxcd_uppercase_frametitle_bool \text_uppercase:n {\insertframetitle}\strut
+ \par%
+ {%
+ \ifx\insertframesubtitle\@empty%
+ \else%
+ {\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\strut\text_uppercase:n {\insertframesubtitle}\strut\par}%
+ \fi
+ }%
+ \if@tempswa\else\vskip-.3cm\fi% set inside beamercolorbox... evil here...
+ \end{beamercolorbox}
+ \vskip.5ex
}
-
\mode
<all>
-
\endinput
+%%
+%% End of file `beamerouterthemeTUDa.sty'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa2008.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa2008.sty
index b74da09f609..923b395e258 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa2008.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa2008.sty
@@ -1,10 +1,21 @@
-%% This is file `beamerouterthemeTUDa2008.sty' version 3.41 (2024-07-02),
+%%
+%% This is file `beamerouterthemeTUDa2008.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% beamerouterthemeTUDa.dtx (with options: `package,initialize,2008')
+%% tuda-ci.dtx (with options: `options,beamer-outer')
+%% beamerouterthemeTUDa.dtx (with options: `package,2008,body')
+%% beamerthemeTUDa2008.dtx (with options: `outer')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,168 +24,178 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{beamerouterthemeTUDa2008}{2024-04-21}{3.37}{Outer~beamer~theme~of~tuda-ci, compatibility for design of 2008}
+%%
+\NeedsTeXFormat{LaTeX2e}[2022/06/01]
+\ProvidesExplPackage{beamerouterthemeTUDa2008}{2025-01-26}{4.00}{Outer beamer theme of tuda-ci, compatibility for design of 2008}
\PassOptionsToPackage{paper=slide}{tudarules}
\RequirePackage{tudarules}
-
+\bool_if_exist:NF \l_ptxcd_tmpa_bool {\bool_new:N \l_ptxcd_tmpa_bool}
\dim_new:N \l__ptxcd_beamer_extraindent_dim
\dim_new:N {\g__ptxcd_beamer_sep_dim}
\dim_gset:Nn \g__ptxcd_beamer_sep_dim {.3\c_ptxcd_logoheight_dim}
\dim_new:N \g__ptxcd_beamer_logosep_dim
\dim_gset:Nn \g__ptxcd_beamer_logosep_dim{2mm}
-
-
\cs_if_exist:NF \g__ptxcd_colorframetitle_bool {\bool_new:N \g__ptxcd_colorframetitle_bool}
-
\keys_define:nn {ptxcd/beamer/outer} {
- logo .bool_gset:N = \g_ptxcd_headlinelogo_bool,
- logo .default:n =true,
- logo .initial:n =true,
- logofile .tl_gset:N = \g_ptxcd_logofile_tl,
- logofile .initial:n = tuda_logo,
- colorframetitle .code:n = {
- \use:c {bool_gset_#1:N} \g__ptxcd_colorframetitle_bool
- \cs_if_exist_use:N \__ptxcd_setup_frametitle_color:
- },
- colorframetitle .default:n = true,
- centerframetitle .bool_gset:N = \g_ptxcd_centerframetitle_bool,
- centerframetitle .initial:n = false,
- centerframetitle .default:n = true,
- framebgcolor .choice:,
- framebgcolor / reset .code:n =
- \__ptxcd_reset_framebgcolor:
- ,
- framebgcolor / unknown .code:n = {
- \__ptxcd_set_framebgcolor:n {#1}
- },
- singleframebgcolor .code:n = {
- \cs_gset_eq:Nc \__ptxcd_save_background_canvas: {beamer@thcbg@normal~text}
- \keys_set:nn {ptxcd/beamer/outer} {
- framebgcolor = #1
- }
- },
- headsepline .bool_gset:N = \g_ptxcd_headsepline_bool,
- headsepline .initial:n = true,
- headsepline .default:n = true,
+ logo .bool_gset:N = \g_ptxcd_headlinelogo_bool,
+ logo .default:n =true,
+ logo .initial:n =true,
+ colorframetitle .choices:nn = {true, false} {
+ \use:c {bool_gset_ \l_keys_choice_tl :N} \g__ptxcd_colorframetitle_bool
+ \cs_if_exist_use:N \__ptxcd_setup_frametitle_color:
+ },
+ colorframetitle .default:n = true,
+ centerframetitle
+ .bool_gset:N = \g_ptxcd_centerframetitle_bool,
+ centerframetitle .initial:n = false,
+ centerframetitle .default:n = true,
+ framebgcolor
+ .choice:,
+ framebgcolor / reset .code:n =
+ \__ptxcd_reset_framebgcolor:
+ ,
+ framebgcolor / unknown .code:n = {
+ \__ptxcd_set_framebgcolor:n {#1}
+ },
+ singleframebgcolor .code:n =
+ \cs_gset_eq:Nc \__ptxcd_save_background_canvas: {beamer@thcbg@normal~text}
+ \keys_set:nn {ptxcd/beamer/outer} {
+ framebgcolor = #1
+ },
+ headsepline
+ .bool_gset:N = \g_ptxcd_headsepline_bool,
+ headsepline .initial:n = true,
+ headsepline .default:n = true,
+ logofile .tl_gset:N = \g_ptxcd_logofile_tl,
+ logofile .initial:n = tuda_logo,
+ accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool,
+ accept-missing-logos .initial:n = false,
+ accept-missing-logos .usage:n = load,
+ accept-missing-logos .default:n = true,
+%% color options
+%% color options
+}
+\cs_if_exist:NT \TUDaDefaultBuildOptions {
+ \exp_args:Ne \keys_set:ne { ptxcd /
+ beamer/outer
+ } {
+ \TUDaDefaultBuildOptions
+ }
+}
+\cs_new:Nn \__ptxcd_insert_logo: {
+ \bool_if:NTF \g_ptxcd_logo_workaround_bool {
+ \file_if_exist:nTF {\g_ptxcd_logofile_tl.pdf}
+ \use_ii:nn
+ \use_i:nn
+ } {
+ \use_ii:nn
+ }
+ {\rule{0pt}{\c_ptxcd_logoheight_dim}\makebox[2.5\c_ptxcd_logoheight_dim][c]{\rule[.1\c_ptxcd_logoheight_dim]{2.05\c_ptxcd_logoheight_dim}{.8\c_ptxcd_logoheight_dim}}}
+ {\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}
}
\define@key{beamerframe}{bgcolor}{
- \keys_set:nn {ptxcd/beamer/outer} {
- singleframebgcolor=#1
- }
+ \keys_set:nn {ptxcd/beamer/outer} {
+ singleframebgcolor=#1
+ }
}
-
\cs_new:Nn \__ptxcd_reset_framebgcolor: {
- \cs_gset_eq:cN {beamer@thcbg@normal~text} \__ptxcd_save_background_canvas:
- \cs_undefine:N \__ptxcd_save_background_canvas:
+ \cs_gset_eq:cN {beamer@thcbg@normal~text} \__ptxcd_save_background_canvas:
+ \cs_undefine:N \__ptxcd_save_background_canvas:
}
\cs_new:Nn \__ptxcd_set_framebgcolor:n {
- \cs_if_exist:cTF {\string\color@#1}
- {\setbeamercolor{normal~text}{bg=#1}}
- {\setbeamercolor{normal~text}{bg=TUDa-#1}}
+ \cs_if_exist:cTF {\string\color@#1}
+ {\setbeamercolor{normal~text}{bg=#1}}
+ {\setbeamercolor{normal~text}{bg=TUDa-#1}}
}
\BeforeBeginEnvironment{frame}{
- \cs_if_exist:NT \__ptxcd_save_background_canvas: {
- \__ptxcd_reset_framebgcolor:
- }
+ \cs_if_exist:NT \__ptxcd_save_background_canvas: {
+ \__ptxcd_reset_framebgcolor:
+ }
}
-
\ProcessKeyOptions[ptxcd/beamer/outer]
-
-
\mode<presentation>
-
-
\RequirePackage{graphicx}
-
\bool_if:NT \g__ptxcd_colorframetitle_bool
- {\dim_set:Nn \l__ptxcd_beamer_extraindent_dim {\g__ptxcd_beamer_logosep_dim}}
+ {\dim_set:Nn \l__ptxcd_beamer_extraindent_dim {\g__ptxcd_beamer_logosep_dim}}
\setbeamersize{
- text~margin~left=\dimexpr\g__ptxcd_beamer_sep_dim+\l__ptxcd_beamer_extraindent_dim \relax,
- text~margin~right=\dimexpr\g__ptxcd_beamer_sep_dim+\l__ptxcd_beamer_extraindent_dim \relax,
-}
+ text~margin~left=\dim_eval:n {
+ \g__ptxcd_beamer_sep_dim+\l__ptxcd_beamer_extraindent_dim
+},
+ text~margin~right=\dim_eval:n {
+ \g__ptxcd_beamer_sep_dim+\l__ptxcd_beamer_extraindent_dim
+ }
+}
\cs_new:Nn \__ptxcd_beamer_linewidth: {\dim_eval:n {\paperwidth-\beamer@leftmargin-\beamer@rightmargin}}
-
-%Logo
-
\box_new:N \g__ptxcd_logo_box
\hbox_gset:Nn \g__ptxcd_logo_box {%
- \makebox[\__ptxcd_logowidth:][l]{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}%
+ \makebox[\__ptxcd_logowidth:][l]
+ {\__ptxcd_insert_logo:}%
+}
+\RenewDocumentCommand{\logo}{sm}{
+\IfBooleanTF{#1}{
+\setbeamertemplate{logo}{\resizebox{!}{.06\beamer@paperheight}{\mbox{#2}}}
+}{
+\setbeamertemplate{logo}{#2}
+}
+}
+\newcommand*{\setupTUDaFrame}[1]{
+ \keys_set:nn {ptxcd/beamer/outer} {#1}
+ \ptxcd_setup_frame:
}
-
\ptxcd_makeheadrule[color=identbarcolor,width=\paperwidth-2\g__ptxcd_beamer_sep_dim]{ptxcd_beamer_headrule}
\ptxcd_makefootrule[width=\paperwidth-2\g__ptxcd_beamer_sep_dim]{ptxcd_beamer_rule}
-
-\newcommand\insertsmalllogo{\setbeamertemplate{logo}[small]\usebeamertemplate{logo}}
-
\defbeamertemplate*{sidebar~left}{TUDa}{}
\defbeamertemplate*{sidebar~right}{TUDa}{}
-
\bool_if_exist:NF \l_ptxcd_tmpa_bool {\bool_new:N \l_ptxcd_tmpa_bool}
-
\defbeamertemplate*{footline}{TUDa}
{
- \begin{beamercolorbox}[leftskip=\g__ptxcd_beamer_sep_dim,rightskip=\g__ptxcd_beamer_sep_dim,
- ht=\csname c_ptxcd_smallrule_dim\endcsname,dp=1mm]{footline}
- \ptxcd_beamer_rule
- \end{beamercolorbox}
- \begin{beamercolorbox}[
- leftskip=\g__ptxcd_beamer_sep_dim,
- rightskip=\g__ptxcd_beamer_sep_dim, ht=2.75mm,dp=2.75mm]{footline}
- \usebeamerfont{author~ in~ head/foot}%
- \bool_set_false:N \l_ptxcd_tmpa_bool
- \clist_map_variable:nNn {date, department, institute, author} \l_tmpa_tl {
- \tl_if_empty:cF {beamer@short\l_tmpa_tl} {
- \bool_if:NTF \l_ptxcd_tmpa_bool {~|~}
- {\bool_set_true:N \l_ptxcd_tmpa_bool}
- \use:c {insertshort\l_tmpa_tl}
- }
- }
- \bool_if:NT \l_ptxcd_tmpa_bool {~|~}
- \insertframenumber
- \hfill\raisebox{\dimexpr-.5\height+\dp\strutbox\relax}{\insertlogo}
- \end{beamercolorbox}
+\begin{beamercolorbox}[leftskip=\g__ptxcd_beamer_sep_dim,rightskip=\g__ptxcd_beamer_sep_dim,
+ht=\csname c_ptxcd_smallrule_dim\endcsname,dp=1mm]{footline}
+\ptxcd_beamer_rule
+\end{beamercolorbox}
+\begin{beamercolorbox}[
+leftskip=\g__ptxcd_beamer_sep_dim,
+rightskip=\g__ptxcd_beamer_sep_dim, ht=2.75mm,dp=2.75mm]{footline}
+\usebeamerfont{author~ in~ head/foot}%
+\bool_set_false:N \l_ptxcd_tmpa_bool
+\clist_map_variable:nNn {date, department, institute, author} \l_tmpa_tl {
+\tl_if_empty:cF {beamer@short\l_tmpa_tl} {
+\bool_if:NTF \l_ptxcd_tmpa_bool {~|~}
+{\bool_set_true:N \l_ptxcd_tmpa_bool}
+\use:c {insertshort\l_tmpa_tl}
}
-
-
-
-\RenewDocumentCommand{\logo}{sm}{
- \IfBooleanTF{#1}{
- \setbeamertemplate{logo}{\resizebox{!}{.06\beamer@paperheight}{\mbox{#2}}}
- }{
- \setbeamertemplate{logo}{#2}
- }
+}
+\bool_if:NT \l_ptxcd_tmpa_bool {~|~}
+\insertframenumber
+\hfill\raisebox{\dimexpr-.5\height+\dp\strutbox\relax}{\insertlogo}
+\end{beamercolorbox}
}
\defbeamertemplate{headline}{TUDa.logo} {%
- \begin{beamercolorbox}[
- leftskip=\g__ptxcd_beamer_sep_dim,rightskip=\g__ptxcd_beamer_sep_dim,
- ht=.75\g__ptxcd_beamer_sep_dim,dp=\box_dp:N \ptxcd_beamer_headrule_box]{headline}
- \ptxcd_beamer_headrule
- \end{beamercolorbox}
+\begin{beamercolorbox}[
+leftskip=\g__ptxcd_beamer_sep_dim,rightskip=\g__ptxcd_beamer_sep_dim,
+ht=.75\g__ptxcd_beamer_sep_dim,dp=\box_dp:N \ptxcd_beamer_headrule_box]{headline}
+\ptxcd_beamer_headrule
+\end{beamercolorbox}
}
-
-
\box_new:N \l__ptxcd_frametitle_box
-
\defbeamertemplate{frametitle}{TUDa.logo}{%
\nointerlineskip%
\begin{beamercolorbox}[
@@ -182,125 +203,113 @@
wd=\dim_eval:n {\__ptxcd_beamer_linewidth:+2\l__ptxcd_beamer_extraindent_dim},
rightskip=-\g__ptxcd_beamer_logosep_dim,
leftskip=\dim_eval:n {-\g__ptxcd_beamer_logosep_dim+\l__ptxcd_beamer_extraindent_dim},
- ]{frametitle}
- \hbox_set:Nn \l__ptxcd_frametitle_box {
- \parbox[t]
- {\dim_eval:n {\linewidth- \box_wd:N \g__ptxcd_logo_box-1em}}{%
- \usebeamerfont{frametitle}\strut\insertframetitle
- \ifx\insertframesubtitle\@empty
- \else
- \par
- \usebeamercolor[fg]{framesubtitle}
- \usebeamerfont{framesubtitle}
- \insertframesubtitle
- \fi
- }}
- \leavevmode
- \bool_if:NTF \g_ptxcd_centerframetitle_bool
- {\raisebox{\dimexpr-.5\height+.5\depth}}
- {\use:n}
- {\box_use:N \l__ptxcd_frametitle_box}
- \hfill%
- \bool_if:NTF \g_ptxcd_centerframetitle_bool
- {\raisebox{\dimexpr-.5\height+.5\depth}}
- {\raisebox{\dimexpr-\height+\ht\strutbox}}
- {\box_use:N \g__ptxcd_logo_box}
+]{frametitle}
+\hbox_set:Nn \l__ptxcd_frametitle_box {
+\parbox[t]
+{\dim_eval:n {\linewidth- \box_wd:N \g__ptxcd_logo_box-1em}}{%
+\usebeamerfont{frametitle}\strut\insertframetitle
+\ifx\insertframesubtitle\@empty
+\else
+\par
+\usebeamercolor[fg]{framesubtitle}
+\usebeamerfont{framesubtitle}
+\insertframesubtitle
+\fi
+}}
+\leavevmode
+\bool_if:NTF \g_ptxcd_centerframetitle_bool
+{\raisebox{\dimexpr-.5\height+.5\depth}}
+{\use:n}
+{\box_use:N \l__ptxcd_frametitle_box}
+\hfill%
+\bool_if:NTF \g_ptxcd_centerframetitle_bool
+{\raisebox{\dimexpr-.5\height+.5\depth}}
+{\raisebox{\dimexpr-\height+\ht\strutbox}}
+{\box_use:N \g__ptxcd_logo_box}
\end{beamercolorbox}%
\bool_if:NT \g_ptxcd_headsepline_bool {
- \nointerlineskip
- \begin{beamercolorbox}[
- wd=\dim_eval:n {\textwidth+2\l__ptxcd_beamer_extraindent_dim},
- ht=\c_ptxcd_smallrule_dim,
- dp=0pt
- ]{smallrule}
- \end{beamercolorbox}
+\nointerlineskip
+\begin{beamercolorbox}[
+wd=\dim_eval:n {\textwidth+2\l__ptxcd_beamer_extraindent_dim},
+ht=\c_ptxcd_smallrule_dim,
+dp=0pt
+]{smallrule}
+\end{beamercolorbox}
}
}
-
\defbeamertemplate*{headline}{TUDa.nologo}
{%
- \vspace{.75\g__ptxcd_beamer_sep_dim}
- \begin{beamercolorbox}[
- leftskip=\g__ptxcd_beamer_sep_dim,rightskip=\g__ptxcd_beamer_sep_dim]{headline}
- \ptxcd_beamer_headrule
- \end{beamercolorbox}
- }
-
+\vspace{.75\g__ptxcd_beamer_sep_dim}
+\begin{beamercolorbox}[
+leftskip=\g__ptxcd_beamer_sep_dim,rightskip=\g__ptxcd_beamer_sep_dim]{headline}
+\ptxcd_beamer_headrule
+\end{beamercolorbox}
+}
\defbeamertemplate*{headline}{TUDa.simple}
{
- \ifbeamercolorempty[bg]{background~canvas}{
- \vspace{\dimexpr.5\c_ptxcd_logoheight_dim-\c_ptxcd_rulesep_dim}
- \skip_horizontal:n {\beamer@leftmargin}
- \color{identbarcolor}
- \vrule width\dimexpr\textwidth-\beamer@leftmargin-\beamer@rightmargin height\c_ptxcd_rulesep_dim
- }{
- \vspace{\dimexpr.5\c_ptxcd_logoheight_dim}
- }
+\ifbeamercolorempty[bg]{background~canvas}{
+\vspace{\dimexpr.5\c_ptxcd_logoheight_dim-\c_ptxcd_rulesep_dim}
+\skip_horizontal:n {\beamer@leftmargin}
+\color{identbarcolor}
+\vrule width\dimexpr\textwidth-\beamer@leftmargin-\beamer@rightmargin height\c_ptxcd_rulesep_dim
+}{
+\vspace{\dimexpr.5\c_ptxcd_logoheight_dim}
+}
}
-
\defbeamertemplate*{frametitle}{TUDa.nologo}{%
- \nointerlineskip%
+\nointerlineskip%
\begin{beamercolorbox}[
sep=\g__ptxcd_beamer_logosep_dim,
wd=\dim_eval:n {\__ptxcd_beamer_linewidth:+2\l__ptxcd_beamer_extraindent_dim},
leftskip=\dim_eval:n {-\g__ptxcd_beamer_logosep_dim+\l__ptxcd_beamer_extraindent_dim},
- ]{frametitle}
- \hbox_set:Nn \l__ptxcd_frametitle_box {
- \parbox[t]
- {\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box-1em\relax\relax}{%
- \usebeamerfont{frametitle}\strut\insertframetitle
- \ifx\insertframesubtitle\@empty
- \else
- \par
- \usebeamercolor[fg]{framesubtitle}
- \usebeamerfont{framesubtitle}
- \insertframesubtitle
- \fi
+]{frametitle}
+\hbox_set:Nn \l__ptxcd_frametitle_box {
+\parbox[t]
+{\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box-1em\relax\relax}{%
+\usebeamerfont{frametitle}\strut\insertframetitle
+\ifx\insertframesubtitle\@empty
+\else
+\par
+\usebeamercolor[fg]{framesubtitle}
+\usebeamerfont{framesubtitle}
+\insertframesubtitle
+\fi
}}
\leavevmode
\bool_if:NTF \g_ptxcd_centerframetitle_bool
{\raisebox{\dimexpr-.5\height+.5\depth}}
{\use:n}
{\box_use:N \l__ptxcd_frametitle_box}
-% Rule for voffset similar to logo
- \rule[\dim_eval:n {
- \bool_if:NTF \g_ptxcd_centerframetitle_bool
- {-.5\box_ht:N \g__ptxcd_logo_box+.5\box_dp:N \g__ptxcd_logo_box}
- {-\box_ht:N \g__ptxcd_logo_box+\ht\strutbox}
- }]{0pt}{\dim_eval:n {
- \box_ht:N \g__ptxcd_logo_box+\box_dp:N \g__ptxcd_logo_box
- }}
+\rule[\dim_eval:n {
+\bool_if:NTF \g_ptxcd_centerframetitle_bool
+{-.5\box_ht:N \g__ptxcd_logo_box+.5\box_dp:N \g__ptxcd_logo_box}
+{-\box_ht:N \g__ptxcd_logo_box+\ht\strutbox}
+}]{0pt}{\dim_eval:n {
+\box_ht:N \g__ptxcd_logo_box+\box_dp:N \g__ptxcd_logo_box
+}}
\end{beamercolorbox}
\bool_if:NT \g_ptxcd_headsepline_bool {
- \nointerlineskip
- \begin{beamercolorbox}[
- wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim \relax,
- ht=\c_ptxcd_smallrule_dim,
- dp=0pt
- ]{smallrule}
- \end{beamercolorbox}
+\nointerlineskip
+\begin{beamercolorbox}[
+wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim \relax,
+ht=\c_ptxcd_smallrule_dim,
+dp=0pt
+]{smallrule}
+\end{beamercolorbox}
}
}
-
\cs_new:Nn \ptxcd_setup_frame: {
- \bool_if:NTF \g_ptxcd_headlinelogo_bool {
- \setbeamertemplate{frametitle}[TUDa.logo]
- \setbeamertemplate{headline}[TUDa.logo]
- }{
- \setbeamertemplate{frametitle}[TUDa.nologo]
- \setbeamertemplate{headline}[TUDa.nologo]
- }
+\bool_if:NTF \g_ptxcd_headlinelogo_bool {
+\setbeamertemplate{frametitle}[TUDa.logo]
+\setbeamertemplate{headline}[TUDa.logo]
+}{
+\setbeamertemplate{frametitle}[TUDa.nologo]
+\setbeamertemplate{headline}[TUDa.nologo]
}
-\ptxcd_setup_frame:
-
-\newcommand*{\setupTUDaFrame}[1]{
- \keys_set:nn {ptxcd/beamer/outer} {#1}
- \ptxcd_setup_frame:
}
-
-
-
+\ptxcd_setup_frame:
\mode
<all>
-
\endinput
+%%
+%% End of file `beamerouterthemeTUDa2008.sty'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa-mecheng.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa-mecheng.sty
index e84e7fa228e..5fd524dabc4 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa-mecheng.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa-mecheng.sty
@@ -1,9 +1,9 @@
-%% This is file `beamerthemeTUDa-mecheng.sty' version 3.41 (2024-07-02),
+%% This is file `beamerthemeTUDa-mecheng.sty' version 4.00 (2025-01-26),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -16,7 +16,7 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainers of this work are
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
%%
%% The development respository can be found at
@@ -25,15 +25,13 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.41}
-\def\filedate{2024-07-02}
-\ProvidesExplPackage{beamerthemeTUDa-mecheng}{\filedate}{\fileversion}{specific tudabeamer configuration for the department of mechanical engineering}
+\ProvidesExplPackage{beamerthemeTUDa-mecheng}{2025-01-26}{4.00}{specific tudabeamer configuration for the department of mechanical engineering}
\tl_if_empty:NT \g_ptxcd_departmentlogo_tl {
\keys_set:nn {ptxcd/beamer}{departmentlogofile=tuda_maschinenbau_logo_rgb}
-}
+}
\mode<presentation>
@@ -85,7 +83,7 @@
%innertheme adjustments
\defbeamertemplate*{title~ page}{TUDa-mecheng}[1][]
-{
+{
\nointerlineskip
\vspace{\dimexpr.5\c_ptxcd_logoheight_dim-\ht\strutbox+
\box_dp:N \ptxcd_beamer_headrule_box + \box_ht:N \ptxcd_beamer_headrule_box
@@ -94,11 +92,11 @@
\parbox{\__ptxcd_beamer_linewidth:}{%
\begin{beamercolorbox}[
wd=\linewidth,
- ]{title}
+ ]{title}
\raggedright
\usebeamerfont{title}
\hbox_set:Nn \l__ptxcd_frametitle_box {
- \parbox[c]{\dimexpr\linewidth-\box_wd:N \g__ptxcd_logo_box-1em\relax}{
+ \parbox[c]{\dimexpr\linewidth-\box_wd:N \g__ptxcd_logo_box-1em}{
\raggedright{}
\inserttitle
\par
@@ -107,17 +105,17 @@
\dim_compare:nT {\box_ht:N \l__ptxcd_frametitle_box > \baselineskip} {\raisebox{\dimexpr-\height+.5\c_ptxcd_logoheight_dim}}
{\box_use:N \l__ptxcd_frametitle_box}
\hspace{\fill}
- \raisebox{\dimexpr-.5\height+.5\ht\strutbox-.5\dp\strutbox\relax}{\box_use:N \g__ptxcd_logo_box}\hspace*{\dimexpr-\beamer@rightmargin+\g__ptxcd_beamer_logosep_dim}
+ \raisebox{\dimexpr-.5\height+.5\ht\strutbox-.5\dp\strutbox}{\box_use:N \g__ptxcd_logo_box}\hspace*{\dimexpr-\beamer@rightmargin+\g__ptxcd_beamer_logosep_dim}
\ifx\insertsubtitle\@empty
\else
\par\vspace{\c_ptxcd_largerule_dim}
- \parbox[t]{\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box\relax}{
+ \parbox[t]{\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box}{
\usebeamerfont{subtitle}\insertsubtitle
}
\fi
\bool_if:NT \g_ptxcd_authorontitle_bool {
\par
- \parbox[t]{\dimexpr\linewidth-2ex\relax}{
+ \parbox[t]{\dimexpr\linewidth-2ex}{
\ifx\insertauthor\@empty
\else
\usebeamercolor[fg]{author}\usebeamerfont{author}\insertauthor\par
@@ -136,7 +134,7 @@
\begin{beamercolorbox}[
rightskip=.07\linewidth,%place image left of arrow tip
ht=\c_ptxcd_smallrule_dim,%dp=1mm,
- wd=\dimexpr\textwidth]{footline}
+ wd=\textwidth]{footline}
\setbeamertemplate{departmentlogo}[TUDa-mecheng][width=\dimexpr2\linewidth/11\relax]
\insertdepartmentlogo
\hfill
@@ -193,8 +191,9 @@
{
\begin{beamercolorbox}[
wd=\linewidth,
- leftskip=\beamer@leftmargin,rightskip=\beamer@rightmargin,
- ]{footline}
+ leftskip=\beamer@leftmargin,
+ rightskip=\beamer@rightmargin,
+ ]{footline}
\MechEngArrow*{\linewidth}
\par\skip_vertical:n {.5\g__ptxcd_beamer_logosep_dim}
\makebox[\linewidth][s]{
@@ -229,8 +228,8 @@
sep=\g__ptxcd_beamer_logosep_dim,
wd=\__ptxcd_beamer_linewidth:,
rightskip=-\g__ptxcd_beamer_logosep_dim,
- leftskip=\dimexpr-\g__ptxcd_beamer_logosep_dim\relax,
- ]{frametitle}
+ leftskip=-\g__ptxcd_beamer_logosep_dim,
+ ]{frametitle}
\hbox_set:Nn \l__ptxcd_frametitle_box {
\parbox[t]
{\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box-1em\relax\relax}{%
@@ -257,7 +256,7 @@
sep=\g__ptxcd_beamer_logosep_dim,
wd=\__ptxcd_beamer_linewidth:,
rightskip=-\g__ptxcd_beamer_logosep_dim,
- leftskip=\dimexpr-\g__ptxcd_beamer_logosep_dim\relax,
+ leftskip=-\g__ptxcd_beamer_logosep_dim,
ht=\c_ptxcd_smallrule_dim.
dp=0
]{smallrule}
@@ -278,7 +277,6 @@
}
\cs_set:Nn \__ptxcd_set_framebgcolor:n {
-
\str_case:nnTF {#1} {
{Primary1} {\tl_set:Nn \l_tmpa_tl {Primary2}}
{Primary2} {\tl_set:Nn \l_tmpa_tl {Primary1}}
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa.sty
index beb85e6785d..d8f3436852e 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa.sty
@@ -1,10 +1,18 @@
-%% This is file `beamerthemeTUDa.sty' version 3.41 (2024-07-02),
+%%
+%% This is file `beamerthemeTUDa.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudabeamer.dtx (with options: `package,main,initialize,body,options')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,44 +21,64 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
+%%
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesExplPackage{beamerthemeTUDa}{2024-04-21}{3.37}{Beamer theme using the Corporate Design of TU Darmstadt}
-
-\mode<presentation>
-
+\ProvidesExplPackage{beamerthemeTUDa}{2025-01-26}{4.00}{Beamer theme using the Corporate Design of TU Darmstadt}
\tl_if_exist:NF \g__ptxcd_design_tl {
- \tl_new:N \g__ptxcd_design_tl
- \keys_define:nn {ptxcd/beamer} {
- design .choice:,
- design / 2023 .code:n = {
- \tl_gset:Nn \g__ptxcd_design_tl {2023}
- \PassOptionsToClass{aspectratio=169}{beamer}
- },
- design / 2008 .code:n = {
- \tl_gset:Nn \g__ptxcd_design_tl {2008}
- },
- design .initial:n = 2023,
- design .usage:n = load,
- design2023 .meta:n = {design=2023},
- design2008 .meta:n = {design=2008},
- }
- \ProcessKeyOptions[ptxcd/beamer]
+ \tl_new:N \g__ptxcd_design_tl
+ \cs_new:Nn \__ptxcd_beamer_declare_pass_options:nn {
+ \keys_define:nn {ptxcd/beamer} {
+ #1 .code:n = \clist_map_inline:nn {#2}{
+ \PassOptionsToPackage{#1=##1}{beamer####1themeTUDa2008}
+ \PassOptionsToPackage{#1=##1}{beamer####1themeTUDa}
+ },
+ #1 .default:n = true,
+ }
+ }
+
+ \__ptxcd_beamer_declare_pass_options:nn {centerframetitle} {outer}
+ \__ptxcd_beamer_declare_pass_options:nn {headsepline} {outer}
+ \__ptxcd_beamer_declare_pass_options:nn {logo} {outer}
+ \__ptxcd_beamer_declare_pass_options:nn {colortitle} {color}
+ \__ptxcd_beamer_declare_pass_options:nn {colorbacktitle} {color}
+ \__ptxcd_beamer_declare_pass_options:nn {colorback} {color}
+ \__ptxcd_beamer_declare_pass_options:nn {colorframetitle} {outer, color}
}
+\keys_define:nn {ptxcd/beamer} {
+ accentcolor .code:n = \PassOptionsToPackage{accentcolor=#1}{tudacolors},
+ design .choice:,
+ design / 2023 .code:n = {
+ \tl_gset:Nn \g__ptxcd_design_tl {2023}
+ \PassOptionsToClass{aspectratio=169}{beamer}
+ },
+ design / 2008 .code:n = {
+ \tl_gset:Nn \g__ptxcd_design_tl {2008}
+ },
+ design / default .code:n = {
+ \tl_gset:Nn \g__ptxcd_design_tl {default}
+ },
+ design .initial:n = default,
+ design2023 .meta:n = {design=2023},
+ design2008 .meta:n = {design=2008},
+ design .usage:n = load,
+}
+\ProcessKeyOptions[ptxcd/beamer]
\RequirePackageWithOptions{beamerthemeTUDa\g__ptxcd_design_tl}
-
+\mode<presentation>
+\setbeamertemplate{navigation symbols}{}
\mode<all>
-
\endinput
+%%
+%% End of file `beamerthemeTUDa.sty'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2008.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2008.sty
index f3c3064841c..ee424cb254c 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2008.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2008.sty
@@ -1,10 +1,18 @@
-%% This is file `beamerthemeTUDa2008.sty' version 3.41 (2024-07-02),
+%%
+%% This is file `beamerthemeTUDa2008.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudabeamer.dtx (with options: `package,2008,initialize,body,options')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,48 +21,30 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\def\fileversion{3.41}
-\def\filedate{2024-07-02}
+%%
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesPackage{beamerthemeTUDa2008}
- [\filedate\space\fileversion\space beamer theme using the Corporate Design of TU Darmstadt Design of 2008]
-
-\mode<presentation>
-
+\ProvidesPackage{beamerthemeTUDa2008}[2025-01-26 v4.00 beamer theme using the Corporate Design of TU Darmstadt Design of 2008]
\ExplSyntaxOn
-
-\keys_define:nn {ptxcd/beamer} {
- accentcolor .code:n = \PassOptionsToPackage{accentcolor=#1}{tudacolors},
- colortitle .code:n = \PassOptionsToPackage{colortitle=#1}{beamercolorthemeTUDa},
- colorbacktitle .code:n = \PassOptionsToPackage{colorbacktitle=#1}{beamercolorthemeTUDa},
- colorframetitle .code:n = \PassOptionsToPackage{colorframetitle=#1}{beamerouterthemeTUDa},
- colorback .code:n = \PassOptionsToPackage{colorback=#1}{beamercolorthemeTUDa},
- logo .code:n = \PassOptionsToPackage{logo=#1}{beamerouterthemeTUDa}
-}
-
\ProcessKeyOptions[ptxcd/beamer]
-
+\mode<presentation>
\ExplSyntaxOff
-
\usefonttheme{TUDa2008}
\usecolortheme{TUDa2008}
\useoutertheme{TUDa2008}
\useinnertheme[design=2008]{TUDa}
\setbeamertemplate{navigation symbols}{}
-
-
\mode<all>
-
\endinput
+%%
+%% End of file `beamerthemeTUDa2008.sty'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2023.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2023.sty
index 7095ba69f12..c9df31ab97e 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2023.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2023.sty
@@ -1,10 +1,18 @@
-%% This is file `beamerthemeTUDa2023.sty' version 3.41 (2024-07-02)
+%%
+%% This is file `beamerthemeTUDa2023.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudabeamer.dtx (with options: `package,2023,initialize,body,options')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,45 +21,32 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
+%%
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesExplPackage{beamerthemeTUDa2023}{2024-04-21}{3.37}{Beamer theme using the Corporate Design of TU Darmstadt Design of 2023}
-
-\mode<presentation>
-
+\ProvidesExplPackage{beamerthemeTUDa2023}{2025-01-26}{4.00}{Beamer theme using the Corporate Design of TU Darmstadt Design of 2023}
\msg_new:nnn {tudabeamer} {option-removed} {
- The~design~you~selected~doesn't~support~the~option~`#1`.\\
- It~will~be~ignored.
+ The~design~you~selected~doesn't~support~the~option~`#1`.\\
+ It~will~be~ignored.
}
-
-\keys_define:nn {ptxcd/beamer} {
- colortitle .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {colortitle},
- colorbacktitle .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {colorbacktitle},
- colorframetitle .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {colorframetitle},
- colorback .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {colorback},
- logo .code:n = \PassOptionsToPackage{logo=#1}{beamerouterthemeTUDa2023}
-}
-
\ProcessKeyOptions[ptxcd/beamer]
-
+\mode<presentation>
\usefonttheme{TUDa}
\usecolortheme{TUDa}
\useoutertheme{TUDa}
\useinnertheme[design=2023]{TUDa}
-
\setbeamertemplate{navigation symbols}{}
-
\mode<all>
-
\endinput
+%%
+%% End of file `beamerthemeTUDa2023.sty'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a0paper.clo b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a0paper.clo
index 55147ed57f1..376cfaa2aa5 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a0paper.clo
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a0paper.clo
@@ -1,10 +1,18 @@
-%% This is file `tuda-a0paper.clo' version 3.41 (2024-07-02),
+%%
+%% This is file `tuda-a0paper.clo',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudasize.dtx (with options: `a0,tudasize')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,29 +21,37 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\ProvidesExplFile{tuda-a0paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a0paper}
+%%
+\ProvidesExplFile{tuda-a0paper.clo}{2025-01-26}{4.00}{tuda-ci~size~adjustments~for~a0paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
- \cs_set:Nn \ptxcd_title_fontsize: {{125pt}{165pt}}
- \cs_set:Nn \ptxcd_titleinfo_fontsize: {{28pt}{35pt}}
- \cs_set:Nn \ptxcd_titlethanks_fontsize: {{24pt}{30pt}}
+ \cs_set:Nn \ptxcd_title_fontsize: {
+ {125pt}{165pt}
+ }
+ \cs_set:Nn \ptxcd_titleinfo_fontsize: {
+ {28pt}{35pt}
+ }
+ \cs_set:Nn \ptxcd_titlethanks_fontsize: {
+ {24pt}{30pt}
+ }
}
\cs_set:Nn \ptxcd_setup_base_sizes: {
- \tl_if_empty:NT \g_ptxcd_fontsize_tl {
- \tl_gset:Nn \g_ptxcd_fontsize_tl {30pt}
- }
- \dim_gset:Nn \g_ptxcd_margin_dim {30mm}
+ \tl_if_empty:NT \g_ptxcd_fontsize_tl {
+\tl_gset:Nn \g_ptxcd_fontsize_tl
+ {30pt}
+ }
+ \dim_gset:Nn \g_ptxcd_margin_dim
+ {30mm}
}
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a1paper.clo b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a1paper.clo
index 4a89742e12c..e6559161ca6 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a1paper.clo
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a1paper.clo
@@ -1,10 +1,18 @@
-%% This is file `tuda-a1paper.clo' version 3.41 (2024-07-02),
+%%
+%% This is file `tuda-a1paper.clo',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudasize.dtx (with options: `a1,tudasize')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,29 +21,37 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\ProvidesExplFile{tuda-a1paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a1paper}
+%%
+\ProvidesExplFile{tuda-a1paper.clo}{2025-01-26}{4.00}{tuda-ci~size~adjustments~for~a1paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
- \cs_set:Nn \ptxcd_title_fontsize: {{86pt}{120pt}}
- \cs_set:Nn \ptxcd_titleinfo_fontsize: {{35pt}{42pt}}
- \cs_set:Nn \ptxcd_titlethanks_fontsize: {{22pt}{26pt}}
+ \cs_set:Nn \ptxcd_title_fontsize: {
+ {86pt}{120pt}
+ }
+ \cs_set:Nn \ptxcd_titleinfo_fontsize: {
+ {35pt}{42pt}
+ }
+ \cs_set:Nn \ptxcd_titlethanks_fontsize: {
+ {22pt}{26pt}
+ }
}
\cs_set:Nn \ptxcd_setup_base_sizes: {
- \tl_if_empty:NT \g_ptxcd_fontsize_tl {
- \tl_gset:Nn \g_ptxcd_fontsize_tl {25pt}
- }
- \dim_gset:Nn \g_ptxcd_margin_dim {30mm}
+ \tl_if_empty:NT \g_ptxcd_fontsize_tl {
+\tl_gset:Nn \g_ptxcd_fontsize_tl
+ {25pt}
+ }
+ \dim_gset:Nn \g_ptxcd_margin_dim
+ {30mm}
}
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a2paper.clo b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a2paper.clo
index 57121954a49..40c0b999dd8 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a2paper.clo
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a2paper.clo
@@ -1,10 +1,18 @@
-%% This is file `tuda-a2paper.clo' version 3.41 (2024-07-02),
+%%
+%% This is file `tuda-a2paper.clo',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudasize.dtx (with options: `a2,tudasize')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,29 +21,37 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\ProvidesExplFile{tuda-a2paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a2paper}
+%%
+\ProvidesExplFile{tuda-a2paper.clo}{2025-01-26}{4.00}{tuda-ci~size~adjustments~for~a2paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
- \cs_set:Nn \ptxcd_title_fontsize: {{65pt}{82pt}}
- \cs_set:Nn \ptxcd_titleinfo_fontsize: {{22pt}{28pt}}
- \cs_set:Nn \ptxcd_titlethanks_fontsize: {{14pt}{20pt}}
+ \cs_set:Nn \ptxcd_title_fontsize: {
+ {65pt}{82pt}
+ }
+ \cs_set:Nn \ptxcd_titleinfo_fontsize: {
+ {22pt}{28pt}
+ }
+ \cs_set:Nn \ptxcd_titlethanks_fontsize: {
+ {14pt}{20pt}
+ }
}
\cs_set:Nn \ptxcd_setup_base_sizes: {
- \tl_if_empty:NT \g_ptxcd_fontsize_tl {
- \tl_gset:Nn \g_ptxcd_fontsize_tl {25pt}
- }
- \dim_gset:Nn \g_ptxcd_margin_dim {30mm}
+ \tl_if_empty:NT \g_ptxcd_fontsize_tl {
+\tl_gset:Nn \g_ptxcd_fontsize_tl
+ {25pt}
+ }
+ \dim_gset:Nn \g_ptxcd_margin_dim
+ {30mm}
}
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a3paper.clo b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a3paper.clo
index e841639ad03..789eb784ec6 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a3paper.clo
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a3paper.clo
@@ -1,10 +1,18 @@
-%% This is file `tuda-a3paper.clo' version 3.41 (2024-07-02),
+%%
+%% This is file `tuda-a3paper.clo',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudasize.dtx (with options: `a3,tudasize')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,29 +21,37 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\ProvidesExplFile{tuda-a3paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a3paper}
+%%
+\ProvidesExplFile{tuda-a3paper.clo}{2025-01-26}{4.00}{tuda-ci~size~adjustments~for~a3paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
- \cs_set:Nn \ptxcd_title_fontsize: {{47pt}{61pt}}
- \cs_set:Nn \ptxcd_titleinfo_fontsize: {{16pt}{20pt}}
- \cs_set:Nn \ptxcd_titlethanks_fontsize: {{12pt}{16pt}}
+ \cs_set:Nn \ptxcd_title_fontsize: {
+ {47pt}{61pt}
+ }
+ \cs_set:Nn \ptxcd_titleinfo_fontsize: {
+ {16pt}{20pt}
+ }
+ \cs_set:Nn \ptxcd_titlethanks_fontsize: {
+ {12pt}{16pt}
+ }
}
\cs_set:Nn \ptxcd_setup_base_sizes: {
- \tl_if_empty:NT \g_ptxcd_fontsize_tl {
- \tl_gset:Nn \g_ptxcd_fontsize_tl {17pt}
- }
- \dim_gset:Nn \g_ptxcd_margin_dim {15mm}
+ \tl_if_empty:NT \g_ptxcd_fontsize_tl {
+\tl_gset:Nn \g_ptxcd_fontsize_tl
+ {17pt}
+ }
+ \dim_gset:Nn \g_ptxcd_margin_dim
+ {15mm}
}
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a4paper.clo b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a4paper.clo
index 646a994a6ad..15b33243975 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a4paper.clo
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a4paper.clo
@@ -1,10 +1,18 @@
-%% This is file `tuda-a4paper.clo' version 3.41 (2024-07-02),
+%%
+%% This is file `tuda-a4paper.clo',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudasize.dtx (with options: `a4,tudasize')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,29 +21,37 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\ProvidesExplFile{tuda-a4paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a4paper}
+%%
+\ProvidesExplFile{tuda-a4paper.clo}{2025-01-26}{4.00}{tuda-ci~size~adjustments~for~a4paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
- \cs_set:Nn \ptxcd_title_fontsize: {{36pt}{47pt}}
- \cs_set:Nn \ptxcd_titleinfo_fontsize: {{12pt}{14pt}}
- \cs_set:Nn \ptxcd_titlethanks_fontsize: {{10pt}{11.5pt}}
+ \cs_set:Nn \ptxcd_title_fontsize: {
+ {36pt}{47pt}
+ }
+ \cs_set:Nn \ptxcd_titleinfo_fontsize: {
+ {12pt}{14pt}
+ }
+ \cs_set:Nn \ptxcd_titlethanks_fontsize: {
+ {10pt}{11.5pt}
+ }
}
\cs_set:Nn \ptxcd_setup_base_sizes: {
- \tl_if_empty:NT \g_ptxcd_fontsize_tl {
- \tl_gset:Nn \g_ptxcd_fontsize_tl {14pt}
- }
- \dim_gset:Nn \g_ptxcd_margin_dim {15mm}
+ \tl_if_empty:NT \g_ptxcd_fontsize_tl {
+\tl_gset:Nn \g_ptxcd_fontsize_tl
+ {14pt}
+ }
+ \dim_gset:Nn \g_ptxcd_margin_dim
+ {15mm}
}
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a5paper.clo b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a5paper.clo
index 8c0ef0e94f7..81b7319e27c 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a5paper.clo
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a5paper.clo
@@ -1,10 +1,18 @@
-%% This is file `tuda-a5paper.clo' version 3.41 (2024-07-02),
+%%
+%% This is file `tuda-a5paper.clo',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudasize.dtx (with options: `a5,tudasize')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,29 +21,37 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\ProvidesExplFile{tuda-a5paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a5paper}
+%%
+\ProvidesExplFile{tuda-a5paper.clo}{2025-01-26}{4.00}{tuda-ci~size~adjustments~for~a5paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
- \cs_set:Nn \ptxcd_title_fontsize: {{22pt}{28pt}}
- \cs_set:Nn \ptxcd_titleinfo_fontsize: {{10pt}{11.5pt}}
- \cs_set:Nn \ptxcd_titlethanks_fontsize: {{10pt}{11.5pt}}
+ \cs_set:Nn \ptxcd_title_fontsize: {
+ {22pt}{28pt}
+ }
+ \cs_set:Nn \ptxcd_titleinfo_fontsize: {
+ {10pt}{11.5pt}
+ }
+ \cs_set:Nn \ptxcd_titlethanks_fontsize: {
+ {10pt}{11.5pt}
+ }
}
\cs_set:Nn \ptxcd_setup_base_sizes: {
- \tl_if_empty:NT \g_ptxcd_fontsize_tl {
- \tl_gset:Nn \g_ptxcd_fontsize_tl {10pt}
- }
- \dim_gset:Nn \g_ptxcd_margin_dim {12mm}
+ \tl_if_empty:NT \g_ptxcd_fontsize_tl {
+\tl_gset:Nn \g_ptxcd_fontsize_tl
+ {10pt}
+ }
+ \dim_gset:Nn \g_ptxcd_margin_dim
+ {12mm}
}
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tuda-pgfplots.sty b/Master/texmf-dist/tex/latex/tuda-ci/tuda-pgfplots.sty
index b0a32c7502f..37f64c0a2a4 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-pgfplots.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-pgfplots.sty
@@ -1,9 +1,9 @@
-%% This is file `tuda-pgfplots.sty' version 3.41 (2024-07-02),
+%% This is file `tuda-pgfplots.sty' version 4.00 (2025-01-26),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -16,7 +16,7 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainers of this work are
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
%%
%% The development respository can be found at
@@ -25,134 +25,132 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.41}
-\def\filedate{2024-07-02}
% Special thanks to: Sebastian Schöps Institut Theorie Elektromagnetischer Felder (TEMF), TU Darmstadt
% The original version of this file has been inspired by the colorscheme in the Metropolis beamer theme by Matthias Vogelgesang https://github.com/matze/mtheme
-\ProvidesPackage{tuda-pgfplots}[\filedate\space\fileversion\space tuda-ci pgfplots color schemes]
+\ProvidesPackage{tuda-pgfplots}[2025-01-26 v4.00 tuda-ci pgfplots color schemes]
\RequirePackage{pgfplots}
\RequirePackage{tudacolors}
\pgfplotscreateplotcyclelist{tudabarplot cycle}{%
- draw=TUDa-1a, fill=TUDa-1b \\
- draw=TUDa-9b, fill=TUDa-9c \\
- draw=TUDa-3b, fill=TUDa-3c \\
- draw=TUDa-10b, fill=TUDa-10c\\
- draw=TUDa-5c, fill=TUDa-5d \\
- draw=TUDa-6d, fill=TUDa-6a \\
+ draw=TUDa-1a, fill=TUDa-1b \\
+ draw=TUDa-9b, fill=TUDa-9c \\
+ draw=TUDa-3b, fill=TUDa-3c \\
+ draw=TUDa-10b, fill=TUDa-10c\\
+ draw=TUDa-5c, fill=TUDa-5d \\
+ draw=TUDa-6d, fill=TUDa-6a \\
}
\pgfplotscreateplotcyclelist{tudalineplot cycle}{%
- TUDa-1b, mark=*, \\
- TUDa-9c, mark=diamond*, \\
- TUDa-3c, mark=square*, \\
- TUDa-10c, mark=triangle* \\
- TUDa-5d, mark=*, \\
- TUDa-6a, mark=diamond*, \\
+ TUDa-1b, mark=*, \\
+ TUDa-9c, mark=diamond*, \\
+ TUDa-3c, mark=square*, \\
+ TUDa-10c, mark=triangle* \\
+ TUDa-5d, mark=*, \\
+ TUDa-6a, mark=diamond*, \\
}
\pgfplotsset{
- tuda3dplot/.style={
- axis line style = thin,
- axis x line*=box,
- axis y line*=box,
- tudabaseplot,
- xmajorgrids=true,
- ymajorgrids=true,
- major grid style={dotted},
- },
- tudalineplot/.style={
- tudabaseplot,
- grid,
- legend style={cells={anchor=west}},
- thick,
- mark size=1.5pt,
- cycle list name=tudalineplot cycle,
- },
- tudabarplot base/.style={
- tudabaseplot,
- bar width=6pt,
- cycle list name=tudabarplot cycle,
- },
- tudabarplot/.style={
- ybar,
- tudabarplot base,
- xmajorgrids=false,
- ymajorgrids=true,
- },
- horizontal tudabarplot/.style={
- xbar stacked,
- tudabarplot base,
- xmajorgrids=true,
- ymajorgrids=false,
- },
- colormap={tudaa}{rgb255=(93,133,195)
- rgb255=(0,156,218)
- rgb255=(80,182,149)
- rgb255=(175,204,80)
- rgb255=(221,223,72)
- rgb255=(255,224,92)
- rgb255=(248,186,60)
- rgb255=(238,122,52)
- rgb255=(233,80,62)
- rgb255=(201,48,142)
- rgb255=(128,69,151)
- },
- colormap={tudab}{%
- rgb255=(0,90,169)
- rgb255=(0,131,204)
- rgb255=(0,157,129)
- rgb255=(153,192,0)
- rgb255=(201,212,0)
- rgb255=(253,202,0)
- rgb255=(245,163,0)
- rgb255=(236,101,0)
- rgb255=(230,0,26)
- rgb255=(166,0,132)
- rgb255=(114,16,133)
- rgb255=(0,78,138)
- },
- colormap={tudac}{
- rgb255=(0,78,138)
- rgb255=(0,104,157)
- rgb255=(0,136,119)
- rgb255=(127,171,22)
- rgb255=(177,189,0)
- rgb255=(215,172,0)
- rgb255=(210,135,0)
- rgb255=(204,76,3)
- rgb255=(185,15,34)
- rgb255=(149,17,10)
- rgb255=(97,28,115)
- },
- colormap={tudad}{
- rgb255=(36,53,114)
- rgb255=(0,78,115)
- rgb255=(0,113,94)
- rgb255=(106,139,55)
- rgb255=(153,166,4)
- rgb255=(174,142,0)
- rgb255=(190,111,0)
- rgb255=(169,73,19)
- rgb255=(156,28,38)
- rgb255=(115,32,84)
- rgb255=(76,34,106)
- },
- tudabaseplot/.style={
- colormap name=viridis,
- legend style={fill=white,cells={anchor=west}},
- ticklabel style={font=\footnotesize},
- legend style={font=\footnotesize},
- major grid style={dotted},
- axis x line=bottom,axis y line=left,
- },
- colormap={tuda}{
- rgb255=(115,32,84)
- rgb255=(0,157,129)
- rgb255=(255,224,92)
- }
+ tuda3dplot/.style={
+ axis line style = thin,
+ axis x line*=box,
+ axis y line*=box,
+ tudabaseplot,
+ xmajorgrids=true,
+ ymajorgrids=true,
+ major grid style={dotted},
+ },
+ tudalineplot/.style={
+ tudabaseplot,
+ grid,
+ legend style={cells={anchor=west}},
+ thick,
+ mark size=1.5pt,
+ cycle list name=tudalineplot cycle,
+ },
+ tudabarplot base/.style={
+ tudabaseplot,
+ bar width=6pt,
+ cycle list name=tudabarplot cycle,
+ },
+ tudabarplot/.style={
+ ybar,
+ tudabarplot base,
+ xmajorgrids=false,
+ ymajorgrids=true,
+ },
+ horizontal tudabarplot/.style={
+ xbar stacked,
+ tudabarplot base,
+ xmajorgrids=true,
+ ymajorgrids=false,
+ },
+ colormap={tudaa}{rgb255=(93,133,195)
+ rgb255=(0,156,218)
+ rgb255=(80,182,149)
+ rgb255=(175,204,80)
+ rgb255=(221,223,72)
+ rgb255=(255,224,92)
+ rgb255=(248,186,60)
+ rgb255=(238,122,52)
+ rgb255=(233,80,62)
+ rgb255=(201,48,142)
+ rgb255=(128,69,151)
+ },
+ colormap={tudab}{%
+ rgb255=(0,90,169)
+ rgb255=(0,131,204)
+ rgb255=(0,157,129)
+ rgb255=(153,192,0)
+ rgb255=(201,212,0)
+ rgb255=(253,202,0)
+ rgb255=(245,163,0)
+ rgb255=(236,101,0)
+ rgb255=(230,0,26)
+ rgb255=(166,0,132)
+ rgb255=(114,16,133)
+ rgb255=(0,78,138)
+ },
+ colormap={tudac}{
+ rgb255=(0,78,138)
+ rgb255=(0,104,157)
+ rgb255=(0,136,119)
+ rgb255=(127,171,22)
+ rgb255=(177,189,0)
+ rgb255=(215,172,0)
+ rgb255=(210,135,0)
+ rgb255=(204,76,3)
+ rgb255=(185,15,34)
+ rgb255=(149,17,10)
+ rgb255=(97,28,115)
+ },
+ colormap={tudad}{
+ rgb255=(36,53,114)
+ rgb255=(0,78,115)
+ rgb255=(0,113,94)
+ rgb255=(106,139,55)
+ rgb255=(153,166,4)
+ rgb255=(174,142,0)
+ rgb255=(190,111,0)
+ rgb255=(169,73,19)
+ rgb255=(156,28,38)
+ rgb255=(115,32,84)
+ rgb255=(76,34,106)
+ },
+ tudabaseplot/.style={
+ colormap name=viridis,
+ legend style={fill=white,cells={anchor=west}},
+ ticklabel style={font=\footnotesize},
+ legend style={font=\footnotesize},
+ major grid style={dotted},
+ axis x line=bottom,axis y line=left,
+ },
+ colormap={tuda}{
+ rgb255=(115,32,84)
+ rgb255=(0,157,129)
+ rgb255=(255,224,92)
+ }
}
\endinput
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudabeamer.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudabeamer.cls
index df4840467e0..c857d9a5d81 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudabeamer.cls
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudabeamer.cls
@@ -1,10 +1,20 @@
-%% This is file `tudabeamer.cls' version 3.41 (2024-07-02),
+%%
+%% This is file `tudabeamer.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudabeamer.dtx (with options: `class,initialize,options')
+%% tuda-ci.dtx (with options: `options,tudabeamer,beamer')
+%% tudabeamer.dtx (with options: `class,body')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,246 +23,174 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\def\fileversion{3.41}
-\def\filedate{2024-07-02}
-\NeedsTeXFormat{LaTeX2e}
+%%
+\NeedsTeXFormat{LaTeX2e}[2022/06/01]
\ProvidesClass{tudabeamer}
- [\filedate\space\fileversion\space]
-
+ [2025-01-26 v4.00 Beamer wrapper class for TUDa-CI – Corporate Design Templates for TU Darmstadt]
\PassOptionsToClass{10pt}{beamer}
-
\ExplSyntaxOn
\str_new:N \g_ptxcd_department_str
-\tl_new:N \g__ptxcd_design_tl
+\str_const:Nn \c__ptxcd_base_str {beamer}
+ \tl_new:N \g__ptxcd_design_tl
+ \cs_new:Nn \__ptxcd_beamer_declare_pass_options:nn {
+ \keys_define:nn {ptxcd/beamer} {
+ #1 .code:n = \clist_map_inline:nn {#2}{
+ \PassOptionsToPackage{#1=##1}{beamer####1themeTUDa2008}
+ \PassOptionsToPackage{#1=##1}{beamer####1themeTUDa}
+ },
+ #1 .default:n = true,
+ }
+ }
+
+ \__ptxcd_beamer_declare_pass_options:nn {centerframetitle} {outer}
+ \__ptxcd_beamer_declare_pass_options:nn {headsepline} {outer}
+ \__ptxcd_beamer_declare_pass_options:nn {logo} {outer}
+ \__ptxcd_beamer_declare_pass_options:nn {colortitle} {color}
+ \__ptxcd_beamer_declare_pass_options:nn {colorbacktitle} {color}
+ \__ptxcd_beamer_declare_pass_options:nn {colorback} {color}
+ \__ptxcd_beamer_declare_pass_options:nn {colorframetitle} {outer, color}
+
\keys_define:nn {ptxcd/beamer} {
- accentcolor .code:n = \PassOptionsToPackage{accentcolor=#1}{tudacolors},
- colorframetitle .code:n = \exp_args:Nx \PassOptionsToPackage{\l_keys_key_tl=#1}{beamercolorthemeTUDa}
- \exp_args:Nx \PassOptionsToPackage{\l_keys_key_tl=#1}{beamerouterthemeTUDa},
- colorframetitle .default:n = true,
- logo .code:n = \PassOptionsToPackage{logo=#1}{beamerouterthemeTUDa},
- pdfa .bool_gset:N = \g_ptxcd_pdfa_bool,
- pdfa .initial:n = false,
- logofile .code:n = \PassOptionsToPackage{logofile=#1}{beamerouterthemeTUDa},
- serif .code:n = \PassOptionsToPackage{serif=#1}{beamerfontthemeTUDa},
- serif .default:n = true,
- sans-serif .code:n = \PassOptionsToPackage{sans-serif=#1}{beamerfontthemeTUDa},
- sans-serif .default:n = true,
- department .choice:,
- department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
- department / mecheng .code:n = {
- \keys_set:nn {ptxcd/beamer} {
- colorframetitle=false,
- centerframetitle,
- headsepline=false
- }
- \str_gset:Nn \g_ptxcd_department_str {mecheng}
- },
- department .initial:n = default,
- department / unknown .code:n = {
- \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
- },
- departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl,
- departmentconfigprefix .initial:n = ,
- mecheng .meta:n = {department=mecheng},
- departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl,
- departmentlogofile .initial:n =,
- color .code:n = {
- \tl_if_in:nnTF {#1} {=} {
- \msg_new:nnn {tudabeamer} {color-option-warning} {
- The~color~option~should~no~longer~be~used~to~pass~options~to~the~tudacolors~package.\\
- Please~use~tudacolors={##1}~instead~of~color={##1}.\\
- See~the~tudabeamer~documentation~for~more~information.
- }
- \msg_warning:nnn {tudabeamer} {color-option-warning} {#1}
- \PassOptionsToPackage{#1}{tudacolors}
- } {
- \PassOptionsToPackage{color=#1}{tudacolors}
- }
- },
- tudacolors .code:n = \PassOptionsToPackage{#1}{tudacolors},
- design .choice:,
- design / 2023 .code:n = {
- \tl_gset:Nn \g__ptxcd_design_tl {2023}
- \PassOptionsToClass{aspectratio=169}{beamer}
- },
- design / 2008 .code:n = {
- \tl_gset:Nn \g__ptxcd_design_tl {2008}
- },
- design / default .code:n = {
- \tl_gset:Nn \g__ptxcd_design_tl {default}
- },
- design .initial:n = default,
- design2023 .meta:n = {design=2023},
- design2008 .meta:n = {design=2008},
- design .usage:n = load,
+ accentcolor .code:n = \PassOptionsToPackage{accentcolor=#1}{tudacolors},
+ color .code:n = {
+ \tl_if_in:nnTF {#1} {=} {
+ \msg_new:nnn {tudabeamer} {color-option-warning} {
+ The~color~option~should~no~longer~be~used~to~pass~options~to~the~tudacolors~package.\\
+ Please~use~tudacolors={##1}~instead~of~color={##1}.\\
+ See~the~tudabeamer~documentation~for~more~information.
+ }
+ \msg_warning:nnn {tudabeamer} {color-option-warning} {#1}
+ \PassOptionsToPackage{#1}{tudacolors}
+ } {
+ \PassOptionsToPackage{color=#1}{tudacolors}
+ }
+ },
+ tudacolors .code:n = \PassOptionsToPackage{#1}{tudacolors},
+ design .choice:,
+ design / 2023 .code:n = {
+ \tl_gset:Nn \g__ptxcd_design_tl {2023}
+ \PassOptionsToClass{aspectratio=169}{beamer}
+ },
+ design / 2008 .code:n = {
+ \tl_gset:Nn \g__ptxcd_design_tl {2008}
+ },
+ design / default .code:n = {
+ \tl_gset:Nn \g__ptxcd_design_tl {default}
+ },
+ design .initial:n = default,
+ design2023 .meta:n = {design=2023},
+ design2008 .meta:n = {design=2008},
+ design .usage:n = load,
+ accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool,
+ accept-missing-logos .initial:n = false,
+ accept-missing-logos .usage:n = load,
+ accept-missing-logos .default:n = true,
+ department .choice:,
+ department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
+ department / mecheng .code:n = {
+ \str_gset:Nn \g_ptxcd_department_str {mecheng}
+ \keys_set:nn {ptxcd/beamer} {
+ design=2008,
+ colorframetitle=false,
+ centerframetitle=true,
+ headsepline=false,
+ }
+ },
+
+ department .initial:n = default,
+ department / unknown .code:n = {
+ \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
+ },
+ departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl,
+ departmentconfigprefix .initial:n = tuda,
+ departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl,
+ departmentlogofile .initial:n =,
+ mecheng .meta:n = {department=mecheng},
+ pdfa .code:n = {
+ \msg_error:nn {tuda\c__ptxcd_base_str} {pdfa-option-removed}
+ },
+ pdfx .bool_gset:N = \g_ptxcd_pdfx_bool,
+ pdfx .initial:n = true,
+%% color options
+%% color options
+}
+\msg_new:nnn {tuda\c__ptxcd_base_str} {pdfa-option-removed} {
+ The~option~"pdfa"~was~removed~for~this~document~class.\\
+ In~case~you~need~it,~please~use~the~mechanism~provided~by~the~pdfmanagement~instead.\\
+ See~TUDa-CI~documentation~for~details.
+}
+\cs_if_exist:NT \TUDaDefaultBuildOptions {
+ \exp_args:Ne \keys_set:ne { ptxcd /
+ \c__ptxcd_base_str
+ } {
+ \TUDaDefaultBuildOptions
+ }
}
\ExplSyntaxOff
-
-\PassOptionsToPackage{pdfpagelabels=false,plainpages=false}{hyperref}
+\PassOptionsToPackage{
+ hidelinks,
+ unicode,
+ pdfpagelabels=false,
+ plainpages=false,
+ pdfcreator=LaTeX using the TUDa-CI Bundle,
+}{hyperref}
\PassOptionsToClass{t}{beamer}
-
\DeclareOption*{%
- \PassOptionsToClass{\CurrentOption}{beamer}
+ \PassOptionsToClass{\CurrentOption}{beamer}
}
-
\ProcessKeyOptions[ptxcd/beamer]
\ProcessOptions*
-
\ExplSyntaxOn
\tl_if_eq:NnT \g__ptxcd_design_tl {default} {
- \msg_new:nnn {tudabeamer} {default-design-changed} {
- With~version~4.0~tudabeamer~switched~to~the~new~corporate~design~layout.\\
- In~case~this~is~not~intended,~it's~possible~switch~back~using~`design=2008`~option.\\
- `design=2023`~will~disable~this~warning.
- }
- \msg_warning:nn {tudabeamer} {default-design-changed}
- \keys_set:nn {ptxcd/beamer} {design=2023}
-}
-
-\bool_if:NT \g_ptxcd_pdfa_bool {\PassOptionsToPackage{RGB}{xcolor}}
-
-\bool_if:NT \g_ptxcd_pdfa_bool {
- \RequirePackage{scrlfile}
- \PreventPackageFromLoading{hyperref}
- \def\hypersetup#1{}
+ \msg_new:nnn {tudabeamer} {default-design-changed} {
+ With~version~4.0~tudabeamer~switched~to~the~new~corporate~design~layout.\\
+ In~case~this~is~not~intended,~it's~possible~switch~back~using~`design=2008`~option.\\
+ `design=2023`~will~disable~this~warning.
+ }
+ \msg_warning:nn {tudabeamer} {default-design-changed}
+ \keys_set:nn {ptxcd/beamer} {design=2023}
}
\ExplSyntaxOff
-
-% Load the latex-beamer class
\LoadClass{beamer}
-
\ExplSyntaxOn
-\bool_if:NT \g_ptxcd_pdfa_bool {
- \UnPreventPackageFromLoading{hyperref}
- \PassOptionsToPackage{a-2b}{pdfx}
-% Workaround posted by David Carlisle on tex.stackexchange
-% Thanks to Ulrike Fischer for mentioning it in #472
- \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel
- \chardef\currentgrouplevel0
- \ExplSyntaxOff
- \RequirePackage{pdfx}
- \ExplSyntaxOn
- \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx:
- \cs_undefine:N \__ptxcd_grouplevel_before_pdfx:
-% end of the workaround
-}
-\hypersetup{hidelinks, unicode}
-
-
-%\department command
\def\department{\@dblarg\ptxcd_beamer_department}
-
\long\def\ptxcd_beamer_department[#1]#2{%
- \def\beamer@temp{#2}%
- \ifx\beamer@temp\@empty
- \def\insertdepartment{}
- \else
- \def\insertdepartment{\def\inst{\beamer@instinst}\def\and{\qquad}#2}%
- \fi
- \def\beamer@shortdepartment{#1}}
+ \def\beamer@temp{#2}%
+ \ifx\beamer@temp\@empty
+ \def\insertdepartment{}
+ \else
+ \def\insertdepartment{\def\inst{\beamer@instinst}\def\and{\qquad}#2}%
+ \fi
+ \def\beamer@shortdepartment{#1}}
\department{}
-
\newcommand\insertshortdepartment[1][]{%
- {%
- \let\thanks=\@gobble%
- \beamer@setupshort{#1}%
- \beamer@insertshort{\beamer@shortdepartment}%
-}}
-%end of \department command
-\if_bool:N \g_ptxcd_pdfa_bool
-\iow_new:N \ptxcd_xmpdata_stream
-\iow_open:Nn \ptxcd_xmpdata_stream {\jobname.xmpdata}
-\tl_new:N \g_ptxcd_xmp_title
-\tl_new:N \g_ptxcd_xmp_author
-
-\cs_new:Nn \ptxcd_pass_TitleData: {
- \begingroup
- \def\newline{}
- \def\\{}
- \let\thanks\use_none:n
- \cs_set:Npn \and {\exp_not:n {\exp_not:N \sep}}
- \bool_if:NTF \g_ptxcd_pass_TitleData_bool {
- \tl_gset:Nx \g_ptxcd_xmp_title {\insertshorttitle}
- \tl_gset:Nx \g_ptxcd_xmp_author {\insertshortauthor}
- \iow_now:Nx \ptxcd_xmpdata_stream
- {
- \exp_not:N \Title{\tl_to_str:V \g_ptxcd_xmp_title}
- ^^J
- \exp_not:N \Author{\tl_to_str:V \g_ptxcd_xmp_author}
- ^^J
- \exp_not:N \Creator{LaTeX~ using~ the~ TUDa-CI~ Bundle}
- }
- }{
- \begingroup
- \use:c {pdfx@localcommands}
- \prop_if_in:NnF \g_ptxcd_MetaData_prop {Creator} {\prop_gput:Nnn \g_ptxcd_MetaData_prop {Creator} {LaTeX~ using~ the~ TUDa-CI~ Bundle}}
- \prop_map_function:NN \g_ptxcd_MetaData_prop \ptxcd_write_xmp_line:nn
- \endgroup
- }
- \endgroup
-}
-\cs_new:Nn \ptxcd_write_xmp_line:nn {
- %Fallback test for older kernels
- \cs_if_exist:NTF \str_uppercase:f {
- \tl_set:Nx \l_tmpa_tl {
- \str_uppercase:f {\tl_head:n {#1}}
- \str_lowercase:f { \tl_tail:n {#1}}
- }
- } {
- %may be removed in some time
- \tl_set:Nx \l_tmpa_tl {\tl_mixed_case:n {#1}}
- }
- \cs_if_exist:cTF {\l_tmpa_tl}{
- \iow_now:Nx \ptxcd_xmpdata_stream {
- \c_backslash_str \l_tmpa_tl {\exp_not:n {#2}}
- }
- }{
- \msg_error:nnn{tudapub} {unknown-metadata} {#1}
- }
+ {%
+ \let\thanks=\@gobble%
+ \beamer@setupshort{#1}%
+ \beamer@insertshort{\beamer@shortdepartment}%
+ }%
}
-
-\bool_new:N \g_ptxcd_pass_TitleData_bool
-\bool_gset_true:N \g_ptxcd_pass_TitleData_bool
-\prop_new:N \g_ptxcd_MetaData_prop
-
-\newcommand*{\Metadata}[1]{
- \bool_gset_false:N \g_ptxcd_pass_TitleData_bool
- \prop_gset_from_keyval:Nn \g_ptxcd_MetaData_prop {#1}
-}
-
-\msg_new:nnnn{tudapub} {unknown-metadata} {
- You~ used~ the~ #1~ metadata~ entry.\\
- I~ don't~ know~ how~ to~ handle~ that.\\
- It~ will~ be~ ignored.
-} {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.}
-\else:
-\msg_new:nnn{tudapub} {no-pdfa}{The~ tudapub~ class~ won't~ create~ PDF/A-mode.}
-\msg_info:nn{tudapub} {no-pdfa}
-\fi:
-
\str_if_empty:NF \g_ptxcd_department_str {}
-
-% Load the TUDa theme
\usetheme{TUDa\g__ptxcd_design_tl}%
-\@input{\jobname.len}%
-\@starttoc{len}%
\let\accentfont\normalfont%
-
-\file_if_exist:nT {\g__ptxcd_config_prefix_tl beamerthemeTUDa-\g_ptxcd_department_str.sty}
- {\RequirePackage{\g__ptxcd_config_prefix_tl beamerthemeTUDa-\g_ptxcd_department_str}}
-
+\file_if_exist:nTF {\g__ptxcd_config_prefix_tl beamerthemeTUDa-\g_ptxcd_department_str.sty}
+ {\RequirePackage{\g__ptxcd_config_prefix_tl beamerthemeTUDa-\g_ptxcd_department_str}}
+ {
+ \file_if_exist:nT {beamerthemeTUDa-\g_ptxcd_department_str.sty}
+ {\RequirePackage{beamerthemeTUDa-\g_ptxcd_department_str}}
+ }
\ExplSyntaxOff
-
\endinput
+%%
+%% End of file `tudabeamer.cls'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.def b/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.def
index 44f09edb861..8a9ebad2def 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.def
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.def
@@ -1,9 +1,11 @@
-%% This is file `tudacolors.def' version 3.41 (2024-07-02),
+%% \iffalse meta-comment^^A necessary for use with \input in documentation
+%%
+%% This is file `tudacolors.def' version 4.00 (2025-01-26),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -16,7 +18,7 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainers of this work are
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
%%
%% The development respository can be found at
@@ -25,10 +27,9 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.41}
-\def\filedate{2024-07-02}
-\ProvidesFile{tudacolors.def}
-[\filedate\space\fileversion\space Color definitions for tuda-ci]
+%\fi
+
+\ProvidesFile{tudacolors.def}[2025-01-26 v4.00 Color definitions for tuda-ci]
\definecolor{TUDa-0d}{cmyk/RGB/HTML}{0,0,0,.8/83,83,83/535353}
\definecolor{TUDa-0c}{cmyk/RGB/HTML}{0,0,0,.6/137,137,137/898989}
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.sty b/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.sty
index 448483daaf7..be2a0ed9b7c 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.sty
@@ -1,10 +1,18 @@
-%% This is file `tudacolors.sty' version 3.41 (2024-07-02),
+%%
+%% This is file `tudacolors.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudacolors.dtx (with options: `package')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,123 +21,125 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\def\fileversion{3.41}
-\def\filedate{2024-07-02}
-\NeedsTeXFormat{LaTeX2e}
-
-\ProvidesExplPackage{tudacolors}{\filedate}{\fileversion}{Color definition for TU Darmstadt's tuda-ci bundle}
-
+%%
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\ProvidesExplPackage{tudacolors}{2025-01-26}{4.00}{Color definition for TU Darmstadt's tuda-ci bundle}
\str_if_exist:NF \g_ptxcd_department_str {
- \str_new:N \g_ptxcd_department_str
- \str_gset:Nn \g_ptxcd_department_str {default}
+\str_new:N \g_ptxcd_department_str
+\str_gset:Nn \g_ptxcd_department_str {default}
}
-
\keys_define:nn {ptxcd/colors} {
- accent .tl_gset:N = \g_ptxcd_color_accent_tl,
- accent .initial:n = 0b,
- textaccent .tl_gset:N = \g_ptxcd_color_textaccent_tl,
- textaccent .initial:n = \g_ptxcd_color_accent_tl,
- identbar .tl_gset:N = \g_ptxcd_color_identbar_tl,
- identbar .initial:n = \g_ptxcd_color_accent_tl,
- accentcolor .meta:n = {accent =#1},
- textaccentcolor .meta:n = {textaccent = #1},
- identbarcolor .meta:n = {identbar = #1},
- color .code:n = \keys_set:nn {ptxcd/colors} {accent=#1, textaccent=#1, identbar=#1}\PassOptionsToPackage{color=}{siunitx},
- text .choice:,
- text/preferblack .code:n = \bool_gset_false:N \g_ptxcd_color_whitetext_bool,
- text/preferwhite .code:n = \bool_gset_true:N \g_ptxcd_color_whitetext_bool,
- text .initial:n = {preferwhite},
- text/black .meta:n = {text=preferblack},
- text/white .meta:n = {text=preferwhite},
- cmyk .code:n = \PassOptionsToPackage{cmyk}{xcolor},
- RGB .code:n = \PassOptionsToPackage{RGB}{xcolor},
- department .choice:,
- department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
- department / mecheng .code:n = \str_gset:Nn \g_ptxcd_department_str {mecheng}\keys_set:nn {ptxcd/colors}{accent=TUDa-2d,identbar=TUDa-6b},
- department / unknown .code:n = {
- \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
- },
- departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl,
- mecheng .meta:n = {department=mecheng},
+accent .tl_gset:N = \g_ptxcd_color_accent_tl,
+accent .initial:n = 0b,
+accentcolor .meta:n = {accent =#1},
+textaccent .tl_gset:N = \g_ptxcd_color_textaccent_tl,
+textaccent .initial:n = \g_ptxcd_color_accent_tl,
+textaccentcolor .meta:n = {textaccent = #1},
+identbar .tl_gset:N = \g_ptxcd_color_identbar_tl,
+identbar .initial:n = \g_ptxcd_color_accent_tl,
+identbarcolor .meta:n = {identbar = #1},
+color .code:n = {
+ \keys_set:nn {ptxcd/colors} {
+ accent=#1,
+ textaccent=#1,
+ identbar=#1
+ }
+ \PassOptionsToPackage{color=}{siunitx}
+ },
+text .choice:,
+text/preferblack .code:n = \bool_gset_false:N \g_ptxcd_color_whitetext_bool,
+text/preferwhite .code:n = \bool_gset_true:N \g_ptxcd_color_whitetext_bool,
+text .initial:n = {preferwhite},
+text/black .meta:n = {text=preferblack},
+text/white .meta:n = {text=preferwhite},
+cmyk .code:n = \PassOptionsToPackage{cmyk}{xcolor},
+RGB .code:n = \PassOptionsToPackage{RGB}{xcolor},
+department .choice:,
+department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
+department / mecheng .code:n = {
+ \str_gset:Nn \g_ptxcd_department_str {mecheng}
+ \keys_set:nn {ptxcd/colors}{
+ accent=TUDa-2d,
+ identbar=TUDa-6b
+ }
+ },
+department / unknown .code:n = {
+\str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
+},
+department .initial:V = \g_ptxcd_department_str,
+departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl,
+mecheng .meta:n = {department=mecheng},
}
-
\ProcessKeyOptions[ptxcd/colors]
-
\RequirePackage{xcolor}
-
\input{tudacolors.def}
-
\str_if_eq:VnT \g_ptxcd_department_str {mecheng} {
- \colorlet{TUDa-Primary1}{TUDa-6b}
- \colorlet{TUDa-Primary2}{TUDa-2d}
- \colorlet{TUDa-Secondary1}{TUDa-9a}
- \colorlet{TUDa-Secondary2}{TUDa-8a}
- \colorlet{TUDa-Secondary3}{TUDa-6a}
- \colorlet{TUDa-Secondary4}{TUDa-3a}
- \colorlet{TUDa-Secondary5}{TUDa-4a}
- \colorlet{TUDa-Secondary6}{TUDa-5a}
- \colorlet{TUDa-Arrow}{TUDa-Primary2}
+\colorlet{TUDa-Primary1}{TUDa-6b}
+\colorlet{TUDa-Primary2}{TUDa-2d}
+\colorlet{TUDa-Secondary1}{TUDa-9a}
+\colorlet{TUDa-Secondary2}{TUDa-8a}
+\colorlet{TUDa-Secondary3}{TUDa-6a}
+\colorlet{TUDa-Secondary4}{TUDa-3a}
+\colorlet{TUDa-Secondary5}{TUDa-4a}
+\colorlet{TUDa-Secondary6}{TUDa-5a}
+\colorlet{TUDa-Arrow}{TUDa-Primary2}
}
-
-
\clist_const:Nn \c_ptxcd_color_forbid_textaccent_clist {TUDa-0a,TUDa-5a,TUDa-6a,TUDa-6b,TUDa-7a}
\clist_const:Nn \c_ptxcd_color_allow_blacktext_clist {TUDa-0a,TUDa-0b,TUDa-0c,TUDa-1a,TUDa-2a,TUDa-3a,TUDa-4a,TUDa-4b,TUDa-4c,TUDa-5a,TUDa-5b,TUDa-5c,TUDa-6a,TUDa-6b,TUDa-6c,TUDa-7a,TUDa-7b,TUDa-7c,TUDa-8a,TUDa-8b,TUDa-8c,TUDa-9a,TUDa-9b,TUDa-10a}
\clist_const:Nn \c_ptxcd_color_allow_whitetext_clist {TUDa-0b,TUDa-0c,TUDa-0d,black,TUDa-1a,TUDa-1b,TUDa-1c,TUDa-1d,TUDa-2a,TUDa-2b,TUDa-2c,TUDa-2d,TUDa-3a,TUDa-3b,TUDa-3c,TUDa-3d,TUDa-4b,TUDa-4c,TUDa-4d,TUDa-5b,TUDa-5c,TUDa-5d,TUDa-6c,TUDa-6d,TUDa-7b,TUDa-7c,TUDa-7d,TUDa-8a,TUDa-8b,TUDa-8c,TUDa-8d,TUDa-9a,TUDa-9b,TUDa-9c,TUDa-9d,TUDa-10a,TUDa-10b,TUDa-10c,TUDa-10d,TUDa-11a,TUDa-11b,TUDa-11c,TUDa-11d}
-
-
-%messages
\msg_new:nnnn{tudacolors} {undefined-color} {The~ color~ #1~ you~ selected~ is~ not~ defined.} {See~ the~ tuda-ci~ manual~ for~ a~ list~ of~ available~ colors.}
-\msg_new:nnnn{tudacolors} {unselectable-color} {The~ color~ you~ selected~ (#1)~ must~ not~ be~ choosen~ for~ #2.} {See~ the~ Corporate~ Design~ Guidelines~ for~ further~ information.}
-
+\msg_new:nnnn{tudacolors} {unselectable-color} {The~ color~ you~ selected~ (#1)~ must~ not~ be~ choosen~ for~ #2.} {See~ the~ Corporate~ Design~ Guideline~ for~ further~ information.}
\hook_new:n {ptxcd/init-colors}
\hook_gput_code:nnn {ptxcd/init-colors} {tudacolors} {
- \clist_map_inline:nn {accent, textaccent, identbar} {
- \cs_if_exist:cF {\string\color@\tl_use:c {g_ptxcd_color_#1_tl}} {
- \cs_if_exist:cT {\string\color@TUDa-\tl_use:c {g_ptxcd_color_#1_tl}} {
- \tl_gset:cx {g_ptxcd_color_#1_tl} {TUDa-\tl_use:c {g_ptxcd_color_#1_tl}}
- }}
- }
- \exp_args:Nnx \colorlet{accentcolor}{\g_ptxcd_color_accent_tl}
- \bool_if:NTF \g_ptxcd_color_whitetext_bool {
- \clist_if_in:NVTF \c_ptxcd_color_allow_whitetext_clist \g_ptxcd_color_accent_tl {
- \colorlet{textonaccentcolor}{white}
- } {
- \colorlet{textonaccentcolor}{black}
- \tl_if_in:NnT \g_ptxcd_color_accent_tl {TUDa} {\msg_warning:nnxx{tudacolors} {unselectable-color} {white} {textonaccentcolor}}
- }
- } {
- \clist_if_in:NVTF \c_ptxcd_color_allow_blacktext_clist \g_ptxcd_color_accent_tl {
- \colorlet{textonaccentcolor}{black}
- } {
- \colorlet{textonaccentcolor}{white}
- \tl_if_in:NnT \g_ptxcd_color_accent_tl {TUDa} {msg_warning:nnxx{tudacolors} {unselectable-color} {black} {textonaccentcolor}}
- }
- }
- \colorlet{identbarcolor}{\g_ptxcd_color_identbar_tl}
- \exp_args:NNx \clist_if_in:NnTF \c_ptxcd_color_forbid_textaccent_clist {\g_ptxcd_color_textaccent_tl} {
- \msg_warning:nnxx{tudacolors} {unselectable-color} {\g_ptxcd_color_textaccent_tl} {textaccentcolor}
- \colorlet{textaccentcolor}{black}
- } {
- \colorlet{textaccentcolor}{\g_ptxcd_color_textaccent_tl}
- }
+ \clist_map_inline:nn {accent, textaccent, identbar} {
+ \cs_if_exist:cF {\string\color@\tl_use:c {g_ptxcd_color_#1_tl}} {
+ \cs_if_exist:cT {\string\color@TUDa-\tl_use:c {g_ptxcd_color_#1_tl}} {
+ \tl_gset:cx {g_ptxcd_color_#1_tl} {TUDa-\tl_use:c {g_ptxcd_color_#1_tl}}
+ }
+ }
+ }
+ \exp_args:Nnx \colorlet{accentcolor}{\g_ptxcd_color_accent_tl}
+ \bool_if:NTF \g_ptxcd_color_whitetext_bool {
+ \clist_if_in:NVTF \c_ptxcd_color_allow_whitetext_clist \g_ptxcd_color_accent_tl {
+ \colorlet{textonaccentcolor}{white}
+ } {
+ \colorlet{textonaccentcolor}{black}
+ \tl_if_in:NnT \g_ptxcd_color_accent_tl {TUDa} {
+ \msg_warning:nnxx{tudacolors} {unselectable-color} {white} {textonaccentcolor}
+ }
+ }
+ } {
+ \clist_if_in:NVTF \c_ptxcd_color_allow_blacktext_clist \g_ptxcd_color_accent_tl {
+ \colorlet{textonaccentcolor}{black}
+ } {
+ \colorlet{textonaccentcolor}{white}
+ \tl_if_in:NnT \g_ptxcd_color_accent_tl {TUDa} {
+ \msg_warning:nnxx{tudacolors} {unselectable-color} {black} {textonaccentcolor}
+ }
+ }
+ }
+ \colorlet{identbarcolor}{\g_ptxcd_color_identbar_tl}
+ \exp_args:NNx \clist_if_in:NnTF \c_ptxcd_color_forbid_textaccent_clist {\g_ptxcd_color_textaccent_tl} {
+ \msg_warning:nnxx{tudacolors} {unselectable-color} {\g_ptxcd_color_textaccent_tl} {textaccentcolor}
+ \colorlet{textaccentcolor}{black}
+ } {
+ \colorlet{textaccentcolor}{\g_ptxcd_color_textaccent_tl}
+ }
}
-
\file_if_exist_input:n {\g__ptxcd_config_prefix_tl\g_ptxcd_department_str-colors.def}
-
\hook_use:n {ptxcd/init-colors}
-
\colorlet{InfoBox}{white}
-
\endinput
+%%
+%% End of file `tudacolors.sty'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls
index 366b9668261..791bfc4d3b6 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls
@@ -1,10 +1,22 @@
-%% This is file `tudaexercise.cls' version 3.41 (2024-07-02),
+%%
+%% This is file `tudaexercise.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudaexercise.dtx (with options: `class,initialization')
+%% tuda-ci.dtx (with options: `options,exercise,print')
+%% tudaexercise.dtx (with options: `class,center')
+%% tuda-ci.dtx (with options: `margin,geometry,exercise')
+%% tudaexercise.dtx (with options: `class,body')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,25 +25,20 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\def\fileversion{3.41}
-\def\filedate{2024-07-02}
-\NeedsTeXFormat{LaTeX2e}
-
-\ProvidesExplClass{tudaexercise}
- {\filedate}{\fileversion}{Exercise sheets and exams using TU Darmstadt's Corporate Desing (TUDa-CI)}
-
+%%
+\NeedsTeXFormat{LaTeX2e}[2020/10/01]
+\ProvidesExplClass{tudaexercise}{2025-01-26}{4.00}{Exercise sheets and exams using TU Darmstadt's Corporate Desing (TUDa-CI)}
\msg_new:nnnn {tudaexercise} {outdated-koma-script} {
Your~KOMA-Script~is~outdated.\\
To~use~the~feature~'#1'~you~will~be~required~to~update.
@@ -39,558 +46,507 @@
Please~do~not~use~this~feature~or~update~your~TeX~distribution.\\
The~feature~requires~KOMA-Script~v#2~or~newer.
}
-
\str_const:Nn \c__ptxcd_base_str {exercise}
\prop_new:N \g_ptxcd_clsopts_prop
\prop_new:N \g_ptxcd_unknown_clsopts_prop
\prop_gput:Nnn \g_ptxcd_clsopts_prop {captions} {nooneline}
\prop_gput:Nnn \g_ptxcd_clsopts_prop {parskip} {half-}
-
\prop_new:N \g__ptxcd_points_collector_prop
\prop_new:N \g__ptxcd_subtask_points_collector_prop
+\prop_new:N \g__ptxcd_property_collector_prop
\bool_new:N \l__ptxcd_points_auto_bool
\bool_new:N \g__ptxcd_points_bool
\prop_new:N \g__ptxcd_loaded_points_prop
\fp_new:N \g__ptxcd_points_total_fp
-
\int_new:N \g_ptxcd_paper_int
-
\bool_new:N \g_ptxcd_geometry_bool
\bool_new:N \g_ptxcd_custommargins_bool
-\bool_new:N \l_ptxcd_ex_solution_bool
-
+\bool_new:N \l__ptxcd_solution_bool
\bool_new:N \g_ptxcd_smalltitle_bool
\str_new:N \g_ptxcd_department_str
-
\tl_new:N \g_ptxcd_tmp_tl
\int_new:N \g_ptxcd_tmp_int
\tl_new:N \l_ptxcd_tmp_tl
-
\clist_map_inline:nn {section,subsection,subsubsection,task,subtask,@solution} {
- \bool_new:c {g__ptxcd_ruled_#1_bool}
- \bool_gset_true:c {g__ptxcd_ruled_#1_bool}
+ \bool_new:c {g__ptxcd_ruled_#1_bool}
+ \bool_gset_true:c {g__ptxcd_ruled_#1_bool}
}
-
\bool_new:N \g__ptxcd_runin_subtask_bool
-
-\RequirePackage{environ}
-
\newenvironment{solution}{}{}
\newenvironment{solution*}{}{}
-
-\cs_new:Nn \ptxcd_setup_solution: {
- \bool_if:NTF \l_ptxcd_ex_solution_bool {
- \def\solution{\ptxcd_ex_solutionheader:}
- \def\endsolution{}
- \expandafter\def\csname solution*\endcsname{\ignorespaces}
- \expandafter\let\csname endsolution*\endcsname\endsolution
- }{
- \RenewEnviron{solution}{
- \if_false:
- \BODY
- \fi:
- }
- \RenewEnviron{solution*}{
- \if_false:
- \BODY
- \fi:
- }
- }
+\cs_new:Nn \__ptxcd_setup_solution: {
+ \bool_if:NTF \l__ptxcd_solution_bool {
+ \def\solution{\__ptxcd_solutionheader:}
+ \def\endsolution{}
+ \expandafter\def\csname solution*\endcsname{\ignorespaces}
+ \expandafter\let\csname endsolution*\endcsname\endsolution
+ }{
+ \RenewDocumentEnvironment{solution}{+b}{}{}
+ \RenewDocumentEnvironment{solution*}{+b}{}{}
+ }
}
-
-\ptxcd_setup_solution:
-
+\__ptxcd_setup_solution:
\prg_new_conditional:Nnn \__ptxcd_if_solution: {T,F,TF} {
- \bool_if:NTF \l_ptxcd_ex_solution_bool
- {\prg_return_true:}
- {\prg_return_false:}
+ \bool_if:NTF \l__ptxcd_solution_bool
+ {\prg_return_true:}
+ {\prg_return_false:}
}
-
\let\IfSolutionT \__ptxcd_if_solution:T
\let\IfSolutionF \__ptxcd_if_solution:F
\let\IfSolutionTF \__ptxcd_if_solution:TF
-
-
-%Message Declaration for option processing
\msg_new:nnn{tudaexercise} {titlepage-option-disabled} {
- You~set~the~titlepage~option~to~#1.\\
- This option is not supported by tudaexercise.cls.\\
- The~KOMA-Script~option~titlepage~is~forced~to~"false".
+ You~set~the~titlepage~option~to~#1.\\
+ This option is not supported by tudaexercise.cls.\\
+ The~KOMA-Script~option~titlepage~is~forced~to~"false".
}
-
+\PassOptionsToPackage{pdfusetitle,bookmarksnumbered=true}{hyperref}
\keys_define:nn {ptxcd/exercise} {
- color .code:n = {\PassOptionsToPackage{color=#1}{tudacolors}},
- accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}},
- textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}},
- textonaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}},
- identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}},
- color .initial:n = 0b,
- custommargins .choice:,
- custommargins / true .code:n ={
- \bool_gset_true:N \g_ptxcd_custommargins_bool
- \bool_gset_false:N \g_ptxcd_geometry_bool
- },
- custommargins / false .code:n ={
- \bool_gset_false:N \g_ptxcd_custommargins_bool
- \bool_gset_true:N \g_ptxcd_geometry_bool
- },
- custommargins / geometry .code:n = {
- \bool_gset_true:N \g_ptxcd_custommargins_bool
- \bool_gset_true:N \g_ptxcd_geometry_bool
- },
- custommargins .initial:n = false,
- custommargins .default:n = true,
- fontsize .code:n = \prop_gput:Nnn \g_ptxcd_clsopts_prop {fontsize} {#1},
- fontsize .initial:n = {10pt},
- BCOR .code:n = \PassOptionsToPackage{bindingoffset=#1}{geometry},
- bindingoffset .meta:n = {BCOR=#1},
- captions .code:n = {\prop_gput:Nnx \g_ptxcd_clsopts_prop {captions} {
- \use:n {\prop_item:Nn \g_ptxcd_clsopts_prop {captions}}, #1}
- },
- titlepage .code:n = {\msg_warning:nnn {tudapub} {titlepage-option-disabled} {#1}},
- paper .choices:nn = {a0,a1,a2,a3,a4,a5,a6}{
- \int_gset_eq:NN \g_ptxcd_paper_int \l_keys_choice_int
- \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{tudarules}
- \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{typearea}
- \exp_args:Nx \PassOptionsToPackage{\l_keys_choice_tl paper}{geometry}
- },
- paper .initial:n = a4,
- logofile .tl_gset:N = \g_ptxcd_logofile_tl,
- logofile .initial:n = tuda_logo,
- compat .bool_gset:N = \g_ptxcd_ex_compatibility_bool,
- compat .initial:n = false,
- compatilibity .meta:n = {compat=#1},
- compatibility .default:n = true,
- credit .tl_set:N = \l_ptxcd_ex_credit_tl,
- credit .initial:n =,
- headontitle .bool_gset:N = \g_ptxcd_headontitle_bool,
- headontitle .initial:n = false,
- headontitle .default:n =true,
- colorback .bool_gset:N = \g_ptxcd_colorback_bool,
- colorback .default:n = true,
- colorback .initial:n = true,
- title .choice:,
- title / default .meta:n = {title=large},
- title / large .code:n = \bool_gset_false:N \g_ptxcd_smalltitle_bool,
- title / small .code:n = \bool_gset_true:N \g_ptxcd_smalltitle_bool,
- title .initial:n = default,
- department .choice:,
- department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
- department / mecheng .code:n = {
- \str_gset:Nn \g_ptxcd_department_str {mecheng}
- \keys_set:nn {ptxcd/exercise}{colorback=false,departmentlogofile=tuda_maschinenbau_logo,color=Primary1}
- },
- department .initial:n = default,
- department / unknown .code:n = {
- \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
- },
- departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl,
- departmentconfigprefix .initial:n = tuda,
- mecheng .meta:n = {department=mecheng},
- departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl,
- departmentlogofile .initial:n =,
- match-task-subtask-syntax .bool_gset:N = \g_ptxcd_match_task_subtask_bool,
- match-task-subtask-syntax .initial:n = false,
- match-task-subtask-syntax .default:n = true,
- solution .code:n = {
- \bool_set_eq:Nc \l_ptxcd_ex_solution_bool {c_#1_bool}
- \ptxcd_setup_solution:
- },
- solution .default:n = true,
- unknown .code:n = {\prop_gput:NVn \g_ptxcd_unknown_clsopts_prop \l_keys_key_tl {#1}},
- points .choice:,
- points / true .code:n = \bool_set_false:N \l__ptxcd_points_auto_bool\bool_gset_true:N \g__ptxcd_points_bool,
- points /false .code:n = \bool_set_false:N \l__ptxcd_points_auto_bool\bool_gset_false:N \g__ptxcd_points_bool,
- points / auto .code:n = \bool_set_true:N \l__ptxcd_points_auto_bool\bool_gset_true:N \g__ptxcd_points_bool,
- points .initial:n = false,
- subtask .choice:,
- subtask / ruled .code:n =
- \bool_gset_true:N \g__ptxcd_ruled_subtask_bool
- \bool_gset_false:N \g__ptxcd_runin_subtask_bool,
- subtask / runin .code:n =
- \bool_gset_false:N \g__ptxcd_ruled_subtask_bool
- \bool_gset_true:N \g__ptxcd_runin_subtask_bool,
- subtask / plain .code:n =
- \bool_gset_false:N \g__ptxcd_ruled_subtask_bool
- \bool_gset_false:N \g__ptxcd_runin_subtask_bool,
+ bookmarksnumbered .code:n = \PassOptionsToPackage{bookmarksnumbered=#1}{hyperref},
+ compat .bool_gset:N = \g__ptxcd_compatibility_bool,
+ compat .initial:n = false,
+ compatilibity .meta:n = {compat=#1},
+ compatibility .default:n = true,
+ credit .tl_set:N = \l__ptxcd_credit_tl,
+ credit .initial:n =,
+ headontitle .bool_gset:N = \g_ptxcd_headontitle_bool,
+ headontitle .initial:n = false,
+ headontitle .default:n =true,
+ titlepage .code:n = {\msg_warning:nnn {tudapub} {titlepage-option-disabled} {#1}},
+ match-task-subtask-syntax .bool_gset:N = \g_ptxcd_match_task_subtask_bool,
+ match-task-subtask-syntax .initial:n = false,
+ match-task-subtask-syntax .default:n = true,
+ solution .code:n = {
+ \bool_set_eq:Nc \l__ptxcd_solution_bool {c_#1_bool}
+ \__ptxcd_setup_solution:
+ },
+ solution .default:n = true,
+ unknown .code:n = {\prop_gput:NVn \g_ptxcd_unknown_clsopts_prop \l_keys_key_tl {#1}},
+ points .choice:,
+ points / true .code:n = \bool_set_false:N \l__ptxcd_points_auto_bool\bool_gset_true:N \g__ptxcd_points_bool,
+ points /false .code:n = \bool_set_false:N \l__ptxcd_points_auto_bool\bool_gset_false:N \g__ptxcd_points_bool,
+ points / auto .code:n = \bool_set_true:N \l__ptxcd_points_auto_bool\bool_gset_true:N \g__ptxcd_points_bool,
+ points .initial:n = false,
+ subtask .choice:,
+ subtask / ruled .code:n =
+ \bool_gset_true:N \g__ptxcd_ruled_subtask_bool
+ \bool_gset_false:N \g__ptxcd_runin_subtask_bool,
+ subtask / runin .code:n =
+ \bool_gset_false:N \g__ptxcd_ruled_subtask_bool
+ \bool_gset_true:N \g__ptxcd_runin_subtask_bool,
+ subtask / plain .code:n =
+ \bool_gset_false:N \g__ptxcd_ruled_subtask_bool
+ \bool_gset_false:N \g__ptxcd_runin_subtask_bool,
+ logofile .tl_gset:N = \g_ptxcd_logofile_tl,
+ logofile .initial:n = tuda_logo,
+ accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool,
+ accept-missing-logos .initial:n = false,
+ accept-missing-logos .usage:n = load,
+ accept-missing-logos .default:n = true,
+ department .choice:,
+ department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
+ department / mecheng .code:n = {
+ \str_gset:Nn \g_ptxcd_department_str {mecheng}
+ \exp_args:Ne \keys_set:ne {
+
+ ptxcd / \c__ptxcd_base_str
+ }{
+ colorback=false,
+ departmentlogofile=tuda_maschinenbau_logo,
+ color=Primary1,
+ }
+ },
+
+ department .initial:n = default,
+ department / unknown .code:n = {
+ \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
+ },
+ departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl,
+ departmentconfigprefix .initial:n = tuda,
+ departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl,
+ departmentlogofile .initial:n =,
+ mecheng .meta:n = {department=mecheng},
+%% color options
+%% color options
+ color .meta:n = {accentcolor=#1},
+ accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}},
+ textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}},
+ identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}},
+ colorback .bool_gset:N = \g_ptxcd_colorback_bool,
+ colorback .default:n = true,
+ colorback .initial:n = true,
+ custommargins .choice:,
+ custommargins / true .code:n ={
+ \bool_gset_true:N \g_ptxcd_custommargins_bool
+ \bool_gset_false:N \g_ptxcd_geometry_bool
+ },
+ custommargins / false .code:n ={
+ \bool_gset_false:N \g_ptxcd_custommargins_bool
+ \bool_gset_true:N \g_ptxcd_geometry_bool
+ },
+ custommargins / geometry .code:n = {
+ \bool_gset_true:N \g_ptxcd_custommargins_bool
+ \bool_gset_true:N \g_ptxcd_geometry_bool
+ },
+ custommargins .initial:n = false,
+ custommargins .default:n = true,
+ fontsize .code:n = \prop_gput:Nnn \g_ptxcd_clsopts_prop {fontsize} {#1},
+ fontsize .initial:n =
+ {10pt},
+ BCOR .code:n = \PassOptionsToPackage{bindingoffset=#1}{geometry},
+ bindingoffset .meta:n = {BCOR=#1},
+ captions .code:n = {\prop_gput:Nnx \g_ptxcd_clsopts_prop {captions} {
+ \use:n {\prop_item:Nn \g_ptxcd_clsopts_prop {captions}}, #1}
+ },
+ paper .choices:nn = {
+ a0,a1,a2,a3,a4,a5,a6
+ }{
+ \int_gset_eq:NN \g_ptxcd_paper_int \l_keys_choice_int
+ \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{tudarules}
+ \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{typearea}
+ \exp_args:Nx \PassOptionsToPackage{\l_keys_choice_tl paper}{geometry}
+ },
+ paper .initial:n =
+
+ a4,
+ title .choice:,
+ title / default .meta:n = {title=large},
+ title / large .code:n = \bool_gset_false:N \g_ptxcd_smalltitle_bool,
+ title / small .code:n = \bool_gset_true:N \g_ptxcd_smalltitle_bool,
+ title .initial:n = default,
+}
+\cs_if_exist:NT \TUDaDefaultBuildOptions {
+ \exp_args:Ne \keys_set:ne { ptxcd /
+ \c__ptxcd_base_str
+ } {
+ \TUDaDefaultBuildOptions
+ }
+}
+\cs_new:Nn \__ptxcd_insert_logo: {
+ \bool_if:NTF \g_ptxcd_logo_workaround_bool {
+ \file_if_exist:nTF {\g_ptxcd_logofile_tl.pdf}
+ \use_ii:nn
+ \use_i:nn
+ } {
+ \use_ii:nn
+ }
+ {\rule{0pt}{\c_ptxcd_logoheight_dim}\makebox[2.5\c_ptxcd_logoheight_dim][c]{\rule[.1\c_ptxcd_logoheight_dim]{2.05\c_ptxcd_logoheight_dim}{.8\c_ptxcd_logoheight_dim}}}
+ {\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}
}
-
\ProcessKeyOptions[ptxcd/exercise]
-
\prop_map_inline:Nn \g_ptxcd_clsopts_prop {
- \tl_if_empty:nTF {#2}
- {\PassOptionsToClass {#1} {scrartcl}}
- {
- \clist_map_inline:nn {#2} {\PassOptionsToClass {#1=##1} {scrartcl}}
- }
-}
-
-\RequirePackage{environ}
-
-\bool_new:N \l_ptxcd_ex_subtask_fallback_bool
-\fp_new:N \l_ptxcd_ex_task_points_fp
-\fp_new:N \g__ptxcd_ex_collected_points_fp
-\tl_new:N \l_ptxcd_ex_task_credit_tl
-
-\keys_define:nn {ptxcd/task}{
- points .choice:,
- points / auto .code:n =
- \bool_set_true:N \l__ptxcd_points_auto_bool,
- points / unknown .code:n = \fp_set:Nn \l_ptxcd_ex_task_points_fp {#1}
- \bool_set_false:N \l__ptxcd_points_auto_bool,
- credit .code:n = \tl_set:Nn \l_ptxcd_ex_task_credit_tl {#1}
- \bool_set_false:N \l__ptxcd_points_auto_bool,
- solution .meta:nn ={ptxcd/exercise}{solution=#1},
+ \tl_if_empty:nTF {#2}
+ {\PassOptionsToClass {#1} {scrartcl}}
+ {
+ \clist_map_inline:nn {#2} {\PassOptionsToClass {#1=##1} {scrartcl}}
+ }
}
-
-\fp_new:N \l_ptxcd_ex_subtask_points_fp
+ \bool_new:N \l__ptxcd_subtask_fallback_bool
+ \fp_new:N \l__ptxcd_task_points_fp
+ \fp_new:N \g__ptxcd_ex_collected_points_fp
+ \tl_new:N \l__ptxcd_task_credit_tl
+ \keys_define:nn {ptxcd/task}{
+ points .choice:,
+ points / auto .code:n =
+ \bool_set_true:N \l__ptxcd_points_auto_bool,
+ points / unknown .code:n = \fp_set:Nn \l__ptxcd_task_points_fp {#1}
+ \bool_set_false:N \l__ptxcd_points_auto_bool,
+ credit .code:n = \tl_set:Nn \l__ptxcd_task_credit_tl {#1}
+ \bool_set_false:N \l__ptxcd_points_auto_bool,
+ solution .meta:nn ={ptxcd/exercise}{solution=#1},
+ }
+\fp_new:N \l__ptxcd_subtask_points_fp
\keys_define:nn {ptxcd/subtask} {
- credit .tl_set:N = \l_ptxcd_ex_subtask_credit_tl,
- credit .initial:n =,
- points .code:n = \fp_set:Nn \l_ptxcd_ex_subtask_points_fp {#1}
- \bool_set_false:N \l__ptxcd_points_auto_bool,
- title .tl_set:N = \l_ptxcd_ex_title_tl,
- title .initial:n =,
- unknown .code:n = \bool_set_true:N \l_ptxcd_ex_subtask_fallback_bool \tl_clear:N \l_ptxcd_ex_subtask_credit_tl \fp_zero:N \l_ptxcd_ex_subtask_points_fp,
+ credit .tl_set:N = \l__ptxcd_subtask_credit_tl,
+ credit .initial:n =,
+ points .code:n = \fp_set:Nn \l__ptxcd_subtask_points_fp {#1}
+ \bool_set_false:N \l__ptxcd_points_auto_bool,
+ title .tl_set:N = \l__ptxcd_title_tl,
+ title .initial:n =,
+ unknown .code:n = {
+ \bool_set_true:N \l__ptxcd_subtask_fallback_bool
+ \tl_clear:N \l__ptxcd_subtask_credit_tl
+ \fp_zero:N \l__ptxcd_subtask_points_fp
+ },
}
-
\keys_define:nn {ptxcd/exercise/headline} {
- headline .code:n = {
- \if@twoside
- \keys_set:nn {ptxcd/exercise/headline} {odd=#1,even=#1}
- \else
- \keys_set:nn {ptxcd/exercise/headline} {oneside=#1}
- \fi
- },
+ headline .code:n = {
+ \if@twoside
+ \keys_set:nn {ptxcd/exercise/headline} {odd=#1,even=#1}
+ \else
+ \keys_set:nn {ptxcd/exercise/headline} {oneside=#1}
+ \fi
+ },
}
-
\clist_map_inline:nn {odd, even, oneside} {
- \tl_new:c {g_ptxcd_ex_headline_#1_tl}
- \keys_define:nn {ptxcd/exercise/headline} {
- #1 .choice:,
- #1 / title-name-id .code:n = \tl_gset:cn {g_ptxcd_ex_headline_#1_tl} {
- \g_ptxcd_shorttitle_tl\par
- \StudentName\StudentID},
- #1 / title-name .code:n = \tl_gset:cn {g_ptxcd_ex_headline_#1_tl} {
- \g_ptxcd_shorttitle_tl\par
- \smallskip
- \StudentName},
- #1 / title .code:n = \tl_gset:cn {g_ptxcd_ex_headline_#1_tl} {\g_ptxcd_shorttitle_tl},
- #1 / name-id .code:n = \tl_gset:cn {g_ptxcd_ex_headline_#1_tl} {\StudentName\StudentID},
- #1 / name .code:n = \tl_gset:cn {g_ptxcd_ex_headline_#1_tl} {\StudentName},
- #1 / unknown .code:n = \tl_gset:cn {g_ptxcd_ex_headline_#1_tl} {##1}
- }
+ \tl_new:c {g__ptxcd_headline_#1_tl}
+ \box_new:c {g__ptxcd_headline_#1_box}
+ \keys_define:nn {ptxcd/exercise/headline} {
+ #1 .choice:,
+ #1 / title-name-id .meta:n = {
+ #1 = {
+ \g_ptxcd_shorttitle_tl\par
+ \StudentName\StudentID
+ }
+ },
+ #1 / title-name .meta:n = {
+ #1 = {
+ \g_ptxcd_shorttitle_tl\par
+ \smallskip
+ \StudentName
+ }
+ },
+ #1 / title .meta:n = {#1 = {\g_ptxcd_shorttitle_tl}},
+ #1 / name-id .meta:n = {#1 = {\StudentName\StudentID}},
+ #1 / name .meta:n = {#1 = {\StudentName}},
+ #1 / unknown .code:n = \tl_gset:cn {g__ptxcd_headline_#1_tl} {##1}
+ }
}
-
-
-%Load tudasize clo file if available
\file_if_exist:nT {tudasize\prop_item:Nn \g_ptxcd_clsopts_prop {fontsize}.clo}
- {\providecommand*{\@fontsizefilebase}{tudasize}}
-
+{\providecommand*{\@fontsizefilebase}{tudasize}}
\LoadClass{scrartcl}
-
\bool_if:NT \g__ptxcd_points_bool {
\cs_if_exist:NF \AddtoDoHook{
\msg_error:nnnn {tudaexercise} {outdated-koma-script} {points=true/auto} {3.27}
\keys_set:nn {ptxcd/exercise} {points=false}
- }
+ }
}
-
\RequirePackage{tudarules}
-
-%Has to be loaded here due to headwidth options
\RequirePackage[draft=false]{scrlayer-scrpage}
\KOMAoptions {twoside = false}
-
\prop_map_inline:Nn \g_ptxcd_unknown_clsopts_prop {
- \cs_if_exist:cT {KV@KOMA.scrartcl.cls@#1} {
- \tl_if_empty:nTF {#2}
- {\KOMAoptions{#1}}
- {\KOMAoption{#1}{#2}
- }
-}
+ \cs_if_exist:cT {KV@KOMA.scrartcl.cls@#1} {
+ \tl_if_empty:nTF {#2}
+ {\KOMAoptions{#1}}
+ {\KOMAoption{#1}{#2}
+ }
+ }
}
-
\renewcommand*\sectionlinesformat[4]{%
-\parbox{\linewidth}{
- \bool_if:cT {g__ptxcd_ruled_#1_bool} {
- \rule[5\g_ptxcd_titlerule_dim]{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip
- }
- \@hangfrom{%
- \hskip #2#3}{
- \tl_if_eq:nnT {#1} {task} {
- \exp_args:No \tl_if_empty:nF {#4}
- {:~}
- \bool_if:NT \l__ptxcd_points_auto_bool {
- \exp_args:NNx \prop_get:NnN \g__ptxcd_loaded_points_prop {\thetask} \l_ptxcd_tmp_tl
- \quark_if_no_value:NF \l_ptxcd_tmp_tl {
- \fp_set:Nn \l_ptxcd_ex_task_points_fp {\l_ptxcd_tmp_tl}
- }
- }
- }
- #4
- \tl_if_in:nnT {#1} {task} {
- \tl_if_empty:cTF{l_ptxcd_ex_#1_credit_tl}
- {\pointformat{\fp_to_decimal:c {l_ptxcd_ex_#1_points_fp}}}
- {\creditformat{\tl_use:c {l_ptxcd_ex_#1_credit_tl}}}
- }
- \rule[-\dp\strutbox]{0pt}{\dp\strutbox}\par}\nointerlineskip
- \skip_vertical:n {\ptxcd_titlerule_sep: -\dp\strutbox}
- \bool_if:cT {g__ptxcd_ruled_#1_bool} {\smash{\rule{\linewidth}{\g_ptxcd_titlerule_dim}}}
-}}
-
-
+ \parbox{\linewidth}{
+ \bool_if:cT {g__ptxcd_ruled_#1_bool} {
+ \rule[5\g_ptxcd_titlerule_dim]{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip
+ }
+ \@hangfrom{%
+ \hskip #2#3}{
+ \tl_if_eq:nnT {#1} {task} {
+ \exp_args:No \tl_if_empty:nF {#4}
+ {:~}
+ \bool_if:NT \l__ptxcd_points_auto_bool {
+ \exp_args:NNx \prop_get:NnN \g__ptxcd_loaded_points_prop {\thetask} \l_ptxcd_tmp_tl
+ \quark_if_no_value:NF \l_ptxcd_tmp_tl {
+ \fp_set:Nn \l__ptxcd_task_points_fp {\l_ptxcd_tmp_tl}
+ }
+ }
+ }
+ #4
+ \tl_if_in:nnT {#1} {task} {
+ \tl_if_empty:cTF{l__ptxcd_#1_credit_tl}
+ {\pointformat{\fp_to_decimal:c {l__ptxcd_#1_points_fp}}}
+ {\creditformat{\tl_use:c {l__ptxcd_#1_credit_tl}}}
+ }
+ \rule[-\dp\strutbox]{0pt}{\dp\strutbox}\par}\nointerlineskip
+ \skip_vertical:n {\ptxcd_titlerule_sep: -\dp\strutbox}
+ \bool_if:cT {g__ptxcd_ruled_#1_bool}
+ {\smash{\rule{\linewidth}{\g_ptxcd_titlerule_dim}}}
+ }
+}
\RequirePackage{tudafonts}
-
\dim_new:N \g_ptxcd_innerMargin_dim
\dim_new:N \g_ptxcd_outerMargin_dim
\dim_new:N \g_ptxcd_bottomMargin_dim
\dim_new:N \g_ptxcd_topMargin_dim
-
- %a3,a4
- \int_compare:nTF {4<=\g_ptxcd_paper_int<=5}
- {
- \dim_gset:Nn \g_ptxcd_bottomMargin_dim {20mm}
- \dim_gset:Nn \g_ptxcd_outerMargin_dim {15mm}
- \dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim
- \dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim
- }{
- %a0, a1, a2
- \int_compare:nT {1<=\g_ptxcd_paper_int<=3}
- {
- \dim_gset:Nn \g_ptxcd_bottomMargin_dim {35mm}
- \dim_gset:Nn \g_ptxcd_outerMargin_dim {30mm}
- \dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim
- \dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim
- }
- %a5
- \int_compare:nT {\g_ptxcd_paper_int<=6}
- {
- \dim_gset:Nn \g_ptxcd_bottomMargin_dim {16mm}
- \dim_gset:Nn \g_ptxcd_outerMargin_dim {12mm}
- \dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim
- \dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim
- }
- %a6
- \int_compare:nT {\g_ptxcd_paper_int<=7}
- {
- \dim_gset:Nn \g_ptxcd_bottomMargin_dim {15mm}
- \dim_gset:Nn \g_ptxcd_outerMargin_dim {10mm}
- \dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim
- \dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim
- }
- }
+\int_compare:nTF {4<=\g_ptxcd_paper_int<=5}
+{
+\dim_gset:Nn \g_ptxcd_bottomMargin_dim {20mm}
+\dim_gset:Nn \g_ptxcd_outerMargin_dim {15mm}
+\dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim
+\dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim
+}{
+\int_compare:nT {1<=\g_ptxcd_paper_int<=3}
+{
+\dim_gset:Nn \g_ptxcd_bottomMargin_dim {35mm}
+\dim_gset:Nn \g_ptxcd_outerMargin_dim {30mm}
+\dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim
+\dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim
+}
+\int_compare:nT {\g_ptxcd_paper_int<=6}
+{
+\dim_gset:Nn \g_ptxcd_bottomMargin_dim {16mm}
+\dim_gset:Nn \g_ptxcd_outerMargin_dim {12mm}
+\dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim
+\dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim
+}
+\int_compare:nT {\g_ptxcd_paper_int<=7}
+{
+\dim_gset:Nn \g_ptxcd_bottomMargin_dim {15mm}
+\dim_gset:Nn \g_ptxcd_outerMargin_dim {10mm}
+\dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim
+\dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim
+}
+}
\dim_new:N \g_ptxcd_columnSep_dim
\dim_gset:Nn \g_ptxcd_columnSep_dim {10pt}
-
\dim_new:N \g_ptxcd_headheight_dim
-\dim_new:N \g_ptxcd_headwidth_dim
-
\dim_gset:Nn \g_ptxcd_headheight_dim {\c_ptxcd_largerule_dim +\c_ptxcd_rulesep_dim +\c_ptxcd_smallrule_dim}
-%%%%%Anfang Randeinstellungen Geometry
-
-
\bool_if:NTF \g_ptxcd_geometry_bool {
- \RequirePackage[top=\g_ptxcd_topMargin_dim, inner=\g_ptxcd_innerMargin_dim, outer=\dim_eval:n {\g_ptxcd_outerMargin_dim}, bottom=\g_ptxcd_bottomMargin_dim, columnsep= \g_ptxcd_columnSep_dim, includehead, includefoot, headheight=\g_ptxcd_headheight_dim
- ]{geometry}
+\RequirePackage{geometry}
+\geometry{
+top=\g_ptxcd_topMargin_dim,
+inner=\g_ptxcd_innerMargin_dim,
+outer=\dim_eval:n {\g_ptxcd_outerMargin_dim},
+bottom=\g_ptxcd_bottomMargin_dim,
+columnsep= \g_ptxcd_columnSep_dim,
+includehead,
+includefoot,
+headheight=\g_ptxcd_headheight_dim
+}
}{
- \KOMAoptions{headinclude, footinclude, headwidth=text,footwidth=text}
+\KOMAoptions{headinclude, footinclude}
+ \KOMAoptions{headwidth=text,footwidth=text}
}
-
-%%%%%%%%
-%Ende Randeinstellungen klassisch
-
\newcommand*{\institution}[1]{
- \def\ptxcd_institution{#1}
+\def\ptxcd_institution{#1}
}
-
\gdef\ptxcd_datename{Datum}
\gdef\ptxcd_dateseparator{:~}
-
-
-
-
\setkomafont{disposition}{\sffamily\bfseries}
-
\cs_new:Nn \ptxcd_titlerule_sep: {\the\dp\strutbox}
-
\RequirePackage{tudacolors}
-\RequirePackage{environ}
-
\setkomafont{pageheadfoot}{\sffamily\small}
\setkomafont{pagenumber}{}
\addtokomafont{captionlabel}{\sffamily}
\addtokomafont{caption}{\sffamily}
-
-\box_new:N \g_ptxcd_ex_headline_odd_box
-\box_new:N \g_ptxcd_ex_headline_even_box
-\box_new:N \g_ptxcd_ex_headline_oneside_box
-
-\cs_new:Nn \ptxcd_preamble_ConfigureHeadline:n {
+\cs_new:Nn \__ptxcd_preamble_ConfigureHeadline:n {
\tl_if_empty:nF {#1} {\keys_set:nn {ptxcd/exercise/headline} {#1}}
}
-
\cs_new:Nn \ptxcd_ConfigureHeadline:n {
- \ptxcd_preamble_ConfigureHeadline:n {#1}
+ \__ptxcd_preamble_ConfigureHeadline:n {#1}
\ptxcd_update_headline_boxes:
- \ptxcd_ex_adjust_headheight:
+ \__ptxcd_adjust_headheight:
}
-
-\let\ConfigureHeadline\ptxcd_preamble_ConfigureHeadline:n
-
-
-
-\bool_if:NT \g_ptxcd_ex_compatibility_bool {
- \cs_new:Npn \ptxcd_ex_env_to_tl_aux:w #1 \q_stop { \tl_gset:Nn \g_ptxcd_ex_headline_oneside_tl {#1} }
-
- \NewEnviron{examheader}{
- \tl_gset:No \g_ptxcd_ex_headline_oneside_tl {\BODY}
- \tl_gset:No \g_ptxcd_ex_headline_odd_tl {\BODY}
- \tl_gset:No \g_ptxcd_ex_headline_even_tl {\BODY}
- \ptxcd_ConfigureHeadline:n {}
- }
-
- \newcommand*{\examheaderdefault}{\par\StudentName\StudentID}
+\NewDocumentCommand{\ConfigureHeadline}{m}{\__ptxcd_preamble_ConfigureHeadline:n {#1}}
+\bool_if:NT \g__ptxcd_compatibility_bool {
+ \cs_new:Npn \__ptxcd_env_to_tl_aux:w #1 \q_stop { \tl_gset:Nn \g__ptxcd_headline_oneside_tl {#1} }
+ \NewDocumentEnvironment{examheader}{+b}{}{
+ \tl_gset:Nn \g__ptxcd_headline_oneside_tl {#1}
+ \tl_gset:Nn \g__ptxcd_headline_odd_tl {#1}
+ \tl_gset:Nn \g__ptxcd_headline_even_tl {#1}
+ \ptxcd_ConfigureHeadline:n {}
+ }
+ \newcommand*{\examheaderdefault}{\par\StudentName\StudentID}
}
-
-
\cs_new:Nn \ptxcd_update_headline_boxes: {
\clist_map_inline:nn {even, odd, oneside}
{
- \tl_if_empty:cF {g_ptxcd_ex_headline_##1_tl} {
- \vbox_gset:cn {g_ptxcd_ex_headline_##1_box} {
- \begin{minipage}[b]{\textwidth}
+ \tl_if_empty:cF {g__ptxcd_headline_##1_tl} {
+ \vbox_gset:cn {g__ptxcd_headline_##1_box} {
+ \begin{minipage}[b]{\textwidth}
\usekomafont{pagehead}
- \raggedright
+ \raggedright
\leavevmode\rule{\z@}{\dimexpr\ht\strutbox+\c_ptxcd_rulesep_dim}
\ignorespaces
- \use:c {g_ptxcd_ex_headline_##1_tl}\ignorespaces\strut
+ \use:c {g__ptxcd_headline_##1_tl}\ignorespaces\strut
\par\vspace{\z@}
\end{minipage}
}
}
}
}
-
-
-\cs_new:Nn \ptxcd_ex_adjust_headheight: {
- \if@twoside
- \dim_set:Nn \l_tmpa_dim {
- \dim_max:nn
- {\box_ht:N \g_ptxcd_ex_headline_odd_box+\box_dp:N \g_ptxcd_ex_headline_odd_box}
- {\box_ht:N \g_ptxcd_ex_headline_even_box+\box_dp:N \g_ptxcd_ex_headline_even_box}
- }
- \else
- \dim_set:Nn \l_tmpa_dim {
- \box_ht:N \g_ptxcd_ex_headline_oneside_box
- + \box_dp:N \g_ptxcd_ex_headline_oneside_box
- }
- \fi
- \dim_compare:nT {\l_tmpa_dim > \z@}
- {
- \dim_add:Nn \l_tmpa_dim {\box_dp:N \ptxcd_headrule_box +\c_ptxcd_rulesep_dim}
- \KOMAoptions{headinclude, headheight=\l_tmpa_dim,headsepline = .5\c_ptxcd_smallrule_dim}
- \if@twoside
- \cehead{\box_use:c {g_ptxcd_ex_headline_even_box}}
- \cohead{\box_use:c {g_ptxcd_ex_headline_odd_box}}
- \else
- \chead{\box_use:c {g_ptxcd_ex_headline_oneside_box}}
- \fi
- \global\setlength{\headheight}{\l_tmpa_dim}
- }
+\cs_new:Nn \__ptxcd_adjust_headheight: {
+ \if@twoside
+ \dim_set:Nn \l_tmpa_dim {
+ \dim_max:nn
+ {\box_ht:N \g__ptxcd_headline_odd_box+\box_dp:N \g__ptxcd_headline_odd_box}
+ {\box_ht:N \g__ptxcd_headline_even_box+\box_dp:N \g__ptxcd_headline_even_box}
+ }
+ \else
+ \dim_set:Nn \l_tmpa_dim {
+ \box_ht:N \g__ptxcd_headline_oneside_box
+ + \box_dp:N \g__ptxcd_headline_oneside_box
+ }
+ \fi
+ \dim_compare:nT {\l_tmpa_dim > \z@}
+ {
+ \dim_add:Nn \l_tmpa_dim {\box_dp:N \ptxcd_headrule_box +\c_ptxcd_rulesep_dim}
+ \KOMAoptions{headinclude, headheight=\l_tmpa_dim,headsepline = .5\c_ptxcd_smallrule_dim}
+ \if@twoside
+ \cehead{\box_use:c {g__ptxcd_headline_even_box}}
+ \cohead{\box_use:c {g__ptxcd_headline_odd_box}}
+ \else
+ \chead{\box_use:c {g__ptxcd_headline_oneside_box}}
+ \fi
+ \global\setlength{\headheight}{\l_tmpa_dim}
+ }
}
-
\newpairofpagestyles{TUDa.exercise}{
- \KOMAoptions{plainfootsepline,headtopline,plainheadtopline}
- \KOMAoptions {
- headwidth=text,
- footwidth=text
- }
- \setkomafont{pagehead}{}
- \box_if_exist:NF \ptxcd_headrule_box {
- \ptxcd_makeheadrule[color=identbarcolor, width=\sls@headwidth]{ptxcd_headrule}
- }
-\ModifyLayer[
- background,
- height=\box_dp:N \ptxcd_headrule_box,
- align=tl,
- voffset=\g_ptxcd_topMargin_dim,
- contents=\raisebox{\depth}{\box_use:N \ptxcd_headrule_box},
- ]{plain.TUDa.exercise.head.above.line}
- \ModifyLayer[
- background,
- height=\box_dp:N \ptxcd_headrule_box,
- align=tl,
- voffset=\g_ptxcd_topMargin_dim,
- contents=\raisebox{\depth}{\box_use:N \ptxcd_headrule_box},
- ]{TUDa.exercise.head.above.line}
- \ofoot[\pagemark]{\pagemark}
- \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.exercise.foot.even}
- \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.exercise.foot.odd}
- \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.exercise.foot.oneside}
- \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{plain.TUDa.exercise.foot.even}
- \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{plain.TUDa.exercise.foot.odd}
- \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{plain.TUDa.exercise.foot.oneside}
+ \KOMAoptions{plainfootsepline,headtopline,plainheadtopline}
+ \KOMAoptions {
+ headwidth=text,
+ footwidth=text
+ }
+ \setkomafont{pagehead}{}
+ \box_if_exist:NF \ptxcd_headrule_box {
+ \ptxcd_makeheadrule[color=identbarcolor, width=\sls@headwidth]{ptxcd_headrule}
+ }
+ \ModifyLayer[
+ background,
+ height=\box_dp:N \ptxcd_headrule_box,
+ align=tl,
+ voffset=\g_ptxcd_topMargin_dim,
+ contents=\raisebox{\depth}{\box_use:N \ptxcd_headrule_box},
+ ]{plain.TUDa.exercise.head.above.line}
+ \ModifyLayer[
+ background,
+ height=\box_dp:N \ptxcd_headrule_box,
+ align=tl,
+ voffset=\g_ptxcd_topMargin_dim,
+ contents=\raisebox{\depth}{\box_use:N \ptxcd_headrule_box},
+ ]{TUDa.exercise.head.above.line}
+ \ofoot[\pagemark]{\pagemark}
+ \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.exercise.foot.even}
+ \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.exercise.foot.odd}
+ \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.exercise.foot.oneside}
+ \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{plain.TUDa.exercise.foot.even}
+ \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{plain.TUDa.exercise.foot.odd}
+ \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{plain.TUDa.exercise.foot.oneside}
}
-
\DeclarePageStyleAlias{TUDa}{TUDa.exercise}
\DeclarePageStyleAlias{plain.TUDa}{plain.TUDa.exercise}
\renewcommand{\titlepagestyle}{plain.TUDa}
\pagestyle{TUDa}
-
-%Titelseite
-\tl_new:N \g_ptxcd_titleimage_code_tl
-\tl_gset_eq:NN \g_ptxcd_titleimage_code_tl \c_empty_tl
-\newcommand{\titleimage}[1]{\tl_gset:Nn \g_ptxcd_titleimage_code_tl {#1}}
-
-\box_new:N \g_ptxcd_title_box
-\skip_new:N \g_ptxcd_title_fill_skip
-
-
-
-
\seq_new:N \g_ptxcd_author_seq
-
\renewcommand*\author[1]{
- \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#1}
+\seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#1}
}
-
\msg_new:nnn{tudapub} {unknown-language} {
- You~selected~an~unknown~language~#1.\\
- The~Variable~#2~does~not~have~a~predefined~value.\\
- Ensure~to~redefine~#2~to~match~your~language.\\
- Otherwise~the~ngerman~vaue~#3~will~be~used.
+ You~selected~an~unknown~language~#1.\\
+ The~Variable~#2~does~not~have~a~predefined~value.\\
+ Ensure~to~redefine~#2~to~match~your~language.\\
+ Otherwise~the~ngerman~vaue~#3~will~be~used.
}
-
\cs_new:Nn \ptxcd_define_captionFallback:Nn {
- \providecommand*#1{
- \msg_warning:nnxxx{tudapub} {unknown-language}
- {\languagename} {\exp_not:N #1} {#2}
- \def#1{#2}
- }
+ \providecommand*#1{
+ \msg_warning:nnxxx{tudapub} {unknown-language}
+ {\languagename} {\exp_not:N #1} {#2}
+ \def#1{#2}
+ }
}
-
\cs_new:Nn \ptxcd_declare_caption:Nnnn {
- \ptxcd_define_captionFallback:Nn #1 {#2}
- \defcaptionname{ngerman, german}{#1}{#2}
- \defcaptionname{english, USenglish, american}{#1}{#3}
- \defcaptionname{UKenglish, british}{#1}{#4}
+ \ptxcd_define_captionFallback:Nn #1 {#2}
+ \defcaptionname{ngerman, german}{#1}{#2}
+ \defcaptionname{english, USenglish, american}{#1}{#3}
+ \defcaptionname{UKenglish, british}{#1}{#4}
}
-
\cs_new:Nn \ptxcd_declare_caption:Nnn {
- \ptxcd_declare_caption:Nnnn #1 {#2} {#3} {#3}
+ \ptxcd_declare_caption:Nnnn #1 {#2} {#3} {#3}
}
-
\ptxcd_declare_caption:Nnn \authorandname {und} {and}
-
\renewcommand*{\@author}{
- \seq_use:Nnnn \g_ptxcd_author_seq {~\authorandname{}~} {,~} {~\&~}
- }
-
+ \seq_use:Nnnn \g_ptxcd_author_seq {~\authorandname{}~} {,~} {~\&~}
+}
\tl_new:N \g_ptxcd_shorttitle_tl
-
\RenewDocumentCommand{\title}{om}{
\IfNoValueTF{#1}{
\tl_gset:Nn \g_ptxcd_shorttitle_tl {#2}
@@ -599,122 +555,112 @@
}
\def\@title{#2}
}
-
-% Define \subsubtitle for compatibility
- \newcommand*{\subsubtitle}[1]{
- \def\@subsubtitle{#1}
- }
- \subsubtitle{}
-
-
+\newcommand*{\subsubtitle}[1]{
+ \def\@subsubtitle{#1}
+}
+\subsubtitle{}
\newcommand*{\ptxcd_title@footnote}[2][1]{
-\textsuperscript{\@fnsymbol{#1}}#2
+ \textsuperscript{\@fnsymbol{#1}}#2
}
-
-
\renewcommand*{\@maketitle}{%
- \global\@topnum=\z@
- \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
- \vspace*{-\dim_eval:n {
- \headheight
- -\c_ptxcd_largerule_dim -\c_ptxcd_rulesep_dim
- +\headsep
- +\ht\strutbox
- +\p@
- }}
- \par
- \nointerlineskip
- \begingroup
- \setlength{\fboxsep}{\z@}
- \bool_if:NT \g_ptxcd_colorback_bool {\colorbox{accentcolor}}{\parbox[t]{\linewidth}{
- \rule{0pt}{\bool_if:NTF \g_ptxcd_smalltitle_bool {.25} {.5}\c_ptxcd_logoheight_dim}
- \par\nointerlineskip
- \raisebox{-\height}{%
- \begin{minipage}[t]{\dimexpr\linewidth-\__ptxcd_logowidth:-1ex}
- \bool_if:NT \g_ptxcd_colorback_bool {\begin{addmargin}{3mm}}
+\global\@topnum=\z@
+\setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
+\vspace*{-\dim_eval:n {
+ \headheight
+ -\c_ptxcd_largerule_dim -\c_ptxcd_rulesep_dim
+ +\headsep
+ +\ht\strutbox
+ +\p@
+ }}
+\par
+\nointerlineskip
+\begingroup
+\setlength{\fboxsep}{\z@}
+\bool_if:NT \g_ptxcd_colorback_bool {\colorbox{accentcolor}}{\parbox[t]{\linewidth}{
+ \rule{0pt}{\bool_if:NTF \g_ptxcd_smalltitle_bool {.25} {.5}\c_ptxcd_logoheight_dim}
+ \par\nointerlineskip
+ \raisebox{-\height}{%
+ \begin{minipage}[t]{\dimexpr\linewidth-\__ptxcd_logowidth:-1ex}
+ \bool_if:NT \g_ptxcd_colorback_bool {\begin{addmargin}{3mm}}
\raggedright
\bool_if:NT \g_ptxcd_colorback_bool {\color{textonaccentcolor}}
\tl_if_empty:NF \@titlehead {\usekomafont{titlehead}{\@titlehead\par}}
\leavevmode\usekomafont{title}%
{\usekomafont{title}\bool_if:NTF \g_ptxcd_smalltitle_bool {\LARGE} {\huge} {\@title\par}}%
\vskip 1em
- \bool_if:NF \g_ptxcd_ex_compatibility_bool
- {
- {\ifx\@subtitle\@empty\else\usekomafont{subtitle}\@subtitle\par\fi}%
- \gdef\@subtitle{}
- \vskip .5em
- }
- {
+ \bool_if:NF \g__ptxcd_compatibility_bool
+ {
+ {\ifx\@subtitle\@empty\else\usekomafont{subtitle}\@subtitle\par\fi}%
+ \gdef\@subtitle{}
+ \vskip .5em
+ }
+ {
\xdef\@author {\@author}
\ifx\@author\@empty\else\usekomafont{author}\@author\par\fi
- }
+ }
\vskip .5em
- \bool_if:NTF \g_ptxcd_colorback_bool {\end{addmargin}} {\par}
- \end{minipage}}
- \tl_if_empty:NF \g_ptxcd_logofile_tl {
- \hfill\raisebox{\dim_eval:n {
- \bool_if:NTF \g_ptxcd_colorback_bool
- {-\height}
- {-.9\c_ptxcd_logoheight_dim}
- }}
- [0pt]
- [\dim_eval:n {
- \bool_if:NTF \g_ptxcd_smalltitle_bool
- {\bool_if:NTF \g_ptxcd_colorback_bool {1.15}{1}}
- {\bool_if:NTF \g_ptxcd_colorback_bool {1.5}{1.3}
- }\c_ptxcd_logoheight_dim}]
- {\makebox[\__ptxcd_logowidth:][l]{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}}
- }
- \par\medskip
- }}
- \par
- \nointerlineskip
- \rule{\linewidth}{\g_ptxcd_titlerule_dim}
- % subtitle fields if not compat
- \exp_args:Nf \tl_if_empty:nF {\g_ptxcd_ex_sheetnum_tl\@date\g_ptxcd_ex_term_tl\use:c {@subsubtitle}\@subtitle}{
- \par\nointerlineskip
- \bool_if:NT \g_ptxcd_colorback_bool {\colorbox{accentcolor}}{
- \parbox{\linewidth}{
- \begin{minipage}{\linewidth}
- \bool_if:NT \g_ptxcd_colorback_bool {
- \color{textonaccentcolor}
- \begin{addmargin}{3mm}
- }
+ \bool_if:NTF \g_ptxcd_colorback_bool {\end{addmargin}} {\par}
+ \end{minipage}}
+ \tl_if_empty:NF \g_ptxcd_logofile_tl {
+ \hfill\raisebox{\dim_eval:n {
+ \bool_if:NTF \g_ptxcd_colorback_bool
+ {-\height}
+ {-.9\c_ptxcd_logoheight_dim}
+ }}
+ [0pt]
+ [\dim_eval:n {
+ \bool_if:NTF \g_ptxcd_smalltitle_bool
+ {\bool_if:NTF \g_ptxcd_colorback_bool {1.15}{1}}
+ {\bool_if:NTF \g_ptxcd_colorback_bool {1.5}{1.3}
+ }\c_ptxcd_logoheight_dim}]
+ {\makebox[\__ptxcd_logowidth:][l]{\__ptxcd_insert_logo:}}
+ }
+ \par\medskip
+ }}
+\par
+\nointerlineskip
+\rule{\linewidth}{\g_ptxcd_titlerule_dim}
+\exp_args:Nf \tl_if_empty:nF {\g_ptxcd_ex_sheetnum_tl\@date\g_ptxcd_ex_term_tl\use:c {@subsubtitle}\@subtitle}{
+ \par\nointerlineskip
+ \bool_if:NT \g_ptxcd_colorback_bool {\colorbox{accentcolor}}{
+ \parbox{\linewidth}{
+ \begin{minipage}{\linewidth}
+ \bool_if:NT \g_ptxcd_colorback_bool {
+ \color{textonaccentcolor}
+ \begin{addmargin}{3mm}
+ }
\null\par
\def\ptxcd_nextsep{}
\clist_map_inline:nn {@subtitle, @subsubtitle, g_ptxcd_ex_term_tl, @date} {
\tl_if_empty:cF {##1} {\ptxcd_nextsep\use:c {##1}\def\ptxcd_nextsep{\\}}
}
\tl_if_empty:NF \g_ptxcd_ex_sheetnum_tl {\ptxcd_nextsep\sheetname\sheetsep\g_ptxcd_ex_sheetnum_tl}
- \bool_if:NT \g_ptxcd_colorback_bool {\end{addmargin}}
- \end{minipage}
- \vspace*{\dp\strutbox}
- }}\par\nointerlineskip
- \rule{\linewidth}{\g_ptxcd_titlerule_dim}
- }
+ \bool_if:NT \g_ptxcd_colorback_bool {\end{addmargin}}
+ \end{minipage}
+ \vspace*{\dp\strutbox}
+ }}\par\nointerlineskip
+ \rule{\linewidth}{\g_ptxcd_titlerule_dim}
+}
+\par
+\bool_if:NT \g_ptxcd_headontitle_bool {
+ \if@twoside
+ \box_use:N \g__ptxcd_headline_odd_box
+ \else
+ \box_use:N \g__ptxcd_headline_oneside_box
+ \fi
\par
- \bool_if:NT \g_ptxcd_headontitle_bool {
- \if@twoside
- \box_use:N \g_ptxcd_ex_headline_odd_box
- \else
- \box_use:N \g_ptxcd_ex_headline_oneside_box
- \fi
- \par
- \rule{\linewidth}{\g_ptxcd_titlerule_dim}
- \par
- }
- \endgroup
- \vskip 2em
- \ConfigureHeadline{}
+ \rule{\linewidth}{\g_ptxcd_titlerule_dim}
+ \par
+}
+\endgroup
+\vskip 2em
+\ConfigureHeadline{}
}%
-
\setkomafont{subtitle}{\bfseries}
\setkomafont{author}{}
\setkomafont{date}{}
\newkomafont{sheetnumber}{\usekomafont{date}}
-
\newkomafont{term}{\usekomafont{date}}
-
\date{}
\tl_new:N \g_ptxcd_ex_sheetnum_tl
\newcommand*{\sheetnumber}[1]{\tl_gset:Nn \g_ptxcd_ex_sheetnum_tl {#1}}
@@ -722,181 +668,187 @@
\tl_new:N \g_ptxcd_ex_term_tl
\newcommand*{\term}[1]{\tl_gset:Nn \g_ptxcd_ex_term_tl {#1}}
\term{}
-
-%Logos
\RequirePackage{graphicx}
-
-%%hyperref
-\PassOptionsToPackage{pdfusetitle}{hyperref}
\RequirePackage{hyperref}
\hypersetup{hidelinks, unicode}
-
\providecaptionname{ngerman, german}{\sheetname}{Übungsblatt}
\providecaptionname{english, american, british}{\sheetname}{Sheet}
\newcommand*{\sheetsep}{~}
-
\providecaptionname{ngerman, german}{\taskname}{Aufgabe}
\providecaptionname{english, american, british}{\taskname}{Task}
\newcommand*{\tasksep}{~}%TODO
-
\providecaptionname{ngerman, german}{\solutionname}{Lösungsvorschlag}
\providecaptionname{english, american, british}{\solutionname}{Solution}
\newcommand*{\solutionsep}{:~}
-
\providecaptionname{ngerman, german}{\StudentNamename}{Nachname,~Vorname}
\providecaptionname{english, american, british}{\StudentNamename}{Last Name,~ First Name}
\newcommand*{\StudentNamesep}{:~}
-
\providecommand{\StudentIDname}{Matrikelnummer}
\providecaptionname{ngerman, german}{\StudentIDname}{Matrikelnummer}
\providecaptionname{english, american, british}{\StudentIDname}{Enrollment ID}
\newcommand*{\StudentIDsep}{:~}
-
\providecommand{\creditformat}[1]{\space(#1)}
\providecommand{\creditformatsum}[1]{\creditformat{#1}}
\newcommand*{\pointformat}[1]{
- \fp_compare:nF {#1 = 0} {
- \bool_if:NTF \l__ptxcd_points_auto_bool
- \creditformatsum
- \creditformat
- {
- \fp_to_decimal:n {#1}\space
- \fp_compare:nTF {#1=1}
- \PointName
- \PointsName
- }
- }
+ \fp_compare:nF {#1 = 0} {
+ \bool_if:NTF \l__ptxcd_points_auto_bool
+ \creditformatsum
+ \creditformat
+ {
+ \fp_to_decimal:n {#1}\space
+ \fp_compare:nTF {#1=1}
+ \PointName
+ \PointsName
+ }
+ }
}
\providecaptionname{ngerman, german}{\PointName}{Punkt}
\providecaptionname{english, american, british}{\PointName}{Point}
\providecommand{\PointsName}{Punkte}
\providecaptionname{ngerman, german}{\PointsName}{Punkte}
\providecaptionname{english, american, british}{\PointsName}{Points}
-
-%Has to be initialized after captionnames have been defined
- \AtBeginDocument{
+\AtBeginDocument{
\ptxcd_update_headline_boxes:
- \ptxcd_ex_adjust_headheight:
+ \__ptxcd_adjust_headheight:
\global\let\ConfigureHeadline\ptxcd_ConfigureHeadline:n
}
-
-%task environment
\DeclareSectionCommand[%
- style=section,%
- level=2,%
- indent=\z@,%
- beforeskip=\cs_if_exist_use:NF \scr@subsection@beforeskip {-3.25ex\@plus -1ex \@minus -.2ex},%
- afterskip=\cs_if_exist_use:NF \scr@subsection@afterskip {1.5ex \@plus .2ex},%
- tocstyle=section,%
- tocindent=\cs_if_exist_use:NF \scr@tso@subsection@indent {1.5em},%
- tocnumwidth=\cs_if_exist_use:NF \scr@tso@subsection@numwidth {2.3em},%
+ style=section,%
+ level=2,%
+ indent=\z@,%
+ beforeskip=\cs_if_exist_use:NF \scr@subsection@beforeskip {-3.25ex\@plus -1ex \@minus -.2ex},%
+ afterskip=\cs_if_exist_use:NF \scr@subsection@afterskip {1.5ex \@plus .2ex},%
+ tocstyle=section,%
+ tocindent=\cs_if_exist_use:NF \scr@tso@subsection@indent {1.5em},%
+ tocnumwidth=\cs_if_exist_use:NF \scr@tso@subsection@numwidth {2.3em},%
]{task}
-
\renewcommand*{\thetask}{
- \g_ptxcd_ex_sheetnum_tl\tl_if_empty:NF \g_ptxcd_ex_sheetnum_tl{.}
- \arabic{task}
+ \g_ptxcd_ex_sheetnum_tl\tl_if_empty:NF \g_ptxcd_ex_sheetnum_tl{.}
+ \arabic{task}
}
-\renewcommand*{\taskformat}{\taskname\tasksep\thetask{}}
-
+\newcommand*{\tasklabel}{\thetask}
+\renewcommand*{\taskformat}{\taskname\tasksep\tasklabel{}}
\let\@task\task
\cs_undefine:N \task
-
\NewDocumentEnvironment{task}{om}{
- \IfNoValueF{#1}{\keys_set:nn {ptxcd/task}{#1}}
- \@task{#2}
- \bool_if:NF \l__ptxcd_points_auto_bool {
- \cs_if_exist_use:NF \prop_gput:Nxx
- {\exp_args:NNx \prop_gput:Nnx}
- \g__ptxcd_points_collector_prop
- {\thetask} {\fp_to_decimal:N \l_ptxcd_ex_task_points_fp}
- }
+ \IfNoValueF{#1}{\keys_set:nn {ptxcd/task}{#1}}
+ \@task{#2}
+ \edef\@currenttasklabel{\tasklabel}
}{
- \bool_if:NT \l__ptxcd_points_auto_bool {
- \cs_if_exist_use:NF \prop_gput:Nxx
- {\exp_args:NNx \prop_gput:Nnx}
- \g__ptxcd_points_collector_prop
- {\thetask} {\fp_to_decimal:N \g__ptxcd_ex_collected_points_fp}
- \fp_gzero:N \g__ptxcd_ex_collected_points_fp
- }
+ \__ptxcd_save_task_properties:nnnn {} {\thetask} {#2} {
+ \bool_if:NTF \l__ptxcd_points_auto_bool {
+ \fp_to_decimal:N \g__ptxcd_ex_collected_points_fp
+ }{
+ \fp_to_decimal:N \l__ptxcd_task_points_fp
+ }
+ }
+ \fp_gzero:N \g__ptxcd_ex_collected_points_fp
+}
+\cs_new:Nn \__ptxcd_save_task_properties:nnnn {
+ \iow_now:Ne \@auxout {
+ \exp_not:N \ptxcd@TaskProperties {#1} {#2} {
+ \tl_if_empty:cF {l__ptxcd_#1credit_tl} {credit=\tl_to_str:v {l_ptxcd_#1credit_tl},}
+ \tl_if_blank:nF {#3} {title=\tl_to_str:n {#3},}
+ } {#4}
+ }
+ \prop_gput:cee {g__ptxcd_#1points_collector_prop}
+ {#2} {#4}
+}
+\cs_generate_variant:Nn \__ptxcd_save_task_properties:nnnn {nnon}
+\iffalse
+\newcommand*{\addsubtasktocentry}[4]{
+ \show\subtaskentry
+ %% {Dateierweiterung }{Ebene }{Gliederungsnummer }{Eintrag }
+ %\IfArgIsEmpty {#3}{\addcontentsline {#1}{#2}{\protect \nonumberline #4}}{\addcontentsline {#1}{#2}{\protect \numberline {#3}#4}}
+ \tocbasic@addxcontentsline{#1}{#2}{#3}{#4}
+ \iow_now:Ne \@auxout {
+ \exp_not:N \ptxcd@TaskProperties {\the\c@task} {\the\c@subtask} {\tl_to_str:n {#2}} {
+ \bool_if:NTF \l__ptxcd_points_auto_bool {
+ \fp_to_decimal:N \l__ptxcd_task_points_fp
+ }{
+ \fp_to_decimal:N \g__ptxcd_ex_collected_points_fp
+ }
+ }
+ }
+}
+\fi
+
+\newcommand*\ptxcd@TaskProperties [4]{
+ \prop_gput:cnn {g__ptxcd_#1points_collector_prop}
+ {#2} {#4}
+ \clist_map_inline:nn {#3} {
+ \prop_gput_from_keyval:Nn \g__ptxcd_property_collector_prop {
+ #2-##1
+ }
+ }
+ \prop_gput:Nnn \g__ptxcd_property_collector_prop {#2-points} {#4}
}
-
\cs_set_eq:cN {task*} \task
\cs_set_eq:cN {endtask*} \endtask
-
-% subtasks
\DeclareSectionCommand[%
- style=section,%
- level=3,%
- indent=\z@,%
- beforeskip=\cs_if_exist_use:NF \scr@subsubsection@beforeskip {-3.25ex\@plus -1ex \@minus -.2ex},%
- afterskip=\cs_if_exist_use:NF \scr@subsubsection@afterskip {1.5ex \@plus .2ex},%
- tocstyle=subsection,%
- tocindent=\cs_if_exist_use:NF \scr@tso@subsubsection@indent {1.5em},%
- tocnumwidth=\cs_if_exist_use:NF \scr@tso@subsubsection@numwidth {2.3em},%
- counterwithin=task,%
+ style=section,%
+ level=3,%
+ indent=\z@,%
+ beforeskip=\cs_if_exist_use:NF \scr@subsubsection@beforeskip {-3.25ex\@plus -1ex \@minus -.2ex},%
+ afterskip=\cs_if_exist_use:NF \scr@subsubsection@afterskip {1.5ex \@plus .2ex},%
+ tocstyle=subsection,%
+ tocindent=\cs_if_exist_use:NF \scr@tso@subsubsection@indent {1.5em},%
+ tocnumwidth=\cs_if_exist_use:NF \scr@tso@subsubsection@numwidth {2.3em},%
+ counterwithin=task,%
]{subtask}
-
\bool_if:NT \g__ptxcd_runin_subtask_bool {
- \RedeclareSectionCommand[runin=true]{subtask}
+ \RedeclareSectionCommand[runin=true]{subtask}
}
-
\renewcommand*{\thesubtask}{\alph{subtask})}
-\renewcommand*{\subtaskformat}{\thetask{}\thesubtask\enskip}
+\newcommand*{\subtasklabel}{\thetask\thesubtask}
+\renewcommand*{\subtaskformat}{\subtasklabel\enskip}
\setkomafont{subtask}{\mdseries\normalsize}
-
\let\@subtask\subtask
\cs_undefine:N \subtask
-
\NewDocumentEnvironment{subtask}{o}{
- \begingroup
- \tl_if_in:nnT {#1} {=} {
- \keys_set:nn {ptxcd/subtask} {#1}
- }
- \bool_if:NTF \l_ptxcd_ex_subtask_fallback_bool {
- \@subtask{\IfNoValueF{#1}{#1}}
- }{
- \@subtask{\l_ptxcd_ex_title_tl}
- }
- \cs_if_exist_use:NF \prop_gput:Nxx
- {\exp_args:NNx \prop_gput:Nnx}
- \g__ptxcd_subtask_points_collector_prop
- {\thetask\thesubtask} {\fp_to_decimal:N \l_ptxcd_ex_subtask_points_fp }
- \bool_if:NT \g__ptxcd_runin_subtask_bool \strut
- \tl_gset_eq:NN \g_tmpa_tl \@currentlabel
- \endgroup
- \tl_set_eq:NN \@currentlabel \g_tmpa_tl
+ \begingroup
+ \tl_if_in:nnTF {#1} {=} {
+ \keys_set:nn {ptxcd/subtask} {#1}
+ } {
+ \keys_set:nn {ptxcd/subtask} {title={#1}}
+ }
+ \bool_if:NTF \l__ptxcd_subtask_fallback_bool {
+ \@subtask{\IfNoValueF{#1}{#1}}
+ }{
+ \@subtask{\l__ptxcd_title_tl}
+ }
+ \edef\@currenttasklabel{\subtasklabel}
+ \__ptxcd_save_task_properties:nnon {subtask_} {\@currenttasklabel}
+ {\l__ptxcd_title_tl} {\fp_to_decimal:N \l__ptxcd_subtask_points_fp}
+ \bool_if:NT \g__ptxcd_runin_subtask_bool \strut
+ \tl_gset_eq:NN \g_tmpa_tl \@currentlabel
+ \endgroup
+ \edef\@currentcounter{subtask}
+ \protected@edef\@currentlabel{\p@subtask\thesubtask}
}{}
-
\NewDocumentEnvironment{subtask*}{om}{
- \begingroup
- \IfNoValueF{#1}{\keys_set:nn {ptxcd/subtask}{#1}}
- \@subtask{#2}
- \tl_gset_eq:NN \g_tmpa_tl \@currentlabel
- \endgroup
- \tl_set_eq:NN \@currentlabel \g_tmpa_tl
+ \begingroup
+ \IfNoValueF{#1}{\keys_set:nn {ptxcd/subtask}{#1}}
+ \@subtask{#2}
+ \tl_gset_eq:NN \g_tmpa_tl \@currentlabel
+ \endgroup
+ \tl_set_eq:NN \@currentlabel \g_tmpa_tl
}{}
-
-%Solution mechanism
-
-\DeclareSectionCommand[%
- style=section,%
- level=3,%
- indent=\z@,%
- beforeskip=\cs_if_exist_use:NF \scr@subsubsection@beforeskip {-3.25ex\@plus -1ex \@minus -.2ex},%
- afterskip=\cs_if_exist_use:NF \scr@subsubsection@afterskip {1.5ex \@plus .2ex},%
- tocstyle=subsection,%
- tocindent=\cs_if_exist_use:NF \scr@tso@subsubsection@indent {1.5em},%
- tocnumwidth=\cs_if_exist_use:NF \scr@tso@subsubsection@numwidth {2.3em},%
-]{@solution}
-
-
-\setkomafont{@solution}{\normalfont}
-
-\cs_new:Nn \ptxcd_ex_solutionheader: {
- \@solution*{\solutionname\solutionsep}
- \if@newlist\global\@newlistfalse\fi
-}
-
+ \DeclareSectionCommand[%
+ style=section,%
+ level=3,%
+ indent=\z@,%
+ beforeskip=\cs_if_exist_use:NF \scr@subsubsection@beforeskip {-3.25ex\@plus -1ex \@minus -.2ex},%
+ afterskip=\cs_if_exist_use:NF \scr@subsubsection@afterskip {1.5ex \@plus .2ex},%
+ tocstyle=subsection,%
+ tocindent=\cs_if_exist_use:NF \scr@tso@subsubsection@indent {1.5em},%
+ tocnumwidth=\cs_if_exist_use:NF \scr@tso@subsubsection@numwidth {2.3em},%
+ ]{@solution}
+ \setkomafont{@solution}{\normalfont}
+ \cs_new:Nn \__ptxcd_solutionheader: {
+ \@solution*{\solutionname\solutionsep}
+ \if@newlist\global\@newlistfalse\fi
+ }
\box_new:N \g_ptxcd_NumberForm_box
\hbox_gset:Nn \g_ptxcd_NumberForm_box {
\rule{\fboxrule}{1ex}
@@ -904,22 +856,16 @@
\rule{\fboxrule}{1ex}
\,
}
-
\newcommand*\ptxcd_StudentID[1][7]{
\StudentIDname\StudentIDsep\prg_replicate:nn {#1} {\box_use:N \g_ptxcd_NumberForm_box}
}
\let\StudentID\ptxcd_StudentID
-
\newcommand*\ptxcd_StudentName{
\StudentNamename\StudentNamesep\hrulefill\qquad
}
\let\StudentName\ptxcd_StudentName
-
\let\ShortTitle\g_ptxcd_shorttitle_tl
-
-% Compatibility Features
-
-\bool_if:NT \g_ptxcd_ex_compatibility_bool {
+\bool_if:NT \g__ptxcd_compatibility_bool {
\cs_set_eq:NN \c@subsection \c@task
\cs_set_eq:NN \subsection \task
\cs_set_eq:NN \c@subsubsection \c@subtask
@@ -927,148 +873,184 @@
\cs_set_eq:NN \thetask \thesubsection
\cs_set_eq:NN \thesubtask \thesubsection
}
-
\file_if_exist_input:n {\g__ptxcd_config_prefix_tl\g_ptxcd_department_str.cfg}
-
\ptxcd_makeheadrule[color=identbarcolor, width=\textwidth]{ptxcd_headrule}
-
-% Point referencing
\cs_if_exist:NTF \AddtoDoHook {
\AddtoDoHook{heading/preinit/subtask}{
\bool_if:NT \g__ptxcd_points_bool {
- \fp_gadd:Nn \g__ptxcd_ex_collected_points_fp {\l_ptxcd_ex_subtask_points_fp}
+ \fp_gadd:Nn \g__ptxcd_ex_collected_points_fp {\l__ptxcd_subtask_points_fp}
}
}
-
\AddtoDoHook{heading/preinit/task}{
\fp_gzero:N \g__ptxcd_ex_collected_points_fp
}
} {
\msg_warning:nnnn {tudaexercise} {outdated-koma-script} {point~references} {3.27}
}
-
-
-
\msg_new:nnn {tudaexercise} {points-differ} {
- Value~of~points~changed~for~at~least~one~task.\\
- Please~rerun~LaTeX~to~get~correct~references~and~calculations.
+ Value~of~points~changed~for~at~least~one~task.\\
+ Please~rerun~LaTeX~to~get~correct~references~and~calculations.
}
-
\msg_new:nnn {tudaexercise} {empty-point-mapping} {
- I~could~not~find~references~for~points~in~the~aux~file.\\
- Please~rerun~LaTeX~to~get~correct~references~and~calculations.
+ I~could~not~find~references~for~points~in~the~aux~file.\\
+ Please~rerun~LaTeX~to~get~correct~references~and~calculations.
}
-
\msg_new:nnn {tudaexercise} {point-referencing-disabled} {
- You~try~to~use~#1.\\
- This~function~is~only~available~with~points=true~or~points=auto.\\
- Please~activate~referencing~to~use~it.
+ You~try~to~use~#1.\\
+ This~function~is~only~available~with~points=true~or~points=auto.\\
+ Please~activate~referencing~to~use~it.
}
-
\bool_if:NTF \g__ptxcd_points_bool {
- \BeforeClosingMainAux{
- \tl_clear:N \l_tmpa_tl
- \tl_clear:N \l_tmpb_tl
- \fp_zero:N \l_tmpa_fp
- \prop_map_inline:Nn \g__ptxcd_points_collector_prop {
- \tl_put_right:Nn \l_tmpa_tl {#1=#2,}
- \fp_add:Nn \l_tmpa_fp {#2}
- }
- \prop_map_inline:Nn \g__ptxcd_subtask_points_collector_prop {
- \tl_put_right:Nn \l_tmpa_tl {#1=#2,}
- }
- \prop_map_inline:Nn \g__ptxcd_loaded_points_prop {
- \tl_put_right:Nn \l_tmpb_tl {#1=#2,}
- }
- \tl_if_eq:NNF \l_tmpa_tl \l_tmpb_tl {
- \msg_warning:nn {tudaexercise} {points-differ}
- }
- \iow_now:Nx \@auxout{
- \exp_not:N \ptxcd@LoadPoints[\thetask][\fp_use:N \l_tmpa_fp]{\l_tmpa_tl}
- }
- }
-
- \cs_new:Nn \__ptxcd_getPoints:n {
- \prop_if_in:NnTF \g__ptxcd_loaded_points_prop {#1}
- {\prop_item:Nn \g__ptxcd_loaded_points_prop {#1}}
- {\nfss@text{\reset@font\bfseries??}}
- }
- \cs_generate_variant:Nn \__ptxcd_getPoints:n {x}
-
- \newcommand{\getPoints}[1]{\__ptxcd_getPoints:x {#1}}
-
- \newcommand{\refPoints}[1]{
- \edef\x{#1}
- \cs_if_exist:cTF {r@\x} {
- \str_if_in:cnTF {r@\x} {subtask} {
- \tl_set_eq:Nc \l_tmpa_tl {r@\x}
- \getPoints{\tl_item:Nn \l_tmpa_tl {2}\tl_item:Nn \l_tmpa_tl {1}}
- } {
- \getPoints{\tl_head:v {r@\x}}
- }
- }{
- \nfss@text{\reset@font\bfseries??}
- }
- }
+ \BeforeClosingMainAux{
+ \tl_clear:N \l_tmpa_tl
+ \tl_clear:N \l_tmpb_tl
+ \fp_zero:N \l_tmpa_fp
+ \prop_map_inline:Nn \g__ptxcd_points_collector_prop {
+ \tl_put_right:Nn \l_tmpa_tl {#1=#2,}
+ \fp_add:Nn \l_tmpa_fp {#2}
+ }
+ \prop_map_inline:Nn \g__ptxcd_subtask_points_collector_prop {
+ \tl_put_right:Nn \l_tmpa_tl {#1=#2,}
+ }
+ \prop_map_inline:Nn \g__ptxcd_loaded_points_prop {
+ \tl_put_right:Nn \l_tmpb_tl {#1=#2,}
+ }
+ \tl_if_eq:NNF \l_tmpa_tl \l_tmpb_tl {
+ \msg_warning:nn {tudaexercise} {points-differ}
+ }
+ \iow_now:Nx \@auxout{
+ \exp_not:N \ptxcd@LoadPoints[\the\c@task][\fp_use:N \l_tmpa_fp]{\l_tmpa_tl}
+ }
+ }
+ \cs_new:Nn \__ptxcd_getPoints:n {
+ \prop_if_in:NnTF \g__ptxcd_loaded_points_prop {#1}
+ {\prop_item:Nn \g__ptxcd_loaded_points_prop {#1}}
+ {\nfss@text{\reset@font\bfseries??}}
+ }
+ \cs_generate_variant:Nn \__ptxcd_getPoints:n {x}
+ \newcommand{\getPoints}[1]{\__ptxcd_getPoints:x {#1}}
+ \newcommand{\refPoints}[1]{
+ \edef\x{#1}
+ \cs_if_exist:cTF {r@\x} {
+ \str_if_in:cnTF {r@\x} {subtask} {
+ \tl_set_eq:Nc \l_tmpa_tl {r@\x}
+ \getPoints{\tl_item:Nn \l_tmpa_tl {2}\tl_item:Nn \l_tmpa_tl {1}}
+ } {
+ \getPoints{\tl_head:v {r@\x}}
+ }
+ }{
+ \nfss@text{\reset@font\bfseries??}
+ }
+ }
+ \newcommand{\getPointsTotal}{
+ \fp_use:N \g__ptxcd_points_total_fp
+ }
+\NewDocumentCommand{\getTaskProperty}{O{\@currenttasklabel}m}{
+ \exp_args:Ne \tl_show:n {#1-#2}
+ \prop_show:N \g__ptxcd_property_collector_prop
+ \prop_if_in:NnTF \g__ptxcd_property_collector_prop {#1-#2}
+ {\prop_item:Nn \g__ptxcd_property_collector_prop {#1-#2}}
+ {{\nfss@text{\reset@font\bfseries??}}}
+}
- \newcommand{\getPointsTotal}{
- \fp_use:N \g__ptxcd_points_total_fp
- }
+ \NewDocumentCommand{\mapPoints}{sO{1}m}{
+ \mapTasks[skip-zero-points=true,\IfBooleanF{#1}{subtask=false},start-task=#2]{#3}{#3}
+ }
+\cs_new:Nn \__ptxcd_point_mapping_aux:nnn {
+ \bool_set_true:c {l__ptxcd_#1_bool}
+ \cs_set:ce {__ptxcd_cached_#1_counter:} {\int_eval:n {\value{#1}}}
+ \setcounter{#1}{#2}
+\bool_while_do:cn {l__ptxcd_#1_bool} {
+ \prop_get:NeNTF \g__ptxcd_loaded_points_prop {\use:c {#1label}} \l_tmpa_tl {
+ \bool_if:NT \l__ptxcd_skip_zero_points_bool
+ {\fp_compare:nF {\l_tmpa_tl = 0}}
+ \use:n
+ {
+ \tl_build_put_right:Ne \l_ptxcd_tmp_tl {
+ \exp_not:c {__ptxcd_map_points_#1:nn} {\use:c {#1label}} {\l_tmpa_tl}
+ }
+ }
+ #3
+ \stepcounter{#1}
+ } {\bool_set_false:c {l__ptxcd_#1_bool}}
+ }
+ \setcounter{#1}{\use:c {__ptxcd_cached_#1_counter:}}
+}
+\keys_define:nn {ptxcd/task-mapping} {
+ task .bool_set:N = \l__ptxcd_task_bool,
+ task .initial:n = false,
+ subtask .bool_set:N = \l__ptxcd_subtask_bool,
+ subtask .initial:n = false,
+ skip-zero-points .bool_set:N = \l__ptxcd_skip_zero_points_bool,
+ skip-zero-points .initial:n = false,
+ start-task .int_set:N = \l__ptxcd_start_task_int,
+ start-task .initial:n = 1,
+}
- \NewDocumentCommand{\mapPoints}{sO{1}m}{
- \cs_gset_nopar:Nn \__ptxcd_map_points_helper:nn {#3}
- \prop_if_empty:NTF \g__ptxcd_loaded_points_prop {
- \msg_warning:nn {tudaexercise} {empty-point-mapping}
- \__ptxcd_map_points_helper:nn {?task?} {?points?}
- }{
- \int_gset:Nn \g_ptxcd_tmp_int {\value{task}}
- \setcounter{task}{#2}
- \tl_gclear:N \g_ptxcd_tmp_tl
- \bool_gset_true:N \g_tmpa_bool
- \bool_while_do:Nn \g_tmpa_bool
- {
- \exp_args:NNx \prop_get:NnNTF \g__ptxcd_loaded_points_prop {\thetask} \l_tmpa_tl
- {
- \fp_compare:nF {\l_tmpa_tl = 0}
- {
- \tl_gput_right:Nn \g_ptxcd_tmp_tl {\__ptxcd_map_points_helper:nn}
- \tl_gput_right:Nx \g_ptxcd_tmp_tl {{\thetask} {\l_tmpa_tl}}
- }
- }
- {\bool_gset_false:N \g_tmpa_bool}
- \stepcounter{task}
- }
- \setcounter{task}{\int_use:N \g_ptxcd_tmp_int}
- \g_ptxcd_tmp_tl
- }
+\NewDocumentCommand{\mapTasks}{O{}+m+m}{
+ \cs_gset:Ne \__ptxcd_restore_task_counters: {
+ \exp_not:N \setcounter{task}{\the\value{task}}
+ \exp_not:N \setcounter{subtask}{\the\value{subtask}}
+ }
+ \group_begin:
+ \keys_set:ne {ptxcd/task-mapping} {
+ task = true,
+ subtask=true,
+ #1
+ }
+ \cs_gset:Nn \__ptxcd_map_points_task:nn {#2}
+ \cs_gset:Nn \__ptxcd_map_points_subtask:nn {#3}
+
+ \prop_if_empty:NTF \g__ptxcd_loaded_points_prop {
+ \msg_warning:nn {tudaexercise} {empty-point-mapping}
+ \tl_set:Nn \l_ptxcd_tmp_tl {\__ptxcd_map_points_task:nn {?task?} {?points?}}
+ } {
+ \tl_build_begin:N \l_ptxcd_tmp_tl
+ \exp_args:Nne \use:n {
+ \bool_if:NTF \l__ptxcd_task_bool \use:n \use_ii:nn
+ {\__ptxcd_point_mapping_aux:nnn {task} {\int_use:N \l__ptxcd_start_task_int}}
+ }{
+ \bool_if:NT \l__ptxcd_subtask_bool {
+ \exp_not:n {
+ \bool_set_true:N \l__ptxcd_subtask_bool
+ \__ptxcd_point_mapping_aux:nnn {subtask} {1} {}
+ }
}
-
+ }
+ \tl_build_end:N \l_ptxcd_tmp_tl
+ }
+ \cs_gset_eq:NN \g_ptxcd_tmp_tl \l_ptxcd_tmp_tl
+ \exp_last_unbraced:No
+ \group_end:
+ \g_ptxcd_tmp_tl
+ \ifhmode\else\ifvoid\@arstrutbox\else\noalign\fi\fi
+ {\__ptxcd_restore_task_counters:}
+ }
} {
- \newcommand{\getPoints}[1]{
- \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\getPoints}
- }
- \newcommand{\refPoints}[1]{
- \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\refPoints}
- }
- \newcommand{\getPointsTotal}[1]{
- \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\getPointsTotal}
- }
-
- \NewDocumentCommand{\mapPoints}{som} {
- \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\mapPoints}
- }
+ \newcommand{\getPoints}[1]{
+ \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\getPoints}
+ }
+ \newcommand{\refPoints}[1]{
+ \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\refPoints}
+ }
+ \newcommand{\getPointsTotal}[1]{
+ \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\getPointsTotal}
+ }
+ \NewDocumentCommand{\mapPoints}{som} {
+ \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\mapPoints}
+ }
+ \NewDocumentCommand{\getTaskProperty}{om}{
+ \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\getTaskProperty}
+ }
}
-
-\cs_new:Nn \__ptxcd_map_points_helper:nn {#1-#2}
-
-
+\int_new:N \g__ptxcd_max_task_int
\NewDocumentCommand{\ptxcd@LoadPoints}{oO{0}m}{
- \prop_gset_from_keyval:Nn \g__ptxcd_loaded_points_prop {
- #3
- }
- \fp_gset:Nn \g__ptxcd_points_total_fp {#2}
+ \IfNoValueF{#1}{\int_gset:Nn \g__ptxcd_max_task_int {#1}}
+ \prop_gset_from_keyval:Nn \g__ptxcd_loaded_points_prop {
+ #3
+ }
+ \fp_gset:Nn \g__ptxcd_points_total_fp {#2}
}
-
-
\endinput
-%End of class tudaexercise.cls
+%%
+%% End of file `tudaexercise.cls'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudafonts.sty b/Master/texmf-dist/tex/latex/tuda-ci/tudafonts.sty
index 9fb3ad06005..194a9bbf10b 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudafonts.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudafonts.sty
@@ -1,10 +1,18 @@
-%% This is file `tudafonts.sty' version 3.41 (2024-07-02),
+%%
+%% This is file `tudafonts.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudafonts.dtx (with options: `package')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,106 +21,93 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\def\fileversion{3.41}
-\def\filedate{2024-07-02}
-\NeedsTeXFormat{LaTeX2e}
+%%
+\NeedsTeXFormat{LaTeX2e}[2022/06/01]
\ProvidesPackage{tudafonts}
- [\filedate\space\fileversion\space
- font loading for TUDa-CI, TU Darmstadt's Corporate Design]
-
+ [2025-01-26 v4.00
+ font setup for TUDa-CI, TU Darmstadt's Corporate Design]
\expandafter\newif\csname if@ptxcd@T1\endcsname
-
\DeclareOption{T1}{\csname @ptxcd@T1true\endcsname}
\ProcessOptions\relax
-
\RequirePackage{iftex}
\RequirePackage{anyfontsize}
-
\ifPDFTeX
- \csname @ptxcd@T1true\endcsname
- %Fallback for older versions
- \expandafter\ifx\csname DeclareUnicodeCharacter\endcsname\relax
- \RequirePackage[utf8]{inputenc}
- \fi
- \expandafter\ifx\csname texteuro\endcsname\relax
- \RequirePackage{textcomp}
- \fi
- \DeclareUnicodeCharacter{20AC}{\texteuro}
+ \csname @ptxcd@T1true\endcsname
+ %Fallback for older versions
+ \expandafter\ifx\csname DeclareUnicodeCharacter\endcsname\relax
+ \RequirePackage[utf8]{inputenc}
+ \fi
+ \expandafter\ifx\csname texteuro\endcsname\relax
+ \RequirePackage{textcomp}
+ \fi
+ \DeclareUnicodeCharacter{20AC}{\texteuro}
\fi
-
\csname if@ptxcd@T1\endcsname
- \ifLuaTeX
- \RequirePackage[utf8]{luainputenc}
- \fi
- \RequirePackage{XCharter}%activates T1
- \PassOptionsToPackage{type1}{roboto}
- \PassOptionsToPackage{type1}{roboto-mono}
- %Workaround for missing ligature replacements with roboto in T1
- \ifXeTeX
- \else
- \RequirePackage{microtype}
- \DisableLigatures{encoding = *, family=\sfdefault,shape = sc }
- \fi
+ \ifLuaTeX
+ \RequirePackage[utf8]{luainputenc}
+ \fi
+ \RequirePackage{XCharter}%activates T1
+ \PassOptionsToPackage{type1}{roboto}
+ \PassOptionsToPackage{type1}{roboto-mono}
+ % Workaround for missing ligature replacements with roboto in T1
+ \ifXeTeX
+ \else
+ \RequirePackage{microtype}
+ \DisableLigatures{encoding = *, family=\sfdefault,shape = sc }
+ \fi
\else
- \RequirePackage{fontspec}
- \setmainfont{XCharter}
+ \RequirePackage{fontspec}
+ \setmainfont{XCharter}
\fi
-
\RequirePackage{roboto}
-
\csname if@ptxcd@T1\endcsname
- \newcommand\robotoblackspaced{%
- \robotoblack
- \lsstyle
- }
+ \newcommand\robotoblackspaced{%
+ \robotoblack
+ \lsstyle
+ }
\else
- \newfontfamily\robotoblackspaced
- [ Numbers = {\roboto@figurealign,\roboto@figurestyle},
- UprightFont = *-Black ,
- ItalicFont = *-BlackItalic,
- LetterSpace=26,
- WordSpace=2.2
- ]
- {Roboto}
+ \newfontfamily\robotoblackspaced
+ [ Numbers = {\roboto@figurealign,\roboto@figurestyle},
+ UprightFont = *-Black ,
+ ItalicFont = *-BlackItalic,
+ LetterSpace=26,
+ WordSpace=2.2
+ ]
+ {Roboto}
\fi
-
\IfFileExists{roboto-mono.sty}{
- \RequirePackage{roboto-mono}
+ \RequirePackage{roboto-mono}
}{
- \PackageWarningNoLine{tudafonts}{
- The font package roboto-mono.sty could not be found. Probably your TeX-distribution is outdated.\MessageBreak
- For correct font setup either install it manually or update you distribution}
+ \PackageWarningNoLine{tudafonts}{%
+ The font package roboto-mono.sty could not be found.
+ Probably your TeX-distribution is outdated.\MessageBreak
+ For correct font setup either install it manually or update you distribution}
}
-
\def\ptxcd@sffamily@lining{\robototlf}
-
\let\accentfont\robotoslab
\DeclareTextFontCommand{\textaccent}{\accentfont}
-
-%adjust LaTeX kerning to font
\DeclareRobustCommand{\LaTeX}{%
-{L\setbox\z@\hbox{\check@mathfonts \fontsize\sf@size\z@
- \math@fontsfalse\selectfont A}\kern-.57\wd\z@
- \sbox\tw@ T\vbox to \ht\tw@{\copy\z@ \vss}\kern-.2\wd\z@}%
-{%
- \ifdim\fontdimen1\font=\z@ \else \count\z@=\fontdimen5\font
- \multiply\count\z@ by 64\relax\divide\count\z@ by\p@
- \count\tw@=\fontdimen1\font \multiply\count\tw@ by\count\z@
- \divide\count\tw@ by 64\relax\divide\count\tw@ by\tw@
- \kern-\the\count\tw@ sp\relax\fi}%
-\TeX}
-
-%%-----------------------------------------------------
+ {L\setbox\z@\hbox{\check@mathfonts \fontsize\sf@size\z@
+ \math@fontsfalse\selectfont A}\kern-.57\wd\z@
+ \sbox\tw@ T\vbox to \ht\tw@{\copy\z@ \vss}\kern-.2\wd\z@}%
+ {%
+ \ifdim\fontdimen1\font=\z@ \else \count\z@=\fontdimen5\font
+ \multiply\count\z@ by 64\relax\divide\count\z@ by\p@
+ \count\tw@=\fontdimen1\font \multiply\count\tw@ by\count\z@
+ \divide\count\tw@ by 64\relax\divide\count\tw@ by\tw@
+ \kern-\the\count\tw@ sp\relax\fi}%
+ \TeX}
\endinput
+%%
+%% End of file `tudafonts.sty'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudaleaflet.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudaleaflet.cls
index 52b86eb3321..962062ead3f 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudaleaflet.cls
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudaleaflet.cls
@@ -1,10 +1,20 @@
-%% This is file `tudaleaflet.cls' version 3.41 (2024-07-02),
+%%
+%% This is file `tudaleaflet.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudaleaflet.dtx (with options: `class,initialization')
+%% tuda-ci.dtx (with options: `options,leaflet,print')
+%% tudaleaflet.dtx (with options: `class,body')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,302 +23,311 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\def\fileversion{3.41}
-\def\filedate{2024-07-02}
-\NeedsTeXFormat{LaTeX2e}
-
-\ProvidesExplPackage{tudaleaflet}{\filedate}{\fileversion}{Leaflets using the Corporate Design of TU Darmstadt}
-
+%%
+\NeedsTeXFormat{LaTeX2e}[2020/10/01]
+\ProvidesExplPackage{tudaleaflet}{2025-01-26}{4.00}{Leaflets using the Corporate Design of TU Darmstadt}
\str_const:Nn \c__ptxcd_base_str {leaflet}
-
\tl_new:N \g_ptxcd_sponsor_pos_tl
\keys_define:nn {ptxcd/leaflet} {
- logofile .tl_gset:N = \g_ptxcd_logofile_tl,
- logofile .initial:n = tuda_logo,
- color .meta:n = {accentcolor=#1},
- accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}},
- textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}},
- identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}},
- colorback .bool_gset:N = \g_ptxcd_colorback_bool,
- colorback .initial:n = true,
- colorback .default:n = true,
- colorbacktitle .bool_gset:N = \g_ptxcd_colorbacktitle_bool,
- colorbacktitle .initial:n = false,
- colorbacktitle .default:n = true,
- colorbacksubtitle .bool_set:N = \g_ptxcd_colorbacksubtitle_bool,
- colorbacksubtitle .initial:n = false,
- colorbacksubtitle .default:n = true,
- sponsor .choices:nn = {title,lastfoot,manual}{\tl_gset_eq:NN \g_ptxcd_sponsor_pos_tl \l_keys_choice_tl},
- sponsor .initial:n = title,
- department .choice:,
- department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
- department / mecheng .code:n = {
- \str_gset:Nn \g_ptxcd_department_str {mecheng}
- \keys_set:nn {ptxcd/leaflet} {colorback=false, departmentlogofile=tuda_maschinenbau_logo}
- },
- department .initial:n = default,
- department / unknown .code:n = {
- \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
- },
- departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl,
- departmentconfigprefix .initial:n = tuda,
- mecheng .meta:n = {department=mecheng},
- departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl,
- departmentlogofile .initial:n =,
+ sponsor .choices:nn = {title,lastfoot,manual}{\tl_gset_eq:NN \g_ptxcd_sponsor_pos_tl \l_keys_choice_tl},
+ sponsor .initial:n = title,
+ logofile .tl_gset:N = \g_ptxcd_logofile_tl,
+ logofile .initial:n = tuda_logo,
+ accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool,
+ accept-missing-logos .initial:n = false,
+ accept-missing-logos .usage:n = load,
+ accept-missing-logos .default:n = true,
+ department .choice:,
+ department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
+ department / mecheng .code:n = {
+ \str_gset:Nn \g_ptxcd_department_str {mecheng}
+ \exp_args:Ne \keys_set:ne {
+
+ ptxcd / \c__ptxcd_base_str
+ }{
+ colorback=false,
+ departmentlogofile=tuda_maschinenbau_logo,
+ }
+ },
+
+ department .initial:n = default,
+ department / unknown .code:n = {
+ \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
+ },
+ departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl,
+ departmentconfigprefix .initial:n = tuda,
+ departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl,
+ departmentlogofile .initial:n =,
+ mecheng .meta:n = {department=mecheng},
+%% color options
+%% color options
+ color .meta:n = {accentcolor=#1},
+ accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}},
+ textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}},
+ identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}},
+ colorback .bool_gset:N = \g_ptxcd_colorback_bool,
+ colorback .default:n = true,
+ colorback .initial:n = true,
+ colorbacktitle .bool_gset:N = \g_ptxcd_colorbacktitle_bool,
+ colorbacktitle .initial:n = false,
+ colorbacktitle .default:n = true,
+ colorbacksubtitle .bool_set:N = \g_ptxcd_colorbacksubtitle_bool,
+ colorbacksubtitle .initial:n = false,
+ colorbacksubtitle .default:n = true,
+ colorback / title .code:n =
+ \bool_gset_true:N \g_ptxcd_colorbacktitle_bool
+ \bool_gset_true:N \g_ptxcd_colorback_bool
+ \bool_gset_false:N \g_ptxcd_colorbacksubtitle_bool,
+ colorback / body .code:n =
+ \bool_gset_false:N \g_ptxcd_colorbacktitle_bool
+ \bool_gset_false:N \g_ptxcd_colorbacksubtitle_bool
+ \bool_gset_true:N \g_ptxcd_colorback_bool,
+ colorback / head .code:n =
+ \bool_gset_true:N \g_ptxcd_colorbacktitle_bool
+ \bool_gset_true:N \g_ptxcd_colorback_bool
+ \bool_gset_true:N \g_ptxcd_colorbacksubtitle_bool,
+}
+\cs_if_exist:NT \TUDaDefaultBuildOptions {
+ \exp_args:Ne \keys_set:ne { ptxcd /
+ \c__ptxcd_base_str
+ } {
+ \TUDaDefaultBuildOptions
+ }
+}
+\cs_new:Nn \__ptxcd_insert_logo: {
+ \bool_if:NTF \g_ptxcd_logo_workaround_bool {
+ \file_if_exist:nTF {\g_ptxcd_logofile_tl.pdf}
+ \use_ii:nn
+ \use_i:nn
+ } {
+ \use_ii:nn
+ }
+ {\rule{0pt}{\c_ptxcd_logoheight_dim}\makebox[2.5\c_ptxcd_logoheight_dim][c]{\rule[.1\c_ptxcd_logoheight_dim]{2.05\c_ptxcd_logoheight_dim}{.8\c_ptxcd_logoheight_dim}}}
+ {\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}
}
-
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{leaflet}}
\ProcessKeyOptions[ptxcd/leaflet]
\ProcessOptions\relax
-
\bool_if:NT \g_ptxcd_colorbacksubtitle_bool {
- \bool_if:NF \g_ptxcd_colorbacktitle_bool {
- \msg_new:nnnn {ptxcd/leaflet} {incompatible-options} {You~cannot~use~the~setting~#1~at~the~same~time~as~#2.} {See~TUDaLeaflet~documentation~for~further~information.}
- \msg_error:nn {ptxcd/leaflet} {incompatible-options} {colorbacksubtitle=true} {colorbacktitle=false}
- }
+ \bool_if:NF \g_ptxcd_colorbacktitle_bool {
+ \msg_new:nnnn {ptxcd/leaflet} {incompatible-options} {You~cannot~use~the~setting~#1~at~the~same~time~as~#2.} {See~TUDaLeaflet~documentation~for~further~information.}
+ \msg_error:nn {ptxcd/leaflet} {incompatible-options} {colorbacksubtitle=true} {colorbacktitle=false}
+ }
}
-
\LoadClass[notumble]{leaflet}
-
-%to workaround incompatibilities between leaflet and scrextend
\let\sectfont\relax
\RequirePackage{scrextend}
\RequirePackage{scrlayer}
\PassOptionsToPackage{cmyk}{tudacolors}
\RequirePackage[paper=leaflet]{tudarules}
-
-
\setlength{\headheight}{1cm}%to add headline
\setlength{\footheight}{2mm}
\setmargins{10mm}{\dimexpr10mm+\headheight\relax}{10mm}{10mm}%Hardcoded, according to the guideline
-
\DeclareNewLayer[
- head,
- mode=picture,
- contents=\putUL{\box_use:N \ptxcd_headrule_box}
+ head,
+ mode=picture,
+ contents=\putUL{\box_use:N \ptxcd_headrule_box}
]{TUDa.flyer.headline}
-
\DeclareNewLayer[
- foot,
- mode=picture,
- height=\z@,
- voffset=\paperheight-14mm,
- contents=\smash{\box_use:N \ptxcd_footrule_box}
+ foot,
+ mode=picture,
+ height=\z@,
+ voffset=\paperheight-14mm,
+ contents=\smash{\box_use:N \ptxcd_footrule_box}
]{TUDa.flyer.footline}
-
\DeclareNewPageStyleByLayers{TUDa.flyer}{
- TUDa.flyer.headline,
- TUDa.flyer.footline,
+ TUDa.flyer.headline,
+ TUDa.flyer.footline,
}
-
-% Title specific additions to pagestyle
-
\DeclareNewLayer[textarea,mode=picture,
-addheight=\headheight-\box_dp:N \ptxcd_headrule_box+\dp\strutbox,
-contents={
- \bool_if:NT \g_ptxcd_colorback_bool {\putLL{\color{identbarcolor}\rule{\layerwidth}{\layerheight}}}
- \tl_if_empty:NTF \g_ptxcd_titleimage_code_tl
- {\bool_if:NT \g_ptxcd_colorback_bool {\putLL{\color{identbarcolor}\rule{\layerwidth}{\layerheight}}}}
- {\putUL{\color{identbarcolor}\raisebox{-\height}{\parbox[t]{\textwidth}{
- \let\width\layerwidth
- \let\height\layerheight
- \g_ptxcd_titleimage_code_tl
- }}}}
- \put(\dim_to_decimal_in_unit:nn {\layerwidth-\__ptxcd_logowidth:
- } {\unitlength},
- \dim_to_decimal_in_unit:nn {\layerheight-\box_ht:N \g_ptxcd_title_info_box - .5\c_ptxcd_logoheight_dim} {\unitlength}){
- \rlap{\box_use:N \g_ptxcd_title_info_box}
- }
-}
+ addheight=\headheight-\box_dp:N \ptxcd_headrule_box+\dp\strutbox,
+ contents={
+ \bool_if:NT \g_ptxcd_colorback_bool {\putLL{\color{identbarcolor}\rule{\layerwidth}{\layerheight}}}
+ \tl_if_empty:NTF \g_ptxcd_titleimage_code_tl
+ {\bool_if:NT \g_ptxcd_colorback_bool {\putLL{\color{identbarcolor}\rule{\layerwidth}{\layerheight}}}}
+ {\putUL{\color{identbarcolor}\raisebox{-\height}{\parbox[t]{\textwidth}{
+ \let\width\layerwidth
+ \let\height\layerheight
+ \g_ptxcd_titleimage_code_tl
+ }}}}
+ \put(\dim_to_decimal_in_unit:nn {\layerwidth-\__ptxcd_logowidth:
+ } {\unitlength},
+ \dim_to_decimal_in_unit:nn {\layerheight-\box_ht:N \g_ptxcd_title_info_box - .5\c_ptxcd_logoheight_dim} {\unitlength}){
+ \rlap{\box_use:N \g_ptxcd_title_info_box}
+ }
+ }
]{title.TUDa.image}
-
\DeclareNewLayer[textarea,background,mode=picture,
- contents={
- \bool_if:NT \g_ptxcd_colorbacktitle_bool {
- \color{identbarcolor}\rule{\layerwidth}{\layerheight}
- }
- }
+ contents={
+ \bool_if:NT \g_ptxcd_colorbacktitle_bool {
+ \color{identbarcolor}\rule{\layerwidth}{\layerheight}
+ }
+ }
]{title.TUDa.background}
-
\DeclareNewPageStyleByLayers{title.TUDa}{
- title.TUDa.image,
- title.TUDa.background,
- TUDa.flyer.headline,
- TUDa.flyer.footline,
+ title.TUDa.image,
+ title.TUDa.background,
+ TUDa.flyer.headline,
+ TUDa.flyer.footline,
}
-
\cs_new:Nn \ptxcd_Setup_Title_box: {
- \hbox_gset:Nn \g_ptxcd_title_info_box
- {
- \parbox{\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}}{
- \seq_use:Nn \g_ptxcd_title_info_seq {\par\nointerlineskip\vspace{\dim_eval:n {\c_ptxcd_largerule_dim+\c_ptxcd_rulesep_dim}}}
- }
- }
+ \hbox_gset:Nn \g_ptxcd_title_info_box
+ {
+ \parbox{\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}}{
+ \seq_use:Nn \g_ptxcd_title_info_seq {\par\nointerlineskip\vspace{\dim_eval:n {\c_ptxcd_largerule_dim+\c_ptxcd_rulesep_dim}}}
+ }
+ }
}
-
\newcommand*\sectionlinesformat[1]{%
- \parbox{\linewidth}{
- \rule[\ptxcd_titlerule_sep:]{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip
- #1\strut\rule[-\dp\strutbox]{0pt}{\dp\strutbox}\par\nointerlineskip
- \skip_vertical:n {\ptxcd_titlerule_sep: -.5\dp\strutbox}
- \smash{\rule{\linewidth}{\g_ptxcd_titlerule_dim}}
- }
+ \parbox{\linewidth}{
+ \rule[\ptxcd_titlerule_sep:]{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip
+ #1\strut\rule[-\dp\strutbox]{0pt}{\dp\strutbox}\par\nointerlineskip
+ \skip_vertical:n {\ptxcd_titlerule_sep: -.5\dp\strutbox}
+ \smash{\rule{\linewidth}{\g_ptxcd_titlerule_dim}}
+ }
}
-
-% Titlepage
\newcommand*{\raggedtitle}{\raggedright}
\renewcommand*{\maketitle}{
- \def\and{,~ }
- \hbox_gset:Nn \g_ptxcd_sponsor_box {
- \edef\height{\noexpand\dimexpr\dim_eval:n {\__ptxcd_logosep: + .5\c_ptxcd_logoheight_dim}}
- \parbox[b]{\textwidth}{%
- \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip
- \vspace{.1\c_ptxcd_logoheight_dim}
- \seq_use:Nn \g_ptxcd_sponsors_seq {\hfill}\par
- \addvspace{.1\c_ptxcd_logoheight_dim}
- \ifx\@sponsors\@empty
- \else
- \@sponsors\par
- \fi
- \par\nointerlineskip\addvspace{\dim_eval:n {.1\c_ptxcd_logoheight_dim-\c_ptxcd_rulesep_dim}}
-% \rule{\linewidth}{\g_ptxcd_titlerule_dim}
- }
- }
- \begin{titlepage}
- \def\thefootnote{\fnsymbol{footnote}}
- \hbox_gset:Nn \g_ptxcd_title_box {
- \parbox[t]{\linewidth}{
- \begin{minipage}[b]{\linewidth}
- \bool_if:NT \g_ptxcd_colorbacktitle_bool {\color{textonaccentcolor}}
- \begin{addmargin}{3mm}
- \raggedtitle
- \Huge
- \usekomafont{disposition}
- \usekomafont{title}
- \leavevmode%
- \@title\strut\par
- \vskip0pt
- \end{addmargin}
- \end{minipage}%
- \par\nointerlineskip
- \bool_if:NTF \g_ptxcd_colorbacksubtitle_bool
- {\textcolor{white}{\rule{\linewidth}{\c_ptxcd_rulesep_dim}}}
- {\rule{\linewidth}{\g_ptxcd_titlerule_dim}}
- \par
- \vspace{\c_ptxcd_rulesep_dim}
- \begin{addmargin}{3mm}
- \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {\color{textonaccentcolor}}
- \raggedtitle
- \usekomafont{disposition}
- {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}%
- {%
- \usekomafont{author}
- \lineskip 0.75em
- \@author
- \par
- }%
- {\usekomafont{date}{\@date\par}}%
- \end{addmargin}\nointerlineskip
- \vspace{\c_ptxcd_rulesep_dim}
- \bool_if:NT \g_ptxcd_colorbacktitle_bool
- {
- \textcolor{white}{\rule{\linewidth}{\c_ptxcd_rulesep_dim}}\par\nointerlineskip
- }
- \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par
- }
- }
- \ptxcd_adjust_titlepage_style:
- \par
- \vspace*{\dimexpr.5\c_ptxcd_logoheight_dim-\topskip}
- \box_use:N \g_ptxcd_title_box
- \par
- \vfill\null
- \if@twoside
- \@tempswatrue
- \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax
- \else
- \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty
- \@tempswafalse
- \fi\fi
- \fi
- \fi
- \end{titlepage}
- \setcounter{footnote}{0}%
- \global\let\and\relax
+ \def\and{,~ }
+ \hbox_gset:Nn \g_ptxcd_sponsor_box {
+ \edef\height{\noexpand\dimexpr\dim_eval:n {\__ptxcd_logosep: + .5\c_ptxcd_logoheight_dim}}
+ \parbox[b]{\textwidth}{%
+ \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip
+ \vspace{.1\c_ptxcd_logoheight_dim}
+ \seq_use:Nn \g_ptxcd_sponsors_seq {\hfill}\par
+ \addvspace{.1\c_ptxcd_logoheight_dim}
+ \ifx\@sponsors\@empty
+ \else
+ \@sponsors\par
+ \fi
+ \par\nointerlineskip\addvspace{\dim_eval:n {.1\c_ptxcd_logoheight_dim-\c_ptxcd_rulesep_dim}}
+ }
+ }
+ \begin{titlepage}
+ \def\thefootnote{\fnsymbol{footnote}}
+ \hbox_gset:Nn \g_ptxcd_title_box {
+ \parbox[t]{\linewidth}{
+ \begin{minipage}[b]{\linewidth}
+ \bool_if:NT \g_ptxcd_colorbacktitle_bool {\color{textonaccentcolor}}
+ \begin{addmargin}{3mm}
+ \raggedtitle
+ \Huge
+ \usekomafont{disposition}
+ \usekomafont{title}
+ \leavevmode%
+ \@title\strut\par
+ \vskip0pt
+ \end{addmargin}
+ \end{minipage}%
+ \par\nointerlineskip
+ \bool_if:NTF \g_ptxcd_colorbacksubtitle_bool
+ {\textcolor{white}{\rule{\linewidth}{\c_ptxcd_rulesep_dim}}}
+ {\rule{\linewidth}{\g_ptxcd_titlerule_dim}}
+ \par
+ \vspace{\c_ptxcd_rulesep_dim}
+ \begin{addmargin}{3mm}
+ \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {\color{textonaccentcolor}}
+ \raggedtitle
+ \usekomafont{disposition}
+ {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}%
+ {%
+ \usekomafont{author}
+ \lineskip 0.75em
+ \@author
+ \par
+ }%
+ {\usekomafont{date}{\@date\par}}%
+ \end{addmargin}
+ \nointerlineskip
+ \vspace{\c_ptxcd_rulesep_dim}
+ \bool_if:NT \g_ptxcd_colorbacktitle_bool
+ {
+ \textcolor{white}{\rule{\linewidth}{\c_ptxcd_rulesep_dim}}\par\nointerlineskip
+ }
+ \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par
+ }
+ }
+ \ptxcd_adjust_titlepage_style:
+ \par
+ \vspace*{\dimexpr.5\c_ptxcd_logoheight_dim-\topskip}
+ \box_use:N \g_ptxcd_title_box
+ \par
+ \vfill\null
+ \if@twoside
+ \@tempswatrue
+ \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax
+ \else
+ \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty
+ \@tempswafalse
+ \fi\fi
+ \fi
+ \fi
+\end{titlepage}
+\setcounter{footnote}{0}%
+\global\let\and\relax
}
-
-
-\cs_set:Nn \ptxcd_adjust_titlepage_style: {
- \dim_set:Nn \l_tmpa_dim {1\c_ptxcd_logoheight_dim}%\fp_to_dim:n {2.8\baselineskip}}
- \dim_compare:nT {\box_ht:N \g_ptxcd_title_box < \l_tmpa_dim} {
- \skip_set:Nn \g_ptxcd_title_fill_skip {\dim_eval:n {\l_tmpa_dim - \box_ht:N \g_ptxcd_title_box}}
- }
-
- \dim_set:Nn \l_tmpa_dim {
- +\box_ht:N \g_ptxcd_title_box
- +.5\c_ptxcd_logoheight_dim
- +\box_dp:N \g_ptxcd_title_box
- +\g_ptxcd_title_fill_skip
- }
- \ModifyLayer[
- addvoffset=\l_tmpa_dim,
- addheight= -\l_tmpa_dim
- ]{title.TUDa.image}
- \DeclareNewLayer[clone=TUDa.flyer.footline,
- mode=picture,
- align=bl,
- height=\box_ht:N \g_ptxcd_sponsor_box + \box_dp:N \g_ptxcd_sponsor_box,
- addvoffset=-\dp\strutbox,
- contents=\raisebox{\depth}{\box_use:N \g_ptxcd_sponsor_box}
- ]
- {title.TUDa.sponsor}
- \exp_args:Nx \tl_if_eq:nnT {\g_ptxcd_sponsor_pos_tl} {title} {
- \AddLayersToPageStyle{title.TUDa}{title.TUDa.sponsor}
- \ModifyLayer[
- addheight=-\box_ht:N \g_ptxcd_sponsor_box -\box_dp:N \g_ptxcd_sponsor_box-\dp\strutbox
- ]{title.TUDa.image}
- }
- \ModifyLayer[
- addvoffset={-\dim_eval:n {\headheight -\box_ht:N \ptxcd_headrule_box-\box_dp:N \ptxcd_headrule_box }},
- height={
- \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {\box_dp:N \g_ptxcd_title_box}
- +\box_ht:N \g_ptxcd_title_box+\g_ptxcd_title_fill_skip+.5\c_ptxcd_logoheight_dim+
- \headheight -\box_ht:N \ptxcd_headrule_box-\box_dp:N \ptxcd_headrule_box
- }
- ]{title.TUDa.background}
-
- \AddLayersToPageStyle{title.TUDa}{title.TUDa.background}
- \thispagestyle{title.TUDa}
- \nointerlineskip
- \ptxcd_Setup_Title_box:
- \par
- \vspace*{\skip_use:N \g_ptxcd_title_fill_skip}
- \setlength{\fboxsep}{\z@}
+\cs_set:Nn \ptxcd_adjust_titlepage_style: {
+ \dim_set:Nn \l_tmpa_dim {1\c_ptxcd_logoheight_dim}%\fp_to_dim:n {2.8\baselineskip}}
+ \dim_compare:nT {\box_ht:N \g_ptxcd_title_box < \l_tmpa_dim} {
+ \skip_set:Nn \g_ptxcd_title_fill_skip {\dim_eval:n {\l_tmpa_dim - \box_ht:N \g_ptxcd_title_box}}
+ }
+ \dim_set:Nn \l_tmpa_dim {
+ +\box_ht:N \g_ptxcd_title_box
+ +.5\c_ptxcd_logoheight_dim
+ +\box_dp:N \g_ptxcd_title_box
+ +\g_ptxcd_title_fill_skip
+ }
+ \ModifyLayer[
+ addvoffset=\l_tmpa_dim,
+ addheight= -\l_tmpa_dim
+ ]{title.TUDa.image}
+ \DeclareNewLayer[clone=TUDa.flyer.footline,
+ mode=picture,
+ align=bl,
+ height=\box_ht:N \g_ptxcd_sponsor_box + \box_dp:N \g_ptxcd_sponsor_box,
+ addvoffset=-\dp\strutbox,
+ contents=\raisebox{\depth}{\box_use:N \g_ptxcd_sponsor_box}
+ ]
+ {title.TUDa.sponsor}
+ \exp_args:Nx \tl_if_eq:nnT {\g_ptxcd_sponsor_pos_tl} {title} {
+ \AddLayersToPageStyle{title.TUDa}{title.TUDa.sponsor}
+ \ModifyLayer[
+ addheight=-\box_ht:N \g_ptxcd_sponsor_box -\box_dp:N \g_ptxcd_sponsor_box-\dp\strutbox
+ ]{title.TUDa.image}
+ }
+ \ModifyLayer[
+ addvoffset={-\dim_eval:n {\headheight -\box_ht:N \ptxcd_headrule_box-\box_dp:N \ptxcd_headrule_box }},
+ height={
+ \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {\box_dp:N \g_ptxcd_title_box}
+ +\box_ht:N \g_ptxcd_title_box+\g_ptxcd_title_fill_skip+.5\c_ptxcd_logoheight_dim+
+ \headheight -\box_ht:N \ptxcd_headrule_box-\box_dp:N \ptxcd_headrule_box
+ }
+ ]{title.TUDa.background}
+ \AddLayersToPageStyle{title.TUDa}{title.TUDa.background}
+ \thispagestyle{title.TUDa}
+ \nointerlineskip
+ \ptxcd_Setup_Title_box:
+ \par
+ \vspace*{\skip_use:N \g_ptxcd_title_fill_skip}
+ \setlength{\fboxsep}{\z@}
}
-%
-
\pagestyle{TUDa.flyer}
-
\RequirePackage{tudafonts}
\renewcommand*{\familydefault}{\sfdefault}
-
-%Titlepage font setup
-%compatibility after disposition was removed from scrextend
\expandafter\ifx\csname scr@fnt@disposition\endcsname\relax
- \newkomafont{disposition}
+ \newkomafont{disposition}
\fi
\setkomafont{disposition}{\bfseries}
\setkomafont{title}{\Huge}
@@ -316,137 +335,115 @@ contents={
\setkomafont{date}{}
\setkomafont{author}{}
\newkomafont{institution}{}
-
-%Adjust section font setup to be komafont compatible
\newkomafont{section}{}
\newkomafont{subsection}{}
\newkomafont{subsubsection}{}
-
\renewcommand\section{\@startsection{section}{1}{\z@}%
- {-3.5ex \@plus -.75ex}%
- {1ex}%
- {\usekomafont{disposition}\usekomafont{section}\sectfont}}
+ {-3.5ex \@plus -.75ex}%
+ {1ex}%
+ {\usekomafont{disposition}\usekomafont{section}\sectfont}}
\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
- {-2.5ex plus -.5ex}%
- {1\p@}%
- {\usekomafont{disposition}\usekomafont{subsection}\sectfont}}
+ {-2.5ex plus -.5ex}%
+ {1\p@}%
+ {\usekomafont{disposition}\usekomafont{subsection}\sectfont}}
\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
- {-2.5ex plus -.5ex}%
- {-1em}%
- {\usekomafont{disposition}\usekomafont{subsubsection}\sectfont}}
-
+ {-2.5ex plus -.5ex}%
+ {-1em}%
+ {\usekomafont{disposition}\usekomafont{subsubsection}\sectfont}}
\clist_map_inline:nn {section, subsection, subsubsection} {
- \cs_set_eq:cc {ptxcd_save_#1} {#1}
- \exp_args:Nc \RenewDocumentCommand{#1}{sO{##3}m}{
- \IfBooleanTF{##1}{
- \use:c {ptxcd_save_#1}*{\sectionlinesformat{##3}}
- }{
- \use:c {ptxcd_save_#1}[##2]{\sectionlinesformat{##3}}
- }
- }
+ \cs_set_eq:cc {ptxcd_save_#1} {#1}
+ \exp_args:Nc \RenewDocumentCommand{#1}{sO{##3}m}{
+ \IfBooleanTF{##1}{
+ \use:c {ptxcd_save_#1}*{\sectionlinesformat{##3}}
+ }{
+ \use:c {ptxcd_save_#1}[##2]{\sectionlinesformat{##3}}
+ }
+ }
}
-
\cs_new:Nn \ptxcd_titlerule_sep: {\the\dp\strutbox}
-
\def\subtitle#1{\def\@subtitle{#1}}
\subtitle{}
-
\seq_new:N \g_ptxcd_sponsors_seq
\def\AddSponsor{\seq_gput_right:Nn \g_ptxcd_sponsors_seq}
-
\def\sponsors#1{\def\@sponsors{#1}}
\sponsors{}
-
\box_new:N \g_ptxcd_sponsor_box
-
\newcommand*{\footergraphics}[1]{
- \begingroup
- \let\height\g_ptxcd_footheight_dim
- \hbox_gset:Nn \g_ptxcd_footergraphics_box {#1}
- \endgroup
+ \begingroup
+ \let\height\g_ptxcd_footheight_dim
+ \hbox_gset:Nn \g_ptxcd_footergraphics_box {#1}
+ \endgroup
}
-
\tl_new:N \g_ptxcd_titleimage_code_tl
\tl_gset_eq:NN \g_ptxcd_titleimage_code_tl \c_empty_tl
\newcommand{\titleimage}[1]{\tl_gset:Nn \g_ptxcd_titleimage_code_tl {#1}}
-
\author{}%to remove warning if no author given
-
\box_new:N \g_ptxcd_title_box
\skip_new:N \g_ptxcd_title_fill_skip
-
\seq_new:N \g_ptxcd_title_info_seq
\box_new:N \g_ptxcd_title_info_box
-
\cs_new:Nn \ptxcd_make_title_info_box:n {
- \setlength{\fboxsep}{1.5mm}%
- \colorbox{InfoBox}{
- \makebox[\dim_eval:n {\__ptxcd_logowidth:-\fboxsep}][r]{
- \parbox{2\c_ptxcd_logoheight_dim}{
- \usekomafont{institution}
- \raggedright%
- #1
- }}}
+ \setlength{\fboxsep}{1.5mm}%
+ \colorbox{InfoBox}{
+ \makebox[\dim_eval:n {\__ptxcd_logowidth:-\fboxsep}][r]{
+ \parbox{2\c_ptxcd_logoheight_dim}{
+ \usekomafont{institution}
+ \raggedright%
+ #1
+ }}}
}
-
\cs_new:Nn \ptxcd_make_title_logo_box:n {
- \setlength{\fboxsep}{\z@}
- \parbox{\__ptxcd_logowidth:}{
- \colorbox{InfoBox}{
- \rlap{
- \makebox[\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}][r]{
- \colorbox{InfoBox}{#1\hspace{.3\c_ptxcd_logoheight_dim}}
- }
- }
- }
- }
+ \setlength{\fboxsep}{\z@}
+ \parbox{\__ptxcd_logowidth:}{
+ \colorbox{InfoBox}{
+ \rlap{
+ \makebox[\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}][r]{
+ \colorbox{InfoBox}{#1\hspace{.3\c_ptxcd_logoheight_dim}}
+ }
+ }
+ }
+ }
}
-
\newcommand{\addTitleBox}[1]{\seq_gput_right:Nn \g_ptxcd_title_info_seq {\ptxcd_make_title_info_box:n {#1}}}
-
\NewDocumentCommand{\addTitleBoxLogo}{sm}{
- \IfBooleanTF{#1}{
- \seq_gput_right:Nn \g_ptxcd_title_info_seq {
- \ptxcd_make_title_logo_box:n {#2}
- }
- }{
- \seq_gput_right:Nn \g_ptxcd_title_info_seq {
- \ptxcd_make_title_logo_box:n {
- \hbox_set:Nn \l_tmpa_box {
- \includegraphics[width=1.5\c_ptxcd_logoheight_dim]{#2}
- }
- \dim_set:Nn \l_tmpa_dim {2\c_ptxcd_logoheight_dim/3}
- \dim_compare:nTF {\box_ht:N \l_tmpa_box > \l_tmpa_dim}
- {\includegraphics[width=\l_tmpa_dim]{#2}}
- {\box_use:N \l_tmpa_box}
- }
- }
- }
+ \IfBooleanTF{#1}{
+ \seq_gput_right:Nn \g_ptxcd_title_info_seq {
+ \ptxcd_make_title_logo_box:n {#2}
+ }
+ }{
+ \seq_gput_right:Nn \g_ptxcd_title_info_seq {
+ \ptxcd_make_title_logo_box:n {
+ \hbox_set:Nn \l_tmpa_box {
+ \includegraphics[width=1.5\c_ptxcd_logoheight_dim]{#2}
+ }
+ \dim_set:Nn \l_tmpa_dim {2\c_ptxcd_logoheight_dim/3}
+ \dim_compare:nTF {\box_ht:N \l_tmpa_box > \l_tmpa_dim}
+ {\includegraphics[width=\l_tmpa_dim]{#2}}
+ {\box_use:N \l_tmpa_box}
+ }
+ }
+ }
}
-
-\addTitleBoxLogo*{\makebox[\linewidth][l]{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}}
+\addTitleBoxLogo*{\makebox[\linewidth][l]{\__ptxcd_insert_logo:}}
\date{}
-
\let\insertSponsors\relax
-
\str_case:Vn \g_ptxcd_sponsor_pos_tl {
- {lastfoot}{
- \AtEndDocument{
- \par\vspace*{\fill}
- \leavevmode\raisebox{\dimexpr\depth-\baselineskip}[0pt][0pt]{
- \box_use:N \g_ptxcd_sponsor_box
- }
- }
- }
- {manual} {
- \renewcommand*{\insertSponsors}{\par\vfill\leavevmode\box_use:N \g_ptxcd_sponsor_box\par\nobreak\nointerlineskip\rule{\linewidth}{\g_ptxcd_titlerule_dim}
- }
+ {lastfoot}{
+ \AtEndDocument{
+ \par\vspace*{\fill}
+ \leavevmode\raisebox{\dimexpr\depth-\baselineskip}[0pt][0pt]{
+ \box_use:N \g_ptxcd_sponsor_box
+ }
+ }
+ }
+ {manual} {
+ \renewcommand*{\insertSponsors}{\par\vfill\leavevmode\box_use:N \g_ptxcd_sponsor_box\par\nobreak\nointerlineskip\rule{\linewidth}{\g_ptxcd_titlerule_dim}
+ }
+ }
}
-}
-
\file_if_exist_input:n {\g__ptxcd_config_prefix_tl\g_ptxcd_department_str.cfg}
-
\ptxcd_makeheadrule[color=identbarcolor]{ptxcd_headrule}
\ptxcd_makefootrule{ptxcd_footrule}
-
\endinput
+%%
+%% End of file `tudaleaflet.cls'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudaletter.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudaletter.cls
index 9eb3a15953a..73f6a022df8 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudaletter.cls
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudaletter.cls
@@ -1,10 +1,23 @@
-%% This is file `tudaletter.cls' version 3.41 (2024-07-02),
+%%
+%% This is file `tudaletter.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudaletter.dtx (with options: `class,initialization')
+%% tuda-ci.dtx (with options: `options,letter,print,process-options,pdfa')
+%% tudaletter.dtx (with options: `class,packages')
+%% tuda-ci.dtx (with options: `pdfx')
+%% tudaletter.dtx (with options: `class,body')
+%% tuda-ci.dtx (with options: `xmpdata')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,201 +26,230 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\def\fileversion{3.41}
-\def\filedate{2024-07-02}
-\NeedsTeXFormat{LaTeX2e}
-
-\ProvidesExplClass{tudaletter}
- {\filedate}{\fileversion}{Letters for TUDa-CI, Corporate Design of TU Darmstadt}
-
+%%
+\NeedsTeXFormat{LaTeX2e}[2020/10/01]
+\ProvidesExplClass{tudaletter}{2025-01-26}{4.00}{Letters for TUDa-CI, Corporate Design of TU Darmstadt}
\str_const:Nn \c__ptxcd_base_str {letter}
\str_new:N \g_ptxcd_department_str
\bool_new:N \g__ptxcd_adjust_textwidth_bool
-
\keys_define:nn {ptxcd/letter} {
- logo .bool_gset:N = \g__ptxcd_letter_logo_bool,
- logo .default:n = true,
- logo .initial:n = true,
- premium .bool_gset:N = \g__ptxcd_letter_premium_bool,
- premium .default:n = true,
- accentcolor .code:n = \PassOptionsToPackage{accentcolor=#1}{tudacolors},
- firstpagenumber .bool_gset:N = \g__ptxcd_firstpagenumber_bool,
- firstpagenumber .initial:n = true,
- raggedright .bool_gset:N = \g__ptxcd_letter_raggedright_bool,
- pdfa .bool_gset:N = \g_ptxcd_pdfa_bool,
- pdfa .initial:n = true,
- pdfx .bool_gset:N = \g_ptxcd_pdfx_bool,
- pdfx .initial:n = true,
- logofile .tl_gset:N = \g_ptxcd_logofile_tl,
- logofile .initial:n = tuda_logo,
- department .choice:,
- department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
- department / mecheng .code:n = {
- \str_gset:Nn \g_ptxcd_department_str {mecheng}
- \keys_set:nn {ptxcd/letter}{departmentlogofile=tuda_maschinenbau_logo,headrule=false,logo=false,textwidth=narrow}
- \PassOptionsToPackage{identbar=Primary1,accent=Primary2}{tudacolors}
- },
- department .initial:n = default,
- department / unknown .code:n = {
- \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
- },
- departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl,
- departmentconfigprefix .initial:n = tuda,
- mecheng .meta:n = {department=mecheng},
- departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl,
- departmentlogofile .initial:n =,
- headrule .bool_gset:N = \g__ptxcd_letter_headrule_bool,
- headrule .initial:n = true,
- headrule .default:n = true,
- textwidth .choice:,
- textwidth / wide .code:n = \bool_gset_true:N \g__ptxcd_adjust_textwidth_bool,
- textwidth / narrow .code:n = \bool_gset_false:N \g__ptxcd_adjust_textwidth_bool,
- textwidth .initial:n = wide,
+ logo .bool_gset:N = \g__ptxcd_letter_logo_bool,
+ logo .default:n = true,
+ logo .initial:n = true,
+ premium .bool_gset:N = \g__ptxcd_letter_premium_bool,
+ premium .default:n = true,
+ firstpagenumber .bool_gset:N = \g__ptxcd_firstpagenumber_bool,
+ firstpagenumber .initial:n = true,
+ raggedright .bool_gset:N = \g__ptxcd_letter_raggedright_bool,
+ headrule .bool_gset:N = \g__ptxcd_letter_headrule_bool,
+ headrule .initial:n = true,
+ headrule .default:n = true,
+ textwidth .choice:,
+ textwidth / wide .code:n = \bool_gset_true:N \g__ptxcd_adjust_textwidth_bool,
+ textwidth / narrow .code:n = \bool_gset_false:N \g__ptxcd_adjust_textwidth_bool,
+ textwidth .initial:n = wide,
+ logofile .tl_gset:N = \g_ptxcd_logofile_tl,
+ logofile .initial:n = tuda_logo,
+ accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool,
+ accept-missing-logos .initial:n = false,
+ accept-missing-logos .usage:n = load,
+ accept-missing-logos .default:n = true,
+ department .choice:,
+ department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
+ department / mecheng .code:n = {
+ \str_gset:Nn \g_ptxcd_department_str {mecheng}
+ \exp_args:Ne \keys_set:ne {
+
+ ptxcd / \c__ptxcd_base_str
+ }{
+ departmentlogofile=tuda_maschinenbau_logo,
+ headrule=false,
+ logo=false,
+ textwidth=narrow,
+ }
+ \PassOptionsToPackage{identbar=Primary1,accent=Primary2}{tudacolors}
+ },
+
+ department .initial:n = default,
+ department / unknown .code:n = {
+ \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
+ },
+ departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl,
+ departmentconfigprefix .initial:n = tuda,
+ departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl,
+ departmentlogofile .initial:n =,
+ mecheng .meta:n = {department=mecheng},
+ pdfa .bool_gset:N = \g_ptxcd_pdfa_bool,
+ pdfa .initial:n =
+ true,
+ pdfx .bool_gset:N = \g_ptxcd_pdfx_bool,
+ pdfx .initial:n = true,
+%% color options
+%% color options
+ color .meta:n = {accentcolor=#1},
+ accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}},
+ textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}},
+ identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}},
+}
+\cs_if_exist:NT \TUDaDefaultBuildOptions {
+ \exp_args:Ne \keys_set:ne { ptxcd /
+ \c__ptxcd_base_str
+ } {
+ \TUDaDefaultBuildOptions
+ }
+}
+\cs_new:Nn \__ptxcd_insert_logo: {
+ \bool_if:NTF \g_ptxcd_logo_workaround_bool {
+ \file_if_exist:nTF {\g_ptxcd_logofile_tl.pdf}
+ \use_ii:nn
+ \use_i:nn
+ } {
+ \use_ii:nn
+ }
+ {\rule{0pt}{\c_ptxcd_logoheight_dim}\makebox[2.5\c_ptxcd_logoheight_dim][c]{\rule[.1\c_ptxcd_logoheight_dim]{2.05\c_ptxcd_logoheight_dim}{.8\c_ptxcd_logoheight_dim}}}
+ {\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}
}
-
-\ProcessKeyOptions[ptxcd/letter]
+\ProcessKeyOptions[ptxcd/\c__ptxcd_base_str]
\bool_if:NF \g_ptxcd_pdfa_bool {\bool_gset_false:N \g_ptxcd_pdfx_bool}
\bool_if:NT \g_ptxcd_pdfa_bool {
- \msg_new:nnn {tudapub} {colors-to-rgb} {
- You~did~not~add~a~color~profile.\\
- I~will~use~the~default~one~and~automatically~try~to~convert~internal~colors~to~RGB.\\
- This~is~required~to~be~able~to~create~PDF/A~compliance.
- }
-
- \cs_if_exist:NT \pdfmeta_standard_get:nN {
- \pdfmeta_standard_get:nN {outputintent_A} \l_tmpa_tl
- \quark_if_no_value:NF \l_tmpa_tl {
- \bool_gset_false:N \g_ptxcd_pdfx_bool
- \msg_new:nnn{tudapub} {prefer-lualatex} {
- I~detected~usage~of~l3pdfmeta~(\DocumentMetadata)~to~create~PDF/A.\\
- tudapub~will~not~load~pdfx~to~avoid~conflicts.\\
- To~disable this message use pdfx=false.
- }
- \msg_info:nn {tudapub} {prefer-lualatex}
- }
-
- \prop_if_in:NnF \g__pdfmeta_outputintents_prop {GTS_PDFA1} {
- \PassOptionsToPackage{RGB}{xcolor}
- \msg_info:nn {tudapub} {colors-to-rgb}
- }
- }
-}
-
-\bool_if:NT \g_ptxcd_pdfx_bool {
- \PassOptionsToPackage{RGB}{xcolor}
- \msg_info:nn {tudapub} {colors-to-rgb}
+ \msg_new:nnn {tudapub} {colors-to-rgb} {
+ You~did~not~add~a~color~profile.\\
+ I~will~use~the~default~one~and~automatically~try~to~convert~internal~colors~to~RGB.\\
+ This~is~required~to~be~able~to~create~PDF/A~compliance.
+ }
+
+ \cs_if_exist:NT \pdfmeta_standard_get:nN {
+ \pdfmeta_standard_get:nN {outputintent_A} \l_tmpa_tl
+ \quark_if_no_value:NF \l_tmpa_tl {
+ \bool_gset_false:N \g_ptxcd_pdfx_bool
+ \msg_new:nnn{tudapub} {prefer-lualatex} {
+ I~detected~usage~of~l3pdfmeta~(\DocumentMetadata)~to~create~PDF/A.\\
+ tudapub~will~not~load~pdfx~to~avoid~conflicts.\\
+ To~disable~this~message~use~pdfx=false.
+ }
+ \msg_info:nn {tudapub} {prefer-lualatex}
+ }
+ \prop_if_in:NnF \g__pdfmeta_outputintents_prop {GTS_PDFA1} {
+ \use_iii:nnn
+ }
+ }
+ \bool_if:NT \g_ptxcd_pdfx_bool {
+ \PassOptionsToPackage{RGB}{xcolor}
+ \msg_info:nn {tudapub} {colors-to-rgb}
+ }
}
\newcommand*{\@fontsizefilebase}{tudalettersize}
-
\PassOptionsToClass{fontsize=10pt,parskip=full-}{scrletter}
\PassOptionsToPackage{refline=nodate,addrfield=topaligned,firstfoot=false,pagenumber=botright}{scrletter}
\LoadClass{scrletter}
-
-% Load the TUDa-colorscheme
\RequirePackage{tudacolors}
\RequirePackage{tudafonts}
\RequirePackage{graphicx}
\RequirePackage{afterpage}
\RequirePackage{ragged2e}
-
-
-\bool_if:NTF \g__ptxcd_letter_premium_bool
-{ \cs_new:Nn \ptxcd_premiumcolor: {accentcolor}
- \cs_new:Nn \ptxcd_use_premiumcolor: {\color{accentcolor}}
- \cs_set:Nn \ptxcd_use_premiumcolor_text: {\color{textaccentcolor}}
+\bool_if:NTF \g__ptxcd_letter_premium_bool {
+ \cs_new:Nn \ptxcd_premiumcolor: {accentcolor}
+ \cs_new:Nn \ptxcd_use_premiumcolor: {\color{accentcolor}}
+ \cs_set:Nn \ptxcd_use_premiumcolor_text: {\color{textaccentcolor}}
}{
- \cs_new:Nn \ptxcd_premiumcolor: {black}
- \let\ptxcd_use_premiumcolor:\relax
- \let\ptxcd_use_premiumcolor_text:\relax
+ \cs_new:Nn \ptxcd_premiumcolor: {black}
+ \let\ptxcd_use_premiumcolor:\relax
+ \let\ptxcd_use_premiumcolor_text:\relax
}
-
-
-
-%%%%%Briefbogen
-%% Spacing:
\dim_const:Nn \c_ptxcd_HeadMargin_dim {12.5mm}
\dim_const:Nn \c_ptxcd_LeftMargin_dim {24.0mm}
\dim_const:Nn \c__ptxcd_firstpage_extraindent_dim {-\paperwidth+120mm +\c_ptxcd_LeftMargin_dim +\c_ptxcd_HeadMargin_dim}
\bool_if:NTF \g__ptxcd_adjust_textwidth_bool
- {
- \dim_const:Nn \c_ptxcd_RightMargin_dim {\c_ptxcd_HeadMargin_dim}
-
- }{
- \dim_const:Nn \c_ptxcd_RightMargin_dim {\c_ptxcd_HeadMargin_dim-\c__ptxcd_firstpage_extraindent_dim}
- }
+ {
+ \dim_const:Nn \c_ptxcd_RightMargin_dim {\c_ptxcd_HeadMargin_dim}
+ }{
+ \dim_const:Nn \c_ptxcd_RightMargin_dim {\c_ptxcd_HeadMargin_dim-\c__ptxcd_firstpage_extraindent_dim}
+ }
\dim_const:Nn \c_ptxcd_BottomMargin_dim {20mm}
\dim_const:Nn \c_ptxcd_Linewidth_dim {\paperwidth-\c_ptxcd_LeftMargin_dim-\c_ptxcd_RightMargin_dim}
-
\RequirePackage{geometry}
-
\geometry{
- twoside=false,
- left=\c_ptxcd_LeftMargin_dim,
- right=\c_ptxcd_RightMargin_dim,
- bottom=\c_ptxcd_BottomMargin_dim,
- footskip=7mm,
+ twoside=false,
+ left=\c_ptxcd_LeftMargin_dim,
+ right=\c_ptxcd_RightMargin_dim,
+ bottom=\c_ptxcd_BottomMargin_dim,
+ footskip=7mm,
}
-
\dim_const:Nn \c_ptxcd_textwidth_dim {\textwidth}
-
\bool_if:NTF \g__ptxcd_letter_logo_bool {
- \geometry{top=64mm}
+ \geometry{top=64mm}
} {
- \geometry{top=30mm}
+ \geometry{top=30mm}
}
+\PassOptionsToPackage{hidelinks, unicode}{hyperref}
+\bool_if:NTF \g_ptxcd_pdfx_bool {
+%% only apply the hack if pdfx is older than the working version
+ \PassOptionsToPackage{a-2b}{pdfx}
+%% Workaround posted by David Carlisle on tex.stackexchange
+%% Thanks to Ulrike Fischer for mentioning it in #472
+ \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel
+ \chardef\currentgrouplevel0
+ \ExplSyntaxOff
+ \RequirePackage{pdfx}
+ \ExplSyntaxOn
+ \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx:
+ \cs_undefine:N \__ptxcd_grouplevel_before_pdfx:
+%% end of the workaround
+
+ \msg_new:nnn{tuda-ci} {prefer-lualatex} {
+ You~use~pdfa-mode~in~#1.\\
+ This~can~lead~to~incompatiblities~especially~with~older~compiler~versions.\\
+ You~should~prefer~using~lualatex.
+ }
+ \msg_new:nnnn{tuda-ci} {outdated-package-pdfa} {
+ Your~Version~of~the~#1-package~is~too~old~to~support~all~methods~required~by~tudapubs~pdfa-mode.\\
+ Either~update~your~TeX-distribution~or~switch~to~pdfa=false.
+ }{See~DEMO-tudapub~for~further~information.}
+
+ \sys_if_engine_pdftex:T {
+ \msg_warning:nnn{tuda-ci} {prefer-lualatex} {PDFTeX}
+ }
+
+ \sys_if_engine_xetex:T {
+ \msg_warning:nnn{tuda-ci} {prefer-lualatex} {XeTeX}
+ }
+
+ \@ifpackagelater{xmpincl}{2021/09/22}{
+ }{
+ \msg_error:nn{tuda-ci} {outdated-package-pdfa} {xmpincl}
+ }
-\if_bool:N \g_ptxcd_pdfx_bool
- \PassOptionsToPackage{a-2b}{pdfx}
-% Workaround posted by David Carlisle on tex.stackexchange
-% Thanks to Ulrike Fischer for mentioning it in #472
- \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel
- \chardef\currentgrouplevel0
- \ExplSyntaxOff
- \RequirePackage{pdfx}
- \ExplSyntaxOn
- \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx:
- \cs_undefine:N \__ptxcd_grouplevel_before_pdfx:
-% end of the workaround
-\else:
- \PassOptionsToPackage{hidelinks, unicode}{hyperref}
- \RequirePackage{hyperref}
-\fi:
-
+} {
+ \RequirePackage{hyperref}
+}
\RequirePackage[paper=a4]{tudarules}% might load pgfcore, so it has to be loaded after pdfx
-
\setplength{firstheadhpos}{\c_ptxcd_HeadMargin_dim}
\setplength{firstheadvpos}{\c_ptxcd_HeadMargin_dim}
\setplength{firstheadwidth}{\dim_eval:n {\paperwidth - 2\c_ptxcd_HeadMargin_dim}}
-
\setplength{firstfootvpos}{\dim_eval:n {\paperheight -17mm}}
\setplength{firstfoothpos}{\useplength{firstheadhpos}}
\setplength{firstfootwidth}{\useplength{firstheadwidth}}
-
-
\setplength{toaddrhpos}{\c_ptxcd_LeftMargin_dim}
\setplength{toaddrvpos}{50mm}
\setplength{backaddrheight}{4mm}
\setplength{toaddrindent}{0mm}
-
\setplength{refhpos}{\c_ptxcd_LeftMargin_dim}
\setplength{refvpos}{106mm}
-
\setplength{subjectaftervskip}{2\baselineskip}
\setplength{lochpos}{\c_ptxcd_HeadMargin_dim}
\setplength{locvpos}{\dimexpr\useplength{refvpos}+\useplength{subjectaftervskip}+1.4\baselineskip\relax}
@@ -215,428 +257,372 @@
\setplength{subjectbeforevskip}{0pt}
\setplength{locwidth}{\dimexpr\paperwidth-154,5mm -\c_ptxcd_HeadMargin_dim\relax}
\setplength{locheight}{\dimexpr\paperheight-\useplength{locvpos}-\c_ptxcd_BottomMargin_dim\relax}
-
-
\bool_if:NTF \g__ptxcd_letter_headrule_bool {
- \ptxcd_makeheadrule[width=\useplength{firstheadwidth},color=identbarcolor]{ptxcd_LetterheadRule}
+ \ptxcd_makeheadrule[width=\useplength{firstheadwidth},color=identbarcolor]{ptxcd_LetterheadRule}
} {
- \box_new:N \ptxcd_LetterheadRule_box
- \def\ptxcd_LetterheadRule{}
+ \box_new:N \ptxcd_LetterheadRule_box
+ \def\ptxcd_LetterheadRule{}
}
\ptxcd_makefootrule[width=\useplength{firstheadwidth}]{ptxcd_LetterfootRule}
-
-
\box_new:N \g_TUDaLetter_firsthead_box
\hbox_gset:Nn \g_TUDaLetter_firsthead_box {
- \parbox[t]{\useplength{firstheadwidth}}{
- \raggedleft
- \smash{\ptxcd_LetterheadRule}
- \par
- \vspace{.5\c_ptxcd_logoheight_dim}
- \makebox[\__ptxcd_logowidth:][l]{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}
- }
+ \parbox[t]{\useplength{firstheadwidth}}{
+ \raggedleft
+ \smash{\ptxcd_LetterheadRule}
+ \par
+ \vspace{.5\c_ptxcd_logoheight_dim}
+ \makebox[\__ptxcd_logowidth:][l]{\__ptxcd_insert_logo:}
+ }
}
-
\box_gset_dp:Nn \g_TUDaLetter_firsthead_box {\c_zero_dim}
\setkomavar{firsthead}{
- \box_use:N \g_TUDaLetter_firsthead_box
+ \box_use:N \g_TUDaLetter_firsthead_box
}
-
\KOMAoptions{backaddress=plain}
\setkomavar{backaddressseparator}{\,$\vert$\,}
-
-%DOKU neue komavars
\newkomavar{frominstitution}
\newkomavar{frominstitution-en}
-
\newkomafont{ptxcd_location}{\accentfont\normalcolor}
\setkomafont{fromname}{\small}
\newkomafont{ptxcd_frominst}{\small\ptxcd_use_premiumcolor_text: }
\setkomafont{fromaddress}{\footnotesize}
-
\setkomafont{refname}{}
\setkomafont{refvalue}{}
-
\setkomafont{pageheadfoot}{\footnotesize}
-
\newcommand{\TUD@locfield}{%
- \usekomafont{ptxcd_location}\usekomafont{fromaddress}
- \setparsizes{\z@}{\z@}{\z@ plus 1fil}
- \par@updaterelative
- \begingroup
- \int_compare:nT {0 < \@pageat <3} {
- \ptxcd_letterpagemark:\\[\baselineskip]
- }
- \usekomafont{ptxcd_frominst}
- \Ifkomavarempty{frominstitution}{}{%
- {\usekomavar[\raggedright]{frominstitution}}
- \\[\baselineskip]}%
- \Ifkomavarempty{frominstitution-en}{}{%
- \usekomavar[\raggedright]{frominstitution-en}
- \\[\baselineskip]}%
- \endgroup
- \Ifkomavarempty{fromlogo}{}{\usekomavar{fromlogo}\\[\baselineskip]}%
- \Ifkomavarempty{fromname}{}
- {{\usekomafont{fromname}\usekomavar{fromname}}
- \Ifkomavarempty{fromfunction}{}{\\\usekomavar{fromfunction}}
- \\[\baselineskip]}%
- \Ifkomavarempty{fromaddress}{}{\usekomavar{fromaddress}\\[\baselineskip]}%
- \@tempswafalse
- \clist_map_inline:nn {fromphone, fromfax, fromemail, fromurl}{
- \@tempswatrue
- \Ifkomavarempty{##1}{}{
- \Ifkomavarempty*{##1}{}{\makebox[1cm][l]{\usekomavar*{##1}}}\usekomavar{##1}\par
- }
- }
- \if@tempswa
- \vspace{2\baselineskip}
- \fi
- \Ifkomavarempty*{date}{}{\usekomavar*{date}\\\usekomavar{date}}
- \seq_use:Nn \g__ptxcd_reffields_seq {}
- \Ifkomavarempty{frombank}{}{\vfill%
- \Ifkomavarempty*{frombank}{Bankverbindung}{\usekomavar*{frombank}}\\\usekomavar{frombank}
- }
+ \usekomafont{ptxcd_location}\usekomafont{fromaddress}
+ \setparsizes{\z@}{\z@}{\z@ plus 1fil}
+ \par@updaterelative
+ \begingroup
+ \int_compare:nT {0 < \@pageat <3} {
+ \ptxcd_letterpagemark:\\[\baselineskip]
+ }
+ \usekomafont{ptxcd_frominst}
+ \Ifkomavarempty{frominstitution}{}{%
+ {\usekomavar[\raggedright]{frominstitution}}
+ \\[\baselineskip]}%
+ \Ifkomavarempty{frominstitution-en}{}{%
+ \usekomavar[\raggedright]{frominstitution-en}
+ \\[\baselineskip]}%
+ \endgroup
+ \Ifkomavarempty{fromlogo}{}{\usekomavar{fromlogo}\\[\baselineskip]}%
+ \Ifkomavarempty{fromname}{}
+ {{\usekomafont{fromname}\usekomavar{fromname}}
+ \Ifkomavarempty{fromfunction}{}{\\\usekomavar{fromfunction}}
+ \\[\baselineskip]}%
+ \Ifkomavarempty{fromaddress}{}{\usekomavar{fromaddress}\\[\baselineskip]}%
+ \@tempswafalse
+ \clist_map_inline:nn {fromphone, fromfax, fromemail, fromurl}{
+ \@tempswatrue
+ \Ifkomavarempty{##1}{}{
+ \Ifkomavarempty*{##1}{}{\makebox[1cm][l]{\usekomavar*{##1}}}\usekomavar{##1}\par
+ }
+ }
+ \if@tempswa
+ \vspace{2\baselineskip}
+ \fi
+ \Ifkomavarempty*{date}{}{\usekomavar*{date}\\\usekomavar{date}}
+ \seq_use:Nn \g__ptxcd_reffields_seq {}
+ \Ifkomavarempty{frombank}{}{\vfill%
+ \Ifkomavarempty*{frombank}{Bankverbindung}{\usekomavar*{frombank}}\\\usekomavar{frombank}
+ }
}
-
\setkomavar{location}{\parbox[t][.45\paperheight][t]{\useplength{locwidth}}{\TUD@locfield}}
-
\tl_const:Nn \ptxcd_reffield_separator_tl {\\}
-
\cs_new:Nn \ptxcd_set_reffield:n {
- \Ifkomavarempty{#1}{}{%
- \if@tempswa\\[\baselineskip]\fi
- \parbox[t]{\linewidth}{\noindent\raggedright
- \usekomafont{refname}
- \usekomavar*{#1}\ptxcd_reffield_separator_tl
- \usekomafont{refvalue}
- \usekomavar{#1}
- }%
- \@tempswatrue
- }%
+ \Ifkomavarempty{#1}{}{%
+ \if@tempswa\\[\baselineskip]\fi
+ \parbox[t]{\linewidth}{\noindent\raggedright
+ \usekomafont{refname}
+ \usekomavar*{#1}\ptxcd_reffield_separator_tl
+ \usekomafont{refvalue}
+ \usekomavar{#1}
+ }%
+ \@tempswatrue
+ }%
}
-
-
-
\seq_new:N \g__ptxcd_reffields_seq
\newlength{\TUD@page@free}
\newcounter{TUD@page@free@lines}
\dim_new:N \g__ptxcd_page_free_dim
\int_new:N \g__ptxcd_free_lines_int
-
\renewcommand{\opening}[1]{%
- \widowpenalty=100
- \@PapersizeWarning
- \seq_gclear:N \g__ptxcd_reffields_seq
- \renewcommand*{\@set@reffield}[1]{
- \typeout{Field: ##1}%
- \str_if_eq:nnT {##1}{datemarkerfield}{%
- \let\scr@datemarkerfield@var=\scr@date@var
- \let\scr@datemarkerfield@name=\scr@date@name
- \setkomavar{date}{}%
- }
- \Ifkomavarempty{##1}{}{%
- \seq_gput_right:Nn \g__ptxcd_reffields_seq {%
- \ptxcd_set_reffield:n {##1}
- }%
- }%
- }
- \let\do@set@reffield\@set@reffield
- \@set@reffields
- \removereffields
- \@gen@firsthead
- \@mkboth{\scr@fromname@var}{\scr@subject@var}%
- \thispagestyle{letter.first}\noindent
- \Ifkomavarempty{toname}{\setkomavar{toname}{\mbox{}}}{}
- \@foldmarks\@firstheadfootfield\@addrfield\@locfield
- \ifdim\useplength{subjectvpos}=\z@\else\@subjfield\fi
- \@datefield
- \@makelettertitle
- \ifdim\useplength{subjectvpos}=\z@\if@subjafter\else\@subjfield\fi\fi
- {\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative#1\par}%
- {\setlength{\@tempdima}{\baselineskip}%
- \addtolength{\@tempdima}{-\parskip}%
- \ifdim \@tempdima>\z@\vskip\@tempdima\fi}%
- \ifdim\useplength{subjectvpos}=\z@\if@subjafter\@subjfield\fi\fi
- \setcounter{equation}{0}%
- \@afterheading%
- \@nobreaktrue
- \@afterindentfalse
- \bool_if:NT \g__ptxcd_adjust_textwidth_bool {
- \everypar{%
- \if@nobreak
- \@nobreakfalse\clubpenalty\@M
- \if@afterindent
- \else{\setbox\z@\lastbox}
- \fi
- \else
- \clubpenalty\@clubpenalty
- \fi
- \ifnum\thepage=1%
- \dim_gset:Nn \g__ptxcd_page_free_dim {-\pagegoal + \pagetotal}
- \dim_compare:nTF {-\g__ptxcd_page_free_dim>2\baselineskip}
- {
- \int_gset:Nn \g__ptxcd_free_lines_int {\fp_eval:n {ceil(\g__ptxcd_page_free_dim/\baselineskip)}}
- \int_compare:nT {\g__ptxcd_free_lines_int<0} {
- \hangafter=\g__ptxcd_free_lines_int\hangindent=\c__ptxcd_firstpage_extraindent_dim%
- }
- } {
- \dim_compare:nT {-\TUD@page@free>\baselineskip} {
- \hangafter=-2\hangindent=\c__ptxcd_firstpage_extraindent_dim%
- }
- }
- \fi%
- }%
- \global\setlength{\linewidth}{\dim_eval:n {\c_ptxcd_Linewidth_dim + \c__ptxcd_firstpage_extraindent_dim}}
- \afterpage{
- \global\setlength{\linewidth}{\c_ptxcd_Linewidth_dim}
- \widowpenalty=10000
- }
- }
+ \widowpenalty=100
+ \@PapersizeWarning
+ \seq_gclear:N \g__ptxcd_reffields_seq
+ \renewcommand*{\@set@reffield}[1]{
+ \typeout{Field: ##1}%
+ \str_if_eq:nnT {##1}{datemarkerfield}{%
+ \let\scr@datemarkerfield@var=\scr@date@var
+ \let\scr@datemarkerfield@name=\scr@date@name
+ \setkomavar{date}{}%
+ }
+ \Ifkomavarempty{##1}{}{%
+ \seq_gput_right:Nn \g__ptxcd_reffields_seq {%
+ \ptxcd_set_reffield:n {##1}
+ }%
+ }%
+ }
+ \let\do@set@reffield\@set@reffield
+ \@set@reffields
+ \removereffields
+ \@gen@firsthead
+ \@mkboth{\scr@fromname@var}{\scr@subject@var}%
+ \thispagestyle{letter.first}\noindent
+ \Ifkomavarempty{toname}{\setkomavar{toname}{\mbox{}}}{}
+ \@foldmarks\@firstheadfootfield\@addrfield\@locfield
+ \ifdim\useplength{subjectvpos}=\z@\else\@subjfield\fi
+ \@datefield
+ \@makelettertitle
+ \ifdim\useplength{subjectvpos}=\z@\if@subjafter\else\@subjfield\fi\fi
+ {\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative#1\par}%
+ {\setlength{\@tempdima}{\baselineskip}%
+ \addtolength{\@tempdima}{-\parskip}%
+ \ifdim \@tempdima>\z@\vskip\@tempdima\fi}%
+ \ifdim\useplength{subjectvpos}=\z@\if@subjafter\@subjfield\fi\fi
+ \setcounter{equation}{0}%
+ \@afterheading%
+ \@nobreaktrue
+ \@afterindentfalse
+ \bool_if:NT \g__ptxcd_adjust_textwidth_bool {
+ \everypar{%
+ \if@nobreak
+ \@nobreakfalse\clubpenalty\@M
+ \if@afterindent
+ \else{\setbox\z@\lastbox}
+ \fi
+ \else
+ \clubpenalty\@clubpenalty
+ \fi
+ \ifnum\thepage=1%
+ \dim_gset:Nn \g__ptxcd_page_free_dim {-\pagegoal + \pagetotal}
+ \dim_compare:nTF {-\g__ptxcd_page_free_dim>2\baselineskip}
+ {
+ \int_gset:Nn \g__ptxcd_free_lines_int {\fp_eval:n {ceil(\g__ptxcd_page_free_dim/\baselineskip)}}
+ \int_compare:nT {\g__ptxcd_free_lines_int<0} {
+ \hangafter=\g__ptxcd_free_lines_int\hangindent=\c__ptxcd_firstpage_extraindent_dim%
+ }
+ } {
+ \dim_compare:nT {-\TUD@page@free>\baselineskip} {
+ \hangafter=-2\hangindent=\c__ptxcd_firstpage_extraindent_dim%
+ }
+ }
+ \fi%
+ }%
+ \global\setlength{\linewidth}{\dim_eval:n {\c_ptxcd_Linewidth_dim + \c__ptxcd_firstpage_extraindent_dim}}
+ \afterpage{
+ \global\setlength{\linewidth}{\c_ptxcd_Linewidth_dim}
+ \widowpenalty=10000
+ }
+ }
}
-
\AtBeginDocument{%
\raggedbottom%
}
-
\setkomafont{backaddress}{\accentfont\tiny\ptxcd_use_premiumcolor_text:\raisebox{\dimexpr-\totalheight+\ht\strutbox\relax}{\rule{\z@}{4mm}}}
-
\raggedbottom
-
\int_new:N \l_ptxcd_letter_lastpage_int
\cs_new:Nn \ptxcd_letterpagemark: {
- %get lastpage for this letter if not already done
- \int_compare:nNnTF {\value{page}} = {1} {
- \bool_if:NTF \g__ptxcd_firstpagenumber_bool
- {\bool_set_true:N \l_tmpa_bool}
- {\bool_set_false:N \l_tmpa_bool}
- }
- {\bool_set_true:N \l_tmpa_bool}
- \bool_if:NT \l_tmpa_bool {
- \int_if_exist:cF {c_ptxcd_letter\thisletter _lastpage_int} {
- \cs_if_exist:cTF {r@\thisletter.lastpage} {
- \int_const:cn {c_ptxcd_letter\thisletter _lastpage_int} {
- \exp_args:NNc \expandafter \@secondoffive { r@\thisletter.lastpage}
- }
- } {
- %warning -> rerun latex
- \int_const:cn {c_ptxcd_letter\thisletter _lastpage_int} {0}
- }
- }
- \usekomafont{pagenumber}\pagename\nobreakspace\thepage
- \int_compare:nT {
- \int_use:c {c_ptxcd_letter\thisletter _lastpage_int}
- > 1
- } {/\int_to_arabic:n{\int_use:c {c_ptxcd_letter\thisletter _lastpage_int}}}
- }
+ %get lastpage for this letter if not already done
+ \int_compare:nNnTF {\value{page}} = {1} {
+ \bool_if:NTF \g__ptxcd_firstpagenumber_bool
+ {\bool_set_true:N \l_tmpa_bool}
+ {\bool_set_false:N \l_tmpa_bool}
+ }
+ {\bool_set_true:N \l_tmpa_bool}
+ \bool_if:NT \l_tmpa_bool {
+ \int_if_exist:cF {c_ptxcd_letter\thisletter _lastpage_int} {
+ \cs_if_exist:cTF {r@\thisletter.lastpage} {
+ \int_const:cn {c_ptxcd_letter\thisletter _lastpage_int} {
+ \exp_args:NNc \expandafter \@secondoffive { r@\thisletter.lastpage}
+ }
+ } {
+ %warning -> rerun latex
+ \int_const:cn {c_ptxcd_letter\thisletter _lastpage_int} {0}
+ }
+ }
+ \usekomafont{pagenumber}\pagename\nobreakspace\thepage
+ \int_compare:nT {
+ \int_use:c {c_ptxcd_letter\thisletter _lastpage_int}
+ > 1
+ } {/\int_to_arabic:n{\int_use:c {c_ptxcd_letter\thisletter _lastpage_int}}}
+ }
}
-
-
\setkomavar{firstfoot}{\usekomavar{nextfoot}}
-
\setkomavar{nextfoot}{%
- \ifnum\@pageat>2
- \parbox[c]{\layerwidth}{%
- \ifcase\@pageat\or\or\or\raggedright\or\centering\or\raggedleft\fi
- \strut\pagemark%
- }%
- \fi
+ \ifnum\@pageat>2
+ \parbox[c]{\layerwidth}{%
+ \ifcase\@pageat\or\or\or\raggedright\or\centering\or\raggedleft\fi
+ \strut\pagemark%
+ }%
+ \fi
}
-
\cs_set_eq:NN \letterpagemark \ptxcd_letterpagemark:
-
-
\bool_if:NT \g__ptxcd_letter_headrule_bool {
- \bool_if:NTF \g__ptxcd_letter_logo_bool {
- \setkomavar{nexthead}{\raisebox{\topskip}{\box_use:N \g_TUDaLetter_firsthead_box}}
- }{
- \setkomavar{nexthead}{\raisebox{\depth}{\ptxcd_LetterheadRule}}
- }
+ \bool_if:NTF \g__ptxcd_letter_logo_bool {
+ \setkomavar{nexthead}{\raisebox{\topskip}{\box_use:N \g_TUDaLetter_firsthead_box}}
+ }{
+ \setkomavar{nexthead}{\raisebox{\depth}{\ptxcd_LetterheadRule}}
+ }
}
-
\newpairofpagestyles[letter]{TUDaLetter}{
- \exp_args:Nx \KOMAoptions{
- footwidth=\dimexpr\paperwidth-2\c_ptxcd_HeadMargin_dim \c_colon_str-\dim_eval:n {\c_ptxcd_HeadMargin_dim -1mm},
- headwidth=\dimexpr\paperwidth-2\c_ptxcd_HeadMargin_dim \c_colon_str-\dim_eval:n {\c_ptxcd_HeadMargin_dim -1mm},
- footsepline=.5\c_ptxcd_smallrule_dim,plainfootsepline
- }
- \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{TUDaLetter.head.even}
- \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{TUDaLetter.head.odd}
- \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{TUDaLetter.head.oneside}
- \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{plain.TUDaLetter.head.even}
- \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{plain.TUDaLetter.head.odd}
- \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{plain.TUDaLetter.head.oneside}
- \lehead{\usekomavar{nexthead}}%
- \lohead{\usekomavar{nexthead}}%
- \lefoot{\usekomavar{nextfoot}}%
- \lofoot{\usekomavar{nextfoot}}%
+ \exp_args:Nx \KOMAoptions{
+ footwidth=\dimexpr\paperwidth-2\c_ptxcd_HeadMargin_dim \c_colon_str-\dim_eval:n {\c_ptxcd_HeadMargin_dim -1mm},
+ headwidth=\dimexpr\paperwidth-2\c_ptxcd_HeadMargin_dim \c_colon_str-\dim_eval:n {\c_ptxcd_HeadMargin_dim -1mm},
+ footsepline=.5\c_ptxcd_smallrule_dim,plainfootsepline
+ }
+ \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{TUDaLetter.head.even}
+ \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{TUDaLetter.head.odd}
+ \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{TUDaLetter.head.oneside}
+ \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{plain.TUDaLetter.head.even}
+ \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{plain.TUDaLetter.head.odd}
+ \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{plain.TUDaLetter.head.oneside}
+ \lehead{\usekomavar{nexthead}}%
+ \lohead{\usekomavar{nexthead}}%
+ \lefoot{\usekomavar{nextfoot}}%
+ \lofoot{\usekomavar{nextfoot}}%
}
-
\DeclarePageStyleByLayers{TUDaLetter.first}{TUDaLetter.foot.even,TUDaLetter.foot.odd,TUDaLetter.foot.oneside,TUDaLetter.foot.above.line}
\pagestyle{TUDaLetter}
-
\DeclarePageStyleAlias{letter.first}{TUDaLetter.first}
\def\letterpagestyle{TUDaLetter}
-
-%pdfa
-\if_bool:N \g_ptxcd_pdfx_bool
- \PassOptionsToPackage{a-2b}{pdfx}
-% Workaround posted by David Carlisle on tex.stackexchange
-% Thanks to Ulrike Fischer for mentioning it in #472
- \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel
- \chardef\currentgrouplevel0
- \ExplSyntaxOff
- \RequirePackage{pdfx}
- \ExplSyntaxOn
- \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx:
- \cs_undefine:N \__ptxcd_grouplevel_before_pdfx:
-% end of the workaround
- %%hyperref
- \hypersetup{hidelinks, unicode}
- \iow_new:N \ptxcd_xmpdata_stream
-
- \cs_if_exist:NF \prop_gput_if_new:Nnx {
- \cs_generate_variant:Nn \prop_gput_if_new:Nnn {Nnx}
- }
- \cs_if_exist:NF \tl_to_str:V {\cs_generate_variant:Nn \tl_to_str:N {V}}
-
- \cs_new:Nn \ptxcd_pass_TitleData: {
- \prop_if_empty:NF \g_ptxcd_MetaData_prop {
- \iow_open:Nn \ptxcd_xmpdata_stream {\jobname.xmpdata}
- \begingroup
- \def\newline{}
- \def\\{}
- \let\thanks\use_none:n
- \cs_set:Npn \and {\exp_not:N \sep}
- \use:c {pdfx@localcommands}
- \prop_map_function:NN \g_ptxcd_MetaData_prop \ptxcd_write_xmp_line:nn
- \endgroup
- \iow_close:N \ptxcd_xmpdata_stream
- }
- }
- \cs_new:Nn \ptxcd_write_xmp_line:nn {
- %Fallback test for older kernels
- \cs_if_exist:NTF \str_uppercase:f {
- \tl_set:Nx \l_tmpa_tl {
- \str_uppercase:f {\tl_head:n {#1}}
- \str_lowercase:f { \tl_tail:n {#1}}
- }
- } {
- %may be removed in some time
- \tl_set:Nx \l_tmpa_tl {\tl_mixed_case:n {#1}}
- }
- \cs_if_exist:cTF {\l_tmpa_tl}{
- \iow_now:Nx \ptxcd_xmpdata_stream {
- \c_backslash_str \l_tmpa_tl {\exp_not:n {#2}}
- }
- }{
- \msg_error:nnn{tudaletter} {unknown-metadata} {#1}
- }
- }
-
- \bool_new:N \g_ptxcd_pass_TitleData_bool
- \bool_gset_true:N \g_ptxcd_pass_TitleData_bool
- \prop_new:N \g_ptxcd_MetaData_prop
-
- \newcommand*{\Metadata}[1]{
- \bool_gset_false:N \g_ptxcd_pass_TitleData_bool
- \prop_gset_from_keyval:Nn \g_ptxcd_MetaData_prop {#1}
- }
-
- \msg_new:nnnn{tudaletter} {unknown-metadata} {
- You~ used~ the~ #1~ metadata~ entry.\\
- I~ don't~ know~ how~ to~ handle~ that.\\
- It~ will~ be~ ignored.
- } {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.}
-
-\else:
- \hypersetup{pdfcreator=LaTeX~using~TUDa-CI}
-
- \msg_new:nnnn {tudapub} {metadata-to-hypersetup} {
- You~don't~use~pdfx.~
- Here~the~\string\Metadata\~command~only~exists~for~compatibility~reasons.\\
- I~will~pass~the~data~to~ḩypersetup.
- }{
- If~possible~please~use~hyperref's~\strung\hypersetup~command~for~the~metadata~directly.\\
- See~hyperref~documentation~for~details~on~usage.
- }
-
- \newcommand*{\Metadata}[1]{
- \tl_set:Nn \l_tmpa_tl {#1}
- \tl_replace_all:Nnn \l_tmpa_tl {\sep} {;~}% pdfx-Syntax compatibility
- \clist_map_inline:Nn \l_tmpa_tl {
- \exp_args:Nx \hypersetup{pdf\tl_trim_spaces:n {##1}}
- }
- \msg_warning:nn {tudapub} {metadata-to-hypersetup}
- }
-
-
- \cs_new:Nn \ptxcd_pass_TitleData: {
- % check if pdfmanagement is active
- \prop_if_exist:NTF \g__pdfmanagement_documentproperties_prop {
- \prop_set_eq:NN \l_tmpa_prop \g__pdfmanagement_documentproperties_prop
- } {
- \prop_set_eq:NN \l_tmpa_prop \g__hyp_documentproperties_prop
- }
-
- % title
- \prop_if_in:NnF \l_tmpa_prop {hyperref/pdftitle} {
- \begingroup
- \def\newline{}
- \def\\{}
- \let\thanks\use_none:n
- \tl_gset:Nf \g_tmpa_tl {\@title}
- \endgroup
- \hypersetup{pdftitle={\tl_to_str:V \g_tmpa_tl}}
- }
-
- % author
- \prop_if_in:NnF \l_tmpa_prop {hyperref/pdfauthor} {
- \begingroup
- \def\newline{}
- \def\\{}
- \let\thanks\use_none:n
- \tl_gset:Nx \g_tmpa_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \and}}
- \tl_gset:Nx \g_tmpa_tl {\g_tmpa_tl }
- \endgroup
- \hypersetup{pdfauthor=\g_tmpa_tl}
- }
- }
-
- \bool_if:NF \g_ptxcd_pdfa_bool {
- \msg_new:nnn{tudapub} {no-pdfa}{The~ tudapub~ class~ won't~ create~ PDF/A-mode.}
- \msg_info:nn{tudapub} {no-pdfa}
- }
-
-\fi:
-
-
-%Widows and clubs
\widowpenalty=10000
\clubpenalty=10000
-
-%default values
\setkomavar*{fromemail}{}
\setkomavar*{fromurl}{}
\setkomavar{backaddress}{Technische~ Universität~ Darmstadt\\Karolinenplatz~ 5\\64289~ Darmstadt}
-
-%renewcaptions
\defcaptionname{german,ngerman,austrian,naustrian,%
- swissgerman,nswissgerman}\yourmailname{Ihre~ Nachricht}%
+ swissgerman,nswissgerman}\yourmailname{Ihre~ Nachricht}%
\defcaptionname{german, ngerman,austrian,naustrian,%
- swissgerman,nswissgerman}\phonename{Tel.}%
-
-
-%signature raggedright
+ swissgerman,nswissgerman}\phonename{Tel.}%
\let\raggedsignature\raggedright
-
\newkomavar{fromfunction}
-
\bool_if:NT \g__ptxcd_letter_raggedright_bool {\AtBeginLetter{\RaggedRight}}
-
-%backwards compatibility for KOMA-Script
\cs_if_exist:NF \Ifkomavarempty{
- \let\Ifkomavarempty\ifkomavarempty
+ \let\Ifkomavarempty\ifkomavarempty
}
-
\file_if_exist_input:n {\g__ptxcd_config_prefix_tl\g_ptxcd_department_str.cfg}
+
+\if_bool:N \g_ptxcd_pdfx_bool
+ \iow_new:N \ptxcd_xmpdata_stream
+ \tl_new:N \g_ptxcd_xmp_title_tl
+ \tl_new:N \g_ptxcd_xmp_author_tl
+
+ \cs_if_exist:NF \prop_gput_if_new:Nnx {
+ \cs_generate_variant:Nn \prop_gput_if_new:Nnn {Nnx}
+ }
+
+ \cs_if_exist:NF \tl_to_str:V {\cs_generate_variant:Nn \tl_to_str:N {V}}
+
+ \cs_new:Nn \ptxcd_pass_TitleData: {
+ \iow_open:Nn \ptxcd_xmpdata_stream {\jobname.xmpdata}
+ \begingroup
+ \def\newline{}
+ \def\\{}
+ \let\thanks\use_none:n
+ \cs_set:Npn \and {\exp_not:n {\exp_not:N \sep}}
+ \use:c {Hy@pdfstringtrue}
+ \tl_gset:Nf \g_ptxcd_xmp_title_tl {\@title}
+ \prop_gput_if_new:Nnx \g_ptxcd_MetaData_prop {Title} {\tl_to_str:V \g_ptxcd_xmp_title_tl}
+ \prop_if_in:NnF \g_ptxcd_MetaData_prop {Author} {
+ \tl_gset:Nx \g_ptxcd_xmp_author_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \sep}}
+ \tl_gset:Nx \g_ptxcd_xmp_author_tl {\g_ptxcd_xmp_author_tl}
+ \prop_gput:Nnx \g_ptxcd_MetaData_prop {Author} {\tl_to_str:V \g_ptxcd_xmp_author_tl}
+ }
+ \prop_gput_if_new:Nnn \g_ptxcd_MetaData_prop {Publisher}{TU~Darmstadt}
+ \prop_gput_if_new:Nnn \g_ptxcd_MetaData_prop {Creator}{LaTeX~using~TUDa-CI}
+ \use:c {pdfx@localcommands}%should be held inside group
+ \prop_map_function:NN \g_ptxcd_MetaData_prop \ptxcd_write_xmp_line:nn
+ \endgroup
+ \iow_close:N \ptxcd_xmpdata_stream
+ \let\ptxcd_pass_TitleData:\relax
+ }
+ \cs_new:Nn \ptxcd_write_xmp_line:nn {
+ \begingroup
+ \cs_set:Npn \sep {\exp_not:N \sep}
+ \cs_if_exist:cTF {#1}{
+ \iow_now:Nx \ptxcd_xmpdata_stream {
+ \c_backslash_str #1 {\exp_not:n {#2}}
+ }
+ }{
+ \msg_error:nnn{tuda-ci} {unknown-metadata} {#1}
+ }
+ \endgroup
+ }
+
+ \prop_new:N \g_ptxcd_MetaData_prop
+
+ \newcommand*{\Metadata}[1]{
+ \keyval_parse:NNn \use_none:n \ptxcd_set_metadata_prop:nn
+ {#1}
+ }
+
+ \cs_set:Nn \ptxcd_set_metadata_prop:nn {
+ % Fallback test for older kernels doesn't support mixed case eintries
+ \cs_if_exist:NTF \text_titlecase_first:n {
+ \exp_args:NNf \prop_gput:Nnn \g_ptxcd_MetaData_prop {\text_titlecase_first:n {#1}} {#2}
+ } {
+ \exp_args:NNx \prop_gput:Nnn \g_ptxcd_MetaData_prop {
+ \str_uppercase:f {\tl_head:n {#1}}
+ \str_lowercase:f {\tl_tail:n {#1}}
+ } {#2}
+ }
+ }
+ \msg_new:nnnn{tuda-ci} {unknown-metadata} {
+ You~ used~ the~ #1~ metadata~ entry.\\
+ I~ don't~ know~ how~ to~ handle~ that.\\
+ It~ will~ be~ ignored.
+ } {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.}
+\else:
+ \hypersetup{pdfcreator=LaTeX~using~TUDa-CI}
+ \msg_new:nnnn {tuda-ci} {metadata-to-hypersetup} {
+ You~don't~use~pdfx.~
+ Here~the~\string\Metadata ~command~only~exists~for~compatibility~reasons.\\
+ I~will~pass~the~data~to~ḩypersetup.
+ }{
+ If~possible~please~use~hyperref's~\string\hypersetup~command~for~the~metadata~directly.\\
+ See~hyperref~documentation~for~details~on~usage.
+ }
+
+ \newcommand*{\Metadata}[1]{
+ \tl_set:Nn \l_tmpa_tl {#1}
+ \tl_replace_all:Nnn \l_tmpa_tl {\sep} {;~}% pdfx-Syntax compatibility
+ \clist_map_inline:Nn \l_tmpa_tl {
+ \exp_args:Nx \hypersetup{pdf\tl_trim_spaces:n {##1}}
+ }
+ \msg_warning:nn {tuda-ci} {metadata-to-hypersetup}
+ }
+ \cs_new:Nn \ptxcd_pass_TitleData: {
+ \prop_if_exist:NTF \g__pdfmanagement_documentproperties_prop {
+ \prop_set_eq:NN \l_tmpa_prop \g__pdfmanagement_documentproperties_prop
+ } {
+ \prop_set_eq:NN \l_tmpa_prop \g__hyp_documentproperties_prop
+ }
+ \prop_if_in:NnF \l_tmpa_prop {hyperref/pdftitle} {
+ \begingroup
+ \def\newline{}
+ \def\\{}
+ \let\thanks\use_none:n
+ \tl_gset:Nf \g_tmpa_tl {\@title}
+ \endgroup
+ \hypersetup{pdftitle={\tl_to_str:V \g_tmpa_tl}}
+ }
+ \prop_if_in:NnF \l_tmpa_prop {hyperref/pdfauthor} {
+ \begingroup
+ \def\newline{}
+ \def\\{}
+ \let\thanks\use_none:n
+ \tl_gset:Nx \g_tmpa_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \and}}
+ \tl_gset:Nx \g_tmpa_tl {\g_tmpa_tl }
+ \endgroup
+ \hypersetup{pdfauthor=\g_tmpa_tl}
+ }
+ }
+ \bool_if:NF \g_ptxcd_pdfa_bool {
+ \msg_new:nnn{tuda-ci} {no-pdfa}{The~ tuda\c__ptxcd_base_str\space class~ will~ not~ create~ PDF/A.}
+ \msg_info:nn{tuda-ci} {no-pdfa}
+ }
+\fi:
\endinput
+%%
+%% End of file `tudaletter.cls'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudalettersize10pt.clo b/Master/texmf-dist/tex/latex/tuda-ci/tudalettersize10pt.clo
index 216642a28ce..86a1d992b17 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudalettersize10pt.clo
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudalettersize10pt.clo
@@ -1,40 +1,38 @@
-%% This is file `tudalettersize10pt.clo' version 3.41 (2024-07-02),
+%%
+%% This is file `tudalettersize10pt.clo',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudasize.dtx (with options: `scrsize,tudaletter')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
-%% This file is a slightly modified version of scrsize10pt.clo
-%% generated with the docstrip utility, extended by scrdocstrip.
-%% modified by Marei Peischl <marei@peitex.de>
-%%
-%% Its original source files were:
-%%
-%% scrkernel-version.dtx (with options: `clo,10pt')
-%% scrkernel-fonts.dtx (with options: `clo,10pt')
-%% scrkernel-paragraphs.dtx (with options: `clo,10pt')
-%%
-%% Copyright (c) 1994-2017 Markus Kohm [komascript at gmx info]
-%%
-%% The original file was generated from file(s) of the KOMA-Script bundle.
-%% https://ctan.org/pkg/koma-script
-%%
-%% ========================================================================
%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
+%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
-%%
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008/05/04 or later.
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are Marei Peischl <kontakt@peitex.de>.
-%%
-%%
+%%
+%% The Current Maintainer of this work is
+%% Marei Peischl <tuda-ci@peitex.de>
+%%
+%% The development repository can be found at
+%% https://github.com/tudace/tuda_latex_templates
+%% Please use the issue tracker for feedback!
+%%
+%% ============================================================================
+%%
\ProvidesFile{%
tudalettersize10pt.clo%
}[
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudamecheng.cfg b/Master/texmf-dist/tex/latex/tuda-ci/tudamecheng.cfg
index d1d70773e85..ffde27cb75b 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudamecheng.cfg
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudamecheng.cfg
@@ -1,9 +1,9 @@
-%% This is file `tudamecheng.cfg' version 3.41 (2024-07-02),
+%% This is file `tudamecheng.cfg' version 4.00 (2025-01-26),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -16,7 +16,7 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainers of this work are
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
%%
%% The development respository can be found at
@@ -25,11 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.41}
-\def\filedate{2024-07-02}
\RequirePackage{expl3}
-\ProvidesExplFile{tudamecheng.cfg}
-{\filedate}{\fileversion}{Special Features the department of mechanical engineering of Darmstadt's Corporate Design (tuda-ci)}
+\ProvidesExplFile{tudamecheng.cfg}{2025-01-26}{4.00}{Special Features the department of mechanical engineering of Darmstadt's Corporate Design (tuda-ci)}
\RequirePackage{pgf}
@@ -97,7 +94,7 @@
\@sponsors\par
\nointerlineskip\addvspace{.1\c_ptxcd_logoheight_dim}
\fi
-
+
\smash{\MechEngArrow{\linewidth}}
\\[\c_ptxcd_rulesep_dim]
\usekomafont{pagefoot}\includegraphics[width=\c_ptxcd_logoheight_dim]{\g_ptxcd_departmentlogo_tl}
@@ -106,7 +103,7 @@
}
\renewcommand*{\sectionformat}{\color{TUDa-Primary2}\thesection\autodot\enskip}
-
+
\if@titlepage
\titlehead{\rule{0pt}{\c_ptxcd_logoheight_dim}}
\fi
@@ -146,7 +143,7 @@
\smash{\box_use:N \g_ptxcd_footline_box}
}
]{TUDa.mecheng.foot.above.line}
-
+
\ModifyLayer[
contents={
\dim_compare:nF {\box_wd:N \g_ptxcd_footline_box=\layerwidth} {
@@ -155,7 +152,7 @@
\smash{\box_use:N \g_ptxcd_footline_box}%
}
]{plain.TUDa.mecheng.foot.above.line}
-
+
\clearpairofpagestyles
\cfoot[\pagemark]{\pagemark}
\hbox_gset:Nn \g_ptxcd_departmentlogo_box {
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudaposter.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudaposter.cls
index 0286215cb05..e4a27701d8a 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudaposter.cls
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudaposter.cls
@@ -1,10 +1,20 @@
-%% This is file `tudaposter.cls' version 3.41 (2024-07-02),
+%%
+%% This is file `tudaposter.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudaposter.dtx (with options: `class,initialization')
+%% tuda-ci.dtx (with options: `options,poster,print')
+%% tudaposter.dtx (with options: `class,body')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,604 +23,554 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\def\fileversion{3.41}
-\def\filedate{2024-07-02}
-\NeedsTeXFormat{LaTeX2e}
-
-\ProvidesExplPackage{tudaposter}{\filedate}{\fileversion}{Poster Layouts for the Corporate Design of TU Darmstadt}
-
-\bool_new:N \g_ptxcd_logo_inhead_bool
+%%
+\NeedsTeXFormat{LaTeX2e}[2020/10/01]
+\ProvidesExplPackage{tudaposter}{2025-01-26}{4.00}{Announcement poster Layouts for the Corporate Design of TU Darmstadt}
+\bool_new:N \g__ptxcd_logo_head_bool
\dim_new:N \g_ptxcd_margin_dim
\int_new:N \g_ptxcd_paper_int
\int_new:N \g_ptxcd_postertype_int
\str_new:N \g_ptxcd_department_str
-
\str_const:Nn \c__ptxcd_base_str {poster}
-
\keys_define:nn {ptxcd/poster} {
- accentcolor .code:n = {\PassOptionsToPackage{accent=#1}{tudacolors}},
- color .code:n = {\PassOptionsToPackage{color=#1}{tudacolors}},
- textaccentcolor .code:n = {\PassOptionsToPackage{textaccent=#1}{tudacolors}},
- identbarcolor .code:n = {\PassOptionsToPackage{identbar=#1}{tudacolors}},
- logo .choice:,
- logo / head .code:n = {\bool_gset_true:N \g_ptxcd_logo_inhead_bool},
- logo / body .code:n = {\bool_gset_false:N \g_ptxcd_logo_inhead_bool},
- logo / top .code:n = {\bool_gset_true:N \g_ptxcd_logo_inhead_bool},
- logo / bottom .code:n = {\bool_gset_false:N \g_ptxcd_logo_inhead_bool},
- logo .initial:n = {head},
- footer .bool_gset:N = \g_ptxcd_poster_foot_bool,
- footer .default:n = true,
- footer .initial:n = false,
- footheight .dim_gset:N = \g_ptxcd_footheight_dim,
- paper .choices:nn = {a0,a1,a2,a3,a4}{
- \int_gset_eq:NN \g_ptxcd_paper_int \l_keys_choice_int
- \tl_gset_eq:NN \g_ptxcd_paper_tl \l_keys_choice_tl
- },
- fontsize .choice:,
- fontsize / auto .code:n = \tl_gclear:N \g_ptxcd_fontsize_tl,
- fontsize / unknown .code:n = {\@defaultunits\@tempdima#1pt\relax\@nnil \tl_gset:Nx \g_ptxcd_fontsize_tl {\the\@tempdima}},
- fontsize .initial:n = auto,
- logofile .tl_gset:N = \g_ptxcd_logofile_tl,
- logofile .initial:n = tuda_logo,
- type .choice:,
- type / default .code:n = {
- \int_gset:Nn \g_ptxcd_postertype_int {1}
- },
- type / announcement .code:n = {
- \int_gset:Nn \g_ptxcd_postertype_int {2}
- \keys_set:nn {ptxcd/poster}{
- marginpar=true,
- indenttext=false,%allow overwrite - check default
- logo=head,
- title=small,
- colorsubtitle=true
- }
- },
- type .initial:n = default,
- indenttext .bool_gset:N = \g_ptxcd_indenttext_bool,
- indenttext .initial:n = false,
- indenttext .default:n = true,
- marginpar .bool_gset:N = \g_ptxcd_marginpar_bool,
- marginpar / auto .meta:n = {marginpar = true} ,
- marginpar .default:n = true,
- marginpar .initial:n = false,
- title .choice:,
- title / default .meta:n = {title=large},
- title / large .code:n = \bool_gset_false:N \g_ptxcd_smalltitle_bool,
- title / small .code:n = \bool_gset_true:N \g_ptxcd_smalltitle_bool,
- title .initial:n = default,
- colorback .bool_gset:N = \g_ptxcd_colorback_bool,
- colorback .initial:n = true,
- colorsubtitle .bool_gset:N = \g_ptxcd_colorsubtitle_bool,
- colorsubtitle .default:n = true,
- colorsubtitle .initial:n = false,
- department .choice:,
- department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
- department / mecheng .code:n = {
- \str_gset:Nn \g_ptxcd_department_str {mecheng}
- \keys_set:nn {ptxcd/poster} {colorback=false, departmentlogofile=tuda_maschinenbau_logo}
- },
- department .initial:n = default,
- department / unknown .code:n = {
- \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
- },
- departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl,
- departmentconfigprefix .initial:n = tuda,
- mecheng .meta:n = {department=mecheng},
- departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl,
- departmentlogofile .initial:n =,
+ footer .bool_gset:N = \g_ptxcd_poster_foot_bool,
+ footer .default:n = true,
+ footer .initial:n = false,
+ footheight .dim_gset:N = \g_ptxcd_footheight_dim,
+ fontsize .choice:,
+ fontsize / auto .code:n = \tl_gclear:N \g_ptxcd_fontsize_tl,
+ fontsize / unknown .code:n = {\@defaultunits\@tempdima#1pt\relax\@nnil \tl_gset:Nx \g_ptxcd_fontsize_tl {\the\@tempdima}},
+ fontsize .initial:n = auto,
+ type .choice:,
+ type / default .code:n = {
+ \int_gset:Nn \g_ptxcd_postertype_int {1}
+ },
+ type / announcement .code:n = {
+ \int_gset:Nn \g_ptxcd_postertype_int {2}
+ \keys_set:nn {ptxcd/poster}{
+ marginpar=true,
+ indenttext=false,%allow overwrite - check default
+ logo=head,
+ title=small,
+ colorsubtitle=true
+ }
+ },
+ type .initial:n = default,
+ indenttext .bool_gset:N = \g_ptxcd_indenttext_bool,
+ indenttext .initial:n = false,
+ indenttext .default:n = true,
+ colorsubtitle .bool_gset:N = \g_ptxcd_colorsubtitle_bool,
+ colorsubtitle .default:n = true,
+ colorsubtitle .initial:n = false,
+ logofile .tl_gset:N = \g_ptxcd_logofile_tl,
+ logofile .initial:n = tuda_logo,
+ accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool,
+ accept-missing-logos .initial:n = false,
+ accept-missing-logos .usage:n = load,
+ accept-missing-logos .default:n = true,
+ department .choice:,
+ department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
+ department / mecheng .code:n = {
+ \str_gset:Nn \g_ptxcd_department_str {mecheng}
+ \exp_args:Ne \keys_set:ne {
+
+ ptxcd / \c__ptxcd_base_str
+ }{
+ colorback=false,
+ departmentlogofile=tuda_maschinenbau_logo,
+ }
+ },
+
+ department .initial:n = default,
+ department / unknown .code:n = {
+ \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
+ },
+ departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl,
+ departmentconfigprefix .initial:n = tuda,
+ departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl,
+ departmentlogofile .initial:n =,
+ mecheng .meta:n = {department=mecheng},
+ logo .choice:,
+ logo / head .code:n = {
+ \bool_gset_true:N \g__ptxcd_logo_head_bool
+ },
+ logo / body .code:n = {
+ \bool_gset_false:N \g__ptxcd_logo_head_bool
+ },
+ logo / top .meta:n = {logo=head},
+ logo / bottom .code:n = {\bool_gset_false:N \g__ptxcd_logo_head_bool},
+ logo .initial:n = {head},
+%% color options
+%% color options
+ color .meta:n = {accentcolor=#1},
+ accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}},
+ textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}},
+ identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}},
+ colorback .bool_gset:N = \g_ptxcd_colorback_bool,
+ colorback .default:n = true,
+ colorback .initial:n = true,
+ marginpar
+ .bool_gset:N = \g_ptxcd_marginpar_bool,
+ marginpar / auto .meta:n = {marginpar = true} ,
+ marginpar .default:n = auto,
+ marginpar .initial:n = false,
+ paper .choices:nn = {
+ a0,a1,a2,a3,a4
+ }{
+ \int_gset_eq:NN \g_ptxcd_paper_int \l_keys_choice_int
+ \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{tudarules}
+ \exp_args:Nx \PassOptionsToPackage{\l_keys_choice_tl paper}{geometry}
+ },
+ paper .initial:n =
+
+ a0,
+ title .choice:,
+ title / default .meta:n = {title=large},
+ title / large .code:n = \bool_gset_false:N \g_ptxcd_smalltitle_bool,
+ title / small .code:n = \bool_gset_true:N \g_ptxcd_smalltitle_bool,
+ title .initial:n = default,
+}
+\cs_if_exist:NT \TUDaDefaultBuildOptions {
+ \exp_args:Ne \keys_set:ne { ptxcd /
+ \c__ptxcd_base_str
+ } {
+ \TUDaDefaultBuildOptions
+ }
+}
+\cs_new:Nn \__ptxcd_insert_logo: {
+ \bool_if:NTF \g_ptxcd_logo_workaround_bool {
+ \file_if_exist:nTF {\g_ptxcd_logofile_tl.pdf}
+ \use_ii:nn
+ \use_i:nn
+ } {
+ \use_ii:nn
+ }
+ {\rule{0pt}{\c_ptxcd_logoheight_dim}\makebox[2.5\c_ptxcd_logoheight_dim][c]{\rule[.1\c_ptxcd_logoheight_dim]{2.05\c_ptxcd_logoheight_dim}{.8\c_ptxcd_logoheight_dim}}}
+ {\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}
}
-
\ProcessKeyOptions[ptxcd/poster]
-
\ExplSyntaxOff
+\PassOptionsToPackage{DIV=6,typeareawarninfolimit=-1}{typearea}
\LoadClass[parskip=half-]{scrartcl}
\RequirePackage{scrlayer}
\RequirePackage{scrlayer-notecolumn}
\ExplSyntaxOn
-
-\tl_if_empty:NT \g_ptxcd_paper_tl {\keys_set:nn {ptxcd/poster} {paper=a0}}
-
\bool_if:NTF \g_ptxcd_smalltitle_bool {
- \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo}
- \ptxcd_setup_title_sizes:
- \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo}
- \ptxcd_setup_base_sizes:
+ \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo}
+ \ptxcd_setup_title_sizes:
+ \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo}
+ \ptxcd_setup_base_sizes:
}{
- \int_gdecr:N \g_ptxcd_paper_int
- \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo}
- \ptxcd_setup_title_sizes:
- \ptxcd_setup_base_sizes:
+ \int_gdecr:N \g_ptxcd_paper_int
+ \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo}
+ \ptxcd_setup_title_sizes:
+ \ptxcd_setup_base_sizes:
}
-
-
\setkomafont{title}{
- \bool_if:NT \g_ptxcd_colorback_bool
- {\color{textonaccentcolor}}\expandafter\fontsize\ptxcd_title_fontsize:\selectfont}
+ \bool_if:NT \g_ptxcd_colorback_bool
+ {\color{textonaccentcolor}}\expandafter\fontsize\ptxcd_title_fontsize:\selectfont}
\setkomafont{subtitle}{\expandafter\fontsize\ptxcd_titleinfo_fontsize:\selectfont}
\newkomafont{titleinfo}{\usekomafont{subtitle}}
-
\clist_map_inline:nn {author, date, publishers}
{\setkomafont{#1}{\usekomafont{subtitle}}}
-
\ExplSyntaxOff
\KOMAoptions{fontsize=\csname g_ptxcd_fontsize_tl\endcsname}
\ExplSyntaxOn
-
\RequirePackage{tudafonts}
\renewcommand*{\familydefault}{\sfdefault}
-
-\exp_args:Nx \PassOptionsToPackage{paper=\g_ptxcd_paper_tl , mode=tikz}{tudarules}
+\exp_args:Nx \PassOptionsToPackage{mode=tikz}{tudarules}
\RequirePackage{tudarules}
-
\RequirePackage{tudacolors}
\RequirePackage{qrcode}
\RequirePackage{tikz}
-
-
-
-
\newlength{\contentwidth}
\setlength{\contentwidth}{\dimexpr\paperwidth-2\g_ptxcd_margin_dim}
-
\ptxcd_makeheadrule[width=\contentwidth, color=identbarcolor]{ptxcd_headrule}
-
%%%%%%%%%%%%%%%%%%%%%%
\int_case:nn {\g_ptxcd_postertype_int}
{
- {1} {}
- {2} {
- \addtokomafont{subtitle}{\bfseries}
- }
+ {1} {}
+ {2} {
+ \addtokomafont{subtitle}{\bfseries}
+ }
}
-
-%%%%%%%%%%%%%%%%%%%%%%
-%marginpar option
\dim_new:N \g_ptxcd_marginpar_dim
-%%%%%%%%%%%%%%%%%%%%%%
\dim_new:N \g_ptxcd_titleindent_dim
\begingroup
\expandafter\fontsize\ptxcd_title_fontsize:\selectfont
\dim_gset:Nn \g_ptxcd_titleindent_dim {.5ex}
\endgroup
-
\dim_new:N \g_ptxcd_columnSep_dim
\dim_gset:Nn \g_ptxcd_columnSep_dim {1em}
-
\RequirePackage{geometry}
-
\geometry{
- margin= \g_ptxcd_margin_dim,
- hmargin = \dim_eval:n {
- \g_ptxcd_margin_dim +
- \bool_if:NTF \g_ptxcd_indenttext_bool
- {\g_ptxcd_titleindent_dim} {0pt}
- },
- top=\dim_eval:n {
- \box_ht:N \ptxcd_headrule_box + \box_dp:N \ptxcd_headrule_box
- + .5\c_ptxcd_logoheight_dim
- +\g_ptxcd_margin_dim}
+ margin= \g_ptxcd_margin_dim,
+ hmargin = \dim_eval:n {
+ \g_ptxcd_margin_dim +
+ \bool_if:NTF \g_ptxcd_indenttext_bool
+ {\g_ptxcd_titleindent_dim} {0pt}
+ },
+ top=\dim_eval:n {
+ \box_ht:N \ptxcd_headrule_box + \box_dp:N \ptxcd_headrule_box
+ + .5\c_ptxcd_logoheight_dim
+ +\g_ptxcd_margin_dim}
}
-
\bool_if:NTF \g_ptxcd_marginpar_bool {
- \dim_gset:Nn \g_ptxcd_marginpar_dim {\__ptxcd_logowidth:}
- \geometry{
- includemp, marginpar=\g_ptxcd_marginpar_dim, marginparsep=\g_ptxcd_columnSep_dim,
- right = \dim_eval:n {
- \g_ptxcd_margin_dim +
- \bool_if:nTF {\g_ptxcd_indenttext_bool && !\g_ptxcd_marginpar_bool}
- {\g_ptxcd_titleindent_dim} {0pt}
- },
- }
- \KOMAoptions{mpinclude}
+ \dim_gset:Nn \g_ptxcd_marginpar_dim {\__ptxcd_logowidth:}
+ \geometry{
+ includemp, marginpar=\g_ptxcd_marginpar_dim, marginparsep=\g_ptxcd_columnSep_dim,
+ right = \dim_eval:n {
+ \g_ptxcd_margin_dim +
+ \bool_if:nTF {\g_ptxcd_indenttext_bool && !\g_ptxcd_marginpar_bool}
+ {\g_ptxcd_titleindent_dim} {0pt}
+ },
+ }
+ \KOMAoptions{mpinclude}
}{
- \dim_gzero:N \g_ptxcd_marginpar_dim
- \geometry{
- nomarginpar,
- right = \dim_eval:n {
- \bool_if:NT \g_ptxcd_indenttext_bool
- {\g_ptxcd_titleindent_dim}
- + \g_ptxcd_margin_dim
- },
- }
- \KOMAoptions{mpinclude=false}
+ \dim_gzero:N \g_ptxcd_marginpar_dim
+ \geometry{
+ nomarginpar,
+ right = \dim_eval:n {
+ \bool_if:NT \g_ptxcd_indenttext_bool
+ {\g_ptxcd_titleindent_dim}
+ + \g_ptxcd_margin_dim
+ },
+ }
+ \KOMAoptions{mpinclude=false}
}
-
-
\bool_if:NT \g_ptxcd_poster_foot_bool {
- \dim_compare:nT {\g_ptxcd_footheight_dim = 0pt} {
- \dim_set:Nn \g_ptxcd_footheight_dim
- {1.5\baselineskip}
- }
- \geometry{bottom=\dim_eval:n {\g_ptxcd_footheight_dim+\footskip+\g_ptxcd_margin_dim}}
+ \dim_compare:nT {\g_ptxcd_footheight_dim = 0pt} {
+ \dim_set:Nn \g_ptxcd_footheight_dim
+ {1.5\baselineskip}
+ }
+ \geometry{bottom=\dim_eval:n {\g_ptxcd_footheight_dim+\footskip+\g_ptxcd_margin_dim}}
}
-%%%%%%%%%%%%%%%%%%%%%%
-
\dim_new:N \g_ptxcd_qrcode_dim
\dim_gset:Nn \g_ptxcd_qrcode_dim {.7\c_ptxcd_logoheight_dim}
-
\DeclareNewLayer[
- background,
- align=br,
- width=\g_ptxcd_qrcode_dim,
- height=\g_ptxcd_qrcode_dim,
- hoffset=\paperwidth-\g_ptxcd_margin_dim,
- voffset=\paperheight-\g_ptxcd_margin_dim,
- mode=picture,
- contents={%
- \tl_if_empty:NF \g_ptxcd_poster_qrcode_tl {
- \let\width\g_ptxcd_qrcode_dim
- \let\height\g_ptxcd_qrcode_dim
- \g_ptxcd_poster_qrcode_tl
- }
- }
+ background,
+ align=br,
+ width=\g_ptxcd_qrcode_dim,
+ height=\g_ptxcd_qrcode_dim,
+ hoffset=\paperwidth-\g_ptxcd_margin_dim,
+ voffset=\paperheight-\g_ptxcd_margin_dim,
+ mode=picture,
+ contents={%
+ \tl_if_empty:NF \g_ptxcd_poster_qrcode_tl {
+ \let\width\g_ptxcd_qrcode_dim
+ \let\height\g_ptxcd_qrcode_dim
+ \g_ptxcd_poster_qrcode_tl
+ }
+ }
]{TUDa.poster.qrcode}
-
-
-
\DeclareNewLayer[
- clone=TUDa.poster.qrcode,
- align=bl,
- hoffset=\g_ptxcd_margin_dim,
- width=\paperwidth-2\g_ptxcd_margin_dim,
- height=\g_ptxcd_footheight_dim,
- contents={
- \bool_if:NTF \g_ptxcd_poster_foot_bool {
- \putUL{\rule{\layerwidth}{\g_ptxcd_titlerule_dim}}
- \put(0,0) {\parbox[b][\g_ptxcd_footheight_dim][c]{\layerwidth}{\strut\g_ptxcd_poster_foot_tl\strut}}
- \putLL{\rule{\layerwidth}{\g_ptxcd_titlerule_dim}}
- }{
- \smash{\rule{\layerwidth}{\g_ptxcd_titlerule_dim}}
- }
- }
+ clone=TUDa.poster.qrcode,
+ align=bl,
+ hoffset=\g_ptxcd_margin_dim,
+ width=\paperwidth-2\g_ptxcd_margin_dim,
+ height=\g_ptxcd_footheight_dim,
+ contents={
+ \bool_if:NTF \g_ptxcd_poster_foot_bool {
+ \putUL{\rule{\layerwidth}{\g_ptxcd_titlerule_dim}}
+ \put(0,0) {\parbox[b][\g_ptxcd_footheight_dim][c]{\layerwidth}{\strut\g_ptxcd_poster_foot_tl\strut}}
+ \putLL{\rule{\layerwidth}{\g_ptxcd_titlerule_dim}}
+ }{
+ \smash{\rule{\layerwidth}{\g_ptxcd_titlerule_dim}}
+ }
+ }
]{TUDa.poster.footer}
-
\DeclareNewLayer[
- background,mode=picture,
- width=\paperwidth-2\g_ptxcd_margin_dim,
- hoffset=\g_ptxcd_margin_dim,
- voffset=\g_ptxcd_margin_dim+\box_ht:N \ptxcd_headrule_box + \box_dp:N \ptxcd_headrule_box,
- contents=\bool_if:NT \g_ptxcd_colorback_bool {\color{accentcolor}\rule{\layerwidth}{\layerheight}},
+ background,mode=picture,
+ width=\paperwidth-2\g_ptxcd_margin_dim,
+ hoffset=\g_ptxcd_margin_dim,
+ voffset=\g_ptxcd_margin_dim+\box_ht:N \ptxcd_headrule_box + \box_dp:N \ptxcd_headrule_box,
+ contents=\bool_if:NT \g_ptxcd_colorback_bool {\color{accentcolor}\rule{\layerwidth}{\layerheight}},
]{TUDa.poster.background}
-
\DeclareNewLayer[
- textarea,
- foreground,
- align=tr,
- hoffset=\paperwidth-\g_ptxcd_margin_dim,
- width=\__ptxcd_logowidth:,
- height=.5\textheight,
- contents={\box_use:N \g_ptxcd_title_info_box}
+ textarea,
+ foreground,
+ align=tr,
+ hoffset=\paperwidth-\g_ptxcd_margin_dim,
+ width=\__ptxcd_logowidth:,
+ height=.5\textheight,
+ contents={\box_use:N \g_ptxcd_title_info_box}
]{TUDa.poster.logo}
-
\DeclareNewLayer[
- clone=TUDa.poster.background,
- align=tl,
- voffset=\g_ptxcd_margin_dim,
- height=\box_ht:N \ptxcd_headrule_box + \box_dp:N \ptxcd_headrule_box,
- mode=picture,
- contents={\box_use:N \ptxcd_headrule_box}
+ clone=TUDa.poster.background,
+ align=tl,
+ voffset=\g_ptxcd_margin_dim,
+ height=\box_ht:N \ptxcd_headrule_box + \box_dp:N \ptxcd_headrule_box,
+ mode=picture,
+ contents={\box_use:N \ptxcd_headrule_box}
]{TUDa.poster.rule}
-
\DeclareNewLayer[
- clone=notecolumn.marginpar,
+ clone=notecolumn.marginpar,
]{TUDa.poster.marginpar}
-
\DeclareNewPageStyleByLayers{TUDa.poster.title}{TUDa.poster.rule,TUDa.poster.background,TUDa.poster.qrcode,TUDa.poster.footer}
\DeclareNewPageStyleByLayers{TUDa.poster}{TUDa.poster.rule,TUDa.poster.qrcode,TUDa.poster.footer, TUDa.poster.marginpar}
\pagestyle{TUDa.poster}
-
-
\dim_new:N \g_ptxcd_titlegraphic_max_height_dim
\dim_new:N \g_ptxcd_titleback_dim
-
\newcommand*{\titleinfo}[1]{\def\@titleinfo{#1}}
\titleinfo{}
-
\renewcommand*{\maketitle}{
- \begingroup
- \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
- \bool_if:NT \g_ptxcd_marginpar_bool
- {\setlength{\linewidth}{\dim_eval:n {\textwidth+\g_ptxcd_marginpar_dim + \marginparsep}}}
- \vbox_gset:Nn \g_ptxcd_title_box
- {
- \usesizeofkomafont{title}
- \parbox[t]{\linewidth}{
- \bool_if:NT \g_ptxcd_smalltitle_bool {\raisebox{
- \dim_max:nn {0pt} {1.5\c_ptxcd_logoheight_dim - \height}
- }}
- {
- \begin{minipage}[b]{\bool_if:NT \g_ptxcd_logo_inhead_bool {.75}\linewidth}
- \leavevmode\par\nointerlineskip
- \bool_if:NF \g_ptxcd_indenttext_bool {\begin{addmargin}{\g_ptxcd_titleindent_dim }}
- \usekomafont{title}
- \raggedright
- \tl_if_empty:NF \@titlehead {\usekomafont{titlehead}{\@titlehead\par}}
- \leavevmode\usekomafont{disposition}\usekomafont{title}%
- \@title\strut\par
- \bool_if:NTF \g_ptxcd_indenttext_bool {\nointerlineskip\leavevmode}{\end{addmargin}}
- \end{minipage}
- }
- \par\nointerlineskip
- \exp_args:Nf \tl_if_empty:nF {\@subtitle\@titleinfo\@subject\@author\@date\@publishers} {
- \bool_if:NT \g_ptxcd_indenttext_bool {\hspace*{-\g_ptxcd_titleindent_dim}}
- \rule{\linewidth}{\g_ptxcd_titlerule_dim}
- \par
- \nointerlineskip
- \vspace{\c_ptxcd_rulesep_dim}
- \bool_if:NTF \g_ptxcd_indenttext_bool {\begingroup}{\begin{addmargin}{\g_ptxcd_titleindent_dim }}
- \bool_if:NT \g_ptxcd_colorsubtitle_bool {\color{textonaccentcolor}}
- \clist_map_inline:nn {subtitle, titleinfo, subject, author, date, publishers}
- {\tl_if_empty:cF {@##1} {{\usekomafont{##1}\use:c {@##1}\par}}}
- \nointerlineskip
- \bool_if:NTF \g_ptxcd_indenttext_bool {\endgroup} {\end{addmargin}}
- \vspace{\c_ptxcd_rulesep_dim}
- \par\nointerlineskip
- \bool_if:NT \g_ptxcd_indenttext_bool {\hspace*{-\g_ptxcd_titleindent_dim}}
- \tl_if_empty:NF \@thanks {
- \bool_if:NT \g_ptxcd_indenttext_bool {\hspace*{-\g_ptxcd_titleindent_dim}}\rule{\linewidth}{\g_ptxcd_titlerule_dim}
- \vspace{\c_ptxcd_rulesep_dim}
- \par\nointerlineskip
- \expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont
- \bool_if:NTF \g_ptxcd_indenttext_bool {\begingroup}{\begin{addmargin}{\g_ptxcd_titleindent_dim }}
- \let\footnotetext\ptxcd_title@footnote
- \@thanks
- \vspace{\c_ptxcd_rulesep_dim}
- \bool_if:NTF \g_ptxcd_indenttext_bool {\endgroup} {\end{addmargin}}
- \global\let\@thanks\@empty
- \par
- }
- }
- \nointerlineskip
- \rule{\linewidth}{\g_ptxcd_titlerule_dim}
- }
- }
- \endgroup
-
- \ptxcd_Setup_Title_box:
- \dim_gset:Nn \g_ptxcd_titleback_dim {
- \bool_if:NT \g_ptxcd_colorsubtitle_bool {\box_dp:N \g_ptxcd_title_box}+
- \box_ht:N \g_ptxcd_title_box+.5\c_ptxcd_logoheight_dim
- }
-
- \ModifyLayer[
- height=\g_ptxcd_titleback_dim
- ]{TUDa.poster.background}
-
- \bool_if:NF \g_ptxcd_logo_inhead_bool {
- \ModifyLayer[
- addvoffset=
- \bool_if:NF \g_ptxcd_colorsubtitle_bool {\box_dp:N \g_ptxcd_title_box}+\g_ptxcd_titleback_dim+\c_ptxcd_smallrule_dim
- ]{TUDa.poster.logo}
- }
- \leavevmode\box_use:N \g_ptxcd_title_box\par
- \dim_set:Nn \g_ptxcd_titlegraphic_max_height_dim {\textheight-\pagetotal}
- \bool_if:NTF \g_ptxcd_logo_inhead_bool {
- \dim_compare:nT {\box_ht:N \g_ptxcd_title_info_box+ \box_dp:N \g_ptxcd_title_info_box > \box_ht:N \g_ptxcd_title_box}
- {\msg_warning:nn{tudaposter} {infobox-too-high}}
- } {
- \dim_compare:nT {\box_ht:N \g_ptxcd_title_info_box+ \box_dp:N \g_ptxcd_title_info_box > \box_ht:N \g_ptxcd_titlegraphic_box + \box_dp:N \g_ptxcd_titlegraphic_box}
- {\msg_warning:nn{tudaposter} {infobox-too-high}}
- }
- \global\def\contentheight{\g_ptxcd_titlegraphic_max_height_dim}
- \tl_if_empty:NF \@titlegraphic{
- \vbox_gset:Nn \g_ptxcd_titlegraphic_box {\parbox[t]{\dim_eval:n {\paperwidth-2\g_ptxcd_margin_dim}}{\@titlegraphic}}
- \par\nointerlineskip
- \box_use:N \g_ptxcd_titlegraphic_box
- }
-
- \DeclareLayer[
- clone=TUDa.poster.marginpar,
- height=\bool_if:NF \l_ptxcd_marginpar_overlap_bool {-\box_ht:N \g_ptxcd_titlegraphic_box-\box_dp:N \g_ptxcd_titlegraphic_box}
- +\textheight-\box_ht:N \g_ptxcd_title_box-\box_dp:N \g_ptxcd_title_box-.5\c_ptxcd_logoheight_dim,
- addvoffset=\bool_if:NF \l_ptxcd_marginpar_overlap_bool {+\box_ht:N\g_ptxcd_titlegraphic_box+\box_dp:N \g_ptxcd_titlegraphic_box}
- +\box_ht:N \g_ptxcd_title_box+\box_dp:N \g_ptxcd_title_box+.5\c_ptxcd_logoheight_dim,
- ]{TUDa.poster.marginpar.title}
-
- \tl_if_empty:NF \g_ptxcd_poster_qrcode_tl {
- \ModifyLayer[addwidth=-\g_ptxcd_qrcode_dim-\c_ptxcd_rulesep_dim]{TUDa.poster.footer}
- }
-
- \AddLayersToPageStyle{TUDa.poster.title}{TUDa.poster.marginpar.title}
- \AddLayersToPageStyle{TUDa.poster.title}{TUDa.poster.logo}
- \thispagestyle{TUDa.poster.title}
- \global\def\contentwidth{\linewidth}
- \par
- \let\@title\@empty
- \let\@subtitle\@empty
- \let\@titleinfo\@empty
+ \begingroup
+ \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
+ \bool_if:NT \g_ptxcd_marginpar_bool
+ {\setlength{\linewidth}{\dim_eval:n {\textwidth+\g_ptxcd_marginpar_dim + \marginparsep}}}
+ \vbox_gset:Nn \g_ptxcd_title_box
+ {
+ \usesizeofkomafont{title}
+ \parbox[t]{\linewidth}{
+ \bool_if:NT \g_ptxcd_smalltitle_bool {\raisebox{
+ \dim_max:nn {0pt} {1.5\c_ptxcd_logoheight_dim - \height}
+ }}
+ {
+ \begin{minipage}[b]{\bool_if:NT \g__ptxcd_logo_head_bool {.75}\linewidth}
+ \leavevmode\par\nointerlineskip
+ \bool_if:NF \g_ptxcd_indenttext_bool {\begin{addmargin}{\g_ptxcd_titleindent_dim }}
+ \usekomafont{title}
+ \raggedright
+ \tl_if_empty:NF \@titlehead {\usekomafont{titlehead}{\@titlehead\par}}
+ \leavevmode\usekomafont{disposition}\usekomafont{title}%
+ \@title\strut\par
+ \bool_if:NTF \g_ptxcd_indenttext_bool {\nointerlineskip\leavevmode}{\end{addmargin}}
+ \end{minipage}
+ }
+ \par\nointerlineskip
+ \exp_args:Nf \tl_if_empty:nF {\@subtitle\@titleinfo\@subject\@author\@date\@publishers} {
+ \bool_if:NT \g_ptxcd_indenttext_bool {\hspace*{-\g_ptxcd_titleindent_dim}}
+ \rule{\linewidth}{\g_ptxcd_titlerule_dim}
+ \par
+ \nointerlineskip
+ \vspace{\c_ptxcd_rulesep_dim}
+ \bool_if:NTF \g_ptxcd_indenttext_bool {\begingroup}{\begin{addmargin}{\g_ptxcd_titleindent_dim }}
+ \bool_if:NT \g_ptxcd_colorsubtitle_bool {\color{textonaccentcolor}}
+ \clist_map_inline:nn {subtitle, titleinfo, subject, author, date, publishers}
+ {\tl_if_empty:cF {@##1} {{\usekomafont{##1}\use:c {@##1}\par}}}
+ \nointerlineskip
+ \bool_if:NTF \g_ptxcd_indenttext_bool {\endgroup} {\end{addmargin}}
+ \vspace{\c_ptxcd_rulesep_dim}
+ \par\nointerlineskip
+ \bool_if:NT \g_ptxcd_indenttext_bool {\hspace*{-\g_ptxcd_titleindent_dim}}
+ \tl_if_empty:NF \@thanks {
+ \bool_if:NT \g_ptxcd_indenttext_bool {\hspace*{-\g_ptxcd_titleindent_dim}}\rule{\linewidth}{\g_ptxcd_titlerule_dim}
+ \vspace{\c_ptxcd_rulesep_dim}
+ \par\nointerlineskip
+ \expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont
+ \bool_if:NTF \g_ptxcd_indenttext_bool {\begingroup}{\begin{addmargin}{\g_ptxcd_titleindent_dim }}
+ \let\footnotetext\ptxcd_title@footnote
+ \@thanks
+ \vspace{\c_ptxcd_rulesep_dim}
+ \bool_if:NTF \g_ptxcd_indenttext_bool {\endgroup} {\end{addmargin}}
+ \global\let\@thanks\@empty
+ \par
+ }
+ }
+ \nointerlineskip
+ \rule{\linewidth}{\g_ptxcd_titlerule_dim}
+ }
+ }
+ \endgroup
+ \ptxcd_Setup_Title_box:
+ \dim_gset:Nn \g_ptxcd_titleback_dim {
+ \bool_if:NT \g_ptxcd_colorsubtitle_bool {\box_dp:N \g_ptxcd_title_box}+
+ \box_ht:N \g_ptxcd_title_box+.5\c_ptxcd_logoheight_dim
+ }
+ \ModifyLayer[
+ height=\g_ptxcd_titleback_dim
+ ]{TUDa.poster.background}
+ \bool_if:NF \g__ptxcd_logo_head_bool {
+ \ModifyLayer[
+ addvoffset=
+ \bool_if:NF \g_ptxcd_colorsubtitle_bool {\box_dp:N \g_ptxcd_title_box}+\g_ptxcd_titleback_dim+\c_ptxcd_smallrule_dim
+ ]{TUDa.poster.logo}
+ }
+ \leavevmode\box_use:N \g_ptxcd_title_box\par
+ \dim_set:Nn \g_ptxcd_titlegraphic_max_height_dim {\textheight-\pagetotal}
+ \bool_if:NTF \g__ptxcd_logo_head_bool {
+ \dim_compare:nT {\box_ht:N \g_ptxcd_title_info_box+ \box_dp:N \g_ptxcd_title_info_box > \box_ht:N \g_ptxcd_title_box}
+ {\msg_warning:nn{tudaposter} {infobox-too-high}}
+ } {
+ \dim_compare:nT {\box_ht:N \g_ptxcd_title_info_box+ \box_dp:N \g_ptxcd_title_info_box > \box_ht:N \g_ptxcd_titlegraphic_box + \box_dp:N \g_ptxcd_titlegraphic_box}
+ {\msg_warning:nn{tudaposter} {infobox-too-high}}
+ }
+ \global\def\contentheight{\g_ptxcd_titlegraphic_max_height_dim}
+ \tl_if_empty:NF \@titlegraphic{
+ \vbox_gset:Nn \g_ptxcd_titlegraphic_box {\parbox[t]{\dim_eval:n {\paperwidth-2\g_ptxcd_margin_dim}}{\@titlegraphic}}
+ \par\nointerlineskip
+ \box_use:N \g_ptxcd_titlegraphic_box
+ }
+ \DeclareLayer[
+ clone=TUDa.poster.marginpar,
+ height=\bool_if:NF \l_ptxcd_marginpar_overlap_bool {-\box_ht:N \g_ptxcd_titlegraphic_box-\box_dp:N \g_ptxcd_titlegraphic_box}
+ +\textheight-\box_ht:N \g_ptxcd_title_box-\box_dp:N \g_ptxcd_title_box-.5\c_ptxcd_logoheight_dim,
+ addvoffset=\bool_if:NF \l_ptxcd_marginpar_overlap_bool {+\box_ht:N\g_ptxcd_titlegraphic_box+\box_dp:N \g_ptxcd_titlegraphic_box}
+ +\box_ht:N \g_ptxcd_title_box+\box_dp:N \g_ptxcd_title_box+.5\c_ptxcd_logoheight_dim,
+ ]{TUDa.poster.marginpar.title}
+ \tl_if_empty:NF \g_ptxcd_poster_qrcode_tl {
+ \ModifyLayer[addwidth=-\g_ptxcd_qrcode_dim-\c_ptxcd_rulesep_dim]{TUDa.poster.footer}
+ }
+ \AddLayersToPageStyle{TUDa.poster.title}{TUDa.poster.marginpar.title}
+ \AddLayersToPageStyle{TUDa.poster.title}{TUDa.poster.logo}
+ \thispagestyle{TUDa.poster.title}
+ \global\def\contentwidth{\linewidth}
+ \par
+ \let\@title\@empty
+ \let\@subtitle\@empty
+ \let\@titleinfo\@empty
}
-
-
\def\@titlegraphic{}
\newcommand{\titlegraphic}[1]{
- \def\@titlegraphic{#1}
+\def\@titlegraphic{#1}
}
-\box_new:N \g_ptxcd_titlegraphic_box
+\box_new:N \g_ptxcd_titlegraphic_box
\seq_new:N \g_ptxcd_title_info_seq
-
-\seq_gput_right:Nn \g_ptxcd_title_info_seq {
- \rlap{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}
-}
-
+\seq_gput_right:Nn \g_ptxcd_title_info_seq {\rlap{\__ptxcd_insert_logo:}}
\box_new:N \g_ptxcd_title_info_box
\box_new:N \g_ptxcd_title_box
-
\cs_new:Nn \ptxcd_make_title_info_box:n {
- \usekomafont{titleinfo}
- \setlength{\fboxsep}{.2\baselineskip}
- \colorbox{InfoBox}{\hspace*{\dimexpr.2\c_ptxcd_logoheight_dim-\fboxsep}%
- \parbox{2\c_ptxcd_logoheight_dim}{
- \raggedright
- #1
- }}
+ \usekomafont{titleinfo}
+ \setlength{\fboxsep}{.2\baselineskip}
+ \colorbox{InfoBox}{\hspace*{\dimexpr.2\c_ptxcd_logoheight_dim-\fboxsep}%
+ \parbox{2\c_ptxcd_logoheight_dim}{
+ \raggedright
+ #1
+ }}
}
-
\cs_new:Nn \ptxcd_make_title_logo_box:n {
- \setlength{\fboxsep}{\z@}%
- \parbox{\__ptxcd_logowidth:}{
- \colorbox{InfoBox}{
- \rlap{
- \makebox[\dim_eval:n {\_ptxcd_logowidth: + \_ptxcd_logowsep:}][r]{
- \colorbox{InfoBox}{#1\hspace{\__ptxcd_logosep:}}
- }
- }
- }
- }
+ \setlength{\fboxsep}{\z@}%
+ \parbox{\__ptxcd_logowidth:}{
+ \colorbox{InfoBox}{
+ \rlap{
+ \makebox[\dim_eval:n {\_ptxcd_logowidth: + \_ptxcd_logowsep:}][r]{
+ \colorbox{InfoBox}{#1\hspace{\__ptxcd_logosep:}}
+ }
+ }
+ }
+ }
}
-
-
\newcommand{\addTitleBox}[1]{\seq_gput_right:Nn \g_ptxcd_title_info_seq {\ptxcd_make_title_info_box:n {#1}}}
-
\NewDocumentCommand{\addTitleBoxLogo}{sm}{
- \IfBooleanTF{#1}{
- \seq_gput_right:Nn \g_ptxcd_title_info_seq {
- \ptxcd_make_title_logo_box:n {#2}
- }
- }{
- \seq_gput_right:Nn \g_ptxcd_title_info_seq {
- \ptxcd_make_title_logo_box:n {
- \hbox_set:Nn \l_tmpa_box {
- \includegraphics[width=1.5\c_ptxcd_logoheight_dim]{#2}
- }
- \dim_set:Nn \l_tmpa_dim {2\c_ptxcd_logoheight_dim/3}
- \dim_compare:nTF {\box_ht:N \l_tmpa_box > \l_tmpa_dim}
- {\includegraphics[width=\l_tmpa_dim]{#2}}
- {\box_use:N \l_tmpa_box}
- }
- }
- }
+ \IfBooleanTF{#1}{
+ \seq_gput_right:Nn \g_ptxcd_title_info_seq {
+ \ptxcd_make_title_logo_box:n {#2}
+ }
+ }{
+ \seq_gput_right:Nn \g_ptxcd_title_info_seq {
+ \ptxcd_make_title_logo_box:n {
+ \hbox_set:Nn \l_tmpa_box {
+ \includegraphics[width=1.5\c_ptxcd_logoheight_dim]{#2}
+ }
+ \dim_set:Nn \l_tmpa_dim {2\c_ptxcd_logoheight_dim/3}
+ \dim_compare:nTF {\box_ht:N \l_tmpa_box > \l_tmpa_dim}
+ {\includegraphics[width=\l_tmpa_dim]{#2}}
+ {\box_use:N \l_tmpa_box}
+ }
+ }
+ }
}
-
\cs_new:Nn \ptxcd_Setup_Title_box: {
- \hbox_gset:Nn \g_ptxcd_title_info_box
- {\parbox{\__ptxcd_logowidth:}{
- \seq_use:Nn \g_ptxcd_title_info_seq {\par\nointerlineskip\skip_vertical:n
- {
- \box_ht:N \ptxcd_headrule_box + \box_dp:N \ptxcd_headrule_box
- }
- }
- }}
+ \hbox_gset:Nn \g_ptxcd_title_info_box
+ {\parbox{\__ptxcd_logowidth:}{
+ \seq_use:Nn \g_ptxcd_title_info_seq {\par\nointerlineskip\skip_vertical:n
+ {
+ \box_ht:N \ptxcd_headrule_box + \box_dp:N \ptxcd_headrule_box
+ }
+ }
+ }}
}
-
-
\tl_new:N \g_ptxcd_poster_foot_tl
\newcommand{\footer}[1]{
- \tl_gset:Nn \g_ptxcd_poster_foot_tl {#1}
+ \tl_gset:Nn \g_ptxcd_poster_foot_tl {#1}
}
-
\tl_new:N \g_ptxcd_poster_qrcode_tl
\newcommand*{\footerqrcode}[1]{
- \tl_gset:Nn \g_ptxcd_poster_qrcode_tl
- {\raisebox{\depth}{\qrcode[height={\g_ptxcd_qrcode_dim}]{#1}}}
+ \tl_gset:Nn \g_ptxcd_poster_qrcode_tl
+ {\raisebox{\depth}{\qrcode[height={\g_ptxcd_qrcode_dim}]{#1}}}
}
-
\newcommand*{\footerqrcodeimg}[1]{\tl_gset:Nn \g_ptxcd_poster_qrcode_tl {#1}}
-
-
\RedeclareSectionCommand[afterskip=1ex plus .2ex]{section}
\RedeclareSectionCommand[afterskip=.2ex plus .2ex]{subsection}
-
\msg_new:nnn{tudaposter} {infobox-too-high} {
- The~height~of~your~Infobox~exeeds~the~space~reserved~in~the~title~block.\\
- You~should~probably~switch~to~logo=bottom~or~reduce~the~number/size~of~InfoBoxes.
+ The~height~of~your~Infobox~exeeds~the~space~reserved~in~the~title~block.\\
+ You~should~probably~switch~to~logo=bottom~or~reduce~the~number/size~of~InfoBoxes.
}
-
\keys_define:nn {ptxcd/poster/marginparopts}{
- valign .tl_set:N = \l_ptxcd_marginpar_valign_tl,
- valign .initial:n = t,
- overlap .bool_set:N = \l_ptxcd_marginpar_overlap_bool,
- overlap .initial:n = false,
- overlap .default:n = true
+ valign .tl_set:N = \l_ptxcd_marginpar_valign_tl,
+ valign .initial:n = t,
+ overlap .bool_set:N = \l_ptxcd_marginpar_overlap_bool,
+ overlap .initial:n = false,
+ overlap .default:n = true
}
-
-
-
-
\newcommand*{\infofont}{\accentfont\normalcolor\footnotesize}
\DeclareTextFontCommand{\infotext}{\infofont}
-
\int_new:N \g_ptxcd_marginpar_int
-
\NewDocumentCommand{\SetMarginpar}{o+m}{
- \bool_if:NF \g_ptxcd_marginpar_bool {\msg_warning:nn {ptxcd/Poster} {marginpar-disabled}}
- \IfNoValueF{#1}{\keys_set:nn {ptxcd/poster/marginparopts} {#1}}
- \ModifyLayer[addvoffset={-\ht\strutbox},contents={\parbox[t][\layerheight][\l_ptxcd_marginpar_valign_tl]{\layerwidth}{#2\strut}}]{TUDa.poster.marginpar}
- \bool_set_true:N \l_tmpa_bool
+ \bool_if:NF \g_ptxcd_marginpar_bool {\msg_warning:nn {ptxcd/Poster} {marginpar-disabled}}
+ \IfNoValueF{#1}{\keys_set:nn {ptxcd/poster/marginparopts} {#1}}
+ \ModifyLayer[addvoffset={-\ht\strutbox},contents={\parbox[t][\layerheight][\l_ptxcd_marginpar_valign_tl]{\layerwidth}{#2\strut}}]{TUDa.poster.marginpar}
+ \bool_set_true:N \l_tmpa_bool
}
-
\msg_new:nnnn {ptxcd/Poster} {marginpar-disabled} {
- You~are~adding~data~to~the~marginpar~box,~though~marginpar option is set to false.\\
- I~will~add~it,~but~cannot~ensure~the~position.
+ You~are~adding~data~to~the~marginpar~box,~though~marginpar option is set to false.\\
+ I~will~add~it,~but~cannot~ensure~the~position.
} {
- I'd~suggest~to~switch~the~marginpar~option~to~true.
- See~the~TUDa-CI~documentation~for~further~information.
+ I'd~suggest~to~switch~the~marginpar~option~to~true.
+ See~the~TUDa-CI~documentation~for~further~information.
}
\global\def\contentwidth{\linewidth}
\global\def\contentheight{\g_ptxcd_titlegraphic_max_height_dim}
-
-%author setup
-
\seq_new:N \g_ptxcd_author_seq
-
\renewcommand*\author[1]{
- \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#1}
+ \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#1}
}
-
\msg_new:nnn{tudapub} {unknown-language} {
- You~selected~an~unknown~language~#1.\\
- The~Variable~#2~does~not~have~a~predefined~value.\\
- Ensure~to~redefine~#2~to~match~your~language.\\
- Otherwise~the~ngerman~vaue~#3~will~be~used.
+ You~selected~an~unknown~language~#1.\\
+ The~Variable~#2~does~not~have~a~predefined~value.\\
+ Ensure~to~redefine~#2~to~match~your~language.\\
+ Otherwise~the~ngerman~vaue~#3~will~be~used.
}
-
\cs_new:Nn \ptxcd_define_captionFallback:Nn {
- \providecommand*#1{
- \msg_warning:nnxxx{tudapub} {unknown-language}
- {\languagename} {\exp_not:N #1} {#2}
- \def#1{#2}
- }
+ \providecommand*#1{
+ \msg_warning:nnxxx{tudapub} {unknown-language}
+ {\languagename} {\exp_not:N #1} {#2}
+ \def#1{#2}
+ }
}
-
\cs_new:Nn \ptxcd_declare_caption:Nnnn {
- \ptxcd_define_captionFallback:Nn #1 {#2}
- \defcaptionname{ngerman, german}{#1}{#2}
- \defcaptionname{english, USenglish, american}{#1}{#3}
- \defcaptionname{UKenglish, british}{#1}{#4}
+ \ptxcd_define_captionFallback:Nn #1 {#2}
+ \defcaptionname{ngerman, german}{#1}{#2}
+ \defcaptionname{english, USenglish, american}{#1}{#3}
+ \defcaptionname{UKenglish, british}{#1}{#4}
}
-
\cs_new:Nn \ptxcd_declare_caption:Nnn {
- \ptxcd_declare_caption:Nnnn #1 {#2} {#3} {#3}
+ \ptxcd_declare_caption:Nnnn #1 {#2} {#3} {#3}
}
-
\renewcommand*{\@author}{
- \begingroup
- \hyphenpenalty=100000
- \seq_use:Nnnn \g_ptxcd_author_seq {~\authorandname{}~} {,~} {~\&~}
- \endgroup
+ \begingroup
+ \hyphenpenalty=100000
+ \seq_use:Nnnn \g_ptxcd_author_seq {~\authorandname{}~} {,~} {~\&~}
+ \endgroup
}
-
\ptxcd_declare_caption:Nnn \authorandname {und} {and}
-
\newcommand*{\ptxcd_title@footnote}[2][1]{
- \textsuperscript{#1}#2
+ \textsuperscript{#1}#2
}
-
\file_if_exist_input:n {\g__ptxcd_config_prefix_tl\g_ptxcd_department_str.cfg}
-
-
\endinput
+%%
+%% End of file `tudaposter.cls'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudapub.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudapub.cls
index 976d2a943ca..274c5e0465c 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudapub.cls
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudapub.cls
@@ -1,10 +1,18 @@
-%% This is file `tudapub.cls' version 3.41 (2024-07-02),
+%%
+%% This is file `tudapub.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tuda-ci.dtx (with options: `class,tudapub,pdfa,options')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,29 +21,23 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\def\fileversion{3.41}
-\def\filedate{2024-07-02}
-\NeedsTeXFormat{LaTeX2e}
-
-\ProvidesExplClass{tudapub}
- {\filedate}{\fileversion}{Publications using TU Darmstadt's Corporate Design (TUDa-CI)}
+%%
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
+\ProvidesExplClass{tudapub}{2025-01-26}{4.00}{Publications using TU Darmstadt's Corporate Design (TUDa-CI)}
\RequirePackage{URspecialopts}
-
\Define@specialopt@Module[ptxcd/pub]
-
\str_const:Nn \c__ptxcd_base_str {pub}
\tl_new:N \g_ptxcd_pub_class_tl
\tl_new:N \g_ptxcd_thesis_options_tl
@@ -48,564 +50,563 @@
\int_new:N \g_ptxcd_ruledheaders_int
\int_new:N \g_ptxcd_paper_int
\msg_new:nnn {tudapub} {compatibility-only} {
- You~used~the~outdated~#1~option.\\
- This~option~has~been~removed~with~tuda-ci~version~3.08.\\
- See~documentation~for~the~updated~implementation.
+ You~used~the~outdated~#1~option.\\
+ This~option~has~been~removed~with~tuda-ci~version~3.08.\\
+ See~documentation~for~the~updated~implementation.
}
\bool_new:N \g_ptxcd_geometry_bool
\bool_new:N \g_ptxcd_custommargins_bool
-\bool_new:N \g_ptxcd_colorbacktitle_bool
-\bool_new:N \g_ptxcd_colorbacksubtitle_bool
\keys_define:nn {ptxcd/pub} {
- %twoside -> geometry + class
- class .choice:,
- class/report .meta:n = {class=scrreprt},
- class/scrreprt .code:n = \tl_gset:Nn \g_ptxcd_pub_class_tl {scrreprt},
- class/article .meta:n = {class=scrartcl},
- class/scrartcl .code:n = \tl_gset:Nn \g_ptxcd_pub_class_tl {scrartcl},
- class/book .meta:n = {class=scrbook},
- class/scrbook .code:n = \tl_gset:Nn \g_ptxcd_pub_class_tl {scrbook},
- class .initial:n = scrartcl,
- color .meta:n = {accentcolor=#1},
- accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}},
- textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}},
- identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}},
- marginpar .tl_gset:N = \g_ptxcd_marginpar_tl,
- marginpar .default:n = auto,
- marginpar .initial:n = auto,
- custommargins .choice:,
- custommargins / true .code:n ={
- \bool_gset_true:N \g_ptxcd_custommargins_bool
- \bool_gset_false:N \g_ptxcd_geometry_bool
- },
- custommargins / false .code:n ={
- \bool_gset_false:N \g_ptxcd_custommargins_bool
- \bool_gset_true:N \g_ptxcd_geometry_bool
- },
- custommargins / geometry .code:n = {
- \bool_gset_true:N \g_ptxcd_custommargins_bool
- \bool_gset_true:N \g_ptxcd_geometry_bool
- },
- custommargins .initial:n = false,
- custommargins .default:n = true,
- fontsize .code:n = \prop_gput:Nnn \g_ptxcd_clsopts_prop {fontsize} {#1},
- fontsize .initial:n = {9pt},
- ruledheaders .choices:nn = {false, none, chapter, section, true, all}{
- \int_gset:Nn \g_ptxcd_ruledheaders_int {\l_keys_choice_int}
- },
- ruledheaders .initial:n = all,
- type .choices:nn = {publication, thesis} {\tl_gset_eq:NN \g_ptxcd_pubType_tl \l_keys_choice_tl},
- type / intern .code:n = {\keys_set:nn {ptxcd/pub} {titlepage=false, pdfa=false, IMRAD=false}},
- type .initial:n = publication,
- unknown .code:n = {\prop_gput:NVn \g_ptxcd_unknown_clsopts_prop \l_keys_key_tl {#1}},
- headline .choice:,
- headline / true .code:n = \bool_gset_true:N \g_ptxcd_headline_bool,
- headline / false .code:n = \bool_gset_false:N \g_ptxcd_headline_bool,
- headline / automark .code:n = {\bool_gset_true:N \g_ptxcd_headline_bool \PassOptionsToPackage{automark}{scrlayer-scrpage}},
- automark .meta:n = {headline=automark},
- headline .initial:n =false,
- colorback .bool_gset:N = \g_ptxcd_colorback_bool,
- colorback .initial:n = true,
- colorback / title .code:n =
- \bool_gset_true:N \g_ptxcd_colorbacktitle_bool
- \bool_gset_true:N \g_ptxcd_colorback_bool
- \bool_gset_false:N \g_ptxcd_colorbacksubtitle_bool,
- colorback / body .code:n =
- \bool_gset_false:N \g_ptxcd_colorbacktitle_bool
- \bool_gset_false:N \g_ptxcd_colorbacksubtitle_bool
- \bool_gset_true:N \g_ptxcd_colorback_bool,
- colorback / head .code:n =
- \bool_gset_true:N \g_ptxcd_colorbacktitle_bool
- \bool_gset_true:N \g_ptxcd_colorback_bool
- \bool_gset_true:N \g_ptxcd_colorbacksubtitle_bool,
- colortitleback .code:n = \msg_error:nnx {tudapub} {compatibility-only} {\l_keys_key_tl},
- pdfa .bool_gset:N = \g_ptxcd_pdfa_bool,
- pdfa .initial:n = true,
- pdfx .bool_gset:N = \g_ptxcd_pdfx_bool,
- pdfx .initial:n = true,
- twocolumn .bool_gset:N = \g_ptxcd_twocolumn_bool,
- twocolumn .default:n = true,
- twocolumn .initial:n = false,
- BCOR .code:n = \PassOptionsToPackage{bindingoffset=#1}{geometry},
- bindingoffset .meta:n = {BCOR=#1},
- captions .code:n = {\prop_gput:Nnx \g_ptxcd_clsopts_prop {captions} {
- \use:n {\prop_item:Nn \g_ptxcd_clsopts_prop {captions}}, #1}
- },
- abstract .code:n = \prop_gput:Nnn \g_ptxcd_unknown_clsopts_prop {abstract} {#1},
- abstract .initial:n =true,
- logo .choice:,
- logo / head .code:n = {
- \bool_gset_true:N \g__ptxcd_LogoInHead_bool
- \bool_gset_true:N \g_ptxcd_colorbacktitle_bool
- },
- logo / body .code:n = {
- \bool_gset_false:N \g__ptxcd_LogoInHead_bool
- \bool_gset_false:N \g_ptxcd_colorbacktitle_bool
- },
- logo / top .meta:n = {logo=head},
- logo / bottom .code:n = {\bool_gset_false:N \g__ptxcd_LogoInHead_bool},
- logo .initial:n = {body},
- paper .choices:nn = {a0,a1,a2,a3,a4,a5,a6}{
- \int_gset_eq:NN \g_ptxcd_paper_int \l_keys_choice_int
- \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{tudarules}
- \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{typearea}
- \exp_args:Nx \PassOptionsToPackage{\l_keys_choice_tl paper}{geometry}
- },
- paper .initial:n = a4,
- IMRAD .bool_gset:N = \g_ptxcd_IMRAD_bool,
- IMRAD .initial:n = true,
- IMRAD .default:n = true,
- instbox .code:n = {\tl_gput_right:Nn \g_ptxcd_thesis_options_tl {,instbox=#1}},
- noinstbox .code:n = {\tl_gput_right:Nn \g_ptxcd_thesis_options_tl {,noinstbox=#1}},
- logofile .tl_gset:N = \g_ptxcd_logofile_tl,
- logofile .initial:n = tuda_logo,
- title .choice:,
- title / default .meta:n = {title=large},
- title / large .code:n = \bool_gset_false:N \g_ptxcd_smalltitle_bool,
- title / small .code:n = \bool_gset_true:N \g_ptxcd_smalltitle_bool,
- title .initial:n = default,
- department .choice:,
- department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
- department / mecheng .code:n = {
- \str_gset:Nn \g_ptxcd_department_str {mecheng}
- \keys_set:nn {ptxcd/pub}{colorback=false,ruledheaders=section,departmentlogofile=tuda_maschinenbau_logo}
- },
- department .initial:n = default,
- department / unknown .code:n = {
- \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
- },
- departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl,
- departmentconfigprefix .initial:n = tuda,
- mecheng .meta:n = {department=mecheng},
- departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl,
- departmentlogofile .initial:n =,
- BCORtitlepage .bool_gset:N = \g_ptxcd_BCOR_titlepage_bool,
- BCORtitlepage .initial:n = false,
- BCORtitlepage .default:n = true,
-}
-%
-%%special option handling grouped values
+ logofile .tl_gset:N = \g_ptxcd_logofile_tl,
+ logofile .initial:n = tuda_logo,
+ accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool,
+ accept-missing-logos .initial:n = false,
+ accept-missing-logos .usage:n = load,
+ accept-missing-logos .default:n = true,
+ department .choice:,
+ department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
+ department / mecheng .code:n = {
+ \str_gset:Nn \g_ptxcd_department_str {mecheng}
+ \exp_args:Ne \keys_set:ne {
+
+ ptxcd / \c__ptxcd_base_str
+ }{
+ colorback=false,
+ ruledheaders=section,
+ departmentlogofile=tuda_maschinenbau_logo,
+ }
+ },
+
+ department .initial:n = default,
+ department / unknown .code:n = {
+ \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
+ },
+ departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl,
+ departmentconfigprefix .initial:n = tuda,
+ departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl,
+ departmentlogofile .initial:n =,
+ mecheng .meta:n = {department=mecheng},
+ pdfa .bool_gset:N = \g_ptxcd_pdfa_bool,
+ pdfa .initial:n =
+ true,
+ pdfx .bool_gset:N = \g_ptxcd_pdfx_bool,
+ pdfx .initial:n = true,
+ logo .choice:,
+ logo / head .code:n = {
+ \bool_gset_true:N \g__ptxcd_logo_head_bool
+ \bool_gset_true:N \g_ptxcd_colorbacktitle_bool
+ },
+ logo / body .code:n = {
+ \bool_gset_false:N \g__ptxcd_logo_head_bool
+ \bool_gset_false:N \g_ptxcd_colorbacktitle_bool
+ },
+ logo / top .meta:n = {logo=head},
+ logo / bottom .code:n = {\bool_gset_false:N \g__ptxcd_logo_head_bool},
+ logo .initial:n = {body},
+%% color options
+ class .choice:,
+ class/report .meta:n = {class=scrreprt},
+ class/scrreprt .code:n = \tl_gset:Nn \g_ptxcd_pub_class_tl {scrreprt},
+ class/article .meta:n = {class=scrartcl},
+ class/scrartcl .code:n = \tl_gset:Nn \g_ptxcd_pub_class_tl {scrartcl},
+ class/book .meta:n = {class=scrbook},
+ class/scrbook .code:n = \tl_gset:Nn \g_ptxcd_pub_class_tl {scrbook},
+ class .initial:n = scrartcl,
+%% color options
+ color .meta:n = {accentcolor=#1},
+ accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}},
+ textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}},
+ identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}},
+ colorback .bool_gset:N = \g_ptxcd_colorback_bool,
+ colorback .default:n = true,
+ colorback .initial:n = true,
+ colorbacktitle .bool_gset:N = \g_ptxcd_colorbacktitle_bool,
+ colorbacktitle .initial:n = false,
+ colorbacktitle .default:n = true,
+ colorbacksubtitle .bool_set:N = \g_ptxcd_colorbacksubtitle_bool,
+ colorbacksubtitle .initial:n = false,
+ colorbacksubtitle .default:n = true,
+ colorback / title .code:n =
+ \bool_gset_true:N \g_ptxcd_colorbacktitle_bool
+ \bool_gset_true:N \g_ptxcd_colorback_bool
+ \bool_gset_false:N \g_ptxcd_colorbacksubtitle_bool,
+ colorback / body .code:n =
+ \bool_gset_false:N \g_ptxcd_colorbacktitle_bool
+ \bool_gset_false:N \g_ptxcd_colorbacksubtitle_bool
+ \bool_gset_true:N \g_ptxcd_colorback_bool,
+ colorback / head .code:n =
+ \bool_gset_true:N \g_ptxcd_colorbacktitle_bool
+ \bool_gset_true:N \g_ptxcd_colorback_bool
+ \bool_gset_true:N \g_ptxcd_colorbacksubtitle_bool,
+ colortitleback .code:n = \msg_error:nnx {tudapub} {compatibility-only} {\l_keys_key_tl},
+ marginpar
+ .tl_gset:N = \g_ptxcd_marginpar_tl,
+ marginpar .default:n = auto,
+ marginpar .initial:n = auto,
+ custommargins .choice:,
+ custommargins / true .code:n ={
+ \bool_gset_true:N \g_ptxcd_custommargins_bool
+ \bool_gset_false:N \g_ptxcd_geometry_bool
+ },
+ custommargins / false .code:n ={
+ \bool_gset_false:N \g_ptxcd_custommargins_bool
+ \bool_gset_true:N \g_ptxcd_geometry_bool
+ },
+ custommargins / geometry .code:n = {
+ \bool_gset_true:N \g_ptxcd_custommargins_bool
+ \bool_gset_true:N \g_ptxcd_geometry_bool
+ },
+ custommargins .initial:n = false,
+ custommargins .default:n = true,
+ fontsize .code:n = \prop_gput:Nnn \g_ptxcd_clsopts_prop {fontsize} {#1},
+ fontsize .initial:n =
+ {9pt},
+ ruledheaders .choices:nn = {false, none, chapter, section, true, all}{
+ \int_gset:Nn \g_ptxcd_ruledheaders_int {\l_keys_choice_int}
+ },
+ ruledheaders .initial:n = all,
+ type .choices:nn = {publication, thesis} {\tl_gset_eq:NN \g_ptxcd_pubType_tl \l_keys_choice_tl},
+ type / intern .code:n = {\keys_set:nn {ptxcd/pub} {titlepage=false, pdfa=false, IMRAD=false}},
+ type .initial:n = publication,
+ unknown .code:n = {\prop_gput:NVn \g_ptxcd_unknown_clsopts_prop \l_keys_key_tl {#1}},
+ headline .choice:,
+ headline / true .code:n = \bool_gset_true:N \g_ptxcd_headline_bool,
+ headline / false .code:n = \bool_gset_false:N \g_ptxcd_headline_bool,
+ headline / automark .code:n = {\bool_gset_true:N \g_ptxcd_headline_bool \PassOptionsToPackage{automark}{scrlayer-scrpage}},
+ automark .meta:n = {headline=automark},
+ headline .initial:n =false,
+ twocolumn .bool_gset:N = \g_ptxcd_twocolumn_bool,
+ twocolumn .default:n = true,
+ twocolumn .initial:n = false,
+ BCOR .code:n = \PassOptionsToPackage{bindingoffset=#1}{geometry},
+ bindingoffset .meta:n = {BCOR=#1},
+ captions .code:n = {\prop_gput:Nnx \g_ptxcd_clsopts_prop {captions} {
+ \use:n {\prop_item:Nn \g_ptxcd_clsopts_prop {captions}}, #1}
+ },
+ abstract .code:n = \prop_gput:Nnn \g_ptxcd_unknown_clsopts_prop {abstract} {#1},
+ abstract .initial:n =true,
+ paper .choices:nn = {
+ a0,a1,a2,a3,a4,a5,a6
+ }{
+ \int_gset_eq:NN \g_ptxcd_paper_int \l_keys_choice_int
+ \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{tudarules}
+ \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{typearea}
+ \exp_args:Nx \PassOptionsToPackage{\l_keys_choice_tl paper}{geometry}
+ },
+ paper .initial:n =
+
+ a4,
+ IMRAD .bool_gset:N = \g_ptxcd_IMRAD_bool,
+ IMRAD .initial:n = true,
+ IMRAD .default:n = true,
+ instbox .code:n = {\tl_gput_right:Nn \g_ptxcd_thesis_options_tl {,instbox=#1}},
+ noinstbox .code:n = {\tl_gput_right:Nn \g_ptxcd_thesis_options_tl {,noinstbox=#1}},
+ title .choice:,
+ title / default .meta:n = {title=large},
+ title / large .code:n = \bool_gset_false:N \g_ptxcd_smalltitle_bool,
+ title / small .code:n = \bool_gset_true:N \g_ptxcd_smalltitle_bool,
+ title .initial:n = default,
+ BCORtitlepage .bool_gset:N = \g_ptxcd_BCOR_titlepage_bool,
+
+ BCORtitlepage .initial:n = false,
+ BCORtitlepage .default:n = true,
+}
+\cs_if_exist:NT \TUDaDefaultBuildOptions {
+ \exp_args:Ne \keys_set:ne { ptxcd /
+ \c__ptxcd_base_str
+ } {
+ \TUDaDefaultBuildOptions
+ }
+}
+\cs_new:Nn \__ptxcd_insert_logo: {
+ \bool_if:NTF \g_ptxcd_logo_workaround_bool {
+ \file_if_exist:nTF {\g_ptxcd_logofile_tl.pdf}
+ \use_ii:nn
+ \use_i:nn
+ } {
+ \use_ii:nn
+ }
+ {\rule{0pt}{\c_ptxcd_logoheight_dim}\makebox[2.5\c_ptxcd_logoheight_dim][c]{\rule[.1\c_ptxcd_logoheight_dim]{2.05\c_ptxcd_logoheight_dim}{.8\c_ptxcd_logoheight_dim}}}
+ {\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}
+}
\Module@DefineSpecialKey[ptxcd/pub]{thesis}{
- \keys_set:nn {ptxcd/pub}{type=thesis}
- \tl_gput_right:No \g_ptxcd_thesis_options_tl {#1}
+ \keys_set:nn {ptxcd/pub}{type=thesis}
+ \tl_gput_right:No \g_ptxcd_thesis_options_tl {#1}
}
\Module@Process@SpecialOptions[ptxcd/pub]
-\ProcessKeyOptions[ptxcd/pub]
+
+\ProcessKeyOptions[ptxcd/\c__ptxcd_base_str]
\bool_if:NF \g_ptxcd_pdfa_bool {\bool_gset_false:N \g_ptxcd_pdfx_bool}
\bool_if:NT \g_ptxcd_pdfa_bool {
- \msg_new:nnn {tudapub} {colors-to-rgb} {
- You~did~not~add~a~color~profile.\\
- I~will~use~the~default~one~and~automatically~try~to~convert~internal~colors~to~RGB.\\
- This~is~required~to~be~able~to~create~PDF/A~compliance.
- }
-
- \cs_if_exist:NT \pdfmeta_standard_get:nN {
- \pdfmeta_standard_get:nN {outputintent_A} \l_tmpa_tl
- \quark_if_no_value:NF \l_tmpa_tl {
- \bool_gset_false:N \g_ptxcd_pdfx_bool
- \msg_new:nnn{tudapub} {prefer-lualatex} {
- I~detected~usage~of~l3pdfmeta~(\DocumentMetadata)~to~create~PDF/A.\\
- tudapub~will~not~load~pdfx~to~avoid~conflicts.\\
- To~disable this message use pdfx=false.
- }
- \msg_info:nn {tudapub} {prefer-lualatex}
- }
-
- \prop_if_in:NnF \g__pdfmeta_outputintents_prop {GTS_PDFA1} {
- \PassOptionsToPackage{RGB}{xcolor}
- \msg_info:nn {tudapub} {colors-to-rgb}
- }
- }
+ \msg_new:nnn {tudapub} {colors-to-rgb} {
+ You~did~not~add~a~color~profile.\\
+ I~will~use~the~default~one~and~automatically~try~to~convert~internal~colors~to~RGB.\\
+ This~is~required~to~be~able~to~create~PDF/A~compliance.
+ }
+
+ \cs_if_exist:NT \pdfmeta_standard_get:nN {
+ \pdfmeta_standard_get:nN {outputintent_A} \l_tmpa_tl
+ \quark_if_no_value:NF \l_tmpa_tl {
+ \bool_gset_false:N \g_ptxcd_pdfx_bool
+ \msg_new:nnn{tudapub} {prefer-lualatex} {
+ I~detected~usage~of~l3pdfmeta~(\DocumentMetadata)~to~create~PDF/A.\\
+ tudapub~will~not~load~pdfx~to~avoid~conflicts.\\
+ To~disable~this~message~use~pdfx=false.
+ }
+ \msg_info:nn {tudapub} {prefer-lualatex}
+ }
+ \prop_if_in:NnF \g__pdfmeta_outputintents_prop {GTS_PDFA1} {
+ \use_iii:nnn
+ }
+ }
+ \bool_if:NT \g_ptxcd_pdfx_bool {
+ \PassOptionsToPackage{RGB}{xcolor}
+ \msg_info:nn {tudapub} {colors-to-rgb}
+ }
}
+
\exp_args:Nx \tl_if_eq:nnT {\prop_item:Nn \g_ptxcd_clsopts_prop {fontsize}} {9pt}
- {
- \prop_if_in:NnF \g_ptxcd_unknown_clsopts_prop {DIV}
- {\PassOptionsToPackage{DIV=calc}{typearea}}
- }
+{
+ \prop_if_in:NnF \g_ptxcd_unknown_clsopts_prop {DIV}
+ {\PassOptionsToPackage{DIV=calc}{typearea}}
+}
\prop_gput:Nnx \g_ptxcd_clsopts_prop {twocolumn} {
- \bool_if:NTF \g_ptxcd_twocolumn_bool {true} {false}
+ \bool_if:NTF \g_ptxcd_twocolumn_bool {true} {false}
}
\prop_map_inline:Nn \g_ptxcd_clsopts_prop {
- \tl_if_empty:nTF {#2}
- {\PassOptionsToClass {#1} {\g_ptxcd_pub_class_tl}}
- {
- \clist_map_inline:nn {#2} {\PassOptionsToClass {#1=##1} {\g_ptxcd_pub_class_tl}}
- }
+ \tl_if_empty:nTF {#2}
+ {\PassOptionsToClass {#1} {\g_ptxcd_pub_class_tl}}
+ {
+ \clist_map_inline:nn {#2} {\PassOptionsToClass {#1=##1} {\g_ptxcd_pub_class_tl}}
+ }
}
-
-
-%Load tudasize clo file if available
\file_if_exist:nT {tudasize\prop_item:Nn \g_ptxcd_clsopts_prop {fontsize}.clo}
- {\providecommand*{\@fontsizefilebase}{tudasize}}
-
+{\providecommand*{\@fontsizefilebase}{tudasize}}
+\bool_if:NT \g_ptxcd_geometry_bool {\PassOptionsToPackage{typeareawarninfolimit=-1}{typearea}}
\LoadClass{\g_ptxcd_pub_class_tl}
\RequirePackage{tudafonts}
\RequirePackage{tudacolors}
\RequirePackage[draft=false]{scrlayer-scrpage}
\RequirePackage{graphicx}
-
+\PassOptionsToPackage{hidelinks, unicode}{hyperref}
\bool_if:NTF \g_ptxcd_pdfx_bool {
- \PassOptionsToPackage{RGB}{xcolor}
- \msg_info:nn {tudapub} {colors-to-rgb}
-
- %only apply the hack if pdfx is older than the working version
- \PassOptionsToPackage{a-2b}{pdfx}
-% Workaround posted by David Carlisle on tex.stackexchange
-% Thanks to Ulrike Fischer for mentioning it in #472
- \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel
- \chardef\currentgrouplevel0
- \ExplSyntaxOff
- \RequirePackage{pdfx}
- \ExplSyntaxOn
- \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx:
- \cs_undefine:N \__ptxcd_grouplevel_before_pdfx:
-% end of the workaround
-
- \msg_new:nnn{tudapub} {prefer-lualatex} {
- You~use~pdfa-mode~in~#1.\\
- This~can~lead~to~incompatiblities~especially~with~older~compiler~versions.\\
- You~should~prefer~using~lualatex.
- }
- \msg_new:nnnn{tudapub} {outdated-package-pdfa} {
- Your~Version~of~the~#1-package~is~too~old~to~support~all~methods~required~by~tudapubs~pdfa-mode.\\
- Either~update~your~TeX-distribution~or~switch~to~pdfa=false.
- }{See~DEMO-tudapub~for~further~information.}
-
-
- \sys_if_engine_pdftex:T {
- \msg_warning:nnn{tudapub} {prefer-lualatex} {PDFTeX}
- }
-
- \sys_if_engine_xetex:T {
- \msg_warning:nnn{tudapub} {prefer-lualatex} {XeTeX}
- }
-
- \@ifpackagelater{xmpincl}{2021/09/22}{
- }{
- \msg_error:nn{tudapub} {outdated-package-pdfa} {xmpincl}
- }
-
- \@ifpackagelater{pdfx}{2018/12/01}{
- }{
- \msg_error:nn{tudapub} {outdated-package-pdfa} {pdfx}
- }
+%% only apply the hack if pdfx is older than the working version
+ \PassOptionsToPackage{a-2b}{pdfx}
+%% Workaround posted by David Carlisle on tex.stackexchange
+%% Thanks to Ulrike Fischer for mentioning it in #472
+ \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel
+ \chardef\currentgrouplevel0
+ \ExplSyntaxOff
+ \RequirePackage{pdfx}
+ \ExplSyntaxOn
+ \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx:
+ \cs_undefine:N \__ptxcd_grouplevel_before_pdfx:
+%% end of the workaround
+
+ \msg_new:nnn{tuda-ci} {prefer-lualatex} {
+ You~use~pdfa-mode~in~#1.\\
+ This~can~lead~to~incompatiblities~especially~with~older~compiler~versions.\\
+ You~should~prefer~using~lualatex.
+ }
+ \msg_new:nnnn{tuda-ci} {outdated-package-pdfa} {
+ Your~Version~of~the~#1-package~is~too~old~to~support~all~methods~required~by~tudapubs~pdfa-mode.\\
+ Either~update~your~TeX-distribution~or~switch~to~pdfa=false.
+ }{See~DEMO-tudapub~for~further~information.}
+
+ \sys_if_engine_pdftex:T {
+ \msg_warning:nnn{tuda-ci} {prefer-lualatex} {PDFTeX}
+ }
+
+ \sys_if_engine_xetex:T {
+ \msg_warning:nnn{tuda-ci} {prefer-lualatex} {XeTeX}
+ }
+
+ \@ifpackagelater{xmpincl}{2021/09/22}{
+ }{
+ \msg_error:nn{tuda-ci} {outdated-package-pdfa} {xmpincl}
+ }
+
} {
- \PassOptionsToPackage{hidelinks, unicode}{hyperref}
- \RequirePackage{hyperref}
+ \RequirePackage{hyperref}
}
+\RequirePackage{bookmark}
\RequirePackage{tudarules}
\RequirePackage{trimclip}
\RequirePackage{bookmark}
\prop_map_inline:Nn \g_ptxcd_unknown_clsopts_prop {
- \cs_if_exist:cT {KV@KOMA.\g_ptxcd_pub_class_tl.cls@#1} {
- \tl_if_empty:nTF {#2}
- {\KOMAoptions{#1}}
- {\KOMAoption{#1}{#2}}
- }
+ \cs_if_exist:cT {KV@KOMA.\g_ptxcd_pub_class_tl.cls@#1} {
+ \tl_if_empty:nTF {#2}
+ {\KOMAoptions{#1}}
+ {\KOMAoption{#1}{#2}}
+ }
}
-
-%ruled headers
\int_compare:nT {\g_ptxcd_ruledheaders_int>=3} {
- \cs_if_exist:NT \chapterlinesformat {
- \renewcommand*{\chapterlinesformat}[3]{%
- \@hangfrom{#2}{#3}
- \smash{\raisebox{\depth}{\rule[\dp\strutbox]{\linewidth}{\g_ptxcd_titlerule_dim}}}
- }
- }
+ \cs_if_exist:NT \chapterlinesformat {
+ \renewcommand*{\chapterlinesformat}[3]{%
+ \@hangfrom{#2}{#3}
+ \smash{\raisebox{\depth}{\rule[\dp\strutbox]{\linewidth}{\g_ptxcd_titlerule_dim}}}
+ }
+ }
}
\int_compare:nT {\g_ptxcd_ruledheaders_int =4 }{
- \renewcommand*\sectionlinesformat[4]{%
- \tl_if_eq:nnTF {#1} {section}
- {
- \parbox{\linewidth}{
- \rule[5\g_ptxcd_titlerule_dim]{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip
- \@hangfrom{%
- \hskip #2#3\strut}{#4\rule[-\dp\strutbox]{0pt}{\dp\strutbox}\par}\nointerlineskip
- \skip_vertical:n {\ptxcd_titlerule_sep: -\dp\strutbox}
- \smash{\rule{\linewidth}{\g_ptxcd_titlerule_dim}}}
- }{
- \@hangfrom{\hskip #2#3}{#4}
- }
- }
+ \renewcommand*\sectionlinesformat[4]{%
+ \tl_if_eq:nnTF {#1} {section}
+ {
+ \parbox{\linewidth}{
+ \rule[5\g_ptxcd_titlerule_dim]{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip
+ \@hangfrom{%
+ \hskip #2#3\strut}{#4\rule[-\dp\strutbox]{0pt}{\dp\strutbox}\par}\nointerlineskip
+ \skip_vertical:n {\ptxcd_titlerule_sep: -\dp\strutbox}
+ \smash{\rule{\linewidth}{\g_ptxcd_titlerule_dim}}}
+ }{
+ \@hangfrom{\hskip #2#3}{#4}
+ }
+ }
}
\int_compare:nT {\g_ptxcd_ruledheaders_int>4} {
- \renewcommand*\sectionlinesformat[4]{%
- \parbox{\linewidth}{
- \rule[5\g_ptxcd_titlerule_dim]{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip
- \@hangfrom{%
- \hskip #2#3\strut}{#4\rule[-\dp\strutbox]{0pt}{\dp\strutbox}\par}\nointerlineskip
- \skip_vertical:n {\ptxcd_titlerule_sep: -\dp\strutbox}
- \smash{\rule{\linewidth}{\g_ptxcd_titlerule_dim}}
- }}
+ \renewcommand*\sectionlinesformat[4]{%
+ \parbox{\linewidth}{
+ \rule[5\g_ptxcd_titlerule_dim]{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip
+ \@hangfrom{%
+ \hskip #2#3\strut}{#4\rule[-\dp\strutbox]{0pt}{\dp\strutbox}\par}\nointerlineskip
+ \skip_vertical:n {\ptxcd_titlerule_sep: -\dp\strutbox}
+ \smash{\rule{\linewidth}{\g_ptxcd_titlerule_dim}}
+ }}
}
-
-
-%Margin & titlefontsize setup setup
\bool_new:N \g_ptxcd_marginpar_bool
-
\dim_new:N \g_ptxcd_marginpar_dim
\dim_new:N \g_ptxcd_innerMargin_dim
\dim_new:N \g_ptxcd_outerMargin_dim
\dim_new:N \g_ptxcd_bottomMargin_dim
\dim_new:N \g_ptxcd_topMargin_dim
-
- %a3,a4
- \int_compare:nTF {4<=\g_ptxcd_paper_int<=5}
- {
- \dim_gset:Nn \g_ptxcd_bottomMargin_dim {20mm}
- \dim_gset:Nn \g_ptxcd_outerMargin_dim {15mm}
- \dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim
- \dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim
- }{
- %a0, a1, a2
- \int_compare:nT {1<=\g_ptxcd_paper_int<=3}
- {
- \dim_gset:Nn \g_ptxcd_bottomMargin_dim {35mm}
- \dim_gset:Nn \g_ptxcd_outerMargin_dim {30mm}
- \dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim
- \dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim
- }
- %a5
- \int_compare:nT {\g_ptxcd_paper_int<=6}
- {
- \dim_gset:Nn \g_ptxcd_bottomMargin_dim {16mm}
- \dim_gset:Nn \g_ptxcd_outerMargin_dim {12mm}
- \dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim
- \dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim
- }
- %a6
- \int_compare:nT {\g_ptxcd_paper_int<=7}
- {
- \dim_gset:Nn \g_ptxcd_bottomMargin_dim {15mm}
- \dim_gset:Nn \g_ptxcd_outerMargin_dim {10mm}
- \dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim
- \dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim
- }
- }
+\int_compare:nTF {4<=\g_ptxcd_paper_int<=5}
+{
+\dim_gset:Nn \g_ptxcd_bottomMargin_dim {20mm}
+\dim_gset:Nn \g_ptxcd_outerMargin_dim {15mm}
+\dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim
+\dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim
+}{
+\int_compare:nT {1<=\g_ptxcd_paper_int<=3}
+{
+\dim_gset:Nn \g_ptxcd_bottomMargin_dim {35mm}
+\dim_gset:Nn \g_ptxcd_outerMargin_dim {30mm}
+\dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim
+\dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim
+}
+\int_compare:nT {\g_ptxcd_paper_int<=6}
+{
+\dim_gset:Nn \g_ptxcd_bottomMargin_dim {16mm}
+\dim_gset:Nn \g_ptxcd_outerMargin_dim {12mm}
+\dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim
+\dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim
+}
+\int_compare:nT {\g_ptxcd_paper_int<=7}
+{
+\dim_gset:Nn \g_ptxcd_bottomMargin_dim {15mm}
+\dim_gset:Nn \g_ptxcd_outerMargin_dim {10mm}
+\dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim
+\dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim
+}
+}
\dim_new:N \g_ptxcd_columnSep_dim
\dim_gset:Nn \g_ptxcd_columnSep_dim {10pt}
-
-%coverpage
\edef\coverpageleftmargin{\dim_eval:n {\g_ptxcd_outerMargin_dim}}
\renewcommand*{\coverpagetopmargin}{\g_ptxcd_outerMargin_dim}
\edef\coverpagerightmargin{\dim_eval:n {\g_ptxcd_outerMargin_dim}}
\renewcommand*{\coverpagebottommargin}{\g_ptxcd_outerMargin_dim}
-
\str_case:onTF {\g_ptxcd_marginpar_tl} {
- {true} {\bool_gset_true:N \g_ptxcd_marginpar_bool}
- {false} {\bool_gset_false:N \g_ptxcd_marginpar_bool}
- {auto} {\bool_gset_true:N \g_ptxcd_marginpar_bool}
+{true} {\bool_gset_true:N \g_ptxcd_marginpar_bool}
+{false} {\bool_gset_false:N \g_ptxcd_marginpar_bool}
+{auto} {\bool_gset_true:N \g_ptxcd_marginpar_bool}
} {
- \bool_if:NT \g_ptxcd_marginpar_bool {
- \msg_new:nnnn {tudapub} {marginpar-auto} {Setting~up~marginpar~consistent~with~layout~guidelines.}
- {To~turn~this~off~use~marginpar=false~option.}
- \msg_info:nn {tudapub} {marginpar-auto}
- \dim_gset:Nn \g_ptxcd_marginpar_dim {(\paperwidth - \g_ptxcd_innerMargin_dim -\g_ptxcd_outerMargin_dim - 4 \g_ptxcd_columnSep_dim)/5}
- }
+\bool_if:NT \g_ptxcd_marginpar_bool {
+\msg_new:nnnn {tudapub} {marginpar-auto} {Setting~up~marginpar~consistent~with~layout~guidelines.}
+{To~turn~this~off~use~marginpar=false~option.}
+\msg_info:nn {tudapub} {marginpar-auto}
+\dim_gset:Nn \g_ptxcd_marginpar_dim {(\paperwidth - \g_ptxcd_innerMargin_dim -\g_ptxcd_outerMargin_dim - 4 \g_ptxcd_columnSep_dim)/5}
+}
} {
- \msg_new:nnn {tudapub} {marginpar-no-key} {I~did~not~find~a~text~key~for~marginpar~setup~will~use~the~value~#1~as~width.}
- \msg_info:nnx {tudapub} {marginpar-no-key} {\g_ptxcd_marginpar_tl}
- \bool_gset_true:N \g_ptxcd_marginpar_bool
- \dim_gset:Nn \g_ptxcd_marginpar_dim {\g_ptxcd_marginpar_tl}
+\msg_new:nnn {tudapub} {marginpar-no-key} {I~did~not~find~a~text~key~for~marginpar~setup~will~use~the~value~#1~as~width.}
+\msg_info:nnx {tudapub} {marginpar-no-key} {\g_ptxcd_marginpar_tl}
+\bool_gset_true:N \g_ptxcd_marginpar_bool
+\dim_gset:Nn \g_ptxcd_marginpar_dim {\g_ptxcd_marginpar_tl}
}
-
-\dim_new:N \g_ptxcd_headheight_dim
\dim_new:N \g_ptxcd_headwidth_dim
-
+\dim_new:N \g_ptxcd_headheight_dim
+\dim_gset:Nn \g_ptxcd_headheight_dim {\c_ptxcd_largerule_dim +\c_ptxcd_rulesep_dim +\c_ptxcd_smallrule_dim}
\bool_if:NTF \g_ptxcd_headline_bool
- {\dim_gset:Nn \g_ptxcd_headheight_dim {20pt +\c_ptxcd_largerule_dim +\c_ptxcd_rulesep_dim +\c_ptxcd_smallrule_dim}}
- {\dim_gset:Nn \g_ptxcd_headheight_dim {1.25\baselineskip +\c_ptxcd_largerule_dim +\c_ptxcd_rulesep_dim +\c_ptxcd_smallrule_dim}}
-
-%%%%%Anfang Randeinstellungen Geometry
-
-
-
-\AddToHook{begindocument}[tudapub:BCOR-titlepage]{
- \bool_if:NT \g_ptxcd_BCOR_titlepage_bool
- {\xdef\coverpageleftmargin{\the\dimexpr\coverpageleftmargin+\the\ta@bcor}}
-}
-
+{\dim_gadd:Nn \g_ptxcd_headheight_dim {20pt}}
+{\dim_gadd:Nn \g_ptxcd_headheight_dim {1.25\baselineskip}}
\bool_if:NTF \g_ptxcd_geometry_bool {
- \RequirePackage{geometry}
- \geometry{
- top=\g_ptxcd_topMargin_dim,
- inner=\g_ptxcd_innerMargin_dim,
- outer=\dim_eval:n {\g_ptxcd_outerMargin_dim},
- bottom=\g_ptxcd_bottomMargin_dim,
- columnsep= \g_ptxcd_columnSep_dim,
- includehead,
- includefoot,
- includemp,
- nomarginpar,
- headheight=\g_ptxcd_headheight_dim
- }
- \savegeometry{TUDa-nomarginpar}
- \geometry{includemp, marginpar=\g_ptxcd_marginpar_dim, marginparsep=\g_ptxcd_columnSep_dim}
- \KOMAoptions{mpinclude}
- \savegeometry{TUDa-marginpar}
-
- \bool_if:NTF \g_ptxcd_custommargins_bool {
- \AddToHook{begindocument}[tudapub:custommargins]{
- \savegeometry{TUDa-default}
- \bool_if:NTF \g_ptxcd_marginpar_bool {
- \dim_gset:Nn \g_ptxcd_headwidth_dim {\textwidth+\marginparwidth+\marginparsep}
- }{
- \dim_gset:Nn \g_ptxcd_headwidth_dim {\textwidth}
- }
- }
- \tl_const:Nn \c_ptxcd_default_geometry_tl {TUDa-default}
- }{
- \bool_if:NTF \g_ptxcd_marginpar_bool {
- \tl_const:Nn \c_ptxcd_default_geometry_tl {TUDa-marginpar}
- } {
- \tl_const:Nn \c_ptxcd_default_geometry_tl {TUDa-nomarginpar}
- }
- \AddToHook{begindocument}[tudapub:custommargins-geometry]{
- \loadgeometry{\c_ptxcd_default_geometry_tl}
- }
- }
-
- \dim_gset:Nn \g_ptxcd_headwidth_dim {\paperwidth-\g_ptxcd_innerMargin_dim-\g_ptxcd_outerMargin_dim-\Gm@bindingoffset}
-
- \cs_set:Nn \ptxcd_disable_marginpar: {\loadgeometry{TUDa-nomarginpar}}
- \cs_set:Nn \ptxcd_restore_typearea: {\loadgeometry{\c_ptxcd_default_geometry_tl}}
-
- \AddToHook{cmd/Gm@changelayout/after}[tudapub-restore-headwidth]{
- \bool_if:NTF \g_ptxcd_marginpar_bool
- {\KOMAoptions{headwidth=textwithmarginpar,footwidth=textwithmarginpar}}
- {\KOMAoptions{headwidth=text,footwidth=text}}
- }
-
+\RequirePackage{geometry}
+\geometry{
+top=\g_ptxcd_topMargin_dim,
+inner=\g_ptxcd_innerMargin_dim,
+outer=\dim_eval:n {\g_ptxcd_outerMargin_dim},
+bottom=\g_ptxcd_bottomMargin_dim,
+columnsep= \g_ptxcd_columnSep_dim,
+includehead,
+includefoot,
+ includemp,
+ nomarginpar,
+headheight=\g_ptxcd_headheight_dim
+}
+\savegeometry{TUDa-nomarginpar}
+\geometry{includemp, marginpar=\g_ptxcd_marginpar_dim, marginparsep=\g_ptxcd_columnSep_dim}
+\KOMAoptions{mpinclude}
+\savegeometry{TUDa-marginpar}
+
+\bool_if:NTF \g_ptxcd_custommargins_bool {
+\AddToHook{begindocument}[tudapub:custommargins]{
+\savegeometry{TUDa-default}
+\bool_if:NTF \g_ptxcd_marginpar_bool {
+\dim_gset:Nn \g_ptxcd_headwidth_dim {\textwidth+\marginparwidth+\marginparsep}
}{
- \let\ptxcd_disable_marginpar:\relax
- \def\ptxcd_restore_typearea:{
- \KOMAoptions{headinclude, footinclude}
- \bool_if:NTF \g_ptxcd_marginpar_bool {\KOMAoptions{headwidth=textwithmarginpar,footwidth=textwithmarginpar}}
- {\KOMAoptions{headwidth=text,footwidth=text}}
- \bool_if:NT \g_ptxcd_headline_bool {\KOMAoptions{headheight=\g_ptxcd_headheight_dim}}
- \recalctypearea
- }
- \ptxcd_restore_typearea:
+\dim_gset:Nn \g_ptxcd_headwidth_dim {\textwidth}
+}
+}
+\tl_const:Nn \c_ptxcd_default_geometry_tl {TUDa-default}
+}{
+\bool_if:NTF \g_ptxcd_marginpar_bool {
+\tl_const:Nn \c_ptxcd_default_geometry_tl {TUDa-marginpar}
+} {
+\tl_const:Nn \c_ptxcd_default_geometry_tl {TUDa-nomarginpar}
+}
+\AddToHook{begindocument}[tudapub:custommargins-geometry]{
+\loadgeometry{\c_ptxcd_default_geometry_tl}
+}
}
+\dim_gset:Nn \g_ptxcd_headwidth_dim {\paperwidth-\g_ptxcd_innerMargin_dim-\g_ptxcd_outerMargin_dim-\Gm@bindingoffset}
+\cs_set:Nn \ptxcd_disable_marginpar: {\loadgeometry{TUDa-nomarginpar}}
+\cs_set:Nn \ptxcd_restore_typearea: {\loadgeometry{\c_ptxcd_default_geometry_tl}}
-%%%%%%%%
-%Ende Randeinstellungen klassisch
-
-
-
+\AddToHook{cmd/Gm@changelayout/after}[tudapub-restore-headwidth]{
+\bool_if:NTF \g_ptxcd_marginpar_bool
+{\KOMAoptions{headwidth=textwithmarginpar,footwidth=textwithmarginpar}}
+{\KOMAoptions{headwidth=text,footwidth=text}}
+}
+}{
+\let\ptxcd_disable_marginpar:\relax
+\def\ptxcd_restore_typearea:{
+\KOMAoptions{headinclude, footinclude}
+ \bool_if:NTF \g_ptxcd_marginpar_bool {
+ \KOMAoptions{headwidth=textwithmarginpar,footwidth=textwithmarginpar}
+ } {
+ \KOMAoptions{headwidth=text,footwidth=text}
+ }
+ \bool_if:NT \g_ptxcd_headline_bool {\KOMAoptions{headheight=\g_ptxcd_headheight_dim}}
+ \recalctypearea
+ }
+\ptxcd_restore_typearea:
+}
+\AddToHook{begindocument}[tudapub:BCOR-titlepage]{
+\bool_if:NT \g_ptxcd_BCOR_titlepage_bool
+{\xdef\coverpageleftmargin{\the\dimexpr\coverpageleftmargin+\the\ta@bcor}}
+}
\newcommand*{\institution}[1]{
- \def\ptxcd_institution{#1}
+\def\ptxcd_institution{#1}
}
-
-
\cs_new:Nn \ptxcd_titlerule_sep: {\the\dp\strutbox}
-
-
\setkomafont{disposition}{\sffamily\bfseries}
\setkomafont{pageheadfoot}{\sffamily\small}
\setkomafont{pagenumber}{}
\addtokomafont{captionlabel}{\sffamily}
\addtokomafont{caption}{\sffamily}
-
\KOMAoptions{footsepline=.5\c_ptxcd_smallrule_dim}
\setlength{\footheight}{\dimexpr\baselineskip+\c_ptxcd_rulesep_dim}
\bool_if:NT \g_ptxcd_headline_bool {\KOMAoptions{headsepline=.5\c_ptxcd_smallrule_dim}}
-
-%Adjust headheight
\AddToHook{begindocument}[tudapub:adjust-headheight]{
\bool_if:NTF \g_ptxcd_marginpar_bool
- {
- \KOMAoptions {
- headwidth=textwithmarginpar,
- footwidth=textwithmarginpar
- }
- }{
- \KOMAoptions {
- headwidth=text,
- footwidth=text
- }
- }
+{
+\KOMAoptions {
+headwidth=textwithmarginpar,
+footwidth=textwithmarginpar
+}
+}{
+\KOMAoptions {
+headwidth=text,
+footwidth=text
+}
+}
\box_if_exist:NF \ptxcd_headrule_box {
- \ptxcd_makeheadrule[color=identbarcolor, width=\sls@headwidth]{ptxcd_headrule}
+\ptxcd_makeheadrule[color=identbarcolor, width=\sls@headwidth]{ptxcd_headrule}
}
}
\newpairofpagestyles[scrheadings]{TUDa.headings}{
- \KOMAoptions{headsepline, headlines=1.25}
- \setkomafont{pagehead}{}
- \chead{}
- \ohead{\headmark}
+\KOMAoptions{headsepline, headlines=1.25}
+\setkomafont{pagehead}{}
+\chead{}
+\ohead{\headmark}
}
\newpairofpagestyles{TUDa.pub}{
- \KOMAoptions{plainfootsepline}
-
- \bool_if:NTF \g_ptxcd_marginpar_bool
- {
- \KOMAoptions {
- headwidth=textwithmarginpar,
- footwidth=textwithmarginpar
- }
- }{
- \KOMAoptions {
- headwidth=text,
- footwidth=text
- }
- }
- \bool_if:NT \g_ptxcd_headline_bool {
- \setkomafont{pagehead}{\Large\bfseries}
- \KOMAoptions{headlines=2}
- \clist_map_variable:nNn {oneside, even, odd} \l_tmpa_tl {
- \ModifyLayer[pretocontents={\rule[-6pt]{0pt}{\layerheight}}]{TUDa.pub.head.\l_tmpa_tl}
- }
- \lehead{\headmark}
- \lohead{\headmark}
- }
- \ofoot[\pagemark]{\pagemark}
+\KOMAoptions{plainfootsepline}
+
+\bool_if:NTF \g_ptxcd_marginpar_bool
+{
+\KOMAoptions {
+headwidth=textwithmarginpar,
+footwidth=textwithmarginpar
+}
+}{
+\KOMAoptions {
+headwidth=text,
+footwidth=text
+}
+}
+\bool_if:NT \g_ptxcd_headline_bool {
+\setkomafont{pagehead}{\Large\bfseries}
+\KOMAoptions{headlines=2}
+\clist_map_variable:nNn {oneside, even, odd} \l_tmpa_tl {
+\ModifyLayer[pretocontents={\rule[-6pt]{0pt}{\layerheight}}]{TUDa.pub.head.\l_tmpa_tl}
+}
+\lehead{\headmark}
+\lohead{\headmark}
+}
+\ofoot[\pagemark]{\pagemark}
}
\RedeclareLayer[
- clone=scrheadings.head.above.line,
- background,
- contents={
- \dim_compare:nF {\box_wd:N \ptxcd_headrule_box=\layerwidth} {
- \ptxcd_makeheadrule[color=identbarcolor, width=\layerwidth]{ptxcd_headrule}
- }
- \smash{\ptxcd_headrule}
- }
+clone=scrheadings.head.above.line,
+background,
+contents={
+\dim_compare:nF {\box_wd:N \ptxcd_headrule_box=\layerwidth} {
+\ptxcd_makeheadrule[color=identbarcolor, width=\layerwidth]{ptxcd_headrule}
+}
+\smash{\ptxcd_headrule}
+}
]{TUDa.pub.head.above.line}
\RedeclareLayer[
- clone=plain.scrheadings.head.above.line,
- background,
- contents={
- \dim_compare:nF {\box_wd:N \ptxcd_headrule_box=\layerwidth} {
- \ptxcd_makeheadrule[color=identbarcolor, width=\layerwidth]{ptxcd_headrule}
- }
- \smash{\ptxcd_headrule}
- }
+clone=plain.scrheadings.head.above.line,
+background,
+contents={
+\dim_compare:nF {\box_wd:N \ptxcd_headrule_box=\layerwidth} {
+\ptxcd_makeheadrule[color=identbarcolor, width=\layerwidth]{ptxcd_headrule}
+}
+\smash{\ptxcd_headrule}
+}
]{plain.TUDa.pub.head.above.line}
-%\dim_set:Nn \l_tmpa_dim {\topmargin+1in+\headheight+\headsep+\textheight
-% +\footskip+\dp\strutbox-\footheight +\c_ptxcd_rulesep_dim}
\ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.pub.foot.even}
\ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.pub.foot.odd}
\ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.pub.foot.oneside}
@@ -613,56 +614,48 @@
\ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{plain.TUDa.pub.foot.odd}
\ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{plain.TUDa.pub.foot.oneside}
-
\DeclarePageStyleAlias{TUDa}{TUDa.pub}
\DeclarePageStyleAlias{plain.TUDa}{plain.TUDa.pub}
\pagestyle{TUDa}
-
\renewcommand*{\titlepagestyle}{plain.TUDa}
\cs_new:Nn \ptxcd_sls@leftmargin: {%
- \dimexpr
- \if@twoside
- \ifodd\value{page}
- \oddsidemargin
- \else
- \evensidemargin
- \fi
- \else
- \oddsidemargin
- \fi
- \bool_if:NT \g_ptxcd_twocolumn_bool {
- -\marginparwidth-\marginparsep
- }
- +1in\relax
+\dimexpr
+\if@twoside
+\ifodd\value{page}
+\oddsidemargin
+\else
+\evensidemargin
+\fi
+\else
+\oddsidemargin
+\fi
+\bool_if:NT \g_ptxcd_twocolumn_bool {
+-\marginparwidth-\marginparsep
+}
++1in\relax
}
-
-
-
-%Titelseite
\tl_new:N \g_ptxcd_titleimage_code_tl
\tl_gset_eq:NN \g_ptxcd_titleimage_code_tl \c_empty_tl
\newcommand{\titleimage}[1]{\tl_gset:Nn \g_ptxcd_titleimage_code_tl {#1}}
\box_new:N \l__ptxcd_titlegraphic_box
-
-
\NewDocumentCommand{\titlegraphic}{sm}{
- \IfBooleanTF{#1}{
- \tl_gset:Nn \g_ptxcd_titleimage_code_tl {
- \hbox_set:Nn \l__ptxcd_titlegraphic_box {\raisebox{\depth}{#2}}
- \box_resize_to_wd:Nn \l__ptxcd_titlegraphic_box {\width}
- \dim_compare:nTF {\box_ht:N \l__ptxcd_titlegraphic_box -\height> \c_zero_dim}
- {
- \dim_set:Nn \l_tmpa_dim {.5\box_ht:N \l__ptxcd_titlegraphic_box - .5\height}
- \clipbox{0pt~\dim_eval:n{\l_tmpa_dim}~0pt~\dim_eval:n{\l_tmpa_dim}}{\box_use:N \l__ptxcd_titlegraphic_box}
- }{
- \box_resize_to_ht:Nn \l__ptxcd_titlegraphic_box {\height}
- \dim_set:Nn \l_tmpa_dim {(\box_wd:N \l__ptxcd_titlegraphic_box - \width) / 2}
- \clipbox{\dim_eval:n{\l_tmpa_dim}~0pt~\dim_eval:n{\l_tmpa_dim}~0pt}{\box_use:N \l__ptxcd_titlegraphic_box}
- }
- }
- }{
- \tl_gset:Nn \g_ptxcd_titleimage_code_tl {#2}
- }
+\IfBooleanTF{#1}{
+\tl_gset:Nn \g_ptxcd_titleimage_code_tl {
+\hbox_set:Nn \l__ptxcd_titlegraphic_box {\raisebox{\depth}{#2}}
+\box_resize_to_wd:Nn \l__ptxcd_titlegraphic_box {\width}
+\dim_compare:nTF {\box_ht:N \l__ptxcd_titlegraphic_box -\height> \c_zero_dim}
+{
+ \dim_set:Nn \l_tmpa_dim {.5\box_ht:N \l__ptxcd_titlegraphic_box - .5\height}
+ \clipbox{0pt~\dim_eval:n{\l_tmpa_dim}~0pt~\dim_eval:n{\l_tmpa_dim}}{\box_use:N \l__ptxcd_titlegraphic_box}
+}{
+ \box_resize_to_ht:Nn \l__ptxcd_titlegraphic_box {\height}
+ \dim_set:Nn \l_tmpa_dim {(\box_wd:N \l__ptxcd_titlegraphic_box - \width) / 2}
+ \clipbox{\dim_eval:n{\l_tmpa_dim}~0pt~\dim_eval:n{\l_tmpa_dim}~0pt}{\box_use:N \l__ptxcd_titlegraphic_box}
+}
+}
+}{
+\tl_gset:Nn \g_ptxcd_titleimage_code_tl {#2}
+}
}
\let\titleimage\titlegraphic%for backwards compatbility
@@ -670,106 +663,97 @@
\box_new:N \g_ptxcd_title_box
\skip_new:N \g_ptxcd_title_fill_skip
-
-
-
\seq_new:N \g_ptxcd_author_seq
-
\renewcommand*\author[1]{
- \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#1}
+ \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#1}
}
-
\msg_new:nnn{tudapub} {unknown-language} {
- You~selected~an~unknown~language~#1.\\
- The~Variable~#2~does~not~have~a~predefined~value.\\
- Ensure~to~redefine~#2~to~match~your~language.\\
- Otherwise~the~german~vaue~#3~will~be~used.
+ You~selected~an~unknown~language~#1.\\
+ The~Variable~#2~does~not~have~a~predefined~value.\\
+ Ensure~to~redefine~#2~to~match~your~language.\\
+ Otherwise~the~german~vaue~#3~will~be~used.
}
\cs_new:Nn \ptxcd_define_captionFallback:Nn {
- \providecommand*#1{
- \msg_warning:nnxxx{tudapub} {unknown-language}
- {\languagename} {\exp_not:N #1} {#2}
- \def#1{#2}
- }
+ \providecommand*#1{
+ \msg_warning:nnxxx{tudapub} {unknown-language}
+ {\languagename} {\exp_not:N #1} {#2}
+ \def#1{#2}
+ }
}
\cs_new:Nn \ptxcd_declare_caption:Nnnn {
- \ptxcd_define_captionFallback:Nn #1 {#2}
- \defcaptionname{ngerman, german}{#1}{#2}
- \defcaptionname{english, USenglish, american}{#1}{#3}
- \defcaptionname{UKenglish, british}{#1}{#4}
+ \ptxcd_define_captionFallback:Nn #1 {#2}
+ \defcaptionname{ngerman, german}{#1}{#2}
+ \defcaptionname{english, USenglish, american}{#1}{#3}
+ \defcaptionname{UKenglish, british}{#1}{#4}
}
\cs_new:Nn \ptxcd_declare_caption:Nnn {
- \ptxcd_declare_caption:Nnnn #1 {#2} {#3} {#3}
+ \ptxcd_declare_caption:Nnnn #1 {#2} {#3} {#3}
}
-
\renewcommand*{\@author}{
\begingroup
\hyphenpenalty=100000
\seq_use:Nnnn \g_ptxcd_author_seq {~\authorandname{}~} {,~} {~\&~}
\endgroup
}
-
\msg_new:nnn{tudapub} {infobox-too-high} {
- The~height~of~your~Infobox~exeeds~the~space~reserved~in~the~title~block.\\
- You~should~probably~switch~to~logo=bottom~or~reduce~the~number/size~of~InfoBoxes.
-}
-
-
-\cs_set:Nn \ptxcd_adjust_titlepage_style: {
- \dim_set:Nn \l_tmpa_dim {\fp_to_dim:n {\expandafter \use_ii:nn\ptxcd_title_fontsize: *2.8}}
- \dim_compare:nT {\box_ht:N \g_ptxcd_title_box < \l_tmpa_dim} {
- \skip_set:Nn \g_ptxcd_title_fill_skip {\dim_eval:n {\l_tmpa_dim - \box_ht:N \g_ptxcd_title_box}}
- }
-
- \dim_set:Nn \l_tmpa_dim {
- \box_ht:N \ptxcd_headrule_box+\box_dp:N \ptxcd_headrule_box-\g_ptxcd_titlerule_dim
- +\box_ht:N \g_ptxcd_title_box+.5\c_ptxcd_logoheight_dim+\g_ptxcd_title_fill_skip+\box_dp:N \g_ptxcd_title_box
- }
-
- \ModifyLayer[
- addvoffset=\l_tmpa_dim,
- addheight=-\l_tmpa_dim
- -\box_dp:N \g_ptxcd_sponsor_box
- +\c_ptxcd_rulesep_dim
- ]{title.TUDa.image}
-
- \bool_if:NT \g_ptxcd_colorbacktitle_bool {
- \ModifyLayer[
- textarea,
- addvoffset=\dim_eval:n {\box_ht:N \ptxcd_headrule_box+\box_dp:N \ptxcd_headrule_box-\g_ptxcd_titlerule_dim},
- height={\box_ht:N \g_ptxcd_title_box+ \g_ptxcd_title_fill_skip+.5\c_ptxcd_logoheight_dim
- \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {+\box_dp:N \g_ptxcd_title_box}
- }
- ]{title.TUDa.background}
- }
- \vspace*{\dim_eval:n {
- -\topskip
- -\g_ptxcd_titlerule_dim
- +\box_ht:N \ptxcd_headrule_box
- +\box_dp:N \ptxcd_headrule_box
- +.5\c_ptxcd_logoheight_dim
- }}
- \nointerlineskip
- \ptxcd_setup_title_box:
-
- \bool_if:NT \g__ptxcd_LogoInHead_bool {
- \dim_compare:nT {\box_ht:N \g_ptxcd_title_info_box+ \box_dp:N \g_ptxcd_title_info_box > \box_ht:N \g_ptxcd_title_box}
- {\msg_warning:nn{tudapub} {infobox-too-high}}
- \makebox[\linewidth][r]{\smash{
- \raisebox{-\height}{
- \makebox[\__ptxcd_logowidth:][l]{
- \box_use:N \g_ptxcd_title_info_box
- }}
- }}
- }
- \par
- \vspace*{\skip_use:N \g_ptxcd_title_fill_skip}
- \setlength{\fboxsep}{\z@}
+ The~height~of~your~Infobox~exeeds~the~space~reserved~in~the~title~block.\\
+ You~should~probably~switch~to~logo=bottom~or~reduce~the~number/size~of~InfoBoxes.
+}
+
+\cs_set:Nn \ptxcd_adjust_titlepage_style: {
+ \dim_set:Nn \l_tmpa_dim {\fp_to_dim:n {\expandafter \use_ii:nn\ptxcd_title_fontsize: *2.8}}
+ \dim_compare:nT {\box_ht:N \g_ptxcd_title_box < \l_tmpa_dim} {
+\skip_set:Nn \g_ptxcd_title_fill_skip {\dim_eval:n {\l_tmpa_dim - \box_ht:N \g_ptxcd_title_box}}
}
+\dim_set:Nn \l_tmpa_dim {
+\box_ht:N \ptxcd_headrule_box+\box_dp:N \ptxcd_headrule_box-\g_ptxcd_titlerule_dim
++\box_ht:N \g_ptxcd_title_box+.5\c_ptxcd_logoheight_dim+\g_ptxcd_title_fill_skip+\box_dp:N \g_ptxcd_title_box
+}
+
+\ModifyLayer[
+addvoffset=\l_tmpa_dim,
+addheight=-\l_tmpa_dim
+-\box_dp:N \g_ptxcd_sponsor_box
++\c_ptxcd_rulesep_dim
+]{title.TUDa.image}
+
+\bool_if:NT \g_ptxcd_colorbacktitle_bool {
+\ModifyLayer[
+textarea,
+addvoffset=\dim_eval:n {\box_ht:N \ptxcd_headrule_box+\box_dp:N \ptxcd_headrule_box-\g_ptxcd_titlerule_dim},
+height={\box_ht:N \g_ptxcd_title_box+ \g_ptxcd_title_fill_skip+.5\c_ptxcd_logoheight_dim
+\bool_if:NT \g_ptxcd_colorbacksubtitle_bool {+\box_dp:N \g_ptxcd_title_box}
+}
+]{title.TUDa.background}
+}
+\vspace*{\dim_eval:n {
+-\topskip
+-\g_ptxcd_titlerule_dim
++\box_ht:N \ptxcd_headrule_box
++\box_dp:N \ptxcd_headrule_box
++.5\c_ptxcd_logoheight_dim
+}}
+\nointerlineskip
+\ptxcd_setup_title_box:
+
+\bool_if:NT \g__ptxcd_logo_head_bool {
+\dim_compare:nT {\box_ht:N \g_ptxcd_title_info_box+ \box_dp:N \g_ptxcd_title_info_box > \box_ht:N \g_ptxcd_title_box}
+ {\msg_warning:nn{tudapub} {infobox-too-high}}
+ \makebox[\linewidth][r]{\smash{
+ \raisebox{-\height}{
+ \makebox[\__ptxcd_logowidth:][l]{
+ \box_use:N \g_ptxcd_title_info_box
+ }}
+ }}
+}
+\par
+\vspace*{\skip_use:N \g_ptxcd_title_fill_skip}
+\setlength{\fboxsep}{\z@}
+}
\newkomafont{institution}{\sffamily}
\newkomafont{titleinfo}{\ptxcd@sffamily@lining}
@@ -780,7 +764,7 @@
\setkomafont{date}{}
\bool_if:NF \g_ptxcd_smalltitle_bool {
- \int_gdecr:N \g_ptxcd_paper_int
+ \int_gdecr:N \g_ptxcd_paper_int
}
\file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo}
\ptxcd_setup_title_sizes:
@@ -789,268 +773,243 @@
\box_new:N \g_ptxcd_title_info_box
\cs_new:Nn \ptxcd_make_title_info_box:n {
- \setlength{\fboxsep}{1.5mm}%
- \colorbox{InfoBox}{
- \makebox[\dim_eval:n {\__ptxcd_logowidth:-\fboxsep}][r]{
- \parbox{\dim_eval:n {\__ptxcd_logowidth:+\fboxsep-\__ptxcd_logosep:}}{
- \expandafter \fontsize\ptxcd_titlethanks_fontsize:\selectfont\usekomafont{institution}%
- \raggedright%
- #1
- }}}
+ \setlength{\fboxsep}{1.5mm}%
+ \colorbox{InfoBox}{
+ \makebox[\dim_eval:n {\__ptxcd_logowidth:-\fboxsep}][r]{
+ \parbox{\dim_eval:n {\__ptxcd_logowidth:+\fboxsep-\__ptxcd_logosep:}}{
+ \expandafter \fontsize\ptxcd_titlethanks_fontsize:\selectfont\usekomafont{institution}%
+ \raggedright%
+ #1
+ }}}
}
\cs_new:Nn \ptxcd_make_title_logo_box:n {
- \setlength{\fboxsep}{\z@}%
- \parbox{\__ptxcd_logowidth:}{
- \colorbox{InfoBox}{
- \rlap{
- \makebox[\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}][r]{
- \colorbox{InfoBox}{#1\hspace{\__ptxcd_logosep:}}
- }
- }
- }
- }
+ \setlength{\fboxsep}{\z@}%
+ \parbox{\__ptxcd_logowidth:}{
+ \colorbox{InfoBox}{
+ \rlap{
+ \makebox[\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}][r]{
+ \colorbox{InfoBox}{#1\hspace{\__ptxcd_logosep:}}
+ }
+ }
+ }
+ }
}
-
\newcommand{\addTitleBox}[1]{\seq_gput_right:Nn \g_ptxcd_title_info_seq {\ptxcd_make_title_info_box:n {#1}}}
-
\NewDocumentCommand{\addTitleBoxLogo}{sm}{
- \IfBooleanTF{#1}{
- \seq_gput_right:Nn \g_ptxcd_title_info_seq {
- \ptxcd_make_title_logo_box:n {#2}
- }
- }{
- \seq_gput_right:Nn \g_ptxcd_title_info_seq {
- \ptxcd_make_title_logo_box:n {
- \hbox_set:Nn \l_tmpa_box {
- \includegraphics[width=1.5\c_ptxcd_logoheight_dim]{#2}
- }
- \dim_set:Nn \l_tmpa_dim {2\c_ptxcd_logoheight_dim/3}
- \dim_compare:nTF {\box_ht:N \l_tmpa_box > \l_tmpa_dim}
- {\includegraphics[width=\l_tmpa_dim]{#2}}
- {\box_use:N \l_tmpa_box}
- }
- }
- }
-}
-
-\addTitleBoxLogo*{\makebox[\linewidth][l]{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}}
+ \IfBooleanTF{#1}{
+ \seq_gput_right:Nn \g_ptxcd_title_info_seq {
+ \ptxcd_make_title_logo_box:n {#2}
+ }
+ }{
+ \seq_gput_right:Nn \g_ptxcd_title_info_seq {
+ \ptxcd_make_title_logo_box:n {
+ \hbox_set:Nn \l_tmpa_box {
+ \includegraphics[width=1.5\c_ptxcd_logoheight_dim]{#2}
+ }
+ \dim_set:Nn \l_tmpa_dim {2\c_ptxcd_logoheight_dim/3}
+ \dim_compare:nTF {\box_ht:N \l_tmpa_box > \l_tmpa_dim}
+ {\includegraphics[width=\l_tmpa_dim]{#2}}
+ {\box_use:N \l_tmpa_box}
+ }
+ }
+ }
+}
+\addTitleBoxLogo*{\makebox[\linewidth][l]{\__ptxcd_insert_logo:}}
\DeclareNewLayer[textarea,background,mode=picture,
- contents={
- \tl_if_empty:NTF \g_ptxcd_titleimage_code_tl
- {
- \bool_if:NF \g_ptxcd_colorbacktitle_bool
- {
- \bool_if:NT \g_ptxcd_colorback_bool {\putLL{\color{identbarcolor}\rule{\layerwidth}{\layerheight}}}
- }
- }
- {\putUL{\color{identbarcolor}
- \let\width\layerwidth
- \let\height\layerheight
- \raisebox{-\height}{\parbox[t]{\textwidth}{
- \leavevmode\ignorespaces
- \g_ptxcd_titleimage_code_tl
- }}}}
- \bool_if:NF \g__ptxcd_LogoInHead_bool {
- \put(\dim_to_decimal_in_unit:nn {\layerwidth-\__ptxcd_logowidth:
- } {\unitlength},
- \dim_to_decimal_in_unit:nn {\layerheight-\box_ht:N \g_ptxcd_title_info_box - .5\c_ptxcd_logoheight_dim} {\unitlength}){
- \rlap{\box_use:N \g_ptxcd_title_info_box}
- }
- }
- }
+ contents={
+ \tl_if_empty:NTF \g_ptxcd_titleimage_code_tl
+ {
+ \bool_if:NF \g_ptxcd_colorbacktitle_bool
+ {
+ \bool_if:NT \g_ptxcd_colorback_bool {\putLL{\color{identbarcolor}\rule{\layerwidth}{\layerheight}}}
+ }
+ }
+ {\putUL{\color{identbarcolor}
+ \let\width\layerwidth
+ \let\height\layerheight
+ \raisebox{-\height}{\parbox[t]{\textwidth}{
+ \leavevmode\ignorespaces
+ \g_ptxcd_titleimage_code_tl
+ }}}}
+ \bool_if:NF \g__ptxcd_logo_head_bool {
+ \put(\dim_to_decimal_in_unit:nn {\layerwidth-\__ptxcd_logowidth:
+ } {\unitlength},
+ \dim_to_decimal_in_unit:nn {\layerheight-\box_ht:N \g_ptxcd_title_info_box - .5\c_ptxcd_logoheight_dim} {\unitlength}){
+ \rlap{\box_use:N \g_ptxcd_title_info_box}
+ }
+ }
+ }
]{title.TUDa.image}
\DeclareNewLayer[background,mode=picture,
- contents={
- \bool_lazy_and:nnT {\g_ptxcd_colorback_bool} {\g_ptxcd_colorbacktitle_bool} {
- {\color{identbarcolor}\rule{\layerwidth}{\layerheight}}
- }
- }
+ contents={
+ \bool_lazy_and:nnT {\g_ptxcd_colorback_bool} {\g_ptxcd_colorbacktitle_bool} {
+ {\color{identbarcolor}\rule{\layerwidth}{\layerheight}}
+ }
+ }
]{title.TUDa.background}
\DeclareNewLayer[
- clone=plain.TUDa.pub.head.above.line,
- hoffset=\coverpageleftmargin,
- width=\paperwidth-\coverpageleftmargin-\coverpagerightmargin,
+ clone=plain.TUDa.pub.head.above.line,
+ hoffset=\coverpageleftmargin,
+ width=\paperwidth-\coverpageleftmargin-\coverpagerightmargin,
]{title.TUDa.rule}
-
-
\ptxcd_makeheadrule[color=identbarcolor, width=\textwidth]{ptxcd_title_headline}
\cs_new:Nn \ptxcd_setup_title_box: {
- \hbox_gset:Nn \g_ptxcd_title_info_box
- {
- \parbox{\dim_eval:n {\__ptxcd_logowidth:+\__ptxcd_logosep:}}{
- \seq_use:Nn \g_ptxcd_title_info_seq {\par\nointerlineskip\vspace{\dim_eval:n {\c_ptxcd_largerule_dim+\c_ptxcd_rulesep_dim}}}
- }
- }
+ \hbox_gset:Nn \g_ptxcd_title_info_box
+ {
+ \parbox{\dim_eval:n {\__ptxcd_logowidth:+\__ptxcd_logosep:}}{
+ \seq_use:Nn \g_ptxcd_title_info_seq {\par\nointerlineskip\vspace{\dim_eval:n {\c_ptxcd_largerule_dim+\c_ptxcd_rulesep_dim}}}
+ }
+ }
}
\cs_new:Nn \ptxcd_setup_sponsor_box: {
- \bool_if:nF {\seq_if_empty_p:N \g_ptxcd_sponsors_seq && \tl_if_empty_p:N \@sponsors} {
- \hbox_gset:Nn \g_ptxcd_sponsor_box {
- \edef\height{\noexpand\dimexpr\dim_eval:n {\__ptxcd_logosep: + .5\c_ptxcd_logoheight_dim}}
- \parbox[t]{\textwidth}{
- \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip
- \addvspace{\c_ptxcd_rulesep_dim}
- \seq_use:Nn \g_ptxcd_sponsors_seq {\hfill}
- \ifhmode\par\fi
- \ifx\@sponsors\@empty
- \else
- \addvspace{.1\c_ptxcd_logoheight_dim}
- \@sponsors\par
- \fi
- \par\nointerlineskip\addvspace{\c_ptxcd_rulesep_dim}
- \rule{\linewidth}{\g_ptxcd_titlerule_dim}
- }
- }
- }
+ \bool_if:nF {\seq_if_empty_p:N \g_ptxcd_sponsors_seq && \tl_if_empty_p:N \@sponsors} {
+ \hbox_gset:Nn \g_ptxcd_sponsor_box {
+ \edef\height{\noexpand\dimexpr\dim_eval:n {\__ptxcd_logosep: + .5\c_ptxcd_logoheight_dim}}
+ \parbox[t]{\textwidth}{
+ \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip
+ \addvspace{\c_ptxcd_rulesep_dim}
+ \seq_use:Nn \g_ptxcd_sponsors_seq {\hfill}
+ \ifhmode\par\fi
+ \ifx\@sponsors\@empty
+ \else
+ \addvspace{.1\c_ptxcd_logoheight_dim}
+ \@sponsors\par
+ \fi
+ \par\nointerlineskip\addvspace{\c_ptxcd_rulesep_dim}
+ \rule{\linewidth}{\g_ptxcd_titlerule_dim}
+ }
+ }
+ }
}
\DeclareNewPageStyleByLayers{title.TUDa}{title.TUDa.background,title.TUDa.rule,title.TUDa.image}
-
-%Logos
-
\if_bool:N \g_ptxcd_pdfx_bool
- %%hyperref
- \hypersetup{hidelinks, unicode}
- \iow_new:N \ptxcd_xmpdata_stream
- \tl_new:N \g_ptxcd_xmp_title_tl
- \tl_new:N \g_ptxcd_xmp_author_tl
-
- \cs_if_exist:NF \prop_gput_if_new:Nnx {
- \cs_generate_variant:Nn \prop_gput_if_new:Nnn {Nnx}
- }
-
- \cs_if_exist:NF \tl_to_str:V {\cs_generate_variant:Nn \tl_to_str:N {V}}
-
- \cs_new:Nn \ptxcd_pass_TitleData: {
- \iow_open:Nn \ptxcd_xmpdata_stream {\jobname.xmpdata}
- \begingroup
- \def\newline{}
- \def\\{}
- \let\thanks\use_none:n
- \cs_set:Npn \and {\exp_not:n {\exp_not:N \sep}}
- \use:c {Hy@pdfstringtrue}
- \tl_gset:Nf \g_ptxcd_xmp_title_tl {\@title}
- \prop_gput_if_new:Nnx \g_ptxcd_MetaData_prop {Title} {\tl_to_str:V \g_ptxcd_xmp_title_tl}
- \prop_if_in:NnF \g_ptxcd_MetaData_prop {Author} {
- \tl_gset:Nx \g_ptxcd_xmp_author_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \sep}}
- \tl_gset:Nx \g_ptxcd_xmp_author_tl {\g_ptxcd_xmp_author_tl}
- \prop_gput:Nnx \g_ptxcd_MetaData_prop {Author} {\tl_to_str:V \g_ptxcd_xmp_author_tl}
- }
- \prop_gput_if_new:Nnn \g_ptxcd_MetaData_prop {Publisher}{TU~Darmstadt}
- \prop_gput_if_new:Nnn \g_ptxcd_MetaData_prop {Creator}{LaTeX~using~TUDa-CI}
- \use:c {pdfx@localcommands}%should be held inside group
- \prop_map_function:NN \g_ptxcd_MetaData_prop \ptxcd_write_xmp_line:nn
- \endgroup
- \iow_close:N \ptxcd_xmpdata_stream
- \let\ptxcd_pass_TitleData:\relax
- }
- \cs_new:Nn \ptxcd_write_xmp_line:nn {
- \begingroup
- \cs_set:Npn \sep {\exp_not:N \sep}
- \cs_if_exist:cTF {#1}{
- \iow_now:Nx \ptxcd_xmpdata_stream {
- \c_backslash_str #1 {\exp_not:n {#2}}
- }
- }{
- \msg_error:nnn{tudapub} {unknown-metadata} {#1}
- }
- \endgroup
- }
-
- \prop_new:N \g_ptxcd_MetaData_prop
-
- \newcommand*{\Metadata}[1]{
- \keyval_parse:NNn \use_none:n \ptxcd_set_metadata_prop:nn
- {#1}
- }
-
- \cs_set:Nn \ptxcd_set_metadata_prop:nn {
- %Fallback test for older kernels doesn't support mixed case eintries
- \cs_if_exist:NTF \text_titlecase_first:n {
- \exp_args:NNf \prop_gput:Nnn \g_ptxcd_MetaData_prop {\text_titlecase_first:n {#1}} {#2}
- } {
- \exp_args:NNx \prop_gput:Nnn \g_ptxcd_MetaData_prop {
- \str_uppercase:f {\tl_head:n {#1}}
- \str_lowercase:f {\tl_tail:n {#1}}
- } {#2}
- }
- }
-
- \msg_new:nnnn{tudapub} {unknown-metadata} {
- You~ used~ the~ #1~ metadata~ entry.\\
- I~ don't~ know~ how~ to~ handle~ that.\\
- It~ will~ be~ ignored.
- } {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.}
+ \iow_new:N \ptxcd_xmpdata_stream
+ \tl_new:N \g_ptxcd_xmp_title_tl
+ \tl_new:N \g_ptxcd_xmp_author_tl
+
+ \cs_if_exist:NF \prop_gput_if_new:Nnx {
+ \cs_generate_variant:Nn \prop_gput_if_new:Nnn {Nnx}
+ }
+
+ \cs_if_exist:NF \tl_to_str:V {\cs_generate_variant:Nn \tl_to_str:N {V}}
+
+ \cs_new:Nn \ptxcd_pass_TitleData: {
+ \iow_open:Nn \ptxcd_xmpdata_stream {\jobname.xmpdata}
+ \begingroup
+ \def\newline{}
+ \def\\{}
+ \let\thanks\use_none:n
+ \cs_set:Npn \and {\exp_not:n {\exp_not:N \sep}}
+ \use:c {Hy@pdfstringtrue}
+ \tl_gset:Nf \g_ptxcd_xmp_title_tl {\@title}
+ \prop_gput_if_new:Nnx \g_ptxcd_MetaData_prop {Title} {\tl_to_str:V \g_ptxcd_xmp_title_tl}
+ \prop_if_in:NnF \g_ptxcd_MetaData_prop {Author} {
+ \tl_gset:Nx \g_ptxcd_xmp_author_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \sep}}
+ \tl_gset:Nx \g_ptxcd_xmp_author_tl {\g_ptxcd_xmp_author_tl}
+ \prop_gput:Nnx \g_ptxcd_MetaData_prop {Author} {\tl_to_str:V \g_ptxcd_xmp_author_tl}
+ }
+ \prop_gput_if_new:Nnn \g_ptxcd_MetaData_prop {Publisher}{TU~Darmstadt}
+ \prop_gput_if_new:Nnn \g_ptxcd_MetaData_prop {Creator}{LaTeX~using~TUDa-CI}
+ \use:c {pdfx@localcommands}%should be held inside group
+ \prop_map_function:NN \g_ptxcd_MetaData_prop \ptxcd_write_xmp_line:nn
+ \endgroup
+ \iow_close:N \ptxcd_xmpdata_stream
+ \let\ptxcd_pass_TitleData:\relax
+ }
+ \cs_new:Nn \ptxcd_write_xmp_line:nn {
+ \begingroup
+ \cs_set:Npn \sep {\exp_not:N \sep}
+ \cs_if_exist:cTF {#1}{
+ \iow_now:Nx \ptxcd_xmpdata_stream {
+ \c_backslash_str #1 {\exp_not:n {#2}}
+ }
+ }{
+ \msg_error:nnn{tuda-ci} {unknown-metadata} {#1}
+ }
+ \endgroup
+ }
+
+ \prop_new:N \g_ptxcd_MetaData_prop
+
+ \newcommand*{\Metadata}[1]{
+ \keyval_parse:NNn \use_none:n \ptxcd_set_metadata_prop:nn
+ {#1}
+ }
+
+ \cs_set:Nn \ptxcd_set_metadata_prop:nn {
+ % Fallback test for older kernels doesn't support mixed case eintries
+ \cs_if_exist:NTF \text_titlecase_first:n {
+ \exp_args:NNf \prop_gput:Nnn \g_ptxcd_MetaData_prop {\text_titlecase_first:n {#1}} {#2}
+ } {
+ \exp_args:NNx \prop_gput:Nnn \g_ptxcd_MetaData_prop {
+ \str_uppercase:f {\tl_head:n {#1}}
+ \str_lowercase:f {\tl_tail:n {#1}}
+ } {#2}
+ }
+ }
+ \msg_new:nnnn{tuda-ci} {unknown-metadata} {
+ You~ used~ the~ #1~ metadata~ entry.\\
+ I~ don't~ know~ how~ to~ handle~ that.\\
+ It~ will~ be~ ignored.
+ } {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.}
\else:
- \PassOptionsToPackage{hidelinks, unicode}{hyperref}
- \RequirePackage{hyperref}
- \hypersetup{pdfcreator=LaTeX~using~TUDa-CI}
-
- \msg_new:nnnn {tudapub} {metadata-to-hypersetup} {
- You~don't~use~pdfx.~
- Here~the~\string\Metadata\~command~only~exists~for~compatibility~reasons.\\
- I~will~pass~the~data~to~ḩypersetup.
- }{
- If~possible~please~use~hyperref's~\strung\hypersetup~command~for~the~metadata~directly.\\
- See~hyperref~documentation~for~details~on~usage.
- }
-
- \newcommand*{\Metadata}[1]{
- \tl_set:Nn \l_tmpa_tl {#1}
- \tl_replace_all:Nnn \l_tmpa_tl {\sep} {;~}% pdfx-Syntax compatibility
- \clist_map_inline:Nn \l_tmpa_tl {
- \exp_args:Nx \hypersetup{pdf\tl_trim_spaces:n {##1}}
- }
- \msg_warning:nn {tudapub} {metadata-to-hypersetup}
- }
-
-
- \cs_new:Nn \ptxcd_pass_TitleData: {
- % check if pdfmanagement is active
- \prop_if_exist:NTF \g__pdfmanagement_documentproperties_prop {
- \prop_set_eq:NN \l_tmpa_prop \g__pdfmanagement_documentproperties_prop
- } {
- \prop_set_eq:NN \l_tmpa_prop \g__hyp_documentproperties_prop
- }
-
- % title
- \prop_if_in:NnF \l_tmpa_prop {hyperref/pdftitle} {
- \begingroup
- \def\newline{}
- \def\\{}
- \let\thanks\use_none:n
- \tl_gset:Nf \g_tmpa_tl {\@title}
- \endgroup
- \hypersetup{pdftitle={\tl_to_str:V \g_tmpa_tl}}
- }
-
- % author
- \prop_if_in:NnF \l_tmpa_prop {hyperref/pdfauthor} {
- \begingroup
- \def\newline{}
- \def\\{}
- \let\thanks\use_none:n
- \tl_gset:Nx \g_tmpa_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \and}}
- \tl_gset:Nx \g_tmpa_tl {\g_tmpa_tl }
- \endgroup
- \hypersetup{pdfauthor=\g_tmpa_tl}
- }
- }
-
- \bool_if:NF \g_ptxcd_pdfa_bool {
- \msg_new:nnn{tudapub} {no-pdfa}{The~ tudapub~ class~ won't~ create~ PDF/A-mode.}
- \msg_info:nn{tudapub} {no-pdfa}
- }
+ \hypersetup{pdfcreator=LaTeX~using~TUDa-CI}
+ \msg_new:nnnn {tuda-ci} {metadata-to-hypersetup} {
+ You~don't~use~pdfx.~
+ Here~the~\string\Metadata ~command~only~exists~for~compatibility~reasons.\\
+ I~will~pass~the~data~to~ḩypersetup.
+ }{
+ If~possible~please~use~hyperref's~\string\hypersetup~command~for~the~metadata~directly.\\
+ See~hyperref~documentation~for~details~on~usage.
+ }
+
+ \newcommand*{\Metadata}[1]{
+ \tl_set:Nn \l_tmpa_tl {#1}
+ \tl_replace_all:Nnn \l_tmpa_tl {\sep} {;~}% pdfx-Syntax compatibility
+ \clist_map_inline:Nn \l_tmpa_tl {
+ \exp_args:Nx \hypersetup{pdf\tl_trim_spaces:n {##1}}
+ }
+ \msg_warning:nn {tuda-ci} {metadata-to-hypersetup}
+ }
+ \cs_new:Nn \ptxcd_pass_TitleData: {
+ \prop_if_exist:NTF \g__pdfmanagement_documentproperties_prop {
+ \prop_set_eq:NN \l_tmpa_prop \g__pdfmanagement_documentproperties_prop
+ } {
+ \prop_set_eq:NN \l_tmpa_prop \g__hyp_documentproperties_prop
+ }
+ \prop_if_in:NnF \l_tmpa_prop {hyperref/pdftitle} {
+ \begingroup
+ \def\newline{}
+ \def\\{}
+ \let\thanks\use_none:n
+ \tl_gset:Nf \g_tmpa_tl {\@title}
+ \endgroup
+ \hypersetup{pdftitle={\tl_to_str:V \g_tmpa_tl}}
+ }
+ \prop_if_in:NnF \l_tmpa_prop {hyperref/pdfauthor} {
+ \begingroup
+ \def\newline{}
+ \def\\{}
+ \let\thanks\use_none:n
+ \tl_gset:Nx \g_tmpa_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \and}}
+ \tl_gset:Nx \g_tmpa_tl {\g_tmpa_tl }
+ \endgroup
+ \hypersetup{pdfauthor=\g_tmpa_tl}
+ }
+ }
+ \bool_if:NF \g_ptxcd_pdfa_bool {
+ \msg_new:nnn{tuda-ci} {no-pdfa}{The~ tuda\c__ptxcd_base_str\space class~ will~ not~ create~ PDF/A.}
+ \msg_info:nn{tuda-ci} {no-pdfa}
+ }
\fi:
-
-\RequirePackage{bookmark}
-
\box_new:N \g_ptxcd_sponsor_box
\seq_new:N \g_ptxcd_sponsors_seq
\def\AddSponsor{\seq_gput_right:Nn \g_ptxcd_sponsors_seq}
@@ -1058,419 +1017,400 @@
\sponsors{}
\cs_new:Npn \ptxcd_title_footnote:w [#1] #2 {
- \textsuperscript{ \ptxcd_title_footnotestyle:n {#1}}#2
+ \textsuperscript{ \ptxcd_title_footnotestyle:n {#1}}#2
}
\cs_set_eq:NN \ptxcd_title_footnotestyle:n \@fnsymbol
\str_if_eq:VnTF \g_ptxcd_pubType_tl {thesis} {
- \input{tudathesis.cfg}
+ \input{tudathesis.cfg}
} {
-
-\msg_new:nnnn {tudapub} {only-thesis} {You~tried~to~use~\use:c { #1}.~This~macro~is~only~available~for~publications~of~type~thesis}{See~tuda-ci~documentation~for~further~information}
-
-\clist_map_inline:nn {birthplace, group, examdate, submissiondate, tuprints, urn, reviewer} {
- \expandafter\newcommand\csname #1\endcsname[2][]{
- \msg_error:nnn {tudapub} {only-thesis} {#1}
- }
-}
-
-% The following macro is an adapted version of the corresponding KOMA-Script macro
-% Copyright (c) 1994-2019 Markus Kohm [komascript at gmx info]
-\renewcommand*{\maketitle}[1][1]{
- \def\and{,~ }
- \cs_if_exist_use:N \ptxcd_pass_TitleData:
- \if@titlepage
- \edef\titlepage@restore{%
- \noexpand\endgroup
- \noexpand\global\noexpand\@colht\the\@colht
- \noexpand\global\noexpand\@colroom\the\@colroom
- \noexpand\global\vsize\the\vsize
- \noexpand\global\noexpand\@titlepageiscoverpagefalse
- \noexpand\let\noexpand\titlepage@restore\noexpand\relax
- }%
- \ptxcd_disable_marginpar:
- \begin{titlepage}
- \setcounter{page}{%
- #1%
- }%
- \def\thefootnote{\ptxcd_title_footnotestyle:n {\c@footnote}}
- \if@titlepageiscoverpage
- \begingroup
- \topmargin=\dimexpr \coverpagetopmargin-1in\relax
- \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax
- \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax
- \textwidth=\dimexpr
- \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax
- \textheight=\dimexpr
- \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax
- \headheight=0pt
- \headsep=0pt
- \footskip=\baselineskip
- \@colht=\textheight
- \@colroom=\textheight
- \vsize=\textheight
- \columnwidth=\textwidth
- \hsize=\columnwidth
- \linewidth=\hsize
- \else
- \let\titlepage@restore\relax
- \fi
- \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
- \ptxcd_setup_sponsor_box:
- \hbox_gset:Nn \g_ptxcd_title_box {
- \parbox[t]{\linewidth}{
- \begin{minipage}[b]{\bool_if:NT \g__ptxcd_LogoInHead_bool {.75}\linewidth}
- \bool_lazy_and:nnT {\g_ptxcd_colorback_bool} {\g_ptxcd_colorbacktitle_bool} {\color{textonaccentcolor}}
- \tl_if_empty:NF \@titlehead {
- \begin{addmargin}{3mm}
- {\usekomafont{titlehead}{\@titlehead\par}}
- \end{addmargin}
- }
- \begin{addmargin}[\dim_eval:n {\box_if_empty:NF \g_ptxcd_PaperID_box {\box_wd:N\g_ptxcd_PaperID_box+.5\c_ptxcd_logoheight_dim} +3mm}]{3mm}
- \raggedright
- \leavevmode\usekomafont{title}%
- \expandafter\fontsize\ptxcd_title_fontsize:
- \selectfont
- \llap{\raisebox{\dimexpr-\height+.5\baselineskip}[0pt][0pt]{\box_use:N \g_ptxcd_PaperID_box}\hspace{.5\c_ptxcd_logoheight_dim}}
- \@title\strut
- \par
- \box_if_empty:NTF \g_ptxcd_PaperID_box
- {\vskip0pt}
- {\rule{0pt}{.5\c_ptxcd_logoheight_dim}}
- \end{addmargin}
- \end{minipage}%
- \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {\color{textonaccentcolor}}
- \par\nointerlineskip
- \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\vspace{\c_ptxcd_rulesep_dim}
- \begin{addmargin}{3mm}
- \usekomafont{titleinfo}
- \expandafter\fontsize\ptxcd_titleinfo_fontsize:
- \selectfont
- {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}%
- {\ifx\@subject\@empty\else\usekomafont{subject}{\@subject\par}\fi}
- {%
- \usekomafont{author}
- \lineskip 0.75em
- \@author
- \par
- }%
- {\ifx\@date\@empty\else\usekomafont{date}{\@date\par}\fi}%
- {\ifx\@publishers\@empty\else\usekomafont{publishers}{\@publishers \par}\fi}%
- \end{addmargin}
- \tl_if_empty:NF \@thanks {
- \expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont\par
- \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par
- \begin{addmargin}{3mm}
- \let\footnotetext\ptxcd_title_footnote:w
- \@thanks
- \end{addmargin}
- \par\vspace{-\dp\strutbox}
- }
- \normalcolor
- \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par}
- }
- \let\@thanks\@empty
- \ptxcd_adjust_titlepage_style:
- \thispagestyle{title.TUDa}
- \nointerlineskip\box_use:N \g_ptxcd_title_box
- \par
- \vfill
- \box_if_empty:NTF \g_ptxcd_sponsor_box {
- \raisebox{-\c_ptxcd_rulesep_dim}[0pt][0pt]{\rule{\linewidth}{\g_ptxcd_titlerule_dim}}
- }{
- \box_use:N \g_ptxcd_sponsor_box
- }
- \if@twoside
- \@tempswatrue
- \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax
- \else
- \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty
- \@tempswafalse
- \fi\fi
- \fi
- \if@tempswa
- \next@tpage
- \begin{minipage}[t]{\textwidth}
- \@uppertitleback
- \end{minipage}\par
- \vfill
- \begin{minipage}[b]{\textwidth}
- \@lowertitleback
- \end{minipage}\par
- \@thanks\let\@thanks\@empty
- \fi
- \fi
- \ifx\@dedication\@empty
- \else
- \next@tdpage\null\vfill
- {\centering\usekomafont{dedication}{\@dedication \par}}%
- \vskip \z@ \@plus3fill
- \@thanks\let\@thanks\@empty
- \cleardoubleemptypage
- \fi
- \ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi
- \end{titlepage}
- \setcounter{footnote}{0}%
- \global\let\and\relax
- \cleardoublepage
- \ptxcd_restore_typearea:
- \aftergroup\ptxcd_restore_typearea:
- \else
- \par
- \@tempcnta=%
- #1%
- \relax\ifnum\@tempcnta=1\else
- \ClassWarning{\KOMAClassName}{%
- Optional argument of \string\maketitle\space ignored\MessageBreak
- in `titlepage=false' mode%
- }%
- \fi
- \ifx\@uppertitleback\@empty\else
- \ClassWarning{\KOMAClassName}{%
- non empty \string\uppertitleback\space ignored
- by \string\maketitle\MessageBreak
- in `titlepage=false' mode%
- }%
- \fi
- \ifx\@lowertitleback\@empty\else
- \ClassWarning{\KOMAClassName}{%
- non empty \string\lowertitleback\space ignored
- by \string\maketitle\MessageBreak
- in `titlepage=false' mode%
- }%
- \fi
- \begingroup
- \let\titlepage@restore\relax
- \def\thefootnote{\fnsymbol{footnote}}
- \next@tdpage
- \ifx\@extratitle\@empty
- \ifx\@frontispiece\@empty\else \mbox{}\fi
- \else
- \@makeextratitle
- \fi
- \ifx\@frontispiece\@empty
- \ifx\@extratitle\@empty\else\next@tdpage\fi
- \else
- \next@tpage
- \@makefrontispiece
- \next@tdpage
- \fi
- \if@twocolumn
- \twocolumn[\@maketitle]
- \else
- \@maketitle
- \fi
- \ifx\titlepagestyle\@empty\else\thispagestyle{\titlepagestyle}\fi
- \global\let\@thanks\@empty
- \endgroup
- \fi
-}
+ \msg_new:nnnn {tudapub} {only-thesis} {You~tried~to~use~\use:c { #1}.~This~macro~is~only~available~for~publications~of~type~thesis}{See~tuda-ci~documentation~for~further~information}
+
+ \clist_map_inline:nn {birthplace, group, examdate, submissiondate, tuprints, urn, reviewer} {
+ \expandafter\newcommand\csname #1\endcsname[2][]{
+ \msg_error:nnn {tudapub} {only-thesis} {#1}
+ }
+ }
+%% The following macro is an adapted version of the corresponding KOMA-Script macro
+%% Copyright (c) 1994-2019 Markus Kohm [komascript at gmx info]
+ \renewcommand*{\maketitle}[1][1]{
+ \def\and{,~ }
+ \cs_if_exist_use:N \ptxcd_pass_TitleData:
+ \if@titlepage
+ \edef\titlepage@restore{%
+ \noexpand\endgroup
+ \noexpand\global\noexpand\@colht\the\@colht
+ \noexpand\global\noexpand\@colroom\the\@colroom
+ \noexpand\global\vsize\the\vsize
+ \noexpand\global\noexpand\@titlepageiscoverpagefalse
+ \noexpand\let\noexpand\titlepage@restore\noexpand\relax
+ }%
+ \ptxcd_disable_marginpar:
+ \begin{titlepage}
+ \setcounter{page}{%
+ #1%
+ }%
+ \def\thefootnote{\ptxcd_title_footnotestyle:n {\c@footnote}}
+ \if@titlepageiscoverpage
+ \begingroup
+ \topmargin=\dimexpr \coverpagetopmargin-1in\relax
+ \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax
+ \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax
+ \textwidth=\dimexpr
+ \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax
+ \textheight=\dimexpr
+ \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax
+ \headheight=0pt
+ \headsep=0pt
+ \footskip=\baselineskip
+ \@colht=\textheight
+ \@colroom=\textheight
+ \vsize=\textheight
+ \columnwidth=\textwidth
+ \hsize=\columnwidth
+ \linewidth=\hsize
+ \else
+ \let\titlepage@restore\relax
+ \fi
+ \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
+ \ptxcd_setup_sponsor_box:
+ \hbox_gset:Nn \g_ptxcd_title_box {
+ \parbox[t]{\linewidth}{
+ \begin{minipage}[b]{\bool_if:NT \g__ptxcd_logo_head_bool {.75}\linewidth}
+ \bool_lazy_and:nnT {\g_ptxcd_colorback_bool} {\g_ptxcd_colorbacktitle_bool} {\color{textonaccentcolor}}
+ \tl_if_empty:NF \@titlehead {
+ \begin{addmargin}{3mm}
+ {\usekomafont{titlehead}{\@titlehead\par}}
+ \end{addmargin}
+ }
+ \begin{addmargin}[\dim_eval:n {\box_if_empty:NF \g_ptxcd_PaperID_box {\box_wd:N\g_ptxcd_PaperID_box+.5\c_ptxcd_logoheight_dim} +3mm}]{3mm}
+ \raggedright
+ \leavevmode\usekomafont{title}%
+ \expandafter\fontsize\ptxcd_title_fontsize:
+ \selectfont
+ \llap{\raisebox{\dimexpr-\height+.5\baselineskip}[0pt][0pt]{\box_use:N \g_ptxcd_PaperID_box}\hspace{.5\c_ptxcd_logoheight_dim}}
+ \@title\strut
+ \par
+ \box_if_empty:NTF \g_ptxcd_PaperID_box
+ {\vskip0pt}
+ {\rule{0pt}{.5\c_ptxcd_logoheight_dim}}
+ \end{addmargin}
+ \end{minipage}%
+ \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {\color{textonaccentcolor}}
+ \par\nointerlineskip
+ \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\vspace{\c_ptxcd_rulesep_dim}
+ \begin{addmargin}{3mm}
+ \usekomafont{titleinfo}
+ \expandafter\fontsize\ptxcd_titleinfo_fontsize:
+ \selectfont
+ {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}%
+ {\ifx\@subject\@empty\else\usekomafont{subject}{\@subject\par}\fi}
+ {%
+ \usekomafont{author}
+ \lineskip 0.75em
+ \@author
+ \par
+ }%
+ {\ifx\@date\@empty\else\usekomafont{date}{\@date\par}\fi}%
+ {\ifx\@publishers\@empty\else\usekomafont{publishers}{\@publishers \par}\fi}%
+ \end{addmargin}
+ \tl_if_empty:NF \@thanks {
+ \expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont\par
+ \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par
+ \begin{addmargin}{3mm}
+ \let\footnotetext\ptxcd_title_footnote:w
+ \@thanks
+ \end{addmargin}
+ \par\vspace{-\dp\strutbox}
+ }
+ \normalcolor
+ \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par}
+ }
+ \let\@thanks\@empty
+ \ptxcd_adjust_titlepage_style:
+ \thispagestyle{title.TUDa}
+ \nointerlineskip\box_use:N \g_ptxcd_title_box
+ \par
+ \vfill
+ \box_if_empty:NTF \g_ptxcd_sponsor_box {
+ \raisebox{-\c_ptxcd_rulesep_dim}[0pt][0pt]{\rule{\linewidth}{\g_ptxcd_titlerule_dim}}
+ }{
+ \box_use:N \g_ptxcd_sponsor_box
+ }
+ \if@twoside
+ \@tempswatrue
+ \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax
+ \else
+ \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty
+ \@tempswafalse
+ \fi\fi
+ \fi
+ \if@tempswa
+ \next@tpage
+ \begin{minipage}[t]{\textwidth}
+ \@uppertitleback
+ \end{minipage}\par
+ \vfill
+ \begin{minipage}[b]{\textwidth}
+ \@lowertitleback
+ \end{minipage}\par
+ \@thanks\let\@thanks\@empty
+ \fi
+ \fi
+ \ifx\@dedication\@empty
+ \else
+ \next@tdpage\null\vfill
+ {\centering\usekomafont{dedication}{\@dedication \par}}%
+ \vskip \z@ \@plus3fill
+ \@thanks\let\@thanks\@empty
+ \cleardoubleemptypage
+ \fi
+ \ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi
+ \end{titlepage}
+ \setcounter{footnote}{0}%
+ \global\let\and\relax
+ \cleardoublepage
+ \ptxcd_restore_typearea:
+ \aftergroup\ptxcd_restore_typearea:
+ \else
+ \par
+ \@tempcnta=%
+ #1%
+ \relax\ifnum\@tempcnta=1\else
+ \ClassWarning{\KOMAClassName}{%
+ Optional argument of \string\maketitle\space ignored\MessageBreak
+ in `titlepage=false' mode%
+ }%
+ \fi
+ \ifx\@uppertitleback\@empty\else
+ \ClassWarning{\KOMAClassName}{%
+ non empty \string\uppertitleback\space ignored
+ by \string\maketitle\MessageBreak
+ in `titlepage=false' mode%
+ }%
+ \fi
+ \ifx\@lowertitleback\@empty\else
+ \ClassWarning{\KOMAClassName}{%
+ non empty \string\lowertitleback\space ignored
+ by \string\maketitle\MessageBreak
+ in `titlepage=false' mode%
+ }%
+ \fi
+ \begingroup
+ \let\titlepage@restore\relax
+ \def\thefootnote{\fnsymbol{footnote}}
+ \next@tdpage
+ \ifx\@extratitle\@empty
+ \ifx\@frontispiece\@empty\else \mbox{}\fi
+ \else
+ \@makeextratitle
+ \fi
+ \ifx\@frontispiece\@empty
+ \ifx\@extratitle\@empty\else\next@tdpage\fi
+ \else
+ \next@tpage
+ \@makefrontispiece
+ \next@tdpage
+ \fi
+ \if@twocolumn
+ \twocolumn[\@maketitle]
+ \else
+ \@maketitle
+ \fi
+ \ifx\titlepagestyle\@empty\else\thispagestyle{\titlepagestyle}\fi
+ \global\let\@thanks\@empty
+ \endgroup
+ \fi
+ }
}
\newkomafont{paperid}{\sffamily}
\box_new:N \g_ptxcd_PaperID_box
\newcommand*{\SetPaperID}[2]{
- \hbox_gset:Nn \g_ptxcd_PaperID_box {
- \usekomafont{paperid}
- \if@titlepage
- \dim_set:Nn \l_tmpa_dim {\exp_last_unbraced:No \use_i:nn \ptxcd_title_fontsize: + \exp_last_unbraced:No \use_ii:nn \ptxcd_title_fontsize:}
- \else
- \Huge
- \dim_set:Nn \l_tmpa_dim {1.8\baselineskip}
- \fi
- \fontsize{1.1\l_tmpa_dim}{1.1\l_tmpa_dim}
- \selectfont
- #1{\Huge #2}
- }
+ \hbox_gset:Nn \g_ptxcd_PaperID_box {
+ \usekomafont{paperid}
+ \if@titlepage
+ \dim_set:Nn \l_tmpa_dim {\exp_last_unbraced:No \use_i:nn \ptxcd_title_fontsize: + \exp_last_unbraced:No \use_ii:nn \ptxcd_title_fontsize:}
+ \else
+ \Huge
+ \dim_set:Nn \l_tmpa_dim {1.8\baselineskip}
+ \fi
+ \fontsize{1.1\l_tmpa_dim}{1.1\l_tmpa_dim}
+ \selectfont
+ #1{\Huge #2}
+ }
}
-
\renewcommand*{\@maketitle}{%
- \global\@topnum=\z@
- \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
- \vspace*{-\dim_eval:n {
- \headheight
- +\headsep
- +\topskip
- -\box_ht:N\ptxcd_headrule_box
- -\box_dp:N \ptxcd_headrule_box
- }}
- \par
- \nointerlineskip
- \begingroup
- \usekomafont{disposition}
- \hsize=\g_ptxcd_headwidth_dim
- \setlength{\fboxsep}{\z@}
- \def\thefootnote{\ptxcd_title_footnotestyle:n {\c@footnote}}
- \bool_if:NT \g_ptxcd_colorback_bool {\bool_set_true:N \g_ptxcd_colorbacktitle_bool}
- \bool_if:NT \g_ptxcd_colorbacktitle_bool {\colorbox{identbarcolor}}
- {\parbox[t]{\g_ptxcd_headwidth_dim}{
- \rule{\z@}{.5\c_ptxcd_logoheight_dim}\par\nointerlineskip
- \raisebox{-\height}{%
- \begin{minipage}[t]{\dim_eval:n {\linewidth-\__ptxcd_logowidth:-1ex}}
- \bool_if:NT \g_ptxcd_colorbacktitle_bool {\begin{addmargin}{.5\c_ptxcd_largerule_dim}}
- \raggedright
- \bool_if:NT \g_ptxcd_colorback_bool {\color{textonaccentcolor}}
- \tl_if_empty:NF \@titlehead {\usekomafont{titlehead}{\@titlehead\par}}
- \box_if_empty:NF \g_ptxcd_PaperID_box {\begin{addmargin}[\dim_eval:n {\box_wd:N\g_ptxcd_PaperID_box+.5\c_ptxcd_logoheight_dim}]{0pt}}
- \raggedright
- \bool_if:NT \g_ptxcd_colorback_bool {\color{textonaccentcolor}}
- \tl_if_empty:NF \@titlehead {\usekomafont{titlehead}{\@titlehead\par}}
- \leavevmode\usekomafont{title}%
- \Huge
- \llap{\raisebox{\dimexpr-\height+.5\baselineskip}[0pt][0pt]{\box_use:N \g_ptxcd_PaperID_box}\hspace{.5\c_ptxcd_logoheight_dim}}
- \@title\strut
- \par
- \box_if_empty:NTF \g_ptxcd_PaperID_box
- {\vskip1em}
- {\rule{0pt}{.5\c_ptxcd_logoheight_dim}}
- \box_if_empty:NF \g_ptxcd_PaperID_box {\end{addmargin}}
- \bool_if:NTF \g_ptxcd_colorbacktitle_bool {\end{addmargin}} {\par}
- \vspace{\dim_eval:n {\c_ptxcd_largerule_dim+\c_ptxcd_rulesep_dim}}
- \end{minipage}
- }
- \hfill
- \raisebox{-\height}{
- \ptxcd_setup_title_box:
- \makebox[\__ptxcd_logowidth:][l]{
- \box_use:N \g_ptxcd_title_info_box
- }
- }
- \dim_compare:nNnTF {\box_ht:N \g_ptxcd_title_info_box + \box_ht:N \g_ptxcd_title_info_box} > {(\__ptxcd_logowidth:)/2}
- {\vspace{\c_ptxcd_largerule_dim}}
- {\vspace{.5\c_ptxcd_logoheight_dim}}
- \par
- }}
- \par
- \nointerlineskip
- \rule{\g_ptxcd_headwidth_dim}{\g_ptxcd_titlerule_dim}
- \begin{addmargin}{.5\c_ptxcd_largerule_dim}
- \Large
- \clist_map_inline:nn {subtitle, subject, author, date, publishers}
- {\tl_if_empty:cF {@##1} {{\usekomafont{##1}\use:c {@##1}\par}}}
- \vspace{\c_ptxcd_rulesep_dim}
- \end{addmargin}
- \tl_if_empty:NF \@thanks {
- \par\nointerlineskip
- \rule{\g_ptxcd_headwidth_dim}{\g_ptxcd_titlerule_dim}
- \expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont
- \begin{addmargin}{.5\c_ptxcd_largerule_dim}
- \let\footnotetext\ptxcd_title_footnote:w
- \@thanks
- \vspace{\c_ptxcd_rulesep_dim}
- \end{addmargin}
- \par
- \let\@thanks\@empty
- }
- \par\nointerlineskip
- \rule{\g_ptxcd_headwidth_dim}{\g_ptxcd_titlerule_dim}
- \par
- \endgroup
- \vskip .5\c_ptxcd_logoheight_dim
+ \global\@topnum=\z@
+ \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
+ \vspace*{-\dim_eval:n {
+ \headheight
+ +\headsep
+ +\topskip
+ -\box_ht:N\ptxcd_headrule_box
+ -\box_dp:N \ptxcd_headrule_box
+ }}
+ \par
+ \nointerlineskip
+ \begingroup
+ \usekomafont{disposition}
+ \hsize=\g_ptxcd_headwidth_dim
+ \setlength{\fboxsep}{\z@}
+ \def\thefootnote{\ptxcd_title_footnotestyle:n {\c@footnote}}
+ \bool_if:NT \g_ptxcd_colorback_bool {\bool_set_true:N \g_ptxcd_colorbacktitle_bool}
+ \bool_if:NT \g_ptxcd_colorbacktitle_bool {\colorbox{identbarcolor}}
+ {\parbox[t]{\g_ptxcd_headwidth_dim}{
+ \rule{\z@}{.5\c_ptxcd_logoheight_dim}\par\nointerlineskip
+ \raisebox{-\height}{%
+ \begin{minipage}[t]{\dim_eval:n {\linewidth-\__ptxcd_logowidth:-1ex}}
+ \bool_if:NT \g_ptxcd_colorbacktitle_bool {\begin{addmargin}{.5\c_ptxcd_largerule_dim}}
+ \raggedright
+ \bool_if:NT \g_ptxcd_colorback_bool {\color{textonaccentcolor}}
+ \tl_if_empty:NF \@titlehead {\usekomafont{titlehead}{\@titlehead\par}}
+ \box_if_empty:NF \g_ptxcd_PaperID_box {\begin{addmargin}[\dim_eval:n {\box_wd:N\g_ptxcd_PaperID_box+.5\c_ptxcd_logoheight_dim}]{0pt}}
+ \raggedright
+ \bool_if:NT \g_ptxcd_colorback_bool {\color{textonaccentcolor}}
+ \tl_if_empty:NF \@titlehead {\usekomafont{titlehead}{\@titlehead\par}}
+ \leavevmode\usekomafont{title}%
+ \Huge
+ \llap{\raisebox{\dimexpr-\height+.5\baselineskip}[0pt][0pt]{\box_use:N \g_ptxcd_PaperID_box}\hspace{.5\c_ptxcd_logoheight_dim}}
+ \@title\strut
+ \par
+ \box_if_empty:NTF \g_ptxcd_PaperID_box
+ {\vskip1em}
+ {\rule{0pt}{.5\c_ptxcd_logoheight_dim}}
+ \box_if_empty:NF \g_ptxcd_PaperID_box {\end{addmargin}}
+ \bool_if:NTF \g_ptxcd_colorbacktitle_bool {\end{addmargin}} {\par}
+ \vspace{\dim_eval:n {\c_ptxcd_largerule_dim+\c_ptxcd_rulesep_dim}}
+ \end{minipage}
+ }
+ \hfill
+ \raisebox{-\height}{
+ \ptxcd_setup_title_box:
+ \makebox[\__ptxcd_logowidth:][l]{
+ \box_use:N \g_ptxcd_title_info_box
+ }
+ }
+ \dim_compare:nNnTF {\box_ht:N \g_ptxcd_title_info_box + \box_ht:N \g_ptxcd_title_info_box} > {(\__ptxcd_logowidth:)/2}
+ {\vspace{\c_ptxcd_largerule_dim}}
+ {\vspace{.5\c_ptxcd_logoheight_dim}}
+ \par
+ }}
+ \par
+ \nointerlineskip
+ \rule{\g_ptxcd_headwidth_dim}{\g_ptxcd_titlerule_dim}
+ \begin{addmargin}{.5\c_ptxcd_largerule_dim}
+ \Large
+ \clist_map_inline:nn {subtitle, subject, author, date, publishers}
+ {\tl_if_empty:cF {@##1} {{\usekomafont{##1}\use:c {@##1}\par}}}
+ \vspace{\c_ptxcd_rulesep_dim}
+ \end{addmargin}
+ \tl_if_empty:NF \@thanks {
+ \par\nointerlineskip
+ \rule{\g_ptxcd_headwidth_dim}{\g_ptxcd_titlerule_dim}
+ \expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont
+ \begin{addmargin}{.5\c_ptxcd_largerule_dim}
+ \let\footnotetext\ptxcd_title_footnote:w
+ \@thanks
+ \vspace{\c_ptxcd_rulesep_dim}
+ \end{addmargin}
+ \par
+ \let\@thanks\@empty
+ }
+ \par\nointerlineskip
+ \rule{\g_ptxcd_headwidth_dim}{\g_ptxcd_titlerule_dim}
+ \par
+ \endgroup
+ \vskip .5\c_ptxcd_logoheight_dim
}%
-
%%Abstract anpassungen mit Sprache
\providecommand{\abstract}{}% für book
\RenewDocumentEnvironment{abstract}{o}{
- \begingroup
- \IfNoValueF{#1}{\selectlanguage{#1}}
- \bool_set_true:N \l_tmpa_bool
- \cs_if_exist:NT \if@abstrt {
- \if@abstrt
- \else
- \bool_set_false:NT \l_tmpa_bool
- \fi
- }
- \bool_if:NT \l_tmpa_bool {
- \scr@ifundefinedorrelax{chapter}{%
- \Iftocfeature{toc}{leveldown}
- {\subsection*}
- {\section*}
- }{
- \Iftocfeature{toc}{leveldown}
- {\section*}
- {\chapter*}
- } {\abstractname}
-
-}}{
- \endgroup
-}
-
-
-%Anpassungen marginpar
+ \begingroup
+ \IfNoValueF{#1}{\selectlanguage{#1}}
+ \bool_set_true:N \l_tmpa_bool
+ \cs_if_exist:NT \if@abstrt {
+ \if@abstrt
+ \else
+ \bool_set_false:NT \l_tmpa_bool
+ \fi
+ }
+ \bool_if:NT \l_tmpa_bool {
+ \scr@ifundefinedorrelax{chapter}{%
+ \Iftocfeature{toc}{leveldown}
+ {\subsection*}
+ {\section*}
+ }{
+ \Iftocfeature{toc}{leveldown}
+ {\section*}
+ {\chapter*}
+ } {\abstractname}
+
+ }}{
+ \endgroup
+}
\cs_set_eq:NN\ptxcd_orig@marginpar:w \marginpar
\newkomafont{marginpar}{\accentfont\color{textaccentcolor}}
\RenewDocumentCommand{\marginpar}{om}{
- \IfNoValueTF{#1}{
- \ptxcd_orig@marginpar:w {\leavevmode\usekomafont{marginpar}#2}
- }{
- \ptxcd_orig@marginpar:w [{\leavevmode\usekomafont{marginpar}#1}]{\leavevmode\usekomafont{marginpar}#2}
- }
+ \IfNoValueTF{#1}{
+ \ptxcd_orig@marginpar:w {\leavevmode\usekomafont{marginpar}#2}
+ }{
+ \ptxcd_orig@marginpar:w [{\leavevmode\usekomafont{marginpar}#1}]{\leavevmode\usekomafont{marginpar}#2}
+ }
}
\ptxcd_declare_caption:Nnn \authorandname {und} {and}
\ptxcd_declare_caption:Nnn \ptxcd_datename {Datum}{Date}
-
\gdef\ptxcd_dateseparator{:~}
-
-
\providecommand*{\frontmatter}{
- \if@twoside\cleardoublepage\else\clearpage\fi \@mainmattertrue
- \pagenumbering {roman}
+ \if@twoside\cleardoublepage\else\clearpage\fi \@mainmattertrue
+ \pagenumbering {roman}
}
-
\providecommand*{\mainmatter}{
- \if@twoside\cleardoublepage\else\clearpage\fi \@mainmattertrue
- \pagenumbering {arabic}
+ \if@twoside\cleardoublepage\else\clearpage\fi \@mainmattertrue
+ \pagenumbering {arabic}
}
-
\providecommand*{\backmatter}{
- \if@twoside\cleardoublepage\else\clearpage\fi \@mainmatterfalse
+ \if@twoside\cleardoublepage\else\clearpage\fi \@mainmatterfalse
}
-
-
-%IMRAD:Introduction
\seq_if_exist:NTF \seq_const_from_clist:Nn {
- \seq_const_from_clist:Nn \c_ptxcd_IMRAD_seq {introduction, methods, results, discussion}
+ \seq_const_from_clist:Nn \c_ptxcd_IMRAD_seq {introduction, methods, results, discussion}
} {
- \seq_new:N \c_ptxcd_IMRAD_seq
- \seq_gset_from_clist:Nn \c_ptxcd_IMRAD_seq {introduction, methods, results, discussion}
+ \seq_new:N \c_ptxcd_IMRAD_seq
+ \seq_gset_from_clist:Nn \c_ptxcd_IMRAD_seq {introduction, methods, results, discussion}
}
-
\newcommand*{\IMRADlabel}[1]{
- \seq_if_in:NnTF \c_ptxcd_IMRAD_seq {#1}
- {\label{IMRAD:#1}}
- {\msg_error:nnnn {tudapub} {undefined-IMRADlabel}{#1}{\seq_use:Nn \c_ptxcd_IMRAD_seq {,}}}
+ \seq_if_in:NnTF \c_ptxcd_IMRAD_seq {#1}
+ {\label{IMRAD:#1}}
+ {\msg_error:nnnn {tudapub} {undefined-IMRADlabel}{#1}{\seq_use:Nn \c_ptxcd_IMRAD_seq {,}}}
}
-
-
\bool_if:NT \g_ptxcd_IMRAD_bool {
- \AtEndDocument{
- \seq_map_inline:Nn \c_ptxcd_IMRAD_seq {
- \cs_if_exist:cF {r@IMRAD:#1} {
- \msg_warning:nnn {tudapub} {missing-IMRADlabel} {#1}
- }
- }
- }
+ \AtEndDocument{
+ \seq_map_inline:Nn \c_ptxcd_IMRAD_seq {
+ \cs_if_exist:cF {r@IMRAD:#1} {
+ \msg_warning:nnn {tudapub} {missing-IMRADlabel} {#1}
+ }
+ }
+ }
}
\msg_new:nnn {tudapub} {undefined-IMRADlabel} {
- You~tried~to~set~an~IMRAD~label~with~key~#1.\\
- This~label~type~is~not~declared.\\
- Possible~labels~are:~#2
+ You~tried~to~set~an~IMRAD~label~with~key~#1.\\
+ This~label~type~is~not~declared.\\
+ Possible~labels~are:~#2
}
-
\msg_new:nnn{tudapub} {missing-IMRADlabel} {
- You~did~not~provide~a~Label~for~key~#1.\\
- Either~you~need~to~recompile~your~document~or~add~a~label~using~\string\IMRADlabel.
+ You~did~not~provide~a~Label~for~key~#1.\\
+ Either~you~need~to~recompile~your~document~or~add~a~label~using~\string\IMRADlabel.
}
-
-%backwards compatibility for KOMA-Script
\cs_if_exist:NF \Iftocfeature{
- \let\Iftocfeature\iftocfeature
+ \let\Iftocfeature\iftocfeature
}
\file_if_exist_input:n {\g__ptxcd_config_prefix_tl\g_ptxcd_department_str.cfg}
+
\endinput
-%End of class tudapub.cls
+%%
+%% End of file `tudapub.cls'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudarules.sty b/Master/texmf-dist/tex/latex/tuda-ci/tudarules.sty
index 98182d08c18..226dba858f6 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudarules.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudarules.sty
@@ -1,10 +1,18 @@
-%% This is file `tudarules.sty' version 3.41 (2024-07-02),
+%%
+%% This is file `tudarules.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudarules.dtx (with options: `package')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,156 +21,138 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\def\fileversion{3.41}
-\def\filedate{2024-07-02}
-\NeedsTeXFormat{LaTeX2e}
-
-\ProvidesExplPackage{tudarules}{\filedate}{\fileversion}{Creation of colored bars for tuda-ci bundle}
-
+%%
+\NeedsTeXFormat{LaTeX2e}[2020/10/01]
+\ProvidesExplPackage{tudarules}{2025-01-26}{4.00}{Creation of colored bars for the tuda-ci bundle}
\str_if_exist:NF \g_ptxcd_department_str {
- \str_new:N \g_ptxcd_department_str
- \str_gset:Nn \g_ptxcd_department_str {default}
+ \str_new:N \g_ptxcd_department_str
+ \str_gset:Nn \g_ptxcd_department_str {default}
}
-
\bool_new:N \g_ptxcd_simple_rules_bool
\dim_new:N \g_ptxcd_titlerule_dim
-
\seq_if_exist:NF \l_ptxcd_tmpa_seq {\seq_new:N \l_ptxcd_tmpa_seq}
\tl_if_exist:NF \l_ptxcd_tmpa_tk {\tl_new:N \l_ptxcd_tmpa_tl}
-
\cs_new:Nn \ptxcd_rules_set_values:n {
- \seq_set_split:Nnn \l_ptxcd_tmpa_seq {|} {#1}
-
- \int_step_inline:nnnn {1} {1} {4} {
- \tl_set:Nn \l_ptxcd_tmpa_tl {c_ptxcd_
- \clist_item:nn {largerule, rulesep, smallrule, logoheight} {##1}
- _dim}
- \dim_if_exist:cT {\l_ptxcd_tmpa_tl} {\cs_undefine:c {\l_ptxcd_tmpa_tl}}
- \dim_const:cn {\l_ptxcd_tmpa_tl} {\seq_item:Nn \l_ptxcd_tmpa_seq {##1}}
- }
- \dim_gset:Nn \g_ptxcd_titlerule_dim {.5\c_ptxcd_smallrule_dim}
+ \seq_set_split:Nnn \l_ptxcd_tmpa_seq {|} {#1}
+ \int_step_inline:nnnn {1} {1} {4} {
+ \tl_set:Nn \l_ptxcd_tmpa_tl {c_ptxcd_
+ \clist_item:nn {largerule, rulesep, smallrule, logoheight} {##1}
+ _dim}
+ \dim_if_exist:cT {\l_ptxcd_tmpa_tl} {\cs_undefine:c {\l_ptxcd_tmpa_tl}}
+ \dim_const:cn {\l_ptxcd_tmpa_tl} {\seq_item:Nn \l_ptxcd_tmpa_seq {##1}}
+ }
+ \dim_gset:Nn \g_ptxcd_titlerule_dim {.5\c_ptxcd_smallrule_dim}
}
-
\keys_define:nn {ptxcd/rules} {
- color .tl_gset:N = \g_ptxcd_rules_color_tl,
- blackrule .meta:n = {color=black},
- paper .choice:,
- paper/dl .code:n = { \ptxcd_rules_set_values:n { 3.5mm | 1.4mm | 1.2pt | 17 mm | 0.6pt| 10mm | 14mm}},
- paper/a6 .code:n = { \ptxcd_rules_set_values:n { 3 mm | 1.4mm | 1.2pt | 16.5mm | 0.6pt| 10mm | 15mm}},
- paper/a5 .code:n = { \ptxcd_rules_set_values:n { 3.3mm | 1.4mm | 1.2pt | 19 mm | 0.6pt| 12mm | 16mm}},
- paper/a4 .code:n = { \ptxcd_rules_set_values:n { 4 mm | 1.4mm | 1.2pt | 22 mm | 0.6pt| 15mm | 20mm}},
- paper/a3 .code:n = { \ptxcd_rules_set_values:n { 4.5mm | 1.4mm | 1.2pt | 24.5mm | 0.6pt| 15mm | 20mm}},
- paper/a2 .code:n = { \ptxcd_rules_set_values:n { 8 mm | 2.5mm | 2.2pt | 44.5mm | 1.1pt| 30mm | 35mm}},
- paper/a1 .code:n = { \ptxcd_rules_set_values:n { 10 mm | 3.0mm | 2.8pt | 55.5mm | 1.4pt| 30mm | 35mm}},
- paper/a0 .code:n = { \ptxcd_rules_set_values:n { 16 mm | 5.2mm | 4.8pt | 80 mm | 2.4pt| 30mm | 35mm}},
- paper/slide .code:n = { \ptxcd_rules_set_values:n { 2mm | .7mm | .6pt | 11 mm | .3pt| 7.5mm | 10mm}},
- paper/beamer .meta:n = {paper= slide},
- paper/leaflet .meta:n = {paper=a5},
- color .tl_gset:N = \g_ptxcd_rules_default_color_tl,
- color .initial:n = black,
- mode .tl_gset:N = \g_ptxcd_rules_default_mode_tl,
- mode .initial:n = box,
- department .choice:,
- department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
- department / mecheng .code:n = \str_gset:Nn \g_ptxcd_department_str {mecheng},
- department / unknown .code:n = {
- \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
- },
- mecheng .meta:n = {department=mecheng},
+ color .tl_gset:N = \g_ptxcd_rules_color_tl,
+ blackrule .meta:n = {color=black},
+ paper .choice:,
+ paper/dl .code:n = { \ptxcd_rules_set_values:n { 3.5mm | 1.4mm | 1.2pt | 17 mm | 0.6pt| 10mm | 14mm}},
+ paper/a6 .code:n = { \ptxcd_rules_set_values:n { 3 mm | 1.4mm | 1.2pt | 16.5mm | 0.6pt| 10mm | 15mm}},
+ paper/a5 .code:n = { \ptxcd_rules_set_values:n { 3.3mm | 1.4mm | 1.2pt | 19 mm | 0.6pt| 12mm | 16mm}},
+ paper/a4 .code:n = { \ptxcd_rules_set_values:n { 4 mm | 1.4mm | 1.2pt | 22 mm | 0.6pt| 15mm | 20mm}},
+ paper/a3 .code:n = { \ptxcd_rules_set_values:n { 4.5mm | 1.4mm | 1.2pt | 24.5mm | 0.6pt| 15mm | 20mm}},
+ paper/a2 .code:n = { \ptxcd_rules_set_values:n { 8 mm | 2.5mm | 2.2pt | 44.5mm | 1.1pt| 30mm | 35mm}},
+ paper/a1 .code:n = { \ptxcd_rules_set_values:n { 10 mm | 3.0mm | 2.8pt | 55.5mm | 1.4pt| 30mm | 35mm}},
+ paper/a0 .code:n = { \ptxcd_rules_set_values:n { 16 mm | 5.2mm | 4.8pt | 80 mm | 2.4pt| 30mm | 35mm}},
+ paper/slide .code:n = { \ptxcd_rules_set_values:n { 2mm | .7mm | .6pt | 11 mm | .3pt| 7.5mm | 10mm}},
+ paper/beamer .meta:n = {paper= slide},
+ paper/leaflet .meta:n = {paper=a5},
+ color .tl_gset:N = \g_ptxcd_rules_default_color_tl,
+ color .initial:n = black,
+ mode .tl_gset:N = \g_ptxcd_rules_default_mode_tl,
+ mode .initial:n = box,
+ department .choice:,
+ department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
+ department / mecheng .code:n = \str_gset:Nn \g_ptxcd_department_str {mecheng},
+ department / unknown .code:n = {
+ \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
+ },
+ mecheng .meta:n = {department=mecheng},
}
-
\ProcessKeyOptions[ptxcd/rules]
-
\RequirePackage{tudacolors}
\RequirePackage{xparse}
-
-%Switch between TikZ and box mode
\bool_new:N \g_ptxcd_rule_TikZmode_bool
-
\keys_define:nn {ptxcd/rules} {
- width .dim_gset:N = \l_ptxcd_headrule_width_dim,
- color .tl_gset:N = \l_ptxcd_headrule_color_tl,
- mode .choice:,
- mode / box .code:n = \bool_gset_false:N \g_ptxcd_rule_TikZmode_bool,
- mode / tikz .code:n = \bool_gset_true:N \g_ptxcd_rule_TikZmode_bool,
- mode / TikZ .code:n = \bool_gset_true:N \g_ptxcd_rule_TikZmode_bool,
+ width .dim_gset:N = \l_ptxcd_headrule_width_dim,
+ color .tl_gset:N = \l_ptxcd_headrule_color_tl,
+ mode .choice:,
+ mode / box .code:n = \bool_gset_false:N \g_ptxcd_rule_TikZmode_bool,
+ mode / tikz .code:n = \bool_gset_true:N \g_ptxcd_rule_TikZmode_bool,
+ mode / TikZ .code:n = \bool_gset_true:N \g_ptxcd_rule_TikZmode_bool,
}
-
-
\cs_if_exist_use:NF \str_case:Vn \str_case:on
- \g_ptxcd_department_str {
- {mecheng} {\bool_gset_true:N \g_ptxcd_simple_rules_bool}
+\g_ptxcd_department_str {
+ {mecheng} {\bool_gset_true:N \g_ptxcd_simple_rules_bool}
}
-
\cs_new:Nn \__ptxcd_logowidth: {\dim_eval:n {2.2\c_ptxcd_logoheight_dim}}
\cs_new:Nn \__ptxcd_logosep:{\dim_eval:n {0.3\c_ptxcd_logoheight_dim}}
-
\NewDocumentCommand{\ptxcd_makeheadrule}{som}{
- \keys_set:nn {ptxcd/rules} {
- %TODO maybe package options for default
- width=\textwidth,
- }
- \exp_args:Nnx \keys_set:nn {ptxcd/rules} {
- mode= \g_ptxcd_rules_default_mode_tl,
- color= \g_ptxcd_rules_default_color_tl
- }
- \IfNoValueF {#2} {\keys_set:nn {ptxcd/rules}{#2}}
- \IfBooleanF {#1} {\box_if_exist:cF {#3_box} {\box_new:c {#3_box}}}
- \bool_if:NTF \g_ptxcd_simple_rules_bool {
- \IfBooleanTF {#1} \use_none:n \hbox_gset:cn
- {#3_box}
- {
- \color{\l_ptxcd_headrule_color_tl}
- \raisebox{-\height}{\rule{\l_ptxcd_headrule_width_dim}{.5\c_ptxcd_largerule_dim}}
- }
- }{
- \bool_if:NTF \g_ptxcd_rule_TikZmode_bool {
- \IfBooleanTF {#1} \use_none:n \hbox_gset:cn
- {#3_box} {
- \begin{tikzpicture}
- \fill[\l_ptxcd_headrule_color_tl](0,\c_ptxcd_rulesep_dim)rectangle++(\l_ptxcd_headrule_width_dim,\c_ptxcd_largerule_dim);
- \fill(0,0)rectangle(\l_ptxcd_headrule_width_dim,-\c_ptxcd_smallrule_dim);
- \end{tikzpicture}
- }
- }{
- \IfBooleanTF {#1} \use_none:n \hbox_gset:cn
- {#3_box}
- {
- \parbox[t]{\l_ptxcd_headrule_width_dim}{
- \setlength{\baselineskip}{\z@}
- \null\par\nointerlineskip
- \textcolor{\l_ptxcd_headrule_color_tl}{\rule{\linewidth}{\c_ptxcd_largerule_dim}}
- \vspace{\c_ptxcd_rulesep_dim}\par\nointerlineskip
- \rule{\linewidth}{\c_ptxcd_smallrule_dim}
- }
- }
- }
- }
- \IfBooleanF {#1} {\cs_set:cpn {#3} {\box_use:c {#3_box}}}
+ \keys_set:nn {ptxcd/rules} {
+ %TODO maybe package options for default
+ width=\textwidth,
+ }
+ \exp_args:Nnx \keys_set:nn {ptxcd/rules} {
+ mode= \g_ptxcd_rules_default_mode_tl,
+ color= \g_ptxcd_rules_default_color_tl
+ }
+ \IfNoValueF {#2} {\keys_set:nn {ptxcd/rules}{#2}}
+ \IfBooleanF {#1} {\box_if_exist:cF {#3_box} {\box_new:c {#3_box}}}
+ \bool_if:NTF \g_ptxcd_simple_rules_bool {
+ \IfBooleanTF {#1} \use_none:n \hbox_gset:cn
+ {#3_box}
+ {
+ \color{\l_ptxcd_headrule_color_tl}
+ \raisebox{-\height}{\rule{\l_ptxcd_headrule_width_dim}{.5\c_ptxcd_largerule_dim}}
+ }
+ }{
+ \bool_if:NTF \g_ptxcd_rule_TikZmode_bool {
+ \IfBooleanTF {#1} \use_none:n \hbox_gset:cn
+ {#3_box} {
+ \begin{tikzpicture}
+ \fill[\l_ptxcd_headrule_color_tl](0,\c_ptxcd_rulesep_dim)rectangle++(\l_ptxcd_headrule_width_dim,\c_ptxcd_largerule_dim);
+ \fill(0,0)rectangle(\l_ptxcd_headrule_width_dim,-\c_ptxcd_smallrule_dim);
+ \end{tikzpicture}
+ }
+ }{
+ \IfBooleanTF {#1} \use_none:n \hbox_gset:cn
+ {#3_box}
+ {
+ \parbox[t]{\l_ptxcd_headrule_width_dim}{
+ \setlength{\baselineskip}{\z@}
+ \null\par\nointerlineskip
+ \textcolor{\l_ptxcd_headrule_color_tl}{\rule{\linewidth}{\c_ptxcd_largerule_dim}}
+ \vspace{\c_ptxcd_rulesep_dim}\par\nointerlineskip
+ \rule{\linewidth}{\c_ptxcd_smallrule_dim}
+ }
+ }
+ }
+ }
+ \IfBooleanF {#1} {\cs_set:cpn {#3} {\box_use:c {#3_box}}}
}
-
\NewDocumentCommand{\ptxcd_makefootrule}{som}{
- \keys_set:nn {ptxcd/rules} {
- width= \textwidth
- }
- \IfNoValueF {#2} {\keys_set:nn {ptxcd/rules}{#2}}
- \IfBooleanF {#1} {\box_new:c {#3_box}}
- \IfBooleanTF {#1} \use_none:n \hbox_gset:cn {#3_box} {
- \raisebox{-\height}{\rule{\l_ptxcd_headrule_width_dim}{\g_ptxcd_titlerule_dim}}
- }
- \IfBooleanF{#1} {\cs_new:cpn {#3} {\box_use:c {#3_box}}}
+ \keys_set:nn {ptxcd/rules} {
+ width= \textwidth
+ }
+ \IfNoValueF {#2} {\keys_set:nn {ptxcd/rules}{#2}}
+ \IfBooleanF {#1} {\box_new:c {#3_box}}
+ \IfBooleanTF {#1} \use_none:n \hbox_gset:cn {#3_box} {
+ \raisebox{-\height}{\rule{\l_ptxcd_headrule_width_dim}{\g_ptxcd_titlerule_dim}}
+ }
+ \IfBooleanF{#1} {\cs_new:cpn {#3} {\box_use:c {#3_box}}}
}
-
\endinput
+%%
+%% End of file `tudarules.sty'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudasciposter.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudasciposter.cls
index 71e8123ef10..d1abede6134 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudasciposter.cls
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudasciposter.cls
@@ -1,10 +1,23 @@
-%% This is file `tudasciposter.cls' version 3.41 (2024-07-02),
+%%
+%% This is file `tudasciposter.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudasciposter.dtx (with options: `class,initialization')
+%% tuda-ci.dtx (with options: `options,sciposter,print,pdfa')
+%% tudasciposter.dtx (with options: `class,packages')
+%% tuda-ci.dtx (with options: `pdfx')
+%% tudasciposter.dtx (with options: `class,body')
+%% tuda-ci.dtx (with options: `xmpdata')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,634 +26,674 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\def\fileversion{3.41}
-\def\filedate{2024-07-02}
-\NeedsTeXFormat{LaTeX2e}
-
-\ProvidesExplPackage{tudasciposter}{\filedate}{\fileversion}{Scientific Poster Layout for TU Darmstadt}
-
+%%
+\NeedsTeXFormat{LaTeX2e}[2022/06/01]
+\ProvidesExplClass{tudasciposter}{2025-01-26}{4.00}{Scientific Poster Layout for TU Darmstadt}
\prop_new:N \g_ptxcd_clsopts_prop
\tl_new:N \g_ptxcd_boxstyle_tl
\int_new:N \g_ptxcd_paper_int
\str_new:N \g_ptxcd_department_str
\str_const:Nn \c__ptxcd_base_str {sciposter}
-
\keys_define:nn {ptxcd/poster} {
- accentcolor .code:n = {\PassOptionsToPackage{accent =#1}{tudacolors}},
- color .meta:n = {accentcolor = #1},
- textaccentcolor .code:n = {\PassOptionsToPackage{textaccent =#1}{tudacolors}},
- identbarcolor .code:n = {\PassOptionsToPackage{identbar =#1}{tudacolors}},
- titletext .code:n = {\PassOptionsToPackage{text =#1}{tudacolors}},
- footer .bool_gset:N = \g_ptxcd_poster_foot_bool,
- footer .default:n = true,
- footer .initial:n = true,
- thanks .tl_gset:N = \g_ptxcd_footnote_label_tl,
- thanks .initial:n = arabic*,
- pdfa .bool_gset:N = \g_ptxcd_pdfa_bool,
- pdfa .initial:n = false,
- boxstyle .choice:,
- boxstyle / official .code:n = \tl_gset:Nn \g_ptxcd_boxstyle_tl {TUDa},
- boxstyle / colored .code:n= \tl_gset:Nn \g_ptxcd_boxstyle_tl {TUDa-colored},
- boxstyle / boxed .code:n= \tl_gset:Nn \g_ptxcd_boxstyle_tl {TUDa-boxed},
- boxstyle /default .meta:n = {boxstyle=official},
- boxstyle .initial:n = default,
- unknown .code:n = {\prop_gput:NVn \g_ptxcd_clsopts_prop \l_keys_key_tl {#1}},
- paper .choices:nn = {a0,a1,a2,a3}{
- \int_gset_eq:NN \g_ptxcd_paper_int \l_keys_choice_int
- \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{tudarules}
- \exp_args:Nx \PassOptionsToPackage{\l_keys_choice_tl paper}{geometry}
- },
- paper / landscape .code:n = \PassOptionsToPackage{landscape}{geometry},
- paper / portrait .code:n = \PassOptionsToPackage{portrait}{geometry},
- paper .initial:n = a0,
- fontsize .tl_gset:N = \g_ptxcd_fontsize_tl,
- logofile .tl_gset:N = \g_ptxcd_logofile_tl,
- logofile .initial:n = tuda_logo,
- title .choice:,
- title / default .meta:n = {title=large},
- title / large .code:n = \bool_gset_false:N \g_ptxcd_smalltitle_bool,
- title / small .code:n = \bool_gset_true:N \g_ptxcd_smalltitle_bool,
- title .initial:n = default,
- colorback .bool_gset:N = \g_ptxcd_colorback_bool,
- colorback .initial:n = true,
- department .choice:,
- department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
- department / mecheng .code:n = {
- \str_gset:Nn \g_ptxcd_department_str {mecheng}
- \keys_set:nn {ptxcd/poster} {colorback=false, departmentlogofile=tuda_maschinenbau_logo,titlesepline=false}
- },
- department .initial:n = default,
+ titletext .code:n = {\PassOptionsToPackage{text =#1}{tudacolors}},
+ footer .bool_gset:N = \g_ptxcd_poster_foot_bool,
+ footer .default:n = true,
+ footer .initial:n = true,
+ thanks .tl_gset:N = \g_ptxcd_footnote_label_tl,
+ thanks .initial:n = arabic*,
+ boxstyle .choice:,
+ boxstyle / official .code:n = \tl_gset:Nn \g_ptxcd_boxstyle_tl {TUDa},
+ boxstyle / colored .code:n= \tl_gset:Nn \g_ptxcd_boxstyle_tl {TUDa-colored},
+ boxstyle / boxed .code:n= \tl_gset:Nn \g_ptxcd_boxstyle_tl {TUDa-boxed},
+ boxstyle /default .meta:n = {boxstyle=official},
+ boxstyle .initial:n = default,
+ unknown .code:n = {\prop_gput:NVn \g_ptxcd_clsopts_prop \l_keys_key_tl {#1}},
+ fontsize .tl_gset:N = \g_ptxcd_fontsize_tl,
+ titlesepline .bool_gset:N = \g_ptxcd_titlesepline_bool,
+ titlesepline .initial:n = true,
+ logofile .tl_gset:N = \g_ptxcd_logofile_tl,
+ logofile .initial:n = tuda_logo,
+ accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool,
+ accept-missing-logos .initial:n = false,
+ accept-missing-logos .usage:n = load,
+ accept-missing-logos .default:n = true,
+ department .choice:,
+ department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default},
+ department / mecheng .code:n = {
+ \str_gset:Nn \g_ptxcd_department_str {mecheng}
+ \exp_args:Ne \keys_set:ne {
+
+ ptxcd / poster
+ }{
+ colorback=false,
+ departmentlogofile=tuda_maschinenbau_logo,
+ titlesepline=false
+ }
+ },
+
+ department .initial:n = default,
department / unknown .code:n = {
- \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
- },,
- departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl,
- departmentconfigprefix .initial:n = tuda,
- mecheng .meta:n = {department=mecheng},
- departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl,
- departmentlogofile .initial:n =,
- titlesepline .bool_gset:N = \g_ptxcd_titlesepline_bool,
- titlesepline .initial:n = true,
+ \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl}
+ },
+ departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl,
+ departmentconfigprefix .initial:n = tuda,
+ departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl,
+ departmentlogofile .initial:n =,
+ mecheng .meta:n = {department=mecheng},
+ pdfa .bool_gset:N = \g_ptxcd_pdfa_bool,
+ pdfa .initial:n =
+ false,
+ pdfx .bool_gset:N = \g_ptxcd_pdfx_bool,
+ pdfx .initial:n = true,
+%% color options
+%% color options
+ color .meta:n = {accentcolor=#1},
+ accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}},
+ textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}},
+ identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}},
+ colorback .bool_gset:N = \g_ptxcd_colorback_bool,
+ colorback .default:n = true,
+ colorback .initial:n = true,
+ paper .choices:nn = {
+ a0,a1,a2,a3
+ }{
+ \int_gset_eq:NN \g_ptxcd_paper_int \l_keys_choice_int
+ \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{tudarules}
+ \exp_args:Nx \PassOptionsToPackage{\l_keys_choice_tl paper}{geometry}
+ },
+ paper / landscape .code:n = \PassOptionsToPackage{landscape}{geometry},
+
+ paper / portrait .code:n = \PassOptionsToPackage{portrait}{geometry},
+ paper .initial:n =
+
+ a0,
+ title .choice:,
+ title / default .meta:n = {title=large},
+ title / large .code:n = \bool_gset_false:N \g_ptxcd_smalltitle_bool,
+ title / small .code:n = \bool_gset_true:N \g_ptxcd_smalltitle_bool,
+ title .initial:n = default,
+}
+\cs_if_exist:NT \TUDaDefaultBuildOptions {
+ \exp_args:Ne \keys_set:ne { ptxcd /
+ poster
+ } {
+ \TUDaDefaultBuildOptions
+ }
+}
+\cs_new:Nn \__ptxcd_insert_logo: {
+ \bool_if:NTF \g_ptxcd_logo_workaround_bool {
+ \file_if_exist:nTF {\g_ptxcd_logofile_tl.pdf}
+ \use_ii:nn
+ \use_i:nn
+ } {
+ \use_ii:nn
+ }
+ {\rule{0pt}{\c_ptxcd_logoheight_dim}\makebox[2.5\c_ptxcd_logoheight_dim][c]{\rule[.1\c_ptxcd_logoheight_dim]{2.05\c_ptxcd_logoheight_dim}{.8\c_ptxcd_logoheight_dim}}}
+ {\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}
}
-\ProcessKeyOptions[ptxcd/poster]
+\bool_if:NF \g_ptxcd_pdfa_bool {\bool_gset_false:N \g_ptxcd_pdfx_bool}
+
+\bool_if:NT \g_ptxcd_pdfa_bool {
+ \msg_new:nnn {tudapub} {colors-to-rgb} {
+ You~did~not~add~a~color~profile.\\
+ I~will~use~the~default~one~and~automatically~try~to~convert~internal~colors~to~RGB.\\
+ This~is~required~to~be~able~to~create~PDF/A~compliance.
+ }
+
+ \cs_if_exist:NT \pdfmeta_standard_get:nN {
+ \pdfmeta_standard_get:nN {outputintent_A} \l_tmpa_tl
+ \quark_if_no_value:NF \l_tmpa_tl {
+ \bool_gset_false:N \g_ptxcd_pdfx_bool
+ \msg_new:nnn{tudapub} {prefer-lualatex} {
+ I~detected~usage~of~l3pdfmeta~(\DocumentMetadata)~to~create~PDF/A.\\
+ tudapub~will~not~load~pdfx~to~avoid~conflicts.\\
+ To~disable~this~message~use~pdfx=false.
+ }
+ \msg_info:nn {tudapub} {prefer-lualatex}
+ }
+ \prop_if_in:NnF \g__pdfmeta_outputintents_prop {GTS_PDFA1} {
+ \use_iii:nnn
+ }
+ }
+ \bool_if:NT \g_ptxcd_pdfx_bool {
+ \PassOptionsToPackage{RGB}{xcolor}
+ \msg_info:nn {tudapub} {colors-to-rgb}
+ }
+}
+\ProcessKeyOptions[ptxcd/poster]
\dim_new:N \g_ptxcd_margin_dim
\bool_if:NTF \g_ptxcd_smalltitle_bool {
- \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo}
- \ptxcd_setup_title_sizes:
- \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo}
- \ptxcd_setup_base_sizes:
+ \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo}
+ \ptxcd_setup_title_sizes:
+ \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo}
+ \ptxcd_setup_base_sizes:
}{
- \int_gdecr:N \g_ptxcd_paper_int
- \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo}
- \ptxcd_setup_title_sizes:
- \ptxcd_setup_base_sizes:
+ \int_gdecr:N \g_ptxcd_paper_int
+ \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo}
+ \ptxcd_setup_title_sizes:
+ \ptxcd_setup_base_sizes:
}
-
\prop_gput:NnV \g_ptxcd_clsopts_prop {fontsize} \g_ptxcd_fontsize_tl
-
\prop_map_inline:Nn \g_ptxcd_clsopts_prop {
- \tl_if_empty:nTF {#2}
- {\PassOptionsToClass{#1}{scrartcl}}
- {\clist_map_inline:nn {#2} {\PassOptionsToClass{#1=##1}{scrartcl}}}
+ \tl_if_empty:nTF {#2}
+ {\PassOptionsToClass{#1}{scrartcl}}
+ {\clist_map_inline:nn {#2} {\PassOptionsToClass{#1=##1}{scrartcl}}}
}
-
-\bool_if:NT \g_ptxcd_pdfa_bool {\PassOptionsToPackage{RGB}{xcolor}}
-
\ExplSyntaxOff
-\PassOptionsToPackage{DIV=10}{typearea}
+\PassOptionsToPackage{typeareawarninfolimit=-1,DIV=10}{typearea}
\LoadClass[parskip=full-]{scrartcl}
-\RequirePackage{tudafonts}
-\RequirePackage{calc}
-\RequirePackage[margin=0pt]{geometry}
-\RequirePackage{tudacolors}
-
\ExplSyntaxOn
+\PassOptionsToPackage{hidelinks, unicode}{hyperref}
+\bool_if:NTF \g_ptxcd_pdfx_bool {
+%% only apply the hack if pdfx is older than the working version
+ \PassOptionsToPackage{a-2b}{pdfx}
+%% Workaround posted by David Carlisle on tex.stackexchange
+%% Thanks to Ulrike Fischer for mentioning it in #472
+ \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel
+ \chardef\currentgrouplevel0
+ \ExplSyntaxOff
+ \RequirePackage{pdfx}
+ \ExplSyntaxOn
+ \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx:
+ \cs_undefine:N \__ptxcd_grouplevel_before_pdfx:
+%% end of the workaround
+
+ \msg_new:nnn{tuda-ci} {prefer-lualatex} {
+ You~use~pdfa-mode~in~#1.\\
+ This~can~lead~to~incompatiblities~especially~with~older~compiler~versions.\\
+ You~should~prefer~using~lualatex.
+ }
+ \msg_new:nnnn{tuda-ci} {outdated-package-pdfa} {
+ Your~Version~of~the~#1-package~is~too~old~to~support~all~methods~required~by~tudapubs~pdfa-mode.\\
+ Either~update~your~TeX-distribution~or~switch~to~pdfa=false.
+ }{See~DEMO-tudapub~for~further~information.}
+
+ \sys_if_engine_pdftex:T {
+ \msg_warning:nnn{tuda-ci} {prefer-lualatex} {PDFTeX}
+ }
+
+ \sys_if_engine_xetex:T {
+ \msg_warning:nnn{tuda-ci} {prefer-lualatex} {XeTeX}
+ }
+
+ \@ifpackagelater{xmpincl}{2021/09/22}{
+ }{
+ \msg_error:nn{tuda-ci} {outdated-package-pdfa} {xmpincl}
+ }
-\if_bool:N \g_ptxcd_pdfa_bool
-\PassOptionsToPackage{a-2b}{pdfx}
-\IfFormatAtLeastTF{2020/10/01}{}{\endinput}
-% Workaround posted by David Carlisle on tex.stackexchange
-% Thanks to Ulrike Fischer for mentioning it in #472
- \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel
- \chardef\currentgrouplevel0
- \ExplSyntaxOff
- \RequirePackage{pdfx}
- \ExplSyntaxOn
- \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx:
- \cs_undefine:N \__ptxcd_grouplevel_before_pdfx:
-% end of the workaround
-\fi:
-
+} {
+ \RequirePackage{hyperref}
+}
\ExplSyntaxOff
-
+\RequirePackage{tudafonts}
+\RequirePackage{tudacolors}
+\RequirePackage[margin=0pt]{geometry}
\RequirePackage{tcolorbox}
\tcbuselibrary{poster}
-
\RequirePackage[mode=tikz]{tudarules}
\RequirePackage{qrcode}
-
\ExplSyntaxOn
-%Font adjusments
\renewcommand*{\familydefault}{\sfdefault}
-
\setkomafont{title}{
- \color{titlefgcolor}
- \expandafter\fontsize\ptxcd_title_fontsize:\selectfont
- \bfseries
+ \color{titlefgcolor}
+ \expandafter\fontsize\ptxcd_title_fontsize:\selectfont
+ \bfseries
}
-
\setkomafont{author}{\bfseries}
\setkomafont{captionlabel}{\bfseries}
-
\setkomafont{disposition}{\sffamily\bfseries}
-
-% end of font adjustments
-
-
-
\dim_const:Nn \c_ptxcd_headrule_ht_dim {\c_ptxcd_rulesep_dim +\c_ptxcd_largerule_dim + \c_ptxcd_smallrule_dim}
-%Setup title
\box_new:N \l_ptxcd_tmpa_box
\box_new:N \g_ptxcd_titlegraphic_box
\box_new:N \g_ptxcd_title_box
\box_new:N \g_ptxcd_author_box
\box_new:N \g_ptxcd_credit_box
-
\tl_new:N \g_ptxcd_thanks_tl
\newcommand*{\ptxcd_title@footnote}[2][1]{
- \begingroup
- \ptxcd_def_footnotelabel:
- \footnotemark[#1]\,#2\quad
- \endgroup
+ \begingroup
+ \ptxcd_def_footnotelabel:
+ \footnotemark[#1]\,#2\quad
+ \endgroup
}
-
\tl_greplace_all:Nnn \g_ptxcd_footnote_label_tl {*} {{footnote}}
\clist_map_inline:nn {alph, arabic, fnsymbol, Alph, roman, Roman} {
- \tl_greplace_all:Nnn \g_ptxcd_footnote_label_tl {#1} {\use:c {#1}}
+ \tl_greplace_all:Nnn \g_ptxcd_footnote_label_tl {#1} {\use:c {#1}}
}
-
\cs_set:Nn \ptxcd_def_footnotelabel: {
- \renewcommand*{\thefootnote}{\g_ptxcd_footnote_label_tl}
+ \renewcommand*{\thefootnote}{\g_ptxcd_footnote_label_tl}
}
-
\pagestyle{empty}
\renewcommand*{\title}[1]{\gdef \@title {#1}}
-
-
\dim_new:N \g_ptxcd_footheight_dim
\dim_gset:Nn \g_ptxcd_footheight_dim {0.06\paperwidth}%
-
\box_new:N \g_ptxcd_footergraphics_box
\newcommand*{\footergraphics}[1]{
- \begingroup
- \let\height\g_ptxcd_footheight_dim
- \hbox_gset:Nn \g_ptxcd_footergraphics_box {#1}
- \endgroup
+ \begingroup
+ \let\height\g_ptxcd_footheight_dim
+ \hbox_gset:Nn \g_ptxcd_footergraphics_box {#1}
+ \endgroup
}
-
\tl_new:N \g_ptxcd_poster_foot_tl
\newcommand{\footer}[1]{
- \tl_gset:Nn \g_ptxcd_poster_foot_tl {#1}
+ \tl_gset:Nn \g_ptxcd_poster_foot_tl {#1}
}
-
\tl_new:N \g_ptxcd_poster_qrcode_tl
-
\msg_new:nnnn {tudapub} {biblatex-required}{
- You~tried~to~use~#1.\\
- This~feature~requires~the~biblatex~package.
+ You~tried~to~use~#1.\\
+ This~feature~requires~the~biblatex~package.
} {
- Try~to~remove~the~star~or~load~biblatex.
+ Try~to~remove~the~star~or~load~biblatex.
}
-
\NewDocumentCommand{\footerqrcode}{sm}{
- \IfBooleanTF {#1} {
- \cs_if_exist:NTF \blx@blxinit {
- \begingroup
- \blx@blxinit
- \entrydata{#2}{
- \tl_gset:Nx \g_ptxcd_poster_qrcode_tl{\thefield{url}}
- }
- \endgroup
- }{
- \msg_error:nnx {tudapub} {biblatex-required} {\use:c{footerqrcode*}}
- }
- }{
- \tl_gset:Nn \g_ptxcd_poster_qrcode_tl {#2}
- }
-}
-
-
-%%%%%%%%%%%%%%%%%%%
-% Begin of PDF/A mode
-%%%%%%%%%%%%%%%%%%%
-%PDFA
-\if_bool:N \g_ptxcd_pdfa_bool
-%%hyperref
-\hypersetup{hidelinks, unicode, hyperfootnotes=false}
-\iow_new:N \ptxcd_xmpdata_stream
-\iow_open:Nn \ptxcd_xmpdata_stream {\jobname.xmpdata}
-\tl_new:N \g_ptxcd_xmp_title
-\tl_new:N \g_ptxcd_xmp_author
-
-\cs_new:Nn \ptxcd_pass_TitleData: {
- \begingroup
- \def\newline{}
- \def\\{}
- \cs_set_eq:NN \thanks \use_none:n
- \cs_set_eq:NN \inst \use_none:n
- \cs_set:Npn \and {\sep}
- \bool_if:NTF \g_ptxcd_pass_TitleData_bool {
- \tl_gset:Nx \g_ptxcd_xmp_title {\@title}
- \seq_clear:N \l_tmpa_seq
- \seq_map_inline:Nn \g_ptxcd_author_seq {
- \seq_put_right:Nx \l_tmpa_seq {##1}
- }
- \tl_gset:Nx \g_ptxcd_xmp_author {\seq_use:Nn \l_tmpa_seq {\sep}}
- \iow_now:Nx \ptxcd_xmpdata_stream
- {
- \exp_not:N \Title{\tl_to_str:V \g_ptxcd_xmp_title}
- ^^J
- \exp_not:N \Author{\tl_to_str:V \g_ptxcd_xmp_author}
- ^^J
- \exp_not:N \Creator{LaTeX~ using~ the~ TUDa-CI~ Bundle}
- }
- }{
- \begingroup
- \use:c {pdfx@localcommands}
- \prop_map_function:NN \g_ptxcd_MetaData_prop \ptxcd_write_xmp_line:nn
- \endgroup
- }
- \endgroup
-}
-
-\cs_new:Nn \ptxcd_write_xmp_line:nn {
- %Fallback test for older kernels
- \cs_if_exist:NTF \str_uppercase:f {
- \tl_set:Nx \l_tmpa_tl {
- \str_uppercase:f {\tl_head:n {#1}}
- \str_lowercase:f { \tl_tail:n {#1}}
- }
- } {
- %may be removed in some time
- \tl_set:Nx \l_tmpa_tl {\tl_mixed_case:n {#1}}
- }
- \cs_if_exist:cTF {\l_tmpa_tl}{
- \iow_now:Nx \ptxcd_xmpdata_stream {
- \c_backslash_str \l_tmpa_tl {\exp_not:n {#2}}
- }
- }{
- \msg_error:nnn{tudapub} {unknown-metadata} {#1}
- }
-}
-
-\bool_new:N \g_ptxcd_pass_TitleData_bool
-\bool_gset_true:N \g_ptxcd_pass_TitleData_bool
-\prop_new:N \g_ptxcd_MetaData_prop
-
-\newcommand*{\Metadata}[1]{
- \bool_gset_false:N \g_ptxcd_pass_TitleData_bool
- \prop_gset_from_keyval:Nn \g_ptxcd_MetaData_prop {#1}
+ \IfBooleanTF {#1} {
+ \cs_if_exist:NTF \blx@blxinit {
+ \begingroup
+ \blx@blxinit
+ \entrydata{#2}{
+ \tl_gset:Nx \g_ptxcd_poster_qrcode_tl{\thefield{url}}
+ }
+ \endgroup
+ }{
+ \msg_error:nnx {tudapub} {biblatex-required} {\use:c{footerqrcode*}}
+ }
+ }{
+ \tl_gset:Nn \g_ptxcd_poster_qrcode_tl {#2}
+ }
}
-
-
-\msg_new:nnnn{tudapub} {unknown-metadata} {
- You~ used~ the~ #1~ metadata~ entry.\\
- I~ don't~ know~ how~ to~ handle~ that.\\
- It~ will~ be~ ignored.
-} {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.}
-\else:
-\msg_new:nnn{tudapub} {no-pdfa}{The~ tudapub~ class~ won't~ create~ PDF/A-mode.}
-\msg_info:nn{tudapub} {no-pdfa}
-%%hyperref
-\RequirePackage[hidelinks, unicode,hyperfootnotes=false]{hyperref}
-\fi:
-
-%%%%%%%%%%%%%%%%%%%
-% End of PDF/A mode
-%%%%%%%%%%%%%%%%%%%
-
-%redefine \author to manage \and and \thanks
-
\seq_new:N \g_ptxcd_author_seq
-
\renewcommand*\author[1]{
- \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#1}
+ \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#1}
}
-
\msg_new:nnn{tudasciposter} {unknown-language} {
- You~selected~an~unknown~language~#1.\\
- The~Variable~#2~does~not~have~a~predefined~value.\\
- Ensure~to~redefine~#2~to~match~your~language.\\
- Otherwise~the~ngerman~vaue~#3~will~be~used.
+ You~selected~an~unknown~language~#1.\\
+ The~Variable~#2~does~not~have~a~predefined~value.\\
+ Ensure~to~redefine~#2~to~match~your~language.\\
+ Otherwise~the~ngerman~vaue~#3~will~be~used.
}
-
\providecommand*\authorandname{
- \msg_warning:nnxxx{tudasciposter} {unknown-language}
- {\languagename} {\exp_not:N \authorandname} {und}
- und
+ \msg_warning:nnxxx{tudasciposter} {unknown-language}
+ {\languagename} {\exp_not:N \authorandname} {und}
+ und
}
-
\defcaptionname{ngerman, german}{\authorandname}{und}
\defcaptionname{english, USenglish, american, UKenglish, british}{\authorandname}{and}
-
-
\renewcommand*{\@author}{
- \seq_use:Nnnn \g_ptxcd_author_seq {~\authorandname{}~} {,~} {~\&~}
+ \seq_use:Nnnn \g_ptxcd_author_seq {~\authorandname{}~} {,~} {~\&~}
}
-
\newcommand\titlegraphic[1]{\def\@titlegraphic{#1}}
\titlegraphic{}
-
\newcommand{\institute}[1]{\def\@institute{#1}}
\institute{}
-
-
-
-%Language dependent configuration
\AtBeginDocument{
- \@ifpackageloaded{babel}{
- \addto\extrasngerman{\def\authorandname{und}}
- \addto\extrasgerman{\def\authorandname{und}}
- \addto\extrasenglish{\def\authorandname{and}}
- \addto\extrasbritish{\def\authorandname{and}}
- \addto\captionsngerman{\renewcommand{\figurename}{Abb.}}
- \addto\captionsgerman{\renewcommand{\figurename}{Abb.}}
- \addto\captionsenglish{\renewcommand{\figurename}{Fig.}}
- \addto\captionsbritish{\renewcommand{\figurename}{Fig.}}
- }{}
+ \@ifpackageloaded{babel}{
+ \addto\extrasngerman{\def\authorandname{und}}
+ \addto\extrasgerman{\def\authorandname{und}}
+ \addto\extrasenglish{\def\authorandname{and}}
+ \addto\extrasbritish{\def\authorandname{and}}
+ \addto\captionsngerman{\renewcommand{\figurename}{Abb.}}
+ \addto\captionsgerman{\renewcommand{\figurename}{Abb.}}
+ \addto\captionsenglish{\renewcommand{\figurename}{Fig.}}
+ \addto\captionsbritish{\renewcommand{\figurename}{Fig.}}
+ }{}
}
-
\newlength{\contentwidth}
\setlength{\contentwidth}{\dimexpr\paperwidth-2\g_ptxcd_margin_dim\relax}
\newlength{\contentheight}
-
\cs_new:Nn \__ptxcd_logo_code:n {
- \node[anchor=north~east,inner~sep=0pt,minimum~width=\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}](#1) at ([xshift=\__ptxcd_logosep:,yshift=-.5\c_ptxcd_logoheight_dim]identbar.south~east){
- \includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}
- };
+ \node[anchor=north~east,inner~sep=0pt,minimum~width=\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}](#1) at ([xshift=\__ptxcd_logosep:,yshift=-.5\c_ptxcd_logoheight_dim]identbar.south~east){
+ \__ptxcd_insert_logo:
+ };
}
-
-
\tcbposterset{
- coverage =
- {
- spread,
- parbox=false,
- bottom=\dim_eval:n {\g_ptxcd_margin_dim
- \bool_if:NT \g_ptxcd_poster_foot_bool {+\g_ptxcd_footheight_dim + 3\c_ptxcd_rulesep_dim}
- },
- left=\g_ptxcd_margin_dim,
- right=\g_ptxcd_margin_dim,
- before= {\ptxcd_poster_setup_title_box:},
- top= \dim_eval:n {
- \bool_if:NF \g_ptxcd_colorback_bool {1.5}
- \g_ptxcd_margin_dim
- +\box_ht:N \ptxcd_headrule_box
- +\box_dp:N \ptxcd_headrule_box
- +\g_ptxcd_titleblock_dim
- +4\c_ptxcd_rulesep_dim
- +\box_ht:N \g_ptxcd_author_box
- +\box_dp:N \g_ptxcd_author_box
- },
- overlay={%
- \coordinate(topleft) at ([xshift=\g_ptxcd_margin_dim, yshift=-\g_ptxcd_margin_dim]current~page.north~ west);
- \coordinate(topright) at ([xshift=-\g_ptxcd_margin_dim, yshift=-\g_ptxcd_margin_dim]current~page.north~ east);
- \coordinate(bottomleft) at ([xshift=\g_ptxcd_margin_dim, yshift=\g_ptxcd_margin_dim]current~page.south~ west);
- \coordinate(bottomright) at ([xshift=-\g_ptxcd_margin_dim, yshift=\g_ptxcd_margin_dim]current~page.south~ east);
-
- \dim_gset:Nn \g_ptxcd_titleindent_dim {\bool_if:NTF \g_ptxcd_colorback_bool {3\c_ptxcd_rulesep_dim} {\c_zero_dim}}
-
- \node[inner~sep=0pt, anchor=north~west](identbar) at (topleft){\ptxcd_headrule};
- \bool_if:NTF \g_ptxcd_colorback_bool
- \fill \path [identbarcolor]
- (identbar.south~east)rectangle([yshift=-\g_ptxcd_titleblock_dim]identbar.south~west) coordinate(bottomlefttitleblock);
-
- \__ptxcd_logo_code:n {TUDalogo}
-
- \node[inner~sep=0pt,text~width=\__ptxcd_logowidth:,align=right,anchor=north~west,](titlegraphic) at ([yshift=-\c_ptxcd_rulesep_dim]TUDalogo.south~west){\box_use:N \g_ptxcd_titlegraphic_box};
-
- \node[anchor=north~west,inner~sep=0pt,] (title) at ([
- xshift=\g_ptxcd_titleindent_dim,yshift=-.5\c_ptxcd_logoheight_dim]identbar.south~west) {\box_use:N \g_ptxcd_title_box};
-
- \bool_if:NT \g_ptxcd_titlesepline_bool
- {\draw[line~ width=.5\c_ptxcd_smallrule_dim](bottomlefttitleblock)--++(\contentwidth,0);}
-
- \node[anchor=north~west, inner~xsep=0pt, inner~ ysep=\c_ptxcd_rulesep_dim] (author) at ([xshift=\g_ptxcd_titleindent_dim]bottomlefttitleblock) {\box_use:N \g_ptxcd_author_box};
-
- \draw[line~ width=.5\c_ptxcd_smallrule_dim](author.south-|identbar.west)--++(\contentwidth,0);
-
-
- \bool_if:NT \g_ptxcd_poster_foot_bool {\__ptxcd_typeset_footer:}
- }}
+ coverage =
+ {
+ spread,
+ parbox=false,
+ bottom=\dim_eval:n {\g_ptxcd_margin_dim
+ \bool_if:NT \g_ptxcd_poster_foot_bool {+\g_ptxcd_footheight_dim + 3\c_ptxcd_rulesep_dim}
+ },
+ left=\g_ptxcd_margin_dim,
+ right=\g_ptxcd_margin_dim,
+ before= {\ptxcd_poster_setup_title_box:},
+ top= \dim_eval:n {
+ \bool_if:NF \g_ptxcd_colorback_bool {1.5}
+ \g_ptxcd_margin_dim
+ +\box_ht:N \ptxcd_headrule_box
+ +\box_dp:N \ptxcd_headrule_box
+ +\g_ptxcd_titleblock_dim
+ +4\c_ptxcd_rulesep_dim
+ +\box_ht:N \g_ptxcd_author_box
+ +\box_dp:N \g_ptxcd_author_box
+ },
+ overlay={%
+ \coordinate(topleft) at ([xshift=\g_ptxcd_margin_dim, yshift=-\g_ptxcd_margin_dim]current~page.north~ west);
+ \coordinate(topright) at ([xshift=-\g_ptxcd_margin_dim, yshift=-\g_ptxcd_margin_dim]current~page.north~ east);
+ \coordinate(bottomleft) at ([xshift=\g_ptxcd_margin_dim, yshift=\g_ptxcd_margin_dim]current~page.south~ west);
+ \coordinate(bottomright) at ([xshift=-\g_ptxcd_margin_dim, yshift=\g_ptxcd_margin_dim]current~page.south~ east);
+ \dim_gset:Nn \g_ptxcd_titleindent_dim {\bool_if:NTF \g_ptxcd_colorback_bool {3\c_ptxcd_rulesep_dim} {\c_zero_dim}}
+ \node[inner~sep=0pt, anchor=north~west](identbar) at (topleft){\ptxcd_headrule};
+ \bool_if:NTF \g_ptxcd_colorback_bool
+ \fill \path [identbarcolor]
+ (identbar.south~east)rectangle([yshift=-\g_ptxcd_titleblock_dim]identbar.south~west) coordinate(bottomlefttitleblock);
+ \__ptxcd_logo_code:n {TUDalogo}
+ \node[inner~sep=0pt,text~width=\__ptxcd_logowidth:,align=right,anchor=north~west,](titlegraphic) at ([yshift=-\c_ptxcd_rulesep_dim]TUDalogo.south~west){\box_use:N \g_ptxcd_titlegraphic_box};
+ \node[anchor=north~west,inner~sep=0pt,] (title) at ([
+ xshift=\g_ptxcd_titleindent_dim,yshift=-.5\c_ptxcd_logoheight_dim]identbar.south~west) {\box_use:N \g_ptxcd_title_box};
+ \bool_if:NT \g_ptxcd_titlesepline_bool
+ {\draw[line~ width=.5\c_ptxcd_smallrule_dim](bottomlefttitleblock)--++(\contentwidth,0);}
+ \node[anchor=north~west, inner~xsep=0pt, inner~ ysep=\c_ptxcd_rulesep_dim] (author) at ([xshift=\g_ptxcd_titleindent_dim]bottomlefttitleblock) {\box_use:N \g_ptxcd_author_box};
+ \draw[line~ width=.5\c_ptxcd_smallrule_dim](author.south-|identbar.west)--++(\contentwidth,0);
+ \bool_if:NT \g_ptxcd_poster_foot_bool {\__ptxcd_typeset_footer:}
+ }}
}
-
\cs_new:Nn \__ptxcd_typeset_footer: {
- \coordinate(lastpos) at (bottomright);
- \tl_if_empty:NF \g_ptxcd_poster_qrcode_tl
- {
- \node[anchor=south~east, inner~sep=\z@] (qrcode)at (lastpos)
- {
- \exp_args:NnV \use:n {\qrcode[height=\dim_use:N \g_ptxcd_footheight_dim]}\g_ptxcd_poster_qrcode_tl
- };
- \coordinate (lastpos) at (qrcode.south~west);
- }
- \box_if_empty:NF \g_ptxcd_footergraphics_box {
- \node[anchor=south~east, inner~sep=\z@] at (lastpos) {
- \accentfont
- \box_use:N \g_ptxcd_footergraphics_box
- };
- }
- \node[anchor=north~ west, inner~ sep=\z@] (infofooter) at ([yshift=\g_ptxcd_footheight_dim]bottomleft) {
- \parbox{\dim_eval:n {\contentwidth
- -\box_wd:N \g_ptxcd_footergraphics_box
- \tl_if_empty:NF \g_ptxcd_poster_qrcode_tl {-\g_ptxcd_footheight_dim-\c_ptxcd_rulesep_dim}
- }}{
- \rule{\linewidth}{.5\c_ptxcd_smallrule_dim}\\
- \accentfont\small\g_ptxcd_poster_foot_tl
- \par\medskip
- \let\footnotetext\ptxcd_title@footnote
- \g_ptxcd_thanks_tl}
- };
+ \coordinate(lastpos) at (bottomright);
+ \tl_if_empty:NF \g_ptxcd_poster_qrcode_tl
+ {
+ \node[anchor=south~east, inner~sep=\z@] (qrcode)at (lastpos)
+ {
+ \exp_args:NnV \use:n {\qrcode[height=\dim_use:N \g_ptxcd_footheight_dim]}\g_ptxcd_poster_qrcode_tl
+ };
+ \coordinate (lastpos) at (qrcode.south~west);
+ }
+ \box_if_empty:NF \g_ptxcd_footergraphics_box {
+ \node[anchor=south~east, inner~sep=\z@] at (lastpos) {
+ \accentfont
+ \box_use:N \g_ptxcd_footergraphics_box
+ };
+ }
+ \node[anchor=north~ west, inner~ sep=\z@] (infofooter) at ([yshift=\g_ptxcd_footheight_dim]bottomleft) {
+ \parbox{\dim_eval:n {\contentwidth
+ -\box_wd:N \g_ptxcd_footergraphics_box
+ \tl_if_empty:NF \g_ptxcd_poster_qrcode_tl {-\g_ptxcd_footheight_dim-\c_ptxcd_rulesep_dim}
+ }}{
+ \rule{\linewidth}{.5\c_ptxcd_smallrule_dim}\\
+ \accentfont\small\g_ptxcd_poster_foot_tl
+ \par\medskip
+ \let\footnotetext\ptxcd_title@footnote
+ \g_ptxcd_thanks_tl}
+ };
}
-
\hook_gput_code:nnn {ptxcd/init-colors} {tudasciposter} {
- \bool_if:NTF \g_ptxcd_colorback_bool
- {\colorlet{titlefgcolor}{textonaccentcolor}}
- {\colorlet{titlefgcolor}{black}}
- \colorlet{titlebgcolor}{accentcolor}
- % Block Colors
- \colorlet{blocktitlebgcolor}{accentcolor}
- \colorlet{blocktitlefgcolor}{textonaccentcolor}
- % Innerblock Colors
- \colorlet{innerblockbodybgcolor}{textonaccentcolor}
+\bool_if:NTF \g_ptxcd_colorback_bool
+{\colorlet{titlefgcolor}{textonaccentcolor}}
+{\colorlet{titlefgcolor}{black}}
+\colorlet{titlebgcolor}{accentcolor}
+\colorlet{blocktitlebgcolor}{accentcolor}
+\colorlet{blocktitlefgcolor}{textonaccentcolor}
+\colorlet{innerblockbodybgcolor}{textonaccentcolor}
}
-% Background Colors
\colorlet{backgroundcolor}{white}
\colorlet{framecolor}{white}
-% Block Colors
\colorlet{blockbodybgcolor}{white}
\colorlet{blockbodyfgcolor}{black}
-% Innerblock Colors
\colorlet{innerblocktitlebgcolor}{black!15}
\colorlet{innerblocktitlefgcolor}{black}
\colorlet{innerblockbodyfgcolor}{black}
-
\dim_new:N \g_ptxcd_titleblock_dim
\dim_new:N \g_ptxcd_titleindent_dim
-
\cs_new:Nn \__ptxcd_inst:n {\textsuperscript{#1}}
-
\cs_new:Nn \ptxcd_poster_setup_title_box: {
- \hbox_gset:Nn \g_ptxcd_title_box {
- \parbox{.65\paperwidth}{
- \raggedright
- \usekomafont{disposition}\usekomafont{title}\leavevmode\@title \par
- }
- }
- \hbox_gset:Nn \g_ptxcd_author_box {
- \parbox{\dimexpr\contentwidth-6\c_ptxcd_rulesep_dim\relax}{
- \ptxcd_def_footnotelabel:
- \cs_set_eq:NN \inst\__ptxcd_inst:n
- {\usekomafont{author}\@author\\}
- \tl_gset:No \g_ptxcd_thanks_tl {\@thanks}
- \@institute
- }
- }
- \tl_if_empty:NF \@titlegraphic {
- \hbox_gset:Nn \g_ptxcd_titlegraphic_box {
- \parbox{\__ptxcd_logowidth:}{
- \raggedleft
- \@titlegraphic
- }
- }
- }
- \dim_gset:Nn \g_ptxcd_titleblock_dim {
- \dim_max:nn
- {
- +\box_ht:N \g_ptxcd_titlegraphic_box +\box_dp:N \g_ptxcd_titlegraphic_box+ 2\c_ptxcd_logoheight_dim
- }
- {\box_ht:N \g_ptxcd_title_box+ \box_dp:N \g_ptxcd_title_box+\c_ptxcd_logoheight_dim}
- }
+ \hbox_gset:Nn \g_ptxcd_title_box {
+ \parbox{.65\paperwidth}{
+ \raggedright
+ \usekomafont{disposition}\usekomafont{title}\leavevmode\@title \par
+ }
+ }
+ \hbox_gset:Nn \g_ptxcd_author_box {
+ \parbox{\dimexpr\contentwidth-6\c_ptxcd_rulesep_dim\relax}{
+ \ptxcd_def_footnotelabel:
+ \cs_set_eq:NN \inst\__ptxcd_inst:n
+ {\usekomafont{author}\@author\\}
+ \tl_gset:No \g_ptxcd_thanks_tl {\@thanks}
+ \@institute
+ }
+ }
+ \tl_if_empty:NF \@titlegraphic {
+ \hbox_gset:Nn \g_ptxcd_titlegraphic_box {
+ \parbox{\__ptxcd_logowidth:}{
+ \raggedleft
+ \@titlegraphic
+ }
+ }
+ }
+ \dim_gset:Nn \g_ptxcd_titleblock_dim {
+ \dim_max:nn
+ {
+ +\box_ht:N \g_ptxcd_titlegraphic_box +\box_dp:N \g_ptxcd_titlegraphic_box+ 2\c_ptxcd_logoheight_dim
+ }
+ {\box_ht:N \g_ptxcd_title_box+ \box_dp:N \g_ptxcd_title_box+\c_ptxcd_logoheight_dim}
+ }
}
-
-%%%%%%%%%%%%%%%%%%%%%%
-%Declare TCBstyles for tudaposter
\tcbset {
- TUDa/.style =
- {
- enhanced,
- coltitle=black,
- colbacktitle=white,
- coltext=black,
- colback=white,
- size=minimal,
- boxrule=.5\c_ptxcd_smallrule_dim,
- leftrule=\z@,
- rightrule=\z@,
- fonttitle=\usekomafont{disposition}\usekomafont{section},
- before~title={\strut},
- toptitle=.5\c_ptxcd_rulesep_dim,
- bottomtitle=.5\c_ptxcd_rulesep_dim,
- top=\c_ptxcd_rulesep_dim,
- bottom=\c_ptxcd_rulesep_dim,
- frame~code={
- \iftcb@hasTitle
- \fill[tcbcolframe](frame.north~west)rectangle(title.north~east);
- \fill[tcbcolframe](title.south~west)rectangle(interior.north~east);
- \else
- \fill[tcbcolframe](frame.north~west)rectangle(interior.north~east);
- \fi
- \fill[tcbcolframe](interior.south~west)rectangle(frame.south~east);
- },
- parbox=false,
- },
- TUDa-inner/.style =
- {
- TUDa,
- fonttitle=\usekomafont{disposition}\usekomafont{subsubsection}
- },
- TUDa-colored/.style =
- {
- TUDa,
- left=.5\c_ptxcd_rulesep_dim,
- right=.5\c_ptxcd_rulesep_dim,
- colbacktitle=blocktitlebgcolor,
- coltitle=blocktitlefgcolor,
- colback=blockbodybgcolor,
- coltext=blockbodyfgcolor,
- fonttitle=\usekomafont{disposition}\usekomafont{section},
- titlerule=\z@,
- },
- TUDa-colored-inner/.style =
- {
- TUDa-colored,
- colbacktitle=innerblocktitlebgcolor,
- coltitle=innerblocktitlefgcolor,
- colback=innerblockbodybgcolor,
- coltext=innerblockbodyfgcolor,
- fonttitle=\usekomafont{disposition}\usekomafont{subsubsection}
- },
- TUDa-boxed/.style =
- {
- enhanced,
- size=minimal,
- colbacktitle=blocktitlebgcolor,
- coltitle=blocktitlefgcolor,
- colback=blockbodybgcolor,
- coltext=blockbodyfgcolor,
- boxsep=\c_ptxcd_rulesep_dim,
- boxrule=.5\c_ptxcd_smallrule_dim,
- titlerule=\z@,
- arc=1ex,
- auto~outer~arc,
- fonttitle=\usekomafont{disposition}\usekomafont{section},
- before~title={\strut},
- parbox=false,
- },
- TUDa-boxed-inner/.style =
- {
- TUDa-boxed,
- colbacktitle=innerblocktitlebgcolor,
- coltitle=innerblocktitlefgcolor,
- colback=innerblockbodybgcolor,
- coltext=innerblockbodyfgcolor,
- sharp~corners,
- fonttitle=\usekomafont{disposition}\usekomafont{subsubsection}
- },
+TUDa/.style =
+{
+enhanced,
+coltitle=black,
+colbacktitle=white,
+coltext=black,
+colback=white,
+size=minimal,
+boxrule=.5\c_ptxcd_smallrule_dim,
+leftrule=\z@,
+rightrule=\z@,
+fonttitle=\usekomafont{disposition}\usekomafont{section},
+before~title={\strut},
+toptitle=.5\c_ptxcd_rulesep_dim,
+bottomtitle=.5\c_ptxcd_rulesep_dim,
+top=\c_ptxcd_rulesep_dim,
+bottom=\c_ptxcd_rulesep_dim,
+frame~code={
+\iftcb@hasTitle
+ \fill[tcbcolframe](frame.north~west)rectangle(title.north~east);
+ \fill[tcbcolframe](title.south~west)rectangle(interior.north~east);
+\else
+ \fill[tcbcolframe](frame.north~west)rectangle(interior.north~east);
+\fi
+\fill[tcbcolframe](interior.south~west)rectangle(frame.south~east);
+},
+parbox=false,
+},
+TUDa-inner/.style =
+ {
+ TUDa,
+ fonttitle=\usekomafont{disposition}\usekomafont{subsubsection}
+ },
+TUDa-colored/.style =
+ {
+ TUDa,
+ left=.5\c_ptxcd_rulesep_dim,
+ right=.5\c_ptxcd_rulesep_dim,
+ colbacktitle=blocktitlebgcolor,
+ coltitle=blocktitlefgcolor,
+ colback=blockbodybgcolor,
+ coltext=blockbodyfgcolor,
+ fonttitle=\usekomafont{disposition}\usekomafont{section},
+ titlerule=\z@,
+ },
+TUDa-colored-inner/.style =
+ {
+ TUDa-colored,
+ colbacktitle=innerblocktitlebgcolor,
+ coltitle=innerblocktitlefgcolor,
+ colback=innerblockbodybgcolor,
+ coltext=innerblockbodyfgcolor,
+ fonttitle=\usekomafont{disposition}\usekomafont{subsubsection}
+ },
+TUDa-boxed/.style =
+{
+enhanced,
+size=minimal,
+colbacktitle=blocktitlebgcolor,
+coltitle=blocktitlefgcolor,
+colback=blockbodybgcolor,
+coltext=blockbodyfgcolor,
+boxsep=\c_ptxcd_rulesep_dim,
+boxrule=.5\c_ptxcd_smallrule_dim,
+titlerule=\z@,
+arc=1ex,
+auto~outer~arc,
+fonttitle=\usekomafont{disposition}\usekomafont{section},
+before~title={\strut},
+parbox=false,
+},
+TUDa-boxed-inner/.style =
+ {
+ TUDa-boxed,
+ colbacktitle=innerblocktitlebgcolor,
+ coltitle=innerblocktitlefgcolor,
+ colback=innerblockbodybgcolor,
+ coltext=innerblockbodyfgcolor,
+ sharp~corners,
+ fonttitle=\usekomafont{disposition}\usekomafont{subsubsection}
+ },
}
-
-%Select default box styles according to style option
\tcbposterset{boxes ={\g_ptxcd_boxstyle_tl}, poster={spacing=5cm}}
\tcbset{
- every~ box~ on~ layer~ 3/.style={reset,\g_ptxcd_boxstyle_tl -inner},
- every~ box~ on~ layer~ 4/.style={reset,\g_ptxcd_boxstyle_tl -inner},
+every~ box~ on~ layer~ 3/.style={reset,\g_ptxcd_boxstyle_tl -inner},
+every~ box~ on~ layer~ 4/.style={reset,\g_ptxcd_boxstyle_tl -inner},
}
-
-%Adjust caption indent
\setcapindent{1em}
-
\file_if_exist_input:n {\g__ptxcd_config_prefix_tl\g_ptxcd_department_str.cfg}
-
\hook_use:n {ptxcd/init-colors}
-
\ptxcd_makeheadrule[
- width=\paperwidth-2\g_ptxcd_margin_dim,
- color=identbarcolor
+ width=\paperwidth-2\g_ptxcd_margin_dim,
+ color=identbarcolor
]{ptxcd_headrule}
-
+\if_bool:N \g_ptxcd_pdfx_bool
+ \iow_new:N \ptxcd_xmpdata_stream
+ \tl_new:N \g_ptxcd_xmp_title_tl
+ \tl_new:N \g_ptxcd_xmp_author_tl
+
+ \cs_if_exist:NF \prop_gput_if_new:Nnx {
+ \cs_generate_variant:Nn \prop_gput_if_new:Nnn {Nnx}
+ }
+
+ \cs_if_exist:NF \tl_to_str:V {\cs_generate_variant:Nn \tl_to_str:N {V}}
+
+ \cs_new:Nn \ptxcd_pass_TitleData: {
+ \iow_open:Nn \ptxcd_xmpdata_stream {\jobname.xmpdata}
+ \begingroup
+ \def\newline{}
+ \def\\{}
+ \let\thanks\use_none:n
+ \cs_set:Npn \and {\exp_not:n {\exp_not:N \sep}}
+ \use:c {Hy@pdfstringtrue}
+ \tl_gset:Nf \g_ptxcd_xmp_title_tl {\@title}
+ \prop_gput_if_new:Nnx \g_ptxcd_MetaData_prop {Title} {\tl_to_str:V \g_ptxcd_xmp_title_tl}
+ \prop_if_in:NnF \g_ptxcd_MetaData_prop {Author} {
+ \tl_gset:Nx \g_ptxcd_xmp_author_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \sep}}
+ \tl_gset:Nx \g_ptxcd_xmp_author_tl {\g_ptxcd_xmp_author_tl}
+ \prop_gput:Nnx \g_ptxcd_MetaData_prop {Author} {\tl_to_str:V \g_ptxcd_xmp_author_tl}
+ }
+ \prop_gput_if_new:Nnn \g_ptxcd_MetaData_prop {Publisher}{TU~Darmstadt}
+ \prop_gput_if_new:Nnn \g_ptxcd_MetaData_prop {Creator}{LaTeX~using~TUDa-CI}
+ \use:c {pdfx@localcommands}%should be held inside group
+ \prop_map_function:NN \g_ptxcd_MetaData_prop \ptxcd_write_xmp_line:nn
+ \endgroup
+ \iow_close:N \ptxcd_xmpdata_stream
+ \let\ptxcd_pass_TitleData:\relax
+ }
+ \cs_new:Nn \ptxcd_write_xmp_line:nn {
+ \begingroup
+ \cs_set:Npn \sep {\exp_not:N \sep}
+ \cs_if_exist:cTF {#1}{
+ \iow_now:Nx \ptxcd_xmpdata_stream {
+ \c_backslash_str #1 {\exp_not:n {#2}}
+ }
+ }{
+ \msg_error:nnn{tuda-ci} {unknown-metadata} {#1}
+ }
+ \endgroup
+ }
+
+ \prop_new:N \g_ptxcd_MetaData_prop
+
+ \newcommand*{\Metadata}[1]{
+ \keyval_parse:NNn \use_none:n \ptxcd_set_metadata_prop:nn
+ {#1}
+ }
+
+ \cs_set:Nn \ptxcd_set_metadata_prop:nn {
+ % Fallback test for older kernels doesn't support mixed case eintries
+ \cs_if_exist:NTF \text_titlecase_first:n {
+ \exp_args:NNf \prop_gput:Nnn \g_ptxcd_MetaData_prop {\text_titlecase_first:n {#1}} {#2}
+ } {
+ \exp_args:NNx \prop_gput:Nnn \g_ptxcd_MetaData_prop {
+ \str_uppercase:f {\tl_head:n {#1}}
+ \str_lowercase:f {\tl_tail:n {#1}}
+ } {#2}
+ }
+ }
+ \msg_new:nnnn{tuda-ci} {unknown-metadata} {
+ You~ used~ the~ #1~ metadata~ entry.\\
+ I~ don't~ know~ how~ to~ handle~ that.\\
+ It~ will~ be~ ignored.
+ } {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.}
+\else:
+ \hypersetup{pdfcreator=LaTeX~using~TUDa-CI}
+ \msg_new:nnnn {tuda-ci} {metadata-to-hypersetup} {
+ You~don't~use~pdfx.~
+ Here~the~\string\Metadata ~command~only~exists~for~compatibility~reasons.\\
+ I~will~pass~the~data~to~ḩypersetup.
+ }{
+ If~possible~please~use~hyperref's~\string\hypersetup~command~for~the~metadata~directly.\\
+ See~hyperref~documentation~for~details~on~usage.
+ }
+
+ \newcommand*{\Metadata}[1]{
+ \tl_set:Nn \l_tmpa_tl {#1}
+ \tl_replace_all:Nnn \l_tmpa_tl {\sep} {;~}% pdfx-Syntax compatibility
+ \clist_map_inline:Nn \l_tmpa_tl {
+ \exp_args:Nx \hypersetup{pdf\tl_trim_spaces:n {##1}}
+ }
+ \msg_warning:nn {tuda-ci} {metadata-to-hypersetup}
+ }
+ \cs_new:Nn \ptxcd_pass_TitleData: {
+ \prop_if_exist:NTF \g__pdfmanagement_documentproperties_prop {
+ \prop_set_eq:NN \l_tmpa_prop \g__pdfmanagement_documentproperties_prop
+ } {
+ \prop_set_eq:NN \l_tmpa_prop \g__hyp_documentproperties_prop
+ }
+ \prop_if_in:NnF \l_tmpa_prop {hyperref/pdftitle} {
+ \begingroup
+ \def\newline{}
+ \def\\{}
+ \let\thanks\use_none:n
+ \tl_gset:Nf \g_tmpa_tl {\@title}
+ \endgroup
+ \hypersetup{pdftitle={\tl_to_str:V \g_tmpa_tl}}
+ }
+ \prop_if_in:NnF \l_tmpa_prop {hyperref/pdfauthor} {
+ \begingroup
+ \def\newline{}
+ \def\\{}
+ \let\thanks\use_none:n
+ \tl_gset:Nx \g_tmpa_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \and}}
+ \tl_gset:Nx \g_tmpa_tl {\g_tmpa_tl }
+ \endgroup
+ \hypersetup{pdfauthor=\g_tmpa_tl}
+ }
+ }
+ \bool_if:NF \g_ptxcd_pdfa_bool {
+ \msg_new:nnn{tuda-ci} {no-pdfa}{The~ tuda\c__ptxcd_base_str\space class~ will~ not~ create~ PDF/A.}
+ \msg_info:nn{tuda-ci} {no-pdfa}
+ }
+\fi:
\endinput
-%end of tudasciposter.cls
+%%
+%% End of file `tudasciposter.cls'.
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudasize9pt.clo b/Master/texmf-dist/tex/latex/tuda-ci/tudasize9pt.clo
index 4f618069923..4c1733df68e 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudasize9pt.clo
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudasize9pt.clo
@@ -1,46 +1,45 @@
-%% This is file `tudasize9pt.clo' version 3.41 (2024-07-02),
+%%
+%% This is file `tudasize9pt.clo',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tudasize.dtx (with options: `scrsize,9pt')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
-%% This file is a slightly modified version of scrsize10pt.clo
-%% generated with the docstrip utility, extended by scrdocstrip.
-%% modified by Marei Peischl <marei@peitex.de>
-%%
-%% Its original source files were:
-%%
-%% scrkernel-version.dtx (with options: `clo,10pt')
-%% scrkernel-fonts.dtx (with options: `clo,10pt')
-%% scrkernel-paragraphs.dtx (with options: `clo,10pt')
-%%
-%% Copyright (c) 1994-2017 Markus Kohm [komascript at gmx info]
-%%
-%% The original file was generated from file(s) of the KOMA-Script bundle.
-%% https://ctan.org/pkg/koma-script
-%%
-%% ========================================================================
%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
+%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
-%%
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008/05/04 or later.
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are Marei Peischl <kontakt@peitex.de>.
-%%
-%%
+%%
+%% The Current Maintainer of this work is
+%% Marei Peischl <tuda-ci@peitex.de>
+%%
+%% The development repository can be found at
+%% https://github.com/tudace/tuda_latex_templates
+%% Please use the issue tracker for feedback!
+%%
+%% ============================================================================
+%%
\ProvidesFile{%
tudasize9pt.clo%
-}[TUDa-CI \space font size class option %
- (9pt)%
+}[
+ TUDa-CI font size class option (9pt)
]
-\def\normalsize{%
+\let\normalsize\@undefined
+\DeclareRobustCommand\normalsize{%
\@setfontsize\normalsize\@ixpt\@xipt%
\abovedisplayskip 8\p@ \@plus4\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus3\p@
@@ -50,45 +49,55 @@
}
\def\datasize{%
\normalsize
- \@setfontsize\normalsize\@ixpt\@xipt
+ \@setfontsize\normalsize
+ \@ixpt\@xipt
}
-\def\small{%
- \@setfontsize\small\@viiipt\@ixpt%
- \abovedisplayskip 5\p@ \@plus2\p@ \@minus2\p@
- \abovedisplayshortskip \z@ \@plus1\p@
- \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
- \def\@listi{\leftmargin\leftmargini
- \topsep 3\p@ \@plus\p@ \@minus\p@
- \parsep 2\p@ \@plus\p@ \@minus\p@
- \itemsep \parsep}%
- \belowdisplayskip \abovedisplayskip
+\let\small\@undefined
+\DeclareRobustCommand\small{%
+\@setfontsize\small\@viiipt\@ixpt%
+\abovedisplayskip 5\p@ \@plus2\p@ \@minus2\p@
+\abovedisplayshortskip \z@ \@plus1\p@
+\belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
+\def\@listi{\leftmargin\leftmargini
+ \topsep 3\p@ \@plus\p@ \@minus\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep}%
+ \belowdisplayskip \abovedisplayskip
}
-\def\footnotesize{%
- \@setfontsize\footnotesize\@viipt\@viiipt
- \abovedisplayskip 4\p@ \@plus2\p@ \@minus2\p@
- \abovedisplayshortskip \z@ \@plus1\p@
- \belowdisplayshortskip 2.5\p@ \@plus\p@ \@minus\p@
- \def\@listi{\leftmargin\leftmargini
- \topsep 3\p@ \@plus\p@ \@minus\p@
- \parsep 2\p@ \@plus\p@ \@minus\p@
- \itemsep \parsep}%
- \belowdisplayskip \abovedisplayskip
+\let\footnotesize\@undefined
+\DeclareRobustCommand\footnotesize{%
+ \@setfontsize\footnotesize\@viipt\@viiipt
+ \abovedisplayskip 4\p@ \@plus2\p@ \@minus2\p@
+ \abovedisplayshortskip \z@ \@plus1\p@
+ \belowdisplayshortskip 2.5\p@ \@plus\p@ \@minus\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 3\p@ \@plus\p@ \@minus\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep}%
+ \belowdisplayskip \abovedisplayskip
}
-\def\scriptsize{\@setfontsize\scriptsize\@vipt\@viipt}
-\def\tiny{\@setfontsize\tiny\@vpt\@vipt}
-\def\large{\@setfontsize\large\@xpt\@xiipt}
-\def\Large{\@setfontsize\Large\@xipt{13}}
-\def\LARGE{\@setfontsize\LARGE\@xiipt{14}}
-\def\huge{\@setfontsize\huge\@xivpt{18}}
-\def\Huge{\@setfontsize\Huge\@xviipt{22}}
+\let\scriptsize\@undefined
+\let\tiny\@undefined
+\let\large\@undefined
+\let\Large\@undefined
+\let\LARGE\@undefined
+\let\huge\@undefined
+\let\Huge\@undefined
+\DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@vipt\@viipt}
+\DeclareRobustCommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
+\DeclareRobustCommand\large{\@setfontsize\large\@xpt\@xiipt}
+\DeclareRobustCommand\Large{\@setfontsize\Large\@xipt{13}}
+\DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xiipt{14}}
+\DeclareRobustCommand\huge{\@setfontsize\huge\@xivpt{18}}
+\DeclareRobustCommand\Huge{\@setfontsize\Huge\@xviipt{22}}
\normalsize
\setlength\footnotesep {6.3\p@}
\setlength{\skip\footins} {8\p@ \@plus 4\p@ \@minus 2\p@}
-\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\textfloatsep {18\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\dbltextfloatsep{18\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
-\setlength\dbltextfloatsep{18\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\@fptop {0\p@ \@plus 1fil}
\setlength\@fpsep {8\p@ \@plus 2fil}
\setlength\@fpbot {0\p@ \@plus 1fil}
@@ -97,33 +106,33 @@
\setlength\@dblfpbot {0\p@ \@plus 1fil}
\setlength\partopsep {2\p@ \@plus 1\p@ \@minus 1\p@}
\def\@listi{\leftmargin\leftmargini
- \parsep 4\p@ \@plus2\p@ \@minus\p@
- \topsep 8\p@ \@plus2\p@ \@minus3\p@
- \itemsep \parsep}
+ \parsep 4\p@ \@plus2\p@ \@minus\p@
+ \topsep 8\p@ \@plus2\p@ \@minus3\p@
+ \itemsep \parsep}
\let\@listI\@listi
\def\@listii {\leftmargin\leftmarginii
- \labelwidth\leftmarginii
- \advance\labelwidth-\labelsep
- \topsep 4\p@ \@plus2\p@ \@minus\p@
- \parsep 2\p@ \@plus\p@ \@minus\p@
- \itemsep \parsep}
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+ \topsep 4\p@ \@plus2\p@ \@minus\p@
+ \parsep 2\p@ \@plus\p@ \@minus\p@
+ \itemsep \parsep}
\def\@listiii{\leftmargin\leftmarginiii
- \labelwidth\leftmarginiii
- \advance\labelwidth-\labelsep
- \topsep 2\p@ \@plus\p@\@minus\p@
- \parsep \z@
- \partopsep \p@ \@plus\z@ \@minus\p@
- \itemsep \topsep}
+ \labelwidth\leftmarginiii
+ \advance\labelwidth-\labelsep
+ \topsep 2\p@ \@plus\p@\@minus\p@
+ \parsep \z@
+ \partopsep \p@ \@plus\z@ \@minus\p@
+ \itemsep \topsep}
\def\@listiv {\leftmargin\leftmarginiv
- \labelwidth\leftmarginiv
- \advance\labelwidth-\labelsep}
+ \labelwidth\leftmarginiv
+ \advance\labelwidth-\labelsep}
\def\@listv {\leftmargin\leftmarginv
- \labelwidth\leftmarginv
- \advance\labelwidth-\labelsep}
+ \labelwidth\leftmarginv
+ \advance\labelwidth-\labelsep}
\def\@listvi {\leftmargin\leftmarginvi
- \labelwidth\leftmarginvi
- \advance\labelwidth-\labelsep}
-%%% From File: $Id: scrkernel-paragraphs.dtx 2680 2017-09-28 05:45:12Z kohm $
+ \labelwidth\leftmarginvi
+ \advance\labelwidth-\labelsep}
+%%% From File: $Id: scrkernel-paragraphs.dtx 3064 2019-02-01 07:40:28Z kohm $
\@ifundefined{@list@extra}{}{%
\expandafter\ifnum\scr@v@is@ge{3.17}\par@updaterelative\fi
\l@addto@macro{\@listi}{\@list@extra}%
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudathesis.cfg b/Master/texmf-dist/tex/latex/tuda-ci/tudathesis.cfg
index 54ffeeacd0a..43b673d44f0 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudathesis.cfg
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudathesis.cfg
@@ -1,10 +1,18 @@
-%% This is file `tudathesis.cfg' version 3.41 (2024-07-02),
+%%
+%% This is file `tudathesis.cfg',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tuda-ci.dtx (with options: `cfg,tudathesis')
+%%
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
+%%
%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
-%%
+%%
+%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de>
+%%
%% ============================================================================
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,87 +21,76 @@
%% http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
-%%
+%%
%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainers of this work are
+%%
+%% The Current Maintainer of this work is
%% Marei Peischl <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
+%%
+%% The development repository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% ============================================================================
-%%
-\def\fileversion{3.41}
-\def\filedate{2024-07-02}
-\RequirePackage{expl3}
-\ProvidesExplFile{tudathesis.cfg}
-{\filedate}{\fileversion}{Special Features for publication type 'thesis' using TU Darmstadt's Corporate Design (tuda-ci)}
-
-\RequirePackage{l3keys2e}
-
-
+%%
\tl_new:N \g_ptxcd_thesis_drtext_tl
\clist_if_exist:NF \g_ptxcd_Required_title_data_clist {\clist_new:N \g_ptxcd_Required_title_data_clist}
-%Declare macros for department
\cs_new:Nn \ptxcd_select_department:n {
- \str_case:nnTF {#1} {
- {arch} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Architektur} {Architecture}}
- {bauing} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Bau-~und~Umweltingenieurwissenschaften}{Civil~and~Environmental~Engineering}}
- {bio} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Biologie}{Biology}}
- {chem} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Chemie}{Chemistry}}
- {etit} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Elektrotechnik~und~Informationstechnik}{Electrical~Engineering~and~Information~Technology}}
- {gugw} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Gesellschafts-~und~Geschichtswissenschaften}{History~and~Social~Sciences}}
- {humanw} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Humanwissenschaften}{Human~Sciences}}
- {inf} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Informatik}{Computer~Science}}
- {mb} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Maschinenbau}{Mechanical~Engineering}}
- {matgeo} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Material-~und~Geowissenschaften}{Materials~and~Earth~Sciences}}
- {math} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Mathematik}{Mathematics}}
- {phys} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Physik}{Physics}}
- {wi} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Rechts-~und~Wirtschaftswissenschaften}{Law~and~Economics}}
- }
- {
- \ptxcd_declare_caption:Nnn \departmentname {Fachbereich} {department}
- \ptxcd_declare_caption:Nnn \departmentfullname {\departmentname{}~ \ptxcd_department:} { \ptxcd_department:{}~ \text_titlecase:n{\departmentname}}
- \ptxcd_declare_caption:Nnn \ptxcd_departmentprefix: {im~ \departmentname}{in~the~\departmentname{}~ of}
- \ptxcd_declare_caption:Nnn \ptxcd_in_department {\ptxcd_departmentprefix:{}~\ptxcd_department:}{\ptxcd_departmentprefix:{}~\ptxcd_department:}
- }
- {\bool_if:NTF \g_ptxcd_dr_bool
- {
- \msg_warning:nnn{tudapub/thesis} {unrecognized-department} {#1}
- \gdef\ptxcd_department:{#1}
- \ptxcd_declare_caption:Nnn \departmentname {Fachbereich} {department}
- }
- {\ptxcd_select_studyfield:n {#1}}
- }
+ \str_case:nnTF {#1} {
+ {arch} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Architektur} {Architecture}}
+ {bauing} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Bau-~und~Umweltingenieurwissenschaften}{Civil~and~Environmental~Engineering}}
+ {bio} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Biologie}{Biology}}
+ {chem} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Chemie}{Chemistry}}
+ {etit} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Elektrotechnik~und~Informationstechnik}{Electrical~Engineering~and~Information~Technology}}
+ {gugw} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Gesellschafts-~und~Geschichtswissenschaften}{History~and~Social~Sciences}}
+ {humanw} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Humanwissenschaften}{Human~Sciences}}
+ {inf} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Informatik}{Computer~Science}}
+ {mb} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Maschinenbau}{Mechanical~Engineering}}
+ {matgeo} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Material-~und~Geowissenschaften}{Materials~and~Earth~Sciences}}
+ {math} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Mathematik}{Mathematics}}
+ {phys} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Physik}{Physics}}
+ {wi} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Rechts-~und~Wirtschaftswissenschaften}{Law~and~Economics}}
+ }
+ {
+ \ptxcd_declare_caption:Nnn \departmentname {Fachbereich} {department}
+ \ptxcd_declare_caption:Nnn \departmentfullname {\departmentname{}~ \ptxcd_department:} { \ptxcd_department:{}~ \text_titlecase:n{\departmentname}}
+ \ptxcd_declare_caption:Nnn \ptxcd_departmentprefix: {im~ \departmentname}{in~the~\departmentname{}~ of}
+ \ptxcd_declare_caption:Nnn \ptxcd_in_department {\ptxcd_departmentprefix:{}~\ptxcd_department:}{\ptxcd_departmentprefix:{}~\ptxcd_department:}
+ }
+ {\bool_if:NTF \g_ptxcd_dr_bool
+ {
+ \msg_warning:nnn{tudapub/thesis} {unrecognized-department} {#1}
+ \gdef\ptxcd_department:{#1}
+ \ptxcd_declare_caption:Nnn \departmentname {Fachbereich} {department}
+ }
+ {\ptxcd_select_studyfield:n {#1}}
+ }
}
-
\cs_new:Nn \ptxcd_select_studyfield:n {
- \str_case:nnTF {#1} {
- {ce}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Computational\nobreakspace Engineering}{Computational\nobreakspace Engineering}}
- {ese}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Energy~Science~and~Engineering}{Energy~Science~and~Engineering}}
- {ist}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Informationssystemtechnik} {Information~Systems~Technology}}
- {mech}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Mechanik}{Mechanics}}
- {metro}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Mechatronik}{Mechatronics}}
- }
- {
- \ptxcd_declare_caption:Nnn \departmentname {Studienbereich} {field~of~study}
- \ptxcd_declare_caption:Nnn \departmentfullname {\departmentname{}~ \ptxcd_department:} {\departmentname{}:~\ptxcd_department:}
- \ptxcd_declare_caption:Nnn \ptxcd_departmentprefix: {im~ \departmentname}{in~the~\departmentname}
- \ptxcd_declare_caption:Nnn \ptxcd_in_department {\ptxcd_departmentprefix:{}~\ptxcd_department:} {\ptxcd_departmentprefix:{}~``\ptxcd_department:''}
- }
- {
- \msg_warning:nnn{tudapub/thesis} {unrecognized-department} {#1}
- \gdef\ptxcd_department:{#1}
- \ptxcd_declare_caption:Nnn \departmentname {Fachbereich} {department}
- }
+ \str_case:nnTF {#1} {
+ {ce}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Computational\nobreakspace Engineering}{Computational\nobreakspace Engineering}}
+ {ese}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Energy~Science~and~Engineering}{Energy~Science~and~Engineering}}
+ {ist}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Informationssystemtechnik} {Information~Systems~Technology}}
+ {mech}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Mechanik}{Mechanics}}
+ {metro}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Mechatronik}{Mechatronics}}
+ }
+ {
+ \ptxcd_declare_caption:Nnn \departmentname {Studienbereich} {field~of~study}
+ \ptxcd_declare_caption:Nnn \departmentfullname {\departmentname{}~ \ptxcd_department:} {\departmentname{}:~\ptxcd_department:}
+ \ptxcd_declare_caption:Nnn \ptxcd_departmentprefix: {im~ \departmentname}{in~the~\departmentname}
+ \ptxcd_declare_caption:Nnn \ptxcd_in_department {\ptxcd_departmentprefix:{}~\ptxcd_department:} {\ptxcd_departmentprefix:{}~``\ptxcd_department:''}
+ }
+ {
+ \msg_warning:nnn{tudapub/thesis} {unrecognized-department} {#1}
+ \gdef\ptxcd_department:{#1}
+ \ptxcd_declare_caption:Nnn \departmentname {Fachbereich} {department}
+ }
}
\cs_new:Nn \ptxcd_insert_studentID:n {
- (\ptxcd_studentIDname :\nobreakspace#1)
+ (\ptxcd_studentIDname :\nobreakspace#1)
}
\ptxcd_declare_caption:Nnn \ptxcd_byname {von} {by}
@@ -104,7 +101,6 @@
\ptxcd_declare_caption:Nnn \ptxcd_submissiondatename {Tag~ der~ Einreichung}{Date~ of~ submission}
\ptxcd_declare_caption:Nnn \ptxcd_studentIDname {Matrikelnummer} {Student\nobreakspace ID}
-%Fallback content for box if not overwritten
\newcommand*\ptxcd_box_department {\cs_if_exist_use:NF \departmentfullname {\ptxcd_department:}}
\newcommand*\ptxcd_in_department {}
\newcommand*{\ptxcd_thesisStatus}{}
@@ -112,52 +108,49 @@
\def\@ThesisTypeArticle{die}
\keys_define:nn {ptxcd/thesis} {
- dr .choice:,
- dr/rernat .code:n = \tl_gset:Nn \g_ptxcd_thesis_drtext_tl {Zur~Erlangung~des~Grades~eines~Doktors~der~Naturwissenschaften~(Dr.\,rer.\,nat.)},
- dr/ing .code:n = \tl_gset:Nn \g_ptxcd_thesis_drtext_tl {Zur~Erlangung~des~akademischen~Grades~Doktor-Ingenieur~(Dr.-Ing.)},
- dr/phil .code:n = \tl_gset:Nn \g_ptxcd_thesis_drtext_tl {Zur~Erlangung~des~Grades~eines~Doktor~der~Philosophie~(Dr.\,phil.)},
- dr/rerpol .code:n = \tl_gset:Nn \g_ptxcd_thesis_drtext_tl {Zur~Erlangung~des~Grades~eines~Doctor~rerum~politicarum (Dr. rer. pol.)},
- type .choice:,
- type/sta .code:n = {\def\ptxcd_thesisType{Studienarbeit}
- \clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, date}
- \bool_gset_false:N \g_ptxcd_dr_bool
- },
-% type/diplom .code:n = {\def\ptxcd_thesisType{Diplomarbeit}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate, reviewer, department}},
- type/bsc .meta:n = {type=bachelor},
- type/bachelor .code:n = {\ptxcd_declare_caption:Nnn \ptxcd_thesisType{Bachelorarbeit}{bachelor~ thesis}\def\@ThesisTypeArticle{die}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate, department, reviewer}\bool_gset_false:N \g_ptxcd_dr_bool},
- type/pp .code:n = { \ptxcd_declare_caption:Nnn \ptxcd_thesisType {Project-Proposal}{project~ proposal}\def\@ThesisTypeArticle{das}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, date, department}\bool_gset_false:N \g_ptxcd_dr_bool},
- type/msc .meta:n = {type=master},
- type/master .code:n = \ptxcd_declare_caption:Nnn \ptxcd_thesisType{Masterarbeit}{master~ thesis}\def\@ThesisTypeArticle{die}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate, department, reviewer}\bool_gset_false:N \g_ptxcd_dr_bool,
- type/dr .code:n = \ptxcd_declare_caption:Nnn \ptxcd_thesisType{Dissertation}{doctoral~ thesis}\ptxcd_declare_caption:Nnn\ptxcd_thesisStatus{vorgelegte}{submitted}\def\@ThesisTypeArticle{die}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate , birthplace, department, reviewer}\bool_gset_true:N \g_ptxcd_dr_bool,
- type/drfinal .code:n = \ptxcd_declare_caption:Nnn \ptxcd_thesisType {Dissertation}{doctoral~ thesis}\ptxcd_declare_caption:Nnn\ptxcd_thesisStatus{genehmigte}{accepted}\def\@ThesisTypeArticle{die}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate,examdate, birthplace, department, reviewer}\bool_gset_true:N \g_ptxcd_dr_bool,
- type/unknown .code:n = \def\ptxcd_thesisType{#1}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {}\def\@ThesisTypeArticle{die}\bool_gset_false:N \g_ptxcd_dr_bool,
- ignore-missing-data .bool_gset:N = \g_ptxcd_missing_data_warning_bool,
- ignore-missing-data .initial:n = false,
- department .tl_gset:N = \g_ptxcd_department_choice_tl,
- status .code:n = \tl_if_head_is_group:nTF {#1} {\ptxcd_declare_caption:Nnn\ptxcd_thesisStatus #1 {}} {\ptxcd_declare_caption:Nnn\ptxcd_thesisStatus{#1}{#1}},
- fieldofstudy .meta:n ={department = #1},
- ignore-title-language .bool_gset:N = \g_ptxcd_ignore_title_language_bool,
- ignore-title-language .initial:n ={false},
- noinstbox .bool_gset:N = \g_ptxcd_manual_info_box_bool,
- instbox .bool_gset_inverse:N = \g_ptxcd_manual_info_box_bool,
- instbox .initial:n = true,
- reviewer-on-uppertitleback .bool_gset:N = \g__ptxcd_reviewer_on_uppertitleback_bool,
- reviewer-on-uppertitleback .initial:n = false,
- hide-architecture-note .bool_gset_inverse:N = \g__ptxcd_architecture_note_bool,
- hide-architecture-note .initial:n = false,
- hide-architecture-note .default:n = true,
+ dr .choice:,
+ dr/rernat .code:n = \tl_gset:Nn \g_ptxcd_thesis_drtext_tl {Zur~Erlangung~des~Grades~eines~Doktors~der~Naturwissenschaften~(Dr.\,rer.\,nat.)},
+ dr/ing .code:n = \tl_gset:Nn \g_ptxcd_thesis_drtext_tl {Zur~Erlangung~des~akademischen~Grades~Doktor-Ingenieur~(Dr.-Ing.)},
+ dr/phil .code:n = \tl_gset:Nn \g_ptxcd_thesis_drtext_tl {Zur~Erlangung~des~Grades~eines~Doktor~der~Philosophie~(Dr.\,phil.)},
+ dr/rerpol .code:n = \tl_gset:Nn \g_ptxcd_thesis_drtext_tl {Zur~Erlangung~des~Grades~eines~Doctor~rerum~politicarum (Dr. rer. pol.)},
+ type .choice:,
+ type/sta .code:n = {\def\ptxcd_thesisType{Studienarbeit}
+ \clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, date}
+ \bool_gset_false:N \g_ptxcd_dr_bool
+ },
+ type/bsc .meta:n = {type=bachelor},
+ type/bachelor .code:n = {\ptxcd_declare_caption:Nnn \ptxcd_thesisType{Bachelorarbeit}{bachelor~ thesis}\def\@ThesisTypeArticle{die}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate, department, reviewer}\bool_gset_false:N \g_ptxcd_dr_bool},
+ type/pp .code:n = { \ptxcd_declare_caption:Nnn \ptxcd_thesisType {Project-Proposal}{project~ proposal}\def\@ThesisTypeArticle{das}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, date, department}\bool_gset_false:N \g_ptxcd_dr_bool},
+ type/msc .meta:n = {type=master},
+ type/master .code:n = \ptxcd_declare_caption:Nnn \ptxcd_thesisType{Masterarbeit}{master~ thesis}\def\@ThesisTypeArticle{die}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate, department, reviewer}\bool_gset_false:N \g_ptxcd_dr_bool,
+ type/dr .code:n = \ptxcd_declare_caption:Nnn \ptxcd_thesisType{Dissertation}{doctoral~ thesis}\ptxcd_declare_caption:Nnn\ptxcd_thesisStatus{vorgelegte}{submitted}\def\@ThesisTypeArticle{die}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate , department, reviewer}\bool_gset_true:N \g_ptxcd_dr_bool,
+ type/drfinal .code:n = \ptxcd_declare_caption:Nnn \ptxcd_thesisType {Dissertation}{doctoral~ thesis}\ptxcd_declare_caption:Nnn\ptxcd_thesisStatus{genehmigte}{accepted}\def\@ThesisTypeArticle{die}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate,examdate, department, reviewer}\bool_gset_true:N \g_ptxcd_dr_bool,
+ type/unknown .code:n = \def\ptxcd_thesisType{#1}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {}\def\@ThesisTypeArticle{die}\bool_gset_false:N \g_ptxcd_dr_bool,
+ ignore-missing-data .bool_gset:N = \g_ptxcd_missing_data_warning_bool,
+ ignore-missing-data .initial:n = false,
+ department .tl_gset:N = \g_ptxcd_department_choice_tl,
+ status .code:n = \tl_if_head_is_group:nTF {#1} {\ptxcd_declare_caption:Nnn\ptxcd_thesisStatus #1 {}} {\ptxcd_declare_caption:Nnn\ptxcd_thesisStatus{#1}{#1}},
+ fieldofstudy .meta:n ={department = #1},
+ ignore-title-language .bool_gset:N = \g_ptxcd_ignore_title_language_bool,
+ ignore-title-language .initial:n ={false},
+ noinstbox .bool_gset:N = \g_ptxcd_manual_info_box_bool,
+ instbox .bool_gset_inverse:N = \g_ptxcd_manual_info_box_bool,
+ instbox .initial:n = true,
+ reviewer-on-uppertitleback .bool_gset:N = \g__ptxcd_reviewer_on_uppertitleback_bool,
+ reviewer-on-uppertitleback .initial:n = false,
+ hide-architecture-note .bool_gset_inverse:N = \g__ptxcd_architecture_note_bool,
+ hide-architecture-note .initial:n = false,
+ hide-architecture-note .default:n = true,
}
-
\prop_map_inline:Nn \g_ptxcd_unknown_clsopts_prop {
- \keys_if_exist:nnT {ptxcd/thesis} {#1} {
- \keys_set:nn {ptxcd/thesis} {#1=#2}
- }
+ \keys_if_exist:nnT {ptxcd/thesis} {#1} {
+ \keys_set:nn {ptxcd/thesis} {#1=#2}
+ }
}
\tl_if_empty:NF \g_ptxcd_thesis_options_tl {\keys_set:nV {ptxcd/thesis} \g_ptxcd_thesis_options_tl}
-
\cs_new:Npn \drtext #1 {\tl_gset:Nn \g_ptxcd_thesis_drtext_tl {#1}}
\tl_new:N \g_ptxcd_titleintro_tl
\cs_new:Npn \titleintro #1 {\tl_gset:Nn \g_ptxcd_titleintro_tl {#1}}
@@ -167,28 +160,28 @@
\msg_new:nnnn{tudapub/thesis} {required-data-missing} {You~did~not~provide~#1~data~for~the~title.~Either~provide~it~or~change~your~publication~type.} {See~ the~ TUDa-CI~ documentation~ for~ further~ information~ and~ workarounds.}
\cs_new:Nn \ptxcd_missing_title_data:n {
- \bool_if:NTF \g_ptxcd_missing_data_warning_bool
- \msg_warning:nnn
- \msg_error:nnn{tudapub/thesis} {required-data-missing} {#1}
+ \bool_if:NTF \g_ptxcd_missing_data_warning_bool
+ \msg_warning:nnn
+ \msg_error:nnn{tudapub/thesis} {required-data-missing} {#1}
}
\cs_new:Nn \ptxcd_check_title_data:Nn {
- \clist_if_in:NnT \g_ptxcd_Required_title_data_clist {#2} {
- \tl_if_empty:NT #1 {
- \bool_if:NTF \g_ptxcd_missing_data_warning_bool
- {\msg_warning:nnn}
- {\msg_error:nnn} {tudapub/thesis} {required-data-missing} {#2}
- }
- }
+ \clist_if_in:NnT \g_ptxcd_Required_title_data_clist {#2} {
+ \tl_if_empty:NT #1 {
+ \bool_if:NTF \g_ptxcd_missing_data_warning_bool
+ {\msg_warning:nnn}
+ {\msg_error:nnn} {tudapub/thesis} {required-data-missing} {#2}
+ }
+ }
}
\cs_generate_variant:Nn \ptxcd_check_title_data:Nn {cn}
\renewcommand*\author[2][]{
- \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#2}
- \tl_if_empty:nTF {#1}
- {\tl_set:Nn \l_ptxcd_signature_tl {#2}}
- {\tl_set:Nn \l_ptxcd_signature_tl {#1}}
+ \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#2}
+ \tl_if_empty:nTF {#1}
+ {\tl_set:Nn \l_ptxcd_signature_tl {#2}}
+ {\tl_set:Nn \l_ptxcd_signature_tl {#1}}
}
\newcommand*{\studentID}[1]{
@@ -198,18 +191,17 @@
\gdef\ptxcd_institution{}
\gdef\ptxcd_institute{}
\gdef\ptxcd_department:{}
-%\gdef\ptxcd_studentID{}
\NewDocumentCommand{\department}{som}{%
- \IfBooleanTF{#1}{
- \tl_gset:Nn \ptxcd_department: {#3}
- \tl_gset:Nn \ptxcd_in_department{#3}
- \IfNoValueTF {#2} {\tl_gset:Nn \ptxcd_box_department {#3}} {\tl_gset:Nn \ptxcd_box_department{#2}}
- \clist_remove_all:Nn \g_ptxcd_Required_title_data_clist {department}
- }{
- \tl_gset:Nn \g_ptxcd_department_choice_tl {#3}
- \IfNoValueF {#2} {\tl_gset:Nn \ptxcd_departmentprefix: {#2}}
- }
+ \IfBooleanTF{#1}{
+ \tl_gset:Nn \ptxcd_department: {#3}
+ \tl_gset:Nn \ptxcd_in_department{#3}
+ \IfNoValueTF {#2} {\tl_gset:Nn \ptxcd_box_department {#3}} {\tl_gset:Nn \ptxcd_box_department{#2}}
+ \clist_remove_all:Nn \g_ptxcd_Required_title_data_clist {department}
+ }{
+ \tl_gset:Nn \g_ptxcd_department_choice_tl {#3}
+ \IfNoValueF {#2} {\tl_gset:Nn \ptxcd_departmentprefix: {#2}}
+ }
}
\newcommand*{\institute}[1]{
@@ -223,117 +215,115 @@
\gdef\ptxcd_birthplace{}
\newcommand*{\birthplace}[1]{%
- \bool_if:NTF \g_ptxcd_dr_bool
- {\gdef\ptxcd_birthplace{#1}}
- {\msg_info:nnn{tudapub/thesis} {dr-field-only} {birthplace}}
+ \bool_if:NTF \g_ptxcd_dr_bool
+ {\gdef\ptxcd_birthplace{#1}}
+ {\msg_info:nnn{tudapub/thesis} {dr-field-only} {birthplace}}
}
\publishers{Darmstadt\bool_if:NT \g_ptxcd_dr_bool {,~Technische~Universität~Darmstadt}}
\seq_new:N \g_ptxcd_reviewer_seq
\NewDocumentCommand{\reviewer}{som}{
- \IfNoValueF {#2} {
- \IfBooleanTF{#1}
- {\setupReviewName*{#2}}
- {\setupReviewName{#2}}
- }
- \tl_if_empty:nTF {#3}
- {\let\@reviewer\@empty}
- {\seq_gset_split:Nnn \g_ptxcd_reviewer_seq {\and} {#3}}
+ \IfNoValueF {#2} {
+ \IfBooleanTF{#1}
+ {\setupReviewName*{#2}}
+ {\setupReviewName{#2}}
+ }
+ \tl_if_empty:nTF {#3}
+ {\let\@reviewer\@empty}
+ {\seq_gset_split:Nnn \g_ptxcd_reviewer_seq {\and} {#3}}
}
\cs_set:Nn \ptxcd_thesis_print_reviewer: {
- \clist_if_in:NnT \g_ptxcd_Required_title_data_clist {reviewer} {
- \seq_if_empty:NT \g_ptxcd_reviewer_seq {\ptxcd_missing_title_data:n {reviewer}}
- }
- \int_zero:N \l_tmpb_int
- \par\vspace*{\baselineskip}
- {
- \seq_map_inline:Nn \g_ptxcd_reviewer_seq
- {
- \int_incr:N \l_tmpb_int
- \cs_if_exist_use:cF {__ptxcd_reviewname_\int_use:N \l_tmpb_int :}
- {\int_to_arabic:n {\l_tmpb_int}.~\text_titlecase:n{\ptxcd_reviewname}}
- :~\exp_not:n {##1}\\
- }
- }
+ \clist_if_in:NnT \g_ptxcd_Required_title_data_clist {reviewer} {
+ \seq_if_empty:NT \g_ptxcd_reviewer_seq {\ptxcd_missing_title_data:n {reviewer}}
+ }
+ \int_zero:N \l_tmpb_int
+ \par\vspace*{\baselineskip}
+ {
+ \seq_map_inline:Nn \g_ptxcd_reviewer_seq
+ {
+ \int_incr:N \l_tmpb_int
+ \cs_if_exist_use:cF {__ptxcd_reviewname_\int_use:N \l_tmpb_int :}
+ {\int_to_arabic:n {\l_tmpb_int}.~\text_titlecase:n{\ptxcd_reviewname}}
+ :~\exp_not:n {##1}\\
+ }
+ }
}
-
\gdef\ptxcd_examdate{}
\newcommand*{\examdate}[1]{
- \bool_if:NTF \g_ptxcd_dr_bool
- {\gdef\ptxcd_examdate{#1}}
- {\msg_info:nnn{tudapub/thesis} {dr-field-only} {examdate}}
+ \bool_if:NTF \g_ptxcd_dr_bool
+ {\gdef\ptxcd_examdate{#1}}
+ {\msg_info:nnn{tudapub/thesis} {dr-field-only} {examdate}}
}
\gdef\ptxcd_submissiondate{}
\newcommand*{\submissiondate}[1]{
- \gdef\ptxcd_submissiondate{#1}
+ \gdef\ptxcd_submissiondate{#1}
}
\gdef\@date{}
\cs_new:Nn \ptxcd_thesis_print_dates:n {
- \bool_set_false:N \l_tmpa_bool
- \tl_if_empty:NF \@date {
- \ptxcd_datename\tl_if_empty:NF \ptxcd_datename {\ptxcd_dateseparator}\@date
- \bool_set_true:N \l_tmpa_bool
- }
- \tl_if_empty:NF \ptxcd_submissiondate {
- \bool_if:NTF \l_tmpa_bool {#1} {\bool_set_true:N \l_tmpa_bool}\ptxcd_submissiondatename\ptxcd_dateseparator\ptxcd_submissiondate
- }
- \tl_if_empty:NF \ptxcd_examdate {
- \bool_if:NTF \l_tmpa_bool {#1} {\bool_set_true:N \l_tmpa_bool}\ptxcd_examdatename\ptxcd_dateseparator\ptxcd_examdate
- }
+ \bool_set_false:N \l_tmpa_bool
+ \tl_if_empty:NF \@date {
+ \ptxcd_datename\tl_if_empty:NF \ptxcd_datename {\ptxcd_dateseparator}\@date
+ \bool_set_true:N \l_tmpa_bool
+ }
+ \tl_if_empty:NF \ptxcd_submissiondate {
+ \bool_if:NTF \l_tmpa_bool {#1} {\bool_set_true:N \l_tmpa_bool}\ptxcd_submissiondatename\ptxcd_dateseparator\ptxcd_submissiondate
+ }
+ \tl_if_empty:NF \ptxcd_examdate {
+ \bool_if:NTF \l_tmpa_bool {#1} {\bool_set_true:N \l_tmpa_bool}\ptxcd_examdatename\ptxcd_dateseparator\ptxcd_examdate
+ }
}
\tl_new:N \g_ptxcd_license_info_tl
\keys_define:nn {ptxcd/thesis} {
- urn .tl_gset:N =\g_ptxcd_thesis_urn_tl,
- urn .initial:V = \c_empty_tl,
- printid .tl_gset:N = \g_ptxcd_thesis_tuprints_tl,
- printid .initial:V = \c_empty_tl,
- doi .tl_gset:N = \g_ptxcd_thesis_doi_tl,
- year .tl_gset:N = \g_ptxcd_thesis_publication_year_tl,
- year .initial:n = ,
- license .choices:nn = {cc-by-4.0,cc-by-sa-4.0,cc-by-nc-sa-4.0,cc-by-nc-4.0,cc-by-nd-4.0,cc-by-nc-nd-4.0} {
- \tl_gset:Nx \g_ptxcd_license_info_tl {\exp_not:N \g__ptxcd_cc_license:n {\l_keys_choice_tl} \exp_not:N \iflanguage{\exp_not:N \bbl@main@language}{}{\exp_not:n {\par\smallskip\otherlanguage{\bbl@main@language}}{\exp_not:N \g__ptxcd_cc_license:n {\l_keys_choice_tl}}}}
- },
- license / cc-by-nc-nd-2.0-de .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl {\use:c {g__ptxcd_cc-by-nc-nd-2.0-de:}},
- license / inc-1.0-de .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl {
- Die~Veröffentlichung~ist~urheberrechtlich~geschützt\newline
- \url{https://rightsstatements.org/page/InC/1.0/}
- },
- license / inc-1.0-en .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl {
- This~work~is~protected~by~copyright\newline
- \url{https://rightsstatements.org/page/InC/1.0/}
- },
- license / inc-1.0 .code:n = \tl_if_in:NnTF \languagename {german} {\keys_set:nn {ptxcd/thesis}{license=inc-1.0-de}}{\keys_set:nn {ptxcd/thesis}{license=inc-1.0-en}},
- license / initial .code:n = {\keys_set:nn {ptxcd/thesis} {license=cc-by-4.0}},
- license / unknown .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl {#1},
- license .initial:n = initial,
- signature .tl_set:N = \l_ptxcd_signature_tl,
- studentID .tl_set:N = \l_ptxcd_studentID_tl,
- studentID .initial:n =,
- signature-image .tl_set:N = \l_ptxcd_signature_image_tl,
- signature-image .initial:n =,
- signature-location .tl_set:N = \l_ptxcd_signature_location_tl,
- signature-location .initial:n = Darmstadt,
+ urn .tl_gset:N =\g_ptxcd_thesis_urn_tl,
+ urn .initial:V = \c_empty_tl,
+ printid .tl_gset:N = \g_ptxcd_thesis_tuprints_tl,
+ printid .initial:V = \c_empty_tl,
+ doi .tl_gset:N = \g_ptxcd_thesis_doi_tl,
+ year .tl_gset:N = \g_ptxcd_thesis_publication_year_tl,
+ year .initial:n = ,
+ license .choices:nn = {cc-by-4.0,cc-by-sa-4.0,cc-by-nc-sa-4.0,cc-by-nc-4.0,cc-by-nd-4.0,cc-by-nc-nd-4.0} {
+ \tl_gset:Nx \g_ptxcd_license_info_tl {\exp_not:N \g__ptxcd_cc_license:n {\l_keys_choice_tl} \exp_not:N \iflanguage{\exp_not:N \bbl@main@language}{}{\exp_not:n {\par\smallskip\otherlanguage{\bbl@main@language}}{\exp_not:N \g__ptxcd_cc_license:n {\l_keys_choice_tl}}}}
+ },
+ license / cc-by-nc-nd-2.0-de .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl {\use:c {g__ptxcd_cc-by-nc-nd-2.0-de:}},
+ license / inc-1.0-de .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl {
+ Die~Veröffentlichung~ist~urheberrechtlich~geschützt\newline
+ \url{https://rightsstatements.org/page/InC/1.0/}
+ },
+ license / inc-1.0-en .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl {
+ This~work~is~protected~by~copyright\newline
+ \url{https://rightsstatements.org/page/InC/1.0/}
+ },
+ license / inc-1.0 .code:n = \tl_if_in:NnTF \languagename {german} {\keys_set:nn {ptxcd/thesis}{license=inc-1.0-de}}{\keys_set:nn {ptxcd/thesis}{license=inc-1.0-en}},
+ license / initial .code:n = {\keys_set:nn {ptxcd/thesis} {license=cc-by-4.0}},
+ license / unknown .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl {#1},
+ license .initial:n = initial,
+ signature .tl_set:N = \l_ptxcd_signature_tl,
+ studentID .tl_set:N = \l_ptxcd_studentID_tl,
+ studentID .initial:n =,
+ signature-image .tl_set:N = \l_ptxcd_signature_image_tl,
+ signature-image .initial:n =,
+ signature-location .tl_set:N = \l_ptxcd_signature_location_tl,
+ signature-location .initial:n = Darmstadt,
}
\msg_new:nnnn {tudapub/thesis} {default-license-will-change} {
- TUprints~changed~their~default~license.\\
- tuda-ci~will~adapt~this~change~in~the~next~major~update.~\\
- Please~choose~your~license~manually~to~avoid~unintended~changes.
+TUprints~changed~their~default~license.\\
+tuda-ci~will~adapt~this~change~in~the~next~major~update.~\\
+Please~choose~your~license~manually~to~avoid~unintended~changes.
} {Use~either~the~old~default~value~license=cc-by-nc-nd-2.0-de or~license=cc-by-4.0~or~license={<custom~text>}~with~\string\tuprints.}
-
\cs_new:cn {g__ptxcd_cc-by-nc-nd-2.0-de:} {
- Die~Veröffentlichung~steht~unter~folgender~Creative~Commons~Lizenz:\\
- Namensnennung~--~Keine~kommerzielle~Nutzung~--~Keine~Bearbeitung~ 2.0~Deutschland\\
- \url{http://creativecommons.org/licenses/by-nc-nd/2.0/de/}
+ Die~Veröffentlichung~steht~unter~folgender~Creative~Commons~Lizenz:\\
+ Namensnennung~--~Keine~kommerzielle~Nutzung~--~Keine~Bearbeitung~ 2.0~Deutschland\\
+ \url{https://creativecommons.org/licenses/by-nc-nd/2.0/de/}
}
\defcaptionname{ngerman, german}{\g__ptxcd_cc_attr_by:}{Namensnennung}
@@ -353,68 +343,66 @@
\defcaptionname{english, USenglish, american, UKenglish, british}{\g__ptxcd_cc_sep:}{--}
\cs_new:Nn \g__ptxcd_cc_license:n {
- \group_begin:
- \g__ptxcd_cc_intro:\\
- \seq_set_split:Nnn \l_tmpa_seq {-} {#1}
- \bool_set_false:N \l_tmpa_bool
- \seq_remove_all:Nn \l_tmpa_seq {cc}
- \seq_pop_right:NN \l_tmpa_seq \l_tmpa_tl
- \seq_map_inline:Nn \l_tmpa_seq {
- \bool_if:NTF \l_tmpa_bool {\g__ptxcd_cc_sep:} {\bool_set_true:N \l_tmpa_bool}
- \use:c {g__ptxcd_cc_attr_##1:}
- }~\l_tmpa_tl{}~International\\
- \url{https://creativecommons.org/licenses/\seq_use:Nn \l_tmpa_seq {-}/\l_tmpa_tl/}
- \group_end:
+ \group_begin:
+ \g__ptxcd_cc_intro:\\
+ \seq_set_split:Nnn \l_tmpa_seq {-} {#1}
+ \bool_set_false:N \l_tmpa_bool
+ \seq_remove_all:Nn \l_tmpa_seq {cc}
+ \seq_pop_right:NN \l_tmpa_seq \l_tmpa_tl
+ \seq_map_inline:Nn \l_tmpa_seq {
+ \bool_if:NTF \l_tmpa_bool {\g__ptxcd_cc_sep:} {\bool_set_true:N \l_tmpa_bool}
+ \use:c {g__ptxcd_cc_attr_##1:}
+ }~\l_tmpa_tl{}~International\\
+ \url{https://creativecommons.org/licenses/\seq_use:Nn \l_tmpa_seq {-}/\l_tmpa_tl/}
+ \group_end:
}
-
\newcommand{\tuprints}[1]{%
\tl_if_in:nnTF {#1} {=}
- {\keys_set:nn {ptxcd/thesis} {#1}}
- {\keys_set:nn {ptxcd/thesis} {printid=#1}}
+ {\keys_set:nn {ptxcd/thesis} {#1}}
+ {\keys_set:nn {ptxcd/thesis} {printid=#1}}
\lowertitleback{
- \urlstyle{same}
- \selectlanguage{german}
- Bitte~zitieren~Sie~dieses~Dokument~als:
+ \urlstyle{same}
+ \selectlanguage{german}
+ Bitte~zitieren~Sie~dieses~Dokument~als:
\tl_if_empty:NF \g_ptxcd_thesis_urn_tl {\\URN:~urn:nbn:de:tuda-tuprints-\g_ptxcd_thesis_urn_tl}\\
URL:~\url{https://tuprints.ulb.tu-darmstadt.de/\g_ptxcd_thesis_tuprints_tl}\\
- \tl_if_empty:NF \g_ptxcd_thesis_doi_tl {DOI:~\url{https://doi.org/\g_ptxcd_thesis_doi_tl}\\}
- \tl_if_empty:NF \g_ptxcd_thesis_publication_year_tl {Jahr~der~Veröffentlichung~auf~TUprints:~\g_ptxcd_thesis_publication_year_tl}
- \par\vspace{\baselineskip}
+ \tl_if_empty:NF \g_ptxcd_thesis_doi_tl {DOI:~\url{https://doi.org/\g_ptxcd_thesis_doi_tl}\\}
+ \tl_if_empty:NF \g_ptxcd_thesis_publication_year_tl {Jahr~der~Veröffentlichung~auf~TUprints:~\g_ptxcd_thesis_publication_year_tl}
+ \par\vspace{\baselineskip}
Dieses~Dokument~wird~bereitgestellt~von~tuprints,\\
E-Publishing-Service~der~TU~Darmstadt\\
\url{https://tuprints.ulb.tu-darmstadt.de}\\
- \url{tuprints@ulb.tu-darmstadt.de}\\[2\baselineskip]
- \tl_if_empty:NF \g_ptxcd_license_info_tl {\\[2\baselineskip]\g_ptxcd_license_info_tl}
+ \url{tuprints@ulb.tu-darmstadt.de}\\[2\baselineskip]
+ \tl_if_empty:NF \g_ptxcd_license_info_tl {\\[2\baselineskip]\g_ptxcd_license_info_tl}
}%
}
\gdef\@subject{
- \text_titlecase_first:n{\tl_if_empty:NF \ptxcd_thesisStatus {\ptxcd_thesisStatus{}~}\ptxcd_thesisType}~
- \tl_if_empty:NF \ptxcd_in_department {\ptxcd_in_department{}~}
- \seq_if_empty:NF \g_ptxcd_author_seq {\ptxcd_byname\nobreakspace\@author}
- \tl_if_empty:NF \ptxcd_birthplace {\space\ptxcd_fromname\space\ptxcd_birthplace}
- \tl_if_empty:NF \l_ptxcd_studentID_tl {\space\ptxcd_insert_studentID:n {\l_ptxcd_studentID_tl}}
+ \text_titlecase_first:n{\tl_if_empty:NF \ptxcd_thesisStatus {\ptxcd_thesisStatus{}~}\ptxcd_thesisType}~
+ \tl_if_empty:NF \ptxcd_in_department {\ptxcd_in_department{}~}
+ \seq_if_empty:NF \g_ptxcd_author_seq {\ptxcd_byname\nobreakspace\@author}
+ \tl_if_empty:NF \ptxcd_birthplace {\space\ptxcd_fromname\space\ptxcd_birthplace}
+ \tl_if_empty:NF \l_ptxcd_studentID_tl {\space\ptxcd_insert_studentID:n {\l_ptxcd_studentID_tl}}
}
\uppertitleback{
- \liningnums
- \raggedright
- \@title\par\@subtitle
- \par\vspace*{\baselineskip}
- %ignore birthplace on english subject
- \let\ptxcd_birthplace\@empty
- \@subject
- \bool_if:NT \g__ptxcd_reviewer_on_uppertitleback_bool
- \ptxcd_thesis_print_reviewer:
- \exp_args:Nx \tl_if_empty:nF {\@date\ptxcd_submissiondate}{
- \par\vspace*{\baselineskip}
- \ptxcd_thesis_print_dates:n {\\}
- }
- \tl_if_empty:NF \@publishers {
- \par\vspace*{\baselineskip}
- \@publishers
- }
+ \liningnums
+ \raggedright
+ \@title\par\@subtitle
+ \par\vspace*{\baselineskip}
+ \let\ptxcd_birthplace\@empty
+ \@subject
+ \bool_if:NT \g__ptxcd_reviewer_on_uppertitleback_bool
+ \ptxcd_thesis_print_reviewer:
+ \exp_args:Nx \tl_if_empty:nF {\@date\ptxcd_submissiondate}{
+ \par\vspace*{\baselineskip}
+ \ptxcd_thesis_print_dates:n {\\}
+ }
+ \tl_if_empty:NF \@publishers {
+ \par\vspace*{\baselineskip}
+ \@publishers
+ }
}
%%Studienbereich (field of study):
@@ -423,12 +411,6 @@
%%ist - Informationssystemtechnik
%%mech - Mechanik
%%metro - Mechatronik
-%
-%{ce}{Computational~Engineering}{Computational~Engineering}
-%{ese}{Energy~Science~and~Engineering}{Energy~Science~and~Engineering}
-%{ist}{Information~Systems~Engineering}{Information~Systems~Engineering}
-%{mech}{Mechanics}{Mechanics}
-%{metro}{Mechatronics}{Mechatronics}
\defcaptionname{english}{\researchgroupname}{research group}
\defcaptionname{ngerman, german}{\researchgroupname}{Fachgebiet}
@@ -439,254 +421,254 @@
\box_new:N \g_ptxcd_thesis_institution_box
-% The following macro is an adapted version of the corresponding KOMA-Script macro
-% Copyright (c) 1994-2019 Markus Kohm [komascript at gmx info]
+%% The following macro is an adapted version of the corresponding KOMA-Script macro
+%% Copyright (c) 1994-2019 Markus Kohm [komascript at gmx info]
\renewcommand*{\maketitle}[1][1]{
- \bool_if:NF \g_ptxcd_ignore_title_language_bool {
- \bool_set_false:N \l_tmpa_bool
- \clist_map_inline:nn {english, british, ngerman, german} {
- \iflanguage{##1}
- {\bool_set_true:N \l_tmpa_bool
- \clist_map_break:}{}
- }
- \bool_if:NF \l_tmpa_bool {
- \msg_error:nnx{tudapub/thesis} {unsupported-title-language} {\languagename}
- }
- }
- \exp_args:NV \ptxcd_select_department:n \g_ptxcd_department_choice_tl
- \clist_map_inline:nn {author, date} {
- \ptxcd_check_title_data:cn {@##1} {##1}
- }
- \clist_map_inline:nn {examdate, birthplace, group, department, institution} {
- \ptxcd_check_title_data:cn {TUDa@##1} {##1}
- }
- \cs_if_exist_use:N \ptxcd_pass_TitleData:
- \edef\titlepage@restore{%
- \noexpand\endgroup
- \noexpand\global\noexpand\@colht\the\@colht
- \noexpand\global\noexpand\@colroom\the\@colroom
- \noexpand\global\vsize\the\vsize
- \noexpand\global\noexpand\@titlepageiscoverpagefalse
- \noexpand\let\noexpand\titlepage@restore\noexpand\relax
- }%
- \ptxcd_disable_marginpar:
- \cleardoublepage
- \begin{titlepage}
- \setcounter{page}{%
- #1%
- }%
- \def\thefootnote{\fnsymbol{footnote}}
- \if@titlepageiscoverpage
- \begingroup
- \topmargin=\dimexpr \coverpagetopmargin-1in\relax
- \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax
- \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax
- \textwidth=\dimexpr
- \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax
- \textheight=\dimexpr
- \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax
- \headheight=0pt
- \headsep=0pt
- \footskip=\baselineskip
- \@colht=\textheight
- \@colroom=\textheight
- \vsize=\textheight
- \columnwidth=\textwidth
- \hsize=\columnwidth
- \linewidth=\hsize
- \else
- \let\titlepage@restore\relax
- \fi
- \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
- \ptxcd_setup_sponsor_box:
- \hbox_gset:Nn \g_ptxcd_title_box {
- \parbox[t]{\linewidth}{
- \begin{minipage}[b]{\bool_if:NT \g__ptxcd_LogoInHead_bool {.75}\linewidth}
- \bool_lazy_and:nnT {\g_ptxcd_colorback_bool} {\g_ptxcd_colorbacktitle_bool} {\color{textonaccentcolor}}
- \tl_if_empty:NF \@titlehead {
- \begin{addmargin}{3mm}
- {\usekomafont{titlehead}{\@titlehead\par}}
- \end{addmargin}
- }
- \begin{addmargin}[\dim_eval:n {\box_if_empty:NF \g_ptxcd_PaperID_box {\box_wd:N\g_ptxcd_PaperID_box+.5\c_ptxcd_logoheight_dim} +3mm}]{3mm}
- \raggedright
- \leavevmode\usekomafont{title}
- \expandafter\fontsize\ptxcd_title_fontsize:
- \selectfont
- \llap{\raisebox{\dimexpr-\height+.5\baselineskip}[0pt][0pt]{\box_use:N \g_ptxcd_PaperID_box}\hspace{.5\c_ptxcd_logoheight_dim}}
- \@title\strut
- \par
- \box_if_empty:NTF \g_ptxcd_PaperID_box
- {\vskip0pt}
- {\rule{0pt}{.5\c_ptxcd_logoheight_dim}}
- \end{addmargin}
- \end{minipage}%
- \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {\color{textonaccentcolor}}
- \par\nointerlineskip
- \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\vspace{\c_ptxcd_rulesep_dim}
- \begin{addmargin}{3mm}
- \usekomafont{titleinfo}
- \raggedright
- \expandafter\fontsize\ptxcd_titleinfo_fontsize:
- \selectfont
- {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}%
- \usekomafont{subject}
- \bool_if:NT \g_ptxcd_dr_bool {\selectlanguage{german}}
- \tl_if_empty:NF \g_ptxcd_titleintro_tl {\g_ptxcd_titleintro_tl\par}
- \tl_if_empty:NF \g_ptxcd_thesis_drtext_tl {\g_ptxcd_thesis_drtext_tl\par}
- {%
- \usekomafont{author}
- \lineskip 0.75em
- \@subject
- \par
- }%
- {\usekomafont{date}{\ptxcd_thesis_print_dates:n {,~}\par}}%
- \ptxcd_thesis_print_reviewer:\par
- {\usekomafont{publishers}{\@publishers \par}}%
- \tl_if_empty:NF \g_ptxcd_titleaddendum_tl {\g_ptxcd_titleaddendum_tl\par}
- \end{addmargin}
- \tl_if_empty:NF \@thanks {
- \expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont\par
- \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par
- \begin{addmargin}{3mm}
- \let\footnotetext\ptxcd_title@footnote
- \@thanks
- \end{addmargin}
- \par\vspace{-\dp\strutbox}
- }
- \normalcolor
- \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par
- }
- }
- \let\@thanks\@empty
- \bool_if:NF \g_ptxcd_manual_info_box_bool {
- \exp_args:Nf \tl_if_empty:nF {\ptxcd_institution\ptxcd_department:\ptxcd_institute\ptxcd_group} {
- \addTitleBox{
- \setlength{\parskip}{\c_ptxcd_rulesep_dim}
- \tl_if_empty:NF \ptxcd_institution {\ptxcd_institution\par}
- \tl_if_empty:NF \ptxcd_box_department {\ptxcd_box_department\par}
- \tl_if_empty:NF \ptxcd_institute {\ptxcd_institute\par}
- \tl_if_empty:NF \ptxcd_group {\ptxcd_group}
- }}
- }
- \ptxcd_adjust_titlepage_style:
- \thispagestyle{title.TUDa}
- \nointerlineskip\box_use:N \g_ptxcd_title_box
- \par
- \vfill
- \box_if_empty:NTF \g_ptxcd_sponsor_box {
- \raisebox{-\c_ptxcd_rulesep_dim}[0pt][0pt]{\rule{\linewidth}{\g_ptxcd_titlerule_dim}}
- }{
- \box_use:N \g_ptxcd_sponsor_box
- }
- \if@twoside
- \@tempswatrue
- \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax
- \else
- \ifx\@uppertitleback\@empty
- \ifx\@lowertitleback\@empty
- \@tempswafalse
- \fi
- \fi
- \fi
- \else
- \exp_args:Nf \tl_if_empty:nTF {\g_ptxcd_thesis_urn_tl\g_ptxcd_thesis_tuprints_tl}
- {\@tempswafalse}
- {\@tempswatrue}
- \fi
- \if@tempswa
- \next@tpage
- \begin{minipage}[t]{\textwidth}
- \@uppertitleback
- \end{minipage}\par
- \vfill
- \begin{minipage}[b]{\textwidth}
- \@lowertitleback
- \end{minipage}\par
- \@thanks\let\@thanks\@empty
- \fi
- \ifx\@dedication\@empty
- \else
- \next@tdpage\null\vfill
- {\centering\usekomafont{dedication}{\@dedication \par}}%
- \vskip \z@ \@plus3fill
- \@thanks\let\@thanks\@empty
- \cleardoubleemptypage
- \fi
- \ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi
- \end{titlepage}
- \setcounter{footnote}{0}%
- \global\let\and\relax
- \cleardoublepage
- \ptxcd_restore_typearea:
- \aftergroup\ptxcd_restore_typearea:
+ \bool_if:NF \g_ptxcd_ignore_title_language_bool {
+ \bool_set_false:N \l_tmpa_bool
+ \clist_map_inline:nn {english, british, ngerman, german} {
+ \iflanguage{##1}
+ {\bool_set_true:N \l_tmpa_bool
+ \clist_map_break:}{}
+ }
+ \bool_if:NF \l_tmpa_bool {
+ \msg_error:nnx{tudapub/thesis} {unsupported-title-language} {\languagename}
+ }
+ }
+ \exp_args:NV \ptxcd_select_department:n \g_ptxcd_department_choice_tl
+ \clist_map_inline:nn {author, date} {
+ \ptxcd_check_title_data:cn {@##1} {##1}
+ }
+ \clist_map_inline:nn {examdate, birthplace, group, department, institution} {
+ \ptxcd_check_title_data:cn {TUDa@##1} {##1}
+ }
+ \cs_if_exist_use:N \ptxcd_pass_TitleData:
+ \edef\titlepage@restore{%
+ \noexpand\endgroup
+ \noexpand\global\noexpand\@colht\the\@colht
+ \noexpand\global\noexpand\@colroom\the\@colroom
+ \noexpand\global\vsize\the\vsize
+ \noexpand\global\noexpand\@titlepageiscoverpagefalse
+ \noexpand\let\noexpand\titlepage@restore\noexpand\relax
+ }%
+ \ptxcd_disable_marginpar:
+ \cleardoublepage
+ \begin{titlepage}
+ \setcounter{page}{%
+ #1%
+ }%
+ \def\thefootnote{\fnsymbol{footnote}}
+ \if@titlepageiscoverpage
+ \begingroup
+ \topmargin=\dimexpr \coverpagetopmargin-1in\relax
+ \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax
+ \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax
+ \textwidth=\dimexpr
+ \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax
+ \textheight=\dimexpr
+ \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax
+ \headheight=0pt
+ \headsep=0pt
+ \footskip=\baselineskip
+ \@colht=\textheight
+ \@colroom=\textheight
+ \vsize=\textheight
+ \columnwidth=\textwidth
+ \hsize=\columnwidth
+ \linewidth=\hsize
+ \else
+ \let\titlepage@restore\relax
+ \fi
+ \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
+ \ptxcd_setup_sponsor_box:
+ \hbox_gset:Nn \g_ptxcd_title_box {
+ \parbox[t]{\linewidth}{
+ \begin{minipage}[b]{\bool_if:NT \g__ptxcd_logo_head_bool {.75}\linewidth}
+ \bool_lazy_and:nnT {\g_ptxcd_colorback_bool} {\g_ptxcd_colorbacktitle_bool} {\color{textonaccentcolor}}
+ \tl_if_empty:NF \@titlehead {
+ \begin{addmargin}{3mm}
+ {\usekomafont{titlehead}{\@titlehead\par}}
+ \end{addmargin}
+ }
+ \begin{addmargin}[\dim_eval:n {\box_if_empty:NF \g_ptxcd_PaperID_box {\box_wd:N\g_ptxcd_PaperID_box+.5\c_ptxcd_logoheight_dim} +3mm}]{3mm}
+ \raggedright
+ \leavevmode\usekomafont{title}
+ \expandafter\fontsize\ptxcd_title_fontsize:
+ \selectfont
+ \llap{\raisebox{\dimexpr-\height+.5\baselineskip}[0pt][0pt]{\box_use:N \g_ptxcd_PaperID_box}\hspace{.5\c_ptxcd_logoheight_dim}}
+ \@title\strut
+ \par
+ \box_if_empty:NTF \g_ptxcd_PaperID_box
+ {\vskip0pt}
+ {\rule{0pt}{.5\c_ptxcd_logoheight_dim}}
+ \end{addmargin}
+ \end{minipage}%
+ \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {\color{textonaccentcolor}}
+ \par\nointerlineskip
+ \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\vspace{\c_ptxcd_rulesep_dim}
+ \begin{addmargin}{3mm}
+ \usekomafont{titleinfo}
+ \raggedright
+ \expandafter\fontsize\ptxcd_titleinfo_fontsize:
+ \selectfont
+ {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}%
+ \usekomafont{subject}
+ \bool_if:NT \g_ptxcd_dr_bool {\selectlanguage{german}}
+ \tl_if_empty:NF \g_ptxcd_titleintro_tl {\g_ptxcd_titleintro_tl\par}
+ \tl_if_empty:NF \g_ptxcd_thesis_drtext_tl {\g_ptxcd_thesis_drtext_tl\par}
+ {%
+ \usekomafont{author}
+ \lineskip 0.75em
+ \@subject
+ \par
+ }%
+ {\usekomafont{date}{\ptxcd_thesis_print_dates:n {,~}\par}}%
+ \ptxcd_thesis_print_reviewer:\par
+ {\usekomafont{publishers}{\@publishers \par}}%
+ \tl_if_empty:NF \g_ptxcd_titleaddendum_tl {\g_ptxcd_titleaddendum_tl\par}
+ \end{addmargin}
+ \tl_if_empty:NF \@thanks {
+ \expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont\par
+ \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par
+ \begin{addmargin}{3mm}
+ \let\footnotetext\ptxcd_title@footnote
+ \@thanks
+ \end{addmargin}
+ \par\vspace{-\dp\strutbox}
+ }
+ \normalcolor
+ \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par
+ }
+ }
+ \let\@thanks\@empty
+ \bool_if:NF \g_ptxcd_manual_info_box_bool {
+ \exp_args:Nf \tl_if_empty:nF {\ptxcd_institution\ptxcd_department:\ptxcd_institute\ptxcd_group} {
+ \addTitleBox{
+ \setlength{\parskip}{\c_ptxcd_rulesep_dim}
+ \tl_if_empty:NF \ptxcd_institution {\ptxcd_institution\par}
+ \tl_if_empty:NF \ptxcd_box_department {\ptxcd_box_department\par}
+ \tl_if_empty:NF \ptxcd_institute {\ptxcd_institute\par}
+ \tl_if_empty:NF \ptxcd_group {\ptxcd_group}
+ }}
+ }
+ \ptxcd_adjust_titlepage_style:
+ \thispagestyle{title.TUDa}
+ \nointerlineskip\box_use:N \g_ptxcd_title_box
+ \par
+ \vfill
+ \box_if_empty:NTF \g_ptxcd_sponsor_box {
+ \raisebox{-\c_ptxcd_rulesep_dim}[0pt][0pt]{\rule{\linewidth}{\g_ptxcd_titlerule_dim}}
+ }{
+ \box_use:N \g_ptxcd_sponsor_box
+ }
+ \if@twoside
+ \@tempswatrue
+ \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax
+ \else
+ \ifx\@uppertitleback\@empty
+ \ifx\@lowertitleback\@empty
+ \@tempswafalse
+ \fi
+ \fi
+ \fi
+ \else
+ \exp_args:Nf \tl_if_empty:nTF {\g_ptxcd_thesis_urn_tl\g_ptxcd_thesis_tuprints_tl}
+ {\@tempswafalse}
+ {\@tempswatrue}
+ \fi
+ \if@tempswa
+ \next@tpage
+ \begin{minipage}[t]{\textwidth}
+ \@uppertitleback
+ \end{minipage}\par
+ \vfill
+ \begin{minipage}[b]{\textwidth}
+ \@lowertitleback
+ \end{minipage}\par
+ \@thanks\let\@thanks\@empty
+ \fi
+ \ifx\@dedication\@empty
+ \else
+ \next@tdpage\null\vfill
+ {\centering\usekomafont{dedication}{\@dedication \par}}%
+ \vskip \z@ \@plus3fill
+ \@thanks\let\@thanks\@empty
+ \cleardoubleemptypage
+ \fi
+ \ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi
+ \end{titlepage}
+ \setcounter{footnote}{0}%
+ \global\let\and\relax
+ \cleardoublepage
+ \ptxcd_restore_typearea:
+ \aftergroup\ptxcd_restore_typearea:
}
\newcommand*{\@ThesisType}{\ptxcd_thesisType}
\bool_if:NTF \g_ptxcd_dr_bool {
- \keys_define:nn {ptxcd/thesis} {
- affidavit .choices:nn = {dr}{\tl_gset_eq:NN \g__ptxcd_affidavit_version_tl \l_keys_choice_tl},
- affidavit / default .meta:n = {affidavit=dr},
- affidavit .initial:n = dr,
- }
+ \keys_define:nn {ptxcd/thesis} {
+ affidavit .choices:nn = {dr}{\tl_gset_eq:NN \g__ptxcd_affidavit_version_tl \l_keys_choice_tl},
+ affidavit / default .meta:n = {affidavit=dr},
+ affidavit .initial:n = dr,
+ }
} {
- \keys_define:nn {ptxcd/thesis} {
- affidavit .choices:nn = {digital,print}{\tl_gset_eq:NN \g__ptxcd_affidavit_version_tl \l_keys_choice_tl},
- affidavit / default .meta:n = {affidavit=digital},
- affidavit .initial:n = default,
- }
+ \keys_define:nn {ptxcd/thesis} {
+ affidavit .choices:nn = {digital,print}{\tl_gset_eq:NN \g__ptxcd_affidavit_version_tl \l_keys_choice_tl},
+ affidavit / default .meta:n = {affidavit=digital},
+ affidavit / hide-architecture-note .meta:n = {hide-architecture-note},
+ affidavit .initial:n = default,
+ }
}
-
\NewDocumentCommand{\affidavit}{so}{%
- \IfNoValueF {#2} {%
- \tl_if_in:nnTF {#2} {=}
- {\keys_set:nn {ptxcd/thesis} {#2}}
- {\keys_set:nn {ptxcd/thesis} {affidavit=#2}}%
- }%
- \clearpage
-\begin{otherlanguage}{german}
- \bool_if:NTF \g_ptxcd_dr_bool {
- \g__ptxcd_affidavit_dr_tl
- } {
- \tl_use:c {g__ptxcd_affidavit_\g__ptxcd_affidavit_version_tl _tl}
- }
-\par
-\bigskip
-\AffidavitSignature
-\end{otherlanguage}
-\IfBooleanF{#1}{\clearpage}
+ \IfNoValueF {#2} {%
+ \tl_if_in:nnTF {#2} {=}
+ {\keys_set:nn {ptxcd/thesis} {#2}}
+ {\keys_set:nn {ptxcd/thesis} {affidavit=#2}}%
+ }%
+ \clearpage
+ \begin{otherlanguage}{german}
+ \bool_if:NTF \g_ptxcd_dr_bool {
+ \g__ptxcd_affidavit_dr_tl
+ } {
+ \tl_use:c {g__ptxcd_affidavit_\g__ptxcd_affidavit_version_tl _tl}
+ }
+ \par
+ \bigskip
+ \AffidavitSignature
+ \end{otherlanguage}
+ \IfBooleanF{#1}{\clearpage}
}
\ExplSyntaxOff
\expandafter\def\csname g__ptxcd_affidavit_dr_tl\endcsname {%
- \section*{Erklärungen laut Promotionsordnung}
- \subsection*{\S\,8 Abs. 1 lit. d PromO}
- Ich versichere hiermit, dass zu einem vorherigen Zeitpunkt noch keine Promotion versucht wurde. In diesem Fall sind nähere Angaben über Zeitpunkt, Hochschule, Dissertationsthema und Ergebnis dieses Versuchs mitzuteilen.
+ \section*{Erklärungen laut Promotionsordnung}
+ \subsection*{\S\,8 Abs. 1 lit. d PromO}
+ Ich versichere hiermit, dass zu einem vorherigen Zeitpunkt noch keine Promotion versucht wurde. In diesem Fall sind nähere Angaben über Zeitpunkt, Hochschule, Dissertationsthema und Ergebnis dieses Versuchs mitzuteilen.
- \subsection*{\S\,9 Abs. 1 PromO}
- Ich versichere hiermit, dass die vorliegende Dissertation – abgesehen von den in ihr ausdrücklich genannten Hilfen – selbstständig verfasst wurde und dass die „Grundsätze zur Sicherung guter wissenschaftlicher Praxis an der Technischen Universität Darmstadt“ und die „Leitlinien zum Umgang mit digitalen Forschungsdaten an der TU Darmstadt“ in den jeweils aktuellen Versionen bei der Verfassung der Dissertation beachtet wurden.
+ \subsection*{\S\,9 Abs. 1 PromO}
+ Ich versichere hiermit, dass die vorliegende Dissertation – abgesehen von den in ihr ausdrücklich genannten Hilfen – selbstständig verfasst wurde und dass die „Grundsätze zur Sicherung guter wissenschaftlicher Praxis an der Technischen Universität Darmstadt“ und die „Leitlinien zum Umgang mit digitalen Forschungsdaten an der TU Darmstadt“ in den jeweils aktuellen Versionen bei der Verfassung der Dissertation beachtet wurden.
- \subsection*{\S\,9 Abs. 2 PromO}
- Die Arbeit hat bisher noch nicht zu Prüfungszwecken gedient.
+ \subsection*{\S\,9 Abs. 2 PromO}
+ Die Arbeit hat bisher noch nicht zu Prüfungszwecken gedient.
}
-% Quelle: https://www.tu-darmstadt.de/studieren/studierende_tu/studienorganisation_und_tucan/hilfe_und_faq/artikel_details_de_en_37824.de.jsp
+%% Quelle: https://www.tu-darmstadt.de/studieren/studierende_tu/studienorganisation_und_tucan/hilfe_und_faq/artikel_details_de_en_37824.de.jsp
\expandafter\def\csname g__ptxcd_affidavit_digital_tl\endcsname {%
- \subsection*{Erklärung zur Abschlussarbeit gemäß \S\,22~Abs.~7~APB TU~Darmstadt}
- \begin{sloppypar}%
- Hiermit erkläre ich, \@author, dass ich die vorliegende Arbeit gemäß \S\,22~Abs.~7~APB der TU Darmstadt selbstständig, ohne Hilfe Dritter und nur mit den angegebenen Quellen und Hilfsmitteln angefertigt habe.
- Ich habe mit Ausnahme der zitierten Literatur und anderer in der Arbeit genannter Quellen keine fremden Hilfsmittel benutzt. Die von mir bei der Anfertigung dieser wissenschaftlichen Arbeit wörtlich oder inhaltlich benutzte Literatur und alle anderen Quellen habe ich im Text deutlich gekennzeichnet und gesondert aufgeführt. Dies gilt auch für Quellen oder Hilfsmittel aus dem Internet.
- \end{sloppypar}%
- \par
- Diese Arbeit hat in gleicher oder ähnlicher Form noch keiner Prüfungsbehörde vorgelegen.
- \par
- Mir ist bekannt, dass im Falle eines Plagiats (\S\,38~Abs.~2 ~APB) ein Täuschungsversuch vorliegt, der dazu führt, dass die Arbeit mit 5,0 bewertet und damit ein Prüfungsversuch verbraucht wird. Abschlussarbeiten dürfen nur einmal wiederholt werden.
- \csname bool_if:cT\endcsname {g__ptxcd_architecture_note_bool} {%
- \par
- Bei einer Thesis des Fachbereichs Architektur entspricht die eingereichte elektronische Fassung dem vorgestellten Modell und den vorgelegten Plänen.
- }
+ \subsection*{Erklärung zur Abschlussarbeit gemäß \S\,22~Abs.~7~APB TU~Darmstadt}
+ \begin{sloppypar}%
+ Hiermit erkläre ich, \@author, dass ich die vorliegende Arbeit gemäß \S\,22~Abs.~7~APB der TU Darmstadt selbstständig, ohne Hilfe Dritter und nur mit den angegebenen Quellen und Hilfsmitteln angefertigt habe.
+ Ich habe mit Ausnahme der zitierten Literatur und anderer in der Arbeit genannter Quellen keine fremden Hilfsmittel benutzt. Die von mir bei der Anfertigung dieser wissenschaftlichen Arbeit wörtlich oder inhaltlich benutzte Literatur und alle anderen Quellen habe ich im Text deutlich gekennzeichnet und gesondert aufgeführt. Dies gilt auch für Quellen oder Hilfsmittel aus dem Internet.
+ \end{sloppypar}%
+ \par
+ Diese Arbeit hat in gleicher oder ähnlicher Form noch keiner Prüfungsbehörde vorgelegen.
+ \par
+ Mir ist bekannt, dass im Falle eines Plagiats (\S\,38~Abs.~2 ~APB) ein Täuschungsversuch vorliegt, der dazu führt, dass die Arbeit mit 5,0 bewertet und damit ein Prüfungsversuch verbraucht wird. Abschlussarbeiten dürfen nur einmal wiederholt werden.
+ \csname bool_if:cT\endcsname {g__ptxcd_architecture_note_bool} {%
+ \par
+ Bei einer Thesis des Fachbereichs Architektur entspricht die eingereichte elektronische Fassung dem vorgestellten Modell und den vorgelegten Plänen.
+ }
}
\ExplSyntaxOn
@@ -694,93 +676,92 @@
\cs_set_eq:NN \g__ptxcd_affidavit_print_tl \g__ptxcd_affidavit_digital_tl
\NewDocumentEnvironment{affidavit*}{om}{
- \IfNoValueF {#1} {\begin{otherlanguage}{#1}}
- \section*{#2}
-}{
- \IfNoValueF {#1} {\end{otherlanguage}}
+ \IfNoValueF {#1} {\begin{otherlanguage}{#1}}
+ \section*{#2}
+ }{
+ \IfNoValueF {#1} {\end{otherlanguage}}
}
\NewDocumentCommand{\AffidavitSignature}{o}{
- \par
- \begingroup
- \IfNoValueF {#1} {%
- \tl_if_in:nnTF {#1} {=}
- {\keys_set:nn {ptxcd/thesis} {#1}}
- {\keys_set:nn {ptxcd/thesis} {signature-location=#1}}%
- }%
- \tl_if_empty:NT \l_ptxcd_signature_image_tl {\bigskip}
- \noindent \l_ptxcd_signature_location_tl,~ \ptxcd_submissiondate\hfill
- \SignatureBox{\l_ptxcd_signature_tl}
- \endgroup
- \\\strut
+ \par
+ \begingroup
+ \IfNoValueF {#1} {%
+ \tl_if_in:nnTF {#1} {=}
+ {\keys_set:nn {ptxcd/thesis} {#1}}
+ {\keys_set:nn {ptxcd/thesis} {signature-location=#1}}%
+ }%
+ \tl_if_empty:NT \l_ptxcd_signature_image_tl {\bigskip}
+ \noindent \l_ptxcd_signature_location_tl,~ \ptxcd_submissiondate\hfill
+ \SignatureBox{\l_ptxcd_signature_tl}
+ \endgroup
+ \\\strut
}
\newcommand*{\SignatureBox}[2][5cm]{\parbox[t]{#1}{\centering
- \tl_if_empty:NF \l_ptxcd_signature_image_tl
- {\let\width\linewidth\l_ptxcd_signature_image_tl\par\nointerlineskip}
- \rule{\linewidth}{.3pt}\\\makebox[0pt][c]{#2}}
+ \tl_if_empty:NF \l_ptxcd_signature_image_tl
+ {\let\width\linewidth\l_ptxcd_signature_image_tl\par\nointerlineskip}
+ \rule{\linewidth}{.3pt}\\\makebox[0pt][c]{#2}}
}
-%messages:
\msg_new:nnn{tudapub/thesis} {dr-field-only} {
- You~submitted~#1~data~for~title~information.\\
- This~field~is~only~used~for~type=dr/drfinal.\\
- It~will~be~ignored.
+ You~submitted~#1~data~for~title~information.\\
+ This~field~is~only~used~for~type=dr/drfinal.\\
+ It~will~be~ignored.
}
\msg_new:nnn{tudapub/thesis} {unrecognized-department} {
- I~can't~recognize~your~department~#1.\\
- I~will~use~the~string~'#1'~directly.\\
- Ensure~your~department~has~to~shortcut.\\
- See~tudathesis~documentation~for~further~details.
+ I~can't~recognize~your~department~#1.\\
+ I~will~use~the~string~'#1'~directly.\\
+ Ensure~your~department~has~to~shortcut.\\
+ See~tudathesis~documentation~for~further~details.
}
-\msg_new:nnnn{tudapub/thesis} {unsupported-title-language} {
- You~chose~an~unsupported~language~"#1".\\
- \string\maketitle\ ~ist~not~configured~for~this~language.
+\msg_new:nnnn{tudapub/thesis} {unsupported-title-language} {
+ You~chose~an~unsupported~language~"#1".\\
+ \string\maketitle\ ~ist~not~configured~for~this~language.
}{
- You~can~manually~configure~it,~as~described~in~tudathesis~documentation.\\
- Use~"ignore-title-language"~Option~to~ignore~this~message~at~your~own~risk.
+ You~can~manually~configure~it,~as~described~in~tudathesis~documentation.\\
+ Use~"ignore-title-language"~Option~to~ignore~this~message~at~your~own~risk.
}
\PassOptionsToPackage{german}{babel}
\AtBeginDocument{
- \@ifpackageloaded{babel}{}{
- \msg_new:nnnn{tudapub/thesis} {missing-babel} {
- The~babel~package~is~not~loaded.\\
- Please~load~babel~with~option\\
- main=<main~language~of~your~document>\\
- to~ensure~correct~hyphenation.
- }{
- I~will~use~a~workaround~(redefine~\string\otherlanguagen)~to~be~able~to~compile,~but~can't~configure~hyphenation~correctly.
- }
- \msg_warning:nn {tudapub/thesis} {missing-babel}
- \renewenvironment{otherlanguage}[1]{}{}
- }
-}
-
-% Fallback mechanism for older l3 kernels
+ \@ifpackageloaded{babel}{}{
+ \msg_new:nnnn{tudapub/thesis} {missing-babel} {
+ The~babel~package~is~not~loaded.\\
+ Please~load~babel~with~option\\
+ main=<main~language~of~your~document>\\
+ to~ensure~correct~hyphenation.
+ }{
+ I~will~use~a~workaround~(redefine~\string\otherlanguagen)~to~be~able~to~compile,~but~can't~configure~hyphenation~correctly.
+ }
+ \msg_warning:nn {tudapub/thesis} {missing-babel}
+ \renewenvironment{otherlanguage}[1]{}{}
+ }
+}
+
\cs_if_exist:NF \text_titlecase:n {
- \cs_set_eq:NN \text_titlecase:n \tl_mixed_case:n
+ \cs_set_eq:NN \text_titlecase:n \tl_mixed_case:n
}
\seq_new:N \g_ptxcd_reviewer_name_seq
\NewDocumentCommand{\setupReviewName}{som}{
- \IfBooleanTF {#1} {
- \clist_map_inline:nn {#3} {
- \int_incr:N \l_tmpb_int
- \cs_set:cn {__ptxcd_reviewname_\int_use:N \l_tmpb_int :} {##1}
- }
- } {
- \IfNoValueTF {#2} {
- \cs_set:Npn \ptxcd_reviewname {#3}
- } {
- \ifnum #2 > 0
- \cs_set:cn {__ptxcd_reviewname_#2:}
- {#3}
- \fi
- }
- }
+ \IfBooleanTF {#1} {
+ \clist_map_inline:nn {#3} {
+ \int_incr:N \l_tmpb_int
+ \cs_set:cn {__ptxcd_reviewname_\int_use:N \l_tmpb_int :} {##1}
+ }
+ } {
+ \IfNoValueTF {#2} {
+ \cs_set:Npn \ptxcd_reviewname {#3}
+ } {
+ \ifnum #2 > 0
+ \cs_set:cn {__ptxcd_reviewname_#2:}
+ {#3}
+ \fi
+ }
+ }
}
-
\endinput
+%%
+%% End of file `tudathesis.cfg'.
diff --git a/Master/texmf-dist/tex/latex/tugboat/ltugboat.cls b/Master/texmf-dist/tex/latex/tugboat/ltugboat.cls
index f84655e5060..1d31617c105 100644
--- a/Master/texmf-dist/tex/latex/tugboat/ltugboat.cls
+++ b/Master/texmf-dist/tex/latex/tugboat/ltugboat.cls
@@ -32,7 +32,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesClass {ltugboat}
- [2024-04-15 v2.32
+ [2024-10-29 v2.34
TUGboat journal class%
]
\newif\ifTBunicodeengine
@@ -267,6 +267,7 @@
\def\Hawaii{Hawai`i}
\def\HTML{\acro{HTML}}
\def\HTTP{\acro{HTTP}}
+\def\HTTPS{\acro{HTTPS}}
\def\iOS{i\acro{OS}}
\def\IDE{\acro{IDE}}
\def\IEEE{\acro{IEEE}}
@@ -404,7 +405,7 @@
\def\XeT{X\kern-.125em\lower.424ex\hbox{E}\kern-.1667emT\@}
\def\XML{\acro{XML}}
\def\XMP{\acro{XMP}}
-\def\WEB{\texttt{WEB}\@}
+\def\WEB{\texorpdfstring{\texttt{WEB}\@}{WEB}}
\def\WEAVE{\texttt{WEAVE}\@}
\def\WYSIWYG{\acro{WYSIWYG}}
\def\YAML{\acro{YAML}}
@@ -423,19 +424,21 @@
\def\tubhideheight#1{\setbox0=\hbox{#1}\ht0=0pt \dp0=0pt \box0 }
\def\XekernbeforeE{-.125em}
\def\XekernafterE{-.1667em}
-\DeclareRobustCommand{\Xe}{\leavevmode
+\NewDocumentCommand\tub@Xe{}{\leavevmode
\tubhideheight{\hbox{X%
\setbox0=\hbox{\TeX}\setbox1=\hbox{E}%
\ifdim \fontdimen1\font>0pt
- % XeTeX logo needs tinkering when slanted/italic font.
+ % XeTeX logo needs tinkering when slanted/italic font,
+ % so make kerns changeable
\def\XekernbeforeE{-.11em}%
\def\XekernafterE{-.16em}%
\dp1=-.17ex
\fi
\lower\dp0\hbox{\raise\dp1\hbox{\kern\XekernbeforeE\tubreflect{E}}}%
\kern\XekernafterE}}}
-\def\XeTeX{\Xe\TeX}
-\def\XeLaTeX{\Xe{\kern.11em \LaTeX}}
+\newcommand\Xe{\texorpdfstring{\tub@Xe}{Xe}}
+\def\XeTeX{\texorpdfstring{\Xe\TeX}{XeTeX}}
+\def\XeLaTeX{\texorpdfstring{\Xe{\kern.11em \LaTeX}}{XeLaTeX}}
\def\XHTML{\acro{XHTML}}
\def\XSL{\acro{XSL}}
\def\XSLFO{\acro{XSL}\raise.08ex\hbox{-}\acro{FO}}
@@ -540,7 +543,8 @@
\raise\p@\vbox{\baselineskip6\p@\vskip7\p@\hbox{.}\hbox{.}\hbox{.}}
}
\def\bull{\vrule \@height 1ex \@width .8ex \@depth -.2ex }
-\def\cents{{\rm\raise.2ex\rlap{\kern.05em$\scriptstyle/$}c}}
+\DeclareRobustCommand{\cents}{\textcent}
+\def\tubcentsold{{\rm\raise.2ex\rlap{\kern.05em$\scriptstyle/$}c}}
\def\careof{\leavevmode\hbox{\raise.75ex\hbox{c}\kern-.15em
/\kern-.125em\smash{\lower.3ex\hbox{o}}} \ignorespaces}
\def\Dag{\raise .6ex\hbox{$\scriptstyle\dagger$}}
@@ -559,7 +563,7 @@
\ensuremath{\rangle}%
}
\DeclareRobustCommand{\cs}[1]{\texorpdfstring
- {{\tt \char`\\#1}}%
+ {{\tt \char`\\#1}\@}%
{\textbackslash #1}%
}
\DeclareRobustCommand{\tubbraced}[1]{\texorpdfstring
@@ -577,7 +581,7 @@
\DeclareRobustCommand{\thinskip}{\hskip 0.16667em\relax}
\AtBeginDocument{%
\ifx\hyper@normalise\undefined
- \ifx\url\undefined % make sure \url is defined
+ \ifx\url\undefined % define our own simplistic non-hyperref \url
\def\url{\begingroup % might as well catch common special chars
\catcode`\#=12 \catcode`\$=12 \catcode`\%=12 \catcode`\^=12
\catcode`\&=12 \catcode`\_=12 \catcode`\~=12
@@ -989,10 +993,6 @@
\def\TB@author#1{%
\expandafter\def\csname theauthor\number\authornumber\endcsname
{\ignorespaces#1\unskip}%
- \expandafter\def\csname theaddress\number\authornumber\endcsname
- {\TBWarningNL{Address for #1\space missing}\@gobble}%
- \expandafter\def\csname thenetaddress\number\authornumber\endcsname
- {\TBWarningNL{Net address for #1\space missing}\@gobble}%
\expandafter\let\csname thePersonalURL\number\authornumber\endcsname
\@gobble
\expandafter\let\csname theORCID\number\authornumber\endcsname
@@ -1297,7 +1297,7 @@
{\tubruninglue}
{\tubruninsecfmt}}}
%
- \def\subsubsection{\TB@nolimelabel\TB@startsection{
+ \def\subsubsection{\TB@nolimelabel\TB@startsection{%
{subsubsection}%
3%
\parindent
@@ -1333,23 +1333,31 @@
\hyphenpenalty=10000
\TBtocsectionfont
\leavevmode
- \advance\leftskip\@tempdima
+ \advance\leftskip by \@tempdima % space between section number and text
\hskip-\leftskip
- \ifx\UseHookWithArguments\undefined\else
+ %
+ \ifx\UseHookWithArguments\undefined\else % hook before number and text
\UseHookWithArguments{contentsline/text/before}{4}
{\toclevel@part}{#1}{#2}{\@contentsline@destination}%
\fi
+ %
% don't worry if this cs is not defined, hence the \csname.
- \csname contentsline@text@1@format\endcsname{#1}% number and title
- \ifx\UseHookWithArguments\undefined\else
+ % If it doesn't exist, we just typeset #1 as text.
+ \csname contentsline@text@1@format\endcsname
+ {#1% number and title
+ \unskip % avoid extra space just in case
+ \csname pdffakespace\endcsname % fake space if pdftex
+ ~% ensure at least a word space between text and page number
+ }
+ %
+ \ifx\UseHookWithArguments\undefined\else % hook after number and text
\UseHookWithArguments{contentsline/text/after}{4}
{\toclevel@part}{#1}{#2}{\@contentsline@destination}%
\fi
- \nobreak
- \hfil
+ \nobreak\hfil
\nobreak
% page number
- \hb@xt@\@pnumwidth{\hss
+ \hb@xt@\@pnumwidth{\hfil
\ifx\UseHookWithArguments\undefined\else
\UseHookWithArguments{contentsline/page/before}{4}
{\toclevel@part}{#1}{#2}{\@contentsline@destination}%
@@ -1802,8 +1810,8 @@
\else \global\@firstcolumntrue
\global\brokenpenalty100
\setbox\@outputbox\vbox{\hb@xt@\textwidth{\hb@xt@\columnwidth
- {\box\@leftcolumn \hss}\hfil \vrule \@width\columnseprule\hfil
- \hb@xt@\columnwidth{\box\@outputbox \hss}}}\@combinedblfloats
+ {\box\@leftcolumn \hfil}\hfil \vrule \@width\columnseprule\hfil
+ \hb@xt@\columnwidth{\box\@outputbox \hfil}}}\@combinedblfloats
\@outputpage \begingroup \@dblfloatplacement \@startdblcolumn
\@whilesw\if@fcolmade \fi{\@outputpage\@startdblcolumn}\endgroup
\fi}
diff --git a/Master/texmf-dist/tex/latex/tugboat/ltugboat.sty b/Master/texmf-dist/tex/latex/tugboat/ltugboat.sty
index 46f5f032483..ba190388f8e 100644
--- a/Master/texmf-dist/tex/latex/tugboat/ltugboat.sty
+++ b/Master/texmf-dist/tex/latex/tugboat/ltugboat.sty
@@ -31,7 +31,7 @@
%% extension .ins) which are part of the distribution.
%%
\ProvidesPackage{ltugboat}
- [2024-04-15 v2.32
+ [2024-10-29 v2.34
TUG compatibility package%
]
\@obsoletefile{ltugboat.cls}{ltugboat.sty}
diff --git a/Master/texmf-dist/tex/latex/tugboat/ltugcomn.sty b/Master/texmf-dist/tex/latex/tugboat/ltugcomn.sty
index f39780180ce..b95a699cf41 100644
--- a/Master/texmf-dist/tex/latex/tugboat/ltugcomn.sty
+++ b/Master/texmf-dist/tex/latex/tugboat/ltugcomn.sty
@@ -32,7 +32,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{ltugcomn}
- [2024-04-15 v2.32
+ [2024-10-29 v2.34
TUGboat `common macros' package%
]
\newif\ifTBunicodeengine
@@ -170,6 +170,7 @@
\def\Hawaii{Hawai`i}
\def\HTML{\acro{HTML}}
\def\HTTP{\acro{HTTP}}
+\def\HTTPS{\acro{HTTPS}}
\def\iOS{i\acro{OS}}
\def\IDE{\acro{IDE}}
\def\IEEE{\acro{IEEE}}
@@ -307,7 +308,7 @@
\def\XeT{X\kern-.125em\lower.424ex\hbox{E}\kern-.1667emT\@}
\def\XML{\acro{XML}}
\def\XMP{\acro{XMP}}
-\def\WEB{\texttt{WEB}\@}
+\def\WEB{\texorpdfstring{\texttt{WEB}\@}{WEB}}
\def\WEAVE{\texttt{WEAVE}\@}
\def\WYSIWYG{\acro{WYSIWYG}}
\def\YAML{\acro{YAML}}
@@ -326,19 +327,21 @@
\def\tubhideheight#1{\setbox0=\hbox{#1}\ht0=0pt \dp0=0pt \box0 }
\def\XekernbeforeE{-.125em}
\def\XekernafterE{-.1667em}
-\DeclareRobustCommand{\Xe}{\leavevmode
+\NewDocumentCommand\tub@Xe{}{\leavevmode
\tubhideheight{\hbox{X%
\setbox0=\hbox{\TeX}\setbox1=\hbox{E}%
\ifdim \fontdimen1\font>0pt
- % XeTeX logo needs tinkering when slanted/italic font.
+ % XeTeX logo needs tinkering when slanted/italic font,
+ % so make kerns changeable
\def\XekernbeforeE{-.11em}%
\def\XekernafterE{-.16em}%
\dp1=-.17ex
\fi
\lower\dp0\hbox{\raise\dp1\hbox{\kern\XekernbeforeE\tubreflect{E}}}%
\kern\XekernafterE}}}
-\def\XeTeX{\Xe\TeX}
-\def\XeLaTeX{\Xe{\kern.11em \LaTeX}}
+\newcommand\Xe{\texorpdfstring{\tub@Xe}{Xe}}
+\def\XeTeX{\texorpdfstring{\Xe\TeX}{XeTeX}}
+\def\XeLaTeX{\texorpdfstring{\Xe{\kern.11em \LaTeX}}{XeLaTeX}}
\def\XHTML{\acro{XHTML}}
\def\XSL{\acro{XSL}}
\def\XSLFO{\acro{XSL}\raise.08ex\hbox{-}\acro{FO}}
@@ -443,7 +446,8 @@
\raise\p@\vbox{\baselineskip6\p@\vskip7\p@\hbox{.}\hbox{.}\hbox{.}}
}
\def\bull{\vrule \@height 1ex \@width .8ex \@depth -.2ex }
-\def\cents{{\rm\raise.2ex\rlap{\kern.05em$\scriptstyle/$}c}}
+\DeclareRobustCommand{\cents}{\textcent}
+\def\tubcentsold{{\rm\raise.2ex\rlap{\kern.05em$\scriptstyle/$}c}}
\def\careof{\leavevmode\hbox{\raise.75ex\hbox{c}\kern-.15em
/\kern-.125em\smash{\lower.3ex\hbox{o}}} \ignorespaces}
\def\Dag{\raise .6ex\hbox{$\scriptstyle\dagger$}}
@@ -462,7 +466,7 @@
\ensuremath{\rangle}%
}
\DeclareRobustCommand{\cs}[1]{\texorpdfstring
- {{\tt \char`\\#1}}%
+ {{\tt \char`\\#1}\@}%
{\textbackslash #1}%
}
\DeclareRobustCommand{\tubbraced}[1]{\texorpdfstring
@@ -480,7 +484,7 @@
\DeclareRobustCommand{\thinskip}{\hskip 0.16667em\relax}
\AtBeginDocument{%
\ifx\hyper@normalise\undefined
- \ifx\url\undefined % make sure \url is defined
+ \ifx\url\undefined % define our own simplistic non-hyperref \url
\def\url{\begingroup % might as well catch common special chars
\catcode`\#=12 \catcode`\$=12 \catcode`\%=12 \catcode`\^=12
\catcode`\&=12 \catcode`\_=12 \catcode`\~=12
diff --git a/Master/texmf-dist/tex/latex/tugboat/ltugproc.cls b/Master/texmf-dist/tex/latex/tugboat/ltugproc.cls
index dcb04fc8a09..3ffbb7c61af 100644
--- a/Master/texmf-dist/tex/latex/tugboat/ltugproc.cls
+++ b/Master/texmf-dist/tex/latex/tugboat/ltugproc.cls
@@ -32,7 +32,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesClass {ltugproc}
- [2024-04-15 v2.32
+ [2024-10-29 v2.34
TUG conference proceedings class%
]
\def\@tugclass{ltugproc}
diff --git a/Master/texmf-dist/tex/latex/tugboat/ltugproc.sty b/Master/texmf-dist/tex/latex/tugboat/ltugproc.sty
index 227e460df9f..8f346b15c0c 100644
--- a/Master/texmf-dist/tex/latex/tugboat/ltugproc.sty
+++ b/Master/texmf-dist/tex/latex/tugboat/ltugproc.sty
@@ -31,7 +31,7 @@
%% extension .ins) which are part of the distribution.
%%
\ProvidesPackage{ltugproc}
- [2024-04-15 v2.32
+ [2024-10-29 v2.34
TUG compatibility package%
]
\@obsoletefile{ltugproc.cls}{ltugproc.sty}
diff --git a/Master/texmf-dist/tex/latex/turnthepage/turnpageetex.sty b/Master/texmf-dist/tex/latex/turnthepage/turnpageetex.sty
index 16c225574e0..b6371b7fb94 100644
--- a/Master/texmf-dist/tex/latex/turnthepage/turnpageetex.sty
+++ b/Master/texmf-dist/tex/latex/turnthepage/turnpageetex.sty
@@ -1,16 +1,7 @@
-% This is file `turnpageetex.sty' v1.3a by Merciadri Luca.
-% Thanks to Marc van Dongen and Martin Muench for their help.
+\NeedsTeXFormat{LaTeX2e}[2024-06-01]
+\ProvidesPackage{turnthepage}[2024/11/15 v2.0a Indicating to turn the page with eTeX (LM; MvD; HMM)]
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{turnpageetex}[2011/03/24 1.3a
- Indicating to turn the page (LM)]
-
-\PackageInfo{turnpageetex}{This is turnthepage with using e-TeX.}
-
-\RequirePackage{atbegshi}
-\RequirePackage{picture}
-\RequirePackage{zref-abspage}
-\RequirePackage{zref-lastpage}
+\PackageInfo{turnpageetex}{This is turnthepage with using e-TeX and recent LaTeX format.}
\ifx\turnthepage\undefined
\DeclareOption{short}{\providecommand{\turnthepage}{/\ldots}}
@@ -40,20 +31,15 @@
}
\fi
-\AtBeginShipout{%
-\AtBeginShipoutUpperLeft{%
- \ifodd\c@page
- \ifnum\zref@extract{LastPage}{abspage}>\c@abspage
- \dimen1=1in
- \advance\dimen1 by \textwidth
- \advance\dimen1 by \oddsidemargin
- \dimen3=1in
- \advance\dimen3 by \topmargin
- \advance\dimen3 by \headheight
- \advance\dimen3 by \headsep
- \advance\dimen3 by \textheight
- \advance\dimen3 by \footskip
- \put(\dimen1,-\dimen3){\llap{\turnthepage}}%
- \fi%
- \fi%
-}}
+\RequirePackage{picture}
+
+\AddToHook{shipout/background}{%
+ \ifodd\the\ReadonlyShipoutCounter%
+ \ifnum\@abspage@last>\the\ReadonlyShipoutCounter\relax%
+ \put(\dimexpr 1in+\textwidth+\oddsidemargin\relax,%
+ \dimexpr -1in-\topmargin-\headheight-\headsep-\textheight-\footskip\relax%
+ ){\llap{\turnthepage}}%
+ \fi%
+ \fi%
+}
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/turnthepage/turnpagewoetex.sty b/Master/texmf-dist/tex/latex/turnthepage/turnpagewoetex.sty
index 779f6c0139a..a0edd6c5a5b 100644
--- a/Master/texmf-dist/tex/latex/turnthepage/turnpagewoetex.sty
+++ b/Master/texmf-dist/tex/latex/turnthepage/turnpagewoetex.sty
@@ -1,17 +1,8 @@
-% This is file `turnpagewoetex.sty' v1.3a by Merciadri Luca.
-% Thanks to Marc van Dongen and Martin Muench for their help.
-
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{turnpagewoetex}[2011/03/24 1.3a
- Indicating to turn the page (LM)]
+\NeedsTeXFormat{LaTeX2e}[1994/06/01]
+\ProvidesPackage{turnpagewoetex}[2024/11/15 v2.0a Indicating to turn the page w/o etex (LM; MvD; HMM)]
\PackageInfo{turnpagewoetex}{This is turnthepage without using e-TeX.}
-\RequirePackage{atbegshi}
-\RequirePackage{picture}
-\RequirePackage{alphalph}
-\RequirePackage{pageslts}
-
\ifx\turnthepage\undefined
\DeclareOption{short}{\providecommand{\turnthepage}{/\ldots}}
\DeclareOption{english}{\providecommand{\turnthepage}{\textit{Turn the page.}}}
@@ -40,22 +31,44 @@
}
\fi
+\RequirePackage{atbegshi}
+\RequirePackage{everyshi}
+\RequirePackage{atveryend}
+\RequirePackage{picture}
+
+\newcounter{tpCurrentPage}
+\setcounter{tpCurrentPage}{1}
+\EveryShipout{\addtocounter{tpCurrentPage}{1}}
+
+\newcounter{tppagenr}
+\setcounter{tppagenr}{1}
+\AfterLastShipout{%
+ \addtocounter{tpCurrentPage}{-1}%
+ \edef\turnpage@tmpCP{\arabic{tpCurrentPage}}%
+ \if@filesw%
+ \immediate\write\@auxout{\string\setcounter{tppagenr}{\turnpage@tmpCP}}%
+ \fi%
+ \addtocounter{tpCurrentPage}{+1}%
+}
+
\AtBeginShipout{%
-\AtBeginShipoutUpperLeft{%
- \ifodd\value{CurrentPage}
- % The \value{CurrentPage} is already 1 higher than the current page number here.
- \else
- \ifnum\value{pagesLTS.pagenr}>\value{CurrentPage}
- \dimen1=1in
- \advance\dimen1 by \textwidth
- \advance\dimen1 by \oddsidemargin
- \dimen3=1in
- \advance\dimen3 by \topmargin
- \advance\dimen3 by \headheight
- \advance\dimen3 by \headsep
- \advance\dimen3 by \textheight
- \advance\dimen3 by \footskip
- \put(\dimen1,-\dimen3){\llap{\turnthepage}}%
- \fi%
- \fi%
-}}
+ \AtBeginShipoutUpperLeft{%
+ \ifodd\value{tpCurrentPage}% The \value{tpCurrentPage} is already 1 higher than the current page number here.
+ \else%
+ \ifnum\value{tppagenr}>\value{tpCurrentPage}\relax%
+ \dimen1=1in%
+ \advance\dimen1 by \textwidth%
+ \advance\dimen1 by \oddsidemargin%
+ \dimen3=1in%
+ \advance\dimen3 by \topmargin%
+ \advance\dimen3 by \headheight%
+ \advance\dimen3 by \headsep%
+ \advance\dimen3 by \textheight%
+ \advance\dimen3 by \footskip%
+ \put(\dimen1,-\dimen3){\llap{\turnthepage}}%
+ \fi%
+ \fi%
+ }%
+}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/turnthepage/turnthepage.sty b/Master/texmf-dist/tex/latex/turnthepage/turnthepage.sty
index 554cd6fce20..045e70b0de2 100644
--- a/Master/texmf-dist/tex/latex/turnthepage/turnthepage.sty
+++ b/Master/texmf-dist/tex/latex/turnthepage/turnthepage.sty
@@ -1,9 +1,5 @@
-% This is file `turnthepage.sty' v1.3a by Merciadri Luca.
-% Thanks to Marc van Dongen and Martin Muench for their help.
-
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
-\ProvidesPackage{turnthepage}[2011/03/24 v1.3a
- Loading turnthepage package (LM)]
+\ProvidesPackage{turnthepage}[2024/11/15 v2.0a Indicating to turn the page (LM; MvD; HMM)]
\DeclareOption{short}{\providecommand{\turnp@geoption}{short}}
\DeclareOption{english}{\providecommand{\turnp@geoption}{english}}
@@ -17,18 +13,16 @@
\providecommand{\turnp@geoption}{ }
\fi
-\newif\ifetex
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname eTeXversion\endcsname\relax
- \etexfalse
-\else
- \etextrue
-\fi
-
-\ifetex
- \PackageInfo{turnthepage}{e-TeX found, loading package turnpageetex.}
- \RequirePackage[\turnp@geoption]{turnpageetex}
-\else
\PackageInfo{turnthepage}{e-TeX not found, loading package turnpagewoetex.}
\RequirePackage[\turnp@geoption]{turnpagewoetex}
-\fi \ No newline at end of file
+\else
+ \@ifl@t@r\fmtversion{2024-06-01}{
+ \PackageInfo{turnthepage}{e-TeX found, loading package turnpageetex.}
+ \RequirePackage[\turnp@geoption]{turnpageetex}
+ }{\PackageInfo{turnthepage}{e-TeX found but old LaTeX format,loading package turnpagewoetex.}
+ \RequirePackage[\turnp@geoption]{turnpagewoetex}
+ }
+\fi
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw.css.cls b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw.css.cls
new file mode 100644
index 00000000000..4dc1296f243
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw.css.cls
@@ -0,0 +1,234 @@
+% ================= %
+% == ADMONITIONS == %
+% ================= %
+
+% ------------------------- %
+% -- ICONS & ENV. COLORS -- %
+% ------------------------- %
+
+\ExplSyntaxOn
+
+%%%
+% We use two ''prop'' variables to associate each \env to its icon
+% and color.
+%%%
+\prop_new:N \g__tutodoc_focus_color_prop
+\prop_new:N \g__tutodoc_focus_icon_prop
+
+\prop_set_from_keyval:Nn \g__tutodoc_focus_color_prop {
+ note = DarkGray,
+ tip = DarkGray,
+ imp = DarkGray,
+ caut = DarkGray,
+ warn = DarkGray,
+}
+
+\prop_set_from_keyval:Nn \g__tutodoc_focus_icon_prop {
+ note = \faInfoCircle,
+ tip = \faLightbulb,
+ imp = \faHighlighter,
+ caut = \faBiohazard,
+ warn = \faSkullCrossbones,
+}
+
+\ExplSyntaxOff
+
+
+% ------------------ %
+% -- EXTRA COLORS -- %
+% ------------------ %
+
+\NewExpandableDocumentCommand{\tutodoc@build@title@color}{m}{%
+ white%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@build@upper@color}{m}{%
+ \tdocdarkcolor[40]{Gray}%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@build@back@color}{m}{%
+ \tdoclightcolor[10]{Gray}%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@build@frame@color}{m}{%
+ Gray!75!black!45%
+}
+
+\colorlet{tutodoc@admonition@shadow@color}{Gray!15}
+
+
+% ----------------------- %
+% -- VERTICAL SPACINGS -- %
+% ----------------------- %
+
+\newcommand{\tutodoc@admonition@space@above}{\medskipamount}
+\newcommand{\tutodoc@admonition@space@below}{\medskipamount}
+
+
+
+% ========================= %
+% == LISTINGS - AGNOSTIC == %
+% ========================= %
+
+% ----------------- %
+% -- INLINE CODE -- %
+% ----------------- %
+
+\newcommand{\tutodoc@code@style}{friendly_grayscale}
+
+\colorlet{tutodoc@code@back@color}{gray!5}
+\colorlet{tutodoc@code@text@color}{black}
+
+
+% -------------------------------- %
+% -- FRAMED LISTING (tcolorbox) -- %
+% -------------------------------- %
+
+\colorlet{tutodoc@code@frame@color}{darkgray}
+
+\newcommand{\tutodoc@code@left@len}{3pt}
+\newcommand{\tutodoc@code@right@len}{3pt}
+\newcommand{\tutodoc@code@top@len}{1.5pt}
+\newcommand{\tutodoc@code@bottom@len}{1.5pt}
+
+\newcommand{\tutodoc@code@arc@len}{2pt}
+
+\newcommand{\tutodoc@code@left@rule@len}{1pt}
+\newcommand{\tutodoc@code@right@rule@len}{1pt}
+\newcommand{\tutodoc@code@top@rule@len}{1pt}
+\newcommand{\tutodoc@code@bottom@rule@len}{1pt}
+
+\colorlet{tutodoc@code@shadow@color}{Gray!25}
+
+\newcommand{\tutodoc@code@shadow@xshift@len}{.75mm}
+\newcommand{\tutodoc@code@shadow@yshift@len}{-.75mm}
+\newcommand{\tutodoc@code@shadow@offset@len}{0mm}
+
+\colorlet{tutodoc@code@segment@color}{gray}
+
+
+
+% ====================== %
+% == LISTINGS - LATEX == %
+% ====================== %
+
+% ---------------- %
+% -- LEXER USED -- %
+% ---------------- %
+
+\newcommand{\tutodoc@latex@lexer}{latex}
+
+
+% ----------------- %
+% -- INLINE CODE -- %
+% ----------------- %
+
+\newcommand{\tutodoc@latex@style}{friendly_grayscale}
+
+\colorlet{tutodoc@latex@back@color}{gray!5}
+\colorlet{tutodoc@latex@text@color}{black}
+
+
+% -------------------------------- %
+% -- FRAMED LISTING (tcolorbox) -- %
+% -------------------------------- %
+
+\colorlet{tutodoc@latex@frame@color}{darkgray}
+
+\newcommand{\tutodoc@latex@left@len}{3pt}
+\newcommand{\tutodoc@latex@right@len}{3pt}
+\newcommand{\tutodoc@latex@top@len}{1.5pt}
+\newcommand{\tutodoc@latex@bottom@len}{1.5pt}
+
+\newcommand{\tutodoc@latex@arc@len}{2pt}
+
+\newcommand{\tutodoc@latex@left@rule@len}{1pt}
+\newcommand{\tutodoc@latex@right@rule@len}{1pt}
+\newcommand{\tutodoc@latex@top@rule@len}{1pt}
+\newcommand{\tutodoc@latex@bottom@rule@len}{1pt}
+
+\colorlet{tutodoc@latex@shadow@color}{Gray!25}
+
+\newcommand{\tutodoc@latex@shadow@xshift@len}{.75mm}
+\newcommand{\tutodoc@latex@shadow@yshift@len}{-.75mm}
+\newcommand{\tutodoc@latex@shadow@offset@len}{0mm}
+
+\colorlet{tutodoc@latex@segment@color}{gray}
+
+
+
+% ========================== %
+% == TEXT AND PAGE COLORS == %
+% ========================== %
+
+\colorlet{tutodoc@page@color}{white}
+\colorlet{tutodoc@text@color}{black}
+
+
+% ================= %
+% == LINKS COLOR == %
+% ================= %
+
+\definecolor{tutodoc@link@color}{named}{DimGray}
+
+
+
+% ============== %
+% == SHOWCASE == %
+% ============== %
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@rule@color}{}{%
+ black%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@stripe@color}{}{%
+ darkgray%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@text@color}{}{%
+ black%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@build@rule@color}{m}{%
+ black%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@build@back@color}{m}{%
+ gray!10%
+}
+
+
+
+% ======================= %
+% == VERSION & CHANGES == %
+% ======================= %
+
+% -------------------- %
+% -- DATE & VERSION -- %
+% -------------------- %
+
+\NewExpandableDocumentCommand{\tutodoc@changes@when@color}{}{%
+ gray%
+}
+
+
+% --------------------------- %
+% -- ENVS FOR CHANGES MADE -- %
+% --------------------------- %
+
+\newcommand{\tutodoc@changes@start@project@icon}{\faAnchor}
+
+\ExplSyntaxOn
+
+\prop_new:N \g__tutodoc_topic_change_prop
+\prop_set_from_keyval:Nn \g__tutodoc_topic_change_prop {
+ break = \faCodeBranch,
+ fix = \faWrench,
+ new = \faGem,
+ prob = \faFire*,
+ tech = \faFlask,
+ update = \reflectbox{\faHistory},
+ todo = \faCompass[regular],
+}
+
+\ExplSyntaxOff
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color.css.cls b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color.css.cls
new file mode 100644
index 00000000000..50f46702e7f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color.css.cls
@@ -0,0 +1,238 @@
+% ================= %
+% == ADMONITIONS == %
+% ================= %
+
+% ------------------------- %
+% -- ICONS & ENV. COLORS -- %
+% ------------------------- %
+
+\ExplSyntaxOn
+
+%%%
+% We use two ''prop'' variables to associate each \env to its icon
+% and color.
+%%%
+\prop_new:N \g__tutodoc_focus_color_prop
+\prop_new:N \g__tutodoc_focus_icon_prop
+
+\prop_set_from_keyval:Nn \g__tutodoc_focus_color_prop {
+ note = cyan,
+ tip = ForestGreen,
+ imp = orange,
+ caut = violet,
+ warn = red,
+}
+
+\prop_set_from_keyval:Nn \g__tutodoc_focus_icon_prop {
+ note = \faInfoCircle,
+ tip = \faLightbulb,
+ imp = \faHighlighter,
+ caut = \faBiohazard,
+ warn = \faSkullCrossbones,
+}
+
+\ExplSyntaxOff
+
+
+% ------------------ %
+% -- EXTRA COLORS -- %
+% ------------------ %
+
+\NewExpandableDocumentCommand{\tutodoc@build@title@color}{m}{%
+ white%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@build@upper@color}{m}{%
+ \tdocdarkcolor{#1}%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@build@lower@color}{m}{%
+ \tdocdarkcolor{#1}%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@build@back@color}{m}{%
+ \tdoclightcolor{#1}%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@build@frame@color}{m}{%
+ #1!75!black!45%
+}
+
+\colorlet{tutodoc@admonition@shadow@color}{Gray!17}
+
+
+% ----------------------- %
+% -- VERTICAL SPACINGS -- %
+% ----------------------- %
+
+\newcommand{\tutodoc@admonition@space@above}{\medskipamount}
+\newcommand{\tutodoc@admonition@space@below}{\medskipamount}
+
+
+
+% ========================= %
+% == LISTINGS - AGNOSTIC == %
+% ========================= %
+
+% ----------------- %
+% -- INLINE CODE -- %
+% ----------------- %
+
+\newcommand{\tutodoc@code@style}{pastie}
+
+\colorlet{tutodoc@code@back@color}{gray!5}
+\colorlet{tutodoc@code@text@color}{black}
+
+
+% -------------------------------- %
+% -- FRAMED LISTING (tcolorbox) -- %
+% -------------------------------- %
+
+\colorlet{tutodoc@code@frame@color}{darkgray}
+
+\newcommand{\tutodoc@code@left@len}{3pt}
+\newcommand{\tutodoc@code@right@len}{3pt}
+\newcommand{\tutodoc@code@top@len}{1.5pt}
+\newcommand{\tutodoc@code@bottom@len}{1.5pt}
+
+\newcommand{\tutodoc@code@arc@len}{2pt}
+
+\newcommand{\tutodoc@code@left@rule@len}{1pt}
+\newcommand{\tutodoc@code@right@rule@len}{1pt}
+\newcommand{\tutodoc@code@top@rule@len}{1pt}
+\newcommand{\tutodoc@code@bottom@rule@len}{1pt}
+
+\colorlet{tutodoc@code@shadow@color}{Gray!25}
+
+\newcommand{\tutodoc@code@shadow@xshift@len}{.75mm}
+\newcommand{\tutodoc@code@shadow@yshift@len}{-.75mm}
+\newcommand{\tutodoc@code@shadow@offset@len}{0mm}
+
+\colorlet{tutodoc@code@segment@color}{gray}
+
+
+
+% ====================== %
+% == LISTINGS - LATEX == %
+% ====================== %
+
+% ---------------- %
+% -- LEXER USED -- %
+% ---------------- %
+
+\newcommand{\tutodoc@latex@lexer}{latex}
+
+
+% ----------------- %
+% -- INLINE CODE -- %
+% ----------------- %
+
+\newcommand{\tutodoc@latex@style}{pastie}
+
+\colorlet{tutodoc@latex@back@color}{gray!5}
+\colorlet{tutodoc@latex@text@color}{black}
+
+
+% -------------------------------- %
+% -- FRAMED LISTING (tcolorbox) -- %
+% -------------------------------- %
+
+\colorlet{tutodoc@latex@frame@color}{darkgray}
+
+\newcommand{\tutodoc@latex@left@len}{3pt}
+\newcommand{\tutodoc@latex@right@len}{3pt}
+\newcommand{\tutodoc@latex@top@len}{1.5pt}
+\newcommand{\tutodoc@latex@bottom@len}{1.5pt}
+
+\newcommand{\tutodoc@latex@arc@len}{2pt}
+
+\newcommand{\tutodoc@latex@left@rule@len}{1pt}
+\newcommand{\tutodoc@latex@right@rule@len}{1pt}
+\newcommand{\tutodoc@latex@top@rule@len}{1pt}
+\newcommand{\tutodoc@latex@bottom@rule@len}{1pt}
+
+\colorlet{tutodoc@latex@shadow@color}{Gray!25}
+
+\newcommand{\tutodoc@latex@shadow@xshift@len}{.75mm}
+\newcommand{\tutodoc@latex@shadow@yshift@len}{-.75mm}
+\newcommand{\tutodoc@latex@shadow@offset@len}{0mm}
+
+\colorlet{tutodoc@latex@segment@color}{gray}
+
+
+
+% ========================== %
+% == TEXT AND PAGE COLORS == %
+% ========================== %
+
+\colorlet{tutodoc@page@color}{white}
+\colorlet{tutodoc@text@color}{black}
+
+
+% ================= %
+% == LINKS COLOR == %
+% ================= %
+
+\colorlet{tutodoc@link@color}{NavyBlue!85!white}
+
+
+
+% ============== %
+% == SHOWCASE == %
+% ============== %
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@rule@color}{}{%
+ black%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@stripe@color}{}{%
+ cyan%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@text@color}{}{%
+ black%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@build@rule@color}{m}{%
+ \tdocdarkcolor{#1}%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@build@back@color}{m}{%
+ \tdoclightcolor{#1}%
+}
+
+
+
+% ======================= %
+% == VERSION & CHANGES == %
+% ======================= %
+
+% -------------------- %
+% -- DATE & VERSION -- %
+% -------------------- %
+
+\NewExpandableDocumentCommand{\tutodoc@changes@when@color}{}{%
+ \tdoclightcolor[60]{DarkBlue}%
+}
+
+
+% --------------------------- %
+% -- ENVS FOR CHANGES MADE -- %
+% --------------------------- %
+
+\newcommand{\tutodoc@changes@start@project@icon}{\faAnchor}
+
+\ExplSyntaxOn
+
+\prop_new:N \g__tutodoc_topic_change_prop
+\prop_set_from_keyval:Nn \g__tutodoc_topic_change_prop {
+ break = \faCodeBranch,
+ fix = \faWrench,
+ new = \faGem,
+ prob = \faFire*,
+ tech = \faFlask,
+ update = \reflectbox{\faHistory},
+ todo = \faCompass[regular],
+}
+
+\ExplSyntaxOff
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark.css.cls b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark.css.cls
new file mode 100644
index 00000000000..867264c1a17
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark.css.cls
@@ -0,0 +1,238 @@
+% ================= %
+% == ADMONITIONS == %
+% ================= %
+
+% ------------------------- %
+% -- ICONS & ENV. COLORS -- %
+% ------------------------- %
+
+\ExplSyntaxOn
+
+%%%
+% We use two ''prop'' variables to associate each \env to its icon
+% and color.
+%%%
+\prop_new:N \g__tutodoc_focus_color_prop
+\prop_new:N \g__tutodoc_focus_icon_prop
+
+\prop_set_from_keyval:Nn \g__tutodoc_focus_color_prop {
+ note = cyan,
+ tip = ForestGreen,
+ imp = orange,
+ caut = violet,
+ warn = red,
+}
+
+\prop_set_from_keyval:Nn \g__tutodoc_focus_icon_prop {
+ note = \faInfoCircle,
+ tip = \faLightbulb,
+ imp = \faHighlighter,
+ caut = \faBiohazard,
+ warn = \faSkullCrossbones,
+}
+
+\ExplSyntaxOff
+
+
+% ------------------ %
+% -- EXTRA COLORS -- %
+% ------------------ %
+
+\NewExpandableDocumentCommand{\tutodoc@build@title@color}{m}{%
+ \tdocdarkcolor[95]{white}%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@build@upper@color}{m}{%
+ \tdocdarkcolor[95]{white}%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@build@lower@color}{m}{%
+ \tdocdarkcolor[95]{white}%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@build@back@color}{m}{%
+ #1!75!black!65%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@build@frame@color}{m}{%
+ \tdocdarkcolor[65]{#1}%
+}
+
+\colorlet{tutodoc@admonition@shadow@color}{black!80}
+
+
+% ----------------------- %
+% -- VERTICAL SPACINGS -- %
+% ----------------------- %
+
+\newcommand{\tutodoc@admonition@space@above}{\medskipamount}
+\newcommand{\tutodoc@admonition@space@below}{\medskipamount}
+
+
+
+% ========================= %
+% == LISTINGS - AGNOSTIC == %
+% ========================= %
+
+% ----------------- %
+% -- INLINE CODE -- %
+% ----------------- %
+
+\newcommand{\tutodoc@code@style}{github-dark}
+
+\colorlet{tutodoc@code@back@color}{\tdocdarkcolor[30]{white}}
+\colorlet{tutodoc@code@text@color}{\tdocdarkcolor[80]{white}}
+
+
+% -------------------------------- %
+% -- FRAMED LISTING (tcolorbox) -- %
+% -------------------------------- %
+
+\colorlet{tutodoc@code@frame@color}{darkgray}
+
+\newcommand{\tutodoc@code@left@len}{3pt}
+\newcommand{\tutodoc@code@right@len}{3pt}
+\newcommand{\tutodoc@code@top@len}{1.5pt}
+\newcommand{\tutodoc@code@bottom@len}{1.5pt}
+
+\newcommand{\tutodoc@code@arc@len}{2pt}
+
+\newcommand{\tutodoc@code@left@rule@len}{1pt}
+\newcommand{\tutodoc@code@right@rule@len}{1pt}
+\newcommand{\tutodoc@code@top@rule@len}{1pt}
+\newcommand{\tutodoc@code@bottom@rule@len}{1pt}
+
+\colorlet{tutodoc@code@shadow@color}{black!80}
+
+\newcommand{\tutodoc@code@shadow@xshift@len}{.75mm}
+\newcommand{\tutodoc@code@shadow@yshift@len}{-.75mm}
+\newcommand{\tutodoc@code@shadow@offset@len}{0mm}
+
+\colorlet{tutodoc@code@segment@color}{gray}
+
+
+
+% ====================== %
+% == LISTINGS - LATEX == %
+% ====================== %
+
+% ---------------- %
+% -- LEXER USED -- %
+% ---------------- %
+
+\newcommand{\tutodoc@latex@lexer}{latex}
+
+
+% ----------------- %
+% -- INLINE CODE -- %
+% ----------------- %
+
+\newcommand{\tutodoc@latex@style}{github-dark}
+
+\colorlet{tutodoc@latex@back@color}{\tdocdarkcolor[30]{white}}
+\colorlet{tutodoc@latex@text@color}{\tdocdarkcolor[80]{white}}
+
+
+% -------------------------------- %
+% -- FRAMED LISTING (tcolorbox) -- %
+% -------------------------------- %
+
+\colorlet{tutodoc@latex@frame@color}{darkgray}
+
+\newcommand{\tutodoc@latex@left@len}{3pt}
+\newcommand{\tutodoc@latex@right@len}{3pt}
+\newcommand{\tutodoc@latex@top@len}{1.5pt}
+\newcommand{\tutodoc@latex@bottom@len}{1.5pt}
+
+\newcommand{\tutodoc@latex@arc@len}{2pt}
+
+\newcommand{\tutodoc@latex@left@rule@len}{1pt}
+\newcommand{\tutodoc@latex@right@rule@len}{1pt}
+\newcommand{\tutodoc@latex@top@rule@len}{1pt}
+\newcommand{\tutodoc@latex@bottom@rule@len}{1pt}
+
+\colorlet{tutodoc@latex@shadow@color}{black!80}
+
+\newcommand{\tutodoc@latex@shadow@xshift@len}{.75mm}
+\newcommand{\tutodoc@latex@shadow@yshift@len}{-.75mm}
+\newcommand{\tutodoc@latex@shadow@offset@len}{0mm}
+
+\colorlet{tutodoc@latex@segment@color}{gray}
+
+
+
+% ========================== %
+% == TEXT AND PAGE COLORS == %
+% ========================== %
+
+\colorlet{tutodoc@page@color}{black}
+\colorlet{tutodoc@text@color}{\tdocdarkcolor[80]{white}}
+
+
+% ================= %
+% == LINKS COLOR == %
+% ================= %
+
+\definecolor{tutodoc@link@color}{HTML}{9591A6}
+
+
+
+% ============== %
+% == SHOWCASE == %
+% ============== %
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@rule@color}{}{%
+ white%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@stripe@color}{}{%
+ white%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@text@color}{}{%
+ white%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@build@rule@color}{m}{%
+ \tdocdarkcolor[80]{#1}%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@build@back@color}{m}{%
+ \tdocdarkcolor[30]{#1}%
+}
+
+
+
+% ======================= %
+% == VERSION & CHANGES == %
+% ======================= %
+
+% -------------------- %
+% -- DATE & VERSION -- %
+% -------------------- %
+
+\NewExpandableDocumentCommand{\tutodoc@changes@when@color}{}{%
+ \tdoclightcolor[60]{cyan}%
+}
+
+
+% --------------------------- %
+% -- ENVS FOR CHANGES MADE -- %
+% --------------------------- %
+
+\newcommand{\tutodoc@changes@start@project@icon}{\faAnchor}
+
+\ExplSyntaxOn
+
+\prop_new:N \g__tutodoc_topic_change_prop
+\prop_set_from_keyval:Nn \g__tutodoc_topic_change_prop {
+ break = \faCodeBranch,
+ fix = \faWrench,
+ new = \faGem,
+ prob = \faFire*,
+ tech = \faFlask,
+ update = \reflectbox{\faHistory},
+ todo = \faCompass[regular],
+}
+
+\ExplSyntaxOff
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft.css.cls b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft.css.cls
new file mode 100644
index 00000000000..3798f815be6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft.css.cls
@@ -0,0 +1,222 @@
+% ================= %
+% == ADMONITIONS == %
+% ================= %
+
+% -------------------------------------- %
+% -- ONY CLASSICAL THEOREM-LIKE \ENVS -- %
+% -------------------------------------- %
+
+\ExplSyntaxOn
+
+%%%
+% Without icons and colors, we just use a ''seq'' variable to give
+% all the suffixes for the environments concerned.
+%%%
+\seq_new:N \g__tutodoc_focus_color_seq
+
+\seq_set_from_clist:Nn \g__tutodoc_focus_color_seq {
+ note,
+ tip,
+ imp,
+ caut,
+ warn,
+}
+
+\ExplSyntaxOff
+
+
+% ----------------------- %
+% -- VERTICAL SPACINGS -- %
+% ----------------------- %
+
+\newcommand{\tutodoc@admonition@space@above}{2pt plus 2pt}
+\newcommand{\tutodoc@admonition@space@below}{2pt plus 2pt}
+
+
+
+% ========================= %
+% == LISTINGS - AGNOSTIC == %
+% ========================= %
+
+% ----------------- %
+% -- INLINE CODE -- %
+% ----------------- %
+
+\codenolexertrue
+\newcommand{\tutodoc@code@style}{default}
+
+\colorlet{tutodoc@code@back@color}{white}
+\colorlet{tutodoc@code@text@color}{black}
+
+
+% -------------------------------- %
+% -- FRAMED LISTING (tcolorbox) -- %
+% -------------------------------- %
+
+\colorlet{tutodoc@code@frame@color}{darkgray}
+
+\newcommand{\tutodoc@code@left@len}{2pt}
+\newcommand{\tutodoc@code@right@len}{2pt}
+\newcommand{\tutodoc@code@top@len}{0pt}
+\newcommand{\tutodoc@code@bottom@len}{0pt}
+
+\newcommand{\tutodoc@code@arc@len}{0pt}
+
+\newcommand{\tutodoc@code@left@rule@len}{1pt}
+\newcommand{\tutodoc@code@right@rule@len}{0pt}
+\newcommand{\tutodoc@code@top@rule@len}{0pt}
+\newcommand{\tutodoc@code@bottom@rule@len}{0pt}
+
+\colorlet{tutodoc@code@shadow@color}{black}
+
+\newcommand{\tutodoc@code@shadow@xshift@len}{0mm}
+\newcommand{\tutodoc@code@shadow@yshift@len}{0mm}
+\newcommand{\tutodoc@code@shadow@offset@len}{0mm}
+
+\colorlet{tutodoc@code@segment@color}{black}
+
+
+
+% ====================== %
+% == LISTINGS - LATEX == %
+% ====================== %
+
+% ---------------- %
+% -- LEXER USED -- %
+% ---------------- %
+
+\newcommand{\tutodoc@latex@lexer}{text}
+
+
+% ----------------- %
+% -- INLINE CODE -- %
+% ----------------- %
+
+\newcommand{\tutodoc@latex@style}{default}
+
+\colorlet{tutodoc@latex@back@color}{white}
+\colorlet{tutodoc@latex@text@color}{black}
+
+
+% -------------------------------- %
+% -- FRAMED LISTING (tcolorbox) -- %
+% -------------------------------- %
+
+\colorlet{tutodoc@latex@frame@color}{darkgray}
+
+\newcommand{\tutodoc@latex@left@len}{2pt}
+\newcommand{\tutodoc@latex@right@len}{2pt}
+\newcommand{\tutodoc@latex@top@len}{0pt}
+\newcommand{\tutodoc@latex@bottom@len}{0pt}
+
+\newcommand{\tutodoc@latex@arc@len}{0pt}
+
+\newcommand{\tutodoc@latex@left@rule@len}{1pt}
+\newcommand{\tutodoc@latex@right@rule@len}{0pt}
+\newcommand{\tutodoc@latex@top@rule@len}{0pt}
+\newcommand{\tutodoc@latex@bottom@rule@len}{0pt}
+
+\colorlet{tutodoc@latex@shadow@color}{black}
+
+\newcommand{\tutodoc@latex@shadow@xshift@len}{0mm}
+\newcommand{\tutodoc@latex@shadow@yshift@len}{0mm}
+\newcommand{\tutodoc@latex@shadow@offset@len}{0mm}
+
+\colorlet{tutodoc@latex@segment@color}{black}
+
+
+
+% ========================== %
+% == TEXT AND PAGE COLORS == %
+% ========================== %
+
+\colorlet{tutodoc@page@color}{white}
+\colorlet{tutodoc@text@color}{black}
+
+
+% ================ %
+% == LINK COLOR == %
+% ================ %
+
+\definecolor{tutodoc@link@color}{named}{black}
+
+
+% ======================= %
+% == VERTICAL SPACINGS == %
+% ======================= %
+
+\setlength{\parskip}{0.5pt plus 1pt}
+
+\RedeclareSectionCommands[
+ runin = false,
+ afterindent = false,
+ beforeskip = .25\baselineskip,
+ afterskip = 5pt
+]{section, subsection, subsubsection}
+
+
+
+% ============== %
+% == SHOWCASE == %
+% ============== %
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@rule@color}{}{%
+ black%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@stripe@color}{}{%
+ black%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@text@color}{}{%
+ black%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@build@rule@color}{m}{%
+ black%
+}
+
+\NewExpandableDocumentCommand{\tutodoc@showcase@build@back@color}{m}{%
+ white%
+}
+
+
+
+% ======================= %
+% == VERSION & CHANGES == %
+% ======================= %
+
+% -------------------- %
+% -- DATE & VERSION -- %
+% -------------------- %
+
+\NewExpandableDocumentCommand{\tutodoc@changes@when@color}{}{%
+ black%
+}
+
+
+% --------------------------- %
+% -- ENVS FOR CHANGES MADE -- %
+% --------------------------- %
+
+%%%
+% The draft theme doesn't use any icon.
+%%%
+
+% \newcommand{\tutodoc@changes@start@project@icon}{}
+
+\ExplSyntaxOn
+
+\seq_new:N \g__tutodoc_topic_change_seq
+
+\seq_set_from_clist:Nn \g__tutodoc_topic_change_seq {
+ break ,
+ fix ,
+ new ,
+ prob ,
+ tech ,
+ update,
+ todo ,
+}
+
+\ExplSyntaxOff
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-en.loc.cls b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-en.loc.cls
new file mode 100644
index 00000000000..5e0a31294f6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-en.loc.cls
@@ -0,0 +1,19 @@
+\NewDocumentCommand{\tutodoc@trans@date}{mmm}{#1-#2-#3}
+\NewDocumentCommand{\tutodoc@trans@in@EN}{m}{#1 in English}
+\NewDocumentCommand{\tutodoc@trans@this@gives}{m}{This gives #1}
+\NewDocumentCommand{\tutodoc@trans@latex@show@start}{}{Start of the real output}
+\NewDocumentCommand{\tutodoc@trans@latex@show@end}{}{End of the real output}
+\NewDocumentCommand{\tutodoc@trans@exa@title}{}{Example}
+\NewDocumentCommand{\tutodoc@trans@rem@title}{}{Remark}
+\NewDocumentCommand{\tutodoc@trans@note@title}{}{Note}
+\NewDocumentCommand{\tutodoc@trans@tip@title}{}{Tip}
+\NewDocumentCommand{\tutodoc@trans@imp@title}{}{Important}
+\NewDocumentCommand{\tutodoc@trans@caut@title}{}{Caution}
+\NewDocumentCommand{\tutodoc@trans@warn@title}{}{Warning}
+\NewDocumentCommand{\tutodoc@trans@chges@tech}{}{Technical information}
+\NewDocumentCommand{\tutodoc@trans@chges@todo}{}{Todo}
+\NewDocumentCommand{\tutodoc@trans@chges@prob}{}{Problem}
+\NewDocumentCommand{\tutodoc@trans@chges@break}{}{Break}
+\NewDocumentCommand{\tutodoc@trans@chges@fix}{}{Fix}
+\NewDocumentCommand{\tutodoc@trans@chges@new}{}{New}
+\NewDocumentCommand{\tutodoc@trans@chges@update}{}{Update} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-es.loc.cls b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-es.loc.cls
new file mode 100644
index 00000000000..a9f95cce729
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-es.loc.cls
@@ -0,0 +1,19 @@
+\NewDocumentCommand{\tutodoc@trans@date}{mmm}{#1/#2/#3}
+\NewDocumentCommand{\tutodoc@trans@in@EN}{m}{#1 en inglés}
+\NewDocumentCommand{\tutodoc@trans@this@gives}{m}{Esto da #1}
+\NewDocumentCommand{\tutodoc@trans@latex@show@start}{}{Inicio de la representación real}
+\NewDocumentCommand{\tutodoc@trans@latex@show@end}{}{Fin de la representación real}
+\NewDocumentCommand{\tutodoc@trans@exa@title}{}{Ejemplo}
+\NewDocumentCommand{\tutodoc@trans@rem@title}{}{Observación}
+\NewDocumentCommand{\tutodoc@trans@note@title}{}{Nota}
+\NewDocumentCommand{\tutodoc@trans@tip@title}{}{Astucia}
+\NewDocumentCommand{\tutodoc@trans@imp@title}{}{Importante}
+\NewDocumentCommand{\tutodoc@trans@caut@title}{}{Recomendación}
+\NewDocumentCommand{\tutodoc@trans@warn@title}{}{Advertencia}
+\NewDocumentCommand{\tutodoc@trans@chges@tech}{}{Información técnica}
+\NewDocumentCommand{\tutodoc@trans@chges@todo}{}{A hacer}
+\NewDocumentCommand{\tutodoc@trans@chges@prob}{}{Problema}
+\NewDocumentCommand{\tutodoc@trans@chges@break}{}{Bifurcación}
+\NewDocumentCommand{\tutodoc@trans@chges@fix}{}{Reparación}
+\NewDocumentCommand{\tutodoc@trans@chges@new}{}{Nuevo}
+\NewDocumentCommand{\tutodoc@trans@chges@update}{}{Actualización} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-fr.loc.cls b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-fr.loc.cls
new file mode 100644
index 00000000000..4944b096654
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-fr.loc.cls
@@ -0,0 +1,19 @@
+\NewDocumentCommand{\tutodoc@trans@date}{mmm}{#3/#2/#1}
+\NewDocumentCommand{\tutodoc@trans@in@EN}{m}{#1 en anglais}
+\NewDocumentCommand{\tutodoc@trans@this@gives}{m}{Ceci donne #1}
+\NewDocumentCommand{\tutodoc@trans@latex@show@start}{}{Début du rendu réel}
+\NewDocumentCommand{\tutodoc@trans@latex@show@end}{}{Fin du rendu réel}
+\NewDocumentCommand{\tutodoc@trans@exa@title}{}{Exemple}
+\NewDocumentCommand{\tutodoc@trans@rem@title}{}{Remarque}
+\NewDocumentCommand{\tutodoc@trans@note@title}{}{Note}
+\NewDocumentCommand{\tutodoc@trans@tip@title}{}{Astuce}
+\NewDocumentCommand{\tutodoc@trans@imp@title}{}{Important}
+\NewDocumentCommand{\tutodoc@trans@caut@title}{}{Mise en garde}
+\NewDocumentCommand{\tutodoc@trans@warn@title}{}{Avertissement}
+\NewDocumentCommand{\tutodoc@trans@chges@tech}{}{Information technique}
+\NewDocumentCommand{\tutodoc@trans@chges@todo}{}{À faire}
+\NewDocumentCommand{\tutodoc@trans@chges@prob}{}{Problème}
+\NewDocumentCommand{\tutodoc@trans@chges@break}{}{Bifurcation}
+\NewDocumentCommand{\tutodoc@trans@chges@fix}{}{Réparation}
+\NewDocumentCommand{\tutodoc@trans@chges@new}{}{Nouveau}
+\NewDocumentCommand{\tutodoc@trans@chges@update}{}{Mise à jour} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-locale-main-english.cfg.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-locale-main-english.cfg.sty
deleted file mode 100644
index 339f10240c6..00000000000
--- a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-locale-main-english.cfg.sty
+++ /dev/null
@@ -1,17 +0,0 @@
-\NewDocumentCommand{\tutodoc@trans@date}{mmm}{#1-#2-#3}
-\NewDocumentCommand{\tutodoc@trans@in@EN}{m}{#1 ~ in ~ english}
-\NewDocumentCommand{\tutodoc@trans@this@gives}{m}{This ~ gives ~ #1}
-\NewDocumentCommand{\tutodoc@trans@latex@show@start}{}{Start ~ of ~ the ~ real ~ output}
-\NewDocumentCommand{\tutodoc@trans@latex@show@end}{}{End ~ of ~ the ~ real ~ output}
-\NewDocumentCommand{\tutodoc@trans@exa@title}{}{Example}
-\NewDocumentCommand{\tutodoc@trans@rmk@title}{}{Remark}
-\NewDocumentCommand{\tutodoc@trans@note@title}{}{Note}
-\NewDocumentCommand{\tutodoc@trans@tip@title}{}{Tip}
-\NewDocumentCommand{\tutodoc@trans@important@title}{}{Important}
-\NewDocumentCommand{\tutodoc@trans@caution@title}{}{Caution}
-\NewDocumentCommand{\tutodoc@trans@warn@title}{}{Warning}
-\NewDocumentCommand{\tutodoc@trans@chges@pb}{}{Problem}
-\NewDocumentCommand{\tutodoc@trans@chges@break}{}{Break}
-\NewDocumentCommand{\tutodoc@trans@chges@fix}{}{Fix}
-\NewDocumentCommand{\tutodoc@trans@chges@new}{}{New}
-\NewDocumentCommand{\tutodoc@trans@chges@update}{}{Update} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-locale-main-french.cfg.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-locale-main-french.cfg.sty
deleted file mode 100644
index 5c97cb2f180..00000000000
--- a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-locale-main-french.cfg.sty
+++ /dev/null
@@ -1,17 +0,0 @@
-\NewDocumentCommand{\tutodoc@trans@date}{mmm}{#3/#2/#1}
-\NewDocumentCommand{\tutodoc@trans@in@EN}{m}{#1 ~ en ~ anglais}
-\NewDocumentCommand{\tutodoc@trans@this@gives}{m}{Ceci ~ donne ~ #1}
-\NewDocumentCommand{\tutodoc@trans@latex@show@start}{}{Début ~ du ~ rendu ~ réel}
-\NewDocumentCommand{\tutodoc@trans@latex@show@end}{}{Fin ~ du ~ rendu ~ réel}
-\NewDocumentCommand{\tutodoc@trans@exa@title}{}{Exemple}
-\NewDocumentCommand{\tutodoc@trans@rmk@title}{}{Remarque}
-\NewDocumentCommand{\tutodoc@trans@note@title}{}{Note}
-\NewDocumentCommand{\tutodoc@trans@tip@title}{}{Astuce}
-\NewDocumentCommand{\tutodoc@trans@important@title}{}{Important}
-\NewDocumentCommand{\tutodoc@trans@caution@title}{}{Mise ~ en ~ garde}
-\NewDocumentCommand{\tutodoc@trans@warn@title}{}{Avertissement}
-\NewDocumentCommand{\tutodoc@trans@chges@pb}{}{Problème}
-\NewDocumentCommand{\tutodoc@trans@chges@break}{}{Bifurcation}
-\NewDocumentCommand{\tutodoc@trans@chges@fix}{}{Réparation}
-\NewDocumentCommand{\tutodoc@trans@chges@new}{}{Nouveau}
-\NewDocumentCommand{\tutodoc@trans@chges@update}{}{Mise ~ à ~ jour} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc.cls b/Master/texmf-dist/tex/latex/tutodoc/tutodoc.cls
new file mode 100644
index 00000000000..fe1f0b52e42
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc.cls
@@ -0,0 +1,1669 @@
+% ********************************************************* %
+% ** This is file `tutodoc.cls' generated automatically. ** %
+% ** ** %
+% ** Copyright (C) 2023-2024 by Christophe, BAL ** %
+% ** ** %
+% ** This file may be distributed and/or modified under ** %
+% ** the conditions of the GNU 3 License. ** %
+% ********************************************************* %
+
+\ProvidesExplClass
+ {tutodoc}
+ {2024-12-18} % Creation: 2023-11-29
+ {1.7.1}
+ {This package proposes tools for writing "human friendly" documentations of LaTeX packages.}
+
+
+% ================== %
+% == \CLS OPTIONS == %
+% ================== %
+
+%%%
+% refs::
+% + https://tex.stackexchange.com/a/729929/6880
+% + https://tex.stackexchange.com/a/729913/6880
+%%%
+
+\ExplSyntaxOn
+
+\msg_set:nnnn { tutodoc ~ (main) }
+ { main : scrartcl-illegal-option }
+ { The ~ option ~ << ~ #1 ~ >> ~ is ~ not ~ allowed. }
+ { \msg_see_documentation_text:n { tutodoc } }
+
+
+%%%
+% The theme is identified by the following macro that can be changed
+% when the class is loaded.
+%%%
+\newcommand{\tutodoc@theme}{color}
+
+
+%%%
+% prototype::
+% theme : the theme to format the document.
+% fontsize : this key is one of those of the '''scrartcl'' class.
+% As \tutodoc imposes the value of this key, we must
+% forbid its use.
+% DIV : similar to the preceding key but here we just want
+% to avoid any use of special ''DIV'' value.
+%%%
+\keys_define:nn { tutodoc / main / class / options } {
+ theme .choices:nn = {
+ bw,
+ color,
+ dark,
+ draft
+ } {
+ \exp_args:NNV \renewcommand \tutodoc@theme \l_keys_choice_tl
+ },
+ fontsize .code:n = {
+ \msg_error:nnn { tutodoc ~ (main) }
+ { main : scrartcl-illegal-option }
+ { fontsize }
+ },
+ DIV .code:n = {
+ \msg_error:nnn { tutodoc ~ (main) }
+ { main : scrartcl-illegal-option }
+ { DIV }
+ },
+}
+
+\PassOptionsToClass{ fontsize = 10pt }{ scrartcl }
+
+\DeclareUnknownKeyHandler[ tutodoc / main / class / options ]{
+ \PassOptionsToClass{ \CurrentOption }{ scrartcl }
+}
+
+\ProcessKeyOptions[ tutodoc / main / class / options ]
+
+\LoadClass{ scrartcl }
+
+\ExplSyntaxOff
+
+
+% =============================================== %
+% == OPTIONS FOR \PACKS IMPORTED BY OTHER ONES == %
+% =============================================== %
+
+% ''xcolor'' will be loaded by ''minted'' and ''tcolorbox'' below.
+\PassOptionsToPackage{svgnames}{xcolor}
+
+
+% ============= %
+% == IMPORTS == %
+% ============= %
+
+\RequirePackage{geometry}
+
+\RequirePackage{marginnote}
+\RequirePackage{fontawesome5}
+\RequirePackage{keytheorems}
+
+\RequirePackage{clrstrip}
+
+% Special settings for ''minted'' need to be done before the loading
+% of the ''tcolorbox'' library ''minted''.
+\RequirePackage[highlightmode = immediate]
+ {minted}
+
+\RequirePackage{tcolorbox}
+\tcbuselibrary{
+ minted,
+ breakable,
+ skins
+}
+
+\RequirePackage{hyperref}
+
+
+%%%
+% We delegate the management of quoting to the ''csquotes'' package,
+% which takes care of the locale settings.
+%
+% warning::
+% We must load ''inputenc'' before ''csquotes''
+%%%
+\RequirePackage[utf8]
+ {inputenc}
+
+\RequirePackage{csquotes}
+
+
+% ===================== %
+% == LOCALE SETTINGS == %
+% ===================== %
+
+\ExplSyntaxOn
+
+\msg_set:nnnn { tutodoc ~ (main) }
+ { main : unsupported-lang }
+ {
+ unsupported ~ language ~ << ~ #1 ~ >>. %
+ ~ %
+ We ~ will ~ use ~ << ~ en ~ >>.
+ }
+ { \msg_see_documentation_text:n { tutodoc } }
+
+
+% Babel requires colon management for our translations.
+\newcommand{\tutodoc@colon}{:}
+
+\AtBeginDocument{
+%%%
+% Settings if ''babel'' \pack is used.
+%%%
+ \@ifpackageloaded{babel}{
+% We must take care of spacings with colons.
+ \iflanguage{french}{
+ \renewcommand{\tutodoc@colon}{\babelshorthand{:}}
+ }{}
+ }{}
+
+%%%
+% Settings if ''polyglossia'' \pack is used.
+%%%
+ \@ifpackageloaded{polyglossia}{
+% If ''polyglossia'' is used, we must load english if necessary
+% (see the ''\tutodoc@use@english'' macro below).
+ \iflanguageloaded{english}{}{
+ \setotherlanguage{english}
+ }
+ }{}%
+
+% Standard way to find the \lang to use.
+ \newcommand{\tdoclang}{\BCPdata{language}}
+
+% We must take care of English rules for English contents.
+ \newcommand\tutodoc@use@english{%
+ \foreignlanguage{english}%
+ }
+
+% If the \lang is not supported, we emit a warning and just use
+% the english language.
+ \makeatletter
+
+ \InputIfFileExists{tutodoc-\tdoclang.loc.cls}{}{
+ \input{tutodoc-en.loc.cls}
+
+ \msg_critical:nnx { tutodoc ~ (main) }
+ { main : unsupported-lang }
+ { \tdoclang }
+ }
+
+ \makeatother
+}
+
+\ExplSyntaxOff
+
+
+% =================== %
+% == PAGE GEOMETRY == %
+% =================== %
+
+\geometry{
+ top = 1.9cm,
+ bottom = 1.9cm,
+ left = 2.25cm,
+ right = 2.25cm,
+ marginparwidth = 2cm,
+ marginparsep = 2pt,
+ heightrounded
+}
+
+\setlength{\parindent}{0cm}
+
+
+% ================== %
+% == TITLES & TOC == %
+% ================== %
+
+\renewcommand{\thesection}{\Roman{section}}
+\renewcommand{\thesubsection}{\arabic{subsection}}
+\renewcommand{\thesubsubsection}{\alph{subsubsection}}
+
+% Source
+% * https://tex.stackexchange.com/a/558025/6880
+\DeclareTOCStyleEntries[
+ raggedentrytext,
+ linefill = \hfill,
+ indent = 0pt,
+ dynindent,
+ numwidth = 0pt,
+ numsep = 1ex,
+ dynnumwidth
+]{tocline}{
+ chapter,
+ section,
+ subsection,
+ subsubsection,
+ paragraph,
+ subparagraph
+}
+
+
+% =========================== %
+% == COLOR TRANSFORMATIONS == %
+% =========================== %
+
+%%%
+% prototype::
+% #1 : (black-rate)
+% the amount of color relative to black.
+% #2 : (color)
+% one color following the ''color'' format.
+%
+% :return: a "darker" version of the color ''#1''.
+%%%
+\NewExpandableDocumentCommand{\tdocdarkcolor}{ O{50} m }{#2!#1!black}
+
+
+%%%
+% prototype::
+% #1 : (transparency)
+% the transparency rate.
+% #2 : (color)
+% one color following the ''color'' format.
+%
+% :return: a "transparent" version of the color `#1`.
+%%%
+\NewExpandableDocumentCommand{\tdoclightcolor}{ O{5} m }{#2!#1}
+
+
+% =========== %
+% == ICONS == %
+% =========== %
+
+%%%
+% prototype::
+% #1 : (aws-icon)
+% one material that expects to be an icon command from the
+% ''fontawsome5'' \pack.
+%
+% :return: the icon followed by a small insecable space.
+%%%
+\NewDocumentCommand{\tdocicon}{ m }{%
+ #1\kern.45em%
+}
+
+
+% ============== %
+% == LISTINGS == %
+% ============== %
+
+%%%
+% We use a \std \latex boolean to switch on or off lexers for listings
+% (this allows the ''draft'' mode to display listings in verbatim).
+%%%
+\newif\ifcodenolexer
+\codenolexerfalse
+
+
+\ExplSyntaxOn
+
+%%%
+% prototype::
+% #1 : (style-abbrev)
+% a shortcut for a \tcolorbox styling command.
+% @ #1 in [code, sbs, std]
+%
+% In the following easy-to-understand macro, we use one fictive \tcolorbox
+% style such as to indicate an unknown ''tutodoc'' shortcut style. For example,
+% this will give the following message if the user type ''MISTYPED-STYLE''.
+%
+% term::
+% Package pgfkeys Error: I do not know the key '/tcb/[[tutodoc : tdoclatex
+% bad option "MISTYPED-STYLE"]]' and I am going to ignore it. Perhaps you
+% misspelled it.
+%
+% See the pgfkeys package documentation for explanation.
+%%%
+
+\NewExpandableDocumentCommand{\tdoctcb}{ m }{
+ \str_case:nnF { #1 } {
+ { sbs } { listing ~ side ~ text }
+ { code } { listing ~ only }
+ { std } { listing ~ and ~ text }
+ } {
+ [[tutodoc ~ : ~ LaTeX ~ listing ~ illegal ~ style ~ "#1"]]
+ }
+}
+
+\ExplSyntaxOff
+
+
+% ============================== %
+% == THEME - GENERAL SETTINGS == %
+% ============================== %
+
+\input{tutodoc-\tutodoc@theme.css.cls}
+
+\pagecolor{tutodoc@page@color}
+\color{tutodoc@text@color}
+
+\hypersetup{
+ colorlinks,
+ citecolor = tutodoc@link@color,
+ filecolor = tutodoc@link@color,
+ linkcolor = tutodoc@link@color,
+ urlcolor = tutodoc@link@color
+}
+
+
+
+% ============= %
+% == QUOTING == %
+% ============= %
+
+%%%
+% prototype::
+% #1 : (text)
+% a text to quote.
+%
+% For example, ''\tdocquote{Something}'' prints **"Something"**.
+%%%
+\NewDocumentCommand{\tdocquote}{ m }{%
+ \enquote{\emph{#1}}%
+}
+
+
+% ============================== %
+% == EXPLAINING ENGLISH WORDS == %
+% ============================== %
+
+%%%
+% prototype::
+% #1 : (EN-text)
+% an english text that will be explained in another \lang.
+%
+% :extra: this macro has a star version.
+%
+% For example, if the language chosen is ''french'', we have
+% the following outputs.
+%
+% 1) ''\tdocinEN{Something}'' prints
+% **"Something" en anglais**.
+%
+% 2) ''\tdocinEN*{Something}'' just prints
+% **"Something"**.
+%
+% 3) ''\tdocinEN*{Something} et \tdocinEN{Another thing}''
+% gives
+% **"Something" et "Another thing" en anglais**.
+%%%
+\NewDocumentCommand{\tdocinEN}{ s m }{%
+ \IfBooleanTF{#1}{}{\tutodoc@trans@in@EN}%
+% We must activate the English typesetting rules.
+ {%
+ \tdocquote{\tutodoc@use@english{#2}}%
+ }%
+}
+
+
+
+% =========================== %
+% == HIGHLIGHTING CONTENTS == %
+% =========================== %
+
+% ---------------------- %
+% -- EXAMPLE & REMARK -- %
+% ---------------------- %
+
+\ExplSyntaxOn
+
+%%%
+% We use a ''seq'' variable to factorize the code just after.
+%%%
+\seq_new:N \g__tutodoc_focus_std_seq
+\seq_set_from_clist:Nn \g__tutodoc_focus_std_seq {
+ exa,
+ rem
+}
+
+
+%%%
+% Themes define specific vertical spacings.
+%%%
+\newkeytheoremstyle{tutodoc@admonition@exa@style}{
+ spaceabove = \tutodoc@admonition@space@below,
+ spacebelow = \tutodoc@admonition@space@below
+}
+
+%%%
+% prototype::
+% :action: looping over ''\g__tutodoc_focus_std_seq'' to build new
+% numbered theorems sharing the same section level counter.
+% To achieve that, we use the ''\newkeytheorem'' macro from
+% the ''keytheorems'' \pack.
+%%%
+\seq_map_inline:Nn \g__tutodoc_focus_std_seq {
+ \str_if_eq:nnTF { #1 } { exa } {
+ \newkeytheorem{tdoc#1}[
+ name = \use:c { tutodoc@trans@#1@title },
+ within = section,
+ style = tutodoc@admonition@exa@style
+ ]
+ } {
+ \newkeytheorem{tdoc#1}[
+ name = \use:c { tutodoc@trans@#1@title },
+ numberlike = tdocexa,
+ style = tutodoc@admonition@exa@style
+ ]
+ }
+
+ \cs_set:cpn { the tdoc #1 } { \thesection.\arabic{tdoc#1} }
+}
+
+\ExplSyntaxOff
+
+
+% ----------------- %
+% -- ADMONITIONS -- %
+% ----------------- %
+
+%%%
+% note::
+% We provide two ways to define admonitions.
+%
+% 1) ''\g__tutodoc_focus_color_prop'' and ''g__tutodoc_focus_icon_prop''
+% are for iconised and colored frames.
+%
+% 1) ''\g__tutodoc_focus_color_seq'' is to use a dedicated basic theorem
+% (this should be only useful for the draft theme).
+%
+%
+% warning::
+% The variables should be defined inside the themes!
+%
+%
+% refs::
+% + https://tex.stackexchange.com/a/727022/6880
+% + https://tex.stackexchange.com/a/682332/6880
+% + https://tex.stackexchange.com/a/623232/6880
+%%%
+\ifcsundef{g__tutodoc_focus_color_seq}{
+ \tcbset{
+ tutodoc-focus-color-style/.style = {
+% General.
+ use color stack, % Must be before breakable!
+ breakable,
+ enhanced,
+% Colors.
+ coltitle = \tutodoc@build@title@color{#1},
+ colupper = \tutodoc@build@upper@color{#1},
+ colback = \tutodoc@build@back@color{#1},
+ colframe = \tutodoc@build@frame@color{#1},
+% We want to use the same color for the footnotes in the frame.
+ before upper = {\let\default@color\current@color},
+% Padding.
+ left = 3pt,
+ right = 3pt,
+ arc = 2pt,
+% Frame.
+ shadow = {.75mm}{-.75mm}{0mm}{tutodoc@admonition@shadow@color},
+ }
+ }
+}{}
+
+\ExplSyntaxOn
+
+\ifcsundef{g__tutodoc_focus_color_seq}{
+%%%
+% prototype::
+% :action: ''key/value'' iteration over ''\g__tutodoc_focus_color_prop''
+% to build new colorful unumbered theorems. To achieve that,
+% we use a \tcolorbox style given to the ''\newkeytheorem''
+% macro from the ''keytheorems'' \pack, and icons from the
+% ''fontawesome5'' \pack.
+%%%
+ \prop_map_inline:Nn \g__tutodoc_focus_color_prop {
+ \newkeytheorem{tdoc#1}[
+ numbered = false,
+% tcolorbox-no-titlebar can be used.
+ tcolorbox = {tutodoc-focus-color-style=#2},
+ name = {
+ \tdocicon{ \prop_item:Nn \g__tutodoc_focus_icon_prop { #1 } }
+ \use:c { tutodoc@trans@#1@title }
+ }
+ ]
+ }
+} {
+%%%
+% prototype::
+% :action: looping over ''\g__tutodoc_focus_color_seq'' to build new
+% numbered theorems sharing the same section level counter.
+% To achieve that, we use the ''\newkeytheorem'' macro from
+% the ''keytheorems'' \pack.
+%%%
+ \seq_map_inline:Nn \g__tutodoc_focus_color_seq {
+ \newkeytheorem{tdoc#1}[
+ name = \use:c { tutodoc@trans@#1@title },
+ numberlike = tdocexa,,
+ style = tutodoc@admonition@exa@style,
+% Some hooks...
+ preheadhook = \small,
+ postheadhook = \leavevmode,
+ postfoothook = \normalsize
+ ]
+ }
+}
+
+\ExplSyntaxOff
+
+
+
+% ========================================= %
+% == \PACKS, \CLSS, MACROS & \ENVS NAMES == %
+% ========================================= %
+
+%%%
+% prototype::
+% #1 : (cls-name)
+% the name of a class
+%
+% :action: ''\tdoccls{myclass}'' prints verb::''myclass''.
+%%%
+\NewDocumentCommand{\tdoccls}{ m }{%
+ \texttt{#1}%
+}
+
+
+%%%
+% prototype::
+% #1 : (pck-name)
+% the name of a package
+%
+% :action:''\tdocpack{mypack}'' prints verb::''mypack''.
+%%%
+\NewDocumentCommand{\tdocpack}{ m }{%
+ \texttt{#1}%
+}
+
+
+%%%
+% prototype::
+% #1 : (cmd-name)
+% the name of a macro
+%
+% :action: ''\tdocmacro{mymacro}'' prints verb::''\mymacro''.
+%%%
+\NewDocumentCommand{\tdocmacro}{ m }{%
+ \texttt{\textbackslash{}#1}%
+}
+
+
+%%%
+% prototype::
+% #1 : (env-name)
+% the name of an environment
+%
+% :extra: this macro has a star version.
+%
+% Here are the different outputs available.
+%
+% 1) ''\tdocenv{myenv}'' prints
+% verb::''\begin{myenv} ... \end{myenv}''.
+%
+% 2) ''\tdocenv*{myenv}'' prints
+% verb::''myenv''.
+%%%
+\NewDocumentCommand{\tdocenv}{ s m }{%
+ \IfBooleanTF{#1}{%
+ \texttt{#2}%
+ }{%
+% Source: https://tex.stackexchange.com/a/703379/6880 .
+ \texttt{\string\begin\string{#2\string} %
+ \!\!...\@\!\!\! %
+ \string\end\string{#2\string}}%
+ }%
+}
+
+
+% ========================= %
+% == EXPLAINING PREFIXES == %
+% ========================= %
+
+\ExplSyntaxOn
+
+\msg_set:nnnn { tutodoc ~ (macroenv) }
+ { macroenv : prefix-why-bad-format }
+ { Bad ~ format, ~ something ~ like ~ ''pre.fix'' ~ expected. }
+ { You ~ must ~ use ~ one ~ single ~ point. }
+
+
+% -------------------- %
+% -- PREFIX FROM... -- %
+% -------------------- %
+
+\seq_new:N \l__tutodoc_prewhy_parts_seq
+\int_new:N \l__tutodoc_prewhy_nbparts_int
+\tl_new:N \l__tutodoc_pretext_tl
+\tl_new:N \l__tutodoc_posttext_tl
+
+
+%%%
+% prototype::
+% #1 : (pre.fix)
+% a prefix and a suffix separated by one colon.
+%
+% :action: ''\tdocprewhy{pre.fix}'' prints verb::''pre''.fix.
+%%%
+\NewDocumentCommand{\tdocprewhy}{ m }{%
+% Do we have 2 parts?
+ \seq_set_split:Nnn \l__tutodoc_prewhy_parts_seq { . } { #1 }
+
+ \int_set:Nn \l__tutodoc_prewhy_nbparts_int
+ {\int_eval:n {\seq_count:N \l__tutodoc_prewhy_parts_seq}}
+
+ \if_int_compare:w \l__tutodoc_prewhy_nbparts_int = 2
+ \else:
+ \msg_error:nn { tutodoc ~ (macroenv) }
+ { macroenv : prefix-why-bad-format }
+ \fi:
+
+% Let's go.
+ \seq_pop:NN \l__tutodoc_prewhy_parts_seq \l__tutodoc_pretext_tl
+ \seq_pop:NN \l__tutodoc_prewhy_parts_seq \l__tutodoc_posttext_tl
+
+ \textbf{
+ \tdocpre{\tl_use:N \l__tutodoc_pretext_tl}
+ \kern.5pt
+ \textperiodcentered
+ \kern.5pt
+ {\tl_use:N \l__tutodoc_posttext_tl}
+ }
+}
+
+\ExplSyntaxOff
+
+
+% --------------------- %
+% -- JUST ONE PREFIX -- %
+% --------------------- %
+
+%%%
+% prototype::
+% #1 : (pre)
+% just a prefix
+%
+% :action: ''\tdocpre{pre}'' only prints verb::''pre''.
+% This can be useful in a case like
+% ''\tdocpre{pre} comes from \tdocprewhy{pre}{fix}''
+% which prints:
+% verb::''pre'' comes from verb::''pre''-fix.
+%%%
+\NewDocumentCommand{\tdocpre}{ m }{%
+ \texttt{#1}%
+}
+
+
+
+% ======================== %
+% == TEXT BETWEEN RULES == %
+% ======================== %
+
+\ExplSyntaxOn
+
+\box_new:N \l__tutodoc_content_box
+\dim_new:N \l__tutodoc_content_dim
+
+
+%%%
+% prototype::
+% #1 : (color)
+% the color for the rule and the text
+% #2 : (text)
+% the text surrounded by two horizontal rules
+%
+% :action: this macro adds two horizontal lines on either side of the text.
+% The final output is centered.
+%
+% note::
+% The code used comes from
+% cf::''this post ;
+% https://tex.stackexchange.com/a/604708/6880''.
+%%%
+\NewDocumentCommand{\tdocruler}{
+ O{\tutodoc@showcase@rule@color}
+ m
+}{
+ \par
+ {
+ \centering
+ \scriptsize
+ \itshape
+ \bfseries
+ \color{#1}
+
+ \hbox_set:Nn \l__tutodoc_content_box { \,\, #2 \,\, }
+ \dim_set:Nn \l__tutodoc_content_dim {
+ .35 \linewidth - .5 \box_wd:N \l__tutodoc_content_box
+ }
+
+ \rule[.75pt] { \dim_use:N \l__tutodoc_content_dim }
+ { 2.5pt }
+ \box_use:N \l__tutodoc_content_box
+ \rule[.75pt] { \dim_use:N \l__tutodoc_content_dim }
+ { 2.5pt }
+ \par
+ }
+}
+
+\ExplSyntaxOff
+
+
+% ============== %
+% == SHOWCASE == %
+% ============== %
+
+% --------------------------- %
+% -- INTERNAL ENVIRONMENTS -- %
+% --------------------------- %
+
+%%%
+% prototype::
+% #1 : (up-text)
+% the descriptive text before the real output
+% #2 : (down-text)
+% the descriptive text after the real output
+% #3 : (color)
+% one color used to set the one for the decorated texts printed
+% corresponding to the two first arguments.
+% #4 : (rule color builder)
+% the macro used to build the color from the user's rule color
+%
+% :action: this environment just adds its content processed by \latex
+% between centered materials produced by the macro ''\tdocruler''
+% such as to stress the start and the end of the content.
+%%%
+\NewDocumentEnvironment{tutodoc@showcase@rules}{ m m m m }{%
+ \tdocruler[#4{#3}]{#1}%
+ \nopagebreak\medskip\nopagebreak%
+}{%
+ \nopagebreak\medskip\nopagebreak%
+ \tdocruler[#4{#3}]{#2}%
+}
+
+
+%%%
+% prototype::
+% #1 .. #4 : :see: env.tutodoc@showcase@rules
+% #5 : (back color builder)
+% the macro used to build the color from the user's back color
+%
+% :action: this environment adds a page-width colored stripe in the
+% background of the environment content processed by \latex.
+% This stripe is preceded and followed by centered materials
+% produced by the macro ''\tdocruler'' such as to stress the
+% start and the end of the content.
+%%%
+\NewDocumentEnvironment{tutodoc@showcase@colorstrip}{ m m m m m }{
+ \begin{colorstrip}{#5{#3}}%
+ \begin{tutodoc@showcase@rules}{#1}{#2}{#3}{#4}%
+}{%
+ \end{tutodoc@showcase@rules}%
+ \end{colorstrip}
+}
+
+
+\ExplSyntaxOn
+
+% ----------------------- %
+% -- SETTING SOME KEYS -- %
+% ----------------------- %
+
+\tl_new:N \g_tutodoc_showcase_style_tl
+\tl_new:N \l_tutodoc_showcase_before_tl
+\tl_new:N \l_tutodoc_showcase_after_tl
+\tl_new:N \l_tutodoc_showcase_stripe_color_tl
+\tl_new:N \l_tutodoc_showcase_text_color_tl
+
+
+%%%
+% prototype::
+% col-stripe : the color of the stripe
+% col-text : the color of the descriptive texts
+% nostripe : a boolean flag to avoid the use of a stripe
+% before : the descriptive text before the real output
+% after : the descriptive text after the real output
+%%%
+\keys_define:nn { tutodoc / showcase } {
+% Style?
+ style .choices:nn = {
+ minimal,
+ rule,
+ stripe
+ } {
+ \tl_gset:Nx \g_tutodoc_showcase_style_tl {#1}
+ },
+% Colors.
+ col-stripe .tl_set:N = \l_tutodoc_showcase_stripe_color_tl,
+ col-stripe .initial:n = \tutodoc@showcase@stripe@color,
+ col-text .tl_set:N = \l_tutodoc_showcase_text_color_tl,
+ col-text .initial:n = \tutodoc@showcase@text@color,
+% Texts.
+ before .tl_set:N = \l_tutodoc_showcase_before_tl,
+ before .initial:n = \tutodoc@trans@latex@show@start,
+ after .tl_set:N = \l_tutodoc_showcase_after_tl,
+ after .initial:n = \tutodoc@trans@latex@show@end,
+}
+
+
+% ------------------------------ %
+% -- SHOWCASE FROM TYPED CODE -- %
+% ------------------------------ %
+
+% prototype::
+% #1 : (key-val options)
+% :see: l3keys(tutodoc / showcase)
+%
+% :action: this \env formats \latex code, given as an argument,
+% by framing it with texts decorated by ''\tdocruler'',
+% in order to clearly identify a rendering used as an
+% example.
+% It is also possible to have a coloured strip of the width
+% of the page in the background of the content.
+%
+% :see: env.tutodoc@showcase@rules ,
+% env.tutodoc@showcase@colorstrip
+%%%
+\NewDocumentEnvironment{tdocshowcase}{ O{} }{
+ \group_begin:
+ \tl_gset:Nn \g_tutodoc_showcase_style_tl {minimal}
+ \keys_set:nn { tutodoc / showcase } { #1 }
+
+ \str_case:Nn { \g_tutodoc_showcase_style_tl } {
+ { minimal } {
+ \smallskip\par
+ }
+ { rule } {
+ \smallskip
+ \begin{tutodoc@showcase@rules}
+ { \tl_use:N \l_tutodoc_showcase_before_tl }
+ { \tl_use:N \l_tutodoc_showcase_after_tl }
+ { \tl_use:N \l_tutodoc_showcase_stripe_color_tl }
+ { \tutodoc@showcase@build@rule@color }
+ }
+ { stripe } {
+ \begin{tutodoc@showcase@colorstrip}
+ { \tl_use:N \l_tutodoc_showcase_before_tl }
+ { \tl_use:N \l_tutodoc_showcase_after_tl }
+ { \tl_use:N \l_tutodoc_showcase_stripe_color_tl }
+ { \tutodoc@showcase@build@rule@color }
+ { \tutodoc@showcase@build@back@color }
+ }
+ }
+
+ \color{ \tl_use:N \l_tutodoc_showcase_text_color_tl }
+}{
+ \str_case:Nn { \g_tutodoc_showcase_style_tl } {
+ { rule } {
+ \end{tutodoc@showcase@rules}
+ }
+ { stripe } {
+ \end{tutodoc@showcase@colorstrip}
+ }
+ }
+ \group_end:
+}
+
+
+% ------------------------ %
+% -- SHOWCASE FROM FILE -- %
+% ------------------------ %
+
+\tl_new:N \l__tutodoc_showcase_options_tl
+
+
+%%%
+% prototype::
+% #1 : (key-val options)
+% :see: env.tdocshowcase
+% #2 : (file path)
+% the path of a file
+%%%
+\NewDocumentCommand{\tdocshowcaseinput}{ O{} m }{
+ \begin{tdocshowcase}[#1]
+ \input{#2}
+ \end{tdocshowcase}
+}
+
+\ExplSyntaxOff
+
+
+
+% ==================== %
+% == LATEX EXAMPLES == %
+% ==================== %
+
+% ----------------------------- %
+% -- INLINE LATEX CODE MACRO -- %
+% ----------------------------- %
+
+%%%
+% See the \doc of the macro ''\newmintinline'' from the package \minted
+% to have \infos about the macro ''tdoclatexin''.
+%%%
+\newmintinline[tdoclatexin]{\tutodoc@latex@lexer}{
+ bgcolor = tutodoc@latex@back@color,
+ style/.expand once = \tutodoc@latex@style
+}
+
+
+% ------------------------------------------------ %
+% -- MINTED/TCOLORBOX LATEX LISTING ENVIRONMENT -- %
+% ------------------------------------------------ %
+
+%%%
+% prototype::
+% #1 : (minted-like-options)
+% a list of legal \minted options.
+% #2 : (tcolorbox-styling-commands)
+% you can override the default \tcolorbox settings with the help
+% of the macro ''\tdoctcb''.
+%
+% :see: macro.tdoctcb
+%
+% refs::
+% + https://tex.stackexchange.com/a/604821/6880
+% + https://tex.stackexchange.com/a/327983/6880
+%%%
+\tcbset{
+ tutodoc-latex-listing-style/.style 2 args = {
+% General.
+ minted language/.expand once = \tutodoc@latex@lexer,
+ minted style/.expand once = \tutodoc@latex@style,
+ breakable,
+ enhanced,
+% Colors.
+ colframe = tutodoc@latex@frame@color,
+ colback = tutodoc@latex@back@color,
+ colupper = tutodoc@latex@text@color,
+ collower = tutodoc@latex@text@color,
+% Padding.
+ boxsep = 0pt,
+ left = \tutodoc@latex@left@len,
+ right = \tutodoc@latex@right@len,
+ bottom = \tutodoc@latex@bottom@len,
+ top = \tutodoc@latex@top@len,
+% Frame.
+ shadow = {\tutodoc@latex@shadow@xshift@len}%
+ {\tutodoc@latex@shadow@yshift@len}%
+ {\tutodoc@latex@shadow@offset@len}%
+ {tutodoc@latex@shadow@color},
+ arc = \tutodoc@latex@arc@len,
+ leftrule = \tutodoc@latex@left@rule@len,
+ rightrule = \tutodoc@latex@right@rule@len,
+ bottomrule = \tutodoc@latex@bottom@rule@len,
+ toprule = \tutodoc@latex@top@rule@len,
+% Separating line.
+ segmentation style = {
+ tutodoc@latex@segment@color,
+ dash pattern = {on 5pt off 2.5pt},
+ line width = .75pt
+ },
+% Extra minted otpions.
+ minted options = {#1},
+% Extra tcolorbox styles.
+ #2
+ },
+}
+
+
+%%%
+% prototype::
+% #1 : (minted-like-options)
+% :see: tcbset(tutodoc-latex-listing-style)
+% #2 : (tcolorbox-styling-commands)
+% :see: tcbset(tutodoc-latex-listing-style)
+%
+% note::
+% See the \doc of the macro ''\newtcblisting'' from the package
+% \tcolorbox to have \infos about the environment ''tdoclatex''.
+%%%
+\NewTCBListing{tdoclatex}{ O{} D<>{} }{%
+ tutodoc-latex-listing-style = {#1}{#2}
+}
+
+
+% -------------------------------------- %
+% -- TCOLORBOX IMPORTED LISTING MACRO -- %
+% -------------------------------------- %
+
+%%%
+% prototype::
+% #1 : (minted-like-options)
+% :see: tcbset(tutodoc-latex-listing-style)
+% #2 : (tcolorbox-styling-commands)
+% :see: tcbset(tutodoc-latex-listing-style)
+% #3 : (file path)
+% the path of the file to input and format.
+%
+% note::
+% See the \doc of the macro ''\newtcbinputlisting'' from the package
+% \tcolorbox to have more \infos about the macro ''\tdoclatexinput''.
+%%%
+\NewTCBInputListing{\tdoclatexinput}{ O{} D<>{} m }{
+ listing file = {#3},
+ tutodoc-latex-listing-style = {#1}{#2}
+}
+
+
+% ===================== %
+% == LATEX USE CASES == %
+% ===================== %
+
+\ExplSyntaxOn
+
+% --------------------- %
+% -- SETTING THE KEY -- %
+% --------------------- %
+
+\tl_new:N \l_tutodoc_listing_explain_tl
+
+
+%%%
+% prototype::
+% explain : the text between the code and its highlighted output.
+%
+% note::
+% This key can be used in addition to those of the ''tdocshowcase''
+% \env,
+%%%
+\keys_define:nn { tutodoc / listing / latexshow } {
+ explain .tl_set:N = \l_tutodoc_listing_explain_tl,
+ explain .initial:n = { \tutodoc@trans@this@gives \tutodoc@colon },
+}
+
+
+% --------------------- %
+% -- LATEXSHOW MACRO -- %
+% --------------------- %
+
+\tl_new:N \l__tutodoc_showcase_options_passed_tl
+
+
+%%%
+% prototype::
+% #1 : (key-val options)
+% :see: l3keys(tutodoc / listing / latexshow) ,
+% l3keys(tutodoc / showcase)
+% #2 : (file path)
+% the path of a file
+%
+% :see: env.tdocshowcase ,
+% macro.tdoclatexinput
+%%%
+\NewDocumentCommand{\tdoclatexshow}{ O{} m} {
+ \group_begin:
+ \keys_set_known:nnN { tutodoc / listing / latexshow }
+ { #1 }
+ \l__tutodoc_showcase_options_passed_tl
+
+ \tdoclatexinput<\tdoctcb{code}>{#2}
+
+ \tl_use:N \l_tutodoc_listing_explain_tl
+
+% Source: https://tex.stackexchange.com/a/696700/6880
+ \exp_last_unbraced:NNV \tdocshowcaseinput [\l__tutodoc_showcase_options_passed_tl] {#2}
+ \group_end:
+}
+
+\ExplSyntaxOff
+
+
+
+% ========================= %
+% == LISTINGS - AGNOSTIC == %
+% ========================= %
+
+% ---------------------------------- %
+% -- DOES THE THEME AVOID LEXERS? -- %
+% ---------------------------------- %
+
+\NewExpandableDocumentCommand{\tutodoc@code@lexer}{ m }{%
+ \ifcodenolexer text\else #1\fi%
+}
+
+
+% ---------------------------------- %
+% -- INLINE GENERALIST CODE MACRO -- %
+% ---------------------------------- %
+
+%%%
+% prototype::
+% #1 : (minted-like-options)
+% a list of legal \minted options.
+% #2 : (coding-lang)
+% the name of the \minted lexer corresponding to the coding langage
+% for the formating.
+%
+% warning::
+% There are only two arguments, because the \mintinline macro will eat
+% the bit of inline code to be colored.
+%%%
+\NewDocumentCommand{\tdoccodein}{ O{} m }{%
+ \mintinline[
+ bgcolor = tutodoc@code@back@color,
+ style/.expand once = \tutodoc@code@style,
+ #1
+ ]{\tutodoc@code@lexer{#2}}%
+}
+
+
+% ----------------------------------------------------- %
+% -- MINTED/TCOLORBOX GENERALIST LISTING ENVIRONMENT -- %
+% ----------------------------------------------------- %
+
+%%%
+% prototype::
+% #1 : (minted-like-options)
+% :see: macro.tdoccodein
+% #2 : (tcolorbox-styling-commands)
+% you can override the default \tcolorbox settings with the help
+% of the macro ''\tdoctcb''.
+% #3 : (coding-lang)
+% :see: macro.tdoccodein
+%
+% :see: macro.tdoctcb
+%
+% refs::
+% + https://tex.stackexchange.com/a/604821/6880
+% + https://tex.stackexchange.com/a/327983/6880
+%%%
+\tcbset{
+ tutodoc-full-listing-style/.style n args = {3}{
+% General.
+ minted style/.expand once = \tutodoc@code@style,
+ minted language/.expand once = \tutodoc@code@lexer{#3},
+ breakable,
+ enhanced,
+% Colors.
+ colframe = tutodoc@code@frame@color,
+ colback = tutodoc@code@back@color,
+ colupper = tutodoc@code@text@color,
+ collower = tutodoc@code@text@color,
+% Padding.
+ boxsep = 0pt,
+ left = \tutodoc@code@left@len,
+ right = \tutodoc@code@right@len,
+ bottom = \tutodoc@code@bottom@len,
+ top = \tutodoc@code@top@len,
+% Frame.
+ shadow = {\tutodoc@code@shadow@xshift@len}%
+ {\tutodoc@code@shadow@yshift@len}%
+ {\tutodoc@code@shadow@offset@len}%
+ {tutodoc@code@shadow@color},
+ arc = \tutodoc@code@arc@len,
+ leftrule = \tutodoc@code@left@rule@len,
+ rightrule = \tutodoc@code@right@rule@len,
+ bottomrule = \tutodoc@code@bottom@rule@len,
+ toprule = \tutodoc@code@top@rule@len,
+% Separating line.
+ segmentation style = {
+ tutodoc@code@segment@color,
+ dash pattern = {on 5pt off 2.5pt},
+ line width = .75pt
+ },
+ listing only,
+% Extra minted otpions.
+ minted options = {#1},
+% Extra tcolorbox styles.
+ #2
+ },
+}
+
+
+%%%
+% prototype::
+% #1 : (minted-like-options)
+% :see: macro.tdoccodein
+% #2 : (tcolorbox-styling-commands)
+% :see: \tcbset{tutodoc-full-listing-style}
+% #3 : (coding-lang)
+% :see: macro.tdoccodein
+%
+% note::
+% See the \doc of the macro ''\NewTCBListing'' from the package
+% \tcolorbox to have \infos about the environment ''tdoccode''.
+%%%
+\NewTCBListing{tdoccode}{ O{} D<>{} m }{%
+ tutodoc-full-listing-style = {#1}{#2}{#3}
+}
+
+
+% -------------------------------------- %
+% -- TCOLORBOX IMPORTED LISTING MACRO -- %
+% -------------------------------------- %
+
+%%%
+% prototype::
+% #1 : (minted-like-options)
+% :see: macro.tdoccodein
+% #2 : (tcolorbox-styling-commands)
+% :see: \tcbset{tutodoc-full-listing-style}
+% #3 : (coding-lang)
+% :see: macro.tdoccodein
+% #4 : (file path)
+% the path of the file to input and format.
+%
+% note::
+% See the \doc of the macro ''\NewTCBInputListing'' from the package
+% \tcolorbox to have more \infos about the macro ''\tdoccodeinput''.
+%%%
+\NewTCBInputListing{\tdoccodeinput}{ O{} D<>{} m m }{
+ listing file = {#4},
+ tutodoc-full-listing-style = {#1}{#2}{#3}
+}
+
+
+
+% == CHANGES - WHEN? --%
+
+\ExplSyntaxOn
+
+\msg_set:nnnn { tutodoc ~ (version-n-change) }
+ { version-n-change : date-bad-format }
+ { Bad ~ format ~ for ~ a ~ date. }
+ { Use ~ YYYY-MM-DD. }
+
+
+% ----------------- %
+% -- MARGIN NOTE -- %
+% ----------------- %
+
+\reversemarginpar{}
+
+%%%
+% prototype::
+% #1 : (color)
+% the color of the margin note
+% #2 : (up-text)
+% the first material (a version number or nothing)
+% #3 : (down-text)
+% the second material (a date or nothing)
+% #4 : (spacing)
+% the last negative vertical spacing for the 2nd rule
+% #5 : (vertical offset)
+% algebraic distance to move vertically the material
+%
+% :action: this macro factorizes the printing of the changes
+% in the left margin.
+%
+% :see: \__tutodoc_translate_date:n
+%%%
+\NewDocumentCommand{\tutodoc@new@change@margin}{ m m m m m }{
+ \marginnote{
+ \color{#1}
+ \scriptsize
+ \normalfont
+ \centering
+
+ \vspace{0pt}
+ \rule{1.65cm}{.95pt}
+ \vspace{-2.9pt}
+
+ \IfBlankTF{#2}{}{
+ \par
+ #2\vphantom{Mp}
+ \par
+ }
+
+ \IfBlankTF{#3}{}{
+ \IfBlankTF{#2}{}{
+ \vspace{1pt}
+ }
+
+ \par
+ \__tutodoc_translate_date:n { #3 }
+ \vphantom{Mp}
+ \par
+ }
+
+ \vspace{#4}
+ \rule{1.65cm}{.95pt}
+ }[#5]
+}
+
+
+%%%
+% prototype::
+% #1 : (EN-num-date)
+% a content that should have the numerical English date
+% format ''YYYY-MM-DD''.
+%
+% :action: this function checks if we have something like
+% ''YYYY-MM-DD'', and then it calls the function
+% ''\__tutodoc_translate_date_process:w'' to
+% activate the transformation to the locale format.
+%
+% :see: \__tutodoc_translate_date_process:w
+%%%
+\cs_new:Nn \__tutodoc_translate_date:n {
+ \regex_match:nnTF { \A \d{1,4} \- \d{2} \- \d{2} \Z } { #1 }{
+ \__tutodoc_translate_date_process:w #1 \q_stop
+ }{
+ \msg_error:nn { tutodoc ~ (version-n-change) }
+ { version-n-change : date-bad-format }
+ }
+}
+
+
+%%%
+% prototype::
+% #1 : (year-extracted)
+% a 1 to 4 digits integer
+% #2 : (month-extracted)
+% a 2 digits integer
+% #3 : (day-extracted)
+% a 2 digits integer
+%
+% :action: this function extracts year, month and day in something
+% like ''YYYY-MM-DD'' and then it calls ''\tutodoc@trans@date''
+% to use the format expected for a "localised" date.
+%%%
+\cs_new:Npn \__tutodoc_translate_date_process:w #1 - #2 - #3 \q_stop {
+ \tutodoc@trans@date{#1}{#2}{#3}
+}
+
+\ExplSyntaxOff
+
+
+% ---------------------- %
+% -- VERSION AND DATE -- %
+% ---------------------- %
+
+\newlength{\tutodoc@version@date@vertical@sep@len}
+\setlength{\tutodoc@version@date@vertical@sep@len}{-4.25pt}
+
+\newlength{\tutodoc@version@date@vertical@offset@len}
+\setlength{\tutodoc@version@date@vertical@offset@len}{-8pt}
+
+
+%%%
+% prototype::
+% #1 : (color)
+% the color of the margin note
+% #2 : (version)
+% a version number
+% #3 : (date)
+% a date ''YYYY-MM-DD''
+% #4 : (vertical offset)
+% algebraic distance to move vertically the material
+%
+% :action: this macro prints a margin note showing a version number
+% below a date, and the optional argument is used to colorize
+% all this text.
+%
+% warning::
+% The date must use an english formatting like ''2021-07-14''. This allows
+% to parse the date such as to display it following the standard convention
+% of the language chosen when loading the package.
+%%%
+\NewDocumentCommand{\tdocversion}{ %
+ O{\tutodoc@changes@when@color} %
+ m %
+ O{} %
+ D<>{\tutodoc@version@date@vertical@offset@len}%
+}{
+ \tutodoc@new@change@margin%
+ {#1} % Color
+ {#2} % Version
+ {#3} % Date
+ {\tutodoc@version@date@vertical@sep@len} % Last negative vertical spacing
+ {#4} % Vertical offset
+}
+
+
+% ---------- %
+% -- DATE -- %
+% ---------- %
+
+%%%
+% prototype::
+% #1 : (color)
+% the color of the margin note
+% #2 : (date)
+% a date ''YYYY-MM-DD''
+% #3 : (vertical offset)
+% algebraic distance to move vertically the material
+%
+% :action: this macro is similar to ''\tdocversion'' except that it just
+% prints a date.
+%%%
+\NewDocumentCommand{\tdocdate}{
+ O{\tutodoc@changes@when@color}
+ m
+ D<>{\tutodoc@version@date@vertical@offset@len}
+}{
+ \tutodoc@new@change@margin%
+ {#1} % Color
+ {} % Version
+ {#2} % Date
+ {\tutodoc@version@date@vertical@sep@len} % Last negative spacing
+ {#3} % Vertical offset
+}
+
+
+% ===================== %
+% == CHANGES - WHAT? == %
+% ===================== %
+
+\ExplSyntaxOn
+
+\msg_set:nnnn { tutodoc ~ (version-n-change) }
+ { version-n-change : topic-missing-title }
+ { Missing ~ title. }
+ { One ~ single ~ title ~ must ~ be ~ indicated. }
+
+
+% ------------------- %
+% -- GENERIC TOPIC -- %
+% ------------------- %
+
+\tl_new:N \l_tutodoc_topic_what_color_tl
+\tl_new:N \l_tutodoc_topic_when_color_tl
+\tl_new:N \l_tutodoc_topic_date_tl
+\tl_new:N \l_tutodoc_topic_version_tl
+
+
+%%%
+% prototype::
+% col : the color of the full content of a topic \env
+% col-chges : the color of the material for changes for a topic \env
+% date : the date of the changes a topic \env
+% version : the number version of the changes a topic \env
+%%%
+\keys_define:nn { tutodoc / version-n-change / topic / options } {
+% Colors.
+ col .tl_set:N = \l_tutodoc_topic_what_color_tl,
+ col .initial:n = tutodoc@text@color,
+ col-chges .tl_set:N = \l_tutodoc_topic_when_color_tl,
+ col-chges .initial:n = \tutodoc@changes@when@color,
+% Date.
+ date .tl_set:N = \l_tutodoc_topic_date_tl,
+ date .initial:n = \c_empty_tl,
+% Version.
+ version .tl_set:N = \l_tutodoc_topic_version_tl,
+ version .initial:n = \c_empty_tl,
+}
+
+\tl_new:N \l__tutodoc_topic_all_user_options_tl
+
+
+%%%
+% For themes using icons, we need a specific paragraph with less vertical
+% space consuming.
+%%%
+\ifcsundef{g__tutodoc_topic_change_seq}{
+ \newcommand{\tutodoc@what@change@paragraph}{%
+ \@startsection{paragraph} %
+ {4} % Level 4 (after section and co)
+ {\z@} % No indentation before the title
+ {1.25ex \@plus 1ex \@minus .2ex} % Vertical space before:
+ % 2ex with flexibility (+1ex / -0.2ex)
+ {-1em} % Negative spacing after
+ % ==> Title slightly aligned to the left.
+ {\normalfont\normalsize % Title style
+ \bfseries\sffamily} %
+ }
+}{}
+
+
+%%%
+% prototype::
+% #1 : (title)
+% a title that will be followed by a colon.
+% #2 : (aws-icon)
+% one material that expects to be an icon command from the
+% ''fontawsome5'' \pack
+% #3 : (key-val options)
+% :see: l3keys(tutodoc / version-n-change / topic / options)
+%
+% :action: this environment prints some \infos about specific changes
+% achieved in a new version (no special formatting is applied).
+% Key-val options allow to add a date \andor a \nbver with
+% a specific color if needed.
+%%%
+\NewDocumentEnvironment{tdoctopic}{ m D<>{} O{} }{
+ \IfBlankT{#1}{
+ \msg_fatal:nn { tutodoc ~ (version-n-change) }
+ { version-n-change : topic-missing-title }
+ }
+
+ \keys_set:nn { tutodoc / version-n-change / topic / options } { #3 }
+
+ \tl_clear:N \l__tutodoc_topic_all_user_options_tl
+ \tl_set_eq:NN \l__tutodoc_topic_all_user_options_tl \l_tutodoc_topic_version_tl
+ \tl_put_right:Nn \l__tutodoc_topic_all_user_options_tl { \l_tutodoc_topic_date_tl }
+
+ \group_begin:
+ \color{\tl_use:N \l_tutodoc_topic_what_color_tl}
+
+ \ifcsundef{g__tutodoc_topic_change_seq}{{}
+% Icon used by the theme.
+ \tutodoc@what@change@paragraph{
+ \color{\tl_use:N \l_tutodoc_topic_what_color_tl}
+ \IfBlankF{#2}{\tdocicon{#2}}
+ \textsc{#1.}
+ }
+ }{
+% No icon used by the theme.
+ \smallskip
+ {
+ \normalfont\normalsize\bfseries\sffamily
+ \textsc{#1.}
+ }
+ }
+
+% A date and/or a version.
+ \exp_args:Ne \IfBlankF{\l__tutodoc_topic_all_user_options_tl}{
+ \exp_args:NNee \tutodoc@new@change@margin
+ {\l_tutodoc_topic_when_color_tl}
+ {\l_tutodoc_topic_version_tl}
+ {\l_tutodoc_topic_date_tl}
+ {\tutodoc@version@date@vertical@sep@len}
+ {\tutodoc@version@date@vertical@offset@len}
+ }
+
+ \begin{itemize}
+}{
+ \end{itemize}
+ \group_end:
+}
+
+
+% ---------------------- %
+% -- CLASSICAL TOPICS -- %
+% ---------------------- %
+
+%%%
+% prototype::
+% :see: env.tdoctopic
+%
+% :action: ''key/value'' iteration over ''\g__tutodoc_topic_change_prop''
+% to build topic-like \envs using the \env ''tdoctopic''
+% (the title respects the locale settings).
+%%%
+\ifcsundef{g__tutodoc_topic_change_seq}{
+ \prop_map_inline:Nn \g__tutodoc_topic_change_prop {
+ \NewDocumentEnvironment{ tdoc#1 } { O{} } {
+ \begin{tdoctopic}{ \use:c { tutodoc@trans@chges@#1 } } < #2 > [##1]
+ }{
+ \end{tdoctopic}
+ }
+ }
+}{
+ \seq_map_inline:Nn \g__tutodoc_topic_change_seq {
+ \NewDocumentEnvironment{ tdoc#1 } { O{} } {
+ \begin{tdoctopic}{ \use:c { tutodoc@trans@chges@#1 } } [##1]
+ }{
+ \end{tdoctopic}
+ }
+ }
+}
+
+
+%%%
+% prototype::
+% #1 : (color-content)
+% the color of the full content
+% #2 : (short-desc)
+% a short text expected to indicate the very first version of a project.
+%
+% :action: the short text printed will be preceded by a pretty anchor icon.
+%%%
+\NewDocumentCommand{ \tdocstartproj }{
+ O{tutodoc@text@color}
+ m
+} {
+ \group_begin:
+ \color{#1}
+ \ifcsundef{g__tutodoc_topic_change_seq}{
+% Icon used.
+ \tdocicon{\tutodoc@changes@start@project@icon}
+ }{
+% No icon used.
+ \raisebox{4pt}{\normalfont\tiny\bfseries\sffamily[Init]}\kern2pt
+ }
+
+ #2
+ \group_end:
+}
+
+\ExplSyntaxOff
+
+
+
+% ================ %
+% == DECORATION == %
+% ================ %
+
+% refs::
+% + https://tex.stackexchange.com/a/130529/6880
+% (for the leaders trick)
+% + https://tex.stackexchange.com/a/269887/6880
+% (for the \hrule width)
+% + https://tex.stackexchange.com/a/729710/6880
+% (centering the \hrule)
+
+\newlength{\tutodoc@vertical@space@deco@len}
+\setlength{\tutodoc@vertical@space@deco@len}{\dimeval{2\medskipamount+1.25pt}}
+
+
+%%%
+% prototype::
+% :action: this macro draws a centered horizontal rule with a height
+% of qty::''0.75 pt'', and a width equal to half of the current
+% text width, and extra vertical spaces are added above and
+% below the rule.
+%
+% :see: len.tutodoc@vertical@space@deco@len
+%%%
+\newcommand{\tdocsep}{
+ \par
+ \cleaders
+ \vbox to \tutodoc@vertical@space@deco@len{
+ \vfill\centerline{\vrule width 0.5\hsize height 0.75pt}\vfill
+ }\vskip\tutodoc@vertical@space@deco@len
+}
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc.sty
deleted file mode 100644
index a1e0acdd130..00000000000
--- a/Master/texmf-dist/tex/latex/tutodoc/tutodoc.sty
+++ /dev/null
@@ -1,1078 +0,0 @@
-% ------------------------------------------------------- %
-% - This is file `tutodoc.sty' generated automatically. - %
-% - - %
-% - Copyright (C) 2023-2024 by Christophe BAL - %
-% - - %
-% - This file may be distributed and/or modified under - %
-% - the conditions of the GNU 3 License. - %
-% ------------------------------------------------------- %
-
-\ProvidesExplPackage
- {tutodoc}
- {2024-08-23} % Creation: 2023-11-29
- {1.2.0-a}
- {This package proposes tools for writing "human friendly" documentations of LaTeX packages.}
-
-\RequirePackage[
- top = 2.5cm,
- bottom = 2.5cm,
- left = 2.5cm,
- right = 2.5cm,
- marginparwidth = 2cm,
- marginparsep = 2mm,
- heightrounded
-]{geometry}%
- [2020-01-02]
-
-\RequirePackage[raggedright]%
- {titlesec}%
- [2021/07/05]
-
-\RequirePackage{tocbasic}
-
-\RequirePackage{xcolor}%
- [2022/06/12]
-
-\RequirePackage{hyperref}%
- [2023-02-07]
-
-
-% We delegate the management of quoting to the `csquotes' package,
-% which takes care of the linguistic parameters.
-\RequirePackage{csquotes}%
- [2022-09-14]
-
-
-\RequirePackage{amsthm}%
- [2017/09]
-
-
-\RequirePackage{clrstrip}%
- [2021-08-28]
-
-
-\RequirePackage{tcolorbox}[2023/06/19]
-\tcbuselibrary{minted, breakable, skins}
-
-
-\RequirePackage{marginnote}%
- [2023-09-07]
-
-
-% -- LOCALE LANG -- %
-
-\ExplSyntaxOn
-
-% :: SOME MESSAGES :: %
-
-\msg_set:nnnn { tdoc } { package-option-lang-unknown }
- { Unknown ~ language. }
- { See ~ the ~ documentation ~ for ~ the ~ supported ~ languages. }
-
-
-% :: SETTING SOME KEYS :: %
-
-\str_new:N \l_tdoc_opt_lang_str
-
-%%%
-% We define the key-val options that will be exposed by the package.
-%%%
-\keys_define:nn { tdoc } {
- lang .choices:nn =
- { french, english }
- {
- \tl_set:Nn \l_tdoc_opt_lang_str
- { \tl_use:N \l_keys_choice_tl }
- },
- lang .initial:n = english,
- lang / unknown .code:n =
- \msg_error:nnxxx { tdoc } { package-option-lang-unknown }
- { lang } % Name of choice key
- { french, english } % Valid choices
- { \exp_not:n {#1} } % Invalid choice given
-}
-
-\ProcessKeyOptions[tdoc]
-
-\ExplSyntaxOff
-
-
-% -- LOCALE SETTINGS -- %
-
-\NewDocumentCommand{\tutodoc@colon}{}{:}
-
-% We must take care of the colons, babel and spacing.
-\@ifpackageloaded{babel}{
- \iflanguage{french}{
- \RenewDocumentCommand{\tutodoc@colon}{}{\babelshorthand{:}}
- }{}
-}{}
-
-\ExplSyntaxOn
-
-\input{tutodoc-locale-main-\l_tdoc_opt_lang_str.cfg.sty}
-
-\ExplSyntaxOff
-
-
-% -- GENERAL SETTINGS -- %
-
-\setlength{\parindent}{0cm}
-
-
-% -- LINKS -- %
-
-\hypersetup{
- colorlinks,
- citecolor = orange!75!black,
- filecolor = orange!75!black,
- linkcolor = orange!75!black,
- urlcolor = orange!75!black
-}
-
-
-% -- TOC & Co. -- %
-
-\ifcsundef{chapter}%
- {}%
- {\renewcommand\thechapter{\Alph{chapter}.}}
-
-\renewcommand\thesection{\Roman{section}.}
-\renewcommand\thesubsection{\arabic{subsection}.}
-\renewcommand\thesubsubsection{\roman{subsubsection}.}
-
-\titleformat{\paragraph}[hang]%
- {\normalfont\normalsize\bfseries}%
- {\theparagraph}{1em}%
- {}
-
-\titlespacing*{\paragraph}%
- {0pt}%
- {3.25ex plus 1ex minus .2ex}%
- {0.5em}
-
-% Source
-% * https://tex.stackexchange.com/a/558025/6880
-\DeclareTOCStyleEntries[
- raggedentrytext,
- linefill = \hfill,
- indent = 0pt,
- dynindent,
- numwidth = 0pt,
- numsep = 1ex,
- dynnumwidth
-]{tocline}{
- chapter,
- section,
- subsection,
- subsubsection,
- paragraph,
- subparagraph
-}
-
-\DeclareTOCStyleEntry[indentfollows = chapter]{tocline}{section}
-
-
-% -- QUOTING -- %
-
-%%%
-% prototype::
-% #1 : a text to quote.
-%
-% For example, ''\tdocquote{Something}'' prints something like **"Something"**.
-%%%
-\NewDocumentCommand{\tdocquote}{m}{%
- \enquote{\emph{#1}}%
-}
-
-
-% -- EXPLAINING ENGLISH NAMES -- %
-
-%%%
-% prototype::
-% #1 : an english text to explain in another language.
-%
-% :extra: this macro has a star version.
-%
-% For example, if the language chosen is ''french'', we have
-% the following outputs.
-%
-% 1) ''\tdocinEN{Something}'' prints
-% **"Something" en anglais**.
-%
-% 2) ''\tdocinEN*{Something}'' just prints
-% **"Something"**.
-% This can be useful in a case like
-% ''\tdocinEN*{Something} et \tdocinEN{Another thing}''
-% which gives
-% **"Something" et "Another thing" en anglais**.
-%%%
-\NewDocumentCommand{\tdocinEN}{s m}{%
- \tdocquote{#2}%
- \IfBooleanF{#1}{% No star used.
- \ \tutodoc@trans@in@EN{}%
- }%
-}
-
-
-% -- FOCUS ON SOME CONTENT -- %
-
-% :: EXAMPLE - HIDDEN VERSIONS :: %
-
-%%%
-% See the \doc of the macro ''\newtheorem'' from the package ''amsthm''
-% to have \infos about the environment ''@@tdocexa@nb''.
-%%%
-\newtheorem{@@tdocexa@nb}{\tutodoc@trans@exa@title}%
- [subsubsection]
-
-%%%
-% We redefine the counter associated to the environment ''@@tdocexa@nb''
-% to obtain only one single arabic number.
-%%%
-\renewcommand{\the@@tdocexa@nb}{\arabic{@@tdocexa@nb}}
-
-
-%%%
-% See the \doc of the macro ''\newtheorem*'' from the package ''amsthm''
-% to have \infos about the environment ''@@tdocexa@no@nb''.
-%%%
-\newtheorem*{@@tdocexa@no@nb}{\tutodoc@trans@exa@title}
-
-
-% :: EXAMPLE - PUBLIC VERSION :: %
-
-\ExplSyntaxOn
-
-\msg_set:nnnn { tdoc } { env-tdocexa-unknown-option }
- { Unknown ~ rafters ~ option. }
- { See ~ the ~ documentation ~ for ~ the ~ supported ~ options. }
-
-\NewDocumentEnvironment{tdocexa}{D<>{nb} O{}}{
- \str_case:nnF { #1 } {
- { nb } {
- \begin{@@tdocexa@nb}[#2]
- }
- { nonb } {
- \begin{@@tdocexa@no@nb}[#2]
- }
- }{
- \msg_error:nn { tdoc } { env-tdocexa-unknown-option }
- }
-}{
- \str_case:nnF { #1 } {
- { nb } {
- \end{@@tdocexa@nb}
- }
- { nonb } {
- \end{@@tdocexa@no@nb}
- }
- }{}
-}
-
-\ExplSyntaxOff
-
-
-% :: REMARK :: %
-
-%%%
-% See the \doc of the macro ''\newtheorem*'' from the package ''amsthm''
-% to have \infos about the environment ''tdocrem''.
-%%%
-\newtheorem*{tdocrem}{\tutodoc@trans@rmk@title}
-
-
-% :: IMPORTANT :: %
-
-%%%
-% See the \doc of the macro ''\newtheorem*'' from the package ''amsthm''
-% to have \infos about the environment ''tdocimportant''.
-%%%
-\newtheorem*{tdocimportant}{\tutodoc@trans@important@title}
-
-
-% :: NOTE :: %
-
-%%%
-% See the \doc of the macro ''\newtheorem*'' from the package ''amsthm''
-% to have \infos about the environment ''tdocnote''.
-%%%
-\newtheorem*{tdocnote}{\tutodoc@trans@note@title}
-
-
-% :: TIP :: %
-
-%%%
-% See the \doc of the macro ''\newtheorem*'' from the package ''amsthm''
-% to have \infos about the environment ''tdoctip''.
-%%%
-\newtheorem*{tdoctip}{\tutodoc@trans@tip@title}
-
-
-% :: CUATION :: %
-
-%%%
-% See the \doc of the macro ''\newtheorem*'' from the package ''amsthm''
-% to have \infos about the environment ''tdoccaution''.
-%%%
-\newtheorem*{tdoccaution}{\tutodoc@trans@caution@title}
-
-
-% :: WARNING :: %
-
-%%%
-% See the \doc of the macro ''\newtheorem*'' from the package ''amsthm''
-% to have \infos about the environment ''tdocwarn''.
-%%%
-\newtheorem*{tdocwarn}{\tutodoc@trans@warn@title}
-
-
-% -- NAMES OF PACKAGES, MACROS & ENVIRONMENTS -- %
-
-%%%
-% prototype::
-% #1 : the name of a class
-%
-% :action: ''\tdoccls{myclass}'' prints verb::''myclass''.
-%%%
-\NewDocumentCommand{\tdoccls}{m}{%
- \texttt{#1}%
-}
-
-
-%%%
-% prototype::
-% #1 : the name of a package
-%
-% :action:''\tdocpack{mypack}'' prints verb::''mypack''.
-%%%
-\NewDocumentCommand{\tdocpack}{m}{%
- \texttt{#1}%
-}
-
-
-%%%
-% prototype::
-% #1 : the name of a macro
-%
-% :action: ''\tdocmacro{mymacro}'' prints verb::''\mymacro''.
-%%%
-\NewDocumentCommand{\tdocmacro}{m}{%
- \texttt{\textbackslash{}#1}%
-}
-
-
-%%%
-% prototype::
-% #1 : hard typed options with the good delimiters
-% #2 : the name of an environment
-%
-% :action: ''\tdocenv{myenv}'' prints verb::''\begin{myenv} ... \end{myenv}''
-% or something like verb::''\begin{myenv}<opt1> ... \end{myenv}'',
-% the spaces being secable.
-%%%
-%
-% Cleaner code from https://tex.stackexchange.com/a/703379/6880 .
-\NewDocumentCommand{\tdocenv}{O{}m}{%
- \texttt{\string\begin\string{#2\string}#1 %
- \!\!...\@\!\!\! %
- \string\end\string{#2\string}}%
-}
-
-
-% -- EXPLAINING PREFIXES -- %
-
-\ExplSyntaxOn
-
-% :: MESSAGES :: %
-
-\msg_set:nnnn { bdoc } { prefixwhy-bad-format }
-{ Bad ~ format, ~ something ~ like ~ ''pre.fix'' ~ expected. }
-{ You ~ must ~ use ~ one ~ single ~ point. }
-
-
-% :: PREFIX FROM... :: %
-
-%%%
-% prototype::
-% #1 : a prefix and a suffix separated by one colon.
-%
-% :action: ''\tdocprewhy{pre.fix}'' prints verb::''pre''.fix.
-%%%
-\NewDocumentCommand{\tdocprewhy}{m}{%
-% Do we have 2 parts?
- \seq_set_split:Nnn \l_tmpa_seq { . } { #1 }
-
- \int_set:Nn \l_tmpa_int
- {\int_eval:n {\seq_count:N \l_tmpa_seq}}
-
- \if_int_compare:w \l_tmpa_int = 2
- \else:
- \msg_error:nn { bdoc } { prefixwhy-bad-format }
- \fi:
-
-% Let's go.
- \seq_pop:NN \l_tmpa_seq \l_tmpa_tl
- \seq_pop:NN \l_tmpa_seq \l_tmpb_tl
-
- \textbf{\tdocpre{\tl_use:N \l_tmpa_tl}\kern.5pt\textperiodcentered\kern.5pt{\tl_use:N \l_tmpb_tl}}
-}
-
-\ExplSyntaxOff
-
-
-% :: JUST ONE PREFIX :: %
-
-%%%
-% prototype::
-% #1 : just a prefix
-%
-% :action: ''\tdocpre{pre}'' only prints verb::''pre''.
-% This can be useful in a case like
-% ''\tdocpre{pre} comes from \tdocprewhy{pre}{fix}''
-% which prints:
-% verb::''pre'' comes from verb::''pre''-fix.
-%%%
-\NewDocumentCommand{\tdocpre}{m}{%
- \texttt{#1}%
-}
-
-
-% -- GENERAL FORMATTING -- %
-
-% :: TEXT INSIDE A RULE :: %
-
-\ExplSyntaxOn
-
-%%%
-% prototype::
-% #1 : a text
-% #2 : a color
-%
-% :action: this macro adds two horizontal lines on either side of the text.
-% The final output is centered.
-%
-% note::
-% The code used comes from
-% cf::''this post ;
-% https://tex.stackexchange.com/a/604708/6880''.
-%%%
-\NewDocumentCommand{\tdocruler}{m m}{
- \par
- {
- \centering
- \scriptsize
- \itshape
- \bfseries
- \color{#2}
-
- \hbox_set:Nn \l_tmpa_box { \,\, #1 \,\, }
- \dim_set:Nn \l_tmpa_dim {
- .35 \linewidth - .5 \box_wd:N \l_tmpa_box
- }
-
- \rule[.75pt] { \dim_use:N \l_tmpa_dim }
- { 2.5pt }
- \box_use:N \l_tmpa_box
- \rule[.75pt] { \dim_use:N \l_tmpa_dim }
- { 2.5pt }
- \par
- }
-}
-
-\ExplSyntaxOff
-
-
-% :: COLOR TRANSFORMATIONS :: %
-
-%%%
-% prototype::
-% #1 : one color following the ''xcolor'' format.
-%
-% :return: a "darker" version of the color ''#1''.
-%%%
-\NewExpandableDocumentCommand{\tdocdarkcolor}{m}{%
- #1!50!black%
-}
-
-
-%%%
-% prototype::
-% #1 : one color following the ''xcolor'' format.
-%
-% :return: a "transparent" version of the color `#1`.
-%%%
-\NewExpandableDocumentCommand{\tdoclightcolor}{m}{%
- #1!5%
-}
-
-
-% :: INTERNAL ENVIRONMENTS :: %
-
-%%%
-% prototype::
-% #1 : the text before the real output
-% #2 : the text after the real output
-% #3 : one color following the ''xcolor'' format.
-% This color is used to set the one for the decorated texts printed
-% corresponding to the two first arguments.
-%
-% :action: this environment just adds its content processed by \latex
-% between centered materials produced by the macro ''\tdocruler''
-% such as to stress the start and the end of the content.
-%%%
-\NewDocumentEnvironment{tdoc@showcase@basic}{m m m}{
- \tdocruler{#1}{\tdocdarkcolor{#3}}
- \nopagebreak\medskip\nopagebreak
-}{
- \nopagebreak\medskip\nopagebreak
- \tdocruler{#2}{\tdocdarkcolor{#3}}
-}
-
-
-%%%
-% prototype::
-% #1 : the text before the real output
-% #2 : the text after the real output
-% #3 : the color following the ''xcolor'' format.
-% This color is used to set the ones of the stripe and the decorated
-% texts printed (see the two first arguments).
-%
-% :action: this environment adds a page-width colored stripe in the
-% background of the environment content processed by \latex.
-% This stripe is preceded and followed by centered materials
-% produced by the macro ''\tdocruler'' such as to stress the
-% start and the end of the content.
-%%%
-
-\NewDocumentEnvironment{tdoc@showcase@colorstrip}{m m m}{
- \begin{colorstrip}{\tdoclightcolor{#3}}
- \begin{tdoc@showcase@basic}{#1}{#2}{#3}
-}{
- \end{tdoc@showcase@basic}
- \end{colorstrip}
-}
-
-
-\ExplSyntaxOn
-
-% :: SETTING SOME KEYS :: %
-
-\tl_new:N \l_tdoc_showcase_before_tl
-\tl_new:N \l_tdoc_showcase_after_tl
-\tl_new:N \l_tdoc_showcase_color_tl
-\bool_new:N \l_tdoc_showcase_nostripe_bool
-
-
-%%%
-% prototype::
-% :see: env.tdocshowcase
-%
-% We define the key-val options that will be exposed by the \env
-% ''tdocshowcase''.
-%%%
-\keys_define:nn { tdoc/showcase } {
-% Texts.
- before .tl_set:N = \l_tdoc_showcase_before_tl,
- before .initial:n = \tutodoc@trans@latex@show@start,
- after .tl_set:N = \l_tdoc_showcase_after_tl,
- after .initial:n = \tutodoc@trans@latex@show@end,
-% Decorations.
- color .tl_set:N = \l_tdoc_showcase_color_tl,
- color .initial:n = cyan,
- nostripe .bool_set:N = \l_tdoc_showcase_nostripe_bool,
- nostripe .initial:n = false,
-}
-
-
-% :: SHOWCASE FROM TYPED CODE :: %
-
-% prototype::
-% #1 : the key-value options.
-%
-% :action: this \env formats \latex code, given as an argument,
-% by framing it with texts decorated by ''\tdocruler'',
-% in order to clearly identify a rendering used as an
-% example.
-% It is also possible to have a coloured strip of the width
-% of the page in the background of the content.
-%
-% :see: env.tdoc@showcase@basic ,
-% env.tdoc@showcase@colorstrip
-%%%
-\NewDocumentEnvironment{tdocshowcase}{ O{} }{
- \group_begin:
- \keys_set:nn { tdoc/showcase } { #1 }
-
- \bool_if:NTF \l_tdoc_showcase_nostripe_bool {
- \begin{tdoc@showcase@basic}%
- { \tl_use:N \l_tdoc_showcase_before_tl }%
- { \tl_use:N \l_tdoc_showcase_after_tl }%
- { \tl_use:N \l_tdoc_showcase_color_tl }
- }{
- \begin{tdoc@showcase@colorstrip}%
- { \tl_use:N \l_tdoc_showcase_before_tl }%
- { \tl_use:N \l_tdoc_showcase_after_tl }%
- { \tl_use:N \l_tdoc_showcase_color_tl }
- }
-}{
- \bool_if:NTF \l_tdoc_showcase_nostripe_bool {
- \end{tdoc@showcase@basic}
- }{
- \end{tdoc@showcase@colorstrip}
- }
- \group_end:
-}
-
-
-% :: SHOWCASE FROM FILE :: %
-
-%%%
-% prototype::
-% #1 : the key-value options supported by the ''tdocshowcase'' \env.
-% #2 : the path of a file
-%
-% :see: env.tdocshowcase
-%%%
-\NewDocumentCommand{\tdocshowcaseinput}{O{} m}{
- \group_begin:
- \keys_set_known:nnN { tdoc/latexshow } { #1 } \l_tmpa_tl
-
- \exp_last_unbraced:NNV \tdocshowcase [\l_tmpa_tl]
- \input{#2}
- \endtdocshowcase
- \group_end:
-}
-
-\ExplSyntaxOff
-
-
-% -- LATEX EXAMPLES -- %
-
-% :: INLINE SHORT LATEX CODE :: %
-
-%%%
-% See the \doc of the macro ''\newmintinline'' from the package ''minted''
-% to have \infos about the macro ''tdocinlatex''.
-%%%
-\newmintinline[tdocinlatex]{latex}{bgcolor = yellow!4}
-
-
-% :: SHORTCUTS FOR TCOLORBOX LISTING FORMATING :: %
-
-\ExplSyntaxOn
-
-%%%
-% In the following easy-to-understand macro, we use one fictive ''tcolorbox''
-% style such as to indicate an unknown ''tdoc'' style to the user.
-% For example, this can give one message similar to the following one.
-%
-% term::
-% Package pgfkeys Error: I do not know the key '/tcb/tdoclatex bad option
-% "NOT-A-STYLE"' and I am going to ignore it. Perhaps you misspelled it.
-%
-% See the pgfkeys package documentation for explanation.
-%%%
-\NewExpandableDocumentCommand{\tutodoc@latex@listing@formating}{ m }{
- \str_case:nnF { #1 } {
- { sbs } { listing ~ side ~ text }
- { code } { listing ~ only }
- { std } { listing ~ and ~ text }
- } { tdoclatex ~ bad ~ option ~ "#1" }
-}
-
-\ExplSyntaxOff
-
-
-% :: THE TCOLORBOX LISTING STYLE :: %
-
-%%%
-% note::
-% The settings used come from the following sources.
-% * https://tex.stackexchange.com/a/604821/6880
-% * https://tex.stackexchange.com/a/327983/6880
-%%%
-\tcbset{
- tdoclatex_tcbstyle/.style = {
- minted language = latex,
- breakable,
-% Code and output
- colback = yellow!5,
-% Frame
- colframe = darkgray,
- shadow = {.75mm}{-.75mm}{0mm}{black!30},
- arc = .75mm,
- left = 1mm, right = 1mm,
- bottom = 1mm, top = 1mm,
-% We can use ''sharp corners'' to obtain an "old school" style.
-%
-% Separating line
- enhanced,
- segmentation style = {
- gray,
- dash pattern = {on 5pt off 2.5pt},
- line width = 1.25pt
- },
- #1
- },
-}
-
-
-% :: TCOLORBOX LISTING ENVIRONMENT :: %
-
-%%%
-% prototype::
-% #1 : the style to be used (code only, code and output side by side,
-% or the standard style corresponding to the code followed by
-% its output)
-% @ #1 in [code, sbs, std]
-%
-% note::
-% See the \doc of the macro ''\newtcblisting'' from the package
-% ''tcolorbox'' to have \infos about the environment ''tdoclatex''.
-%%%
-\newtcblisting{tdoclatex}[1][std]{%
- tdoclatex_tcbstyle = \tutodoc@latex@listing@formating{#1}
-}
-
-
-% :: TCOLORBOX IMPORTED LISTING MACRO :: %
-
-%%%
-% prototype::
-% #1 : :see: \newtcblisting{tdoclatex}.
-% #2 : the path of the file to input and format.
-%
-% note::
-% See the \doc of the macro ''\newtcbinputlisting'' from the package
-% ''tcolorbox'' to have more \infos about the macro ''\tdoclatexinput''.
-%%%
-\newtcbinputlisting{\tdoclatexinput}[2][std]{
- listing file = {#2},
- tdoclatex_tcbstyle = \tutodoc@latex@listing@formating{#1}
-}
-
-
-% -- LATEX REAL USE CASES -- %
-
-\ExplSyntaxOn
-
-% :: SETTING SOME KEYS :: %
-
-\tl_new:N \l_tdoc_listing_explain_tl
-
-%%%
-% prototype::
-% :see: macro.tdoclatexshow
-%
-% We define the key-val options that will be exposed by ''\tdoclatexshow''.
-%%%
-\keys_define:nn { tdoc/latexshow } {
- explain .tl_set:N = \l_tdoc_listing_explain_tl,
- explain .initial:n = { \tutodoc@trans@this@gives \tutodoc@colon },
-}
-
-
-% :: LATEXSHOW MACRO :: %
-
-%%%
-% prototype::
-% #1 : the key-value options supported by the ''tdocshowcase'' \env,
-% plus one allowing you to change the description of a line
-% printed between the code and its focused output.
-% #2 : the path of a file
-%
-% :see: env.tdocshowcase ,
-% macro.tdoclatexinput
-%%%
-\NewDocumentCommand{\tdoclatexshow}{O{} m}{
- \group_begin:
- \keys_set_known:nnN { tdoc/latexshow } { #1 } \l_tmpa_tl
-
- \tdoclatexinput[code]{#2}
-
- \tl_use:N \l_tdoc_listing_explain_tl
-
-% Source: https://tex.stackexchange.com/a/696700/6880
- \exp_last_unbraced:NNV \tdocshowcaseinput [\l_tmpa_tl] {#2}
- \group_end:
-}
-
-\ExplSyntaxOff
-
-
-% -- CHANGES - WHEN? --%
-
-\ExplSyntaxOn
-
-% :: MESSAGES :: %
-
-\msg_set:nnnn { tdoc } { date-bad-format }
- { Bad ~ format ~ for ~ a ~ date. }
- { Use ~ YYYY-MM-DD. }
-
-
-% :: MARGIN NOTE :: %
-
-\reversemarginpar{}
-
-%%%
-% prototype::
-% #1 : the color of the margin note
-% #2 : the first material (a version number or nothing)
-% #3 : the second material (a date or nothing)
-% #4 : the last negative vertical spacing for the 2nd rule
-%
-% :action: this macro factorizes the printing of the changes
-% in the left margin.
-%
-% :see: \__tdoc_translate_date:n
-%%%
-\NewDocumentCommand{\tutodoc@new@change@margin}{m m m m}{
- \marginnote{
- \color{#1}
- \scriptsize
- \centering
-
- \vspace{0pt}
- \rule{1.65cm}{.95pt}
- \vspace{-2.9pt}
-
- \IfBlankTF{#2}{}{
- \par
- #2
- \par
- }
-
- \IfBlankTF{#3}{}{
- \IfBlankTF{#2}{}{
- \vspace{1pt}
- }
-
- \par
- \__tdoc_translate_date:n { #3 }
- \par
- }
-
- \vspace{#4}
- \rule{1.65cm}{.95pt}
- }[-.345cm]
-}
-
-
-%%%
-% prototype::
-% :action: this function checks if we have something like
-% ''YYYY-MM-DD'' and then it calls the function
-% ''\__tdoc_translate_date_process:w'' to finish
-% the job.
-%
-% :see: \__tdoc_translate_date_process:w
-%%%
-\cs_new:Nn \__tdoc_translate_date:n {
- \regex_match:nnTF { \A \d{1,4} \- \d{2} \- \d{2} \Z } { #1 }{
- \__tdoc_translate_date_process:w #1 \q_stop
- }{
- \msg_error:nn { tdoc } { date-bad-format }
- }
-}
-
-
-%%%
-% prototype::
-% :action: this function extracts year, month and day in something
-% like ''YYYY-MM-DD'' and then it calls ''\tutodoc@trans@date''
-% to use the format expected for a "localised" date.
-%%%
-\cs_new:Npn \__tdoc_translate_date_process:w #1 - #2 - #3 \q_stop {
- \tutodoc@trans@date{#1}
- {#2}
- {#3}
-}
-
-
-% :: VERSION AND DATE :: %
-
-%%%
-% prototype::
-% #1 : the color of the margin note
-% #2 : a version number
-% #3 : a date ''YYYY-MM-DD''
-%
-% :action: this macro prints a margin note showing a version number
-% below a date, and the optional argument is used to colorize
-% all this text.
-%
-% warning::
-% The date must use an english formatting like ''2021-07-14''. This allows
-% to parse the date such as to display it following the standard convention
-% of the language chosen when loading the package.
-%%%
-\NewDocumentCommand{\tdocversion}{O{blue} m O{}}{
- \tutodoc@new@change@margin{#1} % Color
- {#2} % Version
- {#3} % Date
- {-4.25pt} % Last negative vertical spacing
-}
-
-
-% :: DATE :: %
-
-%%%
-% prototype::
-% #1 : the color of the margin note
-% #2 : a date ''YYYY-MM-DD''
-%
-% :action: this macro is similar to ''\tdocversion'' except that it just
-% prints a date.
-%%%
-\NewDocumentCommand{\tdocdate}{O{blue} m}{
- \tutodoc@new@change@margin{#1} % Color
- {#2} % Date
- {} % Version
- {-5.35pt} % Last negative spacing
-}
-
-
-% -- CHANGES - WHAT? -- %
-
-% :: MESSAGES :: %
-
-\msg_set:nnnn { tdoc } { changes-topic-missing-title }
- { Missing ~ title. }
- { One ~ single ~ title ~ must ~ be ~ indicated. }
-
-
-% :: CHANGES - TOPIC :: %
-
-%%%
-% prototype::
-% #1 : a title that will be followed by a colon.
-%
-% :action: this environment prints some ¨infos about specific changes
-% achieved in a new version (no special formatting is applied).
-%%%
-\NewDocumentEnvironment{tdoctopic}{ m }{
- \IfBlankT{#1}{
- \msg_fatal:nn { tdoc } { changes-topic-missing-title }
- }
-
- \textbf{
- \textsc{#1.}
- }
-
- \begin{itemize}
-}{
- \end{itemize}
-}
-
-
-% :: CHANGES - NEW THINGS :: %
-
-%%%
-% prototype::
-% :see: env.tdoctopic
-%
-% :action: similar to the \env ''tdoctopic'' with the title "New"
-% translated into the good language.
-%%%
-\NewDocumentEnvironment{tdocnew}{}{
- \begin{tdoctopic}{\tutodoc@trans@chges@new}
-}{
- \end{tdoctopic}
-}
-
-
-% :: CHANGES - UPDATE :: %
-
-%%%
-% prototype::
-% :see: env.tdoctopic
-%
-% :action: similar to the \env ''tdoctopic'' with the title "Update"
-% translated into the good language.
-%%%
-\NewDocumentEnvironment{tdocupdate}{}{
- \begin{tdoctopic}{\tutodoc@trans@chges@update}
-}{
- \end{tdoctopic}
-}
-
-
-% :: CHANGES - BREAK :: %
-
-%%%
-% prototype::
-% :see: env.tdoctopic
-%
-% :action: similar to the \env ''tdoctopic'' with the title "Break"
-% translated into the good language.
-%%%
-\NewDocumentEnvironment{tdocbreak}{}{
- \begin{tdoctopic}{\tutodoc@trans@chges@break}
-}{
- \end{tdoctopic}
-}
-
-
-% :: CHANGES - PROBLEM :: %
-
-%%%
-% prototype::
-% :see: env.tdoctopic
-%
-% :action: similar to the \env ''tdoctopic'' with the title "Problem"
-% translated into the good language.
-%%%
-\NewDocumentEnvironment{tdocprob}{}{
- \begin{tdoctopic}{\tutodoc@trans@chges@pb}
-}{
- \end{tdoctopic}
-}
-
-
-% :: CHANGES - FIX :: %
-
-%%%
-% prototype::
-% :see: env.tdoctopic
-%
-% :action: similar to the \env ''tdoctopic'' with the title "Fix"
-% translated into the good language.
-%%%
-\NewDocumentEnvironment{tdocfix}{}{
- \begin{tdoctopic}{\tutodoc@trans@chges@fix}
-}{
- \end{tdoctopic}
-}
-
-\ExplSyntaxOff
-
-
-% -- DECORATIONS -- %
-
-% Source for \addvspace{\medskipamount} instead of \medskip.
-% * https://tex.stackexchange.com/a/705938/6880
-
-%%%
-% prototype::
-% :action: this macro draws a centered horizontal rule with a height
-% of qty::''0.75 pt'', and a width equal to half of the current
-% text width.
-% Extra vertical spaces are added above and below the rule.
-%%%
-\NewDocumentCommand{\tdocsep}{}{
- \par\addvspace{\medskipamount}
- \hfill\rule{0.5\textwidth}{0.75pt}\hfill\null
- \medskip
- \smallskip
-}
-
-
-%%%
-% prototype::
-% :action: this macro adds a tiny vertical spacing.
-%%%
-\NewDocumentCommand{\tdocxspace}{}{
- \vspace{0.25em}
-}
diff --git a/Master/texmf-dist/tex/latex/ucph-revy/ucph-revy.cls b/Master/texmf-dist/tex/latex/ucph-revy/ucph-revy.cls
index 1ecd22dc05c..846207e078f 100644
--- a/Master/texmf-dist/tex/latex/ucph-revy/ucph-revy.cls
+++ b/Master/texmf-dist/tex/latex/ucph-revy/ucph-revy.cls
@@ -22,7 +22,7 @@
%% LaTeX version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesClass{ucph-revy}
- [2024/02/07 v1.0.1 Fix occational divide by 0]
+ [2024/12/18 v1.1.0 A class for making musical manuscripts]
\RequirePackage{xstring}
\newif\if@thumbindex\@thumbindexfalse
\DeclareOption{thumbindex}{\@thumbindextrue}
@@ -46,7 +46,7 @@
\else
\expandafter\@gobble
\fi{
- \RequirePackage[T1]{fontenc}
+ \RequirePackage[OT1]{fontenc}
\begingroup
\count256=0
\endlinechar=-1
@@ -135,7 +135,7 @@
\def\overtab##1\text##2\stop{}%
\revy@tabs
\def\overtableft{-.75cm}
- \def\overtabright{.5cm}
+ \def\overtabright{1.0cm}
\def\undertabright{\overtabright}
\def\undertableft{\overtableft - 1cm}
\def\underangle{|-}
@@ -146,7 +146,7 @@
\def\textoffset{\undertableft - .5cm}
\def\textside{right}
\def\movetoleftside{
- \def\overtableft{-1.8cm}
+ \def\overtableft{-2.3cm}
\def\overtabright{.2cm}
\def\undertabright{\overtabright + 1cm}
\def\undertableft{\overtableft}
@@ -420,13 +420,19 @@
\newenvironment{props}{
\begin{revy@list}{\@propname}
\revy@itemname{prop}
- }{
+ }{
+ \end{revy@list}
+}
+\newenvironment{costumes}{
+ \begin{revy@list}{\@costumename}
+ \revy@itemname{costume}
+ }{
\end{revy@list}
}
\newenvironment{mics}{
\begin{revy@list}{\@micname}
\revy@itemname{mic}
- }{
+ }{
\end{revy@list}
}
\newenvironment{instructors}{
@@ -436,14 +442,16 @@
\def\instructor{%
\@ifnextchar [{\@instructorwith}{\@instructorwithout}%]
}
- }{
+ }{
\end{revy@list}
}
\def\rolename#1{\def\@rolename{#1}}
+\def\costumename#1{\def\@costumename{#1}}
\def\propname#1{\def\@propname{#1}}
\def\micname#1{\def\@micname{#1}}
\def\instructorname#1{\def\@instructorname{#1}}
\def\@rolename{Roller:}
+\def\@costumename{Kostumer:}
\def\@propname{Rekvisitter:}
\def\@micname{Mikrofoner:}
\def\@instructorname{Instruktører:}
@@ -545,6 +553,7 @@
\def\does##1{\scene \hspace{-1em}\role{##1}}
\def\act##1{\textit{(##1)}}
}{}
+\newcommand{\SaTyR}{S\hspace*{-.2ex}\raisebox{-.15em}{A}\hspace*{-.5ex}TyR}
\let\revyinfo=\relax
\newtoks\@titletoks
\newtoks\@authortoks
diff --git a/Master/texmf-dist/tex/latex/udiss/logos/udiss-logo-ukerala.png b/Master/texmf-dist/tex/latex/udiss/logos/udiss-logo-ukerala.png
new file mode 100644
index 00000000000..9e2dd34afb0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/udiss/logos/udiss-logo-ukerala.png
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/udiss/udiss.cls b/Master/texmf-dist/tex/latex/udiss/udiss.cls
new file mode 100644
index 00000000000..52567f5923c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/udiss/udiss.cls
@@ -0,0 +1,1868 @@
+%%
+%% This is file `udiss.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% udiss.dtx (with options: `class')
+%% ---------------------------------------------------------
+%% Bundle: udiss
+%% Version: v0.1 (October 1, 2024)
+%% Author: Indian TeX Users Group
+%% Description: A LaTeX bundle for typesetting dissertations
+%% Bugs: puszcza.gnu.org.ua/bugs/?group=udiss
+%% Licenses: GPLv3+, GFDLv1.3+
+%% ---------------------------------------------------------
+%%
+%% The LaTeX bundle udiss v0.1
+%% Copyright © 2024 Indian TeX Users Group
+%%
+%% This program is free software: you can redistribute it
+%% and/or modify it under the terms of the GNU General
+%% Public License as published by the Free Software
+%% Foundation, either version 3 of the License, or (at your
+%% option) any later version.
+%%
+%% This program is distributed in the hope that it will be
+%% useful, but WITHOUT ANY WARRANTY; without even the
+%% implied warranty of MERCHANTABILITY or FITNESS FOR A
+%% PARTICULAR PURPOSE. See the GNU General Public License
+%% for more details.
+%%
+%% You should have received a copy of the GNU General Public
+%% License along with this program. If not, see
+%% <https://www.gnu.org/licenses/>.
+%% ---------------------------------------------------------
+\ProvidesClass{udiss}[2024/10/01 v0.1
+ A LaTeX bundle for typesetting dissertations (TUGIndia)]
+\RequirePackage{expkv-def,expkv-opt}
+\newif\ifudiss@pronouns
+\newif\ifudiss@blind
+\NewDocumentCommand{ \pronouns }{ m }{%
+ \ifudiss@blind
+ \else
+ \def\udiss@pronouns{#1}%
+ \fi
+}
+\ekvdefinekeys{udiss}{%
+ code pronouns = {%
+ \ifudiss@blind
+ \else
+ \def\udiss@pronouns{(#1)}%
+ \fi
+ \udiss@pronounstrue
+ }%
+}
+\newif\ifudiss@title
+\def\udiss@blank@title@err{%
+ \ClassError{udiss}{%
+ The `title' field cannot be blank%
+ }{%
+ You have provided an empty argument to the `title'
+ field. This is not\MessageBreak permitted by the class.%
+ }%
+}
+\def\udiss@blank@author@err{%
+ \ClassError{udiss}{%
+ The `author' field cannot be blank%
+ }{%
+ You have provided an empty argument to the `author'
+ field. This is not\MessageBreak permitted by the class.%
+ }%
+}
+\ekvdefinekeys{udiss}{%
+ code title = {%
+ \def\udiss@tmp@title{#1}%
+ \ifx\udiss@tmp@title\empty
+ \def\udiss@title{-NoValidTitle-}%
+ \udiss@blank@title@err
+ \else
+ \def\udiss@title{#1}%
+ \fi
+ },%
+ code author = {%
+ \def\udiss@tmp@author{#1}%
+ \ifx\udiss@tmp@author\empty
+ \def\udiss@author{-NoValidAuthor-}%
+ \udiss@blank@author@err
+ \else
+ \def\udiss@author{#1}%
+ \fi
+ }%
+}
+\newif\ifudiss@subtitle
+\newif\ifudiss@shorttitle
+\ekvdefinekeys{udiss}{%
+ code subtitle = {%
+ \IfBlankTF{#1}{%
+ \def\udiss@subtitle{-NoValidSubtitle-}%
+ \udiss@subtitletrue
+ }{%
+ \def\udiss@subtitle{#1}%
+ \udiss@subtitletrue
+ }%
+ },%
+ code shorttitle = {%
+ \IfBlankTF{#1}{%
+ \def\udiss@shorttitle{-NoValidSubtitle-}%
+ \udiss@shorttitletrue
+ }{%
+ \def\udiss@shorttitle{#1}%
+ \udiss@shorttitletrue
+ }%
+ }%
+}
+\NewDocumentCommand{ \subtitle }{ m }{%
+ \def\udiss@subtitle{#1}%
+ \udiss@subtitletrue
+}
+\NewDocumentCommand{ \shorttitle }{ m }{%
+ \def\udiss@shorttitle{#1}%
+ \udiss@shorttitletrue
+}
+\newif\ifudiss@stream
+\def\udiss@blank@stream@err{%
+ \ClassError{udiss}{%
+ The `stream' field cannot be blank%
+ }{%
+ You have provided an empty argument to the `stream'
+ field. This is not\MessageBreak permitted by the class.%
+ }%
+}
+\newif\ifudiss@discipline
+\def\udiss@blank@discipline@err{%
+ \ClassError{udiss}{%
+ The `discipline' field cannot be blank%
+ }{%
+ You have provided an empty argument to the `discipline'
+ field. This is not\MessageBreak permitted by the class.%
+ }%
+}
+\newif\ifudiss@degree
+\def\udiss@blank@degree@err{%
+ \ClassError{udiss}{%
+ The `degree' field cannot be blank%
+ }{%
+ You have provided an empty argument to the `degree'
+ field. This is not\MessageBreak permitted by the class.%
+ }%
+}
+\ekvdefinekeys{udiss}{%
+ code stream = {%
+ \def\udiss@tmp@stream{#1}%
+ \ifx\udiss@tmp@stream\empty
+ \def\udiss@stream{-NoValidStream-}%
+ \udiss@blank@stream@err
+ \else
+ \def\udiss@stream{#1}%
+ \fi
+ },%
+ code discipline = {%
+ \def\udiss@tmp@discipline{#1}%
+ \ifx\udiss@tmp@discipline\empty
+ \def\udiss@discipline{-NoValidDiscipline-}%
+ \udiss@blank@discipline@err
+ \else
+ \def\udiss@discipline{#1}%
+ \fi
+ },%
+ code degree = {%
+ \def\udiss@tmp@degree{#1}%
+ \ifx\udiss@tmp@degree\empty
+ \def\udiss@degree{-NoValidDegree-}%
+ \udiss@blank@degree@err
+ \else
+ \def\udiss@degree{#1}%
+ \fi
+ }%
+}
+\NewDocumentCommand{ \stream }{ m }{%
+ \IfBlankTF{#1}{%
+ \udiss@blank@stream@err
+ \def\udiss@stream{-NoValidStream-}%
+ }{%
+ \def\udiss@stream{#1}%
+ }%
+ \IfBlankTF{#1}{%
+ \udiss@streamtrue
+ }{%
+ \def\udiss@stream{#1}%
+ \udiss@streamtrue
+ }%
+}
+\NewDocumentCommand{ \discipline }{ m }{%
+ \IfBlankTF{#1}{%
+ \udiss@blank@discipline@err
+ \def\udiss@discipline{-NoValidDiscipline-}%
+ }{%
+ \def\udiss@discipline{#1}%
+ }%
+ \IfBlankTF{#1}{%
+ \udiss@disciplinetrue
+ }{%
+ \def\udiss@discipline{#1}%
+ \udiss@disciplinetrue
+ }%
+}
+\NewDocumentCommand{ \degree }{ m }{%
+ \IfBlankTF{#1}{%
+ \udiss@blank@degree@err
+ \def\udiss@degree{-NoValidDegree-}%
+ }{%
+ \def\udiss@degree{#1}%
+ }%
+ \IfBlankTF{#1}{%
+ \udiss@degreetrue
+ }{%
+ \def\udiss@degree{#1}%
+ \udiss@degreetrue
+ }%
+}
+\newif\ifudiss@supervisor
+\newif\ifudiss@university
+\newif\ifudiss@department
+\def\udiss@blank@supervisor@err{%
+ \ClassError{udiss}{%
+ The `supervisor' field cannot be blank%
+ }{%
+ You have provided an empty argument to the `supervisor'
+ field. This is not\MessageBreak permitted by the class.%
+ }%
+}
+\def\udiss@blank@university@err{%
+ \ClassError{udiss}{%
+ The `university' field cannot be blank%
+ }{%
+ You have provided an empty argument to the `university'
+ field. This is not\MessageBreak permitted by the class.%
+ }%
+}
+\def\udiss@blank@department@err{%
+ \ClassError{udiss}{%
+ The `department' field cannot be blank%
+ }{%
+ You have provided an empty argument to the `department'
+ field. This is not\MessageBreak permitted by the class.%
+ }%
+}
+\ekvdefinekeys{udiss}{%
+ code supervisor = {%
+ \def\udiss@tmp@supervisor{#1}%
+ \ifx\udiss@tmp@supervisor\empty
+ \def\udiss@supervisor{-NoValidSupervisor-}%
+ \udiss@blank@supervisor@err
+ \else
+ \def\udiss@supervisor{#1}%
+ \fi
+ },%
+ code university = {%
+ \def\udiss@tmp@university{#1}%
+ \ifx\udiss@tmp@university\empty
+ \def\udiss@university{-NoValidUniversity-}%
+ \udiss@blank@university@err
+ \else
+ \def\udiss@university{#1}%
+ \fi
+ },%
+ code department = {%
+ \def\udiss@tmp@department{#1}%
+ \ifx\udiss@tmp@department\empty
+ \def\udiss@department{-NoValidDepartment-}%
+ \udiss@blank@department@err
+ \else
+ \def\udiss@department{#1}%
+ \fi
+ }%
+}
+\NewDocumentCommand{ \supervisor }{ m }{%
+ \IfBlankTF{#1}{%
+ \udiss@blank@supervisor@err
+ \def\udiss@supervisor{-NoValidSupervisor-}%
+ }{%
+ \def\udiss@supervisor{#1}%
+ }%
+ \IfBlankTF{#1}{%
+ \udiss@supervisortrue
+ }{%
+ \def\udiss@supervisor{#1}%
+ \udiss@supervisortrue
+ }%
+}
+\NewDocumentCommand{ \university }{ m }{%
+ \IfBlankTF{#1}{%
+ \udiss@blank@university@err
+ \def\udiss@author{-NoValidUniversity-}%
+ }{%
+ \def\udiss@university{#1}%
+ }%
+ \IfBlankTF{#1}{%
+ \udiss@universitytrue
+ }{%
+ \def\udiss@university{#1}%
+ \udiss@universitytrue
+ }%
+}
+\NewDocumentCommand{ \department }{ m }{%
+ \IfBlankTF{#1}{%
+ \udiss@blank@department@err
+ \def\udiss@author{-NoValidDepartment-}%
+ }{%
+ \def\udiss@department{#1}%
+ }%
+ \IfBlankTF{#1}{%
+ \udiss@departmenttrue
+ }{%
+ \def\udiss@department{#1}%
+ \udiss@departmenttrue
+ }%
+}
+\newif\ifudiss@logo
+\newif\ifudiss@texlogo
+\NewDocumentCommand{ \logo }{ s +m }{%
+ \IfBooleanTF{#1}{%
+ \def\udiss@texlogo{#2}%
+ \udiss@texlogotrue
+ }{%
+ \def\udiss@logo{#2}%
+ }%
+ \udiss@logotrue
+}
+\ekvdefinekeys{udiss}{%
+ code logo = {%
+ \def\udiss@logo{#1}%
+ \udiss@logotrue
+ },%
+ code logo* = {%
+ \def\udiss@texlogo{#1}%
+ \udiss@logotrue
+ \udiss@texlogotrue
+ }%
+}
+\newcounter{udiss@langbabel}
+\stepcounter{udiss@langbabel}
+\def\udiss@int@langbabel#1{%
+ \expandafter\edef
+ \csname
+ udiss@langbabel@\alph{udiss@langbabel}%
+ \endcsname{#1}%
+ \stepcounter{udiss@langbabel}%
+}
+\NewDocumentCommand\udiss@lgbbl{ >{ \SplitList{,} } m }{%
+ \ProcessList{#1}{\udiss@int@langbabel}%
+}
+\newif\ifudiss@lg@used
+\newif\ifudiss@ldfbabel
+\ekvdefinekeys{udiss}{%
+ code language = {%
+ \udiss@lgbbl{#1}%
+ \udiss@lg@usedtrue
+ },%
+ code ldfbabel = {%
+ \def\udiss@ldfbabel@list{#1}%
+ \udiss@lg@usedtrue
+ \udiss@ldfbabeltrue
+ },%
+ invbool nofontwarning = {\ifudiss@font@warning}%
+}
+\newif\ifudiss@free@culture
+\newif\ifudiss@ccbysa
+\newif\ifudiss@gfdl
+\ekvdefinekeys{udiss}{%
+ choice license = {%
+ all-rights-reserved = {%
+ \def\udiss@license@notice{%
+ All rights reserved.\textLF
+ }%
+ },%
+ CC-BY-SA = {%
+ \def\udiss@license@notice{%
+ This work is available under the "Creative Commons
+ Attribution ShareAlike 4.0 International" license.%
+ }%
+ \def\udiss@free@license@url{%
+ https://creativecommons.org/licenses/%
+ by-sa/4.0/legalcode.txt%
+ }%
+ \udiss@free@culturetrue
+ \udiss@ccbysatrue
+ },%
+ GFDL = {%
+ \def\udiss@license@notice{%
+ Permission is granted to copy, distribute and/or
+ modify this document under the terms of the GNU Free
+ Documentation License, Version 1.3 or any later
+ version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts,
+ and no Back-Cover Texts. A copy of the license is
+ included in the section entitled “GNU Free
+ Documentation License”.%
+ }%
+ \def\udiss@free@license@url{%
+ https://www.gnu.org/licenses/fdl-1.3.txt%
+ }%
+ \udiss@free@culturetrue
+ \udiss@gfdltrue
+ },%
+ },%
+ initial license = {all-rights-reserved},%
+ store copyright-yrs = {\udiss@copyrightable@years},%
+ initial copyright-yrs = {\the\year},%
+ store localcopyright = {\udiss@local@copyright},%
+ initial localcopyright = {Copyright},%
+ nmeta placeholders = {%
+ title = {%
+ A groundbreaking dissertation%
+ },%
+ author = {%
+ Jane Doe%
+ },%
+ pronouns = {She/her},%
+ subtitle = {%
+ A milestone study on a longstanding question
+ in a discipline%
+ },%
+ shorttitle = {A Milestone study},%
+ stream = {intriguing stream},%
+ discipline = {rigorous discipline},
+ degree = {enriching degree},%
+ supervisor = {A kind supervisor},%
+ university = {An ideal university},%
+ department = {A homely department},%
+ license = {CC-BY-SA},%
+ copyright-yrs = {2022, 2023, 2024}%
+ }%
+}
+\ekvdefinekeys{udiss}{%
+ bool lot = {\ifudiss@lot},%
+ bool lof = {\ifudiss@lof},%
+ bool declaration = {\ifudiss@declaration},%
+ long
+ store declarationtxt = {\udiss@declaration},%
+ initial declarationtxt = {%
+ \noindent As required by the university regulations, I
+ wish to state that the work embodied in this thesis
+ titled \enquote{\udiss@title: \udiss@subtitle} forms
+ my own contribution to the research work carried out
+ under the guidance of \udiss@supervisor\ at the
+ \udiss@university, \udiss@department.
+
+ This work has not been submitted for any other degree
+ of this or any other university. Whenever references
+ have been made to previous works of others, it has
+ been clearly indicated as such and included in the
+ bibliography.
+
+ \bigskip
+ \flushright{%
+ Date: \today
+
+ \vspace{4em}%
+
+ Name: \udiss@author
+ }%
+
+ \bigskip\bigskip
+ \flushleft{%
+ Certified by:%
+
+ \vspace{4em}%
+
+ \udiss@supervisor
+ }%
+ },%
+ store decllocal = {\udiss@decllocal},%
+ initial decllocal = {Declaration}%
+}
+\ekvdefinekeys{udiss}{%
+ bool print = {\ifudiss@print},%
+ invbool norefcolors = {\ifudiss@colors},%
+ store udisslinkclr = {\udiss@int@link@color},%
+ initial udisslinkclr = {udisslink},%
+ store udissurlclr = {\udiss@int@url@color},%
+ initial udissurlclr = {udissurl},%
+ store udissciteclr = {\udiss@int@cite@color},%
+ initial udissciteclr = {udisscite}%
+}
+\ekvdefinekeys{udiss}{%
+ bool blind = {\ifudiss@blind}%
+}
+\ekvdefinekeys{udiss}{%
+ bool framed-title = {\ifudiss@ftitle}%
+}
+\ekvdefinekeys{udiss}{%
+ invbool oldstylenumoff = {\ifudiss@oldstylenum},%
+ bool oldone = {\ifudiss@oldone}%
+}
+\ekvdefinekeys{udiss}{%
+ bool explicitext = {\ifudiss@explicitext},%
+ invbool ignorefsoff = {\ifudiss@ignorefontspec}%
+}
+\ekvdefinekeys{udiss}{%
+ store fulfilment = {\udiss@fulfilment},%
+ initial fulfilment = {%
+ A dissertation submitted in the partial fulfilment of
+ the requirements for the \udiss@degree\ program in
+ \udiss@discipline.%
+ }%
+}
+\ekvdefinekeys{udiss}{%
+ store rmfont = {\udiss@rmfont},%
+ initial rmfont = {NewCM10-Book.otf},%
+ store rmbffont = {\udiss@rmbffont},%
+ initial rmbffont = {NewCM10-Bold.otf},%
+ store rmitfont = {\udiss@rmitfont},%
+ initial rmitfont = {NewCM10-BookItalic.otf},%
+ store rmbfitfont = {\udiss@rmbfitfont},%
+ initial rmbfitfont = {NewCM10-BoldItalic.otf},%
+ store rmslfont = {\udiss@rmslfont},%
+ initial rmslfont = {NewCM10-Book.otf},%
+ store rmbfslfont = {\udiss@rmbfslfont},%
+ initial rmbfslfont = {NewCM10-Bold.otf},%
+ store sffont = {\udiss@sffont},%
+ initial sffont = {NewCMSans10-Book.otf},%
+ store sfbffont = {\udiss@sfbffont},%
+ initial sfbffont = {NewCMSans10-Bold.otf},%
+ store sfitfont = {\udiss@sfitfont},
+ initial sfitfont = {NewCMSans10-BookOblique.otf},%
+ store sfbfitfont = {\udiss@sfbfitfont},%
+ initial sfbfitfont = {NewCMSans10-BoldOblique.otf},%
+ store sfslfont = {\udiss@sfslfont},%
+ initial sfslfont = {NewCMSans10-BookOblique.otf},%
+ store sfbfslfont = {\udiss@sfbfslfont},%
+ initial sfbfslfont = {NewCMSans10-BoldOblique.otf},%
+ store ttfont = {\udiss@ttfont},%
+ initial ttfont = {NewCMMono10-Book.otf},%
+ store ttbffont = {\udiss@ttbffont},
+ initial ttbffont = {NewCMMono10-Bold.otf},%
+ store ttitfont = {\udiss@ttitfont},%
+ initial ttitfont = {NewCMMono10-BookItalic.otf},%
+ store ttbfitfont = {\udiss@ttbfitfont},%
+ initial ttbfitfont = {NewCMMono10-BoldOblique.otf},%
+ store ttslfont = {\udiss@ttslfont},%
+ initial ttslfont = {NewCM10-Book.otf},%
+ store ttbfslfont = {\udiss@ttbfslfont},%
+ initial ttbfslfont = {NewCMMono10-BoldOblique.otf},%
+ store mathfont = {\udiss@mathfont},%
+ initial mathfont = {NewCMMath-Book.otf},%
+ store mathbffont = {\udiss@mathbffont},%
+ initial mathbffont = {NewCMMath-Bold.otf},%
+ store rmfeatures = {\udiss@rmfeatures},%
+ choice rmfntext = {%
+ ttf = {%
+ \ifudiss@explicitext
+ \def\udiss@rmfntext{ttf}%
+ \else
+ \ClassError{udiss}{%
+ Option `explicitext' is needed for adding
+ font extensions%
+ }{%
+ You have loaded font-option `rmfntext' to
+ add extension to font-names.
+ This\MessageBreak option is supposed to be
+ used only with the `explicitext' option.
+ E.g., for\MessageBreak loading, say,
+ FreeSerif, you may choose one of the
+ following two methods:%
+ \MessageBreak\MessageBreak
+ 1. The recommended method:%
+ \MessageBreak
+ \space\space\space
+ ----8<---------------8<----%
+ \MessageBreak
+ \space\space\space
+ \string\documentclass[\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ rmfont = {FreeSerif.ttf}\@percentchar
+ \MessageBreak
+ \space\space\space
+ ]{udiss}\MessageBreak
+ \space\space\space
+ ----8<---------------8<----%
+ \MessageBreak\MessageBreak
+ 2. The alternative:%
+ \MessageBreak
+ \space\space\space
+ ----8<------------8<----%
+ \MessageBreak
+ \space\space\space
+ \string\documentclass[\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ explicitext,\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ rmfont = {FreeSerif},\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ rmfntext = {ttf}\@percentchar
+ \MessageBreak
+ \space\space\space
+ ]{udiss}%
+ \MessageBreak
+ \space\space\space
+ ----8<------------8<----%
+ }%
+ \fi
+ },%
+ otf = {%
+ \ifudiss@explicitext
+ \def\udiss@rmfntext{otf}%
+ \else
+ \ClassError{udiss}{%
+ Option `explicitext' is needed for adding
+ font extensions%
+ }{%
+ You have loaded font-option `rmfntext' to
+ add extension to font-names.
+ This\MessageBreak option is supposed to be
+ used only with the `explicitext' option.
+ E.g., for\MessageBreak loading, say,
+ KpRoman-Regular.otf, you may choose one of
+ the following two\MessageBreak
+ methods:%
+ \MessageBreak\MessageBreak
+ 1. The recommended method:%
+ \MessageBreak
+ \space\space\space
+ ----8<---------------------8<----%
+ \MessageBreak
+ \space\space\space
+ \string\documentclass[\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ rmfont = {KpRoman-Regular.otf}%
+ \@percentchar
+ \MessageBreak
+ \space\space\space
+ ]{udiss}\MessageBreak
+ \space\space\space
+ ----8<---------------------8<----%
+ \MessageBreak
+ \MessageBreak
+ 2. The alternative:%
+ \MessageBreak
+ \space\space\space
+ ----8<------------------8<----%
+ \MessageBreak
+ \space\space\space
+ \string\documentclass[\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ explicitext,\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ rmfont = {KpRoman-Regular},%
+ \@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ rmfntext = {otf}\@percentchar
+ \MessageBreak
+ \space\space\space
+ ]{udiss}%
+ \MessageBreak
+ \space\space\space
+ ----8<------------------8<----%
+ }%
+ \fi
+ }%
+ },%
+ store sffeatures = {\udiss@sffeatures},%
+ choice sffntext = {%
+ ttf = {%
+ \ifudiss@explicitext
+ \def\udiss@sffntext{ttf}%
+ \else
+ \ClassError{udiss}{%
+ Option `explicitext' is needed for adding
+ font extensions%
+ }{%
+ You have loaded font-option `sffntext' to
+ add extension to font-names.
+ This\MessageBreak option is supposed to be
+ used only with the `explicitext' option.
+ E.g., for\MessageBreak loading, say,
+ FreeSans, you may choose one of the
+ following two methods:%
+ \MessageBreak\MessageBreak
+ 1. The recommended method:%
+ \MessageBreak
+ \space\space\space
+ ----8<---------------8<----%
+ \MessageBreak
+ \space\space\space
+ \string\documentclass[\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ sffont = {FreeSans.ttf}\@percentchar
+ \MessageBreak
+ \space\space\space
+ ]{udiss}\MessageBreak
+ \space\space\space
+ ----8<---------------8<----%
+ \MessageBreak\MessageBreak
+ 2. The alternative:%
+ \MessageBreak
+ \space\space\space
+ ----8<------------8<----%
+ \MessageBreak
+ \space\space\space
+ \string\documentclass[\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ explicitext,\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ sffont = {FreeSans},\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ sffntext = {ttf}\@percentchar
+ \MessageBreak
+ \space\space\space
+ ]{udiss}%
+ \MessageBreak
+ \space\space\space
+ ----8<------------8<----%
+ }%
+ \fi
+ },%
+ otf = {%
+ \ifudiss@explicitext
+ \def\udiss@sffntext{otf}%
+ \else
+ \ClassError{udiss}{%
+ Option `explicitext' is needed for adding
+ font extensions%
+ }{%
+ You have loaded font-option `sffntext' to
+ add extension to font-names.
+ This\MessageBreak option is supposed to be
+ used only with the `explicitext' option.
+ E.g., for\MessageBreak loading, say,
+ KpSans-Regular.otf, you may choose one of
+ the following two\MessageBreak
+ methods:%
+ \MessageBreak\MessageBreak
+ 1. The recommended method:%
+ \MessageBreak
+ \space\space\space
+ ----8<---------------------8<----%
+ \MessageBreak
+ \space\space\space
+ \string\documentclass[\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ sffont = {KpSans-Regular.otf}%
+ \@percentchar
+ \MessageBreak
+ \space\space\space
+ ]{udiss}\MessageBreak
+ \space\space\space
+ ----8<---------------------8<----%
+ \MessageBreak
+ \MessageBreak
+ 2. The alternative:%
+ \MessageBreak
+ \space\space\space
+ ----8<------------------8<----%
+ \MessageBreak
+ \space\space\space
+ \string\documentclass[\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ explicitext,\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ sffont = {KpSans-Regular},%
+ \@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ sffntext = {otf}\@percentchar
+ \MessageBreak
+ \space\space\space
+ ]{udiss}%
+ \MessageBreak
+ \space\space\space
+ ----8<------------------8<----%
+ }%
+ \fi
+ }%
+ },%
+ store ttfeatures = {\udiss@ttfeatures},%
+ choice ttfntext = {%
+ ttf = {%
+ \ifudiss@explicitext
+ \def\udiss@ttfntext{ttf}%
+ \else
+ \ClassError{udiss}{%
+ Option `explicitext' is needed for adding
+ font extensions%
+ }{%
+ You have loaded font-option `ttfntext' to
+ add extension to font-names.
+ This\MessageBreak option is supposed to be
+ used only with the `explicitext' option.
+ E.g., for\MessageBreak loading, say,
+ FreeMono, you may choose one of the
+ following two methods:%
+ \MessageBreak\MessageBreak
+ 1. The recommended method:%
+ \MessageBreak
+ \space\space\space
+ ----8<---------------8<----%
+ \MessageBreak
+ \space\space\space
+ \string\documentclass[\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ ttfont = {FreeMono.ttf}\@percentchar
+ \MessageBreak
+ \space\space\space
+ ]{udiss}\MessageBreak
+ \space\space\space
+ ----8<---------------8<----%
+ \MessageBreak\MessageBreak
+ 2. The alternative:%
+ \MessageBreak
+ \space\space\space
+ ----8<------------8<----%
+ \MessageBreak
+ \space\space\space
+ \string\documentclass[\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ explicitext,\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ ttfont = {FreeMono},\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ ttfntext = {ttf}\@percentchar
+ \MessageBreak
+ \space\space\space
+ ]{udiss}%
+ \MessageBreak
+ \space\space\space
+ ----8<------------8<----%
+ }%
+ \fi
+ },%
+ otf = {%
+ \ifudiss@explicitext
+ \def\udiss@ttfntext{otf}%
+ \else
+ \ClassError{udiss}{%
+ Option `explicitext' is needed for adding
+ font extensions%
+ }{%
+ You have loaded font-option `ttfntext' to
+ add extension to font-names.
+ This\MessageBreak option is supposed to be
+ used only with the `explicitext' option.
+ E.g., for\MessageBreak loading, say,
+ KpMono-Regular.otf, you may choose one of
+ the following two\MessageBreak
+ methods:%
+ \MessageBreak\MessageBreak
+ 1. The recommended method:%
+ \MessageBreak
+ \space\space\space
+ ----8<---------------------8<----%
+ \MessageBreak
+ \space\space\space
+ \string\documentclass[\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ ttfont = {KpMono-Regular.otf}%
+ \@percentchar
+ \MessageBreak
+ \space\space\space
+ ]{udiss}\MessageBreak
+ \space\space\space
+ ----8<---------------------8<----%
+ \MessageBreak
+ \MessageBreak
+ 2. The alternative:%
+ \MessageBreak
+ \space\space\space
+ ----8<------------------8<----%
+ \MessageBreak
+ \space\space\space
+ \string\documentclass[\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ explicitext,\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ ttfont = {KpMono-Regular},%
+ \@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ ttfntext = {otf}\@percentchar
+ \MessageBreak
+ \space\space\space
+ ]{udiss}%
+ \MessageBreak
+ \space\space\space
+ ----8<------------------8<----%
+ }%
+ \fi
+ }%
+ },%
+ store mathfeatures = {\udiss@mathfeatures},%
+ choice mathfntext = {%
+ ttf = {%
+ \ifudiss@explicitext
+ \def\udiss@mathfntext{ttf}%
+ \else
+ \ClassError{udiss}{%
+ Option `explicitext' is needed for adding
+ font extensions%
+ }{%
+ You have loaded font-option `mathfntext'
+ to add extension to font-names.
+ This\MessageBreak option is supposed to be
+ used only with the `explicitext' option.
+ E.g., for\MessageBreak loading, say,
+ NotoSansMath-Regular, you may choose one
+ of the following two\MessageBreak
+ methods:%
+ \MessageBreak\MessageBreak
+ 1. The recommended method:%
+ \MessageBreak
+ \space\space\space
+ ----8<----------------------------8<----%
+ \MessageBreak
+ \space\space\space
+ \string\documentclass[\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ mathfont = {NotoSansMath-Regular.ttf}%
+ \@percentchar
+ \MessageBreak
+ \space\space\space
+ ]{udiss}\MessageBreak
+ \space\space\space
+ ----8<----------------------------8<----%
+ \MessageBreak\MessageBreak
+ 2. The alternative:%
+ \MessageBreak
+ \space\space\space
+ ----8<-------------------------8<----%
+ \MessageBreak
+ \space\space\space
+ \string\documentclass[\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ explicitext,\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ mathfont = {NotoSansMath-Regular},%
+ \@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ mathfntext = {ttf}\@percentchar
+ \MessageBreak
+ \space\space\space
+ ]{udiss}%
+ \MessageBreak
+ \space\space\space
+ ----8<-------------------------8<----%
+ }%
+ \fi
+ },%
+ otf = {%
+ \ifudiss@explicitext
+ \def\udiss@mathfntext{otf}%
+ \else
+ \ClassError{udiss}{%
+ Option `explicitext' is needed for adding
+ font extensions%
+ }{%
+ You have loaded font-option `mathfntext'
+ to add extension to font-names.
+ This\MessageBreak option is supposed to be
+ used only with the `explicitext' option.
+ E.g., for\MessageBreak loading, say,
+ XITSMath-Regular, you may choose one of
+ the following two\MessageBreak methods:%
+ \MessageBreak\MessageBreak
+ 1. The recommended method:%
+ \MessageBreak
+ \space\space\space
+ ----8<----------------------------8<----%
+ \MessageBreak
+ \space\space\space
+ \string\documentclass[\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ mathfont = {XITSMath-Regular.otf}%
+ \@percentchar
+ \MessageBreak
+ \space\space\space
+ ]{udiss}\MessageBreak
+ \space\space\space
+ ----8<----------------------------8<----%
+ \MessageBreak\MessageBreak
+ 2. The alternative:%
+ \MessageBreak
+ \space\space\space
+ ----8<-------------------------8<----%
+ \MessageBreak
+ \space\space\space
+ \string\documentclass[\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ explicitext,\@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ mathfont = {XITSMath-Regular},%
+ \@percentchar
+ \MessageBreak
+ \space\space\space\space\space
+ mathfntext = {otf}\@percentchar
+ \MessageBreak
+ \space\space\space
+ ]{udiss}%
+ \MessageBreak
+ \space\space\space
+ ----8<-------------------------8<----%
+ }%
+ \fi
+ }%
+ },%
+}
+\ekvdefinekeys{udiss}{%
+ store titleshape = {\udiss@title@shape},%
+ initial titleshape = {\bfseries},%
+ store titlefont = {\udiss@title@font},%
+ store titlesize = {\udiss@title@size},%
+ initial titlesize = {\udiss@int@huge},%
+ store titlecolor = {\udiss@title@color},%
+ initial titlecolor = {black},%
+ store titleffeat = {\udiss@title@fontfeats},%
+ initial titleffeat = {}%
+}
+\ekvdefinekeys{udiss}{%
+ store subtitleshape = {\udiss@subtitle@shape},%
+ initial subtitleshape = {\normalfont},%
+ store subtitlefont = {\udiss@subtitle@font},%
+ store subtitlesize = {\udiss@subtitle@size},%
+ initial subtitlesize = {\udiss@int@large},%
+ store subtitlecolor = {\udiss@subtitle@color},%
+ initial subtitlecolor = {black},%
+ store subtitleffeat = {\udiss@subtitle@fontfeats},%
+ initial subtitleffeat = {}%
+}
+\ekvdefinekeys{udiss}{%
+ store authorshape = {\udiss@author@shape},%
+ initial authorshape = {\normalfont},%
+ store authorfont = {\udiss@author@font},%
+ store authorsize = {\udiss@author@size},%
+ initial authorsize = {\udiss@int@large},%
+ store authorcolor = {\udiss@author@color},%
+ initial authorcolor = {black},%
+ store authorffeat = {\udiss@author@fontfeats},%
+ initial authorffeat = {}%
+}
+\ekvdefinekeys{udiss}{%
+ store unishape = {\udiss@uni@shape},%
+ initial unishape = {\itshape},%
+ store unifont = {\udiss@uni@font},%
+ store unisize = {\udiss@uni@size},%
+ initial unisize = {\normalsize},%
+ store unicolor = {\udiss@uni@color},%
+ initial unicolor = {black},%
+ store uniffeat = {\udiss@uni@fontfeats}%
+}
+\ekvdefinekeys{udiss}{%
+ store deptshape = {\udiss@dept@shape},%
+ initial deptshape = {\normalfont},%
+ store deptfont = {\udiss@dept@font},%
+ store deptsize = {\udiss@dept@size},%
+ initial deptsize = {\udiss@int@small},%
+ store deptcolor = {\udiss@dept@color},%
+ initial deptcolor = {black},%
+ store deptffeat = {\udiss@dept@fontfeats},%
+ initial deptffeat = {}%
+}
+\ekvdefinekeys{udiss}{%
+ store ffshape = {\udiss@fulfilment@shape},%
+ initial ffshape = {\normalfont},%
+ store fffont = {\udiss@fulfilment@font},%
+ store ffsize = {\udiss@fulfilment@size},%
+ initial ffsize = {\udiss@int@small},%
+ store ffcolor = {\udiss@fulfilment@color},%
+ initial ffcolor = {black},%
+ store fffeat = {\udiss@fulfilment@fontfeats},%
+ initial fffeat = {}%
+}
+\ekvdefinekeys{udiss}{%
+ store logowidth = {\udiss@logo@width},%
+ initial logowidth = {0.3},%
+ store logoheight = {\udiss@logo@hght},%
+ initial logoheight = {0.075}%
+}
+\ekvoProcessGlobalOptions{udiss}
+\NewDocumentCommand{ \dissertationstyle }{ m }{%
+ \AddToHook{begindocument/before}{%
+ \input{udiss-style-#1}%
+ }%
+}
+\ifudiss@print
+\else
+ \PassOptionsToClass{oneside}{memoir}%
+\fi
+\LoadClass{memoir}
+\RenewDocumentCommand{ \title }{ m }{%
+ \IfBlankTF{#1}{%
+ \udiss@blank@title@err
+ \def\udiss@title{-NoValidTitle-}%
+ }{%
+ \def\udiss@title{#1}%
+ }%
+}
+\RenewDocumentCommand{ \author }{ m }{%
+ \IfBlankTF{#1}{%
+ \udiss@blank@author@err
+ \def\udiss@author{-NoValidAuthor-}%
+ }{%
+ \def\udiss@author{#1}%
+ }%
+}
+\RequirePackage{iftex}
+\RequireTUTeX
+\def\udiss@int@HUGE{%
+ \addfontfeature{Scale={2.5}}%
+}
+\def\udiss@int@Huge{%
+ \addfontfeature{Scale={2}}%
+}
+\def\udiss@int@huge{%
+ \addfontfeature{Scale={1.7}}%
+}
+\def\udiss@int@LARGE{%
+ \addfontfeature{Scale={1.4}}%
+}
+\def\udiss@int@Large{%
+ \addfontfeature{Scale={1.2}}%
+}
+\def\udiss@int@large{%
+ \addfontfeature{Scale={1.1}}%
+}
+\def\udiss@int@small{%
+ \addfontfeature{Scale={0.9}}%
+}
+\def\udiss@int@footnotesize{%
+ \addfontfeature{Scale={0.8}}%
+}
+\def\udiss@int@scriptsize{%
+ \addfontfeature{Scale={0.7}}%
+}
+\def\udiss@int@tiny{%
+ \addfontfeature{Scale={0.6}}%
+}
+\def\udiss@int@miniscule{%
+ \addfontfeature{Scale={0.5}}%
+}
+\ifudiss@lg@used
+ \ifudiss@ldfbabel
+ \PassOptionsToPackage{%
+ \udiss@ldfbabel@list
+ }{babel}%
+ \fi
+\else
+ \PassOptionsToPackage{english,provide*=*}{babel}%
+\fi
+\RequirePackage{babel}
+\RequirePackage{iflang}
+\newcounter{udiss@tmp@langcnt}
+\ifudiss@ldfbabel
+\else
+ \ifudiss@lg@used
+ \ifnum\theudiss@langbabel=2\relax
+ \addtocounter{udiss@langbabel}{-1}%
+ \ifLuaTeX
+ \babelprovide[%
+ main,%
+ import,%
+ onchar ={ids fonts}%
+ ]{%
+ \csname
+ udiss@langbabel@\alph{udiss@langbabel}%
+ \endcsname
+ }%
+ \else
+ \babelprovide[main,import]{%
+ \csname
+ udiss@langbabel@\alph{udiss@langbabel}%
+ \endcsname
+ }%
+ \fi
+ \fi
+ \ifnum\theudiss@langbabel>2\relax
+ \setcounter{udiss@tmp@langcnt}{%
+ \numexpr\theudiss@langbabel -1\relax
+ }%
+ \setcounter{udiss@langbabel}{1}%
+ \loop
+ \ifLuaTeX
+ \babelprovide[%
+ import,%
+ onchar ={ids fonts}%
+ ]{%
+ \csname
+ udiss@langbabel@\alph{udiss@langbabel}%
+ \endcsname
+ }%
+ \else
+ \babelprovide[import]{%
+ \csname
+ udiss@langbabel@\alph{udiss@langbabel}%
+ \endcsname
+ }%
+ \fi
+ \ifnum\theudiss@tmp@langcnt=1\relax
+ \else
+ \addtocounter{udiss@langbabel}{1}%
+ \fi
+ \ifnum\theudiss@langbabel<\theudiss@tmp@langcnt
+ \relax
+ \repeat
+ \fi
+ \ifnum\theudiss@langbabel=1\relax
+ \else
+ \ifLuaTeX
+ \babelprovide[%
+ main,%
+ import,%
+ onchar ={ids fonts}%
+ ]{%
+ \csname
+ udiss@langbabel@\alph{udiss@langbabel}%
+ \endcsname
+ }%
+ \else
+ \babelprovide[main,import]{%
+ \csname
+ udiss@langbabel@\alph{udiss@langbabel}%
+ \endcsname
+ }%
+ \fi
+ \fi
+ \setcounter{udiss@tmp@langcnt}{%
+ \numexpr\theudiss@langbabel + 1\relax
+ }%
+ \setcounter{udiss@langbabel}{1}%
+ \loop
+ \IfFileExists{%
+ udiss-fonts-\csname
+ udiss@langbabel@\alph{udiss@langbabel}%
+ \endcsname
+ }{%
+ \input{%
+ udiss-fonts-\csname
+ udiss@langbabel@\alph{udiss@langbabel}%
+ \endcsname
+ }%
+ }{%
+ \ifudiss@font@warning
+ \ClassWarningNoLine{udiss}{%
+ We don't support \csname
+ udiss@langbabel@\alph{udiss@langbabel}%
+ \endcsname\space yet.%
+ \MessageBreak
+ It requires a font-setup. You may add the fonts
+ directly\MessageBreak to your preamble using:%
+ \MessageBreak\MessageBreak
+ \space\space\string\babelfont[%
+ \csname
+ udiss@langbabel@\alph{udiss@langbabel}%
+ \endcsname
+ ]{rm}{main font}%
+ \MessageBreak
+ \space\space\string\babelfont[%
+ \csname
+ udiss@langbabel@\alph{udiss@langbabel}%
+ \endcsname
+ ]{sf}{sans font}%
+ \MessageBreak
+ \space\space\string\babelfont[%
+ \csname
+ udiss@langbabel@\alph{udiss@langbabel}%
+ \endcsname
+ ]{tt}{mono font}%
+ \MessageBreak\MessageBreak
+ Read more about this in the documentation of
+ `udiss' in a\MessageBreak section called
+ `multilingual typesetting'. Consider%
+ \MessageBreak contacting us with a support
+ request and let us know some\MessageBreak
+ suitable free (libre) fonts for this
+ language. If you\MessageBreak don't wish to see
+ this warning again, use the option%
+ \MessageBreak `nofontwarning' to suppress it%
+ }%
+ \fi
+ }%
+ \addtocounter{udiss@langbabel}{1}%
+ \ifnum\theudiss@langbabel<\theudiss@tmp@langcnt\relax
+ \repeat
+ \fi
+\fi
+\babelfont{rm}[%
+ \ifudiss@ignorefontspec
+ IgnoreFontspecFile,%
+ \fi
+ \ifudiss@explicitext
+ Extension = {.\udiss@rmfntext},%
+ \fi
+ BoldFont = {\udiss@rmbffont},%
+ ItalicFont = {\udiss@rmitfont},%
+ BoldItalicFont = {\udiss@rmbfitfont},%
+ SlantedFont = {\udiss@rmslfont},%
+ BoldSlantedFont = {\udiss@rmbfslfont},%
+ \ifudiss@oldstylenum
+ Numbers = {OldStyle},%
+ \ifudiss@oldone
+ CharacterVariant = {6},%
+ \fi
+ \fi
+ \ifLuaTeX
+ Renderer = {HarfBuzz},%
+ \fi
+ \udiss@rmfeatures
+]{\udiss@rmfont}
+\babelfont{sf}[%
+ \ifudiss@ignorefontspec
+ IgnoreFontspecFile,%
+ \fi
+ \ifudiss@explicitext
+ Extension = {.\udiss@sffntext},%
+ \fi
+ BoldFont = {\udiss@sfbffont},%
+ ItalicFont = {\udiss@sfitfont},%
+ BoldItalicFont = {\udiss@sfbfitfont},%
+ SlantedFont = {\udiss@sfslfont},%
+ BoldSlantedFont = {\udiss@sfbfslfont},%
+ \ifudiss@oldstylenum
+ Numbers = {OldStyle},%
+ \ifudiss@oldone
+ CharacterVariant = {6},%
+ \fi
+ \fi
+ \ifLuaTeX
+ Renderer = {HarfBuzz},%
+ \fi
+ \udiss@sffeatures
+]{\udiss@sffont}
+\babelfont{tt}[%
+ \ifudiss@ignorefontspec
+ IgnoreFontspecFile,%
+ \fi
+ \ifudiss@explicitext
+ Extension = {.\udiss@ttfntext},%
+ \fi
+ BoldFont = {\udiss@ttbffont},%
+ ItalicFont = {\udiss@ttitfont},%
+ BoldItalicFont = {\udiss@ttbfitfont},%
+ SlantedFont = {\udiss@ttslfont},%
+ BoldSlantedFont = {\udiss@ttbfslfont},%
+ \ifLuaTeX
+ Renderer = {HarfBuzz},%
+ \fi
+ \udiss@ttfeatures
+]{\udiss@ttfont}
+\RequirePackage{unicode-math}
+\expanded{%
+ \setmathfont[%
+ \ifudiss@ignorefontspec%
+ IgnoreFontspecFile,%
+ \fi%
+ \ifudiss@explicitext
+ Extension = {.\udiss@mathfntext},%
+ \fi
+ BoldFont = {\udiss@mathbffont},%
+ SlantedFont = {\udiss@mathfont},%
+ BoldSlantedFont = {\udiss@mathbffont},%
+ \udiss@mathfeatures%
+ ]{\udiss@mathfont}%
+}
+\RequirePackage{graphicx}
+\RequirePackage{xcolor}
+\RequirePackage{csquotes}
+\ifudiss@ccbysa
+ \RequirePackage[%
+ hyperxmp = {false},%
+ type = {CC},%
+ modifier = {by-sa},%
+ version = {4.0}%
+ ]{doclicense}
+\fi
+\ifudiss@colors
+ \colorlet{udisslink}{red!60!black}
+ \colorlet{udissurl}{blue!60!black}
+ \colorlet{udisscite}{green!60!black}
+\else
+ \colorlet{udisslink}{black}
+ \colorlet{udissurl}{black}
+ \colorlet{udisscite}{black}
+\fi
+\AddToHook{begindocument/before}{%
+ \ifdefined\udiss@title
+ \else
+ \def\udiss@title{\textbf{-NoValidTitle-}}%
+ \ClassError{udiss}{%
+ Title not given%
+ }{%
+ `title' is a compulsory field. Provide it in the
+ preamble like in the following:%
+ \MessageBreak
+ \MessageBreak
+ ----8<-----------------------8<----%
+ \MessageBreak\MessageBreak
+ \space\space\string\title{title-of-the-dissertation}%
+ \MessageBreak\MessageBreak
+ ----8<-----------------------8<----%
+ \MessageBreak
+ }%
+ \fi
+ \ifdefined\udiss@author
+ \else
+ \def\udiss@author{\textbf{-NoValidAuthor-}}%
+ \ClassError{udiss}{%
+ No author given in a normal (non-blind) document%
+ }{%
+ Do you want a blind document? If yes, then use the
+ package option `blind' like\MessageBreak in the
+ following:%
+ \MessageBreak
+ ----8<------------------8<----%
+ \MessageBreak\MessageBreak
+ \space\space\string\documentclass[blind]{udiss}%
+ \MessageBreak\MessageBreak
+ ----8<------------------8<----%
+ \MessageBreak
+ Otherwise, `author' is a compulsory field. Provide it
+ in the preamble like in\MessageBreak the following:%
+ \MessageBreak
+ ----8<-------------------------8<----%
+ \MessageBreak\MessageBreak
+ \space\space\string\author{author-name}%
+ \MessageBreak\MessageBreak
+ ----8<-------------------------8<----%
+ \MessageBreak
+ }%
+ \fi
+ \ifdefined\udiss@stream
+ \else
+ \def\udiss@stream{\textbf{-NoValidStream-}}%
+ \ClassError{udiss}{%
+ Stream not given%
+ }{%
+ `stream' is a compulsory field. Provide it in the
+ preamble like in the following:%
+ \MessageBreak
+ \MessageBreak
+ ----8<-----------------------8<----%
+ \MessageBreak\MessageBreak
+ \space\space\string\stream{stream-of-the-candidate}%
+ \MessageBreak\MessageBreak
+ ----8<-----------------------8<----%
+ \MessageBreak
+ }%
+ \fi
+ \ifdefined\udiss@discipline
+ \else
+ \def\udiss@discipline{\textbf{-NoValidDiscipline-}}%
+ \ClassError{udiss}{%
+ Discipline not given%
+ }{%
+ `discipline' is a compulsory field. Provide it in the
+ preamble like in the following:%
+ \MessageBreak
+ \MessageBreak
+ ----8<-----------------------8<----%
+ \MessageBreak\MessageBreak
+ \space\space\string\discipline%
+ {discipline-of-the-candidate}%
+ \MessageBreak\MessageBreak
+ ----8<-----------------------8<----%
+ \MessageBreak
+ }%
+ \fi
+ \ifdefined\udiss@degree
+ \else
+ \def\udiss@degree{\textbf{-NoValidDegree-}}%
+ \ClassError{udiss}{%
+ Degree not given%
+ }{%
+ `degree' is a compulsory field. Provide it in the
+ preamble like in the following:%
+ \MessageBreak
+ \MessageBreak
+ ----8<-----------------------8<----%
+ \MessageBreak\MessageBreak
+ \space\space\string\degree{degree-of-the-candidate}%
+ \MessageBreak\MessageBreak
+ ----8<-----------------------8<----%
+ \MessageBreak
+ }%
+ \fi
+ \ifdefined\udiss@supervisor
+ \else
+ \def\udiss@title{\textbf{-NoValidTitle-}}%
+ \ClassError{udiss}{%
+ No supervisor given in a normal (non-blind) document%
+ }{%
+ Do you want a blind document? If yes, then use the
+ package option `blind' like\MessageBreak in the
+ following:%
+ \MessageBreak
+ ----8<------------------8<----%
+ \MessageBreak\MessageBreak
+ \space\space\string\documentclass[blind]{udiss}%
+ \MessageBreak\MessageBreak
+ ----8<------------------8<----%
+ \MessageBreak
+ Otherwise, `supervisor' is a compulsory field. Provide
+ it in the preamble like\MessageBreak in the
+ following:%
+ \MessageBreak
+ ----8<-------------------------8<----%
+ \MessageBreak\MessageBreak
+ \space\space\string\supervisor{supervisor's-name}%
+ \MessageBreak\MessageBreak
+ ----8<-------------------------8<----%
+ \MessageBreak
+ }%
+ \fi
+ \ifdefined\udiss@university
+ \else
+ \def\udiss@university{\textbf{-NoValidUniversity-}}%
+ \ClassError{udiss}{%
+ No university given in a normal (non-blind) document%
+ }{%
+ Do you want a blind document? If yes, then use the
+ package option `blind' like\MessageBreak in the
+ following:%
+ \MessageBreak
+ ----8<------------------8<----%
+ \MessageBreak\MessageBreak
+ \space\space\string\documentclass[blind]{udiss}%
+ \MessageBreak\MessageBreak
+ ----8<------------------8<----%
+ \MessageBreak
+ Otherwise, `university' is a compulsory field. Provide
+ it in the preamble like\MessageBreak in the
+ following:%
+ \MessageBreak
+ ----8<-------------------------8<----%
+ \MessageBreak\MessageBreak
+ \space\space\string\university{university-name}%
+ \MessageBreak\MessageBreak
+ ----8<-------------------------8<----%
+ \MessageBreak
+ }%
+ \fi
+ \ifdefined\udiss@department
+ \else
+ \def\udiss@department{\textbf{-NoValidDepartment-}}%
+ \ClassError{udiss}{%
+ No department given in a normal (non-blind) document%
+ }{%
+ Do you want a blind document? If yes, then use the
+ package option `blind' like\MessageBreak in the
+ following:%
+ \MessageBreak
+ ----8<------------------8<----%
+ \MessageBreak\MessageBreak
+ \space\space\string\documentclass[blind]{udiss}%
+ \MessageBreak\MessageBreak
+ ----8<------------------8<----%
+ \MessageBreak
+ Otherwise, `department'\space is a compulsory field.
+ Provide it in the preamble like in\MessageBreak the
+ following:%
+ \MessageBreak
+ ----8<-------------------------8<----%
+ \MessageBreak\MessageBreak
+ \space\space\string\department{department-name}%
+ \MessageBreak\MessageBreak
+ ----8<-------------------------8<----%
+ \MessageBreak
+ }%
+ \fi
+ \ifudiss@print
+ \else
+ \RequirePackage{hyperref}%
+ \RequirePackage{hyperxmp}%
+ \hypersetup{%
+ unicode,%
+ colorlinks,%
+ pdftitle = {\udiss@title}%
+ }%
+ \ifudiss@subtitle
+ \hypersetup{%
+ pdfsubject = {\udiss@subtitle}%
+ }%
+ \fi
+ \ifudiss@blind
+ \else
+ \hypersetup{%
+ pdfauthor = {\udiss@author},%
+ pdfcopyright = {%
+ \udiss@title\textLF
+ \udiss@local@copyright\
+ ©
+ \udiss@copyrightable@years\
+ \udiss@author\textLF
+ \udiss@license@notice
+ },%
+ }%
+ \ifudiss@free@culture
+ \hypersetup{%
+ pdflicenseurl = {%
+ \udiss@free@license@url
+ }%
+ }%
+ \fi
+ \fi
+ \ifudiss@colors
+ \hypersetup{%
+ linkcolor = {\udiss@int@link@color},%
+ urlcolor = {\udiss@int@url@color},%
+ citecolor = {\udiss@int@cite@color}%
+ }%
+ \else
+ \hypersetup{%
+ hidelinks%
+ }%
+ \fi
+ \fi
+}
+\AddToHook{begindocument/end}{%
+ \begingroup
+ \thispagestyle{titlingpage}%
+ \ifudiss@ftitle
+ \setlength{\fboxsep}{25pt}%
+ \noindent\fbox{%
+ \begin{minipage}%
+ [c][\dimexpr\textheight-2\fboxsep-2\fboxrule]%
+ [c]{\dimexpr\linewidth-2\fboxsep-2\fboxrule}%
+ \fi
+ \hspace{0pt}%
+ \vspace{3em}%
+ \begin{center}
+ \begingroup
+ \udiss@title@shape
+ \ifx\udiss@title@font\empty
+ \else
+ \fontspec[\udiss@title@fontfeats]%
+ {\udiss@title@font}%
+ \fi
+ \udiss@title@size
+ \color{\udiss@title@color}%
+ \udiss@title
+ \endgroup
+
+ \medskip
+
+ \ifudiss@subtitle
+ \begingroup
+ \udiss@subtitle@shape
+ \ifx\udiss@subtitle@font\empty
+ \else
+ \fontspec[\udiss@subtitle@fontfeats]%
+ {\udiss@subtitle@font}%
+ \fi
+ \udiss@subtitle@size
+ \color{\udiss@subtitle@color}%
+ \udiss@subtitle
+ \endgroup
+ \fi
+
+ \vfill
+
+ \ifudiss@blind
+ \else
+ \begingroup
+ \udiss@author@shape
+ \ifx\udiss@author@font\empty
+ \else
+ \fontspec[\udiss@author@fontfeats]%
+ {\udiss@author@font}%
+ \fi
+ \udiss@author@size
+ \color{\udiss@author@color}%
+ \udiss@author
+ \ifudiss@pronouns
+ \begingroup
+ \space
+ \addfontfeature{Scale={0.6}}%
+ \udiss@pronouns
+ \endgroup
+ \fi
+ \endgroup
+
+ \vspace{2em}%
+ \fi
+
+ \begingroup
+ \udiss@fulfilment@shape
+ \ifx\udiss@fulfilment@font\empty
+ \else
+ \fontspec[\udiss@fulfilment@fontfeats]%
+ {\udiss@fulfilment@font}%
+ \fi
+ \udiss@fulfilment@size
+ \color{\udiss@fulfilment@color}%
+ \udiss@fulfilment
+ \endgroup
+
+ \vfill
+
+ \begingroup
+ \udiss@uni@shape
+ \ifx\udiss@uni@font\empty
+ \else
+ \fontspec[\udiss@university@fontfeats]%
+ {\udiss@uni@font}%
+ \fi
+ \udiss@uni@size
+ \color{\udiss@uni@color}%
+ \udiss@university
+ \endgroup
+
+ \vspace{0.5em}%
+
+ \begingroup
+ \udiss@dept@shape
+ \ifx\udiss@dept@font\empty
+ \else
+ \fontspec[\udiss@dept@fontfeats]%
+ {\udiss@dept@font}%
+ \fi
+ \udiss@dept@size
+ \color{\udiss@dept@color}%
+ \udiss@department
+ \endgroup
+
+ \ifudiss@logo
+ \bigskip
+ \ifudiss@texlogo
+ \udiss@texlogo
+ \fi
+ \includegraphics[%
+ width = {%
+ \udiss@logo@width\linewidth
+ },%
+ height = {%
+ \udiss@logo@hght\textheight
+ }%
+ ]{%
+ \udiss@logo
+ }%
+ \fi
+ \end{center}
+ \ifudiss@ftitle
+ \end{minipage}%
+ }%
+ \fi
+
+ \newpage
+
+ \ifudiss@blind
+ \else
+ \ifudiss@free@culture
+ \thispagestyle{titlingpage}%
+ \vspace*{\stretch{1}}
+ \begin{quote}
+ \setlength{\parindent}{0pt}%
+ \begingroup
+ \begin{minipage}{\linewidth}
+ \bfseries
+ \udiss@title
+
+ \udiss@local@copyright\
+ ©
+ \udiss@copyrightable@years\
+ \udiss@author
+
+ \medskip
+ \noindent\hrule \linewidth 0.4pt\relax
+ \end{minipage}
+ \endgroup
+
+ \ifudiss@gfdl
+ Permission is granted to copy, distribute and/or
+ modify this document under the terms of the GNU
+ Free Documentation License, Version 1.3 or any
+ later version published by the Free Software
+ Foundation; with no Invariant Sections, no
+ Front-Cover Texts, and no Back-Cover Texts. A copy
+ of the license is included in the section entitled
+ \enquote{GNU Free Documentation License}.%
+ \fi
+ \ifudiss@ccbysa
+ \begin{minipage}{\linewidth}
+ \doclicenseThis
+ \end{minipage}
+ \fi
+ \vspace{\stretch{3}}
+ \end{quote}
+ \newpage
+ \fi
+ \fi
+
+ \tableofcontents*
+
+ \newpage
+
+ \ifudiss@blind
+ \else
+ \ifudiss@declaration
+ \thispagestyle{empty}%
+ \begin{center}%
+ {%
+ \LARGE\bfseries
+ \udiss@decllocal
+ }%
+ \end{center}%
+
+ \udiss@declaration
+ \fi
+ \fi
+
+ \newpage
+
+ \ifudiss@lot
+ \listoftables
+ \fi
+
+ \newpage
+
+ \ifudiss@lof
+ \listoffigures
+ \fi
+ \endgroup
+}%
+\ifudiss@blind
+\else
+ \ifudiss@gfdl
+ \AddToHook{enddocument}{%
+ \newpage
+ \begingroup
+ \pagestyle{plain}%
+ \addcontentsline{toc}%
+ {chapter}%
+ {GNU Free Documentation License}%
+ \input{gfdl-tex-1p3}%
+ \clearpage
+ \endgroup
+ }%
+ \fi
+\fi
+\endinput
+%%
+%% End of file `udiss.cls'.
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty
index e5f9a55f54f..588aeacca40 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.10} {2024/04/20}
+%% This is version {2.11} {2024/10/17}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-abnt}
- {2024/04/20}
- {2.10}
+ {2024/10/17}
+ {2.11}
{UFRGS/CCA ABNT layout}
@@ -42,8 +42,8 @@
{
name .code:n = {ufrgscca-abnt} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/20},
- version .code:n = {2.10} ,
+ date .code:n = {2024/10/17},
+ version .code:n = {2.11} ,
description .code:n = {UFRGS/CCA~ abnt~layout}
}
\cs_if_exist:NF \PkgInfo
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-en.def b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-en.def
index a6d20f03495..5f875574bec 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-en.def
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-en.def
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.10} {2024/04/20}
+%% This is version {2.11} {2024/10/17}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-ptBR.def b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-ptBR.def
index 06214fc3691..7f26ca9990a 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-ptBR.def
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-ptBR.def
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.10} {2024/04/20}
+%% This is version {2.11} {2024/10/17}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty
index a0ba2b2727c..704165b85ad 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.10} {2024/04/20}
+%% This is version {2.11} {2024/10/17}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-coord}
- {2024/04/20}
- {2.10}
+ {2024/10/17}
+ {2.11}
{UFRGS/CCA coord commands}
@@ -42,8 +42,8 @@
{
name .code:n = {ufrgscca-coord} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/20},
- version .code:n = {2.10} ,
+ date .code:n = {2024/10/17},
+ version .code:n = {2.11} ,
description .code:n = {UFRGS/CCA~ coordination~ report~ commands}
}
\cs_if_exist:NF \PkgInfo
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty
index 325724f4f7f..f5dac402270 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.10} {2024/04/20}
+%% This is version {2.11} {2024/10/17}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-core}
- {2024/04/20}
- {2.10}
+ {2024/10/17}
+ {2.11}
{UFRGS/CCA core commands}
@@ -42,8 +42,8 @@
{
name .code:n = {ufrgscca-core} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/20},
- version .code:n = {2.10} ,
+ date .code:n = {2024/10/17},
+ version .code:n = {2.11} ,
description .code:n = {UFRGS/CCA~core~commands/data}
}
\cs_if_exist:NF \PkgInfo
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty
index 6ad4cadcf5f..a0ad4abfbb5 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.10} {2024/04/20}
+%% This is version {2.11} {2024/10/17}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-cover}
- {2024/04/20}
- {2.10}
+ {2024/10/17}
+ {2.11}
{UFRGS/CCA cover commands}
@@ -42,8 +42,8 @@
{
name .code:n = {ufrgscca-cover} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/20},
- version .code:n = {2.10} ,
+ date .code:n = {2024/10/17},
+ version .code:n = {2.11} ,
description .code:n = {UFRGS/CCA~ cover~pages}
}
\cs_if_exist:NF \PkgInfo
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty
index 43b6ac7492e..b8e4a992b84 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.10} {2024/04/20}
+%% This is version {2.11} {2024/10/17}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-curr}
- {2024/04/20}
- {2.10}
+ {2024/10/17}
+ {2.11}
{UFRGS/CCA curricula commands}
%%%%%%%
@@ -41,8 +41,8 @@
{
name .code:n = {ufrgscca-curr} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/20},
- version .code:n = {2.10} ,
+ date .code:n = {2024/10/17},
+ version .code:n = {2.11} ,
description .code:n = {UFRGS/CCA~ curricula~ commands}
}
\cs_if_exist:NF \PkgInfo
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty
index 29cca50279f..990fb04e05f 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.10} {2024/04/20}
+%% This is version {2.11} {2024/10/17}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-forms}
- {2024/04/20}
- {2.10}
+ {2024/10/17}
+ {2.11}
{UFRGS/CCA forms commands}
@@ -42,8 +42,8 @@
{
name .code:n = {ufrgscca-forms} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/20},
- version .code:n = {2.10} ,
+ date .code:n = {2024/10/17},
+ version .code:n = {2.11} ,
description .code:n = {UFRGS/CCA~ forms~commands}
}
\cs_if_exist:NF \PkgInfo
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty
index 16add4b3853..6df6b4281c6 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.10} {2024/04/20}
+%% This is version {2.11} {2024/10/17}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-lists}
- {2024/04/20}
- {2.10}
+ {2024/10/17}
+ {2.11}
{UFRGS/CCA auxiliary lists commands}
@@ -42,8 +42,8 @@
{
name .code:n = {ufrgscca-lists} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/20} ,
- version .code:n = {2.10} ,
+ date .code:n = {2024/10/17} ,
+ version .code:n = {2.11} ,
description .code:n = {UFRGS/CCA~Auxiliary~ lists~ commands}
}
\cs_if_exist:NF \PkgInfo
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty
index d136068d076..9bdf02617d6 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.10} {2024/04/20}
+%% This is version {2.11} {2024/10/17}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-ppc}
- {2024/04/20}
- {2.10}
+ {2024/10/17}
+ {2.11}
{UFRGS/CCA PPC commands}
%%%%%%%
@@ -41,8 +41,8 @@
{
name .code:n = {ufrgscca-ppc} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/20},
- version .code:n = {2.10} ,
+ date .code:n = {2024/10/17},
+ version .code:n = {2.11} ,
description .code:n = {UFRGS/CCA~ auxiliary~ PPC-related~ (indicators)~ commands}
}
\cs_if_exist:NF \PkgInfo
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls
index 4515dc3b062..3e225652370 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.10} {2024/04/20}
+%% This is version {2.11} {2024/10/17}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplClass
{ufrgscca}
- {2024/04/20}
- {2.10}
+ {2024/10/17}
+ {2.11}
{UFRGS/CCA class}
@@ -42,8 +42,8 @@
{
name .code:n = {ufrgscca} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/20},
- version .code:n = {2.10} ,
+ date .code:n = {2024/10/17},
+ version .code:n = {2.11} ,
description .code:n = {UFRGS/CCA~a~report~based~class~bundle}
}
\cs_if_exist:NF \PkgInfo
diff --git a/Master/texmf-dist/tex/latex/unbtex/unbtex.cls b/Master/texmf-dist/tex/latex/unbtex/unbtex.cls
index 332fdce505a..4da464ac9f6 100644
--- a/Master/texmf-dist/tex/latex/unbtex/unbtex.cls
+++ b/Master/texmf-dist/tex/latex/unbtex/unbtex.cls
@@ -1,15 +1,15 @@
%%
%% UnBTeX: A class for bachelor, master, and doctoral thesis at the
%% University of Brasilia (UnB), Brazil
-%% Version 1.5.2 2024/07/04
-%% Copyright (C) 2021-2024 by Henrique C. Ferreira <hcferreira@unb.br>
+%% Version 1.5.4 2025/01/10
+%% Copyright (C) 2021-2025 by Henrique C. Ferreira <hcferreira@unb.br>
%%
%% This class file may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.3 of this license
%% or (at your option) any later version. The latest version of this
%% license is in:
%%
-%% http://www.latex-project.org/lppl.txt
+%% https://www.latex-project.org/lppl.txt
%%
%% and version 1.3 or later is part of all distributions of LaTeX version
%% 2005/12/01 or later.
@@ -21,7 +21,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{unbtex}[2024/07/04 v1.5.2 Modelo da Universidade de Brasília baseado em abnTeX2]
+\ProvidesClass{unbtex}[2024/01/10 v1.5.4 Modelo da Universidade de Brasília baseado em abnTeX2]
% ------------------------------------------------------------------------
% Opções para a classe
@@ -30,7 +30,7 @@
% ---
% Opção para definição de idioma principal
% ---
-\def\idioma{brazil} % Português por default
+\def\idioma{brazil} % Português, por default
\DeclareOption{idioma=brazil}{\def\idioma{brazil}}
\DeclareOption{idioma=english}{\def\idioma{english}}
% ---
@@ -38,19 +38,35 @@
% ---
% Opção para definição de estilo de referências bibliográficas
% ---
-\def\bibsty{alf} % Autor-data por default
+\def\bibsty{alf} % Autor-data, por default
\DeclareOption{bib=alf}{\def\bibsty{alf}}
\DeclareOption{bib=num}{\def\bibsty{num}}
% ---
% ---
+% Opção para indicar as páginas que cada referência é citada
+% ---
+\def\refpage{off} % Desabilitada, por default
+\DeclareOption{refback}{\def\refpage{on}}
+% ---
+
+% ---
+% Opção para definição de estilo de numeração de figuras, tabelas, etc
+% ---
+\def\numb{chap} % Numeração por capítulo, por default
+\DeclareOption{numb=chap}{\def\numb{chap}}
+\DeclareOption{numb=abnt}{\def\numb{abnt}}
+% ---
+
+% ---
% Repassa demais opções à classe abntex2
% ---
\DeclareOption*{
\PassOptionsToClass{\CurrentOption}{abntex2}
}
+\PassOptionsToPackage{english,brazil}{babel}
\ProcessOptions\relax
-\LoadClass[12pt,a4paper,onecolumn,openright]{abntex2}
+\LoadClass[12pt,a4paper]{abntex2}
% ---
% ------------------------------------------------------------------------
@@ -60,7 +76,7 @@
% ---
% Pacotes matemáticos
% ---
-\RequirePackage{mathtools} % Melhoria nas equaões
+\RequirePackage{mathtools} % Melhoria nas equações
\RequirePackage{amsthm} % Para configuração de ambientes do tipo teorema
% ---
@@ -69,18 +85,12 @@
% ---
\RequirePackage{stickstootext} % Fonte principal (Stix2)
\RequirePackage[stickstoo,vvarbb]{newtxmath} % Fonte matemática (Stix2)
+\RequirePackage[cal=stixplain,scr=stixtwofancy,frak=stixtwo,bb=stix]{mathalfa}
\RequirePackage[scale=0.90]{tgheros} % Fonte sans serif (TeX Gyre Heros)
\RequirePackage[scale=1]{inconsolata} % Fonte monoespaçada
% ---
% ---
-% Pacotes para figuras
-% ---
-\RequirePackage[captionskip=8pt]{subfig} % Permite fazer subfiguras
-%\RequirePackage[skip=8pt]{subcaption} % Permite fazer subfiguras
-% ---
-
-% ---
% Cores verde e azul UnB
% http://www.marca.unb.br/arquivosdigitais/files/guia_pratico/guia_pratico.pdf
% ---
@@ -88,7 +98,6 @@
\RequirePackage[dvipsnames]{xcolor}
\definecolor{verdeunb}{cmyk}{1,0,1,0.2}
\definecolor{azulunb}{cmyk}{1,0.65,0,0.35}
-
% Cores nos títulos
\renewcommand{\tocheadstart}{}
\renewcommand{\ABNTEXchapterfont}{\bfseries\color{verdeunb}\sffamily}
@@ -96,8 +105,68 @@
% ---
% ---
-% Configurações para tabelas
+% Configurações para a opção article
+% ---
+\ifthenelse{\equal{\ABNTEXistwocolumn}{true}}{
+\renewcommand{\ABNTEXisarticle}{true}}{}
+\ifthenelse{\equal{\ABNTEXisarticle}{true}}{
+\chapterstyle{article}
+\numberwithin{section}{chapter}
+\setlength{\droptitle}{-2em}
+%\addtolength{\droptitle}{-1.5\baselineskip}
+\renewcommand{\maketitlehookd}{\vskip -.8em}
+\renewcommand{\chaptitlefont}{\bfseries\sffamily\Large\color{verdeunb}}
+\setsecheadstyle{\large\bfseries\sffamily\color{verdeunb}}
+\setsubsecheadstyle{\normalfont\bfseries\sffamily}
+\renewcommand{\chapternamenum}[1]{\ifanappendix \chaptitlefont\appendixname\space#1\else #1\fi}
+\renewcommand{\afterchapternum}{\ifanappendix\space\hspace{-20pt}\enspace\textendash\enspace\fi}
+\setlength\absleftindent{0cm}
+\setlength\absrightindent{0cm}
+\renewcommand{\abstracttextfont}{\normalfont\normalsize}
+\ifthenelse{\equal{\ABNTEXistwocolumn}{false}}{
+\setlength{\parindent}{2.3em} % Tamanho da indentação da primeira linha do parágrafo
+\setlength{\parskip}{.1\baselineskip plus .05\baselineskip} % Espaço entre parágrafos
+\setlrmarginsandblock{2cm}{2cm}{*}
+\setulmarginsandblock{2.5cm}{2cm}{*}
+\checkandfixthelayout[nearest]}{
+\input{mem11.clo} % Tamanho da fonte
+\SingleSpacing
+\setlength{\parindent}{1.8em}
+\AtBeginEnvironment{thebibliography}{\linespread{0.8}\selectfont}
+\setlength{\columnsep}{7.5mm}
+\def\@mathmargin{0pt}
+\setlrmarginsandblock{1.5cm}{1.5cm}{*}
+\setulmarginsandblock{2.5cm}{2cm}{*}
+\checkandfixthelayout[nearest]}
+\ifthenelse{\boolean{ABNTEXsumario-tradicional}}{}{
+\renewcommand{\tocpartapendices}{\addtocontents{toc}{
+\cftsetindents{chapter}{\cftlastnumwidth}{2em}}\cftinserthook{toc}{A}}
+\renewcommand{\tocpartanexos}{\addtocontents{toc}{
+\cftsetindents{chapter}{\cftlastnumwidth}{2em}}
+\cftinserthook{toc}{A}}}}{ % Opção article não utilizada
+\setlrmarginsandblock{3cm}{2cm}{*} % Margens esquerda e direita
+\setulmarginsandblock{3cm}{2cm}{*} % Margens superior e inferior
+\checkandfixthelayout[nearest]
+\setlength{\parindent}{2.3em} % Tamanho da indentação da primeira linha do parágrafo
+\setlength{\parskip}{.1\baselineskip plus .05\baselineskip} % Espaço entre parágrafos
+}
+\renewcommand{\maketitlehookb}{\vskip -1.5\topsep\vskip -1.5\partopsep}
+\pretitle{\begin{center}\color{verdeunb}\LARGE\sffamily\bfseries}
+\posttitle{\par\end{center}\vskip 0.5em}
+\renewcommand{\and}{\unskip, }
+% ---
+
+% ---
+% Pacotes para figuras
% ---
+\RequirePackage[captionskip=8pt]{subfig} % Permite fazer subfiguras
+%\RequirePackage[skip=8pt]{subcaption} % Permite fazer subfiguras
+% ---
+
+% ---
+% Configurações para tabelas e quadros
+% ---
+\RequirePackage{longtable}% Para tabelas longas
\RequirePackage{multirow} % Para combinar linhas nas tabelas
\RequirePackage{colortbl} % Permite alterar cores de linhas e células das tabelas
\arrayrulecolor{verdeunb} % Define a cor das linhas das tabelas
@@ -107,6 +176,105 @@
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
+
+% Criacao dos ambientes flutuantes para quadros
+\newfloat[chapter]{quadro}{loq}{\Quadroname}
+\newlistof{listofquadros}{loq}{\listquadroname}
+\newlistentry{quadro}{loq}{0}
+\renewcommand{\cftquadroname}{\Quadroname\space}
+\IfStrEq{\numb}{chap}
+{\cftsetindents{quadro}{0em}{2.3em}}{\cftsetindents{quadro}{0em}{1.8em}}
+\renewcommand{\thequadro}{\thechapter.\arabic{quadro}}
+\def\QT@c@ption#1[#2]#3{%
+ \LT@makecaption#1\fnum@quadro{#3}%
+ \def\@tempa{#2}%
+ \ifx\@tempa\@empty\else
+ {\let\\\space
+ \addcontentsline{\ext@quadro}{quadro}{\protect\numberline{\thequadro}{#2}}}%
+ \fi}
+\newenvironment{longquadro}
+{\let\LT@c@ption\QT@c@ption\let\c@table\c@quadro\crefalias{table}{quadro}
+\renewcommand{\theHtable}{quadro\thechapter.\arabic{quadro}}\longtable}
+{\endlongtable}
+% ---
+
+% ---
+% Pacotes para algoritmos
+% ---
+\IfStrEq{\idioma}{brazil}
+{\usepackage[algochapter,linesnumbered,boxed,portuguese,onelanguage]{algorithm2e}
+\SetAlgorithmName{Algoritmo}{algoritmo}{Lista de algoritmos}}
+{\usepackage[algochapter,linesnumbered,boxed,english,onelanguage]{algorithm2e}
+\SetAlgorithmName{Algorithm}{algorithm}{List of algorithms}}
+\SetAlgoCaptionSeparator{\ABNTEXcaptiondelim}
+\renewcommand{\AlCapFnt}{\normalfont\small}
+\renewcommand{\AlCapNameFnt}{\small}
+\renewcommand{\@algocf@capt@boxed}{above}
+\DontPrintSemicolon
+\setlength{\algomargin}{1.8em}
+\xpatchcmd\algocf@makecaption{\hbox}{\hskip\algomargin\hbox}{}{\fail}
+\SetAlgoInsideSkip{smallskip}
+\renewcommand*\listofalgorithms{\listoftoc[\listalgorithmcfname]{loa}}
+\newcommand*{\noaddvspace}{\renewcommand*{\addvspace}[1]{}}
+\addtocontents{loa}{\protect\noaddvspace}
+% ---
+
+% ---
+% Pacote para códigos de programação
+% ---
+\RequirePackage{listings}
+% Julia (Linguagem não reconhecida automaticamente pelo pacote listings)
+\lstdefinelanguage{Julia}%
+ {morekeywords={abstract,break,case,catch,const,continue,do,else,elseif,%
+ end,export,false,for,function,immutable,import,importall,if,in,%
+ macro,module,otherwise,quote,return,switch,true,try,type,typealias,%
+ using,while},%
+ sensitive=true,%
+ alsoother={\$},%
+ morecomment=[l]\#,%
+ morecomment=[n]{\#=}{=\#},%
+ morestring=[s]{"}{"},%
+ morestring=[m]{'}{'},%
+}[keywords,comments,strings]%
+% Configurações gerais
+\definecolor{mygreen}{RGB}{28,172,0} % Color values Red, Green, Blue
+\definecolor{mylilas}{RGB}{170,55,241}
+\lstset{%
+ basicstyle=\linespread{1.08}\ttfamily\footnotesize,
+ numbers=left,%
+ numberstyle={\tiny \color{black}}, % Size of the numbers
+ numbersep=9pt, % This defines how far the numbers are from the text
+ backgroundcolor=\color{gray!10},
+ tabsize=2,
+ frame=single,
+ rulecolor=\color{black!30},
+ captionpos=t,
+ belowcaptionskip=10pt,
+ escapeinside={\%*}{*)},
+ breaklines=true,%
+ breakatwhitespace=true,
+ framextopmargin=2pt,
+ framexbottommargin=2pt,
+ keywordstyle=\color{blue},%
+ morekeywords=[2]{1}, keywordstyle=[2]{\color{black}},
+ identifierstyle=\color{black},%
+ stringstyle=\color{mylilas},
+ commentstyle=\color{mygreen},%
+ extendedchars=true,
+ inputencoding=utf8,
+ showstringspaces=false,% Without this there will be a symbol in the places where there is a space
+ literate={á}{{\'a}}1 {ã}{{\~a}}1 {é}{{\'e}}1 {ç}{{\c{c}}}1 {â}{{\^a}}1 {õ}{{\~o}}1 {ú}{{\'u}}1 {ó}{{\'o}}1 {í}{{\'i}}1 {Í}{{\'I}}1
+}
+% Configura lista de códigos
+\AtBeginDocument{%
+\renewcommand\lstlistoflistings{\bgroup
+ \let\contentsname\lstlistlistingname
+ \IfStrEq{\numb}{chap}
+ {\def\l@lstlisting##1##2{\@dottedtocline{1}{0em}{2.3em}{\lstlistingname~##1}{##2}}}
+ {\def\l@lstlisting##1##2{\@dottedtocline{1}{0em}{1.8em}{\lstlistingname~##1}{##2}}}
+ \let\lst@temp\@starttoc \def\@starttoc##1{\lst@temp{lol}}%
+ \tableofcontents \egroup}
+}
% ---
% ---
@@ -115,18 +283,19 @@
\RequirePackage{indentfirst} % Indenta o primeiro parágrafo de cada seção.
\RequirePackage{microtype} % Para melhorias de justificação
\RequirePackage{icomma} % Configura casas decimais separadas por vírgula
-\setlength{\parindent}{3em} % Tamanho da indentação da primeira linha do parágrafo
\frenchspacing % Retira espaço extra entre as frases (após o ponto final)
-\setlength{\parskip}{3pt plus 1pt minus 1pt} % Espaço entre parágrafos
\pdfminorversion=7 % Configuração da versão do arquivo pdf produzido
-% Configurações das margens e cabeçalho
-\AtBeginDocument{
-\setlrmarginsandblock{3cm}{2cm}{*} % Margens esquerda e direita
-\setulmarginsandblock{3cm}{2cm}{*} % Margens superior e inferior
-\checkandfixthelayout[nearest] % Implementa as margens
-\pagestyle{myheadings} % Cabeçalho com linha e numeração da página
-}
+% Configurações dos cabeçalhos
+\makepagestyle{simple} % Cabeçalho com número de pagina e linha horizontal
+\makeevenhead{simple}{\footnotesize\thepage}{}{}
+\makeoddhead{simple}{}{}{\footnotesize\thepage}
+\makeheadrule{simple}{\textwidth}{\normalrulethickness}
+\makepagestyle{plain} % Cabeçalho com número de pagina e sem linha horizontal
+\makeevenhead{plain}{\footnotesize\thepage}{}{}
+\makeoddhead{plain}{}{}{\footnotesize\thepage}
+\newcommand{\textualsimples}{\ifthenelse{\equal{\ABNTEXisarticle}{true}}
+{\pagestyle{plain}}{\pagestyle{simple}\aliaspagestyle{chapter}{abntchapfirst}}}
% Espaçamento para notas de rodapé
\setlength{\skip\footins}{20pt plus 2pt minus 2pt} % Espaço entre o texto e as notas de rodapé
@@ -139,33 +308,47 @@
\setlength{\intextsep}{14pt plus 2pt minus 2pt} % Espaçamento entre texto e floats no meio da página
% Ajusta espaçamento nos ambientes itemize, enumerate, description e alineas
-\setlist[itemize]{topsep=0pt,itemsep=0pt,leftmargin=\parindent}
-\setlist[enumerate]{topsep=0pt,itemsep=0pt,leftmargin=\parindent}
-\setlist[description]{topsep=0pt,itemsep=0pt,leftmargin=\parindent}
-\setlist[alineas,1]{label={\alph*)},topsep=0pt,itemsep=0pt,leftmargin=\parindent}%
+\setlist[itemize,enumerate,description]{topsep=1pt,itemsep=0pt,parsep=1pt,partopsep=1pt,leftmargin=\parindent}
+\setlist[alineas,1]{label={\alph*)},topsep=1pt,itemsep=0pt,parsep=1pt,partopsep=1pt,leftmargin=\parindent}
-% Numeração por capítulo das figuras e tabelas
+% Numeração de figuras, tabelas, etc. por capítulo ou para o documento inteiro
+\AtBeginDocument{% Numeração por capítulo
+\IfStrEq{\numb}{chap}{
\renewcommand{\thefigure}{\thechapter.\arabic{figure}}\numberwithin{figure}{chapter}
\renewcommand{\thetable}{\thechapter.\arabic{table}}\numberwithin{table}{chapter}
-
+\renewcommand{\theequation}{\thechapter.\arabic{equation}}\numberwithin{equation}{chapter}
+}{% Numeração para o documento inteiro (padrão ABNT)
+\counterwithout{equation}{chapter}
+\counterwithout{quadro}{chapter}
+\counterwithout{lstlisting}{chapter}
+\counterwithout{algocf}{chapter}
+\counterwithout{theorem}{chapter}
+\counterwithout{lemma}{chapter}
+\counterwithout{proposition}{chapter}
+\counterwithout{corollary}{chapter}
+\counterwithout{definition}{chapter}
+\counterwithout{assumption}{chapter}
+\counterwithout{axiom}{chapter}
+\counterwithout{conjecture}{chapter}
+\counterwithout{property}{chapter}
+\counterwithout{example}{chapter}
+\counterwithout{exercise}{chapter}
+\counterwithout{problem}{chapter}
+\counterwithout{remark}{chapter}
+}}
% Modifica o tamanho da fonte e espaçamento entre linhas no ambiente verbatim
\RequirePackage{fvextra}
\renewenvironment{verbatim}{\VerbatimEnvironment
- \begin{Verbatim}[fontsize=\small,baselinestretch=1.1]%
+ \begin{Verbatim}[fontsize=\footnotesize,baselinestretch=1.08]%
}{%
\end{Verbatim}
}%
-\fvset{listparameters=\setlength{\topsep}{6pt}\setlength{\partopsep}{0pt}}
+\fvset{listparameters=\setlength{\topsep}{4pt}\setlength{\partopsep}{0pt}}
% ---
% ---
% Configurações do Sumário
% ---
-\settocdepth{subsection}
-\setlength{\cftbeforechapterskip}{5pt plus 1pt minus 1pt}
-\setlength{\cftbeforepartskip}{10pt plus 2pt minus 2pt}
-
-% Corrige fontes tipográficas dos anexos e apêndices no sumário
\ifthenelse{\boolean{ABNTEXsumario-abnt-6027-2012}}{
\renewcommand{\cftpartfont}{\bfseries\sffamily}
\renewcommand{\cftpartpagefont}{\bfseries\sffamily}
@@ -176,6 +359,9 @@
\renewcommand{\cftchapterfont}{\bfseries\sffamily}
\renewcommand{\cftpartpagefont}{\bfseries\sffamily}
\renewcommand{\cftchapterpagefont}{\bfseries\sffamily}
+\settocdepth{subsection}
+\setlength{\cftbeforechapterskip}{5pt plus 1pt minus 1pt}
+\setlength{\cftbeforepartskip}{10pt plus 2pt minus 2pt}
}
% Corrige warning do pacote hyperref para sumário ABNT
\renewcommand{\PRIVATEapendiceconfig}[2]{%
@@ -187,9 +373,25 @@
\renewcommand{\appendixtocname}{#2}
}
\renewcommand{\appendixpagename}{#2}
- \switchchapname{#1}
+ \ifthenelse{\boolean{ABNTEXsumario-abnt-6027-2012}}
+ {\switchchapname{\MakeTextUppercase{#1}}}{\switchchapname{#1}}
\renewcommand*{\cftappendixname}{#1 \space}
}
+% Apendices - comando
+\renewcommand{\apendices}{%
+ \PRIVATEapendiceconfig{\apendicename}{\apendicesname}
+ \appendix
+}
+% Apendices - ambiente
+\renewenvironment{apendicesenv}{%
+ \PRIVATEapendiceconfig{\apendicename}{\apendicesname}
+ \crefalias{chapter}{appendix} % Adicionado
+ \begin{appendix}
+}{
+ \end{appendix}
+ \setboolean{abntex@apendiceousecao}{false}
+ \bookmarksetup{startatroot}
+}
% Corrige nome dos anexos nas referências cruzadas
\renewcommand{\anexos}{%
\cftinserthook{toc}{AAA}
@@ -202,7 +404,8 @@
\cftinserthook{toc}{AAA}
%\PRIVATEapendiceconfig{\anexoname}{\anexosname}
\PRIVATEapendiceconfig{\Anexoname}{\Anexosname}
- \crefalias{appendix}{annex}
+ %\crefalias{appendix}{annex}
+ \crefalias{chapter}{annex}%
\begin{appendix}
\renewcommand\theHchapter{anexochapback.\arabic{chapter}}
}{%
@@ -216,8 +419,7 @@
% Configurações das legendas
% ---
% Legenda das figuras/tabelas na parte superior, tamanho da fonte e espaçamento
-\captionsetup{figureposition=t,font={small},skip=10pt}
-
+\captionsetup{font=small,belowskip=2pt}
% Espaçamento vertical do comando \legend
\renewcommand{\legend}[1]{%
\M@gettitle{#1}%
@@ -234,8 +436,7 @@
\@makecaption{}{\ABNTEXfontereduzida #1}\par
\endgroup
}
-% Espaçamento vertical do comando \fonte
-% Também define o espaçamento do comando \nota
+% Espaçamento vertical do comando \fonte (e de \nota)
\renewcommand{\fonte}[2][\fontename]{%
\M@gettitle{#2}%
\memlegendinfo{#2}%
@@ -262,69 +463,7 @@
colorlinks=true,
allcolors=azulunb,
linktocpage,
- bookmarksdepth=4
-}
-% ---
-
-% ---
-% Pacotes para inserir algoritmos
-% ---
-\RequirePackage[chapter]{algorithm}
-\RequirePackage{algpseudocode}
-% Fix anchor names for algorithm lines
-\newcounter{Halgorithmic}
-\AtBeginEnvironment{algorithmic}{\stepcounter{Halgorithmic}}
-\ExpandArgs{c}\renewcommand{theHALG@line}{\arabic{Halgorithmic}.\arabic{ALG@line}}
-% ---
-
-% ---
-% Pacote para inserir códigos de programação
-% ---
-\RequirePackage{listings}
-
-% Julia (Linguagem não reconhecida automaticamente pelo pacote listings)
-\lstdefinelanguage{Julia}%
- {morekeywords={abstract,break,case,catch,const,continue,do,else,elseif,%
- end,export,false,for,function,immutable,import,importall,if,in,%
- macro,module,otherwise,quote,return,switch,true,try,type,typealias,%
- using,while},%
- sensitive=true,%
- alsoother={\$},%
- morecomment=[l]\#,%
- morecomment=[n]{\#=}{=\#},%
- morestring=[s]{"}{"},%
- morestring=[m]{'}{'},%
-}[keywords,comments,strings]%
-
-\definecolor{mygreen}{RGB}{28,172,0} % Color values Red, Green, Blue
-\definecolor{mylilas}{RGB}{170,55,241}
-
-\lstset{%
- basicstyle=\linespread{1.1}\ttfamily\footnotesize,
- numbers=left,%
- numberstyle={\scriptsize \color{black}}, % Size of the numbers
- numbersep=9pt, % This defines how far the numbers are from the text
- backgroundcolor=\color{gray!10},
- tabsize=2,
- frame=single,
- rulecolor=\color{black!30},
- %title=\lstname,
- captionpos=t,
- belowcaptionskip=10pt,
- escapeinside={\%*}{*)},
- breaklines=true,%
- breakatwhitespace=true,
- framextopmargin=2pt,
- framexbottommargin=2pt,
- keywordstyle=\color{blue},%
- morekeywords=[2]{1}, keywordstyle=[2]{\color{black}},
- identifierstyle=\color{black},%
- stringstyle=\color{mylilas},
- commentstyle=\color{mygreen},%
- extendedchars=true,
- inputencoding=utf8,
- showstringspaces=false,% Without this there will be a symbol in the places where there is a space
- literate={á}{{\'a}}1 {ã}{{\~a}}1 {é}{{\'e}}1 {ç}{{\c{c}}}1 {â}{{\^a}}1 {õ}{{\~o}}1 {ú}{{\'u}}1 {ó}{{\'o}}1 {í}{{\'i}}1 {Í}{{\'I}}1
+ bookmarksdepth=4,
}
% ---
@@ -332,13 +471,27 @@
% Pacote para remissões internas
% ---
\IfStrEq{\idioma}{brazil}
-{\RequirePackage[nameinlink,noabbrev,brazilian]{cleveref}}{\RequirePackage[nameinlink,noabbrev,english]{cleveref}}
+{\RequirePackage[nameinlink,noabbrev,brazilian]{cleveref}}
+{\RequirePackage[nameinlink,noabbrev,english]{cleveref}}
\crefname{annex}{\anexoname}{\anexosname}
\Crefname{annex}{\Anexoname}{\Anexosname}
\crefname{listing}{\codigoname}{\codigosname}
\Crefname{listing}{\Codigoname}{\Codigosname}
\crefname{subsection}{\subsectionname}{\subsectionsname}
\Crefname{subsection}{\Subsectionname}{\Subsectionsname}
+\crefname{quadro}{\quadroname}{\quadrosname}
+\Crefname{quadro}{\Quadroname}{\Quadrosname}
+\newcommand\cref@smugglelabel{\let\cref@currentlabel\cref@gcurrentlabel@temp}
+\newcommand\cref@updatelabeldata[1]{%
+ \cref@constructprefix{#1}{\cref@result}%
+ \@ifundefined{cref@#1@alias}%
+ {\def\@tempa{#1}}%
+ {\def\@tempa{\csname cref@#1@alias\endcsname}}%
+ \protected@xdef\cref@gcurrentlabel@temp{%
+ [\@tempa][\arabic{#1}][\cref@result]%
+ \csname p@#1\endcsname\csname the#1\endcsname}%
+ \aftergroup\cref@smugglelabel}
+\AddToHook{label}{\cref@updatelabeldata{\@currentcounter}}
% ---
% ---
@@ -347,14 +500,14 @@
\RequirePackage{mdframed}
\theoremstyle{definition}
-\mdfdefinestyle{plainSty}{hidealllines=true,backgroundcolor=verdeunb!10}
+\mdfdefinestyle{plainSty}{hidealllines=true,backgroundcolor=verdeunb!10,innertopmargin=0pt}
\newmdtheoremenv[style=plainSty]{theorem}{\thname}[chapter] % Teorema
\newmdtheoremenv[style=plainSty]{lemma}{\lmname}[chapter] % Lema
\newmdtheoremenv[style=plainSty]{proposition}{\prname}[chapter] % Proposição
\newmdtheoremenv[style=plainSty]{corollary}{\crname}[chapter] % Corolário
\theoremstyle{definition}
-\mdfdefinestyle{defnSty}{hidealllines=true,backgroundcolor=azulunb!10}
+\mdfdefinestyle{defnSty}{hidealllines=true,backgroundcolor=azulunb!10,innertopmargin=0pt}
\newmdtheoremenv[style=defnSty]{definition}{\dfname}[chapter] % Definição
\newmdtheoremenv[style=defnSty]{assumption}{\aptname}[chapter] % Hipótese
\newmdtheoremenv[style=defnSty]{axiom}{\axname}[chapter] % Axioma
@@ -367,25 +520,28 @@
\theoremstyle{remark}
\let\proof\relax
\let\endproof\relax
-\newmdtheoremenv[linecolor=azulunb,linewidth=1pt,hidealllines=false]{remark}{\rmname}[chapter] % Observação
+\newmdtheoremenv[linecolor=azulunb,linewidth=1pt,hidealllines=false,innertopmargin=4pt]{remark}{\rmname}[chapter] % Observação
\newtheoremstyle{myproof}{\topsep}{\topsep}{}{}{\bfseries}{}{ }{\thmname{#1} \thmnote{#3}}
\theoremstyle{myproof}
\let\proof\relax
\let\endproof\relax
-\newmdtheoremenv[linecolor=verdeunb,linewidth=1pt,hidealllines=false]{proof}{\proofname.} % Prova
+\newmdtheoremenv[linecolor=verdeunb,linewidth=1pt,hidealllines=false,innertopmargin=0pt]{proof}{\proofname.} % Prova
\AtEndEnvironment{proof}{\hfill$\square$}
-\newmdtheoremenv[linecolor=azulunb,linewidth=1pt,hidealllines=false]{solution}{\sltname.} % Solução
+\newmdtheoremenv[linecolor=azulunb,linewidth=1pt,hidealllines=false,innertopmargin=0pt]{solution}{\sltname.} % Solução
% ---
% ---
% Referências bibliográficas
% ---
% Lista na bibliografia o número das páginas em que cada referência é citada
-\RequirePackage[hyperpageref]{backref}
-\AtBeginDocument{
+\IfStrEq{\refpage}{off}{}{
+\IfStrEq{\idioma}{brazil}
+{\RequirePackage[hyperpageref,brazilian]{backref}}{\RequirePackage[hyperpageref,english]{backref}}
\renewcommand*{\backref}[1]{}
\renewcommand*{\backrefalt}[4]{\ifcase#1\nocitation\or\citedp~#2.\else\citedpp~#2.\fi}
+}
+\AtBeginDocument{
% Retira os limitadores < e > dos hiperlinks
\addtociteoptionlist{abnt-url-package=url}
\def\UrlLeft{}
@@ -395,13 +551,13 @@
% Gera as referências bibliográficas de acordo com as normas da ABNT
\newcommand{\bibhang}[1]{\setlength{\bibindent}{#1}}
\IfStrEq{\bibsty}{alf}{% Estilo autor-data
-\RequirePackage[alf,abnt-etal-list=0,abnt-etal-cite=3,abnt-emphasize=bf,bibjustif]{abntex2cite}
+\RequirePackage[alf,abnt-etal-list=0,abnt-etal-cite=3,abnt-emphasize=bf,abnt-missing-year=sd,bibjustif]{abntex2cite}
\renewcommand{\@biblabel}[1]{}%
\IfStrEq{\idioma}{brazil} % Seleciona o arquivo de estilo de citação
{\bibliographystyle{unbtexcite/unbtex-alf-pt}}{\bibliographystyle{unbtexcite/unbtex-alf-en}}
}{%
\IfStrEq{\bibsty}{num}{% Estilo numérico
-\RequirePackage[num,abnt-etal-list=0,abnt-emphasize=bf,bibjustif]{abntex2cite}
+\RequirePackage[num,abnt-etal-list=0,abnt-emphasize=bf,abnt-missing-year=sd,bibjustif]{abntex2cite}
\RequirePackage{cite} % Para ordenar, comprimir e colocar entre colchetes os números nas citações
\renewcommand{\@biblabel}[1]%
{%
@@ -438,7 +594,7 @@
\renewcommand\nomgroup[1]{%
\IfStrEqCase{#1}{%
{A}{\vspace{-38pt}\nomenclheader{}} % Lista de abreviaturas e siglas
- {B}{\cleardoublepage % Quebra de página
+ {B}{\PRIVATEclearpageifneeded % Quebra de página
\pretextualchapter{\hspace{-\leftmargin}\listadesimbolosname} % Lista de símbolos
\vspace{-10pt}\nomenclheader{\nomBname}} % Símbolos romanos
{C}{\nomenclheader{\nomCname}} % Símbolos gregos
@@ -467,18 +623,24 @@
% ---
% Ajusta a indentação das listas de figuras e de tabelas
% ---
-%\RequirePackage{tocbasic} % Já carregado pelo pacote nomencl
+\RequirePackage{tocbasic} % Já carregado pelo pacote nomencl
\DeclareTOCStyleEntry[
indent=0pt,
entrynumberformat=\entrynumberwithprefix{\figurename},
dynnumwidth,
]{tocline}{figure}
-
\DeclareTOCStyleEntry[
indent=0pt,
entrynumberformat=\entrynumberwithprefix{\tablename},
dynnumwidth,
]{tocline}{table}
+\DeclareTOCStyleEntry[
+ level:=figure,
+ numwidth:=figure,
+ indent=0pt,
+ entrynumberformat=\entrynumberwithprefix{\algorithmname},
+ dynnumwidth,
+]{tocline}{algocf}
\newcommand\entrynumberwithprefix[2]{#1~#2\thinspace\hfill}
% ---
@@ -493,31 +655,27 @@
}
\renewenvironment*{citacao}[1][default]{%
\begin{adjustwidth}{\ABNTEXcitacaorecuo}{0mm}%
- \ABNTEXfontereduzida%
+ \ABNTEXfontereduzida\vspace{4pt}
\begin{SingleSpace}%
\ifthenelse{\not\equal{#1}{default}}{\itshape\selectlanguage{#1}}{}%
}{%
- \end{SingleSpace}%
- \end{adjustwidth}}
+ \end{SingleSpace}\vspace{4pt}%
+ \end{adjustwidth}
+}
% ---
% ---
% Define o texto dos rótulos de acordo com o idioma principal selecionado
% ---
-\AtBeginDocument{
-\IfStrEq{\idioma}{brazil}{
-\selectlanguage{brazil}
-\renewcommand{\listfigurename}{Lista de figuras}
-\renewcommand{\bibname}{Referências}
-\renewcommand{\apendicename}{Apêndice}
-\renewcommand{\anexoname}{anexo}\renewcommand{\anexosname}{anexos}
\newcommand{\Anexoname}{Anexo}\newcommand{\Anexosname}{Anexos}
\newcommand{\subsectionname}{subseção}\newcommand{\subsectionsname}{subseções}
\newcommand{\Subsectionname}{Subseção}\newcommand{\Subsectionsname}{Subseções}
-\renewcommand{\lstlistingname}{Código}
\newcommand{\codigoname}{código}\newcommand{\codigosname}{códigos}
\newcommand{\Codigoname}{Código}\newcommand{\Codigosname}{Códigos}
-\renewcommand{\ALG@name}{Algoritmo}
+\newcommand{\algorithmname}{Algoritmo}
+\newcommand{\listquadroname}{Lista de quadros}
+\newcommand{\quadroname}{quadro}\newcommand{\quadrosname}{quadros}
+\newcommand{\Quadroname}{Quadro}\newcommand{\Quadrosname}{Quadros}
\newcommand{\thname}{Teorema}
\newcommand{\lmname}{Lema}
\newcommand{\prname}{Proposição}
@@ -532,47 +690,62 @@
\newcommand{\prbname}{Problema}
\newcommand{\sltname}{Solução}
\newcommand{\rmname}{Observação}
-\renewcommand{\proofname}{Demonstração}
\newcommand{\nocitation}{Nenhuma citação no texto.}
\newcommand{\citedp}{Citado na p.}
\newcommand{\citedpp}{Citado nas pp.}
\newcommand{\nomBname}{Símbolos romanos}
\newcommand{\nomCname}{Símbolos gregos}
-}{
-\selectlanguage{english}
+\addto\captionsbrazil{
+\renewcommand{\listfigurename}{Lista de figuras}
+\renewcommand{\apendicename}{Apêndice}
+\renewcommand{\anexoname}{anexo}\renewcommand{\anexosname}{anexos}
+\renewcommand{\lstlistingname}{Código}
+\renewcommand{\lstlistlistingname}{Lista de códigos}
+\renewcommand{\proofname}{Demonstração}
+}
+\addto\captionsenglish{
+\renewcommand{\bibname}{References}
\renewcommand{\listfigurename}{List of figures}
\renewcommand{\listtablename}{List of tables}
-\renewcommand{\bibname}{References}
-\renewcommand{\apendicename}{Appendix}\renewcommand{\apendicesname}{Appendices}
+\renewcommand{\apendicename}{Appendix}
+\renewcommand{\apendicesname}{Appendices}
\renewcommand{\anexoname}{annex}\renewcommand{\anexosname}{annexes}
-\newcommand{\Anexoname}{Annex}\newcommand{\Anexosname}{Annexes}
-\newcommand{\subsectionname}{subsection}\newcommand{\subsectionsname}{subsections}
-\newcommand{\Subsectionname}{Subsection}\newcommand{\Subsectionsname}{Subsections}
+\renewcommand{\Anexoname}{Annex}\renewcommand{\Anexosname}{Annexes}
+\renewcommand{\subsectionname}{subsection}\renewcommand{\subsectionsname}{subsections}
+\renewcommand{\Subsectionname}{Subsection}\renewcommand{\Subsectionsname}{Subsections}
\renewcommand{\lstlistingname}{Code}
-\newcommand{\codigoname}{code}\newcommand{\codigosname}{codes}
-\newcommand{\Codigoname}{Code}\newcommand{\Codigosname}{Codes}
-\renewcommand{\ALG@name}{Algorithm}
-\newcommand{\thname}{Theorem}
-\newcommand{\lmname}{Lemma}
-\newcommand{\prname}{Proposition}
-\newcommand{\crname}{Corollary}
-\newcommand{\aptname}{Assumption}
-\newcommand{\dfname}{Definition}
-\newcommand{\axname}{Axiom}
-\newcommand{\cjcname}{Conjecture}
-\newcommand{\prpname}{Property}
-\newcommand{\expname}{Example}
-\newcommand{\excname}{Exercise}
-\newcommand{\prbname}{Problem}
-\newcommand{\sltname}{Solution}
-\newcommand{\rmname}{Remark}
+\renewcommand{\lstlistlistingname}{List of codes}
+\renewcommand{\codigoname}{code}\renewcommand{\codigosname}{codes}
+\renewcommand{\Codigoname}{Code}\renewcommand{\Codigosname}{Codes}
+\renewcommand{\algorithmname}{Algorithm}
+\renewcommand{\listquadroname}{List of charts}
+\renewcommand{\quadroname}{chart}\renewcommand{\quadrosname}{charts}
+\renewcommand{\Quadroname}{Chart}\renewcommand{\Quadrosname}{Charts}
+\renewcommand{\thname}{Theorem}
+\renewcommand{\lmname}{Lemma}
+\renewcommand{\prname}{Proposition}
+\renewcommand{\crname}{Corollary}
+\renewcommand{\aptname}{Assumption}
+\renewcommand{\dfname}{Definition}
+\renewcommand{\axname}{Axiom}
+\renewcommand{\cjcname}{Conjecture}
+\renewcommand{\prpname}{Property}
+\renewcommand{\expname}{Example}
+\renewcommand{\excname}{Exercise}
+\renewcommand{\prbname}{Problem}
+\renewcommand{\sltname}{Solution}
+\renewcommand{\rmname}{Remark}
\renewcommand{\proofname}{Proof}
-\newcommand{\nocitation}{No citations.}
-\newcommand{\citedp}{Cit. on p.}
-\newcommand{\citedpp}{Cit. on pp.}
-\newcommand{\nomBname}{Roman letters}
-\newcommand{\nomCname}{Greek letters}
-}}
+\renewcommand{\nocitation}{No citations.}
+\renewcommand{\citedp}{Cit. on p.}
+\renewcommand{\citedpp}{Cit. on pp.}
+\renewcommand{\nomBname}{Roman letters}
+\renewcommand{\nomCname}{Greek letters}
+}
+\AtBeginDocument{
+\IfStrEq{\idioma}{brazil}
+{\selectlanguage{brazil}}{\selectlanguage{english}}
+}
% ---
% ------------------------------------------------------------------------
@@ -630,16 +803,16 @@
% ---
% ---
-% Imprime capa
+% Imprime capa e contracapa
% ---
+\RequirePackage{pdfpages}
+% Imprime capa
\renewcommand{\imprimircapa}{%
\hypersetup{pageanchor=false}
-\setlrmargins{*}{*}{1} % Margens laterais iguais para a capa
-\setulmarginsandblock{3cm}{2cm}{*}
-\checkandfixthelayout[fixed]
+\begin{adjustwidth}{0cm}{1cm}
\begin{capa}%
- \center
- \AddToShipoutPicture*{\BackgroundPic}
+ \begin{center}
+ \AddToShipoutPictureBG*{\includegraphics[height=\paperheight]{unbtexcover/capa.pdf}}
\vspace*{7.5cm}
{\LARGE\sffamily\bfseries\instituicaoi \\ \instituicaoii \\
\abntex@ifnotempty{\instituicaoiii}{\instituicaoiii}\par}
@@ -654,33 +827,34 @@
{\Large\autorinome\ \autorisobrenome \\
\abntex@ifnotempty{\autoriinome}{\autoriinome\ \autoriisobrenome}\par}
\vfill\vfill
- \begin{center}
\color{white}{\sffamily\large\MakeUppercase \imprimirtipotrabalho \\[2pt]
\MakeUppercase\imprimircurso \\
% Define o espaçamento vertical entre o nome do curso e o local (Brasília)
\autotitle[1]{\MakeUppercase\imprimircurso}
\ifdefined\decvspace \vspace{2pt} \else \vspace{20pt} \fi
\imprimirlocal \\ \imprimirano\par}
- \end{center}
+ \end{center}
\end{capa}
% Reestabelece as margens
-\setlrmarginsandblock{3cm}{2cm}{*}
-\setulmarginsandblock{3cm}{2cm}{*}
-\checkandfixthelayout[nearest]
+\end{adjustwidth}
\cleardoublepage
\hypersetup{pageanchor=true}
+\AtEndDocument{\imprimircontracapa}
}
-
-% Figura de fundo da capa
-\RequirePackage{pdfpages} % Também funciona com o pacote eso-pic
-\newcommand\BackgroundPic{%
- \put(0,0){%
- \parbox[b][\paperheight]{\paperwidth}{%
- \vfill
- \centering \includegraphics[width=\paperwidth,height=\paperheight,keepaspectratio]{capa_fundo.pdf}%
- \vfill
- }
- }
+% Imprime contracapa
+\newcommand{\imprimircontracapa}{%
+\cleardoublepage
+\pagestyle{empty}
+\if@twoside
+\addtocounter{page}{-2}
+\ifoddpage\else\ \fi
+\else
+\addtocounter{page}{-1}
+\fi
+\hypersetup{pageanchor=false}
+\newpage
+\includepdf[height=\paperheight]{unbtexcover/contracapa.pdf}
+\hypersetup{pageanchor=true}
}
% ---
@@ -692,7 +866,6 @@
{\LARGE\sffamily\bfseries \instituicaoi \\ \instituicaoii \\
\abntex@ifnotempty{\instituicaoiii}{\instituicaoiii}\par}
\vfill\vfill
-
\begin{center}
% Define o tamanho da fonte do título
\ifthenelse{\equal{\imprimirtituloestrangeiro}{}}
@@ -700,11 +873,9 @@
{\autotitle[4]{\bfseries\imprimirtituloestrangeiro}{\color{verdeunb}\titleformat\bfseries \imprimirtituloestrangeiro\par}}
\end{center}
\vfill
-
{\Large\autorinome\ \autorisobrenome \\
\abntex@ifnotempty{\autoriinome}{\autoriinome\ \autoriisobrenome}\par}
\vfill
-
\abntex@ifnotempty{\imprimirpreambulo}{%
\begin{flushright}
\begin{minipage}{.5\textwidth}
@@ -714,13 +885,10 @@
\end{otherlanguage*}}
\end{minipage}%
\end{flushright}
-}%
+\vfill}%
+{\abntex@ifnotempty{\orientnome}{\large \orientname: \orienttitulo\ \orientnome\ \orientsobrenome \\
+\abntex@ifnotempty{\coorientnome}{\coorientname: \coorienttitulo\ \coorientnome\ \coorientsobrenome}\par}}
\vfill
-
-{\large \orientname: \orienttitulo\ \orientnome\ \orientsobrenome \\
-\abntex@ifnotempty{\coorientnome}{\coorientname: \coorienttitulo\ \coorientnome\ \coorientsobrenome}\par}
-\vfill
-
{\sffamily\large\abntex@ifnotempty{\imprimirpublicacao}{\imprimirpublicacao \\ \vfill} \imprimirlocal \\ \imprimirano\par}
\end{center}
}
@@ -753,7 +921,7 @@
\\ \cutter
\hspace*{2em}\noindent\begin{otherlanguage*}{brazil}\imprimirtipotrabalho\ (\imprimircurso)\ \texttt{-{}-} \instituicaoi, \imprimirano.\end{otherlanguage*} \\ \cutter
\\ \cutter
-\hspace*{2em}\noindent\IfStrEq{\idioma}{brazil}{1. \pchaveinome. 2. \pchaveiinome. 3. \pchaveiiinome. \ifthenelse{\equal{\pchaveivnome}{}}{}{4. \pchaveivnome. \ifthenelse{\equal{\pchavevnome}{}}{}{5. \pchavevnome.}}}{1. \kwordinome. 2. \kwordiinome. 3. \kwordiiinome. \ifthenelse{\equal{\kwordivnome}{}}{}{4. \kwordivnome. \ifthenelse{\equal{\kwordvnome}{}}{}{5. \kwordvnome.}}}%
+\hspace*{2em}\noindent\IfStrEq{\idioma}{brazil}{1. \expandafter\MakeUppercase\pchaveinome. 2. \expandafter\MakeUppercase\pchaveiinome. 3. \expandafter\MakeUppercase\pchaveiiinome. \ifthenelse{\equal{\pchaveivnome}{}}{}{4. \expandafter\MakeUppercase\pchaveivnome. \ifthenelse{\equal{\pchavevnome}{}}{}{5. \expandafter\MakeUppercase\pchavevnome.~}}}{1. \expandafter\MakeUppercase\kwordinome. 2. \expandafter\MakeUppercase\kwordiinome. 3. \expandafter\MakeUppercase\kwordiiinome. \ifthenelse{\equal{\kwordivnome}{}}{}{4. \expandafter\MakeUppercase\kwordivnome. \ifthenelse{\equal{\kwordvnome}{}}{}{5. \expandafter\MakeUppercase\kwordvnome.~}}}%
\begin{otherlanguage*}{brazil}{\ifthenelse{\equal{\autoriinome}{}}{\ifthenelse{\equal{\coorientnome}{}}{I. \orientsobrenome, \orientnome, orient. II. Título.}{I. \orientsobrenome, \orientnome, orient. II. \coorientsobrenome, \coorientnome, coorient. III. Título.}}{\ifthenelse{\equal{\coorientnome}{}}{I. \autoriisobrenome, \autoriinome. II. \orientsobrenome, \orientnome, orient. III. Título.}{I. \autoriisobrenome, \autoriinome. II. \orientsobrenome, \orientnome, orient. III. \coorientsobrenome, \coorientnome, coorient. IV. Título.}}}\end{otherlanguage*}
\IfInteger{\imprimircutter}{\end{tabular}}{}
\end{minipage}}
@@ -781,11 +949,9 @@
{\color{verdeunb}\titleformat\bfseries \StrDel{\imprimirtitulo}{\\}\par}
\end{center}
\vfill
-
{\large\autorinome\ \autorisobrenome \\[2pt]
\abntex@ifnotempty{\autoriinome}{\autoriinome\ \autoriisobrenome}\par}
\vfill
-
\abntex@ifnotempty{\imprimirpreambulo}{%
\begin{flushright}
\begin{minipage}{.5\textwidth}
@@ -797,7 +963,6 @@
\end{flushright}
}%
\vspace{24pt}
-
\raggedright{Trabalho aprovado. \imprimirlocal, \imprimirdia\ de \imprimirmes\ de \imprimirano:}
{%
\assinatura{\textbf{\membrodabancainome} \\ \membrodabancaifuncaonome}
@@ -808,6 +973,7 @@
}
\end{center}
\end{folhadeaprovacao}
+\cleardoublepage
}
% ---
@@ -817,27 +983,25 @@
% ---
\newenvsc{DedicatoriaAutorI}[store-env=dedicatoriaautori]
\newenvsc{DedicatoriaAutorII}[store-env=dedicatoriaautorii]
+
\newcommand{\imprimirdedicatoria}{
\begin{dedicatoria}
\centering
\vspace*{\fill}
-
% Primeiro autor
-{\itshape\getstored{dedicatoriaautori}}
-
+{\itshape\getstored{dedicatoriaautori}}\par
\ifthenelse{\equal{\autoriinome}{}}{}{
-\vspace{1cm}
+\vspace{\baselineskip}
\autorinome\ \autorisobrenome \par
\vspace*{\fill}
-
% Segundo autor
-{\itshape\getstored{dedicatoriaautorii}}
-
-\vspace{1cm}
+{\itshape\getstored{dedicatoriaautorii}}\par
+\vspace{\baselineskip}
\autoriinome\ \autoriisobrenome
}
\vspace*{\fill}
\end{dedicatoria}
+\cleardoublepage
}
% ---
@@ -846,32 +1010,28 @@
% ---
\newenvsc{AgradecimentosAutorI}[store-env=agradecimentosautori]
\newenvsc{AgradecimentosAutorII}[store-env=agradecimentosautorii]
-\newcommand{\idiomaagradecimentos}[1]{\def\acklang{#1}}
+\newcommand{\idiomaagradecimentos}[1]{\def\acklang{#1}}
\newcommand{\imprimiragradecimentos}{
% Define o título da seção de agradecimentos
\IfStrEq{\acklang}{brazil}{
\renewcommand{\agradecimentosname}{Agradecimentos}
}{% Caso os agradecimentos sejam escritos em inglês
\renewcommand{\agradecimentosname}{Acknowledgements}}
-
\begin{agradecimentos}
-
% Primeiro autor
-\getstored{agradecimentosautori}
-
+\getstored{agradecimentosautori}\par
+\vspace{\baselineskip}
\ifthenelse{\equal{\autoriinome}{}}{}{
-\vspace{1cm}
-\hfill \autorinome\ \autorisobrenome
-\vspace{1cm}
-
+\hfill \autorinome\ \autorisobrenome \par
+\vspace{2\baselineskip}
% Segundo autor
-\getstored{agradecimentosautorii}
-
-\vspace{1cm}
+\getstored{agradecimentosautorii}\par
+\vspace{\baselineskip}
\hfill \autoriinome\ \autoriisobrenome
}
\end{agradecimentos}
+\cleardoublepage
}
% ---
@@ -881,44 +1041,121 @@
\newenvsc{Epigrafe}[store-env=epigrafe]
\newcommand{\imprimirepigrafe}{
\begin{epigrafe}
-\getstored{epigrafe}
+\getstored{epigrafe}\par
\end{epigrafe}
+\cleardoublepage
}
% ---
% ---
-% Imprime resumo (em português)
+% Imprime resumo e abstract
% ---
+\setlength{\absparsep}{\parsep}
+\ifthenelse{\equal{\ABNTEXisarticle}{false}}
+{\setlength{\abstitleskip}{\baselineskip}}{\setlength{\abstitleskip}{-0.5\baselineskip}}
+% Resumo
\newenvsc{Resumo}[store-env=resumo]
\newcommand{\imprimirresumo}{
-\newpage
-\setlength{\absparsep}{\parsep}
-\begin{resumo}[Resumo]\vspace{\baselineskip}
+\begin{resumo}[Resumo]
\begin{otherlanguage*}{brazil}
-\getstored{resumo}
-\vspace{\onelineskip}
-
-{\sffamily\bfseries Palavras-chave:} \pchaveinome. \pchaveiinome. \pchaveiiinome. \ifthenelse{\equal{\pchaveivnome}{}}{}{\pchaveivnome. \ifthenelse{\equal{\pchavevnome}{}}{}{\pchavevnome.}}
+\getstored{resumo}\par
+\vspace{\baselineskip}
+{\sffamily\bfseries Palavras-chave:} \pchaveinome; \pchaveiinome; \pchaveiiinome\ifthenelse{\equal{\pchaveivnome}{}}{.}{;~\pchaveivnome\ifthenelse{\equal{\pchavevnome}{}}{.}{;~\pchavevnome.}}
\end{otherlanguage*}
\end{resumo}
+\PRIVATEclearpageifneeded
}
-% ---
-
-% ---
-% Imprime resumo (em inglês)
-% ---
+% Abstract
\newenvsc{Abstract}[store-env=abstract]
\newcommand{\imprimirabstract}{
-\newpage
-\setlength{\absparsep}{\parsep}
-\begin{resumo}[Abstract]\vspace{\baselineskip}
+\begin{resumo}[Abstract]
\begin{otherlanguage*}{english}
-\getstored{abstract}
-\vspace{\onelineskip}
-
-{\sffamily\bfseries Keywords:} \kwordinome. \kwordiinome. \kwordiiinome. \ifthenelse{\equal{\kwordivnome}{}}{}{\kwordivnome. \ifthenelse{\equal{\kwordvnome}{}}{}{\kwordvnome.}}
+\getstored{abstract}\par
+\vspace{\baselineskip}
+{\sffamily\bfseries Keywords:} \kwordinome; \kwordiinome; \kwordiiinome\ifthenelse{\equal{\kwordivnome}{}}{.}{;~\kwordivnome\ifthenelse{\equal{\kwordvnome}{}}{.}{;~\kwordvnome.}}
\end{otherlanguage*}
\end{resumo}
+\PRIVATEclearpageifneeded
+}
+% Insere resumo e abstract
+\newcommand{\imprimirresumos}{
+\IfStrEq*{\idioma}{brazil}
+{\imprimirresumo
+\imprimirabstract}
+{\imprimirabstract
+\imprimirresumo}
+}
+% ---
+
+% ---
+% Imprime lista de figuras
+% ---
+\newcommand{\imprimirlistadefiguras}{
+\pdfbookmark[0]{\listfigurename}{lof}
+\listoffigures*
+\PRIVATEclearpageifneeded
+}
+% ---
+
+% ---
+% Imprime lista de quadros
+% ---
+\newcommand{\imprimirlistadequadros}{
+\pdfbookmark[0]{\listquadroname}{loq}
+\listofquadros*
+\PRIVATEclearpageifneeded
+}
+% ---
+
+% ---
+% Imprime lista de tabelas
+% ---
+\newcommand{\imprimirlistadetabelas}{
+\pdfbookmark[0]{\listtablename}{lot}
+\listoftables*
+\PRIVATEclearpageifneeded
+}
+% ---
+
+% ---
+% Imprime lista de algoritmos
+% ---
+\newcommand{\imprimirlistadealgoritmos}{
+\pdfbookmark[0]{\listalgorithmcfname}{loa}
+\listofalgorithms
+\PRIVATEclearpageifneeded
+}
+% ---
+
+% ---
+% Imprime lista de códigos
+% ---
+\newcommand{\imprimirlistadecodigos}{
+\pdfbookmark[0]{\lstlistlistingname}{lol}
+\begin{KeepFromToc} % Não inclui a lista de códigos no sumário
+\lstlistoflistings
+\end{KeepFromToc}
+\PRIVATEclearpageifneeded
+}
+% ---
+
+% ---
+% Imprime lista de abreviaturas e siglas e lista de símbolos
+% ---
+\newcommand{\imprimirlistadesiglasesimbolos}{
+\PRIVATEbookmarkthis{\listadesiglasname}
+\printnomenclature
+\PRIVATEclearpageifneeded
+}
+% ---
+
+% ---
+% Imprime sumário
+% ---
+\newcommand{\imprimirsumario}{
+\pdfbookmark[0]{\contentsname}{toc}
+\tableofcontents*
+\PRIVATEclearpageifneeded
}
% ---
@@ -950,4 +1187,40 @@
\fi
\newcommand{\titleformat}{\testfontsize}
}
+% ---
+
+% ---
+% Configuracoes para definir idioma principal do documento
+% ---
+\def\HyLang@DeclareLang#1#2#3{%
+ \expandafter\HyLang@addto
+ \csname extras#1\expandafter\endcsname
+ \csname HyLang@#2\endcsname
+ \begingroup
+ \edef\x{\endgroup
+ #3%
+ }%
+ \x
+ \@namedef{HyLang@#1@done}{}%
+ \begingroup
+ \edef\x##1##2{%
+ \noexpand\ifx##2\relax
+ \errmessage{No definitions for language #2' found!}%
+ \noexpand\fi
+ \endgroup
+ \noexpand\define@key{Hyp}{#1}[]{%
+ \noexpand\@ifundefined{HyLang@#1@done}{%
+ \noexpand\HyLang@addto{\noexpand##1}{\noexpand##2}%
+ #3%
+ \noexpand\@namedef{HyLang@#1@done}{}%
+ }{}%
+ }%
+ }%
+ \expandafter\x\csname extras#1\expandafter\endcsname
+ \csname HyLang@#2\endcsname
+}
+\HyLang@DeclareLang{english}{english}{}
+\HyLang@DeclareLang{brazil}{portuges}{}
+\HyLang@DeclareLang{brazilian}{portuges}{}
+\HyLang@DeclareLang{portuguese}{portuges}{}
% --- \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/undolabl/undolabl.sty b/Master/texmf-dist/tex/latex/undolabl/undolabl.sty
index a616b29319c..92298a9473e 100644
--- a/Master/texmf-dist/tex/latex/undolabl/undolabl.sty
+++ b/Master/texmf-dist/tex/latex/undolabl/undolabl.sty
@@ -9,9 +9,9 @@
%% This is a generated file.
%%
%% Project: undolabl
-%% Version: 2023-02-14 v1.0m
+%% Version: 2025-01-28 v1.0o
%%
-%% Copyright (C) 2010 - 2023 by
+%% Copyright (C) 2010 - 2025 by
%% H.-Martin Muench <Martin dot Muench at Uni-Bonn dot de>
%% Portions of code copyrighted by other people as marked.
%%
@@ -50,55 +50,16 @@
%% Tommy Muench + 2014-01-02
%% Hans-Klaus Muench + 2014-08-24
%%
-\NeedsTeXFormat{LaTeX2e}[2022-11-01]
-\ProvidesPackage{undolabl}[2023-02-14 v1.0m Overriding labels (HMM)]
+\NeedsTeXFormat{LaTeX2e}[2024-11-01]
+\ProvidesPackage{undolabl}[2025-01-28 v1.0o Overriding labels (HMM)]
-\@ifl@t@r\fmtversion{2022/11/01}{% would have understood
- % \IfFormatAtLeastTF{2022-11-01}{<true code>}{<false code>}
- }{\PackageError{undolabl}{%
- Newer LaTeX format needed or older undolabl package%
- }{Needed LaTeX format version: 2022-11-01 or newer.\MessageBreak%
- Found\space\space LaTeX format version: \fmtversion.\MessageBreak%
- Either update your TeX distribution\MessageBreak%
- or use an archived version of undolabl\MessageBreak%
- (see section History in the documentation).\MessageBreak%
- }
- }
-
-\AddToHook{begindocument}{%
- \if@filesw%
- \else%
- \IfPackageLoadedTF{tikz}{%
- \PackageWarning{undolabl}%
- {The undolabl package was not allowed to write to an\MessageBreak%
- .aux file. This package does not work without access\MessageBreak%
- to an .aux file.\MessageBreak%
- It is OK if the .aux file was already updated\MessageBreak%
- by a previouse compiler run\MessageBreak%
- and would not have changed anyway.\MessageBreak%
- }%
- }{\PackageError{undolabl}{No writing to auxiliary file allowed}%
- {The undolabl package was not allowed to write to an .aux file.\MessageBreak%
- This package does not work without access to an .aux file.\MessageBreak%
- Press Ctrl+Z to exit.\MessageBreak%
- But it is OK if the .aux file was already updated\MessageBreak%
- by a previouse compiler run\MessageBreak%
- and would not have changed anyway.\MessageBreak%
- }%
- }%
- \fi%
- \IfPackageLoadedTF{acronym}%
- {\IfPackageAtLeastTF{acronym}{2015/03/21}{% later, OK
- }{\PackageError{undolabl}{Incompatible old acronym package detected}%
- {The undolabl package is not compatible with the acronym package%
- \MessageBreak%
- older than 2015/03/21 v1.41. Please update your acronym package!%
- \MessageBreak%
- }%
- }%
- }{% not loaded, OK
- }%
- }
+\@ifl@t@r\fmtversion{2024/11/01}{}{\PackageError{undolabl}{%
+ LaTeX format 2024-11-01 or newer needed}{%
+ Needed LaTeX format version: 2024-11-01 or newer.\MessageBreak%
+ Found\space\space LaTeX format version: \fmtversion.\MessageBreak%
+ Please update your TeX distribution!\MessageBreak%
+ Loading of undolabl package is aborted.}
+ \expandafter\endinput}
\newcommand\overridelabel[1]{%
\@bsphack%
@@ -117,8 +78,7 @@
\PackageError{undolabl}{Label `#2' shall be overridden ^^J%
although it does not yet exist}{%
A label which does not exist cannot be overridden.}%
- }{%
- \expandafter\global
+ }{\expandafter\global
\expandafter\let
\csname #1@#2\endcsname\relax%
}%
@@ -128,7 +88,7 @@
\@ifundefined{#1@#2}{\global\@namedef{#1@#2}{i}}{%
\expandafter\g@addto@macro\csname #1@#2\endcsname{i}%
}%
- \PackageWarning{undolabl}{Label `#2' overridden}%
+ \PackageNote{undolabl}{Label `#2' overridden}%
}
\newcommand\undolabl@testdef[3]{%
@@ -147,8 +107,6 @@
}%
}
-\if@filesw\protected@write\@auxout{}{\string\reset@newl@bel}\fi
-
\newcommand\reset@newl@bel{%
\ifx\@newl@bel\@testdef%
\let\@newl@bel\undolabl@testdef%
@@ -156,6 +114,33 @@
\fi%
}
+\AddToHook{begindocument}{%
+ \if@filesw%
+ \immediate\write\@auxout{\string\reset@newl@bel}%
+ \else%
+ \IfPackageLoadedTF{tikz}{\PackageWarningNoLine{undolabl}{%
+ The undolabl package was not allowed to write to an\MessageBreak%
+ .aux file. This package does not work without access\MessageBreak%
+ to an .aux file.\MessageBreak%
+ It is OK if the .aux file was already updated\MessageBreak%
+ by a previous compiler run\MessageBreak%
+ and would not have changed anyway.}%
+ }{\PackageError{undolabl}{No writing to auxiliary file allowed}{%
+ The undolabl package was not allowed to write to an .aux file.\MessageBreak%
+ This package does not work without access to an .aux file.\MessageBreak%
+ Press Ctrl+Z to exit.\MessageBreak%
+ But it is OK if the .aux file was already updated\MessageBreak%
+ by a previous compiler run\MessageBreak%
+ and would not have changed anyway.}%
+ }%
+ \fi%
+ \IfPackageLoadedT{acronym}{\IfPackageAtLeastF{acronym}{2015/03/21}{%
+ \PackageError{undolabl}{Incompatible old acronym package detected}{%
+ The undolabl package is not compatible with acronym package\MessageBreak%
+ older than 2015/03/21 v1.41.\MessageBreak%
+ Found version: \csname ver@acronym.sty\endcsname .\MessageBreak%
+ Please update your acronym package!%
+ }}}}
\endinput
%%
%% End of file `undolabl.sty'.
diff --git a/Master/texmf-dist/tex/latex/univie-ling/univie-ling-expose.cls b/Master/texmf-dist/tex/latex/univie-ling/univie-ling-expose.cls
index f7ff0916f44..495172ee0dd 100644
--- a/Master/texmf-dist/tex/latex/univie-ling/univie-ling-expose.cls
+++ b/Master/texmf-dist/tex/latex/univie-ling/univie-ling-expose.cls
@@ -33,7 +33,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesPackage{univie-ling-expose}[2024/07/23 v.2.7 Univie Linguistic Exposes (JSp)]
+\ProvidesPackage{univie-ling-expose}[2024/09/28 v.2.9 Univie Linguistic Exposes (JSp)]
%% ============================================================
@@ -687,7 +687,22 @@
% End of @uve@apa condition
\fi
-% End of @uve@biblatex condition
+\else% @uvt@biblatex condition FALSE
+
+% Some support for legacy bibtex
+\AtBeginDocument{%
+ \@ifundefined{bibhang}{}{%
+ \setlength{\bibhang}{\parindent}%
+ }%
+ \@ifundefined{bibfont}{}{%
+ \renewcommand{\bibfont}{\small}%
+ }%
+ \@ifundefined{bibsep}{}{%
+ \setlength\bibsep{0pt}%
+ }%
+}
+
+% End of @uvt@biblatex condition
\fi
%% =============================================================
diff --git a/Master/texmf-dist/tex/latex/univie-ling/univie-ling-handout.cls b/Master/texmf-dist/tex/latex/univie-ling/univie-ling-handout.cls
index 73c5a325da4..d81cd6a27a1 100644
--- a/Master/texmf-dist/tex/latex/univie-ling/univie-ling-handout.cls
+++ b/Master/texmf-dist/tex/latex/univie-ling/univie-ling-handout.cls
@@ -35,7 +35,7 @@
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesClass{univie-ling-handout}[2024/07/23 v.2.7 Univie Ling handout class (JSp)]
+\ProvidesClass{univie-ling-handout}[2024/09/28 v.2.9 Univie Ling handout class (JSp)]
%% ============================================================
%% CLASS OPTIONS
@@ -867,7 +867,22 @@
\DeclarePrintbibliographyDefaults{title=\uvh@bibheading}
-% End of @uvh@biblatex condition
+\else% @uvt@biblatex condition FALSE
+
+% Some support for legacy bibtex
+\AtBeginDocument{%
+ \@ifundefined{bibhang}{}{%
+ \setlength{\bibhang}{\parindent}%
+ }%
+ \@ifundefined{bibfont}{}{%
+ \renewcommand{\bibfont}{\small}%
+ }%
+ \@ifundefined{bibsep}{}{%
+ \setlength\bibsep{0pt}%
+ }%
+}
+
+% End of @uvt@biblatex condition
\fi
% Smaller
diff --git a/Master/texmf-dist/tex/latex/univie-ling/univie-ling-paper.cls b/Master/texmf-dist/tex/latex/univie-ling/univie-ling-paper.cls
index eda1430345b..51690011986 100644
--- a/Master/texmf-dist/tex/latex/univie-ling/univie-ling-paper.cls
+++ b/Master/texmf-dist/tex/latex/univie-ling/univie-ling-paper.cls
@@ -32,7 +32,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesPackage{univie-ling-paper}[2024/07/23 v.2.7 Univie Linguistic Papers (JSp)]
+\ProvidesPackage{univie-ling-paper}[2024/09/28 v.2.9 Univie Linguistic Papers (JSp)]
%% ============================================================
@@ -845,7 +845,22 @@ This includes all drawings, sketches, graphics and internet sources.}
% End of @uvp@apa condition
\fi
-% End of @uvp@biblatex condition
+\else% @uvt@biblatex condition FALSE
+
+% Some support for legacy bibtex
+\AtBeginDocument{%
+ \@ifundefined{bibhang}{}{%
+ \setlength{\bibhang}{\parindent}%
+ }%
+ \@ifundefined{bibfont}{}{%
+ \renewcommand{\bibfont}{\small}%
+ }%
+ \@ifundefined{bibsep}{}{%
+ \setlength\bibsep{0pt}%
+ }%
+}
+
+% End of @uvt@biblatex condition
\fi
%% =============================================================
diff --git a/Master/texmf-dist/tex/latex/univie-ling/univie-ling-poster.cls b/Master/texmf-dist/tex/latex/univie-ling/univie-ling-poster.cls
index 87f5092d4ce..780e98bc832 100644
--- a/Master/texmf-dist/tex/latex/univie-ling/univie-ling-poster.cls
+++ b/Master/texmf-dist/tex/latex/univie-ling/univie-ling-poster.cls
@@ -34,7 +34,7 @@
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesClass{univie-ling-poster}[2024/07/23 v.2.7 Univie Ling poster class (JSp)]
+\ProvidesClass{univie-ling-poster}[2024/09/28 v.2.9 Univie Ling poster class (JSp)]
%% ============================================================
%% CLASS OPTIONS
diff --git a/Master/texmf-dist/tex/latex/univie-ling/univie-ling-thesis.cls b/Master/texmf-dist/tex/latex/univie-ling/univie-ling-thesis.cls
index 91d34276a0f..82dae78b030 100644
--- a/Master/texmf-dist/tex/latex/univie-ling/univie-ling-thesis.cls
+++ b/Master/texmf-dist/tex/latex/univie-ling/univie-ling-thesis.cls
@@ -33,7 +33,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesPackage{univie-ling-thesis}[2024/07/23 v.2.7 Univie Linguistic Theses (JSp)]
+\ProvidesPackage{univie-ling-thesis}[2024/09/28 v.2.9 Univie Linguistic Theses (JSp)]
%% ============================================================
@@ -55,6 +55,7 @@
\newif\if@uvt@psfonts\@uvt@psfontstrue
\newif\if@uvt@refsp\@uvt@refsptrue
\newif\if@uvt@usefontenc\@uvt@usefontenctrue
+\newif\if@uvt@titlepage\@uvt@titlepagetrue
\def\uvt@fontenc{T1}
% Define keys and values
@@ -155,6 +156,10 @@
{ \@uvt@draftmarktrue
\@uvt@draftmarkfptrue
},
+ % titlepage=<true|false>
+ % Output titlepage
+ titlepage.legacy_if_set:n = @uvt@titlepage,
+ titlepage.usage:n = preamble,
% no val equals to true
draftmark .default:n = {true},
% fonts=<ps|otf|none>
@@ -241,33 +246,36 @@ This includes all drawings, sketches, graphics and internet sources.}
%% FONTS AND EMPHASIZING:
%% ============================================================
+\def\uvt@titlesans{\sffamily}
+
\if@uvt@psfonts
\RequirePackage[T1]{fontenc}
\if@uvt@usefontenc
\RequirePackage[\uvt@fontenc]{fontenc}
\fi
-
- % Palatino
+ % Serif: Palatino
\RequirePackage[osf]{mathpazo}
-
- % Arial or Helvetica
- \IfFileExists{uarial.sty}{%
- \RequirePackage{uarial}
- }{%
- \RequirePackage{helvet}
- }
-
- % Source Code Pro (Courier)
+ % Sans: Source Sans Pro Light
+ \RequirePackage[semibold]{sourcesanspro}
+ % Mono: Source Code Pro
\RequirePackage[scale=.93]{sourcecodepro}
+ % Lighter Sans for title page
+ \def\uvt@titlesans{\def\mdseries@sf{l}\sffamily}
\fi
\if@uvt@otffonts
\RequirePackage{fontspec}
- \setmainfont{Palatino}
- \setsansfont{Arial}
- \setmonofont{SourceCodePro}
+ \setmainfont{TeX Gyre Pagella}
+ % Sans: Source Sans Pro Light
+ \RequirePackage[semibold]{sourcesanspro}
+ % Mono: Source Code Pro
+ \RequirePackage[scale=.93]{sourcecodepro}
+ % Lighter Sans for title page
+ \def\uvt@titlesans{\sourcesansprolight}
\fi
+
+
% Hyperlinks
\RequirePackage{url}
\newcommand{\urlprefix}{}
@@ -299,14 +307,14 @@ This includes all drawings, sketches, graphics and internet sources.}
\def\slash{/\penalty\exhyphenpenalty\hskip\z@skip}
% Font settings
-\newkomafont{thesistype}{\fontsize{24}{26pt}\bfseries\sffamily}
-\setkomafont{title}{\fontsize{18}{20pt}\sffamily}
-\setkomafont{author}{\fontsize{18}{20pt}\large\sffamily}
-\setkomafont{date}{\normalfont\fontsize{11}{13pt}\mdseries\sffamily}
-\newkomafont{degree}{\fontsize{12}{14pt}\sffamily}
-\newkomafont{baende}{\normalfont\fontsize{12}{14pt}\mdseries\sffamily}
-\newkomafont{tpcaption}{\fontsize{11}{13pt}\sffamily}
-\newkomafont{codes}{\fontsize{10}{12pt}\sffamily}
+\newkomafont{thesistype}{\fontsize{24}{26pt}\bfseries\uvt@titlesans}
+\setkomafont{title}{\fontsize{18}{20pt}\uvt@titlesans}
+\setkomafont{author}{\fontsize{18}{20pt}\large\uvt@titlesans}
+\setkomafont{date}{\normalfont\fontsize{11}{13pt}\mdseries\uvt@titlesans}
+\newkomafont{degree}{\fontsize{12}{14pt}\uvt@titlesans}
+\newkomafont{baende}{\normalfont\fontsize{12}{14pt}\mdseries\uvt@titlesans}
+\newkomafont{tpcaption}{\fontsize{11}{13pt}\uvt@titlesans}
+\newkomafont{codes}{\fontsize{10}{12pt}\uvt@titlesans}
%% ============================================================
@@ -384,35 +392,35 @@ This includes all drawings, sketches, graphics and internet sources.}
\def\thesistype@bachelor{Bachelorarbeit}
\def\thesistype@bachelor@en{Bachelor's Thesis}
\def\dirtype@bachelor{Studienrichtung}
-\def\dirtype@bachelor@en{degree programme}
+\def\dirtype@bachelor@en{Degree programme}
\def\degree@bachelor{Bachelor of Arts (BA)}
\def\degree@bachelor@f{\degree@bachelor}
% master
\def\thesistype@master{Masterarbeit}
\def\thesistype@master@en{Master's Thesis}
\def\dirtype@master{Studienrichtung}
-\def\dirtype@master@en{degree programme}
+\def\dirtype@master@en{Degree programme}
\def\degree@master{Master of Arts (MA)}
\def\degree@master@f{\degree@master}
% magister
\def\thesistype@magister{Magisterarbeit}
\def\thesistype@magister@en{Magister Thesis}
\def\dirtype@magister{Studienrichtung}
-\def\dirtype@magister@en{degree programme}
+\def\dirtype@magister@en{Degree programme}
\def\degree@magister{Magister der Philosophie (Mag.\,Phil.)}
\def\degree@magister@f{Magistra der Philosophie (Mag.\,Phil.)}
% diplom
\def\thesistype@diplom{Diplomarbeit}
\def\thesistype@diplom@en{Diploma Thesis}
\def\dirtype@diplom{Studienrichtung}
-\def\dirtype@diplom@en{degree programme}
+\def\dirtype@diplom@en{Degree programme}
\def\degree@diplom{Magister der Philosophie (Mag.\,Phil.)}
\def\degree@diplom@f{Magistra der Philosophie (Mag.\,Phil.)}
% diss
\def\thesistype@diss{Dissertation}
\def\thesistype@diss@en{Doctoral Thesis}
\def\dirtype@diss{Dissertationsgebiet}
-\def\dirtype@diss@en{field of study}
+\def\dirtype@diss@en{Field of study}
\def\degree@diss{Doktor der Philosophie (Dr.\,phil.)}
\def\degree@diss@f{Doktorin der Philosophie (Dr.\,phil.)}
@@ -474,7 +482,10 @@ This includes all drawings, sketches, graphics and internet sources.}
% We need graphicx for the logo
\RequirePackage{graphicx}
+\def\uvt@titlesep{\,|\,}
+
\renewcommand*\maketitle[1][1]{%
+ \if@uvt@titlepage
\newgeometry{top=2cm,bottom=2.5cm,left=2.5cm,right=2cm}
\expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax
\else
@@ -527,27 +538,27 @@ This includes all drawings, sketches, graphics and internet sources.}
\renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}%
\setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
\begin{flushright}
- \includegraphics[width=6cm]{univielogo-sw}
+ \includegraphics[width=6cm]{univielogo}
\end{flushright}
\vspace{2\baselineskip}
\begin{center}
- {\usekomafont{thesistype}\MakeUppercase{\@thesistype\,/\,\hskip\z@skip\mbox{\@thesistype@en}}\par}
+ {\usekomafont{thesistype}\MakeUppercase{\@thesistype\uvt@titlesep\hskip\z@skip\mbox{\@thesistype@en}}\par}
\end{center}
\vspace{2\baselineskip}
\begin{center}
- {\usekomafont{tpcaption}Titel der \@thesistype\,/\,Title of the \@thesistype@en\par}
+ {\usekomafont{tpcaption}Titel\uvt@titlesep Title\par}
{\ifx\@title\@empty\else
- \usekomafont{title}{\enquote{\@title%
- \ifx\@subtitle\@empty\else\linebreak\@subtitle\fi}\par}%
+ \usekomafont{title}{\@title%
+ \ifx\@subtitle\@empty\else\linebreak\@subtitle\fi\par}%
\fi
}%
{\ifx\@volume\@empty\else%
- \vskip 1em\usekomafont{baende}{Band \@volume\ von \@volumes\ B\"anden\,/\,volume \@volume\ of \@volumes\ volumes}%
+ \vskip 1em\usekomafont{baende}{Band \@volume\ von \@volumes\ B\"anden\uvt@titlesep volume \@volume\ of \@volumes\ volumes}%
\fi%
}%
\vskip 2em
{%
- {\usekomafont{tpcaption}verfasst von\,/\,submitted by\par}
+ {\usekomafont{tpcaption}verfasst von\,\uvt@titlesep\uvt@titlesep submitted by\par}
\usekomafont{author}{%
\lineskip 0.75em%
\begin{tabular}[t]{c}
@@ -556,21 +567,21 @@ This includes all drawings, sketches, graphics and internet sources.}
}%
}%
\vskip 2em
- {\usekomafont{tpcaption}angestrebter akademischer Grad\,/\,in partial fulfilment of the requirements for the degree of\par}
+ {\usekomafont{tpcaption}angestrebter akademischer Grad\uvt@titlesep in partial fulfilment of the requirements for the degree of\par}
\usekomafont{degree}{\@degree}
\end{center}\par
\vfill
- {\usekomafont{date}{Wien, \the\year\,/\,Vienna, \the\year\par}}%
+ {\usekomafont{date}{Wien, \the\year\uvt@titlesep Vienna, \the\year\par}}%
\vskip 2em
\usekomafont{codes}{%
\begin{tabular}[t]{@{}>{\raggedright}p{0.4\columnwidth}>{\raggedright}p{0.1\columnwidth}>{\raggedright}p{0.4\columnwidth}}
- Studienkennzahl lt. Studienblatt/\newline degree programme code as it appears on the student record sheet: & & \@studienkennzahl\tabularnewline
+ Studienkennzahl lt. Studienblatt\uvt@titlesep Degree programme code as it appears on the student record sheet: & & \@studienkennzahl\tabularnewline
\noalign{\vskip6pt}
- \@dirtype\ lt. Studienblatt\slash\newline \@dirtype@en\ as it appears on the student record sheet: & & \@studienrichtung\tabularnewline
+ \@dirtype\ lt. Studienblatt\uvt@titlesep\@dirtype@en\ as it appears on the student record sheet: & & \@studienrichtung\tabularnewline
\noalign{\vskip6pt}
- Betreut von\,/\,Supervisor: & & \@supervisor\tabularnewline%
+ Betreut von\uvt@titlesep Supervisor: & & \@supervisor\tabularnewline%
\noalign{\vskip6pt}
- \ifx\@cosupervisor\@empty\else Mitbetreut von\,/\,Co-Supervisor: & & \@cosupervisor\fi
+ \ifx\@cosupervisor\@empty\else Mitbetreut von\uvt@titlesep Co-Supervisor: & & \@cosupervisor\fi
\end{tabular}\par
}
\par
@@ -591,7 +602,10 @@ This includes all drawings, sketches, graphics and internet sources.}
\cleardoubleemptypage
\fi
\ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi
- \end{titlepage}
+ \end{titlepage}
+ \else% \if@uvt@titlepage
+ \setcounter{page}{2}%
+ \fi
\setcounter{footnote}{0}%
\expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax
\let\thanks\relax
@@ -822,6 +836,21 @@ This includes all drawings, sketches, graphics and internet sources.}
% End of @uvt@apa condition
\fi
+\else% @uvt@biblatex condition FALSE
+
+% Some support for legacy bibtex
+\AtBeginDocument{%
+ \@ifundefined{bibhang}{}{%
+ \setlength{\bibhang}{\parindent}%
+ }%
+ \@ifundefined{bibfont}{}{%
+ \renewcommand{\bibfont}{\small}%
+ }%
+ \@ifundefined{bibsep}{}{%
+ \setlength\bibsep{0pt}%
+ }%
+}
+
% End of @uvt@biblatex condition
\fi
diff --git a/Master/texmf-dist/tex/latex/univie-ling/univie-ling-wlg.cls b/Master/texmf-dist/tex/latex/univie-ling/univie-ling-wlg.cls
index 00deb089cca..7c32f39b478 100644
--- a/Master/texmf-dist/tex/latex/univie-ling/univie-ling-wlg.cls
+++ b/Master/texmf-dist/tex/latex/univie-ling/univie-ling-wlg.cls
@@ -34,7 +34,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\ProvidesPackage{univie-ling-wlg}[2024/07/23 v.2.7 Univie WLG journal layout (JSp)]
+\ProvidesPackage{univie-ling-wlg}[2024/09/28 v.2.9 Univie WLG journal layout (JSp)]
%% ============================================================
@@ -431,10 +431,15 @@
\if@wlg@specialprint\else
\RequirePackage{etoc}
\etocstandardlines
+ \etocsetstyle{part}
+ {}
+ {\vspace{12pt}\normalsize\bfseries\rmfamily}
+ {\etocnumber. \etocname{}\par\vspace{10pt}}
+ {}
\etocsetstyle{chapter}
{}
{\normalsize\mdseries\rmfamily}
- {\etocname{}\dotfill\etocpage\par\vspace{12pt}}
+ {\etocname{}\dotfill\etocpage\par\vspace{10pt}}
{}
\setcounter{tocdepth}{0}
\fi
@@ -461,8 +466,7 @@
\newcommand*\frontmatter{%
\if@twoside\cleardoubleoddpage\else\clearpage\fi
\@wlg@mainmatterfalse\@wlg@frontmattertrue\pagenumbering{roman}%
- \edef\computelastpage{%
- \romannumeral\numexpr\getpagerefnumber{LastFrontPage}-1\relax}%
+ \def\computelastpage{\pageref{TotPages}}%
\edef\startpageref{%
\romannumeral\thestartpage\relax}%
}
@@ -595,6 +599,9 @@
\fi
\if@wlg@titlepage
\@maketitlepage[#1]%
+ \if@wlg@mainmatter
+ \pagenumbering{arabic}
+ \fi
\fi
\if@wlg@startpageset\else
\setcounter{page}{\thestartpage}
@@ -633,6 +640,7 @@
\thispagestyle{\titlepagestyle}\@thanks
\endgroup
\setcounter{footnote}{0}%
+ \setcounter{page}{\thestartpage}%
\global\let\@cauthor\@empty
\global\let\@thanks\@empty
\gdef\@ccauthor{\translate{corrauthor}}
@@ -672,7 +680,7 @@
\newcommand{\@maketitlepage}[1][1]{%
\if@wlg@titlepageneeded
\begin{titlepage}
- \pagenumbering{alph}
+ \pagenumbering{roman}
\thispagestyle{empty}%
\setcounter{page}{%
#1%
@@ -876,7 +884,9 @@
\end{flushright}%
\par
\vskip 2em
- \pagenumbering{arabic}
+ \if@wlg@mainmatter
+ \pagenumbering{arabic}
+ \fi
}%
% Rewrite \include for local LastPage counter
@@ -986,6 +996,9 @@
% (serifs)
\setkomafont{sectioning}{\normalfont\normalcolor\bfseries}
+% empty part pages
+\AddToHook{cmd/scr@startpart/before}{\cleardoublepage\thispagestyle{empty}}
+
% Abstract
\renewenvironment{abstract}{%
\addsec*{\hspace*{2.4em}Abstract}
@@ -1085,8 +1098,13 @@
\AtBeginDocument{%
\@ifundefined{bibhang}{}{%
\setlength{\bibhang}{\parindent}%
+ }%
+ \@ifundefined{bibfont}{}{%
\renewcommand{\bibfont}{\small}%
}%
+ \@ifundefined{bibsep}{}{%
+ \setlength\bibsep{0pt}%
+ }%
}
%% =============================================================
diff --git a/Master/texmf-dist/tex/latex/univie-ling/univie-ling.bbx b/Master/texmf-dist/tex/latex/univie-ling/univie-ling.bbx
index 985dc19f98b..78f5ac46459 100644
--- a/Master/texmf-dist/tex/latex/univie-ling/univie-ling.bbx
+++ b/Master/texmf-dist/tex/latex/univie-ling/univie-ling.bbx
@@ -38,7 +38,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{univie-ling.bbx}[2024/07/23 v.2.7 biblatex bibliography style]
+\ProvidesFile{univie-ling.bbx}[2024/09/28 v.2.9 biblatex bibliography style]
% Load base style (authoryear-comp)
\RequireBibliographyStyle{authoryear-comp}
@@ -75,9 +75,14 @@
% Option "issueeditor": Output journal issue editor (false by default)
\newtoggle{issueeditor}
-\DeclareBibliographyOption{issueeditor}[false]{%
+\DeclareBibliographyOption{issueeditor}[true]{%
\settoggle{issueeditor}{#1}}
+% Option "annotations": Output annotations (false by default)
+\newtoggle{annotations}
+\DeclareBibliographyOption{annotations}[true]{%
+ \settoggle{annotations}{#1}}
+
%
% NAME formatting (general)
%
@@ -518,6 +523,23 @@
\usebibmacro{date}%
\newunit}
+% Vertical separation for annotations
+\newlength\annotsep
+\setlength\annotsep{3pt}
+\newcommand*{\annotationdelim}{\adddot\par\setunit{}\nobreak}
+\AtEndOfPackage{%
+ \iftoggle{annotations}
+ {\setlength\bibparsep{\annotsep}}
+ {}%
+}
+
+\renewbibmacro*{annotation}{%
+ \iffieldundef{annotation}
+ {\printfile[annotation]{
+ \bibannotationprefix\thefield{entrykey}.tex}}%
+ {\printfield{annotation}}%
+}
+
\renewbibmacro*{labeltitle}{%
\iffieldundef{label}
{\iffieldundef{shorttitle}
@@ -620,6 +642,9 @@
% no pp. prefix
\DeclareFieldFormat{pages}{#1}
+% Add delimiter
+\DeclareFieldFormat{annotation}{\annotationdelim #1}
+
\DeclareFieldFormat{doi}{%
\ifhyperref
{\href{https://doi.org/#1}{\nolinkurl{https://doi.org/#1}}}
@@ -664,6 +689,9 @@
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
+ \iftoggle{annotations}
+ {\usebibmacro{annotation}}
+ {}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{book}{%
@@ -714,6 +742,9 @@
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
+ \iftoggle{annotations}
+ {\usebibmacro{annotation}}
+ {}%
\usebibmacro{finentry}}
\DeclareBibliographyAlias{collection}{book}
@@ -771,6 +802,9 @@
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
+ \iftoggle{annotations}
+ {\usebibmacro{annotation}}
+ {}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{inbook}{%
@@ -829,6 +863,9 @@
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
+ \iftoggle{annotations}
+ {\usebibmacro{annotation}}
+ {}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{thesis}{%
@@ -864,6 +901,9 @@
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
+ \iftoggle{annotations}
+ {\usebibmacro{annotation}}
+ {}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{unpublished}{%
@@ -895,6 +935,9 @@
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
+ \iftoggle{annotations}
+ {\usebibmacro{annotation}}
+ {}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{periodical}{%
@@ -924,6 +967,9 @@
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
+ \iftoggle{annotations}
+ {\usebibmacro{annotation}}
+ {}%
\usebibmacro{finentry}}
\endinput
diff --git a/Master/texmf-dist/tex/latex/univie-ling/univie-ling.cbx b/Master/texmf-dist/tex/latex/univie-ling/univie-ling.cbx
index 76000569402..9cf6707ff63 100644
--- a/Master/texmf-dist/tex/latex/univie-ling/univie-ling.cbx
+++ b/Master/texmf-dist/tex/latex/univie-ling/univie-ling.cbx
@@ -36,7 +36,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{univie-ling.cbx}[2024/07/23 v.2.7 biblatex citation style]
+\ProvidesFile{univie-ling.cbx}[2024/09/28 v.2.9 biblatex citation style]
\RequireCitationStyle{authoryear-comp}
diff --git a/Master/texmf-dist/tex/latex/updatemarks/updatemarks.sty b/Master/texmf-dist/tex/latex/updatemarks/updatemarks.sty
index 244ce20b5f2..4c55fb24811 100644
--- a/Master/texmf-dist/tex/latex/updatemarks/updatemarks.sty
+++ b/Master/texmf-dist/tex/latex/updatemarks/updatemarks.sty
@@ -13,11 +13,11 @@
%
% The Current Maintainer of this work is Wenjian Chern.
%
-% This work consists of the files updatemarks.sty and updatemarks.tex
+% This work consists of the files updatemarks.sty, updatemarks.tex and updatemarks-nums.sty
%
\NeedsTeXFormat{LaTeX2e}
\@ifundefined{NewDocumentCommand}{\RequirePackage{xparse}}{}
-\ProvidesExplPackage{updatemarks}{2024/02/19}{0.2e}{extract and update marks from box}
+\ProvidesExplPackage{updatemarks}{2024/10/07}{0.2f}{extract and update marks from box}
\RequirePackage{etoolbox}
\RequirePackage{updatemarks-nums}
@@ -451,8 +451,17 @@
{ \color@endgroup\egroup\extractmarks@of{tcolorbox}{\unvcopy\@tempboxa} }
{ } { \ERROR }
\let\endtcb@savebox=\endtcb@lrbox
- \patchcmd \tcb@drawing@env@end { \csname }
- { \updatemarks@of{tcolorbox}\csname } { } { \ERROR }
+ \ifdefined\tcb@drawing@env@end
+ \patchcmd \tcb@drawing@env@end { \csname }
+ { \updatemarks@of{tcolorbox}\csname } { } { \ERROR }
+ \else
+ \ifcsname environment~tcb@drawing~end~aux~ \endcsname
+ \tl_set:Nv \l_tmpa_tl { environment~tcb@drawing~end~aux~ }
+ \tl_if_in:NnF \l_tmpa_tl { \use:c } { \ERROR }
+ \tl_replace_once:Nnn \l_tmpa_tl { \use:c } { \updatemarks@of{tcolorbox}\use:c }
+ \exp_args:Nno \cs_set_nopar:cpn { environment~tcb@drawing~end~aux~ } \l_tmpa_tl
+ \else \ERROR \fi
+ \fi
% breakable library
\ifdefined \tcb@vsplit@upper
\apptocmd \tcb@vsplit@upper { \extractsplitmarks@of{tcolorbox} } { } { \ERROR }
diff --git a/Master/texmf-dist/tex/latex/useclass/useclass.sty b/Master/texmf-dist/tex/latex/useclass/useclass.sty
index 359532a10f1..774651c8ab1 100644
--- a/Master/texmf-dist/tex/latex/useclass/useclass.sty
+++ b/Master/texmf-dist/tex/latex/useclass/useclass.sty
@@ -25,7 +25,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{useclass}
- {2024-03-06}{1.0}{Use Classes as Packages} %
+ {2024-10-03}{1.1}{Use Classes as Packages} %
\tl_const:Nn \c__useclass_cs_name_tl {__useclass_s_cs_}
\seq_new:N \g__useclass_tl_seq
\seq_new:N \g__useclass_dim_seq
@@ -167,6 +167,7 @@
list,
l@section,
l@subsection,
+ @maketitle,
},
},
}
diff --git a/Master/texmf-dist/tex/latex/venturis/t1yvt.fd b/Master/texmf-dist/tex/latex/venturis/t1yvt.fd
deleted file mode 100644
index ad6759b0195..00000000000
--- a/Master/texmf-dist/tex/latex/venturis/t1yvt.fd
+++ /dev/null
@@ -1,97 +0,0 @@
-%Filename: t1yvt.fd
-%Created by: tex yvt-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{t1yvt.fd}
- [2010/07/03 Fontinst v1.933 font definitions for T1/yvt.]
-
-\DeclareFontFamily{T1}{yvt}{}
-
-\DeclareFontShape{T1}{yvt}{m}{n}{
- <-> yvtr8t
-}{}
-
-\DeclareFontShape{T1}{yvt}{m}{sc}{
- <-> yvtrc8t
-}{}
-
-\DeclareFontShape{T1}{yvt}{m}{si}{
- <-> yvtrci8t
-}{}
-
-\DeclareFontShape{T1}{yvt}{m}{it}{
- <-> yvtri8t
-}{}
-
-\DeclareFontShape{T1}{yvt}{b}{n}{
- <-> yvtb8t
-}{}
-
-\DeclareFontShape{T1}{yvt}{b}{sc}{
- <-> yvtbc8t
-}{}
-
-\DeclareFontShape{T1}{yvt}{b}{si}{
- <-> yvtbci8t
-}{}
-
-\DeclareFontShape{T1}{yvt}{b}{it}{
- <-> yvtbi8t
-}{}
-
-\DeclareFontShape{T1}{yvt}{eb}{n}{
- <-> yvth8t
-}{}
-
-\DeclareFontShape{T1}{yvt}{eb}{it}{
- <-> yvthi8t
-}{}
-
-\DeclareFontShape{T1}{yvt}{mc}{n}{
- <-> yvtr8tc
-}{}
-
-\DeclareFontShape{T1}{yvt}{mc}{sc}{
- <-> yvtrc8tc
-}{}
-
-\DeclareFontShape{T1}{yvt}{mc}{si}{
- <-> yvtrci8tc
-}{}
-
-\DeclareFontShape{T1}{yvt}{mc}{it}{
- <-> yvtri8tc
-}{}
-
-\DeclareFontShape{T1}{yvt}{bc}{n}{
- <-> yvtb8tc
-}{}
-
-\DeclareFontShape{T1}{yvt}{bc}{sc}{
- <-> yvtbc8tc
-}{}
-
-\DeclareFontShape{T1}{yvt}{bc}{si}{
- <-> yvtbci8tc
-}{}
-
-\DeclareFontShape{T1}{yvt}{bc}{it}{
- <-> yvtbi8tc
-}{}
-
-\DeclareFontShape{T1}{yvt}{m}{sl}{<->ssub * yvt/m/it}{}
-\DeclareFontShape{T1}{yvt}{bx}{n}{<->ssub * yvt/b/n}{}
-\DeclareFontShape{T1}{yvt}{bx}{sc}{<->ssub * yvt/b/sc}{}
-\DeclareFontShape{T1}{yvt}{bx}{si}{<->ssub * yvt/b/si}{}
-\DeclareFontShape{T1}{yvt}{bx}{it}{<->ssub * yvt/b/it}{}
-\DeclareFontShape{T1}{yvt}{b}{sl}{<->ssub * yvt/b/it}{}
-\DeclareFontShape{T1}{yvt}{bx}{sl}{<->ssub * yvt/b/sl}{}
-\DeclareFontShape{T1}{yvt}{eb}{sc}{<->ssub * yvt/eb/n}{}
-\DeclareFontShape{T1}{yvt}{eb}{si}{<->ssub * yvt/eb/sc}{}
-\DeclareFontShape{T1}{yvt}{eb}{sl}{<->ssub * yvt/eb/it}{}
-\DeclareFontShape{T1}{yvt}{mc}{sl}{<->ssub * yvt/mc/it}{}
-\DeclareFontShape{T1}{yvt}{bc}{sl}{<->ssub * yvt/bc/it}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturis/t1yvtajw.fd b/Master/texmf-dist/tex/latex/venturis/t1yvtajw.fd
deleted file mode 100644
index 7d5802f79ae..00000000000
--- a/Master/texmf-dist/tex/latex/venturis/t1yvtajw.fd
+++ /dev/null
@@ -1,86 +0,0 @@
-%Filename: t1yvtajw.fd
-%Created by: tex yvt-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{t1yvtajw.fd}
- [2010/07/03 Fontinst v1.933 font definitions for T1/yvtajw.]
-
-\DeclareFontFamily{T1}{yvtajw}{}
-
-\DeclareFontShape{T1}{yvtajw}{m}{n}{
- <-> yvtrajw8t
-}{}
-
-\DeclareFontShape{T1}{yvtajw}{m}{it}{
- <-> yvtrijw8t
-}{}
-
-\DeclareFontShape{T1}{yvtajw}{m}{sc}{
- <-> yvtrcjw8t
-}{}
-
-\DeclareFontShape{T1}{yvtajw}{m}{si}{
- <-> yvtrcijw8t
-}{}
-
-\DeclareFontShape{T1}{yvtajw}{b}{n}{
- <-> yvtbjw8t
-}{}
-
-\DeclareFontShape{T1}{yvtajw}{b}{it}{
- <-> yvtbijw8t
-}{}
-
-\DeclareFontShape{T1}{yvtajw}{b}{sc}{
- <-> yvtbcjw8t
-}{}
-
-\DeclareFontShape{T1}{yvtajw}{b}{si}{
- <-> yvtbcijw8t
-}{}
-
-\DeclareFontShape{T1}{yvtajw}{mc}{n}{
- <-> yvtrjw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtajw}{mc}{it}{
- <-> yvtrijw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtajw}{mc}{sc}{
- <-> yvtrcjw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtajw}{mc}{si}{
- <-> yvtrcijw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtajw}{bc}{n}{
- <-> yvtbjw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtajw}{bc}{it}{
- <-> yvtbijw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtajw}{bc}{sc}{
- <-> yvtbcjw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtajw}{bc}{si}{
- <-> yvtbcijw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtajw}{m}{sl}{<->ssub * yvtajw/m/it}{}
-\DeclareFontShape{T1}{yvtajw}{bx}{n}{<->ssub * yvtajw/b/n}{}
-\DeclareFontShape{T1}{yvtajw}{bx}{it}{<->ssub * yvtajw/b/it}{}
-\DeclareFontShape{T1}{yvtajw}{b}{sl}{<->ssub * yvtajw/b/it}{}
-\DeclareFontShape{T1}{yvtajw}{bx}{sl}{<->ssub * yvtajw/b/sl}{}
-\DeclareFontShape{T1}{yvtajw}{bx}{sc}{<->ssub * yvtajw/b/sc}{}
-\DeclareFontShape{T1}{yvtajw}{bx}{si}{<->ssub * yvtajw/b/si}{}
-\DeclareFontShape{T1}{yvtajw}{mc}{sl}{<->ssub * yvtajw/mc/it}{}
-\DeclareFontShape{T1}{yvtajw}{bc}{sl}{<->ssub * yvtajw/bc/it}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturis/t1yvtaw.fd b/Master/texmf-dist/tex/latex/venturis/t1yvtaw.fd
deleted file mode 100644
index 07a3955cf42..00000000000
--- a/Master/texmf-dist/tex/latex/venturis/t1yvtaw.fd
+++ /dev/null
@@ -1,86 +0,0 @@
-%Filename: t1yvtaw.fd
-%Created by: tex yvt-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{t1yvtaw.fd}
- [2010/07/03 Fontinst v1.933 font definitions for T1/yvtaw.]
-
-\DeclareFontFamily{T1}{yvtaw}{}
-
-\DeclareFontShape{T1}{yvtaw}{m}{n}{
- <-> yvtraw8t
-}{}
-
-\DeclareFontShape{T1}{yvtaw}{m}{sc}{
- <-> yvtrcw8t
-}{}
-
-\DeclareFontShape{T1}{yvtaw}{m}{si}{
- <-> yvtrciw8t
-}{}
-
-\DeclareFontShape{T1}{yvtaw}{m}{it}{
- <-> yvtriw8t
-}{}
-
-\DeclareFontShape{T1}{yvtaw}{b}{n}{
- <-> yvtbw8t
-}{}
-
-\DeclareFontShape{T1}{yvtaw}{b}{sc}{
- <-> yvtbcw8t
-}{}
-
-\DeclareFontShape{T1}{yvtaw}{b}{si}{
- <-> yvtbciw8t
-}{}
-
-\DeclareFontShape{T1}{yvtaw}{b}{it}{
- <-> yvtbiw8t
-}{}
-
-\DeclareFontShape{T1}{yvtaw}{mc}{n}{
- <-> yvtrw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtaw}{mc}{sc}{
- <-> yvtrcw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtaw}{mc}{si}{
- <-> yvtrciw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtaw}{mc}{it}{
- <-> yvtriw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtaw}{bc}{n}{
- <-> yvtbw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtaw}{bc}{sc}{
- <-> yvtbcw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtaw}{bc}{si}{
- <-> yvtbciw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtaw}{bc}{it}{
- <-> yvtbiw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtaw}{m}{sl}{<->ssub * yvtaw/m/it}{}
-\DeclareFontShape{T1}{yvtaw}{bx}{n}{<->ssub * yvtaw/b/n}{}
-\DeclareFontShape{T1}{yvtaw}{bx}{sc}{<->ssub * yvtaw/b/sc}{}
-\DeclareFontShape{T1}{yvtaw}{bx}{si}{<->ssub * yvtaw/b/si}{}
-\DeclareFontShape{T1}{yvtaw}{bx}{it}{<->ssub * yvtaw/b/it}{}
-\DeclareFontShape{T1}{yvtaw}{b}{sl}{<->ssub * yvtaw/b/it}{}
-\DeclareFontShape{T1}{yvtaw}{bx}{sl}{<->ssub * yvtaw/b/sl}{}
-\DeclareFontShape{T1}{yvtaw}{mc}{sl}{<->ssub * yvtaw/mc/it}{}
-\DeclareFontShape{T1}{yvtaw}{bc}{sl}{<->ssub * yvtaw/bc/it}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturis/t1yvtd.fd b/Master/texmf-dist/tex/latex/venturis/t1yvtd.fd
deleted file mode 100644
index 82a76a51960..00000000000
--- a/Master/texmf-dist/tex/latex/venturis/t1yvtd.fd
+++ /dev/null
@@ -1,82 +0,0 @@
-%Filename: t1yvtd.fd
-%Created by: tex yvt-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{t1yvtd.fd}
- [2010/07/03 Fontinst v1.933 font definitions for T1/yvtd.]
-
-\DeclareFontFamily{T1}{yvtd}{}
-
-\DeclareFontShape{T1}{yvtd}{bc}{sc}{
- <-> yvtbd8tc
-}{}
-
-\DeclareFontShape{T1}{yvtd}{mc}{sc}{
- <-> yvtbd8tc
-}{}
-
-\DeclareFontShape{T1}{yvtd}{m}{sc}{
- <-> yvtbd8tc
-}{}
-
-\DeclareFontShape{T1}{yvtd}{b}{sc}{
- <-> yvtbd8tc
-}{}
-
-\DeclareFontShape{T1}{yvtd}{eb}{sc}{
- <-> yvtbd8tc
-}{}
-
-\DeclareFontShape{T1}{yvtd}{m}{ol}{
- <-> yvtrdl8t
-}{}
-
-\DeclareFontShape{T1}{yvtd}{mc}{ol}{
- <-> yvtrdl7t
-}{}
-
-\DeclareFontShape{T1}{yvtd}{bc}{ol}{
- <-> yvtrdl8t
-}{}
-
-\DeclareFontShape{T1}{yvtd}{b}{ol}{
- <-> yvtrdl8t
-}{}
-
-\DeclareFontShape{T1}{yvtd}{eb}{ol}{
- <-> yvtrdl8t
-}{}
-
-\DeclareFontShape{T1}{yvtd}{mc}{n}{
- <-> yvtbd8tc
-}{}
-
-\DeclareFontShape{T1}{yvtd}{m}{n}{
- <-> yvtbd8tc
-}{}
-
-\DeclareFontShape{T1}{yvtd}{bc}{n}{
- <-> yvtbd8tc
-}{}
-
-\DeclareFontShape{T1}{yvtd}{b}{n}{
- <-> yvtbd8tc
-}{}
-
-\DeclareFontShape{T1}{yvtd}{eb}{n}{
- <-> yvtbd8tc
-}{}
-
-\DeclareFontShape{T1}{yvtd}{bc}{si}{<->ssub * yvtd/bc/sc}{}
-\DeclareFontShape{T1}{yvtd}{mc}{si}{<->ssub * yvtd/mc/sc}{}
-\DeclareFontShape{T1}{yvtd}{m}{si}{<->ssub * yvtd/m/sc}{}
-\DeclareFontShape{T1}{yvtd}{bx}{sc}{<->ssub * yvtd/b/sc}{}
-\DeclareFontShape{T1}{yvtd}{b}{si}{<->ssub * yvtd/b/sc}{}
-\DeclareFontShape{T1}{yvtd}{bx}{si}{<->ssub * yvtd/b/si}{}
-\DeclareFontShape{T1}{yvtd}{eb}{si}{<->ssub * yvtd/eb/sc}{}
-\DeclareFontShape{T1}{yvtd}{bx}{ol}{<->ssub * yvtd/b/ol}{}
-\DeclareFontShape{T1}{yvtd}{bx}{n}{<->ssub * yvtd/b/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturis/t1yvtj.fd b/Master/texmf-dist/tex/latex/venturis/t1yvtj.fd
deleted file mode 100644
index 2237b44f629..00000000000
--- a/Master/texmf-dist/tex/latex/venturis/t1yvtj.fd
+++ /dev/null
@@ -1,86 +0,0 @@
-%Filename: t1yvtj.fd
-%Created by: tex yvt-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{t1yvtj.fd}
- [2010/07/03 Fontinst v1.933 font definitions for T1/yvtj.]
-
-\DeclareFontFamily{T1}{yvtj}{}
-
-\DeclareFontShape{T1}{yvtj}{m}{n}{
- <-> yvtrj8t
-}{}
-
-\DeclareFontShape{T1}{yvtj}{m}{sc}{
- <-> yvtrcj8t
-}{}
-
-\DeclareFontShape{T1}{yvtj}{m}{si}{
- <-> yvtrcij8t
-}{}
-
-\DeclareFontShape{T1}{yvtj}{m}{it}{
- <-> yvtrij8t
-}{}
-
-\DeclareFontShape{T1}{yvtj}{b}{n}{
- <-> yvtbj8t
-}{}
-
-\DeclareFontShape{T1}{yvtj}{b}{sc}{
- <-> yvtbcj8t
-}{}
-
-\DeclareFontShape{T1}{yvtj}{b}{si}{
- <-> yvtbcij8t
-}{}
-
-\DeclareFontShape{T1}{yvtj}{b}{it}{
- <-> yvtbij8t
-}{}
-
-\DeclareFontShape{T1}{yvtj}{mc}{n}{
- <-> yvtrj8tc
-}{}
-
-\DeclareFontShape{T1}{yvtj}{mc}{sc}{
- <-> yvtrcj8tc
-}{}
-
-\DeclareFontShape{T1}{yvtj}{mc}{si}{
- <-> yvtrcij8tc
-}{}
-
-\DeclareFontShape{T1}{yvtj}{mc}{it}{
- <-> yvtrij8tc
-}{}
-
-\DeclareFontShape{T1}{yvtj}{bc}{n}{
- <-> yvtbj8tc
-}{}
-
-\DeclareFontShape{T1}{yvtj}{bc}{sc}{
- <-> yvtbcj8tc
-}{}
-
-\DeclareFontShape{T1}{yvtj}{bc}{si}{
- <-> yvtbcij8tc
-}{}
-
-\DeclareFontShape{T1}{yvtj}{bc}{it}{
- <-> yvtbij8tc
-}{}
-
-\DeclareFontShape{T1}{yvtj}{m}{sl}{<->ssub * yvtj/m/it}{}
-\DeclareFontShape{T1}{yvtj}{bx}{n}{<->ssub * yvtj/b/n}{}
-\DeclareFontShape{T1}{yvtj}{bx}{sc}{<->ssub * yvtj/b/sc}{}
-\DeclareFontShape{T1}{yvtj}{bx}{si}{<->ssub * yvtj/b/si}{}
-\DeclareFontShape{T1}{yvtj}{bx}{it}{<->ssub * yvtj/b/it}{}
-\DeclareFontShape{T1}{yvtj}{b}{sl}{<->ssub * yvtj/b/it}{}
-\DeclareFontShape{T1}{yvtj}{bx}{sl}{<->ssub * yvtj/b/sl}{}
-\DeclareFontShape{T1}{yvtj}{mc}{sl}{<->ssub * yvtj/mc/it}{}
-\DeclareFontShape{T1}{yvtj}{bc}{sl}{<->ssub * yvtj/bc/it}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturis/t1yvtjw.fd b/Master/texmf-dist/tex/latex/venturis/t1yvtjw.fd
deleted file mode 100644
index 5ca3288e389..00000000000
--- a/Master/texmf-dist/tex/latex/venturis/t1yvtjw.fd
+++ /dev/null
@@ -1,86 +0,0 @@
-%Filename: t1yvtjw.fd
-%Created by: tex yvt-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{t1yvtjw.fd}
- [2010/07/03 Fontinst v1.933 font definitions for T1/yvtjw.]
-
-\DeclareFontFamily{T1}{yvtjw}{}
-
-\DeclareFontShape{T1}{yvtjw}{m}{n}{
- <-> yvtrjw8t
-}{}
-
-\DeclareFontShape{T1}{yvtjw}{m}{sc}{
- <-> yvtrcjw8t
-}{}
-
-\DeclareFontShape{T1}{yvtjw}{m}{si}{
- <-> yvtrcijw8t
-}{}
-
-\DeclareFontShape{T1}{yvtjw}{m}{it}{
- <-> yvtrijw8t
-}{}
-
-\DeclareFontShape{T1}{yvtjw}{b}{n}{
- <-> yvtbjw8t
-}{}
-
-\DeclareFontShape{T1}{yvtjw}{b}{it}{
- <-> yvtbijw8t
-}{}
-
-\DeclareFontShape{T1}{yvtjw}{b}{sc}{
- <-> yvtbcjw8t
-}{}
-
-\DeclareFontShape{T1}{yvtjw}{b}{si}{
- <-> yvtbcijw8t
-}{}
-
-\DeclareFontShape{T1}{yvtjw}{mc}{n}{
- <-> yvtrjw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtjw}{mc}{sc}{
- <-> yvtrcjw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtjw}{mc}{si}{
- <-> yvtrcijw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtjw}{mc}{it}{
- <-> yvtrijw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtjw}{bc}{n}{
- <-> yvtbjw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtjw}{bc}{it}{
- <-> yvtbijw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtjw}{bc}{sc}{
- <-> yvtbcjw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtjw}{bc}{si}{
- <-> yvtbcijw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtjw}{m}{sl}{<->ssub * yvtjw/m/it}{}
-\DeclareFontShape{T1}{yvtjw}{bx}{n}{<->ssub * yvtjw/b/n}{}
-\DeclareFontShape{T1}{yvtjw}{bx}{it}{<->ssub * yvtjw/b/it}{}
-\DeclareFontShape{T1}{yvtjw}{b}{sl}{<->ssub * yvtjw/b/it}{}
-\DeclareFontShape{T1}{yvtjw}{bx}{sl}{<->ssub * yvtjw/b/sl}{}
-\DeclareFontShape{T1}{yvtjw}{bx}{sc}{<->ssub * yvtjw/b/sc}{}
-\DeclareFontShape{T1}{yvtjw}{bx}{si}{<->ssub * yvtjw/b/si}{}
-\DeclareFontShape{T1}{yvtjw}{mc}{sl}{<->ssub * yvtjw/mc/it}{}
-\DeclareFontShape{T1}{yvtjw}{bc}{sl}{<->ssub * yvtjw/bc/it}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturis/t1yvtw.fd b/Master/texmf-dist/tex/latex/venturis/t1yvtw.fd
deleted file mode 100644
index 0b424c71c90..00000000000
--- a/Master/texmf-dist/tex/latex/venturis/t1yvtw.fd
+++ /dev/null
@@ -1,86 +0,0 @@
-%Filename: t1yvtw.fd
-%Created by: tex yvt-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{t1yvtw.fd}
- [2010/07/03 Fontinst v1.933 font definitions for T1/yvtw.]
-
-\DeclareFontFamily{T1}{yvtw}{}
-
-\DeclareFontShape{T1}{yvtw}{m}{n}{
- <-> yvtrw8t
-}{}
-
-\DeclareFontShape{T1}{yvtw}{m}{it}{
- <-> yvtriw8t
-}{}
-
-\DeclareFontShape{T1}{yvtw}{m}{sc}{
- <-> yvtrcw8t
-}{}
-
-\DeclareFontShape{T1}{yvtw}{m}{si}{
- <-> yvtrciw8t
-}{}
-
-\DeclareFontShape{T1}{yvtw}{b}{n}{
- <-> yvtbw8t
-}{}
-
-\DeclareFontShape{T1}{yvtw}{b}{it}{
- <-> yvtbiw8t
-}{}
-
-\DeclareFontShape{T1}{yvtw}{b}{sc}{
- <-> yvtbcw8t
-}{}
-
-\DeclareFontShape{T1}{yvtw}{b}{si}{
- <-> yvtbciw8t
-}{}
-
-\DeclareFontShape{T1}{yvtw}{mc}{n}{
- <-> yvtrw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtw}{mc}{it}{
- <-> yvtriw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtw}{mc}{sc}{
- <-> yvtrcw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtw}{mc}{si}{
- <-> yvtrciw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtw}{bc}{n}{
- <-> yvtbw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtw}{bc}{it}{
- <-> yvtbiw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtw}{bc}{sc}{
- <-> yvtbcw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtw}{bc}{si}{
- <-> yvtbciw8tc
-}{}
-
-\DeclareFontShape{T1}{yvtw}{m}{sl}{<->ssub * yvtw/m/it}{}
-\DeclareFontShape{T1}{yvtw}{bx}{n}{<->ssub * yvtw/b/n}{}
-\DeclareFontShape{T1}{yvtw}{bx}{it}{<->ssub * yvtw/b/it}{}
-\DeclareFontShape{T1}{yvtw}{b}{sl}{<->ssub * yvtw/b/it}{}
-\DeclareFontShape{T1}{yvtw}{bx}{sl}{<->ssub * yvtw/b/sl}{}
-\DeclareFontShape{T1}{yvtw}{bx}{sc}{<->ssub * yvtw/b/sc}{}
-\DeclareFontShape{T1}{yvtw}{bx}{si}{<->ssub * yvtw/b/si}{}
-\DeclareFontShape{T1}{yvtw}{mc}{sl}{<->ssub * yvtw/mc/it}{}
-\DeclareFontShape{T1}{yvtw}{bc}{sl}{<->ssub * yvtw/bc/it}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturis/ts1yvt.fd b/Master/texmf-dist/tex/latex/venturis/ts1yvt.fd
deleted file mode 100644
index a2e80329049..00000000000
--- a/Master/texmf-dist/tex/latex/venturis/ts1yvt.fd
+++ /dev/null
@@ -1,97 +0,0 @@
-%Filename: ts1yvt.fd
-%Created by: tex yvt-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{ts1yvt.fd}
- [2010/07/03 Fontinst v1.933 font definitions for TS1/yvt.]
-
-\DeclareFontFamily{TS1}{yvt}{}
-
-\DeclareFontShape{TS1}{yvt}{m}{n}{
- <-> yvtr8c
-}{}
-
-\DeclareFontShape{TS1}{yvt}{m}{sc}{
- <-> yvtrc8c
-}{}
-
-\DeclareFontShape{TS1}{yvt}{m}{it}{
- <-> yvtri8c
-}{}
-
-\DeclareFontShape{TS1}{yvt}{m}{si}{
- <-> yvtrci8c
-}{}
-
-\DeclareFontShape{TS1}{yvt}{b}{n}{
- <-> yvtb8c
-}{}
-
-\DeclareFontShape{TS1}{yvt}{b}{sc}{
- <-> yvtbc8c
-}{}
-
-\DeclareFontShape{TS1}{yvt}{b}{it}{
- <-> yvtbi8c
-}{}
-
-\DeclareFontShape{TS1}{yvt}{b}{si}{
- <-> yvtbci8c
-}{}
-
-\DeclareFontShape{TS1}{yvt}{eb}{n}{
- <-> yvth8c
-}{}
-
-\DeclareFontShape{TS1}{yvt}{eb}{it}{
- <-> yvthi8c
-}{}
-
-\DeclareFontShape{TS1}{yvt}{mc}{n}{
- <-> yvtr8cc
-}{}
-
-\DeclareFontShape{TS1}{yvt}{mc}{sc}{
- <-> yvtrc8cc
-}{}
-
-\DeclareFontShape{TS1}{yvt}{mc}{it}{
- <-> yvtri8cc
-}{}
-
-\DeclareFontShape{TS1}{yvt}{mc}{si}{
- <-> yvtrci8cc
-}{}
-
-\DeclareFontShape{TS1}{yvt}{bc}{n}{
- <-> yvtb8cc
-}{}
-
-\DeclareFontShape{TS1}{yvt}{bc}{sc}{
- <-> yvtbc8cc
-}{}
-
-\DeclareFontShape{TS1}{yvt}{bc}{it}{
- <-> yvtbi8cc
-}{}
-
-\DeclareFontShape{TS1}{yvt}{bc}{si}{
- <-> yvtbci8cc
-}{}
-
-\DeclareFontShape{TS1}{yvt}{m}{sl}{<->ssub * yvt/m/it}{}
-\DeclareFontShape{TS1}{yvt}{bx}{n}{<->ssub * yvt/b/n}{}
-\DeclareFontShape{TS1}{yvt}{bx}{sc}{<->ssub * yvt/b/sc}{}
-\DeclareFontShape{TS1}{yvt}{bx}{it}{<->ssub * yvt/b/it}{}
-\DeclareFontShape{TS1}{yvt}{b}{sl}{<->ssub * yvt/b/it}{}
-\DeclareFontShape{TS1}{yvt}{bx}{sl}{<->ssub * yvt/b/sl}{}
-\DeclareFontShape{TS1}{yvt}{bx}{si}{<->ssub * yvt/b/si}{}
-\DeclareFontShape{TS1}{yvt}{eb}{sc}{<->ssub * yvt/eb/n}{}
-\DeclareFontShape{TS1}{yvt}{eb}{si}{<->ssub * yvt/eb/sc}{}
-\DeclareFontShape{TS1}{yvt}{eb}{sl}{<->ssub * yvt/eb/it}{}
-\DeclareFontShape{TS1}{yvt}{mc}{sl}{<->ssub * yvt/mc/it}{}
-\DeclareFontShape{TS1}{yvt}{bc}{sl}{<->ssub * yvt/bc/it}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturis/ts1yvtajw.fd b/Master/texmf-dist/tex/latex/venturis/ts1yvtajw.fd
deleted file mode 100644
index 40f418fb0eb..00000000000
--- a/Master/texmf-dist/tex/latex/venturis/ts1yvtajw.fd
+++ /dev/null
@@ -1,86 +0,0 @@
-%Filename: ts1yvtajw.fd
-%Created by: tex yvt-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{ts1yvtajw.fd}
- [2010/07/03 Fontinst v1.933 font definitions for TS1/yvtajw.]
-
-\DeclareFontFamily{TS1}{yvtajw}{}
-
-\DeclareFontShape{TS1}{yvtajw}{m}{n}{
- <-> yvtr8c
-}{}
-
-\DeclareFontShape{TS1}{yvtajw}{m}{sc}{
- <-> yvtrc8c
-}{}
-
-\DeclareFontShape{TS1}{yvtajw}{m}{it}{
- <-> yvtri8c
-}{}
-
-\DeclareFontShape{TS1}{yvtajw}{m}{si}{
- <-> yvtrci8c
-}{}
-
-\DeclareFontShape{TS1}{yvtajw}{b}{n}{
- <-> yvtb8c
-}{}
-
-\DeclareFontShape{TS1}{yvtajw}{b}{sc}{
- <-> yvtbc8c
-}{}
-
-\DeclareFontShape{TS1}{yvtajw}{b}{it}{
- <-> yvtbi8c
-}{}
-
-\DeclareFontShape{TS1}{yvtajw}{b}{si}{
- <-> yvtbci8c
-}{}
-
-\DeclareFontShape{TS1}{yvtajw}{mc}{n}{
- <-> yvtr8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtajw}{mc}{sc}{
- <-> yvtrc8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtajw}{mc}{it}{
- <-> yvtri8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtajw}{mc}{si}{
- <-> yvtrci8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtajw}{bc}{n}{
- <-> yvtb8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtajw}{bc}{sc}{
- <-> yvtbc8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtajw}{bc}{it}{
- <-> yvtbi8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtajw}{bc}{si}{
- <-> yvtbci8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtajw}{m}{sl}{<->ssub * yvtajw/m/it}{}
-\DeclareFontShape{TS1}{yvtajw}{bx}{n}{<->ssub * yvtajw/b/n}{}
-\DeclareFontShape{TS1}{yvtajw}{bx}{sc}{<->ssub * yvtajw/b/sc}{}
-\DeclareFontShape{TS1}{yvtajw}{bx}{it}{<->ssub * yvtajw/b/it}{}
-\DeclareFontShape{TS1}{yvtajw}{b}{sl}{<->ssub * yvtajw/b/it}{}
-\DeclareFontShape{TS1}{yvtajw}{bx}{sl}{<->ssub * yvtajw/b/sl}{}
-\DeclareFontShape{TS1}{yvtajw}{bx}{si}{<->ssub * yvtajw/b/si}{}
-\DeclareFontShape{TS1}{yvtajw}{mc}{sl}{<->ssub * yvtajw/mc/it}{}
-\DeclareFontShape{TS1}{yvtajw}{bc}{sl}{<->ssub * yvtajw/bc/it}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturis/ts1yvtaw.fd b/Master/texmf-dist/tex/latex/venturis/ts1yvtaw.fd
deleted file mode 100644
index 9872bbac000..00000000000
--- a/Master/texmf-dist/tex/latex/venturis/ts1yvtaw.fd
+++ /dev/null
@@ -1,86 +0,0 @@
-%Filename: ts1yvtaw.fd
-%Created by: tex yvt-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{ts1yvtaw.fd}
- [2010/07/03 Fontinst v1.933 font definitions for TS1/yvtaw.]
-
-\DeclareFontFamily{TS1}{yvtaw}{}
-
-\DeclareFontShape{TS1}{yvtaw}{m}{n}{
- <-> yvtr8c
-}{}
-
-\DeclareFontShape{TS1}{yvtaw}{m}{sc}{
- <-> yvtrc8c
-}{}
-
-\DeclareFontShape{TS1}{yvtaw}{m}{it}{
- <-> yvtri8c
-}{}
-
-\DeclareFontShape{TS1}{yvtaw}{m}{si}{
- <-> yvtrci8c
-}{}
-
-\DeclareFontShape{TS1}{yvtaw}{b}{n}{
- <-> yvtb8c
-}{}
-
-\DeclareFontShape{TS1}{yvtaw}{b}{sc}{
- <-> yvtbc8c
-}{}
-
-\DeclareFontShape{TS1}{yvtaw}{b}{it}{
- <-> yvtbi8c
-}{}
-
-\DeclareFontShape{TS1}{yvtaw}{b}{si}{
- <-> yvtbci8c
-}{}
-
-\DeclareFontShape{TS1}{yvtaw}{mc}{n}{
- <-> yvtr8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtaw}{mc}{sc}{
- <-> yvtrc8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtaw}{mc}{it}{
- <-> yvtri8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtaw}{mc}{si}{
- <-> yvtrci8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtaw}{bc}{n}{
- <-> yvtb8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtaw}{bc}{sc}{
- <-> yvtbc8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtaw}{bc}{it}{
- <-> yvtbi8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtaw}{bc}{si}{
- <-> yvtbci8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtaw}{m}{sl}{<->ssub * yvtaw/m/it}{}
-\DeclareFontShape{TS1}{yvtaw}{bx}{n}{<->ssub * yvtaw/b/n}{}
-\DeclareFontShape{TS1}{yvtaw}{bx}{sc}{<->ssub * yvtaw/b/sc}{}
-\DeclareFontShape{TS1}{yvtaw}{bx}{it}{<->ssub * yvtaw/b/it}{}
-\DeclareFontShape{TS1}{yvtaw}{b}{sl}{<->ssub * yvtaw/b/it}{}
-\DeclareFontShape{TS1}{yvtaw}{bx}{sl}{<->ssub * yvtaw/b/sl}{}
-\DeclareFontShape{TS1}{yvtaw}{bx}{si}{<->ssub * yvtaw/b/si}{}
-\DeclareFontShape{TS1}{yvtaw}{mc}{sl}{<->ssub * yvtaw/mc/it}{}
-\DeclareFontShape{TS1}{yvtaw}{bc}{sl}{<->ssub * yvtaw/bc/it}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturis/ts1yvtd.fd b/Master/texmf-dist/tex/latex/venturis/ts1yvtd.fd
deleted file mode 100644
index 3dc1881b8bc..00000000000
--- a/Master/texmf-dist/tex/latex/venturis/ts1yvtd.fd
+++ /dev/null
@@ -1,78 +0,0 @@
-%Filename: ts1yvtd.fd
-%Created by: tex yvt-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{ts1yvtd.fd}
- [2010/07/03 Fontinst v1.933 font definitions for TS1/yvtd.]
-
-\DeclareFontFamily{TS1}{yvtd}{}
-
-\DeclareFontShape{TS1}{yvtd}{bc}{sc}{
- <-> yvtbd8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtd}{m}{sc}{
- <-> yvtbd8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtd}{mc}{sc}{
- <-> yvtbd8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtd}{b}{sc}{
- <-> yvtbd8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtd}{eb}{sc}{
- <-> yvtbd8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtd}{m}{ol}{
- <-> yvtrdl8c
-}{}
-
-\DeclareFontShape{TS1}{yvtd}{mc}{ol}{
- <-> yvtrdl8c
-}{}
-
-\DeclareFontShape{TS1}{yvtd}{bc}{ol}{
- <-> yvtrdl8c
-}{}
-
-\DeclareFontShape{TS1}{yvtd}{b}{ol}{
- <-> yvtrdl8c
-}{}
-
-\DeclareFontShape{TS1}{yvtd}{mc}{n}{
- <-> yvtbd8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtd}{m}{n}{
- <-> yvtbd8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtd}{bc}{n}{
- <-> yvtbd8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtd}{b}{n}{
- <-> yvtbd8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtd}{eb}{n}{
- <-> yvtbd8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtd}{bc}{si}{<->ssub * yvtd/bc/sc}{}
-\DeclareFontShape{TS1}{yvtd}{m}{si}{<->ssub * yvtd/m/sc}{}
-\DeclareFontShape{TS1}{yvtd}{mc}{si}{<->ssub * yvtd/mc/sc}{}
-\DeclareFontShape{TS1}{yvtd}{bx}{sc}{<->ssub * yvtd/b/sc}{}
-\DeclareFontShape{TS1}{yvtd}{b}{si}{<->ssub * yvtd/b/sc}{}
-\DeclareFontShape{TS1}{yvtd}{bx}{si}{<->ssub * yvtd/b/si}{}
-\DeclareFontShape{TS1}{yvtd}{eb}{si}{<->ssub * yvtd/eb/sc}{}
-\DeclareFontShape{TS1}{yvtd}{bx}{ol}{<->ssub * yvtd/b/ol}{}
-\DeclareFontShape{TS1}{yvtd}{bx}{n}{<->ssub * yvtd/b/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturis/ts1yvtj.fd b/Master/texmf-dist/tex/latex/venturis/ts1yvtj.fd
deleted file mode 100644
index 5df3103f0ae..00000000000
--- a/Master/texmf-dist/tex/latex/venturis/ts1yvtj.fd
+++ /dev/null
@@ -1,86 +0,0 @@
-%Filename: ts1yvtj.fd
-%Created by: tex yvt-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{ts1yvtj.fd}
- [2010/07/03 Fontinst v1.933 font definitions for TS1/yvtj.]
-
-\DeclareFontFamily{TS1}{yvtj}{}
-
-\DeclareFontShape{TS1}{yvtj}{m}{n}{
- <-> yvtr8c
-}{}
-
-\DeclareFontShape{TS1}{yvtj}{m}{sc}{
- <-> yvtrc8c
-}{}
-
-\DeclareFontShape{TS1}{yvtj}{m}{it}{
- <-> yvtri8c
-}{}
-
-\DeclareFontShape{TS1}{yvtj}{m}{si}{
- <-> yvtrci8c
-}{}
-
-\DeclareFontShape{TS1}{yvtj}{b}{n}{
- <-> yvtb8c
-}{}
-
-\DeclareFontShape{TS1}{yvtj}{b}{sc}{
- <-> yvtbc8c
-}{}
-
-\DeclareFontShape{TS1}{yvtj}{b}{it}{
- <-> yvtbi8c
-}{}
-
-\DeclareFontShape{TS1}{yvtj}{b}{si}{
- <-> yvtbci8c
-}{}
-
-\DeclareFontShape{TS1}{yvtj}{mc}{n}{
- <-> yvtr8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtj}{mc}{sc}{
- <-> yvtrc8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtj}{mc}{it}{
- <-> yvtri8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtj}{mc}{si}{
- <-> yvtrci8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtj}{bc}{n}{
- <-> yvtb8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtj}{bc}{sc}{
- <-> yvtbc8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtj}{bc}{it}{
- <-> yvtbi8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtj}{bc}{si}{
- <-> yvtbci8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtj}{m}{sl}{<->ssub * yvtj/m/it}{}
-\DeclareFontShape{TS1}{yvtj}{bx}{n}{<->ssub * yvtj/b/n}{}
-\DeclareFontShape{TS1}{yvtj}{bx}{sc}{<->ssub * yvtj/b/sc}{}
-\DeclareFontShape{TS1}{yvtj}{bx}{it}{<->ssub * yvtj/b/it}{}
-\DeclareFontShape{TS1}{yvtj}{b}{sl}{<->ssub * yvtj/b/it}{}
-\DeclareFontShape{TS1}{yvtj}{bx}{sl}{<->ssub * yvtj/b/sl}{}
-\DeclareFontShape{TS1}{yvtj}{bx}{si}{<->ssub * yvtj/b/si}{}
-\DeclareFontShape{TS1}{yvtj}{mc}{sl}{<->ssub * yvtj/mc/it}{}
-\DeclareFontShape{TS1}{yvtj}{bc}{sl}{<->ssub * yvtj/bc/it}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturis/ts1yvtjw.fd b/Master/texmf-dist/tex/latex/venturis/ts1yvtjw.fd
deleted file mode 100644
index f1a348c2945..00000000000
--- a/Master/texmf-dist/tex/latex/venturis/ts1yvtjw.fd
+++ /dev/null
@@ -1,86 +0,0 @@
-%Filename: ts1yvtjw.fd
-%Created by: tex yvt-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{ts1yvtjw.fd}
- [2010/07/03 Fontinst v1.933 font definitions for TS1/yvtjw.]
-
-\DeclareFontFamily{TS1}{yvtjw}{}
-
-\DeclareFontShape{TS1}{yvtjw}{m}{n}{
- <-> yvtr8c
-}{}
-
-\DeclareFontShape{TS1}{yvtjw}{m}{sc}{
- <-> yvtrc8c
-}{}
-
-\DeclareFontShape{TS1}{yvtjw}{m}{it}{
- <-> yvtri8c
-}{}
-
-\DeclareFontShape{TS1}{yvtjw}{m}{si}{
- <-> yvtrci8c
-}{}
-
-\DeclareFontShape{TS1}{yvtjw}{b}{n}{
- <-> yvtb8c
-}{}
-
-\DeclareFontShape{TS1}{yvtjw}{b}{sc}{
- <-> yvtbc8c
-}{}
-
-\DeclareFontShape{TS1}{yvtjw}{b}{it}{
- <-> yvtbi8c
-}{}
-
-\DeclareFontShape{TS1}{yvtjw}{b}{si}{
- <-> yvtbci8c
-}{}
-
-\DeclareFontShape{TS1}{yvtjw}{mc}{n}{
- <-> yvtr8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtjw}{mc}{sc}{
- <-> yvtrc8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtjw}{mc}{it}{
- <-> yvtri8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtjw}{mc}{si}{
- <-> yvtrci8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtjw}{bc}{n}{
- <-> yvtb8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtjw}{bc}{sc}{
- <-> yvtbc8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtjw}{bc}{it}{
- <-> yvtbi8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtjw}{bc}{si}{
- <-> yvtbci8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtjw}{m}{sl}{<->ssub * yvtjw/m/it}{}
-\DeclareFontShape{TS1}{yvtjw}{bx}{n}{<->ssub * yvtjw/b/n}{}
-\DeclareFontShape{TS1}{yvtjw}{bx}{sc}{<->ssub * yvtjw/b/sc}{}
-\DeclareFontShape{TS1}{yvtjw}{bx}{it}{<->ssub * yvtjw/b/it}{}
-\DeclareFontShape{TS1}{yvtjw}{b}{sl}{<->ssub * yvtjw/b/it}{}
-\DeclareFontShape{TS1}{yvtjw}{bx}{sl}{<->ssub * yvtjw/b/sl}{}
-\DeclareFontShape{TS1}{yvtjw}{bx}{si}{<->ssub * yvtjw/b/si}{}
-\DeclareFontShape{TS1}{yvtjw}{mc}{sl}{<->ssub * yvtjw/mc/it}{}
-\DeclareFontShape{TS1}{yvtjw}{bc}{sl}{<->ssub * yvtjw/bc/it}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturis/ts1yvtw.fd b/Master/texmf-dist/tex/latex/venturis/ts1yvtw.fd
deleted file mode 100644
index 14afed4faa2..00000000000
--- a/Master/texmf-dist/tex/latex/venturis/ts1yvtw.fd
+++ /dev/null
@@ -1,86 +0,0 @@
-%Filename: ts1yvtw.fd
-%Created by: tex yvt-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{ts1yvtw.fd}
- [2010/07/03 Fontinst v1.933 font definitions for TS1/yvtw.]
-
-\DeclareFontFamily{TS1}{yvtw}{}
-
-\DeclareFontShape{TS1}{yvtw}{m}{n}{
- <-> yvtr8c
-}{}
-
-\DeclareFontShape{TS1}{yvtw}{m}{sc}{
- <-> yvtrc8c
-}{}
-
-\DeclareFontShape{TS1}{yvtw}{m}{it}{
- <-> yvtri8c
-}{}
-
-\DeclareFontShape{TS1}{yvtw}{m}{si}{
- <-> yvtrci8c
-}{}
-
-\DeclareFontShape{TS1}{yvtw}{b}{n}{
- <-> yvtb8c
-}{}
-
-\DeclareFontShape{TS1}{yvtw}{b}{sc}{
- <-> yvtbc8c
-}{}
-
-\DeclareFontShape{TS1}{yvtw}{b}{it}{
- <-> yvtbi8c
-}{}
-
-\DeclareFontShape{TS1}{yvtw}{b}{si}{
- <-> yvtbci8c
-}{}
-
-\DeclareFontShape{TS1}{yvtw}{mc}{n}{
- <-> yvtr8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtw}{mc}{sc}{
- <-> yvtrc8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtw}{mc}{it}{
- <-> yvtri8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtw}{mc}{si}{
- <-> yvtrci8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtw}{bc}{n}{
- <-> yvtb8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtw}{bc}{sc}{
- <-> yvtbc8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtw}{bc}{it}{
- <-> yvtbi8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtw}{bc}{si}{
- <-> yvtbci8cc
-}{}
-
-\DeclareFontShape{TS1}{yvtw}{m}{sl}{<->ssub * yvtw/m/it}{}
-\DeclareFontShape{TS1}{yvtw}{bx}{n}{<->ssub * yvtw/b/n}{}
-\DeclareFontShape{TS1}{yvtw}{bx}{sc}{<->ssub * yvtw/b/sc}{}
-\DeclareFontShape{TS1}{yvtw}{bx}{it}{<->ssub * yvtw/b/it}{}
-\DeclareFontShape{TS1}{yvtw}{b}{sl}{<->ssub * yvtw/b/it}{}
-\DeclareFontShape{TS1}{yvtw}{bx}{sl}{<->ssub * yvtw/b/sl}{}
-\DeclareFontShape{TS1}{yvtw}{bx}{si}{<->ssub * yvtw/b/si}{}
-\DeclareFontShape{TS1}{yvtw}{mc}{sl}{<->ssub * yvtw/mc/it}{}
-\DeclareFontShape{TS1}{yvtw}{bc}{sl}{<->ssub * yvtw/bc/it}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturis2/t1yv2.fd b/Master/texmf-dist/tex/latex/venturis2/t1yv2.fd
deleted file mode 100644
index b58640fa12f..00000000000
--- a/Master/texmf-dist/tex/latex/venturis2/t1yv2.fd
+++ /dev/null
@@ -1,84 +0,0 @@
-%Filename: t1yv2.fd
-%Created by: tex yv2-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{t1yv2.fd}
- [2010/07/03 Fontinst v1.933 font definitions for T1/yv2.]
-
-\DeclareFontFamily{T1}{yv2}{}
-
-\DeclareFontShape{T1}{yv2}{m}{n}{
- <-> yv2r8t
-}{}
-
-\DeclareFontShape{T1}{yv2}{m}{it}{
- <-> yv2ri8t
-}{}
-
-\DeclareFontShape{T1}{yv2}{b}{n}{
- <-> yv2b8t
-}{}
-
-\DeclareFontShape{T1}{yv2}{b}{it}{
- <-> yv2bi8t
-}{}
-
-\DeclareFontShape{T1}{yv2}{mc}{n}{
- <-> yv2r8tc
-}{}
-
-\DeclareFontShape{T1}{yv2}{mc}{it}{
- <-> yv2ri8tc
-}{}
-
-\DeclareFontShape{T1}{yv2}{bc}{n}{
- <-> yv2b8tc
-}{}
-
-\DeclareFontShape{T1}{yv2}{bc}{it}{
- <-> yv2bi8tc
-}{}
-
-\DeclareFontShape{T1}{yv2}{mb}{n}{
- <-> yv2m8t
-}{}
-
-\DeclareFontShape{T1}{yv2}{mb}{it}{
- <-> yv2mi8t
-}{}
-
-\DeclareFontShape{T1}{yv2}{eb}{n}{
- <-> yv2x8t
-}{}
-
-\DeclareFontShape{T1}{yv2}{eb}{it}{
- <-> yv2xi8t
-}{}
-
-\DeclareFontShape{T1}{yv2}{m}{sc}{<->ssub * yv2/m/n}{}
-\DeclareFontShape{T1}{yv2}{m}{si}{<->ssub * yv2/m/sc}{}
-\DeclareFontShape{T1}{yv2}{m}{sl}{<->ssub * yv2/m/it}{}
-\DeclareFontShape{T1}{yv2}{bx}{n}{<->ssub * yv2/b/n}{}
-\DeclareFontShape{T1}{yv2}{b}{sc}{<->ssub * yv2/b/n}{}
-\DeclareFontShape{T1}{yv2}{bx}{sc}{<->ssub * yv2/b/sc}{}
-\DeclareFontShape{T1}{yv2}{b}{si}{<->ssub * yv2/b/sc}{}
-\DeclareFontShape{T1}{yv2}{bx}{si}{<->ssub * yv2/b/si}{}
-\DeclareFontShape{T1}{yv2}{bx}{it}{<->ssub * yv2/b/it}{}
-\DeclareFontShape{T1}{yv2}{b}{sl}{<->ssub * yv2/b/it}{}
-\DeclareFontShape{T1}{yv2}{bx}{sl}{<->ssub * yv2/b/sl}{}
-\DeclareFontShape{T1}{yv2}{mc}{sc}{<->ssub * yv2/mc/n}{}
-\DeclareFontShape{T1}{yv2}{mc}{si}{<->ssub * yv2/mc/sc}{}
-\DeclareFontShape{T1}{yv2}{mc}{sl}{<->ssub * yv2/mc/it}{}
-\DeclareFontShape{T1}{yv2}{bc}{sc}{<->ssub * yv2/bc/n}{}
-\DeclareFontShape{T1}{yv2}{bc}{si}{<->ssub * yv2/bc/sc}{}
-\DeclareFontShape{T1}{yv2}{bc}{sl}{<->ssub * yv2/bc/it}{}
-\DeclareFontShape{T1}{yv2}{mb}{sc}{<->ssub * yv2/mb/n}{}
-\DeclareFontShape{T1}{yv2}{mb}{si}{<->ssub * yv2/mb/sc}{}
-\DeclareFontShape{T1}{yv2}{mb}{sl}{<->ssub * yv2/mb/it}{}
-\DeclareFontShape{T1}{yv2}{eb}{sc}{<->ssub * yv2/eb/n}{}
-\DeclareFontShape{T1}{yv2}{eb}{si}{<->ssub * yv2/eb/sc}{}
-\DeclareFontShape{T1}{yv2}{eb}{sl}{<->ssub * yv2/eb/it}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturis2/ts1yv2.fd b/Master/texmf-dist/tex/latex/venturis2/ts1yv2.fd
deleted file mode 100644
index 0b502b51c4b..00000000000
--- a/Master/texmf-dist/tex/latex/venturis2/ts1yv2.fd
+++ /dev/null
@@ -1,84 +0,0 @@
-%Filename: ts1yv2.fd
-%Created by: tex yv2-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{ts1yv2.fd}
- [2010/07/03 Fontinst v1.933 font definitions for TS1/yv2.]
-
-\DeclareFontFamily{TS1}{yv2}{}
-
-\DeclareFontShape{TS1}{yv2}{m}{n}{
- <-> yv2r8c
-}{}
-
-\DeclareFontShape{TS1}{yv2}{m}{it}{
- <-> yv2ri8c
-}{}
-
-\DeclareFontShape{TS1}{yv2}{b}{n}{
- <-> yv2b8c
-}{}
-
-\DeclareFontShape{TS1}{yv2}{b}{it}{
- <-> yv2bi8c
-}{}
-
-\DeclareFontShape{TS1}{yv2}{mc}{n}{
- <-> yv2r8cc
-}{}
-
-\DeclareFontShape{TS1}{yv2}{mc}{it}{
- <-> yv2ri8cc
-}{}
-
-\DeclareFontShape{TS1}{yv2}{bc}{n}{
- <-> yv2b8cc
-}{}
-
-\DeclareFontShape{TS1}{yv2}{bc}{it}{
- <-> yv2bi8cc
-}{}
-
-\DeclareFontShape{TS1}{yv2}{mb}{n}{
- <-> yv2m8c
-}{}
-
-\DeclareFontShape{TS1}{yv2}{mb}{it}{
- <-> yv2mi8c
-}{}
-
-\DeclareFontShape{TS1}{yv2}{eb}{n}{
- <-> yv2x8c
-}{}
-
-\DeclareFontShape{TS1}{yv2}{eb}{it}{
- <-> yv2xi8c
-}{}
-
-\DeclareFontShape{TS1}{yv2}{m}{sc}{<->ssub * yv2/m/n}{}
-\DeclareFontShape{TS1}{yv2}{m}{si}{<->ssub * yv2/m/sc}{}
-\DeclareFontShape{TS1}{yv2}{m}{sl}{<->ssub * yv2/m/it}{}
-\DeclareFontShape{TS1}{yv2}{bx}{n}{<->ssub * yv2/b/n}{}
-\DeclareFontShape{TS1}{yv2}{b}{sc}{<->ssub * yv2/b/n}{}
-\DeclareFontShape{TS1}{yv2}{bx}{sc}{<->ssub * yv2/b/sc}{}
-\DeclareFontShape{TS1}{yv2}{b}{si}{<->ssub * yv2/b/sc}{}
-\DeclareFontShape{TS1}{yv2}{bx}{si}{<->ssub * yv2/b/si}{}
-\DeclareFontShape{TS1}{yv2}{bx}{it}{<->ssub * yv2/b/it}{}
-\DeclareFontShape{TS1}{yv2}{b}{sl}{<->ssub * yv2/b/it}{}
-\DeclareFontShape{TS1}{yv2}{bx}{sl}{<->ssub * yv2/b/sl}{}
-\DeclareFontShape{TS1}{yv2}{mc}{sc}{<->ssub * yv2/mc/n}{}
-\DeclareFontShape{TS1}{yv2}{mc}{si}{<->ssub * yv2/mc/sc}{}
-\DeclareFontShape{TS1}{yv2}{mc}{sl}{<->ssub * yv2/mc/it}{}
-\DeclareFontShape{TS1}{yv2}{bc}{sc}{<->ssub * yv2/bc/n}{}
-\DeclareFontShape{TS1}{yv2}{bc}{si}{<->ssub * yv2/bc/sc}{}
-\DeclareFontShape{TS1}{yv2}{bc}{sl}{<->ssub * yv2/bc/it}{}
-\DeclareFontShape{TS1}{yv2}{mb}{sc}{<->ssub * yv2/mb/n}{}
-\DeclareFontShape{TS1}{yv2}{mb}{si}{<->ssub * yv2/mb/sc}{}
-\DeclareFontShape{TS1}{yv2}{mb}{sl}{<->ssub * yv2/mb/it}{}
-\DeclareFontShape{TS1}{yv2}{eb}{sc}{<->ssub * yv2/eb/n}{}
-\DeclareFontShape{TS1}{yv2}{eb}{si}{<->ssub * yv2/eb/sc}{}
-\DeclareFontShape{TS1}{yv2}{eb}{sl}{<->ssub * yv2/eb/it}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/t1yv1.fd b/Master/texmf-dist/tex/latex/venturisadf/t1yv1.fd
new file mode 100644
index 00000000000..a0d2a262cb5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/t1yv1.fd
@@ -0,0 +1,163 @@
+%Filename: t1yv1.fd
+%Created by: tex yv1-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{t1yv1.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for T1/yv1.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvi@scale\endcsname\relax
+ \let\yvi@@scale\@empty
+\else
+ \edef\yvi@@scale{s*[\csname yvi@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{yv1}{}
+
+\DeclareFontShape{T1}{yv1}{m}{n}{
+ <-> \yvi@@scale yv1r8t
+}{}
+
+\DeclareFontShape{T1}{yv1}{m}{it}{
+ <-> \yvi@@scale yv1ri8t
+}{}
+
+\DeclareFontShape{T1}{yv1}{b}{n}{
+ <-> \yvi@@scale yv1b8t
+}{}
+
+\DeclareFontShape{T1}{yv1}{b}{it}{
+ <-> \yvi@@scale yv1bi8t
+}{}
+
+\DeclareFontShape{T1}{yv1}{eb}{n}{
+ <-> \yvi@@scale yv1h8t
+}{}
+
+\DeclareFontShape{T1}{yv1}{eb}{sl}{
+ <-> \yvi@@scale yv1ho8t
+}{}
+
+\DeclareFontShape{T1}{yv1}{eb}{it}{
+ <-> \yvi@@scale yv1ho8t
+}{}
+
+\DeclareFontShape{T1}{yv1}{c}{n}{
+ <-> \yvi@@scale yv1r8tc
+}{}
+
+\DeclareFontShape{T1}{yv1}{c}{it}{
+ <-> \yvi@@scale yv1ri8tc
+}{}
+
+\DeclareFontShape{T1}{yv1}{bc}{n}{
+ <-> \yvi@@scale yv1b8tc
+}{}
+
+\DeclareFontShape{T1}{yv1}{bc}{it}{
+ <-> \yvi@@scale yv1bi8tc
+}{}
+
+\DeclareFontShape{T1}{yv1}{x}{n}{
+ <-> \yvi@@scale yv1r8tx
+}{}
+
+\DeclareFontShape{T1}{yv1}{x}{it}{
+ <-> \yvi@@scale yv1ri8tx
+}{}
+
+\DeclareFontShape{T1}{yv1}{bx}{n}{
+ <-> \yvi@@scale yv1b8tx
+}{}
+
+\DeclareFontShape{T1}{yv1}{bx}{sc}{
+ <-> \yvi@@scale yv1b8tx
+}{}
+
+\DeclareFontShape{T1}{yv1}{bx}{it}{
+ <-> \yvi@@scale yv1bi8tx
+}{}
+
+\DeclareFontShape{T1}{yv1}{bx}{sl}{
+ <-> \yvi@@scale yv1bi8tx
+}{}
+
+\DeclareFontShape{T1}{yv1}{bx}{scit}{
+ <-> \yvi@@scale yv1b8tx
+}{}
+
+\DeclareFontShape{T1}{yv1}{l}{n}{
+ <-> \yvi@@scale yv1l8t
+}{}
+
+\DeclareFontShape{T1}{yv1}{l}{it}{
+ <-> \yvi@@scale yv1li8t
+}{}
+
+\DeclareFontShape{T1}{yv1}{db}{n}{
+ <-> \yvi@@scale yv1d8t
+}{}
+
+\DeclareFontShape{T1}{yv1}{db}{it}{
+ <-> \yvi@@scale yv1di8t
+}{}
+
+\DeclareFontShape{T1}{yv1}{m}{sc}{<->ssub * yv1/m/n}{}
+\DeclareFontShape{T1}{yv1}{m}{scit}{<->ssub * yv1/m/sc}{}
+\DeclareFontShape{T1}{yv1}{m}{scsl}{<->ssub * yv1/m/scit}{}
+\DeclareFontShape{T1}{yv1}{m}{si}{<->ssub * yv1/m/scsl}{}
+\DeclareFontShape{T1}{yv1}{m}{sl}{<->ssub * yv1/m/it}{}
+\DeclareFontShape{T1}{yv1}{b}{sc}{<->ssub * yv1/b/n}{}
+\DeclareFontShape{T1}{yv1}{b}{scit}{<->ssub * yv1/b/sc}{}
+\DeclareFontShape{T1}{yv1}{b}{scsl}{<->ssub * yv1/b/scit}{}
+\DeclareFontShape{T1}{yv1}{bx}{scsl}{<->ssub * yv1/b/scsl}{}
+\DeclareFontShape{T1}{yv1}{b}{si}{<->ssub * yv1/b/scsl}{}
+\DeclareFontShape{T1}{yv1}{bx}{si}{<->ssub * yv1/b/si}{}
+\DeclareFontShape{T1}{yv1}{b}{sl}{<->ssub * yv1/b/it}{}
+\DeclareFontShape{T1}{yv1}{eb}{sc}{<->ssub * yv1/eb/n}{}
+\DeclareFontShape{T1}{yv1}{eb}{scit}{<->ssub * yv1/eb/sc}{}
+\DeclareFontShape{T1}{yv1}{eb}{scsl}{<->ssub * yv1/eb/scit}{}
+\DeclareFontShape{T1}{yv1}{eb}{si}{<->ssub * yv1/eb/scsl}{}
+\DeclareFontShape{T1}{yv1}{uc}{n}{<->ssub * yv1/c/n}{}
+\DeclareFontShape{T1}{yv1}{c}{sc}{<->ssub * yv1/c/n}{}
+\DeclareFontShape{T1}{yv1}{uc}{sc}{<->ssub * yv1/c/sc}{}
+\DeclareFontShape{T1}{yv1}{c}{scit}{<->ssub * yv1/c/sc}{}
+\DeclareFontShape{T1}{yv1}{uc}{scit}{<->ssub * yv1/c/scit}{}
+\DeclareFontShape{T1}{yv1}{c}{scsl}{<->ssub * yv1/c/scit}{}
+\DeclareFontShape{T1}{yv1}{uc}{scsl}{<->ssub * yv1/c/scsl}{}
+\DeclareFontShape{T1}{yv1}{c}{si}{<->ssub * yv1/c/scsl}{}
+\DeclareFontShape{T1}{yv1}{uc}{si}{<->ssub * yv1/c/si}{}
+\DeclareFontShape{T1}{yv1}{uc}{it}{<->ssub * yv1/c/it}{}
+\DeclareFontShape{T1}{yv1}{c}{sl}{<->ssub * yv1/c/it}{}
+\DeclareFontShape{T1}{yv1}{uc}{sl}{<->ssub * yv1/c/sl}{}
+\DeclareFontShape{T1}{yv1}{bc}{sc}{<->ssub * yv1/bc/n}{}
+\DeclareFontShape{T1}{yv1}{bc}{scit}{<->ssub * yv1/bc/sc}{}
+\DeclareFontShape{T1}{yv1}{bc}{scsl}{<->ssub * yv1/bc/scit}{}
+\DeclareFontShape{T1}{yv1}{bc}{si}{<->ssub * yv1/bc/scsl}{}
+\DeclareFontShape{T1}{yv1}{bc}{sl}{<->ssub * yv1/bc/it}{}
+\DeclareFontShape{T1}{yv1}{x}{sc}{<->ssub * yv1/x/n}{}
+\DeclareFontShape{T1}{yv1}{x}{scit}{<->ssub * yv1/x/sc}{}
+\DeclareFontShape{T1}{yv1}{x}{scsl}{<->ssub * yv1/x/scit}{}
+\DeclareFontShape{T1}{yv1}{x}{si}{<->ssub * yv1/x/scsl}{}
+\DeclareFontShape{T1}{yv1}{x}{sl}{<->ssub * yv1/x/it}{}
+\DeclareFontShape{T1}{yv1}{l}{sc}{<->ssub * yv1/l/n}{}
+\DeclareFontShape{T1}{yv1}{l}{scit}{<->ssub * yv1/l/sc}{}
+\DeclareFontShape{T1}{yv1}{l}{scsl}{<->ssub * yv1/l/scit}{}
+\DeclareFontShape{T1}{yv1}{l}{si}{<->ssub * yv1/l/scsl}{}
+\DeclareFontShape{T1}{yv1}{l}{sl}{<->ssub * yv1/l/it}{}
+\DeclareFontShape{T1}{yv1}{dbuc}{n}{<->ssub * yv1/db/n}{}
+\DeclareFontShape{T1}{yv1}{db}{sc}{<->ssub * yv1/db/n}{}
+\DeclareFontShape{T1}{yv1}{dbuc}{sc}{<->ssub * yv1/db/sc}{}
+\DeclareFontShape{T1}{yv1}{db}{scit}{<->ssub * yv1/db/sc}{}
+\DeclareFontShape{T1}{yv1}{dbuc}{scit}{<->ssub * yv1/db/scit}{}
+\DeclareFontShape{T1}{yv1}{db}{scsl}{<->ssub * yv1/db/scit}{}
+\DeclareFontShape{T1}{yv1}{dbuc}{scsl}{<->ssub * yv1/db/scsl}{}
+\DeclareFontShape{T1}{yv1}{db}{si}{<->ssub * yv1/db/scsl}{}
+\DeclareFontShape{T1}{yv1}{dbuc}{si}{<->ssub * yv1/db/si}{}
+\DeclareFontShape{T1}{yv1}{dbuc}{it}{<->ssub * yv1/db/it}{}
+\DeclareFontShape{T1}{yv1}{db}{sl}{<->ssub * yv1/db/it}{}
+\DeclareFontShape{T1}{yv1}{dbuc}{sl}{<->ssub * yv1/db/sl}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/t1yv1d.fd b/Master/texmf-dist/tex/latex/venturisadf/t1yv1d.fd
new file mode 100644
index 00000000000..be02e62d1f1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/t1yv1d.fd
@@ -0,0 +1,135 @@
+%Filename: t1yv1d.fd
+%Created by: tex yv1-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{t1yv1d.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for T1/yv1d.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvi@scale\endcsname\relax
+ \let\yvi@@scale\@empty
+\else
+ \edef\yvi@@scale{s*[\csname yvi@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{yv1d}{}
+
+\DeclareFontShape{T1}{yv1d}{b}{sc}{
+ <-> \yvi@@scale yv1bd8t
+}{}
+
+\DeclareFontShape{T1}{yv1d}{eb}{sc}{
+ <-> \yvi@@scale yv1bd8t
+}{}
+
+\DeclareFontShape{T1}{yv1d}{bc}{sc}{
+ <-> \yvi@@scale yv1bd8t
+}{}
+
+\DeclareFontShape{T1}{yv1d}{db}{sc}{
+ <-> \yvi@@scale yv1bd8t
+}{}
+
+\DeclareFontShape{T1}{yv1d}{b}{n}{
+ <-> \yvi@@scale yv1bd8t
+}{}
+
+\DeclareFontShape{T1}{yv1d}{eb}{n}{
+ <-> \yvi@@scale yv1bd8t
+}{}
+
+\DeclareFontShape{T1}{yv1d}{bc}{n}{
+ <-> \yvi@@scale yv1bd8t
+}{}
+
+\DeclareFontShape{T1}{yv1d}{db}{n}{
+ <-> \yvi@@scale yv1bd8t
+}{}
+
+\DeclareFontShape{T1}{yv1d}{dbuc}{sc}{
+ <-> \yvi@@scale yv1dd8tu
+}{}
+
+\DeclareFontShape{T1}{yv1d}{x}{sc}{
+ <-> \yvi@@scale yv1dd8tu
+}{}
+
+\DeclareFontShape{T1}{yv1d}{m}{sc}{
+ <-> \yvi@@scale yv1dd8tu
+}{}
+
+\DeclareFontShape{T1}{yv1d}{c}{sc}{
+ <-> \yvi@@scale yv1dd8tu
+}{}
+
+\DeclareFontShape{T1}{yv1d}{uc}{sc}{
+ <-> \yvi@@scale yv1dd8tu
+}{}
+
+\DeclareFontShape{T1}{yv1d}{l}{sc}{
+ <-> \yvi@@scale yv1dd8tu
+}{}
+
+\DeclareFontShape{T1}{yv1d}{dbuc}{n}{
+ <-> \yvi@@scale yv1dd8tu
+}{}
+
+\DeclareFontShape{T1}{yv1d}{x}{n}{
+ <-> \yvi@@scale yv1dd8tu
+}{}
+
+\DeclareFontShape{T1}{yv1d}{m}{n}{
+ <-> \yvi@@scale yv1dd8tu
+}{}
+
+\DeclareFontShape{T1}{yv1d}{c}{n}{
+ <-> \yvi@@scale yv1dd8tu
+}{}
+
+\DeclareFontShape{T1}{yv1d}{uc}{n}{
+ <-> \yvi@@scale yv1dd8tu
+}{}
+
+\DeclareFontShape{T1}{yv1d}{l}{n}{
+ <-> \yvi@@scale yv1dd8tu
+}{}
+
+\DeclareFontShape{T1}{yv1d}{bx}{sc}{<->ssub * yv1d/b/sc}{}
+\DeclareFontShape{T1}{yv1d}{b}{scit}{<->ssub * yv1d/b/sc}{}
+\DeclareFontShape{T1}{yv1d}{bx}{scit}{<->ssub * yv1d/b/scit}{}
+\DeclareFontShape{T1}{yv1d}{b}{scsl}{<->ssub * yv1d/b/scit}{}
+\DeclareFontShape{T1}{yv1d}{bx}{scsl}{<->ssub * yv1d/b/scsl}{}
+\DeclareFontShape{T1}{yv1d}{b}{si}{<->ssub * yv1d/b/scsl}{}
+\DeclareFontShape{T1}{yv1d}{bx}{si}{<->ssub * yv1d/b/si}{}
+\DeclareFontShape{T1}{yv1d}{eb}{scit}{<->ssub * yv1d/eb/sc}{}
+\DeclareFontShape{T1}{yv1d}{eb}{scsl}{<->ssub * yv1d/eb/scit}{}
+\DeclareFontShape{T1}{yv1d}{eb}{si}{<->ssub * yv1d/eb/scsl}{}
+\DeclareFontShape{T1}{yv1d}{bc}{scit}{<->ssub * yv1d/bc/sc}{}
+\DeclareFontShape{T1}{yv1d}{bc}{scsl}{<->ssub * yv1d/bc/scit}{}
+\DeclareFontShape{T1}{yv1d}{bc}{si}{<->ssub * yv1d/bc/scsl}{}
+\DeclareFontShape{T1}{yv1d}{db}{scit}{<->ssub * yv1d/db/sc}{}
+\DeclareFontShape{T1}{yv1d}{dbuc}{scit}{<->ssub * yv1d/db/scit}{}
+\DeclareFontShape{T1}{yv1d}{db}{scsl}{<->ssub * yv1d/db/scit}{}
+\DeclareFontShape{T1}{yv1d}{dbuc}{scsl}{<->ssub * yv1d/db/scsl}{}
+\DeclareFontShape{T1}{yv1d}{db}{si}{<->ssub * yv1d/db/scsl}{}
+\DeclareFontShape{T1}{yv1d}{dbuc}{si}{<->ssub * yv1d/db/si}{}
+\DeclareFontShape{T1}{yv1d}{bx}{n}{<->ssub * yv1d/b/n}{}
+\DeclareFontShape{T1}{yv1d}{x}{scit}{<->ssub * yv1d/x/sc}{}
+\DeclareFontShape{T1}{yv1d}{x}{scsl}{<->ssub * yv1d/x/scit}{}
+\DeclareFontShape{T1}{yv1d}{x}{si}{<->ssub * yv1d/x/scsl}{}
+\DeclareFontShape{T1}{yv1d}{m}{scit}{<->ssub * yv1d/m/sc}{}
+\DeclareFontShape{T1}{yv1d}{m}{scsl}{<->ssub * yv1d/m/scit}{}
+\DeclareFontShape{T1}{yv1d}{m}{si}{<->ssub * yv1d/m/scsl}{}
+\DeclareFontShape{T1}{yv1d}{c}{scit}{<->ssub * yv1d/c/sc}{}
+\DeclareFontShape{T1}{yv1d}{uc}{scit}{<->ssub * yv1d/c/scit}{}
+\DeclareFontShape{T1}{yv1d}{c}{scsl}{<->ssub * yv1d/c/scit}{}
+\DeclareFontShape{T1}{yv1d}{uc}{scsl}{<->ssub * yv1d/c/scsl}{}
+\DeclareFontShape{T1}{yv1d}{c}{si}{<->ssub * yv1d/c/scsl}{}
+\DeclareFontShape{T1}{yv1d}{uc}{si}{<->ssub * yv1d/c/si}{}
+\DeclareFontShape{T1}{yv1d}{l}{scit}{<->ssub * yv1d/l/sc}{}
+\DeclareFontShape{T1}{yv1d}{l}{scsl}{<->ssub * yv1d/l/scit}{}
+\DeclareFontShape{T1}{yv1d}{l}{si}{<->ssub * yv1d/l/scsl}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/t1yv2.fd b/Master/texmf-dist/tex/latex/venturisadf/t1yv2.fd
new file mode 100644
index 00000000000..54356fbd1f2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/t1yv2.fd
@@ -0,0 +1,105 @@
+%Filename: t1yv2.fd
+%Created by: tex yv2-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{t1yv2.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for T1/yv2.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvii@scale\endcsname\relax
+ \let\yvii@@scale\@empty
+\else
+ \edef\yvii@@scale{s*[\csname yvii@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{yv2}{}
+
+\DeclareFontShape{T1}{yv2}{m}{n}{
+ <-> \yvii@@scale yv2r8t
+}{}
+
+\DeclareFontShape{T1}{yv2}{m}{it}{
+ <-> \yvii@@scale yv2ri8t
+}{}
+
+\DeclareFontShape{T1}{yv2}{b}{n}{
+ <-> \yvii@@scale yv2b8t
+}{}
+
+\DeclareFontShape{T1}{yv2}{b}{it}{
+ <-> \yvii@@scale yv2bi8t
+}{}
+
+\DeclareFontShape{T1}{yv2}{c}{n}{
+ <-> \yvii@@scale yv2r8tc
+}{}
+
+\DeclareFontShape{T1}{yv2}{c}{it}{
+ <-> \yvii@@scale yv2ri8tc
+}{}
+
+\DeclareFontShape{T1}{yv2}{bc}{n}{
+ <-> \yvii@@scale yv2b8tc
+}{}
+
+\DeclareFontShape{T1}{yv2}{bc}{it}{
+ <-> \yvii@@scale yv2bi8tc
+}{}
+
+\DeclareFontShape{T1}{yv2}{sb}{n}{
+ <-> \yvii@@scale yv2m8t
+}{}
+
+\DeclareFontShape{T1}{yv2}{sb}{it}{
+ <-> \yvii@@scale yv2mi8t
+}{}
+
+\DeclareFontShape{T1}{yv2}{eb}{n}{
+ <-> \yvii@@scale yv2x8t
+}{}
+
+\DeclareFontShape{T1}{yv2}{eb}{it}{
+ <-> \yvii@@scale yv2xi8t
+}{}
+
+\DeclareFontShape{T1}{yv2}{m}{sc}{<->ssub * yv2/m/n}{}
+\DeclareFontShape{T1}{yv2}{m}{scit}{<->ssub * yv2/m/sc}{}
+\DeclareFontShape{T1}{yv2}{m}{scsl}{<->ssub * yv2/m/scit}{}
+\DeclareFontShape{T1}{yv2}{m}{si}{<->ssub * yv2/m/scsl}{}
+\DeclareFontShape{T1}{yv2}{m}{sl}{<->ssub * yv2/m/it}{}
+\DeclareFontShape{T1}{yv2}{bx}{n}{<->ssub * yv2/b/n}{}
+\DeclareFontShape{T1}{yv2}{b}{sc}{<->ssub * yv2/b/n}{}
+\DeclareFontShape{T1}{yv2}{bx}{sc}{<->ssub * yv2/b/sc}{}
+\DeclareFontShape{T1}{yv2}{b}{scit}{<->ssub * yv2/b/sc}{}
+\DeclareFontShape{T1}{yv2}{bx}{scit}{<->ssub * yv2/b/scit}{}
+\DeclareFontShape{T1}{yv2}{b}{scsl}{<->ssub * yv2/b/scit}{}
+\DeclareFontShape{T1}{yv2}{bx}{scsl}{<->ssub * yv2/b/scsl}{}
+\DeclareFontShape{T1}{yv2}{b}{si}{<->ssub * yv2/b/scsl}{}
+\DeclareFontShape{T1}{yv2}{bx}{si}{<->ssub * yv2/b/si}{}
+\DeclareFontShape{T1}{yv2}{bx}{it}{<->ssub * yv2/b/it}{}
+\DeclareFontShape{T1}{yv2}{b}{sl}{<->ssub * yv2/b/it}{}
+\DeclareFontShape{T1}{yv2}{bx}{sl}{<->ssub * yv2/b/sl}{}
+\DeclareFontShape{T1}{yv2}{c}{sc}{<->ssub * yv2/c/n}{}
+\DeclareFontShape{T1}{yv2}{c}{scit}{<->ssub * yv2/c/sc}{}
+\DeclareFontShape{T1}{yv2}{c}{scsl}{<->ssub * yv2/c/scit}{}
+\DeclareFontShape{T1}{yv2}{c}{si}{<->ssub * yv2/c/scsl}{}
+\DeclareFontShape{T1}{yv2}{c}{sl}{<->ssub * yv2/c/it}{}
+\DeclareFontShape{T1}{yv2}{bc}{sc}{<->ssub * yv2/bc/n}{}
+\DeclareFontShape{T1}{yv2}{bc}{scit}{<->ssub * yv2/bc/sc}{}
+\DeclareFontShape{T1}{yv2}{bc}{scsl}{<->ssub * yv2/bc/scit}{}
+\DeclareFontShape{T1}{yv2}{bc}{si}{<->ssub * yv2/bc/scsl}{}
+\DeclareFontShape{T1}{yv2}{bc}{sl}{<->ssub * yv2/bc/it}{}
+\DeclareFontShape{T1}{yv2}{sb}{sc}{<->ssub * yv2/sb/n}{}
+\DeclareFontShape{T1}{yv2}{sb}{scit}{<->ssub * yv2/sb/sc}{}
+\DeclareFontShape{T1}{yv2}{sb}{scsl}{<->ssub * yv2/sb/scit}{}
+\DeclareFontShape{T1}{yv2}{sb}{si}{<->ssub * yv2/sb/scsl}{}
+\DeclareFontShape{T1}{yv2}{sb}{sl}{<->ssub * yv2/sb/it}{}
+\DeclareFontShape{T1}{yv2}{eb}{sc}{<->ssub * yv2/eb/n}{}
+\DeclareFontShape{T1}{yv2}{eb}{scit}{<->ssub * yv2/eb/sc}{}
+\DeclareFontShape{T1}{yv2}{eb}{scsl}{<->ssub * yv2/eb/scit}{}
+\DeclareFontShape{T1}{yv2}{eb}{si}{<->ssub * yv2/eb/scsl}{}
+\DeclareFontShape{T1}{yv2}{eb}{sl}{<->ssub * yv2/eb/it}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/t1yv3.fd b/Master/texmf-dist/tex/latex/venturisadf/t1yv3.fd
new file mode 100644
index 00000000000..e438f9d4b11
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/t1yv3.fd
@@ -0,0 +1,98 @@
+%Filename: t1yv3.fd
+%Created by: tex yv3-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{t1yv3.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for T1/yv3.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yviii@scale\endcsname\relax
+ \let\yviii@@scale\@empty
+\else
+ \edef\yviii@@scale{s*[\csname yviii@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{yv3}{}
+
+\DeclareFontShape{T1}{yv3}{m}{n}{
+ <-> \yviii@@scale yv3r8t
+}{}
+
+\DeclareFontShape{T1}{yv3}{m}{it}{
+ <-> \yviii@@scale yv3ri8t
+}{}
+
+\DeclareFontShape{T1}{yv3}{b}{n}{
+ <-> \yviii@@scale yv3b8t
+}{}
+
+\DeclareFontShape{T1}{yv3}{b}{it}{
+ <-> \yviii@@scale yv3bi8t
+}{}
+
+\DeclareFontShape{T1}{yv3}{c}{n}{
+ <-> \yviii@@scale yv3r8tc
+}{}
+
+\DeclareFontShape{T1}{yv3}{c}{it}{
+ <-> \yviii@@scale yv3ri8tc
+}{}
+
+\DeclareFontShape{T1}{yv3}{x}{n}{
+ <-> \yviii@@scale yv3r8tx
+}{}
+
+\DeclareFontShape{T1}{yv3}{x}{it}{
+ <-> \yviii@@scale yv3ri8tx
+}{}
+
+\DeclareFontShape{T1}{yv3}{bc}{n}{
+ <-> \yviii@@scale yv3b8tc
+}{}
+
+\DeclareFontShape{T1}{yv3}{bc}{it}{
+ <-> \yviii@@scale yv3bi8tc
+}{}
+
+\DeclareFontShape{T1}{yv3}{bx}{n}{
+ <-> \yviii@@scale yv3b8tx
+}{}
+
+\DeclareFontShape{T1}{yv3}{bx}{it}{
+ <-> \yviii@@scale yv3bi8tx
+}{}
+
+\DeclareFontShape{T1}{yv3}{m}{sc}{<->ssub * yv3/m/n}{}
+\DeclareFontShape{T1}{yv3}{m}{scit}{<->ssub * yv3/m/sc}{}
+\DeclareFontShape{T1}{yv3}{m}{scsl}{<->ssub * yv3/m/scit}{}
+\DeclareFontShape{T1}{yv3}{m}{si}{<->ssub * yv3/m/scsl}{}
+\DeclareFontShape{T1}{yv3}{m}{sl}{<->ssub * yv3/m/it}{}
+\DeclareFontShape{T1}{yv3}{b}{sc}{<->ssub * yv3/b/n}{}
+\DeclareFontShape{T1}{yv3}{bx}{sc}{<->ssub * yv3/b/sc}{}
+\DeclareFontShape{T1}{yv3}{b}{scit}{<->ssub * yv3/b/sc}{}
+\DeclareFontShape{T1}{yv3}{bx}{scit}{<->ssub * yv3/b/scit}{}
+\DeclareFontShape{T1}{yv3}{b}{scsl}{<->ssub * yv3/b/scit}{}
+\DeclareFontShape{T1}{yv3}{bx}{scsl}{<->ssub * yv3/b/scsl}{}
+\DeclareFontShape{T1}{yv3}{b}{si}{<->ssub * yv3/b/scsl}{}
+\DeclareFontShape{T1}{yv3}{bx}{si}{<->ssub * yv3/b/si}{}
+\DeclareFontShape{T1}{yv3}{b}{sl}{<->ssub * yv3/b/it}{}
+\DeclareFontShape{T1}{yv3}{bx}{sl}{<->ssub * yv3/b/sl}{}
+\DeclareFontShape{T1}{yv3}{c}{sc}{<->ssub * yv3/c/n}{}
+\DeclareFontShape{T1}{yv3}{c}{scit}{<->ssub * yv3/c/sc}{}
+\DeclareFontShape{T1}{yv3}{c}{scsl}{<->ssub * yv3/c/scit}{}
+\DeclareFontShape{T1}{yv3}{c}{si}{<->ssub * yv3/c/scsl}{}
+\DeclareFontShape{T1}{yv3}{c}{sl}{<->ssub * yv3/c/it}{}
+\DeclareFontShape{T1}{yv3}{x}{sc}{<->ssub * yv3/x/n}{}
+\DeclareFontShape{T1}{yv3}{x}{scit}{<->ssub * yv3/x/sc}{}
+\DeclareFontShape{T1}{yv3}{x}{scsl}{<->ssub * yv3/x/scit}{}
+\DeclareFontShape{T1}{yv3}{x}{si}{<->ssub * yv3/x/scsl}{}
+\DeclareFontShape{T1}{yv3}{x}{sl}{<->ssub * yv3/x/it}{}
+\DeclareFontShape{T1}{yv3}{bc}{sc}{<->ssub * yv3/bc/n}{}
+\DeclareFontShape{T1}{yv3}{bc}{scit}{<->ssub * yv3/bc/sc}{}
+\DeclareFontShape{T1}{yv3}{bc}{scsl}{<->ssub * yv3/bc/scit}{}
+\DeclareFontShape{T1}{yv3}{bc}{si}{<->ssub * yv3/bc/scsl}{}
+\DeclareFontShape{T1}{yv3}{bc}{sl}{<->ssub * yv3/bc/it}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisold/t1yvo.fd b/Master/texmf-dist/tex/latex/venturisadf/t1yvo.fd
index e07ba8ce669..6d7509da27f 100644
--- a/Master/texmf-dist/tex/latex/venturisold/t1yvo.fd
+++ b/Master/texmf-dist/tex/latex/venturisadf/t1yvo.fd
@@ -5,33 +5,46 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1yvo.fd}
- [2010/07/03 Fontinst v1.933 font definitions for T1/yvo.]
+ [2024/08/17 Fontinst v1.933 font definitions for T1/yvo.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvo@scale\endcsname\relax
+ \let\yvo@@scale\@empty
+\else
+ \edef\yvo@@scale{s*[\csname yvo@scale\endcsname]}%
+\fi
\DeclareFontFamily{T1}{yvo}{}
\DeclareFontShape{T1}{yvo}{m}{n}{
- <-> yvor8t
+ <-> \yvo@@scale yvor8t
}{}
\DeclareFontShape{T1}{yvo}{m}{it}{
- <-> yvori8t
+ <-> \yvo@@scale yvori8t
}{}
\DeclareFontShape{T1}{yvo}{b}{n}{
- <-> yvob8t
+ <-> \yvo@@scale yvob8t
}{}
\DeclareFontShape{T1}{yvo}{b}{it}{
- <-> yvobi8t
+ <-> \yvo@@scale yvobi8t
}{}
\DeclareFontShape{T1}{yvo}{m}{sc}{<->sub * yvo/m/n}{}
-\DeclareFontShape{T1}{yvo}{m}{si}{<->ssub * yvo/m/sc}{}
+\DeclareFontShape{T1}{yvo}{m}{scit}{<->ssub * yvo/m/sc}{}
+\DeclareFontShape{T1}{yvo}{m}{scsl}{<->ssub * yvo/m/scit}{}
+\DeclareFontShape{T1}{yvo}{m}{si}{<->ssub * yvo/m/scsl}{}
\DeclareFontShape{T1}{yvo}{m}{sl}{<->ssub * yvo/m/it}{}
\DeclareFontShape{T1}{yvo}{bx}{n}{<->ssub * yvo/b/n}{}
\DeclareFontShape{T1}{yvo}{b}{sc}{<->sub * yvo/b/n}{}
\DeclareFontShape{T1}{yvo}{bx}{sc}{<->ssub * yvo/b/sc}{}
-\DeclareFontShape{T1}{yvo}{b}{si}{<->ssub * yvo/b/sc}{}
+\DeclareFontShape{T1}{yvo}{b}{scit}{<->ssub * yvo/b/sc}{}
+\DeclareFontShape{T1}{yvo}{bx}{scit}{<->ssub * yvo/b/scit}{}
+\DeclareFontShape{T1}{yvo}{b}{scsl}{<->ssub * yvo/b/scit}{}
+\DeclareFontShape{T1}{yvo}{bx}{scsl}{<->ssub * yvo/b/scsl}{}
+\DeclareFontShape{T1}{yvo}{b}{si}{<->ssub * yvo/b/scsl}{}
\DeclareFontShape{T1}{yvo}{bx}{si}{<->ssub * yvo/b/si}{}
\DeclareFontShape{T1}{yvo}{bx}{it}{<->ssub * yvo/b/it}{}
\DeclareFontShape{T1}{yvo}{b}{sl}{<->ssub * yvo/b/it}{}
diff --git a/Master/texmf-dist/tex/latex/venturisold/t1yvoa.fd b/Master/texmf-dist/tex/latex/venturisadf/t1yvoa.fd
index 2e6460e971c..8b91232829f 100644
--- a/Master/texmf-dist/tex/latex/venturisold/t1yvoa.fd
+++ b/Master/texmf-dist/tex/latex/venturisadf/t1yvoa.fd
@@ -5,33 +5,46 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{t1yvoa.fd}
- [2010/07/03 Fontinst v1.933 font definitions for T1/yvoa.]
+ [2024/08/17 Fontinst v1.933 font definitions for T1/yvoa.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvo@scale\endcsname\relax
+ \let\yvo@@scale\@empty
+\else
+ \edef\yvo@@scale{s*[\csname yvo@scale\endcsname]}%
+\fi
\DeclareFontFamily{T1}{yvoa}{}
\DeclareFontShape{T1}{yvoa}{m}{n}{
- <-> yvoar8t
+ <-> \yvo@@scale yvoar8t
}{}
\DeclareFontShape{T1}{yvoa}{m}{it}{
- <-> yvoari8t
+ <-> \yvo@@scale yvoari8t
}{}
\DeclareFontShape{T1}{yvoa}{b}{n}{
- <-> yvoab8t
+ <-> \yvo@@scale yvoab8t
}{}
\DeclareFontShape{T1}{yvoa}{b}{it}{
- <-> yvoabi8t
+ <-> \yvo@@scale yvoabi8t
}{}
\DeclareFontShape{T1}{yvoa}{m}{sc}{<->sub * yvoa/m/n}{}
-\DeclareFontShape{T1}{yvoa}{m}{si}{<->ssub * yvoa/m/sc}{}
+\DeclareFontShape{T1}{yvoa}{m}{scit}{<->ssub * yvoa/m/sc}{}
+\DeclareFontShape{T1}{yvoa}{m}{scsl}{<->ssub * yvoa/m/scit}{}
+\DeclareFontShape{T1}{yvoa}{m}{si}{<->ssub * yvoa/m/scsl}{}
\DeclareFontShape{T1}{yvoa}{m}{sl}{<->ssub * yvoa/m/it}{}
\DeclareFontShape{T1}{yvoa}{bx}{n}{<->ssub * yvoa/b/n}{}
\DeclareFontShape{T1}{yvoa}{b}{sc}{<->sub * yvoa/b/n}{}
\DeclareFontShape{T1}{yvoa}{bx}{sc}{<->ssub * yvoa/b/sc}{}
-\DeclareFontShape{T1}{yvoa}{b}{si}{<->ssub * yvoa/b/sc}{}
+\DeclareFontShape{T1}{yvoa}{b}{scit}{<->ssub * yvoa/b/sc}{}
+\DeclareFontShape{T1}{yvoa}{bx}{scit}{<->ssub * yvoa/b/scit}{}
+\DeclareFontShape{T1}{yvoa}{b}{scsl}{<->ssub * yvoa/b/scit}{}
+\DeclareFontShape{T1}{yvoa}{bx}{scsl}{<->ssub * yvoa/b/scsl}{}
+\DeclareFontShape{T1}{yvoa}{b}{si}{<->ssub * yvoa/b/scsl}{}
\DeclareFontShape{T1}{yvoa}{bx}{si}{<->ssub * yvoa/b/si}{}
\DeclareFontShape{T1}{yvoa}{bx}{it}{<->ssub * yvoa/b/it}{}
\DeclareFontShape{T1}{yvoa}{b}{sl}{<->ssub * yvoa/b/it}{}
diff --git a/Master/texmf-dist/tex/latex/venturisadf/t1yvoad.fd b/Master/texmf-dist/tex/latex/venturisadf/t1yvoad.fd
new file mode 100644
index 00000000000..0c6dc273c37
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/t1yvoad.fd
@@ -0,0 +1,46 @@
+%Filename: t1yvoad.fd
+%Created by: tex yvo-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{t1yvoad.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for T1/yvoad.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvo@scale\endcsname\relax
+ \let\yvo@@scale\@empty
+\else
+ \edef\yvo@@scale{s*[\csname yvo@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{yvoad}{}
+
+\DeclareFontShape{T1}{yvoad}{db}{sc}{
+ <-> \yvo@@scale yvodd8t
+}{}
+
+\DeclareFontShape{T1}{yvoad}{db}{n}{
+ <-> \yvo@@scale yvodd8t
+}{}
+
+\DeclareFontShape{T1}{yvoad}{b}{sc}{<->ssub * yvoad/db/sc}{}
+\DeclareFontShape{T1}{yvoad}{bx}{sc}{<->ssub * yvoad/b/sc}{}
+\DeclareFontShape{T1}{yvoad}{m}{sc}{<->ssub * yvoad/bx/sc}{}
+\DeclareFontShape{T1}{yvoad}{db}{scit}{<->ssub * yvoad/db/sc}{}
+\DeclareFontShape{T1}{yvoad}{b}{scit}{<->ssub * yvoad/db/scit}{}
+\DeclareFontShape{T1}{yvoad}{bx}{scit}{<->ssub * yvoad/b/scit}{}
+\DeclareFontShape{T1}{yvoad}{m}{scit}{<->ssub * yvoad/bx/scit}{}
+\DeclareFontShape{T1}{yvoad}{db}{scsl}{<->ssub * yvoad/db/scit}{}
+\DeclareFontShape{T1}{yvoad}{b}{scsl}{<->ssub * yvoad/db/scsl}{}
+\DeclareFontShape{T1}{yvoad}{bx}{scsl}{<->ssub * yvoad/b/scsl}{}
+\DeclareFontShape{T1}{yvoad}{m}{scsl}{<->ssub * yvoad/bx/scsl}{}
+\DeclareFontShape{T1}{yvoad}{db}{si}{<->ssub * yvoad/db/scsl}{}
+\DeclareFontShape{T1}{yvoad}{b}{si}{<->ssub * yvoad/db/si}{}
+\DeclareFontShape{T1}{yvoad}{bx}{si}{<->ssub * yvoad/b/si}{}
+\DeclareFontShape{T1}{yvoad}{m}{si}{<->ssub * yvoad/bx/si}{}
+\DeclareFontShape{T1}{yvoad}{b}{n}{<->ssub * yvoad/db/n}{}
+\DeclareFontShape{T1}{yvoad}{bx}{n}{<->ssub * yvoad/b/n}{}
+\DeclareFontShape{T1}{yvoad}{m}{n}{<->ssub * yvoad/bx/n}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/t1yvod.fd b/Master/texmf-dist/tex/latex/venturisadf/t1yvod.fd
new file mode 100644
index 00000000000..3f472f51176
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/t1yvod.fd
@@ -0,0 +1,46 @@
+%Filename: t1yvod.fd
+%Created by: tex yvo-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{t1yvod.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for T1/yvod.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvo@scale\endcsname\relax
+ \let\yvo@@scale\@empty
+\else
+ \edef\yvo@@scale{s*[\csname yvo@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{yvod}{}
+
+\DeclareFontShape{T1}{yvod}{db}{sc}{
+ <-> \yvo@@scale yvodd8t
+}{}
+
+\DeclareFontShape{T1}{yvod}{db}{n}{
+ <-> \yvo@@scale yvodd8t
+}{}
+
+\DeclareFontShape{T1}{yvod}{b}{sc}{<->ssub * yvod/db/sc}{}
+\DeclareFontShape{T1}{yvod}{bx}{sc}{<->ssub * yvod/b/sc}{}
+\DeclareFontShape{T1}{yvod}{m}{sc}{<->ssub * yvod/bx/sc}{}
+\DeclareFontShape{T1}{yvod}{db}{scit}{<->ssub * yvod/db/sc}{}
+\DeclareFontShape{T1}{yvod}{b}{scit}{<->ssub * yvod/db/scit}{}
+\DeclareFontShape{T1}{yvod}{bx}{scit}{<->ssub * yvod/b/scit}{}
+\DeclareFontShape{T1}{yvod}{m}{scit}{<->ssub * yvod/bx/scit}{}
+\DeclareFontShape{T1}{yvod}{db}{scsl}{<->ssub * yvod/db/scit}{}
+\DeclareFontShape{T1}{yvod}{b}{scsl}{<->ssub * yvod/db/scsl}{}
+\DeclareFontShape{T1}{yvod}{bx}{scsl}{<->ssub * yvod/b/scsl}{}
+\DeclareFontShape{T1}{yvod}{m}{scsl}{<->ssub * yvod/bx/scsl}{}
+\DeclareFontShape{T1}{yvod}{db}{si}{<->ssub * yvod/db/scsl}{}
+\DeclareFontShape{T1}{yvod}{b}{si}{<->ssub * yvod/db/si}{}
+\DeclareFontShape{T1}{yvod}{bx}{si}{<->ssub * yvod/b/si}{}
+\DeclareFontShape{T1}{yvod}{m}{si}{<->ssub * yvod/bx/si}{}
+\DeclareFontShape{T1}{yvod}{b}{n}{<->ssub * yvod/db/n}{}
+\DeclareFontShape{T1}{yvod}{bx}{n}{<->ssub * yvod/b/n}{}
+\DeclareFontShape{T1}{yvod}{m}{n}{<->ssub * yvod/bx/n}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/t1yvt.fd b/Master/texmf-dist/tex/latex/venturisadf/t1yvt.fd
new file mode 100644
index 00000000000..038a54dbcf2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/t1yvt.fd
@@ -0,0 +1,116 @@
+%Filename: t1yvt.fd
+%Created by: tex yvt-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{t1yvt.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for T1/yvt.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvt@scale\endcsname\relax
+ \let\yvt@@scale\@empty
+\else
+ \edef\yvt@@scale{s*[\csname yvt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{yvt}{}
+
+\DeclareFontShape{T1}{yvt}{m}{n}{
+ <-> \yvt@@scale yvtr8t
+}{}
+
+\DeclareFontShape{T1}{yvt}{m}{sc}{
+ <-> \yvt@@scale yvtrc8t
+}{}
+
+\DeclareFontShape{T1}{yvt}{m}{scit}{
+ <-> \yvt@@scale yvtrci8t
+}{}
+
+\DeclareFontShape{T1}{yvt}{m}{it}{
+ <-> \yvt@@scale yvtri8t
+}{}
+
+\DeclareFontShape{T1}{yvt}{b}{n}{
+ <-> \yvt@@scale yvtb8t
+}{}
+
+\DeclareFontShape{T1}{yvt}{b}{sc}{
+ <-> \yvt@@scale yvtbc8t
+}{}
+
+\DeclareFontShape{T1}{yvt}{b}{scit}{
+ <-> \yvt@@scale yvtbci8t
+}{}
+
+\DeclareFontShape{T1}{yvt}{b}{it}{
+ <-> \yvt@@scale yvtbi8t
+}{}
+
+\DeclareFontShape{T1}{yvt}{eb}{n}{
+ <-> \yvt@@scale yvth8t
+}{}
+
+\DeclareFontShape{T1}{yvt}{eb}{it}{
+ <-> \yvt@@scale yvthi8t
+}{}
+
+\DeclareFontShape{T1}{yvt}{c}{n}{
+ <-> \yvt@@scale yvtr8tc
+}{}
+
+\DeclareFontShape{T1}{yvt}{c}{sc}{
+ <-> \yvt@@scale yvtrc8tc
+}{}
+
+\DeclareFontShape{T1}{yvt}{c}{scit}{
+ <-> \yvt@@scale yvtrci8tc
+}{}
+
+\DeclareFontShape{T1}{yvt}{c}{it}{
+ <-> \yvt@@scale yvtri8tc
+}{}
+
+\DeclareFontShape{T1}{yvt}{bc}{n}{
+ <-> \yvt@@scale yvtb8tc
+}{}
+
+\DeclareFontShape{T1}{yvt}{bc}{sc}{
+ <-> \yvt@@scale yvtbc8tc
+}{}
+
+\DeclareFontShape{T1}{yvt}{bc}{scit}{
+ <-> \yvt@@scale yvtbci8tc
+}{}
+
+\DeclareFontShape{T1}{yvt}{bc}{it}{
+ <-> \yvt@@scale yvtbi8tc
+}{}
+
+\DeclareFontShape{T1}{yvt}{m}{scsl}{<->ssub * yvt/m/scit}{}
+\DeclareFontShape{T1}{yvt}{m}{si}{<->ssub * yvt/m/scsl}{}
+\DeclareFontShape{T1}{yvt}{m}{sl}{<->ssub * yvt/m/it}{}
+\DeclareFontShape{T1}{yvt}{bx}{n}{<->ssub * yvt/b/n}{}
+\DeclareFontShape{T1}{yvt}{bx}{sc}{<->ssub * yvt/b/sc}{}
+\DeclareFontShape{T1}{yvt}{bx}{scit}{<->ssub * yvt/b/scit}{}
+\DeclareFontShape{T1}{yvt}{b}{scsl}{<->ssub * yvt/b/scit}{}
+\DeclareFontShape{T1}{yvt}{bx}{scsl}{<->ssub * yvt/b/scsl}{}
+\DeclareFontShape{T1}{yvt}{b}{si}{<->ssub * yvt/b/scsl}{}
+\DeclareFontShape{T1}{yvt}{bx}{si}{<->ssub * yvt/b/si}{}
+\DeclareFontShape{T1}{yvt}{bx}{it}{<->ssub * yvt/b/it}{}
+\DeclareFontShape{T1}{yvt}{b}{sl}{<->ssub * yvt/b/it}{}
+\DeclareFontShape{T1}{yvt}{bx}{sl}{<->ssub * yvt/b/sl}{}
+\DeclareFontShape{T1}{yvt}{eb}{sc}{<->ssub * yvt/eb/n}{}
+\DeclareFontShape{T1}{yvt}{eb}{scit}{<->ssub * yvt/eb/sc}{}
+\DeclareFontShape{T1}{yvt}{eb}{scsl}{<->ssub * yvt/eb/scit}{}
+\DeclareFontShape{T1}{yvt}{eb}{si}{<->ssub * yvt/eb/scsl}{}
+\DeclareFontShape{T1}{yvt}{eb}{sl}{<->ssub * yvt/eb/it}{}
+\DeclareFontShape{T1}{yvt}{c}{scsl}{<->ssub * yvt/c/scit}{}
+\DeclareFontShape{T1}{yvt}{c}{si}{<->ssub * yvt/c/scsl}{}
+\DeclareFontShape{T1}{yvt}{c}{sl}{<->ssub * yvt/c/it}{}
+\DeclareFontShape{T1}{yvt}{bc}{scsl}{<->ssub * yvt/bc/scit}{}
+\DeclareFontShape{T1}{yvt}{bc}{si}{<->ssub * yvt/bc/scsl}{}
+\DeclareFontShape{T1}{yvt}{bc}{sl}{<->ssub * yvt/bc/it}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/t1yvtajw.fd b/Master/texmf-dist/tex/latex/venturisadf/t1yvtajw.fd
new file mode 100644
index 00000000000..eb45bd4359a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/t1yvtajw.fd
@@ -0,0 +1,103 @@
+%Filename: t1yvtajw.fd
+%Created by: tex yvt-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{t1yvtajw.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for T1/yvtajw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvt@scale\endcsname\relax
+ \let\yvt@@scale\@empty
+\else
+ \edef\yvt@@scale{s*[\csname yvt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{yvtajw}{}
+
+\DeclareFontShape{T1}{yvtajw}{m}{n}{
+ <-> \yvt@@scale yvtrajw8t
+}{}
+
+\DeclareFontShape{T1}{yvtajw}{m}{it}{
+ <-> \yvt@@scale yvtrijw8t
+}{}
+
+\DeclareFontShape{T1}{yvtajw}{m}{sc}{
+ <-> \yvt@@scale yvtrcjw8t
+}{}
+
+\DeclareFontShape{T1}{yvtajw}{m}{scit}{
+ <-> \yvt@@scale yvtrcijw8t
+}{}
+
+\DeclareFontShape{T1}{yvtajw}{b}{n}{
+ <-> \yvt@@scale yvtbjw8t
+}{}
+
+\DeclareFontShape{T1}{yvtajw}{b}{it}{
+ <-> \yvt@@scale yvtbijw8t
+}{}
+
+\DeclareFontShape{T1}{yvtajw}{b}{sc}{
+ <-> \yvt@@scale yvtbcjw8t
+}{}
+
+\DeclareFontShape{T1}{yvtajw}{b}{scit}{
+ <-> \yvt@@scale yvtbcijw8t
+}{}
+
+\DeclareFontShape{T1}{yvtajw}{c}{n}{
+ <-> \yvt@@scale yvtrjw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtajw}{c}{it}{
+ <-> \yvt@@scale yvtrijw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtajw}{c}{sc}{
+ <-> \yvt@@scale yvtrcjw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtajw}{c}{scit}{
+ <-> \yvt@@scale yvtrcijw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtajw}{bc}{n}{
+ <-> \yvt@@scale yvtbjw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtajw}{bc}{it}{
+ <-> \yvt@@scale yvtbijw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtajw}{bc}{sc}{
+ <-> \yvt@@scale yvtbcjw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtajw}{bc}{scit}{
+ <-> \yvt@@scale yvtbcijw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtajw}{m}{sl}{<->ssub * yvtajw/m/it}{}
+\DeclareFontShape{T1}{yvtajw}{m}{scsl}{<->ssub * yvtajw/m/scit}{}
+\DeclareFontShape{T1}{yvtajw}{m}{si}{<->ssub * yvtajw/m/scsl}{}
+\DeclareFontShape{T1}{yvtajw}{bx}{n}{<->ssub * yvtajw/b/n}{}
+\DeclareFontShape{T1}{yvtajw}{bx}{it}{<->ssub * yvtajw/b/it}{}
+\DeclareFontShape{T1}{yvtajw}{b}{sl}{<->ssub * yvtajw/b/it}{}
+\DeclareFontShape{T1}{yvtajw}{bx}{sl}{<->ssub * yvtajw/b/sl}{}
+\DeclareFontShape{T1}{yvtajw}{bx}{sc}{<->ssub * yvtajw/b/sc}{}
+\DeclareFontShape{T1}{yvtajw}{bx}{scit}{<->ssub * yvtajw/b/scit}{}
+\DeclareFontShape{T1}{yvtajw}{b}{scsl}{<->ssub * yvtajw/b/scit}{}
+\DeclareFontShape{T1}{yvtajw}{bx}{scsl}{<->ssub * yvtajw/b/scsl}{}
+\DeclareFontShape{T1}{yvtajw}{b}{si}{<->ssub * yvtajw/b/scsl}{}
+\DeclareFontShape{T1}{yvtajw}{bx}{si}{<->ssub * yvtajw/b/si}{}
+\DeclareFontShape{T1}{yvtajw}{c}{sl}{<->ssub * yvtajw/c/it}{}
+\DeclareFontShape{T1}{yvtajw}{c}{scsl}{<->ssub * yvtajw/c/scit}{}
+\DeclareFontShape{T1}{yvtajw}{c}{si}{<->ssub * yvtajw/c/scsl}{}
+\DeclareFontShape{T1}{yvtajw}{bc}{sl}{<->ssub * yvtajw/bc/it}{}
+\DeclareFontShape{T1}{yvtajw}{bc}{scsl}{<->ssub * yvtajw/bc/scit}{}
+\DeclareFontShape{T1}{yvtajw}{bc}{si}{<->ssub * yvtajw/bc/scsl}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/t1yvtaw.fd b/Master/texmf-dist/tex/latex/venturisadf/t1yvtaw.fd
new file mode 100644
index 00000000000..f3094f3a442
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/t1yvtaw.fd
@@ -0,0 +1,103 @@
+%Filename: t1yvtaw.fd
+%Created by: tex yvt-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{t1yvtaw.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for T1/yvtaw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvt@scale\endcsname\relax
+ \let\yvt@@scale\@empty
+\else
+ \edef\yvt@@scale{s*[\csname yvt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{yvtaw}{}
+
+\DeclareFontShape{T1}{yvtaw}{m}{n}{
+ <-> \yvt@@scale yvtraw8t
+}{}
+
+\DeclareFontShape{T1}{yvtaw}{m}{sc}{
+ <-> \yvt@@scale yvtrcw8t
+}{}
+
+\DeclareFontShape{T1}{yvtaw}{m}{scit}{
+ <-> \yvt@@scale yvtrciw8t
+}{}
+
+\DeclareFontShape{T1}{yvtaw}{m}{it}{
+ <-> \yvt@@scale yvtriw8t
+}{}
+
+\DeclareFontShape{T1}{yvtaw}{b}{n}{
+ <-> \yvt@@scale yvtbw8t
+}{}
+
+\DeclareFontShape{T1}{yvtaw}{b}{sc}{
+ <-> \yvt@@scale yvtbcw8t
+}{}
+
+\DeclareFontShape{T1}{yvtaw}{b}{scit}{
+ <-> \yvt@@scale yvtbciw8t
+}{}
+
+\DeclareFontShape{T1}{yvtaw}{b}{it}{
+ <-> \yvt@@scale yvtbiw8t
+}{}
+
+\DeclareFontShape{T1}{yvtaw}{c}{n}{
+ <-> \yvt@@scale yvtrw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtaw}{c}{sc}{
+ <-> \yvt@@scale yvtrcw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtaw}{c}{scit}{
+ <-> \yvt@@scale yvtrciw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtaw}{c}{it}{
+ <-> \yvt@@scale yvtriw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtaw}{bc}{n}{
+ <-> \yvt@@scale yvtbw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtaw}{bc}{sc}{
+ <-> \yvt@@scale yvtbcw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtaw}{bc}{scit}{
+ <-> \yvt@@scale yvtbciw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtaw}{bc}{it}{
+ <-> \yvt@@scale yvtbiw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtaw}{m}{scsl}{<->ssub * yvtaw/m/scit}{}
+\DeclareFontShape{T1}{yvtaw}{m}{si}{<->ssub * yvtaw/m/scsl}{}
+\DeclareFontShape{T1}{yvtaw}{m}{sl}{<->ssub * yvtaw/m/it}{}
+\DeclareFontShape{T1}{yvtaw}{bx}{n}{<->ssub * yvtaw/b/n}{}
+\DeclareFontShape{T1}{yvtaw}{bx}{sc}{<->ssub * yvtaw/b/sc}{}
+\DeclareFontShape{T1}{yvtaw}{bx}{scit}{<->ssub * yvtaw/b/scit}{}
+\DeclareFontShape{T1}{yvtaw}{b}{scsl}{<->ssub * yvtaw/b/scit}{}
+\DeclareFontShape{T1}{yvtaw}{bx}{scsl}{<->ssub * yvtaw/b/scsl}{}
+\DeclareFontShape{T1}{yvtaw}{b}{si}{<->ssub * yvtaw/b/scsl}{}
+\DeclareFontShape{T1}{yvtaw}{bx}{si}{<->ssub * yvtaw/b/si}{}
+\DeclareFontShape{T1}{yvtaw}{bx}{it}{<->ssub * yvtaw/b/it}{}
+\DeclareFontShape{T1}{yvtaw}{b}{sl}{<->ssub * yvtaw/b/it}{}
+\DeclareFontShape{T1}{yvtaw}{bx}{sl}{<->ssub * yvtaw/b/sl}{}
+\DeclareFontShape{T1}{yvtaw}{c}{scsl}{<->ssub * yvtaw/c/scit}{}
+\DeclareFontShape{T1}{yvtaw}{c}{si}{<->ssub * yvtaw/c/scsl}{}
+\DeclareFontShape{T1}{yvtaw}{c}{sl}{<->ssub * yvtaw/c/it}{}
+\DeclareFontShape{T1}{yvtaw}{bc}{scsl}{<->ssub * yvtaw/bc/scit}{}
+\DeclareFontShape{T1}{yvtaw}{bc}{si}{<->ssub * yvtaw/bc/scsl}{}
+\DeclareFontShape{T1}{yvtaw}{bc}{sl}{<->ssub * yvtaw/bc/it}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/t1yvtd.fd b/Master/texmf-dist/tex/latex/venturisadf/t1yvtd.fd
new file mode 100644
index 00000000000..6700063f3f0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/t1yvtd.fd
@@ -0,0 +1,101 @@
+%Filename: t1yvtd.fd
+%Created by: tex yvt-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{t1yvtd.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for T1/yvtd.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvt@scale\endcsname\relax
+ \let\yvt@@scale\@empty
+\else
+ \edef\yvt@@scale{s*[\csname yvt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{yvtd}{}
+
+\DeclareFontShape{T1}{yvtd}{bc}{sc}{
+ <-> \yvt@@scale yvtbd8tc
+}{}
+
+\DeclareFontShape{T1}{yvtd}{c}{sc}{
+ <-> \yvt@@scale yvtbd8tc
+}{}
+
+\DeclareFontShape{T1}{yvtd}{m}{sc}{
+ <-> \yvt@@scale yvtbd8tc
+}{}
+
+\DeclareFontShape{T1}{yvtd}{b}{sc}{
+ <-> \yvt@@scale yvtbd8tc
+}{}
+
+\DeclareFontShape{T1}{yvtd}{eb}{sc}{
+ <-> \yvt@@scale yvtbd8tc
+}{}
+
+\DeclareFontShape{T1}{yvtd}{m}{ol}{
+ <-> \yvt@@scale yvtrdl8t
+}{}
+
+\DeclareFontShape{T1}{yvtd}{c}{ol}{
+ <-> \yvt@@scale yvtrdl8t
+}{}
+
+\DeclareFontShape{T1}{yvtd}{bc}{ol}{
+ <-> \yvt@@scale yvtrdl8t
+}{}
+
+\DeclareFontShape{T1}{yvtd}{b}{ol}{
+ <-> \yvt@@scale yvtrdl8t
+}{}
+
+\DeclareFontShape{T1}{yvtd}{eb}{ol}{
+ <-> \yvt@@scale yvtrdl8t
+}{}
+
+\DeclareFontShape{T1}{yvtd}{c}{n}{
+ <-> \yvt@@scale yvtbd8tc
+}{}
+
+\DeclareFontShape{T1}{yvtd}{m}{n}{
+ <-> \yvt@@scale yvtbd8tc
+}{}
+
+\DeclareFontShape{T1}{yvtd}{bc}{n}{
+ <-> \yvt@@scale yvtbd8tc
+}{}
+
+\DeclareFontShape{T1}{yvtd}{b}{n}{
+ <-> \yvt@@scale yvtbd8tc
+}{}
+
+\DeclareFontShape{T1}{yvtd}{eb}{n}{
+ <-> \yvt@@scale yvtbd8tc
+}{}
+
+\DeclareFontShape{T1}{yvtd}{bc}{scit}{<->ssub * yvtd/bc/sc}{}
+\DeclareFontShape{T1}{yvtd}{bc}{scsl}{<->ssub * yvtd/bc/scit}{}
+\DeclareFontShape{T1}{yvtd}{bc}{si}{<->ssub * yvtd/bc/scsl}{}
+\DeclareFontShape{T1}{yvtd}{c}{scit}{<->ssub * yvtd/c/sc}{}
+\DeclareFontShape{T1}{yvtd}{c}{scsl}{<->ssub * yvtd/c/scit}{}
+\DeclareFontShape{T1}{yvtd}{c}{si}{<->ssub * yvtd/c/scsl}{}
+\DeclareFontShape{T1}{yvtd}{m}{scit}{<->ssub * yvtd/m/sc}{}
+\DeclareFontShape{T1}{yvtd}{m}{scsl}{<->ssub * yvtd/m/scit}{}
+\DeclareFontShape{T1}{yvtd}{m}{si}{<->ssub * yvtd/m/scsl}{}
+\DeclareFontShape{T1}{yvtd}{bx}{sc}{<->ssub * yvtd/b/sc}{}
+\DeclareFontShape{T1}{yvtd}{b}{scit}{<->ssub * yvtd/b/sc}{}
+\DeclareFontShape{T1}{yvtd}{bx}{scit}{<->ssub * yvtd/b/scit}{}
+\DeclareFontShape{T1}{yvtd}{b}{scsl}{<->ssub * yvtd/b/scit}{}
+\DeclareFontShape{T1}{yvtd}{bx}{scsl}{<->ssub * yvtd/b/scsl}{}
+\DeclareFontShape{T1}{yvtd}{b}{si}{<->ssub * yvtd/b/scsl}{}
+\DeclareFontShape{T1}{yvtd}{bx}{si}{<->ssub * yvtd/b/si}{}
+\DeclareFontShape{T1}{yvtd}{eb}{scit}{<->ssub * yvtd/eb/sc}{}
+\DeclareFontShape{T1}{yvtd}{eb}{scsl}{<->ssub * yvtd/eb/scit}{}
+\DeclareFontShape{T1}{yvtd}{eb}{si}{<->ssub * yvtd/eb/scsl}{}
+\DeclareFontShape{T1}{yvtd}{bx}{ol}{<->ssub * yvtd/b/ol}{}
+\DeclareFontShape{T1}{yvtd}{bx}{n}{<->ssub * yvtd/b/n}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/t1yvtj.fd b/Master/texmf-dist/tex/latex/venturisadf/t1yvtj.fd
new file mode 100644
index 00000000000..03521590fbb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/t1yvtj.fd
@@ -0,0 +1,103 @@
+%Filename: t1yvtj.fd
+%Created by: tex yvt-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{t1yvtj.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for T1/yvtj.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvt@scale\endcsname\relax
+ \let\yvt@@scale\@empty
+\else
+ \edef\yvt@@scale{s*[\csname yvt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{yvtj}{}
+
+\DeclareFontShape{T1}{yvtj}{m}{n}{
+ <-> \yvt@@scale yvtrj8t
+}{}
+
+\DeclareFontShape{T1}{yvtj}{m}{sc}{
+ <-> \yvt@@scale yvtrcj8t
+}{}
+
+\DeclareFontShape{T1}{yvtj}{m}{scit}{
+ <-> \yvt@@scale yvtrcij8t
+}{}
+
+\DeclareFontShape{T1}{yvtj}{m}{it}{
+ <-> \yvt@@scale yvtrij8t
+}{}
+
+\DeclareFontShape{T1}{yvtj}{b}{n}{
+ <-> \yvt@@scale yvtbj8t
+}{}
+
+\DeclareFontShape{T1}{yvtj}{b}{sc}{
+ <-> \yvt@@scale yvtbcj8t
+}{}
+
+\DeclareFontShape{T1}{yvtj}{b}{scit}{
+ <-> \yvt@@scale yvtbcij8t
+}{}
+
+\DeclareFontShape{T1}{yvtj}{b}{it}{
+ <-> \yvt@@scale yvtbij8t
+}{}
+
+\DeclareFontShape{T1}{yvtj}{c}{n}{
+ <-> \yvt@@scale yvtrj8tc
+}{}
+
+\DeclareFontShape{T1}{yvtj}{c}{sc}{
+ <-> \yvt@@scale yvtrcj8tc
+}{}
+
+\DeclareFontShape{T1}{yvtj}{c}{scit}{
+ <-> \yvt@@scale yvtrcij8tc
+}{}
+
+\DeclareFontShape{T1}{yvtj}{c}{it}{
+ <-> \yvt@@scale yvtrij8tc
+}{}
+
+\DeclareFontShape{T1}{yvtj}{bc}{n}{
+ <-> \yvt@@scale yvtbj8tc
+}{}
+
+\DeclareFontShape{T1}{yvtj}{bc}{sc}{
+ <-> \yvt@@scale yvtbcj8tc
+}{}
+
+\DeclareFontShape{T1}{yvtj}{bc}{scit}{
+ <-> \yvt@@scale yvtbcij8tc
+}{}
+
+\DeclareFontShape{T1}{yvtj}{bc}{it}{
+ <-> \yvt@@scale yvtbij8tc
+}{}
+
+\DeclareFontShape{T1}{yvtj}{m}{scsl}{<->ssub * yvtj/m/scit}{}
+\DeclareFontShape{T1}{yvtj}{m}{si}{<->ssub * yvtj/m/scsl}{}
+\DeclareFontShape{T1}{yvtj}{m}{sl}{<->ssub * yvtj/m/it}{}
+\DeclareFontShape{T1}{yvtj}{bx}{n}{<->ssub * yvtj/b/n}{}
+\DeclareFontShape{T1}{yvtj}{bx}{sc}{<->ssub * yvtj/b/sc}{}
+\DeclareFontShape{T1}{yvtj}{bx}{scit}{<->ssub * yvtj/b/scit}{}
+\DeclareFontShape{T1}{yvtj}{b}{scsl}{<->ssub * yvtj/b/scit}{}
+\DeclareFontShape{T1}{yvtj}{bx}{scsl}{<->ssub * yvtj/b/scsl}{}
+\DeclareFontShape{T1}{yvtj}{b}{si}{<->ssub * yvtj/b/scsl}{}
+\DeclareFontShape{T1}{yvtj}{bx}{si}{<->ssub * yvtj/b/si}{}
+\DeclareFontShape{T1}{yvtj}{bx}{it}{<->ssub * yvtj/b/it}{}
+\DeclareFontShape{T1}{yvtj}{b}{sl}{<->ssub * yvtj/b/it}{}
+\DeclareFontShape{T1}{yvtj}{bx}{sl}{<->ssub * yvtj/b/sl}{}
+\DeclareFontShape{T1}{yvtj}{c}{scsl}{<->ssub * yvtj/c/scit}{}
+\DeclareFontShape{T1}{yvtj}{c}{si}{<->ssub * yvtj/c/scsl}{}
+\DeclareFontShape{T1}{yvtj}{c}{sl}{<->ssub * yvtj/c/it}{}
+\DeclareFontShape{T1}{yvtj}{bc}{scsl}{<->ssub * yvtj/bc/scit}{}
+\DeclareFontShape{T1}{yvtj}{bc}{si}{<->ssub * yvtj/bc/scsl}{}
+\DeclareFontShape{T1}{yvtj}{bc}{sl}{<->ssub * yvtj/bc/it}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/t1yvtjw.fd b/Master/texmf-dist/tex/latex/venturisadf/t1yvtjw.fd
new file mode 100644
index 00000000000..7f953d25dc3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/t1yvtjw.fd
@@ -0,0 +1,103 @@
+%Filename: t1yvtjw.fd
+%Created by: tex yvt-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{t1yvtjw.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for T1/yvtjw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvt@scale\endcsname\relax
+ \let\yvt@@scale\@empty
+\else
+ \edef\yvt@@scale{s*[\csname yvt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{yvtjw}{}
+
+\DeclareFontShape{T1}{yvtjw}{m}{n}{
+ <-> \yvt@@scale yvtrjw8t
+}{}
+
+\DeclareFontShape{T1}{yvtjw}{m}{sc}{
+ <-> \yvt@@scale yvtrcjw8t
+}{}
+
+\DeclareFontShape{T1}{yvtjw}{m}{scit}{
+ <-> \yvt@@scale yvtrcijw8t
+}{}
+
+\DeclareFontShape{T1}{yvtjw}{m}{it}{
+ <-> \yvt@@scale yvtrijw8t
+}{}
+
+\DeclareFontShape{T1}{yvtjw}{b}{n}{
+ <-> \yvt@@scale yvtbjw8t
+}{}
+
+\DeclareFontShape{T1}{yvtjw}{b}{it}{
+ <-> \yvt@@scale yvtbijw8t
+}{}
+
+\DeclareFontShape{T1}{yvtjw}{b}{sc}{
+ <-> \yvt@@scale yvtbcjw8t
+}{}
+
+\DeclareFontShape{T1}{yvtjw}{b}{scit}{
+ <-> \yvt@@scale yvtbcijw8t
+}{}
+
+\DeclareFontShape{T1}{yvtjw}{c}{n}{
+ <-> \yvt@@scale yvtrjw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtjw}{c}{sc}{
+ <-> \yvt@@scale yvtrcjw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtjw}{c}{scit}{
+ <-> \yvt@@scale yvtrcijw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtjw}{c}{it}{
+ <-> \yvt@@scale yvtrijw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtjw}{bc}{n}{
+ <-> \yvt@@scale yvtbjw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtjw}{bc}{it}{
+ <-> \yvt@@scale yvtbijw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtjw}{bc}{sc}{
+ <-> \yvt@@scale yvtbcjw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtjw}{bc}{scit}{
+ <-> \yvt@@scale yvtbcijw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtjw}{m}{scsl}{<->ssub * yvtjw/m/scit}{}
+\DeclareFontShape{T1}{yvtjw}{m}{si}{<->ssub * yvtjw/m/scsl}{}
+\DeclareFontShape{T1}{yvtjw}{m}{sl}{<->ssub * yvtjw/m/it}{}
+\DeclareFontShape{T1}{yvtjw}{bx}{n}{<->ssub * yvtjw/b/n}{}
+\DeclareFontShape{T1}{yvtjw}{bx}{it}{<->ssub * yvtjw/b/it}{}
+\DeclareFontShape{T1}{yvtjw}{b}{sl}{<->ssub * yvtjw/b/it}{}
+\DeclareFontShape{T1}{yvtjw}{bx}{sl}{<->ssub * yvtjw/b/sl}{}
+\DeclareFontShape{T1}{yvtjw}{bx}{sc}{<->ssub * yvtjw/b/sc}{}
+\DeclareFontShape{T1}{yvtjw}{bx}{scit}{<->ssub * yvtjw/b/scit}{}
+\DeclareFontShape{T1}{yvtjw}{b}{scsl}{<->ssub * yvtjw/b/scit}{}
+\DeclareFontShape{T1}{yvtjw}{bx}{scsl}{<->ssub * yvtjw/b/scsl}{}
+\DeclareFontShape{T1}{yvtjw}{b}{si}{<->ssub * yvtjw/b/scsl}{}
+\DeclareFontShape{T1}{yvtjw}{bx}{si}{<->ssub * yvtjw/b/si}{}
+\DeclareFontShape{T1}{yvtjw}{c}{scsl}{<->ssub * yvtjw/c/scit}{}
+\DeclareFontShape{T1}{yvtjw}{c}{si}{<->ssub * yvtjw/c/scsl}{}
+\DeclareFontShape{T1}{yvtjw}{c}{sl}{<->ssub * yvtjw/c/it}{}
+\DeclareFontShape{T1}{yvtjw}{bc}{sl}{<->ssub * yvtjw/bc/it}{}
+\DeclareFontShape{T1}{yvtjw}{bc}{scsl}{<->ssub * yvtjw/bc/scit}{}
+\DeclareFontShape{T1}{yvtjw}{bc}{si}{<->ssub * yvtjw/bc/scsl}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/t1yvtw.fd b/Master/texmf-dist/tex/latex/venturisadf/t1yvtw.fd
new file mode 100644
index 00000000000..22ce518563e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/t1yvtw.fd
@@ -0,0 +1,103 @@
+%Filename: t1yvtw.fd
+%Created by: tex yvt-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{t1yvtw.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for T1/yvtw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvt@scale\endcsname\relax
+ \let\yvt@@scale\@empty
+\else
+ \edef\yvt@@scale{s*[\csname yvt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{yvtw}{}
+
+\DeclareFontShape{T1}{yvtw}{m}{n}{
+ <-> \yvt@@scale yvtrw8t
+}{}
+
+\DeclareFontShape{T1}{yvtw}{m}{it}{
+ <-> \yvt@@scale yvtriw8t
+}{}
+
+\DeclareFontShape{T1}{yvtw}{m}{sc}{
+ <-> \yvt@@scale yvtrcw8t
+}{}
+
+\DeclareFontShape{T1}{yvtw}{m}{scit}{
+ <-> \yvt@@scale yvtrciw8t
+}{}
+
+\DeclareFontShape{T1}{yvtw}{b}{n}{
+ <-> \yvt@@scale yvtbw8t
+}{}
+
+\DeclareFontShape{T1}{yvtw}{b}{it}{
+ <-> \yvt@@scale yvtbiw8t
+}{}
+
+\DeclareFontShape{T1}{yvtw}{b}{sc}{
+ <-> \yvt@@scale yvtbcw8t
+}{}
+
+\DeclareFontShape{T1}{yvtw}{b}{scit}{
+ <-> \yvt@@scale yvtbciw8t
+}{}
+
+\DeclareFontShape{T1}{yvtw}{c}{n}{
+ <-> \yvt@@scale yvtrw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtw}{c}{it}{
+ <-> \yvt@@scale yvtriw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtw}{c}{sc}{
+ <-> \yvt@@scale yvtrcw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtw}{c}{scit}{
+ <-> \yvt@@scale yvtrciw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtw}{bc}{n}{
+ <-> \yvt@@scale yvtbw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtw}{bc}{it}{
+ <-> \yvt@@scale yvtbiw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtw}{bc}{sc}{
+ <-> \yvt@@scale yvtbcw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtw}{bc}{scit}{
+ <-> \yvt@@scale yvtbciw8tc
+}{}
+
+\DeclareFontShape{T1}{yvtw}{m}{sl}{<->ssub * yvtw/m/it}{}
+\DeclareFontShape{T1}{yvtw}{m}{scsl}{<->ssub * yvtw/m/scit}{}
+\DeclareFontShape{T1}{yvtw}{m}{si}{<->ssub * yvtw/m/scsl}{}
+\DeclareFontShape{T1}{yvtw}{bx}{n}{<->ssub * yvtw/b/n}{}
+\DeclareFontShape{T1}{yvtw}{bx}{it}{<->ssub * yvtw/b/it}{}
+\DeclareFontShape{T1}{yvtw}{b}{sl}{<->ssub * yvtw/b/it}{}
+\DeclareFontShape{T1}{yvtw}{bx}{sl}{<->ssub * yvtw/b/sl}{}
+\DeclareFontShape{T1}{yvtw}{bx}{sc}{<->ssub * yvtw/b/sc}{}
+\DeclareFontShape{T1}{yvtw}{bx}{scit}{<->ssub * yvtw/b/scit}{}
+\DeclareFontShape{T1}{yvtw}{b}{scsl}{<->ssub * yvtw/b/scit}{}
+\DeclareFontShape{T1}{yvtw}{bx}{scsl}{<->ssub * yvtw/b/scsl}{}
+\DeclareFontShape{T1}{yvtw}{b}{si}{<->ssub * yvtw/b/scsl}{}
+\DeclareFontShape{T1}{yvtw}{bx}{si}{<->ssub * yvtw/b/si}{}
+\DeclareFontShape{T1}{yvtw}{c}{sl}{<->ssub * yvtw/c/it}{}
+\DeclareFontShape{T1}{yvtw}{c}{scsl}{<->ssub * yvtw/c/scit}{}
+\DeclareFontShape{T1}{yvtw}{c}{si}{<->ssub * yvtw/c/scsl}{}
+\DeclareFontShape{T1}{yvtw}{bc}{sl}{<->ssub * yvtw/bc/it}{}
+\DeclareFontShape{T1}{yvtw}{bc}{scsl}{<->ssub * yvtw/bc/scit}{}
+\DeclareFontShape{T1}{yvtw}{bc}{si}{<->ssub * yvtw/bc/scsl}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/ts1yv1.fd b/Master/texmf-dist/tex/latex/venturisadf/ts1yv1.fd
new file mode 100644
index 00000000000..3e03b4e3a95
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/ts1yv1.fd
@@ -0,0 +1,163 @@
+%Filename: ts1yv1.fd
+%Created by: tex yv1-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ts1yv1.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for TS1/yv1.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvi@scale\endcsname\relax
+ \let\yvi@@scale\@empty
+\else
+ \edef\yvi@@scale{s*[\csname yvi@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{yv1}{}
+
+\DeclareFontShape{TS1}{yv1}{m}{n}{
+ <-> \yvi@@scale yv1r8c
+}{}
+
+\DeclareFontShape{TS1}{yv1}{m}{it}{
+ <-> \yvi@@scale yv1ri8c
+}{}
+
+\DeclareFontShape{TS1}{yv1}{b}{n}{
+ <-> \yvi@@scale yv1b8c
+}{}
+
+\DeclareFontShape{TS1}{yv1}{b}{it}{
+ <-> \yvi@@scale yv1bi8c
+}{}
+
+\DeclareFontShape{TS1}{yv1}{eb}{n}{
+ <-> \yvi@@scale yv1h8c
+}{}
+
+\DeclareFontShape{TS1}{yv1}{eb}{sl}{
+ <-> \yvi@@scale yv1ho8c
+}{}
+
+\DeclareFontShape{TS1}{yv1}{eb}{it}{
+ <-> \yvi@@scale yv1ho8c
+}{}
+
+\DeclareFontShape{TS1}{yv1}{c}{n}{
+ <-> \yvi@@scale yv1r8cc
+}{}
+
+\DeclareFontShape{TS1}{yv1}{c}{it}{
+ <-> \yvi@@scale yv1ri8cc
+}{}
+
+\DeclareFontShape{TS1}{yv1}{bc}{n}{
+ <-> \yvi@@scale yv1b8cc
+}{}
+
+\DeclareFontShape{TS1}{yv1}{bc}{it}{
+ <-> \yvi@@scale yv1bi8cc
+}{}
+
+\DeclareFontShape{TS1}{yv1}{x}{n}{
+ <-> \yvi@@scale yv1r8cx
+}{}
+
+\DeclareFontShape{TS1}{yv1}{x}{it}{
+ <-> \yvi@@scale yv1ri8cx
+}{}
+
+\DeclareFontShape{TS1}{yv1}{bx}{n}{
+ <-> \yvi@@scale yv1b8cx
+}{}
+
+\DeclareFontShape{TS1}{yv1}{bx}{it}{
+ <-> \yvi@@scale yv1bi8cx
+}{}
+
+\DeclareFontShape{TS1}{yv1}{bx}{sl}{
+ <-> \yvi@@scale yv1bi8cx
+}{}
+
+\DeclareFontShape{TS1}{yv1}{bx}{sc}{
+ <-> \yvi@@scale yv1b8cx
+}{}
+
+\DeclareFontShape{TS1}{yv1}{bx}{scit}{
+ <-> \yvi@@scale yv1b8cx
+}{}
+
+\DeclareFontShape{TS1}{yv1}{l}{n}{
+ <-> \yvi@@scale yv1l8c
+}{}
+
+\DeclareFontShape{TS1}{yv1}{l}{it}{
+ <-> \yvi@@scale yv1li8c
+}{}
+
+\DeclareFontShape{TS1}{yv1}{db}{n}{
+ <-> \yvi@@scale yv1d8c
+}{}
+
+\DeclareFontShape{TS1}{yv1}{db}{it}{
+ <-> \yvi@@scale yv1di8c
+}{}
+
+\DeclareFontShape{TS1}{yv1}{m}{sc}{<->ssub * yv1/m/n}{}
+\DeclareFontShape{TS1}{yv1}{m}{scit}{<->ssub * yv1/m/sc}{}
+\DeclareFontShape{TS1}{yv1}{m}{scsl}{<->ssub * yv1/m/scit}{}
+\DeclareFontShape{TS1}{yv1}{m}{si}{<->ssub * yv1/m/scsl}{}
+\DeclareFontShape{TS1}{yv1}{m}{sl}{<->ssub * yv1/m/it}{}
+\DeclareFontShape{TS1}{yv1}{b}{sc}{<->ssub * yv1/b/n}{}
+\DeclareFontShape{TS1}{yv1}{b}{scit}{<->ssub * yv1/b/sc}{}
+\DeclareFontShape{TS1}{yv1}{b}{scsl}{<->ssub * yv1/b/scit}{}
+\DeclareFontShape{TS1}{yv1}{bx}{scsl}{<->ssub * yv1/b/scsl}{}
+\DeclareFontShape{TS1}{yv1}{b}{si}{<->ssub * yv1/b/scsl}{}
+\DeclareFontShape{TS1}{yv1}{bx}{si}{<->ssub * yv1/b/si}{}
+\DeclareFontShape{TS1}{yv1}{b}{sl}{<->ssub * yv1/b/it}{}
+\DeclareFontShape{TS1}{yv1}{eb}{sc}{<->ssub * yv1/eb/n}{}
+\DeclareFontShape{TS1}{yv1}{eb}{scit}{<->ssub * yv1/eb/sc}{}
+\DeclareFontShape{TS1}{yv1}{eb}{scsl}{<->ssub * yv1/eb/scit}{}
+\DeclareFontShape{TS1}{yv1}{eb}{si}{<->ssub * yv1/eb/scsl}{}
+\DeclareFontShape{TS1}{yv1}{uc}{n}{<->ssub * yv1/c/n}{}
+\DeclareFontShape{TS1}{yv1}{c}{sc}{<->ssub * yv1/c/n}{}
+\DeclareFontShape{TS1}{yv1}{uc}{sc}{<->ssub * yv1/c/sc}{}
+\DeclareFontShape{TS1}{yv1}{c}{scit}{<->ssub * yv1/c/sc}{}
+\DeclareFontShape{TS1}{yv1}{uc}{scit}{<->ssub * yv1/c/scit}{}
+\DeclareFontShape{TS1}{yv1}{c}{scsl}{<->ssub * yv1/c/scit}{}
+\DeclareFontShape{TS1}{yv1}{uc}{scsl}{<->ssub * yv1/c/scsl}{}
+\DeclareFontShape{TS1}{yv1}{c}{si}{<->ssub * yv1/c/scsl}{}
+\DeclareFontShape{TS1}{yv1}{uc}{si}{<->ssub * yv1/c/si}{}
+\DeclareFontShape{TS1}{yv1}{uc}{it}{<->ssub * yv1/c/it}{}
+\DeclareFontShape{TS1}{yv1}{c}{sl}{<->ssub * yv1/c/it}{}
+\DeclareFontShape{TS1}{yv1}{uc}{sl}{<->ssub * yv1/c/sl}{}
+\DeclareFontShape{TS1}{yv1}{bc}{sc}{<->ssub * yv1/bc/n}{}
+\DeclareFontShape{TS1}{yv1}{bc}{scit}{<->ssub * yv1/bc/sc}{}
+\DeclareFontShape{TS1}{yv1}{bc}{scsl}{<->ssub * yv1/bc/scit}{}
+\DeclareFontShape{TS1}{yv1}{bc}{si}{<->ssub * yv1/bc/scsl}{}
+\DeclareFontShape{TS1}{yv1}{bc}{sl}{<->ssub * yv1/bc/it}{}
+\DeclareFontShape{TS1}{yv1}{x}{sc}{<->ssub * yv1/x/n}{}
+\DeclareFontShape{TS1}{yv1}{x}{scit}{<->ssub * yv1/x/sc}{}
+\DeclareFontShape{TS1}{yv1}{x}{scsl}{<->ssub * yv1/x/scit}{}
+\DeclareFontShape{TS1}{yv1}{x}{si}{<->ssub * yv1/x/scsl}{}
+\DeclareFontShape{TS1}{yv1}{x}{sl}{<->ssub * yv1/x/it}{}
+\DeclareFontShape{TS1}{yv1}{l}{sc}{<->ssub * yv1/l/n}{}
+\DeclareFontShape{TS1}{yv1}{l}{scit}{<->ssub * yv1/l/sc}{}
+\DeclareFontShape{TS1}{yv1}{l}{scsl}{<->ssub * yv1/l/scit}{}
+\DeclareFontShape{TS1}{yv1}{l}{si}{<->ssub * yv1/l/scsl}{}
+\DeclareFontShape{TS1}{yv1}{l}{sl}{<->ssub * yv1/l/it}{}
+\DeclareFontShape{TS1}{yv1}{dbuc}{n}{<->ssub * yv1/db/n}{}
+\DeclareFontShape{TS1}{yv1}{db}{sc}{<->ssub * yv1/db/n}{}
+\DeclareFontShape{TS1}{yv1}{dbuc}{sc}{<->ssub * yv1/db/sc}{}
+\DeclareFontShape{TS1}{yv1}{db}{scit}{<->ssub * yv1/db/sc}{}
+\DeclareFontShape{TS1}{yv1}{dbuc}{scit}{<->ssub * yv1/db/scit}{}
+\DeclareFontShape{TS1}{yv1}{db}{scsl}{<->ssub * yv1/db/scit}{}
+\DeclareFontShape{TS1}{yv1}{dbuc}{scsl}{<->ssub * yv1/db/scsl}{}
+\DeclareFontShape{TS1}{yv1}{db}{si}{<->ssub * yv1/db/scsl}{}
+\DeclareFontShape{TS1}{yv1}{dbuc}{si}{<->ssub * yv1/db/si}{}
+\DeclareFontShape{TS1}{yv1}{dbuc}{it}{<->ssub * yv1/db/it}{}
+\DeclareFontShape{TS1}{yv1}{db}{sl}{<->ssub * yv1/db/it}{}
+\DeclareFontShape{TS1}{yv1}{dbuc}{sl}{<->ssub * yv1/db/sl}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/ts1yv1d.fd b/Master/texmf-dist/tex/latex/venturisadf/ts1yv1d.fd
new file mode 100644
index 00000000000..46b88ae4ba0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/ts1yv1d.fd
@@ -0,0 +1,135 @@
+%Filename: ts1yv1d.fd
+%Created by: tex yv1-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ts1yv1d.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for TS1/yv1d.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvi@scale\endcsname\relax
+ \let\yvi@@scale\@empty
+\else
+ \edef\yvi@@scale{s*[\csname yvi@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{yv1d}{}
+
+\DeclareFontShape{TS1}{yv1d}{b}{sc}{
+ <-> \yvi@@scale yv1bd8c
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{eb}{sc}{
+ <-> \yvi@@scale yv1bd8c
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{bc}{sc}{
+ <-> \yvi@@scale yv1bd8c
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{db}{sc}{
+ <-> \yvi@@scale yv1bd8c
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{b}{n}{
+ <-> \yvi@@scale yv1bd8c
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{eb}{n}{
+ <-> \yvi@@scale yv1bd8c
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{bc}{n}{
+ <-> \yvi@@scale yv1bd8c
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{db}{n}{
+ <-> \yvi@@scale yv1bd8c
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{dbuc}{sc}{
+ <-> \yvi@@scale yv1dd8cu
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{x}{sc}{
+ <-> \yvi@@scale yv1dd8cu
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{m}{sc}{
+ <-> \yvi@@scale yv1dd8cu
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{c}{sc}{
+ <-> \yvi@@scale yv1dd8cu
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{uc}{sc}{
+ <-> \yvi@@scale yv1dd8cu
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{l}{sc}{
+ <-> \yvi@@scale yv1dd8cu
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{dbuc}{n}{
+ <-> \yvi@@scale yv1dd8cu
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{x}{n}{
+ <-> \yvi@@scale yv1dd8cu
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{m}{n}{
+ <-> \yvi@@scale yv1dd8cu
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{c}{n}{
+ <-> \yvi@@scale yv1dd8cu
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{uc}{n}{
+ <-> \yvi@@scale yv1dd8cu
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{l}{n}{
+ <-> \yvi@@scale yv1dd8cu
+}{}
+
+\DeclareFontShape{TS1}{yv1d}{bx}{sc}{<->ssub * yv1d/b/sc}{}
+\DeclareFontShape{TS1}{yv1d}{b}{scit}{<->ssub * yv1d/b/sc}{}
+\DeclareFontShape{TS1}{yv1d}{bx}{scit}{<->ssub * yv1d/b/scit}{}
+\DeclareFontShape{TS1}{yv1d}{b}{scsl}{<->ssub * yv1d/b/scit}{}
+\DeclareFontShape{TS1}{yv1d}{bx}{scsl}{<->ssub * yv1d/b/scsl}{}
+\DeclareFontShape{TS1}{yv1d}{b}{si}{<->ssub * yv1d/b/scsl}{}
+\DeclareFontShape{TS1}{yv1d}{bx}{si}{<->ssub * yv1d/b/si}{}
+\DeclareFontShape{TS1}{yv1d}{eb}{scit}{<->ssub * yv1d/eb/sc}{}
+\DeclareFontShape{TS1}{yv1d}{eb}{scsl}{<->ssub * yv1d/eb/scit}{}
+\DeclareFontShape{TS1}{yv1d}{eb}{si}{<->ssub * yv1d/eb/scsl}{}
+\DeclareFontShape{TS1}{yv1d}{bc}{scit}{<->ssub * yv1d/bc/sc}{}
+\DeclareFontShape{TS1}{yv1d}{bc}{scsl}{<->ssub * yv1d/bc/scit}{}
+\DeclareFontShape{TS1}{yv1d}{bc}{si}{<->ssub * yv1d/bc/scsl}{}
+\DeclareFontShape{TS1}{yv1d}{db}{scit}{<->ssub * yv1d/db/sc}{}
+\DeclareFontShape{TS1}{yv1d}{dbuc}{scit}{<->ssub * yv1d/db/scit}{}
+\DeclareFontShape{TS1}{yv1d}{db}{scsl}{<->ssub * yv1d/db/scit}{}
+\DeclareFontShape{TS1}{yv1d}{dbuc}{scsl}{<->ssub * yv1d/db/scsl}{}
+\DeclareFontShape{TS1}{yv1d}{db}{si}{<->ssub * yv1d/db/scsl}{}
+\DeclareFontShape{TS1}{yv1d}{dbuc}{si}{<->ssub * yv1d/db/si}{}
+\DeclareFontShape{TS1}{yv1d}{bx}{n}{<->ssub * yv1d/b/n}{}
+\DeclareFontShape{TS1}{yv1d}{x}{scit}{<->ssub * yv1d/x/sc}{}
+\DeclareFontShape{TS1}{yv1d}{x}{scsl}{<->ssub * yv1d/x/scit}{}
+\DeclareFontShape{TS1}{yv1d}{x}{si}{<->ssub * yv1d/x/scsl}{}
+\DeclareFontShape{TS1}{yv1d}{m}{scit}{<->ssub * yv1d/m/sc}{}
+\DeclareFontShape{TS1}{yv1d}{m}{scsl}{<->ssub * yv1d/m/scit}{}
+\DeclareFontShape{TS1}{yv1d}{m}{si}{<->ssub * yv1d/m/scsl}{}
+\DeclareFontShape{TS1}{yv1d}{c}{scit}{<->ssub * yv1d/c/sc}{}
+\DeclareFontShape{TS1}{yv1d}{uc}{scit}{<->ssub * yv1d/c/scit}{}
+\DeclareFontShape{TS1}{yv1d}{c}{scsl}{<->ssub * yv1d/c/scit}{}
+\DeclareFontShape{TS1}{yv1d}{uc}{scsl}{<->ssub * yv1d/c/scsl}{}
+\DeclareFontShape{TS1}{yv1d}{c}{si}{<->ssub * yv1d/c/scsl}{}
+\DeclareFontShape{TS1}{yv1d}{uc}{si}{<->ssub * yv1d/c/si}{}
+\DeclareFontShape{TS1}{yv1d}{l}{scit}{<->ssub * yv1d/l/sc}{}
+\DeclareFontShape{TS1}{yv1d}{l}{scsl}{<->ssub * yv1d/l/scit}{}
+\DeclareFontShape{TS1}{yv1d}{l}{si}{<->ssub * yv1d/l/scsl}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/ts1yv2.fd b/Master/texmf-dist/tex/latex/venturisadf/ts1yv2.fd
new file mode 100644
index 00000000000..c7b4fb25819
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/ts1yv2.fd
@@ -0,0 +1,105 @@
+%Filename: ts1yv2.fd
+%Created by: tex yv2-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ts1yv2.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for TS1/yv2.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvii@scale\endcsname\relax
+ \let\yvii@@scale\@empty
+\else
+ \edef\yvii@@scale{s*[\csname yvii@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{yv2}{}
+
+\DeclareFontShape{TS1}{yv2}{m}{n}{
+ <-> \yvii@@scale yv2r8c
+}{}
+
+\DeclareFontShape{TS1}{yv2}{m}{it}{
+ <-> \yvii@@scale yv2ri8c
+}{}
+
+\DeclareFontShape{TS1}{yv2}{b}{n}{
+ <-> \yvii@@scale yv2b8c
+}{}
+
+\DeclareFontShape{TS1}{yv2}{b}{it}{
+ <-> \yvii@@scale yv2bi8c
+}{}
+
+\DeclareFontShape{TS1}{yv2}{c}{n}{
+ <-> \yvii@@scale yv2r8cc
+}{}
+
+\DeclareFontShape{TS1}{yv2}{c}{it}{
+ <-> \yvii@@scale yv2ri8cc
+}{}
+
+\DeclareFontShape{TS1}{yv2}{bc}{n}{
+ <-> \yvii@@scale yv2b8cc
+}{}
+
+\DeclareFontShape{TS1}{yv2}{bc}{it}{
+ <-> \yvii@@scale yv2bi8cc
+}{}
+
+\DeclareFontShape{TS1}{yv2}{sb}{n}{
+ <-> \yvii@@scale yv2m8c
+}{}
+
+\DeclareFontShape{TS1}{yv2}{sb}{it}{
+ <-> \yvii@@scale yv2mi8c
+}{}
+
+\DeclareFontShape{TS1}{yv2}{eb}{n}{
+ <-> \yvii@@scale yv2x8c
+}{}
+
+\DeclareFontShape{TS1}{yv2}{eb}{it}{
+ <-> \yvii@@scale yv2xi8c
+}{}
+
+\DeclareFontShape{TS1}{yv2}{m}{sc}{<->ssub * yv2/m/n}{}
+\DeclareFontShape{TS1}{yv2}{m}{scit}{<->ssub * yv2/m/sc}{}
+\DeclareFontShape{TS1}{yv2}{m}{scsl}{<->ssub * yv2/m/scit}{}
+\DeclareFontShape{TS1}{yv2}{m}{si}{<->ssub * yv2/m/scsl}{}
+\DeclareFontShape{TS1}{yv2}{m}{sl}{<->ssub * yv2/m/it}{}
+\DeclareFontShape{TS1}{yv2}{bx}{n}{<->ssub * yv2/b/n}{}
+\DeclareFontShape{TS1}{yv2}{b}{sc}{<->ssub * yv2/b/n}{}
+\DeclareFontShape{TS1}{yv2}{bx}{sc}{<->ssub * yv2/b/sc}{}
+\DeclareFontShape{TS1}{yv2}{b}{scit}{<->ssub * yv2/b/sc}{}
+\DeclareFontShape{TS1}{yv2}{bx}{scit}{<->ssub * yv2/b/scit}{}
+\DeclareFontShape{TS1}{yv2}{b}{scsl}{<->ssub * yv2/b/scit}{}
+\DeclareFontShape{TS1}{yv2}{bx}{scsl}{<->ssub * yv2/b/scsl}{}
+\DeclareFontShape{TS1}{yv2}{b}{si}{<->ssub * yv2/b/scsl}{}
+\DeclareFontShape{TS1}{yv2}{bx}{si}{<->ssub * yv2/b/si}{}
+\DeclareFontShape{TS1}{yv2}{bx}{it}{<->ssub * yv2/b/it}{}
+\DeclareFontShape{TS1}{yv2}{b}{sl}{<->ssub * yv2/b/it}{}
+\DeclareFontShape{TS1}{yv2}{bx}{sl}{<->ssub * yv2/b/sl}{}
+\DeclareFontShape{TS1}{yv2}{c}{sc}{<->ssub * yv2/c/n}{}
+\DeclareFontShape{TS1}{yv2}{c}{scit}{<->ssub * yv2/c/sc}{}
+\DeclareFontShape{TS1}{yv2}{c}{scsl}{<->ssub * yv2/c/scit}{}
+\DeclareFontShape{TS1}{yv2}{c}{si}{<->ssub * yv2/c/scsl}{}
+\DeclareFontShape{TS1}{yv2}{c}{sl}{<->ssub * yv2/c/it}{}
+\DeclareFontShape{TS1}{yv2}{bc}{sc}{<->ssub * yv2/bc/n}{}
+\DeclareFontShape{TS1}{yv2}{bc}{scit}{<->ssub * yv2/bc/sc}{}
+\DeclareFontShape{TS1}{yv2}{bc}{scsl}{<->ssub * yv2/bc/scit}{}
+\DeclareFontShape{TS1}{yv2}{bc}{si}{<->ssub * yv2/bc/scsl}{}
+\DeclareFontShape{TS1}{yv2}{bc}{sl}{<->ssub * yv2/bc/it}{}
+\DeclareFontShape{TS1}{yv2}{sb}{sc}{<->ssub * yv2/sb/n}{}
+\DeclareFontShape{TS1}{yv2}{sb}{scit}{<->ssub * yv2/sb/sc}{}
+\DeclareFontShape{TS1}{yv2}{sb}{scsl}{<->ssub * yv2/sb/scit}{}
+\DeclareFontShape{TS1}{yv2}{sb}{si}{<->ssub * yv2/sb/scsl}{}
+\DeclareFontShape{TS1}{yv2}{sb}{sl}{<->ssub * yv2/sb/it}{}
+\DeclareFontShape{TS1}{yv2}{eb}{sc}{<->ssub * yv2/eb/n}{}
+\DeclareFontShape{TS1}{yv2}{eb}{scit}{<->ssub * yv2/eb/sc}{}
+\DeclareFontShape{TS1}{yv2}{eb}{scsl}{<->ssub * yv2/eb/scit}{}
+\DeclareFontShape{TS1}{yv2}{eb}{si}{<->ssub * yv2/eb/scsl}{}
+\DeclareFontShape{TS1}{yv2}{eb}{sl}{<->ssub * yv2/eb/it}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/ts1yv3.fd b/Master/texmf-dist/tex/latex/venturisadf/ts1yv3.fd
new file mode 100644
index 00000000000..182eb5ba316
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/ts1yv3.fd
@@ -0,0 +1,98 @@
+%Filename: ts1yv3.fd
+%Created by: tex yv3-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ts1yv3.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for TS1/yv3.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yviii@scale\endcsname\relax
+ \let\yviii@@scale\@empty
+\else
+ \edef\yviii@@scale{s*[\csname yviii@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{yv3}{}
+
+\DeclareFontShape{TS1}{yv3}{m}{n}{
+ <-> \yviii@@scale yv3r8c
+}{}
+
+\DeclareFontShape{TS1}{yv3}{m}{it}{
+ <-> \yviii@@scale yv3ri8c
+}{}
+
+\DeclareFontShape{TS1}{yv3}{b}{n}{
+ <-> \yviii@@scale yv3b8c
+}{}
+
+\DeclareFontShape{TS1}{yv3}{b}{it}{
+ <-> \yviii@@scale yv3bi8c
+}{}
+
+\DeclareFontShape{TS1}{yv3}{c}{n}{
+ <-> \yviii@@scale yv3r8cc
+}{}
+
+\DeclareFontShape{TS1}{yv3}{c}{it}{
+ <-> \yviii@@scale yv3ri8cc
+}{}
+
+\DeclareFontShape{TS1}{yv3}{bc}{n}{
+ <-> \yviii@@scale yv3b8cc
+}{}
+
+\DeclareFontShape{TS1}{yv3}{bc}{it}{
+ <-> \yviii@@scale yv3bi8cc
+}{}
+
+\DeclareFontShape{TS1}{yv3}{x}{n}{
+ <-> \yviii@@scale yv3r8cx
+}{}
+
+\DeclareFontShape{TS1}{yv3}{x}{it}{
+ <-> \yviii@@scale yv3ri8cx
+}{}
+
+\DeclareFontShape{TS1}{yv3}{bx}{n}{
+ <-> \yviii@@scale yv3b8cx
+}{}
+
+\DeclareFontShape{TS1}{yv3}{bx}{it}{
+ <-> \yviii@@scale yv3bi8cx
+}{}
+
+\DeclareFontShape{TS1}{yv3}{m}{sc}{<->ssub * yv3/m/n}{}
+\DeclareFontShape{TS1}{yv3}{m}{scit}{<->ssub * yv3/m/sc}{}
+\DeclareFontShape{TS1}{yv3}{m}{scsl}{<->ssub * yv3/m/scit}{}
+\DeclareFontShape{TS1}{yv3}{m}{si}{<->ssub * yv3/m/scsl}{}
+\DeclareFontShape{TS1}{yv3}{m}{sl}{<->ssub * yv3/m/it}{}
+\DeclareFontShape{TS1}{yv3}{b}{sc}{<->ssub * yv3/b/n}{}
+\DeclareFontShape{TS1}{yv3}{bx}{sc}{<->ssub * yv3/b/sc}{}
+\DeclareFontShape{TS1}{yv3}{b}{scit}{<->ssub * yv3/b/sc}{}
+\DeclareFontShape{TS1}{yv3}{bx}{scit}{<->ssub * yv3/b/scit}{}
+\DeclareFontShape{TS1}{yv3}{b}{scsl}{<->ssub * yv3/b/scit}{}
+\DeclareFontShape{TS1}{yv3}{bx}{scsl}{<->ssub * yv3/b/scsl}{}
+\DeclareFontShape{TS1}{yv3}{b}{si}{<->ssub * yv3/b/scsl}{}
+\DeclareFontShape{TS1}{yv3}{bx}{si}{<->ssub * yv3/b/si}{}
+\DeclareFontShape{TS1}{yv3}{b}{sl}{<->ssub * yv3/b/it}{}
+\DeclareFontShape{TS1}{yv3}{bx}{sl}{<->ssub * yv3/b/sl}{}
+\DeclareFontShape{TS1}{yv3}{c}{sc}{<->ssub * yv3/c/n}{}
+\DeclareFontShape{TS1}{yv3}{c}{scit}{<->ssub * yv3/c/sc}{}
+\DeclareFontShape{TS1}{yv3}{c}{scsl}{<->ssub * yv3/c/scit}{}
+\DeclareFontShape{TS1}{yv3}{c}{si}{<->ssub * yv3/c/scsl}{}
+\DeclareFontShape{TS1}{yv3}{c}{sl}{<->ssub * yv3/c/it}{}
+\DeclareFontShape{TS1}{yv3}{bc}{sc}{<->ssub * yv3/bc/n}{}
+\DeclareFontShape{TS1}{yv3}{bc}{scit}{<->ssub * yv3/bc/sc}{}
+\DeclareFontShape{TS1}{yv3}{bc}{scsl}{<->ssub * yv3/bc/scit}{}
+\DeclareFontShape{TS1}{yv3}{bc}{si}{<->ssub * yv3/bc/scsl}{}
+\DeclareFontShape{TS1}{yv3}{bc}{sl}{<->ssub * yv3/bc/it}{}
+\DeclareFontShape{TS1}{yv3}{x}{sc}{<->ssub * yv3/x/n}{}
+\DeclareFontShape{TS1}{yv3}{x}{scit}{<->ssub * yv3/x/sc}{}
+\DeclareFontShape{TS1}{yv3}{x}{scsl}{<->ssub * yv3/x/scit}{}
+\DeclareFontShape{TS1}{yv3}{x}{si}{<->ssub * yv3/x/scsl}{}
+\DeclareFontShape{TS1}{yv3}{x}{sl}{<->ssub * yv3/x/it}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisold/ts1yvo.fd b/Master/texmf-dist/tex/latex/venturisadf/ts1yvo.fd
index 2d53b412c76..b7a740502da 100644
--- a/Master/texmf-dist/tex/latex/venturisold/ts1yvo.fd
+++ b/Master/texmf-dist/tex/latex/venturisadf/ts1yvo.fd
@@ -5,33 +5,46 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1yvo.fd}
- [2010/07/03 Fontinst v1.933 font definitions for TS1/yvo.]
+ [2024/08/17 Fontinst v1.933 font definitions for TS1/yvo.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvo@scale\endcsname\relax
+ \let\yvo@@scale\@empty
+\else
+ \edef\yvo@@scale{s*[\csname yvo@scale\endcsname]}%
+\fi
\DeclareFontFamily{TS1}{yvo}{}
\DeclareFontShape{TS1}{yvo}{m}{n}{
- <-> yvor8c
+ <-> \yvo@@scale yvor8c
}{}
\DeclareFontShape{TS1}{yvo}{m}{it}{
- <-> yvori8c
+ <-> \yvo@@scale yvori8c
}{}
\DeclareFontShape{TS1}{yvo}{b}{n}{
- <-> yvob8c
+ <-> \yvo@@scale yvob8c
}{}
\DeclareFontShape{TS1}{yvo}{b}{it}{
- <-> yvobi8c
+ <-> \yvo@@scale yvobi8c
}{}
\DeclareFontShape{TS1}{yvo}{m}{sc}{<->sub * yvo/m/n}{}
-\DeclareFontShape{TS1}{yvo}{m}{si}{<->ssub * yvo/m/sc}{}
+\DeclareFontShape{TS1}{yvo}{m}{scit}{<->ssub * yvo/m/sc}{}
+\DeclareFontShape{TS1}{yvo}{m}{scsl}{<->ssub * yvo/m/scit}{}
+\DeclareFontShape{TS1}{yvo}{m}{si}{<->ssub * yvo/m/scsl}{}
\DeclareFontShape{TS1}{yvo}{m}{sl}{<->ssub * yvo/m/it}{}
\DeclareFontShape{TS1}{yvo}{bx}{n}{<->ssub * yvo/b/n}{}
\DeclareFontShape{TS1}{yvo}{b}{sc}{<->sub * yvo/b/n}{}
\DeclareFontShape{TS1}{yvo}{bx}{sc}{<->ssub * yvo/b/sc}{}
-\DeclareFontShape{TS1}{yvo}{b}{si}{<->ssub * yvo/b/sc}{}
+\DeclareFontShape{TS1}{yvo}{b}{scit}{<->ssub * yvo/b/sc}{}
+\DeclareFontShape{TS1}{yvo}{bx}{scit}{<->ssub * yvo/b/scit}{}
+\DeclareFontShape{TS1}{yvo}{b}{scsl}{<->ssub * yvo/b/scit}{}
+\DeclareFontShape{TS1}{yvo}{bx}{scsl}{<->ssub * yvo/b/scsl}{}
+\DeclareFontShape{TS1}{yvo}{b}{si}{<->ssub * yvo/b/scsl}{}
\DeclareFontShape{TS1}{yvo}{bx}{si}{<->ssub * yvo/b/si}{}
\DeclareFontShape{TS1}{yvo}{bx}{it}{<->ssub * yvo/b/it}{}
\DeclareFontShape{TS1}{yvo}{b}{sl}{<->ssub * yvo/b/it}{}
diff --git a/Master/texmf-dist/tex/latex/venturisold/ts1yvoa.fd b/Master/texmf-dist/tex/latex/venturisadf/ts1yvoa.fd
index 003f75a60f2..487e53e7fc1 100644
--- a/Master/texmf-dist/tex/latex/venturisold/ts1yvoa.fd
+++ b/Master/texmf-dist/tex/latex/venturisadf/ts1yvoa.fd
@@ -5,33 +5,46 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ts1yvoa.fd}
- [2010/07/03 Fontinst v1.933 font definitions for TS1/yvoa.]
+ [2024/08/17 Fontinst v1.933 font definitions for TS1/yvoa.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvo@scale\endcsname\relax
+ \let\yvo@@scale\@empty
+\else
+ \edef\yvo@@scale{s*[\csname yvo@scale\endcsname]}%
+\fi
\DeclareFontFamily{TS1}{yvoa}{}
\DeclareFontShape{TS1}{yvoa}{m}{n}{
- <-> yvor8c
+ <-> \yvo@@scale yvor8c
}{}
\DeclareFontShape{TS1}{yvoa}{m}{it}{
- <-> yvori8c
+ <-> \yvo@@scale yvori8c
}{}
\DeclareFontShape{TS1}{yvoa}{b}{n}{
- <-> yvob8c
+ <-> \yvo@@scale yvob8c
}{}
\DeclareFontShape{TS1}{yvoa}{b}{it}{
- <-> yvobi8c
+ <-> \yvo@@scale yvobi8c
}{}
\DeclareFontShape{TS1}{yvoa}{m}{sc}{<->sub * yvoa/m/n}{}
-\DeclareFontShape{TS1}{yvoa}{m}{si}{<->ssub * yvoa/m/sc}{}
+\DeclareFontShape{TS1}{yvoa}{m}{scit}{<->ssub * yvoa/m/sc}{}
+\DeclareFontShape{TS1}{yvoa}{m}{scsl}{<->ssub * yvoa/m/scit}{}
+\DeclareFontShape{TS1}{yvoa}{m}{si}{<->ssub * yvoa/m/scsl}{}
\DeclareFontShape{TS1}{yvoa}{m}{sl}{<->ssub * yvoa/m/it}{}
\DeclareFontShape{TS1}{yvoa}{bx}{n}{<->ssub * yvoa/b/n}{}
\DeclareFontShape{TS1}{yvoa}{b}{sc}{<->sub * yvoa/b/n}{}
\DeclareFontShape{TS1}{yvoa}{bx}{sc}{<->ssub * yvoa/b/sc}{}
-\DeclareFontShape{TS1}{yvoa}{b}{si}{<->ssub * yvoa/b/sc}{}
+\DeclareFontShape{TS1}{yvoa}{b}{scit}{<->ssub * yvoa/b/sc}{}
+\DeclareFontShape{TS1}{yvoa}{bx}{scit}{<->ssub * yvoa/b/scit}{}
+\DeclareFontShape{TS1}{yvoa}{b}{scsl}{<->ssub * yvoa/b/scit}{}
+\DeclareFontShape{TS1}{yvoa}{bx}{scsl}{<->ssub * yvoa/b/scsl}{}
+\DeclareFontShape{TS1}{yvoa}{b}{si}{<->ssub * yvoa/b/scsl}{}
\DeclareFontShape{TS1}{yvoa}{bx}{si}{<->ssub * yvoa/b/si}{}
\DeclareFontShape{TS1}{yvoa}{bx}{it}{<->ssub * yvoa/b/it}{}
\DeclareFontShape{TS1}{yvoa}{b}{sl}{<->ssub * yvoa/b/it}{}
diff --git a/Master/texmf-dist/tex/latex/venturisadf/ts1yvoad.fd b/Master/texmf-dist/tex/latex/venturisadf/ts1yvoad.fd
new file mode 100644
index 00000000000..f1de4addb8e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/ts1yvoad.fd
@@ -0,0 +1,46 @@
+%Filename: ts1yvoad.fd
+%Created by: tex yvo-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ts1yvoad.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for TS1/yvoad.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvo@scale\endcsname\relax
+ \let\yvo@@scale\@empty
+\else
+ \edef\yvo@@scale{s*[\csname yvo@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{yvoad}{}
+
+\DeclareFontShape{TS1}{yvoad}{db}{sc}{
+ <-> \yvo@@scale yvodd8c
+}{}
+
+\DeclareFontShape{TS1}{yvoad}{db}{n}{
+ <-> \yvo@@scale yvodd8c
+}{}
+
+\DeclareFontShape{TS1}{yvoad}{b}{sc}{<->ssub * yvoad/db/sc}{}
+\DeclareFontShape{TS1}{yvoad}{bx}{sc}{<->ssub * yvoad/b/sc}{}
+\DeclareFontShape{TS1}{yvoad}{m}{sc}{<->ssub * yvoad/bx/sc}{}
+\DeclareFontShape{TS1}{yvoad}{db}{scit}{<->ssub * yvoad/db/sc}{}
+\DeclareFontShape{TS1}{yvoad}{b}{scit}{<->ssub * yvoad/db/scit}{}
+\DeclareFontShape{TS1}{yvoad}{bx}{scit}{<->ssub * yvoad/b/scit}{}
+\DeclareFontShape{TS1}{yvoad}{m}{scit}{<->ssub * yvoad/bx/scit}{}
+\DeclareFontShape{TS1}{yvoad}{db}{scsl}{<->ssub * yvoad/db/scit}{}
+\DeclareFontShape{TS1}{yvoad}{b}{scsl}{<->ssub * yvoad/db/scsl}{}
+\DeclareFontShape{TS1}{yvoad}{bx}{scsl}{<->ssub * yvoad/b/scsl}{}
+\DeclareFontShape{TS1}{yvoad}{m}{scsl}{<->ssub * yvoad/bx/scsl}{}
+\DeclareFontShape{TS1}{yvoad}{db}{si}{<->ssub * yvoad/db/scsl}{}
+\DeclareFontShape{TS1}{yvoad}{b}{si}{<->ssub * yvoad/db/si}{}
+\DeclareFontShape{TS1}{yvoad}{bx}{si}{<->ssub * yvoad/b/si}{}
+\DeclareFontShape{TS1}{yvoad}{m}{si}{<->ssub * yvoad/bx/si}{}
+\DeclareFontShape{TS1}{yvoad}{b}{n}{<->ssub * yvoad/db/n}{}
+\DeclareFontShape{TS1}{yvoad}{bx}{n}{<->ssub * yvoad/b/n}{}
+\DeclareFontShape{TS1}{yvoad}{m}{n}{<->ssub * yvoad/bx/n}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/ts1yvod.fd b/Master/texmf-dist/tex/latex/venturisadf/ts1yvod.fd
new file mode 100644
index 00000000000..a42c9aaca99
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/ts1yvod.fd
@@ -0,0 +1,46 @@
+%Filename: ts1yvod.fd
+%Created by: tex yvo-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ts1yvod.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for TS1/yvod.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvo@scale\endcsname\relax
+ \let\yvo@@scale\@empty
+\else
+ \edef\yvo@@scale{s*[\csname yvo@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{yvod}{}
+
+\DeclareFontShape{TS1}{yvod}{db}{sc}{
+ <-> \yvo@@scale yvodd8c
+}{}
+
+\DeclareFontShape{TS1}{yvod}{db}{n}{
+ <-> \yvo@@scale yvodd8c
+}{}
+
+\DeclareFontShape{TS1}{yvod}{b}{sc}{<->ssub * yvod/db/sc}{}
+\DeclareFontShape{TS1}{yvod}{bx}{sc}{<->ssub * yvod/b/sc}{}
+\DeclareFontShape{TS1}{yvod}{m}{sc}{<->ssub * yvod/bx/sc}{}
+\DeclareFontShape{TS1}{yvod}{db}{scit}{<->ssub * yvod/db/sc}{}
+\DeclareFontShape{TS1}{yvod}{b}{scit}{<->ssub * yvod/db/scit}{}
+\DeclareFontShape{TS1}{yvod}{bx}{scit}{<->ssub * yvod/b/scit}{}
+\DeclareFontShape{TS1}{yvod}{m}{scit}{<->ssub * yvod/bx/scit}{}
+\DeclareFontShape{TS1}{yvod}{db}{scsl}{<->ssub * yvod/db/scit}{}
+\DeclareFontShape{TS1}{yvod}{b}{scsl}{<->ssub * yvod/db/scsl}{}
+\DeclareFontShape{TS1}{yvod}{bx}{scsl}{<->ssub * yvod/b/scsl}{}
+\DeclareFontShape{TS1}{yvod}{m}{scsl}{<->ssub * yvod/bx/scsl}{}
+\DeclareFontShape{TS1}{yvod}{db}{si}{<->ssub * yvod/db/scsl}{}
+\DeclareFontShape{TS1}{yvod}{b}{si}{<->ssub * yvod/db/si}{}
+\DeclareFontShape{TS1}{yvod}{bx}{si}{<->ssub * yvod/b/si}{}
+\DeclareFontShape{TS1}{yvod}{m}{si}{<->ssub * yvod/bx/si}{}
+\DeclareFontShape{TS1}{yvod}{b}{n}{<->ssub * yvod/db/n}{}
+\DeclareFontShape{TS1}{yvod}{bx}{n}{<->ssub * yvod/b/n}{}
+\DeclareFontShape{TS1}{yvod}{m}{n}{<->ssub * yvod/bx/n}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/ts1yvt.fd b/Master/texmf-dist/tex/latex/venturisadf/ts1yvt.fd
new file mode 100644
index 00000000000..db55b930dd2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/ts1yvt.fd
@@ -0,0 +1,116 @@
+%Filename: ts1yvt.fd
+%Created by: tex yvt-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ts1yvt.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for TS1/yvt.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvt@scale\endcsname\relax
+ \let\yvt@@scale\@empty
+\else
+ \edef\yvt@@scale{s*[\csname yvt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{yvt}{}
+
+\DeclareFontShape{TS1}{yvt}{m}{n}{
+ <-> \yvt@@scale yvtr8c
+}{}
+
+\DeclareFontShape{TS1}{yvt}{m}{sc}{
+ <-> \yvt@@scale yvtrc8c
+}{}
+
+\DeclareFontShape{TS1}{yvt}{m}{it}{
+ <-> \yvt@@scale yvtri8c
+}{}
+
+\DeclareFontShape{TS1}{yvt}{m}{scit}{
+ <-> \yvt@@scale yvtrci8c
+}{}
+
+\DeclareFontShape{TS1}{yvt}{b}{n}{
+ <-> \yvt@@scale yvtb8c
+}{}
+
+\DeclareFontShape{TS1}{yvt}{b}{sc}{
+ <-> \yvt@@scale yvtbc8c
+}{}
+
+\DeclareFontShape{TS1}{yvt}{b}{it}{
+ <-> \yvt@@scale yvtbi8c
+}{}
+
+\DeclareFontShape{TS1}{yvt}{b}{scit}{
+ <-> \yvt@@scale yvtbci8c
+}{}
+
+\DeclareFontShape{TS1}{yvt}{eb}{n}{
+ <-> \yvt@@scale yvth8c
+}{}
+
+\DeclareFontShape{TS1}{yvt}{eb}{it}{
+ <-> \yvt@@scale yvthi8c
+}{}
+
+\DeclareFontShape{TS1}{yvt}{c}{n}{
+ <-> \yvt@@scale yvtr8cc
+}{}
+
+\DeclareFontShape{TS1}{yvt}{c}{sc}{
+ <-> \yvt@@scale yvtrc8cc
+}{}
+
+\DeclareFontShape{TS1}{yvt}{c}{it}{
+ <-> \yvt@@scale yvtri8cc
+}{}
+
+\DeclareFontShape{TS1}{yvt}{c}{scit}{
+ <-> \yvt@@scale yvtrci8cc
+}{}
+
+\DeclareFontShape{TS1}{yvt}{bc}{n}{
+ <-> \yvt@@scale yvtb8cc
+}{}
+
+\DeclareFontShape{TS1}{yvt}{bc}{sc}{
+ <-> \yvt@@scale yvtbc8cc
+}{}
+
+\DeclareFontShape{TS1}{yvt}{bc}{it}{
+ <-> \yvt@@scale yvtbi8cc
+}{}
+
+\DeclareFontShape{TS1}{yvt}{bc}{scit}{
+ <-> \yvt@@scale yvtbci8cc
+}{}
+
+\DeclareFontShape{TS1}{yvt}{m}{sl}{<->ssub * yvt/m/it}{}
+\DeclareFontShape{TS1}{yvt}{m}{scsl}{<->ssub * yvt/m/scit}{}
+\DeclareFontShape{TS1}{yvt}{m}{si}{<->ssub * yvt/m/scsl}{}
+\DeclareFontShape{TS1}{yvt}{bx}{n}{<->ssub * yvt/b/n}{}
+\DeclareFontShape{TS1}{yvt}{bx}{sc}{<->ssub * yvt/b/sc}{}
+\DeclareFontShape{TS1}{yvt}{bx}{it}{<->ssub * yvt/b/it}{}
+\DeclareFontShape{TS1}{yvt}{b}{sl}{<->ssub * yvt/b/it}{}
+\DeclareFontShape{TS1}{yvt}{bx}{sl}{<->ssub * yvt/b/sl}{}
+\DeclareFontShape{TS1}{yvt}{bx}{scit}{<->ssub * yvt/b/scit}{}
+\DeclareFontShape{TS1}{yvt}{b}{scsl}{<->ssub * yvt/b/scit}{}
+\DeclareFontShape{TS1}{yvt}{bx}{scsl}{<->ssub * yvt/b/scsl}{}
+\DeclareFontShape{TS1}{yvt}{b}{si}{<->ssub * yvt/b/scsl}{}
+\DeclareFontShape{TS1}{yvt}{bx}{si}{<->ssub * yvt/b/si}{}
+\DeclareFontShape{TS1}{yvt}{eb}{sc}{<->ssub * yvt/eb/n}{}
+\DeclareFontShape{TS1}{yvt}{eb}{scit}{<->ssub * yvt/eb/sc}{}
+\DeclareFontShape{TS1}{yvt}{eb}{scsl}{<->ssub * yvt/eb/scit}{}
+\DeclareFontShape{TS1}{yvt}{eb}{si}{<->ssub * yvt/eb/scsl}{}
+\DeclareFontShape{TS1}{yvt}{eb}{sl}{<->ssub * yvt/eb/it}{}
+\DeclareFontShape{TS1}{yvt}{c}{sl}{<->ssub * yvt/c/it}{}
+\DeclareFontShape{TS1}{yvt}{c}{scsl}{<->ssub * yvt/c/scit}{}
+\DeclareFontShape{TS1}{yvt}{c}{si}{<->ssub * yvt/c/scsl}{}
+\DeclareFontShape{TS1}{yvt}{bc}{sl}{<->ssub * yvt/bc/it}{}
+\DeclareFontShape{TS1}{yvt}{bc}{scsl}{<->ssub * yvt/bc/scit}{}
+\DeclareFontShape{TS1}{yvt}{bc}{si}{<->ssub * yvt/bc/scsl}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/ts1yvtajw.fd b/Master/texmf-dist/tex/latex/venturisadf/ts1yvtajw.fd
new file mode 100644
index 00000000000..45a558ab84d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/ts1yvtajw.fd
@@ -0,0 +1,103 @@
+%Filename: ts1yvtajw.fd
+%Created by: tex yvt-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ts1yvtajw.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for TS1/yvtajw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvt@scale\endcsname\relax
+ \let\yvt@@scale\@empty
+\else
+ \edef\yvt@@scale{s*[\csname yvt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{yvtajw}{}
+
+\DeclareFontShape{TS1}{yvtajw}{m}{n}{
+ <-> \yvt@@scale yvtr8c
+}{}
+
+\DeclareFontShape{TS1}{yvtajw}{m}{sc}{
+ <-> \yvt@@scale yvtrc8c
+}{}
+
+\DeclareFontShape{TS1}{yvtajw}{m}{it}{
+ <-> \yvt@@scale yvtri8c
+}{}
+
+\DeclareFontShape{TS1}{yvtajw}{m}{scit}{
+ <-> \yvt@@scale yvtrci8c
+}{}
+
+\DeclareFontShape{TS1}{yvtajw}{b}{n}{
+ <-> \yvt@@scale yvtb8c
+}{}
+
+\DeclareFontShape{TS1}{yvtajw}{b}{sc}{
+ <-> \yvt@@scale yvtbc8c
+}{}
+
+\DeclareFontShape{TS1}{yvtajw}{b}{it}{
+ <-> \yvt@@scale yvtbi8c
+}{}
+
+\DeclareFontShape{TS1}{yvtajw}{b}{scit}{
+ <-> \yvt@@scale yvtbci8c
+}{}
+
+\DeclareFontShape{TS1}{yvtajw}{c}{n}{
+ <-> \yvt@@scale yvtr8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtajw}{c}{sc}{
+ <-> \yvt@@scale yvtrc8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtajw}{c}{it}{
+ <-> \yvt@@scale yvtri8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtajw}{c}{scit}{
+ <-> \yvt@@scale yvtrci8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtajw}{bc}{n}{
+ <-> \yvt@@scale yvtb8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtajw}{bc}{sc}{
+ <-> \yvt@@scale yvtbc8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtajw}{bc}{it}{
+ <-> \yvt@@scale yvtbi8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtajw}{bc}{scit}{
+ <-> \yvt@@scale yvtbci8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtajw}{m}{sl}{<->ssub * yvtajw/m/it}{}
+\DeclareFontShape{TS1}{yvtajw}{m}{scsl}{<->ssub * yvtajw/m/scit}{}
+\DeclareFontShape{TS1}{yvtajw}{m}{si}{<->ssub * yvtajw/m/scsl}{}
+\DeclareFontShape{TS1}{yvtajw}{bx}{n}{<->ssub * yvtajw/b/n}{}
+\DeclareFontShape{TS1}{yvtajw}{bx}{sc}{<->ssub * yvtajw/b/sc}{}
+\DeclareFontShape{TS1}{yvtajw}{bx}{it}{<->ssub * yvtajw/b/it}{}
+\DeclareFontShape{TS1}{yvtajw}{b}{sl}{<->ssub * yvtajw/b/it}{}
+\DeclareFontShape{TS1}{yvtajw}{bx}{sl}{<->ssub * yvtajw/b/sl}{}
+\DeclareFontShape{TS1}{yvtajw}{bx}{scit}{<->ssub * yvtajw/b/scit}{}
+\DeclareFontShape{TS1}{yvtajw}{b}{scsl}{<->ssub * yvtajw/b/scit}{}
+\DeclareFontShape{TS1}{yvtajw}{bx}{scsl}{<->ssub * yvtajw/b/scsl}{}
+\DeclareFontShape{TS1}{yvtajw}{b}{si}{<->ssub * yvtajw/b/scsl}{}
+\DeclareFontShape{TS1}{yvtajw}{bx}{si}{<->ssub * yvtajw/b/si}{}
+\DeclareFontShape{TS1}{yvtajw}{c}{sl}{<->ssub * yvtajw/c/it}{}
+\DeclareFontShape{TS1}{yvtajw}{c}{scsl}{<->ssub * yvtajw/c/scit}{}
+\DeclareFontShape{TS1}{yvtajw}{c}{si}{<->ssub * yvtajw/c/scsl}{}
+\DeclareFontShape{TS1}{yvtajw}{bc}{sl}{<->ssub * yvtajw/bc/it}{}
+\DeclareFontShape{TS1}{yvtajw}{bc}{scsl}{<->ssub * yvtajw/bc/scit}{}
+\DeclareFontShape{TS1}{yvtajw}{bc}{si}{<->ssub * yvtajw/bc/scsl}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/ts1yvtaw.fd b/Master/texmf-dist/tex/latex/venturisadf/ts1yvtaw.fd
new file mode 100644
index 00000000000..8736f1e3d50
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/ts1yvtaw.fd
@@ -0,0 +1,103 @@
+%Filename: ts1yvtaw.fd
+%Created by: tex yvt-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ts1yvtaw.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for TS1/yvtaw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvt@scale\endcsname\relax
+ \let\yvt@@scale\@empty
+\else
+ \edef\yvt@@scale{s*[\csname yvt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{yvtaw}{}
+
+\DeclareFontShape{TS1}{yvtaw}{m}{n}{
+ <-> \yvt@@scale yvtr8c
+}{}
+
+\DeclareFontShape{TS1}{yvtaw}{m}{sc}{
+ <-> \yvt@@scale yvtrc8c
+}{}
+
+\DeclareFontShape{TS1}{yvtaw}{m}{it}{
+ <-> \yvt@@scale yvtri8c
+}{}
+
+\DeclareFontShape{TS1}{yvtaw}{m}{scit}{
+ <-> \yvt@@scale yvtrci8c
+}{}
+
+\DeclareFontShape{TS1}{yvtaw}{b}{n}{
+ <-> \yvt@@scale yvtb8c
+}{}
+
+\DeclareFontShape{TS1}{yvtaw}{b}{sc}{
+ <-> \yvt@@scale yvtbc8c
+}{}
+
+\DeclareFontShape{TS1}{yvtaw}{b}{it}{
+ <-> \yvt@@scale yvtbi8c
+}{}
+
+\DeclareFontShape{TS1}{yvtaw}{b}{scit}{
+ <-> \yvt@@scale yvtbci8c
+}{}
+
+\DeclareFontShape{TS1}{yvtaw}{c}{n}{
+ <-> \yvt@@scale yvtr8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtaw}{c}{sc}{
+ <-> \yvt@@scale yvtrc8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtaw}{c}{it}{
+ <-> \yvt@@scale yvtri8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtaw}{c}{scit}{
+ <-> \yvt@@scale yvtrci8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtaw}{bc}{n}{
+ <-> \yvt@@scale yvtb8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtaw}{bc}{sc}{
+ <-> \yvt@@scale yvtbc8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtaw}{bc}{it}{
+ <-> \yvt@@scale yvtbi8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtaw}{bc}{scit}{
+ <-> \yvt@@scale yvtbci8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtaw}{m}{sl}{<->ssub * yvtaw/m/it}{}
+\DeclareFontShape{TS1}{yvtaw}{m}{scsl}{<->ssub * yvtaw/m/scit}{}
+\DeclareFontShape{TS1}{yvtaw}{m}{si}{<->ssub * yvtaw/m/scsl}{}
+\DeclareFontShape{TS1}{yvtaw}{bx}{n}{<->ssub * yvtaw/b/n}{}
+\DeclareFontShape{TS1}{yvtaw}{bx}{sc}{<->ssub * yvtaw/b/sc}{}
+\DeclareFontShape{TS1}{yvtaw}{bx}{it}{<->ssub * yvtaw/b/it}{}
+\DeclareFontShape{TS1}{yvtaw}{b}{sl}{<->ssub * yvtaw/b/it}{}
+\DeclareFontShape{TS1}{yvtaw}{bx}{sl}{<->ssub * yvtaw/b/sl}{}
+\DeclareFontShape{TS1}{yvtaw}{bx}{scit}{<->ssub * yvtaw/b/scit}{}
+\DeclareFontShape{TS1}{yvtaw}{b}{scsl}{<->ssub * yvtaw/b/scit}{}
+\DeclareFontShape{TS1}{yvtaw}{bx}{scsl}{<->ssub * yvtaw/b/scsl}{}
+\DeclareFontShape{TS1}{yvtaw}{b}{si}{<->ssub * yvtaw/b/scsl}{}
+\DeclareFontShape{TS1}{yvtaw}{bx}{si}{<->ssub * yvtaw/b/si}{}
+\DeclareFontShape{TS1}{yvtaw}{c}{sl}{<->ssub * yvtaw/c/it}{}
+\DeclareFontShape{TS1}{yvtaw}{c}{scsl}{<->ssub * yvtaw/c/scit}{}
+\DeclareFontShape{TS1}{yvtaw}{c}{si}{<->ssub * yvtaw/c/scsl}{}
+\DeclareFontShape{TS1}{yvtaw}{bc}{sl}{<->ssub * yvtaw/bc/it}{}
+\DeclareFontShape{TS1}{yvtaw}{bc}{scsl}{<->ssub * yvtaw/bc/scit}{}
+\DeclareFontShape{TS1}{yvtaw}{bc}{si}{<->ssub * yvtaw/bc/scsl}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/ts1yvtd.fd b/Master/texmf-dist/tex/latex/venturisadf/ts1yvtd.fd
new file mode 100644
index 00000000000..9880c3f23ea
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/ts1yvtd.fd
@@ -0,0 +1,97 @@
+%Filename: ts1yvtd.fd
+%Created by: tex yvt-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ts1yvtd.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for TS1/yvtd.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvt@scale\endcsname\relax
+ \let\yvt@@scale\@empty
+\else
+ \edef\yvt@@scale{s*[\csname yvt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{yvtd}{}
+
+\DeclareFontShape{TS1}{yvtd}{bc}{sc}{
+ <-> \yvt@@scale yvtbd8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtd}{m}{sc}{
+ <-> \yvt@@scale yvtbd8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtd}{c}{sc}{
+ <-> \yvt@@scale yvtbd8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtd}{b}{sc}{
+ <-> \yvt@@scale yvtbd8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtd}{eb}{sc}{
+ <-> \yvt@@scale yvtbd8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtd}{m}{ol}{
+ <-> \yvt@@scale yvtrdl8c
+}{}
+
+\DeclareFontShape{TS1}{yvtd}{c}{ol}{
+ <-> \yvt@@scale yvtrdl8c
+}{}
+
+\DeclareFontShape{TS1}{yvtd}{bc}{ol}{
+ <-> \yvt@@scale yvtrdl8c
+}{}
+
+\DeclareFontShape{TS1}{yvtd}{b}{ol}{
+ <-> \yvt@@scale yvtrdl8c
+}{}
+
+\DeclareFontShape{TS1}{yvtd}{c}{n}{
+ <-> \yvt@@scale yvtbd8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtd}{m}{n}{
+ <-> \yvt@@scale yvtbd8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtd}{bc}{n}{
+ <-> \yvt@@scale yvtbd8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtd}{b}{n}{
+ <-> \yvt@@scale yvtbd8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtd}{eb}{n}{
+ <-> \yvt@@scale yvtbd8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtd}{bc}{scit}{<->ssub * yvtd/bc/sc}{}
+\DeclareFontShape{TS1}{yvtd}{bc}{scsl}{<->ssub * yvtd/bc/scit}{}
+\DeclareFontShape{TS1}{yvtd}{bc}{si}{<->ssub * yvtd/bc/scsl}{}
+\DeclareFontShape{TS1}{yvtd}{m}{scit}{<->ssub * yvtd/m/sc}{}
+\DeclareFontShape{TS1}{yvtd}{m}{scsl}{<->ssub * yvtd/m/scit}{}
+\DeclareFontShape{TS1}{yvtd}{m}{si}{<->ssub * yvtd/m/scsl}{}
+\DeclareFontShape{TS1}{yvtd}{c}{scit}{<->ssub * yvtd/c/sc}{}
+\DeclareFontShape{TS1}{yvtd}{c}{scsl}{<->ssub * yvtd/c/scit}{}
+\DeclareFontShape{TS1}{yvtd}{c}{si}{<->ssub * yvtd/c/scsl}{}
+\DeclareFontShape{TS1}{yvtd}{bx}{sc}{<->ssub * yvtd/b/sc}{}
+\DeclareFontShape{TS1}{yvtd}{b}{scit}{<->ssub * yvtd/b/sc}{}
+\DeclareFontShape{TS1}{yvtd}{bx}{scit}{<->ssub * yvtd/b/scit}{}
+\DeclareFontShape{TS1}{yvtd}{b}{scsl}{<->ssub * yvtd/b/scit}{}
+\DeclareFontShape{TS1}{yvtd}{bx}{scsl}{<->ssub * yvtd/b/scsl}{}
+\DeclareFontShape{TS1}{yvtd}{b}{si}{<->ssub * yvtd/b/scsl}{}
+\DeclareFontShape{TS1}{yvtd}{bx}{si}{<->ssub * yvtd/b/si}{}
+\DeclareFontShape{TS1}{yvtd}{eb}{scit}{<->ssub * yvtd/eb/sc}{}
+\DeclareFontShape{TS1}{yvtd}{eb}{scsl}{<->ssub * yvtd/eb/scit}{}
+\DeclareFontShape{TS1}{yvtd}{eb}{si}{<->ssub * yvtd/eb/scsl}{}
+\DeclareFontShape{TS1}{yvtd}{bx}{ol}{<->ssub * yvtd/b/ol}{}
+\DeclareFontShape{TS1}{yvtd}{bx}{n}{<->ssub * yvtd/b/n}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/ts1yvtj.fd b/Master/texmf-dist/tex/latex/venturisadf/ts1yvtj.fd
new file mode 100644
index 00000000000..606b774992b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/ts1yvtj.fd
@@ -0,0 +1,103 @@
+%Filename: ts1yvtj.fd
+%Created by: tex yvt-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ts1yvtj.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for TS1/yvtj.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvt@scale\endcsname\relax
+ \let\yvt@@scale\@empty
+\else
+ \edef\yvt@@scale{s*[\csname yvt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{yvtj}{}
+
+\DeclareFontShape{TS1}{yvtj}{m}{n}{
+ <-> \yvt@@scale yvtr8c
+}{}
+
+\DeclareFontShape{TS1}{yvtj}{m}{sc}{
+ <-> \yvt@@scale yvtrc8c
+}{}
+
+\DeclareFontShape{TS1}{yvtj}{m}{it}{
+ <-> \yvt@@scale yvtri8c
+}{}
+
+\DeclareFontShape{TS1}{yvtj}{m}{scit}{
+ <-> \yvt@@scale yvtrci8c
+}{}
+
+\DeclareFontShape{TS1}{yvtj}{b}{n}{
+ <-> \yvt@@scale yvtb8c
+}{}
+
+\DeclareFontShape{TS1}{yvtj}{b}{sc}{
+ <-> \yvt@@scale yvtbc8c
+}{}
+
+\DeclareFontShape{TS1}{yvtj}{b}{it}{
+ <-> \yvt@@scale yvtbi8c
+}{}
+
+\DeclareFontShape{TS1}{yvtj}{b}{scit}{
+ <-> \yvt@@scale yvtbci8c
+}{}
+
+\DeclareFontShape{TS1}{yvtj}{c}{n}{
+ <-> \yvt@@scale yvtr8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtj}{c}{sc}{
+ <-> \yvt@@scale yvtrc8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtj}{c}{it}{
+ <-> \yvt@@scale yvtri8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtj}{c}{scit}{
+ <-> \yvt@@scale yvtrci8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtj}{bc}{n}{
+ <-> \yvt@@scale yvtb8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtj}{bc}{sc}{
+ <-> \yvt@@scale yvtbc8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtj}{bc}{it}{
+ <-> \yvt@@scale yvtbi8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtj}{bc}{scit}{
+ <-> \yvt@@scale yvtbci8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtj}{m}{sl}{<->ssub * yvtj/m/it}{}
+\DeclareFontShape{TS1}{yvtj}{m}{scsl}{<->ssub * yvtj/m/scit}{}
+\DeclareFontShape{TS1}{yvtj}{m}{si}{<->ssub * yvtj/m/scsl}{}
+\DeclareFontShape{TS1}{yvtj}{bx}{n}{<->ssub * yvtj/b/n}{}
+\DeclareFontShape{TS1}{yvtj}{bx}{sc}{<->ssub * yvtj/b/sc}{}
+\DeclareFontShape{TS1}{yvtj}{bx}{it}{<->ssub * yvtj/b/it}{}
+\DeclareFontShape{TS1}{yvtj}{b}{sl}{<->ssub * yvtj/b/it}{}
+\DeclareFontShape{TS1}{yvtj}{bx}{sl}{<->ssub * yvtj/b/sl}{}
+\DeclareFontShape{TS1}{yvtj}{bx}{scit}{<->ssub * yvtj/b/scit}{}
+\DeclareFontShape{TS1}{yvtj}{b}{scsl}{<->ssub * yvtj/b/scit}{}
+\DeclareFontShape{TS1}{yvtj}{bx}{scsl}{<->ssub * yvtj/b/scsl}{}
+\DeclareFontShape{TS1}{yvtj}{b}{si}{<->ssub * yvtj/b/scsl}{}
+\DeclareFontShape{TS1}{yvtj}{bx}{si}{<->ssub * yvtj/b/si}{}
+\DeclareFontShape{TS1}{yvtj}{c}{sl}{<->ssub * yvtj/c/it}{}
+\DeclareFontShape{TS1}{yvtj}{c}{scsl}{<->ssub * yvtj/c/scit}{}
+\DeclareFontShape{TS1}{yvtj}{c}{si}{<->ssub * yvtj/c/scsl}{}
+\DeclareFontShape{TS1}{yvtj}{bc}{sl}{<->ssub * yvtj/bc/it}{}
+\DeclareFontShape{TS1}{yvtj}{bc}{scsl}{<->ssub * yvtj/bc/scit}{}
+\DeclareFontShape{TS1}{yvtj}{bc}{si}{<->ssub * yvtj/bc/scsl}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/ts1yvtjw.fd b/Master/texmf-dist/tex/latex/venturisadf/ts1yvtjw.fd
new file mode 100644
index 00000000000..52b4279e32f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/ts1yvtjw.fd
@@ -0,0 +1,103 @@
+%Filename: ts1yvtjw.fd
+%Created by: tex yvt-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ts1yvtjw.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for TS1/yvtjw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvt@scale\endcsname\relax
+ \let\yvt@@scale\@empty
+\else
+ \edef\yvt@@scale{s*[\csname yvt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{yvtjw}{}
+
+\DeclareFontShape{TS1}{yvtjw}{m}{n}{
+ <-> \yvt@@scale yvtr8c
+}{}
+
+\DeclareFontShape{TS1}{yvtjw}{m}{sc}{
+ <-> \yvt@@scale yvtrc8c
+}{}
+
+\DeclareFontShape{TS1}{yvtjw}{m}{it}{
+ <-> \yvt@@scale yvtri8c
+}{}
+
+\DeclareFontShape{TS1}{yvtjw}{m}{scit}{
+ <-> \yvt@@scale yvtrci8c
+}{}
+
+\DeclareFontShape{TS1}{yvtjw}{b}{n}{
+ <-> \yvt@@scale yvtb8c
+}{}
+
+\DeclareFontShape{TS1}{yvtjw}{b}{sc}{
+ <-> \yvt@@scale yvtbc8c
+}{}
+
+\DeclareFontShape{TS1}{yvtjw}{b}{it}{
+ <-> \yvt@@scale yvtbi8c
+}{}
+
+\DeclareFontShape{TS1}{yvtjw}{b}{scit}{
+ <-> \yvt@@scale yvtbci8c
+}{}
+
+\DeclareFontShape{TS1}{yvtjw}{c}{n}{
+ <-> \yvt@@scale yvtr8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtjw}{c}{sc}{
+ <-> \yvt@@scale yvtrc8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtjw}{c}{it}{
+ <-> \yvt@@scale yvtri8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtjw}{c}{scit}{
+ <-> \yvt@@scale yvtrci8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtjw}{bc}{n}{
+ <-> \yvt@@scale yvtb8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtjw}{bc}{sc}{
+ <-> \yvt@@scale yvtbc8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtjw}{bc}{it}{
+ <-> \yvt@@scale yvtbi8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtjw}{bc}{scit}{
+ <-> \yvt@@scale yvtbci8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtjw}{m}{sl}{<->ssub * yvtjw/m/it}{}
+\DeclareFontShape{TS1}{yvtjw}{m}{scsl}{<->ssub * yvtjw/m/scit}{}
+\DeclareFontShape{TS1}{yvtjw}{m}{si}{<->ssub * yvtjw/m/scsl}{}
+\DeclareFontShape{TS1}{yvtjw}{bx}{n}{<->ssub * yvtjw/b/n}{}
+\DeclareFontShape{TS1}{yvtjw}{bx}{sc}{<->ssub * yvtjw/b/sc}{}
+\DeclareFontShape{TS1}{yvtjw}{bx}{it}{<->ssub * yvtjw/b/it}{}
+\DeclareFontShape{TS1}{yvtjw}{b}{sl}{<->ssub * yvtjw/b/it}{}
+\DeclareFontShape{TS1}{yvtjw}{bx}{sl}{<->ssub * yvtjw/b/sl}{}
+\DeclareFontShape{TS1}{yvtjw}{bx}{scit}{<->ssub * yvtjw/b/scit}{}
+\DeclareFontShape{TS1}{yvtjw}{b}{scsl}{<->ssub * yvtjw/b/scit}{}
+\DeclareFontShape{TS1}{yvtjw}{bx}{scsl}{<->ssub * yvtjw/b/scsl}{}
+\DeclareFontShape{TS1}{yvtjw}{b}{si}{<->ssub * yvtjw/b/scsl}{}
+\DeclareFontShape{TS1}{yvtjw}{bx}{si}{<->ssub * yvtjw/b/si}{}
+\DeclareFontShape{TS1}{yvtjw}{c}{sl}{<->ssub * yvtjw/c/it}{}
+\DeclareFontShape{TS1}{yvtjw}{c}{scsl}{<->ssub * yvtjw/c/scit}{}
+\DeclareFontShape{TS1}{yvtjw}{c}{si}{<->ssub * yvtjw/c/scsl}{}
+\DeclareFontShape{TS1}{yvtjw}{bc}{sl}{<->ssub * yvtjw/bc/it}{}
+\DeclareFontShape{TS1}{yvtjw}{bc}{scsl}{<->ssub * yvtjw/bc/scit}{}
+\DeclareFontShape{TS1}{yvtjw}{bc}{si}{<->ssub * yvtjw/bc/scsl}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/ts1yvtw.fd b/Master/texmf-dist/tex/latex/venturisadf/ts1yvtw.fd
new file mode 100644
index 00000000000..c24428ff5af
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/venturisadf/ts1yvtw.fd
@@ -0,0 +1,103 @@
+%Filename: ts1yvtw.fd
+%Created by: tex yvt-drv
+%Created using fontinst v1.933
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{ts1yvtw.fd}
+ [2024/08/17 Fontinst v1.933 font definitions for TS1/yvtw.]
+
+% addaswyd o t1phv.fd (dyddiad y ffeil fd: 2020-03-25)
+\expandafter\ifx\csname yvt@scale\endcsname\relax
+ \let\yvt@@scale\@empty
+\else
+ \edef\yvt@@scale{s*[\csname yvt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{yvtw}{}
+
+\DeclareFontShape{TS1}{yvtw}{m}{n}{
+ <-> \yvt@@scale yvtr8c
+}{}
+
+\DeclareFontShape{TS1}{yvtw}{m}{sc}{
+ <-> \yvt@@scale yvtrc8c
+}{}
+
+\DeclareFontShape{TS1}{yvtw}{m}{it}{
+ <-> \yvt@@scale yvtri8c
+}{}
+
+\DeclareFontShape{TS1}{yvtw}{m}{scit}{
+ <-> \yvt@@scale yvtrci8c
+}{}
+
+\DeclareFontShape{TS1}{yvtw}{b}{n}{
+ <-> \yvt@@scale yvtb8c
+}{}
+
+\DeclareFontShape{TS1}{yvtw}{b}{sc}{
+ <-> \yvt@@scale yvtbc8c
+}{}
+
+\DeclareFontShape{TS1}{yvtw}{b}{it}{
+ <-> \yvt@@scale yvtbi8c
+}{}
+
+\DeclareFontShape{TS1}{yvtw}{b}{scit}{
+ <-> \yvt@@scale yvtbci8c
+}{}
+
+\DeclareFontShape{TS1}{yvtw}{c}{n}{
+ <-> \yvt@@scale yvtr8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtw}{c}{sc}{
+ <-> \yvt@@scale yvtrc8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtw}{c}{it}{
+ <-> \yvt@@scale yvtri8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtw}{c}{scit}{
+ <-> \yvt@@scale yvtrci8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtw}{bc}{n}{
+ <-> \yvt@@scale yvtb8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtw}{bc}{sc}{
+ <-> \yvt@@scale yvtbc8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtw}{bc}{it}{
+ <-> \yvt@@scale yvtbi8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtw}{bc}{scit}{
+ <-> \yvt@@scale yvtbci8cc
+}{}
+
+\DeclareFontShape{TS1}{yvtw}{m}{sl}{<->ssub * yvtw/m/it}{}
+\DeclareFontShape{TS1}{yvtw}{m}{scsl}{<->ssub * yvtw/m/scit}{}
+\DeclareFontShape{TS1}{yvtw}{m}{si}{<->ssub * yvtw/m/scsl}{}
+\DeclareFontShape{TS1}{yvtw}{bx}{n}{<->ssub * yvtw/b/n}{}
+\DeclareFontShape{TS1}{yvtw}{bx}{sc}{<->ssub * yvtw/b/sc}{}
+\DeclareFontShape{TS1}{yvtw}{bx}{it}{<->ssub * yvtw/b/it}{}
+\DeclareFontShape{TS1}{yvtw}{b}{sl}{<->ssub * yvtw/b/it}{}
+\DeclareFontShape{TS1}{yvtw}{bx}{sl}{<->ssub * yvtw/b/sl}{}
+\DeclareFontShape{TS1}{yvtw}{bx}{scit}{<->ssub * yvtw/b/scit}{}
+\DeclareFontShape{TS1}{yvtw}{b}{scsl}{<->ssub * yvtw/b/scit}{}
+\DeclareFontShape{TS1}{yvtw}{bx}{scsl}{<->ssub * yvtw/b/scsl}{}
+\DeclareFontShape{TS1}{yvtw}{b}{si}{<->ssub * yvtw/b/scsl}{}
+\DeclareFontShape{TS1}{yvtw}{bx}{si}{<->ssub * yvtw/b/si}{}
+\DeclareFontShape{TS1}{yvtw}{c}{sl}{<->ssub * yvtw/c/it}{}
+\DeclareFontShape{TS1}{yvtw}{c}{scsl}{<->ssub * yvtw/c/scit}{}
+\DeclareFontShape{TS1}{yvtw}{c}{si}{<->ssub * yvtw/c/scsl}{}
+\DeclareFontShape{TS1}{yvtw}{bc}{sl}{<->ssub * yvtw/bc/it}{}
+\DeclareFontShape{TS1}{yvtw}{bc}{scsl}{<->ssub * yvtw/bc/scit}{}
+\DeclareFontShape{TS1}{yvtw}{bc}{si}{<->ssub * yvtw/bc/scsl}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisadf/venturis.sty b/Master/texmf-dist/tex/latex/venturisadf/venturis.sty
index d746f39c7cb..c6d46951e47 100644
--- a/Master/texmf-dist/tex/latex/venturisadf/venturis.sty
+++ b/Master/texmf-dist/tex/latex/venturisadf/venturis.sty
@@ -1,73 +1,105 @@
-%% Copyright 2010 Clea F. Rees
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Clea F. Rees.
-%
-% This work consists of all files listed in manifest.txt.
+%%
+%% This is file `venturis.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% venturis.dtx (with options: `sty')
+%% Copyright (C) 2008-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% venturisadf. You may however distribute the package venturisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{venturis}[2010/07/03 v1.005 VenturisADF PS]
-\RequirePackage{xkeyval}
+\RequirePackage{svn-prov}
+\ProvidesPackageSVN[\filebase.sty]{$Id: venturis.dtx 10366 2024-09-18 14:25:21Z cfrees $}[v2.0 \revinfo for VenturisADF PS 1.005]
+\DefineFileInfoSVN[venturis]
\RequirePackage[T1]{fontenc}
-\RequirePackage{textcomp}
-\RequirePackage{nfssext-cfr}
-%:boolkeys for roman osf/lf
-\define@boolkey{venturis.sty}[venturis@]{osf}[true]{%
- \ifventuris@osf
- \def\venturis@lfosf{j}%
- \else
- \def\venturis@lfosf{}%
- \fi}
-\define@boolkey{venturis.sty}[venturis@]{lf}[true]{%
- \ifventuris@lf
- \def\venturis@lfosf{}%
- \else
- \def\venturis@lfosf{j}%
- \fi}
-
-%:defaults to ensure everything is defined to something
-\ExecuteOptionsX{osf=true}
-
-%:options override defaults
-\ProcessOptionsX
-
-%:make Venturis default for roman text, implementing the relevant option
-\renewcommand{\rmdefault}{yvt\venturis@lfosf}
-%:make Venturis Sans default for sans-serif text
+\RequirePackage{nfssext-cfr}[2024/01/01]
+\IfFormatAtLeastTF {2020-02-02}{%
+ \DeclareEncodingSubset{TS1}{yvt}{1}%
+ \DeclareEncodingSubset{TS1}{yvtj}{1}%
+ \DeclareEncodingSubset{TS1}{yvtw}{1}%
+ \DeclareEncodingSubset{TS1}{yvtaw}{1}%
+ \DeclareEncodingSubset{TS1}{yvtjw}{1}%
+ \DeclareEncodingSubset{TS1}{yvtajw}{1}%
+ \DeclareEncodingSubset{TS1}{yvtd}{1}%
+ \DeclareEncodingSubset{TS1}{yv1}{1}%
+ \DeclareEncodingSubset{TS1}{yv1d}{1}%
+}{%
+ \RequirePackage{textcomp}}
+\UndeclareTextCommand{\textperthousand}{T1}
+\ExplSyntaxOn
+\keys_define:nn { venturis }
+{
+ lf .bool_set_inverse:N = \l__venturis_osf_bool,
+ lf .default:n = true,
+ osf .bool_set:N = \l__venturis_osf_bool,
+ osf .default:n = true,
+ osf .initial:n = true,
+ scale ~ rm .tl_set:N = \yvt@scale,
+ scale ~ rm .initial:V = \@empty,
+ scale ~ sf .tl_set:N = \yvi@scale,
+ scale ~ sf .initial:V = \@empty,
+ scale .code:n = {
+ \gdef\yvt@scale{#1}
+ \gdef\yvi@scale{#1}
+ },
+}
+\ProcessKeyOptions[venturis]
+\bool_if:NTF \l__venturis_osf_bool
+{
+ \cs_set:Npn \rmdefault { yvtj }
+}{
+ \cs_set:Npn \rmdefault { yvt }
+}
+\ExplSyntaxOff
\renewcommand{\sfdefault}{yv1}
-
-%:introduce special titling commands
\DeclareRobustCommand{\vtstyle}[1][]{%
- \edef\vt@shape{#1}%
- \def\tempo{ol}%
- \def\temps{yv1}%
- \def\tempr{yvt}%
- \not@math@alphabet\vtstyle\relax
-%:because the titling fonts have limited availability, don't use the \tistyle set-up, but choose the family explicitly in case we're currently using sans or typewriter - note, though, that some are also called as small-caps commands in certain sans-serif variants (though the seriffed variant seems not to match anything...)
- \ifx\vt@shape\tempo
- \fontfamily{yvtd}\fontshape{ol}\selectfont
- \else
- \edef\tempf{\expandafter\exfs@get@base\f@family\@nil}%
- \ifx\tempf\temps
- \fontfamily{yv1d}\selectfont
- \else
- \ifx\tempf\tempr
- \fontfamily{yvtd}\selectfont
- \else
- \PackageWarning{venturis.sty}{\tempf is unknown. This command requires that yv1 or yvt be active in order to determine whether serif or sans-serif titling is required. I am going to guess that you want serif titling. If this is wrong, be sure to activate yv1 first or copy and adapt the styling command from venturis.sty.}%
- \fontfamily{yvtd}\selectfont
- \fi
- \fi
- \fi
- }
+\edef\vt@shape{#1}%
+\def\tempo{ol}%
+\def\temps{yv1}%
+\def\tempr{yvt}%
+\not@math@alphabet\vtstyle\relax
+\ifx\vt@shape\tempo
+\fontfamily{yvtd}\fontshape{ol}\selectfont
+\else
+\edef\tempf{\expandafter\exfs@get@base\f@family\@nil}%
+\ifx\tempf\temps
+\fontfamily{yv1d}\selectfont
+\else
+\ifx\tempf\tempr
+\fontfamily{yvtd}\selectfont
+\else
+\PackageWarning{venturis.sty}{%
+ \tempf is unknown.
+ This command requires that yv1 or yvt be active in order to determine whether serif or sans-serif titling is required.
+ I am going to guess that you want serif titling. If this is wrong, be sure to activate yv1 first or copy and adapt the styling command from venturis.sty.%
+ }%
+\fontfamily{yvtd}\selectfont
+\fi
+\fi
+\fi
+}
\DeclareTextFontCommand{\textvt}{\vtstyle}
\DeclareTextFontCommand{\textvtl}{\vtstyle[ol]}
+%% end venturis.sty
\endinput
+%%
+%% End of file `venturis.sty'.
diff --git a/Master/texmf-dist/tex/latex/venturisadf/venturis2.sty b/Master/texmf-dist/tex/latex/venturisadf/venturis2.sty
index e28fcbaef45..0bf9ebdec49 100644
--- a/Master/texmf-dist/tex/latex/venturisadf/venturis2.sty
+++ b/Master/texmf-dist/tex/latex/venturisadf/venturis2.sty
@@ -1,50 +1,89 @@
-%% Copyright 2010 Clea F. Rees
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Clea F. Rees.
-%
-% This work consists of all files listed in manifest.txt.
+%%
+%% This is file `venturis2.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% venturis2.dtx (with options: `sty')
+%% Copyright (C) 2008-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% venturisadf. You may however distribute the package venturisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{venturis2}[2010/07/03 v1.005 VenturisADFNo2 PS]
+\RequirePackage{svn-prov}
+\ProvidesPackageSVN[\filebase.sty]{$Id: venturis2.dtx 10366 2024-09-18 14:25:21Z cfrees $}[v2.0 \revinfo for VenturisADFNo2 PS 1.005]
+\DefineFileInfoSVN[venturisii]
\RequirePackage[T1]{fontenc}
-\RequirePackage{textcomp}
-\RequirePackage{nfssext-cfr}
+\RequirePackage{nfssext-cfr}[2024/01/01]
+\IfFormatAtLeastTF {2020-02-02}{%
+ \DeclareEncodingSubset{TS1}{yv2}{1}%
+ \DeclareEncodingSubset{TS1}{yv3}{1}%
+}{%
+ \RequirePackage{textcomp}}
+\UndeclareTextCommand{\textperthousand}{T1}
+\ExplSyntaxOn
+\keys_define:nn { venturis ii }
+{
+ scale ~ rm .tl_set:N = \yvii@scale,
+ scale ~ rm .initial:V = \@empty,
+ scale ~ sf .tl_set:N = \yviii@scale,
+ scale ~ sf .initial:V = \@empty,
+ scale .code:n = {
+ \gdef\yvii@scale{#1}
+ \gdef\yviii@scale{#1}
+ },
+}
+\ProcessKeyOptions[venturis ii]
+\ExplSyntaxOff
\renewcommand{\rmdefault}{yv2}
\renewcommand{\sfdefault}{yv3}
-%:introduce special titling commands
\DeclareRobustCommand{\vtstyle}[1][]{%
- \edef\vt@shape{#1}%
- \def\tempo{ol}%
- \def\temps{yv3}%
- \def\tempr{yv2}%
- \not@math@alphabet\vtstyle\relax
-%:because the titling fonts have limited availability, don't use the \tistyle set-up which won't work with venturis2 in any case, but choose the family explicitly in case we're currently using sans or typewriter
+\edef\vt@shape{#1}%
+\def\tempo{ol}%
+\def\temps{yv3}%
+\def\tempr{yv2}%
+\not@math@alphabet\vtstyle\relax
\ifx\vt@shape\tempo
- \fontfamily{yvtd}\fontshape{ol}\selectfont
- \else
- \edef\tempf{\expandafter\exfs@get@base\f@family\@nil}%
- \ifx\tempf\temps
- \fontfamily{yv1d}\selectfont
- \else
- \ifx\tempf\tempr
- \fontfamily{yvtd}\selectfont
- \else
- \PackageWarning{venturis.sty}{\tempf is unknown. This command requires that yv2 or yv3 be active in order to determine whether serif or sans-serif titling is required. I am going to guess that you want serif titling. If this is wrong, be sure to activate yv3 first or copy and adapt the styling command from venturis.sty.}%
- \fontfamily{yvtd}\selectfont
- \fi
- \fi
- \fi
- }
+\fontfamily{yvtd}\fontshape{ol}\selectfont
+\else
+\edef\tempf{\expandafter\exfs@get@base\f@family\@nil}%
+\ifx\tempf\temps
+\fontfamily{yv1d}\selectfont
+\else
+\ifx\tempf\tempr
+\fontfamily{yvtd}\selectfont
+\else
+\PackageWarning{venturis.sty}{%
+ \tempf is unknown.
+ This command requires that yv2 or yv3 be active in order to determine whether serif or sans-serif titling is required.
+ I am going to guess that you want serif titling.
+ If this is wrong, be sure to activate yv3 first or copy and adapt the styling command from venturis.sty.%
+ }%
+\fontfamily{yvtd}\selectfont
+\fi
+\fi
+\fi
+}
\DeclareTextFontCommand{\textvt}{\vtstyle}
\DeclareTextFontCommand{\textvtl}{\vtstyle[ol]}
-
+%% end venturis2.sty
\endinput
+%%
+%% End of file `venturis2.sty'.
diff --git a/Master/texmf-dist/tex/latex/venturisadf/venturisold.sty b/Master/texmf-dist/tex/latex/venturisadf/venturisold.sty
index 0fa213688d7..cabac96cba2 100644
--- a/Master/texmf-dist/tex/latex/venturisadf/venturisold.sty
+++ b/Master/texmf-dist/tex/latex/venturisadf/venturisold.sty
@@ -1,30 +1,60 @@
-%% Copyright 2010 Clea F. Rees
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Clea F. Rees.
-%
-% This work consists of all files listed in manifest.txt.
+%%
+%% This is file `venturisold.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% venturisold.dtx (with options: `sty')
+%% Copyright (C) 2008-2024 Clea F. Rees.
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% 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.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Clea F. Rees.
+%%
+%% This file may only be distributed together with a copy of the package
+%% venturisadf. You may however distribute the package venturisadf without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{venturisold}[2010/07/03 v1.005 VenturisOldADF PS]
+\RequirePackage{svn-prov}
+\ProvidesPackageSVN[\filebase.sty]{$Id: venturisold.dtx 10366 2024-09-18 14:25:21Z cfrees $}[v2.0 \revinfo (for VenturisOldADF PS 1.005)]
+\DefineFileInfoSVN[venturisold]
\RequirePackage[T1]{fontenc}
-\RequirePackage{textcomp}
-\RequirePackage{nfssext-cfr}
-%:Make Venturis Old default for roman text
+\RequirePackage{nfssext-cfr}[2024/01/01]
+\IfFormatAtLeastTF {2020-02-02}{%
+ \DeclareEncodingSubset{TS1}{yvo}{1}%
+ \DeclareEncodingSubset{TS1}{yvoa}{1}%
+ \DeclareEncodingSubset{TS1}{yvod}{1}%
+ \DeclareEncodingSubset{TS1}{yvoad}{1}%
+}{%
+ \RequirePackage{textcomp}}
+\UndeclareTextCommand{\textperthousand}{T1}
+\ExplSyntaxOn
+\keys_define:nn { venturisold }
+{
+ scale .tl_set:N = \yvo@scale,
+ scale .initial:V = \@empty,
+}
+\ProcessKeyOptions[venturisold]
+\ExplSyntaxOff
\renewcommand{\rmdefault}{yvo}
-%:introduce special titling commands
-\DeclareRobustCommand{\vtstyle}[1][]{% allow an optional argument for consistency with venturis.sty
- \not@math@alphabet\vtstyle\relax
- \fontfamily{yvod}\selectfont}
+\DeclareRobustCommand{\vtstyle}[1][]{%
+\not@math@alphabet\vtstyle\relax
+\fontfamily{yvod}\selectfont}
\DeclareTextFontCommand{\textvt}{\vtstyle}
\DeclareTextFontCommand{\textvtl}{\vtstyle}
+%% end venturis.sty
\endinput
-%% end venturisold.sty
+%%
+%% End of file `venturisold.sty'.
diff --git a/Master/texmf-dist/tex/latex/venturisold/t1yvoad.fd b/Master/texmf-dist/tex/latex/venturisold/t1yvoad.fd
deleted file mode 100644
index 7206dc69122..00000000000
--- a/Master/texmf-dist/tex/latex/venturisold/t1yvoad.fd
+++ /dev/null
@@ -1,31 +0,0 @@
-%Filename: t1yvoad.fd
-%Created by: tex yvo-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{t1yvoad.fd}
- [2010/07/03 Fontinst v1.933 font definitions for T1/yvoad.]
-
-\DeclareFontFamily{T1}{yvoad}{}
-
-\DeclareFontShape{T1}{yvoad}{db}{sc}{
- <-> yvodd8t
-}{}
-
-\DeclareFontShape{T1}{yvoad}{db}{n}{
- <-> yvodd8t
-}{}
-
-\DeclareFontShape{T1}{yvoad}{b}{sc}{<->ssub * yvoad/db/sc}{}
-\DeclareFontShape{T1}{yvoad}{bx}{sc}{<->ssub * yvoad/b/sc}{}
-\DeclareFontShape{T1}{yvoad}{m}{sc}{<->ssub * yvoad/bx/sc}{}
-\DeclareFontShape{T1}{yvoad}{db}{si}{<->ssub * yvoad/db/sc}{}
-\DeclareFontShape{T1}{yvoad}{b}{si}{<->ssub * yvoad/db/si}{}
-\DeclareFontShape{T1}{yvoad}{bx}{si}{<->ssub * yvoad/b/si}{}
-\DeclareFontShape{T1}{yvoad}{m}{si}{<->ssub * yvoad/bx/si}{}
-\DeclareFontShape{T1}{yvoad}{b}{n}{<->ssub * yvoad/db/n}{}
-\DeclareFontShape{T1}{yvoad}{bx}{n}{<->ssub * yvoad/b/n}{}
-\DeclareFontShape{T1}{yvoad}{m}{n}{<->ssub * yvoad/bx/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisold/t1yvod.fd b/Master/texmf-dist/tex/latex/venturisold/t1yvod.fd
deleted file mode 100644
index 1220e211a1b..00000000000
--- a/Master/texmf-dist/tex/latex/venturisold/t1yvod.fd
+++ /dev/null
@@ -1,31 +0,0 @@
-%Filename: t1yvod.fd
-%Created by: tex yvo-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{t1yvod.fd}
- [2010/07/03 Fontinst v1.933 font definitions for T1/yvod.]
-
-\DeclareFontFamily{T1}{yvod}{}
-
-\DeclareFontShape{T1}{yvod}{db}{sc}{
- <-> yvodd8t
-}{}
-
-\DeclareFontShape{T1}{yvod}{db}{n}{
- <-> yvodd8t
-}{}
-
-\DeclareFontShape{T1}{yvod}{b}{sc}{<->ssub * yvod/db/sc}{}
-\DeclareFontShape{T1}{yvod}{bx}{sc}{<->ssub * yvod/b/sc}{}
-\DeclareFontShape{T1}{yvod}{m}{sc}{<->ssub * yvod/bx/sc}{}
-\DeclareFontShape{T1}{yvod}{db}{si}{<->ssub * yvod/db/sc}{}
-\DeclareFontShape{T1}{yvod}{b}{si}{<->ssub * yvod/db/si}{}
-\DeclareFontShape{T1}{yvod}{bx}{si}{<->ssub * yvod/b/si}{}
-\DeclareFontShape{T1}{yvod}{m}{si}{<->ssub * yvod/bx/si}{}
-\DeclareFontShape{T1}{yvod}{b}{n}{<->ssub * yvod/db/n}{}
-\DeclareFontShape{T1}{yvod}{bx}{n}{<->ssub * yvod/b/n}{}
-\DeclareFontShape{T1}{yvod}{m}{n}{<->ssub * yvod/bx/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisold/ts1yvoad.fd b/Master/texmf-dist/tex/latex/venturisold/ts1yvoad.fd
deleted file mode 100644
index 8b9b3060588..00000000000
--- a/Master/texmf-dist/tex/latex/venturisold/ts1yvoad.fd
+++ /dev/null
@@ -1,31 +0,0 @@
-%Filename: ts1yvoad.fd
-%Created by: tex yvo-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{ts1yvoad.fd}
- [2010/07/03 Fontinst v1.933 font definitions for TS1/yvoad.]
-
-\DeclareFontFamily{TS1}{yvoad}{}
-
-\DeclareFontShape{TS1}{yvoad}{db}{sc}{
- <-> yvodd8c
-}{}
-
-\DeclareFontShape{TS1}{yvoad}{db}{n}{
- <-> yvodd8c
-}{}
-
-\DeclareFontShape{TS1}{yvoad}{b}{sc}{<->ssub * yvoad/db/sc}{}
-\DeclareFontShape{TS1}{yvoad}{bx}{sc}{<->ssub * yvoad/b/sc}{}
-\DeclareFontShape{TS1}{yvoad}{m}{sc}{<->ssub * yvoad/bx/sc}{}
-\DeclareFontShape{TS1}{yvoad}{db}{si}{<->ssub * yvoad/db/sc}{}
-\DeclareFontShape{TS1}{yvoad}{b}{si}{<->ssub * yvoad/db/si}{}
-\DeclareFontShape{TS1}{yvoad}{bx}{si}{<->ssub * yvoad/b/si}{}
-\DeclareFontShape{TS1}{yvoad}{m}{si}{<->ssub * yvoad/bx/si}{}
-\DeclareFontShape{TS1}{yvoad}{b}{n}{<->ssub * yvoad/db/n}{}
-\DeclareFontShape{TS1}{yvoad}{bx}{n}{<->ssub * yvoad/b/n}{}
-\DeclareFontShape{TS1}{yvoad}{m}{n}{<->ssub * yvoad/bx/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturisold/ts1yvod.fd b/Master/texmf-dist/tex/latex/venturisold/ts1yvod.fd
deleted file mode 100644
index 3fb6f9dd57b..00000000000
--- a/Master/texmf-dist/tex/latex/venturisold/ts1yvod.fd
+++ /dev/null
@@ -1,31 +0,0 @@
-%Filename: ts1yvod.fd
-%Created by: tex yvo-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{ts1yvod.fd}
- [2010/07/03 Fontinst v1.933 font definitions for TS1/yvod.]
-
-\DeclareFontFamily{TS1}{yvod}{}
-
-\DeclareFontShape{TS1}{yvod}{db}{sc}{
- <-> yvodd8c
-}{}
-
-\DeclareFontShape{TS1}{yvod}{db}{n}{
- <-> yvodd8c
-}{}
-
-\DeclareFontShape{TS1}{yvod}{b}{sc}{<->ssub * yvod/db/sc}{}
-\DeclareFontShape{TS1}{yvod}{bx}{sc}{<->ssub * yvod/b/sc}{}
-\DeclareFontShape{TS1}{yvod}{m}{sc}{<->ssub * yvod/bx/sc}{}
-\DeclareFontShape{TS1}{yvod}{db}{si}{<->ssub * yvod/db/sc}{}
-\DeclareFontShape{TS1}{yvod}{b}{si}{<->ssub * yvod/db/si}{}
-\DeclareFontShape{TS1}{yvod}{bx}{si}{<->ssub * yvod/b/si}{}
-\DeclareFontShape{TS1}{yvod}{m}{si}{<->ssub * yvod/bx/si}{}
-\DeclareFontShape{TS1}{yvod}{b}{n}{<->ssub * yvod/db/n}{}
-\DeclareFontShape{TS1}{yvod}{bx}{n}{<->ssub * yvod/b/n}{}
-\DeclareFontShape{TS1}{yvod}{m}{n}{<->ssub * yvod/bx/n}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturissans/t1yv1.fd b/Master/texmf-dist/tex/latex/venturissans/t1yv1.fd
deleted file mode 100644
index b6d4ca743a4..00000000000
--- a/Master/texmf-dist/tex/latex/venturissans/t1yv1.fd
+++ /dev/null
@@ -1,134 +0,0 @@
-%Filename: t1yv1.fd
-%Created by: tex yv1-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{t1yv1.fd}
- [2010/07/03 Fontinst v1.933 font definitions for T1/yv1.]
-
-\DeclareFontFamily{T1}{yv1}{}
-
-\DeclareFontShape{T1}{yv1}{m}{n}{
- <-> yv1r8t
-}{}
-
-\DeclareFontShape{T1}{yv1}{m}{it}{
- <-> yv1ri8t
-}{}
-
-\DeclareFontShape{T1}{yv1}{b}{n}{
- <-> yv1b8t
-}{}
-
-\DeclareFontShape{T1}{yv1}{b}{it}{
- <-> yv1bi8t
-}{}
-
-\DeclareFontShape{T1}{yv1}{eb}{n}{
- <-> yv1h8t
-}{}
-
-\DeclareFontShape{T1}{yv1}{eb}{sl}{
- <-> yv1ho8t
-}{}
-
-\DeclareFontShape{T1}{yv1}{eb}{it}{
- <-> yv1ho8t
-}{}
-
-\DeclareFontShape{T1}{yv1}{mc}{n}{
- <-> yv1r8tc
-}{}
-
-\DeclareFontShape{T1}{yv1}{mc}{it}{
- <-> yv1ri8tc
-}{}
-
-\DeclareFontShape{T1}{yv1}{bc}{n}{
- <-> yv1b8tc
-}{}
-
-\DeclareFontShape{T1}{yv1}{bc}{it}{
- <-> yv1bi8tc
-}{}
-
-\DeclareFontShape{T1}{yv1}{mx}{n}{
- <-> yv1r8tx
-}{}
-
-\DeclareFontShape{T1}{yv1}{mx}{it}{
- <-> yv1ri8tx
-}{}
-
-\DeclareFontShape{T1}{yv1}{bx}{n}{
- <-> yv1b8tx
-}{}
-
-\DeclareFontShape{T1}{yv1}{bx}{sc}{
- <-> yv1b8tx
-}{}
-
-\DeclareFontShape{T1}{yv1}{bx}{it}{
- <-> yv1bi8tx
-}{}
-
-\DeclareFontShape{T1}{yv1}{bx}{sl}{
- <-> yv1bi8tx
-}{}
-
-\DeclareFontShape{T1}{yv1}{bx}{si}{
- <-> yv1b8tx
-}{}
-
-\DeclareFontShape{T1}{yv1}{l}{n}{
- <-> yv1l8t
-}{}
-
-\DeclareFontShape{T1}{yv1}{l}{it}{
- <-> yv1li8t
-}{}
-
-\DeclareFontShape{T1}{yv1}{db}{n}{
- <-> yv1d8t
-}{}
-
-\DeclareFontShape{T1}{yv1}{db}{it}{
- <-> yv1di8t
-}{}
-
-\DeclareFontShape{T1}{yv1}{m}{sc}{<->ssub * yv1/m/n}{}
-\DeclareFontShape{T1}{yv1}{m}{si}{<->ssub * yv1/m/sc}{}
-\DeclareFontShape{T1}{yv1}{m}{sl}{<->ssub * yv1/m/it}{}
-\DeclareFontShape{T1}{yv1}{b}{sc}{<->ssub * yv1/b/n}{}
-\DeclareFontShape{T1}{yv1}{b}{si}{<->ssub * yv1/b/sc}{}
-\DeclareFontShape{T1}{yv1}{b}{sl}{<->ssub * yv1/b/it}{}
-\DeclareFontShape{T1}{yv1}{eb}{sc}{<->ssub * yv1/eb/n}{}
-\DeclareFontShape{T1}{yv1}{eb}{si}{<->ssub * yv1/eb/sc}{}
-\DeclareFontShape{T1}{yv1}{muc}{n}{<->ssub * yv1/mc/n}{}
-\DeclareFontShape{T1}{yv1}{mc}{sc}{<->ssub * yv1/mc/n}{}
-\DeclareFontShape{T1}{yv1}{muc}{sc}{<->ssub * yv1/mc/sc}{}
-\DeclareFontShape{T1}{yv1}{mc}{si}{<->ssub * yv1/mc/sc}{}
-\DeclareFontShape{T1}{yv1}{muc}{si}{<->ssub * yv1/mc/si}{}
-\DeclareFontShape{T1}{yv1}{muc}{it}{<->ssub * yv1/mc/it}{}
-\DeclareFontShape{T1}{yv1}{mc}{sl}{<->ssub * yv1/mc/it}{}
-\DeclareFontShape{T1}{yv1}{muc}{sl}{<->ssub * yv1/mc/sl}{}
-\DeclareFontShape{T1}{yv1}{bc}{sc}{<->ssub * yv1/bc/n}{}
-\DeclareFontShape{T1}{yv1}{bc}{si}{<->ssub * yv1/bc/sc}{}
-\DeclareFontShape{T1}{yv1}{bc}{sl}{<->ssub * yv1/bc/it}{}
-\DeclareFontShape{T1}{yv1}{mx}{sc}{<->ssub * yv1/mx/n}{}
-\DeclareFontShape{T1}{yv1}{mx}{si}{<->ssub * yv1/mx/sc}{}
-\DeclareFontShape{T1}{yv1}{mx}{sl}{<->ssub * yv1/mx/it}{}
-\DeclareFontShape{T1}{yv1}{l}{sc}{<->ssub * yv1/l/n}{}
-\DeclareFontShape{T1}{yv1}{l}{si}{<->ssub * yv1/l/sc}{}
-\DeclareFontShape{T1}{yv1}{l}{sl}{<->ssub * yv1/l/it}{}
-\DeclareFontShape{T1}{yv1}{dbuc}{n}{<->ssub * yv1/db/n}{}
-\DeclareFontShape{T1}{yv1}{db}{sc}{<->ssub * yv1/db/n}{}
-\DeclareFontShape{T1}{yv1}{dbuc}{sc}{<->ssub * yv1/db/sc}{}
-\DeclareFontShape{T1}{yv1}{db}{si}{<->ssub * yv1/db/sc}{}
-\DeclareFontShape{T1}{yv1}{dbuc}{si}{<->ssub * yv1/db/si}{}
-\DeclareFontShape{T1}{yv1}{dbuc}{it}{<->ssub * yv1/db/it}{}
-\DeclareFontShape{T1}{yv1}{db}{sl}{<->ssub * yv1/db/it}{}
-\DeclareFontShape{T1}{yv1}{dbuc}{sl}{<->ssub * yv1/db/sl}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturissans/t1yv1d.fd b/Master/texmf-dist/tex/latex/venturissans/t1yv1d.fd
deleted file mode 100644
index fc0b0dc3d39..00000000000
--- a/Master/texmf-dist/tex/latex/venturissans/t1yv1d.fd
+++ /dev/null
@@ -1,106 +0,0 @@
-%Filename: t1yv1d.fd
-%Created by: tex yv1-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{t1yv1d.fd}
- [2010/07/03 Fontinst v1.933 font definitions for T1/yv1d.]
-
-\DeclareFontFamily{T1}{yv1d}{}
-
-\DeclareFontShape{T1}{yv1d}{b}{sc}{
- <-> yv1bd8t
-}{}
-
-\DeclareFontShape{T1}{yv1d}{eb}{sc}{
- <-> yv1bd8t
-}{}
-
-\DeclareFontShape{T1}{yv1d}{bc}{sc}{
- <-> yv1bd8t
-}{}
-
-\DeclareFontShape{T1}{yv1d}{db}{sc}{
- <-> yv1bd8t
-}{}
-
-\DeclareFontShape{T1}{yv1d}{b}{n}{
- <-> yv1bd8t
-}{}
-
-\DeclareFontShape{T1}{yv1d}{eb}{n}{
- <-> yv1bd8t
-}{}
-
-\DeclareFontShape{T1}{yv1d}{bc}{n}{
- <-> yv1bd8t
-}{}
-
-\DeclareFontShape{T1}{yv1d}{db}{n}{
- <-> yv1bd8t
-}{}
-
-\DeclareFontShape{T1}{yv1d}{dbuc}{sc}{
- <-> yv1dd8tu
-}{}
-
-\DeclareFontShape{T1}{yv1d}{mx}{sc}{
- <-> yv1dd8tu
-}{}
-
-\DeclareFontShape{T1}{yv1d}{m}{sc}{
- <-> yv1dd8tu
-}{}
-
-\DeclareFontShape{T1}{yv1d}{mc}{sc}{
- <-> yv1dd8tu
-}{}
-
-\DeclareFontShape{T1}{yv1d}{muc}{sc}{
- <-> yv1dd8tu
-}{}
-
-\DeclareFontShape{T1}{yv1d}{l}{sc}{
- <-> yv1dd8tu
-}{}
-
-\DeclareFontShape{T1}{yv1d}{dbuc}{n}{
- <-> yv1dd8tu
-}{}
-
-\DeclareFontShape{T1}{yv1d}{mx}{n}{
- <-> yv1dd8tu
-}{}
-
-\DeclareFontShape{T1}{yv1d}{m}{n}{
- <-> yv1dd8tu
-}{}
-
-\DeclareFontShape{T1}{yv1d}{mc}{n}{
- <-> yv1dd8tu
-}{}
-
-\DeclareFontShape{T1}{yv1d}{muc}{n}{
- <-> yv1dd8tu
-}{}
-
-\DeclareFontShape{T1}{yv1d}{l}{n}{
- <-> yv1dd8tu
-}{}
-
-\DeclareFontShape{T1}{yv1d}{bx}{sc}{<->ssub * yv1d/b/sc}{}
-\DeclareFontShape{T1}{yv1d}{b}{si}{<->ssub * yv1d/b/sc}{}
-\DeclareFontShape{T1}{yv1d}{bx}{si}{<->ssub * yv1d/b/si}{}
-\DeclareFontShape{T1}{yv1d}{eb}{si}{<->ssub * yv1d/eb/sc}{}
-\DeclareFontShape{T1}{yv1d}{bc}{si}{<->ssub * yv1d/bc/sc}{}
-\DeclareFontShape{T1}{yv1d}{db}{si}{<->ssub * yv1d/db/sc}{}
-\DeclareFontShape{T1}{yv1d}{dbuc}{si}{<->ssub * yv1d/db/si}{}
-\DeclareFontShape{T1}{yv1d}{bx}{n}{<->ssub * yv1d/b/n}{}
-\DeclareFontShape{T1}{yv1d}{mx}{si}{<->ssub * yv1d/mx/sc}{}
-\DeclareFontShape{T1}{yv1d}{m}{si}{<->ssub * yv1d/m/sc}{}
-\DeclareFontShape{T1}{yv1d}{mc}{si}{<->ssub * yv1d/mc/sc}{}
-\DeclareFontShape{T1}{yv1d}{muc}{si}{<->ssub * yv1d/mc/si}{}
-\DeclareFontShape{T1}{yv1d}{l}{si}{<->ssub * yv1d/l/sc}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturissans/ts1yv1.fd b/Master/texmf-dist/tex/latex/venturissans/ts1yv1.fd
deleted file mode 100644
index 95705d063a5..00000000000
--- a/Master/texmf-dist/tex/latex/venturissans/ts1yv1.fd
+++ /dev/null
@@ -1,134 +0,0 @@
-%Filename: ts1yv1.fd
-%Created by: tex yv1-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{ts1yv1.fd}
- [2010/07/03 Fontinst v1.933 font definitions for TS1/yv1.]
-
-\DeclareFontFamily{TS1}{yv1}{}
-
-\DeclareFontShape{TS1}{yv1}{m}{n}{
- <-> yv1r8c
-}{}
-
-\DeclareFontShape{TS1}{yv1}{m}{it}{
- <-> yv1ri8c
-}{}
-
-\DeclareFontShape{TS1}{yv1}{b}{n}{
- <-> yv1b8c
-}{}
-
-\DeclareFontShape{TS1}{yv1}{b}{it}{
- <-> yv1bi8c
-}{}
-
-\DeclareFontShape{TS1}{yv1}{eb}{n}{
- <-> yv1h8c
-}{}
-
-\DeclareFontShape{TS1}{yv1}{eb}{sl}{
- <-> yv1ho8c
-}{}
-
-\DeclareFontShape{TS1}{yv1}{eb}{it}{
- <-> yv1ho8c
-}{}
-
-\DeclareFontShape{TS1}{yv1}{mc}{n}{
- <-> yv1r8cc
-}{}
-
-\DeclareFontShape{TS1}{yv1}{mc}{it}{
- <-> yv1ri8cc
-}{}
-
-\DeclareFontShape{TS1}{yv1}{bc}{n}{
- <-> yv1b8cc
-}{}
-
-\DeclareFontShape{TS1}{yv1}{bc}{it}{
- <-> yv1bi8cc
-}{}
-
-\DeclareFontShape{TS1}{yv1}{mx}{n}{
- <-> yv1r8cx
-}{}
-
-\DeclareFontShape{TS1}{yv1}{mx}{it}{
- <-> yv1ri8cx
-}{}
-
-\DeclareFontShape{TS1}{yv1}{bx}{n}{
- <-> yv1b8cx
-}{}
-
-\DeclareFontShape{TS1}{yv1}{bx}{it}{
- <-> yv1bi8cx
-}{}
-
-\DeclareFontShape{TS1}{yv1}{bx}{sl}{
- <-> yv1bi8cx
-}{}
-
-\DeclareFontShape{TS1}{yv1}{bx}{sc}{
- <-> yv1b8cx
-}{}
-
-\DeclareFontShape{TS1}{yv1}{bx}{si}{
- <-> yv1b8cx
-}{}
-
-\DeclareFontShape{TS1}{yv1}{l}{n}{
- <-> yv1l8c
-}{}
-
-\DeclareFontShape{TS1}{yv1}{l}{it}{
- <-> yv1li8c
-}{}
-
-\DeclareFontShape{TS1}{yv1}{db}{n}{
- <-> yv1d8c
-}{}
-
-\DeclareFontShape{TS1}{yv1}{db}{it}{
- <-> yv1di8c
-}{}
-
-\DeclareFontShape{TS1}{yv1}{m}{sc}{<->ssub * yv1/m/n}{}
-\DeclareFontShape{TS1}{yv1}{m}{si}{<->ssub * yv1/m/sc}{}
-\DeclareFontShape{TS1}{yv1}{m}{sl}{<->ssub * yv1/m/it}{}
-\DeclareFontShape{TS1}{yv1}{b}{sc}{<->ssub * yv1/b/n}{}
-\DeclareFontShape{TS1}{yv1}{b}{si}{<->ssub * yv1/b/sc}{}
-\DeclareFontShape{TS1}{yv1}{b}{sl}{<->ssub * yv1/b/it}{}
-\DeclareFontShape{TS1}{yv1}{eb}{sc}{<->ssub * yv1/eb/n}{}
-\DeclareFontShape{TS1}{yv1}{eb}{si}{<->ssub * yv1/eb/sc}{}
-\DeclareFontShape{TS1}{yv1}{muc}{n}{<->ssub * yv1/mc/n}{}
-\DeclareFontShape{TS1}{yv1}{mc}{sc}{<->ssub * yv1/mc/n}{}
-\DeclareFontShape{TS1}{yv1}{muc}{sc}{<->ssub * yv1/mc/sc}{}
-\DeclareFontShape{TS1}{yv1}{mc}{si}{<->ssub * yv1/mc/sc}{}
-\DeclareFontShape{TS1}{yv1}{muc}{si}{<->ssub * yv1/mc/si}{}
-\DeclareFontShape{TS1}{yv1}{muc}{it}{<->ssub * yv1/mc/it}{}
-\DeclareFontShape{TS1}{yv1}{mc}{sl}{<->ssub * yv1/mc/it}{}
-\DeclareFontShape{TS1}{yv1}{muc}{sl}{<->ssub * yv1/mc/sl}{}
-\DeclareFontShape{TS1}{yv1}{bc}{sc}{<->ssub * yv1/bc/n}{}
-\DeclareFontShape{TS1}{yv1}{bc}{si}{<->ssub * yv1/bc/sc}{}
-\DeclareFontShape{TS1}{yv1}{bc}{sl}{<->ssub * yv1/bc/it}{}
-\DeclareFontShape{TS1}{yv1}{mx}{sc}{<->ssub * yv1/mx/n}{}
-\DeclareFontShape{TS1}{yv1}{mx}{si}{<->ssub * yv1/mx/sc}{}
-\DeclareFontShape{TS1}{yv1}{mx}{sl}{<->ssub * yv1/mx/it}{}
-\DeclareFontShape{TS1}{yv1}{l}{sc}{<->ssub * yv1/l/n}{}
-\DeclareFontShape{TS1}{yv1}{l}{si}{<->ssub * yv1/l/sc}{}
-\DeclareFontShape{TS1}{yv1}{l}{sl}{<->ssub * yv1/l/it}{}
-\DeclareFontShape{TS1}{yv1}{dbuc}{n}{<->ssub * yv1/db/n}{}
-\DeclareFontShape{TS1}{yv1}{db}{sc}{<->ssub * yv1/db/n}{}
-\DeclareFontShape{TS1}{yv1}{dbuc}{sc}{<->ssub * yv1/db/sc}{}
-\DeclareFontShape{TS1}{yv1}{db}{si}{<->ssub * yv1/db/sc}{}
-\DeclareFontShape{TS1}{yv1}{dbuc}{si}{<->ssub * yv1/db/si}{}
-\DeclareFontShape{TS1}{yv1}{dbuc}{it}{<->ssub * yv1/db/it}{}
-\DeclareFontShape{TS1}{yv1}{db}{sl}{<->ssub * yv1/db/it}{}
-\DeclareFontShape{TS1}{yv1}{dbuc}{sl}{<->ssub * yv1/db/sl}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturissans/ts1yv1d.fd b/Master/texmf-dist/tex/latex/venturissans/ts1yv1d.fd
deleted file mode 100644
index 3c21720b1b1..00000000000
--- a/Master/texmf-dist/tex/latex/venturissans/ts1yv1d.fd
+++ /dev/null
@@ -1,106 +0,0 @@
-%Filename: ts1yv1d.fd
-%Created by: tex yv1-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{ts1yv1d.fd}
- [2010/07/03 Fontinst v1.933 font definitions for TS1/yv1d.]
-
-\DeclareFontFamily{TS1}{yv1d}{}
-
-\DeclareFontShape{TS1}{yv1d}{b}{sc}{
- <-> yv1bd8c
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{eb}{sc}{
- <-> yv1bd8c
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{bc}{sc}{
- <-> yv1bd8c
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{db}{sc}{
- <-> yv1bd8c
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{b}{n}{
- <-> yv1bd8c
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{eb}{n}{
- <-> yv1bd8c
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{bc}{n}{
- <-> yv1bd8c
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{db}{n}{
- <-> yv1bd8c
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{dbuc}{sc}{
- <-> yv1dd8cu
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{mx}{sc}{
- <-> yv1dd8cu
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{m}{sc}{
- <-> yv1dd8cu
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{mc}{sc}{
- <-> yv1dd8cu
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{muc}{sc}{
- <-> yv1dd8cu
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{l}{sc}{
- <-> yv1dd8cu
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{dbuc}{n}{
- <-> yv1dd8cu
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{mx}{n}{
- <-> yv1dd8cu
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{m}{n}{
- <-> yv1dd8cu
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{mc}{n}{
- <-> yv1dd8cu
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{muc}{n}{
- <-> yv1dd8cu
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{l}{n}{
- <-> yv1dd8cu
-}{}
-
-\DeclareFontShape{TS1}{yv1d}{bx}{sc}{<->ssub * yv1d/b/sc}{}
-\DeclareFontShape{TS1}{yv1d}{b}{si}{<->ssub * yv1d/b/sc}{}
-\DeclareFontShape{TS1}{yv1d}{bx}{si}{<->ssub * yv1d/b/si}{}
-\DeclareFontShape{TS1}{yv1d}{eb}{si}{<->ssub * yv1d/eb/sc}{}
-\DeclareFontShape{TS1}{yv1d}{bc}{si}{<->ssub * yv1d/bc/sc}{}
-\DeclareFontShape{TS1}{yv1d}{db}{si}{<->ssub * yv1d/db/sc}{}
-\DeclareFontShape{TS1}{yv1d}{dbuc}{si}{<->ssub * yv1d/db/si}{}
-\DeclareFontShape{TS1}{yv1d}{bx}{n}{<->ssub * yv1d/b/n}{}
-\DeclareFontShape{TS1}{yv1d}{mx}{si}{<->ssub * yv1d/mx/sc}{}
-\DeclareFontShape{TS1}{yv1d}{m}{si}{<->ssub * yv1d/m/sc}{}
-\DeclareFontShape{TS1}{yv1d}{mc}{si}{<->ssub * yv1d/mc/sc}{}
-\DeclareFontShape{TS1}{yv1d}{muc}{si}{<->ssub * yv1d/mc/si}{}
-\DeclareFontShape{TS1}{yv1d}{l}{si}{<->ssub * yv1d/l/sc}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturissans2/t1yv3.fd b/Master/texmf-dist/tex/latex/venturissans2/t1yv3.fd
deleted file mode 100644
index 4080a89337c..00000000000
--- a/Master/texmf-dist/tex/latex/venturissans2/t1yv3.fd
+++ /dev/null
@@ -1,79 +0,0 @@
-%Filename: t1yv3.fd
-%Created by: tex yv3-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{t1yv3.fd}
- [2010/07/03 Fontinst v1.933 font definitions for T1/yv3.]
-
-\DeclareFontFamily{T1}{yv3}{}
-
-\DeclareFontShape{T1}{yv3}{m}{n}{
- <-> yv3r8t
-}{}
-
-\DeclareFontShape{T1}{yv3}{m}{it}{
- <-> yv3ri8t
-}{}
-
-\DeclareFontShape{T1}{yv3}{b}{n}{
- <-> yv3b8t
-}{}
-
-\DeclareFontShape{T1}{yv3}{b}{it}{
- <-> yv3bi8t
-}{}
-
-\DeclareFontShape{T1}{yv3}{mc}{n}{
- <-> yv3r8tc
-}{}
-
-\DeclareFontShape{T1}{yv3}{mc}{it}{
- <-> yv3ri8tc
-}{}
-
-\DeclareFontShape{T1}{yv3}{bc}{n}{
- <-> yv3b8tc
-}{}
-
-\DeclareFontShape{T1}{yv3}{bc}{it}{
- <-> yv3bi8tc
-}{}
-
-\DeclareFontShape{T1}{yv3}{mx}{n}{
- <-> yv3r8tx
-}{}
-
-\DeclareFontShape{T1}{yv3}{mx}{it}{
- <-> yv3ri8tx
-}{}
-
-\DeclareFontShape{T1}{yv3}{bx}{n}{
- <-> yv3b8tx
-}{}
-
-\DeclareFontShape{T1}{yv3}{bx}{it}{
- <-> yv3bi8tx
-}{}
-
-\DeclareFontShape{T1}{yv3}{m}{sc}{<->ssub * yv3/m/n}{}
-\DeclareFontShape{T1}{yv3}{m}{si}{<->ssub * yv3/m/sc}{}
-\DeclareFontShape{T1}{yv3}{m}{sl}{<->ssub * yv3/m/it}{}
-\DeclareFontShape{T1}{yv3}{b}{sc}{<->ssub * yv3/b/n}{}
-\DeclareFontShape{T1}{yv3}{bx}{sc}{<->ssub * yv3/b/sc}{}
-\DeclareFontShape{T1}{yv3}{b}{si}{<->ssub * yv3/b/sc}{}
-\DeclareFontShape{T1}{yv3}{bx}{si}{<->ssub * yv3/b/si}{}
-\DeclareFontShape{T1}{yv3}{b}{sl}{<->ssub * yv3/b/it}{}
-\DeclareFontShape{T1}{yv3}{bx}{sl}{<->ssub * yv3/b/sl}{}
-\DeclareFontShape{T1}{yv3}{mc}{sc}{<->ssub * yv3/mc/n}{}
-\DeclareFontShape{T1}{yv3}{mc}{si}{<->ssub * yv3/mc/sc}{}
-\DeclareFontShape{T1}{yv3}{mc}{sl}{<->ssub * yv3/mc/it}{}
-\DeclareFontShape{T1}{yv3}{bc}{sc}{<->ssub * yv3/bc/n}{}
-\DeclareFontShape{T1}{yv3}{bc}{si}{<->ssub * yv3/bc/sc}{}
-\DeclareFontShape{T1}{yv3}{bc}{sl}{<->ssub * yv3/bc/it}{}
-\DeclareFontShape{T1}{yv3}{mx}{sc}{<->ssub * yv3/mx/n}{}
-\DeclareFontShape{T1}{yv3}{mx}{si}{<->ssub * yv3/mx/sc}{}
-\DeclareFontShape{T1}{yv3}{mx}{sl}{<->ssub * yv3/mx/it}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/venturissans2/ts1yv3.fd b/Master/texmf-dist/tex/latex/venturissans2/ts1yv3.fd
deleted file mode 100644
index 65f27ef37de..00000000000
--- a/Master/texmf-dist/tex/latex/venturissans2/ts1yv3.fd
+++ /dev/null
@@ -1,79 +0,0 @@
-%Filename: ts1yv3.fd
-%Created by: tex yv3-drv
-%Created using fontinst v1.933
-
-%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
-
-\ProvidesFile{ts1yv3.fd}
- [2010/07/03 Fontinst v1.933 font definitions for TS1/yv3.]
-
-\DeclareFontFamily{TS1}{yv3}{}
-
-\DeclareFontShape{TS1}{yv3}{m}{n}{
- <-> yv3r8c
-}{}
-
-\DeclareFontShape{TS1}{yv3}{m}{it}{
- <-> yv3ri8c
-}{}
-
-\DeclareFontShape{TS1}{yv3}{b}{n}{
- <-> yv3b8c
-}{}
-
-\DeclareFontShape{TS1}{yv3}{b}{it}{
- <-> yv3bi8c
-}{}
-
-\DeclareFontShape{TS1}{yv3}{mc}{n}{
- <-> yv3r8cc
-}{}
-
-\DeclareFontShape{TS1}{yv3}{mc}{it}{
- <-> yv3ri8cc
-}{}
-
-\DeclareFontShape{TS1}{yv3}{bc}{n}{
- <-> yv3b8cc
-}{}
-
-\DeclareFontShape{TS1}{yv3}{bc}{it}{
- <-> yv3bi8cc
-}{}
-
-\DeclareFontShape{TS1}{yv3}{mx}{n}{
- <-> yv3r8cx
-}{}
-
-\DeclareFontShape{TS1}{yv3}{mx}{it}{
- <-> yv3ri8cx
-}{}
-
-\DeclareFontShape{TS1}{yv3}{bx}{n}{
- <-> yv3b8cx
-}{}
-
-\DeclareFontShape{TS1}{yv3}{bx}{it}{
- <-> yv3bi8cx
-}{}
-
-\DeclareFontShape{TS1}{yv3}{m}{sc}{<->ssub * yv3/m/n}{}
-\DeclareFontShape{TS1}{yv3}{m}{si}{<->ssub * yv3/m/sc}{}
-\DeclareFontShape{TS1}{yv3}{m}{sl}{<->ssub * yv3/m/it}{}
-\DeclareFontShape{TS1}{yv3}{b}{sc}{<->ssub * yv3/b/n}{}
-\DeclareFontShape{TS1}{yv3}{bx}{sc}{<->ssub * yv3/b/sc}{}
-\DeclareFontShape{TS1}{yv3}{b}{si}{<->ssub * yv3/b/sc}{}
-\DeclareFontShape{TS1}{yv3}{bx}{si}{<->ssub * yv3/b/si}{}
-\DeclareFontShape{TS1}{yv3}{b}{sl}{<->ssub * yv3/b/it}{}
-\DeclareFontShape{TS1}{yv3}{bx}{sl}{<->ssub * yv3/b/sl}{}
-\DeclareFontShape{TS1}{yv3}{mc}{sc}{<->ssub * yv3/mc/n}{}
-\DeclareFontShape{TS1}{yv3}{mc}{si}{<->ssub * yv3/mc/sc}{}
-\DeclareFontShape{TS1}{yv3}{mc}{sl}{<->ssub * yv3/mc/it}{}
-\DeclareFontShape{TS1}{yv3}{bc}{sc}{<->ssub * yv3/bc/n}{}
-\DeclareFontShape{TS1}{yv3}{bc}{si}{<->ssub * yv3/bc/sc}{}
-\DeclareFontShape{TS1}{yv3}{bc}{sl}{<->ssub * yv3/bc/it}{}
-\DeclareFontShape{TS1}{yv3}{mx}{sc}{<->ssub * yv3/mx/n}{}
-\DeclareFontShape{TS1}{yv3}{mx}{si}{<->ssub * yv3/mx/sc}{}
-\DeclareFontShape{TS1}{yv3}{mx}{sl}{<->ssub * yv3/mx/it}{}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/verifiche/verifiche.sty b/Master/texmf-dist/tex/latex/verifiche/verifiche.sty
index 917894db6ba..75d1b26a553 100644
--- a/Master/texmf-dist/tex/latex/verifiche/verifiche.sty
+++ b/Master/texmf-dist/tex/latex/verifiche/verifiche.sty
@@ -6,7 +6,7 @@
%%
%% verifiche.dtx (with options: `package')
%% This is a generated file.
-%% Copyright (C) 2020 - 2023 by Francesco Raccanello
+%% Copyright (C) 2020 - 2024 by Francesco Raccanello
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.3 of this license or (at your option) any later
@@ -15,7 +15,8 @@
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{verifiche} [2024/02/05 v7.1 .dtx verifiche file]
+\ProvidesPackage{verifiche} [2024/11/27 v8.0 .dtx verifiche file]
+
\RequirePackage{xparse}
@@ -25,6 +26,8 @@
\RequirePackage[shortlabels, inline]{enumitem}
\RequirePackage{tikz}
\RequirePackage[normalem]{ulem}
+\RequirePackage[nomessages]{fp}
+\RequirePackage{randomlist}
%%newif
\newif\ifsol
\newif\ifinstitute\institutetrue
@@ -59,8 +62,9 @@
\DeclareOptionX*{\PackageWarning{verifiche}{Unknown ‘\CurrentOption’}}
\ProcessOptionsX
%%counters
-\newcounter{exercisenumber}
-\newcounter{partialpoints}[exercisenumber]
+\newcounter{exercisenumber}%
+\newcounter{partialpoints}[exercisenumber]%
+\newcounter{shuffleitemscount}%
%%newlenght
\newlength{\candidatenamerulerlength}
\newlength{\classrulerlength}
@@ -181,7 +185,7 @@
\renewcommand{\@ptplurlabel}{#2}%
\renewcommand{\@ptsinglabel}{\IfNoValueTF{#1}{#2}{#1}}}%
\newcommand{\@useptlabel}[1]{%
- \ifnum#1=1 \@ptsinglabel \else \@ptplurlabel\fi}
+ \FPifeq{#1}{1} \@ptsinglabel \else \@ptplurlabel\fi}%
%%partialpt label
\newcommand{\@partialptsinglabel}{pt}
\newcommand{\@partialptplurlabel}{pt}
@@ -189,7 +193,7 @@
\renewcommand{\@partialptplurlabel}{#2}%
\renewcommand{\@partialptsinglabel}{\IfNoValueTF{#1}{#2}{#1}}}%
\newcommand{\@usepartialptlabel}[1]{%
- \ifnum#1=1 \@partialptsinglabel \else \@partialptplurlabel\fi}
+ \FPifeq{#1}{1} \@partialptsinglabel \else \@partialptplurlabel\fi}%
%%partialpt delimiter
\newcommand{\@lpartialpt@delimiter}{(}
\newcommand{\@rpartialpt@delimiter}{)}
@@ -341,6 +345,16 @@
\@rpt@delimiter}
\showmarginexercisetrue
\fi}%
+\define@key{esercizio}{sumpoints}[none]{%
+ \ifshowexercisept%
+ \def\@totalpartialpt{\convertreftonum{ptes@\theexercisenumber}}%
+ \def\sumpartialpt{%
+ \ptfont%
+ \@ptprefix\@lpt@delimiter%
+ \@totalpartialpt\space\@useptlabel{\@totalpartialpt}%
+ \@rpt@delimiter}%
+ \showmarginexercisetrue
+ \fi}%
\define@key{esercizio}{partialpt}[none]{%
\ifshowexercisept%
\def\@totalpartialpt{\convertreftonum{ptes@\theexercisenumber}}%
@@ -366,7 +380,8 @@
}%
\newcommand{\savepointsaux}{%
\ifdefined\sumpartialpt%
- \protected@write \@auxout {}{\string\newlabel {ptes@\theexercisenumber}{{\thepartialpoints}{}}}%
+ \FPeval\sommafinale{clip(partialpoints)}%
+ \protected@write \@auxout {}{\string\newlabel {ptes@\theexercisenumber}{{\sommafinale}{}}}%
\fi%
\ifdefined\espoint%
\protected@write \@auxout {}{\string\newlabel {ptes@\theexercisenumber}{{\pointes}{}}}%
@@ -375,6 +390,7 @@
\NewDocumentEnvironment{esercizio}{o +b}{%
\refstepcounter{exercisenumber}%
+ \FPset\partialpoints{0}%
\showmarginexercisefalse%
\IfValueT{#1}{\setkeys{esercizio}{#1}}%
\par\addvspace{\baselineskip}%
@@ -389,6 +405,7 @@
\savepointsaux%
}%
\NewDocumentEnvironment{esercizio*}{o +b}{%
+ \FPset\partialpoints{0}%
\showmarginexercisefalse%
\IfValueT{#1}{\setkeys{esercizio}{#1}}%
\par\addvspace{\baselineskip}{\noindent\bfseries\exercisetitle}%
@@ -407,7 +424,8 @@
\ptfont\hfill\@partialptprefix%
\@lpartialpt@delimiter#1\space\@usepartialptlabel{#1}%
\@rpartialpt@delimiter%
- \addtocounter{partialpoints}{#1}}\ignorespaces%
+ \FPadd\partialpoints\partialpoints{#1}%
+ \xdef\partialpoints{\partialpoints}}\ignorespaces%
\fi}%
\define@key{soluzione}{label}[\solutionlabel]{%
\def\verifiche@tempsoluzionelabel{#1}%
@@ -559,7 +577,44 @@
\clearpage%
}%
}{}
-
+\newcommand{\shuffleseed}[1]{\RLsetrandomseed{#1}}%
+\newcommand{\sitem}[1]{\InsertFirstItem{\verifiche@listname}{#1}}%
+\NewDocumentEnvironment{shuffledenumerate}{O{} m}{%
+\addtocounter{shuffleitemscount}{1}%
+\edef\verifiche@listname{lista\theshuffleitemscount}%
+\expandafter\NewList\expandafter{\verifiche@listname}%
+#2%
+}{%
+ \begin{enumerate}[#1]%
+\ForEachRandomItem{\verifiche@listname}{items}{\items}%
+ \end{enumerate}%
+\expandafter\ClearList\expandafter{\verifiche@listname}%
+\addtocounter{shuffleitemscount}{-1}%
+}%
+\NewDocumentEnvironment{shuffleditemize}{O{} m}{%
+\addtocounter{shuffleitemscount}{1}%
+\edef\verifiche@listname{lista\theshuffleitemscount}%
+\expandafter\NewList\expandafter{\verifiche@listname}%
+#2%
+}{%
+ \begin{itemize}[#1]%
+\ForEachRandomItem{\verifiche@listname}{items}{\items}%
+ \end{itemize}%
+\expandafter\ClearList\expandafter{\verifiche@listname}%
+\addtocounter{shuffleitemscount}{-1}%
+}%
+\NewDocumentEnvironment{shuffledclosed}{m}{%
+\addtocounter{shuffleitemscount}{1}%
+\edef\verifiche@listname{lista\theshuffleitemscount}%
+\expandafter\NewList\expandafter{\verifiche@listname}%
+#1%
+}{%
+ \begin{closedquestion}%
+\ForEachRandomItem{\verifiche@listname}{items}{\items}%
+ \end{closedquestion}%
+\expandafter\ClearList\expandafter{\verifiche@listname}%
+\addtocounter{shuffleitemscount}{-1}%
+}%
\endinput
%%
%% End of file `verifiche.sty'.
diff --git a/Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.chit.code.tex b/Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.chit.code.tex
index 3e5b240b7a8..21a42dddecd 100644
--- a/Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.chit.code.tex
+++ b/Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.chit.code.tex
@@ -78,10 +78,12 @@
bevel/SW/.style = {/chit/bev=3},
bevel/SE/.style = {/chit/bev=4},
bevel/.default = north west,
- clip/.is if=chit@clip%
+ clip/.is if=chit@clip,%
+ nato shape/.store in=\chit@n@to@shape,
}
+\def\chit@sym@sc@le{.4}
\tikzset{
- chit/symbol/.style={scale=.4,transform shape},
+ chit/symbol/.style={scale=\chit@sym@sc@le,transform shape},
chit/parts/.style={shape=rectangle,transform shape},
chit/factors/.style={chit/parts,anchor=south},
chit/left/.style={chit/parts,anchor=base,rotate=90},%Anchor was south
@@ -118,7 +120,7 @@
chit/.code={%
\chit@dbg{2}{chit arguments are `#1'}%
\pgfkeys{/tikz/transform shape,/tikz/shape=chit}%
- \pgfkeys{/chit/.cd,#1}}}
+ \pgfkeys{/chit/.cd,nato shape=natoapp6c,#1}}}
\newcounter{chit@id}\setcounter{chit@id}{0}
\def\chit@n@to#1#2{%
%% Without a following start square bracket '[' by-pass to final
@@ -129,12 +131,16 @@
%\message{^^JNo start square bracket}%
\@chit@n@to@{#1}{#2}}%]]
}
+\def\chit@n@to@shape{natoapp6c}
\def\@chit@n@to@#1#2#3\@end@chit@n@to{%
\chit@dbg{1}{Chit NATO App6(c) w/o offset:
- ^^J Options: #3
- ^^J ID: #1
- ^^J Position: #2}
- \node[chit/symbol,natoapp6c={#3,id=#1}] (#1) at (#2) {};
+ ^^J Options: `#3'
+ ^^J ID: `#1'
+ ^^J Position: `#2'
+ ^^J Style: `\chit@n@to@shape'
+ }
+ \chit@dbg{2}{NATO shape: `\chit@n@to@shape'}
+ \node[chit/symbol,\chit@n@to@shape={#3,id=#1}] (#1) at (#2) {};
\chit@dbg{4}{Chit NATO App6(c) ended}%
}
\def\@chit@n@to#1#2[#3]{%
@@ -147,30 +153,73 @@
^^J ID: #1
^^J Position: #2
^^J Offset: #4}
- \node[chit/symbol,natoapp6c={#3,id=#1}] (#1) at ($(#2)+(#4)$) {};}
-\def\chit@tr@ns@nchor#1{%
- \pgf@x=0.4\pgf@x%
- \pgf@y=0.4\pgf@y\advance\pgf@y#1}
-\def\chit@nchor#1#2#3{%
- \wg@sub@nchor{#1}{#2}
- \chit@tr@ns@nchor{#3}}
+ \chit@dbg{10}{==== NATO shape: `\chit@n@to@shape' ====}
+ \node[chit/symbol,\chit@n@to@shape={#3,id=#1}] (#1) at ($(#2)+(#4)$) {};}
+\def\chit@tr@ns@nchor{%
+ \chit@dbg{10}{Translating anchor `\the\pgf@x',`\the\pgf@y'}
+ \wg@tmpa=\pgf@x%
+ \wg@tmpb=\pgf@y%
+ \symbol%
+ \chit@dbg{10}{Symbol origin `\the\pgf@x',`\the\pgf@y'}
+ \wg@tmpc=\pgf@x%
+ \wg@tmpd=\pgf@y%
+ \pgf@x=\chit@sym@sc@le\wg@tmpa%
+ \pgf@y=\chit@sym@sc@le\wg@tmpb%
+ \chit@dbg{10}{Scaled anchor `\the\pgf@x',`\the\pgf@y'}
+ \advance\pgf@x\wg@tmpc%
+ \advance\pgf@y\wg@tmpd%
+ \chit@dbg{10}{Offset anchor `\the\pgf@x',`\the\pgf@y'}
+}
+\def\chit@nchor#1#2{%
+ \chit@dbg{10}{Get chit sub anchor of `#1' `#2'}%
+ \wg@sub@nchor{#1}{#2}%
+ \chit@tr@ns@nchor%
+ \chit@dbg{10}{Got chit sub anchor of `\the\pgf@x `\the\pgf@y}%
+}
+\def\chit@sym@nchor#1{%
+ \chit@dbg{10}{Get chit symbol `#1'}%
+ \edef\tmpid{\id symbol}%
+ \chit@nchor{\tmpid}{#1}}
\def\chit@report{}
\tikzset{
zone turn/.style={},
zone mult/.style={}
}
+\def\chit@bkg@p@th{%
+ \northeast%
+ \wg@tmpa=\pgf@x\wg@tmpb=\pgf@y%
+ \pgfpathmoveto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
+ \wg@tmpa=-\wg@tmpa \pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
+ \wg@tmpb=-\wg@tmpb \pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
+ \wg@tmpa=-\wg@tmpa \pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
+ \pgfclosepath%
+}
\def\chit@bevel@path#1{
\scope[#1]
- \wg@tmpc=\wg@tmpa\multiply\wg@tmpc by \chit@bevel@frac
- \wg@tmpd=\wg@tmpb\multiply\wg@tmpd by \chit@bevel@frac
- \divide\wg@tmpc100
- \divide\wg@tmpd100
+ \wg@tmpc=\wg@tmpa%
+ \wg@tmpd=\wg@tmpb%
+ %% Absolute values
+ \ifdim\wg@tmpa<0pt\multiply\wg@tmpc by -1\fi%
+ \ifdim\wg@tmpb<0pt\multiply\wg@tmpd by -1\fi%
+ % Why the hell do I need this?
+ \chit@dbg{10}{`\the\wg@tmpa' `\the\wg@tmpb'}%
+ %% Smallest dimension
+ \ifdim\wg@tmpc>\wg@tmpd \wg@tmpc=\wg@tmpd\fi%
+ \ifdim\wg@tmpc<\wg@tmpd \wg@tmpd=\wg@tmpc\fi%
+ %% Restore sign
+ \ifdim\wg@tmpa<0pt\multiply\wg@tmpc by -1\fi%
+ \ifdim\wg@tmpb<0pt\multiply\wg@tmpd by -1\fi%
+ %% Take the fraction
+ \multiply\wg@tmpc by \chit@bevel@frac%
+ \multiply\wg@tmpd by \chit@bevel@frac%
+ \divide\wg@tmpc100%
+ \divide\wg@tmpd100%
\pgfpathmoveto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
% Move down along edge
- \wg@tmpb=-\wg@tmpb
+ \wg@tmpb=-\wg@tmpb%
\pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
% Move left along edge
- \wg@tmpa=-\wg@tmpa
+ \wg@tmpa=-\wg@tmpa%
\pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
% Move in and up
\advance\wg@tmpa\wg@tmpc%
@@ -185,14 +234,13 @@
\advance\wg@tmpb-\wg@tmpd%
\pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
\pgfclosepath%
- \pgfusepath{fill}
- \endscope
+ \pgfusepath{fill}%
+ \endscope%
}
-
\pgfdeclareshape{chit}{
\savedanchor\center{\pgf@x=0cm\pgf@y=0cm}
- \savedanchor\northeast{\pgf@x=0.6cm\pgf@y=0.6cm}
- \savedanchor\symbol{\pgf@x=0cm\pgf@y=0.2cm}
+ \savedanchor\northeast{\pgf@x=0.6cm\pgf@y=\pgf@x}
+ \savedanchor\symbol{\pgf@x=0cm\pgf@y=0.1cm}
\savedanchor\factors{\pgf@x=0cm\pgf@y=-0.5cm}
\saveddimen\margin{\pgf@x=0.04cm}
\savedmacro\id{%
@@ -212,6 +260,7 @@
\edef\chitframeopt{\chit@frame}}
\chit@dbg{3}{Chit Frame options: \meaning\chitframeopt}%
}
+ \savedmacro\thisname{\def\thisname{chit}}
\anchor{center}{\center}
\anchor{north east}{\northeast}
\anchor{north west}{\northeast\pgf@x=-\pgf@x}
@@ -221,24 +270,24 @@
\anchor{south} {\northeast\pgf@x=0cm\pgf@y=-\pgf@y}
\anchor{east} {\northeast\pgf@y=0cm}
\anchor{west} {\northeast\pgf@x=-\pgf@x\pgf@y=0cm}
- \anchor{symbol north east}{\chit@nchor{M\id symbol}{north east}{0.2cm}}
- \anchor{symbol north west}{\chit@nchor{M\id symbol}{north west}{0.2cm}}
- \anchor{symbol south east}{\chit@nchor{M\id symbol}{south east}{0.2cm}}
- \anchor{symbol south west}{\chit@nchor{M\id symbol}{south west}{0.2cm}}
- \anchor{symbol north} {\chit@nchor{M\id symbol}{north}{0.2cm}}
- \anchor{symbol west} {\chit@nchor{M\id symbol}{west}{0.2cm}}
- \anchor{symbol south} {\chit@nchor{M\id symbol}{south}{0.2cm}}
- \anchor{symbol east} {\chit@nchor{M\id symbol}{east}{0.2cm}}
- \anchor{symbol upper} {\chit@nchor{M\id symbol}{upper}{0.2cm}}
- \anchor{symbol lower} {\chit@nchor{M\id symbol}{lower}{0.2cm}}
- \anchor{symbol left} {\chit@nchor{M\id symbol}{left}{0.2cm}}
- \anchor{symbol right} {\chit@nchor{M\id symbol}{right}{0.2cm}}
- \anchor{symbol echelon} {\chit@nchor{M\id symbol}{north}{0.2cm}}
- \anchor{symbol below} {\chit@nchor{M\id symbol}{south}{0.1cm}}
+ \anchor{symbol north east}{\chit@sym@nchor{north east}}
+ \anchor{symbol north west}{\chit@sym@nchor{north west}}
+ \anchor{symbol south east}{\chit@sym@nchor{south east}}
+ \anchor{symbol south west}{\chit@sym@nchor{south west}}
+ \anchor{symbol north} {\chit@sym@nchor{north}}
+ \anchor{symbol west} {\chit@sym@nchor{west}}
+ \anchor{symbol south} {\chit@sym@nchor{south}}
+ \anchor{symbol east} {\chit@sym@nchor{east}}
+ \anchor{symbol upper} {\chit@sym@nchor{upper}}
+ \anchor{symbol lower} {\chit@sym@nchor{lower}}
+ \anchor{symbol left} {\chit@sym@nchor{left}}
+ \anchor{symbol right} {\chit@sym@nchor{right}}
+ \anchor{symbol echelon} {\chit@sym@nchor{echelon}}
+ \anchor{symbol below} {\chit@sym@nchor{below}}
\anchor{symbol} {\symbol}
\anchor{factors} {\factors}
- \anchor{left} {\chit@nchor{M\id symbol}{west}{.2cm}\advance\pgf@x-\margin}
- \anchor{right}{\chit@nchor{M\id symbol}{east}{.2cm}\advance\pgf@x+\margin}
+ \anchor{left} {\chit@sym@nchor{west}\advance\pgf@x-\margin}
+ \anchor{right}{\chit@sym@nchor{east}\advance\pgf@x+\margin}
\anchor{upper right} {%
\northeast \advance\pgf@x-\margin \advance\pgf@y-\margin%
}
@@ -256,13 +305,14 @@
%% This is the outline of the chit only. The rest of the chit is
%% made on the foreground "path".
\chit@dbg{1}{Chit drawing background path}
- \northeast%
- \wg@tmpa=\pgf@x\wg@tmpb=\pgf@y%
- \pgfpathmoveto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
- \wg@tmpa=-\wg@tmpa \pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
- \wg@tmpb=-\wg@tmpb \pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
- \wg@tmpa=-\wg@tmpa \pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
- \pgfclosepath
+ \chit@bkg@p@th%
+ % \northeast%
+ % \wg@tmpa=\pgf@x\wg@tmpb=\pgf@y%
+ % \pgfpathmoveto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
+ % \wg@tmpa=-\wg@tmpa \pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
+ % \wg@tmpb=-\wg@tmpb \pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
+ % \wg@tmpa=-\wg@tmpa \pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
+ % \pgfclosepath
}
\behindforegroundpath{%
\chit@dbg{1}{Chit drawing foreground path}
@@ -288,13 +338,14 @@
%
\ifchit@clip%
\chit@dbg{1}{Chit clip path}
- \northeast%
- \wg@tmpa=\pgf@x\wg@tmpb=\pgf@y%
- \pgfpathmoveto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
- \wg@tmpa=-\wg@tmpa \pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
- \wg@tmpb=-\wg@tmpb \pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
- \wg@tmpa=-\wg@tmpa \pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
- \pgfclosepath%
+ \chit@bkg@p@th%
+ % \northeast%
+ % \wg@tmpa=\pgf@x\wg@tmpb=\pgf@y%
+ % \pgfpathmoveto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
+ % \wg@tmpa=-\wg@tmpa \pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
+ % \wg@tmpb=-\wg@tmpb \pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
+ % \wg@tmpa=-\wg@tmpa \pgfpathlineto{\pgfqpoint{\wg@tmpa}{\wg@tmpb}}%
+ % \pgfclosepath%
\pgfusepath{clip}%
\fi%
\@ifundefined{chit@symbol}{%
@@ -309,26 +360,22 @@
\symbol%
\edef\args{{\symid}{\the\pgf@x,\the\pgf@y}\chit@symbol}%
\chit@dbg{6}{Arguments to chit NATO symbol: \meaning\args}%
- \chit@dbg{1}{Chit draw nato image}
+ \chit@dbg{1}{Chit draw nato image `\symid'}
\expandafter\chit@n@to\args\@end@chit@n@to%
\chit@dbg{6}{After making NATO symbol in chit}%
% Put in left of symbol
\@ifundefined{chit@left}{}{%
- \chit@dbg{1}{Chit draw left: `\meaning\chit@left'}
+ \chit@dbg{2}{Chit draw left: `\meaning\chit@left'}
+ \wg@nchor{\thisname}{left}
\begin{scope}[]
- \pgfpointanchor{\symid}{west}%
- \wg@tmpa=\pgf@x\advance\wg@tmpa-\margin%
- \wg@tmpb=\pgf@y%
- \wg@pic@all{\chit@left}{}{\the\wg@tmpa,\the\wg@tmpb}{chit/left}%
+ \wg@pic@all{\chit@left}{}{\pgf@x,\pgf@y}{chit/left}%
\end{scope}}%
% Put in right of symbol
\@ifundefined{chit@right}{}{%
- \chit@dbg{1}{Chit draw left: `\meaning\chit@right'}
+ \chit@dbg{2}{Chit draw right: `\meaning\chit@right'}
+ \wg@nchor{\thisname}{right}
\begin{scope}[]
- \pgfpointanchor{\symid}{east}%
- \wg@tmpa=\pgf@x\advance\wg@tmpa+\margin%
- \wg@tmpb=\pgf@y%
- \wg@pic@all{\chit@right}{}{\the\wg@tmpa,\the\wg@tmpb}{chit/right}%
+ \wg@pic@all{\chit@right}{}{\pgf@x,\pgf@y}{chit/right}%
\end{scope}}%
% Get coordinates
\northeast%
@@ -338,31 +385,31 @@
\advance\wg@tmpb-\margin%
% Put in upper left corner
\@ifundefined{chit@upper@left}{}{%
- \chit@dbg{1}{Chit draw upper left: `\meaning\chit@upper@left'}
+ \chit@dbg{1}{Chit draw upper left: `\meaning\chit@upper@left'}%
+ \wg@nchor{\thisname}{upper left}
\begin{scope}[]
- \wg@pic@all{\chit@upper@left}{}{-\the\wg@tmpa,\the\wg@tmpb}{%
- chit/upper left}%
+ \wg@pic@all{\chit@upper@left}{}{\pgf@x,\pgf@y}{chit/upper left}%
\end{scope}}
% Put in upper right corner
\@ifundefined{chit@upper@right}{}{%
\chit@dbg{1}{Chit draw upper right: `\meaning\chit@upper@right'}
+ \wg@nchor{\thisname}{upper right}%
\begin{scope}[]
- \wg@pic@all{\chit@upper@right}{}{\the\wg@tmpa,\the\wg@tmpb}{%
- chit/upper right}%
+ \wg@pic@all{\chit@upper@right}{}{\pgf@x,\pgf@y}{chit/upper right}%
\end{scope}}
% Put in lower left corner
\@ifundefined{chit@lower@left}{}{%
\chit@dbg{1}{Chit draw lower left: `\meaning\chit@lower@left'}
+ \wg@nchor{\thisname}{lower left}%
\begin{scope}[]
- \wg@pic@all{\chit@lower@left}{}{-\the\wg@tmpa,-\the\wg@tmpb}{%
- chit/lower left}%
+ \wg@pic@all{\chit@lower@left}{}{\pgf@x,\pgf@y}{chit/lower left}%
\end{scope}}
% Put in lower right corner
\@ifundefined{chit@lower@right}{}{%
\chit@dbg{1}{Chit draw lower right: `\meaning\chit@lower@right'}
+ \wg@nchor{\thisname}{lower right}%
\begin{scope}[]
- \wg@pic@all{\chit@lower@right}{}{\the\wg@tmpa,-\the\wg@tmpb}{%
- chit/lower right}%
+ \wg@pic@all{\chit@lower@right}{}{\pgf@x,\pgf@y}{chit/lower right}%
\end{scope}}
% Put in factors
\@ifundefined{chit@factors}{}{%
@@ -451,10 +498,83 @@
\fi%
\@ifnextchar;{\@gobble}{}%
}
+\tikzset{
+ /chit/kriegspiel/.code={
+ \pgfkeys{%
+ /tikz/shape=kriegspiel,%
+ /chit/nato shape=kriegspiel symbol}
+ }
+}
+\pgfdeclareshape{kriegspiel}{
+ \inheritsavedanchors[from=chit]
+ \savedanchor\northeast{\pgf@x=0.8cm\pgf@y=0.4cm}
+ \savedanchor\symbol{\pgf@x=0cm\pgf@y=0.15cm}
+ \savedanchor\factors{\pgf@x=.2cm\pgf@y=-.4cm}
+ \savedmacro\thisname{\def\thisname{kriegspiel}}
+ \saveddimen\margin{\pgf@x=0.03cm}
+ \inheritanchor[from=chit]{center}
+ \inheritanchor[from=chit]{north east}
+ \inheritanchor[from=chit]{north west}
+ \inheritanchor[from=chit]{south west}
+ \inheritanchor[from=chit]{south east}
+ \inheritanchor[from=chit]{north}
+ \inheritanchor[from=chit]{south}
+ \inheritanchor[from=chit]{east}
+ \inheritanchor[from=chit]{west}
+ \inheritanchor[from=chit]{symbol north east}
+ \inheritanchor[from=chit]{symbol north west}
+ \inheritanchor[from=chit]{symbol south east}
+ \inheritanchor[from=chit]{symbol south west}
+ \inheritanchor[from=chit]{symbol north}
+ \inheritanchor[from=chit]{symbol west}
+ \inheritanchor[from=chit]{symbol south}
+ \inheritanchor[from=chit]{symbol east}
+ \inheritanchor[from=chit]{symbol upper}
+ \inheritanchor[from=chit]{symbol lower}
+ \inheritanchor[from=chit]{symbol left}
+ \inheritanchor[from=chit]{symbol right}
+ \inheritanchor[from=chit]{symbol echelon}
+ \inheritanchor[from=chit]{symbol below}
+ \inheritanchor[from=chit]{symbol}
+ \inheritanchor[from=chit]{factors}
+ \inheritanchor[from=chit]{left}
+ \inheritanchor[from=chit]{right}
+ \inheritanchor[from=chit]{upper right}
+ \inheritanchor[from=chit]{upper left}
+ \inheritanchor[from=chit]{lower right}
+ \inheritanchor[from=chit]{lower left}
+ % \anchor{upper right} {%
+ % \northeast%
+ % \advance\pgf@x-\margin%
+ % \advance\pgf@y-\margin%
+ % \pgf@y=-\pgf@y%
+ % \advance\pgf@y5pt%
+ % }
+ % \anchor{upper left}{
+ % \northeast%
+ % \advance\pgf@x-\margin%
+ % \advance\pgf@y-\margin%
+ % \pgf@x=-\pgf@x%
+ % \pgf@y=-\pgf@y%
+ % \advance\pgf@y5pt%
+ % }
+ %%
+ \inheritbackgroundpath[from=chit]
+ \inheritbehindforegroundpath[from=chit]
+}
\DeclareRobustCommand\chit@sep[2][/]{%
\foreach[count=\is] \s in {#2}{%
\ifnum\is>1\relax#1\fi%
\s}}
+\def\chit@oset#1#2{%
+ %$\stackrel{{}_{\text{\scriptsize #1}}}{\text{#2}}$%
+ %$\stackrel{\lower2ex\hbox{\text{\scriptsize #1}}}{\text{#2}}$%
+ %${}\overset{\text{\scriptsize #1}}{\text{#2}}{}$%
+ \tikz[]{%
+ \node[inner sep=0pt](chit@dd){#2};%
+ \node[above=-.1ex of chit@dd,inner sep=0pt]{{\scriptsize #1}};%
+ }%
+}
\tikzset{%
chit/1 factor/.pic={
\chit@dbg{4}{ Chit 1 factor: #1}%
@@ -467,7 +587,7 @@
code={
\chit@dbg{4}{ Chit 2 factors w/artillery: `#1' `#2' `#3'}%
\node[chit/factor,chit/2 factors]{%
- {#1}$\overset{\text{\scriptsize #3}}{\text{--}}${#2}};}},
+ {#1}\chit@oset{#3}{--}{#2}};}},
pics/chit/3 factors/.style args={#1,#2,#3}{%
code={
\chit@dbg{4}{ Chit 3 factors: `#1' `#2' `#3'}%
@@ -626,28 +746,28 @@
\@ifstar{\wg@star@oob%
}{\wg@nostar@oob%
}%
-}
-\def\wg@oob#1#2#3#4{
- \def\r{0}
+}%
+\def\wg@oob#1#2#3#4{%
+ \def\r{0}%
\pgfmathparse{#3*(#2-1)}%
- \edef\a{\pgfmathresult}
- \chit@dbg{2}{OOB: `#1'}
- \foreach[count=\ti from 0] \t/\y in #1{
- \xdef\o{\r}
- \def\c{0}
- \ifx\t\y\def\y{0}\fi
- \chit@dbg{2}{Turn \ti\space(\r,\t,y=\y):'}
+ \edef\a{\pgfmathresult}%
+ \chit@dbg{2}{OOB: `#1'}%
+ \foreach[count=\ti from 0] \t/\y in #1{%
+ \xdef\o{\r}%
+ \def\c{0}%
+ \ifx\t\y\def\y{0}\fi%
+ \chit@dbg{2}{Turn \ti\space(\r,\t,y=\y):'}%
\ifwg@oob@inv%
\pic[transform shape] at ( .5*#3,\r) {chit/oob turn=\ti};% was dx=0.5
- \else
+ \else%
\pic[transform shape] at (-.5*#3,\r) {chit/oob turn=\ti};% was dx=-0.5
\fi%
\ifx\t\empty\else%
- \foreach \u/\m in \t{
+ \foreach \u/\m in \t{%
%% \chit@dbg{2}{ `\u'=`\m'}
- \ifx\u\empty\else
- \ifx\m\@empty\def\m{1}\fi
- \ifx\u\m\def\m{1}\fi
+ \ifx\u\empty\else%
+ \ifx\m\@empty\def\m{1}\fi%
+ \ifx\u\m\def\m{1}\fi%
\foreach \n in {1,...,\m}{%
\chit@dbg{2}{OOB Chit is `\u' `\chit@oob@spacer'}%
\ifx\u\chit@oob@spacer%
@@ -656,33 +776,33 @@
\xdef\c{\pgfmathresult}%
\else%
\ifx\u\chit@oob@vspacer%
- \chit@dbg{3}{Chit `\u' is vspacer `\chit@oob@vspacer'}
- \pgfmathparse{ifthenelse(abs(\c)<0.0001,0,#3)}
- \xdef\ll{\pgfmathresult}
- \chit@dbg{2}{\string\ll=`\ll'}
- \chit@oob@rowupdate(\c,\r){\ll}{#4}
+ \chit@dbg{3}{Chit `\u' is vspacer `\chit@oob@vspacer'}%
+ \pgfmathparse{ifthenelse(abs(\c)<0.0001,0,#3)}%
+ \xdef\ll{\pgfmathresult}%
+ \chit@dbg{2}{\string\ll=`\ll'}%
+ \chit@oob@rowupdate(\c,\r){\ll}{#4}%
\else
\ifnum\chitdbglvl>2%
\node[minimum width=#3cm,minimum height=#3cm,
- draw,transform shape] at (\c,\r) {};
+ draw,transform shape] at (\c,\r) {};%
\fi
\ifx\u\chit@blank\else%
\chit[\u=\ti,zone oob point={\u}{\c}{\r}](\c,\r);%
\fi%
- \chit@oob@cellupdate(\c,\r){#2}{#3}{\y}
- \fi
- \fi
- }
- \fi
- }
- \fi
+ \chit@oob@cellupdate(\c,\r){#2}{#3}{\y}%
+ \fi%
+ \fi%
+ }%
+ \fi%
+ }%
+ \fi%
\chit@dbg{1}{ End of chits in turn
- \ti\space(c=`\c',r=`\r',o='\o',y='\y')}
+ \ti\space(c=`\c',r=`\r',o='\o',y='\y')}%
% IF no units where given, then we force \c to be non-zero so that
% \chit@oob@turnupdate increments the row
- \ifx\t\@empty
- \def\c{#3}
- \chit@dbg{2}{ Turn is empty, set c=`\c'}
+ \ifx\t\@empty%
+ \def\c{#3}%
+ \chit@dbg{2}{ Turn is empty, set c=`\c'}%
\fi
%\ifnum\y<0% No explicit number of rows given
% \def\c{#3}
@@ -696,22 +816,22 @@
% rows.
\ifnum\y>0%
\chit@dbg{2}{ Looping rows from 2 to \y, break when row > \y}%
- \foreach \rr in {2,...,\y}{
+ \foreach \rr in {2,...,\y}{%
%\ifnum\rr>\y% A little funny, but \y can be negative!
% \chit@dbg{2}{ \space Breaking loop \rr\space > \y}%
% \breakforeach%
%\else%
\chit@oob@rowupdate(\c,\r){#3}{0}% Extra spacing?
%\fi
- }
- \fi
+ }%
+ \fi%
% This will zero \c. However, if on entry |\c|>0, then we also
% increment the row
- \chit@oob@turnupdate(\c,\r){#3}{#4}
- \chit@dbg{2}{End of turn \ti\space(c=`\c',r=`\r',o='\o',y='\y')}
+ \chit@oob@turnupdate(\c,\r){#3}{#4}%
+ \chit@dbg{2}{End of turn \ti\space(c=`\c',r=`\r',o='\o',y='\y')}%
}
- \chit@dbg{3}{End of OOB (c=`\c',r=`\r',y=`\y')}
- \@ifnextchar;{\@gobble}{}}
+ \chit@dbg{3}{End of OOB (c=`\c',r=`\r',y=`\y')}%
+ \@ifnextchar;{\@gobble}{}}%
\def\wg@star@hoob{\wg@oob@invtrue\wg@hoob}
\def\wg@nostar@hoob{\wg@oob@invfalse\wg@hoob}
\def\hoob{%
@@ -719,49 +839,49 @@
}{\wg@nostar@hoob%
}%
}
-\def\wg@hoob#1#2#3#4{
- \def\r{0}
- \def\c{0}
+\def\wg@hoob#1#2#3#4{%
+ \def\r{0}%
+ \def\c{0}%
\pgfmathparse{#3*(#2-1)}%
- \edef\a{\pgfmathresult}
- \chit@dbg{2}{OOB: `#1'}
- \foreach[count=\ti from 0] \t/\y in #1{
- \xdef\o{\r}
+ \edef\a{\pgfmathresult}%
+ \chit@dbg{2}{OOB: `#1'}%
+ \foreach[count=\ti from 0] \t/\y in #1{%
+ \xdef\o{\r}%
% \def\c{0}
- \ifx\t\y\def\y{0}\fi
+ \ifx\t\y\def\y{0}\fi%
\chit@dbg{2}{Turn \ti\space(\r,\t,y=\y):'}
- \ifx\t\empty\else
+ \ifx\t\empty\else%
% Count how many are left for this turn
- \chit@dbg{2}{At start of turn \t\space\string\c=\c}
+ \chit@dbg{2}{At start of turn \t\space\string\c=\c}%
\def\l{\c}%
- \let\ig\empty
- \foreach \u/\m in \t{
- \ifx\ig\empty
- \ifx\u\empty\else
- \ifx\u\m\def\m{1}\fi
+ \let\ig\empty%
+ \foreach \u/\m in \t{%
+ \ifx\ig\empty%
+ \ifx\u\empty\else%
+ \ifx\u\m\def\m{1}\fi%
\ifx\u\chit@oob@spacer%
- \pgfmathparse{\l+\m*#4}\xdef\l{\pgfmathresult}
- \chit@dbg{2}{Got \m\space hspace (#4) -> \l}
- \else
+ \pgfmathparse{\l+\m*#4}\xdef\l{\pgfmathresult}%
+ \chit@dbg{2}{Got \m\space hspace (#4) -> \l}%
+ \else%
\ifx\u\chit@oob@vspace%
- \xdef\ig{1}
- \chit@dbg{2}{Got vspace -> \l (\ig)}
- \else
- \pgfmathparse{\l+\m*#3}
- \xdef\l{\pgfmathresult}
- \chit@dbg{2}{Got \m\space units -> \l}
- \fi
- \fi
- \fi
- \fi}
+ \xdef\ig{1}%
+ \chit@dbg{2}{Got vspace -> \l (\ig)}%
+ \else%
+ \pgfmathparse{\l+\m*#3}%
+ \xdef\l{\pgfmathresult}%
+ \chit@dbg{2}{Got \m\space units -> \l}%
+ \fi%
+ \fi%
+ \fi%
+ \fi}%
% Check if there's enough room
\chit@dbg{2}{To fill the rest of turn needs `\l' compared to
- `\a' (#3*(#2-1))}
+ `\a' (#3*(#2-1))}%
\pgfmathparse{ifthenelse(abs(\l)>=#3*(#2-1),0,1}%
\xdef\l{\pgfmathresult}%
- \chit@dbg{2}{Break or not `\l'}
- \ifnum\l=0\chit@oob@turnupdate(\c,\r){#3}{#4}\fi
- \fi
+ \chit@dbg{2}{Break or not `\l'}%
+ \ifnum\l=0\chit@oob@turnupdate(\c,\r){#3}{#4}\fi%
+ \fi%
\ifwg@oob@inv%
\pic[transform shape] at (\c+.5*#3,\r) {chit/oob turn=\ti};% was dx=0.5
\else
@@ -769,43 +889,43 @@
\fi%
%\chit@oob@cellupdate(\c,\r){#2}{#3}{\y}
\ifx\t\empty\else%
- \def\lv{0}
- \foreach \u/\m in \t{
+ \def\lv{0}%
+ \foreach \u/\m in \t{%
%% \chit@dbg{2}{ `\u'=`\m'}
- \ifx\u\empty\else
- \ifx\m\@empty\def\m{1}\fi
- \ifx\u\m\def\m{1}\fi
+ \ifx\u\empty\else%
+ \ifx\m\@empty\def\m{1}\fi%
+ \ifx\u\m\def\m{1}\fi%
\foreach \n in {1,...,\m}{%
\chit@dbg{2}{OOB Chit is `\u' `\chit@oob@spacer'}%
\ifx\u\chit@oob@spacer%
- \chit@dbg{3}{Chit `\u' is spacer `\chit@oob@spacer'}
+ \chit@dbg{3}{Chit `\u' is spacer `\chit@oob@spacer'}%
\pgfmathparse{\c+#4}%
\xdef\c{\pgfmathresult}%
\else%
\ifx\u\chit@oob@vspacer%
- \chit@dbg{3}{Chit `\u' is vspacer `\chit@oob@vspacer'}
- \pgfmathparse{ifthenelse(abs(\c)<0.0001,0,#3)}
- \xdef\ll{\pgfmathresult}
- \chit@dbg{2}{\string\ll=`\ll'}
- \chit@oob@rowupdate(\c,\r){\ll}{#4}
- \xdef\lv{1}
+ \chit@dbg{3}{Chit `\u' is vspacer `\chit@oob@vspacer'}%
+ \pgfmathparse{ifthenelse(abs(\c)<0.0001,0,#3)}%
+ \xdef\ll{\pgfmathresult}%
+ \chit@dbg{2}{\string\ll=`\ll'}%
+ \chit@oob@rowupdate(\c,\r){\ll}{#4}%
+ \xdef\lv{1}%
\else
\ifnum\chitdbglvl>2%
\node[minimum width=#3cm,minimum height=#3cm,
- draw,transform shape] at (\c,\r) {};
- \fi
+ draw,transform shape] at (\c,\r) {};%
+ \fi%
\ifx\u\chit@blank\else%
\chit[\u=\ti,zone oob point={\u}{\c}{\r}](\c,\r);%
\fi%
\chit@oob@cellupdate(\c,\r){#2}{#3}{\y}
- \fi
- \fi
- }
- \fi
- }
- \fi
+ \fi%
+ \fi%
+ }%
+ \fi%
+ }%
+ \fi%
\chit@dbg{2}{ End of chits in turn
- \ti\space(c=`\c',r=`\r',o='\o',y='\y')}
+ \ti\space(c=`\c',r=`\r',o='\o',y='\y')}%
% --- Not relevant, I think
% IF no units where given, then we force \c to be non-zero so that
% \chit@oob@turnupdate increments the row
@@ -826,7 +946,7 @@
% rows.
\ifnum\y>0%
\chit@dbg{2}{ Looping rows from 2 to \y, break when row > \y}%
- \foreach \rr in {2,...,\y}{
+ \foreach \rr in {2,...,\y}{%
%\ifnum\rr>\y% A little funny, but \y can be negative!
% \chit@dbg{2}{ \space Breaking loop \rr\space > \y}%
% \breakforeach%
@@ -834,7 +954,7 @@
\chit@oob@rowupdate(\c,\r){#3}{0}% Extra spacing?
%\fi
}
- \fi
+ \fi%
% --- Not relevant I think
% This will zero \c. However, if on entry |\c|>0, then we also
% increment the row
@@ -856,12 +976,17 @@
\fi
\fi
% \xdef\y{0}
- \chit@dbg{2}{End of turn \ti\space(c=`\c',r=`\r',o='\o',y='\y')}
- }
- \chit@dbg{3}{End of OOB (c=`\c',r=`\r',y=`\y')}
- \@ifnextchar;{\@gobble}{}}
+ \chit@dbg{2}{End of turn \ti\space(c=`\c',r=`\r',o='\o',y='\y')}%
+ }%
+ \chit@dbg{3}{End of OOB (c=`\c',r=`\r',y=`\y')}%
+ \@ifnextchar;{\@gobble}{}}%
\tikzset{
- chit/cell background/.style={fill=black},
+ chit/cell background/.style={draw=black},
+ %% Define to not dp anyting to disable wings
+ chit/cell wings/.style={
+ dashed,
+ dash pattern=on 0pt off 3pt on 3pt off 0pt,
+ draw=black},
%chit/cell background flipped/.style={fill=black},
blank chit/.style={/chit/frame={draw=none,fill=none}},
chit/grid lines/.style={dashed},
@@ -882,12 +1007,35 @@
\pgfmathparse{ifthenelse(#1>=#4*(#3-1),0,#1+#4)}%
\xdef#1{\pgfmathresult}%
}
+\def\chit@cell@frame#1#2{%
+ \coordinate(cell@frame@north east) at ($(#1.north east)+( #2/2, #2/2)$);
+ \coordinate(cell@frame@north west) at ($(#1.north west)+(-#2/2, #2/2)$);
+ \coordinate(cell@frame@south east) at ($(#1.south east)+( #2/2,-#2/2)$);
+ \coordinate(cell@frame@south west) at ($(#1.south west)+(-#2/2,-#2/2)$);
+ \draw[chit/cell background,fill=none,scale line widths,line width=#2cm]
+ (cell@frame@south west) rectangle (cell@frame@north east);
+ \draw[scale line widths,line width=#2cm,chit/cell wings=10pt,fill=none,scale line widths,line width=#2cm]
+ (cell@frame@north east)--++( 0,10*#2)
+ (cell@frame@north east)--++( 10*#2,0)
+ (cell@frame@north west)--++( 0,10*#2)
+ (cell@frame@north west)--++(-10*#2,0)
+ (cell@frame@south east)--++( 0,-10*#2)
+ (cell@frame@south east)--++( 10*#2,0)
+ (cell@frame@south west)--++( 0,-10*#2)
+ (cell@frame@south west)--++(-10*#2,0)
+ ;
+}
\def\chits{%
\@ifstar{\chits@resetfalse\@chits}{\chits@resettrue\@chits}}
+\newcount\wg@col
+\newcount\wg@row
\def\@chits#1#2#3{
\ifchits@reset
- \def\r{0}%
- \def\c{0}%
+ %\def\r{0}%
+ %\def\c{0}%
+ \coordinate(wg@next) at (0,0);
+ \wg@col=1
+ \wg@row=1
\fi
\chit@dbg{1}{Chits to make: #1}%
\foreach[count=\ti from 0] \t/\x in #1{%
@@ -903,15 +1051,48 @@
\ifx\u\chit@blank%
\chit@dbg{3}{Ignoring blank chit:\u}%
\else%
- \chit@cellbg(\c,\r){#3}%
- \chit[\u=\ti](\c,\r)%
- \chit@sng@cellupdate(\c,\r){#2}{#3}%
+ \ifx\u\chit@oob@vspacer%
+ \chit@dbg{3}{Ignoring vertical spacer:\u}%
+ \else
+ \ifx\u\chit@oob@spacer%
+ \chit@dbg{3}{Ignoring horizontal spacer:\u}%
+ \else
+ % \chit@cellbg(\c,\r){#3}%
+ %\chit[\u=\ti](\c,\r)%
+ \chit[\u=\ti](wg@next)(wg@chit)%
+ \chit@cell@frame{wg@chit}{#3}
+ \global\advance\wg@col1
+ \ifnum\wg@col>#2%
+ \path
+ let
+ \p1=(wg@chit.north),
+ \p2=(wg@chit.south),
+ \p3=(wg@chit),
+ \n1={\y3-\y1+\y2-#3cm} in
+ coordinate(wg@next) at (0,\n1);
+ \global\wg@col=1
+ \global\advance\wg@row1
+ \chit@dbg{10}{Row row, next column `\the\wg@col'}
+ \else
+ \path
+ let
+ \p1=(wg@chit.east),
+ \p2=(wg@chit.west),
+ \p3=(wg@chit),
+ \n1={\x3+\x1-\x2+#3cm} in
+ coordinate(wg@next) at (\n1,\y3);
+ \chit@dbg{10}{Next column `\the\wg@col'}
+ \fi
+ %\chit@sng@cellupdate(\c,\r){#2}{#3}%
+ \fi%
+ \fi%
\fi%
}%
\fi%
}%
\fi%
}%
+ \chit@dbg{10}{Table is `\the\wg@col'x`\the\wg@row'}
\@ifnextchar;{\@gobble}{}}
\def\chitgrid#1#2#3{%
\pgfmathparse{#3/2}\edef\rmin{\pgfmathresult}%
@@ -936,14 +1117,22 @@
}
\def\doublechits{%
\@ifstar{\chits@resetfalse\@doublechits}{\chits@resettrue\@doublechits}}
+\newdimen\chit@w
+\newdimen\chit@h
\def\@doublechits#1#2#3{%
\chit@dbg{1}{Setting double-sided chits: #1}
- \ifchits@reset
- \pgfmathparse{-(#2-.5)*#3}
- \xdef\c{\pgfmathresult}
- \def\r{0}
- \fi
-
+ \ifchits@reset%
+ %\pgfmathparse{-(#2-.5)*#3}
+ %\xdef\c{\pgfmathresult}
+ %\def\r{0}
+ \coordinate(wg@next) at (0,0);%
+ \coordinate(wg@fnxt) at (0,0);%
+ \wg@col=1%
+ \wg@row=1%
+ \chit@w=0pt%
+ \chit@h=0pt%
+ \fi%
+ %
\foreach[count=\ti from 0] \t/\x in #1{
\ifx\t\empty\else%
\foreach \u/\m in \t{
@@ -955,21 +1144,105 @@
\ifx\u\chit@blank
\chit@dbg{3}{Ignoring blank chit:\u}
\else
- \chit@cellbg(\c,\r){#3}
- \chit[\u=\ti](\c,\r)
- \chit@dbl@flip(\c,\r){#3}
- \chit@celldblbg(\mc,\r){#3}
- \chit[\u\space flipped=\ti,zone turn=\t,zone mult=\n](\mc,\r)
- \chit@dbl@cellupdate(\c,\r){#2}{#3}
- \fi
- }
- \fi
- }
- \fi
- }
- \draw[dashed](0,-3*#3/4)--(0,\r-#3/4);%
- \draw[dashed,<-] (#3/5,-2*#3/3)--(#3/2,-2*#3/3) node[transform shape,anchor=west]{Back};%
- \draw[dashed,<-] (-#3/5,-2*#3/3)--(-#3/2,-2*#3/3) node[transform shape,anchor=east]{Front};%
+ \ifx\u\chit@oob@vspacer%
+ \chit@dbg{3}{Ignoring vertical spacer:\u}%
+ \else
+ \ifx\u\chit@oob@spacer%
+ \chit@dbg{3}{Ignoring horizontal spacer:\u}%
+ \else
+ \chit@dbg{10}{Drawing `\u' at wg@next}
+ \chit[\u=\ti](wg@next)(wg@chit)%
+ \chit@cell@frame{wg@chit}{#3}
+ \ifdim\chit@w=0pt
+ \pgfextractx\chit@w{\pgfpointanchor{wg@chit}{east}}%
+ \pgfextractx\wg@tmpa{\pgfpointanchor{wg@chit}{west}}%
+ \advance\chit@w-\wg@tmpa%
+ \global\advance\chit@w#3cm%
+ \pgfextracty\chit@h{\pgfpointanchor{wg@chit}{north}}%
+ \pgfextracty\wg@tmpa{\pgfpointanchor{wg@chit}{south}}%
+ \advance\chit@h-\wg@tmpa%
+ \global\advance\chit@h#3cm%
+ \fi
+ \ifnum\wg@col=1
+ \pgfextractx\wg@tmpa{\pgfpointanchor{wg@chit}{center}}%
+ \advance\wg@tmpa+\chit@w%
+ \coordinate(wg@fnxt) at ($(wg@chit)+(\the\chit@w,0pt)$);
+ %\coordinate(wg@fnxt
+ %\chit@dbg{10}{Calculating wg@fnxt since `\the\wg@col'==1}
+ %\path
+ %let
+ %\p1=(wg@chit.east),
+ %\p2=(wg@chit.west),
+ %\p3=(wg@chit),
+ %\n1={\x3+\x1-\x2+#3cm} in
+ %coordinate(wg@fnxt) at (\n1,\y3);
+ \fi
+ %\chit@dbg{10}{Drawing `\u\space flipped' at wg@fnxt}
+ \chit[\u\space flipped=\ti,
+ zone turn=\t,
+ zone mult=\n](wg@fnxt)(wg@flip)%
+ \chit@cell@frame{wg@flip}{#3}
+ \chit@dbg{10}{Next column: `\the\wg@col'}
+ \ifnum\wg@col=1
+ \ifnum\wg@row=1
+ \coordinate(wg@table@top) at (wg@chit.north east);
+ \fi
+ \coordinate(wg@table@bot) at (wg@chit.south east);
+ \fi
+ \global\advance\wg@col1
+ \ifnum\wg@col>#2%
+ % \path
+ % let
+ % \p1=(wg@chit.north),
+ % \p2=(wg@chit.south),
+ % \p3=(wg@chit),
+ % \n1={\y3-\y1+\y2-#3cm} in %1.21991
+ % coordinate(wg@next) at (0,\n1);
+ \coordinate(wg@next) at (0,-\wg@row\chit@h);
+ \global\wg@col=1
+ \global\advance\wg@row1
+ \chit@dbg{10}{Row row, next column `\the\wg@col'}
+ \else
+ % \path
+ % let
+ % \p1=(wg@chit.east),
+ % \p2=(wg@chit.west),
+ % \p3=(wg@chit),
+ % \p4=(wg@flip.east),
+ % \p5=(wg@flip.west),
+ % \p6=(wg@flip),
+ % \n1={\x3-\x1+\x2-#3cm},
+ % \n2={\x6+\x4-\x5+#3cm} in
+ % coordinate(wg@next) at (\n1,\y3)
+ % coordinate(wg@fnxt) at (\n2,\y6);
+ \coordinate(wg@next) at ($(wg@chit)+(-\the\chit@w,0)$);
+ \coordinate(wg@fnxt) at ($(wg@flip)+(+\the\chit@w,0)$);
+ \chit@dbg{10}{Next column `\the\wg@col'}
+ \fi
+ \fi%
+ \fi%
+ \fi%
+ }%
+ \fi%
+ }%
+ \fi%
+ }%
+ \draw[dashed,scale line widths](wg@table@top)--++(0,.4);
+ \draw[dashed,scale line widths](wg@table@bot)--++(0,-.4);
+ \draw[dashed,scale line widths,{Stealth[]}-]
+ ($(wg@table@top)+(0,.2)$) -- ++(.5,0)
+ node[transform shape,anchor=west]{Back};
+ \draw[dashed,scale line widths,{Stealth[]}-]
+ ($(wg@table@top)+(0,.2)$) -- ++(-.5,0)
+ node[transform shape,anchor=east]{Front};
+ \draw[dashed,scale line widths,{Stealth[]}-]
+ ($(wg@table@bot)+(0,-.2)$) -- ++(.5,0)
+ node[transform shape,anchor=west]{Back};
+ \draw[dashed,scale line widths,{Stealth[]}-]
+ ($(wg@table@bot)+(0,-.2)$) -- ++(-.5,0)
+ node[transform shape,anchor=east]{Front};
+ % \draw[dashed,<-] (#3/5,-2*#3/3)--(#3/2,-2*#3/3) node[transform shape,anchor=west]{Back};%
+ % \draw[dashed,<-] (-#3/5,-2*#3/3)--(-#3/2,-2*#3/3) node[transform shape,anchor=east]{Front};%
% \foreach \cc in {0,...,#2}{
% \draw[dashed] (\cc*#3,-3*#3/4)--(\cc*#3,\r-#3/4);
% \draw[dashed] (-\cc*#3,-3*#3/4)--(-\cc*#3,\r-#3/4);}
@@ -980,15 +1253,18 @@
% \draw[dashed] (-#2*#3-#3/4,\rr)--(#2*#3+#3/4,\rr);}
\@ifnextchar;{\@gobble}{}}
\def\doublechitgrid#1#2#3{%
+ \message{^^JWARNING - the grid table might be messed up!}
+ %\iffalse
\pgfmathparse{#3/2}\edef\rmin{\pgfmathresult}%
\pgfmathparse{#2*#3-#3/2}\edef\rmax{\pgfmathresult}%
\foreach \cc in {0,...,#1}{
- \draw[chit/grid lines] (\cc*#3,-3*#3/4)--(\cc*#3,\rmax+#3/4);
- \draw[chit/grid lines] (-\cc*#3,-3*#3/4)--(-\cc*#3,\rmax+#3/4);}
+ \draw[chit/grid lines] (\cc*#3+\rmin,3*#3/4)--(\cc*#3+\rmin,-\rmax-#3/4);
+ \draw[chit/grid lines] (-\cc*#3+\rmin,3*#3/4)--(-\cc*#3+\rmin,-\rmax-#3/4);}
%\chit@dbg{0}{Drawing horizontal lines from `-\rmin, `\rmin', ..., `\rmax'}
- \foreach \rr in {-\rmin,\rmin,...,\rmax}{
- %\chit@dbg{0}{Horizontal line at `\rr'}
- \draw[chit/grid lines] (-#1*#3-#3/4,\rr)--(#1*#3+#3/4,\rr);}
+ \foreach \rr in {\rmin,-\rmin,...,-\rmax}{
+ \chit@dbg{0}{Horizontal line at `\rr'}
+ \draw[chit/grid lines] (-#1*#3-#3/4+\rmin,\rr)--(#1*#3+#3/4+\rmin,\rr);}
+ %\fi
}
\tikzset{%
battle marker/.pic={
@@ -1023,7 +1299,7 @@
\tikzset{
pics/result marker/.style args={#1,#2}{
code={
- \message{^^JResults marker #1 (#2)}
+ \chit@dbg{3}{Results marker #1 (#2)}
\node[shape=circle,
font=\sffamily\bfseries\large,
inner sep=0pt,
@@ -1097,6 +1373,12 @@
% \pgfusepath{draw} %draw border
% \pgfusepath{draw} %draw rectangle
}}
+\newif\ifwg@dsixdot\wg@dsixdotfalse
+\tikzset{
+ d6 dots/.is if=wg@dsixdot,
+ d6 dots/.initial=false,
+ d6 dots/.default=true
+}
\pgfdeclareshape{d6}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text}{
@@ -1105,7 +1387,48 @@
\backgroundpath{ % draw border
\pgfpathrectanglecorners{\pgfpoint{.4cm}{.4cm}}{\pgfpoint{-.4cm}{-.4cm}}
% \pgfusepath{draw} %draw rectangle
- }}
+ }
+ \behindforegroundpath{ % draw border
+ \ifwg@dsixdot%
+ \edef\numdots{\tikz@node@content}%
+ % Draw over text
+ \pgfpathrectanglecorners{\pgfpoint{.4cm}{.4cm}}{\pgfpoint{-.4cm}{-.4cm}}%
+ \pgfusepath{fill} %draw rectangle
+ \ifx\tikz@textcolor\pgfutilempty%
+ \pgfutil@colorlet{.}{pgfstrokecolor}%
+ \else
+ % \pgfsetfillcolor{\tikz@textcolor}%
+ \pgfutil@colorlet{.}{\tikz@textcolor}%
+ \fi
+ \pgfsetfillcolor{.}%
+ \ifodd\numdots
+ %\message{^^JCenter dot}
+ \pgfpathcircle{\pgfpoint{0cm}{0cm}}{.09cm}
+ \fi
+ \ifnum\numdots=2%
+ %\message{^^JSpecial 2}
+ \pgfpathcircle{\pgfpointpolar{-45}{.32cm}}{.09cm}
+ \pgfpathcircle{\pgfpointpolar{135}{.32cm}}{.09cm}
+ \fi%
+ \ifnum\numdots>2%
+ %\message{^^JAt least 2}
+ \pgfpathcircle{\pgfpointpolar{-45}{.35cm}}{.09cm}
+ \pgfpathcircle{\pgfpointpolar{135}{.35cm}}{.09cm}
+ \fi%
+ \ifnum\numdots>3%
+ %\message{^^JAt least 4}
+ \pgfpathcircle{\pgfpointpolar{ 45}{.35cm}}{.09cm}
+ \pgfpathcircle{\pgfpointpolar{-135}{.35cm}}{.09cm}
+ \fi%
+ \ifnum\numdots=6%
+ %\message{^^JLucky 6}
+ \pgfpathcircle{\pgfpoint{-.247cm}{0cm}}{.09cm}
+ \pgfpathcircle{\pgfpoint{ .247cm}{0cm}}{.09cm}
+ \fi
+ \pgfusepath{fill} %draw rectangle
+ \fi%
+ }
+}
\pgfdeclareshape{d8}{
\anchor{center}{\pgfpointorigin} % within the node, (0,0) is the center
\anchor{text}{
@@ -1226,7 +1549,7 @@
\pgfkeysalso{%
chit has drop=true,
/tikz/blur shadow={shadow blur steps=5,
- shadow opacity=25,
+ shadow opacity=30,
shadow xshift=.05cm,
shadow yshift=-.05cm,
shadow blur radius=.05cm,
diff --git a/Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.hex.code.tex b/Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.hex.code.tex
index 2dde041e313..f08d0574e02 100644
--- a/Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.hex.code.tex
+++ b/Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.hex.code.tex
@@ -9,6 +9,8 @@
%% hex/shape.dtx (with options: `hex')
%% hex/terrain.dtx (with options: `hex')
%% hex/terrain/beach.dtx (with options: `hex')
+%% hex/terrain/fields.dtx (with options: `hex')
+%% hex/terrain/speckle.dtx (with options: `hex')
%% hex/terrain/light_woods.dtx (with options: `hex')
%% hex/terrain/woods.dtx (with options: `hex')
%% hex/terrain/swamp.dtx (with options: `hex')
@@ -223,7 +225,7 @@
\xdef\hex@eff@row{\pgfmathresult}%
\hex@dbg{2}{Effective row: \hex@coords@row@fac * (\hex@row +
\hex@coords@row@off) -> \hex@eff@row}%
- \pgfmathparse{(2*\hex@eff@row-mod(round((\hex@col+\hex@coords@col@off)),2))*\hex@yy}%
+ %\pgfmathparse{(2*\hex@eff@row-mod(round((\hex@col+\hex@coords@col@off)),2))*\hex@yy}%
\pgfmathparse{(2*\hex@eff@row-mod(abs(round(\hex@col+\hex@coords@col@off)),2))*\hex@yy}%
\xdef\hex@y{\pgfmathresult}%
\ifx\hex@vtx\@empty\else%
@@ -533,15 +535,19 @@
code/.store in=\hex@t@code,%
clip/.store in=\hex@t@clip,%
random rotation/.is if=@hex@t@rot,
+ rotate/.store in=\hex@t@s@angle,
pic/.default=,
image/.default=,
code/.default=,
clip/.default=,
+ rotate/.default=,
}
\iffalse
\tikzset{
/hex/terrain/.cd,%
beach/.style={pic=hex/terrain/beach},
+ fields/.style={pic=hex/terrain/fields},
+ speckle/.style={pic=hex/terrain/speckle},
light woods/.style={pic=hex/terrain/light woods},
woods/.style={pic=hex/terrain/woods},
swamp/.style={pic=hex/terrain/swamp},
@@ -555,6 +561,8 @@
\tikzset{
/hex/terrain/.cd,%
beach/.style={image=wargame.beach},
+ fields/.style={image=wargame.fields},
+ speckle/.style={image=wargame.speckle},
light woods/.style={image=wargame.light_woods},
woods/.style={image=wargame.woods},
swamp/.style={image=wargame.swamp},
@@ -597,6 +605,12 @@
\if@hex@t@rot%
\pgfmathrandominteger{\hex@t@angle}{0}{5}
\pgfmathparse{int(60*\hex@t@angle)}\edef\hex@t@angle{\pgfmathresult}%
+ \else%
+ \@ifundefined{hex@t@s@angle}{}{
+ \ifx\hex@t@s@angle\@empty%
+ \else%
+ \edef\hex@t@angle{\hex@t@s@angle}%
+ \fi}%
\fi%
\hex@dbg{5}{Will rotate terrain by `\hex@t@angle'}%
\scope[rotate=\hex@t@angle]%
@@ -671,7 +685,7 @@
pics/hex/#2sextant/S/.style=hex/#2sextant/south,
pics/hex/#2sextant/SE/.style=hex/#2sextant/south east,
pics/hex/#2sextant/C/.style=hex/#2sextant/center,
- }
+ }%
}
\hex@make@sextants{.7}{}
\hex@make@sextants{.3}{large }
@@ -1347,6 +1361,83 @@
}
\fi
\tikzset{
+ hex/terrain/fields/.style={%
+ draw=none%
+ }%
+}
+\ifhex@terrain@pic
+\tikzset{
+ hex/terrain/fields/.pic={
+ \path[draw=none,fill=none](1,0)
+ --(60:1)
+ --(120:1)
+ --(180:1)
+ --(240:1)
+ --(300:1)
+ --cycle;
+ \fill[black,opacity=.05] ( .1, .3)rectangle++(.5,.4);
+ \fill[white,opacity=.15] (-.65, -.5)rectangle++(.3,.5);
+ \fill[white,opacity=.25] (-.60, .2)rectangle++(.6,.5);
+ \fill[black,opacity=.02] (-.30, -.1)rectangle++(.4,.2);
+ \fill[black,opacity=.02] (-.50, -.8)rectangle++(.4,.25);
+ \fill[black,opacity=.05] (-.30, -.5)rectangle++(.4,.35);
+ \fill[white,opacity=.15] ( .15, -.6)rectangle++(.4,.8);
+ \fill[black,opacity=.02] (-.05, -.8)rectangle++(.5,.15);
+ \fill[black,opacity=.02] (-.8, -.3)rectangle++(.1,.6);
+ \fill[black,opacity=.02] ( .6, -.35)rectangle++(.2,.6);
+ }
+}
+\fi
+\tikzset{
+ hex/terrain/speckle/.style={%
+ }%
+}
+\ifhex@terrain@pic
+\pgfmathdeclarerandomlist{black white speckles}{{black}{white}}
+\pgfmathdeclarerandomlist{gray white speckles}{{gray}{white}}
+\tikzset{
+ hex/terrain/speckle/minimum radius/.initial=3,
+ hex/terrain/speckle/maximum radius/.initial=10,
+ hex/terrain/speckle/minimum opacity/.initial=3,
+ hex/terrain/speckle/maximum opacity/.initial=7,
+ %%
+ pics/hex/terrain/speckle/.style args={#1,#2}{
+ code={
+ \tikzset{
+ hex/terrain/speckle/minimum radius/.get=\minR,
+ hex/terrain/speckle/maximum radius/.get=\maxR,
+ hex/terrain/speckle/minimum opacity/.get=\minO,
+ hex/terrain/speckle/maximum opacity/.get=\maxO,
+ }
+ \foreach \i in {1,...,#1}{
+
+ \pgfmathrandominteger{\R}{\minR}{\maxR}
+ \pgfmathrandominteger{\n}{1}{3}% Sub trapezoid
+ \pgfmathrandominteger{\x}{0}{100}% X coordinate
+ \pgfmathrandominteger{\y}{0}{100}% Y coordinate
+ \pgfmathrandominteger{\o}{\minO}{\maxO}% Opacity
+ \pgfmathrandomitem{\c}{#2}
+ \pgfmathparse{\x/100}\edef\x{\pgfmathresult}
+ \pgfmathparse{\y/100}\edef\y{\pgfmathresult}
+ \pgfmathparse{\R/100}\edef\R{\pgfmathresult}
+ \pgfmathparse{\o/100}\edef\o{\pgfmathresult}
+ \pgfmathparse{1-\R}\edef\O{\pgfmathresult}
+ \ifnum\n=1
+ \fill[\c,opacity=\o]($\y*(120:\O)+(\x-\R,0)$) circle(\R);
+ \else
+ \ifnum\n=2
+ \fill[\c,opacity=\o]($\y*(240:\O)+(\x-\R,0)$) circle(\R);
+ \else
+ \fill[\c,opacity=\o]($\x*(120:\O)+\y*(240:\O)$) circle(\R);
+ \fi
+ \fi
+ }
+ }
+ },
+ pics/hex/terrain/speckle/.default={200,gray white speckles}
+}
+\fi
+\tikzset{
hex/terrain/light woods/.style={
draw=none,
fill={rgb,100:red,69;green,98;blue,69}
@@ -12832,170 +12923,170 @@
\@ifnextchar[{\bo@rdfr@me@}{\bo@rdfr@me@[]}%]
}
\def\bo@rdfr@me@u(#1)#2#3#4#5{
- \hex@coords@conv{#1}
+ \hex@coords@conv{#1}%
% \hex@dbg{0}{#1 -> `\hex@x',`\hex@y'}
- \pgfmathparse{min(#2,\hex@x)}\xdef#2{\pgfmathresult}
- \pgfmathparse{min(#3,\hex@y)}\xdef#3{\pgfmathresult}
- \pgfmathparse{max(#4,\hex@x)}\xdef#4{\pgfmathresult}
- \pgfmathparse{max(#5,\hex@y)}\xdef#5{\pgfmathresult}
- \hex@dbg{2}{#1 -> ll=`#2',`#3', ur=`#4',`#5'}
+ \pgfmathparse{min(#2,\hex@x)}\xdef#2{\pgfmathresult}%
+ \pgfmathparse{min(#3,\hex@y)}\xdef#3{\pgfmathresult}%
+ \pgfmathparse{max(#4,\hex@x)}\xdef#4{\pgfmathresult}%
+ \pgfmathparse{max(#5,\hex@y)}\xdef#5{\pgfmathresult}%
+ \hex@dbg{2}{#1 -> ll=`#2',`#3', ur=`#4',`#5'}%
}
-\def\bo@rdfr@me@[#1]#2#3#4#5{
+\def\bo@rdfr@me@[#1]#2#3#4#5{%
% Define rtmp and a ctmp to by directions
- \pgfmathparse{int(\hex@coords@row@fac)}\edef\rtmp{\pgfmathresult}
- \pgfmathparse{int(\hex@coords@col@fac)}\edef\ctmp{\pgfmathresult}
+ \pgfmathparse{int(\hex@coords@row@fac)}\edef\rtmp{\pgfmathresult}%
+ \pgfmathparse{int(\hex@coords@col@fac)}\edef\ctmp{\pgfmathresult}%
% Define vertices for path
- \def\ctfv{SW}
- \def\ctsv{SE}
- \def\cbfv{NE}
- \def\cbsv{NW}
- \def\rrfv{E}
- \def\rrsv{NE}
- \def\rlfv{W}
- \def\rlsv{SW}
+ \def\ctfv{SW}%
+ \def\ctsv{SE}%
+ \def\cbfv{NE}%
+ \def\cbsv{NW}%
+ \def\rrfv{E}%
+ \def\rrsv{NE}%
+ \def\rlfv{W}%
+ \def\rlsv{SW}%
% Swap around some definitions based on the row direction
- \ifnum\rtmp<0
- \let\max@short\hex@bot@short@col
- \let\min@short\hex@top@short@col
- \let\swp\ctfv\let\ctfv\cbsv\let\cbsv\swp
- \let\swp\ctsv\let\ctsv\cbfv\let\cbfv\swp
- \def\rrsv{SE}
- \def\rlsv{NW}
- \else
- \let\max@short\hex@top@short@col
- \let\min@short\hex@bot@short@col
- \fi
+ \ifnum\rtmp<0%
+ \let\max@short\hex@bot@short@col%
+ \let\min@short\hex@top@short@col%
+ \let\swp\ctfv\let\ctfv\cbsv\let\cbsv\swp%
+ \let\swp\ctsv\let\ctsv\cbfv\let\cbfv\swp%
+ \def\rrsv{SE}%
+ \def\rlsv{NW}%
+ \else%
+ \let\max@short\hex@top@short@col%
+ \let\min@short\hex@bot@short@col%
+ \fi%
% Swap around some definitions based on the column direction
- \ifnum\ctmp<0
- \let\swp\ctfv\let\ctfv\ctsv\let\ctsv\swp
- \let\swp\cbfv\let\cbfv\cbsv\let\cbsv\swp
- \let\swp\rrfv\let\rrfv\rlsv\let\rlsv\swp
- \let\swp\rrsv\let\rrsv\rlfv\let\rlfv\swp
- \fi
+ \ifnum\ctmp<0%
+ \let\swp\ctfv\let\ctfv\ctsv\let\ctsv\swp%
+ \let\swp\cbfv\let\cbfv\cbsv\let\cbsv\swp%
+ \let\swp\rrfv\let\rrfv\rlsv\let\rlsv\swp%
+ \let\swp\rrsv\let\rrsv\rlfv\let\rlfv\swp%
+ \fi%
% Define tmp = 0 if no shorts, 1 if top short, 2 if both
\pgfmathparse{ifthenelse(\hex@got@top@short,
- ifthenelse(\hex@got@bot@short,2,1),0)}\edef\tmp{\pgfmathresult}
+ ifthenelse(\hex@got@bot@short,2,1),0)}\edef\tmp{\pgfmathresult}%
% If top-short, set factors
- \ifnum\tmp=1
- \def\mnf{-1}
- \def\mxf{-1}
- \def\mnn{}
- \def\mxn{}
+ \ifnum\tmp=1%
+ \def\mnf{-1}%
+ \def\mxf{-1}%
+ \def\mnn{}%
+ \def\mxn{}%
% If both short, set factors
- \else\ifnum\tmp=2
- \def\mnf{\rtmp}
- \def\mxf{(-\rtmp)}
+ \else\ifnum\tmp=2%
+ \def\mnf{\rtmp}%
+ \def\mxf{(-\rtmp)}%
% If inverse rows, set factors
- \ifnum\rtmp<0
- \def\mnn{}
- \def\mxn{not}
- \else
- \def\mnn{not}
- \def\mxn{}
- \fi
+ \ifnum\rtmp<0%
+ \def\mnn{}%
+ \def\mxn{not}%
+ \else%
+ \def\mnn{not}%
+ \def\mxn{}%
+ \fi%
% If none is short
- \else
- \def\mnf{1}
- \def\mxf{1}
- \def\mnn{not}
- \def\mxn{not}
- \fi\fi
+ \else%
+ \def\mnf{1}%
+ \def\mxf{1}%
+ \def\mnn{not}%
+ \def\mxn{not}%
+ \fi\fi%
% Define row@mn to give least row of column
\def\row@mn##1{%
\pgfmathparse{int(#3+\mnf*
\hex@coords@row@fac*\min@short(##1)*
- \mnn(\min@short(\hex@coords@col@off)))}
- \edef\lr{\pgfmathresult}}
+ \mnn(\min@short(\hex@coords@col@off)))}%
+ \edef\lr{\pgfmathresult}}%
% Define row@mx to give largest row of column
\def\row@mx##1{%
\pgfmathparse{int(#5+\mxf*
\hex@coords@row@fac*\max@short(##1)*
- \mxn(\max@short(\hex@coords@col@off)))}
- \edef\ur{\pgfmathresult}}
+ \mxn(\max@short(\hex@coords@col@off)))}%
+ \edef\ur{\pgfmathresult}}%
%
%
% Below defines a path around the perimeter of the hexes.
%
- \def\@llx{10000}
- \def\@lly{10000}
- \def\@urx{-10000}
- \def\@ury{-10000}
+ \def\@llx{10000}%
+ \def\@lly{10000}%
+ \def\@urx{-10000}%
+ \def\@ury{-10000}%
% Start with an empty path
\def\p{}
% Loop across least row (can be top if \rtmp<0)
\foreach \c in {#2,...,#4}{%
- \row@mn{\c}
- \row@mx{\c}
+ \row@mn{\c}%
+ \row@mx{\c}%
% \message{^^JColumn: `\c' -> `\lr',`\ur' (#3,#5)}
}
\foreach \c in {#2,...,#4}{%
- \row@mn{\c}
+ \row@mn{\c}%
\xdef\p{\p
(hex cs:c=\c,r=\lr,v=\ctfv)--
- (hex cs:c=\c,r=\lr,v=\ctsv)--}
- \bo@rdfr@me@u(c=\c,r=\lr,v=\ctfv)\@llx\@lly\@urx\@ury
- \bo@rdfr@me@u(c=\c,r=\lr,v=\ctsv)\@llx\@lly\@urx\@ury
- }
+ (hex cs:c=\c,r=\lr,v=\ctsv)--}%
+ \bo@rdfr@me@u(c=\c,r=\lr,v=\ctfv)\@llx\@lly\@urx\@ury%
+ \bo@rdfr@me@u(c=\c,r=\lr,v=\ctsv)\@llx\@lly\@urx\@ury%
+ }%
% Go up (down if \rtmp<0) right side
- \row@mn{#4}
- \row@mx{#4}
+ \row@mn{#4}%
+ \row@mx{#4}%
\foreach \r in {\lr,...,\ur}{%
\xdef\p{\p
(hex cs:c=#4,r=\r,v=\rrfv)--
- (hex cs:c=#4,r=\r,v=\rrsv)--}
- \bo@rdfr@me@u(c=#4,r=\r,v=\rrfv)\@llx\@lly\@urx\@ury
- \bo@rdfr@me@u(c=#4,r=\r,v=\rrsv)\@llx\@lly\@urx\@ury
- }
+ (hex cs:c=#4,r=\r,v=\rrsv)--}%
+ \bo@rdfr@me@u(c=#4,r=\r,v=\rrfv)\@llx\@lly\@urx\@ury%
+ \bo@rdfr@me@u(c=#4,r=\r,v=\rrsv)\@llx\@lly\@urx\@ury%
+ }%
% Go across largest row (can be bottom if \rtmp<0)
\foreach \c in {#4,...,#2}{%
- \row@mx{\c}
+ \row@mx{\c}%
% \message{^^JColumn: `\c', max:`\ur'}
\xdef\p{\p
(hex cs:c=\c,r=\ur,v=\cbfv)--
- (hex cs:c=\c,r=\ur,v=\cbsv)--}
- \bo@rdfr@me@u(c=\c,r=\ur,v=\cbfv)\@llx\@lly\@urx\@ury
- \bo@rdfr@me@u(c=\c,r=\ur,v=\cbsv)\@llx\@lly\@urx\@ury
+ (hex cs:c=\c,r=\ur,v=\cbsv)--}%
+ \bo@rdfr@me@u(c=\c,r=\ur,v=\cbfv)\@llx\@lly\@urx\@ury%
+ \bo@rdfr@me@u(c=\c,r=\ur,v=\cbsv)\@llx\@lly\@urx\@ury%
}
% Go up (down if \rtmp<0) left side.
- \row@mn{#2}
- \row@mx{#2}
+ \row@mn{#2}%
+ \row@mx{#2}%
\foreach \r in {\ur,...,\lr}{%
\xdef\p{\p
(hex cs:c=#2,r=\r,v=\rlfv)--
- (hex cs:c=#2,r=\r,v=\rlsv)--}
- \bo@rdfr@me@u(c=#2,r=\r,v=\rlfv)\@llx\@lly\@urx\@ury
- \bo@rdfr@me@u(c=#2,r=\r,v=\rlsv)\@llx\@lly\@urx\@ury
- }
+ (hex cs:c=#2,r=\r,v=\rlsv)--}%
+ \bo@rdfr@me@u(c=#2,r=\r,v=\rlfv)\@llx\@lly\@urx\@ury%
+ \bo@rdfr@me@u(c=#2,r=\r,v=\rlsv)\@llx\@lly\@urx\@ury%
+ }%
% End path with cycle
- \edef\p{\p cycle}
+ \edef\p{\p cycle}%
% Define global path
- \global\let\hex@board@path\p
- \hex@dbg{3}{Hex board path: `\meaning\hex@board@path'}
+ \global\let\hex@board@path\p%
+ \hex@dbg{3}{Hex board path: `\meaning\hex@board@path'}%
% If an optional argument was given, then use that to actually make
% hexes.
- \ifx|#1|\else
+ \ifx|#1|\else%
\foreach[count=\nc] \c in {#2,...,#4}{%
- \row@mn{\c}
- \row@mx{\c}
+ \row@mn{\c}%
+ \row@mx{\c}%
\foreach \r in {\lr,...,\ur}{%
- \hex[#1={\c,\r}](c=\c,r=\r)
- }
- }
- \fi
-}
+ \hex[#1={\c,\r}](c=\c,r=\r)%
+ }%
+ }%
+ \fi%
+}%
\tikzset{%
- /hex/board/no op/.style args={#1,#2}{}}
+ /hex/board/no op/.style args={#1,#2}{}}%
\def\boardhexes{%
\@ifnextchar[{\bo@rdhexes}{\bo@rdhexes[board/no op]}%]
-}
+}%
\def\bo@rdhexes[#1](#2)(#3){%
- \hex@coords@conv{#2}
- \edef\llc{\hex@col}
- \edef\llr{\hex@row}
- \hex@coords@conv{#3}
- \edef\urc{\hex@col}
- \edef\urr{\hex@row}
- \bo@rdfr@me[#1]{\llc}{\llr}{\urc}{\urr}}
+ \hex@coords@conv{#2}%
+ \edef\llc{\hex@col}%
+ \edef\llr{\hex@row}%
+ \hex@coords@conv{#3}%
+ \edef\urc{\hex@col}%
+ \edef\urr{\hex@row}%
+ \bo@rdfr@me[#1]{\llc}{\llr}{\urc}{\urr}}%
\tikzset{board frame bb/.code={
\pgfkeys{
%/tikz/local bounding box=tmp board frame,
@@ -13011,65 +13102,66 @@
}}}}
\def\bo@rdframe[#1](#2)(#3){%
- \hex@coords@conv{#2}
- \edef\llc{\hex@col}
- \edef\llr{\hex@row}
+ \hex@coords@conv{#2}%
+ \edef\llc{\hex@col}%
+ \edef\llr{\hex@row}%
%
\hex@coords@conv{#3}
- \edef\urc{\hex@col}
- \edef\urr{\hex@row}
+ \edef\urc{\hex@col}%
+ \edef\urr{\hex@row}%
%
- \def\margin{#1}
+ \def\margin{#1}%
%
% This will store the bounding box in tmp node `board frame'
\bo@rdfr@me{\llc}{\llr}{\urc}{\urr}%
- \begin{scope}[board frame bb]
- \expandafter\path\hex@board@path;
- \end{scope}
- \hex@dbg{1}{Board frame LL: -> `\llx',`\lly'}
- \pgfmathparse{\llx+ifthenelse(\llx<0,-1,1)*\margin}\edef\llx{\pgfmathresult}
- \pgfmathparse{\lly+ifthenelse(\lly<0,-1,1)*\margin}\edef\lly{\pgfmathresult}
+ \begin{scope}[board frame bb]%
+ \expandafter\path\hex@board@path;%
+ \end{scope}%
+ \hex@dbg{1}{Board frame LL: -> `\llx',`\lly'}%
+ \pgfmathparse{\llx+ifthenelse(\llx<0,-1,1)*\margin}\edef\llx{\pgfmathresult}%
+ \pgfmathparse{\lly+ifthenelse(\lly<0,-1,1)*\margin}\edef\lly{\pgfmathresult}%
%
- \hex@dbg{1}{Board frame UR: -> `\urx',`\ury'}
- \pgfmathparse{\urx+ifthenelse(\urx<0,-1,1)*\margin}\edef\urx{\pgfmathresult}
- \pgfmathparse{\ury+ifthenelse(\ury<0,-1,1)*\margin}\edef\ury{\pgfmathresult}
+ \hex@dbg{1}{Board frame UR: -> `\urx',`\ury'}%
+ \pgfmathparse{\urx+ifthenelse(\urx<0,-1,1)*\margin}\edef\urx{\pgfmathresult}%
+ \pgfmathparse{\ury+ifthenelse(\ury<0,-1,1)*\margin}\edef\ury{\pgfmathresult}%
%
- \pgfmathparse{\urx-\llx}\edef\w{\pgfmathresult}
- \pgfmathparse{\ury-\lly}\edef\h{\pgfmathresult}
+ \pgfmathparse{\urx-\llx}\edef\w{\pgfmathresult}%
+ \pgfmathparse{\ury-\lly}\edef\h{\pgfmathresult}%
%% Print to the log
- \hex@dbg{0}{Board Frame: (\llx,\lly)x(\urx,\ury) (\w x\h) (\llc,\llr)x(\urc,\urr)}
+ \hex@dbg{0}{Board Frame: (\llx,\lly)x(\urx,\ury) (\w x\h) (\llc,\llr)x(\urc,\urr)}%
%% Possibly draw
- \draw[hex/board frame/.try](\llx,\lly) rectangle(\urx,\ury);
+ \draw[hex/board frame/.try](\llx,\lly) rectangle(\urx,\ury);%
%% Store macros
\xdef\boardXmin{\llx}%
\xdef\boardYmin{\lly}%
\xdef\boardXmax{\urx}%
\xdef\boardYmax{\ury}%
+ \@ifnextchar;{\@gobble}{}%
}
-\def\boardpath(#1)(#2){
+\def\boardpath(#1)(#2){%
\hex@coords@reset%
- \tikzset{/hex/coords/.cd, #1}
- \edef\llc{\hex@col}
- \edef\llr{\hex@row}
+ \tikzset{/hex/coords/.cd, #1}%
+ \edef\llc{\hex@col}%
+ \edef\llr{\hex@row}%
%%
\hex@coords@reset%
- \tikzset{/hex/coords/.cd, #2}
- \edef\urc{\hex@col}
- \edef\urr{\hex@row}
-
+ \tikzset{/hex/coords/.cd, #2}%
+ \edef\urc{\hex@col}%
+ \edef\urr{\hex@row}%
% This will store the bounding box in tmp node `board frame'
\bo@rdfr@me{\llc}{\llr}{\urc}{\urr}%
%% Use the path to extract the bounding box
%\begin{scope}[local bounding box=board frame]
% \expandafter\path\hex@board@path;
%\end{scope}
- \global\let\hexboardpath\hex@board@path
+ \global\let\hexboardpath\hex@board@path%
+ \@ifnextchar;{\@gobble}{}%
}
\def\boardclip(#1)(#2)#3{%
- \boardpath(#1)(#2)
+ \boardpath(#1)(#2)%
\draw \ifx|#3|\else[preaction={#3}]\fi%
- [clip] \hexboardpath;
+ [clip] \hexboardpath;%
}
\def\debuggrid{%
diff --git a/Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.natoapp6c.code.tex b/Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.natoapp6c.code.tex
index fe65f5779e2..531065c91b9 100644
--- a/Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.natoapp6c.code.tex
+++ b/Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.natoapp6c.code.tex
@@ -297,8 +297,8 @@
\pgfdeclareshape{natoapp6c friendly equipment}{%
\inheritsavedanchors[from=natoapp6c base]
\savedanchor\northeast{%
- \pgf@x=\n@to@pp@r%
- \pgf@y=\n@to@pp@r}
+ \pgf@x=1.2\n@to@pp@r%
+ \pgf@y=1.2\n@to@pp@r}
\anchor{north east}{\northeast}
\anchor{north west}{\northeast\pgf@x=-\pgf@x}
\anchor{south east}{\northeast\pgf@y=-\pgf@y}
@@ -484,6 +484,49 @@
\backgroundpath{}
\behindforegroundpath{}
}
+\def\n@to@friendly@l@nd{%
+ \northeast \wg@tmpa=\pgf@x\wg@tmpb=\pgf@y%
+ \pgfpathmoveto{\pgfqpoint{ \wg@tmpa}{ \wg@tmpb}}%
+ \pgfpathlineto{\pgfqpoint{-\wg@tmpa}{ \wg@tmpb}}%
+ \pgfpathlineto{\pgfqpoint{-\wg@tmpa}{-\wg@tmpb}}%
+ \pgfpathlineto{\pgfqpoint{ \wg@tmpa}{-\wg@tmpb}}%
+ \pgfclosepath}
+\def\n@to@pp@friendl@dismounted{%
+ \northeast\wg@tmpa=\pgf@x\wg@tmpb\pgf@y%
+ \pgfpathmoveto{\pgfpoint{-\wg@tmpa}{-.5\wg@tmpb}}%
+ \pgfpathlineto{\pgfpoint{-\wg@tmpa}{ .5\wg@tmpb}}%
+ \pgfpathlineto{\pgfpoint{0cm} { \wg@tmpb}}%
+ \pgfpathlineto{\pgfpoint{ \wg@tmpa}{ .5\wg@tmpb}}%
+ \pgfpathlineto{\pgfpoint{ \wg@tmpa}{-.5\wg@tmpb}}%
+ \pgfpathlineto{\pgfpoint{0cm} { -\wg@tmpb}}%
+ \pgfclosepath%
+}%
+\pgfdeclareshape{natoapp6c friendly dismounted}{%
+ \inheritsavedanchors[from=natoapp6c base]
+ \savedanchor\northeast{%
+ \pgf@x=1.1\n@to@pp@r%
+ \pgf@y=1.1\n@to@pp@r}
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{south east}{\northeast\pgf@y=-\pgf@y}
+ \anchor{south west}{\northeast\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
+ \anchor{north}{\northeast\pgf@x=0cm}
+ \anchor{south}{\northeast\pgf@x=0cm\pgf@y=-\pgf@y}
+ \anchor{east}{\northeast\pgf@y=0cm}
+ \anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0cm}
+ \inheritanchor[from=natoapp6c base]{upper}
+ \inheritanchor[from=natoapp6c base]{lower}
+ \inheritanchor[from=natoapp6c base]{left}
+ \inheritanchor[from=natoapp6c base]{right}
+ \inheritanchor[from=natoapp6c base]{center}
+ \backgroundpath{%
+ \n@to@pp@friendl@dismounted%
+ }
+ \behindforegroundpath{%
+ \n@to@pp@friendl@dismounted%
+ \pgfusepath{stroke}%
+ }
+}
\def\n@to@hostile@@ir{%
\southeast \wg@tmpa=\pgf@x\wg@tmpb=\pgf@y%
\cntrl \wg@tmpc=\pgf@y%
@@ -813,6 +856,28 @@
\pgfusepath{stroke}%
}
}
+\pgfdeclareshape{natoapp6c hostile dismounted}{%
+ \inheritsavedanchors[from=natoapp6c hostile land]
+ \inheritanchor[from=natoapp6c hostile land]{inner north east}
+ \inheritanchor[from=natoapp6c hostile land]{inner north west}
+ \inheritanchor[from=natoapp6c hostile land]{inner south west}
+ \inheritanchor[from=natoapp6c hostile land]{inner south east}
+ \inheritanchor[from=natoapp6c hostile land]{north east}
+ \inheritanchor[from=natoapp6c hostile land]{north west}
+ \inheritanchor[from=natoapp6c hostile land]{south east}
+ \inheritanchor[from=natoapp6c hostile land]{south west}
+ \inheritanchor[from=natoapp6c hostile land]{north}
+ \inheritanchor[from=natoapp6c hostile land]{west}
+ \inheritanchor[from=natoapp6c hostile land]{east}
+ \inheritanchor[from=natoapp6c hostile land]{south}
+ \inheritanchor[from=natoapp6c hostile land]{upper}
+ \inheritanchor[from=natoapp6c hostile land]{lower}
+ \inheritanchor[from=natoapp6c hostile land]{left}
+ \inheritanchor[from=natoapp6c hostile land]{right}
+ \inheritanchor[from=natoapp6c hostile land]{center}
+ \inheritbackgroundpath[from=natoapp6c hostile land]
+ \inheritbehindforegroundpath[from=natoapp6c hostile land]
+}
\def\n@to@pp@neutr@l@init{%
\northeast\wg@tmpa=\pgf@x\wg@tmpb=\pgf@y%
\def\n@to@pp@neutr@l@left {\pgflineto{\pgfqpoint{-\wg@tmpa}{-\wg@tmpb}}}%
@@ -1111,6 +1176,29 @@
\pgfusepath{stroke}%
}
}
+\pgfdeclareshape{natoapp6c neutral dismounted}{%
+ \inheritsavedanchors[from=natoapp6c neutral land]
+ \inheritanchor[from=natoapp6c neutral land]{center}
+ \inheritanchor[from=natoapp6c neutral land]{inner north east}
+ \inheritanchor[from=natoapp6c neutral land]{inner north west}
+ \inheritanchor[from=natoapp6c neutral land]{inner south west}
+ \inheritanchor[from=natoapp6c neutral land]{inner south east}
+ \inheritanchor[from=natoapp6c neutral land]{north east}
+ \inheritanchor[from=natoapp6c neutral land]{north west}
+ \inheritanchor[from=natoapp6c neutral land]{south east}
+ \inheritanchor[from=natoapp6c neutral land]{south west}
+ \inheritanchor[from=natoapp6c neutral land]{north}
+ \inheritanchor[from=natoapp6c neutral land]{west}
+ \inheritanchor[from=natoapp6c neutral land]{east}
+ \inheritanchor[from=natoapp6c neutral land]{south}
+ \inheritanchor[from=natoapp6c neutral land]{upper}
+ \inheritanchor[from=natoapp6c neutral land]{lower}
+ \inheritanchor[from=natoapp6c neutral land]{left}
+ \inheritanchor[from=natoapp6c neutral land]{right}
+ \inheritanchor[from=natoapp6c neutral land]{center}
+ \inheritbackgroundpath[from=natoapp6c neutral land]
+ \inheritbehindbackgroundpath[from=natoapp6c neutral land]
+}
\def\n@to@pp@unknown@init{%
\def\n@to@pp@unknown@top{%
\innernortheast \wg@tmpa=\pgf@x%
@@ -1485,6 +1573,28 @@
\n@to@pp@unknown@right %
\pgfusepath{stroke}}
}
+\pgfdeclareshape{natoapp6c unknown dismounted}{%
+ \inheritsavedanchors[from=natoapp6c unknown land]
+ \inheritanchor[from=natoapp6c unknown land]{inner north east}
+ \inheritanchor[from=natoapp6c unknown land]{inner north west}
+ \inheritanchor[from=natoapp6c unknown land]{inner south west}
+ \inheritanchor[from=natoapp6c unknown land]{inner south east}
+ \inheritanchor[from=natoapp6c unknown land]{north east}
+ \inheritanchor[from=natoapp6c unknown land]{north west}
+ \inheritanchor[from=natoapp6c unknown land]{south east}
+ \inheritanchor[from=natoapp6c unknown land]{south west}
+ \inheritanchor[from=natoapp6c unknown land]{north}
+ \inheritanchor[from=natoapp6c unknown land]{west}
+ \inheritanchor[from=natoapp6c unknown land]{east}
+ \inheritanchor[from=natoapp6c unknown land]{south}
+ \inheritanchor[from=natoapp6c unknown land]{upper}
+ \inheritanchor[from=natoapp6c unknown land]{lower}
+ \inheritanchor[from=natoapp6c unknown land]{left}
+ \inheritanchor[from=natoapp6c unknown land]{right}
+ \inheritanchor[from=natoapp6c unknown land]{center}
+ \inheritbackgroundpath[from=natoapp6c unknown land]
+ \inheritbehindforegroundpath[from=natoapp6c unknown land]
+}
\def\n@to@pp@e@y{.12}
\def\n@to@pp@e@yy{.24}
\def\n@to@pp@e@d#1{($(#1*\n@to@pp@e@y,0)$) circle(0.09)}
@@ -1574,6 +1684,7 @@
fac/.store in=\natoapp@fac,
cmd/.store in=\natoapp@cmd,
ech/.store in=\natoapp@ech,
+ path/.store in=\n@to@ppp@th
}
\tikzset{
/natoapp6c/.cd,
@@ -1602,6 +1713,7 @@
command/space/.style={cmd=space},
command/sub surface/.style={cmd=sub surface},
command/sea mine/.style={cmd=sub surface},
+ command/dismounted/.style={cmd=dismounted},
command/none/.style={cmd=none},
}
\tikzset{
@@ -1656,7 +1768,7 @@
\tikzset{%
natoapp6c/.code={%
\pgfkeys{/tikz/transform shape,/tikz/shape=natoapp6c}
- \pgfkeys{/natoapp6c/.cd,#1}}}
+ \pgfkeys{/natoapp6c/.cd,path=natoapp6c/s/,#1}}}
\newcounter{natoappid}\setcounter{natoappid}{0}
\newif\ifn@to@pp@below\n@to@pp@belowfalse%
\newif\ifn@to@pp@mod\n@to@pp@modfalse%
@@ -1685,6 +1797,7 @@
\edef\frameopt{\natoapp@frame}}
\n@to@pp@dbg{3}{NATO App6(c) Frame options: \meaning\frameopt}%
}
+ \savedmacro\thisname{\def\thisname{natoapp6c}}
\anchor{center} {\center}
\anchor{north east}{\wg@sub@nchor{M\id}{north east}}
\anchor{north west}{\wg@sub@nchor{M\id}{north west}}
@@ -1699,17 +1812,26 @@
\anchor{left} {\wg@sub@nchor{M\id}{left}}
\anchor{right} {\wg@sub@nchor{M\id}{right}}
\anchor{echelon} {%
- \n@to@pp@dbg{3}{NATO App6(c) get echelon anchor}%
- \wg@sub@nchor{M\id}{north}%
- \wg@tmpa=\n@to@pp@e@y cm%
+ \wg@sub@nchor{M}{north}%
+ \wg@tmpa\pgflinewidth% by 1.5%
+ %\wg@getscale%
+ %\pgfmathparse{ifthenelse(\wg@scale>0.00001,\wg@tmpa/\wg@scale,\wg@tmpa)}
+ %\edef\wg@a{\pgfmathresult}\pgfmathsetlength{\wg@tmpa}{\wg@a pt}
+ %\n@to@pp@dbg{0}{Scale is `\wg@scale' -> `\the\wg@tmpa'}%
+ %\divide\wg@tmpa by \wg@scale%
+ \advance\wg@tmpa by\n@to@pp@e@y cm%
\advance\pgf@y\wg@tmpa%
- }%
+ }
\anchor{below} {%
\n@to@pp@dbg{3}{NATO App6(c) get below anchor}%
- \wg@sub@nchor{M\id}{south}
+ \wg@sub@nchor{M}{south}%
\wg@tmpa=\n@to@pp@e@yy cm%
- \advance\pgf@y-\wg@tmpa}
+ \advance\wg@tmpa-\pgflinewidth% by 1.5%
+ \advance\pgf@y-\wg@tmpa%
+ }
\behindbackgroundpath{%
+ \wg@ignore@sub@nchortrue%
+ \n@to@pp@dbg{3}{NATO App6(c) Before print}
\n@to@pp@dbg{3}{NATO App6(c) background path: \meaning\id
^^J ID: \meaning\natoapp@id
^^J Faction: \meaning\natoapp@fac
@@ -1734,7 +1856,7 @@
%% Clip to shape in scope
%% \message{^^JClipping to NATO App6(c) shape}
\n@to@pp@iscliptrue%
- \n@to@pp@dbg{2}{NATO App6(c) frame node M (clip)}
+ \n@to@pp@dbg{1}{NATO App6(c) frame node M (clip)}
\pgfnode{natoapp6c \frameshape}{center}{}{M}{\pgfusepath{clip}}
\n@to@pp@isclipfalse%
%% Start new scope including frame key options
@@ -1752,9 +1874,10 @@
\endscope%
% Render mains
\@ifundefined{natoapp@main}{}{
- \n@to@pp@dbg{2}{NATO App6(c) mains: \meaning\natoapp@main}
+ \n@to@pp@dbg{1}{NATO App6(c) mains: \meaning\natoapp@main}
\begin{scope}[natoapp6c/main]
- \wg@pic@all{\natoapp@main}{natoapp6c/s/}{M.center}{natoapp6c/main}%
+ \n@to@pp@dbg{1}{NATO symbol path `\n@to@ppp@th'}
+ \wg@pic@all{\natoapp@main}{\n@to@ppp@th}{M.center}{natoapp6c/main}%
\end{scope}}%
% Modififiers flagged
\n@to@pp@modtrue
@@ -1788,41 +1911,51 @@
\endpgfinterruptboundingbox
\end{scope}%
\fi%
+ \wg@ignore@sub@nchorfalse%
}
\behindforegroundpath{%
- \n@to@pp@dbg{2}{NATO App6(c) foreground path:
+ \wg@ignore@sub@nchortrue%
+ \n@to@pp@dbg{2}{NATO App6(c) foreground path: `\meaning\id'
^^J Echelon: \meaning\natoapp@ech
^^J Symbol: \meaning\frameshape
^^J Below: \meaning\natoapp@below
^^J Frame: \meaning\frameopt}
%
+ %
\ifx\frameshape\pgfutil@empty%
\n@to@pp@dbg{2}{NATO App6(c) has no frame shape!}%
\else%
-
- \edef\tmp@opt{[\frameopt]}
- \expandafter\scope\tmp@opt
- \n@to@pp@dbg{2}{NATO App6(c) inner node `M\id' ===}
- \pgfnode{natoapp6c \frameshape}{center}{}{M\id}{\pgfusepath{stroke}}
+ \edef\tmp@opt{[\frameopt]}
+ \expandafter\scope\tmp@opt
+ \edef\mid{M\id{}}
+ \n@to@pp@dbg{1}{NATO App6(c) inner node `M\id' ===}
+ \pgfnode{natoapp6c \frameshape}{center}{}{M\id}{\pgfusepath{stroke}}
+ \wg@ignore@sub@nchorfalse%
% Put in the echelon
- \@ifundefined{natoapp@ech}{}{%
- \ifx\natoapp@ech\pgfutil@empty\else%
- \def\args{echelon=\natoapp@ech}
- \expandafter\wg@pic\args\@endwg@pic%
- {natoapp6c/s/}{$(M.north)+(0,1.2*\n@to@pp@e@y)$}{natoapp6c/echelon}
- \fi%
- }
- % Put in stuff below main
- \@ifundefined{natoapp@below}{}{%
- \n@to@pp@belowtrue
- \begin{scope}
- \wg@pic@all{\natoapp@below}{natoapp6c/s/}{%
- $(M.south)+(0,-\n@to@pp@e@yy)$}{%
- natoapp6c/below}%
- \end{scope}%
- \n@to@pp@belowfalse}
- \ifnatoapp@decoy%
- \scope[dash pattern=on 3\pgflinewidth off 2\pgflinewidth]%
+ \n@to@pp@dbg{2}{Echelon}
+ \@ifundefined{natoapp@ech}{}{%
+ \ifx\natoapp@ech\pgfutil@empty\else%
+ \def\args{echelon=\natoapp@ech}
+ \n@to@pp@dbg{3}{Make the echelon}%
+ \wg@nchor{\thisname}{echelon}%
+ \expandafter\wg@pic\args\@endwg@pic%
+ {natoapp6c/s/}{\pgf@x,\pgf@y}{natoapp6c/echelon}
+ \fi%
+ }
+ % Put in stuff below main
+ \n@to@pp@dbg{2}{Below}
+ \@ifundefined{natoapp@below}{}{%
+ \n@to@pp@belowtrue
+ \begin{scope}
+ \n@to@pp@dbg{3}{Make below}%
+ \wg@nchor{\thisname}{below}%
+ \wg@pic@all{\natoapp@below}{natoapp6c/s/}{\pgf@x,\pgf@y}{%
+ natoapp6c/below}%
+ \end{scope}%
+ \n@to@pp@belowfalse}
+ \n@to@pp@dbg{2}{Decoy}
+ \ifnatoapp@decoy%
+ \scope[dash pattern=on 3\pgflinewidth off 2\pgflinewidth]%
\n@to@pp@dbg{1}{Drawing decoy modifier}%
\wg@sub@nchor{M\id}{north east}
\wg@tmpa=\pgf@x%
@@ -1834,10 +1967,11 @@
\pgfpathlineto{\pgfqpoint{0cm}{\wg@tmpc}}%
\pgfpathlineto{\pgfqpoint{-\wg@tmpa}{\wg@tmpb}}%
\pgfusepath{stroke}%
+ \endscope%
+ \fi%
\endscope%
\fi%
- \endscope%
- \fi%
+ \wg@ignore@sub@nchorfalse%
}
}
\newcommand\natoapp[1][]{%
@@ -1850,13 +1984,129 @@
\@ifnextchar({\n@to@pp{#1}{#2}}{\n@to@pp{#1}{#2}()}%)
}
\def\n@to@pp#1#2(#3){%
- %\let\name\pgfutil@empty%
- %\ifx|#3|\else\edef\name{(#3)}\fi%
- %\n@to@pp@dbg{3}{Arguments: #1}%
- %\edef\args{[natoapp6c={#1},transform shape] \name at (#2) {}}
- %\expandafter\node\args;%
\node[draw,transform shape,natoapp6c={#1}] (#3) at (#2) {};%
\@ifnextchar;{\@gobble}{}}
+\tikzset{
+ kriegspiel symbol/.code={
+ \pgfkeys{%
+ /tikz/transform shape,%
+ /tikz/shape=kriegspiel symbol}
+ \n@to@pp@dbg{10}{Args for symbol `#1'}
+ \pgfkeys{/natoapp6c/.cd,%
+ path=kriegspiel/s/,%
+ #1}
+ }
+}
+\pgfdeclareshape{kriegspiel symbol}{
+ \inheritsavedanchors[from=natoapp6c]
+ \savedmacro\frameshape{%
+ \def\frameshape{kriegspiel}}
+ \inheritanchor[from=natoapp6c]{center}
+ \inheritanchor[from=natoapp6c]{north east}
+ \inheritanchor[from=natoapp6c]{north west}
+ \inheritanchor[from=natoapp6c]{south east}
+ \inheritanchor[from=natoapp6c]{south west}
+ \inheritanchor[from=natoapp6c]{north}
+ \inheritanchor[from=natoapp6c]{west}
+ \inheritanchor[from=natoapp6c]{south}
+ \inheritanchor[from=natoapp6c]{east}
+ \inheritanchor[from=natoapp6c]{upper}
+ \inheritanchor[from=natoapp6c]{lower}
+ \inheritanchor[from=natoapp6c]{left}
+ \inheritanchor[from=natoapp6c]{right}
+ \anchor{echelon} {%
+ \wg@sub@nchor{M\id}{north west}%
+ \wg@tmpa=\n@to@pp@e@y cm%
+ \divide\wg@tmpa by 2%
+ \advance\pgf@y\wg@tmpa%
+ }%
+ \inheritbackgroundpath[from=natoapp6c]
+ \inheritbehindforegroundpath[from=natoapp6c]
+ \inheritbehindbackgroundpath[from=natoapp6c]
+ \savedmacro\thisname{\def\thisname{kriegspiel symbol}}
+}
+\pgfdeclareshape{natoapp6c kriegspiel}{
+ \inheritsavedanchors[from=rectangle]
+ \inheritbackgroundpath[from=rectangle]
+ \savedanchor\northeast{\pgf@x=1.4cm\pgf@y=.3125cm}
+ \savedanchor\southwest{\pgf@x=-1.4cm\pgf@y=-.3125cm}
+ \inheritanchor[from=rectangle]{center}
+ \inheritanchor[from=rectangle]{north east}
+ \inheritanchor[from=rectangle]{north west}
+ \inheritanchor[from=rectangle]{south east}
+ \inheritanchor[from=rectangle]{south west}
+ \inheritanchor[from=rectangle]{north}
+ \inheritanchor[from=rectangle]{west}
+ \inheritanchor[from=rectangle]{south}
+ \inheritanchor[from=rectangle]{east}
+ \backgroundpath{}
+}
+\tikzset{
+ ks debug frame/.style={
+ draw=none,
+ %draw=magenta,
+ %dashed,
+ },
+ kriegspiel/s/infantry/.pic={
+ \coordinate(a) at (M.south west);
+ \coordinate(b) at ($(M.north east)+(0,-.2)$);
+ \@ifundefinedcolor{pgffillcolor}{}{
+ \path[fill=pgffillcolor](a)rectangle(b);}
+ \path[pic actions,fill=none](a)rectangle(b);
+ \path[pic actions,fill=none](a)--(b);
+ \path[pic actions,fill=none] let
+ \p1=(a),\p2=(b) in (\x2,\y1)--(\x1,\y2);
+ \path[fill=pgfstrokecolor] let
+ \p2=(b) in (-.05,\y2)rectangle++(.1,.2);
+ \draw[ks debug frame](M.south west)rectangle(M.north east);
+ },
+ kriegspiel/s/reconnaissance/.pic={
+ \coordinate(a) at (M.south west);
+ \coordinate(b) at ($(M.north east)+(0,-.2)$);
+ \@ifundefinedcolor{pgffillcolor}{}{
+ \path[fill=pgffillcolor](a)rectangle(b);}
+ \path[pic actions,fill=none](a)rectangle(b);
+ \path[fill=pgfstrokecolor] (a)--(b)--(a|-b)--cycle;
+ \path[fill=pgfstrokecolor] let
+ \p2=(b) in
+ (-.05,\y2)--++(0,.2)--++(-10:.4)--++(-170:.3)--(.05,\y2)--cycle;
+ \draw[ks debug frame](M.south west)rectangle(M.north east);
+ },
+ kriegspiel/s/artillery/.pic={
+ \coordinate(a) at (M.south west);
+ \coordinate(b) at ($(M.north east)+(0,-.5)$);
+ \@ifundefinedcolor{pgffillcolor}{}{
+ \path[fill=pgffillcolor](a)rectangle(b);}
+ \path[pic actions,fill=none](a)rectangle(b);
+ \foreach \s in {-.8,0,.8}{
+ \path[fill=pgfstrokecolor] let
+ \p2=(b),%
+ \n1={\y2+\pgflinewidth} in
+ (\s-.04,\y2)rectangle++( .08,.5)
+ ($(\s-.18,\n1)+(0,.05)$)rectangle++( .08,.2)
+ ($(\s+.18,\n1)+(0,.05)$)rectangle++(-.08,.2);
+ }
+ \draw[ks debug frame](M.south west)rectangle(M.north east);
+ },
+ kriegspiel/s/reconnaissance artillery/.pic={
+ \coordinate(a) at (M.south west);
+ \coordinate(b) at ($(M.north east)+(0,-.5)$);
+ \@ifundefinedcolor{pgffillcolor}{}{
+ \path[fill=pgffillcolor](a)rectangle(b);}
+ \path[pic actions,fill=none](a)rectangle(b);
+ \path[fill=pgfstrokecolor] (a)--(b)--(a|-b)--cycle;
+ \foreach \s in {-.8,0,.8}{
+ \path[fill=pgfstrokecolor] let
+ \p2=(b),%
+ \n1={\y2+\pgflinewidth} in
+ (\s-.04,\y2)rectangle++( .08,.5)
+ ($(\s-.18,\n1)+(0,.05)$)rectangle++( .08,.2)
+ ($(\s+.18,\n1)+(0,.05)$)rectangle++(-.08,.2);
+ }
+ \draw[ks debug frame](M.south west)rectangle(M.north east);
+ }
+}
+
\providecommand\natoappmark[2][]{%
\tikz[transform shape,
scale=.25,
@@ -3110,6 +3360,11 @@
natoapp6c/s/reconnaissance/.pic={%
\path[draw] (M.north east)--(M.south west);},
}
+\tikzset{
+ natoapp6c/s/reconnaissance artillery/.pic={
+ \path[draw] (M.north east)--(M.south west);,
+ \path[pic actions,fill=pgfstrokecolor] circle(0.2);},
+}
\tikzset{%
natoapp6c/s/recovery unmanned systems/.pic={%
\path[draw] (-.5,.15) to [out=-80,in=180] (0,-.15) to
@@ -3650,6 +3905,79 @@
(0,.15) circle(.07 and .1);
},
}
+\tikzset{
+ pics/kriegspiel/s/.unknown/.code={
+ \message{^^JTry regular `natoapp6c/s/\pgfkeyscurrentname'}
+ % \pic[pic actions,draw=black]{natoapp6c/s/\pgfkeyscurrentname};
+ \pgfkeysalso{/tikz/pics/natoapp6c/s/\pgfkeyscurrentname/.try}
+ },
+ ks debug frame/.style={
+ draw=none,
+ %draw=magenta,
+ %dashed,
+ },
+ kriegspiel/s/infantry/.pic={
+ \coordinate(a) at (M.south west);
+ \coordinate(b) at ($(M.north east)+(0,-.2)$);
+ \@ifundefinedcolor{pgffillcolor}{}{
+ \path[fill=pgffillcolor](a)rectangle(b);}
+ \path[pic actions,fill=none](a)rectangle(b);
+ \path[pic actions,fill=none](a)--(b);
+ \path[pic actions,fill=none] let
+ \p1=(a),\p2=(b) in (\x2,\y1)--(\x1,\y2);
+ \path[fill=pgfstrokecolor] let
+ \p2=(b) in (-.05,\y2)rectangle++(.1,.2);
+ \draw[ks debug frame](M.south west)rectangle(M.north east);
+ },
+ kriegspiel/s/reconnaissance/.pic={
+ \coordinate(a) at (M.south west);
+ \coordinate(b) at ($(M.north east)+(0,-.2)$);
+ \@ifundefinedcolor{pgffillcolor}{}{
+ \path[fill=pgffillcolor](a)rectangle(b);}
+ \path[pic actions,fill=none](a)rectangle(b);
+ \path[fill=pgfstrokecolor] (a)--(b)--(a|-b)--cycle;
+ \path[fill=pgfstrokecolor] let
+ \p2=(b) in
+ (-.05,\y2)--++(0,.2)--++(-10:.4)--++(-170:.3)--(.05,\y2)--cycle;
+ \draw[ks debug frame](M.south west)rectangle(M.north east);
+ },
+ kriegspiel/s/artillery/.pic={
+ \coordinate(a) at (M.south west);
+ \coordinate(b) at ($(M.north east)+(0,-.5)$);
+ \@ifundefinedcolor{pgffillcolor}{}{
+ \path[fill=pgffillcolor](a)rectangle(b);}
+ \path[pic actions,fill=none](a)rectangle(b);
+ %\path[pic actions](a)rectangle(b);
+ \foreach \s in {-.8,0,.8}{
+ \path[fill=pgfstrokecolor] let
+ \p2=(b),%
+ \n1={\y2+\pgflinewidth} in
+ (\s-.04,\y2)rectangle++( .08,.5)
+ ($(\s-.18,\n1)+(0,.05)$)rectangle++( .08,.2)
+ ($(\s+.18,\n1)+(0,.05)$)rectangle++(-.08,.2);
+ }
+ \draw[ks debug frame](M.south west)rectangle(M.north east);
+ },
+ kriegspiel/s/reconnaissance artillery/.pic={
+ \coordinate(a) at (M.south west);
+ \coordinate(b) at ($(M.north east)+(0,-.5)$);
+ \@ifundefinedcolor{pgffillcolor}{}{
+ \path[fill=pgffillcolor](a)rectangle(b);}
+ \path[pic actions,fill=none](a)rectangle(b);
+ %\path[pic actions](a)rectangle(b);
+ \path[fill=pgfstrokecolor] (a)--(b)--(a|-b)--cycle;
+ \foreach \s in {-.8,0,.8}{
+ \path[fill=pgfstrokecolor] let
+ \p2=(b),%
+ \n1={\y2+\pgflinewidth} in
+ (\s-.04,\y2)rectangle++( .08,.5)
+ ($(\s-.18,\n1)+(0,.05)$)rectangle++( .08,.2)
+ ($(\s+.18,\n1)+(0,.05)$)rectangle++(-.08,.2);
+ }
+ \draw[ks debug frame](M.south west)rectangle(M.north east);
+ }
+}
+
\def\n@to@pp@s@ll{
weapon=base,
weapon=top,
diff --git a/Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.util.code.tex b/Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.util.code.tex
index b9a5b211723..64c3185eed9 100644
--- a/Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.util.code.tex
+++ b/Master/texmf-dist/tex/latex/wargame/tikzlibrarywargame.util.code.tex
@@ -92,9 +92,18 @@
\toks@\expandafter\expandafter\expandafter{\expandafter#1#2}%
\xdef#1{\the\toks@}%
\endgroup}
+\def\wg@nchor#1#2{% shape name, anchor
+ \wg@dbg{10}{Get `#2' in `#1'}%
+ \expandafter\csname pgf@anchor@#1@#2\endcsname%
+ \wg@dbg{10}{Got `\pgf@x',`\pgf@y'}
+}
+\newif\ifwg@ignore@sub@nchor\wg@ignore@sub@nchorfalse%
\def\wg@sub@nchor#1#2{%
- \wg@dbg{3}{^^JGet `#2' in `#1'}%
+ \wg@dbg{10}{^^JGet `#2' in `#1'}%
\@ifundefined{pgf@sh@ns@#1}{%
+ \ifwg@ignore@sub@nchor%
+ \wg@dbg{0}{WARNING: Shape `#1' not defined, anchor `#2' unknown}
+ \fi
\pgf@x=0cm\pgf@y=0cm}{%
\pgf@process{%
\csname pgf@sh@ma@#1\endcsname% MW
diff --git a/Master/texmf-dist/tex/latex/wargame/wargame.beach.pdf b/Master/texmf-dist/tex/latex/wargame/wargame.beach.pdf
index bfb53528757..acaa753c50a 100644
--- a/Master/texmf-dist/tex/latex/wargame/wargame.beach.pdf
+++ b/Master/texmf-dist/tex/latex/wargame/wargame.beach.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/wargame/wargame.city.pdf b/Master/texmf-dist/tex/latex/wargame/wargame.city.pdf
index 5cd11b2618d..3b0ead11ade 100644
--- a/Master/texmf-dist/tex/latex/wargame/wargame.city.pdf
+++ b/Master/texmf-dist/tex/latex/wargame/wargame.city.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/wargame/wargame.fields.pdf b/Master/texmf-dist/tex/latex/wargame/wargame.fields.pdf
new file mode 100644
index 00000000000..72e3646ee29
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/wargame/wargame.fields.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/wargame/wargame.light_woods.pdf b/Master/texmf-dist/tex/latex/wargame/wargame.light_woods.pdf
index 1986d919468..e400e6e3302 100644
--- a/Master/texmf-dist/tex/latex/wargame/wargame.light_woods.pdf
+++ b/Master/texmf-dist/tex/latex/wargame/wargame.light_woods.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/wargame/wargame.mountains.pdf b/Master/texmf-dist/tex/latex/wargame/wargame.mountains.pdf
index 4ccadc4e536..2dc669dbd88 100644
--- a/Master/texmf-dist/tex/latex/wargame/wargame.mountains.pdf
+++ b/Master/texmf-dist/tex/latex/wargame/wargame.mountains.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/wargame/wargame.rough.pdf b/Master/texmf-dist/tex/latex/wargame/wargame.rough.pdf
index 9dc4d625b59..1b374a7a8f6 100644
--- a/Master/texmf-dist/tex/latex/wargame/wargame.rough.pdf
+++ b/Master/texmf-dist/tex/latex/wargame/wargame.rough.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/wargame/wargame.speckle.pdf b/Master/texmf-dist/tex/latex/wargame/wargame.speckle.pdf
new file mode 100644
index 00000000000..33392c9dd89
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/wargame/wargame.speckle.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/wargame/wargame.swamp.pdf b/Master/texmf-dist/tex/latex/wargame/wargame.swamp.pdf
index bcaea332625..5c1f7d6b3c0 100644
--- a/Master/texmf-dist/tex/latex/wargame/wargame.swamp.pdf
+++ b/Master/texmf-dist/tex/latex/wargame/wargame.swamp.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/wargame/wargame.town.pdf b/Master/texmf-dist/tex/latex/wargame/wargame.town.pdf
index 78b59768887..f07074c804a 100644
--- a/Master/texmf-dist/tex/latex/wargame/wargame.town.pdf
+++ b/Master/texmf-dist/tex/latex/wargame/wargame.town.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/wargame/wargame.village.pdf b/Master/texmf-dist/tex/latex/wargame/wargame.village.pdf
index b9beeafce35..15982cd3f8c 100644
--- a/Master/texmf-dist/tex/latex/wargame/wargame.village.pdf
+++ b/Master/texmf-dist/tex/latex/wargame/wargame.village.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/wargame/wargame.woods.pdf b/Master/texmf-dist/tex/latex/wargame/wargame.woods.pdf
index 9823bd52855..4c208af026d 100644
--- a/Master/texmf-dist/tex/latex/wargame/wargame.woods.pdf
+++ b/Master/texmf-dist/tex/latex/wargame/wargame.woods.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/wargame/wgexport.cls b/Master/texmf-dist/tex/latex/wargame/wgexport.cls
index 52f2073aff5..9fcdcb22898 100644
--- a/Master/texmf-dist/tex/latex/wargame/wgexport.cls
+++ b/Master/texmf-dist/tex/latex/wargame/wgexport.cls
@@ -73,7 +73,7 @@
\mk@w{ \space "number": \thepage #1}%
\let\oldmk@i\mk@i%
\ifx#1,\relax\edef\mk@i{\mk@i\space\space}\fi}
-\def\end@info{%
+\def\endinfo{%
\let\mk@i\oldmk@i%
\mk@w{ \space \@rbchar,}}
\def\wg@add@drop@margin{%
@@ -104,30 +104,37 @@
\foreach \u/\m in \t{%
\ifx\u\empty\else% Ignore empty cells
\ifx\u\chit@blank\else%
- \chit@dbg{2}{Next chit `\u' with possible multiplicity `\m'}%
- \ifx\m\@empty\def\m{1}\fi% If no multiplicity defined
- \ifx\u\m\def\m{1}\fi% If the same as unit
- \chit@dbg{2}{Next chit `\u' multiplicity `\m'}%
- %% We only make one copy of the chit, since we can duplicate
- %% it in VASSAL
- \info*{\u}{counter}{\x}
- \nopagecolor%
- \gdef\wg@drop@margin{0pt}%
- \begin{tikzpicture}[chit has drop=false,#2]
- \chit[\u=\ti]%
- \wg@add@drop@margin%
- \end{tikzpicture}
- \end@info%
- %% \foreach \n in {1,...,\m}{% Make a number of copies
- %% \ifx\u\chit@blank%
- %% \chit@dbg{3}{Ignoring blank chit:\u}%
- %% \else%
- %% \info{\u}{counter}{#2}
- %% \begin{tikzpicture}
- %% \chit[\u=\ti](\c,\r)%
- %% \end{tikzpicture}
- %% \fi%
- %% }%
+ \ifx\u\chit@oob@vspacer\else%
+ \ifx\u\chit@oob@spacer\else%
+ \chit@dbg{2}{Next chit `\u' with possible multiplicity
+ `\m'}%
+ \chit@dbg{1}{Next chit `\u' not `\chit@blank',
+ `\chit@oob@vspacer', `\chit@oob@spacer'}
+ \ifx\m\@empty\def\m{1}\fi% If no multiplicity defined
+ \ifx\u\m\def\m{1}\fi% If the same as unit
+ \chit@dbg{2}{Next chit `\u' multiplicity `\m'}%
+ %% We only make one copy of the chit, since we can duplicate
+ %% it in VASSAL
+ \begin{info}*{\u}{counter}{\x}
+ \nopagecolor%
+ \gdef\wg@drop@margin{0pt}%
+ \begin{tikzpicture}[chit has drop=false,#2]
+ \chit[\u=\ti]%
+ \wg@add@drop@margin%
+ \end{tikzpicture}
+ \end{info}%
+ %% \foreach \n in {1,...,\m}{% Make a number of copies
+ %% \ifx\u\chit@blank%
+ %% \chit@dbg{3}{Ignoring blank chit:\u}%
+ %% \else%
+ %% \info{\u}{counter}{#2}
+ %% \begin{tikzpicture}
+ %% \chit[\u=\ti](\c,\r)%
+ %% \end{tikzpicture}
+ %% \fi%
+ %% }%
+ \fi%
+ \fi%
\fi%
\fi%
}%
@@ -155,39 +162,43 @@
\foreach \u/\m in \t{%
\ifx\u\empty\else% Ignore empty cells
\ifx\u\chit@blank\else%
- \chit@dbg{2}{Next chit `\u' with possible multiplicity `\m'}%
- \ifx\m\@empty\def\m{1}\fi% If not multiplicity defined
- \ifx\u\m\def\m{1}\fi% If the same as unit
- \chit@dbg{2}{Next chit `\u' multiplicity `\m'}%
- %% Flipped chit
- \edef\s{\u\space flipped}%
- %% We only make one copy of the chit, since we can duplicate
- %% it in VASSAL
- \info*{\u}{counter}{\x}%
- \nopagecolor%
- \gdef\wg@drop@margin{0pt}%
- \begin{tikzpicture}[chit has drop=false,#2]%
- \chit[\u=\ti]%
- \wg@add@drop@margin%
- \end{tikzpicture}%
- \end@info%
- \info*{\s}{counter}{\x}%
- \nopagecolor%
- \begin{tikzpicture}[chit has drop=false,#2]%
- \chit[\s=\ti]%
- \wg@add@drop@margin%
- \end{tikzpicture}%
- \end@info%
- %% \foreach \n in {1,...,\m}{% Make a number of copies
- %% \ifx\u\chit@blank%
- %% \chit@dbg{3}{Ignoring blank chit:\u}%
- %% \else%
- %% \info{\u}{counter}{#2}
- %% \begin{tikzpicture}
- %% \chit[\u=\ti](\c,\r)%
- %% \end{tikzpicture}
- %% \fi%
- %% }%
+ \ifx\u\chit@oob@vspacer\else%
+ \ifx\u\chit@oob@spacer\else%
+ \chit@dbg{2}{Next chit `\u' with possible multiplicity `\m'}%
+ \ifx\m\@empty\def\m{1}\fi% If not multiplicity defined
+ \ifx\u\m\def\m{1}\fi% If the same as unit
+ \chit@dbg{2}{Next chit `\u' multiplicity `\m'}%
+ %% Flipped chit
+ \edef\s{\u\space flipped}%
+ %% We only make one copy of the chit, since we can duplicate
+ %% it in VASSAL
+ \begin{info}*{\u}{counter}{\x}%
+ \nopagecolor%
+ \gdef\wg@drop@margin{0pt}%
+ \begin{tikzpicture}[chit has drop=false,#2]%
+ \chit[\u=\ti]%
+ \wg@add@drop@margin%
+ \end{tikzpicture}%
+ \end{info}%
+ \begin{info}*{\s}{counter}{\x}%
+ \nopagecolor%
+ \begin{tikzpicture}[chit has drop=false,#2]%
+ \chit[\s=\ti]%
+ \wg@add@drop@margin%
+ \end{tikzpicture}%
+ \end{info}%
+ %% \foreach \n in {1,...,\m}{% Make a number of copies
+ %% \ifx\u\chit@blank%
+ %% \chit@dbg{3}{Ignoring blank chit:\u}%
+ %% \else%
+ %% \info{\u}{counter}{#2}
+ %% \begin{tikzpicture}
+ %% \chit[\u=\ti](\c,\r)%
+ %% \end{tikzpicture}
+ %% \fi%
+ %% }%
+ \fi%
+ \fi%
\fi%
\fi%
}%
@@ -371,10 +382,10 @@
\mk@w{ \mk@i "name": "\bd@n" }%
\let\mk@i\oomk@i%
\mk@w{ \mk@i\@rbchar}%
- \end@info%
+ \endinfo%
}
\def\wg@gennumberm@rkers#1#2#3#4{
- \message{^^JNumbered markers: Type=`#1' Max=`#2' Category=`#3'}
+ \chit@dbg{2}{Numbered markers: Type=`#1' Max=`#2' Category=`#3'}
\def\markers{}
\def\keys{}
\foreach \i in {1,...,#2}{%
@@ -397,7 +408,7 @@
}%
\def\@@battlemarkers[#1][#2]#3{%
\wg@gennumberm@rkers{battle marker}{#3}{#2}{#1}%
- \message{^^JMake a hidden unit and add to Markers category}
+ \chit@dbg{1}{Make a hidden unit and add to Markers category}
{%
\nopagecolor%
\chitimages[Markers]{{wg hidden unit}}%
@@ -417,7 +428,7 @@
\foreach \o/\f/\n [count=\i] in {#2}{%
\ifx\n\f\def\n{\o}\fi%
\ifx\o\f\def\f{white}\fi%
- \message{^^JColour no \i marker `#1 \n' w/fill `\f' text `\o'}%
+ \chit@dbg{3}{Colour no `\i' marker `#1 \n' w/fill `\f' text `\o'}%
\protected@xdef\keys{/tikz/#1 \n/.style={/tikz/#1={\o,\f}},\keys}
\xdef\markers{\markers,#1 \n}
}%
@@ -477,22 +488,22 @@
\info{unit-icon}{icon}{}%
\tikz[auto icon,scale=.7,auto icon more/.try]{%
\chit[fill=#2,
- symbol={[
- scale line widths,
- line width=1pt,
- faction=friend,
- command=land,
- main=infantry,
- scale=1.3](0,-.15)}]}%
- %
- \info{layer-icon}{icon}{}%
- \begin{tikzpicture}[scale=.25]
- \foreach \i in {-1,0,1}{
- \scoped[shift={(0,\i*.15)}]{
- \draw[black,fill=white] (-.5,0)
- --(0,.3)--(.5,0)--(0,-.3)--cycle;
- }
+ symbol={[
+ scale line widths,
+ line width=1pt,
+ faction=friend,
+ command=land,
+ main=infantry,
+ scale=1.3](0,-.15)}]}%
+ %
+ \info{layer-icon}{icon}{}%
+ \begin{tikzpicture}[scale=.25]
+ \foreach \i in {-1,0,1}{
+ \scoped[shift={(0,\i*.15)}]{
+ \draw[black,fill=white] (-.5,0)
+ --(0,.3)--(.5,0)--(0,-.3)--cycle;
}
+ }
\end{tikzpicture}%
%
\info{los-icon}{icon}{}
@@ -521,8 +532,9 @@
%\node[shape=#4,transform shape,draw=none,fill=black,opacity=.5]
%at (.05,-.03){};
\node[shape=#4,#2,transform shape,
- chit drop
- ]{\p};\wg@add@drop@margin{}}}}
+ chit drop,
+ node contents={\p}
+ ]{};\wg@add@drop@margin{}}}}
\tikzset{
zone turn/.store in=\zone@turn,
zone mult/.store in=\zone@mult
diff --git a/Master/texmf-dist/tex/latex/wargame/wgexport.py b/Master/texmf-dist/tex/latex/wargame/wgexport.py
index d573b63d36d..2e5dfd243de 100755
--- a/Master/texmf-dist/tex/latex/wargame/wgexport.py
+++ b/Master/texmf-dist/tex/latex/wargame/wgexport.py
@@ -31,6 +31,7 @@
# command.py
# trait.py
# withtraits.py
+# traits/area.py
# traits/dynamicproperty.py
# traits/globalproperty.py
# traits/prototype.py
@@ -65,6 +66,7 @@
# save.py
# vsav.py
# vmod.py
+# upgrade.py
# exporter.py
#
# ====================================================================
@@ -766,6 +768,7 @@ class PredefinedSetup(GameElement):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : PredefinedSetup
@@ -779,6 +782,7 @@ class PredefinedSetup(GameElement):
----------
asdict : bool
If `True`, return a dictonary that maps key to `PredefinedSetup` elements. If `False`, return a list of all PredefinedSetup` children.
+
Returns
-------
children : dict or list
@@ -948,6 +952,7 @@ class GlobalOptions(GameElement):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Option
@@ -1266,6 +1271,7 @@ class Prototypes(GameElement):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Prototype
@@ -1279,6 +1285,7 @@ class Prototypes(GameElement):
----------
asdict : bool
If `True`, return a dictonary that maps key to `Prototype` elements. If `False`, return a list of all Prototype` children.
+
Returns
-------
children : dict or list
@@ -1491,7 +1498,25 @@ class SymbolicDice(GameElement):
backgroundColor = rgb(0xdd,0xdd,0xdd), # Window background
windowTitleResultFormat = "$name$", # Window title
windowX = '67', # Window size
- windowY = '65'):
+ windowY = '65',
+ doHotkey = False,
+ doLoop = False,
+ doReport = False,
+ doSound = False,
+ hideWhenDisabled = False,
+ hotkeys = '',
+ index = False,
+ indexProperty = '',
+ indexStart = 1,
+ indexStep = 1,
+ loopCount = 1,
+ loopType = 'counted',
+ postLoopKey = '',
+ reportFormat = '',
+ soundClip = '',
+ untilExpression = '',
+ whileExpression = ''
+ ):
super(SymbolicDice,self).\
__init__(game,
self.TAG,
@@ -1511,7 +1536,25 @@ class SymbolicDice(GameElement):
backgroundColor = backgroundColor,
windowTitleResultFormat = windowTitleResultFormat,
windowX = windowX,
- windowY = windowY)
+ windowY = windowY,
+ doHotkey = doHotkey,
+ doLoop = doLoop,
+ doReport = doReport,
+ doSound = doSound,
+ hideWhenDisabled = hideWhenDisabled,
+ hotkeys = hotkeys,
+ index = index,
+ indexProperty = indexProperty,
+ indexStart = indexStart,
+ indexStep = indexStep,
+ loopCount = loopCount,
+ loopType = loopType,
+ postLoopKey = postLoopKey,
+ reportFormat = reportFormat,
+ soundClip = soundClip,
+ untilExpression = untilExpression,
+ whileExpression = whileExpression)
+
def addDie(self,**kwargs):
return self.add(SpecialDie,**kwargs)
@@ -1549,6 +1592,9 @@ class SpecialDie(GameElement):
def getSymbolicDice(self):
return self.getParent(SymbolicDice)
+
+ def getFaces(self):
+ return self.getAllElements(DieFace,single=False)
registerElement(SpecialDie)
@@ -1622,6 +1668,7 @@ class PieceLayers(MapElement):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : LayerControl
@@ -1977,10 +2024,11 @@ class CounterDetailViewer(MapElement):
emptyHexReportForma = '$LocationName$',
enableHTML = True,
extraTextPadding = 0,
+ bgColor = None,
fgColor = rgb(0,0,0),
- fontSize = 9,
+ fontSize = 11,
graphicsZoom = 1.0,# Zoom on counters
- hotkey = key('\n',0),
+ hotkey = key('\n'),
layerList = '',
minDisplayPieces = 2,
propertyFilter = '',
@@ -1993,15 +2041,19 @@ class CounterDetailViewer(MapElement):
showOverlap = False,
showgraph = True,
showgraphsingle = False,
- showtext = False,
+ showtext = True,
showtextsingle = False,
stretchWidthSummary = False,
summaryReportFormat = '$LocationName$',
unrotatePieces = False,
version = 3,
- verticalOffset = 0,
- verticalTopText = 5,
- zoomlevel = 1.0): # showTerrain attributes
+ verticalOffset = 2,
+ verticalTopText = 0,
+ zoomlevel = 1.0,
+ stopAfterShowing = False): # showTerrain attributes
+
+ bg = '' if bgColor is None else bgColor
+ fg = '' if fgColor is None else fgColor
super(CounterDetailViewer,self)\
.__init__(map,self.TAG,node=node,
borderWidth = borderWidth,
@@ -2015,7 +2067,8 @@ class CounterDetailViewer(MapElement):
emptyHexReportForma = emptyHexReportForma,
enableHTML = enableHTML,
extraTextPadding = extraTextPadding,
- fgColor = fgColor,
+ bgColor = bg,
+ fgColor = fg,
fontSize = fontSize,
graphicsZoom = graphicsZoom,
hotkey = hotkey,
@@ -2039,7 +2092,8 @@ class CounterDetailViewer(MapElement):
version = version,
verticalOffset = verticalOffset,
verticalTopText = verticalTopText,
- zoomlevel = zoomlevel)
+ zoomlevel = zoomlevel,
+ stopAfterShowing = stopAfterShowing)
registerElement(CounterDetailViewer)
@@ -2198,7 +2252,26 @@ class AtStart(MapElement):
owningBoard = '',
x = 0,
y = 0):
- '''Pieces are existing PieceSlot elements'''
+ '''Pieces are existing PieceSlot elements
+
+
+ Parameters
+ ----------
+ node : xml.minidom.Node
+ Existing node or None
+ name : str
+ Name of node
+ location : str
+ Where the at-start element is put if `useGridLocation`
+ useGridLocation : bool
+ If true, use maps grid
+ owningBoard : str
+ Board that owns the at-start (can be empty)
+ x : float
+ Coordinate (ignored if `useGridLocation`)
+ y : float
+ Coordinate (ignored if `useGridLocation`)
+ '''
super(AtStart,self).\
__init__(map,self.TAG,node=node,
name = name,
@@ -2215,6 +2288,7 @@ class AtStart(MapElement):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Pieces
@@ -2235,6 +2309,7 @@ class AtStart(MapElement):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Piece
@@ -2264,7 +2339,7 @@ class AtStart(MapElement):
Dictionary or list of `Piece` children
'''
- return self.getElementsWithKey(PieceSlot,'entryName',asdict)
+ return self.getElementsByKey(PieceSlot,'entryName',asdict)
registerElement(AtStart)
@@ -2292,6 +2367,7 @@ class GlobalProperties(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Property
@@ -2347,6 +2423,7 @@ class TurnLevel(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Level
@@ -2374,6 +2451,7 @@ class TurnLevel(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Counter
@@ -2387,6 +2465,7 @@ class TurnLevel(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : List
@@ -2495,6 +2574,7 @@ class TurnTrack(TurnLevel):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Hotkey
@@ -2626,6 +2706,7 @@ class Documentation(GameElement):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : AboutScreen
@@ -2639,6 +2720,7 @@ class Documentation(GameElement):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : HelpFile
@@ -2652,6 +2734,7 @@ class Documentation(GameElement):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : BrowserHelpFile
@@ -2665,6 +2748,7 @@ class Documentation(GameElement):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : BrowserPDFFile
@@ -2678,6 +2762,7 @@ class Documentation(GameElement):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Tutorial
@@ -2909,6 +2994,7 @@ class PlayerRoster(GameElement):
buttonText='Retire',
buttonToolTip='Switch sides, become observer, or release faction'):
'''Add a player roster to the module
+
Parameters
----------
doc : Element
@@ -2931,6 +3017,7 @@ class PlayerRoster(GameElement):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Side
@@ -3150,6 +3237,7 @@ class ChessClockControl(GameElement):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : AboutScreen
@@ -3180,6 +3268,7 @@ class WidgetElement:
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Tabs
@@ -3192,6 +3281,7 @@ class WidgetElement:
Parameters
----------
Dictionary of attribute key-value pairs
+
Returns
-------
element : Combo
@@ -3205,6 +3295,7 @@ class WidgetElement:
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Panel
@@ -3218,6 +3309,7 @@ class WidgetElement:
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : List
@@ -3231,6 +3323,7 @@ class WidgetElement:
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : MapWidget
@@ -3244,6 +3337,7 @@ class WidgetElement:
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Chart
@@ -3257,6 +3351,7 @@ class WidgetElement:
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : PieceSlot
@@ -3270,6 +3365,7 @@ class WidgetElement:
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Piece
@@ -3288,6 +3384,7 @@ class WidgetElement:
----------
asdict : bool
If `True`, return a dictonary that maps key to `Tab` elements. If `False`, return a list of all Tab` children.
+
Returns
-------
children : dict or list
@@ -3301,6 +3398,7 @@ class WidgetElement:
----------
asdict : bool
If `True`, return a dictonary that maps key to `Tab` elements. If `False`, return a list of all Tab` children.
+
Returns
-------
children : dict or list
@@ -3314,6 +3412,7 @@ class WidgetElement:
----------
asdict : bool
If `True`, return a dictonary that maps key to `List` elements. If `False`, return a list of all List` children.
+
Returns
-------
children : dict or list
@@ -3327,6 +3426,7 @@ class WidgetElement:
----------
asdict : bool
If `True`, return a dictonary that maps key to `Panel` elements. If `False`, return a list of all Panel` children.
+
Returns
-------
children : dict or list
@@ -3340,6 +3440,7 @@ class WidgetElement:
----------
asdict : bool
If `True`, return a dictonary that maps key to `MapWidget` elements. If `False`, return a list of all MapWidget` children.
+
Returns
-------
children : dict or list
@@ -3353,6 +3454,7 @@ class WidgetElement:
----------
asdict : bool
If `True`, return a dictonary that maps key to `Chart` elements. If `False`, return a list of all Chart` children.
+
Returns
-------
children : dict or list
@@ -3366,6 +3468,7 @@ class WidgetElement:
----------
asdict : bool
If `True`, return a dictonary that maps key to `PieceSlot` elements. If `False`, return a list of all PieceSlot` children.
+
Returns
-------
children : dict or list
@@ -3470,6 +3573,7 @@ class MapWidget(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : WidgetMap
@@ -3483,6 +3587,7 @@ class MapWidget(Element):
----------
asdict : bool
If `True`, return a dictonary that maps key to `WidgetMap` elements. If `False`, return a list of all WidgetMap` children.
+
Returns
-------
children : dict or list
@@ -3679,6 +3784,7 @@ class HexGrid(BaseGrid):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Numbering
@@ -3720,8 +3826,8 @@ class SquareGrid(BaseGrid):
dx = dx,
dy = dy,
edgesLegal = edgesLegal,
- x0 = 0,
- y0 = int(0.4*RECT_HEIGHT),
+ x0 = x0,
+ y0 = y0,
**kwargs)
def addNumbering(self,**kwargs):
'''Add a `Numbering` element to this
@@ -3730,6 +3836,7 @@ class SquareGrid(BaseGrid):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Numbering
@@ -3892,6 +3999,7 @@ class RegionGrid(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Region
@@ -4017,6 +4125,7 @@ class ZonedGrid(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Highlighter
@@ -4031,6 +4140,7 @@ class ZonedGrid(Element):
single : bool
If `True`, there can be only one `Highligter` child, otherwise fail.
If `False` return all `Highligter` children in this element
+
Returns
-------
children : list
@@ -4044,6 +4154,7 @@ class ZonedGrid(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Zone
@@ -4057,6 +4168,7 @@ class ZonedGrid(Element):
----------
asdict : bool
If `True`, return a dictonary that maps key to `Zone` elements. If `False`, return a list of all Zone` children.
+
Returns
-------
children : dict or list
@@ -4080,6 +4192,7 @@ class ZonedGridHighlighter(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : ZoneHighlight
@@ -4093,6 +4206,7 @@ class ZonedGridHighlighter(Element):
----------
asdict : bool
If `True`, return a dictonary that maps key to `Zone` elements. If `False`, return a list of all Zone` children.
+
Returns
-------
children : dict or list
@@ -4210,6 +4324,7 @@ class Zone(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : HexGrid
@@ -4223,6 +4338,7 @@ class Zone(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : SquareGrid
@@ -4236,6 +4352,7 @@ class Zone(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : RegionGrid
@@ -4249,6 +4366,7 @@ class Zone(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Property
@@ -4263,6 +4381,7 @@ class Zone(Element):
single : bool
If `True`, there can be only one `HexGrid` child, otherwise fail.
If `False` return all `HexGrid` children in this element
+
Returns
-------
children : list
@@ -4277,6 +4396,7 @@ class Zone(Element):
single : bool
If `True`, there can be only one `SquareGrid` child, otherwise fail.
If `False` return all `SquareGrid` children in this element
+
Returns
-------
children : list
@@ -4291,6 +4411,7 @@ class Zone(Element):
single : bool
If `True`, there can be only one `RegionGrid` child, otherwise fail.
If `False` return all `RegionGrid` children in this element
+
Returns
-------
children : list
@@ -4305,6 +4426,7 @@ class Zone(Element):
single : bool
If `True`, there can be only one `Grid` child, otherwise fail.
If `False` return all `Grid` children in this element
+
Returns
-------
children : list
@@ -4323,8 +4445,6 @@ class Zone(Element):
def getProperties(self):
'''Get all `Property` element from this
- Parameters
- ----------
Returns
-------
children : dict
@@ -4339,6 +4459,7 @@ class Zone(Element):
c = pp.split(',')
r.append([int(c[0]),int(c[1])])
return r
+
def getBB(self):
from functools import reduce
path = self.getPath()
@@ -4393,6 +4514,7 @@ class BoardPicker(MapElement):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Setup
@@ -4411,6 +4533,7 @@ class BoardPicker(MapElement):
single : bool
If `True`, there can be only one `Setup` child, otherwise fail.
If `False` return all `Setup` children in this element
+
Returns
-------
children : list
@@ -4424,6 +4547,7 @@ class BoardPicker(MapElement):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Board
@@ -4437,6 +4561,7 @@ class BoardPicker(MapElement):
----------
asdict : bool
If `True`, return a dictonary that maps key to `Board` elements. If `False`, return a list of all Board` children.
+
Returns
-------
children : dict or list
@@ -4512,6 +4637,7 @@ class Board(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : ZonedGrid
@@ -4526,6 +4652,7 @@ class Board(Element):
single : bool
If `True`, there can be only one `ZonedGrid` child, otherwise fail.
If `False` return all `ZonedGrid` children in this element
+
Returns
-------
children : list
@@ -4539,6 +4666,7 @@ class Board(Element):
----------
asdict : bool
If `True`, return a dictonary that maps key to `Zone` elements. If `False`, return a list of all Zone` children.
+
Returns
-------
children : dict or list
@@ -4596,6 +4724,65 @@ class BaseMap(Element):
moveWithinFormat = '$pieceName$ moves $previousLocation$ &rarr; $location$ *',
showKey = '',
thickness = '3'):
+ '''Create a map
+
+ Parameters
+ ----------
+ doc : xml.minidom.Document
+ Parent document
+ tag : str
+ XML tag
+ node : xml.minidom.Node or None
+ Existing node or None
+ mapName : str
+ Name of map
+ allowMultiple : bool
+ Allow multiple boards
+ backgroundcolor : color
+ Bckground color
+ buttonName : str
+ Name on button to show map = '',
+ changeFormat :
+ Message format to show on changes
+ color : color
+ Color of selected pieces
+ createFormat : str
+ Message format when creating a piece
+ edgeHeight : int
+ Height of edge (margin)
+ edgeWidth : int
+ Width of edge (margin)
+ hideKey : Key
+ Hot-key or key-command to hide map
+ hotkey : Key
+ Hot-key or key-command to show map
+ icon : path
+ Icon image
+ launch : bool
+ Show on launch
+ markMoved : str
+ Show moved
+ markUnmovedHotkey : key
+ Remove moved markers
+ markUnmovedIcon : path
+ Icon for unmoved
+ markUnmovedReport : str
+ Message when marking as unmoved
+ markUnmovedText : str
+ Text on button
+ markUnmovedTooltip : str
+ Tooltip on button
+ moveKey : key
+ Key to set moved marker
+ moveToFormat : str
+ Message format when moving
+ moveWithinFormat : str
+ Message when moving within map
+ showKey : str,
+ Key to show map
+ thickness : int
+ Thickness of line around selected pieces
+ '''
super(BaseMap,self).__init__(doc,tag,node=node,
allowMultiple = allowMultiple,
backgroundcolor = backgroundcolor,
@@ -4632,6 +4819,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Picker
@@ -4646,6 +4834,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `BoardPicker` child, otherwise fail.
If `False` return all `BoardPicker` children in this element
+
Returns
-------
children : list
@@ -4660,6 +4849,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `BoardPicker` child, otherwise fail.
If `False` return all `BoardPicker` children in this element
+
Returns
-------
children : list
@@ -4674,6 +4864,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `StackMetric` child, otherwise fail.
If `False` return all `StackMetric` children in this element
+
Returns
-------
children : list
@@ -4688,6 +4879,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `ImageSaver` child, otherwise fail.
If `False` return all `ImageSaver` children in this element
+
Returns
-------
children : list
@@ -4702,6 +4894,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `TextSaver` child, otherwise fail.
If `False` return all `TextSaver` children in this element
+
Returns
-------
children : list
@@ -4716,6 +4909,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `ForwardToChatter` child, otherwise fail.
If `False` return all `ForwardToChatter` children in this element
+
Returns
-------
children : list
@@ -4730,6 +4924,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `MenuDi` child, otherwise fail.
If `False` return all `MenuDi` children in this element
+
Returns
-------
children : list
@@ -4744,6 +4939,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `MapCenterer` child, otherwise fail.
If `False` return all `MapCenterer` children in this element
+
Returns
-------
children : list
@@ -4758,6 +4954,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `StackExpander` child, otherwise fail.
If `False` return all `StackExpander` children in this element
+
Returns
-------
children : list
@@ -4772,6 +4969,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `PieceMover` child, otherwise fail.
If `False` return all `PieceMover` children in this element
+
Returns
-------
children : list
@@ -4786,6 +4984,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `SelectionHighlighter` child, otherwise fail.
If `False` return all `SelectionHighlighter` children in this element
+
Returns
-------
children : list
@@ -4802,6 +5001,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `HighlightLa` child, otherwise fail.
If `False` return all `HighlightLa` children in this element
+
Returns
-------
children : list
@@ -4816,6 +5016,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `CounterDetailViewer` child, otherwise fail.
If `False` return all `CounterDetailViewer` children in this element
+
Returns
-------
children : list
@@ -4830,6 +5031,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `GlobalMap` child, otherwise fail.
If `False` return all `GlobalMap` children in this element
+
Returns
-------
children : list
@@ -4844,6 +5046,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `Zoomer` child, otherwise fail.
If `False` return all `Zoomer` children in this element
+
Returns
-------
children : list
@@ -4858,6 +5061,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `HidePiece` child, otherwise fail.
If `False` return all `HidePiece` children in this element
+
Returns
-------
children : list
@@ -4871,6 +5075,7 @@ class BaseMap(Element):
----------
asdict : bool
If `True`, return a dictonary that maps key to `MassKey` elements. If `False`, return a list of all MassKey` children.
+
Returns
-------
children : dict or list
@@ -4885,6 +5090,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `Flare` child, otherwise fail.
If `False` return all `Flare` children in this element
+
Returns
-------
children : list
@@ -4899,6 +5105,7 @@ class BaseMap(Element):
single : bool
If `True`, there can be only one `AtStart` child, otherwise fail.
If `False` return all `AtStart` children in this element
+
Returns
-------
children : list
@@ -4912,6 +5119,7 @@ class BaseMap(Element):
----------
asdict : bool
If `True`, return a dictonary that maps key to `Board` elements. If `False`, return a list of all Board` children.
+
Returns
-------
children : dict or list
@@ -4947,6 +5155,7 @@ class BaseMap(Element):
elements. If `False`, return a list of all Board`
children.
+
Returns
-------
children : dict or list
@@ -4964,6 +5173,7 @@ class BaseMap(Element):
elements. If `False`, return a list of all Board`
children.
+
Returns
-------
children : dict or list
@@ -4978,6 +5188,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : BoardPicker
@@ -4991,6 +5202,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : StackMetrics
@@ -5004,6 +5216,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : ImageSaver
@@ -5017,6 +5230,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : TextSaver
@@ -5030,6 +5244,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : ForwardToChatter
@@ -5043,6 +5258,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : MenuDisplayer
@@ -5056,6 +5272,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : MapCenterer
@@ -5069,6 +5286,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : StackExpander
@@ -5082,6 +5300,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : PieceMover
@@ -5095,6 +5314,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : SelectionHighlighters
@@ -5108,6 +5328,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : KeyBufferer
@@ -5121,6 +5342,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : HighlightLastMoved
@@ -5134,6 +5356,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : CounterDetailViewer
@@ -5147,6 +5370,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : GlobalMap
@@ -5160,6 +5384,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Zoomer
@@ -5173,6 +5398,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : HidePiecesButton
@@ -5186,6 +5412,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : MassKey
@@ -5199,6 +5426,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : StartupMassKey
@@ -5212,6 +5440,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Flare
@@ -5225,6 +5454,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : AtStart
@@ -5240,6 +5470,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : PieceLayers
@@ -5253,6 +5484,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Menu
@@ -5266,6 +5498,7 @@ class BaseMap(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Menu
@@ -5377,6 +5610,7 @@ class ChartWindow(GameElement,WidgetElement):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Chart
@@ -5388,12 +5622,16 @@ class ChartWindow(GameElement,WidgetElement):
Parameters
----------
- asdict : bool
- If `True`, return a dictonary that maps key to `Chart` elements. If `False`, return a list of all Chart` children.
+ asdict : bool
+ If `True`, return a dictonary that maps key to `Chart`
+ elements. If `False`, return a list of all Chart`
+ children.
+
Returns
-------
children : dict or list
Dictionary or list of `Chart` children
+
'''
return self.getElementsById(Chart,'chartName',asdict=asdict)
@@ -5440,11 +5678,12 @@ class AddCommand(Command):
class Trait:
known_traits = []
def __init__(self):
- '''Base class for trait capture. Unlike the Element classes,
- this actually holds state that isn't reflected elsewhere in
- the DOM. This means that the data here is local to the
- object. So when we do
-
+ '''Base class for trait capture.
+
+ Unlike the Element classes, this actually holds state that
+ isn't reflected elsewhere in the DOM. This means that the
+ data here is local to the object. So when we do
+
piece = foo.getPieceSlots()[0]
traits = p.getTraits()
for trait in traits:
@@ -5467,6 +5706,9 @@ class Trait:
traits.append(MarkTrait('Hello','World;)
piece.setTraits(traits)
+ .. include:: ../../vassal/traits/README.md
+ :parser: myst_parser.sphinx_
+
'''
self._type = None
self._state = None
@@ -5479,6 +5721,7 @@ class Trait:
'''
self._type = list(kwargs.values())
self._tnames = list(kwargs.keys())
+
def setState(self,**kwargs):
'''Set states. Dictionary of names and values. Dictonary keys
defines how we access the fields, which is internal here.
@@ -5487,7 +5730,6 @@ class Trait:
self._state = list(kwargs.values())
self._snames = list(kwargs.keys())
-
def __getitem__(self,key):
'''Look up item in either type or state'''
try:
@@ -5574,39 +5816,78 @@ class Trait:
return [k.replace('\\'+f'{sep}',f'{sep}') for k in ks]
@classmethod
- def flatten(cls,traits,game=None,prototypes=None):
+ def flatten(cls,traits,game=None,prototypes=None,verbose=False):
if prototypes is None:
if game is None:
print(f'Warning: Game or prototypes not passed')
return None
prototypes = game.getPrototypes()[0].getPrototypes()
- ret = []
- return cls._flatten(traits,ret,prototypes,False)
+ if len(traits) < 1: return None
+
+ basic = None
+ if traits[-1].ID == BasicTrait.ID:
+ basic = traits.pop()
+
+ if verbose:
+ print(f'Piece {basic["name"]}')
+
+ ret = cls._flatten(traits,prototypes,' ',verbose)
+ ret.append(basic)
+
+ return ret
@classmethod
- def _flatten(cls,traits,ret,prototypes,nobasic=True):
+ def _flatten(cls,traits,prototypes,ind,verbose):
'''Expand all prototype traits in traits'''
+ ret = []
for trait in traits:
# Ignore recursive basic traits
- if nobasic and trait.ID == BasicTrait.ID:
+ if trait.ID == BasicTrait.ID:
continue
# Add normal traits
if trait.ID != PrototypeTrait.ID:
+ if verbose:
+ print(f'{ind}Adding trait "{trait.ID}"')
+
ret.append(trait)
continue
# Find prototype
- proto = prototypes.get(trait['name'],None)
+ name = trait['name']
+ proto = prototypes.get(name,None)
if proto is None:
- print(f'Warning, prototype {trait["name"]} not found')
+ if name != ' prototype':
+ print(f'{ind}Warning, prototype {name} not found')
continue
+ if verbose:
+ print(f'{ind}Expanding prototype "{name}"')
+
# Recursive call to add prototype traits (and possibly
# more recursive calls
- cls._flatten(proto.getTraits(), ret, prototypes,not nobasic)
+ ret.extend(cls._flatten(proto.getTraits(), prototypes,
+ ind+' ',verbose))
return ret
+
+ def print(self,file=None):
+ if file is None:
+ from sys import stdout
+ file = stdout
+
+ nt = max([len(i) for i in self._tnames])
+ ns = max([len(i) for i in self._snames])
+ nw = max(nt,ns)
+
+ print(f'Trait ID={self.ID}',file=file)
+ print(f' Type:', file=file)
+ for n,v in zip(self._tnames,self._type):
+ print(f' {n:<{nw}s}: {v}',file=file)
+ print(f' State:', file=file)
+ for n,v in zip(self._snames,self._state):
+ print(f' {n:<{nw}s}: {v}',file=file)
+
#
# EOF
#
@@ -5660,6 +5941,7 @@ class WithTraits(Element):
traits.append(trait)
self.setTraits(*traits)
+
def getTraits(self):
'''Get all element traits as objects. This decodes the trait
definitions. This is useful if we have read the element from
@@ -5680,9 +5962,109 @@ class WithTraits(Element):
The decoded traits
'''
+ code = self._node.childNodes[0].nodeValue
+ return self.decodeAdd(code)
+
+ def encodedStates(self):
+ from re import split
+
+ code = self._node.childNodes[0].nodeValue
+ cmd, iden, typ, sta = split(fr'(?<!\\)/',code) #code.split('/')
+
+ return sta
+
+ def decodeStates(self,code,verbose=False):
+ from re import split
+
+ newstates, oldstates = split(fr'(?<!\\)/',code)#code.split('/')
+
+ splitit = lambda l : \
+ [s.strip('\\').split(';') for s in l.split(r' ')]
+
+ newstates = splitit(newstates)
+ oldstates = splitit(oldstates)
+
+ traits = self.getTraits()
+
+ if len(traits) != len(newstates):
+ print(f'Piece has {len(traits)} traits but got '
+ f'{len(newstates)} states')
+
+ for trait, state in zip(traits,newstates):
+ trait._state = state;
+ # print(trait.ID)
+ # for n,s in zip(trait._snames,trait._state):
+ # print(f' {n:30s}: {s}')
+
+ self.setTraits(*traits)
+
+ def copyStates(self,other,verbose=False):
+ straits = other.getTraits()
+ dtraits = self.getTraits()
+
+ matches = 0
+ for strait in straits:
+ if len(strait._state) < 1:
+ continue
+
+ cand = []
+ ttrait = None
+ for dtrait in dtraits:
+ if dtrait.ID == strait.ID:
+ cand.append(dtrait)
+
+ if verbose and len(cand) < 1:
+ print(f'Could not find candidate for {strait.ID}')
+ continue
+
+ if len(cand) == 1:
+ ttrait = cand[0]
+
+ else:
+ # print(f'Got {len(cand)} candidiate targets {strait.ID}')
+
+ best = None
+ count = 0
+ types = strait._type
+ for c in cand:
+ cnt = sum([ct == t for ct,t in zip(c._type, types)])
+ if cnt > count:
+ best = c
+ count = cnt
+
+ if verbose and best is None:
+ print(f'No candidate for {strait.ID} {len(again)}')
+
+ if verbose and count+2 < len(types):
+ print(f'Ambigious candidate for {strait.ID} '
+ f'({count} match out of {len(types)})')
+ #print(best._type)
+ #print(types)
+
+ ttrait = best
+
+ if ttrait is None:
+ continue
+
+ ttrait._state = strait._state
+ matches += 1
+ # print(ttrait.ID)
+ # for n,s in zip(ttrait._snames,ttrait._state):
+ # print(f' {n:30s}: {s}')
+
+ if verbose:
+ print(f'Got {matches} matches out of {len(dtraits)}')
+
+ self.setTraits(*dtraits)
+
+
+ def decodeAdd(self,code,verbose=False):
+ '''Try to decode make a piece from a piece of state code'''
from re import split
- code = self._node.childNodes[0].nodeValue
+
cmd, iden, typ, sta = split(fr'(?<!\\)/',code) #code.split('/')
+ # print(cmd,iden,typ,sta)
+
types = typ.split(r' ')
states = sta.split(r' ')
types = [t.strip('\\').split(';') for t in types]
@@ -5705,19 +6087,11 @@ class WithTraits(Element):
print(f'Warning: Unknown trait {tid}')
return traits
-
- def setTraits(self,*traits,iden='null'):
- '''Set traits on this element. This encodes the traits into
- this object.
-
- Parameters
- ----------
- traits : tuple of Trait objects
- The traits to set on this object.
- iden : str
- Identifier
- '''
+ def encodeAdd(self,*traits,iden='null',verbose=False):
+ '''Encodes type and states'''
+ if len(traits) < 1: return ''
+
last = traits[-1]
# A little hackish to use the name of the class, but needed
# because of imports into patch scripts.
@@ -5740,9 +6114,30 @@ class WithTraits(Element):
tpe = WithTraits.encodeParts(*types)
state = WithTraits.encodeParts(*states)
add = AddCommand(str(iden),tpe,state)
+ return add.cmd
+
+
+ def setTraits(self,*traits,iden='null'):
+ '''Set traits on this element. This encodes the traits into
+ this object.
+
+ Parameters
+ ----------
+ traits : tuple of Trait objects
+ The traits to set on this object.
+ iden : str
+ Identifier
+
+ '''
+ add = self.encodeAdd(*traits,iden=iden)
+ if self._node is None:
+ from xml.dom.minidom import Element, Text
+ self._node = Element(self.TAG)
+ self._node.appendChild(Text())
+
if len(self._node.childNodes) < 1:
self.addText('')
- self._node.childNodes[0].nodeValue = add.cmd
+ self._node.childNodes[0].nodeValue = add
def removeTrait(self,ID,key=None,value=None,verbose=False):
'''Remove a trait from this object.
@@ -5896,6 +6291,7 @@ class PieceSlot(WithTraits):
width = width,
icon = icon)
+
def clone(self,parent):
'''Adds copy of self to parent, possibly with new GPID'''
game = self.getParentOfClass([Game])
@@ -5951,6 +6347,53 @@ registerElement(Prototype)
# EOF
#
# ====================================================================
+# From traits/area.py
+
+class AreaTrait(Trait):
+ ID = 'AreaOfEffect'
+ def __init__(self,
+ transparancyColor = rgb(0x77,0x77,0x77),
+ transparancyLevel = 30,
+ radius = 1,
+ alwaysActive = False,
+ activateCommand = 'Toggle area of effect',
+ activateKey = key('A'), # Ctrl-A
+ mapShaderName = '',
+ fixedRadius = True,
+ radiusMarker = '', # Property
+ description = 'Show area of effect',
+ name = 'EffectArea',
+ onMenuText = '', # Show area of effect
+ onKey = '', # key('A')
+ offMenuText = '', # Hide area of effect
+ offKey = '', # key(A,SHIFT)
+ globallyVisible = True):
+ super(AreaTrait,self).__init__()
+ self.setType(
+ transparancyColor = transparancyColor,
+ transparancyLevel = int(transparancyLevel),
+ radius = radius,
+ alwaysActive = alwaysActive,
+ activateCommand = activateCommand,
+ activateKey = activateKey,
+ mapShaderName = mapShaderName,
+ fixedRadius = fixedRadius,
+ radiusMarker = radiusMarker,
+ description = description,
+ name = name,
+ onMenuText = onMenuText,
+ onKey = onKey,
+ offMenuText = offMenuText,
+ offKey = offKey,
+ globallyVisible = globallyVisible
+ )
+ self.setState(active = alwaysActive or not globallyVisible)
+
+Trait.known_traits.append(AreaTrait)
+#
+# EOF
+#
+# ====================================================================
# From traits/dynamicproperty.py
# --------------------------------------------------------------------
@@ -5990,9 +6433,9 @@ class ChangePropertyTrait(Trait):
# print(cmd)
com = cmd[0] + ':' + cmd[1].replace(',',r'\,') + ':' + cmd[2]
if cmd[2] == self.DIRECT:
- com += f'\,'+cmd[3].replace(',',r'\\,').replace(':',r'\:')
+ com += r'\,'+cmd[3].replace(',',r'\\,').replace(':',r'\:')
elif cmd[2] == self.INCREMENT:
- com += f'\,'+cmd[3].replace(',',r'\\,').replace(':',r'\:')
+ com += r'\,'+cmd[3].replace(',',r'\\,').replace(':',r'\:')
cmds.append(com)
# print(cmds)
return ','.join(cmds)
@@ -6758,7 +7201,7 @@ class MaskTrait(Trait):
autoPeek = True,
dealKey = '',
dealExpr = ''):
- '''Create a mark trait (static property)'''
+ '''Create a masking trait'''
super(MaskTrait,self).__init__()
disp = displayStyle
if displayStyle == self.PEEK:
@@ -6822,25 +7265,32 @@ class TrailTrait(Trait):
inactiveOpacity = 50,
edgesBuffer = 20,
displayBuffer = 30,
- lineWidth = 1,
+ lineWidth = 5,
turnOn = '',
turnOff = '',
reset = '',
- description = ''):
+ description = 'Enable or disable movement trail'):
''' Create a movement trail trait ( VASSAL.counters.Footprint)'''
super(TrailTrait,self).__init__()
+ lw = (lineWidth
+ if isinstance(lineWidth,str) and lineWidth.startswith('{') else
+ int(lineWidth))
+ ra = (radius
+ if isinstance(radius,str) and radius.startswith('{') else
+ int(radius))
+
self.setType(key = key,# ENABLE KEY
name = name,# MENU
localVisible = localVisible,# LOCAL VISABLE
globalVisible = globalVisible,# GLOBAL VISABLE
- radius = radius,# RADIUS
+ radius = ra,# RADIUS
fillColor = fillColor,# FILL COLOR
lineColor = lineColor,# LINE COLOR
activeOpacity = activeOpacity,# ACTIVE OPACITY
inactiveOpacity = inactiveOpacity,# INACTIVE OPACITY
edgesBuffer = edgesBuffer,# EDGES BUFFER
displayBuffer = displayBuffer,# DISPLAY BUFFER
- lineWidth = int(lineWidth),# LINE WIDTH
+ lineWidth = lw,# LINE WIDTH
turnOn = turnOn,# TURN ON KEY
turnOff = turnOff,# TURN OFF KEY
reset = reset,# RESET KEY
@@ -7127,13 +7577,19 @@ class NonRectangleTrait(Trait):
self.setState()
@classmethod
- def getShape(cls,image):
- if image is None:
+ def getShape(cls,buffer):
+ if buffer is None:
return []
- from PIL import Image
from io import BytesIO
+ image = buffer
+ if image[:5] == b'<?xml':
+ from cairosvg import svg2png
+ image = svg2png(image)
+
+ from PIL import Image
+
code = []
with Image.open(BytesIO(image)) as img:
alp = img.getchannel('A') # Alpha channel
@@ -7277,6 +7733,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : BasicCommandEncoder
@@ -7290,6 +7747,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : GlobalTranslatableMessages
@@ -7303,6 +7761,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : PlayerRoster
@@ -7316,6 +7775,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : PlayerRoster
@@ -7329,6 +7789,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Language
@@ -7342,6 +7803,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Chatter
@@ -7355,6 +7817,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : KeyNamer
@@ -7368,6 +7831,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Notes
@@ -7381,6 +7845,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Language
@@ -7394,6 +7859,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Chatter
@@ -7407,6 +7873,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : KeyNamer
@@ -7420,6 +7887,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : GlobalProperties
@@ -7433,6 +7901,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : GlobalOptions
@@ -7446,6 +7915,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : TurnTrack
@@ -7459,6 +7929,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Documentation
@@ -7472,6 +7943,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Prototypes
@@ -7485,6 +7957,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : PieceWindow
@@ -7498,6 +7971,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : ChartWindow
@@ -7511,6 +7985,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Inventory
@@ -7524,6 +7999,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Map
@@ -7537,6 +8013,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : DiceButton
@@ -7550,6 +8027,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : PredefinedSetup
@@ -7563,6 +8041,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : GameMassKey
@@ -7576,6 +8055,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : StartupMassKey
@@ -7589,6 +8069,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Menu
@@ -7602,6 +8083,7 @@ class Game(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : SymbolicDice
@@ -7619,6 +8101,7 @@ class Game(Element):
single : bool
If `True`, there can be only one `GlobalPropertie` child, otherwise fail.
If `False` return all `GlobalPropertie` children in this element
+
Returns
-------
children : list
@@ -7633,6 +8116,7 @@ class Game(Element):
single : bool
If `True`, there can be only one `Ba` child, otherwise fail.
If `False` return all `Ba` children in this element
+
Returns
-------
children : list
@@ -7647,6 +8131,7 @@ class Game(Element):
single : bool
If `True`, there can be only one `GlobalTranslatableMessage` child, otherwise fail.
If `False` return all `GlobalTranslatableMessage` children in this element
+
Returns
-------
children : list
@@ -7661,6 +8146,7 @@ class Game(Element):
single : bool
If `True`, there can be only one `Language` child, otherwise fail.
If `False` return all `Language` children in this element
+
Returns
-------
children : list
@@ -7675,6 +8161,7 @@ class Game(Element):
single : bool
If `True`, there can be only one `Language` child, otherwise fail.
If `False` return all `Language` children in this element
+
Returns
-------
children : list
@@ -7689,6 +8176,7 @@ class Game(Element):
single : bool
If `True`, there can be only one `Chatter` child, otherwise fail.
If `False` return all `Chatter` children in this element
+
Returns
-------
children : list
@@ -7703,6 +8191,7 @@ class Game(Element):
single : bool
If `True`, there can be only one `KeyNamer` child, otherwise fail.
If `False` return all `KeyNamer` children in this element
+
Returns
-------
children : list
@@ -7717,6 +8206,7 @@ class Game(Element):
single : bool
If `True`, there can be only one `Documentation` child, otherwise fail.
If `False` return all `Documentation` children in this element
+
Returns
-------
children : list
@@ -7733,6 +8223,7 @@ class Game(Element):
single : bool
If `True`, there can be only one `Prototypes` child, otherwise fail.
If `False` return all `Prototypes` children in this element
+
Returns
-------
children : list
@@ -7748,6 +8239,7 @@ class Game(Element):
single : bool
If `True`, there can be only one `PlayerRo` child, otherwise fail.
If `False` return all `PlayerRo` children in this element
+
Returns
-------
children : list
@@ -7762,6 +8254,7 @@ class Game(Element):
single : bool
If `True`, there can be only one `GlobalOption` child, otherwise fail.
If `False` return all `GlobalOption` children in this element
+
Returns
-------
children : list
@@ -7775,6 +8268,7 @@ class Game(Element):
----------
asdict : bool
If `True`, return a dictonary that maps key to `Inventorie` elements. If `False`, return a list of all Inventorie` children.
+
Returns
-------
children : dict or list
@@ -7788,6 +8282,7 @@ class Game(Element):
----------
asdict : bool
If `True`, return a dictonary that maps key to `PieceWindow` elements. If `False`, return a list of all PieceWindow` children.
+
Returns
-------
children : dict or list
@@ -7801,6 +8296,7 @@ class Game(Element):
----------
asdict : bool
If `True`, return a dictonary that maps key to `ChartWindow` elements. If `False`, return a list of all ChartWindow` children.
+
Returns
-------
children : dict or list
@@ -7814,6 +8310,7 @@ class Game(Element):
----------
asdict : bool
If `True`, return a dictonary that maps key to `DiceButton` elements. If `False`, return a list of all DiceButton` children.
+
Returns
-------
children : dict or list
@@ -7827,6 +8324,7 @@ class Game(Element):
----------
asdict : bool
If `True`, return a dictonary that maps key to `PredefinedSetup` elements. If `False`, return a list of all PredefinedSetup` children.
+
Returns
-------
children : dict or list
@@ -7841,6 +8339,7 @@ class Game(Element):
single : bool
If `True`, there can be only one `Note` child, otherwise fail.
If `False` return all `Note` children in this element
+
Returns
-------
children : list
@@ -7854,6 +8353,7 @@ class Game(Element):
----------
asdict : bool
If `True`, return a dictonary that maps key to `TurnTrack` elements. If `False`, return a list of all TurnTrack` children.
+
Returns
-------
children : dict or list
@@ -7867,6 +8367,7 @@ class Game(Element):
----------
asdict : bool
If `True`, return a dictonary that maps key to `Piece` elements. If `False`, return a list of all Piece` children.
+
Returns
-------
children : dict or list
@@ -7880,6 +8381,7 @@ class Game(Element):
----------
asdict : bool
If `True`, return a dictonary that maps key to `SpecificPiece` elements. If `False`, return a list of all SpecificPiece` children.
+
Returns
-------
children : dict or list
@@ -7896,6 +8398,7 @@ class Game(Element):
----------
asdict : bool
If `True`, return a dictonary that maps key to `WidgetMap` elements. If `False`, return a list of all WidgetMap` children.
+
Returns
-------
children : dict or list
@@ -7909,6 +8412,7 @@ class Game(Element):
----------
asdict : bool
If `True`, return a dictonary that maps key to `Map` elements. If `False`, return a list of all Map` children.
+
Returns
-------
children : dict or list
@@ -7931,6 +8435,7 @@ class Game(Element):
elements. If `False`, return a list of all Board`
children.
+
Returns
-------
children : dict or list
@@ -7948,6 +8453,7 @@ class Game(Element):
elements. If `False`, return a list of all Board`
children.
+
Returns
-------
children : dict or list
@@ -7965,6 +8471,7 @@ class Game(Element):
elements. If `False`, return a list of all Board`
children.
+
Returns
-------
children : dict or list
@@ -7982,6 +8489,7 @@ class Game(Element):
elements. If `False`, return a list of all Board`
children.
+
Returns
-------
children : dict or list
@@ -8014,6 +8522,7 @@ class Game(Element):
single : bool
If `True`, there can be only one `AtStart` child, otherwise fail.
If `False` return all `AtStart` children in this element
+
Returns
-------
children : list
@@ -8057,6 +8566,7 @@ class BuildFile(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Game
@@ -8096,6 +8606,7 @@ class Data(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Version
@@ -8109,6 +8620,7 @@ class Data(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : VASSALVersion
@@ -8122,6 +8634,7 @@ class Data(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Name
@@ -8135,6 +8648,7 @@ class Data(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Description
@@ -8148,6 +8662,7 @@ class Data(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : DateSaved
@@ -8162,6 +8677,7 @@ class Data(Element):
single : bool
If `True`, there can be only one `Version` child, otherwise fail.
If `False` return all `Version` children in this element
+
Returns
-------
children : list
@@ -8177,6 +8693,7 @@ class Data(Element):
If `True`, there can be only one `VASSALVersion` child,
otherwise fail. If `False` return all `VASSALVersion`
children in this element
+
Returns
-------
children : list
@@ -8195,6 +8712,7 @@ class Data(Element):
If `True`, there can be only one `Description` child,
otherwise fail. If `False` return all `De` children in
this element
+
Returns
-------
children : list
@@ -8210,6 +8728,7 @@ class Data(Element):
single : bool
If `True`, there can be only one `DateSaved` child, otherwise fail.
If `False` return all `DateSaved` children in this element
+
Returns
-------
children : list
@@ -8289,6 +8808,7 @@ class ModuleData(Element):
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Data
@@ -8928,6 +9448,18 @@ class VMod:
def fileName(self):
'''Get name of VMod file'''
return self._vmod.filename
+
+ def replaceFiles(self,**files):
+ '''Replace existing files with new files
+
+ Parameters
+ ----------
+ files : dict
+ Dictionary that maps file name to content
+ '''
+ self.removeFiles(*list(files.keys()))
+
+ self.addFiles(**files);
def addFiles(self,**files):
'''Add a set of files to this
@@ -8949,6 +9481,7 @@ class VMod:
File name in module
content : str
File content
+
Returns
-------
element : File
@@ -8963,6 +9496,7 @@ class VMod:
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : ExternalFile
@@ -8974,6 +9508,14 @@ class VMod:
def getFileNames(self):
'''Get all filenames in module'''
return self._vmod.namelist()
+
+ def getFileMapping(self):
+ '''Get mapping from short name to full archive name'''
+ from pathlib import Path
+
+ names = self.getFileNames()
+
+ return {Path(p).stem: str(p) for p in names}
def getFiles(self,*filenames):
'''Return named files as a dictionary.
@@ -8982,6 +9524,7 @@ class VMod:
----------
filenames : tuple
The files to get
+
Returns
-------
files : dict
@@ -9009,7 +9552,7 @@ class VMod:
r = self.getFiles(filename)
if filename not in r:
- raise RuntimeException(f'No {filename} found!')
+ raise RuntimeError(f'No {filename} found!')
return parseString(r[filename])
@@ -9031,6 +9574,7 @@ class VMod:
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : VSav
@@ -9043,6 +9587,187 @@ class VMod:
# EOF
#
# ====================================================================
+# From upgrade.py
+
+
+class VLogUpgrader:
+ def __init__(self,
+ vmodFileName,
+ vlogFileName,
+ verbose=False):
+ self._readVModFile(vmodFileName,verbose)
+ self._readVLogFile(vlogFileName,verbose)
+
+ def _readVModFile(self,vmodFileName,verbose=False):
+ with VMod(vmodFileName, 'r') as vmod:
+ self._build = BuildFile(vmod.getBuildFile())
+ self._game = self._build.getGame()
+
+ self._vmod_pieces = {}
+ for piece in self._game.getPieces():
+ name, piece = self._expandPiece(piece,verbose)
+ self._vmod_pieces[name] = piece
+
+ def _expandPiece(self,piece,verbose=False):
+ traits = piece.getTraits();
+ newTraits = Trait.flatten(traits, game=self._game,verbose=verbose)
+
+ piece.setTraits(*newTraits)
+
+ name = newTraits[-1]['name']
+
+ return name, piece
+
+ def _readVLogFile(self,vlogFileName,verbose=False):
+ key, lines, sdata, mdata = SaveIO.readSave(vlogFileName,
+ alsometa=True)
+
+ self._key = key
+ self._lines = lines
+ self._save_data = sdata
+ self._meta_data = mdata
+ self._vlog_pieces = {}
+
+ for line in self._lines:
+ iden, name, piece = self._vlogPiece(line,verbose)
+ if piece is None:
+ continue
+
+ vmod_piece = self._vmod_pieces.get(name,None)
+ if vmod_piece is None:
+ print(f'Did not find piece "{name}" in vmod')
+ vmod_piece = piece
+
+ vmod_piece.copyStates(piece)
+ self._vlog_pieces[iden] = {'name': name,
+ 'vlog': piece,
+ 'vmod': vmod_piece}
+
+
+ def _vlogPiece(self,line,verbose=False):
+ from re import match
+
+ m = match(r'^\+/([0-9]+)/.*;([a-z0-9_]+)\.png.*',line)
+ if m is None:
+ return None,None,None
+
+ iden = int(m.group(1))
+ piece = PieceSlot(None)
+ piece.setTraits(*piece.decodeAdd(line,verbose),iden=iden)
+ basic = piece.getTraits()[-1]
+
+ return iden,basic['name'],piece
+
+
+ def _newLine(self,line,verbose):
+ self._new_lines.append(line)
+ if verbose:
+ print(line)
+
+ def upgrade(self,shownew=False,verbose=False):
+ self._new_lines = []
+ for line in self._lines:
+ add_line = self.newDefine(line,verbose)
+ if add_line:
+ self._newLine(add_line,shownew)
+ continue
+
+ cmd_line = self.newCommand(line,verbose)
+ if cmd_line:
+ self._newLine(cmd_line,shownew)
+ continue
+
+ oth_line = self.other(line,verbose)
+ if oth_line:
+ self._newLine(oth_line,shownew)
+ continue
+
+ self._newLine(line,shownew)
+
+ def newCommand(self,line,verbose=False):
+ from re import match
+
+ m = match(r'LOG\s+([+MD])/([0-9]+)/([^/]+)(.*)',line)
+ if not m:
+ return None
+
+ cmd = m.group(1)
+ iden = int(m.group(2))
+ more = m.group(3)
+
+ if more == 'stack':
+ return None
+
+ vp = self._vlog_pieces.get(iden,None)
+ if vp is None:
+ print(f'Piece {iden} not found: "{line}"')
+ return None
+
+ if cmd == '+' or cmd == 'M':
+ return None
+
+ # Get the code
+ code = more + m.group(4)
+
+ # Decode the states from the code into the old piece
+ vp['vlog'].decodeStates(code,verbose)
+
+ # Get the previsous state from the new piece
+ old = vp['vmod'].encodedStates()
+
+ # Copy states from the old piece to the new piece
+ vp['vmod'].copyStates(vp['vlog'],verbose)
+
+ # Get the new state code from the new piece
+ new = vp['vmod'].encodedStates()
+
+ newline = 'LOG\t'+cmd+'/'+str(iden)+'/'+new+'/'+old+'\\\\'
+ # print('WAS',line)
+ # print('NOW',newline)
+ return newline
+
+ def newDefine(self,line,verbose):
+ from re import match
+
+ m = match(r'\+/([0-9]+)/([^/]+).*',line)
+
+ if not m:
+ return False
+
+ iden = int(m.group(1))
+ more = m.group(2)
+ if more == 'stack':
+ return False
+
+ vp = self._vlog_pieces.get(iden,None)
+ if vp is None:
+ print(f'Piece {iden} not known')
+
+ old = vp['vlog']
+ new = vp['vmod']
+
+ old_add = old._node.childNodes[0].nodeValue;
+ new_add = new.encodeAdd(*new.getTraits(),iden=iden,verbose=verbose);
+
+ return new_add
+
+ def other(self,line,verbose=False):
+ return None
+
+
+ def write(self,outFileName,verbose=False):
+ SaveIO.writeSave(outFileName,
+ key = 0xAA,
+ lines = self._new_lines,
+ savedata = self._save_data,
+ moduledata = self._meta_data)
+
+
+
+#
+# EOF
+#
+# ====================================================================
# From exporter.py
class Exporter:
@@ -9137,12 +9862,87 @@ class Exporter:
# Exporter class
#
class LaTeXExporter(Exporter):
+ class Specials:
+ BATTLE_MARK = 'wgBattleMarker'
+ BATTLE_CTRL = 'wgBattleCtrl'
+ BATTLE_CALC = 'wgBattleCalc'
+ BATTLE_UNIT = 'wgBattleUnit'
+ ODDS_MARK = 'wgOddsMarker'
+ HIDDEN_NAME = 'wg hidden unit'
+
+ class Keys:
+ MARK_BATTLE = key(NONE,0)+',wgMarkBattle'
+ CLEAR_BATTLE = key(NONE,0)+',wgClearBattle'
+ CLEAR_ALL_BATTLE = key(NONE,0)+',wgClearAllBattle'
+ ZERO_BATTLE = key(NONE,0)+',wgZeroBattle'
+ INCR_BATTLE = key(NONE,0)+',wgIncrBattle'
+ SET_BATTLE = key(NONE,0)+',wgSetBattle'
+ GET_BATTLE = key(NONE,0)+',wgGetBattle'
+ MARK_ODDS = key(NONE,0)+',wgMarkOdds'
+ MARK_RESULT = key(NONE,0)+',wgMarkResult'
+ CLEAR_MOVED = key(NONE,0)+',wgClearMoved'
+ ZERO_BATTLE_AF = key(NONE,0)+',wgZeroBattleAF'
+ ZERO_BATTLE_DF = key(NONE,0)+',wgZeroBattleDF'
+ ZERO_BATTLE_FRAC = key(NONE,0)+',wgZeroBattleFrac'
+ ZERO_BATTLE_ODDS = key(NONE,0)+',wgZeroBattleOdds'
+ ZERO_BATTLE_SHFT = key(NONE,0)+',wgZeroBattleShift'
+ ZERO_BATTLE_IDX = key(NONE,0)+',wgZeroBattleIdx'
+ CALC_BATTLE_AF = key(NONE,0)+',wgCalcBattleAF'
+ CALC_BATTLE_DF = key(NONE,0)+',wgCalcBattleDF'
+ CALC_BATTLE_FRAC = key(NONE,0)+',wgCalcBattleFrac'
+ CALC_BATTLE_ODDS = key(NONE,0)+',wgCalcBattleOdds'
+ CALC_BATTLE_SHFT = key(NONE,0)+',wgCalcBattleShift'
+ CALC_BATTLE_IDX = key(NONE,0)+',wgCalcBattleIdx'
+ CALC_BATTLE_RES = key(NONE,0)+',wgCalcBattleResult'
+ CLEAR_BATTLE_PHS = key(NONE,0)+',wgClearBattlePhs'
+ RESOLVE_BATTLE = key(NONE,0)+',wgResolveBattle'
+ ROLL_DICE = key(NONE,0)+',wgRollDice'
+ DICE_INIT_KEY = key(NONE,0)+',wgInitDice'
+ CLEAR_KEY = key('C')
+ CLEAR_ALL_KEY = key('C',CTRL_SHIFT)
+ DELETE_KEY = key('D')
+ ELIMINATE_KEY = key('E')
+ FLIP_KEY = key('F')
+ TRAIL_KEY = key('T')
+ RESTORE_KEY = key('R')
+ MARK_KEY = key('X')
+ RESOLVE_KEY = key('Y')
+ ROTATE_CCWKey = key('[')
+ ROTATE_CWKey = key(']')
+ CHARTS_KEY = key('A',ALT)
+ OOB_KEY = key('B',ALT)
+ COUNTERS_KEY = key('C',ALT)
+ DEAD_KEY = key('E',ALT)
+ DICE_KEY = key('6',ALT)
+ RECALC_ODDS = key('X',CTRL_SHIFT)
+
+ class Globals:
+ BATTLE_COUNTER = 'wgBattleCounter'
+ CURRENT_BATTLE = 'wgCurrentBattle'
+ CURRENT_ATTACKER = 'wgCurrentAttacker'
+ BATTLE_NO = 'wgBattleNo'
+ BATTLE_AF = 'wgBattleAF'
+ BATTLE_DF = 'wgBattleDF'
+ BATTLE_FRAC = 'wgBattleFrac'
+ BATTLE_IDX = 'wgBattleIdx'
+ BATTLE_ODDS = 'wgBattleOdds'
+ BATTLE_ODDSM = 'wgBattleOddsMarker'
+ BATTLE_SHIFT = 'wgBattleShift'
+ BATTLE_RESULT = 'wgBattleResult'
+ AUTO_ODDS = 'wgAutoOdds'
+ AUTO_RESULTS = 'wgAutoResults'
+ NO_CLEAR_MOVES = 'wgNoClearMoves'
+ NO_CLEAR_BATTLES = 'wgNoClearBattles'
+ DEBUG = 'wgDebug'
+ VERBOSE = 'wgVerbose'
+
def __init__(self,
vmodname = 'Draft.vmod',
pdfname = 'export.pdf',
infoname = 'export.json',
title = 'Draft',
version = 'draft',
+ imageFormat = 'png',
description = '',
rules = None,
tutorial = None,
@@ -9197,76 +9997,80 @@ class LaTeXExporter(Exporter):
self._nochit = nochit
self._resolution = resolution
self._counterScale = counterScale
- self._battleMark = 'wgBattleMarker'
+ self._img_format = imageFormat.lower()
+
+ self._battleMark = LaTeXExporter.Specials.BATTLE_MARK
+ self._oddsMark = LaTeXExporter.Specials.ODDS_MARK
+ self._battleCtrl = LaTeXExporter.Specials.BATTLE_CTRL
+ self._battleCalc = LaTeXExporter.Specials.BATTLE_CALC
+ self._battleUnit = LaTeXExporter.Specials.BATTLE_UNIT
+ self._hiddenName = LaTeXExporter.Specials.HIDDEN_NAME
+ self._markBattle = LaTeXExporter.Keys.MARK_BATTLE
+ self._clearBattle = LaTeXExporter.Keys.CLEAR_BATTLE
+ self._clearAllBattle = LaTeXExporter.Keys.CLEAR_ALL_BATTLE
+ self._zeroBattle = LaTeXExporter.Keys.ZERO_BATTLE
+ self._incrBattle = LaTeXExporter.Keys.INCR_BATTLE
+ self._setBattle = LaTeXExporter.Keys.SET_BATTLE
+ self._getBattle = LaTeXExporter.Keys.GET_BATTLE
+ self._markOdds = LaTeXExporter.Keys.MARK_ODDS
+ self._markResult = LaTeXExporter.Keys.MARK_RESULT
+ self._clearMoved = LaTeXExporter.Keys.CLEAR_MOVED
+ self._zeroBattleAF = LaTeXExporter.Keys.ZERO_BATTLE_AF
+ self._zeroBattleDF = LaTeXExporter.Keys.ZERO_BATTLE_DF
+ self._zeroBattleFrac = LaTeXExporter.Keys.ZERO_BATTLE_FRAC
+ self._zeroBattleOdds = LaTeXExporter.Keys.ZERO_BATTLE_ODDS
+ self._zeroBattleShft = LaTeXExporter.Keys.ZERO_BATTLE_SHFT
+ self._zeroBattleIdx = LaTeXExporter.Keys.ZERO_BATTLE_IDX
+ self._calcBattleAF = LaTeXExporter.Keys.CALC_BATTLE_AF
+ self._calcBattleDF = LaTeXExporter.Keys.CALC_BATTLE_DF
+ self._calcBattleFrac = LaTeXExporter.Keys.CALC_BATTLE_FRAC
+ self._calcBattleOdds = LaTeXExporter.Keys.CALC_BATTLE_ODDS
+ self._calcBattleShft = LaTeXExporter.Keys.CALC_BATTLE_SHFT
+ self._calcBattleIdx = LaTeXExporter.Keys.CALC_BATTLE_IDX
+ self._calcBattleRes = LaTeXExporter.Keys.CALC_BATTLE_RES
+ self._clearBattlePhs = LaTeXExporter.Keys.CLEAR_BATTLE_PHS
+ self._resolveBattle = LaTeXExporter.Keys.RESOLVE_BATTLE
+ self._rollDice = LaTeXExporter.Keys.ROLL_DICE
+ self._diceInitKey = LaTeXExporter.Keys.DICE_INIT_KEY
+ self._clearKey = LaTeXExporter.Keys.CLEAR_KEY
+ self._clearAllKey = LaTeXExporter.Keys.CLEAR_ALL_KEY
+ self._deleteKey = LaTeXExporter.Keys.DELETE_KEY
+ self._eliminateKey = LaTeXExporter.Keys.ELIMINATE_KEY
+ self._flipKey = LaTeXExporter.Keys.FLIP_KEY
+ self._trailKey = LaTeXExporter.Keys.TRAIL_KEY
+ self._restoreKey = LaTeXExporter.Keys.RESTORE_KEY
+ self._markKey = LaTeXExporter.Keys.MARK_KEY
+ self._resolveKey = LaTeXExporter.Keys.RESOLVE_KEY
+ self._rotateCCWKey = LaTeXExporter.Keys.ROTATE_CCWKey
+ self._rotateCWKey = LaTeXExporter.Keys.ROTATE_CWKey
+ self._chartsKey = LaTeXExporter.Keys.CHARTS_KEY
+ self._oobKey = LaTeXExporter.Keys.OOB_KEY
+ self._countersKey = LaTeXExporter.Keys.COUNTERS_KEY
+ self._deadKey = LaTeXExporter.Keys.DEAD_KEY
+ self._diceKey = LaTeXExporter.Keys.DICE_KEY
+ self._recalcOdds = LaTeXExporter.Keys.RECALC_ODDS
+ self._battleCounter = LaTeXExporter.Globals.BATTLE_COUNTER
+ self._currentBattle = LaTeXExporter.Globals.CURRENT_BATTLE
+ self._currentAttacker = LaTeXExporter.Globals.CURRENT_ATTACKER
+ self._battleNo = LaTeXExporter.Globals.BATTLE_NO
+ self._battleAF = LaTeXExporter.Globals.BATTLE_AF
+ self._battleDF = LaTeXExporter.Globals.BATTLE_DF
+ self._battleFrac = LaTeXExporter.Globals.BATTLE_FRAC
+ self._battleIdx = LaTeXExporter.Globals.BATTLE_IDX
+ self._battleOdds = LaTeXExporter.Globals.BATTLE_ODDS
+ self._battleOddsM = LaTeXExporter.Globals.BATTLE_ODDSM
+ self._battleShift = LaTeXExporter.Globals.BATTLE_SHIFT
+ self._battleResult = LaTeXExporter.Globals.BATTLE_RESULT
+ self._autoOdds = LaTeXExporter.Globals.AUTO_ODDS
+ self._autoResults = LaTeXExporter.Globals.AUTO_RESULTS
+ self._noClearMoves = LaTeXExporter.Globals.NO_CLEAR_MOVES
+ self._noClearBattles = LaTeXExporter.Globals.NO_CLEAR_BATTLES
+ self._debug = LaTeXExporter.Globals.DEBUG
+ self._verbose = LaTeXExporter.Globals.VERBOSE
self._battleMarks = []
self._oddsMarks = []
self._resultMarks = []
- self._markBattle = key(NONE,0)+',wgMarkBattle'
- self._clearBattle = key(NONE,0)+',wgClearBattle'
- self._clearAllBattle = key(NONE,0)+',wgClearAllBattle'
- self._zeroBattle = key(NONE,0)+',wgZeroBattle'
- self._incrBattle = key(NONE,0)+',wgIncrBattle'
- self._setBattle = key(NONE,0)+',wgSetBattle'
- self._getBattle = key(NONE,0)+',wgGetBattle'
- self._markOdds = key(NONE,0)+',wgMarkOdds'
- self._markResult = key(NONE,0)+',wgMarkResult'
- self._clearMoved = key(NONE,0)+',wgClearMoved'
- self._zeroBattleAF = key(NONE,0)+',wgZeroBattleAF'
- self._zeroBattleDF = key(NONE,0)+',wgZeroBattleDF'
- self._zeroBattleFrac = key(NONE,0)+',wgZeroBattleFrac'
- self._zeroBattleOdds = key(NONE,0)+',wgZeroBattleOdds'
- self._zeroBattleShft = key(NONE,0)+',wgZeroBattleShift'
- self._zeroBattleIdx = key(NONE,0)+',wgZeroBattleIdx'
- self._calcBattleAF = key(NONE,0)+',wgCalcBattleAF'
- self._calcBattleDF = key(NONE,0)+',wgCalcBattleDF'
- self._calcBattleFrac = key(NONE,0)+',wgCalcBattleFrac'
- self._calcBattleOdds = key(NONE,0)+',wgCalcBattleOdds'
- self._calcBattleShft = key(NONE,0)+',wgCalcBattleShift'
- self._calcBattleIdx = key(NONE,0)+',wgCalcBattleIdx'
- self._calcBattleRes = key(NONE,0)+',wgCalcBattleResult'
- self._clearBattlePhs = key(NONE,0)+',wgClearBattlePhs'
- self._resolveBattle = key(NONE,0)+',wgResolveBattle'
- self._rollDice = key(NONE,0)+',wgRollDice'
- self._diceInitKey = key(NONE,0)+',wgInitDice'
- self._clearKey = key('C')
- self._clearAllKey = key('C',CTRL_SHIFT)
- self._deleteKey = key('D')
- self._eliminateKey = key('E')
- self._flipKey = key('F')
- self._trailKey = key('M')
- self._restoreKey = key('R')
- self._markKey = key('X')
- self._resolveKey = key('Y')
- self._rotateCCWKey = key('[')
- self._rotateCWKey = key(']')
- self._chartsKey = key('A',ALT)
- self._oobKey = key('B',ALT)
- self._countersKey = key('C',ALT)
- self._deadKey = key('E',ALT)
- self._diceKey = key('6',ALT)
- self._battleCounter = 'wgBattleCounter'
- self._currentBattle = 'wgCurrentBattle'
- self._currentAttacker = 'wgCurrentAttacker'
- self._battleNo = 'wgBattleNo'
- self._battleAF = 'wgBattleAF'
- self._battleDF = 'wgBattleDF'
- self._battleFrac = 'wgBattleFrac'
- self._battleIdx = 'wgBattleIdx'
- self._battleOdds = 'wgBattleOdds'
- self._battleOddsM = 'wgBattleOddsMarker'
- self._battleShift = 'wgBattleShift'
- self._battleCtrl = 'wgBattleCtrl'
- self._battleCalc = 'wgBattleCalc'
- self._battleUnit = 'wgBattleUnit'
- self._battleResult = 'wgBattleResult'
- self._autoOdds = 'wgAutoOdds'
- self._autoResults = 'wgAutoResults'
- self._noClearMoves = 'wgNoClearMoves'
- self._noClearBattles = 'wgNoClearBattles'
- self._debug = 'wgDebug'
- self._verbose = 'wgVerbose'
self._hidden = None
- self._hiddenName = 'wg hidden unit'
self._dice = {}
self._diceInit = None
@@ -9283,6 +10087,8 @@ class LaTeXExporter(Exporter):
v(f'Visible grids: {self._visible}')
v(f'Resolution: {self._resolution}')
v(f'Scale of counters: {self._counterScale}')
+ v(f'Image format: {self._img_format}')
+
def setup(self):
# Start the processing
@@ -9306,6 +10112,7 @@ class LaTeXExporter(Exporter):
----------
args : list
List of process command line elements
+
Returns
-------
pipe : subprocess.Pipe
@@ -9320,16 +10127,18 @@ class LaTeXExporter(Exporter):
def addPws(self,opw=None,upw=None):
'''Add a `Pws` element to arguments
+ Add password options
+
Parameters
----------
kwargs : dict
Dictionary of attribute key-value pairs
+
Returns
-------
element : Pws
The added element
'''
- '''Add password options'''
args = []
if upw is not None: args.extend(['-upw',upw])
if opw is not None: args.extend(['-opw',opw])
@@ -9392,6 +10201,92 @@ class LaTeXExporter(Exporter):
return info
# ================================================================
+ @classmethod
+ def parseLength(cls,value,def_unit='px'):
+ from re import match
+
+ scales = {
+ 'px': 1,
+ 'pt': 1.25,
+ 'pc': 15,
+ 'in': 90,
+ 'mm': 3.543307,
+ 'cm': 35.43307,
+ '%': -1/100
+ }
+
+ if not value:
+ return 0
+
+ parts = match(r'^\s*(-?\d+(?:\.\d+)?)\s*(px|in|cm|mm|pt|pc|%)?', value)
+ if not parts:
+ raise RuntimeError(f'Unknown length format: "{value}"')
+
+ number = float(parts.group(1))
+ unit = parts.group(2) or def_unit
+ factor = scales.get(unit,None)
+
+ if not factor:
+ raise RuntimeError(f'Unknown unit: "{unit}"')
+
+ return factor * number
+
+ # ----------------------------------------------------------------
+ @classmethod
+ def scaleSVG(cls,buffer,factor):
+ '''Buffer is bytes'''
+ from xml.dom.minidom import parse
+ from re import split
+ from io import StringIO, BytesIO
+
+ if not LaTeXExporter.isSVG(buffer):
+ return buffer
+
+ with BytesIO(buffer) as stream:
+ doc = parse(stream)
+
+ if not doc:
+ raise RuntimeError('Failed to parse buffer as XML')
+
+ root = doc.childNodes[0]
+ getA = lambda e,n,d=None : \
+ e.getAttribute(n) if e.hasAttribute(n) else d
+ setA = lambda e,n,v : e.setAttribute(n,v)
+ leng = LaTeXExporter.parseLength
+
+ width = leng(getA(root,'width', '0'))
+ height = leng(getA(root,'height','0'))
+ vport = getA(root,'viewBox','0 0 0 0').strip()
+ vp = [leng(v) for v in split('[ \t,]',vport)]
+ # print(f'Input WxH: {width}x{height} ({vp})')
+
+ width *= factor
+ height *= factor
+ vp = [factor * v for v in vp]
+
+ # print(f'Scaled WxH: {width}x{height} ({vp})')
+
+ if width <= 0 and vp:
+ width = vp[2] - vp[0]
+
+ if height <= 0 and vp:
+ height = vp[3] - vp[1]
+
+ if not vp:
+ vp = [0, 0, width, height]
+
+ setA(root,'transform',f'scale({factor})')
+ setA(root,'width', f'{width}')
+ setA(root,'height',f'{height}')
+ setA(root,'viewBox',' '.join([f'{v}' for v in vp]))
+
+
+ with StringIO() as out:
+ doc.writexml(out)
+ return out.getvalue().encode()
+
+
+ # ================================================================
def convertPage(self,page,opw=None,upw=None,timeout=None):
'''Convert a page from PDF into an image (bytes)
@@ -9411,17 +10306,22 @@ class LaTeXExporter(Exporter):
info : dict
Image information
'''
- args = ['pdftocairo',
+ args = ['pdftocairo']
+ if self._img_format != 'svg':
+ args.extend([
'-transp',
- '-singlefile',
+ '-singlefile'])
+
+ args.extend([
'-r', str(self._resolution),
'-f', str(page),
'-l', str(page),
- '-png' ]
+ f'-{self._img_format}' ])
args.extend(self.addPws(opw=opw,upw=upw))
args.append(self._pdfname)
args.append('-')
-
+
+ # print(f'Conversion command',' '.join(args))
proc = self.createProcess(args)
try:
@@ -9432,7 +10332,16 @@ class LaTeXExporter(Exporter):
raise RuntimeError(f'Failed to convert page {page} of '
f'{self._pdfname}: {e}')
- # Just return the bytes
+ if len(out) <= 0:
+ raise RuntimeError(f'Failed to convert page {page} of '
+ f'{self._pdfname}: {err}')
+
+ # This does not seem to work - VASSAL (and Inkscape) does not
+ # apply the 'scale' transformation to the image!
+ #
+ # if self._img_format == 'svg':
+ # out = LaTeXExporter.scaleSVG(out,2)
+
return out
@@ -9501,6 +10410,11 @@ class LaTeXExporter(Exporter):
return imgsinfo
# ----------------------------------------------------------------
+ @classmethod
+ def isSVG(cls,buffer):
+ return buffer[:5] == b'<?xml'
+
+ # ----------------------------------------------------------------
def getBB(self,buffer):
'''Get bounding box of image
@@ -9514,11 +10428,26 @@ class LaTeXExporter(Exporter):
ulx, uly, lrx, lry : tuple
The coordinates of the bounding box
'''
- from PIL import Image
from io import BytesIO
+
+ with BytesIO(buffer) as inp:
+ if LaTeXExporter.isSVG(buffer):
+ from svgelements import SVG
+
+ svg = SVG.parse(inp)
+ # bb = svg.bbox()
+ # if bb is None:
+ # print(f'No bounding box!')
+ # bb = [0, 0, 1, 1]
+ # else:
+ # bb = [int(b) for b in bb]
+ x, y, w, h = svg.x, svg.y, svg.width, svg.height
+ bb = (x,y,x+w,y+h)
+ else:
+ from PIL import Image
- with Image.open(BytesIO(buffer)) as img:
- bb = img.getbbox()
+ with Image.open(inp) as img:
+ bb = img.getbbox()
return bb
@@ -9536,11 +10465,21 @@ class LaTeXExporter(Exporter):
ulx, uly, lrx, lry : tuple
The coordinates of the bounding box
'''
- from PIL import Image
from io import BytesIO
-
- with Image.open(BytesIO(buffer)) as img:
- w, h = img.width, img.height
+
+ with BytesIO(buffer) as inp:
+ if LaTeXExporter.isSVG(buffer):
+ from svgelements import SVG
+
+ svg = SVG.parse(inp)
+ w, h = svg.x, svg.y, svg.width, svg.height
+ # bb = svg.bbox()
+ # w, h = int(bb[2]-bb[0]),int(bb[3]-bb[1])
+ else:
+ from PIL import Image
+
+ with Image.open(inp) as img:
+ w, h = img.width, img.height
return w,h
@@ -9591,11 +10530,13 @@ class LaTeXExporter(Exporter):
typ = info.get('category','counter')
sub = info.get('subcategory','all')
-
- info['filename'] = info['name'].replace(' ','_') + '.png'
+ nam = info['name']
+ num = info['number']
+
+ info['filename'] = f'{nam.replace(" ","_")}.{self._img_format}'
imgfn = 'images/'+info['filename']
if imgfn not in self._vmod.getFileNames():
- if typ == 'counter':
+ if typ == 'counter' and self._img_format != 'svg':
# print(f'Possibly scale file {imgfn}')
info['img'] = self.scaleImage(info['img'],
counterScale)
@@ -9621,9 +10562,19 @@ class LaTeXExporter(Exporter):
cat[sub] = {}
tgt = cat[sub]
- v(f'[{info["name"]}]',end=' ',flush=True,noindent=True)
+ v(f'[{nam}]',end=' ',flush=True,noindent=True)
#self.message(f'Adding "{info["name"]}" to catalogue')
- tgt[info['name']] = info
+ #
+ # Here we could handle multiple info's with the same
+ # name by adding a unique postfix - e.g., for dices
+ # what have non-uniform PMFs.
+ #
+ # if info['name'] in tgt:
+ # n = len([i for k,i in tgt.items() if k.startswith(info['name'])])
+ # info['name'] += '_' + str(n)
+ # info['filename'] = info['name'].replace(' ','_') + '.png'
+ unam = f'{nam}'
+ tgt[unam] = info
if self._nonato: continue
@@ -9854,7 +10805,7 @@ class LaTeXExporter(Exporter):
v(f'We have symbolic dice')
self._diceInit = []
# from pprint import pprint
- # pprint(self._dice,depth=3)
+ # pprint(self._dice,depth=2)
for die, faces in self._dice.items():
ico = self.getIcon(die+'-die-icon','')
# print(f'Die {die} icon="{ico}"')
@@ -9866,7 +10817,9 @@ class LaTeXExporter(Exporter):
text = die if ico == '' else '',
icon = ico,
tooltip = f'{die} die roll',
- format = (f'{{"{die} die roll: "+result1'
+ format = (f'{{"<b>"+PlayerSide+"</b> "+'
+ f'"(<i>"+PlayerName+"</i>): "+'+
+ f'"{die} die roll: "+result1'
# f'+" <img src=\'{die}-"+result1'
# f'+".png\' width=24 height=24>"'
f'}}'),
@@ -9876,7 +10829,8 @@ class LaTeXExporter(Exporter):
sdie = symb.addDie(name = die);
for face, fdata in faces.items():
fn = fdata['filename']
- val = int(fn.replace('.png','').replace(die+'-',''))
+ val = int(fn.replace(f'.{self._img_format}','')
+ .replace(die+'-',''))
dmin = min(dmin,val)
dmax = min(dmax,val)
sdie.addFace(icon = fn,
@@ -9988,6 +10942,7 @@ class LaTeXExporter(Exporter):
[['Ctrl-C', 'Counter', 'Clear battle'],
['Ctrl-Shift-C','Board', 'Clear all battle'],
['Ctrl-X', 'Board,Counter','Mark battle'],
+ ['Ctrl-Shift-X','Board,Counter','Recalculate Odds'],
['Ctrl-Y', 'Board,Counter','Resolve battle'],
]):
ks = [k[0] for k in keys]
@@ -10092,6 +11047,7 @@ class LaTeXExporter(Exporter):
wrap = True,
description = 'Zero battle counter',
),
+ # Set global property combat # from this
GlobalPropertyTrait(
['',self._setBattle,GlobalPropertyTrait.DIRECT,
f'{{{self._battleCounter}}}'],
@@ -10411,6 +11367,8 @@ class LaTeXExporter(Exporter):
# for the current battle
#
traits = [
+ # getBattle retrieves the battle number from the global property.
+ # clearBattle sets piece battle to -1
DynamicPropertyTrait(['',self._getBattle,
DynamicPropertyTrait.DIRECT,
f'{{{self._currentBattle}}}'],
@@ -10421,7 +11379,9 @@ class LaTeXExporter(Exporter):
numeric = True,
value = f'{{-1}}',
description = 'Set battle number'),
- GlobalPropertyTrait(['',self._setBattle, GlobalPropertyTrait.DIRECT,
+ # This setBattle sets current attacker in global property
+ GlobalPropertyTrait(['',self._setBattle,
+ GlobalPropertyTrait.DIRECT,
'{IsAttacker}'],
name = self._currentAttacker,
numeric = True,
@@ -10457,6 +11417,9 @@ class LaTeXExporter(Exporter):
description = f'Add battle marker {i+1}',
placement = PlaceTrait.ABOVE,
above = False))
+ # Get current global battle number
+ # Set current battle
+ # Filtered on current global battle # is equal to
trig.append(
TriggerTrait(command = '',#Mark battle',
key = self._markBattle,
@@ -10758,7 +11721,9 @@ class LaTeXExporter(Exporter):
def oddsMarkerTraits(self,c=None):
'''Derives from the CurrentBattle prototype and adds a submenu
to replace odds counter with result marker'''
+ gpid = self._game.nextPieceSlotId()
traits = [PrototypeTrait(name=self._currentBattle),
+ MarkTrait(self._oddsMark,'true'),
NonRectangleTrait(filename = c['filename'],
image = c['img']),
DynamicPropertyTrait(
@@ -10773,13 +11738,53 @@ class LaTeXExporter(Exporter):
TriggerTrait(command = '',
key = self._getBattle+'Details',
actionKeys = [self._getBattle,
- self._getBattle+'More'])]
+ self._getBattle+'More']),
+ # DeleteTrait('',self._recalcOdds+'Delete'),
+ # ReplaceTrait(command = '',
+ # key = self._recalcOdds+'Replace',
+ # markerSpec = '',
+ # markerText = 'null',
+ # xOffset = 0,
+ # yOffset = 0,
+ # matchRotation = False,
+ # afterKey = '',
+ # gpid = gpid,
+ # description = f'Replace with nothing'),
+ GlobalHotkeyTrait(name = '',
+ key = self._calcBattleOdds+'Start',
+ globalHotkey = self._calcBattleOdds+'ReAuto',
+ description = 'Trampoline to global'),
+ # Recalculate odds
+ # First setBatle to make battle No global
+ # Then delete this
+ # Then send global key command
+ TriggerTrait(command = 'Recalculate',
+ key = self._recalcOdds,
+ actionKeys = [self._setBattle,
+ self._calcBattleOdds+'Start',
+ self._clearBattle,
+ ]),
+ ReportTrait(self._recalcOdds+'Delete',
+ report=(f'{{{self._debug}?'
+ f'("~ "+BasicName+'
+ f'": Deleting self"):""}}')),
+ ReportTrait(self._clearBattle,
+ report=(f'{{{self._debug}?'
+ f'("~ "+BasicName+'
+ f'": Remove"):""}}')),
+ ReportTrait(self._recalcOdds,
+ report=(f'{{{self._debug}?'
+ f'("! Recalculate Odds"):""}}')),
+ ReportTrait(self._calcBattleOdds+'Start',
+ report=(f'{{{self._debug}?'
+ f'("~ Start auto recalculate Odds"):""}}')),
+ ]
subs = []
place = []
trig = []
rept = []
- ukeys = []
+ ukeys = [self._recalcOdds]
first = ''
for i, result in enumerate(self._resultMarks):
r = result.replace('result marker','').strip()
@@ -10910,7 +11915,9 @@ class LaTeXExporter(Exporter):
traits = [#ReportTrait(self._eliminateKey,
# self._restoreKey,
# self._trailKey),
- TrailTrait(),
+ TrailTrait(lineWidth = 5,
+ radius = 10,
+ key = self._trailKey),
RotateTrait(),
MovedTrait(xoff = int(offX),yoff = int(offY)),
DeleteTrait(),
@@ -10921,6 +11928,8 @@ class LaTeXExporter(Exporter):
restoreName = 'Restore',
restoreKey = self._restoreKey,
description = 'Eliminate unit'),
+ # ReportTrait(self._trailKey,
+ # f'{{"Enabling trail on "+BasicName}}'),
PrototypeTrait(name=self._battleUnit),
MarkTrait(name='Faction',value=faction)]
@@ -10966,6 +11975,7 @@ class LaTeXExporter(Exporter):
bb = self.getBB(c['img'])
height = bb[3]-bb[1] if bb is not None else 1
width = bb[2]-bb[0] if bb is not None else 1
+
cf = subc.get(cn + ' flipped', None)
traits = [PrototypeTrait(name=f'{subn} prototype')]
@@ -10974,10 +11984,14 @@ class LaTeXExporter(Exporter):
if not self._nonato:
mains = c.get('mains','')
- m = set([clean(mains)] +
- [clean(m) for m in mains.split(',')])
- traits.extend([PrototypeTrait(name=f'{m.strip()} prototype')
- for m in set(m)])
+ mm = clean(mains).strip()
+ traits.append(PrototypeTrait(name=f'{mm} prototype'))
+ # Commented code adds all 'main' types as prototypes, which
+ # doesn't make so much sense
+ #
+ # m = set([clean(m) for m in mains.split(',')])
+ # traits.extend([PrototypeTrait(name=f'{m.strip()} prototype')
+ # for m in set(m)])
for p in ['echelon','command']:
val = c.get(p,None)
if val is not None:
@@ -11187,10 +12201,17 @@ class LaTeXExporter(Exporter):
True if any piece can be flipped
'''
with VerboseGuard(f'Adding board {name}') as v:
+ # from pprint import pprint
+ # pprint(info)
map = self._game.addMap(mapName=name,
markUnmovedHotkey=self._clearMoved)
map.addCounterDetailViewer(
- propertyFilter=f'{{{self._battleMark}!=true}}')
+ propertyFilter=f'{{{self._battleMark}!=true}}',
+ fontSize = 14,
+ summaryReportFormat = '<b>$LocationName$</b>',
+ hotkey = key('\n'),
+ stopAfterShowing = True
+ )
map.addHidePiecesButton()
map.addGlobalMap()
# Basics
@@ -11207,18 +12228,23 @@ class LaTeXExporter(Exporter):
map.addHighlightLastMoved()
map.addZoomer()
- map.addMassKey(name='Eliminate',
+ map.addMassKey(name = 'Eliminate',
buttonHotkey = self._eliminateKey,
hotkey = self._eliminateKey,
icon = self.getIcon('eliminate-icon',
'/icons/16x16/edit-undo.png'),
tooltip = 'Eliminate selected units')
- map.addMassKey(name='Delete',
+ map.addMassKey(name = 'Delete',
buttonHotkey = self._deleteKey,
hotkey = self._deleteKey,
icon = self.getIcon('delete-icon',
'/icons/16x16/no.png'),
tooltip = 'Delete selected units')
+ map.addMassKey(name = 'Trail',
+ buttonHotkey = self._trailKey,
+ hotkey = self._trailKey,
+ icon = '',
+ tooltip = '')
map.addMassKey(name='Rotate CW',
buttonHotkey = self._rotateCWKey,
hotkey = self._rotateCWKey,
@@ -11244,7 +12270,7 @@ class LaTeXExporter(Exporter):
f'{self._noClearMoves})'
f':""}}'))
if hasFlipped:
- map.addMassKey(name='Flip',
+ map.addMassKey(name = 'Flip',
buttonHotkey = self._flipKey,
hotkey = self._flipKey,
icon = self.getIcon('flip-icon',
@@ -11266,14 +12292,15 @@ class LaTeXExporter(Exporter):
curUnt = (f'{{{self._battleNo}=={self._currentBattle}&&'
f'{self._battleUnit}==true}}')
markSel = (f'{{{self._battleNo}=={self._currentBattle}&&'
- f'{self._battleMark}==true}}')
+ f'{self._battleMark}==true&&'
+ f'{self._oddsMark}!=true}}')
# ctrlSel = '{BasicName=="wg hidden unit"}'
map.addMassKey(name = 'User mark battle',
buttonHotkey = self._markKey,
buttonText = '',
hotkey = self._markBattle,
- icon = 'battle-marker-icon.png',
+ icon = f'battle-marker-icon.{self._img_format}',
tooltip = 'Mark battle',
target = '',
singleMap = False,
@@ -11336,7 +12363,7 @@ class LaTeXExporter(Exporter):
buttonText = '',
buttonHotkey = self._clearAllKey,
hotkey = self._clearAllBattle,
- icon = 'clear-battles-icon.png',
+ icon = f'clear-battles-icon.{self._img_format}',
tooltip = 'Clear all battles',
target = '',
singleMap = False,
@@ -11364,7 +12391,7 @@ class LaTeXExporter(Exporter):
map.addMassKey(name = 'Selected resolve battle',
buttonHotkey = self._resolveKey,
hotkey = self._resolveKey,
- icon = 'resolve-battles-icon.png',
+ icon = f'resolve-battles-icon.{self._img_format}',
tooltip = 'Resolve battle',
singleMap = False,
filter = oddsSel,
@@ -11433,15 +12460,45 @@ class LaTeXExporter(Exporter):
reportFormat = (f'{{{self._debug}?'
f'("~ {name}: '
f'Auto calculate odds"):""}}'))
+ map.addMassKey(name = 'User recalc',
+ buttonHotkey = self._recalcOdds,
+ buttonText = '',
+ hotkey = self._recalcOdds,
+ icon = '',
+ tooltip = 'Recalculate odds',
+ singleMap = False,
+ filter = '',
+ reportFormat = (f'{{{self._debug}?'
+ f'("~ {name}: '
+ f'Recalculate odds"):""}}'))
+ map.addMassKey(name = 'Auto recalc battle odds',
+ buttonText = '',
+ buttonHotkey = self._calcBattleOdds+'ReAuto',
+ hotkey = self._calcBattleOdds+'Start',
+ icon = '',
+ tooltip = '',
+ target = '',
+ singleMap = False,
+ filter = markSel,
+ reportFormat = (f'{{{self._debug}?'
+ f'("~ {name}: '
+ f'Auto re-calculate odds"):""}}'))
+ v(f'Getting the board dimensions')
ulx,uly,lrx,lry = self.getBB(info['img'])
- width = abs(ulx - lrx)
- height = abs(uly - lry)
- width, height = self.getWH(info['img'])
+ width = int(abs(ulx - lrx))
+ height = int(abs(uly - lry))
+ # Why is it we take the width and height like this?
+ # Do they every differ from the above?
+ # This is the only place that we actually use this
+ #
+ # width, height = self.getWH(info['img'])
height += 20
width += 5
-
+ # v(f'{ulx},{uly},{lrx},{lry}')
+
+ v(f'Board BB=({lrx},{lry})x({ulx},{uly}) {width}x{height}')
picker = map.addBoardPicker()
board = picker.addBoard(name = name,
image = info['filename'],
@@ -11451,13 +12508,14 @@ class LaTeXExporter(Exporter):
zoned.addHighlighter()
if not 'zones' in info:
- full = zoned.addZone(name = full,
+ color = rgb(255,0,0)
+ full = zoned.addZone(name = 'full',
useParentGrid = False,
path=(f'{ulx},{uly};' +
f'{lrx},{uly};' +
f'{lrx},{lry};' +
f'{ulx},{lry}'))
- grid = zone.addHexGrid(color = color,
+ grid = full.addHexGrid(color = color,
dx = HEX_WIDTH,
dy = HEX_HEIGHT,
visible = self._visible)
@@ -11489,7 +12547,7 @@ class LaTeXExporter(Exporter):
'''Add a "Dead Map" element to the module
'''
name = 'DeadMap'
- with VerboseGuard(f'Adding board {name}') as v:
+ with VerboseGuard(f'Adding deadmap {name}') as v:
map = self._game.addMap(mapName = name,
buttonName = '',
markMoved = 'Never',
@@ -12009,7 +13067,7 @@ class LaTeXExporter(Exporter):
# Do not add grids to pools
if ispool:
- v('Board {n} is pool with no points')
+ v(f'Board {n} is pool with no points')
continue
targs = {'color':rgb(255,0,0),'visible':self._visible}
@@ -12227,118 +13285,216 @@ class LaTeXExporter(Exporter):
self._game.addDiceButton(name = '1d6',
hotkey = self._diceKey)
+# ====================================================================
+def patchVmod(vmod_filename,patch_name,verbose):
+
+ with VMod(vmod_filename,'r') as vmod:
+ buildFile = BuildFile(vmod.getBuildFile())
+ moduleData = ModuleData(vmod.getModuleData())
+
+ from importlib.util import spec_from_file_location, module_from_spec
+ from pathlib import Path
+ from sys import modules
+
+ p = Path(patch_name)
+
+ spec = spec_from_file_location(p.stem, p.absolute())
+ module = module_from_spec(spec)
+ spec.loader.exec_module(module)
+
+ modules[p.stem] = module
+
+ with VMod(vmod_filename,'a') as vmod:
+ module.patch(buildFile,
+ moduleData,
+ vmod,
+ verbose)
+
+ vmod.replaceFiles(**{VMod.BUILD_FILE :
+ buildFile.encode(),
+ VMod.MODULE_DATA :
+ moduleData.encode()})
+
+
#
# EOF
#
# ====================================================================
# From main.py
+from argparse import ArgumentParser
+
+class DefaultSubcommandArgParse(ArgumentParser):
+ _default_subparser = None
+
+ def set_default_subparser(self, name):
+ self._default_subparser = name
+
+ def _parse_known_args(self, arg_strings, *args, **kwargs):
+ from argparse import _SubParsersAction
+ in_args = set(arg_strings)
+ d_sp = self._default_subparser
+ if d_sp is not None and not {'-h', '--help'}.intersection(in_args):
+ for x in self._subparsers._actions:
+ subparser_found = (
+ isinstance(x, _SubParsersAction) and
+ in_args.intersection(x._name_parser_map.keys())
+ )
+ if subparser_found:
+ break
+ else:
+ # insert default in first position, this implies no
+ # global options without a sub_parsers specified
+ arg_strings = [d_sp] + arg_strings
+ return super(DefaultSubcommandArgParse, self)._parse_known_args(
+ arg_strings, *args, **kwargs
+ )
+# ====================================================================
+def patchIt(args):
+ vmodname = args.output.name
+ patchname = args.patch.name
+ args.output.close()
+ args.patch .close()
+
+ patchVmod(vmodname, patchname, args.verbose)
+
+# ====================================================================
+def exportIt(args):
+
+ vmodname = args.output.name
+ patchname = args.patch.name if args.patch is not None else None
+
+ args.output.close()
+ if args.patch is not None:
+ args.patch.close()
+
+ Verbose().setVerbose(args.verbose)
+
+ try:
+ if args.version.lower() == 'draft':
+ args.visible_grids = True
+
+ rulesname = args.rules.name if args.rules is not None else None
+ tutname = args.tutorial.name if args.tutorial is not None else None
+
+ exporter = LaTeXExporter(vmodname = vmodname,
+ pdfname = args.pdffile.name,
+ infoname = args.infofile.name,
+ title = args.title,
+ version = args.version,
+ description = args.description,
+ rules = rulesname,
+ tutorial = tutname,
+ patch = patchname,
+ visible = args.visible_grids,
+ vassalVersion = args.vassal_version,
+ nonato = args.no_nato_prototypes,
+ nochit = args.no_chit_information,
+ resolution = args.resolution,
+ counterScale = args.counter_scale,
+ imageFormat = args.image_format)
+ exporter.run()
+ except Exception as e:
+ from sys import stderr
+ print(f'Failed to build {vmodname}: {e}',file=stderr)
+ from os import unlink
+ try:
+ unlink(vmodname)
+ except:
+ pass
+
+ raise e
+
+
# ====================================================================
if __name__ == '__main__':
from argparse import ArgumentParser, FileType
- ap = ArgumentParser(description='Create draft VASSAL module')
- ap.add_argument('pdffile',
+ ap = DefaultSubcommandArgParse(description='Create draft VASSAL module')
+ ap.set_default_subparser('export')
+ sp = ap.add_subparsers(dest='mode')
+
+ pp = sp.add_parser('patch',help='Patch VMod')
+ pp.add_argument('output',
+ help='Module to patch',
+ type=FileType('r'),
+ default='Draft.vmod')
+ pp.add_argument('patch',
+ help='A python script to patch generated module',
+ type=FileType('r'),
+ default='patch.py')
+ pp.add_argument('-V','--verbose',
+ help='Be verbose',
+ action='store_true')
+
+
+ ep = sp.add_parser('export',help='Export from PDF and JSON to VMod')
+ ep.add_argument('pdffile',
help='The PDF file to read images from',
type=FileType('r'),
default='export.pdf',
nargs='?')
- ap.add_argument('infofile',
+ ep.add_argument('infofile',
help='The JSON file to read image information from',
type=FileType('r'),
default='export.json',
nargs='?')
- ap.add_argument('-p','--patch',
- help='A python script to patch generated module',
- type=FileType('r'))
- ap.add_argument('-o','--output',
+ ep.add_argument('-o','--output',
help='Output file to write module to',
type=FileType('w'),
default='Draft.vmod')
- ap.add_argument('-t','--title',
+ ep.add_argument('-p','--patch',
+ help='A python script to patch generated module',
+ type=FileType('r'))
+ ep.add_argument('-V','--verbose',
+ help='Be verbose',
+ action='store_true')
+ ep.add_argument('-t','--title',
help='Module title', default='Draft',
type=str)
- ap.add_argument('-v','--version',
+ ep.add_argument('-v','--version',
help='Module version',
type=str,
default='draft')
- ap.add_argument('-r','--rules',
+ ep.add_argument('-r','--rules',
help='Rules PDF file',
type=FileType('r'))
- ap.add_argument('-T','--tutorial',
+ ep.add_argument('-T','--tutorial',
help='Tutorial (v)log file',
type=FileType('r'))
- ap.add_argument('-d','--description',
+ ep.add_argument('-d','--description',
help='Short description of module',
type=str,
default='draft of module')
- ap.add_argument('-W','--vassal-version',
+ ep.add_argument('-W','--vassal-version',
help='Vassal version number',
type=str,
default='3.6.7')
- ap.add_argument('-V','--verbose',
- help='Be verbose',
- action='store_true')
- ap.add_argument('-G','--visible-grids',
+ ep.add_argument('-G','--visible-grids',
action='store_true',
help='Make grids visible in the module')
- ap.add_argument('-N','--no-nato-prototypes',
+ ep.add_argument('-N','--no-nato-prototypes',
action='store_true',
help='Do not make prototypes for types,echelons,commands')
- ap.add_argument('-C','--no-chit-information',
+ ep.add_argument('-C','--no-chit-information',
action='store_true',
help='Do not make properties from chit information')
- ap.add_argument('-S','--counter-scale',
+ ep.add_argument('-S','--counter-scale',
type=float, default=1,
help='Scale counters by factor')
- ap.add_argument('-R','--resolution',
+ ep.add_argument('-R','--resolution',
type=int, default=150,
help='Resolution of images')
-
-
+ ep.add_argument('-I','--image-format',
+ choices = ['png','svg'], default='png',
+ help='Image format to use')
+
args = ap.parse_args()
- vmodname = args.output.name
- rulesname = args.rules.name if args.rules is not None else None
- tutname = args.tutorial.name if args.tutorial is not None else None
- args.output.close()
-
- patchname = args.patch.name if args.patch is not None else None
- if args.patch is not None:
- args.patch.close()
-
- if args.version.lower() == 'draft':
- args.visible_grids = True
-
- Verbose().setVerbose(args.verbose)
-
- try:
- exporter = LaTeXExporter(vmodname = vmodname,
- pdfname = args.pdffile.name,
- infoname = args.infofile.name,
- title = args.title,
- version = args.version,
- description = args.description,
- rules = rulesname,
- tutorial = tutname,
- patch = patchname,
- visible = args.visible_grids,
- vassalVersion = args.vassal_version,
- nonato = args.no_nato_prototypes,
- nochit = args.no_chit_information,
- resolution = args.resolution,
- counterScale = args.counter_scale)
- exporter.run()
- except Exception as e:
- from sys import stderr
- print(f'Failed to build {vmodname}: {e}',file=stderr)
- from os import unlink
- try:
- unlink(vmodname)
- except:
- pass
-
- raise e
+ if args.mode == 'patch':
+ patchIt(args)
+ else:
+ exportIt(args)
#
# EOF
diff --git a/Master/texmf-dist/tex/latex/wargame/wgmakenato.py b/Master/texmf-dist/tex/latex/wargame/wgmakenato.py
new file mode 100755
index 00000000000..65dcceb41f6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/wargame/wgmakenato.py
@@ -0,0 +1,756 @@
+#!/usr/bin/env python
+
+# ====================================================================
+def ensure_list(what):
+ if not what:
+ return None
+
+ if isinstance(what,str):
+ return [what]
+
+ return what
+
+# --------------------------------------------------------------------
+def clean(base, suffixes):
+ from pathlib import Path
+
+ if not isinstance(base,Path):
+ base = Path(base)
+
+ for suffix in suffixes:
+ tgt = base.with_suffix(suffix)
+ tgt.unlink(missing_ok=True)
+
+# ====================================================================
+possible_commands = ['air',
+ 'land',
+ 'equipment',
+ 'installation',
+ 'sea surface',
+ 'sub surface',
+ 'space',
+ 'activity',
+ 'dismounted']
+possible_factions = ['friendly',
+ 'hostile',
+ 'neutral',
+ 'unknown']
+echelon_mapping = {'': 'team',
+ '*': 'squad',
+ '**': 'section',
+ '***': 'platoon',
+ '|': 'company',
+ '||': 'battalion',
+ '|||': 'regiment',
+ 'x': 'brigade',
+ 'xx': 'division',
+ 'xxx': 'corps',
+ 'xxxx': 'army',
+ 'xxxxx': 'army group',
+ 'xxxxxx': 'theater'}
+possible_echelons = list(echelon_mapping.values())+list(echelon_mapping.keys())
+
+# ====================================================================
+def make_picture(command,
+ faction,
+ echelon,
+ main,
+ top=None,
+ bottom=None,
+ left=None,
+ right=None,
+ below=None,
+ decoy=False,
+ line_width='1pt',
+ scale=.45,
+ more=None,
+ **kwargs):
+ '''Create latex code for the NATO App6 symbol - a single tikzpicture
+
+ Parameters
+ ----------
+ command : str
+ Command (base symbol)
+ faction : str
+ Faction (base symbol)
+ echelon : str or None
+ Echelon (top of base symbol
+ main : str or list of str
+ Main symbols
+ top : str or list of str
+ Top modifiers
+ bottom : str or list of str
+ Bottom modifiers
+ left : str or list of str
+ Left modifiers
+ right : str or list of str
+ Right modifiers
+ below : str or list of str
+ Below base frame
+ decoy : bool
+ True if it should be a decoy
+ line_width : str
+ Line width, including unit
+ scale : float
+ Scaling of image
+
+ Return
+ ------
+ out : str
+ LaTeX code to write to file
+ '''
+ ind = ' '
+ def add_line(out,key,what,ind=ind):
+ '''Adds a line with a key'''
+ lwhat = ensure_list(what)
+ if not lwhat:
+ return out
+
+ swhat = ",".join(lwhat)
+
+ return out+f'{ind} {key}={{{swhat}}},%'+'\n'
+
+
+ out = fr'''\begin{{tikzpicture}}%
+ \natoapp[%
+ scale={scale},%
+ scale line widths,%
+ line width={line_width},%
+ command={command},%
+ faction={faction},%'''+'\n'
+
+ out = add_line(out,'echelon',echelon)
+ out = add_line(out,'main', main)
+ out = add_line(out,'top', top)
+ out = add_line(out,'bottom', bottom)
+ out = add_line(out,'left', left)
+ out = add_line(out,'right', right)
+ out = add_line(out,'below', below)
+ if more:
+ out += f'{ind} {more}%'+'\n'
+
+ out += fr''' ];%
+ \end{{tikzpicture}}%
+ '''
+ lout = out.split('\n')
+ lout = [l[len(ind):] if l.startswith(ind) else l for l in lout]
+ return '\n'.join(lout)
+
+# --------------------------------------------------------------------
+def make_latex(db):
+ '''Create latex code for the all NATO App6 symbols -
+ a complete document
+
+ Parameters
+ ----------
+ db : list of dict
+ Configurations of each symbol
+
+ Return
+ ------
+ out : str
+ LaTeX code to write to file
+ '''
+
+ ind = ' '
+ out = r'''\documentclass[tikz,11pt]{standalone}
+ \usepackage{wargame}
+ \begin{document}%'''+'\n'
+
+ for entry in db:
+ out += make_picture(**entry)
+
+ out += r'\end{document}'
+
+ lout = out.split('\n')
+ lout = [l[len(ind):] if l.startswith(ind) else l for l in lout]
+ return '\n'.join(lout)
+
+
+# --------------------------------------------------------------------
+def make_name(command,
+ faction,
+ echelon,
+ main,
+ top=None,
+ bottom=None,
+ left=None,
+ right=None,
+ below=None,
+ decoy=False,
+ output=None,
+ **kwargs):
+ '''Create the file name
+
+ Parameters
+ ----------
+ command : str
+ Command (base symbol)
+ faction : str
+ Faction (base symbol)
+ echelon : str or None
+ Echelon (top of base symbol
+ main : str or list of str
+ Main symbols
+ top : str or list of str
+ Top modifiers
+ bottom : str or list of str
+ Bottom modifiers
+ left : str or list of str
+ Left modifiers
+ right : str or list of str
+ Right modifiers
+ decoy : bool
+ True if it should be a decoy
+
+ Return
+ ------
+ out : str
+ Output file name
+ '''
+ if output:
+ return output.format(command=command,
+ faction=faction,
+ echelon=echelon)\
+ .replace(' ','-')\
+ .replace('=','-')
+
+ def clean_sub(what):
+ from re import sub
+
+ res = what
+ while True:
+ old = res
+ res = sub(r'\[[^]]+\]','',res)
+ res = sub(r'\{[^}]+\}','',res)
+ if res == old:
+ break
+
+ return res
+
+ def add_component(out, what,sep='-'):
+
+ lwhat = ensure_list(what)
+
+ if not lwhat:
+ return out
+
+ return out+'_'+sep.join([clean_sub(l) for l in lwhat])
+
+ def add_front(out,what,sep='_'):
+ if not what:
+ return out
+
+ if len(out) > 0: out += sep
+ return out + what
+
+ out = ''
+ out = add_front(out,faction)
+ out = add_front(out,command.replace(' ','-'))
+ out = add_front(out,echelon.replace(' ','-'))
+ out = add_component(out,main)
+ out = add_component(out,top)
+ out = add_component(out,bottom)
+ out = add_component(out,left)
+ out = add_component(out,right)
+ out = add_component(out,below)
+
+ return out.replace(' ','-').replace('=','-')
+
+
+# ====================================================================
+default_latex_flags = ['-interaction=nonstopmode',
+ '-file-line-error',
+ '-synctex','15',
+ '-shell-escape']
+default_latex_command = 'pdflatex'
+
+# --------------------------------------------------------------------
+def create_process(args,verbose=False):
+ '''Create a subprocess with arguments
+
+ Returns
+ -------
+ proc : Popen
+ Process with stdout and stderr as pipes (fifos)
+ '''
+ from os import environ
+ from subprocess import Popen, PIPE
+
+ if verbose:
+ print(f'Will run: "{" ".join(args)}"')
+
+ return Popen(args,env=environ.copy(),stdout=PIPE,stderr=PIPE)
+
+# --------------------------------------------------------------------
+default_timeout = None
+default_keep = False
+# --------------------------------------------------------------------
+def run_latex(file,
+ content,
+ latex_cmd = default_latex_command,
+ latex_flags = default_latex_flags,
+ timeout = default_timeout,
+ keep = default_keep,
+ verbose = False):
+ '''Run latex on generated content
+
+ Parameters
+ ----------
+ filename : str
+ The file to write
+ content : str
+ Content to write to source file
+ latex_cmd : str
+ LaTeX command to run e.g., 'pdflatex'
+ latex_flags : list of str
+ Flags to pass to the LaTeX command line
+ timeout : int
+ Process timeout
+ keep : bool
+ If true, keep intermediate files
+
+ Returns
+ -------
+ None
+ '''
+ from pathlib import Path
+
+ fpath = Path(file.name).with_suffix('')
+ csuf = ['.aux','.log','.out','.synctex','.synctex.gz','.tex']
+
+ file.write(content)
+ file.close()
+
+ lflags = ensure_list(latex_flags)
+
+ args = [latex_cmd] + (lflags if lflags else + []) + \
+ [fpath.with_suffix('.tex').name]
+
+ proc = create_process(args,verbose=verbose)
+
+ try:
+ out, err = proc.communicate(timeout=timeout)
+
+ sout = out.decode()
+ if 'Error' in sout or \
+ 'Emergency stop' in sout or \
+ not Path(fpath).with_suffix('.pdf').is_file():
+ raise RuntimeError(sout)
+
+ except Exception as e:
+ proc.kill()
+ proc.communicate()
+ if not keep:
+ clean(base=fpath,suffixes=csuf+['.pdf'])
+
+ raise RuntimeError(f'Failed on "{" ".join(args)}" with:\n'+
+ str(e) + '\n--- Start LaTeX code -------\n'+
+ content+ '\n--- End LaTeX code ---------')
+
+ if not keep:
+ clean(base=fpath,suffixes=csuf)
+
+# --------------------------------------------------------------------
+possible_formats = ['png','svg','jpg','tiff']
+default_format = possible_formats[0]
+default_resolution = 150
+
+# --------------------------------------------------------------------
+def run_cairo(filename,
+ npages,
+ format = default_format,
+ resolution = default_resolution,
+ timeout = default_timeout,
+ keep = default_keep,
+ verbose = False):
+ '''Run 'pdftocairo' on generated PDF
+
+ Parameters
+ ----------
+ filename : str
+ The file to write
+ format : str
+ Image format to write
+ resolution : int
+ Pixels Per Inch (PPI)
+ timeout : int
+ Process timeout
+ keep : bool
+ If true, keep intermediate files
+
+ Returns
+ -------
+ None
+ '''
+ from pathlib import Path
+
+ fpath = Path(filename)
+ args = ['pdftocairo']
+ if format != 'svg':
+ args.extend(['-transp'])
+
+ args.extend(['-r',str(resolution),f'-{format}'])
+
+ inpdf = fpath.with_suffix('.pdf').name
+
+ def runit(args,pdf=inpdf,outimg=None):
+ args.append(inpdf)
+ if outimg: args.append(outimg)
+
+ proc = create_process(args,verbose)
+
+ try:
+ out, err = proc.communicate(timeout=timeout)
+
+ except Exception as e:
+ proc.kill()
+ proc.communicate()
+ if not keep:
+ clean(base=fpath,suffixes=[f'.{format}','.pdf'])
+
+ raise RuntimeError(f'Failed on "{" ".join(args)}" with:\n'+e)
+
+ if format != 'svg':
+ runit(args)
+ else:
+ from math import ceil, log10
+
+ base = fpath.stem
+ wn = ceil(log10(npages))
+ for no in range(1,npages+1):
+ no_args = args.copy()
+ no_args.extend(['-f',str(no),'-l',str(no)])
+
+ runit(no_args,outimg=base+f'-{no:0{wn}d}.{format}')
+
+ if not keep:
+ clean(base=fpath,suffixes=['.pdf'])
+
+# --------------------------------------------------------------------
+def make_images(db,
+ base_name,
+ format = default_format,
+ verbose = False):
+ from math import ceil, log10
+ from pathlib import Path
+
+ results = []
+ ndb = len(db)
+ wn = ceil(log10(ndb))
+ for no,entry in enumerate(db):
+ output = entry['output']+'.'+format
+ inpath = Path(f'{base_name}-{no+1:0{wn}d}.{format}')
+
+ inpath.rename(output)
+ results.append(output)
+ if verbose:
+ print(f'{no+1:0{wn}d}/{ndb}: {output}')
+
+ return results
+
+# --------------------------------------------------------------------
+default_xml = False
+
+# --------------------------------------------------------------------
+def write_xmls(db,
+ format = default_format,
+ verbose = False):
+ '''Build an XML snippet of a prototype'''
+
+ ndb = len(db)
+ wn = ceil(log10(ndb))
+ for no,entry in enumerate(db):
+ if verbose:
+ print(f'{no+1:0{wn}d}/{ndb} ...{entry["output"]}.xml')
+
+ write_xml(**entry,format=format)
+
+# --------------------------------------------------------------------
+def write_xml(command = None,
+ faction = None,
+ echelon = None,
+ main = None,
+ top = None,
+ bottom = None,
+ left = None,
+ right = None,
+ below = None,
+ decoy = False,
+ output = None,
+ format = default_format,
+ **kwargs):
+ '''Build an XML snippet of a prototype'''
+ from xml.dom.minidom import Document
+ from wgexport import LayerTrait, Prototype, MarkTrait, \
+ BasicTrait, BuildFile
+
+ doc = BuildFile()
+ hasEchelon = echelon and len(echelon) > 0
+
+ yoff = -8 if main else -10 if echelon else -8
+ traits = [
+ LayerTrait(
+ images = [f'{output}.{format}'],
+ newNames = [''],
+ activateName = '',
+ activateMask = '',
+ activateChar = '',
+ increaseName = '',
+ increaseMask = '',
+ increaseChar = '',
+ decreaseName = '',
+ decreaseMask = '',
+ decreaseChar = '',
+ resetName = '',
+ resetKey = '',
+ resetLevel = 1,
+ under = False,
+ underXoff = 0,
+ underYoff = yoff,
+ loop = False,
+ name = ('NATOAPP6_command_faction'
+ +('_main' if main else '')
+ +('_echelon' if hasEchelon else '')),
+ description = 'NATO App6 symbology',
+ randomKey = '',
+ randomName = '',
+ follow = False,
+ expression = '',
+ first = 1,
+ version = 1,
+ always = True,
+ activateKey = '',
+ increaseKey = '',
+ decreaseKey = '',
+ scale = 1.)]
+
+ if command:
+ traits.append(MarkTrait(name = 'NATOAPP6_command',
+ value = command))
+ if main:
+ traits.append(MarkTrait(name = 'NATOAPP6_type',
+ value = make_name(command = '',
+ faction = '',
+ echelon = '',
+ main = main,
+ top = top,
+ bottom = bottom,
+ left = left,
+ right = right,
+ below = below,
+ decoy = decoy)))
+ if echelon:
+ traits.append(MarkTrait(name = 'NATOAPP6_echelon',
+ value = echelon))
+
+ traits.append(BasicTrait())
+
+
+ proto = Prototype(doc,
+ name = output,
+ traits = traits,
+ description = 'NATO App6 symbol')
+
+ doc._node.insertBefore(
+ doc._root.createComment('Created via LaTeX wargame package, '
+ 'licensed under the CreativeCommons '
+ 'Share-Alike, '
+ '© 2024 Christian Holm Christensen'),
+ proto._node)
+ xml_out = doc.encode()
+
+ with open(output+'.xml','wb') as out:
+ out.write(xml_out)
+
+
+# ====================================================================
+def create_images(db,
+ latex_command = default_latex_command,
+ latex_flags = default_latex_flags,
+ timeout = default_timeout,
+ resolution = default_resolution,
+ format = default_format,
+ keep = default_keep,
+ verbose = False,
+ xml = default_xml):
+ from tempfile import NamedTemporaryFile
+ from pathlib import Path
+
+ result = []
+
+
+ with NamedTemporaryFile(mode='w',suffix='.tex',dir='.',
+ delete=not keep,
+ delete_on_close=False) as texfile:
+ if verbose:
+ print(f'Temporary file: {texfile.name}')
+
+ base_name = Path(texfile.name).stem
+ latex_code = make_latex(db)
+ try:
+ run_latex(texfile,
+ latex_code,
+ latex_cmd = latex_command,
+ latex_flags = latex_flags,
+ timeout = timeout,
+ keep = keep,
+ verbose = verbose)
+
+ run_cairo(base_name,
+ npages = len(db),
+ format = format,
+ resolution = resolution,
+ timeout = timeout,
+ keep = keep,
+ verbose = verbose)
+
+ result = make_images(db,
+ base_name,
+ format = format,
+ verbose = verbose)
+
+ if xml:
+ write_xmls(db)
+
+ except Exception as e:
+ import traceback
+ print(traceback.format_exc())
+ print(e)
+ return None
+
+ return result
+
+
+# ====================================================================
+#
+# Main program
+#
+if __name__ == '__main__':
+ from argparse import ArgumentParser, FileType
+ from pprint import pprint
+
+ ap = ArgumentParser(description='Create an image of NATO App6 symbol')
+ ap.add_argument('-c','--command',type=str,choices=possible_commands,
+ help='Select command',default=possible_commands[1])
+ ap.add_argument('-f','--faction',type=str,choices=possible_factions,
+ help='Select faction',default=possible_factions[0])
+ ap.add_argument('-e','--echelon',type=str,choices=possible_echelons,
+ help='Select echelon')
+ ap.add_argument('-m','--main',type=str,nargs='*',
+ help='Select main symbol(s)')
+ ap.add_argument('-t','--top',type=str,nargs='*',
+ help='Select top modifier(s)')
+ ap.add_argument('-b','--bottom',type=str,nargs='*',
+ help='Select bottom modifier(s)')
+ ap.add_argument('-l','--left',type=str,nargs='*',
+ help='Select left modifier(s)')
+ ap.add_argument('-r','--right',type=str,nargs='*',
+ help='Select left modifier(s)')
+ ap.add_argument('-B','--below',type=str,nargs='*',
+ help='Select below (mobility) modifier(s)')
+ ap.add_argument('-d','--decoy',action='store_true',
+ help='Mark as decoy')
+ ap.add_argument('-w','--line-width',default='1pt',type=str,
+ help='Line width, including unit')
+ ap.add_argument('-s','--scale',default=0.45,type=float,
+ help='Scaling of symbol (width in centimetre)')
+ ap.add_argument('-I','--format',default=default_format,
+ choices=possible_formats,type=str,
+ help='Output image format')
+ ap.add_argument('-L','--latex-command',default=default_latex_command,
+ help='Set the LaTeX command to use',type=str)
+ ap.add_argument('-F','--latex-flags',default=default_latex_flags,
+ help='Set the LaTeX command to use',type=str,nargs='*')
+ ap.add_argument('-T','--timeout',default=default_timeout,type=int,
+ help='Timeout of sub-processes')
+ ap.add_argument('-R','--resolution',default=default_resolution,type=int,
+ help='Resolution out output image (ppi)')
+ ap.add_argument('-k','--keep',action='store_true',
+ help='Leave intermediate files')
+ ap.add_argument('-o','--output',type=str,
+ help='Set output file name, default is autogenerated')
+ ap.add_argument('-j','--json',type=str,nargs='*',
+ help='Read symbols to create from JSON file')
+ ap.add_argument('-v','--verbose',action='store_true')
+ ap.add_argument('-X','--xml',action='store_true',
+ help='Also output XML snippets')
+
+ args = ap.parse_args()
+ vargs = vars(args)
+ oargs = {}
+ to_remove = ['latex_command',
+ 'latex_flags',
+ 'resolution',
+ 'format',
+ 'timeout',
+ 'keep',
+ 'json',
+ 'verbose',
+ 'xml']
+ for key in to_remove:
+ if key not in vargs:
+ continue
+
+ oargs[key] = vargs[key]
+ del vargs[key]
+
+ commons = ['infantry',
+ 'armoured',
+ 'armoured+infantry',
+ 'reconnaissance',
+ 'armoured+reconnaissance',
+ '[fill=pgfstrokecolor]artillery',
+ 'armoured+[fill=pgfstrokecolor]artillery',
+ 'text=SF']
+
+
+ db = None
+ main = vargs['main']
+ injson = oargs.pop('json',None)
+
+ #pprint(vargs)
+ #pprint(oargs)
+
+ if injson:
+ from json import load
+
+ db = []
+ for j in injson:
+ print(f'=== JSON input: {j}')
+ with open(j,'r') as jin:
+ db.extend(load(jin))
+
+ elif main and len(main) == 1 and main[0] == 'common':
+ db = [{'main': w.split('+')} for w in commons]
+ else:
+ db = [vargs]
+
+ if not db:
+ raise RuntimeError('Noting to do')
+
+ from math import log10, ceil
+
+ def ensure(d, key, default):
+ if key not in d and default:
+ d[key] = default[key]
+
+ results = []
+ ndb = len(db)
+ wn = ceil(log10(ndb))
+ for no,entry in enumerate(db):
+ print(f'{no:{wn}d} of {ndb} ...',end='')
+ if not isinstance(entry,dict):
+ print(' skipped')
+ continue
+
+ for key in vargs.keys():
+ ensure(entry,key,vargs)
+ entry['output'] = make_name(**entry)
+ print(entry['output'])
+
+
+ results = create_images(db,**oargs)
+#
+#
+#
diff --git a/Master/texmf-dist/tex/latex/warning/warning.sty b/Master/texmf-dist/tex/latex/warning/warning.sty
index 0a8e3e5b7d8..a48327aac8e 100644
--- a/Master/texmf-dist/tex/latex/warning/warning.sty
+++ b/Master/texmf-dist/tex/latex/warning/warning.sty
@@ -1,10 +1,10 @@
%%
%% Project: warning
-%% Version: 2023-03-18 v0.10
+%% Version: 2025-01-01 v0.11
%% Info: Global warnings at the end of the screen output and the logfile
%%
-%% Copyright © 2001, 2023 Harald Harders (harald.harders@gmx.de; inactive)
-%% (2023-03-18 update done by H.-Martin Münch, <Martin dot Muench at Uni-Bonn dot de>)
+%% Copyright © 2001, 2023, 2025 Harald Harders (harald.harders@gmx.de; inactive)
+%% (2025-01-01 update done by H.-Martin Münch, <Martin dot Muench at Uni-Bonn dot de>)
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -22,17 +22,15 @@
%% and do not load the warning package.
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{warning}[2023/03/18 v0.10 Global warnings at end of logfile]
+\ProvidesPackage{warning}[2025/01/01 v0.11 Global warnings at end of logfile]
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\IfFormatAtLeastTF{2020/10/01}{
\NewDocumentCommand\addglobalwarning{m}{\AddToHook{enddocument/info}{#1}}
- \addglobalwarning{%
- \PackageWarningNoLine{warning}{Package warning is obsolete.\MessageBreak%
- Instead of \string\addglobalwarning{ something } use \MessageBreak%
- \string\AddToHook{enddocument/info}{ something }\MessageBreak%
- and do not load the warning package}
- }
+ \PackageError{warning}{Package warning is obsolete}{%
+ Instead of \string\addglobalwarning{ something } use\MessageBreak%
+ \string\AddToHook{enddocument/info}{ something }\MessageBreak%
+ and do not load the warning package.}
\def\wrn@warning{\endinput}
}{\let\wrn@warning\relax
\AtBeginDocument{\addglobalwarning{\PackageWarningNoLine{warning}{%
diff --git a/Master/texmf-dist/tex/latex/whatsnote/litebook.cls b/Master/texmf-dist/tex/latex/whatsnote/litebook.cls
new file mode 100644
index 00000000000..c7e038975c6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/whatsnote/litebook.cls
@@ -0,0 +1,26 @@
+%% ***********************************************************************
+%% Copyright 2024 by M.Y. XIA <xiamyphys@gmail.com> *
+%% *
+%% This work may be distributed and/or modified under the conditions *
+%% of the LaTeX Project Public License *
+%% *
+%% http://www.latex-project.org/lppl.txt *
+%% *
+%% either version 1.3c of this license or any later version. *
+%% *
+%% This work has the LPPL maintenance status `obsoleted'. *
+%% This work has the LPPL maintenance status `obsoleted'. *
+%% This work has the LPPL maintenance status `obsoleted'. *
+%% ***********************************************************************
+\ProvidesExplClass {litebook} {2024/11/26} {0.2b}
+ {Now replaced by the whatsnote class}
+
+\msg_new:nnn { litebook } { Obsolete~LaTeX~Package }
+ { The~litebook~class~is~now~obsoleted.~
+ Please~load~the~`whatsnote'~class~instead,~or~
+ access~the~'obsolete~packages'~dictionary~on~CTAN. }
+\msg_error:nn { litebook } { Obsolete~LaTeX~Package }
+
+\LoadClass{minimal}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/whatsnote/litesolution.cls b/Master/texmf-dist/tex/latex/whatsnote/litesolution.cls
new file mode 100644
index 00000000000..4234fb2dbe2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/whatsnote/litesolution.cls
@@ -0,0 +1,26 @@
+%% ***********************************************************************
+%% Copyright 2024 by M.Y. XIA <xiamyphys@gmail.com> *
+%% *
+%% This work may be distributed and/or modified under the conditions *
+%% of the LaTeX Project Public License *
+%% *
+%% http://www.latex-project.org/lppl.txt *
+%% *
+%% either version 1.3c of this license or any later version. *
+%% *
+%% This work has the LPPL maintenance status `obsoleted'. *
+%% This work has the LPPL maintenance status `obsoleted'. *
+%% This work has the LPPL maintenance status `obsoleted'. *
+%% ***********************************************************************
+\ProvidesExplClass {litesolution} {2024/11/26} {2.4a}
+ {Now replaced by the whatsnote class}
+
+\msg_new:nnn { litesolution } { Obsolete~LaTeX~Package }
+ { The~litesolution~class~is~now~obsoleted.~
+ Please~load~the~`whatsnote'~class~instead,~or~
+ access~the~'obsolete~packages'~dictionary~on~CTAN. }
+\msg_error:nn { litesolution } { Obsolete~LaTeX~Package }
+
+\LoadClass{minimal}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/whatsnote/thmlist.sty b/Master/texmf-dist/tex/latex/whatsnote/thmlist.sty
new file mode 100644
index 00000000000..a8124be74ed
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/whatsnote/thmlist.sty
@@ -0,0 +1,27 @@
+%% ***********************************************************************
+%% Copyright 2024 by M.Y. XIA <xiamyphys@gmail.com> *
+%% *
+%% This work may be distributed and/or modified under the conditions *
+%% of the LaTeX Project Public License *
+%% *
+%% http://www.latex-project.org/lppl.txt *
+%% *
+%% either version 1.3c of this license or any later version. *
+%% *
+%% This work has the LPPL maintenance status `obsoleted'. *
+%% This work has the LPPL maintenance status `obsoleted'. *
+%% This work has the LPPL maintenance status `obsoleted'. *
+%% ***********************************************************************
+\ProvidesExplPackage {thmlist} {2024/11/26} {0.1b}
+ {Formally a part of the class litebook}
+
+\msg_new:nnn { thmlist } { Obsolete~LaTeX~Package }
+ { The~thmlist~package~is~now~obsoleted.~
+ Its~functions~are~contained~in~the~`whatsnote'~class,~
+ and~its~functions~are~highly~redundant~with~existing~packages,~
+ and~its~functions~can~be~very~easily~achieved~by~expl3.
+ Please~load~the~`whatsnote'~class~instead,~or~
+ access~the~'obsolete~packages'~dictionary~on~CTAN.
+ }
+\msg_error:nn { thmlist } { Obsolete~LaTeX~Package }
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/whatsnote/whats-cover-module.code.tex b/Master/texmf-dist/tex/latex/whatsnote/whats-cover-module.code.tex
new file mode 100644
index 00000000000..bde33895f13
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/whatsnote/whats-cover-module.code.tex
@@ -0,0 +1,107 @@
+\whatsnote_provide_module:n { cover }
+
+\keys_define:nn { whats / coverset }
+ {
+ title .tl_set:N = \l__whatsnote_cover_title_tl,
+ subtitle .tl_set:N = \l__whatsnote_cover_subtitle_tl,
+ bioinfo .tl_set:N = \l__whatsnote_cover_bioinfo_tl,
+ color .tl_set:N = \l__whatsnote_cover_color_tl,
+ color .initial:n = gray,
+ head .tl_set:N = \l__whatsnote_cover_head_tl,
+ logo .tl_set:N = \l__whatsnote_cover_logo_tl,
+ }
+
+\NewDocumentCommand \coverset { m }
+ {
+ \keys_set:nn { whats / coverset } {#1}
+ \exp_args:NNne
+ \seq_set_split:Nnn \l__whatsnote_cover_head_seq {/}
+ { \l__whatsnote_cover_head_tl }
+ \exp_args:NNne
+ \seq_set_split:Nnn \l__whatsnote_cover_logo_seq {/}
+ { \l__whatsnote_cover_logo_tl }
+ }
+
+\RequirePackage{ graphicx, geometry, circuitikz, pagecolor }
+\geometry{ margin = 1in }
+\graphicspath
+ {
+ {./figure/} {./figures/} {./image/} {./images/}
+ {./graphics/} {./graphic/} {./pictures/} {./picture/}
+ }
+\ExplSyntaxOff
+\usetikzlibrary{ fadings, patterns, arrows, decorations.markings }
+\tikzset
+ {
+ > = stealth',
+ every picture/.append style =
+ { line join = round, line cap = round, thick }
+ }
+\ExplSyntaxOn
+
+\cs_new_protected_nopar:Npn \whatsnote_maketitle:
+ {
+ \newpagecolor{\l__whatsnote_cover_color_tl!10}
+ \begin{titlepage}
+ \begin{tikzpicture}[ remember~picture, overlay ]
+ \fill [ white, opacity = .5 ] (current~page.south~east) rectangle +
+ (-.8\paperwidth, .6\paperheight);
+ \fill [ white, opacity = .5 ] (current~page.south~east) rectangle +
+ (-.7\paperwidth, .7\paperheight);
+ \node
+ [ shift = {(-.35*\paperwidth,.65*\paperheight)},
+ darkgray, font = \Huge\bfseries\sffamily
+ ] at (current~page.south~east) { \l__whatsnote_cover_title_tl };
+ \node
+ [ shift = {(-.75*\paperwidth,.3*\paperheight)},
+ rotate = 90, gray, opacity = .6, font = \huge\bfseries\sffamily
+ ] at (current~page.south~east) { \l__whatsnote_cover_subtitle_tl };
+ \node
+ [ shift = {(.15*\paperwidth,.075*\paperheight)},
+ gray, opacity = .4, font = \large
+ ] at (current~page.south) { \l__whatsnote_cover_bioinfo_tl };
+ \tl_if_empty:NF { \l__whatsnote_cover_head_tl }
+ {
+ \node
+ [ rotate~around =
+ {
+ \seq_item:Nn \l__whatsnote_cover_head_seq {2} \c_colon_str
+ ([yshift = .35*\paperheight]current~page.center)
+ },
+ yshift = .35*\paperheight
+ ] at (current~page.center)
+ {
+ \includegraphics[ width = \paperwidth ]
+ { \seq_item:Nn \l__whatsnote_cover_head_seq {1} }
+ };
+ }
+ \tl_if_empty:NF { \l__whatsnote_cover_logo_tl }
+ {
+ \node (cover~logo)
+ [ shift = {(.65*\paperwidth,.3*\paperheight)}]
+ at (current~page.south~west)
+ {
+ \includegraphics[ height=.3\paperheight ]
+ { \seq_item:Nn \l__whatsnote_cover_logo_seq {1} }
+ };
+ \fill
+ [ pattern = \seq_item:Nn \l__whatsnote_cover_logo_seq {2},
+ pattern~color = \l__whatsnote_cover_color_tl!15!white!25,
+ scope~fading = south
+ ] (cover~logo.south~west) rectangle (cover~logo.north~east);
+ }
+ \end{tikzpicture}
+ \end{titlepage}
+ \thispagestyle{empty}
+ \cleardoublepage
+ \restorepagecolor
+ }
+
+\RenewDocumentCommand \maketitle { }
+ {
+ \group_begin:
+ \whatsnote_maketitle:
+ \group_end:
+ }
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/whatsnote/whats-font-module.code.tex b/Master/texmf-dist/tex/latex/whatsnote/whats-font-module.code.tex
new file mode 100644
index 00000000000..19ab0f7b016
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/whatsnote/whats-font-module.code.tex
@@ -0,0 +1,62 @@
+\whatsnote_provide_module:n { font }
+
+\sys_if_engine_pdftex:TF
+ {
+ \RequirePackage{bm}
+ \linespread{1.2}
+ \tl_if_empty:NF \g__whatsnote_math_font
+ { \RequirePackage{ \g__whatsnote_math_font } }
+ }
+ {
+ \PassOptionsToPackage{quiet}{xeCJK}
+ % \PassOptionsToPackage{quiet}{luaCJK}
+ \RequirePackage[ scheme = plain ]{ctex}
+ \tl_if_empty:NF \g__whatsnote_main_font
+ { \exp_last_unbraced:No \setmainfont \g__whatsnote_main_font }
+ \tl_if_empty:NF \g__whatsnote_mono_font
+ { \exp_last_unbraced:No \setmonofont \g__whatsnote_mono_font }
+ \tl_if_empty:NF \g__whatsnote_sans_font
+ { \exp_last_unbraced:No \setsansfont \g__whatsnote_sans_font }
+ \RequirePackage
+ [ warnings-off = { mathtools-colon, mathtools-overbracket } ]
+ {unicode-math}
+ \tl_if_empty:NF \g__whatsnote_math_font
+ { \setmathfont { \g__whatsnote_math_font } }
+ \usephysicsmodule{bm-um.legacy}
+ }
+
+\sys_if_engine_xetex:T
+ {
+ \linespread{1.3}
+ \tl_if_empty:NF \g__whatsnote_main_CJK_font
+ { \exp_last_unbraced:No \setCJKmainfont \g__whatsnote_main_CJK_font }
+ \tl_if_empty:NF \g__whatsnote_mono_CJK_font
+ { \exp_last_unbraced:No \setCJKmonofont \g__whatsnote_mono_CJK_font }
+ \tl_if_empty:NF \g__whatsnote_sans_CJK_font
+ { \exp_last_unbraced:No \setCJKsansfont \g__whatsnote_sans_CJK_font }
+ \RequirePackage{xeCJKfntef}
+ }
+% \sys_if_engine_luatex:T
+% {
+% \linespread{1.3}
+% \tl_if_empty:NF \g__whatsnote_main_Lua_font
+% { \exp_last_unbraced:No \setCJKmainfont \g__whatsnote_main_Lua_font }
+% \tl_if_empty:NF \g__whatsnote_mono_Lua_font
+% { \exp_last_unbraced:No \setCJKmonofont \g__whatsnote_mono_Lua_font }
+% \tl_if_empty:NF \g__whatsnote_sans_Lua_font
+% { \exp_last_unbraced:No \setCJKsansfont \g__whatsnote_sans_Lua_font }
+% \RequirePackage{luaCJKfntef}
+% }
+
+\RequirePackage{fontawesome5}
+\hook_gput_code:nnn { cmd/faIcon/before } { . }
+ {
+ \group_begin:
+ \fontsize { \fp_eval:n { .8 * \f@size } } { 0 } \selectfont
+ }
+\hook_gput_code:nnn { cmd/faIcon/after } { . } { \group_end: }
+
+\newcommand{\iu}{{i\mkern1mu}}
+\DeclareMathOperator{\sign}{sgn}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/whatsnote/whats-layout-module.code.tex b/Master/texmf-dist/tex/latex/whatsnote/whats-layout-module.code.tex
new file mode 100644
index 00000000000..ff190de2293
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/whatsnote/whats-layout-module.code.tex
@@ -0,0 +1,101 @@
+\whatsnote_provide_module:n { layout }
+
+\bool_if:NTF \g__whatsnote_darkmode_bool
+ {
+ \pagecolor{black!90}
+ \color{black!10}
+ \tl_set:Nn \l__whats_darkmode_fading_tl {!30}
+ \AtBeginDocument{\color_select:n{black!10}}
+ }
+ { \tl_new:N \l__whats_darkmode_fading_tl }
+
+\def\@makechapterhead#1
+ {
+ \vspace*{ -25\p@ }
+ {
+ \parindent \z@ \raggedright \normalfont
+ \int_compare:nNnT { \c@secnumdepth } > { \m@ne }
+ {
+ \if@mainmatter
+ \parbox { 16ex }
+ {
+ \centering
+ \@setfontsize\HUGE{30}{40} \normalfont\bfseries
+ \textcolor{darkgray}{\thechapter}
+ \vskip6\p@
+ \normalsize \bfseries\sffamily\scshape
+ \textcolor{darkgray}{\@chapapp}
+ }
+ \fi
+ }
+ \interlinepenalty\@M \hspace*{2.5ex}
+ \parbox { \dim_eval:n { \linewidth - 21ex } } { \huge \bfseries #1 }
+ \par\nobreak
+ \vskip 45\p@
+ }
+ }
+
+\def\@makeschapterhead#1
+ {
+ \renewcommand*{\thesection}{\arabic{section}}
+ \renewcommand*{\theproblem}{\arabic{problem}}
+ \setcounter{section}{0}
+ \setcounter{problem}{0}
+ {
+ \centering
+ \parindent \z@
+ \normalfont
+ \interlinepenalty\@M
+ \huge \bfseries #1\par\nobreak
+ \vskip 40\p@
+ }
+ }
+
+\NewDocumentEnvironment{textfig}{O{7 \c_colon_str 2}}
+ {
+ \group_begin:
+ \seq_set_split:Nee \l__whats_textfig_ratio_seq {\c_colon_str} {#1}
+ \vspace{4.5pt plus 1.5pt minus 1.5pt} \noindent
+ \minipage
+ {
+ \fp_eval:n
+ {
+ .96*\seq_item:Nn \l__whats_textfig_ratio_seq {1}/
+ (
+ \seq_item:Nn \l__whats_textfig_ratio_seq {1} +
+ \seq_item:Nn \l__whats_textfig_ratio_seq {2}
+ )
+ }\dimexpr \linewidth
+ }
+ }
+ {
+ \endminipage
+ \vspace{4.5pt plus 1.5pt minus 1.5pt} \par
+ \group_end:
+ }
+
+\NewDocumentCommand \textfigsplit {}
+ {
+ \endminipage
+ \hspace{.02\linewidth}
+ \minipage
+ {
+ \fp_eval:n
+ {
+ .96*\seq_item:Nn \l__whats_textfig_ratio_seq {2}/
+ (
+ \seq_item:Nn \l__whats_textfig_ratio_seq {1} +
+ \seq_item:Nn \l__whats_textfig_ratio_seq {2}
+ )
+ }\dimexpr \linewidth
+ }
+ }
+
+\RequirePackage{ tasks, multirow, multicol }
+\settasks { label = \sffamily\Alph*., item-indent = 2.5em, label-offset = .5pt }
+
+\RequirePackage[inline]{enumitem}
+
+\RequirePackage{fancyhdr}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/whatsnote/whats-theorem-module.code.tex b/Master/texmf-dist/tex/latex/whatsnote/whats-theorem-module.code.tex
new file mode 100644
index 00000000000..04a7b8fa783
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/whatsnote/whats-theorem-module.code.tex
@@ -0,0 +1,101 @@
+\whatsnote_provide_module:n { theorem }
+
+\RequirePackage
+ { mathtools, amssymb, keytheorems, cancel, extarrows,
+ nicematrix, siunitx, physics2, fixdif, derivative }
+
+\newtheorem{theorem}{Theorem}
+\newtheorem{lemma}{Lemma}
+\newtheorem*{corollary}{Corollary}
+\newtheorem{proposition}{Proposition}
+\newtheorem{conjecture}{Conjecture}
+\newtheorem{criterion}{Criterion}
+\newtheorem{assertion}{Assertion}
+
+\theoremstyle { definition }
+\newtheorem{definition}{Definition}
+\newtheorem{condition}{Condition}
+\renewcommand \qedsymbol
+ { \ensuremath { \mathcolor { gray } { \blacksquare } } }
+\newtheorem { problem }
+ {
+ \sffamily\scshape \color { DarkGreen \l__whats_darkmode_fading_tl }
+ \faIcon { pen-square }~Problem
+ } [ chapter ]
+\newtheorem* { solution }
+ {
+ \sffamily\scshape \color { MidnightBlue \l__whats_darkmode_fading_tl }
+ \faIcon { check-square }~Solution
+ }
+\newtheorem* { scratchwork }
+ {
+ \sffamily\scshape \color { MidnightBlue \l__whats_darkmode_fading_tl }
+ \faIcon { eraser }~Scratch~Work
+ }
+\RequirePackage{comment}
+\bool_if:NTF \g__whatsnote_hideanswer_bool
+ {
+ \sys_if_engine_pdftex:T
+ {
+ \NewDocumentCommand \result { m }
+ { \underline { \phantom { ~ #1 ~ } } }
+ }
+ \sys_if_engine_xetex:T
+ {
+ \NewDocumentCommand \result { m }
+ { \CJKunderline* { \phantom { ~ #1 ~ } } }
+ }
+ % \sys_if_engine_luatex:T
+ % {
+ % \NewDocumentCommand \result { m }
+ % { \Luaunderline* { \phantom { ~ #1 ~ } } }
+ % }
+ \excludecomment{solution}
+ \NewDocumentCommand \scratch { O { 0em } }
+ { \begin{scratchwork} \leavevmode\vspace{#1} \end{scratchwork} }
+ \newcommand \true { \addtocounter{task}{1} \thetask }
+ }
+ {
+ \sys_if_engine_pdftex:T
+ { \NewDocumentCommand \result { m } { \underline { ~ #1 ~ } } }
+ \sys_if_engine_xetex:T
+ { \NewDocumentCommand \result { m } { \CJKunderline* { ~ #1 ~ } } }
+ % \sys_if_engine_luatex:T
+ % { \NewDocumentCommand \result { m } { \Luaunderline* { ~ #1 ~ } } }
+ \excludecomment{scratchwork}
+ \NewDocumentCommand \scratch { o } { }
+ \newcommand \true { \addtocounter{task}{1} \faIcon{check-circle} }
+ }
+
+\newtheorem{example}{Example}
+\newtheorem{exercise}{Exercise}
+\newtheorem{algorithm}{Algorithm}
+\newtheorem{question}{Question}
+\newtheorem{axiom}{Axiom}
+\newtheorem{property}{Property}
+\newtheorem{assumption}{Assumption}
+\newtheorem{hypothesis}{Hypothesis}
+
+\RequirePackage{mdframed}
+\theoremstyle{remark}
+\newtheorem* { remark }
+ { \sffamily \color { DarkRed } \faIcon { info-circle }~Remark }
+\surroundwithmdframed
+ [ hidealllines = true, leftline = true, linewidth = 2pt,
+ linecolor = DarkRed, backgroundcolor = DarkRed!10,
+ skipabove = 3pt, skipbelow = 0pt,
+ innerleftmargin = 2ex, innerrightmargin = 2ex,
+ innertopmargin = 3pt, innerbottommargin = 6pt
+ ] { remark }
+\newtheorem*{note}{Note}
+\newtheorem{notation}{Notation}
+\newtheorem{claim}{Claim}
+\newtheorem{summary}{Summary}
+\newtheorem{acknowledgment}{Acknowledgment}
+\newtheorem{case}{Case}
+\newtheorem{conclusion}{Conclusion}
+
+\usephysicsmodule
+ { ab, ab.braket, doubleprod, diagmat, xmat, nabla.legacy, op.legacy }
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/whatsnote/whatsnote.cls b/Master/texmf-dist/tex/latex/whatsnote/whatsnote.cls
new file mode 100644
index 00000000000..235df439724
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/whatsnote/whatsnote.cls
@@ -0,0 +1,107 @@
+%% ***********************************************************************
+%% Copyright 2024 by M.Y. XIA <xiamyphys@gmail.com> *
+%% *
+%% This work may be distributed and/or modified under the conditions *
+%% of the LaTeX Project Public License *
+%% *
+%% http://www.latex-project.org/lppl.txt *
+%% *
+%% either version 1.3c of this license or any later version. *
+%% *
+%% This work has the LPPL maintenance status `maintained'. *
+%% *
+%% The Current Maintainers of this work is M.Y. XIA *
+%% *
+%% This work consists of the files whatsnote.cls, *
+%% whatsnote-cover-module.code.tex, *
+%% whatsnote-layout-module.code.tex, *
+%% whatsnote-font-module.code.tex, *
+%% whatsnote-theorem-module.code.tex, *
+%% and README.md. *
+%% available at https://github.com/xiamyphys/whatsnote *
+%% ***********************************************************************
+\def\whatsnote@date{2024/11/26}
+\def\whatsnote@version{3.0B}
+
+\ProvidesExplClass {whatsnote} {\whatsnote@date} {\whatsnote@version}
+ {LaTeX Class for taking Note}
+
+% module loading
+\cs_new_protected:Npn \whatsnote_msg_new:nn #1#2
+ { \msg_new:nnn { whatsnote } {#1} {#2} }
+\cs_new_protected:Npn \whatsnote_msg_error:nn #1#2
+ { \msg_error:nnn { whatsnote } {#1} {#2} }
+\cs_generate_variant:Nn \whatsnote_msg_error:nn { nx }
+\whatsnote_msg_new:nn { not found module }
+ { The~Whats~module~`#1'~not~found. }
+
+\cs_new_protected_nopar:Npn \whatsnote_provide_module:n #1
+ {
+ \ProvidesExplFile{Whats-#1-module.code.tex}
+ {\whatsnote@date}{\whatsnote@version}
+ {WhatsNote~ \text_titlecase:n {#1} ~Module}
+ }
+\cs_new_protected_nopar:Npn \whatsnote_load_module:n #1
+ {
+ \clist_map_inline:nn {#1}
+ {
+ \file_if_exist_input:nF { Whats-##1-module.code.tex }
+ { \whatsnote_msg_error:nn { not found module } {##1} }
+ }
+ }
+
+% global options
+\clist_new:N \g__whats_base_class_options_clist
+\keys_define:nn { whats / classoption }
+ {
+ hideanswer .bool_set:N = \g__whatsnote_hideanswer_bool,
+ hideanswer .initial:n = false,
+ hideanswer .default:n = true,
+ darkmode .bool_set:N = \g__whatsnote_darkmode_bool,
+ darkmode .initial:n = false,
+ darkmode .default:n = true,
+ math-font .tl_set:N = \g__whatsnote_math_font,
+ main-font .tl_set:N = \g__whatsnote_main_font,
+ sans-font .tl_set:N = \g__whatsnote_sans_font,
+ mono-font .tl_set:N = \g__whatsnote_mono_font,
+ CJKmain-font .tl_set:N = \g__whatsnote_main_CJK_font,
+ CJKsans-font .tl_set:N = \g__whatsnote_sans_CJK_font,
+ CJKmono-font .tl_set:N = \g__whatsnote_mono_CJK_font,
+ unknown .code:n = \__whatsnote_unknown_option:n { #1 },
+ }
+\cs_new_protected_nopar:Npn \__whatsnote_unknown_option:n #1
+ {
+ \tl_if_empty:nTF { #1 }
+ {
+ \clist_gput_right:NV \g__whats_base_class_options_clist \l_keys_key_str
+ }
+ {
+ \exp_args:NNx \clist_gput_right:Nn \g__whats_base_class_options_clist
+ { \l_keys_key_str = \exp_not:n {#1} }
+ }
+ }
+
+\ProcessKeyOptions[ whats / classoption ]
+\PassOptionsToClass{book}{11pt}
+\PassOptionsToPackage{svgnames}{xcolor}
+\exp_args:NNV \LoadClass[\g__whats_base_class_options_clist]{book}
+
+%% ***********************************************************************
+
+\whatsnote_load_module:n { cover }
+
+\whatsnote_load_module:n { layout }
+
+\whatsnote_load_module:n { theorem }
+
+\whatsnote_load_module:n { font }
+
+\RequirePackage
+ { hyperref, cleveref, booktabs, caption, fancyhdr, pgfplots, lipsum }
+\sys_if_engine_pdftex:F { \RequirePackage{zhlipsum} }
+\hypersetup { hidelinks }
+\pgfplotsset{ compat = newest }
+
+\endinput
+
+% End of file whatsnote.cls
diff --git a/Master/texmf-dist/tex/latex/writeongrid/WriteOnGrid.sty b/Master/texmf-dist/tex/latex/writeongrid/WriteOnGrid.sty
index 3d462b8a33e..ea8fbb4a3c9 100644
--- a/Master/texmf-dist/tex/latex/writeongrid/WriteOnGrid.sty
+++ b/Master/texmf-dist/tex/latex/writeongrid/WriteOnGrid.sty
@@ -2,7 +2,8 @@
% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{WriteOnGrid}[2024/09/01 v0.1.7 package to write on grid lines]
+\ProvidesPackage{WriteOnGrid}[2024/11/05 v0.1.8 package to write on grid lines]
+% 0.1.8 Option pour la taille des règlures (via style tikzset)
% 0.1.7 Option pour régler la marge pour les PleinePageCinqCinq
% 0.1.6 Commande pour calculer le nombre de lignes à insérer en fin de page / options Auto
% 0.1.5 Choix de la réglure pour le seyes (en pretest) + amélioration de la gestion des paragraphes
@@ -22,6 +23,11 @@
%------Variables
\newcounter{lgquadri}%compteur des lignes, qui sera incrémenté
+%------Styles
+\tikzset{WoGridp/.style={semithick}}
+\tikzset{WoGrids/.style={thin}}
+\tikzset{WoGridbar/.style={thick}}
+
%-----Calcul du nombre de lignes/colonnes
\NewDocumentCommand\GridCalcNbCols{ O{\ColAuto} m }{%
\IfStrEqCase{#2}{%
@@ -100,7 +106,7 @@
ReglureSeyes=2
}
-\NewDocumentCommand\AffQuadrillage{ O{} D<>{lightgray!50/lightgray!25} }{%affichage simple du quadrillage
+\NewDocumentCommand\AffQuadrillage{ O{} D<>{lightgray!66/lightgray!33} }{%affichage simple du quadrillage
\setcounter{lgquadri}{0}%on réinitialise les lignes
\useKVdefault[Quadrill]%on met les clés par défaut
\setKV[Quadrill]{#1}%on lit les clés
@@ -152,26 +158,26 @@
\useasboundingbox (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;%on fixe la grille de base, avant élargissement éventuel
\IfStrEq{\QuadType}{Seyes}%
{%
- \draw[xstep=0.8,ystep=0.2,thin,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
- \draw[xstep=0.8,ystep=0.8,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
+ \draw[xstep=0.8,ystep=0.2,WoGrids,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
+ \draw[xstep=0.8,ystep=0.8,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
\ifboolKV[Quadrill]{AffBarre}
{
- \draw[thick,\QuadCoulSeyes] ({\ValeurCarreau*\useKV[Quadrill]{Marge}},0) -- ({\ValeurCarreau*\useKV[Quadrill]{Marge}},{-\ValeurCarreau*\QuadNbLig}) ;%barre Seyes
+ \draw[WoGridbar,\QuadCoulSeyes] ({\ValeurCarreau*\useKV[Quadrill]{Marge}},0) -- ({\ValeurCarreau*\useKV[Quadrill]{Marge}},{-\ValeurCarreau*\QuadNbLig}) ;%barre Seyes
}{}
}%
{}%
\IfStrEq{\QuadType}{5x5}%
{%
- \draw[xstep=0.5,ystep=0.5,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5
+ \draw[xstep=0.5,ystep=0.5,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5
}%
{}%
\IfStrEq{\QuadType}{Ruled}%
{%
- \foreach \LLL in {0,1,...,\QuadNbLig} {\draw[,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},{-\LLL*\ValeurCarreau}) -- ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\LLL}) ; }
+ \foreach \LLL in {0,1,...,\QuadNbLig} {\draw[WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},{-\LLL*\ValeurCarreau}) -- ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\LLL}) ; }
%\draw[xstep={\ValeurCarreau*\QuadNbCol},ystep=0.9,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille college
\ifboolKV[Quadrill]{AffBarre}
{
- \draw[thick,\QuadCoulB] ({\ValeurCarreau*\useKV[Quadrill]{Marge}},0) -- ({\ValeurCarreau*\useKV[Quadrill]{Marge}},{-\ValeurCarreau*\QuadNbLig}) ;%barre college
+ \draw[WoGridbar,\QuadCoulB] ({\ValeurCarreau*\useKV[Quadrill]{Marge}},0) -- ({\ValeurCarreau*\useKV[Quadrill]{Marge}},{-\ValeurCarreau*\QuadNbLig}) ;%barre college
}{}
}%
{}%
@@ -181,7 +187,7 @@
\end{tikzpicture}%
}
-\NewDocumentEnvironment{EnvQuadrillage}{ O{} D<>{lightgray!50/lightgray!25} }%créer le quadrillage, couleurs ?
+\NewDocumentEnvironment{EnvQuadrillage}{ O{} D<>{lightgray!66/lightgray!33} }%créer le quadrillage, couleurs ?
{%
\setcounter{lgquadri}{0}%on réinitialise les lignes
\useKVdefault[Quadrill]%on met les clés par défaut
@@ -234,26 +240,26 @@
\useasboundingbox (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;%on fixe la grille de base, avant élargissement éventuel
\IfStrEq{\QuadType}{Seyes}%
{%
- \draw[xstep=0.8,ystep=0.2,thin,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
- \draw[xstep=0.8,ystep=0.8,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
+ \draw[xstep=0.8,ystep=0.2,WoGrids,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
+ \draw[xstep=0.8,ystep=0.8,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
\ifboolKV[Quadrill]{AffBarre}
{
- \draw[thick,\QuadCoulSeyes] ({\ValeurCarreau*\useKV[Quadrill]{Marge}},0) -- ({\ValeurCarreau*\useKV[Quadrill]{Marge}},{-\ValeurCarreau*\QuadNbLig}) ;%barre Seyes
+ \draw[WoGridbar,\QuadCoulSeyes] ({\ValeurCarreau*\useKV[Quadrill]{Marge}},0) -- ({\ValeurCarreau*\useKV[Quadrill]{Marge}},{-\ValeurCarreau*\QuadNbLig}) ;%barre Seyes
}{}
}%
{}%
\IfStrEq{\QuadType}{5x5}%
{%
- \draw[xstep=0.5,ystep=0.5,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5
+ \draw[xstep=0.5,ystep=0.5,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5
}%
{}%
\IfStrEq{\QuadType}{Ruled}%
{%
- \foreach \LLL in {0,1,...,\QuadNbLig} {\draw[,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},{-\LLL*\ValeurCarreau}) -- ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\LLL}) ; }
+ \foreach \LLL in {0,1,...,\QuadNbLig} {\draw[WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},{-\LLL*\ValeurCarreau}) -- ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\LLL}) ; }
%\draw[xstep={\ValeurCarreau*\QuadNbCol},ystep=0.9,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille college
\ifboolKV[Quadrill]{AffBarre}
{
- \draw[thick,\QuadCoulB] ({\ValeurCarreau*\useKV[Quadrill]{Marge}},0) -- ({\ValeurCarreau*\useKV[Quadrill]{Marge}},{-\ValeurCarreau*\QuadNbLig}) ;%barre college
+ \draw[WoGridbar,\QuadCoulB] ({\ValeurCarreau*\useKV[Quadrill]{Marge}},0) -- ({\ValeurCarreau*\useKV[Quadrill]{Marge}},{-\ValeurCarreau*\QuadNbLig}) ;%barre college
}{}
}%
{}%
@@ -281,7 +287,7 @@
\defKV[Quadril]{Grid=\xdef\QuadType{#1},NumSquares=\xdef\QuadNbCar{#1},Enlarge=\xdef\QuadElar{#1}}%déf des clés
\setKVdefault[Quadril]{Grid=5x5,NumSquares=17x5,Unit=1,Margin=0,Enlarge=0,Border=false,DispBar=true}%valeurs par défaut
-\NewDocumentCommand\DispGrid{ O{} D<>{lightgray!50/lightgray!25} }{%créer le quadrillage
+\NewDocumentCommand\DispGrid{ O{} D<>{lightgray!66/lightgray!33} }{%créer le quadrillage
\setcounter{lgquadri}{0}%on réinitialise les lignes
\useKVdefault[Quadril]%on met les clés par défaut
\setKV[Quadril]{#1}%on lit les clés
@@ -333,26 +339,26 @@
\useasboundingbox (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;%on fixe la grille de base, avant élargissement éventuel
\IfStrEq{\QuadType}{Seyes}%
{%
- \draw[xstep=0.8,ystep=0.2,thin,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
- \draw[xstep=0.8,ystep=0.8,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
+ \draw[xstep=0.8,ystep=0.2,WoGrids,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
+ \draw[xstep=0.8,ystep=0.8,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
\ifboolKV[Quadril]{DispBar}
{
- \draw[thick,\QuadCoulSeyes] ({\ValeurCarreau*\useKV[Quadril]{Margin}},0) -- ({\ValeurCarreau*\useKV[Quadril]{Margin}},{-\ValeurCarreau*\QuadNbLig}) ;%barre Seyes
+ \draw[WoGridbar,\QuadCoulSeyes] ({\ValeurCarreau*\useKV[Quadril]{Margin}},0) -- ({\ValeurCarreau*\useKV[Quadril]{Margin}},{-\ValeurCarreau*\QuadNbLig}) ;%barre Seyes
}{}
}%
{}%
\IfStrEq{\QuadType}{5x5}%
{%
- \draw[xstep=0.5,ystep=0.5,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5
+ \draw[xstep=0.5,ystep=0.5,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5
}%
{}%
\IfStrEq{\QuadType}{Ruled}%
{%
- \foreach \LLL in {0,1,...,\QuadNbLig} {\draw[,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},{-\LLL*\ValeurCarreau}) -- ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\LLL}) ; }
+ \foreach \LLL in {0,1,...,\QuadNbLig} {\draw[WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},{-\LLL*\ValeurCarreau}) -- ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\LLL}) ; }
%\draw[xstep={\ValeurCarreau*\QuadNbCol},ystep=0.9,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille college
\ifboolKV[Quadril]{DispBar}
{
- \draw[thick,\QuadCoulB] ({\ValeurCarreau*\useKV[Quadril]{Margin}},0) -- ({\ValeurCarreau*\useKV[Quadril]{Margin}},{-\ValeurCarreau*\QuadNbLig}) ;%barre college
+ \draw[WoGridbar,\QuadCoulB] ({\ValeurCarreau*\useKV[Quadril]{Margin}},0) -- ({\ValeurCarreau*\useKV[Quadril]{Margin}},{-\ValeurCarreau*\QuadNbLig}) ;%barre college
}{}
}%
{}%
@@ -362,7 +368,7 @@
\end{tikzpicture}%
}%
-\NewDocumentEnvironment{EnvGrid}{ O{} D<>{lightgray!50/lightgray!25} }%créer le quadrillage
+\NewDocumentEnvironment{EnvGrid}{ O{} D<>{lightgray!66/lightgray!33} }%créer le quadrillage
{%
\setcounter{lgquadri}{0}%on réinitialise les lignes
\useKVdefault[Quadril]%on met les clés par défaut
@@ -415,26 +421,26 @@
\useasboundingbox (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;%on fixe la grille de base, avant élargissement éventuel
\IfStrEq{\QuadType}{Seyes}%
{%
- \draw[xstep=0.8,ystep=0.2,thin,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
- \draw[xstep=0.8,ystep=0.8,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
+ \draw[xstep=0.8,ystep=0.2,WoGrids,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
+ \draw[xstep=0.8,ystep=0.8,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
\ifboolKV[Quadril]{DispBar}
{
- \draw[thick,\QuadCoulSeyes] ({\ValeurCarreau*\useKV[Quadril]{Margin}},0) -- ({\ValeurCarreau*\useKV[Quadril]{Margin}},{-\ValeurCarreau*\QuadNbLig}) ;%barre Seyes
+ \draw[WoGridbar,\QuadCoulSeyes] ({\ValeurCarreau*\useKV[Quadril]{Margin}},0) -- ({\ValeurCarreau*\useKV[Quadril]{Margin}},{-\ValeurCarreau*\QuadNbLig}) ;%barre Seyes
}{}
}%
{}%
\IfStrEq{\QuadType}{5x5}%
{%
- \draw[xstep=0.5,ystep=0.5,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5
+ \draw[xstep=0.5,ystep=0.5,WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5
}%
{}%
\IfStrEq{\QuadType}{Ruled}%
{%
- \foreach \LLL in {0,1,...,\QuadNbLig} {\draw[,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},{-\LLL*\ValeurCarreau}) -- ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\LLL}) ; }
+ \foreach \LLL in {0,1,...,\QuadNbLig} {\draw[WoGridp,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},{-\LLL*\ValeurCarreau}) -- ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\LLL}) ; }
%\draw[xstep={\ValeurCarreau*\QuadNbCol},ystep=0.9,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille college
\ifboolKV[Quadril]{DispBar}
{
- \draw[thick,\QuadCoulB] ({\ValeurCarreau*\useKV[Quadril]{Margin}},0) -- ({\ValeurCarreau*\useKV[Quadril]{Margin}},{-\ValeurCarreau*\QuadNbLig}) ;%barre college
+ \draw[WoGridbar,\QuadCoulB] ({\ValeurCarreau*\useKV[Quadril]{Margin}},0) -- ({\ValeurCarreau*\useKV[Quadril]{Margin}},{-\ValeurCarreau*\QuadNbLig}) ;%barre college
}{}
}%
{}%
@@ -483,12 +489,12 @@
%création de la grille
\begin{tikzpicture}[remember picture,overlay,x=1cm,y=1cm]%
%grille secondaire
- \foreach \L in {0,...,\SeyesFullNbLignS} {\draw[\SeyesFullCoulS] ($(current page.north west)+(0,{-(\SeyesFullMargeH-0.3*\SeyesFullReglureSeyes)-\L*0.1*\SeyesFullReglureSeyes})$)--++({\paperwidth},0) ;}
+ \foreach \L in {0,...,\SeyesFullNbLignS} {\draw[WoGrids,\SeyesFullCoulS] ($(current page.north west)+(0,{-(\SeyesFullMargeH-0.3*\SeyesFullReglureSeyes)-\L*0.1*\SeyesFullReglureSeyes})$)--++({\paperwidth},0) ;}
%grille principale
- \foreach \C in {1,...,\SeyesFullNbCol} {\draw[\SeyesFullCoulP] ($(current page.north west)+({\SeyesFullMargeG+(0.4*\SeyesFullReglureSeyes)*\C},0)$)--($(current page.south west)+({\SeyesFullMargeG+(0.4*\SeyesFullReglureSeyes)*\C},0)$) ;}
- \foreach \L in {0,...,\SeyesFullNbLignP} {\draw[\SeyesFullCoulP] ($(current page.north west)+(0,{-(\SeyesFullMargeH)-\L*(0.4*\SeyesFullReglureSeyes)})$)--++({\paperwidth},0) ;}
+ \foreach \C in {1,...,\SeyesFullNbCol} {\draw[WoGridp,\SeyesFullCoulP] ($(current page.north west)+({\SeyesFullMargeG+(0.4*\SeyesFullReglureSeyes)*\C},0)$)--($(current page.south west)+({\SeyesFullMargeG+(0.4*\SeyesFullReglureSeyes)*\C},0)$) ;}
+ \foreach \L in {0,...,\SeyesFullNbLignP} {\draw[WoGridp,\SeyesFullCoulP] ($(current page.north west)+(0,{-(\SeyesFullMargeH)-\L*(0.4*\SeyesFullReglureSeyes)})$)--++({\paperwidth},0) ;}
%marge
- \draw[\SeyesFullCoulM,thick] ($(current page.north west)+({\SeyesFullMargeG},0)$)--($(current page.south west)+({\SeyesFullMargeG},0)$) ;
+ \draw[\SeyesFullCoulM,WoGridbar] ($(current page.north west)+({\SeyesFullMargeG},0)$)--($(current page.south west)+({\SeyesFullMargeG},0)$) ;
\coordinate (SeyesOrigine) at ($(current page.north west)+({\SeyesFullMargeG},{-\SeyesFullMargeH})$) ;
\ifboolKV[SeyesFull]{NumLignes}%
{%
@@ -636,11 +642,11 @@
\xdef\CCFullNbCol{\fpeval{round((\CCFullLargPap)/(0.5),0)}}%
\begin{tikzpicture}[remember picture,overlay,x=1cm,y=1cm]
%lignes horizontales
- \foreach \L in {0,1,...,\CCFullNbLign} {\draw[\CCFullCoul] ($(current page.north west)+(0,{-0.3-\L*0.5})$)--++({\paperwidth},0) ;}
+ \foreach \L in {0,1,...,\CCFullNbLign} {\draw[WoGridp,\CCFullCoul] ($(current page.north west)+(0,{-0.3-\L*0.5})$)--++({\paperwidth},0) ;}
%lignes verticales
- \foreach \C in {0,1,...,\CCFullNbCol} {\draw[\CCFullCoul] ($(current page.north west)+({0.2+0.5*\C},0)$)--($(current page.south west)+({0.2+0.5*\C},0)$) ;}
+ \foreach \C in {0,1,...,\CCFullNbCol} {\draw[WoGridp,\CCFullCoul] ($(current page.north west)+({0.2+0.5*\C},0)$)--($(current page.south west)+({0.2+0.5*\C},0)$) ;}
%marge
- \draw[\CCFullCoulM,thick] ($(current page.north west)+(\CCFullMargeG,0)$)--($(current page.south west)+(\CCFullMargeG,0)$) ;
+ \draw[\CCFullCoulM,WoGridbar] ($(current page.north west)+(\CCFullMargeG,0)$)--($(current page.south west)+(\CCFullMargeG,0)$) ;
\coordinate (CinqCinqOrigine) at ($(current page.north west)+({\CCFullMargeG},{-\CCFullMargeH})$) ;
\ifboolKV[CxCFull]{NumLignes}%
{%
@@ -745,11 +751,11 @@
\xdef\RuledFullNbLign{\fpeval{round(\RuledFullHautEff/(0.9),0)}}%
\begin{tikzpicture}[remember picture,overlay,x=1cm,y=1cm]
%lignes horizontales
- \foreach \L in {1,...,\RuledFullNbLign} {\draw[\RuledFullCoul] ($(current page.north west)+(0,{-(\L-1)*0.9-\RuledFullMargeH})$)--++({\paperwidth},0) ;}
+ \foreach \L in {1,...,\RuledFullNbLign} {\draw[WoGridp,\RuledFullCoul] ($(current page.north west)+(0,{-(\L-1)*0.9-\RuledFullMargeH})$)--++({\paperwidth},0) ;}
%\foreach \L in {1.5,2.4,...,27.6} {\draw[\RuledFullCoul] ($(current page.north west)+(0,{-\L})$)--++({\paperwidth},0) ;}
%lignes verticales
- \draw[thick,\RuledFullCoulMarge] ($(current page.north west)+({\RuledFullMarge},0)$)--($(current page.south west)+({\RuledFullMarge},0)$) ;
- \draw[thick,\RuledFullCoulMarge] ($(current page.north east)+({-\RuledFullMarge},0)$)--($(current page.south east)+({-\RuledFullMarge},0)$) ;
+ \draw[WoGridbar,\RuledFullCoulMarge] ($(current page.north west)+({\RuledFullMarge},0)$)--($(current page.south west)+({\RuledFullMarge},0)$) ;
+ \draw[WoGridbar,\RuledFullCoulMarge] ($(current page.north east)+({-\RuledFullMarge},0)$)--($(current page.south east)+({-\RuledFullMarge},0)$) ;
%\foreach \C in {3} {\draw[thick,\RuledFullCoulMarge] ($(current page.north west)+({\C},0)$)--($(current page.south west)+({\C},0)$) ;}
%origine
\coordinate (RuledOrigine) at ($(current page.north west)+({\RuledFullMarge},{-\RuledFullMargeH})$) ;
diff --git a/Master/texmf-dist/tex/latex/xcharter-math/xcharter-otf.sty b/Master/texmf-dist/tex/latex/xcharter-math/xcharter-otf.sty
index 12f4ecab35d..a8fc24c8642 100644
--- a/Master/texmf-dist/tex/latex/xcharter-math/xcharter-otf.sty
+++ b/Master/texmf-dist/tex/latex/xcharter-math/xcharter-otf.sty
@@ -1,6 +1,6 @@
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\def\fileversion{0.63}
-\def\filedate{2024-07-10}
+\def\fileversion{0.64}
+\def\filedate{2024-10-25}
\ProvidesPackage{xcharter-otf}[\filedate\space\fileversion]
% Ensure luatex or xetex engine
diff --git a/Master/texmf-dist/tex/latex/xcolor/svgnam.def b/Master/texmf-dist/tex/latex/xcolor/svgnam.def
index 8d0a156f59a..00b7bace1db 100644
--- a/Master/texmf-dist/tex/latex/xcolor/svgnam.def
+++ b/Master/texmf-dist/tex/latex/xcolor/svgnam.def
@@ -22,11 +22,11 @@
%% in the same archive or directory.)
%%
\ProvidesFile{svgnam.def}
- [2023/11/15 v3.01 Predefined colors according to SVG 1.1 (UK)]
+ [2024/09/29 v3.02 Predefined colors according to SVG 1.1 (UK)]
%%
%% ----------------------------------------------------------------
%% Copyright (C) 2003-2021 by Dr. Uwe Kern <xcolor at ukern dot de>
-%% 2021-2023 LaTeX Project https://github.com/latex3/xcolor/issues
+%% 2021-2024 LaTeX Project https://github.com/latex3/xcolor/issues
%% ----------------------------------------------------------------
%%
diff --git a/Master/texmf-dist/tex/latex/xcolor/x11nam.def b/Master/texmf-dist/tex/latex/xcolor/x11nam.def
index 8b845036513..7808279d86a 100644
--- a/Master/texmf-dist/tex/latex/xcolor/x11nam.def
+++ b/Master/texmf-dist/tex/latex/xcolor/x11nam.def
@@ -22,11 +22,11 @@
%% in the same archive or directory.)
%%
\ProvidesFile{x11nam.def}
- [2023/11/15 v3.01 Predefined colors according to Unix/X11 (UK)]
+ [2024/09/29 v3.02 Predefined colors according to Unix/X11 (UK)]
%%
%% ----------------------------------------------------------------
%% Copyright (C) 2003-2021 by Dr. Uwe Kern <xcolor at ukern dot de>
-%% 2021-2023 LaTeX Project https://github.com/latex3/xcolor/issues
+%% 2021-2024 LaTeX Project https://github.com/latex3/xcolor/issues
%% ----------------------------------------------------------------
%%
diff --git a/Master/texmf-dist/tex/latex/xcolor/xcolor.sty b/Master/texmf-dist/tex/latex/xcolor/xcolor.sty
index 120e3c0b6a4..37e806d2c05 100644
--- a/Master/texmf-dist/tex/latex/xcolor/xcolor.sty
+++ b/Master/texmf-dist/tex/latex/xcolor/xcolor.sty
@@ -22,11 +22,11 @@
%% in the same archive or directory.)
%%
\ProvidesPackage{xcolor}
- [2023/11/15 v3.01 LaTeX color extensions (UK)]
+ [2024/09/29 v3.02 LaTeX color extensions (UK)]
%%
%% ----------------------------------------------------------------
%% Copyright (C) 2003-2021 by Dr. Uwe Kern <xcolor at ukern dot de>
-%% 2021-2023 LaTeX Project https://github.com/latex3/xcolor/issues
+%% 2021-2024 LaTeX Project https://github.com/latex3/xcolor/issues
%% ----------------------------------------------------------------
%%
%% Please send error reports and suggestions for
@@ -244,7 +244,7 @@
{
,usenames .code =
{\PackageWarning{xcolor}{Package option `usenames' is obsolete and ignored}}
- ,usename .usage = preamble
+ ,usenames .usage = preamble
,hyperref .code =
{\PackageWarning{xcolor}{Package option `hyperref' is obsolete and ignored}}
,hyperref .usage = preamble
@@ -262,7 +262,7 @@
\ExplSyntaxOff
\InputIfFileExists{color.cfg}{}{}
\let\ExecuteOptions\XC@ExecuteOptions
-\ProcessKeyOptions
+\ProcessKeyOptions\relax
\edef\Gin@driver{\Gin@driver}
\if!\Gin@driver!
\PackageError{xcolor}
@@ -574,15 +574,19 @@
\fi
\fi \@secondoftwo}}
\def\XC@getmod#1/#2/#3/#4/#5/#6/#7/#8/#9\XC@@
- {\XC@g@tm@d0#1::\XC@@ \XC@getm@d1{#2}\XC@getm@d2{#3}%
+ {\def\XC@dflt@@mod{#1}%
+ \XC@g@tm@d0#1::\XC@@ \XC@getm@d1{#2}\XC@getm@d2{#3}%
\XC@getm@d3{#4}\XC@getm@d4{#5}\XC@getm@d5{#6}\XC@getm@d6{#7}%
- \XC@getm@d7{#8}\def\XC@@pos{0}\def\@@mod{#1}\@gobble\@nnil}%
+ \XC@getm@d7{#8}\def\XC@@pos{0}\let\@@mod\XC@dflt@@mod\@gobble\@nnil}%
\def\XC@getm@d#1#2%
{\edef\XC@@pos{#2}\XC@sdef\@@mod{\XC@tgt@mod\XC@@pos}%
\ifx\XC@@pos\@@mod\def\XC@@pos{#1}\expandafter\remove@to@nnil\fi}%
\def\XC@g@tm@d#1#2:#3:#4\XC@@
{\@ifxempty{#3}{\let\@@Mod\XC@mod@ignore\XC@getm@d0{#2}}%
- {\def\@@Mod{#2}\XC@getm@d0{#3}}}%
+ {\def\@@Mod{#2}%
+ \def\XC@tgt@mod##1{#2}%
+ \def\XC@dflt@@mod{#3}%
+ \XC@getm@d0{#3}}}%
\def\XC@getclr#1/#2/#3/#4/#5/#6/#7/#8/#9\XC@@
{\ifcase\XC@@pos\space #1\or#2\or#3\or#4\or#5\or#6\or#7\or#8\fi}
\newif\ifXC@@getmod \XC@@getmodtrue
@@ -1108,11 +1112,6 @@
\def\@@arg{\textbf{color}& }\let\@@clr\@empty\@testc@lor}%
{\endtabular\ignorespacesafterend}
\def\color@setgroup{\begingroup\set@color}
-\let\color@begingroup\begingroup
-\def\color@endgroup{\endgraf\endgroup}
-\def\color@hbox{\hbox\bgroup\color@begingroup}
-\def\color@vbox{\vbox\bgroup\color@begingroup}
-\def\color@endbox{\color@endgroup\egroup}
\def\convertcolorspec#1#2#3#4%
{\begingroup
\XC@sdef\sm{#1}\XC@sdef\tm{#3}\edef\@@tmp{#2}%
diff --git a/Master/texmf-dist/tex/generic/xcomment/xcomment.tex b/Master/texmf-dist/tex/latex/xcomment/xcomment.sty
index e8888f904aa..9b5548d1e74 100644
--- a/Master/texmf-dist/tex/generic/xcomment/xcomment.tex
+++ b/Master/texmf-dist/tex/latex/xcomment/xcomment.sty
@@ -1,7 +1,7 @@
-%% $Id: xcomment.tex 316 2010-05-14 21:32:34Z herbert $
+%% $Id: xcomment.sty 1022 2024-11-03 08:24:24Z herbert $
%%
%% COPYRIGHT 1993/2010, by Timothy Van Zandt, tvz@Princeton.EDU
-%% COPYRIGHT 2010, by Herbert Voss, hvoss@tug.org
+%% COPYRIGHT 2010,2024, by Herbert Voss, hvoss@tug.org
%%
%% DESCRIPTION:
%%
@@ -9,11 +9,14 @@
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
%%
-\def\fileversion{1.3}
-\def\filedate{10/05/14}
+
+\def\fileversion{1.40}
+\def\filedate{2024/11/03}
+\ProvidesPackage{xcomment}[%
+ \filedate\ \fileversion (Timothy van Zandt, Herbert Voss) Supports environments as comment.]
%%
-\@ifundefined{xcomment@@@}{}{\endinput}
-\typeout{Style-Option: `xcomment' v\fileversion \space <\filedate> (tvz) }
+%\@ifundefined{xcomment@@@}{}{\endinput}
+%\typeout{Style-Option: `xcomment' v\fileversion \space <\filedate> (tvz) }
\def\newxcomment{\@ifnextchar [{\@newxcommentwitharg}{\@newxcomment}}
\def\@newxcomment#1{%
\expandafter\def\csname #1\endcsname##1{\@xcomment{#1}{##1}}}%
@@ -166,6 +169,5 @@
\next}%
}% END OF LOWERCASE
\endgroup
-\endinput
%%
%% End of file `xcomment.sty'.
diff --git a/Master/texmf-dist/tex/latex/xgreek/xelistings.sty b/Master/texmf-dist/tex/latex/xgreek/xelistings.sty
index 53eda464652..0373173916d 100644
--- a/Master/texmf-dist/tex/latex/xgreek/xelistings.sty
+++ b/Master/texmf-dist/tex/latex/xgreek/xelistings.sty
@@ -6,7 +6,7 @@
%%
%% xgreek.dtx (with options: `xelistings')
%%
-%% (c) Copyright 2007—2024 Apostolos Syropoulos
+%% (c) Copyright 2007—2025 Apostolos Syropoulos
%% This program can be redistributed and/or modified under the
%% terms of the LaTeX Project Public License Distributed from
%% http://www.latex-project.org/lppl.txt; either
diff --git a/Master/texmf-dist/tex/latex/xgreek/xgreek.sty b/Master/texmf-dist/tex/latex/xgreek/xgreek.sty
index 62945756cac..b3d0ebc707a 100644
--- a/Master/texmf-dist/tex/latex/xgreek/xgreek.sty
+++ b/Master/texmf-dist/tex/latex/xgreek/xgreek.sty
@@ -6,7 +6,7 @@
%%
%% xgreek.dtx (with options: `xgreek')
%%
-%% (c) Copyright 2007—2024 Apostolos Syropoulos
+%% (c) Copyright 2007—2025 Apostolos Syropoulos
%% This program can be redistributed and/or modified under the
%% terms of the LaTeX Project Public License Distributed from
%% http://www.latex-project.org/lppl.txt; either
@@ -35,8 +35,15 @@
%% Right brace \} Tilde \~}
%%
\ProvidesFile{xgreek.sty}
- [2024/01/30 v3.4.0 Package `xgreek.sty']
-\message{Package 'xgreek' version 3.4.0 by Apostolos Syropoulos}
+ [2025/01/15 v3.5.0 Package `xgreek.sty']
+\message{Package 'xgreek' version 3.5.0 by Apostolos Syropoulos}
+\DeclareUppercaseMapping{"0386}{Α}
+\DeclareUppercaseMapping{"0388}{Ε}
+\DeclareUppercaseMapping{"0389}{Η}
+\DeclareUppercaseMapping{"038A}{Ι}
+\DeclareUppercaseMapping{"038C}{Ο}
+\DeclareUppercaseMapping{"038E}{Υ}
+\DeclareUppercaseMapping{"038F}{Ω}
\DeclareUppercaseMapping{"0390}{Ϊ} \DeclareLowercaseMapping{"0390}{ΐ}
\DeclareUppercaseMapping{"03AC}{Α} \DeclareLowercaseMapping{"03AC}{ά}
\DeclareUppercaseMapping{"03AD}{Ε} \DeclareLowercaseMapping{"03AD}{έ}
@@ -100,13 +107,20 @@
\DeclareUppercaseMapping{"1F65}{Ω}
\DeclareUppercaseMapping{"1F66}{Ω}
\DeclareUppercaseMapping{"1F67}{Ω}
-\DeclareUppercaseMapping{"1F70}{Α} \DeclareUppercaseMapping{"1F71}{Α}
-\DeclareUppercaseMapping{"1F72}{Ε} \DeclareUppercaseMapping{"1F73}{Ε}
-\DeclareUppercaseMapping{"1F74}{Η} \DeclareUppercaseMapping{"1F75}{Η}
-\DeclareUppercaseMapping{"1F76}{Ι} \DeclareUppercaseMapping{"1F77}{Ι}
-\DeclareUppercaseMapping{"1F78}{Ο} \DeclareUppercaseMapping{"1F79}{Ο}
-\DeclareUppercaseMapping{"1F7A}{Υ} \DeclareUppercaseMapping{"1F7B}{Υ}
-\DeclareUppercaseMapping{"1F7C}{Ω} \DeclareUppercaseMapping{"1F7D}{Ω}
+\DeclareUppercaseMapping{"1F70}{Α}
+\DeclareUppercaseMapping{"1F71}{Α}
+\DeclareUppercaseMapping{"1F72}{Ε}
+\DeclareUppercaseMapping{"1F73}{Ε}
+\DeclareUppercaseMapping{"1F74}{Η}
+\DeclareUppercaseMapping{"1F75}{Η}
+\DeclareUppercaseMapping{"1F76}{Ι}
+\DeclareUppercaseMapping{"1F77}{Ι}
+\DeclareUppercaseMapping{"1F78}{Ο}
+\DeclareUppercaseMapping{"1F79}{Ο}
+\DeclareUppercaseMapping{"1F7A}{Υ}
+\DeclareUppercaseMapping{"1F7B}{Υ}
+\DeclareUppercaseMapping{"1F7C}{Ω}
+\DeclareUppercaseMapping{"1F7D}{Ω}
\DeclareUppercaseMapping{"1F80}{ᾼ}
\DeclareUppercaseMapping{"1F81}{ᾼ}
\DeclareUppercaseMapping{"1F82}{ᾼ}
diff --git a/Master/texmf-dist/tex/latex/xindex/xindex.sty b/Master/texmf-dist/tex/latex/xindex/xindex.sty
index 43cd71a3247..61b083dc810 100644
--- a/Master/texmf-dist/tex/latex/xindex/xindex.sty
+++ b/Master/texmf-dist/tex/latex/xindex/xindex.sty
@@ -13,7 +13,7 @@
%
%
% -------------------------------------
-\ProvidesPackage{xindex}[2024/05/16 v. 0.60 write into an idx file (hv)]
+\ProvidesPackage{xindex}[2025/01/28 v. 0.64 write into an idx file (hv)]
%
\RequirePackage{xkeyval}
diff --git a/Master/texmf-dist/tex/latex/xltabular/xltabular.sty b/Master/texmf-dist/tex/latex/xltabular/xltabular.sty
index 6752047c5e5..a244ef7e17b 100644
--- a/Master/texmf-dist/tex/latex/xltabular/xltabular.sty
+++ b/Master/texmf-dist/tex/latex/xltabular/xltabular.sty
@@ -3,11 +3,12 @@
%% License from CTAN archives in directory macros/latex/base/lppl.txt.
%% Either version 1.3 or, at your option, any later version.
%%
-% Copyright 2018-2020 Herbert Voss <hvoss@tug.org>
+% Copyright 2018-2024 Herbert Voss <hvoss@tug.org>
% Rolf Niepraschk <Rolf.Niepraschk@gmx.de>
%%
-\ProvidesPackage{xltabular}[2020/11/04 v0.2e `xltabular' package (hv,RN)]
+\ProvidesPackage{xltabular}[2024/11/13 v0.2h `xltabular' package (hv,RN)]
\RequirePackage{tabularx}
+\RequirePackage{etoolbox}
\let\XLT@i@tabularx=\tabularx
\let\XLT@i@endtabularx=\endtabularx
\let\XLT@i@TX@endtabularx=\TX@endtabularx
@@ -15,9 +16,16 @@
\RequirePackage{ltablex}
\keepXColumns% xltabular behaves like tabularx
%
+\newif\ifXLT@normalPB \XLT@normalPBtrue
+\newcommand*\normalLTpagebreak{\global\XLT@normalPBtrue}
+\newcommand*\specialLTpagebreak{\global\XLT@normalPBfalse}
+%
\let\XLT@ii@tabularx=\tabularx
\let\XLT@ii@TX@endtabularx=\TX@endtabularx
\let\XLT@longtable=\longtable
+% prevents problematic behavior of longtable at page breaks (\XLT@normalPBfalse)
+\patchcmd{\LT@start}{\vfil \break}{\ifXLT@normalPB \vfil \break \fi}{}{}
+\patchcmd{\LT@start}{\penalty \z@}{\ifXLT@normalPB \penalty \z@ \fi}{}{}
\let\XLT@LT@start=\LT@start
\let\XLT@LT@array=\LT@array
\@ifundefined{scr@LT@array}{%
@@ -32,7 +40,7 @@
{\let\TX@endtabularx=\XLT@i@TX@endtabularx\XLT@i@tabularx}
{\XLT@i@endtabularx}
%
-% define a new tabularx like the one from "ltablex"
+% define a new tabularx like the one from "ltablex"
%
\newenvironment{xltabular}[1][x]%
{%
@@ -49,78 +57,15 @@
\XLT@ii@tabularx}
{\def\@currenvir{tabularx}}
-\def\LT@caption{%
- \noalign\bgroup
- \@ifnextchar[{\XLT@LT@caption}{\XLT@@LT@caption}
-}
-\def\XLT@LT@caption[#1]{%
- % increasing the counter only if opt. parameter is not empty
- \ifx\relax#1\relax\@tempswafalse\else\@tempswatrue\fi
- \XLT@@@LT@caption[#1]
-}
-\def\XLT@@LT@caption{% allways increasing the counter
- \@tempswatrue
- \XLT@@@LT@caption
-}
-\def\XLT@@@LT@caption{%
- % Eventually increasing the counter
- \if@tempswa\refstepcounter{\LTcaptype}\fi
- % global assignments because we are inside a group
- \global\let\@currentlabel=\@currentlabel
- \@ifundefined{cref@currentlabel}{}{% from package "cleveref"
- \global\let\cref@currentlabel=\cref@currentlabel
- }
- \ifXLT@HypRef
- % revert to the patched version
- \global\let\LT@start=\XLT@Hy@LT@start
- \hyper@makecurrent{\LTcaptype}%
- \global\let\Hy@LT@currentHref\@currentHref
- \fi
- % continue with the original definition of \LT@caption
- \@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n
-}
-
-%
\providecommand*\LTcaptype{table}% support of package "caption"
-\def\longtable{%
- \ifXLT@HypRef
- % revert to the unpatched version if \caption is not used
- \global\let\LT@start=\XLT@LT@start
- \fi
- \XLT@longtable
-}
+%\def\longtable{%
+% \ifXLT@HypRef
+% % revert to the unpatched version if \caption is not used
+% \global\let\LT@start=\XLT@LT@start
+% \fi
+% \XLT@longtable
+%}
-\newif\ifXLT@HypRef
-\AtBeginDocument{%
- \let\XLT@refstepcounter=\refstepcounter
- \@ifpackageloaded{hyperref}{\XLT@HypReftrue}{\XLT@HypReffalse}%
- \ifXLT@HypRef
- % save the patched version
- \let\XLT@Hy@LT@start=\LT@start
- % revert to the unpatched versions
- \@ifundefined{scr@LT@array}{%
- \@ifundefined{adl@LT@array}{%
- % hyperref has \LT@array patched directly
- \let\LT@array=\XLT@LT@array
- }{%
- % hyperref has \adl@LT@array patched, not \LT@array
- \let\adl@LT@array=\XLT@adl@LT@array
- }%
- }{%
- % hyperref has \scr@LT@array patched, not \LT@array
- \let\scr@LT@array=\XLT@scr@LT@array
- }%
- \fi
- \def\LT@array{%
- % make the call of \refstepcounter inside of \XLT@LT@array ineffective
- \renewcommand*\refstepcounter[2][]{%
- % make next calls effective again
- \let\refstepcounter=\XLT@refstepcounter
- }%
- \XLT@LT@array
- }%
-}
-%
\endinput
%%
%% End of file `xltabular.sty'.
diff --git a/Master/texmf-dist/tex/latex/yb-book/yb-book.cls b/Master/texmf-dist/tex/latex/yb-book/yb-book.cls
index 392011e3994..4af8c803263 100644
--- a/Master/texmf-dist/tex/latex/yb-book/yb-book.cls
+++ b/Master/texmf-dist/tex/latex/yb-book/yb-book.cls
@@ -7,7 +7,7 @@
%% yb-book.dtx (with options: `class')
%% (The MIT License)
%%
-%% Copyright (c) 2021-2024 Yegor Bugayenko
+%% Copyright (c) 2021-2025 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
@@ -32,7 +32,8 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{yb-book}
-[23.03.2024 0.4.1 YB Branded Book Style]
+[2025/01/19 0.6.2 YB Branded Book Style]
+
@@ -56,13 +57,16 @@
\RequirePackage{pgfopts}
\pgfkeys{
/yb/.cd,
+ apa/.store in=\yb@apa,
authordraft/.store in=\yb@authordraft,
compact/.store in=\yb@compact,
manuscript/.store in=\yb@manuscript,
+ sparse/.store in=\yb@sparse,
}
\ProcessPgfPackageOptions{/yb}
-\makeatletter\ifdefined\yb@authordraft
+\makeatletter
+\ifdefined\yb@authordraft
\PassOptionsToClass{11pt}{book}
\PassOptionsToClass{oneside}{book}
\else
@@ -73,23 +77,28 @@
\PassOptionsToClass{11pt}{book}
\PassOptionsToClass{twoside}{book}
\fi
-\fi\makeatother
+\fi
+\makeatother
\LoadClass{book}
+\RequirePackage[utf8]{inputenc}
+
\RequirePackage{geometry}
-\geometry{paperwidth=6in, paperheight=9in, bindingoffset=0.25in,
+\geometry{
+ paperwidth=6in, paperheight=9in,
+ bindingoffset=0.25in,
left=0.75in, right=0.75in, top=0.75in, bottom=1.25in}
-\makeatletter\ifdefined\yb@authordraft
+\makeatletter
+\ifdefined\yb@authordraft
\geometry{a4paper, margin=1in, left=1.5in}
\else
\ifdefined\yb@manuscript
\geometry{a4paper, margin=1.2in}
\fi
-\fi\makeatother
+\fi
+\makeatother
-\RequirePackage[T1]{fontenc}
-\RequirePackage[utf8]{inputenc}
-\RequirePackage{lmodern}
+\RequirePackage{href-ul}
\RequirePackage{anyfontsize}
@@ -113,23 +122,38 @@
\setlist{nosep}
\RequirePackage{float}
+
\RequirePackage[normalem]{ulem}
+
\RequirePackage{xfp}
-\RequirePackage{soul}
\RequirePackage{xifthen}
+
+\RequirePackage{soul}
+
\RequirePackage[autostyle=try]{csquotes}
\pagestyle{plain}
\RequirePackage{setspace}
\setstretch{1.2}
- \makeatletter\ifdefined\yb@authordraft\setstretch{1.1}\fi\makeatother
- \makeatletter\ifdefined\yb@compact\setstretch{1.0}\fi\makeatother
- \makeatletter\ifdefined\yb@manuscript\setstretch{1.1}\fi\makeatother
-
-\RequirePackage[indexing=cite,style=authoryear,
- natbib=true,maxnames=1,minnames=1,doi=false,
- url=false,isbn=false,isbn=false]{biblatex}
+ \makeatletter
+ \ifdefined\yb@authordraft\setstretch{1.1}\fi
+ \ifdefined\yb@compact\setstretch{1.0}\fi
+ \ifdefined\yb@manuscript\setstretch{1.1}\fi
+ \makeatother
+
+\PassOptionsToPackage{indexing=cite,
+ natbib=true,maxnames=2,minnames=1,doi=true,
+ url=false,isbn=false,isbn=false}{biblatex}
+\makeatletter
+\ifdefined\yb@apa
+ \PassOptionsToPackage{style=authoryear}{biblatex}
+\else
+ \PassOptionsToPackage{style=numeric}{biblatex}
+\fi
+\makeatother
+\RequirePackage{doi}
+\RequirePackage{biblatex}
\DeclareCiteCommand{\citetitle}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
@@ -155,29 +179,36 @@
{\begingroup\setstretch{1.0}\lsstyle}
{\endgroup}
-\makeatletter\ifdefined\yb@authordraft\else
- \RequirePackage[letterspace=-50]{microtype}
-\fi\makeatother
+\makeatletter
+\ifdefined\yb@authordraft\else
+ \PassOptionsToPackage{letterspace=-50,nopatch=footnote}{microtype}
+ \RequirePackage{microtype}
+\fi
+\makeatother
-\makeatletter\ifdefined\yb@manuscript
+\makeatletter
+\ifdefined\yb@manuscript
\RequirePackage[tt=false,type1=true]{libertine}
-\fi\makeatother
+\fi
+\makeatother
\makeatletter
\let\yb@oldsection\section
+\def\yb@secstart{\ifdefined\yb@sparse\newpage\fi}
\ifdefined\yb@authordraft
\RequirePackage[medium]{titlesec}
\else
\RequirePackage[raggedright]{titlesec}
\titlespacing{\section}{0in}{6pt}{6pt}[1in]
- \renewcommand\section{\newpage\yb@oldsection}
+ \renewcommand\section{\yb@secstart\yb@oldsection}
\fi
\ifdefined\yb@compact
- \renewcommand\section{\vspace{2em}\yb@oldsection}
+ \renewcommand\section{\yb@secstart\vspace{2em}\yb@oldsection}
\fi
\makeatother
-\makeatletter\ifdefined\yb@authordraft
+\makeatletter
+\ifdefined\yb@authordraft
\RequirePackage[absolute]{textpos}
\TPGrid{16}{16}
\RequirePackage{fancyhdr}
@@ -188,9 +219,19 @@
\fancyhf{}
\fancyhead[L,C,LO,CO]{}
\fancyhead[R,RO]{
- \begin{textblock}{4}(11.5,1)
+ \begin{textblock}{16}[0.5,0.5](8,8)%
+ \tikz \node[minimum width=16\TPHorizModule] {%
+ \fontsize{64}{64}\selectfont\bfseries%
+ \rotatebox{45}{
+ \tikz \node
+ [fill=gray!8, font=\ttfamily\color{white}]
+ {it is a draft};%
+ }%
+ };%
+ \end{textblock}%
+ \begin{textblock}{4}(11.5,1)%
\tikz \node [color=gray, rotate=270,
- font=\ttfamily\scriptsize, text width=5in] at (0,0) {
+ font=\ttfamily\scriptsize, text width=8in] at (0,0) {%
Copyright \textcopyright{} \the\year{} by \theauthor{}.
All rights reserved. No part of the contents of
this book may be reproduced or transmitted in any
@@ -198,13 +239,14 @@
of the publisher. This particular manuscript is
printed for \textbf{\thereviewer{}} and may be used only
for one-time review. The manuscript has to be destroyed
- after the review.
+ after the review.%
};
\end{textblock}
}
- \fancyfoot[C,CO,CE]{\small\ttfamily
+ \fancyfoot[C,CO,C]{\small\ttfamily%
page \#\thepage{} of \pageref{LastPage}}
-\fi\makeatother
+\fi
+\makeatother
\renewcommand\maketitle{
{\LARGE\textbf{\thetitle}}
@@ -223,13 +265,14 @@
\fi
}
-\makeatletter\newcommand\ybPrintTitlePage{
+\makeatletter
+\newcommand\ybPrintTitlePage{
\ifdefined\yb@authordraft\else
\begin{titlepage}
\ttfamily
\vspace*{\fill}
\noindent
- {\Huge\textbf{\thetitle}}
+ {\Huge\thetitle}
\\[1em]
by \theauthor{}
\\[4em]
@@ -246,30 +289,35 @@
\vspace*{\fill}
\end{titlepage}
\fi
-}\makeatother
+}
+\makeatother
-\makeatletter\newcommand\ybPrintTOC{
+\makeatletter
+\newcommand\ybPrintTOC{
\ifdefined\yb@authordraft\else
\ifdefined\yb@compact\else\cleardoublepage\fi
{\setstretch{0.7}\tableofcontents}
\fi
-}\makeatother
+}
+\makeatother
\RequirePackage{imakeidx}
\renewbibmacro*{citeindex}{\indexnames{labelname}{}}
\makeindex
\indexsetup{othercode={\hyphenpenalty=10000}}
-\makeatletter\newcommand\ybPrintIndex[1][Index]{
+\makeatletter
+\newcommand\ybPrintIndex[1][Index]{%
\ifdefined\yb@authordraft\else
- \cleardoublepage
- {
- \setstretch{1.0}
- \small
- \addcontentsline{toc}{chapter}{#1}
- \printindex
- }
- \fi
-}\makeatother
+ \cleardoublepage%
+ {%
+ \setstretch{1.0}%
+ \small%
+ \addcontentsline{toc}{chapter}{#1}%
+ \printindex%
+ }%
+ \fi%
+}
+\makeatother
\RequirePackage{wrapfig}
\RequirePackage{mdframed}
@@ -289,7 +337,8 @@
skipabove=0pt,skipbelow=0pt,
linewidth=2pt,
topline=false,bottomline=false,leftline=false}
-\makeatletter\newcommand\ybQuote[3]{%
+\makeatletter
+\newcommand\ybQuote[3]{%
\ifthenelse{\isempty{#3}}{}{
\ifx\hfuzz#2\hfuzz%
\index{#3}%
@@ -322,7 +371,8 @@
\vspace{-12pt}
\end{wrapfigure}%
\fi%
-}\makeatother
+}
+\makeatother
\RequirePackage{perpage}
\RequirePackage[bottom,perpage,multiple]{footmisc}
@@ -335,19 +385,21 @@
\yb@oldfootnote{#1}\futurelet\yb@nexttoken\yb@isfootnote}
\makeatother
-\makeatletter\newcommand\ybPrintBibliography{%
+\makeatletter
+\newcommand\ybPrintBibliography[1][Bibliography]{%
\AtNextBibliography{\small}%
\raggedright%
\ifdefined\yb@manuscript%
\setlength\bibitemsep{0pt}%
\newpage%
- \begin{multicols}{2}
- {\setstretch{1.0}\printbibliography}
- \end{multicols}
- \else
- \printbibliography
- \fi
-}\makeatother
+ \begin{multicols}{2}%
+ {\setstretch{1.0}\printbibliography}%
+ \end{multicols}%
+ \else%
+ \printbibliography[heading=bibintoc,title={#1}]%
+ \fi%
+}
+\makeatother
\AtBeginDocument{%
\raggedbottom%
@@ -365,7 +417,6 @@
\newcommand*\theauthor{\textbackslash{}theauthor}
\newcommand*\thereviewer{\textbackslash{}thereviewer}
-
\endinput
%%
%% End of file `yb-book.cls'.
diff --git a/Master/texmf-dist/tex/latex/yfonts-otf/yfonts-otf.sty b/Master/texmf-dist/tex/latex/yfonts-otf/yfonts-otf.sty
index f9bbf9ce78f..deb351ae7b3 100644
--- a/Master/texmf-dist/tex/latex/yfonts-otf/yfonts-otf.sty
+++ b/Master/texmf-dist/tex/latex/yfonts-otf/yfonts-otf.sty
@@ -1,6 +1,6 @@
\NeedsTeXFormat{LaTeX2e}[2019-01-01]
-\def\fileversion{0.43}
-\def\filedate{2022-11-16}
+\def\fileversion{0.50}
+\def\filedate{2025-01-23}
\ProvidesPackage{yfonts-otf}[\filedate\space\fileversion]
\RequirePackage{iftex}[2019-10-24]
\newif\ifYHf@oldumlaut
@@ -11,12 +11,11 @@
\ProcessOptions
\iftutex
\RequirePackage{fontspec}
+ \newopentypefeature{Style}{gothvarlongs}{+ss01}
\newopentypefeature{Style}{longs}{+ss11}
\ifYHf@gothvarlongs
\newfontfamily\gothfamily{ygoth.otf}%
- [Extension = .otf,
- Ligatures=TeX,
- RawFeature=+ss01;+ss11;+rlig;+liga;+hlig]
+ [Ligatures=TeX, RawFeature=+ss01;+cv01;+rlig;+liga;+hlig]
\else
\newfontfamily\gothfamily{ygoth.otf}%
[Ligatures=TeX, RawFeature=+ss11;+rlig;+liga;+hlig]
diff --git a/Master/texmf-dist/tex/latex/ysabeau/ysabeau.sty b/Master/texmf-dist/tex/latex/ysabeau/ysabeau.sty
index b633978943b..f55bb68a186 100644
--- a/Master/texmf-dist/tex/latex/ysabeau/ysabeau.sty
+++ b/Master/texmf-dist/tex/latex/ysabeau/ysabeau.sty
@@ -1,14 +1,13 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ysabeau}
- [2024/01/19 Style file for Ysabeau fonts (NMH).]
+\def\fileversion{1.5}
+\def\filedate{2024/11/06}
+\ProvidesPackage{ysabeau}[\filedate\space v\fileversion\space Ysabeau fonts for LaTeX (NMH).]
% Large portions of code was stolen from Michael Sharpe (cochineal.sty). Credits for him.
\DeclareEncodingSubset{TS1}{Ysabeau-*}{0}
\DeclareEncodingSubset{LGR}{Ysabeau-*}{0}
-%\RequirePackage[QX,L7X,CS,LGR,T5,T4,TS3,T3,T2C,T2B,T2A,LY1,T1]{fontenc} % Default
-\RequirePackage[TS1,T1]{fontenc}
-\RequirePackage[full]{textcomp}
+\RequirePackage{fontenc,textcomp}
\RequirePackage{mweights}
\RequirePackage{xstring,ifthen,scalefnt} % For \textfrac
\RequirePackage{etoolbox} % For new commands
@@ -165,6 +164,13 @@
OsF}\fontshape{sc}\selectfont #1}%
}\fi% use OsF in small caps
+% Here we provides some aliases for figure commands
+
+\let\liningnums\lfstyle
+\let\tabularliningnums\tlfstyle
+\let\oldstylenums\osfstyle
+\let\tabularoldstylenums\tosfstyle
+
\IfFileExists{fontaxes.sty}{
\RequirePackage{fontaxes}
\DeclareRobustCommand\swshape{\not@math@alphabet\swshape\relax
@@ -180,15 +186,16 @@ OsF}\fontshape{sc}\selectfont #1}%
\DeclareTextFontCommand{\textsup}{\supfigures}
\let\textsu\textsup
\let\textsuperior\textsup
- \let\supstyle\supfigures % Add by me
+ \let\supstyle\supfigures
+ \let\supscript\supfigures
\let\@oldtextsuperscript\textsuperscript
\def\textsuperscript{\@ifstar\@oldtextsuperscript\textsup}
\def\@makefnmark{%
\mbox{\footnotemarkfont\textsuperscript{\@thefnmark}}}
\@ifundefined{ftntm@font}%
{\let\footnotemarkfont\normalfont}%
- {\let\footnotemarkfont\ftntm@font}
-
+ {\let\footnotemarkfont\ftntm@font}
+
\fa@naming@exception{figures}{{inferior}{proportional}}{Inf}
\fa@naming@exception{figures}{{inferior}{tabular}}{Inf}
\def\inffigures{\@nomath\inffigures
@@ -197,7 +204,8 @@ OsF}\fontshape{sc}\selectfont #1}%
\DeclareTextFontCommand{\textinf}{\inffigures}
\let\textin\textinf
\let\textinferior\textinf
- \let\infstyle\inffigures % Add by me
+ \let\infstyle\inffigures
+ \let\subscript\inffigures
\let\@oldtextsubscript\textsubscript
\def\textsubscript{\@ifstar\@oldtextsubscript\textinf}
@@ -208,10 +216,9 @@ OsF}\fontshape{sc}\selectfont #1}%
\def\numfigures{\@nomath\numfigures
\fontfigurestyle{numerators}\selectfont}
\let\nufigures\numfigures
- \DeclareTextFontCommand{\textnum}{\numfigures}
- %\let\textnu\textnum % Clash when you use T1 and LGR encodings (babel package). Fix later (from XCharter package)
+ \DeclareTextFontCommand{\textnum}{\numfigures}
\let\textnumerators\textnum
- \let\numstyle\numfigures % Add by me
+ \let\numstyle\numfigures
\fa@naming@exception{figures}{{denominators}{proportional}}{Dnom}
%\fa@naming@exception{figures}{{denominator}{proportional}}{Dnom}
@@ -223,7 +230,7 @@ OsF}\fontshape{sc}\selectfont #1}%
\DeclareTextFontCommand{\textden}{\denfigures}
\let\textde\textden
\let\textdenominators\textden
- \let\denstyle\denfigures % Add by me
+ \let\denstyle\denfigures
}{}
diff --git a/Master/texmf-dist/tex/latex/zref-check/zref-check.sty b/Master/texmf-dist/tex/latex/zref-check/zref-check.sty
index e2238e88cee..adfc739e7c0 100644
--- a/Master/texmf-dist/tex/latex/zref-check/zref-check.sty
+++ b/Master/texmf-dist/tex/latex/zref-check/zref-check.sty
@@ -8,7 +8,7 @@
%%
%% This file was generated from file(s) of the LaTeX package "zref-check".
%%
-%% Copyright (C) 2021-2023 gusbrs
+%% Copyright (C) 2021-2024 gusbrs
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -52,7 +52,7 @@
'zref-check' requires a LaTeX kernel \zrefcheck@required@kernel\space or newer.%
}%
}%
-\ProvidesExplPackage {zref-check} {2023-11-14} {0.3.5}
+\ProvidesExplPackage {zref-check} {2024-11-28} {0.3.7}
{Flexible cross-references with contextual checks based on zref}
\RequirePackage { zref-user }
\RequirePackage { zref-abspage }
@@ -180,7 +180,7 @@
}
\bool_new:N \l__zrefcheck_use_hyperref_bool
\bool_new:N \l__zrefcheck_warn_hyperref_bool
-\keys_define:nn { zref-check }
+\keys_define:nn { zref-check/setup }
{
hyperref .choice: ,
hyperref / auto .code:n =
@@ -213,14 +213,14 @@
{ \msg_warning:nn { zref-check } { missing-hyperref } }
\bool_set_false:N \l__zrefcheck_use_hyperref_bool
}
- \keys_define:nn { zref-check }
+ \keys_define:nn { zref-check/setup }
{
hyperref .code:n =
{ \msg_warning:nn { zref-check } { hyperref-preamble-only } }
}
}
\tl_new:N \l__zrefcheck_msglevel_tl
-\keys_define:nn { zref-check }
+\keys_define:nn { zref-check/setup }
{
msglevel .choice: ,
msglevel / warn .code:n =
@@ -252,14 +252,14 @@
}
\AddToHook { begindocument }
{
- \keys_define:nn { zref-check }
+ \keys_define:nn { zref-check/setup }
{
ignore .meta:n = { msglevel = none } ,
ok .meta:n = { msglevel = none } ,
}
}
\bool_new:N \l__zrefcheck_msgonpage_bool
-\keys_define:nn { zref-check }
+\keys_define:nn { zref-check/setup }
{
onpage .choice: ,
onpage / labelseq .code:n =
@@ -286,7 +286,7 @@
onpage .initial:n = labelseq
}
\int_new:N \l__zrefcheck_close_range_int
-\keys_define:nn { zref-check }
+\keys_define:nn { zref-check/setup }
{
closerange .code:n =
{
@@ -305,7 +305,7 @@
{ ! \tl_if_empty_p:c { opt@ zref-check.sty } }
{ \msg_warning:nn { zref-check } { load-time-options } }
\NewDocumentCommand \zrefchecksetup { m }
- { \keys_set:nn { zref-check } {#1} }
+ { \keys_set:nn { zref-check/setup } {#1} }
\prop_new:N \g__zrefcheck_auxfile_lblseq_prop
\tl_gset:Nn \g__zrefcheck_tmpa_tl { \c_sys_jobname_str .aux }
\file_if_exist:nT { \g__zrefcheck_tmpa_tl }
@@ -369,7 +369,7 @@
{
\zref@ifrefcontainsprop {#1} {#2}
{
- \tl_set:Ne #3
+ \exp_args:NNNo \exp_args:NNo \tl_set:Nn #3
{ \zref@extractdefault {#1} {#2} { \c_empty_tl } }
}
{
@@ -410,7 +410,7 @@
\cs_new_protected:Npn \__zrefcheck_zcheck:nnnn #1#2#3#4
{
\group_begin:
- \keys_set:nn { zref-check / zcheck } {#3}
+ \keys_set:nn { zref-check/zcheck } {#3}
\seq_set_split:Nnn \l__zrefcheck_zcheck_labels_seq { , } {#1}
\int_gincr:N \g__zrefcheck_id_int
\tl_set:Ne \l__zrefcheck_checkbeg_tl
@@ -484,7 +484,7 @@
}
\seq_new:N \l__zrefcheck_zcheck_checks_seq
\bool_new:N \l__zrefcheck_zcheck_end_label_bool
-\keys_define:nn { } { zref-check / zcheck .inherit:n = zref-check }
+\keys_define:nn { zref-check } { zcheck .inherit:n = zref-check/setup }
\clist_map_inline:nn
{
thispage ,
@@ -516,7 +516,7 @@
manual ,
}
{
- \keys_define:nn { zref-check / zcheck }
+ \keys_define:nn { zref-check/zcheck }
{
#1 .code:n =
{
diff --git a/Master/texmf-dist/tex/latex/zref-clever/zref-clever-german.lang b/Master/texmf-dist/tex/latex/zref-clever/zref-clever-german.lang
index c42c05da3d9..ebb1cd0946e 100644
--- a/Master/texmf-dist/tex/latex/zref-clever/zref-clever-german.lang
+++ b/Master/texmf-dist/tex/latex/zref-clever/zref-clever-german.lang
@@ -53,106 +53,106 @@ rangesep = {~bis\nobreakspace} ,
type = book ,
gender = n ,
- case = N ,
+ variant = N ,
Name-sg = Buch ,
Name-pl = Bücher ,
- case = A ,
+ variant = A ,
Name-sg = Buch ,
Name-pl = Bücher ,
- case = D ,
+ variant = D ,
Name-sg = Buch ,
Name-pl = Büchern ,
- case = G ,
+ variant = G ,
Name-sg = Buches ,
Name-pl = Bücher ,
type = part ,
gender = m ,
- case = N ,
+ variant = N ,
Name-sg = Teil ,
Name-pl = Teile ,
- case = A ,
+ variant = A ,
Name-sg = Teil ,
Name-pl = Teile ,
- case = D ,
+ variant = D ,
Name-sg = Teil ,
Name-pl = Teilen ,
- case = G ,
+ variant = G ,
Name-sg = Teiles ,
Name-pl = Teile ,
type = chapter ,
gender = n ,
- case = N ,
+ variant = N ,
Name-sg = Kapitel ,
Name-pl = Kapitel ,
- case = A ,
+ variant = A ,
Name-sg = Kapitel ,
Name-pl = Kapitel ,
- case = D ,
+ variant = D ,
Name-sg = Kapitel ,
Name-pl = Kapiteln ,
- case = G ,
+ variant = G ,
Name-sg = Kapitels ,
Name-pl = Kapitel ,
type = section ,
gender = m ,
- case = N ,
+ variant = N ,
Name-sg = Abschnitt ,
Name-pl = Abschnitte ,
- case = A ,
+ variant = A ,
Name-sg = Abschnitt ,
Name-pl = Abschnitte ,
- case = D ,
+ variant = D ,
Name-sg = Abschnitt ,
Name-pl = Abschnitten ,
- case = G ,
+ variant = G ,
Name-sg = Abschnitts ,
Name-pl = Abschnitte ,
type = paragraph ,
gender = m ,
- case = N ,
+ variant = N ,
Name-sg = Absatz ,
Name-pl = Absätze ,
- case = A ,
+ variant = A ,
Name-sg = Absatz ,
Name-pl = Absätze ,
- case = D ,
+ variant = D ,
Name-sg = Absatz ,
Name-pl = Absätzen ,
- case = G ,
+ variant = G ,
Name-sg = Absatzes ,
Name-pl = Absätze ,
type = appendix ,
gender = m ,
- case = N ,
+ variant = N ,
Name-sg = Anhang ,
Name-pl = Anhänge ,
- case = A ,
+ variant = A ,
Name-sg = Anhang ,
Name-pl = Anhänge ,
- case = D ,
+ variant = D ,
Name-sg = Anhang ,
Name-pl = Anhängen ,
- case = G ,
+ variant = G ,
Name-sg = Anhangs ,
Name-pl = Anhänge ,
type = page ,
gender = f ,
- case = N ,
+ variant = N ,
Name-sg = Seite ,
Name-pl = Seiten ,
- case = A ,
+ variant = A ,
Name-sg = Seite ,
Name-pl = Seiten ,
- case = D ,
+ variant = D ,
Name-sg = Seite ,
Name-pl = Seiten ,
- case = G ,
+ variant = G ,
Name-sg = Seite ,
Name-pl = Seiten ,
rangesep = {\textendash} ,
@@ -160,37 +160,37 @@ type = page ,
type = line ,
gender = f ,
- case = N ,
+ variant = N ,
Name-sg = Zeile ,
Name-pl = Zeilen ,
- case = A ,
+ variant = A ,
Name-sg = Zeile ,
Name-pl = Zeilen ,
- case = D ,
+ variant = D ,
Name-sg = Zeile ,
Name-pl = Zeilen ,
- case = G ,
+ variant = G ,
Name-sg = Zeile ,
Name-pl = Zeilen ,
type = figure ,
gender = f ,
- case = N ,
+ variant = N ,
Name-sg = Abbildung ,
Name-pl = Abbildungen ,
Name-sg-ab = Abb. ,
Name-pl-ab = Abb. ,
- case = A ,
+ variant = A ,
Name-sg = Abbildung ,
Name-pl = Abbildungen ,
Name-sg-ab = Abb. ,
Name-pl-ab = Abb. ,
- case = D ,
+ variant = D ,
Name-sg = Abbildung ,
Name-pl = Abbildungen ,
Name-sg-ab = Abb. ,
Name-pl-ab = Abb. ,
- case = G ,
+ variant = G ,
Name-sg = Abbildung ,
Name-pl = Abbildungen ,
Name-sg-ab = Abb. ,
@@ -198,91 +198,91 @@ type = figure ,
type = table ,
gender = f ,
- case = N ,
+ variant = N ,
Name-sg = Tabelle ,
Name-pl = Tabellen ,
- case = A ,
+ variant = A ,
Name-sg = Tabelle ,
Name-pl = Tabellen ,
- case = D ,
+ variant = D ,
Name-sg = Tabelle ,
Name-pl = Tabellen ,
- case = G ,
+ variant = G ,
Name-sg = Tabelle ,
Name-pl = Tabellen ,
type = item ,
gender = m ,
- case = N ,
+ variant = N ,
Name-sg = Punkt ,
Name-pl = Punkte ,
- case = A ,
+ variant = A ,
Name-sg = Punkt ,
Name-pl = Punkte ,
- case = D ,
+ variant = D ,
Name-sg = Punkt ,
Name-pl = Punkten ,
- case = G ,
+ variant = G ,
Name-sg = Punktes ,
Name-pl = Punkte ,
type = footnote ,
gender = f ,
- case = N ,
+ variant = N ,
Name-sg = Fußnote ,
Name-pl = Fußnoten ,
- case = A ,
+ variant = A ,
Name-sg = Fußnote ,
Name-pl = Fußnoten ,
- case = D ,
+ variant = D ,
Name-sg = Fußnote ,
Name-pl = Fußnoten ,
- case = G ,
+ variant = G ,
Name-sg = Fußnote ,
Name-pl = Fußnoten ,
type = endnote ,
gender = f ,
- case = N ,
+ variant = N ,
Name-sg = Endnote ,
Name-pl = Endnoten ,
- case = A ,
+ variant = A ,
Name-sg = Endnote ,
Name-pl = Endnoten ,
- case = D ,
+ variant = D ,
Name-sg = Endnote ,
Name-pl = Endnoten ,
- case = G ,
+ variant = G ,
Name-sg = Endnote ,
Name-pl = Endnoten ,
type = note ,
gender = f ,
- case = N ,
+ variant = N ,
Name-sg = Anmerkung ,
Name-pl = Anmerkungen ,
- case = A ,
+ variant = A ,
Name-sg = Anmerkung ,
Name-pl = Anmerkungen ,
- case = D ,
+ variant = D ,
Name-sg = Anmerkung ,
Name-pl = Anmerkungen ,
- case = G ,
+ variant = G ,
Name-sg = Anmerkung ,
Name-pl = Anmerkungen ,
type = equation ,
gender = f ,
- case = N ,
+ variant = N ,
Name-sg = Gleichung ,
Name-pl = Gleichungen ,
- case = A ,
+ variant = A ,
Name-sg = Gleichung ,
Name-pl = Gleichungen ,
- case = D ,
+ variant = D ,
Name-sg = Gleichung ,
Name-pl = Gleichungen ,
- case = G ,
+ variant = G ,
Name-sg = Gleichung ,
Name-pl = Gleichungen ,
refbounds-first-sg = {,(,),} ,
@@ -290,196 +290,196 @@ type = equation ,
type = theorem ,
gender = n ,
- case = N ,
+ variant = N ,
Name-sg = Theorem ,
Name-pl = Theoreme ,
- case = A ,
+ variant = A ,
Name-sg = Theorem ,
Name-pl = Theoreme ,
- case = D ,
+ variant = D ,
Name-sg = Theorem ,
Name-pl = Theoremen ,
- case = G ,
+ variant = G ,
Name-sg = Theorems ,
Name-pl = Theoreme ,
type = lemma ,
gender = n ,
- case = N ,
+ variant = N ,
Name-sg = Lemma ,
Name-pl = Lemmata ,
- case = A ,
+ variant = A ,
Name-sg = Lemma ,
Name-pl = Lemmata ,
- case = D ,
+ variant = D ,
Name-sg = Lemma ,
Name-pl = Lemmata ,
- case = G ,
+ variant = G ,
Name-sg = Lemmas ,
Name-pl = Lemmata ,
type = corollary ,
gender = n ,
- case = N ,
+ variant = N ,
Name-sg = Korollar ,
Name-pl = Korollare ,
- case = A ,
+ variant = A ,
Name-sg = Korollar ,
Name-pl = Korollare ,
- case = D ,
+ variant = D ,
Name-sg = Korollar ,
Name-pl = Korollaren ,
- case = G ,
+ variant = G ,
Name-sg = Korollars ,
Name-pl = Korollare ,
type = proposition ,
gender = m ,
- case = N ,
+ variant = N ,
Name-sg = Satz ,
Name-pl = Sätze ,
- case = A ,
+ variant = A ,
Name-sg = Satz ,
Name-pl = Sätze ,
- case = D ,
+ variant = D ,
Name-sg = Satz ,
Name-pl = Sätzen ,
- case = G ,
+ variant = G ,
Name-sg = Satzes ,
Name-pl = Sätze ,
type = definition ,
gender = f ,
- case = N ,
+ variant = N ,
Name-sg = Definition ,
Name-pl = Definitionen ,
- case = A ,
+ variant = A ,
Name-sg = Definition ,
Name-pl = Definitionen ,
- case = D ,
+ variant = D ,
Name-sg = Definition ,
Name-pl = Definitionen ,
- case = G ,
+ variant = G ,
Name-sg = Definition ,
Name-pl = Definitionen ,
type = proof ,
gender = m ,
- case = N ,
+ variant = N ,
Name-sg = Beweis ,
Name-pl = Beweise ,
- case = A ,
+ variant = A ,
Name-sg = Beweis ,
Name-pl = Beweise ,
- case = D ,
+ variant = D ,
Name-sg = Beweis ,
Name-pl = Beweisen ,
- case = G ,
+ variant = G ,
Name-sg = Beweises ,
Name-pl = Beweise ,
type = result ,
gender = n ,
- case = N ,
+ variant = N ,
Name-sg = Ergebnis ,
Name-pl = Ergebnisse ,
- case = A ,
+ variant = A ,
Name-sg = Ergebnis ,
Name-pl = Ergebnisse ,
- case = D ,
+ variant = D ,
Name-sg = Ergebnis ,
Name-pl = Ergebnissen ,
- case = G ,
+ variant = G ,
Name-sg = Ergebnisses ,
Name-pl = Ergebnisse ,
type = remark ,
gender = f ,
- case = N ,
+ variant = N ,
Name-sg = Bemerkung ,
Name-pl = Bemerkungen ,
- case = A ,
+ variant = A ,
Name-sg = Bemerkung ,
Name-pl = Bemerkungen ,
- case = D ,
+ variant = D ,
Name-sg = Bemerkung ,
Name-pl = Bemerkungen ,
- case = G ,
+ variant = G ,
Name-sg = Bemerkung ,
Name-pl = Bemerkungen ,
type = example ,
gender = n ,
- case = N ,
+ variant = N ,
Name-sg = Beispiel ,
Name-pl = Beispiele ,
- case = A ,
+ variant = A ,
Name-sg = Beispiel ,
Name-pl = Beispiele ,
- case = D ,
+ variant = D ,
Name-sg = Beispiel ,
Name-pl = Beispielen ,
- case = G ,
+ variant = G ,
Name-sg = Beispiels ,
Name-pl = Beispiele ,
type = algorithm ,
gender = m ,
- case = N ,
+ variant = N ,
Name-sg = Algorithmus ,
Name-pl = Algorithmen ,
- case = A ,
+ variant = A ,
Name-sg = Algorithmus ,
Name-pl = Algorithmen ,
- case = D ,
+ variant = D ,
Name-sg = Algorithmus ,
Name-pl = Algorithmen ,
- case = G ,
+ variant = G ,
Name-sg = Algorithmus ,
Name-pl = Algorithmen ,
type = listing ,
gender = n ,
- case = N ,
+ variant = N ,
Name-sg = Listing ,
Name-pl = Listings ,
- case = A ,
+ variant = A ,
Name-sg = Listing ,
Name-pl = Listings ,
- case = D ,
+ variant = D ,
Name-sg = Listing ,
Name-pl = Listings ,
- case = G ,
+ variant = G ,
Name-sg = Listings ,
Name-pl = Listings ,
type = exercise ,
gender = f ,
- case = N ,
+ variant = N ,
Name-sg = Übungsaufgabe ,
Name-pl = Übungsaufgaben ,
- case = A ,
+ variant = A ,
Name-sg = Übungsaufgabe ,
Name-pl = Übungsaufgaben ,
- case = D ,
+ variant = D ,
Name-sg = Übungsaufgabe ,
Name-pl = Übungsaufgaben ,
- case = G ,
+ variant = G ,
Name-sg = Übungsaufgabe ,
Name-pl = Übungsaufgaben ,
type = solution ,
gender = f ,
- case = N ,
+ variant = N ,
Name-sg = Lösung ,
Name-pl = Lösungen ,
- case = A ,
+ variant = A ,
Name-sg = Lösung ,
Name-pl = Lösungen ,
- case = D ,
+ variant = D ,
Name-sg = Lösung ,
Name-pl = Lösungen ,
- case = G ,
+ variant = G ,
Name-sg = Lösung ,
Name-pl = Lösungen ,
%%
diff --git a/Master/texmf-dist/tex/latex/zref-clever/zref-clever-russian.lang b/Master/texmf-dist/tex/latex/zref-clever/zref-clever-russian.lang
index a98e2349fba..bdd7d98bc8b 100644
--- a/Master/texmf-dist/tex/latex/zref-clever/zref-clever-russian.lang
+++ b/Master/texmf-dist/tex/latex/zref-clever/zref-clever-russian.lang
@@ -54,32 +54,32 @@ rangesep = {~по\nobreakspace} ,
type = book ,
gender = f ,
- case = n ,
+ variant = n ,
Name-sg = Книга ,
name-sg = книга ,
Name-pl = Книги ,
name-pl = книги ,
- case = a ,
+ variant = a ,
Name-sg = Книгу ,
name-sg = книгу ,
Name-pl = Книги ,
name-pl = книги ,
- case = g ,
+ variant = g ,
Name-sg = Книги ,
name-sg = книги ,
Name-pl = Книг ,
name-pl = книг ,
- case = d ,
+ variant = d ,
Name-sg = Книге ,
name-sg = книге ,
Name-pl = Книгам ,
name-pl = книгам ,
- case = i ,
+ variant = i ,
Name-sg = Книгой ,
name-sg = книгой ,
Name-pl = Книгами ,
name-pl = книгами ,
- case = p ,
+ variant = p ,
Name-sg = Книге ,
name-sg = книге ,
Name-pl = Книгах ,
@@ -87,7 +87,7 @@ type = book ,
type = part ,
gender = f ,
- case = n ,
+ variant = n ,
Name-sg = Часть ,
name-sg = часть ,
Name-pl = Части ,
@@ -96,7 +96,7 @@ type = part ,
name-sg-ab = ч. ,
Name-pl-ab = Чч. ,
name-pl-ab = чч. ,
- case = a ,
+ variant = a ,
Name-sg = Часть ,
name-sg = часть ,
Name-pl = Части ,
@@ -105,7 +105,7 @@ type = part ,
name-sg-ab = ч. ,
Name-pl-ab = Чч. ,
name-pl-ab = чч. ,
- case = g ,
+ variant = g ,
Name-sg = Части ,
name-sg = части ,
Name-pl = Частей ,
@@ -114,7 +114,7 @@ type = part ,
name-sg-ab = ч. ,
Name-pl-ab = Чч. ,
name-pl-ab = чч. ,
- case = d ,
+ variant = d ,
Name-sg = Части ,
name-sg = части ,
Name-pl = Частям ,
@@ -123,7 +123,7 @@ type = part ,
name-sg-ab = ч. ,
Name-pl-ab = Чч. ,
name-pl-ab = чч. ,
- case = i ,
+ variant = i ,
Name-sg = Частью ,
name-sg = частью ,
Name-pl = Частями ,
@@ -132,7 +132,7 @@ type = part ,
name-sg-ab = ч. ,
Name-pl-ab = Чч. ,
name-pl-ab = чч. ,
- case = p ,
+ variant = p ,
Name-sg = Части ,
name-sg = части ,
Name-pl = Частях ,
@@ -144,7 +144,7 @@ type = part ,
type = chapter ,
gender = f ,
- case = n ,
+ variant = n ,
Name-sg = Глава ,
name-sg = глава ,
Name-pl = Главы ,
@@ -153,7 +153,7 @@ type = chapter ,
name-sg-ab = гл. ,
Name-pl-ab = Гл. ,
name-pl-ab = гл. ,
- case = a ,
+ variant = a ,
Name-sg = Главу ,
name-sg = главу ,
Name-pl = Главы ,
@@ -162,7 +162,7 @@ type = chapter ,
name-sg-ab = гл. ,
Name-pl-ab = Гл. ,
name-pl-ab = гл. ,
- case = g ,
+ variant = g ,
Name-sg = Главы ,
name-sg = главы ,
Name-pl = Глав ,
@@ -171,7 +171,7 @@ type = chapter ,
name-sg-ab = гл. ,
Name-pl-ab = Гл. ,
name-pl-ab = гл. ,
- case = d ,
+ variant = d ,
Name-sg = Главе ,
name-sg = главе ,
Name-pl = Главам ,
@@ -180,7 +180,7 @@ type = chapter ,
name-sg-ab = гл. ,
Name-pl-ab = Гл. ,
name-pl-ab = гл. ,
- case = i ,
+ variant = i ,
Name-sg = Главой ,
name-sg = главой ,
Name-pl = Главами ,
@@ -189,7 +189,7 @@ type = chapter ,
name-sg-ab = гл. ,
Name-pl-ab = Гл. ,
name-pl-ab = гл. ,
- case = p ,
+ variant = p ,
Name-sg = Главе ,
name-sg = главе ,
Name-pl = Главах ,
@@ -201,32 +201,32 @@ type = chapter ,
type = section ,
gender = m ,
- case = n ,
+ variant = n ,
Name-sg = Раздел ,
name-sg = раздел ,
Name-pl = Разделы ,
name-pl = разделы ,
- case = a ,
+ variant = a ,
Name-sg = Раздел ,
name-sg = раздел ,
Name-pl = Разделы ,
name-pl = разделы ,
- case = g ,
+ variant = g ,
Name-sg = Раздела ,
name-sg = раздела ,
Name-pl = Разделов ,
name-pl = разделов ,
- case = d ,
+ variant = d ,
Name-sg = Разделу ,
name-sg = разделу ,
Name-pl = Разделам ,
name-pl = разделам ,
- case = i ,
+ variant = i ,
Name-sg = Разделом ,
name-sg = разделом ,
Name-pl = Разделами ,
name-pl = разделами ,
- case = p ,
+ variant = p ,
Name-sg = Разделе ,
name-sg = разделе ,
Name-pl = Разделах ,
@@ -234,32 +234,32 @@ type = section ,
type = paragraph ,
gender = m ,
- case = n ,
+ variant = n ,
Name-sg = Абзац ,
name-sg = абзац ,
Name-pl = Абзацы ,
name-pl = абзацы ,
- case = a ,
+ variant = a ,
Name-sg = Абзац ,
name-sg = абзац ,
Name-pl = Абзацы ,
name-pl = абзацы ,
- case = g ,
+ variant = g ,
Name-sg = Абзаца ,
name-sg = абзаца ,
Name-pl = Абзацев ,
name-pl = абзацев ,
- case = d ,
+ variant = d ,
Name-sg = Абзацу ,
name-sg = абзацу ,
Name-pl = Абзацам ,
name-pl = абзацам ,
- case = i ,
+ variant = i ,
Name-sg = Абзацем ,
name-sg = абзацем ,
Name-pl = Абзацами ,
name-pl = абзацами ,
- case = p ,
+ variant = p ,
Name-sg = Абзаце ,
name-sg = абзаце ,
Name-pl = Абзацах ,
@@ -267,32 +267,32 @@ type = paragraph ,
type = appendix ,
gender = n ,
- case = n ,
+ variant = n ,
Name-sg = Приложение ,
name-sg = приложение ,
Name-pl = Приложения ,
name-pl = приложения ,
- case = a ,
+ variant = a ,
Name-sg = Приложение ,
name-sg = приложение ,
Name-pl = Приложения ,
name-pl = приложения ,
- case = g ,
+ variant = g ,
Name-sg = Приложения ,
name-sg = приложения ,
Name-pl = Приложений ,
name-pl = приложений ,
- case = d ,
+ variant = d ,
Name-sg = Приложению ,
name-sg = приложению ,
Name-pl = Приложениям ,
name-pl = приложениям ,
- case = i ,
+ variant = i ,
Name-sg = Приложением ,
name-sg = приложением ,
Name-pl = Приложениями ,
name-pl = приложениями ,
- case = p ,
+ variant = p ,
Name-sg = Приложении ,
name-sg = приложении ,
Name-pl = Приложениях ,
@@ -300,7 +300,7 @@ type = appendix ,
type = page ,
gender = f ,
- case = n ,
+ variant = n ,
Name-sg = Страница ,
name-sg = страница ,
Name-pl = Страницы ,
@@ -309,7 +309,7 @@ type = page ,
name-sg-ab = с. ,
Name-pl-ab = Сс. ,
name-pl-ab = сс. ,
- case = a ,
+ variant = a ,
Name-sg = Страницу ,
name-sg = страницу ,
Name-pl = Страницы ,
@@ -318,7 +318,7 @@ type = page ,
name-sg-ab = с. ,
Name-pl-ab = Сс. ,
name-pl-ab = сс. ,
- case = g ,
+ variant = g ,
Name-sg = Страницы ,
name-sg = страницы ,
Name-pl = Страниц ,
@@ -327,7 +327,7 @@ type = page ,
name-sg-ab = с. ,
Name-pl-ab = Сс. ,
name-pl-ab = сс. ,
- case = d ,
+ variant = d ,
Name-sg = Странице ,
name-sg = странице ,
Name-pl = Страницам ,
@@ -336,7 +336,7 @@ type = page ,
name-sg-ab = с. ,
Name-pl-ab = Сс. ,
name-pl-ab = сс. ,
- case = i ,
+ variant = i ,
Name-sg = Страницей ,
name-sg = страницей ,
Name-pl = Страницами ,
@@ -345,7 +345,7 @@ type = page ,
name-sg-ab = с. ,
Name-pl-ab = Сс. ,
name-pl-ab = сс. ,
- case = p ,
+ variant = p ,
Name-sg = Странице ,
name-sg = странице ,
Name-pl = Страницах ,
@@ -360,32 +360,32 @@ type = page ,
type = line ,
gender = f ,
- case = n ,
+ variant = n ,
Name-sg = Строка ,
name-sg = строка ,
Name-pl = Строки ,
name-pl = строки ,
- case = a ,
+ variant = a ,
Name-sg = Строку ,
name-sg = строку ,
Name-pl = Строки ,
name-pl = строки ,
- case = g ,
+ variant = g ,
Name-sg = Строки ,
name-sg = строки ,
Name-pl = Строк ,
name-pl = строк ,
- case = d ,
+ variant = d ,
Name-sg = Строке ,
name-sg = строке ,
Name-pl = Строкам ,
name-pl = строкам ,
- case = i ,
+ variant = i ,
Name-sg = Строкой ,
name-sg = строкой ,
Name-pl = Строками ,
name-pl = строками ,
- case = p ,
+ variant = p ,
Name-sg = Строке ,
name-sg = строке ,
Name-pl = Строках ,
@@ -393,7 +393,7 @@ type = line ,
type = figure ,
gender = m ,
- case = n ,
+ variant = n ,
Name-sg = Рисунок ,
name-sg = рисунок ,
Name-pl = Рисунки ,
@@ -402,7 +402,7 @@ type = figure ,
name-sg-ab = рис. ,
Name-pl-ab = Рис. ,
name-pl-ab = рис. ,
- case = a ,
+ variant = a ,
Name-sg = Рисунок ,
name-sg = рисунок ,
Name-pl = Рисунки ,
@@ -411,7 +411,7 @@ type = figure ,
name-sg-ab = рис. ,
Name-pl-ab = Рис. ,
name-pl-ab = рис. ,
- case = g ,
+ variant = g ,
Name-sg = Рисунка ,
name-sg = рисунка ,
Name-pl = Рисунков ,
@@ -420,7 +420,7 @@ type = figure ,
name-sg-ab = рис. ,
Name-pl-ab = Рис. ,
name-pl-ab = рис. ,
- case = d ,
+ variant = d ,
Name-sg = Рисунку ,
name-sg = рисунку ,
Name-pl = Рисункам ,
@@ -429,7 +429,7 @@ type = figure ,
name-sg-ab = рис. ,
Name-pl-ab = Рис. ,
name-pl-ab = рис. ,
- case = i ,
+ variant = i ,
Name-sg = Рисунком ,
name-sg = рисунком ,
Name-pl = Рисунками ,
@@ -438,7 +438,7 @@ type = figure ,
name-sg-ab = рис. ,
Name-pl-ab = Рис. ,
name-pl-ab = рис. ,
- case = p ,
+ variant = p ,
Name-sg = Рисунке ,
name-sg = рисунке ,
Name-pl = Рисунках ,
@@ -450,7 +450,7 @@ type = figure ,
type = table ,
gender = f ,
- case = n ,
+ variant = n ,
Name-sg = Таблица ,
name-sg = таблица ,
Name-pl = Таблицы ,
@@ -459,7 +459,7 @@ type = table ,
name-sg-ab = табл. ,
Name-pl-ab = Табл. ,
name-pl-ab = табл. ,
- case = a ,
+ variant = a ,
Name-sg = Таблицу ,
name-sg = таблицу ,
Name-pl = Таблицы ,
@@ -468,7 +468,7 @@ type = table ,
name-sg-ab = табл. ,
Name-pl-ab = Табл. ,
name-pl-ab = табл. ,
- case = g ,
+ variant = g ,
Name-sg = Таблицы ,
name-sg = таблицы ,
Name-pl = Таблиц ,
@@ -477,7 +477,7 @@ type = table ,
name-sg-ab = табл. ,
Name-pl-ab = Табл. ,
name-pl-ab = табл. ,
- case = d ,
+ variant = d ,
Name-sg = Таблице ,
name-sg = таблице ,
Name-pl = Таблицам ,
@@ -486,7 +486,7 @@ type = table ,
name-sg-ab = табл. ,
Name-pl-ab = Табл. ,
name-pl-ab = табл. ,
- case = i ,
+ variant = i ,
Name-sg = Таблицей ,
name-sg = таблицей ,
Name-pl = Таблицами ,
@@ -495,7 +495,7 @@ type = table ,
name-sg-ab = табл. ,
Name-pl-ab = Табл. ,
name-pl-ab = табл. ,
- case = p ,
+ variant = p ,
Name-sg = Таблице ,
name-sg = таблице ,
Name-pl = Таблицах ,
@@ -507,7 +507,7 @@ type = table ,
type = item ,
gender = m ,
- case = n ,
+ variant = n ,
Name-sg = Пункт ,
name-sg = пункт ,
Name-pl = Пункты ,
@@ -516,7 +516,7 @@ type = item ,
name-sg-ab = п. ,
Name-pl-ab = Пп. ,
name-pl-ab = пп. ,
- case = a ,
+ variant = a ,
Name-sg = Пункт ,
name-sg = пункт ,
Name-pl = Пункты ,
@@ -525,7 +525,7 @@ type = item ,
name-sg-ab = п. ,
Name-pl-ab = Пп. ,
name-pl-ab = пп. ,
- case = g ,
+ variant = g ,
Name-sg = Пункта ,
name-sg = пункта ,
Name-pl = Пунктов ,
@@ -534,7 +534,7 @@ type = item ,
name-sg-ab = п. ,
Name-pl-ab = Пп. ,
name-pl-ab = пп. ,
- case = d ,
+ variant = d ,
Name-sg = Пункту ,
name-sg = пункту ,
Name-pl = Пунктам ,
@@ -543,7 +543,7 @@ type = item ,
name-sg-ab = п. ,
Name-pl-ab = Пп. ,
name-pl-ab = пп. ,
- case = i ,
+ variant = i ,
Name-sg = Пунктом ,
name-sg = пунктом ,
Name-pl = Пунктами ,
@@ -552,7 +552,7 @@ type = item ,
name-sg-ab = п. ,
Name-pl-ab = Пп. ,
name-pl-ab = пп. ,
- case = p ,
+ variant = p ,
Name-sg = Пункте ,
name-sg = пункте ,
Name-pl = Пунктах ,
@@ -564,32 +564,32 @@ type = item ,
type = footnote ,
gender = f ,
- case = n ,
+ variant = n ,
Name-sg = Сноска ,
name-sg = сноска ,
Name-pl = Сноски ,
name-pl = сноски ,
- case = a ,
+ variant = a ,
Name-sg = Сноску ,
name-sg = сноску ,
Name-pl = Сноски ,
name-pl = сноски ,
- case = g ,
+ variant = g ,
Name-sg = Сноски ,
name-sg = сноски ,
Name-pl = Сносок ,
name-pl = сносок ,
- case = d ,
+ variant = d ,
Name-sg = Сноске ,
name-sg = сноске ,
Name-pl = Сноскам ,
name-pl = сноскам ,
- case = i ,
+ variant = i ,
Name-sg = Сноской ,
name-sg = сноской ,
Name-pl = Сносками ,
name-pl = сносками ,
- case = p ,
+ variant = p ,
Name-sg = Сноске ,
name-sg = сноске ,
Name-pl = Сносках ,
@@ -597,32 +597,32 @@ type = footnote ,
type = endnote ,
gender = f ,
- case = n ,
+ variant = n ,
Name-sg = Сноска ,
name-sg = сноска ,
Name-pl = Сноски ,
name-pl = сноски ,
- case = a ,
+ variant = a ,
Name-sg = Сноску ,
name-sg = сноску ,
Name-pl = Сноски ,
name-pl = сноски ,
- case = g ,
+ variant = g ,
Name-sg = Сноски ,
name-sg = сноски ,
Name-pl = Сносок ,
name-pl = сносок ,
- case = d ,
+ variant = d ,
Name-sg = Сноске ,
name-sg = сноске ,
Name-pl = Сноскам ,
name-pl = сноскам ,
- case = i ,
+ variant = i ,
Name-sg = Сноской ,
name-sg = сноской ,
Name-pl = Сносками ,
name-pl = сносками ,
- case = p ,
+ variant = p ,
Name-sg = Сноске ,
name-sg = сноске ,
Name-pl = Сносках ,
@@ -630,32 +630,32 @@ type = endnote ,
type = note ,
gender = f ,
- case = n ,
+ variant = n ,
Name-sg = Заметка ,
name-sg = заметка ,
Name-pl = Заметки ,
name-pl = заметки ,
- case = a ,
+ variant = a ,
Name-sg = Заметку ,
name-sg = заметку ,
Name-pl = Заметки ,
name-pl = заметки ,
- case = g ,
+ variant = g ,
Name-sg = Заметки ,
name-sg = заметки ,
Name-pl = Заметок ,
name-pl = заметок ,
- case = d ,
+ variant = d ,
Name-sg = Заметке ,
name-sg = заметке ,
Name-pl = Заметкам ,
name-pl = заметкам ,
- case = i ,
+ variant = i ,
Name-sg = Заметкой ,
name-sg = заметкой ,
Name-pl = Заметками ,
name-pl = заметками ,
- case = p ,
+ variant = p ,
Name-sg = Заметке ,
name-sg = заметке ,
Name-pl = Заметках ,
@@ -663,7 +663,7 @@ type = note ,
type = equation ,
gender = n ,
- case = n ,
+ variant = n ,
Name-sg = Уравнение ,
name-sg = уравнение ,
Name-pl = Уравнения ,
@@ -672,7 +672,7 @@ type = equation ,
name-sg-ab = ур. ,
Name-pl-ab = Ур. ,
name-pl-ab = ур. ,
- case = a ,
+ variant = a ,
Name-sg = Уравнение ,
name-sg = уравнение ,
Name-pl = Уравнения ,
@@ -681,7 +681,7 @@ type = equation ,
name-sg-ab = ур. ,
Name-pl-ab = Ур. ,
name-pl-ab = ур. ,
- case = g ,
+ variant = g ,
Name-sg = Уравнения ,
name-sg = уравнения ,
Name-pl = Уравнений ,
@@ -690,7 +690,7 @@ type = equation ,
name-sg-ab = ур. ,
Name-pl-ab = Ур. ,
name-pl-ab = ур. ,
- case = d ,
+ variant = d ,
Name-sg = Уравнению ,
name-sg = уравнению ,
Name-pl = Уравнениям ,
@@ -699,7 +699,7 @@ type = equation ,
name-sg-ab = ур. ,
Name-pl-ab = Ур. ,
name-pl-ab = ур. ,
- case = i ,
+ variant = i ,
Name-sg = Уравнением ,
name-sg = уравнением ,
Name-pl = Уравнениями ,
@@ -708,7 +708,7 @@ type = equation ,
name-sg-ab = ур. ,
Name-pl-ab = Ур. ,
name-pl-ab = ур. ,
- case = p ,
+ variant = p ,
Name-sg = Уравнении ,
name-sg = уравнении ,
Name-pl = Уравнениях ,
@@ -723,7 +723,7 @@ type = equation ,
type = theorem ,
gender = f ,
- case = n ,
+ variant = n ,
Name-sg = Теорема ,
name-sg = теорема ,
Name-pl = Теоремы ,
@@ -732,7 +732,7 @@ type = theorem ,
name-sg-ab = теор. ,
Name-pl-ab = Теор. ,
name-pl-ab = теор. ,
- case = a ,
+ variant = a ,
Name-sg = Теорему ,
name-sg = теорему ,
Name-pl = Теоремы ,
@@ -741,7 +741,7 @@ type = theorem ,
name-sg-ab = теор. ,
Name-pl-ab = Теор. ,
name-pl-ab = теор. ,
- case = g ,
+ variant = g ,
Name-sg = Теоремы ,
name-sg = теоремы ,
Name-pl = Теорем ,
@@ -750,7 +750,7 @@ type = theorem ,
name-sg-ab = теор. ,
Name-pl-ab = Теор. ,
name-pl-ab = теор. ,
- case = d ,
+ variant = d ,
Name-sg = Теореме ,
name-sg = теореме ,
Name-pl = Теоремам ,
@@ -759,7 +759,7 @@ type = theorem ,
name-sg-ab = теор. ,
Name-pl-ab = Теор. ,
name-pl-ab = теор. ,
- case = i ,
+ variant = i ,
Name-sg = Теоремой ,
name-sg = теоремой ,
Name-pl = Теоремами ,
@@ -768,7 +768,7 @@ type = theorem ,
name-sg-ab = теор. ,
Name-pl-ab = Теор. ,
name-pl-ab = теор. ,
- case = p ,
+ variant = p ,
Name-sg = Теореме ,
name-sg = теореме ,
Name-pl = Теоремах ,
@@ -780,32 +780,32 @@ type = theorem ,
type = lemma ,
gender = f ,
- case = n ,
+ variant = n ,
Name-sg = Лемма ,
name-sg = лемма ,
Name-pl = Леммы ,
name-pl = леммы ,
- case = a ,
+ variant = a ,
Name-sg = Лемму ,
name-sg = лемму ,
Name-pl = Леммы ,
name-pl = леммы ,
- case = g ,
+ variant = g ,
Name-sg = Леммы ,
name-sg = леммы ,
Name-pl = Лемм ,
name-pl = лемм ,
- case = d ,
+ variant = d ,
Name-sg = Лемме ,
name-sg = лемме ,
Name-pl = Леммам ,
name-pl = леммам ,
- case = i ,
+ variant = i ,
Name-sg = Леммой ,
name-sg = леммой ,
Name-pl = Леммами ,
name-pl = леммами ,
- case = p ,
+ variant = p ,
Name-sg = Лемме ,
name-sg = лемме ,
Name-pl = Леммах ,
@@ -813,32 +813,32 @@ type = lemma ,
type = corollary ,
gender = m ,
- case = n ,
+ variant = n ,
Name-sg = Вывод ,
name-sg = вывод ,
Name-pl = Выводы ,
name-pl = выводы ,
- case = a ,
+ variant = a ,
Name-sg = Вывод ,
name-sg = вывод ,
Name-pl = Выводы ,
name-pl = выводы ,
- case = g ,
+ variant = g ,
Name-sg = Вывода ,
name-sg = вывода ,
Name-pl = Выводов ,
name-pl = выводов ,
- case = d ,
+ variant = d ,
Name-sg = Выводу ,
name-sg = выводу ,
Name-pl = Выводам ,
name-pl = выводам ,
- case = i ,
+ variant = i ,
Name-sg = Выводом ,
name-sg = выводом ,
Name-pl = Выводами ,
name-pl = выводами ,
- case = p ,
+ variant = p ,
Name-sg = Выводе ,
name-sg = выводе ,
Name-pl = Выводах ,
@@ -846,7 +846,7 @@ type = corollary ,
type = proposition ,
gender = n ,
- case = n ,
+ variant = n ,
Name-sg = Предложение ,
name-sg = предложение ,
Name-pl = Предложения ,
@@ -855,7 +855,7 @@ type = proposition ,
name-sg-ab = предл. ,
Name-pl-ab = Предл. ,
name-pl-ab = предл. ,
- case = a ,
+ variant = a ,
Name-sg = Предложение ,
name-sg = предложение ,
Name-pl = Предложения ,
@@ -864,7 +864,7 @@ type = proposition ,
name-sg-ab = предл. ,
Name-pl-ab = Предл. ,
name-pl-ab = предл. ,
- case = g ,
+ variant = g ,
Name-sg = Предложения ,
name-sg = предложения ,
Name-pl = Предложений ,
@@ -873,7 +873,7 @@ type = proposition ,
name-sg-ab = предл. ,
Name-pl-ab = Предл. ,
name-pl-ab = предл. ,
- case = d ,
+ variant = d ,
Name-sg = Предложению ,
name-sg = предложению ,
Name-pl = Предложениям ,
@@ -882,7 +882,7 @@ type = proposition ,
name-sg-ab = предл. ,
Name-pl-ab = Предл. ,
name-pl-ab = предл. ,
- case = i ,
+ variant = i ,
Name-sg = Предложением ,
name-sg = предложением ,
Name-pl = Предложениями ,
@@ -891,7 +891,7 @@ type = proposition ,
name-sg-ab = предл. ,
Name-pl-ab = Предл. ,
name-pl-ab = предл. ,
- case = p ,
+ variant = p ,
Name-sg = Предложении ,
name-sg = предложении ,
Name-pl = Предложениях ,
@@ -903,7 +903,7 @@ type = proposition ,
type = definition ,
gender = n ,
- case = n ,
+ variant = n ,
Name-sg = Определение ,
name-sg = определение ,
Name-pl = Определения ,
@@ -912,7 +912,7 @@ type = definition ,
name-sg-ab = опр. ,
Name-pl-ab = Опр. ,
name-pl-ab = опр. ,
- case = a ,
+ variant = a ,
Name-sg = Определение ,
name-sg = определение ,
Name-pl = Определения ,
@@ -921,7 +921,7 @@ type = definition ,
name-sg-ab = опр. ,
Name-pl-ab = Опр. ,
name-pl-ab = опр. ,
- case = g ,
+ variant = g ,
Name-sg = Определения ,
name-sg = определения ,
Name-pl = Определений ,
@@ -930,7 +930,7 @@ type = definition ,
name-sg-ab = опр. ,
Name-pl-ab = Опр. ,
name-pl-ab = опр. ,
- case = d ,
+ variant = d ,
Name-sg = Определению ,
name-sg = определению ,
Name-pl = Определениям ,
@@ -939,7 +939,7 @@ type = definition ,
name-sg-ab = опр. ,
Name-pl-ab = Опр. ,
name-pl-ab = опр. ,
- case = i ,
+ variant = i ,
Name-sg = Определением ,
name-sg = определением ,
Name-pl = Определениями ,
@@ -948,7 +948,7 @@ type = definition ,
name-sg-ab = опр. ,
Name-pl-ab = Опр. ,
name-pl-ab = опр. ,
- case = p ,
+ variant = p ,
Name-sg = Определении ,
name-sg = определении ,
Name-pl = Определениях ,
@@ -960,32 +960,32 @@ type = definition ,
type = proof ,
gender = n ,
- case = n ,
+ variant = n ,
Name-sg = Доказательство ,
name-sg = доказательство ,
Name-pl = Доказательства ,
name-pl = доказательства ,
- case = a ,
+ variant = a ,
Name-sg = Доказательство ,
name-sg = доказательство ,
Name-pl = Доказательства ,
name-pl = доказательства ,
- case = g ,
+ variant = g ,
Name-sg = Доказательства ,
name-sg = доказательства ,
Name-pl = Доказательств ,
name-pl = доказательств ,
- case = d ,
+ variant = d ,
Name-sg = Доказательству ,
name-sg = доказательству ,
Name-pl = Доказательствам ,
name-pl = доказательствам ,
- case = i ,
+ variant = i ,
Name-sg = Доказательством ,
name-sg = доказательством ,
Name-pl = Доказательствами ,
name-pl = доказательствами ,
- case = p ,
+ variant = p ,
Name-sg = Доказательстве ,
name-sg = доказательстве ,
Name-pl = Доказательствах ,
@@ -993,32 +993,32 @@ type = proof ,
type = result ,
gender = m ,
- case = n ,
+ variant = n ,
Name-sg = Результат ,
name-sg = результат ,
Name-pl = Результаты ,
name-pl = результаты ,
- case = a ,
+ variant = a ,
Name-sg = Результат ,
name-sg = результат ,
Name-pl = Результаты ,
name-pl = результаты ,
- case = g ,
+ variant = g ,
Name-sg = Результата ,
name-sg = результата ,
Name-pl = Результатов ,
name-pl = результатов ,
- case = d ,
+ variant = d ,
Name-sg = Результату ,
name-sg = результату ,
Name-pl = Результатам ,
name-pl = результатам ,
- case = i ,
+ variant = i ,
Name-sg = Результатом ,
name-sg = результатом ,
Name-pl = Результатами ,
name-pl = результатами ,
- case = p ,
+ variant = p ,
Name-sg = Результате ,
name-sg = результате ,
Name-pl = Результатах ,
@@ -1026,7 +1026,7 @@ type = result ,
type = remark ,
gender = n ,
- case = n ,
+ variant = n ,
Name-sg = Примечание ,
name-sg = примечание ,
Name-pl = Примечания ,
@@ -1035,7 +1035,7 @@ type = remark ,
name-sg-ab = прим. ,
Name-pl-ab = Прим. ,
name-pl-ab = прим. ,
- case = a ,
+ variant = a ,
Name-sg = Примечание ,
name-sg = примечание ,
Name-pl = Примечания ,
@@ -1044,7 +1044,7 @@ type = remark ,
name-sg-ab = прим. ,
Name-pl-ab = Прим. ,
name-pl-ab = прим. ,
- case = g ,
+ variant = g ,
Name-sg = Примечания ,
name-sg = примечания ,
Name-pl = Примечаний ,
@@ -1053,7 +1053,7 @@ type = remark ,
name-sg-ab = прим. ,
Name-pl-ab = Прим. ,
name-pl-ab = прим. ,
- case = d ,
+ variant = d ,
Name-sg = Примечанию ,
name-sg = примечанию ,
Name-pl = Примечаниям ,
@@ -1062,7 +1062,7 @@ type = remark ,
name-sg-ab = прим. ,
Name-pl-ab = Прим. ,
name-pl-ab = прим. ,
- case = i ,
+ variant = i ,
Name-sg = Примечанием ,
name-sg = примечанием ,
Name-pl = Примечаниями ,
@@ -1071,7 +1071,7 @@ type = remark ,
name-sg-ab = прим. ,
Name-pl-ab = Прим. ,
name-pl-ab = прим. ,
- case = p ,
+ variant = p ,
Name-sg = Примечании ,
name-sg = примечании ,
Name-pl = Примечаниях ,
@@ -1083,32 +1083,32 @@ type = remark ,
type = example ,
gender = m ,
- case = n ,
+ variant = n ,
Name-sg = Пример ,
name-sg = пример ,
Name-pl = Примеры ,
name-pl = примеры ,
- case = a ,
+ variant = a ,
Name-sg = Пример ,
name-sg = пример ,
Name-pl = Примеры ,
name-pl = примеры ,
- case = g ,
+ variant = g ,
Name-sg = Примера ,
name-sg = примера ,
Name-pl = Примеров ,
name-pl = примеров ,
- case = d ,
+ variant = d ,
Name-sg = Примеру ,
name-sg = примеру ,
Name-pl = Примерам ,
name-pl = примерам ,
- case = i ,
+ variant = i ,
Name-sg = Примером ,
name-sg = примером ,
Name-pl = Примерами ,
name-pl = примерами ,
- case = p ,
+ variant = p ,
Name-sg = Примере ,
name-sg = примере ,
Name-pl = Примерах ,
@@ -1116,32 +1116,32 @@ type = example ,
type = algorithm ,
gender = m ,
- case = n ,
+ variant = n ,
Name-sg = Алгоритм ,
name-sg = алгоритм ,
Name-pl = Алгоритмы ,
name-pl = алгоритмы ,
- case = a ,
+ variant = a ,
Name-sg = Алгоритм ,
name-sg = алгоритм ,
Name-pl = Алгоритмы ,
name-pl = алгоритмы ,
- case = g ,
+ variant = g ,
Name-sg = Алгоритма ,
name-sg = алгоритма ,
Name-pl = Алгоритмов ,
name-pl = алгоритмов ,
- case = d ,
+ variant = d ,
Name-sg = Алгоритму ,
name-sg = алгоритму ,
Name-pl = Алгоритмам ,
name-pl = алгоритмам ,
- case = i ,
+ variant = i ,
Name-sg = Алгоритмом ,
name-sg = алгоритмом ,
Name-pl = Алгоритмами ,
name-pl = алгоритмами ,
- case = p ,
+ variant = p ,
Name-sg = Алгоритме ,
name-sg = алгоритме ,
Name-pl = Алгоритмах ,
@@ -1149,32 +1149,32 @@ type = algorithm ,
type = listing ,
gender = m ,
- case = n ,
+ variant = n ,
Name-sg = Листинг ,
name-sg = листинг ,
Name-pl = Листинги ,
name-pl = листинги ,
- case = a ,
+ variant = a ,
Name-sg = Листинг ,
name-sg = листинг ,
Name-pl = Листинги ,
name-pl = листинги ,
- case = g ,
+ variant = g ,
Name-sg = Листинга ,
name-sg = листинга ,
Name-pl = Листингов ,
name-pl = листингов ,
- case = d ,
+ variant = d ,
Name-sg = Листингу ,
name-sg = листингу ,
Name-pl = Листингам ,
name-pl = листингам ,
- case = i ,
+ variant = i ,
Name-sg = Листингом ,
name-sg = листинглм ,
Name-pl = Листингами ,
name-pl = листингами ,
- case = p ,
+ variant = p ,
Name-sg = Листинге ,
name-sg = листинге ,
Name-pl = Листингах ,
@@ -1182,7 +1182,7 @@ type = listing ,
type = exercise ,
gender = n ,
- case = n ,
+ variant = n ,
Name-sg = Упражнение ,
name-sg = упражнение ,
Name-pl = Упражнения ,
@@ -1191,7 +1191,7 @@ type = exercise ,
name-sg-ab = упр. ,
Name-pl-ab = Упр. ,
name-pl-ab = упр. ,
- case = a ,
+ variant = a ,
Name-sg = Упражнение ,
name-sg = упражнение ,
Name-pl = Упражнения ,
@@ -1200,7 +1200,7 @@ type = exercise ,
name-sg-ab = упр. ,
Name-pl-ab = Упр. ,
name-pl-ab = упр. ,
- case = g ,
+ variant = g ,
Name-sg = Упражнения ,
name-sg = упражнения ,
Name-pl = Упражнений ,
@@ -1209,7 +1209,7 @@ type = exercise ,
name-sg-ab = упр. ,
Name-pl-ab = Упр. ,
name-pl-ab = упр. ,
- case = d ,
+ variant = d ,
Name-sg = Упражнению ,
name-sg = упражнению ,
Name-pl = Упражнениям ,
@@ -1218,7 +1218,7 @@ type = exercise ,
name-sg-ab = упр. ,
Name-pl-ab = Упр. ,
name-pl-ab = упр. ,
- case = i ,
+ variant = i ,
Name-sg = Упражнением ,
name-sg = упражнением ,
Name-pl = Упражнениями ,
@@ -1227,7 +1227,7 @@ type = exercise ,
name-sg-ab = упр. ,
Name-pl-ab = Упр. ,
name-pl-ab = упр. ,
- case = p ,
+ variant = p ,
Name-sg = Упражнении ,
name-sg = упражнении ,
Name-pl = Упражнениях ,
@@ -1239,32 +1239,32 @@ type = exercise ,
type = solution ,
gender = n ,
- case = n ,
+ variant = n ,
Name-sg = Решение ,
name-sg = решение ,
Name-pl = Решения ,
name-pl = решения ,
- case = a ,
+ variant = a ,
Name-sg = Решение ,
name-sg = решение ,
Name-pl = Решения ,
name-pl = решения ,
- case = g ,
+ variant = g ,
Name-sg = Решения ,
name-sg = решения ,
Name-pl = Решений ,
name-pl = решений ,
- case = d ,
+ variant = d ,
Name-sg = Решению ,
name-sg = решению ,
Name-pl = Решениям ,
name-pl = решениям ,
- case = i ,
+ variant = i ,
Name-sg = Решением ,
name-sg = решением ,
Name-pl = Решениями ,
name-pl = решениями ,
- case = p ,
+ variant = p ,
Name-sg = Решении ,
name-sg = решении ,
Name-pl = Решениях ,
diff --git a/Master/texmf-dist/tex/latex/zref-clever/zref-clever-swedish.lang b/Master/texmf-dist/tex/latex/zref-clever/zref-clever-swedish.lang
new file mode 100644
index 00000000000..cc27fa53af4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/zref-clever/zref-clever-swedish.lang
@@ -0,0 +1,238 @@
+%%
+%% This is file `zref-clever-swedish.lang',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zref-clever.dtx (with options: `lang-swedish')
+%%
+%% This file was generated from file(s) of the LaTeX package "zref-clever".
+%%
+%% Copyright (C) 2021-2024 gusbrs
+%%
+%% It may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License (LPPL), either version 1.3c of this
+%% license or (at your option) any later version. The latest version
+%% of this license is in the file:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%%
+%% This work is "maintained" (as per LPPL maintenance status) by gusbrs.
+%%
+%% This work consists of the files zref-clever.dtx,
+%% zref-clever.ins,
+%% zref-clever-doc.tex,
+%% zref-clever-code.tex,
+%% and the files generated from them.
+%%
+%% The released version of this package is available from CTAN.
+%%
+%% -----------------------------------------------------------------------
+%%
+%% The development version of the package can be found at
+%%
+%% https://github.com/gusbrs/zref-clever
+%%
+%% for those people who are interested.
+%%
+%% -----------------------------------------------------------------------
+%%
+namesep = {\nobreakspace} ,
+pairsep = {~och\nobreakspace} ,
+listsep = {,~} ,
+lastsep = {~och\nobreakspace} ,
+tpairsep = {~och\nobreakspace} ,
+tlistsep = {,~} ,
+tlastsep = {~och\nobreakspace} ,
+notesep = {~} ,
+rangesep = {\textendash} ,
+rangetopair = false ,
+
+type = book ,
+ Name-sg = Bok ,
+ name-sg = bok ,
+ Name-pl = Bok ,
+ name-pl = bok ,
+
+type = part ,
+ Name-sg = Del ,
+ name-sg = del ,
+ Name-pl = Del ,
+ name-pl = del ,
+
+type = chapter ,
+ Name-sg = Kapitel ,
+ name-sg = kapitel ,
+ Name-pl = Kapitel ,
+ name-pl = kapitel ,
+
+type = section ,
+ Name-sg = Avsnitt ,
+ name-sg = avsnitt ,
+ Name-pl = Avsnitt ,
+ name-pl = avsnitt ,
+
+type = paragraph ,
+ Name-sg = Paragraf ,
+ name-sg = paragraf ,
+ Name-pl = Paragraf ,
+ name-pl = paragraf ,
+
+type = appendix ,
+ Name-sg = Bilaga ,
+ name-sg = bilaga ,
+ Name-pl = Bilaga ,
+ name-pl = bilaga ,
+
+type = page ,
+ Name-sg = Sida ,
+ name-sg = sida ,
+ Name-pl = Sida ,
+ name-pl = sida ,
+
+type = line ,
+ Name-sg = Rad ,
+ name-sg = rad ,
+ Name-pl = Rad ,
+ name-pl = rad ,
+
+type = figure ,
+ Name-sg = Figur ,
+ name-sg = figur ,
+ Name-pl = Figur ,
+ name-pl = figur ,
+ Name-sg-ab = Fig. ,
+ name-sg-ab = fig. ,
+ Name-pl-ab = Fig. ,
+ name-pl-ab = fig. ,
+
+type = table ,
+ Name-sg = Tabell ,
+ name-sg = tabell ,
+ Name-pl = Tabell ,
+ name-pl = tabell ,
+ Name-sg-ab = Tab. ,
+ name-sg-ab = tab. ,
+ Name-pl-ab = Tab. ,
+ name-pl-ab = tab. ,
+
+type = item ,
+ Name-sg = Punkt ,
+ name-sg = punkt ,
+ Name-pl = Punkt ,
+ name-pl = punkt ,
+
+type = footnote ,
+ Name-sg = Fotnot ,
+ name-sg = fotnot ,
+ Name-pl = Fotnot ,
+ name-pl = fotnot ,
+
+type = endnote ,
+ Name-sg = Slutnot ,
+ name-sg = slutnot ,
+ Name-pl = Slutnot ,
+ name-pl = slutnot ,
+
+type = note ,
+ Name-sg = Not ,
+ name-sg = not ,
+ Name-pl = Not ,
+ name-pl = not ,
+
+type = equation ,
+ Name-sg = Ekvation ,
+ name-sg = ekvation ,
+ Name-pl = Ekvation ,
+ name-pl = ekvation ,
+ Name-sg-ab = Ekv. ,
+ name-sg-ab = ekv. ,
+ Name-pl-ab = Ekv. ,
+ name-pl-ab = ekv. ,
+ refbounds-first-sg = {,(,),} ,
+ refbounds = {(,,,)} ,
+
+type = theorem ,
+ Name-sg = Sats ,
+ name-sg = sats ,
+ Name-pl = Sats ,
+ name-pl = sats ,
+
+type = lemma ,
+ Name-sg = Hjälpsats ,
+ name-sg = hjälpsats ,
+ Name-pl = Hjälpsats ,
+ name-pl = hjälpsats ,
+
+type = corollary ,
+ Name-sg = Följdsats ,
+ name-sg = följdsats ,
+ Name-pl = Följdsats ,
+ name-pl = följdsats ,
+
+type = proposition ,
+ Name-sg = Påstående ,
+ name-sg = påstående ,
+ Name-pl = Påstående ,
+ name-pl = påstående ,
+
+type = definition ,
+ Name-sg = Definition ,
+ name-sg = definition ,
+ Name-pl = Definition ,
+ name-pl = definition ,
+
+type = proof ,
+ Name-sg = Bevis ,
+ name-sg = bevis ,
+ Name-pl = Bevis ,
+ name-pl = bevis ,
+
+type = result ,
+ Name-sg = Resultat ,
+ name-sg = resultat ,
+ Name-pl = Resultat ,
+ name-pl = resultat ,
+
+type = remark ,
+ Name-sg = Anmärkning ,
+ name-sg = anmärkning ,
+ Name-pl = Anmärkning ,
+ name-pl = anmärkning ,
+
+type = example ,
+ Name-sg = Exempel ,
+ name-sg = exempel ,
+ Name-pl = Exempel ,
+ name-pl = exempel ,
+
+type = algorithm ,
+ Name-sg = Algoritm ,
+ name-sg = algoritm ,
+ Name-pl = Algoritm ,
+ name-pl = algoritm ,
+
+type = listing ,
+ Name-sg = Kod ,
+ name-sg = kod ,
+ Name-pl = Kod ,
+ name-pl = kod ,
+
+type = exercise ,
+ Name-sg = Uppgift ,
+ name-sg = uppgift ,
+ Name-pl = Uppgift ,
+ name-pl = uppgift ,
+
+type = solution ,
+ Name-sg = Lösning ,
+ name-sg = lösning ,
+ Name-pl = Lösning ,
+ name-pl = lösning ,
+%%
+%%
+%% End of file `zref-clever-swedish.lang'.
diff --git a/Master/texmf-dist/tex/latex/zref-clever/zref-clever.sty b/Master/texmf-dist/tex/latex/zref-clever/zref-clever.sty
index 03bab0e35d0..9ecf5ceec62 100644
--- a/Master/texmf-dist/tex/latex/zref-clever/zref-clever.sty
+++ b/Master/texmf-dist/tex/latex/zref-clever/zref-clever.sty
@@ -52,7 +52,7 @@
'zref-clever' requires a LaTeX kernel \zrefclever@required@kernel\space or newer.%
}%
}%
-\ProvidesExplPackage {zref-clever} {2024-08-23} {0.4.6}
+\ProvidesExplPackage {zref-clever} {2024-11-28} {0.5.1}
{Clever LaTeX cross-references based on zref}
\RequirePackage { zref-base }
\RequirePackage { zref-user }
@@ -151,7 +151,7 @@
\zref@newprop { zc@enclval }
{
\__zrefclever_get_enclosing_counters_value:e
- \l__zrefclever_current_counter_tl
+ { \l__zrefclever_current_counter_tl }
}
\zref@addprop \ZREF@mainlist { zc@enclval }
\zref@newprop { zc@enclcnt }
@@ -211,31 +211,31 @@
See~documentation~for~'\iow_char:N\\zcDeclareLanguage'~and~
'\iow_char:N\\zcDeclareLanguageAlias'.
}
-\msg_new:nnn { zref-clever } { unknown-language-decl }
+\msg_new:nnn { zref-clever } { unknown-language-variant }
{
- Can't~set~declension~'#1'~for~unknown~language~'#2'~\msg_line_context:.~
+ Can't~set~variant~'#1'~for~unknown~language~'#2'~\msg_line_context:.~
See~documentation~for~'\iow_char:N\\zcDeclareLanguage'~and~
'\iow_char:N\\zcDeclareLanguageAlias'.
}
-\msg_new:nnn { zref-clever } { language-no-decl-ref }
+\msg_new:nnn { zref-clever } { language-no-variants-ref }
{
- Language~'#1'~has~no~declared~declension~cases~\msg_line_context:.~
- Nothing~to~do~with~option~'d=#2'.
+ Language~'#1'~has~no~declared~variants~\msg_line_context:.~
+ Nothing~to~do~with~option~'v=#2'.
}
\msg_new:nnn { zref-clever } { language-no-gender }
{
Language~'#1'~has~no~declared~gender~\msg_line_context:.~
Nothing~to~do~with~option~'#2=#3'.
}
-\msg_new:nnn { zref-clever } { language-no-decl-setup }
+\msg_new:nnn { zref-clever } { language-no-variants-setup }
{
- Language~'#1'~has~no~declared~declension~cases~\msg_line_context:.~
- Nothing~to~do~with~option~'case=#2'.
+ Language~'#1'~has~no~declared~variants~\msg_line_context:.~
+ Nothing~to~do~with~option~'variant=#2'.
}
-\msg_new:nnn { zref-clever } { unknown-decl-case }
+\msg_new:nnn { zref-clever } { unknown-variant }
{
- Declension~case~'#1'~unknown~for~language~'#2'~\msg_line_context:.~
- Using~default~declension~case.
+ Variant~'#1'~unknown~for~language~'#2'~\msg_line_context:.~
+ Using~default~variant.
}
\msg_new:nnn { zref-clever } { nudge-multitype }
{
@@ -428,7 +428,7 @@
{
\tl_if_exist:NT #1
{
- \tl_clear:N #1 % ?
+ \tl_clear:N #1
\bool_if_exist:cTF { \__zrefclever_opt_var_set_bool:n {#1} }
{ \bool_set_false:c { \__zrefclever_opt_var_set_bool:n {#1} } }
{ \bool_new:c { \__zrefclever_opt_var_set_bool:n {#1} } }
@@ -505,7 +505,7 @@
{
\seq_if_exist:NT #1
{
- \seq_clear:N #1 % ?
+ \seq_clear:N #1
\bool_if_exist:cTF { \__zrefclever_opt_var_set_bool:n {#1} }
{ \bool_set_false:c { \__zrefclever_opt_var_set_bool:n {#1} } }
{ \bool_new:c { \__zrefclever_opt_var_set_bool:n {#1} } }
@@ -543,7 +543,7 @@
{
\bool_if_exist:NT #1
{
- % \bool_set_false:N #1 % ?
+ % \bool_set_false:N #1
\bool_if_exist:cTF { \__zrefclever_opt_var_set_bool:n {#1} }
{ \bool_set_false:c { \__zrefclever_opt_var_set_bool:n {#1} } }
{ \bool_new:c { \__zrefclever_opt_var_set_bool:n {#1} } }
@@ -621,8 +621,8 @@
\__zrefclever_opt_bool_if:N { c } { T , F , TF }
\tl_new:N \l__zrefclever_setup_type_tl
\tl_new:N \l__zrefclever_setup_language_tl
-\tl_new:N \l__zrefclever_lang_decl_case_tl
-\seq_new:N \l__zrefclever_lang_declension_seq
+\tl_new:N \l__zrefclever_lang_variant_tl
+\seq_new:N \l__zrefclever_lang_variants_seq
\seq_new:N \l__zrefclever_lang_gender_seq
\seq_new:N \g__zrefclever_rf_opts_tl_not_type_specific_seq
\seq_gset_from_clist:Nn
@@ -783,8 +783,8 @@
\prg_new_conditional:Npnn \__zrefclever_language_if_declared:n #1 { T , F , TF }
{
\tl_if_exist:cTF { \__zrefclever_language_varname:n {#1} }
- { \prg_return_true: }
- { \prg_return_false: }
+ { \prg_return_true: }
+ { \prg_return_false: }
}
\prg_generate_conditional_variant:Nnn
\__zrefclever_language_if_declared:n { e } { T , F , TF }
@@ -793,17 +793,17 @@
\NewDocumentCommand \zcDeclareLanguage { O { } m }
{
\group_begin:
- \tl_if_empty:nF {#2}
- {
- \__zrefclever_language_if_declared:nTF {#2}
- { \msg_warning:nnn { zref-clever } { language-declared } {#2} }
- {
- \tl_new:c { \__zrefclever_language_varname:n {#2} }
- \tl_gset:cn { \__zrefclever_language_varname:n {#2} } {#2}
- \tl_set:Nn \l__zrefclever_setup_language_tl {#2}
- \keys_set:nn { zref-clever/declarelang } {#1}
- }
- }
+ \tl_if_empty:nF {#2}
+ {
+ \__zrefclever_language_if_declared:nTF {#2}
+ { \msg_warning:nnn { zref-clever } { language-declared } {#2} }
+ {
+ \tl_new:c { \__zrefclever_language_varname:n {#2} }
+ \tl_gset:cn { \__zrefclever_language_varname:n {#2} } {#2}
+ \tl_set:Nn \l__zrefclever_setup_language_tl {#2}
+ \keys_set:nn { zref-clever/declarelang } {#1}
+ }
+ }
\group_end:
}
\@onlypreamble \zcDeclareLanguage
@@ -823,21 +823,23 @@
\@onlypreamble \zcDeclareLanguageAlias
\keys_define:nn { zref-clever/declarelang }
{
- declension .code:n =
+ variants .code:n =
{
\seq_new:c
{
\__zrefclever_opt_varname_language:enn
- { \l__zrefclever_setup_language_tl } { declension } { seq }
+ { \l__zrefclever_setup_language_tl } { variants } { seq }
}
\seq_gset_from_clist:cn
{
\__zrefclever_opt_varname_language:enn
- { \l__zrefclever_setup_language_tl } { declension } { seq }
+ { \l__zrefclever_setup_language_tl } { variants } { seq }
}
{#1}
} ,
- declension .value_required:n = true ,
+ variants .value_required:n = true ,
+ % NOTE Option deprecated in 2024-11-24 for v0.5.0.
+ declension .meta:n = { variants = {#1} } ,
gender .code:n =
{
\seq_new:c
@@ -877,37 +879,37 @@
\__zrefclever_opt_seq_get:cNF
{
\__zrefclever_opt_varname_language:enn
- { \l__zrefclever_ref_language_tl } { declension } { seq }
+ { \l__zrefclever_ref_language_tl } { variants } { seq }
}
- \l__zrefclever_lang_declension_seq
- { \seq_clear:N \l__zrefclever_lang_declension_seq }
- \seq_if_empty:NTF \l__zrefclever_lang_declension_seq
+ \l__zrefclever_lang_variants_seq
+ { \seq_clear:N \l__zrefclever_lang_variants_seq }
+ \seq_if_empty:NTF \l__zrefclever_lang_variants_seq
{
- \tl_if_empty:NF \l__zrefclever_ref_decl_case_tl
+ \tl_if_empty:NF \l__zrefclever_ref_variant_tl
{
\msg_warning:nnee { zref-clever }
- { language-no-decl-ref }
+ { language-no-variants-ref }
{ \l__zrefclever_ref_language_tl }
- { \l__zrefclever_ref_decl_case_tl }
- \tl_clear:N \l__zrefclever_ref_decl_case_tl
+ { \l__zrefclever_ref_variant_tl }
+ \tl_clear:N \l__zrefclever_ref_variant_tl
}
}
{
- \tl_if_empty:NTF \l__zrefclever_ref_decl_case_tl
+ \tl_if_empty:NTF \l__zrefclever_ref_variant_tl
{
- \seq_get_left:NN \l__zrefclever_lang_declension_seq
- \l__zrefclever_ref_decl_case_tl
+ \seq_get_left:NN \l__zrefclever_lang_variants_seq
+ \l__zrefclever_ref_variant_tl
}
{
- \seq_if_in:NVF \l__zrefclever_lang_declension_seq
- \l__zrefclever_ref_decl_case_tl
+ \seq_if_in:NVF \l__zrefclever_lang_variants_seq
+ \l__zrefclever_ref_variant_tl
{
\msg_warning:nnee { zref-clever }
- { unknown-decl-case }
- { \l__zrefclever_ref_decl_case_tl }
+ { unknown-variant }
+ { \l__zrefclever_ref_variant_tl }
{ \l__zrefclever_ref_language_tl }
- \seq_get_left:NN \l__zrefclever_lang_declension_seq
- \l__zrefclever_ref_decl_case_tl
+ \seq_get_left:NN \l__zrefclever_lang_variants_seq
+ \l__zrefclever_ref_variant_tl
}
}
}
@@ -952,12 +954,12 @@
{ \keys_set:nn { zref-clever/reference } { cap = true } }
}
{
- \tl_if_empty:NF \l__zrefclever_ref_decl_case_tl
+ \tl_if_empty:NF \l__zrefclever_ref_variant_tl
{
- \msg_warning:nnee { zref-clever } { unknown-language-decl }
- { \l__zrefclever_ref_decl_case_tl }
+ \msg_warning:nnee { zref-clever } { unknown-language-variant }
+ { \l__zrefclever_ref_variant_tl }
{ \l__zrefclever_ref_language_tl }
- \tl_clear:N \l__zrefclever_ref_decl_case_tl
+ \tl_clear:N \l__zrefclever_ref_variant_tl
}
\tl_if_empty:NF \l__zrefclever_ref_gender_tl
{
@@ -974,57 +976,57 @@
\cs_new_protected:Npn \__zrefclever_provide_langfile:n #1
{
\group_begin:
- \@bsphack
- \__zrefclever_language_if_declared:nT {#1}
- {
- \seq_if_in:NeF
- \g__zrefclever_loaded_langfiles_seq
- { \tl_use:c { \__zrefclever_language_varname:n {#1} } }
- {
- \exp_args:Ne \file_get:nnNTF
- {
- zref-clever-
- \tl_use:c { \__zrefclever_language_varname:n {#1} }
- .lang
- }
- { \ExplSyntaxOn }
- \l__zrefclever_tmpa_tl
- {
- \tl_set:Nn \l__zrefclever_setup_language_tl {#1}
- \tl_clear:N \l__zrefclever_setup_type_tl
- \__zrefclever_opt_seq_get:cNF
- {
- \__zrefclever_opt_varname_language:nnn
- {#1} { declension } { seq }
- }
- \l__zrefclever_lang_declension_seq
- { \seq_clear:N \l__zrefclever_lang_declension_seq }
- \seq_if_empty:NTF \l__zrefclever_lang_declension_seq
- { \tl_clear:N \l__zrefclever_lang_decl_case_tl }
- {
- \seq_get_left:NN \l__zrefclever_lang_declension_seq
- \l__zrefclever_lang_decl_case_tl
- }
- \__zrefclever_opt_seq_get:cNF
- {
- \__zrefclever_opt_varname_language:nnn
- {#1} { gender } { seq }
- }
- \l__zrefclever_lang_gender_seq
- { \seq_clear:N \l__zrefclever_lang_gender_seq }
- \keys_set:nV { zref-clever/langfile } \l__zrefclever_tmpa_tl
- \seq_gput_right:Ne \g__zrefclever_loaded_langfiles_seq
- { \tl_use:c { \__zrefclever_language_varname:n {#1} } }
- \msg_info:nne { zref-clever } { langfile-loaded }
- { \tl_use:c { \__zrefclever_language_varname:n {#1} } }
- }
- {
- \seq_gput_right:Ne \g__zrefclever_loaded_langfiles_seq
- { \tl_use:c { \__zrefclever_language_varname:n {#1} } }
- }
- }
- }
- \@esphack
+ \@bsphack
+ \__zrefclever_language_if_declared:nT {#1}
+ {
+ \seq_if_in:NeF
+ \g__zrefclever_loaded_langfiles_seq
+ { \tl_use:c { \__zrefclever_language_varname:n {#1} } }
+ {
+ \exp_args:Ne \file_get:nnNTF
+ {
+ zref-clever-
+ \tl_use:c { \__zrefclever_language_varname:n {#1} }
+ .lang
+ }
+ { \ExplSyntaxOn }
+ \l__zrefclever_tmpa_tl
+ {
+ \tl_set:Nn \l__zrefclever_setup_language_tl {#1}
+ \tl_clear:N \l__zrefclever_setup_type_tl
+ \__zrefclever_opt_seq_get:cNF
+ {
+ \__zrefclever_opt_varname_language:nnn
+ {#1} { variants } { seq }
+ }
+ \l__zrefclever_lang_variants_seq
+ { \seq_clear:N \l__zrefclever_lang_variants_seq }
+ \seq_if_empty:NTF \l__zrefclever_lang_variants_seq
+ { \tl_clear:N \l__zrefclever_lang_variant_tl }
+ {
+ \seq_get_left:NN \l__zrefclever_lang_variants_seq
+ \l__zrefclever_lang_variant_tl
+ }
+ \__zrefclever_opt_seq_get:cNF
+ {
+ \__zrefclever_opt_varname_language:nnn
+ {#1} { gender } { seq }
+ }
+ \l__zrefclever_lang_gender_seq
+ { \seq_clear:N \l__zrefclever_lang_gender_seq }
+ \keys_set:nV { zref-clever/langfile } \l__zrefclever_tmpa_tl
+ \seq_gput_right:Ne \g__zrefclever_loaded_langfiles_seq
+ { \tl_use:c { \__zrefclever_language_varname:n {#1} } }
+ \msg_info:nne { zref-clever } { langfile-loaded }
+ { \tl_use:c { \__zrefclever_language_varname:n {#1} } }
+ }
+ {
+ \seq_gput_right:Ne \g__zrefclever_loaded_langfiles_seq
+ { \tl_use:c { \__zrefclever_language_varname:n {#1} } }
+ }
+ }
+ }
+ \@esphack
\group_end:
}
\cs_generate_variant:Nn \__zrefclever_provide_langfile:n { e }
@@ -1036,27 +1038,25 @@
{ \tl_clear:N \l__zrefclever_setup_type_tl }
{ \tl_set:Nn \l__zrefclever_setup_type_tl {#1} }
} ,
-
- case .code:n =
+ variant .code:n =
{
- \seq_if_empty:NTF \l__zrefclever_lang_declension_seq
+ \seq_if_empty:NTF \l__zrefclever_lang_variants_seq
{
- \msg_info:nnee { zref-clever } { language-no-decl-setup }
+ \msg_info:nnee { zref-clever } { language-no-variants-setup }
{ \l__zrefclever_setup_language_tl } {#1}
}
{
- \seq_if_in:NnTF \l__zrefclever_lang_declension_seq {#1}
- { \tl_set:Nn \l__zrefclever_lang_decl_case_tl {#1} }
+ \seq_if_in:NnTF \l__zrefclever_lang_variants_seq {#1}
+ { \tl_set:Nn \l__zrefclever_lang_variant_tl {#1} }
{
- \msg_info:nnee { zref-clever } { unknown-decl-case }
+ \msg_info:nnee { zref-clever } { unknown-variant }
{#1} { \l__zrefclever_setup_language_tl }
- \seq_get_left:NN \l__zrefclever_lang_declension_seq
- \l__zrefclever_lang_decl_case_tl
+ \seq_get_left:NN \l__zrefclever_lang_variants_seq
+ \l__zrefclever_lang_variant_tl
}
}
} ,
- case .value_required:n = true ,
-
+ variant .value_required:n = true ,
gender .value_required:n = true ,
gender .code:n =
{
@@ -1211,7 +1211,6 @@
}
}
}
-
{ stripprefix }
{
\tl_if_empty:NTF \l__zrefclever_setup_type_tl
@@ -1248,7 +1247,6 @@
}
}
}
-
{ pagecomp }
{
\tl_if_empty:NTF \l__zrefclever_setup_type_tl
@@ -1285,7 +1283,6 @@
}
}
}
-
{ pagecomp2 }
{
\tl_if_empty:NTF \l__zrefclever_setup_type_tl
@@ -1390,7 +1387,7 @@
{ option-only-type-specific } {#1}
}
{
- \tl_if_empty:NTF \l__zrefclever_lang_decl_case_tl
+ \tl_if_empty:NTF \l__zrefclever_lang_variant_tl
{
\__zrefclever_opt_tl_gset_if_new:cn
{
@@ -1407,7 +1404,7 @@
\__zrefclever_opt_varname_lang_type:eeen
{ \l__zrefclever_setup_language_tl }
{ \l__zrefclever_setup_type_tl }
- { \l__zrefclever_lang_decl_case_tl - #1 } { tl }
+ { \l__zrefclever_lang_variant_tl - #1 } { tl }
}
{##1}
}
@@ -1653,7 +1650,6 @@
} ,
typeset .initial:n = both ,
typeset .value_required:n = true ,
-
noname .meta:n = { typeset = ref } ,
noname .value_forbidden:n = true ,
noref .meta:n = { typeset = name } ,
@@ -1712,7 +1708,6 @@
{ endrangeprop } { tl }
}
}
-
{ stripprefix }
{
\__zrefclever_opt_tl_set:cn
@@ -1727,7 +1722,6 @@
{ endrangeprop } { tl }
}
}
-
{ pagecomp }
{
\__zrefclever_opt_tl_set:cn
@@ -1742,7 +1736,6 @@
{ endrangeprop } { tl }
}
}
-
{ pagecomp2 }
{
\__zrefclever_opt_tl_set:cn
@@ -1757,7 +1750,6 @@
{ endrangeprop } { tl }
}
}
-
{ unset }
{
\__zrefclever_opt_tl_unset:c
@@ -1820,71 +1812,71 @@
\bool_if:NTF \l__zrefclever_typeset_range_bool
{
\group_begin:
- \bool_set_false:N \l__zrefclever_tmpa_bool
- \exp_args:Nee \tl_if_eq:nnT
- {
- \__zrefclever_extract_unexp:nnn
- {#1} { externaldocument } { }
- }
- {
- \__zrefclever_extract_unexp:nnn
- {#2} { externaldocument } { }
- }
- {
- \tl_if_eq:NnTF \l__zrefclever_ref_property_tl { page }
- {
- \exp_args:Nee \tl_if_eq:nnT
- {
- \__zrefclever_extract_unexp:nnn
- {#1} { zc@pgfmt } { }
- }
- {
- \__zrefclever_extract_unexp:nnn
- {#2} { zc@pgfmt } { }
- }
- { \bool_set_true:N \l__zrefclever_tmpa_bool }
- }
- {
- \exp_args:Nee \tl_if_eq:nnT
- {
- \__zrefclever_extract_unexp:nnn
- {#1} { zc@counter } { }
- }
- {
- \__zrefclever_extract_unexp:nnn
- {#2} { zc@counter } { }
- }
- {
- \exp_args:Nee \tl_if_eq:nnT
- {
- \__zrefclever_extract_unexp:nnn
- {#1} { zc@enclval } { }
- }
- {
- \__zrefclever_extract_unexp:nnn
- {#2} { zc@enclval } { }
- }
- { \bool_set_true:N \l__zrefclever_tmpa_bool }
- }
- }
- }
- \bool_if:NTF \l__zrefclever_tmpa_bool
- {
- \__zrefclever_extract_default:Nnvn \l__zrefclever_tmpb_tl
- {#2} { l__zrefclever_endrangeprop_tl } { }
- }
- {
- \zref@ifrefcontainsprop
- {#2} { \l__zrefclever_ref_property_tl }
- {
- \__zrefclever_extract_default:Nnvn \l__zrefclever_tmpb_tl
- {#2} { l__zrefclever_ref_property_tl } { }
- }
- { \tl_set:Nn \l__zrefclever_tmpb_tl { zc@missingproperty } }
- }
- \exp_args:NNNV
- \group_end:
- \tl_set:Nn #3 \l__zrefclever_tmpb_tl
+ \bool_set_false:N \l__zrefclever_tmpa_bool
+ \exp_args:Nee \tl_if_eq:nnT
+ {
+ \__zrefclever_extract_unexp:nnn
+ {#1} { externaldocument } { }
+ }
+ {
+ \__zrefclever_extract_unexp:nnn
+ {#2} { externaldocument } { }
+ }
+ {
+ \tl_if_eq:NnTF \l__zrefclever_ref_property_tl { page }
+ {
+ \exp_args:Nee \tl_if_eq:nnT
+ {
+ \__zrefclever_extract_unexp:nnn
+ {#1} { zc@pgfmt } { }
+ }
+ {
+ \__zrefclever_extract_unexp:nnn
+ {#2} { zc@pgfmt } { }
+ }
+ { \bool_set_true:N \l__zrefclever_tmpa_bool }
+ }
+ {
+ \exp_args:Nee \tl_if_eq:nnT
+ {
+ \__zrefclever_extract_unexp:nnn
+ {#1} { zc@counter } { }
+ }
+ {
+ \__zrefclever_extract_unexp:nnn
+ {#2} { zc@counter } { }
+ }
+ {
+ \exp_args:Nee \tl_if_eq:nnT
+ {
+ \__zrefclever_extract_unexp:nnn
+ {#1} { zc@enclval } { }
+ }
+ {
+ \__zrefclever_extract_unexp:nnn
+ {#2} { zc@enclval } { }
+ }
+ { \bool_set_true:N \l__zrefclever_tmpa_bool }
+ }
+ }
+ }
+ \bool_if:NTF \l__zrefclever_tmpa_bool
+ {
+ \__zrefclever_extract_default:Nnvn \l__zrefclever_tmpb_tl
+ {#2} { l__zrefclever_endrangeprop_tl } { }
+ }
+ {
+ \zref@ifrefcontainsprop
+ {#2} { \l__zrefclever_ref_property_tl }
+ {
+ \__zrefclever_extract_default:Nnvn \l__zrefclever_tmpb_tl
+ {#2} { l__zrefclever_ref_property_tl } { }
+ }
+ { \tl_set:Nn \l__zrefclever_tmpb_tl { zc@missingproperty } }
+ }
+ \exp_args:NNNV
+ \group_end:
+ \tl_set:Nn #3 \l__zrefclever_tmpb_tl
}
{
\__zrefclever_extract_default:Nnvn #3
@@ -1907,36 +1899,36 @@
\zref@ifrefcontainsprop {#2} { \l__zrefclever_ref_property_tl }
{
\group_begin:
- \UseHook { zref-clever/endrange-setup }
- \tl_set:Ne \l__zrefclever_tmpa_tl
- {
- \__zrefclever_extract:nnn
- {#1} { \l__zrefclever_ref_property_tl } { }
- }
- \tl_set:Ne \l__zrefclever_tmpb_tl
- {
- \__zrefclever_extract:nnn
- {#2} { \l__zrefclever_ref_property_tl } { }
- }
- \bool_set_false:N \l__zrefclever_tmpa_bool
- \bool_until_do:Nn \l__zrefclever_tmpa_bool
- {
- \exp_args:Nee \tl_if_eq:nnTF
- { \tl_head:V \l__zrefclever_tmpa_tl }
- { \tl_head:V \l__zrefclever_tmpb_tl }
- {
- \tl_set:Ne \l__zrefclever_tmpa_tl
- { \tl_tail:V \l__zrefclever_tmpa_tl }
- \tl_set:Ne \l__zrefclever_tmpb_tl
- { \tl_tail:V \l__zrefclever_tmpb_tl }
- \tl_if_empty:NT \l__zrefclever_tmpb_tl
- { \bool_set_true:N \l__zrefclever_tmpa_bool }
- }
- { \bool_set_true:N \l__zrefclever_tmpa_bool }
- }
- \exp_args:NNNV
- \group_end:
- \tl_set:Nn #3 \l__zrefclever_tmpb_tl
+ \UseHook { zref-clever/endrange-setup }
+ \protected@edef \l__zrefclever_tmpa_tl
+ {
+ \__zrefclever_extract:nnn
+ {#1} { \l__zrefclever_ref_property_tl } { }
+ }
+ \protected@edef \l__zrefclever_tmpb_tl
+ {
+ \__zrefclever_extract:nnn
+ {#2} { \l__zrefclever_ref_property_tl } { }
+ }
+ \bool_set_false:N \l__zrefclever_tmpa_bool
+ \bool_until_do:Nn \l__zrefclever_tmpa_bool
+ {
+ \exp_args:Nee \tl_if_eq:nnTF
+ { \tl_head:V \l__zrefclever_tmpa_tl }
+ { \tl_head:V \l__zrefclever_tmpb_tl }
+ {
+ \tl_set:Ne \l__zrefclever_tmpa_tl
+ { \tl_tail:V \l__zrefclever_tmpa_tl }
+ \tl_set:Ne \l__zrefclever_tmpb_tl
+ { \tl_tail:V \l__zrefclever_tmpb_tl }
+ \tl_if_empty:NT \l__zrefclever_tmpb_tl
+ { \bool_set_true:N \l__zrefclever_tmpa_bool }
+ }
+ { \bool_set_true:N \l__zrefclever_tmpa_bool }
+ }
+ \exp_args:NNNV
+ \group_end:
+ \tl_set:Nn #3 \l__zrefclever_tmpb_tl
}
{ \tl_set:Nn #3 { zc@missingproperty } }
}
@@ -1955,42 +1947,42 @@
\zref@ifrefcontainsprop {#2} { \l__zrefclever_ref_property_tl }
{
\group_begin:
- \UseHook { zref-clever/endrange-setup }
- \tl_set:Ne \l__zrefclever_tmpa_tl
- {
- \__zrefclever_extract:nnn
- {#1} { \l__zrefclever_ref_property_tl } { }
- }
- \tl_set:Ne \l__zrefclever_tmpb_tl
- {
- \__zrefclever_extract:nnn
- {#2} { \l__zrefclever_ref_property_tl } { }
- }
- \bool_set_false:N \l__zrefclever_tmpa_bool
- \__zrefclever_is_integer_rgx:VTF \l__zrefclever_tmpa_tl
- {
- \__zrefclever_is_integer_rgx:VF \l__zrefclever_tmpb_tl
- { \bool_set_true:N \l__zrefclever_tmpa_bool }
- }
- { \bool_set_true:N \l__zrefclever_tmpa_bool }
- \bool_until_do:Nn \l__zrefclever_tmpa_bool
- {
- \exp_args:Nee \tl_if_eq:nnTF
- { \tl_head:V \l__zrefclever_tmpa_tl }
- { \tl_head:V \l__zrefclever_tmpb_tl }
- {
- \tl_set:Ne \l__zrefclever_tmpa_tl
- { \tl_tail:V \l__zrefclever_tmpa_tl }
- \tl_set:Ne \l__zrefclever_tmpb_tl
- { \tl_tail:V \l__zrefclever_tmpb_tl }
- \tl_if_empty:NT \l__zrefclever_tmpb_tl
- { \bool_set_true:N \l__zrefclever_tmpa_bool }
- }
- { \bool_set_true:N \l__zrefclever_tmpa_bool }
- }
- \exp_args:NNNV
- \group_end:
- \tl_set:Nn #3 \l__zrefclever_tmpb_tl
+ \UseHook { zref-clever/endrange-setup }
+ \protected@edef \l__zrefclever_tmpa_tl
+ {
+ \__zrefclever_extract:nnn
+ {#1} { \l__zrefclever_ref_property_tl } { }
+ }
+ \protected@edef \l__zrefclever_tmpb_tl
+ {
+ \__zrefclever_extract:nnn
+ {#2} { \l__zrefclever_ref_property_tl } { }
+ }
+ \bool_set_false:N \l__zrefclever_tmpa_bool
+ \__zrefclever_is_integer_rgx:VTF \l__zrefclever_tmpa_tl
+ {
+ \__zrefclever_is_integer_rgx:VF \l__zrefclever_tmpb_tl
+ { \bool_set_true:N \l__zrefclever_tmpa_bool }
+ }
+ { \bool_set_true:N \l__zrefclever_tmpa_bool }
+ \bool_until_do:Nn \l__zrefclever_tmpa_bool
+ {
+ \exp_args:Nee \tl_if_eq:nnTF
+ { \tl_head:V \l__zrefclever_tmpa_tl }
+ { \tl_head:V \l__zrefclever_tmpb_tl }
+ {
+ \tl_set:Ne \l__zrefclever_tmpa_tl
+ { \tl_tail:V \l__zrefclever_tmpa_tl }
+ \tl_set:Ne \l__zrefclever_tmpb_tl
+ { \tl_tail:V \l__zrefclever_tmpb_tl }
+ \tl_if_empty:NT \l__zrefclever_tmpb_tl
+ { \bool_set_true:N \l__zrefclever_tmpa_bool }
+ }
+ { \bool_set_true:N \l__zrefclever_tmpa_bool }
+ }
+ \exp_args:NNNV
+ \group_end:
+ \tl_set:Nn #3 \l__zrefclever_tmpb_tl
}
{ \tl_set:Nn #3 { zc@missingproperty } }
}
@@ -2000,49 +1992,49 @@
\zref@ifrefcontainsprop {#2} { \l__zrefclever_ref_property_tl }
{
\group_begin:
- \UseHook { zref-clever/endrange-setup }
- \tl_set:Ne \l__zrefclever_tmpa_tl
- {
- \__zrefclever_extract:nnn
- {#1} { \l__zrefclever_ref_property_tl } { }
- }
- \tl_set:Ne \l__zrefclever_tmpb_tl
- {
- \__zrefclever_extract:nnn
- {#2} { \l__zrefclever_ref_property_tl } { }
- }
- \bool_set_false:N \l__zrefclever_tmpa_bool
- \__zrefclever_is_integer_rgx:VTF \l__zrefclever_tmpa_tl
- {
- \__zrefclever_is_integer_rgx:VF \l__zrefclever_tmpb_tl
- { \bool_set_true:N \l__zrefclever_tmpa_bool }
- }
- { \bool_set_true:N \l__zrefclever_tmpa_bool }
- \bool_until_do:Nn \l__zrefclever_tmpa_bool
- {
- \exp_args:Nee \tl_if_eq:nnTF
- { \tl_head:V \l__zrefclever_tmpa_tl }
- { \tl_head:V \l__zrefclever_tmpb_tl }
- {
- \bool_lazy_or:nnTF
- { \int_compare_p:nNn { \l__zrefclever_tmpb_tl } > { 99 } }
- {
- \int_compare_p:nNn
- { \tl_head:V \l__zrefclever_tmpb_tl } = { 0 }
- }
- {
- \tl_set:Ne \l__zrefclever_tmpa_tl
- { \tl_tail:V \l__zrefclever_tmpa_tl }
- \tl_set:Ne \l__zrefclever_tmpb_tl
- { \tl_tail:V \l__zrefclever_tmpb_tl }
- }
- { \bool_set_true:N \l__zrefclever_tmpa_bool }
- }
- { \bool_set_true:N \l__zrefclever_tmpa_bool }
- }
- \exp_args:NNNV
- \group_end:
- \tl_set:Nn #3 \l__zrefclever_tmpb_tl
+ \UseHook { zref-clever/endrange-setup }
+ \protected@edef \l__zrefclever_tmpa_tl
+ {
+ \__zrefclever_extract:nnn
+ {#1} { \l__zrefclever_ref_property_tl } { }
+ }
+ \protected@edef \l__zrefclever_tmpb_tl
+ {
+ \__zrefclever_extract:nnn
+ {#2} { \l__zrefclever_ref_property_tl } { }
+ }
+ \bool_set_false:N \l__zrefclever_tmpa_bool
+ \__zrefclever_is_integer_rgx:VTF \l__zrefclever_tmpa_tl
+ {
+ \__zrefclever_is_integer_rgx:VF \l__zrefclever_tmpb_tl
+ { \bool_set_true:N \l__zrefclever_tmpa_bool }
+ }
+ { \bool_set_true:N \l__zrefclever_tmpa_bool }
+ \bool_until_do:Nn \l__zrefclever_tmpa_bool
+ {
+ \exp_args:Nee \tl_if_eq:nnTF
+ { \tl_head:V \l__zrefclever_tmpa_tl }
+ { \tl_head:V \l__zrefclever_tmpb_tl }
+ {
+ \bool_lazy_or:nnTF
+ { \int_compare_p:nNn { \l__zrefclever_tmpb_tl } > { 99 } }
+ {
+ \int_compare_p:nNn
+ { \tl_head:V \l__zrefclever_tmpb_tl } = { 0 }
+ }
+ {
+ \tl_set:Ne \l__zrefclever_tmpa_tl
+ { \tl_tail:V \l__zrefclever_tmpa_tl }
+ \tl_set:Ne \l__zrefclever_tmpb_tl
+ { \tl_tail:V \l__zrefclever_tmpb_tl }
+ }
+ { \bool_set_true:N \l__zrefclever_tmpa_bool }
+ }
+ { \bool_set_true:N \l__zrefclever_tmpa_bool }
+ }
+ \exp_args:NNNV
+ \group_end:
+ \tl_set:Nn #3 \l__zrefclever_tmpb_tl
}
{ \tl_set:Nn #3 { zc@missingproperty } }
}
@@ -2175,7 +2167,6 @@
\tl_set:Nn \l__zrefclever_ref_language_tl
{ \l__zrefclever_current_language_tl }
}
-
{ main }
{
\tl_set:Nn \l__zrefclever_ref_language_tl
@@ -2212,7 +2203,6 @@
\tl_set:Nn \l__zrefclever_ref_language_tl
{ \l__zrefclever_current_language_tl }
}
-
{ main }
{
\tl_set:Nn \l__zrefclever_ref_language_tl
@@ -2231,18 +2221,22 @@
}
}
}
-\tl_new:N \l__zrefclever_ref_decl_case_tl
+\tl_new:N \l__zrefclever_ref_variant_tl
\keys_define:nn { zref-clever/reference }
{
- d .code:n =
- { \msg_warning:nnn { zref-clever } { option-document-only } { d } } ,
+ v .code:n =
+ { \msg_warning:nnn { zref-clever } { option-document-only } { v } } ,
+ % NOTE Option deprecated in 2024-11-24 for v0.5.0.
+ d .meta:n = { v = {#1} } ,
}
\AddToHook { begindocument }
{
\keys_define:nn { zref-clever/reference }
{
- d .tl_set:N = \l__zrefclever_ref_decl_case_tl ,
- d .value_required:n = true ,
+ v .tl_set:N = \l__zrefclever_ref_variant_tl ,
+ v .value_required:n = true ,
+ % NOTE Option deprecated in 2024-11-24 for v0.5.0.
+ d .meta:n = { v = {#1} } ,
}
}
\bool_new:N \l__zrefclever_nudge_enabled_bool
@@ -2364,7 +2358,7 @@
check .code:n =
{
\bool_set_true:N \l__zrefclever_zcref_with_check_bool
- \keys_set:nn { zref-check / zcheck } {#1}
+ \keys_set:nn { zref-check/zcheck } {#1}
} ,
check .value_required:n = true ,
}
@@ -2645,9 +2639,9 @@
no #1 .value_forbidden:n = true ,
}
}
-\keys_define:nn { }
+\keys_define:nn { zref-clever }
{
- zref-clever/zcsetup .inherit:n =
+ zcsetup .inherit:n =
{
zref-clever/label ,
zref-clever/reference ,
@@ -2726,7 +2720,6 @@
{ \l__zrefclever_setup_type_tl } { endrangeprop } { tl }
}
}
-
{ stripprefix }
{
\__zrefclever_opt_tl_set:cn
@@ -2741,7 +2734,6 @@
{ \l__zrefclever_setup_type_tl } { endrangeprop } { tl }
}
}
-
{ pagecomp }
{
\__zrefclever_opt_tl_set:cn
@@ -2756,7 +2748,6 @@
{ \l__zrefclever_setup_type_tl } { endrangeprop } { tl }
}
}
-
{ pagecomp2 }
{
\__zrefclever_opt_tl_set:cn
@@ -2771,7 +2762,6 @@
{ \l__zrefclever_setup_type_tl } { endrangeprop } { tl }
}
}
-
{ unset }
{
\__zrefclever_opt_tl_unset:c
@@ -2930,33 +2920,33 @@
\NewDocumentCommand \zcLanguageSetup { m m }
{
\group_begin:
- \__zrefclever_language_if_declared:nTF {#1}
- {
- \tl_clear:N \l__zrefclever_setup_type_tl
- \tl_set:Nn \l__zrefclever_setup_language_tl {#1}
- \__zrefclever_opt_seq_get:cNF
- {
- \__zrefclever_opt_varname_language:nnn
- {#1} { declension } { seq }
- }
- \l__zrefclever_lang_declension_seq
- { \seq_clear:N \l__zrefclever_lang_declension_seq }
- \seq_if_empty:NTF \l__zrefclever_lang_declension_seq
- { \tl_clear:N \l__zrefclever_lang_decl_case_tl }
- {
- \seq_get_left:NN \l__zrefclever_lang_declension_seq
- \l__zrefclever_lang_decl_case_tl
- }
- \__zrefclever_opt_seq_get:cNF
- {
- \__zrefclever_opt_varname_language:nnn
- {#1} { gender } { seq }
- }
- \l__zrefclever_lang_gender_seq
- { \seq_clear:N \l__zrefclever_lang_gender_seq }
- \keys_set:nn { zref-clever/langsetup } {#2}
- }
- { \msg_warning:nnn { zref-clever } { unknown-language-setup } {#1} }
+ \__zrefclever_language_if_declared:nTF {#1}
+ {
+ \tl_clear:N \l__zrefclever_setup_type_tl
+ \tl_set:Nn \l__zrefclever_setup_language_tl {#1}
+ \__zrefclever_opt_seq_get:cNF
+ {
+ \__zrefclever_opt_varname_language:nnn
+ {#1} { variants } { seq }
+ }
+ \l__zrefclever_lang_variants_seq
+ { \seq_clear:N \l__zrefclever_lang_variants_seq }
+ \seq_if_empty:NTF \l__zrefclever_lang_variants_seq
+ { \tl_clear:N \l__zrefclever_lang_variant_tl }
+ {
+ \seq_get_left:NN \l__zrefclever_lang_variants_seq
+ \l__zrefclever_lang_variant_tl
+ }
+ \__zrefclever_opt_seq_get:cNF
+ {
+ \__zrefclever_opt_varname_language:nnn
+ {#1} { gender } { seq }
+ }
+ \l__zrefclever_lang_gender_seq
+ { \seq_clear:N \l__zrefclever_lang_gender_seq }
+ \keys_set:nn { zref-clever/langsetup } {#2}
+ }
+ { \msg_warning:nnn { zref-clever } { unknown-language-setup } {#1} }
\group_end:
}
\@onlypreamble \zcLanguageSetup
@@ -2968,27 +2958,27 @@
{ \tl_clear:N \l__zrefclever_setup_type_tl }
{ \tl_set:Nn \l__zrefclever_setup_type_tl {#1} }
} ,
-
- case .code:n =
+ variant .code:n =
{
- \seq_if_empty:NTF \l__zrefclever_lang_declension_seq
+ \seq_if_empty:NTF \l__zrefclever_lang_variants_seq
{
- \msg_warning:nnee { zref-clever } { language-no-decl-setup }
+ \msg_warning:nnee { zref-clever } { language-no-variants-setup }
{ \l__zrefclever_setup_language_tl } {#1}
}
{
- \seq_if_in:NnTF \l__zrefclever_lang_declension_seq {#1}
- { \tl_set:Nn \l__zrefclever_lang_decl_case_tl {#1} }
+ \seq_if_in:NnTF \l__zrefclever_lang_variants_seq {#1}
+ { \tl_set:Nn \l__zrefclever_lang_variant_tl {#1} }
{
- \msg_warning:nnee { zref-clever } { unknown-decl-case }
+ \msg_warning:nnee { zref-clever } { unknown-variant }
{#1} { \l__zrefclever_setup_language_tl }
- \seq_get_left:NN \l__zrefclever_lang_declension_seq
- \l__zrefclever_lang_decl_case_tl
+ \seq_get_left:NN \l__zrefclever_lang_variants_seq
+ \l__zrefclever_lang_variant_tl
}
}
} ,
- case .value_required:n = true ,
-
+ variant .value_required:n = true ,
+ % NOTE Option deprecated in 2024-11-24 for v0.5.0.
+ case .meta:n = { variant = {#1} } ,
gender .value_required:n = true ,
gender .code:n =
{
@@ -3123,7 +3113,6 @@
}
}
}
-
{ stripprefix }
{
\tl_if_empty:NTF \l__zrefclever_setup_type_tl
@@ -3160,7 +3149,6 @@
}
}
}
-
{ pagecomp }
{
\tl_if_empty:NTF \l__zrefclever_setup_type_tl
@@ -3197,7 +3185,6 @@
}
}
}
-
{ pagecomp2 }
{
\tl_if_empty:NTF \l__zrefclever_setup_type_tl
@@ -3329,7 +3316,7 @@
{ option-only-type-specific } {#1}
}
{
- \tl_if_empty:NTF \l__zrefclever_lang_decl_case_tl
+ \tl_if_empty:NTF \l__zrefclever_lang_variant_tl
{
\__zrefclever_opt_tl_gset:cn
{
@@ -3346,7 +3333,7 @@
\__zrefclever_opt_varname_lang_type:eeen
{ \l__zrefclever_setup_language_tl }
{ \l__zrefclever_setup_type_tl }
- { \l__zrefclever_lang_decl_case_tl - #1 }
+ { \l__zrefclever_lang_variant_tl - #1 }
{ tl }
}
{##1}
@@ -3489,8 +3476,8 @@
{ \l__zrefclever_typeset_range_bool }
{ \__zrefclever_sort_labels: }
\group_begin:
- \l__zrefclever_ref_typeset_font_tl
- \__zrefclever_typeset_refs:
+ \l__zrefclever_ref_typeset_font_tl
+ \__zrefclever_typeset_refs:
\group_end:
\tl_if_empty:NF \l__zrefclever_zcref_note_tl
{
@@ -3509,11 +3496,11 @@
\zrefcheck_zcref_run_checks_on_labels:n
{ \l__zrefclever_zcref_labels_seq }
}
- \bool_if:NT \l__zrefclever_mathtools_loaded_bool
- {
- \__zrefclever_mathtools_showonlyrefs:n
- { \l__zrefclever_zcref_labels_seq }
- }
+ \bool_if:NT \l__zrefclever_mathtools_loaded_bool
+ {
+ \__zrefclever_mathtools_showonlyrefs:n
+ { \l__zrefclever_zcref_labels_seq }
+ }
\group_end:
}
\seq_new:N \l__zrefclever_zcref_labels_seq
@@ -3521,9 +3508,9 @@
\NewDocumentCommand \zcpageref { s O { } m }
{
\group_begin:
- \IfBooleanT {#1}
- { \bool_set_false:N \l__zrefclever_hyperlink_bool }
- \zcref [#2, ref = page] {#3}
+ \IfBooleanT {#1}
+ { \bool_set_false:N \l__zrefclever_hyperlink_bool }
+ \zcref [#2, ref = page] {#3}
\group_end:
}
\tl_new:N \l__zrefclever_label_type_a_tl
@@ -3539,7 +3526,7 @@
\cs_new_protected:Npn \__zrefclever_sort_labels:
{
\seq_clear:N \l__zrefclever_label_types_seq
- \tl_if_eq:NnF \l__zrefclever_ref_propserty_tl { page }
+ \tl_if_eq:NnF \l__zrefclever_ref_property_tl { page }
{
\seq_map_function:NN \l__zrefclever_zcref_labels_seq
\__zrefclever_label_type_put_new_right:n
@@ -3595,7 +3582,6 @@
\l__zrefclever_label_type_a_tl {#1} { zc@type } { zc@missingtype }
\__zrefclever_extract_default:Nnnn
\l__zrefclever_label_type_b_tl {#2} { zc@type } { zc@missingtype }
-
\tl_if_eq:NNTF
\l__zrefclever_label_type_a_tl
\l__zrefclever_label_type_b_tl
@@ -3614,9 +3600,7 @@
{#1} { externaldocument } { }
\__zrefclever_extract_default:Nnnn \l__zrefclever_label_extdoc_b_tl
{#2} { externaldocument } { }
-
\bool_set_false:N \l__zrefclever_sort_decided_bool
-
% First we check if there's any "external document" difference (coming
% from `zref-xr') and, if so, sort based on that.
\tl_if_eq:NNF
@@ -3654,7 +3638,6 @@
}
}
}
-
\bool_until_do:Nn \l__zrefclever_sort_decided_bool
{
\bool_if:nTF
@@ -3682,7 +3665,7 @@
{
\bool_set_true:N \l__zrefclever_sort_decided_bool
\int_compare:nNnTF
- { \__zrefclever_extract:nnn {#1} { zc@cntval } { } }
+ { \__zrefclever_extract:nnn {#1} { zc@cntval } { -1 } }
>
{ \tl_head:N \l__zrefclever_label_enclval_b_tl }
{ \sort_return_swapped: }
@@ -3699,7 +3682,7 @@
\int_compare:nNnTF
{ \tl_head:N \l__zrefclever_label_enclval_a_tl }
<
- { \__zrefclever_extract:nnn {#2} { zc@cntval } { } }
+ { \__zrefclever_extract:nnn {#2} { zc@cntval } { -1 } }
{ \sort_return_same: }
{ \sort_return_swapped: }
}
@@ -3863,7 +3846,6 @@
\int_zero:N \l__zrefclever_range_same_count_int
\bool_set_false:N \l__zrefclever_range_beg_is_first_bool
\bool_set_false:N \l__zrefclever_type_first_refbounds_set_bool
-
% Get type block options (not type-specific).
\__zrefclever_get_rf_opt_tl:neeN { tpairsep }
{ \l__zrefclever_label_type_a_tl }
@@ -3877,7 +3859,6 @@
{ \l__zrefclever_label_type_a_tl }
{ \l__zrefclever_ref_language_tl }
\l__zrefclever_tlastsep_tl
-
% Process label stack.
\bool_set_false:N \l__zrefclever_typeset_last_bool
\bool_until_do:Nn \l__zrefclever_typeset_last_bool
@@ -3893,7 +3874,6 @@
\seq_get_left:NN \l__zrefclever_typeset_labels_seq
\l__zrefclever_label_b_tl
}
-
\tl_if_eq:NnTF \l__zrefclever_ref_property_tl { page }
{
\tl_set:Nn \l__zrefclever_label_type_a_tl { page }
@@ -3907,7 +3887,6 @@
\l__zrefclever_label_type_b_tl
\l__zrefclever_label_b_tl { zc@type } { zc@missingtype }
}
-
% First, we establish whether the "current label" (i.e. `a') is the
% last one of its type. This can happen because the "next label"
% (i.e. `b') is of a different type (or different definition status),
@@ -3934,7 +3913,6 @@
}
}
}
-
% Handle warnings in case of reference or type undefined.
% Test: `zc-typeset01.lvt': "Typeset refs: warn ref undefined"
\zref@refused { \l__zrefclever_label_a_tl }
@@ -3957,7 +3935,6 @@
{ \l__zrefclever_label_a_tl }
}
}
-
% Get possibly type-specific separators, refbounds, font and other
% options, once per type.
\int_compare:nNnT { \l__zrefclever_label_count_int } = { 0 }
@@ -4051,7 +4028,6 @@
{ \l__zrefclever_ref_language_tl }
\l__zrefclever_refbounds_last_re_seq
}
-
% Here we send this to a couple of auxiliary functions.
\bool_if:NTF \l__zrefclever_last_of_type_bool
% There exists no next label of the same type as the current.
@@ -4078,7 +4054,6 @@
\l__zrefclever_refbounds_first_sg_seq
\bool_set_true:N \l__zrefclever_type_first_refbounds_set_bool
}
-
% The last is the second: we have a pair (if not repeated).
% Test: `zc-typeset01.lvt': "Last of type: pair"
{ 1 }
@@ -4312,7 +4287,6 @@
}
}
}
-
% Handle "range" option. The idea is simple: if the queue is not empty,
% we replace it with the end of the range (or pair). We can still
% retrieve the end of the range from `label_a' since we know to be
@@ -4390,7 +4364,6 @@
}
}
}
-
% If none of the special cases for the first of type refbounds have been
% set, do it.
\bool_if:NF \l__zrefclever_type_first_refbounds_set_bool
@@ -4398,7 +4371,6 @@
\seq_set_eq:NN \l__zrefclever_type_first_refbounds_seq
\l__zrefclever_refbounds_first_seq
}
-
% Now that the type block is finished, we can add the name and the first
% ref to the queue. Also, if "typeset" option is not "both", handle it
% here as well.
@@ -4428,24 +4400,24 @@
\bool_if:NTF \l__zrefclever_name_in_link_bool
{
\exp_not:N \group_begin:
- \exp_not:V \l__zrefclever_namefont_tl
- \__zrefclever_hyperlink:nnn
- {
- \__zrefclever_extract_url_unexp:V
- \l__zrefclever_type_first_label_tl
- }
- {
- \__zrefclever_extract_unexp:Vnn
- \l__zrefclever_type_first_label_tl
- { anchor } { }
- }
- { \exp_not:V \l__zrefclever_type_name_tl }
+ \exp_not:V \l__zrefclever_namefont_tl
+ \__zrefclever_hyperlink:nnn
+ {
+ \__zrefclever_extract_url_unexp:V
+ \l__zrefclever_type_first_label_tl
+ }
+ {
+ \__zrefclever_extract_unexp:Vnn
+ \l__zrefclever_type_first_label_tl
+ { anchor } { }
+ }
+ { \exp_not:V \l__zrefclever_type_name_tl }
\exp_not:N \group_end:
}
{
\exp_not:N \group_begin:
- \exp_not:V \l__zrefclever_namefont_tl
- \exp_not:V \l__zrefclever_type_name_tl
+ \exp_not:V \l__zrefclever_namefont_tl
+ \exp_not:V \l__zrefclever_type_name_tl
\exp_not:N \group_end:
}
}
@@ -4461,7 +4433,6 @@
}
}
}
-
% Typeset the previous type block, if there is one.
\int_compare:nNnT { \l__zrefclever_type_count_int } > { 0 }
{
@@ -4469,11 +4440,9 @@
{ \l__zrefclever_tlistsep_tl }
\l__zrefclever_typeset_queue_prev_tl
}
-
% Extra log for testing.
\bool_if:NT \l__zrefclever_verbose_testing_bool
{ \tl_show:N \l__zrefclever_typeset_queue_curr_tl }
-
% Wrap up loop, or prepare for next iteration.
\bool_if:NTF \l__zrefclever_typeset_last_bool
{
@@ -4540,7 +4509,6 @@
{ \l__zrefclever_label_a_tl } { \l__zrefclever_label_b_tl }
}
}
-
% Process the current label to the current queue.
\int_compare:nNnTF { \l__zrefclever_label_count_int } = { 0 }
{
@@ -4551,7 +4519,6 @@
\tl_set:NV \l__zrefclever_type_first_label_type_tl
\l__zrefclever_label_type_a_tl
\int_incr:N \l__zrefclever_ref_count_int
-
% If the next label may be part of a range, signal it (we deal with it
% as the "first", and must do it there, to handle hyperlinking), but
% also step the range counters.
@@ -4793,9 +4760,9 @@
{
\seq_item:Nn #2 { 2 }
\exp_not:N \group_begin:
- \exp_not:V \l__zrefclever_reffont_tl
- \__zrefclever_extract_unexp:nvn {#1}
- { l__zrefclever_ref_property_tl } { }
+ \exp_not:V \l__zrefclever_reffont_tl
+ \__zrefclever_extract_unexp:nvn {#1}
+ { l__zrefclever_ref_property_tl } { }
\exp_not:N \group_end:
\seq_item:Nn #2 { 3 }
}
@@ -4805,9 +4772,9 @@
\seq_item:Nn #2 { 1 }
\seq_item:Nn #2 { 2 }
\exp_not:N \group_begin:
- \exp_not:V \l__zrefclever_reffont_tl
- \__zrefclever_extract_unexp:nvn {#1}
- { l__zrefclever_ref_property_tl } { }
+ \exp_not:V \l__zrefclever_reffont_tl
+ \__zrefclever_extract_unexp:nvn {#1}
+ { l__zrefclever_ref_property_tl } { }
\exp_not:N \group_end:
\seq_item:Nn #2 { 3 }
\seq_item:Nn #2 { 4 }
@@ -4834,8 +4801,8 @@
{
\seq_item:Nn #3 { 2 }
\exp_not:N \group_begin:
- \exp_not:V \l__zrefclever_reffont_tl
- \exp_not:n {#2}
+ \exp_not:V \l__zrefclever_reffont_tl
+ \exp_not:n {#2}
\exp_not:N \group_end:
\seq_item:Nn #3 { 3 }
}
@@ -4845,8 +4812,8 @@
\seq_item:Nn #3 { 1 }
\seq_item:Nn #3 { 2 }
\exp_not:N \group_begin:
- \exp_not:V \l__zrefclever_reffont_tl
- \exp_not:n {#2}
+ \exp_not:V \l__zrefclever_reffont_tl
+ \exp_not:n {#2}
\exp_not:N \group_end:
\seq_item:Nn #3 { 3 }
\seq_item:Nn #3 { 4 }
@@ -4876,17 +4843,17 @@
}
{
\exp_not:N \group_begin:
- \exp_not:V \l__zrefclever_namefont_tl
- \exp_not:V \l__zrefclever_type_name_tl
+ \exp_not:V \l__zrefclever_namefont_tl
+ \exp_not:V \l__zrefclever_type_name_tl
\exp_not:N \group_end:
\exp_not:V \l__zrefclever_namesep_tl
\seq_item:Nn \l__zrefclever_type_first_refbounds_seq { 1 }
\seq_item:Nn \l__zrefclever_type_first_refbounds_seq { 2 }
\exp_not:N \group_begin:
- \exp_not:V \l__zrefclever_reffont_tl
- \__zrefclever_extract_unexp:Vvn
- \l__zrefclever_type_first_label_tl
- { l__zrefclever_ref_property_tl } { }
+ \exp_not:V \l__zrefclever_reffont_tl
+ \__zrefclever_extract_unexp:Vvn
+ \l__zrefclever_type_first_label_tl
+ { l__zrefclever_ref_property_tl } { }
\exp_not:N \group_end:
\seq_item:Nn \l__zrefclever_type_first_refbounds_seq { 3 }
}
@@ -4894,8 +4861,8 @@
}
{
\exp_not:N \group_begin:
- \exp_not:V \l__zrefclever_namefont_tl
- \exp_not:V \l__zrefclever_type_name_tl
+ \exp_not:V \l__zrefclever_namefont_tl
+ \exp_not:V \l__zrefclever_type_name_tl
\exp_not:N \group_end:
\exp_not:V \l__zrefclever_namesep_tl
\__zrefclever_ref_default:
@@ -4909,8 +4876,8 @@
}
{
\exp_not:N \group_begin:
- \exp_not:V \l__zrefclever_namefont_tl
- \exp_not:V \l__zrefclever_type_name_tl
+ \exp_not:V \l__zrefclever_namefont_tl
+ \exp_not:V \l__zrefclever_type_name_tl
\exp_not:N \group_end:
\tl_if_empty:NF \l__zrefclever_type_name_tl
{ \exp_not:V \l__zrefclever_namesep_tl }
@@ -4940,10 +4907,10 @@
\seq_item:Nn
\l__zrefclever_type_first_refbounds_seq { 2 }
\exp_not:N \group_begin:
- \exp_not:V \l__zrefclever_reffont_tl
- \__zrefclever_extract_unexp:Vvn
- \l__zrefclever_type_first_label_tl
- { l__zrefclever_ref_property_tl } { }
+ \exp_not:V \l__zrefclever_reffont_tl
+ \__zrefclever_extract_unexp:Vvn
+ \l__zrefclever_type_first_label_tl
+ { l__zrefclever_ref_property_tl } { }
\exp_not:N \group_end:
\seq_item:Nn
\l__zrefclever_type_first_refbounds_seq { 3 }
@@ -4955,10 +4922,10 @@
\seq_item:Nn \l__zrefclever_type_first_refbounds_seq { 1 }
\seq_item:Nn \l__zrefclever_type_first_refbounds_seq { 2 }
\exp_not:N \group_begin:
- \exp_not:V \l__zrefclever_reffont_tl
- \__zrefclever_extract_unexp:Vvn
- \l__zrefclever_type_first_label_tl
- { l__zrefclever_ref_property_tl } { }
+ \exp_not:V \l__zrefclever_reffont_tl
+ \__zrefclever_extract_unexp:Vvn
+ \l__zrefclever_type_first_label_tl
+ { l__zrefclever_ref_property_tl } { }
\exp_not:N \group_end:
\seq_item:Nn \l__zrefclever_type_first_refbounds_seq { 3 }
\seq_item:Nn \l__zrefclever_type_first_refbounds_seq { 4 }
@@ -4970,237 +4937,251 @@
}
\cs_new_protected:Npn \__zrefclever_type_name_setup:
{
- \zref@ifrefundefined { \l__zrefclever_type_first_label_tl }
+ \bool_if:nTF
+ { \l__zrefclever_typeset_ref_bool && ! \l__zrefclever_typeset_name_bool }
{
+ % `typeset=ref' / `noname' option
+ % Probably redundant, since in this case the type name is not being
+ % typeset. But, for completeness sake:
\tl_clear:N \l__zrefclever_type_name_tl
+ \bool_set_false:N \l__zrefclever_name_in_link_bool
\bool_set_true:N \l__zrefclever_type_name_missing_bool
}
{
- \tl_if_eq:NnTF
- \l__zrefclever_type_first_label_type_tl { zc@missingtype }
+ \zref@ifrefundefined { \l__zrefclever_type_first_label_tl }
{
\tl_clear:N \l__zrefclever_type_name_tl
\bool_set_true:N \l__zrefclever_type_name_missing_bool
}
{
- % Determine whether we should use capitalization, abbreviation,
- % and plural.
- \bool_lazy_or:nnTF
- { \l__zrefclever_cap_bool }
+ \tl_if_eq:NnTF
+ \l__zrefclever_type_first_label_type_tl { zc@missingtype }
{
- \l__zrefclever_capfirst_bool &&
- \int_compare_p:nNn { \l__zrefclever_type_count_int } = { 0 }
- }
- { \tl_set:Nn \l__zrefclever_name_format_tl {Name} }
- { \tl_set:Nn \l__zrefclever_name_format_tl {name} }
- % If the queue is empty, we have a singular, otherwise, plural.
- \tl_if_empty:NTF \l__zrefclever_typeset_queue_curr_tl
- { \tl_put_right:Nn \l__zrefclever_name_format_tl { -sg } }
- { \tl_put_right:Nn \l__zrefclever_name_format_tl { -pl } }
- \bool_lazy_and:nnTF
- { \l__zrefclever_abbrev_bool }
- {
- ! \int_compare_p:nNn
- { \l__zrefclever_type_count_int } = { 0 } ||
- ! \l__zrefclever_noabbrev_first_bool
+ \tl_clear:N \l__zrefclever_type_name_tl
+ \bool_set_true:N \l__zrefclever_type_name_missing_bool
}
{
- \tl_set:NV \l__zrefclever_name_format_fallback_tl
- \l__zrefclever_name_format_tl
- \tl_put_right:Nn \l__zrefclever_name_format_tl { -ab }
- }
- { \tl_clear:N \l__zrefclever_name_format_fallback_tl }
-
- % Handle number and gender nudges.
- \bool_if:NT \l__zrefclever_nudge_enabled_bool
- {
- \bool_if:NTF \l__zrefclever_nudge_singular_bool
+ % Determine whether we should use capitalization,
+ % abbreviation, and plural.
+ \bool_lazy_or:nnTF
+ { \l__zrefclever_cap_bool }
{
- \tl_if_empty:NF \l__zrefclever_typeset_queue_curr_tl
- {
- \msg_warning:nne { zref-clever }
- { nudge-plural-when-sg }
- { \l__zrefclever_type_first_label_type_tl }
- }
+ \l__zrefclever_capfirst_bool &&
+ \int_compare_p:nNn { \l__zrefclever_type_count_int } = { 0 }
}
+ { \tl_set:Nn \l__zrefclever_name_format_tl {Name} }
+ { \tl_set:Nn \l__zrefclever_name_format_tl {name} }
+ % If the queue is empty, we have a singular, otherwise,
+ % plural.
+ \tl_if_empty:NTF \l__zrefclever_typeset_queue_curr_tl
+ { \tl_put_right:Nn \l__zrefclever_name_format_tl { -sg } }
+ { \tl_put_right:Nn \l__zrefclever_name_format_tl { -pl } }
+ \bool_lazy_and:nnTF
+ { \l__zrefclever_abbrev_bool }
{
- \bool_lazy_all:nT
- {
- { \l__zrefclever_nudge_comptosing_bool }
- { \tl_if_empty_p:N \l__zrefclever_typeset_queue_curr_tl }
- {
- \int_compare_p:nNn
- { \l__zrefclever_label_count_int } > { 0 }
- }
- }
- {
- \msg_warning:nne { zref-clever }
- { nudge-comptosing }
- { \l__zrefclever_type_first_label_type_tl }
- }
+ ! \int_compare_p:nNn
+ { \l__zrefclever_type_count_int } = { 0 } ||
+ ! \l__zrefclever_noabbrev_first_bool
}
- \bool_lazy_and:nnT
- { \l__zrefclever_nudge_gender_bool }
- { ! \tl_if_empty_p:N \l__zrefclever_ref_gender_tl }
{
- \__zrefclever_get_rf_opt_seq:neeN { gender }
- { \l__zrefclever_type_first_label_type_tl }
- { \l__zrefclever_ref_language_tl }
- \l__zrefclever_type_name_gender_seq
- \seq_if_in:NVF
- \l__zrefclever_type_name_gender_seq
- \l__zrefclever_ref_gender_tl
+ \tl_set:NV \l__zrefclever_name_format_fallback_tl
+ \l__zrefclever_name_format_tl
+ \tl_put_right:Nn \l__zrefclever_name_format_tl { -ab }
+ }
+ { \tl_clear:N \l__zrefclever_name_format_fallback_tl }
+ % Handle number and gender nudges.
+ % Note that these nudges get disabled for `typeset=ref' /
+ % `noname' option, but in this case they are not really
+ % meaningful anyway.
+ \bool_if:NT \l__zrefclever_nudge_enabled_bool
+ {
+ \bool_if:NTF \l__zrefclever_nudge_singular_bool
{
- \seq_if_empty:NTF \l__zrefclever_type_name_gender_seq
+ \tl_if_empty:NF \l__zrefclever_typeset_queue_curr_tl
{
- \msg_warning:nneee { zref-clever }
- { nudge-gender-not-declared-for-type }
- { \l__zrefclever_ref_gender_tl }
+ \msg_warning:nne { zref-clever }
+ { nudge-plural-when-sg }
{ \l__zrefclever_type_first_label_type_tl }
- { \l__zrefclever_ref_language_tl }
+ }
+ }
+ {
+ \bool_lazy_all:nT
+ {
+ { \l__zrefclever_nudge_comptosing_bool }
+ { \tl_if_empty_p:N \l__zrefclever_typeset_queue_curr_tl }
+ {
+ \int_compare_p:nNn
+ { \l__zrefclever_label_count_int } > { 0 }
+ }
}
{
- \msg_warning:nneeee { zref-clever }
- { nudge-gender-mismatch }
+ \msg_warning:nne { zref-clever }
+ { nudge-comptosing }
{ \l__zrefclever_type_first_label_type_tl }
- { \l__zrefclever_ref_gender_tl }
+ }
+ }
+ \bool_lazy_and:nnT
+ { \l__zrefclever_nudge_gender_bool }
+ { ! \tl_if_empty_p:N \l__zrefclever_ref_gender_tl }
+ {
+ \__zrefclever_get_rf_opt_seq:neeN { gender }
+ { \l__zrefclever_type_first_label_type_tl }
+ { \l__zrefclever_ref_language_tl }
+ \l__zrefclever_type_name_gender_seq
+ \seq_if_in:NVF
+ \l__zrefclever_type_name_gender_seq
+ \l__zrefclever_ref_gender_tl
+ {
+ \seq_if_empty:NTF \l__zrefclever_type_name_gender_seq
{
- \seq_use:Nn
- \l__zrefclever_type_name_gender_seq { ,~ }
+ \msg_warning:nneee { zref-clever }
+ { nudge-gender-not-declared-for-type }
+ { \l__zrefclever_ref_gender_tl }
+ { \l__zrefclever_type_first_label_type_tl }
+ { \l__zrefclever_ref_language_tl }
+ }
+ {
+ \msg_warning:nneeee { zref-clever }
+ { nudge-gender-mismatch }
+ { \l__zrefclever_type_first_label_type_tl }
+ { \l__zrefclever_ref_gender_tl }
+ {
+ \seq_use:Nn
+ \l__zrefclever_type_name_gender_seq { ,~ }
+ }
+ { \l__zrefclever_ref_language_tl }
}
- { \l__zrefclever_ref_language_tl }
}
}
}
- }
-
- \tl_if_empty:NTF \l__zrefclever_name_format_fallback_tl
- {
- \__zrefclever_opt_tl_get:cNF
- {
- \__zrefclever_opt_varname_type:een
- { \l__zrefclever_type_first_label_type_tl }
- { \l__zrefclever_name_format_tl }
- { tl }
- }
- \l__zrefclever_type_name_tl
+ \tl_if_empty:NTF \l__zrefclever_name_format_fallback_tl
{
- \tl_if_empty:NF \l__zrefclever_ref_decl_case_tl
- {
- \tl_put_left:Nn \l__zrefclever_name_format_tl { - }
- \tl_put_left:NV \l__zrefclever_name_format_tl
- \l__zrefclever_ref_decl_case_tl
- }
\__zrefclever_opt_tl_get:cNF
{
- \__zrefclever_opt_varname_lang_type:eeen
- { \l__zrefclever_ref_language_tl }
+ \__zrefclever_opt_varname_type:een
{ \l__zrefclever_type_first_label_type_tl }
{ \l__zrefclever_name_format_tl }
{ tl }
}
\l__zrefclever_type_name_tl
{
- \tl_clear:N \l__zrefclever_type_name_tl
- \bool_set_true:N \l__zrefclever_type_name_missing_bool
- \msg_warning:nnee { zref-clever } { missing-name }
- { \l__zrefclever_name_format_tl }
- { \l__zrefclever_type_first_label_type_tl }
+ \tl_if_empty:NF \l__zrefclever_ref_variant_tl
+ {
+ \tl_put_left:Nn \l__zrefclever_name_format_tl { - }
+ \tl_put_left:NV \l__zrefclever_name_format_tl
+ \l__zrefclever_ref_variant_tl
+ }
+ \__zrefclever_opt_tl_get:cNF
+ {
+ \__zrefclever_opt_varname_lang_type:eeen
+ { \l__zrefclever_ref_language_tl }
+ { \l__zrefclever_type_first_label_type_tl }
+ { \l__zrefclever_name_format_tl }
+ { tl }
+ }
+ \l__zrefclever_type_name_tl
+ {
+ \tl_clear:N \l__zrefclever_type_name_tl
+ \bool_set_true:N \l__zrefclever_type_name_missing_bool
+ \msg_warning:nnee { zref-clever } { missing-name }
+ { \l__zrefclever_name_format_tl }
+ { \l__zrefclever_type_first_label_type_tl }
+ }
}
}
- }
- {
- \__zrefclever_opt_tl_get:cNF
- {
- \__zrefclever_opt_varname_type:een
- { \l__zrefclever_type_first_label_type_tl }
- { \l__zrefclever_name_format_tl }
- { tl }
- }
- \l__zrefclever_type_name_tl
{
\__zrefclever_opt_tl_get:cNF
{
\__zrefclever_opt_varname_type:een
{ \l__zrefclever_type_first_label_type_tl }
- { \l__zrefclever_name_format_fallback_tl }
+ { \l__zrefclever_name_format_tl }
{ tl }
}
\l__zrefclever_type_name_tl
{
- \tl_if_empty:NF \l__zrefclever_ref_decl_case_tl
- {
- \tl_put_left:Nn
- \l__zrefclever_name_format_tl { - }
- \tl_put_left:NV \l__zrefclever_name_format_tl
- \l__zrefclever_ref_decl_case_tl
- \tl_put_left:Nn
- \l__zrefclever_name_format_fallback_tl { - }
- \tl_put_left:NV
- \l__zrefclever_name_format_fallback_tl
- \l__zrefclever_ref_decl_case_tl
- }
\__zrefclever_opt_tl_get:cNF
{
- \__zrefclever_opt_varname_lang_type:eeen
- { \l__zrefclever_ref_language_tl }
+ \__zrefclever_opt_varname_type:een
{ \l__zrefclever_type_first_label_type_tl }
- { \l__zrefclever_name_format_tl }
+ { \l__zrefclever_name_format_fallback_tl }
{ tl }
}
\l__zrefclever_type_name_tl
{
+ \tl_if_empty:NF \l__zrefclever_ref_variant_tl
+ {
+ \tl_put_left:Nn
+ \l__zrefclever_name_format_tl { - }
+ \tl_put_left:NV \l__zrefclever_name_format_tl
+ \l__zrefclever_ref_variant_tl
+ \tl_put_left:Nn
+ \l__zrefclever_name_format_fallback_tl { - }
+ \tl_put_left:NV
+ \l__zrefclever_name_format_fallback_tl
+ \l__zrefclever_ref_variant_tl
+ }
\__zrefclever_opt_tl_get:cNF
{
\__zrefclever_opt_varname_lang_type:eeen
{ \l__zrefclever_ref_language_tl }
{ \l__zrefclever_type_first_label_type_tl }
- { \l__zrefclever_name_format_fallback_tl }
+ { \l__zrefclever_name_format_tl }
{ tl }
}
\l__zrefclever_type_name_tl
{
- \tl_clear:N \l__zrefclever_type_name_tl
- \bool_set_true:N
- \l__zrefclever_type_name_missing_bool
- \msg_warning:nnee { zref-clever }
- { missing-name }
- { \l__zrefclever_name_format_tl }
- { \l__zrefclever_type_first_label_type_tl }
+ \__zrefclever_opt_tl_get:cNF
+ {
+ \__zrefclever_opt_varname_lang_type:eeen
+ { \l__zrefclever_ref_language_tl }
+ { \l__zrefclever_type_first_label_type_tl }
+ { \l__zrefclever_name_format_fallback_tl }
+ { tl }
+ }
+ \l__zrefclever_type_name_tl
+ {
+ \tl_clear:N \l__zrefclever_type_name_tl
+ \bool_set_true:N
+ \l__zrefclever_type_name_missing_bool
+ \msg_warning:nnee { zref-clever }
+ { missing-name }
+ { \l__zrefclever_name_format_tl }
+ { \l__zrefclever_type_first_label_type_tl }
+ }
}
}
}
}
}
}
- }
-
- % Signal whether the type name is to be included in the hyperlink or not.
- \bool_lazy_any:nTF
- {
- { ! \l__zrefclever_hyperlink_bool }
- { \l__zrefclever_link_star_bool }
- { \tl_if_empty_p:N \l__zrefclever_type_name_tl }
- { \str_if_eq_p:Vn \l__zrefclever_nameinlink_str { false } }
- }
- { \bool_set_false:N \l__zrefclever_name_in_link_bool }
- {
+ % Signal whether the type name is to be included in the hyperlink or
+ % not.
\bool_lazy_any:nTF
{
- { \str_if_eq_p:Vn \l__zrefclever_nameinlink_str { true } }
- {
- \str_if_eq_p:Vn \l__zrefclever_nameinlink_str { tsingle } &&
- \tl_if_empty_p:N \l__zrefclever_typeset_queue_curr_tl
- }
- {
- \str_if_eq_p:Vn \l__zrefclever_nameinlink_str { single } &&
- \tl_if_empty_p:N \l__zrefclever_typeset_queue_curr_tl &&
- \l__zrefclever_typeset_last_bool &&
- \int_compare_p:nNn { \l__zrefclever_type_count_int } = { 0 }
- }
+ { ! \l__zrefclever_hyperlink_bool }
+ { \l__zrefclever_link_star_bool }
+ { \tl_if_empty_p:N \l__zrefclever_type_name_tl }
+ { \str_if_eq_p:Vn \l__zrefclever_nameinlink_str { false } }
}
- { \bool_set_true:N \l__zrefclever_name_in_link_bool }
{ \bool_set_false:N \l__zrefclever_name_in_link_bool }
+ {
+ \bool_lazy_any:nTF
+ {
+ { \str_if_eq_p:Vn \l__zrefclever_nameinlink_str { true } }
+ {
+ \str_if_eq_p:Vn \l__zrefclever_nameinlink_str { tsingle } &&
+ \tl_if_empty_p:N \l__zrefclever_typeset_queue_curr_tl
+ }
+ {
+ \str_if_eq_p:Vn \l__zrefclever_nameinlink_str { single } &&
+ \tl_if_empty_p:N \l__zrefclever_typeset_queue_curr_tl &&
+ \l__zrefclever_typeset_last_bool &&
+ \int_compare_p:nNn { \l__zrefclever_type_count_int } = { 0 }
+ }
+ }
+ { \bool_set_true:N \l__zrefclever_name_in_link_bool }
+ { \bool_set_false:N \l__zrefclever_name_in_link_bool }
+ }
}
}
\cs_new_protected:Npn \__zrefclever_hyperlink:nnn #1#2#3
@@ -5234,13 +5215,13 @@
{
\int_compare:nNnTF
{ \__zrefclever_extract:nnn {#1} { zc@pgval } { -2 } + 1 }
- =
+ =
{ \__zrefclever_extract:nnn {#2} { zc@pgval } { -1 } }
{ \bool_set_true:N \l__zrefclever_next_maybe_range_bool }
{
\int_compare:nNnT
{ \__zrefclever_extract:nnn {#1} { zc@pgval } { -1 } }
- =
+ =
{ \__zrefclever_extract:nnn {#2} { zc@pgval } { -1 } }
{
\bool_set_true:N \l__zrefclever_next_maybe_range_bool
@@ -5260,13 +5241,13 @@
{
\int_compare:nNnTF
{ \__zrefclever_extract:nnn {#1} { zc@cntval } { -2 } + 1 }
- =
+ =
{ \__zrefclever_extract:nnn {#2} { zc@cntval } { -1 } }
{ \bool_set_true:N \l__zrefclever_next_maybe_range_bool }
{
\int_compare:nNnT
{ \__zrefclever_extract:nnn {#1} { zc@cntval } { -1 } }
- =
+ =
{ \__zrefclever_extract:nnn {#2} { zc@cntval } { -1 } }
{
\exp_args:Nee \tl_if_eq:nnT
@@ -5654,8 +5635,11 @@
} ,
counterresetby = { lstnumber = lstlisting } ,
}
- \lst@AddToHook { Init }
- { \__zrefclever_zcsetup:n { currentcounter = lstnumber } }
+ \cs_if_exist:NT \lst@AddToHook
+ {
+ \lst@AddToHook { Init }
+ { \__zrefclever_zcsetup:n { currentcounter = lstnumber } }
+ }
\msg_info:nnn { zref-clever } { compat-package } { listings }
}
}
@@ -5705,8 +5689,11 @@
}
\zref@newprop { subref }
{ \cs_if_exist_use:c { thesub \@captype } }
- \tl_put_right:Nn \caption@subtypehook
- { \zref@localaddprop \ZREF@mainlist { subref } }
+ \tl_if_exist:NT \caption@subtypehook
+ {
+ \tl_put_right:Nn \caption@subtypehook
+ { \zref@localaddprop \ZREF@mainlist { subref } }
+ }
}
}
\__zrefclever_compat_module:nn { subfig }
@@ -5728,6 +5715,19 @@
}
}
}
+\__zrefclever_compat_module:nn { beamer }
+ {
+ \__zrefclever_if_class_loaded:nT { beamer }
+ {
+ \AddToHookWithArguments { label } [ zref-clever/compat/beamer ]
+ { \xdef\@currentHref{#1} }
+ \DeclareHookRule { label }
+ { zref-clever/compat/beamer } { before } { zref-clever }
+ \AddToHookWithArguments { cmd/refcounter/before }
+ [ zref-clever/compat/beamer ]
+ { \edef\@currentcounter{#1} }
+ }
+ }
\zcDeclareLanguage { english }
\zcDeclareLanguageAlias { american } { english }
\zcDeclareLanguageAlias { australian } { english }
@@ -5737,7 +5737,7 @@
\zcDeclareLanguageAlias { UKenglish } { english }
\zcDeclareLanguageAlias { USenglish } { english }
\zcDeclareLanguage
- [ declension = { N , A , D , G } , gender = { f , m , n } , allcaps ]
+ [ variants = { N , A , D , G } , gender = { f , m , n } , allcaps ]
{ german }
\zcDeclareLanguageAlias { ngerman } { german }
\zcDeclareLanguageAlias { austrian } { german }
@@ -5754,8 +5754,9 @@
\zcDeclareLanguage [ gender = { f , m , n } ] { dutch }
\zcDeclareLanguage [ gender = { f , m } ] { italian }
\zcDeclareLanguage
- [ declension = { n , a , g , d , i , p } , gender = { f , m , n } ]
+ [ variants = { n , a , g , d , i , p } , gender = { f , m , n } ]
{ russian }
+\zcDeclareLanguage { swedish }
%%
%%
%% End of file `zref-clever.sty'.
diff --git a/Master/texmf-dist/tex/latex/zref-vario/zref-vario.sty b/Master/texmf-dist/tex/latex/zref-vario/zref-vario.sty
index 8ed5f71edbf..26589467af2 100644
--- a/Master/texmf-dist/tex/latex/zref-vario/zref-vario.sty
+++ b/Master/texmf-dist/tex/latex/zref-vario/zref-vario.sty
@@ -8,7 +8,7 @@
%%
%% This file was generated from file(s) of the LaTeX package "zref-vario".
%%
-%% Copyright (C) 2022-2023 gusbrs
+%% Copyright (C) 2022-2024 gusbrs
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -52,7 +52,7 @@
'zref-vario' requires a LaTeX kernel \zrefvario@required@kernel\space or newer.%
}%
}%
-\ProvidesExplPackage {zref-vario} {2023-11-14} {0.1.10}
+\ProvidesExplPackage {zref-vario} {2024-11-25} {0.1.12}
{Extended LaTeX page cross-references with varioref and zref-clever}
\RequirePackage { zref-clever } [ 2022-01-28 ] % v0.2.0-alpha
\RequirePackage { varioref }
@@ -173,13 +173,13 @@
vother .tl_set:N = \l__zrefvario_reftextother_tl ,
vother .value_required:n = true ,
}
-\keys_define:nn { }
+\keys_define:nn { zref-vario }
{
- zref-vario/ref .inherit:n =
+ ref .inherit:n =
{ zref-clever/reference } ,
- zref-vario/ref-oneoptarg .inherit:n =
+ ref-oneoptarg .inherit:n =
{ zref-clever/reference , zref-vario/current } ,
- zref-vario/ref-twooptargs .inherit:n =
+ ref-twooptargs .inherit:n =
{ zref-clever/reference , zref-vario/current , zref-vario/other } ,
}
\tl_new:N \l__zrefvario_setup_language_tl
@@ -806,6 +806,22 @@
reftextpagerange = {nelle~\zcpageref[range,g=f]{#1,#2}} ,
reftextlabelrange = {\zcref[range]{#1,#2}} ,
}
+\zvLanguageSetup { swedish }
+ {
+ reftextfaceafter =
+ {på~\zvhyperlink{\reftextvario{motstående}{nästa}~sida}} ,
+ reftextfacebefore =
+ {på~\zvhyperlink{\reftextvario{motstående}{föregående}~sida}} ,
+ reftextafter =
+ {på~\zvhyperlink{\reftextvario{följande}{nästa}~sida}} ,
+ reftextbefore =
+ {på~\zvhyperlink{föregående~sida}} ,
+ reftextcurrent =
+ {på~\zvhyperlink{\reftextvario{den~här~sidan}{denna~sida}}} ,
+ reftextfaraway = {på~\zcpageref{#1}} ,
+ reftextpagerange = {på~\zcpageref[range]{#1,#2}} ,
+ reftextlabelrange = {\zcref[range]{#1,#2}} ,
+ }
%%
%%
%% End of file `zref-vario.sty'.
diff --git a/Master/texmf-dist/tex/latex/zugferd/zugferd-invoice.sty b/Master/texmf-dist/tex/latex/zugferd/zugferd-invoice.sty
index e86dbdee1bc..aae75f1c362 100644
--- a/Master/texmf-dist/tex/latex/zugferd/zugferd-invoice.sty
+++ b/Master/texmf-dist/tex/latex/zugferd/zugferd-invoice.sty
@@ -1,5 +1,5 @@
%
-% Copyright (C) 2024 Marei Peischl <marei@peitex.de>
+% Copyright (C) 2024–2025 Marei Peischl <marei@peitex.de>
% ---------------------------------------------------------
%
% This file may be distributed and/or modified under the
@@ -12,7 +12,7 @@
% and version 1.3c or later is part of all distributions of LaTeX
% version 2008-05-04 or later.
%
-\ProvidesExplPackage{zugferd-invoice}{2024-09-11}{0.8}{Invoice wrapper example package for the factur-x to create ZUGFerD invoices}
+\ProvidesExplPackage{zugferd-invoice}{2025-01-02}{0.9d}{Invoice wrapper example package for the factur-x to create ZUGFerD invoices}
\keys_define:nn {zugferd/invoice}{
default-vat .tl_set:N = \defaultVAT,
@@ -44,25 +44,31 @@
\newcounter{invoiceitem}
\seq_new:N \g__ptxcd_VAT_rates_seq
-\NewDocumentCommand{\InitVAT}{omO{S}}{
- \seq_gput_right:Nn \g__ptxcd_VAT_rates_seq {#2}
- \fp_new:c {g__ptxcd_invoice_sum_vat#2_fp}
- \fp_new:c {g__ptxcd_invoice_base_vat#2_fp}
- \cs_new:cn {__ptxcd_invoice_type_code#2:} {#3}
+% InitVAT accepts 2 Arguments
+% Percentage + Tax Type Code the latter one is set to S as a default
+\NewDocumentCommand{\InitVAT}{mO{S}}{
+ \seq_gput_right:Nn \g__ptxcd_VAT_rates_seq {#1}
+ \fp_new:c {g__ptxcd_invoice_sum_vat#1_fp}
+ \fp_new:c {g__ptxcd_invoice_base_vat#1_fp}
+ \cs_new:cn {__ptxcd_invoice_type_code#1:} {#2}
}
-%%initialisierung auf 5,7,16 oder 19 % Mwst
-\InitVAT{16}
+%Initialize VAT rates for (5),7,(16) and 19 % VAT
+%\InitVAT{16}
\InitVAT{19}
-\InitVAT{5}
+%\InitVAT{5}
\InitVAT{7}
+% Tax initialisation with a different Code than S in this example Syntax would be
+% \InitVAT{0}[AE]
+
+
\newcommand*{\SetDefaultVAT}[1]{\def\defaultVAT{#1}}
\seq_new:N \l__ptxcd_invoice_items_seq
-%\newcommand*{\AddInvoiceItem}[4][\defaultVAT]{%
+% Auxiliary macro to allow setting the Invoice items at a different position as they are printed later
\NewDocumentCommand{\AddInvoiceItem}{D<>{}O{\defaultVAT}mmm}{
\seq_put_right:Nn \l__ptxcd_invoice_items_seq {
{#2}{#3}{#4}{#5}{#1}
@@ -118,7 +124,7 @@
\PrintInvoiceSum{netto}{\fp_use:N \g__ptxcd_invoice_sum_fp}
\seq_map_inline:Nn \g__ptxcd_VAT_rates_seq {
\fp_compare:nNnF {\fp_use:c {g__ptxcd_invoice_sum_vat##1_fp}} = {0} {
- \zugferd_write_TaxEntry:nnnn {\use:c {__ptxcd_invoice_type_code##1:}} {##1} {\fp_use:c {g__ptxcd_invoice_base_vat##1_fp}} {\fp_use:c {g__ptxcd_invoice_sum_vat##1_fp}}
+ \zugferd_write_TaxEntry:ennn {\use:c {__ptxcd_invoice_type_code##1:}} {##1} {\fp_use:c {g__ptxcd_invoice_base_vat##1_fp}} {\fp_use:c {g__ptxcd_invoice_sum_vat##1_fp}}
\fp_gadd:Nn \g__ptxcd_tax_total_fp {\fp_use:c {g__ptxcd_invoice_sum_vat##1_fp}}
\PrintVatSum[{\fp_use:c {g__ptxcd_invoice_base_vat##1_fp}}]{##1 }{\fp_use:c {g__ptxcd_invoice_sum_vat##1_fp}}
}
@@ -141,16 +147,14 @@
\newcommand*{\PrintInvoiceItem}[5]{%
\stepcounter{invoiceitem}%
\theinvoiceitem%Positionsnummer
- \fp_gset:Nn \g__ptxcd_invoice_item_vat_fp {#2 * (#1/100) * #4}
- \fp_gset:Nn \g__ptxcd_invoice_item_fp {#2 * #4}
-% \fp_gadd:Nn \g__ptxcd_invoice_sum_vat_fp
+ \zugferd_fp_gset_rounded:Nn \g__ptxcd_invoice_item_vat_fp {#2 * (#1/100) * #4}
+ \zugferd_fp_gset_rounded:Nn \g__ptxcd_invoice_item_fp {#2 * #4}
\fp_gadd:cn {g__ptxcd_invoice_base_vat#1_fp} {\g__ptxcd_invoice_item_fp}
\fp_gadd:cn {g__ptxcd_invoice_sum_vat#1_fp} {\g__ptxcd_invoice_item_vat_fp}
\fp_gadd:Nn \g__ptxcd_invoice_sum_fp {\g__ptxcd_invoice_item_fp}
- % position nummer name einzel-preis anzahl gesamtpreis
- \keys_set:ne {zugferd}{tax/rate=#1, tax/category=\use:c {__ptxcd_invoice_type_code#1:},#5}
- \zugferd_write_Item:nnnnnn {\theinvoiceitem} {} {#3} {#4} {#2} {\fp_use:N \g__ptxcd_invoice_item_fp}
+ % optionen position nummer name einzel-preis anzahl gesamtpreis
+ \zugferd_write_Item:ennnnnn {tax/rate=#1, tax/category=\use:c {__ptxcd_invoice_type_code#1:},#5} {\theinvoiceitem} {} {#3} {#4} {#2} {\fp_use:N \g__ptxcd_invoice_item_fp}
&#2% Anzahl
&#3\space(\printVAT{#1}~MwSt.)% Beschreibung mit Angabe der MwSt, in Klammern
diff --git a/Master/texmf-dist/tex/latex/zugferd/zugferd.sty b/Master/texmf-dist/tex/latex/zugferd/zugferd.sty
index 15b57b9f321..b7ddbf8fa5d 100644
--- a/Master/texmf-dist/tex/latex/zugferd/zugferd.sty
+++ b/Master/texmf-dist/tex/latex/zugferd/zugferd.sty
@@ -9,19 +9,22 @@
%% Copyright (C) 2023--2024 by Marei Peischl (peiTeX) <marei@peitex.de>
%%
\NeedsTeXFormat{LaTeX2e}[2023-11-01]
-\ProvidesExplPackage{zugferd}{2024-09-11}{0.8}{Create ZUGFerd invoices using LaTeX}
+\ProvidesExplPackage{zugferd}{2025-01-02}{0.9d}{Create ZUGFerd invoices using LaTeX}
\tl_new:N \l__zugferd_tmp_tl
\str_new:N \g__zugferd_format_str
\str_new:N \g__zugferd_businessProcessId_str
\bool_new:N \g__zugferd_writeTradeContact_bool
\bool_new:N \g__zugferd_writePaymentMeans_bool
+\bool_new:N \g__zugferd_minimum_bool
\str_new:N \g__zugferd_conformance_level_str
+\tl_new:N \g__zugferd_xml_embedded_file_tl
\char_set_catcode_other:N \#%
\keys_define:nn {zugferd} {
xrechnung .code:n = {
\bool_gset_true:N \g__zugferd_writeTradeContact_bool
\bool_gset_true:N \g__zugferd_writePaymentMeans_bool
\str_gset:Nn \g__zugferd_conformance_level_str {XRECHNUNG}
+\tl_gset:Nn \g__zugferd_xml_embedded_file_tl {xrechnung.xml}
},
format .choice:,
format / xrechnung3.0 .code:n = {
@@ -46,6 +49,17 @@ urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:basic
\bool_gset_false:N \g__zugferd_writeTradeContact_bool
\bool_gset_false:N \g__zugferd_writePaymentMeans_bool
\str_gset:Nn \g__zugferd_conformance_level_str {BASIC}
+\tl_gset:Nn \g__zugferd_xml_embedded_file_tl {factur-x.xml}
+},
+format / minimum .code:n = {
+\str_gset:Nx \g__zugferd_format_str {
+urn:factur-x.eu:1p0:minimum
+}
+\bool_gset_true:N \g__zugferd_minimum_bool
+\bool_gset_false:N \g__zugferd_writeTradeContact_bool
+\bool_gset_false:N \g__zugferd_writePaymentMeans_bool
+\str_gset:Nn \g__zugferd_conformance_level_str {MINIMUM}
+\tl_gset:Nn \g__zugferd_xml_embedded_file_tl {factur-x.xml}
},
format / xrechnung .meta:n = { format = xrechnung3.0 },
format .initial:n = xrechnung,
@@ -64,7 +78,9 @@ xml-file .usage:n = load,
auto-exemption .bool_gset:N = \g__zugferd_auto_exemption_bool,
auto-exemption .initial:n = true,
auto-exemption .default:n = true,
-auto-exemption .usage:n =load,
+auto-exemption .usage:n = load,
+unknown-value-warning .bool_gset:N = \g__zugferd_unknown_value_warning_bool,
+unknown-value-warning .initial:n = true,
}
\char_set_catcode_parameter:N \#%
@@ -78,42 +94,47 @@ Activate~it~using~\string\DocumentMetadata.
} {
See~ZUGFeRD~or~PDFmanagement~documentation~for~more~information.
}
-\msg_error:nn{zugferd} {PDFmanagement-not-active}
+\msg_error:nn {zugferd} {PDFmanagement-not-active}
+}
+\IfPackageAtLeastTF{pdfmanagement-testphase}{2024/09/13}{}{
+\msg_new:nnn {zugferd} {PDFmanagement-too-old} {
+Your~version~of~\LaTeX's~PDF~management~is~too~old.
+You~need~to~update~your~LaTeX~distribution~to~be~able~to~use~the~zugferd~package~correctly.
+}
+\msg_error:nn{zugferd} {PDFmanagement-too-old}
}
%% based on experiments for l3pdfmeta by Ulrike Fischer
\pdfmeta_xmp_xmlns_new:nn {fx}{
urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0\c_hash_str
}
-\cs_generate_variant:Nn \__pdfmeta_xmp_schema_new:nnn {nne}
-
-\__pdfmeta_xmp_schema_new:nne
+\pdfmeta_xmp_schema_new:nnn
{Factur-X~PDFA~Extension~Schema}
{fx}
{urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0\c_hash_str}
-\__pdfmeta_xmp_property_new:nnnnn
+\pdfmeta_xmp_property_new:nnnnn
{fx}
{DocumentFileName}
{Text}
{external}
{name~of~the~embedded~XML~invoice~file}
-\__pdfmeta_xmp_property_new:nnnnn
+\pdfmeta_xmp_property_new:nnnnn
{fx}
{DocumentType}
{Text}
{external}
{INVOICE}
-\__pdfmeta_xmp_property_new:nnnnn
+\pdfmeta_xmp_property_new:nnnnn
{fx}
{Version}
{Text}
{external}
{The~actual~version~of~the~factur-x~schema}
-\__pdfmeta_xmp_property_new:nnnnn
+\pdfmeta_xmp_property_new:nnnnn
{fx}
{ConformanceLevel}
{Text}
@@ -122,7 +143,7 @@ urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0\c_hash_str
\exp_args:Ne \pdfmeta_xmp_add:n {
<fx:DocumentType>INVOICE</fx:DocumentType>\iow_newline:
-<fx:DocumentFileName>factur-x.xml</fx:DocumentFileName>\iow_newline:
+<fx:DocumentFileName>\g__zugferd_xml_embedded_file_tl</fx:DocumentFileName>\iow_newline:
<fx:Version>1.0</fx:Version>\iow_newline:
<fx:ConformanceLevel>\g__zugferd_conformance_level_str</fx:ConformanceLevel>%
\iow_newline:
@@ -135,10 +156,13 @@ urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0\c_hash_str
{zugferd} {#2}
}
\let\SetZugferdData\SetZUGFeRDData
+\NewExpandableDocumentCommand{\UseZUGFeRDElement}{m}{
+\tl_use:c {l__zugferd_#1_tl}
+}
\NewDocumentCommand{\InsertZUGFeRDData}{om}{
\str_case:nnF {#1} {
{AddressData} {
-\clist_map_inline:nn {name, lineone, linetwo} {
+\clist_map_inline:nn {name, lineone, linetwo,linethree} {
\prop_if_in:cnT {g__zugferd_#2_AddressData_prop } {##1} {
\prop_item:cn {g__zugferd_#2_AddressData_prop } {##1}\\
}
@@ -216,17 +240,17 @@ Writing~of~XML~file~is~deactivated.
\group_begin:
\pdfdict_put:nnn {l_pdffile/Filespec} {AFRelationship}{/Alternative}
\pdfdict_put:nnn {l_pdffile/Filespec} {Desc}{(Factur-X/ZUGFeRD-Rechnung)}
-\pdffile_embed_file:nnn {\g__zugferd_xml_file_tl}{factur-x.xml}
+\exp_args:NnV \pdffile_embed_file:nnn {\g__zugferd_xml_file_tl} \g__zugferd_xml_embedded_file_tl
{zugferd/rechnung}
\group_end:
-\pdfmanagement_add:nnx
-{Catalog/Names}
-{EmbeddedFiles}
+\pdfmanagement_add:nee
+{Catalog/Names/EmbeddedFiles}
+{\g__zugferd_xml_embedded_file_tl}
{\pdf_object_ref:n{zugferd/rechnung}}
\pdfmanagement_add:nnx{Catalog}{AF}{\pdf_object_ref:n{zugferd/rechnung}}
}
}
-%% Code using the data for visible representation
+%% Code using the data for visual representation
\cs_new:Nn \zugferd_enable_XML_interfaces: {
\bool_if:NT \g__zugferd_write_xml_bool {
\cs_gset:Nn \zugferd_write_Header: {
@@ -236,8 +260,12 @@ Writing~of~XML~file~is~deactivated.
\cs_gset:Nn \zugferd_write_Footer: {
\__zugferd_insert_Footer:
}
+\bool_if:NTF \g__zugferd_minimum_bool {
+\cs_gset_eq:NN \zugferd_write_Item:nnnnnn \use_none:nnnnnn
+}{
\cs_gset_eq:NN \zugferd_write_Item:nnnnnn
\__zugferd_insert_TradeLineItem:nnnnnn
+}
\cs_gset:Nn \zugferd_startInvoiceSums: {
\__zugferd_ApplicableHeaderTradeAgreement:
\__zugferd_ApplicableHeaderTradeSettlement_start:
@@ -246,7 +274,11 @@ Writing~of~XML~file~is~deactivated.
\cs_gset:Nn \zugferd_stopInvoiceSums: {
\__zugferd_ApplicableHeaderTradeSettlement_stop:
}
+\bool_if:NTF \g__zugferd_minimum_bool {
+\cs_gset_eq:NN \zugferd_write_TaxEntry:nnnn \use_none:nnnn
+} {
\cs_gset_eq:NN \zugferd_write_TaxEntry:nnnn \__zugferd_ApplicableTradeTax:nnnn
+}
\cs_gset:Nn \zugferd_write_Summation:nnnnnnnn {
\__zugferd_SpecifiedTradePaymentTerms:
\__zugferd_SpecifiedTradeSettlementHeaderMonetarySummation:nnnnnnnn
@@ -268,6 +300,14 @@ Writing~of~XML~file~is~deactivated.
}{
\zugferd_disable_XML_interfaces:
}
+\cs_new:Nn \zugferd_write_Item:nnnnnnn {
+\group_begin:
+\keys_set:nn {zugferd/item} {#1}
+\zugferd_write_Item:nnnnnn {#2} {#3} {#4} {#5} {#6} {#7}
+\group_end:
+}
+\cs_generate_variant:Nn \zugferd_write_Item:nnnnnnn {ennnnnn}
+\cs_generate_variant:Nn \zugferd_write_TaxEntry:nnnn {ennn}
\bool_if:NTF \g__zugferd_write_xml_bool {
\cs_new:Nn \__zugferd_write_xml:n {
\iow_now:Ne \__zugferd_xml_writer_iow {\__zugferd_xml_auto_indent: #1}
@@ -288,7 +328,7 @@ parse-numbers=true,
round-mode=places,
round-precision=#1,
round-pad = false,
-group-digits=false,
+group-digits=none,
minimum-decimal-digits=#1,
output-decimal-marker=.
}
@@ -329,17 +369,20 @@ output-decimal-marker=.
%% 2019-2024 LaTeX Project
%% modifications have been made to support the mechanism if hyperref is not loaded
\cs_new:Nn \zugferd_disable_macros: {
-\let\{\textbraceleft
-\let\}\textbraceright
-\let\\\textbackslash
-\let\#\textnumbersign
-\let\$\textdollar
-\let\%\textpercent
-\let\&\textampersand
-\let\_\textunderscore
-\let\P\textparagraph
-\let\ldots\textellipsis
-\let\dots\textellipsis
+\let\{\c_left_brace_str
+\let\textbraceleft\c_left_brace_str
+\let\}\c_right_brace_str
+\let\textbraceright\c_right_brace_str
+\let\#\c_hash_str
+\let\textnumbersign\c_hash_str
+\let\$\c_dollar_str
+\let\textdollar\c_dollar_str
+\let\%\c_percent_str
+\let\&\c_ampersand_str
+\let\_\c_underscore_str
+\def\P{§}
+\def\ldots{…}
+\def\dots{…}
\def\\{\space}%
\def\newline{\space}%
\def\TeX{TeX}%
@@ -427,9 +470,55 @@ output-decimal-marker=.
\let\autoref\@gobble
\let\ignorespaces\relax
\let\ensuremath\@firstofone
+\def\ {\space\relax}% space
+\exp_args:NV \cs_set_nopar:cpn \c_space_tl {\space}
+\let\nobreakspace\space
\hook_use:n {zugferd/disable-macros}
}
\hook_new:n {zugferd/disable-macros}
+\tl_new:N \g__zugferd_tmp_tl
+\cs_new:Nn \zugferd_tl_gset_escaped_xml:Nn {
+\group_begin:
+\zugferd_disable_macros:
+\__zugferd_escape_xml_aux:
+\tl_gset_rescan:Nnn #1 {
+\cctab_select:N \c_str_cctab
+\__zugferd_escape_xml_activate:
+ } {#2}
+\tl_gset:Ne #1 {#1}
+\group_end:
+}
+\cs_new:Nn \zugferd_tl_set_escaped_xml:Nn {
+\zugferd_tl_gset_escaped_xml:Nn \g__zugferd_tmp_tl {#2}
+\tl_set_eq:NN #1 \g__zugferd_tmp_tl
+}
+\cs_new:Nn \__zugferd_escape_xml_aux: {
+\edef\&{\tl_to_str:n {&amp;}}
+\edef\textgreater{\tl_to_str:n {&gt;}}
+\edef\textless{\tl_to_str:n {&lt;}}
+\edef\textquotedbl{\tl_to_str:n {&quot;}}
+\edef\textquotesingle{\tl_to_str:n {&apos;}}
+\char_set_active_eq:NN > \textgreater
+\char_set_active_eq:NN < \textless
+\char_set_active_eq:NN " \textquotedbl
+\char_set_active_eq:NN ' \textquotesingle
+\char_set_active_eq:NN & \&
+}
+\cs_new:Nn \__zugferd_escape_xml_activate: {
+\char_set_catcode_active:N >
+\char_set_catcode_active:N <
+\char_set_catcode_active:N "
+\char_set_catcode_active:N '
+\char_set_catcode_active:N &
+}
+\cs_set:Nn \zugferd_fp_set_rounded:Nn {
+\__zugferd_number_format:nNn {2} \l__zugferd_tmp_tl {\fp_eval:n {#2}}
+\fp_set:Nn #1 {\l__zugferd_tmp_tl }
+}
+\cs_set:Nn \zugferd_fp_gset_rounded:Nn {
+\__zugferd_number_format:nNn {2} \l__zugferd_tmp_tl {\fp_eval:n {#2}}
+\fp_gset:Nn #1 {\l__zugferd_tmp_tl }
+}
\seq_new:N \g__zugferd_notes_seq
\tl_new:N \g__zugferd_id_tl
\tl_new:N \g__zugferd_date_tl
@@ -442,6 +531,20 @@ output-decimal-marker=.
document-type .choice:,
document-type / commercial-invoice .code:n =
\tl_gset:Nn \g__zugferd_DocumentTypeCode_tl {380},
+document-type / partial-invoice .code:n =
+\tl_gset:Nn \g__zugferd_DocumentTypeCode_tl {326},
+document-type / corrected-invoice .code:n =
+\tl_gset:Nn \g__zugferd_DocumentTypeCode_tl {384},
+document-type / self-billed-invoice .code:n =
+\tl_gset:Nn \g__zugferd_DocumentTypeCode_tl {389},
+document-type / credit-note .code:n =
+\tl_gset:Nn \g__zugferd_DocumentTypeCode_tl {381},
+document-type / partial-construction-invoice .code:n =
+\tl_gset:Nn \g__zugferd_DocumentTypeCode_tl {875},
+document-type / partial-final-construction-invoice .code:n =
+\tl_gset:Nn \g__zugferd_DocumentTypeCode_tl {876},
+document-type / final-construction-invoice .code:n =
+\tl_gset:Nn \g__zugferd_DocumentTypeCode_tl {877},
document-type .initial:n = commercial-invoice,
id .choice:,
id / komavar .code:n = \tl_gset:Nf \g__zugferd_id_tl {\scr@invoice@var},
@@ -456,7 +559,9 @@ currency / unknown .code:n = {
}
{\keys_set:nx { zugferd } {unit= {\str_uppercase:f {#1}}}}
{
+\bool_if:NT \g__zugferd_unknown_value_warning_bool {
\msg_warning:nnn { zugferd } {unknown-value} {currency} {#1}
+}
\tl_set:Ne \l__zugferd_currency_tl {\str_uppercase:f {#1}}
}
},
@@ -479,9 +584,9 @@ delivery-date / unknown .code:n = {
\tl_gset:Nn \g__zugferd_delivery_date_tl {#1}
},
delivery-date .initial:n = auto,
-due-date .tl_gset:N = \__zugferd_due_date_tl,
+due-date .tl_gset:N = \g__zugferd_due_date_tl,
due-date .initial:n =,
-payment-terms .str_gset:N = \__zugferd_payment_terms_str,
+payment-terms .str_gset:N = \g__zugferd_payment_terms_str,
payment-terms .initial:n =,
subject .choice:,
subject / komavar .code:n = {
@@ -512,24 +617,25 @@ For~more~information~see~the~zugferd~documentation.
address .code:n = {
\seq_set_split:Nnn \l_tmpa_seq {\\} {##1}
\keys_set:nx {zugferd / #1} {
-lineone=\seq_item:Nn \l_tmpa_seq {1},
-linetwo=\seq_item:Nn \l_tmpa_seq {2}
+lineone={\seq_item:Nn \l_tmpa_seq {1}},
+linetwo={\seq_item:Nn \l_tmpa_seq {2}},
+linethree={\seq_item:Nn \l_tmpa_seq {3}}
}
},
contact .code:n = {
\seq_set_split:Nnn \l_tmpa_seq {\\} {##1}
\int_compare:nNnTF {\seq_count:N \l_tmpa_seq} > {3} {
\keys_set:ne {zugferd/#1} {
-contact-name = \seq_item:Nn \l_tmpa_seq {1},
-contact-department = \seq_item:Nn \l_tmpa_seq {2},
-contact-phone = \seq_item:Nn \l_tmpa_seq {3},
-contact-email= \seq_item:Nn \l_tmpa_seq {4}
+contact-name = {\seq_item:Nn \l_tmpa_seq {1}},
+contact-department = {\seq_item:Nn \l_tmpa_seq {2}},
+contact-phone = {\seq_item:Nn \l_tmpa_seq {3}},
+contact-email= {\seq_item:Nn \l_tmpa_seq {4}},
}
}{
\keys_set:ne {zugferd/#1} {
-contact-name = \seq_item:Nn \l_tmpa_seq {1},
-contact-phone = \seq_item:Nn \l_tmpa_seq {2},
-contact-email= \seq_item:Nn \l_tmpa_seq {3}
+contact-name = {\seq_item:Nn \l_tmpa_seq {1}},
+contact-phone = {\seq_item:Nn \l_tmpa_seq {2}},
+contact-email= {\seq_item:Nn \l_tmpa_seq {3}},
}
}
},
@@ -539,25 +645,37 @@ unknown .code:n = \tl_if_blank:nF {##1} {
}
}
}
+\cs_new:Nn \__zugferd_TradePartyIdentity:N {
+\__zugferd_TradePartyIdentity:eeeee
+{\prop_item:Nn #1 {id}}
+{\prop_item:Nn #1 {name}}
+{\prop_item:Nn #1 {legal-description}}
+{\prop_item:Nn #1 {legal-id}}
+{\prop_item:Nn #1 {trading-name}}
+}
\cs_new:Nn \__zugferd_PostalTradeAddress_short:N {
\exp_args:Ne \tl_if_blank:nF {\prop_item:Nn #1 {name}}
{<ram:Name>\prop_item:Nn #1 {name}</ram:Name>\iow_newline:\__zugferd_xml_auto_indent:}
-\__zugferd_PostalTradeAddress:eeeee
+\__zugferd_PostalTradeAddress:eeeeeee
{\prop_item:Nn #1 {postcode}}
{\prop_item:Nn #1 {lineone}}
{\prop_item:Nn #1 {linetwo}}
+{\prop_item:Nn #1 {linethree}}
{\prop_item:Nn #1 {city}}
{\prop_item:Nn #1 {country}}
+{\prop_item:Nn #1 {subdivision}}
}
\cs_new:Nn \__zugferd_PostalTradeAddress:N {%
\__zugferd_PostalTradeAddress:eeeeeee
{\prop_item:Nn #1 {postcode}}
{\prop_item:Nn #1 {lineone}}
{\prop_item:Nn #1 {linetwo}}
+{\prop_item:Nn #1 {linethree}}
{\prop_item:Nn #1 {city}}
{\prop_item:Nn #1 {country}}
-{\prop_item:Nn #1 {email}}
-{\prop_item:Nn #1 {vatid}}
+{\prop_item:Nn #1 {subdivision}}
+\__zugferd_UniversalCommunication:n {\prop_item:Nn #1 {email}}
+\__zugferd_TaxRegistration:nn {\prop_item:Nn #1 {vatid}} {\prop_item:Nn #1 {taxid}}
}%
\cs_new:Nn \__zugferd_DefinedTradeContact:N {%
\__zugferd_DefinedTradeContact:eeee
@@ -567,29 +685,59 @@ unknown .code:n = \tl_if_blank:nF {##1} {
{\prop_item:Nn #1 {contact-email}}
}%
\cctab_begin:N \g__zugferd_xml_cctab%
-\__zugferd_define_xml_content:Nn \__zugferd_PostalTradeAddress:nnnnn {%
+\__zugferd_define_xml_content:Nn \__zugferd_TradePartyIdentity:nnnnn {%
+%%<!-- BT-29 -->
+\__zugferd_write_inline:nn {ram:ID} {#1}
+%%<!-- BT-27 -->
+\__zugferd_write_inline:nn {ram:Name} {#2}
+%%<!-- BT-33 -->
+\__zugferd_write_inline:nn {ram:Description} {#3}
+\tl_if_blank:eF {#4#5} {%
+<ram:SpecifiedLegalOrganization>
+%%%<!-- BT-30 -->
+\__zugferd_write_inline_i:nnn {ram:ID} {~schemeID="0088"} {#4}
+%%<!-- BT-28 -->
+\__zugferd_write_inline_i:nn {ram:TradingBusinessName} {#5}
+</ram:SpecifiedLegalOrganization>
+}%
+}%
+\__zugferd_define_xml_content:Nn \__zugferd_PostalTradeAddress:nnnnnnn {%
<ram:PostalTradeAddress>
-\__zugferd_indent: <ram:PostcodeCode>#1</ram:PostcodeCode>
-\tl_if_blank:nF {#2} {%
-\__zugferd_indent: <ram:LineOne>#2</ram:LineOne>
+\bool_if:NF \g__zugferd_minimum_bool {%
+\__zugferd_write_inline_i:nn {ram:PostcodeCode} {#1}
+\__zugferd_write_inline_i:nn {ram:LineOne} {#2}
+\__zugferd_write_inline_i:nn {ram:LineTwo} {#3}
+\__zugferd_write_inline_i:nn {ram:LineThree} {#4}
+\__zugferd_write_inline_i:nn {ram:CityName} {#5}
}%
-\tl_if_blank:nF {#3} {%
-\__zugferd_indent: <ram:LineTwo>#3</ram:LineTwo>
+\__zugferd_indent: <ram:CountryID>#6</ram:CountryID>
+\bool_if:NF \g__zugferd_minimum_bool {%
+\__zugferd_write_inline_i:nn {ram:CountrySubDivisionName} {#7}
}%
-\__zugferd_indent: <ram:CityName>#4</ram:CityName>
-\__zugferd_indent: <ram:CountryID>#5</ram:CountryID>
</ram:PostalTradeAddress>%
-}
-\__zugferd_define_xml_content:Nn \__zugferd_PostalTradeAddress:nnnnnnn {%
-\__zugferd_PostalTradeAddress:nnnnn {#1} {#2} {#3} {#4} {#5}
-\tl_if_empty:nF {#6} {%
+}%
+\bool_if:NTF \g__zugferd_minimum_bool {%
+\cs_set_eq:NN \__zugferd_UniversalCommunication:n \use_none:n%
+} {%
+\__zugferd_define_xml_content:Nn \__zugferd_UniversalCommunication:n {%
+\tl_if_blank:eF {#1} {
<ram:URIUniversalCommunication>
-\__zugferd_indent: <ram:URIID~schemeID="EM">#6</ram:URIID>
+\__zugferd_indent: <ram:URIID~schemeID="EM">#1</ram:URIID>
</ram:URIUniversalCommunication>%
}%
-\tl_if_empty:nF {#7} {
+}%
+}%
+\__zugferd_define_xml_content:Nn \__zugferd_TaxRegistration:nn {%
+%%%<!-- BT-34 -->
+\tl_if_blank:eF {#1} {
+<ram:SpecifiedTaxRegistration>
+\__zugferd_indent: <ram:ID~schemeID="VA">#1</ram:ID>
+</ram:SpecifiedTaxRegistration>%
+}%
+%%%<!-- BT-32 -->
+\tl_if_blank:eF {#2} {
<ram:SpecifiedTaxRegistration>
-\__zugferd_indent: <ram:ID~schemeID="VA">#7</ram:ID>
+\__zugferd_indent: <ram:ID~schemeID="FC">#2</ram:ID>
</ram:SpecifiedTaxRegistration>%
}%
}%
@@ -598,32 +746,27 @@ unknown .code:n = \tl_if_blank:nF {##1} {
\bool_if:NT \g__zugferd_writeTradeContact_bool {%
<ram:DefinedTradeContact>
\__zugferd_indent: <ram:PersonName>#1</ram:PersonName>
-\tl_if_blank:nF {#2} {%
-\__zugferd_indent: <ram:DepartmentName>#2</ram:DepartmentName>
-}%
-\tl_if_blank:nF {#3} {%
-\__zugferd_indent: <ram:TelephoneUniversalCommunication>
-\__zugferd_indent:n {2} <ram:CompleteNumber>#3</ram:CompleteNumber>
-\__zugferd_indent: </ram:TelephoneUniversalCommunication>
-}%
-\tl_if_blank:nF {#4} {%
-\__zugferd_indent: <ram:EmailURIUniversalCommunication>
-\__zugferd_indent:n {2} <ram:URIID>#4</ram:URIID>
-\__zugferd_indent: </ram:EmailURIUniversalCommunication>
-}%
+\__zugferd_write_inline_i:nn {ram:DepartmentName} {#2}
+\__zugferd_write_inline_wrapped_i:nnn {ram:TelephoneUniversalCommunication} {ram:CompleteNumber} {#3}
+\__zugferd_write_inline_wrapped_i:nnn {ram:EmailURIUniversalCommunication} {ram:URIID} {#4}
</ram:DefinedTradeContact>%
}%
}%
\__zugferd_define_xml_writer:Nn \__zugferd_ApplicableHeaderTradeAgreement: {%
\__zugferd_write_xml:n {<ram:ApplicableHeaderTradeAgreement>}%
\int_gincr:N \g__zugferd_indent_int%
+\bool_lazy_and:nnF%
+{\tl_if_blank_p:V \g__zugferd_buyer_reference_tl}%
+{\g__zugferd_minimum_bool}%
+{%
\__zugferd_write_xml:e {%
<ram:BuyerReference>\g__zugferd_buyer_reference_tl</ram:BuyerReference>
-<ram:SellerTradeParty>%
}%
+}%
+\__zugferd_write_xml:n {<ram:SellerTradeParty>}%
\int_gincr:N \g__zugferd_indent_int%
\__zugferd_write_xml:e {%
-<ram:Name>\prop_item:Nn \g__zugferd_seller_AddressData_prop {name}</ram:Name>
+\__zugferd_TradePartyIdentity:N \g__zugferd_seller_AddressData_prop
\__zugferd_DefinedTradeContact:N \g__zugferd_seller_AddressData_prop%
\__zugferd_PostalTradeAddress:N \g__zugferd_seller_AddressData_prop%
}%
@@ -634,15 +777,22 @@ unknown .code:n = \tl_if_blank:nF {##1} {
}%
\int_gincr:N \g__zugferd_indent_int%
\__zugferd_write_xml:e {%
-<ram:Name>\prop_item:Nn \g__zugferd_buyer_AddressData_prop {name}</ram:Name>
+\__zugferd_TradePartyIdentity:N \g__zugferd_buyer_AddressData_prop
+\bool_if:NF \g__zugferd_minimum_bool {
\__zugferd_DefinedTradeContact:N \g__zugferd_buyer_AddressData_prop%
\__zugferd_PostalTradeAddress:N \g__zugferd_buyer_AddressData_prop%
}%
+}%
\int_gdecr:N \g__zugferd_indent_int%
\__zugferd_write_xml:n {</ram:BuyerTradeParty>}%
+\clist_map_inline:nn {SellerOrder,BuyerOrder,Contract} {%
+\__zugferd_write_ReferencedDocument:n {##1}%
+}%
\int_gdecr:N \g__zugferd_indent_int%
-\__zugferd_write_xml:n {</ram:ApplicableHeaderTradeAgreement>}
-\__zugferd_ApplicableHeaderTradeDelivery:V \g__zugferd_delivery_date_tl%
+\__zugferd_write_xml:n {</ram:ApplicableHeaderTradeAgreement>}%
+\bool_if:NTF \g__zugferd_minimum_bool%
+{\__zugferd_write_xml:n {<ram:ApplicableHeaderTradeDelivery/>}}%
+{\__zugferd_ApplicableHeaderTradeDelivery:V \g__zugferd_delivery_date_tl}%
}%
\__zugferd_define_xml_content:Nn \__zugferd_ApplicableHeaderTradeDelivery:n {%
\bool_lazy_and:nnF {\prop_if_empty_p:N \g__zugferd_shipto_AddressData_prop}%
@@ -673,8 +823,8 @@ unknown .code:n = \tl_if_blank:nF {##1} {
}%
}%
\cctab_end:
+\cs_generate_variant:Nn \__zugferd_TradePartyIdentity:nnnnn {eeeee}
\cs_generate_variant:Nn \__zugferd_DefinedTradeContact:nnnn {eeee}
-\cs_generate_variant:Nn \__zugferd_PostalTradeAddress:nnnnn {eeeee}%
\cs_generate_variant:Nn \__zugferd_PostalTradeAddress:nnnnnnn {eeeeeee}
\cs_generate_variant:Nn \__zugferd_ApplicableHeaderTradeDelivery:n {V}
\tl_new:N \g__zugferd_buyer_reference_tl
@@ -687,6 +837,26 @@ reference / unknown .code:n = {
\tl_gset:Nn \g__zugferd_buyer_reference_tl {#1}
}
}
+\prop_new:N \g__zugferd_document_references_prop
+\clist_new:N \g__zugferd_buyer_document_references_clist
+\keys_define:nn {zugferd} {
+contract-reference .prop_gput:N = \g__zugferd_document_references_prop,
+buyerorder-reference .prop_gput:N = \g__zugferd_document_references_prop,
+purchase-order-reference .meta:n = {buyerorder-reference=#1},
+sellerorder-reference .prop_gput:N = \g__zugferd_document_references_prop,
+sales-order-reference .meta:n = {sellerorder-reference=#1},
+}
+\cctab_begin:N \g__zugferd_xml_cctab%
+\__zugferd_define_xml_writer:Nn \__zugferd_write_ReferencedDocument:n {%
+\prop_if_in:NeT \g__zugferd_document_references_prop {\str_lowercase:n {#1}-reference} {%
+\__zugferd_write_xml:e {%
+<ram:#1ReferencedDocument>
+\__zugferd_indent:<ram:IssuerAssignedID>\prop_item:Ne \g__zugferd_document_references_prop {\str_lowercase:n {#1}-reference}</ram:IssuerAssignedID>
+</ram:#1ReferencedDocument>%
+}%
+}%
+}%
+\cctab_end:
\ExplSyntaxOff
\providecommand*{\zugferd@paymentMeans@german}{
1 = Keine Zahlungsart definiert,
@@ -721,7 +891,9 @@ payment-means / type .choices:nn = {1,10,30,42,48,49,57,58,59,97} {
\tl_gset_eq:NN \g__zugferd_payment_means_tl \l_keys_choice_tl
},
payment-means / unknown .code:n = {
+\bool_if:NT \g__zugferd_unknown_value_warning_bool {
\msg_warning:nnn { zugferd } {unknown-value} {payment-means} {#1}
+}
\tl_gset:Nn \g__zugferd_payment_means_tl {\int_eval:n {#1}}
}
}
@@ -763,7 +935,9 @@ unit / unknown .code:n = {
{
\keys_set:ne { zugferd } {unit= {\l_tmpa_tl}}
} {
+\bool_if:NT \g__zugferd_unknown_value_warning_bool {
\msg_warning:nnn { zugferd } {unknown-unit} {#1}
+}
\tl_set_eq:NN \l__zugferd_unit_code_tl \l_tmpa_tl
}
},
@@ -854,25 +1028,57 @@ category / unknown .code:n = {
{
\keys_set:nx { zugferd } {category= {\str_uppercase:f {#1}}}
} {
+\tl_set:Ne \l__zugferd_tax_category_code_tl {\str_uppercase:f {#1}}
+\bool_if:NT \g__zugferd_unknown_value_warning_bool {
\msg_warning:nnn { zugferd } {unknown-tax-category} {#1}
}
+}
},
category .initial:n = S,
category .usage:n = general,
rate .fp_set:N = \l__zugferd_tax_rate_fp,
rate .initial:n = 19,
-rate .usage:n = general,
+rate .usage:n = general
+}%
+\keys_define:nn {zugferd/item} {
+tax .choice:,
+tax / unknown .code:n = \keys_set:ne {zugferd/tax} { \l_keys_key_str = \exp_not:V \l_keys_value_tl},
+unknown .code:n = \keys_set:ne {zugferd} { \l_keys_key_str = \exp_not:V \l_keys_value_tl}
+}
+\keys_define:nn { zugferd / item } {
+start-date .tl_gset:N = \l__zugferd_start_date_tl,
+start-date .initial:n =,
+end-date .tl_gset:N = \l__zugferd_end_date_tl,
+end-date .initial:n =,
+}%
+\__zugferd_define_xml_content:Nn \__zugferd_write_inline:nn {
+\__zugferd_write_inline:nnn {#1} {} {#2}
+}
+\__zugferd_define_xml_content:Nn \__zugferd_write_inline:nnn {
+\tl_if_blank:nF {#3} {
+<#1#2>#3</#1>
}
-\__zugferd_define_xml_writer:Nn \__zugferd_write_inline:nn {
-\tl_if_blank:nF {#2} {
-<#1>#2</#1>
}
+\__zugferd_define_xml_content:Nn \__zugferd_write_inline_wrapped:nnnn {
+\__zugferd_indent:n {#1} <#2>\__zugferd_xml_newline_indent:
+\__zugferd_indent:n {#1+1} <#3>#4</#3>\__zugferd_xml_newline_indent:
+\__zugferd_indent:n {#1} </#2>
}
+\__zugferd_define_xml_content:Nn \__zugferd_write_inline_wrapped_i:nnn {
+\__zugferd_write_inline_wrapped:nnnn {1} {#1} {#2} {#3}
+}
+
\cs_generate_variant:Nn \__zugferd_write_inline:nn {ne}
-\__zugferd_define_xml_writer:Nn \__zugferd_write_inline_i:nn {
-\__zugferd_indent: \__zugferd_write_inline:nn {#1} {#2}
+\__zugferd_define_xml_content:Nn \__zugferd_write_inline_i:nnn {
+\__zugferd_indent: \__zugferd_write_inline:nnn {#1} {#2} {#3}
+}
+\__zugferd_define_xml_content:Nn \__zugferd_write_inline_i:nn {
+\__zugferd_write_inline_i:nnn {#1} {} {#2}
}
\cctab_begin:N \g__zugferd_xml_cctab%
+\bool_if:NTF \g__zugferd_minimum_bool {%
+\cs_set_eq:NN \__zugferd_write_note:n \use_none:n%
+} {%
\__zugferd_define_xml_writer:Nn \__zugferd_write_note:n {%
\begingroup%
\let\\\iow_newline:%
@@ -885,6 +1091,7 @@ rate .usage:n = general,
}%
\endgroup%
}%
+}%
\begingroup%
\char_set_catcode_other:N \#%
\char_set_catcode:nn {32}{10}%
@@ -950,9 +1157,11 @@ xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">%
\__zugferd_indent: <ram:LineID>#1</ram:LineID>
</ram:AssociatedDocumentLineDocument>%
}%
-\__zugferd_define_xml_writer:Nn \__zugferd_SpecifiedTradeProduct:nn {%
+\__zugferd_define_xml_content:Nn \__zugferd_SpecifiedTradeProduct:nn {%
<ram:SpecifiedTradeProduct>
-\tl_if_empty:nF {#1} {%
+\bool_lazy_or:nnF%
+{\tl_if_blank_p:n {#1}}%
+{\str_if_eq_p:Vn \g__zugferd_conformance_level_str {BASIC}} {%
\__zugferd_indent: <ram:SellerAssignedID>#1</ram:SellerAssignedID>
}%
\__zugferd_indent: <ram:Name>#2</ram:Name>
@@ -974,25 +1183,51 @@ xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">%
</ram:SpecifiedLineTradeAgreement>
}%
%%%\subsubsection{SpecifiedLineTradeDelivery}%:nn <unit code > <number>
-\__zugferd_define_xml_writer:Nn \__zugferd_SpecifiedLineTradeDelivery:nn {%
+\__zugferd_define_xml_content:Nn \__zugferd_SpecifiedLineTradeDelivery:nn {%
<ram:SpecifiedLineTradeDelivery>
\__zugferd_indent: <ram:BilledQuantity~unitCode="#1">#2</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
}%
-\__zugferd_define_xml_content:Nn \__zugferd_SpecifiedLineTradeSettlement:nnn {%
-<ram:SpecifiedLineTradeSettlement>
-\__zugferd_indent: <ram:ApplicableTradeTax>
-\__zugferd_indent:n {2} <ram:TypeCode>VAT</ram:TypeCode>
-\__zugferd_indent:n {2} <ram:CategoryCode>#1</ram:CategoryCode>
-\__zugferd_indent:n {2} <ram:RateApplicablePercent>#2</ram:RateApplicablePercent>
-\__zugferd_indent: </ram:ApplicableTradeTax>
-\__zugferd_indent: <ram:SpecifiedTradeSettlementLineMonetarySummation>
-\__zugferd_indent:n {2} <ram:LineTotalAmount>#3</ram:LineTotalAmount>
-\__zugferd_indent: </ram:SpecifiedTradeSettlementLineMonetarySummation>
-</ram:SpecifiedLineTradeSettlement>%
+\__zugferd_define_xml_writer:Nn \__zugferd_write_SpecifiedLineTradeSettlement:nnn {%
+\__zugferd_write_xml:n {<ram:SpecifiedLineTradeSettlement>}%
+\int_gincr:N \g__zugferd_indent_int%
+ \__zugferd_write_xml:e {\__zugferd_Line_ApplicableTradeTax:nn {#1} {#2}}%
+ \__zugferd_write_xml:e {\__zugferd_BillingSpecifiedPeriod:VV \l__zugferd_start_date_tl \l__zugferd_end_date_tl}%
+\__zugferd_write_xml:e {\__zugferd_SpecifiedTradeSettlementLineMonetarySummation:n {#3}}%
+\int_gdecr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:n {</ram:SpecifiedLineTradeSettlement>}%
+}%
+\cs_generate_variant:Nn \__zugferd_write_SpecifiedLineTradeSettlement:nnn {Vnn}%
+\__zugferd_define_xml_content:Nn \__zugferd_Line_ApplicableTradeTax:nn {%
+<ram:ApplicableTradeTax>
+\__zugferd_indent: <ram:TypeCode>VAT</ram:TypeCode>
+\__zugferd_indent: <ram:CategoryCode>#1</ram:CategoryCode>
+\__zugferd_indent: <ram:RateApplicablePercent>#2</ram:RateApplicablePercent>
+</ram:ApplicableTradeTax>
+}%
+\__zugferd_define_xml_content:Nn \__zugferd_BillingSpecifiedPeriod:nn {%
+\bool_lazy_or:nnF {\tl_if_blank_p:n {#1}} {\tl_if_blank_p:n {#2}} {%
+<ram:BillingSpecifiedPeriod>
+
+\__zugferd_indent:<ram:StartDateTime>
+\__zugferd_indent:n {2} <udt:DateTimeString~format="102">#1</udt:DateTimeString>
+\__zugferd_indent:</ram:StartDateTime>
+
+\__zugferd_indent:<ram:EndDateTime>
+\__zugferd_indent:n {2} <udt:DateTimeString~format="102">#2</udt:DateTimeString>
+\__zugferd_indent:</ram:EndDateTime>
+ </ram:BillingSpecifiedPeriod>%
+ }%
}%
+\__zugferd_define_xml_content:Nn \__zugferd_SpecifiedTradeSettlementLineMonetarySummation:n {%
+<ram:SpecifiedTradeSettlementLineMonetarySummation>
+\__zugferd_indent: <ram:LineTotalAmount>#1</ram:LineTotalAmount>
+ </ram:SpecifiedTradeSettlementLineMonetarySummation>%
+}
+
\cctab_end:
\cs_generate_variant:Nn \__zugferd_SpecifiedLineTradeSettlement:nnn {Vnn}
+\cs_generate_variant:Nn \__zugferd_BillingSpecifiedPeriod:nn {VV}
\cs_new:Nn \__zugferd_SpecifiedLineTradeSettlement:nnnn {
\msg_warning:nnnn {zugferd} {macro-deprecated}
{ \__zugferd_SpecifiedLineTradeSettlement:nnnn }
@@ -1017,22 +1252,26 @@ xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">%
\__zugferd_write_xml:n {</ram:SpecifiedLineTradeAgreement>}
\__zugferd_write_xml:e {%
\__zugferd_SpecifiedLineTradeDelivery:nn { \l__zugferd_unit_code_tl } {#5}
-\__zugferd_SpecifiedLineTradeSettlement:Vnn \l__zugferd_tax_category_code_tl %
-{ \fp_use:N \l__zugferd_tax_rate_fp} {#6}
}%
-\int_gdecr:N \g__zugferd_indent_int
+\__zugferd_write_SpecifiedLineTradeSettlement:Vnn \l__zugferd_tax_category_code_tl %
+{ \fp_use:N \l__zugferd_tax_rate_fp} {#6}%
+\int_gdecr:N \g__zugferd_indent_int%
\__zugferd_write_xml:n {</ram:IncludedSupplyChainTradeLineItem>}
}
\__zugferd_define_xml_writer:Nn \__zugferd_SpecifiedTradeSettlementHeaderMonetarySummation:nnnnnnnn {%
\__zugferd_write_xml:n {<ram:SpecifiedTradeSettlementHeaderMonetarySummation>}%
\int_gincr:N \g__zugferd_indent_int%
+\bool_if:NF \g__zugferd_minimum_bool {
\__zugferd_write_rounded:nnn {2} {LineTotalAmount} {#1}
\__zugferd_write_rounded:nnn {2} {ChargeTotalAmount} {#2}
\__zugferd_write_rounded:nnn {2} {AllowanceTotalAmount} {#3}
+}
\__zugferd_write_rounded:nnn {2} {TaxBasisTotalAmount} {#4}
\__zugferd_write_rounded:nnnn {2} {TaxTotalAmount} {~currencyID="\l__zugferd_currency_tl "} {#5}
\__zugferd_write_rounded:nnn {2} {GrandTotalAmount} {#6}
+\bool_if:NF \g__zugferd_minimum_bool {
\__zugferd_write_rounded:nnn {2} {TotalPrepaidAmount} {#7}
+}
\__zugferd_write_rounded:nnn {2} {DuePayableAmount} {#8}
\int_gdecr:N \g__zugferd_indent_int%
\__zugferd_write_xml:n {</ram:SpecifiedTradeSettlementHeaderMonetarySummation>}%
@@ -1042,6 +1281,10 @@ xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">%
\int_gincr:N \g__zugferd_indent_int%
\__zugferd_write_rounded:nnn {2} {CalculatedAmount} {#4}%BT117
\__zugferd_write_xml:n {<ram:TypeCode>VAT</ram:TypeCode>}%BT118
+\begingroup
+\bool_if:NT \g__zugferd_auto_exemption_bool {%
+\keys_set:nn { zugferd / tax } {exemption-reason-auto=#1}
+}%
\tl_if_blank:VF \l__zugferd_tax_exemption_reason_tl {%BT-120
\__zugferd_write_xml:e {<ram:ExemptionReason>
\l__zugferd_tax_exemption_reason_tl
@@ -1049,19 +1292,20 @@ xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">%
}
{{\__zugferd_write_rounded:nnn {2} {BasisAmount} {#3}}}%BT-116
\__zugferd_write_xml:e {<ram:CategoryCode>#1</ram:CategoryCode>}%BT-118
-\tl_if_blank:VF \l__zugferd_tax_exemption_code_tl {%BT121
-\__zugferd_write_xml:e {<ram:ExemptionReasonCode>
-\l__zugferd_tax_exemption_code_tl
-</ram:ExemptionReasonCode>}
-}
+\bool_lazy_or:nnF% BT121
+{\tl_if_blank_p:V \l__zugferd_tax_exemption_code_tl}%
+{\str_if_eq_p:Vn \g__zugferd_conformance_level_str {BASIC}}%
+{%
+\__zugferd_write_xml:e {%
+<ram:ExemptionReasonCode>\l__zugferd_tax_exemption_code_tl</ram:ExemptionReasonCode>%
+}%
+}%
+\endgroup
\__zugferd_write_xml:n {<ram:RateApplicablePercent>#2</ram:RateApplicablePercent>}%BT-119
\int_gdecr:N \g__zugferd_indent_int%
\__zugferd_write_xml:n {</ram:ApplicableTradeTax>}
}%
\cctab_begin:N \g__zugferd_xml_cctab%
-\__zugferd_define_xml_writer:Nn \__zugferd_ApplicableHeaderTradeSettlement:nnnnnnnn {%
-
-}%
\__zugferd_define_xml_writer:Nn \__zugferd_ApplicableHeaderTradeSettlement_start: {%
\__zugferd_write_xml:n {<ram:ApplicableHeaderTradeSettlement>}%
\int_gincr:N \g__zugferd_indent_int%
@@ -1113,7 +1357,9 @@ xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">%
\cctab_end:
\cs_generate_variant:Nn \__zugferd_SpecifiedTradePaymentTerms:nn {VV}
\__zugferd_define_xml_writer:Nn \__zugferd_SpecifiedTradePaymentTerms: {
-\__zugferd_SpecifiedTradePaymentTerms:VV \__zugferd_payment_terms_str \__zugferd_due_date_tl
+\bool_if:NF \g__zugferd_minimum_bool {
+\__zugferd_SpecifiedTradePaymentTerms:VV \g__zugferd_payment_terms_str \g__zugferd_due_date_tl
+}
}
\cs_generate_variant:Nn \__zugferd_SpecifiedTradeSettlementPaymentMeans:nnn {vvv}
\__zugferd_define_xml_writer:Nn \__zugferd_SpecifiedTradeSettlementPaymentMeans: {
diff --git a/Master/texmf-dist/tex/lualatex/bezierplot/bezierplot.lua b/Master/texmf-dist/tex/lualatex/bezierplot/bezierplot.lua
index d023923d455..d8d18441403 100755
--- a/Master/texmf-dist/tex/lualatex/bezierplot/bezierplot.lua
+++ b/Master/texmf-dist/tex/lualatex/bezierplot/bezierplot.lua
@@ -1,19 +1,24 @@
#!/usr/bin/env lua
-- Linus Romer, published 2018 under LPPL Version 1.3c
--- version 1.5 2024-03-31
+-- version 1.6 2024-11-02
abs = math.abs
acos = math.acos
asin = math.asin
atan = math.atan
cos = math.cos
+cosh = math.cosh
+deg = math.deg
exp = math.exp
e = math.exp(1)
+huge = math.huge
log = math.log
pi = math.pi
+rad = math.rad
sin = math.sin
+sinh = math.sinh
sqrt = math.sqrt
tan = math.tan
-huge = math.huge
+tanh = math.tanh
-- just a helper for debugging:
local function printdifftable(t)
@@ -54,8 +59,8 @@ end
local function round(num, decimals)
local result = tonumber(string.format("%." .. (decimals or 0) .. "f", num))
- if abs(result) == 0 then
- return 0
+ if math.floor(result) == result then
+ return math.floor(result)
else
return result
end
@@ -275,7 +280,7 @@ local function do_parameters_fit(a,b,c,d,funcstring,funcgraph,maxerror,isinverse
return true
end
--- f(x)=a*x^3+b*x+c
+-- f(x)=a*x^3+b*x^2+c*x +d
local function parameters_cubic(xp,yp,xq,yq,xr,yr,xs,ys)
return (((xq-xp)*xr^2+(xp^2-xq^2)*xr+xp*xq^2-xp^2*xq)*ys+((xp-xq)
*xs^2+(xq^2-xp^2)*xs-xp*xq^2+xp^2*xq)*yr+((xr-xp)*xs^2+(xp^2-xr^2)
@@ -437,7 +442,7 @@ end
-- and try to approximate it with a cubic bezier curve
-- (round to rndx and rndy when printing)
-- if maxerror <= 0, the function will not be recursive anymore
-local function graphtobezierapprox(f,g,starti,endi,maxerror)
+local function graphtobezierapprox(f,g,starti,endi,maxerror,recursiondepth)
local px = g[starti][1]
local py = g[starti][2]
local dp = g[starti][3]
@@ -496,7 +501,7 @@ local function graphtobezierapprox(f,g,starti,endi,maxerror)
end
end
end
- if maxerror > 0 then
+ if maxerror > 0 and recursiondepth > 0 then
-- check if it is close enough: (recycling err, xa, ya)
err = 0
for t = .1, .9, .1 do
@@ -526,8 +531,8 @@ local function graphtobezierapprox(f,g,starti,endi,maxerror)
interindex = i
end
end
- local left = graphtobezierapprox(f,g,starti,interindex,maxerror)
- local right = graphtobezierapprox(f,g,interindex,endi,maxerror)
+ local left = graphtobezierapprox(f,g,starti,interindex,maxerror,recursiondepth-1)
+ local right = graphtobezierapprox(f,g,interindex,endi,maxerror,recursiondepth-1)
for i=1, #right do --now append the right to the left:
left[#left+1] = right[i]
end
@@ -803,7 +808,12 @@ function bezierplot(functionstring,xminstring,xmaxstring,yminstring,ymaxstring,s
else
---------- generic case (no special function) ----------------
if arbitrary_samples then
- -- go through the connected parts
+ -- go through the connected parts...
+ -- due to numerical errors we have to use a maximal
+ -- recursion depth, which is hard wired here
+ -- (a small number should suffice since there are
+ -- no extrema nor inflection points inbetween)
+ local maxrecursiondepth = 2
for part = 1, #graphs do
local dg = diffgraph(f,graphs[part],xstep)
--printdifftable(dg) -- for debugging
@@ -812,9 +822,9 @@ function bezierplot(functionstring,xminstring,xmaxstring,yminstring,ymaxstring,s
for k = 2, #dg do
if dg[k][5] or dg[k][6] then -- extrema and inflection points
local tobeadded = graphtobezierapprox(
- f,dg,startindex,k,10*yerror)
+ f,dg,startindex,k,10*yerror,maxrecursiondepth)
-- tobeadded may contain a multiple of 6 entries
- -- e.g. {1,2,3,4,5,6,7,8,9,10,11,12}
+ -- e.g. {1,2,3,4,5,6,7,8,9,10,11,12}
for i = 1, math.floor(#tobeadded/6) do
bezierpoints[#bezierpoints+1] = {}
for j = 1, 6 do
@@ -826,7 +836,7 @@ function bezierplot(functionstring,xminstring,xmaxstring,yminstring,ymaxstring,s
end
if startindex ~= #dg then -- if no special points inbetween
local tobeadded = graphtobezierapprox(f,dg,
- startindex,#dg,10*yerror)
+ startindex,#dg,10*yerror,maxrecursiondepth)
-- tobeadded may contain a multiple of 6 entries
-- e.g. {1,2,3,4,5,6,7,8,9,10,11,12}
for i = 1, math.floor(#tobeadded/6) do
diff --git a/Master/texmf-dist/tex/lualatex/bezierplot/bezierplot.sty b/Master/texmf-dist/tex/lualatex/bezierplot/bezierplot.sty
index c3d0963de2a..86eb49e5245 100644
--- a/Master/texmf-dist/tex/lualatex/bezierplot/bezierplot.sty
+++ b/Master/texmf-dist/tex/lualatex/bezierplot/bezierplot.sty
@@ -1,7 +1,7 @@
% Linus Romer, published 2018 under LPPL Version 1.3c
-% version 1.5 2024-03-31
+% version 1.6 2024-11-02
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{bezierplot}[2024/03/21 bezierplot]
+\ProvidesPackage{bezierplot}[2024/11/02 bezierplot]
\RequirePackage{xparse}
\RequirePackage{iftex}
\ifLuaTeX
diff --git a/Master/texmf-dist/tex/lualatex/gitinfo-lua/gitinfo-lua.sty b/Master/texmf-dist/tex/lualatex/gitinfo-lua/gitinfo-lua.sty
index 779f246ed4e..f1ee5575a7d 100644
--- a/Master/texmf-dist/tex/lualatex/gitinfo-lua/gitinfo-lua.sty
+++ b/Master/texmf-dist/tex/lualatex/gitinfo-lua/gitinfo-lua.sty
@@ -16,7 +16,7 @@
% This work consists of the files gitinfo-lua.sty gitinfo-lua.pdf
% gitinfo-lua-cmd.lua, gitinfo-lua-recorder.lua and gitinfo-lua.lua
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{gitinfo-lua}[2024/04/11 1.1.0 Xerdi's Git Package]
+\ProvidesPackage{gitinfo-lua}[2024/09/14 1.2.0 Xerdi's Git Package]
\directlua{git = require('gitinfo-lua')}
@@ -53,6 +53,15 @@
\newcommand*\gitdate{\directlua{git:cs_last_commit('git@single@arg', 'cs')}}
\newcommand*\gitdirectory[1]{\directlua{git:dir('#1')}}
\newcommand*\gitunsetdirectory{\directlua{git:dir(nil)}}
+\newcommand*\ifgitdirty[2]{%
+ \def\@dirtytrue{1}%
+ \edef\@dirty{\directlua{git:write_is_dirty()}}%
+ \ifx\@dirty\@dirtytrue
+ #1%
+ \else
+ #2%
+ \fi
+}
\newcommand\git@format@author[2]{%
#1
diff --git a/Master/texmf-dist/tex/lualatex/letgut/informations-gut.tex b/Master/texmf-dist/tex/lualatex/letgut/informations-gut.tex
index 85e0d6a9f1e..46d125c38d9 100644
--- a/Master/texmf-dist/tex/lualatex/letgut/informations-gut.tex
+++ b/Master/texmf-dist/tex/lualatex/letgut/informations-gut.tex
@@ -1,14 +1,16 @@
% Hey, Emacs! This is a -*- mode: latex -*- file!
\enlargethispage{1.5cm}
-\small
+\scriptsize
\vspace*{-1cm}
\hspace*{-1.5cm}%
+\ExplSyntaxOn
\raisebox{-\height+0.7\baselineskip}{%
\begin{minipage}[t]{.6\textwidth}%\vspace{0pt}%
- \includegraphics*[width=\linewidth]{logo-gut.pdf}
+ \__letgut_orig_includegraphics*[width=\linewidth]{logo-gut.pdf}
\end{minipage}%
}%
+\ExplSyntaxOff
\hfill%
\begin{minipage}[t]{.5\textwidth}%\vspace{0pt}%
\footnotesize\raggedleft%
@@ -16,7 +18,7 @@
15 rue des Halles -- \textsc{bp} 74\\
75001 Paris\\
France\\
- \url{secretariat[at]gutenberg[dot]eu[dot]org}
+ \url{secretariat[at]gutenberg-asso[dot]fr}
\end{minipage}%
\begin{description}
@@ -37,7 +39,7 @@
\alertbox{%
Cette association est la vôtre : faites-nous part de
vos idées, de vos envies, de vos préoccupations
- à l'adresse \url{secretariat[at]gutenberg[dot]eu[dot]org}.%
+ à l'adresse \url{secretariat[at]gutenberg-asso[dot]fr}.%
}
% \section[Association GUTenberg (tout sur l')]
@@ -100,7 +102,7 @@ Les règlements peuvent s'effectuer par :
\item \textbf{virement bancaire}%
\footnote{Nous vous remercions de \textbf{privilégier}
le \textbf{virement bancaire}.\label{fn:1}} (\textsc{iban} :
- FR76 1870 7000 3003 0191 3568 475)%
+ FR76 3000 3001 0900 0372 6086 280)%
\leavevmode
\alertbox{%
@@ -115,9 +117,13 @@ Les règlements peuvent s'effectuer par :
\vfill
+\mbox{}
+
+\vfill{}
+
\begin{center}
\begin{tblr}{
- width=.75\linewidth,
+ width=.9\linewidth,
colspec={
% < (Just not to disturb the parentheses
% balancing detection of my editor.)
@@ -138,7 +144,7 @@ Les règlements peuvent s'effectuer par :
& \person{Bideault, Patrick} \\
Comité de rédaction :
& {Patrick Bideault, Denis Bitouzé, \\
- Céline Chevalier \& Maxime Chupin} \\
+ Céline Chevalier, Maxime Chupin \& Bastien Dumont} \\
Adresse de la rédaction : &
{
Association \gut\\
@@ -149,6 +155,4 @@ Les règlements peuvent s'effectuer par :
\acs{issn} : & \letgutissn
\end{tblr}
\end{center}
-\vfill
-\mbox{}
\clearpage
diff --git a/Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty b/Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty
index e070792feee..bc275a02235 100644
--- a/Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty
+++ b/Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty
@@ -1,20 +1,12 @@
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesExplPackage{letgut-banner}
-{2022-03-17}
-{0.9}
+{2024-10-07}
+{0.10}
{
Package for the banner of the newsletter "La Lettre de GUTenberg"
}
-\RequirePackage{l3keys2e}
\RequirePackage{xcolor}
\RequirePackage{accsupp}
-\keys_define:nn { letgut-banner }
-{
- , pagecolor .clist_gset:N = \g__letgutbanner_pagecolor_clist
- , pagecolor .initial:n = { 1,1,1 }
-}
-\ProcessKeysOptions { letgut-banner }
-\AddToHook{begindocument}{
\cs_generate_variant:Nn \color_fill:nn { nV }
\dim_new:N \g__letgutbanner_area_height_dim
\dim_new:N \g__letgutbanner_La_height_dim
@@ -28,6 +20,7 @@
\dim_if_exist:NF \g__letgutbanner_first_page_shrink_dim {
\dim_new:N \g__letgutbanner_first_page_shrink_dim
}
+\dim_new:N \g__letgutbanner_textwidth_dim
\cs_generate_variant:Nn \dim_const:Nn { NV }
\dim_if_exist:NTF \c__letgut_textheight_dim {
\dim_const:NV \c__letgutbanner_textheight_dim
@@ -37,11 +30,9 @@
{ 25cm }
}
\dim_if_exist:NTF \c__letgut_textwidth_dim {
- \dim_const:NV \c__letgutbanner_textwidth_dim
- \c__letgut_textwidth_dim
+ \dim_gset_eq:NN \g__letgutbanner_textwidth_dim \c__letgut_textwidth_dim
}{
- \dim_const:Nn \c__letgutbanner_textwidth_dim
- { 14cm }
+ \dim_gset:Nn \g__letgutbanner_textwidth_dim { 14cm }
}
\dim_if_exist:NTF \c__letgut_lmargin_dim {
\dim_const:NV \c__letgutbanner_lmargin_dim
@@ -101,7 +92,7 @@
}
\dim_const:Nn \c__letgutbanner_banner_padding_dim { .25cm }
\dim_const:Nn \c__letgutbanner_banner_width_dim {
- \c__letgutbanner_textwidth_dim
+ \g__letgutbanner_textwidth_dim
+
(
\c__letgutbanner_banner_thickness_dim
@@ -117,7 +108,7 @@
}
\dim_const:Nn
\c__letgutbanner_banner_horizontal_contents_width_dim {
- \c__letgutbanner_textwidth_dim
+ \g__letgutbanner_textwidth_dim
- (
\c__letgutbanner_banner_thickness_dim
-
@@ -139,7 +130,7 @@
\geometry{
asymmetric,
textheight = \c__letgutbanner_textheight_dim,
- textwidth = \c__letgutbanner_textwidth_dim,
+ textwidth = \g__letgutbanner_textwidth_dim,
lmargin = \c__letgutbanner_lmargin_dim,
tmargin = \c__letgutbanner_tmargin_dim,
head = \c__letgutbanner_head_dim,
@@ -157,6 +148,18 @@
\textbf{\textit{GUTenberg}}
}
\hbox_gset:Nn \g__letgutbanner_g_box { \textbf{g} }
+\keys_define:nn { letgut-banner }
+{
+ , pagecolor .clist_gset:N = \g__letgutbanner_pagecolor_clist
+ , pagecolor .initial:n = { 1,1,1 }
+ , watermark~ letter .code:n = {
+ \hbox_gset:Nn \g__letgutbanner_g_box { \textbf{#1} }
+ }
+ , watermark~ scale .tl_gset:N = \g__letgutbanner_watermark_scale_tl
+ , watermark~ scale .initial:n = 1
+}
+\ProcessKeyOptions [ letgut-banner ]
+\AddToHook{begindocument}{
\dim_const:Nn \c__letgutbanner_L_width_dim {
\box_wd:N \g__letgutbanner_L_box
}
@@ -295,7 +298,11 @@
\g__letgutbanner_largest_LETR_box_height_dim
}
\box_gresize_to_wd:Nn \g__letgutbanner_g_box {
- \c__letgutbanner_textwidth_dim
+ \fp_to_dim:n {
+ \g__letgutbanner_watermark_scale_tl
+ *
+ \g__letgutbanner_textwidth_dim
+ }
}
\dim_gset:Nn \g__letgutbanner_first_page_shrink_dim {
\c__letgutbanner_tmargin_dim
@@ -398,7 +405,13 @@
% \color_fill:n {black!10}
\color{ black!10 }
\put(
- .5\c__letgutbanner_lmargin_dim+.5\c__letgutbanner_banner_thickness_dim
+ .5\c__letgutbanner_lmargin_dim
+ +
+ .5\c__letgutbanner_banner_thickness_dim
+ +
+ \fp_to_dim:n {
+ (1-\g__letgutbanner_watermark_scale_tl)/2*\g__letgutbanner_textwidth_dim
+ }
,
.5\paperheight
+
diff --git a/Master/texmf-dist/tex/lualatex/letgut/letgut.cbx b/Master/texmf-dist/tex/lualatex/letgut/letgut.cbx
index 4a9bad72996..01c79b884b6 100644
--- a/Master/texmf-dist/tex/lualatex/letgut/letgut.cbx
+++ b/Master/texmf-dist/tex/lualatex/letgut/letgut.cbx
@@ -1,4 +1,4 @@
-\ProvidesFile{letgut.cbx}[2024-03-07 v0.9.9 letgut base citation style]
+\ProvidesFile{letgut.cbx}[2024-10-30 v0.9.12 letgut base citation style]
\RequireCitationStyle{numeric}
\DeclareFieldFormat[bookreview]{title}{\textbf{\emph{#1}}}
\renewbibmacro*{title}{%
diff --git a/Master/texmf-dist/tex/lualatex/letgut/letgut.cls b/Master/texmf-dist/tex/lualatex/letgut/letgut.cls
index 55157bc4b3c..29e678153e1 100644
--- a/Master/texmf-dist/tex/lualatex/letgut/letgut.cls
+++ b/Master/texmf-dist/tex/lualatex/letgut/letgut.cls
@@ -6,13 +6,13 @@
% -------:| ----------------------------------------------------
% letgut:| Class for the newsletter “La Lettre GUTenberg”
% Author:| Association GUTenberg
-% E-mail:| secretariat@gutenberg.eu.org
+% E-mail:| secretariat@gutenberg-asso.fr
% License:| Released under the LaTeX Project Public License
% | v1.3c or later
% See:| http://www.latex-project.org/lppl.txt
%
% Copyright (C) 1994-2024 by Association GUTenberg
-% <secretariat@gutenberg.eu.org>
+% <secretariat@gutenberg-asso.fr>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License (LPPL), either
@@ -31,15 +31,22 @@
% ]{expl3}
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ExplSyntaxOn
-\tl_const:Nn \c__letgut_Lettre_tl { \emph{ Lettre } }
+\tl_const:Nn \c__letgut_Lettre_plain_tl { Lettre }
+\tl_const:Nn \c__letgut_Lettre_tl { \emph{ \c__letgut_Lettre_plain_tl } }
\tl_const:Nn \c__letgut_Lettres_tl {
\c__letgut_Lettre_tl \emph{ s }
}
\tl_const:Nn \c__letgut_gutenberg_tl { GUTenberg }
\tl_const:Nn \c__letgut_association_tl { association }
+\tl_const:Nn \c__letgut_Lettre_gutenberg_plain_tl {
+ \c__letgut_Lettre_plain_tl~\c_space_tl \c__letgut_gutenberg_tl
+}
\tl_const:Nn \c__letgut_Lettre_gutenberg_tl {
\c__letgut_Lettre_tl~\c_space_tl \c__letgut_gutenberg_tl
}
+\tl_const:Nn \c__letgut_la_lettre_gutenberg_plain_tl {
+ la~ \c__letgut_Lettre_gutenberg_plain_tl
+}
\tl_const:Nn \c__letgut_la_lettre_gutenberg_tl {
la~ \c__letgut_Lettre_gutenberg_tl
}
@@ -48,8 +55,8 @@
}
\ExplSyntaxOff
\ProvidesExplClass{letgut}
-{2024-03-07}
-{0.9.9}
+{2024-10-30}
+{0.9.12}
{
Class for the newsletter “The GUTenberg Letter”
}
@@ -559,7 +566,20 @@
\phantomsection
\__letgut_old_printbibliography[#1]
\bool_if:NT \g__letgut_included_files_attached_bool {
- \seq_map_inline:Nn \g__letgut_added_bib_resources_seq {\seq_gput_right:Nn \g__letgut_included_files_seq {#1}}
+ \seq_map_inline:Nn \g__letgut_added_bib_resources_seq {
+ \file_if_exist:nTF {##1}{
+ \seq_gput_right:Nn \g__letgut_included_files_seq {
+ \attachfile[
+ description={
+ Fichier~ bibliographique~ utilisé~ dans~ le~
+ présent~ article~ (fichier~ `\tl_to_str:n{##1}`)
+ },
+ mimetype=application/x-bib
+ ]
+ {\tl_to_str:n{##1}}
+ }
+ }
+ }
}
}
\defbibheading{title}[\refname]{%
@@ -642,7 +662,7 @@
\pagecolor[rgb]{\c__letgut_default_pagecolor_screen_clist}
\clist_set_eq:NN \g__letgut_pagecolor_clist
\c__letgut_default_pagecolor_screen_clist
-\DeclareKeys[ letgut ]
+\keys_define:nn { letgut }
{
, for-readers .bool_gset:N = \g__letgut_for_readers_bool
, for-readers .initial:n = { true }
@@ -679,6 +699,10 @@
}
}
}
+ , watermark~ letter .tl_gset:N = \g__letgut_watermark_letter_tl
+ , watermark~ letter .initial:n = g
+ , watermark~ scale .tl_gset:N = \g__letgut_watermark_scale_tl
+ , watermark~ scale .initial:n = 1
, allcolorslinks .code:n = {
\colorlet{letgut_allcolors_links}{#1}}
, allcolorslinks .initial:V
@@ -722,7 +746,7 @@
}
\fancyhf{}
\fancyhead[RO,LE]{\thepage}
-\fancyhead[RE,LO]{\g__letgut_mark_tl}
+\fancyhead[RE,LO]{\scshape \g__letgut_mark_tl}
\fancyheadoffset[L]{\c__letgut_hoffset_dim}
\pagestyle{fancy}
\reversemarginpar
@@ -838,6 +862,7 @@
#1,
coltitle=\l__letgut_toc_color_announce_tl,
}
+\int_new:N \g__letgut_rebus_int
\NewDocumentCommand{\solution}{}{\tcblower}
\NewDocumentCommand{\displaysolutions}{}{%
\tcbstoprecording\tcbinputrecords%
@@ -872,25 +897,27 @@
},
}
}
-\NewTColorBox[auto~ counter]{rebus}{+!O{}}{%
+\NewTColorBox{rebus}{+!O{}}{%
+ before~ title~ pre = {\int_gincr:N \g__letgut_rebus_int},
rebus~ style,
fonttitle=\bfseries,
title={Rébus},
- label={rebus@\thetcbcounter},
- after~ upper={\vpageref[ci-dessous]{solution@\thetcbcounter}},
+ label={rebus@\int_use:N\g__letgut_rebus_int},
+ after~ upper={\vpageref[ci-dessous]{solution@\int_use:N\g__letgut_rebus_int}},
after~ upper~ pre={
\par\bigskip\hfill\scriptsize\itshape
Solution\c_space_tl
},
lowerbox=ignored,
- savelowerto=rebus-\thetcbcounter.tex,
- record={\string\rebussolution*[\thetcbcounter][][]},
+ savelowerto=rebus-\int_use:N\g__letgut_rebus_int.tex,
+ record={\string\rebussolution*[\int_use:N\g__letgut_rebus_int][][]},
#1
}
\NewDocumentCommand{\rebussolution}{s +o o O{}}{%
\IfValueTF{#2}{
\begin{tcolorbox}[
rebus~ style,
+ label=solution@\int_use:N\g__letgut_rebus_int,
halign=justify,
before~ title={\lefthand{}~Solution~ du~ rébus\c_space_tl},
title={
@@ -938,7 +965,7 @@
}
\str_if_empty:NTF \g__letgut_@title_str {
\tl_gset:Nn \g__letgut_mark_tl {
- \textit{\c__letgut_La_lettre_gutenberg_tl}
+ \c__letgut_la_lettre_gutenberg_plain_tl
}
}{
\tl_gset:Nn \g__letgut_mark_tl {
@@ -956,7 +983,7 @@
{
\begin{picture}(0,0)
\put(-2cm,-25.275cm){
- \includegraphics*[scale=0.96]{
+ \__letgut_orig_includegraphics*[scale=0.96]{
\c__letgut_banner_file_tl.pdf
}
}
@@ -964,9 +991,11 @@
}
}{
\msg_term:nn{letgut}{Banner~file~not~provided}
- \RequirePackage[pagecolor={\g__letgut_pagecolor_clist}]{
- letgut-banner
- }
+ \RequirePackage[
+ , pagecolor = { \g__letgut_pagecolor_clist }
+ , watermark~ letter = { \g__letgut_watermark_letter_tl }
+ , watermark~ scale = { \g__letgut_watermark_scale_tl }
+ ]{letgut-banner}
}
\AddToHook{begindocument/end}
{
@@ -1282,7 +1311,7 @@
}
\NewDocumentCommand {\francophony} { } {
\raisebox{-1.5pt}{
- \includegraphics*[width=\f@size pt]{
+ \__letgut_orig_includegraphics*[width=\f@size pt]{
letgut-francophony-icon
}
}
@@ -1850,15 +1879,19 @@
\citeauthor
}
\RenewDocumentCommand {\citeauthor} { O{} O{} m } {
- \AtNextCite{\DeclareNameAlias{labelname}{given-family}}
+ \AtNextCite{
+ \DeclareNameAlias{labelname}{given-family}
+ \protected\def\mkbibnamefamily#1{%
+ \textnohyphenation{#1}}%
+ }
\__letgut_old_citeauthor[#1][#2]{#3}
}
-\tl_new:N \g__letgut_bookreview_frontcover_tl
+\tl_new:N \l__letgut_bookreview_frontcover_tl
\tl_new:N \g__letgut_bookreview_bibkey_tl
\keys_define:nn { letgut/bookreview }
{
title .tl_gset:N = \g__letgut_bookreview_title_tl,
- frontcover .tl_gset:N = \g__letgut_bookreview_frontcover_tl,
+ frontcover .tl_set:N = \l__letgut_bookreview_frontcover_tl,
bibkey .tl_gset:N = \g__letgut_bookreview_bibkey_tl,
reviewer .tl_gset:N = \g__letgut_bookreview_reviewer_tl,
price .tl_gset:N = \g__letgut_bookreview_price_tl,
@@ -1871,49 +1904,63 @@ title .value_required:n = true,
\cs_generate_variant:Nn \msg_error:nnnn { nnVV }
\NewDocumentEnvironment{bookreview}{ m }
{
+ \tl_gclear:N \g__letgut_bookreview_price_tl
\keys_set:nn { letgut/bookreview } { #1 }
\section{\g__letgut_bookreview_title_tl}
- \tl_if_empty:NTF \g__letgut_bookreview_frontcover_tl {
+ \tl_if_empty:NTF \l__letgut_bookreview_frontcover_tl {
\msg_warning:nnV{letgut}{frontcover-missing}{
\g__letgut_bookreview_title_tl
}
}{
\clist_map_inline:Nn \Gin@extensions {
- \file_if_exist:nT{\g__letgut_bookreview_frontcover_tl##1}{
- \bool_set_true:N \l__letgut_tmpa_bool
- \clist_map_break:
- }
- }
- \bool_if:NTF \l__letgut_tmpa_bool {
- \marginpar{
- \hspace*{\c__letgut_bookreview_frontcover_margin_sep_dim}
- % \raggedleft
- \raisebox{-\totalheight}{
- \fbox{
- \includegraphics[width=-\c__letgut_title_hoffset_dim]{
- \g__letgut_bookreview_frontcover_tl
- }
- }
+ \file_if_exist:nT{\l__letgut_bookreview_frontcover_tl##1}{
+ \bool_set_true:N \l__letgut_tmpa_bool
+ \clist_map_break:
+ }
+}
+\bool_if:NTF \l__letgut_tmpa_bool {
+ \marginpar{
+ \hspace*{\c__letgut_bookreview_frontcover_margin_sep_dim}
+ % \raggedleft
+ \raisebox{-\totalheight}{
+ \fbox{
+ \includegraphics*[width=-\c__letgut_title_hoffset_dim]{
+ \l__letgut_bookreview_frontcover_tl
}
}
- }{
- \msg_error:nnVV
- {letgut}
- {frontcover-file-not-found}
- {\g__letgut_bookreview_title_tl}
- {\g__letgut_bookreview_frontcover_tl}
}
}
- \noindent
- \textsf{\fullcite{\g__letgut_bookreview_bibkey_tl}}
- \tl_if_empty:NF \g__letgut_bookreview_price_tl{
- .\c_space_tl\g__letgut_bookreview_price_tl\c_space_tl €
- }
- \par
+}{
+ \msg_error:nnVV
+ {letgut}
+ {frontcover-file-not-found}
+ {\g__letgut_bookreview_title_tl}
+ {\l__letgut_bookreview_frontcover_tl}
+}
+}
+\noindent
+\textsf{\fullcite{\g__letgut_bookreview_bibkey_tl}}
+\tl_if_empty:NF \g__letgut_bookreview_price_tl{
+ .\c_space_tl\g__letgut_bookreview_price_tl\c_space_tl €
+}
+\par
}{
\exp_args:NV \author{\g__letgut_bookreview_reviewer_tl}
\bool_if:NT \g__letgut_included_files_attached_bool {
- \seq_map_inline:Nn \g__letgut_added_bib_resources_seq {\seq_gput_right:Nn \g__letgut_included_files_seq {##1}}
+ \seq_map_inline:Nn \g__letgut_added_bib_resources_seq {
+ \file_if_exist:nTF {##1}{
+ \seq_gput_right:Nn \g__letgut_included_files_seq {
+ \attachfile[
+ description={
+ Fichier~ bibliographique~ utilisé~ dans~ le~
+ présent~ article~ (fichier~ `\tl_to_str:n{##1}`)
+ },
+ mimetype=application/x-bib
+ ]
+ {\tl_to_str:n{##1}}
+ }
+ }
+ }
}
}
\DeclareRobustCommand*\LKey[1]{%
@@ -1991,14 +2038,16 @@ title .value_required:n = true,
}
}
\cs_new_protected:Npn \__letgut_attach_non_empty_existing_file:n #1 {
- \file_get_size:nN {./#1} \tmpa_tl
- \quark_if_no_value:NF \tmpa_tl {
- \tl_if_eq:NnF \tmpa_tl {0} {
- \seq_gput_left:Nn \g__letgut_included_files_seq {
- \attachfile[
- description={Source~ nécessaire~ (fichier~ `#1.tex`)},
- mimetype=application/x-tex]
- {#1.tex}
+ \file_get_size:nN {./#1.tex} \l__letgut_tmpa_tl
+ \quark_if_no_value:NF \l__letgut_tmpa_tl {
+ \tl_if_eq:NnF \l__letgut_tmpa_tl {0} {
+ \file_if_exist:nTF {##1}{
+ \seq_gput_left:Nn \g__letgut_included_files_seq {
+ \attachfile[
+ description={Source~ nécessaire~ (fichier~ `#1.tex`)},
+ mimetype=application/x-tex]
+ {#1.tex}
+ }
}
}
}
@@ -2008,7 +2057,9 @@ title .value_required:n = true,
\FloatBarrier
\lstset{ style=__letgut_reset_listings_styles }
\acresetall%
- \input{#2}%
+ \begin{refsection}
+ \input{#2}%
+ \end{refsection}
\bool_if:NT \g__letgut_included_files_attached_bool {
\IfBooleanF {#1}{
\__letgut_attach_non_empty_existing_file:n {
@@ -2034,7 +2085,7 @@ title .value_required:n = true,
}
}
\seq_remove_duplicates:N \g__letgut_included_files_seq
- \marginpar{\seq_use:Nn \g__letgut_included_files_seq { } }
+ \seq_use:Nn \g__letgut_included_files_seq { \c_space_tl }
\seq_clear:N \g__letgut_included_files_seq
\bool_gset_false:N \g__letgut_acronyms_file_attached_bool
\bool_gset_false:N \g__letgut_lstlanguage_file_attached_bool
@@ -2048,7 +2099,7 @@ title .value_required:n = true,
\clist_set:Nx \l__letgut_tmpa_clist {\Gin@extensions}
\cs_new_protected:Npn \__letgut_includegraphics:nnn #1 #2 #3
{
- \file_if_exist:nTF {#3} {
+ \file_if_exist:nTF {./#3} {
\bool_if:NT \g__letgut_included_files_attached_bool {
\IfBooleanF {#1}{
\seq_gput_left:Nn \g__letgut_included_files_seq {
@@ -2058,16 +2109,15 @@ title .value_required:n = true,
présent~ article~ (fichier~ `#3`)
},
mimetype=image
- ]
- {#3}
+ ]{./#3}
}
}
}
- \__letgut_orig_includegraphics[#2]{#3}
+ \__letgut_orig_includegraphics[#2]{./#3}
}{
\bool_gset_false:N \g__letgut_tmpa_bool
\clist_map_inline:Nn \l__letgut_tmpa_clist {%
- \file_if_exist:nTF {#3##1} {
+ \file_if_exist:nT {./#3##1} {
\clist_map_break:n {
\bool_if:NT \g__letgut_included_files_attached_bool {
\IfBooleanF {#1}{
@@ -2075,8 +2125,7 @@ title .value_required:n = true,
\attachfile[
description={Fichier~ image~ inclus~ dans~ le~ présent~ article~ (fichier~ `#3##1`)},
mimetype=image/##1
- ]
- {#3##1}
+ ]{./#3##1}
}
}
}
@@ -2085,48 +2134,61 @@ title .value_required:n = true,
}
}
}
- \bool_if:NF \g__letgut_tmpa_bool {
- \@latex@error{File~ `#3'~ not~ found}%
- {I~ could~ not~ locate~ the~ file~ with~ any~ of~ these~ extensions:^^J%
- \clist_use:Nn \l__letgut_tmpa_clist { ~ }^^J\@ehc}%
- }
+ % \bool_if:NF \g__letgut_tmpa_bool {
+ % \@latex@error{File~ `#3'~ not~ found}%
+ % {I~ could~ not~ locate~ the~ file~ with~ any~ of~ these~ extensions:^^J%
+ % \clist_use:Nn \l__letgut_tmpa_clist { ~ }^^J\@ehc}%
+ % }
}
}
\RenewDocumentCommand {\includegraphics} {s O{} m } {
\__letgut_includegraphics:nnn {#1} {#2} {#3}
}
-\NewCommandCopy {\__letgut_orig_addbibresource} {\addbibresource}
-\cs_new_protected:Npn \__letgut_addbibresource:nnn #1 #2 #3
+\cs_new:Nn \__letgut_extract_file_for:nn
{
- \file_if_exist:nT {#3} {
- \IfBooleanF {#1}{
- \seq_gput_left:Nn \g__letgut_added_bib_resources_seq {
- \attachfile[
- description={
- Source~ du~ fichier~ bibliographique~ utilisé~
- dans~ le~ présent~ article~ (fichier~ `#3`)
- },
- mimetype=application/x-bibtex
- ]%
- {#3}%
+ \seq_clear:N \g__letgut_added_bib_resources_seq
+ \regex_extract_all:nnNT
+ {
+ \c{ #1 } \[?.*?\]? \{ ( .*? ) \}
+ }
+ {
+ #2
+ }
+ \g__letgut_added_bib_resources_seq
+ {
+ \seq_map_indexed_inline:Nn \g__letgut_added_bib_resources_seq {
+ \int_if_odd:nT {##1}
+ {
+ \seq_gset_item:Nnn \g__letgut_added_bib_resources_seq {##1} {}
}
}
+ \seq_gremove_duplicates:N \g__letgut_added_bib_resources_seq
+ \seq_gpop:NN \g__letgut_added_bib_resources_seq \l_tmpa_tl
}
+}
+\NewCommandCopy {\__letgut_orig_addbibresource} {\addbibresource}
+\cs_new_protected:Npn \__letgut_addbibresource:nnn #1 #2 #3
+{
\__letgut_orig_addbibresource[#2]{#3}
}
\RenewDocumentCommand {\addbibresource} { s O{} m } {
\__letgut_addbibresource:nnn {#1} {#2} {#3}
}
+\AddToHookWithArguments{cmd/sa@gobble/before}{
+ \__letgut_extract_file_for:nn { addbibresource }{ #1 }
+}
\bool_if:NT \g__letgut_included_files_attached_bool {
\tl_const:Nn \c__letgut_acronyms_file_attached_tl {
- \attachfile[
- description={
- Source~ du~ fichier~ d'acronymes~ utilisé~ dans~
- le~ présent~ article~
- (fichier~ `\c__letgut_acronyms_file_tl.tex`)
- },
- mimetype=application/x-tex]%
- {\g__letgut_effective_acronyms_file_tl}%
+ \file_if_exist:nTF {\g__letgut_effective_acronyms_file_t}{
+ \attachfile[
+ description={
+ Source~ du~ fichier~ d'acronymes~ utilisé~ dans~
+ le~ présent~ article~
+ (fichier~ `\c__letgut_acronyms_file_tl.tex`)
+ },
+ mimetype=application/x-tex]%
+ {\g__letgut_effective_acronyms_file_tl}%
+ }
}
\AddToHook{cmd/ac/before}{
\bool_gset_true:N \g__letgut_acronyms_file_attached_bool
@@ -2136,15 +2198,19 @@ title .value_required:n = true,
}
}
\bool_if:NT \g__letgut_included_files_attached_bool {
- \tl_const:Nn \c__letgut_lstlanguage_file_attached_tl {
- \attachfile[
- description={
- Source~ du~ fichier~ de~ langages~ informatiques~ utilisé~
- dans~ le~ présent~ article~
- (fichier~ `\c__letgut_lstlanguage_file_tl`)
- },
- mimetype=application/x-tex]%
- {../\c__letgut_lstlanguage_file_tl}%
+ \file_if_exist:nTF {../\c__letgut_lstlanguage_file_tl}{
+ \tl_const:Nn \c__letgut_lstlanguage_file_attached_tl {
+ \attachfile[
+ description={
+ Source~ du~ fichier~ de~ langages~ informatiques~ utilisé~
+ dans~ le~ présent~ article~
+ (fichier~ `\c__letgut_lstlanguage_file_tl`)
+ },
+ mimetype=application/x-tex]%
+ {../\c__letgut_lstlanguage_file_tl}%
+ }
+ }{
+ \tl_const:Nn \c__letgut_lstlanguage_file_attached_tl {}
}
\AddToHook{env/ltx-code/before}{
\bool_gset_true:N \g__letgut_lstlanguage_file_attached_bool
@@ -2261,7 +2327,7 @@ literate=*%
}
\cs_new_protected:Npn \__letgut_title_code_result_box:n #1
{
- Exemple~ \thetcbcounter
+ Exemple\nobreakspace\thetcbcounter
\tl_if_empty:NF {#1} { \hypersetup{hidelinks} \c_space_tl :~#1 }
}
\cs_new_protected:Nn \__letgut_on_callout_page:nn
@@ -2569,36 +2635,13 @@ overlay={
style=__letgut_terminal_listings_style,
language=terminal,
},
- every~ listing~ line={%
- \textcolor{__letgut_terminal_prompt}{%
- \ttfamily%
- \bfseries%
- \__letgut_unselectable:n {#1\c_space_tl}
- }
- },
+ fontupper=\ttfamily,
+ fontlower=\ttfamily,
},
}
\cs_new_protected:Npn \__letgut_terminal:nnnn #1 #2 #3 #4
{
\bool_set_false:N \l__letgut_tmpa_bool
- \tl_if_empty:nF {#3}{
- \tcbset{tempfile=\jobname-stdin.tex}
- \exp_args:Nx \scantokens
- {
- \token_to_str:N\begin{tcbwritetemp}
- #3
- \token_to_str:N\end{tcbwritetemp}
- }
- }
- \tl_if_empty:nF {#4}{
- \tcbset{tempfile=\jobname-stdout.tex}
- \exp_args:Nx \scantokens
- {
- \token_to_str:N\begin{tcbwritetemp}
- #4
- \token_to_str:N\end{tcbwritetemp}
- }
- }
\tl_if_empty:nTF {#3}{
\tl_if_empty:nTF {#4}{
\bool_set_true:N \l__letgut_tmpa_bool
@@ -2607,24 +2650,25 @@ overlay={
}
}{
\tcbset{colback=__letgut_background_terminal_stdin}
- \tl_if_empty:nTF {#4}{
- }{
+ \tl_if_empty:nF {#4}{
\tcbset{
bicolor,
- middle=0mm,
- boxsep=0mm,
colbacklower=__letgut_background_terminal_stdout,
}
}
}
\bool_if:NF \l__letgut_tmpa_bool {
- \begin{tcolorbox}[terminal={#1},#2]
+ \begin{tcolorbox}[terminal,#2]
\lstset{aboveskip=0pt}
\tl_if_empty:nF {#3}{
- \tcbset{
- tempfile=\jobname-stdin.tex,
+ \tl_if_empty:nF {#1}{
+ \textcolor{__letgut_terminal_prompt}{%
+ \ttfamily%
+ \bfseries%
+ \__letgut_unselectable:n {#1\c_space_tl}
+ }
}
- \tcbusetemplisting
+ #3
\tl_if_empty:nF {#4}{
\tcblower
}
@@ -2634,13 +2678,12 @@ overlay={
\lstset{aboveskip=0pt}
}
\tcbset{
- tempfile=\jobname-stdout.tex,
every~ listing~ line={},
listing~ options~ app={
language={}
}
}
- \tcbusetemplisting
+ #4
}
\end{tcolorbox}
}
@@ -2651,7 +2694,7 @@ overlay={
}
\lst@InputCatcodes
\def\lst@DefEC{%
- \lst@CCECUse \lst@ProcessLetter
+ \lst@CCECUse \lst@ProcessLetter
^^80^^81^^82^^83^^84^^85^^86^^87^^88^^89^^8a^^8b^^8c^^8d^^8e^^8f%
^^90^^91^^92^^93^^94^^95^^96^^97^^98^^99^^9a^^9b^^9c^^9d^^9e^^9f%
^^a0^^a1^^a2^^a3^^a4^^a5^^a6^^a7^^a8^^a9^^aa^^ab^^ac^^ad^^ae^^af%
@@ -2660,11 +2703,16 @@ overlay={
^^d0^^d1^^d2^^d3^^d4^^d5^^d6^^d7^^d8^^d9^^da^^db^^dc^^dd^^de^^df%
^^e0^^e1^^e2^^e3^^e4^^e5^^e6^^e7^^e8^^e9^^ea^^eb^^ec^^ed^^ee^^ef%
^^f0^^f1^^f2^^f3^^f4^^f5^^f6^^f7^^f8^^f9^^fa^^fb^^fc^^fd^^fe^^ff%
- ^^^^201c^^^^201d% for “ and ”
+ ^^^^201c% for “
+ ^^^^201d% for ”
^^^^215b% for ⅛
^^^^2122% for ™
^^^^2019% for ’
^^^^0153% for œ
+ ^^^^0152% for Œ
+ ^^^^20ac% for €
+ ^^^^27e8% for ⟨
+ ^^^^27e9% for ⟩
^^00%
}
\lst@RestoreCatcodes
diff --git a/Master/texmf-dist/tex/lualatex/letgut/letgut.dbx b/Master/texmf-dist/tex/lualatex/letgut/letgut.dbx
index fba8c6ffd01..b3e9e2e73aa 100644
--- a/Master/texmf-dist/tex/lualatex/letgut/letgut.dbx
+++ b/Master/texmf-dist/tex/lualatex/letgut/letgut.dbx
@@ -1,4 +1,4 @@
-\ProvidesFile{letgut.dbx}[2024-03-07 v0.9.9 letgut data model macros]
+\ProvidesFile{letgut.dbx}[2024-10-30 v0.9.12 letgut data model macros]
\DeclareBibliographyDriver{bookreview}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
diff --git a/Master/texmf-dist/tex/lualatex/letgut/letgut.lbx b/Master/texmf-dist/tex/lualatex/letgut/letgut.lbx
index c02329ca2cc..e9f7cbcd493 100644
--- a/Master/texmf-dist/tex/lualatex/letgut/letgut.lbx
+++ b/Master/texmf-dist/tex/lualatex/letgut/letgut.lbx
@@ -1,4 +1,4 @@
-\ProvidesFile{letgut.lbx}[2024-03-07 v0.9.9 letgut localization]
+\ProvidesFile{letgut.lbx}[2024-10-30 v0.9.12 letgut localization]
\InheritBibliographyExtras{french}
\DeclareBibliographyStrings{
inherit = {french},
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-demo.sty b/Master/texmf-dist/tex/lualatex/luamml/luamml-demo.sty
index 64e4e3ff7fc..9aabb38719d 100644
--- a/Master/texmf-dist/tex/lualatex/luamml/luamml-demo.sty
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-demo.sty
@@ -1,5 +1,5 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{luamml-demo}{2024-08-14}{v0.1.0}{Reasonable default definitions for luamml}
+\ProvidesExplPackage{luamml-demo}{2024-10-30}{0.2.0}{Reasonable default definitions for luamml}
\sys_if_engine_luatex:F {
\msg_new:nnn {luamml-demo} {pdftex-option-ignored} {Option~`#1'~is~being~ignored~in~pdfTeX~mode.}
@@ -27,7 +27,7 @@
}
\DeclareOption{structelem}{
\bool_set_true:N \l__luamml_demo_structelem_bool
- \luamml_flag_structelem:
+ \luamml_structelem:
}
\DeclareOption{files}{
\int_new:N \g__luamml_demo_mathml_int
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amsmath.sty b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amsmath.sty
index c0df5ed9633..0b09bc78439 100644
--- a/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amsmath.sty
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amsmath.sty
@@ -1,4 +1,4 @@
-\ProvidesExplPackage {luamml-patches-amsmath} {2024-08-14} {0.1.0}
+\ProvidesExplPackage {luamml-patches-amsmath} {2024-10-30} {0.2.0}
{Feel free to add a description here}
\lua_now:n { require'luamml-amsmath' }
@@ -42,7 +42,7 @@
\m@th
\displaystyle
{##}
- \luamml_flag_save:nNn {} \displaystyle {mtd}
+ \luamml_save:nNn {} \displaystyle {mtd}
$
\__luamml_amsmath_add_last_to_row:
\tabskip \z@skip
@@ -54,7 +54,7 @@
{}
##
}
- \luamml_flag_save:nNn {} \displaystyle {mtd}
+ \luamml_save:nNn {} \displaystyle {mtd}
$
\__luamml_amsmath_add_last_to_row:
\hfil
@@ -85,7 +85,7 @@
\m@th
\displaystyle
##
- \luamml_flag_save:nNn {} \displaystyle {mtd}
+ \luamml_save:nNn {} \displaystyle {mtd}
$
\__luamml_amsmath_add_last_to_row:
\hfil
@@ -122,7 +122,7 @@
\m@th
\displaystyle
{##}
- \luamml_flag_save:nNn {} \displaystyle {mtd}
+ \luamml_save:nNn {} \displaystyle {mtd}
$
}
\__luamml_amsmath_add_box_to_row:
@@ -153,7 +153,7 @@
\cs_set:Npn \gmeasure@ #1 {
\exp_last_unbraced:Nno
\use_ii_i:nn
- { \luamml_flag_ignore: }
+ { \luamml_ignore: }
{ \__luamml_amsmath_original_gmeasure:n {#1} }
}
@@ -178,9 +178,9 @@
\displaystyle
{##}
\ifmeasuring@
- \luamml_flag_ignore:
+ \luamml_ignore:
\else
- \luamml_flag_save:nNn {} \displaystyle {mtd}
+ \luamml_save:nNn {} \displaystyle {mtd}
\fi
$
}
@@ -202,9 +202,9 @@
##
}
\ifmeasuring@
- \luamml_flag_ignore:
+ \luamml_ignore:
\else
- \luamml_flag_save:nNn {} \displaystyle {mtd}
+ \luamml_save:nNn {} \displaystyle {mtd}
\fi
$
}
@@ -289,7 +289,7 @@
\cs_set:Npn \mmeasure@ #1 {
\exp_last_unbraced:Nno
\use_ii_i:nn
- { \luamml_flag_ignore: }
+ { \luamml_ignore: }
{ \__luamml_amsmath_original_mmeasure:n {#1} }
}
@@ -298,14 +298,14 @@
% Less luckily, \endmultline@math sometimes get overwritten for the last line.
% But that isn't a problem since we want special behavior there anyway.
\cs_set:Npn \endmultline@math {
- \luamml_flag_save:nNn {} \displaystyle {mtd}
+ \luamml_save:nNn {} \displaystyle {mtd}
$
\__luamml_amsmath_add_last_to_row:
}
\cs_set:Npn \rendmultline@ {
\iftag@
- \luamml_flag_save:nNn {} \displaystyle {mtd}
+ \luamml_save:nNn {} \displaystyle {mtd}
$
\__luamml_amsmath_add_last_to_row:
\let \endmultline@math \relax
@@ -370,7 +370,7 @@
\m@th
\scriptstyle
##
- \luamml_flag_save:nn {} {mtd} % No \scriptsize here since we want to add the mstyle nodes
+ \luamml_save:nn {} {mtd} % No \scriptsize here since we want to add the mstyle nodes
$
\__luamml_amsmath_add_last_to_row:
\hfil
@@ -381,7 +381,7 @@
\m@th
\scriptstyle
##
- \luamml_flag_save:nn {} {mtd} % No \scriptsize here since we want to add the mstyle nodes
+ \luamml_save:nn {} {mtd} % No \scriptsize here since we want to add the mstyle nodes
$
\__luamml_amsmath_add_last_to_row:
\hfil
@@ -404,7 +404,7 @@
\let \@ifnextchar \new@ifnextchar
\left \lbrace
\def \arraystretch {1.2}
- \array {@{}l@{\quad \luamml_flag_ignore:}l@{}}
+ \array {@{}l@{\quad \luamml_ignore:}l@{}}
}
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amstext.sty b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amstext.sty
index 2217600716c..97b1b1f1765 100644
--- a/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amstext.sty
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amstext.sty
@@ -1,4 +1,4 @@
-\ProvidesExplPackage {luamml-patches-amstext} {2024-08-14} {0.1.0}
+\ProvidesExplPackage {luamml-patches-amstext} {2024-10-30} {0.2.0}
{Feel free to add a description here}
\int_new:N \g__luamml_amsmath_text_struct_int
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-array.sty b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-array.sty
index ee40b2c4893..b08d5615e4f 100644
--- a/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-array.sty
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-array.sty
@@ -1,4 +1,4 @@
-\ProvidesExplPackage {luamml-patches-array} {2024-08-14} {0.1.0}
+\ProvidesExplPackage {luamml-patches-array} {2024-10-30} {0.2.0}
{Feel free to add a description here}
\lua_now:n { require'luamml-array' }
@@ -18,7 +18,7 @@
} {
\__luamml_array_init_col:
\insert@column
- \luamml_flag_save:nn {} {mtd}
+ \luamml_save:nn {} {mtd}
\d@llarend
\__luamml_array_finalize_col:w 0~
}
@@ -33,7 +33,7 @@
} {
\__luamml_array_init_col:
\insert@column
- \luamml_flag_save:nn {} {mtd}
+ \luamml_save:nn {} {mtd}
\d@llarend
\__luamml_array_finalize_col:w 1~
}
@@ -49,25 +49,25 @@
} {
\__luamml_array_init_col:
\insert@column
- \luamml_flag_save:nn {} {mtd}
+ \luamml_save:nn {} {mtd}
\d@llarend
\__luamml_array_finalize_col:w 2~
}
\do@row@strut
\or
\setbox \ar@mcellbox \vbox \@startpbox { \@nextchar }
- \insert@column
+ \insert@pcolumn
\@endpbox
\ar@align@mcell
\do@row@strut
\or
\vtop \@startpbox { \@nextchar }
- \insert@column
+ \insert@pcolumn
\@endpbox
\do@row@strut
\or
\vbox \@startpbox { \@nextchar }
- \insert@column
+ \insert@pcolumn
\@endpbox
\do@row@strut
\fi
@@ -75,12 +75,27 @@
\prepnext@tok
}
-\cs_set:Npn \endarray {
- \crcr
- \__luamml_array_save_array:
- \egroup
- \egroup
- \mode_if_math:T { \__luamml_array_finalize_array: }
- \@arrayright
- \gdef \@preamble {}
+\IfPackageAtLeastTF {array} {2023/12/11} {
+ \cs_set:Npn \endarray {
+ \tbl_crcr:n{endarray}
+ \__luamml_array_save_array:
+ \egroup
+ \UseTaggingSocket{tbl/finalize}
+ \tbl_restore_outer_cell_data:
+ \egroup
+ \mode_if_math:T { \__luamml_array_finalize_array: }
+ \@arrayright
+ \gdef \@preamble {}
+ }
+} {
+ \cs_new_eq:NN \insert@pcolumn \insert@column
+ \cs_set:Npn \endarray {
+ \crcr
+ \__luamml_array_save_array:
+ \egroup
+ \egroup
+ \mode_if_math:T { \__luamml_array_finalize_array: }
+ \@arrayright
+ \gdef \@preamble {}
+ }
}
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-kernel.sty b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-kernel.sty
index fa3aaae0ec7..38eb28bd5f8 100644
--- a/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-kernel.sty
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-kernel.sty
@@ -1,14 +1,34 @@
-\ProvidesExplPackage {luamml-patches-kernel} {2024-08-14} {0.1.0}
+\ProvidesExplPackage {luamml-patches-kernel} {2024-10-30} {0.2.0}
{Feel free to add a description here}
-\cs_new:Npn \__luamml_kernel_phantom:nnn #1#2#3 {
+\cs_set:Npn \mathsm@sh #1 #2 {
+ \setbox \z@ \hbox {
+ $
+ \m@th #1 {
+ #2
+ }
+ \luamml_save:nNn {mathsmash} #1 {mpadded}
+ \luamml_pdf_write:
+ $
+ }
+ \luamml_annotate:nen {2} {
+ nucleus = true,
+ core = consume_label('mathsmash', function(padded)
+ padded.height, padded.depth = 0, 0~
+ end),
+ } {
+ {}
+ \finsm@sh
+ }
+}
+
+\cs_set:Npn \mathph@nt #1 #2 {
\setbox \z@ = \hbox {
$
\m@th
- #2
- {#3}
- \luamml_flag_save:nNn {mathphant_#1} #2 {mphantom}
- \luamml_pdf_write:
+ #1
+ {#2}
+ \luamml_save:nNn {mathphant} #1 {mphantom}
$
}
\luamml_annotate:nen {1} {
@@ -20,19 +40,12 @@
\ifv@\else
height = 0, depth = 0,
\fi
- data.mathml.mathphant_#1,
+ consume_label'mathphant',
}
} {
\finph@nt
}
}
-\cs_generate_variant:Nn \__luamml_kernel_phantom:nnn {V}
-
-\int_new:N \g__luamml_kernel_phantom_int
-\cs_set:Npn \mathph@nt {
- \int_gincr:N \g__luamml_kernel_phantom_int
- \__luamml_kernel_phantom:Vnn \g__luamml_kernel_phantom_int
-}
\@ifpackageloaded {unicode-math} {} {
\cs_new:Npn \__luamml_kernel_define_character:Nnn #1#2#3 {
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-lab-math.sty b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-lab-math.sty
index e2d12c3c733..7776576536b 100644
--- a/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-lab-math.sty
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-lab-math.sty
@@ -1,4 +1,4 @@
-\ProvidesExplPackage {luamml-patches-lab-math} {2024-08-14} {0.1.0}
+\ProvidesExplPackage {luamml-patches-lab-math} {2024-10-30} {0.2.0}
{Feel free to add a description here}
\AddToHook{begindocument} {
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-mathtools.sty b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-mathtools.sty
new file mode 100644
index 00000000000..3dc1570b024
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-mathtools.sty
@@ -0,0 +1,35 @@
+\ProvidesExplPackage {luamml-patches-mathtools} {2024-10-26} {0.2.0}
+ {Feel free to add a description here}
+
+\RequirePackage{luamml-patches-amsmath}
+% see https://github.com/latex3/tagging-project/issues/734
+\renewcommand*\MT_mult_internal:n [1]{
+ \MH_if_boolean:nF {outer_mult}{\alignedspace@left} %<-- requires amsmath 2016/11/05
+ \MT_next:
+ \bgroup
+ \Let@
+ \def\l_MT_multline_lastline_fint{0 }
+ \chardef\dspbrk@context\@ne \restore@math@cr
+ \MH_let:NwN \math@cr@@\MT_mult_mathcr_atat:w
+ \MH_let:NwN \shoveleft\MT_shoveleft:wn
+ \MH_let:NwN \shoveright\MT_shoveright:wn
+ \spread@equation
+ \MH_set_boolean_F:n {mult_firstline}
+ \MT_measure_mult:n {#1}
+ \MH_if_dim:w \l_MT_multwidth_dim<\l_MT_multline_measure_fdim
+ \MH_setlength:dn \l_MT_multwidth_dim{\l_MT_multline_measure_fdim}
+ \fi
+ \MH_set_boolean_T:n {mult_firstline}
+ \MH_if_num:w \l_MT_multline_lastline_fint=\@ne
+ \MH_let:NwN \math@cr@@ \MT_mult_firstandlast_mathcr:w
+ \MH_fi:
+ \ialign\bgroup
+ \hfil\strut@$\m@th\displaystyle{}##
+ \luamml_save:nNn {} \displaystyle {mtd}
+ $
+ \__luamml_amsmath_add_last_to_row:
+ \hfil
+ \crcr
+ \hfilneg
+ #1
+}
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-pdf-demo.sty b/Master/texmf-dist/tex/lualatex/luamml/luamml-pdf-demo.sty
index fe63814d056..73c93f076ca 100644
--- a/Master/texmf-dist/tex/lualatex/luamml/luamml-pdf-demo.sty
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-pdf-demo.sty
@@ -1,5 +1,5 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{luamml-pdf-demo}{2024-08-14}{v0.1.0}{Reasonable default definitions for luamml-pdf}
+\ProvidesExplPackage{luamml-pdf-demo}{2024-10-30}{0.2.0}{Reasonable default definitions for luamml-pdf}
\RequirePackage{luamml-pdf}% Loading luamml-pdf is pretty much the point
% \RequirePackage{amsmath,array}% May come back if the patches get ported
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-pdf.sty b/Master/texmf-dist/tex/lualatex/luamml/luamml-pdf.sty
index e3e1128c4bd..adeb8693dd8 100644
--- a/Master/texmf-dist/tex/lualatex/luamml/luamml-pdf.sty
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-pdf.sty
@@ -31,7 +31,7 @@
%%
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
-\ProvidesExplPackage {luamml-pdf} {2024-08-14} {0.1.0}
+\ProvidesExplPackage {luamml-pdf} {2024-10-30} {0.2.0}
{MathML generation for L̶u̶a̶pdfLaTeX}
\int_new:N \l__luamml_flag_int
\int_new:N \l__luamml_pretty_int
@@ -42,10 +42,11 @@
\int_set:Nn \l__luamml_pretty_int { 1 }
-\cs_new_protected:Npn \luamml_flag_process: {
+\cs_new_protected:Npn \luamml_process: {
\tl_set:Nn \l__luamml_label_tl {}
\int_set:Nn \l__luamml_flag_int { 3 }
}
+\cs_set_eq:NN \luamml_flag_process: \luamml_process:
\cs_new:Npn \__luamml_maybe_structelem: {
(
8 * \int_mod:nn {
@@ -63,28 +64,33 @@
\Invalid_mathstyle
}
}
-\cs_new_protected:Npn \luamml_flag_save:n #1 {
+\cs_new_protected:Npn \luamml_save:n #1 {
\tl_set:Nn \l__luamml_label_tl {#1}
\int_set:Nn \l__luamml_flag_int { \__luamml_maybe_structelem: 1 }
}
-\cs_new_protected:Npn \luamml_flag_save:nN #1#2 {
+\cs_new_protected:Npn \luamml_save:nN #1#2 {
\tl_set:Nn \l__luamml_label_tl {#1}
\int_set:Nn \l__luamml_flag_int { \__luamml_maybe_structelem: 17 + \__luamml_style_to_num:N #2 }
}
-\cs_new_protected:Npn \luamml_flag_save:nn #1 {
+\cs_new_protected:Npn \luamml_save:nn #1 {
\tl_set:Nn \l__luamml_label_tl {#1}
\int_set:Nn \l__luamml_flag_int { \__luamml_maybe_structelem: 5 }
\tl_set:Nn \l__luamml_root_tl
}
-\cs_new_protected:Npn \luamml_flag_save:nNn #1#2 {
+\cs_new_protected:Npn \luamml_save:nNn #1#2 {
\tl_set:Nn \l__luamml_label_tl {#1}
\int_set:Nn \l__luamml_flag_int { \__luamml_maybe_structelem: 21 + \__luamml_style_to_num:N #2 }
\tl_set:Nn \l__luamml_root_tl
}
-\cs_new_protected:Npn \luamml_flag_ignore: {
+\cs_set_eq:NN \luamml_flag_save:n \luamml_save:n
+\cs_set_eq:NN \luamml_flag_save:nN \luamml_save:nN
+\cs_set_eq:NN \luamml_flag_save:nn \luamml_save:nn
+\cs_set_eq:NN \luamml_flag_save:nNn \luamml_save:nNn
+\cs_new_protected:Npn \luamml_ignore: {
\int_set:Nn \l__luamml_flag_int { 0 }
}
-\luamml_flag_process:
+\cs_set_eq:NN \luamml_flag_ignore: \luamml_ignore:
+\luamml_process:
\cs_if_exist:NTF \showstream {
\iow_new:N \l__luamml_pdf_stream
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-structelemwriter.lua b/Master/texmf-dist/tex/lualatex/luamml/luamml-structelemwriter.lua
index eb266a1e9fc..97a90acedb7 100644
--- a/Master/texmf-dist/tex/lualatex/luamml/luamml-structelemwriter.lua
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-structelemwriter.lua
@@ -13,9 +13,27 @@ local function escape_string(str)
return str
end
+local ltx
+local function get_ltx()
+ if not ltx then
+ ltx = _ENV.ltx
+ if not ltx then
+ tex.error("LaTeX PDF support not loaded", {"Maybe try adding \\DocumentMetadata."})
+ ltx = {pdf = {object_id = function() return 0 end}}
+ end
+ end
+ return ltx
+end
+
local mathml_ns_obj
local function get_mathml_ns_obj()
- mathml_ns_obj = mathml_ns_obj or token.create'c__pdf_backend_object_tag/NS/mathml_int'.index
+ if not mathml_ns_obj then
+ mathml_ns_obj = get_ltx().pdf.object_id'tag/NS/mathml'
+ if not mathml_ns_obj then
+ tex.error("Failed to find MathML namespace", {"The PDF support does not know the mathml namespace"})
+ mathml_ns_obj = 0
+ end
+ end
return mathml_ns_obj
end
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-table.lua b/Master/texmf-dist/tex/lualatex/luamml/luamml-table.lua
index 8b703953f8a..4fb553af282 100644
--- a/Master/texmf-dist/tex/lualatex/luamml/luamml-table.lua
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-table.lua
@@ -58,7 +58,7 @@ end
local function store_tag(xml)
local mml_row = store_get_row()
- mml_row[0] = 'mlabeledtr'
+ xml.intent = ':equationlabel'
table.insert(mml_row, 1, xml)
last_tag = nil
end
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-tex-annotate.lua b/Master/texmf-dist/tex/lualatex/luamml/luamml-tex-annotate.lua
index 4b22374ec20..050a00a90e0 100644
--- a/Master/texmf-dist/tex/lualatex/luamml/luamml-tex-annotate.lua
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-tex-annotate.lua
@@ -6,6 +6,15 @@ local mark_environment = {
data = {
},
}
+do
+ local _ENV = mark_environment
+ function consume_label(label, fn)
+ local mathml = data.mathml[label]
+ data.mathml[label] = nil
+ if fn then fn(mathml) end
+ return mathml
+ end
+end
local function annotate()
local annotation, err = load( 'return {'
@@ -59,10 +68,10 @@ local function annotate()
props = {}
properties[marked] = props
end
- if annotation.core then
+ if annotation.core ~= nil then
props.mathml_core = annotation.core
end
- if annotation.struct then
+ if annotation.struct ~= nil then
local saved = props.mathml_filter
local struct = annotation.struct
function props.mathml_filter(mml, core)
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml.sty b/Master/texmf-dist/tex/lualatex/luamml/luamml.sty
index 27533432114..7f2cbd952bc 100644
--- a/Master/texmf-dist/tex/lualatex/luamml/luamml.sty
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml.sty
@@ -31,7 +31,7 @@
%%
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
-\ProvidesExplPackage {luamml} {2024-08-14} {0.1.0}
+\ProvidesExplPackage {luamml} {2024-10-30} {0.2.0}
{Automatically generate presentational MathML from LuaTeX math expressions}
\int_new:N \l__luamml_flag_int
\int_new:N \l__luamml_pretty_int
@@ -50,10 +50,11 @@
}
\__luamml_register_output_hook:N \__luamml_output_hook:n
-\cs_new_protected:Npn \luamml_flag_process: {
+\cs_new_protected:Npn \luamml_process: {
\tl_set:Nn \l__luamml_label_tl {}
\int_set:Nn \l__luamml_flag_int { 3 }
}
+\cs_set_eq:NN \luamml_flag_process: \luamml_process:
\cs_new:Npn \__luamml_maybe_structelem: {
(
8 * \int_mod:nn {
@@ -64,35 +65,41 @@
\cs_new:Npn \__luamml_style_to_num:N #1 {
32 * #1
}
-\cs_new_protected:Npn \luamml_flag_save:n #1 {
+\cs_new_protected:Npn \luamml_save:n #1 {
\tl_set:Nn \l__luamml_label_tl {#1}
\int_set:Nn \l__luamml_flag_int { \__luamml_maybe_structelem: 1 }
}
-\cs_new_protected:Npn \luamml_flag_save:nN #1#2 {
+\cs_new_protected:Npn \luamml_save:nN #1#2 {
\tl_set:Nn \l__luamml_label_tl {#1}
\int_set:Nn \l__luamml_flag_int { \__luamml_maybe_structelem: 17 + \__luamml_style_to_num:N #2 }
}
-\cs_new_protected:Npn \luamml_flag_save:nn #1 {
+\cs_new_protected:Npn \luamml_save:nn #1 {
\tl_set:Nn \l__luamml_label_tl {#1}
\int_set:Nn \l__luamml_flag_int { \__luamml_maybe_structelem: 5 }
\tl_set:Nn \l__luamml_root_tl
}
-\cs_new_protected:Npn \luamml_flag_save:nNn #1#2 {
+\cs_new_protected:Npn \luamml_save:nNn #1#2 {
\tl_set:Nn \l__luamml_label_tl {#1}
\int_set:Nn \l__luamml_flag_int { \__luamml_maybe_structelem: 21 + \__luamml_style_to_num:N #2 }
\tl_set:Nn \l__luamml_root_tl
}
-\cs_new_protected:Npn \luamml_flag_ignore: {
+\cs_set_eq:NN \luamml_flag_save:n \luamml_save:n
+\cs_set_eq:NN \luamml_flag_save:nN \luamml_save:nN
+\cs_set_eq:NN \luamml_flag_save:nn \luamml_save:nn
+\cs_set_eq:NN \luamml_flag_save:nNn \luamml_save:nNn
+\cs_new_protected:Npn \luamml_ignore: {
\int_set:Nn \l__luamml_flag_int { 0 }
}
-\cs_new_protected:Npn \luamml_flag_structelem: {
+\cs_set_eq:NN \luamml_flag_ignore: \luamml_ignore:
+\cs_new_protected:Npn \luamml_structelem: {
\tl_set:Nn \l__luamml_label_tl {}
\int_set:Nn \l__luamml_flag_int { 11 }
}
+\cs_set_eq:NN \luamml_flag_structelem: \luamml_structelem:
\cs_new_protected:Npn \luamml_set_filename:n {
\tl_set:Nn \l__luamml_filename_tl
}
-\luamml_flag_process:
+\luamml_process:
\cs_new_protected:Npn \luamml_annotate:nen #1#2#3 {
\__luamml_annotate_begin:
#3
@@ -119,6 +126,7 @@
\RequirePackage { luamml-patches-kernel }
\__luamml_patch_package:n {amstext}
\__luamml_patch_package:n {amsmath}
+\__luamml_patch_package:n {mathtools}
\__luamml_patch_package:n {array}
\endinput
diff --git a/Master/texmf-dist/tex/lualatex/luatbls/luatbls.lua b/Master/texmf-dist/tex/lualatex/luatbls/luatbls.lua
new file mode 100644
index 00000000000..5cb1e29ab31
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luatbls/luatbls.lua
@@ -0,0 +1,373 @@
+--% Kale Ewasiuk (kalekje@gmail.com)
+--% 2025-01-05
+--% Copyright (C) 2025 Kale Ewasiuk
+--%
+--% 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.
+
+
+local luatbls = {}
+
+luatbls._luakeys = require'luakeys'()
+
+luatbls._rec_tbl = ''
+luatbls._rec_tbl_opts = {}
+
+luatbls._xysep = '%s+' -- spaces separate x-y coordinates
+luatbls._tblv = '<v>'
+luatbls._tblk = '<k>'
+luatbls._cstemp = 'ltbl<t><k>'
+luatbls._debug = false
+
+function luatbls._dprint(s1, s2)
+ if luatbls._debug then
+ penlight.wrth(s1, s1)
+ end
+end
+
+
+setmetatable(luatbls, {__call=function(t,s)return t._get_tbl_item(s) end})
+
+function luatbls._get_tbl_name(s)
+ s = s:strip()
+ if s == '' then
+ return luatbls._rec_tbl
+ end
+ for _, delim in ipairs{'.', '/', '|'} do
+ s = s:split(delim)[1] -- if tbl reference had a . | or /, an indexer was used
+ end
+ if luatbls[s] == nil then
+ local validtbls = penlight.List(penlight.tablex.kkeys(luatbls)):filter(function(s) return not s:startswith('_') end):join(', ')
+ penlight.tex.pkgerror('luatbls', 'Tried to access undefined tbl: "'..s..'". Valid tbls are: '..validtbls)
+ return luatbls._rec_tbl
+ end
+ return s
+end
+
+function luatbls._get_tbl(s)
+ s = luatbls._get_tbl_name(s)
+ return luatbls[s]
+end
+
+function luatbls._get_tbl_index(s, undec)
+ undec = undec or false -- flag for allowing undeclared indexing
+ local tbl = ''
+ local key = ''
+ local s_raw = s
+ if s:find('%.') then
+ local tt = s:split('.')
+ tbl = tt[1]
+ key = tt[2]
+ elseif s:find('/') then
+ local tt = s:split('/')
+ tbl = tt[1]
+ if tbl == '' then tbl = luatbls._rec_tbl end
+ key = tonumber(tonumber(tt[2]))
+ if key < 0 then key = #luatbls[tbl]+1+key end
+ else
+ tbl = luatbls._rec_tbl
+ key = tonumber(s) or s
+ if type(key) == 'number' and key < 0 then key = #luatbls[tbl]+1+key end
+ end
+ if tbl == '' then tbl = luatbls._rec_tbl end
+
+ if (luatbls[tbl] == nil) or ((not undec) and (luatbls[tbl][key] == nil)) then
+ penlight.tex.pkgerror('luatbls', 'Invalid tbl index attempt using: "'..s_raw..'". We tried to use tbl="' ..tbl..'" and key="'..key..'"'..
+ 'Note that "|" is forbidden here. The recent table is: '..luatbls._rec_tbl)
+ end
+ return tbl, key
+end
+
+function luatbls._get_tbl_seq(s)
+ local tblseq = s:split('|')
+ local tbl = nil
+ local seq = nil
+ if #tblseq == 1 then
+ tbl = luatbls._get_tbl_name('')
+ seq = tblseq[1]
+ if seq == '' then seq = ':,*' end
+ elseif #tblseq == 2 then
+ tbl = luatbls._get_tbl_name(tblseq[1])
+ seq = tblseq[2]
+ if seq == '' then seq = ':,*' end
+ end
+ return tbl, seq
+end
+
+
+
+function luatbls._get_tbl_item(s, p) -- get item with string, p means print value
+ p = p or false
+ local tbl, key = luatbls._get_tbl_index(s)
+ local itm = luatbls[tbl][key]
+ if p then
+ tex.sprint(tostring(itm))
+ end
+ return itm
+end
+
+
+function luatbls._set_tbl_item(s, v)
+ tbl, key = luatbls._get_tbl_index(s)
+ luatbls[tbl][key] = v
+end
+
+function luatbls._check_recent_tbl_undefault()
+ local undefaults = {}
+ if luatbls._rec_tbl_opts ~= nil then
+ local defaults = penlight.tablex.union(
+ luatbls._rec_tbl_opts.defs or {},
+ luatbls._rec_tbl_opts.defaults or {}
+ )
+ for k, v in pairs(luatbls[luatbls._rec_tbl]) do
+ if defaults[k] == nil then
+ undefaults[#undefaults+1] = k
+ end
+ end
+ if penlight.hasval(undefaults) then
+ penlight.tex.pkgerror('luatbls',
+ 'Invalid keys passed to tbl keyval: ' .. (', '):join(undefaults) ..
+ ' ; choices are: ' .. (', '):join(penlight.tablex.keys(defaults))
+ )
+ end
+ end
+end
+
+function luatbls._make_alpha_key(k)
+ if tonumber(k) ~= nil then
+ k = penlight.Char(tonumber(k))
+ end
+ return k
+end
+
+function luatbls._make_def_name(t, k, temp)
+ if temp == penlight.tex.xNoValue then
+ temp = luatbls._cstemp
+ end
+ k = luatbls._make_alpha_key(k)
+ return temp:gsub('<t>',t):gsub('<k>',k)
+end
+
+function luatbls._def_tbl(ind, def, g)
+ local _tbl, _key = luatbls._get_tbl_index(ind)
+ def = luatbls._make_def_name(_tbl, _key, def)
+ luatbls._def_tbl_one(luatbls[_tbl][_key], def, g)
+end
+
+
+function luatbls._def_tbl_some(Ind, def, g)
+ for t, k, v in luatbls._iter_tbls_vals(Ind) do
+ local newdef = luatbls._make_def_name(t, k, def)
+ luatbls._def_tbl_one(v, newdef, g)
+ end
+end
+
+
+function luatbls._def_tbl_one(v, cs, g)
+ if type(v) == 'table' then
+ for kk, vv in pairs(v) do
+ token.set_macro(cs..luatbls._make_alpha_key(kk), tostring(vv), g)
+ end
+ else
+ token.set_macro(cs, tostring(v), g)
+ end
+end
+
+function luatbls._def_tbl_coords(ind, def)
+ local tbl, key = luatbls._get_tbl_index(ind)
+ local str = luatbls[tbl][key]
+ def = luatbls._make_def_name(tbl, key, def)
+ local x, y = str:strip():splitv(luatbls._xysep)
+ if (not penlight.hasval(x)) or (not penlight.hasval(y)) then
+ penlight.tex.pkgerror('luatbls', '_def_tbl_coords function could not parse coordiantes given as "'..str..'" ensure two numbers separated by space are given!', '', true)
+ end
+ token.set_macro(def..'x', tostring(x))
+ token.set_macro(def..'y', tostring(y))
+end
+
+
+
+function luatbls._make_one_toggle(def, v, g)
+ tex.sprint(g..'\\providetoggle{'..def..'}')
+ tex.sprint(g..'\\toggle'..tostring(v)..'{'..def..'}')
+end
+
+function luatbls._make_toggle_tbl(ind, def, g)
+ g = g or ''
+ local t, k = luatbls._get_tbl_index(ind)
+ local v = luatbls[t][k]
+ def = luatbls._make_def_name(t, k, def)
+ luatbls._make_one_toggle(def, penlight.hasval(v), g)
+end
+
+function luatbls._make_toggles_tbl(Ind, def, g)
+ g = g or ''
+ for t, k, v in luatbls._iter_tbls_vals(Ind) do
+ if type(v) == 'boolean' then
+ local newdef = luatbls._make_def_name(t, k, def)
+ luatbls._make_one_toggle(newdef, v, g)
+ end
+ end
+end
+
+
+function luatbls._make_one_length(def, v, g)
+ tex.sprint(g..'\\providenewlength{\\'..def..'}')
+ tex.sprint(g..'\\deflength{\\'..def..'}{'..v..'}')
+end
+
+function luatbls._make_length_tbl(ind, def, g)
+ g = g or ''
+ local t, k = luatbls._get_tbl_index(ind)
+ local v = luatbls[t][k]
+ if type(v) == 'number' then
+ v = tostring(v)..'sp'
+ end
+ local def = luatbls._make_def_name(t, k, def)
+ luatbls._make_one_length(def, v, g)
+end
+
+function luatbls._make_lengths_tbl(Ind, def, g)
+ g = g or ''
+ for t, k, v in luatbls._iter_tbls_vals(Ind) do
+ if type(v) == 'number' then
+ v = tostring(v)..'sp'
+ end
+ if v:istexdim() then
+ local newdef = luatbls._make_def_name(t, k, def)
+ luatbls._make_one_length(newdef, v, g)
+ end
+ end
+end
+
+
+
+function luatbls._for_tbl_prt(k, v,cmd)
+ local cmd_new = cmd:gsub(luatbls._tblv, tostring(v)):gsub(luatbls._tblk, tostring(k)):gsub('(\\%w+) ', '%1') -- for some reason a space gets added to \cs, maybe
+ luatbls._dprint(cmd_new, '_for_tbl replacement')
+ tex.sprint(cmd_new)
+end
+
+function luatbls._for_tbl(Ind, cmd)
+ for t, k, v in luatbls._iter_tbls_vals(Ind) do
+ luatbls._for_tbl_prt(k, v,cmd)
+ end
+end
+
+function luatbls._for_tbl_e(tbl, cmd)
+ for k, v in pairs(tbl) do
+ luatbls._for_tbl_prt(k, v,cmd)
+ end
+end
+
+
+function luatbls._iter_tbls_vals(s)
+ if s:find('|') or ((s:find('%.') == nil) and (s:find('/') == nil)) then
+ local tbl, seq = luatbls._get_tbl_seq(s)
+ local keyval = {}
+ for key, val in penlight.seq.tbltrain(luatbls._get_tbl(tbl), seq) do
+ -- todo this should check validity of keys for sequences
+ keyval[#keyval+1] = {key, val}
+ end
+ luatbls._dprint(keyval, 'luatbls._iter_tbls_vals is iterating through tbl: '..tbl..' with sequence: '..seq)
+ local i = 0
+ return function()
+ i = i + 1
+ if i <= #keyval then
+ return tbl, keyval[i][1], keyval[i][2]
+ end
+ end
+ else
+ local tbl, key = luatbls._get_tbl_index(s)
+ local val = luatbls[tbl][key]
+ luatbls._dprint(keyval, 'luatbls._iter_tbls_vals is using tbl: '..tbl..' with key: '..key)
+ local i = 1
+ return function()
+ if i == 1 then
+ i = i + 1 -- only return the single value
+ return tbl, key, val
+ end
+ end
+ end
+end
+
+function luatbls._make_args(s, key, val)
+ local args = {val}
+ if s == nil then
+ return args
+ end
+ s = s:split(')')[1]
+ args = luatbls._luakeys.parse(s, {naked_as_value=true})
+ for i, v in ipairs(args) do
+ if v == luatbls._tblv then
+ args[i] = val
+ elseif v == luatbls._tblk then
+ args[i] = key
+ end
+ end
+ return args
+end
+
+function luatbls._make_func(f, key, val)
+ f = f:strip()
+ fargs = f:split('(')
+ f = fargs[1]
+ args = luatbls._make_args(fargs[2], key, val)
+ if f:startswith(':') then
+ f = f:sub(2,-1)
+ if type(val) == 'string' then
+ f = string[f]
+ elseif type(val) == 'table' then
+ f = penlight.tablex[f]
+ end
+ else
+ f = penlight._Gdot(f)
+ end
+ --luatbls._dprint() -- todo more debug printing
+ return f, args
+end
+
+
+
+function luatbls._make_newtbl(tblind, newtbl)
+ if tblind == '' then tblind = luatbls._rec_tbl..'|' end
+ if newtbl ~= '' then -- determine if new tbl is needed
+ local ogtbl = luatbls._get_tbl_name(tblind)
+ luatbls[newtbl] = penlight.tablex.deepcopy(luatbls[ogtbl])
+ luatbls._rec_tbl = newtbl
+ tblind, _ = string.gsub(tblind, ogtbl, newtbl, 1)
+ end
+ return tblind
+end
+
+function luatbls._apply_tbl(tblind, func, newtbl)
+ tblind = luatbls._make_newtbl(tblind, newtbl)
+ for _, f in pairs(func:split('|')) do
+ for tbl, key, val in luatbls._iter_tbls_vals(tblind) do
+ local thefunc, args = luatbls._make_func(f, key, val)
+ if thefunc == nil then
+ penlight.tex.pkgerror('luatbls', 'Tried to apply function: "'..f..'" to tbl value. It yielded no function. Ensure : is used for self-methods')
+ end
+ luatbls[tbl][key] = thefunc(penlight.utils.unpack(args))
+ end
+ end
+end
+
+return luatbls \ No newline at end of file
diff --git a/Master/texmf-dist/tex/lualatex/luatbls/luatbls.sty b/Master/texmf-dist/tex/lualatex/luatbls/luatbls.sty
new file mode 100644
index 00000000000..f52facd7df6
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luatbls/luatbls.sty
@@ -0,0 +1,184 @@
+% Kale Ewasiuk (kalekje@gmail.com)
+% 2025-01-05
+% Copyright (C) 2025 Kale Ewasiuk
+%
+% 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.
+
+\RequirePackage{luacode}
+\RequirePackage{luakeys}
+\RequirePackage{penlightplus}
+
+
+\luadirect{luatbls = require'luatbls'}
+
+
+\NewDocumentCommand{\tblnew}{m}{\luadirect{% initialize a tbl and set empty
+ luatbls[\luastring{#1}] = {}
+ luatbls._rec_tbl = \luastring{#1}
+}}
+
+
+\NewDocumentCommand{\tblchg}{ m }{\luadirect{% change recent table
+ luatbls._rec_tbl = luatbls._get_tbl_name(\luastring{#1})
+}}
+
+\NewDocumentCommand{\tblfrkv}{m +m O{}}{\luadirect{% parse a tbl from key-vals, naked are set to boolean
+ luatbls._rec_tbl_opts = luatbls._luakeys.parse(\luastring{#3})
+ luatbls[\luastring{#1}] = luatbls._luakeys.parse(string.subpar(\luastring{#2}), luatbls._rec_tbl_opts)
+ luatbls._rec_tbl = \luastring{#1}
+}}
+
+\NewDocumentCommand{\tblfrkvN}{m +m O{}}{\luadirect{%
+ luatbls._rec_tbl_opts = luatbls._luakeys.parse(\luastring{#3})
+ luatbls[\luastring{#1}] = luatbls._luakeys.parse(string.subpar(\luastringN{#2}), luatbls._rec_tbl_opts)
+ luatbls._rec_tbl = \luastring{#1}
+}}
+
+\NewDocumentCommand{\tblfrcsv}{m +m O{}}{\tblfrkv{#1}{#2}[naked_as_value=true,#3]}% naked are set to array
+
+\NewDocumentCommand{\tblfrcsvN}{m +m O{}}{\tblfrkvN{#1}{#2}[naked_as_value=true,#3]}
+
+\NewDocumentCommand{\tblkvundefcheck}{}{\luadirect{luatbls._check_recent_tbl_undefault()}}% check defaults list and throw error if foreign keys were used
+
+
+
+\NewDocumentCommand{\tblapp}{m m}{\luadirect{% append to a table (ie using integer index) with a value (second arg)
+ __tbl__ = luatbls._get_tbl_name(\luastring{#1})
+ table.insert(luatbls[__tbl__], \luastring{#2})
+}}
+
+
+\NewDocumentCommand{\tblappN}{m m}{\luadirect{% append to a table (ie using integer index) with a value (second arg) #
+ __tbl__ = luatbls._get_tbl_name(\luastring{#1})
+ table.insert(luatbls[__tbl__], \luastringN{#2})
+}}
+
+
+\NewDocumentCommand{\tblcon}{m m}{\luadirect{% concatenate to a table (ie using integer index) with a list of comma separated values (second arg) #
+ __tbl__ = luatbls._get_tbl_name(\luastring{#1})
+ for k, v in ipairs(luatbls._luakeys.parse(string.subpar(\luastring{#2}), {naked_as_value=true})) do
+ table.insert(luatbls[__tbl__], v)
+ end
+}}
+
+
+\NewDocumentCommand{\tblconN}{m m}{\luadirect{% concatenate to a table (ie using integer index) with a list of comma separated values (second arg) #
+ __tbl__ = luatbls._get_tbl_name(\luastring{#1})
+ for k, v in ipairs(luatbls._luakeys.parse(string.subpar(\luastringN{#2}), {naked_as_value=true})) do
+ table.insert(luatbls[__tbl__], v)
+ end
+}}
+
+
+\NewDocumentCommand{\tbladd}{m m}{\luadirect{% add a kv pair to a table
+ __tbl__, __key__ = luatbls._get_tbl_index(\luastring{#1}, true)
+ luatbls[__tbl__][__key__] = \luastring{#2}
+}}
+
+\NewDocumentCommand{\tbladdN}{m m}{\luadirect{% add a kv pair to a table
+ __tbl__, __key__ = luatbls._get_tbl_index(\luastring{#1}, true)
+ luatbls[__tbl__][__key__] = \luastringN{#2}
+}}
+
+
+\NewDocumentCommand{\tblupd}{m m}{\luadirect{% update to a table (ie using integer index) with a list of comma separated values (second arg) #
+ __tbl__ = luatbls._get_tbl_name(\luastring{#1})
+ __tbl_new__ = luatbls._luakeys.parse(string.subpar(\luastring{#2})
+ penlight.tablex.update(luatbls[__tbl__], __tbl_new__)
+}}
+
+
+\NewDocumentCommand{\tblupdN}{m m}{\luadirect{% update to a table (ie using integer index) with a list of comma separated values (second arg) #
+ __tbl__ = luatbls._get_tbl_name(\luastring{#1})
+ __tbl_new__ = luatbls._luakeys.parse(string.subpar(\luastringN{#2})
+ penlight.tablex.update(luatbls[__tbl__], __tbl_new__)
+}}
+
+
+
+
+\NewDocumentCommand{\tblget}{m}{\luadirect{% get an item using i syntax
+ luatbls._get_tbl_item(\luastring{#1}, true)
+}}
+
+\NewDocumentCommand{\tblgetE}{m}{\luadirect{% get an item explicitly
+ tex.sprint(tostring(luatbls.#1))
+}}
+
+\NewDocumentCommand{\tblset}{m m}{\luadirect{% set item with {value}
+ luatbls._set_tbl_item(\luastring{#1}, \luastring{#2})
+}}
+
+\NewDocumentCommand{\tblsetN}{m m}{\luadirect{% set item with {value}
+ luatbls._set_tbl_item(\luastring{#1}, \luastringN{#2})
+}}
+
+\NewDocumentCommand{\tblsetE}{m m}{\luadirect{luatbls.#1 = #2}}% set item with {value}
+
+
+\NewDocumentCommand{\tblif}{ m m O{}}{\ifluax{luatbls._get_tbl_item(\luastring{#1})}{#2}[#3]}
+
+\NewDocumentCommand{\tblifv}{m m O{}}{\ifluaxv{luatbls._get_tbl_item(\luastring{#1})}{#2}[#3]}
+
+\NewDocumentCommand{\tblifeq}{m m m O{}}{\ifluax{luatbls._get_tbl_item(\luastring{#1}) == #2}{#3}[#4]}
+
+
+\NewDocumentCommand{\tblfor}{ m m }{\luadirect{luatbls._for_tbl(\luastring{#1}, \luastring{#2})}}
+\NewDocumentCommand{\tblforN}{ m m }{\luadirect{luatbls._for_tbl(\luastring{#1}, \luastringN{#2})}}
+
+\NewDocumentCommand{\tblforE}{ m m }{\luadirect{luatbls._for_tbl_e(luatbls.#1, \luastring{#2})}}
+\NewDocumentCommand{\tblforEN}{ m m }{\luadirect{luatbls._for_tbl_e(luatbls.#1, \luastringN{#2})}}
+
+
+\NewDocumentCommand{\tbldef}{ m o }{\luadirect{luatbls._def_tbl(\luastring{#1}, \luastring{#2})}}
+\NewDocumentCommand{\tblgdef}{ m o }{\luadirect{luatbls._def_tbl(\luastring{#1}, \luastring{#2}, 'global')}}
+
+\NewDocumentCommand{\tbldefs}{ m o }{\luadirect{luatbls._def_tbl_some(\luastring{#1}, \luastring{#2})}}
+\NewDocumentCommand{\tblgdefs}{ m o }{\luadirect{luatbls._def_tbl_some(\luastring{#1}, \luastring{#2}, 'global')}}
+
+
+
+\ProvideDocumentCommand{\providenewlength}{ m }{\ifdeflength{#1}{}{\newlength{#1}}}
+
+
+\NewDocumentCommand{\tblmaketoggle}{ m o }{\luadirect{luatbls._make_toggle_tbl(\luastring{#1}, \luastring{#2})}}
+\NewDocumentCommand{\tblmakegtoggle}{ m o }{\luadirect{luatbls._make_toggle_tbl(\luastring{#1}, \luastring{#2}, '\\global')}}
+
+\NewDocumentCommand{\tblmaketoggles}{ m o }{\luadirect{luatbls._make_toggles_tbl(\luastring{#1}, \luastring{#2})}}
+\NewDocumentCommand{\tblmakegtoggles}{ m o }{\luadirect{luatbls._make_toggles_tbl(\luastring{#1}, \luastring{#2}, '\\global')}}
+
+
+\NewDocumentCommand{\tblmakelength}{ m o }{\luadirect{luatbls._make_length_tbl(\luastring{#1}, \luastring{#2})}}
+\NewDocumentCommand{\tblmakeglength}{ m o }{\luadirect{luatbls._make_length_tbl(\luastring{#1}, \luastring{#2}, '\\global')}}
+
+\NewDocumentCommand{\tblmakelengths}{ m o }{\luadirect{luatbls._make_lengths_tbl(\luastring{#1}, \luastring{#2})}}
+\NewDocumentCommand{\tblmakeglengths}{ m o }{\luadirect{luatbls._make_lengths_tbl(\luastring{#1}, \luastring{#2}, '\\global')}}
+
+
+\NewDocumentCommand{\tbldefxy}{ m o }{\luadirect{luatbls._def_tbl_coords(\luastring{#1}, \luastring{#2})}}% define #2x and #2y from a space delimited x-y pair
+
+\NewDocumentCommand{\tblapply}{m m O{}}{\luadirect{luatbls._apply_tbl(\luastring{#1}, \luastring{#2}, \luastring{#3})}}
+
+\NewDocumentCommand{\tblprt}{s m}{%
+ \luadirect{penlight.wrth(luatbls._get_tbl(\luastring{#2}),'luatbls: '..\luastring{#2})}%
+ \IfBooleanTF{#1}{\PackageError{luatbls}{Program terminated by tblprt*}{}\stop}{}%
+}
+
diff --git a/Master/texmf-dist/tex/lualatex/odsfile/odsfile.lua b/Master/texmf-dist/tex/lualatex/odsfile/odsfile.lua
index 8fdf30abee6..a32e370566c 100644
--- a/Master/texmf-dist/tex/lualatex/odsfile/odsfile.lua
+++ b/Master/texmf-dist/tex/lualatex/odsfile/odsfile.lua
@@ -162,8 +162,15 @@ function tableValues(tbl,x1,y1,x2,y2)
return t
end
+function join(tbl1, tbl2)
+ for _, x in ipairs(tbl2) do
+ tbl1[#tbl1+1] = x
+ end
+ return tbl1
+end
+
function getRange(range)
- if range == nil then return {nil,nil,nil,nil} end
+ if range == nil then return {{nil,nil,nil,nil}} end
local range = namedRanges[range] or range
local r = range:lower()
local function getNumber(s)
@@ -175,10 +182,12 @@ function getRange(range)
end
return f
end
+ local ranges = {}
for x1,y1,x2,y2 in r:gmatch("(%a*)(%d*):*(%a*)(%d*)") do
- return {getNumber(x1),tonumber(y1),getNumber(x2),tonumber(y2)}
+ ranges[#ranges+1] = {getNumber(x1),tonumber(y1),getNumber(x2),tonumber(y2)}
--print(string.format("%s, %s, %s, %s",getNumber(x1),y1,getNumber(x2),y2))
end
+ return ranges
end
function table_slice (values,i1,i2)
@@ -329,6 +338,12 @@ function updateZip(zipfile, updatefile)
print ("Updating an ods file.\n" ..command .."\n Return code: ", os.execute(command))
end
+function save(filename, content)
+ local f = io.open(filename, "w")
+ f:write(content)
+ f:close()
+end
+
M.load= load
M.loadContent = loadContent
M.getTable= getTable
@@ -336,6 +351,7 @@ M.getTable0= getTable0
M.getColumnCount= getColumnCount
M.loadNameRanges= loadNameRanges
M.tableValues= tableValues
+M.join = join
M.getRange= getRange
M.getNumber= getNumber
M.table_slice = table_slice
@@ -352,5 +368,6 @@ M.findLastRow = findLastRow
M.insert = insert
-- for updateing the archive. Depends on external zip utility
M.updateZip= updateZip
+M.save = save
return M
diff --git a/Master/texmf-dist/tex/lualatex/odsfile/odsfile.sty b/Master/texmf-dist/tex/lualatex/odsfile/odsfile.sty
index 59b8cfa7606..5b0ffcaeb96 100644
--- a/Master/texmf-dist/tex/lualatex/odsfile/odsfile.sty
+++ b/Master/texmf-dist/tex/lualatex/odsfile/odsfile.sty
@@ -1,6 +1,6 @@
% Package odsfile. Author Michal Hoftich <michal.h21@gmail.com>
% This package is subject of LPPL license, version 1.3c
-\ProvidesPackage{odsfile}[2023/09/07 v0.8 odsfile package to select cells from ODS sheets and
+\ProvidesPackage{odsfile}[2024/10/10 v0.9 odsfile package to select cells from ODS sheets and
typeset them as LaTeX tables]
\RequirePackage{luacode,xkeyval,xparse}
@@ -35,6 +35,15 @@ rowseparator=[[\\n]]
\define@key{includespread}{columnbreak}{%
\luaexec{columnbreak="\luatexluaescapestring{\unexpanded{#1}}{}"}%
}
+
+\define@key{includespread}{save}{%
+ \luaexec{odssave="\luatexluaescapestring{#1}"}%
+}
+
+\define@key{includespread}{debug}{% use either true or false
+ \luaexec{odsdebug=\luatexluaescapestring{#1}}%
+}
+
\define@key{includespread}{coltypes}{%
\luaexec{coltypes="\luatexluaescapestring{\unexpanded{#1}}"}%
}
@@ -57,6 +66,15 @@ columns = split(s,",")
}%
}{}%
+\define@key{includespread}{newline}{%
+ \luaexec{odsnl="\luatexluaescapestring{\unexpanded{#1}}"}%
+}
+
+\define@key{includespread}{lastnewline}{%
+ \luaexec{odslastnl="\luatexluaescapestring{\unexpanded{#1}}"}%
+}
+
+
% Variable initialization and helper functions
\begin{luacode*}
@@ -67,6 +85,8 @@ range = {nil,nil,nil,nil}
columns = nil
templates = {}
row = {}
+odssave = nil
+odsdebug = nil
body = nil
odsfilename = ""
currenttemplate = nil
@@ -74,6 +94,8 @@ rowtemplate = nil
celltpl = "-{value}"
multicoltpl = "\\multicolumn{-{count}}{l}{-{value}}"
latexescape = "true"
+odsnl = "\\OdsNl"
+odslastnl = "\\OdsLastNl"
\end{luacode*}
\newcommand\loadodsfile[2][]{%
@@ -110,6 +132,8 @@ latexescape = "true"
rowseparator = ""
columns=nil
currenttemplate = nil
+ odssave = nil
+ odsdebug = false
rowtemplate = nil
celltpl = "-{value}"
columnbreak = "\\linebreak{}"
@@ -119,8 +143,11 @@ latexescape = "true"
\setkeys{includespread}{#1}%
\luaexec{%
body = odsreader.getTable(odsfile,sheetname)
- local real_range = odsreader.getRange(range)
- local values = odsreader.tableValues(body,real_range[1],real_range[2],real_range[3],real_range[4])
+ local ranges = odsreader.getRange(range)
+ local values = {}
+ for _, real_range in ipairs(ranges) do
+ values = odsreader.join(values, odsreader.tableValues(body,real_range[1],real_range[2],real_range[3],real_range[4]))
+ end
%-- Conversion of odsfile table values to LaTeX tabular
local concatParagraphs = function(column)
% -- second returned value signalize whether cell contain paragraph, or not
@@ -189,10 +216,13 @@ latexescape = "true"
columns = rowValues(values[1])
content = odsreader.table_slice(content,2,nil)
elseif type(columns) == "number" and columns == 2 then
- local t = odsreader.tableValues(body,real_range[1],1,real_range[3],2)
+ local t = {}
+ for _, real_range in ipairs(ranges) do
+ t = odsreader.join(t, odsreader.tableValues(body,real_range[1],1,real_range[3],2))
+ end
columns = rowValues(t[1])
end
- if type(columns) == "table" then colheading = table.concat(columns," & ") .. "\\OdsNl " end
+ if type(columns) == "table" then colheading = table.concat(columns," & ") .. odsnl .. " " end
% coltypes = ""
if type(content)== "table" then
% coltypes= string.rep("l",\#content[1])
@@ -200,10 +230,16 @@ latexescape = "true"
coltypes = makeColtypes(headings)
end
end
- content = table.concat(content, "\\OdsNl "..rowseparator) .. "\\OdsLastNl"
+ content = table.concat(content, odsnl .. " " ..rowseparator) .. odslastnl
local result = odsreader.interp(templates[currenttemplate],{content=content,coltypes=coltypes,colheading=colheading,rowsep=rowseparator})
- print(result)
- tex.print(result)
+ if odsdebug then
+ print(result)
+ end
+ if odssave then
+ odsreader.save(odssave, result)
+ else
+ tex.sprint(result)
+ end
else
local content = {}
currenttemplate = currenttemplate or "empty"
@@ -212,8 +248,14 @@ latexescape = "true"
end
content = table.concat(content,rowseparator)
local result = odsreader.interp(templates[currenttemplate],{content=content,coltypes=coltypes,colheading=colheading,rowsep=rowseparator})
- print(result)
- tex.sprint(result)
+ if odsdebug then
+ print(result)
+ end
+ if odssave then
+ odsreader.save(odssave, result)
+ else
+ tex.sprint(result)
+ end
end
}%
}%
diff --git a/Master/texmf-dist/tex/lualatex/piton/piton.lua b/Master/texmf-dist/tex/lualatex/piton/piton.lua
index 7cce988bfd9..d8af42a7ada 100644
--- a/Master/texmf-dist/tex/lualatex/piton/piton.lua
+++ b/Master/texmf-dist/tex/lualatex/piton/piton.lua
@@ -6,7 +6,7 @@
--
-- piton.dtx (with options: `LUA')
-- ---------------------------------------------
--- Copyright (C) 2022-2024 by F. Pantigny
+-- Copyright (C) 2022-2025 by F. Pantigny
--
-- This file may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either
@@ -20,44 +20,48 @@
-- -------------------------------------------
--
-- This file is part of the LuaLaTeX package 'piton'.
-piton_version = "3.1b" -- 2024/08/29
+piton_version = "4.2b" -- 2025/01/18
-if piton.comment_latex == nil then piton.comment_latex = ">" end
+
+piton.comment_latex = piton.comment_latex or ">"
piton.comment_latex = "#" .. piton.comment_latex
-local function sprintL3 ( s )
- tex.sprint ( luatexbase.catcodetables.expl , s )
+local sprintL3
+function sprintL3 ( s )
+ tex.sprint ( luatexbase.catcodetables.expl , s )
end
local P, S, V, C, Ct, Cc = lpeg.P, lpeg.S, lpeg.V, lpeg.C, lpeg.Ct, lpeg.Cc
local Cs , Cg , Cmt , Cb = lpeg.Cs, lpeg.Cg , lpeg.Cmt , lpeg.Cb
-local R = lpeg.R
-local function Q ( pattern )
+local B , R = lpeg.B , lpeg.R
+local Q
+function Q ( pattern )
return Ct ( Cc ( luatexbase.catcodetables.CatcodeTableOther ) * C ( pattern ) )
end
-local function L ( pattern )
- return Ct ( C ( pattern ) )
+local L
+function L ( pattern ) return
+ Ct ( C ( pattern ) )
end
-local function Lc ( string )
- return Cc ( { luatexbase.catcodetables.expl , string } )
+local Lc
+function Lc ( string ) return
+ Cc ( { luatexbase.catcodetables.expl , string } )
end
-local function K ( style , pattern )
- return
- Lc ( "{\\PitonStyle{" .. style .. "}{" )
- * Q ( pattern )
- * Lc "}}"
+local K
+function K ( style , pattern ) return
+ Lc ( [[ {\PitonStyle{ ]] .. style .. "}{" )
+ * Q ( pattern )
+ * Lc "}}"
end
-local function WithStyle ( style , pattern )
- return
- Ct ( Cc "Open" * Cc ( "{\\PitonStyle{" .. style .. "}{" ) * Cc "}}" )
- * pattern
- * Ct ( Cc "Close" )
+local WithStyle
+function WithStyle ( style , pattern ) return
+ Ct ( Cc "Open" * Cc ( [[{\PitonStyle{]] .. style .. "}{" ) * Cc "}}" )
+ * pattern
+ * Ct ( Cc "Close" )
end
Escape = P ( false )
EscapeClean = P ( false )
-if piton.begin_escape ~= nil
-then
+if piton.begin_escape then
Escape =
P ( piton.begin_escape )
* L ( ( 1 - P ( piton.end_escape ) ) ^ 1 )
@@ -68,13 +72,12 @@ then
* P ( piton.end_escape )
end
EscapeMath = P ( false )
-if piton.begin_escape_math ~= nil
-then
+if piton.begin_escape_math then
EscapeMath =
P ( piton.begin_escape_math )
- * Lc "\\ensuremath{"
+ * Lc "$"
* L ( ( 1 - P(piton.end_escape_math) ) ^ 1 )
- * Lc ( "}" )
+ * Lc "$"
* P ( piton.end_escape_math )
end
lpeg.locale(lpeg)
@@ -88,82 +91,86 @@ local alphanum = letter + digit
local identifier = letter * alphanum ^ 0
local Identifier = K ( 'Identifier.Internal' , identifier )
local Number =
- K ( 'Number' ,
+ K ( 'Number.Internal' ,
( digit ^ 1 * P "." * # ( 1 - P "." ) * digit ^ 0
+ digit ^ 0 * P "." * digit ^ 1
+ digit ^ 1 )
* ( S "eE" * S "+-" ^ -1 * digit ^ 1 ) ^ -1
+ digit ^ 1
)
-local Word
+local lpeg_central = 1 - S " '\"\r[({})]" - digit
if piton.begin_escape then
- if piton.begin_escape_math then
- Word = Q ( ( 1 - space - piton.begin_escape - piton.end_escape
- - piton.begin_escape_math - piton.end_escape_math
- - S "'\"\r[({})]" - digit ) ^ 1 )
- else
- Word = Q ( ( 1 - space - piton.begin_escape - piton.end_escape
- - S "'\"\r[({})]" - digit ) ^ 1 )
- end
-else
- if piton.begin_escape_math then
- Word = Q ( ( 1 - space - piton.begin_escape_math - piton.end_escape_math
- - S "'\"\r[({})]" - digit ) ^ 1 )
- else
- Word = Q ( ( 1 - space - S "'\"\r[({})]" - digit ) ^ 1 )
- end
+ lpeg_central = lpeg_central - piton.begin_escape
+end
+if piton.begin_escape_math then
+ lpeg_central = lpeg_central - piton.begin_escape_math
end
+local Word = Q ( lpeg_central ^ 1 )
local Space = Q " " ^ 1
local SkipSpace = Q " " ^ 0
local Punct = Q ( S ".,:;!" )
-local Tab = "\t" * Lc [[\__piton_tab:]]
-local SpaceIndentation = Lc [[\__piton_an_indentation_space:]] * Q " "
+local Tab = "\t" * Lc [[ \__piton_tab: ]]
+local SpaceIndentation = Lc [[ \__piton_leading_space: ]] * Q " "
local Delim = Q ( S "[({})]" )
-local VisualSpace = space * Lc [[\l__piton_space_tl]]
- local strict_braces =
- P { "E" ,
- E = ( "{" * V "F" * "}" + ( 1 - S ",{}" ) ) ^ 0 ,
- F = ( "{" * V "F" * "}" + ( 1 - S "{}" ) ) ^ 0
- }
+local SpaceInString = space * Lc [[ \l__piton_space_in_string_tl ]]
local LPEG0 = { }
local LPEG1 = { }
local LPEG2 = { }
local LPEG_cleaner = { }
-local function Compute_braces ( lpeg_string ) return
- P { "E" ,
- E =
- (
- "{" * V "E" * "}"
- +
- lpeg_string
- +
- ( 1 - S "{}" )
- ) ^ 0
- }
+local Compute_braces
+function Compute_braces ( lpeg_string ) return
+ P { "E" ,
+ E =
+ (
+ "{" * V "E" * "}"
+ +
+ lpeg_string
+ +
+ ( 1 - S "{}" )
+ ) ^ 0
+ }
end
-local function Compute_DetectedCommands ( lang , braces ) return
- Ct ( Cc "Open"
- * C ( piton.DetectedCommands * P "{" )
+local Compute_DetectedCommands
+function Compute_DetectedCommands ( lang , braces ) return
+ Ct (
+ Cc "Open"
+ * C ( piton.DetectedCommands * space ^ 0 * P "{" )
* Cc "}"
)
* ( braces
- / ( function ( s ) if s ~= '' then return LPEG1[lang] : match ( s ) end end ) )
+ / ( function ( s )
+ if s ~= '' then return
+ LPEG1[lang] : match ( s )
+ end
+ end )
+ )
* P "}"
* Ct ( Cc "Close" )
end
-local function Compute_LPEG_cleaner ( lang , braces ) return
+local Compute_LPEG_cleaner
+function Compute_LPEG_cleaner ( lang , braces ) return
Ct ( ( piton.DetectedCommands * "{"
* ( braces
/ ( function ( s )
- if s ~= '' then return LPEG_cleaner[lang] : match ( s ) end end ) )
+ if s ~= '' then return
+ LPEG_cleaner[lang] : match ( s )
+ end
+ end )
+ )
* "}"
+ EscapeClean
+ C ( P ( 1 ) )
) ^ 0 ) / table.concat
end
+local ParseAgain
+function ParseAgain ( code )
+ if code ~= '' then return
+ LPEG1[piton.language] : match ( code )
+ end
+end
local Beamer = P ( false )
local BeamerBeginEnvironments = P ( true )
local BeamerEndEnvironments = P ( true )
@@ -175,18 +182,19 @@ BeamerBeginEnvironments =
( space ^ 0 *
L
(
- P "\\begin{" * piton.BeamerEnvironments * "}"
+ P [[\begin{]] * piton.BeamerEnvironments * "}"
* ( "<" * ( 1 - P ">" ) ^ 0 * ">" ) ^ -1
)
* "\r"
) ^ 0
BeamerEndEnvironments =
( space ^ 0 *
- L ( P "\\end{" * piton.BeamerEnvironments * "}" )
+ L ( P [[\end{]] * piton.BeamerEnvironments * "}" )
* "\r"
) ^ 0
-local function Compute_Beamer ( lang , braces )
- local lpeg = L ( P "\\pause" * ( "[" * ( 1 - P "]" ) ^ 0 * "]" ) ^ -1 )
+local Compute_Beamer
+function Compute_Beamer ( lang , braces )
+ local lpeg = L ( P [[\pause]] * ( "[" * ( 1 - P "]" ) ^ 0 * "]" ) ^ -1 )
lpeg = lpeg +
Ct ( Cc "Open"
* C ( piton.BeamerCommands
@@ -200,7 +208,7 @@ local function Compute_Beamer ( lang , braces )
* "}"
* Ct ( Cc "Close" )
lpeg = lpeg +
- L ( P "\\alt" * "<" * ( 1 - P ">" ) ^ 0 * ">" * "{" )
+ L ( P [[\alt]] * "<" * ( 1 - P ">" ) ^ 0 * ">{" )
* ( braces /
( function ( s ) if s ~= '' then return LPEG1[lang] : match ( s ) end end ) )
* L ( P "}{" )
@@ -208,7 +216,7 @@ local function Compute_Beamer ( lang , braces )
( function ( s ) if s ~= '' then return LPEG1[lang] : match ( s ) end end ) )
* L ( P "}" )
lpeg = lpeg +
- L ( ( P "\\temporal" ) * "<" * ( 1 - P ">" ) ^ 0 * ">" * "{" )
+ L ( P [[\temporal]] * "<" * ( 1 - P ">" ) ^ 0 * ">{" )
* ( braces
/ ( function ( s )
if s ~= '' then return LPEG1[lang] : match ( s ) end end ) )
@@ -222,934 +230,1075 @@ local function Compute_Beamer ( lang , braces )
if s ~= '' then return LPEG1[lang] : match ( s ) end end ) )
* L ( P "}" )
for _ , x in ipairs ( piton.beamer_environments ) do
- lpeg = lpeg +
- Ct ( Cc "Open"
- * C (
- P ( "\\begin{" .. x .. "}" )
- * ( "<" * ( 1 - P ">") ^ 0 * ">" ) ^ -1
- )
- * Cc ( "\\end{" .. x .. "}" )
+ lpeg = lpeg +
+ Ct ( Cc "Open"
+ * C (
+ P ( [[\begin{]] .. x .. "}" )
+ * ( "<" * ( 1 - P ">") ^ 0 * ">" ) ^ -1
+ )
+ * Cc ( [[\end{]] .. x .. "}" )
+ )
+ * (
+ ( ( 1 - P ( [[\end{]] .. x .. "}" ) ) ^ 0 )
+ / ( function ( s )
+ if s ~= '' then return
+ LPEG1[lang] : match ( s )
+ end
+ end )
)
- * (
- ( ( 1 - P ( "\\end{" .. x .. "}" ) ) ^ 0 )
- / ( function ( s )
- if s ~= ''
- then return LPEG1[lang] : match ( s )
- end
- end )
- )
- * P ( "\\end{" .. x .. "}" )
- * Ct ( Cc "Close" )
+ * P ( [[\end{]] .. x .. "}" )
+ * Ct ( Cc "Close" )
end
return lpeg
end
local CommentMath =
P "$" * K ( 'Comment.Math' , ( 1 - S "$\r" ) ^ 1 ) * P "$" -- $
local PromptHastyDetection =
- ( # ( P ">>>" + "..." ) * Lc '\\__piton_prompt:' ) ^ -1
-local Prompt = K ( 'Prompt' , ( ( P ">>>" + "..." ) * P " " ^ -1 ) ^ -1 )
-local EOL_without_space_indentation =
+ ( # ( P ">>>" + "..." ) * Lc [[ \__piton_prompt: ]] ) ^ -1
+local Prompt =
+ K ( 'Prompt' , ( ( P ">>>" + "..." ) * P " " ^ -1 + P ( true ) ) ) ^ -1
+local EOL =
P "\r"
*
(
- ( space ^ 0 * -1 )
+ space ^ 0 * -1
+
Ct (
Cc "EOL"
*
- Ct (
- Lc [[\__piton_end_line:]]
+ Ct ( Lc [[ \__piton_end_line: ]]
* BeamerEndEnvironments
- * BeamerBeginEnvironments
- * PromptHastyDetection
- * Lc [[\__piton_newline:\__piton_begin_line:]]
- * Prompt
+ *
+ (
+ -1
+ +
+ BeamerBeginEnvironments
+ * PromptHastyDetection
+ * Lc [[ \__piton_newline:\__piton_begin_line: ]]
+ * Prompt
+ )
)
)
)
-local EOL = EOL_without_space_indentation
* ( SpaceIndentation ^ 0 * # ( 1 - S " \r" ) ) ^ -1
local CommentLaTeX =
- P(piton.comment_latex)
- * Lc "{\\PitonStyle{Comment.LaTeX}{\\ignorespaces"
+ P ( piton.comment_latex )
+ * Lc [[{\PitonStyle{Comment.LaTeX}{\ignorespaces]]
* L ( ( 1 - P "\r" ) ^ 0 )
* Lc "}}"
* ( EOL + -1 )
-local Operator =
- K ( 'Operator' ,
- P "!=" + "<>" + "==" + "<<" + ">>" + "<=" + ">=" + ":=" + "//" + "**"
- + S "-~+/*%=<>&.@|" )
+do
+ local Operator =
+ K ( 'Operator' ,
+ P "!=" + "<>" + "==" + "<<" + ">>" + "<=" + ">=" + ":=" + "//" + "**"
+ + S "-~+/*%=<>&.@|" )
-local OperatorWord =
- K ( 'Operator.Word' , P "in" + "is" + "and" + "or" + "not" )
-local For = K ( 'Keyword' , P "for" )
- * Space
- * Identifier
- * Space
- * K ( 'Keyword' , P "in" )
+ local OperatorWord =
+ K ( 'Operator.Word' , P "in" + "is" + "and" + "or" + "not" )
+ local For = K ( 'Keyword' , P "for" )
+ * Space
+ * Identifier
+ * Space
+ * K ( 'Keyword' , P "in" )
-local Keyword =
- K ( 'Keyword' ,
- P "as" + "assert" + "break" + "case" + "class" + "continue" + "def" +
- "del" + "elif" + "else" + "except" + "exec" + "finally" + "for" + "from" +
- "global" + "if" + "import" + "lambda" + "non local" + "pass" + "return" +
- "try" + "while" + "with" + "yield" + "yield from" )
- + K ( 'Keyword.Constant' , P "True" + "False" + "None" )
+ local Keyword =
+ K ( 'Keyword' ,
+ P "as" + "assert" + "break" + "case" + "class" + "continue" + "def" +
+ "del" + "elif" + "else" + "except" + "exec" + "finally" + "for" + "from" +
+ "global" + "if" + "import" + "lambda" + "non local" + "pass" + "return" +
+ "try" + "while" + "with" + "yield" + "yield from" )
+ + K ( 'Keyword.Constant' , P "True" + "False" + "None" )
-local Builtin =
- K ( 'Name.Builtin' ,
- P "__import__" + "abs" + "all" + "any" + "bin" + "bool" + "bytearray" +
- "bytes" + "chr" + "classmethod" + "compile" + "complex" + "delattr" +
- "dict" + "dir" + "divmod" + "enumerate" + "eval" + "filter" + "float" +
- "format" + "frozenset" + "getattr" + "globals" + "hasattr" + "hash" +
- "hex" + "id" + "input" + "int" + "isinstance" + "issubclass" + "iter" +
- "len" + "list" + "locals" + "map" + "max" + "memoryview" + "min" + "next"
- + "object" + "oct" + "open" + "ord" + "pow" + "print" + "property" +
- "range" + "repr" + "reversed" + "round" + "set" + "setattr" + "slice" +
- "sorted" + "staticmethod" + "str" + "sum" + "super" + "tuple" + "type" +
- "vars" + "zip" )
+ local Builtin =
+ K ( 'Name.Builtin' ,
+ P "__import__" + "abs" + "all" + "any" + "bin" + "bool" + "bytearray" +
+ "bytes" + "chr" + "classmethod" + "compile" + "complex" + "delattr" +
+ "dict" + "dir" + "divmod" + "enumerate" + "eval" + "filter" + "float" +
+ "format" + "frozenset" + "getattr" + "globals" + "hasattr" + "hash" +
+ "hex" + "id" + "input" + "int" + "isinstance" + "issubclass" + "iter" +
+ "len" + "list" + "locals" + "map" + "max" + "memoryview" + "min" + "next"
+ + "object" + "oct" + "open" + "ord" + "pow" + "print" + "property" +
+ "range" + "repr" + "reversed" + "round" + "set" + "setattr" + "slice" +
+ "sorted" + "staticmethod" + "str" + "sum" + "super" + "tuple" + "type" +
+ "vars" + "zip" )
-local Exception =
- K ( 'Exception' ,
- P "ArithmeticError" + "AssertionError" + "AttributeError" +
- "BaseException" + "BufferError" + "BytesWarning" + "DeprecationWarning" +
- "EOFError" + "EnvironmentError" + "Exception" + "FloatingPointError" +
- "FutureWarning" + "GeneratorExit" + "IOError" + "ImportError" +
- "ImportWarning" + "IndentationError" + "IndexError" + "KeyError" +
- "KeyboardInterrupt" + "LookupError" + "MemoryError" + "NameError" +
- "NotImplementedError" + "OSError" + "OverflowError" +
- "PendingDeprecationWarning" + "ReferenceError" + "ResourceWarning" +
- "RuntimeError" + "RuntimeWarning" + "StopIteration" + "SyntaxError" +
- "SyntaxWarning" + "SystemError" + "SystemExit" + "TabError" + "TypeError"
- + "UnboundLocalError" + "UnicodeDecodeError" + "UnicodeEncodeError" +
- "UnicodeError" + "UnicodeTranslateError" + "UnicodeWarning" +
- "UserWarning" + "ValueError" + "VMSError" + "Warning" + "WindowsError" +
- "ZeroDivisionError" + "BlockingIOError" + "ChildProcessError" +
- "ConnectionError" + "BrokenPipeError" + "ConnectionAbortedError" +
- "ConnectionRefusedError" + "ConnectionResetError" + "FileExistsError" +
- "FileNotFoundError" + "InterruptedError" + "IsADirectoryError" +
- "NotADirectoryError" + "PermissionError" + "ProcessLookupError" +
- "TimeoutError" + "StopAsyncIteration" + "ModuleNotFoundError" +
- "RecursionError" )
+ local Exception =
+ K ( 'Exception' ,
+ P "ArithmeticError" + "AssertionError" + "AttributeError" +
+ "BaseException" + "BufferError" + "BytesWarning" + "DeprecationWarning" +
+ "EOFError" + "EnvironmentError" + "Exception" + "FloatingPointError" +
+ "FutureWarning" + "GeneratorExit" + "IOError" + "ImportError" +
+ "ImportWarning" + "IndentationError" + "IndexError" + "KeyError" +
+ "KeyboardInterrupt" + "LookupError" + "MemoryError" + "NameError" +
+ "NotImplementedError" + "OSError" + "OverflowError" +
+ "PendingDeprecationWarning" + "ReferenceError" + "ResourceWarning" +
+ "RuntimeError" + "RuntimeWarning" + "StopIteration" + "SyntaxError" +
+ "SyntaxWarning" + "SystemError" + "SystemExit" + "TabError" + "TypeError"
+ + "UnboundLocalError" + "UnicodeDecodeError" + "UnicodeEncodeError" +
+ "UnicodeError" + "UnicodeTranslateError" + "UnicodeWarning" +
+ "UserWarning" + "ValueError" + "VMSError" + "Warning" + "WindowsError" +
+ "ZeroDivisionError" + "BlockingIOError" + "ChildProcessError" +
+ "ConnectionError" + "BrokenPipeError" + "ConnectionAbortedError" +
+ "ConnectionRefusedError" + "ConnectionResetError" + "FileExistsError" +
+ "FileNotFoundError" + "InterruptedError" + "IsADirectoryError" +
+ "NotADirectoryError" + "PermissionError" + "ProcessLookupError" +
+ "TimeoutError" + "StopAsyncIteration" + "ModuleNotFoundError" +
+ "RecursionError" )
-local RaiseException = K ( 'Keyword' , P "raise" ) * SkipSpace * Exception * Q "("
+ local RaiseException = K ( 'Keyword' , P "raise" ) * SkipSpace * Exception * Q "("
+ local Decorator = K ( 'Name.Decorator' , P "@" * letter ^ 1 )
+ local DefClass =
+ K ( 'Keyword' , "class" ) * Space * K ( 'Name.Class' , identifier )
+ local ImportAs =
+ K ( 'Keyword' , "import" )
+ * Space
+ * K ( 'Name.Namespace' , identifier * ( "." * identifier ) ^ 0 )
+ * (
+ ( Space * K ( 'Keyword' , "as" ) * Space
+ * K ( 'Name.Namespace' , identifier ) )
+ +
+ ( SkipSpace * Q "," * SkipSpace
+ * K ( 'Name.Namespace' , identifier ) ) ^ 0
+ )
+ local FromImport =
+ K ( 'Keyword' , "from" )
+ * Space * K ( 'Name.Namespace' , identifier )
+ * Space * K ( 'Keyword' , "import" )
+ local PercentInterpol =
+ K ( 'String.Interpol' ,
+ P "%"
+ * ( "(" * alphanum ^ 1 * ")" ) ^ -1
+ * ( S "-#0 +" ) ^ 0
+ * ( digit ^ 1 + "*" ) ^ -1
+ * ( "." * ( digit ^ 1 + "*" ) ) ^ -1
+ * ( S "HlL" ) ^ -1
+ * S "sdfFeExXorgiGauc%"
+ )
+ local SingleShortString =
+ WithStyle ( 'String.Short.Internal' ,
+ Q ( P "f'" + "F'" )
+ * (
+ K ( 'String.Interpol' , "{" )
+ * K ( 'Interpol.Inside' , ( 1 - S "}':" ) ^ 0 )
+ * Q ( P ":" * ( 1 - S "}:'" ) ^ 0 ) ^ -1
+ * K ( 'String.Interpol' , "}" )
+ +
+ SpaceInString
+ +
+ Q ( ( P "\\'" + "\\\\" + "{{" + "}}" + 1 - S " {}'" ) ^ 1 )
+ ) ^ 0
+ * Q "'"
+ +
+ Q ( P "'" + "r'" + "R'" )
+ * ( Q ( ( P "\\'" + "\\\\" + 1 - S " '\r%" ) ^ 1 )
+ + SpaceInString
+ + PercentInterpol
+ + Q "%"
+ ) ^ 0
+ * Q "'" )
+ local DoubleShortString =
+ WithStyle ( 'String.Short.Internal' ,
+ Q ( P "f\"" + "F\"" )
+ * (
+ K ( 'String.Interpol' , "{" )
+ * K ( 'Interpol.Inside' , ( 1 - S "}\":" ) ^ 0 )
+ * ( K ( 'String.Interpol' , ":" ) * Q ( (1 - S "}:\"") ^ 0 ) ) ^ -1
+ * K ( 'String.Interpol' , "}" )
+ +
+ SpaceInString
+ +
+ Q ( ( P "\\\"" + "\\\\" + "{{" + "}}" + 1 - S " {}\"" ) ^ 1 )
+ ) ^ 0
+ * Q "\""
+ +
+ Q ( P "\"" + "r\"" + "R\"" )
+ * ( Q ( ( P "\\\"" + "\\\\" + 1 - S " \"\r%" ) ^ 1 )
+ + SpaceInString
+ + PercentInterpol
+ + Q "%"
+ ) ^ 0
+ * Q "\"" )
-local Decorator = K ( 'Name.Decorator' , P "@" * letter ^ 1 )
-local DefClass =
- K ( 'Keyword' , "class" ) * Space * K ( 'Name.Class' , identifier )
-local ImportAs =
- K ( 'Keyword' , "import" )
- * Space
- * K ( 'Name.Namespace' , identifier * ( "." * identifier ) ^ 0 )
- * (
- ( Space * K ( 'Keyword' , "as" ) * Space
- * K ( 'Name.Namespace' , identifier ) )
+ local ShortString = SingleShortString + DoubleShortString
+ local braces =
+ Compute_braces
+ (
+ ( P "\"" + "r\"" + "R\"" + "f\"" + "F\"" )
+ * ( P "\\\"" + 1 - S "\"" ) ^ 0 * "\""
+
- ( SkipSpace * Q "," * SkipSpace
- * K ( 'Name.Namespace' , identifier ) ) ^ 0
+ ( P '\'' + 'r\'' + 'R\'' + 'f\'' + 'F\'' )
+ * ( P '\\\'' + 1 - S '\'' ) ^ 0 * '\''
)
-local FromImport =
- K ( 'Keyword' , "from" )
- * Space * K ( 'Name.Namespace' , identifier )
- * Space * K ( 'Keyword' , "import" )
-local PercentInterpol =
- K ( 'String.Interpol' ,
- P "%"
- * ( "(" * alphanum ^ 1 * ")" ) ^ -1
- * ( S "-#0 +" ) ^ 0
- * ( digit ^ 1 + "*" ) ^ -1
- * ( "." * ( digit ^ 1 + "*" ) ) ^ -1
- * ( S "HlL" ) ^ -1
- * S "sdfFeExXorgiGauc%"
- )
-local SingleShortString =
- WithStyle ( 'String.Short' ,
- Q ( P "f'" + "F'" )
- * (
- K ( 'String.Interpol' , "{" )
- * K ( 'Interpol.Inside' , ( 1 - S "}':" ) ^ 0 )
- * Q ( P ":" * ( 1 - S "}:'" ) ^ 0 ) ^ -1
- * K ( 'String.Interpol' , "}" )
- +
- VisualSpace
- +
- Q ( ( P "\\'" + "{{" + "}}" + 1 - S " {}'" ) ^ 1 )
- ) ^ 0
- * Q "'"
- +
- Q ( P "'" + "r'" + "R'" )
- * ( Q ( ( P "\\'" + 1 - S " '\r%" ) ^ 1 )
- + VisualSpace
- + PercentInterpol
- + Q "%"
- ) ^ 0
- * Q "'" )
-
-local DoubleShortString =
- WithStyle ( 'String.Short' ,
- Q ( P "f\"" + "F\"" )
- * (
- K ( 'String.Interpol' , "{" )
- * K ( 'Interpol.Inside' , ( 1 - S "}\":" ) ^ 0 )
- * ( K ( 'String.Interpol' , ":" ) * Q ( (1 - S "}:\"") ^ 0 ) ) ^ -1
- * K ( 'String.Interpol' , "}" )
- +
- VisualSpace
- +
- Q ( ( P "\\\"" + "{{" + "}}" + 1 - S " {}\"" ) ^ 1 )
+ if piton.beamer then Beamer = Compute_Beamer ( 'python' , braces ) end
+ DetectedCommands = Compute_DetectedCommands ( 'python' , braces )
+ LPEG_cleaner.python = Compute_LPEG_cleaner ( 'python' , braces )
+ local SingleLongString =
+ WithStyle ( 'String.Long.Internal' ,
+ ( Q ( S "fF" * P "'''" )
+ * (
+ K ( 'String.Interpol' , "{" )
+ * K ( 'Interpol.Inside' , ( 1 - S "}:\r" - "'''" ) ^ 0 )
+ * Q ( P ":" * (1 - S "}:\r" - "'''" ) ^ 0 ) ^ -1
+ * K ( 'String.Interpol' , "}" )
+ +
+ Q ( ( 1 - P "'''" - S "{}'\r" ) ^ 1 )
+ +
+ EOL
+ ) ^ 0
+ +
+ Q ( ( S "rR" ) ^ -1 * "'''" )
+ * (
+ Q ( ( 1 - P "'''" - S "\r%" ) ^ 1 )
+ +
+ PercentInterpol
+ +
+ P "%"
+ +
+ EOL
+ ) ^ 0
+ )
+ * Q "'''" )
+ local DoubleLongString =
+ WithStyle ( 'String.Long.Internal' ,
+ (
+ Q ( S "fF" * "\"\"\"" )
+ * (
+ K ( 'String.Interpol', "{" )
+ * K ( 'Interpol.Inside' , ( 1 - S "}:\r" - "\"\"\"" ) ^ 0 )
+ * Q ( ":" * (1 - S "}:\r" - "\"\"\"" ) ^ 0 ) ^ -1
+ * K ( 'String.Interpol' , "}" )
+ +
+ Q ( ( 1 - S "{}\"\r" - "\"\"\"" ) ^ 1 )
+ +
+ EOL
) ^ 0
- * Q "\""
- +
- Q ( P "\"" + "r\"" + "R\"" )
- * ( Q ( ( P "\\\"" + 1 - S " \"\r%" ) ^ 1 )
- + VisualSpace
- + PercentInterpol
- + Q "%"
- ) ^ 0
- * Q "\"" )
-
-local ShortString = SingleShortString + DoubleShortString
-local braces =
- Compute_braces
- (
- ( P "\"" + "r\"" + "R\"" + "f\"" + "F\"" )
- * ( P "\\\"" + 1 - S "\"" ) ^ 0 * "\""
- +
- ( P '\'' + 'r\'' + 'R\'' + 'f\'' + 'F\'' )
- * ( P '\\\'' + 1 - S '\'' ) ^ 0 * '\''
- )
-if piton.beamer then Beamer = Compute_Beamer ( 'python' , braces ) end
-DetectedCommands = Compute_DetectedCommands ( 'python' , braces )
-LPEG_cleaner['python'] = Compute_LPEG_cleaner ( 'python' , braces )
-local SingleLongString =
- WithStyle ( 'String.Long' ,
- ( Q ( S "fF" * P "'''" )
- * (
- K ( 'String.Interpol' , "{" )
- * K ( 'Interpol.Inside' , ( 1 - S "}:\r" - "'''" ) ^ 0 )
- * Q ( P ":" * (1 - S "}:\r" - "'''" ) ^ 0 ) ^ -1
- * K ( 'String.Interpol' , "}" )
- +
- Q ( ( 1 - P "'''" - S "{}'\r" ) ^ 1 )
- +
- EOL
- ) ^ 0
- +
- Q ( ( S "rR" ) ^ -1 * "'''" )
- * (
- Q ( ( 1 - P "'''" - S "\r%" ) ^ 1 )
- +
- PercentInterpol
- +
- P "%"
- +
- EOL
- ) ^ 0
- )
- * Q "'''" )
-
-local DoubleLongString =
- WithStyle ( 'String.Long' ,
- (
- Q ( S "fF" * "\"\"\"" )
- * (
- K ( 'String.Interpol', "{" )
- * K ( 'Interpol.Inside' , ( 1 - S "}:\r" - "\"\"\"" ) ^ 0 )
- * Q ( ":" * (1 - S "}:\r" - "\"\"\"" ) ^ 0 ) ^ -1
- * K ( 'String.Interpol' , "}" )
- +
- Q ( ( 1 - S "{}\"\r" - "\"\"\"" ) ^ 1 )
- +
- EOL
+ +
+ Q ( S "rR" ^ -1 * "\"\"\"" )
+ * (
+ Q ( ( 1 - P "\"\"\"" - S "%\r" ) ^ 1 )
+ +
+ PercentInterpol
+ +
+ P "%"
+ +
+ EOL
+ ) ^ 0
+ )
+ * Q "\"\"\""
+ )
+ local LongString = SingleLongString + DoubleLongString
+ local StringDoc =
+ K ( 'String.Doc' , P "r" ^ -1 * "\"\"\"" )
+ * ( K ( 'String.Doc' , (1 - P "\"\"\"" - "\r" ) ^ 0 ) * EOL
+ * Tab ^ 0
) ^ 0
+ * K ( 'String.Doc' , ( 1 - P "\"\"\"" - "\r" ) ^ 0 * "\"\"\"" )
+ local Comment =
+ WithStyle
+ ( 'Comment' ,
+ Q "#" * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 -- $
+ )
+ * ( EOL + -1 )
+ local expression =
+ P { "E" ,
+ E = ( "'" * ( P "\\'" + 1 - S "'\r" ) ^ 0 * "'"
+ + "\"" * ( P "\\\"" + 1 - S "\"\r" ) ^ 0 * "\""
+ + "{" * V "F" * "}"
+ + "(" * V "F" * ")"
+ + "[" * V "F" * "]"
+ + ( 1 - S "{}()[]\r," ) ) ^ 0 ,
+ F = ( "{" * V "F" * "}"
+ + "(" * V "F" * ")"
+ + "[" * V "F" * "]"
+ + ( 1 - S "{}()[]\r\"'" ) ) ^ 0
+ }
+ local Params =
+ P { "E" ,
+ E = ( V "F" * ( Q "," * V "F" ) ^ 0 ) ^ -1 ,
+ F = SkipSpace * ( Identifier + Q "*args" + Q "**kwargs" ) * SkipSpace
+ * (
+ K ( 'InitialValues' , "=" * expression )
+ + Q ":" * SkipSpace * K ( 'Name.Type' , identifier )
+ ) ^ -1
+ }
+ local DefFunction =
+ K ( 'Keyword' , "def" )
+ * Space
+ * K ( 'Name.Function.Internal' , identifier )
+ * SkipSpace
+ * Q "(" * Params * Q ")"
+ * SkipSpace
+ * ( Q "->" * SkipSpace * K ( 'Name.Type' , identifier ) ) ^ -1
+ * ( C ( ( 1 - S ":\r" ) ^ 0 ) / ParseAgain )
+ * Q ":"
+ * ( SkipSpace
+ * ( EOL + CommentLaTeX + Comment ) -- in all cases, that contains an EOL
+ * Tab ^ 0
+ * SkipSpace
+ * StringDoc ^ 0 -- there may be additional docstrings
+ ) ^ -1
+ local ExceptionInConsole = Exception * Q ( ( 1 - P "\r" ) ^ 0 ) * EOL
+ local EndKeyword
+ = Space + Punct + Delim + EOL + Beamer + DetectedCommands + Escape +
+ EscapeMath + -1
+ local Main =
+ space ^ 0 * EOL -- faut-il le mettre en commentaire ?
+ + Space
+ + Tab
+ + Escape + EscapeMath
+ + CommentLaTeX
+ + Beamer
+ + DetectedCommands
+ + LongString
+ + Comment
+ + ExceptionInConsole
+ + Delim
+ + Operator
+ + OperatorWord * EndKeyword
+ + ShortString
+ + Punct
+ + FromImport
+ + RaiseException
+ + DefFunction
+ + DefClass
+ + For
+ + Keyword * EndKeyword
+ + Decorator
+ + Builtin * EndKeyword
+ + Identifier
+ + Number
+ + Word
+ LPEG1.python = Main ^ 0
+ LPEG2.python =
+ Ct (
+ ( space ^ 0 * "\r" ) ^ -1
+ * BeamerBeginEnvironments
+ * PromptHastyDetection
+ * Lc [[ \__piton_begin_line: ]]
+ * Prompt
+ * SpaceIndentation ^ 0
+ * ( space ^ 1 * -1 + space ^ 0 * EOL + Main ) ^ 0
+ * -1
+ * Lc [[ \__piton_end_line: ]]
+ )
+end
+do
+ local SkipSpace = ( Q " " + EOL ) ^ 0
+ local Space = ( Q " " + EOL ) ^ 1
+ local braces = Compute_braces ( "\"" * ( 1 - S "\"" ) ^ 0 * "\"" )
+ if piton.beamer then
+ Beamer = Compute_Beamer ( 'ocaml' , braces )
+ end
+ DetectedCommands = Compute_DetectedCommands ( 'ocaml' , braces )
+ local Q
+ function Q ( pattern ) return
+ Ct ( Cc ( luatexbase.catcodetables.CatcodeTableOther ) * C ( pattern ) )
+ + Beamer + DetectedCommands + EscapeMath + Escape
+ end
+ local K
+ function K ( style , pattern ) return
+ Lc ( [[ {\PitonStyle{ ]] .. style .. "}{" )
+ * Q ( pattern )
+ * Lc "}}"
+ end
+ local WithStyle
+ function WithStyle ( style , pattern ) return
+ Ct ( Cc "Open" * Cc ( [[{\PitonStyle{]] .. style .. "}{" ) * Cc "}}" )
+ * ( pattern + Beamer + DetectedCommands + EscapeMath + Escape )
+ * Ct ( Cc "Close" )
+ end
+ local balanced_parens =
+ P { "E" , E = ( "(" * V "E" * ")" + ( 1 - S "()" ) ) ^ 0 }
+ local ocaml_string =
+ P "\""
+ * (
+ P " "
+
- Q ( S "rR" ^ -1 * "\"\"\"" )
+ P ( ( 1 - S " \"\r" ) ^ 1 )
+ +
+ EOL -- ?
+ ) ^ 0
+ * P "\""
+ local String =
+ WithStyle
+ ( 'String.Long.Internal' ,
+ Q "\""
* (
- Q ( ( 1 - P "\"\"\"" - S "%\r" ) ^ 1 )
- +
- PercentInterpol
+ SpaceInString
+
- P "%"
+ Q ( ( 1 - S " \"\r" ) ^ 1 )
+
EOL
) ^ 0
- )
- * Q "\"\"\""
- )
-local LongString = SingleLongString + DoubleLongString
-local StringDoc =
- K ( 'String.Doc' , P "r" ^ -1 * "\"\"\"" )
- * ( K ( 'String.Doc' , (1 - P "\"\"\"" - "\r" ) ^ 0 ) * EOL
- * Tab ^ 0
- ) ^ 0
- * K ( 'String.Doc' , ( 1 - P "\"\"\"" - "\r" ) ^ 0 * "\"\"\"" )
-local Comment =
- WithStyle ( 'Comment' ,
- Q "#" * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 ) -- $
- * ( EOL + -1 )
-local expression =
- P { "E" ,
- E = ( "'" * ( P "\\'" + 1 - S "'\r" ) ^ 0 * "'"
- + "\"" * ( P "\\\"" + 1 - S "\"\r" ) ^ 0 * "\""
- + "{" * V "F" * "}"
- + "(" * V "F" * ")"
- + "[" * V "F" * "]"
- + ( 1 - S "{}()[]\r," ) ) ^ 0 ,
- F = ( "{" * V "F" * "}"
- + "(" * V "F" * ")"
- + "[" * V "F" * "]"
- + ( 1 - S "{}()[]\r\"'" ) ) ^ 0
- }
-local Params =
- P { "E" ,
- E = ( V "F" * ( Q "," * V "F" ) ^ 0 ) ^ -1 ,
- F = SkipSpace * ( Identifier + Q "*args" + Q "**kwargs" ) * SkipSpace
- * (
- K ( 'InitialValues' , "=" * expression )
- + Q ":" * SkipSpace * K ( 'Name.Type' , identifier )
- ) ^ -1
- }
-local DefFunction =
- K ( 'Keyword' , "def" )
- * Space
- * K ( 'Name.Function.Internal' , identifier )
- * SkipSpace
- * Q "(" * Params * Q ")"
- * SkipSpace
- * ( Q "->" * SkipSpace * K ( 'Name.Type' , identifier ) ) ^ -1
- * K ( 'ParseAgain.noCR' , ( 1 - S ":\r" ) ^ 0 )
- * Q ":"
- * ( SkipSpace
- * ( EOL + CommentLaTeX + Comment ) -- in all cases, that contains an EOL
- * Tab ^ 0
- * SkipSpace
- * StringDoc ^ 0 -- there may be additional docstrings
- ) ^ -1
-local ExceptionInConsole = Exception * Q ( ( 1 - P "\r" ) ^ 0 ) * EOL
-local EndKeyword = Space + Punct + Delim + EOL + Beamer + DetectedCommands + -1
-local Main =
- -- space ^ 1 * -1
- -- + space ^ 0 * EOL
- Space
- + Tab
- + Escape + EscapeMath
- + CommentLaTeX
- + Beamer
- + DetectedCommands
- + LongString
- + Comment
- + ExceptionInConsole
- + Delim
- + Operator
- + OperatorWord * EndKeyword
- + ShortString
- + Punct
- + FromImport
- + RaiseException
- + DefFunction
- + DefClass
- + For
- + Keyword * EndKeyword
- + Decorator
- + Builtin * EndKeyword
- + Identifier
- + Number
- + Word
-LPEG1['python'] = Main ^ 0
-LPEG2['python'] =
- Ct (
- ( space ^ 0 * "\r" ) ^ -1
- * BeamerBeginEnvironments
- * PromptHastyDetection
- * Lc [[\__piton_begin_line:]]
- * Prompt
- * SpaceIndentation ^ 0
- * ( space ^ 1 * -1 + space ^ 0 * EOL + Main ) ^ 0
- * -1
- * Lc [[\__piton_end_line:]]
- )
-local balanced_parens =
- P { "E" , E = ( "(" * V "E" * ")" + ( 1 - S "()" ) ) ^ 0 }
-local Delim = Q ( P "[|" + "|]" + S "[()]" )
-local Punct = Q ( S ",:;!" )
-local cap_identifier = R "AZ" * ( R "az" + R "AZ" + S "_'" + digit ) ^ 0
-local Constructor = K ( 'Name.Constructor' , cap_identifier )
-local ModuleType = K ( 'Name.Type' , cap_identifier )
-local identifier = ( R "az" + "_" ) * ( R "az" + R "AZ" + S "_'" + digit ) ^ 0
-local Identifier = K ( 'Identifier.Internal' , identifier )
-local expression_for_fields =
- P { "E" ,
- E = ( "{" * V "F" * "}"
- + "(" * V "F" * ")"
- + "[" * V "F" * "]"
- + "\"" * ( P "\\\"" + 1 - S "\"\r" ) ^ 0 * "\""
- + "'" * ( P "\\'" + 1 - S "'\r" ) ^ 0 * "'"
- + ( 1 - S "{}()[]\r;" ) ) ^ 0 ,
- F = ( "{" * V "F" * "}"
- + "(" * V "F" * ")"
- + "[" * V "F" * "]"
- + ( 1 - S "{}()[]\r\"'" ) ) ^ 0
- }
-local OneFieldDefinition =
- ( K ( 'Keyword' , "mutable" ) * SkipSpace ) ^ -1
- * K ( 'Name.Field' , identifier ) * SkipSpace
- * Q ":" * SkipSpace
- * K ( 'TypeExpression' , expression_for_fields )
- * SkipSpace
-
-local OneField =
- K ( 'Name.Field' , identifier ) * SkipSpace
- * Q "=" * SkipSpace
- * ( expression_for_fields
- / ( function ( s ) return LPEG1['ocaml'] : match ( s ) end )
- )
- * SkipSpace
-
-local Record =
- Q "{" * SkipSpace
- *
+ * Q "\""
+ )
+ local ext = ( R "az" + "_" ) ^ 0
+ local open = "{" * Cg ( ext , 'init' ) * "|"
+ local close = "|" * C ( ext ) * "}"
+ local closeeq =
+ Cmt ( close * Cb ( 'init' ) ,
+ function ( s , i , a , b ) return a == b end )
+ local QuotedStringBis =
+ WithStyle ( 'String.Long.Internal' ,
+ (
+ Space
+ +
+ Q ( ( 1 - S " \r" ) ^ 1 )
+ +
+ EOL
+ ) ^ 0 )
+ local QuotedString =
+ C ( open * ( 1 - closeeq ) ^ 0 * close ) /
+ ( function ( s ) return QuotedStringBis : match ( s ) end )
+ local Comment =
+ WithStyle ( 'Comment' ,
+ P {
+ "A" ,
+ A = Q "(*"
+ * ( V "A"
+ + Q ( ( 1 - S "\r$\"" - "(*" - "*)" ) ^ 1 ) -- $
+ + ocaml_string
+ + "$" * K ( 'Comment.Math' , ( 1 - S "$\r" ) ^ 1 ) * "$" -- $
+ + EOL
+ ) ^ 0
+ * Q "*)"
+ } )
+ local Delim = Q ( P "[|" + "|]" + S "[()]" )
+ local Punct = Q ( S ",:;!" )
+ local cap_identifier = R "AZ" * ( R "az" + R "AZ" + S "_'" + digit ) ^ 0
+ local Constructor =
+ K ( 'Name.Constructor' ,
+ Q "`" ^ -1 * cap_identifier
+ + Q "::"
+ + Q "[" * SkipSpace * Q "]" )
+ local ModuleType = K ( 'Name.Type' , cap_identifier )
+ local OperatorWord =
+ K ( 'Operator.Word' ,
+ P "asr" + "land" + "lor" + "lsl" + "lxor" + "mod" + "or" )
+ local governing_keyword = P "and" + "begin" + "class" + "constraint" +
+ "end" + "external" + "functor" + "include" + "inherit" + "initializer" +
+ "in" + "let" + "method" + "module" + "object" + "open" + "rec" + "sig" +
+ "struct" + "type" + "val"
+ local Keyword =
+ K ( 'Keyword' ,
+ P "assert" + "as" + "done" + "downto" + "do" + "else" + "exception"
+ + "for" + "function" + "fun" + "if" + "lazy" + "match" + "mutable"
+ + "new" + "of" + "private" + "raise" + "then" + "to" + "try"
+ + "virtual" + "when" + "while" + "with" )
+ + K ( 'Keyword.Constant' , P "true" + "false" )
+ + K ( 'Keyword.Governing', governing_keyword )
+ local EndKeyword
+ = Space + Punct + Delim + EOL + Beamer + DetectedCommands + Escape
+ + EscapeMath + -1
+ local identifier = ( R "az" + "_" ) * ( R "az" + R "AZ" + S "_'" + digit ) ^ 0
+ - ( OperatorWord + Keyword ) * EndKeyword
+ local Identifier = K ( 'Identifier.Internal' , identifier )
+ local ocaml_char =
+ P "'" *
+ (
+ ( 1 - S "'\\" )
+ + "\\"
+ * ( S "\\'ntbr \""
+ + digit * digit * digit
+ + P "x" * ( digit + R "af" + R "AF" )
+ * ( digit + R "af" + R "AF" )
+ * ( digit + R "af" + R "AF" )
+ + P "o" * R "03" * R "07" * R "07" )
+ )
+ * "'"
+ local Char =
+ K ( 'String.Short.Internal', ocaml_char )
+ local TypeParameter =
+ K ( 'TypeParameter' ,
+ "'" * Q"_" ^ -1 * alpha ^ 1 * ( # ( 1 - P "'" ) + -1 ) )
+ local expression_for_fields_type =
+ P { "E" ,
+ E = ( "{" * V "F" * "}"
+ + "(" * V "F" * ")"
+ + TypeParameter
+ + ( 1 - S "{}()[]\r;" ) ) ^ 0 ,
+ F = ( "{" * V "F" * "}"
+ + "(" * V "F" * ")"
+ + ( 1 - S "{}()[]\r\"'" ) + TypeParameter ) ^ 0
+ }
+ local expression_for_fields_value =
+ P { "E" ,
+ E = ( "{" * V "F" * "}"
+ + "(" * V "F" * ")"
+ + "[" * V "F" * "]"
+ + ocaml_string + ocaml_char
+ + ( 1 - S "{}()[];" ) ) ^ 0 ,
+ F = ( "{" * V "F" * "}"
+ + "(" * V "F" * ")"
+ + "[" * V "F" * "]"
+ + ocaml_string + ocaml_char
+ + ( 1 - S "{}()[]\"'" )) ^ 0
+ }
+ local OneFieldDefinition =
+ ( K ( 'Keyword' , "mutable" ) * SkipSpace ) ^ -1
+ * K ( 'Name.Field' , identifier ) * SkipSpace
+ * Q ":" * SkipSpace
+ * K ( 'TypeExpression' , expression_for_fields_type )
+ * SkipSpace
+ local OneField =
+ K ( 'Name.Field' , identifier ) * SkipSpace
+ * Q "=" * SkipSpace
+ * ( C ( expression_for_fields_value ) / ParseAgain )
+ * SkipSpace
+ local Record =
+ Q "{" * SkipSpace
+ *
+ (
+ OneFieldDefinition
+ * ( Q ";" * SkipSpace * ( Comment * SkipSpace ) ^ 0 * OneFieldDefinition ) ^ 0
+ +
+ OneField * ( Q ";" * SkipSpace * ( Comment * SkipSpace ) ^ 0 * OneField ) ^ 0
+ )
+ * SkipSpace
+ * Q ";" ^ -1
+ * SkipSpace
+ * Comment ^ -1
+ * SkipSpace
+ * Q "}"
+ local DotNotation =
(
- OneFieldDefinition * ( Q ";" * SkipSpace * OneFieldDefinition ) ^ 0
- +
- OneField * ( Q ";" * SkipSpace * OneField ) ^ 0
+ K ( 'Name.Module' , cap_identifier )
+ * Q "."
+ * ( Identifier + Constructor + Q "(" + Q "[" + Q "{" ) ^ -1
+ +
+ Identifier
+ * Q "."
+ * K ( 'Name.Field' , identifier )
)
- *
- Q "}"
-local DotNotation =
- (
- K ( 'Name.Module' , cap_identifier )
- * Q "."
- * ( Identifier + Constructor + Q "(" + Q "[" + Q "{" ) ^ ( -1 )
- +
- Identifier
- * Q "."
- * K ( 'Name.Field' , identifier )
- )
- * ( Q "." * K ( 'Name.Field' , identifier ) ) ^ 0
-local Operator =
- K ( 'Operator' ,
- P "!=" + "<>" + "==" + "<<" + ">>" + "<=" + ">=" + ":=" + "||" + "&&" +
- "//" + "**" + ";;" + "::" + "->" + "+." + "-." + "*." + "/."
- + S "-~+/*%=<>&@|" )
-
-local OperatorWord =
- K ( 'Operator.Word' ,
- P "asr" + "land" + "lor" + "lsl" + "lxor" + "mod" + "or" )
-
-local governing_keyword = P "and" + "begin" + "class" + "constraint" +
- "end" + "external" + "functor" + "include" + "inherit" + "initializer" +
- "in" + "let" + "method" + "module" + "object" + "open" + "rec" + "sig" +
- "struct" + "type" + "val"
-
-local Keyword =
- K ( 'Keyword' ,
- P "assert" + "as" + "done" + "downto" + "do" + "else" + "exception"
- + "for" + "function" + "fun" + "if" + "lazy" + "match" + "mutable"
- + "new" + "of" + "private" + "raise" + "then" + "to" + "try"
- + "virtual" + "when" + "while" + "with" )
- + K ( 'Keyword.Constant' , P "true" + "false" )
- + K ('Keyword.Governing', governing_keyword )
-
-local Builtin =
- K ( 'Name.Builtin' , P "not" + "incr" + "decr" + "fst" + "snd" + "ref" )
-local Exception =
- K ( 'Exception' ,
- P "Division_by_zero" + "End_of_File" + "Failure" + "Invalid_argument" +
- "Match_failure" + "Not_found" + "Out_of_memory" + "Stack_overflow" +
- "Sys_blocked_io" + "Sys_error" + "Undefined_recursive_module" )
-local Char =
- K ( 'String.Short',
- P "'" *
+ * ( Q "." * K ( 'Name.Field' , identifier ) ) ^ 0
+ local Operator =
+ K ( 'Operator' ,
+ P "!=" + "<>" + "==" + "<<" + ">>" + "<=" + ">=" + ":=" + "||" + "&&" +
+ "//" + "**" + ";;" + "->" + "+." + "-." + "*." + "/."
+ + S "-~+/*%=<>&@|" )
+ local Builtin =
+ K ( 'Name.Builtin' , P "not" + "incr" + "decr" + "fst" + "snd" + "ref" )
+ local Exception =
+ K ( 'Exception' ,
+ P "Division_by_zero" + "End_of_File" + "Failure" + "Invalid_argument" +
+ "Match_failure" + "Not_found" + "Out_of_memory" + "Stack_overflow" +
+ "Sys_blocked_io" + "Sys_error" + "Undefined_recursive_module" )
+ LPEG_cleaner.ocaml = Compute_LPEG_cleaner ( 'ocaml' , braces )
+ local pattern_part =
+ ( P "(" * balanced_parens * ")" + ( 1 - S ":()" ) + P "::" ) ^ 0
+ local Argument =
+ ( Q "~" * Identifier * Q ":" * SkipSpace ) ^ -1
+ *
(
- ( 1 - S "'\\" )
- + "\\"
- * ( S "\\'ntbr \""
- + digit * digit * digit
- + P "x" * ( digit + R "af" + R "AF" )
- * ( digit + R "af" + R "AF" )
- * ( digit + R "af" + R "AF" )
- + P "o" * R "03" * R "07" * R "07" )
+ K ( 'Identifier.Internal' , identifier )
+ +
+ Q "(" * SkipSpace
+ * ( C ( pattern_part ) / ParseAgain )
+ * SkipSpace
+ * ( Q ":" * K ( 'TypeExpression' , balanced_parens ) * SkipSpace ) ^ -1
+ * Q ")"
)
- * "'" )
-local braces = Compute_braces ( "\"" * ( 1 - S "\"" ) ^ 0 * "\"" )
-if piton.beamer then
- Beamer = Compute_Beamer ( 'ocaml' , braces ) -- modified 2024/07/24
-end
-DetectedCommands = Compute_DetectedCommands ( 'ocaml' , braces )
-LPEG_cleaner['ocaml'] = Compute_LPEG_cleaner ( 'ocaml' , braces )
-local ocaml_string =
- Q "\""
- * (
- VisualSpace
- +
- Q ( ( 1 - S " \"\r" ) ^ 1 )
- +
- EOL
- ) ^ 0
- * Q "\""
-local String = WithStyle ( 'String.Long' , ocaml_string )
-local ext = ( R "az" + "_" ) ^ 0
-local open = "{" * Cg ( ext , 'init' ) * "|"
-local close = "|" * C ( ext ) * "}"
-local closeeq =
- Cmt ( close * Cb ( 'init' ) ,
- function ( s , i , a , b ) return a == b end )
-local QuotedStringBis =
- WithStyle ( 'String.Long' ,
- (
- Space
- +
- Q ( ( 1 - S " \r" ) ^ 1 )
- +
- EOL
- ) ^ 0 )
-local QuotedString =
- C ( open * ( 1 - closeeq ) ^ 0 * close ) /
- ( function ( s ) return QuotedStringBis : match ( s ) end )
-local Comment =
- WithStyle ( 'Comment' ,
- P {
- "A" ,
- A = Q "(*"
- * ( V "A"
- + Q ( ( 1 - S "\r$\"" - "(*" - "*)" ) ^ 1 ) -- $
- + ocaml_string
- + "$" * K ( 'Comment.Math' , ( 1 - S "$\r" ) ^ 1 ) * "$" -- $
- + EOL
- ) ^ 0
- * Q "*)"
- } )
-local Argument =
- ( Q "~" * Identifier * Q ":" * SkipSpace ) ^ -1
- *
- ( K ( 'Identifier.Internal' , identifier )
- + Q "(" * SkipSpace
- * K ( 'Identifier.Internal' , identifier ) * SkipSpace
- * Q ":" * SkipSpace
- * K ( 'TypeExpression' , balanced_parens ) * SkipSpace
- * Q ")"
- )
-local DefFunction =
- K ( 'Keyword.Governing' , "let open" )
- * Space
- * K ( 'Name.Module' , cap_identifier )
- +
- K ( 'Keyword.Governing' , P "let rec" + "let" + "and" )
- * Space
- * K ( 'Name.Function.Internal' , identifier )
+ local DefFunction =
+ K ( 'Keyword.Governing' , "let open" )
* Space
- * (
- Q "=" * SkipSpace * K ( 'Keyword' , "function" )
+ * K ( 'Name.Module' , cap_identifier )
+ +
+ K ( 'Keyword.Governing' , P "let rec" + "let" + "and" )
+ * Space
+ * K ( 'Name.Function.Internal' , identifier )
+ * Space
+ * (
+ Q "=" * SkipSpace * K ( 'Keyword' , "function" )
+ +
+ Argument * ( SkipSpace * Argument ) ^ 0
+ * (
+ SkipSpace
+ * Q ":"
+ * K ( 'TypeExpression' , ( 1 - P "=" ) ^ 0 )
+ ) ^ -1
+ )
+ local DefModule =
+ K ( 'Keyword.Governing' , "module" ) * Space
+ *
+ (
+ K ( 'Keyword.Governing' , "type" ) * Space
+ * K ( 'Name.Type' , cap_identifier )
+
- Argument
- * ( SkipSpace * Argument ) ^ 0
- * (
- SkipSpace
- * Q ":"
- * K ( 'TypeExpression' , ( 1 - P "=" ) ^ 0 )
- ) ^ -1
- )
-local DefModule =
- K ( 'Keyword.Governing' , "module" ) * Space
- *
- (
- K ( 'Keyword.Governing' , "type" ) * Space
- * K ( 'Name.Type' , cap_identifier )
- +
- K ( 'Name.Module' , cap_identifier ) * SkipSpace
- *
- (
- Q "(" * SkipSpace
+ K ( 'Name.Module' , cap_identifier ) * SkipSpace
+ *
+ (
+ Q "(" * SkipSpace
+ * K ( 'Name.Module' , cap_identifier ) * SkipSpace
+ * Q ":" * SkipSpace
+ * K ( 'Name.Type' , cap_identifier ) * SkipSpace
+ *
+ (
+ Q "," * SkipSpace
+ * K ( 'Name.Module' , cap_identifier ) * SkipSpace
+ * Q ":" * SkipSpace
+ * K ( 'Name.Type' , cap_identifier ) * SkipSpace
+ ) ^ 0
+ * Q ")"
+ ) ^ -1
+ *
+ (
+ Q "=" * SkipSpace
+ * K ( 'Name.Module' , cap_identifier ) * SkipSpace
+ * Q "("
* K ( 'Name.Module' , cap_identifier ) * SkipSpace
- * Q ":" * SkipSpace
- * K ( 'Name.Type' , cap_identifier ) * SkipSpace
- *
+ *
(
- Q "," * SkipSpace
- * K ( 'Name.Module' , cap_identifier ) * SkipSpace
- * Q ":" * SkipSpace
- * K ( 'Name.Type' , cap_identifier ) * SkipSpace
+ Q ","
+ *
+ K ( 'Name.Module' , cap_identifier ) * SkipSpace
) ^ 0
* Q ")"
- ) ^ -1
- *
- (
- Q "=" * SkipSpace
- * K ( 'Name.Module' , cap_identifier ) * SkipSpace
- * Q "("
- * K ( 'Name.Module' , cap_identifier ) * SkipSpace
- *
- (
- Q ","
- *
- K ( 'Name.Module' , cap_identifier ) * SkipSpace
- ) ^ 0
- * Q ")"
- ) ^ -1
- )
- +
- K ( 'Keyword.Governing' , P "include" + "open" )
- * Space * K ( 'Name.Module' , cap_identifier )
-local TypeParameter =
- K ( 'TypeParameter' , "'" * alpha * ( # ( 1 - P "'" ) + -1 ) )
-local DefType =
- K ( 'Keyword.Governing' , "type" )
- * Space
- * WithStyle
- (
- 'TypeExpression' ,
- ( Q ( 1 - P ";;" - P "\r" ) + EOL_without_space_indentation ) ^ 0
+ ) ^ -1
)
- * ( # governing_keyword + Q ";;" + -1 )
-local EndKeyword = Space + Punct + Delim + EOL + Beamer + DetectedCommands + -1
-local Main =
- Space
- + Tab
- + Escape + EscapeMath
- + Beamer
- + DetectedCommands
- + TypeParameter
- + String + QuotedString + Char
- + Comment
- + Delim
- + Operator
- + Q ( "~" ) * Identifier * ( Q ":" ) ^ -1
- + Q ":" * # (1 - P":") * SkipSpace
+ +
+ K ( 'Keyword.Governing' , P "include" + "open" )
+ * Space
+ * K ( 'Name.Module' , cap_identifier )
+ local DefType =
+ K ( 'Keyword.Governing' , "type" )
+ * Space
+ * K ( 'TypeExpression' , Q ( 1 - P "=" ) ^ 1 )
+ * SkipSpace
+ * ( Q "+=" + Q "=" )
+ * SkipSpace
+ * (
+ Record
+ +
+ WithStyle
+ (
+ 'TypeExpression' ,
+ (
+ ( EOL + Q ( 1 - P ";;" - governing_keyword ) ) ^ 0
+ * ( # ( governing_keyword ) + Q ";;" )
+ )
+ )
+ )
+ local Main =
+ space ^ 0 * EOL
+ + Space
+ + Tab
+ + Escape + EscapeMath
+ + Beamer
+ + DetectedCommands
+ + TypeParameter
+ + String + QuotedString + Char
+ + Comment
+ + Operator
+ + Q "~" * Identifier * ( Q ":" ) ^ -1
+ + Q ":" * # (1 - P ":") * SkipSpace
* K ( 'TypeExpression' , balanced_parens ) * SkipSpace * Q ")"
- + Punct
- + Exception
- + DefFunction
- + DefModule
- + DefType
- + Record
- + Keyword * EndKeyword
- + OperatorWord * EndKeyword
- + Builtin * EndKeyword
- + DotNotation
- + Constructor
- + Identifier
- + Number
- + Word
-
-LPEG1['ocaml'] = Main ^ 0
-LPEG2['ocaml'] =
- Ct (
- ( P ":" + Identifier * SkipSpace * Q ":" )
- * SkipSpace
- * K ( 'TypeExpression' , ( 1 - P "\r" ) ^ 0 )
- +
- ( space ^ 0 * "\r" ) ^ -1
- * BeamerBeginEnvironments
- * Lc [[\__piton_begin_line:]]
- * SpaceIndentation ^ 0
- * ( ( space * Lc [[\__piton_trailing_space:]] ) ^ 1 * -1 + space ^ 0 * EOL + Main ) ^ 0
- * -1
- * Lc [[\__piton_end_line:]]
- )
-local Delim = Q ( S "{[()]}" )
-local Punct = Q ( S ",:;!" )
-local identifier = letter * alphanum ^ 0
+ + Exception
+ + DefType
+ + DefFunction
+ + DefModule
+ + Record
+ + Keyword * EndKeyword
+ + OperatorWord * EndKeyword
+ + Builtin * EndKeyword
+ + DotNotation
+ + Constructor
+ + Identifier
+ + Punct
+ + Delim
+ + Number
+ + Word
+ LPEG1.ocaml = Main ^ 0
+ LPEG2.ocaml =
+ Ct (
+ ( P ":" + Identifier * SkipSpace * Q ":" ) * # ( 1 - P ":" )
+ * SkipSpace
+ * K ( 'TypeExpression' , ( 1 - P "\r" ) ^ 0 )
+ +
+ ( space ^ 0 * "\r" ) ^ -1
+ * BeamerBeginEnvironments
+ * Lc [[ \__piton_begin_line: ]]
+ * SpaceIndentation ^ 0
+ * ( ( space * Lc [[ \__piton_trailing_space: ]] ) ^ 1 * -1
+ + space ^ 0 * EOL
+ + Main
+ ) ^ 0
+ * -1
+ * Lc [[ \__piton_end_line: ]]
+ )
+end
+do
+ local Delim = Q ( S "{[()]}" )
+ local Punct = Q ( S ",:;!" )
+ local identifier = letter * alphanum ^ 0
-local Operator =
- K ( 'Operator' ,
- P "!=" + "==" + "<<" + ">>" + "<=" + ">=" + "||" + "&&"
- + S "-~+/*%=<>&.@|!" )
+ local Operator =
+ K ( 'Operator' ,
+ P "!=" + "==" + "<<" + ">>" + "<=" + ">=" + "||" + "&&"
+ + S "-~+/*%=<>&.@|!" )
-local Keyword =
- K ( 'Keyword' ,
- P "alignas" + "asm" + "auto" + "break" + "case" + "catch" + "class" +
- "const" + "constexpr" + "continue" + "decltype" + "do" + "else" + "enum" +
- "extern" + "for" + "goto" + "if" + "nexcept" + "private" + "public" +
- "register" + "restricted" + "return" + "static" + "static_assert" +
- "struct" + "switch" + "thread_local" + "throw" + "try" + "typedef" +
- "union" + "using" + "virtual" + "volatile" + "while"
- )
- + K ( 'Keyword.Constant' , P "default" + "false" + "NULL" + "nullptr" + "true" )
+ local Keyword =
+ K ( 'Keyword' ,
+ P "alignas" + "asm" + "auto" + "break" + "case" + "catch" + "class" +
+ "const" + "constexpr" + "continue" + "decltype" + "do" + "else" + "enum" +
+ "extern" + "for" + "goto" + "if" + "nexcept" + "private" + "public" +
+ "register" + "restricted" + "return" + "static" + "static_assert" +
+ "struct" + "switch" + "thread_local" + "throw" + "try" + "typedef" +
+ "union" + "using" + "virtual" + "volatile" + "while"
+ )
+ + K ( 'Keyword.Constant' , P "default" + "false" + "NULL" + "nullptr" + "true" )
-local Builtin =
- K ( 'Name.Builtin' ,
- P "alignof" + "malloc" + "printf" + "scanf" + "sizeof" )
+ local Builtin =
+ K ( 'Name.Builtin' ,
+ P "alignof" + "malloc" + "printf" + "scanf" + "sizeof" )
-local Type =
- K ( 'Name.Type' ,
- P "bool" + "char" + "char16_t" + "char32_t" + "double" + "float" + "int" +
- "int8_t" + "int16_t" + "int32_t" + "int64_t" + "long" + "short" + "signed"
- + "unsigned" + "void" + "wchar_t" ) * Q "*" ^ 0
+ local Type =
+ K ( 'Name.Type' ,
+ P "bool" + "char" + "char16_t" + "char32_t" + "double" + "float" + "int" +
+ "int8_t" + "int16_t" + "int32_t" + "int64_t" + "long" + "short" + "signed"
+ + "unsigned" + "void" + "wchar_t" ) * Q "*" ^ 0
-local DefFunction =
- Type
- * Space
- * Q "*" ^ -1
- * K ( 'Name.Function.Internal' , identifier )
- * SkipSpace
- * # P "("
-local DefClass =
- K ( 'Keyword' , "class" ) * Space * K ( 'Name.Class' , identifier )
-String =
- WithStyle ( 'String.Long' ,
- Q "\""
- * ( VisualSpace
- + K ( 'String.Interpol' ,
- "%" * ( S "difcspxXou" + "ld" + "li" + "hd" + "hi" )
- )
- + Q ( ( P "\\\"" + 1 - S " \"" ) ^ 1 )
- ) ^ 0
- * Q "\""
- )
-local braces = Compute_braces ( "\"" * ( 1 - S "\"" ) ^ 0 * "\"" )
-if piton.beamer then Beamer = Compute_Beamer ( 'c' , braces ) end
-DetectedCommands = Compute_DetectedCommands ( 'c' , braces )
-LPEG_cleaner['c'] = Compute_LPEG_cleaner ( 'c' , braces )
-local Preproc = K ( 'Preproc' , "#" * ( 1 - P "\r" ) ^ 0 ) * ( EOL + -1 )
-local Comment =
- WithStyle ( 'Comment' ,
- Q "//" * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 ) -- $
- * ( EOL + -1 )
+ local DefFunction =
+ Type
+ * Space
+ * Q "*" ^ -1
+ * K ( 'Name.Function.Internal' , identifier )
+ * SkipSpace
+ * # P "("
+ local DefClass =
+ K ( 'Keyword' , "class" ) * Space * K ( 'Name.Class' , identifier )
+ String =
+ WithStyle ( 'String.Long.Internal' ,
+ Q "\""
+ * ( SpaceInString
+ + K ( 'String.Interpol' ,
+ "%" * ( S "difcspxXou" + "ld" + "li" + "hd" + "hi" )
+ )
+ + Q ( ( P "\\\"" + 1 - S " \"" ) ^ 1 )
+ ) ^ 0
+ * Q "\""
+ )
+ local braces = Compute_braces ( "\"" * ( 1 - S "\"" ) ^ 0 * "\"" )
+ if piton.beamer then Beamer = Compute_Beamer ( 'c' , braces ) end
+ DetectedCommands = Compute_DetectedCommands ( 'c' , braces )
+ LPEG_cleaner.c = Compute_LPEG_cleaner ( 'c' , braces )
+ local Preproc = K ( 'Preproc' , "#" * ( 1 - P "\r" ) ^ 0 ) * ( EOL + -1 )
+ local Comment =
+ WithStyle ( 'Comment' ,
+ Q "//" * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 ) -- $
+ * ( EOL + -1 )
-local LongComment =
- WithStyle ( 'Comment' ,
- Q "/*"
- * ( CommentMath + Q ( ( 1 - P "*/" - S "$\r" ) ^ 1 ) + EOL ) ^ 0
- * Q "*/"
- ) -- $
-local EndKeyword = Space + Punct + Delim + EOL + Beamer + DetectedCommands + -1
-local Main =
- Space
- + Tab
- + Escape + EscapeMath
- + CommentLaTeX
- + Beamer
- + DetectedCommands
- + Preproc
- + Comment + LongComment
- + Delim
- + Operator
- + String
- + Punct
- + DefFunction
- + DefClass
- + Type * ( Q "*" ^ -1 + EndKeyword )
- + Keyword * EndKeyword
- + Builtin * EndKeyword
- + Identifier
- + Number
- + Word
-LPEG1['c'] = Main ^ 0
-LPEG2['c'] =
- Ct (
- ( space ^ 0 * P "\r" ) ^ -1
- * BeamerBeginEnvironments
- * Lc [[\__piton_begin_line:]]
- * SpaceIndentation ^ 0
- * ( space ^ 1 * -1 + space ^ 0 * EOL + Main ) ^ 0
- * -1
- * Lc [[\__piton_end_line:]]
- )
-local function LuaKeyword ( name )
-return
- Lc [[{\PitonStyle{Keyword}{]]
- * Q ( Cmt (
- C ( identifier ) ,
- function ( s , i , a ) return string.upper ( a ) == name end
- )
+ local LongComment =
+ WithStyle ( 'Comment' ,
+ Q "/*"
+ * ( CommentMath + Q ( ( 1 - P "*/" - S "$\r" ) ^ 1 ) + EOL ) ^ 0
+ * Q "*/"
+ ) -- $
+ local EndKeyword
+ = Space + Punct + Delim + EOL + Beamer + DetectedCommands + Escape +
+ EscapeMath + -1
+ local Main =
+ space ^ 0 * EOL
+ + Space
+ + Tab
+ + Escape + EscapeMath
+ + CommentLaTeX
+ + Beamer
+ + DetectedCommands
+ + Preproc
+ + Comment + LongComment
+ + Delim
+ + Operator
+ + String
+ + Punct
+ + DefFunction
+ + DefClass
+ + Type * ( Q "*" ^ -1 + EndKeyword )
+ + Keyword * EndKeyword
+ + Builtin * EndKeyword
+ + Identifier
+ + Number
+ + Word
+ LPEG1.c = Main ^ 0
+ LPEG2.c =
+ Ct (
+ ( space ^ 0 * P "\r" ) ^ -1
+ * BeamerBeginEnvironments
+ * Lc [[ \__piton_begin_line: ]]
+ * SpaceIndentation ^ 0
+ * ( space ^ 1 * -1 + space ^ 0 * EOL + Main ) ^ 0
+ * -1
+ * Lc [[ \__piton_end_line: ]]
)
- * Lc "}}"
-end
-local identifier =
- letter * ( alphanum + "-" ) ^ 0
- + P '"' * ( ( 1 - P '"' ) ^ 1 ) * '"'
-
-local Operator =
- K ( 'Operator' , P "=" + "!=" + "<>" + ">=" + ">" + "<=" + "<" + S "*+/" )
-local function Set ( list )
- local set = { }
- for _, l in ipairs ( list ) do set[l] = true end
- return set
end
+do
+ local LuaKeyword
+ function LuaKeyword ( name ) return
+ Lc [[ {\PitonStyle{Keyword}{ ]]
+ * Q ( Cmt (
+ C ( letter * alphanum ^ 0 ) ,
+ function ( s , i , a ) return string.upper ( a ) == name end
+ )
+ )
+ * Lc "}}"
+ end
+ local identifier =
+ letter * ( alphanum + "-" ) ^ 0
+ + P '"' * ( ( 1 - P '"' ) ^ 1 ) * '"'
+ local Operator =
+ K ( 'Operator' , P "=" + "!=" + "<>" + ">=" + ">" + "<=" + "<" + S "*+/" )
+ local Set
+ function Set ( list )
+ local set = { }
+ for _ , l in ipairs ( list ) do set[l] = true end
+ return set
+ end
+ local set_keywords = Set
+ {
+ "ABORT", "ACTION", "ADD", "AFTER", "ALL", "ALTER", "ALWAYS", "ANALYZE",
+ "AND", "AS", "ASC", "ATTACH", "AUTOINCREMENT", "BEFORE", "BEGIN", "BETWEEN",
+ "BY", "CASCADE", "CASE", "CAST", "CHECK", "COLLATE", "COLUMN", "COMMIT",
+ "CONFLICT", "CONSTRAINT", "CREATE", "CROSS", "CURRENT", "CURRENT_DATE",
+ "CURRENT_TIME", "CURRENT_TIMESTAMP", "DATABASE", "DEFAULT", "DEFERRABLE",
+ "DEFERRED", "DELETE", "DESC", "DETACH", "DISTINCT", "DO", "DROP", "EACH",
+ "ELSE", "END", "ESCAPE", "EXCEPT", "EXCLUDE", "EXCLUSIVE", "EXISTS",
+ "EXPLAIN", "FAIL", "FILTER", "FIRST", "FOLLOWING", "FOR", "FOREIGN", "FROM",
+ "FULL", "GENERATED", "GLOB", "GROUP", "GROUPS", "HAVING", "IF", "IGNORE",
+ "IMMEDIATE", "IN", "INDEX", "INDEXED", "INITIALLY", "INNER", "INSERT",
+ "INSTEAD", "INTERSECT", "INTO", "IS", "ISNULL", "JOIN", "KEY", "LAST",
+ "LEFT", "LIKE", "LIMIT", "MATCH", "MATERIALIZED", "NATURAL", "NO", "NOT",
+ "NOTHING", "NOTNULL", "NULL", "NULLS", "OF", "OFFSET", "ON", "OR", "ORDER",
+ "OTHERS", "OUTER", "OVER", "PARTITION", "PLAN", "PRAGMA", "PRECEDING",
+ "PRIMARY", "QUERY", "RAISE", "RANGE", "RECURSIVE", "REFERENCES", "REGEXP",
+ "REINDEX", "RELEASE", "RENAME", "REPLACE", "RESTRICT", "RETURNING", "RIGHT",
+ "ROLLBACK", "ROW", "ROWS", "SAVEPOINT", "SELECT", "SET", "TABLE", "TEMP",
+ "TEMPORARY", "THEN", "TIES", "TO", "TRANSACTION", "TRIGGER", "UNBOUNDED",
+ "UNION", "UNIQUE", "UPDATE", "USING", "VACUUM", "VALUES", "VIEW", "VIRTUAL",
+ "WHEN", "WHERE", "WINDOW", "WITH", "WITHOUT"
+ }
+ local set_builtins = Set
+ {
+ "AVG" , "COUNT" , "CHAR_LENGTH" , "CONCAT" , "CURDATE" , "CURRENT_DATE" ,
+ "DATE_FORMAT" , "DAY" , "LOWER" , "LTRIM" , "MAX" , "MIN" , "MONTH" , "NOW" ,
+ "RANK" , "ROUND" , "RTRIM" , "SUBSTRING" , "SUM" , "UPPER" , "YEAR"
+ }
+ local Identifier =
+ C ( identifier ) /
+ (
+ function ( s )
+ if set_keywords[string.upper(s)] then return
+ { [[{\PitonStyle{Keyword}{]] } ,
+ { luatexbase.catcodetables.other , s } ,
+ { "}}" }
+ else
+ if set_builtins[string.upper(s)] then return
+ { [[{\PitonStyle{Name.Builtin}{]] } ,
+ { luatexbase.catcodetables.other , s } ,
+ { "}}" }
+ else return
+ { [[{\PitonStyle{Name.Field}{]] } ,
+ { luatexbase.catcodetables.other , s } ,
+ { "}}" }
+ end
+ end
+ end
+ )
+ local String = K ( 'String.Long.Internal' , "'" * ( 1 - P "'" ) ^ 1 * "'" )
+ local braces = Compute_braces ( "'" * ( 1 - P "'" ) ^ 1 * "'" )
+ if piton.beamer then Beamer = Compute_Beamer ( 'sql' , braces ) end
+ DetectedCommands = Compute_DetectedCommands ( 'sql' , braces )
+ LPEG_cleaner.sql = Compute_LPEG_cleaner ( 'sql' , braces )
+ local Comment =
+ WithStyle ( 'Comment' ,
+ Q "--" -- syntax of SQL92
+ * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 ) -- $
+ * ( EOL + -1 )
-local set_keywords = Set
- {
- "ADD" , "AFTER" , "ALL" , "ALTER" , "AND" , "AS" , "ASC" , "BETWEEN" , "BY" ,
- "CHANGE" , "COLUMN" , "CREATE" , "CROSS JOIN" , "DELETE" , "DESC" , "DISTINCT" ,
- "DROP" , "FROM" , "GROUP" , "HAVING" , "IN" , "INNER" , "INSERT" , "INTO" , "IS" ,
- "JOIN" , "LEFT" , "LIKE" , "LIMIT" , "MERGE" , "NOT" , "NULL" , "ON" , "OR" ,
- "ORDER" , "OVER" , "RIGHT" , "SELECT" , "SET" , "TABLE" , "THEN" , "TRUNCATE" ,
- "UNION" , "UPDATE" , "VALUES" , "WHEN" , "WHERE" , "WITH"
- }
+ local LongComment =
+ WithStyle ( 'Comment' ,
+ Q "/*"
+ * ( CommentMath + Q ( ( 1 - P "*/" - S "$\r" ) ^ 1 ) + EOL ) ^ 0
+ * Q "*/"
+ ) -- $
+ local EndKeyword
+ = Space + Punct + Delim + EOL + Beamer + DetectedCommands + Escape +
+ EscapeMath + -1
+ local TableField =
+ K ( 'Name.Table' , identifier )
+ * Q "."
+ * ( K ( 'Name.Field' , identifier ) ) ^ 0
-local set_builtins = Set
- {
- "AVG" , "COUNT" , "CHAR_LENGHT" , "CONCAT" , "CURDATE" , "CURRENT_DATE" ,
- "DATE_FORMAT" , "DAY" , "LOWER" , "LTRIM" , "MAX" , "MIN" , "MONTH" , "NOW" ,
- "RANK" , "ROUND" , "RTRIM" , "SUBSTRING" , "SUM" , "UPPER" , "YEAR"
- }
-local Identifier =
- C ( identifier ) /
- (
- function (s)
- if set_keywords[string.upper(s)] -- the keywords are case-insensitive in SQL
- then return { "{\\PitonStyle{Keyword}{" } ,
- { luatexbase.catcodetables.other , s } ,
- { "}}" }
- else if set_builtins[string.upper(s)]
- then return { "{\\PitonStyle{Name.Builtin}{" } ,
- { luatexbase.catcodetables.other , s } ,
- { "}}" }
- else return { "{\\PitonStyle{Name.Field}{" } ,
- { luatexbase.catcodetables.other , s } ,
- { "}}" }
- end
- end
- end
- )
-local String = K ( 'String.Long' , "'" * ( 1 - P "'" ) ^ 1 * "'" )
-local braces = Compute_braces ( "'" * ( 1 - P "'" ) ^ 1 * "'" )
-if piton.beamer then Beamer = Compute_Beamer ( 'sql' , braces ) end
-DetectedCommands = Compute_DetectedCommands ( 'sql' , braces )
-LPEG_cleaner['sql'] = Compute_LPEG_cleaner ( 'sql' , braces )
-local Comment =
- WithStyle ( 'Comment' ,
- Q "--" -- syntax of SQL92
- * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 ) -- $
- * ( EOL + -1 )
+ local OneField =
+ (
+ Q ( "(" * ( 1 - P ")" ) ^ 0 * ")" )
+ +
+ K ( 'Name.Table' , identifier )
+ * Q "."
+ * K ( 'Name.Field' , identifier )
+ +
+ K ( 'Name.Field' , identifier )
+ )
+ * (
+ Space * LuaKeyword "AS" * Space * K ( 'Name.Field' , identifier )
+ ) ^ -1
+ * ( Space * ( LuaKeyword "ASC" + LuaKeyword "DESC" ) ) ^ -1
-local LongComment =
- WithStyle ( 'Comment' ,
- Q "/*"
- * ( CommentMath + Q ( ( 1 - P "*/" - S "$\r" ) ^ 1 ) + EOL ) ^ 0
- * Q "*/"
- ) -- $
-local EndKeyword = Space + Punct + Delim + EOL + Beamer + DetectedCommands + -1
-local TableField =
+ local OneTable =
K ( 'Name.Table' , identifier )
- * Q "."
- * K ( 'Name.Field' , identifier )
+ * (
+ Space
+ * LuaKeyword "AS"
+ * Space
+ * K ( 'Name.Table' , identifier )
+ ) ^ -1
-local OneField =
- (
- Q ( "(" * ( 1 - P ")" ) ^ 0 * ")" )
- +
- K ( 'Name.Table' , identifier )
- * Q "."
- * K ( 'Name.Field' , identifier )
- +
- K ( 'Name.Field' , identifier )
- )
- * (
- Space * LuaKeyword "AS" * Space * K ( 'Name.Field' , identifier )
- ) ^ -1
- * ( Space * ( LuaKeyword "ASC" + LuaKeyword "DESC" ) ) ^ -1
+ local WeCatchTableNames =
+ LuaKeyword "FROM"
+ * ( Space + EOL )
+ * OneTable * ( SkipSpace * Q "," * SkipSpace * OneTable ) ^ 0
+ + (
+ LuaKeyword "JOIN" + LuaKeyword "INTO" + LuaKeyword "UPDATE"
+ + LuaKeyword "TABLE"
+ )
+ * ( Space + EOL ) * OneTable
+ local EndKeyword
+ = Space + Punct + Delim + EOL + Beamer
+ + DetectedCommands + Escape + EscapeMath + -1
+ local Main =
+ space ^ 0 * EOL
+ + Space
+ + Tab
+ + Escape + EscapeMath
+ + CommentLaTeX
+ + Beamer
+ + DetectedCommands
+ + Comment + LongComment
+ + Delim
+ + Operator
+ + String
+ + Punct
+ + WeCatchTableNames
+ + ( TableField + Identifier ) * ( Space + Operator + Punct + Delim + EOL + -1 )
+ + Number
+ + Word
+ LPEG1.sql = Main ^ 0
+ LPEG2.sql =
+ Ct (
+ ( space ^ 0 * "\r" ) ^ -1
+ * BeamerBeginEnvironments
+ * Lc [[ \__piton_begin_line: ]]
+ * SpaceIndentation ^ 0
+ * ( space ^ 1 * -1 + space ^ 0 * EOL + Main ) ^ 0
+ * -1
+ * Lc [[ \__piton_end_line: ]]
+ )
+end
+do
+ local Punct = Q ( S ",:;!\\" )
-local OneTable =
- K ( 'Name.Table' , identifier )
- * (
- Space
- * LuaKeyword "AS"
- * Space
- * K ( 'Name.Table' , identifier )
- ) ^ -1
+ local Comment =
+ WithStyle ( 'Comment' ,
+ Q "#"
+ * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 -- $
+ )
+ * ( EOL + -1 )
-local WeCatchTableNames =
- LuaKeyword "FROM"
- * ( Space + EOL )
- * OneTable * ( SkipSpace * Q "," * SkipSpace * OneTable ) ^ 0
- + (
- LuaKeyword "JOIN" + LuaKeyword "INTO" + LuaKeyword "UPDATE"
- + LuaKeyword "TABLE"
- )
- * ( Space + EOL ) * OneTable
-local EndKeyword = Space + Punct + Delim + EOL + Beamer + DetectedCommands + -1
-local Main =
- Space
- + Tab
- + Escape + EscapeMath
- + CommentLaTeX
- + Beamer
- + DetectedCommands
- + Comment + LongComment
- + Delim
- + Operator
- + String
- + Punct
- + WeCatchTableNames
- + ( TableField + Identifier ) * ( Space + Operator + Punct + Delim + EOL + -1 )
- + Number
- + Word
-LPEG1['sql'] = Main ^ 0
-LPEG2['sql'] =
- Ct (
- ( space ^ 0 * "\r" ) ^ -1
- * BeamerBeginEnvironments
- * Lc [[\__piton_begin_line:]]
- * SpaceIndentation ^ 0
- * ( space ^ 1 * -1 + space ^ 0 * EOL + Main ) ^ 0
- * -1
- * Lc [[\__piton_end_line:]]
- )
-local Punct = Q ( S ",:;!\\" )
+ local String =
+ WithStyle ( 'String.Short.Internal' ,
+ Q "\""
+ * ( SpaceInString
+ + Q ( ( P "\\\"" + 1 - S " \"" ) ^ 1 )
+ ) ^ 0
+ * Q "\""
+ )
+ local braces = Compute_braces ( P "\"" * ( P "\\\"" + 1 - P "\"" ) ^ 1 * "\"" )
-local Comment =
- WithStyle ( 'Comment' ,
- Q "#"
- * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 -- $
- )
- * ( EOL + -1 )
+ if piton.beamer then Beamer = Compute_Beamer ( 'minimal' , braces ) end
-local String =
- WithStyle ( 'String.Short' ,
- Q "\""
- * ( VisualSpace
- + Q ( ( P "\\\"" + 1 - S " \"" ) ^ 1 )
- ) ^ 0
- * Q "\""
- )
+ DetectedCommands = Compute_DetectedCommands ( 'minimal' , braces )
-local braces = Compute_braces ( P "\"" * ( P "\\\"" + 1 - P "\"" ) ^ 1 * "\"" )
+ LPEG_cleaner.minimal = Compute_LPEG_cleaner ( 'minimal' , braces )
-if piton.beamer then Beamer = Compute_Beamer ( 'minimal' , braces ) end
+ local identifier = letter * alphanum ^ 0
+
+ local Identifier = K ( 'Identifier.Internal' , identifier )
-DetectedCommands = Compute_DetectedCommands ( 'minimal' , braces )
+ local Delim = Q ( S "{[()]}" )
-LPEG_cleaner['minimal'] = Compute_LPEG_cleaner ( 'minimal' , braces )
+ local Main =
+ space ^ 0 * EOL
+ + Space
+ + Tab
+ + Escape + EscapeMath
+ + CommentLaTeX
+ + Beamer
+ + DetectedCommands
+ + Comment
+ + Delim
+ + String
+ + Punct
+ + Identifier
+ + Number
+ + Word
+ LPEG1.minimal = Main ^ 0
-local identifier = letter * alphanum ^ 0
+ LPEG2.minimal =
+ Ct (
+ ( space ^ 0 * "\r" ) ^ -1
+ * BeamerBeginEnvironments
+ * Lc [[ \__piton_begin_line: ]]
+ * SpaceIndentation ^ 0
+ * ( space ^ 1 * -1 + space ^ 0 * EOL + Main ) ^ 0
+ * -1
+ * Lc [[ \__piton_end_line: ]]
+ )
+end
+do
-local Identifier = K ( 'Identifier.Internal' , identifier )
+ local braces =
+ P { "E" ,
+ E = ( "{" * V "E" * "}" + ( 1 - S "{}" ) ) ^ 0
+ }
-local Delim = Q ( S "{[()]}" )
+ if piton.beamer then Beamer = Compute_Beamer ( 'verbatim' , braces ) end
-local Main =
- Space
- + Tab
- + Escape + EscapeMath
- + CommentLaTeX
- + Beamer
- + DetectedCommands
- + Comment
- + Delim
- + String
- + Punct
- + Identifier
- + Number
- + Word
+ DetectedCommands = Compute_DetectedCommands ( 'verbatim' , braces )
-LPEG1['minimal'] = Main ^ 0
+ LPEG_cleaner.verbatim = Compute_LPEG_cleaner ( 'verbatim' , braces )
+ local lpeg_central = 1 - S " \\\r"
+ if piton.begin_escape then
+ lpeg_central = lpeg_central - piton.begin_escape
+ end
+ if piton.begin_escape_math then
+ lpeg_central = lpeg_central - piton.begin_escape_math
+ end
+ local Word = Q ( lpeg_central ^ 1 )
-LPEG2['minimal'] =
- Ct (
- ( space ^ 0 * "\r" ) ^ -1
- * BeamerBeginEnvironments
- * Lc [[\__piton_begin_line:]]
- * SpaceIndentation ^ 0
- * ( space ^ 1 * -1 + space ^ 0 * EOL + Main ) ^ 0
- * -1
- * Lc [[\__piton_end_line:]]
- )
+ local Main =
+ space ^ 0 * EOL
+ + Space
+ + Tab
+ + Escape + EscapeMath
+ + Beamer
+ + DetectedCommands
+ + Q [[\]]
+ + Word
+ LPEG1.verbatim = Main ^ 0
+ LPEG2.verbatim =
+ Ct (
+ ( space ^ 0 * "\r" ) ^ -1
+ * BeamerBeginEnvironments
+ * Lc [[ \__piton_begin_line: ]]
+ * SpaceIndentation ^ 0
+ * ( space ^ 1 * -1 + space ^ 0 * EOL + Main ) ^ 0
+ * -1
+ * Lc [[ \__piton_end_line: ]]
+ )
+end
function piton.Parse ( language , code )
+ piton.language = language
local t = LPEG2[language] : match ( code )
- if t == nil
- then
+ if t == nil then
sprintL3 [[ \__piton_error_or_warning:n { SyntaxError } ]]
return -- to exit in force the function
end
@@ -1183,7 +1332,9 @@ function piton.Parse ( language , code )
end
end
end
-function piton.ParseFile ( language , name , first_line , last_line , split )
+
+function piton.ParseFile
+ ( lang , name , first_line , last_line , splittable , split )
local s = ''
local i = 0
for line in io.lines ( name ) do
@@ -1203,21 +1354,26 @@ function piton.ParseFile ( language , name , first_line , last_line , split )
end
end
if split == 1 then
- piton.GobbleSplitParse ( language , 0 , s )
+ piton.RetrieveGobbleSplitParse ( lang , 0 , splittable , s )
else
- sprintL3 [[ \bool_if:NT \g__piton_footnote_bool \savenotes \vtop \bgroup ]]
- piton.Parse ( language , s )
- sprintL3
- [[\vspace{2.5pt}\egroup\bool_if:NT\g__piton_footnote_bool\endsavenotes\par]]
+ piton.RetrieveGobbleParse ( lang , 0 , splittable , s )
end
end
+function piton.RetrieveGobbleParse ( lang , n , splittable , code )
+ local s
+ s = ( ( P " " ^ 0 * "\r" ) ^ -1 * C ( P ( 1 ) ^ 0 ) * -1 ) : match ( code )
+ piton.GobbleParse ( lang , n , splittable , s )
+end
function piton.ParseBis ( lang , code )
local s = ( Cs ( ( P '##' / '#' + 1 ) ^ 0 ) ) : match ( code )
return piton.Parse ( lang , s )
end
function piton.ParseTer ( lang , code )
- local s = ( Cs ( ( P [[\__piton_breakable_space: ]] / ' ' + 1 ) ^ 0 ) )
- : match ( code )
+ local s
+ s = ( Cs ( ( P [[\__piton_breakable_space: ]] / ' ' + 1 ) ^ 0 ) )
+ : match ( code )
+ s = ( Cs ( ( P [[\__piton_leading_space: ]] / '' + 1 ) ^ 0 ) )
+ : match ( s )
return piton.Parse ( lang , s )
end
local AutoGobbleLPEG =
@@ -1244,18 +1400,20 @@ local TabsAutoGobbleLPEG =
local EnvGobbleLPEG =
( ( 1 - P "\r" ) ^ 0 * "\r" ) ^ 0
* Ct ( C " " ^ 0 * -1 ) / table.getn
-local function remove_before_cr ( input_string )
- local match_result = ( P "\r" ) : match ( input_string )
- if match_result then
- return string.sub ( input_string , match_result )
- else
- return input_string
- end
+local remove_before_cr
+function remove_before_cr ( input_string )
+ local match_result = ( P "\r" ) : match ( input_string )
+ if match_result then return
+ string.sub ( input_string , match_result )
+ else return
+ input_string
+ end
end
-local function gobble ( n , code )
+local gobble
+function gobble ( n , code )
code = remove_before_cr ( code )
- if n == 0 then
- return code
+ if n == 0 then return
+ code
else
if n == -1 then
n = AutoGobbleLPEG : match ( code )
@@ -1268,10 +1426,9 @@ local function gobble ( n , code )
end
end
end
- if n == 0 then
- return code
- else
- return
+ if n == 0 then return
+ code
+ else return
( Ct (
( 1 - P "\r" ) ^ (-n) * C ( ( 1 - P "\r" ) ^ 0 )
* ( C "\r" * ( 1 - P "\r" ) ^ (-n) * C ( ( 1 - P "\r" ) ^ 0 )
@@ -1281,41 +1438,62 @@ local function gobble ( n , code )
end
end
end
-function piton.GobbleParse ( lang , n , code )
+function piton.GobbleParse ( lang , n , splittable , code )
+ piton.ComputeLinesStatus ( code , splittable )
piton.last_code = gobble ( n , code )
piton.last_language = lang
piton.CountLines ( piton.last_code )
sprintL3 [[ \bool_if:NT \g__piton_footnote_bool \savenotes ]]
- sprintL3 [[ \vtop \bgroup ]]
piton.Parse ( lang , piton.last_code )
- sprintL3 [[ \vspace{2.5pt} \egroup ]]
+ sprintL3 [[ \vspace{2.5pt} ]]
sprintL3 [[ \bool_if:NT \g__piton_footnote_bool \endsavenotes ]]
sprintL3 [[ \par ]]
if piton.write and piton.write ~= '' then
local file = io.open ( piton.write , piton.write_mode )
if file then
- file:write ( piton.get_last_code ( ) )
- file:close ( )
+ file : write ( piton.get_last_code ( ) )
+ file : close ( )
else
sprintL3 [[ \__piton_error_or_warning:n { FileError } ]]
end
end
end
-function piton.GobbleSplitParse ( lang , n , code )
- P { "E" ,
- E = ( V "F"
- * ( P " " ^ 0 * "\r"
- / ( function ( x ) sprintL3 [[ \__piton_incr_visual_line: ]] end )
- ) ^ 1
- / ( function ( x )
- sprintL3 ( piton.string_between_chunks )
- end )
- ) ^ 0 * V "F" ,
- F = C ( V "G" ^ 0 )
- / ( function ( x ) piton.GobbleParse ( lang , 0 , x ) end ) ,
- G = ( 1 - P "\r" ) ^ 0 * "\r" - ( P " " ^ 0 * "\r" )
- + ( ( 1 - P "\r" ) ^ 1 * -1 - ( P " " ^ 0 * -1 ) )
- } : match ( gobble ( n , code ) )
+function piton.GobbleSplitParse ( lang , n , splittable , code )
+ local chunks
+ chunks =
+ (
+ Ct (
+ (
+ P " " ^ 0 * "\r"
+ +
+ C ( ( ( 1 - P "\r" ) ^ 1 * "\r" - ( P " " ^ 0 * "\r" ) ) ^ 1 )
+ ) ^ 0
+ )
+ ) : match ( gobble ( n , code ) )
+ sprintL3 [[ \begingroup ]]
+ sprintL3
+ (
+ [[ \PitonOptions { split-on-empty-lines = false, gobble = 0, ]]
+ .. "language = " .. lang .. ","
+ .. "splittable = " .. splittable .. "}"
+ )
+ for k , v in pairs ( chunks ) do
+ if k > 1 then
+ sprintL3 [[ \l__piton_split_separation_tl ]]
+ end
+ tex.sprint
+ (
+ [[\begin{]] .. piton.env_used_by_split .. "}\r"
+ .. v
+ .. [[\end{]] .. piton.env_used_by_split .. "}"
+ )
+ end
+ sprintL3 [[ \endgroup ]]
+end
+function piton.RetrieveGobbleSplitParse ( lang , n , splittable , code )
+ local s
+ s = ( ( P " " ^ 0 * "\r" ) ^ -1 * C ( P ( 1 ) ^ 0 ) * -1 ) : match ( code )
+ piton.GobbleSplitParse ( lang , n , splittable , s )
end
piton.string_between_chunks =
[[ \par \l__piton_split_separation_tl \mode_leave_vertical: ]]
@@ -1325,8 +1503,13 @@ function piton.get_last_code ( )
end
function piton.CountLines ( code )
local count = 0
- for i in code : gmatch ( "\r" ) do count = count + 1 end
- sprintL3 ( string.format ( [[ \int_set:Nn \l__piton_nb_lines_int { % i } ]] , count ) )
+ count =
+ ( Ct ( ( ( 1 - P "\r" ) ^ 0 * C "\r" ) ^ 0
+ * ( ( 1 - P "\r" ) ^ 1 * Cc "\r" ) ^ -1
+ * -1
+ ) / table.getn
+ ) : match ( code )
+ sprintL3 ( string.format ( [[ \int_set:Nn \l__piton_nb_lines_int { %i } ]] , count ) )
end
function piton.CountNonEmptyLines ( code )
local count = 0
@@ -1338,20 +1521,20 @@ function piton.CountNonEmptyLines ( code )
) / table.getn
) : match ( code )
sprintL3
- ( string.format ( [[ \int_set:Nn \l__piton_nb_non_empty_lines_int { % i } ]] , count ) )
+ ( string.format ( [[ \int_set:Nn \l__piton_nb_non_empty_lines_int { %i } ]] , count ) )
end
function piton.CountLinesFile ( name )
local count = 0
for line in io.lines ( name ) do count = count + 1 end
sprintL3
- ( string.format ( [[ \int_set:Nn \l__piton_nb_lines_int { %i } ]], count))
+ ( string.format ( [[ \int_set:Nn \l__piton_nb_lines_int { %i } ]], count ) )
end
function piton.CountNonEmptyLinesFile ( name )
local count = 0
- for line in io.lines ( name )
- do if not ( ( P " " ^ 0 * -1 ) : match ( line ) ) then
+ for line in io.lines ( name ) do
+ if not ( ( P " " ^ 0 * -1 ) : match ( line ) ) then
count = count + 1
- end
+ end
end
sprintL3
( string.format ( [[ \int_set:Nn \l__piton_nb_non_empty_lines_int { % i } ]] , count ) )
@@ -1362,53 +1545,135 @@ function piton.ComputeRange(marker_beginning,marker_end,file_name)
local first_line = -1
local count = 0
local last_found = false
- for line in io.lines ( file_name )
- do if first_line == -1
- then if string.sub ( line , 1 , #s ) == s
- then first_line = count
- end
- else if string.sub ( line , 1 , #t ) == t
- then last_found = true
- break
- end
- end
- count = count + 1
+ for line in io.lines ( file_name ) do
+ if first_line == -1 then
+ if string.sub ( line , 1 , #s ) == s then
+ first_line = count
+ end
+ else
+ if string.sub ( line , 1 , #t ) == t then
+ last_found = true
+ break
+ end
+ end
+ count = count + 1
end
- if first_line == -1
- then sprintL3 [[ \__piton_error_or_warning:n { begin~marker~not~found } ]]
- else if last_found == false
- then sprintL3 [[ \__piton_error_or_warning:n { end~marker~not~found } ]]
- end
+ if first_line == -1 then
+ sprintL3 [[ \__piton_error_or_warning:n { begin~marker~not~found } ]]
+ else
+ if last_found == false then
+ sprintL3 [[ \__piton_error_or_warning:n { end~marker~not~found } ]]
+ end
end
sprintL3 (
[[ \int_set:Nn \l__piton_first_line_int { ]] .. first_line .. ' + 2 }'
.. [[ \int_set:Nn \l__piton_last_line_int { ]] .. count .. ' }' )
end
+function piton.ComputeLinesStatus ( code , splittable )
+ local lpeg_line_beamer
+ if piton.beamer then
+ lpeg_line_beamer =
+ space ^ 0
+ * P [[\begin{]] * piton.BeamerEnvironments * "}"
+ * ( "<" * ( 1 - P ">" ) ^ 0 * ">" ) ^ -1
+ +
+ space ^ 0
+ * P [[\end{]] * piton.BeamerEnvironments * "}"
+ else
+ lpeg_line_beamer = P ( false )
+ end
+ local lpeg_empty_lines =
+ Ct (
+ ( lpeg_line_beamer * "\r"
+ +
+ P " " ^ 0 * "\r" * Cc ( 0 )
+ +
+ ( 1 - P "\r" ) ^ 0 * "\r" * Cc ( 1 )
+ ) ^ 0
+ *
+ ( lpeg_line_beamer + ( 1 - P "\r" ) ^ 1 * Cc ( 1 ) ) ^ -1
+ )
+ * -1
+ local lpeg_all_lines =
+ Ct (
+ ( lpeg_line_beamer * "\r"
+ +
+ ( 1 - P "\r" ) ^ 0 * "\r" * Cc ( 1 )
+ ) ^ 0
+ *
+ ( lpeg_line_beamer + ( 1 - P "\r" ) ^ 1 * Cc ( 1 ) ) ^ -1
+ )
+ * -1
+ piton.empty_lines = lpeg_empty_lines : match ( code )
+ local lines_status
+ local s = splittable
+ if splittable < 0 then s = - splittable end
+ if splittable > 0 then
+ lines_status = lpeg_all_lines : match ( code )
+ else
+ lines_status = lpeg_empty_lines : match ( code )
+ for i , x in ipairs ( lines_status ) do
+ if x == 0 then
+ for j = 1 , s - 1 do
+ if i + j > #lines_status then break end
+ if lines_status[i+j] == 0 then break end
+ lines_status[i+j] = 2
+ end
+ for j = 1 , s - 1 do
+ if i - j == 1 then break end
+ if lines_status[i-j-1] == 0 then break end
+ lines_status[i-j-1] = 2
+ end
+ end
+ end
+ end
+ for j = 1 , s - 1 do
+ if j > #lines_status then break end
+ if lines_status[j] == 0 then break end
+ lines_status[j] = 2
+ end
+ for j = 1 , s - 1 do
+ if #lines_status - j == 0 then break end
+ if lines_status[#lines_status - j] == 0 then break end
+ lines_status[#lines_status - j] = 2
+ end
+ piton.lines_status = lines_status
+end
function piton.new_language ( lang , definition )
lang = string.lower ( lang )
local alpha , digit = lpeg.alpha , lpeg.digit
local extra_letters = { "@" , "_" , "$" } -- $
function add_to_letter ( c )
- if c ~= " " then table.insert ( extra_letters , c ) end
+ if c ~= " " then table.insert ( extra_letters , c ) end
end
function add_to_digit ( c )
- if c ~= " " then digit = digit + c end
+ if c ~= " " then digit = digit + c end
end
local other = S ":_@+-*/<>!?;.()[]~^=#&\"\'\\$" -- $
local extra_others = { }
function add_to_other ( c )
- if c ~= " " then
- extra_others[c] = true
- other = other + P ( c )
- end
+ if c ~= " " then
+ extra_others[c] = true
+ other = other + P ( c )
+ end
+ end
+ local def_table
+ if ( S ", " ^ 0 * -1 ) : match ( definition ) then
+ def_table = {}
+ else
+ local strict_braces =
+ P { "E" ,
+ E = ( "{" * V "F" * "}" + ( 1 - S ",{}" ) ) ^ 0 ,
+ F = ( "{" * V "F" * "}" + ( 1 - S "{}" ) ) ^ 0
+ }
+ local cut_definition =
+ P { "E" ,
+ E = Ct ( V "F" * ( "," * V "F" ) ^ 0 ) ,
+ F = Ct ( space ^ 0 * C ( alpha ^ 1 ) * space ^ 0
+ * ( "=" * space ^ 0 * C ( strict_braces ) ) ^ -1 )
+ }
+ def_table = cut_definition : match ( definition )
end
- local cut_definition =
- P { "E" ,
- E = Ct ( V "F" * ( "," * V "F" ) ^ 0 ) ,
- F = Ct ( space ^ 0 * C ( alpha ^ 1 ) * space ^ 0
- * ( "=" * space ^ 0 * C ( strict_braces ) ) ^ -1 )
- }
- local def_table = cut_definition : match ( definition )
local tex_braced_arg = "{" * C ( ( 1 - P "}" ) ^ 0 ) * "}"
local tex_arg = tex_braced_arg + C ( 1 )
local tex_option_arg = "[" * C ( ( 1 - P "]" ) ^ 0 ) * "]" + Cc ( nil )
@@ -1454,7 +1719,7 @@ function piton.new_language ( lang , definition )
end
end
local Number =
- K ( 'Number' ,
+ K ( 'Number.Internal' ,
( digit ^ 1 * "." * # ( 1 - P "." ) * digit ^ 0
+ digit ^ 0 * "." * digit ^ 1
+ digit ^ 1 )
@@ -1482,11 +1747,13 @@ function piton.new_language ( lang , definition )
* ( P "}" ) ^ 1 * space ^ 0 ,
F = space ^ 0 * C ( letter * alphanum ^ 0 + other ^ 1 ) * space ^ 0
}
- local function keyword_to_lpeg ( name )
- return
+ local keyword_to_lpeg
+ function keyword_to_lpeg ( name ) return
Q ( Cmt (
C ( identifier ) ,
- function(s,i,a) return string.upper(a) == string.upper(name) end
+ function ( s , i , a ) return
+ string.upper ( a ) == string.upper ( name )
+ end
)
)
end
@@ -1500,7 +1767,7 @@ function piton.new_language ( lang , definition )
then
local keywords = P ( false )
local style = [[\PitonStyle{Keyword}]]
- if x[1] == "moredirectives" then style = [[ \PitonStyle{Directive} ]] end
+ if x[1] == "moredirectives" then style = [[\PitonStyle{Directive}]] end
style = tex_option_arg : match ( x[2] ) or style
local n = tonumber ( style )
if n then
@@ -1544,7 +1811,7 @@ function piton.new_language ( lang , definition )
central_pattern = P ( arg3 .. arg3 ) + central_pattern
end
if arg1 == "m"
- then prefix = lpeg.B ( 1 - letter - ")" - "]" )
+ then prefix = B ( 1 - letter - ")" - "]" )
else prefix = P ( true )
end
long_string = long_string +
@@ -1555,7 +1822,7 @@ function piton.new_language ( lang , definition )
local pattern =
prefix
* Q ( arg3 )
- * ( VisualSpace + Q ( central_pattern ^ 1 ) + EOL ) ^ 0
+ * ( SpaceInString + Q ( central_pattern ^ 1 ) + EOL ) ^ 0
* Q ( arg4 )
Long_string = Long_string + pattern
LongString = LongString +
@@ -1581,10 +1848,11 @@ function piton.new_language ( lang , definition )
local arg3 = ( tex_braced_arg + C ( P ( 1 ) ^ 0 * -1 ) )
: match ( other_args )
if arg3 == [[\#]] then arg3 = "#" end -- mandatory
+ if arg3 == [[\%]] then arg3 = "%" end -- mandatory¨
CommentDelim = CommentDelim +
Ct ( Cc "Open"
* Cc ( "{" .. arg2 .. "{" ) * Cc "}}" )
- * Q ( arg3 )
+ * Q ( arg3 )
* ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 -- $
* Ct ( Cc "Close" )
* ( EOL + -1 )
@@ -1628,7 +1896,11 @@ function piton.new_language ( lang , definition )
= args_for_moredelims : match ( x[2] )
local MyFun = Q
if arg1 == "*" or arg1 == "**" then
- MyFun = function ( x ) return K ( 'ParseAgain.noCR' , x ) end
+ function MyFun ( x )
+ if x ~= '' then return
+ LPEG1[lang] : match ( x )
+ end
+ end
end
local left_delim
if arg2 : match "i" then
@@ -1664,7 +1936,8 @@ function piton.new_language ( lang , definition )
local Delim = Q ( S "{[()]}" )
local Punct = Q ( S "=,:;!\\'\"" )
local Main =
- Space
+ space ^ 0 * EOL
+ + Space
+ Tab
+ Escape + EscapeMath
+ CommentLaTeX
@@ -1684,11 +1957,11 @@ function piton.new_language ( lang , definition )
Ct (
( space ^ 0 * P "\r" ) ^ -1
* BeamerBeginEnvironments
- * Lc [[\__piton_begin_line:]]
+ * Lc [[ \__piton_begin_line: ]]
* SpaceIndentation ^ 0
* ( space ^ 1 * -1 + space ^ 0 * EOL + Main ) ^ 0
* -1
- * Lc [[\__piton_end_line:]]
+ * Lc [[ \__piton_end_line: ]]
)
if left_tag then
local Tag = Ct ( Cc "Open" * Cc ( "{" .. style_tag .. "{" ) * Cc "}}" )
@@ -1733,7 +2006,7 @@ function piton.new_language ( lang , definition )
* SpaceIndentation ^ 0
* LPEG1[lang]
* -1
- * Lc [[\__piton_end_line:]]
+ * Lc [[ \__piton_end_line: ]]
)
end
end
diff --git a/Master/texmf-dist/tex/lualatex/piton/piton.sty b/Master/texmf-dist/tex/lualatex/piton/piton.sty
index bf6cc6a89d5..9a36759a729 100644
--- a/Master/texmf-dist/tex/lualatex/piton/piton.sty
+++ b/Master/texmf-dist/tex/lualatex/piton/piton.sty
@@ -6,7 +6,7 @@
%%
%% piton.dtx (with options: `STY')
%% -------------------------------------------
-%% Copyright (C) 2022-2024 by F. Pantigny
+%% Copyright (C) 2022-2025 by F. Pantigny
%%
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -19,8 +19,9 @@
%% LaTeX version 2005/12/01 or later.
%% -------------------------------------------
%%
-\def\PitonFileVersion{3.1b}
-\def\PitonFileDate{2024/08/29}
+\def\PitonFileVersion{4.2b}
+\def\PitonFileDate{2025/01/18}
+
@@ -83,20 +84,26 @@
The~file~'README.md'~explains~how~to~retrieve~the~files~'piton.sty'~and~
'piton.lua'.
}
-\file_if_exist:nF { piton.lua }
- { \msg_fatal:nn { piton } { piton.lua~not~found } }
+\file_if_exist:nF { piton.lua } { \__piton_fatal:n { piton.lua~not~found } }
\bool_new:N \g__piton_footnotehyper_bool
\bool_new:N \g__piton_footnote_bool
\bool_new:N \g__piton_math_comments_bool
\bool_new:N \g__piton_beamer_bool
\tl_new:N \g__piton_escape_inside_tl
+\bool_new:N \l__piton_old_PitonInputFile_bool
\keys_define:nn { piton / package }
{
footnote .bool_gset:N = \g__piton_footnote_bool ,
footnotehyper .bool_gset:N = \g__piton_footnotehyper_bool ,
+ footnote .usage:n = load ,
+ footnotehyper .usage:n = load ,
beamer .bool_gset:N = \g__piton_beamer_bool ,
beamer .default:n = true ,
+ beamer .usage:n = load ,
+ old-PitonInputFile .bool_set:N = \l__piton_old_PitonInputFile_bool ,
+ old-PitonInputFile .default:n = true ,
+ old-PitonInputFile .usage:n = load ,
unknown .code:n = \__piton_error:n { Unknown~key~for~package }
}
@@ -104,11 +111,18 @@
{
Unknown~key.\\
You~have~used~the~key~'\l_keys_key_str'~but~the~only~keys~available~here~
- are~'beamer',~'footnote',~'footnotehyper'.~Other~keys~are~available~in~
- \token_to_str:N \PitonOptions.\\
+ are~'beamer',~'footnote',~'footnotehyper'~and~'old-PitonInputFile'.~
+ Other~keys~are~available~in~\token_to_str:N \PitonOptions.\\
That~key~will~be~ignored.
}
\ProcessKeysOptions { piton / package }
+\msg_new:nnn { piton } { old-PitonInputFile }
+ {
+ Be~careful:~The~key~'old-PitonInputFile'~will~be~deleted~
+ in~a~future~version~of~'piton'.
+ }
+\bool_if:NT \l__piton_old_PitonInputFile_bool
+ { \msg_warning:nn { piton } { old-PitonInputFile } }
\IfClassLoadedTF { beamer } { \bool_gset_true:N \g__piton_beamer_bool } { }
\IfPackageLoadedTF { beamerarticle } { \bool_gset_true:N \g__piton_beamer_bool } { }
\lua_now:n { piton = piton~or~{ } }
@@ -157,8 +171,8 @@
}
\lua_now:n
{
- piton.BeamerCommands = lpeg.P ( "\\uncover" )
- + "\\only" + "\\visible" + "\\invisible" + "\\alert" + "\\action"
+ piton.BeamerCommands = lpeg.P [[\uncover]]
+ + [[\only]] + [[\visible]] + [[\invisible]] + [[\alert]] + [[\action]]
piton.beamer_environments = { "uncoverenv" , "onlyenv" , "visibleenv" ,
"invisibleenv" , "alertenv" , "actionenv" }
piton.DetectedCommands = lpeg.P ( false )
@@ -172,6 +186,8 @@
\str_new:N \l__piton_path_write_str
\bool_new:N \l__piton_in_PitonOptions_bool
\bool_new:N \l__piton_in_PitonInputFile_bool
+\tl_new:N \l__piton_font_command_tl
+\tl_set:Nn \l__piton_font_command_tl { \ttfamily }
\int_new:N \l__piton_nb_lines_int
\int_new:N \l__piton_nb_non_empty_lines_int
\int_new:N \g__piton_line_int
@@ -199,6 +215,7 @@
\tl_new:N \l__piton_end_of_broken_line_tl
\tl_set:Nn \l__piton_end_of_broken_line_tl { \hspace*{0.5em} \textbackslash }
\bool_new:N \l__piton_break_lines_in_piton_bool
+
\dim_new:N \l__piton_width_dim
\dim_new:N \l__piton_line_width_dim
\bool_new:N \l__piton_width_min_bool
@@ -224,10 +241,9 @@
\int_gadd:Nn \g__piton_indentation_int \l__piton_tab_size_int
}
\int_new:N \l__piton_gobble_int
-\tl_new:N \l__piton_space_tl
-\tl_set_eq:NN \l__piton_space_tl \nobreakspace
+\tl_set_eq:NN \l__piton_space_in_string_tl \nobreakspace
\int_new:N \g__piton_indentation_int
-\cs_new_protected:Npn \__piton_an_indentation_space:
+\cs_new_protected:Npn \__piton_leading_space:
{ \int_gincr:N \g__piton_indentation_int }
\cs_new_protected:Npn \__piton_label:n #1
{
@@ -243,30 +259,29 @@
}
}
\@esphack
- }
- { \__piton_error:n { label~with~lines~numbers } }
+ }
+ { \__piton_error:n { label~with~lines~numbers } }
}
\cs_new_protected:Npn \__piton_marker_beginning:n #1 { }
\cs_new_protected:Npn \__piton_marker_end:n #1 { }
-\cs_new_protected:Npn \__piton_open_brace: { \lua_now:n { piton.open_brace() } }
-\cs_new_protected:Npn \__piton_close_brace: { \lua_now:n { piton.close_brace() } }
\tl_new:N \g__piton_begin_line_hook_tl
\cs_new_protected:Npn \__piton_prompt:
{
\tl_gset:Nn \g__piton_begin_line_hook_tl
{
\tl_if_empty:NF \l__piton_prompt_bg_color_tl
- { \clist_set:NV \l__piton_bg_color_clist \l__piton_prompt_bg_color_tl }
+ { \clist_set:No \l__piton_bg_color_clist \l__piton_prompt_bg_color_tl }
}
}
\cs_new_protected:Npn \__piton_trailing_space: { }
+\cs_generate_variant:Nn \__piton_replace_spaces:n { o }
\cs_new_protected:Npn \__piton_replace_spaces:n #1
{
\tl_set:Nn \l_tmpa_tl { #1 }
\bool_if:NTF \l__piton_show_spaces_bool
{
- \tl_set:Nn \l__piton_space_tl { ␣ }
- \regex_replace_all:nnN { \x20 } { ␣ } \l_tmpa_tl % U+2423
+ \tl_set:Nn \l__piton_space_in_string_tl { ␣ } % U+2423
+ \regex_replace_all:nnN { \x20 } { ␣ } \l_tmpa_tl
}
{
\bool_if:NT \l__piton_break_lines_in_Piton_bool
@@ -275,10 +290,16 @@
{ \x20 }
{ \c { __piton_breakable_space: } }
\l_tmpa_tl
+ \regex_replace_all:nnN
+ { \c { l__piton_space_in_string_tl } }
+ { \c { __piton_breakable_space: } }
+ \l_tmpa_tl
}
}
\l_tmpa_tl
}
+
+\cs_set_protected:Npn \__piton_end_line: { }
\cs_set_protected:Npn \__piton_begin_line: #1 \__piton_end_line:
{
\group_begin:
@@ -299,30 +320,39 @@
\skip_horizontal:N \l__piton_left_margin_dim
\bool_if:NT \l__piton_line_numbers_bool
{
- \bool_if:nF
+ \int_set:Nn \l_tmpa_int
{
- \str_if_eq_p:nn { #1 } { \PitonStyle { Prompt } { } }
- &&
- \l__piton_skip_empty_lines_bool
+ \lua_now:e
+ {
+ tex.sprint
+ (
+ luatexbase.catcodetables.expl ,
+ tostring
+ ( piton.empty_lines
+ [ \int_eval:n { \g__piton_line_int + 1 } ]
+ )
+ )
+ }
}
+ \bool_lazy_or:nnT
+ { \int_compare_p:nNn \l_tmpa_int = \c_one_int }
+ { ! \l__piton_skip_empty_lines_bool }
{ \int_gincr:N \g__piton_visual_line_int }
- \bool_if:nT
- {
- ! \str_if_eq_p:nn { #1 } { \PitonStyle { Prompt } { } }
- ||
- ( ! \l__piton_skip_empty_lines_bool && \l__piton_label_empty_lines_bool )
- }
+ \bool_lazy_or:nnT
+ { \int_compare_p:nNn \l_tmpa_int = \c_one_int }
+ { ! \l__piton_skip_empty_lines_bool && \l__piton_label_empty_lines_bool }
\__piton_print_number:
}
\clist_if_empty:NF \l__piton_bg_color_clist
{
\dim_compare:nNnT \l__piton_left_margin_dim = \c_zero_dim
- { \skip_horizontal:n { 0.5 em } }
+ { \skip_horizontal:n { 0.5 em } }
}
\coffin_typeset:Nnnnn \l_tmpa_coffin T l \c_zero_dim \c_zero_dim
}
\box_set_dp:Nn \l_tmpa_box { \box_dp:N \l_tmpa_box + 1.25 pt }
\box_set_ht:Nn \l_tmpa_box { \box_ht:N \l_tmpa_box + 1.25 pt }
+ \mode_leave_vertical:
\clist_if_empty:NTF \l__piton_bg_color_clist
{ \box_use_drop:N \l_tmpa_box }
{
@@ -339,7 +369,6 @@
\box_use_drop:N \l_tmpa_box
}
}
- \vspace { - 2.5 pt }
\group_end:
\tl_gclear:N \g__piton_begin_line_hook_tl
}
@@ -360,11 +389,12 @@
{
\int_set:Nn \l_tmpa_int { \clist_count:N #1 }
\int_set:Nn \l_tmpb_int { \int_mod:nn \g__piton_line_int \l_tmpa_int + 1 }
- \tl_set:Nx \l_tmpa_tl { \clist_item:Nn #1 \l_tmpb_int }
+ \tl_set:Ne \l_tmpa_tl { \clist_item:Nn #1 \l_tmpb_int }
\tl_if_eq:NnTF \l_tmpa_tl { none }
{ \dim_zero:N \l__piton_width_dim }
- { \exp_args:NV \__piton_color_i:n \l_tmpa_tl }
+ { \__piton_color_i:o \l_tmpa_tl }
}
+\cs_generate_variant:Nn \__piton_color_i:n { o }
\cs_set_protected:Npn \__piton_color_i:n #1
{
\tl_if_head_eq_meaning:nNTF { #1 } [
@@ -377,20 +407,23 @@
}
\cs_new_protected:Npn \__piton_newline:
{
+ \bool_if:NT \g__piton_footnote_bool \endsavenotes
\int_gincr:N \g__piton_line_int
- \int_compare:nNnT \g__piton_line_int > { \l__piton_splittable_int - 1 }
+ \par
+ \kern -2.5 pt
+ \int_case:nn
{
- \int_compare:nNnT
- { \l__piton_nb_lines_int - \g__piton_line_int + 1 } > \l__piton_splittable_int
+ \lua_now:e
{
- \egroup
- \bool_if:NT \g__piton_footnote_bool \endsavenotes
- \par
- \mode_leave_vertical:
- \bool_if:NT \g__piton_footnote_bool \savenotes
- \vtop \bgroup
+ tex.sprint
+ (
+ luatexbase.catcodetables.expl ,
+ tostring ( piton.lines_status [ \int_use:N \g__piton_line_int ] )
+ )
}
- }
+ }
+ { 1 { \penalty 100 } 2 \nobreak }
+ \bool_if:NT \g__piton_footnote_bool \savenotes
}
\cs_set_protected:Npn \__piton_breakable_space:
{
@@ -429,6 +462,7 @@
\int_new:N \l__piton_number_lines_start_int
\bool_new:N \l__piton_resume_bool
\bool_new:N \l__piton_split_on_empty_lines_bool
+\bool_new:N \l__piton_splittable_on_empty_lines_bool
\keys_define:nn { PitonOptions / marker }
{
beginning .code:n = \cs_set:Nn \__piton_marker_beginning:n { #1 } ,
@@ -492,16 +526,20 @@
}
\keys_define:nn { PitonOptions }
{
+ break-strings-anywhere .bool_set:N = \l__piton_break_strings_anywhere_bool ,
+ break-strings-anywhere .default:n = true ,
+ break-numbers-anywhere .bool_set:N = \l__piton_break_numbers_anywhere_bool ,
+ break-numbers-anywhere .default:n = true ,
detected-commands .code:n =
- \lua_now:n { piton.addDetectedCommands('#1') } ,
+ \lua_now:n { piton.addDetectedCommands('#1') } ,
detected-commands .value_required:n = true ,
detected-commands .usage:n = preamble ,
detected-beamer-commands .code:n =
- \lua_now:n { piton.addBeamerCommands('#1') } ,
+ \lua_now:n { piton.addBeamerCommands('#1') } ,
detected-beamer-commands .value_required:n = true ,
detected-beamer-commands .usage:n = preamble ,
detected-beamer-environments .code:n =
- \lua_now:n { piton.addBeamerEnvironments('#1') } ,
+ \lua_now:n { piton.addBeamerEnvironments('#1') } ,
detected-beamer-environments .value_required:n = true ,
detected-beamer-environments .usage:n = preamble ,
begin-escape .code:n =
@@ -531,10 +569,10 @@
math-comments .bool_gset:N = \g__piton_math_comments_bool ,
math-comments .default:n = true ,
math-comments .usage:n = preamble ,
- language .code:n =
- \str_set:Nx \l_piton_language_str { \str_lowercase:n { #1 } } ,
- language .value_required:n = true ,
- path .code:n =
+ language .code:n =
+ \str_set:Ne \l_piton_language_str { \str_lowercase:n { #1 } } ,
+ language .value_required:n = true ,
+ path .code:n =
\seq_clear:N \l__piton_path_seq
\clist_map_inline:nn { #1 }
{
@@ -545,6 +583,8 @@
path .initial:n = . ,
path-write .str_set:N = \l__piton_path_write_str ,
path-write .value_required:n = true ,
+ font-command .tl_set:N = \l__piton_font_command_tl ,
+ font-command .value_required:n = true ,
gobble .int_set:N = \l__piton_gobble_int ,
gobble .value_required:n = true ,
auto-gobble .code:n = \int_set:Nn \l__piton_gobble_int { -1 } ,
@@ -554,8 +594,11 @@
tabs-auto-gobble .code:n = \int_set:Nn \l__piton_gobble_int { -3 } ,
tabs-auto-gobble .value_forbidden:n = true ,
+ splittable-on-empty-lines .bool_set:N = \l__piton_splittable_on_empty_lines_bool ,
+ splittable-on-empty-lines .default:n = true ,
+
split-on-empty-lines .bool_set:N = \l__piton_split_on_empty_lines_bool ,
- split-on-empty-lines .default:n = true ,
+ split-on-empty-lines .default:n = true ,
split-separation .tl_set:N = \l__piton_split_separation_tl ,
split-separation .value_required:n = true ,
@@ -610,7 +653,8 @@
tab-size .value_required:n = true ,
show-spaces .bool_set:N = \l__piton_show_spaces_bool ,
show-spaces .value_forbidden:n = true ,
- show-spaces-in-strings .code:n = \tl_set:Nn \l__piton_space_tl { ␣ } , % U+2423
+ show-spaces-in-strings .code:n =
+ \tl_set:Nn \l__piton_space_in_string_tl { ␣ } , % U+2423
show-spaces-in-strings .value_forbidden:n = true ,
break-lines-in-Piton .bool_set:N = \l__piton_break_lines_in_Piton_bool ,
break-lines-in-Piton .default:n = true ,
@@ -650,6 +694,10 @@
} ,
range .value_required:n = true ,
+ env-used-by-split .code:n =
+ \lua_now:n { piton.env_used_by_split = '#1' } ,
+ env-used-by-split .initial:n = Piton ,
+
resume .meta:n = line-numbers/resume ,
unknown .code:n = \__piton_error:n { Unknown~key~for~PitonOptions } ,
@@ -658,11 +706,7 @@
all-line-numbers .code:n =
\bool_set_true:N \l__piton_line_numbers_bool
\bool_set_false:N \l__piton_skip_empty_lines_bool ,
- all-line-numbers .value_forbidden:n = true ,
-
- % deprecated
- numbers-sep .dim_set:N = \l__piton_numbers_sep_dim ,
- numbers-sep .value_required:n = true
+ all-line-numbers .value_forbidden:n = true
}
\cs_new_protected:Npn \__piton_in_PitonInputFile:n #1
{
@@ -700,7 +744,7 @@
\tl_if_empty:NF \g__piton_aux_tl
{
\iow_now:Nn \@mainaux { \ExplSyntaxOn }
- \iow_now:Nx \@mainaux
+ \iow_now:Ne \@mainaux
{
\tl_gset:cn { c__piton_ \int_use:N \g__piton_env_int _ tl }
{ \exp_not:o \g__piton_aux_tl }
@@ -711,7 +755,7 @@
}
\cs_new_protected:Npn \__piton_width_to_aux:
{
- \tl_gput_right:Nx \g__piton_aux_tl
+ \tl_gput_right:Ne \g__piton_aux_tl
{
\dim_set:Nn \l__piton_line_width_dim
{ \dim_eval:n { \g__piton_tmp_width_dim } }
@@ -743,15 +787,16 @@
}
\cs_new_protected:Npn \__piton_NewPitonLanguage:nnn #1 #2 #3
{
- \tl_set:Nx \l_tmpa_tl
+ \tl_set:Ne \l_tmpa_tl
{
\tl_if_blank:nF { #1 } { [ \str_lowercase:n { #1 } ] }
\str_lowercase:n { #2 }
}
\keys_set:nn { NewPitonLanguage } { #3 }
\prop_gput:Non \g__piton_languages_prop \l_tmpa_tl { #3 }
- \exp_args:NV \__piton_NewPitonLanguage:nn \l_tmpa_tl { #3 }
+ \__piton_NewPitonLanguage:on \l_tmpa_tl { #3 }
}
+\cs_generate_variant:Nn \__piton_NewPitonLanguage:nn { o }
\cs_new_protected:Npn \__piton_NewPitonLanguage:nn #1 #2
{
\hook_gput_code:nnn { begindocument } { . }
@@ -759,23 +804,27 @@
}
\cs_new_protected:Npn \__piton_NewPitonLanguage:nnnnn #1 #2 #3 #4 #5
{
- \tl_set:Nx \l_tmpa_tl
+ \tl_set:Ne \l_tmpa_tl
{
- \tl_if_blank:nF { #3 } { [ \str_lowercase:n { #3 } ] }
- \str_lowercase:n { #4 }
+ \tl_if_blank:nF { #3 } { [ \str_lowercase:n { #3 } ] }
+ \str_lowercase:n { #4 }
}
- \prop_get:NoNTF \g__piton_languages_prop \l_tmpa_tl \l_tmpb_tl
- { \__piton_NewPitonLanguage:nnno { #1 } { #2 } { #5 } \l_tmpb_tl }
- { \__piton_error:n { Language~not~defined } }
+ \prop_get:NoNTF \g__piton_languages_prop \l_tmpa_tl \l_tmpb_tl
+ { \__piton_NewPitonLanguage:nnno { #1 } { #2 } { #5 } \l_tmpb_tl }
+ { \__piton_error:n { Language~not~defined } }
}
+\cs_generate_variant:Nn \__piton_NewPitonLanguage:nnnn { n n n o }
\cs_new_protected:Npn \__piton_NewPitonLanguage:nnnn #1 #2 #3 #4
{ \__piton_NewPitonLanguage:nnn { #1 } { #2 } { #4 , #3 } }
-\cs_generate_variant:Nn \__piton_NewPitonLanguage:nnnn { n n n o }
\NewDocumentCommand { \piton } { }
{ \peek_meaning:NTF \bgroup \__piton_piton_standard \__piton_piton_verbatim }
\NewDocumentCommand { \__piton_piton_standard } { m }
{
\group_begin:
+ \bool_lazy_or:nnT
+ \l__piton_break_lines_in_piton_bool
+ \l__piton_break_strings_anywhere_bool
+ { \tl_set_eq:NN \l__piton_space_in_string_tl \space }
\automatichyphenmode = 1
\cs_set_eq:NN \\ \c_backslash_str
\cs_set_eq:NN \% \c_percent_str
@@ -783,9 +832,8 @@
\cs_set_eq:NN \} \c_right_brace_str
\cs_set_eq:NN \$ \c_dollar_str
\cs_set_eq:cN { ~ } \space
- \cs_set_protected:Npn \__piton_begin_line: { }
- \cs_set_protected:Npn \__piton_end_line: { }
- \tl_set:Nx \l_tmpa_tl
+ \cs_set_eq:NN \__piton_begin_line: \prg_do_nothing:
+ \tl_set:Ne \l_tmpa_tl
{
\lua_now:e
{ piton.ParseBis('\l_piton_language_str',token.scan_string()) }
@@ -798,20 +846,18 @@
{ \regex_replace_all:nnN { \x20 } { \x20 } \l_tmpa_tl }
}
\if_mode_math:
- \text { \ttfamily \l_tmpa_tl }
+ \text { \l__piton_font_command_tl \l_tmpa_tl }
\else:
- \ttfamily \l_tmpa_tl
+ \l__piton_font_command_tl \l_tmpa_tl
\fi:
\group_end:
}
\NewDocumentCommand { \__piton_piton_verbatim } { v }
{
\group_begin:
- \ttfamily
\automatichyphenmode = 1
- \cs_set_protected:Npn \__piton_begin_line: { }
- \cs_set_protected:Npn \__piton_end_line: { }
- \tl_set:Nx \l_tmpa_tl
+ \cs_set_eq:NN \__piton_begin_line: \prg_do_nothing:
+ \tl_set:Ne \l_tmpa_tl
{
\lua_now:e
{ piton.Parse('\l_piton_language_str',token.scan_string()) }
@@ -819,40 +865,33 @@
}
\bool_if:NT \l__piton_show_spaces_bool
{ \regex_replace_all:nnN { \x20 } { ␣ } \l_tmpa_tl } % U+2423
- \l_tmpa_tl
+ \if_mode_math:
+ \text { \l__piton_font_command_tl \l_tmpa_tl }
+ \else:
+ \l__piton_font_command_tl \l_tmpa_tl
+ \fi:
\group_end:
}
\cs_new_protected:Npn \__piton_piton:n #1
+ { \tl_if_blank:nF { #1 } { \__piton_piton_i:n { #1 } } }
+
+\cs_new_protected:Npn \__piton_piton_i:n #1
{
\group_begin:
- \cs_set_protected:Npn \__piton_begin_line: { }
- \cs_set_protected:Npn \__piton_end_line: { }
+ \cs_set_eq:NN \__piton_begin_line: \prg_do_nothing:
\cs_set:cpn { pitonStyle _ \l_piton_language_str _ Prompt } { }
\cs_set:cpn { pitonStyle _ Prompt } { }
\cs_set_eq:NN \__piton_trailing_space: \space
- \bool_lazy_or:nnTF
- \l__piton_break_lines_in_piton_bool
- \l__piton_break_lines_in_Piton_bool
- {
- \tl_set:Nx \l_tmpa_tl
- {
- \lua_now:e
- { piton.ParseTer('\l_piton_language_str',token.scan_string()) }
- { #1 }
- }
- }
+ \tl_set:Ne \l_tmpa_tl
{
- \tl_set:Nx \l_tmpa_tl
- {
- \lua_now:e
- { piton.Parse('\l_piton_language_str',token.scan_string()) }
- { #1 }
- }
+ \lua_now:e
+ { piton.ParseTer('\l_piton_language_str',token.scan_string()) }
+ { #1 }
}
\bool_if:NT \l__piton_show_spaces_bool
{ \regex_replace_all:nnN { \x20 } { ␣ } \l_tmpa_tl } % U+2423
- \exp_args:No \__piton_replace_spaces:n \l_tmpa_tl
+ \__piton_replace_spaces:o \l_tmpa_tl
\group_end:
}
\cs_new:Npn \__piton_pre_env:
@@ -870,6 +909,7 @@
\dim_zero:N \lineskip
\cs_set_eq:NN \label \__piton_label:n
}
+\cs_generate_variant:Nn \__piton_compute_left_margin:nn { n o }
\cs_new_protected:Npn \__piton_compute_left_margin:nn #1 #2
{
\bool_lazy_and:nnT \l__piton_left_margin_auto_bool \l__piton_line_numbers_bool
@@ -884,7 +924,7 @@
{ #2 }
\int_to_arabic:n
{ \g__piton_visual_line_int + \l__piton_nb_non_empty_lines_int }
- }
+ }
{
\int_to_arabic:n
{ \g__piton_visual_line_int + \l__piton_nb_lines_int }
@@ -894,7 +934,6 @@
{ \box_wd:N \l_tmpa_box + \l__piton_numbers_sep_dim + 0.1 em }
}
}
-\cs_generate_variant:Nn \__piton_compute_left_margin:nn { n o }
\cs_new_protected:Npn \__piton_compute_width:
{
\dim_compare:nNnTF \l__piton_line_width_dim = \c_zero_dim
@@ -930,14 +969,15 @@
####1
\c_backslash_str end \c_left_brace_str #1 \c_right_brace_str
}
- {
+ {
\group_end:
- \mode_if_vertical:TF { \noindent \mode_leave_vertical: } \newline
+ \mode_if_vertical:TF \noindent \newline
+ \lua_now:e { piton.CountLines ( '\lua_escape:n{##1}' ) }
\__piton_compute_left_margin:nn { CountNonEmptyLines } { ##1 }
\__piton_compute_width:
- \ttfamily
+ \l__piton_font_command_tl
\dim_zero:N \parskip
- \noindent % added 2024/08/07
+ \noindent
\str_if_empty:NTF \l__piton_path_write_str
{ \lua_now:e { piton.write = "\l__piton_write_str" } }
{
@@ -947,16 +987,16 @@
\str_if_empty:NTF \l__piton_write_str
{ \lua_now:n { piton.write = '' } }
{
- \seq_if_in:NVTF \g__piton_write_seq \l__piton_write_str
+ \seq_if_in:NoTF \g__piton_write_seq \l__piton_write_str
{ \lua_now:n { piton.write_mode = "a" } }
{
\lua_now:n { piton.write_mode = "w" }
- \seq_gput_left:NV \g__piton_write_seq \l__piton_write_str
+ \seq_gput_left:No \g__piton_write_seq \l__piton_write_str
}
}
\bool_if:NTF \l__piton_split_on_empty_lines_bool
- \__piton_gobble_split_parse:n
- \__piton_gobble_parse:n
+ \__piton_retrieve_gobble_split_parse:n
+ \__piton_retrieve_gobble_parse:n
{ ##1 }
\bool_if:NT \l__piton_width_min_bool \__piton_width_to_aux:
\end { #1 }
@@ -978,26 +1018,30 @@
{ #4 }
\AddToHook { env / #1 / begin } { \char_set_catcode_other:N \^^M }
}
-\cs_new_protected:Npn \__piton_gobble_parse:n
+\cs_new_protected:Npn \__piton_retrieve_gobble_parse:n
{
\lua_now:e
{
- piton.GobbleParse
+ piton.RetrieveGobbleParse
(
'\l_piton_language_str' ,
\int_use:N \l__piton_gobble_int ,
+ \bool_if:NTF \l__piton_splittable_on_empty_lines_bool
+ { \int_eval:n { - \l__piton_splittable_int } }
+ { \int_use:N \l__piton_splittable_int } ,
token.scan_argument ( )
)
}
}
-\cs_new_protected:Npn \__piton_gobble_split_parse:n
+\cs_new_protected:Npn \__piton_retrieve_gobble_split_parse:n
{
\lua_now:e
{
- piton.GobbleSplitParse
+ piton.RetrieveGobbleSplitParse
(
'\l_piton_language_str' ,
\int_use:N \l__piton_gobble_int ,
+ \int_use:N \l__piton_splittable_int ,
token.scan_argument ( )
)
}
@@ -1021,18 +1065,33 @@
\NewDocumentCommand { \PitonInputFileTF } { d < > O { } m m m }
{
\group_begin:
- \bool_set_false:N \l_tmpa_bool
- \seq_map_inline:Nn \l__piton_path_seq
+ \bool_if:NTF \l__piton_old_PitonInputFile_bool
+ {
+ \bool_set_false:N \l_tmpa_bool
+ \seq_map_inline:Nn \l__piton_path_seq
+ {
+ \str_set:Nn \l__piton_file_name_str { ##1 / #3 }
+ \file_if_exist:nT { \l__piton_file_name_str }
+ {
+ \__piton_input_file:nn { #1 } { #2 }
+ \bool_set_true:N \l_tmpa_bool
+ \seq_map_break:
+ }
+ }
+ \bool_if:NTF \l_tmpa_bool { #4 } { #5 }
+ }
{
- \str_set:Nn \l__piton_file_name_str { ##1 / #3 }
- \file_if_exist:nT { \l__piton_file_name_str }
+ \seq_concat:NNN
+ \l_file_search_path_seq
+ \l__piton_path_seq
+ \l_file_search_path_seq
+ \file_get_full_name:nNTF { #3 } \l__piton_file_name_str
{
\__piton_input_file:nn { #1 } { #2 }
- \bool_set_true:N \l_tmpa_bool
- \seq_map_break:
+ #4
}
+ { #5 }
}
- \bool_if:NTF \l_tmpa_bool { #4 } { #5 }
\group_end:
}
\cs_new_protected:Npn \__piton_unknown_file:n #1
@@ -1099,7 +1158,7 @@
\lua_now:e { piton.CountLinesFile ( '\l__piton_file_name_str' ) }
\__piton_compute_left_margin:no { CountNonEmptyLinesFile } \l__piton_file_name_str
\__piton_compute_width:
- \ttfamily
+ \l__piton_font_command_tl
\lua_now:e
{
piton.ParseFile(
@@ -1107,21 +1166,24 @@
'\l__piton_file_name_str' ,
\int_use:N \l__piton_first_line_int ,
\int_use:N \l__piton_last_line_int ,
+ \bool_if:NTF \l__piton_splittable_on_empty_lines_bool
+ { \int_eval:n { - \l__piton_splittable_int } }
+ { \int_use:N \l__piton_splittable_int } ,
\bool_if:NTF \l__piton_split_on_empty_lines_bool { 1 } { 0 } )
}
\bool_if:NT \l__piton_width_min_bool \__piton_width_to_aux:
\group_end:
- \exp_args:Nx \iow_log:n {(\l__piton_file_name_str)}
+ \iow_log:e {(\l__piton_file_name_str)}
\tl_if_novalue:nF { #1 }
{ \bool_if:NT \g__piton_beamer_bool { \end { uncoverenv } } }
\__piton_write_aux:
}
\cs_new_protected:Npn \__piton_compute_range:
{
- \str_set:Nx \l_tmpa_str { \__piton_marker_beginning:n \l__piton_begin_range_str }
- \str_set:Nx \l_tmpb_str { \__piton_marker_end:n \l__piton_end_range_str }
- \exp_args:NnV \regex_replace_all:nnN { \\\# } \c_hash_str \l_tmpa_str
- \exp_args:NnV \regex_replace_all:nnN { \\\# } \c_hash_str \l_tmpb_str
+ \str_set:Ne \l_tmpa_str { \__piton_marker_beginning:n \l__piton_begin_range_str }
+ \str_set:Ne \l_tmpb_str { \__piton_marker_end:n \l__piton_end_range_str }
+ \regex_replace_all:nVN { \\\# } \c_hash_str \l_tmpa_str
+ \regex_replace_all:nVN { \\\# } \c_hash_str \l_tmpb_str
\lua_now:e
{
piton.ComputeRange
@@ -1136,7 +1198,7 @@
\NewDocumentCommand { \SetPitonStyle } { O { } m }
{
\str_clear_new:N \l__piton_SetPitonStyle_option_str
- \str_set:Nx \l__piton_SetPitonStyle_option_str { \str_lowercase:n { #1 } }
+ \str_set:Ne \l__piton_SetPitonStyle_option_str { \str_lowercase:n { #1 } }
\str_if_eq:onT \l__piton_SetPitonStyle_option_str { current-language }
{ \str_set_eq:NN \l__piton_SetPitonStyle_option_str \l_piton_language_str }
\keys_set:nn { piton / Styles } { #2 }
@@ -1177,6 +1239,7 @@
Name.Table ,
Name.Type ,
Number ,
+ Number.Internal ,
Operator ,
Operator.Word ,
Preproc ,
@@ -1184,7 +1247,9 @@
String.Doc ,
String.Interpol ,
String.Long ,
+ String.Long.Internal ,
String.Short ,
+ String.Short.Internal ,
Tag ,
TypeParameter ,
UserFunction ,
@@ -1198,14 +1263,14 @@
{
#1 .value_required:n = true ,
#1 .code:n =
- \tl_set:cn
- {
- pitonStyle _
- \str_if_empty:NF \l__piton_SetPitonStyle_option_str
- { \l__piton_SetPitonStyle_option_str _ }
- #1
- }
- { ##1 }
+ \tl_set:cn
+ {
+ pitonStyle _
+ \str_if_empty:NF \l__piton_SetPitonStyle_option_str
+ { \l__piton_SetPitonStyle_option_str _ }
+ #1
+ }
+ { ##1 }
}
}
@@ -1213,15 +1278,14 @@
{
String .meta:n = { String.Long = #1 , String.Short = #1 } ,
Comment.Math .tl_set:c = pitonStyle _ Comment.Math ,
- ParseAgain .tl_set:c = pitonStyle _ ParseAgain ,
- ParseAgain .value_required:n = true ,
unknown .code:n =
\__piton_error:n { Unknown~key~for~SetPitonStyle }
}
\SetPitonStyle[OCaml]
{
TypeExpression =
- \SetPitonStyle { Identifier = \PitonStyle { Name.Type } } \__piton_piton:n
+ \SetPitonStyle { Identifier = \PitonStyle { Name.Type } }
+ \__piton_piton:n ,
}
\clist_gput_left:Nn \g__piton_styles_clist { String }
\clist_gsort:Nn \g__piton_styles_clist
@@ -1230,47 +1294,88 @@
\sort_return_same:
\sort_return_swapped:
}
+\cs_set_eq:NN \__piton_break_strings_anywhere:n \prg_do_nothing:
+
+\cs_set_eq:NN \__piton_break_numbers_anywhere:n \prg_do_nothing:
+
+\cs_new_protected:Npn \__piton_actually_break_anywhere:n #1
+ {
+ \tl_set:Nn \l_tmpa_tl { #1 }
+ \regex_replace_all:nnN { \x20 } { \c { space } } \l_tmpa_tl
+ \tl_map_inline:Nn \l_tmpa_tl
+ { \seq_put_right:Nn \l_tmpa_seq { ##1 } }
+ \seq_use:Nn \l_tmpa_seq { \- }
+ }
+\cs_new_protected:Npn \__piton_string_long:n #1
+ {
+ \PitonStyle { String.Long }
+ {
+ \bool_if:NT \l__piton_break_strings_anywhere_bool
+ { \__piton_actually_break_anywhere:n }
+ { #1 }
+ }
+ }
+\cs_new_protected:Npn \__piton_string_short:n #1
+ {
+ \PitonStyle { String.Short }
+ {
+ \bool_if:NT \l__piton_break_strings_anywhere_bool
+ { \__piton_actually_break_anywhere:n }
+ { #1 }
+ }
+ }
+\cs_new_protected:Npn \__piton_number:n #1
+ {
+ \PitonStyle { Number }
+ {
+ \bool_if:NT \l__piton_break_numbers_anywhere_bool
+ { \__piton_actually_break_anywhere:n }
+ { #1 }
+ }
+ }
\SetPitonStyle
{
- Comment = \color[HTML]{0099FF} \itshape ,
- Exception = \color[HTML]{CC0000} ,
- Keyword = \color[HTML]{006699} \bfseries ,
- Keyword.Governing = \color[HTML]{006699} \bfseries ,
- Keyword.Constant = \color[HTML]{006699} \bfseries ,
- Name.Builtin = \color[HTML]{336666} ,
- Name.Decorator = \color[HTML]{9999FF},
- Name.Class = \color[HTML]{00AA88} \bfseries ,
- Name.Function = \color[HTML]{CC00FF} ,
- Name.Namespace = \color[HTML]{00CCFF} ,
- Name.Constructor = \color[HTML]{006000} \bfseries ,
- Name.Field = \color[HTML]{AA6600} ,
- Name.Module = \color[HTML]{0060A0} \bfseries ,
- Name.Table = \color[HTML]{309030} ,
- Number = \color[HTML]{FF6600} ,
- Operator = \color[HTML]{555555} ,
- Operator.Word = \bfseries ,
- String = \color[HTML]{CC3300} ,
- String.Doc = \color[HTML]{CC3300} \itshape ,
- String.Interpol = \color[HTML]{AA0000} ,
- Comment.LaTeX = \normalfont \color[rgb]{.468,.532,.6} ,
- Name.Type = \color[HTML]{336666} ,
- InitialValues = \__piton_piton:n ,
- Interpol.Inside = \color{black}\__piton_piton:n ,
- TypeParameter = \color[HTML]{336666} \itshape ,
- Preproc = \color[HTML]{AA6600} \slshape ,
- Identifier.Internal = \__piton_identifier:n ,
- Identifier = ,
- Directive = \color[HTML]{AA6600} ,
- Tag = \colorbox{gray!10},
- UserFunction = ,
- Prompt = ,
- ParseAgain = \__piton_piton_no_cr:n ,
- Discard = \use_none:n
- }
-\AtBeginDocument
+ Comment = \color[HTML]{0099FF} \itshape ,
+ Exception = \color[HTML]{CC0000} ,
+ Keyword = \color[HTML]{006699} \bfseries ,
+ Keyword.Governing = \color[HTML]{006699} \bfseries ,
+ Keyword.Constant = \color[HTML]{006699} \bfseries ,
+ Name.Builtin = \color[HTML]{336666} ,
+ Name.Decorator = \color[HTML]{9999FF},
+ Name.Class = \color[HTML]{00AA88} \bfseries ,
+ Name.Function = \color[HTML]{CC00FF} ,
+ Name.Namespace = \color[HTML]{00CCFF} ,
+ Name.Constructor = \color[HTML]{006000} \bfseries ,
+ Name.Field = \color[HTML]{AA6600} ,
+ Name.Module = \color[HTML]{0060A0} \bfseries ,
+ Name.Table = \color[HTML]{309030} ,
+ Number = \color[HTML]{FF6600} ,
+ Number.Internal = \__piton_number:n ,
+ Operator = \color[HTML]{555555} ,
+ Operator.Word = \bfseries ,
+ String = \color[HTML]{CC3300} ,
+ String.Long.Internal = \__piton_string_long:n ,
+ String.Short.Internal = \__piton_string_short:n ,
+ String.Doc = \color[HTML]{CC3300} \itshape ,
+ String.Interpol = \color[HTML]{AA0000} ,
+ Comment.LaTeX = \normalfont \color[rgb]{.468,.532,.6} ,
+ Name.Type = \color[HTML]{336666} ,
+ InitialValues = \__piton_piton:n ,
+ Interpol.Inside = \l__piton_font_command_tl \__piton_piton:n ,
+ TypeParameter = \color[HTML]{336666} \itshape ,
+ Preproc = \color[HTML]{AA6600} \slshape ,
+ Identifier.Internal = \__piton_identifier:n ,
+ Identifier = ,
+ Directive = \color[HTML]{AA6600} ,
+ Tag = \colorbox{gray!10},
+ UserFunction = \PitonStyle{Identifier} ,
+ Prompt = ,
+ Discard = \use_none:n
+ }
+\hook_gput_code:nnn { begindocument } { . }
{
\bool_if:NT \g__piton_math_comments_bool
- { \SetPitonStyle { Comment.Math = \__piton_math_scantokens:n } }
+ { \SetPitonStyle { Comment.Math = \__piton_math_scantokens:n } }
}
\NewDocumentCommand { \SetPitonIdentifier } { o m m }
{
@@ -1281,7 +1386,7 @@
{ \cs_set:cpn { PitonIdentifier _ ##1 } { #3 } }
}
{
- \str_set:Nx \l_tmpa_str { \str_lowercase:n { #1 } }
+ \str_set:Ne \l_tmpa_str { \str_lowercase:n { #1 } }
\str_if_eq:onT \l_tmpa_str { current-language }
{ \str_set_eq:NN \l_tmpa_str \l_piton_language_str }
\clist_map_inline:Nn \l_tmpa_clist
@@ -1293,7 +1398,7 @@
\cs_if_exist_use:cF { PitonIdentifier _ \l_piton_language_str _ #1 }
{
\cs_if_exist_use:cF { PitonIdentifier _ #1 }
- { \PitonStyle { Identifier } }
+ { \PitonStyle { Identifier } }
}
{ #1 }
}
@@ -1305,8 +1410,8 @@
\seq_if_exist:cF { g__piton_functions _ \l_piton_language_str _ seq }
{ \seq_new:c { g__piton_functions _ \l_piton_language_str _ seq } }
\seq_gput_right:cn { g__piton_functions _ \l_piton_language_str _ seq } { #1 }
- \seq_if_in:NVF \g__piton_languages_seq \l_piton_language_str
- { \seq_gput_left:NV \g__piton_languages_seq \l_piton_language_str }
+ \seq_if_in:NoF \g__piton_languages_seq \l_piton_language_str
+ { \seq_gput_left:No \g__piton_languages_seq \l_piton_language_str }
}
\NewDocumentCommand \PitonClearUserFunctions { ! o }
{
@@ -1322,7 +1427,8 @@
{ \seq_gremove_all:Nn \g__piton_languages_seq { ##1 } }
}
\cs_new_protected:Npn \__piton_clear_functions_i:n #1
- { \exp_args:Ne \__piton_clear_functions_ii:n { \str_lowercase:n { #1 } } }
+ { \__piton_clear_functions_ii:n { \str_lowercase:n { #1 } } }
+\cs_generate_variant:Nn \__piton_clear_functions_ii:n { e }
\cs_new_protected:Npn \__piton_clear_functions_ii:n #1
{
\seq_if_exist:cT { g__piton_functions _ #1 _ seq }
@@ -1343,7 +1449,7 @@
\seq_gclear:N \g__piton_languages_seq
}
\AddToHook { env / piton / begin }
- { \msg_fatal:nn { piton } { No~environment~piton } }
+ { \__piton_fatal:n { No~environment~piton } }
\msg_new:nnn { piton } { No~environment~piton }
{
@@ -1413,7 +1519,7 @@
\__piton_msg_new:nn { SyntaxError }
{
Syntax~Error.\\
- Your~code~of~the~language~"\l_piton_language_str"~is~not~
+ Your~code~of~the~language~'\l_piton_language_str'~is~not~
syntactically~correct.\\
It~won't~be~printed~in~the~PDF~file.
}
@@ -1460,6 +1566,8 @@
break-lines,~
break-lines-in-piton,~
break-lines-in-Piton,~
+ break-numbers-anywhere,~
+ break-strings-anywhere,~
continuation-symbol,~
continuation-symbol-on-indentation,~
detected-beamer-commands,~
@@ -1468,6 +1576,8 @@
end-of-broken-line,~
end-range,~
env-gobble,~
+ env-used-by-split,~
+ font-command,~
gobble,~
indent-broken-lines,~
language,~
@@ -1482,6 +1592,7 @@
show-spaces,~
show-spaces-in-strings,~
splittable,~
+ splittable-on-empty-lines,~
split-on-empty-lines,~
split-separation,~
tabs-auto-gobble,~
@@ -1503,7 +1614,7 @@
}
\cs_new_protected:Npn \__piton_test_version:n #1
{
- \str_if_eq:VnF \PitonFileVersion { #1 }
+ \str_if_eq:onF \PitonFileVersion { #1 }
{ \__piton_error:n { bad~version~of~piton.lua } }
}
\hook_gput_code:nnn { begindocument } { . }
@@ -1520,28 +1631,30 @@
lpeg.locale(lpeg)
local P , alpha , C , space , S , V
= lpeg.P , lpeg.alpha , lpeg.C , lpeg.space , lpeg.S , lpeg.V
- local function add(...)
- local s = P ( false )
- for _ , x in ipairs({...}) do s = s + x end
- return s
- end
+ local add
+ function add(...)
+ local s = P ( false )
+ for _ , x in ipairs({...}) do s = s + x end
+ return s
+ end
local my_lpeg =
P { "E" ,
E = ( V "F" * ( "," * V "F" ) ^ 0 ) / add ,
F = space ^ 0 * ( ( alpha ^ 1 ) / "\\%0" ) * space ^ 0
}
- function piton.addDetectedCommands( key_value )
+ function piton.addDetectedCommands ( key_value )
piton.DetectedCommands = piton.DetectedCommands + my_lpeg : match ( key_value )
end
function piton.addBeamerCommands( key_value )
piton.BeamerCommands
= piton.BeamerCommands + my_lpeg : match ( key_value )
end
- local function insert(...)
- local s = piton.beamer_environments
- for _ , x in ipairs({...}) do table.insert(s,x) end
- return s
- end
+ local insert
+ function insert(...)
+ local s = piton.beamer_environments
+ for _ , x in ipairs({...}) do table.insert(s,x) end
+ return s
+ end
local my_lpeg_bis =
P { "E" ,
E = ( V "F" * ( "," * V "F" ) ^ 0 ) / insert ,
diff --git a/Master/texmf-dist/tex/lualatex/plantuml/plantuml.lua b/Master/texmf-dist/tex/lualatex/plantuml/plantuml.lua
index 7edb923d6b1..8bb14c8abbd 100644
--- a/Master/texmf-dist/tex/lualatex/plantuml/plantuml.lua
+++ b/Master/texmf-dist/tex/lualatex/plantuml/plantuml.lua
@@ -7,9 +7,6 @@ function convertPlantUmlToTikz(jobname, mode)
local plantUmlSourceFilename = jobname .. "-plantuml.txt"
local plantUmlTargetFilename = jobname .. "-plantuml." .. mode
- -- delete generated file to ensure they are really recreated
- os.remove(plantUmlTargetFilename)
-
if not (lfs.attributes(plantUmlSourceFilename)) then
texio.write_nl("Source " .. plantUmlSourceFilename .. " does not exist.")
return
@@ -25,9 +22,15 @@ function convertPlantUmlToTikz(jobname, mode)
local cmd = "java -Djava.awt.headless=true -jar " .. plantUmlJar .. " -charset UTF-8 -t"
if (mode == "latex") then
cmd = cmd .. "latex:nopreamble"
+ -- plantuml has changed output format in https://github.com/plantuml/plantuml/pull/1237
+ plantUmlTargetFilename = jobname .. "-plantuml.tex"
else
cmd = cmd .. mode
end
+
+ -- delete generated file to ensure they are really recreated
+ os.remove(plantUmlTargetFilename)
+
cmd = cmd .. " " .. plantUmlSourceFilename
texio.write_nl(cmd)
local handle,error = io.popen(cmd)
diff --git a/Master/texmf-dist/tex/lualatex/plantuml/plantuml.sty b/Master/texmf-dist/tex/lualatex/plantuml/plantuml.sty
index bb978dfa9c6..20cb27760a3 100644
--- a/Master/texmf-dist/tex/lualatex/plantuml/plantuml.sty
+++ b/Master/texmf-dist/tex/lualatex/plantuml/plantuml.sty
@@ -1,9 +1,9 @@
-%% Copyright (C) 2018-2023 Oliver Kopp, https://github.com/koppor
+%% Copyright (C) 2018-2025 Oliver Kopp, https://github.com/koppor
%%
%% SPDX-License-Identifier: LPPL-1.3c+
\NeedsTeXFormat{LaTeX2e}\relax
\ProvidesPackage{plantuml}
- [2023/05/12 v0.3.2
+ [2024/05/17 v0.5.0
Embed PlantUML diagrams in latex documents.]
% Required by PlantUML LaTeX output
@@ -24,9 +24,11 @@
\RequirePackage{adjustbox}
+\newcounter{PlantUmlFigureNumberSVG}
+\def\UMLcountUp{\stepcounter{PlantUmlFigureNumberSVG} \def\PlantUMLJobname{PlantUML\thePlantUmlFigureNumberSVG}}
% \jobname has an encoding issue if the .tex filename includes a multibyte string.
% One needs to redefine PlantUMLJobname to fix it
-\def\PlantUMLJobname{\jobname}
+\def\PlantUMLJobname{\jobname\thePlantUmlFigureNumberSVG}
\ExplSyntaxOn
\keys_define:nn { plantuml } {
@@ -52,8 +54,14 @@
\ifluatex
\RequirePackage{luacode}
+ \directlua{
+ local lfs = require("lfs")
+ local currentdir = lfs.currentdir():gsub("\\", "/")
+ tex.sprint("\\newcommand\\CurrentDirectory{" .. currentdir .. "/}")
+ }
\else
\RequirePackage[usefamily=bash]{pythontex}
+ \newcommand{\CurrentDirectory}{}
\fi
\makeatletter
@@ -72,7 +80,7 @@
}
\fi
\NewDocumentEnvironment{plantuml}{}{%
- \VerbatimOut{\PlantUMLJobname-plantuml.txt}}
+ \VerbatimOut{\CurrentDirectory\PlantUMLJobname-plantuml.txt}}
{%
\endVerbatimOut
\ifluatex
@@ -93,6 +101,7 @@
\end{adjustbox}
}{
\includegraphics[width=\maxwidth{\textwidth}]{\PlantUMLJobname-plantuml.\PlantUmlMode}
+ \UMLcountUp
}
}
\or
@@ -102,4 +111,3 @@
}{}
\fi
\makeatother
-
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-AU.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-AU.lua
index be3a46360fc..55f5b1b887c 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-AU.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-AU.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-AU'] = {
- version = 0.58,
+ version = 0.64,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua
index 6eabbf472f2..f5ff19993cf 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua
@@ -11,7 +11,7 @@
-- configuration for index files of the Heidelberger Akademie der Wissenschaften
if not modules then modules = { } end modules ['xindex-HAdW-eKO'] = {
- version = 0.58,
+ version = 0.64,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-RU.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-RU.lua
index 7cfb9627b62..461a9f4cae6 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-RU.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-RU.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-RU'] = {
- version = 0.58,
+ version = 0.64,
comment = "configuration to xindex.lua",
author = "Alexey Kuznetzov",
copyright = "Herbert Voß",
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua
index 77fc6894c9c..8c9872b407a 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua
@@ -8,7 +8,7 @@
-- $Id: xindex-base.lua 22 2022-02-07 12:18:15Z hvoss $
-----------------------------------------------------------------------
-local info = { version = 0.60 }
+local info = { version = 0.64 }
-- check config
if pageNoPrefixDel ~= "" then
@@ -53,13 +53,13 @@ hyperpage, lines = checkHyperpage(lines) -- hyperref used?
if hyperpage
then writeLog(1,"We have hyperpages.\n",1)
else writeLog(1,"We have no hyperpages.\n",1)
- end
+end
--print("Presort of \\indexentry lines")
--table.sort(lines) -- no presort to keep macros inserted by \writeidx
if vlevel > 1 then
- writeLog(1,"--------------- Input data (mot sorted) ----------------\n",2)
+ writeLog(1,"--------------- Input data (not sorted) ----------------\n",2)
for _,l in pairs(lines) do writeLog(1,l.."\n",2) end
writeLog(1,"--------------- end Input data -------------------------\n",2)
end
@@ -95,11 +95,17 @@ for k,v in ipairs(lines) do
end
writeLog(1,"... done\n",0)
-writeLog(1,"------------------ Start list after getEntryAndPage() ------------------------\n,",2)
+writeLog(1,"------------------ Start list after getEntryAndPage() ------------------------\n",2)
printList(Index,2)
writeLog(1,"\n------------------ end list after getEntryAndPage() ------------------------\n",2)
writeLog(2,"Sorting entries: for LARGE idx files it can take some minutes ... \n",0)
+writeLog(1,"\n------------------ Start list before table.sort(Hooks and UTFCompare)------------\n",2)
+printList(Index,2)
+writeLog(1,require 'xindex-pretty'.dump(Index),3) -- only for internal dump
+writeLog(1,"\n------------------ end list before table.sort(Hooks and UTFCompare)------------\n",2)
+
+
if SORTprehook then
writeLog(2, "PreHook begin\n", 0)
Index = SORTprehook(Index)
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-baselib.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-baselib.lua
index fd7326efd1c..e90192c21a4 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-baselib.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-baselib.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-baselib'] = {
- version = 0.60,
+ version = 0.64,
comment = "base library to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua
index 15c326c3bc6..cac842c0dd1 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg-common'] = {
- version = 0.60,
+ version = 0.64,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-no_uca.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-no_uca.lua
index d337047a1b7..3cb5209d57b 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-no_uca.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-no_uca.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.60,
+ version = 0.64,
comment = "main configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-uca.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-uca.lua
index d7ab1f4224e..2e5aae5a646 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-uca.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-uca.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg-lua'] = {
- version = 0.60,
+ version = 0.64,
comment = "configuration to xindex-cfg-uca.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
@@ -17,21 +17,30 @@ if not modules then modules = { } end modules ['xindex-cfg-lua'] = {
}
languages.fr = function(collator_obj)
+ print("Using languages.fr")
-- reverse search for accents in French (recommended):
collator_obj.accents_backward = true
-- accents: sorting order in French
local tailoring = function(s) collator_obj:tailor_string(s) end
tailoring("&æ=ae")
+ tailoring("&Æ=AE")
tailoring("&œ=oe")
+ tailoring("&Œ=OE")
+ tailoring("&Œ<œ")
tailoring("&th<þ<<<Þ") -- Canadian, see SGQRI004.pdf
+ tailoring("&a<<<A<<á<<<Á<<à<<<À<<â<<<Â<<ä<<<Ä")
+ tailoring("&o<<<O<<ó<<<Ó<<ò<<<Ò<<ô<<<Ô<<ö<<<Ö")
+ tailoring("&e<<<E<<é<<<É<<è<<<È<<ê<<<Ê")
-- lowercase before uppercase in French
- --collator_obj:uppercase_first()
+ -- collator_obj:uppercase_first()
return collator_obj
end
+-- tailoring("&ǀ<æ<<<Æ<<ä<<<Ä<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<å<<<Å<<<aa<<<Aa<<<AA")
-- put any additional code for lua-uca here ---
languages.no = function(collator_obj)
+ print("Using languages.no")
local tailoring = function(s) collator_obj:tailor_string(s) end
collator_obj:uppercase_first()
-- tailoring("&[before 1]b<á<<<Á")
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-danteedition.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-danteedition.lua
index a17cfc77fa6..e3708fea094 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-danteedition.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-danteedition.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.58,
+ version = 0.64,
comment = "configuration file for the DANTE Edition",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua
index 332813ce022..b0f3fe34785 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.58,
+ version = 0.64,
comment = "DTK configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua
index 595ffc2dd7a..4a6b0295483 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-lib'] = {
- version = 0.60,
+ version = 0.64,
comment = "main library to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
@@ -238,12 +238,22 @@ function checkParenthesis(Entries) -- search for |( ... |) entries
firstPage = v["pages"][1]["number"]
elseif paraClose then
lastPage = v["pages"][1]["number"]
- newEntries[#newEntries+1] = { Entry = v["Entry"],
- pages = {{ number = firstPage..rangeSymbol..lastPage,
+ if (firstPage == 0) or (firstPage == lastPage) then
+ newEntries[#newEntries+1] = { Entry = v["Entry"],
+ pages = {{ number = lastPage,
special = deleteOpenClose(v["pages"][1]["special"])}},
sortChar= v["sortChar"],
Macro = v["Macro"]
}
+ else
+ newEntries[#newEntries+1] = { Entry = v["Entry"],
+ pages = {{ number = firstPage..rangeSymbol..lastPage,
+ special = deleteOpenClose(v["pages"][1]["special"])}},
+ sortChar= v["sortChar"],
+ Macro = v["Macro"]
+ }
+ end
+ print("firstPage = "..firstPage)
firstPage = 0
elseif ((firstPage == 0) and not paraClose) then
newEntries[#newEntries+1] = v -- same Entry with greater page or new entry
@@ -296,7 +306,8 @@ function getEntryAndPage(w, nextW, EntryList)
--print("Entry:"..EntryList[#EntryList]["sortChar"])
if args_v then
if Special == "" then Special = "-" end
- writeLog(1,"getEntryAndPage: "..tostring(IndexString,pageNo,Special,utf.sub(IndexString,1,1),macro).."\n",2)
+ writeLog(1,"getEntryAndPage: "..
+ tostring(IndexString,pageNo,Special,utf.sub(IndexString,1,1),macro).."\n",2)
end
return EntryList
end
@@ -305,6 +316,7 @@ function compressEntryList(EntryList)
-- require 'xindex-pretty'.dump(EntryList) -- only for internal dump
local newList = {}
newList[1] = EntryList[1] -- at least one entry
+ print("----------------- start compressEntryList ----------------")
local nPages = 1
for k=2,#EntryList do
if EntryList[k] then -- exists?
@@ -349,7 +361,6 @@ EntryList[2] = {
}
]]
-
function deletePageDups(pages)
if #pages == 1 then return pages end
local newPages = {pages[1]}
@@ -372,7 +383,7 @@ end
function compressPageList(pages) -- called with (v["pages"])
writeLog(1,"compressPageList: we have "..#pages.." pages for this entry\n",2)
--- require 'xindex-pretty'.dump(pages) -- only for internal dump
+ --print(require 'xindex-pretty'.dump(pages)) -- only for internal dump
pages = deletePageDups(pages) -- delete duplicate page numbers with same special
local str
if #pages == 1 then -- only one pageno
@@ -392,6 +403,26 @@ function compressPageList(pages) -- called with (v["pages"])
-- (pages[1]["special"] == pages[2]["special"]) then
-- pages[2] = nil
end
+ else -- pages are not numbers
+ rangeStartA,rangeEndA = pages[1]["number"]:find("-") or 0,0
+ rangeStartB,rangeEndB = pages[2]["number"]:find("-") or 0,0
+ if rangeStartA > 1 then
+ pageA = pages[1]["number"]:gmatch("([^-]+)")(1) -- split 12--44 into 12
+ pageB = pages[2]["number"]
+ if pageA > pageB then -- change pages
+ local temp = pages[1]["number"]
+ pages[1]["number"] = pages[2]["number"]
+ pages[2]["number"] = temp
+ end
+ elseif rangeStartB > 1 then -- change pages
+ pageA = pages[1]["number"]
+ pageB = pages[2]["number"]:gmatch("([^-]+)")(1) -- split 12--44 into 12
+ if pageA > pageB then
+ local temp = pages[1]["number"]
+ pages[1]["number"] = pages[2]["number"]
+ pages[2]["number"] = temp
+ end
+ end
end
return pages
end
@@ -409,7 +440,7 @@ function compressPageList(pages) -- called with (v["pages"])
series = {pages[2]}
startIndex = 3
end
-if args_v then print ("compressPageList: more than two pages for the entry\n") end
+ if args_v then print ("compressPageList: more than two pages for the entry\n") end
for i=startIndex,#pages do
if (toNumber(pages[i-1]["number"]) and toNumber(pages[i]["number"])) then -- do we have two arabic or two roman numbers?
if ((toNumber(pages[i]["number"])-toNumber(pages[i-1]["number"])) == 1) and
@@ -557,7 +588,7 @@ function GenerateSortKey(a)
Apage = string.format("%09d",romanToNumber(a["pages"][1]["number"]))
end
else
- Apage = string.format("%09s",a["pages"][1]["number"])
+ Apage = "AAA" .. string.format("%09s",a["pages"][1]["number"])
end
if no_caseSensitive then
A = NormalizedUpper(getSortString(a["Entry"].." "..Apage..a["pages"][1]["special"]):gsub('!',' ')) -- replace! by empty
@@ -603,24 +634,32 @@ function GenerateSortKeys(Index)
end
end
+-- Entry = "Johann", -- the index item foo@bar
+-- pages = { -- the page number(s) and the part after |
+-- { number = 111,
+
+
function UCACompare(a,b)
+ local pageA = a["pages"][1]["number"]
+ local pageB = b["pages"][1]["number"]
if ignoreSpace then
- A = a["Entry"]:gsub("%s+", "") -- str = str:gsub("%s+", "")
- B = b["Entry"]:gsub("%s+", "")
+ A = a["Entry"]:gsub("%s+", "")..tostring(pageA) -- str = str:gsub("%s+", "")
+ B = b["Entry"]:gsub("%s+", "")..tostring(pageB)
else
- A = a["Entry"]
- B = b["Entry"]
+ A = a["Entry"]..tostring(pageA)
+ B = b["Entry"]..tostring(pageB)
end
+ if A==B then return True end
--print(A,B)
compare = collator_obj:compare_strings(A,B)
- writeLog(1,"UCACompare: "..A.."<"..B.." : "..tostring(compare).."\n",2)
+-- writeLog(1,"UCACompare: "..A.."<"..B.." : "..tostring(compare).."\n",2)
return compare
end
function UTFCompare(a,b)
local A = a["SortKey"]
local B = b["SortKey"]
- writeLog(1,"UTFCompare: "..A.."<"..B.." : "..tostring(A<B).."\n",2)
+-- writeLog(1,"UTFCompare: "..A.."<"..B.." : "..tostring(A<B).."\n",2)
return A<B
end
@@ -729,7 +768,7 @@ function getPageList(v,hyperpage)
else
Pages = compressPageList(v["pages"])
end
--- require 'xindex-pretty'.dump(Pages) -- only for internal dump
+-- print(require 'xindex-pretty'.dump(Pages)) -- only for internal dump
local pageNo
--[[
\indexentry{Auto|hyperindexformat{\textbf}}{1}
@@ -739,18 +778,17 @@ function getPageList(v,hyperpage)
\item foo, \hyperpage{1\nohyperpage{f}},
\hyperpage{4\nohyperpage{ff}}, \hyperpage{8}
-
]]
if hyperpage then
- if string.find(v["pages"][1]["special"],"hyperindexformat") then
--- pageNo = v["pages"][1]["special"].."{"..checkFF(Pages[1]["number"].."}")
- pageNo = v["pages"][1]["special"].."{"..Pages[1]["number"].."}"
+ if string.find(Pages[1]["special"],"hyperindexformat") then
+-- pageNo = Pages[1]["special"].."{"..checkFF(Pages[1]["number"].."}")
+ pageNo = Pages[1]["special"].."{"..Pages[1]["number"].."}"
else
pageNo = "\\hyperpage{"..checkFF(Pages[1]["number"]).."}"
end
for i=2,#Pages do
- if string.find(v["pages"][i]["special"],"hyperindexformat") then
- pageNo = pageNo..", "..v["pages"][i]["special"].."{"..Pages[i]["number"].."}"
+ if string.find(Pages[i]["special"],"hyperindexformat") then
+ pageNo = pageNo..", "..Pages[i]["special"].."{"..Pages[i]["number"].."}"
-- pageNo = pageNo..", "..v["pages"][i]["special"].."{"..checkFF(Pages[i]["number"].."}")
else
pageNo = pageNo..", \\hyperpage{"..checkFF(Pages[i]["number"]).."}"
@@ -804,8 +842,9 @@ end
function checkHyperpage(lines)
local hyperpage = false
+ local l
for i=1,#lines do
- if string.find(lines[i],'hyperpage}') then
+ if string.find(lines[i],'hyperpage}') or string.find(lines[i],'hyperindexformat}') then
hyperpage = true
break
end
@@ -816,49 +855,49 @@ function checkHyperpage(lines)
-- hyperref ignores the vertical bar in "| and also other escape chars
--
-- \index{"|} -> \indexentry{"|hyperpage}{1} -> \textbar|hyperpage
- -- \index{foo"|bar} -> \indexentry{foo"|hyperindexformat{\bar}}{1} -> foo\textbar bar|hyperpage
+ -- \index{foo"|bar} -> \indexentry{foo"||hyperindexformat{\bar}}{1} -> foo\textbar bar|hyperpage
end
local sub_str0 = esc_char..'|hyperpage'
local sub_str1 = esc_char..'|hyperindexformat'
for i=1,#lines do
- local l = lines[i]
+ l = lines[i]
if fix_hyperref then
- s0 = l:find(sub_str0) -- test for hyperpage
- s1 = l:find(esc_char..sub_str0)
- --print(i,l,s0,s1)
+ s0 = l:find(sub_str0) -- test for "|hyperpage
+ s1 = l:find(esc_char..sub_str0) -- test for ”"|hyperpage
if s0 == nil then
s0 = 0
s1 = 0
end
if s1 == nil and s0 > 0 then -- no ""|
- l = l:gsub(sub_str0, '\\textbar|hyperpage') -- "| -> \textbar
- else
- -- part 2
- s0 = l:find(sub_str1)
- s1 = l:find(esc_char..sub_str1)
- --print(i,l,s0,s1)
- if s0 == nil then
+ l = l:gsub(sub_str0, '\\textbar|hyperpage') -- "|hyperpage -> \textbar|hyperpage
+ end
+ -- part 2
+ s0 = l:find(sub_str1) -- look for "|hyperindexformat
+ s1 = l:find(esc_char..sub_str1) -- look for ""|hyperindexformat
+ --print(i,l,s0,s1)
+ if s0 == nil then
s0 = 0
s1 = 0
- elseif s1 == nil then
+ elseif s1 == nil then
s1 = 0
- end
- if s1 == 0 and s0 > 0 then
+ end
+ if s1 == 0 and s0 > 0 then -- found "|hyperindexformat
-- get foo and bar from {foo"|hyperindexformat{\bar}}
- items = l:gmatch("%{(.-)%}")
- var = {}
- for item in items do
+ -- \indexentry{marriage|hyperindexformat{\seealso{coemptio}}}{301}
+ items = l:gmatch("%{(.-)%}")
+ var = {}
+ for item in items do
var[#var+1] = item
- end
- if s0 > 2 then
+ end
+ if s0 > 2 then
u1 = var[1]:split('"|')[1] -- foo
- else
+ else
u1 = ''
- end
- v1 = var[1]:split("\\")[2] -- bar
- l = '{'..u1..'\\textbar '..v1.."|hyperpage}{"..var[2].."}"
- -- l = foo"|bar -> foo\textbar bar
end
+ v1 = var[1]:split("\\")[2] -- bar
+ print(u1,v1,var[1],var[2])
+ l = '{'..u1..'\\textbar '..v1.."|hyperindexformat}{"..var[2].."}"
+ -- l = foo"|bar -> foo\textbar bar
end
end
lines[i] = string.gsub(l,'|?hyperpage}{','}{')
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-norsk.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-norsk.lua
index 4ed26641421..b6364dfbdd7 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-norsk.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-norsk.lua
@@ -10,7 +10,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-no'] = {
- version = 0.58,
+ version = 0.64,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua
index 59d96d889fc..b902b2a28c3 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua
@@ -7,7 +7,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-pretty'] = {
- version = 0.58,
+ version = 0.64,
comment = "dump a Lua table for debugging",
author = "Steve Donovan",
copyright = "Steve Donovan",
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-yannis.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-yannis.lua
index 350102aa6cb..dcd558cb618 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-yannis.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-yannis.lua
@@ -9,7 +9,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-yannis'] = {
- version = 0.58,
+ version = 0.64,
comment = "main configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/Master/texmf-dist/tex/luatex/addtoluatexpath/addtoluatexpath.sty b/Master/texmf-dist/tex/luatex/addtoluatexpath/addtoluatexpath.sty
index 140a3ac2088..a6e525873f9 100644
--- a/Master/texmf-dist/tex/luatex/addtoluatexpath/addtoluatexpath.sty
+++ b/Master/texmf-dist/tex/luatex/addtoluatexpath/addtoluatexpath.sty
@@ -1,15 +1,39 @@
-\ProvidesPackage{addtoluatexpath}[2024-03-14]
+% Copyright (C) 2023-2025 Kale Ewasiuk
+%
+% 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.
+
+
+\ProvidesPackage{addtoluatexpath}[2025-01-11]
\RequirePackage{luacode}
\providecommand{\input@path}{} % initialize input@path if not defined yet
\begin{luacode*}
+ addtoluatexpath = {}
- atlp_paths = {"."} -- global table containing paths added by this package
+ addtoluatexpath.paths = {"."} -- table containing paths added by this package
- function atlp_find_file(f) -- find a path in list of atlp_paths
- for i, k in pairs(atlp_paths) do
+ function addtoluatexpath.find_file(f) -- find a path in list of addtoluatexpath.paths
+ for i, k in pairs(addtoluatexpath.paths) do
local fp = kpse.find_file(k ..'/'.. f)
if (fp) then
return fp
@@ -17,52 +41,54 @@
end -- if nothing returned, issue a package error
texio.write_nl('addtoluatexpath searched for file: '..f)
texio.write_nl('addtoluatexpath searched paths were: '..token.get_macro('input@path'))
- tex.sprint('\\PackageError{addtoluatexpath}{a file was not found}{}')
+ tex.sprint('\\PackageError{addtoluatexpath}{a file was not found, see log.}{}')
tex.sprint('\\stop')
end
- function atlp_main(atlp_raw) -- add to path from raw string
-
+ function addtoluatexpath.main(atlp_raw) -- add to path from raw string
+ local penlight = require'penlight'
+
local atlp_tbl = require'luakeys'().parse(atlp_raw, {naked_as_value=true}) -- paths as table
local atlp_no_lua = atlp_tbl['nolua'] or false -- check and set nolua=true
local atlp_no_tex = atlp_tbl['notex'] or false -- check and set notex=true
+ local atlp_no_error = atlp_tbl['noerror'] or false -- check and set noerror=true
- if atlp_raw:find('*') ~= nil then -- if *, must use penlight to expand subdirectories
- penlight = require'penlight'
- atlp_tbl = penlight.List(atlp_tbl) -- convert to pl.List for easy manipulation
- end
+ atlp_tbl = penlight.List(atlp_tbl) -- convert to pl.List for easy manipulation
for __, p in ipairs(atlp_tbl) do
if p:find('*') == nil then -- add paths without *, and continue the loop after
if not atlp_no_lua then package.path = package.path .. ';'..p..'/?.lua;' end
if not atlp_no_tex then token.set_macro('input@path', token.get_macro('input@path')..'{'..p..'/}', 'global') end
- atlp_paths[#atlp_paths + 1] = p -- append the added path to global list
- goto continue
- end
-
- local p, c = p:gsub('*','') -- if * added, include subdirectories
- local atlp_subdirs = penlight.List(penlight.dir.getdirectories(p))
- -- troubleshooting --texio.write_nl(penlight.pretty.write(atlp_subdirs))
- if c == 2 then
- atlp_subdirs = atlp_subdirs:map(function(s) return s ..'/**' end) -- add ** to subdirs for recursive inclusion
+ if (not atlp_no_error) and (not penlight.path.exists(p)) then
+ tex.sprint('\\PackageError{addtoluatexpath}{directory "'..p..'" was not found}{}')
+ end
+ addtoluatexpath.paths[#addtoluatexpath.paths + 1] = p -- append the added path to global list
+ else
+ local p, c = p:gsub('*','') -- if * added, include subdirectories
+ local atlp_subdirs = penlight.List(penlight.dir.getdirectories(p))
+ -- troubleshooting --texio.write_nl(penlight.pretty.write(atlp_subdirs))
+ if c == 2 then
+ atlp_subdirs = atlp_subdirs:map(function(s) return s ..'/**' end) -- add ** to subdirs for recursive inclusion
+ end
+ atlp_tbl:append(p) -- make sure p (current path without *) is still added!
+ atlp_tbl:extend(atlp_subdirs) -- extend path to include additional subdirs; the for loop is lengthened
end
- atlp_tbl:append(p) -- make sure p (current path without *) is still added!
- atlp_tbl:extend(atlp_subdirs) -- extend path to include additional subdirs; the for loop is lengthened
-
- ::continue::
end
-
- -- -- troubleshooting: show all paths
- --texio.write_nl('Lua Paths >>> \n'..package.path:gsub(';','\n'))
- --texio.write_nl('TeX Paths >>> \n'..token.get_macro('input@path'):gsub('}{','\n'))
-
end
-
- atlp_main(token.get_macro('@raw@opt@addtoluatexpath.sty'))
-
+
+
+ function addtoluatexpath.prt_paths()
+ texio.write_nl('Lua Paths >>> \n'..package.path:gsub(';','\n'))
+ texio.write_nl('\nTeX Paths >>> \n'..token.get_macro('input@path'):gsub('}{','\n'))
+ end
+
+ ---- ---- ---- add paths passed as package options
+ addtoluatexpath.main(token.get_macro('@raw@opt@addtoluatexpath.sty'))
+ ---- ---- ----
+
\end{luacode*}
-\NewDocumentCommand{\addtoluatexpath}{m}{\luadirect{atlp_main(\luastring{#1})}} % a command
+\NewDocumentCommand{\addtoluatexpath}{m}{\luadirect{addtoluatexpath.main(\luastring{#1})}} % a command
\AtEndOfPackage{\let\@unprocessedoptions\relax}
diff --git a/Master/texmf-dist/tex/luatex/luakeys/luakeys-debug.sty b/Master/texmf-dist/tex/luatex/luakeys/luakeys-debug.sty
index 57e1bae7f83..c52171cbe86 100644
--- a/Master/texmf-dist/tex/luatex/luakeys/luakeys-debug.sty
+++ b/Master/texmf-dist/tex/luatex/luakeys/luakeys-debug.sty
@@ -17,6 +17,6 @@
% luakeys-debug.sty and luakeys-debug.tex.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{luakeys-debug}[2024/04/09 v0.14.0 Debug package for luakeys.]
+\ProvidesPackage{luakeys-debug}[2024/09/29 v0.15.0 Debug package for luakeys.]
\input luakeys-debug.tex
diff --git a/Master/texmf-dist/tex/luatex/luakeys/luakeys.lua b/Master/texmf-dist/tex/luatex/luakeys/luakeys.lua
index 224c77ed722..b47d2d47f2a 100644
--- a/Master/texmf-dist/tex/luatex/luakeys/luakeys.lua
+++ b/Master/texmf-dist/tex/luatex/luakeys/luakeys.lua
@@ -1621,6 +1621,8 @@ local function main()
local picked_value = nil
if is[pick_type](v) then
picked_value = v
+ elseif pick_type == 'string' and is.number(v) then
+ picked_value = tostring(v)
end
if picked_value ~= nil then
@@ -2061,7 +2063,7 @@ local function main()
return {
new = main,
- version = { 0, 14, 0 },
+ version = { 0, 15, 0 },
parse = parse,
diff --git a/Master/texmf-dist/tex/luatex/luakeys/luakeys.sty b/Master/texmf-dist/tex/luatex/luakeys/luakeys.sty
index 6369cff49fe..69a44f1261c 100644
--- a/Master/texmf-dist/tex/luatex/luakeys/luakeys.sty
+++ b/Master/texmf-dist/tex/luatex/luakeys/luakeys.sty
@@ -17,7 +17,7 @@
% luakeys-debug.sty and luakeys-debug.tex.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{luakeys}[2024/04/09 v0.14.0 Parsing key-value options using Lua.]
+\ProvidesPackage{luakeys}[2024/09/29 v0.15.0 Parsing key-value options using Lua.]
\directlua{
if luakeys == nil then
luakeys = require('luakeys')()
diff --git a/Master/texmf-dist/tex/luatex/luamplib/luamplib.lua b/Master/texmf-dist/tex/luatex/luamplib/luamplib.lua
index 972e36172fd..9b0a2d59c03 100644
--- a/Master/texmf-dist/tex/luatex/luamplib/luamplib.lua
+++ b/Master/texmf-dist/tex/luatex/luamplib/luamplib.lua
@@ -11,8 +11,8 @@
luatexbase.provides_module {
name = "luamplib",
- version = "2.34.5",
- date = "2024/08/03",
+ version = "2.36.3",
+ date = "2024/12/16",
description = "Lua package to typeset Metapost with LuaTeX's MPLib.",
}
@@ -371,8 +371,9 @@ local factor = 65536*(7227/7200)
local textext_fmt = 'image(addto currentpicture doublepath unitsquare \z
xscaled %f yscaled %f shifted (0,-%f) \z
withprescript "mplibtexboxid=%i:%f:%f")'
-local function process_tex_text (str)
+local function process_tex_text (str, maketext)
if str then
+ if not maketext then str = str:gsub("\r.-$","") end
local global = (has_instancename or luamplib.globaltextext or luamplib.codeinherit)
and "\\global" or ""
local tex_box_id
@@ -385,7 +386,7 @@ local function process_tex_text (str)
run_tex_code(format([[\expandafter\newbox\csname luamplib.box.%s\endcsname]], boxid))
tex_box_id = tex.getcount'allocationnumber'
end
- run_tex_code(format("%s\\setbox%i\\hbox{%s}", global, tex_box_id, str))
+ run_tex_code(format("\\luamplibtagtextbegin{%i}%s\\setbox%i\\hbox{%s}\\luamplibtagtextend", tex_box_id, global, tex_box_id, str))
local box = texgetbox(tex_box_id)
local wd = box.width / factor
local ht = box.height / factor
@@ -558,6 +559,7 @@ local function protecttexcontents (str)
:gsub("%%.-\n", "")
:gsub("%%.-$", "")
:gsub("%zPerCent%z", "\\%%")
+ :gsub("\r.-$", "")
:gsub("%s+", " ")
end
luamplib.legacyverbatimtex = true
@@ -580,7 +582,7 @@ function luamplib.maketext (str, what)
end
end
else
- return process_tex_text(str)
+ return process_tex_text(str, true) -- bool is for 'char13'
end
end
return ""
@@ -990,10 +992,10 @@ function outline_vert (res, box, curr, xshift, yshift)
local ady = abs(ody - dy)
local ndy = math.ceil(ady / hd) * hd
local diff = ndy - ady
- n = (vwidth-diff) // hd
+ n = math.floor((vwidth-diff) / hd)
dy = dy + (b2u and diff or -diff)
else
- n = vwidth // hd
+ n = math.floor(vwidth / hd)
if kind == 101 then
local side = vwidth % hd / 2
dy = dy + (b2u and side or -side)
@@ -1142,10 +1144,10 @@ function outline_horz (res, box, curr, xshift, yshift, discwd)
local adx = abs(dx-dirs[1].dx)
local ndx = math.ceil(adx / wd) * wd
local diff = ndx - adx
- n = (width-diff) // wd
+ n = math.floor((width-diff) / wd)
dx = dx + (r2l and -diff-wd or diff)
else
- n = width // wd
+ n = math.floor(width / wd)
if kind == 101 then
local side = width % wd /2
dx = dx + (r2l and -side-wd or side)
@@ -1216,6 +1218,20 @@ else:
def message expr t =
if string t: runscript("mp.report[=["&t&"]=]") else: errmessage "Not a string" fi
enddef;
+ def withtransparency (expr a, t) =
+ withprescript "tr_alternative=" & if numeric a: decimal fi a
+ withprescript "tr_transparency=" & decimal t
+ enddef;
+ vardef ddecimal primary p =
+ decimal xpart p & " " & decimal ypart p
+ enddef;
+ vardef boundingbox primary p =
+ if (path p) or (picture p) :
+ llcorner p -- lrcorner p -- urcorner p -- ulcorner p
+ else :
+ origin
+ fi -- cycle
+ enddef;
fi
def resolvedcolor(expr s) =
runscript("return luamplib.shadecolor('"& s &"')")
@@ -1460,9 +1476,143 @@ def withgroupname expr s =
withprescript "mplibgroupname=" & s
enddef;
def usemplibgroup primary s =
- draw maketext("\usemplibgroup{" & s & "}")
+ draw maketext("\csname luamplib.group." & s & "\endcsname")
shifted runscript("return luamplib.trgroupshifts['" & s & "']")
enddef;
+path mplib_shade_path ;
+numeric mplib_shade_step ; mplib_shade_step := 0 ;
+numeric mplib_shade_fx, mplib_shade_fy ;
+numeric mplib_shade_lx, mplib_shade_ly ;
+numeric mplib_shade_nx, mplib_shade_ny ;
+numeric mplib_shade_dx, mplib_shade_dy ;
+numeric mplib_shade_tx, mplib_shade_ty ;
+primarydef p withshadingmethod m =
+ p
+ if picture p :
+ withprescript "sh_operand_type=picture"
+ if textual p:
+ withprescript "sh_transform=no"
+ mplib_with_shade_method (boundingbox p, m)
+ else:
+ withprescript "sh_transform=yes"
+ mplib_with_shade_method (pathpart p, m)
+ fi
+ else :
+ withprescript "sh_transform=yes"
+ mplib_with_shade_method (p, m)
+ fi
+enddef;
+def mplib_with_shade_method (expr p, m) =
+ hide(mplib_with_shade_method_analyze(p))
+ withprescript "sh_domain=0 1"
+ withprescript "sh_color=into"
+ withprescript "sh_color_a=" & colordecimals white
+ withprescript "sh_color_b=" & colordecimals black
+ withprescript "sh_first=" & ddecimal point 0 of p
+ withprescript "sh_set_x=" & ddecimal (mplib_shade_nx,mplib_shade_lx)
+ withprescript "sh_set_y=" & ddecimal (mplib_shade_ny,mplib_shade_ly)
+ if m = "linear" :
+ withprescript "sh_type=linear"
+ withprescript "sh_factor=1"
+ withprescript "sh_center_a=" & ddecimal llcorner p
+ withprescript "sh_center_b=" & ddecimal urcorner p
+ else :
+ withprescript "sh_type=circular"
+ withprescript "sh_factor=1.2"
+ withprescript "sh_center_a=" & ddecimal center p
+ withprescript "sh_center_b=" & ddecimal center p
+ withprescript "sh_radius_a=" & decimal 0
+ withprescript "sh_radius_b=" & decimal mplib_max_radius(p)
+ fi
+enddef;
+def mplib_with_shade_method_analyze(expr p) =
+ mplib_shade_path := p ;
+ mplib_shade_step := 1 ;
+ mplib_shade_fx := xpart point 0 of p ;
+ mplib_shade_fy := ypart point 0 of p ;
+ mplib_shade_lx := mplib_shade_fx ;
+ mplib_shade_ly := mplib_shade_fy ;
+ mplib_shade_nx := 0 ;
+ mplib_shade_ny := 0 ;
+ mplib_shade_dx := abs(mplib_shade_fx - mplib_shade_lx) ;
+ mplib_shade_dy := abs(mplib_shade_fy - mplib_shade_ly) ;
+ for i=1 upto length(p) :
+ mplib_shade_tx := abs(mplib_shade_fx - xpart point i of p) ;
+ mplib_shade_ty := abs(mplib_shade_fy - ypart point i of p) ;
+ if mplib_shade_tx > mplib_shade_dx :
+ mplib_shade_nx := i + 1 ;
+ mplib_shade_lx := xpart point i of p ;
+ mplib_shade_dx := mplib_shade_tx ;
+ fi ;
+ if mplib_shade_ty > mplib_shade_dy :
+ mplib_shade_ny := i + 1 ;
+ mplib_shade_ly := ypart point i of p ;
+ mplib_shade_dy := mplib_shade_ty ;
+ fi ;
+ endfor ;
+enddef;
+vardef mplib_max_radius(expr p) =
+ max (
+ (xpart center p - xpart llcorner p) ++ (ypart center p - ypart llcorner p),
+ (xpart center p - xpart ulcorner p) ++ (ypart ulcorner p - ypart center p),
+ (xpart lrcorner p - xpart center p) ++ (ypart center p - ypart lrcorner p),
+ (xpart urcorner p - xpart center p) ++ (ypart urcorner p - ypart center p)
+ )
+enddef;
+def withshadingstep (text t) =
+ hide(mplib_shade_step := mplib_shade_step + 1 ;)
+ withprescript "sh_step=" & decimal mplib_shade_step
+ t
+enddef;
+def withshadingradius expr a =
+ withprescript "sh_radius_a=" & decimal (xpart a)
+ withprescript "sh_radius_b=" & decimal (ypart a)
+enddef;
+def withshadingorigin expr a =
+ withprescript "sh_center_a=" & ddecimal a
+ withprescript "sh_center_b=" & ddecimal a
+enddef;
+def withshadingvector expr a =
+ withprescript "sh_center_a=" & ddecimal (point xpart a of mplib_shade_path)
+ withprescript "sh_center_b=" & ddecimal (point ypart a of mplib_shade_path)
+enddef;
+def withshadingdirection expr a =
+ withprescript "sh_center_a=" & ddecimal (point xpart a of boundingbox(mplib_shade_path))
+ withprescript "sh_center_b=" & ddecimal (point ypart a of boundingbox(mplib_shade_path))
+enddef;
+def withshadingtransform expr a =
+ withprescript "sh_transform=" & a
+enddef;
+def withshadingcenter expr a =
+ withprescript "sh_center_a=" & ddecimal (
+ center mplib_shade_path shifted (
+ xpart a * xpart (lrcorner mplib_shade_path - llcorner mplib_shade_path)/2,
+ ypart a * ypart (urcorner mplib_shade_path - lrcorner mplib_shade_path)/2
+ )
+ )
+enddef;
+def withshadingdomain expr d =
+ withprescript "sh_domain=" & ddecimal d
+enddef;
+def withshadingfactor expr f =
+ withprescript "sh_factor=" & decimal f
+enddef;
+def withshadingfraction expr a =
+ if mplib_shade_step > 0 :
+ withprescript "sh_fraction_" & decimal mplib_shade_step & "=" & decimal a
+ fi
+enddef;
+def withshadingcolors (expr a, b) =
+ if mplib_shade_step > 0 :
+ withprescript "sh_color=into"
+ withprescript "sh_color_a_" & decimal mplib_shade_step & "=" & colordecimals a
+ withprescript "sh_color_b_" & decimal mplib_shade_step & "=" & colordecimals b
+ else :
+ withprescript "sh_color=into"
+ withprescript "sh_color_a=" & colordecimals a
+ withprescript "sh_color_b=" & colordecimals b
+ fi
+enddef;
]],
legacyverbatimtex = [[
def specialVerbatimTeX (text t) = runscript("luamplibprefig{"&t&"}") enddef;
@@ -1476,7 +1626,25 @@ extra_endfig := extra_endfig & " let VerbatimTeX = specialVerbatimTeX;"&
"luamplib.in_the_fig=false" &ditto& ");";
]],
textextlabel = [[
-primarydef s infont f = rawtextext(s) enddef;
+let luampliboriginalinfont = infont;
+primarydef s infont f =
+ if (s < char 32)
+ or (s = char 35) % #
+ or (s = char 36) % $
+ or (s = char 37) % %
+ or (s = char 38) % &
+ or (s = char 92) % \
+ or (s = char 94) % ^
+ or (s = char 95) % _
+ or (s = char 123) % {
+ or (s = char 125) % }
+ or (s = char 126) % ~
+ or (s = char 127) :
+ s luampliboriginalinfont f
+ else :
+ rawtextext(s)
+ fi
+enddef;
def fontsize expr f =
begingroup
save size; numeric size;
@@ -1640,26 +1808,32 @@ pdfetcs.pgfcolorspace = "pgf@sys@addpdfresource@colorspaces@plain"
local function update_pdfobjs (os, stream)
local key = os
if stream then key = key..stream end
- local on = pdfobjs[key]
+ local on = key and pdfobjs[key]
if on then
return on,false
end
if pdfmode then
if stream then
on = pdf.immediateobj("stream",stream,os)
- else
+ elseif os then
on = pdf.immediateobj(os)
+ else
+ on = pdf.reserveobj()
end
else
on = pdfetcs.cnt or 1
if stream then
texsprint(format("\\special{pdf:stream @mplibpdfobj%s (%s) <<%s>>}",on,stream,os))
- else
+ elseif os then
texsprint(format("\\special{pdf:obj @mplibpdfobj%s %s}",on,os))
+ else
+ texsprint(format("\\special{pdf:obj @mplibpdfobj%s <<>>}",on))
end
pdfetcs.cnt = on + 1
end
- pdfobjs[key] = on
+ if key then
+ pdfobjs[key] = on
+ end
return on,true
end
pdfetcs.resfmt = pdfmode and "%s 0 R" or "@mplibpdfobj%s"
@@ -1720,6 +1894,12 @@ local transparancy_modes = { [0] = "Normal",
"Darken", "Lighten", "Difference", "Exclusion",
"Hue", "Saturation", "Color", "Luminosity",
"Compatible",
+ normal = "Normal", multiply = "Multiply", screen = "Screen",
+ overlay = "Overlay", softlight = "SoftLight", hardlight = "HardLight",
+ colordodge = "ColorDodge", colorburn = "ColorBurn", darken = "Darken",
+ lighten = "Lighten", difference = "Difference", exclusion = "Exclusion",
+ hue = "Hue", saturation = "Saturation", color = "Color",
+ luminosity = "Luminosity", compatible = "Compatible",
}
local function add_extgs_resources (on, new)
local key = format("MPlibTr%s", on)
@@ -1756,7 +1936,11 @@ local function do_preobj_TR(object,prescript)
if opaq then
local key, on, os, new
local mode = prescript.tr_alternative or 1
- mode = transparancy_modes[tonumber(mode)] or mode
+ mode = transparancy_modes[tonumber(mode) or mode:lower()]
+ if not mode then
+ mode = prescript.tr_alternative
+ warn("unsupported blend mode: '%s'", mode)
+ end
opaq = format("%.3f", opaq) :gsub(decimals,rmzeros)
for i,v in ipairs{ {mode,opaq},{"Normal",1} } do
os = format("<</BM/%s/ca %s/CA %s/AIS false>>",v[1],v[2],v[2])
@@ -1962,6 +2146,62 @@ local function do_preobj_SH(object,prescript)
return shade_no
end
+local function add_pattern_resources (key, val)
+ if pdfmanagement then
+ texsprint {
+ "\\csname pdfmanagement_add:nnn\\endcsname{Page/Resources/Pattern}{", key, "}{", val, "}"
+ }
+ else
+ local res = format("/%s %s", key, val)
+ if is_defined(pdfetcs.pgfpattern) then
+ texsprint { "\\csname ", pdfetcs.pgfpattern, "\\endcsname{", res, "}" }
+ else
+ pdfetcs.fallback_update_resources("Pattern",res,"@MPlibPt")
+ end
+ end
+end
+function luamplib.dolatelua (on, os)
+ local h, v = pdf.getpos()
+ h = format("%f", h/factor) :gsub(decimals,rmzeros)
+ v = format("%f", v/factor) :gsub(decimals,rmzeros)
+ if pdfmode then
+ pdf.obj(on, format("<<%s/Matrix[1 0 0 1 %s %s]>>", os, h, v))
+ pdf.refobj(on)
+ else
+ local shift = os:explode()
+ if tonumber(h) ~= tonumber(shift[1]) or tonumber(v) ~= tonumber(shift[2]) then
+ warn([[Add 'withprescript "sh_matrixshift=%s %s"' to the picture shading]], h, v)
+ end
+ end
+end
+local function do_preobj_shading (object, prescript)
+ if not prescript or not prescript.sh_operand_type then return end
+ local on = do_preobj_SH(object, prescript)
+ local os = format("/PatternType 2/Shading %s", format(pdfetcs.resfmt, on))
+ on = update_pdfobjs()
+ if pdfmode then
+ put2output(tableconcat{ "\\latelua{ luamplib.dolatelua(",on,",[[",os,"]]) }" })
+ else
+ if is_defined"RecordProperties" then
+ put2output(tableconcat{
+ "\\csname tex_savepos:D\\endcsname\\RecordProperties{luamplib/getpos/",on,"}{xpos,ypos}\z
+ \\special{pdf:put @mplibpdfobj",on," <<",os,"/Matrix[1 0 0 1 \z
+ \\csname dim_to_decimal_in_bp:n\\endcsname{\\RefProperty{luamplib/getpos/",on,"}{xpos}sp} \z
+ \\csname dim_to_decimal_in_bp:n\\endcsname{\\RefProperty{luamplib/getpos/",on,"}{ypos}sp}\z
+ ]>>}"
+ })
+ else
+ local shift = prescript.sh_matrixshift or "0 0"
+ texsprint{ "\\special{pdf:put @mplibpdfobj",on," <<",os,"/Matrix[1 0 0 1 ",shift,"]>>}" }
+ put2output(tableconcat{ "\\latelua{ luamplib.dolatelua(",on,",[[",shift,"]]) }" })
+ end
+ end
+ local key, val = format("MPlibPt%s", on), format(pdfetcs.resfmt, on)
+ add_pattern_resources(key,val)
+ pdf_literalcode("/Pattern cs/%s scn", key)
+ prescript.sh_type = nil
+end
+
pdfetcs.patterns = { }
local function gather_resources (optres)
local t, do_pattern = { }, not optres
@@ -2139,18 +2379,7 @@ local function do_preobj_PAT(object, prescript)
end
if not patt.done then
local val = pdfmode and format("%s 0 R",index) or patterns[index]
- if pdfmanagement then
- texsprint {
- "\\csname pdfmanagement_add:nnn\\endcsname{Page/Resources/Pattern}{", key, "}{", val, "}"
- }
- else
- local res = format("/%s %s", key, val)
- if is_defined(pdfetcs.pgfpattern) then
- texsprint { "\\csname ", pdfetcs.pgfpattern, "\\endcsname{", res, "}" }
- else
- pdfetcs.fallback_update_resources("Pattern",res,"@MPlibPt")
- end
- end
+ add_pattern_resources(key,val)
end
patt.done = true
end
@@ -2244,12 +2473,17 @@ local function do_preobj_GRP (object, prescript)
put2output(tableconcat{
"\\saveboxresource type 2 attr{/Type/XObject/Subtype/Form/FormType 1",
"/BBox[", bbox, "]", grattr, "} resources{", res, "}\\mplibscratchbox",
+ "\\luamplibtagasgroupbegin",
[[\setbox\mplibscratchbox\hbox{\useboxresource\lastsavedboxresourceindex}]],
[[\wd\mplibscratchbox 0pt\ht\mplibscratchbox 0pt\dp\mplibscratchbox 0pt]],
- [[\box\mplibscratchbox\endgroup]],
+ [[\box\mplibscratchbox]],
+ "\\luamplibtagasgroupend",
+ "\\endgroup",
"\\expandafter\\xdef\\csname luamplib.group.", trgroup.name, "\\endcsname{",
- "\\noexpand\\mplibstarttoPDF{",llx,"}{",lly,"}{",urx,"}{",ury,"}",
- "\\useboxresource \\the\\lastsavedboxresourceindex\\noexpand\\mplibstoptoPDF}",
+ "\\setbox\\mplibscratchbox\\hbox{\\hskip",-llx,"bp\\raise",-lly,"bp\\hbox{",
+ "\\useboxresource \\the\\lastsavedboxresourceindex",
+ "}}\\wd\\mplibscratchbox",urx-llx,"bp\\ht\\mplibscratchbox",ury-lly,"bp",
+ "\\box\\mplibscratchbox}",
})
else
trgroup.cnt = (trgroup.cnt or 0) + 1
@@ -2259,11 +2493,14 @@ local function do_preobj_GRP (object, prescript)
"\\unhbox\\mplibscratchbox",
"\\special{pdf:put @resources <<", res, ">>}",
"\\special{pdf:exobj <<", grattr, ">>}",
- "\\special{pdf:uxobj ", objname, "}\\endgroup",
+ "\\special{pdf:uxobj ", objname, "}",
+ "\\endgroup",
})
token.set_macro("luamplib.group."..trgroup.name, tableconcat{
- "\\mplibstarttoPDF{",llx,"}{",lly,"}{",urx,"}{",ury,"}",
- "\\special{pdf:uxobj ", objname, "}\\mplibstoptoPDF",
+ "\\setbox\\mplibscratchbox\\hbox{\\hskip",-llx,"bp\\raise",-lly,"bp\\hbox{",
+ "\\special{pdf:uxobj ", objname, "}",
+ "}}\\wd\\mplibscratchbox",urx-llx,"bp\\ht\\mplibscratchbox",ury-lly,"bp",
+ "\\box\\mplibscratchbox",
}, "global")
end
trgroup.shifts[trgroup.name] = { llx, lly }
@@ -2302,7 +2539,9 @@ function luamplib.registergroup (boxid, name, opts)
if pdfmode then
attr = tableconcat(attr) :gsub(decimals,rmzeros)
local index = tex.saveboxresource(boxid, attr, res, true, grtype)
- token.set_macro("luamplib.group."..name, "\\useboxresource "..index, "global")
+ token.set_macro("luamplib.group."..name, tableconcat{
+ "\\useboxresource ", index,
+ }, "global")
whd = format("%.3f %.3f 0", wd/factor, (ht+dp)/factor) :gsub(decimals,rmzeros)
else
trgroup.cnt = (trgroup.cnt or 0) + 1
@@ -2319,11 +2558,11 @@ function luamplib.registergroup (boxid, name, opts)
"\\special{pdf:econtent}}",
}
token.set_macro("luamplib.group."..name, tableconcat{
- "\\begingroup\\setbox\\mplibscratchbox\\hbox{\\special{pdf:uxobj ", objname, "}}",
+ "\\setbox\\mplibscratchbox\\hbox{\\special{pdf:uxobj ", objname, "}}",
"\\wd\\mplibscratchbox ", wd, "sp",
"\\ht\\mplibscratchbox ", ht, "sp",
"\\dp\\mplibscratchbox ", dp, "sp",
- "\\box\\mplibscratchbox\\endgroup",
+ "\\box\\mplibscratchbox",
}, "global")
whd = format("%.3f %.3f %.3f", wd/factor, ht/factor, dp/factor) :gsub(decimals,rmzeros)
end
@@ -2472,7 +2711,8 @@ function luamplib.flush (result,flusher)
local tr_opaq = do_preobj_TR(object,prescript) -- opacity
local fading_ = do_preobj_FADE(object,prescript) -- fading
local trgroup = do_preobj_GRP(object,prescript) -- transparency group
- local pattern_ = do_preobj_PAT(object,prescript) -- pattern
+ local pattern_ = do_preobj_PAT(object,prescript) -- tiling pattern
+ local shading_ = do_preobj_shading(object,prescript) -- shading pattern
if prescript and prescript.mplibtexboxid then
put_tex_boxes(object,prescript)
elseif objecttype == "start_bounds" or objecttype == "stop_bounds" then --skip
diff --git a/Master/texmf-dist/tex/luatex/luamplib/luamplib.sty b/Master/texmf-dist/tex/luatex/luamplib/luamplib.sty
index f305eacd4e0..b9b37f4ce53 100644
--- a/Master/texmf-dist/tex/luatex/luamplib/luamplib.sty
+++ b/Master/texmf-dist/tex/luatex/luamplib/luamplib.sty
@@ -11,7 +11,7 @@
\ifcsname ProvidesPackage\endcsname
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{luamplib}
- [2024/08/03 v2.34.5 mplib package for LuaTeX]
+ [2024/12/16 v2.36.3 mplib package for LuaTeX]
\fi
\ifdefined\newluafunction\else
\input ltluatex
@@ -55,7 +55,14 @@
\catcode`\&=12 \catcode`\$=12 \catcode`\%=12 \catcode`\^^M=12
}
\def\mplibputtextbox#1{\vbox to 0pt{\vss\hbox to 0pt{\raise\dp#1\copy#1\hss}}}
-\protected\def\usemplibgroup#1{\csname luamplib.group.#1\endcsname}
+\protected\def\usemplibgroup#1#{\usemplibgroupmain}
+\def\usemplibgroupmain#1{%
+ \mplibstarttousemplibgroup
+ \csname luamplib.group.#1\endcsname
+ \mplibstoptousemplibgroup
+}
+\def\mplibstarttousemplibgroup{\prependtomplibbox\hbox dir TLT\bgroup}
+\def\mplibstoptousemplibgroup{\egroup}
\protected\def\mplibgroup#1{%
\begingroup
\def\MPllx{0}\def\MPlly{0}%
@@ -127,9 +134,14 @@
\ifx *\nexttok
\expandafter\mplibprempfig
\else
- \expandafter\mplibmainmpfig
+ \ifx [\nexttok
+ \expandafter\expandafter\expandafter\mplibgobbleoptsmpfig
+ \else
+ \expandafter\expandafter\expandafter\mplibmainmpfig
+ \fi
\fi
}
+\def\mplibgobbleoptsmpfig[#1]{\mplibmainmpfig}
\def\mplibmainmpfig{%
\begingroup
\mplibsetupcatcodes
@@ -176,7 +188,7 @@
}
\protected\def\endmpfig{endmpfig}
\unless\ifcsname ver@luamplib.sty\endcsname
- \def\mplibcodegetinstancename[#1]{\gdef\currentmpinstancename{#1}\mplibcodeindeed}
+ \def\mplibcodegetinstancename[#1]{\xdef\currentmpinstancename{#1}\mplibcodeindeed}
\protected\def\mplibcode{%
\begingroup
\futurelet\nexttok\mplibcodebranch
@@ -202,7 +214,7 @@
\protected\def\endmplibcode{endmplibcode}
\else
\newenvironment{mplibcode}[1][]{%
- \global\def\currentmpinstancename{#1}%
+ \xdef\currentmpinstancename{#1}%
\mplibtmptoks{}\ltxdomplibcode
}{}
\def\ltxdomplibcode{%
@@ -409,6 +421,502 @@
\closein0
\input luamplib.cfg
\fi
+\def\luamplibtagtextbegin#1{}
+\let\luamplibtagtextend\relax
+\let\luamplibtagasgroupbegin\relax
+\let\luamplibtagasgroupend\relax
+\ifcsname SuspendTagging\endcsname\else\endinput\fi
+\ifcsname ver@tagpdf.sty\endcsname \else
+ \ExplSyntaxOn
+ \keys_define:nn{luamplib/notag}
+ {
+ ,alt .code:n = { }
+ ,actualtext .code:n = { }
+ ,artifact .code:n = { }
+ ,text .code:n = { }
+ ,correct-BBox .code:n = { }
+ ,tag .code:n = { }
+ ,debug .code:n = { }
+ ,instance .code:n = { \tl_gset:Nn \currentmpinstancename {#1} }
+ ,instancename .meta:n = { instance = {#1} }
+ ,unknown .code:n = { \tl_gset:Ne \currentmpinstancename {\l_keys_key_str} }
+ }
+ \RenewDocumentCommand\mplibcode{O{}}
+ {
+ \tl_gset_eq:NN \currentmpinstancename \c_empty_tl
+ \keys_set:ne{luamplib/notag}{#1}
+ \mplibtmptoks{}\ltxdomplibcode
+ }
+ \ExplSyntaxOff
+ \let\mplibalttext \luamplibtagtextbegin
+ \let\mplibactualtext \mplibalttext
+ \endinput\fi
+\let\mplibstarttoPDForiginal\mplibstarttoPDF
+\let\mplibstoptoPDForiginal\mplibstoptoPDF
+\let\mplibputtextboxoriginal\mplibputtextbox
+\let\mplibstarttousemplibgrouporiginal\mplibstarttousemplibgroup
+\let\mplibstoptousemplibgrouporiginal\mplibstoptousemplibgroup
+\ExplSyntaxOn
+\tl_new:N \l__luamplib_tag_alt_tl
+\tl_new:N \l__luamplib_tag_alt_dflt_tl
+\tl_set:Nn\l__luamplib_tag_alt_dflt_tl {metapost~figure}
+\tl_new:N \l__luamplib_tag_actual_tl
+\tl_new:N \l__luamplib_tag_struct_tl
+\tl_set:Nn\l__luamplib_tag_struct_tl {Figure}
+\bool_new:N \l__luamplib_tag_usetext_bool
+\bool_new:N \l__luamplib_tag_BBox_bool
+\bool_set_true:N \l__luamplib_tag_BBox_bool
+\seq_new:N\l__luamplib_tag_bboxcorr_seq
+\bool_new:N\l__luamplib_tag_bboxcorr_bool
+\bool_new:N \l__luamplib_tag_debug_bool
+\tl_new:N \l__luamplib_BBox_label_tl
+\tl_new:N \l__luamplib_BBox_llx_tl
+\tl_new:N \l__luamplib_BBox_lly_tl
+\tl_new:N \l__luamplib_BBox_urx_tl
+\tl_new:N \l__luamplib_BBox_ury_tl
+\cs_set_nopar:Npn \luamplibtagtextbegin #1
+{
+ \bool_if:NTF \l__luamplib_tag_usetext_bool
+ {
+ \tag_mc_end_push:
+ \tag_mc_begin:n{}
+ \tag_struct_begin:n{tag=NonStruct,stash}
+ \def\myboxnum{#1}
+ \edef\mystructnum{\tag_get:n{struct_num}}
+ \edef\statebeforebox{\inteval{\tag_get:n{struct_counter}+\tag_get:n{mc_counter}}}
+ }
+ {
+ \tag_if_active:TF
+ { \bool_set_true:N \l_tmpa_bool }
+ { \bool_set_false:N \l_tmpa_bool }
+ \SuspendTagging{luamplib.textext}
+ }
+}
+\cs_set_nopar:Npn \luamplibtagtextend
+{
+ \bool_if:NTF \l__luamplib_tag_usetext_bool
+ {
+ \edef\stateafterbox{\inteval{\tag_get:n{struct_counter}+\tag_get:n{mc_counter}}}
+ \tag_if_active:T {
+ \int_compare:nNnTF
+ {\stateafterbox}
+ =
+ {\statebeforebox}
+ { \cs_gset_nopar:cpe {luamplib.notagbox.\myboxnum} {\mystructnum} }
+ { \cs_gset_nopar:cpe {luamplib.tagbox.\myboxnum} {\mystructnum} }
+ }
+ \tag_struct_end:
+ \tag_mc_end:
+ \tag_mc_begin_pop:n{}
+ }
+ {
+ \bool_if:NT \l_tmpa_bool
+ { \ResumeTagging{luamplib.textext} }
+ }
+}
+\msg_new:nnn {luamplib}{figure-text-reuse}
+{
+ textext~box~#1~probably~is~incorrectly~tagged.\\
+ Reusing~a~box~in~text-keyed~figures~is~strongly~discouraged.
+}
+\cs_set_nopar:Npn \mplibputtextbox #1
+{
+ \vbox to 0pt{\vss\hbox to 0pt{%
+ \bool_if:NTF \l__luamplib_tag_usetext_bool
+ {
+ \ResumeTagging{luamplib.puttextbox}
+ \tag_mc_end:
+ \cs_if_exist:cTF {luamplib.tagbox.#1}
+ {
+ \tag_struct_use_num:n {\csname luamplib.tagbox.#1\endcsname}
+ \raise\dp#1\copy#1
+ }
+ {
+ \cs_if_exist:cF {luamplib.notagbox.#1}
+ {
+ \msg_warning:nnn{luamplib}{figure-text-reuse}{#1}
+ }
+ \tag_mc_begin:n{}
+ \int_set:Nn \l_tmpa_int {#1}
+ \tag_mc_reset_box:N \l_tmpa_int
+ \raise\dp#1\copy#1
+ \tag_mc_end:
+ }
+ \tag_mc_begin:n{artifact}
+ }
+ {
+ \int_set:Nn \l_tmpa_int {#1}
+ \tag_mc_reset_box:N \l_tmpa_int
+ \raise\dp#1\copy#1
+ }
+ \hss}}
+}
+\cs_new_nopar:Npn \__luamplib_tagging_begin_figure:
+{
+ \tag_if_active:T
+ {
+ \tag_mc_end_push:
+ \tl_if_empty:NT\l__luamplib_tag_alt_tl
+ {
+ \msg_warning:nne{luamplib}{alt-text-missing}{\l__luamplib_tag_alt_dflt_tl}
+ \tl_set:Ne\l__luamplib_tag_alt_tl {\l__luamplib_tag_alt_dflt_tl}
+ }
+ \tag_struct_begin:n
+ {
+ tag=\l__luamplib_tag_struct_tl,
+ alt=\l__luamplib_tag_alt_tl,
+ }
+ \tag_mc_begin:n{}
+ }
+}
+\cs_new_nopar:Npn \__luamplib_tagging_end_figure:
+{
+ \tag_if_active:T
+ {
+ \tag_mc_end:
+ \tag_struct_end:
+ \tag_mc_begin_pop:n{}
+ }
+}
+\cs_new_nopar:Npn \__luamplib_tagging_begin_actualtext:
+{
+ \tag_if_active:T
+ {
+ \tag_mc_end_push:
+ \tag_struct_begin:n
+ {
+ tag=Span,
+ actualtext=\l__luamplib_tag_actual_tl,
+ }
+ \tag_mc_begin:n{}
+ }
+}
+\cs_set_eq:NN \__luamplib_tagging_end_actualtext: \__luamplib_tagging_end_figure:
+\cs_new_nopar:Npn \__luamplib_tagging_begin_artifact:
+{
+ \tag_if_active:T
+ {
+ \tag_mc_end_push:
+ \tag_mc_begin:n{artifact}
+ }
+}
+\cs_new_nopar:Npn \__luamplib_tagging_end_artifact:
+{
+ \tag_if_active:T
+ {
+ \tag_mc_end:
+ \tag_mc_begin_pop:n{}
+ }
+}
+\cs_set_eq:NN \luamplibtaggingbegin \__luamplib_tagging_begin_figure:
+\cs_set_eq:NN \luamplibtaggingend \__luamplib_tagging_end_figure:
+\keys_define:nn{luamplib/tag}
+ {
+ ,alt .code:n =
+ {
+ \tl_set:Ne\l__luamplib_tag_alt_tl{\text_purify:n{#1}}
+ }
+ ,actualtext .code:n =
+ {
+ \bool_set_false:N \l__luamplib_tag_BBox_bool
+ \tl_set:Ne\l__luamplib_tag_actual_tl{\text_purify:n{#1}}
+ \cs_set_eq:NN \luamplibtaggingbegin \__luamplib_tagging_begin_actualtext:
+ \cs_set_eq:NN \luamplibtaggingend \__luamplib_tagging_end_actualtext:
+ \tag_if_active:T {\noindent}
+ }
+ ,artifact .code:n =
+ {
+ \bool_set_false:N \l__luamplib_tag_BBox_bool
+ \cs_set_eq:NN \luamplibtaggingbegin \__luamplib_tagging_begin_artifact:
+ \cs_set_eq:NN \luamplibtaggingend \__luamplib_tagging_end_artifact:
+ }
+ ,text .code:n =
+ {
+ \bool_set_false:N \l__luamplib_tag_BBox_bool
+ \bool_set_true:N \l__luamplib_tag_usetext_bool
+ \cs_set_eq:NN \luamplibtaggingbegin \__luamplib_tagging_begin_artifact:
+ \cs_set_eq:NN \luamplibtaggingend \__luamplib_tagging_end_artifact:
+ \tag_if_active:T {\noindent}
+ }
+ ,tag .code:n =
+ {
+ \str_case:nnF {#1}
+ {
+ {text}
+ {
+ \bool_set_false:N \l__luamplib_tag_BBox_bool
+ \bool_set_true:N \l__luamplib_tag_usetext_bool
+ \cs_set_eq:NN \luamplibtaggingbegin \__luamplib_tagging_begin_artifact:
+ \cs_set_eq:NN \luamplibtaggingend \__luamplib_tagging_end_artifact:
+ \tag_if_active:T {\noindent}
+ }
+ {false}
+ {
+ \SuspendTagging{luamplib.tagfalse}
+ }
+ }
+ {
+ \tl_set:Nn\l__luamplib_tag_struct_tl{#1}
+ }
+ }
+ ,correct-BBox .code:n =
+ {
+ \bool_set_true:N \l__luamplib_tag_bboxcorr_bool
+ \seq_set_split:Nnn \l__luamplib_tag_bboxcorr_seq{~}{#1~0pt~0pt~0pt~0pt}
+ }
+ ,debug .code:n =
+ { \bool_set_true:N \l__luamplib_tag_debug_bool }
+ ,instance .code:n =
+ { \tl_gset:Nn \currentmpinstancename {#1} }
+ ,instancename .meta:n = { instance = {#1} }
+ ,unknown .code:n =
+ { \tl_gset:Ne \currentmpinstancename {\l_keys_key_str} }
+ }
+\cs_new_nopar:Npn \luamplibtaggingBBox
+{
+ \bool_lazy_and:nnT
+ {\tag_if_active_p:}
+ {\l__luamplib_tag_BBox_bool}
+ {
+ \tl_set:Ne \l__luamplib_BBox_label_tl {luamplib.BBox.\tag_get:n{struct_num}}
+ \tex_savepos:D
+ \property_record:ee{\l__luamplib_BBox_label_tl}{xpos,ypos,abspage}
+ \tl_set:Ne \l__luamplib_BBox_llx_tl
+ {
+ \dim_to_decimal_in_bp:n
+ { \property_ref:een {\l__luamplib_BBox_label_tl}{xpos}{0}sp }
+ }
+ \tl_set:Ne \l__luamplib_BBox_lly_tl
+ {
+ \dim_to_decimal_in_bp:n
+ { \property_ref:een {\l__luamplib_BBox_label_tl}{ypos}{0}sp - \dp\mplibscratchbox }
+ }
+ \tl_set:Ne \l__luamplib_BBox_urx_tl
+ {
+ \dim_to_decimal_in_bp:n
+ { \l__luamplib_BBox_llx_tl bp + \wd\mplibscratchbox }
+ }
+ \tl_set:Ne \l__luamplib_BBox_ury_tl
+ {
+ \dim_to_decimal_in_bp:n
+ { \l__luamplib_BBox_lly_tl bp + \ht\mplibscratchbox + \dp\mplibscratchbox }
+ }
+ \bool_if:NT \l__luamplib_tag_bboxcorr_bool
+ {
+ \tl_set:Ne \l__luamplib_BBox_llx_tl
+ {
+ \fp_eval:n
+ {
+ \l__luamplib_BBox_llx_tl
+ +
+ \dim_to_decimal_in_bp:n {\seq_item:Nn \l__luamplib_tag_bboxcorr_seq {1} }
+ }
+ }
+ \tl_set:Ne \l__luamplib_BBox_lly_tl
+ {
+ \fp_eval:n
+ {
+ \l__luamplib_BBox_lly_tl
+ +
+ \dim_to_decimal_in_bp:n {\seq_item:Nn \l__luamplib_tag_bboxcorr_seq {2} }
+ }
+ }
+ \tl_set:Ne \l__luamplib_BBox_urx_tl
+ {
+ \fp_eval:n
+ {
+ \l__luamplib_BBox_urx_tl
+ +
+ \dim_to_decimal_in_bp:n {\seq_item:Nn \l__luamplib_tag_bboxcorr_seq {3} }
+ }
+ }
+ \tl_set:Ne \l__luamplib_BBox_ury_tl
+ {
+ \fp_eval:n
+ {
+ \l__luamplib_BBox_ury_tl
+ +
+ \dim_to_decimal_in_bp:n {\seq_item:Nn \l__luamplib_tag_bboxcorr_seq {4} }
+ }
+ }
+ }
+ \prop_gput:cne
+ { g__tag_struct_\tag_get:n{struct_num}_prop }
+ {A}
+ {
+ << /O /Layout /BBox [
+ \l__luamplib_BBox_llx_tl\c_space_tl
+ \l__luamplib_BBox_lly_tl\c_space_tl
+ \l__luamplib_BBox_urx_tl\c_space_tl
+ \l__luamplib_BBox_ury_tl
+ ] >>
+ }
+ \bool_if:NT \l__luamplib_tag_debug_bool
+ {
+ \iow_log:e
+ {
+ luamplib/tag/debug:~BBox~of~structure~\tag_get:n{struct_num}~is~
+ \l__luamplib_BBox_llx_tl\c_space_tl
+ \l__luamplib_BBox_lly_tl\c_space_tl
+ \l__luamplib_BBox_urx_tl\c_space_tl
+ \l__luamplib_BBox_ury_tl
+ }
+ \use:e
+ {
+ \exp_not:N\AddToHookNext{shipout/foreground}
+ {
+ \exp_not:N\int_compare:nNnT
+ {\exp_not:N\g_shipout_readonly_int}
+ =
+ {\property_ref:een{\l__luamplib_BBox_label_tl}{abspage}{0}}
+ {
+ \exp_not:N\put
+ (\l__luamplib_BBox_llx_tl bp, \dim_eval:n{\l__luamplib_BBox_lly_tl bp -\paperheight})
+ {
+ \exp_not:N\opacity_select:n{0.5} \exp_not:N\color_select:n{red}
+ \exp_not:N\rule
+ {\dim_eval:n {\l__luamplib_BBox_urx_tl bp - \l__luamplib_BBox_llx_tl bp}}
+ {\dim_eval:n {\l__luamplib_BBox_ury_tl bp - \l__luamplib_BBox_lly_tl bp}}
+ }
+ }
+ }
+ }
+ }
+ }
+}
+\cs_set_nopar:Npn \luamplibtagasgroupbegin
+{
+ \bool_if:NT \l__luamplib_tag_usetext_bool
+ {
+ \ResumeTagging{luamplib.asgroup}
+ \tag_mc_begin:n{}
+ }
+}
+\cs_set_nopar:Npn \luamplibtagasgroupend
+{
+ \bool_if:NT \l__luamplib_tag_usetext_bool
+ {
+ \tag_mc_end:
+ \SuspendTagging{luamplib.asgroup}
+ }
+}
+\cs_set_nopar:Npn \mplibstarttousemplibgroup
+{
+ \prependtomplibbox\hbox dir TLT\bgroup
+ \luamplibtaggingbegin
+ \setbox\mplibscratchbox\hbox\bgroup
+ \bool_if:NT \l__luamplib_tag_usetext_bool
+ {
+ \tag_mc_end:
+ \tag_mc_begin:n{}
+ }
+}
+\cs_set_nopar:Npn \mplibstoptousemplibgroup
+{
+ \bool_if:NT \l__luamplib_tag_usetext_bool
+ {
+ \tag_mc_end:
+ \tag_mc_begin:n{artifact}
+ }
+ \egroup
+ \luamplibtaggingBBox
+ \unhbox\mplibscratchbox
+ \luamplibtaggingend
+ \egroup
+}
+\cs_set_nopar:Npn \mplibstarttoPDF #1 #2 #3 #4
+ {
+ \prependtomplibbox
+ \hbox dir TLT\bgroup
+ \luamplibtaggingbegin % begin tagging
+ \xdef\MPllx{#1}\xdef\MPlly{#2}%
+ \xdef\MPurx{#3}\xdef\MPury{#4}%
+ \xdef\MPwidth{\the\dimexpr#3bp-#1bp\relax}%
+ \xdef\MPheight{\the\dimexpr#4bp-#2bp\relax}%
+ \parskip0pt
+ \leftskip0pt
+ \parindent0pt
+ \everypar{}%
+ \setbox\mplibscratchbox\vbox\bgroup
+ \SuspendTagging{luamplib.mplibtopdf}% stop tag inside figure
+ \noindent
+ }
+\cs_set_nopar:Npn \mplibstoptoPDF
+ {
+ \par
+ \egroup
+ \setbox\mplibscratchbox\hbox
+ {\hskip-\MPllx bp
+ \raise-\MPlly bp
+ \box\mplibscratchbox}%
+ \setbox\mplibscratchbox\vbox to \MPheight
+ {\vfill
+ \hsize\MPwidth
+ \wd\mplibscratchbox0pt
+ \ht\mplibscratchbox0pt
+ \dp\mplibscratchbox0pt
+ \box\mplibscratchbox}%
+ \wd\mplibscratchbox\MPwidth
+ \ht\mplibscratchbox\MPheight
+ \luamplibtaggingBBox % BBox
+ \box\mplibscratchbox
+ \luamplibtaggingend % end tagging
+ \egroup
+ }
+\RenewDocumentCommand\mplibcode{O{}}
+ {
+ \msg_set:nnn {luamplib}{alt-text-missing}
+ {
+ Alternative~text~for~mplibcode~is~missing.\\
+ Using~the~default~value~'##1'~instead.
+ }
+ \tl_gset_eq:NN \currentmpinstancename \c_empty_tl
+ \keys_set:ne{luamplib/tag}{#1}
+ \tl_if_empty:NF \currentmpinstancename
+ { \tl_set:Nn\l__luamplib_tag_alt_dflt_tl {metapost~figure~\currentmpinstancename} }
+ \mplibtmptoks{}\ltxdomplibcode
+ }
+\RenewDocumentCommand\mpfig{s O{}}
+ {
+ \begingroup
+ \IfBooleanTF{#1}
+ {\mplibprempfig *}
+ {
+ \msg_set:nnn {luamplib}{alt-text-missing}
+ {
+ Alternative~text~for~mpfig~is~missing.\\
+ Using~the~default~value~'##1'~instead.
+ }
+ \keys_set:ne{luamplib/tag}{#2}
+ \tl_if_empty:NF \mpfiginstancename
+ { \tl_set:Nn\l__luamplib_tag_alt_dflt_tl {metapost~figure~\mpfiginstancename} }
+ \mplibmainmpfig
+ }
+ }
+\RenewDocumentCommand\usemplibgroup{O{} m}
+ {
+ \begingroup
+ \msg_set:nnn {luamplib}{alt-text-missing}
+ {
+ Alternative~text~for~usemplibgroup~is~missing.\\
+ Using~the~default~value~'##1'~instead.
+ }
+ \keys_set:ne{luamplib/tag}{#1}
+ \tl_set:Nn\l__luamplib_tag_alt_dflt_tl {metapost~figure~#2}
+ \mplibstarttousemplibgroup
+ \csname luamplib.group.#2\endcsname
+ \mplibstoptousemplibgroup
+ \endgroup
+ }
+\cs_new_nopar:Npn \mplibalttext #1
+{
+ \tl_set:Ne \l__luamplib_tag_alt_tl {\text_purify:n{#1}}
+}
+\cs_new_nopar:Npn \mplibactualtext #1
+{
+ \tl_set:Ne \l__luamplib_tag_actual_tl {\text_purify:n{#1}}
+}
+\ExplSyntaxOff
\endinput
%%
%% End of file `luamplib.sty'.
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-adjust.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-adjust.lua
index 89ad7816d2d..2214f1907c4 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltj-adjust.lua
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-adjust.lua
@@ -37,6 +37,7 @@ local node_tail = node.direct.tail
local get_attr = node.direct.get_attribute
local set_attr = node.direct.set_attribute
local insert_after = node.direct.insert_after
+local node_remove = node.direct.remove
local id_glyph = node.id 'glyph'
local id_kern = node.id 'kern'
@@ -205,7 +206,7 @@ end
-- step 1 最終行用
local min, max = math.min, math.max
local setsubtype = node.direct.setsubtype
-local function aw_step1_last(p, total)
+local function aw_step1_last(p, total, removed_le)
local head = getlist(p)
local x = node_tail(head); if not x then return total, false end
-- x: \rightskip
@@ -246,6 +247,7 @@ local function aw_step1_last(p, total)
-- 続行条件2: min(eadt[1], 0)<= \parfillskip <= max(eadt[#eadt], 0)
local pfw = getwidth(pf)
+ (total>0 and getfield(pf, 'stretch') or -getfield(pf, 'shrink')) *getfield(p, 'glue_set')
+ + removed_le
if pfw<min(0,eadt[1]) or max(0,eadt[#eadt])<pfw then return total, false end
-- \parfillskip を 0 にする
total = total + getwidth(pf)
@@ -393,6 +395,21 @@ do
end
end
end
+local insert_lineend_kern_tail
+do
+ local insert_before = node.direct.insert_before
+ local KINSOKU = luatexja.icflag_table.KINSOKU
+ insert_lineend_kern_tail = function (head, nq, last)
+ if nq.met then
+ local eadt = nq.met.char_type[nq.class].end_adjust
+ if eadt and eadt[1]<0 then
+ local x = node_new(id_kern, 1)
+ setkern(x, eadt[1]); set_attr(x, attr_icflag, LINEEND)
+ insert_before(head, node_prev(last), x)
+ end
+ end
+ end
+end
local adjust_width
do
@@ -408,7 +425,15 @@ do
last_p = p
end
if last_p then
- myaw_step2(last_p, myaw_step1_last(last_p, get_total_stretched(last_p)))
+ local removed_le = 0
+ local p = getlist(last_p); local pf = node_prev(node_tail(p))
+ if getid(pf) == id_glue and getsubtype(pf) == 15 then
+ pf = node_prev(node_prev(pf))
+ if getid(pf) == id_kern and get_attr_icflag(pf)==LINEEND then
+ removed_le = getwidth(pf); node_remove(p, pf); node_free(pf)
+ end
+ end
+ myaw_step2(last_p, myaw_step1_last(last_p, get_total_stretched(last_p), removed_le))
end
return to_node(head)
end
@@ -426,6 +451,7 @@ do
if status_le==2 then
if not luatexbase.in_callback('luatexja.adjust_jfmglue', 'luatexja.adjust') then
ltjb.add_to_callback('luatexja.adjust_jfmglue', insert_lineend_kern, 'luatexja.adjust')
+ ltjb.add_to_callback('luatexja.adjust_jfmglue_tail', insert_lineend_kern_tail, 'luatexja.adjust')
end
myaw_step1, myaw_step1_last = dummy, aw_step1_last
else
@@ -435,7 +461,8 @@ do
myaw_step1, myaw_step1_last = aw_step1, aw_step1_last
end
if luatexbase.in_callback('luatexja.adjust_jfmglue', 'luatexja.adjust') then
- luatexbase.remove_from_callback('luatexja.adjust_jfmglue', 'luatexja.adjust')
+ luatexbase.remove_from_callback('luatexja.adjust_jfmglue', 'luatexja.adjust')
+ luatexbase.remove_from_callback('luatexja.adjust_jfmglue_tail', 'luatexja.adjust')
end
end
myaw_step2 = (status_pr>0) and aw_step2 or aw_step2_dummy
@@ -560,7 +587,6 @@ end
do
local ltja = luatexja.adjust
local sid_user = node.subtype 'user_defined'
- local node_remove = node.direct.remove
local node_write = node.direct.write
local getvalue = node.direct.getdata
local setvalue = node.direct.setdata
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua
index 6eda9f0fdeb..38d9a72d52b 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua
@@ -3,7 +3,7 @@
--
luatexbase.provides_module({
name = 'luatexja.jfmglue',
- date = '2024-09-01',
+ date = '2024-10-12',
description = 'Insertion process of JFM glues, [x]kanjiskip and others',
})
luatexja.jfmglue = luatexja.jfmglue or {}
@@ -587,7 +587,7 @@ function calc_np(last, lp)
if k then return lp end
end
end
- Np=nil
+ Np = nil
end
end -- 001 -----------------------------------------------
@@ -693,6 +693,7 @@ end
-------------------- 最下層の処理
luatexbase.create_callback('luatexja.adjust_jfmglue', 'simple', function(n) return n end)
+luatexbase.create_callback('luatexja.adjust_jfmglue_tail', 'simple', function(n) return n end)
-- change penalties (or create a new penalty, if needed)
local function handle_penalty_normal(post, pre, g)
@@ -1138,6 +1139,7 @@ local function handle_list_tail(mode, last)
adjust_nq()
if mode then
-- the current list is to be line-breaked.
+ call_callback('luatexja.adjust_jfmglue_tail', head, Nq, last)
-- Insert \jcharwidowpenalty
if widow_Np.first then handle_penalty_jwp() end
else
diff --git a/Master/texmf-dist/tex/luatex/luatexja/luatexja-core.sty b/Master/texmf-dist/tex/luatex/luatexja/luatexja-core.sty
index a5801ed386c..341c7aa37d3 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/luatexja-core.sty
+++ b/Master/texmf-dist/tex/luatex/luatexja/luatexja-core.sty
@@ -68,7 +68,7 @@
\expandafter\let\csname ifltj@in@latex\expandafter\endcsname
\csname iftrue\endcsname
\NeedsTeXFormat{LaTeX2e}
- \ProvidesPackage{luatexja-core}[2023-04-06 Core of LuaTeX-ja]
+ \ProvidesPackage{luatexja-core}[2023-10-07 Core of LuaTeX-ja]
\endlinechar=13 %
\RequirePackage{infwarerr}
\endlinechar=-1 %
@@ -774,10 +774,9 @@
%%------------------ Load module for the format
-
\directlua{luatexja.load_kinsoku()}
\ifltj@in@latex %<*LaTeX>
- \RequirePackage{ltj-latex}
+ \usepackage{ltj-latex}
\else\ifltj@in@plain %<*plain>
\input ltj-plain.sty %
\fi\fi %</LaTeX|plain>
diff --git a/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty b/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty
index 90bb4fdf7e3..8b05af3cc9e 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty
+++ b/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty
@@ -27,7 +27,7 @@
\newif\ifltj@disablejfam
%%%% VERSION
-\def\LuaTeXjaversion{20240909.0}
+\def\LuaTeXjaversion{20241014.0}
%% Check if LaTeX is used.
\begingroup\expandafter\expandafter\expandafter\endgroup
diff --git a/Master/texmf-dist/tex/luatex/luaxml/luaxml-domobject.lua b/Master/texmf-dist/tex/luatex/luaxml/luaxml-domobject.lua
index dca38df0db5..d60b1a291e2 100644
--- a/Master/texmf-dist/tex/luatex/luaxml/luaxml-domobject.lua
+++ b/Master/texmf-dist/tex/luatex/luaxml/luaxml-domobject.lua
@@ -35,6 +35,13 @@ local escapes = {
["`"] = "&#x60;"
}
+-- declarations of local functions
+local html_to_dom
+local html_parse
+local parse
+
+
+
local function escape(search, text)
return text:gsub(search, function(ch)
return escapes[ch] or ""
@@ -162,7 +169,7 @@ end
--- XML parsing function
-- Parse the XML text and create the DOM object.
-- @return DOM_Object
-local parse = function(
+parse = function(
xmltext --- String to be parsed
,voidElements --- hash table with void elements
)
@@ -617,6 +624,88 @@ local parse = function(
return el:get_sibling_node(-1)
end
+ --- parse string as HTML or XML and return created elements
+ --- @return table elements
+ function DOM_Object:create_template(
+ str,
+ is_xml
+ )
+ -- <> is a dummy element, we just need to wrap everything in some element
+ str = "<>" .. (str or "") .. "</>"
+ local template = is_xml and parse(str) or parse(str)
+ local root = template:root_node()._children[1]
+ return root
+ end
+
+ --- parse string as HTML or XML and insert it as a child of the current node
+ function DOM_Object:inner_html(
+ str, --- HTML or XML to be inserted
+ is_xml --- [optional] Pass true to parse as XML, otherwise parse as HTML
+ )
+ local el = self
+ local root = self:create_template(str, is_xml)
+ -- replace original children of the current element with children of the dummy element created by parsing
+ el._children = root._children
+ return el
+ end
+
+
+ --- parse string as HTML or XML and insert it before current the element
+ function DOM_Object:insert_before_begin(
+ str, --- HTML or XML to be inserted
+ is_xml --- [optional] Pass true to parse as XML, otherwise parse as HTML
+ )
+ local el = self
+ local root = self:create_template(str, is_xml)
+ local parent = el:get_parent()
+ local current_pos = el:find_element_pos()
+ local children = root:get_children()
+ for i = 1, #children do
+ parent:add_child_node(children[i], current_pos + i - 1)
+ end
+ end
+
+ --- parse string as HTML or XML and insert it at the beginning of the current the element
+ function DOM_Object:insert_after_begin(
+ str, --- HTML or XML to be inserted
+ is_xml --- [optional] Pass true to parse as XML, otherwise parse as HTML
+ )
+ local el = self
+ local root = self:create_template(str, is_xml)
+ local children = root:get_children()
+ for i = 1, #children do
+ el:add_child_node(children[i], i)
+ end
+ end
+
+ --- parse string as HTML or XML and insert it at the end of the current the element
+ function DOM_Object:insert_before_end(
+ str, --- HTML or XML to be inserted
+ is_xml --- [optional] Pass true to parse as XML, otherwise parse as HTML
+ )
+ local el = self
+ local root = self:create_template(str, is_xml)
+ local children = root:get_children()
+ for i = 1, #children do
+ el:add_child_node(children[i])
+ end
+ end
+
+ --- parse string as HTML or XML and insert it after current the element
+ function DOM_Object:insert_after_end(
+ str, --- HTML or XML to be inserted
+ is_xml --- [optional] Pass true to parse as XML, otherwise parse as HTML
+ )
+ local el = self
+ local root = self:create_template(str, is_xml)
+ local parent = el:get_parent()
+ local current_pos = el:find_element_pos()
+ local children = root:get_children()
+ for i = 1, #children do
+ parent:add_child_node(children[i], current_pos + i)
+ end
+ end
+
-- include the methods to all xml nodes
save_methods(parser._handler.root)
@@ -627,7 +716,7 @@ end
-- table of elements that should be kept without XML escaping in the DOM serialization
local verbatim_elements = {script=true, style=true}
-local function html_to_dom(html_object)
+function html_to_dom(html_object)
-- convert parsed HTML DOM to the XML DOM
local dom, DOM_Object = parse("") -- use empty text to just initialize the DOM object
-- use root of the DOM object as the original parent
@@ -687,7 +776,7 @@ end
-- It supports all methods as the object returned by the parse() function.
-- @param html_str string with the HTML code to be parsed
-- @return DOM_Object
-local function html_parse(html_str)
+function html_parse(html_str)
local html_obj = HtmlParser:init(html_str)
local html_dom = html_obj:parse()
return html_to_dom(html_dom)
diff --git a/Master/texmf-dist/tex/luatex/luaxml/luaxml-encodings.lua b/Master/texmf-dist/tex/luatex/luaxml/luaxml-encodings.lua
index 71bfc81dd1b..9369f494a52 100644
--- a/Master/texmf-dist/tex/luatex/luaxml/luaxml-encodings.lua
+++ b/Master/texmf-dist/tex/luatex/luaxml/luaxml-encodings.lua
@@ -1,5 +1,6 @@
--- Convert 8-bit encodings to UTF-8
--- @module luaxml-encodings
+
-- this table is generated automatically by this command:
-- texlua encodings/make_encodings.lua
local encodings = {
diff --git a/Master/texmf-dist/tex/luatex/luaxml/luaxml-htmltemplates.lua b/Master/texmf-dist/tex/luatex/luaxml/luaxml-htmltemplates.lua
new file mode 100644
index 00000000000..171d16f1ae8
--- /dev/null
+++ b/Master/texmf-dist/tex/luatex/luaxml/luaxml-htmltemplates.lua
@@ -0,0 +1,144 @@
+
+local luaxml_sty = require "luaxml-sty"
+-- try
+local xmltransform = luaxml_sty.transformations.html
+if not xmltransform then
+ xmltransform = luaxml_sty.declare_transformer("html")
+end
+
+
+xmltransform:add_action("head", [[
+\tableofcontents
+]])
+
+xmltransform:add_action("img", [[\noindent\includegraphics[max width=\textwidth]{@{src}}]])
+
+xmltransform:add_action("h1", [[\addcontentsline{toc}{section}{%s}\section*{%s}
+]])
+xmltransform:add_action("h2", [[\addcontentsline{toc}{subsection}{%s}\subsection*{%s}
+]])
+-- don't add lower sectioning level than subsection
+xmltransform:add_action("h3", [[\addcontentsline{toc}{subsubsection}{%s}\subsubsection*{%s}
+]])
+xmltransform:add_action("h4", [[\addcontentsline{toc}{subsubsection}{%s}\subsubsection*{%s}
+]])
+xmltransform:add_action("h5", [[\addcontentsline{toc}{subsubsection}{%s}\subsubsection*{%s}
+]])
+xmltransform:add_action("h6", [[\addcontentsline{toc}{subsubsection}{%s}\subsubsection*{%s}
+]])
+
+xmltransform:add_action("i", [[\textit{%s}]])
+xmltransform:add_action("em", [[\emph{%s}]])
+xmltransform:add_action("b", [[\textbf{%s}]])
+xmltransform:add_action("strong", [[\textbf{%s}]])
+xmltransform:add_action("tt", [[\texttt{%s}]])
+xmltransform:add_action("samp", [[\texttt{%s}]])
+xmltransform:add_action("kbd", [[\texttt{%s}]])
+xmltransform:add_action("var", [[\textit{%s}]])
+xmltransform:add_action("dfn", [[\texttt{%s}]])
+xmltransform:add_action("code", [[\texttt{%s}]])
+xmltransform:add_action("a[href]", [[\textit{%s}\protect\footnote{\texttt{@{href}}}]])
+
+
+local itemize = [[
+\begin{itemize}
+%s
+\end{itemize}
+]]
+xmltransform:add_action("ul", itemize)
+xmltransform:add_action("menu", itemize)
+xmltransform:add_action("ol", [[
+\begin{enumerate}
+%s
+\end{enumerate}
+]])
+
+xmltransform:add_action("dl", [[
+\begin{description}
+%s
+\end{description}
+]])
+
+
+xmltransform:add_action("li", "\\item %s\n")
+xmltransform:add_action("dt", "\\item[%s] ")
+
+local quote = [[
+\begin{quotation}
+%s
+\end{quotation}
+]]
+
+xmltransform:add_action("blockquote", quote)
+xmltransform:add_action("q", "\\enquote{%s}")
+xmltransform:add_action("abbr", "%s\\protect\\footnote{@{title}}")
+xmltransform:add_action("sup", "\\textsuperscript{%s}")
+xmltransform:add_action("sub", "\\textsubscript{%s}")
+
+xmltransform:add_action("table", [[
+\begin{calstable}
+%s
+\end{calstable}
+]])
+
+xmltransform:add_action("tr", "\\brow %s \\erow")
+xmltransform:add_action("td", "\\cell{%s}")
+xmltransform:add_action("th", "\\cell{%s}")
+
+
+-- this is the original code for verbatim, but I changed LuaXML to not escape characters in verbatim,
+-- so we can use the verbatim environment
+xmltransform:add_action("pre", [[{\parindent=0pt\obeylines\ttfamily\catcode`\ =\active\def {\ }\catcode`\#=11%%
+%s}
+
+]], {verbatim=true})
+xmltransform:add_action("pre *", [[%s]])
+
+--
+xmltransform:add_action("pre", [[
+\begin{verbatim}%s\end{verbatim}
+]], {verbatim=true})
+
+xmltransform:add_action("details", [[%s
+]])
+
+xmltransform:add_action("details summary", [[
+\medskip
+\noindent %s
+
+\smallskip
+\noindent
+]])
+
+xmltransform:add_action("figure", [[
+\begin{figure}[hbt!]
+\centering
+
+%s
+
+\end{figure}
+]])
+
+xmltransform:add_action("figcaption", [[\caption{%s}]])
+
+
+xmltransform:add_action("p", [[
+
+%s
+
+]])
+
+xmltransform:add_action("br", [[\\]])
+
+-- some fixes for weird web pages
+xmltransform:add_action("a p", [[%s]])
+xmltransform:add_action("h1 a[href], h2 a[href], h3 a[href], h4 a[href], h5 a[href], h6 a[href]", "%s")
+
+
+-- mathjax is special element added by rmodepdf around LaTeX math
+xmltransform:add_action("mathjax",[[%s]], {verbatim=true,collapse_newlines=false})
+
+xmltransform:add_action("hyperlink", "\\hyperlink{@{href}}{%s}")
+xmltransform:add_action("hypertarget", "\\hypertarget{@{id}}{%s}")
+
+return xmltransform
diff --git a/Master/texmf-dist/tex/luatex/luaxml/luaxml-mod-html.lua b/Master/texmf-dist/tex/luatex/luaxml/luaxml-mod-html.lua
index d8c2b7e9327..9f99cc3bc4a 100644
--- a/Master/texmf-dist/tex/luatex/luaxml/luaxml-mod-html.lua
+++ b/Master/texmf-dist/tex/luatex/luaxml/luaxml-mod-html.lua
@@ -1986,7 +1986,9 @@ function HtmlParser:handle_insertion_mode(token)
local name = table.concat(token.name)
if close_address_at_end[name] then
if is_in_scope(self, name, {}) then
+ self:generate_implied_endtags()
self:close_unfinished(name)
+ return false
else
token.type = "ignore"
end
@@ -2017,6 +2019,7 @@ function HtmlParser:handle_insertion_mode(token)
end
end
end
+ return true
end
local rawtext_elements = hash_from_array {"style", "textarea", "xmp"}
@@ -2057,12 +2060,15 @@ end
function HtmlParser:end_tag()
-- close current opened element
local token = self.current_token
- self:handle_insertion_mode(token)
+ local should_pop = self:handle_insertion_mode(token)
if token.type == "end_tag" then
if #self.unfinished==0 then return nil end
- -- close the current element only if the token is in the current scope
- if is_in_scope(self, table.concat(token.name), {}) then
- self:pop_element()
+ -- we shouldn't close elements if handle_insertion_mode() already closed them
+ if should_pop then
+ -- close the current element only if the token is in the current scope
+ if is_in_scope(self, table.concat(token.name), {}) then
+ self:pop_element()
+ end
end
end
end
diff --git a/Master/texmf-dist/tex/luatex/luaxml/luaxml-namedentities.lua b/Master/texmf-dist/tex/luatex/luaxml/luaxml-namedentities.lua
index 5c5ff007770..0e6399ab135 100644
--- a/Master/texmf-dist/tex/luatex/luaxml/luaxml-namedentities.lua
+++ b/Master/texmf-dist/tex/luatex/luaxml/luaxml-namedentities.lua
@@ -1,2233 +1,2234 @@
+local utf8 = require "utf8"
return {
-["Implies"]="⇒",
-["longrightarrow"]="⟶",
-["precneqq"]="⪵",
-["geqslant"]="⩾",
-["Product"]="∏",
-["Scirc"]="Ŝ",
-["lvnE"]="≨︀",
-["dotminus"]="∸",
-["sscr"]="𝓈",
-["capdot"]="⩀",
-["dlcrop"]="⌍",
-["omacr"]="ō",
-["sext"]="✶",
-["xutri"]="△",
-["xrArr"]="⟹",
-["glE"]="⪒",
-["NotSupersetEqual"]="⊉",
-["backsim"]="∽",
+["Subset"]="⋐",
+["Chi"]="Χ",
+["tprime"]="‴",
+["lneq"]="⪇",
+["RightUpTeeVector"]="⥜",
+["cscr"]="𝒸",
+["leftrightarrows"]="⇆",
+["LeftRightVector"]="⥎",
+["Laplacetrf"]="ℒ",
+["boxHd"]="╤",
+["GreaterSlantEqual"]="⩾",
+["sqsub"]="⊏",
+["nvdash"]="⊬",
+["boxHu"]="╧",
+["vcy"]="в",
+["DiacriticalDoubleAcute"]="˝",
+["nvHarr"]="⤄",
+["lnapprox"]="⪉",
+["fscr"]="𝒻",
+["OverBracket"]="⎴",
+["pm"]="±",
+["ovbar"]="⌽",
+["larrhk"]="↩",
+["atilde"]="ã",
+["Igrave"]="Ì",
+["profsurf"]="⌓",
+["Sigma"]="Σ",
+["rHar"]="⥤",
+["Gcedil"]="Ģ",
+["sect"]="§",
+["nmid"]="∤",
+["escr"]="ℯ",
+["delta"]="δ",
+["male"]="♂",
+["Integral"]="∫",
+["RightUpVectorBar"]="⥔",
+["alefsym"]="ℵ",
+["nsqsube"]="⋢",
+["Nacute"]="Ń",
+["mcomma"]="⨩",
+["ApplyFunction"]=utf8.char(0x2061),
+["rfisht"]="⥽",
+["phmmat"]="ℳ",
+["rarrw"]="↝",
+["backepsilon"]="϶",
+["hscr"]="𝒽",
+["middot"]="·",
+["ldrushar"]="⥋",
+["supne"]="⊋",
+["Longleftrightarrow"]="⟺",
+["Oacute"]="Ó",
+["af"]="⁡",
["sup"]="⊃",
-["realpart"]="ℜ",
+["lozenge"]="◊",
+["scy"]="с",
+["gscr"]="ℊ",
+["smallsetminus"]="∖",
["hardcy"]="ъ",
-["sqcap"]="⊓",
-["brvbar"]="¦",
-["LT"]="<",
-["udarr"]="⇅",
-["lozf"]="⧫",
-["Eogon"]="Ę",
-["frac18"]="⅛",
-["lesssim"]="≲",
-["wedbar"]="⩟",
-["EmptyVerySmallSquare"]="▫",
-["aring"]="å",
-["lesdoto"]="⪁",
-["ltquest"]="⩻",
-["LeftUpTeeVector"]="⥠",
-["FilledSmallSquare"]="◼",
-["mho"]="℧",
-["NotGreaterTilde"]="≵",
-["xharr"]="⟷",
-["NotSucceedsEqual"]="⪰̸",
-["sqsupset"]="⊐",
-["Ccedil"]="Ç",
-["aacute"]="á",
-["succcurlyeq"]="≽",
-["gneq"]="⪈",
-["forall"]="∀",
-["rightharpoonup"]="⇀",
-["leftarrow"]="←",
-["ang"]="∠",
-["mapstoup"]="↥",
-["xscr"]="𝓍",
-["NotTildeEqual"]="≄",
-["ograve"]="ò",
-["boxdl"]="┐",
-["DownLeftVectorBar"]="⥖",
-["nsup"]="⊅",
-["shchcy"]="щ",
-["demptyv"]="⦱",
-["apos"]="'",
-["between"]="≬",
-["leftrightsquigarrow"]="↭",
-["gtcc"]="⪧",
-["grave"]="`",
-["bigodot"]="⨀",
-["oline"]="‾",
-["angmsdad"]="⦫",
-["NotCongruent"]="≢",
-["gtquest"]="⩼",
-["fltns"]="▱",
-["smeparsl"]="⧤",
-["Eta"]="Η",
-["ltdot"]="⋖",
-["rhard"]="⇁",
-["rscr"]="𝓇",
-["ETH"]="Ð",
-["iocy"]="ё",
-["semi"]=";",
-["nexists"]="∄",
-["approxeq"]="≊",
-["compfn"]="∘",
-["sstarf"]="⋆",
-["angrtvbd"]="⦝",
-["gnap"]="⪊",
-["mDDot"]="∺",
-["udblac"]="ű",
-["Acirc"]="Â",
-["UnderParenthesis"]="⏝",
-["nisd"]="⋺",
-["lneq"]="⪇",
-["Dagger"]="‡",
-["qscr"]="𝓆",
-["gneqq"]="≩",
-["doteqdot"]="≑",
["DoubleVerticalBar"]="∥",
-["emptyset"]="∅",
-["lEg"]="⪋",
-["subseteq"]="⊆",
-["dwangle"]="⦦",
-["dotplus"]="∔",
-["NotPrecedesSlantEqual"]="⋠",
-["bnot"]="⌐",
-["LeftDownVector"]="⇃",
-["leg"]="⋚",
-["Therefore"]="∴",
-["Omega"]="Ω",
-["acE"]="∾̳",
-["Auml"]="Ä",
-["xvee"]="⋁",
-["Eacute"]="É",
-["LeftFloor"]="⌊",
-["swnwar"]="⤪",
-["Jukcy"]="Є",
-["nless"]="≮",
-["NotSquareSupersetEqual"]="⋣",
-["larrfs"]="⤝",
-["gcy"]="г",
-["solbar"]="⌿",
-["rharul"]="⥬",
-["dscy"]="ѕ",
-["yen"]="¥",
-["ForAll"]="∀",
-["DownArrow"]="↓",
-["qprime"]="⁗",
-["NegativeThickSpace"]="​",
-["part"]="∂",
-["Iukcy"]="І",
-["ltcc"]="⪦",
-["xlArr"]="⟸",
-["fcy"]="ф",
-["gl"]="≷",
+["Yuml"]="Ÿ",
+["plusdu"]="⨥",
+["NotSucceedsSlantEqual"]="⋡",
+["nwnear"]="⤧",
+["lfloor"]="⌊",
+["rcy"]="р",
+["jscr"]="𝒿",
+["AMP"]="&",
+["acute"]="´",
+["uacute"]="ú",
+["Or"]="⩔",
+["rdldhar"]="⥩",
+["langd"]="⦑",
+["Iacute"]="Í",
+["spar"]="∥",
+["ucy"]="у",
["rsh"]="↱",
-["lrhar"]="⇋",
-["divide"]="÷",
-["bemptyv"]="⦰",
-["rx"]="℞",
-["ecy"]="э",
-["ApplyFunction"]="⁡",
-["divideontimes"]="⋇",
-["prod"]="∏",
-["boxHU"]="╩",
-["HARDcy"]="Ъ",
-["mstpos"]="∾",
-["llcorner"]="⌞",
-["rsquor"]="’",
-["NotTildeFullEqual"]="≇",
-["mlcp"]="⫛",
-["cemptyv"]="⦲",
-["Proportional"]="∝",
-["DiacriticalDoubleAcute"]="˝",
-["dcy"]="д",
-["Yacute"]="Ý",
-["egsdot"]="⪘",
-["hslash"]="ℏ",
-["infin"]="∞",
-["Auml"]="Ä",
-["Wcirc"]="Ŵ",
-["larrtl"]="↢",
-["Aacute"]="Á",
-["LeftTriangleEqual"]="⊴",
-["NegativeMediumSpace"]="​",
-["TripleDot"]="⃛",
-["utdot"]="⋰",
-["isinv"]="∈",
-["looparrowright"]="↬",
-["loang"]="⟬",
-["multimap"]="⊸",
-["NotLessEqual"]="≰",
-["midcir"]="⫰",
-["nge"]="≱",
-["quot"]="\"",
-["REG"]="®",
-["div"]="÷",
-["complexes"]="ℂ",
-["lhblk"]="▄",
-["gvnE"]="≩︀",
-["leftharpoonup"]="↼",
-["it"]="⁢",
-["clubsuit"]="♣",
-["iff"]="⇔",
-["Hacek"]="ˇ",
-["CircleTimes"]="⊗",
-["Cacute"]="Ć",
-["rarrtl"]="↣",
-["RightDownVector"]="⇂",
-["rarrfs"]="⤞",
-["UpArrowBar"]="⤒",
-["male"]="♂",
-["RightTriangle"]="⊳",
+["Kcedil"]="Ķ",
+["iscr"]="𝒾",
+["lambda"]="λ",
+["lbrkslu"]="⦍",
+["napE"]="⩰̸",
+["shcy"]="ш",
+["nsupE"]="⫆̸",
+["Ycirc"]="Ŷ",
+["sect"]="§",
+["precnapprox"]="⪹",
+["iocy"]="ё",
+["dzcy"]="џ",
+["ETH"]="Ð",
["GreaterTilde"]="≳",
-["Barwed"]="⌆",
-["ltlarr"]="⥶",
-["Zdot"]="Ż",
-["parsim"]="⫳",
-["Ugrave"]="Ù",
-["Dot"]="¨",
-["circleddash"]="⊝",
-["rsaquo"]="›",
-["hyphen"]="‐",
-["angrt"]="∟",
-["RightTriangleEqual"]="⊵",
-["Darr"]="↡",
-["ulcrop"]="⌏",
-["olcir"]="⦾",
-["gimel"]="ℷ",
-["gel"]="⋛",
-["SquareSubset"]="⊏",
-["Uacute"]="Ú",
-["gt"]=">",
-["lnap"]="⪉",
-["Union"]="⋃",
+["coprod"]="∐",
+["rpar"]=")",
+["lthree"]="⋋",
+["ImaginaryI"]="ⅈ",
+["DoubleUpDownArrow"]="⇕",
+["intercal"]="⊺",
+["spadesuit"]="♠",
+["boxVH"]="╬",
+["smashp"]="⨳",
["nu"]="ν",
-["and"]="∧",
-["ltcir"]="⩹",
-["Fscr"]="ℱ",
-["ee"]="ⅇ",
-["laquo"]="«",
-["Hfr"]="ℌ",
-["prec"]="≺",
-["imagline"]="ℐ",
-["precnsim"]="⋨",
-["zhcy"]="ж",
+["Agrave"]="À",
+["boxtimes"]="⊠",
+["sext"]="✶",
+["nsub"]="⊄",
+["oelig"]="œ",
+["GreaterEqual"]="≥",
+["TRADE"]="™",
+["dtrif"]="▾",
+["nless"]="≮",
["mu"]="μ",
-["rlarr"]="⇄",
-["pound"]="£",
-["origof"]="⊶",
-["rfloor"]="⌋",
-["lnsim"]="⋦",
-["nVdash"]="⊮",
-["otimes"]="⊗",
-["iuml"]="ï",
-["Cscr"]="𝒞",
-["lsime"]="⪍",
-["ngeqq"]="≧̸",
-["Del"]="∇",
-["Coproduct"]="∐",
-["NotSubsetEqual"]="⊈",
-["HilbertSpace"]="ℋ",
-["frac58"]="⅝",
-["cap"]="∩",
-["roang"]="⟭",
-["intlarhk"]="⨗",
-["DownTee"]="⊤",
-["thickapprox"]="≈",
-["prnap"]="⪹",
-["laquo"]="«",
-["lesdot"]="⩿",
-["inodot"]="ı",
-["Hscr"]="ℋ",
-["YIcy"]="Ї",
-["ctdot"]="⋯",
-["thetav"]="ϑ",
-["DoubleUpDownArrow"]="⇕",
-["succ"]="≻",
-["nbumpe"]="≏̸",
-["ReverseElement"]="∋",
-["Oacute"]="Ó",
-["equest"]="≟",
-["Lt"]="≪",
-["Nacute"]="Ń",
-["DiacriticalTilde"]="˜",
-["Escr"]="ℰ",
+["larrsim"]="⥳",
+["GreaterEqualLess"]="⋛",
+["Uuml"]="Ü",
+["LeftArrowBar"]="⇤",
+["ntrianglerighteq"]="⋭",
+["DiacriticalDot"]="˙",
+["LongLeftArrow"]="⟵",
+["agrave"]="à",
+["lmoustache"]="⎰",
+["nvDash"]="⊭",
+["para"]="¶",
+["nlt"]="≮",
+["Eacute"]="É",
+["spades"]="♠",
+["lrcorner"]="⌟",
+["checkmark"]="✓",
+["lessdot"]="⋖",
+["opar"]="⦷",
+["nVDash"]="⊯",
+["pertenk"]="‱",
+["range"]="⦥",
+["Pr"]="⪻",
+["Gammad"]="Ϝ",
+["ape"]="≊",
+["Longleftarrow"]="⟸",
+["boxV"]="║",
+["rightthreetimes"]="⋌",
+["gnap"]="⪊",
+["vzigzag"]="⦚",
+["Ecirc"]="Ê",
+["npar"]="∦",
+["notinvb"]="⋷",
+["Tau"]="Τ",
+["blank"]="␣",
+["Kappa"]="Κ",
+["rmoust"]="⎱",
+["GJcy"]="Ѓ",
+["ufisht"]="⥾",
+["NotLeftTriangleBar"]="⧏̸",
+["bigvee"]="⋁",
+["lrhar"]="⇋",
+["supset"]="⊃",
+["uwangle"]="⦧",
+["UpTeeArrow"]="↥",
+["supE"]="⫆",
+["imof"]="⊷",
+["leg"]="⋚",
+["notniva"]="∌",
+["nvgt"]=">⃒",
+["rthree"]="⋌",
+["yfr"]="𝔶",
+["uHar"]="⥣",
+["nshortmid"]="∤",
+["biguplus"]="⨄",
+["barvee"]="⊽",
+["iff"]="⇔",
["boxvH"]="╪",
-["Ifr"]="ℑ",
-["mp"]="∓",
-["ell"]="ℓ",
-["Iacute"]="Í",
+["simrarr"]="⥲",
+["Egrave"]="È",
+["ntilde"]="ñ",
+["VerticalTilde"]="≀",
+["sigmaf"]="ς",
+["khcy"]="х",
+["planck"]="ℏ",
["NotNestedGreaterGreater"]="⪢̸",
+["NonBreakingSpace"]=" ",
+["OpenCurlyQuote"]="‘",
+["supsim"]="⫈",
+["cudarrl"]="⤸",
+["theta"]="θ",
+["notindot"]="⋵̸",
+["Omicron"]="Ο",
+["ccedil"]="ç",
+["colone"]="≔",
+["bscr"]="𝒷",
+["Dagger"]="‡",
+["comma"]=",",
+["Acirc"]="Â",
+["plankv"]="ℏ",
+["boxdr"]="┌",
+["rarrap"]="⥵",
+["rmoustache"]="⎱",
+["LeftAngleBracket"]="⟨",
+["Cacute"]="Ć",
+["blk34"]="▓",
+["rfloor"]="⌋",
+["awconint"]="∳",
+["sfrown"]="⌢",
+["middot"]="·",
+["ascr"]="𝒶",
+["dot"]="˙",
+["caron"]="ˇ",
+["image"]="ℑ",
+["esdot"]="≐",
+["ohbar"]="⦵",
+["rarrb"]="⇥",
+["submult"]="⫁",
+["plusb"]="⊞",
+["oopf"]="𝕠",
+["breve"]="˘",
+["conint"]="∮",
+["angrt"]="∟",
+["nbump"]="≎̸",
["raquo"]="»",
-["Zcy"]="З",
-["micro"]="µ",
-["dzigrarr"]="⟿",
-["rtrif"]="▸",
-["Uuml"]="Ü",
-["nvHarr"]="⤄",
-["leqslant"]="⩽",
-["tritime"]="⨻",
-["nlarr"]="↚",
+["Iuml"]="Ï",
+["Rcedil"]="Ŗ",
+["minus"]="−",
+["nsucceq"]="⪰̸",
+["telrec"]="⌕",
+["CHcy"]="Ч",
+["nrightarrow"]="↛",
["NotRightTriangle"]="⋫",
-["apid"]="≋",
-["succeq"]="⪰",
-["NotEqualTilde"]="≂̸",
-["varphi"]="ϕ",
-["Vert"]="‖",
-["int"]="∫",
-["lurdshar"]="⥊",
-["lneqq"]="≨",
-["Jsercy"]="Ј",
-["Superset"]="⊃",
-["subsetneqq"]="⫋",
-["gap"]="⪆",
-["ssmile"]="⌣",
-["Ugrave"]="Ù",
+["zfr"]="𝔷",
+["succ"]="≻",
+["Aacute"]="Á",
+["NestedLessLess"]="≪",
+["RightTeeArrow"]="↦",
+["homtht"]="∻",
+["Cup"]="⋓",
+["lcub"]="{",
+["race"]="∽̱",
+["THORN"]="Þ",
+["propto"]="∝",
+["odblac"]="ő",
+["mumap"]="⊸",
+["filig"]="fi",
+["ecir"]="≖",
+["DoubleRightArrow"]="⇒",
+["npreceq"]="⪯̸",
+["female"]="♀",
+["LeftFloor"]="⌊",
+["gtrarr"]="⥸",
+["dotsquare"]="⊡",
+["map"]="↦",
+["OverBrace"]="⏞",
+["zopf"]="𝕫",
+["rang"]="⟩",
+["laquo"]="«",
+["elsdot"]="⪗",
+["frac56"]="⅚",
+["Iuml"]="Ï",
+["ocirc"]="ô",
+["clubs"]="♣",
["IOcy"]="Ё",
-["ltimes"]="⋉",
-["UnderBracket"]="⎵",
-["subseteqq"]="⫅",
-["Dscr"]="𝒟",
-["dtrif"]="▾",
-["raquo"]="»",
-["hbar"]="ℏ",
-["ge"]="≥",
-["cudarrr"]="⤵",
-["icy"]="и",
-["plusdo"]="∔",
-["bull"]="•",
-["weierp"]="℘",
-["mapsto"]="↦",
-["Uring"]="Ů",
-["supplus"]="⫀",
-["Succeeds"]="≻",
-["Ascr"]="𝒜",
-["cdot"]="ċ",
-["nwarr"]="↖",
-["target"]="⌖",
-["dharr"]="⇂",
-["curlyvee"]="⋎",
-["supE"]="⫆",
-["emsp13"]=" ",
-["ltrie"]="⊴",
-["olarr"]="↺",
-["RightTeeVector"]="⥛",
-["Vvdash"]="⊪",
-["larrsim"]="⥳",
-["varsubsetneq"]="⊊︀",
-["Not"]="⫬",
-["CenterDot"]="·",
-["PlusMinus"]="±",
-["aring"]="å",
-["Nscr"]="𝒩",
-["delta"]="δ",
-["npre"]="⪯̸",
-["Vcy"]="В",
-["NotVerticalBar"]="∤",
-["scpolint"]="⨓",
-["rcedil"]="ŗ",
-["Lmidot"]="Ŀ",
-["DScy"]="Ѕ",
-["nsubseteq"]="⊈",
-["ngE"]="≧̸",
-["NotSquareSubsetEqual"]="⋢",
+["scnE"]="⪶",
+["deg"]="°",
+["simgE"]="⪠",
+["nap"]="≉",
+["blacktriangle"]="▴",
["edot"]="ė",
-["Ucy"]="У",
-["lessapprox"]="⪅",
-["niv"]="∋",
-["Kscr"]="𝒦",
-["LeftVectorBar"]="⥒",
-["nhpar"]="⫲",
-["scedil"]="ş",
-["Uacute"]="Ú",
-["ntrianglelefteq"]="⋬",
-["Otilde"]="Õ",
-["iexcl"]="¡",
-["lbrke"]="⦋",
-["simdot"]="⩪",
-["sigmaf"]="ς",
-["Bfr"]="𝔅",
-["pitchfork"]="⋔",
-["ngeqslant"]="⩾̸",
-["Pscr"]="𝒫",
-["gsime"]="⪎",
-["Ouml"]="Ö",
-["rarrsim"]="⥴",
-["subE"]="⫅",
-["otimesas"]="⨶",
-["lfloor"]="⌊",
-["prop"]="∝",
-["imacr"]="ī",
-["blacktriangleleft"]="◂",
-["Ntilde"]="Ñ",
-["llarr"]="⇇",
-["nsucc"]="⊁",
-["PartialD"]="∂",
-["Iacute"]="Í",
-["gdot"]="ġ",
-["Afr"]="𝔄",
-["Igrave"]="Ì",
-["csub"]="⫏",
-["Mscr"]="ℳ",
-["Scy"]="С",
-["bsime"]="⋍",
-["nequiv"]="≢",
-["scnap"]="⪺",
-["Tab"]=" ",
-["Equal"]="⩵",
-["blacklozenge"]="⧫",
-["nrarrc"]="⤳̸",
-["divide"]="÷",
-["RightUpDownVector"]="⥏",
-["iinfin"]="⧜",
-["precnapprox"]="⪹",
-["dArr"]="⇓",
-["orslope"]="⩗",
-["Rcy"]="Р",
-["sqsub"]="⊏",
-["OverBracket"]="⎴",
-["sum"]="∑",
-["ncedil"]="ņ",
-["ltrPar"]="⦖",
-["ii"]="ⅈ",
-["Gcirc"]="Ĝ",
-["SucceedsTilde"]="≿",
-["RightFloor"]="⌋",
-["osol"]="⊘",
-["barwedge"]="⌅",
-["twoheadrightarrow"]="↠",
-["Gscr"]="𝒢",
-["acy"]="а",
-["dtdot"]="⋱",
-["rbrke"]="⦌",
-["imath"]="ı",
-["Hcirc"]="Ĥ",
-["num"]="#",
-["nprec"]="⊀",
-["smallsetminus"]="∖",
-["lesges"]="⪓",
-["LeftUpVector"]="↿",
-["gtdot"]="⋗",
-["theta"]="θ",
-["kappav"]="ϰ",
-["jmath"]="ȷ",
-["Lscr"]="ℒ",
-["Aogon"]="Ą",
-["ltrif"]="◂",
-["DownArrowUpArrow"]="⇵",
+["epsiv"]="ϵ",
+["napprox"]="≉",
+["NotGreaterSlantEqual"]="⩾̸",
["prap"]="⪷",
-["Racute"]="Ŕ",
-["curlyeqprec"]="⋞",
-["bepsi"]="϶",
-["blacktriangle"]="▴",
-["nvap"]="≍⃒",
-["Supset"]="⋑",
-["angmsd"]="∡",
-["boxul"]="┘",
-["LessSlantEqual"]="⩽",
-["GT"]=">",
-["nexist"]="∄",
-["ccupssm"]="⩐",
+["lnap"]="⪉",
+["circledS"]="Ⓢ",
+["lang"]="⟨",
+["qprime"]="⁗",
+["aelig"]="æ",
+["ncongdot"]="⩭̸",
+["supdsub"]="⫘",
+["nltrie"]="⋬",
+["xopf"]="𝕩",
+["LeftDownVector"]="⇃",
+["duarr"]="⇵",
+["urcorner"]="⌝",
+["nvltrie"]="⊴⃒",
+["Pi"]="Π",
["Eacute"]="É",
-["ddarr"]="⇊",
+["nGtv"]="≫̸",
+["icirc"]="î",
+["twoheadleftarrow"]="↞",
+["divide"]="÷",
+["yopf"]="𝕪",
["ntlg"]="≸",
-["Iscr"]="ℐ",
-["Jcirc"]="Ĵ",
-["Sacute"]="Ś",
-["capand"]="⩄",
-["gesdoto"]="⪂",
-["olcross"]="⦻",
-["amalg"]="⨿",
-["rarrlp"]="↬",
-["NotLeftTriangle"]="⋪",
-["reals"]="ℝ",
-["bigcup"]="⋃",
-["NJcy"]="Њ",
-["Odblac"]="Ő",
-["hArr"]="⇔",
-["RightArrowLeftArrow"]="⇄",
-["SOFTcy"]="Ь",
-["Lambda"]="Λ",
-["RightCeiling"]="⌉",
-["Vdash"]="⊩",
-["elinters"]="⏧",
-["lsimg"]="⪏",
-["Nopf"]="ℕ",
-["Esim"]="⩳",
-["vzigzag"]="⦚",
-["acd"]="∿",
+["Darr"]="↡",
+["hslash"]="ℏ",
+["Coproduct"]="∐",
+["profline"]="⌒",
+["imagline"]="ℐ",
+["chcy"]="ч",
["ccedil"]="ç",
-["lbarr"]="⤌",
-["nmid"]="∤",
-["Backslash"]="∖",
-["Laplacetrf"]="ℒ",
-["npr"]="⊀",
-["nap"]="≉",
-["nsupseteqq"]="⫆̸",
-["igrave"]="ì",
-["LJcy"]="Љ",
-["lessgtr"]="≶",
-["angle"]="∠",
-["lAarr"]="⇚",
-["notin"]="∉",
-["orv"]="⩛",
-["gtreqqless"]="⪌",
-["CircleMinus"]="⊖",
-["Diamond"]="⋄",
-["map"]="↦",
-["nvsim"]="∼⃒",
-["pi"]="π",
-["pluscir"]="⨢",
-["boxVH"]="╬",
-["QUOT"]="\"",
-["duarr"]="⇵",
-["lgE"]="⪑",
-["lmoust"]="⎰",
-["lsquo"]="‘",
-["rightrightarrows"]="⇉",
-["times"]="×",
-["iuml"]="ï",
-["andslope"]="⩘",
-["order"]="ℴ",
-["Sub"]="⋐",
-["capcap"]="⩋",
-["nabla"]="∇",
-["ntriangleleft"]="⋪",
-["blk14"]="░",
-["Kopf"]="𝕂",
-["lArr"]="⇐",
-["Qopf"]="ℚ",
-["circledS"]="Ⓢ",
-["omid"]="⦶",
-["ord"]="⩝",
-["lvertneqq"]="≨︀",
-["updownarrow"]="↕",
-["yacute"]="ý",
-["ni"]="∋",
-["hamilt"]="ℋ",
-["Jopf"]="𝕁",
-["CupCap"]="≍",
-["lbrack"]="[",
-["preccurlyeq"]="≼",
-["Ropf"]="ℝ",
-["lessdot"]="⋖",
-["blank"]="␣",
-["SucceedsEqual"]="⪰",
-["triangleleft"]="◃",
-["ring"]="˚",
-["omega"]="ω",
-["bowtie"]="⋈",
-["Sqrt"]="√",
-["uuml"]="ü",
-["Udblac"]="Ű",
-["diams"]="♦",
-["Oslash"]="Ø",
-["real"]="ℜ",
-["egrave"]="è",
-["prurel"]="⊰",
-["LeftUpDownVector"]="⥑",
-["TildeEqual"]="≃",
-["cuwed"]="⋏",
-["times"]="×",
-["ap"]="≈",
-["lowast"]="∗",
-["Lopf"]="𝕃",
-["bdquo"]="„",
-["blacktriangledown"]="▾",
-["vBarv"]="⫩",
-["Longleftarrow"]="⟸",
-["lesg"]="⋚︀",
-["Popf"]="ℙ",
-["iogon"]="į",
-["vellip"]="⋮",
-["Ntilde"]="Ñ",
-["cwconint"]="∲",
-["boxv"]="│",
-["boxbox"]="⧉",
-["langd"]="⦑",
-["diam"]="⋄",
-["boxHu"]="╧",
-["acute"]="´",
-["Uopf"]="𝕌",
-["Fcy"]="Ф",
-["vee"]="∨",
-["eqslantless"]="⪕",
-["NotLeftTriangleEqual"]="⋬",
-["OverBrace"]="⏞",
-["beta"]="β",
-["Otilde"]="Õ",
-["fjlig"]="fj",
-["uacute"]="ú",
-["CirclePlus"]="⊕",
-["Mellintrf"]="ℳ",
-["Vopf"]="𝕍",
-["Gcy"]="Г",
-["searhk"]="⤥",
-["boxur"]="└",
-["LeftTeeVector"]="⥚",
-["nsubE"]="⫅̸",
-["gvertneqq"]="≩︀",
-["eqcirc"]="≖",
-["nrightarrow"]="↛",
-["DJcy"]="Ђ",
-["tdot"]="⃛",
-["Dcy"]="Д",
-["Sopf"]="𝕊",
-["range"]="⦥",
-["agrave"]="à",
-["gtrsim"]="≳",
-["RightArrowBar"]="⇥",
-["larrlp"]="↫",
-["le"]="≤",
-["xi"]="ξ",
-["gla"]="⪥",
-["GT"]=">",
-["leftarrowtail"]="↢",
-["commat"]="@",
-["rightarrowtail"]="↣",
-["approx"]="≈",
-["sdot"]="⋅",
-["Topf"]="𝕋",
-["Ecy"]="Э",
-["eplus"]="⩱",
-["cir"]="○",
-["Rarrtl"]="⤖",
-["Emacr"]="Ē",
-["Dcaron"]="Ď",
-["Sc"]="⪼",
+["PrecedesEqual"]="⪯",
+["jcirc"]="ĵ",
+["nang"]="∠⃒",
+["Icirc"]="Î",
+["nbumpe"]="≏̸",
+["incare"]="℅",
+["tint"]="∭",
+["nhArr"]="⇎",
+["emsp13"]=" ",
+["blacktriangleleft"]="◂",
+["Star"]="⋆",
+["hkswarow"]="⤦",
+["NegativeThickSpace"]="​",
+["eDot"]="≑",
+["Euml"]="Ë",
+["scaron"]="š",
+["RightDownVectorBar"]="⥕",
["cent"]="¢",
-["rtri"]="▹",
-["cedil"]="¸",
-["spades"]="♠",
-["upsilon"]="υ",
-["boxminus"]="⊟",
-["angmsdaa"]="⦨",
-["zdot"]="ż",
-["Bcy"]="Б",
-["Zscr"]="𝒵",
-["looparrowleft"]="↫",
-["Dfr"]="𝔇",
-["Bumpeq"]="≎",
-["nLeftarrow"]="⇍",
-["equiv"]="≡",
-["Ccaron"]="Č",
-["UpperLeftArrow"]="↖",
-["SubsetEqual"]="⊆",
-["nrArr"]="⇏",
-["loarr"]="⇽",
-["minusdu"]="⨪",
-["sup3"]="³",
-["Zopf"]="ℤ",
-["elsdot"]="⪗",
-["NotLessLess"]="≪̸",
-["eta"]="η",
-["ubrcy"]="ў",
-["Yscr"]="𝒴",
+["jukcy"]="є",
+["backsimeq"]="⋍",
+["Ncy"]="Н",
+["DD"]="ⅅ",
+["circledast"]="⊛",
+["ccirc"]="ĉ",
+["rsaquo"]="›",
+["YIcy"]="Ї",
+["iquest"]="¿",
+["NotExists"]="∄",
+["iukcy"]="і",
+["Tab"]=" ",
+["Equilibrium"]="⇌",
+["nLt"]="≪⃒",
+["yen"]="¥",
+["CircleDot"]="⊙",
+["CircleMinus"]="⊖",
+["topf"]="𝕥",
+["equivDD"]="⩸",
+["DoubleLeftRightArrow"]="⇔",
+["ngsim"]="≵",
+["upuparrows"]="⇈",
+["ll"]="≪",
+["cirscir"]="⧂",
+["ShortLeftArrow"]="←",
+["angmsdag"]="⦮",
+["shortmid"]="∣",
+["ngeqslant"]="⩾̸",
["subset"]="⊂",
-["Cfr"]="ℭ",
-["harrcir"]="⥈",
-["supsetneq"]="⊋",
-["LeftUpVectorBar"]="⥘",
-["LT"]="<",
-["DoubleLeftArrow"]="⇐",
+["curvearrowleft"]="↶",
+["gdot"]="ġ",
["circledcirc"]="⊚",
-["bkarow"]="⤍",
-["rangd"]="⦒",
-["downharpoonright"]="⇂",
-["Wopf"]="𝕎",
-["ast"]="*",
-["planck"]="ℏ",
-["gtrdot"]="⋗",
-["Ffr"]="𝔉",
-["rArr"]="⇒",
-["VeryThinSpace"]=" ",
-["Ecaron"]="Ě",
-["RightVectorBar"]="⥓",
-["divonx"]="⋇",
-["Xopf"]="𝕏",
-["nsubset"]="⊂⃒",
-["Otimes"]="⨷",
-["bot"]="⊥",
-["nsime"]="≄",
-["thorn"]="þ",
-["subsetneq"]="⊊",
-["nltri"]="⋪",
-["Cayleys"]="ℭ",
-["Efr"]="𝔈",
-["Intersection"]="⋂",
-["UnderBar"]="_",
-["fpartint"]="⨍",
-["Iuml"]="Ï",
-["rsquo"]="’",
-["ecir"]="≖",
-["nis"]="⋼",
-["fscr"]="𝒻",
-["hellip"]="…",
-["ogt"]="⧁",
-["ntgl"]="≹",
-["frac14"]="¼",
-["squf"]="▪",
-["circ"]="ˆ",
-["prE"]="⪳",
+["Pcy"]="П",
+["asymp"]="≈",
+["boxUr"]="╙",
+["uopf"]="𝕦",
+["frac15"]="⅕",
+["Iacute"]="Í",
+["Utilde"]="Ũ",
+["Congruent"]="≡",
+["nhpar"]="⫲",
+["capbrcup"]="⩉",
["ordf"]="ª",
-["ZHcy"]="Ж",
-["NegativeVeryThinSpace"]="​",
-["quot"]="\"",
-["excl"]="!",
-["sqcaps"]="⊓︀",
-["gfr"]="𝔤",
-["varsigma"]="ς",
-["nwarrow"]="↖",
-["reg"]="®",
+["SOFTcy"]="Ь",
+["nlArr"]="⇍",
+["not"]="¬",
+["ffllig"]="ffl",
+["nprec"]="⊀",
+["Hat"]="^",
+["Auml"]="Ä",
+["ntriangleleft"]="⋪",
["longmapsto"]="⟼",
-["And"]="⩓",
-["cuvee"]="⋎",
-["zwj"]="‍",
-["plankv"]="ℏ",
-["varepsilon"]="ϵ",
-["Aopf"]="𝔸",
-["UpTee"]="⊥",
-["lescc"]="⪨",
-["ltri"]="◃",
-["iiint"]="∭",
-["ccups"]="⩌",
-["alefsym"]="ℵ",
-["succneqq"]="⪶",
-["hscr"]="𝒽",
-["Or"]="⩔",
-["yuml"]="ÿ",
-["rcub"]="}",
-["lt"]="<",
-["vArr"]="⇕",
-["EqualTilde"]="≂",
-["vDash"]="⊨",
-["RightArrow"]="→",
-["dlcorn"]="⌞",
-["Barv"]="⫧",
-["nsc"]="⊁",
-["Proportion"]="∷",
-["iota"]="ι",
-["gscr"]="ℊ",
-["abreve"]="ă",
-["ThickSpace"]="  ",
-["szlig"]="ß",
-["lhard"]="↽",
-["emptyv"]="∅",
-["Tau"]="Τ",
-["sharp"]="♯",
-["bNot"]="⫭",
-["LongLeftRightArrow"]="⟷",
-["frac23"]="⅔",
-["NotEqual"]="≠",
-["scE"]="⪴",
-["jfr"]="𝔧",
-["bscr"]="𝒷",
-["uhblk"]="▀",
-["frac35"]="⅗",
-["TSHcy"]="Ћ",
-["ntrianglerighteq"]="⋭",
-["Tcedil"]="Ţ",
-["NotGreaterFullEqual"]="≧̸",
-["asympeq"]="≍",
-["oror"]="⩖",
-["ecirc"]="ê",
-["ohbar"]="⦵",
-["Rho"]="Ρ",
-["iacute"]="í",
-["ascr"]="𝒶",
+["nvrtrie"]="⊵⃒",
+["timesb"]="⊠",
+["lsh"]="↰",
+["Jcy"]="Й",
+["gcirc"]="ĝ",
+["Oacute"]="Ó",
+["vartriangleright"]="⊳",
+["NotRightTriangleEqual"]="⋭",
+["Rightarrow"]="⇒",
+["ast"]="*",
+["hamilt"]="ℋ",
+["Ncedil"]="Ņ",
+["apE"]="⩰",
+["macr"]="¯",
+["cwconint"]="∲",
+["Kcy"]="К",
+["Ucirc"]="Û",
+["hcirc"]="ĥ",
+["yacy"]="я",
+["uml"]="¨",
+["popf"]="𝕡",
+["bumpE"]="⪮",
+["varnothing"]="∅",
["RightUpVector"]="↾",
-["Ocirc"]="Ô",
-["cedil"]="¸",
-["sect"]="§",
-["angmsdab"]="⦩",
-["FilledVerySmallSquare"]="▪",
-["curlywedge"]="⋏",
-["lesdotor"]="⪃",
-["esdot"]="≐",
-["eqvparsl"]="⧥",
-["Cap"]="⋒",
-["dscr"]="𝒹",
-["rbrace"]="}",
-["nsccue"]="⋡",
-["neArr"]="⇗",
-["rightthreetimes"]="⋌",
-["plusmn"]="±",
-["Ubreve"]="Ŭ",
-["ifr"]="𝔦",
-["Poincareplane"]="ℌ",
-["leftrightarrows"]="⇆",
-["scnsim"]="⋩",
-["cscr"]="𝒸",
-["NotHumpEqual"]="≏̸",
-["capbrcup"]="⩉",
-["curarr"]="↷",
-["notinvb"]="⋷",
-["LeftArrow"]="←",
-["Gopf"]="𝔾",
-["ldrushar"]="⥋",
-["nscr"]="𝓃",
-["Gg"]="⋙",
-["ouml"]="ö",
-["nsce"]="⪰̸",
-["cupbrcap"]="⩈",
-["nLt"]="≪⃒",
-["bullet"]="•",
-["nsqsupe"]="⋣",
-["rect"]="▭",
-["lbrace"]="{",
-["Fopf"]="𝔽",
-["COPY"]="©",
-["epar"]="⋕",
-["mscr"]="𝓂",
-["odsold"]="⦼",
-["cupor"]="⩅",
-["not"]="¬",
-["subsim"]="⫇",
-["hoarr"]="⇿",
+["curren"]="¤",
["Scedil"]="Ş",
-["eacute"]="é",
-["emsp"]=" ",
-["uml"]="¨",
-["igrave"]="ì",
-["pscr"]="𝓅",
+["FilledVerySmallSquare"]="▪",
+["dollar"]="$",
+["Lcy"]="Л",
+["longrightarrow"]="⟶",
["LeftTee"]="⊣",
-["Cedilla"]="¸",
-["Iopf"]="𝕀",
-["HumpEqual"]="≏",
-["les"]="⩽",
-["Rcedil"]="Ŗ",
-["lsquor"]="‚",
-["raemptyv"]="⦳",
-["NotSucceedsSlantEqual"]="⋡",
-["SuchThat"]="∋",
-["vert"]="|",
-["backcong"]="≌",
-["Hopf"]="ℍ",
-["CircleDot"]="⊙",
-["Kappa"]="Κ",
-["conint"]="∮",
-["DZcy"]="Џ",
-["prsim"]="≾",
-["Copf"]="ℂ",
-["curvearrowright"]="↷",
-["twixt"]="≬",
-["curren"]="¤",
-["rtriltri"]="⧎",
-["jscr"]="𝒿",
-["cupcup"]="⩊",
+["excl"]="!",
+["acirc"]="â",
+["wp"]="℘",
+["lcaron"]="ľ",
+["NotGreaterFullEqual"]="≧̸",
+["CounterClockwiseContourIntegral"]="∳",
+["sup2"]="²",
+["rnmid"]="⫮",
["Lcedil"]="Ļ",
-["supseteqq"]="⫆",
-["bfr"]="𝔟",
-["lesseqqgtr"]="⪋",
-["leftleftarrows"]="⇇",
-["Bopf"]="𝔹",
-["acute"]="´",
-["blacktriangleright"]="▸",
-["frac34"]="¾",
-["Gbreve"]="Ğ",
-["Updownarrow"]="⇕",
-["iscr"]="𝒾",
-["sigmav"]="ς",
-["trade"]="™",
-["minusb"]="⊟",
-["GJcy"]="Ѓ",
-["TildeFullEqual"]="≅",
-["DoubleRightTee"]="⊨",
-["nang"]="∠⃒",
["ddotseq"]="⩷",
-["copy"]="©",
-["Eopf"]="𝔼",
-["Psi"]="Ψ",
-["UpperRightArrow"]="↗",
-["geqq"]="≧",
-["subedot"]="⫃",
-["nvlArr"]="⤂",
-["Ncedil"]="Ņ",
-["vsupne"]="⊋︀",
-["supset"]="⊃",
-["squarf"]="▪",
-["LeftDoubleBracket"]="⟦",
-["utrif"]="▴",
-["Dopf"]="𝔻",
-["ape"]="≊",
-["gEl"]="⪌",
-["COPY"]="©",
-["afr"]="𝔞",
-["Acy"]="А",
-["ldquor"]="„",
-["because"]="∵",
-["Pr"]="⪻",
-["OverBar"]="‾",
-["lang"]="⟨",
-["mopf"]="𝕞",
-["crarr"]="↵",
-["Epsilon"]="Ε",
-["Nfr"]="𝔑",
-["kjcy"]="ќ",
-["TildeTilde"]="≈",
-["bsim"]="∽",
-["lcy"]="л",
-["larrb"]="⇤",
-["ncong"]="≇",
-["ENG"]="Ŋ",
-["brvbar"]="¦",
-["Rightarrow"]="⇒",
+["tbrk"]="⎴",
+["mlcp"]="⫛",
+["rarrhk"]="↪",
+["Tilde"]="∼",
+["Mcy"]="М",
+["aring"]="å",
+["rarrsim"]="⥴",
["nopf"]="𝕟",
-["Wfr"]="𝔚",
-["ljcy"]="љ",
+["aelig"]="æ",
+["order"]="ℴ",
["diamondsuit"]="♦",
-["latail"]="⤙",
-["lambda"]="λ",
-["frac14"]="¼",
-["mcy"]="м",
-["nparsl"]="⫽⃥",
-["lBarr"]="⤎",
-["subdot"]="⪽",
-["frac12"]="½",
-["kopf"]="𝕜",
-["LeftCeiling"]="⌈",
+["nvsim"]="∼⃒",
+["lhard"]="↽",
+["commat"]="@",
+["qint"]="⨌",
+["lsquo"]="‘",
+["sqcaps"]="⊓︀",
+["circlearrowleft"]="↺",
+["NotElement"]="∉",
+["measuredangle"]="∡",
+["Atilde"]="Ã",
+["CapitalDifferentialD"]="ⅅ",
+["kgreen"]="ĸ",
+["Cscr"]="𝒞",
+["NotLessEqual"]="≰",
+["trpezium"]="⏢",
+["ne"]="≠",
+["NotSuperset"]="⊃⃒",
+["nearrow"]="↗",
+["ncong"]="≇",
+["doteqdot"]="≑",
+["supmult"]="⫂",
+["longleftrightarrow"]="⟷",
+["Rarr"]="↠",
+["DoubleUpArrow"]="⇑",
+["Dscr"]="𝒟",
+["mp"]="∓",
+["jmath"]="ȷ",
["erarr"]="⥱",
-["pre"]="⪯",
-["varr"]="↕",
-["Pi"]="Π",
-["sub"]="⊂",
-["ncy"]="н",
-["marker"]="▮",
-["rpargt"]="⦔",
-["supe"]="⊇",
-["veebar"]="⊻",
-["checkmark"]="✓",
-["nbsp"]=" ",
-["sqsupseteq"]="⊒",
-["upharpoonright"]="↾",
+["searrow"]="↘",
+["Sup"]="⋑",
+["lvnE"]="≨︀",
+["ffilig"]="ffi",
+["NotSquareSupersetEqual"]="⋣",
+["bullet"]="•",
+["bigstar"]="★",
+["cylcty"]="⌭",
+["nvle"]="≤⃒",
+["TildeFullEqual"]="≅",
["lopf"]="𝕝",
-["Omicron"]="Ο",
-["ccaps"]="⩍",
-["lrhard"]="⥭",
-["Lstrok"]="Ł",
-["Mfr"]="𝔐",
-["njcy"]="њ",
-["ocy"]="о",
-["Zcaron"]="Ž",
-["NotSucceeds"]="⊁",
-["rarrbfs"]="⤠",
-["gtrapprox"]="⪆",
-["oS"]="Ⓢ",
-["diamond"]="⋄",
-["gesdot"]="⪀",
-["urcorner"]="⌝",
-["lotimes"]="⨴",
-["pertenk"]="‱",
-["rfisht"]="⥽",
-["Zfr"]="ℨ",
-["Map"]="⤅",
-["cross"]="✗",
-["DifferentialD"]="ⅆ",
-["boxtimes"]="⊠",
-["horbar"]="―",
-["lg"]="≶",
-["orarr"]="↻",
-["Vbar"]="⫫",
-["ropf"]="𝕣",
-["NotDoubleVerticalBar"]="∦",
-["Sfr"]="𝔖",
-["Iuml"]="Ï",
+["sqsupseteq"]="⊒",
+["lt"]="<",
+["geqslant"]="⩾",
+["quot"]="\"",
+["le"]="≤",
+["square"]="□",
+["sigma"]="σ",
+["prE"]="⪳",
+["rtrie"]="⊵",
+["triangleq"]="≜",
+["Fscr"]="ℱ",
+["DiacriticalTilde"]="˜",
+["SucceedsSlantEqual"]="≽",
+["mopf"]="𝕞",
+["Ecaron"]="Ě",
+["UpArrowDownArrow"]="⇅",
+["ges"]="⩾",
+["nsqsupe"]="⋣",
+["ubrcy"]="ў",
+["Gscr"]="𝒢",
+["HARDcy"]="Ъ",
+["jopf"]="𝕛",
+["gtquest"]="⩼",
+["iinfin"]="⧜",
+["twixt"]="≬",
+["ltrie"]="⊴",
+["csub"]="⫏",
+["Hscr"]="ℋ",
["leftharpoondown"]="↽",
-["atilde"]="ã",
-["VerticalTilde"]="≀",
-["DoubleContourIntegral"]="∯",
-["longleftarrow"]="⟵",
+["RightUpDownVector"]="⥏",
+["LongLeftRightArrow"]="⟷",
["Im"]="ℑ",
-["RightUpVectorBar"]="⥔",
-["nGg"]="⋙̸",
-["scap"]="⪸",
-["nrarr"]="↛",
-["ycy"]="ы",
-["ucirc"]="û",
-["qopf"]="𝕢",
-["oopf"]="𝕠",
-["yacute"]="ý",
-["Xfr"]="𝔛",
+["dcaron"]="ď",
+["barwedge"]="⌅",
+["nexist"]="∄",
+["blacktriangledown"]="▾",
["fork"]="⋔",
-["in"]="∈",
-["xcap"]="⋂",
-["check"]="✓",
-["jcy"]="й",
-["Phi"]="Φ",
-["doteq"]="≐",
-["vBar"]="⫨",
-["frown"]="⌢",
-["Iogon"]="Į",
-["gnsim"]="⋧",
-["nsupset"]="⊃⃒",
+["rhard"]="⇁",
+["cent"]="¢",
+["RightTriangle"]="⊳",
+["Eta"]="Η",
+["dotminus"]="∸",
+["nles"]="⩽̸",
+["larrtl"]="↢",
+["LeftTriangleEqual"]="⊴",
+["hopf"]="𝕙",
+["gammad"]="ϝ",
+["gsime"]="⪎",
+["llhard"]="⥫",
+["precapprox"]="⪷",
+["profalar"]="⌮",
+["lnE"]="≨",
+["ddagger"]="‡",
+["leq"]="≤",
+["smile"]="⌣",
+["robrk"]="⟧",
+["Jscr"]="𝒥",
+["triangleleft"]="◃",
+["acd"]="∿",
+["prod"]="∏",
+["atilde"]="ã",
+["seArr"]="⇘",
+["therefore"]="∴",
+["iopf"]="𝕚",
+["solbar"]="⌿",
+["kcedil"]="ķ",
+["NotHumpEqual"]="≏̸",
+["nspar"]="∦",
+["frac14"]="¼",
+["nsime"]="≄",
+["DoubleLongLeftArrow"]="⟸",
+["sccue"]="≽",
+["models"]="⊧",
+["SupersetEqual"]="⊇",
+["iquest"]="¿",
+["oline"]="‾",
+["lparlt"]="⦓",
+["triplus"]="⨹",
+["nequiv"]="≢",
+["nlE"]="≦̸",
+["nldr"]="‥",
["equals"]="=",
-["angmsdac"]="⦪",
-["odash"]="⊝",
-["Hstrok"]="Ħ",
-["homtht"]="∻",
-["maltese"]="✠",
+["Agrave"]="À",
+["ccaron"]="č",
+["Yacute"]="Ý",
+["Oslash"]="Ø",
+["udarr"]="⇅",
+["ang"]="∠",
+["dopf"]="𝕕",
+["comp"]="∁",
+["caps"]="∩︀",
+["bowtie"]="⋈",
+["glj"]="⪤",
+["ltquest"]="⩻",
+["cirmid"]="⫯",
+["ordm"]="º",
["esim"]="≂",
-["realine"]="ℛ",
-["straightepsilon"]="ϵ",
-["utri"]="▵",
-["primes"]="ℙ",
-["dbkarow"]="⤏",
-["NotLessTilde"]="≴",
-["nvrArr"]="⤃",
-["cularrp"]="⤽",
-["supsup"]="⫖",
-["rang"]="⟩",
-["nshortmid"]="∤",
-["NotCupCap"]="≭",
-["gnE"]="≩",
-["otilde"]="õ",
+["reals"]="ℝ",
["LeftTriangle"]="⊲",
-["oelig"]="œ",
-["curarrm"]="⤼",
-["orderof"]="ℴ",
-["DoubleLongLeftArrow"]="⟸",
-["OverParenthesis"]="⏜",
-["amacr"]="ā",
-["copysr"]="℗",
-["acirc"]="â",
-["LeftArrowRightArrow"]="⇆",
-["filig"]="fi",
-["uopf"]="𝕦",
-["rlhar"]="⇌",
-["dharl"]="⇃",
-["rAarr"]="⇛",
-["rarrw"]="↝",
-["isin"]="∈",
-["simg"]="⪞",
-["NoBreak"]="⁠",
-["rAtail"]="⤜",
-["ndash"]="–",
-["IJlig"]="IJ",
-["dfr"]="𝔡",
-["ohm"]="Ω",
-["breve"]="˘",
-["ccedil"]="ç",
-["topf"]="𝕥",
-["nvDash"]="⊭",
-["RBarr"]="⤐",
-["clubs"]="♣",
-["napos"]="ʼn",
+["flat"]="♭",
+["eopf"]="𝕖",
+["lap"]="⪅",
+["not"]="¬",
+["ENG"]="Ŋ",
+["DiacriticalAcute"]="´",
+["sharp"]="♯",
+["longleftarrow"]="⟵",
+["dblac"]="˝",
+["UpArrow"]="↑",
+["npre"]="⪯̸",
+["bopf"]="𝕓",
+["DScy"]="Ѕ",
+["bepsi"]="϶",
+["angrtvb"]="⊾",
+["ccaps"]="⩍",
+["UnderParenthesis"]="⏝",
+["subne"]="⊊",
+["succnsim"]="⋩",
+["Bumpeq"]="≎",
+["xvee"]="⋁",
+["colon"]=":",
+["deg"]="°",
+["fnof"]="ƒ",
+["Uarr"]="↟",
+["Zcaron"]="Ž",
+["copf"]="𝕔",
+["Theta"]="Θ",
+["omicron"]="ο",
+["ntriangleright"]="⋫",
+["DoubleLongRightArrow"]="⟹",
+["UnderBrace"]="⏟",
+["GT"]=">",
+["lEg"]="⪋",
+["supplus"]="⫀",
+["acute"]="´",
+["GT"]=">",
+["upsilon"]="υ",
+["sc"]="≻",
+["xrarr"]="⟶",
+["eng"]="ŋ",
+["it"]="⁢",
+["Ntilde"]="Ñ",
+["Mu"]="Μ",
+["CircleTimes"]="⊗",
+["NotTildeTilde"]="≉",
+["NotLessLess"]="≪̸",
+["vellip"]="⋮",
+["cularrp"]="⤽",
+["UnderBracket"]="⎵",
+["aopf"]="𝕒",
+["itilde"]="ĩ",
+["latail"]="⤙",
+["Nu"]="Ν",
+["Ascr"]="𝒜",
+["complement"]="∁",
+["gjcy"]="ѓ",
+["radic"]="√",
+["maltese"]="✠",
+["glE"]="⪒",
+["plusmn"]="±",
+["curvearrowright"]="↷",
+["gt"]=">",
+["Colone"]="⩴",
+["Bscr"]="ℬ",
+["ic"]="⁣",
+["clubsuit"]="♣",
+["djcy"]="ђ",
+["Oopf"]="𝕆",
+["ltrPar"]="⦖",
["ngtr"]="≯",
-["Tstrok"]="Ŧ",
-["lrarr"]="⇆",
-["eqslantgtr"]="⪖",
-["efr"]="𝔢",
-["gne"]="⪈",
-["csube"]="⫑",
-["Xi"]="Ξ",
-["sopf"]="𝕤",
+["eqcirc"]="≖",
+["Hacek"]="ˇ",
+["vdash"]="⊢",
+["NotCupCap"]="≭",
+["Gdot"]="Ġ",
+["jsercy"]="ј",
+["marker"]="▮",
+["Nopf"]="ℕ",
+["Wfr"]="𝔚",
+["boxHD"]="╦",
+["mho"]="℧",
+["ulcrop"]="⌏",
+["DifferentialD"]="ⅆ",
+["aacute"]="á",
+["lpar"]="(",
+["angle"]="∠",
+["rharu"]="⇀",
+["Breve"]="˘",
+["Dot"]="¨",
+["rect"]="▭",
+["NotNestedLessLess"]="⪡̸",
+["boxplus"]="⊞",
+["NotSucceeds"]="⊁",
+["gnapprox"]="⪊",
+["DownLeftTeeVector"]="⥞",
+["Xfr"]="𝔛",
+["Lang"]="⟪",
+["Element"]="∈",
+["sung"]="♪",
+["RightVectorBar"]="⥓",
+["simne"]="≆",
["LeftVector"]="↼",
-["ggg"]="⋙",
-["Ubrcy"]="Ў",
-["die"]="¨",
-["topbot"]="⌶",
+["Idot"]="İ",
+["QUOT"]="\"",
+["nsmid"]="∤",
+["fjlig"]="fj",
+["Ufr"]="𝔘",
+["cuvee"]="⋎",
+["real"]="ℜ",
+["luruhar"]="⥦",
+["NotRightTriangleBar"]="⧐̸",
+["target"]="⌖",
+["lharu"]="↼",
+["CloseCurlyQuote"]="’",
+["rAtail"]="⤜",
+["nparallel"]="∦",
+["brvbar"]="¦",
+["Vfr"]="𝔙",
+["wedbar"]="⩟",
+["REG"]="®",
+["boxur"]="└",
+["Rcaron"]="Ř",
+["Rang"]="⟫",
+["sqsubseteq"]="⊑",
+["div"]="÷",
+["boxul"]="┘",
+["Cdot"]="Ċ",
+["vsupnE"]="⫌︀",
+["zeetrf"]="ℨ",
+["Sfr"]="𝔖",
+["roang"]="⟭",
+["LessTilde"]="≲",
+["equiv"]="≡",
+["frac12"]="½",
+["eacute"]="é",
+["rrarr"]="⇉",
+["nearhk"]="⤤",
+["Zopf"]="ℤ",
+["SucceedsTilde"]="≿",
+["ap"]="≈",
+["lfisht"]="⥼",
+["timesd"]="⨰",
+["UpDownArrow"]="↕",
+["xuplus"]="⨄",
+["cularr"]="↶",
+["iprod"]="⨼",
+["AElig"]="Æ",
+["rationals"]="ℚ",
+["geqq"]="≧",
+["Tfr"]="𝔗",
+["Yopf"]="𝕐",
+["rtimes"]="⋊",
+["Tcaron"]="Ť",
+["srarr"]="→",
+["diam"]="⋄",
+["mid"]="∣",
+["imath"]="ı",
+["PlusMinus"]="±",
+["isin"]="∈",
+["vprop"]="∝",
+["RightArrowLeftArrow"]="⇄",
+["NotSubset"]="⊂⃒",
+["bigtriangledown"]="▽",
+["ldsh"]="↲",
+["Qfr"]="𝔔",
+["nvap"]="≍⃒",
+["vert"]="|",
+["Xopf"]="𝕏",
+["lBarr"]="⤎",
+["egsdot"]="⪘",
+["Tcedil"]="Ţ",
+["xi"]="ξ",
+["LeftUpVectorBar"]="⥘",
+["circ"]="ˆ",
+["ocir"]="⊚",
+["gtlPar"]="⦕",
["Rfr"]="ℜ",
-["ofcir"]="⦿",
-["imped"]="Ƶ",
-["plusmn"]="±",
-["nles"]="⩽̸",
+["RightTriangleBar"]="⧐",
+["nwarhk"]="⤣",
+["zhcy"]="ж",
+["Iukcy"]="І",
+["plusdo"]="∔",
+["boxv"]="│",
+["minusb"]="⊟",
+["Ncaron"]="Ň",
+["angmsdaa"]="⦨",
+["varsubsetneqq"]="⫋︀",
+["cirfnint"]="⨐",
+["LongRightArrow"]="⟶",
+["ddarr"]="⇊",
+["piv"]="ϖ",
+["fopf"]="𝕗",
+["Ofr"]="𝔒",
+["fflig"]="ff",
+["Jukcy"]="Є",
+["xhArr"]="⟺",
+["ncy"]="н",
+["Scaron"]="Š",
+["TildeEqual"]="≃",
+["subrarr"]="⥹",
+["iacute"]="í",
+["ogt"]="⧁",
+["nvge"]="≥⃒",
+["vee"]="∨",
+["UnderBar"]="_",
+["andslope"]="⩘",
+["gopf"]="𝕘",
+["Pfr"]="𝔓",
+["die"]="¨",
+["Uopf"]="𝕌",
+["RightArrowBar"]="⇥",
+["orarr"]="↻",
+["Precedes"]="≺",
+["oror"]="⩖",
+["straightepsilon"]="ϵ",
+["cong"]="≅",
+["TScy"]="Ц",
+["nleftarrow"]="↚",
+["DZcy"]="Џ",
+["horbar"]="―",
+["Topf"]="𝕋",
+["Cayleys"]="ℭ",
+["leqq"]="≦",
+["curlyeqprec"]="⋞",
+["nLeftarrow"]="⇍",
["pcy"]="п",
-["permil"]="‰",
-["notinE"]="⋹̸",
-["bigoplus"]="⨁",
-["boxplus"]="⊞",
-["doublebarwedge"]="⌆",
-["ccaron"]="č",
-["asymp"]="≈",
-["sup1"]="¹",
-["bumpeq"]="≏",
-["nrtrie"]="⋭",
-["larrbfs"]="⤟",
-["emacr"]="ē",
-["gtrless"]="≷",
-["Kfr"]="𝔎",
-["plus"]="+",
-["risingdotseq"]="≓",
-["notindot"]="⋵̸",
-["Subset"]="⋐",
-["CloseCurlyDoubleQuote"]="”",
+["realine"]="ℛ",
["nlsim"]="≴",
-["dcaron"]="ď",
-["boxVR"]="╠",
-["lne"]="⪇",
-["Pfr"]="𝔓",
-["rightsquigarrow"]="↝",
-["phone"]="☎",
-["DiacriticalDot"]="˙",
-["Congruent"]="≡",
-["SquareIntersection"]="⊓",
-["ordf"]="ª",
-["loz"]="◊",
-["cire"]="≗",
-["ecaron"]="ě",
-["nsub"]="⊄",
+["Rarrtl"]="⤖",
+["CupCap"]="≍",
+["vDash"]="⊨",
+["shortparallel"]="∥",
+["ExponentialE"]="ⅇ",
+["Sopf"]="𝕊",
+["iiota"]="℩",
+["Nfr"]="𝔑",
+["pointint"]="⨕",
+["NotGreaterLess"]="≹",
+["olcross"]="⦻",
+["kcy"]="к",
+["complexes"]="ℂ",
+["varepsilon"]="ϵ",
["Fouriertrf"]="ℱ",
-["Qfr"]="𝔔",
-["dblac"]="˝",
-["sc"]="≻",
-["xrarr"]="⟶",
-["ImaginaryI"]="ⅈ",
-["angmsdag"]="⦮",
-["wopf"]="𝕨",
-["middot"]="·",
-["gsiml"]="⪐",
-["biguplus"]="⨄",
-["Prime"]="″",
-["bigcirc"]="◯",
-["vsubnE"]="⫋︀",
-["lrtri"]="⊿",
-["nparallel"]="∦",
-["lbbrk"]="❲",
-["dotsquare"]="⊡",
-["rceil"]="⌉",
-["gesles"]="⪔",
-["roarr"]="⇾",
-["simplus"]="⨤",
-["lagran"]="ℒ",
-["pr"]="≺",
+["rho"]="ρ",
+["Lsh"]="↰",
+["exponentiale"]="ⅇ",
+["hookrightarrow"]="↪",
+["Ropf"]="ℝ",
+["lAtail"]="⤛",
+["Kfr"]="𝔎",
+["bsim"]="∽",
+["jcy"]="й",
+["frac34"]="¾",
+["DotDot"]="⃜",
+["thorn"]="þ",
+["ThickSpace"]="  ",
+["SquareUnion"]="⊔",
+["frac58"]="⅝",
+["dfisht"]="⥿",
+["MediumSpace"]=" ",
+["Lfr"]="𝔏",
+["Qopf"]="ℚ",
+["ntgl"]="≹",
+["LessFullEqual"]="≦",
+["malt"]="✠",
+["mcy"]="м",
+["NotGreaterEqual"]="≱",
+["bottom"]="⊥",
+["NotSucceedsEqual"]="⪰̸",
+["lcedil"]="ļ",
+["infintie"]="⧝",
+["Lcaron"]="Ľ",
+["NotSquareSubset"]="⊏̸",
+["brvbar"]="¦",
+["fallingdotseq"]="≒",
+["AElig"]="Æ",
+["swarhk"]="⤦",
+["Ifr"]="ℑ",
+["pi"]="π",
+["lcy"]="л",
+["copy"]="©",
+["dlcorn"]="⌞",
+["oacute"]="ó",
+["gtreqless"]="⋛",
+["neArr"]="⇗",
+["ZHcy"]="Ж",
+["Vdashl"]="⫦",
+["darr"]="↓",
+["circeq"]="≗",
+["yuml"]="ÿ",
+["Jfr"]="𝔍",
+["Product"]="∏",
+["boxDL"]="╗",
+["el"]="⪙",
+["supe"]="⊇",
+["frac13"]="⅓",
+["Barwed"]="⌆",
+["larrpl"]="⤹",
+["SHCHcy"]="Щ",
+["LeftUpDownVector"]="⥑",
+["Diamond"]="⋄",
+["DownLeftVectorBar"]="⥖",
+["Cross"]="⨯",
+["ncup"]="⩂",
+["supnE"]="⫌",
+["lne"]="⪇",
+["micro"]="µ",
+["lowbar"]="_",
+["perp"]="⊥",
+["sqcap"]="⊓",
+["Gfr"]="𝔊",
+["raemptyv"]="⦳",
+["gesl"]="⋛︀",
+["drcrop"]="⌌",
+["boxUL"]="╝",
+["becaus"]="∵",
+["gne"]="⪈",
+["scap"]="⪸",
+["swarrow"]="↙",
+["nesim"]="≂̸",
+["DoubleDot"]="¨",
+["Mopf"]="𝕄",
+["apid"]="≋",
+["InvisibleComma"]="⁣",
+["Backslash"]="∖",
["mnplus"]="∓",
+["niv"]="∋",
+["Hfr"]="ℌ",
+["rarrlp"]="↬",
+["Because"]="∵",
+["parsl"]="⫽",
+["sup1"]="¹",
+["Lt"]="≪",
+["par"]="∥",
["Iota"]="Ι",
-["NestedLessLess"]="≪",
-["utilde"]="ũ",
-["mldr"]="…",
-["bigstar"]="★",
-["micro"]="µ",
-["percnt"]="%",
-["fllig"]="fl",
-["euml"]="ë",
-["circledR"]="®",
-["lltri"]="◺",
-["IEcy"]="Е",
-["notniva"]="∌",
-["or"]="∨",
-["curvearrowleft"]="↶",
-["gnapprox"]="⪊",
-["NotLessSlantEqual"]="⩽̸",
-["Cconint"]="∰",
-["NotSucceedsTilde"]="≿̸",
-["gammad"]="ϝ",
-["rightharpoondown"]="⇁",
-["CounterClockwiseContourIntegral"]="∳",
-["supdot"]="⪾",
-["upsi"]="υ",
-["nvle"]="≤⃒",
["beth"]="ℶ",
-["nhArr"]="⇎",
-["Gamma"]="Γ",
-["complement"]="∁",
-["xoplus"]="⨁",
-["chi"]="χ",
-["backepsilon"]="϶",
-["nsube"]="⊈",
-["aopf"]="𝕒",
-["para"]="¶",
-["drbkarow"]="⤐",
-["Dstrok"]="Đ",
+["Lopf"]="𝕃",
+["Cap"]="⋒",
+["Aring"]="Å",
+["rarr"]="→",
+["Efr"]="𝔈",
+["bigcup"]="⋃",
+["DownLeftRightVector"]="⥐",
+["lesges"]="⪓",
+["NegativeThinSpace"]="​",
+["DownRightTeeVector"]="⥟",
+["npolint"]="⨔",
+["gEl"]="⪌",
+["lltri"]="◺",
+["ogon"]="˛",
+["LessEqualGreater"]="⋚",
+["sqsupset"]="⊐",
+["NotSubsetEqual"]="⊈",
+["Ubrcy"]="Ў",
+["ShortDownArrow"]="↓",
+["ugrave"]="ù",
+["Dcaron"]="Ď",
+["subE"]="⫅",
+["divide"]="÷",
+["bigotimes"]="⨂",
+["dscy"]="ѕ",
+["wreath"]="≀",
+["Jopf"]="𝕁",
+["pre"]="⪯",
+["tdot"]="⃛",
+["Cfr"]="ℭ",
+["Uogon"]="Ų",
+["softcy"]="ь",
["isinE"]="⋹",
-["Ecirc"]="Ê",
-["aelig"]="æ",
-["ulcorner"]="⌜",
-["Lcaron"]="Ľ",
-["bopf"]="𝕓",
-["midast"]="*",
-["barvee"]="⊽",
-["nvgt"]=">⃒",
-["bnequiv"]="≡⃥",
-["caron"]="ˇ",
-["andand"]="⩕",
-["eparsl"]="⧣",
-["xhArr"]="⟺",
-["Yuml"]="Ÿ",
-["fallingdotseq"]="≒",
-["vltri"]="⊲",
-["gtrarr"]="⥸",
-["nGtv"]="≫̸",
-["congdot"]="⩭",
-["lfisht"]="⥼",
-["nrtri"]="⋫",
-["prnsim"]="⋨",
-["nsupE"]="⫆̸",
-["Colone"]="⩴",
-["SquareSuperset"]="⊐",
-["boxUL"]="╝",
-["Rrightarrow"]="⇛",
-["nleftrightarrow"]="↮",
-["Conint"]="∯",
-["ffilig"]="ffi",
-["nleqq"]="≦̸",
-["drcrop"]="⌌",
-["boxh"]="─",
-["Lang"]="⟪",
-["ldrdhar"]="⥧",
-["rbrack"]="]",
+["Dstrok"]="Đ",
+["Jsercy"]="Ј",
+["capdot"]="⩀",
+["realpart"]="ℜ",
+["hearts"]="♥",
+["Atilde"]="Ã",
+["LeftArrowRightArrow"]="⇆",
+["upharpoonleft"]="↿",
+["Iopf"]="𝕀",
+["Intersection"]="⋂",
+["midcir"]="⫰",
+["ocirc"]="ô",
+["sdot"]="⋅",
+["Dfr"]="𝔇",
+["gla"]="⪥",
+["DiacriticalGrave"]="`",
+["Ubreve"]="Ŭ",
+["int"]="∫",
+["PrecedesSlantEqual"]="≼",
+["Square"]="□",
+["Acy"]="А",
+["Hopf"]="ℍ",
+["precsim"]="≾",
+["nleq"]="≰",
+["urcorn"]="⌝",
+["hyphen"]="‐",
+["FilledSmallSquare"]="◼",
+["zdot"]="ż",
+["ndash"]="–",
+["hbar"]="ℏ",
+["Wopf"]="𝕎",
+["Esim"]="⩳",
+["subsetneq"]="⊊",
+["boxhD"]="╥",
+["searhk"]="⤥",
+["late"]="⪭",
+["blacktriangleright"]="▸",
+["auml"]="ä",
+["NotLessTilde"]="≴",
+["Bfr"]="𝔅",
+["grave"]="`",
+["ltlarr"]="⥶",
+["Aogon"]="Ą",
+["sdote"]="⩦",
+["gtrsim"]="≳",
["nvinfin"]="⧞",
+["lgE"]="⪑",
+["mdash"]="—",
+["Vopf"]="𝕍",
+["leftrightarrow"]="↔",
+["RBarr"]="⤐",
+["amalg"]="⨿",
+["preccurlyeq"]="≼",
+["EqualTilde"]="≂",
+["scpolint"]="⨓",
+["NotHumpDownHump"]="≎̸",
+["uparrow"]="↑",
+["downarrow"]="↓",
+["boxdL"]="╕",
+["Hstrok"]="Ħ",
+["Ccaron"]="Č",
["succsim"]="≿",
-["boxhu"]="┴",
-["tau"]="τ",
-["incare"]="℅",
-["flat"]="♭",
-["angst"]="Å",
-["Oslash"]="Ø",
-["Vfr"]="𝔙",
-["tscy"]="ц",
-["lates"]="⪭︀",
-["eopf"]="𝕖",
-["Because"]="∵",
-["frac25"]="⅖",
-["daleth"]="ℸ",
-["ic"]="⁣",
-["ensp"]=" ",
-["lrm"]="‎",
-["DoubleLeftRightArrow"]="⇔",
-["kappa"]="κ",
-["fopf"]="𝕗",
-["cularr"]="↶",
-["shy"]="­",
-["yen"]="¥",
-["glj"]="⪤",
-["dzcy"]="џ",
-["expectation"]="ℰ",
-["dash"]="‐",
-["female"]="♀",
-["UnderBrace"]="⏟",
-["rotimes"]="⨵",
-["caps"]="∩︀",
-["copf"]="𝕔",
-["lparlt"]="⦓",
-["NotLess"]="≮",
-["simrarr"]="⥲",
-["dtri"]="▿",
-["supne"]="⊋",
-["block"]="█",
-["siml"]="⪝",
-["blk12"]="▒",
-["natural"]="♮",
-["frac34"]="¾",
+["RightFloor"]="⌋",
+["DownBreve"]="̑",
+["succapprox"]="⪸",
+["dsol"]="⧶",
+["napid"]="≋̸",
+["nprcue"]="⋠",
+["Eopf"]="𝔼",
+["ell"]="ℓ",
+["cupdot"]="⊍",
+["Not"]="⫬",
+["zigrarr"]="⇝",
+["downharpoonright"]="⇂",
+["nisd"]="⋺",
+["lotimes"]="⨴",
+["plusmn"]="±",
+["ngE"]="≧̸",
+["odash"]="⊝",
+["emptyset"]="∅",
+["squarf"]="▪",
+["NotGreaterTilde"]="≵",
+["NotTildeFullEqual"]="≇",
+["DownArrowUpArrow"]="⇵",
+["nwarrow"]="↖",
+["looparrowright"]="↬",
+["Dopf"]="𝔻",
+["oplus"]="⊕",
+["UpEquilibrium"]="⥮",
+["leftthreetimes"]="⋋",
+["DoubleLeftTee"]="⫤",
+["nabla"]="∇",
+["RuleDelayed"]="⧴",
+["euml"]="ë",
+["varsupsetneqq"]="⫌︀",
+["upsi"]="υ",
+["supsup"]="⫖",
+["bsol"]="\\",
+["Copf"]="ℂ",
+["DDotrahd"]="⤑",
+["Upsilon"]="Υ",
+["UpperRightArrow"]="↗",
+["nedot"]="≐̸",
+["NotEqual"]="≠",
+["bumpeq"]="≏",
+["emsp14"]=" ",
["frac38"]="⅜",
-["Ufr"]="𝔘",
-["gg"]="≫",
-["Square"]="□",
-["lt"]="<",
-["erDot"]="≓",
-["RightAngleBracket"]="⟩",
-["LeftDownTeeVector"]="⥡",
-["NotGreaterGreater"]="≫̸",
-["uogon"]="ų",
-["ocirc"]="ô",
-["sung"]="♪",
-["dollar"]="$",
-["Scaron"]="Š",
-["top"]="⊤",
-["iopf"]="𝕚",
-["udhar"]="⥮",
-["gjcy"]="ѓ",
-["ncap"]="⩃",
-["circlearrowleft"]="↺",
-["bernou"]="ℬ",
-["angmsdaf"]="⦭",
-["ldsh"]="↲",
-["isins"]="⋴",
-["RoundImplies"]="⥰",
-["bigtriangledown"]="▽",
-["LeftAngleBracket"]="⟨",
-["HorizontalLine"]="─",
-["Vdashl"]="⫦",
-["rHar"]="⥤",
-["Tcaron"]="Ť",
-["LeftDownVectorBar"]="⥙",
-["jopf"]="𝕛",
-["LeftRightVector"]="⥎",
-["LessGreater"]="≶",
+["DownTeeArrow"]="↧",
+["Bopf"]="𝔹",
+["capand"]="⩄",
+["nleqq"]="≦̸",
+["ratio"]="∶",
+["eplus"]="⩱",
+["nge"]="≱",
+["laquo"]="«",
+["urtri"]="◹",
+["LeftUpVector"]="↿",
+["gl"]="≷",
+["Gt"]="≫",
+["andd"]="⩜",
+["Lstrok"]="Ł",
+["gamma"]="γ",
+["Sc"]="⪼",
+["Aopf"]="𝔸",
+["pluscir"]="⨢",
+["Itilde"]="Ĩ",
+["DoubleRightTee"]="⊨",
+["pluse"]="⩲",
+["iiint"]="∭",
+["dotplus"]="∔",
+["vrtri"]="⊳",
+["Proportion"]="∷",
+["bne"]="=⃥",
+["cuepr"]="⋞",
+["vBar"]="⫨",
+["yucy"]="ю",
+["PrecedesTilde"]="≾",
+["varr"]="↕",
+["leftarrowtail"]="↢",
+["rangle"]="⟩",
+["subsub"]="⫕",
+["rightarrowtail"]="↣",
+["oslash"]="ø",
+["mapstodown"]="↧",
+["sqsube"]="⊑",
+["NewLine"]="\n",
+["Vdash"]="⊩",
+["num"]="#",
+["umacr"]="ū",
+["InvisibleTimes"]="⁢",
+["bemptyv"]="⦰",
+["Iogon"]="Į",
+["ssmile"]="⌣",
+["timesbar"]="⨱",
+["Tstrok"]="Ŧ",
+["Icy"]="И",
+["zacute"]="ź",
+["Cedilla"]="¸",
+["daleth"]="ℸ",
+["semi"]=";",
+["ssetmn"]="∖",
+["subdot"]="⪽",
+["Bernoullis"]="ℬ",
+["otimesas"]="⨶",
+["circleddash"]="⊝",
+["circlearrowright"]="↻",
+["NotLeftTriangleEqual"]="⋬",
+["NotTilde"]="≁",
["npart"]="∂̸",
-["nsmid"]="∤",
-["RightTriangleBar"]="⧐",
-["nesim"]="≂̸",
-["deg"]="°",
-["LeftTeeArrow"]="↤",
-["NotHumpDownHump"]="≎̸",
-["tridot"]="◬",
-["lceil"]="⌈",
-["ExponentialE"]="ⅇ",
-["tosa"]="⤩",
-["gopf"]="𝕘",
-["ContourIntegral"]="∮",
-["late"]="⪭",
-["bbrk"]="⎵",
-["half"]="½",
-["boxhd"]="┬",
-["hopf"]="𝕙",
-["Ouml"]="Ö",
-["Atilde"]="Ã",
+["Gbreve"]="Ğ",
+["gtrless"]="≷",
+["pound"]="£",
+["curlyeqsucc"]="⋟",
+["blacklozenge"]="⧫",
+["ldca"]="⤶",
+["nsucc"]="⊁",
+["top"]="⊤",
+["ufr"]="𝔲",
+["sscr"]="𝓈",
+["eDDot"]="⩷",
+["Updownarrow"]="⇕",
+["loz"]="◊",
+["Gcy"]="Г",
+["boxdl"]="┐",
+["napos"]="ʼn",
+["Sqrt"]="√",
+["xsqcup"]="⨆",
+["Implies"]="⇒",
+["uring"]="ů",
+["thetav"]="ϑ",
+["iiiint"]="⨌",
+["nLeftrightarrow"]="⇎",
+["lobrk"]="⟦",
+["xfr"]="𝔵",
+["Abreve"]="Ă",
+["micro"]="µ",
+["quatint"]="⨖",
+["congdot"]="⩭",
+["nrtrie"]="⋭",
+["Fcy"]="Ф",
+["hksearow"]="⤥",
+["LowerLeftArrow"]="↙",
+["rdca"]="⤷",
+["OverBar"]="‾",
+["frac12"]="½",
+["imacr"]="ī",
+["boxVL"]="╣",
+["sfr"]="𝔰",
+["ensp"]=" ",
+["dwangle"]="⦦",
+["boxh"]="─",
+["Eogon"]="Ę",
+["imped"]="Ƶ",
+["Ecy"]="Э",
+["lates"]="⪭︀",
+["phi"]="φ",
+["minusd"]="∸",
["planckh"]="ℎ",
-["MinusPlus"]="∓",
-["uharl"]="↿",
-["aleph"]="ℵ",
-["boxHD"]="╦",
-["lesseqgtr"]="⋚",
-["colon"]=":",
-["SquareSupersetEqual"]="⊒",
-["isinsv"]="⋳",
-["lnapprox"]="⪉",
-["PrecedesSlantEqual"]="≼",
+["Ocirc"]="Ô",
+["lE"]="≦",
+["sum"]="∑",
+["lrtri"]="⊿",
+["ruluhar"]="⥨",
+["lAarr"]="⇚",
+["DownArrow"]="↓",
+["zscr"]="𝓏",
+["questeq"]="≟",
+["ngeqq"]="≧̸",
+["And"]="⩓",
+["Dcy"]="Д",
+["angrtvbd"]="⦝",
+["rarrpl"]="⥅",
+["thkap"]="≈",
+["Otimes"]="⨷",
+["lesssim"]="≲",
+["gE"]="≧",
+["ouml"]="ö",
+["nsubseteq"]="⊈",
+["bigcirc"]="◯",
+["boxVR"]="╠",
+["Vert"]="‖",
+["naturals"]="ℕ",
+["plussim"]="⨦",
+["wscr"]="𝓌",
+["raquo"]="»",
+["bigodot"]="⨀",
+["dashv"]="⊣",
+["hairsp"]=" ",
+["inodot"]="ı",
+["vnsup"]="⊃⃒",
+["cire"]="≗",
+["vartriangleleft"]="⊲",
+["rbrke"]="⦌",
["boxuL"]="╛",
-["csup"]="⫐",
-["hstrok"]="ħ",
+["sce"]="⪰",
+["nrtri"]="⋫",
+["loarr"]="⇽",
+["ShortRightArrow"]="→",
+["xscr"]="𝓍",
+["Bcy"]="Б",
+["HumpEqual"]="≏",
+["lmidot"]="ŀ",
+["DownLeftVector"]="↽",
+["leftharpoonup"]="↼",
+["lbbrk"]="❲",
+["rarrtl"]="↣",
+["SucceedsEqual"]="⪰",
+["HumpDownHump"]="≎",
+["Vee"]="⋁",
+["Gopf"]="𝔾",
+["otilde"]="õ",
+["ofr"]="𝔬",
+["Sub"]="⋐",
+["gnE"]="≩",
+["SquareSuperset"]="⊐",
["leftrightharpoons"]="⇋",
-["boxuR"]="╘",
-["DD"]="ⅅ",
-["Longrightarrow"]="⟹",
+["tosa"]="⤩",
+["Ucirc"]="Û",
+["mscr"]="𝓂",
+["Exists"]="∃",
+["langle"]="⟨",
+["rfr"]="𝔯",
+["THORN"]="Þ",
+["gtreqqless"]="⪌",
+["eqvparsl"]="⧥",
+["NotCongruent"]="≢",
+["phiv"]="ϕ",
+["lsquor"]="‚",
+["prec"]="≺",
+["igrave"]="ì",
+["Fopf"]="𝔽",
+["nwArr"]="⇖",
+["nscr"]="𝓃",
+["gescc"]="⪩",
+["intprod"]="⨼",
+["larrlp"]="↫",
+["AMP"]="&",
+["psi"]="ψ",
+["mDDot"]="∺",
+["VDash"]="⊫",
+["Lleftarrow"]="⇚",
+["mfr"]="𝔪",
+["gesles"]="⪔",
+["kscr"]="𝓀",
+["Omega"]="Ω",
+["bumpe"]="≏",
+["NotDoubleVerticalBar"]="∦",
+["frac18"]="⅛",
+["ecolon"]="≕",
+["compfn"]="∘",
+["supdot"]="⪾",
+["Alpha"]="Α",
+["rsquor"]="’",
+["percnt"]="%",
+["pfr"]="𝔭",
+["frasl"]="⁄",
+["lscr"]="𝓁",
+["aleph"]="ℵ",
+["swArr"]="⇙",
+["uuml"]="ü",
+["uacute"]="ú",
+["scE"]="⪴",
+["hellip"]="…",
+["ulcorner"]="⌜",
+["prnap"]="⪹",
+["Gg"]="⋙",
+["wedge"]="∧",
+["SquareSubset"]="⊏",
+["qscr"]="𝓆",
+["kfr"]="𝔨",
+["RightTee"]="⊢",
+["eqsim"]="≂",
+["rbrksld"]="⦎",
+["ohm"]="Ω",
+["lozf"]="⧫",
+["cups"]="∪︀",
["epsilon"]="ε",
-["NotTildeTilde"]="≉",
+["ncap"]="⩃",
+["Leftarrow"]="⇐",
+["ultri"]="◸",
+["egrave"]="è",
+["vBarv"]="⫩",
+["bNot"]="⫭",
["nfr"]="𝔫",
-["Vscr"]="𝒱",
-["Ncy"]="Н",
-["boxUl"]="╜",
-["searr"]="↘",
-["ddagger"]="‡",
-["KHcy"]="Х",
-["NotSuperset"]="⊃⃒",
-["Uparrow"]="⇑",
-["nsqsube"]="⋢",
-["Imacr"]="Ī",
-["nspar"]="∦",
-["supsetneqq"]="⫌",
-["Sscr"]="𝒮",
-["lobrk"]="⟦",
-["mfr"]="𝔪",
-["acirc"]="â",
-["subne"]="⊊",
-["Icirc"]="Î",
-["Re"]="ℜ",
-["nearrow"]="↗",
+["rsqb"]="]",
+["OpenCurlyDoubleQuote"]="“",
+["rsquo"]="’",
+["Del"]="∇",
+["smtes"]="⪬︀",
+["varphi"]="ϕ",
+["CirclePlus"]="⊕",
+["prcue"]="≼",
+["curren"]="¤",
+["nltri"]="⋪",
+["oscr"]="ℴ",
+["Wcirc"]="Ŵ",
+["prime"]="′",
+["ifr"]="𝔦",
+["apos"]="'",
+["UpTee"]="⊥",
+["lescc"]="⪨",
+["NegativeMediumSpace"]="​",
+["DownTee"]="⊤",
+["NotSquareSubsetEqual"]="⋢",
+["LowerRightArrow"]="↘",
+["wr"]="≀",
+["andand"]="⩕",
+["gvnE"]="≩︀",
+["lfr"]="𝔩",
+["lowast"]="∗",
+["gfr"]="𝔤",
+["digamma"]="ϝ",
+["cemptyv"]="⦲",
+["ubreve"]="ŭ",
+["dstrok"]="đ",
+["expectation"]="ℰ",
+["sime"]="≃",
+["ltrif"]="◂",
+["iacute"]="í",
+["chi"]="χ",
+["erDot"]="≓",
+["Vcy"]="В",
+["boxhd"]="┬",
+["DoubleDownArrow"]="⇓",
+["lArr"]="⇐",
+["demptyv"]="⦱",
+["smt"]="⪪",
+["intcal"]="⊺",
+["in"]="∈",
+["capcup"]="⩇",
+["kjcy"]="ќ",
+["Ccirc"]="Ĉ",
+["bnequiv"]="≡⃥",
+["Emacr"]="Ē",
+["siml"]="⪝",
+["jfr"]="𝔧",
+["gesdoto"]="⪂",
+["efr"]="𝔢",
+["precneqq"]="⪵",
+["because"]="∵",
+["Udblac"]="Ű",
+["lg"]="≶",
+["boxvr"]="├",
+["fpartint"]="⨍",
+["rbbrk"]="❳",
+["LT"]="<",
+["cap"]="∩",
+["circledR"]="®",
+["notinvc"]="⋶",
+["zwj"]="‍",
+["nle"]="≰",
+["hfr"]="𝔥",
+["bigsqcup"]="⨆",
+["nGg"]="⋙̸",
+["doublebarwedge"]="⌆",
["YUcy"]="Ю",
-["eqsim"]="≂",
-["UnionPlus"]="⊎",
-["topcir"]="⫱",
-["boxVL"]="╣",
-["Xscr"]="𝒳",
-["QUOT"]="\"",
-["RightDownVectorBar"]="⥕",
-["epsi"]="ε",
-["natur"]="♮",
-["leftthreetimes"]="⋋",
-["hercon"]="⊹",
-["lHar"]="⥢",
-["Aring"]="Å",
-["Kcedil"]="Ķ",
-["kfr"]="𝔨",
-["Oacute"]="Ó",
+["empty"]="∅",
+["nacute"]="ń",
+["Acirc"]="Â",
+["bigtriangleup"]="△",
+["hybull"]="⁃",
+["Ycy"]="Ы",
+["isindot"]="⋵",
+["iota"]="ι",
+["numero"]="№",
+["cfr"]="𝔠",
+["llarr"]="⇇",
+["lrhard"]="⥭",
+["cross"]="✗",
["zwnj"]="‌",
-["plusdu"]="⨥",
-["Kcy"]="К",
-["sqcup"]="⊔",
-["zscr"]="𝓏",
-["Assign"]="≔",
-["zopf"]="𝕫",
-["lstrok"]="ł",
-["zigrarr"]="⇝",
-["ShortDownArrow"]="↓",
-["simlE"]="⪟",
-["mid"]="∣",
["zeta"]="ζ",
-["gE"]="≧",
-["zeetrf"]="ℨ",
-["qfr"]="𝔮",
+["precnsim"]="⋨",
+["zcy"]="з",
["zcaron"]="ž",
-["Yacute"]="Ý",
-["hksearow"]="⤥",
-["Atilde"]="Ã",
-["zacute"]="ź",
-["bsemi"]="⁏",
-["bigtriangleup"]="△",
-["yuml"]="ÿ",
-["yucy"]="ю",
+["xodot"]="⨀",
+["RightDownTeeVector"]="⥝",
+["ljcy"]="љ",
["yscr"]="𝓎",
-["yopf"]="𝕪",
["yicy"]="ї",
-["urcorn"]="⌝",
-["Aacute"]="Á",
-["backsimeq"]="⋍",
-["ShortUpArrow"]="↑",
+["Rcy"]="Р",
+["nsubset"]="⊂⃒",
+["yen"]="¥",
+["ycy"]="ы",
+["simeq"]="≃",
+["dharr"]="⇂",
+["ycirc"]="ŷ",
+["hArr"]="⇔",
+["yacute"]="ý",
+["yacute"]="ý",
["xwedge"]="⋀",
-["Jcy"]="Й",
-["nltrie"]="⋬",
-["starf"]="★",
-["zfr"]="𝔷",
-["comma"]=",",
-["xsqcup"]="⨆",
-["boxVr"]="╟",
-["cirscir"]="⧂",
-["ucirc"]="û",
-["Cross"]="⨯",
-["naturals"]="ℕ",
-["quaternions"]="ℍ",
-["xopf"]="𝕩",
-["xodot"]="⨀",
+["xoplus"]="⨁",
+["nparsl"]="⫽⃥",
+["PartialD"]="∂",
+["YAcy"]="Я",
+["xrArr"]="⟹",
+["xotime"]="⨂",
+["sstarf"]="⋆",
+["yuml"]="ÿ",
+["Int"]="∬",
+["bsolb"]="⧅",
["xnis"]="⋻",
-["lsaquo"]="‹",
-["xlarr"]="⟵",
-["Zacute"]="Ź",
-["vdash"]="⊢",
-["submult"]="⫁",
-["Oscr"]="𝒪",
+["xmap"]="⟼",
+["hercon"]="⊹",
+["xlArr"]="⟸",
+["xharr"]="⟷",
+["rbrack"]="]",
["xdtri"]="▽",
-["LowerRightArrow"]="↘",
+["diamond"]="⋄",
["xcup"]="⋃",
-["Ycy"]="Ы",
-["timesb"]="⊠",
-["Ucirc"]="Û",
-["eth"]="ð",
-["wscr"]="𝓌",
-["ratail"]="⤚",
-["wr"]="≀",
-["Ograve"]="Ò",
-["wp"]="℘",
-["euml"]="ë",
-["yfr"]="𝔶",
-["rangle"]="⟩",
-["hearts"]="♥",
+["subsup"]="⫓",
+["lneqq"]="≨",
+["dharl"]="⇃",
+["Scy"]="С",
+["wopf"]="𝕨",
+["rightleftharpoons"]="⇌",
+["wfr"]="𝔴",
+["nsupseteqq"]="⫆̸",
+["boxuR"]="╘",
+["permil"]="‰",
["wedgeq"]="≙",
-["wedge"]="∧",
-["gtcir"]="⩺",
-["par"]="∥",
-["swarr"]="↙",
-["phiv"]="ϕ",
-["NotElement"]="∉",
-["alpha"]="α",
-["SquareUnion"]="⊔",
-["parsl"]="⫽",
+["eparsl"]="⧣",
+["RoundImplies"]="⥰",
+["afr"]="𝔞",
+["vsubne"]="⊊︀",
+["sup2"]="²",
["vscr"]="𝓋",
-["rharu"]="⇀",
-["vrtri"]="⊳",
-["comp"]="∁",
-["Agrave"]="À",
-["rdca"]="⤷",
-["vprop"]="∝",
-["Tscr"]="𝒯",
["vopf"]="𝕧",
-["ldca"]="⤶",
+["lbrace"]="{",
["vnsub"]="⊂⃒",
-["gbreve"]="ğ",
-["NotSquareSubset"]="⊏̸",
-["verbar"]="|",
-["YAcy"]="Я",
+["vltri"]="⊲",
+["Uacute"]="Ú",
+["vfr"]="𝔳",
+["sacute"]="ś",
+["njcy"]="њ",
+["frac35"]="⅗",
+["squf"]="▪",
["veeeq"]="≚",
-["downharpoonleft"]="⇃",
-["Star"]="⋆",
-["xfr"]="𝔵",
-["nges"]="⩾̸",
-["GreaterGreater"]="⪢",
-["vartriangleright"]="⊳",
-["rcy"]="р",
-["vartheta"]="ϑ",
-["varsupsetneqq"]="⫌︀",
-["dashv"]="⊣",
+["lsime"]="⪍",
+["mapstoleft"]="↤",
["varsupsetneq"]="⊋︀",
-["Ncaron"]="Ň",
-["varsubsetneqq"]="⫋︀",
+["varsubsetneq"]="⊊︀",
+["Tcy"]="Т",
+["cwint"]="∱",
+["varsigma"]="ς",
+["LessGreater"]="≶",
["varrho"]="ϱ",
-["triangledown"]="▿",
-["varpi"]="ϖ",
-["sol"]="/",
-["ssetmn"]="∖",
-["varnothing"]="∅",
+["varpropto"]="∝",
+["pr"]="≺",
+["backprime"]="‵",
["varkappa"]="ϰ",
-["vangrt"]="⦜",
-["Leftarrow"]="⇐",
-["Qscr"]="𝒬",
-["uwangle"]="⦧",
-["rarrap"]="⥵",
+["Poincareplane"]="ℌ",
+["roplus"]="⨮",
+["Edot"]="Ė",
+["copysr"]="℗",
["uuml"]="ü",
+["dfr"]="𝔡",
["uuarr"]="⇈",
+["uogon"]="ų",
+["Uscr"]="𝒰",
+["gel"]="⋛",
+["olarr"]="↺",
+["lsaquo"]="‹",
+["omacr"]="ō",
+["utdot"]="⋰",
+["or"]="∨",
+["Ocirc"]="Ô",
+["ClockwiseContourIntegral"]="∲",
+["SmallCircle"]="∘",
+["gtcc"]="⪧",
["uscr"]="𝓊",
-["urtri"]="◹",
-["uring"]="ů",
-["sect"]="§",
-["quatint"]="⨖",
["urcrop"]="⌎",
-["wfr"]="𝔴",
-["duhar"]="⥯",
-["upuparrows"]="⇈",
-["macr"]="¯",
-["SmallCircle"]="∘",
-["upsih"]="ϒ",
-["uplus"]="⊎",
-["shy"]="­",
-["uparrow"]="↑",
+["ContourIntegral"]="∮",
+["szlig"]="ß",
+["egs"]="⪖",
+["Ucy"]="У",
+["ange"]="⦤",
+["upharpoonright"]="↾",
+["xcap"]="⋂",
["uml"]="¨",
-["eDot"]="≑",
-["blk34"]="▓",
-["umacr"]="ū",
-["ultri"]="◸",
-["rbbrk"]="❳",
+["nsubseteqq"]="⫅̸",
["ulcorn"]="⌜",
-["uharr"]="↾",
+["uhblk"]="▀",
+["scirc"]="ŝ",
+["shy"]="­",
+["uharl"]="↿",
["ugrave"]="ù",
-["Ograve"]="Ò",
-["nsupseteq"]="⊉",
-["ufisht"]="⥾",
-["Breve"]="˘",
-["ucy"]="у",
-["cylcty"]="⌭",
-["ubreve"]="ŭ",
-["SHcy"]="Ш",
-["boxdR"]="╒",
-["awint"]="⨑",
-["uHar"]="⥣",
+["lstrok"]="ł",
+["Gamma"]="Γ",
+["udhar"]="⥮",
+["udblac"]="ű",
+["ucirc"]="û",
+["loang"]="⟬",
+["uarr"]="↑",
["uArr"]="⇑",
-["REG"]="®",
-["twoheadleftarrow"]="↞",
+["twoheadrightarrow"]="↠",
["tstrok"]="ŧ",
-["iprod"]="⨼",
["tshcy"]="ћ",
+["tscy"]="ц",
+["angsph"]="∢",
+["kappa"]="κ",
["tscr"]="𝓉",
-["trpezium"]="⏢",
-["ycirc"]="ŷ",
-["larrhk"]="↩",
-["triplus"]="⨹",
+["tritime"]="⨻",
+["trisb"]="⧍",
["triminus"]="⨺",
-["Rsh"]="↱",
-["becaus"]="∵",
-["Acirc"]="Â",
+["trie"]="≜",
+["tridot"]="◬",
+["aacute"]="á",
["trianglerighteq"]="⊵",
+["RightTeeVector"]="⥛",
["triangleright"]="▹",
-["hkswarow"]="⤦",
-["triangleq"]="≜",
-["AElig"]="Æ",
["trianglelefteq"]="⊴",
-["varpropto"]="∝",
["triangle"]="▵",
-["tprime"]="‴",
+["NegativeVeryThinSpace"]="​",
+["triangledown"]="▿",
+["dash"]="‐",
+["trade"]="™",
["topfork"]="⫚",
+["Upsi"]="ϒ",
+["topcir"]="⫱",
+["loplus"]="⨭",
+["Zdot"]="Ż",
+["lbrke"]="⦋",
+["angmsd"]="∡",
+["dArr"]="⇓",
+["topbot"]="⌶",
["toea"]="⤨",
-["ac"]="∾",
-["timesd"]="⨰",
-["UpArrowDownArrow"]="⇅",
-["timesbar"]="⨱",
-["llhard"]="⥫",
-["CHcy"]="Ч",
-["odblac"]="ő",
-["THORN"]="Þ",
-["notni"]="∌",
-["nbump"]="≎̸",
-["eqcolon"]="≕",
+["iexcl"]="¡",
+["acirc"]="â",
+["easter"]="⩮",
+["CloseCurlyDoubleQuote"]="”",
+["cupcup"]="⩊",
+["rlhar"]="⇌",
+["nsimeq"]="≄",
+["Uparrow"]="⇑",
+["tau"]="τ",
+["npr"]="⊀",
+["phone"]="☎",
+["emacr"]="ē",
+["SHcy"]="Ш",
+["gtdot"]="⋗",
+["ReverseUpEquilibrium"]="⥯",
["tilde"]="˜",
-["simgE"]="⪠",
-["intercal"]="⊺",
-["thetasym"]="ϑ",
-["xcirc"]="◯",
+["angmsdac"]="⦪",
+["duhar"]="⥯",
+["approxeq"]="≊",
+["NotSupersetEqual"]="⊉",
+["thorn"]="þ",
+["thksim"]="∼",
+["subsim"]="⫇",
+["bnot"]="⌐",
["thinsp"]=" ",
["thicksim"]="∼",
-["LeftArrowBar"]="⇤",
-["Uuml"]="Ü",
-["DownTeeArrow"]="↧",
-["cent"]="¢",
-["hookleftarrow"]="↩",
-["odiv"]="⨸",
-["therefore"]="∴",
-["ClockwiseContourIntegral"]="∲",
-["Ofr"]="𝔒",
-["auml"]="ä",
-["frac12"]="½",
-["nRightarrow"]="⇏",
-["kcedil"]="ķ",
-["DownRightVectorBar"]="⥗",
-["boxDL"]="╗",
+["gt"]=">",
+["UpperLeftArrow"]="↖",
+["thetasym"]="ϑ",
+["simlE"]="⪟",
+["bbrktbrk"]="⎶",
+["Jcirc"]="Ĵ",
+["cedil"]="¸",
+["NotLessSlantEqual"]="⩽̸",
+["rx"]="℞",
+["infin"]="∞",
+["curlyvee"]="⋎",
+["LeftArrow"]="←",
+["tfr"]="𝔱",
+["blacksquare"]="▪",
+["emptyv"]="∅",
+["Mellintrf"]="ℳ",
+["aogon"]="ą",
+["succnapprox"]="⪺",
+["tcy"]="т",
+["ecaron"]="ě",
["tcedil"]="ţ",
-["boxUr"]="╙",
-["icirc"]="î",
-["lmoustache"]="⎰",
-["prime"]="′",
-["ngeq"]="≱",
-["nshortparallel"]="∦",
+["boxhU"]="╨",
+["boxVl"]="╢",
+["gacute"]="ǵ",
+["tcaron"]="ť",
+["boxDr"]="╓",
+["bump"]="≎",
+["blk12"]="▒",
+["RightArrow"]="→",
+["els"]="⪕",
+["apacir"]="⩯",
+["acy"]="а",
+["omid"]="⦶",
+["boxbox"]="⧉",
+["iecy"]="е",
["szlig"]="ß",
-["Egrave"]="È",
-["sqsubset"]="⊏",
-["NotRightTriangleEqual"]="⋭",
-["swarrow"]="↙",
-["Ucirc"]="Û",
-["DownArrowBar"]="⤓",
-["Lfr"]="𝔏",
+["upsih"]="ϒ",
+["swnwar"]="⤪",
+["Icirc"]="Î",
+["swarr"]="↙",
+["times"]="×",
+["Ograve"]="Ò",
+["hoarr"]="⇿",
+["NotTildeEqual"]="≄",
+["IEcy"]="Е",
+["iexcl"]="¡",
+["bdquo"]="„",
+["TildeTilde"]="≈",
+["nshortparallel"]="∦",
+["subedot"]="⫃",
+["supsetneq"]="⊋",
+["CenterDot"]="·",
+["lessapprox"]="⪅",
+["LeftVectorBar"]="⥒",
+["bigoplus"]="⨁",
+["supseteqq"]="⫆",
+["drcorn"]="⌟",
+["hstrok"]="ħ",
+["HorizontalLine"]="─",
+["curarrm"]="⤼",
+["lopar"]="⦅",
["wcirc"]="ŵ",
-["LessLess"]="⪡",
-["Tilde"]="∼",
-["empty"]="∅",
-["swarhk"]="⤦",
-["DownLeftVector"]="↽",
-["Uscr"]="𝒰",
-["khcy"]="х",
-["gesl"]="⋛︀",
-["supsub"]="⫔",
-["malt"]="✠",
-["cirmid"]="⫯",
-["PrecedesTilde"]="≾",
-["lharul"]="⥪",
-["rightleftharpoons"]="⇌",
-["Ccedil"]="Ç",
-["plusb"]="⊞",
-["nsupe"]="⊉",
-["geq"]="≥",
-["dHar"]="⥥",
-["lcedil"]="ļ",
-["ange"]="⦤",
-["supseteq"]="⊇",
-["Upsi"]="ϒ",
-["mapstodown"]="↧",
-["profalar"]="⌮",
-["cupdot"]="⊍",
-["mapstoleft"]="↤",
-["xotime"]="⨂",
-["tbrk"]="⎴",
-["supmult"]="⫂",
-["disin"]="⋲",
["suphsub"]="⫗",
-["eg"]="⪚",
+["Otilde"]="Õ",
+["EmptySmallSquare"]="◻",
["supedot"]="⫄",
-["NonBreakingSpace"]=" ",
-["Euml"]="Ë",
-["bsolhsub"]="⟈",
-["supdsub"]="⫘",
+["Kopf"]="𝕂",
+["boxminus"]="⊟",
+["csupe"]="⫒",
+["Ffr"]="𝔉",
+["origof"]="⊶",
["sup3"]="³",
-["DoubleLeftTee"]="⫤",
-["angrtvb"]="⊾",
-["supsim"]="⫈",
-["sup2"]="²",
-["sup2"]="²",
-["circledast"]="⊛",
-["rfr"]="𝔯",
-["darr"]="↓",
-["rarrhk"]="↪",
-["macr"]="¯",
+["boxH"]="═",
+["vsubnE"]="⫋︀",
+["Hcirc"]="Ĥ",
+["block"]="█",
+["bsolhsub"]="⟈",
+["Supset"]="⋑",
+["GreaterFullEqual"]="≧",
["sup1"]="¹",
-["aacute"]="á",
-["oscr"]="ℴ",
-["lharu"]="↼",
-["telrec"]="⌕",
-["Dashv"]="⫤",
-["succnsim"]="⋩",
-["AElig"]="Æ",
-["Vee"]="⋁",
-["succnapprox"]="⪺",
-["CapitalDifferentialD"]="ⅅ",
+["llcorner"]="⌞",
+["sopf"]="𝕤",
+["larrbfs"]="⤟",
+["succneqq"]="⪶",
+["part"]="∂",
+["eacute"]="é",
+["COPY"]="©",
+["frac23"]="⅔",
+["dbkarow"]="⤏",
+["succeq"]="⪰",
+["notni"]="∌",
+["Euml"]="Ë",
+["harrcir"]="⥈",
+["leftrightsquigarrow"]="↭",
+["xcirc"]="◯",
+["caret"]="⁁",
+["les"]="⩽",
+["lharul"]="⥪",
+["bsime"]="⋍",
+["DoubleLeftArrow"]="⇐",
+["ecirc"]="ê",
+["subsetneqq"]="⫋",
+["crarr"]="↵",
+["cuwed"]="⋏",
+["Ugrave"]="Ù",
+["Gcirc"]="Ĝ",
+["LeftTriangleBar"]="⧏",
["gsim"]="≳",
-["succapprox"]="⪸",
-["rmoustache"]="⎱",
-["DotEqual"]="≐",
-["subsup"]="⫓",
-["Gcedil"]="Ģ",
-["questeq"]="≟",
-["lthree"]="⋋",
-["cong"]="≅",
-["lcub"]="{",
-["radic"]="√",
-["subrarr"]="⥹",
-["nvlt"]="<⃒",
+["RightTriangleEqual"]="⊵",
+["lacute"]="ĺ",
+["Ccedil"]="Ç",
+["ee"]="ⅇ",
+["heartsuit"]="♥",
+["coloneq"]="≔",
+["subseteq"]="⊆",
+["NotSucceedsTilde"]="≿̸",
["subplus"]="⪿",
-["bigsqcup"]="⨆",
-["downarrow"]="↓",
-["auml"]="ä",
-["boxdL"]="╕",
-["boxvr"]="├",
-["lbrkslu"]="⦍",
-["bigwedge"]="⋀",
-["apacir"]="⩯",
-["Wscr"]="𝒲",
-["iecy"]="е",
-["VerticalSeparator"]="❘",
-["Yfr"]="𝔜",
+["cupcap"]="⩆",
+["Amacr"]="Ā",
+["angst"]="Å",
+["supsetneqq"]="⫌",
+["sube"]="⊆",
+["imagpart"]="ℑ",
+["Lambda"]="Λ",
+["Afr"]="𝔄",
+["sub"]="⊂",
["strns"]="¯",
["straightphi"]="ϕ",
-["kcy"]="к",
-["aogon"]="ą",
-["star"]="☆",
-["caret"]="⁁",
-["cups"]="∪︀",
-["iquest"]="¿",
-["spar"]="∥",
-["NotExists"]="∄",
-["Gt"]="≫",
+["boxvL"]="╡",
+["dagger"]="†",
+["eta"]="η",
+["KHcy"]="Х",
+["Yfr"]="𝔜",
+["lbrack"]="[",
+["VerticalBar"]="∣",
+["rightleftarrows"]="⇄",
+["fltns"]="▱",
+["verbar"]="|",
+["RightAngleBracket"]="⟩",
+["DownRightVector"]="⇁",
+["Lacute"]="Ĺ",
+["sol"]="/",
+["lrm"]="‎",
+["lesdot"]="⩿",
+["nleqslant"]="⩽̸",
+["capcap"]="⩋",
["squ"]="□",
-["sqsupe"]="⊒",
-["subnE"]="⫋",
+["xutri"]="△",
+["TSHcy"]="Ћ",
+["gap"]="⪆",
+["gtrdot"]="⋗",
+["scnap"]="⪺",
+["bkarow"]="⤍",
+["NotPrecedes"]="⊀",
+["suphsol"]="⟉",
["sqsup"]="⊐",
-["sqsubseteq"]="⊑",
-["ffr"]="𝔣",
-["UpTeeArrow"]="↥",
-["middot"]="·",
-["DoubleLongRightArrow"]="⟹",
-["sqsube"]="⊑",
-["sce"]="⪰",
-["Sup"]="⋑",
-["cacute"]="ć",
-["GreaterFullEqual"]="≧",
-["pfr"]="𝔭",
-["Lleftarrow"]="⇚",
-["heartsuit"]="♥",
-["precsim"]="≾",
-["nsucceq"]="⪰̸",
+["epsi"]="ε",
+["sqsubset"]="⊏",
+["check"]="✓",
+["UpArrowBar"]="⤒",
+["NotPrecedesEqual"]="⪯̸",
+["csube"]="⫑",
+["nsupset"]="⊃⃒",
+["lesdoto"]="⪁",
["sqcups"]="⊔︀",
-["Igrave"]="Ì",
-["iquest"]="¿",
-["Pcy"]="П",
-["thksim"]="∼",
-["djcy"]="ђ",
-["hfr"]="𝔥",
-["spadesuit"]="♠",
-["rbrkslu"]="⦐",
-["shcy"]="ш",
-["barwed"]="⌅",
-["rpar"]=")",
-["iiiint"]="⨌",
-["solb"]="⧄",
-["Integral"]="∫",
-["napE"]="⩰̸",
-["softcy"]="ь",
-["NotRightTriangleBar"]="⧐̸",
-["Mu"]="Μ",
-["frasl"]="⁄",
-["Icy"]="И",
-["dfisht"]="⥿",
+["suplarr"]="⥻",
+["nsim"]="≁",
+["NotEqualTilde"]="≂̸",
+["nearr"]="↗",
+["SquareIntersection"]="⊓",
+["intlarhk"]="⨗",
+["Ecirc"]="Ê",
+["vangrt"]="⦜",
+["fllig"]="fl",
+["Leftrightarrow"]="⇔",
+["primes"]="ℙ",
+["nvlArr"]="⤂",
["smte"]="⪬",
-["smt"]="⪪",
-["bottom"]="⊥",
-["oacute"]="ó",
-["ofr"]="𝔬",
+["ltri"]="◃",
+["Tscr"]="𝒯",
["smid"]="∣",
-["ReverseUpEquilibrium"]="⥯",
-["smashp"]="⨳",
-["slarr"]="←",
-["simne"]="≆",
-["LeftRightArrow"]="↔",
-["thkap"]="≈",
-["nlArr"]="⇍",
-["chcy"]="ч",
-["not"]="¬",
-["kgreen"]="ĸ",
-["simeq"]="≃",
-["LongRightArrow"]="⟶",
-["sime"]="≃",
-["sigma"]="σ",
-["odot"]="⊙",
-["amp"]="&",
-["Longleftrightarrow"]="⟺",
-["Upsilon"]="Υ",
-["upharpoonleft"]="↿",
-["bigotimes"]="⨂",
-["parallel"]="∥",
-["ffllig"]="ffl",
-["shortparallel"]="∥",
-["boxdr"]="┌",
-["shortmid"]="∣",
-["Euml"]="Ë",
-["UpDownArrow"]="↕",
-["lcaron"]="ľ",
-["sfrown"]="⌢",
-["harr"]="↔",
-["dsol"]="⧶",
-["Beta"]="Β",
-["srarr"]="→",
-["boxHd"]="╤",
+["smeparsl"]="⧤",
+["rarrc"]="⤳",
+["divideontimes"]="⋇",
+["eth"]="ð",
+["boxvR"]="╞",
+["copy"]="©",
+["nges"]="⩾̸",
+["fcy"]="ф",
+["ShortUpArrow"]="↑",
+["simplus"]="⨤",
+["frac45"]="⅘",
+["nexists"]="∄",
+["LeftTeeArrow"]="↤",
+["leftleftarrows"]="⇇",
+["simg"]="⪞",
+["euro"]="€",
+["simdot"]="⩪",
+["sim"]="∼",
+["sigmav"]="ς",
+["iuml"]="ï",
+["updownarrow"]="↕",
+["shy"]="­",
+["solb"]="⧄",
["nesear"]="⤨",
+["Umacr"]="Ū",
+["uharr"]="↾",
+["Therefore"]="∴",
+["Barv"]="⫧",
+["amacr"]="ā",
["setmn"]="∖",
-["DoubleDot"]="¨",
["setminus"]="∖",
-["andd"]="⩜",
-["leftrightarrow"]="↔",
+["Sscr"]="𝒮",
["seswar"]="⤩",
-["eogon"]="ę",
-["bne"]="=⃥",
-["DownBreve"]="̑",
-["nLtv"]="≪̸",
-["nprcue"]="⋠",
-["SucceedsSlantEqual"]="≽",
-["downdownarrows"]="⇊",
-["seArr"]="⇘",
-["Utilde"]="Ũ",
-["Gammad"]="Ϝ",
-["sdote"]="⩦",
-["iexcl"]="¡",
-["nvdash"]="⊬",
-["csupe"]="⫒",
+["ccupssm"]="⩐",
+["searr"]="↘",
["sdotb"]="⊡",
-["scsim"]="≿",
-["bcy"]="б",
-["NotTilde"]="≁",
-["minus"]="−",
-["scnE"]="⪶",
-["scirc"]="ŝ",
-["oplus"]="⊕",
-["para"]="¶",
-["Ycirc"]="Ŷ",
-["notinva"]="∉",
-["nLl"]="⋘̸",
-["Aring"]="Å",
-["THORN"]="Þ",
-["numero"]="№",
-["scaron"]="š",
-["bsol"]="\\",
-["harrw"]="↭",
-["exponentiale"]="ⅇ",
-["eDDot"]="⩷",
-["AMP"]="&",
-["gamma"]="γ",
-["opar"]="⦷",
-["cwint"]="∱",
-["GreaterEqual"]="≥",
-["bigcap"]="⋂",
-["rtimes"]="⋊",
-["integers"]="ℤ",
-["easter"]="⩮",
+["icirc"]="î",
+["amp"]="&",
+["gcy"]="г",
+["Aacute"]="Á",
+["boxvh"]="┼",
+["bfr"]="𝔟",
+["OverParenthesis"]="⏜",
+["sqsupe"]="⊒",
+["amp"]="&",
+["frac14"]="¼",
+["ZeroWidthSpace"]="​",
+["Colon"]="∷",
+["Proportional"]="∝",
+["thickapprox"]="≈",
+["subseteqq"]="⫅",
+["IJlig"]="IJ",
+["scedil"]="ş",
+["lrarr"]="⇆",
+["angmsdaf"]="⦭",
+["downharpoonleft"]="⇃",
["RightDoubleBracket"]="⟧",
+["half"]="½",
+["larr"]="←",
["sbquo"]="‚",
-["cfr"]="𝔠",
-["ruluhar"]="⥨",
-["image"]="ℑ",
-["nleqslant"]="⩽̸",
-["Yopf"]="𝕐",
-["apE"]="⩰",
-["NotPrecedesEqual"]="⪯̸",
-["rsqb"]="]",
-["rtrie"]="⊵",
-["rthree"]="⋌",
-["amp"]="&",
-["eng"]="ŋ",
-["ll"]="≪",
-["rrarr"]="⇉",
-["RightTee"]="⊢",
-["ETH"]="Ð",
-["ReverseEquilibrium"]="⇋",
-["langle"]="⟨",
+["Vscr"]="𝒱",
+["nVdash"]="⊮",
+["DownRightVectorBar"]="⥗",
+["RightDownVector"]="⇂",
+["disin"]="⋲",
+["nsce"]="⪰̸",
+["rbrace"]="}",
+["MinusPlus"]="∓",
+["rtrif"]="▸",
+["parsim"]="⫳",
+["supseteq"]="⊇",
+["Superset"]="⊃",
+["Verbar"]="‖",
["Zeta"]="Ζ",
-["roplus"]="⨮",
-["there4"]="∴",
-["DownRightTeeVector"]="⥟",
-["npar"]="∦",
-["robrk"]="⟧",
-["exist"]="∃",
-["lfr"]="𝔩",
-["VDash"]="⊫",
-["rnmid"]="⫮",
-["rmoust"]="⎱",
+["nsccue"]="⋡",
+["bsemi"]="⁏",
+["ldquor"]="„",
+["curarr"]="↷",
+["rscr"]="𝓇",
+["rppolint"]="⨒",
+["rpargt"]="⦔",
+["rotimes"]="⨵",
+["Equal"]="⩵",
+["ropf"]="𝕣",
+["ropar"]="⦆",
+["roarr"]="⇾",
+["odot"]="⊙",
+["natural"]="♮",
+["slarr"]="←",
+["angmsdae"]="⦬",
+["acE"]="∾̳",
["rlm"]="‏",
-["Ccirc"]="Ĉ",
-["imagpart"]="ℑ",
-["Equilibrium"]="⇌",
-["dd"]="ⅆ",
-["cuepr"]="⋞",
-["Agrave"]="À",
-["cuesc"]="⋟",
-["square"]="□",
-["notnivc"]="⋽",
-["rbrksld"]="⦎",
+["COPY"]="©",
+["iogon"]="į",
+["nleftrightarrow"]="↮",
+["reg"]="®",
+["risingdotseq"]="≓",
+["rightsquigarrow"]="↝",
+["dtri"]="▿",
+["Larr"]="↞",
+["icy"]="и",
+["gimel"]="ℷ",
["cup"]="∪",
-["OpenCurlyDoubleQuote"]="“",
-["Lacute"]="Ĺ",
-["NewLine"]="\n",
-["Sigma"]="Σ",
-["Abreve"]="Ă",
-["rightleftarrows"]="⇄",
-["tint"]="∭",
-["angmsdae"]="⦬",
-["Leftrightarrow"]="⇔",
-["rdquor"]="”",
-["Verbar"]="‖",
-["Gfr"]="𝔊",
+["DJcy"]="Ђ",
+["gtrapprox"]="⪆",
+["rightharpoonup"]="⇀",
+["prsim"]="≾",
+["rightharpoondown"]="⇁",
+["frac16"]="⅙",
+["nbsp"]=" ",
+["cedil"]="¸",
+["numsp"]=" ",
["rightarrow"]="→",
["rhov"]="ϱ",
-["Alpha"]="Α",
-["rho"]="ρ",
-["DownLeftTeeVector"]="⥞",
-["ntriangleright"]="⋫",
+["rdquo"]="”",
+["rharul"]="⥬",
+["frac34"]="¾",
+["ldrdhar"]="⥧",
+["gnsim"]="⋧",
+["rtriltri"]="⧎",
+["emsp"]=" ",
+["rlarr"]="⇄",
+["Oslash"]="Ø",
+["LeftDownTeeVector"]="⥡",
["reg"]="®",
-["Int"]="∬",
-["agrave"]="à",
-["Ecirc"]="Ê",
-["NotReverseElement"]="∌",
-["backprime"]="‵",
-["Jfr"]="𝔍",
+["LeftTeeVector"]="⥚",
+["gsiml"]="⪐",
+["QUOT"]="\"",
+["blk14"]="░",
+["rightrightarrows"]="⇉",
+["NotGreaterGreater"]="≫̸",
+["Xscr"]="𝒳",
+["Re"]="ℜ",
+["Ouml"]="Ö",
["rdsh"]="↳",
-["jsercy"]="ј",
-["Bscr"]="ℬ",
-["boxH"]="═",
-["leq"]="≤",
-["NotPrecedes"]="⊀",
-["coloneq"]="≔",
-["boxvh"]="┼",
-["larr"]="←",
-["ncup"]="⩂",
-["EmptySmallSquare"]="◻",
-["vartriangleleft"]="⊲",
-["iacute"]="í",
-["nVDash"]="⊯",
-["lap"]="⪅",
-["precapprox"]="⪷",
-["ecolon"]="≕",
-["lsqb"]="[",
+["and"]="∧",
+["larrb"]="⇤",
+["TripleDot"]="⃛",
+["bcy"]="б",
+["diams"]="♦",
+["veebar"]="⊻",
+["rcub"]="}",
+["Scirc"]="Ŝ",
+["ac"]="∾",
+["rceil"]="⌉",
+["rcedil"]="ŗ",
+["cupbrcap"]="⩈",
+["rcaron"]="ř",
+["cuesc"]="⋟",
+["HilbertSpace"]="ℋ",
+["plus"]="+",
+["rbrkslu"]="⦐",
+["LessLess"]="⪡",
+["macr"]="¯",
+["notinE"]="⋹̸",
["rbarr"]="⤍",
-["yacy"]="я",
-["efDot"]="≒",
-["ratio"]="∶",
-["wreath"]="≀",
-["nearhk"]="⤤",
-["rarrpl"]="⥅",
-["nvge"]="≥⃒",
-["searrow"]="↘",
-["thorn"]="þ",
-["rdquo"]="”",
-["LessFullEqual"]="≦",
-["nvrtrie"]="⊵⃒",
-["nsubseteqq"]="⫅̸",
-["nedot"]="≐̸",
-["VerticalLine"]="|",
-["lsh"]="↰",
-["DownRightVector"]="⇁",
-["ecirc"]="ê",
-["andv"]="⩚",
-["trie"]="≜",
-["race"]="∽̱",
+["abreve"]="ă",
+["sqcup"]="⊔",
+["ratail"]="⤚",
+["VeryThinSpace"]=" ",
+["Uarrocir"]="⥉",
+["rarrfs"]="⤞",
+["Odblac"]="Ő",
+["Imacr"]="Ī",
+["ordm"]="º",
+["odsold"]="⦼",
+["NJcy"]="Њ",
+["Yacute"]="Ý",
+["rarrbfs"]="⤠",
+["prop"]="∝",
+["notin"]="∉",
+["vsupne"]="⊋︀",
+["bigcap"]="⋂",
+["Phi"]="Φ",
+["Ograve"]="Ò",
+["Yscr"]="𝒴",
+["approx"]="≈",
+["racute"]="ŕ",
+["ggg"]="⋙",
+["lmoust"]="⎰",
["rBarr"]="⤏",
-["lbrksld"]="⦏",
-["emsp14"]=" ",
-["RuleDelayed"]="⧴",
-["vsubne"]="⊊︀",
-["ShortLeftArrow"]="←",
-["gtlPar"]="⦕",
+["gneqq"]="≩",
+["isinv"]="∈",
+["harr"]="↔",
+["rArr"]="⇒",
+["rAarr"]="⇛",
+["quot"]="\"",
["quest"]="?",
-["dot"]="˙",
-["RightVector"]="⇀",
-["rppolint"]="⨒",
-["Hat"]="^",
-["zcy"]="з",
-["suplarr"]="⥻",
-["boxhU"]="╨",
-["puncsp"]=" ",
-["GreaterLess"]="≷",
-["psi"]="ψ",
-["ncaron"]="ň",
-["SupersetEqual"]="⊇",
-["propto"]="∝",
-["preceq"]="⪯",
-["frac56"]="⅚",
-["NotLessGreater"]="≸",
-["jukcy"]="є",
-["swArr"]="⇙",
-["profline"]="⌒",
+["iuml"]="ï",
+["LeftRightArrow"]="↔",
+["LeftDoubleBracket"]="⟦",
+["gesdot"]="⪀",
+["Ntilde"]="Ñ",
+["boxUR"]="╚",
+["exist"]="∃",
+["subnE"]="⫋",
+["ograve"]="ò",
+["qopf"]="𝕢",
+["Zacute"]="Ź",
+["qfr"]="𝔮",
+["dcy"]="д",
+["NotReverseElement"]="∌",
+["DotEqual"]="≐",
+["VerticalLine"]="|",
+["pscr"]="𝓅",
+["prurel"]="⊰",
+["cdot"]="ċ",
+["bprime"]="‵",
+["ltdot"]="⋖",
+["prnsim"]="⋨",
+["curlywedge"]="⋏",
["prnE"]="⪵",
-["larrpl"]="⤹",
-["af"]="⁡",
-["profsurf"]="⌓",
-["Larr"]="↞",
+["REG"]="®",
+["sup3"]="³",
+["preceq"]="⪯",
+["LeftDownVectorBar"]="⥙",
+["ForAll"]="∀",
["forkv"]="⫙",
-["prcue"]="≼",
-["RightUpTeeVector"]="⥜",
+["varpi"]="ϖ",
+["nrArr"]="⇏",
["pound"]="£",
-["ugrave"]="ù",
-["popf"]="𝕡",
-["frac78"]="⅞",
-["suphsol"]="⟉",
-["loplus"]="⨭",
-["pointint"]="⨕",
-["cupcap"]="⩆",
-["LessTilde"]="≲",
-["pm"]="±",
-["blacksquare"]="▪",
["plustwo"]="⨧",
-["copy"]="©",
-["plussim"]="⨦",
-["Lcy"]="Л",
-["pluse"]="⩲",
-["ropar"]="⦆",
-["OpenCurlyQuote"]="‘",
+["shchcy"]="щ",
+["cacute"]="ć",
+["Dashv"]="⫤",
+["lHar"]="⥢",
+["NotLeftTriangle"]="⋪",
+["gbreve"]="ğ",
+["boxDl"]="╖",
+["Beta"]="Β",
+["ReverseEquilibrium"]="⇋",
["plusacir"]="⨣",
-["Exists"]="∃",
-["piv"]="ϖ",
-["phmmat"]="ℳ",
-["angzarr"]="⍼",
-["vsupnE"]="⫌︀",
-["phi"]="φ",
-["perp"]="⊥",
-["rdldhar"]="⥩",
-["ccirc"]="ĉ",
-["Tfr"]="𝔗",
-["Tcy"]="Т",
-["circeq"]="≗",
-["InvisibleTimes"]="⁢",
-["OElig"]="Œ",
-["trisb"]="⧍",
-["Rcaron"]="Ř",
-["olt"]="⧀",
-["UpArrow"]="↑",
-["DDotrahd"]="⤑",
-["Uarrocir"]="⥉",
-["lacute"]="ĺ",
+["eqslantgtr"]="⪖",
+["ecy"]="э",
+["pitchfork"]="⋔",
+["ctdot"]="⋯",
+["odiv"]="⨸",
+["lesseqqgtr"]="⪋",
+["GreaterLess"]="≷",
+["Ocy"]="О",
+["weierp"]="℘",
+["Uring"]="Ů",
+["period"]=".",
+["nis"]="⋼",
+["cudarrr"]="⤵",
+["boxHU"]="╩",
+["Ouml"]="Ö",
+["Assign"]="≔",
+["Lscr"]="ℒ",
+["parallel"]="∥",
+["there4"]="∴",
+["cupor"]="⩅",
+["nwarr"]="↖",
+["para"]="¶",
+["ouml"]="ö",
+["otimes"]="⊗",
+["drbkarow"]="⤐",
+["puncsp"]=" ",
+["otilde"]="õ",
+["Vvdash"]="⊪",
+["osol"]="⊘",
["oslash"]="ø",
-["Uarr"]="↟",
-["bsolb"]="⧅",
-["gt"]=">",
-["ordm"]="º",
-["Itilde"]="Ĩ",
-["ordm"]="º",
-["Jscr"]="𝒥",
-["Rarr"]="↠",
-["measuredangle"]="∡",
+["dd"]="ⅆ",
+["NotPrecedesSlantEqual"]="⋠",
+["orv"]="⩛",
+["orslope"]="⩗",
+["KJcy"]="Ќ",
+["larrfs"]="⤝",
+["orderof"]="ℴ",
+["asympeq"]="≍",
+["ord"]="⩝",
+["NotLess"]="≮",
+["NotGreater"]="≯",
+["ThinSpace"]=" ",
+["ominus"]="⊖",
["DoubleLongLeftRightArrow"]="⟺",
-["lmidot"]="ŀ",
-["period"]=".",
+["lesseqgtr"]="⋚",
["operp"]="⦹",
-["bprime"]="‵",
-["numsp"]=" ",
-["ominus"]="⊖",
-["nldr"]="‥",
+["quaternions"]="ℍ",
+["boxdR"]="╒",
+["omega"]="ω",
+["Kscr"]="𝒦",
+["lessgtr"]="≶",
+["utilde"]="ũ",
+["olt"]="⧀",
+["Rho"]="Ρ",
+["olcir"]="⦾",
+["oint"]="∮",
["ograve"]="ò",
-["omicron"]="ο",
-["nearr"]="↗",
-["jcirc"]="ĵ",
-["nlE"]="≦̸",
-["deg"]="°",
-["frac13"]="⅓",
-["tcy"]="т",
-["lowbar"]="_",
-["vfr"]="𝔳",
-["ogon"]="˛",
-["sim"]="∼",
-["ocirc"]="ô",
-["Icirc"]="Î",
-["ocir"]="⊚",
-["ZeroWidthSpace"]="​",
+["Succeeds"]="≻",
+["Igrave"]="Ì",
+["eogon"]="ę",
+["Uacute"]="Ú",
+["bbrk"]="⎵",
+["ocy"]="о",
+["bcong"]="≌",
["oast"]="⊛",
-["smile"]="⌣",
-["bigvee"]="⋁",
["oacute"]="ó",
-["Egrave"]="È",
-["nwnear"]="⤧",
-["nwarhk"]="⤣",
-["rationals"]="ℚ",
-["DiacriticalGrave"]="`",
-["npreceq"]="⪯̸",
-["rarrc"]="⤳",
-["Uogon"]="Ų",
-["InvisibleComma"]="⁣",
-["nvltrie"]="⊴⃒",
-["digamma"]="ϝ",
-["cirE"]="⧃",
-["AMP"]="&",
-["Theta"]="Θ",
-["frac15"]="⅕",
-["fnof"]="ƒ",
-["icirc"]="î",
-["Cdot"]="Ċ",
-["ngsim"]="≵",
-["sube"]="⊆",
-["tcaron"]="ť",
+["cir"]="○",
+["angmsdab"]="⦩",
+["Iscr"]="ℐ",
+["ldquo"]="“",
+["RightVector"]="⇀",
+["euml"]="ë",
+["between"]="≬",
+["oS"]="Ⓢ",
+["downdownarrows"]="⇊",
+["nvlt"]="<⃒",
+["lurdshar"]="⥊",
+["starf"]="★",
+["xlarr"]="⟵",
+["Aring"]="Å",
+["Xi"]="Ξ",
+["gtcir"]="⩺",
+["Nscr"]="𝒩",
+["elinters"]="⏧",
+["ntrianglelefteq"]="⋬",
+["Vbar"]="⫫",
["ntilde"]="ñ",
-["ufr"]="𝔲",
-["Mcy"]="М",
-["Delta"]="Δ",
-["vnsup"]="⊃⃒",
-["lAtail"]="⤛",
-["DoubleUpArrow"]="⇑",
-["aelig"]="æ",
-["lscr"]="𝓁",
-["Rscr"]="ℛ",
-["capcup"]="⩇",
-["npolint"]="⨔",
-["gesdotol"]="⪄",
-["uacute"]="ú",
-["bumpE"]="⪮",
-["drcorn"]="⌟",
-["notnivb"]="⋾",
-["notinvc"]="⋶",
-["ovbar"]="⌽",
-["Mopf"]="𝕄",
-["NotGreater"]="≯",
-["boxDr"]="╓",
-["lrcorner"]="⌟",
-["nleq"]="≰",
-["nleftarrow"]="↚",
-["nle"]="≰",
+["andv"]="⩚",
+["Rsh"]="↱",
+["angmsdad"]="⦫",
+["nsup"]="⊅",
+["nbsp"]=" ",
+["SquareSupersetEqual"]="⊒",
+["ETH"]="Ð",
+["nsube"]="⊈",
+["DoubleContourIntegral"]="∯",
+["nsubE"]="⫅̸",
+["angmsdah"]="⦯",
+["NotLessGreater"]="≸",
+["awint"]="⨑",
+["rtri"]="▹",
+["nsc"]="⊁",
["boxvl"]="┤",
-["Downarrow"]="⇓",
-["hcirc"]="ĥ",
+["beta"]="β",
+["LessSlantEqual"]="⩽",
+["supsub"]="⫔",
+["agrave"]="à",
+["LeftUpTeeVector"]="⥠",
+["nrarrw"]="↝̸",
+["ltcc"]="⪦",
+["nrarrc"]="⤳̸",
+["frac78"]="⅞",
+["nvrArr"]="⤃",
+["igrave"]="ì",
+["barwed"]="⌅",
+["Mscr"]="ℳ",
+["nrarr"]="↛",
+["SubsetEqual"]="⊆",
+["notnivc"]="⋽",
+["notnivb"]="⋾",
+["succcurlyeq"]="≽",
+["eth"]="ð",
+["notinva"]="∉",
+["Otilde"]="Õ",
+["star"]="☆",
+["rangd"]="⦒",
+["Psi"]="Ψ",
+["nsupe"]="⊉",
+["mapstoup"]="↥",
+["LJcy"]="Љ",
+["looparrowleft"]="↫",
+["nlarr"]="↚",
+["Ll"]="⋘",
+["ordf"]="ª",
+["ni"]="∋",
+["Delta"]="Δ",
+["NotVerticalBar"]="∤",
+["backcong"]="≌",
+["NoBreak"]="⁠",
["nharr"]="↮",
-["tfr"]="𝔱",
-["nlt"]="≮",
-["gacute"]="ǵ",
-["colone"]="≔",
-["Rang"]="⟫",
["ngt"]="≯",
-["ntilde"]="ñ",
-["vcy"]="в",
-["boxvL"]="╡",
-["NotLeftTriangleBar"]="⧏̸",
-["NestedGreaterGreater"]="≫",
-["xmap"]="⟼",
-["napid"]="≋̸",
-["LeftTriangleBar"]="⧏",
-["SquareSubsetEqual"]="⊑",
-["eacute"]="é",
-["ne"]="≠",
-["ncongdot"]="⩭̸",
-["boxvR"]="╞",
-["PrecedesEqual"]="⪯",
-["Omacr"]="Ō",
-["egs"]="⪖",
-["ouml"]="ö",
-["nbsp"]=" ",
-["xuplus"]="⨄",
-["napprox"]="≉",
-["CloseCurlyQuote"]="’",
-["nacute"]="ń",
-["Chi"]="Χ",
-["subsub"]="⫕",
-["gescc"]="⪩",
-["gcirc"]="ĝ",
-["Lsh"]="↰",
-["sfr"]="𝔰",
-["circlearrowright"]="↻",
-["rcaron"]="ř",
-["ThinSpace"]=" ",
-["otilde"]="õ",
-["TRADE"]="™",
-["cudarrl"]="⤸",
-["lat"]="⪫",
-["nLeftrightarrow"]="⇎",
-["leqq"]="≦",
-["dagger"]="†",
-["dstrok"]="đ",
-["sacute"]="ś",
-["Amacr"]="Ā",
-["mumap"]="⊸",
-["models"]="⊧",
-["DiacriticalAcute"]="´",
-["minusd"]="∸",
-["hybull"]="⁃",
-["ijlig"]="ij",
-["fflig"]="ff",
-["NotGreaterEqual"]="≱",
-["Colon"]="∷",
-["boxV"]="║",
-["DotDot"]="⃜",
-["mdash"]="—",
-["hairsp"]=" ",
-["bcong"]="≌",
-["mcomma"]="⨩",
-["cirfnint"]="⨐",
-["TScy"]="Ц",
-["luruhar"]="⥦",
-["awconint"]="∳",
-["nsim"]="≁",
-["els"]="⪕",
-["imof"]="⊷",
-["lpar"]="(",
-["lozenge"]="◊",
-["oint"]="∮",
-["Umacr"]="Ū",
-["Sum"]="∑",
-["lopar"]="⦅",
-["racute"]="ŕ",
-["LessEqualGreater"]="⋚",
-["Wedge"]="⋀",
-["bbrktbrk"]="⎶",
-["RightDownTeeVector"]="⥝",
-["HumpDownHump"]="≎",
-["rarrb"]="⇥",
-["longleftrightarrow"]="⟷",
-["lnE"]="≨",
-["NotGreaterSlantEqual"]="⩾̸",
-["Nu"]="Ν",
-["NotNestedLessLess"]="⪡̸",
-["UpEquilibrium"]="⥮",
-["boxhD"]="╥",
-["el"]="⪙",
-["boxDR"]="╔",
-["Gdot"]="Ġ",
-["itilde"]="ĩ",
-["isindot"]="⋵",
-["GreaterEqualLess"]="⋛",
-["Ll"]="⋘",
-["nrarrw"]="↝̸",
-["supnE"]="⫌",
-["epsiv"]="ϵ",
-["Element"]="∈",
-["gtreqless"]="⋛",
+["Pscr"]="𝒫",
["laemptyv"]="⦴",
-["nGt"]="≫⃒",
-["angsph"]="∢",
-["lE"]="≦",
-["kscr"]="𝓀",
-["Ocy"]="О",
-["LowerLeftArrow"]="↙",
-["dopf"]="𝕕",
-["iukcy"]="і",
-["atilde"]="ã",
-["DoubleRightArrow"]="⇒",
-["oslash"]="ø",
-["rarr"]="→",
-["intprod"]="⨼",
-["hookrightarrow"]="↪",
-["intcal"]="⊺",
-["infintie"]="⧝",
-["escr"]="ℯ",
-["iiota"]="℩",
-["curren"]="¤",
-["Bernoullis"]="ℬ",
-["angmsdah"]="⦯",
-["ShortRightArrow"]="→",
-["boxUR"]="╚",
-["ges"]="⩾",
-["DoubleDownArrow"]="⇓",
+["utrif"]="▴",
+["ngeq"]="≱",
+["ncedil"]="ņ",
+["ncaron"]="ň",
+["boxhu"]="┴",
["NotSquareSuperset"]="⊐̸",
+["bull"]="•",
+["SquareSubsetEqual"]="⊑",
+["VerticalSeparator"]="❘",
+["natur"]="♮",
+["ffr"]="𝔣",
+["rdquor"]="”",
+["lagran"]="ℒ",
+["nRightarrow"]="⇏",
+["nLtv"]="≪̸",
+["nLl"]="⋘̸",
+["Epsilon"]="Ε",
+["csup"]="⫐",
+["leftarrow"]="←",
+["nGt"]="≫⃒",
+["multimap"]="⊸",
+["mstpos"]="∾",
+["SuchThat"]="∋",
+["mldr"]="…",
+["midast"]="*",
+["Sum"]="∑",
+["vartheta"]="ϑ",
+["mapsto"]="↦",
+["nsupseteq"]="⊉",
+["Oscr"]="𝒪",
+["forall"]="∀",
+["aring"]="å",
+["ltimes"]="⋉",
+["ltcir"]="⩹",
+["lt"]="<",
+["ii"]="ⅈ",
+["equest"]="≟",
+["scsim"]="≿",
+["lsqb"]="[",
+["lsimg"]="⪏",
+["Egrave"]="È",
+["Downarrow"]="⇓",
["lsim"]="≲",
-["bump"]="≎",
-["curlyeqsucc"]="⋟",
-["SHCHcy"]="Щ",
-["frac45"]="⅘",
-["qint"]="⨌",
-["Precedes"]="≺",
-["RightTeeArrow"]="↦",
-["frac16"]="⅙",
-["euro"]="€",
-["smtes"]="⪬︀",
-["eth"]="ð",
-["ldquo"]="“",
-["equivDD"]="⩸",
-["Oopf"]="𝕆",
+["eqslantless"]="⪕",
+["ucirc"]="û",
+["Auml"]="Ä",
+["lnsim"]="⋦",
+["uplus"]="⊎",
+["lhblk"]="▄",
+["Ugrave"]="Ù",
+["dlcrop"]="⌍",
+["OElig"]="Œ",
+["lesg"]="⋚︀",
+["lesdotor"]="⪃",
+["eg"]="⪚",
+["lvertneqq"]="≨︀",
+["leqslant"]="⩽",
+["ccups"]="⩌",
+["lceil"]="⌈",
+["auml"]="ä",
+["RightCeiling"]="⌉",
+["lbrksld"]="⦏",
+["lbarr"]="⤌",
+["lat"]="⪫",
+["Rscr"]="ℛ",
+["Zcy"]="З",
+["bigwedge"]="⋀",
+["Prime"]="″",
+["boxDR"]="╔",
+["scnsim"]="⋩",
+["efDot"]="≒",
+["kopf"]="𝕜",
+["minusdu"]="⨪",
+["kappav"]="ϰ",
["boxVh"]="╫",
-["GreaterSlantEqual"]="⩾",
-["KJcy"]="Ќ",
-["egrave"]="è",
-["NotGreaterLess"]="≹",
-["boxVl"]="╢",
-["MediumSpace"]=" ",
-["LongLeftArrow"]="⟵",
-["uarr"]="↑",
-["Ocirc"]="Ô",
-["Idot"]="İ",
-["bumpe"]="≏",
-["nwArr"]="⇖",
-["NegativeThinSpace"]="​",
-["coprod"]="∐",
-["VerticalBar"]="∣",
-["sccue"]="≽",
-["boxDl"]="╖",
-["NotSubset"]="⊂⃒",
-["Edot"]="Ė",
-["scy"]="с",
-["Cup"]="⋓",
+["Uuml"]="Ü",
["centerdot"]="·",
-["nsimeq"]="≄",
-["DownLeftRightVector"]="⥐",
+["isinsv"]="⋳",
+["isins"]="⋴",
+["bot"]="⊥",
+["integers"]="ℤ",
+["Racute"]="Ŕ",
+["ijlig"]="ij",
+["bernou"]="ℬ",
+["Cconint"]="∰",
+["doteq"]="≐",
+["hookleftarrow"]="↩",
+["epar"]="⋕",
+["harrw"]="↭",
+["dzigrarr"]="⟿",
+["Zscr"]="𝒵",
+["alpha"]="α",
+["times"]="×",
+["egrave"]="è",
+["UnionPlus"]="⊎",
+["Qscr"]="𝒬",
+["Omacr"]="Ō",
+["Zfr"]="ℨ",
+["gneq"]="⪈",
+["divonx"]="⋇",
+["gesdotol"]="⪄",
+["gvertneqq"]="≩︀",
+["geq"]="≥",
+["utri"]="▵",
+["ge"]="≥",
+["vArr"]="⇕",
+["Rrightarrow"]="⇛",
+["frac25"]="⅖",
+["LeftCeiling"]="⌈",
+["GreaterGreater"]="⪢",
+["LT"]="<",
+["Longrightarrow"]="⟹",
+["eqcolon"]="≕",
+["ofcir"]="⦿",
+["boxUl"]="╜",
+["Wscr"]="𝒲",
+["Sacute"]="Ś",
+["Union"]="⋃",
+["gg"]="≫",
+["DownArrowBar"]="⤓",
+["Escr"]="ℰ",
+["ecirc"]="ê",
+["Lmidot"]="Ŀ",
+["Wedge"]="⋀",
+["frown"]="⌢",
+["ring"]="˚",
+["dtdot"]="⋱",
+["Ccedil"]="Ç",
+["Conint"]="∯",
+["dscr"]="𝒹",
+["Map"]="⤅",
+["EmptyVerySmallSquare"]="▫",
+["backsim"]="∽",
+["angzarr"]="⍼",
+["dHar"]="⥥",
+["Mfr"]="𝔐",
+["cirE"]="⧃",
+["Popf"]="ℙ",
+["NestedGreaterGreater"]="≫",
+["ReverseElement"]="∋",
+["boxVr"]="╟",
}
diff --git a/Master/texmf-dist/tex/luatex/luaxml/luaxml-sty.lua b/Master/texmf-dist/tex/luatex/luaxml/luaxml-sty.lua
new file mode 100644
index 00000000000..35548688ce2
--- /dev/null
+++ b/Master/texmf-dist/tex/luatex/luaxml/luaxml-sty.lua
@@ -0,0 +1,155 @@
+--- Helper functions for the luaxml.sty package
+--- @module luaxml-sty
+--- @author Michal Hoftich <michal.h21@gmail.com
+-- provide global object with all variables we will use
+luaxml_sty = {
+ current = {
+ transformation = "default",
+ parameters = {}, -- "parameters" argument for transform:add_action
+ },
+ packages = {},
+ -- we want to support multiple transformation objects, they will be stored here
+ transformations = {},
+}
+luaxml_sty.packages.transform = require "luaxml-transform"
+luaxml_sty.packages.domobject = require "luaxml-domobject"
+
+-- declare default transformer, used if no explicit transformer is used in LuaXML LaTeX commands
+luaxml_sty.transformations.default = luaxml_sty.packages.transform.new()
+
+-- debuggind functions
+function luaxml_sty.error(...)
+ local arg = {...}
+ print("LuaXML error: " .. table.concat(arg, " "))
+end
+
+luaxml_sty.do_debug = false
+
+function luaxml_sty.debug(...)
+ if luaxml_sty.do_debug then
+ local arg = {...}
+ print("LuaXML: " .. table.concat(arg, " "))
+ end
+end
+
+--- Declare new transformer
+---@param name string transformer name
+---@return table transformer object
+function luaxml_sty.declare_transformer(name)
+ luaxml_sty.transformations[name] = luaxml_sty.packages.transform.new()
+ return luaxml_sty.transformations[name]
+end
+
+
+--- Add luaxml-transform rule
+--- @param current string transformer name, empty for the default object
+--- @param selector string CSS selector to be used
+--- @param rule string luaxml-transform rule
+function luaxml_sty.add_rule(current, selector, rule)
+ if current == "" then
+ current = luaxml_sty.current.transformation
+ end
+ -- the +v parameter type in LaTeX replaces newlines with \obeyedline. we need to replace it back to newlines
+ rule = rule:gsub("\\obeyedline", "\n")
+ luaxml_sty.debug("************* luaxml_sty rule: " .. selector, rule, current, (luaxml_sty.current.parameters.verbatim and "verbatim" or "not verbatim"))
+ local transform = luaxml_sty.transformations[current] or luaxml_sty.declare_transformer(current)
+ if not transform then
+ luaxml_sty.error("Cannot find LuaXML transform object: " .. (current or ""))
+ return nil, "Cannot find LuaXML transform object: " .. (current or "")
+ end
+ transform:add_action(selector, rule, luaxml_sty.current.parameters)
+end
+
+-- by default, we will use XML parser, so use_xml is set to true
+luaxml_sty.use_xml = true
+
+--- Use XML parser for parsing of next snippets
+function luaxml_sty.set_xml()
+ luaxml_sty.use_xml = true
+end
+
+
+--- Use HTML parser for parsing of next snippets
+function luaxml_sty.set_html()
+ luaxml_sty.use_xml = false
+end
+
+--- transform XML string and print it to the output
+---@param current string transformer name, empty for the default object
+---@param xml_string string to be transformed
+function luaxml_sty.parse_snippet(current, xml_string)
+ local domobject = luaxml_sty.packages.domobject
+ -- get the current transformer object
+ if current == "" then
+ current = luaxml_sty.current.transformation
+ end
+ local transform = luaxml_sty.transformations[current]
+ if not transform then
+ luaxml_sty.error("Cannot load transformer: " .. current)
+ return nil, "Cannot load transformer: " .. current
+ end
+ local dom
+ -- decide if we should use XML or HTML parser
+ if luaxml_sty.use_xml then
+ dom = domobject.parse(xml_string)
+ else
+ dom = domobject.html_parse(xml_string)
+ end
+ luaxml_sty.debug(dom:serialize())
+ local result = transform:process_dom(dom)
+ luaxml_sty.debug(result)
+ luaxml_sty.packages.transform.print_tex(result)
+end
+
+--- Transform file
+---@param current string transformer name, empty for the default object
+---@param filename string file to be transformed
+function luaxml_sty.parse_file(current, filename)
+ local f = io.open(filename, "r")
+ if not f then
+ luaxml_sty.packages.transform.print_tex("\\textbf{LuaXML error}: cannot find file " .. filename)
+ return nil, "Cannot find file " .. filename
+ end
+ local content = f:read("*a")
+ f:close()
+ luaxml_sty.parse_snippet(current, content)
+end
+
+--- parse environment contents using Lua
+---@param env_name string environment name
+---@param callback_name string name which will be used in the callback registration
+---@return function
+-- idea from https://tex.stackexchange.com/a/574323/2891
+function luaxml_sty.store_lines(env_name, callback_name)
+ return function(str)
+ luaxml_sty.debug("str", str)
+ local env_str = [[\end{]] .. env_name .. "}"
+ if string.find (str , env_str:gsub("%*", "%%*")) then
+ luaxml_sty.debug("end of environment")
+ luatexbase.remove_from_callback ( "process_input_buffer" , callback_name)
+ return env_str -- str
+ else
+ table.insert(luaxml_sty.verb_table, str)
+ end
+ return ""
+ end
+end
+
+--- require line grabbing for an environment
+---@param env_name string environment name
+function luaxml_sty.register_verbatim(env_name)
+ luaxml_sty.verb_table = {}
+ local callback_name = "luaxml_store_lines_".. env_name
+ local fn = luaxml_sty.store_lines(env_name, callback_name)
+ luatexbase.add_to_callback(
+ "process_input_buffer" , fn , callback_name)
+end
+
+--- parse content of the previous environment registered using luaxml_sty.register_verbatim()
+--- and print the transformed content
+---@param transformer string transformer name, empty for the default object
+function luaxml_sty.print_verbatim(transformer)
+ luaxml_sty.parse_snippet(transformer, table.concat(luaxml_sty.verb_table, "\n"))
+end
+
+return luaxml_sty
diff --git a/Master/texmf-dist/tex/luatex/luaxml/luaxml-transform.lua b/Master/texmf-dist/tex/luatex/luaxml/luaxml-transform.lua
index 4b51eed1170..34930df844a 100644
--- a/Master/texmf-dist/tex/luatex/luaxml/luaxml-transform.lua
+++ b/Master/texmf-dist/tex/luatex/luaxml/luaxml-transform.lua
@@ -1,5 +1,5 @@
--- XML transformation module for LuaXML
--- @module luaxml-tranform
+-- @module luaxml-transform
-- @author Michal Hoftich <michal.h21@gmail.com
-- code originaly comes from from https://github.com/michal-h21/luaxml-mathml
@@ -198,6 +198,9 @@ local function add_action(selector, template, parameters, csspar)
end
+--- Remove actions for a given selector
+-- @param selector CSS selector for the matching element
+-- @param csspar cssquery object. Default is set by the library, so it is not necessary to use.
local function reset_actions(selector, csspar)
local css = csspar or css
css:remove_selector(selector)
@@ -238,7 +241,7 @@ end
local function print_tex(content)
-- we need to replace "\n" characters with calls to tex.sprint
for s in content:gmatch("([^\n]*)") do
- tex.sprint(s)
+ tex.print(s)
end
end
diff --git a/Master/texmf-dist/tex/luatex/luaxml/luaxml.sty b/Master/texmf-dist/tex/luatex/luaxml/luaxml.sty
new file mode 100644
index 00000000000..0d1ca3727e5
--- /dev/null
+++ b/Master/texmf-dist/tex/luatex/luaxml/luaxml.sty
@@ -0,0 +1,142 @@
+\ProvidesExplPackage{luaxml}{2024-11-14}{v0.2b}{LuaXML package}
+% \ProvidesPackage{luaxml}[2024-11-14 LuaXML package]
+
+\RequirePackage{luacode}
+
+% ToDo: add support for use of transformation rules for other XML syntaxes -- using LaTeX command?
+
+
+\begin{luacode*}
+luaxml_sty = require "luaxml-sty"
+\end{luacode*}
+
+
+\ExplSyntaxOn
+
+% package options
+\bool_new:N\l_luaxml_use_defaults
+\keys_define:nn {luaxml}{
+ default .bool_set:N = \l_luaxml_use_defaults,
+ default .initial:n = false
+}
+\ProcessKeyOptions
+
+% options used in \LXMLRule
+\bool_new:N\l_luaxml_verbatim
+\tl_new:N \l_luaxml_transformer
+
+\keys_define:nn{luaxmlrule}{
+ verbatim .bool_set:N = \l_luaxml_verbatim ,
+ verbatim .initial:n = false,
+ unknown .code:n = \tl_set_eq:NN\l_luaxml_transformer\l_keys_key_str,
+ transformer .tl_set:N = \l_luaxml_transformer,
+}
+
+
+% select current transformer object
+\NewDocumentCommand\LXMLUseTransformer{m}{
+ \directlua{
+luaxml_sty.current.transformation = "#1",
+}}
+
+% declare new transformer object
+\NewDocumentCommand\LXMLDeclareTransformer{m}{
+ \directlua{
+ % luaxml_sty.transformations["#1"] = luaxml_sty.packages.transform.new()
+ luaxml_sty.declare_transformer("#1")
+ }
+}
+
+% add transformer rule
+% #1 options (verbatim, transformer, unknown key = transformer)
+% #2 CSS selector
+% #3 transformer rule
+\NewDocumentCommand\LXMLRule{O{} m +v}{
+ % handle keyval options
+ \group_begin:
+ \keys_set:nn {luaxmlrule} { #1 }
+ \directlua{luaxml_sty.current.parameters = {}}
+ \bool_if:NT \l_luaxml_verbatim {\directlua{luaxml_sty.current.parameters.verbatim = true}}
+ \directlua{
+ luaxml_sty.add_rule("\l_luaxml_transformer", "#2", "\luaescapestring{#3}")
+ }
+ \group_end:
+}
+
+
+% Transform code snippet
+% \LXMLSnippet* - parse using XML parser
+% \LXMLSnippet - parse using HTML parser
+% #2 transformer object name -- empty = default
+% #3 XML string
+\NewDocumentCommand\LXMLSnippet{s O{} m}{
+ \IfBooleanTF{#1}{
+ \directlua{luaxml_sty.set_html()}
+ }{
+ \directlua{luaxml_sty.set_xml()}
+ }
+ \directlua{
+ luaxml_sty.parse_snippet("\luaescapestring{#2}", [[\detokenize{#3}]])
+ }
+}
+
+% Transform file
+% \LXMLInputFile* - parse using XML parser
+% \LXMLInputFile - parse using HTML parser
+% #2 transformer object name -- empty = default
+% #3 XML string
+\NewDocumentCommand\LXMLInputFile{s O{} m}{
+ \IfBooleanTF{#1}{
+ \directlua{luaxml_sty.set_html()}
+ }{
+ \directlua{luaxml_sty.set_xml()}
+ }
+ \directlua{
+ luaxml_sty.parse_file("\luaescapestring{#2}", "\luaescapestring{#3}")
+ }
+}
+
+
+% Transform XML contained in the environment
+% #1 transformer object name -- empty = default
+\newenvironment{LXMLCode}[1]{
+ \directlua{
+ luaxml_sty.set_xml()
+ luaxml_sty.register_verbatim("LXMLCode")
+ }
+ \tl_set:Nn\l_luaxml_transformer{#1}
+}{
+ \directlua{
+ luaxml_sty.print_verbatim("\l_luaxml_transformer")
+ }
+}
+
+% Transform HTML contained in the environment
+% #1 transformer object name -- empty = default
+%
+% I couldn't process the first line in the environment using the Lua callback with \NewDocumentEnvironment,
+% so \newenvironment is used instead.
+\newenvironment{LXMLCode*}[1]{
+ \directlua{
+ luaxml_sty.set_html()
+ luaxml_sty.register_verbatim("LXMLCode*")
+ }
+ \tl_set:Nn\l_luaxml_transformer{#1}
+}{
+ \directlua{
+ luaxml_sty.print_verbatim("\l_luaxml_transformer")
+ }
+}
+
+% load default transformation rules
+\NewDocumentCommand\LXMLLoadDefaults{}{
+ \directlua{require "luaxml-htmltemplates"}
+}
+
+\AtBeginDocument{
+ \bool_if:NT \l_luaxml_use_defaults {\LXMLLoadDefaults}
+}
+
+
+\ExplSyntaxOff
+\endinput
diff --git a/Master/texmf-dist/tex/luatex/lutabulartools/lutabulartools.lua b/Master/texmf-dist/tex/luatex/lutabulartools/lutabulartools.lua
index 92ce2367156..7b1a832bc4f 100644
--- a/Master/texmf-dist/tex/luatex/lutabulartools/lutabulartools.lua
+++ b/Master/texmf-dist/tex/luatex/lutabulartools/lutabulartools.lua
@@ -1,6 +1,6 @@
--% Kale Ewasiuk (kalekje@gmail.com)
---% 2023-07-22
---% Copyright (C) 2021-2023 Kale Ewasiuk
+--% 2025-01-06
+--% Copyright (C) 2021-2025 Kale Ewasiuk
--%
--% Permission is hereby granted, free of charge, to any person obtaining a copy
--% of this software and associated documentation files (the "Software"), to deal
@@ -30,7 +30,7 @@ local lutabt = {}
local pl = penlight
local T = pl.tablex
-lutabt.luakeys = require'luakeys'() -- note: YAMLvars.sty will have checked existence of this already
+lutabt.luakeys = require'luakeys'()
lutabt.tablelevel = 0
diff --git a/Master/texmf-dist/tex/luatex/lutabulartools/lutabulartools.sty b/Master/texmf-dist/tex/luatex/lutabulartools/lutabulartools.sty
index ee36589cd50..0b1041fbfd7 100644
--- a/Master/texmf-dist/tex/luatex/lutabulartools/lutabulartools.sty
+++ b/Master/texmf-dist/tex/luatex/lutabulartools/lutabulartools.sty
@@ -1,6 +1,6 @@
% Kale Ewasiuk (kalekje@gmail.com)
-% 2023-07-22
-% Copyright (C) 2021-2023 Kale Ewasiuk
+% 2025-01-06
+% Copyright (C) 2021-2025 Kale Ewasiuk
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the "Software"), to deal
@@ -23,7 +23,7 @@
% OR OTHER DEALINGS IN THE SOFTWARE.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lutabulartools}[2023-07-22]
+\ProvidesPackage{lutabulartools}[2025-01-06]
\RequirePackage{booktabs}
\RequirePackage{multirow}
@@ -59,8 +59,15 @@
}
\NewDocumentCommand{\resetmidruleX}{O{0}}{\luadirect{lutabt.mrX.reset_midruleX(\luastring{#1})}}
+\NewCommandCopy{\ltt@RealPackageWarning}{\PackageWarning}
+\newcommand*{\ltt@DeactivatePackageWarning}{\renewcommand*{\PackageWarning}[2]{}}
+\newcommand*{\ltt@ActivatePackageWarning}{\RenewCommandCopy{\PackageWarning}{\ltt@RealPackageWarning}}
-\NewDocumentCommand{\settabular}{s m}{\luadirect{lutabt.set_tabular(\luastring{#2})}} %
+
+\NewDocumentCommand{\settabular}{s m}{\ltt@DeactivatePackageWarning%
+ \luadirect{lutabt.set_tabular(\luastring{#2})}%
+ \ltt@ActivatePackageWarning%
+}%
\def\ltt@resetrownum{\luadirect{lutabt.reset_rows()}}
\def\ltt@resetrownumhard{\luadirect{lutabt.row_num = 0}}
diff --git a/Master/texmf-dist/tex/luatex/markdown/markdown-parser.lua b/Master/texmf-dist/tex/luatex/markdown/markdown-parser.lua
index 2cdcf3ff759..8ce14ef992f 100644
--- a/Master/texmf-dist/tex/luatex/markdown/markdown-parser.lua
+++ b/Master/texmf-dist/tex/luatex/markdown/markdown-parser.lua
@@ -20,7 +20,7 @@
-- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--
--- Copyright (C) 2016-2024 Vít Starý Novotný, Andrej Genčur
+-- Copyright (C) 2016-2025 Vít Starý Novotný, Andrej Genčur
--
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -58,7 +58,7 @@
-- those in the standard .ins files.
--
local metadata = {
- version = "3.7.0-0-g98dece19",
+ version = "3.10.0-0-g626df6ad",
comment = "A module for the conversion from markdown "
.. "to plain TeX",
author = "John MacFarlane, Hans Hagen, Vít Starý Novotný, "
@@ -72,8 +72,8 @@ if not modules then modules = { } end
modules['markdown'] = metadata
local lpeg = require("lpeg")
local unicode = require("unicode")
-local md5 = require("md5");
-(function()
+local md5 = require("md5")
+;(function()
local should_initialize = package.loaded.kpse == nil
or tex.initialize ~= nil
kpse = require("kpse")
@@ -117,6 +117,7 @@ local walkable_syntax = {
}
local defaultOptions = {}
defaultOptions.eagerCache = true
+defaultOptions.experimental = false
defaultOptions.singletonCache = true
local singletonCache = {
convert = nil,
@@ -347,6 +348,9 @@ function util.salt(options)
.. "," .. metadata.version
return salt
end
+function util.warning(s)
+ io.stderr:write("Warning: " .. s .. "\n")
+end
local entities = {}
local character_entities = {
@@ -2642,11 +2646,15 @@ function M.writer.new(options)
self.uri = escape_programmatic_text
self.infostring = escape_programmatic_text
end
- function self.warning(t)
- return {"\\markdownRendererWarning{", self.identifier(t), "}"}
+ function self.warning(t, m)
+ return {"\\markdownRendererWarning{", self.escape(t), "}{",
+ escape_minimal(t), "}{", self.escape(m or ""), "}{",
+ escape_minimal(m or ""), "}"}
end
- function self.error(t)
- return {"\\markdownRendererError{", self.identifier(t), "}"}
+ function self.error(t, m)
+ return {"\\markdownRendererError{", self.escape(t), "}{",
+ escape_minimal(t), "}{", self.escape(m or ""), "}{",
+ escape_minimal(m or ""), "}"}
end
function self.code(s, attributes)
if self.flatten_inlines then return s end
@@ -2794,7 +2802,23 @@ function M.writer.new(options)
return {"\\markdownRendererInputVerbatim{",name,"}"}
end
function self.document(d)
- local buf = {"\\markdownRendererDocumentBegin\n", d}
+ local buf = {"\\markdownRendererDocumentBegin\n"}
+
+ -- warn against the `hybrid` option
+ if options.hybrid then
+ local text = "The `hybrid` option has been soft-deprecated."
+ local more = "Consider using one of the following better options "
+ .. "for mixing TeX and markdown: `contentBlocks`, "
+ .. "`rawAttribute`, `texComments`, `texMathDollars`, "
+ .. "`texMathSingleBackslash`, and "
+ .. "`texMathDoubleBackslash`. "
+ .. "For more information, see the user manual at "
+ .. "<https://witiko.github.io/markdown/>."
+ table.insert(buf, self.warning(text, more))
+ end
+
+ -- insert the text of the document
+ table.insert(buf, d)
-- pop all attributes
table.insert(buf, self.pop_attributes())
@@ -3272,69 +3296,15 @@ parsers.fail = P(false)
parsers.internal_punctuation = S(":;,.?")
parsers.ascii_punctuation = S("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~")
-;(function()
- local pathname = assert(kpse.find_file("UnicodeData.txt"),
- [[Could not locate file "UnicodeData.txt"]])
- local file = assert(io.open(pathname, "r"),
- [[Could not open file "UnicodeData.txt"]])
- local prefix_trees = {}
- for line in file:lines() do
- local codepoint, major_category = line:match("^(%x+);[^;]*;(%a)")
- if major_category == "P" or major_category == "S" then
- local code = unicode.utf8.char(tonumber(codepoint, 16))
- if prefix_trees[#code] == nil then
- prefix_trees[#code] = {}
- end
- local node = prefix_trees[#code]
- for i = 1, #code do
- local byte = code:sub(i, i)
- if i < #code then
- if node[byte] == nil then
- node[byte] = {}
- end
- node = node[byte]
- else
- table.insert(node, byte)
- end
- end
- end
- end
- assert(file:close())
- local function depth_first_search(node, path, visit, leave)
- visit(node, path)
- for label, child in pairs(node) do
- if type(child) == "table" then
- depth_first_search(child, path .. label, visit, leave)
- else
- visit(child, path)
- end
- end
- leave(node, path)
- end
- parsers.punctuation = {}
- for length, prefix_tree in pairs(prefix_trees) do
- local subparsers = {}
- depth_first_search(prefix_tree, "", function(node, path)
- if type(node) == "table" then
- subparsers[path] = parsers.fail
- else
- assert(type(node) == "string")
- subparsers[path] = subparsers[path] + S(node)
- end
- end, function(_, path)
- if #path > 0 then
- local byte = path:sub(#path, #path)
- local parent_path = path:sub(1, #path-1)
- subparsers[parent_path] = subparsers[parent_path]
- + S(byte) * subparsers[path]
- else
- parsers.punctuation[length] = subparsers[path]
- end
- end)
- assert(parsers.punctuation[length] ~= nil)
- end
-end)()
+local unicode_data = require("markdown-unicode-data")
+if metadata.version ~= unicode_data.metadata.version then
+ util.warning(
+ "markdown.lua " .. metadata.version .. " used with " ..
+ "markdown-unicode-data.lua " .. unicode_data.metadata.version .. "."
+ )
+end
+parsers.punctuation = unicode_data.punctuation
parsers.escapable = parsers.ascii_punctuation
parsers.anyescaped = parsers.backslash / ""
@@ -4001,9 +3971,11 @@ parsers.commented_line = Cg(Cc(""), "backslashes")
* Cs(parsers.commented_line_letter
- parsers.newline)^1 -- initial
* Cg(Cc(""), "backslashes"))
- + #(parsers.backslash * parsers.backslash)
+ + #( parsers.backslash
+ * (parsers.backslash + parsers.newline))
* Cg((parsers.backslash -- even backslash
- * parsers.backslash)^1, "backslashes")
+ * ( parsers.backslash
+ + #parsers.newline))^1, "backslashes")
+ (parsers.backslash
* (#parsers.percent
* Cb("backslashes")
@@ -4862,8 +4834,11 @@ function M.reader.new(writer, options)
end
local res = lpeg.match(grammar(), str)
if res == nil then
- return writer.error(format("%s failed on:\n%s",
- name, str:sub(1,20)))
+ return writer.error(
+ format("Parser `%s` failed to process the input text.", name),
+ format("Here are the first 20 characters of the remaining "
+ .. "unprocessed text: `%s`.", str:sub(1,20))
+ )
else
return res
end
@@ -5570,13 +5545,13 @@ function M.reader.new(writer, options)
* -V("EndlineExceptions")
+ parsers.check_optional_indent
* -V("EndlineExceptions")
- * -parsers.starter) / "")
+ * -V("ListStarter")) / "")
* parsers.spacechar^0 / "\n"
parsers.link_and_emph_content
= Ct( Cg(Cc("content"), "type")
* Cg(Cs(( parsers.link_emph_precedence
- + parsers.backslash * parsers.any
+ + parsers.backslash * parsers.linechar
+ parsers.link_and_emph_endline
+ (parsers.linechar
- parsers.blankline^2
@@ -5964,6 +5939,8 @@ function M.reader.new(writer, options)
parsers.html_interrupting = parsers.fail
end
+ parsers.ListStarter = parsers.starter
+
parsers.EndlineExceptions
= parsers.blankline -- paragraph break
+ parsers.eof -- end of document
@@ -5981,7 +5958,7 @@ function M.reader.new(writer, options)
* -V("EndlineExceptions")
+ parsers.check_optional_indent
* -V("EndlineExceptions")
- * -parsers.starter) / function(_) return end
+ * -V("ListStarter")) / function(_) return end
* parsers.spacechar^0
parsers.Endline = parsers.endline
@@ -5995,36 +5972,38 @@ function M.reader.new(writer, options)
* -V("NoSoftLineBreakEndlineExceptions")
+ parsers.check_optional_indent
* -V("NoSoftLineBreakEndlineExceptions")
- * -parsers.starter)
+ * -V("ListStarter"))
* parsers.spacechar^0
/ writer.space
- parsers.EndlineBreak = parsers.backslash * parsers.Endline
+ parsers.EndlineBreak = parsers.backslash * parsers.endline
/ writer.hard_line_break
parsers.OptionalIndent
= parsers.spacechar^1 / writer.space
- parsers.Space = parsers.spacechar^2 * parsers.Endline
+ parsers.Space = parsers.spacechar^2 * parsers.endline
/ writer.hard_line_break
+ parsers.spacechar^1
- * parsers.Endline^-1
+ * parsers.endline^-1
* parsers.eof / self.expandtabs
- + parsers.spacechar^1 * parsers.Endline
+ + parsers.spacechar^1 * parsers.endline
/ writer.soft_line_break
+ parsers.spacechar^1
* -parsers.newline / self.expandtabs
+ + parsers.spacechar^1
parsers.NoSoftLineBreakSpace
- = parsers.spacechar^2 * parsers.Endline
+ = parsers.spacechar^2 * parsers.endline
/ writer.hard_line_break
+ parsers.spacechar^1
- * parsers.Endline^-1
+ * parsers.endline^-1
* parsers.eof / self.expandtabs
- + parsers.spacechar^1 * parsers.Endline
+ + parsers.spacechar^1 * parsers.endline
/ writer.soft_line_break
+ parsers.spacechar^1
* -parsers.newline / self.expandtabs
+ + parsers.spacechar^1
parsers.NonbreakingEndline
= parsers.endline
@@ -6426,6 +6405,7 @@ end
Paragraph = parsers.Paragraph,
Plain = parsers.Plain,
+ ListStarter = parsers.ListStarter,
EndlineExceptions = parsers.EndlineExceptions,
NoSoftLineBreakEndlineExceptions
= parsers.NoSoftLineBreakEndlineExceptions,
@@ -6666,7 +6646,7 @@ end
input = uni_algos.normalize.NFKD(input)
else
return writer.error(
- format("Unknown normalization form %s", form))
+ format("Unknown normalization form %s.", form))
end
end
input = input:gsub("\r\n?", "\n")
@@ -7414,17 +7394,10 @@ M.extensions.fancy_lists = function()
local FancyList
= join_table_with_func(FancyListOfType, markers_table)
- local Endline = parsers.newline
- * (parsers.check_minimal_indent
- * -parsers.EndlineExceptions
- + parsers.check_optional_indent
- * -parsers.EndlineExceptions
- * -starter)
- * parsers.spacechar^0
- / writer.soft_line_break
+ local ListStarter = starter
self.update_rule("OrderedList", FancyList)
- self.update_rule("Endline", Endline)
+ self.update_rule("ListStarter", ListStarter)
end
}
end
@@ -8131,9 +8104,13 @@ M.extensions.notes = function(notes, inline_notes)
* parsers.spnlc * indented_blocks(chunk)
/ register_note
- local Reference = NoteBlock + parsers.Reference
+ self.update_rule("Reference", function(previous_pattern)
+ if previous_pattern == nil then
+ previous_pattern = parsers.Reference
+ end
+ return NoteBlock + previous_pattern
+ end)
- self.update_rule("Reference", Reference)
self.insert_pattern("Inline before LinkAndEmph",
NoteRef, "NoteRef")
end
@@ -8688,7 +8665,7 @@ M.extensions.jekyll_data = function(expect_jekyll_data,
else
local error = self.error(format(
"Unexpected type %s for value of "
- .. "YAML key %s", typ, k))
+ .. "YAML key %s.", typ, k))
table.insert(buf, error)
end
end
@@ -8715,8 +8692,7 @@ M.extensions.jekyll_data = function(expect_jekyll_data,
, function(s, i, text) -- luacheck: ignore s i
local data
local ran_ok, _ = pcall(function()
- -- TODO: Use `require("tinyyaml")` in TeX Live 2023
- local tinyyaml = require("markdown-tinyyaml")
+ local tinyyaml = require("tinyyaml")
data = tinyyaml.parse(text, {timestamps=false})
end)
if ran_ok and data ~= nil then
diff --git a/Master/texmf-dist/tex/luatex/markdown/markdown-tinyyaml.lua b/Master/texmf-dist/tex/luatex/markdown/markdown-tinyyaml.lua
deleted file mode 100644
index 25b351f7e40..00000000000
--- a/Master/texmf-dist/tex/luatex/markdown/markdown-tinyyaml.lua
+++ /dev/null
@@ -1,882 +0,0 @@
--- MIT License
---
--- Copyright (c) 2017 peposso
---
--- 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.
-
--------------------------------------------------------------------------------
--- tinyyaml - YAML subset parser
--------------------------------------------------------------------------------
-
-local table = table
-local string = string
-local schar = string.char
-local ssub, gsub = string.sub, string.gsub
-local sfind, smatch = string.find, string.match
-local tinsert, tconcat, tremove = table.insert, table.concat, table.remove
-local setmetatable = setmetatable
-local pairs = pairs
-local rawget = rawget
-local type = type
-local tonumber = tonumber
-local math = math
-local getmetatable = getmetatable
-local error = error
-local end_symbol = "..."
-local end_break_symbol = "...\n"
-
-local UNESCAPES = {
- ['0'] = "\x00", z = "\x00", N = "\x85",
- a = "\x07", b = "\x08", t = "\x09",
- n = "\x0a", v = "\x0b", f = "\x0c",
- r = "\x0d", e = "\x1b", ['\\'] = '\\',
-};
-
--------------------------------------------------------------------------------
--- utils
-local function select(list, pred)
- local selected = {}
- for i = 0, #list do
- local v = list[i]
- if v and pred(v, i) then
- tinsert(selected, v)
- end
- end
- return selected
-end
-
-local function startswith(haystack, needle)
- return ssub(haystack, 1, #needle) == needle
-end
-
-local function ltrim(str)
- return smatch(str, "^%s*(.-)$")
-end
-
-local function rtrim(str)
- return smatch(str, "^(.-)%s*$")
-end
-
-local function trim(str)
- return smatch(str, "^%s*(.-)%s*$")
-end
-
--------------------------------------------------------------------------------
--- Implementation.
---
-local class = {__meta={}}
-function class.__meta.__call(cls, ...)
- local self = setmetatable({}, cls)
- if cls.__init then
- cls.__init(self, ...)
- end
- return self
-end
-
-function class.def(base, typ, cls)
- base = base or class
- local mt = {__metatable=base, __index=base}
- for k, v in pairs(base.__meta) do mt[k] = v end
- cls = setmetatable(cls or {}, mt)
- cls.__index = cls
- cls.__metatable = cls
- cls.__type = typ
- cls.__meta = mt
- return cls
-end
-
-
-local types = {
- null = class:def('null'),
- map = class:def('map'),
- omap = class:def('omap'),
- pairs = class:def('pairs'),
- set = class:def('set'),
- seq = class:def('seq'),
- timestamp = class:def('timestamp'),
-}
-
-local Null = types.null
-function Null.__tostring() return 'yaml.null' end
-function Null.isnull(v)
- if v == nil then return true end
- if type(v) == 'table' and getmetatable(v) == Null then return true end
- return false
-end
-local null = Null()
-
-function types.timestamp:__init(y, m, d, h, i, s, f, z)
- self.year = tonumber(y)
- self.month = tonumber(m)
- self.day = tonumber(d)
- self.hour = tonumber(h or 0)
- self.minute = tonumber(i or 0)
- self.second = tonumber(s or 0)
- if type(f) == 'string' and sfind(f, '^%d+$') then
- self.fraction = tonumber(f) * math.pow(10, 3 - #f)
- elseif f then
- self.fraction = f
- else
- self.fraction = 0
- end
- self.timezone = z
-end
-
-function types.timestamp:__tostring()
- return string.format(
- '%04d-%02d-%02dT%02d:%02d:%02d.%03d%s',
- self.year, self.month, self.day,
- self.hour, self.minute, self.second, self.fraction,
- self:gettz())
-end
-
-function types.timestamp:gettz()
- if not self.timezone then
- return ''
- end
- if self.timezone == 0 then
- return 'Z'
- end
- local sign = self.timezone > 0
- local z = sign and self.timezone or -self.timezone
- local zh = math.floor(z)
- local zi = (z - zh) * 60
- return string.format(
- '%s%02d:%02d', sign and '+' or '-', zh, zi)
-end
-
-
-local function countindent(line)
- local _, j = sfind(line, '^%s+')
- if not j then
- return 0, line
- end
- return j, ssub(line, j+1)
-end
-
-local Parser = {
- timestamps=true,-- parse timestamps as objects instead of strings
-}
-
-function Parser:parsestring(line, stopper)
- stopper = stopper or ''
- local q = ssub(line, 1, 1)
- if q == ' ' or q == '\t' then
- return self:parsestring(ssub(line, 2))
- end
- if q == "'" then
- local i = sfind(line, "'", 2, true)
- if not i then
- return nil, line
- end
- -- Unescape repeated single quotes.
- while i < #line and ssub(line, i+1, i+1) == "'" do
- i = sfind(line, "'", i + 2, true)
- if not i then
- return nil, line
- end
- end
- return ssub(line, 2, i-1):gsub("''", "'"), ssub(line, i+1)
- end
- if q == '"' then
- local i, buf = 2, ''
- while i < #line do
- local c = ssub(line, i, i)
- if c == '\\' then
- local n = ssub(line, i+1, i+1)
- if UNESCAPES[n] ~= nil then
- buf = buf..UNESCAPES[n]
- elseif n == 'x' then
- local h = ssub(i+2,i+3)
- if sfind(h, '^[0-9a-fA-F]$') then
- buf = buf..schar(tonumber(h, 16))
- i = i + 2
- else
- buf = buf..'x'
- end
- else
- buf = buf..n
- end
- i = i + 1
- elseif c == q then
- break
- else
- buf = buf..c
- end
- i = i + 1
- end
- return buf, ssub(line, i+1)
- end
- if q == '{' or q == '[' then -- flow style
- return nil, line
- end
- if q == '|' or q == '>' then -- block
- return nil, line
- end
- if q == '-' or q == ':' then
- if ssub(line, 2, 2) == ' ' or ssub(line, 2, 2) == '\n' or #line == 1 then
- return nil, line
- end
- end
-
- if line == "*" then
- error("did not find expected alphabetic or numeric character")
- end
-
- local buf = ''
- while #line > 0 do
- local c = ssub(line, 1, 1)
- if sfind(stopper, c, 1, true) then
- break
- elseif c == ':' and (ssub(line, 2, 2) == ' ' or ssub(line, 2, 2) == '\n' or #line == 1) then
- break
- elseif c == '#' and (ssub(buf, #buf, #buf) == ' ') then
- break
- else
- buf = buf..c
- end
- line = ssub(line, 2)
- end
- buf = rtrim(buf)
- local val = tonumber(buf) or buf
- return val, line
-end
-
-local function isemptyline(line)
- return line == '' or sfind(line, '^%s*$') or sfind(line, '^%s*#')
-end
-
-local function equalsline(line, needle)
- return startswith(line, needle) and isemptyline(ssub(line, #needle+1))
-end
-
-local function compactifyemptylines(lines)
- -- Appends empty lines as "\n" to the end of the nearest preceding non-empty line
- local compactified = {}
- local lastline = {}
- for i = 1, #lines do
- local line = lines[i]
- if isemptyline(line) then
- if #compactified > 0 and i < #lines then
- tinsert(lastline, "\n")
- end
- else
- if #lastline > 0 then
- tinsert(compactified, tconcat(lastline, ""))
- end
- lastline = {line}
- end
- end
- if #lastline > 0 then
- tinsert(compactified, tconcat(lastline, ""))
- end
- return compactified
-end
-
-local function checkdupekey(map, key)
- if rawget(map, key) ~= nil then
- -- print("found a duplicate key '"..key.."' in line: "..line)
- local suffix = 1
- while rawget(map, key..'_'..suffix) do
- suffix = suffix + 1
- end
- key = key ..'_'..suffix
- end
- return key
-end
-
-
-function Parser:parseflowstyle(line, lines)
- local stack = {}
- while true do
- if #line == 0 then
- if #lines == 0 then
- break
- else
- line = tremove(lines, 1)
- end
- end
- local c = ssub(line, 1, 1)
- if c == '#' then
- line = ''
- elseif c == ' ' or c == '\t' or c == '\r' or c == '\n' then
- line = ssub(line, 2)
- elseif c == '{' or c == '[' then
- tinsert(stack, {v={},t=c})
- line = ssub(line, 2)
- elseif c == ':' then
- local s = tremove(stack)
- tinsert(stack, {v=s.v, t=':'})
- line = ssub(line, 2)
- elseif c == ',' then
- local value = tremove(stack)
- if value.t == ':' or value.t == '{' or value.t == '[' then error() end
- if stack[#stack].t == ':' then
- -- map
- local key = tremove(stack)
- key.v = checkdupekey(stack[#stack].v, key.v)
- stack[#stack].v[key.v] = value.v
- elseif stack[#stack].t == '{' then
- -- set
- stack[#stack].v[value.v] = true
- elseif stack[#stack].t == '[' then
- -- seq
- tinsert(stack[#stack].v, value.v)
- end
- line = ssub(line, 2)
- elseif c == '}' then
- if stack[#stack].t == '{' then
- if #stack == 1 then break end
- stack[#stack].t = '}'
- line = ssub(line, 2)
- else
- line = ','..line
- end
- elseif c == ']' then
- if stack[#stack].t == '[' then
- if #stack == 1 then break end
- stack[#stack].t = ']'
- line = ssub(line, 2)
- else
- line = ','..line
- end
- else
- local s, rest = self:parsestring(line, ',{}[]')
- if not s then
- error('invalid flowstyle line: '..line)
- end
- tinsert(stack, {v=s, t='s'})
- line = rest
- end
- end
- return stack[1].v, line
-end
-
-function Parser:parseblockstylestring(line, lines, indent)
- if #lines == 0 then
- error("failed to find multi-line scalar content")
- end
- local s = {}
- local firstindent = -1
- local endline = -1
- for i = 1, #lines do
- local ln = lines[i]
- local idt = countindent(ln)
- if idt <= indent then
- break
- end
- if ln == '' then
- tinsert(s, '')
- else
- if firstindent == -1 then
- firstindent = idt
- elseif idt < firstindent then
- break
- end
- tinsert(s, ssub(ln, firstindent + 1))
- end
- endline = i
- end
-
- local striptrailing = true
- local sep = '\n'
- local newlineatend = true
- if line == '|' then
- striptrailing = true
- sep = '\n'
- newlineatend = true
- elseif line == '|+' then
- striptrailing = false
- sep = '\n'
- newlineatend = true
- elseif line == '|-' then
- striptrailing = true
- sep = '\n'
- newlineatend = false
- elseif line == '>' then
- striptrailing = true
- sep = ' '
- newlineatend = true
- elseif line == '>+' then
- striptrailing = false
- sep = ' '
- newlineatend = true
- elseif line == '>-' then
- striptrailing = true
- sep = ' '
- newlineatend = false
- else
- error('invalid blockstyle string:'..line)
- end
-
- if #s == 0 then
- return ""
- end
-
- local _, eonl = s[#s]:gsub('\n', '\n')
- s[#s] = rtrim(s[#s])
- if striptrailing then
- eonl = 0
- end
- if newlineatend then
- eonl = eonl + 1
- end
- for i = endline, 1, -1 do
- tremove(lines, i)
- end
- return tconcat(s, sep)..string.rep('\n', eonl)
-end
-
-function Parser:parsetimestamp(line)
- local _, p1, y, m, d = sfind(line, '^(%d%d%d%d)%-(%d%d)%-(%d%d)')
- if not p1 then
- return nil, line
- end
- if p1 == #line then
- return types.timestamp(y, m, d), ''
- end
- local _, p2, h, i, s = sfind(line, '^[Tt ](%d+):(%d+):(%d+)', p1+1)
- if not p2 then
- return types.timestamp(y, m, d), ssub(line, p1+1)
- end
- if p2 == #line then
- return types.timestamp(y, m, d, h, i, s), ''
- end
- local _, p3, f = sfind(line, '^%.(%d+)', p2+1)
- if not p3 then
- p3 = p2
- f = 0
- end
- local zc = ssub(line, p3+1, p3+1)
- local _, p4, zs, z = sfind(line, '^ ?([%+%-])(%d+)', p3+1)
- if p4 then
- z = tonumber(z)
- local _, p5, zi = sfind(line, '^:(%d+)', p4+1)
- if p5 then
- z = z + tonumber(zi) / 60
- end
- z = zs == '-' and -tonumber(z) or tonumber(z)
- elseif zc == 'Z' then
- p4 = p3 + 1
- z = 0
- else
- p4 = p3
- z = false
- end
- return types.timestamp(y, m, d, h, i, s, f, z), ssub(line, p4+1)
-end
-
-function Parser:parsescalar(line, lines, indent)
- line = trim(line)
- line = gsub(line, '^%s*#.*$', '') -- comment only -> ''
- line = gsub(line, '^%s*', '') -- trim head spaces
-
- if line == '' or line == '~' then
- return null
- end
-
- if self.timestamps then
- local ts, _ = self:parsetimestamp(line)
- if ts then
- return ts
- end
- end
-
- local s, _ = self:parsestring(line)
- -- startswith quote ... string
- -- not startswith quote ... maybe string
- if s and (startswith(line, '"') or startswith(line, "'")) then
- return s
- end
-
- if startswith('!', line) then -- unexpected tagchar
- error('unsupported line: '..line)
- end
-
- if equalsline(line, '{}') then
- return {}
- end
- if equalsline(line, '[]') then
- return {}
- end
-
- if startswith(line, '{') or startswith(line, '[') then
- return self:parseflowstyle(line, lines)
- end
-
- if startswith(line, '|') or startswith(line, '>') then
- return self:parseblockstylestring(line, lines, indent)
- end
-
- -- Regular unquoted string
- line = gsub(line, '%s*#.*$', '') -- trim tail comment
- local v = line
- if v == 'null' or v == 'Null' or v == 'NULL'then
- return null
- elseif v == 'true' or v == 'True' or v == 'TRUE' then
- return true
- elseif v == 'false' or v == 'False' or v == 'FALSE' then
- return false
- elseif v == '.inf' or v == '.Inf' or v == '.INF' then
- return math.huge
- elseif v == '+.inf' or v == '+.Inf' or v == '+.INF' then
- return math.huge
- elseif v == '-.inf' or v == '-.Inf' or v == '-.INF' then
- return -math.huge
- elseif v == '.nan' or v == '.NaN' or v == '.NAN' then
- return 0 / 0
- elseif sfind(v, '^[%+%-]?[0-9]+$') or sfind(v, '^[%+%-]?[0-9]+%.$')then
- return tonumber(v) -- : int
- elseif sfind(v, '^[%+%-]?[0-9]+%.[0-9]+$') then
- return tonumber(v)
- end
- return s or v
-end
-
-function Parser:parseseq(line, lines, indent)
- local seq = setmetatable({}, types.seq)
- if line ~= '' then
- error()
- end
- while #lines > 0 do
- -- Check for a new document
- line = lines[1]
- if startswith(line, '---') then
- while #lines > 0 and not startswith(lines, '---') do
- tremove(lines, 1)
- end
- return seq
- end
-
- -- Check the indent level
- local level = countindent(line)
- if level < indent then
- return seq
- elseif level > indent then
- error("found bad indenting in line: ".. line)
- end
-
- local i, j = sfind(line, '%-%s+')
- if not i then
- i, j = sfind(line, '%-$')
- if not i then
- return seq
- end
- end
- local rest = ssub(line, j+1)
-
- if sfind(rest, '^[^\'\"%s]*:%s*$') or sfind(rest, '^[^\'\"%s]*:%s+.') then
- -- Inline nested hash
- -- There are two patterns need to match as inline nested hash
- -- first one should have no other characters except whitespace after `:`
- -- and the second one should have characters besides whitespace after `:`
- --
- -- value:
- -- - foo:
- -- bar: 1
- --
- -- and
- --
- -- value:
- -- - foo: bar
- --
- -- And there is one pattern should not be matched, where there is no space after `:`
- -- in below, `foo:bar` should be parsed into a single string
- --
- -- value:
- -- - foo:bar
- local indent2 = j
- lines[1] = string.rep(' ', indent2)..rest
- tinsert(seq, self:parsemap('', lines, indent2))
- elseif sfind(rest, '^%-%s+') then
- -- Inline nested seq
- local indent2 = j
- lines[1] = string.rep(' ', indent2)..rest
- tinsert(seq, self:parseseq('', lines, indent2))
- elseif isemptyline(rest) then
- tremove(lines, 1)
- if #lines == 0 then
- tinsert(seq, null)
- return seq
- end
- if sfind(lines[1], '^%s*%-') then
- local nextline = lines[1]
- local indent2 = countindent(nextline)
- if indent2 == indent then
- -- Null seqay entry
- tinsert(seq, null)
- else
- tinsert(seq, self:parseseq('', lines, indent2))
- end
- else
- -- - # comment
- -- key: value
- local nextline = lines[1]
- local indent2 = countindent(nextline)
- tinsert(seq, self:parsemap('', lines, indent2))
- end
- elseif line == "*" then
- error("did not find expected alphabetic or numeric character")
- elseif rest then
- -- Array entry with a value
- local nextline = lines[1]
- local indent2 = countindent(nextline)
- tremove(lines, 1)
- tinsert(seq, self:parsescalar(rest, lines, indent2))
- end
- end
- return seq
-end
-
-function Parser:parseset(line, lines, indent)
- if not isemptyline(line) then
- error('not seq line: '..line)
- end
- local set = setmetatable({}, types.set)
- while #lines > 0 do
- -- Check for a new document
- line = lines[1]
- if startswith(line, '---') then
- while #lines > 0 and not startswith(lines, '---') do
- tremove(lines, 1)
- end
- return set
- end
-
- -- Check the indent level
- local level = countindent(line)
- if level < indent then
- return set
- elseif level > indent then
- error("found bad indenting in line: ".. line)
- end
-
- local i, j = sfind(line, '%?%s+')
- if not i then
- i, j = sfind(line, '%?$')
- if not i then
- return set
- end
- end
- local rest = ssub(line, j+1)
-
- if sfind(rest, '^[^\'\"%s]*:') then
- -- Inline nested hash
- local indent2 = j
- lines[1] = string.rep(' ', indent2)..rest
- set[self:parsemap('', lines, indent2)] = true
- elseif sfind(rest, '^%s+$') then
- tremove(lines, 1)
- if #lines == 0 then
- tinsert(set, null)
- return set
- end
- if sfind(lines[1], '^%s*%?') then
- local indent2 = countindent(lines[1])
- if indent2 == indent then
- -- Null array entry
- set[null] = true
- else
- set[self:parseseq('', lines, indent2)] = true
- end
- end
-
- elseif rest then
- tremove(lines, 1)
- set[self:parsescalar(rest, lines)] = true
- else
- error("failed to classify line: "..line)
- end
- end
- return set
-end
-
-function Parser:parsemap(line, lines, indent)
- if not isemptyline(line) then
- error('not map line: '..line)
- end
- local map = setmetatable({}, types.map)
- while #lines > 0 do
- -- Check for a new document
- line = lines[1]
- if line == end_symbol or line == end_break_symbol then
- for i, _ in ipairs(lines) do
- lines[i] = nil
- end
- return map
- end
-
- if startswith(line, '---') then
- while #lines > 0 and not startswith(lines, '---') do
- tremove(lines, 1)
- end
- return map
- end
-
- -- Check the indent level
- local level, _ = countindent(line)
- if level < indent then
- return map
- elseif level > indent then
- error("found bad indenting in line: ".. line)
- end
-
- -- Find the key
- local key
- local s, rest = self:parsestring(line)
-
- -- Quoted keys
- if s and startswith(rest, ':') then
- local sc = self:parsescalar(s, {}, 0)
- if sc and type(sc) ~= 'string' then
- key = sc
- else
- key = s
- end
- line = ssub(rest, 2)
- else
- error("failed to classify line: "..line)
- end
-
- key = checkdupekey(map, key)
- line = ltrim(line)
-
- if ssub(line, 1, 1) == '!' then
- -- ignore type
- local rh = ltrim(ssub(line, 3))
- local typename = smatch(rh, '^!?[^%s]+')
- line = ltrim(ssub(rh, #typename+1))
- end
-
- if not isemptyline(line) then
- tremove(lines, 1)
- line = ltrim(line)
- map[key] = self:parsescalar(line, lines, indent)
- else
- -- An indent
- tremove(lines, 1)
- if #lines == 0 then
- map[key] = null
- return map;
- end
- if sfind(lines[1], '^%s*%-') then
- local indent2 = countindent(lines[1])
- map[key] = self:parseseq('', lines, indent2)
- elseif sfind(lines[1], '^%s*%?') then
- local indent2 = countindent(lines[1])
- map[key] = self:parseset('', lines, indent2)
- else
- local indent2 = countindent(lines[1])
- if indent >= indent2 then
- -- Null hash entry
- map[key] = null
- else
- map[key] = self:parsemap('', lines, indent2)
- end
- end
- end
- end
- return map
-end
-
-
--- : (list<str>)->dict
-function Parser:parsedocuments(lines)
- lines = compactifyemptylines(lines)
-
- if sfind(lines[1], '^%%YAML') then tremove(lines, 1) end
-
- local root = {}
- local in_document = false
- while #lines > 0 do
- local line = lines[1]
- -- Do we have a document header?
- local docright;
- if sfind(line, '^%-%-%-') then
- -- Handle scalar documents
- docright = ssub(line, 4)
- tremove(lines, 1)
- in_document = true
- end
- if docright then
- if (not sfind(docright, '^%s+$') and
- not sfind(docright, '^%s+#')) then
- tinsert(root, self:parsescalar(docright, lines))
- end
- elseif #lines == 0 or startswith(line, '---') then
- -- A naked document
- tinsert(root, null)
- while #lines > 0 and not sfind(lines[1], '---') do
- tremove(lines, 1)
- end
- in_document = false
- -- XXX The final '-+$' is to look for -- which ends up being an
- -- error later.
- elseif not in_document and #root > 0 then
- -- only the first document can be explicit
- error('parse error: '..line)
- elseif sfind(line, '^%s*%-') then
- -- An array at the root
- tinsert(root, self:parseseq('', lines, 0))
- elseif sfind(line, '^%s*[^%s]') then
- -- A hash at the root
- local level = countindent(line)
- tinsert(root, self:parsemap('', lines, level))
- else
- -- Shouldn't get here. @lines have whitespace-only lines
- -- stripped, and previous match is a line with any
- -- non-whitespace. So this clause should only be reachable via
- -- a perlbug where \s is not symmetric with \S
-
- -- uncoverable statement
- error('parse error: '..line)
- end
- end
- if #root > 1 and Null.isnull(root[1]) then
- tremove(root, 1)
- return root
- end
- return root
-end
-
---- Parse yaml string into table.
-function Parser:parse(source)
- local lines = {}
- for line in string.gmatch(source .. '\n', '(.-)\r?\n') do
- tinsert(lines, line)
- end
-
- local docs = self:parsedocuments(lines)
- if #docs == 1 then
- return docs[1]
- end
-
- return docs
-end
-
-local function parse(source, options)
- local options = options or {}
- local parser = setmetatable (options, {__index=Parser})
- return parser:parse(source)
-end
-
-return {
- version = 0.1,
- parse = parse,
-}
diff --git a/Master/texmf-dist/tex/luatex/markdown/markdown-unicode-data.lua b/Master/texmf-dist/tex/luatex/markdown/markdown-unicode-data.lua
new file mode 100644
index 00000000000..7aab0e30850
--- /dev/null
+++ b/Master/texmf-dist/tex/luatex/markdown/markdown-unicode-data.lua
@@ -0,0 +1,81 @@
+--
+-- Copyright (C) 2009-2016 John MacFarlane, Hans Hagen
+--
+-- 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 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.
+--
+-- Copyright (C) 2016-2025 Vít Starý Novotný, Andrej Genčur
+--
+-- This work may be distributed and/or modified under the
+-- conditions of the LaTeX Project Public License, either version 1.3
+-- of this license or (at your option) any later version.
+-- The latest version of this license is in
+--
+-- http://www.latex-project.org/lppl.txt
+--
+-- and version 1.3 or later is part of all distributions of LaTeX
+-- version 2005/12/01 or later.
+--
+-- This work has the LPPL maintenance status `maintained'.
+-- The Current Maintainer of this work is Vít Starý Novotný.
+--
+-- Send bug reports, requests for additions and questions
+-- either to the GitHub issue tracker at
+--
+-- https://github.com/witiko/markdown/issues
+--
+-- or to the e-mail address <witiko@mail.muni.cz>.
+--
+-- MODIFICATION ADVICE:
+--
+-- If you want to customize this file, it is best to make a copy of
+-- the source file(s) from which it was produced. Use a different
+-- name for your copy(ies) and modify the copy(ies); this will ensure
+-- that your modifications do not get overwritten when you install a
+-- new release of the standard system. You should also ensure that
+-- your modified source file does not generate any modified file with
+-- the same name as a standard file.
+--
+-- You will also need to produce your own, suitably named, .ins file to
+-- control the generation of files from your source file; this file
+-- should contain your own preambles for the files it generates, not
+-- those in the standard .ins files.
+--
+local metadata = {
+ version = "3.10.0-0-g626df6ad",
+ comment = "A module for the conversion from markdown "
+ .. "to plain TeX",
+ author = "John MacFarlane, Hans Hagen, Vít Starý Novotný, "
+ .. "Andrej Genčur",
+ copyright = {"2009-2016 John MacFarlane, Hans Hagen",
+ "2016-2024 Vít Starý Novotný, Andrej Genčur"},
+ license = "LPPL 1.3c"
+}
+
+local lpeg = require("lpeg")
+local M = {metadata = metadata}
+M.punctuation = {}
+local P = lpeg.P
+-- luacheck: push no max line length
+M.punctuation[1] = P([[!]]) + P([["]]) + P([[#]]) + P([[$]]) + P([[%]]) + P([[&]]) + P([[']]) + P([[(]]) + P([[)]]) + P([[*]]) + P([[+]]) + P([[,]]) + P([[-]]) + P([[.]]) + P([[/]]) + P([[:]]) + P([[;]]) + P([[<]]) + P([[=]]) + P([[>]]) + P([[?]]) + P([[@]]) + P([[[]]) + P([[\]]) + P(']') + P([[^]]) + P([[_]]) + P([[`]]) + P([[{]]) + P([[|]]) + P([[}]]) + P([[~]])
+M.punctuation[2] = P([[]]) * (P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]))
+M.punctuation[3] = P([[]]) * (P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]))) + P([[]]) * (P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]))) + P([[]]) * (P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]))) + P([[]]) * (P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]))) + P([[]]) * (P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]))) + P([[]]) * (P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]))) + P([[]]) * (P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]])))
+M.punctuation[4] = P([[]]) * (P([[]]) * (P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]))) + P([[]]) * (P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]]))) + P([[]]) * (P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * P([[]])) + P([[]]) * (P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]))) + P([[]]) * (P([[]]) * P([[]]) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * P([[]])) + P([[]]) * (P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]))) + P([[]]) * (P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]))) + P([[]]) * (P([[]]) * (P([[]]) + P([[]]))) + P([[]]) * (P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]])) + P([[]]) * P([[]]) + P([[]]) * (P([[]]) + P([[]]) + P([[]])) + P([[]]) * (P([[]]) + P([[]]))))
+-- luacheck: pop
+return M
diff --git a/Master/texmf-dist/tex/luatex/markdown/markdown.lua b/Master/texmf-dist/tex/luatex/markdown/markdown.lua
index 7d1d4d6cde8..6efbf54a91e 100644
--- a/Master/texmf-dist/tex/luatex/markdown/markdown.lua
+++ b/Master/texmf-dist/tex/luatex/markdown/markdown.lua
@@ -20,7 +20,7 @@
-- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--
--- Copyright (C) 2016-2024 Vít Starý Novotný, Andrej Genčur
+-- Copyright (C) 2016-2025 Vít Starý Novotný, Andrej Genčur
--
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
@@ -58,7 +58,7 @@
-- those in the standard .ins files.
--
local metadata = {
- version = "3.7.0-0-g98dece19",
+ version = "3.10.0-0-g626df6ad",
comment = "A module for the conversion from markdown "
.. "to plain TeX",
author = "John MacFarlane, Hans Hagen, Vít Starý Novotný, "
@@ -68,10 +68,11 @@ local metadata = {
license = "LPPL 1.3c"
}
-local md5 = require("md5");
+local md5 = require("md5")
local M = {metadata = metadata}
local defaultOptions = {}
defaultOptions.eagerCache = true
+defaultOptions.experimental = false
defaultOptions.singletonCache = true
defaultOptions.unicodeNormalization = true
defaultOptions.unicodeNormalizationForm = "nfc"
@@ -177,10 +178,9 @@ function util.salt(options)
.. "," .. metadata.version
return salt
end
-local function warn(s)
+function util.warning(s)
io.stderr:write("Warning: " .. s .. "\n")
end
-
function M.new(options)
options = options or {}
setmetatable(options, { __index = function (_, key)
diff --git a/Master/texmf-dist/tex/luatex/nodetree/nodetree-embed.sty b/Master/texmf-dist/tex/luatex/nodetree/nodetree-embed.sty
index ddff12f436d..ec7ed8bd4bb 100644
--- a/Master/texmf-dist/tex/luatex/nodetree/nodetree-embed.sty
+++ b/Master/texmf-dist/tex/luatex/nodetree/nodetree-embed.sty
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 2016-2023 by Josef Friedrich <josef@friedrich.rocks>
+%% Copyright (C) 2016-2024 by Josef Friedrich <josef@friedrich.rocks>
%% ----------------------------------------------------------------------
%% This work may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3c of this license
@@ -22,7 +22,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{nodetree-embed}
- [2023/09/10 v2.3.0 Embed node trees into a LaTeX document]
+ [2024/09/17 v2.4.0 Embed node trees into a LaTeX document]
\RequirePackage{xcolor,mdframed,expl3,xparse,fontspec}
\input{nodetree}
\RequirePackage{kvoptions}
diff --git a/Master/texmf-dist/tex/luatex/nodetree/nodetree.lua b/Master/texmf-dist/tex/luatex/nodetree/nodetree.lua
index 18a1f204c34..82a3e294d33 100644
--- a/Master/texmf-dist/tex/luatex/nodetree/nodetree.lua
+++ b/Master/texmf-dist/tex/luatex/nodetree/nodetree.lua
@@ -30,7 +30,7 @@
--- be either `continue` or `stop`.
if not modules then modules = {} end modules ['nodetree'] = {
- version = '2.3.0',
+ version = '2.4.0',
comment = 'nodetree',
author = 'Josef Friedrich',
copyright = 'Josef Friedrich',
@@ -649,30 +649,37 @@ end
--- Convert a Lua table into a format string.
---
----@param table table # A table to generate an inline view of.
+---@param tbl table # A table to generate an inline view of.
---
---@return string
-function template.table_inline(table)
+function template.table_inline(tbl)
local tex_escape = ''
if options.channel == 'tex' then
tex_escape = '\\'
end
- if type(table) == 'table' then
- table = get_all_table_data(table)
+ if type(tbl) == 'table' then
+ tbl = get_all_table_data(tbl)
local output = tex_escape .. '{'
local kv_list = ''
- for key, value in pairs(table) do
- if type(key) ~= 'numbers' then
- key = '\'' ..
- template.colored_string(key, 'cyan', 'dim') .. '\''
- end
- kv_list = kv_list .. '[' .. key .. '] = ' ..
- template.table_inline(value) .. ', '
+ local keys = {}
+ for key in pairs(tbl) do
+ keys[#keys + 1] = key
+ end
+ table.sort(keys)
+ for i = 1, #keys do
+ local key = keys[i]
+ local value = tbl[key]
+ if type(key) ~= 'numbers' then
+ key = '\'' ..
+ template.colored_string(key, 'cyan', 'dim') .. '\''
+ end
+ kv_list = kv_list .. '[' .. key .. '] = ' ..
+ template.table_inline(value) .. ', '
end
output = output .. kv_list:gsub(', $', '')
return output .. tex_escape .. '}'
else
- return tostring(table)
+ return tostring(tbl)
end
end
diff --git a/Master/texmf-dist/tex/luatex/nodetree/nodetree.sty b/Master/texmf-dist/tex/luatex/nodetree/nodetree.sty
index a450ccdf022..f27e9c856c7 100644
--- a/Master/texmf-dist/tex/luatex/nodetree/nodetree.sty
+++ b/Master/texmf-dist/tex/luatex/nodetree/nodetree.sty
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 2016-2023 by Josef Friedrich <josef@friedrich.rocks>
+%% Copyright (C) 2016-2024 by Josef Friedrich <josef@friedrich.rocks>
%% ----------------------------------------------------------------------
%% This work may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3c of this license
@@ -22,7 +22,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{nodetree}
- [2023/09/10 v2.3.0 Visualize node lists in a tree view]
+ [2024/09/17 v2.4.0 Visualize node lists in a tree view]
\input{nodetree}
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
diff --git a/Master/texmf-dist/tex/luatex/nodetree/nodetree.tex b/Master/texmf-dist/tex/luatex/nodetree/nodetree.tex
index 919ea275f7a..180bb1fb7c4 100644
--- a/Master/texmf-dist/tex/luatex/nodetree/nodetree.tex
+++ b/Master/texmf-dist/tex/luatex/nodetree/nodetree.tex
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 2016-2023 by Josef Friedrich <josef@friedrich.rocks>
+%% Copyright (C) 2016-2024 by Josef Friedrich <josef@friedrich.rocks>
%% ----------------------------------------------------------------------
%% This work may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3c of this license
diff --git a/Master/texmf-dist/tex/luatex/penlight/penlight.lua b/Master/texmf-dist/tex/luatex/penlight/penlight.lua
index 6ffcaf49b70..e104886a83f 100644
--- a/Master/texmf-dist/tex/luatex/penlight/penlight.lua
+++ b/Master/texmf-dist/tex/luatex/penlight/penlight.lua
@@ -275,7 +275,7 @@ function Doc:reset()
end
---- Append a child to the currrent Node (ignoring current position).
+--- Append a child to the current Node (ignoring current position).
-- @param child a child node (either text or a document)
-- @return the current node (`self`)
-- @usage
@@ -311,7 +311,7 @@ end
--- Set attributes of a document node.
--- Will add/overwite values, but will not remove existing ones.
+-- Will add/overwrite values, but will not remove existing ones.
-- Operates on the Node itself, will not take position into account.
-- @tparam table t a table containing attribute/value pairs
-- @return the current node (`self`)
@@ -447,7 +447,7 @@ do
-- @param self document node to traverse
-- @param tag tag-name to look for
-- @param list array table to add the matching ones to
- -- @param recurse if truthy, recursivly search the node
+ -- @param recurse if truthy, recursively search the node
local function _children_with_name(self, tag, list, recurse)
-- TODO: protect against recursion
for _, child in ipairs(self) do
@@ -942,7 +942,7 @@ local html_empty_elements = { --lists all HTML empty (void) elements
}
--- Parse a well-formed HTML file as a string.
--- Tags are case-insenstive, DOCTYPE is ignored, and empty elements can be .. empty.
+-- Tags are case-insensitive, DOCTYPE is ignored, and empty elements can be .. empty.
-- @param s the HTML
function _M.parsehtml(s)
return _M.basic_parse(s,false,true)
@@ -1335,7 +1335,7 @@ end
-- Multiple short args can be combined like so: ( `-abcd`).
--
-- When specifying the `flags_valid` parameter, its contents can also contain
--- aliasses, to convert short/long flags to the same output name. See the
+-- aliases, to convert short/long flags to the same output name. See the
-- example below.
--
-- Note: if a flag is repeated, the last value wins.
@@ -1354,7 +1354,7 @@ end
-- { "hello", "world" }, -- list of flags taking values
-- { "l", "a", "b"}) -- list of allowed flags (value ones will be added)
--
--- -- More complex example using aliasses:
+-- -- More complex example using aliases:
-- local valid = {
-- long = "l", -- if 'l' is specified, it is reported as 'long'
-- new = { "n", "old" }, -- here both 'n' and 'old' will go into 'new'
@@ -1397,16 +1397,16 @@ function app.parse_args (args,flags_with_values, flags_valid)
valid = setmetatable({},{ __index = function(_, key) return key end })
else
valid = {}
- for k,aliasses in pairs(flags_valid) do
+ for k,aliases in pairs(flags_valid) do
if type(k) == "number" then -- array/list entry
- k = aliasses
+ k = aliases
end
- if type(aliasses) == "string" then -- single alias
- aliasses = { aliasses }
+ if type(aliases) == "string" then -- single alias
+ aliases = { aliases }
end
- if type(aliasses) == "table" then -- list of aliasses
+ if type(aliases) == "table" then -- list of aliases
-- it's the alternate name, so add the proper mappings
- for i, alias in ipairs(aliasses) do
+ for i, alias in ipairs(aliases) do
valid[alias] = k
end
end
@@ -1427,7 +1427,7 @@ function app.parse_args (args,flags_with_values, flags_valid)
end
-- now check that all flags with values are reported as such under all
- -- of their aliasses
+ -- of their aliases
for k, main_alias in pairs(valid) do
if with_values[main_alias] then
with_values[k] = true
@@ -1696,7 +1696,7 @@ function array2d.flatten (t)
return makelist(res)
end
---- reshape a 2D array. Reshape the aray by specifying a new nr of rows.
+--- reshape a 2D array. Reshape the array by specifying a new nr of rows.
-- @array2d t 2d array
-- @int nrows new number of rows
-- @bool co use column-order (Fortran-style) (default false)
@@ -1773,7 +1773,7 @@ end
--- extract the specified columns.
-- @array2d t 2d array
-- @tparam {int} cidx a table of column indices
--- @return a new 2d array with the extracted colums
+-- @return a new 2d array with the extracted columns
function array2d.extract_cols (t,cidx)
assert_arg(1,t,'table')
local res = {}
@@ -2097,7 +2097,7 @@ end,
--------------------
-- Module: 'pl.class'
--------------------
---- Provides a reuseable and convenient framework for creating classes in Lua.
+--- Provides a reusable and convenient framework for creating classes in Lua.
-- Two possible notations:
--
-- B = class(A)
@@ -2124,7 +2124,7 @@ local function call_ctor (c,obj,...)
init = rawget(parent_with_init, '_init')
parent_with_init = rawget(parent_with_init, '_parent_with_init')
end
- if parent_with_init then -- super() points to one above whereever _init came from
+ if parent_with_init then -- super() points to one above wherever _init came from
rawset(obj,'super',function(obj,...)
call_ctor(parent_with_init,obj,...)
end)
@@ -2970,9 +2970,9 @@ end
local config = {}
---- like `io.lines`, but allows for lines to be continued with '`\`'.
+--- like `io.lines`, but allows for lines to be continued with '`\\`'.
-- @param file a file-like object (anything where read() returns the next line) or a filename.
--- Defaults to stardard input.
+-- Defaults to standard input.
-- @return an iterator over the lines, or nil
-- @return error 'not a file-like object' or 'file is nil'
function config.lines(file)
@@ -3353,7 +3353,7 @@ function data.read(file,cnfg)
-- note that using dot as the thousands separator (@thousands_dot)
-- requires a special conversion function! For CSV, _empty fields_ are
- -- considered to default to numerial zeroes.
+ -- considered to default to numerical zeroes.
local tonumber = tonumber
local function try_number(x)
if thousands_dot then x = x:gsub('%.(...)','%1') end
@@ -5327,7 +5327,7 @@ function repr (e,lastpred)
end
func.repr = repr
--- collect all the non-PE values in this PE into vlist, and replace each occurence
+-- collect all the non-PE values in this PE into vlist, and replace each occurrence
-- with a constant PH (_C1, etc). Return the maximum placeholder index found.
local collect_values
function collect_values (e,vlist)
@@ -5411,13 +5411,20 @@ utils.add_function_factory(_PEMT,func.I)
func.bind1 = utils.bind1
func.curry = func.bind1
---- create a function which chains two functions.
+--- create a function which chains multiple functions.
-- @func f a function of at least one argument
-- @func g a function of at least one argument
+-- @param ... additional functions to compose
-- @return a function
--- @usage printf = compose(io.write,string.format)
-function func.compose (f,g)
- return function(...) return f(g(...)) end
+-- @usage printf = compose(io.write, string.format)
+-- @usage printf = compose(io.write, string.lower, string.format)
+function func.compose (...)
+ local args = pack(...)
+ return tablex.reduce(function(f, g)
+ return function(...)
+ return f(g(...))
+ end
+ end, args)
end
--- bind the arguments of a function to given values.
@@ -5475,7 +5482,7 @@ end,
--------------------
--------------
-- PL loader, for loading all PL libraries, only on demand.
--- Whenever a module is implicitly accesssed, the table will have the module automatically injected.
+-- Whenever a module is implicitly accessed, the table will have the module automatically injected.
-- (e.g. `_ENV.tablex`)
-- then that module is dynamically loaded. The submodules are all brought into
-- the table that is provided as the argument, or returned in a new table.
@@ -5573,7 +5580,7 @@ end,
--------------------
--------------
-- Entry point for loading all PL libraries only on demand, into the global space.
--- Requiring 'pl' means that whenever a module is implicitly accesssed
+-- Requiring 'pl' means that whenever a module is implicitly accessed
-- (e.g. `utils.split`)
-- then that module is dynamically loaded. The submodules are all brought into
-- the global space.
@@ -6872,7 +6879,7 @@ function List:insert(i, x)
return self
end
---- Insert an item at the begining of the list.
+--- Insert an item at the beginning of the list.
-- @param x a data item
-- @return the list
function List:put (x)
@@ -7282,7 +7289,7 @@ function List:iter ()
return iter(self)
end
---- Create an iterator over a seqence.
+--- Create an iterator over a sequence.
-- This captures the Python concept of 'sequence'.
-- For tables, iterates over all values with integer indices.
-- @param seq a sequence; a string (over characters), a table, a file object (over lines) or an iterator function
@@ -7637,10 +7644,14 @@ local function makelist(t)
return setmetatable(t, require('pl.List'))
end
---- list of keys.
+--- return a List of all keys.
+-- @class function
+-- @name Map:keys
Map.keys = tablex.keys
---- list of values.
+--- return a List of all values.
+-- @class function
+-- @name Map:values
Map.values = tablex.values
--- return an iterator over all key-value pairs.
@@ -7648,7 +7659,7 @@ function Map:iter ()
return pairs(self)
end
---- return a List of all key-value pairs, sorted by the keys.
+--- return a List of all key-value pairs, sorted by the keys in ascending order.
function Map:items()
local ls = makelist(tablex.pairmap (function (k,v) return makelist {k,v} end, self))
ls:sort(function(t1,t2) return t1[1] < t2[1] end)
@@ -8223,12 +8234,12 @@ local function err_func(name, param, err, code)
end
--- Lua iterator over the entries of a given directory.
--- Implicit link to [`luafilesystem.dir`](https://keplerproject.github.io/luafilesystem/manual.html#reference)
+-- Implicit link to [`luafilesystem.dir`](https://lunarmodules.github.io/luafilesystem/manual.html#dir)
-- @function dir
path.dir = lfs.dir
--- Creates a directory.
--- Implicit link to [`luafilesystem.mkdir`](https://keplerproject.github.io/luafilesystem/manual.html#reference)
+-- Implicit link to [`luafilesystem.mkdir`](https://lunarmodules.github.io/luafilesystem/manual.html#mkdir)
-- @function mkdir
path.mkdir = function(d)
local ok, err, code = lfs.mkdir(d)
@@ -8239,7 +8250,7 @@ path.mkdir = function(d)
end
--- Removes a directory.
--- Implicit link to [`luafilesystem.rmdir`](https://keplerproject.github.io/luafilesystem/manual.html#reference)
+-- Implicit link to [`luafilesystem.rmdir`](https://lunarmodules.github.io/luafilesystem/manual.html#rmdir)
-- @function rmdir
path.rmdir = function(d)
local ok, err, code = lfs.rmdir(d)
@@ -8250,7 +8261,7 @@ path.rmdir = function(d)
end
--- Gets attributes.
--- Implicit link to [`luafilesystem.attributes`](https://keplerproject.github.io/luafilesystem/manual.html#reference)
+-- Implicit link to [`luafilesystem.attributes`](https://lunarmodules.github.io/luafilesystem/manual.html#attributes)
-- @function attrib
path.attrib = function(d, r)
local ok, err, code = attrib(d, r)
@@ -8261,7 +8272,7 @@ path.attrib = function(d, r)
end
--- Get the working directory.
--- Implicit link to [`luafilesystem.currentdir`](https://keplerproject.github.io/luafilesystem/manual.html#reference)
+-- Implicit link to [`luafilesystem.currentdir`](https://lunarmodules.github.io/luafilesystem/manual.html#currentdir)
-- @function currentdir
path.currentdir = function()
local ok, err, code = currentdir()
@@ -8272,7 +8283,7 @@ path.currentdir = function()
end
--- Gets symlink attributes.
--- Implicit link to [`luafilesystem.symlinkattributes`](https://keplerproject.github.io/luafilesystem/manual.html#reference)
+-- Implicit link to [`luafilesystem.symlinkattributes`](https://lunarmodules.github.io/luafilesystem/manual.html#symlinkattributes)
-- @function link_attrib
path.link_attrib = function(d, r)
local ok, err, code = link_attrib(d, r)
@@ -8285,7 +8296,7 @@ end
--- Changes the working directory.
-- On Windows, if a drive is specified, it also changes the current drive. If
-- only specifying the drive, it will only switch drive, but not modify the path.
--- Implicit link to [`luafilesystem.chdir`](https://keplerproject.github.io/luafilesystem/manual.html#reference)
+-- Implicit link to [`luafilesystem.chdir`](https://lunarmodules.github.io/luafilesystem/manual.html#chdir)
-- @function chdir
path.chdir = function(d)
local ok, err, code = lfs.chdir(d)
@@ -8329,7 +8340,7 @@ end
--- does a path exist?
-- @string P A file path
--- @return the file path if it exists (either as file, directory, socket, etc), nil otherwise
+-- @return the file path if it exists (either as file, directory, socket, etc), false otherwise
function path.exists(P)
assert_string(1,P)
return attrib(P,'mode') ~= nil and P
@@ -8426,8 +8437,8 @@ end
-- @string[opt] pwd optional start path to use (default is current dir)
function path.abspath(P,pwd)
assert_string(1,P)
- if pwd then assert_string(2,pwd) end
local use_pwd = pwd ~= nil
+ if use_pwd then assert_string(2,pwd) end
if not use_pwd and not currentdir() then return P end
P = P:gsub('[\\/]$','')
pwd = pwd or currentdir()
@@ -8671,17 +8682,35 @@ end
-- In windows, if HOME isn't set, then USERPROFILE is used in preference to
-- HOMEDRIVE HOMEPATH. This is guaranteed to be writeable on all versions of Windows.
-- @string P A file path
+-- @treturn[1] string The file path with the `~` prefix substituted, or the input path if it had no prefix.
+-- @treturn[2] nil
+-- @treturn[2] string Error message if the environment variables were unavailable.
function path.expanduser(P)
assert_string(1,P)
- if at(P,1) == '~' then
- local home = getenv('HOME')
- if not home then -- has to be Windows
- home = getenv 'USERPROFILE' or (getenv 'HOMEDRIVE' .. getenv 'HOMEPATH')
- end
- return home..sub(P,2)
- else
+ if P:sub(1,1) ~= '~' then
return P
end
+
+ local home = getenv('HOME')
+ if (not home) and (not path.is_windows) then
+ -- no more options to try on Nix
+ return nil, "failed to expand '~' (HOME not set)"
+ end
+
+ if (not home) then
+ -- try alternatives on Windows
+ home = getenv 'USERPROFILE'
+ if not home then
+ local hd = getenv 'HOMEDRIVE'
+ local hp = getenv 'HOMEPATH'
+ if not (hd and hp) then
+ return nil, "failed to expand '~' (HOME, USERPROFILE, and HOMEDRIVE and/or HOMEPATH not set)"
+ end
+ home = hd..hp
+ end
+ end
+
+ return home..sub(P,2)
end
@@ -8839,7 +8868,7 @@ end
--- an iterator over all permutations of the elements of the given lists.
-- @param ... list-like tables, they are nil-safe if a length-field `n` is provided (see `utils.pack`)
--- @return an iterator which provides the next permutation as return values in the same order as the provided lists, preceeded by an index
+-- @return an iterator which provides the next permutation as return values in the same order as the provided lists, preceded by an index
-- @usage
-- local strs = utils.pack("one", nil, "three") -- adds an 'n' field for nil-safety
-- local bools = utils.pack(true, false)
@@ -8977,6 +9006,42 @@ local assert_arg = utils.assert_arg
local original_tostring = tostring
+-- Calculate min and max integer supported by lua_Number
+-- Assumptions:
+-- 1. max_int = 2 ^ n - 1
+-- 2. min_int = -max_int
+-- 3. if n > max_int versions with integer support will have
+-- integer overflow and versions without integers will lose least significant bit
+-- Note: if lua_Integer is smaller than lua_Number mantissa string.format('%d')
+-- can throw runtime error
+local max_int, min_int
+local next_cand = 1
+while next_cand > 0 and next_cand % 2 == 1 do
+ max_int = next_cand
+ min_int = -next_cand
+ next_cand = next_cand * 2 + 1
+end
+
+local function is_integer(value)
+ if _VERSION == "Lua 5.3" or _VERSION == "Lua 5.4" then
+ return mtype(value) == "integer"
+ end
+ if value < min_int or value > max_int then
+ return false
+ end
+ return math.floor(value) == value
+end
+
+local function is_float(value)
+ if _VERSION == "Lua 5.3" or _VERSION == "Lua 5.4" then
+ return mtype(value) == "float"
+ end
+ if value < min_int or value > max_int then
+ return true
+ end
+ return mfloor(value) == value
+end
+
-- Patch tostring to format numbers with better precision
-- and to produce cross-platform results for
-- infinite values and NaN.
@@ -8989,11 +9054,11 @@ local function tostring(value)
return "Inf"
elseif value == -mhuge then
return "-Inf"
- elseif (_VERSION ~= "Lua 5.3" or mtype(value) == "integer") and mfloor(value) == value then
+ elseif is_integer(value) then
return ("%d"):format(value)
else
local res = ("%.14g"):format(value)
- if _VERSION == "Lua 5.3" and mtype(value) == "float" and not res:find("%.") then
+ if is_float(value) and not res:find("%.") then
-- Number is internally a float but looks like an integer.
-- Insert ".0" after first run of digits.
res = res:gsub("%d+", "%0.0", 1)
@@ -11289,7 +11354,7 @@ local function _partition(p,delim,fn)
end
end
---- partition the string using first occurance of a delimiter
+--- partition the string using first occurrence of a delimiter
-- @string s the string
-- @string ch delimiter (match as plain string, no patterns)
-- @return part before ch
@@ -11303,7 +11368,7 @@ function stringx.partition(s,ch)
return _partition(s,ch,stringx.lfind)
end
---- partition the string p using last occurance of a delimiter
+--- partition the string p using last occurrence of a delimiter
-- @string s the string
-- @string ch delimiter (match as plain string, no patterns)
-- @return part before ch
@@ -11575,7 +11640,7 @@ end
---- Miscelaneous
+--- Miscellaneous
-- @section misc
--- return an iterator over all lines in a string
@@ -11593,7 +11658,7 @@ function stringx.lines(s)
return s:gmatch('([^\n]*)\n')
end
---- inital word letters uppercase ('title case').
+--- initial word letters uppercase ('title case').
-- Here 'words' mean chunks of non-space characters.
-- @string s the string
-- @return a string with each word's first letter uppercase
@@ -11614,7 +11679,7 @@ do
--- Return a shortened version of a string.
-- Fits string within w characters. Removed characters are marked with ellipsis.
-- @string s the string
- -- @int w the maxinum size allowed
+ -- @int w the maximum size allowed
-- @bool tail true if we want to show the end of the string (head otherwise)
-- @usage ('1234567890'):shorten(8) == '12345...'
-- @usage ('1234567890'):shorten(8, true) == '...67890'
@@ -11688,7 +11753,7 @@ end
--- Python-style formatting operator.
-- Calling `text.format_operator()` overloads the % operator for strings to give
--- Python/Ruby style formated output.
+-- Python/Ruby style formatted output.
-- This is extended to also do template-like substitution for map-like data.
--
-- Note this goes further than the original, and will allow these cases:
@@ -11698,7 +11763,7 @@ end
-- 3. a map of var=value pairs
-- 4. a function, as in gsub
--
--- For the second two cases, it uses $-variable substituion.
+-- For the second two cases, it uses $-variable substitution.
--
-- When called, this function will monkey-patch the global `string` metatable by
-- adding a `__mod` method.
@@ -12799,59 +12864,72 @@ end,
local utils = require 'pl.utils'
-local append,format,strsub,strfind,strgsub = table.insert,string.format,string.sub,string.find,string.gsub
+local append, concat = table.insert, table.concat
+local format, strsub, strfind, strgsub, strrep = string.format, string.sub, string.find, string.gsub, string.rep
-local APPENDER = "\n__R_size = __R_size + 1; __R_table[__R_size] = "
+local APPENDER = " __R_size = __R_size + 1; __R_table[__R_size] = "
+-- When this function returns, `pieces` is guaranteed to hold a complete Lua
+-- statement, meaning that new statements can be appended without creating
+-- invalid Lua code.
local function parseDollarParen(pieces, chunk, exec_pat, newline)
local s = 1
for term, executed, e in chunk:gmatch(exec_pat) do
- executed = '('..strsub(executed,2,-2)..')'
- append(pieces, APPENDER..format("%q", strsub(chunk,s, term - 1)))
- append(pieces, APPENDER..format("__tostring(%s or '')", executed))
+ executed = '(' .. strsub(executed, 2, -2) .. ')'
+ append(pieces, APPENDER .. format("%q;", strsub(chunk, s, term - 1)))
+ append(pieces, APPENDER .. format("__tostring(%s or '');", executed))
s = e
end
- local r
+ local remainder, newlines_removed
if newline then
- r = format("%q", strgsub(strsub(chunk,s),"\n",""))
+ remainder, newlines_removed = strgsub(strsub(chunk, s), "\n", "")
else
- r = format("%q", strsub(chunk,s))
+ remainder, newlines_removed = strsub(chunk, s), 0
end
- if r ~= '""' then
- append(pieces, APPENDER..r)
+ if remainder ~= "" then
+ append(pieces, APPENDER .. format("%q;", remainder))
+ end
+ if newlines_removed > 0 then
+ append(pieces, strrep("\n", newlines_removed))
end
end
-local function parseHashLines(chunk,inline_escape,brackets,esc,newline)
- local exec_pat = "()"..inline_escape.."(%b"..brackets..")()"
+local function parseHashLines(chunk, inline_escape, brackets, esc, newline)
+ -- Escape special characters to avoid invalid expressions
+ inline_escape = utils.escape(inline_escape)
+ esc = utils.escape(esc)
+
+ local exec_pat = "()" .. inline_escape .. "(%b" .. brackets .. ")()"
- local esc_pat = esc.."+([^\n]*\n?)"
- local esc_pat1, esc_pat2 = "^"..esc_pat, "\n"..esc_pat
- local pieces, s = {"return function()\nlocal __R_size, __R_table, __tostring = 0, {}, __tostring", n = 1}, 1
+ local esc_pat = esc .. "+([^\n]*\n?)"
+ local esc_pat1, esc_pat2 = "^" .. esc_pat, "\n" .. esc_pat
+ local pieces, s = {"return function() local __R_size, __R_table, __tostring = 0, {}, __tostring; "}, 1
while true do
- local _, e, lua = strfind(chunk,esc_pat1, s)
+ local _, e, lua = strfind(chunk, esc_pat1, s)
if not e then
local ss
- ss, e, lua = strfind(chunk,esc_pat2, s)
- parseDollarParen(pieces, strsub(chunk,s, ss), exec_pat, newline)
+ ss, e, lua = strfind(chunk, esc_pat2, s)
+ parseDollarParen(pieces, strsub(chunk, s, ss), exec_pat, newline)
if not e then break end
end
- if strsub(lua, -1, -1) == "\n" then lua = strsub(lua, 1, -2) end
- append(pieces, "\n"..lua)
+ if strsub(lua, -1, -1) ~= "\n" then lua = lua .. "\n" end -- Ensure trailing newline
+ append(pieces, lua)
+ -- since `lua` ends with a newline, there is no danger of subsequent
+ -- statements being gobbled up by comments or being altered
s = e + 1
end
- append(pieces, "\nreturn __R_table\nend")
+ append(pieces, "return __R_table; end")
-- let's check for a special case where there is nothing to template, but it's
-- just a single static string
local short = false
- if (#pieces == 3) and (pieces[2]:find(APPENDER, 1, true) == 1) then
- pieces = { "return " .. pieces[2]:sub(#APPENDER+1,-1) }
+ if (#pieces == 3) and (strfind(pieces[2], APPENDER, 1, true) == 1) then
+ pieces = { "return " .. strsub(pieces[2], #APPENDER + 1, -1) }
short = true
end
-- if short == true, the generated function will not return a table of strings,
-- but a single string
- return table.concat(pieces), short
+ return concat(pieces), short
end
local template = {}
@@ -12859,33 +12937,34 @@ local template = {}
--- expand the template using the specified environment.
-- This function will compile and render the template. For more performant
-- recurring usage use the two step approach by using `compile` and `ct:render`.
--- There are six special fields in the environment table `env`
---
--- * `_parent`: continue looking up in this table (e.g. `_parent=_G`).
--- * `_brackets`: bracket pair that wraps inline Lua expressions, default is '()'.
--- * `_escape`: character marking Lua lines, default is '#'
--- * `_inline_escape`: character marking inline Lua expression, default is '$'.
--- * `_chunk_name`: chunk name for loaded templates, used if there
--- is an error in Lua code. Default is 'TMP'.
--- * `_debug`: if truthy, the generated code will be printed upon a render error
---
-- @string str the template string
--- @tab[opt] env the environment
--- @return `rendered template + nil + source_code`, or `nil + error + source_code`. The last
--- return value (`source_code`) is only returned if the debug option is used.
-function template.substitute(str,env)
+-- @tparam[opt] table env the environment. This table has the following special fields:
+-- @tparam[opt=nil] table env._parent continue looking up in this table (e.g. `_parent=_G`).
+-- @tparam[opt="()"] string env._brackets bracket pair that wraps inline Lua expressions.
+-- @tparam[opt="#"] string env._escape character marking Lua lines.
+-- @tparam[opt="$"] string env._inline_escape character marking inline Lua expression.
+-- @tparam[opt="TMP"] string env._chunk_name chunk name for loaded templates, used if there
+-- is an error in Lua code.
+-- @tparam[opt=false] boolean env._debug if truthy, the generated code will be printed upon a render error.
+-- @treturn[1] string render result
+-- @treturn[1] nil
+-- @treturn[1] string source_code (only if '`env._debug`' was truthy).
+-- @treturn[2] nil
+-- @treturn[2] string error message
+-- @treturn[2] string source_code (only if '`env._debug`' was truthy).
+function template.substitute(str, env)
env = env or {}
local t, err = template.compile(str, {
- chunk_name = rawget(env,"_chunk_name"),
- escape = rawget(env,"_escape"),
- inline_escape = rawget(env,"_inline_escape"),
- inline_brackets = rawget(env,"_brackets"),
- newline = nil,
- debug = rawget(env,"_debug")
+ chunk_name = rawget(env, "_chunk_name"),
+ escape = rawget(env, "_escape"),
+ inline_escape = rawget(env, "_inline_escape"),
+ inline_brackets = rawget(env, "_brackets"),
+ newline = false,
+ debug = rawget(env, "_debug")
})
if not t then return t, err end
- return t:render(env, rawget(env,"_parent"), rawget(env,"_debug"))
+ return t:render(env, rawget(env, "_parent"), rawget(env, "_debug"))
end
--- executes the previously compiled template and renders it.
@@ -12894,12 +12973,16 @@ end
-- @tab[opt] parent continue looking up in this table (e.g. `parent=_G`).
-- @bool[opt] db if thruthy, it will print the code upon a render error
-- (provided the template was compiled with the debug option).
--- @return `rendered template + nil + source_code`, or `nil + error + source_code`. The last return value
--- (`source_code`) is only returned if the template was compiled with the debug option.
+-- @treturn[1] string render result
+-- @treturn[1] nil
+-- @treturn[1] string source_code (only if '`env._debug`' was truthy).
+-- @treturn[2] nil
+-- @treturn[2] string error message
+-- @treturn[2] string source_code (only if '`env._debug`' was truthy).
-- @usage
-- local ct, err = template.compile(my_template)
-- local rendered , err = ct:render(my_env, parent)
-local render = function(self, env, parent, db)
+local function render(self, env, parent, db)
env = env or {}
if parent then -- parent is a bit silly, but for backward compatibility retained
setmetatable(env, {__index = parent})
@@ -12911,25 +12994,27 @@ local render = function(self, env, parent, db)
if self.code and db then print(self.code) end
return nil, out, self.code
end
- return table.concat(out), nil, self.code
+ return concat(out), nil, self.code
end
--- compiles the template.
-- Returns an object that can repeatedly be rendered without parsing/compiling
--- the template again.
--- The options passed in the `opts` table support the following options:
---
--- * `chunk_name`: chunk name for loaded templates, used if there
--- is an error in Lua code. Default is 'TMP'.
--- * `escape`: character marking Lua lines, default is '#'
--- * `inline_escape`: character marking inline Lua expression, default is '$'.
--- * `inline_brackets`: bracket pair that wraps inline Lua expressions, default is '()'.
--- * `newline`: string to replace newline characters, default is `nil` (not replacing newlines).
--- * `debug`: if truthy, the generated source code will be retained within the compiled template object, default is `nil`.
---
--- @string str the template string
--- @tab[opt] opts the compilation options to use
--- @return template object, or `nil + error + source_code`
+-- the template again. Preserves the line layout of the template so that line
+-- numbers in error messages should point to the correct lines in the source
+-- string.
+-- @tparam string str the template string
+-- @tparam[opt] table opts the compilation options to use. This table supports the following options:
+-- @tparam[opt="TMP"] string opts.chunk_name chunk name for loaded templates, used if there
+-- is an error in Lua code.
+-- @tparam[opt="#"] string opts.escape character marking Lua lines.
+-- @tparam[opt="$"] string opts.inline_escape character marking inline Lua expression.
+-- @tparam[opt="()"] string opts.inline_brackets bracket pair that wraps inline Lua expressions.
+-- @tparam[opt=false] boolean opts.newline if truthy, newlines will be stripped from text in the template.
+-- @tparam[opt=false] boolean opts.debug if truthy, the generated code will be printed upon a render error.
+-- @treturn[1] ct compiled template object
+-- @treturn[2] nil
+-- @treturn[2] string error message
+-- @treturn[2] string source_code
-- @usage
-- local ct, err = template.compile(my_template)
-- local rendered , err = ct:render(my_env, parent)
@@ -12940,9 +13025,9 @@ function template.compile(str, opts)
local inline_escape = opts.inline_escape or '$'
local inline_brackets = opts.inline_brackets or '()'
- local code, short = parseHashLines(str,inline_escape,inline_brackets,escape,opts.newline)
+ local code, short = parseHashLines(str, inline_escape, inline_brackets, escape, opts.newline)
local env = { __tostring = tostring }
- local fn, err = utils.load(code, chunk_name,'t',env)
+ local fn, err = utils.load(code, chunk_name, 't', env)
if not fn then return nil, err, code end
if short then
@@ -13453,7 +13538,8 @@ local operators
local _function_factories = {}
-local utils = { _VERSION = "1.13.1" }
+local utils = { _VERSION = "1.14.0" }
+
for k, v in pairs(compat) do utils[k] = v end
--- Some standard patterns
@@ -13571,7 +13657,11 @@ end
-- @param value1 Value returned if cond is truthy
-- @param value2 Value returned if cond is falsy
function utils.choose(cond, value1, value2)
- return cond and value1 or value2
+ if cond then
+ return value1
+ else
+ return value2
+ end
end
--- convert an array of values to strings.
@@ -13727,7 +13817,7 @@ end
-- non-existing values, and/or converting strings/identifiers to other values.
--
-- Calling on the object does the same, but returns a soft error; `nil + err`, if
--- the call is succesful (the key exists), it will return the value.
+-- the call is successful (the key exists), it will return the value.
--
-- When calling with varargs or an array the values will be equal to the keys.
-- The enum object is read-only.
@@ -13755,7 +13845,7 @@ end
-- },
--
-- some_method = function(self)
--- return self.ERR.OUT_OF_BOUNDS
+-- return nil, self.ERR.OUT_OF_BOUNDS
-- end,
-- }
--
@@ -14011,6 +14101,11 @@ end
--- OS functions
-- @section OS-functions
+--- Execute a shell command.
+-- This function is a copy of `compat.execute`.
+-- @class function
+-- @name utils.execute
+
--- execute a shell command and return the output.
-- This function redirects the output to tempfiles and returns the content of those files.
-- @param cmd a shell command
@@ -14121,7 +14216,7 @@ end
-- @param s The input string
-- @param re optional A Lua string pattern; defaults to '%s+'
-- @param plain optional If truthy don't use Lua patterns
--- @param n optional maximum number of elements (if there are more, the last will remian un-split)
+-- @param n optional maximum number of elements (if there are more, the last will remain un-split)
-- @return a list-like table
-- @raise error if s is not a string
-- @see splitv
@@ -14175,8 +14270,8 @@ end
-- This is useful if you have a function which is relatively expensive,
-- but you don't know in advance what values will be required, so
-- building a table upfront is wasteful/impossible.
--- @param func a function of at least one argument
--- @return a function with at least one argument, which is used as the key.
+-- @param func a function that takes exactly one argument (which later serves as the cache key) and returns a single value
+-- @return a function taking one argument and returning a single value either from the cache or by running the original input function
function utils.memoize(func)
local cache = {}
return function(k)
diff --git a/Master/texmf-dist/tex/luatex/penlight/penlight.sty b/Master/texmf-dist/tex/luatex/penlight/penlight.sty
index 7a7c94b6a77..8a0bb2c8f00 100644
--- a/Master/texmf-dist/tex/luatex/penlight/penlight.sty
+++ b/Master/texmf-dist/tex/luatex/penlight/penlight.sty
@@ -1,6 +1,6 @@
% Kale Ewasiuk (kalekje@gmail.com)
-% 2023-07-22
-% Copyright (C) 2021-2023 Kale Ewasiuk
+% 2024-09-15
+% Copyright (C) 2021-2024 Kale Ewasiuk
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the "Software"), to deal
@@ -22,7 +22,7 @@
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
% OR OTHER DEALINGS IN THE SOFTWARE.
-\ProvidesPackage{penlight}[2023-07-22]
+\ProvidesPackage{penlight}[2024-09-15]
\directlua{penlight = require'penlight'}
diff --git a/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.lua b/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.lua
index 0e948c3fe18..848c4f9709e 100644
--- a/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.lua
+++ b/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.lua
@@ -1,13 +1,13 @@
--% Kale Ewasiuk (kalekje@gmail.com)
---% 2024-08-17
---% Copyright (C) 2021-2024 Kale Ewasiuk
+--% 2025-01-18
+--% Copyright (C) 2021-2025 Kale Ewasiuk
--%
--% 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, subjdeect to the following conditions:
+--% furnished to do so, subjected to the following conditions:
--%
--% The above copyright notice and this permission notice shall be included in
--% all copies or substantial portions of the Software.
@@ -42,6 +42,8 @@ if debug ~= nil then
end
+
+
-- http://lua-users.org/wiki/SplitJoin -- todo read me!!
penlight.tex = {} -- adding a sub-module for tex related stuff
@@ -65,6 +67,17 @@ function penlight.hasval(x) -- if something has value
end
+
+function penlight._Gdot(s)
+ -- return a global with nots
+ o = _G
+ for _, a in ipairs(s:split('.')) do
+ o = o[a]
+ end
+ return o
+end
+
+
-- Some simple and helpful LaTeX functions -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- xparse defaults
@@ -182,6 +195,18 @@ function penlight.tex.pkgerror(pkg, msg1, msg2, stop)
end
+if not penlight.debug_available then
+ penlight.tex.pkgwarn('penlightplus', 'lua debug library is not available, recommend re-compiling with the --luadebug option')
+end
+
+
+function penlight.tex.errorif(exp, pkg, msg1, msg2, stop)
+ if penlight.hasval(exp) then
+ penlight.tex.pkgerror(pkg, msg1, msg2, stop)
+ end
+end
+
+
--definition helpers -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
function penlight.tex.defmacro(cs, val, g) -- , will not work if val contains undefined tokens (so pre-define them if using..)
@@ -264,6 +289,8 @@ end
-- when nesting commands, this makes it helpful to not worry about brackets
penlight.tex._NumBkts = 0
+penlight.tex._EndEnvs = {}
+
--prt(opencmd('textbf')..opencmd('texttt')..'bold typwriter'..close_bkt_cnt())
function penlight.tex.opencmd(cmd)
@@ -291,11 +318,29 @@ end
+
+
+function penlight.tex.openenv(env, opt)
+ if opt == nil then opt = '' else opt = '['..opt..']' end
+ tex.sprint('\\begin{' .. env .. '}'..opt)
+ table.insert(penlight.tex._EndEnvs, 1, '\\end{'..env..'}')
+end
+
+function penlight.tex.closeenv(num)
+ num = num or #penlight.tex._EndEnvs
+ for i=1, num do
+ tex.sprint(penlight.tex._EndEnvs[1])
+ table.remove(penlight.tex._EndEnvs, 1)
+ end
+end
+
+
+
function penlight.tex.aliasluastring(s, d)
s = s:delspace():upper():tolist()
d = d:delspace():upper():tolist()
for i, S in penlight.seq.enum(d:slice_assign(1,#s,s)) do
- if (S == 'E') or (S == 'F') then S = '' end -- E or F is fully expanded
+ if (S == 'F') then S = '' end -- F is fully expanded
penlight.tex.prtn('\\let\\plluastring'..penlight.Char(i)..'\\luastring'..S)
end
end
@@ -371,11 +416,11 @@ local number = P{"number",
function penlight.char(num)
- return string.char(string.byte("a")+num-1)
+ return string.char(string.byte("a")+tonumber(num)-1)
end
function penlight.Char(num)
- return string.char(string.byte("A")+num-1)
+ return string.char(string.byte("A")+tonumber(num)-1)
end
@@ -395,6 +440,25 @@ function str_mt.__index.gextract(s, pat) --extract a pattern from string, return
return s_extr, s_rem
end
+function str_mt.__index.gxtrct(s, pat, num, join) --extract a pattern from string, returns both
+ -- todo a variant where you can specify the number of extractions, and either list of concatenate them would be helpful
+ local l_extr = penlight.List{}
+ local s_rem = s
+ local n = 1
+ num = num or 99999
+ for e in s:gmatch(pat) do
+ l_extr = l_extr:append(e)
+ s_rem = s_rem:gsub(e,'',1)
+ if n == num then break end
+ n = n +1
+ end
+ if join then
+ l_extr = l_extr:join(join)
+ end
+ return l_extr, s_rem
+end
+
+
function str_mt.__index.gfirst(s, t) -- get the first pattern found from a table of pattern
for _, pat in pairs(t) do
if string.find(s, pat) then
@@ -456,6 +520,17 @@ function str_mt.__index.trimfl(str)
return str:sub(2,-2)
end
+function str_mt.__index.istexdim(str)
+ for _, u in pairs{'pt', 'mm', 'cm', 'in', 'ex', 'em', 'mu', 'sp'} do
+ if penlight.hasval(str:delspace():find('^%-?%d*%.?%d+'..u..'$')) then
+ return true
+ end
+ end
+ return false
+end
+
+
+
function str_mt.__index.subpar(s, r)
r = r or ' '
return (s:gsub('\\par', r))
@@ -475,6 +550,48 @@ function str_mt.__index.parsekv(s, t) -- parsekv string
return penlight.luakeys.parse(s, t)
end
+function str_mt.__index.splitstrip(s, sep, stri) --
+ sep = sep or ','
+ return penlight.List(s:split(sep)):map(function(x) return penlight.stringx.strip(x, stri) end)
+end
+
+
+function str_mt.__index.split2(s, sep1, sep2, stri) --
+ sep1 = sep1 or ','
+ sep2 = sep2 or '='
+ if stri == nil then stri = true end
+ stri = penlight.hasval(strip)
+ local splitfunc = string.split
+ if stri then
+ splitfunc = string.splitstrip
+ end
+ return penlight.List(splitfunc(s,sep1)):map(function(x) return splitfunc(x, sep2) end)
+end
+
+
+
+
+function str_mt.__index.hasnonum(s)
+ -- string only contains letters and symbols
+ --assert_string(1,s) -- todo
+ return string.find(s,'^[%D]+$') == 1
+end
+
+function str_mt.__index.hasnoalpha(s)
+ -- string only contains numbers and symbols
+ --assert_string(1,s) -- todo
+ return string.find(s,'^[%A]+$') == 1
+end
+
+function str_mt.__index.isvarlike(s)
+ -- string is like a variable, does not start with a number, then followd by letter, number, or underscore
+ --assert_string(1,s) -- todo
+ return string.find(s,'^[%a_][%w%d_]*$') == 1
+end
+
+
+
+
-- -- -- -- function stuff
function penlight.clone_function(fn)
@@ -495,6 +612,127 @@ end
+
+
+
+
+
+
+
+-- -- -- -- -- -- -- -- -- -- -- -- functions below extend the seq module
+
+
+function penlight.seq.check_neg_index(i, len, fallback)
+ i = tostring(i):delspace()
+ if i == '' then return fallback end
+ i = tonumber(i)
+ if i == nil then
+ local _ = 1*'"Attempted to use seqstr indexing with negative number, but length of list not provided"'
+ return fallback -- fallback is the number to fall back on if i isn't provided
+ end
+ len = tonumber(len)
+ if i < 0 then
+ if len == nil then
+ local _ = 1*'"Attempted to use seqstr indexing with negative number, but length of list not provided"'
+ return penlight.utils.raise("Attempted to use seqstr indexing with negative number, but length of list not provided")
+ end
+ i = len + 1 + i -- negative index
+ end
+ return i
+end
+
+penlight.seq.train_element_sep = ','
+penlight.seq.train_range_sep = ':'
+
+
+function penlight.seq.train(s, len)
+ -- parse a range given a string indexer
+ -- syntax is: s = 'i1, i2, r1:r2' where i1 and i2 are individual indexes.
+ -- r1:r2 is a range (inclusive).
+ -- a 'stride' can be given to ranges, eg. ::2 is 1,3,5,..., or 2::3 is 2,5,8,...
+ -- negative numbers can be used to index relative to the length of the table, eg, -1 -> len
+ -- if length is not given, negative indeing cannot be used
+ -- returns a penlight list of numbers
+
+ local t = penlight.List() -- list of indexes
+ local check_neg = penlight.seq.check_neg_index
+ local steps = s:split(penlight.seq.train_element_sep)
+ --penlight.wrth(steps,'abc')
+ for _, r in ipairs(steps) do
+ --penlight.wrth(r,'seq.train = '..s)
+ r = penlight.stringx.strip(r)
+ if r == '*' then -- if the string has no numbers and no :, it is a key
+ t:append(r)
+ elseif string.isvarlike(r) then -- if the string has no numbers and no :, it is a key
+ t:append(r)
+ elseif r:find(penlight.seq.train_range_sep) then
+ r = r:split(penlight.seq.train_range_sep) -- if it's a range
+ t:extend(penlight.List.range(check_neg(r[1], len, 1),
+ check_neg(r[2], len, len),
+ tonumber(r[3])))
+ else
+ t:append(check_neg(r, len))
+ end
+ end
+return t
+end
+
+function penlight.seq.itrain(s, len)
+-- iterator version of sequence-string
+ local t = penlight.seq.train(s, len)
+ local i = 0
+ return function ()
+ i = i + 1
+ if i <= #t then return t[i] end
+ end
+end
+
+
+
+function penlight.seq.tbltrain(tbl, s) -- iterate over a table using the train syntax
+ local inds = penlight.seq.train(s, #tbl) -- indexes to use
+ local star = inds:index('*')
+ if star ~= nil then
+ inds:pop(star)
+ inds:inject(penlight.tablex.kkeys(tbl), star)
+ end
+ local i = 0
+ return function ()
+ i = i + 1 -- i of indexes
+ if i <= #inds then
+ local v = tbl[inds[i]]
+ --penlight.wrth(v)
+ --if v == nil then penlight.test.asserteq(v, true) end -- todo make a generic lua error message function
+ return inds[i], v
+ end
+ end
+end
+
+
+
+
+
+function penlight.seq.prod(t1, t2)
+ -- cartesian prduct of two tables (uses ipairs)
+ local t_new = {}
+ for _, v1 in ipairs(t1) do
+ for _, v2 in ipairs(t2) do
+ t_new[#t_new + 1] = {v1, v2}
+ end
+ end
+ local i = 0
+ return function ()
+ i = i + 1
+ if i <= #t_new then return t_new[i][1], t_new[i][2] end
+ end
+end
+
+
+
+
+
+
+
-- -- -- -- -- -- -- -- -- -- -- -- functions below extend the operator module
function penlight.operator.strgt(a,b) return tostring(a) > tostring(b) end
@@ -517,9 +755,17 @@ end
+-- table stuff below
+
+function penlight.tablex.concatenate(t1,t2)
+ -- todo is this needed
+ for i=1,#t2 do
+ t1[#t1+1] = t2[i]
+ end
+ return t1
+end
--- table stuff below
function penlight.tablex.strinds(t) -- convert indices that are numbers to string indices
local t_new = {}
@@ -534,6 +780,7 @@ function penlight.tablex.strinds(t) -- convert indices that are numbers to strin
end
+
function penlight.tablex.listcontains(t, v)
return penlight.tablex.find(t, v) ~= nil
end
@@ -565,6 +812,20 @@ function penlight.tablex.fmt(t, fmt, strinds)
end
+function penlight.tablex.list2comma(t)
+ t = penlight.List(t)
+ local s = ''
+ if #t == 1 then
+ s = t[1]
+ elseif #t == 2 then
+ s = t:join(' and ')
+ elseif #t >= 3 then
+ s = t:slice(1,#t-1):join(', ')..', and '..t[#t]
+ end
+ return s
+end
+
+
function penlight.tablex.map_slice(func, T, j1, j2)
if type(j1) == 'string' then
return penlight.array2d.map_slice(func, {T}, ','..j1)[1]
@@ -576,6 +837,18 @@ end
penlight.array2d.map_slice1 = penlight.tablex.map_slice
+
+function penlight.tablex.kkeys(t)
+ local keys = {}
+ for k, _ in penlight.utils.kpairs(t) do
+ keys[#keys+1] = k
+ end
+ return keys
+end
+
+
+
+
-- todo option for multiple filters with AND logic, like the filter files??
function penlight.tablex.filterstr(t, exp, case)
-- case = case sensitive
@@ -589,6 +862,56 @@ function penlight.tablex.filterstr(t, exp, case)
end
end
+
+function penlight.tablex.train(t,seq,reind)
+ local t_new = {}
+ local num = 0
+ for k, v in penlight.seq.tbltrain(t, seq) do
+ if reind and type(v) == 'number' then
+ num = num + 1
+ k = num
+ end
+ t_new[k] = v
+ end
+ return t_new
+end
+
+
+
+function penlight.trysplitcomma(s)
+ strip = strip or false
+ if type(s) == 'number' then s = tostring(s) end
+ if type(s) == 'string' then
+ return s:splitstrip(',')
+ end
+ return s
+end
+
+
+function penlight.findfiles(kv)
+ if type(kv) == 'string' then kv = penlight.luakeys.parse(kv) end
+ kv = penlight.tablex.update({dir={'.'}, fn={'*'}, ext={''}, sub=false}, kv)
+ kv.dir = penlight.trysplitcomma(kv.dir)
+ kv.fn = penlight.trysplitcomma(kv.fn)
+ kv.ext = penlight.trysplitcomma(kv.ext)
+ --local files_all = penlight.getallfilesdirs(kv.dir, kv.sub)
+ local getfiles = penlight.dir.getfiles
+ if penlight.hasval(kv.sub) then
+ getfiles = function(dir, fn) return penlight.dir.getallfiles(dir, '*'..fn) end -- need * in front so folder does not affect result
+ end
+ local files = penlight.List{}
+ for fn, ext in penlight.seq.prod(kv.fn, kv.ext) do
+ for _, dir in ipairs(kv.dir) do
+ files:extend(getfiles(dir, fn..ext))
+ end
+ end
+ files = pl.List(penlight.tablex.keys(pl.Set(files))) -- clear duplicates
+ files = files:map(function(s) return s:gsub('\\','/') end) -- change slash for latex
+ return files
+end
+
+penlight.dir.findfiles = penlight.findfiles
+
--todo add doc
function penlight.utils.filterfiles(...)
-- f1 is a series of filtering patterns, or condition
@@ -725,11 +1048,8 @@ end
-if not penlight.debug_available then
- penlight.tex.pkgwarn('penlight', 'lua debug library is not available, recommend re-compiling with the --luadebug option')
-else
- penlight.COMP = require'pl.comprehension'.new() -- for comprehensions
-
+if penlight.debug_available then
+ penlight.COMP = penlight.comprehension.new() -- for comprehensions
local _parse_range = penlight.clone_function(penlight.array2d.parse_range)
function penlight.array2d.parse_range(s) -- edit parse range to do numpy string if no letter passed
@@ -743,6 +1063,25 @@ end
+function penlight.List:inject(l2, pos)
+ pos = pos or 1
+ if pos < 1 then
+ pos = #self + pos + 1
+ end
+ l2 = penlight.List(l2):reverse()
+ for i in l2:iter() do
+ self:insert(pos, i)
+ end
+ return self
+end
+
+
+
+
+
+
+
+
-- https://tex.stackexchange.com/questions/38150/in-lualatex-how-do-i-pass-the-content-of-an-environment-to-lua-verbatim
penlight.tex.recordedbuf = ""
@@ -772,37 +1111,57 @@ __PDFmetadata__ = {}
penlight.tex.add_xspace_intext = true
-function penlight.tex.updatePDFtable(k, v, o) -- key val overwrite
- k = k:upfirst()
+function penlight.tex.checkPDFkey(k)
+ k = k:delspace():upfirst()
+ local keys_allowed = 'Title Author Subject Date Language Keywords Publisher Copyright CopyrightURL Copyrighted Owner CertificateURL Coverage PublicationType Relation Source Doi ISBN URLlink Journaltitle Journalnumber Volume Issue Firstpage Lastpage CoverDisplayDate CoverDate Advisory BaseURL Identifier Nickname Thumbnails '
+ if not keys_allowed:find(k ..' ') then
+ penlight.tex.pkgerror('penlightplus', 'invalid PDF metadata key assigned "'..k..'"')
+ end
+ return k
+end
+
+function penlight.tex.makePDFtablekv(kv)
+ local t_new = {}
+ for k, v in pairs(penlight.luakeys.parse(kv)) do
+ k = penlight.tex.checkPDFkey(k)
+ v = penlight.tex.makePDFvarstr(v)
+ t_new[k] = v
+ end
+ return t_new
+end
+
+function penlight.tex.updatePDFtable(k, v, o) -- update pdf table
+ if o == nil then o = true end
+ k = k:strip():upfirst()
if penlight.hasval(o) or (__PDFmetadata__[k] == nil) then
- __PDFmetadata__[k] = v
+ __PDFmetadata__[penlight.tex.checkPDFkey(k)] = penlight.tex.makePDFvarstr(v)
end
end
+
penlight.tex.writePDFmetadata = function(t) -- write PDF metadata to xmpdata file
t = t or __PDFmetadata__
local str = ''
for k, v in pairs(t) do
- k = k:upfirst()
str = str..'\\'..k..'{'..v..'}'..'\n'
end
penlight.utils.writefile(tex.jobname..'.xmpdata', str)
end
-
-function penlight.tex.clear_cmds_str(s)
- return s:gsub('%s+', ' '):gsub('\\\\',' '):gsub('\\%a+',''):gsub('{',' '):gsub('}',' '):gsub('%s+',' '):strip()
-end
-
function penlight.tex.makePDFvarstr(s)
s = s:gsub('%s*\\sep%s+','\0'):gsub('%s*\\and%s+','\0') -- turn \and into \sep
+ -- todo preserve \%, \{, \}, \backslash, and \copyright
s = penlight.tex.clear_cmds_str(s)
s = s:gsub('\0','\\sep ')
--penlight.tex.help_wrt(s,'PDF var string')
return s
end
+function penlight.tex.clear_cmds_str(s)
+ return s:gsub('%s+', ' '):gsub('\\\\',' '):gsub('\\%a+',''):gsub('{',' '):gsub('}',' '):gsub('%s+',' '):strip()
+end
+
function penlight.tex.makeInTextstr(s)
local s, c_and = s:gsub('%s*\\and%s+','\0')
s = penlight.tex.clear_cmds_str(s)
@@ -819,31 +1178,11 @@ function penlight.tex.makeInTextstr(s)
return s
end
---todo decide on above or below
-function penlight.tex.list2comma(t)
- local s = ''
- if #t == 1 then
- s = t[1]
- elseif #t == 2 then
- s = t:join(' and ')
- elseif #t >= 3 then
- s = t:slice(1,#t-1):join(', ')..', and '..t[#t]
- end
- return s
-end
-function penlight.tex.split2comma(s, d)
- local t = penlight.List(s:split(d)):map(string.strip)
- penlight.tex.prt(penlight.tex.list2comma(t))
-end
-function penlight.tex.split2items(s, d)
- local t = penlight.List(s:split(d)):map(string.strip)
- for n, v in ipairs(t) do
- penlight.tex.prtn('\\item '..v)
- end
-end
+
+
function penlight.toggle_luaexpr(expr)
@@ -862,7 +1201,7 @@ function penlight.caseswitch(s, c, kv)
local sw = kvtbl[c] -- the returned switch
if sw == nil then -- if switch not found
if s == penlight.tex.xTrue then -- if star, throw error
- pl.tex.pkgerror('penlight', 'case: "'..c..'" not found in key-vals: "'..kv..'"')
+ penlight.tex.pkgerror('penlight', 'case: "'..c..'" not found in key-vals: "'..kv..'"')
sw = ''
else
sw = kvtbl['__'] or '' -- use __ as not found case
@@ -873,120 +1212,6 @@ end
-penlight.tbls = {}
-
-penlight.rec_tbl = ''
-penlight.rec_tbl_opts = {}
-
-function penlight.get_tbl_name(s)
- if s == '' then
- return penlight.rec_tbl
- end
- return s
-end
-
-function penlight.get_tbl(s)
- s = penlight.get_tbl_name(s)
- return penlight.tbls[s]
-end
-
-function penlight.get_tbl_index(s, undec)
- undec = undec or false -- flag for allowing undeclared indexing
- local tbl = ''
- local key = ''
- local s_raw = s
- if s:find('%.') then
- local tt = s:split('.')
- tbl = tt[1]
- key = tt[2]
- elseif s:find('/') then
- local tt = s:split('/')
- tbl = tt[1]
- if tbl == '' then tbl = penlight.rec_tbl end
- key = tonumber(tonumber(tt[2]))
- if key < 0 then key = #penlight.tbls[tbl]+1+key end
- else
- tbl = penlight.rec_tbl
- key = tonumber(s) or s
- if type(key) == 'number' and key < 0 then key = #penlight.tbls[tbl]+1+key end
- end
- if tbl == '' then tbl = penlight.rec_tbl end
-
- if (penlight.tbls[tbl] == nil) or ((not undec) and (penlight.tbls[tbl][key] == nil)) then
- penlight.tex.pkgerror('penlightplus', 'Invalid tbl index attempt using: "'..s_raw..'". We tried to use tbl: "' ..tbl..'" and key: "'..key..'"')
- end
- return tbl, key
-end
-
-
-function penlight.get_tbl_item(s, p) -- get item with string, p means print value
- p = p or false
- local tbl, key = penlight.get_tbl_index(s)
- local itm = penlight.tbls[tbl][key]
- if p then
- tex.sprint(tostring(itm))
- end
- return itm
-end
-
-
-function penlight.set_tbl_item(s, v)
- tbl, key = penlight.get_tbl_index(s)
- penlight.tbls[tbl][key] = v
-end
-
-function penlight.check_recent_tbl_undefault()
- local undefaults = {}
- if penlight.rec_tbl_opts ~= nil then
- local defaults = penlight.tablex.union(
- penlight.rec_tbl_opts.defs or {},
- penlight.rec_tbl_opts.defaults or {}
- )
- for k, v in pairs(penlight.tbls[penlight.rec_tbl]) do
- if defaults[k] == nil then
- undefaults[#undefaults+1] = k
- end
- end
- if penlight.hasval(undefaults) then
- penlight.tex.pkgerror('penlightplus',
- 'Invalid keys passed to tbl keyval: ' .. (', '):join(undefaults) ..
- ' ; choices are: ' .. (', '):join(penlight.tablex.keys(defaults))
- )
- end
- end
-end
-
-function penlight.def_tbl(ind, def, g)
- local _tbl, _key = penlight.get_tbl_index(ind)
- if def == '' then def = 'dtbl'.._tbl.._key end
- token.set_macro(def, tostring(penlight.tbls[_tbl][_key]), g)
-end
-
-function penlight.def_tbl_all(ind, def)
- local _tbl = penlight.get_tbl_name(ind)
- if def == '' then def = 'dtbl'.._tbl end
- for k, v in pairs(penlight.tbls[_tbl]) do
- token.set_macro(def..k, tostring(v))
- end
-end
-
--- TODO TODO TODO get error working xy def, and referene which table for key-vals
-penlight.tbl_xysep = '%s+' -- spaces separate x-y coordinates
-function penlight.def_tbl_coords(ind, def)
- local tbl, key = penlight.get_tbl_index(ind)
- local str = penlight.tbls[tbl][key]
- if def == '' then def = 'dtbl'..tbl..key end
- local x, y = str:strip():splitv(penlight.tbl_xysep)
- if (not penlight.hasval(x)) or (not penlight.hasval(y)) then
- penlight.tex.pkgerror('penlightplus', 'def_tbl_coords function could not parse coordiantes given as "'..str..'" ensure two numbers separated by space are given!', '', true)
- end
- token.set_macro(def..'x', tostring(x))
- token.set_macro(def..'y', tostring(y))
-end
-
-
-
-
@@ -1044,114 +1269,67 @@ end
--- graveyard
- --_xTrue = penlight.tex._xTrue
- --_xFalse = penlight.tex._xFalse
- --_xNoValue = penlight.tex._xNoValue
- --
- --prt = penlight.tex.prt
- --prtn = penlight.tex.prtn
- --wrt = penlight.tex.wrt
- --wrtn = penlight.tex.wrtn
- --
- --prtl = penlight.tex.prtl
- --prtt = penlight.tex.prtt
- --
- --help_wrt = penlight.tex.help_wrt
- --prt_array2d = penlight.tex.prt_array2d
- --
- --pkgwarn = penlight.tex.pkgwarn
- --pkgerror = penlight.tex.pkgerror
- --
- --defcmd = penlight.tex.defcmd
- --prvcmd = penlight.tex.prvcmd
- --newcmd = penlight.tex.newcmd
- --renewcmd = penlight.tex.renewcmd
- --deccmd = penlight.tex.deccmd
- --
- --_NumBkts = penlight.tex._NumBkts
- --opencmd = penlight.tex.opencmd
- --reset_bkt_cnt = penlight.tex.reset_bkt_cnt
- --add_bkt_cnt = penlight.tex.add_bkt_cnt
- --close_bkt_cnt = penlight.tex.close_bkt_cnt
+
+
-- graveyard
+--todo decide on above or below
--- luakeys parses individual keys as ipairs, this changes the list to a pure map
---function penlight.luakeystomap(t)
--- local t_new = {}
--- for k, v in pairs(t) do
--- if type(k) == 'number' then
--- t_new[v] = true
--- else
--- t_new[k] = v
--- end
--- end
--- return t_new
---end
---if luakeys then -- if luakeys is already loaded
--- function luakeys.parseN(s, ...)
--- local t = luakeys.parse(s,...)
--- t = penlight.luakeystomap(t)
--- return t
--- end
---end
--- might not be needed
- --local func = check_func(func)
---local function check_func(func) -- check if a function is a PE, if so, make it a function
--- if type(func) ~= 'function' then
--- return I(func)
--- end
--- return func
---end
+penlight.tex.list2comma = penlight.tablex.list2comma
--- -- -- -- -- -- --
--- -- -- -- functions below extend the array2d module
+function penlight.tex.split2comma(s, d)
+ local t = penlight.List(s:split(d)):map(string.strip)
+ penlight.tex.prt(penlight.tex.list2comma(t))
+end
+function penlight.tex.split2items(s, d)
+ local t = penlight.List(s:split(d)):map(string.strip)
+ for n, v in ipairs(t) do
+ penlight.tex.prtn('\\item '..v)
+ end
+end
---function penlight.array2d.map_slice1(func, L, i1, i2) -- map a function to a slice of an array, can use PlcExpr
--- i2 = i2 or i1
--- local len = #L
--- i1 = check_index(i1, len)
--- i2 = check_index(i2, len)
--- func = check_func(func)
--- for i in penlight.seq.range(i1,i2) do
--- L[i] = func(L[i])
--- end
--- return L
---end
- -- used this below when iter was not working..
- --i1, j1, i2, j2 = check_slice(M, i1, j1, i2, j2)
- --for i in penlight.seq.range(i1,i2) do
- -- for j in penlight.seq.range(j1,j2) do
- --end
- -- penlight may have fixed this
---local function check_index(ij, rc) -- converts array index to positive value if negative
--- if type(ij) ~= 'number' then
--- return 1
--- else
--- if ij < 0 then
--- ij = rc + ij + 1
--- elseif ij > rc then
--- ij = rc
--- elseif ij == 0 then
--- ij = 1
--- end
--- return ij
--- end
---end
---local function check_slice(M, i1, j1, i2, j2) -- ensure a slice is valid; i.e. all positive numbers
--- r, c = penlight.array2d.size(M)
--- i1 = check_index(i1 or 1, r)
--- i2 = check_index(i2 or r, r)
--- j1 = check_index(j1 or 1, c)
--- j2 = check_index(j2 or c, c)
--- return i1, j1, i2, j2
---end
+--
+--\subsection*{Splitting strings}
+--Splitting text (or a cmd) into oxford comma format via:
+--\cmd{\splittocomma[expansion level]{text}{text to split on}}:
+--
+--\begin{LTXexample}[width=0.3\linewidth]
+-- \splittocomma{ j doe }{\and}-\\
+--\splittocomma{ j doe \and s else }{\and}-\\
+--\splittocomma{ j doe \and s else \and a per }{\and}-\\
+--\splittocomma{ j doe \and s else \and a per \and f guy}{\and}-
+--
+--\def\authors{j doe \and s else \and a per \and f guy}
+--\splittocomma[o]{\authors}{\and}
+--\end{LTXexample}
+--
+--The expansion level is up to two characters, \cmd{n|o|t|f}, to control the expansion of each argument.
+--
+--You can do a similar string split but to \cmd{\item} instead of commas with \cmd{\splittoitems}
+--\begin{LTXexample}
+--\begin{itemize}
+-- \splittoitems{kale\and john}{\and}
+-- \splittoitems{kale -john -someone else}{-}
+-- \splittoitems{1,2,3,4}{,}
+--\end{itemize}
+--\end{LTXexample}
+
+
+--
+--\NewDocumentCommand{\splittocomma}{ O{nn} m m }{%
+-- \MakeluastringCommands[nn]{#1}%
+-- \luadirect{penlight.tex.split2comma(\plluastringA{#2},\plluastringB{#3})}%
+--}
+--
+--\NewDocumentCommand{\splittoitems}{ O{NN} m m }{%
+-- \MakeluastringCommands[nn]{#1}%
+-- \luadirect{penlight.tex.split2items(\plluastringA{#2},\plluastringB{#3})}%
+--}
diff --git a/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty b/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty
index 58580036b5b..eee51f29c90 100644
--- a/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty
+++ b/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty
@@ -1,6 +1,6 @@
% Kale Ewasiuk (kalekje@gmail.com)
-% 2024-08-17
-% Copyright (C) 2021-2024 Kale Ewasiuk
+% 2025-01-18
+% Copyright (C) 2021-2025 Kale Ewasiuk
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the "Software"), to deal
@@ -22,12 +22,14 @@
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
% OR OTHER DEALINGS IN THE SOFTWARE.
-\ProvidesPackage{penlightplus}[2024-08-17]
+\ProvidesPackage{penlightplus}[2025-01-18]
\RequirePackage{luacode}
\RequirePackage{luakeys}
\RequirePackage[import]{penlight}
\RequirePackage{etoolbox}
+\RequirePackage{tokcycle}
+
\DeclareOption{globals}{\luadirect{__PL_GLOBALS__ = true}}
\DeclareOption{pl}{\directlua{pl = penlight}}
@@ -40,38 +42,44 @@
\global\newcommand{\writePDFmetadata}{\luadirect{penlight.tex.writePDFmetadata()}}
-\NewDocumentCommand{\writePDFmetadatakv}{ s m }{
+\NewDocumentCommand{\writePDFmetadatakv}{ s O{f} m }{%
+\MakeluastringCommands[f]{#2}%
\IfBooleanTF{#1}{% if *, overwrite everything
\luadirect{
- __PDFmetadata__ = penlight.luakeys.parse(\luastring{#2})
- penlight.tex.writePDFmetadata()
+ __PDFmetadata__ = penlight.tex.makePDFtablekv(\plluastringA{#3})
}}{
\luadirect{
__PDFmetadata__ = __PDFmetadata__ or {}
- penlight.tablex.update(__PDFmetadata__, penlight.luakeys.parse(\luastring{#2}))
- penlight.tex.writePDFmetadata()
- }}
+ penlight.tablex.update(__PDFmetadata__, penlight.tex.makePDFtablekv(\plluastringA{#3}))
+ }}%
+ \writePDFmetadata{}%
}
+
\gdef\luastringT#1{\luastring{\unexpanded\expandafter\expandafter\expandafter{#1}}} % expand luastring twice
\global\let\luastringF\luastring % fully expanded luastring
+%
+%\xtokcycleenvironment\luastringeenv
+% {\addcytoks{##1}}
+% {\processtoks{##1}}
+% {\addcytoks[1]{##1}}
+% {\addcytoks{##1}}
+% {}
+% {\cytoks\expandafter{\expandafter\luastringO\expandafter{\the\cytoks}}}
+%
+%\def\luastringE#1{\luastringeenv#1\endluastringeenv}
+%\gdef\luastringE#1{\begin{luastringeenv#1\endluastringeenv}
+
+
+
+
% allow control over expansion of arguments to a latex function
\NewDocumentCommand{\MakeluastringCommands}{O{} m }{% #1 the desired commands #2 defaults
\luadirect{penlight.tex.aliasluastring(\luastring{#2},\luastring{#1})}%
}
-\NewDocumentCommand{\splittocomma}{ O{nn} m m }{%
- \MakeluastringCommands[nn]{#1}%
- \luadirect{penlight.tex.split2comma(\plluastringA{#2},\plluastringB{#3})}%
-}
-
-\NewDocumentCommand{\splittoitems}{ O{NN} m m }{%
- \MakeluastringCommands[nn]{#1}%
- \luadirect{penlight.tex.split2items(\plluastringA{#2},\plluastringB{#3})}%
-}
-
@@ -83,9 +91,7 @@
\newtoggle{luaexpr}\togglefalse{luaexpr}
-\begin{luacode*}
-\end{luacode*}
\NewDocumentCommand{\ifluax}{m m O{}}{% if lua expression is true do {m} if not [o]
\luadirect{penlight.toggle_luaexpr(#1)}%
@@ -108,114 +114,3 @@
-
-%%% tbls below
-
-\NewDocumentCommand{\tblnew}{m}{\luadirect{% initialize a tbl and set blank
- penlight.tbls[\luastring{#1}] = {}
- penlight.rec_tbl = \luastring{#1}
-}}
-
-\NewDocumentCommand{\tblfrkv}{m +m O{}}{\luadirect{%
- penlight.rec_tbl_opts = penlight.luakeys.parse(\luastring{#3})
- penlight.tbls[\luastring{#1}] = penlight.luakeys.parse(string.subpar(\luastring{#2}), penlight.rec_tbl_opts)
- penlight.rec_tbl = \luastring{#1}
-}}
-
-\NewDocumentCommand{\tblfrkvCD}{m +m O{}}{\tblfrkv{#1}{#2}[#3]\tblkvundefcheck\tbldefall{}{}}
-%% tbl from key-vals, then check defaults, then define all keys using default format
-\NewDocumentCommand{\tblfrkvNCD}{m +m O{}}{\tblfrkvN{#1}{#2}[#3]\tblkvundefcheck\tbldefall{}{}}
-
-\NewDocumentCommand{\tblfrkvN}{m +m O{}}{\luadirect{%
- penlight.rec_tbl_opts = penlight.luakeys.parse(\luastring{#3})
- penlight.tbls[\luastring{#1}] = penlight.luakeys.parse(string.subpar(\luastringN{#2}), penlight.rec_tbl_opts)
- penlight.rec_tbl = \luastring{#1}
-}}
-
-\NewDocumentCommand{\tblfrcsv}{m +m O{}}{\tblfrkv{#1}{#2}[naked_as_value=true,#3]}
-
-\NewDocumentCommand{\tblfrcsvN}{m +m O{}}{\tblfrkvN{#1}{#2}[naked_as_value=true,#3]}
-
-
-\NewDocumentCommand{\tblkvundefcheck}{}{\luadirect{penlight.check_recent_tbl_undefault()}}% check defaults list and throw error if foreign keys were used
-
-
-
-\NewDocumentCommand{\tblapp}{m m}{\luadirect{% append to a table (ie using integer index) with a value (second arg) # todo option for string or number
- __tbl__ = penlight.get_tbl_name(\luastring{#1})
- table.insert(penlight.tbls[__tbl__], \luastring{#2})
-}}
-
-\NewDocumentCommand{\tblcon}{m m}{\luadirect{% concatenate to a table (ie using integer index) with a list of comma separated values (second arg) #
- __tbl__ = penlight.get_tbl_name(\luastring{#1})
- for k, v in ipairs(penlight.luakeys.parse(string.subpar(\luastring{#2}), {naked_as_value=true})) do
- table.insert(penlight.tbls[__tbl__], v)
- end
-}}
-
-\NewDocumentCommand{\tbladd}{m m}{\luadirect{% add a kv pair to a table
- __tbl__, __key__ = penlight.get_tbl_index(\luastring{#1}, true)
- penlight.tbls[__tbl__][__key__] = \luastring{#2}
-}}
-
-\NewDocumentCommand{\tbladdN}{m m m}{\luadirect{% add a kv pair to a table
- __tbl__, __key__ = penlight.get_tbl_index(\luastring{#1}, true)
- penlight.tbls[__tbl__][__key__] = \luastringN{#2}
-}}
-
-
-
-
-\NewDocumentCommand{\tblchg}{ m }{\luadirect{% change recent table
- penlight.rec_tbl = \luastring{#1}
-}}
-
-
-\NewDocumentCommand{\tblget}{m}{\luadirect{% get an item
- penlight.get_tbl_item(\luastring{#1}, true)
-}}
-
-\NewDocumentCommand{\tblset}{m m}{\luadirect{% set item with {value}
- penlight.set_tbl_item(\luastring{#1}, \luastring{#2})
-}}
-
-
-\NewDocumentCommand{\tbldef}{ m m }{\luadirect{penlight.def_tbl(\luastring{#1}, \luastring{#2})}}
-
-% define a table, use * to make global definition
-\NewDocumentCommand{\tblgdef}{ m m }{\luadirect{penlight.def_tbl(\luastring{#1}, \luastring{#2}, 'global')}}
-
-\NewDocumentCommand{\tbldefall}{ m m }{\luadirect{penlight.def_tbl_all(\luastring{#1}, \luastring{#2})}}
-
-\NewDocumentCommand{\tbldefxy}{ m m }{\luadirect{penlight.def_tbl_coords(\luastring{#1}, \luastring{#2})}}% define #2x and #2y from a space delimited x-y pair
-
-\NewDocumentCommand{\tblif}{m m O{}}{\ifluax{penlight.get_tbl_item(\luastring{#1})}{#2}[#3]}
-
-\NewDocumentCommand{\tblifv}{m m O{}}{\ifluaxv{penlight.get_tbl_item(\luastring{#1})}{#2}[#3]}
-
-\NewDocumentCommand{\tblprt}{m}{\luadirect{penlight.wrth(penlight.get_tbl(\luastring{#1}),'penlightplus table: '..\luastring{#1})}}
-
-
-
-
-% legacy code, delete this
-\let\kvtblundefcheck\tblkvundefcheck
-
-\NewDocumentCommand{\tbladdo}{m m m}{\luadirect{% add a kv pair to a table
- __tbl__ = penlight.get_tbl_name(\luastring{#1})
- penlight.tbls[__tbl__][\luastring{#2}] = \luastring{#3}
-}}
-
-\NewDocumentCommand{\tbladdNo}{m m m}{\luadirect{% add a kv pair to a table
- __tbl__ = penlight.get_tbl_name(\luastring{#1})
- penlight.tbls[__tbl__][\luastring{#2}] = \luastringN{#3}
-}}
-
-\let\chgtbl\tblchg
-\let\newtbl\tblnew
-\let\gettbl\tblget
-\let\settbl\tblset
-\let\deftbl\tbldef
-\let\gdeftbl\tblgdef
-\let\iftbl\tblif
-\let\iftblv\tblifv \ No newline at end of file
diff --git a/Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua-data.lua b/Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua-data.lua
new file mode 100644
index 00000000000..0299fa6dc38
--- /dev/null
+++ b/Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua-data.lua
@@ -0,0 +1,35143 @@
+--[[
+ version = 0.1, 2025-01-19
+ author = Hans Hagen, PRAGMA-ADE, Hasselt NL, Udi Fogiel
+ copyright = PRAGMA ADE / ConTeXt Development Team
+ license = GPL v2.0
+ dataonly = true
+
+The first version of this table was generated from unicode tables but after that was
+mostly updated manual using data present in ConTeXt and elsewhere. I did my best to
+make this table as complete as needed for proper use in ConTeXt MkIV. All errors are
+mine. If you find an error or ommision, just let me know. This file is updated every
+now and then using mtx-unicode where we check against the latest unicode txt files
+(normally once per year around the tex live code freeze) and checked afterwards for
+differences. We could save some bytes by sharing variant tables but it's not worth
+the trouble. Some additional data is kept in other files.
+
+For a generic subset of the data here, run "context luatex-basics-prepare.tex" after
+adapting this file.
+
+Todo: get rid of specials = { "font", ... } in math ... we have already vectors.
+Todo: remove adobe names (move them to the glyph list, done)
+Todo: remove some never used context names (idem)
+
+This file is a derivative of char-def.lua from the ConTeXt project.
+
+]]--
+
+
+return {
+ [0x0]={d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="s"},
+ {d="b"},
+ {d="s"},
+ {d="ws"},
+ {d="b"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="b"},
+ {d="b"},
+ {d="b"},
+ {d="s"},
+ {d="ws"},
+ {d="on"},
+ {d="on"},
+ {d="et"},
+ {d="et"},
+ {d="et"},
+ {d="on"},
+ {d="on"},
+ {d="on",
+ m=0x29,
+ tc="open"},
+ {d="on",
+ m=0x28,
+ tc="close"},
+ {d="on"},
+ {d="es"},
+ {d="cs"},
+ {d="es"},
+ {d="cs"},
+ {d="cs"},
+ {d="en"},
+ {d="en"},
+ {d="en"},
+ {d="en"},
+ {d="en"},
+ {d="en"},
+ {d="en"},
+ {d="en"},
+ {d="en"},
+ {d="en"},
+ {d="cs"},
+ {d="on"},
+ {d="on",
+ m=0x3E,
+ tc="open"},
+ {d="on"},
+ {d="on",
+ m=0x3C,
+ tc="close"},
+ {d="on"},
+ {d="on"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="on",
+ m=0x5D,
+ tc="open"},
+ {d="on"},
+ {d="on",
+ m=0x5B,
+ tc="close"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="on",
+ m=0x7D,
+ tc="open"},
+ {d="on"},
+ {d="on",
+ m=0x7B,
+ tc="close"},
+ {d="on"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="b"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="bn"},
+ {d="cs"},
+ {d="on"},
+ {d="et"},
+ {d="et"},
+ {d="et"},
+ {d="et"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="l"},
+ {d="on",
+ m=0xBB,
+ tc="open"},
+ {d="on"},
+ {d="bn"},
+ {d="on"},
+ {d="on"},
+ {d="et"},
+ {d="et"},
+ {d="en"},
+ {d="en"},
+ {d="on"},
+ {d="l"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="en"},
+ {d="l"},
+ {d="on",
+ m=0xAB,
+ tc="close"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="on"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="on"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="on"},
+ {d="on"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="l"},
+ {d="l"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="l"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="on"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="nsm"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="l"},
+ {d="on"},
+ {d="on"},
+ {d="l"},
+ {d="l"},
+ [0x37A]={d="l"},
+ [0x37B]={d="l"},
+ [0x37C]={d="l"},
+ [0x37D]={d="l"},
+ [0x37E]={d="on"},
+ [0x37F]={d="l"},
+ [0x384]={d="on"},
+ [0x385]={d="on"},
+ [0x386]={d="l"},
+ [0x387]={d="on"},
+ [0x388]={d="l"},
+ [0x389]={d="l"},
+ [0x38A]={d="l"},
+ [0x38C]={d="l"},
+ [0x38E]={d="l"},
+ [0x38F]={d="l"},
+ [0x390]={d="l"},
+ [0x391]={d="l"},
+ [0x392]={d="l"},
+ [0x393]={d="l"},
+ [0x394]={d="l"},
+ [0x395]={d="l"},
+ [0x396]={d="l"},
+ [0x397]={d="l"},
+ [0x398]={d="l"},
+ [0x399]={d="l"},
+ [0x39A]={d="l"},
+ [0x39B]={d="l"},
+ [0x39C]={d="l"},
+ [0x39D]={d="l"},
+ [0x39E]={d="l"},
+ [0x39F]={d="l"},
+ [0x3A0]={d="l"},
+ [0x3A1]={d="l"},
+ [0x3A3]={d="l"},
+ [0x3A4]={d="l"},
+ [0x3A5]={d="l"},
+ [0x3A6]={d="l"},
+ [0x3A7]={d="l"},
+ [0x3A8]={d="l"},
+ [0x3A9]={d="l"},
+ [0x3AA]={d="l"},
+ [0x3AB]={d="l"},
+ [0x3AC]={d="l"},
+ [0x3AD]={d="l"},
+ [0x3AE]={d="l"},
+ [0x3AF]={d="l"},
+ [0x3B0]={d="l"},
+ [0x3B1]={d="l"},
+ [0x3B2]={d="l"},
+ [0x3B3]={d="l"},
+ [0x3B4]={d="l"},
+ [0x3B5]={d="l"},
+ [0x3B6]={d="l"},
+ [0x3B7]={d="l"},
+ [0x3B8]={d="l"},
+ [0x3B9]={d="l"},
+ [0x3BA]={d="l"},
+ [0x3BB]={d="l"},
+ [0x3BC]={d="l"},
+ [0x3BD]={d="l"},
+ [0x3BE]={d="l"},
+ [0x3BF]={d="l"},
+ [0x3C0]={d="l"},
+ [0x3C1]={d="l"},
+ [0x3C2]={d="l"},
+ [0x3C3]={d="l"},
+ [0x3C4]={d="l"},
+ [0x3C5]={d="l"},
+ [0x3C6]={d="l"},
+ [0x3C7]={d="l"},
+ [0x3C8]={d="l"},
+ [0x3C9]={d="l"},
+ [0x3CA]={d="l"},
+ [0x3CB]={d="l"},
+ [0x3CC]={d="l"},
+ [0x3CD]={d="l"},
+ [0x3CE]={d="l"},
+ [0x3CF]={d="l"},
+ [0x3D0]={d="l"},
+ [0x3D1]={d="l"},
+ [0x3D2]={d="l"},
+ [0x3D3]={d="l"},
+ [0x3D4]={d="l"},
+ [0x3D5]={d="l"},
+ [0x3D6]={d="l"},
+ [0x3D7]={d="l"},
+ [0x3D8]={d="l"},
+ [0x3D9]={d="l"},
+ [0x3DA]={d="l"},
+ [0x3DB]={d="l"},
+ [0x3DC]={d="l"},
+ [0x3DD]={d="l"},
+ [0x3DE]={d="l"},
+ [0x3DF]={d="l"},
+ [0x3E0]={d="l"},
+ [0x3E1]={d="l"},
+ [0x3E2]={d="l"},
+ [0x3E3]={d="l"},
+ [0x3E4]={d="l"},
+ [0x3E5]={d="l"},
+ [0x3E6]={d="l"},
+ [0x3E7]={d="l"},
+ [0x3E8]={d="l"},
+ [0x3E9]={d="l"},
+ [0x3EA]={d="l"},
+ [0x3EB]={d="l"},
+ [0x3EC]={d="l"},
+ [0x3ED]={d="l"},
+ [0x3EE]={d="l"},
+ [0x3EF]={d="l"},
+ [0x3F0]={d="l"},
+ [0x3F1]={d="l"},
+ [0x3F2]={d="l"},
+ [0x3F3]={d="l"},
+ [0x3F4]={d="l"},
+ [0x3F5]={d="l"},
+ [0x3F6]={d="on"},
+ [0x3F7]={d="l"},
+ [0x3F8]={d="l"},
+ [0x3F9]={d="l"},
+ [0x3FA]={d="l"},
+ [0x3FB]={d="l"},
+ [0x3FC]={d="l"},
+ [0x3FD]={d="l"},
+ [0x3FE]={d="l"},
+ [0x3FF]={d="l"},
+ [0x400]={d="l"},
+ [0x401]={d="l"},
+ [0x402]={d="l"},
+ [0x403]={d="l"},
+ [0x404]={d="l"},
+ [0x405]={d="l"},
+ [0x406]={d="l"},
+ [0x407]={d="l"},
+ [0x408]={d="l"},
+ [0x409]={d="l"},
+ [0x40A]={d="l"},
+ [0x40B]={d="l"},
+ [0x40C]={d="l"},
+ [0x40D]={d="l"},
+ [0x40E]={d="l"},
+ [0x40F]={d="l"},
+ [0x410]={d="l"},
+ [0x411]={d="l"},
+ [0x412]={d="l"},
+ [0x413]={d="l"},
+ [0x414]={d="l"},
+ [0x415]={d="l"},
+ [0x416]={d="l"},
+ [0x417]={d="l"},
+ [0x418]={d="l"},
+ [0x419]={d="l"},
+ [0x41A]={d="l"},
+ [0x41B]={d="l"},
+ [0x41C]={d="l"},
+ [0x41D]={d="l"},
+ [0x41E]={d="l"},
+ [0x41F]={d="l"},
+ [0x420]={d="l"},
+ [0x421]={d="l"},
+ [0x422]={d="l"},
+ [0x423]={d="l"},
+ [0x424]={d="l"},
+ [0x425]={d="l"},
+ [0x426]={d="l"},
+ [0x427]={d="l"},
+ [0x428]={d="l"},
+ [0x429]={d="l"},
+ [0x42A]={d="l"},
+ [0x42B]={d="l"},
+ [0x42C]={d="l"},
+ [0x42D]={d="l"},
+ [0x42E]={d="l"},
+ [0x42F]={d="l"},
+ [0x430]={d="l"},
+ [0x431]={d="l"},
+ [0x432]={d="l"},
+ [0x433]={d="l"},
+ [0x434]={d="l"},
+ [0x435]={d="l"},
+ [0x436]={d="l"},
+ [0x437]={d="l"},
+ [0x438]={d="l"},
+ [0x439]={d="l"},
+ [0x43A]={d="l"},
+ [0x43B]={d="l"},
+ [0x43C]={d="l"},
+ [0x43D]={d="l"},
+ [0x43E]={d="l"},
+ [0x43F]={d="l"},
+ [0x440]={d="l"},
+ [0x441]={d="l"},
+ [0x442]={d="l"},
+ [0x443]={d="l"},
+ [0x444]={d="l"},
+ [0x445]={d="l"},
+ [0x446]={d="l"},
+ [0x447]={d="l"},
+ [0x448]={d="l"},
+ [0x449]={d="l"},
+ [0x44A]={d="l"},
+ [0x44B]={d="l"},
+ [0x44C]={d="l"},
+ [0x44D]={d="l"},
+ [0x44E]={d="l"},
+ [0x44F]={d="l"},
+ [0x450]={d="l"},
+ [0x451]={d="l"},
+ [0x452]={d="l"},
+ [0x453]={d="l"},
+ [0x454]={d="l"},
+ [0x455]={d="l"},
+ [0x456]={d="l"},
+ [0x457]={d="l"},
+ [0x458]={d="l"},
+ [0x459]={d="l"},
+ [0x45A]={d="l"},
+ [0x45B]={d="l"},
+ [0x45C]={d="l"},
+ [0x45D]={d="l"},
+ [0x45E]={d="l"},
+ [0x45F]={d="l"},
+ [0x460]={d="l"},
+ [0x461]={d="l"},
+ [0x462]={d="l"},
+ [0x463]={d="l"},
+ [0x464]={d="l"},
+ [0x465]={d="l"},
+ [0x466]={d="l"},
+ [0x467]={d="l"},
+ [0x468]={d="l"},
+ [0x469]={d="l"},
+ [0x46A]={d="l"},
+ [0x46B]={d="l"},
+ [0x46C]={d="l"},
+ [0x46D]={d="l"},
+ [0x46E]={d="l"},
+ [0x46F]={d="l"},
+ [0x470]={d="l"},
+ [0x471]={d="l"},
+ [0x472]={d="l"},
+ [0x473]={d="l"},
+ [0x474]={d="l"},
+ [0x475]={d="l"},
+ [0x476]={d="l"},
+ [0x477]={d="l"},
+ [0x478]={d="l"},
+ [0x479]={d="l"},
+ [0x47A]={d="l"},
+ [0x47B]={d="l"},
+ [0x47C]={d="l"},
+ [0x47D]={d="l"},
+ [0x47E]={d="l"},
+ [0x47F]={d="l"},
+ [0x480]={d="l"},
+ [0x481]={d="l"},
+ [0x482]={d="l"},
+ [0x483]={d="nsm"},
+ [0x484]={d="nsm"},
+ [0x485]={d="nsm"},
+ [0x486]={d="nsm"},
+ [0x487]={d="nsm"},
+ [0x488]={d="nsm"},
+ [0x489]={d="nsm"},
+ [0x48A]={d="l"},
+ [0x48B]={d="l"},
+ [0x48C]={d="l"},
+ [0x48D]={d="l"},
+ [0x48E]={d="l"},
+ [0x48F]={d="l"},
+ [0x490]={d="l"},
+ [0x491]={d="l"},
+ [0x492]={d="l"},
+ [0x493]={d="l"},
+ [0x494]={d="l"},
+ [0x495]={d="l"},
+ [0x496]={d="l"},
+ [0x497]={d="l"},
+ [0x498]={d="l"},
+ [0x499]={d="l"},
+ [0x49A]={d="l"},
+ [0x49B]={d="l"},
+ [0x49C]={d="l"},
+ [0x49D]={d="l"},
+ [0x49E]={d="l"},
+ [0x49F]={d="l"},
+ [0x4A0]={d="l"},
+ [0x4A1]={d="l"},
+ [0x4A2]={d="l"},
+ [0x4A3]={d="l"},
+ [0x4A4]={d="l"},
+ [0x4A5]={d="l"},
+ [0x4A6]={d="l"},
+ [0x4A7]={d="l"},
+ [0x4A8]={d="l"},
+ [0x4A9]={d="l"},
+ [0x4AA]={d="l"},
+ [0x4AB]={d="l"},
+ [0x4AC]={d="l"},
+ [0x4AD]={d="l"},
+ [0x4AE]={d="l"},
+ [0x4AF]={d="l"},
+ [0x4B0]={d="l"},
+ [0x4B1]={d="l"},
+ [0x4B2]={d="l"},
+ [0x4B3]={d="l"},
+ [0x4B4]={d="l"},
+ [0x4B5]={d="l"},
+ [0x4B6]={d="l"},
+ [0x4B7]={d="l"},
+ [0x4B8]={d="l"},
+ [0x4B9]={d="l"},
+ [0x4BA]={d="l"},
+ [0x4BB]={d="l"},
+ [0x4BC]={d="l"},
+ [0x4BD]={d="l"},
+ [0x4BE]={d="l"},
+ [0x4BF]={d="l"},
+ [0x4C0]={d="l"},
+ [0x4C1]={d="l"},
+ [0x4C2]={d="l"},
+ [0x4C3]={d="l"},
+ [0x4C4]={d="l"},
+ [0x4C5]={d="l"},
+ [0x4C6]={d="l"},
+ [0x4C7]={d="l"},
+ [0x4C8]={d="l"},
+ [0x4C9]={d="l"},
+ [0x4CA]={d="l"},
+ [0x4CB]={d="l"},
+ [0x4CC]={d="l"},
+ [0x4CD]={d="l"},
+ [0x4CE]={d="l"},
+ [0x4CF]={d="l"},
+ [0x4D0]={d="l"},
+ [0x4D1]={d="l"},
+ [0x4D2]={d="l"},
+ [0x4D3]={d="l"},
+ [0x4D4]={d="l"},
+ [0x4D5]={d="l"},
+ [0x4D6]={d="l"},
+ [0x4D7]={d="l"},
+ [0x4D8]={d="l"},
+ [0x4D9]={d="l"},
+ [0x4DA]={d="l"},
+ [0x4DB]={d="l"},
+ [0x4DC]={d="l"},
+ [0x4DD]={d="l"},
+ [0x4DE]={d="l"},
+ [0x4DF]={d="l"},
+ [0x4E0]={d="l"},
+ [0x4E1]={d="l"},
+ [0x4E2]={d="l"},
+ [0x4E3]={d="l"},
+ [0x4E4]={d="l"},
+ [0x4E5]={d="l"},
+ [0x4E6]={d="l"},
+ [0x4E7]={d="l"},
+ [0x4E8]={d="l"},
+ [0x4E9]={d="l"},
+ [0x4EA]={d="l"},
+ [0x4EB]={d="l"},
+ [0x4EC]={d="l"},
+ [0x4ED]={d="l"},
+ [0x4EE]={d="l"},
+ [0x4EF]={d="l"},
+ [0x4F0]={d="l"},
+ [0x4F1]={d="l"},
+ [0x4F2]={d="l"},
+ [0x4F3]={d="l"},
+ [0x4F4]={d="l"},
+ [0x4F5]={d="l"},
+ [0x4F6]={d="l"},
+ [0x4F7]={d="l"},
+ [0x4F8]={d="l"},
+ [0x4F9]={d="l"},
+ [0x4FA]={d="l"},
+ [0x4FB]={d="l"},
+ [0x4FC]={d="l"},
+ [0x4FD]={d="l"},
+ [0x4FE]={d="l"},
+ [0x4FF]={d="l"},
+ [0x500]={d="l"},
+ [0x501]={d="l"},
+ [0x502]={d="l"},
+ [0x503]={d="l"},
+ [0x504]={d="l"},
+ [0x505]={d="l"},
+ [0x506]={d="l"},
+ [0x507]={d="l"},
+ [0x508]={d="l"},
+ [0x509]={d="l"},
+ [0x50A]={d="l"},
+ [0x50B]={d="l"},
+ [0x50C]={d="l"},
+ [0x50D]={d="l"},
+ [0x50E]={d="l"},
+ [0x50F]={d="l"},
+ [0x510]={d="l"},
+ [0x511]={d="l"},
+ [0x512]={d="l"},
+ [0x513]={d="l"},
+ [0x514]={d="l"},
+ [0x515]={d="l"},
+ [0x516]={d="l"},
+ [0x517]={d="l"},
+ [0x518]={d="l"},
+ [0x519]={d="l"},
+ [0x51A]={d="l"},
+ [0x51B]={d="l"},
+ [0x51C]={d="l"},
+ [0x51D]={d="l"},
+ [0x51E]={d="l"},
+ [0x51F]={d="l"},
+ [0x520]={d="l"},
+ [0x521]={d="l"},
+ [0x522]={d="l"},
+ [0x523]={d="l"},
+ [0x524]={d="l"},
+ [0x525]={d="l"},
+ [0x526]={d="l"},
+ [0x527]={d="l"},
+ [0x528]={d="l"},
+ [0x529]={d="l"},
+ [0x52A]={d="l"},
+ [0x52B]={d="l"},
+ [0x52C]={d="l"},
+ [0x52D]={d="l"},
+ [0x52E]={d="l"},
+ [0x52F]={d="l"},
+ [0x531]={d="l"},
+ [0x532]={d="l"},
+ [0x533]={d="l"},
+ [0x534]={d="l"},
+ [0x535]={d="l"},
+ [0x536]={d="l"},
+ [0x537]={d="l"},
+ [0x538]={d="l"},
+ [0x539]={d="l"},
+ [0x53A]={d="l"},
+ [0x53B]={d="l"},
+ [0x53C]={d="l"},
+ [0x53D]={d="l"},
+ [0x53E]={d="l"},
+ [0x53F]={d="l"},
+ [0x540]={d="l"},
+ [0x541]={d="l"},
+ [0x542]={d="l"},
+ [0x543]={d="l"},
+ [0x544]={d="l"},
+ [0x545]={d="l"},
+ [0x546]={d="l"},
+ [0x547]={d="l"},
+ [0x548]={d="l"},
+ [0x549]={d="l"},
+ [0x54A]={d="l"},
+ [0x54B]={d="l"},
+ [0x54C]={d="l"},
+ [0x54D]={d="l"},
+ [0x54E]={d="l"},
+ [0x54F]={d="l"},
+ [0x550]={d="l"},
+ [0x551]={d="l"},
+ [0x552]={d="l"},
+ [0x553]={d="l"},
+ [0x554]={d="l"},
+ [0x555]={d="l"},
+ [0x556]={d="l"},
+ [0x559]={d="l"},
+ [0x55A]={d="l"},
+ [0x55B]={d="l"},
+ [0x55C]={d="l"},
+ [0x55D]={d="l"},
+ [0x55E]={d="l"},
+ [0x55F]={d="l"},
+ [0x560]={d="l"},
+ [0x561]={d="l"},
+ [0x562]={d="l"},
+ [0x563]={d="l"},
+ [0x564]={d="l"},
+ [0x565]={d="l"},
+ [0x566]={d="l"},
+ [0x567]={d="l"},
+ [0x568]={d="l"},
+ [0x569]={d="l"},
+ [0x56A]={d="l"},
+ [0x56B]={d="l"},
+ [0x56C]={d="l"},
+ [0x56D]={d="l"},
+ [0x56E]={d="l"},
+ [0x56F]={d="l"},
+ [0x570]={d="l"},
+ [0x571]={d="l"},
+ [0x572]={d="l"},
+ [0x573]={d="l"},
+ [0x574]={d="l"},
+ [0x575]={d="l"},
+ [0x576]={d="l"},
+ [0x577]={d="l"},
+ [0x578]={d="l"},
+ [0x579]={d="l"},
+ [0x57A]={d="l"},
+ [0x57B]={d="l"},
+ [0x57C]={d="l"},
+ [0x57D]={d="l"},
+ [0x57E]={d="l"},
+ [0x57F]={d="l"},
+ [0x580]={d="l"},
+ [0x581]={d="l"},
+ [0x582]={d="l"},
+ [0x583]={d="l"},
+ [0x584]={d="l"},
+ [0x585]={d="l"},
+ [0x586]={d="l"},
+ [0x587]={d="l"},
+ [0x588]={d="l"},
+ [0x589]={d="l"},
+ [0x58A]={d="on"},
+ [0x58D]={d="on"},
+ [0x58E]={d="on"},
+ [0x58F]={d="et"},
+ [0x591]={d="nsm"},
+ [0x592]={d="nsm"},
+ [0x593]={d="nsm"},
+ [0x594]={d="nsm"},
+ [0x595]={d="nsm"},
+ [0x596]={d="nsm"},
+ [0x597]={d="nsm"},
+ [0x598]={d="nsm"},
+ [0x599]={d="nsm"},
+ [0x59A]={d="nsm"},
+ [0x59B]={d="nsm"},
+ [0x59C]={d="nsm"},
+ [0x59D]={d="nsm"},
+ [0x59E]={d="nsm"},
+ [0x59F]={d="nsm"},
+ [0x5A0]={d="nsm"},
+ [0x5A1]={d="nsm"},
+ [0x5A2]={d="nsm"},
+ [0x5A3]={d="nsm"},
+ [0x5A4]={d="nsm"},
+ [0x5A5]={d="nsm"},
+ [0x5A6]={d="nsm"},
+ [0x5A7]={d="nsm"},
+ [0x5A8]={d="nsm"},
+ [0x5A9]={d="nsm"},
+ [0x5AA]={d="nsm"},
+ [0x5AB]={d="nsm"},
+ [0x5AC]={d="nsm"},
+ [0x5AD]={d="nsm"},
+ [0x5AE]={d="nsm"},
+ [0x5AF]={d="nsm"},
+ [0x5B0]={d="nsm"},
+ [0x5B1]={d="nsm"},
+ [0x5B2]={d="nsm"},
+ [0x5B3]={d="nsm"},
+ [0x5B4]={d="nsm"},
+ [0x5B5]={d="nsm"},
+ [0x5B6]={d="nsm"},
+ [0x5B7]={d="nsm"},
+ [0x5B8]={d="nsm"},
+ [0x5B9]={d="nsm"},
+ [0x5BA]={d="nsm"},
+ [0x5BB]={d="nsm"},
+ [0x5BC]={d="nsm"},
+ [0x5BD]={d="nsm"},
+ [0x5BE]={d="r"},
+ [0x5BF]={d="nsm"},
+ [0x5C0]={d="r"},
+ [0x5C1]={d="nsm"},
+ [0x5C2]={d="nsm"},
+ [0x5C3]={d="r"},
+ [0x5C4]={d="nsm"},
+ [0x5C5]={d="nsm"},
+ [0x5C6]={d="r"},
+ [0x5C7]={d="nsm"},
+ [0x5D0]={d="r"},
+ [0x5D1]={d="r"},
+ [0x5D2]={d="r"},
+ [0x5D3]={d="r"},
+ [0x5D4]={d="r"},
+ [0x5D5]={d="r"},
+ [0x5D6]={d="r"},
+ [0x5D7]={d="r"},
+ [0x5D8]={d="r"},
+ [0x5D9]={d="r"},
+ [0x5DA]={d="r"},
+ [0x5DB]={d="r"},
+ [0x5DC]={d="r"},
+ [0x5DD]={d="r"},
+ [0x5DE]={d="r"},
+ [0x5DF]={d="r"},
+ [0x5E0]={d="r"},
+ [0x5E1]={d="r"},
+ [0x5E2]={d="r"},
+ [0x5E3]={d="r"},
+ [0x5E4]={d="r"},
+ [0x5E5]={d="r"},
+ [0x5E6]={d="r"},
+ [0x5E7]={d="r"},
+ [0x5E8]={d="r"},
+ [0x5E9]={d="r"},
+ [0x5EA]={d="r"},
+ [0x5EF]={d="r"},
+ [0x5F0]={d="r"},
+ [0x5F1]={d="r"},
+ [0x5F2]={d="r"},
+ [0x5F3]={d="r"},
+ [0x5F4]={d="r"},
+ [0x600]={d="an"},
+ [0x601]={d="an"},
+ [0x602]={d="an"},
+ [0x603]={d="an"},
+ [0x604]={d="an"},
+ [0x605]={d="an"},
+ [0x606]={d="on"},
+ [0x607]={d="on"},
+ [0x608]={d="al"},
+ [0x609]={d="et"},
+ [0x60A]={d="et"},
+ [0x60B]={d="al"},
+ [0x60C]={d="cs"},
+ [0x60D]={d="al"},
+ [0x60E]={d="on"},
+ [0x60F]={d="on"},
+ [0x610]={d="nsm"},
+ [0x611]={d="nsm"},
+ [0x612]={d="nsm"},
+ [0x613]={d="nsm"},
+ [0x614]={d="nsm"},
+ [0x615]={d="nsm"},
+ [0x616]={d="nsm"},
+ [0x617]={d="nsm"},
+ [0x618]={d="nsm"},
+ [0x619]={d="nsm"},
+ [0x61A]={d="nsm"},
+ [0x61B]={d="al"},
+ [0x61C]={d="al"},
+ [0x61D]={d="al"},
+ [0x61E]={d="al"},
+ [0x61F]={d="al"},
+ [0x620]={d="al"},
+ [0x621]={d="al"},
+ [0x622]={d="al"},
+ [0x623]={d="al"},
+ [0x624]={d="al"},
+ [0x625]={d="al"},
+ [0x626]={d="al"},
+ [0x627]={d="al"},
+ [0x628]={d="al"},
+ [0x629]={d="al"},
+ [0x62A]={d="al"},
+ [0x62B]={d="al"},
+ [0x62C]={d="al"},
+ [0x62D]={d="al"},
+ [0x62E]={d="al"},
+ [0x62F]={d="al"},
+ [0x630]={d="al"},
+ [0x631]={d="al"},
+ [0x632]={d="al"},
+ [0x633]={d="al"},
+ [0x634]={d="al"},
+ [0x635]={d="al"},
+ [0x636]={d="al"},
+ [0x637]={d="al"},
+ [0x638]={d="al"},
+ [0x639]={d="al"},
+ [0x63A]={d="al"},
+ [0x63B]={d="al"},
+ [0x63C]={d="al"},
+ [0x63D]={d="al"},
+ [0x63E]={d="al"},
+ [0x63F]={d="al"},
+ [0x640]={d="al"},
+ [0x641]={d="al"},
+ [0x642]={d="al"},
+ [0x643]={d="al"},
+ [0x644]={d="al"},
+ [0x645]={d="al"},
+ [0x646]={d="al"},
+ [0x647]={d="al"},
+ [0x648]={d="al"},
+ [0x649]={d="al"},
+ [0x64A]={d="al"},
+ [0x64B]={d="nsm"},
+ [0x64C]={d="nsm"},
+ [0x64D]={d="nsm"},
+ [0x64E]={d="nsm"},
+ [0x64F]={d="nsm"},
+ [0x650]={d="nsm"},
+ [0x651]={d="nsm"},
+ [0x652]={d="nsm"},
+ [0x653]={d="nsm"},
+ [0x654]={d="nsm"},
+ [0x655]={d="nsm"},
+ [0x656]={d="nsm"},
+ [0x657]={d="nsm"},
+ [0x658]={d="nsm"},
+ [0x659]={d="nsm"},
+ [0x65A]={d="nsm"},
+ [0x65B]={d="nsm"},
+ [0x65C]={d="nsm"},
+ [0x65D]={d="nsm"},
+ [0x65E]={d="nsm"},
+ [0x65F]={d="nsm"},
+ [0x660]={d="an"},
+ [0x661]={d="an"},
+ [0x662]={d="an"},
+ [0x663]={d="an"},
+ [0x664]={d="an"},
+ [0x665]={d="an"},
+ [0x666]={d="an"},
+ [0x667]={d="an"},
+ [0x668]={d="an"},
+ [0x669]={d="an"},
+ [0x66A]={d="et"},
+ [0x66B]={d="an"},
+ [0x66C]={d="an"},
+ [0x66D]={d="al"},
+ [0x66E]={d="al"},
+ [0x66F]={d="al"},
+ [0x670]={d="nsm"},
+ [0x671]={d="al"},
+ [0x672]={d="al"},
+ [0x673]={d="al"},
+ [0x674]={d="al"},
+ [0x675]={d="al"},
+ [0x676]={d="al"},
+ [0x677]={d="al"},
+ [0x678]={d="al"},
+ [0x679]={d="al"},
+ [0x67A]={d="al"},
+ [0x67B]={d="al"},
+ [0x67C]={d="al"},
+ [0x67D]={d="al"},
+ [0x67E]={d="al"},
+ [0x67F]={d="al"},
+ [0x680]={d="al"},
+ [0x681]={d="al"},
+ [0x682]={d="al"},
+ [0x683]={d="al"},
+ [0x684]={d="al"},
+ [0x685]={d="al"},
+ [0x686]={d="al"},
+ [0x687]={d="al"},
+ [0x688]={d="al"},
+ [0x689]={d="al"},
+ [0x68A]={d="al"},
+ [0x68B]={d="al"},
+ [0x68C]={d="al"},
+ [0x68D]={d="al"},
+ [0x68E]={d="al"},
+ [0x68F]={d="al"},
+ [0x690]={d="al"},
+ [0x691]={d="al"},
+ [0x692]={d="al"},
+ [0x693]={d="al"},
+ [0x694]={d="al"},
+ [0x695]={d="al"},
+ [0x696]={d="al"},
+ [0x697]={d="al"},
+ [0x698]={d="al"},
+ [0x699]={d="al"},
+ [0x69A]={d="al"},
+ [0x69B]={d="al"},
+ [0x69C]={d="al"},
+ [0x69D]={d="al"},
+ [0x69E]={d="al"},
+ [0x69F]={d="al"},
+ [0x6A0]={d="al"},
+ [0x6A1]={d="al"},
+ [0x6A2]={d="al"},
+ [0x6A3]={d="al"},
+ [0x6A4]={d="al"},
+ [0x6A5]={d="al"},
+ [0x6A6]={d="al"},
+ [0x6A7]={d="al"},
+ [0x6A8]={d="al"},
+ [0x6A9]={d="al"},
+ [0x6AA]={d="al"},
+ [0x6AB]={d="al"},
+ [0x6AC]={d="al"},
+ [0x6AD]={d="al"},
+ [0x6AE]={d="al"},
+ [0x6AF]={d="al"},
+ [0x6B0]={d="al"},
+ [0x6B1]={d="al"},
+ [0x6B2]={d="al"},
+ [0x6B3]={d="al"},
+ [0x6B4]={d="al"},
+ [0x6B5]={d="al"},
+ [0x6B6]={d="al"},
+ [0x6B7]={d="al"},
+ [0x6B8]={d="al"},
+ [0x6B9]={d="al"},
+ [0x6BA]={d="al"},
+ [0x6BB]={d="al"},
+ [0x6BC]={d="al"},
+ [0x6BD]={d="al"},
+ [0x6BE]={d="al"},
+ [0x6BF]={d="al"},
+ [0x6C0]={d="al"},
+ [0x6C1]={d="al"},
+ [0x6C2]={d="al"},
+ [0x6C3]={d="al"},
+ [0x6C4]={d="al"},
+ [0x6C5]={d="al"},
+ [0x6C6]={d="al"},
+ [0x6C7]={d="al"},
+ [0x6C8]={d="al"},
+ [0x6C9]={d="al"},
+ [0x6CA]={d="al"},
+ [0x6CB]={d="al"},
+ [0x6CC]={d="al"},
+ [0x6CD]={d="al"},
+ [0x6CE]={d="al"},
+ [0x6CF]={d="al"},
+ [0x6D0]={d="al"},
+ [0x6D1]={d="al"},
+ [0x6D2]={d="al"},
+ [0x6D3]={d="al"},
+ [0x6D4]={d="al"},
+ [0x6D5]={d="al"},
+ [0x6D6]={d="nsm"},
+ [0x6D7]={d="nsm"},
+ [0x6D8]={d="nsm"},
+ [0x6D9]={d="nsm"},
+ [0x6DA]={d="nsm"},
+ [0x6DB]={d="nsm"},
+ [0x6DC]={d="nsm"},
+ [0x6DD]={d="an"},
+ [0x6DE]={d="on"},
+ [0x6DF]={d="nsm"},
+ [0x6E0]={d="nsm"},
+ [0x6E1]={d="nsm"},
+ [0x6E2]={d="nsm"},
+ [0x6E3]={d="nsm"},
+ [0x6E4]={d="nsm"},
+ [0x6E5]={d="al"},
+ [0x6E6]={d="al"},
+ [0x6E7]={d="nsm"},
+ [0x6E8]={d="nsm"},
+ [0x6E9]={d="on"},
+ [0x6EA]={d="nsm"},
+ [0x6EB]={d="nsm"},
+ [0x6EC]={d="nsm"},
+ [0x6ED]={d="nsm"},
+ [0x6EE]={d="al"},
+ [0x6EF]={d="al"},
+ [0x6F0]={d="en"},
+ [0x6F1]={d="en"},
+ [0x6F2]={d="en"},
+ [0x6F3]={d="en"},
+ [0x6F4]={d="en"},
+ [0x6F5]={d="en"},
+ [0x6F6]={d="en"},
+ [0x6F7]={d="en"},
+ [0x6F8]={d="en"},
+ [0x6F9]={d="en"},
+ [0x6FA]={d="al"},
+ [0x6FB]={d="al"},
+ [0x6FC]={d="al"},
+ [0x6FD]={d="al"},
+ [0x6FE]={d="al"},
+ [0x6FF]={d="al"},
+ [0x700]={d="al"},
+ [0x701]={d="al"},
+ [0x702]={d="al"},
+ [0x703]={d="al"},
+ [0x704]={d="al"},
+ [0x705]={d="al"},
+ [0x706]={d="al"},
+ [0x707]={d="al"},
+ [0x708]={d="al"},
+ [0x709]={d="al"},
+ [0x70A]={d="al"},
+ [0x70B]={d="al"},
+ [0x70C]={d="al"},
+ [0x70D]={d="al"},
+ [0x70F]={d="al"},
+ [0x710]={d="al"},
+ [0x711]={d="nsm"},
+ [0x712]={d="al"},
+ [0x713]={d="al"},
+ [0x714]={d="al"},
+ [0x715]={d="al"},
+ [0x716]={d="al"},
+ [0x717]={d="al"},
+ [0x718]={d="al"},
+ [0x719]={d="al"},
+ [0x71A]={d="al"},
+ [0x71B]={d="al"},
+ [0x71C]={d="al"},
+ [0x71D]={d="al"},
+ [0x71E]={d="al"},
+ [0x71F]={d="al"},
+ [0x720]={d="al"},
+ [0x721]={d="al"},
+ [0x722]={d="al"},
+ [0x723]={d="al"},
+ [0x724]={d="al"},
+ [0x725]={d="al"},
+ [0x726]={d="al"},
+ [0x727]={d="al"},
+ [0x728]={d="al"},
+ [0x729]={d="al"},
+ [0x72A]={d="al"},
+ [0x72B]={d="al"},
+ [0x72C]={d="al"},
+ [0x72D]={d="al"},
+ [0x72E]={d="al"},
+ [0x72F]={d="al"},
+ [0x730]={d="nsm"},
+ [0x731]={d="nsm"},
+ [0x732]={d="nsm"},
+ [0x733]={d="nsm"},
+ [0x734]={d="nsm"},
+ [0x735]={d="nsm"},
+ [0x736]={d="nsm"},
+ [0x737]={d="nsm"},
+ [0x738]={d="nsm"},
+ [0x739]={d="nsm"},
+ [0x73A]={d="nsm"},
+ [0x73B]={d="nsm"},
+ [0x73C]={d="nsm"},
+ [0x73D]={d="nsm"},
+ [0x73E]={d="nsm"},
+ [0x73F]={d="nsm"},
+ [0x740]={d="nsm"},
+ [0x741]={d="nsm"},
+ [0x742]={d="nsm"},
+ [0x743]={d="nsm"},
+ [0x744]={d="nsm"},
+ [0x745]={d="nsm"},
+ [0x746]={d="nsm"},
+ [0x747]={d="nsm"},
+ [0x748]={d="nsm"},
+ [0x749]={d="nsm"},
+ [0x74A]={d="nsm"},
+ [0x74D]={d="al"},
+ [0x74E]={d="al"},
+ [0x74F]={d="al"},
+ [0x750]={d="al"},
+ [0x751]={d="al"},
+ [0x752]={d="al"},
+ [0x753]={d="al"},
+ [0x754]={d="al"},
+ [0x755]={d="al"},
+ [0x756]={d="al"},
+ [0x757]={d="al"},
+ [0x758]={d="al"},
+ [0x759]={d="al"},
+ [0x75A]={d="al"},
+ [0x75B]={d="al"},
+ [0x75C]={d="al"},
+ [0x75D]={d="al"},
+ [0x75E]={d="al"},
+ [0x75F]={d="al"},
+ [0x760]={d="al"},
+ [0x761]={d="al"},
+ [0x762]={d="al"},
+ [0x763]={d="al"},
+ [0x764]={d="al"},
+ [0x765]={d="al"},
+ [0x766]={d="al"},
+ [0x767]={d="al"},
+ [0x768]={d="al"},
+ [0x769]={d="al"},
+ [0x76A]={d="al"},
+ [0x76B]={d="al"},
+ [0x76C]={d="al"},
+ [0x76D]={d="al"},
+ [0x76E]={d="al"},
+ [0x76F]={d="al"},
+ [0x770]={d="al"},
+ [0x771]={d="al"},
+ [0x772]={d="al"},
+ [0x773]={d="al"},
+ [0x774]={d="al"},
+ [0x775]={d="al"},
+ [0x776]={d="al"},
+ [0x777]={d="al"},
+ [0x778]={d="al"},
+ [0x779]={d="al"},
+ [0x77A]={d="al"},
+ [0x77B]={d="al"},
+ [0x77C]={d="al"},
+ [0x77D]={d="al"},
+ [0x77E]={d="al"},
+ [0x77F]={d="al"},
+ [0x780]={d="al"},
+ [0x781]={d="al"},
+ [0x782]={d="al"},
+ [0x783]={d="al"},
+ [0x784]={d="al"},
+ [0x785]={d="al"},
+ [0x786]={d="al"},
+ [0x787]={d="al"},
+ [0x788]={d="al"},
+ [0x789]={d="al"},
+ [0x78A]={d="al"},
+ [0x78B]={d="al"},
+ [0x78C]={d="al"},
+ [0x78D]={d="al"},
+ [0x78E]={d="al"},
+ [0x78F]={d="al"},
+ [0x790]={d="al"},
+ [0x791]={d="al"},
+ [0x792]={d="al"},
+ [0x793]={d="al"},
+ [0x794]={d="al"},
+ [0x795]={d="al"},
+ [0x796]={d="al"},
+ [0x797]={d="al"},
+ [0x798]={d="al"},
+ [0x799]={d="al"},
+ [0x79A]={d="al"},
+ [0x79B]={d="al"},
+ [0x79C]={d="al"},
+ [0x79D]={d="al"},
+ [0x79E]={d="al"},
+ [0x79F]={d="al"},
+ [0x7A0]={d="al"},
+ [0x7A1]={d="al"},
+ [0x7A2]={d="al"},
+ [0x7A3]={d="al"},
+ [0x7A4]={d="al"},
+ [0x7A5]={d="al"},
+ [0x7A6]={d="nsm"},
+ [0x7A7]={d="nsm"},
+ [0x7A8]={d="nsm"},
+ [0x7A9]={d="nsm"},
+ [0x7AA]={d="nsm"},
+ [0x7AB]={d="nsm"},
+ [0x7AC]={d="nsm"},
+ [0x7AD]={d="nsm"},
+ [0x7AE]={d="nsm"},
+ [0x7AF]={d="nsm"},
+ [0x7B0]={d="nsm"},
+ [0x7B1]={d="al"},
+ [0x7C0]={d="r"},
+ [0x7C1]={d="r"},
+ [0x7C2]={d="r"},
+ [0x7C3]={d="r"},
+ [0x7C4]={d="r"},
+ [0x7C5]={d="r"},
+ [0x7C6]={d="r"},
+ [0x7C7]={d="r"},
+ [0x7C8]={d="r"},
+ [0x7C9]={d="r"},
+ [0x7CA]={d="r"},
+ [0x7CB]={d="r"},
+ [0x7CC]={d="r"},
+ [0x7CD]={d="r"},
+ [0x7CE]={d="r"},
+ [0x7CF]={d="r"},
+ [0x7D0]={d="r"},
+ [0x7D1]={d="r"},
+ [0x7D2]={d="r"},
+ [0x7D3]={d="r"},
+ [0x7D4]={d="r"},
+ [0x7D5]={d="r"},
+ [0x7D6]={d="r"},
+ [0x7D7]={d="r"},
+ [0x7D8]={d="r"},
+ [0x7D9]={d="r"},
+ [0x7DA]={d="r"},
+ [0x7DB]={d="r"},
+ [0x7DC]={d="r"},
+ [0x7DD]={d="r"},
+ [0x7DE]={d="r"},
+ [0x7DF]={d="r"},
+ [0x7E0]={d="r"},
+ [0x7E1]={d="r"},
+ [0x7E2]={d="r"},
+ [0x7E3]={d="r"},
+ [0x7E4]={d="r"},
+ [0x7E5]={d="r"},
+ [0x7E6]={d="r"},
+ [0x7E7]={d="r"},
+ [0x7E8]={d="r"},
+ [0x7E9]={d="r"},
+ [0x7EA]={d="r"},
+ [0x7EB]={d="nsm"},
+ [0x7EC]={d="nsm"},
+ [0x7ED]={d="nsm"},
+ [0x7EE]={d="nsm"},
+ [0x7EF]={d="nsm"},
+ [0x7F0]={d="nsm"},
+ [0x7F1]={d="nsm"},
+ [0x7F2]={d="nsm"},
+ [0x7F3]={d="nsm"},
+ [0x7F4]={d="r"},
+ [0x7F5]={d="r"},
+ [0x7F6]={d="on"},
+ [0x7F7]={d="on"},
+ [0x7F8]={d="on"},
+ [0x7F9]={d="on"},
+ [0x7FA]={d="r"},
+ [0x7FD]={d="nsm"},
+ [0x7FE]={d="r"},
+ [0x7FF]={d="r"},
+ [0x800]={d="r"},
+ [0x801]={d="r"},
+ [0x802]={d="r"},
+ [0x803]={d="r"},
+ [0x804]={d="r"},
+ [0x805]={d="r"},
+ [0x806]={d="r"},
+ [0x807]={d="r"},
+ [0x808]={d="r"},
+ [0x809]={d="r"},
+ [0x80A]={d="r"},
+ [0x80B]={d="r"},
+ [0x80C]={d="r"},
+ [0x80D]={d="r"},
+ [0x80E]={d="r"},
+ [0x80F]={d="r"},
+ [0x810]={d="r"},
+ [0x811]={d="r"},
+ [0x812]={d="r"},
+ [0x813]={d="r"},
+ [0x814]={d="r"},
+ [0x815]={d="r"},
+ [0x816]={d="nsm"},
+ [0x817]={d="nsm"},
+ [0x818]={d="nsm"},
+ [0x819]={d="nsm"},
+ [0x81A]={d="r"},
+ [0x81B]={d="nsm"},
+ [0x81C]={d="nsm"},
+ [0x81D]={d="nsm"},
+ [0x81E]={d="nsm"},
+ [0x81F]={d="nsm"},
+ [0x820]={d="nsm"},
+ [0x821]={d="nsm"},
+ [0x822]={d="nsm"},
+ [0x823]={d="nsm"},
+ [0x824]={d="r"},
+ [0x825]={d="nsm"},
+ [0x826]={d="nsm"},
+ [0x827]={d="nsm"},
+ [0x828]={d="r"},
+ [0x829]={d="nsm"},
+ [0x82A]={d="nsm"},
+ [0x82B]={d="nsm"},
+ [0x82C]={d="nsm"},
+ [0x82D]={d="nsm"},
+ [0x830]={d="r"},
+ [0x831]={d="r"},
+ [0x832]={d="r"},
+ [0x833]={d="r"},
+ [0x834]={d="r"},
+ [0x835]={d="r"},
+ [0x836]={d="r"},
+ [0x837]={d="r"},
+ [0x838]={d="r"},
+ [0x839]={d="r"},
+ [0x83A]={d="r"},
+ [0x83B]={d="r"},
+ [0x83C]={d="r"},
+ [0x83D]={d="r"},
+ [0x83E]={d="r"},
+ [0x840]={d="r"},
+ [0x841]={d="r"},
+ [0x842]={d="r"},
+ [0x843]={d="r"},
+ [0x844]={d="r"},
+ [0x845]={d="r"},
+ [0x846]={d="r"},
+ [0x847]={d="r"},
+ [0x848]={d="r"},
+ [0x849]={d="r"},
+ [0x84A]={d="r"},
+ [0x84B]={d="r"},
+ [0x84C]={d="r"},
+ [0x84D]={d="r"},
+ [0x84E]={d="r"},
+ [0x84F]={d="r"},
+ [0x850]={d="r"},
+ [0x851]={d="r"},
+ [0x852]={d="r"},
+ [0x853]={d="r"},
+ [0x854]={d="r"},
+ [0x855]={d="r"},
+ [0x856]={d="r"},
+ [0x857]={d="r"},
+ [0x858]={d="r"},
+ [0x859]={d="nsm"},
+ [0x85A]={d="nsm"},
+ [0x85B]={d="nsm"},
+ [0x85E]={d="r"},
+ [0x860]={d="al"},
+ [0x861]={d="al"},
+ [0x862]={d="al"},
+ [0x863]={d="al"},
+ [0x864]={d="al"},
+ [0x865]={d="al"},
+ [0x866]={d="al"},
+ [0x867]={d="al"},
+ [0x868]={d="al"},
+ [0x869]={d="al"},
+ [0x86A]={d="al"},
+ [0x870]={d="al"},
+ [0x871]={d="al"},
+ [0x872]={d="al"},
+ [0x873]={d="al"},
+ [0x874]={d="al"},
+ [0x875]={d="al"},
+ [0x876]={d="al"},
+ [0x877]={d="al"},
+ [0x878]={d="al"},
+ [0x879]={d="al"},
+ [0x87A]={d="al"},
+ [0x87B]={d="al"},
+ [0x87C]={d="al"},
+ [0x87D]={d="al"},
+ [0x87E]={d="al"},
+ [0x87F]={d="al"},
+ [0x880]={d="al"},
+ [0x881]={d="al"},
+ [0x882]={d="al"},
+ [0x883]={d="al"},
+ [0x884]={d="al"},
+ [0x885]={d="al"},
+ [0x886]={d="al"},
+ [0x887]={d="al"},
+ [0x888]={d="al"},
+ [0x889]={d="al"},
+ [0x88A]={d="al"},
+ [0x88B]={d="al"},
+ [0x88C]={d="al"},
+ [0x88D]={d="al"},
+ [0x88E]={d="al"},
+ [0x890]={d="an"},
+ [0x891]={d="an"},
+ [0x898]={d="nsm"},
+ [0x899]={d="nsm"},
+ [0x89A]={d="nsm"},
+ [0x89B]={d="nsm"},
+ [0x89C]={d="nsm"},
+ [0x89D]={d="nsm"},
+ [0x89E]={d="nsm"},
+ [0x89F]={d="nsm"},
+ [0x8A0]={d="al"},
+ [0x8A1]={d="al"},
+ [0x8A2]={d="al"},
+ [0x8A3]={d="al"},
+ [0x8A4]={d="al"},
+ [0x8A5]={d="al"},
+ [0x8A6]={d="al"},
+ [0x8A7]={d="al"},
+ [0x8A8]={d="al"},
+ [0x8A9]={d="al"},
+ [0x8AA]={d="al"},
+ [0x8AB]={d="al"},
+ [0x8AC]={d="al"},
+ [0x8AD]={d="al"},
+ [0x8AE]={d="al"},
+ [0x8AF]={d="al"},
+ [0x8B0]={d="al"},
+ [0x8B1]={d="al"},
+ [0x8B2]={d="al"},
+ [0x8B3]={d="al"},
+ [0x8B4]={d="al"},
+ [0x8B5]={d="al"},
+ [0x8B6]={d="al"},
+ [0x8B7]={d="al"},
+ [0x8B8]={d="al"},
+ [0x8B9]={d="al"},
+ [0x8BA]={d="al"},
+ [0x8BB]={d="al"},
+ [0x8BC]={d="al"},
+ [0x8BD]={d="al"},
+ [0x8BE]={d="al"},
+ [0x8BF]={d="al"},
+ [0x8C0]={d="al"},
+ [0x8C1]={d="al"},
+ [0x8C2]={d="al"},
+ [0x8C3]={d="al"},
+ [0x8C4]={d="al"},
+ [0x8C5]={d="al"},
+ [0x8C6]={d="al"},
+ [0x8C7]={d="al"},
+ [0x8C8]={d="al"},
+ [0x8C9]={d="al"},
+ [0x8CA]={d="nsm"},
+ [0x8CB]={d="nsm"},
+ [0x8CC]={d="nsm"},
+ [0x8CD]={d="nsm"},
+ [0x8CE]={d="nsm"},
+ [0x8CF]={d="nsm"},
+ [0x8D0]={d="nsm"},
+ [0x8D1]={d="nsm"},
+ [0x8D2]={d="nsm"},
+ [0x8D3]={d="nsm"},
+ [0x8D4]={d="nsm"},
+ [0x8D5]={d="nsm"},
+ [0x8D6]={d="nsm"},
+ [0x8D7]={d="nsm"},
+ [0x8D8]={d="nsm"},
+ [0x8D9]={d="nsm"},
+ [0x8DA]={d="nsm"},
+ [0x8DB]={d="nsm"},
+ [0x8DC]={d="nsm"},
+ [0x8DD]={d="nsm"},
+ [0x8DE]={d="nsm"},
+ [0x8DF]={d="nsm"},
+ [0x8E0]={d="nsm"},
+ [0x8E1]={d="nsm"},
+ [0x8E2]={d="an"},
+ [0x8E3]={d="nsm"},
+ [0x8E4]={d="nsm"},
+ [0x8E5]={d="nsm"},
+ [0x8E6]={d="nsm"},
+ [0x8E7]={d="nsm"},
+ [0x8E8]={d="nsm"},
+ [0x8E9]={d="nsm"},
+ [0x8EA]={d="nsm"},
+ [0x8EB]={d="nsm"},
+ [0x8EC]={d="nsm"},
+ [0x8ED]={d="nsm"},
+ [0x8EE]={d="nsm"},
+ [0x8EF]={d="nsm"},
+ [0x8F0]={d="nsm"},
+ [0x8F1]={d="nsm"},
+ [0x8F2]={d="nsm"},
+ [0x8F3]={d="nsm"},
+ [0x8F4]={d="nsm"},
+ [0x8F5]={d="nsm"},
+ [0x8F6]={d="nsm"},
+ [0x8F7]={d="nsm"},
+ [0x8F8]={d="nsm"},
+ [0x8F9]={d="nsm"},
+ [0x8FA]={d="nsm"},
+ [0x8FB]={d="nsm"},
+ [0x8FC]={d="nsm"},
+ [0x8FD]={d="nsm"},
+ [0x8FE]={d="nsm"},
+ [0x8FF]={d="nsm"},
+ [0x900]={d="nsm"},
+ [0x901]={d="nsm"},
+ [0x902]={d="nsm"},
+ [0x903]={d="l"},
+ [0x904]={d="l"},
+ [0x905]={d="l"},
+ [0x906]={d="l"},
+ [0x907]={d="l"},
+ [0x908]={d="l"},
+ [0x909]={d="l"},
+ [0x90A]={d="l"},
+ [0x90B]={d="l"},
+ [0x90C]={d="l"},
+ [0x90D]={d="l"},
+ [0x90E]={d="l"},
+ [0x90F]={d="l"},
+ [0x910]={d="l"},
+ [0x911]={d="l"},
+ [0x912]={d="l"},
+ [0x913]={d="l"},
+ [0x914]={d="l"},
+ [0x915]={d="l"},
+ [0x916]={d="l"},
+ [0x917]={d="l"},
+ [0x918]={d="l"},
+ [0x919]={d="l"},
+ [0x91A]={d="l"},
+ [0x91B]={d="l"},
+ [0x91C]={d="l"},
+ [0x91D]={d="l"},
+ [0x91E]={d="l"},
+ [0x91F]={d="l"},
+ [0x920]={d="l"},
+ [0x921]={d="l"},
+ [0x922]={d="l"},
+ [0x923]={d="l"},
+ [0x924]={d="l"},
+ [0x925]={d="l"},
+ [0x926]={d="l"},
+ [0x927]={d="l"},
+ [0x928]={d="l"},
+ [0x929]={d="l"},
+ [0x92A]={d="l"},
+ [0x92B]={d="l"},
+ [0x92C]={d="l"},
+ [0x92D]={d="l"},
+ [0x92E]={d="l"},
+ [0x92F]={d="l"},
+ [0x930]={d="l"},
+ [0x931]={d="l"},
+ [0x932]={d="l"},
+ [0x933]={d="l"},
+ [0x934]={d="l"},
+ [0x935]={d="l"},
+ [0x936]={d="l"},
+ [0x937]={d="l"},
+ [0x938]={d="l"},
+ [0x939]={d="l"},
+ [0x93A]={d="nsm"},
+ [0x93B]={d="l"},
+ [0x93C]={d="nsm"},
+ [0x93D]={d="l"},
+ [0x93E]={d="l"},
+ [0x93F]={d="l"},
+ [0x940]={d="l"},
+ [0x941]={d="nsm"},
+ [0x942]={d="nsm"},
+ [0x943]={d="nsm"},
+ [0x944]={d="nsm"},
+ [0x945]={d="nsm"},
+ [0x946]={d="nsm"},
+ [0x947]={d="nsm"},
+ [0x948]={d="nsm"},
+ [0x949]={d="l"},
+ [0x94A]={d="l"},
+ [0x94B]={d="l"},
+ [0x94C]={d="l"},
+ [0x94D]={d="nsm"},
+ [0x94E]={d="l"},
+ [0x94F]={d="l"},
+ [0x950]={d="l"},
+ [0x951]={d="nsm"},
+ [0x952]={d="nsm"},
+ [0x953]={d="nsm"},
+ [0x954]={d="nsm"},
+ [0x955]={d="nsm"},
+ [0x956]={d="nsm"},
+ [0x957]={d="nsm"},
+ [0x958]={d="l"},
+ [0x959]={d="l"},
+ [0x95A]={d="l"},
+ [0x95B]={d="l"},
+ [0x95C]={d="l"},
+ [0x95D]={d="l"},
+ [0x95E]={d="l"},
+ [0x95F]={d="l"},
+ [0x960]={d="l"},
+ [0x961]={d="l"},
+ [0x962]={d="nsm"},
+ [0x963]={d="nsm"},
+ [0x964]={d="l"},
+ [0x965]={d="l"},
+ [0x966]={d="l"},
+ [0x967]={d="l"},
+ [0x968]={d="l"},
+ [0x969]={d="l"},
+ [0x96A]={d="l"},
+ [0x96B]={d="l"},
+ [0x96C]={d="l"},
+ [0x96D]={d="l"},
+ [0x96E]={d="l"},
+ [0x96F]={d="l"},
+ [0x970]={d="l"},
+ [0x971]={d="l"},
+ [0x972]={d="l"},
+ [0x973]={d="l"},
+ [0x974]={d="l"},
+ [0x975]={d="l"},
+ [0x976]={d="l"},
+ [0x977]={d="l"},
+ [0x978]={d="l"},
+ [0x979]={d="l"},
+ [0x97A]={d="l"},
+ [0x97B]={d="l"},
+ [0x97C]={d="l"},
+ [0x97D]={d="l"},
+ [0x97E]={d="l"},
+ [0x97F]={d="l"},
+ [0x980]={d="l"},
+ [0x981]={d="nsm"},
+ [0x982]={d="l"},
+ [0x983]={d="l"},
+ [0x985]={d="l"},
+ [0x986]={d="l"},
+ [0x987]={d="l"},
+ [0x988]={d="l"},
+ [0x989]={d="l"},
+ [0x98A]={d="l"},
+ [0x98B]={d="l"},
+ [0x98C]={d="l"},
+ [0x98F]={d="l"},
+ [0x990]={d="l"},
+ [0x993]={d="l"},
+ [0x994]={d="l"},
+ [0x995]={d="l"},
+ [0x996]={d="l"},
+ [0x997]={d="l"},
+ [0x998]={d="l"},
+ [0x999]={d="l"},
+ [0x99A]={d="l"},
+ [0x99B]={d="l"},
+ [0x99C]={d="l"},
+ [0x99D]={d="l"},
+ [0x99E]={d="l"},
+ [0x99F]={d="l"},
+ [0x9A0]={d="l"},
+ [0x9A1]={d="l"},
+ [0x9A2]={d="l"},
+ [0x9A3]={d="l"},
+ [0x9A4]={d="l"},
+ [0x9A5]={d="l"},
+ [0x9A6]={d="l"},
+ [0x9A7]={d="l"},
+ [0x9A8]={d="l"},
+ [0x9AA]={d="l"},
+ [0x9AB]={d="l"},
+ [0x9AC]={d="l"},
+ [0x9AD]={d="l"},
+ [0x9AE]={d="l"},
+ [0x9AF]={d="l"},
+ [0x9B0]={d="l"},
+ [0x9B2]={d="l"},
+ [0x9B6]={d="l"},
+ [0x9B7]={d="l"},
+ [0x9B8]={d="l"},
+ [0x9B9]={d="l"},
+ [0x9BC]={d="nsm"},
+ [0x9BD]={d="l"},
+ [0x9BE]={d="l"},
+ [0x9BF]={d="l"},
+ [0x9C0]={d="l"},
+ [0x9C1]={d="nsm"},
+ [0x9C2]={d="nsm"},
+ [0x9C3]={d="nsm"},
+ [0x9C4]={d="nsm"},
+ [0x9C7]={d="l"},
+ [0x9C8]={d="l"},
+ [0x9CB]={d="l"},
+ [0x9CC]={d="l"},
+ [0x9CD]={d="nsm"},
+ [0x9CE]={d="l"},
+ [0x9D7]={d="l"},
+ [0x9DC]={d="l"},
+ [0x9DD]={d="l"},
+ [0x9DF]={d="l"},
+ [0x9E0]={d="l"},
+ [0x9E1]={d="l"},
+ [0x9E2]={d="nsm"},
+ [0x9E3]={d="nsm"},
+ [0x9E6]={d="l"},
+ [0x9E7]={d="l"},
+ [0x9E8]={d="l"},
+ [0x9E9]={d="l"},
+ [0x9EA]={d="l"},
+ [0x9EB]={d="l"},
+ [0x9EC]={d="l"},
+ [0x9ED]={d="l"},
+ [0x9EE]={d="l"},
+ [0x9EF]={d="l"},
+ [0x9F0]={d="l"},
+ [0x9F1]={d="l"},
+ [0x9F2]={d="et"},
+ [0x9F3]={d="et"},
+ [0x9F4]={d="l"},
+ [0x9F5]={d="l"},
+ [0x9F6]={d="l"},
+ [0x9F7]={d="l"},
+ [0x9F8]={d="l"},
+ [0x9F9]={d="l"},
+ [0x9FA]={d="l"},
+ [0x9FB]={d="et"},
+ [0x9FC]={d="l"},
+ [0x9FD]={d="l"},
+ [0x9FE]={d="nsm"},
+ [0xA01]={d="nsm"},
+ [0xA02]={d="nsm"},
+ [0xA03]={d="l"},
+ [0xA05]={d="l"},
+ [0xA06]={d="l"},
+ [0xA07]={d="l"},
+ [0xA08]={d="l"},
+ [0xA09]={d="l"},
+ [0xA0A]={d="l"},
+ [0xA0F]={d="l"},
+ [0xA10]={d="l"},
+ [0xA13]={d="l"},
+ [0xA14]={d="l"},
+ [0xA15]={d="l"},
+ [0xA16]={d="l"},
+ [0xA17]={d="l"},
+ [0xA18]={d="l"},
+ [0xA19]={d="l"},
+ [0xA1A]={d="l"},
+ [0xA1B]={d="l"},
+ [0xA1C]={d="l"},
+ [0xA1D]={d="l"},
+ [0xA1E]={d="l"},
+ [0xA1F]={d="l"},
+ [0xA20]={d="l"},
+ [0xA21]={d="l"},
+ [0xA22]={d="l"},
+ [0xA23]={d="l"},
+ [0xA24]={d="l"},
+ [0xA25]={d="l"},
+ [0xA26]={d="l"},
+ [0xA27]={d="l"},
+ [0xA28]={d="l"},
+ [0xA2A]={d="l"},
+ [0xA2B]={d="l"},
+ [0xA2C]={d="l"},
+ [0xA2D]={d="l"},
+ [0xA2E]={d="l"},
+ [0xA2F]={d="l"},
+ [0xA30]={d="l"},
+ [0xA32]={d="l"},
+ [0xA33]={d="l"},
+ [0xA35]={d="l"},
+ [0xA36]={d="l"},
+ [0xA38]={d="l"},
+ [0xA39]={d="l"},
+ [0xA3C]={d="nsm"},
+ [0xA3E]={d="l"},
+ [0xA3F]={d="l"},
+ [0xA40]={d="l"},
+ [0xA41]={d="nsm"},
+ [0xA42]={d="nsm"},
+ [0xA47]={d="nsm"},
+ [0xA48]={d="nsm"},
+ [0xA4B]={d="nsm"},
+ [0xA4C]={d="nsm"},
+ [0xA4D]={d="nsm"},
+ [0xA51]={d="nsm"},
+ [0xA59]={d="l"},
+ [0xA5A]={d="l"},
+ [0xA5B]={d="l"},
+ [0xA5C]={d="l"},
+ [0xA5E]={d="l"},
+ [0xA66]={d="l"},
+ [0xA67]={d="l"},
+ [0xA68]={d="l"},
+ [0xA69]={d="l"},
+ [0xA6A]={d="l"},
+ [0xA6B]={d="l"},
+ [0xA6C]={d="l"},
+ [0xA6D]={d="l"},
+ [0xA6E]={d="l"},
+ [0xA6F]={d="l"},
+ [0xA70]={d="nsm"},
+ [0xA71]={d="nsm"},
+ [0xA72]={d="l"},
+ [0xA73]={d="l"},
+ [0xA74]={d="l"},
+ [0xA75]={d="nsm"},
+ [0xA76]={d="l"},
+ [0xA81]={d="nsm"},
+ [0xA82]={d="nsm"},
+ [0xA83]={d="l"},
+ [0xA85]={d="l"},
+ [0xA86]={d="l"},
+ [0xA87]={d="l"},
+ [0xA88]={d="l"},
+ [0xA89]={d="l"},
+ [0xA8A]={d="l"},
+ [0xA8B]={d="l"},
+ [0xA8C]={d="l"},
+ [0xA8D]={d="l"},
+ [0xA8F]={d="l"},
+ [0xA90]={d="l"},
+ [0xA91]={d="l"},
+ [0xA93]={d="l"},
+ [0xA94]={d="l"},
+ [0xA95]={d="l"},
+ [0xA96]={d="l"},
+ [0xA97]={d="l"},
+ [0xA98]={d="l"},
+ [0xA99]={d="l"},
+ [0xA9A]={d="l"},
+ [0xA9B]={d="l"},
+ [0xA9C]={d="l"},
+ [0xA9D]={d="l"},
+ [0xA9E]={d="l"},
+ [0xA9F]={d="l"},
+ [0xAA0]={d="l"},
+ [0xAA1]={d="l"},
+ [0xAA2]={d="l"},
+ [0xAA3]={d="l"},
+ [0xAA4]={d="l"},
+ [0xAA5]={d="l"},
+ [0xAA6]={d="l"},
+ [0xAA7]={d="l"},
+ [0xAA8]={d="l"},
+ [0xAAA]={d="l"},
+ [0xAAB]={d="l"},
+ [0xAAC]={d="l"},
+ [0xAAD]={d="l"},
+ [0xAAE]={d="l"},
+ [0xAAF]={d="l"},
+ [0xAB0]={d="l"},
+ [0xAB2]={d="l"},
+ [0xAB3]={d="l"},
+ [0xAB5]={d="l"},
+ [0xAB6]={d="l"},
+ [0xAB7]={d="l"},
+ [0xAB8]={d="l"},
+ [0xAB9]={d="l"},
+ [0xABC]={d="nsm"},
+ [0xABD]={d="l"},
+ [0xABE]={d="l"},
+ [0xABF]={d="l"},
+ [0xAC0]={d="l"},
+ [0xAC1]={d="nsm"},
+ [0xAC2]={d="nsm"},
+ [0xAC3]={d="nsm"},
+ [0xAC4]={d="nsm"},
+ [0xAC5]={d="nsm"},
+ [0xAC7]={d="nsm"},
+ [0xAC8]={d="nsm"},
+ [0xAC9]={d="l"},
+ [0xACB]={d="l"},
+ [0xACC]={d="l"},
+ [0xACD]={d="nsm"},
+ [0xAD0]={d="l"},
+ [0xAE0]={d="l"},
+ [0xAE1]={d="l"},
+ [0xAE2]={d="nsm"},
+ [0xAE3]={d="nsm"},
+ [0xAE6]={d="l"},
+ [0xAE7]={d="l"},
+ [0xAE8]={d="l"},
+ [0xAE9]={d="l"},
+ [0xAEA]={d="l"},
+ [0xAEB]={d="l"},
+ [0xAEC]={d="l"},
+ [0xAED]={d="l"},
+ [0xAEE]={d="l"},
+ [0xAEF]={d="l"},
+ [0xAF0]={d="l"},
+ [0xAF1]={d="et"},
+ [0xAF9]={d="l"},
+ [0xAFA]={d="nsm"},
+ [0xAFB]={d="nsm"},
+ [0xAFC]={d="nsm"},
+ [0xAFD]={d="nsm"},
+ [0xAFE]={d="nsm"},
+ [0xAFF]={d="nsm"},
+ [0xB01]={d="nsm"},
+ [0xB02]={d="l"},
+ [0xB03]={d="l"},
+ [0xB05]={d="l"},
+ [0xB06]={d="l"},
+ [0xB07]={d="l"},
+ [0xB08]={d="l"},
+ [0xB09]={d="l"},
+ [0xB0A]={d="l"},
+ [0xB0B]={d="l"},
+ [0xB0C]={d="l"},
+ [0xB0F]={d="l"},
+ [0xB10]={d="l"},
+ [0xB13]={d="l"},
+ [0xB14]={d="l"},
+ [0xB15]={d="l"},
+ [0xB16]={d="l"},
+ [0xB17]={d="l"},
+ [0xB18]={d="l"},
+ [0xB19]={d="l"},
+ [0xB1A]={d="l"},
+ [0xB1B]={d="l"},
+ [0xB1C]={d="l"},
+ [0xB1D]={d="l"},
+ [0xB1E]={d="l"},
+ [0xB1F]={d="l"},
+ [0xB20]={d="l"},
+ [0xB21]={d="l"},
+ [0xB22]={d="l"},
+ [0xB23]={d="l"},
+ [0xB24]={d="l"},
+ [0xB25]={d="l"},
+ [0xB26]={d="l"},
+ [0xB27]={d="l"},
+ [0xB28]={d="l"},
+ [0xB2A]={d="l"},
+ [0xB2B]={d="l"},
+ [0xB2C]={d="l"},
+ [0xB2D]={d="l"},
+ [0xB2E]={d="l"},
+ [0xB2F]={d="l"},
+ [0xB30]={d="l"},
+ [0xB32]={d="l"},
+ [0xB33]={d="l"},
+ [0xB35]={d="l"},
+ [0xB36]={d="l"},
+ [0xB37]={d="l"},
+ [0xB38]={d="l"},
+ [0xB39]={d="l"},
+ [0xB3C]={d="nsm"},
+ [0xB3D]={d="l"},
+ [0xB3E]={d="l"},
+ [0xB3F]={d="nsm"},
+ [0xB40]={d="l"},
+ [0xB41]={d="nsm"},
+ [0xB42]={d="nsm"},
+ [0xB43]={d="nsm"},
+ [0xB44]={d="nsm"},
+ [0xB47]={d="l"},
+ [0xB48]={d="l"},
+ [0xB4B]={d="l"},
+ [0xB4C]={d="l"},
+ [0xB4D]={d="nsm"},
+ [0xB55]={d="nsm"},
+ [0xB56]={d="nsm"},
+ [0xB57]={d="l"},
+ [0xB5C]={d="l"},
+ [0xB5D]={d="l"},
+ [0xB5F]={d="l"},
+ [0xB60]={d="l"},
+ [0xB61]={d="l"},
+ [0xB62]={d="nsm"},
+ [0xB63]={d="nsm"},
+ [0xB66]={d="l"},
+ [0xB67]={d="l"},
+ [0xB68]={d="l"},
+ [0xB69]={d="l"},
+ [0xB6A]={d="l"},
+ [0xB6B]={d="l"},
+ [0xB6C]={d="l"},
+ [0xB6D]={d="l"},
+ [0xB6E]={d="l"},
+ [0xB6F]={d="l"},
+ [0xB70]={d="l"},
+ [0xB71]={d="l"},
+ [0xB72]={d="l"},
+ [0xB73]={d="l"},
+ [0xB74]={d="l"},
+ [0xB75]={d="l"},
+ [0xB76]={d="l"},
+ [0xB77]={d="l"},
+ [0xB82]={d="nsm"},
+ [0xB83]={d="l"},
+ [0xB85]={d="l"},
+ [0xB86]={d="l"},
+ [0xB87]={d="l"},
+ [0xB88]={d="l"},
+ [0xB89]={d="l"},
+ [0xB8A]={d="l"},
+ [0xB8E]={d="l"},
+ [0xB8F]={d="l"},
+ [0xB90]={d="l"},
+ [0xB92]={d="l"},
+ [0xB93]={d="l"},
+ [0xB94]={d="l"},
+ [0xB95]={d="l"},
+ [0xB99]={d="l"},
+ [0xB9A]={d="l"},
+ [0xB9C]={d="l"},
+ [0xB9E]={d="l"},
+ [0xB9F]={d="l"},
+ [0xBA3]={d="l"},
+ [0xBA4]={d="l"},
+ [0xBA8]={d="l"},
+ [0xBA9]={d="l"},
+ [0xBAA]={d="l"},
+ [0xBAE]={d="l"},
+ [0xBAF]={d="l"},
+ [0xBB0]={d="l"},
+ [0xBB1]={d="l"},
+ [0xBB2]={d="l"},
+ [0xBB3]={d="l"},
+ [0xBB4]={d="l"},
+ [0xBB5]={d="l"},
+ [0xBB6]={d="l"},
+ [0xBB7]={d="l"},
+ [0xBB8]={d="l"},
+ [0xBB9]={d="l"},
+ [0xBBE]={d="l"},
+ [0xBBF]={d="l"},
+ [0xBC0]={d="nsm"},
+ [0xBC1]={d="l"},
+ [0xBC2]={d="l"},
+ [0xBC6]={d="l"},
+ [0xBC7]={d="l"},
+ [0xBC8]={d="l"},
+ [0xBCA]={d="l"},
+ [0xBCB]={d="l"},
+ [0xBCC]={d="l"},
+ [0xBCD]={d="nsm"},
+ [0xBD0]={d="l"},
+ [0xBD7]={d="l"},
+ [0xBE6]={d="l"},
+ [0xBE7]={d="l"},
+ [0xBE8]={d="l"},
+ [0xBE9]={d="l"},
+ [0xBEA]={d="l"},
+ [0xBEB]={d="l"},
+ [0xBEC]={d="l"},
+ [0xBED]={d="l"},
+ [0xBEE]={d="l"},
+ [0xBEF]={d="l"},
+ [0xBF0]={d="l"},
+ [0xBF1]={d="l"},
+ [0xBF2]={d="l"},
+ [0xBF3]={d="on"},
+ [0xBF4]={d="on"},
+ [0xBF5]={d="on"},
+ [0xBF6]={d="on"},
+ [0xBF7]={d="on"},
+ [0xBF8]={d="on"},
+ [0xBF9]={d="et"},
+ [0xBFA]={d="on"},
+ [0xC00]={d="nsm"},
+ [0xC01]={d="l"},
+ [0xC02]={d="l"},
+ [0xC03]={d="l"},
+ [0xC04]={d="nsm"},
+ [0xC05]={d="l"},
+ [0xC06]={d="l"},
+ [0xC07]={d="l"},
+ [0xC08]={d="l"},
+ [0xC09]={d="l"},
+ [0xC0A]={d="l"},
+ [0xC0B]={d="l"},
+ [0xC0C]={d="l"},
+ [0xC0E]={d="l"},
+ [0xC0F]={d="l"},
+ [0xC10]={d="l"},
+ [0xC12]={d="l"},
+ [0xC13]={d="l"},
+ [0xC14]={d="l"},
+ [0xC15]={d="l"},
+ [0xC16]={d="l"},
+ [0xC17]={d="l"},
+ [0xC18]={d="l"},
+ [0xC19]={d="l"},
+ [0xC1A]={d="l"},
+ [0xC1B]={d="l"},
+ [0xC1C]={d="l"},
+ [0xC1D]={d="l"},
+ [0xC1E]={d="l"},
+ [0xC1F]={d="l"},
+ [0xC20]={d="l"},
+ [0xC21]={d="l"},
+ [0xC22]={d="l"},
+ [0xC23]={d="l"},
+ [0xC24]={d="l"},
+ [0xC25]={d="l"},
+ [0xC26]={d="l"},
+ [0xC27]={d="l"},
+ [0xC28]={d="l"},
+ [0xC2A]={d="l"},
+ [0xC2B]={d="l"},
+ [0xC2C]={d="l"},
+ [0xC2D]={d="l"},
+ [0xC2E]={d="l"},
+ [0xC2F]={d="l"},
+ [0xC30]={d="l"},
+ [0xC31]={d="l"},
+ [0xC32]={d="l"},
+ [0xC33]={d="l"},
+ [0xC34]={d="l"},
+ [0xC35]={d="l"},
+ [0xC36]={d="l"},
+ [0xC37]={d="l"},
+ [0xC38]={d="l"},
+ [0xC39]={d="l"},
+ [0xC3C]={d="nsm"},
+ [0xC3D]={d="l"},
+ [0xC3E]={d="nsm"},
+ [0xC3F]={d="nsm"},
+ [0xC40]={d="nsm"},
+ [0xC41]={d="l"},
+ [0xC42]={d="l"},
+ [0xC43]={d="l"},
+ [0xC44]={d="l"},
+ [0xC46]={d="nsm"},
+ [0xC47]={d="nsm"},
+ [0xC48]={d="nsm"},
+ [0xC4A]={d="nsm"},
+ [0xC4B]={d="nsm"},
+ [0xC4C]={d="nsm"},
+ [0xC4D]={d="nsm"},
+ [0xC55]={d="nsm"},
+ [0xC56]={d="nsm"},
+ [0xC58]={d="l"},
+ [0xC59]={d="l"},
+ [0xC5A]={d="l"},
+ [0xC5D]={d="l"},
+ [0xC60]={d="l"},
+ [0xC61]={d="l"},
+ [0xC62]={d="nsm"},
+ [0xC63]={d="nsm"},
+ [0xC66]={d="l"},
+ [0xC67]={d="l"},
+ [0xC68]={d="l"},
+ [0xC69]={d="l"},
+ [0xC6A]={d="l"},
+ [0xC6B]={d="l"},
+ [0xC6C]={d="l"},
+ [0xC6D]={d="l"},
+ [0xC6E]={d="l"},
+ [0xC6F]={d="l"},
+ [0xC77]={d="l"},
+ [0xC78]={d="on"},
+ [0xC79]={d="on"},
+ [0xC7A]={d="on"},
+ [0xC7B]={d="on"},
+ [0xC7C]={d="on"},
+ [0xC7D]={d="on"},
+ [0xC7E]={d="on"},
+ [0xC7F]={d="l"},
+ [0xC80]={d="l"},
+ [0xC81]={d="nsm"},
+ [0xC82]={d="l"},
+ [0xC83]={d="l"},
+ [0xC84]={d="l"},
+ [0xC85]={d="l"},
+ [0xC86]={d="l"},
+ [0xC87]={d="l"},
+ [0xC88]={d="l"},
+ [0xC89]={d="l"},
+ [0xC8A]={d="l"},
+ [0xC8B]={d="l"},
+ [0xC8C]={d="l"},
+ [0xC8E]={d="l"},
+ [0xC8F]={d="l"},
+ [0xC90]={d="l"},
+ [0xC92]={d="l"},
+ [0xC93]={d="l"},
+ [0xC94]={d="l"},
+ [0xC95]={d="l"},
+ [0xC96]={d="l"},
+ [0xC97]={d="l"},
+ [0xC98]={d="l"},
+ [0xC99]={d="l"},
+ [0xC9A]={d="l"},
+ [0xC9B]={d="l"},
+ [0xC9C]={d="l"},
+ [0xC9D]={d="l"},
+ [0xC9E]={d="l"},
+ [0xC9F]={d="l"},
+ [0xCA0]={d="l"},
+ [0xCA1]={d="l"},
+ [0xCA2]={d="l"},
+ [0xCA3]={d="l"},
+ [0xCA4]={d="l"},
+ [0xCA5]={d="l"},
+ [0xCA6]={d="l"},
+ [0xCA7]={d="l"},
+ [0xCA8]={d="l"},
+ [0xCAA]={d="l"},
+ [0xCAB]={d="l"},
+ [0xCAC]={d="l"},
+ [0xCAD]={d="l"},
+ [0xCAE]={d="l"},
+ [0xCAF]={d="l"},
+ [0xCB0]={d="l"},
+ [0xCB1]={d="l"},
+ [0xCB2]={d="l"},
+ [0xCB3]={d="l"},
+ [0xCB5]={d="l"},
+ [0xCB6]={d="l"},
+ [0xCB7]={d="l"},
+ [0xCB8]={d="l"},
+ [0xCB9]={d="l"},
+ [0xCBC]={d="nsm"},
+ [0xCBD]={d="l"},
+ [0xCBE]={d="l"},
+ [0xCBF]={d="l"},
+ [0xCC0]={d="l"},
+ [0xCC1]={d="l"},
+ [0xCC2]={d="l"},
+ [0xCC3]={d="l"},
+ [0xCC4]={d="l"},
+ [0xCC6]={d="l"},
+ [0xCC7]={d="l"},
+ [0xCC8]={d="l"},
+ [0xCCA]={d="l"},
+ [0xCCB]={d="l"},
+ [0xCCC]={d="nsm"},
+ [0xCCD]={d="nsm"},
+ [0xCD5]={d="l"},
+ [0xCD6]={d="l"},
+ [0xCDD]={d="l"},
+ [0xCDE]={d="l"},
+ [0xCE0]={d="l"},
+ [0xCE1]={d="l"},
+ [0xCE2]={d="nsm"},
+ [0xCE3]={d="nsm"},
+ [0xCE6]={d="l"},
+ [0xCE7]={d="l"},
+ [0xCE8]={d="l"},
+ [0xCE9]={d="l"},
+ [0xCEA]={d="l"},
+ [0xCEB]={d="l"},
+ [0xCEC]={d="l"},
+ [0xCED]={d="l"},
+ [0xCEE]={d="l"},
+ [0xCEF]={d="l"},
+ [0xCF1]={d="l"},
+ [0xCF2]={d="l"},
+ [0xCF3]={d="l"},
+ [0xD00]={d="nsm"},
+ [0xD01]={d="nsm"},
+ [0xD02]={d="l"},
+ [0xD03]={d="l"},
+ [0xD04]={d="l"},
+ [0xD05]={d="l"},
+ [0xD06]={d="l"},
+ [0xD07]={d="l"},
+ [0xD08]={d="l"},
+ [0xD09]={d="l"},
+ [0xD0A]={d="l"},
+ [0xD0B]={d="l"},
+ [0xD0C]={d="l"},
+ [0xD0E]={d="l"},
+ [0xD0F]={d="l"},
+ [0xD10]={d="l"},
+ [0xD12]={d="l"},
+ [0xD13]={d="l"},
+ [0xD14]={d="l"},
+ [0xD15]={d="l"},
+ [0xD16]={d="l"},
+ [0xD17]={d="l"},
+ [0xD18]={d="l"},
+ [0xD19]={d="l"},
+ [0xD1A]={d="l"},
+ [0xD1B]={d="l"},
+ [0xD1C]={d="l"},
+ [0xD1D]={d="l"},
+ [0xD1E]={d="l"},
+ [0xD1F]={d="l"},
+ [0xD20]={d="l"},
+ [0xD21]={d="l"},
+ [0xD22]={d="l"},
+ [0xD23]={d="l"},
+ [0xD24]={d="l"},
+ [0xD25]={d="l"},
+ [0xD26]={d="l"},
+ [0xD27]={d="l"},
+ [0xD28]={d="l"},
+ [0xD29]={d="l"},
+ [0xD2A]={d="l"},
+ [0xD2B]={d="l"},
+ [0xD2C]={d="l"},
+ [0xD2D]={d="l"},
+ [0xD2E]={d="l"},
+ [0xD2F]={d="l"},
+ [0xD30]={d="l"},
+ [0xD31]={d="l"},
+ [0xD32]={d="l"},
+ [0xD33]={d="l"},
+ [0xD34]={d="l"},
+ [0xD35]={d="l"},
+ [0xD36]={d="l"},
+ [0xD37]={d="l"},
+ [0xD38]={d="l"},
+ [0xD39]={d="l"},
+ [0xD3A]={d="l"},
+ [0xD3B]={d="nsm"},
+ [0xD3C]={d="nsm"},
+ [0xD3D]={d="l"},
+ [0xD3E]={d="l"},
+ [0xD3F]={d="l"},
+ [0xD40]={d="l"},
+ [0xD41]={d="nsm"},
+ [0xD42]={d="nsm"},
+ [0xD43]={d="nsm"},
+ [0xD44]={d="nsm"},
+ [0xD46]={d="l"},
+ [0xD47]={d="l"},
+ [0xD48]={d="l"},
+ [0xD4A]={d="l"},
+ [0xD4B]={d="l"},
+ [0xD4C]={d="l"},
+ [0xD4D]={d="nsm"},
+ [0xD4E]={d="l"},
+ [0xD4F]={d="l"},
+ [0xD54]={d="l"},
+ [0xD55]={d="l"},
+ [0xD56]={d="l"},
+ [0xD57]={d="l"},
+ [0xD58]={d="l"},
+ [0xD59]={d="l"},
+ [0xD5A]={d="l"},
+ [0xD5B]={d="l"},
+ [0xD5C]={d="l"},
+ [0xD5D]={d="l"},
+ [0xD5E]={d="l"},
+ [0xD5F]={d="l"},
+ [0xD60]={d="l"},
+ [0xD61]={d="l"},
+ [0xD62]={d="nsm"},
+ [0xD63]={d="nsm"},
+ [0xD66]={d="l"},
+ [0xD67]={d="l"},
+ [0xD68]={d="l"},
+ [0xD69]={d="l"},
+ [0xD6A]={d="l"},
+ [0xD6B]={d="l"},
+ [0xD6C]={d="l"},
+ [0xD6D]={d="l"},
+ [0xD6E]={d="l"},
+ [0xD6F]={d="l"},
+ [0xD70]={d="l"},
+ [0xD71]={d="l"},
+ [0xD72]={d="l"},
+ [0xD73]={d="l"},
+ [0xD74]={d="l"},
+ [0xD75]={d="l"},
+ [0xD76]={d="l"},
+ [0xD77]={d="l"},
+ [0xD78]={d="l"},
+ [0xD79]={d="l"},
+ [0xD7A]={d="l"},
+ [0xD7B]={d="l"},
+ [0xD7C]={d="l"},
+ [0xD7D]={d="l"},
+ [0xD7E]={d="l"},
+ [0xD7F]={d="l"},
+ [0xD81]={d="nsm"},
+ [0xD82]={d="l"},
+ [0xD83]={d="l"},
+ [0xD85]={d="l"},
+ [0xD86]={d="l"},
+ [0xD87]={d="l"},
+ [0xD88]={d="l"},
+ [0xD89]={d="l"},
+ [0xD8A]={d="l"},
+ [0xD8B]={d="l"},
+ [0xD8C]={d="l"},
+ [0xD8D]={d="l"},
+ [0xD8E]={d="l"},
+ [0xD8F]={d="l"},
+ [0xD90]={d="l"},
+ [0xD91]={d="l"},
+ [0xD92]={d="l"},
+ [0xD93]={d="l"},
+ [0xD94]={d="l"},
+ [0xD95]={d="l"},
+ [0xD96]={d="l"},
+ [0xD9A]={d="l"},
+ [0xD9B]={d="l"},
+ [0xD9C]={d="l"},
+ [0xD9D]={d="l"},
+ [0xD9E]={d="l"},
+ [0xD9F]={d="l"},
+ [0xDA0]={d="l"},
+ [0xDA1]={d="l"},
+ [0xDA2]={d="l"},
+ [0xDA3]={d="l"},
+ [0xDA4]={d="l"},
+ [0xDA5]={d="l"},
+ [0xDA6]={d="l"},
+ [0xDA7]={d="l"},
+ [0xDA8]={d="l"},
+ [0xDA9]={d="l"},
+ [0xDAA]={d="l"},
+ [0xDAB]={d="l"},
+ [0xDAC]={d="l"},
+ [0xDAD]={d="l"},
+ [0xDAE]={d="l"},
+ [0xDAF]={d="l"},
+ [0xDB0]={d="l"},
+ [0xDB1]={d="l"},
+ [0xDB3]={d="l"},
+ [0xDB4]={d="l"},
+ [0xDB5]={d="l"},
+ [0xDB6]={d="l"},
+ [0xDB7]={d="l"},
+ [0xDB8]={d="l"},
+ [0xDB9]={d="l"},
+ [0xDBA]={d="l"},
+ [0xDBB]={d="l"},
+ [0xDBD]={d="l"},
+ [0xDC0]={d="l"},
+ [0xDC1]={d="l"},
+ [0xDC2]={d="l"},
+ [0xDC3]={d="l"},
+ [0xDC4]={d="l"},
+ [0xDC5]={d="l"},
+ [0xDC6]={d="l"},
+ [0xDCA]={d="nsm"},
+ [0xDCF]={d="l"},
+ [0xDD0]={d="l"},
+ [0xDD1]={d="l"},
+ [0xDD2]={d="nsm"},
+ [0xDD3]={d="nsm"},
+ [0xDD4]={d="nsm"},
+ [0xDD6]={d="nsm"},
+ [0xDD8]={d="l"},
+ [0xDD9]={d="l"},
+ [0xDDA]={d="l"},
+ [0xDDB]={d="l"},
+ [0xDDC]={d="l"},
+ [0xDDD]={d="l"},
+ [0xDDE]={d="l"},
+ [0xDDF]={d="l"},
+ [0xDE6]={d="l"},
+ [0xDE7]={d="l"},
+ [0xDE8]={d="l"},
+ [0xDE9]={d="l"},
+ [0xDEA]={d="l"},
+ [0xDEB]={d="l"},
+ [0xDEC]={d="l"},
+ [0xDED]={d="l"},
+ [0xDEE]={d="l"},
+ [0xDEF]={d="l"},
+ [0xDF2]={d="l"},
+ [0xDF3]={d="l"},
+ [0xDF4]={d="l"},
+ [0xE01]={d="l"},
+ [0xE02]={d="l"},
+ [0xE03]={d="l"},
+ [0xE04]={d="l"},
+ [0xE05]={d="l"},
+ [0xE06]={d="l"},
+ [0xE07]={d="l"},
+ [0xE08]={d="l"},
+ [0xE09]={d="l"},
+ [0xE0A]={d="l"},
+ [0xE0B]={d="l"},
+ [0xE0C]={d="l"},
+ [0xE0D]={d="l"},
+ [0xE0E]={d="l"},
+ [0xE0F]={d="l"},
+ [0xE10]={d="l"},
+ [0xE11]={d="l"},
+ [0xE12]={d="l"},
+ [0xE13]={d="l"},
+ [0xE14]={d="l"},
+ [0xE15]={d="l"},
+ [0xE16]={d="l"},
+ [0xE17]={d="l"},
+ [0xE18]={d="l"},
+ [0xE19]={d="l"},
+ [0xE1A]={d="l"},
+ [0xE1B]={d="l"},
+ [0xE1C]={d="l"},
+ [0xE1D]={d="l"},
+ [0xE1E]={d="l"},
+ [0xE1F]={d="l"},
+ [0xE20]={d="l"},
+ [0xE21]={d="l"},
+ [0xE22]={d="l"},
+ [0xE23]={d="l"},
+ [0xE24]={d="l"},
+ [0xE25]={d="l"},
+ [0xE26]={d="l"},
+ [0xE27]={d="l"},
+ [0xE28]={d="l"},
+ [0xE29]={d="l"},
+ [0xE2A]={d="l"},
+ [0xE2B]={d="l"},
+ [0xE2C]={d="l"},
+ [0xE2D]={d="l"},
+ [0xE2E]={d="l"},
+ [0xE2F]={d="l"},
+ [0xE30]={d="l"},
+ [0xE31]={d="nsm"},
+ [0xE32]={d="l"},
+ [0xE33]={d="l"},
+ [0xE34]={d="nsm"},
+ [0xE35]={d="nsm"},
+ [0xE36]={d="nsm"},
+ [0xE37]={d="nsm"},
+ [0xE38]={d="nsm"},
+ [0xE39]={d="nsm"},
+ [0xE3A]={d="nsm"},
+ [0xE3F]={d="et"},
+ [0xE40]={d="l"},
+ [0xE41]={d="l"},
+ [0xE42]={d="l"},
+ [0xE43]={d="l"},
+ [0xE44]={d="l"},
+ [0xE45]={d="l"},
+ [0xE46]={d="l"},
+ [0xE47]={d="nsm"},
+ [0xE48]={d="nsm"},
+ [0xE49]={d="nsm"},
+ [0xE4A]={d="nsm"},
+ [0xE4B]={d="nsm"},
+ [0xE4C]={d="nsm"},
+ [0xE4D]={d="nsm"},
+ [0xE4E]={d="nsm"},
+ [0xE4F]={d="l"},
+ [0xE50]={d="l"},
+ [0xE51]={d="l"},
+ [0xE52]={d="l"},
+ [0xE53]={d="l"},
+ [0xE54]={d="l"},
+ [0xE55]={d="l"},
+ [0xE56]={d="l"},
+ [0xE57]={d="l"},
+ [0xE58]={d="l"},
+ [0xE59]={d="l"},
+ [0xE5A]={d="l"},
+ [0xE5B]={d="l"},
+ [0xE81]={d="l"},
+ [0xE82]={d="l"},
+ [0xE84]={d="l"},
+ [0xE86]={d="l"},
+ [0xE87]={d="l"},
+ [0xE88]={d="l"},
+ [0xE89]={d="l"},
+ [0xE8A]={d="l"},
+ [0xE8C]={d="l"},
+ [0xE8D]={d="l"},
+ [0xE8E]={d="l"},
+ [0xE8F]={d="l"},
+ [0xE90]={d="l"},
+ [0xE91]={d="l"},
+ [0xE92]={d="l"},
+ [0xE93]={d="l"},
+ [0xE94]={d="l"},
+ [0xE95]={d="l"},
+ [0xE96]={d="l"},
+ [0xE97]={d="l"},
+ [0xE98]={d="l"},
+ [0xE99]={d="l"},
+ [0xE9A]={d="l"},
+ [0xE9B]={d="l"},
+ [0xE9C]={d="l"},
+ [0xE9D]={d="l"},
+ [0xE9E]={d="l"},
+ [0xE9F]={d="l"},
+ [0xEA0]={d="l"},
+ [0xEA1]={d="l"},
+ [0xEA2]={d="l"},
+ [0xEA3]={d="l"},
+ [0xEA5]={d="l"},
+ [0xEA7]={d="l"},
+ [0xEA8]={d="l"},
+ [0xEA9]={d="l"},
+ [0xEAA]={d="l"},
+ [0xEAB]={d="l"},
+ [0xEAC]={d="l"},
+ [0xEAD]={d="l"},
+ [0xEAE]={d="l"},
+ [0xEAF]={d="l"},
+ [0xEB0]={d="l"},
+ [0xEB1]={d="nsm"},
+ [0xEB2]={d="l"},
+ [0xEB3]={d="l"},
+ [0xEB4]={d="nsm"},
+ [0xEB5]={d="nsm"},
+ [0xEB6]={d="nsm"},
+ [0xEB7]={d="nsm"},
+ [0xEB8]={d="nsm"},
+ [0xEB9]={d="nsm"},
+ [0xEBA]={d="nsm"},
+ [0xEBB]={d="nsm"},
+ [0xEBC]={d="nsm"},
+ [0xEBD]={d="l"},
+ [0xEC0]={d="l"},
+ [0xEC1]={d="l"},
+ [0xEC2]={d="l"},
+ [0xEC3]={d="l"},
+ [0xEC4]={d="l"},
+ [0xEC6]={d="l"},
+ [0xEC8]={d="nsm"},
+ [0xEC9]={d="nsm"},
+ [0xECA]={d="nsm"},
+ [0xECB]={d="nsm"},
+ [0xECC]={d="nsm"},
+ [0xECD]={d="nsm"},
+ [0xECE]={d="nsm"},
+ [0xED0]={d="l"},
+ [0xED1]={d="l"},
+ [0xED2]={d="l"},
+ [0xED3]={d="l"},
+ [0xED4]={d="l"},
+ [0xED5]={d="l"},
+ [0xED6]={d="l"},
+ [0xED7]={d="l"},
+ [0xED8]={d="l"},
+ [0xED9]={d="l"},
+ [0xEDC]={d="l"},
+ [0xEDD]={d="l"},
+ [0xEDE]={d="l"},
+ [0xEDF]={d="l"},
+ [0xF00]={d="l"},
+ [0xF01]={d="l"},
+ [0xF02]={d="l"},
+ [0xF03]={d="l"},
+ [0xF04]={d="l"},
+ [0xF05]={d="l"},
+ [0xF06]={d="l"},
+ [0xF07]={d="l"},
+ [0xF08]={d="l"},
+ [0xF09]={d="l"},
+ [0xF0A]={d="l"},
+ [0xF0B]={d="l"},
+ [0xF0C]={d="l"},
+ [0xF0D]={d="l"},
+ [0xF0E]={d="l"},
+ [0xF0F]={d="l"},
+ [0xF10]={d="l"},
+ [0xF11]={d="l"},
+ [0xF12]={d="l"},
+ [0xF13]={d="l"},
+ [0xF14]={d="l"},
+ [0xF15]={d="l"},
+ [0xF16]={d="l"},
+ [0xF17]={d="l"},
+ [0xF18]={d="nsm"},
+ [0xF19]={d="nsm"},
+ [0xF1A]={d="l"},
+ [0xF1B]={d="l"},
+ [0xF1C]={d="l"},
+ [0xF1D]={d="l"},
+ [0xF1E]={d="l"},
+ [0xF1F]={d="l"},
+ [0xF20]={d="l"},
+ [0xF21]={d="l"},
+ [0xF22]={d="l"},
+ [0xF23]={d="l"},
+ [0xF24]={d="l"},
+ [0xF25]={d="l"},
+ [0xF26]={d="l"},
+ [0xF27]={d="l"},
+ [0xF28]={d="l"},
+ [0xF29]={d="l"},
+ [0xF2A]={d="l"},
+ [0xF2B]={d="l"},
+ [0xF2C]={d="l"},
+ [0xF2D]={d="l"},
+ [0xF2E]={d="l"},
+ [0xF2F]={d="l"},
+ [0xF30]={d="l"},
+ [0xF31]={d="l"},
+ [0xF32]={d="l"},
+ [0xF33]={d="l"},
+ [0xF34]={d="l"},
+ [0xF35]={d="nsm"},
+ [0xF36]={d="l"},
+ [0xF37]={d="nsm"},
+ [0xF38]={d="l"},
+ [0xF39]={d="nsm"},
+ [0xF3A]={d="on",
+ m=0xF3B},
+ [0xF3B]={d="on",
+ m=0xF3A},
+ [0xF3C]={d="on",
+ m=0xF3D},
+ [0xF3D]={d="on",
+ m=0xF3C},
+ [0xF3E]={d="l"},
+ [0xF3F]={d="l"},
+ [0xF40]={d="l"},
+ [0xF41]={d="l"},
+ [0xF42]={d="l"},
+ [0xF43]={d="l"},
+ [0xF44]={d="l"},
+ [0xF45]={d="l"},
+ [0xF46]={d="l"},
+ [0xF47]={d="l"},
+ [0xF49]={d="l"},
+ [0xF4A]={d="l"},
+ [0xF4B]={d="l"},
+ [0xF4C]={d="l"},
+ [0xF4D]={d="l"},
+ [0xF4E]={d="l"},
+ [0xF4F]={d="l"},
+ [0xF50]={d="l"},
+ [0xF51]={d="l"},
+ [0xF52]={d="l"},
+ [0xF53]={d="l"},
+ [0xF54]={d="l"},
+ [0xF55]={d="l"},
+ [0xF56]={d="l"},
+ [0xF57]={d="l"},
+ [0xF58]={d="l"},
+ [0xF59]={d="l"},
+ [0xF5A]={d="l"},
+ [0xF5B]={d="l"},
+ [0xF5C]={d="l"},
+ [0xF5D]={d="l"},
+ [0xF5E]={d="l"},
+ [0xF5F]={d="l"},
+ [0xF60]={d="l"},
+ [0xF61]={d="l"},
+ [0xF62]={d="l"},
+ [0xF63]={d="l"},
+ [0xF64]={d="l"},
+ [0xF65]={d="l"},
+ [0xF66]={d="l"},
+ [0xF67]={d="l"},
+ [0xF68]={d="l"},
+ [0xF69]={d="l"},
+ [0xF6A]={d="l"},
+ [0xF6B]={d="l"},
+ [0xF6C]={d="l"},
+ [0xF71]={d="nsm"},
+ [0xF72]={d="nsm"},
+ [0xF73]={d="nsm"},
+ [0xF74]={d="nsm"},
+ [0xF75]={d="nsm"},
+ [0xF76]={d="nsm"},
+ [0xF77]={d="nsm"},
+ [0xF78]={d="nsm"},
+ [0xF79]={d="nsm"},
+ [0xF7A]={d="nsm"},
+ [0xF7B]={d="nsm"},
+ [0xF7C]={d="nsm"},
+ [0xF7D]={d="nsm"},
+ [0xF7E]={d="nsm"},
+ [0xF7F]={d="l"},
+ [0xF80]={d="nsm"},
+ [0xF81]={d="nsm"},
+ [0xF82]={d="nsm"},
+ [0xF83]={d="nsm"},
+ [0xF84]={d="nsm"},
+ [0xF85]={d="l"},
+ [0xF86]={d="nsm"},
+ [0xF87]={d="nsm"},
+ [0xF88]={d="l"},
+ [0xF89]={d="l"},
+ [0xF8A]={d="l"},
+ [0xF8B]={d="l"},
+ [0xF8C]={d="l"},
+ [0xF8D]={d="nsm"},
+ [0xF8E]={d="nsm"},
+ [0xF8F]={d="nsm"},
+ [0xF90]={d="nsm"},
+ [0xF91]={d="nsm"},
+ [0xF92]={d="nsm"},
+ [0xF93]={d="nsm"},
+ [0xF94]={d="nsm"},
+ [0xF95]={d="nsm"},
+ [0xF96]={d="nsm"},
+ [0xF97]={d="nsm"},
+ [0xF99]={d="nsm"},
+ [0xF9A]={d="nsm"},
+ [0xF9B]={d="nsm"},
+ [0xF9C]={d="nsm"},
+ [0xF9D]={d="nsm"},
+ [0xF9E]={d="nsm"},
+ [0xF9F]={d="nsm"},
+ [0xFA0]={d="nsm"},
+ [0xFA1]={d="nsm"},
+ [0xFA2]={d="nsm"},
+ [0xFA3]={d="nsm"},
+ [0xFA4]={d="nsm"},
+ [0xFA5]={d="nsm"},
+ [0xFA6]={d="nsm"},
+ [0xFA7]={d="nsm"},
+ [0xFA8]={d="nsm"},
+ [0xFA9]={d="nsm"},
+ [0xFAA]={d="nsm"},
+ [0xFAB]={d="nsm"},
+ [0xFAC]={d="nsm"},
+ [0xFAD]={d="nsm"},
+ [0xFAE]={d="nsm"},
+ [0xFAF]={d="nsm"},
+ [0xFB0]={d="nsm"},
+ [0xFB1]={d="nsm"},
+ [0xFB2]={d="nsm"},
+ [0xFB3]={d="nsm"},
+ [0xFB4]={d="nsm"},
+ [0xFB5]={d="nsm"},
+ [0xFB6]={d="nsm"},
+ [0xFB7]={d="nsm"},
+ [0xFB8]={d="nsm"},
+ [0xFB9]={d="nsm"},
+ [0xFBA]={d="nsm"},
+ [0xFBB]={d="nsm"},
+ [0xFBC]={d="nsm"},
+ [0xFBE]={d="l"},
+ [0xFBF]={d="l"},
+ [0xFC0]={d="l"},
+ [0xFC1]={d="l"},
+ [0xFC2]={d="l"},
+ [0xFC3]={d="l"},
+ [0xFC4]={d="l"},
+ [0xFC5]={d="l"},
+ [0xFC6]={d="nsm"},
+ [0xFC7]={d="l"},
+ [0xFC8]={d="l"},
+ [0xFC9]={d="l"},
+ [0xFCA]={d="l"},
+ [0xFCB]={d="l"},
+ [0xFCC]={d="l"},
+ [0xFCE]={d="l"},
+ [0xFCF]={d="l"},
+ [0xFD0]={d="l"},
+ [0xFD1]={d="l"},
+ [0xFD2]={d="l"},
+ [0xFD3]={d="l"},
+ [0xFD4]={d="l"},
+ [0xFD5]={d="l"},
+ [0xFD6]={d="l"},
+ [0xFD7]={d="l"},
+ [0xFD8]={d="l"},
+ [0xFD9]={d="l"},
+ [0xFDA]={d="l"},
+ [0x1000]={d="l"},
+ [0x1001]={d="l"},
+ [0x1002]={d="l"},
+ [0x1003]={d="l"},
+ [0x1004]={d="l"},
+ [0x1005]={d="l"},
+ [0x1006]={d="l"},
+ [0x1007]={d="l"},
+ [0x1008]={d="l"},
+ [0x1009]={d="l"},
+ [0x100A]={d="l"},
+ [0x100B]={d="l"},
+ [0x100C]={d="l"},
+ [0x100D]={d="l"},
+ [0x100E]={d="l"},
+ [0x100F]={d="l"},
+ [0x1010]={d="l"},
+ [0x1011]={d="l"},
+ [0x1012]={d="l"},
+ [0x1013]={d="l"},
+ [0x1014]={d="l"},
+ [0x1015]={d="l"},
+ [0x1016]={d="l"},
+ [0x1017]={d="l"},
+ [0x1018]={d="l"},
+ [0x1019]={d="l"},
+ [0x101A]={d="l"},
+ [0x101B]={d="l"},
+ [0x101C]={d="l"},
+ [0x101D]={d="l"},
+ [0x101E]={d="l"},
+ [0x101F]={d="l"},
+ [0x1020]={d="l"},
+ [0x1021]={d="l"},
+ [0x1022]={d="l"},
+ [0x1023]={d="l"},
+ [0x1024]={d="l"},
+ [0x1025]={d="l"},
+ [0x1026]={d="l"},
+ [0x1027]={d="l"},
+ [0x1028]={d="l"},
+ [0x1029]={d="l"},
+ [0x102A]={d="l"},
+ [0x102B]={d="l"},
+ [0x102C]={d="l"},
+ [0x102D]={d="nsm"},
+ [0x102E]={d="nsm"},
+ [0x102F]={d="nsm"},
+ [0x1030]={d="nsm"},
+ [0x1031]={d="l"},
+ [0x1032]={d="nsm"},
+ [0x1033]={d="nsm"},
+ [0x1034]={d="nsm"},
+ [0x1035]={d="nsm"},
+ [0x1036]={d="nsm"},
+ [0x1037]={d="nsm"},
+ [0x1038]={d="l"},
+ [0x1039]={d="nsm"},
+ [0x103A]={d="nsm"},
+ [0x103B]={d="l"},
+ [0x103C]={d="l"},
+ [0x103D]={d="nsm"},
+ [0x103E]={d="nsm"},
+ [0x103F]={d="l"},
+ [0x1040]={d="l"},
+ [0x1041]={d="l"},
+ [0x1042]={d="l"},
+ [0x1043]={d="l"},
+ [0x1044]={d="l"},
+ [0x1045]={d="l"},
+ [0x1046]={d="l"},
+ [0x1047]={d="l"},
+ [0x1048]={d="l"},
+ [0x1049]={d="l"},
+ [0x104A]={d="l"},
+ [0x104B]={d="l"},
+ [0x104C]={d="l"},
+ [0x104D]={d="l"},
+ [0x104E]={d="l"},
+ [0x104F]={d="l"},
+ [0x1050]={d="l"},
+ [0x1051]={d="l"},
+ [0x1052]={d="l"},
+ [0x1053]={d="l"},
+ [0x1054]={d="l"},
+ [0x1055]={d="l"},
+ [0x1056]={d="l"},
+ [0x1057]={d="l"},
+ [0x1058]={d="nsm"},
+ [0x1059]={d="nsm"},
+ [0x105A]={d="l"},
+ [0x105B]={d="l"},
+ [0x105C]={d="l"},
+ [0x105D]={d="l"},
+ [0x105E]={d="nsm"},
+ [0x105F]={d="nsm"},
+ [0x1060]={d="nsm"},
+ [0x1061]={d="l"},
+ [0x1062]={d="l"},
+ [0x1063]={d="l"},
+ [0x1064]={d="l"},
+ [0x1065]={d="l"},
+ [0x1066]={d="l"},
+ [0x1067]={d="l"},
+ [0x1068]={d="l"},
+ [0x1069]={d="l"},
+ [0x106A]={d="l"},
+ [0x106B]={d="l"},
+ [0x106C]={d="l"},
+ [0x106D]={d="l"},
+ [0x106E]={d="l"},
+ [0x106F]={d="l"},
+ [0x1070]={d="l"},
+ [0x1071]={d="nsm"},
+ [0x1072]={d="nsm"},
+ [0x1073]={d="nsm"},
+ [0x1074]={d="nsm"},
+ [0x1075]={d="l"},
+ [0x1076]={d="l"},
+ [0x1077]={d="l"},
+ [0x1078]={d="l"},
+ [0x1079]={d="l"},
+ [0x107A]={d="l"},
+ [0x107B]={d="l"},
+ [0x107C]={d="l"},
+ [0x107D]={d="l"},
+ [0x107E]={d="l"},
+ [0x107F]={d="l"},
+ [0x1080]={d="l"},
+ [0x1081]={d="l"},
+ [0x1082]={d="nsm"},
+ [0x1083]={d="l"},
+ [0x1084]={d="l"},
+ [0x1085]={d="nsm"},
+ [0x1086]={d="nsm"},
+ [0x1087]={d="l"},
+ [0x1088]={d="l"},
+ [0x1089]={d="l"},
+ [0x108A]={d="l"},
+ [0x108B]={d="l"},
+ [0x108C]={d="l"},
+ [0x108D]={d="nsm"},
+ [0x108E]={d="l"},
+ [0x108F]={d="l"},
+ [0x1090]={d="l"},
+ [0x1091]={d="l"},
+ [0x1092]={d="l"},
+ [0x1093]={d="l"},
+ [0x1094]={d="l"},
+ [0x1095]={d="l"},
+ [0x1096]={d="l"},
+ [0x1097]={d="l"},
+ [0x1098]={d="l"},
+ [0x1099]={d="l"},
+ [0x109A]={d="l"},
+ [0x109B]={d="l"},
+ [0x109C]={d="l"},
+ [0x109D]={d="nsm"},
+ [0x109E]={d="l"},
+ [0x109F]={d="l"},
+ [0x10A0]={d="l"},
+ [0x10A1]={d="l"},
+ [0x10A2]={d="l"},
+ [0x10A3]={d="l"},
+ [0x10A4]={d="l"},
+ [0x10A5]={d="l"},
+ [0x10A6]={d="l"},
+ [0x10A7]={d="l"},
+ [0x10A8]={d="l"},
+ [0x10A9]={d="l"},
+ [0x10AA]={d="l"},
+ [0x10AB]={d="l"},
+ [0x10AC]={d="l"},
+ [0x10AD]={d="l"},
+ [0x10AE]={d="l"},
+ [0x10AF]={d="l"},
+ [0x10B0]={d="l"},
+ [0x10B1]={d="l"},
+ [0x10B2]={d="l"},
+ [0x10B3]={d="l"},
+ [0x10B4]={d="l"},
+ [0x10B5]={d="l"},
+ [0x10B6]={d="l"},
+ [0x10B7]={d="l"},
+ [0x10B8]={d="l"},
+ [0x10B9]={d="l"},
+ [0x10BA]={d="l"},
+ [0x10BB]={d="l"},
+ [0x10BC]={d="l"},
+ [0x10BD]={d="l"},
+ [0x10BE]={d="l"},
+ [0x10BF]={d="l"},
+ [0x10C0]={d="l"},
+ [0x10C1]={d="l"},
+ [0x10C2]={d="l"},
+ [0x10C3]={d="l"},
+ [0x10C4]={d="l"},
+ [0x10C5]={d="l"},
+ [0x10C7]={d="l"},
+ [0x10CD]={d="l"},
+ [0x10D0]={d="l"},
+ [0x10D1]={d="l"},
+ [0x10D2]={d="l"},
+ [0x10D3]={d="l"},
+ [0x10D4]={d="l"},
+ [0x10D5]={d="l"},
+ [0x10D6]={d="l"},
+ [0x10D7]={d="l"},
+ [0x10D8]={d="l"},
+ [0x10D9]={d="l"},
+ [0x10DA]={d="l"},
+ [0x10DB]={d="l"},
+ [0x10DC]={d="l"},
+ [0x10DD]={d="l"},
+ [0x10DE]={d="l"},
+ [0x10DF]={d="l"},
+ [0x10E0]={d="l"},
+ [0x10E1]={d="l"},
+ [0x10E2]={d="l"},
+ [0x10E3]={d="l"},
+ [0x10E4]={d="l"},
+ [0x10E5]={d="l"},
+ [0x10E6]={d="l"},
+ [0x10E7]={d="l"},
+ [0x10E8]={d="l"},
+ [0x10E9]={d="l"},
+ [0x10EA]={d="l"},
+ [0x10EB]={d="l"},
+ [0x10EC]={d="l"},
+ [0x10ED]={d="l"},
+ [0x10EE]={d="l"},
+ [0x10EF]={d="l"},
+ [0x10F0]={d="l"},
+ [0x10F1]={d="l"},
+ [0x10F2]={d="l"},
+ [0x10F3]={d="l"},
+ [0x10F4]={d="l"},
+ [0x10F5]={d="l"},
+ [0x10F6]={d="l"},
+ [0x10F7]={d="l"},
+ [0x10F8]={d="l"},
+ [0x10F9]={d="l"},
+ [0x10FA]={d="l"},
+ [0x10FB]={d="l"},
+ [0x10FC]={d="l"},
+ [0x10FD]={d="l"},
+ [0x10FE]={d="l"},
+ [0x10FF]={d="l"},
+ [0x1100]={d="l"},
+ [0x1101]={d="l"},
+ [0x1102]={d="l"},
+ [0x1103]={d="l"},
+ [0x1104]={d="l"},
+ [0x1105]={d="l"},
+ [0x1106]={d="l"},
+ [0x1107]={d="l"},
+ [0x1108]={d="l"},
+ [0x1109]={d="l"},
+ [0x110A]={d="l"},
+ [0x110B]={d="l"},
+ [0x110C]={d="l"},
+ [0x110D]={d="l"},
+ [0x110E]={d="l"},
+ [0x110F]={d="l"},
+ [0x1110]={d="l"},
+ [0x1111]={d="l"},
+ [0x1112]={d="l"},
+ [0x1113]={d="l"},
+ [0x1114]={d="l"},
+ [0x1115]={d="l"},
+ [0x1116]={d="l"},
+ [0x1117]={d="l"},
+ [0x1118]={d="l"},
+ [0x1119]={d="l"},
+ [0x111A]={d="l"},
+ [0x111B]={d="l"},
+ [0x111C]={d="l"},
+ [0x111D]={d="l"},
+ [0x111E]={d="l"},
+ [0x111F]={d="l"},
+ [0x1120]={d="l"},
+ [0x1121]={d="l"},
+ [0x1122]={d="l"},
+ [0x1123]={d="l"},
+ [0x1124]={d="l"},
+ [0x1125]={d="l"},
+ [0x1126]={d="l"},
+ [0x1127]={d="l"},
+ [0x1128]={d="l"},
+ [0x1129]={d="l"},
+ [0x112A]={d="l"},
+ [0x112B]={d="l"},
+ [0x112C]={d="l"},
+ [0x112D]={d="l"},
+ [0x112E]={d="l"},
+ [0x112F]={d="l"},
+ [0x1130]={d="l"},
+ [0x1131]={d="l"},
+ [0x1132]={d="l"},
+ [0x1133]={d="l"},
+ [0x1134]={d="l"},
+ [0x1135]={d="l"},
+ [0x1136]={d="l"},
+ [0x1137]={d="l"},
+ [0x1138]={d="l"},
+ [0x1139]={d="l"},
+ [0x113A]={d="l"},
+ [0x113B]={d="l"},
+ [0x113C]={d="l"},
+ [0x113D]={d="l"},
+ [0x113E]={d="l"},
+ [0x113F]={d="l"},
+ [0x1140]={d="l"},
+ [0x1141]={d="l"},
+ [0x1142]={d="l"},
+ [0x1143]={d="l"},
+ [0x1144]={d="l"},
+ [0x1145]={d="l"},
+ [0x1146]={d="l"},
+ [0x1147]={d="l"},
+ [0x1148]={d="l"},
+ [0x1149]={d="l"},
+ [0x114A]={d="l"},
+ [0x114B]={d="l"},
+ [0x114C]={d="l"},
+ [0x114D]={d="l"},
+ [0x114E]={d="l"},
+ [0x114F]={d="l"},
+ [0x1150]={d="l"},
+ [0x1151]={d="l"},
+ [0x1152]={d="l"},
+ [0x1153]={d="l"},
+ [0x1154]={d="l"},
+ [0x1155]={d="l"},
+ [0x1156]={d="l"},
+ [0x1157]={d="l"},
+ [0x1158]={d="l"},
+ [0x1159]={d="l"},
+ [0x115A]={d="l"},
+ [0x115B]={d="l"},
+ [0x115C]={d="l"},
+ [0x115D]={d="l"},
+ [0x115E]={d="l"},
+ [0x115F]={d="l"},
+ [0x1160]={d="l"},
+ [0x1161]={d="l"},
+ [0x1162]={d="l"},
+ [0x1163]={d="l"},
+ [0x1164]={d="l"},
+ [0x1165]={d="l"},
+ [0x1166]={d="l"},
+ [0x1167]={d="l"},
+ [0x1168]={d="l"},
+ [0x1169]={d="l"},
+ [0x116A]={d="l"},
+ [0x116B]={d="l"},
+ [0x116C]={d="l"},
+ [0x116D]={d="l"},
+ [0x116E]={d="l"},
+ [0x116F]={d="l"},
+ [0x1170]={d="l"},
+ [0x1171]={d="l"},
+ [0x1172]={d="l"},
+ [0x1173]={d="l"},
+ [0x1174]={d="l"},
+ [0x1175]={d="l"},
+ [0x1176]={d="l"},
+ [0x1177]={d="l"},
+ [0x1178]={d="l"},
+ [0x1179]={d="l"},
+ [0x117A]={d="l"},
+ [0x117B]={d="l"},
+ [0x117C]={d="l"},
+ [0x117D]={d="l"},
+ [0x117E]={d="l"},
+ [0x117F]={d="l"},
+ [0x1180]={d="l"},
+ [0x1181]={d="l"},
+ [0x1182]={d="l"},
+ [0x1183]={d="l"},
+ [0x1184]={d="l"},
+ [0x1185]={d="l"},
+ [0x1186]={d="l"},
+ [0x1187]={d="l"},
+ [0x1188]={d="l"},
+ [0x1189]={d="l"},
+ [0x118A]={d="l"},
+ [0x118B]={d="l"},
+ [0x118C]={d="l"},
+ [0x118D]={d="l"},
+ [0x118E]={d="l"},
+ [0x118F]={d="l"},
+ [0x1190]={d="l"},
+ [0x1191]={d="l"},
+ [0x1192]={d="l"},
+ [0x1193]={d="l"},
+ [0x1194]={d="l"},
+ [0x1195]={d="l"},
+ [0x1196]={d="l"},
+ [0x1197]={d="l"},
+ [0x1198]={d="l"},
+ [0x1199]={d="l"},
+ [0x119A]={d="l"},
+ [0x119B]={d="l"},
+ [0x119C]={d="l"},
+ [0x119D]={d="l"},
+ [0x119E]={d="l"},
+ [0x119F]={d="l"},
+ [0x11A0]={d="l"},
+ [0x11A1]={d="l"},
+ [0x11A2]={d="l"},
+ [0x11A3]={d="l"},
+ [0x11A4]={d="l"},
+ [0x11A5]={d="l"},
+ [0x11A6]={d="l"},
+ [0x11A7]={d="l"},
+ [0x11A8]={d="l"},
+ [0x11A9]={d="l"},
+ [0x11AA]={d="l"},
+ [0x11AB]={d="l"},
+ [0x11AC]={d="l"},
+ [0x11AD]={d="l"},
+ [0x11AE]={d="l"},
+ [0x11AF]={d="l"},
+ [0x11B0]={d="l"},
+ [0x11B1]={d="l"},
+ [0x11B2]={d="l"},
+ [0x11B3]={d="l"},
+ [0x11B4]={d="l"},
+ [0x11B5]={d="l"},
+ [0x11B6]={d="l"},
+ [0x11B7]={d="l"},
+ [0x11B8]={d="l"},
+ [0x11B9]={d="l"},
+ [0x11BA]={d="l"},
+ [0x11BB]={d="l"},
+ [0x11BC]={d="l"},
+ [0x11BD]={d="l"},
+ [0x11BE]={d="l"},
+ [0x11BF]={d="l"},
+ [0x11C0]={d="l"},
+ [0x11C1]={d="l"},
+ [0x11C2]={d="l"},
+ [0x11C3]={d="l"},
+ [0x11C4]={d="l"},
+ [0x11C5]={d="l"},
+ [0x11C6]={d="l"},
+ [0x11C7]={d="l"},
+ [0x11C8]={d="l"},
+ [0x11C9]={d="l"},
+ [0x11CA]={d="l"},
+ [0x11CB]={d="l"},
+ [0x11CC]={d="l"},
+ [0x11CD]={d="l"},
+ [0x11CE]={d="l"},
+ [0x11CF]={d="l"},
+ [0x11D0]={d="l"},
+ [0x11D1]={d="l"},
+ [0x11D2]={d="l"},
+ [0x11D3]={d="l"},
+ [0x11D4]={d="l"},
+ [0x11D5]={d="l"},
+ [0x11D6]={d="l"},
+ [0x11D7]={d="l"},
+ [0x11D8]={d="l"},
+ [0x11D9]={d="l"},
+ [0x11DA]={d="l"},
+ [0x11DB]={d="l"},
+ [0x11DC]={d="l"},
+ [0x11DD]={d="l"},
+ [0x11DE]={d="l"},
+ [0x11DF]={d="l"},
+ [0x11E0]={d="l"},
+ [0x11E1]={d="l"},
+ [0x11E2]={d="l"},
+ [0x11E3]={d="l"},
+ [0x11E4]={d="l"},
+ [0x11E5]={d="l"},
+ [0x11E6]={d="l"},
+ [0x11E7]={d="l"},
+ [0x11E8]={d="l"},
+ [0x11E9]={d="l"},
+ [0x11EA]={d="l"},
+ [0x11EB]={d="l"},
+ [0x11EC]={d="l"},
+ [0x11ED]={d="l"},
+ [0x11EE]={d="l"},
+ [0x11EF]={d="l"},
+ [0x11F0]={d="l"},
+ [0x11F1]={d="l"},
+ [0x11F2]={d="l"},
+ [0x11F3]={d="l"},
+ [0x11F4]={d="l"},
+ [0x11F5]={d="l"},
+ [0x11F6]={d="l"},
+ [0x11F7]={d="l"},
+ [0x11F8]={d="l"},
+ [0x11F9]={d="l"},
+ [0x11FA]={d="l"},
+ [0x11FB]={d="l"},
+ [0x11FC]={d="l"},
+ [0x11FD]={d="l"},
+ [0x11FE]={d="l"},
+ [0x11FF]={d="l"},
+ [0x1200]={d="l"},
+ [0x1201]={d="l"},
+ [0x1202]={d="l"},
+ [0x1203]={d="l"},
+ [0x1204]={d="l"},
+ [0x1205]={d="l"},
+ [0x1206]={d="l"},
+ [0x1207]={d="l"},
+ [0x1208]={d="l"},
+ [0x1209]={d="l"},
+ [0x120A]={d="l"},
+ [0x120B]={d="l"},
+ [0x120C]={d="l"},
+ [0x120D]={d="l"},
+ [0x120E]={d="l"},
+ [0x120F]={d="l"},
+ [0x1210]={d="l"},
+ [0x1211]={d="l"},
+ [0x1212]={d="l"},
+ [0x1213]={d="l"},
+ [0x1214]={d="l"},
+ [0x1215]={d="l"},
+ [0x1216]={d="l"},
+ [0x1217]={d="l"},
+ [0x1218]={d="l"},
+ [0x1219]={d="l"},
+ [0x121A]={d="l"},
+ [0x121B]={d="l"},
+ [0x121C]={d="l"},
+ [0x121D]={d="l"},
+ [0x121E]={d="l"},
+ [0x121F]={d="l"},
+ [0x1220]={d="l"},
+ [0x1221]={d="l"},
+ [0x1222]={d="l"},
+ [0x1223]={d="l"},
+ [0x1224]={d="l"},
+ [0x1225]={d="l"},
+ [0x1226]={d="l"},
+ [0x1227]={d="l"},
+ [0x1228]={d="l"},
+ [0x1229]={d="l"},
+ [0x122A]={d="l"},
+ [0x122B]={d="l"},
+ [0x122C]={d="l"},
+ [0x122D]={d="l"},
+ [0x122E]={d="l"},
+ [0x122F]={d="l"},
+ [0x1230]={d="l"},
+ [0x1231]={d="l"},
+ [0x1232]={d="l"},
+ [0x1233]={d="l"},
+ [0x1234]={d="l"},
+ [0x1235]={d="l"},
+ [0x1236]={d="l"},
+ [0x1237]={d="l"},
+ [0x1238]={d="l"},
+ [0x1239]={d="l"},
+ [0x123A]={d="l"},
+ [0x123B]={d="l"},
+ [0x123C]={d="l"},
+ [0x123D]={d="l"},
+ [0x123E]={d="l"},
+ [0x123F]={d="l"},
+ [0x1240]={d="l"},
+ [0x1241]={d="l"},
+ [0x1242]={d="l"},
+ [0x1243]={d="l"},
+ [0x1244]={d="l"},
+ [0x1245]={d="l"},
+ [0x1246]={d="l"},
+ [0x1247]={d="l"},
+ [0x1248]={d="l"},
+ [0x124A]={d="l"},
+ [0x124B]={d="l"},
+ [0x124C]={d="l"},
+ [0x124D]={d="l"},
+ [0x1250]={d="l"},
+ [0x1251]={d="l"},
+ [0x1252]={d="l"},
+ [0x1253]={d="l"},
+ [0x1254]={d="l"},
+ [0x1255]={d="l"},
+ [0x1256]={d="l"},
+ [0x1258]={d="l"},
+ [0x125A]={d="l"},
+ [0x125B]={d="l"},
+ [0x125C]={d="l"},
+ [0x125D]={d="l"},
+ [0x1260]={d="l"},
+ [0x1261]={d="l"},
+ [0x1262]={d="l"},
+ [0x1263]={d="l"},
+ [0x1264]={d="l"},
+ [0x1265]={d="l"},
+ [0x1266]={d="l"},
+ [0x1267]={d="l"},
+ [0x1268]={d="l"},
+ [0x1269]={d="l"},
+ [0x126A]={d="l"},
+ [0x126B]={d="l"},
+ [0x126C]={d="l"},
+ [0x126D]={d="l"},
+ [0x126E]={d="l"},
+ [0x126F]={d="l"},
+ [0x1270]={d="l"},
+ [0x1271]={d="l"},
+ [0x1272]={d="l"},
+ [0x1273]={d="l"},
+ [0x1274]={d="l"},
+ [0x1275]={d="l"},
+ [0x1276]={d="l"},
+ [0x1277]={d="l"},
+ [0x1278]={d="l"},
+ [0x1279]={d="l"},
+ [0x127A]={d="l"},
+ [0x127B]={d="l"},
+ [0x127C]={d="l"},
+ [0x127D]={d="l"},
+ [0x127E]={d="l"},
+ [0x127F]={d="l"},
+ [0x1280]={d="l"},
+ [0x1281]={d="l"},
+ [0x1282]={d="l"},
+ [0x1283]={d="l"},
+ [0x1284]={d="l"},
+ [0x1285]={d="l"},
+ [0x1286]={d="l"},
+ [0x1287]={d="l"},
+ [0x1288]={d="l"},
+ [0x128A]={d="l"},
+ [0x128B]={d="l"},
+ [0x128C]={d="l"},
+ [0x128D]={d="l"},
+ [0x1290]={d="l"},
+ [0x1291]={d="l"},
+ [0x1292]={d="l"},
+ [0x1293]={d="l"},
+ [0x1294]={d="l"},
+ [0x1295]={d="l"},
+ [0x1296]={d="l"},
+ [0x1297]={d="l"},
+ [0x1298]={d="l"},
+ [0x1299]={d="l"},
+ [0x129A]={d="l"},
+ [0x129B]={d="l"},
+ [0x129C]={d="l"},
+ [0x129D]={d="l"},
+ [0x129E]={d="l"},
+ [0x129F]={d="l"},
+ [0x12A0]={d="l"},
+ [0x12A1]={d="l"},
+ [0x12A2]={d="l"},
+ [0x12A3]={d="l"},
+ [0x12A4]={d="l"},
+ [0x12A5]={d="l"},
+ [0x12A6]={d="l"},
+ [0x12A7]={d="l"},
+ [0x12A8]={d="l"},
+ [0x12A9]={d="l"},
+ [0x12AA]={d="l"},
+ [0x12AB]={d="l"},
+ [0x12AC]={d="l"},
+ [0x12AD]={d="l"},
+ [0x12AE]={d="l"},
+ [0x12AF]={d="l"},
+ [0x12B0]={d="l"},
+ [0x12B2]={d="l"},
+ [0x12B3]={d="l"},
+ [0x12B4]={d="l"},
+ [0x12B5]={d="l"},
+ [0x12B8]={d="l"},
+ [0x12B9]={d="l"},
+ [0x12BA]={d="l"},
+ [0x12BB]={d="l"},
+ [0x12BC]={d="l"},
+ [0x12BD]={d="l"},
+ [0x12BE]={d="l"},
+ [0x12C0]={d="l"},
+ [0x12C2]={d="l"},
+ [0x12C3]={d="l"},
+ [0x12C4]={d="l"},
+ [0x12C5]={d="l"},
+ [0x12C8]={d="l"},
+ [0x12C9]={d="l"},
+ [0x12CA]={d="l"},
+ [0x12CB]={d="l"},
+ [0x12CC]={d="l"},
+ [0x12CD]={d="l"},
+ [0x12CE]={d="l"},
+ [0x12CF]={d="l"},
+ [0x12D0]={d="l"},
+ [0x12D1]={d="l"},
+ [0x12D2]={d="l"},
+ [0x12D3]={d="l"},
+ [0x12D4]={d="l"},
+ [0x12D5]={d="l"},
+ [0x12D6]={d="l"},
+ [0x12D8]={d="l"},
+ [0x12D9]={d="l"},
+ [0x12DA]={d="l"},
+ [0x12DB]={d="l"},
+ [0x12DC]={d="l"},
+ [0x12DD]={d="l"},
+ [0x12DE]={d="l"},
+ [0x12DF]={d="l"},
+ [0x12E0]={d="l"},
+ [0x12E1]={d="l"},
+ [0x12E2]={d="l"},
+ [0x12E3]={d="l"},
+ [0x12E4]={d="l"},
+ [0x12E5]={d="l"},
+ [0x12E6]={d="l"},
+ [0x12E7]={d="l"},
+ [0x12E8]={d="l"},
+ [0x12E9]={d="l"},
+ [0x12EA]={d="l"},
+ [0x12EB]={d="l"},
+ [0x12EC]={d="l"},
+ [0x12ED]={d="l"},
+ [0x12EE]={d="l"},
+ [0x12EF]={d="l"},
+ [0x12F0]={d="l"},
+ [0x12F1]={d="l"},
+ [0x12F2]={d="l"},
+ [0x12F3]={d="l"},
+ [0x12F4]={d="l"},
+ [0x12F5]={d="l"},
+ [0x12F6]={d="l"},
+ [0x12F7]={d="l"},
+ [0x12F8]={d="l"},
+ [0x12F9]={d="l"},
+ [0x12FA]={d="l"},
+ [0x12FB]={d="l"},
+ [0x12FC]={d="l"},
+ [0x12FD]={d="l"},
+ [0x12FE]={d="l"},
+ [0x12FF]={d="l"},
+ [0x1300]={d="l"},
+ [0x1301]={d="l"},
+ [0x1302]={d="l"},
+ [0x1303]={d="l"},
+ [0x1304]={d="l"},
+ [0x1305]={d="l"},
+ [0x1306]={d="l"},
+ [0x1307]={d="l"},
+ [0x1308]={d="l"},
+ [0x1309]={d="l"},
+ [0x130A]={d="l"},
+ [0x130B]={d="l"},
+ [0x130C]={d="l"},
+ [0x130D]={d="l"},
+ [0x130E]={d="l"},
+ [0x130F]={d="l"},
+ [0x1310]={d="l"},
+ [0x1312]={d="l"},
+ [0x1313]={d="l"},
+ [0x1314]={d="l"},
+ [0x1315]={d="l"},
+ [0x1318]={d="l"},
+ [0x1319]={d="l"},
+ [0x131A]={d="l"},
+ [0x131B]={d="l"},
+ [0x131C]={d="l"},
+ [0x131D]={d="l"},
+ [0x131E]={d="l"},
+ [0x131F]={d="l"},
+ [0x1320]={d="l"},
+ [0x1321]={d="l"},
+ [0x1322]={d="l"},
+ [0x1323]={d="l"},
+ [0x1324]={d="l"},
+ [0x1325]={d="l"},
+ [0x1326]={d="l"},
+ [0x1327]={d="l"},
+ [0x1328]={d="l"},
+ [0x1329]={d="l"},
+ [0x132A]={d="l"},
+ [0x132B]={d="l"},
+ [0x132C]={d="l"},
+ [0x132D]={d="l"},
+ [0x132E]={d="l"},
+ [0x132F]={d="l"},
+ [0x1330]={d="l"},
+ [0x1331]={d="l"},
+ [0x1332]={d="l"},
+ [0x1333]={d="l"},
+ [0x1334]={d="l"},
+ [0x1335]={d="l"},
+ [0x1336]={d="l"},
+ [0x1337]={d="l"},
+ [0x1338]={d="l"},
+ [0x1339]={d="l"},
+ [0x133A]={d="l"},
+ [0x133B]={d="l"},
+ [0x133C]={d="l"},
+ [0x133D]={d="l"},
+ [0x133E]={d="l"},
+ [0x133F]={d="l"},
+ [0x1340]={d="l"},
+ [0x1341]={d="l"},
+ [0x1342]={d="l"},
+ [0x1343]={d="l"},
+ [0x1344]={d="l"},
+ [0x1345]={d="l"},
+ [0x1346]={d="l"},
+ [0x1347]={d="l"},
+ [0x1348]={d="l"},
+ [0x1349]={d="l"},
+ [0x134A]={d="l"},
+ [0x134B]={d="l"},
+ [0x134C]={d="l"},
+ [0x134D]={d="l"},
+ [0x134E]={d="l"},
+ [0x134F]={d="l"},
+ [0x1350]={d="l"},
+ [0x1351]={d="l"},
+ [0x1352]={d="l"},
+ [0x1353]={d="l"},
+ [0x1354]={d="l"},
+ [0x1355]={d="l"},
+ [0x1356]={d="l"},
+ [0x1357]={d="l"},
+ [0x1358]={d="l"},
+ [0x1359]={d="l"},
+ [0x135A]={d="l"},
+ [0x135D]={d="nsm"},
+ [0x135E]={d="nsm"},
+ [0x135F]={d="nsm"},
+ [0x1360]={d="l"},
+ [0x1361]={d="l"},
+ [0x1362]={d="l"},
+ [0x1363]={d="l"},
+ [0x1364]={d="l"},
+ [0x1365]={d="l"},
+ [0x1366]={d="l"},
+ [0x1367]={d="l"},
+ [0x1368]={d="l"},
+ [0x1369]={d="l"},
+ [0x136A]={d="l"},
+ [0x136B]={d="l"},
+ [0x136C]={d="l"},
+ [0x136D]={d="l"},
+ [0x136E]={d="l"},
+ [0x136F]={d="l"},
+ [0x1370]={d="l"},
+ [0x1371]={d="l"},
+ [0x1372]={d="l"},
+ [0x1373]={d="l"},
+ [0x1374]={d="l"},
+ [0x1375]={d="l"},
+ [0x1376]={d="l"},
+ [0x1377]={d="l"},
+ [0x1378]={d="l"},
+ [0x1379]={d="l"},
+ [0x137A]={d="l"},
+ [0x137B]={d="l"},
+ [0x137C]={d="l"},
+ [0x1380]={d="l"},
+ [0x1381]={d="l"},
+ [0x1382]={d="l"},
+ [0x1383]={d="l"},
+ [0x1384]={d="l"},
+ [0x1385]={d="l"},
+ [0x1386]={d="l"},
+ [0x1387]={d="l"},
+ [0x1388]={d="l"},
+ [0x1389]={d="l"},
+ [0x138A]={d="l"},
+ [0x138B]={d="l"},
+ [0x138C]={d="l"},
+ [0x138D]={d="l"},
+ [0x138E]={d="l"},
+ [0x138F]={d="l"},
+ [0x1390]={d="on"},
+ [0x1391]={d="on"},
+ [0x1392]={d="on"},
+ [0x1393]={d="on"},
+ [0x1394]={d="on"},
+ [0x1395]={d="on"},
+ [0x1396]={d="on"},
+ [0x1397]={d="on"},
+ [0x1398]={d="on"},
+ [0x1399]={d="on"},
+ [0x13A0]={d="l"},
+ [0x13A1]={d="l"},
+ [0x13A2]={d="l"},
+ [0x13A3]={d="l"},
+ [0x13A4]={d="l"},
+ [0x13A5]={d="l"},
+ [0x13A6]={d="l"},
+ [0x13A7]={d="l"},
+ [0x13A8]={d="l"},
+ [0x13A9]={d="l"},
+ [0x13AA]={d="l"},
+ [0x13AB]={d="l"},
+ [0x13AC]={d="l"},
+ [0x13AD]={d="l"},
+ [0x13AE]={d="l"},
+ [0x13AF]={d="l"},
+ [0x13B0]={d="l"},
+ [0x13B1]={d="l"},
+ [0x13B2]={d="l"},
+ [0x13B3]={d="l"},
+ [0x13B4]={d="l"},
+ [0x13B5]={d="l"},
+ [0x13B6]={d="l"},
+ [0x13B7]={d="l"},
+ [0x13B8]={d="l"},
+ [0x13B9]={d="l"},
+ [0x13BA]={d="l"},
+ [0x13BB]={d="l"},
+ [0x13BC]={d="l"},
+ [0x13BD]={d="l"},
+ [0x13BE]={d="l"},
+ [0x13BF]={d="l"},
+ [0x13C0]={d="l"},
+ [0x13C1]={d="l"},
+ [0x13C2]={d="l"},
+ [0x13C3]={d="l"},
+ [0x13C4]={d="l"},
+ [0x13C5]={d="l"},
+ [0x13C6]={d="l"},
+ [0x13C7]={d="l"},
+ [0x13C8]={d="l"},
+ [0x13C9]={d="l"},
+ [0x13CA]={d="l"},
+ [0x13CB]={d="l"},
+ [0x13CC]={d="l"},
+ [0x13CD]={d="l"},
+ [0x13CE]={d="l"},
+ [0x13CF]={d="l"},
+ [0x13D0]={d="l"},
+ [0x13D1]={d="l"},
+ [0x13D2]={d="l"},
+ [0x13D3]={d="l"},
+ [0x13D4]={d="l"},
+ [0x13D5]={d="l"},
+ [0x13D6]={d="l"},
+ [0x13D7]={d="l"},
+ [0x13D8]={d="l"},
+ [0x13D9]={d="l"},
+ [0x13DA]={d="l"},
+ [0x13DB]={d="l"},
+ [0x13DC]={d="l"},
+ [0x13DD]={d="l"},
+ [0x13DE]={d="l"},
+ [0x13DF]={d="l"},
+ [0x13E0]={d="l"},
+ [0x13E1]={d="l"},
+ [0x13E2]={d="l"},
+ [0x13E3]={d="l"},
+ [0x13E4]={d="l"},
+ [0x13E5]={d="l"},
+ [0x13E6]={d="l"},
+ [0x13E7]={d="l"},
+ [0x13E8]={d="l"},
+ [0x13E9]={d="l"},
+ [0x13EA]={d="l"},
+ [0x13EB]={d="l"},
+ [0x13EC]={d="l"},
+ [0x13ED]={d="l"},
+ [0x13EE]={d="l"},
+ [0x13EF]={d="l"},
+ [0x13F0]={d="l"},
+ [0x13F1]={d="l"},
+ [0x13F2]={d="l"},
+ [0x13F3]={d="l"},
+ [0x13F4]={d="l"},
+ [0x13F5]={d="l"},
+ [0x13F8]={d="l"},
+ [0x13F9]={d="l"},
+ [0x13FA]={d="l"},
+ [0x13FB]={d="l"},
+ [0x13FC]={d="l"},
+ [0x13FD]={d="l"},
+ [0x1400]={d="on"},
+ [0x1401]={d="l"},
+ [0x1402]={d="l"},
+ [0x1403]={d="l"},
+ [0x1404]={d="l"},
+ [0x1405]={d="l"},
+ [0x1406]={d="l"},
+ [0x1407]={d="l"},
+ [0x1408]={d="l"},
+ [0x1409]={d="l"},
+ [0x140A]={d="l"},
+ [0x140B]={d="l"},
+ [0x140C]={d="l"},
+ [0x140D]={d="l"},
+ [0x140E]={d="l"},
+ [0x140F]={d="l"},
+ [0x1410]={d="l"},
+ [0x1411]={d="l"},
+ [0x1412]={d="l"},
+ [0x1413]={d="l"},
+ [0x1414]={d="l"},
+ [0x1415]={d="l"},
+ [0x1416]={d="l"},
+ [0x1417]={d="l"},
+ [0x1418]={d="l"},
+ [0x1419]={d="l"},
+ [0x141A]={d="l"},
+ [0x141B]={d="l"},
+ [0x141C]={d="l"},
+ [0x141D]={d="l"},
+ [0x141E]={d="l"},
+ [0x141F]={d="l"},
+ [0x1420]={d="l"},
+ [0x1421]={d="l"},
+ [0x1422]={d="l"},
+ [0x1423]={d="l"},
+ [0x1424]={d="l"},
+ [0x1425]={d="l"},
+ [0x1426]={d="l"},
+ [0x1427]={d="l"},
+ [0x1428]={d="l"},
+ [0x1429]={d="l"},
+ [0x142A]={d="l"},
+ [0x142B]={d="l"},
+ [0x142C]={d="l"},
+ [0x142D]={d="l"},
+ [0x142E]={d="l"},
+ [0x142F]={d="l"},
+ [0x1430]={d="l"},
+ [0x1431]={d="l"},
+ [0x1432]={d="l"},
+ [0x1433]={d="l"},
+ [0x1434]={d="l"},
+ [0x1435]={d="l"},
+ [0x1436]={d="l"},
+ [0x1437]={d="l"},
+ [0x1438]={d="l"},
+ [0x1439]={d="l"},
+ [0x143A]={d="l"},
+ [0x143B]={d="l"},
+ [0x143C]={d="l"},
+ [0x143D]={d="l"},
+ [0x143E]={d="l"},
+ [0x143F]={d="l"},
+ [0x1440]={d="l"},
+ [0x1441]={d="l"},
+ [0x1442]={d="l"},
+ [0x1443]={d="l"},
+ [0x1444]={d="l"},
+ [0x1445]={d="l"},
+ [0x1446]={d="l"},
+ [0x1447]={d="l"},
+ [0x1448]={d="l"},
+ [0x1449]={d="l"},
+ [0x144A]={d="l"},
+ [0x144B]={d="l"},
+ [0x144C]={d="l"},
+ [0x144D]={d="l"},
+ [0x144E]={d="l"},
+ [0x144F]={d="l"},
+ [0x1450]={d="l"},
+ [0x1451]={d="l"},
+ [0x1452]={d="l"},
+ [0x1453]={d="l"},
+ [0x1454]={d="l"},
+ [0x1455]={d="l"},
+ [0x1456]={d="l"},
+ [0x1457]={d="l"},
+ [0x1458]={d="l"},
+ [0x1459]={d="l"},
+ [0x145A]={d="l"},
+ [0x145B]={d="l"},
+ [0x145C]={d="l"},
+ [0x145D]={d="l"},
+ [0x145E]={d="l"},
+ [0x145F]={d="l"},
+ [0x1460]={d="l"},
+ [0x1461]={d="l"},
+ [0x1462]={d="l"},
+ [0x1463]={d="l"},
+ [0x1464]={d="l"},
+ [0x1465]={d="l"},
+ [0x1466]={d="l"},
+ [0x1467]={d="l"},
+ [0x1468]={d="l"},
+ [0x1469]={d="l"},
+ [0x146A]={d="l"},
+ [0x146B]={d="l"},
+ [0x146C]={d="l"},
+ [0x146D]={d="l"},
+ [0x146E]={d="l"},
+ [0x146F]={d="l"},
+ [0x1470]={d="l"},
+ [0x1471]={d="l"},
+ [0x1472]={d="l"},
+ [0x1473]={d="l"},
+ [0x1474]={d="l"},
+ [0x1475]={d="l"},
+ [0x1476]={d="l"},
+ [0x1477]={d="l"},
+ [0x1478]={d="l"},
+ [0x1479]={d="l"},
+ [0x147A]={d="l"},
+ [0x147B]={d="l"},
+ [0x147C]={d="l"},
+ [0x147D]={d="l"},
+ [0x147E]={d="l"},
+ [0x147F]={d="l"},
+ [0x1480]={d="l"},
+ [0x1481]={d="l"},
+ [0x1482]={d="l"},
+ [0x1483]={d="l"},
+ [0x1484]={d="l"},
+ [0x1485]={d="l"},
+ [0x1486]={d="l"},
+ [0x1487]={d="l"},
+ [0x1488]={d="l"},
+ [0x1489]={d="l"},
+ [0x148A]={d="l"},
+ [0x148B]={d="l"},
+ [0x148C]={d="l"},
+ [0x148D]={d="l"},
+ [0x148E]={d="l"},
+ [0x148F]={d="l"},
+ [0x1490]={d="l"},
+ [0x1491]={d="l"},
+ [0x1492]={d="l"},
+ [0x1493]={d="l"},
+ [0x1494]={d="l"},
+ [0x1495]={d="l"},
+ [0x1496]={d="l"},
+ [0x1497]={d="l"},
+ [0x1498]={d="l"},
+ [0x1499]={d="l"},
+ [0x149A]={d="l"},
+ [0x149B]={d="l"},
+ [0x149C]={d="l"},
+ [0x149D]={d="l"},
+ [0x149E]={d="l"},
+ [0x149F]={d="l"},
+ [0x14A0]={d="l"},
+ [0x14A1]={d="l"},
+ [0x14A2]={d="l"},
+ [0x14A3]={d="l"},
+ [0x14A4]={d="l"},
+ [0x14A5]={d="l"},
+ [0x14A6]={d="l"},
+ [0x14A7]={d="l"},
+ [0x14A8]={d="l"},
+ [0x14A9]={d="l"},
+ [0x14AA]={d="l"},
+ [0x14AB]={d="l"},
+ [0x14AC]={d="l"},
+ [0x14AD]={d="l"},
+ [0x14AE]={d="l"},
+ [0x14AF]={d="l"},
+ [0x14B0]={d="l"},
+ [0x14B1]={d="l"},
+ [0x14B2]={d="l"},
+ [0x14B3]={d="l"},
+ [0x14B4]={d="l"},
+ [0x14B5]={d="l"},
+ [0x14B6]={d="l"},
+ [0x14B7]={d="l"},
+ [0x14B8]={d="l"},
+ [0x14B9]={d="l"},
+ [0x14BA]={d="l"},
+ [0x14BB]={d="l"},
+ [0x14BC]={d="l"},
+ [0x14BD]={d="l"},
+ [0x14BE]={d="l"},
+ [0x14BF]={d="l"},
+ [0x14C0]={d="l"},
+ [0x14C1]={d="l"},
+ [0x14C2]={d="l"},
+ [0x14C3]={d="l"},
+ [0x14C4]={d="l"},
+ [0x14C5]={d="l"},
+ [0x14C6]={d="l"},
+ [0x14C7]={d="l"},
+ [0x14C8]={d="l"},
+ [0x14C9]={d="l"},
+ [0x14CA]={d="l"},
+ [0x14CB]={d="l"},
+ [0x14CC]={d="l"},
+ [0x14CD]={d="l"},
+ [0x14CE]={d="l"},
+ [0x14CF]={d="l"},
+ [0x14D0]={d="l"},
+ [0x14D1]={d="l"},
+ [0x14D2]={d="l"},
+ [0x14D3]={d="l"},
+ [0x14D4]={d="l"},
+ [0x14D5]={d="l"},
+ [0x14D6]={d="l"},
+ [0x14D7]={d="l"},
+ [0x14D8]={d="l"},
+ [0x14D9]={d="l"},
+ [0x14DA]={d="l"},
+ [0x14DB]={d="l"},
+ [0x14DC]={d="l"},
+ [0x14DD]={d="l"},
+ [0x14DE]={d="l"},
+ [0x14DF]={d="l"},
+ [0x14E0]={d="l"},
+ [0x14E1]={d="l"},
+ [0x14E2]={d="l"},
+ [0x14E3]={d="l"},
+ [0x14E4]={d="l"},
+ [0x14E5]={d="l"},
+ [0x14E6]={d="l"},
+ [0x14E7]={d="l"},
+ [0x14E8]={d="l"},
+ [0x14E9]={d="l"},
+ [0x14EA]={d="l"},
+ [0x14EB]={d="l"},
+ [0x14EC]={d="l"},
+ [0x14ED]={d="l"},
+ [0x14EE]={d="l"},
+ [0x14EF]={d="l"},
+ [0x14F0]={d="l"},
+ [0x14F1]={d="l"},
+ [0x14F2]={d="l"},
+ [0x14F3]={d="l"},
+ [0x14F4]={d="l"},
+ [0x14F5]={d="l"},
+ [0x14F6]={d="l"},
+ [0x14F7]={d="l"},
+ [0x14F8]={d="l"},
+ [0x14F9]={d="l"},
+ [0x14FA]={d="l"},
+ [0x14FB]={d="l"},
+ [0x14FC]={d="l"},
+ [0x14FD]={d="l"},
+ [0x14FE]={d="l"},
+ [0x14FF]={d="l"},
+ [0x1500]={d="l"},
+ [0x1501]={d="l"},
+ [0x1502]={d="l"},
+ [0x1503]={d="l"},
+ [0x1504]={d="l"},
+ [0x1505]={d="l"},
+ [0x1506]={d="l"},
+ [0x1507]={d="l"},
+ [0x1508]={d="l"},
+ [0x1509]={d="l"},
+ [0x150A]={d="l"},
+ [0x150B]={d="l"},
+ [0x150C]={d="l"},
+ [0x150D]={d="l"},
+ [0x150E]={d="l"},
+ [0x150F]={d="l"},
+ [0x1510]={d="l"},
+ [0x1511]={d="l"},
+ [0x1512]={d="l"},
+ [0x1513]={d="l"},
+ [0x1514]={d="l"},
+ [0x1515]={d="l"},
+ [0x1516]={d="l"},
+ [0x1517]={d="l"},
+ [0x1518]={d="l"},
+ [0x1519]={d="l"},
+ [0x151A]={d="l"},
+ [0x151B]={d="l"},
+ [0x151C]={d="l"},
+ [0x151D]={d="l"},
+ [0x151E]={d="l"},
+ [0x151F]={d="l"},
+ [0x1520]={d="l"},
+ [0x1521]={d="l"},
+ [0x1522]={d="l"},
+ [0x1523]={d="l"},
+ [0x1524]={d="l"},
+ [0x1525]={d="l"},
+ [0x1526]={d="l"},
+ [0x1527]={d="l"},
+ [0x1528]={d="l"},
+ [0x1529]={d="l"},
+ [0x152A]={d="l"},
+ [0x152B]={d="l"},
+ [0x152C]={d="l"},
+ [0x152D]={d="l"},
+ [0x152E]={d="l"},
+ [0x152F]={d="l"},
+ [0x1530]={d="l"},
+ [0x1531]={d="l"},
+ [0x1532]={d="l"},
+ [0x1533]={d="l"},
+ [0x1534]={d="l"},
+ [0x1535]={d="l"},
+ [0x1536]={d="l"},
+ [0x1537]={d="l"},
+ [0x1538]={d="l"},
+ [0x1539]={d="l"},
+ [0x153A]={d="l"},
+ [0x153B]={d="l"},
+ [0x153C]={d="l"},
+ [0x153D]={d="l"},
+ [0x153E]={d="l"},
+ [0x153F]={d="l"},
+ [0x1540]={d="l"},
+ [0x1541]={d="l"},
+ [0x1542]={d="l"},
+ [0x1543]={d="l"},
+ [0x1544]={d="l"},
+ [0x1545]={d="l"},
+ [0x1546]={d="l"},
+ [0x1547]={d="l"},
+ [0x1548]={d="l"},
+ [0x1549]={d="l"},
+ [0x154A]={d="l"},
+ [0x154B]={d="l"},
+ [0x154C]={d="l"},
+ [0x154D]={d="l"},
+ [0x154E]={d="l"},
+ [0x154F]={d="l"},
+ [0x1550]={d="l"},
+ [0x1551]={d="l"},
+ [0x1552]={d="l"},
+ [0x1553]={d="l"},
+ [0x1554]={d="l"},
+ [0x1555]={d="l"},
+ [0x1556]={d="l"},
+ [0x1557]={d="l"},
+ [0x1558]={d="l"},
+ [0x1559]={d="l"},
+ [0x155A]={d="l"},
+ [0x155B]={d="l"},
+ [0x155C]={d="l"},
+ [0x155D]={d="l"},
+ [0x155E]={d="l"},
+ [0x155F]={d="l"},
+ [0x1560]={d="l"},
+ [0x1561]={d="l"},
+ [0x1562]={d="l"},
+ [0x1563]={d="l"},
+ [0x1564]={d="l"},
+ [0x1565]={d="l"},
+ [0x1566]={d="l"},
+ [0x1567]={d="l"},
+ [0x1568]={d="l"},
+ [0x1569]={d="l"},
+ [0x156A]={d="l"},
+ [0x156B]={d="l"},
+ [0x156C]={d="l"},
+ [0x156D]={d="l"},
+ [0x156E]={d="l"},
+ [0x156F]={d="l"},
+ [0x1570]={d="l"},
+ [0x1571]={d="l"},
+ [0x1572]={d="l"},
+ [0x1573]={d="l"},
+ [0x1574]={d="l"},
+ [0x1575]={d="l"},
+ [0x1576]={d="l"},
+ [0x1577]={d="l"},
+ [0x1578]={d="l"},
+ [0x1579]={d="l"},
+ [0x157A]={d="l"},
+ [0x157B]={d="l"},
+ [0x157C]={d="l"},
+ [0x157D]={d="l"},
+ [0x157E]={d="l"},
+ [0x157F]={d="l"},
+ [0x1580]={d="l"},
+ [0x1581]={d="l"},
+ [0x1582]={d="l"},
+ [0x1583]={d="l"},
+ [0x1584]={d="l"},
+ [0x1585]={d="l"},
+ [0x1586]={d="l"},
+ [0x1587]={d="l"},
+ [0x1588]={d="l"},
+ [0x1589]={d="l"},
+ [0x158A]={d="l"},
+ [0x158B]={d="l"},
+ [0x158C]={d="l"},
+ [0x158D]={d="l"},
+ [0x158E]={d="l"},
+ [0x158F]={d="l"},
+ [0x1590]={d="l"},
+ [0x1591]={d="l"},
+ [0x1592]={d="l"},
+ [0x1593]={d="l"},
+ [0x1594]={d="l"},
+ [0x1595]={d="l"},
+ [0x1596]={d="l"},
+ [0x1597]={d="l"},
+ [0x1598]={d="l"},
+ [0x1599]={d="l"},
+ [0x159A]={d="l"},
+ [0x159B]={d="l"},
+ [0x159C]={d="l"},
+ [0x159D]={d="l"},
+ [0x159E]={d="l"},
+ [0x159F]={d="l"},
+ [0x15A0]={d="l"},
+ [0x15A1]={d="l"},
+ [0x15A2]={d="l"},
+ [0x15A3]={d="l"},
+ [0x15A4]={d="l"},
+ [0x15A5]={d="l"},
+ [0x15A6]={d="l"},
+ [0x15A7]={d="l"},
+ [0x15A8]={d="l"},
+ [0x15A9]={d="l"},
+ [0x15AA]={d="l"},
+ [0x15AB]={d="l"},
+ [0x15AC]={d="l"},
+ [0x15AD]={d="l"},
+ [0x15AE]={d="l"},
+ [0x15AF]={d="l"},
+ [0x15B0]={d="l"},
+ [0x15B1]={d="l"},
+ [0x15B2]={d="l"},
+ [0x15B3]={d="l"},
+ [0x15B4]={d="l"},
+ [0x15B5]={d="l"},
+ [0x15B6]={d="l"},
+ [0x15B7]={d="l"},
+ [0x15B8]={d="l"},
+ [0x15B9]={d="l"},
+ [0x15BA]={d="l"},
+ [0x15BB]={d="l"},
+ [0x15BC]={d="l"},
+ [0x15BD]={d="l"},
+ [0x15BE]={d="l"},
+ [0x15BF]={d="l"},
+ [0x15C0]={d="l"},
+ [0x15C1]={d="l"},
+ [0x15C2]={d="l"},
+ [0x15C3]={d="l"},
+ [0x15C4]={d="l"},
+ [0x15C5]={d="l"},
+ [0x15C6]={d="l"},
+ [0x15C7]={d="l"},
+ [0x15C8]={d="l"},
+ [0x15C9]={d="l"},
+ [0x15CA]={d="l"},
+ [0x15CB]={d="l"},
+ [0x15CC]={d="l"},
+ [0x15CD]={d="l"},
+ [0x15CE]={d="l"},
+ [0x15CF]={d="l"},
+ [0x15D0]={d="l"},
+ [0x15D1]={d="l"},
+ [0x15D2]={d="l"},
+ [0x15D3]={d="l"},
+ [0x15D4]={d="l"},
+ [0x15D5]={d="l"},
+ [0x15D6]={d="l"},
+ [0x15D7]={d="l"},
+ [0x15D8]={d="l"},
+ [0x15D9]={d="l"},
+ [0x15DA]={d="l"},
+ [0x15DB]={d="l"},
+ [0x15DC]={d="l"},
+ [0x15DD]={d="l"},
+ [0x15DE]={d="l"},
+ [0x15DF]={d="l"},
+ [0x15E0]={d="l"},
+ [0x15E1]={d="l"},
+ [0x15E2]={d="l"},
+ [0x15E3]={d="l"},
+ [0x15E4]={d="l"},
+ [0x15E5]={d="l"},
+ [0x15E6]={d="l"},
+ [0x15E7]={d="l"},
+ [0x15E8]={d="l"},
+ [0x15E9]={d="l"},
+ [0x15EA]={d="l"},
+ [0x15EB]={d="l"},
+ [0x15EC]={d="l"},
+ [0x15ED]={d="l"},
+ [0x15EE]={d="l"},
+ [0x15EF]={d="l"},
+ [0x15F0]={d="l"},
+ [0x15F1]={d="l"},
+ [0x15F2]={d="l"},
+ [0x15F3]={d="l"},
+ [0x15F4]={d="l"},
+ [0x15F5]={d="l"},
+ [0x15F6]={d="l"},
+ [0x15F7]={d="l"},
+ [0x15F8]={d="l"},
+ [0x15F9]={d="l"},
+ [0x15FA]={d="l"},
+ [0x15FB]={d="l"},
+ [0x15FC]={d="l"},
+ [0x15FD]={d="l"},
+ [0x15FE]={d="l"},
+ [0x15FF]={d="l"},
+ [0x1600]={d="l"},
+ [0x1601]={d="l"},
+ [0x1602]={d="l"},
+ [0x1603]={d="l"},
+ [0x1604]={d="l"},
+ [0x1605]={d="l"},
+ [0x1606]={d="l"},
+ [0x1607]={d="l"},
+ [0x1608]={d="l"},
+ [0x1609]={d="l"},
+ [0x160A]={d="l"},
+ [0x160B]={d="l"},
+ [0x160C]={d="l"},
+ [0x160D]={d="l"},
+ [0x160E]={d="l"},
+ [0x160F]={d="l"},
+ [0x1610]={d="l"},
+ [0x1611]={d="l"},
+ [0x1612]={d="l"},
+ [0x1613]={d="l"},
+ [0x1614]={d="l"},
+ [0x1615]={d="l"},
+ [0x1616]={d="l"},
+ [0x1617]={d="l"},
+ [0x1618]={d="l"},
+ [0x1619]={d="l"},
+ [0x161A]={d="l"},
+ [0x161B]={d="l"},
+ [0x161C]={d="l"},
+ [0x161D]={d="l"},
+ [0x161E]={d="l"},
+ [0x161F]={d="l"},
+ [0x1620]={d="l"},
+ [0x1621]={d="l"},
+ [0x1622]={d="l"},
+ [0x1623]={d="l"},
+ [0x1624]={d="l"},
+ [0x1625]={d="l"},
+ [0x1626]={d="l"},
+ [0x1627]={d="l"},
+ [0x1628]={d="l"},
+ [0x1629]={d="l"},
+ [0x162A]={d="l"},
+ [0x162B]={d="l"},
+ [0x162C]={d="l"},
+ [0x162D]={d="l"},
+ [0x162E]={d="l"},
+ [0x162F]={d="l"},
+ [0x1630]={d="l"},
+ [0x1631]={d="l"},
+ [0x1632]={d="l"},
+ [0x1633]={d="l"},
+ [0x1634]={d="l"},
+ [0x1635]={d="l"},
+ [0x1636]={d="l"},
+ [0x1637]={d="l"},
+ [0x1638]={d="l"},
+ [0x1639]={d="l"},
+ [0x163A]={d="l"},
+ [0x163B]={d="l"},
+ [0x163C]={d="l"},
+ [0x163D]={d="l"},
+ [0x163E]={d="l"},
+ [0x163F]={d="l"},
+ [0x1640]={d="l"},
+ [0x1641]={d="l"},
+ [0x1642]={d="l"},
+ [0x1643]={d="l"},
+ [0x1644]={d="l"},
+ [0x1645]={d="l"},
+ [0x1646]={d="l"},
+ [0x1647]={d="l"},
+ [0x1648]={d="l"},
+ [0x1649]={d="l"},
+ [0x164A]={d="l"},
+ [0x164B]={d="l"},
+ [0x164C]={d="l"},
+ [0x164D]={d="l"},
+ [0x164E]={d="l"},
+ [0x164F]={d="l"},
+ [0x1650]={d="l"},
+ [0x1651]={d="l"},
+ [0x1652]={d="l"},
+ [0x1653]={d="l"},
+ [0x1654]={d="l"},
+ [0x1655]={d="l"},
+ [0x1656]={d="l"},
+ [0x1657]={d="l"},
+ [0x1658]={d="l"},
+ [0x1659]={d="l"},
+ [0x165A]={d="l"},
+ [0x165B]={d="l"},
+ [0x165C]={d="l"},
+ [0x165D]={d="l"},
+ [0x165E]={d="l"},
+ [0x165F]={d="l"},
+ [0x1660]={d="l"},
+ [0x1661]={d="l"},
+ [0x1662]={d="l"},
+ [0x1663]={d="l"},
+ [0x1664]={d="l"},
+ [0x1665]={d="l"},
+ [0x1666]={d="l"},
+ [0x1667]={d="l"},
+ [0x1668]={d="l"},
+ [0x1669]={d="l"},
+ [0x166A]={d="l"},
+ [0x166B]={d="l"},
+ [0x166C]={d="l"},
+ [0x166D]={d="l"},
+ [0x166E]={d="l"},
+ [0x166F]={d="l"},
+ [0x1670]={d="l"},
+ [0x1671]={d="l"},
+ [0x1672]={d="l"},
+ [0x1673]={d="l"},
+ [0x1674]={d="l"},
+ [0x1675]={d="l"},
+ [0x1676]={d="l"},
+ [0x1677]={d="l"},
+ [0x1678]={d="l"},
+ [0x1679]={d="l"},
+ [0x167A]={d="l"},
+ [0x167B]={d="l"},
+ [0x167C]={d="l"},
+ [0x167D]={d="l"},
+ [0x167E]={d="l"},
+ [0x167F]={d="l"},
+ [0x1680]={d="ws"},
+ [0x1681]={d="l"},
+ [0x1682]={d="l"},
+ [0x1683]={d="l"},
+ [0x1684]={d="l"},
+ [0x1685]={d="l"},
+ [0x1686]={d="l"},
+ [0x1687]={d="l"},
+ [0x1688]={d="l"},
+ [0x1689]={d="l"},
+ [0x168A]={d="l"},
+ [0x168B]={d="l"},
+ [0x168C]={d="l"},
+ [0x168D]={d="l"},
+ [0x168E]={d="l"},
+ [0x168F]={d="l"},
+ [0x1690]={d="l"},
+ [0x1691]={d="l"},
+ [0x1692]={d="l"},
+ [0x1693]={d="l"},
+ [0x1694]={d="l"},
+ [0x1695]={d="l"},
+ [0x1696]={d="l"},
+ [0x1697]={d="l"},
+ [0x1698]={d="l"},
+ [0x1699]={d="l"},
+ [0x169A]={d="l"},
+ [0x169B]={d="on",
+ m=0x169C},
+ [0x169C]={d="on",
+ m=0x169B},
+ [0x16A0]={d="l"},
+ [0x16A1]={d="l"},
+ [0x16A2]={d="l"},
+ [0x16A3]={d="l"},
+ [0x16A4]={d="l"},
+ [0x16A5]={d="l"},
+ [0x16A6]={d="l"},
+ [0x16A7]={d="l"},
+ [0x16A8]={d="l"},
+ [0x16A9]={d="l"},
+ [0x16AA]={d="l"},
+ [0x16AB]={d="l"},
+ [0x16AC]={d="l"},
+ [0x16AD]={d="l"},
+ [0x16AE]={d="l"},
+ [0x16AF]={d="l"},
+ [0x16B0]={d="l"},
+ [0x16B1]={d="l"},
+ [0x16B2]={d="l"},
+ [0x16B3]={d="l"},
+ [0x16B4]={d="l"},
+ [0x16B5]={d="l"},
+ [0x16B6]={d="l"},
+ [0x16B7]={d="l"},
+ [0x16B8]={d="l"},
+ [0x16B9]={d="l"},
+ [0x16BA]={d="l"},
+ [0x16BB]={d="l"},
+ [0x16BC]={d="l"},
+ [0x16BD]={d="l"},
+ [0x16BE]={d="l"},
+ [0x16BF]={d="l"},
+ [0x16C0]={d="l"},
+ [0x16C1]={d="l"},
+ [0x16C2]={d="l"},
+ [0x16C3]={d="l"},
+ [0x16C4]={d="l"},
+ [0x16C5]={d="l"},
+ [0x16C6]={d="l"},
+ [0x16C7]={d="l"},
+ [0x16C8]={d="l"},
+ [0x16C9]={d="l"},
+ [0x16CA]={d="l"},
+ [0x16CB]={d="l"},
+ [0x16CC]={d="l"},
+ [0x16CD]={d="l"},
+ [0x16CE]={d="l"},
+ [0x16CF]={d="l"},
+ [0x16D0]={d="l"},
+ [0x16D1]={d="l"},
+ [0x16D2]={d="l"},
+ [0x16D3]={d="l"},
+ [0x16D4]={d="l"},
+ [0x16D5]={d="l"},
+ [0x16D6]={d="l"},
+ [0x16D7]={d="l"},
+ [0x16D8]={d="l"},
+ [0x16D9]={d="l"},
+ [0x16DA]={d="l"},
+ [0x16DB]={d="l"},
+ [0x16DC]={d="l"},
+ [0x16DD]={d="l"},
+ [0x16DE]={d="l"},
+ [0x16DF]={d="l"},
+ [0x16E0]={d="l"},
+ [0x16E1]={d="l"},
+ [0x16E2]={d="l"},
+ [0x16E3]={d="l"},
+ [0x16E4]={d="l"},
+ [0x16E5]={d="l"},
+ [0x16E6]={d="l"},
+ [0x16E7]={d="l"},
+ [0x16E8]={d="l"},
+ [0x16E9]={d="l"},
+ [0x16EA]={d="l"},
+ [0x16EB]={d="l"},
+ [0x16EC]={d="l"},
+ [0x16ED]={d="l"},
+ [0x16EE]={d="l"},
+ [0x16EF]={d="l"},
+ [0x16F0]={d="l"},
+ [0x16F1]={d="l"},
+ [0x16F2]={d="l"},
+ [0x16F3]={d="l"},
+ [0x16F4]={d="l"},
+ [0x16F5]={d="l"},
+ [0x16F6]={d="l"},
+ [0x16F7]={d="l"},
+ [0x16F8]={d="l"},
+ [0x1700]={d="l"},
+ [0x1701]={d="l"},
+ [0x1702]={d="l"},
+ [0x1703]={d="l"},
+ [0x1704]={d="l"},
+ [0x1705]={d="l"},
+ [0x1706]={d="l"},
+ [0x1707]={d="l"},
+ [0x1708]={d="l"},
+ [0x1709]={d="l"},
+ [0x170A]={d="l"},
+ [0x170B]={d="l"},
+ [0x170C]={d="l"},
+ [0x170D]={d="l"},
+ [0x170E]={d="l"},
+ [0x170F]={d="l"},
+ [0x1710]={d="l"},
+ [0x1711]={d="l"},
+ [0x1712]={d="nsm"},
+ [0x1713]={d="nsm"},
+ [0x1714]={d="nsm"},
+ [0x1715]={d="l"},
+ [0x171F]={d="l"},
+ [0x1720]={d="l"},
+ [0x1721]={d="l"},
+ [0x1722]={d="l"},
+ [0x1723]={d="l"},
+ [0x1724]={d="l"},
+ [0x1725]={d="l"},
+ [0x1726]={d="l"},
+ [0x1727]={d="l"},
+ [0x1728]={d="l"},
+ [0x1729]={d="l"},
+ [0x172A]={d="l"},
+ [0x172B]={d="l"},
+ [0x172C]={d="l"},
+ [0x172D]={d="l"},
+ [0x172E]={d="l"},
+ [0x172F]={d="l"},
+ [0x1730]={d="l"},
+ [0x1731]={d="l"},
+ [0x1732]={d="nsm"},
+ [0x1733]={d="nsm"},
+ [0x1734]={d="l"},
+ [0x1735]={d="l"},
+ [0x1736]={d="l"},
+ [0x1740]={d="l"},
+ [0x1741]={d="l"},
+ [0x1742]={d="l"},
+ [0x1743]={d="l"},
+ [0x1744]={d="l"},
+ [0x1745]={d="l"},
+ [0x1746]={d="l"},
+ [0x1747]={d="l"},
+ [0x1748]={d="l"},
+ [0x1749]={d="l"},
+ [0x174A]={d="l"},
+ [0x174B]={d="l"},
+ [0x174C]={d="l"},
+ [0x174D]={d="l"},
+ [0x174E]={d="l"},
+ [0x174F]={d="l"},
+ [0x1750]={d="l"},
+ [0x1751]={d="l"},
+ [0x1752]={d="nsm"},
+ [0x1753]={d="nsm"},
+ [0x1760]={d="l"},
+ [0x1761]={d="l"},
+ [0x1762]={d="l"},
+ [0x1763]={d="l"},
+ [0x1764]={d="l"},
+ [0x1765]={d="l"},
+ [0x1766]={d="l"},
+ [0x1767]={d="l"},
+ [0x1768]={d="l"},
+ [0x1769]={d="l"},
+ [0x176A]={d="l"},
+ [0x176B]={d="l"},
+ [0x176C]={d="l"},
+ [0x176E]={d="l"},
+ [0x176F]={d="l"},
+ [0x1770]={d="l"},
+ [0x1772]={d="nsm"},
+ [0x1773]={d="nsm"},
+ [0x1780]={d="l"},
+ [0x1781]={d="l"},
+ [0x1782]={d="l"},
+ [0x1783]={d="l"},
+ [0x1784]={d="l"},
+ [0x1785]={d="l"},
+ [0x1786]={d="l"},
+ [0x1787]={d="l"},
+ [0x1788]={d="l"},
+ [0x1789]={d="l"},
+ [0x178A]={d="l"},
+ [0x178B]={d="l"},
+ [0x178C]={d="l"},
+ [0x178D]={d="l"},
+ [0x178E]={d="l"},
+ [0x178F]={d="l"},
+ [0x1790]={d="l"},
+ [0x1791]={d="l"},
+ [0x1792]={d="l"},
+ [0x1793]={d="l"},
+ [0x1794]={d="l"},
+ [0x1795]={d="l"},
+ [0x1796]={d="l"},
+ [0x1797]={d="l"},
+ [0x1798]={d="l"},
+ [0x1799]={d="l"},
+ [0x179A]={d="l"},
+ [0x179B]={d="l"},
+ [0x179C]={d="l"},
+ [0x179D]={d="l"},
+ [0x179E]={d="l"},
+ [0x179F]={d="l"},
+ [0x17A0]={d="l"},
+ [0x17A1]={d="l"},
+ [0x17A2]={d="l"},
+ [0x17A3]={d="l"},
+ [0x17A4]={d="l"},
+ [0x17A5]={d="l"},
+ [0x17A6]={d="l"},
+ [0x17A7]={d="l"},
+ [0x17A8]={d="l"},
+ [0x17A9]={d="l"},
+ [0x17AA]={d="l"},
+ [0x17AB]={d="l"},
+ [0x17AC]={d="l"},
+ [0x17AD]={d="l"},
+ [0x17AE]={d="l"},
+ [0x17AF]={d="l"},
+ [0x17B0]={d="l"},
+ [0x17B1]={d="l"},
+ [0x17B2]={d="l"},
+ [0x17B3]={d="l"},
+ [0x17B4]={d="nsm"},
+ [0x17B5]={d="nsm"},
+ [0x17B6]={d="l"},
+ [0x17B7]={d="nsm"},
+ [0x17B8]={d="nsm"},
+ [0x17B9]={d="nsm"},
+ [0x17BA]={d="nsm"},
+ [0x17BB]={d="nsm"},
+ [0x17BC]={d="nsm"},
+ [0x17BD]={d="nsm"},
+ [0x17BE]={d="l"},
+ [0x17BF]={d="l"},
+ [0x17C0]={d="l"},
+ [0x17C1]={d="l"},
+ [0x17C2]={d="l"},
+ [0x17C3]={d="l"},
+ [0x17C4]={d="l"},
+ [0x17C5]={d="l"},
+ [0x17C6]={d="nsm"},
+ [0x17C7]={d="l"},
+ [0x17C8]={d="l"},
+ [0x17C9]={d="nsm"},
+ [0x17CA]={d="nsm"},
+ [0x17CB]={d="nsm"},
+ [0x17CC]={d="nsm"},
+ [0x17CD]={d="nsm"},
+ [0x17CE]={d="nsm"},
+ [0x17CF]={d="nsm"},
+ [0x17D0]={d="nsm"},
+ [0x17D1]={d="nsm"},
+ [0x17D2]={d="nsm"},
+ [0x17D3]={d="nsm"},
+ [0x17D4]={d="l"},
+ [0x17D5]={d="l"},
+ [0x17D6]={d="l"},
+ [0x17D7]={d="l"},
+ [0x17D8]={d="l"},
+ [0x17D9]={d="l"},
+ [0x17DA]={d="l"},
+ [0x17DB]={d="et"},
+ [0x17DC]={d="l"},
+ [0x17DD]={d="nsm"},
+ [0x17E0]={d="l"},
+ [0x17E1]={d="l"},
+ [0x17E2]={d="l"},
+ [0x17E3]={d="l"},
+ [0x17E4]={d="l"},
+ [0x17E5]={d="l"},
+ [0x17E6]={d="l"},
+ [0x17E7]={d="l"},
+ [0x17E8]={d="l"},
+ [0x17E9]={d="l"},
+ [0x17F0]={d="on"},
+ [0x17F1]={d="on"},
+ [0x17F2]={d="on"},
+ [0x17F3]={d="on"},
+ [0x17F4]={d="on"},
+ [0x17F5]={d="on"},
+ [0x17F6]={d="on"},
+ [0x17F7]={d="on"},
+ [0x17F8]={d="on"},
+ [0x17F9]={d="on"},
+ [0x1800]={d="on"},
+ [0x1801]={d="on"},
+ [0x1802]={d="on"},
+ [0x1803]={d="on"},
+ [0x1804]={d="on"},
+ [0x1805]={d="on"},
+ [0x1806]={d="on"},
+ [0x1807]={d="on"},
+ [0x1808]={d="on"},
+ [0x1809]={d="on"},
+ [0x180A]={d="on"},
+ [0x180B]={d="nsm"},
+ [0x180C]={d="nsm"},
+ [0x180D]={d="nsm"},
+ [0x180E]={d="bn"},
+ [0x180F]={d="nsm"},
+ [0x1810]={d="l"},
+ [0x1811]={d="l"},
+ [0x1812]={d="l"},
+ [0x1813]={d="l"},
+ [0x1814]={d="l"},
+ [0x1815]={d="l"},
+ [0x1816]={d="l"},
+ [0x1817]={d="l"},
+ [0x1818]={d="l"},
+ [0x1819]={d="l"},
+ [0x1820]={d="l"},
+ [0x1821]={d="l"},
+ [0x1822]={d="l"},
+ [0x1823]={d="l"},
+ [0x1824]={d="l"},
+ [0x1825]={d="l"},
+ [0x1826]={d="l"},
+ [0x1827]={d="l"},
+ [0x1828]={d="l"},
+ [0x1829]={d="l"},
+ [0x182A]={d="l"},
+ [0x182B]={d="l"},
+ [0x182C]={d="l"},
+ [0x182D]={d="l"},
+ [0x182E]={d="l"},
+ [0x182F]={d="l"},
+ [0x1830]={d="l"},
+ [0x1831]={d="l"},
+ [0x1832]={d="l"},
+ [0x1833]={d="l"},
+ [0x1834]={d="l"},
+ [0x1835]={d="l"},
+ [0x1836]={d="l"},
+ [0x1837]={d="l"},
+ [0x1838]={d="l"},
+ [0x1839]={d="l"},
+ [0x183A]={d="l"},
+ [0x183B]={d="l"},
+ [0x183C]={d="l"},
+ [0x183D]={d="l"},
+ [0x183E]={d="l"},
+ [0x183F]={d="l"},
+ [0x1840]={d="l"},
+ [0x1841]={d="l"},
+ [0x1842]={d="l"},
+ [0x1843]={d="l"},
+ [0x1844]={d="l"},
+ [0x1845]={d="l"},
+ [0x1846]={d="l"},
+ [0x1847]={d="l"},
+ [0x1848]={d="l"},
+ [0x1849]={d="l"},
+ [0x184A]={d="l"},
+ [0x184B]={d="l"},
+ [0x184C]={d="l"},
+ [0x184D]={d="l"},
+ [0x184E]={d="l"},
+ [0x184F]={d="l"},
+ [0x1850]={d="l"},
+ [0x1851]={d="l"},
+ [0x1852]={d="l"},
+ [0x1853]={d="l"},
+ [0x1854]={d="l"},
+ [0x1855]={d="l"},
+ [0x1856]={d="l"},
+ [0x1857]={d="l"},
+ [0x1858]={d="l"},
+ [0x1859]={d="l"},
+ [0x185A]={d="l"},
+ [0x185B]={d="l"},
+ [0x185C]={d="l"},
+ [0x185D]={d="l"},
+ [0x185E]={d="l"},
+ [0x185F]={d="l"},
+ [0x1860]={d="l"},
+ [0x1861]={d="l"},
+ [0x1862]={d="l"},
+ [0x1863]={d="l"},
+ [0x1864]={d="l"},
+ [0x1865]={d="l"},
+ [0x1866]={d="l"},
+ [0x1867]={d="l"},
+ [0x1868]={d="l"},
+ [0x1869]={d="l"},
+ [0x186A]={d="l"},
+ [0x186B]={d="l"},
+ [0x186C]={d="l"},
+ [0x186D]={d="l"},
+ [0x186E]={d="l"},
+ [0x186F]={d="l"},
+ [0x1870]={d="l"},
+ [0x1871]={d="l"},
+ [0x1872]={d="l"},
+ [0x1873]={d="l"},
+ [0x1874]={d="l"},
+ [0x1875]={d="l"},
+ [0x1876]={d="l"},
+ [0x1877]={d="l"},
+ [0x1878]={d="l"},
+ [0x1880]={d="l"},
+ [0x1881]={d="l"},
+ [0x1882]={d="l"},
+ [0x1883]={d="l"},
+ [0x1884]={d="l"},
+ [0x1885]={d="nsm"},
+ [0x1886]={d="nsm"},
+ [0x1887]={d="l"},
+ [0x1888]={d="l"},
+ [0x1889]={d="l"},
+ [0x188A]={d="l"},
+ [0x188B]={d="l"},
+ [0x188C]={d="l"},
+ [0x188D]={d="l"},
+ [0x188E]={d="l"},
+ [0x188F]={d="l"},
+ [0x1890]={d="l"},
+ [0x1891]={d="l"},
+ [0x1892]={d="l"},
+ [0x1893]={d="l"},
+ [0x1894]={d="l"},
+ [0x1895]={d="l"},
+ [0x1896]={d="l"},
+ [0x1897]={d="l"},
+ [0x1898]={d="l"},
+ [0x1899]={d="l"},
+ [0x189A]={d="l"},
+ [0x189B]={d="l"},
+ [0x189C]={d="l"},
+ [0x189D]={d="l"},
+ [0x189E]={d="l"},
+ [0x189F]={d="l"},
+ [0x18A0]={d="l"},
+ [0x18A1]={d="l"},
+ [0x18A2]={d="l"},
+ [0x18A3]={d="l"},
+ [0x18A4]={d="l"},
+ [0x18A5]={d="l"},
+ [0x18A6]={d="l"},
+ [0x18A7]={d="l"},
+ [0x18A8]={d="l"},
+ [0x18A9]={d="nsm"},
+ [0x18AA]={d="l"},
+ [0x18B0]={d="l"},
+ [0x18B1]={d="l"},
+ [0x18B2]={d="l"},
+ [0x18B3]={d="l"},
+ [0x18B4]={d="l"},
+ [0x18B5]={d="l"},
+ [0x18B6]={d="l"},
+ [0x18B7]={d="l"},
+ [0x18B8]={d="l"},
+ [0x18B9]={d="l"},
+ [0x18BA]={d="l"},
+ [0x18BB]={d="l"},
+ [0x18BC]={d="l"},
+ [0x18BD]={d="l"},
+ [0x18BE]={d="l"},
+ [0x18BF]={d="l"},
+ [0x18C0]={d="l"},
+ [0x18C1]={d="l"},
+ [0x18C2]={d="l"},
+ [0x18C3]={d="l"},
+ [0x18C4]={d="l"},
+ [0x18C5]={d="l"},
+ [0x18C6]={d="l"},
+ [0x18C7]={d="l"},
+ [0x18C8]={d="l"},
+ [0x18C9]={d="l"},
+ [0x18CA]={d="l"},
+ [0x18CB]={d="l"},
+ [0x18CC]={d="l"},
+ [0x18CD]={d="l"},
+ [0x18CE]={d="l"},
+ [0x18CF]={d="l"},
+ [0x18D0]={d="l"},
+ [0x18D1]={d="l"},
+ [0x18D2]={d="l"},
+ [0x18D3]={d="l"},
+ [0x18D4]={d="l"},
+ [0x18D5]={d="l"},
+ [0x18D6]={d="l"},
+ [0x18D7]={d="l"},
+ [0x18D8]={d="l"},
+ [0x18D9]={d="l"},
+ [0x18DA]={d="l"},
+ [0x18DB]={d="l"},
+ [0x18DC]={d="l"},
+ [0x18DD]={d="l"},
+ [0x18DE]={d="l"},
+ [0x18DF]={d="l"},
+ [0x18E0]={d="l"},
+ [0x18E1]={d="l"},
+ [0x18E2]={d="l"},
+ [0x18E3]={d="l"},
+ [0x18E4]={d="l"},
+ [0x18E5]={d="l"},
+ [0x18E6]={d="l"},
+ [0x18E7]={d="l"},
+ [0x18E8]={d="l"},
+ [0x18E9]={d="l"},
+ [0x18EA]={d="l"},
+ [0x18EB]={d="l"},
+ [0x18EC]={d="l"},
+ [0x18ED]={d="l"},
+ [0x18EE]={d="l"},
+ [0x18EF]={d="l"},
+ [0x18F0]={d="l"},
+ [0x18F1]={d="l"},
+ [0x18F2]={d="l"},
+ [0x18F3]={d="l"},
+ [0x18F4]={d="l"},
+ [0x18F5]={d="l"},
+ [0x1900]={d="l"},
+ [0x1901]={d="l"},
+ [0x1902]={d="l"},
+ [0x1903]={d="l"},
+ [0x1904]={d="l"},
+ [0x1905]={d="l"},
+ [0x1906]={d="l"},
+ [0x1907]={d="l"},
+ [0x1908]={d="l"},
+ [0x1909]={d="l"},
+ [0x190A]={d="l"},
+ [0x190B]={d="l"},
+ [0x190C]={d="l"},
+ [0x190D]={d="l"},
+ [0x190E]={d="l"},
+ [0x190F]={d="l"},
+ [0x1910]={d="l"},
+ [0x1911]={d="l"},
+ [0x1912]={d="l"},
+ [0x1913]={d="l"},
+ [0x1914]={d="l"},
+ [0x1915]={d="l"},
+ [0x1916]={d="l"},
+ [0x1917]={d="l"},
+ [0x1918]={d="l"},
+ [0x1919]={d="l"},
+ [0x191A]={d="l"},
+ [0x191B]={d="l"},
+ [0x191C]={d="l"},
+ [0x191D]={d="l"},
+ [0x191E]={d="l"},
+ [0x1920]={d="nsm"},
+ [0x1921]={d="nsm"},
+ [0x1922]={d="nsm"},
+ [0x1923]={d="l"},
+ [0x1924]={d="l"},
+ [0x1925]={d="l"},
+ [0x1926]={d="l"},
+ [0x1927]={d="nsm"},
+ [0x1928]={d="nsm"},
+ [0x1929]={d="l"},
+ [0x192A]={d="l"},
+ [0x192B]={d="l"},
+ [0x1930]={d="l"},
+ [0x1931]={d="l"},
+ [0x1932]={d="nsm"},
+ [0x1933]={d="l"},
+ [0x1934]={d="l"},
+ [0x1935]={d="l"},
+ [0x1936]={d="l"},
+ [0x1937]={d="l"},
+ [0x1938]={d="l"},
+ [0x1939]={d="nsm"},
+ [0x193A]={d="nsm"},
+ [0x193B]={d="nsm"},
+ [0x1940]={d="on"},
+ [0x1944]={d="on"},
+ [0x1945]={d="on"},
+ [0x1946]={d="l"},
+ [0x1947]={d="l"},
+ [0x1948]={d="l"},
+ [0x1949]={d="l"},
+ [0x194A]={d="l"},
+ [0x194B]={d="l"},
+ [0x194C]={d="l"},
+ [0x194D]={d="l"},
+ [0x194E]={d="l"},
+ [0x194F]={d="l"},
+ [0x1950]={d="l"},
+ [0x1951]={d="l"},
+ [0x1952]={d="l"},
+ [0x1953]={d="l"},
+ [0x1954]={d="l"},
+ [0x1955]={d="l"},
+ [0x1956]={d="l"},
+ [0x1957]={d="l"},
+ [0x1958]={d="l"},
+ [0x1959]={d="l"},
+ [0x195A]={d="l"},
+ [0x195B]={d="l"},
+ [0x195C]={d="l"},
+ [0x195D]={d="l"},
+ [0x195E]={d="l"},
+ [0x195F]={d="l"},
+ [0x1960]={d="l"},
+ [0x1961]={d="l"},
+ [0x1962]={d="l"},
+ [0x1963]={d="l"},
+ [0x1964]={d="l"},
+ [0x1965]={d="l"},
+ [0x1966]={d="l"},
+ [0x1967]={d="l"},
+ [0x1968]={d="l"},
+ [0x1969]={d="l"},
+ [0x196A]={d="l"},
+ [0x196B]={d="l"},
+ [0x196C]={d="l"},
+ [0x196D]={d="l"},
+ [0x1970]={d="l"},
+ [0x1971]={d="l"},
+ [0x1972]={d="l"},
+ [0x1973]={d="l"},
+ [0x1974]={d="l"},
+ [0x1980]={d="l"},
+ [0x1981]={d="l"},
+ [0x1982]={d="l"},
+ [0x1983]={d="l"},
+ [0x1984]={d="l"},
+ [0x1985]={d="l"},
+ [0x1986]={d="l"},
+ [0x1987]={d="l"},
+ [0x1988]={d="l"},
+ [0x1989]={d="l"},
+ [0x198A]={d="l"},
+ [0x198B]={d="l"},
+ [0x198C]={d="l"},
+ [0x198D]={d="l"},
+ [0x198E]={d="l"},
+ [0x198F]={d="l"},
+ [0x1990]={d="l"},
+ [0x1991]={d="l"},
+ [0x1992]={d="l"},
+ [0x1993]={d="l"},
+ [0x1994]={d="l"},
+ [0x1995]={d="l"},
+ [0x1996]={d="l"},
+ [0x1997]={d="l"},
+ [0x1998]={d="l"},
+ [0x1999]={d="l"},
+ [0x199A]={d="l"},
+ [0x199B]={d="l"},
+ [0x199C]={d="l"},
+ [0x199D]={d="l"},
+ [0x199E]={d="l"},
+ [0x199F]={d="l"},
+ [0x19A0]={d="l"},
+ [0x19A1]={d="l"},
+ [0x19A2]={d="l"},
+ [0x19A3]={d="l"},
+ [0x19A4]={d="l"},
+ [0x19A5]={d="l"},
+ [0x19A6]={d="l"},
+ [0x19A7]={d="l"},
+ [0x19A8]={d="l"},
+ [0x19A9]={d="l"},
+ [0x19AA]={d="l"},
+ [0x19AB]={d="l"},
+ [0x19B0]={d="l"},
+ [0x19B1]={d="l"},
+ [0x19B2]={d="l"},
+ [0x19B3]={d="l"},
+ [0x19B4]={d="l"},
+ [0x19B5]={d="l"},
+ [0x19B6]={d="l"},
+ [0x19B7]={d="l"},
+ [0x19B8]={d="l"},
+ [0x19B9]={d="l"},
+ [0x19BA]={d="l"},
+ [0x19BB]={d="l"},
+ [0x19BC]={d="l"},
+ [0x19BD]={d="l"},
+ [0x19BE]={d="l"},
+ [0x19BF]={d="l"},
+ [0x19C0]={d="l"},
+ [0x19C1]={d="l"},
+ [0x19C2]={d="l"},
+ [0x19C3]={d="l"},
+ [0x19C4]={d="l"},
+ [0x19C5]={d="l"},
+ [0x19C6]={d="l"},
+ [0x19C7]={d="l"},
+ [0x19C8]={d="l"},
+ [0x19C9]={d="l"},
+ [0x19D0]={d="l"},
+ [0x19D1]={d="l"},
+ [0x19D2]={d="l"},
+ [0x19D3]={d="l"},
+ [0x19D4]={d="l"},
+ [0x19D5]={d="l"},
+ [0x19D6]={d="l"},
+ [0x19D7]={d="l"},
+ [0x19D8]={d="l"},
+ [0x19D9]={d="l"},
+ [0x19DA]={d="l"},
+ [0x19DE]={d="on"},
+ [0x19DF]={d="on"},
+ [0x19E0]={d="on"},
+ [0x19E1]={d="on"},
+ [0x19E2]={d="on"},
+ [0x19E3]={d="on"},
+ [0x19E4]={d="on"},
+ [0x19E5]={d="on"},
+ [0x19E6]={d="on"},
+ [0x19E7]={d="on"},
+ [0x19E8]={d="on"},
+ [0x19E9]={d="on"},
+ [0x19EA]={d="on"},
+ [0x19EB]={d="on"},
+ [0x19EC]={d="on"},
+ [0x19ED]={d="on"},
+ [0x19EE]={d="on"},
+ [0x19EF]={d="on"},
+ [0x19F0]={d="on"},
+ [0x19F1]={d="on"},
+ [0x19F2]={d="on"},
+ [0x19F3]={d="on"},
+ [0x19F4]={d="on"},
+ [0x19F5]={d="on"},
+ [0x19F6]={d="on"},
+ [0x19F7]={d="on"},
+ [0x19F8]={d="on"},
+ [0x19F9]={d="on"},
+ [0x19FA]={d="on"},
+ [0x19FB]={d="on"},
+ [0x19FC]={d="on"},
+ [0x19FD]={d="on"},
+ [0x19FE]={d="on"},
+ [0x19FF]={d="on"},
+ [0x1A00]={d="l"},
+ [0x1A01]={d="l"},
+ [0x1A02]={d="l"},
+ [0x1A03]={d="l"},
+ [0x1A04]={d="l"},
+ [0x1A05]={d="l"},
+ [0x1A06]={d="l"},
+ [0x1A07]={d="l"},
+ [0x1A08]={d="l"},
+ [0x1A09]={d="l"},
+ [0x1A0A]={d="l"},
+ [0x1A0B]={d="l"},
+ [0x1A0C]={d="l"},
+ [0x1A0D]={d="l"},
+ [0x1A0E]={d="l"},
+ [0x1A0F]={d="l"},
+ [0x1A10]={d="l"},
+ [0x1A11]={d="l"},
+ [0x1A12]={d="l"},
+ [0x1A13]={d="l"},
+ [0x1A14]={d="l"},
+ [0x1A15]={d="l"},
+ [0x1A16]={d="l"},
+ [0x1A17]={d="nsm"},
+ [0x1A18]={d="nsm"},
+ [0x1A19]={d="l"},
+ [0x1A1A]={d="l"},
+ [0x1A1B]={d="nsm"},
+ [0x1A1E]={d="l"},
+ [0x1A1F]={d="l"},
+ [0x1A20]={d="l"},
+ [0x1A21]={d="l"},
+ [0x1A22]={d="l"},
+ [0x1A23]={d="l"},
+ [0x1A24]={d="l"},
+ [0x1A25]={d="l"},
+ [0x1A26]={d="l"},
+ [0x1A27]={d="l"},
+ [0x1A28]={d="l"},
+ [0x1A29]={d="l"},
+ [0x1A2A]={d="l"},
+ [0x1A2B]={d="l"},
+ [0x1A2C]={d="l"},
+ [0x1A2D]={d="l"},
+ [0x1A2E]={d="l"},
+ [0x1A2F]={d="l"},
+ [0x1A30]={d="l"},
+ [0x1A31]={d="l"},
+ [0x1A32]={d="l"},
+ [0x1A33]={d="l"},
+ [0x1A34]={d="l"},
+ [0x1A35]={d="l"},
+ [0x1A36]={d="l"},
+ [0x1A37]={d="l"},
+ [0x1A38]={d="l"},
+ [0x1A39]={d="l"},
+ [0x1A3A]={d="l"},
+ [0x1A3B]={d="l"},
+ [0x1A3C]={d="l"},
+ [0x1A3D]={d="l"},
+ [0x1A3E]={d="l"},
+ [0x1A3F]={d="l"},
+ [0x1A40]={d="l"},
+ [0x1A41]={d="l"},
+ [0x1A42]={d="l"},
+ [0x1A43]={d="l"},
+ [0x1A44]={d="l"},
+ [0x1A45]={d="l"},
+ [0x1A46]={d="l"},
+ [0x1A47]={d="l"},
+ [0x1A48]={d="l"},
+ [0x1A49]={d="l"},
+ [0x1A4A]={d="l"},
+ [0x1A4B]={d="l"},
+ [0x1A4C]={d="l"},
+ [0x1A4D]={d="l"},
+ [0x1A4E]={d="l"},
+ [0x1A4F]={d="l"},
+ [0x1A50]={d="l"},
+ [0x1A51]={d="l"},
+ [0x1A52]={d="l"},
+ [0x1A53]={d="l"},
+ [0x1A54]={d="l"},
+ [0x1A55]={d="l"},
+ [0x1A56]={d="nsm"},
+ [0x1A57]={d="l"},
+ [0x1A58]={d="nsm"},
+ [0x1A59]={d="nsm"},
+ [0x1A5A]={d="nsm"},
+ [0x1A5B]={d="nsm"},
+ [0x1A5C]={d="nsm"},
+ [0x1A5D]={d="nsm"},
+ [0x1A5E]={d="nsm"},
+ [0x1A60]={d="nsm"},
+ [0x1A61]={d="l"},
+ [0x1A62]={d="nsm"},
+ [0x1A63]={d="l"},
+ [0x1A64]={d="l"},
+ [0x1A65]={d="nsm"},
+ [0x1A66]={d="nsm"},
+ [0x1A67]={d="nsm"},
+ [0x1A68]={d="nsm"},
+ [0x1A69]={d="nsm"},
+ [0x1A6A]={d="nsm"},
+ [0x1A6B]={d="nsm"},
+ [0x1A6C]={d="nsm"},
+ [0x1A6D]={d="l"},
+ [0x1A6E]={d="l"},
+ [0x1A6F]={d="l"},
+ [0x1A70]={d="l"},
+ [0x1A71]={d="l"},
+ [0x1A72]={d="l"},
+ [0x1A73]={d="nsm"},
+ [0x1A74]={d="nsm"},
+ [0x1A75]={d="nsm"},
+ [0x1A76]={d="nsm"},
+ [0x1A77]={d="nsm"},
+ [0x1A78]={d="nsm"},
+ [0x1A79]={d="nsm"},
+ [0x1A7A]={d="nsm"},
+ [0x1A7B]={d="nsm"},
+ [0x1A7C]={d="nsm"},
+ [0x1A7F]={d="nsm"},
+ [0x1A80]={d="l"},
+ [0x1A81]={d="l"},
+ [0x1A82]={d="l"},
+ [0x1A83]={d="l"},
+ [0x1A84]={d="l"},
+ [0x1A85]={d="l"},
+ [0x1A86]={d="l"},
+ [0x1A87]={d="l"},
+ [0x1A88]={d="l"},
+ [0x1A89]={d="l"},
+ [0x1A90]={d="l"},
+ [0x1A91]={d="l"},
+ [0x1A92]={d="l"},
+ [0x1A93]={d="l"},
+ [0x1A94]={d="l"},
+ [0x1A95]={d="l"},
+ [0x1A96]={d="l"},
+ [0x1A97]={d="l"},
+ [0x1A98]={d="l"},
+ [0x1A99]={d="l"},
+ [0x1AA0]={d="l"},
+ [0x1AA1]={d="l"},
+ [0x1AA2]={d="l"},
+ [0x1AA3]={d="l"},
+ [0x1AA4]={d="l"},
+ [0x1AA5]={d="l"},
+ [0x1AA6]={d="l"},
+ [0x1AA7]={d="l"},
+ [0x1AA8]={d="l"},
+ [0x1AA9]={d="l"},
+ [0x1AAA]={d="l"},
+ [0x1AAB]={d="l"},
+ [0x1AAC]={d="l"},
+ [0x1AAD]={d="l"},
+ [0x1AB0]={d="nsm"},
+ [0x1AB1]={d="nsm"},
+ [0x1AB2]={d="nsm"},
+ [0x1AB3]={d="nsm"},
+ [0x1AB4]={d="nsm"},
+ [0x1AB5]={d="nsm"},
+ [0x1AB6]={d="nsm"},
+ [0x1AB7]={d="nsm"},
+ [0x1AB8]={d="nsm"},
+ [0x1AB9]={d="nsm"},
+ [0x1ABA]={d="nsm"},
+ [0x1ABB]={d="nsm"},
+ [0x1ABC]={d="nsm"},
+ [0x1ABD]={d="nsm"},
+ [0x1ABE]={d="nsm"},
+ [0x1ABF]={d="nsm"},
+ [0x1AC0]={d="nsm"},
+ [0x1AC1]={d="nsm"},
+ [0x1AC2]={d="nsm"},
+ [0x1AC3]={d="nsm"},
+ [0x1AC4]={d="nsm"},
+ [0x1AC5]={d="nsm"},
+ [0x1AC6]={d="nsm"},
+ [0x1AC7]={d="nsm"},
+ [0x1AC8]={d="nsm"},
+ [0x1AC9]={d="nsm"},
+ [0x1ACA]={d="nsm"},
+ [0x1ACB]={d="nsm"},
+ [0x1ACC]={d="nsm"},
+ [0x1ACD]={d="nsm"},
+ [0x1ACE]={d="nsm"},
+ [0x1B00]={d="nsm"},
+ [0x1B01]={d="nsm"},
+ [0x1B02]={d="nsm"},
+ [0x1B03]={d="nsm"},
+ [0x1B04]={d="l"},
+ [0x1B05]={d="l"},
+ [0x1B06]={d="l"},
+ [0x1B07]={d="l"},
+ [0x1B08]={d="l"},
+ [0x1B09]={d="l"},
+ [0x1B0A]={d="l"},
+ [0x1B0B]={d="l"},
+ [0x1B0C]={d="l"},
+ [0x1B0D]={d="l"},
+ [0x1B0E]={d="l"},
+ [0x1B0F]={d="l"},
+ [0x1B10]={d="l"},
+ [0x1B11]={d="l"},
+ [0x1B12]={d="l"},
+ [0x1B13]={d="l"},
+ [0x1B14]={d="l"},
+ [0x1B15]={d="l"},
+ [0x1B16]={d="l"},
+ [0x1B17]={d="l"},
+ [0x1B18]={d="l"},
+ [0x1B19]={d="l"},
+ [0x1B1A]={d="l"},
+ [0x1B1B]={d="l"},
+ [0x1B1C]={d="l"},
+ [0x1B1D]={d="l"},
+ [0x1B1E]={d="l"},
+ [0x1B1F]={d="l"},
+ [0x1B20]={d="l"},
+ [0x1B21]={d="l"},
+ [0x1B22]={d="l"},
+ [0x1B23]={d="l"},
+ [0x1B24]={d="l"},
+ [0x1B25]={d="l"},
+ [0x1B26]={d="l"},
+ [0x1B27]={d="l"},
+ [0x1B28]={d="l"},
+ [0x1B29]={d="l"},
+ [0x1B2A]={d="l"},
+ [0x1B2B]={d="l"},
+ [0x1B2C]={d="l"},
+ [0x1B2D]={d="l"},
+ [0x1B2E]={d="l"},
+ [0x1B2F]={d="l"},
+ [0x1B30]={d="l"},
+ [0x1B31]={d="l"},
+ [0x1B32]={d="l"},
+ [0x1B33]={d="l"},
+ [0x1B34]={d="nsm"},
+ [0x1B35]={d="l"},
+ [0x1B36]={d="nsm"},
+ [0x1B37]={d="nsm"},
+ [0x1B38]={d="nsm"},
+ [0x1B39]={d="nsm"},
+ [0x1B3A]={d="nsm"},
+ [0x1B3B]={d="l"},
+ [0x1B3C]={d="nsm"},
+ [0x1B3D]={d="l"},
+ [0x1B3E]={d="l"},
+ [0x1B3F]={d="l"},
+ [0x1B40]={d="l"},
+ [0x1B41]={d="l"},
+ [0x1B42]={d="nsm"},
+ [0x1B43]={d="l"},
+ [0x1B44]={d="l"},
+ [0x1B45]={d="l"},
+ [0x1B46]={d="l"},
+ [0x1B47]={d="l"},
+ [0x1B48]={d="l"},
+ [0x1B49]={d="l"},
+ [0x1B4A]={d="l"},
+ [0x1B4B]={d="l"},
+ [0x1B4C]={d="l"},
+ [0x1B50]={d="l"},
+ [0x1B51]={d="l"},
+ [0x1B52]={d="l"},
+ [0x1B53]={d="l"},
+ [0x1B54]={d="l"},
+ [0x1B55]={d="l"},
+ [0x1B56]={d="l"},
+ [0x1B57]={d="l"},
+ [0x1B58]={d="l"},
+ [0x1B59]={d="l"},
+ [0x1B5A]={d="l"},
+ [0x1B5B]={d="l"},
+ [0x1B5C]={d="l"},
+ [0x1B5D]={d="l"},
+ [0x1B5E]={d="l"},
+ [0x1B5F]={d="l"},
+ [0x1B60]={d="l"},
+ [0x1B61]={d="l"},
+ [0x1B62]={d="l"},
+ [0x1B63]={d="l"},
+ [0x1B64]={d="l"},
+ [0x1B65]={d="l"},
+ [0x1B66]={d="l"},
+ [0x1B67]={d="l"},
+ [0x1B68]={d="l"},
+ [0x1B69]={d="l"},
+ [0x1B6A]={d="l"},
+ [0x1B6B]={d="nsm"},
+ [0x1B6C]={d="nsm"},
+ [0x1B6D]={d="nsm"},
+ [0x1B6E]={d="nsm"},
+ [0x1B6F]={d="nsm"},
+ [0x1B70]={d="nsm"},
+ [0x1B71]={d="nsm"},
+ [0x1B72]={d="nsm"},
+ [0x1B73]={d="nsm"},
+ [0x1B74]={d="l"},
+ [0x1B75]={d="l"},
+ [0x1B76]={d="l"},
+ [0x1B77]={d="l"},
+ [0x1B78]={d="l"},
+ [0x1B79]={d="l"},
+ [0x1B7A]={d="l"},
+ [0x1B7B]={d="l"},
+ [0x1B7C]={d="l"},
+ [0x1B7D]={d="l"},
+ [0x1B7E]={d="l"},
+ [0x1B80]={d="nsm"},
+ [0x1B81]={d="nsm"},
+ [0x1B82]={d="l"},
+ [0x1B83]={d="l"},
+ [0x1B84]={d="l"},
+ [0x1B85]={d="l"},
+ [0x1B86]={d="l"},
+ [0x1B87]={d="l"},
+ [0x1B88]={d="l"},
+ [0x1B89]={d="l"},
+ [0x1B8A]={d="l"},
+ [0x1B8B]={d="l"},
+ [0x1B8C]={d="l"},
+ [0x1B8D]={d="l"},
+ [0x1B8E]={d="l"},
+ [0x1B8F]={d="l"},
+ [0x1B90]={d="l"},
+ [0x1B91]={d="l"},
+ [0x1B92]={d="l"},
+ [0x1B93]={d="l"},
+ [0x1B94]={d="l"},
+ [0x1B95]={d="l"},
+ [0x1B96]={d="l"},
+ [0x1B97]={d="l"},
+ [0x1B98]={d="l"},
+ [0x1B99]={d="l"},
+ [0x1B9A]={d="l"},
+ [0x1B9B]={d="l"},
+ [0x1B9C]={d="l"},
+ [0x1B9D]={d="l"},
+ [0x1B9E]={d="l"},
+ [0x1B9F]={d="l"},
+ [0x1BA0]={d="l"},
+ [0x1BA1]={d="l"},
+ [0x1BA2]={d="nsm"},
+ [0x1BA3]={d="nsm"},
+ [0x1BA4]={d="nsm"},
+ [0x1BA5]={d="nsm"},
+ [0x1BA6]={d="l"},
+ [0x1BA7]={d="l"},
+ [0x1BA8]={d="nsm"},
+ [0x1BA9]={d="nsm"},
+ [0x1BAA]={d="l"},
+ [0x1BAB]={d="nsm"},
+ [0x1BAC]={d="nsm"},
+ [0x1BAD]={d="nsm"},
+ [0x1BAE]={d="l"},
+ [0x1BAF]={d="l"},
+ [0x1BB0]={d="l"},
+ [0x1BB1]={d="l"},
+ [0x1BB2]={d="l"},
+ [0x1BB3]={d="l"},
+ [0x1BB4]={d="l"},
+ [0x1BB5]={d="l"},
+ [0x1BB6]={d="l"},
+ [0x1BB7]={d="l"},
+ [0x1BB8]={d="l"},
+ [0x1BB9]={d="l"},
+ [0x1BBA]={d="l"},
+ [0x1BBB]={d="l"},
+ [0x1BBC]={d="l"},
+ [0x1BBD]={d="l"},
+ [0x1BBE]={d="l"},
+ [0x1BBF]={d="l"},
+ [0x1BC0]={d="l"},
+ [0x1BC1]={d="l"},
+ [0x1BC2]={d="l"},
+ [0x1BC3]={d="l"},
+ [0x1BC4]={d="l"},
+ [0x1BC5]={d="l"},
+ [0x1BC6]={d="l"},
+ [0x1BC7]={d="l"},
+ [0x1BC8]={d="l"},
+ [0x1BC9]={d="l"},
+ [0x1BCA]={d="l"},
+ [0x1BCB]={d="l"},
+ [0x1BCC]={d="l"},
+ [0x1BCD]={d="l"},
+ [0x1BCE]={d="l"},
+ [0x1BCF]={d="l"},
+ [0x1BD0]={d="l"},
+ [0x1BD1]={d="l"},
+ [0x1BD2]={d="l"},
+ [0x1BD3]={d="l"},
+ [0x1BD4]={d="l"},
+ [0x1BD5]={d="l"},
+ [0x1BD6]={d="l"},
+ [0x1BD7]={d="l"},
+ [0x1BD8]={d="l"},
+ [0x1BD9]={d="l"},
+ [0x1BDA]={d="l"},
+ [0x1BDB]={d="l"},
+ [0x1BDC]={d="l"},
+ [0x1BDD]={d="l"},
+ [0x1BDE]={d="l"},
+ [0x1BDF]={d="l"},
+ [0x1BE0]={d="l"},
+ [0x1BE1]={d="l"},
+ [0x1BE2]={d="l"},
+ [0x1BE3]={d="l"},
+ [0x1BE4]={d="l"},
+ [0x1BE5]={d="l"},
+ [0x1BE6]={d="nsm"},
+ [0x1BE7]={d="l"},
+ [0x1BE8]={d="nsm"},
+ [0x1BE9]={d="nsm"},
+ [0x1BEA]={d="l"},
+ [0x1BEB]={d="l"},
+ [0x1BEC]={d="l"},
+ [0x1BED]={d="nsm"},
+ [0x1BEE]={d="l"},
+ [0x1BEF]={d="nsm"},
+ [0x1BF0]={d="nsm"},
+ [0x1BF1]={d="nsm"},
+ [0x1BF2]={d="l"},
+ [0x1BF3]={d="l"},
+ [0x1BFC]={d="l"},
+ [0x1BFD]={d="l"},
+ [0x1BFE]={d="l"},
+ [0x1BFF]={d="l"},
+ [0x1C00]={d="l"},
+ [0x1C01]={d="l"},
+ [0x1C02]={d="l"},
+ [0x1C03]={d="l"},
+ [0x1C04]={d="l"},
+ [0x1C05]={d="l"},
+ [0x1C06]={d="l"},
+ [0x1C07]={d="l"},
+ [0x1C08]={d="l"},
+ [0x1C09]={d="l"},
+ [0x1C0A]={d="l"},
+ [0x1C0B]={d="l"},
+ [0x1C0C]={d="l"},
+ [0x1C0D]={d="l"},
+ [0x1C0E]={d="l"},
+ [0x1C0F]={d="l"},
+ [0x1C10]={d="l"},
+ [0x1C11]={d="l"},
+ [0x1C12]={d="l"},
+ [0x1C13]={d="l"},
+ [0x1C14]={d="l"},
+ [0x1C15]={d="l"},
+ [0x1C16]={d="l"},
+ [0x1C17]={d="l"},
+ [0x1C18]={d="l"},
+ [0x1C19]={d="l"},
+ [0x1C1A]={d="l"},
+ [0x1C1B]={d="l"},
+ [0x1C1C]={d="l"},
+ [0x1C1D]={d="l"},
+ [0x1C1E]={d="l"},
+ [0x1C1F]={d="l"},
+ [0x1C20]={d="l"},
+ [0x1C21]={d="l"},
+ [0x1C22]={d="l"},
+ [0x1C23]={d="l"},
+ [0x1C24]={d="l"},
+ [0x1C25]={d="l"},
+ [0x1C26]={d="l"},
+ [0x1C27]={d="l"},
+ [0x1C28]={d="l"},
+ [0x1C29]={d="l"},
+ [0x1C2A]={d="l"},
+ [0x1C2B]={d="l"},
+ [0x1C2C]={d="nsm"},
+ [0x1C2D]={d="nsm"},
+ [0x1C2E]={d="nsm"},
+ [0x1C2F]={d="nsm"},
+ [0x1C30]={d="nsm"},
+ [0x1C31]={d="nsm"},
+ [0x1C32]={d="nsm"},
+ [0x1C33]={d="nsm"},
+ [0x1C34]={d="l"},
+ [0x1C35]={d="l"},
+ [0x1C36]={d="nsm"},
+ [0x1C37]={d="nsm"},
+ [0x1C3B]={d="l"},
+ [0x1C3C]={d="l"},
+ [0x1C3D]={d="l"},
+ [0x1C3E]={d="l"},
+ [0x1C3F]={d="l"},
+ [0x1C40]={d="l"},
+ [0x1C41]={d="l"},
+ [0x1C42]={d="l"},
+ [0x1C43]={d="l"},
+ [0x1C44]={d="l"},
+ [0x1C45]={d="l"},
+ [0x1C46]={d="l"},
+ [0x1C47]={d="l"},
+ [0x1C48]={d="l"},
+ [0x1C49]={d="l"},
+ [0x1C4D]={d="l"},
+ [0x1C4E]={d="l"},
+ [0x1C4F]={d="l"},
+ [0x1C50]={d="l"},
+ [0x1C51]={d="l"},
+ [0x1C52]={d="l"},
+ [0x1C53]={d="l"},
+ [0x1C54]={d="l"},
+ [0x1C55]={d="l"},
+ [0x1C56]={d="l"},
+ [0x1C57]={d="l"},
+ [0x1C58]={d="l"},
+ [0x1C59]={d="l"},
+ [0x1C5A]={d="l"},
+ [0x1C5B]={d="l"},
+ [0x1C5C]={d="l"},
+ [0x1C5D]={d="l"},
+ [0x1C5E]={d="l"},
+ [0x1C5F]={d="l"},
+ [0x1C60]={d="l"},
+ [0x1C61]={d="l"},
+ [0x1C62]={d="l"},
+ [0x1C63]={d="l"},
+ [0x1C64]={d="l"},
+ [0x1C65]={d="l"},
+ [0x1C66]={d="l"},
+ [0x1C67]={d="l"},
+ [0x1C68]={d="l"},
+ [0x1C69]={d="l"},
+ [0x1C6A]={d="l"},
+ [0x1C6B]={d="l"},
+ [0x1C6C]={d="l"},
+ [0x1C6D]={d="l"},
+ [0x1C6E]={d="l"},
+ [0x1C6F]={d="l"},
+ [0x1C70]={d="l"},
+ [0x1C71]={d="l"},
+ [0x1C72]={d="l"},
+ [0x1C73]={d="l"},
+ [0x1C74]={d="l"},
+ [0x1C75]={d="l"},
+ [0x1C76]={d="l"},
+ [0x1C77]={d="l"},
+ [0x1C78]={d="l"},
+ [0x1C79]={d="l"},
+ [0x1C7A]={d="l"},
+ [0x1C7B]={d="l"},
+ [0x1C7C]={d="l"},
+ [0x1C7D]={d="l"},
+ [0x1C7E]={d="l"},
+ [0x1C7F]={d="l"},
+ [0x1C80]={d="l"},
+ [0x1C81]={d="l"},
+ [0x1C82]={d="l"},
+ [0x1C83]={d="l"},
+ [0x1C84]={d="l"},
+ [0x1C85]={d="l"},
+ [0x1C86]={d="l"},
+ [0x1C87]={d="l"},
+ [0x1C88]={d="l"},
+ [0x1C90]={d="l"},
+ [0x1C91]={d="l"},
+ [0x1C92]={d="l"},
+ [0x1C93]={d="l"},
+ [0x1C94]={d="l"},
+ [0x1C95]={d="l"},
+ [0x1C96]={d="l"},
+ [0x1C97]={d="l"},
+ [0x1C98]={d="l"},
+ [0x1C99]={d="l"},
+ [0x1C9A]={d="l"},
+ [0x1C9B]={d="l"},
+ [0x1C9C]={d="l"},
+ [0x1C9D]={d="l"},
+ [0x1C9E]={d="l"},
+ [0x1C9F]={d="l"},
+ [0x1CA0]={d="l"},
+ [0x1CA1]={d="l"},
+ [0x1CA2]={d="l"},
+ [0x1CA3]={d="l"},
+ [0x1CA4]={d="l"},
+ [0x1CA5]={d="l"},
+ [0x1CA6]={d="l"},
+ [0x1CA7]={d="l"},
+ [0x1CA8]={d="l"},
+ [0x1CA9]={d="l"},
+ [0x1CAA]={d="l"},
+ [0x1CAB]={d="l"},
+ [0x1CAC]={d="l"},
+ [0x1CAD]={d="l"},
+ [0x1CAE]={d="l"},
+ [0x1CAF]={d="l"},
+ [0x1CB0]={d="l"},
+ [0x1CB1]={d="l"},
+ [0x1CB2]={d="l"},
+ [0x1CB3]={d="l"},
+ [0x1CB4]={d="l"},
+ [0x1CB5]={d="l"},
+ [0x1CB6]={d="l"},
+ [0x1CB7]={d="l"},
+ [0x1CB8]={d="l"},
+ [0x1CB9]={d="l"},
+ [0x1CBA]={d="l"},
+ [0x1CBD]={d="l"},
+ [0x1CBE]={d="l"},
+ [0x1CBF]={d="l"},
+ [0x1CC0]={d="l"},
+ [0x1CC1]={d="l"},
+ [0x1CC2]={d="l"},
+ [0x1CC3]={d="l"},
+ [0x1CC4]={d="l"},
+ [0x1CC5]={d="l"},
+ [0x1CC6]={d="l"},
+ [0x1CC7]={d="l"},
+ [0x1CD0]={d="nsm"},
+ [0x1CD1]={d="nsm"},
+ [0x1CD2]={d="nsm"},
+ [0x1CD3]={d="l"},
+ [0x1CD4]={d="nsm"},
+ [0x1CD5]={d="nsm"},
+ [0x1CD6]={d="nsm"},
+ [0x1CD7]={d="nsm"},
+ [0x1CD8]={d="nsm"},
+ [0x1CD9]={d="nsm"},
+ [0x1CDA]={d="nsm"},
+ [0x1CDB]={d="nsm"},
+ [0x1CDC]={d="nsm"},
+ [0x1CDD]={d="nsm"},
+ [0x1CDE]={d="nsm"},
+ [0x1CDF]={d="nsm"},
+ [0x1CE0]={d="nsm"},
+ [0x1CE1]={d="l"},
+ [0x1CE2]={d="nsm"},
+ [0x1CE3]={d="nsm"},
+ [0x1CE4]={d="nsm"},
+ [0x1CE5]={d="nsm"},
+ [0x1CE6]={d="nsm"},
+ [0x1CE7]={d="nsm"},
+ [0x1CE8]={d="nsm"},
+ [0x1CE9]={d="l"},
+ [0x1CEA]={d="l"},
+ [0x1CEB]={d="l"},
+ [0x1CEC]={d="l"},
+ [0x1CED]={d="nsm"},
+ [0x1CEE]={d="l"},
+ [0x1CEF]={d="l"},
+ [0x1CF0]={d="l"},
+ [0x1CF1]={d="l"},
+ [0x1CF2]={d="l"},
+ [0x1CF3]={d="l"},
+ [0x1CF4]={d="nsm"},
+ [0x1CF5]={d="l"},
+ [0x1CF6]={d="l"},
+ [0x1CF7]={d="l"},
+ [0x1CF8]={d="nsm"},
+ [0x1CF9]={d="nsm"},
+ [0x1CFA]={d="l"},
+ [0x1D00]={d="l"},
+ [0x1D01]={d="l"},
+ [0x1D02]={d="l"},
+ [0x1D03]={d="l"},
+ [0x1D04]={d="l"},
+ [0x1D05]={d="l"},
+ [0x1D06]={d="l"},
+ [0x1D07]={d="l"},
+ [0x1D08]={d="l"},
+ [0x1D09]={d="l"},
+ [0x1D0A]={d="l"},
+ [0x1D0B]={d="l"},
+ [0x1D0C]={d="l"},
+ [0x1D0D]={d="l"},
+ [0x1D0E]={d="l"},
+ [0x1D0F]={d="l"},
+ [0x1D10]={d="l"},
+ [0x1D11]={d="l"},
+ [0x1D12]={d="l"},
+ [0x1D13]={d="l"},
+ [0x1D14]={d="l"},
+ [0x1D15]={d="l"},
+ [0x1D16]={d="l"},
+ [0x1D17]={d="l"},
+ [0x1D18]={d="l"},
+ [0x1D19]={d="l"},
+ [0x1D1A]={d="l"},
+ [0x1D1B]={d="l"},
+ [0x1D1C]={d="l"},
+ [0x1D1D]={d="l"},
+ [0x1D1E]={d="l"},
+ [0x1D1F]={d="l"},
+ [0x1D20]={d="l"},
+ [0x1D21]={d="l"},
+ [0x1D22]={d="l"},
+ [0x1D23]={d="l"},
+ [0x1D24]={d="l"},
+ [0x1D25]={d="l"},
+ [0x1D26]={d="l"},
+ [0x1D27]={d="l"},
+ [0x1D28]={d="l"},
+ [0x1D29]={d="l"},
+ [0x1D2A]={d="l"},
+ [0x1D2B]={d="l"},
+ [0x1D2C]={d="l"},
+ [0x1D2D]={d="l"},
+ [0x1D2E]={d="l"},
+ [0x1D2F]={d="l"},
+ [0x1D30]={d="l"},
+ [0x1D31]={d="l"},
+ [0x1D32]={d="l"},
+ [0x1D33]={d="l"},
+ [0x1D34]={d="l"},
+ [0x1D35]={d="l"},
+ [0x1D36]={d="l"},
+ [0x1D37]={d="l"},
+ [0x1D38]={d="l"},
+ [0x1D39]={d="l"},
+ [0x1D3A]={d="l"},
+ [0x1D3B]={d="l"},
+ [0x1D3C]={d="l"},
+ [0x1D3D]={d="l"},
+ [0x1D3E]={d="l"},
+ [0x1D3F]={d="l"},
+ [0x1D40]={d="l"},
+ [0x1D41]={d="l"},
+ [0x1D42]={d="l"},
+ [0x1D43]={d="l"},
+ [0x1D44]={d="l"},
+ [0x1D45]={d="l"},
+ [0x1D46]={d="l"},
+ [0x1D47]={d="l"},
+ [0x1D48]={d="l"},
+ [0x1D49]={d="l"},
+ [0x1D4A]={d="l"},
+ [0x1D4B]={d="l"},
+ [0x1D4C]={d="l"},
+ [0x1D4D]={d="l"},
+ [0x1D4E]={d="l"},
+ [0x1D4F]={d="l"},
+ [0x1D50]={d="l"},
+ [0x1D51]={d="l"},
+ [0x1D52]={d="l"},
+ [0x1D53]={d="l"},
+ [0x1D54]={d="l"},
+ [0x1D55]={d="l"},
+ [0x1D56]={d="l"},
+ [0x1D57]={d="l"},
+ [0x1D58]={d="l"},
+ [0x1D59]={d="l"},
+ [0x1D5A]={d="l"},
+ [0x1D5B]={d="l"},
+ [0x1D5C]={d="l"},
+ [0x1D5D]={d="l"},
+ [0x1D5E]={d="l"},
+ [0x1D5F]={d="l"},
+ [0x1D60]={d="l"},
+ [0x1D61]={d="l"},
+ [0x1D62]={d="l"},
+ [0x1D63]={d="l"},
+ [0x1D64]={d="l"},
+ [0x1D65]={d="l"},
+ [0x1D66]={d="l"},
+ [0x1D67]={d="l"},
+ [0x1D68]={d="l"},
+ [0x1D69]={d="l"},
+ [0x1D6A]={d="l"},
+ [0x1D6B]={d="l"},
+ [0x1D6C]={d="l"},
+ [0x1D6D]={d="l"},
+ [0x1D6E]={d="l"},
+ [0x1D6F]={d="l"},
+ [0x1D70]={d="l"},
+ [0x1D71]={d="l"},
+ [0x1D72]={d="l"},
+ [0x1D73]={d="l"},
+ [0x1D74]={d="l"},
+ [0x1D75]={d="l"},
+ [0x1D76]={d="l"},
+ [0x1D77]={d="l"},
+ [0x1D78]={d="l"},
+ [0x1D79]={d="l"},
+ [0x1D7A]={d="l"},
+ [0x1D7B]={d="l"},
+ [0x1D7C]={d="l"},
+ [0x1D7D]={d="l"},
+ [0x1D7E]={d="l"},
+ [0x1D7F]={d="l"},
+ [0x1D80]={d="l"},
+ [0x1D81]={d="l"},
+ [0x1D82]={d="l"},
+ [0x1D83]={d="l"},
+ [0x1D84]={d="l"},
+ [0x1D85]={d="l"},
+ [0x1D86]={d="l"},
+ [0x1D87]={d="l"},
+ [0x1D88]={d="l"},
+ [0x1D89]={d="l"},
+ [0x1D8A]={d="l"},
+ [0x1D8B]={d="l"},
+ [0x1D8C]={d="l"},
+ [0x1D8D]={d="l"},
+ [0x1D8E]={d="l"},
+ [0x1D8F]={d="l"},
+ [0x1D90]={d="l"},
+ [0x1D91]={d="l"},
+ [0x1D92]={d="l"},
+ [0x1D93]={d="l"},
+ [0x1D94]={d="l"},
+ [0x1D95]={d="l"},
+ [0x1D96]={d="l"},
+ [0x1D97]={d="l"},
+ [0x1D98]={d="l"},
+ [0x1D99]={d="l"},
+ [0x1D9A]={d="l"},
+ [0x1D9B]={d="l"},
+ [0x1D9C]={d="l"},
+ [0x1D9D]={d="l"},
+ [0x1D9E]={d="l"},
+ [0x1D9F]={d="l"},
+ [0x1DA0]={d="l"},
+ [0x1DA1]={d="l"},
+ [0x1DA2]={d="l"},
+ [0x1DA3]={d="l"},
+ [0x1DA4]={d="l"},
+ [0x1DA5]={d="l"},
+ [0x1DA6]={d="l"},
+ [0x1DA7]={d="l"},
+ [0x1DA8]={d="l"},
+ [0x1DA9]={d="l"},
+ [0x1DAA]={d="l"},
+ [0x1DAB]={d="l"},
+ [0x1DAC]={d="l"},
+ [0x1DAD]={d="l"},
+ [0x1DAE]={d="l"},
+ [0x1DAF]={d="l"},
+ [0x1DB0]={d="l"},
+ [0x1DB1]={d="l"},
+ [0x1DB2]={d="l"},
+ [0x1DB3]={d="l"},
+ [0x1DB4]={d="l"},
+ [0x1DB5]={d="l"},
+ [0x1DB6]={d="l"},
+ [0x1DB7]={d="l"},
+ [0x1DB8]={d="l"},
+ [0x1DB9]={d="l"},
+ [0x1DBA]={d="l"},
+ [0x1DBB]={d="l"},
+ [0x1DBC]={d="l"},
+ [0x1DBD]={d="l"},
+ [0x1DBE]={d="l"},
+ [0x1DBF]={d="l"},
+ [0x1DC0]={d="nsm"},
+ [0x1DC1]={d="nsm"},
+ [0x1DC2]={d="nsm"},
+ [0x1DC3]={d="nsm"},
+ [0x1DC4]={d="nsm"},
+ [0x1DC5]={d="nsm"},
+ [0x1DC6]={d="nsm"},
+ [0x1DC7]={d="nsm"},
+ [0x1DC8]={d="nsm"},
+ [0x1DC9]={d="nsm"},
+ [0x1DCA]={d="nsm"},
+ [0x1DCB]={d="nsm"},
+ [0x1DCC]={d="nsm"},
+ [0x1DCD]={d="nsm"},
+ [0x1DCE]={d="nsm"},
+ [0x1DCF]={d="nsm"},
+ [0x1DD0]={d="nsm"},
+ [0x1DD1]={d="nsm"},
+ [0x1DD2]={d="nsm"},
+ [0x1DD3]={d="nsm"},
+ [0x1DD4]={d="nsm"},
+ [0x1DD5]={d="nsm"},
+ [0x1DD6]={d="nsm"},
+ [0x1DD7]={d="nsm"},
+ [0x1DD8]={d="nsm"},
+ [0x1DD9]={d="nsm"},
+ [0x1DDA]={d="nsm"},
+ [0x1DDB]={d="nsm"},
+ [0x1DDC]={d="nsm"},
+ [0x1DDD]={d="nsm"},
+ [0x1DDE]={d="nsm"},
+ [0x1DDF]={d="nsm"},
+ [0x1DE0]={d="nsm"},
+ [0x1DE1]={d="nsm"},
+ [0x1DE2]={d="nsm"},
+ [0x1DE3]={d="nsm"},
+ [0x1DE4]={d="nsm"},
+ [0x1DE5]={d="nsm"},
+ [0x1DE6]={d="nsm"},
+ [0x1DE7]={d="nsm"},
+ [0x1DE8]={d="nsm"},
+ [0x1DE9]={d="nsm"},
+ [0x1DEA]={d="nsm"},
+ [0x1DEB]={d="nsm"},
+ [0x1DEC]={d="nsm"},
+ [0x1DED]={d="nsm"},
+ [0x1DEE]={d="nsm"},
+ [0x1DEF]={d="nsm"},
+ [0x1DF0]={d="nsm"},
+ [0x1DF1]={d="nsm"},
+ [0x1DF2]={d="nsm"},
+ [0x1DF3]={d="nsm"},
+ [0x1DF4]={d="nsm"},
+ [0x1DF5]={d="nsm"},
+ [0x1DF6]={d="nsm"},
+ [0x1DF7]={d="nsm"},
+ [0x1DF8]={d="nsm"},
+ [0x1DF9]={d="nsm"},
+ [0x1DFA]={d="nsm"},
+ [0x1DFB]={d="nsm"},
+ [0x1DFC]={d="nsm"},
+ [0x1DFD]={d="nsm"},
+ [0x1DFE]={d="nsm"},
+ [0x1DFF]={d="nsm"},
+ [0x1E00]={d="l"},
+ [0x1E01]={d="l"},
+ [0x1E02]={d="l"},
+ [0x1E03]={d="l"},
+ [0x1E04]={d="l"},
+ [0x1E05]={d="l"},
+ [0x1E06]={d="l"},
+ [0x1E07]={d="l"},
+ [0x1E08]={d="l"},
+ [0x1E09]={d="l"},
+ [0x1E0A]={d="l"},
+ [0x1E0B]={d="l"},
+ [0x1E0C]={d="l"},
+ [0x1E0D]={d="l"},
+ [0x1E0E]={d="l"},
+ [0x1E0F]={d="l"},
+ [0x1E10]={d="l"},
+ [0x1E11]={d="l"},
+ [0x1E12]={d="l"},
+ [0x1E13]={d="l"},
+ [0x1E14]={d="l"},
+ [0x1E15]={d="l"},
+ [0x1E16]={d="l"},
+ [0x1E17]={d="l"},
+ [0x1E18]={d="l"},
+ [0x1E19]={d="l"},
+ [0x1E1A]={d="l"},
+ [0x1E1B]={d="l"},
+ [0x1E1C]={d="l"},
+ [0x1E1D]={d="l"},
+ [0x1E1E]={d="l"},
+ [0x1E1F]={d="l"},
+ [0x1E20]={d="l"},
+ [0x1E21]={d="l"},
+ [0x1E22]={d="l"},
+ [0x1E23]={d="l"},
+ [0x1E24]={d="l"},
+ [0x1E25]={d="l"},
+ [0x1E26]={d="l"},
+ [0x1E27]={d="l"},
+ [0x1E28]={d="l"},
+ [0x1E29]={d="l"},
+ [0x1E2A]={d="l"},
+ [0x1E2B]={d="l"},
+ [0x1E2C]={d="l"},
+ [0x1E2D]={d="l"},
+ [0x1E2E]={d="l"},
+ [0x1E2F]={d="l"},
+ [0x1E30]={d="l"},
+ [0x1E31]={d="l"},
+ [0x1E32]={d="l"},
+ [0x1E33]={d="l"},
+ [0x1E34]={d="l"},
+ [0x1E35]={d="l"},
+ [0x1E36]={d="l"},
+ [0x1E37]={d="l"},
+ [0x1E38]={d="l"},
+ [0x1E39]={d="l"},
+ [0x1E3A]={d="l"},
+ [0x1E3B]={d="l"},
+ [0x1E3C]={d="l"},
+ [0x1E3D]={d="l"},
+ [0x1E3E]={d="l"},
+ [0x1E3F]={d="l"},
+ [0x1E40]={d="l"},
+ [0x1E41]={d="l"},
+ [0x1E42]={d="l"},
+ [0x1E43]={d="l"},
+ [0x1E44]={d="l"},
+ [0x1E45]={d="l"},
+ [0x1E46]={d="l"},
+ [0x1E47]={d="l"},
+ [0x1E48]={d="l"},
+ [0x1E49]={d="l"},
+ [0x1E4A]={d="l"},
+ [0x1E4B]={d="l"},
+ [0x1E4C]={d="l"},
+ [0x1E4D]={d="l"},
+ [0x1E4E]={d="l"},
+ [0x1E4F]={d="l"},
+ [0x1E50]={d="l"},
+ [0x1E51]={d="l"},
+ [0x1E52]={d="l"},
+ [0x1E53]={d="l"},
+ [0x1E54]={d="l"},
+ [0x1E55]={d="l"},
+ [0x1E56]={d="l"},
+ [0x1E57]={d="l"},
+ [0x1E58]={d="l"},
+ [0x1E59]={d="l"},
+ [0x1E5A]={d="l"},
+ [0x1E5B]={d="l"},
+ [0x1E5C]={d="l"},
+ [0x1E5D]={d="l"},
+ [0x1E5E]={d="l"},
+ [0x1E5F]={d="l"},
+ [0x1E60]={d="l"},
+ [0x1E61]={d="l"},
+ [0x1E62]={d="l"},
+ [0x1E63]={d="l"},
+ [0x1E64]={d="l"},
+ [0x1E65]={d="l"},
+ [0x1E66]={d="l"},
+ [0x1E67]={d="l"},
+ [0x1E68]={d="l"},
+ [0x1E69]={d="l"},
+ [0x1E6A]={d="l"},
+ [0x1E6B]={d="l"},
+ [0x1E6C]={d="l"},
+ [0x1E6D]={d="l"},
+ [0x1E6E]={d="l"},
+ [0x1E6F]={d="l"},
+ [0x1E70]={d="l"},
+ [0x1E71]={d="l"},
+ [0x1E72]={d="l"},
+ [0x1E73]={d="l"},
+ [0x1E74]={d="l"},
+ [0x1E75]={d="l"},
+ [0x1E76]={d="l"},
+ [0x1E77]={d="l"},
+ [0x1E78]={d="l"},
+ [0x1E79]={d="l"},
+ [0x1E7A]={d="l"},
+ [0x1E7B]={d="l"},
+ [0x1E7C]={d="l"},
+ [0x1E7D]={d="l"},
+ [0x1E7E]={d="l"},
+ [0x1E7F]={d="l"},
+ [0x1E80]={d="l"},
+ [0x1E81]={d="l"},
+ [0x1E82]={d="l"},
+ [0x1E83]={d="l"},
+ [0x1E84]={d="l"},
+ [0x1E85]={d="l"},
+ [0x1E86]={d="l"},
+ [0x1E87]={d="l"},
+ [0x1E88]={d="l"},
+ [0x1E89]={d="l"},
+ [0x1E8A]={d="l"},
+ [0x1E8B]={d="l"},
+ [0x1E8C]={d="l"},
+ [0x1E8D]={d="l"},
+ [0x1E8E]={d="l"},
+ [0x1E8F]={d="l"},
+ [0x1E90]={d="l"},
+ [0x1E91]={d="l"},
+ [0x1E92]={d="l"},
+ [0x1E93]={d="l"},
+ [0x1E94]={d="l"},
+ [0x1E95]={d="l"},
+ [0x1E96]={d="l"},
+ [0x1E97]={d="l"},
+ [0x1E98]={d="l"},
+ [0x1E99]={d="l"},
+ [0x1E9A]={d="l"},
+ [0x1E9B]={d="l"},
+ [0x1E9C]={d="l"},
+ [0x1E9D]={d="l"},
+ [0x1E9E]={d="l"},
+ [0x1E9F]={d="l"},
+ [0x1EA0]={d="l"},
+ [0x1EA1]={d="l"},
+ [0x1EA2]={d="l"},
+ [0x1EA3]={d="l"},
+ [0x1EA4]={d="l"},
+ [0x1EA5]={d="l"},
+ [0x1EA6]={d="l"},
+ [0x1EA7]={d="l"},
+ [0x1EA8]={d="l"},
+ [0x1EA9]={d="l"},
+ [0x1EAA]={d="l"},
+ [0x1EAB]={d="l"},
+ [0x1EAC]={d="l"},
+ [0x1EAD]={d="l"},
+ [0x1EAE]={d="l"},
+ [0x1EAF]={d="l"},
+ [0x1EB0]={d="l"},
+ [0x1EB1]={d="l"},
+ [0x1EB2]={d="l"},
+ [0x1EB3]={d="l"},
+ [0x1EB4]={d="l"},
+ [0x1EB5]={d="l"},
+ [0x1EB6]={d="l"},
+ [0x1EB7]={d="l"},
+ [0x1EB8]={d="l"},
+ [0x1EB9]={d="l"},
+ [0x1EBA]={d="l"},
+ [0x1EBB]={d="l"},
+ [0x1EBC]={d="l"},
+ [0x1EBD]={d="l"},
+ [0x1EBE]={d="l"},
+ [0x1EBF]={d="l"},
+ [0x1EC0]={d="l"},
+ [0x1EC1]={d="l"},
+ [0x1EC2]={d="l"},
+ [0x1EC3]={d="l"},
+ [0x1EC4]={d="l"},
+ [0x1EC5]={d="l"},
+ [0x1EC6]={d="l"},
+ [0x1EC7]={d="l"},
+ [0x1EC8]={d="l"},
+ [0x1EC9]={d="l"},
+ [0x1ECA]={d="l"},
+ [0x1ECB]={d="l"},
+ [0x1ECC]={d="l"},
+ [0x1ECD]={d="l"},
+ [0x1ECE]={d="l"},
+ [0x1ECF]={d="l"},
+ [0x1ED0]={d="l"},
+ [0x1ED1]={d="l"},
+ [0x1ED2]={d="l"},
+ [0x1ED3]={d="l"},
+ [0x1ED4]={d="l"},
+ [0x1ED5]={d="l"},
+ [0x1ED6]={d="l"},
+ [0x1ED7]={d="l"},
+ [0x1ED8]={d="l"},
+ [0x1ED9]={d="l"},
+ [0x1EDA]={d="l"},
+ [0x1EDB]={d="l"},
+ [0x1EDC]={d="l"},
+ [0x1EDD]={d="l"},
+ [0x1EDE]={d="l"},
+ [0x1EDF]={d="l"},
+ [0x1EE0]={d="l"},
+ [0x1EE1]={d="l"},
+ [0x1EE2]={d="l"},
+ [0x1EE3]={d="l"},
+ [0x1EE4]={d="l"},
+ [0x1EE5]={d="l"},
+ [0x1EE6]={d="l"},
+ [0x1EE7]={d="l"},
+ [0x1EE8]={d="l"},
+ [0x1EE9]={d="l"},
+ [0x1EEA]={d="l"},
+ [0x1EEB]={d="l"},
+ [0x1EEC]={d="l"},
+ [0x1EED]={d="l"},
+ [0x1EEE]={d="l"},
+ [0x1EEF]={d="l"},
+ [0x1EF0]={d="l"},
+ [0x1EF1]={d="l"},
+ [0x1EF2]={d="l"},
+ [0x1EF3]={d="l"},
+ [0x1EF4]={d="l"},
+ [0x1EF5]={d="l"},
+ [0x1EF6]={d="l"},
+ [0x1EF7]={d="l"},
+ [0x1EF8]={d="l"},
+ [0x1EF9]={d="l"},
+ [0x1EFA]={d="l"},
+ [0x1EFB]={d="l"},
+ [0x1EFC]={d="l"},
+ [0x1EFD]={d="l"},
+ [0x1EFE]={d="l"},
+ [0x1EFF]={d="l"},
+ [0x1F00]={d="l"},
+ [0x1F01]={d="l"},
+ [0x1F02]={d="l"},
+ [0x1F03]={d="l"},
+ [0x1F04]={d="l"},
+ [0x1F05]={d="l"},
+ [0x1F06]={d="l"},
+ [0x1F07]={d="l"},
+ [0x1F08]={d="l"},
+ [0x1F09]={d="l"},
+ [0x1F0A]={d="l"},
+ [0x1F0B]={d="l"},
+ [0x1F0C]={d="l"},
+ [0x1F0D]={d="l"},
+ [0x1F0E]={d="l"},
+ [0x1F0F]={d="l"},
+ [0x1F10]={d="l"},
+ [0x1F11]={d="l"},
+ [0x1F12]={d="l"},
+ [0x1F13]={d="l"},
+ [0x1F14]={d="l"},
+ [0x1F15]={d="l"},
+ [0x1F18]={d="l"},
+ [0x1F19]={d="l"},
+ [0x1F1A]={d="l"},
+ [0x1F1B]={d="l"},
+ [0x1F1C]={d="l"},
+ [0x1F1D]={d="l"},
+ [0x1F20]={d="l"},
+ [0x1F21]={d="l"},
+ [0x1F22]={d="l"},
+ [0x1F23]={d="l"},
+ [0x1F24]={d="l"},
+ [0x1F25]={d="l"},
+ [0x1F26]={d="l"},
+ [0x1F27]={d="l"},
+ [0x1F28]={d="l"},
+ [0x1F29]={d="l"},
+ [0x1F2A]={d="l"},
+ [0x1F2B]={d="l"},
+ [0x1F2C]={d="l"},
+ [0x1F2D]={d="l"},
+ [0x1F2E]={d="l"},
+ [0x1F2F]={d="l"},
+ [0x1F30]={d="l"},
+ [0x1F31]={d="l"},
+ [0x1F32]={d="l"},
+ [0x1F33]={d="l"},
+ [0x1F34]={d="l"},
+ [0x1F35]={d="l"},
+ [0x1F36]={d="l"},
+ [0x1F37]={d="l"},
+ [0x1F38]={d="l"},
+ [0x1F39]={d="l"},
+ [0x1F3A]={d="l"},
+ [0x1F3B]={d="l"},
+ [0x1F3C]={d="l"},
+ [0x1F3D]={d="l"},
+ [0x1F3E]={d="l"},
+ [0x1F3F]={d="l"},
+ [0x1F40]={d="l"},
+ [0x1F41]={d="l"},
+ [0x1F42]={d="l"},
+ [0x1F43]={d="l"},
+ [0x1F44]={d="l"},
+ [0x1F45]={d="l"},
+ [0x1F48]={d="l"},
+ [0x1F49]={d="l"},
+ [0x1F4A]={d="l"},
+ [0x1F4B]={d="l"},
+ [0x1F4C]={d="l"},
+ [0x1F4D]={d="l"},
+ [0x1F50]={d="l"},
+ [0x1F51]={d="l"},
+ [0x1F52]={d="l"},
+ [0x1F53]={d="l"},
+ [0x1F54]={d="l"},
+ [0x1F55]={d="l"},
+ [0x1F56]={d="l"},
+ [0x1F57]={d="l"},
+ [0x1F59]={d="l"},
+ [0x1F5B]={d="l"},
+ [0x1F5D]={d="l"},
+ [0x1F5F]={d="l"},
+ [0x1F60]={d="l"},
+ [0x1F61]={d="l"},
+ [0x1F62]={d="l"},
+ [0x1F63]={d="l"},
+ [0x1F64]={d="l"},
+ [0x1F65]={d="l"},
+ [0x1F66]={d="l"},
+ [0x1F67]={d="l"},
+ [0x1F68]={d="l"},
+ [0x1F69]={d="l"},
+ [0x1F6A]={d="l"},
+ [0x1F6B]={d="l"},
+ [0x1F6C]={d="l"},
+ [0x1F6D]={d="l"},
+ [0x1F6E]={d="l"},
+ [0x1F6F]={d="l"},
+ [0x1F70]={d="l"},
+ [0x1F71]={d="l"},
+ [0x1F72]={d="l"},
+ [0x1F73]={d="l"},
+ [0x1F74]={d="l"},
+ [0x1F75]={d="l"},
+ [0x1F76]={d="l"},
+ [0x1F77]={d="l"},
+ [0x1F78]={d="l"},
+ [0x1F79]={d="l"},
+ [0x1F7A]={d="l"},
+ [0x1F7B]={d="l"},
+ [0x1F7C]={d="l"},
+ [0x1F7D]={d="l"},
+ [0x1F80]={d="l"},
+ [0x1F81]={d="l"},
+ [0x1F82]={d="l"},
+ [0x1F83]={d="l"},
+ [0x1F84]={d="l"},
+ [0x1F85]={d="l"},
+ [0x1F86]={d="l"},
+ [0x1F87]={d="l"},
+ [0x1F88]={d="l"},
+ [0x1F89]={d="l"},
+ [0x1F8A]={d="l"},
+ [0x1F8B]={d="l"},
+ [0x1F8C]={d="l"},
+ [0x1F8D]={d="l"},
+ [0x1F8E]={d="l"},
+ [0x1F8F]={d="l"},
+ [0x1F90]={d="l"},
+ [0x1F91]={d="l"},
+ [0x1F92]={d="l"},
+ [0x1F93]={d="l"},
+ [0x1F94]={d="l"},
+ [0x1F95]={d="l"},
+ [0x1F96]={d="l"},
+ [0x1F97]={d="l"},
+ [0x1F98]={d="l"},
+ [0x1F99]={d="l"},
+ [0x1F9A]={d="l"},
+ [0x1F9B]={d="l"},
+ [0x1F9C]={d="l"},
+ [0x1F9D]={d="l"},
+ [0x1F9E]={d="l"},
+ [0x1F9F]={d="l"},
+ [0x1FA0]={d="l"},
+ [0x1FA1]={d="l"},
+ [0x1FA2]={d="l"},
+ [0x1FA3]={d="l"},
+ [0x1FA4]={d="l"},
+ [0x1FA5]={d="l"},
+ [0x1FA6]={d="l"},
+ [0x1FA7]={d="l"},
+ [0x1FA8]={d="l"},
+ [0x1FA9]={d="l"},
+ [0x1FAA]={d="l"},
+ [0x1FAB]={d="l"},
+ [0x1FAC]={d="l"},
+ [0x1FAD]={d="l"},
+ [0x1FAE]={d="l"},
+ [0x1FAF]={d="l"},
+ [0x1FB0]={d="l"},
+ [0x1FB1]={d="l"},
+ [0x1FB2]={d="l"},
+ [0x1FB3]={d="l"},
+ [0x1FB4]={d="l"},
+ [0x1FB6]={d="l"},
+ [0x1FB7]={d="l"},
+ [0x1FB8]={d="l"},
+ [0x1FB9]={d="l"},
+ [0x1FBA]={d="l"},
+ [0x1FBB]={d="l"},
+ [0x1FBC]={d="l"},
+ [0x1FBD]={d="on"},
+ [0x1FBE]={d="l"},
+ [0x1FBF]={d="on"},
+ [0x1FC0]={d="on"},
+ [0x1FC1]={d="on"},
+ [0x1FC2]={d="l"},
+ [0x1FC3]={d="l"},
+ [0x1FC4]={d="l"},
+ [0x1FC6]={d="l"},
+ [0x1FC7]={d="l"},
+ [0x1FC8]={d="l"},
+ [0x1FC9]={d="l"},
+ [0x1FCA]={d="l"},
+ [0x1FCB]={d="l"},
+ [0x1FCC]={d="l"},
+ [0x1FCD]={d="on"},
+ [0x1FCE]={d="on"},
+ [0x1FCF]={d="on"},
+ [0x1FD0]={d="l"},
+ [0x1FD1]={d="l"},
+ [0x1FD2]={d="l"},
+ [0x1FD3]={d="l"},
+ [0x1FD6]={d="l"},
+ [0x1FD7]={d="l"},
+ [0x1FD8]={d="l"},
+ [0x1FD9]={d="l"},
+ [0x1FDA]={d="l"},
+ [0x1FDB]={d="l"},
+ [0x1FDD]={d="on"},
+ [0x1FDE]={d="on"},
+ [0x1FDF]={d="on"},
+ [0x1FE0]={d="l"},
+ [0x1FE1]={d="l"},
+ [0x1FE2]={d="l"},
+ [0x1FE3]={d="l"},
+ [0x1FE4]={d="l"},
+ [0x1FE5]={d="l"},
+ [0x1FE6]={d="l"},
+ [0x1FE7]={d="l"},
+ [0x1FE8]={d="l"},
+ [0x1FE9]={d="l"},
+ [0x1FEA]={d="l"},
+ [0x1FEB]={d="l"},
+ [0x1FEC]={d="l"},
+ [0x1FED]={d="on"},
+ [0x1FEE]={d="on"},
+ [0x1FEF]={d="on"},
+ [0x1FF2]={d="l"},
+ [0x1FF3]={d="l"},
+ [0x1FF4]={d="l"},
+ [0x1FF6]={d="l"},
+ [0x1FF7]={d="l"},
+ [0x1FF8]={d="l"},
+ [0x1FF9]={d="l"},
+ [0x1FFA]={d="l"},
+ [0x1FFB]={d="l"},
+ [0x1FFC]={d="l"},
+ [0x1FFD]={d="on"},
+ [0x1FFE]={d="on"},
+ [0x2000]={d="ws"},
+ [0x2001]={d="ws"},
+ [0x2002]={d="ws"},
+ [0x2003]={d="ws"},
+ [0x2004]={d="ws"},
+ [0x2005]={d="ws"},
+ [0x2006]={d="ws"},
+ [0x2007]={d="ws"},
+ [0x2008]={d="ws"},
+ [0x2009]={d="ws"},
+ [0x200A]={d="ws"},
+ [0x200B]={d="bn"},
+ [0x200C]={d="bn"},
+ [0x200D]={d="bn"},
+ [0x200E]={d="l"},
+ [0x200F]={d="r"},
+ [0x2010]={d="on"},
+ [0x2011]={d="on"},
+ [0x2012]={d="on"},
+ [0x2013]={d="on"},
+ [0x2014]={d="on"},
+ [0x2015]={d="on"},
+ [0x2016]={d="on"},
+ [0x2017]={d="on"},
+ [0x2018]={d="on"},
+ [0x2019]={d="on"},
+ [0x201A]={d="on"},
+ [0x201B]={d="on"},
+ [0x201C]={d="on"},
+ [0x201D]={d="on"},
+ [0x201E]={d="on"},
+ [0x201F]={d="on"},
+ [0x2020]={d="on"},
+ [0x2021]={d="on"},
+ [0x2022]={d="on"},
+ [0x2023]={d="on"},
+ [0x2024]={d="on"},
+ [0x2025]={d="on"},
+ [0x2026]={d="on"},
+ [0x2027]={d="on"},
+ [0x2028]={d="ws"},
+ [0x2029]={d="b"},
+ [0x202A]={d="lre"},
+ [0x202B]={d="rle"},
+ [0x202C]={d="pdf"},
+ [0x202D]={d="lro"},
+ [0x202E]={d="rlo"},
+ [0x202F]={d="cs"},
+ [0x2030]={d="et"},
+ [0x2031]={d="et"},
+ [0x2032]={d="et"},
+ [0x2033]={d="et"},
+ [0x2034]={d="et"},
+ [0x2035]={d="on"},
+ [0x2036]={d="on"},
+ [0x2037]={d="on"},
+ [0x2038]={d="on"},
+ [0x2039]={d="on",
+ m=0x203A,
+ tc="open"},
+ [0x203A]={d="on",
+ m=0x2039,
+ tc="close"},
+ [0x203B]={d="on"},
+ [0x203C]={d="on"},
+ [0x203D]={d="on"},
+ [0x203E]={d="on"},
+ [0x203F]={d="on"},
+ [0x2040]={d="on"},
+ [0x2041]={d="on"},
+ [0x2042]={d="on"},
+ [0x2043]={d="on"},
+ [0x2044]={d="cs"},
+ [0x2045]={d="on",
+ m=0x2046},
+ [0x2046]={d="on",
+ m=0x2045},
+ [0x2047]={d="on"},
+ [0x2048]={d="on"},
+ [0x2049]={d="on"},
+ [0x204A]={d="on"},
+ [0x204B]={d="on"},
+ [0x204C]={d="on"},
+ [0x204D]={d="on"},
+ [0x204E]={d="on"},
+ [0x204F]={d="on"},
+ [0x2050]={d="on"},
+ [0x2051]={d="on"},
+ [0x2052]={d="on"},
+ [0x2053]={d="on"},
+ [0x2054]={d="on"},
+ [0x2055]={d="on"},
+ [0x2056]={d="on"},
+ [0x2057]={d="on"},
+ [0x2058]={d="on"},
+ [0x2059]={d="on"},
+ [0x205A]={d="on"},
+ [0x205B]={d="on"},
+ [0x205C]={d="on"},
+ [0x205D]={d="on"},
+ [0x205E]={d="on"},
+ [0x205F]={d="ws"},
+ [0x2060]={d="bn"},
+ [0x2061]={d="bn"},
+ [0x2062]={d="bn"},
+ [0x2063]={d="bn"},
+ [0x2064]={d="bn"},
+ [0x2066]={d="lri"},
+ [0x2067]={d="rli"},
+ [0x2068]={d="fsi"},
+ [0x2069]={d="pdi"},
+ [0x206A]={d="bn"},
+ [0x206B]={d="bn"},
+ [0x206C]={d="bn"},
+ [0x206D]={d="bn"},
+ [0x206E]={d="bn"},
+ [0x206F]={d="bn"},
+ [0x2070]={d="en"},
+ [0x2071]={d="l"},
+ [0x2074]={d="en"},
+ [0x2075]={d="en"},
+ [0x2076]={d="en"},
+ [0x2077]={d="en"},
+ [0x2078]={d="en"},
+ [0x2079]={d="en"},
+ [0x207A]={d="es"},
+ [0x207B]={d="es"},
+ [0x207C]={d="on"},
+ [0x207D]={d="on",
+ m=0x207E,
+ tc="open"},
+ [0x207E]={d="on",
+ m=0x207D,
+ tc="close"},
+ [0x207F]={d="l"},
+ [0x2080]={d="en"},
+ [0x2081]={d="en"},
+ [0x2082]={d="en"},
+ [0x2083]={d="en"},
+ [0x2084]={d="en"},
+ [0x2085]={d="en"},
+ [0x2086]={d="en"},
+ [0x2087]={d="en"},
+ [0x2088]={d="en"},
+ [0x2089]={d="en"},
+ [0x208A]={d="es"},
+ [0x208B]={d="es"},
+ [0x208C]={d="on"},
+ [0x208D]={d="on",
+ m=0x208E,
+ tc="open"},
+ [0x208E]={d="on",
+ m=0x208D,
+ tc="close"},
+ [0x2090]={d="l"},
+ [0x2091]={d="l"},
+ [0x2092]={d="l"},
+ [0x2093]={d="l"},
+ [0x2094]={d="l"},
+ [0x2095]={d="l"},
+ [0x2096]={d="l"},
+ [0x2097]={d="l"},
+ [0x2098]={d="l"},
+ [0x2099]={d="l"},
+ [0x209A]={d="l"},
+ [0x209B]={d="l"},
+ [0x209C]={d="l"},
+ [0x20A0]={d="et"},
+ [0x20A1]={d="et"},
+ [0x20A2]={d="et"},
+ [0x20A3]={d="et"},
+ [0x20A4]={d="et"},
+ [0x20A5]={d="et"},
+ [0x20A6]={d="et"},
+ [0x20A7]={d="et"},
+ [0x20A8]={d="et"},
+ [0x20A9]={d="et"},
+ [0x20AA]={d="et"},
+ [0x20AB]={d="et"},
+ [0x20AC]={d="et"},
+ [0x20AD]={d="et"},
+ [0x20AE]={d="et"},
+ [0x20AF]={d="et"},
+ [0x20B0]={d="et"},
+ [0x20B1]={d="et"},
+ [0x20B2]={d="et"},
+ [0x20B3]={d="et"},
+ [0x20B4]={d="et"},
+ [0x20B5]={d="et"},
+ [0x20B6]={d="et"},
+ [0x20B7]={d="et"},
+ [0x20B8]={d="et"},
+ [0x20B9]={d="et"},
+ [0x20BA]={d="et"},
+ [0x20BB]={d="et"},
+ [0x20BC]={d="et"},
+ [0x20BD]={d="et"},
+ [0x20BE]={d="et"},
+ [0x20BF]={d="et"},
+ [0x20C0]={d="et"},
+ [0x20D0]={d="nsm"},
+ [0x20D1]={d="nsm"},
+ [0x20D2]={d="nsm"},
+ [0x20D3]={d="nsm"},
+ [0x20D4]={d="nsm"},
+ [0x20D5]={d="nsm"},
+ [0x20D6]={d="nsm"},
+ [0x20D7]={d="nsm"},
+ [0x20D8]={d="nsm"},
+ [0x20D9]={d="nsm"},
+ [0x20DA]={d="nsm"},
+ [0x20DB]={d="nsm"},
+ [0x20DC]={d="nsm"},
+ [0x20DD]={d="nsm"},
+ [0x20DE]={d="nsm"},
+ [0x20DF]={d="nsm"},
+ [0x20E0]={d="nsm"},
+ [0x20E1]={d="nsm"},
+ [0x20E2]={d="nsm"},
+ [0x20E3]={d="nsm"},
+ [0x20E4]={d="nsm"},
+ [0x20E5]={d="nsm"},
+ [0x20E6]={d="nsm"},
+ [0x20E7]={d="nsm"},
+ [0x20E8]={d="nsm"},
+ [0x20E9]={d="nsm"},
+ [0x20EA]={d="nsm"},
+ [0x20EB]={d="nsm"},
+ [0x20EC]={d="nsm"},
+ [0x20ED]={d="nsm"},
+ [0x20EE]={d="nsm"},
+ [0x20EF]={d="nsm"},
+ [0x20F0]={d="nsm"},
+ [0x2100]={d="on"},
+ [0x2101]={d="on"},
+ [0x2102]={d="l"},
+ [0x2103]={d="on"},
+ [0x2104]={d="on"},
+ [0x2105]={d="on"},
+ [0x2106]={d="on"},
+ [0x2107]={d="l"},
+ [0x2108]={d="on"},
+ [0x2109]={d="on"},
+ [0x210A]={d="l"},
+ [0x210B]={d="l"},
+ [0x210C]={d="l"},
+ [0x210D]={d="l"},
+ [0x210E]={d="l"},
+ [0x210F]={d="l"},
+ [0x2110]={d="l"},
+ [0x2111]={d="l"},
+ [0x2112]={d="l"},
+ [0x2113]={d="l"},
+ [0x2114]={d="on"},
+ [0x2115]={d="l"},
+ [0x2116]={d="on"},
+ [0x2117]={d="on"},
+ [0x2118]={d="on"},
+ [0x2119]={d="l"},
+ [0x211A]={d="l"},
+ [0x211B]={d="l"},
+ [0x211C]={d="l"},
+ [0x211D]={d="l"},
+ [0x211E]={d="on"},
+ [0x211F]={d="on"},
+ [0x2120]={d="on"},
+ [0x2121]={d="on"},
+ [0x2122]={d="on"},
+ [0x2123]={d="on"},
+ [0x2124]={d="l"},
+ [0x2125]={d="on"},
+ [0x2126]={d="l"},
+ [0x2127]={d="on"},
+ [0x2128]={d="l"},
+ [0x2129]={d="on"},
+ [0x212A]={d="l"},
+ [0x212B]={d="l"},
+ [0x212C]={d="l"},
+ [0x212D]={d="l"},
+ [0x212E]={d="et"},
+ [0x212F]={d="l"},
+ [0x2130]={d="l"},
+ [0x2131]={d="l"},
+ [0x2132]={d="l"},
+ [0x2133]={d="l"},
+ [0x2134]={d="l"},
+ [0x2135]={d="l"},
+ [0x2136]={d="l"},
+ [0x2137]={d="l"},
+ [0x2138]={d="l"},
+ [0x2139]={d="l"},
+ [0x213A]={d="on"},
+ [0x213B]={d="on"},
+ [0x213C]={d="l"},
+ [0x213D]={d="l"},
+ [0x213E]={d="l"},
+ [0x213F]={d="l"},
+ [0x2140]={d="on"},
+ [0x2141]={d="on"},
+ [0x2142]={d="on"},
+ [0x2143]={d="on"},
+ [0x2144]={d="on"},
+ [0x2145]={d="l"},
+ [0x2146]={d="l"},
+ [0x2147]={d="l"},
+ [0x2148]={d="l"},
+ [0x2149]={d="l"},
+ [0x214A]={d="on"},
+ [0x214B]={d="on"},
+ [0x214C]={d="on"},
+ [0x214D]={d="on"},
+ [0x214E]={d="l"},
+ [0x214F]={d="l"},
+ [0x2150]={d="on"},
+ [0x2151]={d="on"},
+ [0x2152]={d="on"},
+ [0x2153]={d="on"},
+ [0x2154]={d="on"},
+ [0x2155]={d="on"},
+ [0x2156]={d="on"},
+ [0x2157]={d="on"},
+ [0x2158]={d="on"},
+ [0x2159]={d="on"},
+ [0x215A]={d="on"},
+ [0x215B]={d="on"},
+ [0x215C]={d="on"},
+ [0x215D]={d="on"},
+ [0x215E]={d="on"},
+ [0x215F]={d="on"},
+ [0x2160]={d="l"},
+ [0x2161]={d="l"},
+ [0x2162]={d="l"},
+ [0x2163]={d="l"},
+ [0x2164]={d="l"},
+ [0x2165]={d="l"},
+ [0x2166]={d="l"},
+ [0x2167]={d="l"},
+ [0x2168]={d="l"},
+ [0x2169]={d="l"},
+ [0x216A]={d="l"},
+ [0x216B]={d="l"},
+ [0x216C]={d="l"},
+ [0x216D]={d="l"},
+ [0x216E]={d="l"},
+ [0x216F]={d="l"},
+ [0x2170]={d="l"},
+ [0x2171]={d="l"},
+ [0x2172]={d="l"},
+ [0x2173]={d="l"},
+ [0x2174]={d="l"},
+ [0x2175]={d="l"},
+ [0x2176]={d="l"},
+ [0x2177]={d="l"},
+ [0x2178]={d="l"},
+ [0x2179]={d="l"},
+ [0x217A]={d="l"},
+ [0x217B]={d="l"},
+ [0x217C]={d="l"},
+ [0x217D]={d="l"},
+ [0x217E]={d="l"},
+ [0x217F]={d="l"},
+ [0x2180]={d="l"},
+ [0x2181]={d="l"},
+ [0x2182]={d="l"},
+ [0x2183]={d="l"},
+ [0x2184]={d="l"},
+ [0x2185]={d="l"},
+ [0x2186]={d="l"},
+ [0x2187]={d="l"},
+ [0x2188]={d="l"},
+ [0x2189]={d="on"},
+ [0x218A]={d="on"},
+ [0x218B]={d="on"},
+ [0x2190]={d="on"},
+ [0x2191]={d="on"},
+ [0x2192]={d="on"},
+ [0x2193]={d="on"},
+ [0x2194]={d="on"},
+ [0x2195]={d="on"},
+ [0x2196]={d="on"},
+ [0x2197]={d="on"},
+ [0x2198]={d="on"},
+ [0x2199]={d="on"},
+ [0x219A]={d="on"},
+ [0x219B]={d="on"},
+ [0x219C]={d="on"},
+ [0x219D]={d="on"},
+ [0x219E]={d="on"},
+ [0x219F]={d="on"},
+ [0x21A0]={d="on"},
+ [0x21A1]={d="on"},
+ [0x21A2]={d="on"},
+ [0x21A3]={d="on"},
+ [0x21A4]={d="on"},
+ [0x21A5]={d="on"},
+ [0x21A6]={d="on"},
+ [0x21A7]={d="on"},
+ [0x21A8]={d="on"},
+ [0x21A9]={d="on"},
+ [0x21AA]={d="on"},
+ [0x21AB]={d="on"},
+ [0x21AC]={d="on"},
+ [0x21AD]={d="on"},
+ [0x21AE]={d="on"},
+ [0x21AF]={d="on"},
+ [0x21B0]={d="on"},
+ [0x21B1]={d="on"},
+ [0x21B2]={d="on"},
+ [0x21B3]={d="on"},
+ [0x21B4]={d="on"},
+ [0x21B5]={d="on"},
+ [0x21B6]={d="on"},
+ [0x21B7]={d="on"},
+ [0x21B8]={d="on"},
+ [0x21B9]={d="on"},
+ [0x21BA]={d="on"},
+ [0x21BB]={d="on"},
+ [0x21BC]={d="on"},
+ [0x21BD]={d="on"},
+ [0x21BE]={d="on"},
+ [0x21BF]={d="on"},
+ [0x21C0]={d="on"},
+ [0x21C1]={d="on"},
+ [0x21C2]={d="on"},
+ [0x21C3]={d="on"},
+ [0x21C4]={d="on"},
+ [0x21C5]={d="on"},
+ [0x21C6]={d="on"},
+ [0x21C7]={d="on"},
+ [0x21C8]={d="on"},
+ [0x21C9]={d="on"},
+ [0x21CA]={d="on"},
+ [0x21CB]={d="on"},
+ [0x21CC]={d="on"},
+ [0x21CD]={d="on"},
+ [0x21CE]={d="on"},
+ [0x21CF]={d="on"},
+ [0x21D0]={d="on"},
+ [0x21D1]={d="on"},
+ [0x21D2]={d="on"},
+ [0x21D3]={d="on"},
+ [0x21D4]={d="on"},
+ [0x21D5]={d="on"},
+ [0x21D6]={d="on"},
+ [0x21D7]={d="on"},
+ [0x21D8]={d="on"},
+ [0x21D9]={d="on"},
+ [0x21DA]={d="on"},
+ [0x21DB]={d="on"},
+ [0x21DC]={d="on"},
+ [0x21DD]={d="on"},
+ [0x21DE]={d="on"},
+ [0x21DF]={d="on"},
+ [0x21E0]={d="on"},
+ [0x21E1]={d="on"},
+ [0x21E2]={d="on"},
+ [0x21E3]={d="on"},
+ [0x21E4]={d="on"},
+ [0x21E5]={d="on"},
+ [0x21E6]={d="on"},
+ [0x21E7]={d="on"},
+ [0x21E8]={d="on"},
+ [0x21E9]={d="on"},
+ [0x21EA]={d="on"},
+ [0x21EB]={d="on"},
+ [0x21EC]={d="on"},
+ [0x21ED]={d="on"},
+ [0x21EE]={d="on"},
+ [0x21EF]={d="on"},
+ [0x21F0]={d="on"},
+ [0x21F1]={d="on"},
+ [0x21F2]={d="on"},
+ [0x21F3]={d="on"},
+ [0x21F4]={d="on"},
+ [0x21F5]={d="on"},
+ [0x21F6]={d="on"},
+ [0x21F7]={d="on"},
+ [0x21F8]={d="on"},
+ [0x21F9]={d="on"},
+ [0x21FA]={d="on"},
+ [0x21FB]={d="on"},
+ [0x21FC]={d="on"},
+ [0x21FD]={d="on"},
+ [0x21FE]={d="on"},
+ [0x21FF]={d="on"},
+ [0x2200]={d="on"},
+ [0x2201]={d="on"},
+ [0x2202]={d="on"},
+ [0x2203]={d="on"},
+ [0x2204]={d="on"},
+ [0x2205]={d="on"},
+ [0x2206]={d="on"},
+ [0x2207]={d="on"},
+ [0x2208]={d="on",
+ m=0x220B},
+ [0x2209]={d="on",
+ m=0x220C},
+ [0x220A]={d="on",
+ m=0x220D},
+ [0x220B]={d="on",
+ m=0x2208},
+ [0x220C]={d="on",
+ m=0x2209},
+ [0x220D]={d="on",
+ m=0x220A},
+ [0x220E]={d="on"},
+ [0x220F]={d="on"},
+ [0x2210]={d="on"},
+ [0x2211]={d="on"},
+ [0x2212]={d="es"},
+ [0x2213]={d="et"},
+ [0x2214]={d="on"},
+ [0x2215]={d="on",
+ m=0x29F5},
+ [0x2216]={d="on"},
+ [0x2217]={d="on"},
+ [0x2218]={d="on"},
+ [0x2219]={d="on"},
+ [0x221A]={d="on"},
+ [0x221B]={d="on"},
+ [0x221C]={d="on"},
+ [0x221D]={d="on"},
+ [0x221E]={d="on"},
+ [0x221F]={d="on",
+ m=0x2BFE},
+ [0x2220]={d="on",
+ m=0x29A3},
+ [0x2221]={d="on",
+ m=0x299B},
+ [0x2222]={d="on",
+ m=0x29A0},
+ [0x2223]={d="on"},
+ [0x2224]={d="on",
+ m=0x2AEE},
+ [0x2225]={d="on"},
+ [0x2226]={d="on"},
+ [0x2227]={d="on"},
+ [0x2228]={d="on"},
+ [0x2229]={d="on"},
+ [0x222A]={d="on"},
+ [0x222B]={d="on"},
+ [0x222C]={d="on"},
+ [0x222D]={d="on"},
+ [0x222E]={d="on"},
+ [0x222F]={d="on"},
+ [0x2230]={d="on"},
+ [0x2231]={d="on"},
+ [0x2232]={d="on"},
+ [0x2233]={d="on"},
+ [0x2234]={d="on"},
+ [0x2235]={d="on"},
+ [0x2236]={d="on"},
+ [0x2237]={d="on"},
+ [0x2238]={d="on"},
+ [0x2239]={d="on"},
+ [0x223A]={d="on"},
+ [0x223B]={d="on"},
+ [0x223C]={d="on",
+ m=0x223D},
+ [0x223D]={d="on",
+ m=0x223C},
+ [0x223E]={d="on"},
+ [0x223F]={d="on"},
+ [0x2240]={d="on"},
+ [0x2241]={d="on"},
+ [0x2242]={d="on"},
+ [0x2243]={d="on",
+ m=0x22CD},
+ [0x2244]={d="on"},
+ [0x2245]={d="on",
+ m=0x224C},
+ [0x2246]={d="on"},
+ [0x2247]={d="on"},
+ [0x2248]={d="on"},
+ [0x2249]={d="on"},
+ [0x224A]={d="on"},
+ [0x224B]={d="on"},
+ [0x224C]={d="on",
+ m=0x2245},
+ [0x224D]={d="on"},
+ [0x224E]={d="on"},
+ [0x224F]={d="on"},
+ [0x2250]={d="on"},
+ [0x2251]={d="on"},
+ [0x2252]={d="on",
+ m=0x2253},
+ [0x2253]={d="on",
+ m=0x2252},
+ [0x2254]={d="on",
+ m=0x2255},
+ [0x2255]={d="on",
+ m=0x2254},
+ [0x2256]={d="on"},
+ [0x2257]={d="on"},
+ [0x2258]={d="on"},
+ [0x2259]={d="on"},
+ [0x225A]={d="on"},
+ [0x225B]={d="on"},
+ [0x225C]={d="on"},
+ [0x225D]={d="on"},
+ [0x225E]={d="on"},
+ [0x225F]={d="on"},
+ [0x2260]={d="on"},
+ [0x2261]={d="on"},
+ [0x2262]={d="on"},
+ [0x2263]={d="on"},
+ [0x2264]={d="on",
+ m=0x2265},
+ [0x2265]={d="on",
+ m=0x2264},
+ [0x2266]={d="on",
+ m=0x2267},
+ [0x2267]={d="on",
+ m=0x2266},
+ [0x2268]={d="on",
+ m=0x2269},
+ [0x2269]={d="on",
+ m=0x2268},
+ [0x226A]={d="on",
+ m=0x226B},
+ [0x226B]={d="on",
+ m=0x226A},
+ [0x226C]={d="on"},
+ [0x226D]={d="on"},
+ [0x226E]={d="on",
+ m=0x226F},
+ [0x226F]={d="on",
+ m=0x226E},
+ [0x2270]={d="on",
+ m=0x2271},
+ [0x2271]={d="on",
+ m=0x2270},
+ [0x2272]={d="on",
+ m=0x2273},
+ [0x2273]={d="on",
+ m=0x2272},
+ [0x2274]={d="on",
+ m=0x2275},
+ [0x2275]={d="on",
+ m=0x2274},
+ [0x2276]={d="on",
+ m=0x2277},
+ [0x2277]={d="on",
+ m=0x2276},
+ [0x2278]={d="on",
+ m=0x2279},
+ [0x2279]={d="on",
+ m=0x2278},
+ [0x227A]={d="on",
+ m=0x227B},
+ [0x227B]={d="on",
+ m=0x227A},
+ [0x227C]={d="on",
+ m=0x227D},
+ [0x227D]={d="on",
+ m=0x227C},
+ [0x227E]={d="on",
+ m=0x227F},
+ [0x227F]={d="on",
+ m=0x227E},
+ [0x2280]={d="on",
+ m=0x2281},
+ [0x2281]={d="on",
+ m=0x2280},
+ [0x2282]={d="on",
+ m=0x2283},
+ [0x2283]={d="on",
+ m=0x2282},
+ [0x2284]={d="on",
+ m=0x2285},
+ [0x2285]={d="on",
+ m=0x2284},
+ [0x2286]={d="on",
+ m=0x2287},
+ [0x2287]={d="on",
+ m=0x2286},
+ [0x2288]={d="on",
+ m=0x2289},
+ [0x2289]={d="on",
+ m=0x2288},
+ [0x228A]={d="on",
+ m=0x228B},
+ [0x228B]={d="on",
+ m=0x228A},
+ [0x228C]={d="on"},
+ [0x228D]={d="on"},
+ [0x228E]={d="on"},
+ [0x228F]={d="on",
+ m=0x2290},
+ [0x2290]={d="on",
+ m=0x228F},
+ [0x2291]={d="on",
+ m=0x2292},
+ [0x2292]={d="on",
+ m=0x2291},
+ [0x2293]={d="on"},
+ [0x2294]={d="on"},
+ [0x2295]={d="on"},
+ [0x2296]={d="on"},
+ [0x2297]={d="on"},
+ [0x2298]={d="on",
+ m=0x29B8},
+ [0x2299]={d="on"},
+ [0x229A]={d="on"},
+ [0x229B]={d="on"},
+ [0x229C]={d="on"},
+ [0x229D]={d="on"},
+ [0x229E]={d="on"},
+ [0x229F]={d="on"},
+ [0x22A0]={d="on"},
+ [0x22A1]={d="on"},
+ [0x22A2]={d="on",
+ m=0x22A3},
+ [0x22A3]={d="on",
+ m=0x22A2},
+ [0x22A4]={d="on"},
+ [0x22A5]={d="on"},
+ [0x22A6]={d="on",
+ m=0x2ADE},
+ [0x22A7]={d="on"},
+ [0x22A8]={d="on",
+ m=0x2AE4},
+ [0x22A9]={d="on",
+ m=0x2AE3},
+ [0x22AA]={d="on"},
+ [0x22AB]={d="on",
+ m=0x2AE5},
+ [0x22AC]={d="on"},
+ [0x22AD]={d="on"},
+ [0x22AE]={d="on"},
+ [0x22AF]={d="on"},
+ [0x22B0]={d="on",
+ m=0x22B1},
+ [0x22B1]={d="on",
+ m=0x22B0},
+ [0x22B2]={d="on",
+ m=0x22B3},
+ [0x22B3]={d="on",
+ m=0x22B2},
+ [0x22B4]={d="on",
+ m=0x22B5},
+ [0x22B5]={d="on",
+ m=0x22B4},
+ [0x22B6]={d="on",
+ m=0x22B7},
+ [0x22B7]={d="on",
+ m=0x22B6},
+ [0x22B8]={d="on",
+ m=0x27DC},
+ [0x22B9]={d="on"},
+ [0x22BA]={d="on"},
+ [0x22BB]={d="on"},
+ [0x22BC]={d="on"},
+ [0x22BD]={d="on"},
+ [0x22BE]={d="on"},
+ [0x22BF]={d="on"},
+ [0x22C0]={d="on"},
+ [0x22C1]={d="on"},
+ [0x22C2]={d="on"},
+ [0x22C3]={d="on"},
+ [0x22C4]={d="on"},
+ [0x22C5]={d="on"},
+ [0x22C6]={d="on"},
+ [0x22C7]={d="on"},
+ [0x22C8]={d="on"},
+ [0x22C9]={d="on",
+ m=0x22CA},
+ [0x22CA]={d="on",
+ m=0x22C9},
+ [0x22CB]={d="on",
+ m=0x22CC},
+ [0x22CC]={d="on",
+ m=0x22CB},
+ [0x22CD]={d="on",
+ m=0x2243},
+ [0x22CE]={d="on"},
+ [0x22CF]={d="on"},
+ [0x22D0]={d="on",
+ m=0x22D1},
+ [0x22D1]={d="on",
+ m=0x22D0},
+ [0x22D2]={d="on"},
+ [0x22D3]={d="on"},
+ [0x22D4]={d="on"},
+ [0x22D5]={d="on"},
+ [0x22D6]={d="on",
+ m=0x22D7},
+ [0x22D7]={d="on",
+ m=0x22D6},
+ [0x22D8]={d="on",
+ m=0x22D9},
+ [0x22D9]={d="on",
+ m=0x22D8},
+ [0x22DA]={d="on",
+ m=0x22DB},
+ [0x22DB]={d="on",
+ m=0x22DA},
+ [0x22DC]={d="on",
+ m=0x22DD},
+ [0x22DD]={d="on",
+ m=0x22DC},
+ [0x22DE]={d="on",
+ m=0x22DF},
+ [0x22DF]={d="on",
+ m=0x22DE},
+ [0x22E0]={d="on",
+ m=0x22E1},
+ [0x22E1]={d="on",
+ m=0x22E0},
+ [0x22E2]={d="on",
+ m=0x22E3},
+ [0x22E3]={d="on",
+ m=0x22E2},
+ [0x22E4]={d="on",
+ m=0x22E5},
+ [0x22E5]={d="on",
+ m=0x22E4},
+ [0x22E6]={d="on",
+ m=0x22E7},
+ [0x22E7]={d="on",
+ m=0x22E6},
+ [0x22E8]={d="on",
+ m=0x22E9},
+ [0x22E9]={d="on",
+ m=0x22E8},
+ [0x22EA]={d="on",
+ m=0x22EB},
+ [0x22EB]={d="on",
+ m=0x22EA},
+ [0x22EC]={d="on",
+ m=0x22ED},
+ [0x22ED]={d="on",
+ m=0x22EC},
+ [0x22EE]={d="on"},
+ [0x22EF]={d="on"},
+ [0x22F0]={d="on",
+ m=0x22F1},
+ [0x22F1]={d="on",
+ m=0x22F0},
+ [0x22F2]={d="on",
+ m=0x22FA},
+ [0x22F3]={d="on",
+ m=0x22FB},
+ [0x22F4]={d="on",
+ m=0x22FC},
+ [0x22F5]={d="on"},
+ [0x22F6]={d="on",
+ m=0x22FD},
+ [0x22F7]={d="on",
+ m=0x22FE},
+ [0x22F8]={d="on"},
+ [0x22F9]={d="on"},
+ [0x22FA]={d="on",
+ m=0x22F2},
+ [0x22FB]={d="on",
+ m=0x22F3},
+ [0x22FC]={d="on",
+ m=0x22F4},
+ [0x22FD]={d="on",
+ m=0x22F6},
+ [0x22FE]={d="on",
+ m=0x22F7},
+ [0x22FF]={d="on"},
+ [0x2300]={d="on"},
+ [0x2301]={d="on"},
+ [0x2302]={d="on"},
+ [0x2303]={d="on"},
+ [0x2304]={d="on"},
+ [0x2305]={d="on"},
+ [0x2306]={d="on"},
+ [0x2307]={d="on"},
+ [0x2308]={d="on",
+ m=0x2309},
+ [0x2309]={d="on",
+ m=0x2308},
+ [0x230A]={d="on",
+ m=0x230B},
+ [0x230B]={d="on",
+ m=0x230A},
+ [0x230C]={d="on"},
+ [0x230D]={d="on"},
+ [0x230E]={d="on"},
+ [0x230F]={d="on"},
+ [0x2310]={d="on"},
+ [0x2311]={d="on"},
+ [0x2312]={d="on"},
+ [0x2313]={d="on"},
+ [0x2314]={d="on"},
+ [0x2315]={d="on"},
+ [0x2316]={d="on"},
+ [0x2317]={d="on"},
+ [0x2318]={d="on"},
+ [0x2319]={d="on"},
+ [0x231A]={d="on"},
+ [0x231B]={d="on"},
+ [0x231C]={d="on"},
+ [0x231D]={d="on"},
+ [0x231E]={d="on"},
+ [0x231F]={d="on"},
+ [0x2320]={d="on"},
+ [0x2321]={d="on"},
+ [0x2322]={d="on"},
+ [0x2323]={d="on"},
+ [0x2324]={d="on"},
+ [0x2325]={d="on"},
+ [0x2326]={d="on"},
+ [0x2327]={d="on"},
+ [0x2328]={d="on"},
+ [0x2329]={d="on",
+ m=0x232A},
+ [0x232A]={d="on",
+ m=0x2329},
+ [0x232B]={d="on"},
+ [0x232C]={d="on"},
+ [0x232D]={d="on"},
+ [0x232E]={d="on"},
+ [0x232F]={d="on"},
+ [0x2330]={d="on"},
+ [0x2331]={d="on"},
+ [0x2332]={d="on"},
+ [0x2333]={d="on"},
+ [0x2334]={d="on"},
+ [0x2335]={d="on"},
+ [0x2336]={d="l"},
+ [0x2337]={d="l"},
+ [0x2338]={d="l"},
+ [0x2339]={d="l"},
+ [0x233A]={d="l"},
+ [0x233B]={d="l"},
+ [0x233C]={d="l"},
+ [0x233D]={d="l"},
+ [0x233E]={d="l"},
+ [0x233F]={d="l"},
+ [0x2340]={d="l"},
+ [0x2341]={d="l"},
+ [0x2342]={d="l"},
+ [0x2343]={d="l"},
+ [0x2344]={d="l"},
+ [0x2345]={d="l"},
+ [0x2346]={d="l"},
+ [0x2347]={d="l"},
+ [0x2348]={d="l"},
+ [0x2349]={d="l"},
+ [0x234A]={d="l"},
+ [0x234B]={d="l"},
+ [0x234C]={d="l"},
+ [0x234D]={d="l"},
+ [0x234E]={d="l"},
+ [0x234F]={d="l"},
+ [0x2350]={d="l"},
+ [0x2351]={d="l"},
+ [0x2352]={d="l"},
+ [0x2353]={d="l"},
+ [0x2354]={d="l"},
+ [0x2355]={d="l"},
+ [0x2356]={d="l"},
+ [0x2357]={d="l"},
+ [0x2358]={d="l"},
+ [0x2359]={d="l"},
+ [0x235A]={d="l"},
+ [0x235B]={d="l"},
+ [0x235C]={d="l"},
+ [0x235D]={d="l"},
+ [0x235E]={d="l"},
+ [0x235F]={d="l"},
+ [0x2360]={d="l"},
+ [0x2361]={d="l"},
+ [0x2362]={d="l"},
+ [0x2363]={d="l"},
+ [0x2364]={d="l"},
+ [0x2365]={d="l"},
+ [0x2366]={d="l"},
+ [0x2367]={d="l"},
+ [0x2368]={d="l"},
+ [0x2369]={d="l"},
+ [0x236A]={d="l"},
+ [0x236B]={d="l"},
+ [0x236C]={d="l"},
+ [0x236D]={d="l"},
+ [0x236E]={d="l"},
+ [0x236F]={d="l"},
+ [0x2370]={d="l"},
+ [0x2371]={d="l"},
+ [0x2372]={d="l"},
+ [0x2373]={d="l"},
+ [0x2374]={d="l"},
+ [0x2375]={d="l"},
+ [0x2376]={d="l"},
+ [0x2377]={d="l"},
+ [0x2378]={d="l"},
+ [0x2379]={d="l"},
+ [0x237A]={d="l"},
+ [0x237B]={d="on"},
+ [0x237C]={d="on"},
+ [0x237D]={d="on"},
+ [0x237E]={d="on"},
+ [0x237F]={d="on"},
+ [0x2380]={d="on"},
+ [0x2381]={d="on"},
+ [0x2382]={d="on"},
+ [0x2383]={d="on"},
+ [0x2384]={d="on"},
+ [0x2385]={d="on"},
+ [0x2386]={d="on"},
+ [0x2387]={d="on"},
+ [0x2388]={d="on"},
+ [0x2389]={d="on"},
+ [0x238A]={d="on"},
+ [0x238B]={d="on"},
+ [0x238C]={d="on"},
+ [0x238D]={d="on"},
+ [0x238E]={d="on"},
+ [0x238F]={d="on"},
+ [0x2390]={d="on"},
+ [0x2391]={d="on"},
+ [0x2392]={d="on"},
+ [0x2393]={d="on"},
+ [0x2394]={d="on"},
+ [0x2395]={d="l"},
+ [0x2396]={d="on"},
+ [0x2397]={d="on"},
+ [0x2398]={d="on"},
+ [0x2399]={d="on"},
+ [0x239A]={d="on"},
+ [0x239B]={d="on"},
+ [0x239C]={d="on"},
+ [0x239D]={d="on"},
+ [0x239E]={d="on"},
+ [0x239F]={d="on"},
+ [0x23A0]={d="on"},
+ [0x23A1]={d="on"},
+ [0x23A2]={d="on"},
+ [0x23A3]={d="on"},
+ [0x23A4]={d="on"},
+ [0x23A5]={d="on"},
+ [0x23A6]={d="on"},
+ [0x23A7]={d="on"},
+ [0x23A8]={d="on"},
+ [0x23A9]={d="on"},
+ [0x23AA]={d="on"},
+ [0x23AB]={d="on"},
+ [0x23AC]={d="on"},
+ [0x23AD]={d="on"},
+ [0x23AE]={d="on"},
+ [0x23AF]={d="on"},
+ [0x23B0]={d="on"},
+ [0x23B1]={d="on"},
+ [0x23B2]={d="on"},
+ [0x23B3]={d="on"},
+ [0x23B4]={d="on"},
+ [0x23B5]={d="on"},
+ [0x23B6]={d="on"},
+ [0x23B7]={d="on"},
+ [0x23B8]={d="on"},
+ [0x23B9]={d="on"},
+ [0x23BA]={d="on"},
+ [0x23BB]={d="on"},
+ [0x23BC]={d="on"},
+ [0x23BD]={d="on"},
+ [0x23BE]={d="on"},
+ [0x23BF]={d="on"},
+ [0x23C0]={d="on"},
+ [0x23C1]={d="on"},
+ [0x23C2]={d="on"},
+ [0x23C3]={d="on"},
+ [0x23C4]={d="on"},
+ [0x23C5]={d="on"},
+ [0x23C6]={d="on"},
+ [0x23C7]={d="on"},
+ [0x23C8]={d="on"},
+ [0x23C9]={d="on"},
+ [0x23CA]={d="on"},
+ [0x23CB]={d="on"},
+ [0x23CC]={d="on"},
+ [0x23CD]={d="on"},
+ [0x23CE]={d="on"},
+ [0x23CF]={d="on"},
+ [0x23D0]={d="on"},
+ [0x23D1]={d="on"},
+ [0x23D2]={d="on"},
+ [0x23D3]={d="on"},
+ [0x23D4]={d="on"},
+ [0x23D5]={d="on"},
+ [0x23D6]={d="on"},
+ [0x23D7]={d="on"},
+ [0x23D8]={d="on"},
+ [0x23D9]={d="on"},
+ [0x23DA]={d="on"},
+ [0x23DB]={d="on"},
+ [0x23DC]={d="on"},
+ [0x23DD]={d="on"},
+ [0x23DE]={d="on"},
+ [0x23DF]={d="on"},
+ [0x23E0]={d="on"},
+ [0x23E1]={d="on"},
+ [0x23E2]={d="on"},
+ [0x23E3]={d="on"},
+ [0x23E4]={d="on"},
+ [0x23E5]={d="on"},
+ [0x23E6]={d="on"},
+ [0x23E7]={d="on"},
+ [0x23E8]={d="on"},
+ [0x23E9]={d="on"},
+ [0x23EA]={d="on"},
+ [0x23EB]={d="on"},
+ [0x23EC]={d="on"},
+ [0x23ED]={d="on"},
+ [0x23EE]={d="on"},
+ [0x23EF]={d="on"},
+ [0x23F0]={d="on"},
+ [0x23F1]={d="on"},
+ [0x23F2]={d="on"},
+ [0x23F3]={d="on"},
+ [0x23F4]={d="on"},
+ [0x23F5]={d="on"},
+ [0x23F6]={d="on"},
+ [0x23F7]={d="on"},
+ [0x23F8]={d="on"},
+ [0x23F9]={d="on"},
+ [0x23FA]={d="on"},
+ [0x23FB]={d="on"},
+ [0x23FC]={d="on"},
+ [0x23FD]={d="on"},
+ [0x23FE]={d="on"},
+ [0x23FF]={d="on"},
+ [0x2400]={d="on"},
+ [0x2401]={d="on"},
+ [0x2402]={d="on"},
+ [0x2403]={d="on"},
+ [0x2404]={d="on"},
+ [0x2405]={d="on"},
+ [0x2406]={d="on"},
+ [0x2407]={d="on"},
+ [0x2408]={d="on"},
+ [0x2409]={d="on"},
+ [0x240A]={d="on"},
+ [0x240B]={d="on"},
+ [0x240C]={d="on"},
+ [0x240D]={d="on"},
+ [0x240E]={d="on"},
+ [0x240F]={d="on"},
+ [0x2410]={d="on"},
+ [0x2411]={d="on"},
+ [0x2412]={d="on"},
+ [0x2413]={d="on"},
+ [0x2414]={d="on"},
+ [0x2415]={d="on"},
+ [0x2416]={d="on"},
+ [0x2417]={d="on"},
+ [0x2418]={d="on"},
+ [0x2419]={d="on"},
+ [0x241A]={d="on"},
+ [0x241B]={d="on"},
+ [0x241C]={d="on"},
+ [0x241D]={d="on"},
+ [0x241E]={d="on"},
+ [0x241F]={d="on"},
+ [0x2420]={d="on"},
+ [0x2421]={d="on"},
+ [0x2422]={d="on"},
+ [0x2423]={d="on"},
+ [0x2424]={d="on"},
+ [0x2425]={d="on"},
+ [0x2426]={d="on"},
+ [0x2440]={d="on"},
+ [0x2441]={d="on"},
+ [0x2442]={d="on"},
+ [0x2443]={d="on"},
+ [0x2444]={d="on"},
+ [0x2445]={d="on"},
+ [0x2446]={d="on"},
+ [0x2447]={d="on"},
+ [0x2448]={d="on"},
+ [0x2449]={d="on"},
+ [0x244A]={d="on"},
+ [0x2460]={d="on"},
+ [0x2461]={d="on"},
+ [0x2462]={d="on"},
+ [0x2463]={d="on"},
+ [0x2464]={d="on"},
+ [0x2465]={d="on"},
+ [0x2466]={d="on"},
+ [0x2467]={d="on"},
+ [0x2468]={d="on"},
+ [0x2469]={d="on"},
+ [0x246A]={d="on"},
+ [0x246B]={d="on"},
+ [0x246C]={d="on"},
+ [0x246D]={d="on"},
+ [0x246E]={d="on"},
+ [0x246F]={d="on"},
+ [0x2470]={d="on"},
+ [0x2471]={d="on"},
+ [0x2472]={d="on"},
+ [0x2473]={d="on"},
+ [0x2474]={d="on"},
+ [0x2475]={d="on"},
+ [0x2476]={d="on"},
+ [0x2477]={d="on"},
+ [0x2478]={d="on"},
+ [0x2479]={d="on"},
+ [0x247A]={d="on"},
+ [0x247B]={d="on"},
+ [0x247C]={d="on"},
+ [0x247D]={d="on"},
+ [0x247E]={d="on"},
+ [0x247F]={d="on"},
+ [0x2480]={d="on"},
+ [0x2481]={d="on"},
+ [0x2482]={d="on"},
+ [0x2483]={d="on"},
+ [0x2484]={d="on"},
+ [0x2485]={d="on"},
+ [0x2486]={d="on"},
+ [0x2487]={d="on"},
+ [0x2488]={d="en"},
+ [0x2489]={d="en"},
+ [0x248A]={d="en"},
+ [0x248B]={d="en"},
+ [0x248C]={d="en"},
+ [0x248D]={d="en"},
+ [0x248E]={d="en"},
+ [0x248F]={d="en"},
+ [0x2490]={d="en"},
+ [0x2491]={d="en"},
+ [0x2492]={d="en"},
+ [0x2493]={d="en"},
+ [0x2494]={d="en"},
+ [0x2495]={d="en"},
+ [0x2496]={d="en"},
+ [0x2497]={d="en"},
+ [0x2498]={d="en"},
+ [0x2499]={d="en"},
+ [0x249A]={d="en"},
+ [0x249B]={d="en"},
+ [0x249C]={d="l"},
+ [0x249D]={d="l"},
+ [0x249E]={d="l"},
+ [0x249F]={d="l"},
+ [0x24A0]={d="l"},
+ [0x24A1]={d="l"},
+ [0x24A2]={d="l"},
+ [0x24A3]={d="l"},
+ [0x24A4]={d="l"},
+ [0x24A5]={d="l"},
+ [0x24A6]={d="l"},
+ [0x24A7]={d="l"},
+ [0x24A8]={d="l"},
+ [0x24A9]={d="l"},
+ [0x24AA]={d="l"},
+ [0x24AB]={d="l"},
+ [0x24AC]={d="l"},
+ [0x24AD]={d="l"},
+ [0x24AE]={d="l"},
+ [0x24AF]={d="l"},
+ [0x24B0]={d="l"},
+ [0x24B1]={d="l"},
+ [0x24B2]={d="l"},
+ [0x24B3]={d="l"},
+ [0x24B4]={d="l"},
+ [0x24B5]={d="l"},
+ [0x24B6]={d="l"},
+ [0x24B7]={d="l"},
+ [0x24B8]={d="l"},
+ [0x24B9]={d="l"},
+ [0x24BA]={d="l"},
+ [0x24BB]={d="l"},
+ [0x24BC]={d="l"},
+ [0x24BD]={d="l"},
+ [0x24BE]={d="l"},
+ [0x24BF]={d="l"},
+ [0x24C0]={d="l"},
+ [0x24C1]={d="l"},
+ [0x24C2]={d="l"},
+ [0x24C3]={d="l"},
+ [0x24C4]={d="l"},
+ [0x24C5]={d="l"},
+ [0x24C6]={d="l"},
+ [0x24C7]={d="l"},
+ [0x24C8]={d="l"},
+ [0x24C9]={d="l"},
+ [0x24CA]={d="l"},
+ [0x24CB]={d="l"},
+ [0x24CC]={d="l"},
+ [0x24CD]={d="l"},
+ [0x24CE]={d="l"},
+ [0x24CF]={d="l"},
+ [0x24D0]={d="l"},
+ [0x24D1]={d="l"},
+ [0x24D2]={d="l"},
+ [0x24D3]={d="l"},
+ [0x24D4]={d="l"},
+ [0x24D5]={d="l"},
+ [0x24D6]={d="l"},
+ [0x24D7]={d="l"},
+ [0x24D8]={d="l"},
+ [0x24D9]={d="l"},
+ [0x24DA]={d="l"},
+ [0x24DB]={d="l"},
+ [0x24DC]={d="l"},
+ [0x24DD]={d="l"},
+ [0x24DE]={d="l"},
+ [0x24DF]={d="l"},
+ [0x24E0]={d="l"},
+ [0x24E1]={d="l"},
+ [0x24E2]={d="l"},
+ [0x24E3]={d="l"},
+ [0x24E4]={d="l"},
+ [0x24E5]={d="l"},
+ [0x24E6]={d="l"},
+ [0x24E7]={d="l"},
+ [0x24E8]={d="l"},
+ [0x24E9]={d="l"},
+ [0x24EA]={d="on"},
+ [0x24EB]={d="on"},
+ [0x24EC]={d="on"},
+ [0x24ED]={d="on"},
+ [0x24EE]={d="on"},
+ [0x24EF]={d="on"},
+ [0x24F0]={d="on"},
+ [0x24F1]={d="on"},
+ [0x24F2]={d="on"},
+ [0x24F3]={d="on"},
+ [0x24F4]={d="on"},
+ [0x24F5]={d="on"},
+ [0x24F6]={d="on"},
+ [0x24F7]={d="on"},
+ [0x24F8]={d="on"},
+ [0x24F9]={d="on"},
+ [0x24FA]={d="on"},
+ [0x24FB]={d="on"},
+ [0x24FC]={d="on"},
+ [0x24FD]={d="on"},
+ [0x24FE]={d="on"},
+ [0x24FF]={d="on"},
+ [0x2500]={d="on"},
+ [0x2501]={d="on"},
+ [0x2502]={d="on"},
+ [0x2503]={d="on"},
+ [0x2504]={d="on"},
+ [0x2505]={d="on"},
+ [0x2506]={d="on"},
+ [0x2507]={d="on"},
+ [0x2508]={d="on"},
+ [0x2509]={d="on"},
+ [0x250A]={d="on"},
+ [0x250B]={d="on"},
+ [0x250C]={d="on"},
+ [0x250D]={d="on"},
+ [0x250E]={d="on"},
+ [0x250F]={d="on"},
+ [0x2510]={d="on"},
+ [0x2511]={d="on"},
+ [0x2512]={d="on"},
+ [0x2513]={d="on"},
+ [0x2514]={d="on"},
+ [0x2515]={d="on"},
+ [0x2516]={d="on"},
+ [0x2517]={d="on"},
+ [0x2518]={d="on"},
+ [0x2519]={d="on"},
+ [0x251A]={d="on"},
+ [0x251B]={d="on"},
+ [0x251C]={d="on"},
+ [0x251D]={d="on"},
+ [0x251E]={d="on"},
+ [0x251F]={d="on"},
+ [0x2520]={d="on"},
+ [0x2521]={d="on"},
+ [0x2522]={d="on"},
+ [0x2523]={d="on"},
+ [0x2524]={d="on"},
+ [0x2525]={d="on"},
+ [0x2526]={d="on"},
+ [0x2527]={d="on"},
+ [0x2528]={d="on"},
+ [0x2529]={d="on"},
+ [0x252A]={d="on"},
+ [0x252B]={d="on"},
+ [0x252C]={d="on"},
+ [0x252D]={d="on"},
+ [0x252E]={d="on"},
+ [0x252F]={d="on"},
+ [0x2530]={d="on"},
+ [0x2531]={d="on"},
+ [0x2532]={d="on"},
+ [0x2533]={d="on"},
+ [0x2534]={d="on"},
+ [0x2535]={d="on"},
+ [0x2536]={d="on"},
+ [0x2537]={d="on"},
+ [0x2538]={d="on"},
+ [0x2539]={d="on"},
+ [0x253A]={d="on"},
+ [0x253B]={d="on"},
+ [0x253C]={d="on"},
+ [0x253D]={d="on"},
+ [0x253E]={d="on"},
+ [0x253F]={d="on"},
+ [0x2540]={d="on"},
+ [0x2541]={d="on"},
+ [0x2542]={d="on"},
+ [0x2543]={d="on"},
+ [0x2544]={d="on"},
+ [0x2545]={d="on"},
+ [0x2546]={d="on"},
+ [0x2547]={d="on"},
+ [0x2548]={d="on"},
+ [0x2549]={d="on"},
+ [0x254A]={d="on"},
+ [0x254B]={d="on"},
+ [0x254C]={d="on"},
+ [0x254D]={d="on"},
+ [0x254E]={d="on"},
+ [0x254F]={d="on"},
+ [0x2550]={d="on"},
+ [0x2551]={d="on"},
+ [0x2552]={d="on"},
+ [0x2553]={d="on"},
+ [0x2554]={d="on"},
+ [0x2555]={d="on"},
+ [0x2556]={d="on"},
+ [0x2557]={d="on"},
+ [0x2558]={d="on"},
+ [0x2559]={d="on"},
+ [0x255A]={d="on"},
+ [0x255B]={d="on"},
+ [0x255C]={d="on"},
+ [0x255D]={d="on"},
+ [0x255E]={d="on"},
+ [0x255F]={d="on"},
+ [0x2560]={d="on"},
+ [0x2561]={d="on"},
+ [0x2562]={d="on"},
+ [0x2563]={d="on"},
+ [0x2564]={d="on"},
+ [0x2565]={d="on"},
+ [0x2566]={d="on"},
+ [0x2567]={d="on"},
+ [0x2568]={d="on"},
+ [0x2569]={d="on"},
+ [0x256A]={d="on"},
+ [0x256B]={d="on"},
+ [0x256C]={d="on"},
+ [0x256D]={d="on"},
+ [0x256E]={d="on"},
+ [0x256F]={d="on"},
+ [0x2570]={d="on"},
+ [0x2571]={d="on"},
+ [0x2572]={d="on"},
+ [0x2573]={d="on"},
+ [0x2574]={d="on"},
+ [0x2575]={d="on"},
+ [0x2576]={d="on"},
+ [0x2577]={d="on"},
+ [0x2578]={d="on"},
+ [0x2579]={d="on"},
+ [0x257A]={d="on"},
+ [0x257B]={d="on"},
+ [0x257C]={d="on"},
+ [0x257D]={d="on"},
+ [0x257E]={d="on"},
+ [0x257F]={d="on"},
+ [0x2580]={d="on"},
+ [0x2581]={d="on"},
+ [0x2582]={d="on"},
+ [0x2583]={d="on"},
+ [0x2584]={d="on"},
+ [0x2585]={d="on"},
+ [0x2586]={d="on"},
+ [0x2587]={d="on"},
+ [0x2588]={d="on"},
+ [0x2589]={d="on"},
+ [0x258A]={d="on"},
+ [0x258B]={d="on"},
+ [0x258C]={d="on"},
+ [0x258D]={d="on"},
+ [0x258E]={d="on"},
+ [0x258F]={d="on"},
+ [0x2590]={d="on"},
+ [0x2591]={d="on"},
+ [0x2592]={d="on"},
+ [0x2593]={d="on"},
+ [0x2594]={d="on"},
+ [0x2595]={d="on"},
+ [0x2596]={d="on"},
+ [0x2597]={d="on"},
+ [0x2598]={d="on"},
+ [0x2599]={d="on"},
+ [0x259A]={d="on"},
+ [0x259B]={d="on"},
+ [0x259C]={d="on"},
+ [0x259D]={d="on"},
+ [0x259E]={d="on"},
+ [0x259F]={d="on"},
+ [0x25A0]={d="on"},
+ [0x25A1]={d="on"},
+ [0x25A2]={d="on"},
+ [0x25A3]={d="on"},
+ [0x25A4]={d="on"},
+ [0x25A5]={d="on"},
+ [0x25A6]={d="on"},
+ [0x25A7]={d="on"},
+ [0x25A8]={d="on"},
+ [0x25A9]={d="on"},
+ [0x25AA]={d="on"},
+ [0x25AB]={d="on"},
+ [0x25AC]={d="on"},
+ [0x25AD]={d="on"},
+ [0x25AE]={d="on"},
+ [0x25AF]={d="on"},
+ [0x25B0]={d="on"},
+ [0x25B1]={d="on"},
+ [0x25B2]={d="on"},
+ [0x25B3]={d="on"},
+ [0x25B4]={d="on"},
+ [0x25B5]={d="on"},
+ [0x25B6]={d="on"},
+ [0x25B7]={d="on"},
+ [0x25B8]={d="on"},
+ [0x25B9]={d="on"},
+ [0x25BA]={d="on"},
+ [0x25BB]={d="on"},
+ [0x25BC]={d="on"},
+ [0x25BD]={d="on"},
+ [0x25BE]={d="on"},
+ [0x25BF]={d="on"},
+ [0x25C0]={d="on"},
+ [0x25C1]={d="on"},
+ [0x25C2]={d="on"},
+ [0x25C3]={d="on"},
+ [0x25C4]={d="on"},
+ [0x25C5]={d="on"},
+ [0x25C6]={d="on"},
+ [0x25C7]={d="on"},
+ [0x25C8]={d="on"},
+ [0x25C9]={d="on"},
+ [0x25CA]={d="on"},
+ [0x25CB]={d="on"},
+ [0x25CC]={d="on"},
+ [0x25CD]={d="on"},
+ [0x25CE]={d="on"},
+ [0x25CF]={d="on"},
+ [0x25D0]={d="on"},
+ [0x25D1]={d="on"},
+ [0x25D2]={d="on"},
+ [0x25D3]={d="on"},
+ [0x25D4]={d="on"},
+ [0x25D5]={d="on"},
+ [0x25D6]={d="on"},
+ [0x25D7]={d="on"},
+ [0x25D8]={d="on"},
+ [0x25D9]={d="on"},
+ [0x25DA]={d="on"},
+ [0x25DB]={d="on"},
+ [0x25DC]={d="on"},
+ [0x25DD]={d="on"},
+ [0x25DE]={d="on"},
+ [0x25DF]={d="on"},
+ [0x25E0]={d="on"},
+ [0x25E1]={d="on"},
+ [0x25E2]={d="on"},
+ [0x25E3]={d="on"},
+ [0x25E4]={d="on"},
+ [0x25E5]={d="on"},
+ [0x25E6]={d="on"},
+ [0x25E7]={d="on"},
+ [0x25E8]={d="on"},
+ [0x25E9]={d="on"},
+ [0x25EA]={d="on"},
+ [0x25EB]={d="on"},
+ [0x25EC]={d="on"},
+ [0x25ED]={d="on"},
+ [0x25EE]={d="on"},
+ [0x25EF]={d="on"},
+ [0x25F0]={d="on"},
+ [0x25F1]={d="on"},
+ [0x25F2]={d="on"},
+ [0x25F3]={d="on"},
+ [0x25F4]={d="on"},
+ [0x25F5]={d="on"},
+ [0x25F6]={d="on"},
+ [0x25F7]={d="on"},
+ [0x25F8]={d="on"},
+ [0x25F9]={d="on"},
+ [0x25FA]={d="on"},
+ [0x25FB]={d="on"},
+ [0x25FC]={d="on"},
+ [0x25FD]={d="on"},
+ [0x25FE]={d="on"},
+ [0x25FF]={d="on"},
+ [0x2600]={d="on"},
+ [0x2601]={d="on"},
+ [0x2602]={d="on"},
+ [0x2603]={d="on"},
+ [0x2604]={d="on"},
+ [0x2605]={d="on"},
+ [0x2606]={d="on"},
+ [0x2607]={d="on"},
+ [0x2608]={d="on"},
+ [0x2609]={d="on"},
+ [0x260A]={d="on"},
+ [0x260B]={d="on"},
+ [0x260C]={d="on"},
+ [0x260D]={d="on"},
+ [0x260E]={d="on"},
+ [0x260F]={d="on"},
+ [0x2610]={d="on"},
+ [0x2611]={d="on"},
+ [0x2612]={d="on"},
+ [0x2613]={d="on"},
+ [0x2614]={d="on"},
+ [0x2615]={d="on"},
+ [0x2616]={d="on"},
+ [0x2617]={d="on"},
+ [0x2618]={d="on"},
+ [0x2619]={d="on"},
+ [0x261A]={d="on"},
+ [0x261B]={d="on"},
+ [0x261C]={d="on"},
+ [0x261D]={d="on"},
+ [0x261E]={d="on"},
+ [0x261F]={d="on"},
+ [0x2620]={d="on"},
+ [0x2621]={d="on"},
+ [0x2622]={d="on"},
+ [0x2623]={d="on"},
+ [0x2624]={d="on"},
+ [0x2625]={d="on"},
+ [0x2626]={d="on"},
+ [0x2627]={d="on"},
+ [0x2628]={d="on"},
+ [0x2629]={d="on"},
+ [0x262A]={d="on"},
+ [0x262B]={d="on"},
+ [0x262C]={d="on"},
+ [0x262D]={d="on"},
+ [0x262E]={d="on"},
+ [0x262F]={d="on"},
+ [0x2630]={d="on"},
+ [0x2631]={d="on"},
+ [0x2632]={d="on"},
+ [0x2633]={d="on"},
+ [0x2634]={d="on"},
+ [0x2635]={d="on"},
+ [0x2636]={d="on"},
+ [0x2637]={d="on"},
+ [0x2638]={d="on"},
+ [0x2639]={d="on"},
+ [0x263A]={d="on"},
+ [0x263B]={d="on"},
+ [0x263C]={d="on"},
+ [0x263D]={d="on"},
+ [0x263E]={d="on"},
+ [0x263F]={d="on"},
+ [0x2640]={d="on"},
+ [0x2641]={d="on"},
+ [0x2642]={d="on"},
+ [0x2643]={d="on"},
+ [0x2644]={d="on"},
+ [0x2645]={d="on"},
+ [0x2646]={d="on"},
+ [0x2647]={d="on"},
+ [0x2648]={d="on"},
+ [0x2649]={d="on"},
+ [0x264A]={d="on"},
+ [0x264B]={d="on"},
+ [0x264C]={d="on"},
+ [0x264D]={d="on"},
+ [0x264E]={d="on"},
+ [0x264F]={d="on"},
+ [0x2650]={d="on"},
+ [0x2651]={d="on"},
+ [0x2652]={d="on"},
+ [0x2653]={d="on"},
+ [0x2654]={d="on"},
+ [0x2655]={d="on"},
+ [0x2656]={d="on"},
+ [0x2657]={d="on"},
+ [0x2658]={d="on"},
+ [0x2659]={d="on"},
+ [0x265A]={d="on"},
+ [0x265B]={d="on"},
+ [0x265C]={d="on"},
+ [0x265D]={d="on"},
+ [0x265E]={d="on"},
+ [0x265F]={d="on"},
+ [0x2660]={d="on"},
+ [0x2661]={d="on"},
+ [0x2662]={d="on"},
+ [0x2663]={d="on"},
+ [0x2664]={d="on"},
+ [0x2665]={d="on"},
+ [0x2666]={d="on"},
+ [0x2667]={d="on"},
+ [0x2668]={d="on"},
+ [0x2669]={d="on"},
+ [0x266A]={d="on"},
+ [0x266B]={d="on"},
+ [0x266C]={d="on"},
+ [0x266D]={d="on"},
+ [0x266E]={d="on"},
+ [0x266F]={d="on"},
+ [0x2670]={d="on"},
+ [0x2671]={d="on"},
+ [0x2672]={d="on"},
+ [0x2673]={d="on"},
+ [0x2674]={d="on"},
+ [0x2675]={d="on"},
+ [0x2676]={d="on"},
+ [0x2677]={d="on"},
+ [0x2678]={d="on"},
+ [0x2679]={d="on"},
+ [0x267A]={d="on"},
+ [0x267B]={d="on"},
+ [0x267C]={d="on"},
+ [0x267D]={d="on"},
+ [0x267E]={d="on"},
+ [0x267F]={d="on"},
+ [0x2680]={d="on"},
+ [0x2681]={d="on"},
+ [0x2682]={d="on"},
+ [0x2683]={d="on"},
+ [0x2684]={d="on"},
+ [0x2685]={d="on"},
+ [0x2686]={d="on"},
+ [0x2687]={d="on"},
+ [0x2688]={d="on"},
+ [0x2689]={d="on"},
+ [0x268A]={d="on"},
+ [0x268B]={d="on"},
+ [0x268C]={d="on"},
+ [0x268D]={d="on"},
+ [0x268E]={d="on"},
+ [0x268F]={d="on"},
+ [0x2690]={d="on"},
+ [0x2691]={d="on"},
+ [0x2692]={d="on"},
+ [0x2693]={d="on"},
+ [0x2694]={d="on"},
+ [0x2695]={d="on"},
+ [0x2696]={d="on"},
+ [0x2697]={d="on"},
+ [0x2698]={d="on"},
+ [0x2699]={d="on"},
+ [0x269A]={d="on"},
+ [0x269B]={d="on"},
+ [0x269C]={d="on"},
+ [0x269D]={d="on"},
+ [0x269E]={d="on"},
+ [0x269F]={d="on"},
+ [0x26A0]={d="on"},
+ [0x26A1]={d="on"},
+ [0x26A2]={d="on"},
+ [0x26A3]={d="on"},
+ [0x26A4]={d="on"},
+ [0x26A5]={d="on"},
+ [0x26A6]={d="on"},
+ [0x26A7]={d="on"},
+ [0x26A8]={d="on"},
+ [0x26A9]={d="on"},
+ [0x26AA]={d="on"},
+ [0x26AB]={d="on"},
+ [0x26AC]={d="l"},
+ [0x26AD]={d="on"},
+ [0x26AE]={d="on"},
+ [0x26AF]={d="on"},
+ [0x26B0]={d="on"},
+ [0x26B1]={d="on"},
+ [0x26B2]={d="on"},
+ [0x26B3]={d="on"},
+ [0x26B4]={d="on"},
+ [0x26B5]={d="on"},
+ [0x26B6]={d="on"},
+ [0x26B7]={d="on"},
+ [0x26B8]={d="on"},
+ [0x26B9]={d="on"},
+ [0x26BA]={d="on"},
+ [0x26BB]={d="on"},
+ [0x26BC]={d="on"},
+ [0x26BD]={d="on"},
+ [0x26BE]={d="on"},
+ [0x26BF]={d="on"},
+ [0x26C0]={d="on"},
+ [0x26C1]={d="on"},
+ [0x26C2]={d="on"},
+ [0x26C3]={d="on"},
+ [0x26C4]={d="on"},
+ [0x26C5]={d="on"},
+ [0x26C6]={d="on"},
+ [0x26C7]={d="on"},
+ [0x26C8]={d="on"},
+ [0x26C9]={d="on"},
+ [0x26CA]={d="on"},
+ [0x26CB]={d="on"},
+ [0x26CC]={d="on"},
+ [0x26CD]={d="on"},
+ [0x26CE]={d="on"},
+ [0x26CF]={d="on"},
+ [0x26D0]={d="on"},
+ [0x26D1]={d="on"},
+ [0x26D2]={d="on"},
+ [0x26D3]={d="on"},
+ [0x26D4]={d="on"},
+ [0x26D5]={d="on"},
+ [0x26D6]={d="on"},
+ [0x26D7]={d="on"},
+ [0x26D8]={d="on"},
+ [0x26D9]={d="on"},
+ [0x26DA]={d="on"},
+ [0x26DB]={d="on"},
+ [0x26DC]={d="on"},
+ [0x26DD]={d="on"},
+ [0x26DE]={d="on"},
+ [0x26DF]={d="on"},
+ [0x26E0]={d="on"},
+ [0x26E1]={d="on"},
+ [0x26E2]={d="on"},
+ [0x26E3]={d="on"},
+ [0x26E4]={d="on"},
+ [0x26E5]={d="on"},
+ [0x26E6]={d="on"},
+ [0x26E7]={d="on"},
+ [0x26E8]={d="on"},
+ [0x26E9]={d="on"},
+ [0x26EA]={d="on"},
+ [0x26EB]={d="on"},
+ [0x26EC]={d="on"},
+ [0x26ED]={d="on"},
+ [0x26EE]={d="on"},
+ [0x26EF]={d="on"},
+ [0x26F0]={d="on"},
+ [0x26F1]={d="on"},
+ [0x26F2]={d="on"},
+ [0x26F3]={d="on"},
+ [0x26F4]={d="on"},
+ [0x26F5]={d="on"},
+ [0x26F6]={d="on"},
+ [0x26F7]={d="on"},
+ [0x26F8]={d="on"},
+ [0x26F9]={d="on"},
+ [0x26FA]={d="on"},
+ [0x26FB]={d="on"},
+ [0x26FC]={d="on"},
+ [0x26FD]={d="on"},
+ [0x26FE]={d="on"},
+ [0x26FF]={d="on"},
+ [0x2700]={d="on"},
+ [0x2701]={d="on"},
+ [0x2702]={d="on"},
+ [0x2703]={d="on"},
+ [0x2704]={d="on"},
+ [0x2705]={d="on"},
+ [0x2706]={d="on"},
+ [0x2707]={d="on"},
+ [0x2708]={d="on"},
+ [0x2709]={d="on"},
+ [0x270A]={d="on"},
+ [0x270B]={d="on"},
+ [0x270C]={d="on"},
+ [0x270D]={d="on"},
+ [0x270E]={d="on"},
+ [0x270F]={d="on"},
+ [0x2710]={d="on"},
+ [0x2711]={d="on"},
+ [0x2712]={d="on"},
+ [0x2713]={d="on"},
+ [0x2714]={d="on"},
+ [0x2715]={d="on"},
+ [0x2716]={d="on"},
+ [0x2717]={d="on"},
+ [0x2718]={d="on"},
+ [0x2719]={d="on"},
+ [0x271A]={d="on"},
+ [0x271B]={d="on"},
+ [0x271C]={d="on"},
+ [0x271D]={d="on"},
+ [0x271E]={d="on"},
+ [0x271F]={d="on"},
+ [0x2720]={d="on"},
+ [0x2721]={d="on"},
+ [0x2722]={d="on"},
+ [0x2723]={d="on"},
+ [0x2724]={d="on"},
+ [0x2725]={d="on"},
+ [0x2726]={d="on"},
+ [0x2727]={d="on"},
+ [0x2728]={d="on"},
+ [0x2729]={d="on"},
+ [0x272A]={d="on"},
+ [0x272B]={d="on"},
+ [0x272C]={d="on"},
+ [0x272D]={d="on"},
+ [0x272E]={d="on"},
+ [0x272F]={d="on"},
+ [0x2730]={d="on"},
+ [0x2731]={d="on"},
+ [0x2732]={d="on"},
+ [0x2733]={d="on"},
+ [0x2734]={d="on"},
+ [0x2735]={d="on"},
+ [0x2736]={d="on"},
+ [0x2737]={d="on"},
+ [0x2738]={d="on"},
+ [0x2739]={d="on"},
+ [0x273A]={d="on"},
+ [0x273B]={d="on"},
+ [0x273C]={d="on"},
+ [0x273D]={d="on"},
+ [0x273E]={d="on"},
+ [0x273F]={d="on"},
+ [0x2740]={d="on"},
+ [0x2741]={d="on"},
+ [0x2742]={d="on"},
+ [0x2743]={d="on"},
+ [0x2744]={d="on"},
+ [0x2745]={d="on"},
+ [0x2746]={d="on"},
+ [0x2747]={d="on"},
+ [0x2748]={d="on"},
+ [0x2749]={d="on"},
+ [0x274A]={d="on"},
+ [0x274B]={d="on"},
+ [0x274C]={d="on"},
+ [0x274D]={d="on"},
+ [0x274E]={d="on"},
+ [0x274F]={d="on"},
+ [0x2750]={d="on"},
+ [0x2751]={d="on"},
+ [0x2752]={d="on"},
+ [0x2753]={d="on"},
+ [0x2754]={d="on"},
+ [0x2755]={d="on"},
+ [0x2756]={d="on"},
+ [0x2757]={d="on"},
+ [0x2758]={d="on"},
+ [0x2759]={d="on"},
+ [0x275A]={d="on"},
+ [0x275B]={d="on"},
+ [0x275C]={d="on"},
+ [0x275D]={d="on"},
+ [0x275E]={d="on"},
+ [0x275F]={d="on"},
+ [0x2760]={d="on"},
+ [0x2761]={d="on"},
+ [0x2762]={d="on"},
+ [0x2763]={d="on"},
+ [0x2764]={d="on"},
+ [0x2765]={d="on"},
+ [0x2766]={d="on"},
+ [0x2767]={d="on"},
+ [0x2768]={d="on",
+ m=0x2769},
+ [0x2769]={d="on",
+ m=0x2768},
+ [0x276A]={d="on",
+ m=0x276B},
+ [0x276B]={d="on",
+ m=0x276A},
+ [0x276C]={d="on",
+ m=0x276D},
+ [0x276D]={d="on",
+ m=0x276C},
+ [0x276E]={d="on",
+ m=0x276F},
+ [0x276F]={d="on",
+ m=0x276E},
+ [0x2770]={d="on",
+ m=0x2771},
+ [0x2771]={d="on",
+ m=0x2770},
+ [0x2772]={d="on",
+ m=0x2773},
+ [0x2773]={d="on",
+ m=0x2772},
+ [0x2774]={d="on",
+ m=0x2775},
+ [0x2775]={d="on",
+ m=0x2774},
+ [0x2776]={d="on"},
+ [0x2777]={d="on"},
+ [0x2778]={d="on"},
+ [0x2779]={d="on"},
+ [0x277A]={d="on"},
+ [0x277B]={d="on"},
+ [0x277C]={d="on"},
+ [0x277D]={d="on"},
+ [0x277E]={d="on"},
+ [0x277F]={d="on"},
+ [0x2780]={d="on"},
+ [0x2781]={d="on"},
+ [0x2782]={d="on"},
+ [0x2783]={d="on"},
+ [0x2784]={d="on"},
+ [0x2785]={d="on"},
+ [0x2786]={d="on"},
+ [0x2787]={d="on"},
+ [0x2788]={d="on"},
+ [0x2789]={d="on"},
+ [0x278A]={d="on"},
+ [0x278B]={d="on"},
+ [0x278C]={d="on"},
+ [0x278D]={d="on"},
+ [0x278E]={d="on"},
+ [0x278F]={d="on"},
+ [0x2790]={d="on"},
+ [0x2791]={d="on"},
+ [0x2792]={d="on"},
+ [0x2793]={d="on"},
+ [0x2794]={d="on"},
+ [0x2795]={d="on"},
+ [0x2796]={d="on"},
+ [0x2797]={d="on"},
+ [0x2798]={d="on"},
+ [0x2799]={d="on"},
+ [0x279A]={d="on"},
+ [0x279B]={d="on"},
+ [0x279C]={d="on"},
+ [0x279D]={d="on"},
+ [0x279E]={d="on"},
+ [0x279F]={d="on"},
+ [0x27A0]={d="on"},
+ [0x27A1]={d="on"},
+ [0x27A2]={d="on"},
+ [0x27A3]={d="on"},
+ [0x27A4]={d="on"},
+ [0x27A5]={d="on"},
+ [0x27A6]={d="on"},
+ [0x27A7]={d="on"},
+ [0x27A8]={d="on"},
+ [0x27A9]={d="on"},
+ [0x27AA]={d="on"},
+ [0x27AB]={d="on"},
+ [0x27AC]={d="on"},
+ [0x27AD]={d="on"},
+ [0x27AE]={d="on"},
+ [0x27AF]={d="on"},
+ [0x27B0]={d="on"},
+ [0x27B1]={d="on"},
+ [0x27B2]={d="on"},
+ [0x27B3]={d="on"},
+ [0x27B4]={d="on"},
+ [0x27B5]={d="on"},
+ [0x27B6]={d="on"},
+ [0x27B7]={d="on"},
+ [0x27B8]={d="on"},
+ [0x27B9]={d="on"},
+ [0x27BA]={d="on"},
+ [0x27BB]={d="on"},
+ [0x27BC]={d="on"},
+ [0x27BD]={d="on"},
+ [0x27BE]={d="on"},
+ [0x27BF]={d="on"},
+ [0x27C0]={d="on"},
+ [0x27C1]={d="on"},
+ [0x27C2]={d="on"},
+ [0x27C3]={d="on",
+ m=0x27C4},
+ [0x27C4]={d="on",
+ m=0x27C3},
+ [0x27C5]={d="on",
+ m=0x27C6},
+ [0x27C6]={d="on",
+ m=0x27C5},
+ [0x27C7]={d="on"},
+ [0x27C8]={d="on",
+ m=0x27C9},
+ [0x27C9]={d="on",
+ m=0x27C8},
+ [0x27CA]={d="on"},
+ [0x27CB]={d="on",
+ m=0x27CD},
+ [0x27CC]={d="on"},
+ [0x27CD]={d="on",
+ m=0x27CB},
+ [0x27CE]={d="on"},
+ [0x27CF]={d="on"},
+ [0x27D0]={d="on"},
+ [0x27D1]={d="on"},
+ [0x27D2]={d="on"},
+ [0x27D3]={d="on"},
+ [0x27D4]={d="on"},
+ [0x27D5]={d="on",
+ m=0x27D6},
+ [0x27D6]={d="on",
+ m=0x27D5},
+ [0x27D7]={d="on"},
+ [0x27D8]={d="on"},
+ [0x27D9]={d="on"},
+ [0x27DA]={d="on"},
+ [0x27DB]={d="on"},
+ [0x27DC]={d="on",
+ m=0x22B8},
+ [0x27DD]={d="on",
+ m=0x27DE},
+ [0x27DE]={d="on",
+ m=0x27DD},
+ [0x27DF]={d="on"},
+ [0x27E0]={d="on"},
+ [0x27E1]={d="on"},
+ [0x27E2]={d="on",
+ m=0x27E3},
+ [0x27E3]={d="on",
+ m=0x27E2},
+ [0x27E4]={d="on",
+ m=0x27E5},
+ [0x27E5]={d="on",
+ m=0x27E4},
+ [0x27E6]={d="on",
+ m=0x27E7},
+ [0x27E7]={d="on",
+ m=0x27E6},
+ [0x27E8]={d="on",
+ m=0x27E9},
+ [0x27E9]={d="on",
+ m=0x27E8},
+ [0x27EA]={d="on",
+ m=0x27EB},
+ [0x27EB]={d="on",
+ m=0x27EA},
+ [0x27EC]={d="on",
+ m=0x27ED},
+ [0x27ED]={d="on",
+ m=0x27EC},
+ [0x27EE]={d="on",
+ m=0x27EF},
+ [0x27EF]={d="on",
+ m=0x27EE},
+ [0x27F0]={d="on"},
+ [0x27F1]={d="on"},
+ [0x27F2]={d="on"},
+ [0x27F3]={d="on"},
+ [0x27F4]={d="on"},
+ [0x27F5]={d="on"},
+ [0x27F6]={d="on"},
+ [0x27F7]={d="on"},
+ [0x27F8]={d="on"},
+ [0x27F9]={d="on"},
+ [0x27FA]={d="on"},
+ [0x27FB]={d="on"},
+ [0x27FC]={d="on"},
+ [0x27FD]={d="on"},
+ [0x27FE]={d="on"},
+ [0x27FF]={d="on"},
+ [0x2800]={d="l"},
+ [0x2801]={d="l"},
+ [0x2802]={d="l"},
+ [0x2803]={d="l"},
+ [0x2804]={d="l"},
+ [0x2805]={d="l"},
+ [0x2806]={d="l"},
+ [0x2807]={d="l"},
+ [0x2808]={d="l"},
+ [0x2809]={d="l"},
+ [0x280A]={d="l"},
+ [0x280B]={d="l"},
+ [0x280C]={d="l"},
+ [0x280D]={d="l"},
+ [0x280E]={d="l"},
+ [0x280F]={d="l"},
+ [0x2810]={d="l"},
+ [0x2811]={d="l"},
+ [0x2812]={d="l"},
+ [0x2813]={d="l"},
+ [0x2814]={d="l"},
+ [0x2815]={d="l"},
+ [0x2816]={d="l"},
+ [0x2817]={d="l"},
+ [0x2818]={d="l"},
+ [0x2819]={d="l"},
+ [0x281A]={d="l"},
+ [0x281B]={d="l"},
+ [0x281C]={d="l"},
+ [0x281D]={d="l"},
+ [0x281E]={d="l"},
+ [0x281F]={d="l"},
+ [0x2820]={d="l"},
+ [0x2821]={d="l"},
+ [0x2822]={d="l"},
+ [0x2823]={d="l"},
+ [0x2824]={d="l"},
+ [0x2825]={d="l"},
+ [0x2826]={d="l"},
+ [0x2827]={d="l"},
+ [0x2828]={d="l"},
+ [0x2829]={d="l"},
+ [0x282A]={d="l"},
+ [0x282B]={d="l"},
+ [0x282C]={d="l"},
+ [0x282D]={d="l"},
+ [0x282E]={d="l"},
+ [0x282F]={d="l"},
+ [0x2830]={d="l"},
+ [0x2831]={d="l"},
+ [0x2832]={d="l"},
+ [0x2833]={d="l"},
+ [0x2834]={d="l"},
+ [0x2835]={d="l"},
+ [0x2836]={d="l"},
+ [0x2837]={d="l"},
+ [0x2838]={d="l"},
+ [0x2839]={d="l"},
+ [0x283A]={d="l"},
+ [0x283B]={d="l"},
+ [0x283C]={d="l"},
+ [0x283D]={d="l"},
+ [0x283E]={d="l"},
+ [0x283F]={d="l"},
+ [0x2840]={d="l"},
+ [0x2841]={d="l"},
+ [0x2842]={d="l"},
+ [0x2843]={d="l"},
+ [0x2844]={d="l"},
+ [0x2845]={d="l"},
+ [0x2846]={d="l"},
+ [0x2847]={d="l"},
+ [0x2848]={d="l"},
+ [0x2849]={d="l"},
+ [0x284A]={d="l"},
+ [0x284B]={d="l"},
+ [0x284C]={d="l"},
+ [0x284D]={d="l"},
+ [0x284E]={d="l"},
+ [0x284F]={d="l"},
+ [0x2850]={d="l"},
+ [0x2851]={d="l"},
+ [0x2852]={d="l"},
+ [0x2853]={d="l"},
+ [0x2854]={d="l"},
+ [0x2855]={d="l"},
+ [0x2856]={d="l"},
+ [0x2857]={d="l"},
+ [0x2858]={d="l"},
+ [0x2859]={d="l"},
+ [0x285A]={d="l"},
+ [0x285B]={d="l"},
+ [0x285C]={d="l"},
+ [0x285D]={d="l"},
+ [0x285E]={d="l"},
+ [0x285F]={d="l"},
+ [0x2860]={d="l"},
+ [0x2861]={d="l"},
+ [0x2862]={d="l"},
+ [0x2863]={d="l"},
+ [0x2864]={d="l"},
+ [0x2865]={d="l"},
+ [0x2866]={d="l"},
+ [0x2867]={d="l"},
+ [0x2868]={d="l"},
+ [0x2869]={d="l"},
+ [0x286A]={d="l"},
+ [0x286B]={d="l"},
+ [0x286C]={d="l"},
+ [0x286D]={d="l"},
+ [0x286E]={d="l"},
+ [0x286F]={d="l"},
+ [0x2870]={d="l"},
+ [0x2871]={d="l"},
+ [0x2872]={d="l"},
+ [0x2873]={d="l"},
+ [0x2874]={d="l"},
+ [0x2875]={d="l"},
+ [0x2876]={d="l"},
+ [0x2877]={d="l"},
+ [0x2878]={d="l"},
+ [0x2879]={d="l"},
+ [0x287A]={d="l"},
+ [0x287B]={d="l"},
+ [0x287C]={d="l"},
+ [0x287D]={d="l"},
+ [0x287E]={d="l"},
+ [0x287F]={d="l"},
+ [0x2880]={d="l"},
+ [0x2881]={d="l"},
+ [0x2882]={d="l"},
+ [0x2883]={d="l"},
+ [0x2884]={d="l"},
+ [0x2885]={d="l"},
+ [0x2886]={d="l"},
+ [0x2887]={d="l"},
+ [0x2888]={d="l"},
+ [0x2889]={d="l"},
+ [0x288A]={d="l"},
+ [0x288B]={d="l"},
+ [0x288C]={d="l"},
+ [0x288D]={d="l"},
+ [0x288E]={d="l"},
+ [0x288F]={d="l"},
+ [0x2890]={d="l"},
+ [0x2891]={d="l"},
+ [0x2892]={d="l"},
+ [0x2893]={d="l"},
+ [0x2894]={d="l"},
+ [0x2895]={d="l"},
+ [0x2896]={d="l"},
+ [0x2897]={d="l"},
+ [0x2898]={d="l"},
+ [0x2899]={d="l"},
+ [0x289A]={d="l"},
+ [0x289B]={d="l"},
+ [0x289C]={d="l"},
+ [0x289D]={d="l"},
+ [0x289E]={d="l"},
+ [0x289F]={d="l"},
+ [0x28A0]={d="l"},
+ [0x28A1]={d="l"},
+ [0x28A2]={d="l"},
+ [0x28A3]={d="l"},
+ [0x28A4]={d="l"},
+ [0x28A5]={d="l"},
+ [0x28A6]={d="l"},
+ [0x28A7]={d="l"},
+ [0x28A8]={d="l"},
+ [0x28A9]={d="l"},
+ [0x28AA]={d="l"},
+ [0x28AB]={d="l"},
+ [0x28AC]={d="l"},
+ [0x28AD]={d="l"},
+ [0x28AE]={d="l"},
+ [0x28AF]={d="l"},
+ [0x28B0]={d="l"},
+ [0x28B1]={d="l"},
+ [0x28B2]={d="l"},
+ [0x28B3]={d="l"},
+ [0x28B4]={d="l"},
+ [0x28B5]={d="l"},
+ [0x28B6]={d="l"},
+ [0x28B7]={d="l"},
+ [0x28B8]={d="l"},
+ [0x28B9]={d="l"},
+ [0x28BA]={d="l"},
+ [0x28BB]={d="l"},
+ [0x28BC]={d="l"},
+ [0x28BD]={d="l"},
+ [0x28BE]={d="l"},
+ [0x28BF]={d="l"},
+ [0x28C0]={d="l"},
+ [0x28C1]={d="l"},
+ [0x28C2]={d="l"},
+ [0x28C3]={d="l"},
+ [0x28C4]={d="l"},
+ [0x28C5]={d="l"},
+ [0x28C6]={d="l"},
+ [0x28C7]={d="l"},
+ [0x28C8]={d="l"},
+ [0x28C9]={d="l"},
+ [0x28CA]={d="l"},
+ [0x28CB]={d="l"},
+ [0x28CC]={d="l"},
+ [0x28CD]={d="l"},
+ [0x28CE]={d="l"},
+ [0x28CF]={d="l"},
+ [0x28D0]={d="l"},
+ [0x28D1]={d="l"},
+ [0x28D2]={d="l"},
+ [0x28D3]={d="l"},
+ [0x28D4]={d="l"},
+ [0x28D5]={d="l"},
+ [0x28D6]={d="l"},
+ [0x28D7]={d="l"},
+ [0x28D8]={d="l"},
+ [0x28D9]={d="l"},
+ [0x28DA]={d="l"},
+ [0x28DB]={d="l"},
+ [0x28DC]={d="l"},
+ [0x28DD]={d="l"},
+ [0x28DE]={d="l"},
+ [0x28DF]={d="l"},
+ [0x28E0]={d="l"},
+ [0x28E1]={d="l"},
+ [0x28E2]={d="l"},
+ [0x28E3]={d="l"},
+ [0x28E4]={d="l"},
+ [0x28E5]={d="l"},
+ [0x28E6]={d="l"},
+ [0x28E7]={d="l"},
+ [0x28E8]={d="l"},
+ [0x28E9]={d="l"},
+ [0x28EA]={d="l"},
+ [0x28EB]={d="l"},
+ [0x28EC]={d="l"},
+ [0x28ED]={d="l"},
+ [0x28EE]={d="l"},
+ [0x28EF]={d="l"},
+ [0x28F0]={d="l"},
+ [0x28F1]={d="l"},
+ [0x28F2]={d="l"},
+ [0x28F3]={d="l"},
+ [0x28F4]={d="l"},
+ [0x28F5]={d="l"},
+ [0x28F6]={d="l"},
+ [0x28F7]={d="l"},
+ [0x28F8]={d="l"},
+ [0x28F9]={d="l"},
+ [0x28FA]={d="l"},
+ [0x28FB]={d="l"},
+ [0x28FC]={d="l"},
+ [0x28FD]={d="l"},
+ [0x28FE]={d="l"},
+ [0x28FF]={d="l"},
+ [0x2900]={d="on"},
+ [0x2901]={d="on"},
+ [0x2902]={d="on"},
+ [0x2903]={d="on"},
+ [0x2904]={d="on"},
+ [0x2905]={d="on"},
+ [0x2906]={d="on"},
+ [0x2907]={d="on"},
+ [0x2908]={d="on"},
+ [0x2909]={d="on"},
+ [0x290A]={d="on"},
+ [0x290B]={d="on"},
+ [0x290C]={d="on"},
+ [0x290D]={d="on"},
+ [0x290E]={d="on"},
+ [0x290F]={d="on"},
+ [0x2910]={d="on"},
+ [0x2911]={d="on"},
+ [0x2912]={d="on"},
+ [0x2913]={d="on"},
+ [0x2914]={d="on"},
+ [0x2915]={d="on"},
+ [0x2916]={d="on"},
+ [0x2917]={d="on"},
+ [0x2918]={d="on"},
+ [0x2919]={d="on"},
+ [0x291A]={d="on"},
+ [0x291B]={d="on"},
+ [0x291C]={d="on"},
+ [0x291D]={d="on"},
+ [0x291E]={d="on"},
+ [0x291F]={d="on"},
+ [0x2920]={d="on"},
+ [0x2921]={d="on"},
+ [0x2922]={d="on"},
+ [0x2923]={d="on"},
+ [0x2924]={d="on"},
+ [0x2925]={d="on"},
+ [0x2926]={d="on"},
+ [0x2927]={d="on"},
+ [0x2928]={d="on"},
+ [0x2929]={d="on"},
+ [0x292A]={d="on"},
+ [0x292B]={d="on"},
+ [0x292C]={d="on"},
+ [0x292D]={d="on"},
+ [0x292E]={d="on"},
+ [0x292F]={d="on"},
+ [0x2930]={d="on"},
+ [0x2931]={d="on"},
+ [0x2932]={d="on"},
+ [0x2933]={d="on"},
+ [0x2934]={d="on"},
+ [0x2935]={d="on"},
+ [0x2936]={d="on"},
+ [0x2937]={d="on"},
+ [0x2938]={d="on"},
+ [0x2939]={d="on"},
+ [0x293A]={d="on"},
+ [0x293B]={d="on"},
+ [0x293C]={d="on"},
+ [0x293D]={d="on"},
+ [0x293E]={d="on"},
+ [0x293F]={d="on"},
+ [0x2940]={d="on"},
+ [0x2941]={d="on"},
+ [0x2942]={d="on"},
+ [0x2943]={d="on"},
+ [0x2944]={d="on"},
+ [0x2945]={d="on"},
+ [0x2946]={d="on"},
+ [0x2947]={d="on"},
+ [0x2948]={d="on"},
+ [0x2949]={d="on"},
+ [0x294A]={d="on"},
+ [0x294B]={d="on"},
+ [0x294C]={d="on"},
+ [0x294D]={d="on"},
+ [0x294E]={d="on"},
+ [0x294F]={d="on"},
+ [0x2950]={d="on"},
+ [0x2951]={d="on"},
+ [0x2952]={d="on"},
+ [0x2953]={d="on"},
+ [0x2954]={d="on"},
+ [0x2955]={d="on"},
+ [0x2956]={d="on"},
+ [0x2957]={d="on"},
+ [0x2958]={d="on"},
+ [0x2959]={d="on"},
+ [0x295A]={d="on"},
+ [0x295B]={d="on"},
+ [0x295C]={d="on"},
+ [0x295D]={d="on"},
+ [0x295E]={d="on"},
+ [0x295F]={d="on"},
+ [0x2960]={d="on"},
+ [0x2961]={d="on"},
+ [0x2962]={d="on"},
+ [0x2963]={d="on"},
+ [0x2964]={d="on"},
+ [0x2965]={d="on"},
+ [0x2966]={d="on"},
+ [0x2967]={d="on"},
+ [0x2968]={d="on"},
+ [0x2969]={d="on"},
+ [0x296A]={d="on"},
+ [0x296B]={d="on"},
+ [0x296C]={d="on"},
+ [0x296D]={d="on"},
+ [0x296E]={d="on"},
+ [0x296F]={d="on"},
+ [0x2970]={d="on"},
+ [0x2971]={d="on"},
+ [0x2972]={d="on"},
+ [0x2973]={d="on"},
+ [0x2974]={d="on"},
+ [0x2975]={d="on"},
+ [0x2976]={d="on"},
+ [0x2977]={d="on"},
+ [0x2978]={d="on"},
+ [0x2979]={d="on"},
+ [0x297A]={d="on"},
+ [0x297B]={d="on"},
+ [0x297C]={d="on"},
+ [0x297D]={d="on"},
+ [0x297E]={d="on"},
+ [0x297F]={d="on"},
+ [0x2980]={d="on"},
+ [0x2981]={d="on"},
+ [0x2982]={d="on"},
+ [0x2983]={d="on",
+ m=0x2984},
+ [0x2984]={d="on",
+ m=0x2983},
+ [0x2985]={d="on",
+ m=0x2986},
+ [0x2986]={d="on",
+ m=0x2985},
+ [0x2987]={d="on",
+ m=0x2988},
+ [0x2988]={d="on",
+ m=0x2987},
+ [0x2989]={d="on",
+ m=0x298A},
+ [0x298A]={d="on",
+ m=0x2989},
+ [0x298B]={d="on",
+ m=0x298C},
+ [0x298C]={d="on",
+ m=0x298B},
+ [0x298D]={d="on",
+ m=0x2990},
+ [0x298E]={d="on",
+ m=0x298F},
+ [0x298F]={d="on",
+ m=0x298E},
+ [0x2990]={d="on",
+ m=0x298D},
+ [0x2991]={d="on",
+ m=0x2992},
+ [0x2992]={d="on",
+ m=0x2991},
+ [0x2993]={d="on",
+ m=0x2994},
+ [0x2994]={d="on",
+ m=0x2993},
+ [0x2995]={d="on",
+ m=0x2996},
+ [0x2996]={d="on",
+ m=0x2995},
+ [0x2997]={d="on",
+ m=0x2998,
+ tc="open"},
+ [0x2998]={d="on",
+ m=0x2997,
+ tc="close"},
+ [0x2999]={d="on"},
+ [0x299A]={d="on"},
+ [0x299B]={d="on",
+ m=0x2221},
+ [0x299C]={d="on"},
+ [0x299D]={d="on"},
+ [0x299E]={d="on"},
+ [0x299F]={d="on"},
+ [0x29A0]={d="on",
+ m=0x2222},
+ [0x29A1]={d="on"},
+ [0x29A2]={d="on"},
+ [0x29A3]={d="on",
+ m=0x2220},
+ [0x29A4]={d="on",
+ m=0x29A5},
+ [0x29A5]={d="on",
+ m=0x29A4},
+ [0x29A6]={d="on"},
+ [0x29A7]={d="on"},
+ [0x29A8]={d="on",
+ m=0x29A9},
+ [0x29A9]={d="on",
+ m=0x29A8},
+ [0x29AA]={d="on",
+ m=0x29AB},
+ [0x29AB]={d="on",
+ m=0x29AA},
+ [0x29AC]={d="on",
+ m=0x29AD},
+ [0x29AD]={d="on",
+ m=0x29AC},
+ [0x29AE]={d="on",
+ m=0x29AF},
+ [0x29AF]={d="on",
+ m=0x29AE},
+ [0x29B0]={d="on"},
+ [0x29B1]={d="on"},
+ [0x29B2]={d="on"},
+ [0x29B3]={d="on"},
+ [0x29B4]={d="on"},
+ [0x29B5]={d="on"},
+ [0x29B6]={d="on"},
+ [0x29B7]={d="on"},
+ [0x29B8]={d="on",
+ m=0x2298},
+ [0x29B9]={d="on"},
+ [0x29BA]={d="on"},
+ [0x29BB]={d="on"},
+ [0x29BC]={d="on"},
+ [0x29BD]={d="on"},
+ [0x29BE]={d="on"},
+ [0x29BF]={d="on"},
+ [0x29C0]={d="on",
+ m=0x29C1},
+ [0x29C1]={d="on",
+ m=0x29C0},
+ [0x29C2]={d="on"},
+ [0x29C3]={d="on"},
+ [0x29C4]={d="on",
+ m=0x29C5},
+ [0x29C5]={d="on",
+ m=0x29C4},
+ [0x29C6]={d="on"},
+ [0x29C7]={d="on"},
+ [0x29C8]={d="on"},
+ [0x29C9]={d="on"},
+ [0x29CA]={d="on"},
+ [0x29CB]={d="on"},
+ [0x29CC]={d="on"},
+ [0x29CD]={d="on"},
+ [0x29CE]={d="on"},
+ [0x29CF]={d="on",
+ m=0x29D0},
+ [0x29D0]={d="on",
+ m=0x29CF},
+ [0x29D1]={d="on",
+ m=0x29D2},
+ [0x29D2]={d="on",
+ m=0x29D1},
+ [0x29D3]={d="on"},
+ [0x29D4]={d="on",
+ m=0x29D5},
+ [0x29D5]={d="on",
+ m=0x29D4},
+ [0x29D6]={d="on"},
+ [0x29D7]={d="on"},
+ [0x29D8]={d="on",
+ m=0x29D9},
+ [0x29D9]={d="on",
+ m=0x29D8},
+ [0x29DA]={d="on",
+ m=0x29DB},
+ [0x29DB]={d="on",
+ m=0x29DA},
+ [0x29DC]={d="on"},
+ [0x29DD]={d="on"},
+ [0x29DE]={d="on"},
+ [0x29DF]={d="on"},
+ [0x29E0]={d="on"},
+ [0x29E1]={d="on"},
+ [0x29E2]={d="on"},
+ [0x29E3]={d="on"},
+ [0x29E4]={d="on"},
+ [0x29E5]={d="on"},
+ [0x29E6]={d="on"},
+ [0x29E7]={d="on"},
+ [0x29E8]={d="on",
+ m=0x29E9},
+ [0x29E9]={d="on",
+ m=0x29E8},
+ [0x29EA]={d="on"},
+ [0x29EB]={d="on"},
+ [0x29EC]={d="on"},
+ [0x29ED]={d="on"},
+ [0x29EE]={d="on"},
+ [0x29EF]={d="on"},
+ [0x29F0]={d="on"},
+ [0x29F1]={d="on"},
+ [0x29F2]={d="on"},
+ [0x29F3]={d="on"},
+ [0x29F4]={d="on"},
+ [0x29F5]={d="on",
+ m=0x2215},
+ [0x29F6]={d="on"},
+ [0x29F7]={d="on"},
+ [0x29F8]={d="on",
+ m=0x29F9},
+ [0x29F9]={d="on",
+ m=0x29F8},
+ [0x29FA]={d="on"},
+ [0x29FB]={d="on"},
+ [0x29FC]={d="on",
+ m=0x29FD},
+ [0x29FD]={d="on",
+ m=0x29FC},
+ [0x29FE]={d="on"},
+ [0x29FF]={d="on"},
+ [0x2A00]={d="on"},
+ [0x2A01]={d="on"},
+ [0x2A02]={d="on"},
+ [0x2A03]={d="on"},
+ [0x2A04]={d="on"},
+ [0x2A05]={d="on"},
+ [0x2A06]={d="on"},
+ [0x2A07]={d="on"},
+ [0x2A08]={d="on"},
+ [0x2A09]={d="on"},
+ [0x2A0A]={d="on"},
+ [0x2A0B]={d="on"},
+ [0x2A0C]={d="on"},
+ [0x2A0D]={d="on"},
+ [0x2A0E]={d="on"},
+ [0x2A0F]={d="on"},
+ [0x2A10]={d="on"},
+ [0x2A11]={d="on"},
+ [0x2A12]={d="on"},
+ [0x2A13]={d="on"},
+ [0x2A14]={d="on"},
+ [0x2A15]={d="on"},
+ [0x2A16]={d="on"},
+ [0x2A17]={d="on"},
+ [0x2A18]={d="on"},
+ [0x2A19]={d="on"},
+ [0x2A1A]={d="on"},
+ [0x2A1B]={d="on"},
+ [0x2A1C]={d="on"},
+ [0x2A1D]={d="on"},
+ [0x2A1E]={d="on"},
+ [0x2A1F]={d="on"},
+ [0x2A20]={d="on"},
+ [0x2A21]={d="on"},
+ [0x2A22]={d="on"},
+ [0x2A23]={d="on"},
+ [0x2A24]={d="on"},
+ [0x2A25]={d="on"},
+ [0x2A26]={d="on"},
+ [0x2A27]={d="on"},
+ [0x2A28]={d="on"},
+ [0x2A29]={d="on"},
+ [0x2A2A]={d="on"},
+ [0x2A2B]={d="on",
+ m=0x2A2C},
+ [0x2A2C]={d="on",
+ m=0x2A2B},
+ [0x2A2D]={d="on",
+ m=0x2A2E},
+ [0x2A2E]={d="on",
+ m=0x2A2D},
+ [0x2A2F]={d="on"},
+ [0x2A30]={d="on"},
+ [0x2A31]={d="on"},
+ [0x2A32]={d="on"},
+ [0x2A33]={d="on"},
+ [0x2A34]={d="on",
+ m=0x2A35},
+ [0x2A35]={d="on",
+ m=0x2A34},
+ [0x2A36]={d="on"},
+ [0x2A37]={d="on"},
+ [0x2A38]={d="on"},
+ [0x2A39]={d="on"},
+ [0x2A3A]={d="on"},
+ [0x2A3B]={d="on"},
+ [0x2A3C]={d="on",
+ m=0x2A3D},
+ [0x2A3D]={d="on",
+ m=0x2A3C},
+ [0x2A3E]={d="on"},
+ [0x2A3F]={d="on"},
+ [0x2A40]={d="on"},
+ [0x2A41]={d="on"},
+ [0x2A42]={d="on"},
+ [0x2A43]={d="on"},
+ [0x2A44]={d="on"},
+ [0x2A45]={d="on"},
+ [0x2A46]={d="on"},
+ [0x2A47]={d="on"},
+ [0x2A48]={d="on"},
+ [0x2A49]={d="on"},
+ [0x2A4A]={d="on"},
+ [0x2A4B]={d="on"},
+ [0x2A4C]={d="on"},
+ [0x2A4D]={d="on"},
+ [0x2A4E]={d="on"},
+ [0x2A4F]={d="on"},
+ [0x2A50]={d="on"},
+ [0x2A51]={d="on"},
+ [0x2A52]={d="on"},
+ [0x2A53]={d="on"},
+ [0x2A54]={d="on"},
+ [0x2A55]={d="on"},
+ [0x2A56]={d="on"},
+ [0x2A57]={d="on"},
+ [0x2A58]={d="on"},
+ [0x2A59]={d="on"},
+ [0x2A5A]={d="on"},
+ [0x2A5B]={d="on"},
+ [0x2A5C]={d="on"},
+ [0x2A5D]={d="on"},
+ [0x2A5E]={d="on"},
+ [0x2A5F]={d="on"},
+ [0x2A60]={d="on"},
+ [0x2A61]={d="on"},
+ [0x2A62]={d="on"},
+ [0x2A63]={d="on"},
+ [0x2A64]={d="on",
+ m=0x2A65},
+ [0x2A65]={d="on",
+ m=0x2A64},
+ [0x2A66]={d="on"},
+ [0x2A67]={d="on"},
+ [0x2A68]={d="on"},
+ [0x2A69]={d="on"},
+ [0x2A6A]={d="on"},
+ [0x2A6B]={d="on"},
+ [0x2A6C]={d="on"},
+ [0x2A6D]={d="on"},
+ [0x2A6E]={d="on"},
+ [0x2A6F]={d="on"},
+ [0x2A70]={d="on"},
+ [0x2A71]={d="on"},
+ [0x2A72]={d="on"},
+ [0x2A73]={d="on"},
+ [0x2A74]={d="on"},
+ [0x2A75]={d="on"},
+ [0x2A76]={d="on"},
+ [0x2A77]={d="on"},
+ [0x2A78]={d="on"},
+ [0x2A79]={d="on",
+ m=0x2A7A},
+ [0x2A7A]={d="on",
+ m=0x2A79},
+ [0x2A7B]={d="on",
+ m=0x2A7C},
+ [0x2A7C]={d="on",
+ m=0x2A7B},
+ [0x2A7D]={d="on",
+ m=0x2A7E},
+ [0x2A7E]={d="on",
+ m=0x2A7D},
+ [0x2A7F]={d="on",
+ m=0x2A80},
+ [0x2A80]={d="on",
+ m=0x2A7F},
+ [0x2A81]={d="on",
+ m=0x2A82},
+ [0x2A82]={d="on",
+ m=0x2A81},
+ [0x2A83]={d="on",
+ m=0x2A84},
+ [0x2A84]={d="on",
+ m=0x2A83},
+ [0x2A85]={d="on",
+ m=0x2A86},
+ [0x2A86]={d="on",
+ m=0x2A85},
+ [0x2A87]={d="on",
+ m=0x2A88},
+ [0x2A88]={d="on",
+ m=0x2A87},
+ [0x2A89]={d="on",
+ m=0x2A8A},
+ [0x2A8A]={d="on",
+ m=0x2A89},
+ [0x2A8B]={d="on",
+ m=0x2A8C},
+ [0x2A8C]={d="on",
+ m=0x2A8B},
+ [0x2A8D]={d="on",
+ m=0x2A8E},
+ [0x2A8E]={d="on",
+ m=0x2A8D},
+ [0x2A8F]={d="on",
+ m=0x2A90},
+ [0x2A90]={d="on",
+ m=0x2A8F},
+ [0x2A91]={d="on",
+ m=0x2A92},
+ [0x2A92]={d="on",
+ m=0x2A91},
+ [0x2A93]={d="on",
+ m=0x2A94},
+ [0x2A94]={d="on",
+ m=0x2A93},
+ [0x2A95]={d="on",
+ m=0x2A96},
+ [0x2A96]={d="on",
+ m=0x2A95},
+ [0x2A97]={d="on",
+ m=0x2A98},
+ [0x2A98]={d="on",
+ m=0x2A97},
+ [0x2A99]={d="on",
+ m=0x2A9A},
+ [0x2A9A]={d="on",
+ m=0x2A99},
+ [0x2A9B]={d="on",
+ m=0x2A9C},
+ [0x2A9C]={d="on",
+ m=0x2A9B},
+ [0x2A9D]={d="on",
+ m=0x2A9E},
+ [0x2A9E]={d="on",
+ m=0x2A9D},
+ [0x2A9F]={d="on",
+ m=0x2AA0},
+ [0x2AA0]={d="on",
+ m=0x2A9F},
+ [0x2AA1]={d="on",
+ m=0x2AA2},
+ [0x2AA2]={d="on",
+ m=0x2AA1},
+ [0x2AA3]={d="on"},
+ [0x2AA4]={d="on"},
+ [0x2AA5]={d="on"},
+ [0x2AA6]={d="on",
+ m=0x2AA7},
+ [0x2AA7]={d="on",
+ m=0x2AA6},
+ [0x2AA8]={d="on",
+ m=0x2AA9},
+ [0x2AA9]={d="on",
+ m=0x2AA8},
+ [0x2AAA]={d="on",
+ m=0x2AAB},
+ [0x2AAB]={d="on",
+ m=0x2AAA},
+ [0x2AAC]={d="on",
+ m=0x2AAD},
+ [0x2AAD]={d="on",
+ m=0x2AAC},
+ [0x2AAE]={d="on"},
+ [0x2AAF]={d="on",
+ m=0x2AB0},
+ [0x2AB0]={d="on",
+ m=0x2AAF},
+ [0x2AB1]={d="on",
+ m=0x2AB2},
+ [0x2AB2]={d="on",
+ m=0x2AB1},
+ [0x2AB3]={d="on",
+ m=0x2AB4},
+ [0x2AB4]={d="on",
+ m=0x2AB3},
+ [0x2AB5]={d="on",
+ m=0x2AB6},
+ [0x2AB6]={d="on",
+ m=0x2AB5},
+ [0x2AB7]={d="on",
+ m=0x2AB8},
+ [0x2AB8]={d="on",
+ m=0x2AB7},
+ [0x2AB9]={d="on",
+ m=0x2ABA},
+ [0x2ABA]={d="on",
+ m=0x2AB9},
+ [0x2ABB]={d="on",
+ m=0x2ABC},
+ [0x2ABC]={d="on",
+ m=0x2ABB},
+ [0x2ABD]={d="on",
+ m=0x2ABE},
+ [0x2ABE]={d="on",
+ m=0x2ABD},
+ [0x2ABF]={d="on",
+ m=0x2AC0},
+ [0x2AC0]={d="on",
+ m=0x2ABF},
+ [0x2AC1]={d="on",
+ m=0x2AC2},
+ [0x2AC2]={d="on",
+ m=0x2AC1},
+ [0x2AC3]={d="on",
+ m=0x2AC4},
+ [0x2AC4]={d="on",
+ m=0x2AC3},
+ [0x2AC5]={d="on",
+ m=0x2AC6},
+ [0x2AC6]={d="on",
+ m=0x2AC5},
+ [0x2AC7]={d="on",
+ m=0x2AC8},
+ [0x2AC8]={d="on",
+ m=0x2AC7},
+ [0x2AC9]={d="on",
+ m=0x2ACA},
+ [0x2ACA]={d="on",
+ m=0x2AC9},
+ [0x2ACB]={d="on",
+ m=0x2ACC},
+ [0x2ACC]={d="on",
+ m=0x2ACB},
+ [0x2ACD]={d="on",
+ m=0x2ACE},
+ [0x2ACE]={d="on",
+ m=0x2ACD},
+ [0x2ACF]={d="on",
+ m=0x2AD0},
+ [0x2AD0]={d="on",
+ m=0x2ACF},
+ [0x2AD1]={d="on",
+ m=0x2AD2},
+ [0x2AD2]={d="on",
+ m=0x2AD1},
+ [0x2AD3]={d="on",
+ m=0x2AD4},
+ [0x2AD4]={d="on",
+ m=0x2AD3},
+ [0x2AD5]={d="on",
+ m=0x2AD6},
+ [0x2AD6]={d="on",
+ m=0x2AD5},
+ [0x2AD7]={d="on"},
+ [0x2AD8]={d="on"},
+ [0x2AD9]={d="on"},
+ [0x2ADA]={d="on"},
+ [0x2ADB]={d="on"},
+ [0x2ADC]={d="on"},
+ [0x2ADD]={d="on"},
+ [0x2ADE]={d="on",
+ m=0x22A6},
+ [0x2ADF]={d="on"},
+ [0x2AE0]={d="on"},
+ [0x2AE1]={d="on"},
+ [0x2AE2]={d="on"},
+ [0x2AE3]={d="on",
+ m=0x22A9},
+ [0x2AE4]={d="on",
+ m=0x22A8},
+ [0x2AE5]={d="on",
+ m=0x22AB},
+ [0x2AE6]={d="on"},
+ [0x2AE7]={d="on"},
+ [0x2AE8]={d="on"},
+ [0x2AE9]={d="on"},
+ [0x2AEA]={d="on"},
+ [0x2AEB]={d="on"},
+ [0x2AEC]={d="on",
+ m=0x2AED},
+ [0x2AED]={d="on",
+ m=0x2AEC},
+ [0x2AEE]={d="on",
+ m=0x2224},
+ [0x2AEF]={d="on"},
+ [0x2AF0]={d="on"},
+ [0x2AF1]={d="on"},
+ [0x2AF2]={d="on"},
+ [0x2AF3]={d="on"},
+ [0x2AF4]={d="on"},
+ [0x2AF5]={d="on"},
+ [0x2AF6]={d="on"},
+ [0x2AF7]={d="on",
+ m=0x2AF8},
+ [0x2AF8]={d="on",
+ m=0x2AF7},
+ [0x2AF9]={d="on",
+ m=0x2AFA},
+ [0x2AFA]={d="on",
+ m=0x2AF9},
+ [0x2AFB]={d="on"},
+ [0x2AFC]={d="on"},
+ [0x2AFD]={d="on"},
+ [0x2AFE]={d="on"},
+ [0x2AFF]={d="on"},
+ [0x2B00]={d="on"},
+ [0x2B01]={d="on"},
+ [0x2B02]={d="on"},
+ [0x2B03]={d="on"},
+ [0x2B04]={d="on"},
+ [0x2B05]={d="on"},
+ [0x2B06]={d="on"},
+ [0x2B07]={d="on"},
+ [0x2B08]={d="on"},
+ [0x2B09]={d="on"},
+ [0x2B0A]={d="on"},
+ [0x2B0B]={d="on"},
+ [0x2B0C]={d="on"},
+ [0x2B0D]={d="on"},
+ [0x2B0E]={d="on"},
+ [0x2B0F]={d="on"},
+ [0x2B10]={d="on"},
+ [0x2B11]={d="on"},
+ [0x2B12]={d="on"},
+ [0x2B13]={d="on"},
+ [0x2B14]={d="on"},
+ [0x2B15]={d="on"},
+ [0x2B16]={d="on"},
+ [0x2B17]={d="on"},
+ [0x2B18]={d="on"},
+ [0x2B19]={d="on"},
+ [0x2B1A]={d="on"},
+ [0x2B1B]={d="on"},
+ [0x2B1C]={d="on"},
+ [0x2B1D]={d="on"},
+ [0x2B1E]={d="on"},
+ [0x2B1F]={d="on"},
+ [0x2B20]={d="on"},
+ [0x2B21]={d="on"},
+ [0x2B22]={d="on"},
+ [0x2B23]={d="on"},
+ [0x2B24]={d="on"},
+ [0x2B25]={d="on"},
+ [0x2B26]={d="on"},
+ [0x2B27]={d="on"},
+ [0x2B28]={d="on"},
+ [0x2B29]={d="on"},
+ [0x2B2A]={d="on"},
+ [0x2B2B]={d="on"},
+ [0x2B2C]={d="on"},
+ [0x2B2D]={d="on"},
+ [0x2B2E]={d="on"},
+ [0x2B2F]={d="on"},
+ [0x2B30]={d="on"},
+ [0x2B31]={d="on"},
+ [0x2B32]={d="on"},
+ [0x2B33]={d="on"},
+ [0x2B34]={d="on"},
+ [0x2B35]={d="on"},
+ [0x2B36]={d="on"},
+ [0x2B37]={d="on"},
+ [0x2B38]={d="on"},
+ [0x2B39]={d="on"},
+ [0x2B3A]={d="on"},
+ [0x2B3B]={d="on"},
+ [0x2B3C]={d="on"},
+ [0x2B3D]={d="on"},
+ [0x2B3E]={d="on"},
+ [0x2B3F]={d="on"},
+ [0x2B40]={d="on"},
+ [0x2B41]={d="on"},
+ [0x2B42]={d="on"},
+ [0x2B43]={d="on"},
+ [0x2B44]={d="on"},
+ [0x2B45]={d="on"},
+ [0x2B46]={d="on"},
+ [0x2B47]={d="on"},
+ [0x2B48]={d="on"},
+ [0x2B49]={d="on"},
+ [0x2B4A]={d="on"},
+ [0x2B4B]={d="on"},
+ [0x2B4C]={d="on"},
+ [0x2B4D]={d="on"},
+ [0x2B4E]={d="on"},
+ [0x2B4F]={d="on"},
+ [0x2B50]={d="on"},
+ [0x2B51]={d="on"},
+ [0x2B52]={d="on"},
+ [0x2B53]={d="on"},
+ [0x2B54]={d="on"},
+ [0x2B55]={d="on"},
+ [0x2B56]={d="on"},
+ [0x2B57]={d="on"},
+ [0x2B58]={d="on"},
+ [0x2B59]={d="on"},
+ [0x2B5A]={d="on"},
+ [0x2B5B]={d="on"},
+ [0x2B5C]={d="on"},
+ [0x2B5D]={d="on"},
+ [0x2B5E]={d="on"},
+ [0x2B5F]={d="on"},
+ [0x2B60]={d="on"},
+ [0x2B61]={d="on"},
+ [0x2B62]={d="on"},
+ [0x2B63]={d="on"},
+ [0x2B64]={d="on"},
+ [0x2B65]={d="on"},
+ [0x2B66]={d="on"},
+ [0x2B67]={d="on"},
+ [0x2B68]={d="on"},
+ [0x2B69]={d="on"},
+ [0x2B6A]={d="on"},
+ [0x2B6B]={d="on"},
+ [0x2B6C]={d="on"},
+ [0x2B6D]={d="on"},
+ [0x2B6E]={d="on"},
+ [0x2B6F]={d="on"},
+ [0x2B70]={d="on"},
+ [0x2B71]={d="on"},
+ [0x2B72]={d="on"},
+ [0x2B73]={d="on"},
+ [0x2B76]={d="on"},
+ [0x2B77]={d="on"},
+ [0x2B78]={d="on"},
+ [0x2B79]={d="on"},
+ [0x2B7A]={d="on"},
+ [0x2B7B]={d="on"},
+ [0x2B7C]={d="on"},
+ [0x2B7D]={d="on"},
+ [0x2B7E]={d="on"},
+ [0x2B7F]={d="on"},
+ [0x2B80]={d="on"},
+ [0x2B81]={d="on"},
+ [0x2B82]={d="on"},
+ [0x2B83]={d="on"},
+ [0x2B84]={d="on"},
+ [0x2B85]={d="on"},
+ [0x2B86]={d="on"},
+ [0x2B87]={d="on"},
+ [0x2B88]={d="on"},
+ [0x2B89]={d="on"},
+ [0x2B8A]={d="on"},
+ [0x2B8B]={d="on"},
+ [0x2B8C]={d="on"},
+ [0x2B8D]={d="on"},
+ [0x2B8E]={d="on"},
+ [0x2B8F]={d="on"},
+ [0x2B90]={d="on"},
+ [0x2B91]={d="on"},
+ [0x2B92]={d="on"},
+ [0x2B93]={d="on"},
+ [0x2B94]={d="on"},
+ [0x2B95]={d="on"},
+ [0x2B97]={d="on"},
+ [0x2B98]={d="on"},
+ [0x2B99]={d="on"},
+ [0x2B9A]={d="on"},
+ [0x2B9B]={d="on"},
+ [0x2B9C]={d="on"},
+ [0x2B9D]={d="on"},
+ [0x2B9E]={d="on"},
+ [0x2B9F]={d="on"},
+ [0x2BA0]={d="on"},
+ [0x2BA1]={d="on"},
+ [0x2BA2]={d="on"},
+ [0x2BA3]={d="on"},
+ [0x2BA4]={d="on"},
+ [0x2BA5]={d="on"},
+ [0x2BA6]={d="on"},
+ [0x2BA7]={d="on"},
+ [0x2BA8]={d="on"},
+ [0x2BA9]={d="on"},
+ [0x2BAA]={d="on"},
+ [0x2BAB]={d="on"},
+ [0x2BAC]={d="on"},
+ [0x2BAD]={d="on"},
+ [0x2BAE]={d="on"},
+ [0x2BAF]={d="on"},
+ [0x2BB0]={d="on"},
+ [0x2BB1]={d="on"},
+ [0x2BB2]={d="on"},
+ [0x2BB3]={d="on"},
+ [0x2BB4]={d="on"},
+ [0x2BB5]={d="on"},
+ [0x2BB6]={d="on"},
+ [0x2BB7]={d="on"},
+ [0x2BB8]={d="on"},
+ [0x2BB9]={d="on"},
+ [0x2BBA]={d="on"},
+ [0x2BBB]={d="on"},
+ [0x2BBC]={d="on"},
+ [0x2BBD]={d="on"},
+ [0x2BBE]={d="on"},
+ [0x2BBF]={d="on"},
+ [0x2BC0]={d="on"},
+ [0x2BC1]={d="on"},
+ [0x2BC2]={d="on"},
+ [0x2BC3]={d="on"},
+ [0x2BC4]={d="on"},
+ [0x2BC5]={d="on"},
+ [0x2BC6]={d="on"},
+ [0x2BC7]={d="on"},
+ [0x2BC8]={d="on"},
+ [0x2BC9]={d="on"},
+ [0x2BCA]={d="on"},
+ [0x2BCB]={d="on"},
+ [0x2BCC]={d="on"},
+ [0x2BCD]={d="on"},
+ [0x2BCE]={d="on"},
+ [0x2BCF]={d="on"},
+ [0x2BD0]={d="on"},
+ [0x2BD1]={d="on"},
+ [0x2BD2]={d="on"},
+ [0x2BD3]={d="on"},
+ [0x2BD4]={d="on"},
+ [0x2BD5]={d="on"},
+ [0x2BD6]={d="on"},
+ [0x2BD7]={d="on"},
+ [0x2BD8]={d="on"},
+ [0x2BD9]={d="on"},
+ [0x2BDA]={d="on"},
+ [0x2BDB]={d="on"},
+ [0x2BDC]={d="on"},
+ [0x2BDD]={d="on"},
+ [0x2BDE]={d="on"},
+ [0x2BDF]={d="on"},
+ [0x2BE0]={d="on"},
+ [0x2BE1]={d="on"},
+ [0x2BE2]={d="on"},
+ [0x2BE3]={d="on"},
+ [0x2BE4]={d="on"},
+ [0x2BE5]={d="on"},
+ [0x2BE6]={d="on"},
+ [0x2BE7]={d="on"},
+ [0x2BE8]={d="on"},
+ [0x2BE9]={d="on"},
+ [0x2BEA]={d="on"},
+ [0x2BEB]={d="on"},
+ [0x2BEC]={d="on"},
+ [0x2BED]={d="on"},
+ [0x2BEE]={d="on"},
+ [0x2BEF]={d="on"},
+ [0x2BF0]={d="on"},
+ [0x2BF1]={d="on"},
+ [0x2BF2]={d="on"},
+ [0x2BF3]={d="on"},
+ [0x2BF4]={d="on"},
+ [0x2BF5]={d="on"},
+ [0x2BF6]={d="on"},
+ [0x2BF7]={d="on"},
+ [0x2BF8]={d="on"},
+ [0x2BF9]={d="on"},
+ [0x2BFA]={d="on"},
+ [0x2BFB]={d="on"},
+ [0x2BFC]={d="on"},
+ [0x2BFD]={d="on"},
+ [0x2BFE]={d="on",
+ m=0x221F},
+ [0x2BFF]={d="on"},
+ [0x2C00]={d="l"},
+ [0x2C01]={d="l"},
+ [0x2C02]={d="l"},
+ [0x2C03]={d="l"},
+ [0x2C04]={d="l"},
+ [0x2C05]={d="l"},
+ [0x2C06]={d="l"},
+ [0x2C07]={d="l"},
+ [0x2C08]={d="l"},
+ [0x2C09]={d="l"},
+ [0x2C0A]={d="l"},
+ [0x2C0B]={d="l"},
+ [0x2C0C]={d="l"},
+ [0x2C0D]={d="l"},
+ [0x2C0E]={d="l"},
+ [0x2C0F]={d="l"},
+ [0x2C10]={d="l"},
+ [0x2C11]={d="l"},
+ [0x2C12]={d="l"},
+ [0x2C13]={d="l"},
+ [0x2C14]={d="l"},
+ [0x2C15]={d="l"},
+ [0x2C16]={d="l"},
+ [0x2C17]={d="l"},
+ [0x2C18]={d="l"},
+ [0x2C19]={d="l"},
+ [0x2C1A]={d="l"},
+ [0x2C1B]={d="l"},
+ [0x2C1C]={d="l"},
+ [0x2C1D]={d="l"},
+ [0x2C1E]={d="l"},
+ [0x2C1F]={d="l"},
+ [0x2C20]={d="l"},
+ [0x2C21]={d="l"},
+ [0x2C22]={d="l"},
+ [0x2C23]={d="l"},
+ [0x2C24]={d="l"},
+ [0x2C25]={d="l"},
+ [0x2C26]={d="l"},
+ [0x2C27]={d="l"},
+ [0x2C28]={d="l"},
+ [0x2C29]={d="l"},
+ [0x2C2A]={d="l"},
+ [0x2C2B]={d="l"},
+ [0x2C2C]={d="l"},
+ [0x2C2D]={d="l"},
+ [0x2C2E]={d="l"},
+ [0x2C2F]={d="l"},
+ [0x2C30]={d="l"},
+ [0x2C31]={d="l"},
+ [0x2C32]={d="l"},
+ [0x2C33]={d="l"},
+ [0x2C34]={d="l"},
+ [0x2C35]={d="l"},
+ [0x2C36]={d="l"},
+ [0x2C37]={d="l"},
+ [0x2C38]={d="l"},
+ [0x2C39]={d="l"},
+ [0x2C3A]={d="l"},
+ [0x2C3B]={d="l"},
+ [0x2C3C]={d="l"},
+ [0x2C3D]={d="l"},
+ [0x2C3E]={d="l"},
+ [0x2C3F]={d="l"},
+ [0x2C40]={d="l"},
+ [0x2C41]={d="l"},
+ [0x2C42]={d="l"},
+ [0x2C43]={d="l"},
+ [0x2C44]={d="l"},
+ [0x2C45]={d="l"},
+ [0x2C46]={d="l"},
+ [0x2C47]={d="l"},
+ [0x2C48]={d="l"},
+ [0x2C49]={d="l"},
+ [0x2C4A]={d="l"},
+ [0x2C4B]={d="l"},
+ [0x2C4C]={d="l"},
+ [0x2C4D]={d="l"},
+ [0x2C4E]={d="l"},
+ [0x2C4F]={d="l"},
+ [0x2C50]={d="l"},
+ [0x2C51]={d="l"},
+ [0x2C52]={d="l"},
+ [0x2C53]={d="l"},
+ [0x2C54]={d="l"},
+ [0x2C55]={d="l"},
+ [0x2C56]={d="l"},
+ [0x2C57]={d="l"},
+ [0x2C58]={d="l"},
+ [0x2C59]={d="l"},
+ [0x2C5A]={d="l"},
+ [0x2C5B]={d="l"},
+ [0x2C5C]={d="l"},
+ [0x2C5D]={d="l"},
+ [0x2C5E]={d="l"},
+ [0x2C5F]={d="l"},
+ [0x2C60]={d="l"},
+ [0x2C61]={d="l"},
+ [0x2C62]={d="l"},
+ [0x2C63]={d="l"},
+ [0x2C64]={d="l"},
+ [0x2C65]={d="l"},
+ [0x2C66]={d="l"},
+ [0x2C67]={d="l"},
+ [0x2C68]={d="l"},
+ [0x2C69]={d="l"},
+ [0x2C6A]={d="l"},
+ [0x2C6B]={d="l"},
+ [0x2C6C]={d="l"},
+ [0x2C6D]={d="l"},
+ [0x2C6E]={d="l"},
+ [0x2C6F]={d="l"},
+ [0x2C70]={d="l"},
+ [0x2C71]={d="l"},
+ [0x2C72]={d="l"},
+ [0x2C73]={d="l"},
+ [0x2C74]={d="l"},
+ [0x2C75]={d="l"},
+ [0x2C76]={d="l"},
+ [0x2C77]={d="l"},
+ [0x2C78]={d="l"},
+ [0x2C79]={d="l"},
+ [0x2C7A]={d="l"},
+ [0x2C7B]={d="l"},
+ [0x2C7C]={d="l"},
+ [0x2C7D]={d="l"},
+ [0x2C7E]={d="l"},
+ [0x2C7F]={d="l"},
+ [0x2C80]={d="l"},
+ [0x2C81]={d="l"},
+ [0x2C82]={d="l"},
+ [0x2C83]={d="l"},
+ [0x2C84]={d="l"},
+ [0x2C85]={d="l"},
+ [0x2C86]={d="l"},
+ [0x2C87]={d="l"},
+ [0x2C88]={d="l"},
+ [0x2C89]={d="l"},
+ [0x2C8A]={d="l"},
+ [0x2C8B]={d="l"},
+ [0x2C8C]={d="l"},
+ [0x2C8D]={d="l"},
+ [0x2C8E]={d="l"},
+ [0x2C8F]={d="l"},
+ [0x2C90]={d="l"},
+ [0x2C91]={d="l"},
+ [0x2C92]={d="l"},
+ [0x2C93]={d="l"},
+ [0x2C94]={d="l"},
+ [0x2C95]={d="l"},
+ [0x2C96]={d="l"},
+ [0x2C97]={d="l"},
+ [0x2C98]={d="l"},
+ [0x2C99]={d="l"},
+ [0x2C9A]={d="l"},
+ [0x2C9B]={d="l"},
+ [0x2C9C]={d="l"},
+ [0x2C9D]={d="l"},
+ [0x2C9E]={d="l"},
+ [0x2C9F]={d="l"},
+ [0x2CA0]={d="l"},
+ [0x2CA1]={d="l"},
+ [0x2CA2]={d="l"},
+ [0x2CA3]={d="l"},
+ [0x2CA4]={d="l"},
+ [0x2CA5]={d="l"},
+ [0x2CA6]={d="l"},
+ [0x2CA7]={d="l"},
+ [0x2CA8]={d="l"},
+ [0x2CA9]={d="l"},
+ [0x2CAA]={d="l"},
+ [0x2CAB]={d="l"},
+ [0x2CAC]={d="l"},
+ [0x2CAD]={d="l"},
+ [0x2CAE]={d="l"},
+ [0x2CAF]={d="l"},
+ [0x2CB0]={d="l"},
+ [0x2CB1]={d="l"},
+ [0x2CB2]={d="l"},
+ [0x2CB3]={d="l"},
+ [0x2CB4]={d="l"},
+ [0x2CB5]={d="l"},
+ [0x2CB6]={d="l"},
+ [0x2CB7]={d="l"},
+ [0x2CB8]={d="l"},
+ [0x2CB9]={d="l"},
+ [0x2CBA]={d="l"},
+ [0x2CBB]={d="l"},
+ [0x2CBC]={d="l"},
+ [0x2CBD]={d="l"},
+ [0x2CBE]={d="l"},
+ [0x2CBF]={d="l"},
+ [0x2CC0]={d="l"},
+ [0x2CC1]={d="l"},
+ [0x2CC2]={d="l"},
+ [0x2CC3]={d="l"},
+ [0x2CC4]={d="l"},
+ [0x2CC5]={d="l"},
+ [0x2CC6]={d="l"},
+ [0x2CC7]={d="l"},
+ [0x2CC8]={d="l"},
+ [0x2CC9]={d="l"},
+ [0x2CCA]={d="l"},
+ [0x2CCB]={d="l"},
+ [0x2CCC]={d="l"},
+ [0x2CCD]={d="l"},
+ [0x2CCE]={d="l"},
+ [0x2CCF]={d="l"},
+ [0x2CD0]={d="l"},
+ [0x2CD1]={d="l"},
+ [0x2CD2]={d="l"},
+ [0x2CD3]={d="l"},
+ [0x2CD4]={d="l"},
+ [0x2CD5]={d="l"},
+ [0x2CD6]={d="l"},
+ [0x2CD7]={d="l"},
+ [0x2CD8]={d="l"},
+ [0x2CD9]={d="l"},
+ [0x2CDA]={d="l"},
+ [0x2CDB]={d="l"},
+ [0x2CDC]={d="l"},
+ [0x2CDD]={d="l"},
+ [0x2CDE]={d="l"},
+ [0x2CDF]={d="l"},
+ [0x2CE0]={d="l"},
+ [0x2CE1]={d="l"},
+ [0x2CE2]={d="l"},
+ [0x2CE3]={d="l"},
+ [0x2CE4]={d="l"},
+ [0x2CE5]={d="on"},
+ [0x2CE6]={d="on"},
+ [0x2CE7]={d="on"},
+ [0x2CE8]={d="on"},
+ [0x2CE9]={d="on"},
+ [0x2CEA]={d="on"},
+ [0x2CEB]={d="l"},
+ [0x2CEC]={d="l"},
+ [0x2CED]={d="l"},
+ [0x2CEE]={d="l"},
+ [0x2CEF]={d="nsm"},
+ [0x2CF0]={d="nsm"},
+ [0x2CF1]={d="nsm"},
+ [0x2CF2]={d="l"},
+ [0x2CF3]={d="l"},
+ [0x2CF9]={d="on"},
+ [0x2CFA]={d="on"},
+ [0x2CFB]={d="on"},
+ [0x2CFC]={d="on"},
+ [0x2CFD]={d="on"},
+ [0x2CFE]={d="on"},
+ [0x2CFF]={d="on"},
+ [0x2D00]={d="l"},
+ [0x2D01]={d="l"},
+ [0x2D02]={d="l"},
+ [0x2D03]={d="l"},
+ [0x2D04]={d="l"},
+ [0x2D05]={d="l"},
+ [0x2D06]={d="l"},
+ [0x2D07]={d="l"},
+ [0x2D08]={d="l"},
+ [0x2D09]={d="l"},
+ [0x2D0A]={d="l"},
+ [0x2D0B]={d="l"},
+ [0x2D0C]={d="l"},
+ [0x2D0D]={d="l"},
+ [0x2D0E]={d="l"},
+ [0x2D0F]={d="l"},
+ [0x2D10]={d="l"},
+ [0x2D11]={d="l"},
+ [0x2D12]={d="l"},
+ [0x2D13]={d="l"},
+ [0x2D14]={d="l"},
+ [0x2D15]={d="l"},
+ [0x2D16]={d="l"},
+ [0x2D17]={d="l"},
+ [0x2D18]={d="l"},
+ [0x2D19]={d="l"},
+ [0x2D1A]={d="l"},
+ [0x2D1B]={d="l"},
+ [0x2D1C]={d="l"},
+ [0x2D1D]={d="l"},
+ [0x2D1E]={d="l"},
+ [0x2D1F]={d="l"},
+ [0x2D20]={d="l"},
+ [0x2D21]={d="l"},
+ [0x2D22]={d="l"},
+ [0x2D23]={d="l"},
+ [0x2D24]={d="l"},
+ [0x2D25]={d="l"},
+ [0x2D27]={d="l"},
+ [0x2D2D]={d="l"},
+ [0x2D30]={d="l"},
+ [0x2D31]={d="l"},
+ [0x2D32]={d="l"},
+ [0x2D33]={d="l"},
+ [0x2D34]={d="l"},
+ [0x2D35]={d="l"},
+ [0x2D36]={d="l"},
+ [0x2D37]={d="l"},
+ [0x2D38]={d="l"},
+ [0x2D39]={d="l"},
+ [0x2D3A]={d="l"},
+ [0x2D3B]={d="l"},
+ [0x2D3C]={d="l"},
+ [0x2D3D]={d="l"},
+ [0x2D3E]={d="l"},
+ [0x2D3F]={d="l"},
+ [0x2D40]={d="l"},
+ [0x2D41]={d="l"},
+ [0x2D42]={d="l"},
+ [0x2D43]={d="l"},
+ [0x2D44]={d="l"},
+ [0x2D45]={d="l"},
+ [0x2D46]={d="l"},
+ [0x2D47]={d="l"},
+ [0x2D48]={d="l"},
+ [0x2D49]={d="l"},
+ [0x2D4A]={d="l"},
+ [0x2D4B]={d="l"},
+ [0x2D4C]={d="l"},
+ [0x2D4D]={d="l"},
+ [0x2D4E]={d="l"},
+ [0x2D4F]={d="l"},
+ [0x2D50]={d="l"},
+ [0x2D51]={d="l"},
+ [0x2D52]={d="l"},
+ [0x2D53]={d="l"},
+ [0x2D54]={d="l"},
+ [0x2D55]={d="l"},
+ [0x2D56]={d="l"},
+ [0x2D57]={d="l"},
+ [0x2D58]={d="l"},
+ [0x2D59]={d="l"},
+ [0x2D5A]={d="l"},
+ [0x2D5B]={d="l"},
+ [0x2D5C]={d="l"},
+ [0x2D5D]={d="l"},
+ [0x2D5E]={d="l"},
+ [0x2D5F]={d="l"},
+ [0x2D60]={d="l"},
+ [0x2D61]={d="l"},
+ [0x2D62]={d="l"},
+ [0x2D63]={d="l"},
+ [0x2D64]={d="l"},
+ [0x2D65]={d="l"},
+ [0x2D66]={d="l"},
+ [0x2D67]={d="l"},
+ [0x2D6F]={d="l"},
+ [0x2D70]={d="l"},
+ [0x2D7F]={d="nsm"},
+ [0x2D80]={d="l"},
+ [0x2D81]={d="l"},
+ [0x2D82]={d="l"},
+ [0x2D83]={d="l"},
+ [0x2D84]={d="l"},
+ [0x2D85]={d="l"},
+ [0x2D86]={d="l"},
+ [0x2D87]={d="l"},
+ [0x2D88]={d="l"},
+ [0x2D89]={d="l"},
+ [0x2D8A]={d="l"},
+ [0x2D8B]={d="l"},
+ [0x2D8C]={d="l"},
+ [0x2D8D]={d="l"},
+ [0x2D8E]={d="l"},
+ [0x2D8F]={d="l"},
+ [0x2D90]={d="l"},
+ [0x2D91]={d="l"},
+ [0x2D92]={d="l"},
+ [0x2D93]={d="l"},
+ [0x2D94]={d="l"},
+ [0x2D95]={d="l"},
+ [0x2D96]={d="l"},
+ [0x2DA0]={d="l"},
+ [0x2DA1]={d="l"},
+ [0x2DA2]={d="l"},
+ [0x2DA3]={d="l"},
+ [0x2DA4]={d="l"},
+ [0x2DA5]={d="l"},
+ [0x2DA6]={d="l"},
+ [0x2DA8]={d="l"},
+ [0x2DA9]={d="l"},
+ [0x2DAA]={d="l"},
+ [0x2DAB]={d="l"},
+ [0x2DAC]={d="l"},
+ [0x2DAD]={d="l"},
+ [0x2DAE]={d="l"},
+ [0x2DB0]={d="l"},
+ [0x2DB1]={d="l"},
+ [0x2DB2]={d="l"},
+ [0x2DB3]={d="l"},
+ [0x2DB4]={d="l"},
+ [0x2DB5]={d="l"},
+ [0x2DB6]={d="l"},
+ [0x2DB8]={d="l"},
+ [0x2DB9]={d="l"},
+ [0x2DBA]={d="l"},
+ [0x2DBB]={d="l"},
+ [0x2DBC]={d="l"},
+ [0x2DBD]={d="l"},
+ [0x2DBE]={d="l"},
+ [0x2DC0]={d="l"},
+ [0x2DC1]={d="l"},
+ [0x2DC2]={d="l"},
+ [0x2DC3]={d="l"},
+ [0x2DC4]={d="l"},
+ [0x2DC5]={d="l"},
+ [0x2DC6]={d="l"},
+ [0x2DC8]={d="l"},
+ [0x2DC9]={d="l"},
+ [0x2DCA]={d="l"},
+ [0x2DCB]={d="l"},
+ [0x2DCC]={d="l"},
+ [0x2DCD]={d="l"},
+ [0x2DCE]={d="l"},
+ [0x2DD0]={d="l"},
+ [0x2DD1]={d="l"},
+ [0x2DD2]={d="l"},
+ [0x2DD3]={d="l"},
+ [0x2DD4]={d="l"},
+ [0x2DD5]={d="l"},
+ [0x2DD6]={d="l"},
+ [0x2DD8]={d="l"},
+ [0x2DD9]={d="l"},
+ [0x2DDA]={d="l"},
+ [0x2DDB]={d="l"},
+ [0x2DDC]={d="l"},
+ [0x2DDD]={d="l"},
+ [0x2DDE]={d="l"},
+ [0x2DE0]={d="nsm"},
+ [0x2DE1]={d="nsm"},
+ [0x2DE2]={d="nsm"},
+ [0x2DE3]={d="nsm"},
+ [0x2DE4]={d="nsm"},
+ [0x2DE5]={d="nsm"},
+ [0x2DE6]={d="nsm"},
+ [0x2DE7]={d="nsm"},
+ [0x2DE8]={d="nsm"},
+ [0x2DE9]={d="nsm"},
+ [0x2DEA]={d="nsm"},
+ [0x2DEB]={d="nsm"},
+ [0x2DEC]={d="nsm"},
+ [0x2DED]={d="nsm"},
+ [0x2DEE]={d="nsm"},
+ [0x2DEF]={d="nsm"},
+ [0x2DF0]={d="nsm"},
+ [0x2DF1]={d="nsm"},
+ [0x2DF2]={d="nsm"},
+ [0x2DF3]={d="nsm"},
+ [0x2DF4]={d="nsm"},
+ [0x2DF5]={d="nsm"},
+ [0x2DF6]={d="nsm"},
+ [0x2DF7]={d="nsm"},
+ [0x2DF8]={d="nsm"},
+ [0x2DF9]={d="nsm"},
+ [0x2DFA]={d="nsm"},
+ [0x2DFB]={d="nsm"},
+ [0x2DFC]={d="nsm"},
+ [0x2DFD]={d="nsm"},
+ [0x2DFE]={d="nsm"},
+ [0x2DFF]={d="nsm"},
+ [0x2E00]={d="on"},
+ [0x2E01]={d="on"},
+ [0x2E02]={d="on",
+ m=0x2E03},
+ [0x2E03]={d="on",
+ m=0x2E02},
+ [0x2E04]={d="on",
+ m=0x2E05},
+ [0x2E05]={d="on",
+ m=0x2E04},
+ [0x2E06]={d="on"},
+ [0x2E07]={d="on"},
+ [0x2E08]={d="on"},
+ [0x2E09]={d="on",
+ m=0x2E0A},
+ [0x2E0A]={d="on",
+ m=0x2E09},
+ [0x2E0B]={d="on"},
+ [0x2E0C]={d="on",
+ m=0x2E0D},
+ [0x2E0D]={d="on",
+ m=0x2E0C},
+ [0x2E0E]={d="on"},
+ [0x2E0F]={d="on"},
+ [0x2E10]={d="on"},
+ [0x2E11]={d="on"},
+ [0x2E12]={d="on"},
+ [0x2E13]={d="on"},
+ [0x2E14]={d="on"},
+ [0x2E15]={d="on"},
+ [0x2E16]={d="on"},
+ [0x2E17]={d="on"},
+ [0x2E18]={d="on"},
+ [0x2E19]={d="on"},
+ [0x2E1A]={d="on"},
+ [0x2E1B]={d="on"},
+ [0x2E1C]={d="on",
+ m=0x2E1D},
+ [0x2E1D]={d="on",
+ m=0x2E1C},
+ [0x2E1E]={d="on"},
+ [0x2E1F]={d="on"},
+ [0x2E20]={d="on",
+ m=0x2E21},
+ [0x2E21]={d="on",
+ m=0x2E20},
+ [0x2E22]={d="on",
+ m=0x2E23},
+ [0x2E23]={d="on",
+ m=0x2E22},
+ [0x2E24]={d="on",
+ m=0x2E25},
+ [0x2E25]={d="on",
+ m=0x2E24},
+ [0x2E26]={d="on",
+ m=0x2E27},
+ [0x2E27]={d="on",
+ m=0x2E26},
+ [0x2E28]={d="on",
+ m=0x2E29},
+ [0x2E29]={d="on",
+ m=0x2E28},
+ [0x2E2A]={d="on"},
+ [0x2E2B]={d="on"},
+ [0x2E2C]={d="on"},
+ [0x2E2D]={d="on"},
+ [0x2E2E]={d="on"},
+ [0x2E2F]={d="on"},
+ [0x2E30]={d="on"},
+ [0x2E31]={d="on"},
+ [0x2E32]={d="on"},
+ [0x2E33]={d="on"},
+ [0x2E34]={d="on"},
+ [0x2E35]={d="on"},
+ [0x2E36]={d="on"},
+ [0x2E37]={d="on"},
+ [0x2E38]={d="on"},
+ [0x2E39]={d="on"},
+ [0x2E3A]={d="on"},
+ [0x2E3B]={d="on"},
+ [0x2E3C]={d="on"},
+ [0x2E3D]={d="on"},
+ [0x2E3E]={d="on"},
+ [0x2E3F]={d="on"},
+ [0x2E40]={d="on"},
+ [0x2E41]={d="on"},
+ [0x2E42]={d="on"},
+ [0x2E43]={d="on"},
+ [0x2E44]={d="on"},
+ [0x2E45]={d="on"},
+ [0x2E46]={d="on"},
+ [0x2E47]={d="on"},
+ [0x2E48]={d="on"},
+ [0x2E49]={d="on"},
+ [0x2E4A]={d="on"},
+ [0x2E4B]={d="on"},
+ [0x2E4C]={d="on"},
+ [0x2E4D]={d="on"},
+ [0x2E4E]={d="on"},
+ [0x2E4F]={d="on"},
+ [0x2E50]={d="on"},
+ [0x2E51]={d="on"},
+ [0x2E52]={d="on"},
+ [0x2E53]={d="on"},
+ [0x2E54]={d="on"},
+ [0x2E55]={d="on",
+ m=0x2E56},
+ [0x2E56]={d="on",
+ m=0x2E55},
+ [0x2E57]={d="on",
+ m=0x2E58},
+ [0x2E58]={d="on",
+ m=0x2E57},
+ [0x2E59]={d="on",
+ m=0x2E5A},
+ [0x2E5A]={d="on",
+ m=0x2E59},
+ [0x2E5B]={d="on",
+ m=0x2E5C},
+ [0x2E5C]={d="on",
+ m=0x2E5B},
+ [0x2E5D]={d="on"},
+ [0x2E80]={d="on"},
+ [0x2E81]={d="on"},
+ [0x2E82]={d="on"},
+ [0x2E83]={d="on"},
+ [0x2E84]={d="on"},
+ [0x2E85]={d="on"},
+ [0x2E86]={d="on"},
+ [0x2E87]={d="on"},
+ [0x2E88]={d="on"},
+ [0x2E89]={d="on"},
+ [0x2E8A]={d="on"},
+ [0x2E8B]={d="on"},
+ [0x2E8C]={d="on"},
+ [0x2E8D]={d="on"},
+ [0x2E8E]={d="on"},
+ [0x2E8F]={d="on"},
+ [0x2E90]={d="on"},
+ [0x2E91]={d="on"},
+ [0x2E92]={d="on"},
+ [0x2E93]={d="on"},
+ [0x2E94]={d="on"},
+ [0x2E95]={d="on"},
+ [0x2E96]={d="on"},
+ [0x2E97]={d="on"},
+ [0x2E98]={d="on"},
+ [0x2E99]={d="on"},
+ [0x2E9B]={d="on"},
+ [0x2E9C]={d="on"},
+ [0x2E9D]={d="on"},
+ [0x2E9E]={d="on"},
+ [0x2E9F]={d="on"},
+ [0x2EA0]={d="on"},
+ [0x2EA1]={d="on"},
+ [0x2EA2]={d="on"},
+ [0x2EA3]={d="on"},
+ [0x2EA4]={d="on"},
+ [0x2EA5]={d="on"},
+ [0x2EA6]={d="on"},
+ [0x2EA7]={d="on"},
+ [0x2EA8]={d="on"},
+ [0x2EA9]={d="on"},
+ [0x2EAA]={d="on"},
+ [0x2EAB]={d="on"},
+ [0x2EAC]={d="on"},
+ [0x2EAD]={d="on"},
+ [0x2EAE]={d="on"},
+ [0x2EAF]={d="on"},
+ [0x2EB0]={d="on"},
+ [0x2EB1]={d="on"},
+ [0x2EB2]={d="on"},
+ [0x2EB3]={d="on"},
+ [0x2EB4]={d="on"},
+ [0x2EB5]={d="on"},
+ [0x2EB6]={d="on"},
+ [0x2EB7]={d="on"},
+ [0x2EB8]={d="on"},
+ [0x2EB9]={d="on"},
+ [0x2EBA]={d="on"},
+ [0x2EBB]={d="on"},
+ [0x2EBC]={d="on"},
+ [0x2EBD]={d="on"},
+ [0x2EBE]={d="on"},
+ [0x2EBF]={d="on"},
+ [0x2EC0]={d="on"},
+ [0x2EC1]={d="on"},
+ [0x2EC2]={d="on"},
+ [0x2EC3]={d="on"},
+ [0x2EC4]={d="on"},
+ [0x2EC5]={d="on"},
+ [0x2EC6]={d="on"},
+ [0x2EC7]={d="on"},
+ [0x2EC8]={d="on"},
+ [0x2EC9]={d="on"},
+ [0x2ECA]={d="on"},
+ [0x2ECB]={d="on"},
+ [0x2ECC]={d="on"},
+ [0x2ECD]={d="on"},
+ [0x2ECE]={d="on"},
+ [0x2ECF]={d="on"},
+ [0x2ED0]={d="on"},
+ [0x2ED1]={d="on"},
+ [0x2ED2]={d="on"},
+ [0x2ED3]={d="on"},
+ [0x2ED4]={d="on"},
+ [0x2ED5]={d="on"},
+ [0x2ED6]={d="on"},
+ [0x2ED7]={d="on"},
+ [0x2ED8]={d="on"},
+ [0x2ED9]={d="on"},
+ [0x2EDA]={d="on"},
+ [0x2EDB]={d="on"},
+ [0x2EDC]={d="on"},
+ [0x2EDD]={d="on"},
+ [0x2EDE]={d="on"},
+ [0x2EDF]={d="on"},
+ [0x2EE0]={d="on"},
+ [0x2EE1]={d="on"},
+ [0x2EE2]={d="on"},
+ [0x2EE3]={d="on"},
+ [0x2EE4]={d="on"},
+ [0x2EE5]={d="on"},
+ [0x2EE6]={d="on"},
+ [0x2EE7]={d="on"},
+ [0x2EE8]={d="on"},
+ [0x2EE9]={d="on"},
+ [0x2EEA]={d="on"},
+ [0x2EEB]={d="on"},
+ [0x2EEC]={d="on"},
+ [0x2EED]={d="on"},
+ [0x2EEE]={d="on"},
+ [0x2EEF]={d="on"},
+ [0x2EF0]={d="on"},
+ [0x2EF1]={d="on"},
+ [0x2EF2]={d="on"},
+ [0x2EF3]={d="on"},
+ [0x2F00]={d="on"},
+ [0x2F01]={d="on"},
+ [0x2F02]={d="on"},
+ [0x2F03]={d="on"},
+ [0x2F04]={d="on"},
+ [0x2F05]={d="on"},
+ [0x2F06]={d="on"},
+ [0x2F07]={d="on"},
+ [0x2F08]={d="on"},
+ [0x2F09]={d="on"},
+ [0x2F0A]={d="on"},
+ [0x2F0B]={d="on"},
+ [0x2F0C]={d="on"},
+ [0x2F0D]={d="on"},
+ [0x2F0E]={d="on"},
+ [0x2F0F]={d="on"},
+ [0x2F10]={d="on"},
+ [0x2F11]={d="on"},
+ [0x2F12]={d="on"},
+ [0x2F13]={d="on"},
+ [0x2F14]={d="on"},
+ [0x2F15]={d="on"},
+ [0x2F16]={d="on"},
+ [0x2F17]={d="on"},
+ [0x2F18]={d="on"},
+ [0x2F19]={d="on"},
+ [0x2F1A]={d="on"},
+ [0x2F1B]={d="on"},
+ [0x2F1C]={d="on"},
+ [0x2F1D]={d="on"},
+ [0x2F1E]={d="on"},
+ [0x2F1F]={d="on"},
+ [0x2F20]={d="on"},
+ [0x2F21]={d="on"},
+ [0x2F22]={d="on"},
+ [0x2F23]={d="on"},
+ [0x2F24]={d="on"},
+ [0x2F25]={d="on"},
+ [0x2F26]={d="on"},
+ [0x2F27]={d="on"},
+ [0x2F28]={d="on"},
+ [0x2F29]={d="on"},
+ [0x2F2A]={d="on"},
+ [0x2F2B]={d="on"},
+ [0x2F2C]={d="on"},
+ [0x2F2D]={d="on"},
+ [0x2F2E]={d="on"},
+ [0x2F2F]={d="on"},
+ [0x2F30]={d="on"},
+ [0x2F31]={d="on"},
+ [0x2F32]={d="on"},
+ [0x2F33]={d="on"},
+ [0x2F34]={d="on"},
+ [0x2F35]={d="on"},
+ [0x2F36]={d="on"},
+ [0x2F37]={d="on"},
+ [0x2F38]={d="on"},
+ [0x2F39]={d="on"},
+ [0x2F3A]={d="on"},
+ [0x2F3B]={d="on"},
+ [0x2F3C]={d="on"},
+ [0x2F3D]={d="on"},
+ [0x2F3E]={d="on"},
+ [0x2F3F]={d="on"},
+ [0x2F40]={d="on"},
+ [0x2F41]={d="on"},
+ [0x2F42]={d="on"},
+ [0x2F43]={d="on"},
+ [0x2F44]={d="on"},
+ [0x2F45]={d="on"},
+ [0x2F46]={d="on"},
+ [0x2F47]={d="on"},
+ [0x2F48]={d="on"},
+ [0x2F49]={d="on"},
+ [0x2F4A]={d="on"},
+ [0x2F4B]={d="on"},
+ [0x2F4C]={d="on"},
+ [0x2F4D]={d="on"},
+ [0x2F4E]={d="on"},
+ [0x2F4F]={d="on"},
+ [0x2F50]={d="on"},
+ [0x2F51]={d="on"},
+ [0x2F52]={d="on"},
+ [0x2F53]={d="on"},
+ [0x2F54]={d="on"},
+ [0x2F55]={d="on"},
+ [0x2F56]={d="on"},
+ [0x2F57]={d="on"},
+ [0x2F58]={d="on"},
+ [0x2F59]={d="on"},
+ [0x2F5A]={d="on"},
+ [0x2F5B]={d="on"},
+ [0x2F5C]={d="on"},
+ [0x2F5D]={d="on"},
+ [0x2F5E]={d="on"},
+ [0x2F5F]={d="on"},
+ [0x2F60]={d="on"},
+ [0x2F61]={d="on"},
+ [0x2F62]={d="on"},
+ [0x2F63]={d="on"},
+ [0x2F64]={d="on"},
+ [0x2F65]={d="on"},
+ [0x2F66]={d="on"},
+ [0x2F67]={d="on"},
+ [0x2F68]={d="on"},
+ [0x2F69]={d="on"},
+ [0x2F6A]={d="on"},
+ [0x2F6B]={d="on"},
+ [0x2F6C]={d="on"},
+ [0x2F6D]={d="on"},
+ [0x2F6E]={d="on"},
+ [0x2F6F]={d="on"},
+ [0x2F70]={d="on"},
+ [0x2F71]={d="on"},
+ [0x2F72]={d="on"},
+ [0x2F73]={d="on"},
+ [0x2F74]={d="on"},
+ [0x2F75]={d="on"},
+ [0x2F76]={d="on"},
+ [0x2F77]={d="on"},
+ [0x2F78]={d="on"},
+ [0x2F79]={d="on"},
+ [0x2F7A]={d="on"},
+ [0x2F7B]={d="on"},
+ [0x2F7C]={d="on"},
+ [0x2F7D]={d="on"},
+ [0x2F7E]={d="on"},
+ [0x2F7F]={d="on"},
+ [0x2F80]={d="on"},
+ [0x2F81]={d="on"},
+ [0x2F82]={d="on"},
+ [0x2F83]={d="on"},
+ [0x2F84]={d="on"},
+ [0x2F85]={d="on"},
+ [0x2F86]={d="on"},
+ [0x2F87]={d="on"},
+ [0x2F88]={d="on"},
+ [0x2F89]={d="on"},
+ [0x2F8A]={d="on"},
+ [0x2F8B]={d="on"},
+ [0x2F8C]={d="on"},
+ [0x2F8D]={d="on"},
+ [0x2F8E]={d="on"},
+ [0x2F8F]={d="on"},
+ [0x2F90]={d="on"},
+ [0x2F91]={d="on"},
+ [0x2F92]={d="on"},
+ [0x2F93]={d="on"},
+ [0x2F94]={d="on"},
+ [0x2F95]={d="on"},
+ [0x2F96]={d="on"},
+ [0x2F97]={d="on"},
+ [0x2F98]={d="on"},
+ [0x2F99]={d="on"},
+ [0x2F9A]={d="on"},
+ [0x2F9B]={d="on"},
+ [0x2F9C]={d="on"},
+ [0x2F9D]={d="on"},
+ [0x2F9E]={d="on"},
+ [0x2F9F]={d="on"},
+ [0x2FA0]={d="on"},
+ [0x2FA1]={d="on"},
+ [0x2FA2]={d="on"},
+ [0x2FA3]={d="on"},
+ [0x2FA4]={d="on"},
+ [0x2FA5]={d="on"},
+ [0x2FA6]={d="on"},
+ [0x2FA7]={d="on"},
+ [0x2FA8]={d="on"},
+ [0x2FA9]={d="on"},
+ [0x2FAA]={d="on"},
+ [0x2FAB]={d="on"},
+ [0x2FAC]={d="on"},
+ [0x2FAD]={d="on"},
+ [0x2FAE]={d="on"},
+ [0x2FAF]={d="on"},
+ [0x2FB0]={d="on"},
+ [0x2FB1]={d="on"},
+ [0x2FB2]={d="on"},
+ [0x2FB3]={d="on"},
+ [0x2FB4]={d="on"},
+ [0x2FB5]={d="on"},
+ [0x2FB6]={d="on"},
+ [0x2FB7]={d="on"},
+ [0x2FB8]={d="on"},
+ [0x2FB9]={d="on"},
+ [0x2FBA]={d="on"},
+ [0x2FBB]={d="on"},
+ [0x2FBC]={d="on"},
+ [0x2FBD]={d="on"},
+ [0x2FBE]={d="on"},
+ [0x2FBF]={d="on"},
+ [0x2FC0]={d="on"},
+ [0x2FC1]={d="on"},
+ [0x2FC2]={d="on"},
+ [0x2FC3]={d="on"},
+ [0x2FC4]={d="on"},
+ [0x2FC5]={d="on"},
+ [0x2FC6]={d="on"},
+ [0x2FC7]={d="on"},
+ [0x2FC8]={d="on"},
+ [0x2FC9]={d="on"},
+ [0x2FCA]={d="on"},
+ [0x2FCB]={d="on"},
+ [0x2FCC]={d="on"},
+ [0x2FCD]={d="on"},
+ [0x2FCE]={d="on"},
+ [0x2FCF]={d="on"},
+ [0x2FD0]={d="on"},
+ [0x2FD1]={d="on"},
+ [0x2FD2]={d="on"},
+ [0x2FD3]={d="on"},
+ [0x2FD4]={d="on"},
+ [0x2FD5]={d="on"},
+ [0x2FF0]={d="on"},
+ [0x2FF1]={d="on"},
+ [0x2FF2]={d="on"},
+ [0x2FF3]={d="on"},
+ [0x2FF4]={d="on"},
+ [0x2FF5]={d="on"},
+ [0x2FF6]={d="on"},
+ [0x2FF7]={d="on"},
+ [0x2FF8]={d="on"},
+ [0x2FF9]={d="on"},
+ [0x2FFA]={d="on"},
+ [0x2FFB]={d="on"},
+ [0x2FFC]={d="on"},
+ [0x2FFD]={d="on"},
+ [0x2FFE]={d="on"},
+ [0x2FFF]={d="on"},
+ [0x3000]={d="ws"},
+ [0x3001]={d="on"},
+ [0x3002]={d="on"},
+ [0x3003]={d="on"},
+ [0x3004]={d="on"},
+ [0x3005]={d="l"},
+ [0x3006]={d="l"},
+ [0x3007]={d="l"},
+ [0x3008]={d="on",
+ m=0x3009},
+ [0x3009]={d="on",
+ m=0x3008},
+ [0x300A]={d="on",
+ m=0x300B},
+ [0x300B]={d="on",
+ m=0x300A},
+ [0x300C]={d="on",
+ m=0x300D},
+ [0x300D]={d="on",
+ m=0x300C},
+ [0x300E]={d="on",
+ m=0x300F},
+ [0x300F]={d="on",
+ m=0x300E},
+ [0x3010]={d="on",
+ m=0x3011},
+ [0x3011]={d="on",
+ m=0x3010},
+ [0x3012]={d="on"},
+ [0x3013]={d="on"},
+ [0x3014]={d="on",
+ m=0x3015},
+ [0x3015]={d="on",
+ m=0x3014},
+ [0x3016]={d="on",
+ m=0x3017},
+ [0x3017]={d="on",
+ m=0x3016},
+ [0x3018]={d="on",
+ m=0x3019},
+ [0x3019]={d="on",
+ m=0x3018},
+ [0x301A]={d="on",
+ m=0x301B},
+ [0x301B]={d="on",
+ m=0x301A},
+ [0x301C]={d="on"},
+ [0x301D]={d="on"},
+ [0x301E]={d="on"},
+ [0x301F]={d="on"},
+ [0x3020]={d="on"},
+ [0x3021]={d="l"},
+ [0x3022]={d="l"},
+ [0x3023]={d="l"},
+ [0x3024]={d="l"},
+ [0x3025]={d="l"},
+ [0x3026]={d="l"},
+ [0x3027]={d="l"},
+ [0x3028]={d="l"},
+ [0x3029]={d="l"},
+ [0x302A]={d="nsm"},
+ [0x302B]={d="nsm"},
+ [0x302C]={d="nsm"},
+ [0x302D]={d="nsm"},
+ [0x302E]={d="l"},
+ [0x302F]={d="l"},
+ [0x3030]={d="on"},
+ [0x3031]={d="l"},
+ [0x3032]={d="l"},
+ [0x3033]={d="l"},
+ [0x3034]={d="l"},
+ [0x3035]={d="l"},
+ [0x3036]={d="on"},
+ [0x3037]={d="on"},
+ [0x3038]={d="l"},
+ [0x3039]={d="l"},
+ [0x303A]={d="l"},
+ [0x303B]={d="l"},
+ [0x303C]={d="l"},
+ [0x303D]={d="on"},
+ [0x303E]={d="on"},
+ [0x303F]={d="on"},
+ [0x3041]={d="l"},
+ [0x3042]={d="l"},
+ [0x3043]={d="l"},
+ [0x3044]={d="l"},
+ [0x3045]={d="l"},
+ [0x3046]={d="l"},
+ [0x3047]={d="l"},
+ [0x3048]={d="l"},
+ [0x3049]={d="l"},
+ [0x304A]={d="l"},
+ [0x304B]={d="l"},
+ [0x304C]={d="l"},
+ [0x304D]={d="l"},
+ [0x304E]={d="l"},
+ [0x304F]={d="l"},
+ [0x3050]={d="l"},
+ [0x3051]={d="l"},
+ [0x3052]={d="l"},
+ [0x3053]={d="l"},
+ [0x3054]={d="l"},
+ [0x3055]={d="l"},
+ [0x3056]={d="l"},
+ [0x3057]={d="l"},
+ [0x3058]={d="l"},
+ [0x3059]={d="l"},
+ [0x305A]={d="l"},
+ [0x305B]={d="l"},
+ [0x305C]={d="l"},
+ [0x305D]={d="l"},
+ [0x305E]={d="l"},
+ [0x305F]={d="l"},
+ [0x3060]={d="l"},
+ [0x3061]={d="l"},
+ [0x3062]={d="l"},
+ [0x3063]={d="l"},
+ [0x3064]={d="l"},
+ [0x3065]={d="l"},
+ [0x3066]={d="l"},
+ [0x3067]={d="l"},
+ [0x3068]={d="l"},
+ [0x3069]={d="l"},
+ [0x306A]={d="l"},
+ [0x306B]={d="l"},
+ [0x306C]={d="l"},
+ [0x306D]={d="l"},
+ [0x306E]={d="l"},
+ [0x306F]={d="l"},
+ [0x3070]={d="l"},
+ [0x3071]={d="l"},
+ [0x3072]={d="l"},
+ [0x3073]={d="l"},
+ [0x3074]={d="l"},
+ [0x3075]={d="l"},
+ [0x3076]={d="l"},
+ [0x3077]={d="l"},
+ [0x3078]={d="l"},
+ [0x3079]={d="l"},
+ [0x307A]={d="l"},
+ [0x307B]={d="l"},
+ [0x307C]={d="l"},
+ [0x307D]={d="l"},
+ [0x307E]={d="l"},
+ [0x307F]={d="l"},
+ [0x3080]={d="l"},
+ [0x3081]={d="l"},
+ [0x3082]={d="l"},
+ [0x3083]={d="l"},
+ [0x3084]={d="l"},
+ [0x3085]={d="l"},
+ [0x3086]={d="l"},
+ [0x3087]={d="l"},
+ [0x3088]={d="l"},
+ [0x3089]={d="l"},
+ [0x308A]={d="l"},
+ [0x308B]={d="l"},
+ [0x308C]={d="l"},
+ [0x308D]={d="l"},
+ [0x308E]={d="l"},
+ [0x308F]={d="l"},
+ [0x3090]={d="l"},
+ [0x3091]={d="l"},
+ [0x3092]={d="l"},
+ [0x3093]={d="l"},
+ [0x3094]={d="l"},
+ [0x3095]={d="l"},
+ [0x3096]={d="l"},
+ [0x3099]={d="nsm"},
+ [0x309A]={d="nsm"},
+ [0x309B]={d="on"},
+ [0x309C]={d="on"},
+ [0x309D]={d="l"},
+ [0x309E]={d="l"},
+ [0x309F]={d="l"},
+ [0x30A0]={d="on"},
+ [0x30A1]={d="l"},
+ [0x30A2]={d="l"},
+ [0x30A3]={d="l"},
+ [0x30A4]={d="l"},
+ [0x30A5]={d="l"},
+ [0x30A6]={d="l"},
+ [0x30A7]={d="l"},
+ [0x30A8]={d="l"},
+ [0x30A9]={d="l"},
+ [0x30AA]={d="l"},
+ [0x30AB]={d="l"},
+ [0x30AC]={d="l"},
+ [0x30AD]={d="l"},
+ [0x30AE]={d="l"},
+ [0x30AF]={d="l"},
+ [0x30B0]={d="l"},
+ [0x30B1]={d="l"},
+ [0x30B2]={d="l"},
+ [0x30B3]={d="l"},
+ [0x30B4]={d="l"},
+ [0x30B5]={d="l"},
+ [0x30B6]={d="l"},
+ [0x30B7]={d="l"},
+ [0x30B8]={d="l"},
+ [0x30B9]={d="l"},
+ [0x30BA]={d="l"},
+ [0x30BB]={d="l"},
+ [0x30BC]={d="l"},
+ [0x30BD]={d="l"},
+ [0x30BE]={d="l"},
+ [0x30BF]={d="l"},
+ [0x30C0]={d="l"},
+ [0x30C1]={d="l"},
+ [0x30C2]={d="l"},
+ [0x30C3]={d="l"},
+ [0x30C4]={d="l"},
+ [0x30C5]={d="l"},
+ [0x30C6]={d="l"},
+ [0x30C7]={d="l"},
+ [0x30C8]={d="l"},
+ [0x30C9]={d="l"},
+ [0x30CA]={d="l"},
+ [0x30CB]={d="l"},
+ [0x30CC]={d="l"},
+ [0x30CD]={d="l"},
+ [0x30CE]={d="l"},
+ [0x30CF]={d="l"},
+ [0x30D0]={d="l"},
+ [0x30D1]={d="l"},
+ [0x30D2]={d="l"},
+ [0x30D3]={d="l"},
+ [0x30D4]={d="l"},
+ [0x30D5]={d="l"},
+ [0x30D6]={d="l"},
+ [0x30D7]={d="l"},
+ [0x30D8]={d="l"},
+ [0x30D9]={d="l"},
+ [0x30DA]={d="l"},
+ [0x30DB]={d="l"},
+ [0x30DC]={d="l"},
+ [0x30DD]={d="l"},
+ [0x30DE]={d="l"},
+ [0x30DF]={d="l"},
+ [0x30E0]={d="l"},
+ [0x30E1]={d="l"},
+ [0x30E2]={d="l"},
+ [0x30E3]={d="l"},
+ [0x30E4]={d="l"},
+ [0x30E5]={d="l"},
+ [0x30E6]={d="l"},
+ [0x30E7]={d="l"},
+ [0x30E8]={d="l"},
+ [0x30E9]={d="l"},
+ [0x30EA]={d="l"},
+ [0x30EB]={d="l"},
+ [0x30EC]={d="l"},
+ [0x30ED]={d="l"},
+ [0x30EE]={d="l"},
+ [0x30EF]={d="l"},
+ [0x30F0]={d="l"},
+ [0x30F1]={d="l"},
+ [0x30F2]={d="l"},
+ [0x30F3]={d="l"},
+ [0x30F4]={d="l"},
+ [0x30F5]={d="l"},
+ [0x30F6]={d="l"},
+ [0x30F7]={d="l"},
+ [0x30F8]={d="l"},
+ [0x30F9]={d="l"},
+ [0x30FA]={d="l"},
+ [0x30FB]={d="on"},
+ [0x30FC]={d="l"},
+ [0x30FD]={d="l"},
+ [0x30FE]={d="l"},
+ [0x30FF]={d="l"},
+ [0x3105]={d="l"},
+ [0x3106]={d="l"},
+ [0x3107]={d="l"},
+ [0x3108]={d="l"},
+ [0x3109]={d="l"},
+ [0x310A]={d="l"},
+ [0x310B]={d="l"},
+ [0x310C]={d="l"},
+ [0x310D]={d="l"},
+ [0x310E]={d="l"},
+ [0x310F]={d="l"},
+ [0x3110]={d="l"},
+ [0x3111]={d="l"},
+ [0x3112]={d="l"},
+ [0x3113]={d="l"},
+ [0x3114]={d="l"},
+ [0x3115]={d="l"},
+ [0x3116]={d="l"},
+ [0x3117]={d="l"},
+ [0x3118]={d="l"},
+ [0x3119]={d="l"},
+ [0x311A]={d="l"},
+ [0x311B]={d="l"},
+ [0x311C]={d="l"},
+ [0x311D]={d="l"},
+ [0x311E]={d="l"},
+ [0x311F]={d="l"},
+ [0x3120]={d="l"},
+ [0x3121]={d="l"},
+ [0x3122]={d="l"},
+ [0x3123]={d="l"},
+ [0x3124]={d="l"},
+ [0x3125]={d="l"},
+ [0x3126]={d="l"},
+ [0x3127]={d="l"},
+ [0x3128]={d="l"},
+ [0x3129]={d="l"},
+ [0x312A]={d="l"},
+ [0x312B]={d="l"},
+ [0x312C]={d="l"},
+ [0x312D]={d="l"},
+ [0x312E]={d="l"},
+ [0x312F]={d="l"},
+ [0x3131]={d="l"},
+ [0x3132]={d="l"},
+ [0x3133]={d="l"},
+ [0x3134]={d="l"},
+ [0x3135]={d="l"},
+ [0x3136]={d="l"},
+ [0x3137]={d="l"},
+ [0x3138]={d="l"},
+ [0x3139]={d="l"},
+ [0x313A]={d="l"},
+ [0x313B]={d="l"},
+ [0x313C]={d="l"},
+ [0x313D]={d="l"},
+ [0x313E]={d="l"},
+ [0x313F]={d="l"},
+ [0x3140]={d="l"},
+ [0x3141]={d="l"},
+ [0x3142]={d="l"},
+ [0x3143]={d="l"},
+ [0x3144]={d="l"},
+ [0x3145]={d="l"},
+ [0x3146]={d="l"},
+ [0x3147]={d="l"},
+ [0x3148]={d="l"},
+ [0x3149]={d="l"},
+ [0x314A]={d="l"},
+ [0x314B]={d="l"},
+ [0x314C]={d="l"},
+ [0x314D]={d="l"},
+ [0x314E]={d="l"},
+ [0x314F]={d="l"},
+ [0x3150]={d="l"},
+ [0x3151]={d="l"},
+ [0x3152]={d="l"},
+ [0x3153]={d="l"},
+ [0x3154]={d="l"},
+ [0x3155]={d="l"},
+ [0x3156]={d="l"},
+ [0x3157]={d="l"},
+ [0x3158]={d="l"},
+ [0x3159]={d="l"},
+ [0x315A]={d="l"},
+ [0x315B]={d="l"},
+ [0x315C]={d="l"},
+ [0x315D]={d="l"},
+ [0x315E]={d="l"},
+ [0x315F]={d="l"},
+ [0x3160]={d="l"},
+ [0x3161]={d="l"},
+ [0x3162]={d="l"},
+ [0x3163]={d="l"},
+ [0x3164]={d="l"},
+ [0x3165]={d="l"},
+ [0x3166]={d="l"},
+ [0x3167]={d="l"},
+ [0x3168]={d="l"},
+ [0x3169]={d="l"},
+ [0x316A]={d="l"},
+ [0x316B]={d="l"},
+ [0x316C]={d="l"},
+ [0x316D]={d="l"},
+ [0x316E]={d="l"},
+ [0x316F]={d="l"},
+ [0x3170]={d="l"},
+ [0x3171]={d="l"},
+ [0x3172]={d="l"},
+ [0x3173]={d="l"},
+ [0x3174]={d="l"},
+ [0x3175]={d="l"},
+ [0x3176]={d="l"},
+ [0x3177]={d="l"},
+ [0x3178]={d="l"},
+ [0x3179]={d="l"},
+ [0x317A]={d="l"},
+ [0x317B]={d="l"},
+ [0x317C]={d="l"},
+ [0x317D]={d="l"},
+ [0x317E]={d="l"},
+ [0x317F]={d="l"},
+ [0x3180]={d="l"},
+ [0x3181]={d="l"},
+ [0x3182]={d="l"},
+ [0x3183]={d="l"},
+ [0x3184]={d="l"},
+ [0x3185]={d="l"},
+ [0x3186]={d="l"},
+ [0x3187]={d="l"},
+ [0x3188]={d="l"},
+ [0x3189]={d="l"},
+ [0x318A]={d="l"},
+ [0x318B]={d="l"},
+ [0x318C]={d="l"},
+ [0x318D]={d="l"},
+ [0x318E]={d="l"},
+ [0x3190]={d="l"},
+ [0x3191]={d="l"},
+ [0x3192]={d="l"},
+ [0x3193]={d="l"},
+ [0x3194]={d="l"},
+ [0x3195]={d="l"},
+ [0x3196]={d="l"},
+ [0x3197]={d="l"},
+ [0x3198]={d="l"},
+ [0x3199]={d="l"},
+ [0x319A]={d="l"},
+ [0x319B]={d="l"},
+ [0x319C]={d="l"},
+ [0x319D]={d="l"},
+ [0x319E]={d="l"},
+ [0x319F]={d="l"},
+ [0x31A0]={d="l"},
+ [0x31A1]={d="l"},
+ [0x31A2]={d="l"},
+ [0x31A3]={d="l"},
+ [0x31A4]={d="l"},
+ [0x31A5]={d="l"},
+ [0x31A6]={d="l"},
+ [0x31A7]={d="l"},
+ [0x31A8]={d="l"},
+ [0x31A9]={d="l"},
+ [0x31AA]={d="l"},
+ [0x31AB]={d="l"},
+ [0x31AC]={d="l"},
+ [0x31AD]={d="l"},
+ [0x31AE]={d="l"},
+ [0x31AF]={d="l"},
+ [0x31B0]={d="l"},
+ [0x31B1]={d="l"},
+ [0x31B2]={d="l"},
+ [0x31B3]={d="l"},
+ [0x31B4]={d="l"},
+ [0x31B5]={d="l"},
+ [0x31B6]={d="l"},
+ [0x31B7]={d="l"},
+ [0x31B8]={d="l"},
+ [0x31B9]={d="l"},
+ [0x31BA]={d="l"},
+ [0x31BB]={d="l"},
+ [0x31BC]={d="l"},
+ [0x31BD]={d="l"},
+ [0x31BE]={d="l"},
+ [0x31BF]={d="l"},
+ [0x31C0]={d="on"},
+ [0x31C1]={d="on"},
+ [0x31C2]={d="on"},
+ [0x31C3]={d="on"},
+ [0x31C4]={d="on"},
+ [0x31C5]={d="on"},
+ [0x31C6]={d="on"},
+ [0x31C7]={d="on"},
+ [0x31C8]={d="on"},
+ [0x31C9]={d="on"},
+ [0x31CA]={d="on"},
+ [0x31CB]={d="on"},
+ [0x31CC]={d="on"},
+ [0x31CD]={d="on"},
+ [0x31CE]={d="on"},
+ [0x31CF]={d="on"},
+ [0x31D0]={d="on"},
+ [0x31D1]={d="on"},
+ [0x31D2]={d="on"},
+ [0x31D3]={d="on"},
+ [0x31D4]={d="on"},
+ [0x31D5]={d="on"},
+ [0x31D6]={d="on"},
+ [0x31D7]={d="on"},
+ [0x31D8]={d="on"},
+ [0x31D9]={d="on"},
+ [0x31DA]={d="on"},
+ [0x31DB]={d="on"},
+ [0x31DC]={d="on"},
+ [0x31DD]={d="on"},
+ [0x31DE]={d="on"},
+ [0x31DF]={d="on"},
+ [0x31E0]={d="on"},
+ [0x31E1]={d="on"},
+ [0x31E2]={d="on"},
+ [0x31E3]={d="on"},
+ [0x31EF]={d="on"},
+ [0x31F0]={d="l"},
+ [0x31F1]={d="l"},
+ [0x31F2]={d="l"},
+ [0x31F3]={d="l"},
+ [0x31F4]={d="l"},
+ [0x31F5]={d="l"},
+ [0x31F6]={d="l"},
+ [0x31F7]={d="l"},
+ [0x31F8]={d="l"},
+ [0x31F9]={d="l"},
+ [0x31FA]={d="l"},
+ [0x31FB]={d="l"},
+ [0x31FC]={d="l"},
+ [0x31FD]={d="l"},
+ [0x31FE]={d="l"},
+ [0x31FF]={d="l"},
+ [0x3200]={d="l"},
+ [0x3201]={d="l"},
+ [0x3202]={d="l"},
+ [0x3203]={d="l"},
+ [0x3204]={d="l"},
+ [0x3205]={d="l"},
+ [0x3206]={d="l"},
+ [0x3207]={d="l"},
+ [0x3208]={d="l"},
+ [0x3209]={d="l"},
+ [0x320A]={d="l"},
+ [0x320B]={d="l"},
+ [0x320C]={d="l"},
+ [0x320D]={d="l"},
+ [0x320E]={d="l"},
+ [0x320F]={d="l"},
+ [0x3210]={d="l"},
+ [0x3211]={d="l"},
+ [0x3212]={d="l"},
+ [0x3213]={d="l"},
+ [0x3214]={d="l"},
+ [0x3215]={d="l"},
+ [0x3216]={d="l"},
+ [0x3217]={d="l"},
+ [0x3218]={d="l"},
+ [0x3219]={d="l"},
+ [0x321A]={d="l"},
+ [0x321B]={d="l"},
+ [0x321C]={d="l"},
+ [0x321D]={d="on"},
+ [0x321E]={d="on"},
+ [0x3220]={d="l"},
+ [0x3221]={d="l"},
+ [0x3222]={d="l"},
+ [0x3223]={d="l"},
+ [0x3224]={d="l"},
+ [0x3225]={d="l"},
+ [0x3226]={d="l"},
+ [0x3227]={d="l"},
+ [0x3228]={d="l"},
+ [0x3229]={d="l"},
+ [0x322A]={d="l"},
+ [0x322B]={d="l"},
+ [0x322C]={d="l"},
+ [0x322D]={d="l"},
+ [0x322E]={d="l"},
+ [0x322F]={d="l"},
+ [0x3230]={d="l"},
+ [0x3231]={d="l"},
+ [0x3232]={d="l"},
+ [0x3233]={d="l"},
+ [0x3234]={d="l"},
+ [0x3235]={d="l"},
+ [0x3236]={d="l"},
+ [0x3237]={d="l"},
+ [0x3238]={d="l"},
+ [0x3239]={d="l"},
+ [0x323A]={d="l"},
+ [0x323B]={d="l"},
+ [0x323C]={d="l"},
+ [0x323D]={d="l"},
+ [0x323E]={d="l"},
+ [0x323F]={d="l"},
+ [0x3240]={d="l"},
+ [0x3241]={d="l"},
+ [0x3242]={d="l"},
+ [0x3243]={d="l"},
+ [0x3244]={d="l"},
+ [0x3245]={d="l"},
+ [0x3246]={d="l"},
+ [0x3247]={d="l"},
+ [0x3248]={d="l"},
+ [0x3249]={d="l"},
+ [0x324A]={d="l"},
+ [0x324B]={d="l"},
+ [0x324C]={d="l"},
+ [0x324D]={d="l"},
+ [0x324E]={d="l"},
+ [0x324F]={d="l"},
+ [0x3250]={d="on"},
+ [0x3251]={d="on"},
+ [0x3252]={d="on"},
+ [0x3253]={d="on"},
+ [0x3254]={d="on"},
+ [0x3255]={d="on"},
+ [0x3256]={d="on"},
+ [0x3257]={d="on"},
+ [0x3258]={d="on"},
+ [0x3259]={d="on"},
+ [0x325A]={d="on"},
+ [0x325B]={d="on"},
+ [0x325C]={d="on"},
+ [0x325D]={d="on"},
+ [0x325E]={d="on"},
+ [0x325F]={d="on"},
+ [0x3260]={d="l"},
+ [0x3261]={d="l"},
+ [0x3262]={d="l"},
+ [0x3263]={d="l"},
+ [0x3264]={d="l"},
+ [0x3265]={d="l"},
+ [0x3266]={d="l"},
+ [0x3267]={d="l"},
+ [0x3268]={d="l"},
+ [0x3269]={d="l"},
+ [0x326A]={d="l"},
+ [0x326B]={d="l"},
+ [0x326C]={d="l"},
+ [0x326D]={d="l"},
+ [0x326E]={d="l"},
+ [0x326F]={d="l"},
+ [0x3270]={d="l"},
+ [0x3271]={d="l"},
+ [0x3272]={d="l"},
+ [0x3273]={d="l"},
+ [0x3274]={d="l"},
+ [0x3275]={d="l"},
+ [0x3276]={d="l"},
+ [0x3277]={d="l"},
+ [0x3278]={d="l"},
+ [0x3279]={d="l"},
+ [0x327A]={d="l"},
+ [0x327B]={d="l"},
+ [0x327C]={d="on"},
+ [0x327D]={d="on"},
+ [0x327E]={d="on"},
+ [0x327F]={d="l"},
+ [0x3280]={d="l"},
+ [0x3281]={d="l"},
+ [0x3282]={d="l"},
+ [0x3283]={d="l"},
+ [0x3284]={d="l"},
+ [0x3285]={d="l"},
+ [0x3286]={d="l"},
+ [0x3287]={d="l"},
+ [0x3288]={d="l"},
+ [0x3289]={d="l"},
+ [0x328A]={d="l"},
+ [0x328B]={d="l"},
+ [0x328C]={d="l"},
+ [0x328D]={d="l"},
+ [0x328E]={d="l"},
+ [0x328F]={d="l"},
+ [0x3290]={d="l"},
+ [0x3291]={d="l"},
+ [0x3292]={d="l"},
+ [0x3293]={d="l"},
+ [0x3294]={d="l"},
+ [0x3295]={d="l"},
+ [0x3296]={d="l"},
+ [0x3297]={d="l"},
+ [0x3298]={d="l"},
+ [0x3299]={d="l"},
+ [0x329A]={d="l"},
+ [0x329B]={d="l"},
+ [0x329C]={d="l"},
+ [0x329D]={d="l"},
+ [0x329E]={d="l"},
+ [0x329F]={d="l"},
+ [0x32A0]={d="l"},
+ [0x32A1]={d="l"},
+ [0x32A2]={d="l"},
+ [0x32A3]={d="l"},
+ [0x32A4]={d="l"},
+ [0x32A5]={d="l"},
+ [0x32A6]={d="l"},
+ [0x32A7]={d="l"},
+ [0x32A8]={d="l"},
+ [0x32A9]={d="l"},
+ [0x32AA]={d="l"},
+ [0x32AB]={d="l"},
+ [0x32AC]={d="l"},
+ [0x32AD]={d="l"},
+ [0x32AE]={d="l"},
+ [0x32AF]={d="l"},
+ [0x32B0]={d="l"},
+ [0x32B1]={d="on"},
+ [0x32B2]={d="on"},
+ [0x32B3]={d="on"},
+ [0x32B4]={d="on"},
+ [0x32B5]={d="on"},
+ [0x32B6]={d="on"},
+ [0x32B7]={d="on"},
+ [0x32B8]={d="on"},
+ [0x32B9]={d="on"},
+ [0x32BA]={d="on"},
+ [0x32BB]={d="on"},
+ [0x32BC]={d="on"},
+ [0x32BD]={d="on"},
+ [0x32BE]={d="on"},
+ [0x32BF]={d="on"},
+ [0x32C0]={d="l"},
+ [0x32C1]={d="l"},
+ [0x32C2]={d="l"},
+ [0x32C3]={d="l"},
+ [0x32C4]={d="l"},
+ [0x32C5]={d="l"},
+ [0x32C6]={d="l"},
+ [0x32C7]={d="l"},
+ [0x32C8]={d="l"},
+ [0x32C9]={d="l"},
+ [0x32CA]={d="l"},
+ [0x32CB]={d="l"},
+ [0x32CC]={d="on"},
+ [0x32CD]={d="on"},
+ [0x32CE]={d="on"},
+ [0x32CF]={d="on"},
+ [0x32D0]={d="l"},
+ [0x32D1]={d="l"},
+ [0x32D2]={d="l"},
+ [0x32D3]={d="l"},
+ [0x32D4]={d="l"},
+ [0x32D5]={d="l"},
+ [0x32D6]={d="l"},
+ [0x32D7]={d="l"},
+ [0x32D8]={d="l"},
+ [0x32D9]={d="l"},
+ [0x32DA]={d="l"},
+ [0x32DB]={d="l"},
+ [0x32DC]={d="l"},
+ [0x32DD]={d="l"},
+ [0x32DE]={d="l"},
+ [0x32DF]={d="l"},
+ [0x32E0]={d="l"},
+ [0x32E1]={d="l"},
+ [0x32E2]={d="l"},
+ [0x32E3]={d="l"},
+ [0x32E4]={d="l"},
+ [0x32E5]={d="l"},
+ [0x32E6]={d="l"},
+ [0x32E7]={d="l"},
+ [0x32E8]={d="l"},
+ [0x32E9]={d="l"},
+ [0x32EA]={d="l"},
+ [0x32EB]={d="l"},
+ [0x32EC]={d="l"},
+ [0x32ED]={d="l"},
+ [0x32EE]={d="l"},
+ [0x32EF]={d="l"},
+ [0x32F0]={d="l"},
+ [0x32F1]={d="l"},
+ [0x32F2]={d="l"},
+ [0x32F3]={d="l"},
+ [0x32F4]={d="l"},
+ [0x32F5]={d="l"},
+ [0x32F6]={d="l"},
+ [0x32F7]={d="l"},
+ [0x32F8]={d="l"},
+ [0x32F9]={d="l"},
+ [0x32FA]={d="l"},
+ [0x32FB]={d="l"},
+ [0x32FC]={d="l"},
+ [0x32FD]={d="l"},
+ [0x32FE]={d="l"},
+ [0x32FF]={d="l"},
+ [0x3300]={d="l"},
+ [0x3301]={d="l"},
+ [0x3302]={d="l"},
+ [0x3303]={d="l"},
+ [0x3304]={d="l"},
+ [0x3305]={d="l"},
+ [0x3306]={d="l"},
+ [0x3307]={d="l"},
+ [0x3308]={d="l"},
+ [0x3309]={d="l"},
+ [0x330A]={d="l"},
+ [0x330B]={d="l"},
+ [0x330C]={d="l"},
+ [0x330D]={d="l"},
+ [0x330E]={d="l"},
+ [0x330F]={d="l"},
+ [0x3310]={d="l"},
+ [0x3311]={d="l"},
+ [0x3312]={d="l"},
+ [0x3313]={d="l"},
+ [0x3314]={d="l"},
+ [0x3315]={d="l"},
+ [0x3316]={d="l"},
+ [0x3317]={d="l"},
+ [0x3318]={d="l"},
+ [0x3319]={d="l"},
+ [0x331A]={d="l"},
+ [0x331B]={d="l"},
+ [0x331C]={d="l"},
+ [0x331D]={d="l"},
+ [0x331E]={d="l"},
+ [0x331F]={d="l"},
+ [0x3320]={d="l"},
+ [0x3321]={d="l"},
+ [0x3322]={d="l"},
+ [0x3323]={d="l"},
+ [0x3324]={d="l"},
+ [0x3325]={d="l"},
+ [0x3326]={d="l"},
+ [0x3327]={d="l"},
+ [0x3328]={d="l"},
+ [0x3329]={d="l"},
+ [0x332A]={d="l"},
+ [0x332B]={d="l"},
+ [0x332C]={d="l"},
+ [0x332D]={d="l"},
+ [0x332E]={d="l"},
+ [0x332F]={d="l"},
+ [0x3330]={d="l"},
+ [0x3331]={d="l"},
+ [0x3332]={d="l"},
+ [0x3333]={d="l"},
+ [0x3334]={d="l"},
+ [0x3335]={d="l"},
+ [0x3336]={d="l"},
+ [0x3337]={d="l"},
+ [0x3338]={d="l"},
+ [0x3339]={d="l"},
+ [0x333A]={d="l"},
+ [0x333B]={d="l"},
+ [0x333C]={d="l"},
+ [0x333D]={d="l"},
+ [0x333E]={d="l"},
+ [0x333F]={d="l"},
+ [0x3340]={d="l"},
+ [0x3341]={d="l"},
+ [0x3342]={d="l"},
+ [0x3343]={d="l"},
+ [0x3344]={d="l"},
+ [0x3345]={d="l"},
+ [0x3346]={d="l"},
+ [0x3347]={d="l"},
+ [0x3348]={d="l"},
+ [0x3349]={d="l"},
+ [0x334A]={d="l"},
+ [0x334B]={d="l"},
+ [0x334C]={d="l"},
+ [0x334D]={d="l"},
+ [0x334E]={d="l"},
+ [0x334F]={d="l"},
+ [0x3350]={d="l"},
+ [0x3351]={d="l"},
+ [0x3352]={d="l"},
+ [0x3353]={d="l"},
+ [0x3354]={d="l"},
+ [0x3355]={d="l"},
+ [0x3356]={d="l"},
+ [0x3357]={d="l"},
+ [0x3358]={d="l"},
+ [0x3359]={d="l"},
+ [0x335A]={d="l"},
+ [0x335B]={d="l"},
+ [0x335C]={d="l"},
+ [0x335D]={d="l"},
+ [0x335E]={d="l"},
+ [0x335F]={d="l"},
+ [0x3360]={d="l"},
+ [0x3361]={d="l"},
+ [0x3362]={d="l"},
+ [0x3363]={d="l"},
+ [0x3364]={d="l"},
+ [0x3365]={d="l"},
+ [0x3366]={d="l"},
+ [0x3367]={d="l"},
+ [0x3368]={d="l"},
+ [0x3369]={d="l"},
+ [0x336A]={d="l"},
+ [0x336B]={d="l"},
+ [0x336C]={d="l"},
+ [0x336D]={d="l"},
+ [0x336E]={d="l"},
+ [0x336F]={d="l"},
+ [0x3370]={d="l"},
+ [0x3371]={d="l"},
+ [0x3372]={d="l"},
+ [0x3373]={d="l"},
+ [0x3374]={d="l"},
+ [0x3375]={d="l"},
+ [0x3376]={d="l"},
+ [0x3377]={d="on"},
+ [0x3378]={d="on"},
+ [0x3379]={d="on"},
+ [0x337A]={d="on"},
+ [0x337B]={d="l"},
+ [0x337C]={d="l"},
+ [0x337D]={d="l"},
+ [0x337E]={d="l"},
+ [0x337F]={d="l"},
+ [0x3380]={d="l"},
+ [0x3381]={d="l"},
+ [0x3382]={d="l"},
+ [0x3383]={d="l"},
+ [0x3384]={d="l"},
+ [0x3385]={d="l"},
+ [0x3386]={d="l"},
+ [0x3387]={d="l"},
+ [0x3388]={d="l"},
+ [0x3389]={d="l"},
+ [0x338A]={d="l"},
+ [0x338B]={d="l"},
+ [0x338C]={d="l"},
+ [0x338D]={d="l"},
+ [0x338E]={d="l"},
+ [0x338F]={d="l"},
+ [0x3390]={d="l"},
+ [0x3391]={d="l"},
+ [0x3392]={d="l"},
+ [0x3393]={d="l"},
+ [0x3394]={d="l"},
+ [0x3395]={d="l"},
+ [0x3396]={d="l"},
+ [0x3397]={d="l"},
+ [0x3398]={d="l"},
+ [0x3399]={d="l"},
+ [0x339A]={d="l"},
+ [0x339B]={d="l"},
+ [0x339C]={d="l"},
+ [0x339D]={d="l"},
+ [0x339E]={d="l"},
+ [0x339F]={d="l"},
+ [0x33A0]={d="l"},
+ [0x33A1]={d="l"},
+ [0x33A2]={d="l"},
+ [0x33A3]={d="l"},
+ [0x33A4]={d="l"},
+ [0x33A5]={d="l"},
+ [0x33A6]={d="l"},
+ [0x33A7]={d="l"},
+ [0x33A8]={d="l"},
+ [0x33A9]={d="l"},
+ [0x33AA]={d="l"},
+ [0x33AB]={d="l"},
+ [0x33AC]={d="l"},
+ [0x33AD]={d="l"},
+ [0x33AE]={d="l"},
+ [0x33AF]={d="l"},
+ [0x33B0]={d="l"},
+ [0x33B1]={d="l"},
+ [0x33B2]={d="l"},
+ [0x33B3]={d="l"},
+ [0x33B4]={d="l"},
+ [0x33B5]={d="l"},
+ [0x33B6]={d="l"},
+ [0x33B7]={d="l"},
+ [0x33B8]={d="l"},
+ [0x33B9]={d="l"},
+ [0x33BA]={d="l"},
+ [0x33BB]={d="l"},
+ [0x33BC]={d="l"},
+ [0x33BD]={d="l"},
+ [0x33BE]={d="l"},
+ [0x33BF]={d="l"},
+ [0x33C0]={d="l"},
+ [0x33C1]={d="l"},
+ [0x33C2]={d="l"},
+ [0x33C3]={d="l"},
+ [0x33C4]={d="l"},
+ [0x33C5]={d="l"},
+ [0x33C6]={d="l"},
+ [0x33C7]={d="l"},
+ [0x33C8]={d="l"},
+ [0x33C9]={d="l"},
+ [0x33CA]={d="l"},
+ [0x33CB]={d="l"},
+ [0x33CC]={d="l"},
+ [0x33CD]={d="l"},
+ [0x33CE]={d="l"},
+ [0x33CF]={d="l"},
+ [0x33D0]={d="l"},
+ [0x33D1]={d="l"},
+ [0x33D2]={d="l"},
+ [0x33D3]={d="l"},
+ [0x33D4]={d="l"},
+ [0x33D5]={d="l"},
+ [0x33D6]={d="l"},
+ [0x33D7]={d="l"},
+ [0x33D8]={d="l"},
+ [0x33D9]={d="l"},
+ [0x33DA]={d="l"},
+ [0x33DB]={d="l"},
+ [0x33DC]={d="l"},
+ [0x33DD]={d="l"},
+ [0x33DE]={d="on"},
+ [0x33DF]={d="on"},
+ [0x33E0]={d="l"},
+ [0x33E1]={d="l"},
+ [0x33E2]={d="l"},
+ [0x33E3]={d="l"},
+ [0x33E4]={d="l"},
+ [0x33E5]={d="l"},
+ [0x33E6]={d="l"},
+ [0x33E7]={d="l"},
+ [0x33E8]={d="l"},
+ [0x33E9]={d="l"},
+ [0x33EA]={d="l"},
+ [0x33EB]={d="l"},
+ [0x33EC]={d="l"},
+ [0x33ED]={d="l"},
+ [0x33EE]={d="l"},
+ [0x33EF]={d="l"},
+ [0x33F0]={d="l"},
+ [0x33F1]={d="l"},
+ [0x33F2]={d="l"},
+ [0x33F3]={d="l"},
+ [0x33F4]={d="l"},
+ [0x33F5]={d="l"},
+ [0x33F6]={d="l"},
+ [0x33F7]={d="l"},
+ [0x33F8]={d="l"},
+ [0x33F9]={d="l"},
+ [0x33FA]={d="l"},
+ [0x33FB]={d="l"},
+ [0x33FC]={d="l"},
+ [0x33FD]={d="l"},
+ [0x33FE]={d="l"},
+ [0x33FF]={d="on"},
+ [0x4DC0]={d="on"},
+ [0x4DC1]={d="on"},
+ [0x4DC2]={d="on"},
+ [0x4DC3]={d="on"},
+ [0x4DC4]={d="on"},
+ [0x4DC5]={d="on"},
+ [0x4DC6]={d="on"},
+ [0x4DC7]={d="on"},
+ [0x4DC8]={d="on"},
+ [0x4DC9]={d="on"},
+ [0x4DCA]={d="on"},
+ [0x4DCB]={d="on"},
+ [0x4DCC]={d="on"},
+ [0x4DCD]={d="on"},
+ [0x4DCE]={d="on"},
+ [0x4DCF]={d="on"},
+ [0x4DD0]={d="on"},
+ [0x4DD1]={d="on"},
+ [0x4DD2]={d="on"},
+ [0x4DD3]={d="on"},
+ [0x4DD4]={d="on"},
+ [0x4DD5]={d="on"},
+ [0x4DD6]={d="on"},
+ [0x4DD7]={d="on"},
+ [0x4DD8]={d="on"},
+ [0x4DD9]={d="on"},
+ [0x4DDA]={d="on"},
+ [0x4DDB]={d="on"},
+ [0x4DDC]={d="on"},
+ [0x4DDD]={d="on"},
+ [0x4DDE]={d="on"},
+ [0x4DDF]={d="on"},
+ [0x4DE0]={d="on"},
+ [0x4DE1]={d="on"},
+ [0x4DE2]={d="on"},
+ [0x4DE3]={d="on"},
+ [0x4DE4]={d="on"},
+ [0x4DE5]={d="on"},
+ [0x4DE6]={d="on"},
+ [0x4DE7]={d="on"},
+ [0x4DE8]={d="on"},
+ [0x4DE9]={d="on"},
+ [0x4DEA]={d="on"},
+ [0x4DEB]={d="on"},
+ [0x4DEC]={d="on"},
+ [0x4DED]={d="on"},
+ [0x4DEE]={d="on"},
+ [0x4DEF]={d="on"},
+ [0x4DF0]={d="on"},
+ [0x4DF1]={d="on"},
+ [0x4DF2]={d="on"},
+ [0x4DF3]={d="on"},
+ [0x4DF4]={d="on"},
+ [0x4DF5]={d="on"},
+ [0x4DF6]={d="on"},
+ [0x4DF7]={d="on"},
+ [0x4DF8]={d="on"},
+ [0x4DF9]={d="on"},
+ [0x4DFA]={d="on"},
+ [0x4DFB]={d="on"},
+ [0x4DFC]={d="on"},
+ [0x4DFD]={d="on"},
+ [0x4DFE]={d="on"},
+ [0x4DFF]={d="on"},
+ [0xA000]={d="l"},
+ [0xA001]={d="l"},
+ [0xA002]={d="l"},
+ [0xA003]={d="l"},
+ [0xA004]={d="l"},
+ [0xA005]={d="l"},
+ [0xA006]={d="l"},
+ [0xA007]={d="l"},
+ [0xA008]={d="l"},
+ [0xA009]={d="l"},
+ [0xA00A]={d="l"},
+ [0xA00B]={d="l"},
+ [0xA00C]={d="l"},
+ [0xA00D]={d="l"},
+ [0xA00E]={d="l"},
+ [0xA00F]={d="l"},
+ [0xA010]={d="l"},
+ [0xA011]={d="l"},
+ [0xA012]={d="l"},
+ [0xA013]={d="l"},
+ [0xA014]={d="l"},
+ [0xA015]={d="l"},
+ [0xA016]={d="l"},
+ [0xA017]={d="l"},
+ [0xA018]={d="l"},
+ [0xA019]={d="l"},
+ [0xA01A]={d="l"},
+ [0xA01B]={d="l"},
+ [0xA01C]={d="l"},
+ [0xA01D]={d="l"},
+ [0xA01E]={d="l"},
+ [0xA01F]={d="l"},
+ [0xA020]={d="l"},
+ [0xA021]={d="l"},
+ [0xA022]={d="l"},
+ [0xA023]={d="l"},
+ [0xA024]={d="l"},
+ [0xA025]={d="l"},
+ [0xA026]={d="l"},
+ [0xA027]={d="l"},
+ [0xA028]={d="l"},
+ [0xA029]={d="l"},
+ [0xA02A]={d="l"},
+ [0xA02B]={d="l"},
+ [0xA02C]={d="l"},
+ [0xA02D]={d="l"},
+ [0xA02E]={d="l"},
+ [0xA02F]={d="l"},
+ [0xA030]={d="l"},
+ [0xA031]={d="l"},
+ [0xA032]={d="l"},
+ [0xA033]={d="l"},
+ [0xA034]={d="l"},
+ [0xA035]={d="l"},
+ [0xA036]={d="l"},
+ [0xA037]={d="l"},
+ [0xA038]={d="l"},
+ [0xA039]={d="l"},
+ [0xA03A]={d="l"},
+ [0xA03B]={d="l"},
+ [0xA03C]={d="l"},
+ [0xA03D]={d="l"},
+ [0xA03E]={d="l"},
+ [0xA03F]={d="l"},
+ [0xA040]={d="l"},
+ [0xA041]={d="l"},
+ [0xA042]={d="l"},
+ [0xA043]={d="l"},
+ [0xA044]={d="l"},
+ [0xA045]={d="l"},
+ [0xA046]={d="l"},
+ [0xA047]={d="l"},
+ [0xA048]={d="l"},
+ [0xA049]={d="l"},
+ [0xA04A]={d="l"},
+ [0xA04B]={d="l"},
+ [0xA04C]={d="l"},
+ [0xA04D]={d="l"},
+ [0xA04E]={d="l"},
+ [0xA04F]={d="l"},
+ [0xA050]={d="l"},
+ [0xA051]={d="l"},
+ [0xA052]={d="l"},
+ [0xA053]={d="l"},
+ [0xA054]={d="l"},
+ [0xA055]={d="l"},
+ [0xA056]={d="l"},
+ [0xA057]={d="l"},
+ [0xA058]={d="l"},
+ [0xA059]={d="l"},
+ [0xA05A]={d="l"},
+ [0xA05B]={d="l"},
+ [0xA05C]={d="l"},
+ [0xA05D]={d="l"},
+ [0xA05E]={d="l"},
+ [0xA05F]={d="l"},
+ [0xA060]={d="l"},
+ [0xA061]={d="l"},
+ [0xA062]={d="l"},
+ [0xA063]={d="l"},
+ [0xA064]={d="l"},
+ [0xA065]={d="l"},
+ [0xA066]={d="l"},
+ [0xA067]={d="l"},
+ [0xA068]={d="l"},
+ [0xA069]={d="l"},
+ [0xA06A]={d="l"},
+ [0xA06B]={d="l"},
+ [0xA06C]={d="l"},
+ [0xA06D]={d="l"},
+ [0xA06E]={d="l"},
+ [0xA06F]={d="l"},
+ [0xA070]={d="l"},
+ [0xA071]={d="l"},
+ [0xA072]={d="l"},
+ [0xA073]={d="l"},
+ [0xA074]={d="l"},
+ [0xA075]={d="l"},
+ [0xA076]={d="l"},
+ [0xA077]={d="l"},
+ [0xA078]={d="l"},
+ [0xA079]={d="l"},
+ [0xA07A]={d="l"},
+ [0xA07B]={d="l"},
+ [0xA07C]={d="l"},
+ [0xA07D]={d="l"},
+ [0xA07E]={d="l"},
+ [0xA07F]={d="l"},
+ [0xA080]={d="l"},
+ [0xA081]={d="l"},
+ [0xA082]={d="l"},
+ [0xA083]={d="l"},
+ [0xA084]={d="l"},
+ [0xA085]={d="l"},
+ [0xA086]={d="l"},
+ [0xA087]={d="l"},
+ [0xA088]={d="l"},
+ [0xA089]={d="l"},
+ [0xA08A]={d="l"},
+ [0xA08B]={d="l"},
+ [0xA08C]={d="l"},
+ [0xA08D]={d="l"},
+ [0xA08E]={d="l"},
+ [0xA08F]={d="l"},
+ [0xA090]={d="l"},
+ [0xA091]={d="l"},
+ [0xA092]={d="l"},
+ [0xA093]={d="l"},
+ [0xA094]={d="l"},
+ [0xA095]={d="l"},
+ [0xA096]={d="l"},
+ [0xA097]={d="l"},
+ [0xA098]={d="l"},
+ [0xA099]={d="l"},
+ [0xA09A]={d="l"},
+ [0xA09B]={d="l"},
+ [0xA09C]={d="l"},
+ [0xA09D]={d="l"},
+ [0xA09E]={d="l"},
+ [0xA09F]={d="l"},
+ [0xA0A0]={d="l"},
+ [0xA0A1]={d="l"},
+ [0xA0A2]={d="l"},
+ [0xA0A3]={d="l"},
+ [0xA0A4]={d="l"},
+ [0xA0A5]={d="l"},
+ [0xA0A6]={d="l"},
+ [0xA0A7]={d="l"},
+ [0xA0A8]={d="l"},
+ [0xA0A9]={d="l"},
+ [0xA0AA]={d="l"},
+ [0xA0AB]={d="l"},
+ [0xA0AC]={d="l"},
+ [0xA0AD]={d="l"},
+ [0xA0AE]={d="l"},
+ [0xA0AF]={d="l"},
+ [0xA0B0]={d="l"},
+ [0xA0B1]={d="l"},
+ [0xA0B2]={d="l"},
+ [0xA0B3]={d="l"},
+ [0xA0B4]={d="l"},
+ [0xA0B5]={d="l"},
+ [0xA0B6]={d="l"},
+ [0xA0B7]={d="l"},
+ [0xA0B8]={d="l"},
+ [0xA0B9]={d="l"},
+ [0xA0BA]={d="l"},
+ [0xA0BB]={d="l"},
+ [0xA0BC]={d="l"},
+ [0xA0BD]={d="l"},
+ [0xA0BE]={d="l"},
+ [0xA0BF]={d="l"},
+ [0xA0C0]={d="l"},
+ [0xA0C1]={d="l"},
+ [0xA0C2]={d="l"},
+ [0xA0C3]={d="l"},
+ [0xA0C4]={d="l"},
+ [0xA0C5]={d="l"},
+ [0xA0C6]={d="l"},
+ [0xA0C7]={d="l"},
+ [0xA0C8]={d="l"},
+ [0xA0C9]={d="l"},
+ [0xA0CA]={d="l"},
+ [0xA0CB]={d="l"},
+ [0xA0CC]={d="l"},
+ [0xA0CD]={d="l"},
+ [0xA0CE]={d="l"},
+ [0xA0CF]={d="l"},
+ [0xA0D0]={d="l"},
+ [0xA0D1]={d="l"},
+ [0xA0D2]={d="l"},
+ [0xA0D3]={d="l"},
+ [0xA0D4]={d="l"},
+ [0xA0D5]={d="l"},
+ [0xA0D6]={d="l"},
+ [0xA0D7]={d="l"},
+ [0xA0D8]={d="l"},
+ [0xA0D9]={d="l"},
+ [0xA0DA]={d="l"},
+ [0xA0DB]={d="l"},
+ [0xA0DC]={d="l"},
+ [0xA0DD]={d="l"},
+ [0xA0DE]={d="l"},
+ [0xA0DF]={d="l"},
+ [0xA0E0]={d="l"},
+ [0xA0E1]={d="l"},
+ [0xA0E2]={d="l"},
+ [0xA0E3]={d="l"},
+ [0xA0E4]={d="l"},
+ [0xA0E5]={d="l"},
+ [0xA0E6]={d="l"},
+ [0xA0E7]={d="l"},
+ [0xA0E8]={d="l"},
+ [0xA0E9]={d="l"},
+ [0xA0EA]={d="l"},
+ [0xA0EB]={d="l"},
+ [0xA0EC]={d="l"},
+ [0xA0ED]={d="l"},
+ [0xA0EE]={d="l"},
+ [0xA0EF]={d="l"},
+ [0xA0F0]={d="l"},
+ [0xA0F1]={d="l"},
+ [0xA0F2]={d="l"},
+ [0xA0F3]={d="l"},
+ [0xA0F4]={d="l"},
+ [0xA0F5]={d="l"},
+ [0xA0F6]={d="l"},
+ [0xA0F7]={d="l"},
+ [0xA0F8]={d="l"},
+ [0xA0F9]={d="l"},
+ [0xA0FA]={d="l"},
+ [0xA0FB]={d="l"},
+ [0xA0FC]={d="l"},
+ [0xA0FD]={d="l"},
+ [0xA0FE]={d="l"},
+ [0xA0FF]={d="l"},
+ [0xA100]={d="l"},
+ [0xA101]={d="l"},
+ [0xA102]={d="l"},
+ [0xA103]={d="l"},
+ [0xA104]={d="l"},
+ [0xA105]={d="l"},
+ [0xA106]={d="l"},
+ [0xA107]={d="l"},
+ [0xA108]={d="l"},
+ [0xA109]={d="l"},
+ [0xA10A]={d="l"},
+ [0xA10B]={d="l"},
+ [0xA10C]={d="l"},
+ [0xA10D]={d="l"},
+ [0xA10E]={d="l"},
+ [0xA10F]={d="l"},
+ [0xA110]={d="l"},
+ [0xA111]={d="l"},
+ [0xA112]={d="l"},
+ [0xA113]={d="l"},
+ [0xA114]={d="l"},
+ [0xA115]={d="l"},
+ [0xA116]={d="l"},
+ [0xA117]={d="l"},
+ [0xA118]={d="l"},
+ [0xA119]={d="l"},
+ [0xA11A]={d="l"},
+ [0xA11B]={d="l"},
+ [0xA11C]={d="l"},
+ [0xA11D]={d="l"},
+ [0xA11E]={d="l"},
+ [0xA11F]={d="l"},
+ [0xA120]={d="l"},
+ [0xA121]={d="l"},
+ [0xA122]={d="l"},
+ [0xA123]={d="l"},
+ [0xA124]={d="l"},
+ [0xA125]={d="l"},
+ [0xA126]={d="l"},
+ [0xA127]={d="l"},
+ [0xA128]={d="l"},
+ [0xA129]={d="l"},
+ [0xA12A]={d="l"},
+ [0xA12B]={d="l"},
+ [0xA12C]={d="l"},
+ [0xA12D]={d="l"},
+ [0xA12E]={d="l"},
+ [0xA12F]={d="l"},
+ [0xA130]={d="l"},
+ [0xA131]={d="l"},
+ [0xA132]={d="l"},
+ [0xA133]={d="l"},
+ [0xA134]={d="l"},
+ [0xA135]={d="l"},
+ [0xA136]={d="l"},
+ [0xA137]={d="l"},
+ [0xA138]={d="l"},
+ [0xA139]={d="l"},
+ [0xA13A]={d="l"},
+ [0xA13B]={d="l"},
+ [0xA13C]={d="l"},
+ [0xA13D]={d="l"},
+ [0xA13E]={d="l"},
+ [0xA13F]={d="l"},
+ [0xA140]={d="l"},
+ [0xA141]={d="l"},
+ [0xA142]={d="l"},
+ [0xA143]={d="l"},
+ [0xA144]={d="l"},
+ [0xA145]={d="l"},
+ [0xA146]={d="l"},
+ [0xA147]={d="l"},
+ [0xA148]={d="l"},
+ [0xA149]={d="l"},
+ [0xA14A]={d="l"},
+ [0xA14B]={d="l"},
+ [0xA14C]={d="l"},
+ [0xA14D]={d="l"},
+ [0xA14E]={d="l"},
+ [0xA14F]={d="l"},
+ [0xA150]={d="l"},
+ [0xA151]={d="l"},
+ [0xA152]={d="l"},
+ [0xA153]={d="l"},
+ [0xA154]={d="l"},
+ [0xA155]={d="l"},
+ [0xA156]={d="l"},
+ [0xA157]={d="l"},
+ [0xA158]={d="l"},
+ [0xA159]={d="l"},
+ [0xA15A]={d="l"},
+ [0xA15B]={d="l"},
+ [0xA15C]={d="l"},
+ [0xA15D]={d="l"},
+ [0xA15E]={d="l"},
+ [0xA15F]={d="l"},
+ [0xA160]={d="l"},
+ [0xA161]={d="l"},
+ [0xA162]={d="l"},
+ [0xA163]={d="l"},
+ [0xA164]={d="l"},
+ [0xA165]={d="l"},
+ [0xA166]={d="l"},
+ [0xA167]={d="l"},
+ [0xA168]={d="l"},
+ [0xA169]={d="l"},
+ [0xA16A]={d="l"},
+ [0xA16B]={d="l"},
+ [0xA16C]={d="l"},
+ [0xA16D]={d="l"},
+ [0xA16E]={d="l"},
+ [0xA16F]={d="l"},
+ [0xA170]={d="l"},
+ [0xA171]={d="l"},
+ [0xA172]={d="l"},
+ [0xA173]={d="l"},
+ [0xA174]={d="l"},
+ [0xA175]={d="l"},
+ [0xA176]={d="l"},
+ [0xA177]={d="l"},
+ [0xA178]={d="l"},
+ [0xA179]={d="l"},
+ [0xA17A]={d="l"},
+ [0xA17B]={d="l"},
+ [0xA17C]={d="l"},
+ [0xA17D]={d="l"},
+ [0xA17E]={d="l"},
+ [0xA17F]={d="l"},
+ [0xA180]={d="l"},
+ [0xA181]={d="l"},
+ [0xA182]={d="l"},
+ [0xA183]={d="l"},
+ [0xA184]={d="l"},
+ [0xA185]={d="l"},
+ [0xA186]={d="l"},
+ [0xA187]={d="l"},
+ [0xA188]={d="l"},
+ [0xA189]={d="l"},
+ [0xA18A]={d="l"},
+ [0xA18B]={d="l"},
+ [0xA18C]={d="l"},
+ [0xA18D]={d="l"},
+ [0xA18E]={d="l"},
+ [0xA18F]={d="l"},
+ [0xA190]={d="l"},
+ [0xA191]={d="l"},
+ [0xA192]={d="l"},
+ [0xA193]={d="l"},
+ [0xA194]={d="l"},
+ [0xA195]={d="l"},
+ [0xA196]={d="l"},
+ [0xA197]={d="l"},
+ [0xA198]={d="l"},
+ [0xA199]={d="l"},
+ [0xA19A]={d="l"},
+ [0xA19B]={d="l"},
+ [0xA19C]={d="l"},
+ [0xA19D]={d="l"},
+ [0xA19E]={d="l"},
+ [0xA19F]={d="l"},
+ [0xA1A0]={d="l"},
+ [0xA1A1]={d="l"},
+ [0xA1A2]={d="l"},
+ [0xA1A3]={d="l"},
+ [0xA1A4]={d="l"},
+ [0xA1A5]={d="l"},
+ [0xA1A6]={d="l"},
+ [0xA1A7]={d="l"},
+ [0xA1A8]={d="l"},
+ [0xA1A9]={d="l"},
+ [0xA1AA]={d="l"},
+ [0xA1AB]={d="l"},
+ [0xA1AC]={d="l"},
+ [0xA1AD]={d="l"},
+ [0xA1AE]={d="l"},
+ [0xA1AF]={d="l"},
+ [0xA1B0]={d="l"},
+ [0xA1B1]={d="l"},
+ [0xA1B2]={d="l"},
+ [0xA1B3]={d="l"},
+ [0xA1B4]={d="l"},
+ [0xA1B5]={d="l"},
+ [0xA1B6]={d="l"},
+ [0xA1B7]={d="l"},
+ [0xA1B8]={d="l"},
+ [0xA1B9]={d="l"},
+ [0xA1BA]={d="l"},
+ [0xA1BB]={d="l"},
+ [0xA1BC]={d="l"},
+ [0xA1BD]={d="l"},
+ [0xA1BE]={d="l"},
+ [0xA1BF]={d="l"},
+ [0xA1C0]={d="l"},
+ [0xA1C1]={d="l"},
+ [0xA1C2]={d="l"},
+ [0xA1C3]={d="l"},
+ [0xA1C4]={d="l"},
+ [0xA1C5]={d="l"},
+ [0xA1C6]={d="l"},
+ [0xA1C7]={d="l"},
+ [0xA1C8]={d="l"},
+ [0xA1C9]={d="l"},
+ [0xA1CA]={d="l"},
+ [0xA1CB]={d="l"},
+ [0xA1CC]={d="l"},
+ [0xA1CD]={d="l"},
+ [0xA1CE]={d="l"},
+ [0xA1CF]={d="l"},
+ [0xA1D0]={d="l"},
+ [0xA1D1]={d="l"},
+ [0xA1D2]={d="l"},
+ [0xA1D3]={d="l"},
+ [0xA1D4]={d="l"},
+ [0xA1D5]={d="l"},
+ [0xA1D6]={d="l"},
+ [0xA1D7]={d="l"},
+ [0xA1D8]={d="l"},
+ [0xA1D9]={d="l"},
+ [0xA1DA]={d="l"},
+ [0xA1DB]={d="l"},
+ [0xA1DC]={d="l"},
+ [0xA1DD]={d="l"},
+ [0xA1DE]={d="l"},
+ [0xA1DF]={d="l"},
+ [0xA1E0]={d="l"},
+ [0xA1E1]={d="l"},
+ [0xA1E2]={d="l"},
+ [0xA1E3]={d="l"},
+ [0xA1E4]={d="l"},
+ [0xA1E5]={d="l"},
+ [0xA1E6]={d="l"},
+ [0xA1E7]={d="l"},
+ [0xA1E8]={d="l"},
+ [0xA1E9]={d="l"},
+ [0xA1EA]={d="l"},
+ [0xA1EB]={d="l"},
+ [0xA1EC]={d="l"},
+ [0xA1ED]={d="l"},
+ [0xA1EE]={d="l"},
+ [0xA1EF]={d="l"},
+ [0xA1F0]={d="l"},
+ [0xA1F1]={d="l"},
+ [0xA1F2]={d="l"},
+ [0xA1F3]={d="l"},
+ [0xA1F4]={d="l"},
+ [0xA1F5]={d="l"},
+ [0xA1F6]={d="l"},
+ [0xA1F7]={d="l"},
+ [0xA1F8]={d="l"},
+ [0xA1F9]={d="l"},
+ [0xA1FA]={d="l"},
+ [0xA1FB]={d="l"},
+ [0xA1FC]={d="l"},
+ [0xA1FD]={d="l"},
+ [0xA1FE]={d="l"},
+ [0xA1FF]={d="l"},
+ [0xA200]={d="l"},
+ [0xA201]={d="l"},
+ [0xA202]={d="l"},
+ [0xA203]={d="l"},
+ [0xA204]={d="l"},
+ [0xA205]={d="l"},
+ [0xA206]={d="l"},
+ [0xA207]={d="l"},
+ [0xA208]={d="l"},
+ [0xA209]={d="l"},
+ [0xA20A]={d="l"},
+ [0xA20B]={d="l"},
+ [0xA20C]={d="l"},
+ [0xA20D]={d="l"},
+ [0xA20E]={d="l"},
+ [0xA20F]={d="l"},
+ [0xA210]={d="l"},
+ [0xA211]={d="l"},
+ [0xA212]={d="l"},
+ [0xA213]={d="l"},
+ [0xA214]={d="l"},
+ [0xA215]={d="l"},
+ [0xA216]={d="l"},
+ [0xA217]={d="l"},
+ [0xA218]={d="l"},
+ [0xA219]={d="l"},
+ [0xA21A]={d="l"},
+ [0xA21B]={d="l"},
+ [0xA21C]={d="l"},
+ [0xA21D]={d="l"},
+ [0xA21E]={d="l"},
+ [0xA21F]={d="l"},
+ [0xA220]={d="l"},
+ [0xA221]={d="l"},
+ [0xA222]={d="l"},
+ [0xA223]={d="l"},
+ [0xA224]={d="l"},
+ [0xA225]={d="l"},
+ [0xA226]={d="l"},
+ [0xA227]={d="l"},
+ [0xA228]={d="l"},
+ [0xA229]={d="l"},
+ [0xA22A]={d="l"},
+ [0xA22B]={d="l"},
+ [0xA22C]={d="l"},
+ [0xA22D]={d="l"},
+ [0xA22E]={d="l"},
+ [0xA22F]={d="l"},
+ [0xA230]={d="l"},
+ [0xA231]={d="l"},
+ [0xA232]={d="l"},
+ [0xA233]={d="l"},
+ [0xA234]={d="l"},
+ [0xA235]={d="l"},
+ [0xA236]={d="l"},
+ [0xA237]={d="l"},
+ [0xA238]={d="l"},
+ [0xA239]={d="l"},
+ [0xA23A]={d="l"},
+ [0xA23B]={d="l"},
+ [0xA23C]={d="l"},
+ [0xA23D]={d="l"},
+ [0xA23E]={d="l"},
+ [0xA23F]={d="l"},
+ [0xA240]={d="l"},
+ [0xA241]={d="l"},
+ [0xA242]={d="l"},
+ [0xA243]={d="l"},
+ [0xA244]={d="l"},
+ [0xA245]={d="l"},
+ [0xA246]={d="l"},
+ [0xA247]={d="l"},
+ [0xA248]={d="l"},
+ [0xA249]={d="l"},
+ [0xA24A]={d="l"},
+ [0xA24B]={d="l"},
+ [0xA24C]={d="l"},
+ [0xA24D]={d="l"},
+ [0xA24E]={d="l"},
+ [0xA24F]={d="l"},
+ [0xA250]={d="l"},
+ [0xA251]={d="l"},
+ [0xA252]={d="l"},
+ [0xA253]={d="l"},
+ [0xA254]={d="l"},
+ [0xA255]={d="l"},
+ [0xA256]={d="l"},
+ [0xA257]={d="l"},
+ [0xA258]={d="l"},
+ [0xA259]={d="l"},
+ [0xA25A]={d="l"},
+ [0xA25B]={d="l"},
+ [0xA25C]={d="l"},
+ [0xA25D]={d="l"},
+ [0xA25E]={d="l"},
+ [0xA25F]={d="l"},
+ [0xA260]={d="l"},
+ [0xA261]={d="l"},
+ [0xA262]={d="l"},
+ [0xA263]={d="l"},
+ [0xA264]={d="l"},
+ [0xA265]={d="l"},
+ [0xA266]={d="l"},
+ [0xA267]={d="l"},
+ [0xA268]={d="l"},
+ [0xA269]={d="l"},
+ [0xA26A]={d="l"},
+ [0xA26B]={d="l"},
+ [0xA26C]={d="l"},
+ [0xA26D]={d="l"},
+ [0xA26E]={d="l"},
+ [0xA26F]={d="l"},
+ [0xA270]={d="l"},
+ [0xA271]={d="l"},
+ [0xA272]={d="l"},
+ [0xA273]={d="l"},
+ [0xA274]={d="l"},
+ [0xA275]={d="l"},
+ [0xA276]={d="l"},
+ [0xA277]={d="l"},
+ [0xA278]={d="l"},
+ [0xA279]={d="l"},
+ [0xA27A]={d="l"},
+ [0xA27B]={d="l"},
+ [0xA27C]={d="l"},
+ [0xA27D]={d="l"},
+ [0xA27E]={d="l"},
+ [0xA27F]={d="l"},
+ [0xA280]={d="l"},
+ [0xA281]={d="l"},
+ [0xA282]={d="l"},
+ [0xA283]={d="l"},
+ [0xA284]={d="l"},
+ [0xA285]={d="l"},
+ [0xA286]={d="l"},
+ [0xA287]={d="l"},
+ [0xA288]={d="l"},
+ [0xA289]={d="l"},
+ [0xA28A]={d="l"},
+ [0xA28B]={d="l"},
+ [0xA28C]={d="l"},
+ [0xA28D]={d="l"},
+ [0xA28E]={d="l"},
+ [0xA28F]={d="l"},
+ [0xA290]={d="l"},
+ [0xA291]={d="l"},
+ [0xA292]={d="l"},
+ [0xA293]={d="l"},
+ [0xA294]={d="l"},
+ [0xA295]={d="l"},
+ [0xA296]={d="l"},
+ [0xA297]={d="l"},
+ [0xA298]={d="l"},
+ [0xA299]={d="l"},
+ [0xA29A]={d="l"},
+ [0xA29B]={d="l"},
+ [0xA29C]={d="l"},
+ [0xA29D]={d="l"},
+ [0xA29E]={d="l"},
+ [0xA29F]={d="l"},
+ [0xA2A0]={d="l"},
+ [0xA2A1]={d="l"},
+ [0xA2A2]={d="l"},
+ [0xA2A3]={d="l"},
+ [0xA2A4]={d="l"},
+ [0xA2A5]={d="l"},
+ [0xA2A6]={d="l"},
+ [0xA2A7]={d="l"},
+ [0xA2A8]={d="l"},
+ [0xA2A9]={d="l"},
+ [0xA2AA]={d="l"},
+ [0xA2AB]={d="l"},
+ [0xA2AC]={d="l"},
+ [0xA2AD]={d="l"},
+ [0xA2AE]={d="l"},
+ [0xA2AF]={d="l"},
+ [0xA2B0]={d="l"},
+ [0xA2B1]={d="l"},
+ [0xA2B2]={d="l"},
+ [0xA2B3]={d="l"},
+ [0xA2B4]={d="l"},
+ [0xA2B5]={d="l"},
+ [0xA2B6]={d="l"},
+ [0xA2B7]={d="l"},
+ [0xA2B8]={d="l"},
+ [0xA2B9]={d="l"},
+ [0xA2BA]={d="l"},
+ [0xA2BB]={d="l"},
+ [0xA2BC]={d="l"},
+ [0xA2BD]={d="l"},
+ [0xA2BE]={d="l"},
+ [0xA2BF]={d="l"},
+ [0xA2C0]={d="l"},
+ [0xA2C1]={d="l"},
+ [0xA2C2]={d="l"},
+ [0xA2C3]={d="l"},
+ [0xA2C4]={d="l"},
+ [0xA2C5]={d="l"},
+ [0xA2C6]={d="l"},
+ [0xA2C7]={d="l"},
+ [0xA2C8]={d="l"},
+ [0xA2C9]={d="l"},
+ [0xA2CA]={d="l"},
+ [0xA2CB]={d="l"},
+ [0xA2CC]={d="l"},
+ [0xA2CD]={d="l"},
+ [0xA2CE]={d="l"},
+ [0xA2CF]={d="l"},
+ [0xA2D0]={d="l"},
+ [0xA2D1]={d="l"},
+ [0xA2D2]={d="l"},
+ [0xA2D3]={d="l"},
+ [0xA2D4]={d="l"},
+ [0xA2D5]={d="l"},
+ [0xA2D6]={d="l"},
+ [0xA2D7]={d="l"},
+ [0xA2D8]={d="l"},
+ [0xA2D9]={d="l"},
+ [0xA2DA]={d="l"},
+ [0xA2DB]={d="l"},
+ [0xA2DC]={d="l"},
+ [0xA2DD]={d="l"},
+ [0xA2DE]={d="l"},
+ [0xA2DF]={d="l"},
+ [0xA2E0]={d="l"},
+ [0xA2E1]={d="l"},
+ [0xA2E2]={d="l"},
+ [0xA2E3]={d="l"},
+ [0xA2E4]={d="l"},
+ [0xA2E5]={d="l"},
+ [0xA2E6]={d="l"},
+ [0xA2E7]={d="l"},
+ [0xA2E8]={d="l"},
+ [0xA2E9]={d="l"},
+ [0xA2EA]={d="l"},
+ [0xA2EB]={d="l"},
+ [0xA2EC]={d="l"},
+ [0xA2ED]={d="l"},
+ [0xA2EE]={d="l"},
+ [0xA2EF]={d="l"},
+ [0xA2F0]={d="l"},
+ [0xA2F1]={d="l"},
+ [0xA2F2]={d="l"},
+ [0xA2F3]={d="l"},
+ [0xA2F4]={d="l"},
+ [0xA2F5]={d="l"},
+ [0xA2F6]={d="l"},
+ [0xA2F7]={d="l"},
+ [0xA2F8]={d="l"},
+ [0xA2F9]={d="l"},
+ [0xA2FA]={d="l"},
+ [0xA2FB]={d="l"},
+ [0xA2FC]={d="l"},
+ [0xA2FD]={d="l"},
+ [0xA2FE]={d="l"},
+ [0xA2FF]={d="l"},
+ [0xA300]={d="l"},
+ [0xA301]={d="l"},
+ [0xA302]={d="l"},
+ [0xA303]={d="l"},
+ [0xA304]={d="l"},
+ [0xA305]={d="l"},
+ [0xA306]={d="l"},
+ [0xA307]={d="l"},
+ [0xA308]={d="l"},
+ [0xA309]={d="l"},
+ [0xA30A]={d="l"},
+ [0xA30B]={d="l"},
+ [0xA30C]={d="l"},
+ [0xA30D]={d="l"},
+ [0xA30E]={d="l"},
+ [0xA30F]={d="l"},
+ [0xA310]={d="l"},
+ [0xA311]={d="l"},
+ [0xA312]={d="l"},
+ [0xA313]={d="l"},
+ [0xA314]={d="l"},
+ [0xA315]={d="l"},
+ [0xA316]={d="l"},
+ [0xA317]={d="l"},
+ [0xA318]={d="l"},
+ [0xA319]={d="l"},
+ [0xA31A]={d="l"},
+ [0xA31B]={d="l"},
+ [0xA31C]={d="l"},
+ [0xA31D]={d="l"},
+ [0xA31E]={d="l"},
+ [0xA31F]={d="l"},
+ [0xA320]={d="l"},
+ [0xA321]={d="l"},
+ [0xA322]={d="l"},
+ [0xA323]={d="l"},
+ [0xA324]={d="l"},
+ [0xA325]={d="l"},
+ [0xA326]={d="l"},
+ [0xA327]={d="l"},
+ [0xA328]={d="l"},
+ [0xA329]={d="l"},
+ [0xA32A]={d="l"},
+ [0xA32B]={d="l"},
+ [0xA32C]={d="l"},
+ [0xA32D]={d="l"},
+ [0xA32E]={d="l"},
+ [0xA32F]={d="l"},
+ [0xA330]={d="l"},
+ [0xA331]={d="l"},
+ [0xA332]={d="l"},
+ [0xA333]={d="l"},
+ [0xA334]={d="l"},
+ [0xA335]={d="l"},
+ [0xA336]={d="l"},
+ [0xA337]={d="l"},
+ [0xA338]={d="l"},
+ [0xA339]={d="l"},
+ [0xA33A]={d="l"},
+ [0xA33B]={d="l"},
+ [0xA33C]={d="l"},
+ [0xA33D]={d="l"},
+ [0xA33E]={d="l"},
+ [0xA33F]={d="l"},
+ [0xA340]={d="l"},
+ [0xA341]={d="l"},
+ [0xA342]={d="l"},
+ [0xA343]={d="l"},
+ [0xA344]={d="l"},
+ [0xA345]={d="l"},
+ [0xA346]={d="l"},
+ [0xA347]={d="l"},
+ [0xA348]={d="l"},
+ [0xA349]={d="l"},
+ [0xA34A]={d="l"},
+ [0xA34B]={d="l"},
+ [0xA34C]={d="l"},
+ [0xA34D]={d="l"},
+ [0xA34E]={d="l"},
+ [0xA34F]={d="l"},
+ [0xA350]={d="l"},
+ [0xA351]={d="l"},
+ [0xA352]={d="l"},
+ [0xA353]={d="l"},
+ [0xA354]={d="l"},
+ [0xA355]={d="l"},
+ [0xA356]={d="l"},
+ [0xA357]={d="l"},
+ [0xA358]={d="l"},
+ [0xA359]={d="l"},
+ [0xA35A]={d="l"},
+ [0xA35B]={d="l"},
+ [0xA35C]={d="l"},
+ [0xA35D]={d="l"},
+ [0xA35E]={d="l"},
+ [0xA35F]={d="l"},
+ [0xA360]={d="l"},
+ [0xA361]={d="l"},
+ [0xA362]={d="l"},
+ [0xA363]={d="l"},
+ [0xA364]={d="l"},
+ [0xA365]={d="l"},
+ [0xA366]={d="l"},
+ [0xA367]={d="l"},
+ [0xA368]={d="l"},
+ [0xA369]={d="l"},
+ [0xA36A]={d="l"},
+ [0xA36B]={d="l"},
+ [0xA36C]={d="l"},
+ [0xA36D]={d="l"},
+ [0xA36E]={d="l"},
+ [0xA36F]={d="l"},
+ [0xA370]={d="l"},
+ [0xA371]={d="l"},
+ [0xA372]={d="l"},
+ [0xA373]={d="l"},
+ [0xA374]={d="l"},
+ [0xA375]={d="l"},
+ [0xA376]={d="l"},
+ [0xA377]={d="l"},
+ [0xA378]={d="l"},
+ [0xA379]={d="l"},
+ [0xA37A]={d="l"},
+ [0xA37B]={d="l"},
+ [0xA37C]={d="l"},
+ [0xA37D]={d="l"},
+ [0xA37E]={d="l"},
+ [0xA37F]={d="l"},
+ [0xA380]={d="l"},
+ [0xA381]={d="l"},
+ [0xA382]={d="l"},
+ [0xA383]={d="l"},
+ [0xA384]={d="l"},
+ [0xA385]={d="l"},
+ [0xA386]={d="l"},
+ [0xA387]={d="l"},
+ [0xA388]={d="l"},
+ [0xA389]={d="l"},
+ [0xA38A]={d="l"},
+ [0xA38B]={d="l"},
+ [0xA38C]={d="l"},
+ [0xA38D]={d="l"},
+ [0xA38E]={d="l"},
+ [0xA38F]={d="l"},
+ [0xA390]={d="l"},
+ [0xA391]={d="l"},
+ [0xA392]={d="l"},
+ [0xA393]={d="l"},
+ [0xA394]={d="l"},
+ [0xA395]={d="l"},
+ [0xA396]={d="l"},
+ [0xA397]={d="l"},
+ [0xA398]={d="l"},
+ [0xA399]={d="l"},
+ [0xA39A]={d="l"},
+ [0xA39B]={d="l"},
+ [0xA39C]={d="l"},
+ [0xA39D]={d="l"},
+ [0xA39E]={d="l"},
+ [0xA39F]={d="l"},
+ [0xA3A0]={d="l"},
+ [0xA3A1]={d="l"},
+ [0xA3A2]={d="l"},
+ [0xA3A3]={d="l"},
+ [0xA3A4]={d="l"},
+ [0xA3A5]={d="l"},
+ [0xA3A6]={d="l"},
+ [0xA3A7]={d="l"},
+ [0xA3A8]={d="l"},
+ [0xA3A9]={d="l"},
+ [0xA3AA]={d="l"},
+ [0xA3AB]={d="l"},
+ [0xA3AC]={d="l"},
+ [0xA3AD]={d="l"},
+ [0xA3AE]={d="l"},
+ [0xA3AF]={d="l"},
+ [0xA3B0]={d="l"},
+ [0xA3B1]={d="l"},
+ [0xA3B2]={d="l"},
+ [0xA3B3]={d="l"},
+ [0xA3B4]={d="l"},
+ [0xA3B5]={d="l"},
+ [0xA3B6]={d="l"},
+ [0xA3B7]={d="l"},
+ [0xA3B8]={d="l"},
+ [0xA3B9]={d="l"},
+ [0xA3BA]={d="l"},
+ [0xA3BB]={d="l"},
+ [0xA3BC]={d="l"},
+ [0xA3BD]={d="l"},
+ [0xA3BE]={d="l"},
+ [0xA3BF]={d="l"},
+ [0xA3C0]={d="l"},
+ [0xA3C1]={d="l"},
+ [0xA3C2]={d="l"},
+ [0xA3C3]={d="l"},
+ [0xA3C4]={d="l"},
+ [0xA3C5]={d="l"},
+ [0xA3C6]={d="l"},
+ [0xA3C7]={d="l"},
+ [0xA3C8]={d="l"},
+ [0xA3C9]={d="l"},
+ [0xA3CA]={d="l"},
+ [0xA3CB]={d="l"},
+ [0xA3CC]={d="l"},
+ [0xA3CD]={d="l"},
+ [0xA3CE]={d="l"},
+ [0xA3CF]={d="l"},
+ [0xA3D0]={d="l"},
+ [0xA3D1]={d="l"},
+ [0xA3D2]={d="l"},
+ [0xA3D3]={d="l"},
+ [0xA3D4]={d="l"},
+ [0xA3D5]={d="l"},
+ [0xA3D6]={d="l"},
+ [0xA3D7]={d="l"},
+ [0xA3D8]={d="l"},
+ [0xA3D9]={d="l"},
+ [0xA3DA]={d="l"},
+ [0xA3DB]={d="l"},
+ [0xA3DC]={d="l"},
+ [0xA3DD]={d="l"},
+ [0xA3DE]={d="l"},
+ [0xA3DF]={d="l"},
+ [0xA3E0]={d="l"},
+ [0xA3E1]={d="l"},
+ [0xA3E2]={d="l"},
+ [0xA3E3]={d="l"},
+ [0xA3E4]={d="l"},
+ [0xA3E5]={d="l"},
+ [0xA3E6]={d="l"},
+ [0xA3E7]={d="l"},
+ [0xA3E8]={d="l"},
+ [0xA3E9]={d="l"},
+ [0xA3EA]={d="l"},
+ [0xA3EB]={d="l"},
+ [0xA3EC]={d="l"},
+ [0xA3ED]={d="l"},
+ [0xA3EE]={d="l"},
+ [0xA3EF]={d="l"},
+ [0xA3F0]={d="l"},
+ [0xA3F1]={d="l"},
+ [0xA3F2]={d="l"},
+ [0xA3F3]={d="l"},
+ [0xA3F4]={d="l"},
+ [0xA3F5]={d="l"},
+ [0xA3F6]={d="l"},
+ [0xA3F7]={d="l"},
+ [0xA3F8]={d="l"},
+ [0xA3F9]={d="l"},
+ [0xA3FA]={d="l"},
+ [0xA3FB]={d="l"},
+ [0xA3FC]={d="l"},
+ [0xA3FD]={d="l"},
+ [0xA3FE]={d="l"},
+ [0xA3FF]={d="l"},
+ [0xA400]={d="l"},
+ [0xA401]={d="l"},
+ [0xA402]={d="l"},
+ [0xA403]={d="l"},
+ [0xA404]={d="l"},
+ [0xA405]={d="l"},
+ [0xA406]={d="l"},
+ [0xA407]={d="l"},
+ [0xA408]={d="l"},
+ [0xA409]={d="l"},
+ [0xA40A]={d="l"},
+ [0xA40B]={d="l"},
+ [0xA40C]={d="l"},
+ [0xA40D]={d="l"},
+ [0xA40E]={d="l"},
+ [0xA40F]={d="l"},
+ [0xA410]={d="l"},
+ [0xA411]={d="l"},
+ [0xA412]={d="l"},
+ [0xA413]={d="l"},
+ [0xA414]={d="l"},
+ [0xA415]={d="l"},
+ [0xA416]={d="l"},
+ [0xA417]={d="l"},
+ [0xA418]={d="l"},
+ [0xA419]={d="l"},
+ [0xA41A]={d="l"},
+ [0xA41B]={d="l"},
+ [0xA41C]={d="l"},
+ [0xA41D]={d="l"},
+ [0xA41E]={d="l"},
+ [0xA41F]={d="l"},
+ [0xA420]={d="l"},
+ [0xA421]={d="l"},
+ [0xA422]={d="l"},
+ [0xA423]={d="l"},
+ [0xA424]={d="l"},
+ [0xA425]={d="l"},
+ [0xA426]={d="l"},
+ [0xA427]={d="l"},
+ [0xA428]={d="l"},
+ [0xA429]={d="l"},
+ [0xA42A]={d="l"},
+ [0xA42B]={d="l"},
+ [0xA42C]={d="l"},
+ [0xA42D]={d="l"},
+ [0xA42E]={d="l"},
+ [0xA42F]={d="l"},
+ [0xA430]={d="l"},
+ [0xA431]={d="l"},
+ [0xA432]={d="l"},
+ [0xA433]={d="l"},
+ [0xA434]={d="l"},
+ [0xA435]={d="l"},
+ [0xA436]={d="l"},
+ [0xA437]={d="l"},
+ [0xA438]={d="l"},
+ [0xA439]={d="l"},
+ [0xA43A]={d="l"},
+ [0xA43B]={d="l"},
+ [0xA43C]={d="l"},
+ [0xA43D]={d="l"},
+ [0xA43E]={d="l"},
+ [0xA43F]={d="l"},
+ [0xA440]={d="l"},
+ [0xA441]={d="l"},
+ [0xA442]={d="l"},
+ [0xA443]={d="l"},
+ [0xA444]={d="l"},
+ [0xA445]={d="l"},
+ [0xA446]={d="l"},
+ [0xA447]={d="l"},
+ [0xA448]={d="l"},
+ [0xA449]={d="l"},
+ [0xA44A]={d="l"},
+ [0xA44B]={d="l"},
+ [0xA44C]={d="l"},
+ [0xA44D]={d="l"},
+ [0xA44E]={d="l"},
+ [0xA44F]={d="l"},
+ [0xA450]={d="l"},
+ [0xA451]={d="l"},
+ [0xA452]={d="l"},
+ [0xA453]={d="l"},
+ [0xA454]={d="l"},
+ [0xA455]={d="l"},
+ [0xA456]={d="l"},
+ [0xA457]={d="l"},
+ [0xA458]={d="l"},
+ [0xA459]={d="l"},
+ [0xA45A]={d="l"},
+ [0xA45B]={d="l"},
+ [0xA45C]={d="l"},
+ [0xA45D]={d="l"},
+ [0xA45E]={d="l"},
+ [0xA45F]={d="l"},
+ [0xA460]={d="l"},
+ [0xA461]={d="l"},
+ [0xA462]={d="l"},
+ [0xA463]={d="l"},
+ [0xA464]={d="l"},
+ [0xA465]={d="l"},
+ [0xA466]={d="l"},
+ [0xA467]={d="l"},
+ [0xA468]={d="l"},
+ [0xA469]={d="l"},
+ [0xA46A]={d="l"},
+ [0xA46B]={d="l"},
+ [0xA46C]={d="l"},
+ [0xA46D]={d="l"},
+ [0xA46E]={d="l"},
+ [0xA46F]={d="l"},
+ [0xA470]={d="l"},
+ [0xA471]={d="l"},
+ [0xA472]={d="l"},
+ [0xA473]={d="l"},
+ [0xA474]={d="l"},
+ [0xA475]={d="l"},
+ [0xA476]={d="l"},
+ [0xA477]={d="l"},
+ [0xA478]={d="l"},
+ [0xA479]={d="l"},
+ [0xA47A]={d="l"},
+ [0xA47B]={d="l"},
+ [0xA47C]={d="l"},
+ [0xA47D]={d="l"},
+ [0xA47E]={d="l"},
+ [0xA47F]={d="l"},
+ [0xA480]={d="l"},
+ [0xA481]={d="l"},
+ [0xA482]={d="l"},
+ [0xA483]={d="l"},
+ [0xA484]={d="l"},
+ [0xA485]={d="l"},
+ [0xA486]={d="l"},
+ [0xA487]={d="l"},
+ [0xA488]={d="l"},
+ [0xA489]={d="l"},
+ [0xA48A]={d="l"},
+ [0xA48B]={d="l"},
+ [0xA48C]={d="l"},
+ [0xA490]={d="on"},
+ [0xA491]={d="on"},
+ [0xA492]={d="on"},
+ [0xA493]={d="on"},
+ [0xA494]={d="on"},
+ [0xA495]={d="on"},
+ [0xA496]={d="on"},
+ [0xA497]={d="on"},
+ [0xA498]={d="on"},
+ [0xA499]={d="on"},
+ [0xA49A]={d="on"},
+ [0xA49B]={d="on"},
+ [0xA49C]={d="on"},
+ [0xA49D]={d="on"},
+ [0xA49E]={d="on"},
+ [0xA49F]={d="on"},
+ [0xA4A0]={d="on"},
+ [0xA4A1]={d="on"},
+ [0xA4A2]={d="on"},
+ [0xA4A3]={d="on"},
+ [0xA4A4]={d="on"},
+ [0xA4A5]={d="on"},
+ [0xA4A6]={d="on"},
+ [0xA4A7]={d="on"},
+ [0xA4A8]={d="on"},
+ [0xA4A9]={d="on"},
+ [0xA4AA]={d="on"},
+ [0xA4AB]={d="on"},
+ [0xA4AC]={d="on"},
+ [0xA4AD]={d="on"},
+ [0xA4AE]={d="on"},
+ [0xA4AF]={d="on"},
+ [0xA4B0]={d="on"},
+ [0xA4B1]={d="on"},
+ [0xA4B2]={d="on"},
+ [0xA4B3]={d="on"},
+ [0xA4B4]={d="on"},
+ [0xA4B5]={d="on"},
+ [0xA4B6]={d="on"},
+ [0xA4B7]={d="on"},
+ [0xA4B8]={d="on"},
+ [0xA4B9]={d="on"},
+ [0xA4BA]={d="on"},
+ [0xA4BB]={d="on"},
+ [0xA4BC]={d="on"},
+ [0xA4BD]={d="on"},
+ [0xA4BE]={d="on"},
+ [0xA4BF]={d="on"},
+ [0xA4C0]={d="on"},
+ [0xA4C1]={d="on"},
+ [0xA4C2]={d="on"},
+ [0xA4C3]={d="on"},
+ [0xA4C4]={d="on"},
+ [0xA4C5]={d="on"},
+ [0xA4C6]={d="on"},
+ [0xA4D0]={d="l"},
+ [0xA4D1]={d="l"},
+ [0xA4D2]={d="l"},
+ [0xA4D3]={d="l"},
+ [0xA4D4]={d="l"},
+ [0xA4D5]={d="l"},
+ [0xA4D6]={d="l"},
+ [0xA4D7]={d="l"},
+ [0xA4D8]={d="l"},
+ [0xA4D9]={d="l"},
+ [0xA4DA]={d="l"},
+ [0xA4DB]={d="l"},
+ [0xA4DC]={d="l"},
+ [0xA4DD]={d="l"},
+ [0xA4DE]={d="l"},
+ [0xA4DF]={d="l"},
+ [0xA4E0]={d="l"},
+ [0xA4E1]={d="l"},
+ [0xA4E2]={d="l"},
+ [0xA4E3]={d="l"},
+ [0xA4E4]={d="l"},
+ [0xA4E5]={d="l"},
+ [0xA4E6]={d="l"},
+ [0xA4E7]={d="l"},
+ [0xA4E8]={d="l"},
+ [0xA4E9]={d="l"},
+ [0xA4EA]={d="l"},
+ [0xA4EB]={d="l"},
+ [0xA4EC]={d="l"},
+ [0xA4ED]={d="l"},
+ [0xA4EE]={d="l"},
+ [0xA4EF]={d="l"},
+ [0xA4F0]={d="l"},
+ [0xA4F1]={d="l"},
+ [0xA4F2]={d="l"},
+ [0xA4F3]={d="l"},
+ [0xA4F4]={d="l"},
+ [0xA4F5]={d="l"},
+ [0xA4F6]={d="l"},
+ [0xA4F7]={d="l"},
+ [0xA4F8]={d="l"},
+ [0xA4F9]={d="l"},
+ [0xA4FA]={d="l"},
+ [0xA4FB]={d="l"},
+ [0xA4FC]={d="l"},
+ [0xA4FD]={d="l"},
+ [0xA4FE]={d="l"},
+ [0xA4FF]={d="l"},
+ [0xA500]={d="l"},
+ [0xA501]={d="l"},
+ [0xA502]={d="l"},
+ [0xA503]={d="l"},
+ [0xA504]={d="l"},
+ [0xA505]={d="l"},
+ [0xA506]={d="l"},
+ [0xA507]={d="l"},
+ [0xA508]={d="l"},
+ [0xA509]={d="l"},
+ [0xA50A]={d="l"},
+ [0xA50B]={d="l"},
+ [0xA50C]={d="l"},
+ [0xA50D]={d="l"},
+ [0xA50E]={d="l"},
+ [0xA50F]={d="l"},
+ [0xA510]={d="l"},
+ [0xA511]={d="l"},
+ [0xA512]={d="l"},
+ [0xA513]={d="l"},
+ [0xA514]={d="l"},
+ [0xA515]={d="l"},
+ [0xA516]={d="l"},
+ [0xA517]={d="l"},
+ [0xA518]={d="l"},
+ [0xA519]={d="l"},
+ [0xA51A]={d="l"},
+ [0xA51B]={d="l"},
+ [0xA51C]={d="l"},
+ [0xA51D]={d="l"},
+ [0xA51E]={d="l"},
+ [0xA51F]={d="l"},
+ [0xA520]={d="l"},
+ [0xA521]={d="l"},
+ [0xA522]={d="l"},
+ [0xA523]={d="l"},
+ [0xA524]={d="l"},
+ [0xA525]={d="l"},
+ [0xA526]={d="l"},
+ [0xA527]={d="l"},
+ [0xA528]={d="l"},
+ [0xA529]={d="l"},
+ [0xA52A]={d="l"},
+ [0xA52B]={d="l"},
+ [0xA52C]={d="l"},
+ [0xA52D]={d="l"},
+ [0xA52E]={d="l"},
+ [0xA52F]={d="l"},
+ [0xA530]={d="l"},
+ [0xA531]={d="l"},
+ [0xA532]={d="l"},
+ [0xA533]={d="l"},
+ [0xA534]={d="l"},
+ [0xA535]={d="l"},
+ [0xA536]={d="l"},
+ [0xA537]={d="l"},
+ [0xA538]={d="l"},
+ [0xA539]={d="l"},
+ [0xA53A]={d="l"},
+ [0xA53B]={d="l"},
+ [0xA53C]={d="l"},
+ [0xA53D]={d="l"},
+ [0xA53E]={d="l"},
+ [0xA53F]={d="l"},
+ [0xA540]={d="l"},
+ [0xA541]={d="l"},
+ [0xA542]={d="l"},
+ [0xA543]={d="l"},
+ [0xA544]={d="l"},
+ [0xA545]={d="l"},
+ [0xA546]={d="l"},
+ [0xA547]={d="l"},
+ [0xA548]={d="l"},
+ [0xA549]={d="l"},
+ [0xA54A]={d="l"},
+ [0xA54B]={d="l"},
+ [0xA54C]={d="l"},
+ [0xA54D]={d="l"},
+ [0xA54E]={d="l"},
+ [0xA54F]={d="l"},
+ [0xA550]={d="l"},
+ [0xA551]={d="l"},
+ [0xA552]={d="l"},
+ [0xA553]={d="l"},
+ [0xA554]={d="l"},
+ [0xA555]={d="l"},
+ [0xA556]={d="l"},
+ [0xA557]={d="l"},
+ [0xA558]={d="l"},
+ [0xA559]={d="l"},
+ [0xA55A]={d="l"},
+ [0xA55B]={d="l"},
+ [0xA55C]={d="l"},
+ [0xA55D]={d="l"},
+ [0xA55E]={d="l"},
+ [0xA55F]={d="l"},
+ [0xA560]={d="l"},
+ [0xA561]={d="l"},
+ [0xA562]={d="l"},
+ [0xA563]={d="l"},
+ [0xA564]={d="l"},
+ [0xA565]={d="l"},
+ [0xA566]={d="l"},
+ [0xA567]={d="l"},
+ [0xA568]={d="l"},
+ [0xA569]={d="l"},
+ [0xA56A]={d="l"},
+ [0xA56B]={d="l"},
+ [0xA56C]={d="l"},
+ [0xA56D]={d="l"},
+ [0xA56E]={d="l"},
+ [0xA56F]={d="l"},
+ [0xA570]={d="l"},
+ [0xA571]={d="l"},
+ [0xA572]={d="l"},
+ [0xA573]={d="l"},
+ [0xA574]={d="l"},
+ [0xA575]={d="l"},
+ [0xA576]={d="l"},
+ [0xA577]={d="l"},
+ [0xA578]={d="l"},
+ [0xA579]={d="l"},
+ [0xA57A]={d="l"},
+ [0xA57B]={d="l"},
+ [0xA57C]={d="l"},
+ [0xA57D]={d="l"},
+ [0xA57E]={d="l"},
+ [0xA57F]={d="l"},
+ [0xA580]={d="l"},
+ [0xA581]={d="l"},
+ [0xA582]={d="l"},
+ [0xA583]={d="l"},
+ [0xA584]={d="l"},
+ [0xA585]={d="l"},
+ [0xA586]={d="l"},
+ [0xA587]={d="l"},
+ [0xA588]={d="l"},
+ [0xA589]={d="l"},
+ [0xA58A]={d="l"},
+ [0xA58B]={d="l"},
+ [0xA58C]={d="l"},
+ [0xA58D]={d="l"},
+ [0xA58E]={d="l"},
+ [0xA58F]={d="l"},
+ [0xA590]={d="l"},
+ [0xA591]={d="l"},
+ [0xA592]={d="l"},
+ [0xA593]={d="l"},
+ [0xA594]={d="l"},
+ [0xA595]={d="l"},
+ [0xA596]={d="l"},
+ [0xA597]={d="l"},
+ [0xA598]={d="l"},
+ [0xA599]={d="l"},
+ [0xA59A]={d="l"},
+ [0xA59B]={d="l"},
+ [0xA59C]={d="l"},
+ [0xA59D]={d="l"},
+ [0xA59E]={d="l"},
+ [0xA59F]={d="l"},
+ [0xA5A0]={d="l"},
+ [0xA5A1]={d="l"},
+ [0xA5A2]={d="l"},
+ [0xA5A3]={d="l"},
+ [0xA5A4]={d="l"},
+ [0xA5A5]={d="l"},
+ [0xA5A6]={d="l"},
+ [0xA5A7]={d="l"},
+ [0xA5A8]={d="l"},
+ [0xA5A9]={d="l"},
+ [0xA5AA]={d="l"},
+ [0xA5AB]={d="l"},
+ [0xA5AC]={d="l"},
+ [0xA5AD]={d="l"},
+ [0xA5AE]={d="l"},
+ [0xA5AF]={d="l"},
+ [0xA5B0]={d="l"},
+ [0xA5B1]={d="l"},
+ [0xA5B2]={d="l"},
+ [0xA5B3]={d="l"},
+ [0xA5B4]={d="l"},
+ [0xA5B5]={d="l"},
+ [0xA5B6]={d="l"},
+ [0xA5B7]={d="l"},
+ [0xA5B8]={d="l"},
+ [0xA5B9]={d="l"},
+ [0xA5BA]={d="l"},
+ [0xA5BB]={d="l"},
+ [0xA5BC]={d="l"},
+ [0xA5BD]={d="l"},
+ [0xA5BE]={d="l"},
+ [0xA5BF]={d="l"},
+ [0xA5C0]={d="l"},
+ [0xA5C1]={d="l"},
+ [0xA5C2]={d="l"},
+ [0xA5C3]={d="l"},
+ [0xA5C4]={d="l"},
+ [0xA5C5]={d="l"},
+ [0xA5C6]={d="l"},
+ [0xA5C7]={d="l"},
+ [0xA5C8]={d="l"},
+ [0xA5C9]={d="l"},
+ [0xA5CA]={d="l"},
+ [0xA5CB]={d="l"},
+ [0xA5CC]={d="l"},
+ [0xA5CD]={d="l"},
+ [0xA5CE]={d="l"},
+ [0xA5CF]={d="l"},
+ [0xA5D0]={d="l"},
+ [0xA5D1]={d="l"},
+ [0xA5D2]={d="l"},
+ [0xA5D3]={d="l"},
+ [0xA5D4]={d="l"},
+ [0xA5D5]={d="l"},
+ [0xA5D6]={d="l"},
+ [0xA5D7]={d="l"},
+ [0xA5D8]={d="l"},
+ [0xA5D9]={d="l"},
+ [0xA5DA]={d="l"},
+ [0xA5DB]={d="l"},
+ [0xA5DC]={d="l"},
+ [0xA5DD]={d="l"},
+ [0xA5DE]={d="l"},
+ [0xA5DF]={d="l"},
+ [0xA5E0]={d="l"},
+ [0xA5E1]={d="l"},
+ [0xA5E2]={d="l"},
+ [0xA5E3]={d="l"},
+ [0xA5E4]={d="l"},
+ [0xA5E5]={d="l"},
+ [0xA5E6]={d="l"},
+ [0xA5E7]={d="l"},
+ [0xA5E8]={d="l"},
+ [0xA5E9]={d="l"},
+ [0xA5EA]={d="l"},
+ [0xA5EB]={d="l"},
+ [0xA5EC]={d="l"},
+ [0xA5ED]={d="l"},
+ [0xA5EE]={d="l"},
+ [0xA5EF]={d="l"},
+ [0xA5F0]={d="l"},
+ [0xA5F1]={d="l"},
+ [0xA5F2]={d="l"},
+ [0xA5F3]={d="l"},
+ [0xA5F4]={d="l"},
+ [0xA5F5]={d="l"},
+ [0xA5F6]={d="l"},
+ [0xA5F7]={d="l"},
+ [0xA5F8]={d="l"},
+ [0xA5F9]={d="l"},
+ [0xA5FA]={d="l"},
+ [0xA5FB]={d="l"},
+ [0xA5FC]={d="l"},
+ [0xA5FD]={d="l"},
+ [0xA5FE]={d="l"},
+ [0xA5FF]={d="l"},
+ [0xA600]={d="l"},
+ [0xA601]={d="l"},
+ [0xA602]={d="l"},
+ [0xA603]={d="l"},
+ [0xA604]={d="l"},
+ [0xA605]={d="l"},
+ [0xA606]={d="l"},
+ [0xA607]={d="l"},
+ [0xA608]={d="l"},
+ [0xA609]={d="l"},
+ [0xA60A]={d="l"},
+ [0xA60B]={d="l"},
+ [0xA60C]={d="l"},
+ [0xA60D]={d="on"},
+ [0xA60E]={d="on"},
+ [0xA60F]={d="on"},
+ [0xA610]={d="l"},
+ [0xA611]={d="l"},
+ [0xA612]={d="l"},
+ [0xA613]={d="l"},
+ [0xA614]={d="l"},
+ [0xA615]={d="l"},
+ [0xA616]={d="l"},
+ [0xA617]={d="l"},
+ [0xA618]={d="l"},
+ [0xA619]={d="l"},
+ [0xA61A]={d="l"},
+ [0xA61B]={d="l"},
+ [0xA61C]={d="l"},
+ [0xA61D]={d="l"},
+ [0xA61E]={d="l"},
+ [0xA61F]={d="l"},
+ [0xA620]={d="l"},
+ [0xA621]={d="l"},
+ [0xA622]={d="l"},
+ [0xA623]={d="l"},
+ [0xA624]={d="l"},
+ [0xA625]={d="l"},
+ [0xA626]={d="l"},
+ [0xA627]={d="l"},
+ [0xA628]={d="l"},
+ [0xA629]={d="l"},
+ [0xA62A]={d="l"},
+ [0xA62B]={d="l"},
+ [0xA640]={d="l"},
+ [0xA641]={d="l"},
+ [0xA642]={d="l"},
+ [0xA643]={d="l"},
+ [0xA644]={d="l"},
+ [0xA645]={d="l"},
+ [0xA646]={d="l"},
+ [0xA647]={d="l"},
+ [0xA648]={d="l"},
+ [0xA649]={d="l"},
+ [0xA64A]={d="l"},
+ [0xA64B]={d="l"},
+ [0xA64C]={d="l"},
+ [0xA64D]={d="l"},
+ [0xA64E]={d="l"},
+ [0xA64F]={d="l"},
+ [0xA650]={d="l"},
+ [0xA651]={d="l"},
+ [0xA652]={d="l"},
+ [0xA653]={d="l"},
+ [0xA654]={d="l"},
+ [0xA655]={d="l"},
+ [0xA656]={d="l"},
+ [0xA657]={d="l"},
+ [0xA658]={d="l"},
+ [0xA659]={d="l"},
+ [0xA65A]={d="l"},
+ [0xA65B]={d="l"},
+ [0xA65C]={d="l"},
+ [0xA65D]={d="l"},
+ [0xA65E]={d="l"},
+ [0xA65F]={d="l"},
+ [0xA660]={d="l"},
+ [0xA661]={d="l"},
+ [0xA662]={d="l"},
+ [0xA663]={d="l"},
+ [0xA664]={d="l"},
+ [0xA665]={d="l"},
+ [0xA666]={d="l"},
+ [0xA667]={d="l"},
+ [0xA668]={d="l"},
+ [0xA669]={d="l"},
+ [0xA66A]={d="l"},
+ [0xA66B]={d="l"},
+ [0xA66C]={d="l"},
+ [0xA66D]={d="l"},
+ [0xA66E]={d="l"},
+ [0xA66F]={d="nsm"},
+ [0xA670]={d="nsm"},
+ [0xA671]={d="nsm"},
+ [0xA672]={d="nsm"},
+ [0xA673]={d="on"},
+ [0xA674]={d="nsm"},
+ [0xA675]={d="nsm"},
+ [0xA676]={d="nsm"},
+ [0xA677]={d="nsm"},
+ [0xA678]={d="nsm"},
+ [0xA679]={d="nsm"},
+ [0xA67A]={d="nsm"},
+ [0xA67B]={d="nsm"},
+ [0xA67C]={d="nsm"},
+ [0xA67D]={d="nsm"},
+ [0xA67E]={d="on"},
+ [0xA67F]={d="on"},
+ [0xA680]={d="l"},
+ [0xA681]={d="l"},
+ [0xA682]={d="l"},
+ [0xA683]={d="l"},
+ [0xA684]={d="l"},
+ [0xA685]={d="l"},
+ [0xA686]={d="l"},
+ [0xA687]={d="l"},
+ [0xA688]={d="l"},
+ [0xA689]={d="l"},
+ [0xA68A]={d="l"},
+ [0xA68B]={d="l"},
+ [0xA68C]={d="l"},
+ [0xA68D]={d="l"},
+ [0xA68E]={d="l"},
+ [0xA68F]={d="l"},
+ [0xA690]={d="l"},
+ [0xA691]={d="l"},
+ [0xA692]={d="l"},
+ [0xA693]={d="l"},
+ [0xA694]={d="l"},
+ [0xA695]={d="l"},
+ [0xA696]={d="l"},
+ [0xA697]={d="l"},
+ [0xA698]={d="l"},
+ [0xA699]={d="l"},
+ [0xA69A]={d="l"},
+ [0xA69B]={d="l"},
+ [0xA69C]={d="l"},
+ [0xA69D]={d="l"},
+ [0xA69E]={d="nsm"},
+ [0xA69F]={d="nsm"},
+ [0xA6A0]={d="l"},
+ [0xA6A1]={d="l"},
+ [0xA6A2]={d="l"},
+ [0xA6A3]={d="l"},
+ [0xA6A4]={d="l"},
+ [0xA6A5]={d="l"},
+ [0xA6A6]={d="l"},
+ [0xA6A7]={d="l"},
+ [0xA6A8]={d="l"},
+ [0xA6A9]={d="l"},
+ [0xA6AA]={d="l"},
+ [0xA6AB]={d="l"},
+ [0xA6AC]={d="l"},
+ [0xA6AD]={d="l"},
+ [0xA6AE]={d="l"},
+ [0xA6AF]={d="l"},
+ [0xA6B0]={d="l"},
+ [0xA6B1]={d="l"},
+ [0xA6B2]={d="l"},
+ [0xA6B3]={d="l"},
+ [0xA6B4]={d="l"},
+ [0xA6B5]={d="l"},
+ [0xA6B6]={d="l"},
+ [0xA6B7]={d="l"},
+ [0xA6B8]={d="l"},
+ [0xA6B9]={d="l"},
+ [0xA6BA]={d="l"},
+ [0xA6BB]={d="l"},
+ [0xA6BC]={d="l"},
+ [0xA6BD]={d="l"},
+ [0xA6BE]={d="l"},
+ [0xA6BF]={d="l"},
+ [0xA6C0]={d="l"},
+ [0xA6C1]={d="l"},
+ [0xA6C2]={d="l"},
+ [0xA6C3]={d="l"},
+ [0xA6C4]={d="l"},
+ [0xA6C5]={d="l"},
+ [0xA6C6]={d="l"},
+ [0xA6C7]={d="l"},
+ [0xA6C8]={d="l"},
+ [0xA6C9]={d="l"},
+ [0xA6CA]={d="l"},
+ [0xA6CB]={d="l"},
+ [0xA6CC]={d="l"},
+ [0xA6CD]={d="l"},
+ [0xA6CE]={d="l"},
+ [0xA6CF]={d="l"},
+ [0xA6D0]={d="l"},
+ [0xA6D1]={d="l"},
+ [0xA6D2]={d="l"},
+ [0xA6D3]={d="l"},
+ [0xA6D4]={d="l"},
+ [0xA6D5]={d="l"},
+ [0xA6D6]={d="l"},
+ [0xA6D7]={d="l"},
+ [0xA6D8]={d="l"},
+ [0xA6D9]={d="l"},
+ [0xA6DA]={d="l"},
+ [0xA6DB]={d="l"},
+ [0xA6DC]={d="l"},
+ [0xA6DD]={d="l"},
+ [0xA6DE]={d="l"},
+ [0xA6DF]={d="l"},
+ [0xA6E0]={d="l"},
+ [0xA6E1]={d="l"},
+ [0xA6E2]={d="l"},
+ [0xA6E3]={d="l"},
+ [0xA6E4]={d="l"},
+ [0xA6E5]={d="l"},
+ [0xA6E6]={d="l"},
+ [0xA6E7]={d="l"},
+ [0xA6E8]={d="l"},
+ [0xA6E9]={d="l"},
+ [0xA6EA]={d="l"},
+ [0xA6EB]={d="l"},
+ [0xA6EC]={d="l"},
+ [0xA6ED]={d="l"},
+ [0xA6EE]={d="l"},
+ [0xA6EF]={d="l"},
+ [0xA6F0]={d="nsm"},
+ [0xA6F1]={d="nsm"},
+ [0xA6F2]={d="l"},
+ [0xA6F3]={d="l"},
+ [0xA6F4]={d="l"},
+ [0xA6F5]={d="l"},
+ [0xA6F6]={d="l"},
+ [0xA6F7]={d="l"},
+ [0xA700]={d="on"},
+ [0xA701]={d="on"},
+ [0xA702]={d="on"},
+ [0xA703]={d="on"},
+ [0xA704]={d="on"},
+ [0xA705]={d="on"},
+ [0xA706]={d="on"},
+ [0xA707]={d="on"},
+ [0xA708]={d="on"},
+ [0xA709]={d="on"},
+ [0xA70A]={d="on"},
+ [0xA70B]={d="on"},
+ [0xA70C]={d="on"},
+ [0xA70D]={d="on"},
+ [0xA70E]={d="on"},
+ [0xA70F]={d="on"},
+ [0xA710]={d="on"},
+ [0xA711]={d="on"},
+ [0xA712]={d="on"},
+ [0xA713]={d="on"},
+ [0xA714]={d="on"},
+ [0xA715]={d="on"},
+ [0xA716]={d="on"},
+ [0xA717]={d="on"},
+ [0xA718]={d="on"},
+ [0xA719]={d="on"},
+ [0xA71A]={d="on"},
+ [0xA71B]={d="on"},
+ [0xA71C]={d="on"},
+ [0xA71D]={d="on"},
+ [0xA71E]={d="on"},
+ [0xA71F]={d="on"},
+ [0xA720]={d="on"},
+ [0xA721]={d="on"},
+ [0xA722]={d="l"},
+ [0xA723]={d="l"},
+ [0xA724]={d="l"},
+ [0xA725]={d="l"},
+ [0xA726]={d="l"},
+ [0xA727]={d="l"},
+ [0xA728]={d="l"},
+ [0xA729]={d="l"},
+ [0xA72A]={d="l"},
+ [0xA72B]={d="l"},
+ [0xA72C]={d="l"},
+ [0xA72D]={d="l"},
+ [0xA72E]={d="l"},
+ [0xA72F]={d="l"},
+ [0xA730]={d="l"},
+ [0xA731]={d="l"},
+ [0xA732]={d="l"},
+ [0xA733]={d="l"},
+ [0xA734]={d="l"},
+ [0xA735]={d="l"},
+ [0xA736]={d="l"},
+ [0xA737]={d="l"},
+ [0xA738]={d="l"},
+ [0xA739]={d="l"},
+ [0xA73A]={d="l"},
+ [0xA73B]={d="l"},
+ [0xA73C]={d="l"},
+ [0xA73D]={d="l"},
+ [0xA73E]={d="l"},
+ [0xA73F]={d="l"},
+ [0xA740]={d="l"},
+ [0xA741]={d="l"},
+ [0xA742]={d="l"},
+ [0xA743]={d="l"},
+ [0xA744]={d="l"},
+ [0xA745]={d="l"},
+ [0xA746]={d="l"},
+ [0xA747]={d="l"},
+ [0xA748]={d="l"},
+ [0xA749]={d="l"},
+ [0xA74A]={d="l"},
+ [0xA74B]={d="l"},
+ [0xA74C]={d="l"},
+ [0xA74D]={d="l"},
+ [0xA74E]={d="l"},
+ [0xA74F]={d="l"},
+ [0xA750]={d="l"},
+ [0xA751]={d="l"},
+ [0xA752]={d="l"},
+ [0xA753]={d="l"},
+ [0xA754]={d="l"},
+ [0xA755]={d="l"},
+ [0xA756]={d="l"},
+ [0xA757]={d="l"},
+ [0xA758]={d="l"},
+ [0xA759]={d="l"},
+ [0xA75A]={d="l"},
+ [0xA75B]={d="l"},
+ [0xA75C]={d="l"},
+ [0xA75D]={d="l"},
+ [0xA75E]={d="l"},
+ [0xA75F]={d="l"},
+ [0xA760]={d="l"},
+ [0xA761]={d="l"},
+ [0xA762]={d="l"},
+ [0xA763]={d="l"},
+ [0xA764]={d="l"},
+ [0xA765]={d="l"},
+ [0xA766]={d="l"},
+ [0xA767]={d="l"},
+ [0xA768]={d="l"},
+ [0xA769]={d="l"},
+ [0xA76A]={d="l"},
+ [0xA76B]={d="l"},
+ [0xA76C]={d="l"},
+ [0xA76D]={d="l"},
+ [0xA76E]={d="l"},
+ [0xA76F]={d="l"},
+ [0xA770]={d="l"},
+ [0xA771]={d="l"},
+ [0xA772]={d="l"},
+ [0xA773]={d="l"},
+ [0xA774]={d="l"},
+ [0xA775]={d="l"},
+ [0xA776]={d="l"},
+ [0xA777]={d="l"},
+ [0xA778]={d="l"},
+ [0xA779]={d="l"},
+ [0xA77A]={d="l"},
+ [0xA77B]={d="l"},
+ [0xA77C]={d="l"},
+ [0xA77D]={d="l"},
+ [0xA77E]={d="l"},
+ [0xA77F]={d="l"},
+ [0xA780]={d="l"},
+ [0xA781]={d="l"},
+ [0xA782]={d="l"},
+ [0xA783]={d="l"},
+ [0xA784]={d="l"},
+ [0xA785]={d="l"},
+ [0xA786]={d="l"},
+ [0xA787]={d="l"},
+ [0xA788]={d="on"},
+ [0xA789]={d="l"},
+ [0xA78A]={d="l"},
+ [0xA78B]={d="l"},
+ [0xA78C]={d="l"},
+ [0xA78D]={d="l"},
+ [0xA78E]={d="l"},
+ [0xA78F]={d="l"},
+ [0xA790]={d="l"},
+ [0xA791]={d="l"},
+ [0xA792]={d="l"},
+ [0xA793]={d="l"},
+ [0xA794]={d="l"},
+ [0xA795]={d="l"},
+ [0xA796]={d="l"},
+ [0xA797]={d="l"},
+ [0xA798]={d="l"},
+ [0xA799]={d="l"},
+ [0xA79A]={d="l"},
+ [0xA79B]={d="l"},
+ [0xA79C]={d="l"},
+ [0xA79D]={d="l"},
+ [0xA79E]={d="l"},
+ [0xA79F]={d="l"},
+ [0xA7A0]={d="l"},
+ [0xA7A1]={d="l"},
+ [0xA7A2]={d="l"},
+ [0xA7A3]={d="l"},
+ [0xA7A4]={d="l"},
+ [0xA7A5]={d="l"},
+ [0xA7A6]={d="l"},
+ [0xA7A7]={d="l"},
+ [0xA7A8]={d="l"},
+ [0xA7A9]={d="l"},
+ [0xA7AA]={d="l"},
+ [0xA7AB]={d="l"},
+ [0xA7AC]={d="l"},
+ [0xA7AD]={d="l"},
+ [0xA7AE]={d="l"},
+ [0xA7AF]={d="l"},
+ [0xA7B0]={d="l"},
+ [0xA7B1]={d="l"},
+ [0xA7B2]={d="l"},
+ [0xA7B3]={d="l"},
+ [0xA7B4]={d="l"},
+ [0xA7B5]={d="l"},
+ [0xA7B6]={d="l"},
+ [0xA7B7]={d="l"},
+ [0xA7B8]={d="l"},
+ [0xA7B9]={d="l"},
+ [0xA7BA]={d="l"},
+ [0xA7BB]={d="l"},
+ [0xA7BC]={d="l"},
+ [0xA7BD]={d="l"},
+ [0xA7BE]={d="l"},
+ [0xA7BF]={d="l"},
+ [0xA7C0]={d="l"},
+ [0xA7C1]={d="l"},
+ [0xA7C2]={d="l"},
+ [0xA7C3]={d="l"},
+ [0xA7C4]={d="l"},
+ [0xA7C5]={d="l"},
+ [0xA7C6]={d="l"},
+ [0xA7C7]={d="l"},
+ [0xA7C8]={d="l"},
+ [0xA7C9]={d="l"},
+ [0xA7CA]={d="l"},
+ [0xA7D0]={d="l"},
+ [0xA7D1]={d="l"},
+ [0xA7D3]={d="l"},
+ [0xA7D5]={d="l"},
+ [0xA7D6]={d="l"},
+ [0xA7D7]={d="l"},
+ [0xA7D8]={d="l"},
+ [0xA7D9]={d="l"},
+ [0xA7F2]={d="l"},
+ [0xA7F3]={d="l"},
+ [0xA7F4]={d="l"},
+ [0xA7F5]={d="l"},
+ [0xA7F6]={d="l"},
+ [0xA7F7]={d="l"},
+ [0xA7F8]={d="l"},
+ [0xA7F9]={d="l"},
+ [0xA7FA]={d="l"},
+ [0xA7FB]={d="l"},
+ [0xA7FC]={d="l"},
+ [0xA7FD]={d="l"},
+ [0xA7FE]={d="l"},
+ [0xA7FF]={d="l"},
+ [0xA800]={d="l"},
+ [0xA801]={d="l"},
+ [0xA802]={d="nsm"},
+ [0xA803]={d="l"},
+ [0xA804]={d="l"},
+ [0xA805]={d="l"},
+ [0xA806]={d="nsm"},
+ [0xA807]={d="l"},
+ [0xA808]={d="l"},
+ [0xA809]={d="l"},
+ [0xA80A]={d="l"},
+ [0xA80B]={d="nsm"},
+ [0xA80C]={d="l"},
+ [0xA80D]={d="l"},
+ [0xA80E]={d="l"},
+ [0xA80F]={d="l"},
+ [0xA810]={d="l"},
+ [0xA811]={d="l"},
+ [0xA812]={d="l"},
+ [0xA813]={d="l"},
+ [0xA814]={d="l"},
+ [0xA815]={d="l"},
+ [0xA816]={d="l"},
+ [0xA817]={d="l"},
+ [0xA818]={d="l"},
+ [0xA819]={d="l"},
+ [0xA81A]={d="l"},
+ [0xA81B]={d="l"},
+ [0xA81C]={d="l"},
+ [0xA81D]={d="l"},
+ [0xA81E]={d="l"},
+ [0xA81F]={d="l"},
+ [0xA820]={d="l"},
+ [0xA821]={d="l"},
+ [0xA822]={d="l"},
+ [0xA823]={d="l"},
+ [0xA824]={d="l"},
+ [0xA825]={d="nsm"},
+ [0xA826]={d="nsm"},
+ [0xA827]={d="l"},
+ [0xA828]={d="on"},
+ [0xA829]={d="on"},
+ [0xA82A]={d="on"},
+ [0xA82B]={d="on"},
+ [0xA82C]={d="nsm"},
+ [0xA830]={d="l"},
+ [0xA831]={d="l"},
+ [0xA832]={d="l"},
+ [0xA833]={d="l"},
+ [0xA834]={d="l"},
+ [0xA835]={d="l"},
+ [0xA836]={d="l"},
+ [0xA837]={d="l"},
+ [0xA838]={d="et"},
+ [0xA839]={d="et"},
+ [0xA840]={d="l"},
+ [0xA841]={d="l"},
+ [0xA842]={d="l"},
+ [0xA843]={d="l"},
+ [0xA844]={d="l"},
+ [0xA845]={d="l"},
+ [0xA846]={d="l"},
+ [0xA847]={d="l"},
+ [0xA848]={d="l"},
+ [0xA849]={d="l"},
+ [0xA84A]={d="l"},
+ [0xA84B]={d="l"},
+ [0xA84C]={d="l"},
+ [0xA84D]={d="l"},
+ [0xA84E]={d="l"},
+ [0xA84F]={d="l"},
+ [0xA850]={d="l"},
+ [0xA851]={d="l"},
+ [0xA852]={d="l"},
+ [0xA853]={d="l"},
+ [0xA854]={d="l"},
+ [0xA855]={d="l"},
+ [0xA856]={d="l"},
+ [0xA857]={d="l"},
+ [0xA858]={d="l"},
+ [0xA859]={d="l"},
+ [0xA85A]={d="l"},
+ [0xA85B]={d="l"},
+ [0xA85C]={d="l"},
+ [0xA85D]={d="l"},
+ [0xA85E]={d="l"},
+ [0xA85F]={d="l"},
+ [0xA860]={d="l"},
+ [0xA861]={d="l"},
+ [0xA862]={d="l"},
+ [0xA863]={d="l"},
+ [0xA864]={d="l"},
+ [0xA865]={d="l"},
+ [0xA866]={d="l"},
+ [0xA867]={d="l"},
+ [0xA868]={d="l"},
+ [0xA869]={d="l"},
+ [0xA86A]={d="l"},
+ [0xA86B]={d="l"},
+ [0xA86C]={d="l"},
+ [0xA86D]={d="l"},
+ [0xA86E]={d="l"},
+ [0xA86F]={d="l"},
+ [0xA870]={d="l"},
+ [0xA871]={d="l"},
+ [0xA872]={d="l"},
+ [0xA873]={d="l"},
+ [0xA874]={d="on"},
+ [0xA875]={d="on"},
+ [0xA876]={d="on"},
+ [0xA877]={d="on"},
+ [0xA880]={d="l"},
+ [0xA881]={d="l"},
+ [0xA882]={d="l"},
+ [0xA883]={d="l"},
+ [0xA884]={d="l"},
+ [0xA885]={d="l"},
+ [0xA886]={d="l"},
+ [0xA887]={d="l"},
+ [0xA888]={d="l"},
+ [0xA889]={d="l"},
+ [0xA88A]={d="l"},
+ [0xA88B]={d="l"},
+ [0xA88C]={d="l"},
+ [0xA88D]={d="l"},
+ [0xA88E]={d="l"},
+ [0xA88F]={d="l"},
+ [0xA890]={d="l"},
+ [0xA891]={d="l"},
+ [0xA892]={d="l"},
+ [0xA893]={d="l"},
+ [0xA894]={d="l"},
+ [0xA895]={d="l"},
+ [0xA896]={d="l"},
+ [0xA897]={d="l"},
+ [0xA898]={d="l"},
+ [0xA899]={d="l"},
+ [0xA89A]={d="l"},
+ [0xA89B]={d="l"},
+ [0xA89C]={d="l"},
+ [0xA89D]={d="l"},
+ [0xA89E]={d="l"},
+ [0xA89F]={d="l"},
+ [0xA8A0]={d="l"},
+ [0xA8A1]={d="l"},
+ [0xA8A2]={d="l"},
+ [0xA8A3]={d="l"},
+ [0xA8A4]={d="l"},
+ [0xA8A5]={d="l"},
+ [0xA8A6]={d="l"},
+ [0xA8A7]={d="l"},
+ [0xA8A8]={d="l"},
+ [0xA8A9]={d="l"},
+ [0xA8AA]={d="l"},
+ [0xA8AB]={d="l"},
+ [0xA8AC]={d="l"},
+ [0xA8AD]={d="l"},
+ [0xA8AE]={d="l"},
+ [0xA8AF]={d="l"},
+ [0xA8B0]={d="l"},
+ [0xA8B1]={d="l"},
+ [0xA8B2]={d="l"},
+ [0xA8B3]={d="l"},
+ [0xA8B4]={d="l"},
+ [0xA8B5]={d="l"},
+ [0xA8B6]={d="l"},
+ [0xA8B7]={d="l"},
+ [0xA8B8]={d="l"},
+ [0xA8B9]={d="l"},
+ [0xA8BA]={d="l"},
+ [0xA8BB]={d="l"},
+ [0xA8BC]={d="l"},
+ [0xA8BD]={d="l"},
+ [0xA8BE]={d="l"},
+ [0xA8BF]={d="l"},
+ [0xA8C0]={d="l"},
+ [0xA8C1]={d="l"},
+ [0xA8C2]={d="l"},
+ [0xA8C3]={d="l"},
+ [0xA8C4]={d="nsm"},
+ [0xA8C5]={d="nsm"},
+ [0xA8CE]={d="l"},
+ [0xA8CF]={d="l"},
+ [0xA8D0]={d="l"},
+ [0xA8D1]={d="l"},
+ [0xA8D2]={d="l"},
+ [0xA8D3]={d="l"},
+ [0xA8D4]={d="l"},
+ [0xA8D5]={d="l"},
+ [0xA8D6]={d="l"},
+ [0xA8D7]={d="l"},
+ [0xA8D8]={d="l"},
+ [0xA8D9]={d="l"},
+ [0xA8E0]={d="nsm"},
+ [0xA8E1]={d="nsm"},
+ [0xA8E2]={d="nsm"},
+ [0xA8E3]={d="nsm"},
+ [0xA8E4]={d="nsm"},
+ [0xA8E5]={d="nsm"},
+ [0xA8E6]={d="nsm"},
+ [0xA8E7]={d="nsm"},
+ [0xA8E8]={d="nsm"},
+ [0xA8E9]={d="nsm"},
+ [0xA8EA]={d="nsm"},
+ [0xA8EB]={d="nsm"},
+ [0xA8EC]={d="nsm"},
+ [0xA8ED]={d="nsm"},
+ [0xA8EE]={d="nsm"},
+ [0xA8EF]={d="nsm"},
+ [0xA8F0]={d="nsm"},
+ [0xA8F1]={d="nsm"},
+ [0xA8F2]={d="l"},
+ [0xA8F3]={d="l"},
+ [0xA8F4]={d="l"},
+ [0xA8F5]={d="l"},
+ [0xA8F6]={d="l"},
+ [0xA8F7]={d="l"},
+ [0xA8F8]={d="l"},
+ [0xA8F9]={d="l"},
+ [0xA8FA]={d="l"},
+ [0xA8FB]={d="l"},
+ [0xA8FC]={d="l"},
+ [0xA8FD]={d="l"},
+ [0xA8FE]={d="l"},
+ [0xA8FF]={d="nsm"},
+ [0xA900]={d="l"},
+ [0xA901]={d="l"},
+ [0xA902]={d="l"},
+ [0xA903]={d="l"},
+ [0xA904]={d="l"},
+ [0xA905]={d="l"},
+ [0xA906]={d="l"},
+ [0xA907]={d="l"},
+ [0xA908]={d="l"},
+ [0xA909]={d="l"},
+ [0xA90A]={d="l"},
+ [0xA90B]={d="l"},
+ [0xA90C]={d="l"},
+ [0xA90D]={d="l"},
+ [0xA90E]={d="l"},
+ [0xA90F]={d="l"},
+ [0xA910]={d="l"},
+ [0xA911]={d="l"},
+ [0xA912]={d="l"},
+ [0xA913]={d="l"},
+ [0xA914]={d="l"},
+ [0xA915]={d="l"},
+ [0xA916]={d="l"},
+ [0xA917]={d="l"},
+ [0xA918]={d="l"},
+ [0xA919]={d="l"},
+ [0xA91A]={d="l"},
+ [0xA91B]={d="l"},
+ [0xA91C]={d="l"},
+ [0xA91D]={d="l"},
+ [0xA91E]={d="l"},
+ [0xA91F]={d="l"},
+ [0xA920]={d="l"},
+ [0xA921]={d="l"},
+ [0xA922]={d="l"},
+ [0xA923]={d="l"},
+ [0xA924]={d="l"},
+ [0xA925]={d="l"},
+ [0xA926]={d="nsm"},
+ [0xA927]={d="nsm"},
+ [0xA928]={d="nsm"},
+ [0xA929]={d="nsm"},
+ [0xA92A]={d="nsm"},
+ [0xA92B]={d="nsm"},
+ [0xA92C]={d="nsm"},
+ [0xA92D]={d="nsm"},
+ [0xA92E]={d="l"},
+ [0xA92F]={d="l"},
+ [0xA930]={d="l"},
+ [0xA931]={d="l"},
+ [0xA932]={d="l"},
+ [0xA933]={d="l"},
+ [0xA934]={d="l"},
+ [0xA935]={d="l"},
+ [0xA936]={d="l"},
+ [0xA937]={d="l"},
+ [0xA938]={d="l"},
+ [0xA939]={d="l"},
+ [0xA93A]={d="l"},
+ [0xA93B]={d="l"},
+ [0xA93C]={d="l"},
+ [0xA93D]={d="l"},
+ [0xA93E]={d="l"},
+ [0xA93F]={d="l"},
+ [0xA940]={d="l"},
+ [0xA941]={d="l"},
+ [0xA942]={d="l"},
+ [0xA943]={d="l"},
+ [0xA944]={d="l"},
+ [0xA945]={d="l"},
+ [0xA946]={d="l"},
+ [0xA947]={d="nsm"},
+ [0xA948]={d="nsm"},
+ [0xA949]={d="nsm"},
+ [0xA94A]={d="nsm"},
+ [0xA94B]={d="nsm"},
+ [0xA94C]={d="nsm"},
+ [0xA94D]={d="nsm"},
+ [0xA94E]={d="nsm"},
+ [0xA94F]={d="nsm"},
+ [0xA950]={d="nsm"},
+ [0xA951]={d="nsm"},
+ [0xA952]={d="l"},
+ [0xA953]={d="l"},
+ [0xA95F]={d="l"},
+ [0xA960]={d="l"},
+ [0xA961]={d="l"},
+ [0xA962]={d="l"},
+ [0xA963]={d="l"},
+ [0xA964]={d="l"},
+ [0xA965]={d="l"},
+ [0xA966]={d="l"},
+ [0xA967]={d="l"},
+ [0xA968]={d="l"},
+ [0xA969]={d="l"},
+ [0xA96A]={d="l"},
+ [0xA96B]={d="l"},
+ [0xA96C]={d="l"},
+ [0xA96D]={d="l"},
+ [0xA96E]={d="l"},
+ [0xA96F]={d="l"},
+ [0xA970]={d="l"},
+ [0xA971]={d="l"},
+ [0xA972]={d="l"},
+ [0xA973]={d="l"},
+ [0xA974]={d="l"},
+ [0xA975]={d="l"},
+ [0xA976]={d="l"},
+ [0xA977]={d="l"},
+ [0xA978]={d="l"},
+ [0xA979]={d="l"},
+ [0xA97A]={d="l"},
+ [0xA97B]={d="l"},
+ [0xA97C]={d="l"},
+ [0xA980]={d="nsm"},
+ [0xA981]={d="nsm"},
+ [0xA982]={d="nsm"},
+ [0xA983]={d="l"},
+ [0xA984]={d="l"},
+ [0xA985]={d="l"},
+ [0xA986]={d="l"},
+ [0xA987]={d="l"},
+ [0xA988]={d="l"},
+ [0xA989]={d="l"},
+ [0xA98A]={d="l"},
+ [0xA98B]={d="l"},
+ [0xA98C]={d="l"},
+ [0xA98D]={d="l"},
+ [0xA98E]={d="l"},
+ [0xA98F]={d="l"},
+ [0xA990]={d="l"},
+ [0xA991]={d="l"},
+ [0xA992]={d="l"},
+ [0xA993]={d="l"},
+ [0xA994]={d="l"},
+ [0xA995]={d="l"},
+ [0xA996]={d="l"},
+ [0xA997]={d="l"},
+ [0xA998]={d="l"},
+ [0xA999]={d="l"},
+ [0xA99A]={d="l"},
+ [0xA99B]={d="l"},
+ [0xA99C]={d="l"},
+ [0xA99D]={d="l"},
+ [0xA99E]={d="l"},
+ [0xA99F]={d="l"},
+ [0xA9A0]={d="l"},
+ [0xA9A1]={d="l"},
+ [0xA9A2]={d="l"},
+ [0xA9A3]={d="l"},
+ [0xA9A4]={d="l"},
+ [0xA9A5]={d="l"},
+ [0xA9A6]={d="l"},
+ [0xA9A7]={d="l"},
+ [0xA9A8]={d="l"},
+ [0xA9A9]={d="l"},
+ [0xA9AA]={d="l"},
+ [0xA9AB]={d="l"},
+ [0xA9AC]={d="l"},
+ [0xA9AD]={d="l"},
+ [0xA9AE]={d="l"},
+ [0xA9AF]={d="l"},
+ [0xA9B0]={d="l"},
+ [0xA9B1]={d="l"},
+ [0xA9B2]={d="l"},
+ [0xA9B3]={d="nsm"},
+ [0xA9B4]={d="l"},
+ [0xA9B5]={d="l"},
+ [0xA9B6]={d="nsm"},
+ [0xA9B7]={d="nsm"},
+ [0xA9B8]={d="nsm"},
+ [0xA9B9]={d="nsm"},
+ [0xA9BA]={d="l"},
+ [0xA9BB]={d="l"},
+ [0xA9BC]={d="nsm"},
+ [0xA9BD]={d="nsm"},
+ [0xA9BE]={d="l"},
+ [0xA9BF]={d="l"},
+ [0xA9C0]={d="l"},
+ [0xA9C1]={d="l"},
+ [0xA9C2]={d="l"},
+ [0xA9C3]={d="l"},
+ [0xA9C4]={d="l"},
+ [0xA9C5]={d="l"},
+ [0xA9C6]={d="l"},
+ [0xA9C7]={d="l"},
+ [0xA9C8]={d="l"},
+ [0xA9C9]={d="l"},
+ [0xA9CA]={d="l"},
+ [0xA9CB]={d="l"},
+ [0xA9CC]={d="l"},
+ [0xA9CD]={d="l"},
+ [0xA9CF]={d="l"},
+ [0xA9D0]={d="l"},
+ [0xA9D1]={d="l"},
+ [0xA9D2]={d="l"},
+ [0xA9D3]={d="l"},
+ [0xA9D4]={d="l"},
+ [0xA9D5]={d="l"},
+ [0xA9D6]={d="l"},
+ [0xA9D7]={d="l"},
+ [0xA9D8]={d="l"},
+ [0xA9D9]={d="l"},
+ [0xA9DE]={d="l"},
+ [0xA9DF]={d="l"},
+ [0xA9E0]={d="l"},
+ [0xA9E1]={d="l"},
+ [0xA9E2]={d="l"},
+ [0xA9E3]={d="l"},
+ [0xA9E4]={d="l"},
+ [0xA9E5]={d="nsm"},
+ [0xA9E6]={d="l"},
+ [0xA9E7]={d="l"},
+ [0xA9E8]={d="l"},
+ [0xA9E9]={d="l"},
+ [0xA9EA]={d="l"},
+ [0xA9EB]={d="l"},
+ [0xA9EC]={d="l"},
+ [0xA9ED]={d="l"},
+ [0xA9EE]={d="l"},
+ [0xA9EF]={d="l"},
+ [0xA9F0]={d="l"},
+ [0xA9F1]={d="l"},
+ [0xA9F2]={d="l"},
+ [0xA9F3]={d="l"},
+ [0xA9F4]={d="l"},
+ [0xA9F5]={d="l"},
+ [0xA9F6]={d="l"},
+ [0xA9F7]={d="l"},
+ [0xA9F8]={d="l"},
+ [0xA9F9]={d="l"},
+ [0xA9FA]={d="l"},
+ [0xA9FB]={d="l"},
+ [0xA9FC]={d="l"},
+ [0xA9FD]={d="l"},
+ [0xA9FE]={d="l"},
+ [0xAA00]={d="l"},
+ [0xAA01]={d="l"},
+ [0xAA02]={d="l"},
+ [0xAA03]={d="l"},
+ [0xAA04]={d="l"},
+ [0xAA05]={d="l"},
+ [0xAA06]={d="l"},
+ [0xAA07]={d="l"},
+ [0xAA08]={d="l"},
+ [0xAA09]={d="l"},
+ [0xAA0A]={d="l"},
+ [0xAA0B]={d="l"},
+ [0xAA0C]={d="l"},
+ [0xAA0D]={d="l"},
+ [0xAA0E]={d="l"},
+ [0xAA0F]={d="l"},
+ [0xAA10]={d="l"},
+ [0xAA11]={d="l"},
+ [0xAA12]={d="l"},
+ [0xAA13]={d="l"},
+ [0xAA14]={d="l"},
+ [0xAA15]={d="l"},
+ [0xAA16]={d="l"},
+ [0xAA17]={d="l"},
+ [0xAA18]={d="l"},
+ [0xAA19]={d="l"},
+ [0xAA1A]={d="l"},
+ [0xAA1B]={d="l"},
+ [0xAA1C]={d="l"},
+ [0xAA1D]={d="l"},
+ [0xAA1E]={d="l"},
+ [0xAA1F]={d="l"},
+ [0xAA20]={d="l"},
+ [0xAA21]={d="l"},
+ [0xAA22]={d="l"},
+ [0xAA23]={d="l"},
+ [0xAA24]={d="l"},
+ [0xAA25]={d="l"},
+ [0xAA26]={d="l"},
+ [0xAA27]={d="l"},
+ [0xAA28]={d="l"},
+ [0xAA29]={d="nsm"},
+ [0xAA2A]={d="nsm"},
+ [0xAA2B]={d="nsm"},
+ [0xAA2C]={d="nsm"},
+ [0xAA2D]={d="nsm"},
+ [0xAA2E]={d="nsm"},
+ [0xAA2F]={d="l"},
+ [0xAA30]={d="l"},
+ [0xAA31]={d="nsm"},
+ [0xAA32]={d="nsm"},
+ [0xAA33]={d="l"},
+ [0xAA34]={d="l"},
+ [0xAA35]={d="nsm"},
+ [0xAA36]={d="nsm"},
+ [0xAA40]={d="l"},
+ [0xAA41]={d="l"},
+ [0xAA42]={d="l"},
+ [0xAA43]={d="nsm"},
+ [0xAA44]={d="l"},
+ [0xAA45]={d="l"},
+ [0xAA46]={d="l"},
+ [0xAA47]={d="l"},
+ [0xAA48]={d="l"},
+ [0xAA49]={d="l"},
+ [0xAA4A]={d="l"},
+ [0xAA4B]={d="l"},
+ [0xAA4C]={d="nsm"},
+ [0xAA4D]={d="l"},
+ [0xAA50]={d="l"},
+ [0xAA51]={d="l"},
+ [0xAA52]={d="l"},
+ [0xAA53]={d="l"},
+ [0xAA54]={d="l"},
+ [0xAA55]={d="l"},
+ [0xAA56]={d="l"},
+ [0xAA57]={d="l"},
+ [0xAA58]={d="l"},
+ [0xAA59]={d="l"},
+ [0xAA5C]={d="l"},
+ [0xAA5D]={d="l"},
+ [0xAA5E]={d="l"},
+ [0xAA5F]={d="l"},
+ [0xAA60]={d="l"},
+ [0xAA61]={d="l"},
+ [0xAA62]={d="l"},
+ [0xAA63]={d="l"},
+ [0xAA64]={d="l"},
+ [0xAA65]={d="l"},
+ [0xAA66]={d="l"},
+ [0xAA67]={d="l"},
+ [0xAA68]={d="l"},
+ [0xAA69]={d="l"},
+ [0xAA6A]={d="l"},
+ [0xAA6B]={d="l"},
+ [0xAA6C]={d="l"},
+ [0xAA6D]={d="l"},
+ [0xAA6E]={d="l"},
+ [0xAA6F]={d="l"},
+ [0xAA70]={d="l"},
+ [0xAA71]={d="l"},
+ [0xAA72]={d="l"},
+ [0xAA73]={d="l"},
+ [0xAA74]={d="l"},
+ [0xAA75]={d="l"},
+ [0xAA76]={d="l"},
+ [0xAA77]={d="l"},
+ [0xAA78]={d="l"},
+ [0xAA79]={d="l"},
+ [0xAA7A]={d="l"},
+ [0xAA7B]={d="l"},
+ [0xAA7C]={d="nsm"},
+ [0xAA7D]={d="l"},
+ [0xAA7E]={d="l"},
+ [0xAA7F]={d="l"},
+ [0xAA80]={d="l"},
+ [0xAA81]={d="l"},
+ [0xAA82]={d="l"},
+ [0xAA83]={d="l"},
+ [0xAA84]={d="l"},
+ [0xAA85]={d="l"},
+ [0xAA86]={d="l"},
+ [0xAA87]={d="l"},
+ [0xAA88]={d="l"},
+ [0xAA89]={d="l"},
+ [0xAA8A]={d="l"},
+ [0xAA8B]={d="l"},
+ [0xAA8C]={d="l"},
+ [0xAA8D]={d="l"},
+ [0xAA8E]={d="l"},
+ [0xAA8F]={d="l"},
+ [0xAA90]={d="l"},
+ [0xAA91]={d="l"},
+ [0xAA92]={d="l"},
+ [0xAA93]={d="l"},
+ [0xAA94]={d="l"},
+ [0xAA95]={d="l"},
+ [0xAA96]={d="l"},
+ [0xAA97]={d="l"},
+ [0xAA98]={d="l"},
+ [0xAA99]={d="l"},
+ [0xAA9A]={d="l"},
+ [0xAA9B]={d="l"},
+ [0xAA9C]={d="l"},
+ [0xAA9D]={d="l"},
+ [0xAA9E]={d="l"},
+ [0xAA9F]={d="l"},
+ [0xAAA0]={d="l"},
+ [0xAAA1]={d="l"},
+ [0xAAA2]={d="l"},
+ [0xAAA3]={d="l"},
+ [0xAAA4]={d="l"},
+ [0xAAA5]={d="l"},
+ [0xAAA6]={d="l"},
+ [0xAAA7]={d="l"},
+ [0xAAA8]={d="l"},
+ [0xAAA9]={d="l"},
+ [0xAAAA]={d="l"},
+ [0xAAAB]={d="l"},
+ [0xAAAC]={d="l"},
+ [0xAAAD]={d="l"},
+ [0xAAAE]={d="l"},
+ [0xAAAF]={d="l"},
+ [0xAAB0]={d="nsm"},
+ [0xAAB1]={d="l"},
+ [0xAAB2]={d="nsm"},
+ [0xAAB3]={d="nsm"},
+ [0xAAB4]={d="nsm"},
+ [0xAAB5]={d="l"},
+ [0xAAB6]={d="l"},
+ [0xAAB7]={d="nsm"},
+ [0xAAB8]={d="nsm"},
+ [0xAAB9]={d="l"},
+ [0xAABA]={d="l"},
+ [0xAABB]={d="l"},
+ [0xAABC]={d="l"},
+ [0xAABD]={d="l"},
+ [0xAABE]={d="nsm"},
+ [0xAABF]={d="nsm"},
+ [0xAAC0]={d="l"},
+ [0xAAC1]={d="nsm"},
+ [0xAAC2]={d="l"},
+ [0xAADB]={d="l"},
+ [0xAADC]={d="l"},
+ [0xAADD]={d="l"},
+ [0xAADE]={d="l"},
+ [0xAADF]={d="l"},
+ [0xAAE0]={d="l"},
+ [0xAAE1]={d="l"},
+ [0xAAE2]={d="l"},
+ [0xAAE3]={d="l"},
+ [0xAAE4]={d="l"},
+ [0xAAE5]={d="l"},
+ [0xAAE6]={d="l"},
+ [0xAAE7]={d="l"},
+ [0xAAE8]={d="l"},
+ [0xAAE9]={d="l"},
+ [0xAAEA]={d="l"},
+ [0xAAEB]={d="l"},
+ [0xAAEC]={d="nsm"},
+ [0xAAED]={d="nsm"},
+ [0xAAEE]={d="l"},
+ [0xAAEF]={d="l"},
+ [0xAAF0]={d="l"},
+ [0xAAF1]={d="l"},
+ [0xAAF2]={d="l"},
+ [0xAAF3]={d="l"},
+ [0xAAF4]={d="l"},
+ [0xAAF5]={d="l"},
+ [0xAAF6]={d="nsm"},
+ [0xAB01]={d="l"},
+ [0xAB02]={d="l"},
+ [0xAB03]={d="l"},
+ [0xAB04]={d="l"},
+ [0xAB05]={d="l"},
+ [0xAB06]={d="l"},
+ [0xAB09]={d="l"},
+ [0xAB0A]={d="l"},
+ [0xAB0B]={d="l"},
+ [0xAB0C]={d="l"},
+ [0xAB0D]={d="l"},
+ [0xAB0E]={d="l"},
+ [0xAB11]={d="l"},
+ [0xAB12]={d="l"},
+ [0xAB13]={d="l"},
+ [0xAB14]={d="l"},
+ [0xAB15]={d="l"},
+ [0xAB16]={d="l"},
+ [0xAB20]={d="l"},
+ [0xAB21]={d="l"},
+ [0xAB22]={d="l"},
+ [0xAB23]={d="l"},
+ [0xAB24]={d="l"},
+ [0xAB25]={d="l"},
+ [0xAB26]={d="l"},
+ [0xAB28]={d="l"},
+ [0xAB29]={d="l"},
+ [0xAB2A]={d="l"},
+ [0xAB2B]={d="l"},
+ [0xAB2C]={d="l"},
+ [0xAB2D]={d="l"},
+ [0xAB2E]={d="l"},
+ [0xAB30]={d="l"},
+ [0xAB31]={d="l"},
+ [0xAB32]={d="l"},
+ [0xAB33]={d="l"},
+ [0xAB34]={d="l"},
+ [0xAB35]={d="l"},
+ [0xAB36]={d="l"},
+ [0xAB37]={d="l"},
+ [0xAB38]={d="l"},
+ [0xAB39]={d="l"},
+ [0xAB3A]={d="l"},
+ [0xAB3B]={d="l"},
+ [0xAB3C]={d="l"},
+ [0xAB3D]={d="l"},
+ [0xAB3E]={d="l"},
+ [0xAB3F]={d="l"},
+ [0xAB40]={d="l"},
+ [0xAB41]={d="l"},
+ [0xAB42]={d="l"},
+ [0xAB43]={d="l"},
+ [0xAB44]={d="l"},
+ [0xAB45]={d="l"},
+ [0xAB46]={d="l"},
+ [0xAB47]={d="l"},
+ [0xAB48]={d="l"},
+ [0xAB49]={d="l"},
+ [0xAB4A]={d="l"},
+ [0xAB4B]={d="l"},
+ [0xAB4C]={d="l"},
+ [0xAB4D]={d="l"},
+ [0xAB4E]={d="l"},
+ [0xAB4F]={d="l"},
+ [0xAB50]={d="l"},
+ [0xAB51]={d="l"},
+ [0xAB52]={d="l"},
+ [0xAB53]={d="l"},
+ [0xAB54]={d="l"},
+ [0xAB55]={d="l"},
+ [0xAB56]={d="l"},
+ [0xAB57]={d="l"},
+ [0xAB58]={d="l"},
+ [0xAB59]={d="l"},
+ [0xAB5A]={d="l"},
+ [0xAB5B]={d="l"},
+ [0xAB5C]={d="l"},
+ [0xAB5D]={d="l"},
+ [0xAB5E]={d="l"},
+ [0xAB5F]={d="l"},
+ [0xAB60]={d="l"},
+ [0xAB61]={d="l"},
+ [0xAB62]={d="l"},
+ [0xAB63]={d="l"},
+ [0xAB64]={d="l"},
+ [0xAB65]={d="l"},
+ [0xAB66]={d="l"},
+ [0xAB67]={d="l"},
+ [0xAB68]={d="l"},
+ [0xAB69]={d="l"},
+ [0xAB6A]={d="on"},
+ [0xAB6B]={d="on"},
+ [0xAB70]={d="l"},
+ [0xAB71]={d="l"},
+ [0xAB72]={d="l"},
+ [0xAB73]={d="l"},
+ [0xAB74]={d="l"},
+ [0xAB75]={d="l"},
+ [0xAB76]={d="l"},
+ [0xAB77]={d="l"},
+ [0xAB78]={d="l"},
+ [0xAB79]={d="l"},
+ [0xAB7A]={d="l"},
+ [0xAB7B]={d="l"},
+ [0xAB7C]={d="l"},
+ [0xAB7D]={d="l"},
+ [0xAB7E]={d="l"},
+ [0xAB7F]={d="l"},
+ [0xAB80]={d="l"},
+ [0xAB81]={d="l"},
+ [0xAB82]={d="l"},
+ [0xAB83]={d="l"},
+ [0xAB84]={d="l"},
+ [0xAB85]={d="l"},
+ [0xAB86]={d="l"},
+ [0xAB87]={d="l"},
+ [0xAB88]={d="l"},
+ [0xAB89]={d="l"},
+ [0xAB8A]={d="l"},
+ [0xAB8B]={d="l"},
+ [0xAB8C]={d="l"},
+ [0xAB8D]={d="l"},
+ [0xAB8E]={d="l"},
+ [0xAB8F]={d="l"},
+ [0xAB90]={d="l"},
+ [0xAB91]={d="l"},
+ [0xAB92]={d="l"},
+ [0xAB93]={d="l"},
+ [0xAB94]={d="l"},
+ [0xAB95]={d="l"},
+ [0xAB96]={d="l"},
+ [0xAB97]={d="l"},
+ [0xAB98]={d="l"},
+ [0xAB99]={d="l"},
+ [0xAB9A]={d="l"},
+ [0xAB9B]={d="l"},
+ [0xAB9C]={d="l"},
+ [0xAB9D]={d="l"},
+ [0xAB9E]={d="l"},
+ [0xAB9F]={d="l"},
+ [0xABA0]={d="l"},
+ [0xABA1]={d="l"},
+ [0xABA2]={d="l"},
+ [0xABA3]={d="l"},
+ [0xABA4]={d="l"},
+ [0xABA5]={d="l"},
+ [0xABA6]={d="l"},
+ [0xABA7]={d="l"},
+ [0xABA8]={d="l"},
+ [0xABA9]={d="l"},
+ [0xABAA]={d="l"},
+ [0xABAB]={d="l"},
+ [0xABAC]={d="l"},
+ [0xABAD]={d="l"},
+ [0xABAE]={d="l"},
+ [0xABAF]={d="l"},
+ [0xABB0]={d="l"},
+ [0xABB1]={d="l"},
+ [0xABB2]={d="l"},
+ [0xABB3]={d="l"},
+ [0xABB4]={d="l"},
+ [0xABB5]={d="l"},
+ [0xABB6]={d="l"},
+ [0xABB7]={d="l"},
+ [0xABB8]={d="l"},
+ [0xABB9]={d="l"},
+ [0xABBA]={d="l"},
+ [0xABBB]={d="l"},
+ [0xABBC]={d="l"},
+ [0xABBD]={d="l"},
+ [0xABBE]={d="l"},
+ [0xABBF]={d="l"},
+ [0xABC0]={d="l"},
+ [0xABC1]={d="l"},
+ [0xABC2]={d="l"},
+ [0xABC3]={d="l"},
+ [0xABC4]={d="l"},
+ [0xABC5]={d="l"},
+ [0xABC6]={d="l"},
+ [0xABC7]={d="l"},
+ [0xABC8]={d="l"},
+ [0xABC9]={d="l"},
+ [0xABCA]={d="l"},
+ [0xABCB]={d="l"},
+ [0xABCC]={d="l"},
+ [0xABCD]={d="l"},
+ [0xABCE]={d="l"},
+ [0xABCF]={d="l"},
+ [0xABD0]={d="l"},
+ [0xABD1]={d="l"},
+ [0xABD2]={d="l"},
+ [0xABD3]={d="l"},
+ [0xABD4]={d="l"},
+ [0xABD5]={d="l"},
+ [0xABD6]={d="l"},
+ [0xABD7]={d="l"},
+ [0xABD8]={d="l"},
+ [0xABD9]={d="l"},
+ [0xABDA]={d="l"},
+ [0xABDB]={d="l"},
+ [0xABDC]={d="l"},
+ [0xABDD]={d="l"},
+ [0xABDE]={d="l"},
+ [0xABDF]={d="l"},
+ [0xABE0]={d="l"},
+ [0xABE1]={d="l"},
+ [0xABE2]={d="l"},
+ [0xABE3]={d="l"},
+ [0xABE4]={d="l"},
+ [0xABE5]={d="nsm"},
+ [0xABE6]={d="l"},
+ [0xABE7]={d="l"},
+ [0xABE8]={d="nsm"},
+ [0xABE9]={d="l"},
+ [0xABEA]={d="l"},
+ [0xABEB]={d="l"},
+ [0xABEC]={d="l"},
+ [0xABED]={d="nsm"},
+ [0xABF0]={d="l"},
+ [0xABF1]={d="l"},
+ [0xABF2]={d="l"},
+ [0xABF3]={d="l"},
+ [0xABF4]={d="l"},
+ [0xABF5]={d="l"},
+ [0xABF6]={d="l"},
+ [0xABF7]={d="l"},
+ [0xABF8]={d="l"},
+ [0xABF9]={d="l"},
+ [0xD7B0]={d="l"},
+ [0xD7B1]={d="l"},
+ [0xD7B2]={d="l"},
+ [0xD7B3]={d="l"},
+ [0xD7B4]={d="l"},
+ [0xD7B5]={d="l"},
+ [0xD7B6]={d="l"},
+ [0xD7B7]={d="l"},
+ [0xD7B8]={d="l"},
+ [0xD7B9]={d="l"},
+ [0xD7BA]={d="l"},
+ [0xD7BB]={d="l"},
+ [0xD7BC]={d="l"},
+ [0xD7BD]={d="l"},
+ [0xD7BE]={d="l"},
+ [0xD7BF]={d="l"},
+ [0xD7C0]={d="l"},
+ [0xD7C1]={d="l"},
+ [0xD7C2]={d="l"},
+ [0xD7C3]={d="l"},
+ [0xD7C4]={d="l"},
+ [0xD7C5]={d="l"},
+ [0xD7C6]={d="l"},
+ [0xD7CB]={d="l"},
+ [0xD7CC]={d="l"},
+ [0xD7CD]={d="l"},
+ [0xD7CE]={d="l"},
+ [0xD7CF]={d="l"},
+ [0xD7D0]={d="l"},
+ [0xD7D1]={d="l"},
+ [0xD7D2]={d="l"},
+ [0xD7D3]={d="l"},
+ [0xD7D4]={d="l"},
+ [0xD7D5]={d="l"},
+ [0xD7D6]={d="l"},
+ [0xD7D7]={d="l"},
+ [0xD7D8]={d="l"},
+ [0xD7D9]={d="l"},
+ [0xD7DA]={d="l"},
+ [0xD7DB]={d="l"},
+ [0xD7DC]={d="l"},
+ [0xD7DD]={d="l"},
+ [0xD7DE]={d="l"},
+ [0xD7DF]={d="l"},
+ [0xD7E0]={d="l"},
+ [0xD7E1]={d="l"},
+ [0xD7E2]={d="l"},
+ [0xD7E3]={d="l"},
+ [0xD7E4]={d="l"},
+ [0xD7E5]={d="l"},
+ [0xD7E6]={d="l"},
+ [0xD7E7]={d="l"},
+ [0xD7E8]={d="l"},
+ [0xD7E9]={d="l"},
+ [0xD7EA]={d="l"},
+ [0xD7EB]={d="l"},
+ [0xD7EC]={d="l"},
+ [0xD7ED]={d="l"},
+ [0xD7EE]={d="l"},
+ [0xD7EF]={d="l"},
+ [0xD7F0]={d="l"},
+ [0xD7F1]={d="l"},
+ [0xD7F2]={d="l"},
+ [0xD7F3]={d="l"},
+ [0xD7F4]={d="l"},
+ [0xD7F5]={d="l"},
+ [0xD7F6]={d="l"},
+ [0xD7F7]={d="l"},
+ [0xD7F8]={d="l"},
+ [0xD7F9]={d="l"},
+ [0xD7FA]={d="l"},
+ [0xD7FB]={d="l"},
+ [0xD800]={d="l"},
+ [0xDB7F]={d="l"},
+ [0xDB80]={d="l"},
+ [0xDBFF]={d="l"},
+ [0xDC00]={d="l"},
+ [0xDFFF]={d="l"},
+ [0xE000]={d="l"},
+ [0xF8FF]={d="l"},
+ [0xF900]={d="l"},
+ [0xF901]={d="l"},
+ [0xF902]={d="l"},
+ [0xF903]={d="l"},
+ [0xF904]={d="l"},
+ [0xF905]={d="l"},
+ [0xF906]={d="l"},
+ [0xF907]={d="l"},
+ [0xF908]={d="l"},
+ [0xF909]={d="l"},
+ [0xF90A]={d="l"},
+ [0xF90B]={d="l"},
+ [0xF90C]={d="l"},
+ [0xF90D]={d="l"},
+ [0xF90E]={d="l"},
+ [0xF90F]={d="l"},
+ [0xF910]={d="l"},
+ [0xF911]={d="l"},
+ [0xF912]={d="l"},
+ [0xF913]={d="l"},
+ [0xF914]={d="l"},
+ [0xF915]={d="l"},
+ [0xF916]={d="l"},
+ [0xF917]={d="l"},
+ [0xF918]={d="l"},
+ [0xF919]={d="l"},
+ [0xF91A]={d="l"},
+ [0xF91B]={d="l"},
+ [0xF91C]={d="l"},
+ [0xF91D]={d="l"},
+ [0xF91E]={d="l"},
+ [0xF91F]={d="l"},
+ [0xF920]={d="l"},
+ [0xF921]={d="l"},
+ [0xF922]={d="l"},
+ [0xF923]={d="l"},
+ [0xF924]={d="l"},
+ [0xF925]={d="l"},
+ [0xF926]={d="l"},
+ [0xF927]={d="l"},
+ [0xF928]={d="l"},
+ [0xF929]={d="l"},
+ [0xF92A]={d="l"},
+ [0xF92B]={d="l"},
+ [0xF92C]={d="l"},
+ [0xF92D]={d="l"},
+ [0xF92E]={d="l"},
+ [0xF92F]={d="l"},
+ [0xF930]={d="l"},
+ [0xF931]={d="l"},
+ [0xF932]={d="l"},
+ [0xF933]={d="l"},
+ [0xF934]={d="l"},
+ [0xF935]={d="l"},
+ [0xF936]={d="l"},
+ [0xF937]={d="l"},
+ [0xF938]={d="l"},
+ [0xF939]={d="l"},
+ [0xF93A]={d="l"},
+ [0xF93B]={d="l"},
+ [0xF93C]={d="l"},
+ [0xF93D]={d="l"},
+ [0xF93E]={d="l"},
+ [0xF93F]={d="l"},
+ [0xF940]={d="l"},
+ [0xF941]={d="l"},
+ [0xF942]={d="l"},
+ [0xF943]={d="l"},
+ [0xF944]={d="l"},
+ [0xF945]={d="l"},
+ [0xF946]={d="l"},
+ [0xF947]={d="l"},
+ [0xF948]={d="l"},
+ [0xF949]={d="l"},
+ [0xF94A]={d="l"},
+ [0xF94B]={d="l"},
+ [0xF94C]={d="l"},
+ [0xF94D]={d="l"},
+ [0xF94E]={d="l"},
+ [0xF94F]={d="l"},
+ [0xF950]={d="l"},
+ [0xF951]={d="l"},
+ [0xF952]={d="l"},
+ [0xF953]={d="l"},
+ [0xF954]={d="l"},
+ [0xF955]={d="l"},
+ [0xF956]={d="l"},
+ [0xF957]={d="l"},
+ [0xF958]={d="l"},
+ [0xF959]={d="l"},
+ [0xF95A]={d="l"},
+ [0xF95B]={d="l"},
+ [0xF95C]={d="l"},
+ [0xF95D]={d="l"},
+ [0xF95E]={d="l"},
+ [0xF95F]={d="l"},
+ [0xF960]={d="l"},
+ [0xF961]={d="l"},
+ [0xF962]={d="l"},
+ [0xF963]={d="l"},
+ [0xF964]={d="l"},
+ [0xF965]={d="l"},
+ [0xF966]={d="l"},
+ [0xF967]={d="l"},
+ [0xF968]={d="l"},
+ [0xF969]={d="l"},
+ [0xF96A]={d="l"},
+ [0xF96B]={d="l"},
+ [0xF96C]={d="l"},
+ [0xF96D]={d="l"},
+ [0xF96E]={d="l"},
+ [0xF96F]={d="l"},
+ [0xF970]={d="l"},
+ [0xF971]={d="l"},
+ [0xF972]={d="l"},
+ [0xF973]={d="l"},
+ [0xF974]={d="l"},
+ [0xF975]={d="l"},
+ [0xF976]={d="l"},
+ [0xF977]={d="l"},
+ [0xF978]={d="l"},
+ [0xF979]={d="l"},
+ [0xF97A]={d="l"},
+ [0xF97B]={d="l"},
+ [0xF97C]={d="l"},
+ [0xF97D]={d="l"},
+ [0xF97E]={d="l"},
+ [0xF97F]={d="l"},
+ [0xF980]={d="l"},
+ [0xF981]={d="l"},
+ [0xF982]={d="l"},
+ [0xF983]={d="l"},
+ [0xF984]={d="l"},
+ [0xF985]={d="l"},
+ [0xF986]={d="l"},
+ [0xF987]={d="l"},
+ [0xF988]={d="l"},
+ [0xF989]={d="l"},
+ [0xF98A]={d="l"},
+ [0xF98B]={d="l"},
+ [0xF98C]={d="l"},
+ [0xF98D]={d="l"},
+ [0xF98E]={d="l"},
+ [0xF98F]={d="l"},
+ [0xF990]={d="l"},
+ [0xF991]={d="l"},
+ [0xF992]={d="l"},
+ [0xF993]={d="l"},
+ [0xF994]={d="l"},
+ [0xF995]={d="l"},
+ [0xF996]={d="l"},
+ [0xF997]={d="l"},
+ [0xF998]={d="l"},
+ [0xF999]={d="l"},
+ [0xF99A]={d="l"},
+ [0xF99B]={d="l"},
+ [0xF99C]={d="l"},
+ [0xF99D]={d="l"},
+ [0xF99E]={d="l"},
+ [0xF99F]={d="l"},
+ [0xF9A0]={d="l"},
+ [0xF9A1]={d="l"},
+ [0xF9A2]={d="l"},
+ [0xF9A3]={d="l"},
+ [0xF9A4]={d="l"},
+ [0xF9A5]={d="l"},
+ [0xF9A6]={d="l"},
+ [0xF9A7]={d="l"},
+ [0xF9A8]={d="l"},
+ [0xF9A9]={d="l"},
+ [0xF9AA]={d="l"},
+ [0xF9AB]={d="l"},
+ [0xF9AC]={d="l"},
+ [0xF9AD]={d="l"},
+ [0xF9AE]={d="l"},
+ [0xF9AF]={d="l"},
+ [0xF9B0]={d="l"},
+ [0xF9B1]={d="l"},
+ [0xF9B2]={d="l"},
+ [0xF9B3]={d="l"},
+ [0xF9B4]={d="l"},
+ [0xF9B5]={d="l"},
+ [0xF9B6]={d="l"},
+ [0xF9B7]={d="l"},
+ [0xF9B8]={d="l"},
+ [0xF9B9]={d="l"},
+ [0xF9BA]={d="l"},
+ [0xF9BB]={d="l"},
+ [0xF9BC]={d="l"},
+ [0xF9BD]={d="l"},
+ [0xF9BE]={d="l"},
+ [0xF9BF]={d="l"},
+ [0xF9C0]={d="l"},
+ [0xF9C1]={d="l"},
+ [0xF9C2]={d="l"},
+ [0xF9C3]={d="l"},
+ [0xF9C4]={d="l"},
+ [0xF9C5]={d="l"},
+ [0xF9C6]={d="l"},
+ [0xF9C7]={d="l"},
+ [0xF9C8]={d="l"},
+ [0xF9C9]={d="l"},
+ [0xF9CA]={d="l"},
+ [0xF9CB]={d="l"},
+ [0xF9CC]={d="l"},
+ [0xF9CD]={d="l"},
+ [0xF9CE]={d="l"},
+ [0xF9CF]={d="l"},
+ [0xF9D0]={d="l"},
+ [0xF9D1]={d="l"},
+ [0xF9D2]={d="l"},
+ [0xF9D3]={d="l"},
+ [0xF9D4]={d="l"},
+ [0xF9D5]={d="l"},
+ [0xF9D6]={d="l"},
+ [0xF9D7]={d="l"},
+ [0xF9D8]={d="l"},
+ [0xF9D9]={d="l"},
+ [0xF9DA]={d="l"},
+ [0xF9DB]={d="l"},
+ [0xF9DC]={d="l"},
+ [0xF9DD]={d="l"},
+ [0xF9DE]={d="l"},
+ [0xF9DF]={d="l"},
+ [0xF9E0]={d="l"},
+ [0xF9E1]={d="l"},
+ [0xF9E2]={d="l"},
+ [0xF9E3]={d="l"},
+ [0xF9E4]={d="l"},
+ [0xF9E5]={d="l"},
+ [0xF9E6]={d="l"},
+ [0xF9E7]={d="l"},
+ [0xF9E8]={d="l"},
+ [0xF9E9]={d="l"},
+ [0xF9EA]={d="l"},
+ [0xF9EB]={d="l"},
+ [0xF9EC]={d="l"},
+ [0xF9ED]={d="l"},
+ [0xF9EE]={d="l"},
+ [0xF9EF]={d="l"},
+ [0xF9F0]={d="l"},
+ [0xF9F1]={d="l"},
+ [0xF9F2]={d="l"},
+ [0xF9F3]={d="l"},
+ [0xF9F4]={d="l"},
+ [0xF9F5]={d="l"},
+ [0xF9F6]={d="l"},
+ [0xF9F7]={d="l"},
+ [0xF9F8]={d="l"},
+ [0xF9F9]={d="l"},
+ [0xF9FA]={d="l"},
+ [0xF9FB]={d="l"},
+ [0xF9FC]={d="l"},
+ [0xF9FD]={d="l"},
+ [0xF9FE]={d="l"},
+ [0xF9FF]={d="l"},
+ [0xFA00]={d="l"},
+ [0xFA01]={d="l"},
+ [0xFA02]={d="l"},
+ [0xFA03]={d="l"},
+ [0xFA04]={d="l"},
+ [0xFA05]={d="l"},
+ [0xFA06]={d="l"},
+ [0xFA07]={d="l"},
+ [0xFA08]={d="l"},
+ [0xFA09]={d="l"},
+ [0xFA0A]={d="l"},
+ [0xFA0B]={d="l"},
+ [0xFA0C]={d="l"},
+ [0xFA0D]={d="l"},
+ [0xFA0E]={d="l"},
+ [0xFA0F]={d="l"},
+ [0xFA10]={d="l"},
+ [0xFA11]={d="l"},
+ [0xFA12]={d="l"},
+ [0xFA13]={d="l"},
+ [0xFA14]={d="l"},
+ [0xFA15]={d="l"},
+ [0xFA16]={d="l"},
+ [0xFA17]={d="l"},
+ [0xFA18]={d="l"},
+ [0xFA19]={d="l"},
+ [0xFA1A]={d="l"},
+ [0xFA1B]={d="l"},
+ [0xFA1C]={d="l"},
+ [0xFA1D]={d="l"},
+ [0xFA1E]={d="l"},
+ [0xFA1F]={d="l"},
+ [0xFA20]={d="l"},
+ [0xFA21]={d="l"},
+ [0xFA22]={d="l"},
+ [0xFA23]={d="l"},
+ [0xFA24]={d="l"},
+ [0xFA25]={d="l"},
+ [0xFA26]={d="l"},
+ [0xFA27]={d="l"},
+ [0xFA28]={d="l"},
+ [0xFA29]={d="l"},
+ [0xFA2A]={d="l"},
+ [0xFA2B]={d="l"},
+ [0xFA2C]={d="l"},
+ [0xFA2D]={d="l"},
+ [0xFA2E]={d="l"},
+ [0xFA2F]={d="l"},
+ [0xFA30]={d="l"},
+ [0xFA31]={d="l"},
+ [0xFA32]={d="l"},
+ [0xFA33]={d="l"},
+ [0xFA34]={d="l"},
+ [0xFA35]={d="l"},
+ [0xFA36]={d="l"},
+ [0xFA37]={d="l"},
+ [0xFA38]={d="l"},
+ [0xFA39]={d="l"},
+ [0xFA3A]={d="l"},
+ [0xFA3B]={d="l"},
+ [0xFA3C]={d="l"},
+ [0xFA3D]={d="l"},
+ [0xFA3E]={d="l"},
+ [0xFA3F]={d="l"},
+ [0xFA40]={d="l"},
+ [0xFA41]={d="l"},
+ [0xFA42]={d="l"},
+ [0xFA43]={d="l"},
+ [0xFA44]={d="l"},
+ [0xFA45]={d="l"},
+ [0xFA46]={d="l"},
+ [0xFA47]={d="l"},
+ [0xFA48]={d="l"},
+ [0xFA49]={d="l"},
+ [0xFA4A]={d="l"},
+ [0xFA4B]={d="l"},
+ [0xFA4C]={d="l"},
+ [0xFA4D]={d="l"},
+ [0xFA4E]={d="l"},
+ [0xFA4F]={d="l"},
+ [0xFA50]={d="l"},
+ [0xFA51]={d="l"},
+ [0xFA52]={d="l"},
+ [0xFA53]={d="l"},
+ [0xFA54]={d="l"},
+ [0xFA55]={d="l"},
+ [0xFA56]={d="l"},
+ [0xFA57]={d="l"},
+ [0xFA58]={d="l"},
+ [0xFA59]={d="l"},
+ [0xFA5A]={d="l"},
+ [0xFA5B]={d="l"},
+ [0xFA5C]={d="l"},
+ [0xFA5D]={d="l"},
+ [0xFA5E]={d="l"},
+ [0xFA5F]={d="l"},
+ [0xFA60]={d="l"},
+ [0xFA61]={d="l"},
+ [0xFA62]={d="l"},
+ [0xFA63]={d="l"},
+ [0xFA64]={d="l"},
+ [0xFA65]={d="l"},
+ [0xFA66]={d="l"},
+ [0xFA67]={d="l"},
+ [0xFA68]={d="l"},
+ [0xFA69]={d="l"},
+ [0xFA6A]={d="l"},
+ [0xFA6B]={d="l"},
+ [0xFA6C]={d="l"},
+ [0xFA6D]={d="l"},
+ [0xFA70]={d="l"},
+ [0xFA71]={d="l"},
+ [0xFA72]={d="l"},
+ [0xFA73]={d="l"},
+ [0xFA74]={d="l"},
+ [0xFA75]={d="l"},
+ [0xFA76]={d="l"},
+ [0xFA77]={d="l"},
+ [0xFA78]={d="l"},
+ [0xFA79]={d="l"},
+ [0xFA7A]={d="l"},
+ [0xFA7B]={d="l"},
+ [0xFA7C]={d="l"},
+ [0xFA7D]={d="l"},
+ [0xFA7E]={d="l"},
+ [0xFA7F]={d="l"},
+ [0xFA80]={d="l"},
+ [0xFA81]={d="l"},
+ [0xFA82]={d="l"},
+ [0xFA83]={d="l"},
+ [0xFA84]={d="l"},
+ [0xFA85]={d="l"},
+ [0xFA86]={d="l"},
+ [0xFA87]={d="l"},
+ [0xFA88]={d="l"},
+ [0xFA89]={d="l"},
+ [0xFA8A]={d="l"},
+ [0xFA8B]={d="l"},
+ [0xFA8C]={d="l"},
+ [0xFA8D]={d="l"},
+ [0xFA8E]={d="l"},
+ [0xFA8F]={d="l"},
+ [0xFA90]={d="l"},
+ [0xFA91]={d="l"},
+ [0xFA92]={d="l"},
+ [0xFA93]={d="l"},
+ [0xFA94]={d="l"},
+ [0xFA95]={d="l"},
+ [0xFA96]={d="l"},
+ [0xFA97]={d="l"},
+ [0xFA98]={d="l"},
+ [0xFA99]={d="l"},
+ [0xFA9A]={d="l"},
+ [0xFA9B]={d="l"},
+ [0xFA9C]={d="l"},
+ [0xFA9D]={d="l"},
+ [0xFA9E]={d="l"},
+ [0xFA9F]={d="l"},
+ [0xFAA0]={d="l"},
+ [0xFAA1]={d="l"},
+ [0xFAA2]={d="l"},
+ [0xFAA3]={d="l"},
+ [0xFAA4]={d="l"},
+ [0xFAA5]={d="l"},
+ [0xFAA6]={d="l"},
+ [0xFAA7]={d="l"},
+ [0xFAA8]={d="l"},
+ [0xFAA9]={d="l"},
+ [0xFAAA]={d="l"},
+ [0xFAAB]={d="l"},
+ [0xFAAC]={d="l"},
+ [0xFAAD]={d="l"},
+ [0xFAAE]={d="l"},
+ [0xFAAF]={d="l"},
+ [0xFAB0]={d="l"},
+ [0xFAB1]={d="l"},
+ [0xFAB2]={d="l"},
+ [0xFAB3]={d="l"},
+ [0xFAB4]={d="l"},
+ [0xFAB5]={d="l"},
+ [0xFAB6]={d="l"},
+ [0xFAB7]={d="l"},
+ [0xFAB8]={d="l"},
+ [0xFAB9]={d="l"},
+ [0xFABA]={d="l"},
+ [0xFABB]={d="l"},
+ [0xFABC]={d="l"},
+ [0xFABD]={d="l"},
+ [0xFABE]={d="l"},
+ [0xFABF]={d="l"},
+ [0xFAC0]={d="l"},
+ [0xFAC1]={d="l"},
+ [0xFAC2]={d="l"},
+ [0xFAC3]={d="l"},
+ [0xFAC4]={d="l"},
+ [0xFAC5]={d="l"},
+ [0xFAC6]={d="l"},
+ [0xFAC7]={d="l"},
+ [0xFAC8]={d="l"},
+ [0xFAC9]={d="l"},
+ [0xFACA]={d="l"},
+ [0xFACB]={d="l"},
+ [0xFACC]={d="l"},
+ [0xFACD]={d="l"},
+ [0xFACE]={d="l"},
+ [0xFACF]={d="l"},
+ [0xFAD0]={d="l"},
+ [0xFAD1]={d="l"},
+ [0xFAD2]={d="l"},
+ [0xFAD3]={d="l"},
+ [0xFAD4]={d="l"},
+ [0xFAD5]={d="l"},
+ [0xFAD6]={d="l"},
+ [0xFAD7]={d="l"},
+ [0xFAD8]={d="l"},
+ [0xFAD9]={d="l"},
+ [0xFB00]={d="l"},
+ [0xFB01]={d="l"},
+ [0xFB02]={d="l"},
+ [0xFB03]={d="l"},
+ [0xFB04]={d="l"},
+ [0xFB05]={d="l"},
+ [0xFB06]={d="l"},
+ [0xFB13]={d="l"},
+ [0xFB14]={d="l"},
+ [0xFB15]={d="l"},
+ [0xFB16]={d="l"},
+ [0xFB17]={d="l"},
+ [0xFB1D]={d="r"},
+ [0xFB1E]={d="nsm"},
+ [0xFB1F]={d="r"},
+ [0xFB20]={d="r"},
+ [0xFB21]={d="r"},
+ [0xFB22]={d="r"},
+ [0xFB23]={d="r"},
+ [0xFB24]={d="r"},
+ [0xFB25]={d="r"},
+ [0xFB26]={d="r"},
+ [0xFB27]={d="r"},
+ [0xFB28]={d="r"},
+ [0xFB29]={d="es"},
+ [0xFB2A]={d="r"},
+ [0xFB2B]={d="r"},
+ [0xFB2C]={d="r"},
+ [0xFB2D]={d="r"},
+ [0xFB2E]={d="r"},
+ [0xFB2F]={d="r"},
+ [0xFB30]={d="r"},
+ [0xFB31]={d="r"},
+ [0xFB32]={d="r"},
+ [0xFB33]={d="r"},
+ [0xFB34]={d="r"},
+ [0xFB35]={d="r"},
+ [0xFB36]={d="r"},
+ [0xFB38]={d="r"},
+ [0xFB39]={d="r"},
+ [0xFB3A]={d="r"},
+ [0xFB3B]={d="r"},
+ [0xFB3C]={d="r"},
+ [0xFB3E]={d="r"},
+ [0xFB40]={d="r"},
+ [0xFB41]={d="r"},
+ [0xFB43]={d="r"},
+ [0xFB44]={d="r"},
+ [0xFB46]={d="r"},
+ [0xFB47]={d="r"},
+ [0xFB48]={d="r"},
+ [0xFB49]={d="r"},
+ [0xFB4A]={d="r"},
+ [0xFB4B]={d="r"},
+ [0xFB4C]={d="r"},
+ [0xFB4D]={d="r"},
+ [0xFB4E]={d="r"},
+ [0xFB4F]={d="r"},
+ [0xFB50]={d="al"},
+ [0xFB51]={d="al"},
+ [0xFB52]={d="al"},
+ [0xFB53]={d="al"},
+ [0xFB54]={d="al"},
+ [0xFB55]={d="al"},
+ [0xFB56]={d="al"},
+ [0xFB57]={d="al"},
+ [0xFB58]={d="al"},
+ [0xFB59]={d="al"},
+ [0xFB5A]={d="al"},
+ [0xFB5B]={d="al"},
+ [0xFB5C]={d="al"},
+ [0xFB5D]={d="al"},
+ [0xFB5E]={d="al"},
+ [0xFB5F]={d="al"},
+ [0xFB60]={d="al"},
+ [0xFB61]={d="al"},
+ [0xFB62]={d="al"},
+ [0xFB63]={d="al"},
+ [0xFB64]={d="al"},
+ [0xFB65]={d="al"},
+ [0xFB66]={d="al"},
+ [0xFB67]={d="al"},
+ [0xFB68]={d="al"},
+ [0xFB69]={d="al"},
+ [0xFB6A]={d="al"},
+ [0xFB6B]={d="al"},
+ [0xFB6C]={d="al"},
+ [0xFB6D]={d="al"},
+ [0xFB6E]={d="al"},
+ [0xFB6F]={d="al"},
+ [0xFB70]={d="al"},
+ [0xFB71]={d="al"},
+ [0xFB72]={d="al"},
+ [0xFB73]={d="al"},
+ [0xFB74]={d="al"},
+ [0xFB75]={d="al"},
+ [0xFB76]={d="al"},
+ [0xFB77]={d="al"},
+ [0xFB78]={d="al"},
+ [0xFB79]={d="al"},
+ [0xFB7A]={d="al"},
+ [0xFB7B]={d="al"},
+ [0xFB7C]={d="al"},
+ [0xFB7D]={d="al"},
+ [0xFB7E]={d="al"},
+ [0xFB7F]={d="al"},
+ [0xFB80]={d="al"},
+ [0xFB81]={d="al"},
+ [0xFB82]={d="al"},
+ [0xFB83]={d="al"},
+ [0xFB84]={d="al"},
+ [0xFB85]={d="al"},
+ [0xFB86]={d="al"},
+ [0xFB87]={d="al"},
+ [0xFB88]={d="al"},
+ [0xFB89]={d="al"},
+ [0xFB8A]={d="al"},
+ [0xFB8B]={d="al"},
+ [0xFB8C]={d="al"},
+ [0xFB8D]={d="al"},
+ [0xFB8E]={d="al"},
+ [0xFB8F]={d="al"},
+ [0xFB90]={d="al"},
+ [0xFB91]={d="al"},
+ [0xFB92]={d="al"},
+ [0xFB93]={d="al"},
+ [0xFB94]={d="al"},
+ [0xFB95]={d="al"},
+ [0xFB96]={d="al"},
+ [0xFB97]={d="al"},
+ [0xFB98]={d="al"},
+ [0xFB99]={d="al"},
+ [0xFB9A]={d="al"},
+ [0xFB9B]={d="al"},
+ [0xFB9C]={d="al"},
+ [0xFB9D]={d="al"},
+ [0xFB9E]={d="al"},
+ [0xFB9F]={d="al"},
+ [0xFBA0]={d="al"},
+ [0xFBA1]={d="al"},
+ [0xFBA2]={d="al"},
+ [0xFBA3]={d="al"},
+ [0xFBA4]={d="al"},
+ [0xFBA5]={d="al"},
+ [0xFBA6]={d="al"},
+ [0xFBA7]={d="al"},
+ [0xFBA8]={d="al"},
+ [0xFBA9]={d="al"},
+ [0xFBAA]={d="al"},
+ [0xFBAB]={d="al"},
+ [0xFBAC]={d="al"},
+ [0xFBAD]={d="al"},
+ [0xFBAE]={d="al"},
+ [0xFBAF]={d="al"},
+ [0xFBB0]={d="al"},
+ [0xFBB1]={d="al"},
+ [0xFBB2]={d="al"},
+ [0xFBB3]={d="al"},
+ [0xFBB4]={d="al"},
+ [0xFBB5]={d="al"},
+ [0xFBB6]={d="al"},
+ [0xFBB7]={d="al"},
+ [0xFBB8]={d="al"},
+ [0xFBB9]={d="al"},
+ [0xFBBA]={d="al"},
+ [0xFBBB]={d="al"},
+ [0xFBBC]={d="al"},
+ [0xFBBD]={d="al"},
+ [0xFBBE]={d="al"},
+ [0xFBBF]={d="al"},
+ [0xFBC0]={d="al"},
+ [0xFBC1]={d="al"},
+ [0xFBC2]={d="al"},
+ [0xFBD3]={d="al"},
+ [0xFBD4]={d="al"},
+ [0xFBD5]={d="al"},
+ [0xFBD6]={d="al"},
+ [0xFBD7]={d="al"},
+ [0xFBD8]={d="al"},
+ [0xFBD9]={d="al"},
+ [0xFBDA]={d="al"},
+ [0xFBDB]={d="al"},
+ [0xFBDC]={d="al"},
+ [0xFBDD]={d="al"},
+ [0xFBDE]={d="al"},
+ [0xFBDF]={d="al"},
+ [0xFBE0]={d="al"},
+ [0xFBE1]={d="al"},
+ [0xFBE2]={d="al"},
+ [0xFBE3]={d="al"},
+ [0xFBE4]={d="al"},
+ [0xFBE5]={d="al"},
+ [0xFBE6]={d="al"},
+ [0xFBE7]={d="al"},
+ [0xFBE8]={d="al"},
+ [0xFBE9]={d="al"},
+ [0xFBEA]={d="al"},
+ [0xFBEB]={d="al"},
+ [0xFBEC]={d="al"},
+ [0xFBED]={d="al"},
+ [0xFBEE]={d="al"},
+ [0xFBEF]={d="al"},
+ [0xFBF0]={d="al"},
+ [0xFBF1]={d="al"},
+ [0xFBF2]={d="al"},
+ [0xFBF3]={d="al"},
+ [0xFBF4]={d="al"},
+ [0xFBF5]={d="al"},
+ [0xFBF6]={d="al"},
+ [0xFBF7]={d="al"},
+ [0xFBF8]={d="al"},
+ [0xFBF9]={d="al"},
+ [0xFBFA]={d="al"},
+ [0xFBFB]={d="al"},
+ [0xFBFC]={d="al"},
+ [0xFBFD]={d="al"},
+ [0xFBFE]={d="al"},
+ [0xFBFF]={d="al"},
+ [0xFC00]={d="al"},
+ [0xFC01]={d="al"},
+ [0xFC02]={d="al"},
+ [0xFC03]={d="al"},
+ [0xFC04]={d="al"},
+ [0xFC05]={d="al"},
+ [0xFC06]={d="al"},
+ [0xFC07]={d="al"},
+ [0xFC08]={d="al"},
+ [0xFC09]={d="al"},
+ [0xFC0A]={d="al"},
+ [0xFC0B]={d="al"},
+ [0xFC0C]={d="al"},
+ [0xFC0D]={d="al"},
+ [0xFC0E]={d="al"},
+ [0xFC0F]={d="al"},
+ [0xFC10]={d="al"},
+ [0xFC11]={d="al"},
+ [0xFC12]={d="al"},
+ [0xFC13]={d="al"},
+ [0xFC14]={d="al"},
+ [0xFC15]={d="al"},
+ [0xFC16]={d="al"},
+ [0xFC17]={d="al"},
+ [0xFC18]={d="al"},
+ [0xFC19]={d="al"},
+ [0xFC1A]={d="al"},
+ [0xFC1B]={d="al"},
+ [0xFC1C]={d="al"},
+ [0xFC1D]={d="al"},
+ [0xFC1E]={d="al"},
+ [0xFC1F]={d="al"},
+ [0xFC20]={d="al"},
+ [0xFC21]={d="al"},
+ [0xFC22]={d="al"},
+ [0xFC23]={d="al"},
+ [0xFC24]={d="al"},
+ [0xFC25]={d="al"},
+ [0xFC26]={d="al"},
+ [0xFC27]={d="al"},
+ [0xFC28]={d="al"},
+ [0xFC29]={d="al"},
+ [0xFC2A]={d="al"},
+ [0xFC2B]={d="al"},
+ [0xFC2C]={d="al"},
+ [0xFC2D]={d="al"},
+ [0xFC2E]={d="al"},
+ [0xFC2F]={d="al"},
+ [0xFC30]={d="al"},
+ [0xFC31]={d="al"},
+ [0xFC32]={d="al"},
+ [0xFC33]={d="al"},
+ [0xFC34]={d="al"},
+ [0xFC35]={d="al"},
+ [0xFC36]={d="al"},
+ [0xFC37]={d="al"},
+ [0xFC38]={d="al"},
+ [0xFC39]={d="al"},
+ [0xFC3A]={d="al"},
+ [0xFC3B]={d="al"},
+ [0xFC3C]={d="al"},
+ [0xFC3D]={d="al"},
+ [0xFC3E]={d="al"},
+ [0xFC3F]={d="al"},
+ [0xFC40]={d="al"},
+ [0xFC41]={d="al"},
+ [0xFC42]={d="al"},
+ [0xFC43]={d="al"},
+ [0xFC44]={d="al"},
+ [0xFC45]={d="al"},
+ [0xFC46]={d="al"},
+ [0xFC47]={d="al"},
+ [0xFC48]={d="al"},
+ [0xFC49]={d="al"},
+ [0xFC4A]={d="al"},
+ [0xFC4B]={d="al"},
+ [0xFC4C]={d="al"},
+ [0xFC4D]={d="al"},
+ [0xFC4E]={d="al"},
+ [0xFC4F]={d="al"},
+ [0xFC50]={d="al"},
+ [0xFC51]={d="al"},
+ [0xFC52]={d="al"},
+ [0xFC53]={d="al"},
+ [0xFC54]={d="al"},
+ [0xFC55]={d="al"},
+ [0xFC56]={d="al"},
+ [0xFC57]={d="al"},
+ [0xFC58]={d="al"},
+ [0xFC59]={d="al"},
+ [0xFC5A]={d="al"},
+ [0xFC5B]={d="al"},
+ [0xFC5C]={d="al"},
+ [0xFC5D]={d="al"},
+ [0xFC5E]={d="al"},
+ [0xFC5F]={d="al"},
+ [0xFC60]={d="al"},
+ [0xFC61]={d="al"},
+ [0xFC62]={d="al"},
+ [0xFC63]={d="al"},
+ [0xFC64]={d="al"},
+ [0xFC65]={d="al"},
+ [0xFC66]={d="al"},
+ [0xFC67]={d="al"},
+ [0xFC68]={d="al"},
+ [0xFC69]={d="al"},
+ [0xFC6A]={d="al"},
+ [0xFC6B]={d="al"},
+ [0xFC6C]={d="al"},
+ [0xFC6D]={d="al"},
+ [0xFC6E]={d="al"},
+ [0xFC6F]={d="al"},
+ [0xFC70]={d="al"},
+ [0xFC71]={d="al"},
+ [0xFC72]={d="al"},
+ [0xFC73]={d="al"},
+ [0xFC74]={d="al"},
+ [0xFC75]={d="al"},
+ [0xFC76]={d="al"},
+ [0xFC77]={d="al"},
+ [0xFC78]={d="al"},
+ [0xFC79]={d="al"},
+ [0xFC7A]={d="al"},
+ [0xFC7B]={d="al"},
+ [0xFC7C]={d="al"},
+ [0xFC7D]={d="al"},
+ [0xFC7E]={d="al"},
+ [0xFC7F]={d="al"},
+ [0xFC80]={d="al"},
+ [0xFC81]={d="al"},
+ [0xFC82]={d="al"},
+ [0xFC83]={d="al"},
+ [0xFC84]={d="al"},
+ [0xFC85]={d="al"},
+ [0xFC86]={d="al"},
+ [0xFC87]={d="al"},
+ [0xFC88]={d="al"},
+ [0xFC89]={d="al"},
+ [0xFC8A]={d="al"},
+ [0xFC8B]={d="al"},
+ [0xFC8C]={d="al"},
+ [0xFC8D]={d="al"},
+ [0xFC8E]={d="al"},
+ [0xFC8F]={d="al"},
+ [0xFC90]={d="al"},
+ [0xFC91]={d="al"},
+ [0xFC92]={d="al"},
+ [0xFC93]={d="al"},
+ [0xFC94]={d="al"},
+ [0xFC95]={d="al"},
+ [0xFC96]={d="al"},
+ [0xFC97]={d="al"},
+ [0xFC98]={d="al"},
+ [0xFC99]={d="al"},
+ [0xFC9A]={d="al"},
+ [0xFC9B]={d="al"},
+ [0xFC9C]={d="al"},
+ [0xFC9D]={d="al"},
+ [0xFC9E]={d="al"},
+ [0xFC9F]={d="al"},
+ [0xFCA0]={d="al"},
+ [0xFCA1]={d="al"},
+ [0xFCA2]={d="al"},
+ [0xFCA3]={d="al"},
+ [0xFCA4]={d="al"},
+ [0xFCA5]={d="al"},
+ [0xFCA6]={d="al"},
+ [0xFCA7]={d="al"},
+ [0xFCA8]={d="al"},
+ [0xFCA9]={d="al"},
+ [0xFCAA]={d="al"},
+ [0xFCAB]={d="al"},
+ [0xFCAC]={d="al"},
+ [0xFCAD]={d="al"},
+ [0xFCAE]={d="al"},
+ [0xFCAF]={d="al"},
+ [0xFCB0]={d="al"},
+ [0xFCB1]={d="al"},
+ [0xFCB2]={d="al"},
+ [0xFCB3]={d="al"},
+ [0xFCB4]={d="al"},
+ [0xFCB5]={d="al"},
+ [0xFCB6]={d="al"},
+ [0xFCB7]={d="al"},
+ [0xFCB8]={d="al"},
+ [0xFCB9]={d="al"},
+ [0xFCBA]={d="al"},
+ [0xFCBB]={d="al"},
+ [0xFCBC]={d="al"},
+ [0xFCBD]={d="al"},
+ [0xFCBE]={d="al"},
+ [0xFCBF]={d="al"},
+ [0xFCC0]={d="al"},
+ [0xFCC1]={d="al"},
+ [0xFCC2]={d="al"},
+ [0xFCC3]={d="al"},
+ [0xFCC4]={d="al"},
+ [0xFCC5]={d="al"},
+ [0xFCC6]={d="al"},
+ [0xFCC7]={d="al"},
+ [0xFCC8]={d="al"},
+ [0xFCC9]={d="al"},
+ [0xFCCA]={d="al"},
+ [0xFCCB]={d="al"},
+ [0xFCCC]={d="al"},
+ [0xFCCD]={d="al"},
+ [0xFCCE]={d="al"},
+ [0xFCCF]={d="al"},
+ [0xFCD0]={d="al"},
+ [0xFCD1]={d="al"},
+ [0xFCD2]={d="al"},
+ [0xFCD3]={d="al"},
+ [0xFCD4]={d="al"},
+ [0xFCD5]={d="al"},
+ [0xFCD6]={d="al"},
+ [0xFCD7]={d="al"},
+ [0xFCD8]={d="al"},
+ [0xFCD9]={d="al"},
+ [0xFCDA]={d="al"},
+ [0xFCDB]={d="al"},
+ [0xFCDC]={d="al"},
+ [0xFCDD]={d="al"},
+ [0xFCDE]={d="al"},
+ [0xFCDF]={d="al"},
+ [0xFCE0]={d="al"},
+ [0xFCE1]={d="al"},
+ [0xFCE2]={d="al"},
+ [0xFCE3]={d="al"},
+ [0xFCE4]={d="al"},
+ [0xFCE5]={d="al"},
+ [0xFCE6]={d="al"},
+ [0xFCE7]={d="al"},
+ [0xFCE8]={d="al"},
+ [0xFCE9]={d="al"},
+ [0xFCEA]={d="al"},
+ [0xFCEB]={d="al"},
+ [0xFCEC]={d="al"},
+ [0xFCED]={d="al"},
+ [0xFCEE]={d="al"},
+ [0xFCEF]={d="al"},
+ [0xFCF0]={d="al"},
+ [0xFCF1]={d="al"},
+ [0xFCF2]={d="al"},
+ [0xFCF3]={d="al"},
+ [0xFCF4]={d="al"},
+ [0xFCF5]={d="al"},
+ [0xFCF6]={d="al"},
+ [0xFCF7]={d="al"},
+ [0xFCF8]={d="al"},
+ [0xFCF9]={d="al"},
+ [0xFCFA]={d="al"},
+ [0xFCFB]={d="al"},
+ [0xFCFC]={d="al"},
+ [0xFCFD]={d="al"},
+ [0xFCFE]={d="al"},
+ [0xFCFF]={d="al"},
+ [0xFD00]={d="al"},
+ [0xFD01]={d="al"},
+ [0xFD02]={d="al"},
+ [0xFD03]={d="al"},
+ [0xFD04]={d="al"},
+ [0xFD05]={d="al"},
+ [0xFD06]={d="al"},
+ [0xFD07]={d="al"},
+ [0xFD08]={d="al"},
+ [0xFD09]={d="al"},
+ [0xFD0A]={d="al"},
+ [0xFD0B]={d="al"},
+ [0xFD0C]={d="al"},
+ [0xFD0D]={d="al"},
+ [0xFD0E]={d="al"},
+ [0xFD0F]={d="al"},
+ [0xFD10]={d="al"},
+ [0xFD11]={d="al"},
+ [0xFD12]={d="al"},
+ [0xFD13]={d="al"},
+ [0xFD14]={d="al"},
+ [0xFD15]={d="al"},
+ [0xFD16]={d="al"},
+ [0xFD17]={d="al"},
+ [0xFD18]={d="al"},
+ [0xFD19]={d="al"},
+ [0xFD1A]={d="al"},
+ [0xFD1B]={d="al"},
+ [0xFD1C]={d="al"},
+ [0xFD1D]={d="al"},
+ [0xFD1E]={d="al"},
+ [0xFD1F]={d="al"},
+ [0xFD20]={d="al"},
+ [0xFD21]={d="al"},
+ [0xFD22]={d="al"},
+ [0xFD23]={d="al"},
+ [0xFD24]={d="al"},
+ [0xFD25]={d="al"},
+ [0xFD26]={d="al"},
+ [0xFD27]={d="al"},
+ [0xFD28]={d="al"},
+ [0xFD29]={d="al"},
+ [0xFD2A]={d="al"},
+ [0xFD2B]={d="al"},
+ [0xFD2C]={d="al"},
+ [0xFD2D]={d="al"},
+ [0xFD2E]={d="al"},
+ [0xFD2F]={d="al"},
+ [0xFD30]={d="al"},
+ [0xFD31]={d="al"},
+ [0xFD32]={d="al"},
+ [0xFD33]={d="al"},
+ [0xFD34]={d="al"},
+ [0xFD35]={d="al"},
+ [0xFD36]={d="al"},
+ [0xFD37]={d="al"},
+ [0xFD38]={d="al"},
+ [0xFD39]={d="al"},
+ [0xFD3A]={d="al"},
+ [0xFD3B]={d="al"},
+ [0xFD3C]={d="al"},
+ [0xFD3D]={d="al"},
+ [0xFD3E]={d="on"},
+ [0xFD3F]={d="on"},
+ [0xFD40]={d="on"},
+ [0xFD41]={d="on"},
+ [0xFD42]={d="on"},
+ [0xFD43]={d="on"},
+ [0xFD44]={d="on"},
+ [0xFD45]={d="on"},
+ [0xFD46]={d="on"},
+ [0xFD47]={d="on"},
+ [0xFD48]={d="on"},
+ [0xFD49]={d="on"},
+ [0xFD4A]={d="on"},
+ [0xFD4B]={d="on"},
+ [0xFD4C]={d="on"},
+ [0xFD4D]={d="on"},
+ [0xFD4E]={d="on"},
+ [0xFD4F]={d="on"},
+ [0xFD50]={d="al"},
+ [0xFD51]={d="al"},
+ [0xFD52]={d="al"},
+ [0xFD53]={d="al"},
+ [0xFD54]={d="al"},
+ [0xFD55]={d="al"},
+ [0xFD56]={d="al"},
+ [0xFD57]={d="al"},
+ [0xFD58]={d="al"},
+ [0xFD59]={d="al"},
+ [0xFD5A]={d="al"},
+ [0xFD5B]={d="al"},
+ [0xFD5C]={d="al"},
+ [0xFD5D]={d="al"},
+ [0xFD5E]={d="al"},
+ [0xFD5F]={d="al"},
+ [0xFD60]={d="al"},
+ [0xFD61]={d="al"},
+ [0xFD62]={d="al"},
+ [0xFD63]={d="al"},
+ [0xFD64]={d="al"},
+ [0xFD65]={d="al"},
+ [0xFD66]={d="al"},
+ [0xFD67]={d="al"},
+ [0xFD68]={d="al"},
+ [0xFD69]={d="al"},
+ [0xFD6A]={d="al"},
+ [0xFD6B]={d="al"},
+ [0xFD6C]={d="al"},
+ [0xFD6D]={d="al"},
+ [0xFD6E]={d="al"},
+ [0xFD6F]={d="al"},
+ [0xFD70]={d="al"},
+ [0xFD71]={d="al"},
+ [0xFD72]={d="al"},
+ [0xFD73]={d="al"},
+ [0xFD74]={d="al"},
+ [0xFD75]={d="al"},
+ [0xFD76]={d="al"},
+ [0xFD77]={d="al"},
+ [0xFD78]={d="al"},
+ [0xFD79]={d="al"},
+ [0xFD7A]={d="al"},
+ [0xFD7B]={d="al"},
+ [0xFD7C]={d="al"},
+ [0xFD7D]={d="al"},
+ [0xFD7E]={d="al"},
+ [0xFD7F]={d="al"},
+ [0xFD80]={d="al"},
+ [0xFD81]={d="al"},
+ [0xFD82]={d="al"},
+ [0xFD83]={d="al"},
+ [0xFD84]={d="al"},
+ [0xFD85]={d="al"},
+ [0xFD86]={d="al"},
+ [0xFD87]={d="al"},
+ [0xFD88]={d="al"},
+ [0xFD89]={d="al"},
+ [0xFD8A]={d="al"},
+ [0xFD8B]={d="al"},
+ [0xFD8C]={d="al"},
+ [0xFD8D]={d="al"},
+ [0xFD8E]={d="al"},
+ [0xFD8F]={d="al"},
+ [0xFD92]={d="al"},
+ [0xFD93]={d="al"},
+ [0xFD94]={d="al"},
+ [0xFD95]={d="al"},
+ [0xFD96]={d="al"},
+ [0xFD97]={d="al"},
+ [0xFD98]={d="al"},
+ [0xFD99]={d="al"},
+ [0xFD9A]={d="al"},
+ [0xFD9B]={d="al"},
+ [0xFD9C]={d="al"},
+ [0xFD9D]={d="al"},
+ [0xFD9E]={d="al"},
+ [0xFD9F]={d="al"},
+ [0xFDA0]={d="al"},
+ [0xFDA1]={d="al"},
+ [0xFDA2]={d="al"},
+ [0xFDA3]={d="al"},
+ [0xFDA4]={d="al"},
+ [0xFDA5]={d="al"},
+ [0xFDA6]={d="al"},
+ [0xFDA7]={d="al"},
+ [0xFDA8]={d="al"},
+ [0xFDA9]={d="al"},
+ [0xFDAA]={d="al"},
+ [0xFDAB]={d="al"},
+ [0xFDAC]={d="al"},
+ [0xFDAD]={d="al"},
+ [0xFDAE]={d="al"},
+ [0xFDAF]={d="al"},
+ [0xFDB0]={d="al"},
+ [0xFDB1]={d="al"},
+ [0xFDB2]={d="al"},
+ [0xFDB3]={d="al"},
+ [0xFDB4]={d="al"},
+ [0xFDB5]={d="al"},
+ [0xFDB6]={d="al"},
+ [0xFDB7]={d="al"},
+ [0xFDB8]={d="al"},
+ [0xFDB9]={d="al"},
+ [0xFDBA]={d="al"},
+ [0xFDBB]={d="al"},
+ [0xFDBC]={d="al"},
+ [0xFDBD]={d="al"},
+ [0xFDBE]={d="al"},
+ [0xFDBF]={d="al"},
+ [0xFDC0]={d="al"},
+ [0xFDC1]={d="al"},
+ [0xFDC2]={d="al"},
+ [0xFDC3]={d="al"},
+ [0xFDC4]={d="al"},
+ [0xFDC5]={d="al"},
+ [0xFDC6]={d="al"},
+ [0xFDC7]={d="al"},
+ [0xFDCF]={d="on"},
+ [0xFDF0]={d="al"},
+ [0xFDF1]={d="al"},
+ [0xFDF2]={d="al"},
+ [0xFDF3]={d="al"},
+ [0xFDF4]={d="al"},
+ [0xFDF5]={d="al"},
+ [0xFDF6]={d="al"},
+ [0xFDF7]={d="al"},
+ [0xFDF8]={d="al"},
+ [0xFDF9]={d="al"},
+ [0xFDFA]={d="al"},
+ [0xFDFB]={d="al"},
+ [0xFDFC]={d="al"},
+ [0xFDFD]={d="on"},
+ [0xFDFE]={d="on"},
+ [0xFDFF]={d="on"},
+ [0xFE00]={},
+ [0xFE10]={d="on"},
+ [0xFE11]={d="on"},
+ [0xFE12]={d="on"},
+ [0xFE13]={d="on"},
+ [0xFE14]={d="on"},
+ [0xFE15]={d="on"},
+ [0xFE16]={d="on"},
+ [0xFE17]={d="on"},
+ [0xFE18]={d="on"},
+ [0xFE19]={d="on"},
+ [0xFE20]={d="nsm"},
+ [0xFE21]={d="nsm"},
+ [0xFE22]={d="nsm"},
+ [0xFE23]={d="nsm"},
+ [0xFE24]={d="nsm"},
+ [0xFE25]={d="nsm"},
+ [0xFE26]={d="nsm"},
+ [0xFE27]={d="nsm"},
+ [0xFE28]={d="nsm"},
+ [0xFE29]={d="nsm"},
+ [0xFE2A]={d="nsm"},
+ [0xFE2B]={d="nsm"},
+ [0xFE2C]={d="nsm"},
+ [0xFE2D]={d="nsm"},
+ [0xFE2E]={d="nsm"},
+ [0xFE2F]={d="nsm"},
+ [0xFE30]={d="on"},
+ [0xFE31]={d="on"},
+ [0xFE32]={d="on"},
+ [0xFE33]={d="on"},
+ [0xFE34]={d="on"},
+ [0xFE35]={d="on"},
+ [0xFE36]={d="on"},
+ [0xFE37]={d="on"},
+ [0xFE38]={d="on"},
+ [0xFE39]={d="on"},
+ [0xFE3A]={d="on"},
+ [0xFE3B]={d="on"},
+ [0xFE3C]={d="on"},
+ [0xFE3D]={d="on"},
+ [0xFE3E]={d="on"},
+ [0xFE3F]={d="on"},
+ [0xFE40]={d="on"},
+ [0xFE41]={d="on"},
+ [0xFE42]={d="on"},
+ [0xFE43]={d="on"},
+ [0xFE44]={d="on"},
+ [0xFE45]={d="on"},
+ [0xFE46]={d="on"},
+ [0xFE47]={d="on"},
+ [0xFE48]={d="on"},
+ [0xFE49]={d="on"},
+ [0xFE4A]={d="on"},
+ [0xFE4B]={d="on"},
+ [0xFE4C]={d="on"},
+ [0xFE4D]={d="on"},
+ [0xFE4E]={d="on"},
+ [0xFE4F]={d="on"},
+ [0xFE50]={d="cs"},
+ [0xFE51]={d="on"},
+ [0xFE52]={d="cs"},
+ [0xFE54]={d="on"},
+ [0xFE55]={d="cs"},
+ [0xFE56]={d="on"},
+ [0xFE57]={d="on"},
+ [0xFE58]={d="on"},
+ [0xFE59]={d="on",
+ m=0xFE5A,
+ tc="open"},
+ [0xFE5A]={d="on",
+ m=0xFE59,
+ tc="close"},
+ [0xFE5B]={d="on",
+ m=0xFE5C,
+ tc="open"},
+ [0xFE5C]={d="on",
+ m=0xFE5B,
+ tc="close"},
+ [0xFE5D]={d="on",
+ m=0xFE5E,
+ tc="open"},
+ [0xFE5E]={d="on",
+ m=0xFE5D,
+ tc="close"},
+ [0xFE5F]={d="et"},
+ [0xFE60]={d="on"},
+ [0xFE61]={d="on"},
+ [0xFE62]={d="es"},
+ [0xFE63]={d="es"},
+ [0xFE64]={d="on",
+ m=0xFE65,
+ tc="open"},
+ [0xFE65]={d="on",
+ m=0xFE64,
+ tc="close"},
+ [0xFE66]={d="on"},
+ [0xFE68]={d="on"},
+ [0xFE69]={d="et"},
+ [0xFE6A]={d="et"},
+ [0xFE6B]={d="on"},
+ [0xFE70]={d="al"},
+ [0xFE71]={d="al"},
+ [0xFE72]={d="al"},
+ [0xFE73]={d="al"},
+ [0xFE74]={d="al"},
+ [0xFE76]={d="al"},
+ [0xFE77]={d="al"},
+ [0xFE78]={d="al"},
+ [0xFE79]={d="al"},
+ [0xFE7A]={d="al"},
+ [0xFE7B]={d="al"},
+ [0xFE7C]={d="al"},
+ [0xFE7D]={d="al"},
+ [0xFE7E]={d="al"},
+ [0xFE7F]={d="al"},
+ [0xFE80]={d="al"},
+ [0xFE81]={d="al"},
+ [0xFE82]={d="al"},
+ [0xFE83]={d="al"},
+ [0xFE84]={d="al"},
+ [0xFE85]={d="al"},
+ [0xFE86]={d="al"},
+ [0xFE87]={d="al"},
+ [0xFE88]={d="al"},
+ [0xFE89]={d="al"},
+ [0xFE8A]={d="al"},
+ [0xFE8B]={d="al"},
+ [0xFE8C]={d="al"},
+ [0xFE8D]={d="al"},
+ [0xFE8E]={d="al"},
+ [0xFE8F]={d="al"},
+ [0xFE90]={d="al"},
+ [0xFE91]={d="al"},
+ [0xFE92]={d="al"},
+ [0xFE93]={d="al"},
+ [0xFE94]={d="al"},
+ [0xFE95]={d="al"},
+ [0xFE96]={d="al"},
+ [0xFE97]={d="al"},
+ [0xFE98]={d="al"},
+ [0xFE99]={d="al"},
+ [0xFE9A]={d="al"},
+ [0xFE9B]={d="al"},
+ [0xFE9C]={d="al"},
+ [0xFE9D]={d="al"},
+ [0xFE9E]={d="al"},
+ [0xFE9F]={d="al"},
+ [0xFEA0]={d="al"},
+ [0xFEA1]={d="al"},
+ [0xFEA2]={d="al"},
+ [0xFEA3]={d="al"},
+ [0xFEA4]={d="al"},
+ [0xFEA5]={d="al"},
+ [0xFEA6]={d="al"},
+ [0xFEA7]={d="al"},
+ [0xFEA8]={d="al"},
+ [0xFEA9]={d="al"},
+ [0xFEAA]={d="al"},
+ [0xFEAB]={d="al"},
+ [0xFEAC]={d="al"},
+ [0xFEAD]={d="al"},
+ [0xFEAE]={d="al"},
+ [0xFEAF]={d="al"},
+ [0xFEB0]={d="al"},
+ [0xFEB1]={d="al"},
+ [0xFEB2]={d="al"},
+ [0xFEB3]={d="al"},
+ [0xFEB4]={d="al"},
+ [0xFEB5]={d="al"},
+ [0xFEB6]={d="al"},
+ [0xFEB7]={d="al"},
+ [0xFEB8]={d="al"},
+ [0xFEB9]={d="al"},
+ [0xFEBA]={d="al"},
+ [0xFEBB]={d="al"},
+ [0xFEBC]={d="al"},
+ [0xFEBD]={d="al"},
+ [0xFEBE]={d="al"},
+ [0xFEBF]={d="al"},
+ [0xFEC0]={d="al"},
+ [0xFEC1]={d="al"},
+ [0xFEC2]={d="al"},
+ [0xFEC3]={d="al"},
+ [0xFEC4]={d="al"},
+ [0xFEC5]={d="al"},
+ [0xFEC6]={d="al"},
+ [0xFEC7]={d="al"},
+ [0xFEC8]={d="al"},
+ [0xFEC9]={d="al"},
+ [0xFECA]={d="al"},
+ [0xFECB]={d="al"},
+ [0xFECC]={d="al"},
+ [0xFECD]={d="al"},
+ [0xFECE]={d="al"},
+ [0xFECF]={d="al"},
+ [0xFED0]={d="al"},
+ [0xFED1]={d="al"},
+ [0xFED2]={d="al"},
+ [0xFED3]={d="al"},
+ [0xFED4]={d="al"},
+ [0xFED5]={d="al"},
+ [0xFED6]={d="al"},
+ [0xFED7]={d="al"},
+ [0xFED8]={d="al"},
+ [0xFED9]={d="al"},
+ [0xFEDA]={d="al"},
+ [0xFEDB]={d="al"},
+ [0xFEDC]={d="al"},
+ [0xFEDD]={d="al"},
+ [0xFEDE]={d="al"},
+ [0xFEDF]={d="al"},
+ [0xFEE0]={d="al"},
+ [0xFEE1]={d="al"},
+ [0xFEE2]={d="al"},
+ [0xFEE3]={d="al"},
+ [0xFEE4]={d="al"},
+ [0xFEE5]={d="al"},
+ [0xFEE6]={d="al"},
+ [0xFEE7]={d="al"},
+ [0xFEE8]={d="al"},
+ [0xFEE9]={d="al"},
+ [0xFEEA]={d="al"},
+ [0xFEEB]={d="al"},
+ [0xFEEC]={d="al"},
+ [0xFEED]={d="al"},
+ [0xFEEE]={d="al"},
+ [0xFEEF]={d="al"},
+ [0xFEF0]={d="al"},
+ [0xFEF1]={d="al"},
+ [0xFEF2]={d="al"},
+ [0xFEF3]={d="al"},
+ [0xFEF4]={d="al"},
+ [0xFEF5]={d="al"},
+ [0xFEF6]={d="al"},
+ [0xFEF7]={d="al"},
+ [0xFEF8]={d="al"},
+ [0xFEF9]={d="al"},
+ [0xFEFA]={d="al"},
+ [0xFEFB]={d="al"},
+ [0xFEFC]={d="al"},
+ [0xFEFF]={d="bn"},
+ [0xFF01]={d="on"},
+ [0xFF02]={d="on"},
+ [0xFF03]={d="et"},
+ [0xFF04]={d="et"},
+ [0xFF05]={d="et"},
+ [0xFF06]={d="on"},
+ [0xFF07]={d="on"},
+ [0xFF08]={d="on",
+ m=0xFF09,
+ tc="open"},
+ [0xFF09]={d="on",
+ m=0xFF08,
+ tc="close"},
+ [0xFF0A]={d="on"},
+ [0xFF0B]={d="es"},
+ [0xFF0C]={d="cs"},
+ [0xFF0D]={d="es"},
+ [0xFF0E]={d="cs"},
+ [0xFF0F]={d="cs"},
+ [0xFF10]={d="en"},
+ [0xFF11]={d="en"},
+ [0xFF12]={d="en"},
+ [0xFF13]={d="en"},
+ [0xFF14]={d="en"},
+ [0xFF15]={d="en"},
+ [0xFF16]={d="en"},
+ [0xFF17]={d="en"},
+ [0xFF18]={d="en"},
+ [0xFF19]={d="en"},
+ [0xFF1A]={d="cs"},
+ [0xFF1B]={d="on"},
+ [0xFF1C]={d="on",
+ m=0xFF1E,
+ tc="open"},
+ [0xFF1D]={d="on"},
+ [0xFF1E]={d="on",
+ m=0xFF1C,
+ tc="close"},
+ [0xFF1F]={d="on"},
+ [0xFF20]={d="on"},
+ [0xFF21]={d="l"},
+ [0xFF22]={d="l"},
+ [0xFF23]={d="l"},
+ [0xFF24]={d="l"},
+ [0xFF25]={d="l"},
+ [0xFF26]={d="l"},
+ [0xFF27]={d="l"},
+ [0xFF28]={d="l"},
+ [0xFF29]={d="l"},
+ [0xFF2A]={d="l"},
+ [0xFF2B]={d="l"},
+ [0xFF2C]={d="l"},
+ [0xFF2D]={d="l"},
+ [0xFF2E]={d="l"},
+ [0xFF2F]={d="l"},
+ [0xFF30]={d="l"},
+ [0xFF31]={d="l"},
+ [0xFF32]={d="l"},
+ [0xFF33]={d="l"},
+ [0xFF34]={d="l"},
+ [0xFF35]={d="l"},
+ [0xFF36]={d="l"},
+ [0xFF37]={d="l"},
+ [0xFF38]={d="l"},
+ [0xFF39]={d="l"},
+ [0xFF3A]={d="l"},
+ [0xFF3B]={d="on",
+ m=0xFF3D,
+ tc="open"},
+ [0xFF3C]={d="on"},
+ [0xFF3D]={d="on",
+ m=0xFF3B,
+ tc="close"},
+ [0xFF3E]={d="on"},
+ [0xFF3F]={d="on"},
+ [0xFF40]={d="on"},
+ [0xFF41]={d="l"},
+ [0xFF42]={d="l"},
+ [0xFF43]={d="l"},
+ [0xFF44]={d="l"},
+ [0xFF45]={d="l"},
+ [0xFF46]={d="l"},
+ [0xFF47]={d="l"},
+ [0xFF48]={d="l"},
+ [0xFF49]={d="l"},
+ [0xFF4A]={d="l"},
+ [0xFF4B]={d="l"},
+ [0xFF4C]={d="l"},
+ [0xFF4D]={d="l"},
+ [0xFF4E]={d="l"},
+ [0xFF4F]={d="l"},
+ [0xFF50]={d="l"},
+ [0xFF51]={d="l"},
+ [0xFF52]={d="l"},
+ [0xFF53]={d="l"},
+ [0xFF54]={d="l"},
+ [0xFF55]={d="l"},
+ [0xFF56]={d="l"},
+ [0xFF57]={d="l"},
+ [0xFF58]={d="l"},
+ [0xFF59]={d="l"},
+ [0xFF5A]={d="l"},
+ [0xFF5B]={d="on",
+ m=0xFF5D,
+ tc="open"},
+ [0xFF5C]={d="on"},
+ [0xFF5D]={d="on",
+ m=0xFF5B,
+ tc="close"},
+ [0xFF5E]={d="on"},
+ [0xFF5F]={d="on",
+ m=0xFF60,
+ tc="open"},
+ [0xFF60]={d="on",
+ m=0xFF5F,
+ tc="close"},
+ [0xFF61]={d="on"},
+ [0xFF62]={d="on",
+ m=0xFF63,
+ tc="open"},
+ [0xFF63]={d="on",
+ m=0xFF62,
+ tc="close"},
+ [0xFF64]={d="on"},
+ [0xFF65]={d="on"},
+ [0xFF66]={d="l"},
+ [0xFF67]={d="l"},
+ [0xFF68]={d="l"},
+ [0xFF69]={d="l"},
+ [0xFF6A]={d="l"},
+ [0xFF6B]={d="l"},
+ [0xFF6C]={d="l"},
+ [0xFF6D]={d="l"},
+ [0xFF6E]={d="l"},
+ [0xFF6F]={d="l"},
+ [0xFF70]={d="l"},
+ [0xFF71]={d="l"},
+ [0xFF72]={d="l"},
+ [0xFF73]={d="l"},
+ [0xFF74]={d="l"},
+ [0xFF75]={d="l"},
+ [0xFF76]={d="l"},
+ [0xFF77]={d="l"},
+ [0xFF78]={d="l"},
+ [0xFF79]={d="l"},
+ [0xFF7A]={d="l"},
+ [0xFF7B]={d="l"},
+ [0xFF7C]={d="l"},
+ [0xFF7D]={d="l"},
+ [0xFF7E]={d="l"},
+ [0xFF7F]={d="l"},
+ [0xFF80]={d="l"},
+ [0xFF81]={d="l"},
+ [0xFF82]={d="l"},
+ [0xFF83]={d="l"},
+ [0xFF84]={d="l"},
+ [0xFF85]={d="l"},
+ [0xFF86]={d="l"},
+ [0xFF87]={d="l"},
+ [0xFF88]={d="l"},
+ [0xFF89]={d="l"},
+ [0xFF8A]={d="l"},
+ [0xFF8B]={d="l"},
+ [0xFF8C]={d="l"},
+ [0xFF8D]={d="l"},
+ [0xFF8E]={d="l"},
+ [0xFF8F]={d="l"},
+ [0xFF90]={d="l"},
+ [0xFF91]={d="l"},
+ [0xFF92]={d="l"},
+ [0xFF93]={d="l"},
+ [0xFF94]={d="l"},
+ [0xFF95]={d="l"},
+ [0xFF96]={d="l"},
+ [0xFF97]={d="l"},
+ [0xFF98]={d="l"},
+ [0xFF99]={d="l"},
+ [0xFF9A]={d="l"},
+ [0xFF9B]={d="l"},
+ [0xFF9C]={d="l"},
+ [0xFF9D]={d="l"},
+ [0xFF9E]={d="l"},
+ [0xFF9F]={d="l"},
+ [0xFFA0]={d="l"},
+ [0xFFA1]={d="l"},
+ [0xFFA2]={d="l"},
+ [0xFFA3]={d="l"},
+ [0xFFA4]={d="l"},
+ [0xFFA5]={d="l"},
+ [0xFFA6]={d="l"},
+ [0xFFA7]={d="l"},
+ [0xFFA8]={d="l"},
+ [0xFFA9]={d="l"},
+ [0xFFAA]={d="l"},
+ [0xFFAB]={d="l"},
+ [0xFFAC]={d="l"},
+ [0xFFAD]={d="l"},
+ [0xFFAE]={d="l"},
+ [0xFFAF]={d="l"},
+ [0xFFB0]={d="l"},
+ [0xFFB1]={d="l"},
+ [0xFFB2]={d="l"},
+ [0xFFB3]={d="l"},
+ [0xFFB4]={d="l"},
+ [0xFFB5]={d="l"},
+ [0xFFB6]={d="l"},
+ [0xFFB7]={d="l"},
+ [0xFFB8]={d="l"},
+ [0xFFB9]={d="l"},
+ [0xFFBA]={d="l"},
+ [0xFFBB]={d="l"},
+ [0xFFBC]={d="l"},
+ [0xFFBD]={d="l"},
+ [0xFFBE]={d="l"},
+ [0xFFC2]={d="l"},
+ [0xFFC3]={d="l"},
+ [0xFFC4]={d="l"},
+ [0xFFC5]={d="l"},
+ [0xFFC6]={d="l"},
+ [0xFFC7]={d="l"},
+ [0xFFCA]={d="l"},
+ [0xFFCB]={d="l"},
+ [0xFFCC]={d="l"},
+ [0xFFCD]={d="l"},
+ [0xFFCE]={d="l"},
+ [0xFFCF]={d="l"},
+ [0xFFD2]={d="l"},
+ [0xFFD3]={d="l"},
+ [0xFFD4]={d="l"},
+ [0xFFD5]={d="l"},
+ [0xFFD6]={d="l"},
+ [0xFFD7]={d="l"},
+ [0xFFDA]={d="l"},
+ [0xFFDB]={d="l"},
+ [0xFFDC]={d="l"},
+ [0xFFE0]={d="et"},
+ [0xFFE1]={d="et"},
+ [0xFFE2]={d="on"},
+ [0xFFE3]={d="on"},
+ [0xFFE4]={d="on"},
+ [0xFFE5]={d="et"},
+ [0xFFE6]={d="et"},
+ [0xFFE8]={d="on"},
+ [0xFFE9]={d="on"},
+ [0xFFEA]={d="on"},
+ [0xFFEB]={d="on"},
+ [0xFFEC]={d="on"},
+ [0xFFED]={d="on"},
+ [0xFFEE]={d="on"},
+ [0xFFF9]={d="on"},
+ [0xFFFA]={d="on"},
+ [0xFFFB]={d="on"},
+ [0xFFFC]={d="on"},
+ [0xFFFD]={d="on"},
+ [0x10000]={d="l"},
+ [0x10001]={d="l"},
+ [0x10002]={d="l"},
+ [0x10003]={d="l"},
+ [0x10004]={d="l"},
+ [0x10005]={d="l"},
+ [0x10006]={d="l"},
+ [0x10007]={d="l"},
+ [0x10008]={d="l"},
+ [0x10009]={d="l"},
+ [0x1000A]={d="l"},
+ [0x1000B]={d="l"},
+ [0x1000D]={d="l"},
+ [0x1000E]={d="l"},
+ [0x1000F]={d="l"},
+ [0x10010]={d="l"},
+ [0x10011]={d="l"},
+ [0x10012]={d="l"},
+ [0x10013]={d="l"},
+ [0x10014]={d="l"},
+ [0x10015]={d="l"},
+ [0x10016]={d="l"},
+ [0x10017]={d="l"},
+ [0x10018]={d="l"},
+ [0x10019]={d="l"},
+ [0x1001A]={d="l"},
+ [0x1001B]={d="l"},
+ [0x1001C]={d="l"},
+ [0x1001D]={d="l"},
+ [0x1001E]={d="l"},
+ [0x1001F]={d="l"},
+ [0x10020]={d="l"},
+ [0x10021]={d="l"},
+ [0x10022]={d="l"},
+ [0x10023]={d="l"},
+ [0x10024]={d="l"},
+ [0x10025]={d="l"},
+ [0x10026]={d="l"},
+ [0x10028]={d="l"},
+ [0x10029]={d="l"},
+ [0x1002A]={d="l"},
+ [0x1002B]={d="l"},
+ [0x1002C]={d="l"},
+ [0x1002D]={d="l"},
+ [0x1002E]={d="l"},
+ [0x1002F]={d="l"},
+ [0x10030]={d="l"},
+ [0x10031]={d="l"},
+ [0x10032]={d="l"},
+ [0x10033]={d="l"},
+ [0x10034]={d="l"},
+ [0x10035]={d="l"},
+ [0x10036]={d="l"},
+ [0x10037]={d="l"},
+ [0x10038]={d="l"},
+ [0x10039]={d="l"},
+ [0x1003A]={d="l"},
+ [0x1003C]={d="l"},
+ [0x1003D]={d="l"},
+ [0x1003F]={d="l"},
+ [0x10040]={d="l"},
+ [0x10041]={d="l"},
+ [0x10042]={d="l"},
+ [0x10043]={d="l"},
+ [0x10044]={d="l"},
+ [0x10045]={d="l"},
+ [0x10046]={d="l"},
+ [0x10047]={d="l"},
+ [0x10048]={d="l"},
+ [0x10049]={d="l"},
+ [0x1004A]={d="l"},
+ [0x1004B]={d="l"},
+ [0x1004C]={d="l"},
+ [0x1004D]={d="l"},
+ [0x10050]={d="l"},
+ [0x10051]={d="l"},
+ [0x10052]={d="l"},
+ [0x10053]={d="l"},
+ [0x10054]={d="l"},
+ [0x10055]={d="l"},
+ [0x10056]={d="l"},
+ [0x10057]={d="l"},
+ [0x10058]={d="l"},
+ [0x10059]={d="l"},
+ [0x1005A]={d="l"},
+ [0x1005B]={d="l"},
+ [0x1005C]={d="l"},
+ [0x1005D]={d="l"},
+ [0x10080]={d="l"},
+ [0x10081]={d="l"},
+ [0x10082]={d="l"},
+ [0x10083]={d="l"},
+ [0x10084]={d="l"},
+ [0x10085]={d="l"},
+ [0x10086]={d="l"},
+ [0x10087]={d="l"},
+ [0x10088]={d="l"},
+ [0x10089]={d="l"},
+ [0x1008A]={d="l"},
+ [0x1008B]={d="l"},
+ [0x1008C]={d="l"},
+ [0x1008D]={d="l"},
+ [0x1008E]={d="l"},
+ [0x1008F]={d="l"},
+ [0x10090]={d="l"},
+ [0x10091]={d="l"},
+ [0x10092]={d="l"},
+ [0x10093]={d="l"},
+ [0x10094]={d="l"},
+ [0x10095]={d="l"},
+ [0x10096]={d="l"},
+ [0x10097]={d="l"},
+ [0x10098]={d="l"},
+ [0x10099]={d="l"},
+ [0x1009A]={d="l"},
+ [0x1009B]={d="l"},
+ [0x1009C]={d="l"},
+ [0x1009D]={d="l"},
+ [0x1009E]={d="l"},
+ [0x1009F]={d="l"},
+ [0x100A0]={d="l"},
+ [0x100A1]={d="l"},
+ [0x100A2]={d="l"},
+ [0x100A3]={d="l"},
+ [0x100A4]={d="l"},
+ [0x100A5]={d="l"},
+ [0x100A6]={d="l"},
+ [0x100A7]={d="l"},
+ [0x100A8]={d="l"},
+ [0x100A9]={d="l"},
+ [0x100AA]={d="l"},
+ [0x100AB]={d="l"},
+ [0x100AC]={d="l"},
+ [0x100AD]={d="l"},
+ [0x100AE]={d="l"},
+ [0x100AF]={d="l"},
+ [0x100B0]={d="l"},
+ [0x100B1]={d="l"},
+ [0x100B2]={d="l"},
+ [0x100B3]={d="l"},
+ [0x100B4]={d="l"},
+ [0x100B5]={d="l"},
+ [0x100B6]={d="l"},
+ [0x100B7]={d="l"},
+ [0x100B8]={d="l"},
+ [0x100B9]={d="l"},
+ [0x100BA]={d="l"},
+ [0x100BB]={d="l"},
+ [0x100BC]={d="l"},
+ [0x100BD]={d="l"},
+ [0x100BE]={d="l"},
+ [0x100BF]={d="l"},
+ [0x100C0]={d="l"},
+ [0x100C1]={d="l"},
+ [0x100C2]={d="l"},
+ [0x100C3]={d="l"},
+ [0x100C4]={d="l"},
+ [0x100C5]={d="l"},
+ [0x100C6]={d="l"},
+ [0x100C7]={d="l"},
+ [0x100C8]={d="l"},
+ [0x100C9]={d="l"},
+ [0x100CA]={d="l"},
+ [0x100CB]={d="l"},
+ [0x100CC]={d="l"},
+ [0x100CD]={d="l"},
+ [0x100CE]={d="l"},
+ [0x100CF]={d="l"},
+ [0x100D0]={d="l"},
+ [0x100D1]={d="l"},
+ [0x100D2]={d="l"},
+ [0x100D3]={d="l"},
+ [0x100D4]={d="l"},
+ [0x100D5]={d="l"},
+ [0x100D6]={d="l"},
+ [0x100D7]={d="l"},
+ [0x100D8]={d="l"},
+ [0x100D9]={d="l"},
+ [0x100DA]={d="l"},
+ [0x100DB]={d="l"},
+ [0x100DC]={d="l"},
+ [0x100DD]={d="l"},
+ [0x100DE]={d="l"},
+ [0x100DF]={d="l"},
+ [0x100E0]={d="l"},
+ [0x100E1]={d="l"},
+ [0x100E2]={d="l"},
+ [0x100E3]={d="l"},
+ [0x100E4]={d="l"},
+ [0x100E5]={d="l"},
+ [0x100E6]={d="l"},
+ [0x100E7]={d="l"},
+ [0x100E8]={d="l"},
+ [0x100E9]={d="l"},
+ [0x100EA]={d="l"},
+ [0x100EB]={d="l"},
+ [0x100EC]={d="l"},
+ [0x100ED]={d="l"},
+ [0x100EE]={d="l"},
+ [0x100EF]={d="l"},
+ [0x100F0]={d="l"},
+ [0x100F1]={d="l"},
+ [0x100F2]={d="l"},
+ [0x100F3]={d="l"},
+ [0x100F4]={d="l"},
+ [0x100F5]={d="l"},
+ [0x100F6]={d="l"},
+ [0x100F7]={d="l"},
+ [0x100F8]={d="l"},
+ [0x100F9]={d="l"},
+ [0x100FA]={d="l"},
+ [0x10100]={d="l"},
+ [0x10101]={d="on"},
+ [0x10102]={d="l"},
+ [0x10107]={d="l"},
+ [0x10108]={d="l"},
+ [0x10109]={d="l"},
+ [0x1010A]={d="l"},
+ [0x1010B]={d="l"},
+ [0x1010C]={d="l"},
+ [0x1010D]={d="l"},
+ [0x1010E]={d="l"},
+ [0x1010F]={d="l"},
+ [0x10110]={d="l"},
+ [0x10111]={d="l"},
+ [0x10112]={d="l"},
+ [0x10113]={d="l"},
+ [0x10114]={d="l"},
+ [0x10115]={d="l"},
+ [0x10116]={d="l"},
+ [0x10117]={d="l"},
+ [0x10118]={d="l"},
+ [0x10119]={d="l"},
+ [0x1011A]={d="l"},
+ [0x1011B]={d="l"},
+ [0x1011C]={d="l"},
+ [0x1011D]={d="l"},
+ [0x1011E]={d="l"},
+ [0x1011F]={d="l"},
+ [0x10120]={d="l"},
+ [0x10121]={d="l"},
+ [0x10122]={d="l"},
+ [0x10123]={d="l"},
+ [0x10124]={d="l"},
+ [0x10125]={d="l"},
+ [0x10126]={d="l"},
+ [0x10127]={d="l"},
+ [0x10128]={d="l"},
+ [0x10129]={d="l"},
+ [0x1012A]={d="l"},
+ [0x1012B]={d="l"},
+ [0x1012C]={d="l"},
+ [0x1012D]={d="l"},
+ [0x1012E]={d="l"},
+ [0x1012F]={d="l"},
+ [0x10130]={d="l"},
+ [0x10131]={d="l"},
+ [0x10132]={d="l"},
+ [0x10133]={d="l"},
+ [0x10137]={d="l"},
+ [0x10138]={d="l"},
+ [0x10139]={d="l"},
+ [0x1013A]={d="l"},
+ [0x1013B]={d="l"},
+ [0x1013C]={d="l"},
+ [0x1013D]={d="l"},
+ [0x1013E]={d="l"},
+ [0x1013F]={d="l"},
+ [0x10140]={d="on"},
+ [0x10141]={d="on"},
+ [0x10142]={d="on"},
+ [0x10143]={d="on"},
+ [0x10144]={d="on"},
+ [0x10145]={d="on"},
+ [0x10146]={d="on"},
+ [0x10147]={d="on"},
+ [0x10148]={d="on"},
+ [0x10149]={d="on"},
+ [0x1014A]={d="on"},
+ [0x1014B]={d="on"},
+ [0x1014C]={d="on"},
+ [0x1014D]={d="on"},
+ [0x1014E]={d="on"},
+ [0x1014F]={d="on"},
+ [0x10150]={d="on"},
+ [0x10151]={d="on"},
+ [0x10152]={d="on"},
+ [0x10153]={d="on"},
+ [0x10154]={d="on"},
+ [0x10155]={d="on"},
+ [0x10156]={d="on"},
+ [0x10157]={d="on"},
+ [0x10158]={d="on"},
+ [0x10159]={d="on"},
+ [0x1015A]={d="on"},
+ [0x1015B]={d="on"},
+ [0x1015C]={d="on"},
+ [0x1015D]={d="on"},
+ [0x1015E]={d="on"},
+ [0x1015F]={d="on"},
+ [0x10160]={d="on"},
+ [0x10161]={d="on"},
+ [0x10162]={d="on"},
+ [0x10163]={d="on"},
+ [0x10164]={d="on"},
+ [0x10165]={d="on"},
+ [0x10166]={d="on"},
+ [0x10167]={d="on"},
+ [0x10168]={d="on"},
+ [0x10169]={d="on"},
+ [0x1016A]={d="on"},
+ [0x1016B]={d="on"},
+ [0x1016C]={d="on"},
+ [0x1016D]={d="on"},
+ [0x1016E]={d="on"},
+ [0x1016F]={d="on"},
+ [0x10170]={d="on"},
+ [0x10171]={d="on"},
+ [0x10172]={d="on"},
+ [0x10173]={d="on"},
+ [0x10174]={d="on"},
+ [0x10175]={d="on"},
+ [0x10176]={d="on"},
+ [0x10177]={d="on"},
+ [0x10178]={d="on"},
+ [0x10179]={d="on"},
+ [0x1017A]={d="on"},
+ [0x1017B]={d="on"},
+ [0x1017C]={d="on"},
+ [0x1017D]={d="on"},
+ [0x1017E]={d="on"},
+ [0x1017F]={d="on"},
+ [0x10180]={d="on"},
+ [0x10181]={d="on"},
+ [0x10182]={d="on"},
+ [0x10183]={d="on"},
+ [0x10184]={d="on"},
+ [0x10185]={d="on"},
+ [0x10186]={d="on"},
+ [0x10187]={d="on"},
+ [0x10188]={d="on"},
+ [0x10189]={d="on"},
+ [0x1018A]={d="on"},
+ [0x1018B]={d="on"},
+ [0x1018C]={d="on"},
+ [0x1018D]={d="l"},
+ [0x1018E]={d="l"},
+ [0x10190]={d="on"},
+ [0x10191]={d="on"},
+ [0x10192]={d="on"},
+ [0x10193]={d="on"},
+ [0x10194]={d="on"},
+ [0x10195]={d="on"},
+ [0x10196]={d="on"},
+ [0x10197]={d="on"},
+ [0x10198]={d="on"},
+ [0x10199]={d="on"},
+ [0x1019A]={d="on"},
+ [0x1019B]={d="on"},
+ [0x1019C]={d="on"},
+ [0x101A0]={d="on"},
+ [0x101D0]={d="l"},
+ [0x101D1]={d="l"},
+ [0x101D2]={d="l"},
+ [0x101D3]={d="l"},
+ [0x101D4]={d="l"},
+ [0x101D5]={d="l"},
+ [0x101D6]={d="l"},
+ [0x101D7]={d="l"},
+ [0x101D8]={d="l"},
+ [0x101D9]={d="l"},
+ [0x101DA]={d="l"},
+ [0x101DB]={d="l"},
+ [0x101DC]={d="l"},
+ [0x101DD]={d="l"},
+ [0x101DE]={d="l"},
+ [0x101DF]={d="l"},
+ [0x101E0]={d="l"},
+ [0x101E1]={d="l"},
+ [0x101E2]={d="l"},
+ [0x101E3]={d="l"},
+ [0x101E4]={d="l"},
+ [0x101E5]={d="l"},
+ [0x101E6]={d="l"},
+ [0x101E7]={d="l"},
+ [0x101E8]={d="l"},
+ [0x101E9]={d="l"},
+ [0x101EA]={d="l"},
+ [0x101EB]={d="l"},
+ [0x101EC]={d="l"},
+ [0x101ED]={d="l"},
+ [0x101EE]={d="l"},
+ [0x101EF]={d="l"},
+ [0x101F0]={d="l"},
+ [0x101F1]={d="l"},
+ [0x101F2]={d="l"},
+ [0x101F3]={d="l"},
+ [0x101F4]={d="l"},
+ [0x101F5]={d="l"},
+ [0x101F6]={d="l"},
+ [0x101F7]={d="l"},
+ [0x101F8]={d="l"},
+ [0x101F9]={d="l"},
+ [0x101FA]={d="l"},
+ [0x101FB]={d="l"},
+ [0x101FC]={d="l"},
+ [0x101FD]={d="nsm"},
+ [0x10280]={d="l"},
+ [0x10281]={d="l"},
+ [0x10282]={d="l"},
+ [0x10283]={d="l"},
+ [0x10284]={d="l"},
+ [0x10285]={d="l"},
+ [0x10286]={d="l"},
+ [0x10287]={d="l"},
+ [0x10288]={d="l"},
+ [0x10289]={d="l"},
+ [0x1028A]={d="l"},
+ [0x1028B]={d="l"},
+ [0x1028C]={d="l"},
+ [0x1028D]={d="l"},
+ [0x1028E]={d="l"},
+ [0x1028F]={d="l"},
+ [0x10290]={d="l"},
+ [0x10291]={d="l"},
+ [0x10292]={d="l"},
+ [0x10293]={d="l"},
+ [0x10294]={d="l"},
+ [0x10295]={d="l"},
+ [0x10296]={d="l"},
+ [0x10297]={d="l"},
+ [0x10298]={d="l"},
+ [0x10299]={d="l"},
+ [0x1029A]={d="l"},
+ [0x1029B]={d="l"},
+ [0x1029C]={d="l"},
+ [0x102A0]={d="l"},
+ [0x102A1]={d="l"},
+ [0x102A2]={d="l"},
+ [0x102A3]={d="l"},
+ [0x102A4]={d="l"},
+ [0x102A5]={d="l"},
+ [0x102A6]={d="l"},
+ [0x102A7]={d="l"},
+ [0x102A8]={d="l"},
+ [0x102A9]={d="l"},
+ [0x102AA]={d="l"},
+ [0x102AB]={d="l"},
+ [0x102AC]={d="l"},
+ [0x102AD]={d="l"},
+ [0x102AE]={d="l"},
+ [0x102AF]={d="l"},
+ [0x102B0]={d="l"},
+ [0x102B1]={d="l"},
+ [0x102B2]={d="l"},
+ [0x102B3]={d="l"},
+ [0x102B4]={d="l"},
+ [0x102B5]={d="l"},
+ [0x102B6]={d="l"},
+ [0x102B7]={d="l"},
+ [0x102B8]={d="l"},
+ [0x102B9]={d="l"},
+ [0x102BA]={d="l"},
+ [0x102BB]={d="l"},
+ [0x102BC]={d="l"},
+ [0x102BD]={d="l"},
+ [0x102BE]={d="l"},
+ [0x102BF]={d="l"},
+ [0x102C0]={d="l"},
+ [0x102C1]={d="l"},
+ [0x102C2]={d="l"},
+ [0x102C3]={d="l"},
+ [0x102C4]={d="l"},
+ [0x102C5]={d="l"},
+ [0x102C6]={d="l"},
+ [0x102C7]={d="l"},
+ [0x102C8]={d="l"},
+ [0x102C9]={d="l"},
+ [0x102CA]={d="l"},
+ [0x102CB]={d="l"},
+ [0x102CC]={d="l"},
+ [0x102CD]={d="l"},
+ [0x102CE]={d="l"},
+ [0x102CF]={d="l"},
+ [0x102D0]={d="l"},
+ [0x102E0]={d="nsm"},
+ [0x102E1]={d="en"},
+ [0x102E2]={d="en"},
+ [0x102E3]={d="en"},
+ [0x102E4]={d="en"},
+ [0x102E5]={d="en"},
+ [0x102E6]={d="en"},
+ [0x102E7]={d="en"},
+ [0x102E8]={d="en"},
+ [0x102E9]={d="en"},
+ [0x102EA]={d="en"},
+ [0x102EB]={d="en"},
+ [0x102EC]={d="en"},
+ [0x102ED]={d="en"},
+ [0x102EE]={d="en"},
+ [0x102EF]={d="en"},
+ [0x102F0]={d="en"},
+ [0x102F1]={d="en"},
+ [0x102F2]={d="en"},
+ [0x102F3]={d="en"},
+ [0x102F4]={d="en"},
+ [0x102F5]={d="en"},
+ [0x102F6]={d="en"},
+ [0x102F7]={d="en"},
+ [0x102F8]={d="en"},
+ [0x102F9]={d="en"},
+ [0x102FA]={d="en"},
+ [0x102FB]={d="en"},
+ [0x10300]={d="l"},
+ [0x10301]={d="l"},
+ [0x10302]={d="l"},
+ [0x10303]={d="l"},
+ [0x10304]={d="l"},
+ [0x10305]={d="l"},
+ [0x10306]={d="l"},
+ [0x10307]={d="l"},
+ [0x10308]={d="l"},
+ [0x10309]={d="l"},
+ [0x1030A]={d="l"},
+ [0x1030B]={d="l"},
+ [0x1030C]={d="l"},
+ [0x1030D]={d="l"},
+ [0x1030E]={d="l"},
+ [0x1030F]={d="l"},
+ [0x10310]={d="l"},
+ [0x10311]={d="l"},
+ [0x10312]={d="l"},
+ [0x10313]={d="l"},
+ [0x10314]={d="l"},
+ [0x10315]={d="l"},
+ [0x10316]={d="l"},
+ [0x10317]={d="l"},
+ [0x10318]={d="l"},
+ [0x10319]={d="l"},
+ [0x1031A]={d="l"},
+ [0x1031B]={d="l"},
+ [0x1031C]={d="l"},
+ [0x1031D]={d="l"},
+ [0x1031E]={d="l"},
+ [0x1031F]={d="l"},
+ [0x10320]={d="l"},
+ [0x10321]={d="l"},
+ [0x10322]={d="l"},
+ [0x10323]={d="l"},
+ [0x1032D]={d="l"},
+ [0x1032E]={d="l"},
+ [0x1032F]={d="l"},
+ [0x10330]={d="l"},
+ [0x10331]={d="l"},
+ [0x10332]={d="l"},
+ [0x10333]={d="l"},
+ [0x10334]={d="l"},
+ [0x10335]={d="l"},
+ [0x10336]={d="l"},
+ [0x10337]={d="l"},
+ [0x10338]={d="l"},
+ [0x10339]={d="l"},
+ [0x1033A]={d="l"},
+ [0x1033B]={d="l"},
+ [0x1033C]={d="l"},
+ [0x1033D]={d="l"},
+ [0x1033E]={d="l"},
+ [0x1033F]={d="l"},
+ [0x10340]={d="l"},
+ [0x10341]={d="l"},
+ [0x10342]={d="l"},
+ [0x10343]={d="l"},
+ [0x10344]={d="l"},
+ [0x10345]={d="l"},
+ [0x10346]={d="l"},
+ [0x10347]={d="l"},
+ [0x10348]={d="l"},
+ [0x10349]={d="l"},
+ [0x1034A]={d="l"},
+ [0x10350]={d="l"},
+ [0x10351]={d="l"},
+ [0x10352]={d="l"},
+ [0x10353]={d="l"},
+ [0x10354]={d="l"},
+ [0x10355]={d="l"},
+ [0x10356]={d="l"},
+ [0x10357]={d="l"},
+ [0x10358]={d="l"},
+ [0x10359]={d="l"},
+ [0x1035A]={d="l"},
+ [0x1035B]={d="l"},
+ [0x1035C]={d="l"},
+ [0x1035D]={d="l"},
+ [0x1035E]={d="l"},
+ [0x1035F]={d="l"},
+ [0x10360]={d="l"},
+ [0x10361]={d="l"},
+ [0x10362]={d="l"},
+ [0x10363]={d="l"},
+ [0x10364]={d="l"},
+ [0x10365]={d="l"},
+ [0x10366]={d="l"},
+ [0x10367]={d="l"},
+ [0x10368]={d="l"},
+ [0x10369]={d="l"},
+ [0x1036A]={d="l"},
+ [0x1036B]={d="l"},
+ [0x1036C]={d="l"},
+ [0x1036D]={d="l"},
+ [0x1036E]={d="l"},
+ [0x1036F]={d="l"},
+ [0x10370]={d="l"},
+ [0x10371]={d="l"},
+ [0x10372]={d="l"},
+ [0x10373]={d="l"},
+ [0x10374]={d="l"},
+ [0x10375]={d="l"},
+ [0x10376]={d="nsm"},
+ [0x10377]={d="nsm"},
+ [0x10378]={d="nsm"},
+ [0x10379]={d="nsm"},
+ [0x1037A]={d="nsm"},
+ [0x10380]={d="l"},
+ [0x10381]={d="l"},
+ [0x10382]={d="l"},
+ [0x10383]={d="l"},
+ [0x10384]={d="l"},
+ [0x10385]={d="l"},
+ [0x10386]={d="l"},
+ [0x10387]={d="l"},
+ [0x10388]={d="l"},
+ [0x10389]={d="l"},
+ [0x1038A]={d="l"},
+ [0x1038B]={d="l"},
+ [0x1038C]={d="l"},
+ [0x1038D]={d="l"},
+ [0x1038E]={d="l"},
+ [0x1038F]={d="l"},
+ [0x10390]={d="l"},
+ [0x10391]={d="l"},
+ [0x10392]={d="l"},
+ [0x10393]={d="l"},
+ [0x10394]={d="l"},
+ [0x10395]={d="l"},
+ [0x10396]={d="l"},
+ [0x10397]={d="l"},
+ [0x10398]={d="l"},
+ [0x10399]={d="l"},
+ [0x1039A]={d="l"},
+ [0x1039B]={d="l"},
+ [0x1039C]={d="l"},
+ [0x1039D]={d="l"},
+ [0x1039F]={d="l"},
+ [0x103A0]={d="l"},
+ [0x103A1]={d="l"},
+ [0x103A2]={d="l"},
+ [0x103A3]={d="l"},
+ [0x103A4]={d="l"},
+ [0x103A5]={d="l"},
+ [0x103A6]={d="l"},
+ [0x103A7]={d="l"},
+ [0x103A8]={d="l"},
+ [0x103A9]={d="l"},
+ [0x103AA]={d="l"},
+ [0x103AB]={d="l"},
+ [0x103AC]={d="l"},
+ [0x103AD]={d="l"},
+ [0x103AE]={d="l"},
+ [0x103AF]={d="l"},
+ [0x103B0]={d="l"},
+ [0x103B1]={d="l"},
+ [0x103B2]={d="l"},
+ [0x103B3]={d="l"},
+ [0x103B4]={d="l"},
+ [0x103B5]={d="l"},
+ [0x103B6]={d="l"},
+ [0x103B7]={d="l"},
+ [0x103B8]={d="l"},
+ [0x103B9]={d="l"},
+ [0x103BA]={d="l"},
+ [0x103BB]={d="l"},
+ [0x103BC]={d="l"},
+ [0x103BD]={d="l"},
+ [0x103BE]={d="l"},
+ [0x103BF]={d="l"},
+ [0x103C0]={d="l"},
+ [0x103C1]={d="l"},
+ [0x103C2]={d="l"},
+ [0x103C3]={d="l"},
+ [0x103C8]={d="l"},
+ [0x103C9]={d="l"},
+ [0x103CA]={d="l"},
+ [0x103CB]={d="l"},
+ [0x103CC]={d="l"},
+ [0x103CD]={d="l"},
+ [0x103CE]={d="l"},
+ [0x103CF]={d="l"},
+ [0x103D0]={d="l"},
+ [0x103D1]={d="l"},
+ [0x103D2]={d="l"},
+ [0x103D3]={d="l"},
+ [0x103D4]={d="l"},
+ [0x103D5]={d="l"},
+ [0x10400]={d="l"},
+ [0x10401]={d="l"},
+ [0x10402]={d="l"},
+ [0x10403]={d="l"},
+ [0x10404]={d="l"},
+ [0x10405]={d="l"},
+ [0x10406]={d="l"},
+ [0x10407]={d="l"},
+ [0x10408]={d="l"},
+ [0x10409]={d="l"},
+ [0x1040A]={d="l"},
+ [0x1040B]={d="l"},
+ [0x1040C]={d="l"},
+ [0x1040D]={d="l"},
+ [0x1040E]={d="l"},
+ [0x1040F]={d="l"},
+ [0x10410]={d="l"},
+ [0x10411]={d="l"},
+ [0x10412]={d="l"},
+ [0x10413]={d="l"},
+ [0x10414]={d="l"},
+ [0x10415]={d="l"},
+ [0x10416]={d="l"},
+ [0x10417]={d="l"},
+ [0x10418]={d="l"},
+ [0x10419]={d="l"},
+ [0x1041A]={d="l"},
+ [0x1041B]={d="l"},
+ [0x1041C]={d="l"},
+ [0x1041D]={d="l"},
+ [0x1041E]={d="l"},
+ [0x1041F]={d="l"},
+ [0x10420]={d="l"},
+ [0x10421]={d="l"},
+ [0x10422]={d="l"},
+ [0x10423]={d="l"},
+ [0x10424]={d="l"},
+ [0x10425]={d="l"},
+ [0x10426]={d="l"},
+ [0x10427]={d="l"},
+ [0x10428]={d="l"},
+ [0x10429]={d="l"},
+ [0x1042A]={d="l"},
+ [0x1042B]={d="l"},
+ [0x1042C]={d="l"},
+ [0x1042D]={d="l"},
+ [0x1042E]={d="l"},
+ [0x1042F]={d="l"},
+ [0x10430]={d="l"},
+ [0x10431]={d="l"},
+ [0x10432]={d="l"},
+ [0x10433]={d="l"},
+ [0x10434]={d="l"},
+ [0x10435]={d="l"},
+ [0x10436]={d="l"},
+ [0x10437]={d="l"},
+ [0x10438]={d="l"},
+ [0x10439]={d="l"},
+ [0x1043A]={d="l"},
+ [0x1043B]={d="l"},
+ [0x1043C]={d="l"},
+ [0x1043D]={d="l"},
+ [0x1043E]={d="l"},
+ [0x1043F]={d="l"},
+ [0x10440]={d="l"},
+ [0x10441]={d="l"},
+ [0x10442]={d="l"},
+ [0x10443]={d="l"},
+ [0x10444]={d="l"},
+ [0x10445]={d="l"},
+ [0x10446]={d="l"},
+ [0x10447]={d="l"},
+ [0x10448]={d="l"},
+ [0x10449]={d="l"},
+ [0x1044A]={d="l"},
+ [0x1044B]={d="l"},
+ [0x1044C]={d="l"},
+ [0x1044D]={d="l"},
+ [0x1044E]={d="l"},
+ [0x1044F]={d="l"},
+ [0x10450]={d="l"},
+ [0x10451]={d="l"},
+ [0x10452]={d="l"},
+ [0x10453]={d="l"},
+ [0x10454]={d="l"},
+ [0x10455]={d="l"},
+ [0x10456]={d="l"},
+ [0x10457]={d="l"},
+ [0x10458]={d="l"},
+ [0x10459]={d="l"},
+ [0x1045A]={d="l"},
+ [0x1045B]={d="l"},
+ [0x1045C]={d="l"},
+ [0x1045D]={d="l"},
+ [0x1045E]={d="l"},
+ [0x1045F]={d="l"},
+ [0x10460]={d="l"},
+ [0x10461]={d="l"},
+ [0x10462]={d="l"},
+ [0x10463]={d="l"},
+ [0x10464]={d="l"},
+ [0x10465]={d="l"},
+ [0x10466]={d="l"},
+ [0x10467]={d="l"},
+ [0x10468]={d="l"},
+ [0x10469]={d="l"},
+ [0x1046A]={d="l"},
+ [0x1046B]={d="l"},
+ [0x1046C]={d="l"},
+ [0x1046D]={d="l"},
+ [0x1046E]={d="l"},
+ [0x1046F]={d="l"},
+ [0x10470]={d="l"},
+ [0x10471]={d="l"},
+ [0x10472]={d="l"},
+ [0x10473]={d="l"},
+ [0x10474]={d="l"},
+ [0x10475]={d="l"},
+ [0x10476]={d="l"},
+ [0x10477]={d="l"},
+ [0x10478]={d="l"},
+ [0x10479]={d="l"},
+ [0x1047A]={d="l"},
+ [0x1047B]={d="l"},
+ [0x1047C]={d="l"},
+ [0x1047D]={d="l"},
+ [0x1047E]={d="l"},
+ [0x1047F]={d="l"},
+ [0x10480]={d="l"},
+ [0x10481]={d="l"},
+ [0x10482]={d="l"},
+ [0x10483]={d="l"},
+ [0x10484]={d="l"},
+ [0x10485]={d="l"},
+ [0x10486]={d="l"},
+ [0x10487]={d="l"},
+ [0x10488]={d="l"},
+ [0x10489]={d="l"},
+ [0x1048A]={d="l"},
+ [0x1048B]={d="l"},
+ [0x1048C]={d="l"},
+ [0x1048D]={d="l"},
+ [0x1048E]={d="l"},
+ [0x1048F]={d="l"},
+ [0x10490]={d="l"},
+ [0x10491]={d="l"},
+ [0x10492]={d="l"},
+ [0x10493]={d="l"},
+ [0x10494]={d="l"},
+ [0x10495]={d="l"},
+ [0x10496]={d="l"},
+ [0x10497]={d="l"},
+ [0x10498]={d="l"},
+ [0x10499]={d="l"},
+ [0x1049A]={d="l"},
+ [0x1049B]={d="l"},
+ [0x1049C]={d="l"},
+ [0x1049D]={d="l"},
+ [0x104A0]={d="l"},
+ [0x104A1]={d="l"},
+ [0x104A2]={d="l"},
+ [0x104A3]={d="l"},
+ [0x104A4]={d="l"},
+ [0x104A5]={d="l"},
+ [0x104A6]={d="l"},
+ [0x104A7]={d="l"},
+ [0x104A8]={d="l"},
+ [0x104A9]={d="l"},
+ [0x104B0]={d="l"},
+ [0x104B1]={d="l"},
+ [0x104B2]={d="l"},
+ [0x104B3]={d="l"},
+ [0x104B4]={d="l"},
+ [0x104B5]={d="l"},
+ [0x104B6]={d="l"},
+ [0x104B7]={d="l"},
+ [0x104B8]={d="l"},
+ [0x104B9]={d="l"},
+ [0x104BA]={d="l"},
+ [0x104BB]={d="l"},
+ [0x104BC]={d="l"},
+ [0x104BD]={d="l"},
+ [0x104BE]={d="l"},
+ [0x104BF]={d="l"},
+ [0x104C0]={d="l"},
+ [0x104C1]={d="l"},
+ [0x104C2]={d="l"},
+ [0x104C3]={d="l"},
+ [0x104C4]={d="l"},
+ [0x104C5]={d="l"},
+ [0x104C6]={d="l"},
+ [0x104C7]={d="l"},
+ [0x104C8]={d="l"},
+ [0x104C9]={d="l"},
+ [0x104CA]={d="l"},
+ [0x104CB]={d="l"},
+ [0x104CC]={d="l"},
+ [0x104CD]={d="l"},
+ [0x104CE]={d="l"},
+ [0x104CF]={d="l"},
+ [0x104D0]={d="l"},
+ [0x104D1]={d="l"},
+ [0x104D2]={d="l"},
+ [0x104D3]={d="l"},
+ [0x104D8]={d="l"},
+ [0x104D9]={d="l"},
+ [0x104DA]={d="l"},
+ [0x104DB]={d="l"},
+ [0x104DC]={d="l"},
+ [0x104DD]={d="l"},
+ [0x104DE]={d="l"},
+ [0x104DF]={d="l"},
+ [0x104E0]={d="l"},
+ [0x104E1]={d="l"},
+ [0x104E2]={d="l"},
+ [0x104E3]={d="l"},
+ [0x104E4]={d="l"},
+ [0x104E5]={d="l"},
+ [0x104E6]={d="l"},
+ [0x104E7]={d="l"},
+ [0x104E8]={d="l"},
+ [0x104E9]={d="l"},
+ [0x104EA]={d="l"},
+ [0x104EB]={d="l"},
+ [0x104EC]={d="l"},
+ [0x104ED]={d="l"},
+ [0x104EE]={d="l"},
+ [0x104EF]={d="l"},
+ [0x104F0]={d="l"},
+ [0x104F1]={d="l"},
+ [0x104F2]={d="l"},
+ [0x104F3]={d="l"},
+ [0x104F4]={d="l"},
+ [0x104F5]={d="l"},
+ [0x104F6]={d="l"},
+ [0x104F7]={d="l"},
+ [0x104F8]={d="l"},
+ [0x104F9]={d="l"},
+ [0x104FA]={d="l"},
+ [0x104FB]={d="l"},
+ [0x10500]={d="l"},
+ [0x10501]={d="l"},
+ [0x10502]={d="l"},
+ [0x10503]={d="l"},
+ [0x10504]={d="l"},
+ [0x10505]={d="l"},
+ [0x10506]={d="l"},
+ [0x10507]={d="l"},
+ [0x10508]={d="l"},
+ [0x10509]={d="l"},
+ [0x1050A]={d="l"},
+ [0x1050B]={d="l"},
+ [0x1050C]={d="l"},
+ [0x1050D]={d="l"},
+ [0x1050E]={d="l"},
+ [0x1050F]={d="l"},
+ [0x10510]={d="l"},
+ [0x10511]={d="l"},
+ [0x10512]={d="l"},
+ [0x10513]={d="l"},
+ [0x10514]={d="l"},
+ [0x10515]={d="l"},
+ [0x10516]={d="l"},
+ [0x10517]={d="l"},
+ [0x10518]={d="l"},
+ [0x10519]={d="l"},
+ [0x1051A]={d="l"},
+ [0x1051B]={d="l"},
+ [0x1051C]={d="l"},
+ [0x1051D]={d="l"},
+ [0x1051E]={d="l"},
+ [0x1051F]={d="l"},
+ [0x10520]={d="l"},
+ [0x10521]={d="l"},
+ [0x10522]={d="l"},
+ [0x10523]={d="l"},
+ [0x10524]={d="l"},
+ [0x10525]={d="l"},
+ [0x10526]={d="l"},
+ [0x10527]={d="l"},
+ [0x10530]={d="l"},
+ [0x10531]={d="l"},
+ [0x10532]={d="l"},
+ [0x10533]={d="l"},
+ [0x10534]={d="l"},
+ [0x10535]={d="l"},
+ [0x10536]={d="l"},
+ [0x10537]={d="l"},
+ [0x10538]={d="l"},
+ [0x10539]={d="l"},
+ [0x1053A]={d="l"},
+ [0x1053B]={d="l"},
+ [0x1053C]={d="l"},
+ [0x1053D]={d="l"},
+ [0x1053E]={d="l"},
+ [0x1053F]={d="l"},
+ [0x10540]={d="l"},
+ [0x10541]={d="l"},
+ [0x10542]={d="l"},
+ [0x10543]={d="l"},
+ [0x10544]={d="l"},
+ [0x10545]={d="l"},
+ [0x10546]={d="l"},
+ [0x10547]={d="l"},
+ [0x10548]={d="l"},
+ [0x10549]={d="l"},
+ [0x1054A]={d="l"},
+ [0x1054B]={d="l"},
+ [0x1054C]={d="l"},
+ [0x1054D]={d="l"},
+ [0x1054E]={d="l"},
+ [0x1054F]={d="l"},
+ [0x10550]={d="l"},
+ [0x10551]={d="l"},
+ [0x10552]={d="l"},
+ [0x10553]={d="l"},
+ [0x10554]={d="l"},
+ [0x10555]={d="l"},
+ [0x10556]={d="l"},
+ [0x10557]={d="l"},
+ [0x10558]={d="l"},
+ [0x10559]={d="l"},
+ [0x1055A]={d="l"},
+ [0x1055B]={d="l"},
+ [0x1055C]={d="l"},
+ [0x1055D]={d="l"},
+ [0x1055E]={d="l"},
+ [0x1055F]={d="l"},
+ [0x10560]={d="l"},
+ [0x10561]={d="l"},
+ [0x10562]={d="l"},
+ [0x10563]={d="l"},
+ [0x1056F]={d="l"},
+ [0x10570]={d="l"},
+ [0x10571]={d="l"},
+ [0x10572]={d="l"},
+ [0x10573]={d="l"},
+ [0x10574]={d="l"},
+ [0x10575]={d="l"},
+ [0x10576]={d="l"},
+ [0x10577]={d="l"},
+ [0x10578]={d="l"},
+ [0x10579]={d="l"},
+ [0x1057A]={d="l"},
+ [0x1057C]={d="l"},
+ [0x1057D]={d="l"},
+ [0x1057E]={d="l"},
+ [0x1057F]={d="l"},
+ [0x10580]={d="l"},
+ [0x10581]={d="l"},
+ [0x10582]={d="l"},
+ [0x10583]={d="l"},
+ [0x10584]={d="l"},
+ [0x10585]={d="l"},
+ [0x10586]={d="l"},
+ [0x10587]={d="l"},
+ [0x10588]={d="l"},
+ [0x10589]={d="l"},
+ [0x1058A]={d="l"},
+ [0x1058C]={d="l"},
+ [0x1058D]={d="l"},
+ [0x1058E]={d="l"},
+ [0x1058F]={d="l"},
+ [0x10590]={d="l"},
+ [0x10591]={d="l"},
+ [0x10592]={d="l"},
+ [0x10594]={d="l"},
+ [0x10595]={d="l"},
+ [0x10597]={d="l"},
+ [0x10598]={d="l"},
+ [0x10599]={d="l"},
+ [0x1059A]={d="l"},
+ [0x1059B]={d="l"},
+ [0x1059C]={d="l"},
+ [0x1059D]={d="l"},
+ [0x1059E]={d="l"},
+ [0x1059F]={d="l"},
+ [0x105A0]={d="l"},
+ [0x105A1]={d="l"},
+ [0x105A3]={d="l"},
+ [0x105A4]={d="l"},
+ [0x105A5]={d="l"},
+ [0x105A6]={d="l"},
+ [0x105A7]={d="l"},
+ [0x105A8]={d="l"},
+ [0x105A9]={d="l"},
+ [0x105AA]={d="l"},
+ [0x105AB]={d="l"},
+ [0x105AC]={d="l"},
+ [0x105AD]={d="l"},
+ [0x105AE]={d="l"},
+ [0x105AF]={d="l"},
+ [0x105B0]={d="l"},
+ [0x105B1]={d="l"},
+ [0x105B3]={d="l"},
+ [0x105B4]={d="l"},
+ [0x105B5]={d="l"},
+ [0x105B6]={d="l"},
+ [0x105B7]={d="l"},
+ [0x105B8]={d="l"},
+ [0x105B9]={d="l"},
+ [0x105BB]={d="l"},
+ [0x105BC]={d="l"},
+ [0x10600]={d="l"},
+ [0x10601]={d="l"},
+ [0x10602]={d="l"},
+ [0x10603]={d="l"},
+ [0x10604]={d="l"},
+ [0x10605]={d="l"},
+ [0x10606]={d="l"},
+ [0x10607]={d="l"},
+ [0x10608]={d="l"},
+ [0x10609]={d="l"},
+ [0x1060A]={d="l"},
+ [0x1060B]={d="l"},
+ [0x1060C]={d="l"},
+ [0x1060D]={d="l"},
+ [0x1060E]={d="l"},
+ [0x1060F]={d="l"},
+ [0x10610]={d="l"},
+ [0x10611]={d="l"},
+ [0x10612]={d="l"},
+ [0x10613]={d="l"},
+ [0x10614]={d="l"},
+ [0x10615]={d="l"},
+ [0x10616]={d="l"},
+ [0x10617]={d="l"},
+ [0x10618]={d="l"},
+ [0x10619]={d="l"},
+ [0x1061A]={d="l"},
+ [0x1061B]={d="l"},
+ [0x1061C]={d="l"},
+ [0x1061D]={d="l"},
+ [0x1061E]={d="l"},
+ [0x1061F]={d="l"},
+ [0x10620]={d="l"},
+ [0x10621]={d="l"},
+ [0x10622]={d="l"},
+ [0x10623]={d="l"},
+ [0x10624]={d="l"},
+ [0x10625]={d="l"},
+ [0x10626]={d="l"},
+ [0x10627]={d="l"},
+ [0x10628]={d="l"},
+ [0x10629]={d="l"},
+ [0x1062A]={d="l"},
+ [0x1062B]={d="l"},
+ [0x1062C]={d="l"},
+ [0x1062D]={d="l"},
+ [0x1062E]={d="l"},
+ [0x1062F]={d="l"},
+ [0x10630]={d="l"},
+ [0x10631]={d="l"},
+ [0x10632]={d="l"},
+ [0x10633]={d="l"},
+ [0x10634]={d="l"},
+ [0x10635]={d="l"},
+ [0x10636]={d="l"},
+ [0x10637]={d="l"},
+ [0x10638]={d="l"},
+ [0x10639]={d="l"},
+ [0x1063A]={d="l"},
+ [0x1063B]={d="l"},
+ [0x1063C]={d="l"},
+ [0x1063D]={d="l"},
+ [0x1063E]={d="l"},
+ [0x1063F]={d="l"},
+ [0x10640]={d="l"},
+ [0x10641]={d="l"},
+ [0x10642]={d="l"},
+ [0x10643]={d="l"},
+ [0x10644]={d="l"},
+ [0x10645]={d="l"},
+ [0x10646]={d="l"},
+ [0x10647]={d="l"},
+ [0x10648]={d="l"},
+ [0x10649]={d="l"},
+ [0x1064A]={d="l"},
+ [0x1064B]={d="l"},
+ [0x1064C]={d="l"},
+ [0x1064D]={d="l"},
+ [0x1064E]={d="l"},
+ [0x1064F]={d="l"},
+ [0x10650]={d="l"},
+ [0x10651]={d="l"},
+ [0x10652]={d="l"},
+ [0x10653]={d="l"},
+ [0x10654]={d="l"},
+ [0x10655]={d="l"},
+ [0x10656]={d="l"},
+ [0x10657]={d="l"},
+ [0x10658]={d="l"},
+ [0x10659]={d="l"},
+ [0x1065A]={d="l"},
+ [0x1065B]={d="l"},
+ [0x1065C]={d="l"},
+ [0x1065D]={d="l"},
+ [0x1065E]={d="l"},
+ [0x1065F]={d="l"},
+ [0x10660]={d="l"},
+ [0x10661]={d="l"},
+ [0x10662]={d="l"},
+ [0x10663]={d="l"},
+ [0x10664]={d="l"},
+ [0x10665]={d="l"},
+ [0x10666]={d="l"},
+ [0x10667]={d="l"},
+ [0x10668]={d="l"},
+ [0x10669]={d="l"},
+ [0x1066A]={d="l"},
+ [0x1066B]={d="l"},
+ [0x1066C]={d="l"},
+ [0x1066D]={d="l"},
+ [0x1066E]={d="l"},
+ [0x1066F]={d="l"},
+ [0x10670]={d="l"},
+ [0x10671]={d="l"},
+ [0x10672]={d="l"},
+ [0x10673]={d="l"},
+ [0x10674]={d="l"},
+ [0x10675]={d="l"},
+ [0x10676]={d="l"},
+ [0x10677]={d="l"},
+ [0x10678]={d="l"},
+ [0x10679]={d="l"},
+ [0x1067A]={d="l"},
+ [0x1067B]={d="l"},
+ [0x1067C]={d="l"},
+ [0x1067D]={d="l"},
+ [0x1067E]={d="l"},
+ [0x1067F]={d="l"},
+ [0x10680]={d="l"},
+ [0x10681]={d="l"},
+ [0x10682]={d="l"},
+ [0x10683]={d="l"},
+ [0x10684]={d="l"},
+ [0x10685]={d="l"},
+ [0x10686]={d="l"},
+ [0x10687]={d="l"},
+ [0x10688]={d="l"},
+ [0x10689]={d="l"},
+ [0x1068A]={d="l"},
+ [0x1068B]={d="l"},
+ [0x1068C]={d="l"},
+ [0x1068D]={d="l"},
+ [0x1068E]={d="l"},
+ [0x1068F]={d="l"},
+ [0x10690]={d="l"},
+ [0x10691]={d="l"},
+ [0x10692]={d="l"},
+ [0x10693]={d="l"},
+ [0x10694]={d="l"},
+ [0x10695]={d="l"},
+ [0x10696]={d="l"},
+ [0x10697]={d="l"},
+ [0x10698]={d="l"},
+ [0x10699]={d="l"},
+ [0x1069A]={d="l"},
+ [0x1069B]={d="l"},
+ [0x1069C]={d="l"},
+ [0x1069D]={d="l"},
+ [0x1069E]={d="l"},
+ [0x1069F]={d="l"},
+ [0x106A0]={d="l"},
+ [0x106A1]={d="l"},
+ [0x106A2]={d="l"},
+ [0x106A3]={d="l"},
+ [0x106A4]={d="l"},
+ [0x106A5]={d="l"},
+ [0x106A6]={d="l"},
+ [0x106A7]={d="l"},
+ [0x106A8]={d="l"},
+ [0x106A9]={d="l"},
+ [0x106AA]={d="l"},
+ [0x106AB]={d="l"},
+ [0x106AC]={d="l"},
+ [0x106AD]={d="l"},
+ [0x106AE]={d="l"},
+ [0x106AF]={d="l"},
+ [0x106B0]={d="l"},
+ [0x106B1]={d="l"},
+ [0x106B2]={d="l"},
+ [0x106B3]={d="l"},
+ [0x106B4]={d="l"},
+ [0x106B5]={d="l"},
+ [0x106B6]={d="l"},
+ [0x106B7]={d="l"},
+ [0x106B8]={d="l"},
+ [0x106B9]={d="l"},
+ [0x106BA]={d="l"},
+ [0x106BB]={d="l"},
+ [0x106BC]={d="l"},
+ [0x106BD]={d="l"},
+ [0x106BE]={d="l"},
+ [0x106BF]={d="l"},
+ [0x106C0]={d="l"},
+ [0x106C1]={d="l"},
+ [0x106C2]={d="l"},
+ [0x106C3]={d="l"},
+ [0x106C4]={d="l"},
+ [0x106C5]={d="l"},
+ [0x106C6]={d="l"},
+ [0x106C7]={d="l"},
+ [0x106C8]={d="l"},
+ [0x106C9]={d="l"},
+ [0x106CA]={d="l"},
+ [0x106CB]={d="l"},
+ [0x106CC]={d="l"},
+ [0x106CD]={d="l"},
+ [0x106CE]={d="l"},
+ [0x106CF]={d="l"},
+ [0x106D0]={d="l"},
+ [0x106D1]={d="l"},
+ [0x106D2]={d="l"},
+ [0x106D3]={d="l"},
+ [0x106D4]={d="l"},
+ [0x106D5]={d="l"},
+ [0x106D6]={d="l"},
+ [0x106D7]={d="l"},
+ [0x106D8]={d="l"},
+ [0x106D9]={d="l"},
+ [0x106DA]={d="l"},
+ [0x106DB]={d="l"},
+ [0x106DC]={d="l"},
+ [0x106DD]={d="l"},
+ [0x106DE]={d="l"},
+ [0x106DF]={d="l"},
+ [0x106E0]={d="l"},
+ [0x106E1]={d="l"},
+ [0x106E2]={d="l"},
+ [0x106E3]={d="l"},
+ [0x106E4]={d="l"},
+ [0x106E5]={d="l"},
+ [0x106E6]={d="l"},
+ [0x106E7]={d="l"},
+ [0x106E8]={d="l"},
+ [0x106E9]={d="l"},
+ [0x106EA]={d="l"},
+ [0x106EB]={d="l"},
+ [0x106EC]={d="l"},
+ [0x106ED]={d="l"},
+ [0x106EE]={d="l"},
+ [0x106EF]={d="l"},
+ [0x106F0]={d="l"},
+ [0x106F1]={d="l"},
+ [0x106F2]={d="l"},
+ [0x106F3]={d="l"},
+ [0x106F4]={d="l"},
+ [0x106F5]={d="l"},
+ [0x106F6]={d="l"},
+ [0x106F7]={d="l"},
+ [0x106F8]={d="l"},
+ [0x106F9]={d="l"},
+ [0x106FA]={d="l"},
+ [0x106FB]={d="l"},
+ [0x106FC]={d="l"},
+ [0x106FD]={d="l"},
+ [0x106FE]={d="l"},
+ [0x106FF]={d="l"},
+ [0x10700]={d="l"},
+ [0x10701]={d="l"},
+ [0x10702]={d="l"},
+ [0x10703]={d="l"},
+ [0x10704]={d="l"},
+ [0x10705]={d="l"},
+ [0x10706]={d="l"},
+ [0x10707]={d="l"},
+ [0x10708]={d="l"},
+ [0x10709]={d="l"},
+ [0x1070A]={d="l"},
+ [0x1070B]={d="l"},
+ [0x1070C]={d="l"},
+ [0x1070D]={d="l"},
+ [0x1070E]={d="l"},
+ [0x1070F]={d="l"},
+ [0x10710]={d="l"},
+ [0x10711]={d="l"},
+ [0x10712]={d="l"},
+ [0x10713]={d="l"},
+ [0x10714]={d="l"},
+ [0x10715]={d="l"},
+ [0x10716]={d="l"},
+ [0x10717]={d="l"},
+ [0x10718]={d="l"},
+ [0x10719]={d="l"},
+ [0x1071A]={d="l"},
+ [0x1071B]={d="l"},
+ [0x1071C]={d="l"},
+ [0x1071D]={d="l"},
+ [0x1071E]={d="l"},
+ [0x1071F]={d="l"},
+ [0x10720]={d="l"},
+ [0x10721]={d="l"},
+ [0x10722]={d="l"},
+ [0x10723]={d="l"},
+ [0x10724]={d="l"},
+ [0x10725]={d="l"},
+ [0x10726]={d="l"},
+ [0x10727]={d="l"},
+ [0x10728]={d="l"},
+ [0x10729]={d="l"},
+ [0x1072A]={d="l"},
+ [0x1072B]={d="l"},
+ [0x1072C]={d="l"},
+ [0x1072D]={d="l"},
+ [0x1072E]={d="l"},
+ [0x1072F]={d="l"},
+ [0x10730]={d="l"},
+ [0x10731]={d="l"},
+ [0x10732]={d="l"},
+ [0x10733]={d="l"},
+ [0x10734]={d="l"},
+ [0x10735]={d="l"},
+ [0x10736]={d="l"},
+ [0x10740]={d="l"},
+ [0x10741]={d="l"},
+ [0x10742]={d="l"},
+ [0x10743]={d="l"},
+ [0x10744]={d="l"},
+ [0x10745]={d="l"},
+ [0x10746]={d="l"},
+ [0x10747]={d="l"},
+ [0x10748]={d="l"},
+ [0x10749]={d="l"},
+ [0x1074A]={d="l"},
+ [0x1074B]={d="l"},
+ [0x1074C]={d="l"},
+ [0x1074D]={d="l"},
+ [0x1074E]={d="l"},
+ [0x1074F]={d="l"},
+ [0x10750]={d="l"},
+ [0x10751]={d="l"},
+ [0x10752]={d="l"},
+ [0x10753]={d="l"},
+ [0x10754]={d="l"},
+ [0x10755]={d="l"},
+ [0x10760]={d="l"},
+ [0x10761]={d="l"},
+ [0x10762]={d="l"},
+ [0x10763]={d="l"},
+ [0x10764]={d="l"},
+ [0x10765]={d="l"},
+ [0x10766]={d="l"},
+ [0x10767]={d="l"},
+ [0x10780]={d="l"},
+ [0x10781]={d="l"},
+ [0x10782]={d="l"},
+ [0x10783]={d="l"},
+ [0x10784]={d="l"},
+ [0x10785]={d="l"},
+ [0x10787]={d="l"},
+ [0x10788]={d="l"},
+ [0x10789]={d="l"},
+ [0x1078A]={d="l"},
+ [0x1078B]={d="l"},
+ [0x1078C]={d="l"},
+ [0x1078D]={d="l"},
+ [0x1078E]={d="l"},
+ [0x1078F]={d="l"},
+ [0x10790]={d="l"},
+ [0x10791]={d="l"},
+ [0x10792]={d="l"},
+ [0x10793]={d="l"},
+ [0x10794]={d="l"},
+ [0x10795]={d="l"},
+ [0x10796]={d="l"},
+ [0x10797]={d="l"},
+ [0x10798]={d="l"},
+ [0x10799]={d="l"},
+ [0x1079A]={d="l"},
+ [0x1079B]={d="l"},
+ [0x1079C]={d="l"},
+ [0x1079D]={d="l"},
+ [0x1079E]={d="l"},
+ [0x1079F]={d="l"},
+ [0x107A0]={d="l"},
+ [0x107A1]={d="l"},
+ [0x107A2]={d="l"},
+ [0x107A3]={d="l"},
+ [0x107A4]={d="l"},
+ [0x107A5]={d="l"},
+ [0x107A6]={d="l"},
+ [0x107A7]={d="l"},
+ [0x107A8]={d="l"},
+ [0x107A9]={d="l"},
+ [0x107AA]={d="l"},
+ [0x107AB]={d="l"},
+ [0x107AC]={d="l"},
+ [0x107AD]={d="l"},
+ [0x107AE]={d="l"},
+ [0x107AF]={d="l"},
+ [0x107B0]={d="l"},
+ [0x107B2]={d="l"},
+ [0x107B3]={d="l"},
+ [0x107B4]={d="l"},
+ [0x107B5]={d="l"},
+ [0x107B6]={d="l"},
+ [0x107B7]={d="l"},
+ [0x107B8]={d="l"},
+ [0x107B9]={d="l"},
+ [0x107BA]={d="l"},
+ [0x10800]={d="r"},
+ [0x10801]={d="r"},
+ [0x10802]={d="r"},
+ [0x10803]={d="r"},
+ [0x10804]={d="r"},
+ [0x10805]={d="r"},
+ [0x10808]={d="r"},
+ [0x1080A]={d="r"},
+ [0x1080B]={d="r"},
+ [0x1080C]={d="r"},
+ [0x1080D]={d="r"},
+ [0x1080E]={d="r"},
+ [0x1080F]={d="r"},
+ [0x10810]={d="r"},
+ [0x10811]={d="r"},
+ [0x10812]={d="r"},
+ [0x10813]={d="r"},
+ [0x10814]={d="r"},
+ [0x10815]={d="r"},
+ [0x10816]={d="r"},
+ [0x10817]={d="r"},
+ [0x10818]={d="r"},
+ [0x10819]={d="r"},
+ [0x1081A]={d="r"},
+ [0x1081B]={d="r"},
+ [0x1081C]={d="r"},
+ [0x1081D]={d="r"},
+ [0x1081E]={d="r"},
+ [0x1081F]={d="r"},
+ [0x10820]={d="r"},
+ [0x10821]={d="r"},
+ [0x10822]={d="r"},
+ [0x10823]={d="r"},
+ [0x10824]={d="r"},
+ [0x10825]={d="r"},
+ [0x10826]={d="r"},
+ [0x10827]={d="r"},
+ [0x10828]={d="r"},
+ [0x10829]={d="r"},
+ [0x1082A]={d="r"},
+ [0x1082B]={d="r"},
+ [0x1082C]={d="r"},
+ [0x1082D]={d="r"},
+ [0x1082E]={d="r"},
+ [0x1082F]={d="r"},
+ [0x10830]={d="r"},
+ [0x10831]={d="r"},
+ [0x10832]={d="r"},
+ [0x10833]={d="r"},
+ [0x10834]={d="r"},
+ [0x10835]={d="r"},
+ [0x10837]={d="r"},
+ [0x10838]={d="r"},
+ [0x1083C]={d="r"},
+ [0x1083F]={d="r"},
+ [0x10840]={d="r"},
+ [0x10841]={d="r"},
+ [0x10842]={d="r"},
+ [0x10843]={d="r"},
+ [0x10844]={d="r"},
+ [0x10845]={d="r"},
+ [0x10846]={d="r"},
+ [0x10847]={d="r"},
+ [0x10848]={d="r"},
+ [0x10849]={d="r"},
+ [0x1084A]={d="r"},
+ [0x1084B]={d="r"},
+ [0x1084C]={d="r"},
+ [0x1084D]={d="r"},
+ [0x1084E]={d="r"},
+ [0x1084F]={d="r"},
+ [0x10850]={d="r"},
+ [0x10851]={d="r"},
+ [0x10852]={d="r"},
+ [0x10853]={d="r"},
+ [0x10854]={d="r"},
+ [0x10855]={d="r"},
+ [0x10857]={d="r"},
+ [0x10858]={d="r"},
+ [0x10859]={d="r"},
+ [0x1085A]={d="r"},
+ [0x1085B]={d="r"},
+ [0x1085C]={d="r"},
+ [0x1085D]={d="r"},
+ [0x1085E]={d="r"},
+ [0x1085F]={d="r"},
+ [0x10860]={d="r"},
+ [0x10861]={d="r"},
+ [0x10862]={d="r"},
+ [0x10863]={d="r"},
+ [0x10864]={d="r"},
+ [0x10865]={d="r"},
+ [0x10866]={d="r"},
+ [0x10867]={d="r"},
+ [0x10868]={d="r"},
+ [0x10869]={d="r"},
+ [0x1086A]={d="r"},
+ [0x1086B]={d="r"},
+ [0x1086C]={d="r"},
+ [0x1086D]={d="r"},
+ [0x1086E]={d="r"},
+ [0x1086F]={d="r"},
+ [0x10870]={d="r"},
+ [0x10871]={d="r"},
+ [0x10872]={d="r"},
+ [0x10873]={d="r"},
+ [0x10874]={d="r"},
+ [0x10875]={d="r"},
+ [0x10876]={d="r"},
+ [0x10877]={d="r"},
+ [0x10878]={d="r"},
+ [0x10879]={d="r"},
+ [0x1087A]={d="r"},
+ [0x1087B]={d="r"},
+ [0x1087C]={d="r"},
+ [0x1087D]={d="r"},
+ [0x1087E]={d="r"},
+ [0x1087F]={d="r"},
+ [0x10880]={d="r"},
+ [0x10881]={d="r"},
+ [0x10882]={d="r"},
+ [0x10883]={d="r"},
+ [0x10884]={d="r"},
+ [0x10885]={d="r"},
+ [0x10886]={d="r"},
+ [0x10887]={d="r"},
+ [0x10888]={d="r"},
+ [0x10889]={d="r"},
+ [0x1088A]={d="r"},
+ [0x1088B]={d="r"},
+ [0x1088C]={d="r"},
+ [0x1088D]={d="r"},
+ [0x1088E]={d="r"},
+ [0x1088F]={d="r"},
+ [0x10890]={d="r"},
+ [0x10891]={d="r"},
+ [0x10892]={d="r"},
+ [0x10893]={d="r"},
+ [0x10894]={d="r"},
+ [0x10895]={d="r"},
+ [0x10896]={d="r"},
+ [0x10897]={d="r"},
+ [0x10898]={d="r"},
+ [0x10899]={d="r"},
+ [0x1089A]={d="r"},
+ [0x1089B]={d="r"},
+ [0x1089C]={d="r"},
+ [0x1089D]={d="r"},
+ [0x1089E]={d="r"},
+ [0x108A7]={d="r"},
+ [0x108A8]={d="r"},
+ [0x108A9]={d="r"},
+ [0x108AA]={d="r"},
+ [0x108AB]={d="r"},
+ [0x108AC]={d="r"},
+ [0x108AD]={d="r"},
+ [0x108AE]={d="r"},
+ [0x108AF]={d="r"},
+ [0x108E0]={d="r"},
+ [0x108E1]={d="r"},
+ [0x108E2]={d="r"},
+ [0x108E3]={d="r"},
+ [0x108E4]={d="r"},
+ [0x108E5]={d="r"},
+ [0x108E6]={d="r"},
+ [0x108E7]={d="r"},
+ [0x108E8]={d="r"},
+ [0x108E9]={d="r"},
+ [0x108EA]={d="r"},
+ [0x108EB]={d="r"},
+ [0x108EC]={d="r"},
+ [0x108ED]={d="r"},
+ [0x108EE]={d="r"},
+ [0x108EF]={d="r"},
+ [0x108F0]={d="r"},
+ [0x108F1]={d="r"},
+ [0x108F2]={d="r"},
+ [0x108F4]={d="r"},
+ [0x108F5]={d="r"},
+ [0x108FB]={d="r"},
+ [0x108FC]={d="r"},
+ [0x108FD]={d="r"},
+ [0x108FE]={d="r"},
+ [0x108FF]={d="r"},
+ [0x10900]={d="r"},
+ [0x10901]={d="r"},
+ [0x10902]={d="r"},
+ [0x10903]={d="r"},
+ [0x10904]={d="r"},
+ [0x10905]={d="r"},
+ [0x10906]={d="r"},
+ [0x10907]={d="r"},
+ [0x10908]={d="r"},
+ [0x10909]={d="r"},
+ [0x1090A]={d="r"},
+ [0x1090B]={d="r"},
+ [0x1090C]={d="r"},
+ [0x1090D]={d="r"},
+ [0x1090E]={d="r"},
+ [0x1090F]={d="r"},
+ [0x10910]={d="r"},
+ [0x10911]={d="r"},
+ [0x10912]={d="r"},
+ [0x10913]={d="r"},
+ [0x10914]={d="r"},
+ [0x10915]={d="r"},
+ [0x10916]={d="r"},
+ [0x10917]={d="r"},
+ [0x10918]={d="r"},
+ [0x10919]={d="r"},
+ [0x1091A]={d="r"},
+ [0x1091B]={d="r"},
+ [0x1091F]={d="on"},
+ [0x10920]={d="r"},
+ [0x10921]={d="r"},
+ [0x10922]={d="r"},
+ [0x10923]={d="r"},
+ [0x10924]={d="r"},
+ [0x10925]={d="r"},
+ [0x10926]={d="r"},
+ [0x10927]={d="r"},
+ [0x10928]={d="r"},
+ [0x10929]={d="r"},
+ [0x1092A]={d="r"},
+ [0x1092B]={d="r"},
+ [0x1092C]={d="r"},
+ [0x1092D]={d="r"},
+ [0x1092E]={d="r"},
+ [0x1092F]={d="r"},
+ [0x10930]={d="r"},
+ [0x10931]={d="r"},
+ [0x10932]={d="r"},
+ [0x10933]={d="r"},
+ [0x10934]={d="r"},
+ [0x10935]={d="r"},
+ [0x10936]={d="r"},
+ [0x10937]={d="r"},
+ [0x10938]={d="r"},
+ [0x10939]={d="r"},
+ [0x1093F]={d="r"},
+ [0x10980]={d="r"},
+ [0x10981]={d="r"},
+ [0x10982]={d="r"},
+ [0x10983]={d="r"},
+ [0x10984]={d="r"},
+ [0x10985]={d="r"},
+ [0x10986]={d="r"},
+ [0x10987]={d="r"},
+ [0x10988]={d="r"},
+ [0x10989]={d="r"},
+ [0x1098A]={d="r"},
+ [0x1098B]={d="r"},
+ [0x1098C]={d="r"},
+ [0x1098D]={d="r"},
+ [0x1098E]={d="r"},
+ [0x1098F]={d="r"},
+ [0x10990]={d="r"},
+ [0x10991]={d="r"},
+ [0x10992]={d="r"},
+ [0x10993]={d="r"},
+ [0x10994]={d="r"},
+ [0x10995]={d="r"},
+ [0x10996]={d="r"},
+ [0x10997]={d="r"},
+ [0x10998]={d="r"},
+ [0x10999]={d="r"},
+ [0x1099A]={d="r"},
+ [0x1099B]={d="r"},
+ [0x1099C]={d="r"},
+ [0x1099D]={d="r"},
+ [0x1099E]={d="r"},
+ [0x1099F]={d="r"},
+ [0x109A0]={d="r"},
+ [0x109A1]={d="r"},
+ [0x109A2]={d="r"},
+ [0x109A3]={d="r"},
+ [0x109A4]={d="r"},
+ [0x109A5]={d="r"},
+ [0x109A6]={d="r"},
+ [0x109A7]={d="r"},
+ [0x109A8]={d="r"},
+ [0x109A9]={d="r"},
+ [0x109AA]={d="r"},
+ [0x109AB]={d="r"},
+ [0x109AC]={d="r"},
+ [0x109AD]={d="r"},
+ [0x109AE]={d="r"},
+ [0x109AF]={d="r"},
+ [0x109B0]={d="r"},
+ [0x109B1]={d="r"},
+ [0x109B2]={d="r"},
+ [0x109B3]={d="r"},
+ [0x109B4]={d="r"},
+ [0x109B5]={d="r"},
+ [0x109B6]={d="r"},
+ [0x109B7]={d="r"},
+ [0x109BC]={d="r"},
+ [0x109BD]={d="r"},
+ [0x109BE]={d="r"},
+ [0x109BF]={d="r"},
+ [0x109C0]={d="r"},
+ [0x109C1]={d="r"},
+ [0x109C2]={d="r"},
+ [0x109C3]={d="r"},
+ [0x109C4]={d="r"},
+ [0x109C5]={d="r"},
+ [0x109C6]={d="r"},
+ [0x109C7]={d="r"},
+ [0x109C8]={d="r"},
+ [0x109C9]={d="r"},
+ [0x109CA]={d="r"},
+ [0x109CB]={d="r"},
+ [0x109CC]={d="r"},
+ [0x109CD]={d="r"},
+ [0x109CE]={d="r"},
+ [0x109CF]={d="r"},
+ [0x109D2]={d="r"},
+ [0x109D3]={d="r"},
+ [0x109D4]={d="r"},
+ [0x109D5]={d="r"},
+ [0x109D6]={d="r"},
+ [0x109D7]={d="r"},
+ [0x109D8]={d="r"},
+ [0x109D9]={d="r"},
+ [0x109DA]={d="r"},
+ [0x109DB]={d="r"},
+ [0x109DC]={d="r"},
+ [0x109DD]={d="r"},
+ [0x109DE]={d="r"},
+ [0x109DF]={d="r"},
+ [0x109E0]={d="r"},
+ [0x109E1]={d="r"},
+ [0x109E2]={d="r"},
+ [0x109E3]={d="r"},
+ [0x109E4]={d="r"},
+ [0x109E5]={d="r"},
+ [0x109E6]={d="r"},
+ [0x109E7]={d="r"},
+ [0x109E8]={d="r"},
+ [0x109E9]={d="r"},
+ [0x109EA]={d="r"},
+ [0x109EB]={d="r"},
+ [0x109EC]={d="r"},
+ [0x109ED]={d="r"},
+ [0x109EE]={d="r"},
+ [0x109EF]={d="r"},
+ [0x109F0]={d="r"},
+ [0x109F1]={d="r"},
+ [0x109F2]={d="r"},
+ [0x109F3]={d="r"},
+ [0x109F4]={d="r"},
+ [0x109F5]={d="r"},
+ [0x109F6]={d="r"},
+ [0x109F7]={d="r"},
+ [0x109F8]={d="r"},
+ [0x109F9]={d="r"},
+ [0x109FA]={d="r"},
+ [0x109FB]={d="r"},
+ [0x109FC]={d="r"},
+ [0x109FD]={d="r"},
+ [0x109FE]={d="r"},
+ [0x109FF]={d="r"},
+ [0x10A00]={d="r"},
+ [0x10A01]={d="nsm"},
+ [0x10A02]={d="nsm"},
+ [0x10A03]={d="nsm"},
+ [0x10A05]={d="nsm"},
+ [0x10A06]={d="nsm"},
+ [0x10A0C]={d="nsm"},
+ [0x10A0D]={d="nsm"},
+ [0x10A0E]={d="nsm"},
+ [0x10A0F]={d="nsm"},
+ [0x10A10]={d="r"},
+ [0x10A11]={d="r"},
+ [0x10A12]={d="r"},
+ [0x10A13]={d="r"},
+ [0x10A15]={d="r"},
+ [0x10A16]={d="r"},
+ [0x10A17]={d="r"},
+ [0x10A19]={d="r"},
+ [0x10A1A]={d="r"},
+ [0x10A1B]={d="r"},
+ [0x10A1C]={d="r"},
+ [0x10A1D]={d="r"},
+ [0x10A1E]={d="r"},
+ [0x10A1F]={d="r"},
+ [0x10A20]={d="r"},
+ [0x10A21]={d="r"},
+ [0x10A22]={d="r"},
+ [0x10A23]={d="r"},
+ [0x10A24]={d="r"},
+ [0x10A25]={d="r"},
+ [0x10A26]={d="r"},
+ [0x10A27]={d="r"},
+ [0x10A28]={d="r"},
+ [0x10A29]={d="r"},
+ [0x10A2A]={d="r"},
+ [0x10A2B]={d="r"},
+ [0x10A2C]={d="r"},
+ [0x10A2D]={d="r"},
+ [0x10A2E]={d="r"},
+ [0x10A2F]={d="r"},
+ [0x10A30]={d="r"},
+ [0x10A31]={d="r"},
+ [0x10A32]={d="r"},
+ [0x10A33]={d="r"},
+ [0x10A34]={d="r"},
+ [0x10A35]={d="r"},
+ [0x10A38]={d="nsm"},
+ [0x10A39]={d="nsm"},
+ [0x10A3A]={d="nsm"},
+ [0x10A3F]={d="nsm"},
+ [0x10A40]={d="r"},
+ [0x10A41]={d="r"},
+ [0x10A42]={d="r"},
+ [0x10A43]={d="r"},
+ [0x10A44]={d="r"},
+ [0x10A45]={d="r"},
+ [0x10A46]={d="r"},
+ [0x10A47]={d="r"},
+ [0x10A48]={d="r"},
+ [0x10A50]={d="r"},
+ [0x10A51]={d="r"},
+ [0x10A52]={d="r"},
+ [0x10A53]={d="r"},
+ [0x10A54]={d="r"},
+ [0x10A55]={d="r"},
+ [0x10A56]={d="r"},
+ [0x10A57]={d="r"},
+ [0x10A58]={d="r"},
+ [0x10A60]={d="r"},
+ [0x10A61]={d="r"},
+ [0x10A62]={d="r"},
+ [0x10A63]={d="r"},
+ [0x10A64]={d="r"},
+ [0x10A65]={d="r"},
+ [0x10A66]={d="r"},
+ [0x10A67]={d="r"},
+ [0x10A68]={d="r"},
+ [0x10A69]={d="r"},
+ [0x10A6A]={d="r"},
+ [0x10A6B]={d="r"},
+ [0x10A6C]={d="r"},
+ [0x10A6D]={d="r"},
+ [0x10A6E]={d="r"},
+ [0x10A6F]={d="r"},
+ [0x10A70]={d="r"},
+ [0x10A71]={d="r"},
+ [0x10A72]={d="r"},
+ [0x10A73]={d="r"},
+ [0x10A74]={d="r"},
+ [0x10A75]={d="r"},
+ [0x10A76]={d="r"},
+ [0x10A77]={d="r"},
+ [0x10A78]={d="r"},
+ [0x10A79]={d="r"},
+ [0x10A7A]={d="r"},
+ [0x10A7B]={d="r"},
+ [0x10A7C]={d="r"},
+ [0x10A7D]={d="r"},
+ [0x10A7E]={d="r"},
+ [0x10A7F]={d="r"},
+ [0x10A80]={d="r"},
+ [0x10A81]={d="r"},
+ [0x10A82]={d="r"},
+ [0x10A83]={d="r"},
+ [0x10A84]={d="r"},
+ [0x10A85]={d="r"},
+ [0x10A86]={d="r"},
+ [0x10A87]={d="r"},
+ [0x10A88]={d="r"},
+ [0x10A89]={d="r"},
+ [0x10A8A]={d="r"},
+ [0x10A8B]={d="r"},
+ [0x10A8C]={d="r"},
+ [0x10A8D]={d="r"},
+ [0x10A8E]={d="r"},
+ [0x10A8F]={d="r"},
+ [0x10A90]={d="r"},
+ [0x10A91]={d="r"},
+ [0x10A92]={d="r"},
+ [0x10A93]={d="r"},
+ [0x10A94]={d="r"},
+ [0x10A95]={d="r"},
+ [0x10A96]={d="r"},
+ [0x10A97]={d="r"},
+ [0x10A98]={d="r"},
+ [0x10A99]={d="r"},
+ [0x10A9A]={d="r"},
+ [0x10A9B]={d="r"},
+ [0x10A9C]={d="r"},
+ [0x10A9D]={d="r"},
+ [0x10A9E]={d="r"},
+ [0x10A9F]={d="r"},
+ [0x10AC0]={d="r"},
+ [0x10AC1]={d="r"},
+ [0x10AC2]={d="r"},
+ [0x10AC3]={d="r"},
+ [0x10AC4]={d="r"},
+ [0x10AC5]={d="r"},
+ [0x10AC6]={d="r"},
+ [0x10AC7]={d="r"},
+ [0x10AC8]={d="r"},
+ [0x10AC9]={d="r"},
+ [0x10ACA]={d="r"},
+ [0x10ACB]={d="r"},
+ [0x10ACC]={d="r"},
+ [0x10ACD]={d="r"},
+ [0x10ACE]={d="r"},
+ [0x10ACF]={d="r"},
+ [0x10AD0]={d="r"},
+ [0x10AD1]={d="r"},
+ [0x10AD2]={d="r"},
+ [0x10AD3]={d="r"},
+ [0x10AD4]={d="r"},
+ [0x10AD5]={d="r"},
+ [0x10AD6]={d="r"},
+ [0x10AD7]={d="r"},
+ [0x10AD8]={d="r"},
+ [0x10AD9]={d="r"},
+ [0x10ADA]={d="r"},
+ [0x10ADB]={d="r"},
+ [0x10ADC]={d="r"},
+ [0x10ADD]={d="r"},
+ [0x10ADE]={d="r"},
+ [0x10ADF]={d="r"},
+ [0x10AE0]={d="r"},
+ [0x10AE1]={d="r"},
+ [0x10AE2]={d="r"},
+ [0x10AE3]={d="r"},
+ [0x10AE4]={d="r"},
+ [0x10AE5]={d="nsm"},
+ [0x10AE6]={d="nsm"},
+ [0x10AEB]={d="r"},
+ [0x10AEC]={d="r"},
+ [0x10AED]={d="r"},
+ [0x10AEE]={d="r"},
+ [0x10AEF]={d="r"},
+ [0x10AF0]={d="r"},
+ [0x10AF1]={d="r"},
+ [0x10AF2]={d="r"},
+ [0x10AF3]={d="r"},
+ [0x10AF4]={d="r"},
+ [0x10AF5]={d="r"},
+ [0x10AF6]={d="r"},
+ [0x10B00]={d="r"},
+ [0x10B01]={d="r"},
+ [0x10B02]={d="r"},
+ [0x10B03]={d="r"},
+ [0x10B04]={d="r"},
+ [0x10B05]={d="r"},
+ [0x10B06]={d="r"},
+ [0x10B07]={d="r"},
+ [0x10B08]={d="r"},
+ [0x10B09]={d="r"},
+ [0x10B0A]={d="r"},
+ [0x10B0B]={d="r"},
+ [0x10B0C]={d="r"},
+ [0x10B0D]={d="r"},
+ [0x10B0E]={d="r"},
+ [0x10B0F]={d="r"},
+ [0x10B10]={d="r"},
+ [0x10B11]={d="r"},
+ [0x10B12]={d="r"},
+ [0x10B13]={d="r"},
+ [0x10B14]={d="r"},
+ [0x10B15]={d="r"},
+ [0x10B16]={d="r"},
+ [0x10B17]={d="r"},
+ [0x10B18]={d="r"},
+ [0x10B19]={d="r"},
+ [0x10B1A]={d="r"},
+ [0x10B1B]={d="r"},
+ [0x10B1C]={d="r"},
+ [0x10B1D]={d="r"},
+ [0x10B1E]={d="r"},
+ [0x10B1F]={d="r"},
+ [0x10B20]={d="r"},
+ [0x10B21]={d="r"},
+ [0x10B22]={d="r"},
+ [0x10B23]={d="r"},
+ [0x10B24]={d="r"},
+ [0x10B25]={d="r"},
+ [0x10B26]={d="r"},
+ [0x10B27]={d="r"},
+ [0x10B28]={d="r"},
+ [0x10B29]={d="r"},
+ [0x10B2A]={d="r"},
+ [0x10B2B]={d="r"},
+ [0x10B2C]={d="r"},
+ [0x10B2D]={d="r"},
+ [0x10B2E]={d="r"},
+ [0x10B2F]={d="r"},
+ [0x10B30]={d="r"},
+ [0x10B31]={d="r"},
+ [0x10B32]={d="r"},
+ [0x10B33]={d="r"},
+ [0x10B34]={d="r"},
+ [0x10B35]={d="r"},
+ [0x10B39]={d="on"},
+ [0x10B3A]={d="on"},
+ [0x10B3B]={d="on"},
+ [0x10B3C]={d="on"},
+ [0x10B3D]={d="on"},
+ [0x10B3E]={d="on"},
+ [0x10B3F]={d="on"},
+ [0x10B40]={d="r"},
+ [0x10B41]={d="r"},
+ [0x10B42]={d="r"},
+ [0x10B43]={d="r"},
+ [0x10B44]={d="r"},
+ [0x10B45]={d="r"},
+ [0x10B46]={d="r"},
+ [0x10B47]={d="r"},
+ [0x10B48]={d="r"},
+ [0x10B49]={d="r"},
+ [0x10B4A]={d="r"},
+ [0x10B4B]={d="r"},
+ [0x10B4C]={d="r"},
+ [0x10B4D]={d="r"},
+ [0x10B4E]={d="r"},
+ [0x10B4F]={d="r"},
+ [0x10B50]={d="r"},
+ [0x10B51]={d="r"},
+ [0x10B52]={d="r"},
+ [0x10B53]={d="r"},
+ [0x10B54]={d="r"},
+ [0x10B55]={d="r"},
+ [0x10B58]={d="r"},
+ [0x10B59]={d="r"},
+ [0x10B5A]={d="r"},
+ [0x10B5B]={d="r"},
+ [0x10B5C]={d="r"},
+ [0x10B5D]={d="r"},
+ [0x10B5E]={d="r"},
+ [0x10B5F]={d="r"},
+ [0x10B60]={d="r"},
+ [0x10B61]={d="r"},
+ [0x10B62]={d="r"},
+ [0x10B63]={d="r"},
+ [0x10B64]={d="r"},
+ [0x10B65]={d="r"},
+ [0x10B66]={d="r"},
+ [0x10B67]={d="r"},
+ [0x10B68]={d="r"},
+ [0x10B69]={d="r"},
+ [0x10B6A]={d="r"},
+ [0x10B6B]={d="r"},
+ [0x10B6C]={d="r"},
+ [0x10B6D]={d="r"},
+ [0x10B6E]={d="r"},
+ [0x10B6F]={d="r"},
+ [0x10B70]={d="r"},
+ [0x10B71]={d="r"},
+ [0x10B72]={d="r"},
+ [0x10B78]={d="r"},
+ [0x10B79]={d="r"},
+ [0x10B7A]={d="r"},
+ [0x10B7B]={d="r"},
+ [0x10B7C]={d="r"},
+ [0x10B7D]={d="r"},
+ [0x10B7E]={d="r"},
+ [0x10B7F]={d="r"},
+ [0x10B80]={d="r"},
+ [0x10B81]={d="r"},
+ [0x10B82]={d="r"},
+ [0x10B83]={d="r"},
+ [0x10B84]={d="r"},
+ [0x10B85]={d="r"},
+ [0x10B86]={d="r"},
+ [0x10B87]={d="r"},
+ [0x10B88]={d="r"},
+ [0x10B89]={d="r"},
+ [0x10B8A]={d="r"},
+ [0x10B8B]={d="r"},
+ [0x10B8C]={d="r"},
+ [0x10B8D]={d="r"},
+ [0x10B8E]={d="r"},
+ [0x10B8F]={d="r"},
+ [0x10B90]={d="r"},
+ [0x10B91]={d="r"},
+ [0x10B99]={d="r"},
+ [0x10B9A]={d="r"},
+ [0x10B9B]={d="r"},
+ [0x10B9C]={d="r"},
+ [0x10BA9]={d="r"},
+ [0x10BAA]={d="r"},
+ [0x10BAB]={d="r"},
+ [0x10BAC]={d="r"},
+ [0x10BAD]={d="r"},
+ [0x10BAE]={d="r"},
+ [0x10BAF]={d="r"},
+ [0x10C00]={d="r"},
+ [0x10C01]={d="r"},
+ [0x10C02]={d="r"},
+ [0x10C03]={d="r"},
+ [0x10C04]={d="r"},
+ [0x10C05]={d="r"},
+ [0x10C06]={d="r"},
+ [0x10C07]={d="r"},
+ [0x10C08]={d="r"},
+ [0x10C09]={d="r"},
+ [0x10C0A]={d="r"},
+ [0x10C0B]={d="r"},
+ [0x10C0C]={d="r"},
+ [0x10C0D]={d="r"},
+ [0x10C0E]={d="r"},
+ [0x10C0F]={d="r"},
+ [0x10C10]={d="r"},
+ [0x10C11]={d="r"},
+ [0x10C12]={d="r"},
+ [0x10C13]={d="r"},
+ [0x10C14]={d="r"},
+ [0x10C15]={d="r"},
+ [0x10C16]={d="r"},
+ [0x10C17]={d="r"},
+ [0x10C18]={d="r"},
+ [0x10C19]={d="r"},
+ [0x10C1A]={d="r"},
+ [0x10C1B]={d="r"},
+ [0x10C1C]={d="r"},
+ [0x10C1D]={d="r"},
+ [0x10C1E]={d="r"},
+ [0x10C1F]={d="r"},
+ [0x10C20]={d="r"},
+ [0x10C21]={d="r"},
+ [0x10C22]={d="r"},
+ [0x10C23]={d="r"},
+ [0x10C24]={d="r"},
+ [0x10C25]={d="r"},
+ [0x10C26]={d="r"},
+ [0x10C27]={d="r"},
+ [0x10C28]={d="r"},
+ [0x10C29]={d="r"},
+ [0x10C2A]={d="r"},
+ [0x10C2B]={d="r"},
+ [0x10C2C]={d="r"},
+ [0x10C2D]={d="r"},
+ [0x10C2E]={d="r"},
+ [0x10C2F]={d="r"},
+ [0x10C30]={d="r"},
+ [0x10C31]={d="r"},
+ [0x10C32]={d="r"},
+ [0x10C33]={d="r"},
+ [0x10C34]={d="r"},
+ [0x10C35]={d="r"},
+ [0x10C36]={d="r"},
+ [0x10C37]={d="r"},
+ [0x10C38]={d="r"},
+ [0x10C39]={d="r"},
+ [0x10C3A]={d="r"},
+ [0x10C3B]={d="r"},
+ [0x10C3C]={d="r"},
+ [0x10C3D]={d="r"},
+ [0x10C3E]={d="r"},
+ [0x10C3F]={d="r"},
+ [0x10C40]={d="r"},
+ [0x10C41]={d="r"},
+ [0x10C42]={d="r"},
+ [0x10C43]={d="r"},
+ [0x10C44]={d="r"},
+ [0x10C45]={d="r"},
+ [0x10C46]={d="r"},
+ [0x10C47]={d="r"},
+ [0x10C48]={d="r"},
+ [0x10C80]={d="r"},
+ [0x10C81]={d="r"},
+ [0x10C82]={d="r"},
+ [0x10C83]={d="r"},
+ [0x10C84]={d="r"},
+ [0x10C85]={d="r"},
+ [0x10C86]={d="r"},
+ [0x10C87]={d="r"},
+ [0x10C88]={d="r"},
+ [0x10C89]={d="r"},
+ [0x10C8A]={d="r"},
+ [0x10C8B]={d="r"},
+ [0x10C8C]={d="r"},
+ [0x10C8D]={d="r"},
+ [0x10C8E]={d="r"},
+ [0x10C8F]={d="r"},
+ [0x10C90]={d="r"},
+ [0x10C91]={d="r"},
+ [0x10C92]={d="r"},
+ [0x10C93]={d="r"},
+ [0x10C94]={d="r"},
+ [0x10C95]={d="r"},
+ [0x10C96]={d="r"},
+ [0x10C97]={d="r"},
+ [0x10C98]={d="r"},
+ [0x10C99]={d="r"},
+ [0x10C9A]={d="r"},
+ [0x10C9B]={d="r"},
+ [0x10C9C]={d="r"},
+ [0x10C9D]={d="r"},
+ [0x10C9E]={d="r"},
+ [0x10C9F]={d="r"},
+ [0x10CA0]={d="r"},
+ [0x10CA1]={d="r"},
+ [0x10CA2]={d="r"},
+ [0x10CA3]={d="r"},
+ [0x10CA4]={d="r"},
+ [0x10CA5]={d="r"},
+ [0x10CA6]={d="r"},
+ [0x10CA7]={d="r"},
+ [0x10CA8]={d="r"},
+ [0x10CA9]={d="r"},
+ [0x10CAA]={d="r"},
+ [0x10CAB]={d="r"},
+ [0x10CAC]={d="r"},
+ [0x10CAD]={d="r"},
+ [0x10CAE]={d="r"},
+ [0x10CAF]={d="r"},
+ [0x10CB0]={d="r"},
+ [0x10CB1]={d="r"},
+ [0x10CB2]={d="r"},
+ [0x10CC0]={d="r"},
+ [0x10CC1]={d="r"},
+ [0x10CC2]={d="r"},
+ [0x10CC3]={d="r"},
+ [0x10CC4]={d="r"},
+ [0x10CC5]={d="r"},
+ [0x10CC6]={d="r"},
+ [0x10CC7]={d="r"},
+ [0x10CC8]={d="r"},
+ [0x10CC9]={d="r"},
+ [0x10CCA]={d="r"},
+ [0x10CCB]={d="r"},
+ [0x10CCC]={d="r"},
+ [0x10CCD]={d="r"},
+ [0x10CCE]={d="r"},
+ [0x10CCF]={d="r"},
+ [0x10CD0]={d="r"},
+ [0x10CD1]={d="r"},
+ [0x10CD2]={d="r"},
+ [0x10CD3]={d="r"},
+ [0x10CD4]={d="r"},
+ [0x10CD5]={d="r"},
+ [0x10CD6]={d="r"},
+ [0x10CD7]={d="r"},
+ [0x10CD8]={d="r"},
+ [0x10CD9]={d="r"},
+ [0x10CDA]={d="r"},
+ [0x10CDB]={d="r"},
+ [0x10CDC]={d="r"},
+ [0x10CDD]={d="r"},
+ [0x10CDE]={d="r"},
+ [0x10CDF]={d="r"},
+ [0x10CE0]={d="r"},
+ [0x10CE1]={d="r"},
+ [0x10CE2]={d="r"},
+ [0x10CE3]={d="r"},
+ [0x10CE4]={d="r"},
+ [0x10CE5]={d="r"},
+ [0x10CE6]={d="r"},
+ [0x10CE7]={d="r"},
+ [0x10CE8]={d="r"},
+ [0x10CE9]={d="r"},
+ [0x10CEA]={d="r"},
+ [0x10CEB]={d="r"},
+ [0x10CEC]={d="r"},
+ [0x10CED]={d="r"},
+ [0x10CEE]={d="r"},
+ [0x10CEF]={d="r"},
+ [0x10CF0]={d="r"},
+ [0x10CF1]={d="r"},
+ [0x10CF2]={d="r"},
+ [0x10CFA]={d="r"},
+ [0x10CFB]={d="r"},
+ [0x10CFC]={d="r"},
+ [0x10CFD]={d="r"},
+ [0x10CFE]={d="r"},
+ [0x10CFF]={d="r"},
+ [0x10D00]={d="al"},
+ [0x10D01]={d="al"},
+ [0x10D02]={d="al"},
+ [0x10D03]={d="al"},
+ [0x10D04]={d="al"},
+ [0x10D05]={d="al"},
+ [0x10D06]={d="al"},
+ [0x10D07]={d="al"},
+ [0x10D08]={d="al"},
+ [0x10D09]={d="al"},
+ [0x10D0A]={d="al"},
+ [0x10D0B]={d="al"},
+ [0x10D0C]={d="al"},
+ [0x10D0D]={d="al"},
+ [0x10D0E]={d="al"},
+ [0x10D0F]={d="al"},
+ [0x10D10]={d="al"},
+ [0x10D11]={d="al"},
+ [0x10D12]={d="al"},
+ [0x10D13]={d="al"},
+ [0x10D14]={d="al"},
+ [0x10D15]={d="al"},
+ [0x10D16]={d="al"},
+ [0x10D17]={d="al"},
+ [0x10D18]={d="al"},
+ [0x10D19]={d="al"},
+ [0x10D1A]={d="al"},
+ [0x10D1B]={d="al"},
+ [0x10D1C]={d="al"},
+ [0x10D1D]={d="al"},
+ [0x10D1E]={d="al"},
+ [0x10D1F]={d="al"},
+ [0x10D20]={d="al"},
+ [0x10D21]={d="al"},
+ [0x10D22]={d="al"},
+ [0x10D23]={d="al"},
+ [0x10D24]={d="nsm"},
+ [0x10D25]={d="nsm"},
+ [0x10D26]={d="nsm"},
+ [0x10D27]={d="nsm"},
+ [0x10D30]={d="an"},
+ [0x10D31]={d="an"},
+ [0x10D32]={d="an"},
+ [0x10D33]={d="an"},
+ [0x10D34]={d="an"},
+ [0x10D35]={d="an"},
+ [0x10D36]={d="an"},
+ [0x10D37]={d="an"},
+ [0x10D38]={d="an"},
+ [0x10D39]={d="an"},
+ [0x10E60]={d="an"},
+ [0x10E61]={d="an"},
+ [0x10E62]={d="an"},
+ [0x10E63]={d="an"},
+ [0x10E64]={d="an"},
+ [0x10E65]={d="an"},
+ [0x10E66]={d="an"},
+ [0x10E67]={d="an"},
+ [0x10E68]={d="an"},
+ [0x10E69]={d="an"},
+ [0x10E6A]={d="an"},
+ [0x10E6B]={d="an"},
+ [0x10E6C]={d="an"},
+ [0x10E6D]={d="an"},
+ [0x10E6E]={d="an"},
+ [0x10E6F]={d="an"},
+ [0x10E70]={d="an"},
+ [0x10E71]={d="an"},
+ [0x10E72]={d="an"},
+ [0x10E73]={d="an"},
+ [0x10E74]={d="an"},
+ [0x10E75]={d="an"},
+ [0x10E76]={d="an"},
+ [0x10E77]={d="an"},
+ [0x10E78]={d="an"},
+ [0x10E79]={d="an"},
+ [0x10E7A]={d="an"},
+ [0x10E7B]={d="an"},
+ [0x10E7C]={d="an"},
+ [0x10E7D]={d="an"},
+ [0x10E7E]={d="an"},
+ [0x10E80]={d="r"},
+ [0x10E81]={d="r"},
+ [0x10E82]={d="r"},
+ [0x10E83]={d="r"},
+ [0x10E84]={d="r"},
+ [0x10E85]={d="r"},
+ [0x10E86]={d="r"},
+ [0x10E87]={d="r"},
+ [0x10E88]={d="r"},
+ [0x10E89]={d="r"},
+ [0x10E8A]={d="r"},
+ [0x10E8B]={d="r"},
+ [0x10E8C]={d="r"},
+ [0x10E8D]={d="r"},
+ [0x10E8E]={d="r"},
+ [0x10E8F]={d="r"},
+ [0x10E90]={d="r"},
+ [0x10E91]={d="r"},
+ [0x10E92]={d="r"},
+ [0x10E93]={d="r"},
+ [0x10E94]={d="r"},
+ [0x10E95]={d="r"},
+ [0x10E96]={d="r"},
+ [0x10E97]={d="r"},
+ [0x10E98]={d="r"},
+ [0x10E99]={d="r"},
+ [0x10E9A]={d="r"},
+ [0x10E9B]={d="r"},
+ [0x10E9C]={d="r"},
+ [0x10E9D]={d="r"},
+ [0x10E9E]={d="r"},
+ [0x10E9F]={d="r"},
+ [0x10EA0]={d="r"},
+ [0x10EA1]={d="r"},
+ [0x10EA2]={d="r"},
+ [0x10EA3]={d="r"},
+ [0x10EA4]={d="r"},
+ [0x10EA5]={d="r"},
+ [0x10EA6]={d="r"},
+ [0x10EA7]={d="r"},
+ [0x10EA8]={d="r"},
+ [0x10EA9]={d="r"},
+ [0x10EAB]={d="nsm"},
+ [0x10EAC]={d="nsm"},
+ [0x10EAD]={d="r"},
+ [0x10EB0]={d="r"},
+ [0x10EB1]={d="r"},
+ [0x10EFD]={d="nsm"},
+ [0x10EFE]={d="nsm"},
+ [0x10EFF]={d="nsm"},
+ [0x10F00]={d="r"},
+ [0x10F01]={d="r"},
+ [0x10F02]={d="r"},
+ [0x10F03]={d="r"},
+ [0x10F04]={d="r"},
+ [0x10F05]={d="r"},
+ [0x10F06]={d="r"},
+ [0x10F07]={d="r"},
+ [0x10F08]={d="r"},
+ [0x10F09]={d="r"},
+ [0x10F0A]={d="r"},
+ [0x10F0B]={d="r"},
+ [0x10F0C]={d="r"},
+ [0x10F0D]={d="r"},
+ [0x10F0E]={d="r"},
+ [0x10F0F]={d="r"},
+ [0x10F10]={d="r"},
+ [0x10F11]={d="r"},
+ [0x10F12]={d="r"},
+ [0x10F13]={d="r"},
+ [0x10F14]={d="r"},
+ [0x10F15]={d="r"},
+ [0x10F16]={d="r"},
+ [0x10F17]={d="r"},
+ [0x10F18]={d="r"},
+ [0x10F19]={d="r"},
+ [0x10F1A]={d="r"},
+ [0x10F1B]={d="r"},
+ [0x10F1C]={d="r"},
+ [0x10F1D]={d="r"},
+ [0x10F1E]={d="r"},
+ [0x10F1F]={d="r"},
+ [0x10F20]={d="r"},
+ [0x10F21]={d="r"},
+ [0x10F22]={d="r"},
+ [0x10F23]={d="r"},
+ [0x10F24]={d="r"},
+ [0x10F25]={d="r"},
+ [0x10F26]={d="r"},
+ [0x10F27]={d="r"},
+ [0x10F30]={d="al"},
+ [0x10F31]={d="al"},
+ [0x10F32]={d="al"},
+ [0x10F33]={d="al"},
+ [0x10F34]={d="al"},
+ [0x10F35]={d="al"},
+ [0x10F36]={d="al"},
+ [0x10F37]={d="al"},
+ [0x10F38]={d="al"},
+ [0x10F39]={d="al"},
+ [0x10F3A]={d="al"},
+ [0x10F3B]={d="al"},
+ [0x10F3C]={d="al"},
+ [0x10F3D]={d="al"},
+ [0x10F3E]={d="al"},
+ [0x10F3F]={d="al"},
+ [0x10F40]={d="al"},
+ [0x10F41]={d="al"},
+ [0x10F42]={d="al"},
+ [0x10F43]={d="al"},
+ [0x10F44]={d="al"},
+ [0x10F45]={d="al"},
+ [0x10F46]={d="nsm"},
+ [0x10F47]={d="nsm"},
+ [0x10F48]={d="nsm"},
+ [0x10F49]={d="nsm"},
+ [0x10F4A]={d="nsm"},
+ [0x10F4B]={d="nsm"},
+ [0x10F4C]={d="nsm"},
+ [0x10F4D]={d="nsm"},
+ [0x10F4E]={d="nsm"},
+ [0x10F4F]={d="nsm"},
+ [0x10F50]={d="nsm"},
+ [0x10F51]={d="al"},
+ [0x10F52]={d="al"},
+ [0x10F53]={d="al"},
+ [0x10F54]={d="al"},
+ [0x10F55]={d="al"},
+ [0x10F56]={d="al"},
+ [0x10F57]={d="al"},
+ [0x10F58]={d="al"},
+ [0x10F59]={d="al"},
+ [0x10F70]={d="r"},
+ [0x10F71]={d="r"},
+ [0x10F72]={d="r"},
+ [0x10F73]={d="r"},
+ [0x10F74]={d="r"},
+ [0x10F75]={d="r"},
+ [0x10F76]={d="r"},
+ [0x10F77]={d="r"},
+ [0x10F78]={d="r"},
+ [0x10F79]={d="r"},
+ [0x10F7A]={d="r"},
+ [0x10F7B]={d="r"},
+ [0x10F7C]={d="r"},
+ [0x10F7D]={d="r"},
+ [0x10F7E]={d="r"},
+ [0x10F7F]={d="r"},
+ [0x10F80]={d="r"},
+ [0x10F81]={d="r"},
+ [0x10F82]={d="nsm"},
+ [0x10F83]={d="nsm"},
+ [0x10F84]={d="nsm"},
+ [0x10F85]={d="nsm"},
+ [0x10F86]={d="r"},
+ [0x10F87]={d="r"},
+ [0x10F88]={d="r"},
+ [0x10F89]={d="r"},
+ [0x10FB0]={d="r"},
+ [0x10FB1]={d="r"},
+ [0x10FB2]={d="r"},
+ [0x10FB3]={d="r"},
+ [0x10FB4]={d="r"},
+ [0x10FB5]={d="r"},
+ [0x10FB6]={d="r"},
+ [0x10FB7]={d="r"},
+ [0x10FB8]={d="r"},
+ [0x10FB9]={d="r"},
+ [0x10FBA]={d="r"},
+ [0x10FBB]={d="r"},
+ [0x10FBC]={d="r"},
+ [0x10FBD]={d="r"},
+ [0x10FBE]={d="r"},
+ [0x10FBF]={d="r"},
+ [0x10FC0]={d="r"},
+ [0x10FC1]={d="r"},
+ [0x10FC2]={d="r"},
+ [0x10FC3]={d="r"},
+ [0x10FC4]={d="r"},
+ [0x10FC5]={d="r"},
+ [0x10FC6]={d="r"},
+ [0x10FC7]={d="r"},
+ [0x10FC8]={d="r"},
+ [0x10FC9]={d="r"},
+ [0x10FCA]={d="r"},
+ [0x10FCB]={d="r"},
+ [0x10FE0]={d="r"},
+ [0x10FE1]={d="r"},
+ [0x10FE2]={d="r"},
+ [0x10FE3]={d="r"},
+ [0x10FE4]={d="r"},
+ [0x10FE5]={d="r"},
+ [0x10FE6]={d="r"},
+ [0x10FE7]={d="r"},
+ [0x10FE8]={d="r"},
+ [0x10FE9]={d="r"},
+ [0x10FEA]={d="r"},
+ [0x10FEB]={d="r"},
+ [0x10FEC]={d="r"},
+ [0x10FED]={d="r"},
+ [0x10FEE]={d="r"},
+ [0x10FEF]={d="r"},
+ [0x10FF0]={d="r"},
+ [0x10FF1]={d="r"},
+ [0x10FF2]={d="r"},
+ [0x10FF3]={d="r"},
+ [0x10FF4]={d="r"},
+ [0x10FF5]={d="r"},
+ [0x10FF6]={d="r"},
+ [0x11000]={d="l"},
+ [0x11001]={d="nsm"},
+ [0x11002]={d="l"},
+ [0x11003]={d="l"},
+ [0x11004]={d="l"},
+ [0x11005]={d="l"},
+ [0x11006]={d="l"},
+ [0x11007]={d="l"},
+ [0x11008]={d="l"},
+ [0x11009]={d="l"},
+ [0x1100A]={d="l"},
+ [0x1100B]={d="l"},
+ [0x1100C]={d="l"},
+ [0x1100D]={d="l"},
+ [0x1100E]={d="l"},
+ [0x1100F]={d="l"},
+ [0x11010]={d="l"},
+ [0x11011]={d="l"},
+ [0x11012]={d="l"},
+ [0x11013]={d="l"},
+ [0x11014]={d="l"},
+ [0x11015]={d="l"},
+ [0x11016]={d="l"},
+ [0x11017]={d="l"},
+ [0x11018]={d="l"},
+ [0x11019]={d="l"},
+ [0x1101A]={d="l"},
+ [0x1101B]={d="l"},
+ [0x1101C]={d="l"},
+ [0x1101D]={d="l"},
+ [0x1101E]={d="l"},
+ [0x1101F]={d="l"},
+ [0x11020]={d="l"},
+ [0x11021]={d="l"},
+ [0x11022]={d="l"},
+ [0x11023]={d="l"},
+ [0x11024]={d="l"},
+ [0x11025]={d="l"},
+ [0x11026]={d="l"},
+ [0x11027]={d="l"},
+ [0x11028]={d="l"},
+ [0x11029]={d="l"},
+ [0x1102A]={d="l"},
+ [0x1102B]={d="l"},
+ [0x1102C]={d="l"},
+ [0x1102D]={d="l"},
+ [0x1102E]={d="l"},
+ [0x1102F]={d="l"},
+ [0x11030]={d="l"},
+ [0x11031]={d="l"},
+ [0x11032]={d="l"},
+ [0x11033]={d="l"},
+ [0x11034]={d="l"},
+ [0x11035]={d="l"},
+ [0x11036]={d="l"},
+ [0x11037]={d="l"},
+ [0x11038]={d="nsm"},
+ [0x11039]={d="nsm"},
+ [0x1103A]={d="nsm"},
+ [0x1103B]={d="nsm"},
+ [0x1103C]={d="nsm"},
+ [0x1103D]={d="nsm"},
+ [0x1103E]={d="nsm"},
+ [0x1103F]={d="nsm"},
+ [0x11040]={d="nsm"},
+ [0x11041]={d="nsm"},
+ [0x11042]={d="nsm"},
+ [0x11043]={d="nsm"},
+ [0x11044]={d="nsm"},
+ [0x11045]={d="nsm"},
+ [0x11046]={d="nsm"},
+ [0x11047]={d="l"},
+ [0x11048]={d="l"},
+ [0x11049]={d="l"},
+ [0x1104A]={d="l"},
+ [0x1104B]={d="l"},
+ [0x1104C]={d="l"},
+ [0x1104D]={d="l"},
+ [0x11052]={d="on"},
+ [0x11053]={d="on"},
+ [0x11054]={d="on"},
+ [0x11055]={d="on"},
+ [0x11056]={d="on"},
+ [0x11057]={d="on"},
+ [0x11058]={d="on"},
+ [0x11059]={d="on"},
+ [0x1105A]={d="on"},
+ [0x1105B]={d="on"},
+ [0x1105C]={d="on"},
+ [0x1105D]={d="on"},
+ [0x1105E]={d="on"},
+ [0x1105F]={d="on"},
+ [0x11060]={d="on"},
+ [0x11061]={d="on"},
+ [0x11062]={d="on"},
+ [0x11063]={d="on"},
+ [0x11064]={d="on"},
+ [0x11065]={d="on"},
+ [0x11066]={d="l"},
+ [0x11067]={d="l"},
+ [0x11068]={d="l"},
+ [0x11069]={d="l"},
+ [0x1106A]={d="l"},
+ [0x1106B]={d="l"},
+ [0x1106C]={d="l"},
+ [0x1106D]={d="l"},
+ [0x1106E]={d="l"},
+ [0x1106F]={d="l"},
+ [0x11070]={d="nsm"},
+ [0x11071]={d="l"},
+ [0x11072]={d="l"},
+ [0x11073]={d="nsm"},
+ [0x11074]={d="nsm"},
+ [0x11075]={d="l"},
+ [0x1107F]={d="nsm"},
+ [0x11080]={d="nsm"},
+ [0x11081]={d="nsm"},
+ [0x11082]={d="l"},
+ [0x11083]={d="l"},
+ [0x11084]={d="l"},
+ [0x11085]={d="l"},
+ [0x11086]={d="l"},
+ [0x11087]={d="l"},
+ [0x11088]={d="l"},
+ [0x11089]={d="l"},
+ [0x1108A]={d="l"},
+ [0x1108B]={d="l"},
+ [0x1108C]={d="l"},
+ [0x1108D]={d="l"},
+ [0x1108E]={d="l"},
+ [0x1108F]={d="l"},
+ [0x11090]={d="l"},
+ [0x11091]={d="l"},
+ [0x11092]={d="l"},
+ [0x11093]={d="l"},
+ [0x11094]={d="l"},
+ [0x11095]={d="l"},
+ [0x11096]={d="l"},
+ [0x11097]={d="l"},
+ [0x11098]={d="l"},
+ [0x11099]={d="l"},
+ [0x1109A]={d="l"},
+ [0x1109B]={d="l"},
+ [0x1109C]={d="l"},
+ [0x1109D]={d="l"},
+ [0x1109E]={d="l"},
+ [0x1109F]={d="l"},
+ [0x110A0]={d="l"},
+ [0x110A1]={d="l"},
+ [0x110A2]={d="l"},
+ [0x110A3]={d="l"},
+ [0x110A4]={d="l"},
+ [0x110A5]={d="l"},
+ [0x110A6]={d="l"},
+ [0x110A7]={d="l"},
+ [0x110A8]={d="l"},
+ [0x110A9]={d="l"},
+ [0x110AA]={d="l"},
+ [0x110AB]={d="l"},
+ [0x110AC]={d="l"},
+ [0x110AD]={d="l"},
+ [0x110AE]={d="l"},
+ [0x110AF]={d="l"},
+ [0x110B0]={d="l"},
+ [0x110B1]={d="l"},
+ [0x110B2]={d="l"},
+ [0x110B3]={d="nsm"},
+ [0x110B4]={d="nsm"},
+ [0x110B5]={d="nsm"},
+ [0x110B6]={d="nsm"},
+ [0x110B7]={d="l"},
+ [0x110B8]={d="l"},
+ [0x110B9]={d="nsm"},
+ [0x110BA]={d="nsm"},
+ [0x110BB]={d="l"},
+ [0x110BC]={d="l"},
+ [0x110BD]={d="l"},
+ [0x110BE]={d="l"},
+ [0x110BF]={d="l"},
+ [0x110C0]={d="l"},
+ [0x110C1]={d="l"},
+ [0x110C2]={d="nsm"},
+ [0x110CD]={d="l"},
+ [0x110D0]={d="l"},
+ [0x110D1]={d="l"},
+ [0x110D2]={d="l"},
+ [0x110D3]={d="l"},
+ [0x110D4]={d="l"},
+ [0x110D5]={d="l"},
+ [0x110D6]={d="l"},
+ [0x110D7]={d="l"},
+ [0x110D8]={d="l"},
+ [0x110D9]={d="l"},
+ [0x110DA]={d="l"},
+ [0x110DB]={d="l"},
+ [0x110DC]={d="l"},
+ [0x110DD]={d="l"},
+ [0x110DE]={d="l"},
+ [0x110DF]={d="l"},
+ [0x110E0]={d="l"},
+ [0x110E1]={d="l"},
+ [0x110E2]={d="l"},
+ [0x110E3]={d="l"},
+ [0x110E4]={d="l"},
+ [0x110E5]={d="l"},
+ [0x110E6]={d="l"},
+ [0x110E7]={d="l"},
+ [0x110E8]={d="l"},
+ [0x110F0]={d="l"},
+ [0x110F1]={d="l"},
+ [0x110F2]={d="l"},
+ [0x110F3]={d="l"},
+ [0x110F4]={d="l"},
+ [0x110F5]={d="l"},
+ [0x110F6]={d="l"},
+ [0x110F7]={d="l"},
+ [0x110F8]={d="l"},
+ [0x110F9]={d="l"},
+ [0x11100]={d="nsm"},
+ [0x11101]={d="nsm"},
+ [0x11102]={d="nsm"},
+ [0x11103]={d="l"},
+ [0x11104]={d="l"},
+ [0x11105]={d="l"},
+ [0x11106]={d="l"},
+ [0x11107]={d="l"},
+ [0x11108]={d="l"},
+ [0x11109]={d="l"},
+ [0x1110A]={d="l"},
+ [0x1110B]={d="l"},
+ [0x1110C]={d="l"},
+ [0x1110D]={d="l"},
+ [0x1110E]={d="l"},
+ [0x1110F]={d="l"},
+ [0x11110]={d="l"},
+ [0x11111]={d="l"},
+ [0x11112]={d="l"},
+ [0x11113]={d="l"},
+ [0x11114]={d="l"},
+ [0x11115]={d="l"},
+ [0x11116]={d="l"},
+ [0x11117]={d="l"},
+ [0x11118]={d="l"},
+ [0x11119]={d="l"},
+ [0x1111A]={d="l"},
+ [0x1111B]={d="l"},
+ [0x1111C]={d="l"},
+ [0x1111D]={d="l"},
+ [0x1111E]={d="l"},
+ [0x1111F]={d="l"},
+ [0x11120]={d="l"},
+ [0x11121]={d="l"},
+ [0x11122]={d="l"},
+ [0x11123]={d="l"},
+ [0x11124]={d="l"},
+ [0x11125]={d="l"},
+ [0x11126]={d="l"},
+ [0x11127]={d="nsm"},
+ [0x11128]={d="nsm"},
+ [0x11129]={d="nsm"},
+ [0x1112A]={d="nsm"},
+ [0x1112B]={d="nsm"},
+ [0x1112C]={d="l"},
+ [0x1112D]={d="nsm"},
+ [0x1112E]={d="nsm"},
+ [0x1112F]={d="nsm"},
+ [0x11130]={d="nsm"},
+ [0x11131]={d="nsm"},
+ [0x11132]={d="nsm"},
+ [0x11133]={d="nsm"},
+ [0x11134]={d="nsm"},
+ [0x11136]={d="l"},
+ [0x11137]={d="l"},
+ [0x11138]={d="l"},
+ [0x11139]={d="l"},
+ [0x1113A]={d="l"},
+ [0x1113B]={d="l"},
+ [0x1113C]={d="l"},
+ [0x1113D]={d="l"},
+ [0x1113E]={d="l"},
+ [0x1113F]={d="l"},
+ [0x11140]={d="l"},
+ [0x11141]={d="l"},
+ [0x11142]={d="l"},
+ [0x11143]={d="l"},
+ [0x11144]={d="l"},
+ [0x11145]={d="l"},
+ [0x11146]={d="l"},
+ [0x11147]={d="l"},
+ [0x11150]={d="l"},
+ [0x11151]={d="l"},
+ [0x11152]={d="l"},
+ [0x11153]={d="l"},
+ [0x11154]={d="l"},
+ [0x11155]={d="l"},
+ [0x11156]={d="l"},
+ [0x11157]={d="l"},
+ [0x11158]={d="l"},
+ [0x11159]={d="l"},
+ [0x1115A]={d="l"},
+ [0x1115B]={d="l"},
+ [0x1115C]={d="l"},
+ [0x1115D]={d="l"},
+ [0x1115E]={d="l"},
+ [0x1115F]={d="l"},
+ [0x11160]={d="l"},
+ [0x11161]={d="l"},
+ [0x11162]={d="l"},
+ [0x11163]={d="l"},
+ [0x11164]={d="l"},
+ [0x11165]={d="l"},
+ [0x11166]={d="l"},
+ [0x11167]={d="l"},
+ [0x11168]={d="l"},
+ [0x11169]={d="l"},
+ [0x1116A]={d="l"},
+ [0x1116B]={d="l"},
+ [0x1116C]={d="l"},
+ [0x1116D]={d="l"},
+ [0x1116E]={d="l"},
+ [0x1116F]={d="l"},
+ [0x11170]={d="l"},
+ [0x11171]={d="l"},
+ [0x11172]={d="l"},
+ [0x11173]={d="nsm"},
+ [0x11174]={d="l"},
+ [0x11175]={d="l"},
+ [0x11176]={d="l"},
+ [0x11180]={d="nsm"},
+ [0x11181]={d="nsm"},
+ [0x11182]={d="l"},
+ [0x11183]={d="l"},
+ [0x11184]={d="l"},
+ [0x11185]={d="l"},
+ [0x11186]={d="l"},
+ [0x11187]={d="l"},
+ [0x11188]={d="l"},
+ [0x11189]={d="l"},
+ [0x1118A]={d="l"},
+ [0x1118B]={d="l"},
+ [0x1118C]={d="l"},
+ [0x1118D]={d="l"},
+ [0x1118E]={d="l"},
+ [0x1118F]={d="l"},
+ [0x11190]={d="l"},
+ [0x11191]={d="l"},
+ [0x11192]={d="l"},
+ [0x11193]={d="l"},
+ [0x11194]={d="l"},
+ [0x11195]={d="l"},
+ [0x11196]={d="l"},
+ [0x11197]={d="l"},
+ [0x11198]={d="l"},
+ [0x11199]={d="l"},
+ [0x1119A]={d="l"},
+ [0x1119B]={d="l"},
+ [0x1119C]={d="l"},
+ [0x1119D]={d="l"},
+ [0x1119E]={d="l"},
+ [0x1119F]={d="l"},
+ [0x111A0]={d="l"},
+ [0x111A1]={d="l"},
+ [0x111A2]={d="l"},
+ [0x111A3]={d="l"},
+ [0x111A4]={d="l"},
+ [0x111A5]={d="l"},
+ [0x111A6]={d="l"},
+ [0x111A7]={d="l"},
+ [0x111A8]={d="l"},
+ [0x111A9]={d="l"},
+ [0x111AA]={d="l"},
+ [0x111AB]={d="l"},
+ [0x111AC]={d="l"},
+ [0x111AD]={d="l"},
+ [0x111AE]={d="l"},
+ [0x111AF]={d="l"},
+ [0x111B0]={d="l"},
+ [0x111B1]={d="l"},
+ [0x111B2]={d="l"},
+ [0x111B3]={d="l"},
+ [0x111B4]={d="l"},
+ [0x111B5]={d="l"},
+ [0x111B6]={d="nsm"},
+ [0x111B7]={d="nsm"},
+ [0x111B8]={d="nsm"},
+ [0x111B9]={d="nsm"},
+ [0x111BA]={d="nsm"},
+ [0x111BB]={d="nsm"},
+ [0x111BC]={d="nsm"},
+ [0x111BD]={d="nsm"},
+ [0x111BE]={d="nsm"},
+ [0x111BF]={d="l"},
+ [0x111C0]={d="l"},
+ [0x111C1]={d="l"},
+ [0x111C2]={d="l"},
+ [0x111C3]={d="l"},
+ [0x111C4]={d="l"},
+ [0x111C5]={d="l"},
+ [0x111C6]={d="l"},
+ [0x111C7]={d="l"},
+ [0x111C8]={d="l"},
+ [0x111C9]={d="nsm"},
+ [0x111CA]={d="nsm"},
+ [0x111CB]={d="nsm"},
+ [0x111CC]={d="nsm"},
+ [0x111CD]={d="l"},
+ [0x111CE]={d="l"},
+ [0x111CF]={d="nsm"},
+ [0x111D0]={d="l"},
+ [0x111D1]={d="l"},
+ [0x111D2]={d="l"},
+ [0x111D3]={d="l"},
+ [0x111D4]={d="l"},
+ [0x111D5]={d="l"},
+ [0x111D6]={d="l"},
+ [0x111D7]={d="l"},
+ [0x111D8]={d="l"},
+ [0x111D9]={d="l"},
+ [0x111DA]={d="l"},
+ [0x111DB]={d="l"},
+ [0x111DC]={d="l"},
+ [0x111DD]={d="l"},
+ [0x111DE]={d="l"},
+ [0x111DF]={d="l"},
+ [0x111E1]={d="l"},
+ [0x111E2]={d="l"},
+ [0x111E3]={d="l"},
+ [0x111E4]={d="l"},
+ [0x111E5]={d="l"},
+ [0x111E6]={d="l"},
+ [0x111E7]={d="l"},
+ [0x111E8]={d="l"},
+ [0x111E9]={d="l"},
+ [0x111EA]={d="l"},
+ [0x111EB]={d="l"},
+ [0x111EC]={d="l"},
+ [0x111ED]={d="l"},
+ [0x111EE]={d="l"},
+ [0x111EF]={d="l"},
+ [0x111F0]={d="l"},
+ [0x111F1]={d="l"},
+ [0x111F2]={d="l"},
+ [0x111F3]={d="l"},
+ [0x111F4]={d="l"},
+ [0x11200]={d="l"},
+ [0x11201]={d="l"},
+ [0x11202]={d="l"},
+ [0x11203]={d="l"},
+ [0x11204]={d="l"},
+ [0x11205]={d="l"},
+ [0x11206]={d="l"},
+ [0x11207]={d="l"},
+ [0x11208]={d="l"},
+ [0x11209]={d="l"},
+ [0x1120A]={d="l"},
+ [0x1120B]={d="l"},
+ [0x1120C]={d="l"},
+ [0x1120D]={d="l"},
+ [0x1120E]={d="l"},
+ [0x1120F]={d="l"},
+ [0x11210]={d="l"},
+ [0x11211]={d="l"},
+ [0x11213]={d="l"},
+ [0x11214]={d="l"},
+ [0x11215]={d="l"},
+ [0x11216]={d="l"},
+ [0x11217]={d="l"},
+ [0x11218]={d="l"},
+ [0x11219]={d="l"},
+ [0x1121A]={d="l"},
+ [0x1121B]={d="l"},
+ [0x1121C]={d="l"},
+ [0x1121D]={d="l"},
+ [0x1121E]={d="l"},
+ [0x1121F]={d="l"},
+ [0x11220]={d="l"},
+ [0x11221]={d="l"},
+ [0x11222]={d="l"},
+ [0x11223]={d="l"},
+ [0x11224]={d="l"},
+ [0x11225]={d="l"},
+ [0x11226]={d="l"},
+ [0x11227]={d="l"},
+ [0x11228]={d="l"},
+ [0x11229]={d="l"},
+ [0x1122A]={d="l"},
+ [0x1122B]={d="l"},
+ [0x1122C]={d="l"},
+ [0x1122D]={d="l"},
+ [0x1122E]={d="l"},
+ [0x1122F]={d="nsm"},
+ [0x11230]={d="nsm"},
+ [0x11231]={d="nsm"},
+ [0x11232]={d="l"},
+ [0x11233]={d="l"},
+ [0x11234]={d="nsm"},
+ [0x11235]={d="l"},
+ [0x11236]={d="nsm"},
+ [0x11237]={d="nsm"},
+ [0x11238]={d="l"},
+ [0x11239]={d="l"},
+ [0x1123A]={d="l"},
+ [0x1123B]={d="l"},
+ [0x1123C]={d="l"},
+ [0x1123D]={d="l"},
+ [0x1123E]={d="nsm"},
+ [0x1123F]={d="l"},
+ [0x11240]={d="l"},
+ [0x11241]={d="nsm"},
+ [0x11280]={d="l"},
+ [0x11281]={d="l"},
+ [0x11282]={d="l"},
+ [0x11283]={d="l"},
+ [0x11284]={d="l"},
+ [0x11285]={d="l"},
+ [0x11286]={d="l"},
+ [0x11288]={d="l"},
+ [0x1128A]={d="l"},
+ [0x1128B]={d="l"},
+ [0x1128C]={d="l"},
+ [0x1128D]={d="l"},
+ [0x1128F]={d="l"},
+ [0x11290]={d="l"},
+ [0x11291]={d="l"},
+ [0x11292]={d="l"},
+ [0x11293]={d="l"},
+ [0x11294]={d="l"},
+ [0x11295]={d="l"},
+ [0x11296]={d="l"},
+ [0x11297]={d="l"},
+ [0x11298]={d="l"},
+ [0x11299]={d="l"},
+ [0x1129A]={d="l"},
+ [0x1129B]={d="l"},
+ [0x1129C]={d="l"},
+ [0x1129D]={d="l"},
+ [0x1129F]={d="l"},
+ [0x112A0]={d="l"},
+ [0x112A1]={d="l"},
+ [0x112A2]={d="l"},
+ [0x112A3]={d="l"},
+ [0x112A4]={d="l"},
+ [0x112A5]={d="l"},
+ [0x112A6]={d="l"},
+ [0x112A7]={d="l"},
+ [0x112A8]={d="l"},
+ [0x112A9]={d="l"},
+ [0x112B0]={d="l"},
+ [0x112B1]={d="l"},
+ [0x112B2]={d="l"},
+ [0x112B3]={d="l"},
+ [0x112B4]={d="l"},
+ [0x112B5]={d="l"},
+ [0x112B6]={d="l"},
+ [0x112B7]={d="l"},
+ [0x112B8]={d="l"},
+ [0x112B9]={d="l"},
+ [0x112BA]={d="l"},
+ [0x112BB]={d="l"},
+ [0x112BC]={d="l"},
+ [0x112BD]={d="l"},
+ [0x112BE]={d="l"},
+ [0x112BF]={d="l"},
+ [0x112C0]={d="l"},
+ [0x112C1]={d="l"},
+ [0x112C2]={d="l"},
+ [0x112C3]={d="l"},
+ [0x112C4]={d="l"},
+ [0x112C5]={d="l"},
+ [0x112C6]={d="l"},
+ [0x112C7]={d="l"},
+ [0x112C8]={d="l"},
+ [0x112C9]={d="l"},
+ [0x112CA]={d="l"},
+ [0x112CB]={d="l"},
+ [0x112CC]={d="l"},
+ [0x112CD]={d="l"},
+ [0x112CE]={d="l"},
+ [0x112CF]={d="l"},
+ [0x112D0]={d="l"},
+ [0x112D1]={d="l"},
+ [0x112D2]={d="l"},
+ [0x112D3]={d="l"},
+ [0x112D4]={d="l"},
+ [0x112D5]={d="l"},
+ [0x112D6]={d="l"},
+ [0x112D7]={d="l"},
+ [0x112D8]={d="l"},
+ [0x112D9]={d="l"},
+ [0x112DA]={d="l"},
+ [0x112DB]={d="l"},
+ [0x112DC]={d="l"},
+ [0x112DD]={d="l"},
+ [0x112DE]={d="l"},
+ [0x112DF]={d="nsm"},
+ [0x112E0]={d="l"},
+ [0x112E1]={d="l"},
+ [0x112E2]={d="l"},
+ [0x112E3]={d="nsm"},
+ [0x112E4]={d="nsm"},
+ [0x112E5]={d="nsm"},
+ [0x112E6]={d="nsm"},
+ [0x112E7]={d="nsm"},
+ [0x112E8]={d="nsm"},
+ [0x112E9]={d="nsm"},
+ [0x112EA]={d="nsm"},
+ [0x112F0]={d="l"},
+ [0x112F1]={d="l"},
+ [0x112F2]={d="l"},
+ [0x112F3]={d="l"},
+ [0x112F4]={d="l"},
+ [0x112F5]={d="l"},
+ [0x112F6]={d="l"},
+ [0x112F7]={d="l"},
+ [0x112F8]={d="l"},
+ [0x112F9]={d="l"},
+ [0x11300]={d="nsm"},
+ [0x11301]={d="nsm"},
+ [0x11302]={d="l"},
+ [0x11303]={d="l"},
+ [0x11305]={d="l"},
+ [0x11306]={d="l"},
+ [0x11307]={d="l"},
+ [0x11308]={d="l"},
+ [0x11309]={d="l"},
+ [0x1130A]={d="l"},
+ [0x1130B]={d="l"},
+ [0x1130C]={d="l"},
+ [0x1130F]={d="l"},
+ [0x11310]={d="l"},
+ [0x11313]={d="l"},
+ [0x11314]={d="l"},
+ [0x11315]={d="l"},
+ [0x11316]={d="l"},
+ [0x11317]={d="l"},
+ [0x11318]={d="l"},
+ [0x11319]={d="l"},
+ [0x1131A]={d="l"},
+ [0x1131B]={d="l"},
+ [0x1131C]={d="l"},
+ [0x1131D]={d="l"},
+ [0x1131E]={d="l"},
+ [0x1131F]={d="l"},
+ [0x11320]={d="l"},
+ [0x11321]={d="l"},
+ [0x11322]={d="l"},
+ [0x11323]={d="l"},
+ [0x11324]={d="l"},
+ [0x11325]={d="l"},
+ [0x11326]={d="l"},
+ [0x11327]={d="l"},
+ [0x11328]={d="l"},
+ [0x1132A]={d="l"},
+ [0x1132B]={d="l"},
+ [0x1132C]={d="l"},
+ [0x1132D]={d="l"},
+ [0x1132E]={d="l"},
+ [0x1132F]={d="l"},
+ [0x11330]={d="l"},
+ [0x11332]={d="l"},
+ [0x11333]={d="l"},
+ [0x11335]={d="l"},
+ [0x11336]={d="l"},
+ [0x11337]={d="l"},
+ [0x11338]={d="l"},
+ [0x11339]={d="l"},
+ [0x1133B]={d="nsm"},
+ [0x1133C]={d="nsm"},
+ [0x1133D]={d="l"},
+ [0x1133E]={d="l"},
+ [0x1133F]={d="l"},
+ [0x11340]={d="nsm"},
+ [0x11341]={d="l"},
+ [0x11342]={d="l"},
+ [0x11343]={d="l"},
+ [0x11344]={d="l"},
+ [0x11347]={d="l"},
+ [0x11348]={d="l"},
+ [0x1134B]={d="l"},
+ [0x1134C]={d="l"},
+ [0x1134D]={d="l"},
+ [0x11350]={d="l"},
+ [0x11357]={d="l"},
+ [0x1135D]={d="l"},
+ [0x1135E]={d="l"},
+ [0x1135F]={d="l"},
+ [0x11360]={d="l"},
+ [0x11361]={d="l"},
+ [0x11362]={d="l"},
+ [0x11363]={d="l"},
+ [0x11366]={d="nsm"},
+ [0x11367]={d="nsm"},
+ [0x11368]={d="nsm"},
+ [0x11369]={d="nsm"},
+ [0x1136A]={d="nsm"},
+ [0x1136B]={d="nsm"},
+ [0x1136C]={d="nsm"},
+ [0x11370]={d="nsm"},
+ [0x11371]={d="nsm"},
+ [0x11372]={d="nsm"},
+ [0x11373]={d="nsm"},
+ [0x11374]={d="nsm"},
+ [0x11400]={d="l"},
+ [0x11401]={d="l"},
+ [0x11402]={d="l"},
+ [0x11403]={d="l"},
+ [0x11404]={d="l"},
+ [0x11405]={d="l"},
+ [0x11406]={d="l"},
+ [0x11407]={d="l"},
+ [0x11408]={d="l"},
+ [0x11409]={d="l"},
+ [0x1140A]={d="l"},
+ [0x1140B]={d="l"},
+ [0x1140C]={d="l"},
+ [0x1140D]={d="l"},
+ [0x1140E]={d="l"},
+ [0x1140F]={d="l"},
+ [0x11410]={d="l"},
+ [0x11411]={d="l"},
+ [0x11412]={d="l"},
+ [0x11413]={d="l"},
+ [0x11414]={d="l"},
+ [0x11415]={d="l"},
+ [0x11416]={d="l"},
+ [0x11417]={d="l"},
+ [0x11418]={d="l"},
+ [0x11419]={d="l"},
+ [0x1141A]={d="l"},
+ [0x1141B]={d="l"},
+ [0x1141C]={d="l"},
+ [0x1141D]={d="l"},
+ [0x1141E]={d="l"},
+ [0x1141F]={d="l"},
+ [0x11420]={d="l"},
+ [0x11421]={d="l"},
+ [0x11422]={d="l"},
+ [0x11423]={d="l"},
+ [0x11424]={d="l"},
+ [0x11425]={d="l"},
+ [0x11426]={d="l"},
+ [0x11427]={d="l"},
+ [0x11428]={d="l"},
+ [0x11429]={d="l"},
+ [0x1142A]={d="l"},
+ [0x1142B]={d="l"},
+ [0x1142C]={d="l"},
+ [0x1142D]={d="l"},
+ [0x1142E]={d="l"},
+ [0x1142F]={d="l"},
+ [0x11430]={d="l"},
+ [0x11431]={d="l"},
+ [0x11432]={d="l"},
+ [0x11433]={d="l"},
+ [0x11434]={d="l"},
+ [0x11435]={d="l"},
+ [0x11436]={d="l"},
+ [0x11437]={d="l"},
+ [0x11438]={d="nsm"},
+ [0x11439]={d="nsm"},
+ [0x1143A]={d="nsm"},
+ [0x1143B]={d="nsm"},
+ [0x1143C]={d="nsm"},
+ [0x1143D]={d="nsm"},
+ [0x1143E]={d="nsm"},
+ [0x1143F]={d="nsm"},
+ [0x11440]={d="l"},
+ [0x11441]={d="l"},
+ [0x11442]={d="nsm"},
+ [0x11443]={d="nsm"},
+ [0x11444]={d="nsm"},
+ [0x11445]={d="l"},
+ [0x11446]={d="nsm"},
+ [0x11447]={d="l"},
+ [0x11448]={d="l"},
+ [0x11449]={d="l"},
+ [0x1144A]={d="l"},
+ [0x1144B]={d="l"},
+ [0x1144C]={d="l"},
+ [0x1144D]={d="l"},
+ [0x1144E]={d="l"},
+ [0x1144F]={d="l"},
+ [0x11450]={d="l"},
+ [0x11451]={d="l"},
+ [0x11452]={d="l"},
+ [0x11453]={d="l"},
+ [0x11454]={d="l"},
+ [0x11455]={d="l"},
+ [0x11456]={d="l"},
+ [0x11457]={d="l"},
+ [0x11458]={d="l"},
+ [0x11459]={d="l"},
+ [0x1145A]={d="l"},
+ [0x1145B]={d="l"},
+ [0x1145D]={d="l"},
+ [0x1145E]={d="nsm"},
+ [0x1145F]={d="l"},
+ [0x11460]={d="l"},
+ [0x11461]={d="l"},
+ [0x11480]={d="l"},
+ [0x11481]={d="l"},
+ [0x11482]={d="l"},
+ [0x11483]={d="l"},
+ [0x11484]={d="l"},
+ [0x11485]={d="l"},
+ [0x11486]={d="l"},
+ [0x11487]={d="l"},
+ [0x11488]={d="l"},
+ [0x11489]={d="l"},
+ [0x1148A]={d="l"},
+ [0x1148B]={d="l"},
+ [0x1148C]={d="l"},
+ [0x1148D]={d="l"},
+ [0x1148E]={d="l"},
+ [0x1148F]={d="l"},
+ [0x11490]={d="l"},
+ [0x11491]={d="l"},
+ [0x11492]={d="l"},
+ [0x11493]={d="l"},
+ [0x11494]={d="l"},
+ [0x11495]={d="l"},
+ [0x11496]={d="l"},
+ [0x11497]={d="l"},
+ [0x11498]={d="l"},
+ [0x11499]={d="l"},
+ [0x1149A]={d="l"},
+ [0x1149B]={d="l"},
+ [0x1149C]={d="l"},
+ [0x1149D]={d="l"},
+ [0x1149E]={d="l"},
+ [0x1149F]={d="l"},
+ [0x114A0]={d="l"},
+ [0x114A1]={d="l"},
+ [0x114A2]={d="l"},
+ [0x114A3]={d="l"},
+ [0x114A4]={d="l"},
+ [0x114A5]={d="l"},
+ [0x114A6]={d="l"},
+ [0x114A7]={d="l"},
+ [0x114A8]={d="l"},
+ [0x114A9]={d="l"},
+ [0x114AA]={d="l"},
+ [0x114AB]={d="l"},
+ [0x114AC]={d="l"},
+ [0x114AD]={d="l"},
+ [0x114AE]={d="l"},
+ [0x114AF]={d="l"},
+ [0x114B0]={d="l"},
+ [0x114B1]={d="l"},
+ [0x114B2]={d="l"},
+ [0x114B3]={d="nsm"},
+ [0x114B4]={d="nsm"},
+ [0x114B5]={d="nsm"},
+ [0x114B6]={d="nsm"},
+ [0x114B7]={d="nsm"},
+ [0x114B8]={d="nsm"},
+ [0x114B9]={d="l"},
+ [0x114BA]={d="nsm"},
+ [0x114BB]={d="l"},
+ [0x114BC]={d="l"},
+ [0x114BD]={d="l"},
+ [0x114BE]={d="l"},
+ [0x114BF]={d="nsm"},
+ [0x114C0]={d="nsm"},
+ [0x114C1]={d="l"},
+ [0x114C2]={d="nsm"},
+ [0x114C3]={d="nsm"},
+ [0x114C4]={d="l"},
+ [0x114C5]={d="l"},
+ [0x114C6]={d="l"},
+ [0x114C7]={d="l"},
+ [0x114D0]={d="l"},
+ [0x114D1]={d="l"},
+ [0x114D2]={d="l"},
+ [0x114D3]={d="l"},
+ [0x114D4]={d="l"},
+ [0x114D5]={d="l"},
+ [0x114D6]={d="l"},
+ [0x114D7]={d="l"},
+ [0x114D8]={d="l"},
+ [0x114D9]={d="l"},
+ [0x11580]={d="l"},
+ [0x11581]={d="l"},
+ [0x11582]={d="l"},
+ [0x11583]={d="l"},
+ [0x11584]={d="l"},
+ [0x11585]={d="l"},
+ [0x11586]={d="l"},
+ [0x11587]={d="l"},
+ [0x11588]={d="l"},
+ [0x11589]={d="l"},
+ [0x1158A]={d="l"},
+ [0x1158B]={d="l"},
+ [0x1158C]={d="l"},
+ [0x1158D]={d="l"},
+ [0x1158E]={d="l"},
+ [0x1158F]={d="l"},
+ [0x11590]={d="l"},
+ [0x11591]={d="l"},
+ [0x11592]={d="l"},
+ [0x11593]={d="l"},
+ [0x11594]={d="l"},
+ [0x11595]={d="l"},
+ [0x11596]={d="l"},
+ [0x11597]={d="l"},
+ [0x11598]={d="l"},
+ [0x11599]={d="l"},
+ [0x1159A]={d="l"},
+ [0x1159B]={d="l"},
+ [0x1159C]={d="l"},
+ [0x1159D]={d="l"},
+ [0x1159E]={d="l"},
+ [0x1159F]={d="l"},
+ [0x115A0]={d="l"},
+ [0x115A1]={d="l"},
+ [0x115A2]={d="l"},
+ [0x115A3]={d="l"},
+ [0x115A4]={d="l"},
+ [0x115A5]={d="l"},
+ [0x115A6]={d="l"},
+ [0x115A7]={d="l"},
+ [0x115A8]={d="l"},
+ [0x115A9]={d="l"},
+ [0x115AA]={d="l"},
+ [0x115AB]={d="l"},
+ [0x115AC]={d="l"},
+ [0x115AD]={d="l"},
+ [0x115AE]={d="l"},
+ [0x115AF]={d="l"},
+ [0x115B0]={d="l"},
+ [0x115B1]={d="l"},
+ [0x115B2]={d="nsm"},
+ [0x115B3]={d="nsm"},
+ [0x115B4]={d="nsm"},
+ [0x115B5]={d="nsm"},
+ [0x115B8]={d="l"},
+ [0x115B9]={d="l"},
+ [0x115BA]={d="l"},
+ [0x115BB]={d="l"},
+ [0x115BC]={d="nsm"},
+ [0x115BD]={d="nsm"},
+ [0x115BE]={d="l"},
+ [0x115BF]={d="nsm"},
+ [0x115C0]={d="nsm"},
+ [0x115C1]={d="l"},
+ [0x115C2]={d="l"},
+ [0x115C3]={d="l"},
+ [0x115C4]={d="l"},
+ [0x115C5]={d="l"},
+ [0x115C6]={d="l"},
+ [0x115C7]={d="l"},
+ [0x115C8]={d="l"},
+ [0x115C9]={d="l"},
+ [0x115CA]={d="l"},
+ [0x115CB]={d="l"},
+ [0x115CC]={d="l"},
+ [0x115CD]={d="l"},
+ [0x115CE]={d="l"},
+ [0x115CF]={d="l"},
+ [0x115D0]={d="l"},
+ [0x115D1]={d="l"},
+ [0x115D2]={d="l"},
+ [0x115D3]={d="l"},
+ [0x115D4]={d="l"},
+ [0x115D5]={d="l"},
+ [0x115D6]={d="l"},
+ [0x115D7]={d="l"},
+ [0x115D8]={d="l"},
+ [0x115D9]={d="l"},
+ [0x115DA]={d="l"},
+ [0x115DB]={d="l"},
+ [0x115DC]={d="nsm"},
+ [0x115DD]={d="nsm"},
+ [0x11600]={d="l"},
+ [0x11601]={d="l"},
+ [0x11602]={d="l"},
+ [0x11603]={d="l"},
+ [0x11604]={d="l"},
+ [0x11605]={d="l"},
+ [0x11606]={d="l"},
+ [0x11607]={d="l"},
+ [0x11608]={d="l"},
+ [0x11609]={d="l"},
+ [0x1160A]={d="l"},
+ [0x1160B]={d="l"},
+ [0x1160C]={d="l"},
+ [0x1160D]={d="l"},
+ [0x1160E]={d="l"},
+ [0x1160F]={d="l"},
+ [0x11610]={d="l"},
+ [0x11611]={d="l"},
+ [0x11612]={d="l"},
+ [0x11613]={d="l"},
+ [0x11614]={d="l"},
+ [0x11615]={d="l"},
+ [0x11616]={d="l"},
+ [0x11617]={d="l"},
+ [0x11618]={d="l"},
+ [0x11619]={d="l"},
+ [0x1161A]={d="l"},
+ [0x1161B]={d="l"},
+ [0x1161C]={d="l"},
+ [0x1161D]={d="l"},
+ [0x1161E]={d="l"},
+ [0x1161F]={d="l"},
+ [0x11620]={d="l"},
+ [0x11621]={d="l"},
+ [0x11622]={d="l"},
+ [0x11623]={d="l"},
+ [0x11624]={d="l"},
+ [0x11625]={d="l"},
+ [0x11626]={d="l"},
+ [0x11627]={d="l"},
+ [0x11628]={d="l"},
+ [0x11629]={d="l"},
+ [0x1162A]={d="l"},
+ [0x1162B]={d="l"},
+ [0x1162C]={d="l"},
+ [0x1162D]={d="l"},
+ [0x1162E]={d="l"},
+ [0x1162F]={d="l"},
+ [0x11630]={d="l"},
+ [0x11631]={d="l"},
+ [0x11632]={d="l"},
+ [0x11633]={d="nsm"},
+ [0x11634]={d="nsm"},
+ [0x11635]={d="nsm"},
+ [0x11636]={d="nsm"},
+ [0x11637]={d="nsm"},
+ [0x11638]={d="nsm"},
+ [0x11639]={d="nsm"},
+ [0x1163A]={d="nsm"},
+ [0x1163B]={d="l"},
+ [0x1163C]={d="l"},
+ [0x1163D]={d="nsm"},
+ [0x1163E]={d="l"},
+ [0x1163F]={d="nsm"},
+ [0x11640]={d="nsm"},
+ [0x11641]={d="l"},
+ [0x11642]={d="l"},
+ [0x11643]={d="l"},
+ [0x11644]={d="l"},
+ [0x11650]={d="l"},
+ [0x11651]={d="l"},
+ [0x11652]={d="l"},
+ [0x11653]={d="l"},
+ [0x11654]={d="l"},
+ [0x11655]={d="l"},
+ [0x11656]={d="l"},
+ [0x11657]={d="l"},
+ [0x11658]={d="l"},
+ [0x11659]={d="l"},
+ [0x11660]={d="on"},
+ [0x11661]={d="on"},
+ [0x11662]={d="on"},
+ [0x11663]={d="on"},
+ [0x11664]={d="on"},
+ [0x11665]={d="on"},
+ [0x11666]={d="on"},
+ [0x11667]={d="on"},
+ [0x11668]={d="on"},
+ [0x11669]={d="on"},
+ [0x1166A]={d="on"},
+ [0x1166B]={d="on"},
+ [0x1166C]={d="on"},
+ [0x11680]={d="l"},
+ [0x11681]={d="l"},
+ [0x11682]={d="l"},
+ [0x11683]={d="l"},
+ [0x11684]={d="l"},
+ [0x11685]={d="l"},
+ [0x11686]={d="l"},
+ [0x11687]={d="l"},
+ [0x11688]={d="l"},
+ [0x11689]={d="l"},
+ [0x1168A]={d="l"},
+ [0x1168B]={d="l"},
+ [0x1168C]={d="l"},
+ [0x1168D]={d="l"},
+ [0x1168E]={d="l"},
+ [0x1168F]={d="l"},
+ [0x11690]={d="l"},
+ [0x11691]={d="l"},
+ [0x11692]={d="l"},
+ [0x11693]={d="l"},
+ [0x11694]={d="l"},
+ [0x11695]={d="l"},
+ [0x11696]={d="l"},
+ [0x11697]={d="l"},
+ [0x11698]={d="l"},
+ [0x11699]={d="l"},
+ [0x1169A]={d="l"},
+ [0x1169B]={d="l"},
+ [0x1169C]={d="l"},
+ [0x1169D]={d="l"},
+ [0x1169E]={d="l"},
+ [0x1169F]={d="l"},
+ [0x116A0]={d="l"},
+ [0x116A1]={d="l"},
+ [0x116A2]={d="l"},
+ [0x116A3]={d="l"},
+ [0x116A4]={d="l"},
+ [0x116A5]={d="l"},
+ [0x116A6]={d="l"},
+ [0x116A7]={d="l"},
+ [0x116A8]={d="l"},
+ [0x116A9]={d="l"},
+ [0x116AA]={d="l"},
+ [0x116AB]={d="nsm"},
+ [0x116AC]={d="l"},
+ [0x116AD]={d="nsm"},
+ [0x116AE]={d="l"},
+ [0x116AF]={d="l"},
+ [0x116B0]={d="nsm"},
+ [0x116B1]={d="nsm"},
+ [0x116B2]={d="nsm"},
+ [0x116B3]={d="nsm"},
+ [0x116B4]={d="nsm"},
+ [0x116B5]={d="nsm"},
+ [0x116B6]={d="l"},
+ [0x116B7]={d="nsm"},
+ [0x116B8]={d="l"},
+ [0x116B9]={d="l"},
+ [0x116C0]={d="l"},
+ [0x116C1]={d="l"},
+ [0x116C2]={d="l"},
+ [0x116C3]={d="l"},
+ [0x116C4]={d="l"},
+ [0x116C5]={d="l"},
+ [0x116C6]={d="l"},
+ [0x116C7]={d="l"},
+ [0x116C8]={d="l"},
+ [0x116C9]={d="l"},
+ [0x11700]={d="l"},
+ [0x11701]={d="l"},
+ [0x11702]={d="l"},
+ [0x11703]={d="l"},
+ [0x11704]={d="l"},
+ [0x11705]={d="l"},
+ [0x11706]={d="l"},
+ [0x11707]={d="l"},
+ [0x11708]={d="l"},
+ [0x11709]={d="l"},
+ [0x1170A]={d="l"},
+ [0x1170B]={d="l"},
+ [0x1170C]={d="l"},
+ [0x1170D]={d="l"},
+ [0x1170E]={d="l"},
+ [0x1170F]={d="l"},
+ [0x11710]={d="l"},
+ [0x11711]={d="l"},
+ [0x11712]={d="l"},
+ [0x11713]={d="l"},
+ [0x11714]={d="l"},
+ [0x11715]={d="l"},
+ [0x11716]={d="l"},
+ [0x11717]={d="l"},
+ [0x11718]={d="l"},
+ [0x11719]={d="l"},
+ [0x1171A]={d="l"},
+ [0x1171D]={d="nsm"},
+ [0x1171E]={d="nsm"},
+ [0x1171F]={d="nsm"},
+ [0x11720]={d="l"},
+ [0x11721]={d="l"},
+ [0x11722]={d="nsm"},
+ [0x11723]={d="nsm"},
+ [0x11724]={d="nsm"},
+ [0x11725]={d="nsm"},
+ [0x11726]={d="l"},
+ [0x11727]={d="nsm"},
+ [0x11728]={d="nsm"},
+ [0x11729]={d="nsm"},
+ [0x1172A]={d="nsm"},
+ [0x1172B]={d="nsm"},
+ [0x11730]={d="l"},
+ [0x11731]={d="l"},
+ [0x11732]={d="l"},
+ [0x11733]={d="l"},
+ [0x11734]={d="l"},
+ [0x11735]={d="l"},
+ [0x11736]={d="l"},
+ [0x11737]={d="l"},
+ [0x11738]={d="l"},
+ [0x11739]={d="l"},
+ [0x1173A]={d="l"},
+ [0x1173B]={d="l"},
+ [0x1173C]={d="l"},
+ [0x1173D]={d="l"},
+ [0x1173E]={d="l"},
+ [0x1173F]={d="l"},
+ [0x11740]={d="l"},
+ [0x11741]={d="l"},
+ [0x11742]={d="l"},
+ [0x11743]={d="l"},
+ [0x11744]={d="l"},
+ [0x11745]={d="l"},
+ [0x11746]={d="l"},
+ [0x11800]={d="l"},
+ [0x11801]={d="l"},
+ [0x11802]={d="l"},
+ [0x11803]={d="l"},
+ [0x11804]={d="l"},
+ [0x11805]={d="l"},
+ [0x11806]={d="l"},
+ [0x11807]={d="l"},
+ [0x11808]={d="l"},
+ [0x11809]={d="l"},
+ [0x1180A]={d="l"},
+ [0x1180B]={d="l"},
+ [0x1180C]={d="l"},
+ [0x1180D]={d="l"},
+ [0x1180E]={d="l"},
+ [0x1180F]={d="l"},
+ [0x11810]={d="l"},
+ [0x11811]={d="l"},
+ [0x11812]={d="l"},
+ [0x11813]={d="l"},
+ [0x11814]={d="l"},
+ [0x11815]={d="l"},
+ [0x11816]={d="l"},
+ [0x11817]={d="l"},
+ [0x11818]={d="l"},
+ [0x11819]={d="l"},
+ [0x1181A]={d="l"},
+ [0x1181B]={d="l"},
+ [0x1181C]={d="l"},
+ [0x1181D]={d="l"},
+ [0x1181E]={d="l"},
+ [0x1181F]={d="l"},
+ [0x11820]={d="l"},
+ [0x11821]={d="l"},
+ [0x11822]={d="l"},
+ [0x11823]={d="l"},
+ [0x11824]={d="l"},
+ [0x11825]={d="l"},
+ [0x11826]={d="l"},
+ [0x11827]={d="l"},
+ [0x11828]={d="l"},
+ [0x11829]={d="l"},
+ [0x1182A]={d="l"},
+ [0x1182B]={d="l"},
+ [0x1182C]={d="l"},
+ [0x1182D]={d="l"},
+ [0x1182E]={d="l"},
+ [0x1182F]={d="nsm"},
+ [0x11830]={d="nsm"},
+ [0x11831]={d="nsm"},
+ [0x11832]={d="nsm"},
+ [0x11833]={d="nsm"},
+ [0x11834]={d="nsm"},
+ [0x11835]={d="nsm"},
+ [0x11836]={d="nsm"},
+ [0x11837]={d="nsm"},
+ [0x11838]={d="l"},
+ [0x11839]={d="nsm"},
+ [0x1183A]={d="nsm"},
+ [0x1183B]={d="l"},
+ [0x118A0]={d="l"},
+ [0x118A1]={d="l"},
+ [0x118A2]={d="l"},
+ [0x118A3]={d="l"},
+ [0x118A4]={d="l"},
+ [0x118A5]={d="l"},
+ [0x118A6]={d="l"},
+ [0x118A7]={d="l"},
+ [0x118A8]={d="l"},
+ [0x118A9]={d="l"},
+ [0x118AA]={d="l"},
+ [0x118AB]={d="l"},
+ [0x118AC]={d="l"},
+ [0x118AD]={d="l"},
+ [0x118AE]={d="l"},
+ [0x118AF]={d="l"},
+ [0x118B0]={d="l"},
+ [0x118B1]={d="l"},
+ [0x118B2]={d="l"},
+ [0x118B3]={d="l"},
+ [0x118B4]={d="l"},
+ [0x118B5]={d="l"},
+ [0x118B6]={d="l"},
+ [0x118B7]={d="l"},
+ [0x118B8]={d="l"},
+ [0x118B9]={d="l"},
+ [0x118BA]={d="l"},
+ [0x118BB]={d="l"},
+ [0x118BC]={d="l"},
+ [0x118BD]={d="l"},
+ [0x118BE]={d="l"},
+ [0x118BF]={d="l"},
+ [0x118C0]={d="l"},
+ [0x118C1]={d="l"},
+ [0x118C2]={d="l"},
+ [0x118C3]={d="l"},
+ [0x118C4]={d="l"},
+ [0x118C5]={d="l"},
+ [0x118C6]={d="l"},
+ [0x118C7]={d="l"},
+ [0x118C8]={d="l"},
+ [0x118C9]={d="l"},
+ [0x118CA]={d="l"},
+ [0x118CB]={d="l"},
+ [0x118CC]={d="l"},
+ [0x118CD]={d="l"},
+ [0x118CE]={d="l"},
+ [0x118CF]={d="l"},
+ [0x118D0]={d="l"},
+ [0x118D1]={d="l"},
+ [0x118D2]={d="l"},
+ [0x118D3]={d="l"},
+ [0x118D4]={d="l"},
+ [0x118D5]={d="l"},
+ [0x118D6]={d="l"},
+ [0x118D7]={d="l"},
+ [0x118D8]={d="l"},
+ [0x118D9]={d="l"},
+ [0x118DA]={d="l"},
+ [0x118DB]={d="l"},
+ [0x118DC]={d="l"},
+ [0x118DD]={d="l"},
+ [0x118DE]={d="l"},
+ [0x118DF]={d="l"},
+ [0x118E0]={d="l"},
+ [0x118E1]={d="l"},
+ [0x118E2]={d="l"},
+ [0x118E3]={d="l"},
+ [0x118E4]={d="l"},
+ [0x118E5]={d="l"},
+ [0x118E6]={d="l"},
+ [0x118E7]={d="l"},
+ [0x118E8]={d="l"},
+ [0x118E9]={d="l"},
+ [0x118EA]={d="l"},
+ [0x118EB]={d="l"},
+ [0x118EC]={d="l"},
+ [0x118ED]={d="l"},
+ [0x118EE]={d="l"},
+ [0x118EF]={d="l"},
+ [0x118F0]={d="l"},
+ [0x118F1]={d="l"},
+ [0x118F2]={d="l"},
+ [0x118FF]={d="l"},
+ [0x11900]={d="l"},
+ [0x11901]={d="l"},
+ [0x11902]={d="l"},
+ [0x11903]={d="l"},
+ [0x11904]={d="l"},
+ [0x11905]={d="l"},
+ [0x11906]={d="l"},
+ [0x11909]={d="l"},
+ [0x1190C]={d="l"},
+ [0x1190D]={d="l"},
+ [0x1190E]={d="l"},
+ [0x1190F]={d="l"},
+ [0x11910]={d="l"},
+ [0x11911]={d="l"},
+ [0x11912]={d="l"},
+ [0x11913]={d="l"},
+ [0x11915]={d="l"},
+ [0x11916]={d="l"},
+ [0x11918]={d="l"},
+ [0x11919]={d="l"},
+ [0x1191A]={d="l"},
+ [0x1191B]={d="l"},
+ [0x1191C]={d="l"},
+ [0x1191D]={d="l"},
+ [0x1191E]={d="l"},
+ [0x1191F]={d="l"},
+ [0x11920]={d="l"},
+ [0x11921]={d="l"},
+ [0x11922]={d="l"},
+ [0x11923]={d="l"},
+ [0x11924]={d="l"},
+ [0x11925]={d="l"},
+ [0x11926]={d="l"},
+ [0x11927]={d="l"},
+ [0x11928]={d="l"},
+ [0x11929]={d="l"},
+ [0x1192A]={d="l"},
+ [0x1192B]={d="l"},
+ [0x1192C]={d="l"},
+ [0x1192D]={d="l"},
+ [0x1192E]={d="l"},
+ [0x1192F]={d="l"},
+ [0x11930]={d="l"},
+ [0x11931]={d="l"},
+ [0x11932]={d="l"},
+ [0x11933]={d="l"},
+ [0x11934]={d="l"},
+ [0x11935]={d="l"},
+ [0x11937]={d="l"},
+ [0x11938]={d="l"},
+ [0x1193B]={d="nsm"},
+ [0x1193C]={d="nsm"},
+ [0x1193D]={d="l"},
+ [0x1193E]={d="nsm"},
+ [0x1193F]={d="l"},
+ [0x11940]={d="l"},
+ [0x11941]={d="l"},
+ [0x11942]={d="l"},
+ [0x11943]={d="nsm"},
+ [0x11944]={d="l"},
+ [0x11945]={d="l"},
+ [0x11946]={d="l"},
+ [0x11950]={d="l"},
+ [0x11951]={d="l"},
+ [0x11952]={d="l"},
+ [0x11953]={d="l"},
+ [0x11954]={d="l"},
+ [0x11955]={d="l"},
+ [0x11956]={d="l"},
+ [0x11957]={d="l"},
+ [0x11958]={d="l"},
+ [0x11959]={d="l"},
+ [0x119A0]={d="l"},
+ [0x119A1]={d="l"},
+ [0x119A2]={d="l"},
+ [0x119A3]={d="l"},
+ [0x119A4]={d="l"},
+ [0x119A5]={d="l"},
+ [0x119A6]={d="l"},
+ [0x119A7]={d="l"},
+ [0x119AA]={d="l"},
+ [0x119AB]={d="l"},
+ [0x119AC]={d="l"},
+ [0x119AD]={d="l"},
+ [0x119AE]={d="l"},
+ [0x119AF]={d="l"},
+ [0x119B0]={d="l"},
+ [0x119B1]={d="l"},
+ [0x119B2]={d="l"},
+ [0x119B3]={d="l"},
+ [0x119B4]={d="l"},
+ [0x119B5]={d="l"},
+ [0x119B6]={d="l"},
+ [0x119B7]={d="l"},
+ [0x119B8]={d="l"},
+ [0x119B9]={d="l"},
+ [0x119BA]={d="l"},
+ [0x119BB]={d="l"},
+ [0x119BC]={d="l"},
+ [0x119BD]={d="l"},
+ [0x119BE]={d="l"},
+ [0x119BF]={d="l"},
+ [0x119C0]={d="l"},
+ [0x119C1]={d="l"},
+ [0x119C2]={d="l"},
+ [0x119C3]={d="l"},
+ [0x119C4]={d="l"},
+ [0x119C5]={d="l"},
+ [0x119C6]={d="l"},
+ [0x119C7]={d="l"},
+ [0x119C8]={d="l"},
+ [0x119C9]={d="l"},
+ [0x119CA]={d="l"},
+ [0x119CB]={d="l"},
+ [0x119CC]={d="l"},
+ [0x119CD]={d="l"},
+ [0x119CE]={d="l"},
+ [0x119CF]={d="l"},
+ [0x119D0]={d="l"},
+ [0x119D1]={d="l"},
+ [0x119D2]={d="l"},
+ [0x119D3]={d="l"},
+ [0x119D4]={d="nsm"},
+ [0x119D5]={d="nsm"},
+ [0x119D6]={d="nsm"},
+ [0x119D7]={d="nsm"},
+ [0x119DA]={d="nsm"},
+ [0x119DB]={d="nsm"},
+ [0x119DC]={d="l"},
+ [0x119DD]={d="l"},
+ [0x119DE]={d="l"},
+ [0x119DF]={d="l"},
+ [0x119E0]={d="nsm"},
+ [0x119E1]={d="l"},
+ [0x119E2]={d="l"},
+ [0x119E3]={d="l"},
+ [0x119E4]={d="l"},
+ [0x11A00]={d="l"},
+ [0x11A01]={d="nsm"},
+ [0x11A02]={d="nsm"},
+ [0x11A03]={d="nsm"},
+ [0x11A04]={d="nsm"},
+ [0x11A05]={d="nsm"},
+ [0x11A06]={d="nsm"},
+ [0x11A07]={d="l"},
+ [0x11A08]={d="l"},
+ [0x11A09]={d="nsm"},
+ [0x11A0A]={d="nsm"},
+ [0x11A0B]={d="l"},
+ [0x11A0C]={d="l"},
+ [0x11A0D]={d="l"},
+ [0x11A0E]={d="l"},
+ [0x11A0F]={d="l"},
+ [0x11A10]={d="l"},
+ [0x11A11]={d="l"},
+ [0x11A12]={d="l"},
+ [0x11A13]={d="l"},
+ [0x11A14]={d="l"},
+ [0x11A15]={d="l"},
+ [0x11A16]={d="l"},
+ [0x11A17]={d="l"},
+ [0x11A18]={d="l"},
+ [0x11A19]={d="l"},
+ [0x11A1A]={d="l"},
+ [0x11A1B]={d="l"},
+ [0x11A1C]={d="l"},
+ [0x11A1D]={d="l"},
+ [0x11A1E]={d="l"},
+ [0x11A1F]={d="l"},
+ [0x11A20]={d="l"},
+ [0x11A21]={d="l"},
+ [0x11A22]={d="l"},
+ [0x11A23]={d="l"},
+ [0x11A24]={d="l"},
+ [0x11A25]={d="l"},
+ [0x11A26]={d="l"},
+ [0x11A27]={d="l"},
+ [0x11A28]={d="l"},
+ [0x11A29]={d="l"},
+ [0x11A2A]={d="l"},
+ [0x11A2B]={d="l"},
+ [0x11A2C]={d="l"},
+ [0x11A2D]={d="l"},
+ [0x11A2E]={d="l"},
+ [0x11A2F]={d="l"},
+ [0x11A30]={d="l"},
+ [0x11A31]={d="l"},
+ [0x11A32]={d="l"},
+ [0x11A33]={d="nsm"},
+ [0x11A34]={d="nsm"},
+ [0x11A35]={d="nsm"},
+ [0x11A36]={d="nsm"},
+ [0x11A37]={d="nsm"},
+ [0x11A38]={d="nsm"},
+ [0x11A39]={d="l"},
+ [0x11A3A]={d="l"},
+ [0x11A3B]={d="nsm"},
+ [0x11A3C]={d="nsm"},
+ [0x11A3D]={d="nsm"},
+ [0x11A3E]={d="nsm"},
+ [0x11A3F]={d="l"},
+ [0x11A40]={d="l"},
+ [0x11A41]={d="l"},
+ [0x11A42]={d="l"},
+ [0x11A43]={d="l"},
+ [0x11A44]={d="l"},
+ [0x11A45]={d="l"},
+ [0x11A46]={d="l"},
+ [0x11A47]={d="nsm"},
+ [0x11A50]={d="l"},
+ [0x11A51]={d="nsm"},
+ [0x11A52]={d="nsm"},
+ [0x11A53]={d="nsm"},
+ [0x11A54]={d="nsm"},
+ [0x11A55]={d="nsm"},
+ [0x11A56]={d="nsm"},
+ [0x11A57]={d="l"},
+ [0x11A58]={d="l"},
+ [0x11A59]={d="nsm"},
+ [0x11A5A]={d="nsm"},
+ [0x11A5B]={d="nsm"},
+ [0x11A5C]={d="l"},
+ [0x11A5D]={d="l"},
+ [0x11A5E]={d="l"},
+ [0x11A5F]={d="l"},
+ [0x11A60]={d="l"},
+ [0x11A61]={d="l"},
+ [0x11A62]={d="l"},
+ [0x11A63]={d="l"},
+ [0x11A64]={d="l"},
+ [0x11A65]={d="l"},
+ [0x11A66]={d="l"},
+ [0x11A67]={d="l"},
+ [0x11A68]={d="l"},
+ [0x11A69]={d="l"},
+ [0x11A6A]={d="l"},
+ [0x11A6B]={d="l"},
+ [0x11A6C]={d="l"},
+ [0x11A6D]={d="l"},
+ [0x11A6E]={d="l"},
+ [0x11A6F]={d="l"},
+ [0x11A70]={d="l"},
+ [0x11A71]={d="l"},
+ [0x11A72]={d="l"},
+ [0x11A73]={d="l"},
+ [0x11A74]={d="l"},
+ [0x11A75]={d="l"},
+ [0x11A76]={d="l"},
+ [0x11A77]={d="l"},
+ [0x11A78]={d="l"},
+ [0x11A79]={d="l"},
+ [0x11A7A]={d="l"},
+ [0x11A7B]={d="l"},
+ [0x11A7C]={d="l"},
+ [0x11A7D]={d="l"},
+ [0x11A7E]={d="l"},
+ [0x11A7F]={d="l"},
+ [0x11A80]={d="l"},
+ [0x11A81]={d="l"},
+ [0x11A82]={d="l"},
+ [0x11A83]={d="l"},
+ [0x11A84]={d="l"},
+ [0x11A85]={d="l"},
+ [0x11A86]={d="l"},
+ [0x11A87]={d="l"},
+ [0x11A88]={d="l"},
+ [0x11A89]={d="l"},
+ [0x11A8A]={d="nsm"},
+ [0x11A8B]={d="nsm"},
+ [0x11A8C]={d="nsm"},
+ [0x11A8D]={d="nsm"},
+ [0x11A8E]={d="nsm"},
+ [0x11A8F]={d="nsm"},
+ [0x11A90]={d="nsm"},
+ [0x11A91]={d="nsm"},
+ [0x11A92]={d="nsm"},
+ [0x11A93]={d="nsm"},
+ [0x11A94]={d="nsm"},
+ [0x11A95]={d="nsm"},
+ [0x11A96]={d="nsm"},
+ [0x11A97]={d="l"},
+ [0x11A98]={d="nsm"},
+ [0x11A99]={d="nsm"},
+ [0x11A9A]={d="l"},
+ [0x11A9B]={d="l"},
+ [0x11A9C]={d="l"},
+ [0x11A9D]={d="l"},
+ [0x11A9E]={d="l"},
+ [0x11A9F]={d="l"},
+ [0x11AA0]={d="l"},
+ [0x11AA1]={d="l"},
+ [0x11AA2]={d="l"},
+ [0x11AB0]={d="l"},
+ [0x11AB1]={d="l"},
+ [0x11AB2]={d="l"},
+ [0x11AB3]={d="l"},
+ [0x11AB4]={d="l"},
+ [0x11AB5]={d="l"},
+ [0x11AB6]={d="l"},
+ [0x11AB7]={d="l"},
+ [0x11AB8]={d="l"},
+ [0x11AB9]={d="l"},
+ [0x11ABA]={d="l"},
+ [0x11ABB]={d="l"},
+ [0x11ABC]={d="l"},
+ [0x11ABD]={d="l"},
+ [0x11ABE]={d="l"},
+ [0x11ABF]={d="l"},
+ [0x11AC0]={d="l"},
+ [0x11AC1]={d="l"},
+ [0x11AC2]={d="l"},
+ [0x11AC3]={d="l"},
+ [0x11AC4]={d="l"},
+ [0x11AC5]={d="l"},
+ [0x11AC6]={d="l"},
+ [0x11AC7]={d="l"},
+ [0x11AC8]={d="l"},
+ [0x11AC9]={d="l"},
+ [0x11ACA]={d="l"},
+ [0x11ACB]={d="l"},
+ [0x11ACC]={d="l"},
+ [0x11ACD]={d="l"},
+ [0x11ACE]={d="l"},
+ [0x11ACF]={d="l"},
+ [0x11AD0]={d="l"},
+ [0x11AD1]={d="l"},
+ [0x11AD2]={d="l"},
+ [0x11AD3]={d="l"},
+ [0x11AD4]={d="l"},
+ [0x11AD5]={d="l"},
+ [0x11AD6]={d="l"},
+ [0x11AD7]={d="l"},
+ [0x11AD8]={d="l"},
+ [0x11AD9]={d="l"},
+ [0x11ADA]={d="l"},
+ [0x11ADB]={d="l"},
+ [0x11ADC]={d="l"},
+ [0x11ADD]={d="l"},
+ [0x11ADE]={d="l"},
+ [0x11ADF]={d="l"},
+ [0x11AE0]={d="l"},
+ [0x11AE1]={d="l"},
+ [0x11AE2]={d="l"},
+ [0x11AE3]={d="l"},
+ [0x11AE4]={d="l"},
+ [0x11AE5]={d="l"},
+ [0x11AE6]={d="l"},
+ [0x11AE7]={d="l"},
+ [0x11AE8]={d="l"},
+ [0x11AE9]={d="l"},
+ [0x11AEA]={d="l"},
+ [0x11AEB]={d="l"},
+ [0x11AEC]={d="l"},
+ [0x11AED]={d="l"},
+ [0x11AEE]={d="l"},
+ [0x11AEF]={d="l"},
+ [0x11AF0]={d="l"},
+ [0x11AF1]={d="l"},
+ [0x11AF2]={d="l"},
+ [0x11AF3]={d="l"},
+ [0x11AF4]={d="l"},
+ [0x11AF5]={d="l"},
+ [0x11AF6]={d="l"},
+ [0x11AF7]={d="l"},
+ [0x11AF8]={d="l"},
+ [0x11B00]={d="l"},
+ [0x11B01]={d="l"},
+ [0x11B02]={d="l"},
+ [0x11B03]={d="l"},
+ [0x11B04]={d="l"},
+ [0x11B05]={d="l"},
+ [0x11B06]={d="l"},
+ [0x11B07]={d="l"},
+ [0x11B08]={d="l"},
+ [0x11B09]={d="l"},
+ [0x11C00]={d="l"},
+ [0x11C01]={d="l"},
+ [0x11C02]={d="l"},
+ [0x11C03]={d="l"},
+ [0x11C04]={d="l"},
+ [0x11C05]={d="l"},
+ [0x11C06]={d="l"},
+ [0x11C07]={d="l"},
+ [0x11C08]={d="l"},
+ [0x11C0A]={d="l"},
+ [0x11C0B]={d="l"},
+ [0x11C0C]={d="l"},
+ [0x11C0D]={d="l"},
+ [0x11C0E]={d="l"},
+ [0x11C0F]={d="l"},
+ [0x11C10]={d="l"},
+ [0x11C11]={d="l"},
+ [0x11C12]={d="l"},
+ [0x11C13]={d="l"},
+ [0x11C14]={d="l"},
+ [0x11C15]={d="l"},
+ [0x11C16]={d="l"},
+ [0x11C17]={d="l"},
+ [0x11C18]={d="l"},
+ [0x11C19]={d="l"},
+ [0x11C1A]={d="l"},
+ [0x11C1B]={d="l"},
+ [0x11C1C]={d="l"},
+ [0x11C1D]={d="l"},
+ [0x11C1E]={d="l"},
+ [0x11C1F]={d="l"},
+ [0x11C20]={d="l"},
+ [0x11C21]={d="l"},
+ [0x11C22]={d="l"},
+ [0x11C23]={d="l"},
+ [0x11C24]={d="l"},
+ [0x11C25]={d="l"},
+ [0x11C26]={d="l"},
+ [0x11C27]={d="l"},
+ [0x11C28]={d="l"},
+ [0x11C29]={d="l"},
+ [0x11C2A]={d="l"},
+ [0x11C2B]={d="l"},
+ [0x11C2C]={d="l"},
+ [0x11C2D]={d="l"},
+ [0x11C2E]={d="l"},
+ [0x11C2F]={d="l"},
+ [0x11C30]={d="nsm"},
+ [0x11C31]={d="nsm"},
+ [0x11C32]={d="nsm"},
+ [0x11C33]={d="nsm"},
+ [0x11C34]={d="nsm"},
+ [0x11C35]={d="nsm"},
+ [0x11C36]={d="nsm"},
+ [0x11C38]={d="nsm"},
+ [0x11C39]={d="nsm"},
+ [0x11C3A]={d="nsm"},
+ [0x11C3B]={d="nsm"},
+ [0x11C3C]={d="nsm"},
+ [0x11C3D]={d="nsm"},
+ [0x11C3E]={d="l"},
+ [0x11C3F]={d="l"},
+ [0x11C40]={d="l"},
+ [0x11C41]={d="l"},
+ [0x11C42]={d="l"},
+ [0x11C43]={d="l"},
+ [0x11C44]={d="l"},
+ [0x11C45]={d="l"},
+ [0x11C50]={d="l"},
+ [0x11C51]={d="l"},
+ [0x11C52]={d="l"},
+ [0x11C53]={d="l"},
+ [0x11C54]={d="l"},
+ [0x11C55]={d="l"},
+ [0x11C56]={d="l"},
+ [0x11C57]={d="l"},
+ [0x11C58]={d="l"},
+ [0x11C59]={d="l"},
+ [0x11C5A]={d="l"},
+ [0x11C5B]={d="l"},
+ [0x11C5C]={d="l"},
+ [0x11C5D]={d="l"},
+ [0x11C5E]={d="l"},
+ [0x11C5F]={d="l"},
+ [0x11C60]={d="l"},
+ [0x11C61]={d="l"},
+ [0x11C62]={d="l"},
+ [0x11C63]={d="l"},
+ [0x11C64]={d="l"},
+ [0x11C65]={d="l"},
+ [0x11C66]={d="l"},
+ [0x11C67]={d="l"},
+ [0x11C68]={d="l"},
+ [0x11C69]={d="l"},
+ [0x11C6A]={d="l"},
+ [0x11C6B]={d="l"},
+ [0x11C6C]={d="l"},
+ [0x11C70]={d="l"},
+ [0x11C71]={d="l"},
+ [0x11C72]={d="l"},
+ [0x11C73]={d="l"},
+ [0x11C74]={d="l"},
+ [0x11C75]={d="l"},
+ [0x11C76]={d="l"},
+ [0x11C77]={d="l"},
+ [0x11C78]={d="l"},
+ [0x11C79]={d="l"},
+ [0x11C7A]={d="l"},
+ [0x11C7B]={d="l"},
+ [0x11C7C]={d="l"},
+ [0x11C7D]={d="l"},
+ [0x11C7E]={d="l"},
+ [0x11C7F]={d="l"},
+ [0x11C80]={d="l"},
+ [0x11C81]={d="l"},
+ [0x11C82]={d="l"},
+ [0x11C83]={d="l"},
+ [0x11C84]={d="l"},
+ [0x11C85]={d="l"},
+ [0x11C86]={d="l"},
+ [0x11C87]={d="l"},
+ [0x11C88]={d="l"},
+ [0x11C89]={d="l"},
+ [0x11C8A]={d="l"},
+ [0x11C8B]={d="l"},
+ [0x11C8C]={d="l"},
+ [0x11C8D]={d="l"},
+ [0x11C8E]={d="l"},
+ [0x11C8F]={d="l"},
+ [0x11C92]={d="nsm"},
+ [0x11C93]={d="nsm"},
+ [0x11C94]={d="nsm"},
+ [0x11C95]={d="nsm"},
+ [0x11C96]={d="nsm"},
+ [0x11C97]={d="nsm"},
+ [0x11C98]={d="nsm"},
+ [0x11C99]={d="nsm"},
+ [0x11C9A]={d="nsm"},
+ [0x11C9B]={d="nsm"},
+ [0x11C9C]={d="nsm"},
+ [0x11C9D]={d="nsm"},
+ [0x11C9E]={d="nsm"},
+ [0x11C9F]={d="nsm"},
+ [0x11CA0]={d="nsm"},
+ [0x11CA1]={d="nsm"},
+ [0x11CA2]={d="nsm"},
+ [0x11CA3]={d="nsm"},
+ [0x11CA4]={d="nsm"},
+ [0x11CA5]={d="nsm"},
+ [0x11CA6]={d="nsm"},
+ [0x11CA7]={d="nsm"},
+ [0x11CA9]={d="l"},
+ [0x11CAA]={d="nsm"},
+ [0x11CAB]={d="nsm"},
+ [0x11CAC]={d="nsm"},
+ [0x11CAD]={d="nsm"},
+ [0x11CAE]={d="nsm"},
+ [0x11CAF]={d="nsm"},
+ [0x11CB0]={d="nsm"},
+ [0x11CB1]={d="l"},
+ [0x11CB2]={d="nsm"},
+ [0x11CB3]={d="nsm"},
+ [0x11CB4]={d="l"},
+ [0x11CB5]={d="nsm"},
+ [0x11CB6]={d="nsm"},
+ [0x11D00]={d="l"},
+ [0x11D01]={d="l"},
+ [0x11D02]={d="l"},
+ [0x11D03]={d="l"},
+ [0x11D04]={d="l"},
+ [0x11D05]={d="l"},
+ [0x11D06]={d="l"},
+ [0x11D08]={d="l"},
+ [0x11D09]={d="l"},
+ [0x11D0B]={d="l"},
+ [0x11D0C]={d="l"},
+ [0x11D0D]={d="l"},
+ [0x11D0E]={d="l"},
+ [0x11D0F]={d="l"},
+ [0x11D10]={d="l"},
+ [0x11D11]={d="l"},
+ [0x11D12]={d="l"},
+ [0x11D13]={d="l"},
+ [0x11D14]={d="l"},
+ [0x11D15]={d="l"},
+ [0x11D16]={d="l"},
+ [0x11D17]={d="l"},
+ [0x11D18]={d="l"},
+ [0x11D19]={d="l"},
+ [0x11D1A]={d="l"},
+ [0x11D1B]={d="l"},
+ [0x11D1C]={d="l"},
+ [0x11D1D]={d="l"},
+ [0x11D1E]={d="l"},
+ [0x11D1F]={d="l"},
+ [0x11D20]={d="l"},
+ [0x11D21]={d="l"},
+ [0x11D22]={d="l"},
+ [0x11D23]={d="l"},
+ [0x11D24]={d="l"},
+ [0x11D25]={d="l"},
+ [0x11D26]={d="l"},
+ [0x11D27]={d="l"},
+ [0x11D28]={d="l"},
+ [0x11D29]={d="l"},
+ [0x11D2A]={d="l"},
+ [0x11D2B]={d="l"},
+ [0x11D2C]={d="l"},
+ [0x11D2D]={d="l"},
+ [0x11D2E]={d="l"},
+ [0x11D2F]={d="l"},
+ [0x11D30]={d="l"},
+ [0x11D31]={d="nsm"},
+ [0x11D32]={d="nsm"},
+ [0x11D33]={d="nsm"},
+ [0x11D34]={d="nsm"},
+ [0x11D35]={d="nsm"},
+ [0x11D36]={d="nsm"},
+ [0x11D3A]={d="nsm"},
+ [0x11D3C]={d="nsm"},
+ [0x11D3D]={d="nsm"},
+ [0x11D3F]={d="nsm"},
+ [0x11D40]={d="nsm"},
+ [0x11D41]={d="nsm"},
+ [0x11D42]={d="nsm"},
+ [0x11D43]={d="nsm"},
+ [0x11D44]={d="nsm"},
+ [0x11D45]={d="nsm"},
+ [0x11D46]={d="l"},
+ [0x11D47]={d="nsm"},
+ [0x11D50]={d="l"},
+ [0x11D51]={d="l"},
+ [0x11D52]={d="l"},
+ [0x11D53]={d="l"},
+ [0x11D54]={d="l"},
+ [0x11D55]={d="l"},
+ [0x11D56]={d="l"},
+ [0x11D57]={d="l"},
+ [0x11D58]={d="l"},
+ [0x11D59]={d="l"},
+ [0x11D60]={d="l"},
+ [0x11D61]={d="l"},
+ [0x11D62]={d="l"},
+ [0x11D63]={d="l"},
+ [0x11D64]={d="l"},
+ [0x11D65]={d="l"},
+ [0x11D67]={d="l"},
+ [0x11D68]={d="l"},
+ [0x11D6A]={d="l"},
+ [0x11D6B]={d="l"},
+ [0x11D6C]={d="l"},
+ [0x11D6D]={d="l"},
+ [0x11D6E]={d="l"},
+ [0x11D6F]={d="l"},
+ [0x11D70]={d="l"},
+ [0x11D71]={d="l"},
+ [0x11D72]={d="l"},
+ [0x11D73]={d="l"},
+ [0x11D74]={d="l"},
+ [0x11D75]={d="l"},
+ [0x11D76]={d="l"},
+ [0x11D77]={d="l"},
+ [0x11D78]={d="l"},
+ [0x11D79]={d="l"},
+ [0x11D7A]={d="l"},
+ [0x11D7B]={d="l"},
+ [0x11D7C]={d="l"},
+ [0x11D7D]={d="l"},
+ [0x11D7E]={d="l"},
+ [0x11D7F]={d="l"},
+ [0x11D80]={d="l"},
+ [0x11D81]={d="l"},
+ [0x11D82]={d="l"},
+ [0x11D83]={d="l"},
+ [0x11D84]={d="l"},
+ [0x11D85]={d="l"},
+ [0x11D86]={d="l"},
+ [0x11D87]={d="l"},
+ [0x11D88]={d="l"},
+ [0x11D89]={d="l"},
+ [0x11D8A]={d="l"},
+ [0x11D8B]={d="l"},
+ [0x11D8C]={d="l"},
+ [0x11D8D]={d="l"},
+ [0x11D8E]={d="l"},
+ [0x11D90]={d="nsm"},
+ [0x11D91]={d="nsm"},
+ [0x11D93]={d="l"},
+ [0x11D94]={d="l"},
+ [0x11D95]={d="nsm"},
+ [0x11D96]={d="l"},
+ [0x11D97]={d="nsm"},
+ [0x11D98]={d="l"},
+ [0x11DA0]={d="l"},
+ [0x11DA1]={d="l"},
+ [0x11DA2]={d="l"},
+ [0x11DA3]={d="l"},
+ [0x11DA4]={d="l"},
+ [0x11DA5]={d="l"},
+ [0x11DA6]={d="l"},
+ [0x11DA7]={d="l"},
+ [0x11DA8]={d="l"},
+ [0x11DA9]={d="l"},
+ [0x11EE0]={d="l"},
+ [0x11EE1]={d="l"},
+ [0x11EE2]={d="l"},
+ [0x11EE3]={d="l"},
+ [0x11EE4]={d="l"},
+ [0x11EE5]={d="l"},
+ [0x11EE6]={d="l"},
+ [0x11EE7]={d="l"},
+ [0x11EE8]={d="l"},
+ [0x11EE9]={d="l"},
+ [0x11EEA]={d="l"},
+ [0x11EEB]={d="l"},
+ [0x11EEC]={d="l"},
+ [0x11EED]={d="l"},
+ [0x11EEE]={d="l"},
+ [0x11EEF]={d="l"},
+ [0x11EF0]={d="l"},
+ [0x11EF1]={d="l"},
+ [0x11EF2]={d="l"},
+ [0x11EF3]={d="nsm"},
+ [0x11EF4]={d="nsm"},
+ [0x11EF5]={d="l"},
+ [0x11EF6]={d="l"},
+ [0x11EF7]={d="l"},
+ [0x11EF8]={d="l"},
+ [0x11F00]={d="nsm"},
+ [0x11F01]={d="nsm"},
+ [0x11F02]={d="l"},
+ [0x11F03]={d="l"},
+ [0x11F04]={d="l"},
+ [0x11F05]={d="l"},
+ [0x11F06]={d="l"},
+ [0x11F07]={d="l"},
+ [0x11F08]={d="l"},
+ [0x11F09]={d="l"},
+ [0x11F0A]={d="l"},
+ [0x11F0B]={d="l"},
+ [0x11F0C]={d="l"},
+ [0x11F0D]={d="l"},
+ [0x11F0E]={d="l"},
+ [0x11F0F]={d="l"},
+ [0x11F10]={d="l"},
+ [0x11F12]={d="l"},
+ [0x11F13]={d="l"},
+ [0x11F14]={d="l"},
+ [0x11F15]={d="l"},
+ [0x11F16]={d="l"},
+ [0x11F17]={d="l"},
+ [0x11F18]={d="l"},
+ [0x11F19]={d="l"},
+ [0x11F1A]={d="l"},
+ [0x11F1B]={d="l"},
+ [0x11F1C]={d="l"},
+ [0x11F1D]={d="l"},
+ [0x11F1E]={d="l"},
+ [0x11F1F]={d="l"},
+ [0x11F20]={d="l"},
+ [0x11F21]={d="l"},
+ [0x11F22]={d="l"},
+ [0x11F23]={d="l"},
+ [0x11F24]={d="l"},
+ [0x11F25]={d="l"},
+ [0x11F26]={d="l"},
+ [0x11F27]={d="l"},
+ [0x11F28]={d="l"},
+ [0x11F29]={d="l"},
+ [0x11F2A]={d="l"},
+ [0x11F2B]={d="l"},
+ [0x11F2C]={d="l"},
+ [0x11F2D]={d="l"},
+ [0x11F2E]={d="l"},
+ [0x11F2F]={d="l"},
+ [0x11F30]={d="l"},
+ [0x11F31]={d="l"},
+ [0x11F32]={d="l"},
+ [0x11F33]={d="l"},
+ [0x11F34]={d="l"},
+ [0x11F35]={d="l"},
+ [0x11F36]={d="nsm"},
+ [0x11F37]={d="nsm"},
+ [0x11F38]={d="nsm"},
+ [0x11F39]={d="nsm"},
+ [0x11F3A]={d="nsm"},
+ [0x11F3E]={d="l"},
+ [0x11F3F]={d="l"},
+ [0x11F40]={d="nsm"},
+ [0x11F41]={d="l"},
+ [0x11F42]={d="nsm"},
+ [0x11F43]={d="l"},
+ [0x11F44]={d="l"},
+ [0x11F45]={d="l"},
+ [0x11F46]={d="l"},
+ [0x11F47]={d="l"},
+ [0x11F48]={d="l"},
+ [0x11F49]={d="l"},
+ [0x11F4A]={d="l"},
+ [0x11F4B]={d="l"},
+ [0x11F4C]={d="l"},
+ [0x11F4D]={d="l"},
+ [0x11F4E]={d="l"},
+ [0x11F4F]={d="l"},
+ [0x11F50]={d="l"},
+ [0x11F51]={d="l"},
+ [0x11F52]={d="l"},
+ [0x11F53]={d="l"},
+ [0x11F54]={d="l"},
+ [0x11F55]={d="l"},
+ [0x11F56]={d="l"},
+ [0x11F57]={d="l"},
+ [0x11F58]={d="l"},
+ [0x11F59]={d="l"},
+ [0x11FB0]={d="l"},
+ [0x11FC0]={d="l"},
+ [0x11FC1]={d="l"},
+ [0x11FC2]={d="l"},
+ [0x11FC3]={d="l"},
+ [0x11FC4]={d="l"},
+ [0x11FC5]={d="l"},
+ [0x11FC6]={d="l"},
+ [0x11FC7]={d="l"},
+ [0x11FC8]={d="l"},
+ [0x11FC9]={d="l"},
+ [0x11FCA]={d="l"},
+ [0x11FCB]={d="l"},
+ [0x11FCC]={d="l"},
+ [0x11FCD]={d="l"},
+ [0x11FCE]={d="l"},
+ [0x11FCF]={d="l"},
+ [0x11FD0]={d="l"},
+ [0x11FD1]={d="l"},
+ [0x11FD2]={d="l"},
+ [0x11FD3]={d="l"},
+ [0x11FD4]={d="l"},
+ [0x11FD5]={d="on"},
+ [0x11FD6]={d="on"},
+ [0x11FD7]={d="on"},
+ [0x11FD8]={d="on"},
+ [0x11FD9]={d="on"},
+ [0x11FDA]={d="on"},
+ [0x11FDB]={d="on"},
+ [0x11FDC]={d="on"},
+ [0x11FDD]={d="et"},
+ [0x11FDE]={d="et"},
+ [0x11FDF]={d="et"},
+ [0x11FE0]={d="et"},
+ [0x11FE1]={d="on"},
+ [0x11FE2]={d="on"},
+ [0x11FE3]={d="on"},
+ [0x11FE4]={d="on"},
+ [0x11FE5]={d="on"},
+ [0x11FE6]={d="on"},
+ [0x11FE7]={d="on"},
+ [0x11FE8]={d="on"},
+ [0x11FE9]={d="on"},
+ [0x11FEA]={d="on"},
+ [0x11FEB]={d="on"},
+ [0x11FEC]={d="on"},
+ [0x11FED]={d="on"},
+ [0x11FEE]={d="on"},
+ [0x11FEF]={d="on"},
+ [0x11FF0]={d="on"},
+ [0x11FF1]={d="on"},
+ [0x11FFF]={d="l"},
+ [0x12000]={d="l"},
+ [0x12001]={d="l"},
+ [0x12002]={d="l"},
+ [0x12003]={d="l"},
+ [0x12004]={d="l"},
+ [0x12005]={d="l"},
+ [0x12006]={d="l"},
+ [0x12007]={d="l"},
+ [0x12008]={d="l"},
+ [0x12009]={d="l"},
+ [0x1200A]={d="l"},
+ [0x1200B]={d="l"},
+ [0x1200C]={d="l"},
+ [0x1200D]={d="l"},
+ [0x1200E]={d="l"},
+ [0x1200F]={d="l"},
+ [0x12010]={d="l"},
+ [0x12011]={d="l"},
+ [0x12012]={d="l"},
+ [0x12013]={d="l"},
+ [0x12014]={d="l"},
+ [0x12015]={d="l"},
+ [0x12016]={d="l"},
+ [0x12017]={d="l"},
+ [0x12018]={d="l"},
+ [0x12019]={d="l"},
+ [0x1201A]={d="l"},
+ [0x1201B]={d="l"},
+ [0x1201C]={d="l"},
+ [0x1201D]={d="l"},
+ [0x1201E]={d="l"},
+ [0x1201F]={d="l"},
+ [0x12020]={d="l"},
+ [0x12021]={d="l"},
+ [0x12022]={d="l"},
+ [0x12023]={d="l"},
+ [0x12024]={d="l"},
+ [0x12025]={d="l"},
+ [0x12026]={d="l"},
+ [0x12027]={d="l"},
+ [0x12028]={d="l"},
+ [0x12029]={d="l"},
+ [0x1202A]={d="l"},
+ [0x1202B]={d="l"},
+ [0x1202C]={d="l"},
+ [0x1202D]={d="l"},
+ [0x1202E]={d="l"},
+ [0x1202F]={d="l"},
+ [0x12030]={d="l"},
+ [0x12031]={d="l"},
+ [0x12032]={d="l"},
+ [0x12033]={d="l"},
+ [0x12034]={d="l"},
+ [0x12035]={d="l"},
+ [0x12036]={d="l"},
+ [0x12037]={d="l"},
+ [0x12038]={d="l"},
+ [0x12039]={d="l"},
+ [0x1203A]={d="l"},
+ [0x1203B]={d="l"},
+ [0x1203C]={d="l"},
+ [0x1203D]={d="l"},
+ [0x1203E]={d="l"},
+ [0x1203F]={d="l"},
+ [0x12040]={d="l"},
+ [0x12041]={d="l"},
+ [0x12042]={d="l"},
+ [0x12043]={d="l"},
+ [0x12044]={d="l"},
+ [0x12045]={d="l"},
+ [0x12046]={d="l"},
+ [0x12047]={d="l"},
+ [0x12048]={d="l"},
+ [0x12049]={d="l"},
+ [0x1204A]={d="l"},
+ [0x1204B]={d="l"},
+ [0x1204C]={d="l"},
+ [0x1204D]={d="l"},
+ [0x1204E]={d="l"},
+ [0x1204F]={d="l"},
+ [0x12050]={d="l"},
+ [0x12051]={d="l"},
+ [0x12052]={d="l"},
+ [0x12053]={d="l"},
+ [0x12054]={d="l"},
+ [0x12055]={d="l"},
+ [0x12056]={d="l"},
+ [0x12057]={d="l"},
+ [0x12058]={d="l"},
+ [0x12059]={d="l"},
+ [0x1205A]={d="l"},
+ [0x1205B]={d="l"},
+ [0x1205C]={d="l"},
+ [0x1205D]={d="l"},
+ [0x1205E]={d="l"},
+ [0x1205F]={d="l"},
+ [0x12060]={d="l"},
+ [0x12061]={d="l"},
+ [0x12062]={d="l"},
+ [0x12063]={d="l"},
+ [0x12064]={d="l"},
+ [0x12065]={d="l"},
+ [0x12066]={d="l"},
+ [0x12067]={d="l"},
+ [0x12068]={d="l"},
+ [0x12069]={d="l"},
+ [0x1206A]={d="l"},
+ [0x1206B]={d="l"},
+ [0x1206C]={d="l"},
+ [0x1206D]={d="l"},
+ [0x1206E]={d="l"},
+ [0x1206F]={d="l"},
+ [0x12070]={d="l"},
+ [0x12071]={d="l"},
+ [0x12072]={d="l"},
+ [0x12073]={d="l"},
+ [0x12074]={d="l"},
+ [0x12075]={d="l"},
+ [0x12076]={d="l"},
+ [0x12077]={d="l"},
+ [0x12078]={d="l"},
+ [0x12079]={d="l"},
+ [0x1207A]={d="l"},
+ [0x1207B]={d="l"},
+ [0x1207C]={d="l"},
+ [0x1207D]={d="l"},
+ [0x1207E]={d="l"},
+ [0x1207F]={d="l"},
+ [0x12080]={d="l"},
+ [0x12081]={d="l"},
+ [0x12082]={d="l"},
+ [0x12083]={d="l"},
+ [0x12084]={d="l"},
+ [0x12085]={d="l"},
+ [0x12086]={d="l"},
+ [0x12087]={d="l"},
+ [0x12088]={d="l"},
+ [0x12089]={d="l"},
+ [0x1208A]={d="l"},
+ [0x1208B]={d="l"},
+ [0x1208C]={d="l"},
+ [0x1208D]={d="l"},
+ [0x1208E]={d="l"},
+ [0x1208F]={d="l"},
+ [0x12090]={d="l"},
+ [0x12091]={d="l"},
+ [0x12092]={d="l"},
+ [0x12093]={d="l"},
+ [0x12094]={d="l"},
+ [0x12095]={d="l"},
+ [0x12096]={d="l"},
+ [0x12097]={d="l"},
+ [0x12098]={d="l"},
+ [0x12099]={d="l"},
+ [0x1209A]={d="l"},
+ [0x1209B]={d="l"},
+ [0x1209C]={d="l"},
+ [0x1209D]={d="l"},
+ [0x1209E]={d="l"},
+ [0x1209F]={d="l"},
+ [0x120A0]={d="l"},
+ [0x120A1]={d="l"},
+ [0x120A2]={d="l"},
+ [0x120A3]={d="l"},
+ [0x120A4]={d="l"},
+ [0x120A5]={d="l"},
+ [0x120A6]={d="l"},
+ [0x120A7]={d="l"},
+ [0x120A8]={d="l"},
+ [0x120A9]={d="l"},
+ [0x120AA]={d="l"},
+ [0x120AB]={d="l"},
+ [0x120AC]={d="l"},
+ [0x120AD]={d="l"},
+ [0x120AE]={d="l"},
+ [0x120AF]={d="l"},
+ [0x120B0]={d="l"},
+ [0x120B1]={d="l"},
+ [0x120B2]={d="l"},
+ [0x120B3]={d="l"},
+ [0x120B4]={d="l"},
+ [0x120B5]={d="l"},
+ [0x120B6]={d="l"},
+ [0x120B7]={d="l"},
+ [0x120B8]={d="l"},
+ [0x120B9]={d="l"},
+ [0x120BA]={d="l"},
+ [0x120BB]={d="l"},
+ [0x120BC]={d="l"},
+ [0x120BD]={d="l"},
+ [0x120BE]={d="l"},
+ [0x120BF]={d="l"},
+ [0x120C0]={d="l"},
+ [0x120C1]={d="l"},
+ [0x120C2]={d="l"},
+ [0x120C3]={d="l"},
+ [0x120C4]={d="l"},
+ [0x120C5]={d="l"},
+ [0x120C6]={d="l"},
+ [0x120C7]={d="l"},
+ [0x120C8]={d="l"},
+ [0x120C9]={d="l"},
+ [0x120CA]={d="l"},
+ [0x120CB]={d="l"},
+ [0x120CC]={d="l"},
+ [0x120CD]={d="l"},
+ [0x120CE]={d="l"},
+ [0x120CF]={d="l"},
+ [0x120D0]={d="l"},
+ [0x120D1]={d="l"},
+ [0x120D2]={d="l"},
+ [0x120D3]={d="l"},
+ [0x120D4]={d="l"},
+ [0x120D5]={d="l"},
+ [0x120D6]={d="l"},
+ [0x120D7]={d="l"},
+ [0x120D8]={d="l"},
+ [0x120D9]={d="l"},
+ [0x120DA]={d="l"},
+ [0x120DB]={d="l"},
+ [0x120DC]={d="l"},
+ [0x120DD]={d="l"},
+ [0x120DE]={d="l"},
+ [0x120DF]={d="l"},
+ [0x120E0]={d="l"},
+ [0x120E1]={d="l"},
+ [0x120E2]={d="l"},
+ [0x120E3]={d="l"},
+ [0x120E4]={d="l"},
+ [0x120E5]={d="l"},
+ [0x120E6]={d="l"},
+ [0x120E7]={d="l"},
+ [0x120E8]={d="l"},
+ [0x120E9]={d="l"},
+ [0x120EA]={d="l"},
+ [0x120EB]={d="l"},
+ [0x120EC]={d="l"},
+ [0x120ED]={d="l"},
+ [0x120EE]={d="l"},
+ [0x120EF]={d="l"},
+ [0x120F0]={d="l"},
+ [0x120F1]={d="l"},
+ [0x120F2]={d="l"},
+ [0x120F3]={d="l"},
+ [0x120F4]={d="l"},
+ [0x120F5]={d="l"},
+ [0x120F6]={d="l"},
+ [0x120F7]={d="l"},
+ [0x120F8]={d="l"},
+ [0x120F9]={d="l"},
+ [0x120FA]={d="l"},
+ [0x120FB]={d="l"},
+ [0x120FC]={d="l"},
+ [0x120FD]={d="l"},
+ [0x120FE]={d="l"},
+ [0x120FF]={d="l"},
+ [0x12100]={d="l"},
+ [0x12101]={d="l"},
+ [0x12102]={d="l"},
+ [0x12103]={d="l"},
+ [0x12104]={d="l"},
+ [0x12105]={d="l"},
+ [0x12106]={d="l"},
+ [0x12107]={d="l"},
+ [0x12108]={d="l"},
+ [0x12109]={d="l"},
+ [0x1210A]={d="l"},
+ [0x1210B]={d="l"},
+ [0x1210C]={d="l"},
+ [0x1210D]={d="l"},
+ [0x1210E]={d="l"},
+ [0x1210F]={d="l"},
+ [0x12110]={d="l"},
+ [0x12111]={d="l"},
+ [0x12112]={d="l"},
+ [0x12113]={d="l"},
+ [0x12114]={d="l"},
+ [0x12115]={d="l"},
+ [0x12116]={d="l"},
+ [0x12117]={d="l"},
+ [0x12118]={d="l"},
+ [0x12119]={d="l"},
+ [0x1211A]={d="l"},
+ [0x1211B]={d="l"},
+ [0x1211C]={d="l"},
+ [0x1211D]={d="l"},
+ [0x1211E]={d="l"},
+ [0x1211F]={d="l"},
+ [0x12120]={d="l"},
+ [0x12121]={d="l"},
+ [0x12122]={d="l"},
+ [0x12123]={d="l"},
+ [0x12124]={d="l"},
+ [0x12125]={d="l"},
+ [0x12126]={d="l"},
+ [0x12127]={d="l"},
+ [0x12128]={d="l"},
+ [0x12129]={d="l"},
+ [0x1212A]={d="l"},
+ [0x1212B]={d="l"},
+ [0x1212C]={d="l"},
+ [0x1212D]={d="l"},
+ [0x1212E]={d="l"},
+ [0x1212F]={d="l"},
+ [0x12130]={d="l"},
+ [0x12131]={d="l"},
+ [0x12132]={d="l"},
+ [0x12133]={d="l"},
+ [0x12134]={d="l"},
+ [0x12135]={d="l"},
+ [0x12136]={d="l"},
+ [0x12137]={d="l"},
+ [0x12138]={d="l"},
+ [0x12139]={d="l"},
+ [0x1213A]={d="l"},
+ [0x1213B]={d="l"},
+ [0x1213C]={d="l"},
+ [0x1213D]={d="l"},
+ [0x1213E]={d="l"},
+ [0x1213F]={d="l"},
+ [0x12140]={d="l"},
+ [0x12141]={d="l"},
+ [0x12142]={d="l"},
+ [0x12143]={d="l"},
+ [0x12144]={d="l"},
+ [0x12145]={d="l"},
+ [0x12146]={d="l"},
+ [0x12147]={d="l"},
+ [0x12148]={d="l"},
+ [0x12149]={d="l"},
+ [0x1214A]={d="l"},
+ [0x1214B]={d="l"},
+ [0x1214C]={d="l"},
+ [0x1214D]={d="l"},
+ [0x1214E]={d="l"},
+ [0x1214F]={d="l"},
+ [0x12150]={d="l"},
+ [0x12151]={d="l"},
+ [0x12152]={d="l"},
+ [0x12153]={d="l"},
+ [0x12154]={d="l"},
+ [0x12155]={d="l"},
+ [0x12156]={d="l"},
+ [0x12157]={d="l"},
+ [0x12158]={d="l"},
+ [0x12159]={d="l"},
+ [0x1215A]={d="l"},
+ [0x1215B]={d="l"},
+ [0x1215C]={d="l"},
+ [0x1215D]={d="l"},
+ [0x1215E]={d="l"},
+ [0x1215F]={d="l"},
+ [0x12160]={d="l"},
+ [0x12161]={d="l"},
+ [0x12162]={d="l"},
+ [0x12163]={d="l"},
+ [0x12164]={d="l"},
+ [0x12165]={d="l"},
+ [0x12166]={d="l"},
+ [0x12167]={d="l"},
+ [0x12168]={d="l"},
+ [0x12169]={d="l"},
+ [0x1216A]={d="l"},
+ [0x1216B]={d="l"},
+ [0x1216C]={d="l"},
+ [0x1216D]={d="l"},
+ [0x1216E]={d="l"},
+ [0x1216F]={d="l"},
+ [0x12170]={d="l"},
+ [0x12171]={d="l"},
+ [0x12172]={d="l"},
+ [0x12173]={d="l"},
+ [0x12174]={d="l"},
+ [0x12175]={d="l"},
+ [0x12176]={d="l"},
+ [0x12177]={d="l"},
+ [0x12178]={d="l"},
+ [0x12179]={d="l"},
+ [0x1217A]={d="l"},
+ [0x1217B]={d="l"},
+ [0x1217C]={d="l"},
+ [0x1217D]={d="l"},
+ [0x1217E]={d="l"},
+ [0x1217F]={d="l"},
+ [0x12180]={d="l"},
+ [0x12181]={d="l"},
+ [0x12182]={d="l"},
+ [0x12183]={d="l"},
+ [0x12184]={d="l"},
+ [0x12185]={d="l"},
+ [0x12186]={d="l"},
+ [0x12187]={d="l"},
+ [0x12188]={d="l"},
+ [0x12189]={d="l"},
+ [0x1218A]={d="l"},
+ [0x1218B]={d="l"},
+ [0x1218C]={d="l"},
+ [0x1218D]={d="l"},
+ [0x1218E]={d="l"},
+ [0x1218F]={d="l"},
+ [0x12190]={d="l"},
+ [0x12191]={d="l"},
+ [0x12192]={d="l"},
+ [0x12193]={d="l"},
+ [0x12194]={d="l"},
+ [0x12195]={d="l"},
+ [0x12196]={d="l"},
+ [0x12197]={d="l"},
+ [0x12198]={d="l"},
+ [0x12199]={d="l"},
+ [0x1219A]={d="l"},
+ [0x1219B]={d="l"},
+ [0x1219C]={d="l"},
+ [0x1219D]={d="l"},
+ [0x1219E]={d="l"},
+ [0x1219F]={d="l"},
+ [0x121A0]={d="l"},
+ [0x121A1]={d="l"},
+ [0x121A2]={d="l"},
+ [0x121A3]={d="l"},
+ [0x121A4]={d="l"},
+ [0x121A5]={d="l"},
+ [0x121A6]={d="l"},
+ [0x121A7]={d="l"},
+ [0x121A8]={d="l"},
+ [0x121A9]={d="l"},
+ [0x121AA]={d="l"},
+ [0x121AB]={d="l"},
+ [0x121AC]={d="l"},
+ [0x121AD]={d="l"},
+ [0x121AE]={d="l"},
+ [0x121AF]={d="l"},
+ [0x121B0]={d="l"},
+ [0x121B1]={d="l"},
+ [0x121B2]={d="l"},
+ [0x121B3]={d="l"},
+ [0x121B4]={d="l"},
+ [0x121B5]={d="l"},
+ [0x121B6]={d="l"},
+ [0x121B7]={d="l"},
+ [0x121B8]={d="l"},
+ [0x121B9]={d="l"},
+ [0x121BA]={d="l"},
+ [0x121BB]={d="l"},
+ [0x121BC]={d="l"},
+ [0x121BD]={d="l"},
+ [0x121BE]={d="l"},
+ [0x121BF]={d="l"},
+ [0x121C0]={d="l"},
+ [0x121C1]={d="l"},
+ [0x121C2]={d="l"},
+ [0x121C3]={d="l"},
+ [0x121C4]={d="l"},
+ [0x121C5]={d="l"},
+ [0x121C6]={d="l"},
+ [0x121C7]={d="l"},
+ [0x121C8]={d="l"},
+ [0x121C9]={d="l"},
+ [0x121CA]={d="l"},
+ [0x121CB]={d="l"},
+ [0x121CC]={d="l"},
+ [0x121CD]={d="l"},
+ [0x121CE]={d="l"},
+ [0x121CF]={d="l"},
+ [0x121D0]={d="l"},
+ [0x121D1]={d="l"},
+ [0x121D2]={d="l"},
+ [0x121D3]={d="l"},
+ [0x121D4]={d="l"},
+ [0x121D5]={d="l"},
+ [0x121D6]={d="l"},
+ [0x121D7]={d="l"},
+ [0x121D8]={d="l"},
+ [0x121D9]={d="l"},
+ [0x121DA]={d="l"},
+ [0x121DB]={d="l"},
+ [0x121DC]={d="l"},
+ [0x121DD]={d="l"},
+ [0x121DE]={d="l"},
+ [0x121DF]={d="l"},
+ [0x121E0]={d="l"},
+ [0x121E1]={d="l"},
+ [0x121E2]={d="l"},
+ [0x121E3]={d="l"},
+ [0x121E4]={d="l"},
+ [0x121E5]={d="l"},
+ [0x121E6]={d="l"},
+ [0x121E7]={d="l"},
+ [0x121E8]={d="l"},
+ [0x121E9]={d="l"},
+ [0x121EA]={d="l"},
+ [0x121EB]={d="l"},
+ [0x121EC]={d="l"},
+ [0x121ED]={d="l"},
+ [0x121EE]={d="l"},
+ [0x121EF]={d="l"},
+ [0x121F0]={d="l"},
+ [0x121F1]={d="l"},
+ [0x121F2]={d="l"},
+ [0x121F3]={d="l"},
+ [0x121F4]={d="l"},
+ [0x121F5]={d="l"},
+ [0x121F6]={d="l"},
+ [0x121F7]={d="l"},
+ [0x121F8]={d="l"},
+ [0x121F9]={d="l"},
+ [0x121FA]={d="l"},
+ [0x121FB]={d="l"},
+ [0x121FC]={d="l"},
+ [0x121FD]={d="l"},
+ [0x121FE]={d="l"},
+ [0x121FF]={d="l"},
+ [0x12200]={d="l"},
+ [0x12201]={d="l"},
+ [0x12202]={d="l"},
+ [0x12203]={d="l"},
+ [0x12204]={d="l"},
+ [0x12205]={d="l"},
+ [0x12206]={d="l"},
+ [0x12207]={d="l"},
+ [0x12208]={d="l"},
+ [0x12209]={d="l"},
+ [0x1220A]={d="l"},
+ [0x1220B]={d="l"},
+ [0x1220C]={d="l"},
+ [0x1220D]={d="l"},
+ [0x1220E]={d="l"},
+ [0x1220F]={d="l"},
+ [0x12210]={d="l"},
+ [0x12211]={d="l"},
+ [0x12212]={d="l"},
+ [0x12213]={d="l"},
+ [0x12214]={d="l"},
+ [0x12215]={d="l"},
+ [0x12216]={d="l"},
+ [0x12217]={d="l"},
+ [0x12218]={d="l"},
+ [0x12219]={d="l"},
+ [0x1221A]={d="l"},
+ [0x1221B]={d="l"},
+ [0x1221C]={d="l"},
+ [0x1221D]={d="l"},
+ [0x1221E]={d="l"},
+ [0x1221F]={d="l"},
+ [0x12220]={d="l"},
+ [0x12221]={d="l"},
+ [0x12222]={d="l"},
+ [0x12223]={d="l"},
+ [0x12224]={d="l"},
+ [0x12225]={d="l"},
+ [0x12226]={d="l"},
+ [0x12227]={d="l"},
+ [0x12228]={d="l"},
+ [0x12229]={d="l"},
+ [0x1222A]={d="l"},
+ [0x1222B]={d="l"},
+ [0x1222C]={d="l"},
+ [0x1222D]={d="l"},
+ [0x1222E]={d="l"},
+ [0x1222F]={d="l"},
+ [0x12230]={d="l"},
+ [0x12231]={d="l"},
+ [0x12232]={d="l"},
+ [0x12233]={d="l"},
+ [0x12234]={d="l"},
+ [0x12235]={d="l"},
+ [0x12236]={d="l"},
+ [0x12237]={d="l"},
+ [0x12238]={d="l"},
+ [0x12239]={d="l"},
+ [0x1223A]={d="l"},
+ [0x1223B]={d="l"},
+ [0x1223C]={d="l"},
+ [0x1223D]={d="l"},
+ [0x1223E]={d="l"},
+ [0x1223F]={d="l"},
+ [0x12240]={d="l"},
+ [0x12241]={d="l"},
+ [0x12242]={d="l"},
+ [0x12243]={d="l"},
+ [0x12244]={d="l"},
+ [0x12245]={d="l"},
+ [0x12246]={d="l"},
+ [0x12247]={d="l"},
+ [0x12248]={d="l"},
+ [0x12249]={d="l"},
+ [0x1224A]={d="l"},
+ [0x1224B]={d="l"},
+ [0x1224C]={d="l"},
+ [0x1224D]={d="l"},
+ [0x1224E]={d="l"},
+ [0x1224F]={d="l"},
+ [0x12250]={d="l"},
+ [0x12251]={d="l"},
+ [0x12252]={d="l"},
+ [0x12253]={d="l"},
+ [0x12254]={d="l"},
+ [0x12255]={d="l"},
+ [0x12256]={d="l"},
+ [0x12257]={d="l"},
+ [0x12258]={d="l"},
+ [0x12259]={d="l"},
+ [0x1225A]={d="l"},
+ [0x1225B]={d="l"},
+ [0x1225C]={d="l"},
+ [0x1225D]={d="l"},
+ [0x1225E]={d="l"},
+ [0x1225F]={d="l"},
+ [0x12260]={d="l"},
+ [0x12261]={d="l"},
+ [0x12262]={d="l"},
+ [0x12263]={d="l"},
+ [0x12264]={d="l"},
+ [0x12265]={d="l"},
+ [0x12266]={d="l"},
+ [0x12267]={d="l"},
+ [0x12268]={d="l"},
+ [0x12269]={d="l"},
+ [0x1226A]={d="l"},
+ [0x1226B]={d="l"},
+ [0x1226C]={d="l"},
+ [0x1226D]={d="l"},
+ [0x1226E]={d="l"},
+ [0x1226F]={d="l"},
+ [0x12270]={d="l"},
+ [0x12271]={d="l"},
+ [0x12272]={d="l"},
+ [0x12273]={d="l"},
+ [0x12274]={d="l"},
+ [0x12275]={d="l"},
+ [0x12276]={d="l"},
+ [0x12277]={d="l"},
+ [0x12278]={d="l"},
+ [0x12279]={d="l"},
+ [0x1227A]={d="l"},
+ [0x1227B]={d="l"},
+ [0x1227C]={d="l"},
+ [0x1227D]={d="l"},
+ [0x1227E]={d="l"},
+ [0x1227F]={d="l"},
+ [0x12280]={d="l"},
+ [0x12281]={d="l"},
+ [0x12282]={d="l"},
+ [0x12283]={d="l"},
+ [0x12284]={d="l"},
+ [0x12285]={d="l"},
+ [0x12286]={d="l"},
+ [0x12287]={d="l"},
+ [0x12288]={d="l"},
+ [0x12289]={d="l"},
+ [0x1228A]={d="l"},
+ [0x1228B]={d="l"},
+ [0x1228C]={d="l"},
+ [0x1228D]={d="l"},
+ [0x1228E]={d="l"},
+ [0x1228F]={d="l"},
+ [0x12290]={d="l"},
+ [0x12291]={d="l"},
+ [0x12292]={d="l"},
+ [0x12293]={d="l"},
+ [0x12294]={d="l"},
+ [0x12295]={d="l"},
+ [0x12296]={d="l"},
+ [0x12297]={d="l"},
+ [0x12298]={d="l"},
+ [0x12299]={d="l"},
+ [0x1229A]={d="l"},
+ [0x1229B]={d="l"},
+ [0x1229C]={d="l"},
+ [0x1229D]={d="l"},
+ [0x1229E]={d="l"},
+ [0x1229F]={d="l"},
+ [0x122A0]={d="l"},
+ [0x122A1]={d="l"},
+ [0x122A2]={d="l"},
+ [0x122A3]={d="l"},
+ [0x122A4]={d="l"},
+ [0x122A5]={d="l"},
+ [0x122A6]={d="l"},
+ [0x122A7]={d="l"},
+ [0x122A8]={d="l"},
+ [0x122A9]={d="l"},
+ [0x122AA]={d="l"},
+ [0x122AB]={d="l"},
+ [0x122AC]={d="l"},
+ [0x122AD]={d="l"},
+ [0x122AE]={d="l"},
+ [0x122AF]={d="l"},
+ [0x122B0]={d="l"},
+ [0x122B1]={d="l"},
+ [0x122B2]={d="l"},
+ [0x122B3]={d="l"},
+ [0x122B4]={d="l"},
+ [0x122B5]={d="l"},
+ [0x122B6]={d="l"},
+ [0x122B7]={d="l"},
+ [0x122B8]={d="l"},
+ [0x122B9]={d="l"},
+ [0x122BA]={d="l"},
+ [0x122BB]={d="l"},
+ [0x122BC]={d="l"},
+ [0x122BD]={d="l"},
+ [0x122BE]={d="l"},
+ [0x122BF]={d="l"},
+ [0x122C0]={d="l"},
+ [0x122C1]={d="l"},
+ [0x122C2]={d="l"},
+ [0x122C3]={d="l"},
+ [0x122C4]={d="l"},
+ [0x122C5]={d="l"},
+ [0x122C6]={d="l"},
+ [0x122C7]={d="l"},
+ [0x122C8]={d="l"},
+ [0x122C9]={d="l"},
+ [0x122CA]={d="l"},
+ [0x122CB]={d="l"},
+ [0x122CC]={d="l"},
+ [0x122CD]={d="l"},
+ [0x122CE]={d="l"},
+ [0x122CF]={d="l"},
+ [0x122D0]={d="l"},
+ [0x122D1]={d="l"},
+ [0x122D2]={d="l"},
+ [0x122D3]={d="l"},
+ [0x122D4]={d="l"},
+ [0x122D5]={d="l"},
+ [0x122D6]={d="l"},
+ [0x122D7]={d="l"},
+ [0x122D8]={d="l"},
+ [0x122D9]={d="l"},
+ [0x122DA]={d="l"},
+ [0x122DB]={d="l"},
+ [0x122DC]={d="l"},
+ [0x122DD]={d="l"},
+ [0x122DE]={d="l"},
+ [0x122DF]={d="l"},
+ [0x122E0]={d="l"},
+ [0x122E1]={d="l"},
+ [0x122E2]={d="l"},
+ [0x122E3]={d="l"},
+ [0x122E4]={d="l"},
+ [0x122E5]={d="l"},
+ [0x122E6]={d="l"},
+ [0x122E7]={d="l"},
+ [0x122E8]={d="l"},
+ [0x122E9]={d="l"},
+ [0x122EA]={d="l"},
+ [0x122EB]={d="l"},
+ [0x122EC]={d="l"},
+ [0x122ED]={d="l"},
+ [0x122EE]={d="l"},
+ [0x122EF]={d="l"},
+ [0x122F0]={d="l"},
+ [0x122F1]={d="l"},
+ [0x122F2]={d="l"},
+ [0x122F3]={d="l"},
+ [0x122F4]={d="l"},
+ [0x122F5]={d="l"},
+ [0x122F6]={d="l"},
+ [0x122F7]={d="l"},
+ [0x122F8]={d="l"},
+ [0x122F9]={d="l"},
+ [0x122FA]={d="l"},
+ [0x122FB]={d="l"},
+ [0x122FC]={d="l"},
+ [0x122FD]={d="l"},
+ [0x122FE]={d="l"},
+ [0x122FF]={d="l"},
+ [0x12300]={d="l"},
+ [0x12301]={d="l"},
+ [0x12302]={d="l"},
+ [0x12303]={d="l"},
+ [0x12304]={d="l"},
+ [0x12305]={d="l"},
+ [0x12306]={d="l"},
+ [0x12307]={d="l"},
+ [0x12308]={d="l"},
+ [0x12309]={d="l"},
+ [0x1230A]={d="l"},
+ [0x1230B]={d="l"},
+ [0x1230C]={d="l"},
+ [0x1230D]={d="l"},
+ [0x1230E]={d="l"},
+ [0x1230F]={d="l"},
+ [0x12310]={d="l"},
+ [0x12311]={d="l"},
+ [0x12312]={d="l"},
+ [0x12313]={d="l"},
+ [0x12314]={d="l"},
+ [0x12315]={d="l"},
+ [0x12316]={d="l"},
+ [0x12317]={d="l"},
+ [0x12318]={d="l"},
+ [0x12319]={d="l"},
+ [0x1231A]={d="l"},
+ [0x1231B]={d="l"},
+ [0x1231C]={d="l"},
+ [0x1231D]={d="l"},
+ [0x1231E]={d="l"},
+ [0x1231F]={d="l"},
+ [0x12320]={d="l"},
+ [0x12321]={d="l"},
+ [0x12322]={d="l"},
+ [0x12323]={d="l"},
+ [0x12324]={d="l"},
+ [0x12325]={d="l"},
+ [0x12326]={d="l"},
+ [0x12327]={d="l"},
+ [0x12328]={d="l"},
+ [0x12329]={d="l"},
+ [0x1232A]={d="l"},
+ [0x1232B]={d="l"},
+ [0x1232C]={d="l"},
+ [0x1232D]={d="l"},
+ [0x1232E]={d="l"},
+ [0x1232F]={d="l"},
+ [0x12330]={d="l"},
+ [0x12331]={d="l"},
+ [0x12332]={d="l"},
+ [0x12333]={d="l"},
+ [0x12334]={d="l"},
+ [0x12335]={d="l"},
+ [0x12336]={d="l"},
+ [0x12337]={d="l"},
+ [0x12338]={d="l"},
+ [0x12339]={d="l"},
+ [0x1233A]={d="l"},
+ [0x1233B]={d="l"},
+ [0x1233C]={d="l"},
+ [0x1233D]={d="l"},
+ [0x1233E]={d="l"},
+ [0x1233F]={d="l"},
+ [0x12340]={d="l"},
+ [0x12341]={d="l"},
+ [0x12342]={d="l"},
+ [0x12343]={d="l"},
+ [0x12344]={d="l"},
+ [0x12345]={d="l"},
+ [0x12346]={d="l"},
+ [0x12347]={d="l"},
+ [0x12348]={d="l"},
+ [0x12349]={d="l"},
+ [0x1234A]={d="l"},
+ [0x1234B]={d="l"},
+ [0x1234C]={d="l"},
+ [0x1234D]={d="l"},
+ [0x1234E]={d="l"},
+ [0x1234F]={d="l"},
+ [0x12350]={d="l"},
+ [0x12351]={d="l"},
+ [0x12352]={d="l"},
+ [0x12353]={d="l"},
+ [0x12354]={d="l"},
+ [0x12355]={d="l"},
+ [0x12356]={d="l"},
+ [0x12357]={d="l"},
+ [0x12358]={d="l"},
+ [0x12359]={d="l"},
+ [0x1235A]={d="l"},
+ [0x1235B]={d="l"},
+ [0x1235C]={d="l"},
+ [0x1235D]={d="l"},
+ [0x1235E]={d="l"},
+ [0x1235F]={d="l"},
+ [0x12360]={d="l"},
+ [0x12361]={d="l"},
+ [0x12362]={d="l"},
+ [0x12363]={d="l"},
+ [0x12364]={d="l"},
+ [0x12365]={d="l"},
+ [0x12366]={d="l"},
+ [0x12367]={d="l"},
+ [0x12368]={d="l"},
+ [0x12369]={d="l"},
+ [0x1236A]={d="l"},
+ [0x1236B]={d="l"},
+ [0x1236C]={d="l"},
+ [0x1236D]={d="l"},
+ [0x1236E]={d="l"},
+ [0x1236F]={d="l"},
+ [0x12370]={d="l"},
+ [0x12371]={d="l"},
+ [0x12372]={d="l"},
+ [0x12373]={d="l"},
+ [0x12374]={d="l"},
+ [0x12375]={d="l"},
+ [0x12376]={d="l"},
+ [0x12377]={d="l"},
+ [0x12378]={d="l"},
+ [0x12379]={d="l"},
+ [0x1237A]={d="l"},
+ [0x1237B]={d="l"},
+ [0x1237C]={d="l"},
+ [0x1237D]={d="l"},
+ [0x1237E]={d="l"},
+ [0x1237F]={d="l"},
+ [0x12380]={d="l"},
+ [0x12381]={d="l"},
+ [0x12382]={d="l"},
+ [0x12383]={d="l"},
+ [0x12384]={d="l"},
+ [0x12385]={d="l"},
+ [0x12386]={d="l"},
+ [0x12387]={d="l"},
+ [0x12388]={d="l"},
+ [0x12389]={d="l"},
+ [0x1238A]={d="l"},
+ [0x1238B]={d="l"},
+ [0x1238C]={d="l"},
+ [0x1238D]={d="l"},
+ [0x1238E]={d="l"},
+ [0x1238F]={d="l"},
+ [0x12390]={d="l"},
+ [0x12391]={d="l"},
+ [0x12392]={d="l"},
+ [0x12393]={d="l"},
+ [0x12394]={d="l"},
+ [0x12395]={d="l"},
+ [0x12396]={d="l"},
+ [0x12397]={d="l"},
+ [0x12398]={d="l"},
+ [0x12399]={d="l"},
+ [0x12400]={d="l"},
+ [0x12401]={d="l"},
+ [0x12402]={d="l"},
+ [0x12403]={d="l"},
+ [0x12404]={d="l"},
+ [0x12405]={d="l"},
+ [0x12406]={d="l"},
+ [0x12407]={d="l"},
+ [0x12408]={d="l"},
+ [0x12409]={d="l"},
+ [0x1240A]={d="l"},
+ [0x1240B]={d="l"},
+ [0x1240C]={d="l"},
+ [0x1240D]={d="l"},
+ [0x1240E]={d="l"},
+ [0x1240F]={d="l"},
+ [0x12410]={d="l"},
+ [0x12411]={d="l"},
+ [0x12412]={d="l"},
+ [0x12413]={d="l"},
+ [0x12414]={d="l"},
+ [0x12415]={d="l"},
+ [0x12416]={d="l"},
+ [0x12417]={d="l"},
+ [0x12418]={d="l"},
+ [0x12419]={d="l"},
+ [0x1241A]={d="l"},
+ [0x1241B]={d="l"},
+ [0x1241C]={d="l"},
+ [0x1241D]={d="l"},
+ [0x1241E]={d="l"},
+ [0x1241F]={d="l"},
+ [0x12420]={d="l"},
+ [0x12421]={d="l"},
+ [0x12422]={d="l"},
+ [0x12423]={d="l"},
+ [0x12424]={d="l"},
+ [0x12425]={d="l"},
+ [0x12426]={d="l"},
+ [0x12427]={d="l"},
+ [0x12428]={d="l"},
+ [0x12429]={d="l"},
+ [0x1242A]={d="l"},
+ [0x1242B]={d="l"},
+ [0x1242C]={d="l"},
+ [0x1242D]={d="l"},
+ [0x1242E]={d="l"},
+ [0x1242F]={d="l"},
+ [0x12430]={d="l"},
+ [0x12431]={d="l"},
+ [0x12432]={d="l"},
+ [0x12433]={d="l"},
+ [0x12434]={d="l"},
+ [0x12435]={d="l"},
+ [0x12436]={d="l"},
+ [0x12437]={d="l"},
+ [0x12438]={d="l"},
+ [0x12439]={d="l"},
+ [0x1243A]={d="l"},
+ [0x1243B]={d="l"},
+ [0x1243C]={d="l"},
+ [0x1243D]={d="l"},
+ [0x1243E]={d="l"},
+ [0x1243F]={d="l"},
+ [0x12440]={d="l"},
+ [0x12441]={d="l"},
+ [0x12442]={d="l"},
+ [0x12443]={d="l"},
+ [0x12444]={d="l"},
+ [0x12445]={d="l"},
+ [0x12446]={d="l"},
+ [0x12447]={d="l"},
+ [0x12448]={d="l"},
+ [0x12449]={d="l"},
+ [0x1244A]={d="l"},
+ [0x1244B]={d="l"},
+ [0x1244C]={d="l"},
+ [0x1244D]={d="l"},
+ [0x1244E]={d="l"},
+ [0x1244F]={d="l"},
+ [0x12450]={d="l"},
+ [0x12451]={d="l"},
+ [0x12452]={d="l"},
+ [0x12453]={d="l"},
+ [0x12454]={d="l"},
+ [0x12455]={d="l"},
+ [0x12456]={d="l"},
+ [0x12457]={d="l"},
+ [0x12458]={d="l"},
+ [0x12459]={d="l"},
+ [0x1245A]={d="l"},
+ [0x1245B]={d="l"},
+ [0x1245C]={d="l"},
+ [0x1245D]={d="l"},
+ [0x1245E]={d="l"},
+ [0x1245F]={d="l"},
+ [0x12460]={d="l"},
+ [0x12461]={d="l"},
+ [0x12462]={d="l"},
+ [0x12463]={d="l"},
+ [0x12464]={d="l"},
+ [0x12465]={d="l"},
+ [0x12466]={d="l"},
+ [0x12467]={d="l"},
+ [0x12468]={d="l"},
+ [0x12469]={d="l"},
+ [0x1246A]={d="l"},
+ [0x1246B]={d="l"},
+ [0x1246C]={d="l"},
+ [0x1246D]={d="l"},
+ [0x1246E]={d="l"},
+ [0x12470]={d="l"},
+ [0x12471]={d="l"},
+ [0x12472]={d="l"},
+ [0x12473]={d="l"},
+ [0x12474]={d="l"},
+ [0x12480]={d="l"},
+ [0x12481]={d="l"},
+ [0x12482]={d="l"},
+ [0x12483]={d="l"},
+ [0x12484]={d="l"},
+ [0x12485]={d="l"},
+ [0x12486]={d="l"},
+ [0x12487]={d="l"},
+ [0x12488]={d="l"},
+ [0x12489]={d="l"},
+ [0x1248A]={d="l"},
+ [0x1248B]={d="l"},
+ [0x1248C]={d="l"},
+ [0x1248D]={d="l"},
+ [0x1248E]={d="l"},
+ [0x1248F]={d="l"},
+ [0x12490]={d="l"},
+ [0x12491]={d="l"},
+ [0x12492]={d="l"},
+ [0x12493]={d="l"},
+ [0x12494]={d="l"},
+ [0x12495]={d="l"},
+ [0x12496]={d="l"},
+ [0x12497]={d="l"},
+ [0x12498]={d="l"},
+ [0x12499]={d="l"},
+ [0x1249A]={d="l"},
+ [0x1249B]={d="l"},
+ [0x1249C]={d="l"},
+ [0x1249D]={d="l"},
+ [0x1249E]={d="l"},
+ [0x1249F]={d="l"},
+ [0x124A0]={d="l"},
+ [0x124A1]={d="l"},
+ [0x124A2]={d="l"},
+ [0x124A3]={d="l"},
+ [0x124A4]={d="l"},
+ [0x124A5]={d="l"},
+ [0x124A6]={d="l"},
+ [0x124A7]={d="l"},
+ [0x124A8]={d="l"},
+ [0x124A9]={d="l"},
+ [0x124AA]={d="l"},
+ [0x124AB]={d="l"},
+ [0x124AC]={d="l"},
+ [0x124AD]={d="l"},
+ [0x124AE]={d="l"},
+ [0x124AF]={d="l"},
+ [0x124B0]={d="l"},
+ [0x124B1]={d="l"},
+ [0x124B2]={d="l"},
+ [0x124B3]={d="l"},
+ [0x124B4]={d="l"},
+ [0x124B5]={d="l"},
+ [0x124B6]={d="l"},
+ [0x124B7]={d="l"},
+ [0x124B8]={d="l"},
+ [0x124B9]={d="l"},
+ [0x124BA]={d="l"},
+ [0x124BB]={d="l"},
+ [0x124BC]={d="l"},
+ [0x124BD]={d="l"},
+ [0x124BE]={d="l"},
+ [0x124BF]={d="l"},
+ [0x124C0]={d="l"},
+ [0x124C1]={d="l"},
+ [0x124C2]={d="l"},
+ [0x124C3]={d="l"},
+ [0x124C4]={d="l"},
+ [0x124C5]={d="l"},
+ [0x124C6]={d="l"},
+ [0x124C7]={d="l"},
+ [0x124C8]={d="l"},
+ [0x124C9]={d="l"},
+ [0x124CA]={d="l"},
+ [0x124CB]={d="l"},
+ [0x124CC]={d="l"},
+ [0x124CD]={d="l"},
+ [0x124CE]={d="l"},
+ [0x124CF]={d="l"},
+ [0x124D0]={d="l"},
+ [0x124D1]={d="l"},
+ [0x124D2]={d="l"},
+ [0x124D3]={d="l"},
+ [0x124D4]={d="l"},
+ [0x124D5]={d="l"},
+ [0x124D6]={d="l"},
+ [0x124D7]={d="l"},
+ [0x124D8]={d="l"},
+ [0x124D9]={d="l"},
+ [0x124DA]={d="l"},
+ [0x124DB]={d="l"},
+ [0x124DC]={d="l"},
+ [0x124DD]={d="l"},
+ [0x124DE]={d="l"},
+ [0x124DF]={d="l"},
+ [0x124E0]={d="l"},
+ [0x124E1]={d="l"},
+ [0x124E2]={d="l"},
+ [0x124E3]={d="l"},
+ [0x124E4]={d="l"},
+ [0x124E5]={d="l"},
+ [0x124E6]={d="l"},
+ [0x124E7]={d="l"},
+ [0x124E8]={d="l"},
+ [0x124E9]={d="l"},
+ [0x124EA]={d="l"},
+ [0x124EB]={d="l"},
+ [0x124EC]={d="l"},
+ [0x124ED]={d="l"},
+ [0x124EE]={d="l"},
+ [0x124EF]={d="l"},
+ [0x124F0]={d="l"},
+ [0x124F1]={d="l"},
+ [0x124F2]={d="l"},
+ [0x124F3]={d="l"},
+ [0x124F4]={d="l"},
+ [0x124F5]={d="l"},
+ [0x124F6]={d="l"},
+ [0x124F7]={d="l"},
+ [0x124F8]={d="l"},
+ [0x124F9]={d="l"},
+ [0x124FA]={d="l"},
+ [0x124FB]={d="l"},
+ [0x124FC]={d="l"},
+ [0x124FD]={d="l"},
+ [0x124FE]={d="l"},
+ [0x124FF]={d="l"},
+ [0x12500]={d="l"},
+ [0x12501]={d="l"},
+ [0x12502]={d="l"},
+ [0x12503]={d="l"},
+ [0x12504]={d="l"},
+ [0x12505]={d="l"},
+ [0x12506]={d="l"},
+ [0x12507]={d="l"},
+ [0x12508]={d="l"},
+ [0x12509]={d="l"},
+ [0x1250A]={d="l"},
+ [0x1250B]={d="l"},
+ [0x1250C]={d="l"},
+ [0x1250D]={d="l"},
+ [0x1250E]={d="l"},
+ [0x1250F]={d="l"},
+ [0x12510]={d="l"},
+ [0x12511]={d="l"},
+ [0x12512]={d="l"},
+ [0x12513]={d="l"},
+ [0x12514]={d="l"},
+ [0x12515]={d="l"},
+ [0x12516]={d="l"},
+ [0x12517]={d="l"},
+ [0x12518]={d="l"},
+ [0x12519]={d="l"},
+ [0x1251A]={d="l"},
+ [0x1251B]={d="l"},
+ [0x1251C]={d="l"},
+ [0x1251D]={d="l"},
+ [0x1251E]={d="l"},
+ [0x1251F]={d="l"},
+ [0x12520]={d="l"},
+ [0x12521]={d="l"},
+ [0x12522]={d="l"},
+ [0x12523]={d="l"},
+ [0x12524]={d="l"},
+ [0x12525]={d="l"},
+ [0x12526]={d="l"},
+ [0x12527]={d="l"},
+ [0x12528]={d="l"},
+ [0x12529]={d="l"},
+ [0x1252A]={d="l"},
+ [0x1252B]={d="l"},
+ [0x1252C]={d="l"},
+ [0x1252D]={d="l"},
+ [0x1252E]={d="l"},
+ [0x1252F]={d="l"},
+ [0x12530]={d="l"},
+ [0x12531]={d="l"},
+ [0x12532]={d="l"},
+ [0x12533]={d="l"},
+ [0x12534]={d="l"},
+ [0x12535]={d="l"},
+ [0x12536]={d="l"},
+ [0x12537]={d="l"},
+ [0x12538]={d="l"},
+ [0x12539]={d="l"},
+ [0x1253A]={d="l"},
+ [0x1253B]={d="l"},
+ [0x1253C]={d="l"},
+ [0x1253D]={d="l"},
+ [0x1253E]={d="l"},
+ [0x1253F]={d="l"},
+ [0x12540]={d="l"},
+ [0x12541]={d="l"},
+ [0x12542]={d="l"},
+ [0x12543]={d="l"},
+ [0x12F90]={d="l"},
+ [0x12F91]={d="l"},
+ [0x12F92]={d="l"},
+ [0x12F93]={d="l"},
+ [0x12F94]={d="l"},
+ [0x12F95]={d="l"},
+ [0x12F96]={d="l"},
+ [0x12F97]={d="l"},
+ [0x12F98]={d="l"},
+ [0x12F99]={d="l"},
+ [0x12F9A]={d="l"},
+ [0x12F9B]={d="l"},
+ [0x12F9C]={d="l"},
+ [0x12F9D]={d="l"},
+ [0x12F9E]={d="l"},
+ [0x12F9F]={d="l"},
+ [0x12FA0]={d="l"},
+ [0x12FA1]={d="l"},
+ [0x12FA2]={d="l"},
+ [0x12FA3]={d="l"},
+ [0x12FA4]={d="l"},
+ [0x12FA5]={d="l"},
+ [0x12FA6]={d="l"},
+ [0x12FA7]={d="l"},
+ [0x12FA8]={d="l"},
+ [0x12FA9]={d="l"},
+ [0x12FAA]={d="l"},
+ [0x12FAB]={d="l"},
+ [0x12FAC]={d="l"},
+ [0x12FAD]={d="l"},
+ [0x12FAE]={d="l"},
+ [0x12FAF]={d="l"},
+ [0x12FB0]={d="l"},
+ [0x12FB1]={d="l"},
+ [0x12FB2]={d="l"},
+ [0x12FB3]={d="l"},
+ [0x12FB4]={d="l"},
+ [0x12FB5]={d="l"},
+ [0x12FB6]={d="l"},
+ [0x12FB7]={d="l"},
+ [0x12FB8]={d="l"},
+ [0x12FB9]={d="l"},
+ [0x12FBA]={d="l"},
+ [0x12FBB]={d="l"},
+ [0x12FBC]={d="l"},
+ [0x12FBD]={d="l"},
+ [0x12FBE]={d="l"},
+ [0x12FBF]={d="l"},
+ [0x12FC0]={d="l"},
+ [0x12FC1]={d="l"},
+ [0x12FC2]={d="l"},
+ [0x12FC3]={d="l"},
+ [0x12FC4]={d="l"},
+ [0x12FC5]={d="l"},
+ [0x12FC6]={d="l"},
+ [0x12FC7]={d="l"},
+ [0x12FC8]={d="l"},
+ [0x12FC9]={d="l"},
+ [0x12FCA]={d="l"},
+ [0x12FCB]={d="l"},
+ [0x12FCC]={d="l"},
+ [0x12FCD]={d="l"},
+ [0x12FCE]={d="l"},
+ [0x12FCF]={d="l"},
+ [0x12FD0]={d="l"},
+ [0x12FD1]={d="l"},
+ [0x12FD2]={d="l"},
+ [0x12FD3]={d="l"},
+ [0x12FD4]={d="l"},
+ [0x12FD5]={d="l"},
+ [0x12FD6]={d="l"},
+ [0x12FD7]={d="l"},
+ [0x12FD8]={d="l"},
+ [0x12FD9]={d="l"},
+ [0x12FDA]={d="l"},
+ [0x12FDB]={d="l"},
+ [0x12FDC]={d="l"},
+ [0x12FDD]={d="l"},
+ [0x12FDE]={d="l"},
+ [0x12FDF]={d="l"},
+ [0x12FE0]={d="l"},
+ [0x12FE1]={d="l"},
+ [0x12FE2]={d="l"},
+ [0x12FE3]={d="l"},
+ [0x12FE4]={d="l"},
+ [0x12FE5]={d="l"},
+ [0x12FE6]={d="l"},
+ [0x12FE7]={d="l"},
+ [0x12FE8]={d="l"},
+ [0x12FE9]={d="l"},
+ [0x12FEA]={d="l"},
+ [0x12FEB]={d="l"},
+ [0x12FEC]={d="l"},
+ [0x12FED]={d="l"},
+ [0x12FEE]={d="l"},
+ [0x12FEF]={d="l"},
+ [0x12FF0]={d="l"},
+ [0x12FF1]={d="l"},
+ [0x12FF2]={d="l"},
+ [0x13000]={d="l"},
+ [0x13001]={d="l"},
+ [0x13002]={d="l"},
+ [0x13003]={d="l"},
+ [0x13004]={d="l"},
+ [0x13005]={d="l"},
+ [0x13006]={d="l"},
+ [0x13007]={d="l"},
+ [0x13008]={d="l"},
+ [0x13009]={d="l"},
+ [0x1300A]={d="l"},
+ [0x1300B]={d="l"},
+ [0x1300C]={d="l"},
+ [0x1300D]={d="l"},
+ [0x1300E]={d="l"},
+ [0x1300F]={d="l"},
+ [0x13010]={d="l"},
+ [0x13011]={d="l"},
+ [0x13012]={d="l"},
+ [0x13013]={d="l"},
+ [0x13014]={d="l"},
+ [0x13015]={d="l"},
+ [0x13016]={d="l"},
+ [0x13017]={d="l"},
+ [0x13018]={d="l"},
+ [0x13019]={d="l"},
+ [0x1301A]={d="l"},
+ [0x1301B]={d="l"},
+ [0x1301C]={d="l"},
+ [0x1301D]={d="l"},
+ [0x1301E]={d="l"},
+ [0x1301F]={d="l"},
+ [0x13020]={d="l"},
+ [0x13021]={d="l"},
+ [0x13022]={d="l"},
+ [0x13023]={d="l"},
+ [0x13024]={d="l"},
+ [0x13025]={d="l"},
+ [0x13026]={d="l"},
+ [0x13027]={d="l"},
+ [0x13028]={d="l"},
+ [0x13029]={d="l"},
+ [0x1302A]={d="l"},
+ [0x1302B]={d="l"},
+ [0x1302C]={d="l"},
+ [0x1302D]={d="l"},
+ [0x1302E]={d="l"},
+ [0x1302F]={d="l"},
+ [0x13030]={d="l"},
+ [0x13031]={d="l"},
+ [0x13032]={d="l"},
+ [0x13033]={d="l"},
+ [0x13034]={d="l"},
+ [0x13035]={d="l"},
+ [0x13036]={d="l"},
+ [0x13037]={d="l"},
+ [0x13038]={d="l"},
+ [0x13039]={d="l"},
+ [0x1303A]={d="l"},
+ [0x1303B]={d="l"},
+ [0x1303C]={d="l"},
+ [0x1303D]={d="l"},
+ [0x1303E]={d="l"},
+ [0x1303F]={d="l"},
+ [0x13040]={d="l"},
+ [0x13041]={d="l"},
+ [0x13042]={d="l"},
+ [0x13043]={d="l"},
+ [0x13044]={d="l"},
+ [0x13045]={d="l"},
+ [0x13046]={d="l"},
+ [0x13047]={d="l"},
+ [0x13048]={d="l"},
+ [0x13049]={d="l"},
+ [0x1304A]={d="l"},
+ [0x1304B]={d="l"},
+ [0x1304C]={d="l"},
+ [0x1304D]={d="l"},
+ [0x1304E]={d="l"},
+ [0x1304F]={d="l"},
+ [0x13050]={d="l"},
+ [0x13051]={d="l"},
+ [0x13052]={d="l"},
+ [0x13053]={d="l"},
+ [0x13054]={d="l"},
+ [0x13055]={d="l"},
+ [0x13056]={d="l"},
+ [0x13057]={d="l"},
+ [0x13058]={d="l"},
+ [0x13059]={d="l"},
+ [0x1305A]={d="l"},
+ [0x1305B]={d="l"},
+ [0x1305C]={d="l"},
+ [0x1305D]={d="l"},
+ [0x1305E]={d="l"},
+ [0x1305F]={d="l"},
+ [0x13060]={d="l"},
+ [0x13061]={d="l"},
+ [0x13062]={d="l"},
+ [0x13063]={d="l"},
+ [0x13064]={d="l"},
+ [0x13065]={d="l"},
+ [0x13066]={d="l"},
+ [0x13067]={d="l"},
+ [0x13068]={d="l"},
+ [0x13069]={d="l"},
+ [0x1306A]={d="l"},
+ [0x1306B]={d="l"},
+ [0x1306C]={d="l"},
+ [0x1306D]={d="l"},
+ [0x1306E]={d="l"},
+ [0x1306F]={d="l"},
+ [0x13070]={d="l"},
+ [0x13071]={d="l"},
+ [0x13072]={d="l"},
+ [0x13073]={d="l"},
+ [0x13074]={d="l"},
+ [0x13075]={d="l"},
+ [0x13076]={d="l"},
+ [0x13077]={d="l"},
+ [0x13078]={d="l"},
+ [0x13079]={d="l"},
+ [0x1307A]={d="l"},
+ [0x1307B]={d="l"},
+ [0x1307C]={d="l"},
+ [0x1307D]={d="l"},
+ [0x1307E]={d="l"},
+ [0x1307F]={d="l"},
+ [0x13080]={d="l"},
+ [0x13081]={d="l"},
+ [0x13082]={d="l"},
+ [0x13083]={d="l"},
+ [0x13084]={d="l"},
+ [0x13085]={d="l"},
+ [0x13086]={d="l"},
+ [0x13087]={d="l"},
+ [0x13088]={d="l"},
+ [0x13089]={d="l"},
+ [0x1308A]={d="l"},
+ [0x1308B]={d="l"},
+ [0x1308C]={d="l"},
+ [0x1308D]={d="l"},
+ [0x1308E]={d="l"},
+ [0x1308F]={d="l"},
+ [0x13090]={d="l"},
+ [0x13091]={d="l"},
+ [0x13092]={d="l"},
+ [0x13093]={d="l"},
+ [0x13094]={d="l"},
+ [0x13095]={d="l"},
+ [0x13096]={d="l"},
+ [0x13097]={d="l"},
+ [0x13098]={d="l"},
+ [0x13099]={d="l"},
+ [0x1309A]={d="l"},
+ [0x1309B]={d="l"},
+ [0x1309C]={d="l"},
+ [0x1309D]={d="l"},
+ [0x1309E]={d="l"},
+ [0x1309F]={d="l"},
+ [0x130A0]={d="l"},
+ [0x130A1]={d="l"},
+ [0x130A2]={d="l"},
+ [0x130A3]={d="l"},
+ [0x130A4]={d="l"},
+ [0x130A5]={d="l"},
+ [0x130A6]={d="l"},
+ [0x130A7]={d="l"},
+ [0x130A8]={d="l"},
+ [0x130A9]={d="l"},
+ [0x130AA]={d="l"},
+ [0x130AB]={d="l"},
+ [0x130AC]={d="l"},
+ [0x130AD]={d="l"},
+ [0x130AE]={d="l"},
+ [0x130AF]={d="l"},
+ [0x130B0]={d="l"},
+ [0x130B1]={d="l"},
+ [0x130B2]={d="l"},
+ [0x130B3]={d="l"},
+ [0x130B4]={d="l"},
+ [0x130B5]={d="l"},
+ [0x130B6]={d="l"},
+ [0x130B7]={d="l"},
+ [0x130B8]={d="l"},
+ [0x130B9]={d="l"},
+ [0x130BA]={d="l"},
+ [0x130BB]={d="l"},
+ [0x130BC]={d="l"},
+ [0x130BD]={d="l"},
+ [0x130BE]={d="l"},
+ [0x130BF]={d="l"},
+ [0x130C0]={d="l"},
+ [0x130C1]={d="l"},
+ [0x130C2]={d="l"},
+ [0x130C3]={d="l"},
+ [0x130C4]={d="l"},
+ [0x130C5]={d="l"},
+ [0x130C6]={d="l"},
+ [0x130C7]={d="l"},
+ [0x130C8]={d="l"},
+ [0x130C9]={d="l"},
+ [0x130CA]={d="l"},
+ [0x130CB]={d="l"},
+ [0x130CC]={d="l"},
+ [0x130CD]={d="l"},
+ [0x130CE]={d="l"},
+ [0x130CF]={d="l"},
+ [0x130D0]={d="l"},
+ [0x130D1]={d="l"},
+ [0x130D2]={d="l"},
+ [0x130D3]={d="l"},
+ [0x130D4]={d="l"},
+ [0x130D5]={d="l"},
+ [0x130D6]={d="l"},
+ [0x130D7]={d="l"},
+ [0x130D8]={d="l"},
+ [0x130D9]={d="l"},
+ [0x130DA]={d="l"},
+ [0x130DB]={d="l"},
+ [0x130DC]={d="l"},
+ [0x130DD]={d="l"},
+ [0x130DE]={d="l"},
+ [0x130DF]={d="l"},
+ [0x130E0]={d="l"},
+ [0x130E1]={d="l"},
+ [0x130E2]={d="l"},
+ [0x130E3]={d="l"},
+ [0x130E4]={d="l"},
+ [0x130E5]={d="l"},
+ [0x130E6]={d="l"},
+ [0x130E7]={d="l"},
+ [0x130E8]={d="l"},
+ [0x130E9]={d="l"},
+ [0x130EA]={d="l"},
+ [0x130EB]={d="l"},
+ [0x130EC]={d="l"},
+ [0x130ED]={d="l"},
+ [0x130EE]={d="l"},
+ [0x130EF]={d="l"},
+ [0x130F0]={d="l"},
+ [0x130F1]={d="l"},
+ [0x130F2]={d="l"},
+ [0x130F3]={d="l"},
+ [0x130F4]={d="l"},
+ [0x130F5]={d="l"},
+ [0x130F6]={d="l"},
+ [0x130F7]={d="l"},
+ [0x130F8]={d="l"},
+ [0x130F9]={d="l"},
+ [0x130FA]={d="l"},
+ [0x130FB]={d="l"},
+ [0x130FC]={d="l"},
+ [0x130FD]={d="l"},
+ [0x130FE]={d="l"},
+ [0x130FF]={d="l"},
+ [0x13100]={d="l"},
+ [0x13101]={d="l"},
+ [0x13102]={d="l"},
+ [0x13103]={d="l"},
+ [0x13104]={d="l"},
+ [0x13105]={d="l"},
+ [0x13106]={d="l"},
+ [0x13107]={d="l"},
+ [0x13108]={d="l"},
+ [0x13109]={d="l"},
+ [0x1310A]={d="l"},
+ [0x1310B]={d="l"},
+ [0x1310C]={d="l"},
+ [0x1310D]={d="l"},
+ [0x1310E]={d="l"},
+ [0x1310F]={d="l"},
+ [0x13110]={d="l"},
+ [0x13111]={d="l"},
+ [0x13112]={d="l"},
+ [0x13113]={d="l"},
+ [0x13114]={d="l"},
+ [0x13115]={d="l"},
+ [0x13116]={d="l"},
+ [0x13117]={d="l"},
+ [0x13118]={d="l"},
+ [0x13119]={d="l"},
+ [0x1311A]={d="l"},
+ [0x1311B]={d="l"},
+ [0x1311C]={d="l"},
+ [0x1311D]={d="l"},
+ [0x1311E]={d="l"},
+ [0x1311F]={d="l"},
+ [0x13120]={d="l"},
+ [0x13121]={d="l"},
+ [0x13122]={d="l"},
+ [0x13123]={d="l"},
+ [0x13124]={d="l"},
+ [0x13125]={d="l"},
+ [0x13126]={d="l"},
+ [0x13127]={d="l"},
+ [0x13128]={d="l"},
+ [0x13129]={d="l"},
+ [0x1312A]={d="l"},
+ [0x1312B]={d="l"},
+ [0x1312C]={d="l"},
+ [0x1312D]={d="l"},
+ [0x1312E]={d="l"},
+ [0x1312F]={d="l"},
+ [0x13130]={d="l"},
+ [0x13131]={d="l"},
+ [0x13132]={d="l"},
+ [0x13133]={d="l"},
+ [0x13134]={d="l"},
+ [0x13135]={d="l"},
+ [0x13136]={d="l"},
+ [0x13137]={d="l"},
+ [0x13138]={d="l"},
+ [0x13139]={d="l"},
+ [0x1313A]={d="l"},
+ [0x1313B]={d="l"},
+ [0x1313C]={d="l"},
+ [0x1313D]={d="l"},
+ [0x1313E]={d="l"},
+ [0x1313F]={d="l"},
+ [0x13140]={d="l"},
+ [0x13141]={d="l"},
+ [0x13142]={d="l"},
+ [0x13143]={d="l"},
+ [0x13144]={d="l"},
+ [0x13145]={d="l"},
+ [0x13146]={d="l"},
+ [0x13147]={d="l"},
+ [0x13148]={d="l"},
+ [0x13149]={d="l"},
+ [0x1314A]={d="l"},
+ [0x1314B]={d="l"},
+ [0x1314C]={d="l"},
+ [0x1314D]={d="l"},
+ [0x1314E]={d="l"},
+ [0x1314F]={d="l"},
+ [0x13150]={d="l"},
+ [0x13151]={d="l"},
+ [0x13152]={d="l"},
+ [0x13153]={d="l"},
+ [0x13154]={d="l"},
+ [0x13155]={d="l"},
+ [0x13156]={d="l"},
+ [0x13157]={d="l"},
+ [0x13158]={d="l"},
+ [0x13159]={d="l"},
+ [0x1315A]={d="l"},
+ [0x1315B]={d="l"},
+ [0x1315C]={d="l"},
+ [0x1315D]={d="l"},
+ [0x1315E]={d="l"},
+ [0x1315F]={d="l"},
+ [0x13160]={d="l"},
+ [0x13161]={d="l"},
+ [0x13162]={d="l"},
+ [0x13163]={d="l"},
+ [0x13164]={d="l"},
+ [0x13165]={d="l"},
+ [0x13166]={d="l"},
+ [0x13167]={d="l"},
+ [0x13168]={d="l"},
+ [0x13169]={d="l"},
+ [0x1316A]={d="l"},
+ [0x1316B]={d="l"},
+ [0x1316C]={d="l"},
+ [0x1316D]={d="l"},
+ [0x1316E]={d="l"},
+ [0x1316F]={d="l"},
+ [0x13170]={d="l"},
+ [0x13171]={d="l"},
+ [0x13172]={d="l"},
+ [0x13173]={d="l"},
+ [0x13174]={d="l"},
+ [0x13175]={d="l"},
+ [0x13176]={d="l"},
+ [0x13177]={d="l"},
+ [0x13178]={d="l"},
+ [0x13179]={d="l"},
+ [0x1317A]={d="l"},
+ [0x1317B]={d="l"},
+ [0x1317C]={d="l"},
+ [0x1317D]={d="l"},
+ [0x1317E]={d="l"},
+ [0x1317F]={d="l"},
+ [0x13180]={d="l"},
+ [0x13181]={d="l"},
+ [0x13182]={d="l"},
+ [0x13183]={d="l"},
+ [0x13184]={d="l"},
+ [0x13185]={d="l"},
+ [0x13186]={d="l"},
+ [0x13187]={d="l"},
+ [0x13188]={d="l"},
+ [0x13189]={d="l"},
+ [0x1318A]={d="l"},
+ [0x1318B]={d="l"},
+ [0x1318C]={d="l"},
+ [0x1318D]={d="l"},
+ [0x1318E]={d="l"},
+ [0x1318F]={d="l"},
+ [0x13190]={d="l"},
+ [0x13191]={d="l"},
+ [0x13192]={d="l"},
+ [0x13193]={d="l"},
+ [0x13194]={d="l"},
+ [0x13195]={d="l"},
+ [0x13196]={d="l"},
+ [0x13197]={d="l"},
+ [0x13198]={d="l"},
+ [0x13199]={d="l"},
+ [0x1319A]={d="l"},
+ [0x1319B]={d="l"},
+ [0x1319C]={d="l"},
+ [0x1319D]={d="l"},
+ [0x1319E]={d="l"},
+ [0x1319F]={d="l"},
+ [0x131A0]={d="l"},
+ [0x131A1]={d="l"},
+ [0x131A2]={d="l"},
+ [0x131A3]={d="l"},
+ [0x131A4]={d="l"},
+ [0x131A5]={d="l"},
+ [0x131A6]={d="l"},
+ [0x131A7]={d="l"},
+ [0x131A8]={d="l"},
+ [0x131A9]={d="l"},
+ [0x131AA]={d="l"},
+ [0x131AB]={d="l"},
+ [0x131AC]={d="l"},
+ [0x131AD]={d="l"},
+ [0x131AE]={d="l"},
+ [0x131AF]={d="l"},
+ [0x131B0]={d="l"},
+ [0x131B1]={d="l"},
+ [0x131B2]={d="l"},
+ [0x131B3]={d="l"},
+ [0x131B4]={d="l"},
+ [0x131B5]={d="l"},
+ [0x131B6]={d="l"},
+ [0x131B7]={d="l"},
+ [0x131B8]={d="l"},
+ [0x131B9]={d="l"},
+ [0x131BA]={d="l"},
+ [0x131BB]={d="l"},
+ [0x131BC]={d="l"},
+ [0x131BD]={d="l"},
+ [0x131BE]={d="l"},
+ [0x131BF]={d="l"},
+ [0x131C0]={d="l"},
+ [0x131C1]={d="l"},
+ [0x131C2]={d="l"},
+ [0x131C3]={d="l"},
+ [0x131C4]={d="l"},
+ [0x131C5]={d="l"},
+ [0x131C6]={d="l"},
+ [0x131C7]={d="l"},
+ [0x131C8]={d="l"},
+ [0x131C9]={d="l"},
+ [0x131CA]={d="l"},
+ [0x131CB]={d="l"},
+ [0x131CC]={d="l"},
+ [0x131CD]={d="l"},
+ [0x131CE]={d="l"},
+ [0x131CF]={d="l"},
+ [0x131D0]={d="l"},
+ [0x131D1]={d="l"},
+ [0x131D2]={d="l"},
+ [0x131D3]={d="l"},
+ [0x131D4]={d="l"},
+ [0x131D5]={d="l"},
+ [0x131D6]={d="l"},
+ [0x131D7]={d="l"},
+ [0x131D8]={d="l"},
+ [0x131D9]={d="l"},
+ [0x131DA]={d="l"},
+ [0x131DB]={d="l"},
+ [0x131DC]={d="l"},
+ [0x131DD]={d="l"},
+ [0x131DE]={d="l"},
+ [0x131DF]={d="l"},
+ [0x131E0]={d="l"},
+ [0x131E1]={d="l"},
+ [0x131E2]={d="l"},
+ [0x131E3]={d="l"},
+ [0x131E4]={d="l"},
+ [0x131E5]={d="l"},
+ [0x131E6]={d="l"},
+ [0x131E7]={d="l"},
+ [0x131E8]={d="l"},
+ [0x131E9]={d="l"},
+ [0x131EA]={d="l"},
+ [0x131EB]={d="l"},
+ [0x131EC]={d="l"},
+ [0x131ED]={d="l"},
+ [0x131EE]={d="l"},
+ [0x131EF]={d="l"},
+ [0x131F0]={d="l"},
+ [0x131F1]={d="l"},
+ [0x131F2]={d="l"},
+ [0x131F3]={d="l"},
+ [0x131F4]={d="l"},
+ [0x131F5]={d="l"},
+ [0x131F6]={d="l"},
+ [0x131F7]={d="l"},
+ [0x131F8]={d="l"},
+ [0x131F9]={d="l"},
+ [0x131FA]={d="l"},
+ [0x131FB]={d="l"},
+ [0x131FC]={d="l"},
+ [0x131FD]={d="l"},
+ [0x131FE]={d="l"},
+ [0x131FF]={d="l"},
+ [0x13200]={d="l"},
+ [0x13201]={d="l"},
+ [0x13202]={d="l"},
+ [0x13203]={d="l"},
+ [0x13204]={d="l"},
+ [0x13205]={d="l"},
+ [0x13206]={d="l"},
+ [0x13207]={d="l"},
+ [0x13208]={d="l"},
+ [0x13209]={d="l"},
+ [0x1320A]={d="l"},
+ [0x1320B]={d="l"},
+ [0x1320C]={d="l"},
+ [0x1320D]={d="l"},
+ [0x1320E]={d="l"},
+ [0x1320F]={d="l"},
+ [0x13210]={d="l"},
+ [0x13211]={d="l"},
+ [0x13212]={d="l"},
+ [0x13213]={d="l"},
+ [0x13214]={d="l"},
+ [0x13215]={d="l"},
+ [0x13216]={d="l"},
+ [0x13217]={d="l"},
+ [0x13218]={d="l"},
+ [0x13219]={d="l"},
+ [0x1321A]={d="l"},
+ [0x1321B]={d="l"},
+ [0x1321C]={d="l"},
+ [0x1321D]={d="l"},
+ [0x1321E]={d="l"},
+ [0x1321F]={d="l"},
+ [0x13220]={d="l"},
+ [0x13221]={d="l"},
+ [0x13222]={d="l"},
+ [0x13223]={d="l"},
+ [0x13224]={d="l"},
+ [0x13225]={d="l"},
+ [0x13226]={d="l"},
+ [0x13227]={d="l"},
+ [0x13228]={d="l"},
+ [0x13229]={d="l"},
+ [0x1322A]={d="l"},
+ [0x1322B]={d="l"},
+ [0x1322C]={d="l"},
+ [0x1322D]={d="l"},
+ [0x1322E]={d="l"},
+ [0x1322F]={d="l"},
+ [0x13230]={d="l"},
+ [0x13231]={d="l"},
+ [0x13232]={d="l"},
+ [0x13233]={d="l"},
+ [0x13234]={d="l"},
+ [0x13235]={d="l"},
+ [0x13236]={d="l"},
+ [0x13237]={d="l"},
+ [0x13238]={d="l"},
+ [0x13239]={d="l"},
+ [0x1323A]={d="l"},
+ [0x1323B]={d="l"},
+ [0x1323C]={d="l"},
+ [0x1323D]={d="l"},
+ [0x1323E]={d="l"},
+ [0x1323F]={d="l"},
+ [0x13240]={d="l"},
+ [0x13241]={d="l"},
+ [0x13242]={d="l"},
+ [0x13243]={d="l"},
+ [0x13244]={d="l"},
+ [0x13245]={d="l"},
+ [0x13246]={d="l"},
+ [0x13247]={d="l"},
+ [0x13248]={d="l"},
+ [0x13249]={d="l"},
+ [0x1324A]={d="l"},
+ [0x1324B]={d="l"},
+ [0x1324C]={d="l"},
+ [0x1324D]={d="l"},
+ [0x1324E]={d="l"},
+ [0x1324F]={d="l"},
+ [0x13250]={d="l"},
+ [0x13251]={d="l"},
+ [0x13252]={d="l"},
+ [0x13253]={d="l"},
+ [0x13254]={d="l"},
+ [0x13255]={d="l"},
+ [0x13256]={d="l"},
+ [0x13257]={d="l"},
+ [0x13258]={d="l"},
+ [0x13259]={d="l"},
+ [0x1325A]={d="l"},
+ [0x1325B]={d="l"},
+ [0x1325C]={d="l"},
+ [0x1325D]={d="l"},
+ [0x1325E]={d="l"},
+ [0x1325F]={d="l"},
+ [0x13260]={d="l"},
+ [0x13261]={d="l"},
+ [0x13262]={d="l"},
+ [0x13263]={d="l"},
+ [0x13264]={d="l"},
+ [0x13265]={d="l"},
+ [0x13266]={d="l"},
+ [0x13267]={d="l"},
+ [0x13268]={d="l"},
+ [0x13269]={d="l"},
+ [0x1326A]={d="l"},
+ [0x1326B]={d="l"},
+ [0x1326C]={d="l"},
+ [0x1326D]={d="l"},
+ [0x1326E]={d="l"},
+ [0x1326F]={d="l"},
+ [0x13270]={d="l"},
+ [0x13271]={d="l"},
+ [0x13272]={d="l"},
+ [0x13273]={d="l"},
+ [0x13274]={d="l"},
+ [0x13275]={d="l"},
+ [0x13276]={d="l"},
+ [0x13277]={d="l"},
+ [0x13278]={d="l"},
+ [0x13279]={d="l"},
+ [0x1327A]={d="l"},
+ [0x1327B]={d="l"},
+ [0x1327C]={d="l"},
+ [0x1327D]={d="l"},
+ [0x1327E]={d="l"},
+ [0x1327F]={d="l"},
+ [0x13280]={d="l"},
+ [0x13281]={d="l"},
+ [0x13282]={d="l"},
+ [0x13283]={d="l"},
+ [0x13284]={d="l"},
+ [0x13285]={d="l"},
+ [0x13286]={d="l"},
+ [0x13287]={d="l"},
+ [0x13288]={d="l"},
+ [0x13289]={d="l"},
+ [0x1328A]={d="l"},
+ [0x1328B]={d="l"},
+ [0x1328C]={d="l"},
+ [0x1328D]={d="l"},
+ [0x1328E]={d="l"},
+ [0x1328F]={d="l"},
+ [0x13290]={d="l"},
+ [0x13291]={d="l"},
+ [0x13292]={d="l"},
+ [0x13293]={d="l"},
+ [0x13294]={d="l"},
+ [0x13295]={d="l"},
+ [0x13296]={d="l"},
+ [0x13297]={d="l"},
+ [0x13298]={d="l"},
+ [0x13299]={d="l"},
+ [0x1329A]={d="l"},
+ [0x1329B]={d="l"},
+ [0x1329C]={d="l"},
+ [0x1329D]={d="l"},
+ [0x1329E]={d="l"},
+ [0x1329F]={d="l"},
+ [0x132A0]={d="l"},
+ [0x132A1]={d="l"},
+ [0x132A2]={d="l"},
+ [0x132A3]={d="l"},
+ [0x132A4]={d="l"},
+ [0x132A5]={d="l"},
+ [0x132A6]={d="l"},
+ [0x132A7]={d="l"},
+ [0x132A8]={d="l"},
+ [0x132A9]={d="l"},
+ [0x132AA]={d="l"},
+ [0x132AB]={d="l"},
+ [0x132AC]={d="l"},
+ [0x132AD]={d="l"},
+ [0x132AE]={d="l"},
+ [0x132AF]={d="l"},
+ [0x132B0]={d="l"},
+ [0x132B1]={d="l"},
+ [0x132B2]={d="l"},
+ [0x132B3]={d="l"},
+ [0x132B4]={d="l"},
+ [0x132B5]={d="l"},
+ [0x132B6]={d="l"},
+ [0x132B7]={d="l"},
+ [0x132B8]={d="l"},
+ [0x132B9]={d="l"},
+ [0x132BA]={d="l"},
+ [0x132BB]={d="l"},
+ [0x132BC]={d="l"},
+ [0x132BD]={d="l"},
+ [0x132BE]={d="l"},
+ [0x132BF]={d="l"},
+ [0x132C0]={d="l"},
+ [0x132C1]={d="l"},
+ [0x132C2]={d="l"},
+ [0x132C3]={d="l"},
+ [0x132C4]={d="l"},
+ [0x132C5]={d="l"},
+ [0x132C6]={d="l"},
+ [0x132C7]={d="l"},
+ [0x132C8]={d="l"},
+ [0x132C9]={d="l"},
+ [0x132CA]={d="l"},
+ [0x132CB]={d="l"},
+ [0x132CC]={d="l"},
+ [0x132CD]={d="l"},
+ [0x132CE]={d="l"},
+ [0x132CF]={d="l"},
+ [0x132D0]={d="l"},
+ [0x132D1]={d="l"},
+ [0x132D2]={d="l"},
+ [0x132D3]={d="l"},
+ [0x132D4]={d="l"},
+ [0x132D5]={d="l"},
+ [0x132D6]={d="l"},
+ [0x132D7]={d="l"},
+ [0x132D8]={d="l"},
+ [0x132D9]={d="l"},
+ [0x132DA]={d="l"},
+ [0x132DB]={d="l"},
+ [0x132DC]={d="l"},
+ [0x132DD]={d="l"},
+ [0x132DE]={d="l"},
+ [0x132DF]={d="l"},
+ [0x132E0]={d="l"},
+ [0x132E1]={d="l"},
+ [0x132E2]={d="l"},
+ [0x132E3]={d="l"},
+ [0x132E4]={d="l"},
+ [0x132E5]={d="l"},
+ [0x132E6]={d="l"},
+ [0x132E7]={d="l"},
+ [0x132E8]={d="l"},
+ [0x132E9]={d="l"},
+ [0x132EA]={d="l"},
+ [0x132EB]={d="l"},
+ [0x132EC]={d="l"},
+ [0x132ED]={d="l"},
+ [0x132EE]={d="l"},
+ [0x132EF]={d="l"},
+ [0x132F0]={d="l"},
+ [0x132F1]={d="l"},
+ [0x132F2]={d="l"},
+ [0x132F3]={d="l"},
+ [0x132F4]={d="l"},
+ [0x132F5]={d="l"},
+ [0x132F6]={d="l"},
+ [0x132F7]={d="l"},
+ [0x132F8]={d="l"},
+ [0x132F9]={d="l"},
+ [0x132FA]={d="l"},
+ [0x132FB]={d="l"},
+ [0x132FC]={d="l"},
+ [0x132FD]={d="l"},
+ [0x132FE]={d="l"},
+ [0x132FF]={d="l"},
+ [0x13300]={d="l"},
+ [0x13301]={d="l"},
+ [0x13302]={d="l"},
+ [0x13303]={d="l"},
+ [0x13304]={d="l"},
+ [0x13305]={d="l"},
+ [0x13306]={d="l"},
+ [0x13307]={d="l"},
+ [0x13308]={d="l"},
+ [0x13309]={d="l"},
+ [0x1330A]={d="l"},
+ [0x1330B]={d="l"},
+ [0x1330C]={d="l"},
+ [0x1330D]={d="l"},
+ [0x1330E]={d="l"},
+ [0x1330F]={d="l"},
+ [0x13310]={d="l"},
+ [0x13311]={d="l"},
+ [0x13312]={d="l"},
+ [0x13313]={d="l"},
+ [0x13314]={d="l"},
+ [0x13315]={d="l"},
+ [0x13316]={d="l"},
+ [0x13317]={d="l"},
+ [0x13318]={d="l"},
+ [0x13319]={d="l"},
+ [0x1331A]={d="l"},
+ [0x1331B]={d="l"},
+ [0x1331C]={d="l"},
+ [0x1331D]={d="l"},
+ [0x1331E]={d="l"},
+ [0x1331F]={d="l"},
+ [0x13320]={d="l"},
+ [0x13321]={d="l"},
+ [0x13322]={d="l"},
+ [0x13323]={d="l"},
+ [0x13324]={d="l"},
+ [0x13325]={d="l"},
+ [0x13326]={d="l"},
+ [0x13327]={d="l"},
+ [0x13328]={d="l"},
+ [0x13329]={d="l"},
+ [0x1332A]={d="l"},
+ [0x1332B]={d="l"},
+ [0x1332C]={d="l"},
+ [0x1332D]={d="l"},
+ [0x1332E]={d="l"},
+ [0x1332F]={d="l"},
+ [0x13330]={d="l"},
+ [0x13331]={d="l"},
+ [0x13332]={d="l"},
+ [0x13333]={d="l"},
+ [0x13334]={d="l"},
+ [0x13335]={d="l"},
+ [0x13336]={d="l"},
+ [0x13337]={d="l"},
+ [0x13338]={d="l"},
+ [0x13339]={d="l"},
+ [0x1333A]={d="l"},
+ [0x1333B]={d="l"},
+ [0x1333C]={d="l"},
+ [0x1333D]={d="l"},
+ [0x1333E]={d="l"},
+ [0x1333F]={d="l"},
+ [0x13340]={d="l"},
+ [0x13341]={d="l"},
+ [0x13342]={d="l"},
+ [0x13343]={d="l"},
+ [0x13344]={d="l"},
+ [0x13345]={d="l"},
+ [0x13346]={d="l"},
+ [0x13347]={d="l"},
+ [0x13348]={d="l"},
+ [0x13349]={d="l"},
+ [0x1334A]={d="l"},
+ [0x1334B]={d="l"},
+ [0x1334C]={d="l"},
+ [0x1334D]={d="l"},
+ [0x1334E]={d="l"},
+ [0x1334F]={d="l"},
+ [0x13350]={d="l"},
+ [0x13351]={d="l"},
+ [0x13352]={d="l"},
+ [0x13353]={d="l"},
+ [0x13354]={d="l"},
+ [0x13355]={d="l"},
+ [0x13356]={d="l"},
+ [0x13357]={d="l"},
+ [0x13358]={d="l"},
+ [0x13359]={d="l"},
+ [0x1335A]={d="l"},
+ [0x1335B]={d="l"},
+ [0x1335C]={d="l"},
+ [0x1335D]={d="l"},
+ [0x1335E]={d="l"},
+ [0x1335F]={d="l"},
+ [0x13360]={d="l"},
+ [0x13361]={d="l"},
+ [0x13362]={d="l"},
+ [0x13363]={d="l"},
+ [0x13364]={d="l"},
+ [0x13365]={d="l"},
+ [0x13366]={d="l"},
+ [0x13367]={d="l"},
+ [0x13368]={d="l"},
+ [0x13369]={d="l"},
+ [0x1336A]={d="l"},
+ [0x1336B]={d="l"},
+ [0x1336C]={d="l"},
+ [0x1336D]={d="l"},
+ [0x1336E]={d="l"},
+ [0x1336F]={d="l"},
+ [0x13370]={d="l"},
+ [0x13371]={d="l"},
+ [0x13372]={d="l"},
+ [0x13373]={d="l"},
+ [0x13374]={d="l"},
+ [0x13375]={d="l"},
+ [0x13376]={d="l"},
+ [0x13377]={d="l"},
+ [0x13378]={d="l"},
+ [0x13379]={d="l"},
+ [0x1337A]={d="l"},
+ [0x1337B]={d="l"},
+ [0x1337C]={d="l"},
+ [0x1337D]={d="l"},
+ [0x1337E]={d="l"},
+ [0x1337F]={d="l"},
+ [0x13380]={d="l"},
+ [0x13381]={d="l"},
+ [0x13382]={d="l"},
+ [0x13383]={d="l"},
+ [0x13384]={d="l"},
+ [0x13385]={d="l"},
+ [0x13386]={d="l"},
+ [0x13387]={d="l"},
+ [0x13388]={d="l"},
+ [0x13389]={d="l"},
+ [0x1338A]={d="l"},
+ [0x1338B]={d="l"},
+ [0x1338C]={d="l"},
+ [0x1338D]={d="l"},
+ [0x1338E]={d="l"},
+ [0x1338F]={d="l"},
+ [0x13390]={d="l"},
+ [0x13391]={d="l"},
+ [0x13392]={d="l"},
+ [0x13393]={d="l"},
+ [0x13394]={d="l"},
+ [0x13395]={d="l"},
+ [0x13396]={d="l"},
+ [0x13397]={d="l"},
+ [0x13398]={d="l"},
+ [0x13399]={d="l"},
+ [0x1339A]={d="l"},
+ [0x1339B]={d="l"},
+ [0x1339C]={d="l"},
+ [0x1339D]={d="l"},
+ [0x1339E]={d="l"},
+ [0x1339F]={d="l"},
+ [0x133A0]={d="l"},
+ [0x133A1]={d="l"},
+ [0x133A2]={d="l"},
+ [0x133A3]={d="l"},
+ [0x133A4]={d="l"},
+ [0x133A5]={d="l"},
+ [0x133A6]={d="l"},
+ [0x133A7]={d="l"},
+ [0x133A8]={d="l"},
+ [0x133A9]={d="l"},
+ [0x133AA]={d="l"},
+ [0x133AB]={d="l"},
+ [0x133AC]={d="l"},
+ [0x133AD]={d="l"},
+ [0x133AE]={d="l"},
+ [0x133AF]={d="l"},
+ [0x133B0]={d="l"},
+ [0x133B1]={d="l"},
+ [0x133B2]={d="l"},
+ [0x133B3]={d="l"},
+ [0x133B4]={d="l"},
+ [0x133B5]={d="l"},
+ [0x133B6]={d="l"},
+ [0x133B7]={d="l"},
+ [0x133B8]={d="l"},
+ [0x133B9]={d="l"},
+ [0x133BA]={d="l"},
+ [0x133BB]={d="l"},
+ [0x133BC]={d="l"},
+ [0x133BD]={d="l"},
+ [0x133BE]={d="l"},
+ [0x133BF]={d="l"},
+ [0x133C0]={d="l"},
+ [0x133C1]={d="l"},
+ [0x133C2]={d="l"},
+ [0x133C3]={d="l"},
+ [0x133C4]={d="l"},
+ [0x133C5]={d="l"},
+ [0x133C6]={d="l"},
+ [0x133C7]={d="l"},
+ [0x133C8]={d="l"},
+ [0x133C9]={d="l"},
+ [0x133CA]={d="l"},
+ [0x133CB]={d="l"},
+ [0x133CC]={d="l"},
+ [0x133CD]={d="l"},
+ [0x133CE]={d="l"},
+ [0x133CF]={d="l"},
+ [0x133D0]={d="l"},
+ [0x133D1]={d="l"},
+ [0x133D2]={d="l"},
+ [0x133D3]={d="l"},
+ [0x133D4]={d="l"},
+ [0x133D5]={d="l"},
+ [0x133D6]={d="l"},
+ [0x133D7]={d="l"},
+ [0x133D8]={d="l"},
+ [0x133D9]={d="l"},
+ [0x133DA]={d="l"},
+ [0x133DB]={d="l"},
+ [0x133DC]={d="l"},
+ [0x133DD]={d="l"},
+ [0x133DE]={d="l"},
+ [0x133DF]={d="l"},
+ [0x133E0]={d="l"},
+ [0x133E1]={d="l"},
+ [0x133E2]={d="l"},
+ [0x133E3]={d="l"},
+ [0x133E4]={d="l"},
+ [0x133E5]={d="l"},
+ [0x133E6]={d="l"},
+ [0x133E7]={d="l"},
+ [0x133E8]={d="l"},
+ [0x133E9]={d="l"},
+ [0x133EA]={d="l"},
+ [0x133EB]={d="l"},
+ [0x133EC]={d="l"},
+ [0x133ED]={d="l"},
+ [0x133EE]={d="l"},
+ [0x133EF]={d="l"},
+ [0x133F0]={d="l"},
+ [0x133F1]={d="l"},
+ [0x133F2]={d="l"},
+ [0x133F3]={d="l"},
+ [0x133F4]={d="l"},
+ [0x133F5]={d="l"},
+ [0x133F6]={d="l"},
+ [0x133F7]={d="l"},
+ [0x133F8]={d="l"},
+ [0x133F9]={d="l"},
+ [0x133FA]={d="l"},
+ [0x133FB]={d="l"},
+ [0x133FC]={d="l"},
+ [0x133FD]={d="l"},
+ [0x133FE]={d="l"},
+ [0x133FF]={d="l"},
+ [0x13400]={d="l"},
+ [0x13401]={d="l"},
+ [0x13402]={d="l"},
+ [0x13403]={d="l"},
+ [0x13404]={d="l"},
+ [0x13405]={d="l"},
+ [0x13406]={d="l"},
+ [0x13407]={d="l"},
+ [0x13408]={d="l"},
+ [0x13409]={d="l"},
+ [0x1340A]={d="l"},
+ [0x1340B]={d="l"},
+ [0x1340C]={d="l"},
+ [0x1340D]={d="l"},
+ [0x1340E]={d="l"},
+ [0x1340F]={d="l"},
+ [0x13410]={d="l"},
+ [0x13411]={d="l"},
+ [0x13412]={d="l"},
+ [0x13413]={d="l"},
+ [0x13414]={d="l"},
+ [0x13415]={d="l"},
+ [0x13416]={d="l"},
+ [0x13417]={d="l"},
+ [0x13418]={d="l"},
+ [0x13419]={d="l"},
+ [0x1341A]={d="l"},
+ [0x1341B]={d="l"},
+ [0x1341C]={d="l"},
+ [0x1341D]={d="l"},
+ [0x1341E]={d="l"},
+ [0x1341F]={d="l"},
+ [0x13420]={d="l"},
+ [0x13421]={d="l"},
+ [0x13422]={d="l"},
+ [0x13423]={d="l"},
+ [0x13424]={d="l"},
+ [0x13425]={d="l"},
+ [0x13426]={d="l"},
+ [0x13427]={d="l"},
+ [0x13428]={d="l"},
+ [0x13429]={d="l"},
+ [0x1342A]={d="l"},
+ [0x1342B]={d="l"},
+ [0x1342C]={d="l"},
+ [0x1342D]={d="l"},
+ [0x1342E]={d="l"},
+ [0x1342F]={d="l"},
+ [0x13430]={d="l"},
+ [0x13431]={d="l"},
+ [0x13432]={d="l"},
+ [0x13433]={d="l"},
+ [0x13434]={d="l"},
+ [0x13435]={d="l"},
+ [0x13436]={d="l"},
+ [0x13437]={d="l"},
+ [0x13438]={d="l"},
+ [0x13439]={d="l"},
+ [0x1343A]={d="l"},
+ [0x1343B]={d="l"},
+ [0x1343C]={d="l"},
+ [0x1343D]={d="l"},
+ [0x1343E]={d="l"},
+ [0x1343F]={d="l"},
+ [0x13440]={d="nsm"},
+ [0x13441]={d="l"},
+ [0x13442]={d="l"},
+ [0x13443]={d="l"},
+ [0x13444]={d="l"},
+ [0x13445]={d="l"},
+ [0x13446]={d="l"},
+ [0x13447]={d="nsm"},
+ [0x13448]={d="nsm"},
+ [0x13449]={d="nsm"},
+ [0x1344A]={d="nsm"},
+ [0x1344B]={d="nsm"},
+ [0x1344C]={d="nsm"},
+ [0x1344D]={d="nsm"},
+ [0x1344E]={d="nsm"},
+ [0x1344F]={d="nsm"},
+ [0x13450]={d="nsm"},
+ [0x13451]={d="nsm"},
+ [0x13452]={d="nsm"},
+ [0x13453]={d="nsm"},
+ [0x13454]={d="nsm"},
+ [0x13455]={d="nsm"},
+ [0x14400]={d="l"},
+ [0x14401]={d="l"},
+ [0x14402]={d="l"},
+ [0x14403]={d="l"},
+ [0x14404]={d="l"},
+ [0x14405]={d="l"},
+ [0x14406]={d="l"},
+ [0x14407]={d="l"},
+ [0x14408]={d="l"},
+ [0x14409]={d="l"},
+ [0x1440A]={d="l"},
+ [0x1440B]={d="l"},
+ [0x1440C]={d="l"},
+ [0x1440D]={d="l"},
+ [0x1440E]={d="l"},
+ [0x1440F]={d="l"},
+ [0x14410]={d="l"},
+ [0x14411]={d="l"},
+ [0x14412]={d="l"},
+ [0x14413]={d="l"},
+ [0x14414]={d="l"},
+ [0x14415]={d="l"},
+ [0x14416]={d="l"},
+ [0x14417]={d="l"},
+ [0x14418]={d="l"},
+ [0x14419]={d="l"},
+ [0x1441A]={d="l"},
+ [0x1441B]={d="l"},
+ [0x1441C]={d="l"},
+ [0x1441D]={d="l"},
+ [0x1441E]={d="l"},
+ [0x1441F]={d="l"},
+ [0x14420]={d="l"},
+ [0x14421]={d="l"},
+ [0x14422]={d="l"},
+ [0x14423]={d="l"},
+ [0x14424]={d="l"},
+ [0x14425]={d="l"},
+ [0x14426]={d="l"},
+ [0x14427]={d="l"},
+ [0x14428]={d="l"},
+ [0x14429]={d="l"},
+ [0x1442A]={d="l"},
+ [0x1442B]={d="l"},
+ [0x1442C]={d="l"},
+ [0x1442D]={d="l"},
+ [0x1442E]={d="l"},
+ [0x1442F]={d="l"},
+ [0x14430]={d="l"},
+ [0x14431]={d="l"},
+ [0x14432]={d="l"},
+ [0x14433]={d="l"},
+ [0x14434]={d="l"},
+ [0x14435]={d="l"},
+ [0x14436]={d="l"},
+ [0x14437]={d="l"},
+ [0x14438]={d="l"},
+ [0x14439]={d="l"},
+ [0x1443A]={d="l"},
+ [0x1443B]={d="l"},
+ [0x1443C]={d="l"},
+ [0x1443D]={d="l"},
+ [0x1443E]={d="l"},
+ [0x1443F]={d="l"},
+ [0x14440]={d="l"},
+ [0x14441]={d="l"},
+ [0x14442]={d="l"},
+ [0x14443]={d="l"},
+ [0x14444]={d="l"},
+ [0x14445]={d="l"},
+ [0x14446]={d="l"},
+ [0x14447]={d="l"},
+ [0x14448]={d="l"},
+ [0x14449]={d="l"},
+ [0x1444A]={d="l"},
+ [0x1444B]={d="l"},
+ [0x1444C]={d="l"},
+ [0x1444D]={d="l"},
+ [0x1444E]={d="l"},
+ [0x1444F]={d="l"},
+ [0x14450]={d="l"},
+ [0x14451]={d="l"},
+ [0x14452]={d="l"},
+ [0x14453]={d="l"},
+ [0x14454]={d="l"},
+ [0x14455]={d="l"},
+ [0x14456]={d="l"},
+ [0x14457]={d="l"},
+ [0x14458]={d="l"},
+ [0x14459]={d="l"},
+ [0x1445A]={d="l"},
+ [0x1445B]={d="l"},
+ [0x1445C]={d="l"},
+ [0x1445D]={d="l"},
+ [0x1445E]={d="l"},
+ [0x1445F]={d="l"},
+ [0x14460]={d="l"},
+ [0x14461]={d="l"},
+ [0x14462]={d="l"},
+ [0x14463]={d="l"},
+ [0x14464]={d="l"},
+ [0x14465]={d="l"},
+ [0x14466]={d="l"},
+ [0x14467]={d="l"},
+ [0x14468]={d="l"},
+ [0x14469]={d="l"},
+ [0x1446A]={d="l"},
+ [0x1446B]={d="l"},
+ [0x1446C]={d="l"},
+ [0x1446D]={d="l"},
+ [0x1446E]={d="l"},
+ [0x1446F]={d="l"},
+ [0x14470]={d="l"},
+ [0x14471]={d="l"},
+ [0x14472]={d="l"},
+ [0x14473]={d="l"},
+ [0x14474]={d="l"},
+ [0x14475]={d="l"},
+ [0x14476]={d="l"},
+ [0x14477]={d="l"},
+ [0x14478]={d="l"},
+ [0x14479]={d="l"},
+ [0x1447A]={d="l"},
+ [0x1447B]={d="l"},
+ [0x1447C]={d="l"},
+ [0x1447D]={d="l"},
+ [0x1447E]={d="l"},
+ [0x1447F]={d="l"},
+ [0x14480]={d="l"},
+ [0x14481]={d="l"},
+ [0x14482]={d="l"},
+ [0x14483]={d="l"},
+ [0x14484]={d="l"},
+ [0x14485]={d="l"},
+ [0x14486]={d="l"},
+ [0x14487]={d="l"},
+ [0x14488]={d="l"},
+ [0x14489]={d="l"},
+ [0x1448A]={d="l"},
+ [0x1448B]={d="l"},
+ [0x1448C]={d="l"},
+ [0x1448D]={d="l"},
+ [0x1448E]={d="l"},
+ [0x1448F]={d="l"},
+ [0x14490]={d="l"},
+ [0x14491]={d="l"},
+ [0x14492]={d="l"},
+ [0x14493]={d="l"},
+ [0x14494]={d="l"},
+ [0x14495]={d="l"},
+ [0x14496]={d="l"},
+ [0x14497]={d="l"},
+ [0x14498]={d="l"},
+ [0x14499]={d="l"},
+ [0x1449A]={d="l"},
+ [0x1449B]={d="l"},
+ [0x1449C]={d="l"},
+ [0x1449D]={d="l"},
+ [0x1449E]={d="l"},
+ [0x1449F]={d="l"},
+ [0x144A0]={d="l"},
+ [0x144A1]={d="l"},
+ [0x144A2]={d="l"},
+ [0x144A3]={d="l"},
+ [0x144A4]={d="l"},
+ [0x144A5]={d="l"},
+ [0x144A6]={d="l"},
+ [0x144A7]={d="l"},
+ [0x144A8]={d="l"},
+ [0x144A9]={d="l"},
+ [0x144AA]={d="l"},
+ [0x144AB]={d="l"},
+ [0x144AC]={d="l"},
+ [0x144AD]={d="l"},
+ [0x144AE]={d="l"},
+ [0x144AF]={d="l"},
+ [0x144B0]={d="l"},
+ [0x144B1]={d="l"},
+ [0x144B2]={d="l"},
+ [0x144B3]={d="l"},
+ [0x144B4]={d="l"},
+ [0x144B5]={d="l"},
+ [0x144B6]={d="l"},
+ [0x144B7]={d="l"},
+ [0x144B8]={d="l"},
+ [0x144B9]={d="l"},
+ [0x144BA]={d="l"},
+ [0x144BB]={d="l"},
+ [0x144BC]={d="l"},
+ [0x144BD]={d="l"},
+ [0x144BE]={d="l"},
+ [0x144BF]={d="l"},
+ [0x144C0]={d="l"},
+ [0x144C1]={d="l"},
+ [0x144C2]={d="l"},
+ [0x144C3]={d="l"},
+ [0x144C4]={d="l"},
+ [0x144C5]={d="l"},
+ [0x144C6]={d="l"},
+ [0x144C7]={d="l"},
+ [0x144C8]={d="l"},
+ [0x144C9]={d="l"},
+ [0x144CA]={d="l"},
+ [0x144CB]={d="l"},
+ [0x144CC]={d="l"},
+ [0x144CD]={d="l"},
+ [0x144CE]={d="l"},
+ [0x144CF]={d="l"},
+ [0x144D0]={d="l"},
+ [0x144D1]={d="l"},
+ [0x144D2]={d="l"},
+ [0x144D3]={d="l"},
+ [0x144D4]={d="l"},
+ [0x144D5]={d="l"},
+ [0x144D6]={d="l"},
+ [0x144D7]={d="l"},
+ [0x144D8]={d="l"},
+ [0x144D9]={d="l"},
+ [0x144DA]={d="l"},
+ [0x144DB]={d="l"},
+ [0x144DC]={d="l"},
+ [0x144DD]={d="l"},
+ [0x144DE]={d="l"},
+ [0x144DF]={d="l"},
+ [0x144E0]={d="l"},
+ [0x144E1]={d="l"},
+ [0x144E2]={d="l"},
+ [0x144E3]={d="l"},
+ [0x144E4]={d="l"},
+ [0x144E5]={d="l"},
+ [0x144E6]={d="l"},
+ [0x144E7]={d="l"},
+ [0x144E8]={d="l"},
+ [0x144E9]={d="l"},
+ [0x144EA]={d="l"},
+ [0x144EB]={d="l"},
+ [0x144EC]={d="l"},
+ [0x144ED]={d="l"},
+ [0x144EE]={d="l"},
+ [0x144EF]={d="l"},
+ [0x144F0]={d="l"},
+ [0x144F1]={d="l"},
+ [0x144F2]={d="l"},
+ [0x144F3]={d="l"},
+ [0x144F4]={d="l"},
+ [0x144F5]={d="l"},
+ [0x144F6]={d="l"},
+ [0x144F7]={d="l"},
+ [0x144F8]={d="l"},
+ [0x144F9]={d="l"},
+ [0x144FA]={d="l"},
+ [0x144FB]={d="l"},
+ [0x144FC]={d="l"},
+ [0x144FD]={d="l"},
+ [0x144FE]={d="l"},
+ [0x144FF]={d="l"},
+ [0x14500]={d="l"},
+ [0x14501]={d="l"},
+ [0x14502]={d="l"},
+ [0x14503]={d="l"},
+ [0x14504]={d="l"},
+ [0x14505]={d="l"},
+ [0x14506]={d="l"},
+ [0x14507]={d="l"},
+ [0x14508]={d="l"},
+ [0x14509]={d="l"},
+ [0x1450A]={d="l"},
+ [0x1450B]={d="l"},
+ [0x1450C]={d="l"},
+ [0x1450D]={d="l"},
+ [0x1450E]={d="l"},
+ [0x1450F]={d="l"},
+ [0x14510]={d="l"},
+ [0x14511]={d="l"},
+ [0x14512]={d="l"},
+ [0x14513]={d="l"},
+ [0x14514]={d="l"},
+ [0x14515]={d="l"},
+ [0x14516]={d="l"},
+ [0x14517]={d="l"},
+ [0x14518]={d="l"},
+ [0x14519]={d="l"},
+ [0x1451A]={d="l"},
+ [0x1451B]={d="l"},
+ [0x1451C]={d="l"},
+ [0x1451D]={d="l"},
+ [0x1451E]={d="l"},
+ [0x1451F]={d="l"},
+ [0x14520]={d="l"},
+ [0x14521]={d="l"},
+ [0x14522]={d="l"},
+ [0x14523]={d="l"},
+ [0x14524]={d="l"},
+ [0x14525]={d="l"},
+ [0x14526]={d="l"},
+ [0x14527]={d="l"},
+ [0x14528]={d="l"},
+ [0x14529]={d="l"},
+ [0x1452A]={d="l"},
+ [0x1452B]={d="l"},
+ [0x1452C]={d="l"},
+ [0x1452D]={d="l"},
+ [0x1452E]={d="l"},
+ [0x1452F]={d="l"},
+ [0x14530]={d="l"},
+ [0x14531]={d="l"},
+ [0x14532]={d="l"},
+ [0x14533]={d="l"},
+ [0x14534]={d="l"},
+ [0x14535]={d="l"},
+ [0x14536]={d="l"},
+ [0x14537]={d="l"},
+ [0x14538]={d="l"},
+ [0x14539]={d="l"},
+ [0x1453A]={d="l"},
+ [0x1453B]={d="l"},
+ [0x1453C]={d="l"},
+ [0x1453D]={d="l"},
+ [0x1453E]={d="l"},
+ [0x1453F]={d="l"},
+ [0x14540]={d="l"},
+ [0x14541]={d="l"},
+ [0x14542]={d="l"},
+ [0x14543]={d="l"},
+ [0x14544]={d="l"},
+ [0x14545]={d="l"},
+ [0x14546]={d="l"},
+ [0x14547]={d="l"},
+ [0x14548]={d="l"},
+ [0x14549]={d="l"},
+ [0x1454A]={d="l"},
+ [0x1454B]={d="l"},
+ [0x1454C]={d="l"},
+ [0x1454D]={d="l"},
+ [0x1454E]={d="l"},
+ [0x1454F]={d="l"},
+ [0x14550]={d="l"},
+ [0x14551]={d="l"},
+ [0x14552]={d="l"},
+ [0x14553]={d="l"},
+ [0x14554]={d="l"},
+ [0x14555]={d="l"},
+ [0x14556]={d="l"},
+ [0x14557]={d="l"},
+ [0x14558]={d="l"},
+ [0x14559]={d="l"},
+ [0x1455A]={d="l"},
+ [0x1455B]={d="l"},
+ [0x1455C]={d="l"},
+ [0x1455D]={d="l"},
+ [0x1455E]={d="l"},
+ [0x1455F]={d="l"},
+ [0x14560]={d="l"},
+ [0x14561]={d="l"},
+ [0x14562]={d="l"},
+ [0x14563]={d="l"},
+ [0x14564]={d="l"},
+ [0x14565]={d="l"},
+ [0x14566]={d="l"},
+ [0x14567]={d="l"},
+ [0x14568]={d="l"},
+ [0x14569]={d="l"},
+ [0x1456A]={d="l"},
+ [0x1456B]={d="l"},
+ [0x1456C]={d="l"},
+ [0x1456D]={d="l"},
+ [0x1456E]={d="l"},
+ [0x1456F]={d="l"},
+ [0x14570]={d="l"},
+ [0x14571]={d="l"},
+ [0x14572]={d="l"},
+ [0x14573]={d="l"},
+ [0x14574]={d="l"},
+ [0x14575]={d="l"},
+ [0x14576]={d="l"},
+ [0x14577]={d="l"},
+ [0x14578]={d="l"},
+ [0x14579]={d="l"},
+ [0x1457A]={d="l"},
+ [0x1457B]={d="l"},
+ [0x1457C]={d="l"},
+ [0x1457D]={d="l"},
+ [0x1457E]={d="l"},
+ [0x1457F]={d="l"},
+ [0x14580]={d="l"},
+ [0x14581]={d="l"},
+ [0x14582]={d="l"},
+ [0x14583]={d="l"},
+ [0x14584]={d="l"},
+ [0x14585]={d="l"},
+ [0x14586]={d="l"},
+ [0x14587]={d="l"},
+ [0x14588]={d="l"},
+ [0x14589]={d="l"},
+ [0x1458A]={d="l"},
+ [0x1458B]={d="l"},
+ [0x1458C]={d="l"},
+ [0x1458D]={d="l"},
+ [0x1458E]={d="l"},
+ [0x1458F]={d="l"},
+ [0x14590]={d="l"},
+ [0x14591]={d="l"},
+ [0x14592]={d="l"},
+ [0x14593]={d="l"},
+ [0x14594]={d="l"},
+ [0x14595]={d="l"},
+ [0x14596]={d="l"},
+ [0x14597]={d="l"},
+ [0x14598]={d="l"},
+ [0x14599]={d="l"},
+ [0x1459A]={d="l"},
+ [0x1459B]={d="l"},
+ [0x1459C]={d="l"},
+ [0x1459D]={d="l"},
+ [0x1459E]={d="l"},
+ [0x1459F]={d="l"},
+ [0x145A0]={d="l"},
+ [0x145A1]={d="l"},
+ [0x145A2]={d="l"},
+ [0x145A3]={d="l"},
+ [0x145A4]={d="l"},
+ [0x145A5]={d="l"},
+ [0x145A6]={d="l"},
+ [0x145A7]={d="l"},
+ [0x145A8]={d="l"},
+ [0x145A9]={d="l"},
+ [0x145AA]={d="l"},
+ [0x145AB]={d="l"},
+ [0x145AC]={d="l"},
+ [0x145AD]={d="l"},
+ [0x145AE]={d="l"},
+ [0x145AF]={d="l"},
+ [0x145B0]={d="l"},
+ [0x145B1]={d="l"},
+ [0x145B2]={d="l"},
+ [0x145B3]={d="l"},
+ [0x145B4]={d="l"},
+ [0x145B5]={d="l"},
+ [0x145B6]={d="l"},
+ [0x145B7]={d="l"},
+ [0x145B8]={d="l"},
+ [0x145B9]={d="l"},
+ [0x145BA]={d="l"},
+ [0x145BB]={d="l"},
+ [0x145BC]={d="l"},
+ [0x145BD]={d="l"},
+ [0x145BE]={d="l"},
+ [0x145BF]={d="l"},
+ [0x145C0]={d="l"},
+ [0x145C1]={d="l"},
+ [0x145C2]={d="l"},
+ [0x145C3]={d="l"},
+ [0x145C4]={d="l"},
+ [0x145C5]={d="l"},
+ [0x145C6]={d="l"},
+ [0x145C7]={d="l"},
+ [0x145C8]={d="l"},
+ [0x145C9]={d="l"},
+ [0x145CA]={d="l"},
+ [0x145CB]={d="l"},
+ [0x145CC]={d="l"},
+ [0x145CD]={d="l"},
+ [0x145CE]={d="l"},
+ [0x145CF]={d="l"},
+ [0x145D0]={d="l"},
+ [0x145D1]={d="l"},
+ [0x145D2]={d="l"},
+ [0x145D3]={d="l"},
+ [0x145D4]={d="l"},
+ [0x145D5]={d="l"},
+ [0x145D6]={d="l"},
+ [0x145D7]={d="l"},
+ [0x145D8]={d="l"},
+ [0x145D9]={d="l"},
+ [0x145DA]={d="l"},
+ [0x145DB]={d="l"},
+ [0x145DC]={d="l"},
+ [0x145DD]={d="l"},
+ [0x145DE]={d="l"},
+ [0x145DF]={d="l"},
+ [0x145E0]={d="l"},
+ [0x145E1]={d="l"},
+ [0x145E2]={d="l"},
+ [0x145E3]={d="l"},
+ [0x145E4]={d="l"},
+ [0x145E5]={d="l"},
+ [0x145E6]={d="l"},
+ [0x145E7]={d="l"},
+ [0x145E8]={d="l"},
+ [0x145E9]={d="l"},
+ [0x145EA]={d="l"},
+ [0x145EB]={d="l"},
+ [0x145EC]={d="l"},
+ [0x145ED]={d="l"},
+ [0x145EE]={d="l"},
+ [0x145EF]={d="l"},
+ [0x145F0]={d="l"},
+ [0x145F1]={d="l"},
+ [0x145F2]={d="l"},
+ [0x145F3]={d="l"},
+ [0x145F4]={d="l"},
+ [0x145F5]={d="l"},
+ [0x145F6]={d="l"},
+ [0x145F7]={d="l"},
+ [0x145F8]={d="l"},
+ [0x145F9]={d="l"},
+ [0x145FA]={d="l"},
+ [0x145FB]={d="l"},
+ [0x145FC]={d="l"},
+ [0x145FD]={d="l"},
+ [0x145FE]={d="l"},
+ [0x145FF]={d="l"},
+ [0x14600]={d="l"},
+ [0x14601]={d="l"},
+ [0x14602]={d="l"},
+ [0x14603]={d="l"},
+ [0x14604]={d="l"},
+ [0x14605]={d="l"},
+ [0x14606]={d="l"},
+ [0x14607]={d="l"},
+ [0x14608]={d="l"},
+ [0x14609]={d="l"},
+ [0x1460A]={d="l"},
+ [0x1460B]={d="l"},
+ [0x1460C]={d="l"},
+ [0x1460D]={d="l"},
+ [0x1460E]={d="l"},
+ [0x1460F]={d="l"},
+ [0x14610]={d="l"},
+ [0x14611]={d="l"},
+ [0x14612]={d="l"},
+ [0x14613]={d="l"},
+ [0x14614]={d="l"},
+ [0x14615]={d="l"},
+ [0x14616]={d="l"},
+ [0x14617]={d="l"},
+ [0x14618]={d="l"},
+ [0x14619]={d="l"},
+ [0x1461A]={d="l"},
+ [0x1461B]={d="l"},
+ [0x1461C]={d="l"},
+ [0x1461D]={d="l"},
+ [0x1461E]={d="l"},
+ [0x1461F]={d="l"},
+ [0x14620]={d="l"},
+ [0x14621]={d="l"},
+ [0x14622]={d="l"},
+ [0x14623]={d="l"},
+ [0x14624]={d="l"},
+ [0x14625]={d="l"},
+ [0x14626]={d="l"},
+ [0x14627]={d="l"},
+ [0x14628]={d="l"},
+ [0x14629]={d="l"},
+ [0x1462A]={d="l"},
+ [0x1462B]={d="l"},
+ [0x1462C]={d="l"},
+ [0x1462D]={d="l"},
+ [0x1462E]={d="l"},
+ [0x1462F]={d="l"},
+ [0x14630]={d="l"},
+ [0x14631]={d="l"},
+ [0x14632]={d="l"},
+ [0x14633]={d="l"},
+ [0x14634]={d="l"},
+ [0x14635]={d="l"},
+ [0x14636]={d="l"},
+ [0x14637]={d="l"},
+ [0x14638]={d="l"},
+ [0x14639]={d="l"},
+ [0x1463A]={d="l"},
+ [0x1463B]={d="l"},
+ [0x1463C]={d="l"},
+ [0x1463D]={d="l"},
+ [0x1463E]={d="l"},
+ [0x1463F]={d="l"},
+ [0x14640]={d="l"},
+ [0x14641]={d="l"},
+ [0x14642]={d="l"},
+ [0x14643]={d="l"},
+ [0x14644]={d="l"},
+ [0x14645]={d="l"},
+ [0x14646]={d="l"},
+ [0x16800]={d="l"},
+ [0x16801]={d="l"},
+ [0x16802]={d="l"},
+ [0x16803]={d="l"},
+ [0x16804]={d="l"},
+ [0x16805]={d="l"},
+ [0x16806]={d="l"},
+ [0x16807]={d="l"},
+ [0x16808]={d="l"},
+ [0x16809]={d="l"},
+ [0x1680A]={d="l"},
+ [0x1680B]={d="l"},
+ [0x1680C]={d="l"},
+ [0x1680D]={d="l"},
+ [0x1680E]={d="l"},
+ [0x1680F]={d="l"},
+ [0x16810]={d="l"},
+ [0x16811]={d="l"},
+ [0x16812]={d="l"},
+ [0x16813]={d="l"},
+ [0x16814]={d="l"},
+ [0x16815]={d="l"},
+ [0x16816]={d="l"},
+ [0x16817]={d="l"},
+ [0x16818]={d="l"},
+ [0x16819]={d="l"},
+ [0x1681A]={d="l"},
+ [0x1681B]={d="l"},
+ [0x1681C]={d="l"},
+ [0x1681D]={d="l"},
+ [0x1681E]={d="l"},
+ [0x1681F]={d="l"},
+ [0x16820]={d="l"},
+ [0x16821]={d="l"},
+ [0x16822]={d="l"},
+ [0x16823]={d="l"},
+ [0x16824]={d="l"},
+ [0x16825]={d="l"},
+ [0x16826]={d="l"},
+ [0x16827]={d="l"},
+ [0x16828]={d="l"},
+ [0x16829]={d="l"},
+ [0x1682A]={d="l"},
+ [0x1682B]={d="l"},
+ [0x1682C]={d="l"},
+ [0x1682D]={d="l"},
+ [0x1682E]={d="l"},
+ [0x1682F]={d="l"},
+ [0x16830]={d="l"},
+ [0x16831]={d="l"},
+ [0x16832]={d="l"},
+ [0x16833]={d="l"},
+ [0x16834]={d="l"},
+ [0x16835]={d="l"},
+ [0x16836]={d="l"},
+ [0x16837]={d="l"},
+ [0x16838]={d="l"},
+ [0x16839]={d="l"},
+ [0x1683A]={d="l"},
+ [0x1683B]={d="l"},
+ [0x1683C]={d="l"},
+ [0x1683D]={d="l"},
+ [0x1683E]={d="l"},
+ [0x1683F]={d="l"},
+ [0x16840]={d="l"},
+ [0x16841]={d="l"},
+ [0x16842]={d="l"},
+ [0x16843]={d="l"},
+ [0x16844]={d="l"},
+ [0x16845]={d="l"},
+ [0x16846]={d="l"},
+ [0x16847]={d="l"},
+ [0x16848]={d="l"},
+ [0x16849]={d="l"},
+ [0x1684A]={d="l"},
+ [0x1684B]={d="l"},
+ [0x1684C]={d="l"},
+ [0x1684D]={d="l"},
+ [0x1684E]={d="l"},
+ [0x1684F]={d="l"},
+ [0x16850]={d="l"},
+ [0x16851]={d="l"},
+ [0x16852]={d="l"},
+ [0x16853]={d="l"},
+ [0x16854]={d="l"},
+ [0x16855]={d="l"},
+ [0x16856]={d="l"},
+ [0x16857]={d="l"},
+ [0x16858]={d="l"},
+ [0x16859]={d="l"},
+ [0x1685A]={d="l"},
+ [0x1685B]={d="l"},
+ [0x1685C]={d="l"},
+ [0x1685D]={d="l"},
+ [0x1685E]={d="l"},
+ [0x1685F]={d="l"},
+ [0x16860]={d="l"},
+ [0x16861]={d="l"},
+ [0x16862]={d="l"},
+ [0x16863]={d="l"},
+ [0x16864]={d="l"},
+ [0x16865]={d="l"},
+ [0x16866]={d="l"},
+ [0x16867]={d="l"},
+ [0x16868]={d="l"},
+ [0x16869]={d="l"},
+ [0x1686A]={d="l"},
+ [0x1686B]={d="l"},
+ [0x1686C]={d="l"},
+ [0x1686D]={d="l"},
+ [0x1686E]={d="l"},
+ [0x1686F]={d="l"},
+ [0x16870]={d="l"},
+ [0x16871]={d="l"},
+ [0x16872]={d="l"},
+ [0x16873]={d="l"},
+ [0x16874]={d="l"},
+ [0x16875]={d="l"},
+ [0x16876]={d="l"},
+ [0x16877]={d="l"},
+ [0x16878]={d="l"},
+ [0x16879]={d="l"},
+ [0x1687A]={d="l"},
+ [0x1687B]={d="l"},
+ [0x1687C]={d="l"},
+ [0x1687D]={d="l"},
+ [0x1687E]={d="l"},
+ [0x1687F]={d="l"},
+ [0x16880]={d="l"},
+ [0x16881]={d="l"},
+ [0x16882]={d="l"},
+ [0x16883]={d="l"},
+ [0x16884]={d="l"},
+ [0x16885]={d="l"},
+ [0x16886]={d="l"},
+ [0x16887]={d="l"},
+ [0x16888]={d="l"},
+ [0x16889]={d="l"},
+ [0x1688A]={d="l"},
+ [0x1688B]={d="l"},
+ [0x1688C]={d="l"},
+ [0x1688D]={d="l"},
+ [0x1688E]={d="l"},
+ [0x1688F]={d="l"},
+ [0x16890]={d="l"},
+ [0x16891]={d="l"},
+ [0x16892]={d="l"},
+ [0x16893]={d="l"},
+ [0x16894]={d="l"},
+ [0x16895]={d="l"},
+ [0x16896]={d="l"},
+ [0x16897]={d="l"},
+ [0x16898]={d="l"},
+ [0x16899]={d="l"},
+ [0x1689A]={d="l"},
+ [0x1689B]={d="l"},
+ [0x1689C]={d="l"},
+ [0x1689D]={d="l"},
+ [0x1689E]={d="l"},
+ [0x1689F]={d="l"},
+ [0x168A0]={d="l"},
+ [0x168A1]={d="l"},
+ [0x168A2]={d="l"},
+ [0x168A3]={d="l"},
+ [0x168A4]={d="l"},
+ [0x168A5]={d="l"},
+ [0x168A6]={d="l"},
+ [0x168A7]={d="l"},
+ [0x168A8]={d="l"},
+ [0x168A9]={d="l"},
+ [0x168AA]={d="l"},
+ [0x168AB]={d="l"},
+ [0x168AC]={d="l"},
+ [0x168AD]={d="l"},
+ [0x168AE]={d="l"},
+ [0x168AF]={d="l"},
+ [0x168B0]={d="l"},
+ [0x168B1]={d="l"},
+ [0x168B2]={d="l"},
+ [0x168B3]={d="l"},
+ [0x168B4]={d="l"},
+ [0x168B5]={d="l"},
+ [0x168B6]={d="l"},
+ [0x168B7]={d="l"},
+ [0x168B8]={d="l"},
+ [0x168B9]={d="l"},
+ [0x168BA]={d="l"},
+ [0x168BB]={d="l"},
+ [0x168BC]={d="l"},
+ [0x168BD]={d="l"},
+ [0x168BE]={d="l"},
+ [0x168BF]={d="l"},
+ [0x168C0]={d="l"},
+ [0x168C1]={d="l"},
+ [0x168C2]={d="l"},
+ [0x168C3]={d="l"},
+ [0x168C4]={d="l"},
+ [0x168C5]={d="l"},
+ [0x168C6]={d="l"},
+ [0x168C7]={d="l"},
+ [0x168C8]={d="l"},
+ [0x168C9]={d="l"},
+ [0x168CA]={d="l"},
+ [0x168CB]={d="l"},
+ [0x168CC]={d="l"},
+ [0x168CD]={d="l"},
+ [0x168CE]={d="l"},
+ [0x168CF]={d="l"},
+ [0x168D0]={d="l"},
+ [0x168D1]={d="l"},
+ [0x168D2]={d="l"},
+ [0x168D3]={d="l"},
+ [0x168D4]={d="l"},
+ [0x168D5]={d="l"},
+ [0x168D6]={d="l"},
+ [0x168D7]={d="l"},
+ [0x168D8]={d="l"},
+ [0x168D9]={d="l"},
+ [0x168DA]={d="l"},
+ [0x168DB]={d="l"},
+ [0x168DC]={d="l"},
+ [0x168DD]={d="l"},
+ [0x168DE]={d="l"},
+ [0x168DF]={d="l"},
+ [0x168E0]={d="l"},
+ [0x168E1]={d="l"},
+ [0x168E2]={d="l"},
+ [0x168E3]={d="l"},
+ [0x168E4]={d="l"},
+ [0x168E5]={d="l"},
+ [0x168E6]={d="l"},
+ [0x168E7]={d="l"},
+ [0x168E8]={d="l"},
+ [0x168E9]={d="l"},
+ [0x168EA]={d="l"},
+ [0x168EB]={d="l"},
+ [0x168EC]={d="l"},
+ [0x168ED]={d="l"},
+ [0x168EE]={d="l"},
+ [0x168EF]={d="l"},
+ [0x168F0]={d="l"},
+ [0x168F1]={d="l"},
+ [0x168F2]={d="l"},
+ [0x168F3]={d="l"},
+ [0x168F4]={d="l"},
+ [0x168F5]={d="l"},
+ [0x168F6]={d="l"},
+ [0x168F7]={d="l"},
+ [0x168F8]={d="l"},
+ [0x168F9]={d="l"},
+ [0x168FA]={d="l"},
+ [0x168FB]={d="l"},
+ [0x168FC]={d="l"},
+ [0x168FD]={d="l"},
+ [0x168FE]={d="l"},
+ [0x168FF]={d="l"},
+ [0x16900]={d="l"},
+ [0x16901]={d="l"},
+ [0x16902]={d="l"},
+ [0x16903]={d="l"},
+ [0x16904]={d="l"},
+ [0x16905]={d="l"},
+ [0x16906]={d="l"},
+ [0x16907]={d="l"},
+ [0x16908]={d="l"},
+ [0x16909]={d="l"},
+ [0x1690A]={d="l"},
+ [0x1690B]={d="l"},
+ [0x1690C]={d="l"},
+ [0x1690D]={d="l"},
+ [0x1690E]={d="l"},
+ [0x1690F]={d="l"},
+ [0x16910]={d="l"},
+ [0x16911]={d="l"},
+ [0x16912]={d="l"},
+ [0x16913]={d="l"},
+ [0x16914]={d="l"},
+ [0x16915]={d="l"},
+ [0x16916]={d="l"},
+ [0x16917]={d="l"},
+ [0x16918]={d="l"},
+ [0x16919]={d="l"},
+ [0x1691A]={d="l"},
+ [0x1691B]={d="l"},
+ [0x1691C]={d="l"},
+ [0x1691D]={d="l"},
+ [0x1691E]={d="l"},
+ [0x1691F]={d="l"},
+ [0x16920]={d="l"},
+ [0x16921]={d="l"},
+ [0x16922]={d="l"},
+ [0x16923]={d="l"},
+ [0x16924]={d="l"},
+ [0x16925]={d="l"},
+ [0x16926]={d="l"},
+ [0x16927]={d="l"},
+ [0x16928]={d="l"},
+ [0x16929]={d="l"},
+ [0x1692A]={d="l"},
+ [0x1692B]={d="l"},
+ [0x1692C]={d="l"},
+ [0x1692D]={d="l"},
+ [0x1692E]={d="l"},
+ [0x1692F]={d="l"},
+ [0x16930]={d="l"},
+ [0x16931]={d="l"},
+ [0x16932]={d="l"},
+ [0x16933]={d="l"},
+ [0x16934]={d="l"},
+ [0x16935]={d="l"},
+ [0x16936]={d="l"},
+ [0x16937]={d="l"},
+ [0x16938]={d="l"},
+ [0x16939]={d="l"},
+ [0x1693A]={d="l"},
+ [0x1693B]={d="l"},
+ [0x1693C]={d="l"},
+ [0x1693D]={d="l"},
+ [0x1693E]={d="l"},
+ [0x1693F]={d="l"},
+ [0x16940]={d="l"},
+ [0x16941]={d="l"},
+ [0x16942]={d="l"},
+ [0x16943]={d="l"},
+ [0x16944]={d="l"},
+ [0x16945]={d="l"},
+ [0x16946]={d="l"},
+ [0x16947]={d="l"},
+ [0x16948]={d="l"},
+ [0x16949]={d="l"},
+ [0x1694A]={d="l"},
+ [0x1694B]={d="l"},
+ [0x1694C]={d="l"},
+ [0x1694D]={d="l"},
+ [0x1694E]={d="l"},
+ [0x1694F]={d="l"},
+ [0x16950]={d="l"},
+ [0x16951]={d="l"},
+ [0x16952]={d="l"},
+ [0x16953]={d="l"},
+ [0x16954]={d="l"},
+ [0x16955]={d="l"},
+ [0x16956]={d="l"},
+ [0x16957]={d="l"},
+ [0x16958]={d="l"},
+ [0x16959]={d="l"},
+ [0x1695A]={d="l"},
+ [0x1695B]={d="l"},
+ [0x1695C]={d="l"},
+ [0x1695D]={d="l"},
+ [0x1695E]={d="l"},
+ [0x1695F]={d="l"},
+ [0x16960]={d="l"},
+ [0x16961]={d="l"},
+ [0x16962]={d="l"},
+ [0x16963]={d="l"},
+ [0x16964]={d="l"},
+ [0x16965]={d="l"},
+ [0x16966]={d="l"},
+ [0x16967]={d="l"},
+ [0x16968]={d="l"},
+ [0x16969]={d="l"},
+ [0x1696A]={d="l"},
+ [0x1696B]={d="l"},
+ [0x1696C]={d="l"},
+ [0x1696D]={d="l"},
+ [0x1696E]={d="l"},
+ [0x1696F]={d="l"},
+ [0x16970]={d="l"},
+ [0x16971]={d="l"},
+ [0x16972]={d="l"},
+ [0x16973]={d="l"},
+ [0x16974]={d="l"},
+ [0x16975]={d="l"},
+ [0x16976]={d="l"},
+ [0x16977]={d="l"},
+ [0x16978]={d="l"},
+ [0x16979]={d="l"},
+ [0x1697A]={d="l"},
+ [0x1697B]={d="l"},
+ [0x1697C]={d="l"},
+ [0x1697D]={d="l"},
+ [0x1697E]={d="l"},
+ [0x1697F]={d="l"},
+ [0x16980]={d="l"},
+ [0x16981]={d="l"},
+ [0x16982]={d="l"},
+ [0x16983]={d="l"},
+ [0x16984]={d="l"},
+ [0x16985]={d="l"},
+ [0x16986]={d="l"},
+ [0x16987]={d="l"},
+ [0x16988]={d="l"},
+ [0x16989]={d="l"},
+ [0x1698A]={d="l"},
+ [0x1698B]={d="l"},
+ [0x1698C]={d="l"},
+ [0x1698D]={d="l"},
+ [0x1698E]={d="l"},
+ [0x1698F]={d="l"},
+ [0x16990]={d="l"},
+ [0x16991]={d="l"},
+ [0x16992]={d="l"},
+ [0x16993]={d="l"},
+ [0x16994]={d="l"},
+ [0x16995]={d="l"},
+ [0x16996]={d="l"},
+ [0x16997]={d="l"},
+ [0x16998]={d="l"},
+ [0x16999]={d="l"},
+ [0x1699A]={d="l"},
+ [0x1699B]={d="l"},
+ [0x1699C]={d="l"},
+ [0x1699D]={d="l"},
+ [0x1699E]={d="l"},
+ [0x1699F]={d="l"},
+ [0x169A0]={d="l"},
+ [0x169A1]={d="l"},
+ [0x169A2]={d="l"},
+ [0x169A3]={d="l"},
+ [0x169A4]={d="l"},
+ [0x169A5]={d="l"},
+ [0x169A6]={d="l"},
+ [0x169A7]={d="l"},
+ [0x169A8]={d="l"},
+ [0x169A9]={d="l"},
+ [0x169AA]={d="l"},
+ [0x169AB]={d="l"},
+ [0x169AC]={d="l"},
+ [0x169AD]={d="l"},
+ [0x169AE]={d="l"},
+ [0x169AF]={d="l"},
+ [0x169B0]={d="l"},
+ [0x169B1]={d="l"},
+ [0x169B2]={d="l"},
+ [0x169B3]={d="l"},
+ [0x169B4]={d="l"},
+ [0x169B5]={d="l"},
+ [0x169B6]={d="l"},
+ [0x169B7]={d="l"},
+ [0x169B8]={d="l"},
+ [0x169B9]={d="l"},
+ [0x169BA]={d="l"},
+ [0x169BB]={d="l"},
+ [0x169BC]={d="l"},
+ [0x169BD]={d="l"},
+ [0x169BE]={d="l"},
+ [0x169BF]={d="l"},
+ [0x169C0]={d="l"},
+ [0x169C1]={d="l"},
+ [0x169C2]={d="l"},
+ [0x169C3]={d="l"},
+ [0x169C4]={d="l"},
+ [0x169C5]={d="l"},
+ [0x169C6]={d="l"},
+ [0x169C7]={d="l"},
+ [0x169C8]={d="l"},
+ [0x169C9]={d="l"},
+ [0x169CA]={d="l"},
+ [0x169CB]={d="l"},
+ [0x169CC]={d="l"},
+ [0x169CD]={d="l"},
+ [0x169CE]={d="l"},
+ [0x169CF]={d="l"},
+ [0x169D0]={d="l"},
+ [0x169D1]={d="l"},
+ [0x169D2]={d="l"},
+ [0x169D3]={d="l"},
+ [0x169D4]={d="l"},
+ [0x169D5]={d="l"},
+ [0x169D6]={d="l"},
+ [0x169D7]={d="l"},
+ [0x169D8]={d="l"},
+ [0x169D9]={d="l"},
+ [0x169DA]={d="l"},
+ [0x169DB]={d="l"},
+ [0x169DC]={d="l"},
+ [0x169DD]={d="l"},
+ [0x169DE]={d="l"},
+ [0x169DF]={d="l"},
+ [0x169E0]={d="l"},
+ [0x169E1]={d="l"},
+ [0x169E2]={d="l"},
+ [0x169E3]={d="l"},
+ [0x169E4]={d="l"},
+ [0x169E5]={d="l"},
+ [0x169E6]={d="l"},
+ [0x169E7]={d="l"},
+ [0x169E8]={d="l"},
+ [0x169E9]={d="l"},
+ [0x169EA]={d="l"},
+ [0x169EB]={d="l"},
+ [0x169EC]={d="l"},
+ [0x169ED]={d="l"},
+ [0x169EE]={d="l"},
+ [0x169EF]={d="l"},
+ [0x169F0]={d="l"},
+ [0x169F1]={d="l"},
+ [0x169F2]={d="l"},
+ [0x169F3]={d="l"},
+ [0x169F4]={d="l"},
+ [0x169F5]={d="l"},
+ [0x169F6]={d="l"},
+ [0x169F7]={d="l"},
+ [0x169F8]={d="l"},
+ [0x169F9]={d="l"},
+ [0x169FA]={d="l"},
+ [0x169FB]={d="l"},
+ [0x169FC]={d="l"},
+ [0x169FD]={d="l"},
+ [0x169FE]={d="l"},
+ [0x169FF]={d="l"},
+ [0x16A00]={d="l"},
+ [0x16A01]={d="l"},
+ [0x16A02]={d="l"},
+ [0x16A03]={d="l"},
+ [0x16A04]={d="l"},
+ [0x16A05]={d="l"},
+ [0x16A06]={d="l"},
+ [0x16A07]={d="l"},
+ [0x16A08]={d="l"},
+ [0x16A09]={d="l"},
+ [0x16A0A]={d="l"},
+ [0x16A0B]={d="l"},
+ [0x16A0C]={d="l"},
+ [0x16A0D]={d="l"},
+ [0x16A0E]={d="l"},
+ [0x16A0F]={d="l"},
+ [0x16A10]={d="l"},
+ [0x16A11]={d="l"},
+ [0x16A12]={d="l"},
+ [0x16A13]={d="l"},
+ [0x16A14]={d="l"},
+ [0x16A15]={d="l"},
+ [0x16A16]={d="l"},
+ [0x16A17]={d="l"},
+ [0x16A18]={d="l"},
+ [0x16A19]={d="l"},
+ [0x16A1A]={d="l"},
+ [0x16A1B]={d="l"},
+ [0x16A1C]={d="l"},
+ [0x16A1D]={d="l"},
+ [0x16A1E]={d="l"},
+ [0x16A1F]={d="l"},
+ [0x16A20]={d="l"},
+ [0x16A21]={d="l"},
+ [0x16A22]={d="l"},
+ [0x16A23]={d="l"},
+ [0x16A24]={d="l"},
+ [0x16A25]={d="l"},
+ [0x16A26]={d="l"},
+ [0x16A27]={d="l"},
+ [0x16A28]={d="l"},
+ [0x16A29]={d="l"},
+ [0x16A2A]={d="l"},
+ [0x16A2B]={d="l"},
+ [0x16A2C]={d="l"},
+ [0x16A2D]={d="l"},
+ [0x16A2E]={d="l"},
+ [0x16A2F]={d="l"},
+ [0x16A30]={d="l"},
+ [0x16A31]={d="l"},
+ [0x16A32]={d="l"},
+ [0x16A33]={d="l"},
+ [0x16A34]={d="l"},
+ [0x16A35]={d="l"},
+ [0x16A36]={d="l"},
+ [0x16A37]={d="l"},
+ [0x16A38]={d="l"},
+ [0x16A40]={d="l"},
+ [0x16A41]={d="l"},
+ [0x16A42]={d="l"},
+ [0x16A43]={d="l"},
+ [0x16A44]={d="l"},
+ [0x16A45]={d="l"},
+ [0x16A46]={d="l"},
+ [0x16A47]={d="l"},
+ [0x16A48]={d="l"},
+ [0x16A49]={d="l"},
+ [0x16A4A]={d="l"},
+ [0x16A4B]={d="l"},
+ [0x16A4C]={d="l"},
+ [0x16A4D]={d="l"},
+ [0x16A4E]={d="l"},
+ [0x16A4F]={d="l"},
+ [0x16A50]={d="l"},
+ [0x16A51]={d="l"},
+ [0x16A52]={d="l"},
+ [0x16A53]={d="l"},
+ [0x16A54]={d="l"},
+ [0x16A55]={d="l"},
+ [0x16A56]={d="l"},
+ [0x16A57]={d="l"},
+ [0x16A58]={d="l"},
+ [0x16A59]={d="l"},
+ [0x16A5A]={d="l"},
+ [0x16A5B]={d="l"},
+ [0x16A5C]={d="l"},
+ [0x16A5D]={d="l"},
+ [0x16A5E]={d="l"},
+ [0x16A60]={d="l"},
+ [0x16A61]={d="l"},
+ [0x16A62]={d="l"},
+ [0x16A63]={d="l"},
+ [0x16A64]={d="l"},
+ [0x16A65]={d="l"},
+ [0x16A66]={d="l"},
+ [0x16A67]={d="l"},
+ [0x16A68]={d="l"},
+ [0x16A69]={d="l"},
+ [0x16A6E]={d="l"},
+ [0x16A6F]={d="l"},
+ [0x16A70]={d="l"},
+ [0x16A71]={d="l"},
+ [0x16A72]={d="l"},
+ [0x16A73]={d="l"},
+ [0x16A74]={d="l"},
+ [0x16A75]={d="l"},
+ [0x16A76]={d="l"},
+ [0x16A77]={d="l"},
+ [0x16A78]={d="l"},
+ [0x16A79]={d="l"},
+ [0x16A7A]={d="l"},
+ [0x16A7B]={d="l"},
+ [0x16A7C]={d="l"},
+ [0x16A7D]={d="l"},
+ [0x16A7E]={d="l"},
+ [0x16A7F]={d="l"},
+ [0x16A80]={d="l"},
+ [0x16A81]={d="l"},
+ [0x16A82]={d="l"},
+ [0x16A83]={d="l"},
+ [0x16A84]={d="l"},
+ [0x16A85]={d="l"},
+ [0x16A86]={d="l"},
+ [0x16A87]={d="l"},
+ [0x16A88]={d="l"},
+ [0x16A89]={d="l"},
+ [0x16A8A]={d="l"},
+ [0x16A8B]={d="l"},
+ [0x16A8C]={d="l"},
+ [0x16A8D]={d="l"},
+ [0x16A8E]={d="l"},
+ [0x16A8F]={d="l"},
+ [0x16A90]={d="l"},
+ [0x16A91]={d="l"},
+ [0x16A92]={d="l"},
+ [0x16A93]={d="l"},
+ [0x16A94]={d="l"},
+ [0x16A95]={d="l"},
+ [0x16A96]={d="l"},
+ [0x16A97]={d="l"},
+ [0x16A98]={d="l"},
+ [0x16A99]={d="l"},
+ [0x16A9A]={d="l"},
+ [0x16A9B]={d="l"},
+ [0x16A9C]={d="l"},
+ [0x16A9D]={d="l"},
+ [0x16A9E]={d="l"},
+ [0x16A9F]={d="l"},
+ [0x16AA0]={d="l"},
+ [0x16AA1]={d="l"},
+ [0x16AA2]={d="l"},
+ [0x16AA3]={d="l"},
+ [0x16AA4]={d="l"},
+ [0x16AA5]={d="l"},
+ [0x16AA6]={d="l"},
+ [0x16AA7]={d="l"},
+ [0x16AA8]={d="l"},
+ [0x16AA9]={d="l"},
+ [0x16AAA]={d="l"},
+ [0x16AAB]={d="l"},
+ [0x16AAC]={d="l"},
+ [0x16AAD]={d="l"},
+ [0x16AAE]={d="l"},
+ [0x16AAF]={d="l"},
+ [0x16AB0]={d="l"},
+ [0x16AB1]={d="l"},
+ [0x16AB2]={d="l"},
+ [0x16AB3]={d="l"},
+ [0x16AB4]={d="l"},
+ [0x16AB5]={d="l"},
+ [0x16AB6]={d="l"},
+ [0x16AB7]={d="l"},
+ [0x16AB8]={d="l"},
+ [0x16AB9]={d="l"},
+ [0x16ABA]={d="l"},
+ [0x16ABB]={d="l"},
+ [0x16ABC]={d="l"},
+ [0x16ABD]={d="l"},
+ [0x16ABE]={d="l"},
+ [0x16AC0]={d="l"},
+ [0x16AC1]={d="l"},
+ [0x16AC2]={d="l"},
+ [0x16AC3]={d="l"},
+ [0x16AC4]={d="l"},
+ [0x16AC5]={d="l"},
+ [0x16AC6]={d="l"},
+ [0x16AC7]={d="l"},
+ [0x16AC8]={d="l"},
+ [0x16AC9]={d="l"},
+ [0x16AD0]={d="l"},
+ [0x16AD1]={d="l"},
+ [0x16AD2]={d="l"},
+ [0x16AD3]={d="l"},
+ [0x16AD4]={d="l"},
+ [0x16AD5]={d="l"},
+ [0x16AD6]={d="l"},
+ [0x16AD7]={d="l"},
+ [0x16AD8]={d="l"},
+ [0x16AD9]={d="l"},
+ [0x16ADA]={d="l"},
+ [0x16ADB]={d="l"},
+ [0x16ADC]={d="l"},
+ [0x16ADD]={d="l"},
+ [0x16ADE]={d="l"},
+ [0x16ADF]={d="l"},
+ [0x16AE0]={d="l"},
+ [0x16AE1]={d="l"},
+ [0x16AE2]={d="l"},
+ [0x16AE3]={d="l"},
+ [0x16AE4]={d="l"},
+ [0x16AE5]={d="l"},
+ [0x16AE6]={d="l"},
+ [0x16AE7]={d="l"},
+ [0x16AE8]={d="l"},
+ [0x16AE9]={d="l"},
+ [0x16AEA]={d="l"},
+ [0x16AEB]={d="l"},
+ [0x16AEC]={d="l"},
+ [0x16AED]={d="l"},
+ [0x16AF0]={d="nsm"},
+ [0x16AF1]={d="nsm"},
+ [0x16AF2]={d="nsm"},
+ [0x16AF3]={d="nsm"},
+ [0x16AF4]={d="nsm"},
+ [0x16AF5]={d="l"},
+ [0x16B00]={d="l"},
+ [0x16B01]={d="l"},
+ [0x16B02]={d="l"},
+ [0x16B03]={d="l"},
+ [0x16B04]={d="l"},
+ [0x16B05]={d="l"},
+ [0x16B06]={d="l"},
+ [0x16B07]={d="l"},
+ [0x16B08]={d="l"},
+ [0x16B09]={d="l"},
+ [0x16B0A]={d="l"},
+ [0x16B0B]={d="l"},
+ [0x16B0C]={d="l"},
+ [0x16B0D]={d="l"},
+ [0x16B0E]={d="l"},
+ [0x16B0F]={d="l"},
+ [0x16B10]={d="l"},
+ [0x16B11]={d="l"},
+ [0x16B12]={d="l"},
+ [0x16B13]={d="l"},
+ [0x16B14]={d="l"},
+ [0x16B15]={d="l"},
+ [0x16B16]={d="l"},
+ [0x16B17]={d="l"},
+ [0x16B18]={d="l"},
+ [0x16B19]={d="l"},
+ [0x16B1A]={d="l"},
+ [0x16B1B]={d="l"},
+ [0x16B1C]={d="l"},
+ [0x16B1D]={d="l"},
+ [0x16B1E]={d="l"},
+ [0x16B1F]={d="l"},
+ [0x16B20]={d="l"},
+ [0x16B21]={d="l"},
+ [0x16B22]={d="l"},
+ [0x16B23]={d="l"},
+ [0x16B24]={d="l"},
+ [0x16B25]={d="l"},
+ [0x16B26]={d="l"},
+ [0x16B27]={d="l"},
+ [0x16B28]={d="l"},
+ [0x16B29]={d="l"},
+ [0x16B2A]={d="l"},
+ [0x16B2B]={d="l"},
+ [0x16B2C]={d="l"},
+ [0x16B2D]={d="l"},
+ [0x16B2E]={d="l"},
+ [0x16B2F]={d="l"},
+ [0x16B30]={d="nsm"},
+ [0x16B31]={d="nsm"},
+ [0x16B32]={d="nsm"},
+ [0x16B33]={d="nsm"},
+ [0x16B34]={d="nsm"},
+ [0x16B35]={d="nsm"},
+ [0x16B36]={d="nsm"},
+ [0x16B37]={d="l"},
+ [0x16B38]={d="l"},
+ [0x16B39]={d="l"},
+ [0x16B3A]={d="l"},
+ [0x16B3B]={d="l"},
+ [0x16B3C]={d="l"},
+ [0x16B3D]={d="l"},
+ [0x16B3E]={d="l"},
+ [0x16B3F]={d="l"},
+ [0x16B40]={d="l"},
+ [0x16B41]={d="l"},
+ [0x16B42]={d="l"},
+ [0x16B43]={d="l"},
+ [0x16B44]={d="l"},
+ [0x16B45]={d="l"},
+ [0x16B50]={d="l"},
+ [0x16B51]={d="l"},
+ [0x16B52]={d="l"},
+ [0x16B53]={d="l"},
+ [0x16B54]={d="l"},
+ [0x16B55]={d="l"},
+ [0x16B56]={d="l"},
+ [0x16B57]={d="l"},
+ [0x16B58]={d="l"},
+ [0x16B59]={d="l"},
+ [0x16B5B]={d="l"},
+ [0x16B5C]={d="l"},
+ [0x16B5D]={d="l"},
+ [0x16B5E]={d="l"},
+ [0x16B5F]={d="l"},
+ [0x16B60]={d="l"},
+ [0x16B61]={d="l"},
+ [0x16B63]={d="l"},
+ [0x16B64]={d="l"},
+ [0x16B65]={d="l"},
+ [0x16B66]={d="l"},
+ [0x16B67]={d="l"},
+ [0x16B68]={d="l"},
+ [0x16B69]={d="l"},
+ [0x16B6A]={d="l"},
+ [0x16B6B]={d="l"},
+ [0x16B6C]={d="l"},
+ [0x16B6D]={d="l"},
+ [0x16B6E]={d="l"},
+ [0x16B6F]={d="l"},
+ [0x16B70]={d="l"},
+ [0x16B71]={d="l"},
+ [0x16B72]={d="l"},
+ [0x16B73]={d="l"},
+ [0x16B74]={d="l"},
+ [0x16B75]={d="l"},
+ [0x16B76]={d="l"},
+ [0x16B77]={d="l"},
+ [0x16B7D]={d="l"},
+ [0x16B7E]={d="l"},
+ [0x16B7F]={d="l"},
+ [0x16B80]={d="l"},
+ [0x16B81]={d="l"},
+ [0x16B82]={d="l"},
+ [0x16B83]={d="l"},
+ [0x16B84]={d="l"},
+ [0x16B85]={d="l"},
+ [0x16B86]={d="l"},
+ [0x16B87]={d="l"},
+ [0x16B88]={d="l"},
+ [0x16B89]={d="l"},
+ [0x16B8A]={d="l"},
+ [0x16B8B]={d="l"},
+ [0x16B8C]={d="l"},
+ [0x16B8D]={d="l"},
+ [0x16B8E]={d="l"},
+ [0x16B8F]={d="l"},
+ [0x16E40]={d="l"},
+ [0x16E41]={d="l"},
+ [0x16E42]={d="l"},
+ [0x16E43]={d="l"},
+ [0x16E44]={d="l"},
+ [0x16E45]={d="l"},
+ [0x16E46]={d="l"},
+ [0x16E47]={d="l"},
+ [0x16E48]={d="l"},
+ [0x16E49]={d="l"},
+ [0x16E4A]={d="l"},
+ [0x16E4B]={d="l"},
+ [0x16E4C]={d="l"},
+ [0x16E4D]={d="l"},
+ [0x16E4E]={d="l"},
+ [0x16E4F]={d="l"},
+ [0x16E50]={d="l"},
+ [0x16E51]={d="l"},
+ [0x16E52]={d="l"},
+ [0x16E53]={d="l"},
+ [0x16E54]={d="l"},
+ [0x16E55]={d="l"},
+ [0x16E56]={d="l"},
+ [0x16E57]={d="l"},
+ [0x16E58]={d="l"},
+ [0x16E59]={d="l"},
+ [0x16E5A]={d="l"},
+ [0x16E5B]={d="l"},
+ [0x16E5C]={d="l"},
+ [0x16E5D]={d="l"},
+ [0x16E5E]={d="l"},
+ [0x16E5F]={d="l"},
+ [0x16E60]={d="l"},
+ [0x16E61]={d="l"},
+ [0x16E62]={d="l"},
+ [0x16E63]={d="l"},
+ [0x16E64]={d="l"},
+ [0x16E65]={d="l"},
+ [0x16E66]={d="l"},
+ [0x16E67]={d="l"},
+ [0x16E68]={d="l"},
+ [0x16E69]={d="l"},
+ [0x16E6A]={d="l"},
+ [0x16E6B]={d="l"},
+ [0x16E6C]={d="l"},
+ [0x16E6D]={d="l"},
+ [0x16E6E]={d="l"},
+ [0x16E6F]={d="l"},
+ [0x16E70]={d="l"},
+ [0x16E71]={d="l"},
+ [0x16E72]={d="l"},
+ [0x16E73]={d="l"},
+ [0x16E74]={d="l"},
+ [0x16E75]={d="l"},
+ [0x16E76]={d="l"},
+ [0x16E77]={d="l"},
+ [0x16E78]={d="l"},
+ [0x16E79]={d="l"},
+ [0x16E7A]={d="l"},
+ [0x16E7B]={d="l"},
+ [0x16E7C]={d="l"},
+ [0x16E7D]={d="l"},
+ [0x16E7E]={d="l"},
+ [0x16E7F]={d="l"},
+ [0x16E80]={d="l"},
+ [0x16E81]={d="l"},
+ [0x16E82]={d="l"},
+ [0x16E83]={d="l"},
+ [0x16E84]={d="l"},
+ [0x16E85]={d="l"},
+ [0x16E86]={d="l"},
+ [0x16E87]={d="l"},
+ [0x16E88]={d="l"},
+ [0x16E89]={d="l"},
+ [0x16E8A]={d="l"},
+ [0x16E8B]={d="l"},
+ [0x16E8C]={d="l"},
+ [0x16E8D]={d="l"},
+ [0x16E8E]={d="l"},
+ [0x16E8F]={d="l"},
+ [0x16E90]={d="l"},
+ [0x16E91]={d="l"},
+ [0x16E92]={d="l"},
+ [0x16E93]={d="l"},
+ [0x16E94]={d="l"},
+ [0x16E95]={d="l"},
+ [0x16E96]={d="l"},
+ [0x16E97]={d="l"},
+ [0x16E98]={d="l"},
+ [0x16E99]={d="l"},
+ [0x16E9A]={d="l"},
+ [0x16F00]={d="l"},
+ [0x16F01]={d="l"},
+ [0x16F02]={d="l"},
+ [0x16F03]={d="l"},
+ [0x16F04]={d="l"},
+ [0x16F05]={d="l"},
+ [0x16F06]={d="l"},
+ [0x16F07]={d="l"},
+ [0x16F08]={d="l"},
+ [0x16F09]={d="l"},
+ [0x16F0A]={d="l"},
+ [0x16F0B]={d="l"},
+ [0x16F0C]={d="l"},
+ [0x16F0D]={d="l"},
+ [0x16F0E]={d="l"},
+ [0x16F0F]={d="l"},
+ [0x16F10]={d="l"},
+ [0x16F11]={d="l"},
+ [0x16F12]={d="l"},
+ [0x16F13]={d="l"},
+ [0x16F14]={d="l"},
+ [0x16F15]={d="l"},
+ [0x16F16]={d="l"},
+ [0x16F17]={d="l"},
+ [0x16F18]={d="l"},
+ [0x16F19]={d="l"},
+ [0x16F1A]={d="l"},
+ [0x16F1B]={d="l"},
+ [0x16F1C]={d="l"},
+ [0x16F1D]={d="l"},
+ [0x16F1E]={d="l"},
+ [0x16F1F]={d="l"},
+ [0x16F20]={d="l"},
+ [0x16F21]={d="l"},
+ [0x16F22]={d="l"},
+ [0x16F23]={d="l"},
+ [0x16F24]={d="l"},
+ [0x16F25]={d="l"},
+ [0x16F26]={d="l"},
+ [0x16F27]={d="l"},
+ [0x16F28]={d="l"},
+ [0x16F29]={d="l"},
+ [0x16F2A]={d="l"},
+ [0x16F2B]={d="l"},
+ [0x16F2C]={d="l"},
+ [0x16F2D]={d="l"},
+ [0x16F2E]={d="l"},
+ [0x16F2F]={d="l"},
+ [0x16F30]={d="l"},
+ [0x16F31]={d="l"},
+ [0x16F32]={d="l"},
+ [0x16F33]={d="l"},
+ [0x16F34]={d="l"},
+ [0x16F35]={d="l"},
+ [0x16F36]={d="l"},
+ [0x16F37]={d="l"},
+ [0x16F38]={d="l"},
+ [0x16F39]={d="l"},
+ [0x16F3A]={d="l"},
+ [0x16F3B]={d="l"},
+ [0x16F3C]={d="l"},
+ [0x16F3D]={d="l"},
+ [0x16F3E]={d="l"},
+ [0x16F3F]={d="l"},
+ [0x16F40]={d="l"},
+ [0x16F41]={d="l"},
+ [0x16F42]={d="l"},
+ [0x16F43]={d="l"},
+ [0x16F44]={d="l"},
+ [0x16F45]={d="l"},
+ [0x16F46]={d="l"},
+ [0x16F47]={d="l"},
+ [0x16F48]={d="l"},
+ [0x16F49]={d="l"},
+ [0x16F4A]={d="l"},
+ [0x16F4F]={d="nsm"},
+ [0x16F50]={d="l"},
+ [0x16F51]={d="l"},
+ [0x16F52]={d="l"},
+ [0x16F53]={d="l"},
+ [0x16F54]={d="l"},
+ [0x16F55]={d="l"},
+ [0x16F56]={d="l"},
+ [0x16F57]={d="l"},
+ [0x16F58]={d="l"},
+ [0x16F59]={d="l"},
+ [0x16F5A]={d="l"},
+ [0x16F5B]={d="l"},
+ [0x16F5C]={d="l"},
+ [0x16F5D]={d="l"},
+ [0x16F5E]={d="l"},
+ [0x16F5F]={d="l"},
+ [0x16F60]={d="l"},
+ [0x16F61]={d="l"},
+ [0x16F62]={d="l"},
+ [0x16F63]={d="l"},
+ [0x16F64]={d="l"},
+ [0x16F65]={d="l"},
+ [0x16F66]={d="l"},
+ [0x16F67]={d="l"},
+ [0x16F68]={d="l"},
+ [0x16F69]={d="l"},
+ [0x16F6A]={d="l"},
+ [0x16F6B]={d="l"},
+ [0x16F6C]={d="l"},
+ [0x16F6D]={d="l"},
+ [0x16F6E]={d="l"},
+ [0x16F6F]={d="l"},
+ [0x16F70]={d="l"},
+ [0x16F71]={d="l"},
+ [0x16F72]={d="l"},
+ [0x16F73]={d="l"},
+ [0x16F74]={d="l"},
+ [0x16F75]={d="l"},
+ [0x16F76]={d="l"},
+ [0x16F77]={d="l"},
+ [0x16F78]={d="l"},
+ [0x16F79]={d="l"},
+ [0x16F7A]={d="l"},
+ [0x16F7B]={d="l"},
+ [0x16F7C]={d="l"},
+ [0x16F7D]={d="l"},
+ [0x16F7E]={d="l"},
+ [0x16F7F]={d="l"},
+ [0x16F80]={d="l"},
+ [0x16F81]={d="l"},
+ [0x16F82]={d="l"},
+ [0x16F83]={d="l"},
+ [0x16F84]={d="l"},
+ [0x16F85]={d="l"},
+ [0x16F86]={d="l"},
+ [0x16F87]={d="l"},
+ [0x16F8F]={d="nsm"},
+ [0x16F90]={d="nsm"},
+ [0x16F91]={d="nsm"},
+ [0x16F92]={d="nsm"},
+ [0x16F93]={d="l"},
+ [0x16F94]={d="l"},
+ [0x16F95]={d="l"},
+ [0x16F96]={d="l"},
+ [0x16F97]={d="l"},
+ [0x16F98]={d="l"},
+ [0x16F99]={d="l"},
+ [0x16F9A]={d="l"},
+ [0x16F9B]={d="l"},
+ [0x16F9C]={d="l"},
+ [0x16F9D]={d="l"},
+ [0x16F9E]={d="l"},
+ [0x16F9F]={d="l"},
+ [0x16FE0]={d="l"},
+ [0x16FE1]={d="l"},
+ [0x16FE2]={d="on"},
+ [0x16FE3]={d="l"},
+ [0x16FE4]={d="nsm"},
+ [0x16FF0]={d="l"},
+ [0x16FF1]={d="l"},
+ [0x18800]={d="l"},
+ [0x18801]={d="l"},
+ [0x18802]={d="l"},
+ [0x18803]={d="l"},
+ [0x18804]={d="l"},
+ [0x18805]={d="l"},
+ [0x18806]={d="l"},
+ [0x18807]={d="l"},
+ [0x18808]={d="l"},
+ [0x18809]={d="l"},
+ [0x1880A]={d="l"},
+ [0x1880B]={d="l"},
+ [0x1880C]={d="l"},
+ [0x1880D]={d="l"},
+ [0x1880E]={d="l"},
+ [0x1880F]={d="l"},
+ [0x18810]={d="l"},
+ [0x18811]={d="l"},
+ [0x18812]={d="l"},
+ [0x18813]={d="l"},
+ [0x18814]={d="l"},
+ [0x18815]={d="l"},
+ [0x18816]={d="l"},
+ [0x18817]={d="l"},
+ [0x18818]={d="l"},
+ [0x18819]={d="l"},
+ [0x1881A]={d="l"},
+ [0x1881B]={d="l"},
+ [0x1881C]={d="l"},
+ [0x1881D]={d="l"},
+ [0x1881E]={d="l"},
+ [0x1881F]={d="l"},
+ [0x18820]={d="l"},
+ [0x18821]={d="l"},
+ [0x18822]={d="l"},
+ [0x18823]={d="l"},
+ [0x18824]={d="l"},
+ [0x18825]={d="l"},
+ [0x18826]={d="l"},
+ [0x18827]={d="l"},
+ [0x18828]={d="l"},
+ [0x18829]={d="l"},
+ [0x1882A]={d="l"},
+ [0x1882B]={d="l"},
+ [0x1882C]={d="l"},
+ [0x1882D]={d="l"},
+ [0x1882E]={d="l"},
+ [0x1882F]={d="l"},
+ [0x18830]={d="l"},
+ [0x18831]={d="l"},
+ [0x18832]={d="l"},
+ [0x18833]={d="l"},
+ [0x18834]={d="l"},
+ [0x18835]={d="l"},
+ [0x18836]={d="l"},
+ [0x18837]={d="l"},
+ [0x18838]={d="l"},
+ [0x18839]={d="l"},
+ [0x1883A]={d="l"},
+ [0x1883B]={d="l"},
+ [0x1883C]={d="l"},
+ [0x1883D]={d="l"},
+ [0x1883E]={d="l"},
+ [0x1883F]={d="l"},
+ [0x18840]={d="l"},
+ [0x18841]={d="l"},
+ [0x18842]={d="l"},
+ [0x18843]={d="l"},
+ [0x18844]={d="l"},
+ [0x18845]={d="l"},
+ [0x18846]={d="l"},
+ [0x18847]={d="l"},
+ [0x18848]={d="l"},
+ [0x18849]={d="l"},
+ [0x1884A]={d="l"},
+ [0x1884B]={d="l"},
+ [0x1884C]={d="l"},
+ [0x1884D]={d="l"},
+ [0x1884E]={d="l"},
+ [0x1884F]={d="l"},
+ [0x18850]={d="l"},
+ [0x18851]={d="l"},
+ [0x18852]={d="l"},
+ [0x18853]={d="l"},
+ [0x18854]={d="l"},
+ [0x18855]={d="l"},
+ [0x18856]={d="l"},
+ [0x18857]={d="l"},
+ [0x18858]={d="l"},
+ [0x18859]={d="l"},
+ [0x1885A]={d="l"},
+ [0x1885B]={d="l"},
+ [0x1885C]={d="l"},
+ [0x1885D]={d="l"},
+ [0x1885E]={d="l"},
+ [0x1885F]={d="l"},
+ [0x18860]={d="l"},
+ [0x18861]={d="l"},
+ [0x18862]={d="l"},
+ [0x18863]={d="l"},
+ [0x18864]={d="l"},
+ [0x18865]={d="l"},
+ [0x18866]={d="l"},
+ [0x18867]={d="l"},
+ [0x18868]={d="l"},
+ [0x18869]={d="l"},
+ [0x1886A]={d="l"},
+ [0x1886B]={d="l"},
+ [0x1886C]={d="l"},
+ [0x1886D]={d="l"},
+ [0x1886E]={d="l"},
+ [0x1886F]={d="l"},
+ [0x18870]={d="l"},
+ [0x18871]={d="l"},
+ [0x18872]={d="l"},
+ [0x18873]={d="l"},
+ [0x18874]={d="l"},
+ [0x18875]={d="l"},
+ [0x18876]={d="l"},
+ [0x18877]={d="l"},
+ [0x18878]={d="l"},
+ [0x18879]={d="l"},
+ [0x1887A]={d="l"},
+ [0x1887B]={d="l"},
+ [0x1887C]={d="l"},
+ [0x1887D]={d="l"},
+ [0x1887E]={d="l"},
+ [0x1887F]={d="l"},
+ [0x18880]={d="l"},
+ [0x18881]={d="l"},
+ [0x18882]={d="l"},
+ [0x18883]={d="l"},
+ [0x18884]={d="l"},
+ [0x18885]={d="l"},
+ [0x18886]={d="l"},
+ [0x18887]={d="l"},
+ [0x18888]={d="l"},
+ [0x18889]={d="l"},
+ [0x1888A]={d="l"},
+ [0x1888B]={d="l"},
+ [0x1888C]={d="l"},
+ [0x1888D]={d="l"},
+ [0x1888E]={d="l"},
+ [0x1888F]={d="l"},
+ [0x18890]={d="l"},
+ [0x18891]={d="l"},
+ [0x18892]={d="l"},
+ [0x18893]={d="l"},
+ [0x18894]={d="l"},
+ [0x18895]={d="l"},
+ [0x18896]={d="l"},
+ [0x18897]={d="l"},
+ [0x18898]={d="l"},
+ [0x18899]={d="l"},
+ [0x1889A]={d="l"},
+ [0x1889B]={d="l"},
+ [0x1889C]={d="l"},
+ [0x1889D]={d="l"},
+ [0x1889E]={d="l"},
+ [0x1889F]={d="l"},
+ [0x188A0]={d="l"},
+ [0x188A1]={d="l"},
+ [0x188A2]={d="l"},
+ [0x188A3]={d="l"},
+ [0x188A4]={d="l"},
+ [0x188A5]={d="l"},
+ [0x188A6]={d="l"},
+ [0x188A7]={d="l"},
+ [0x188A8]={d="l"},
+ [0x188A9]={d="l"},
+ [0x188AA]={d="l"},
+ [0x188AB]={d="l"},
+ [0x188AC]={d="l"},
+ [0x188AD]={d="l"},
+ [0x188AE]={d="l"},
+ [0x188AF]={d="l"},
+ [0x188B0]={d="l"},
+ [0x188B1]={d="l"},
+ [0x188B2]={d="l"},
+ [0x188B3]={d="l"},
+ [0x188B4]={d="l"},
+ [0x188B5]={d="l"},
+ [0x188B6]={d="l"},
+ [0x188B7]={d="l"},
+ [0x188B8]={d="l"},
+ [0x188B9]={d="l"},
+ [0x188BA]={d="l"},
+ [0x188BB]={d="l"},
+ [0x188BC]={d="l"},
+ [0x188BD]={d="l"},
+ [0x188BE]={d="l"},
+ [0x188BF]={d="l"},
+ [0x188C0]={d="l"},
+ [0x188C1]={d="l"},
+ [0x188C2]={d="l"},
+ [0x188C3]={d="l"},
+ [0x188C4]={d="l"},
+ [0x188C5]={d="l"},
+ [0x188C6]={d="l"},
+ [0x188C7]={d="l"},
+ [0x188C8]={d="l"},
+ [0x188C9]={d="l"},
+ [0x188CA]={d="l"},
+ [0x188CB]={d="l"},
+ [0x188CC]={d="l"},
+ [0x188CD]={d="l"},
+ [0x188CE]={d="l"},
+ [0x188CF]={d="l"},
+ [0x188D0]={d="l"},
+ [0x188D1]={d="l"},
+ [0x188D2]={d="l"},
+ [0x188D3]={d="l"},
+ [0x188D4]={d="l"},
+ [0x188D5]={d="l"},
+ [0x188D6]={d="l"},
+ [0x188D7]={d="l"},
+ [0x188D8]={d="l"},
+ [0x188D9]={d="l"},
+ [0x188DA]={d="l"},
+ [0x188DB]={d="l"},
+ [0x188DC]={d="l"},
+ [0x188DD]={d="l"},
+ [0x188DE]={d="l"},
+ [0x188DF]={d="l"},
+ [0x188E0]={d="l"},
+ [0x188E1]={d="l"},
+ [0x188E2]={d="l"},
+ [0x188E3]={d="l"},
+ [0x188E4]={d="l"},
+ [0x188E5]={d="l"},
+ [0x188E6]={d="l"},
+ [0x188E7]={d="l"},
+ [0x188E8]={d="l"},
+ [0x188E9]={d="l"},
+ [0x188EA]={d="l"},
+ [0x188EB]={d="l"},
+ [0x188EC]={d="l"},
+ [0x188ED]={d="l"},
+ [0x188EE]={d="l"},
+ [0x188EF]={d="l"},
+ [0x188F0]={d="l"},
+ [0x188F1]={d="l"},
+ [0x188F2]={d="l"},
+ [0x188F3]={d="l"},
+ [0x188F4]={d="l"},
+ [0x188F5]={d="l"},
+ [0x188F6]={d="l"},
+ [0x188F7]={d="l"},
+ [0x188F8]={d="l"},
+ [0x188F9]={d="l"},
+ [0x188FA]={d="l"},
+ [0x188FB]={d="l"},
+ [0x188FC]={d="l"},
+ [0x188FD]={d="l"},
+ [0x188FE]={d="l"},
+ [0x188FF]={d="l"},
+ [0x18900]={d="l"},
+ [0x18901]={d="l"},
+ [0x18902]={d="l"},
+ [0x18903]={d="l"},
+ [0x18904]={d="l"},
+ [0x18905]={d="l"},
+ [0x18906]={d="l"},
+ [0x18907]={d="l"},
+ [0x18908]={d="l"},
+ [0x18909]={d="l"},
+ [0x1890A]={d="l"},
+ [0x1890B]={d="l"},
+ [0x1890C]={d="l"},
+ [0x1890D]={d="l"},
+ [0x1890E]={d="l"},
+ [0x1890F]={d="l"},
+ [0x18910]={d="l"},
+ [0x18911]={d="l"},
+ [0x18912]={d="l"},
+ [0x18913]={d="l"},
+ [0x18914]={d="l"},
+ [0x18915]={d="l"},
+ [0x18916]={d="l"},
+ [0x18917]={d="l"},
+ [0x18918]={d="l"},
+ [0x18919]={d="l"},
+ [0x1891A]={d="l"},
+ [0x1891B]={d="l"},
+ [0x1891C]={d="l"},
+ [0x1891D]={d="l"},
+ [0x1891E]={d="l"},
+ [0x1891F]={d="l"},
+ [0x18920]={d="l"},
+ [0x18921]={d="l"},
+ [0x18922]={d="l"},
+ [0x18923]={d="l"},
+ [0x18924]={d="l"},
+ [0x18925]={d="l"},
+ [0x18926]={d="l"},
+ [0x18927]={d="l"},
+ [0x18928]={d="l"},
+ [0x18929]={d="l"},
+ [0x1892A]={d="l"},
+ [0x1892B]={d="l"},
+ [0x1892C]={d="l"},
+ [0x1892D]={d="l"},
+ [0x1892E]={d="l"},
+ [0x1892F]={d="l"},
+ [0x18930]={d="l"},
+ [0x18931]={d="l"},
+ [0x18932]={d="l"},
+ [0x18933]={d="l"},
+ [0x18934]={d="l"},
+ [0x18935]={d="l"},
+ [0x18936]={d="l"},
+ [0x18937]={d="l"},
+ [0x18938]={d="l"},
+ [0x18939]={d="l"},
+ [0x1893A]={d="l"},
+ [0x1893B]={d="l"},
+ [0x1893C]={d="l"},
+ [0x1893D]={d="l"},
+ [0x1893E]={d="l"},
+ [0x1893F]={d="l"},
+ [0x18940]={d="l"},
+ [0x18941]={d="l"},
+ [0x18942]={d="l"},
+ [0x18943]={d="l"},
+ [0x18944]={d="l"},
+ [0x18945]={d="l"},
+ [0x18946]={d="l"},
+ [0x18947]={d="l"},
+ [0x18948]={d="l"},
+ [0x18949]={d="l"},
+ [0x1894A]={d="l"},
+ [0x1894B]={d="l"},
+ [0x1894C]={d="l"},
+ [0x1894D]={d="l"},
+ [0x1894E]={d="l"},
+ [0x1894F]={d="l"},
+ [0x18950]={d="l"},
+ [0x18951]={d="l"},
+ [0x18952]={d="l"},
+ [0x18953]={d="l"},
+ [0x18954]={d="l"},
+ [0x18955]={d="l"},
+ [0x18956]={d="l"},
+ [0x18957]={d="l"},
+ [0x18958]={d="l"},
+ [0x18959]={d="l"},
+ [0x1895A]={d="l"},
+ [0x1895B]={d="l"},
+ [0x1895C]={d="l"},
+ [0x1895D]={d="l"},
+ [0x1895E]={d="l"},
+ [0x1895F]={d="l"},
+ [0x18960]={d="l"},
+ [0x18961]={d="l"},
+ [0x18962]={d="l"},
+ [0x18963]={d="l"},
+ [0x18964]={d="l"},
+ [0x18965]={d="l"},
+ [0x18966]={d="l"},
+ [0x18967]={d="l"},
+ [0x18968]={d="l"},
+ [0x18969]={d="l"},
+ [0x1896A]={d="l"},
+ [0x1896B]={d="l"},
+ [0x1896C]={d="l"},
+ [0x1896D]={d="l"},
+ [0x1896E]={d="l"},
+ [0x1896F]={d="l"},
+ [0x18970]={d="l"},
+ [0x18971]={d="l"},
+ [0x18972]={d="l"},
+ [0x18973]={d="l"},
+ [0x18974]={d="l"},
+ [0x18975]={d="l"},
+ [0x18976]={d="l"},
+ [0x18977]={d="l"},
+ [0x18978]={d="l"},
+ [0x18979]={d="l"},
+ [0x1897A]={d="l"},
+ [0x1897B]={d="l"},
+ [0x1897C]={d="l"},
+ [0x1897D]={d="l"},
+ [0x1897E]={d="l"},
+ [0x1897F]={d="l"},
+ [0x18980]={d="l"},
+ [0x18981]={d="l"},
+ [0x18982]={d="l"},
+ [0x18983]={d="l"},
+ [0x18984]={d="l"},
+ [0x18985]={d="l"},
+ [0x18986]={d="l"},
+ [0x18987]={d="l"},
+ [0x18988]={d="l"},
+ [0x18989]={d="l"},
+ [0x1898A]={d="l"},
+ [0x1898B]={d="l"},
+ [0x1898C]={d="l"},
+ [0x1898D]={d="l"},
+ [0x1898E]={d="l"},
+ [0x1898F]={d="l"},
+ [0x18990]={d="l"},
+ [0x18991]={d="l"},
+ [0x18992]={d="l"},
+ [0x18993]={d="l"},
+ [0x18994]={d="l"},
+ [0x18995]={d="l"},
+ [0x18996]={d="l"},
+ [0x18997]={d="l"},
+ [0x18998]={d="l"},
+ [0x18999]={d="l"},
+ [0x1899A]={d="l"},
+ [0x1899B]={d="l"},
+ [0x1899C]={d="l"},
+ [0x1899D]={d="l"},
+ [0x1899E]={d="l"},
+ [0x1899F]={d="l"},
+ [0x189A0]={d="l"},
+ [0x189A1]={d="l"},
+ [0x189A2]={d="l"},
+ [0x189A3]={d="l"},
+ [0x189A4]={d="l"},
+ [0x189A5]={d="l"},
+ [0x189A6]={d="l"},
+ [0x189A7]={d="l"},
+ [0x189A8]={d="l"},
+ [0x189A9]={d="l"},
+ [0x189AA]={d="l"},
+ [0x189AB]={d="l"},
+ [0x189AC]={d="l"},
+ [0x189AD]={d="l"},
+ [0x189AE]={d="l"},
+ [0x189AF]={d="l"},
+ [0x189B0]={d="l"},
+ [0x189B1]={d="l"},
+ [0x189B2]={d="l"},
+ [0x189B3]={d="l"},
+ [0x189B4]={d="l"},
+ [0x189B5]={d="l"},
+ [0x189B6]={d="l"},
+ [0x189B7]={d="l"},
+ [0x189B8]={d="l"},
+ [0x189B9]={d="l"},
+ [0x189BA]={d="l"},
+ [0x189BB]={d="l"},
+ [0x189BC]={d="l"},
+ [0x189BD]={d="l"},
+ [0x189BE]={d="l"},
+ [0x189BF]={d="l"},
+ [0x189C0]={d="l"},
+ [0x189C1]={d="l"},
+ [0x189C2]={d="l"},
+ [0x189C3]={d="l"},
+ [0x189C4]={d="l"},
+ [0x189C5]={d="l"},
+ [0x189C6]={d="l"},
+ [0x189C7]={d="l"},
+ [0x189C8]={d="l"},
+ [0x189C9]={d="l"},
+ [0x189CA]={d="l"},
+ [0x189CB]={d="l"},
+ [0x189CC]={d="l"},
+ [0x189CD]={d="l"},
+ [0x189CE]={d="l"},
+ [0x189CF]={d="l"},
+ [0x189D0]={d="l"},
+ [0x189D1]={d="l"},
+ [0x189D2]={d="l"},
+ [0x189D3]={d="l"},
+ [0x189D4]={d="l"},
+ [0x189D5]={d="l"},
+ [0x189D6]={d="l"},
+ [0x189D7]={d="l"},
+ [0x189D8]={d="l"},
+ [0x189D9]={d="l"},
+ [0x189DA]={d="l"},
+ [0x189DB]={d="l"},
+ [0x189DC]={d="l"},
+ [0x189DD]={d="l"},
+ [0x189DE]={d="l"},
+ [0x189DF]={d="l"},
+ [0x189E0]={d="l"},
+ [0x189E1]={d="l"},
+ [0x189E2]={d="l"},
+ [0x189E3]={d="l"},
+ [0x189E4]={d="l"},
+ [0x189E5]={d="l"},
+ [0x189E6]={d="l"},
+ [0x189E7]={d="l"},
+ [0x189E8]={d="l"},
+ [0x189E9]={d="l"},
+ [0x189EA]={d="l"},
+ [0x189EB]={d="l"},
+ [0x189EC]={d="l"},
+ [0x189ED]={d="l"},
+ [0x189EE]={d="l"},
+ [0x189EF]={d="l"},
+ [0x189F0]={d="l"},
+ [0x189F1]={d="l"},
+ [0x189F2]={d="l"},
+ [0x189F3]={d="l"},
+ [0x189F4]={d="l"},
+ [0x189F5]={d="l"},
+ [0x189F6]={d="l"},
+ [0x189F7]={d="l"},
+ [0x189F8]={d="l"},
+ [0x189F9]={d="l"},
+ [0x189FA]={d="l"},
+ [0x189FB]={d="l"},
+ [0x189FC]={d="l"},
+ [0x189FD]={d="l"},
+ [0x189FE]={d="l"},
+ [0x189FF]={d="l"},
+ [0x18A00]={d="l"},
+ [0x18A01]={d="l"},
+ [0x18A02]={d="l"},
+ [0x18A03]={d="l"},
+ [0x18A04]={d="l"},
+ [0x18A05]={d="l"},
+ [0x18A06]={d="l"},
+ [0x18A07]={d="l"},
+ [0x18A08]={d="l"},
+ [0x18A09]={d="l"},
+ [0x18A0A]={d="l"},
+ [0x18A0B]={d="l"},
+ [0x18A0C]={d="l"},
+ [0x18A0D]={d="l"},
+ [0x18A0E]={d="l"},
+ [0x18A0F]={d="l"},
+ [0x18A10]={d="l"},
+ [0x18A11]={d="l"},
+ [0x18A12]={d="l"},
+ [0x18A13]={d="l"},
+ [0x18A14]={d="l"},
+ [0x18A15]={d="l"},
+ [0x18A16]={d="l"},
+ [0x18A17]={d="l"},
+ [0x18A18]={d="l"},
+ [0x18A19]={d="l"},
+ [0x18A1A]={d="l"},
+ [0x18A1B]={d="l"},
+ [0x18A1C]={d="l"},
+ [0x18A1D]={d="l"},
+ [0x18A1E]={d="l"},
+ [0x18A1F]={d="l"},
+ [0x18A20]={d="l"},
+ [0x18A21]={d="l"},
+ [0x18A22]={d="l"},
+ [0x18A23]={d="l"},
+ [0x18A24]={d="l"},
+ [0x18A25]={d="l"},
+ [0x18A26]={d="l"},
+ [0x18A27]={d="l"},
+ [0x18A28]={d="l"},
+ [0x18A29]={d="l"},
+ [0x18A2A]={d="l"},
+ [0x18A2B]={d="l"},
+ [0x18A2C]={d="l"},
+ [0x18A2D]={d="l"},
+ [0x18A2E]={d="l"},
+ [0x18A2F]={d="l"},
+ [0x18A30]={d="l"},
+ [0x18A31]={d="l"},
+ [0x18A32]={d="l"},
+ [0x18A33]={d="l"},
+ [0x18A34]={d="l"},
+ [0x18A35]={d="l"},
+ [0x18A36]={d="l"},
+ [0x18A37]={d="l"},
+ [0x18A38]={d="l"},
+ [0x18A39]={d="l"},
+ [0x18A3A]={d="l"},
+ [0x18A3B]={d="l"},
+ [0x18A3C]={d="l"},
+ [0x18A3D]={d="l"},
+ [0x18A3E]={d="l"},
+ [0x18A3F]={d="l"},
+ [0x18A40]={d="l"},
+ [0x18A41]={d="l"},
+ [0x18A42]={d="l"},
+ [0x18A43]={d="l"},
+ [0x18A44]={d="l"},
+ [0x18A45]={d="l"},
+ [0x18A46]={d="l"},
+ [0x18A47]={d="l"},
+ [0x18A48]={d="l"},
+ [0x18A49]={d="l"},
+ [0x18A4A]={d="l"},
+ [0x18A4B]={d="l"},
+ [0x18A4C]={d="l"},
+ [0x18A4D]={d="l"},
+ [0x18A4E]={d="l"},
+ [0x18A4F]={d="l"},
+ [0x18A50]={d="l"},
+ [0x18A51]={d="l"},
+ [0x18A52]={d="l"},
+ [0x18A53]={d="l"},
+ [0x18A54]={d="l"},
+ [0x18A55]={d="l"},
+ [0x18A56]={d="l"},
+ [0x18A57]={d="l"},
+ [0x18A58]={d="l"},
+ [0x18A59]={d="l"},
+ [0x18A5A]={d="l"},
+ [0x18A5B]={d="l"},
+ [0x18A5C]={d="l"},
+ [0x18A5D]={d="l"},
+ [0x18A5E]={d="l"},
+ [0x18A5F]={d="l"},
+ [0x18A60]={d="l"},
+ [0x18A61]={d="l"},
+ [0x18A62]={d="l"},
+ [0x18A63]={d="l"},
+ [0x18A64]={d="l"},
+ [0x18A65]={d="l"},
+ [0x18A66]={d="l"},
+ [0x18A67]={d="l"},
+ [0x18A68]={d="l"},
+ [0x18A69]={d="l"},
+ [0x18A6A]={d="l"},
+ [0x18A6B]={d="l"},
+ [0x18A6C]={d="l"},
+ [0x18A6D]={d="l"},
+ [0x18A6E]={d="l"},
+ [0x18A6F]={d="l"},
+ [0x18A70]={d="l"},
+ [0x18A71]={d="l"},
+ [0x18A72]={d="l"},
+ [0x18A73]={d="l"},
+ [0x18A74]={d="l"},
+ [0x18A75]={d="l"},
+ [0x18A76]={d="l"},
+ [0x18A77]={d="l"},
+ [0x18A78]={d="l"},
+ [0x18A79]={d="l"},
+ [0x18A7A]={d="l"},
+ [0x18A7B]={d="l"},
+ [0x18A7C]={d="l"},
+ [0x18A7D]={d="l"},
+ [0x18A7E]={d="l"},
+ [0x18A7F]={d="l"},
+ [0x18A80]={d="l"},
+ [0x18A81]={d="l"},
+ [0x18A82]={d="l"},
+ [0x18A83]={d="l"},
+ [0x18A84]={d="l"},
+ [0x18A85]={d="l"},
+ [0x18A86]={d="l"},
+ [0x18A87]={d="l"},
+ [0x18A88]={d="l"},
+ [0x18A89]={d="l"},
+ [0x18A8A]={d="l"},
+ [0x18A8B]={d="l"},
+ [0x18A8C]={d="l"},
+ [0x18A8D]={d="l"},
+ [0x18A8E]={d="l"},
+ [0x18A8F]={d="l"},
+ [0x18A90]={d="l"},
+ [0x18A91]={d="l"},
+ [0x18A92]={d="l"},
+ [0x18A93]={d="l"},
+ [0x18A94]={d="l"},
+ [0x18A95]={d="l"},
+ [0x18A96]={d="l"},
+ [0x18A97]={d="l"},
+ [0x18A98]={d="l"},
+ [0x18A99]={d="l"},
+ [0x18A9A]={d="l"},
+ [0x18A9B]={d="l"},
+ [0x18A9C]={d="l"},
+ [0x18A9D]={d="l"},
+ [0x18A9E]={d="l"},
+ [0x18A9F]={d="l"},
+ [0x18AA0]={d="l"},
+ [0x18AA1]={d="l"},
+ [0x18AA2]={d="l"},
+ [0x18AA3]={d="l"},
+ [0x18AA4]={d="l"},
+ [0x18AA5]={d="l"},
+ [0x18AA6]={d="l"},
+ [0x18AA7]={d="l"},
+ [0x18AA8]={d="l"},
+ [0x18AA9]={d="l"},
+ [0x18AAA]={d="l"},
+ [0x18AAB]={d="l"},
+ [0x18AAC]={d="l"},
+ [0x18AAD]={d="l"},
+ [0x18AAE]={d="l"},
+ [0x18AAF]={d="l"},
+ [0x18AB0]={d="l"},
+ [0x18AB1]={d="l"},
+ [0x18AB2]={d="l"},
+ [0x18AB3]={d="l"},
+ [0x18AB4]={d="l"},
+ [0x18AB5]={d="l"},
+ [0x18AB6]={d="l"},
+ [0x18AB7]={d="l"},
+ [0x18AB8]={d="l"},
+ [0x18AB9]={d="l"},
+ [0x18ABA]={d="l"},
+ [0x18ABB]={d="l"},
+ [0x18ABC]={d="l"},
+ [0x18ABD]={d="l"},
+ [0x18ABE]={d="l"},
+ [0x18ABF]={d="l"},
+ [0x18AC0]={d="l"},
+ [0x18AC1]={d="l"},
+ [0x18AC2]={d="l"},
+ [0x18AC3]={d="l"},
+ [0x18AC4]={d="l"},
+ [0x18AC5]={d="l"},
+ [0x18AC6]={d="l"},
+ [0x18AC7]={d="l"},
+ [0x18AC8]={d="l"},
+ [0x18AC9]={d="l"},
+ [0x18ACA]={d="l"},
+ [0x18ACB]={d="l"},
+ [0x18ACC]={d="l"},
+ [0x18ACD]={d="l"},
+ [0x18ACE]={d="l"},
+ [0x18ACF]={d="l"},
+ [0x18AD0]={d="l"},
+ [0x18AD1]={d="l"},
+ [0x18AD2]={d="l"},
+ [0x18AD3]={d="l"},
+ [0x18AD4]={d="l"},
+ [0x18AD5]={d="l"},
+ [0x18AD6]={d="l"},
+ [0x18AD7]={d="l"},
+ [0x18AD8]={d="l"},
+ [0x18AD9]={d="l"},
+ [0x18ADA]={d="l"},
+ [0x18ADB]={d="l"},
+ [0x18ADC]={d="l"},
+ [0x18ADD]={d="l"},
+ [0x18ADE]={d="l"},
+ [0x18ADF]={d="l"},
+ [0x18AE0]={d="l"},
+ [0x18AE1]={d="l"},
+ [0x18AE2]={d="l"},
+ [0x18AE3]={d="l"},
+ [0x18AE4]={d="l"},
+ [0x18AE5]={d="l"},
+ [0x18AE6]={d="l"},
+ [0x18AE7]={d="l"},
+ [0x18AE8]={d="l"},
+ [0x18AE9]={d="l"},
+ [0x18AEA]={d="l"},
+ [0x18AEB]={d="l"},
+ [0x18AEC]={d="l"},
+ [0x18AED]={d="l"},
+ [0x18AEE]={d="l"},
+ [0x18AEF]={d="l"},
+ [0x18AF0]={d="l"},
+ [0x18AF1]={d="l"},
+ [0x18AF2]={d="l"},
+ [0x18AF3]={d="l"},
+ [0x18AF4]={d="l"},
+ [0x18AF5]={d="l"},
+ [0x18AF6]={d="l"},
+ [0x18AF7]={d="l"},
+ [0x18AF8]={d="l"},
+ [0x18AF9]={d="l"},
+ [0x18AFA]={d="l"},
+ [0x18AFB]={d="l"},
+ [0x18AFC]={d="l"},
+ [0x18AFD]={d="l"},
+ [0x18AFE]={d="l"},
+ [0x18AFF]={d="l"},
+ [0x18B00]={d="l"},
+ [0x18B01]={d="l"},
+ [0x18B02]={d="l"},
+ [0x18B03]={d="l"},
+ [0x18B04]={d="l"},
+ [0x18B05]={d="l"},
+ [0x18B06]={d="l"},
+ [0x18B07]={d="l"},
+ [0x18B08]={d="l"},
+ [0x18B09]={d="l"},
+ [0x18B0A]={d="l"},
+ [0x18B0B]={d="l"},
+ [0x18B0C]={d="l"},
+ [0x18B0D]={d="l"},
+ [0x18B0E]={d="l"},
+ [0x18B0F]={d="l"},
+ [0x18B10]={d="l"},
+ [0x18B11]={d="l"},
+ [0x18B12]={d="l"},
+ [0x18B13]={d="l"},
+ [0x18B14]={d="l"},
+ [0x18B15]={d="l"},
+ [0x18B16]={d="l"},
+ [0x18B17]={d="l"},
+ [0x18B18]={d="l"},
+ [0x18B19]={d="l"},
+ [0x18B1A]={d="l"},
+ [0x18B1B]={d="l"},
+ [0x18B1C]={d="l"},
+ [0x18B1D]={d="l"},
+ [0x18B1E]={d="l"},
+ [0x18B1F]={d="l"},
+ [0x18B20]={d="l"},
+ [0x18B21]={d="l"},
+ [0x18B22]={d="l"},
+ [0x18B23]={d="l"},
+ [0x18B24]={d="l"},
+ [0x18B25]={d="l"},
+ [0x18B26]={d="l"},
+ [0x18B27]={d="l"},
+ [0x18B28]={d="l"},
+ [0x18B29]={d="l"},
+ [0x18B2A]={d="l"},
+ [0x18B2B]={d="l"},
+ [0x18B2C]={d="l"},
+ [0x18B2D]={d="l"},
+ [0x18B2E]={d="l"},
+ [0x18B2F]={d="l"},
+ [0x18B30]={d="l"},
+ [0x18B31]={d="l"},
+ [0x18B32]={d="l"},
+ [0x18B33]={d="l"},
+ [0x18B34]={d="l"},
+ [0x18B35]={d="l"},
+ [0x18B36]={d="l"},
+ [0x18B37]={d="l"},
+ [0x18B38]={d="l"},
+ [0x18B39]={d="l"},
+ [0x18B3A]={d="l"},
+ [0x18B3B]={d="l"},
+ [0x18B3C]={d="l"},
+ [0x18B3D]={d="l"},
+ [0x18B3E]={d="l"},
+ [0x18B3F]={d="l"},
+ [0x18B40]={d="l"},
+ [0x18B41]={d="l"},
+ [0x18B42]={d="l"},
+ [0x18B43]={d="l"},
+ [0x18B44]={d="l"},
+ [0x18B45]={d="l"},
+ [0x18B46]={d="l"},
+ [0x18B47]={d="l"},
+ [0x18B48]={d="l"},
+ [0x18B49]={d="l"},
+ [0x18B4A]={d="l"},
+ [0x18B4B]={d="l"},
+ [0x18B4C]={d="l"},
+ [0x18B4D]={d="l"},
+ [0x18B4E]={d="l"},
+ [0x18B4F]={d="l"},
+ [0x18B50]={d="l"},
+ [0x18B51]={d="l"},
+ [0x18B52]={d="l"},
+ [0x18B53]={d="l"},
+ [0x18B54]={d="l"},
+ [0x18B55]={d="l"},
+ [0x18B56]={d="l"},
+ [0x18B57]={d="l"},
+ [0x18B58]={d="l"},
+ [0x18B59]={d="l"},
+ [0x18B5A]={d="l"},
+ [0x18B5B]={d="l"},
+ [0x18B5C]={d="l"},
+ [0x18B5D]={d="l"},
+ [0x18B5E]={d="l"},
+ [0x18B5F]={d="l"},
+ [0x18B60]={d="l"},
+ [0x18B61]={d="l"},
+ [0x18B62]={d="l"},
+ [0x18B63]={d="l"},
+ [0x18B64]={d="l"},
+ [0x18B65]={d="l"},
+ [0x18B66]={d="l"},
+ [0x18B67]={d="l"},
+ [0x18B68]={d="l"},
+ [0x18B69]={d="l"},
+ [0x18B6A]={d="l"},
+ [0x18B6B]={d="l"},
+ [0x18B6C]={d="l"},
+ [0x18B6D]={d="l"},
+ [0x18B6E]={d="l"},
+ [0x18B6F]={d="l"},
+ [0x18B70]={d="l"},
+ [0x18B71]={d="l"},
+ [0x18B72]={d="l"},
+ [0x18B73]={d="l"},
+ [0x18B74]={d="l"},
+ [0x18B75]={d="l"},
+ [0x18B76]={d="l"},
+ [0x18B77]={d="l"},
+ [0x18B78]={d="l"},
+ [0x18B79]={d="l"},
+ [0x18B7A]={d="l"},
+ [0x18B7B]={d="l"},
+ [0x18B7C]={d="l"},
+ [0x18B7D]={d="l"},
+ [0x18B7E]={d="l"},
+ [0x18B7F]={d="l"},
+ [0x18B80]={d="l"},
+ [0x18B81]={d="l"},
+ [0x18B82]={d="l"},
+ [0x18B83]={d="l"},
+ [0x18B84]={d="l"},
+ [0x18B85]={d="l"},
+ [0x18B86]={d="l"},
+ [0x18B87]={d="l"},
+ [0x18B88]={d="l"},
+ [0x18B89]={d="l"},
+ [0x18B8A]={d="l"},
+ [0x18B8B]={d="l"},
+ [0x18B8C]={d="l"},
+ [0x18B8D]={d="l"},
+ [0x18B8E]={d="l"},
+ [0x18B8F]={d="l"},
+ [0x18B90]={d="l"},
+ [0x18B91]={d="l"},
+ [0x18B92]={d="l"},
+ [0x18B93]={d="l"},
+ [0x18B94]={d="l"},
+ [0x18B95]={d="l"},
+ [0x18B96]={d="l"},
+ [0x18B97]={d="l"},
+ [0x18B98]={d="l"},
+ [0x18B99]={d="l"},
+ [0x18B9A]={d="l"},
+ [0x18B9B]={d="l"},
+ [0x18B9C]={d="l"},
+ [0x18B9D]={d="l"},
+ [0x18B9E]={d="l"},
+ [0x18B9F]={d="l"},
+ [0x18BA0]={d="l"},
+ [0x18BA1]={d="l"},
+ [0x18BA2]={d="l"},
+ [0x18BA3]={d="l"},
+ [0x18BA4]={d="l"},
+ [0x18BA5]={d="l"},
+ [0x18BA6]={d="l"},
+ [0x18BA7]={d="l"},
+ [0x18BA8]={d="l"},
+ [0x18BA9]={d="l"},
+ [0x18BAA]={d="l"},
+ [0x18BAB]={d="l"},
+ [0x18BAC]={d="l"},
+ [0x18BAD]={d="l"},
+ [0x18BAE]={d="l"},
+ [0x18BAF]={d="l"},
+ [0x18BB0]={d="l"},
+ [0x18BB1]={d="l"},
+ [0x18BB2]={d="l"},
+ [0x18BB3]={d="l"},
+ [0x18BB4]={d="l"},
+ [0x18BB5]={d="l"},
+ [0x18BB6]={d="l"},
+ [0x18BB7]={d="l"},
+ [0x18BB8]={d="l"},
+ [0x18BB9]={d="l"},
+ [0x18BBA]={d="l"},
+ [0x18BBB]={d="l"},
+ [0x18BBC]={d="l"},
+ [0x18BBD]={d="l"},
+ [0x18BBE]={d="l"},
+ [0x18BBF]={d="l"},
+ [0x18BC0]={d="l"},
+ [0x18BC1]={d="l"},
+ [0x18BC2]={d="l"},
+ [0x18BC3]={d="l"},
+ [0x18BC4]={d="l"},
+ [0x18BC5]={d="l"},
+ [0x18BC6]={d="l"},
+ [0x18BC7]={d="l"},
+ [0x18BC8]={d="l"},
+ [0x18BC9]={d="l"},
+ [0x18BCA]={d="l"},
+ [0x18BCB]={d="l"},
+ [0x18BCC]={d="l"},
+ [0x18BCD]={d="l"},
+ [0x18BCE]={d="l"},
+ [0x18BCF]={d="l"},
+ [0x18BD0]={d="l"},
+ [0x18BD1]={d="l"},
+ [0x18BD2]={d="l"},
+ [0x18BD3]={d="l"},
+ [0x18BD4]={d="l"},
+ [0x18BD5]={d="l"},
+ [0x18BD6]={d="l"},
+ [0x18BD7]={d="l"},
+ [0x18BD8]={d="l"},
+ [0x18BD9]={d="l"},
+ [0x18BDA]={d="l"},
+ [0x18BDB]={d="l"},
+ [0x18BDC]={d="l"},
+ [0x18BDD]={d="l"},
+ [0x18BDE]={d="l"},
+ [0x18BDF]={d="l"},
+ [0x18BE0]={d="l"},
+ [0x18BE1]={d="l"},
+ [0x18BE2]={d="l"},
+ [0x18BE3]={d="l"},
+ [0x18BE4]={d="l"},
+ [0x18BE5]={d="l"},
+ [0x18BE6]={d="l"},
+ [0x18BE7]={d="l"},
+ [0x18BE8]={d="l"},
+ [0x18BE9]={d="l"},
+ [0x18BEA]={d="l"},
+ [0x18BEB]={d="l"},
+ [0x18BEC]={d="l"},
+ [0x18BED]={d="l"},
+ [0x18BEE]={d="l"},
+ [0x18BEF]={d="l"},
+ [0x18BF0]={d="l"},
+ [0x18BF1]={d="l"},
+ [0x18BF2]={d="l"},
+ [0x18BF3]={d="l"},
+ [0x18BF4]={d="l"},
+ [0x18BF5]={d="l"},
+ [0x18BF6]={d="l"},
+ [0x18BF7]={d="l"},
+ [0x18BF8]={d="l"},
+ [0x18BF9]={d="l"},
+ [0x18BFA]={d="l"},
+ [0x18BFB]={d="l"},
+ [0x18BFC]={d="l"},
+ [0x18BFD]={d="l"},
+ [0x18BFE]={d="l"},
+ [0x18BFF]={d="l"},
+ [0x18C00]={d="l"},
+ [0x18C01]={d="l"},
+ [0x18C02]={d="l"},
+ [0x18C03]={d="l"},
+ [0x18C04]={d="l"},
+ [0x18C05]={d="l"},
+ [0x18C06]={d="l"},
+ [0x18C07]={d="l"},
+ [0x18C08]={d="l"},
+ [0x18C09]={d="l"},
+ [0x18C0A]={d="l"},
+ [0x18C0B]={d="l"},
+ [0x18C0C]={d="l"},
+ [0x18C0D]={d="l"},
+ [0x18C0E]={d="l"},
+ [0x18C0F]={d="l"},
+ [0x18C10]={d="l"},
+ [0x18C11]={d="l"},
+ [0x18C12]={d="l"},
+ [0x18C13]={d="l"},
+ [0x18C14]={d="l"},
+ [0x18C15]={d="l"},
+ [0x18C16]={d="l"},
+ [0x18C17]={d="l"},
+ [0x18C18]={d="l"},
+ [0x18C19]={d="l"},
+ [0x18C1A]={d="l"},
+ [0x18C1B]={d="l"},
+ [0x18C1C]={d="l"},
+ [0x18C1D]={d="l"},
+ [0x18C1E]={d="l"},
+ [0x18C1F]={d="l"},
+ [0x18C20]={d="l"},
+ [0x18C21]={d="l"},
+ [0x18C22]={d="l"},
+ [0x18C23]={d="l"},
+ [0x18C24]={d="l"},
+ [0x18C25]={d="l"},
+ [0x18C26]={d="l"},
+ [0x18C27]={d="l"},
+ [0x18C28]={d="l"},
+ [0x18C29]={d="l"},
+ [0x18C2A]={d="l"},
+ [0x18C2B]={d="l"},
+ [0x18C2C]={d="l"},
+ [0x18C2D]={d="l"},
+ [0x18C2E]={d="l"},
+ [0x18C2F]={d="l"},
+ [0x18C30]={d="l"},
+ [0x18C31]={d="l"},
+ [0x18C32]={d="l"},
+ [0x18C33]={d="l"},
+ [0x18C34]={d="l"},
+ [0x18C35]={d="l"},
+ [0x18C36]={d="l"},
+ [0x18C37]={d="l"},
+ [0x18C38]={d="l"},
+ [0x18C39]={d="l"},
+ [0x18C3A]={d="l"},
+ [0x18C3B]={d="l"},
+ [0x18C3C]={d="l"},
+ [0x18C3D]={d="l"},
+ [0x18C3E]={d="l"},
+ [0x18C3F]={d="l"},
+ [0x18C40]={d="l"},
+ [0x18C41]={d="l"},
+ [0x18C42]={d="l"},
+ [0x18C43]={d="l"},
+ [0x18C44]={d="l"},
+ [0x18C45]={d="l"},
+ [0x18C46]={d="l"},
+ [0x18C47]={d="l"},
+ [0x18C48]={d="l"},
+ [0x18C49]={d="l"},
+ [0x18C4A]={d="l"},
+ [0x18C4B]={d="l"},
+ [0x18C4C]={d="l"},
+ [0x18C4D]={d="l"},
+ [0x18C4E]={d="l"},
+ [0x18C4F]={d="l"},
+ [0x18C50]={d="l"},
+ [0x18C51]={d="l"},
+ [0x18C52]={d="l"},
+ [0x18C53]={d="l"},
+ [0x18C54]={d="l"},
+ [0x18C55]={d="l"},
+ [0x18C56]={d="l"},
+ [0x18C57]={d="l"},
+ [0x18C58]={d="l"},
+ [0x18C59]={d="l"},
+ [0x18C5A]={d="l"},
+ [0x18C5B]={d="l"},
+ [0x18C5C]={d="l"},
+ [0x18C5D]={d="l"},
+ [0x18C5E]={d="l"},
+ [0x18C5F]={d="l"},
+ [0x18C60]={d="l"},
+ [0x18C61]={d="l"},
+ [0x18C62]={d="l"},
+ [0x18C63]={d="l"},
+ [0x18C64]={d="l"},
+ [0x18C65]={d="l"},
+ [0x18C66]={d="l"},
+ [0x18C67]={d="l"},
+ [0x18C68]={d="l"},
+ [0x18C69]={d="l"},
+ [0x18C6A]={d="l"},
+ [0x18C6B]={d="l"},
+ [0x18C6C]={d="l"},
+ [0x18C6D]={d="l"},
+ [0x18C6E]={d="l"},
+ [0x18C6F]={d="l"},
+ [0x18C70]={d="l"},
+ [0x18C71]={d="l"},
+ [0x18C72]={d="l"},
+ [0x18C73]={d="l"},
+ [0x18C74]={d="l"},
+ [0x18C75]={d="l"},
+ [0x18C76]={d="l"},
+ [0x18C77]={d="l"},
+ [0x18C78]={d="l"},
+ [0x18C79]={d="l"},
+ [0x18C7A]={d="l"},
+ [0x18C7B]={d="l"},
+ [0x18C7C]={d="l"},
+ [0x18C7D]={d="l"},
+ [0x18C7E]={d="l"},
+ [0x18C7F]={d="l"},
+ [0x18C80]={d="l"},
+ [0x18C81]={d="l"},
+ [0x18C82]={d="l"},
+ [0x18C83]={d="l"},
+ [0x18C84]={d="l"},
+ [0x18C85]={d="l"},
+ [0x18C86]={d="l"},
+ [0x18C87]={d="l"},
+ [0x18C88]={d="l"},
+ [0x18C89]={d="l"},
+ [0x18C8A]={d="l"},
+ [0x18C8B]={d="l"},
+ [0x18C8C]={d="l"},
+ [0x18C8D]={d="l"},
+ [0x18C8E]={d="l"},
+ [0x18C8F]={d="l"},
+ [0x18C90]={d="l"},
+ [0x18C91]={d="l"},
+ [0x18C92]={d="l"},
+ [0x18C93]={d="l"},
+ [0x18C94]={d="l"},
+ [0x18C95]={d="l"},
+ [0x18C96]={d="l"},
+ [0x18C97]={d="l"},
+ [0x18C98]={d="l"},
+ [0x18C99]={d="l"},
+ [0x18C9A]={d="l"},
+ [0x18C9B]={d="l"},
+ [0x18C9C]={d="l"},
+ [0x18C9D]={d="l"},
+ [0x18C9E]={d="l"},
+ [0x18C9F]={d="l"},
+ [0x18CA0]={d="l"},
+ [0x18CA1]={d="l"},
+ [0x18CA2]={d="l"},
+ [0x18CA3]={d="l"},
+ [0x18CA4]={d="l"},
+ [0x18CA5]={d="l"},
+ [0x18CA6]={d="l"},
+ [0x18CA7]={d="l"},
+ [0x18CA8]={d="l"},
+ [0x18CA9]={d="l"},
+ [0x18CAA]={d="l"},
+ [0x18CAB]={d="l"},
+ [0x18CAC]={d="l"},
+ [0x18CAD]={d="l"},
+ [0x18CAE]={d="l"},
+ [0x18CAF]={d="l"},
+ [0x18CB0]={d="l"},
+ [0x18CB1]={d="l"},
+ [0x18CB2]={d="l"},
+ [0x18CB3]={d="l"},
+ [0x18CB4]={d="l"},
+ [0x18CB5]={d="l"},
+ [0x18CB6]={d="l"},
+ [0x18CB7]={d="l"},
+ [0x18CB8]={d="l"},
+ [0x18CB9]={d="l"},
+ [0x18CBA]={d="l"},
+ [0x18CBB]={d="l"},
+ [0x18CBC]={d="l"},
+ [0x18CBD]={d="l"},
+ [0x18CBE]={d="l"},
+ [0x18CBF]={d="l"},
+ [0x18CC0]={d="l"},
+ [0x18CC1]={d="l"},
+ [0x18CC2]={d="l"},
+ [0x18CC3]={d="l"},
+ [0x18CC4]={d="l"},
+ [0x18CC5]={d="l"},
+ [0x18CC6]={d="l"},
+ [0x18CC7]={d="l"},
+ [0x18CC8]={d="l"},
+ [0x18CC9]={d="l"},
+ [0x18CCA]={d="l"},
+ [0x18CCB]={d="l"},
+ [0x18CCC]={d="l"},
+ [0x18CCD]={d="l"},
+ [0x18CCE]={d="l"},
+ [0x18CCF]={d="l"},
+ [0x18CD0]={d="l"},
+ [0x18CD1]={d="l"},
+ [0x18CD2]={d="l"},
+ [0x18CD3]={d="l"},
+ [0x18CD4]={d="l"},
+ [0x18CD5]={d="l"},
+ [0x1AFF0]={d="l"},
+ [0x1AFF1]={d="l"},
+ [0x1AFF2]={d="l"},
+ [0x1AFF3]={d="l"},
+ [0x1AFF5]={d="l"},
+ [0x1AFF6]={d="l"},
+ [0x1AFF7]={d="l"},
+ [0x1AFF8]={d="l"},
+ [0x1AFF9]={d="l"},
+ [0x1AFFA]={d="l"},
+ [0x1AFFB]={d="l"},
+ [0x1AFFD]={d="l"},
+ [0x1AFFE]={d="l"},
+ [0x1B000]={d="l"},
+ [0x1B001]={d="l"},
+ [0x1B002]={d="l"},
+ [0x1B003]={d="l"},
+ [0x1B004]={d="l"},
+ [0x1B005]={d="l"},
+ [0x1B006]={d="l"},
+ [0x1B007]={d="l"},
+ [0x1B008]={d="l"},
+ [0x1B009]={d="l"},
+ [0x1B00A]={d="l"},
+ [0x1B00B]={d="l"},
+ [0x1B00C]={d="l"},
+ [0x1B00D]={d="l"},
+ [0x1B00E]={d="l"},
+ [0x1B00F]={d="l"},
+ [0x1B010]={d="l"},
+ [0x1B011]={d="l"},
+ [0x1B012]={d="l"},
+ [0x1B013]={d="l"},
+ [0x1B014]={d="l"},
+ [0x1B015]={d="l"},
+ [0x1B016]={d="l"},
+ [0x1B017]={d="l"},
+ [0x1B018]={d="l"},
+ [0x1B019]={d="l"},
+ [0x1B01A]={d="l"},
+ [0x1B01B]={d="l"},
+ [0x1B01C]={d="l"},
+ [0x1B01D]={d="l"},
+ [0x1B01E]={d="l"},
+ [0x1B01F]={d="l"},
+ [0x1B020]={d="l"},
+ [0x1B021]={d="l"},
+ [0x1B022]={d="l"},
+ [0x1B023]={d="l"},
+ [0x1B024]={d="l"},
+ [0x1B025]={d="l"},
+ [0x1B026]={d="l"},
+ [0x1B027]={d="l"},
+ [0x1B028]={d="l"},
+ [0x1B029]={d="l"},
+ [0x1B02A]={d="l"},
+ [0x1B02B]={d="l"},
+ [0x1B02C]={d="l"},
+ [0x1B02D]={d="l"},
+ [0x1B02E]={d="l"},
+ [0x1B02F]={d="l"},
+ [0x1B030]={d="l"},
+ [0x1B031]={d="l"},
+ [0x1B032]={d="l"},
+ [0x1B033]={d="l"},
+ [0x1B034]={d="l"},
+ [0x1B035]={d="l"},
+ [0x1B036]={d="l"},
+ [0x1B037]={d="l"},
+ [0x1B038]={d="l"},
+ [0x1B039]={d="l"},
+ [0x1B03A]={d="l"},
+ [0x1B03B]={d="l"},
+ [0x1B03C]={d="l"},
+ [0x1B03D]={d="l"},
+ [0x1B03E]={d="l"},
+ [0x1B03F]={d="l"},
+ [0x1B040]={d="l"},
+ [0x1B041]={d="l"},
+ [0x1B042]={d="l"},
+ [0x1B043]={d="l"},
+ [0x1B044]={d="l"},
+ [0x1B045]={d="l"},
+ [0x1B046]={d="l"},
+ [0x1B047]={d="l"},
+ [0x1B048]={d="l"},
+ [0x1B049]={d="l"},
+ [0x1B04A]={d="l"},
+ [0x1B04B]={d="l"},
+ [0x1B04C]={d="l"},
+ [0x1B04D]={d="l"},
+ [0x1B04E]={d="l"},
+ [0x1B04F]={d="l"},
+ [0x1B050]={d="l"},
+ [0x1B051]={d="l"},
+ [0x1B052]={d="l"},
+ [0x1B053]={d="l"},
+ [0x1B054]={d="l"},
+ [0x1B055]={d="l"},
+ [0x1B056]={d="l"},
+ [0x1B057]={d="l"},
+ [0x1B058]={d="l"},
+ [0x1B059]={d="l"},
+ [0x1B05A]={d="l"},
+ [0x1B05B]={d="l"},
+ [0x1B05C]={d="l"},
+ [0x1B05D]={d="l"},
+ [0x1B05E]={d="l"},
+ [0x1B05F]={d="l"},
+ [0x1B060]={d="l"},
+ [0x1B061]={d="l"},
+ [0x1B062]={d="l"},
+ [0x1B063]={d="l"},
+ [0x1B064]={d="l"},
+ [0x1B065]={d="l"},
+ [0x1B066]={d="l"},
+ [0x1B067]={d="l"},
+ [0x1B068]={d="l"},
+ [0x1B069]={d="l"},
+ [0x1B06A]={d="l"},
+ [0x1B06B]={d="l"},
+ [0x1B06C]={d="l"},
+ [0x1B06D]={d="l"},
+ [0x1B06E]={d="l"},
+ [0x1B06F]={d="l"},
+ [0x1B070]={d="l"},
+ [0x1B071]={d="l"},
+ [0x1B072]={d="l"},
+ [0x1B073]={d="l"},
+ [0x1B074]={d="l"},
+ [0x1B075]={d="l"},
+ [0x1B076]={d="l"},
+ [0x1B077]={d="l"},
+ [0x1B078]={d="l"},
+ [0x1B079]={d="l"},
+ [0x1B07A]={d="l"},
+ [0x1B07B]={d="l"},
+ [0x1B07C]={d="l"},
+ [0x1B07D]={d="l"},
+ [0x1B07E]={d="l"},
+ [0x1B07F]={d="l"},
+ [0x1B080]={d="l"},
+ [0x1B081]={d="l"},
+ [0x1B082]={d="l"},
+ [0x1B083]={d="l"},
+ [0x1B084]={d="l"},
+ [0x1B085]={d="l"},
+ [0x1B086]={d="l"},
+ [0x1B087]={d="l"},
+ [0x1B088]={d="l"},
+ [0x1B089]={d="l"},
+ [0x1B08A]={d="l"},
+ [0x1B08B]={d="l"},
+ [0x1B08C]={d="l"},
+ [0x1B08D]={d="l"},
+ [0x1B08E]={d="l"},
+ [0x1B08F]={d="l"},
+ [0x1B090]={d="l"},
+ [0x1B091]={d="l"},
+ [0x1B092]={d="l"},
+ [0x1B093]={d="l"},
+ [0x1B094]={d="l"},
+ [0x1B095]={d="l"},
+ [0x1B096]={d="l"},
+ [0x1B097]={d="l"},
+ [0x1B098]={d="l"},
+ [0x1B099]={d="l"},
+ [0x1B09A]={d="l"},
+ [0x1B09B]={d="l"},
+ [0x1B09C]={d="l"},
+ [0x1B09D]={d="l"},
+ [0x1B09E]={d="l"},
+ [0x1B09F]={d="l"},
+ [0x1B0A0]={d="l"},
+ [0x1B0A1]={d="l"},
+ [0x1B0A2]={d="l"},
+ [0x1B0A3]={d="l"},
+ [0x1B0A4]={d="l"},
+ [0x1B0A5]={d="l"},
+ [0x1B0A6]={d="l"},
+ [0x1B0A7]={d="l"},
+ [0x1B0A8]={d="l"},
+ [0x1B0A9]={d="l"},
+ [0x1B0AA]={d="l"},
+ [0x1B0AB]={d="l"},
+ [0x1B0AC]={d="l"},
+ [0x1B0AD]={d="l"},
+ [0x1B0AE]={d="l"},
+ [0x1B0AF]={d="l"},
+ [0x1B0B0]={d="l"},
+ [0x1B0B1]={d="l"},
+ [0x1B0B2]={d="l"},
+ [0x1B0B3]={d="l"},
+ [0x1B0B4]={d="l"},
+ [0x1B0B5]={d="l"},
+ [0x1B0B6]={d="l"},
+ [0x1B0B7]={d="l"},
+ [0x1B0B8]={d="l"},
+ [0x1B0B9]={d="l"},
+ [0x1B0BA]={d="l"},
+ [0x1B0BB]={d="l"},
+ [0x1B0BC]={d="l"},
+ [0x1B0BD]={d="l"},
+ [0x1B0BE]={d="l"},
+ [0x1B0BF]={d="l"},
+ [0x1B0C0]={d="l"},
+ [0x1B0C1]={d="l"},
+ [0x1B0C2]={d="l"},
+ [0x1B0C3]={d="l"},
+ [0x1B0C4]={d="l"},
+ [0x1B0C5]={d="l"},
+ [0x1B0C6]={d="l"},
+ [0x1B0C7]={d="l"},
+ [0x1B0C8]={d="l"},
+ [0x1B0C9]={d="l"},
+ [0x1B0CA]={d="l"},
+ [0x1B0CB]={d="l"},
+ [0x1B0CC]={d="l"},
+ [0x1B0CD]={d="l"},
+ [0x1B0CE]={d="l"},
+ [0x1B0CF]={d="l"},
+ [0x1B0D0]={d="l"},
+ [0x1B0D1]={d="l"},
+ [0x1B0D2]={d="l"},
+ [0x1B0D3]={d="l"},
+ [0x1B0D4]={d="l"},
+ [0x1B0D5]={d="l"},
+ [0x1B0D6]={d="l"},
+ [0x1B0D7]={d="l"},
+ [0x1B0D8]={d="l"},
+ [0x1B0D9]={d="l"},
+ [0x1B0DA]={d="l"},
+ [0x1B0DB]={d="l"},
+ [0x1B0DC]={d="l"},
+ [0x1B0DD]={d="l"},
+ [0x1B0DE]={d="l"},
+ [0x1B0DF]={d="l"},
+ [0x1B0E0]={d="l"},
+ [0x1B0E1]={d="l"},
+ [0x1B0E2]={d="l"},
+ [0x1B0E3]={d="l"},
+ [0x1B0E4]={d="l"},
+ [0x1B0E5]={d="l"},
+ [0x1B0E6]={d="l"},
+ [0x1B0E7]={d="l"},
+ [0x1B0E8]={d="l"},
+ [0x1B0E9]={d="l"},
+ [0x1B0EA]={d="l"},
+ [0x1B0EB]={d="l"},
+ [0x1B0EC]={d="l"},
+ [0x1B0ED]={d="l"},
+ [0x1B0EE]={d="l"},
+ [0x1B0EF]={d="l"},
+ [0x1B0F0]={d="l"},
+ [0x1B0F1]={d="l"},
+ [0x1B0F2]={d="l"},
+ [0x1B0F3]={d="l"},
+ [0x1B0F4]={d="l"},
+ [0x1B0F5]={d="l"},
+ [0x1B0F6]={d="l"},
+ [0x1B0F7]={d="l"},
+ [0x1B0F8]={d="l"},
+ [0x1B0F9]={d="l"},
+ [0x1B0FA]={d="l"},
+ [0x1B0FB]={d="l"},
+ [0x1B0FC]={d="l"},
+ [0x1B0FD]={d="l"},
+ [0x1B0FE]={d="l"},
+ [0x1B0FF]={d="l"},
+ [0x1B100]={d="l"},
+ [0x1B101]={d="l"},
+ [0x1B102]={d="l"},
+ [0x1B103]={d="l"},
+ [0x1B104]={d="l"},
+ [0x1B105]={d="l"},
+ [0x1B106]={d="l"},
+ [0x1B107]={d="l"},
+ [0x1B108]={d="l"},
+ [0x1B109]={d="l"},
+ [0x1B10A]={d="l"},
+ [0x1B10B]={d="l"},
+ [0x1B10C]={d="l"},
+ [0x1B10D]={d="l"},
+ [0x1B10E]={d="l"},
+ [0x1B10F]={d="l"},
+ [0x1B110]={d="l"},
+ [0x1B111]={d="l"},
+ [0x1B112]={d="l"},
+ [0x1B113]={d="l"},
+ [0x1B114]={d="l"},
+ [0x1B115]={d="l"},
+ [0x1B116]={d="l"},
+ [0x1B117]={d="l"},
+ [0x1B118]={d="l"},
+ [0x1B119]={d="l"},
+ [0x1B11A]={d="l"},
+ [0x1B11B]={d="l"},
+ [0x1B11C]={d="l"},
+ [0x1B11D]={d="l"},
+ [0x1B11E]={d="l"},
+ [0x1B11F]={d="l"},
+ [0x1B120]={d="l"},
+ [0x1B121]={d="l"},
+ [0x1B122]={d="l"},
+ [0x1B132]={d="l"},
+ [0x1B150]={d="l"},
+ [0x1B151]={d="l"},
+ [0x1B152]={d="l"},
+ [0x1B155]={d="l"},
+ [0x1B164]={d="l"},
+ [0x1B165]={d="l"},
+ [0x1B166]={d="l"},
+ [0x1B167]={d="l"},
+ [0x1B170]={d="l"},
+ [0x1B171]={d="l"},
+ [0x1B172]={d="l"},
+ [0x1B173]={d="l"},
+ [0x1B174]={d="l"},
+ [0x1B175]={d="l"},
+ [0x1B176]={d="l"},
+ [0x1B177]={d="l"},
+ [0x1B178]={d="l"},
+ [0x1B179]={d="l"},
+ [0x1B17A]={d="l"},
+ [0x1B17B]={d="l"},
+ [0x1B17C]={d="l"},
+ [0x1B17D]={d="l"},
+ [0x1B17E]={d="l"},
+ [0x1B17F]={d="l"},
+ [0x1B180]={d="l"},
+ [0x1B181]={d="l"},
+ [0x1B182]={d="l"},
+ [0x1B183]={d="l"},
+ [0x1B184]={d="l"},
+ [0x1B185]={d="l"},
+ [0x1B186]={d="l"},
+ [0x1B187]={d="l"},
+ [0x1B188]={d="l"},
+ [0x1B189]={d="l"},
+ [0x1B18A]={d="l"},
+ [0x1B18B]={d="l"},
+ [0x1B18C]={d="l"},
+ [0x1B18D]={d="l"},
+ [0x1B18E]={d="l"},
+ [0x1B18F]={d="l"},
+ [0x1B190]={d="l"},
+ [0x1B191]={d="l"},
+ [0x1B192]={d="l"},
+ [0x1B193]={d="l"},
+ [0x1B194]={d="l"},
+ [0x1B195]={d="l"},
+ [0x1B196]={d="l"},
+ [0x1B197]={d="l"},
+ [0x1B198]={d="l"},
+ [0x1B199]={d="l"},
+ [0x1B19A]={d="l"},
+ [0x1B19B]={d="l"},
+ [0x1B19C]={d="l"},
+ [0x1B19D]={d="l"},
+ [0x1B19E]={d="l"},
+ [0x1B19F]={d="l"},
+ [0x1B1A0]={d="l"},
+ [0x1B1A1]={d="l"},
+ [0x1B1A2]={d="l"},
+ [0x1B1A3]={d="l"},
+ [0x1B1A4]={d="l"},
+ [0x1B1A5]={d="l"},
+ [0x1B1A6]={d="l"},
+ [0x1B1A7]={d="l"},
+ [0x1B1A8]={d="l"},
+ [0x1B1A9]={d="l"},
+ [0x1B1AA]={d="l"},
+ [0x1B1AB]={d="l"},
+ [0x1B1AC]={d="l"},
+ [0x1B1AD]={d="l"},
+ [0x1B1AE]={d="l"},
+ [0x1B1AF]={d="l"},
+ [0x1B1B0]={d="l"},
+ [0x1B1B1]={d="l"},
+ [0x1B1B2]={d="l"},
+ [0x1B1B3]={d="l"},
+ [0x1B1B4]={d="l"},
+ [0x1B1B5]={d="l"},
+ [0x1B1B6]={d="l"},
+ [0x1B1B7]={d="l"},
+ [0x1B1B8]={d="l"},
+ [0x1B1B9]={d="l"},
+ [0x1B1BA]={d="l"},
+ [0x1B1BB]={d="l"},
+ [0x1B1BC]={d="l"},
+ [0x1B1BD]={d="l"},
+ [0x1B1BE]={d="l"},
+ [0x1B1BF]={d="l"},
+ [0x1B1C0]={d="l"},
+ [0x1B1C1]={d="l"},
+ [0x1B1C2]={d="l"},
+ [0x1B1C3]={d="l"},
+ [0x1B1C4]={d="l"},
+ [0x1B1C5]={d="l"},
+ [0x1B1C6]={d="l"},
+ [0x1B1C7]={d="l"},
+ [0x1B1C8]={d="l"},
+ [0x1B1C9]={d="l"},
+ [0x1B1CA]={d="l"},
+ [0x1B1CB]={d="l"},
+ [0x1B1CC]={d="l"},
+ [0x1B1CD]={d="l"},
+ [0x1B1CE]={d="l"},
+ [0x1B1CF]={d="l"},
+ [0x1B1D0]={d="l"},
+ [0x1B1D1]={d="l"},
+ [0x1B1D2]={d="l"},
+ [0x1B1D3]={d="l"},
+ [0x1B1D4]={d="l"},
+ [0x1B1D5]={d="l"},
+ [0x1B1D6]={d="l"},
+ [0x1B1D7]={d="l"},
+ [0x1B1D8]={d="l"},
+ [0x1B1D9]={d="l"},
+ [0x1B1DA]={d="l"},
+ [0x1B1DB]={d="l"},
+ [0x1B1DC]={d="l"},
+ [0x1B1DD]={d="l"},
+ [0x1B1DE]={d="l"},
+ [0x1B1DF]={d="l"},
+ [0x1B1E0]={d="l"},
+ [0x1B1E1]={d="l"},
+ [0x1B1E2]={d="l"},
+ [0x1B1E3]={d="l"},
+ [0x1B1E4]={d="l"},
+ [0x1B1E5]={d="l"},
+ [0x1B1E6]={d="l"},
+ [0x1B1E7]={d="l"},
+ [0x1B1E8]={d="l"},
+ [0x1B1E9]={d="l"},
+ [0x1B1EA]={d="l"},
+ [0x1B1EB]={d="l"},
+ [0x1B1EC]={d="l"},
+ [0x1B1ED]={d="l"},
+ [0x1B1EE]={d="l"},
+ [0x1B1EF]={d="l"},
+ [0x1B1F0]={d="l"},
+ [0x1B1F1]={d="l"},
+ [0x1B1F2]={d="l"},
+ [0x1B1F3]={d="l"},
+ [0x1B1F4]={d="l"},
+ [0x1B1F5]={d="l"},
+ [0x1B1F6]={d="l"},
+ [0x1B1F7]={d="l"},
+ [0x1B1F8]={d="l"},
+ [0x1B1F9]={d="l"},
+ [0x1B1FA]={d="l"},
+ [0x1B1FB]={d="l"},
+ [0x1B1FC]={d="l"},
+ [0x1B1FD]={d="l"},
+ [0x1B1FE]={d="l"},
+ [0x1B1FF]={d="l"},
+ [0x1B200]={d="l"},
+ [0x1B201]={d="l"},
+ [0x1B202]={d="l"},
+ [0x1B203]={d="l"},
+ [0x1B204]={d="l"},
+ [0x1B205]={d="l"},
+ [0x1B206]={d="l"},
+ [0x1B207]={d="l"},
+ [0x1B208]={d="l"},
+ [0x1B209]={d="l"},
+ [0x1B20A]={d="l"},
+ [0x1B20B]={d="l"},
+ [0x1B20C]={d="l"},
+ [0x1B20D]={d="l"},
+ [0x1B20E]={d="l"},
+ [0x1B20F]={d="l"},
+ [0x1B210]={d="l"},
+ [0x1B211]={d="l"},
+ [0x1B212]={d="l"},
+ [0x1B213]={d="l"},
+ [0x1B214]={d="l"},
+ [0x1B215]={d="l"},
+ [0x1B216]={d="l"},
+ [0x1B217]={d="l"},
+ [0x1B218]={d="l"},
+ [0x1B219]={d="l"},
+ [0x1B21A]={d="l"},
+ [0x1B21B]={d="l"},
+ [0x1B21C]={d="l"},
+ [0x1B21D]={d="l"},
+ [0x1B21E]={d="l"},
+ [0x1B21F]={d="l"},
+ [0x1B220]={d="l"},
+ [0x1B221]={d="l"},
+ [0x1B222]={d="l"},
+ [0x1B223]={d="l"},
+ [0x1B224]={d="l"},
+ [0x1B225]={d="l"},
+ [0x1B226]={d="l"},
+ [0x1B227]={d="l"},
+ [0x1B228]={d="l"},
+ [0x1B229]={d="l"},
+ [0x1B22A]={d="l"},
+ [0x1B22B]={d="l"},
+ [0x1B22C]={d="l"},
+ [0x1B22D]={d="l"},
+ [0x1B22E]={d="l"},
+ [0x1B22F]={d="l"},
+ [0x1B230]={d="l"},
+ [0x1B231]={d="l"},
+ [0x1B232]={d="l"},
+ [0x1B233]={d="l"},
+ [0x1B234]={d="l"},
+ [0x1B235]={d="l"},
+ [0x1B236]={d="l"},
+ [0x1B237]={d="l"},
+ [0x1B238]={d="l"},
+ [0x1B239]={d="l"},
+ [0x1B23A]={d="l"},
+ [0x1B23B]={d="l"},
+ [0x1B23C]={d="l"},
+ [0x1B23D]={d="l"},
+ [0x1B23E]={d="l"},
+ [0x1B23F]={d="l"},
+ [0x1B240]={d="l"},
+ [0x1B241]={d="l"},
+ [0x1B242]={d="l"},
+ [0x1B243]={d="l"},
+ [0x1B244]={d="l"},
+ [0x1B245]={d="l"},
+ [0x1B246]={d="l"},
+ [0x1B247]={d="l"},
+ [0x1B248]={d="l"},
+ [0x1B249]={d="l"},
+ [0x1B24A]={d="l"},
+ [0x1B24B]={d="l"},
+ [0x1B24C]={d="l"},
+ [0x1B24D]={d="l"},
+ [0x1B24E]={d="l"},
+ [0x1B24F]={d="l"},
+ [0x1B250]={d="l"},
+ [0x1B251]={d="l"},
+ [0x1B252]={d="l"},
+ [0x1B253]={d="l"},
+ [0x1B254]={d="l"},
+ [0x1B255]={d="l"},
+ [0x1B256]={d="l"},
+ [0x1B257]={d="l"},
+ [0x1B258]={d="l"},
+ [0x1B259]={d="l"},
+ [0x1B25A]={d="l"},
+ [0x1B25B]={d="l"},
+ [0x1B25C]={d="l"},
+ [0x1B25D]={d="l"},
+ [0x1B25E]={d="l"},
+ [0x1B25F]={d="l"},
+ [0x1B260]={d="l"},
+ [0x1B261]={d="l"},
+ [0x1B262]={d="l"},
+ [0x1B263]={d="l"},
+ [0x1B264]={d="l"},
+ [0x1B265]={d="l"},
+ [0x1B266]={d="l"},
+ [0x1B267]={d="l"},
+ [0x1B268]={d="l"},
+ [0x1B269]={d="l"},
+ [0x1B26A]={d="l"},
+ [0x1B26B]={d="l"},
+ [0x1B26C]={d="l"},
+ [0x1B26D]={d="l"},
+ [0x1B26E]={d="l"},
+ [0x1B26F]={d="l"},
+ [0x1B270]={d="l"},
+ [0x1B271]={d="l"},
+ [0x1B272]={d="l"},
+ [0x1B273]={d="l"},
+ [0x1B274]={d="l"},
+ [0x1B275]={d="l"},
+ [0x1B276]={d="l"},
+ [0x1B277]={d="l"},
+ [0x1B278]={d="l"},
+ [0x1B279]={d="l"},
+ [0x1B27A]={d="l"},
+ [0x1B27B]={d="l"},
+ [0x1B27C]={d="l"},
+ [0x1B27D]={d="l"},
+ [0x1B27E]={d="l"},
+ [0x1B27F]={d="l"},
+ [0x1B280]={d="l"},
+ [0x1B281]={d="l"},
+ [0x1B282]={d="l"},
+ [0x1B283]={d="l"},
+ [0x1B284]={d="l"},
+ [0x1B285]={d="l"},
+ [0x1B286]={d="l"},
+ [0x1B287]={d="l"},
+ [0x1B288]={d="l"},
+ [0x1B289]={d="l"},
+ [0x1B28A]={d="l"},
+ [0x1B28B]={d="l"},
+ [0x1B28C]={d="l"},
+ [0x1B28D]={d="l"},
+ [0x1B28E]={d="l"},
+ [0x1B28F]={d="l"},
+ [0x1B290]={d="l"},
+ [0x1B291]={d="l"},
+ [0x1B292]={d="l"},
+ [0x1B293]={d="l"},
+ [0x1B294]={d="l"},
+ [0x1B295]={d="l"},
+ [0x1B296]={d="l"},
+ [0x1B297]={d="l"},
+ [0x1B298]={d="l"},
+ [0x1B299]={d="l"},
+ [0x1B29A]={d="l"},
+ [0x1B29B]={d="l"},
+ [0x1B29C]={d="l"},
+ [0x1B29D]={d="l"},
+ [0x1B29E]={d="l"},
+ [0x1B29F]={d="l"},
+ [0x1B2A0]={d="l"},
+ [0x1B2A1]={d="l"},
+ [0x1B2A2]={d="l"},
+ [0x1B2A3]={d="l"},
+ [0x1B2A4]={d="l"},
+ [0x1B2A5]={d="l"},
+ [0x1B2A6]={d="l"},
+ [0x1B2A7]={d="l"},
+ [0x1B2A8]={d="l"},
+ [0x1B2A9]={d="l"},
+ [0x1B2AA]={d="l"},
+ [0x1B2AB]={d="l"},
+ [0x1B2AC]={d="l"},
+ [0x1B2AD]={d="l"},
+ [0x1B2AE]={d="l"},
+ [0x1B2AF]={d="l"},
+ [0x1B2B0]={d="l"},
+ [0x1B2B1]={d="l"},
+ [0x1B2B2]={d="l"},
+ [0x1B2B3]={d="l"},
+ [0x1B2B4]={d="l"},
+ [0x1B2B5]={d="l"},
+ [0x1B2B6]={d="l"},
+ [0x1B2B7]={d="l"},
+ [0x1B2B8]={d="l"},
+ [0x1B2B9]={d="l"},
+ [0x1B2BA]={d="l"},
+ [0x1B2BB]={d="l"},
+ [0x1B2BC]={d="l"},
+ [0x1B2BD]={d="l"},
+ [0x1B2BE]={d="l"},
+ [0x1B2BF]={d="l"},
+ [0x1B2C0]={d="l"},
+ [0x1B2C1]={d="l"},
+ [0x1B2C2]={d="l"},
+ [0x1B2C3]={d="l"},
+ [0x1B2C4]={d="l"},
+ [0x1B2C5]={d="l"},
+ [0x1B2C6]={d="l"},
+ [0x1B2C7]={d="l"},
+ [0x1B2C8]={d="l"},
+ [0x1B2C9]={d="l"},
+ [0x1B2CA]={d="l"},
+ [0x1B2CB]={d="l"},
+ [0x1B2CC]={d="l"},
+ [0x1B2CD]={d="l"},
+ [0x1B2CE]={d="l"},
+ [0x1B2CF]={d="l"},
+ [0x1B2D0]={d="l"},
+ [0x1B2D1]={d="l"},
+ [0x1B2D2]={d="l"},
+ [0x1B2D3]={d="l"},
+ [0x1B2D4]={d="l"},
+ [0x1B2D5]={d="l"},
+ [0x1B2D6]={d="l"},
+ [0x1B2D7]={d="l"},
+ [0x1B2D8]={d="l"},
+ [0x1B2D9]={d="l"},
+ [0x1B2DA]={d="l"},
+ [0x1B2DB]={d="l"},
+ [0x1B2DC]={d="l"},
+ [0x1B2DD]={d="l"},
+ [0x1B2DE]={d="l"},
+ [0x1B2DF]={d="l"},
+ [0x1B2E0]={d="l"},
+ [0x1B2E1]={d="l"},
+ [0x1B2E2]={d="l"},
+ [0x1B2E3]={d="l"},
+ [0x1B2E4]={d="l"},
+ [0x1B2E5]={d="l"},
+ [0x1B2E6]={d="l"},
+ [0x1B2E7]={d="l"},
+ [0x1B2E8]={d="l"},
+ [0x1B2E9]={d="l"},
+ [0x1B2EA]={d="l"},
+ [0x1B2EB]={d="l"},
+ [0x1B2EC]={d="l"},
+ [0x1B2ED]={d="l"},
+ [0x1B2EE]={d="l"},
+ [0x1B2EF]={d="l"},
+ [0x1B2F0]={d="l"},
+ [0x1B2F1]={d="l"},
+ [0x1B2F2]={d="l"},
+ [0x1B2F3]={d="l"},
+ [0x1B2F4]={d="l"},
+ [0x1B2F5]={d="l"},
+ [0x1B2F6]={d="l"},
+ [0x1B2F7]={d="l"},
+ [0x1B2F8]={d="l"},
+ [0x1B2F9]={d="l"},
+ [0x1B2FA]={d="l"},
+ [0x1B2FB]={d="l"},
+ [0x1BC00]={d="l"},
+ [0x1BC01]={d="l"},
+ [0x1BC02]={d="l"},
+ [0x1BC03]={d="l"},
+ [0x1BC04]={d="l"},
+ [0x1BC05]={d="l"},
+ [0x1BC06]={d="l"},
+ [0x1BC07]={d="l"},
+ [0x1BC08]={d="l"},
+ [0x1BC09]={d="l"},
+ [0x1BC0A]={d="l"},
+ [0x1BC0B]={d="l"},
+ [0x1BC0C]={d="l"},
+ [0x1BC0D]={d="l"},
+ [0x1BC0E]={d="l"},
+ [0x1BC0F]={d="l"},
+ [0x1BC10]={d="l"},
+ [0x1BC11]={d="l"},
+ [0x1BC12]={d="l"},
+ [0x1BC13]={d="l"},
+ [0x1BC14]={d="l"},
+ [0x1BC15]={d="l"},
+ [0x1BC16]={d="l"},
+ [0x1BC17]={d="l"},
+ [0x1BC18]={d="l"},
+ [0x1BC19]={d="l"},
+ [0x1BC1A]={d="l"},
+ [0x1BC1B]={d="l"},
+ [0x1BC1C]={d="l"},
+ [0x1BC1D]={d="l"},
+ [0x1BC1E]={d="l"},
+ [0x1BC1F]={d="l"},
+ [0x1BC20]={d="l"},
+ [0x1BC21]={d="l"},
+ [0x1BC22]={d="l"},
+ [0x1BC23]={d="l"},
+ [0x1BC24]={d="l"},
+ [0x1BC25]={d="l"},
+ [0x1BC26]={d="l"},
+ [0x1BC27]={d="l"},
+ [0x1BC28]={d="l"},
+ [0x1BC29]={d="l"},
+ [0x1BC2A]={d="l"},
+ [0x1BC2B]={d="l"},
+ [0x1BC2C]={d="l"},
+ [0x1BC2D]={d="l"},
+ [0x1BC2E]={d="l"},
+ [0x1BC2F]={d="l"},
+ [0x1BC30]={d="l"},
+ [0x1BC31]={d="l"},
+ [0x1BC32]={d="l"},
+ [0x1BC33]={d="l"},
+ [0x1BC34]={d="l"},
+ [0x1BC35]={d="l"},
+ [0x1BC36]={d="l"},
+ [0x1BC37]={d="l"},
+ [0x1BC38]={d="l"},
+ [0x1BC39]={d="l"},
+ [0x1BC3A]={d="l"},
+ [0x1BC3B]={d="l"},
+ [0x1BC3C]={d="l"},
+ [0x1BC3D]={d="l"},
+ [0x1BC3E]={d="l"},
+ [0x1BC3F]={d="l"},
+ [0x1BC40]={d="l"},
+ [0x1BC41]={d="l"},
+ [0x1BC42]={d="l"},
+ [0x1BC43]={d="l"},
+ [0x1BC44]={d="l"},
+ [0x1BC45]={d="l"},
+ [0x1BC46]={d="l"},
+ [0x1BC47]={d="l"},
+ [0x1BC48]={d="l"},
+ [0x1BC49]={d="l"},
+ [0x1BC4A]={d="l"},
+ [0x1BC4B]={d="l"},
+ [0x1BC4C]={d="l"},
+ [0x1BC4D]={d="l"},
+ [0x1BC4E]={d="l"},
+ [0x1BC4F]={d="l"},
+ [0x1BC50]={d="l"},
+ [0x1BC51]={d="l"},
+ [0x1BC52]={d="l"},
+ [0x1BC53]={d="l"},
+ [0x1BC54]={d="l"},
+ [0x1BC55]={d="l"},
+ [0x1BC56]={d="l"},
+ [0x1BC57]={d="l"},
+ [0x1BC58]={d="l"},
+ [0x1BC59]={d="l"},
+ [0x1BC5A]={d="l"},
+ [0x1BC5B]={d="l"},
+ [0x1BC5C]={d="l"},
+ [0x1BC5D]={d="l"},
+ [0x1BC5E]={d="l"},
+ [0x1BC5F]={d="l"},
+ [0x1BC60]={d="l"},
+ [0x1BC61]={d="l"},
+ [0x1BC62]={d="l"},
+ [0x1BC63]={d="l"},
+ [0x1BC64]={d="l"},
+ [0x1BC65]={d="l"},
+ [0x1BC66]={d="l"},
+ [0x1BC67]={d="l"},
+ [0x1BC68]={d="l"},
+ [0x1BC69]={d="l"},
+ [0x1BC6A]={d="l"},
+ [0x1BC70]={d="l"},
+ [0x1BC71]={d="l"},
+ [0x1BC72]={d="l"},
+ [0x1BC73]={d="l"},
+ [0x1BC74]={d="l"},
+ [0x1BC75]={d="l"},
+ [0x1BC76]={d="l"},
+ [0x1BC77]={d="l"},
+ [0x1BC78]={d="l"},
+ [0x1BC79]={d="l"},
+ [0x1BC7A]={d="l"},
+ [0x1BC7B]={d="l"},
+ [0x1BC7C]={d="l"},
+ [0x1BC80]={d="l"},
+ [0x1BC81]={d="l"},
+ [0x1BC82]={d="l"},
+ [0x1BC83]={d="l"},
+ [0x1BC84]={d="l"},
+ [0x1BC85]={d="l"},
+ [0x1BC86]={d="l"},
+ [0x1BC87]={d="l"},
+ [0x1BC88]={d="l"},
+ [0x1BC90]={d="l"},
+ [0x1BC91]={d="l"},
+ [0x1BC92]={d="l"},
+ [0x1BC93]={d="l"},
+ [0x1BC94]={d="l"},
+ [0x1BC95]={d="l"},
+ [0x1BC96]={d="l"},
+ [0x1BC97]={d="l"},
+ [0x1BC98]={d="l"},
+ [0x1BC99]={d="l"},
+ [0x1BC9C]={d="l"},
+ [0x1BC9D]={d="nsm"},
+ [0x1BC9E]={d="nsm"},
+ [0x1BC9F]={d="l"},
+ [0x1BCA0]={d="bn"},
+ [0x1BCA1]={d="bn"},
+ [0x1BCA2]={d="bn"},
+ [0x1BCA3]={d="bn"},
+ [0x1CF00]={d="nsm"},
+ [0x1CF01]={d="nsm"},
+ [0x1CF02]={d="nsm"},
+ [0x1CF03]={d="nsm"},
+ [0x1CF04]={d="nsm"},
+ [0x1CF05]={d="nsm"},
+ [0x1CF06]={d="nsm"},
+ [0x1CF07]={d="nsm"},
+ [0x1CF08]={d="nsm"},
+ [0x1CF09]={d="nsm"},
+ [0x1CF0A]={d="nsm"},
+ [0x1CF0B]={d="nsm"},
+ [0x1CF0C]={d="nsm"},
+ [0x1CF0D]={d="nsm"},
+ [0x1CF0E]={d="nsm"},
+ [0x1CF0F]={d="nsm"},
+ [0x1CF10]={d="nsm"},
+ [0x1CF11]={d="nsm"},
+ [0x1CF12]={d="nsm"},
+ [0x1CF13]={d="nsm"},
+ [0x1CF14]={d="nsm"},
+ [0x1CF15]={d="nsm"},
+ [0x1CF16]={d="nsm"},
+ [0x1CF17]={d="nsm"},
+ [0x1CF18]={d="nsm"},
+ [0x1CF19]={d="nsm"},
+ [0x1CF1A]={d="nsm"},
+ [0x1CF1B]={d="nsm"},
+ [0x1CF1C]={d="nsm"},
+ [0x1CF1D]={d="nsm"},
+ [0x1CF1E]={d="nsm"},
+ [0x1CF1F]={d="nsm"},
+ [0x1CF20]={d="nsm"},
+ [0x1CF21]={d="nsm"},
+ [0x1CF22]={d="nsm"},
+ [0x1CF23]={d="nsm"},
+ [0x1CF24]={d="nsm"},
+ [0x1CF25]={d="nsm"},
+ [0x1CF26]={d="nsm"},
+ [0x1CF27]={d="nsm"},
+ [0x1CF28]={d="nsm"},
+ [0x1CF29]={d="nsm"},
+ [0x1CF2A]={d="nsm"},
+ [0x1CF2B]={d="nsm"},
+ [0x1CF2C]={d="nsm"},
+ [0x1CF2D]={d="nsm"},
+ [0x1CF30]={d="nsm"},
+ [0x1CF31]={d="nsm"},
+ [0x1CF32]={d="nsm"},
+ [0x1CF33]={d="nsm"},
+ [0x1CF34]={d="nsm"},
+ [0x1CF35]={d="nsm"},
+ [0x1CF36]={d="nsm"},
+ [0x1CF37]={d="nsm"},
+ [0x1CF38]={d="nsm"},
+ [0x1CF39]={d="nsm"},
+ [0x1CF3A]={d="nsm"},
+ [0x1CF3B]={d="nsm"},
+ [0x1CF3C]={d="nsm"},
+ [0x1CF3D]={d="nsm"},
+ [0x1CF3E]={d="nsm"},
+ [0x1CF3F]={d="nsm"},
+ [0x1CF40]={d="nsm"},
+ [0x1CF41]={d="nsm"},
+ [0x1CF42]={d="nsm"},
+ [0x1CF43]={d="nsm"},
+ [0x1CF44]={d="nsm"},
+ [0x1CF45]={d="nsm"},
+ [0x1CF46]={d="nsm"},
+ [0x1CF50]={d="l"},
+ [0x1CF51]={d="l"},
+ [0x1CF52]={d="l"},
+ [0x1CF53]={d="l"},
+ [0x1CF54]={d="l"},
+ [0x1CF55]={d="l"},
+ [0x1CF56]={d="l"},
+ [0x1CF57]={d="l"},
+ [0x1CF58]={d="l"},
+ [0x1CF59]={d="l"},
+ [0x1CF5A]={d="l"},
+ [0x1CF5B]={d="l"},
+ [0x1CF5C]={d="l"},
+ [0x1CF5D]={d="l"},
+ [0x1CF5E]={d="l"},
+ [0x1CF5F]={d="l"},
+ [0x1CF60]={d="l"},
+ [0x1CF61]={d="l"},
+ [0x1CF62]={d="l"},
+ [0x1CF63]={d="l"},
+ [0x1CF64]={d="l"},
+ [0x1CF65]={d="l"},
+ [0x1CF66]={d="l"},
+ [0x1CF67]={d="l"},
+ [0x1CF68]={d="l"},
+ [0x1CF69]={d="l"},
+ [0x1CF6A]={d="l"},
+ [0x1CF6B]={d="l"},
+ [0x1CF6C]={d="l"},
+ [0x1CF6D]={d="l"},
+ [0x1CF6E]={d="l"},
+ [0x1CF6F]={d="l"},
+ [0x1CF70]={d="l"},
+ [0x1CF71]={d="l"},
+ [0x1CF72]={d="l"},
+ [0x1CF73]={d="l"},
+ [0x1CF74]={d="l"},
+ [0x1CF75]={d="l"},
+ [0x1CF76]={d="l"},
+ [0x1CF77]={d="l"},
+ [0x1CF78]={d="l"},
+ [0x1CF79]={d="l"},
+ [0x1CF7A]={d="l"},
+ [0x1CF7B]={d="l"},
+ [0x1CF7C]={d="l"},
+ [0x1CF7D]={d="l"},
+ [0x1CF7E]={d="l"},
+ [0x1CF7F]={d="l"},
+ [0x1CF80]={d="l"},
+ [0x1CF81]={d="l"},
+ [0x1CF82]={d="l"},
+ [0x1CF83]={d="l"},
+ [0x1CF84]={d="l"},
+ [0x1CF85]={d="l"},
+ [0x1CF86]={d="l"},
+ [0x1CF87]={d="l"},
+ [0x1CF88]={d="l"},
+ [0x1CF89]={d="l"},
+ [0x1CF8A]={d="l"},
+ [0x1CF8B]={d="l"},
+ [0x1CF8C]={d="l"},
+ [0x1CF8D]={d="l"},
+ [0x1CF8E]={d="l"},
+ [0x1CF8F]={d="l"},
+ [0x1CF90]={d="l"},
+ [0x1CF91]={d="l"},
+ [0x1CF92]={d="l"},
+ [0x1CF93]={d="l"},
+ [0x1CF94]={d="l"},
+ [0x1CF95]={d="l"},
+ [0x1CF96]={d="l"},
+ [0x1CF97]={d="l"},
+ [0x1CF98]={d="l"},
+ [0x1CF99]={d="l"},
+ [0x1CF9A]={d="l"},
+ [0x1CF9B]={d="l"},
+ [0x1CF9C]={d="l"},
+ [0x1CF9D]={d="l"},
+ [0x1CF9E]={d="l"},
+ [0x1CF9F]={d="l"},
+ [0x1CFA0]={d="l"},
+ [0x1CFA1]={d="l"},
+ [0x1CFA2]={d="l"},
+ [0x1CFA3]={d="l"},
+ [0x1CFA4]={d="l"},
+ [0x1CFA5]={d="l"},
+ [0x1CFA6]={d="l"},
+ [0x1CFA7]={d="l"},
+ [0x1CFA8]={d="l"},
+ [0x1CFA9]={d="l"},
+ [0x1CFAA]={d="l"},
+ [0x1CFAB]={d="l"},
+ [0x1CFAC]={d="l"},
+ [0x1CFAD]={d="l"},
+ [0x1CFAE]={d="l"},
+ [0x1CFAF]={d="l"},
+ [0x1CFB0]={d="l"},
+ [0x1CFB1]={d="l"},
+ [0x1CFB2]={d="l"},
+ [0x1CFB3]={d="l"},
+ [0x1CFB4]={d="l"},
+ [0x1CFB5]={d="l"},
+ [0x1CFB6]={d="l"},
+ [0x1CFB7]={d="l"},
+ [0x1CFB8]={d="l"},
+ [0x1CFB9]={d="l"},
+ [0x1CFBA]={d="l"},
+ [0x1CFBB]={d="l"},
+ [0x1CFBC]={d="l"},
+ [0x1CFBD]={d="l"},
+ [0x1CFBE]={d="l"},
+ [0x1CFBF]={d="l"},
+ [0x1CFC0]={d="l"},
+ [0x1CFC1]={d="l"},
+ [0x1CFC2]={d="l"},
+ [0x1CFC3]={d="l"},
+ [0x1D000]={d="l"},
+ [0x1D001]={d="l"},
+ [0x1D002]={d="l"},
+ [0x1D003]={d="l"},
+ [0x1D004]={d="l"},
+ [0x1D005]={d="l"},
+ [0x1D006]={d="l"},
+ [0x1D007]={d="l"},
+ [0x1D008]={d="l"},
+ [0x1D009]={d="l"},
+ [0x1D00A]={d="l"},
+ [0x1D00B]={d="l"},
+ [0x1D00C]={d="l"},
+ [0x1D00D]={d="l"},
+ [0x1D00E]={d="l"},
+ [0x1D00F]={d="l"},
+ [0x1D010]={d="l"},
+ [0x1D011]={d="l"},
+ [0x1D012]={d="l"},
+ [0x1D013]={d="l"},
+ [0x1D014]={d="l"},
+ [0x1D015]={d="l"},
+ [0x1D016]={d="l"},
+ [0x1D017]={d="l"},
+ [0x1D018]={d="l"},
+ [0x1D019]={d="l"},
+ [0x1D01A]={d="l"},
+ [0x1D01B]={d="l"},
+ [0x1D01C]={d="l"},
+ [0x1D01D]={d="l"},
+ [0x1D01E]={d="l"},
+ [0x1D01F]={d="l"},
+ [0x1D020]={d="l"},
+ [0x1D021]={d="l"},
+ [0x1D022]={d="l"},
+ [0x1D023]={d="l"},
+ [0x1D024]={d="l"},
+ [0x1D025]={d="l"},
+ [0x1D026]={d="l"},
+ [0x1D027]={d="l"},
+ [0x1D028]={d="l"},
+ [0x1D029]={d="l"},
+ [0x1D02A]={d="l"},
+ [0x1D02B]={d="l"},
+ [0x1D02C]={d="l"},
+ [0x1D02D]={d="l"},
+ [0x1D02E]={d="l"},
+ [0x1D02F]={d="l"},
+ [0x1D030]={d="l"},
+ [0x1D031]={d="l"},
+ [0x1D032]={d="l"},
+ [0x1D033]={d="l"},
+ [0x1D034]={d="l"},
+ [0x1D035]={d="l"},
+ [0x1D036]={d="l"},
+ [0x1D037]={d="l"},
+ [0x1D038]={d="l"},
+ [0x1D039]={d="l"},
+ [0x1D03A]={d="l"},
+ [0x1D03B]={d="l"},
+ [0x1D03C]={d="l"},
+ [0x1D03D]={d="l"},
+ [0x1D03E]={d="l"},
+ [0x1D03F]={d="l"},
+ [0x1D040]={d="l"},
+ [0x1D041]={d="l"},
+ [0x1D042]={d="l"},
+ [0x1D043]={d="l"},
+ [0x1D044]={d="l"},
+ [0x1D045]={d="l"},
+ [0x1D046]={d="l"},
+ [0x1D047]={d="l"},
+ [0x1D048]={d="l"},
+ [0x1D049]={d="l"},
+ [0x1D04A]={d="l"},
+ [0x1D04B]={d="l"},
+ [0x1D04C]={d="l"},
+ [0x1D04D]={d="l"},
+ [0x1D04E]={d="l"},
+ [0x1D04F]={d="l"},
+ [0x1D050]={d="l"},
+ [0x1D051]={d="l"},
+ [0x1D052]={d="l"},
+ [0x1D053]={d="l"},
+ [0x1D054]={d="l"},
+ [0x1D055]={d="l"},
+ [0x1D056]={d="l"},
+ [0x1D057]={d="l"},
+ [0x1D058]={d="l"},
+ [0x1D059]={d="l"},
+ [0x1D05A]={d="l"},
+ [0x1D05B]={d="l"},
+ [0x1D05C]={d="l"},
+ [0x1D05D]={d="l"},
+ [0x1D05E]={d="l"},
+ [0x1D05F]={d="l"},
+ [0x1D060]={d="l"},
+ [0x1D061]={d="l"},
+ [0x1D062]={d="l"},
+ [0x1D063]={d="l"},
+ [0x1D064]={d="l"},
+ [0x1D065]={d="l"},
+ [0x1D066]={d="l"},
+ [0x1D067]={d="l"},
+ [0x1D068]={d="l"},
+ [0x1D069]={d="l"},
+ [0x1D06A]={d="l"},
+ [0x1D06B]={d="l"},
+ [0x1D06C]={d="l"},
+ [0x1D06D]={d="l"},
+ [0x1D06E]={d="l"},
+ [0x1D06F]={d="l"},
+ [0x1D070]={d="l"},
+ [0x1D071]={d="l"},
+ [0x1D072]={d="l"},
+ [0x1D073]={d="l"},
+ [0x1D074]={d="l"},
+ [0x1D075]={d="l"},
+ [0x1D076]={d="l"},
+ [0x1D077]={d="l"},
+ [0x1D078]={d="l"},
+ [0x1D079]={d="l"},
+ [0x1D07A]={d="l"},
+ [0x1D07B]={d="l"},
+ [0x1D07C]={d="l"},
+ [0x1D07D]={d="l"},
+ [0x1D07E]={d="l"},
+ [0x1D07F]={d="l"},
+ [0x1D080]={d="l"},
+ [0x1D081]={d="l"},
+ [0x1D082]={d="l"},
+ [0x1D083]={d="l"},
+ [0x1D084]={d="l"},
+ [0x1D085]={d="l"},
+ [0x1D086]={d="l"},
+ [0x1D087]={d="l"},
+ [0x1D088]={d="l"},
+ [0x1D089]={d="l"},
+ [0x1D08A]={d="l"},
+ [0x1D08B]={d="l"},
+ [0x1D08C]={d="l"},
+ [0x1D08D]={d="l"},
+ [0x1D08E]={d="l"},
+ [0x1D08F]={d="l"},
+ [0x1D090]={d="l"},
+ [0x1D091]={d="l"},
+ [0x1D092]={d="l"},
+ [0x1D093]={d="l"},
+ [0x1D094]={d="l"},
+ [0x1D095]={d="l"},
+ [0x1D096]={d="l"},
+ [0x1D097]={d="l"},
+ [0x1D098]={d="l"},
+ [0x1D099]={d="l"},
+ [0x1D09A]={d="l"},
+ [0x1D09B]={d="l"},
+ [0x1D09C]={d="l"},
+ [0x1D09D]={d="l"},
+ [0x1D09E]={d="l"},
+ [0x1D09F]={d="l"},
+ [0x1D0A0]={d="l"},
+ [0x1D0A1]={d="l"},
+ [0x1D0A2]={d="l"},
+ [0x1D0A3]={d="l"},
+ [0x1D0A4]={d="l"},
+ [0x1D0A5]={d="l"},
+ [0x1D0A6]={d="l"},
+ [0x1D0A7]={d="l"},
+ [0x1D0A8]={d="l"},
+ [0x1D0A9]={d="l"},
+ [0x1D0AA]={d="l"},
+ [0x1D0AB]={d="l"},
+ [0x1D0AC]={d="l"},
+ [0x1D0AD]={d="l"},
+ [0x1D0AE]={d="l"},
+ [0x1D0AF]={d="l"},
+ [0x1D0B0]={d="l"},
+ [0x1D0B1]={d="l"},
+ [0x1D0B2]={d="l"},
+ [0x1D0B3]={d="l"},
+ [0x1D0B4]={d="l"},
+ [0x1D0B5]={d="l"},
+ [0x1D0B6]={d="l"},
+ [0x1D0B7]={d="l"},
+ [0x1D0B8]={d="l"},
+ [0x1D0B9]={d="l"},
+ [0x1D0BA]={d="l"},
+ [0x1D0BB]={d="l"},
+ [0x1D0BC]={d="l"},
+ [0x1D0BD]={d="l"},
+ [0x1D0BE]={d="l"},
+ [0x1D0BF]={d="l"},
+ [0x1D0C0]={d="l"},
+ [0x1D0C1]={d="l"},
+ [0x1D0C2]={d="l"},
+ [0x1D0C3]={d="l"},
+ [0x1D0C4]={d="l"},
+ [0x1D0C5]={d="l"},
+ [0x1D0C6]={d="l"},
+ [0x1D0C7]={d="l"},
+ [0x1D0C8]={d="l"},
+ [0x1D0C9]={d="l"},
+ [0x1D0CA]={d="l"},
+ [0x1D0CB]={d="l"},
+ [0x1D0CC]={d="l"},
+ [0x1D0CD]={d="l"},
+ [0x1D0CE]={d="l"},
+ [0x1D0CF]={d="l"},
+ [0x1D0D0]={d="l"},
+ [0x1D0D1]={d="l"},
+ [0x1D0D2]={d="l"},
+ [0x1D0D3]={d="l"},
+ [0x1D0D4]={d="l"},
+ [0x1D0D5]={d="l"},
+ [0x1D0D6]={d="l"},
+ [0x1D0D7]={d="l"},
+ [0x1D0D8]={d="l"},
+ [0x1D0D9]={d="l"},
+ [0x1D0DA]={d="l"},
+ [0x1D0DB]={d="l"},
+ [0x1D0DC]={d="l"},
+ [0x1D0DD]={d="l"},
+ [0x1D0DE]={d="l"},
+ [0x1D0DF]={d="l"},
+ [0x1D0E0]={d="l"},
+ [0x1D0E1]={d="l"},
+ [0x1D0E2]={d="l"},
+ [0x1D0E3]={d="l"},
+ [0x1D0E4]={d="l"},
+ [0x1D0E5]={d="l"},
+ [0x1D0E6]={d="l"},
+ [0x1D0E7]={d="l"},
+ [0x1D0E8]={d="l"},
+ [0x1D0E9]={d="l"},
+ [0x1D0EA]={d="l"},
+ [0x1D0EB]={d="l"},
+ [0x1D0EC]={d="l"},
+ [0x1D0ED]={d="l"},
+ [0x1D0EE]={d="l"},
+ [0x1D0EF]={d="l"},
+ [0x1D0F0]={d="l"},
+ [0x1D0F1]={d="l"},
+ [0x1D0F2]={d="l"},
+ [0x1D0F3]={d="l"},
+ [0x1D0F4]={d="l"},
+ [0x1D0F5]={d="l"},
+ [0x1D100]={d="l"},
+ [0x1D101]={d="l"},
+ [0x1D102]={d="l"},
+ [0x1D103]={d="l"},
+ [0x1D104]={d="l"},
+ [0x1D105]={d="l"},
+ [0x1D106]={d="l"},
+ [0x1D107]={d="l"},
+ [0x1D108]={d="l"},
+ [0x1D109]={d="l"},
+ [0x1D10A]={d="l"},
+ [0x1D10B]={d="l"},
+ [0x1D10C]={d="l"},
+ [0x1D10D]={d="l"},
+ [0x1D10E]={d="l"},
+ [0x1D10F]={d="l"},
+ [0x1D110]={d="l"},
+ [0x1D111]={d="l"},
+ [0x1D112]={d="l"},
+ [0x1D113]={d="l"},
+ [0x1D114]={d="l"},
+ [0x1D115]={d="l"},
+ [0x1D116]={d="l"},
+ [0x1D117]={d="l"},
+ [0x1D118]={d="l"},
+ [0x1D119]={d="l"},
+ [0x1D11A]={d="l"},
+ [0x1D11B]={d="l"},
+ [0x1D11C]={d="l"},
+ [0x1D11D]={d="l"},
+ [0x1D11E]={d="l"},
+ [0x1D11F]={d="l"},
+ [0x1D120]={d="l"},
+ [0x1D121]={d="l"},
+ [0x1D122]={d="l"},
+ [0x1D123]={d="l"},
+ [0x1D124]={d="l"},
+ [0x1D125]={d="l"},
+ [0x1D126]={d="l"},
+ [0x1D129]={d="l"},
+ [0x1D12A]={d="l"},
+ [0x1D12B]={d="l"},
+ [0x1D12C]={d="l"},
+ [0x1D12D]={d="l"},
+ [0x1D12E]={d="l"},
+ [0x1D12F]={d="l"},
+ [0x1D130]={d="l"},
+ [0x1D131]={d="l"},
+ [0x1D132]={d="l"},
+ [0x1D133]={d="l"},
+ [0x1D134]={d="l"},
+ [0x1D135]={d="l"},
+ [0x1D136]={d="l"},
+ [0x1D137]={d="l"},
+ [0x1D138]={d="l"},
+ [0x1D139]={d="l"},
+ [0x1D13A]={d="l"},
+ [0x1D13B]={d="l"},
+ [0x1D13C]={d="l"},
+ [0x1D13D]={d="l"},
+ [0x1D13E]={d="l"},
+ [0x1D13F]={d="l"},
+ [0x1D140]={d="l"},
+ [0x1D141]={d="l"},
+ [0x1D142]={d="l"},
+ [0x1D143]={d="l"},
+ [0x1D144]={d="l"},
+ [0x1D145]={d="l"},
+ [0x1D146]={d="l"},
+ [0x1D147]={d="l"},
+ [0x1D148]={d="l"},
+ [0x1D149]={d="l"},
+ [0x1D14A]={d="l"},
+ [0x1D14B]={d="l"},
+ [0x1D14C]={d="l"},
+ [0x1D14D]={d="l"},
+ [0x1D14E]={d="l"},
+ [0x1D14F]={d="l"},
+ [0x1D150]={d="l"},
+ [0x1D151]={d="l"},
+ [0x1D152]={d="l"},
+ [0x1D153]={d="l"},
+ [0x1D154]={d="l"},
+ [0x1D155]={d="l"},
+ [0x1D156]={d="l"},
+ [0x1D157]={d="l"},
+ [0x1D158]={d="l"},
+ [0x1D159]={d="l"},
+ [0x1D15A]={d="l"},
+ [0x1D15B]={d="l"},
+ [0x1D15C]={d="l"},
+ [0x1D15D]={d="l"},
+ [0x1D15E]={d="l"},
+ [0x1D15F]={d="l"},
+ [0x1D160]={d="l"},
+ [0x1D161]={d="l"},
+ [0x1D162]={d="l"},
+ [0x1D163]={d="l"},
+ [0x1D164]={d="l"},
+ [0x1D165]={d="l"},
+ [0x1D166]={d="l"},
+ [0x1D167]={d="nsm"},
+ [0x1D168]={d="nsm"},
+ [0x1D169]={d="nsm"},
+ [0x1D16A]={d="l"},
+ [0x1D16B]={d="l"},
+ [0x1D16C]={d="l"},
+ [0x1D16D]={d="l"},
+ [0x1D16E]={d="l"},
+ [0x1D16F]={d="l"},
+ [0x1D170]={d="l"},
+ [0x1D171]={d="l"},
+ [0x1D172]={d="l"},
+ [0x1D173]={d="bn"},
+ [0x1D174]={d="bn"},
+ [0x1D175]={d="bn"},
+ [0x1D176]={d="bn"},
+ [0x1D177]={d="bn"},
+ [0x1D178]={d="bn"},
+ [0x1D179]={d="bn"},
+ [0x1D17A]={d="bn"},
+ [0x1D17B]={d="nsm"},
+ [0x1D17C]={d="nsm"},
+ [0x1D17D]={d="nsm"},
+ [0x1D17E]={d="nsm"},
+ [0x1D17F]={d="nsm"},
+ [0x1D180]={d="nsm"},
+ [0x1D181]={d="nsm"},
+ [0x1D182]={d="nsm"},
+ [0x1D183]={d="l"},
+ [0x1D184]={d="l"},
+ [0x1D185]={d="nsm"},
+ [0x1D186]={d="nsm"},
+ [0x1D187]={d="nsm"},
+ [0x1D188]={d="nsm"},
+ [0x1D189]={d="nsm"},
+ [0x1D18A]={d="nsm"},
+ [0x1D18B]={d="nsm"},
+ [0x1D18C]={d="l"},
+ [0x1D18D]={d="l"},
+ [0x1D18E]={d="l"},
+ [0x1D18F]={d="l"},
+ [0x1D190]={d="l"},
+ [0x1D191]={d="l"},
+ [0x1D192]={d="l"},
+ [0x1D193]={d="l"},
+ [0x1D194]={d="l"},
+ [0x1D195]={d="l"},
+ [0x1D196]={d="l"},
+ [0x1D197]={d="l"},
+ [0x1D198]={d="l"},
+ [0x1D199]={d="l"},
+ [0x1D19A]={d="l"},
+ [0x1D19B]={d="l"},
+ [0x1D19C]={d="l"},
+ [0x1D19D]={d="l"},
+ [0x1D19E]={d="l"},
+ [0x1D19F]={d="l"},
+ [0x1D1A0]={d="l"},
+ [0x1D1A1]={d="l"},
+ [0x1D1A2]={d="l"},
+ [0x1D1A3]={d="l"},
+ [0x1D1A4]={d="l"},
+ [0x1D1A5]={d="l"},
+ [0x1D1A6]={d="l"},
+ [0x1D1A7]={d="l"},
+ [0x1D1A8]={d="l"},
+ [0x1D1A9]={d="l"},
+ [0x1D1AA]={d="nsm"},
+ [0x1D1AB]={d="nsm"},
+ [0x1D1AC]={d="nsm"},
+ [0x1D1AD]={d="nsm"},
+ [0x1D1AE]={d="l"},
+ [0x1D1AF]={d="l"},
+ [0x1D1B0]={d="l"},
+ [0x1D1B1]={d="l"},
+ [0x1D1B2]={d="l"},
+ [0x1D1B3]={d="l"},
+ [0x1D1B4]={d="l"},
+ [0x1D1B5]={d="l"},
+ [0x1D1B6]={d="l"},
+ [0x1D1B7]={d="l"},
+ [0x1D1B8]={d="l"},
+ [0x1D1B9]={d="l"},
+ [0x1D1BA]={d="l"},
+ [0x1D1BB]={d="l"},
+ [0x1D1BC]={d="l"},
+ [0x1D1BD]={d="l"},
+ [0x1D1BE]={d="l"},
+ [0x1D1BF]={d="l"},
+ [0x1D1C0]={d="l"},
+ [0x1D1C1]={d="l"},
+ [0x1D1C2]={d="l"},
+ [0x1D1C3]={d="l"},
+ [0x1D1C4]={d="l"},
+ [0x1D1C5]={d="l"},
+ [0x1D1C6]={d="l"},
+ [0x1D1C7]={d="l"},
+ [0x1D1C8]={d="l"},
+ [0x1D1C9]={d="l"},
+ [0x1D1CA]={d="l"},
+ [0x1D1CB]={d="l"},
+ [0x1D1CC]={d="l"},
+ [0x1D1CD]={d="l"},
+ [0x1D1CE]={d="l"},
+ [0x1D1CF]={d="l"},
+ [0x1D1D0]={d="l"},
+ [0x1D1D1]={d="l"},
+ [0x1D1D2]={d="l"},
+ [0x1D1D3]={d="l"},
+ [0x1D1D4]={d="l"},
+ [0x1D1D5]={d="l"},
+ [0x1D1D6]={d="l"},
+ [0x1D1D7]={d="l"},
+ [0x1D1D8]={d="l"},
+ [0x1D1D9]={d="l"},
+ [0x1D1DA]={d="l"},
+ [0x1D1DB]={d="l"},
+ [0x1D1DC]={d="l"},
+ [0x1D1DD]={d="l"},
+ [0x1D1DE]={d="l"},
+ [0x1D1DF]={d="l"},
+ [0x1D1E0]={d="l"},
+ [0x1D1E1]={d="l"},
+ [0x1D1E2]={d="l"},
+ [0x1D1E3]={d="l"},
+ [0x1D1E4]={d="l"},
+ [0x1D1E5]={d="l"},
+ [0x1D1E6]={d="l"},
+ [0x1D1E7]={d="l"},
+ [0x1D1E8]={d="l"},
+ [0x1D1E9]={d="on"},
+ [0x1D1EA]={d="on"},
+ [0x1D200]={d="on"},
+ [0x1D201]={d="on"},
+ [0x1D202]={d="on"},
+ [0x1D203]={d="on"},
+ [0x1D204]={d="on"},
+ [0x1D205]={d="on"},
+ [0x1D206]={d="on"},
+ [0x1D207]={d="on"},
+ [0x1D208]={d="on"},
+ [0x1D209]={d="on"},
+ [0x1D20A]={d="on"},
+ [0x1D20B]={d="on"},
+ [0x1D20C]={d="on"},
+ [0x1D20D]={d="on"},
+ [0x1D20E]={d="on"},
+ [0x1D20F]={d="on"},
+ [0x1D210]={d="on"},
+ [0x1D211]={d="on"},
+ [0x1D212]={d="on"},
+ [0x1D213]={d="on"},
+ [0x1D214]={d="on"},
+ [0x1D215]={d="on"},
+ [0x1D216]={d="on"},
+ [0x1D217]={d="on"},
+ [0x1D218]={d="on"},
+ [0x1D219]={d="on"},
+ [0x1D21A]={d="on"},
+ [0x1D21B]={d="on"},
+ [0x1D21C]={d="on"},
+ [0x1D21D]={d="on"},
+ [0x1D21E]={d="on"},
+ [0x1D21F]={d="on"},
+ [0x1D220]={d="on"},
+ [0x1D221]={d="on"},
+ [0x1D222]={d="on"},
+ [0x1D223]={d="on"},
+ [0x1D224]={d="on"},
+ [0x1D225]={d="on"},
+ [0x1D226]={d="on"},
+ [0x1D227]={d="on"},
+ [0x1D228]={d="on"},
+ [0x1D229]={d="on"},
+ [0x1D22A]={d="on"},
+ [0x1D22B]={d="on"},
+ [0x1D22C]={d="on"},
+ [0x1D22D]={d="on"},
+ [0x1D22E]={d="on"},
+ [0x1D22F]={d="on"},
+ [0x1D230]={d="on"},
+ [0x1D231]={d="on"},
+ [0x1D232]={d="on"},
+ [0x1D233]={d="on"},
+ [0x1D234]={d="on"},
+ [0x1D235]={d="on"},
+ [0x1D236]={d="on"},
+ [0x1D237]={d="on"},
+ [0x1D238]={d="on"},
+ [0x1D239]={d="on"},
+ [0x1D23A]={d="on"},
+ [0x1D23B]={d="on"},
+ [0x1D23C]={d="on"},
+ [0x1D23D]={d="on"},
+ [0x1D23E]={d="on"},
+ [0x1D23F]={d="on"},
+ [0x1D240]={d="on"},
+ [0x1D241]={d="on"},
+ [0x1D242]={d="nsm"},
+ [0x1D243]={d="nsm"},
+ [0x1D244]={d="nsm"},
+ [0x1D245]={d="on"},
+ [0x1D2C0]={d="l"},
+ [0x1D2C1]={d="l"},
+ [0x1D2C2]={d="l"},
+ [0x1D2C3]={d="l"},
+ [0x1D2C4]={d="l"},
+ [0x1D2C5]={d="l"},
+ [0x1D2C6]={d="l"},
+ [0x1D2C7]={d="l"},
+ [0x1D2C8]={d="l"},
+ [0x1D2C9]={d="l"},
+ [0x1D2CA]={d="l"},
+ [0x1D2CB]={d="l"},
+ [0x1D2CC]={d="l"},
+ [0x1D2CD]={d="l"},
+ [0x1D2CE]={d="l"},
+ [0x1D2CF]={d="l"},
+ [0x1D2D0]={d="l"},
+ [0x1D2D1]={d="l"},
+ [0x1D2D2]={d="l"},
+ [0x1D2D3]={d="l"},
+ [0x1D2E0]={d="l"},
+ [0x1D2E1]={d="l"},
+ [0x1D2E2]={d="l"},
+ [0x1D2E3]={d="l"},
+ [0x1D2E4]={d="l"},
+ [0x1D2E5]={d="l"},
+ [0x1D2E6]={d="l"},
+ [0x1D2E7]={d="l"},
+ [0x1D2E8]={d="l"},
+ [0x1D2E9]={d="l"},
+ [0x1D2EA]={d="l"},
+ [0x1D2EB]={d="l"},
+ [0x1D2EC]={d="l"},
+ [0x1D2ED]={d="l"},
+ [0x1D2EE]={d="l"},
+ [0x1D2EF]={d="l"},
+ [0x1D2F0]={d="l"},
+ [0x1D2F1]={d="l"},
+ [0x1D2F2]={d="l"},
+ [0x1D2F3]={d="l"},
+ [0x1D300]={d="on"},
+ [0x1D301]={d="on"},
+ [0x1D302]={d="on"},
+ [0x1D303]={d="on"},
+ [0x1D304]={d="on"},
+ [0x1D305]={d="on"},
+ [0x1D306]={d="on"},
+ [0x1D307]={d="on"},
+ [0x1D308]={d="on"},
+ [0x1D309]={d="on"},
+ [0x1D30A]={d="on"},
+ [0x1D30B]={d="on"},
+ [0x1D30C]={d="on"},
+ [0x1D30D]={d="on"},
+ [0x1D30E]={d="on"},
+ [0x1D30F]={d="on"},
+ [0x1D310]={d="on"},
+ [0x1D311]={d="on"},
+ [0x1D312]={d="on"},
+ [0x1D313]={d="on"},
+ [0x1D314]={d="on"},
+ [0x1D315]={d="on"},
+ [0x1D316]={d="on"},
+ [0x1D317]={d="on"},
+ [0x1D318]={d="on"},
+ [0x1D319]={d="on"},
+ [0x1D31A]={d="on"},
+ [0x1D31B]={d="on"},
+ [0x1D31C]={d="on"},
+ [0x1D31D]={d="on"},
+ [0x1D31E]={d="on"},
+ [0x1D31F]={d="on"},
+ [0x1D320]={d="on"},
+ [0x1D321]={d="on"},
+ [0x1D322]={d="on"},
+ [0x1D323]={d="on"},
+ [0x1D324]={d="on"},
+ [0x1D325]={d="on"},
+ [0x1D326]={d="on"},
+ [0x1D327]={d="on"},
+ [0x1D328]={d="on"},
+ [0x1D329]={d="on"},
+ [0x1D32A]={d="on"},
+ [0x1D32B]={d="on"},
+ [0x1D32C]={d="on"},
+ [0x1D32D]={d="on"},
+ [0x1D32E]={d="on"},
+ [0x1D32F]={d="on"},
+ [0x1D330]={d="on"},
+ [0x1D331]={d="on"},
+ [0x1D332]={d="on"},
+ [0x1D333]={d="on"},
+ [0x1D334]={d="on"},
+ [0x1D335]={d="on"},
+ [0x1D336]={d="on"},
+ [0x1D337]={d="on"},
+ [0x1D338]={d="on"},
+ [0x1D339]={d="on"},
+ [0x1D33A]={d="on"},
+ [0x1D33B]={d="on"},
+ [0x1D33C]={d="on"},
+ [0x1D33D]={d="on"},
+ [0x1D33E]={d="on"},
+ [0x1D33F]={d="on"},
+ [0x1D340]={d="on"},
+ [0x1D341]={d="on"},
+ [0x1D342]={d="on"},
+ [0x1D343]={d="on"},
+ [0x1D344]={d="on"},
+ [0x1D345]={d="on"},
+ [0x1D346]={d="on"},
+ [0x1D347]={d="on"},
+ [0x1D348]={d="on"},
+ [0x1D349]={d="on"},
+ [0x1D34A]={d="on"},
+ [0x1D34B]={d="on"},
+ [0x1D34C]={d="on"},
+ [0x1D34D]={d="on"},
+ [0x1D34E]={d="on"},
+ [0x1D34F]={d="on"},
+ [0x1D350]={d="on"},
+ [0x1D351]={d="on"},
+ [0x1D352]={d="on"},
+ [0x1D353]={d="on"},
+ [0x1D354]={d="on"},
+ [0x1D355]={d="on"},
+ [0x1D356]={d="on"},
+ [0x1D360]={d="l"},
+ [0x1D361]={d="l"},
+ [0x1D362]={d="l"},
+ [0x1D363]={d="l"},
+ [0x1D364]={d="l"},
+ [0x1D365]={d="l"},
+ [0x1D366]={d="l"},
+ [0x1D367]={d="l"},
+ [0x1D368]={d="l"},
+ [0x1D369]={d="l"},
+ [0x1D36A]={d="l"},
+ [0x1D36B]={d="l"},
+ [0x1D36C]={d="l"},
+ [0x1D36D]={d="l"},
+ [0x1D36E]={d="l"},
+ [0x1D36F]={d="l"},
+ [0x1D370]={d="l"},
+ [0x1D371]={d="l"},
+ [0x1D372]={d="l"},
+ [0x1D373]={d="l"},
+ [0x1D374]={d="l"},
+ [0x1D375]={d="l"},
+ [0x1D376]={d="l"},
+ [0x1D377]={d="l"},
+ [0x1D378]={d="l"},
+ [0x1D400]={d="l"},
+ [0x1D401]={d="l"},
+ [0x1D402]={d="l"},
+ [0x1D403]={d="l"},
+ [0x1D404]={d="l"},
+ [0x1D405]={d="l"},
+ [0x1D406]={d="l"},
+ [0x1D407]={d="l"},
+ [0x1D408]={d="l"},
+ [0x1D409]={d="l"},
+ [0x1D40A]={d="l"},
+ [0x1D40B]={d="l"},
+ [0x1D40C]={d="l"},
+ [0x1D40D]={d="l"},
+ [0x1D40E]={d="l"},
+ [0x1D40F]={d="l"},
+ [0x1D410]={d="l"},
+ [0x1D411]={d="l"},
+ [0x1D412]={d="l"},
+ [0x1D413]={d="l"},
+ [0x1D414]={d="l"},
+ [0x1D415]={d="l"},
+ [0x1D416]={d="l"},
+ [0x1D417]={d="l"},
+ [0x1D418]={d="l"},
+ [0x1D419]={d="l"},
+ [0x1D41A]={d="l"},
+ [0x1D41B]={d="l"},
+ [0x1D41C]={d="l"},
+ [0x1D41D]={d="l"},
+ [0x1D41E]={d="l"},
+ [0x1D41F]={d="l"},
+ [0x1D420]={d="l"},
+ [0x1D421]={d="l"},
+ [0x1D422]={d="l"},
+ [0x1D423]={d="l"},
+ [0x1D424]={d="l"},
+ [0x1D425]={d="l"},
+ [0x1D426]={d="l"},
+ [0x1D427]={d="l"},
+ [0x1D428]={d="l"},
+ [0x1D429]={d="l"},
+ [0x1D42A]={d="l"},
+ [0x1D42B]={d="l"},
+ [0x1D42C]={d="l"},
+ [0x1D42D]={d="l"},
+ [0x1D42E]={d="l"},
+ [0x1D42F]={d="l"},
+ [0x1D430]={d="l"},
+ [0x1D431]={d="l"},
+ [0x1D432]={d="l"},
+ [0x1D433]={d="l"},
+ [0x1D434]={d="l"},
+ [0x1D435]={d="l"},
+ [0x1D436]={d="l"},
+ [0x1D437]={d="l"},
+ [0x1D438]={d="l"},
+ [0x1D439]={d="l"},
+ [0x1D43A]={d="l"},
+ [0x1D43B]={d="l"},
+ [0x1D43C]={d="l"},
+ [0x1D43D]={d="l"},
+ [0x1D43E]={d="l"},
+ [0x1D43F]={d="l"},
+ [0x1D440]={d="l"},
+ [0x1D441]={d="l"},
+ [0x1D442]={d="l"},
+ [0x1D443]={d="l"},
+ [0x1D444]={d="l"},
+ [0x1D445]={d="l"},
+ [0x1D446]={d="l"},
+ [0x1D447]={d="l"},
+ [0x1D448]={d="l"},
+ [0x1D449]={d="l"},
+ [0x1D44A]={d="l"},
+ [0x1D44B]={d="l"},
+ [0x1D44C]={d="l"},
+ [0x1D44D]={d="l"},
+ [0x1D44E]={d="l"},
+ [0x1D44F]={d="l"},
+ [0x1D450]={d="l"},
+ [0x1D451]={d="l"},
+ [0x1D452]={d="l"},
+ [0x1D453]={d="l"},
+ [0x1D454]={d="l"},
+ [0x1D456]={d="l"},
+ [0x1D457]={d="l"},
+ [0x1D458]={d="l"},
+ [0x1D459]={d="l"},
+ [0x1D45A]={d="l"},
+ [0x1D45B]={d="l"},
+ [0x1D45C]={d="l"},
+ [0x1D45D]={d="l"},
+ [0x1D45E]={d="l"},
+ [0x1D45F]={d="l"},
+ [0x1D460]={d="l"},
+ [0x1D461]={d="l"},
+ [0x1D462]={d="l"},
+ [0x1D463]={d="l"},
+ [0x1D464]={d="l"},
+ [0x1D465]={d="l"},
+ [0x1D466]={d="l"},
+ [0x1D467]={d="l"},
+ [0x1D468]={d="l"},
+ [0x1D469]={d="l"},
+ [0x1D46A]={d="l"},
+ [0x1D46B]={d="l"},
+ [0x1D46C]={d="l"},
+ [0x1D46D]={d="l"},
+ [0x1D46E]={d="l"},
+ [0x1D46F]={d="l"},
+ [0x1D470]={d="l"},
+ [0x1D471]={d="l"},
+ [0x1D472]={d="l"},
+ [0x1D473]={d="l"},
+ [0x1D474]={d="l"},
+ [0x1D475]={d="l"},
+ [0x1D476]={d="l"},
+ [0x1D477]={d="l"},
+ [0x1D478]={d="l"},
+ [0x1D479]={d="l"},
+ [0x1D47A]={d="l"},
+ [0x1D47B]={d="l"},
+ [0x1D47C]={d="l"},
+ [0x1D47D]={d="l"},
+ [0x1D47E]={d="l"},
+ [0x1D47F]={d="l"},
+ [0x1D480]={d="l"},
+ [0x1D481]={d="l"},
+ [0x1D482]={d="l"},
+ [0x1D483]={d="l"},
+ [0x1D484]={d="l"},
+ [0x1D485]={d="l"},
+ [0x1D486]={d="l"},
+ [0x1D487]={d="l"},
+ [0x1D488]={d="l"},
+ [0x1D489]={d="l"},
+ [0x1D48A]={d="l"},
+ [0x1D48B]={d="l"},
+ [0x1D48C]={d="l"},
+ [0x1D48D]={d="l"},
+ [0x1D48E]={d="l"},
+ [0x1D48F]={d="l"},
+ [0x1D490]={d="l"},
+ [0x1D491]={d="l"},
+ [0x1D492]={d="l"},
+ [0x1D493]={d="l"},
+ [0x1D494]={d="l"},
+ [0x1D495]={d="l"},
+ [0x1D496]={d="l"},
+ [0x1D497]={d="l"},
+ [0x1D498]={d="l"},
+ [0x1D499]={d="l"},
+ [0x1D49A]={d="l"},
+ [0x1D49B]={d="l"},
+ [0x1D49C]={d="l"},
+ [0x1D49E]={d="l"},
+ [0x1D49F]={d="l"},
+ [0x1D4A2]={d="l"},
+ [0x1D4A5]={d="l"},
+ [0x1D4A6]={d="l"},
+ [0x1D4A9]={d="l"},
+ [0x1D4AA]={d="l"},
+ [0x1D4AB]={d="l"},
+ [0x1D4AC]={d="l"},
+ [0x1D4AE]={d="l"},
+ [0x1D4AF]={d="l"},
+ [0x1D4B0]={d="l"},
+ [0x1D4B1]={d="l"},
+ [0x1D4B2]={d="l"},
+ [0x1D4B3]={d="l"},
+ [0x1D4B4]={d="l"},
+ [0x1D4B5]={d="l"},
+ [0x1D4B6]={d="l"},
+ [0x1D4B7]={d="l"},
+ [0x1D4B8]={d="l"},
+ [0x1D4B9]={d="l"},
+ [0x1D4BB]={d="l"},
+ [0x1D4BD]={d="l"},
+ [0x1D4BE]={d="l"},
+ [0x1D4BF]={d="l"},
+ [0x1D4C0]={d="l"},
+ [0x1D4C1]={d="l"},
+ [0x1D4C2]={d="l"},
+ [0x1D4C3]={d="l"},
+ [0x1D4C5]={d="l"},
+ [0x1D4C6]={d="l"},
+ [0x1D4C7]={d="l"},
+ [0x1D4C8]={d="l"},
+ [0x1D4C9]={d="l"},
+ [0x1D4CA]={d="l"},
+ [0x1D4CB]={d="l"},
+ [0x1D4CC]={d="l"},
+ [0x1D4CD]={d="l"},
+ [0x1D4CE]={d="l"},
+ [0x1D4CF]={d="l"},
+ [0x1D4D0]={d="l"},
+ [0x1D4D1]={d="l"},
+ [0x1D4D2]={d="l"},
+ [0x1D4D3]={d="l"},
+ [0x1D4D4]={d="l"},
+ [0x1D4D5]={d="l"},
+ [0x1D4D6]={d="l"},
+ [0x1D4D7]={d="l"},
+ [0x1D4D8]={d="l"},
+ [0x1D4D9]={d="l"},
+ [0x1D4DA]={d="l"},
+ [0x1D4DB]={d="l"},
+ [0x1D4DC]={d="l"},
+ [0x1D4DD]={d="l"},
+ [0x1D4DE]={d="l"},
+ [0x1D4DF]={d="l"},
+ [0x1D4E0]={d="l"},
+ [0x1D4E1]={d="l"},
+ [0x1D4E2]={d="l"},
+ [0x1D4E3]={d="l"},
+ [0x1D4E4]={d="l"},
+ [0x1D4E5]={d="l"},
+ [0x1D4E6]={d="l"},
+ [0x1D4E7]={d="l"},
+ [0x1D4E8]={d="l"},
+ [0x1D4E9]={d="l"},
+ [0x1D4EA]={d="l"},
+ [0x1D4EB]={d="l"},
+ [0x1D4EC]={d="l"},
+ [0x1D4ED]={d="l"},
+ [0x1D4EE]={d="l"},
+ [0x1D4EF]={d="l"},
+ [0x1D4F0]={d="l"},
+ [0x1D4F1]={d="l"},
+ [0x1D4F2]={d="l"},
+ [0x1D4F3]={d="l"},
+ [0x1D4F4]={d="l"},
+ [0x1D4F5]={d="l"},
+ [0x1D4F6]={d="l"},
+ [0x1D4F7]={d="l"},
+ [0x1D4F8]={d="l"},
+ [0x1D4F9]={d="l"},
+ [0x1D4FA]={d="l"},
+ [0x1D4FB]={d="l"},
+ [0x1D4FC]={d="l"},
+ [0x1D4FD]={d="l"},
+ [0x1D4FE]={d="l"},
+ [0x1D4FF]={d="l"},
+ [0x1D500]={d="l"},
+ [0x1D501]={d="l"},
+ [0x1D502]={d="l"},
+ [0x1D503]={d="l"},
+ [0x1D504]={d="l"},
+ [0x1D505]={d="l"},
+ [0x1D507]={d="l"},
+ [0x1D508]={d="l"},
+ [0x1D509]={d="l"},
+ [0x1D50A]={d="l"},
+ [0x1D50D]={d="l"},
+ [0x1D50E]={d="l"},
+ [0x1D50F]={d="l"},
+ [0x1D510]={d="l"},
+ [0x1D511]={d="l"},
+ [0x1D512]={d="l"},
+ [0x1D513]={d="l"},
+ [0x1D514]={d="l"},
+ [0x1D516]={d="l"},
+ [0x1D517]={d="l"},
+ [0x1D518]={d="l"},
+ [0x1D519]={d="l"},
+ [0x1D51A]={d="l"},
+ [0x1D51B]={d="l"},
+ [0x1D51C]={d="l"},
+ [0x1D51E]={d="l"},
+ [0x1D51F]={d="l"},
+ [0x1D520]={d="l"},
+ [0x1D521]={d="l"},
+ [0x1D522]={d="l"},
+ [0x1D523]={d="l"},
+ [0x1D524]={d="l"},
+ [0x1D525]={d="l"},
+ [0x1D526]={d="l"},
+ [0x1D527]={d="l"},
+ [0x1D528]={d="l"},
+ [0x1D529]={d="l"},
+ [0x1D52A]={d="l"},
+ [0x1D52B]={d="l"},
+ [0x1D52C]={d="l"},
+ [0x1D52D]={d="l"},
+ [0x1D52E]={d="l"},
+ [0x1D52F]={d="l"},
+ [0x1D530]={d="l"},
+ [0x1D531]={d="l"},
+ [0x1D532]={d="l"},
+ [0x1D533]={d="l"},
+ [0x1D534]={d="l"},
+ [0x1D535]={d="l"},
+ [0x1D536]={d="l"},
+ [0x1D537]={d="l"},
+ [0x1D538]={d="l"},
+ [0x1D539]={d="l"},
+ [0x1D53B]={d="l"},
+ [0x1D53C]={d="l"},
+ [0x1D53D]={d="l"},
+ [0x1D53E]={d="l"},
+ [0x1D540]={d="l"},
+ [0x1D541]={d="l"},
+ [0x1D542]={d="l"},
+ [0x1D543]={d="l"},
+ [0x1D544]={d="l"},
+ [0x1D546]={d="l"},
+ [0x1D54A]={d="l"},
+ [0x1D54B]={d="l"},
+ [0x1D54C]={d="l"},
+ [0x1D54D]={d="l"},
+ [0x1D54E]={d="l"},
+ [0x1D54F]={d="l"},
+ [0x1D550]={d="l"},
+ [0x1D552]={d="l"},
+ [0x1D553]={d="l"},
+ [0x1D554]={d="l"},
+ [0x1D555]={d="l"},
+ [0x1D556]={d="l"},
+ [0x1D557]={d="l"},
+ [0x1D558]={d="l"},
+ [0x1D559]={d="l"},
+ [0x1D55A]={d="l"},
+ [0x1D55B]={d="l"},
+ [0x1D55C]={d="l"},
+ [0x1D55D]={d="l"},
+ [0x1D55E]={d="l"},
+ [0x1D55F]={d="l"},
+ [0x1D560]={d="l"},
+ [0x1D561]={d="l"},
+ [0x1D562]={d="l"},
+ [0x1D563]={d="l"},
+ [0x1D564]={d="l"},
+ [0x1D565]={d="l"},
+ [0x1D566]={d="l"},
+ [0x1D567]={d="l"},
+ [0x1D568]={d="l"},
+ [0x1D569]={d="l"},
+ [0x1D56A]={d="l"},
+ [0x1D56B]={d="l"},
+ [0x1D56C]={d="l"},
+ [0x1D56D]={d="l"},
+ [0x1D56E]={d="l"},
+ [0x1D56F]={d="l"},
+ [0x1D570]={d="l"},
+ [0x1D571]={d="l"},
+ [0x1D572]={d="l"},
+ [0x1D573]={d="l"},
+ [0x1D574]={d="l"},
+ [0x1D575]={d="l"},
+ [0x1D576]={d="l"},
+ [0x1D577]={d="l"},
+ [0x1D578]={d="l"},
+ [0x1D579]={d="l"},
+ [0x1D57A]={d="l"},
+ [0x1D57B]={d="l"},
+ [0x1D57C]={d="l"},
+ [0x1D57D]={d="l"},
+ [0x1D57E]={d="l"},
+ [0x1D57F]={d="l"},
+ [0x1D580]={d="l"},
+ [0x1D581]={d="l"},
+ [0x1D582]={d="l"},
+ [0x1D583]={d="l"},
+ [0x1D584]={d="l"},
+ [0x1D585]={d="l"},
+ [0x1D586]={d="l"},
+ [0x1D587]={d="l"},
+ [0x1D588]={d="l"},
+ [0x1D589]={d="l"},
+ [0x1D58A]={d="l"},
+ [0x1D58B]={d="l"},
+ [0x1D58C]={d="l"},
+ [0x1D58D]={d="l"},
+ [0x1D58E]={d="l"},
+ [0x1D58F]={d="l"},
+ [0x1D590]={d="l"},
+ [0x1D591]={d="l"},
+ [0x1D592]={d="l"},
+ [0x1D593]={d="l"},
+ [0x1D594]={d="l"},
+ [0x1D595]={d="l"},
+ [0x1D596]={d="l"},
+ [0x1D597]={d="l"},
+ [0x1D598]={d="l"},
+ [0x1D599]={d="l"},
+ [0x1D59A]={d="l"},
+ [0x1D59B]={d="l"},
+ [0x1D59C]={d="l"},
+ [0x1D59D]={d="l"},
+ [0x1D59E]={d="l"},
+ [0x1D59F]={d="l"},
+ [0x1D5A0]={d="l"},
+ [0x1D5A1]={d="l"},
+ [0x1D5A2]={d="l"},
+ [0x1D5A3]={d="l"},
+ [0x1D5A4]={d="l"},
+ [0x1D5A5]={d="l"},
+ [0x1D5A6]={d="l"},
+ [0x1D5A7]={d="l"},
+ [0x1D5A8]={d="l"},
+ [0x1D5A9]={d="l"},
+ [0x1D5AA]={d="l"},
+ [0x1D5AB]={d="l"},
+ [0x1D5AC]={d="l"},
+ [0x1D5AD]={d="l"},
+ [0x1D5AE]={d="l"},
+ [0x1D5AF]={d="l"},
+ [0x1D5B0]={d="l"},
+ [0x1D5B1]={d="l"},
+ [0x1D5B2]={d="l"},
+ [0x1D5B3]={d="l"},
+ [0x1D5B4]={d="l"},
+ [0x1D5B5]={d="l"},
+ [0x1D5B6]={d="l"},
+ [0x1D5B7]={d="l"},
+ [0x1D5B8]={d="l"},
+ [0x1D5B9]={d="l"},
+ [0x1D5BA]={d="l"},
+ [0x1D5BB]={d="l"},
+ [0x1D5BC]={d="l"},
+ [0x1D5BD]={d="l"},
+ [0x1D5BE]={d="l"},
+ [0x1D5BF]={d="l"},
+ [0x1D5C0]={d="l"},
+ [0x1D5C1]={d="l"},
+ [0x1D5C2]={d="l"},
+ [0x1D5C3]={d="l"},
+ [0x1D5C4]={d="l"},
+ [0x1D5C5]={d="l"},
+ [0x1D5C6]={d="l"},
+ [0x1D5C7]={d="l"},
+ [0x1D5C8]={d="l"},
+ [0x1D5C9]={d="l"},
+ [0x1D5CA]={d="l"},
+ [0x1D5CB]={d="l"},
+ [0x1D5CC]={d="l"},
+ [0x1D5CD]={d="l"},
+ [0x1D5CE]={d="l"},
+ [0x1D5CF]={d="l"},
+ [0x1D5D0]={d="l"},
+ [0x1D5D1]={d="l"},
+ [0x1D5D2]={d="l"},
+ [0x1D5D3]={d="l"},
+ [0x1D5D4]={d="l"},
+ [0x1D5D5]={d="l"},
+ [0x1D5D6]={d="l"},
+ [0x1D5D7]={d="l"},
+ [0x1D5D8]={d="l"},
+ [0x1D5D9]={d="l"},
+ [0x1D5DA]={d="l"},
+ [0x1D5DB]={d="l"},
+ [0x1D5DC]={d="l"},
+ [0x1D5DD]={d="l"},
+ [0x1D5DE]={d="l"},
+ [0x1D5DF]={d="l"},
+ [0x1D5E0]={d="l"},
+ [0x1D5E1]={d="l"},
+ [0x1D5E2]={d="l"},
+ [0x1D5E3]={d="l"},
+ [0x1D5E4]={d="l"},
+ [0x1D5E5]={d="l"},
+ [0x1D5E6]={d="l"},
+ [0x1D5E7]={d="l"},
+ [0x1D5E8]={d="l"},
+ [0x1D5E9]={d="l"},
+ [0x1D5EA]={d="l"},
+ [0x1D5EB]={d="l"},
+ [0x1D5EC]={d="l"},
+ [0x1D5ED]={d="l"},
+ [0x1D5EE]={d="l"},
+ [0x1D5EF]={d="l"},
+ [0x1D5F0]={d="l"},
+ [0x1D5F1]={d="l"},
+ [0x1D5F2]={d="l"},
+ [0x1D5F3]={d="l"},
+ [0x1D5F4]={d="l"},
+ [0x1D5F5]={d="l"},
+ [0x1D5F6]={d="l"},
+ [0x1D5F7]={d="l"},
+ [0x1D5F8]={d="l"},
+ [0x1D5F9]={d="l"},
+ [0x1D5FA]={d="l"},
+ [0x1D5FB]={d="l"},
+ [0x1D5FC]={d="l"},
+ [0x1D5FD]={d="l"},
+ [0x1D5FE]={d="l"},
+ [0x1D5FF]={d="l"},
+ [0x1D600]={d="l"},
+ [0x1D601]={d="l"},
+ [0x1D602]={d="l"},
+ [0x1D603]={d="l"},
+ [0x1D604]={d="l"},
+ [0x1D605]={d="l"},
+ [0x1D606]={d="l"},
+ [0x1D607]={d="l"},
+ [0x1D608]={d="l"},
+ [0x1D609]={d="l"},
+ [0x1D60A]={d="l"},
+ [0x1D60B]={d="l"},
+ [0x1D60C]={d="l"},
+ [0x1D60D]={d="l"},
+ [0x1D60E]={d="l"},
+ [0x1D60F]={d="l"},
+ [0x1D610]={d="l"},
+ [0x1D611]={d="l"},
+ [0x1D612]={d="l"},
+ [0x1D613]={d="l"},
+ [0x1D614]={d="l"},
+ [0x1D615]={d="l"},
+ [0x1D616]={d="l"},
+ [0x1D617]={d="l"},
+ [0x1D618]={d="l"},
+ [0x1D619]={d="l"},
+ [0x1D61A]={d="l"},
+ [0x1D61B]={d="l"},
+ [0x1D61C]={d="l"},
+ [0x1D61D]={d="l"},
+ [0x1D61E]={d="l"},
+ [0x1D61F]={d="l"},
+ [0x1D620]={d="l"},
+ [0x1D621]={d="l"},
+ [0x1D622]={d="l"},
+ [0x1D623]={d="l"},
+ [0x1D624]={d="l"},
+ [0x1D625]={d="l"},
+ [0x1D626]={d="l"},
+ [0x1D627]={d="l"},
+ [0x1D628]={d="l"},
+ [0x1D629]={d="l"},
+ [0x1D62A]={d="l"},
+ [0x1D62B]={d="l"},
+ [0x1D62C]={d="l"},
+ [0x1D62D]={d="l"},
+ [0x1D62E]={d="l"},
+ [0x1D62F]={d="l"},
+ [0x1D630]={d="l"},
+ [0x1D631]={d="l"},
+ [0x1D632]={d="l"},
+ [0x1D633]={d="l"},
+ [0x1D634]={d="l"},
+ [0x1D635]={d="l"},
+ [0x1D636]={d="l"},
+ [0x1D637]={d="l"},
+ [0x1D638]={d="l"},
+ [0x1D639]={d="l"},
+ [0x1D63A]={d="l"},
+ [0x1D63B]={d="l"},
+ [0x1D63C]={d="l"},
+ [0x1D63D]={d="l"},
+ [0x1D63E]={d="l"},
+ [0x1D63F]={d="l"},
+ [0x1D640]={d="l"},
+ [0x1D641]={d="l"},
+ [0x1D642]={d="l"},
+ [0x1D643]={d="l"},
+ [0x1D644]={d="l"},
+ [0x1D645]={d="l"},
+ [0x1D646]={d="l"},
+ [0x1D647]={d="l"},
+ [0x1D648]={d="l"},
+ [0x1D649]={d="l"},
+ [0x1D64A]={d="l"},
+ [0x1D64B]={d="l"},
+ [0x1D64C]={d="l"},
+ [0x1D64D]={d="l"},
+ [0x1D64E]={d="l"},
+ [0x1D64F]={d="l"},
+ [0x1D650]={d="l"},
+ [0x1D651]={d="l"},
+ [0x1D652]={d="l"},
+ [0x1D653]={d="l"},
+ [0x1D654]={d="l"},
+ [0x1D655]={d="l"},
+ [0x1D656]={d="l"},
+ [0x1D657]={d="l"},
+ [0x1D658]={d="l"},
+ [0x1D659]={d="l"},
+ [0x1D65A]={d="l"},
+ [0x1D65B]={d="l"},
+ [0x1D65C]={d="l"},
+ [0x1D65D]={d="l"},
+ [0x1D65E]={d="l"},
+ [0x1D65F]={d="l"},
+ [0x1D660]={d="l"},
+ [0x1D661]={d="l"},
+ [0x1D662]={d="l"},
+ [0x1D663]={d="l"},
+ [0x1D664]={d="l"},
+ [0x1D665]={d="l"},
+ [0x1D666]={d="l"},
+ [0x1D667]={d="l"},
+ [0x1D668]={d="l"},
+ [0x1D669]={d="l"},
+ [0x1D66A]={d="l"},
+ [0x1D66B]={d="l"},
+ [0x1D66C]={d="l"},
+ [0x1D66D]={d="l"},
+ [0x1D66E]={d="l"},
+ [0x1D66F]={d="l"},
+ [0x1D670]={d="l"},
+ [0x1D671]={d="l"},
+ [0x1D672]={d="l"},
+ [0x1D673]={d="l"},
+ [0x1D674]={d="l"},
+ [0x1D675]={d="l"},
+ [0x1D676]={d="l"},
+ [0x1D677]={d="l"},
+ [0x1D678]={d="l"},
+ [0x1D679]={d="l"},
+ [0x1D67A]={d="l"},
+ [0x1D67B]={d="l"},
+ [0x1D67C]={d="l"},
+ [0x1D67D]={d="l"},
+ [0x1D67E]={d="l"},
+ [0x1D67F]={d="l"},
+ [0x1D680]={d="l"},
+ [0x1D681]={d="l"},
+ [0x1D682]={d="l"},
+ [0x1D683]={d="l"},
+ [0x1D684]={d="l"},
+ [0x1D685]={d="l"},
+ [0x1D686]={d="l"},
+ [0x1D687]={d="l"},
+ [0x1D688]={d="l"},
+ [0x1D689]={d="l"},
+ [0x1D68A]={d="l"},
+ [0x1D68B]={d="l"},
+ [0x1D68C]={d="l"},
+ [0x1D68D]={d="l"},
+ [0x1D68E]={d="l"},
+ [0x1D68F]={d="l"},
+ [0x1D690]={d="l"},
+ [0x1D691]={d="l"},
+ [0x1D692]={d="l"},
+ [0x1D693]={d="l"},
+ [0x1D694]={d="l"},
+ [0x1D695]={d="l"},
+ [0x1D696]={d="l"},
+ [0x1D697]={d="l"},
+ [0x1D698]={d="l"},
+ [0x1D699]={d="l"},
+ [0x1D69A]={d="l"},
+ [0x1D69B]={d="l"},
+ [0x1D69C]={d="l"},
+ [0x1D69D]={d="l"},
+ [0x1D69E]={d="l"},
+ [0x1D69F]={d="l"},
+ [0x1D6A0]={d="l"},
+ [0x1D6A1]={d="l"},
+ [0x1D6A2]={d="l"},
+ [0x1D6A3]={d="l"},
+ [0x1D6A4]={d="l"},
+ [0x1D6A5]={d="l"},
+ [0x1D6A8]={d="l"},
+ [0x1D6A9]={d="l"},
+ [0x1D6AA]={d="l"},
+ [0x1D6AB]={d="l"},
+ [0x1D6AC]={d="l"},
+ [0x1D6AD]={d="l"},
+ [0x1D6AE]={d="l"},
+ [0x1D6AF]={d="l"},
+ [0x1D6B0]={d="l"},
+ [0x1D6B1]={d="l"},
+ [0x1D6B2]={d="l"},
+ [0x1D6B3]={d="l"},
+ [0x1D6B4]={d="l"},
+ [0x1D6B5]={d="l"},
+ [0x1D6B6]={d="l"},
+ [0x1D6B7]={d="l"},
+ [0x1D6B8]={d="l"},
+ [0x1D6B9]={d="l"},
+ [0x1D6BA]={d="l"},
+ [0x1D6BB]={d="l"},
+ [0x1D6BC]={d="l"},
+ [0x1D6BD]={d="l"},
+ [0x1D6BE]={d="l"},
+ [0x1D6BF]={d="l"},
+ [0x1D6C0]={d="l"},
+ [0x1D6C1]={d="l"},
+ [0x1D6C2]={d="l"},
+ [0x1D6C3]={d="l"},
+ [0x1D6C4]={d="l"},
+ [0x1D6C5]={d="l"},
+ [0x1D6C6]={d="l"},
+ [0x1D6C7]={d="l"},
+ [0x1D6C8]={d="l"},
+ [0x1D6C9]={d="l"},
+ [0x1D6CA]={d="l"},
+ [0x1D6CB]={d="l"},
+ [0x1D6CC]={d="l"},
+ [0x1D6CD]={d="l"},
+ [0x1D6CE]={d="l"},
+ [0x1D6CF]={d="l"},
+ [0x1D6D0]={d="l"},
+ [0x1D6D1]={d="l"},
+ [0x1D6D2]={d="l"},
+ [0x1D6D3]={d="l"},
+ [0x1D6D4]={d="l"},
+ [0x1D6D5]={d="l"},
+ [0x1D6D6]={d="l"},
+ [0x1D6D7]={d="l"},
+ [0x1D6D8]={d="l"},
+ [0x1D6D9]={d="l"},
+ [0x1D6DA]={d="l"},
+ [0x1D6DB]={d="on"},
+ [0x1D6DC]={d="l"},
+ [0x1D6DD]={d="l"},
+ [0x1D6DE]={d="l"},
+ [0x1D6DF]={d="l"},
+ [0x1D6E0]={d="l"},
+ [0x1D6E1]={d="l"},
+ [0x1D6E2]={d="l"},
+ [0x1D6E3]={d="l"},
+ [0x1D6E4]={d="l"},
+ [0x1D6E5]={d="l"},
+ [0x1D6E6]={d="l"},
+ [0x1D6E7]={d="l"},
+ [0x1D6E8]={d="l"},
+ [0x1D6E9]={d="l"},
+ [0x1D6EA]={d="l"},
+ [0x1D6EB]={d="l"},
+ [0x1D6EC]={d="l"},
+ [0x1D6ED]={d="l"},
+ [0x1D6EE]={d="l"},
+ [0x1D6EF]={d="l"},
+ [0x1D6F0]={d="l"},
+ [0x1D6F1]={d="l"},
+ [0x1D6F2]={d="l"},
+ [0x1D6F3]={d="l"},
+ [0x1D6F4]={d="l"},
+ [0x1D6F5]={d="l"},
+ [0x1D6F6]={d="l"},
+ [0x1D6F7]={d="l"},
+ [0x1D6F8]={d="l"},
+ [0x1D6F9]={d="l"},
+ [0x1D6FA]={d="l"},
+ [0x1D6FB]={d="l"},
+ [0x1D6FC]={d="l"},
+ [0x1D6FD]={d="l"},
+ [0x1D6FE]={d="l"},
+ [0x1D6FF]={d="l"},
+ [0x1D700]={d="l"},
+ [0x1D701]={d="l"},
+ [0x1D702]={d="l"},
+ [0x1D703]={d="l"},
+ [0x1D704]={d="l"},
+ [0x1D705]={d="l"},
+ [0x1D706]={d="l"},
+ [0x1D707]={d="l"},
+ [0x1D708]={d="l"},
+ [0x1D709]={d="l"},
+ [0x1D70A]={d="l"},
+ [0x1D70B]={d="l"},
+ [0x1D70C]={d="l"},
+ [0x1D70D]={d="l"},
+ [0x1D70E]={d="l"},
+ [0x1D70F]={d="l"},
+ [0x1D710]={d="l"},
+ [0x1D711]={d="l"},
+ [0x1D712]={d="l"},
+ [0x1D713]={d="l"},
+ [0x1D714]={d="l"},
+ [0x1D715]={d="on"},
+ [0x1D716]={d="l"},
+ [0x1D717]={d="l"},
+ [0x1D718]={d="l"},
+ [0x1D719]={d="l"},
+ [0x1D71A]={d="l"},
+ [0x1D71B]={d="l"},
+ [0x1D71C]={d="l"},
+ [0x1D71D]={d="l"},
+ [0x1D71E]={d="l"},
+ [0x1D71F]={d="l"},
+ [0x1D720]={d="l"},
+ [0x1D721]={d="l"},
+ [0x1D722]={d="l"},
+ [0x1D723]={d="l"},
+ [0x1D724]={d="l"},
+ [0x1D725]={d="l"},
+ [0x1D726]={d="l"},
+ [0x1D727]={d="l"},
+ [0x1D728]={d="l"},
+ [0x1D729]={d="l"},
+ [0x1D72A]={d="l"},
+ [0x1D72B]={d="l"},
+ [0x1D72C]={d="l"},
+ [0x1D72D]={d="l"},
+ [0x1D72E]={d="l"},
+ [0x1D72F]={d="l"},
+ [0x1D730]={d="l"},
+ [0x1D731]={d="l"},
+ [0x1D732]={d="l"},
+ [0x1D733]={d="l"},
+ [0x1D734]={d="l"},
+ [0x1D735]={d="l"},
+ [0x1D736]={d="l"},
+ [0x1D737]={d="l"},
+ [0x1D738]={d="l"},
+ [0x1D739]={d="l"},
+ [0x1D73A]={d="l"},
+ [0x1D73B]={d="l"},
+ [0x1D73C]={d="l"},
+ [0x1D73D]={d="l"},
+ [0x1D73E]={d="l"},
+ [0x1D73F]={d="l"},
+ [0x1D740]={d="l"},
+ [0x1D741]={d="l"},
+ [0x1D742]={d="l"},
+ [0x1D743]={d="l"},
+ [0x1D744]={d="l"},
+ [0x1D745]={d="l"},
+ [0x1D746]={d="l"},
+ [0x1D747]={d="l"},
+ [0x1D748]={d="l"},
+ [0x1D749]={d="l"},
+ [0x1D74A]={d="l"},
+ [0x1D74B]={d="l"},
+ [0x1D74C]={d="l"},
+ [0x1D74D]={d="l"},
+ [0x1D74E]={d="l"},
+ [0x1D74F]={d="on"},
+ [0x1D750]={d="l"},
+ [0x1D751]={d="l"},
+ [0x1D752]={d="l"},
+ [0x1D753]={d="l"},
+ [0x1D754]={d="l"},
+ [0x1D755]={d="l"},
+ [0x1D756]={d="l"},
+ [0x1D757]={d="l"},
+ [0x1D758]={d="l"},
+ [0x1D759]={d="l"},
+ [0x1D75A]={d="l"},
+ [0x1D75B]={d="l"},
+ [0x1D75C]={d="l"},
+ [0x1D75D]={d="l"},
+ [0x1D75E]={d="l"},
+ [0x1D75F]={d="l"},
+ [0x1D760]={d="l"},
+ [0x1D761]={d="l"},
+ [0x1D762]={d="l"},
+ [0x1D763]={d="l"},
+ [0x1D764]={d="l"},
+ [0x1D765]={d="l"},
+ [0x1D766]={d="l"},
+ [0x1D767]={d="l"},
+ [0x1D768]={d="l"},
+ [0x1D769]={d="l"},
+ [0x1D76A]={d="l"},
+ [0x1D76B]={d="l"},
+ [0x1D76C]={d="l"},
+ [0x1D76D]={d="l"},
+ [0x1D76E]={d="l"},
+ [0x1D76F]={d="l"},
+ [0x1D770]={d="l"},
+ [0x1D771]={d="l"},
+ [0x1D772]={d="l"},
+ [0x1D773]={d="l"},
+ [0x1D774]={d="l"},
+ [0x1D775]={d="l"},
+ [0x1D776]={d="l"},
+ [0x1D777]={d="l"},
+ [0x1D778]={d="l"},
+ [0x1D779]={d="l"},
+ [0x1D77A]={d="l"},
+ [0x1D77B]={d="l"},
+ [0x1D77C]={d="l"},
+ [0x1D77D]={d="l"},
+ [0x1D77E]={d="l"},
+ [0x1D77F]={d="l"},
+ [0x1D780]={d="l"},
+ [0x1D781]={d="l"},
+ [0x1D782]={d="l"},
+ [0x1D783]={d="l"},
+ [0x1D784]={d="l"},
+ [0x1D785]={d="l"},
+ [0x1D786]={d="l"},
+ [0x1D787]={d="l"},
+ [0x1D788]={d="l"},
+ [0x1D789]={d="on"},
+ [0x1D78A]={d="l"},
+ [0x1D78B]={d="l"},
+ [0x1D78C]={d="l"},
+ [0x1D78D]={d="l"},
+ [0x1D78E]={d="l"},
+ [0x1D78F]={d="l"},
+ [0x1D790]={d="l"},
+ [0x1D791]={d="l"},
+ [0x1D792]={d="l"},
+ [0x1D793]={d="l"},
+ [0x1D794]={d="l"},
+ [0x1D795]={d="l"},
+ [0x1D796]={d="l"},
+ [0x1D797]={d="l"},
+ [0x1D798]={d="l"},
+ [0x1D799]={d="l"},
+ [0x1D79A]={d="l"},
+ [0x1D79B]={d="l"},
+ [0x1D79C]={d="l"},
+ [0x1D79D]={d="l"},
+ [0x1D79E]={d="l"},
+ [0x1D79F]={d="l"},
+ [0x1D7A0]={d="l"},
+ [0x1D7A1]={d="l"},
+ [0x1D7A2]={d="l"},
+ [0x1D7A3]={d="l"},
+ [0x1D7A4]={d="l"},
+ [0x1D7A5]={d="l"},
+ [0x1D7A6]={d="l"},
+ [0x1D7A7]={d="l"},
+ [0x1D7A8]={d="l"},
+ [0x1D7A9]={d="l"},
+ [0x1D7AA]={d="l"},
+ [0x1D7AB]={d="l"},
+ [0x1D7AC]={d="l"},
+ [0x1D7AD]={d="l"},
+ [0x1D7AE]={d="l"},
+ [0x1D7AF]={d="l"},
+ [0x1D7B0]={d="l"},
+ [0x1D7B1]={d="l"},
+ [0x1D7B2]={d="l"},
+ [0x1D7B3]={d="l"},
+ [0x1D7B4]={d="l"},
+ [0x1D7B5]={d="l"},
+ [0x1D7B6]={d="l"},
+ [0x1D7B7]={d="l"},
+ [0x1D7B8]={d="l"},
+ [0x1D7B9]={d="l"},
+ [0x1D7BA]={d="l"},
+ [0x1D7BB]={d="l"},
+ [0x1D7BC]={d="l"},
+ [0x1D7BD]={d="l"},
+ [0x1D7BE]={d="l"},
+ [0x1D7BF]={d="l"},
+ [0x1D7C0]={d="l"},
+ [0x1D7C1]={d="l"},
+ [0x1D7C2]={d="l"},
+ [0x1D7C3]={d="on"},
+ [0x1D7C4]={d="l"},
+ [0x1D7C5]={d="l"},
+ [0x1D7C6]={d="l"},
+ [0x1D7C7]={d="l"},
+ [0x1D7C8]={d="l"},
+ [0x1D7C9]={d="l"},
+ [0x1D7CA]={d="l"},
+ [0x1D7CB]={d="l"},
+ [0x1D7CE]={d="en"},
+ [0x1D7CF]={d="en"},
+ [0x1D7D0]={d="en"},
+ [0x1D7D1]={d="en"},
+ [0x1D7D2]={d="en"},
+ [0x1D7D3]={d="en"},
+ [0x1D7D4]={d="en"},
+ [0x1D7D5]={d="en"},
+ [0x1D7D6]={d="en"},
+ [0x1D7D7]={d="en"},
+ [0x1D7D8]={d="en"},
+ [0x1D7D9]={d="en"},
+ [0x1D7DA]={d="en"},
+ [0x1D7DB]={d="en"},
+ [0x1D7DC]={d="en"},
+ [0x1D7DD]={d="en"},
+ [0x1D7DE]={d="en"},
+ [0x1D7DF]={d="en"},
+ [0x1D7E0]={d="en"},
+ [0x1D7E1]={d="en"},
+ [0x1D7E2]={d="en"},
+ [0x1D7E3]={d="en"},
+ [0x1D7E4]={d="en"},
+ [0x1D7E5]={d="en"},
+ [0x1D7E6]={d="en"},
+ [0x1D7E7]={d="en"},
+ [0x1D7E8]={d="en"},
+ [0x1D7E9]={d="en"},
+ [0x1D7EA]={d="en"},
+ [0x1D7EB]={d="en"},
+ [0x1D7EC]={d="en"},
+ [0x1D7ED]={d="en"},
+ [0x1D7EE]={d="en"},
+ [0x1D7EF]={d="en"},
+ [0x1D7F0]={d="en"},
+ [0x1D7F1]={d="en"},
+ [0x1D7F2]={d="en"},
+ [0x1D7F3]={d="en"},
+ [0x1D7F4]={d="en"},
+ [0x1D7F5]={d="en"},
+ [0x1D7F6]={d="en"},
+ [0x1D7F7]={d="en"},
+ [0x1D7F8]={d="en"},
+ [0x1D7F9]={d="en"},
+ [0x1D7FA]={d="en"},
+ [0x1D7FB]={d="en"},
+ [0x1D7FC]={d="en"},
+ [0x1D7FD]={d="en"},
+ [0x1D7FE]={d="en"},
+ [0x1D7FF]={d="en"},
+ [0x1D800]={d="l"},
+ [0x1D801]={d="l"},
+ [0x1D802]={d="l"},
+ [0x1D803]={d="l"},
+ [0x1D804]={d="l"},
+ [0x1D805]={d="l"},
+ [0x1D806]={d="l"},
+ [0x1D807]={d="l"},
+ [0x1D808]={d="l"},
+ [0x1D809]={d="l"},
+ [0x1D80A]={d="l"},
+ [0x1D80B]={d="l"},
+ [0x1D80C]={d="l"},
+ [0x1D80D]={d="l"},
+ [0x1D80E]={d="l"},
+ [0x1D80F]={d="l"},
+ [0x1D810]={d="l"},
+ [0x1D811]={d="l"},
+ [0x1D812]={d="l"},
+ [0x1D813]={d="l"},
+ [0x1D814]={d="l"},
+ [0x1D815]={d="l"},
+ [0x1D816]={d="l"},
+ [0x1D817]={d="l"},
+ [0x1D818]={d="l"},
+ [0x1D819]={d="l"},
+ [0x1D81A]={d="l"},
+ [0x1D81B]={d="l"},
+ [0x1D81C]={d="l"},
+ [0x1D81D]={d="l"},
+ [0x1D81E]={d="l"},
+ [0x1D81F]={d="l"},
+ [0x1D820]={d="l"},
+ [0x1D821]={d="l"},
+ [0x1D822]={d="l"},
+ [0x1D823]={d="l"},
+ [0x1D824]={d="l"},
+ [0x1D825]={d="l"},
+ [0x1D826]={d="l"},
+ [0x1D827]={d="l"},
+ [0x1D828]={d="l"},
+ [0x1D829]={d="l"},
+ [0x1D82A]={d="l"},
+ [0x1D82B]={d="l"},
+ [0x1D82C]={d="l"},
+ [0x1D82D]={d="l"},
+ [0x1D82E]={d="l"},
+ [0x1D82F]={d="l"},
+ [0x1D830]={d="l"},
+ [0x1D831]={d="l"},
+ [0x1D832]={d="l"},
+ [0x1D833]={d="l"},
+ [0x1D834]={d="l"},
+ [0x1D835]={d="l"},
+ [0x1D836]={d="l"},
+ [0x1D837]={d="l"},
+ [0x1D838]={d="l"},
+ [0x1D839]={d="l"},
+ [0x1D83A]={d="l"},
+ [0x1D83B]={d="l"},
+ [0x1D83C]={d="l"},
+ [0x1D83D]={d="l"},
+ [0x1D83E]={d="l"},
+ [0x1D83F]={d="l"},
+ [0x1D840]={d="l"},
+ [0x1D841]={d="l"},
+ [0x1D842]={d="l"},
+ [0x1D843]={d="l"},
+ [0x1D844]={d="l"},
+ [0x1D845]={d="l"},
+ [0x1D846]={d="l"},
+ [0x1D847]={d="l"},
+ [0x1D848]={d="l"},
+ [0x1D849]={d="l"},
+ [0x1D84A]={d="l"},
+ [0x1D84B]={d="l"},
+ [0x1D84C]={d="l"},
+ [0x1D84D]={d="l"},
+ [0x1D84E]={d="l"},
+ [0x1D84F]={d="l"},
+ [0x1D850]={d="l"},
+ [0x1D851]={d="l"},
+ [0x1D852]={d="l"},
+ [0x1D853]={d="l"},
+ [0x1D854]={d="l"},
+ [0x1D855]={d="l"},
+ [0x1D856]={d="l"},
+ [0x1D857]={d="l"},
+ [0x1D858]={d="l"},
+ [0x1D859]={d="l"},
+ [0x1D85A]={d="l"},
+ [0x1D85B]={d="l"},
+ [0x1D85C]={d="l"},
+ [0x1D85D]={d="l"},
+ [0x1D85E]={d="l"},
+ [0x1D85F]={d="l"},
+ [0x1D860]={d="l"},
+ [0x1D861]={d="l"},
+ [0x1D862]={d="l"},
+ [0x1D863]={d="l"},
+ [0x1D864]={d="l"},
+ [0x1D865]={d="l"},
+ [0x1D866]={d="l"},
+ [0x1D867]={d="l"},
+ [0x1D868]={d="l"},
+ [0x1D869]={d="l"},
+ [0x1D86A]={d="l"},
+ [0x1D86B]={d="l"},
+ [0x1D86C]={d="l"},
+ [0x1D86D]={d="l"},
+ [0x1D86E]={d="l"},
+ [0x1D86F]={d="l"},
+ [0x1D870]={d="l"},
+ [0x1D871]={d="l"},
+ [0x1D872]={d="l"},
+ [0x1D873]={d="l"},
+ [0x1D874]={d="l"},
+ [0x1D875]={d="l"},
+ [0x1D876]={d="l"},
+ [0x1D877]={d="l"},
+ [0x1D878]={d="l"},
+ [0x1D879]={d="l"},
+ [0x1D87A]={d="l"},
+ [0x1D87B]={d="l"},
+ [0x1D87C]={d="l"},
+ [0x1D87D]={d="l"},
+ [0x1D87E]={d="l"},
+ [0x1D87F]={d="l"},
+ [0x1D880]={d="l"},
+ [0x1D881]={d="l"},
+ [0x1D882]={d="l"},
+ [0x1D883]={d="l"},
+ [0x1D884]={d="l"},
+ [0x1D885]={d="l"},
+ [0x1D886]={d="l"},
+ [0x1D887]={d="l"},
+ [0x1D888]={d="l"},
+ [0x1D889]={d="l"},
+ [0x1D88A]={d="l"},
+ [0x1D88B]={d="l"},
+ [0x1D88C]={d="l"},
+ [0x1D88D]={d="l"},
+ [0x1D88E]={d="l"},
+ [0x1D88F]={d="l"},
+ [0x1D890]={d="l"},
+ [0x1D891]={d="l"},
+ [0x1D892]={d="l"},
+ [0x1D893]={d="l"},
+ [0x1D894]={d="l"},
+ [0x1D895]={d="l"},
+ [0x1D896]={d="l"},
+ [0x1D897]={d="l"},
+ [0x1D898]={d="l"},
+ [0x1D899]={d="l"},
+ [0x1D89A]={d="l"},
+ [0x1D89B]={d="l"},
+ [0x1D89C]={d="l"},
+ [0x1D89D]={d="l"},
+ [0x1D89E]={d="l"},
+ [0x1D89F]={d="l"},
+ [0x1D8A0]={d="l"},
+ [0x1D8A1]={d="l"},
+ [0x1D8A2]={d="l"},
+ [0x1D8A3]={d="l"},
+ [0x1D8A4]={d="l"},
+ [0x1D8A5]={d="l"},
+ [0x1D8A6]={d="l"},
+ [0x1D8A7]={d="l"},
+ [0x1D8A8]={d="l"},
+ [0x1D8A9]={d="l"},
+ [0x1D8AA]={d="l"},
+ [0x1D8AB]={d="l"},
+ [0x1D8AC]={d="l"},
+ [0x1D8AD]={d="l"},
+ [0x1D8AE]={d="l"},
+ [0x1D8AF]={d="l"},
+ [0x1D8B0]={d="l"},
+ [0x1D8B1]={d="l"},
+ [0x1D8B2]={d="l"},
+ [0x1D8B3]={d="l"},
+ [0x1D8B4]={d="l"},
+ [0x1D8B5]={d="l"},
+ [0x1D8B6]={d="l"},
+ [0x1D8B7]={d="l"},
+ [0x1D8B8]={d="l"},
+ [0x1D8B9]={d="l"},
+ [0x1D8BA]={d="l"},
+ [0x1D8BB]={d="l"},
+ [0x1D8BC]={d="l"},
+ [0x1D8BD]={d="l"},
+ [0x1D8BE]={d="l"},
+ [0x1D8BF]={d="l"},
+ [0x1D8C0]={d="l"},
+ [0x1D8C1]={d="l"},
+ [0x1D8C2]={d="l"},
+ [0x1D8C3]={d="l"},
+ [0x1D8C4]={d="l"},
+ [0x1D8C5]={d="l"},
+ [0x1D8C6]={d="l"},
+ [0x1D8C7]={d="l"},
+ [0x1D8C8]={d="l"},
+ [0x1D8C9]={d="l"},
+ [0x1D8CA]={d="l"},
+ [0x1D8CB]={d="l"},
+ [0x1D8CC]={d="l"},
+ [0x1D8CD]={d="l"},
+ [0x1D8CE]={d="l"},
+ [0x1D8CF]={d="l"},
+ [0x1D8D0]={d="l"},
+ [0x1D8D1]={d="l"},
+ [0x1D8D2]={d="l"},
+ [0x1D8D3]={d="l"},
+ [0x1D8D4]={d="l"},
+ [0x1D8D5]={d="l"},
+ [0x1D8D6]={d="l"},
+ [0x1D8D7]={d="l"},
+ [0x1D8D8]={d="l"},
+ [0x1D8D9]={d="l"},
+ [0x1D8DA]={d="l"},
+ [0x1D8DB]={d="l"},
+ [0x1D8DC]={d="l"},
+ [0x1D8DD]={d="l"},
+ [0x1D8DE]={d="l"},
+ [0x1D8DF]={d="l"},
+ [0x1D8E0]={d="l"},
+ [0x1D8E1]={d="l"},
+ [0x1D8E2]={d="l"},
+ [0x1D8E3]={d="l"},
+ [0x1D8E4]={d="l"},
+ [0x1D8E5]={d="l"},
+ [0x1D8E6]={d="l"},
+ [0x1D8E7]={d="l"},
+ [0x1D8E8]={d="l"},
+ [0x1D8E9]={d="l"},
+ [0x1D8EA]={d="l"},
+ [0x1D8EB]={d="l"},
+ [0x1D8EC]={d="l"},
+ [0x1D8ED]={d="l"},
+ [0x1D8EE]={d="l"},
+ [0x1D8EF]={d="l"},
+ [0x1D8F0]={d="l"},
+ [0x1D8F1]={d="l"},
+ [0x1D8F2]={d="l"},
+ [0x1D8F3]={d="l"},
+ [0x1D8F4]={d="l"},
+ [0x1D8F5]={d="l"},
+ [0x1D8F6]={d="l"},
+ [0x1D8F7]={d="l"},
+ [0x1D8F8]={d="l"},
+ [0x1D8F9]={d="l"},
+ [0x1D8FA]={d="l"},
+ [0x1D8FB]={d="l"},
+ [0x1D8FC]={d="l"},
+ [0x1D8FD]={d="l"},
+ [0x1D8FE]={d="l"},
+ [0x1D8FF]={d="l"},
+ [0x1D900]={d="l"},
+ [0x1D901]={d="l"},
+ [0x1D902]={d="l"},
+ [0x1D903]={d="l"},
+ [0x1D904]={d="l"},
+ [0x1D905]={d="l"},
+ [0x1D906]={d="l"},
+ [0x1D907]={d="l"},
+ [0x1D908]={d="l"},
+ [0x1D909]={d="l"},
+ [0x1D90A]={d="l"},
+ [0x1D90B]={d="l"},
+ [0x1D90C]={d="l"},
+ [0x1D90D]={d="l"},
+ [0x1D90E]={d="l"},
+ [0x1D90F]={d="l"},
+ [0x1D910]={d="l"},
+ [0x1D911]={d="l"},
+ [0x1D912]={d="l"},
+ [0x1D913]={d="l"},
+ [0x1D914]={d="l"},
+ [0x1D915]={d="l"},
+ [0x1D916]={d="l"},
+ [0x1D917]={d="l"},
+ [0x1D918]={d="l"},
+ [0x1D919]={d="l"},
+ [0x1D91A]={d="l"},
+ [0x1D91B]={d="l"},
+ [0x1D91C]={d="l"},
+ [0x1D91D]={d="l"},
+ [0x1D91E]={d="l"},
+ [0x1D91F]={d="l"},
+ [0x1D920]={d="l"},
+ [0x1D921]={d="l"},
+ [0x1D922]={d="l"},
+ [0x1D923]={d="l"},
+ [0x1D924]={d="l"},
+ [0x1D925]={d="l"},
+ [0x1D926]={d="l"},
+ [0x1D927]={d="l"},
+ [0x1D928]={d="l"},
+ [0x1D929]={d="l"},
+ [0x1D92A]={d="l"},
+ [0x1D92B]={d="l"},
+ [0x1D92C]={d="l"},
+ [0x1D92D]={d="l"},
+ [0x1D92E]={d="l"},
+ [0x1D92F]={d="l"},
+ [0x1D930]={d="l"},
+ [0x1D931]={d="l"},
+ [0x1D932]={d="l"},
+ [0x1D933]={d="l"},
+ [0x1D934]={d="l"},
+ [0x1D935]={d="l"},
+ [0x1D936]={d="l"},
+ [0x1D937]={d="l"},
+ [0x1D938]={d="l"},
+ [0x1D939]={d="l"},
+ [0x1D93A]={d="l"},
+ [0x1D93B]={d="l"},
+ [0x1D93C]={d="l"},
+ [0x1D93D]={d="l"},
+ [0x1D93E]={d="l"},
+ [0x1D93F]={d="l"},
+ [0x1D940]={d="l"},
+ [0x1D941]={d="l"},
+ [0x1D942]={d="l"},
+ [0x1D943]={d="l"},
+ [0x1D944]={d="l"},
+ [0x1D945]={d="l"},
+ [0x1D946]={d="l"},
+ [0x1D947]={d="l"},
+ [0x1D948]={d="l"},
+ [0x1D949]={d="l"},
+ [0x1D94A]={d="l"},
+ [0x1D94B]={d="l"},
+ [0x1D94C]={d="l"},
+ [0x1D94D]={d="l"},
+ [0x1D94E]={d="l"},
+ [0x1D94F]={d="l"},
+ [0x1D950]={d="l"},
+ [0x1D951]={d="l"},
+ [0x1D952]={d="l"},
+ [0x1D953]={d="l"},
+ [0x1D954]={d="l"},
+ [0x1D955]={d="l"},
+ [0x1D956]={d="l"},
+ [0x1D957]={d="l"},
+ [0x1D958]={d="l"},
+ [0x1D959]={d="l"},
+ [0x1D95A]={d="l"},
+ [0x1D95B]={d="l"},
+ [0x1D95C]={d="l"},
+ [0x1D95D]={d="l"},
+ [0x1D95E]={d="l"},
+ [0x1D95F]={d="l"},
+ [0x1D960]={d="l"},
+ [0x1D961]={d="l"},
+ [0x1D962]={d="l"},
+ [0x1D963]={d="l"},
+ [0x1D964]={d="l"},
+ [0x1D965]={d="l"},
+ [0x1D966]={d="l"},
+ [0x1D967]={d="l"},
+ [0x1D968]={d="l"},
+ [0x1D969]={d="l"},
+ [0x1D96A]={d="l"},
+ [0x1D96B]={d="l"},
+ [0x1D96C]={d="l"},
+ [0x1D96D]={d="l"},
+ [0x1D96E]={d="l"},
+ [0x1D96F]={d="l"},
+ [0x1D970]={d="l"},
+ [0x1D971]={d="l"},
+ [0x1D972]={d="l"},
+ [0x1D973]={d="l"},
+ [0x1D974]={d="l"},
+ [0x1D975]={d="l"},
+ [0x1D976]={d="l"},
+ [0x1D977]={d="l"},
+ [0x1D978]={d="l"},
+ [0x1D979]={d="l"},
+ [0x1D97A]={d="l"},
+ [0x1D97B]={d="l"},
+ [0x1D97C]={d="l"},
+ [0x1D97D]={d="l"},
+ [0x1D97E]={d="l"},
+ [0x1D97F]={d="l"},
+ [0x1D980]={d="l"},
+ [0x1D981]={d="l"},
+ [0x1D982]={d="l"},
+ [0x1D983]={d="l"},
+ [0x1D984]={d="l"},
+ [0x1D985]={d="l"},
+ [0x1D986]={d="l"},
+ [0x1D987]={d="l"},
+ [0x1D988]={d="l"},
+ [0x1D989]={d="l"},
+ [0x1D98A]={d="l"},
+ [0x1D98B]={d="l"},
+ [0x1D98C]={d="l"},
+ [0x1D98D]={d="l"},
+ [0x1D98E]={d="l"},
+ [0x1D98F]={d="l"},
+ [0x1D990]={d="l"},
+ [0x1D991]={d="l"},
+ [0x1D992]={d="l"},
+ [0x1D993]={d="l"},
+ [0x1D994]={d="l"},
+ [0x1D995]={d="l"},
+ [0x1D996]={d="l"},
+ [0x1D997]={d="l"},
+ [0x1D998]={d="l"},
+ [0x1D999]={d="l"},
+ [0x1D99A]={d="l"},
+ [0x1D99B]={d="l"},
+ [0x1D99C]={d="l"},
+ [0x1D99D]={d="l"},
+ [0x1D99E]={d="l"},
+ [0x1D99F]={d="l"},
+ [0x1D9A0]={d="l"},
+ [0x1D9A1]={d="l"},
+ [0x1D9A2]={d="l"},
+ [0x1D9A3]={d="l"},
+ [0x1D9A4]={d="l"},
+ [0x1D9A5]={d="l"},
+ [0x1D9A6]={d="l"},
+ [0x1D9A7]={d="l"},
+ [0x1D9A8]={d="l"},
+ [0x1D9A9]={d="l"},
+ [0x1D9AA]={d="l"},
+ [0x1D9AB]={d="l"},
+ [0x1D9AC]={d="l"},
+ [0x1D9AD]={d="l"},
+ [0x1D9AE]={d="l"},
+ [0x1D9AF]={d="l"},
+ [0x1D9B0]={d="l"},
+ [0x1D9B1]={d="l"},
+ [0x1D9B2]={d="l"},
+ [0x1D9B3]={d="l"},
+ [0x1D9B4]={d="l"},
+ [0x1D9B5]={d="l"},
+ [0x1D9B6]={d="l"},
+ [0x1D9B7]={d="l"},
+ [0x1D9B8]={d="l"},
+ [0x1D9B9]={d="l"},
+ [0x1D9BA]={d="l"},
+ [0x1D9BB]={d="l"},
+ [0x1D9BC]={d="l"},
+ [0x1D9BD]={d="l"},
+ [0x1D9BE]={d="l"},
+ [0x1D9BF]={d="l"},
+ [0x1D9C0]={d="l"},
+ [0x1D9C1]={d="l"},
+ [0x1D9C2]={d="l"},
+ [0x1D9C3]={d="l"},
+ [0x1D9C4]={d="l"},
+ [0x1D9C5]={d="l"},
+ [0x1D9C6]={d="l"},
+ [0x1D9C7]={d="l"},
+ [0x1D9C8]={d="l"},
+ [0x1D9C9]={d="l"},
+ [0x1D9CA]={d="l"},
+ [0x1D9CB]={d="l"},
+ [0x1D9CC]={d="l"},
+ [0x1D9CD]={d="l"},
+ [0x1D9CE]={d="l"},
+ [0x1D9CF]={d="l"},
+ [0x1D9D0]={d="l"},
+ [0x1D9D1]={d="l"},
+ [0x1D9D2]={d="l"},
+ [0x1D9D3]={d="l"},
+ [0x1D9D4]={d="l"},
+ [0x1D9D5]={d="l"},
+ [0x1D9D6]={d="l"},
+ [0x1D9D7]={d="l"},
+ [0x1D9D8]={d="l"},
+ [0x1D9D9]={d="l"},
+ [0x1D9DA]={d="l"},
+ [0x1D9DB]={d="l"},
+ [0x1D9DC]={d="l"},
+ [0x1D9DD]={d="l"},
+ [0x1D9DE]={d="l"},
+ [0x1D9DF]={d="l"},
+ [0x1D9E0]={d="l"},
+ [0x1D9E1]={d="l"},
+ [0x1D9E2]={d="l"},
+ [0x1D9E3]={d="l"},
+ [0x1D9E4]={d="l"},
+ [0x1D9E5]={d="l"},
+ [0x1D9E6]={d="l"},
+ [0x1D9E7]={d="l"},
+ [0x1D9E8]={d="l"},
+ [0x1D9E9]={d="l"},
+ [0x1D9EA]={d="l"},
+ [0x1D9EB]={d="l"},
+ [0x1D9EC]={d="l"},
+ [0x1D9ED]={d="l"},
+ [0x1D9EE]={d="l"},
+ [0x1D9EF]={d="l"},
+ [0x1D9F0]={d="l"},
+ [0x1D9F1]={d="l"},
+ [0x1D9F2]={d="l"},
+ [0x1D9F3]={d="l"},
+ [0x1D9F4]={d="l"},
+ [0x1D9F5]={d="l"},
+ [0x1D9F6]={d="l"},
+ [0x1D9F7]={d="l"},
+ [0x1D9F8]={d="l"},
+ [0x1D9F9]={d="l"},
+ [0x1D9FA]={d="l"},
+ [0x1D9FB]={d="l"},
+ [0x1D9FC]={d="l"},
+ [0x1D9FD]={d="l"},
+ [0x1D9FE]={d="l"},
+ [0x1D9FF]={d="l"},
+ [0x1DA00]={d="nsm"},
+ [0x1DA01]={d="nsm"},
+ [0x1DA02]={d="nsm"},
+ [0x1DA03]={d="nsm"},
+ [0x1DA04]={d="nsm"},
+ [0x1DA05]={d="nsm"},
+ [0x1DA06]={d="nsm"},
+ [0x1DA07]={d="nsm"},
+ [0x1DA08]={d="nsm"},
+ [0x1DA09]={d="nsm"},
+ [0x1DA0A]={d="nsm"},
+ [0x1DA0B]={d="nsm"},
+ [0x1DA0C]={d="nsm"},
+ [0x1DA0D]={d="nsm"},
+ [0x1DA0E]={d="nsm"},
+ [0x1DA0F]={d="nsm"},
+ [0x1DA10]={d="nsm"},
+ [0x1DA11]={d="nsm"},
+ [0x1DA12]={d="nsm"},
+ [0x1DA13]={d="nsm"},
+ [0x1DA14]={d="nsm"},
+ [0x1DA15]={d="nsm"},
+ [0x1DA16]={d="nsm"},
+ [0x1DA17]={d="nsm"},
+ [0x1DA18]={d="nsm"},
+ [0x1DA19]={d="nsm"},
+ [0x1DA1A]={d="nsm"},
+ [0x1DA1B]={d="nsm"},
+ [0x1DA1C]={d="nsm"},
+ [0x1DA1D]={d="nsm"},
+ [0x1DA1E]={d="nsm"},
+ [0x1DA1F]={d="nsm"},
+ [0x1DA20]={d="nsm"},
+ [0x1DA21]={d="nsm"},
+ [0x1DA22]={d="nsm"},
+ [0x1DA23]={d="nsm"},
+ [0x1DA24]={d="nsm"},
+ [0x1DA25]={d="nsm"},
+ [0x1DA26]={d="nsm"},
+ [0x1DA27]={d="nsm"},
+ [0x1DA28]={d="nsm"},
+ [0x1DA29]={d="nsm"},
+ [0x1DA2A]={d="nsm"},
+ [0x1DA2B]={d="nsm"},
+ [0x1DA2C]={d="nsm"},
+ [0x1DA2D]={d="nsm"},
+ [0x1DA2E]={d="nsm"},
+ [0x1DA2F]={d="nsm"},
+ [0x1DA30]={d="nsm"},
+ [0x1DA31]={d="nsm"},
+ [0x1DA32]={d="nsm"},
+ [0x1DA33]={d="nsm"},
+ [0x1DA34]={d="nsm"},
+ [0x1DA35]={d="nsm"},
+ [0x1DA36]={d="nsm"},
+ [0x1DA37]={d="l"},
+ [0x1DA38]={d="l"},
+ [0x1DA39]={d="l"},
+ [0x1DA3A]={d="l"},
+ [0x1DA3B]={d="nsm"},
+ [0x1DA3C]={d="nsm"},
+ [0x1DA3D]={d="nsm"},
+ [0x1DA3E]={d="nsm"},
+ [0x1DA3F]={d="nsm"},
+ [0x1DA40]={d="nsm"},
+ [0x1DA41]={d="nsm"},
+ [0x1DA42]={d="nsm"},
+ [0x1DA43]={d="nsm"},
+ [0x1DA44]={d="nsm"},
+ [0x1DA45]={d="nsm"},
+ [0x1DA46]={d="nsm"},
+ [0x1DA47]={d="nsm"},
+ [0x1DA48]={d="nsm"},
+ [0x1DA49]={d="nsm"},
+ [0x1DA4A]={d="nsm"},
+ [0x1DA4B]={d="nsm"},
+ [0x1DA4C]={d="nsm"},
+ [0x1DA4D]={d="nsm"},
+ [0x1DA4E]={d="nsm"},
+ [0x1DA4F]={d="nsm"},
+ [0x1DA50]={d="nsm"},
+ [0x1DA51]={d="nsm"},
+ [0x1DA52]={d="nsm"},
+ [0x1DA53]={d="nsm"},
+ [0x1DA54]={d="nsm"},
+ [0x1DA55]={d="nsm"},
+ [0x1DA56]={d="nsm"},
+ [0x1DA57]={d="nsm"},
+ [0x1DA58]={d="nsm"},
+ [0x1DA59]={d="nsm"},
+ [0x1DA5A]={d="nsm"},
+ [0x1DA5B]={d="nsm"},
+ [0x1DA5C]={d="nsm"},
+ [0x1DA5D]={d="nsm"},
+ [0x1DA5E]={d="nsm"},
+ [0x1DA5F]={d="nsm"},
+ [0x1DA60]={d="nsm"},
+ [0x1DA61]={d="nsm"},
+ [0x1DA62]={d="nsm"},
+ [0x1DA63]={d="nsm"},
+ [0x1DA64]={d="nsm"},
+ [0x1DA65]={d="nsm"},
+ [0x1DA66]={d="nsm"},
+ [0x1DA67]={d="nsm"},
+ [0x1DA68]={d="nsm"},
+ [0x1DA69]={d="nsm"},
+ [0x1DA6A]={d="nsm"},
+ [0x1DA6B]={d="nsm"},
+ [0x1DA6C]={d="nsm"},
+ [0x1DA6D]={d="l"},
+ [0x1DA6E]={d="l"},
+ [0x1DA6F]={d="l"},
+ [0x1DA70]={d="l"},
+ [0x1DA71]={d="l"},
+ [0x1DA72]={d="l"},
+ [0x1DA73]={d="l"},
+ [0x1DA74]={d="l"},
+ [0x1DA75]={d="nsm"},
+ [0x1DA76]={d="l"},
+ [0x1DA77]={d="l"},
+ [0x1DA78]={d="l"},
+ [0x1DA79]={d="l"},
+ [0x1DA7A]={d="l"},
+ [0x1DA7B]={d="l"},
+ [0x1DA7C]={d="l"},
+ [0x1DA7D]={d="l"},
+ [0x1DA7E]={d="l"},
+ [0x1DA7F]={d="l"},
+ [0x1DA80]={d="l"},
+ [0x1DA81]={d="l"},
+ [0x1DA82]={d="l"},
+ [0x1DA83]={d="l"},
+ [0x1DA84]={d="nsm"},
+ [0x1DA85]={d="l"},
+ [0x1DA86]={d="l"},
+ [0x1DA87]={d="l"},
+ [0x1DA88]={d="l"},
+ [0x1DA89]={d="l"},
+ [0x1DA8A]={d="l"},
+ [0x1DA8B]={d="l"},
+ [0x1DA9B]={d="nsm"},
+ [0x1DA9C]={d="nsm"},
+ [0x1DA9D]={d="nsm"},
+ [0x1DA9E]={d="nsm"},
+ [0x1DA9F]={d="nsm"},
+ [0x1DAA1]={d="nsm"},
+ [0x1DAA2]={d="nsm"},
+ [0x1DAA3]={d="nsm"},
+ [0x1DAA4]={d="nsm"},
+ [0x1DAA5]={d="nsm"},
+ [0x1DAA6]={d="nsm"},
+ [0x1DAA7]={d="nsm"},
+ [0x1DAA8]={d="nsm"},
+ [0x1DAA9]={d="nsm"},
+ [0x1DAAA]={d="nsm"},
+ [0x1DAAB]={d="nsm"},
+ [0x1DAAC]={d="nsm"},
+ [0x1DAAD]={d="nsm"},
+ [0x1DAAE]={d="nsm"},
+ [0x1DAAF]={d="nsm"},
+ [0x1DF00]={d="l"},
+ [0x1DF01]={d="l"},
+ [0x1DF02]={d="l"},
+ [0x1DF03]={d="l"},
+ [0x1DF04]={d="l"},
+ [0x1DF05]={d="l"},
+ [0x1DF06]={d="l"},
+ [0x1DF07]={d="l"},
+ [0x1DF08]={d="l"},
+ [0x1DF09]={d="l"},
+ [0x1DF0A]={d="l"},
+ [0x1DF0B]={d="l"},
+ [0x1DF0C]={d="l"},
+ [0x1DF0D]={d="l"},
+ [0x1DF0E]={d="l"},
+ [0x1DF0F]={d="l"},
+ [0x1DF10]={d="l"},
+ [0x1DF11]={d="l"},
+ [0x1DF12]={d="l"},
+ [0x1DF13]={d="l"},
+ [0x1DF14]={d="l"},
+ [0x1DF15]={d="l"},
+ [0x1DF16]={d="l"},
+ [0x1DF17]={d="l"},
+ [0x1DF18]={d="l"},
+ [0x1DF19]={d="l"},
+ [0x1DF1A]={d="l"},
+ [0x1DF1B]={d="l"},
+ [0x1DF1C]={d="l"},
+ [0x1DF1D]={d="l"},
+ [0x1DF1E]={d="l"},
+ [0x1DF25]={d="l"},
+ [0x1DF26]={d="l"},
+ [0x1DF27]={d="l"},
+ [0x1DF28]={d="l"},
+ [0x1DF29]={d="l"},
+ [0x1DF2A]={d="l"},
+ [0x1E000]={d="nsm"},
+ [0x1E001]={d="nsm"},
+ [0x1E002]={d="nsm"},
+ [0x1E003]={d="nsm"},
+ [0x1E004]={d="nsm"},
+ [0x1E005]={d="nsm"},
+ [0x1E006]={d="nsm"},
+ [0x1E008]={d="nsm"},
+ [0x1E009]={d="nsm"},
+ [0x1E00A]={d="nsm"},
+ [0x1E00B]={d="nsm"},
+ [0x1E00C]={d="nsm"},
+ [0x1E00D]={d="nsm"},
+ [0x1E00E]={d="nsm"},
+ [0x1E00F]={d="nsm"},
+ [0x1E010]={d="nsm"},
+ [0x1E011]={d="nsm"},
+ [0x1E012]={d="nsm"},
+ [0x1E013]={d="nsm"},
+ [0x1E014]={d="nsm"},
+ [0x1E015]={d="nsm"},
+ [0x1E016]={d="nsm"},
+ [0x1E017]={d="nsm"},
+ [0x1E018]={d="nsm"},
+ [0x1E01B]={d="nsm"},
+ [0x1E01C]={d="nsm"},
+ [0x1E01D]={d="nsm"},
+ [0x1E01E]={d="nsm"},
+ [0x1E01F]={d="nsm"},
+ [0x1E020]={d="nsm"},
+ [0x1E021]={d="nsm"},
+ [0x1E023]={d="nsm"},
+ [0x1E024]={d="nsm"},
+ [0x1E026]={d="nsm"},
+ [0x1E027]={d="nsm"},
+ [0x1E028]={d="nsm"},
+ [0x1E029]={d="nsm"},
+ [0x1E02A]={d="nsm"},
+ [0x1E030]={d="l"},
+ [0x1E031]={d="l"},
+ [0x1E032]={d="l"},
+ [0x1E033]={d="l"},
+ [0x1E034]={d="l"},
+ [0x1E035]={d="l"},
+ [0x1E036]={d="l"},
+ [0x1E037]={d="l"},
+ [0x1E038]={d="l"},
+ [0x1E039]={d="l"},
+ [0x1E03A]={d="l"},
+ [0x1E03B]={d="l"},
+ [0x1E03C]={d="l"},
+ [0x1E03D]={d="l"},
+ [0x1E03E]={d="l"},
+ [0x1E03F]={d="l"},
+ [0x1E040]={d="l"},
+ [0x1E041]={d="l"},
+ [0x1E042]={d="l"},
+ [0x1E043]={d="l"},
+ [0x1E044]={d="l"},
+ [0x1E045]={d="l"},
+ [0x1E046]={d="l"},
+ [0x1E047]={d="l"},
+ [0x1E048]={d="l"},
+ [0x1E049]={d="l"},
+ [0x1E04A]={d="l"},
+ [0x1E04B]={d="l"},
+ [0x1E04C]={d="l"},
+ [0x1E04D]={d="l"},
+ [0x1E04E]={d="l"},
+ [0x1E04F]={d="l"},
+ [0x1E050]={d="l"},
+ [0x1E051]={d="l"},
+ [0x1E052]={d="l"},
+ [0x1E053]={d="l"},
+ [0x1E054]={d="l"},
+ [0x1E055]={d="l"},
+ [0x1E056]={d="l"},
+ [0x1E057]={d="l"},
+ [0x1E058]={d="l"},
+ [0x1E059]={d="l"},
+ [0x1E05A]={d="l"},
+ [0x1E05B]={d="l"},
+ [0x1E05C]={d="l"},
+ [0x1E05D]={d="l"},
+ [0x1E05E]={d="l"},
+ [0x1E05F]={d="l"},
+ [0x1E060]={d="l"},
+ [0x1E061]={d="l"},
+ [0x1E062]={d="l"},
+ [0x1E063]={d="l"},
+ [0x1E064]={d="l"},
+ [0x1E065]={d="l"},
+ [0x1E066]={d="l"},
+ [0x1E067]={d="l"},
+ [0x1E068]={d="l"},
+ [0x1E069]={d="l"},
+ [0x1E06A]={d="l"},
+ [0x1E06B]={d="l"},
+ [0x1E06C]={d="l"},
+ [0x1E06D]={d="l"},
+ [0x1E08F]={d="nsm"},
+ [0x1E100]={d="l"},
+ [0x1E101]={d="l"},
+ [0x1E102]={d="l"},
+ [0x1E103]={d="l"},
+ [0x1E104]={d="l"},
+ [0x1E105]={d="l"},
+ [0x1E106]={d="l"},
+ [0x1E107]={d="l"},
+ [0x1E108]={d="l"},
+ [0x1E109]={d="l"},
+ [0x1E10A]={d="l"},
+ [0x1E10B]={d="l"},
+ [0x1E10C]={d="l"},
+ [0x1E10D]={d="l"},
+ [0x1E10E]={d="l"},
+ [0x1E10F]={d="l"},
+ [0x1E110]={d="l"},
+ [0x1E111]={d="l"},
+ [0x1E112]={d="l"},
+ [0x1E113]={d="l"},
+ [0x1E114]={d="l"},
+ [0x1E115]={d="l"},
+ [0x1E116]={d="l"},
+ [0x1E117]={d="l"},
+ [0x1E118]={d="l"},
+ [0x1E119]={d="l"},
+ [0x1E11A]={d="l"},
+ [0x1E11B]={d="l"},
+ [0x1E11C]={d="l"},
+ [0x1E11D]={d="l"},
+ [0x1E11E]={d="l"},
+ [0x1E11F]={d="l"},
+ [0x1E120]={d="l"},
+ [0x1E121]={d="l"},
+ [0x1E122]={d="l"},
+ [0x1E123]={d="l"},
+ [0x1E124]={d="l"},
+ [0x1E125]={d="l"},
+ [0x1E126]={d="l"},
+ [0x1E127]={d="l"},
+ [0x1E128]={d="l"},
+ [0x1E129]={d="l"},
+ [0x1E12A]={d="l"},
+ [0x1E12B]={d="l"},
+ [0x1E12C]={d="l"},
+ [0x1E130]={d="nsm"},
+ [0x1E131]={d="nsm"},
+ [0x1E132]={d="nsm"},
+ [0x1E133]={d="nsm"},
+ [0x1E134]={d="nsm"},
+ [0x1E135]={d="nsm"},
+ [0x1E136]={d="nsm"},
+ [0x1E137]={d="l"},
+ [0x1E138]={d="l"},
+ [0x1E139]={d="l"},
+ [0x1E13A]={d="l"},
+ [0x1E13B]={d="l"},
+ [0x1E13C]={d="l"},
+ [0x1E13D]={d="l"},
+ [0x1E140]={d="l"},
+ [0x1E141]={d="l"},
+ [0x1E142]={d="l"},
+ [0x1E143]={d="l"},
+ [0x1E144]={d="l"},
+ [0x1E145]={d="l"},
+ [0x1E146]={d="l"},
+ [0x1E147]={d="l"},
+ [0x1E148]={d="l"},
+ [0x1E149]={d="l"},
+ [0x1E14E]={d="l"},
+ [0x1E14F]={d="l"},
+ [0x1E290]={d="l"},
+ [0x1E291]={d="l"},
+ [0x1E292]={d="l"},
+ [0x1E293]={d="l"},
+ [0x1E294]={d="l"},
+ [0x1E295]={d="l"},
+ [0x1E296]={d="l"},
+ [0x1E297]={d="l"},
+ [0x1E298]={d="l"},
+ [0x1E299]={d="l"},
+ [0x1E29A]={d="l"},
+ [0x1E29B]={d="l"},
+ [0x1E29C]={d="l"},
+ [0x1E29D]={d="l"},
+ [0x1E29E]={d="l"},
+ [0x1E29F]={d="l"},
+ [0x1E2A0]={d="l"},
+ [0x1E2A1]={d="l"},
+ [0x1E2A2]={d="l"},
+ [0x1E2A3]={d="l"},
+ [0x1E2A4]={d="l"},
+ [0x1E2A5]={d="l"},
+ [0x1E2A6]={d="l"},
+ [0x1E2A7]={d="l"},
+ [0x1E2A8]={d="l"},
+ [0x1E2A9]={d="l"},
+ [0x1E2AA]={d="l"},
+ [0x1E2AB]={d="l"},
+ [0x1E2AC]={d="l"},
+ [0x1E2AD]={d="l"},
+ [0x1E2AE]={d="nsm"},
+ [0x1E2C0]={d="l"},
+ [0x1E2C1]={d="l"},
+ [0x1E2C2]={d="l"},
+ [0x1E2C3]={d="l"},
+ [0x1E2C4]={d="l"},
+ [0x1E2C5]={d="l"},
+ [0x1E2C6]={d="l"},
+ [0x1E2C7]={d="l"},
+ [0x1E2C8]={d="l"},
+ [0x1E2C9]={d="l"},
+ [0x1E2CA]={d="l"},
+ [0x1E2CB]={d="l"},
+ [0x1E2CC]={d="l"},
+ [0x1E2CD]={d="l"},
+ [0x1E2CE]={d="l"},
+ [0x1E2CF]={d="l"},
+ [0x1E2D0]={d="l"},
+ [0x1E2D1]={d="l"},
+ [0x1E2D2]={d="l"},
+ [0x1E2D3]={d="l"},
+ [0x1E2D4]={d="l"},
+ [0x1E2D5]={d="l"},
+ [0x1E2D6]={d="l"},
+ [0x1E2D7]={d="l"},
+ [0x1E2D8]={d="l"},
+ [0x1E2D9]={d="l"},
+ [0x1E2DA]={d="l"},
+ [0x1E2DB]={d="l"},
+ [0x1E2DC]={d="l"},
+ [0x1E2DD]={d="l"},
+ [0x1E2DE]={d="l"},
+ [0x1E2DF]={d="l"},
+ [0x1E2E0]={d="l"},
+ [0x1E2E1]={d="l"},
+ [0x1E2E2]={d="l"},
+ [0x1E2E3]={d="l"},
+ [0x1E2E4]={d="l"},
+ [0x1E2E5]={d="l"},
+ [0x1E2E6]={d="l"},
+ [0x1E2E7]={d="l"},
+ [0x1E2E8]={d="l"},
+ [0x1E2E9]={d="l"},
+ [0x1E2EA]={d="l"},
+ [0x1E2EB]={d="l"},
+ [0x1E2EC]={d="nsm"},
+ [0x1E2ED]={d="nsm"},
+ [0x1E2EE]={d="nsm"},
+ [0x1E2EF]={d="nsm"},
+ [0x1E2F0]={d="l"},
+ [0x1E2F1]={d="l"},
+ [0x1E2F2]={d="l"},
+ [0x1E2F3]={d="l"},
+ [0x1E2F4]={d="l"},
+ [0x1E2F5]={d="l"},
+ [0x1E2F6]={d="l"},
+ [0x1E2F7]={d="l"},
+ [0x1E2F8]={d="l"},
+ [0x1E2F9]={d="l"},
+ [0x1E2FF]={d="et"},
+ [0x1E4D0]={d="l"},
+ [0x1E4D1]={d="l"},
+ [0x1E4D2]={d="l"},
+ [0x1E4D3]={d="l"},
+ [0x1E4D4]={d="l"},
+ [0x1E4D5]={d="l"},
+ [0x1E4D6]={d="l"},
+ [0x1E4D7]={d="l"},
+ [0x1E4D8]={d="l"},
+ [0x1E4D9]={d="l"},
+ [0x1E4DA]={d="l"},
+ [0x1E4DB]={d="l"},
+ [0x1E4DC]={d="l"},
+ [0x1E4DD]={d="l"},
+ [0x1E4DE]={d="l"},
+ [0x1E4DF]={d="l"},
+ [0x1E4E0]={d="l"},
+ [0x1E4E1]={d="l"},
+ [0x1E4E2]={d="l"},
+ [0x1E4E3]={d="l"},
+ [0x1E4E4]={d="l"},
+ [0x1E4E5]={d="l"},
+ [0x1E4E6]={d="l"},
+ [0x1E4E7]={d="l"},
+ [0x1E4E8]={d="l"},
+ [0x1E4E9]={d="l"},
+ [0x1E4EA]={d="l"},
+ [0x1E4EB]={d="l"},
+ [0x1E4EC]={d="nsm"},
+ [0x1E4ED]={d="nsm"},
+ [0x1E4EE]={d="nsm"},
+ [0x1E4EF]={d="nsm"},
+ [0x1E4F0]={d="l"},
+ [0x1E4F1]={d="l"},
+ [0x1E4F2]={d="l"},
+ [0x1E4F3]={d="l"},
+ [0x1E4F4]={d="l"},
+ [0x1E4F5]={d="l"},
+ [0x1E4F6]={d="l"},
+ [0x1E4F7]={d="l"},
+ [0x1E4F8]={d="l"},
+ [0x1E4F9]={d="l"},
+ [0x1E7E0]={d="l"},
+ [0x1E7E1]={d="l"},
+ [0x1E7E2]={d="l"},
+ [0x1E7E3]={d="l"},
+ [0x1E7E4]={d="l"},
+ [0x1E7E5]={d="l"},
+ [0x1E7E6]={d="l"},
+ [0x1E7E8]={d="l"},
+ [0x1E7E9]={d="l"},
+ [0x1E7EA]={d="l"},
+ [0x1E7EB]={d="l"},
+ [0x1E7ED]={d="l"},
+ [0x1E7EE]={d="l"},
+ [0x1E7F0]={d="l"},
+ [0x1E7F1]={d="l"},
+ [0x1E7F2]={d="l"},
+ [0x1E7F3]={d="l"},
+ [0x1E7F4]={d="l"},
+ [0x1E7F5]={d="l"},
+ [0x1E7F6]={d="l"},
+ [0x1E7F7]={d="l"},
+ [0x1E7F8]={d="l"},
+ [0x1E7F9]={d="l"},
+ [0x1E7FA]={d="l"},
+ [0x1E7FB]={d="l"},
+ [0x1E7FC]={d="l"},
+ [0x1E7FD]={d="l"},
+ [0x1E7FE]={d="l"},
+ [0x1E800]={d="r"},
+ [0x1E801]={d="r"},
+ [0x1E802]={d="r"},
+ [0x1E803]={d="r"},
+ [0x1E804]={d="r"},
+ [0x1E805]={d="r"},
+ [0x1E806]={d="r"},
+ [0x1E807]={d="r"},
+ [0x1E808]={d="r"},
+ [0x1E809]={d="r"},
+ [0x1E80A]={d="r"},
+ [0x1E80B]={d="r"},
+ [0x1E80C]={d="r"},
+ [0x1E80D]={d="r"},
+ [0x1E80E]={d="r"},
+ [0x1E80F]={d="r"},
+ [0x1E810]={d="r"},
+ [0x1E811]={d="r"},
+ [0x1E812]={d="r"},
+ [0x1E813]={d="r"},
+ [0x1E814]={d="r"},
+ [0x1E815]={d="r"},
+ [0x1E816]={d="r"},
+ [0x1E817]={d="r"},
+ [0x1E818]={d="r"},
+ [0x1E819]={d="r"},
+ [0x1E81A]={d="r"},
+ [0x1E81B]={d="r"},
+ [0x1E81C]={d="r"},
+ [0x1E81D]={d="r"},
+ [0x1E81E]={d="r"},
+ [0x1E81F]={d="r"},
+ [0x1E820]={d="r"},
+ [0x1E821]={d="r"},
+ [0x1E822]={d="r"},
+ [0x1E823]={d="r"},
+ [0x1E824]={d="r"},
+ [0x1E825]={d="r"},
+ [0x1E826]={d="r"},
+ [0x1E827]={d="r"},
+ [0x1E828]={d="r"},
+ [0x1E829]={d="r"},
+ [0x1E82A]={d="r"},
+ [0x1E82B]={d="r"},
+ [0x1E82C]={d="r"},
+ [0x1E82D]={d="r"},
+ [0x1E82E]={d="r"},
+ [0x1E82F]={d="r"},
+ [0x1E830]={d="r"},
+ [0x1E831]={d="r"},
+ [0x1E832]={d="r"},
+ [0x1E833]={d="r"},
+ [0x1E834]={d="r"},
+ [0x1E835]={d="r"},
+ [0x1E836]={d="r"},
+ [0x1E837]={d="r"},
+ [0x1E838]={d="r"},
+ [0x1E839]={d="r"},
+ [0x1E83A]={d="r"},
+ [0x1E83B]={d="r"},
+ [0x1E83C]={d="r"},
+ [0x1E83D]={d="r"},
+ [0x1E83E]={d="r"},
+ [0x1E83F]={d="r"},
+ [0x1E840]={d="r"},
+ [0x1E841]={d="r"},
+ [0x1E842]={d="r"},
+ [0x1E843]={d="r"},
+ [0x1E844]={d="r"},
+ [0x1E845]={d="r"},
+ [0x1E846]={d="r"},
+ [0x1E847]={d="r"},
+ [0x1E848]={d="r"},
+ [0x1E849]={d="r"},
+ [0x1E84A]={d="r"},
+ [0x1E84B]={d="r"},
+ [0x1E84C]={d="r"},
+ [0x1E84D]={d="r"},
+ [0x1E84E]={d="r"},
+ [0x1E84F]={d="r"},
+ [0x1E850]={d="r"},
+ [0x1E851]={d="r"},
+ [0x1E852]={d="r"},
+ [0x1E853]={d="r"},
+ [0x1E854]={d="r"},
+ [0x1E855]={d="r"},
+ [0x1E856]={d="r"},
+ [0x1E857]={d="r"},
+ [0x1E858]={d="r"},
+ [0x1E859]={d="r"},
+ [0x1E85A]={d="r"},
+ [0x1E85B]={d="r"},
+ [0x1E85C]={d="r"},
+ [0x1E85D]={d="r"},
+ [0x1E85E]={d="r"},
+ [0x1E85F]={d="r"},
+ [0x1E860]={d="r"},
+ [0x1E861]={d="r"},
+ [0x1E862]={d="r"},
+ [0x1E863]={d="r"},
+ [0x1E864]={d="r"},
+ [0x1E865]={d="r"},
+ [0x1E866]={d="r"},
+ [0x1E867]={d="r"},
+ [0x1E868]={d="r"},
+ [0x1E869]={d="r"},
+ [0x1E86A]={d="r"},
+ [0x1E86B]={d="r"},
+ [0x1E86C]={d="r"},
+ [0x1E86D]={d="r"},
+ [0x1E86E]={d="r"},
+ [0x1E86F]={d="r"},
+ [0x1E870]={d="r"},
+ [0x1E871]={d="r"},
+ [0x1E872]={d="r"},
+ [0x1E873]={d="r"},
+ [0x1E874]={d="r"},
+ [0x1E875]={d="r"},
+ [0x1E876]={d="r"},
+ [0x1E877]={d="r"},
+ [0x1E878]={d="r"},
+ [0x1E879]={d="r"},
+ [0x1E87A]={d="r"},
+ [0x1E87B]={d="r"},
+ [0x1E87C]={d="r"},
+ [0x1E87D]={d="r"},
+ [0x1E87E]={d="r"},
+ [0x1E87F]={d="r"},
+ [0x1E880]={d="r"},
+ [0x1E881]={d="r"},
+ [0x1E882]={d="r"},
+ [0x1E883]={d="r"},
+ [0x1E884]={d="r"},
+ [0x1E885]={d="r"},
+ [0x1E886]={d="r"},
+ [0x1E887]={d="r"},
+ [0x1E888]={d="r"},
+ [0x1E889]={d="r"},
+ [0x1E88A]={d="r"},
+ [0x1E88B]={d="r"},
+ [0x1E88C]={d="r"},
+ [0x1E88D]={d="r"},
+ [0x1E88E]={d="r"},
+ [0x1E88F]={d="r"},
+ [0x1E890]={d="r"},
+ [0x1E891]={d="r"},
+ [0x1E892]={d="r"},
+ [0x1E893]={d="r"},
+ [0x1E894]={d="r"},
+ [0x1E895]={d="r"},
+ [0x1E896]={d="r"},
+ [0x1E897]={d="r"},
+ [0x1E898]={d="r"},
+ [0x1E899]={d="r"},
+ [0x1E89A]={d="r"},
+ [0x1E89B]={d="r"},
+ [0x1E89C]={d="r"},
+ [0x1E89D]={d="r"},
+ [0x1E89E]={d="r"},
+ [0x1E89F]={d="r"},
+ [0x1E8A0]={d="r"},
+ [0x1E8A1]={d="r"},
+ [0x1E8A2]={d="r"},
+ [0x1E8A3]={d="r"},
+ [0x1E8A4]={d="r"},
+ [0x1E8A5]={d="r"},
+ [0x1E8A6]={d="r"},
+ [0x1E8A7]={d="r"},
+ [0x1E8A8]={d="r"},
+ [0x1E8A9]={d="r"},
+ [0x1E8AA]={d="r"},
+ [0x1E8AB]={d="r"},
+ [0x1E8AC]={d="r"},
+ [0x1E8AD]={d="r"},
+ [0x1E8AE]={d="r"},
+ [0x1E8AF]={d="r"},
+ [0x1E8B0]={d="r"},
+ [0x1E8B1]={d="r"},
+ [0x1E8B2]={d="r"},
+ [0x1E8B3]={d="r"},
+ [0x1E8B4]={d="r"},
+ [0x1E8B5]={d="r"},
+ [0x1E8B6]={d="r"},
+ [0x1E8B7]={d="r"},
+ [0x1E8B8]={d="r"},
+ [0x1E8B9]={d="r"},
+ [0x1E8BA]={d="r"},
+ [0x1E8BB]={d="r"},
+ [0x1E8BC]={d="r"},
+ [0x1E8BD]={d="r"},
+ [0x1E8BE]={d="r"},
+ [0x1E8BF]={d="r"},
+ [0x1E8C0]={d="r"},
+ [0x1E8C1]={d="r"},
+ [0x1E8C2]={d="r"},
+ [0x1E8C3]={d="r"},
+ [0x1E8C4]={d="r"},
+ [0x1E8C7]={d="r"},
+ [0x1E8C8]={d="r"},
+ [0x1E8C9]={d="r"},
+ [0x1E8CA]={d="r"},
+ [0x1E8CB]={d="r"},
+ [0x1E8CC]={d="r"},
+ [0x1E8CD]={d="r"},
+ [0x1E8CE]={d="r"},
+ [0x1E8CF]={d="r"},
+ [0x1E8D0]={d="nsm"},
+ [0x1E8D1]={d="nsm"},
+ [0x1E8D2]={d="nsm"},
+ [0x1E8D3]={d="nsm"},
+ [0x1E8D4]={d="nsm"},
+ [0x1E8D5]={d="nsm"},
+ [0x1E8D6]={d="nsm"},
+ [0x1E900]={d="r"},
+ [0x1E901]={d="r"},
+ [0x1E902]={d="r"},
+ [0x1E903]={d="r"},
+ [0x1E904]={d="r"},
+ [0x1E905]={d="r"},
+ [0x1E906]={d="r"},
+ [0x1E907]={d="r"},
+ [0x1E908]={d="r"},
+ [0x1E909]={d="r"},
+ [0x1E90A]={d="r"},
+ [0x1E90B]={d="r"},
+ [0x1E90C]={d="r"},
+ [0x1E90D]={d="r"},
+ [0x1E90E]={d="r"},
+ [0x1E90F]={d="r"},
+ [0x1E910]={d="r"},
+ [0x1E911]={d="r"},
+ [0x1E912]={d="r"},
+ [0x1E913]={d="r"},
+ [0x1E914]={d="r"},
+ [0x1E915]={d="r"},
+ [0x1E916]={d="r"},
+ [0x1E917]={d="r"},
+ [0x1E918]={d="r"},
+ [0x1E919]={d="r"},
+ [0x1E91A]={d="r"},
+ [0x1E91B]={d="r"},
+ [0x1E91C]={d="r"},
+ [0x1E91D]={d="r"},
+ [0x1E91E]={d="r"},
+ [0x1E91F]={d="r"},
+ [0x1E920]={d="r"},
+ [0x1E921]={d="r"},
+ [0x1E922]={d="r"},
+ [0x1E923]={d="r"},
+ [0x1E924]={d="r"},
+ [0x1E925]={d="r"},
+ [0x1E926]={d="r"},
+ [0x1E927]={d="r"},
+ [0x1E928]={d="r"},
+ [0x1E929]={d="r"},
+ [0x1E92A]={d="r"},
+ [0x1E92B]={d="r"},
+ [0x1E92C]={d="r"},
+ [0x1E92D]={d="r"},
+ [0x1E92E]={d="r"},
+ [0x1E92F]={d="r"},
+ [0x1E930]={d="r"},
+ [0x1E931]={d="r"},
+ [0x1E932]={d="r"},
+ [0x1E933]={d="r"},
+ [0x1E934]={d="r"},
+ [0x1E935]={d="r"},
+ [0x1E936]={d="r"},
+ [0x1E937]={d="r"},
+ [0x1E938]={d="r"},
+ [0x1E939]={d="r"},
+ [0x1E93A]={d="r"},
+ [0x1E93B]={d="r"},
+ [0x1E93C]={d="r"},
+ [0x1E93D]={d="r"},
+ [0x1E93E]={d="r"},
+ [0x1E93F]={d="r"},
+ [0x1E940]={d="r"},
+ [0x1E941]={d="r"},
+ [0x1E942]={d="r"},
+ [0x1E943]={d="r"},
+ [0x1E944]={d="nsm"},
+ [0x1E945]={d="nsm"},
+ [0x1E946]={d="nsm"},
+ [0x1E947]={d="nsm"},
+ [0x1E948]={d="nsm"},
+ [0x1E949]={d="nsm"},
+ [0x1E94A]={d="nsm"},
+ [0x1E94B]={d="r"},
+ [0x1E950]={d="r"},
+ [0x1E951]={d="r"},
+ [0x1E952]={d="r"},
+ [0x1E953]={d="r"},
+ [0x1E954]={d="r"},
+ [0x1E955]={d="r"},
+ [0x1E956]={d="r"},
+ [0x1E957]={d="r"},
+ [0x1E958]={d="r"},
+ [0x1E959]={d="r"},
+ [0x1E95E]={d="r"},
+ [0x1E95F]={d="r"},
+ [0x1EC71]={d="al"},
+ [0x1EC72]={d="al"},
+ [0x1EC73]={d="al"},
+ [0x1EC74]={d="al"},
+ [0x1EC75]={d="al"},
+ [0x1EC76]={d="al"},
+ [0x1EC77]={d="al"},
+ [0x1EC78]={d="al"},
+ [0x1EC79]={d="al"},
+ [0x1EC7A]={d="al"},
+ [0x1EC7B]={d="al"},
+ [0x1EC7C]={d="al"},
+ [0x1EC7D]={d="al"},
+ [0x1EC7E]={d="al"},
+ [0x1EC7F]={d="al"},
+ [0x1EC80]={d="al"},
+ [0x1EC81]={d="al"},
+ [0x1EC82]={d="al"},
+ [0x1EC83]={d="al"},
+ [0x1EC84]={d="al"},
+ [0x1EC85]={d="al"},
+ [0x1EC86]={d="al"},
+ [0x1EC87]={d="al"},
+ [0x1EC88]={d="al"},
+ [0x1EC89]={d="al"},
+ [0x1EC8A]={d="al"},
+ [0x1EC8B]={d="al"},
+ [0x1EC8C]={d="al"},
+ [0x1EC8D]={d="al"},
+ [0x1EC8E]={d="al"},
+ [0x1EC8F]={d="al"},
+ [0x1EC90]={d="al"},
+ [0x1EC91]={d="al"},
+ [0x1EC92]={d="al"},
+ [0x1EC93]={d="al"},
+ [0x1EC94]={d="al"},
+ [0x1EC95]={d="al"},
+ [0x1EC96]={d="al"},
+ [0x1EC97]={d="al"},
+ [0x1EC98]={d="al"},
+ [0x1EC99]={d="al"},
+ [0x1EC9A]={d="al"},
+ [0x1EC9B]={d="al"},
+ [0x1EC9C]={d="al"},
+ [0x1EC9D]={d="al"},
+ [0x1EC9E]={d="al"},
+ [0x1EC9F]={d="al"},
+ [0x1ECA0]={d="al"},
+ [0x1ECA1]={d="al"},
+ [0x1ECA2]={d="al"},
+ [0x1ECA3]={d="al"},
+ [0x1ECA4]={d="al"},
+ [0x1ECA5]={d="al"},
+ [0x1ECA6]={d="al"},
+ [0x1ECA7]={d="al"},
+ [0x1ECA8]={d="al"},
+ [0x1ECA9]={d="al"},
+ [0x1ECAA]={d="al"},
+ [0x1ECAB]={d="al"},
+ [0x1ECAC]={d="al"},
+ [0x1ECAD]={d="al"},
+ [0x1ECAE]={d="al"},
+ [0x1ECAF]={d="al"},
+ [0x1ECB0]={d="al"},
+ [0x1ECB1]={d="al"},
+ [0x1ECB2]={d="al"},
+ [0x1ECB3]={d="al"},
+ [0x1ECB4]={d="al"},
+ [0x1ED01]={d="al"},
+ [0x1ED02]={d="al"},
+ [0x1ED03]={d="al"},
+ [0x1ED04]={d="al"},
+ [0x1ED05]={d="al"},
+ [0x1ED06]={d="al"},
+ [0x1ED07]={d="al"},
+ [0x1ED08]={d="al"},
+ [0x1ED09]={d="al"},
+ [0x1ED0A]={d="al"},
+ [0x1ED0B]={d="al"},
+ [0x1ED0C]={d="al"},
+ [0x1ED0D]={d="al"},
+ [0x1ED0E]={d="al"},
+ [0x1ED0F]={d="al"},
+ [0x1ED10]={d="al"},
+ [0x1ED11]={d="al"},
+ [0x1ED12]={d="al"},
+ [0x1ED13]={d="al"},
+ [0x1ED14]={d="al"},
+ [0x1ED15]={d="al"},
+ [0x1ED16]={d="al"},
+ [0x1ED17]={d="al"},
+ [0x1ED18]={d="al"},
+ [0x1ED19]={d="al"},
+ [0x1ED1A]={d="al"},
+ [0x1ED1B]={d="al"},
+ [0x1ED1C]={d="al"},
+ [0x1ED1D]={d="al"},
+ [0x1ED1E]={d="al"},
+ [0x1ED1F]={d="al"},
+ [0x1ED20]={d="al"},
+ [0x1ED21]={d="al"},
+ [0x1ED22]={d="al"},
+ [0x1ED23]={d="al"},
+ [0x1ED24]={d="al"},
+ [0x1ED25]={d="al"},
+ [0x1ED26]={d="al"},
+ [0x1ED27]={d="al"},
+ [0x1ED28]={d="al"},
+ [0x1ED29]={d="al"},
+ [0x1ED2A]={d="al"},
+ [0x1ED2B]={d="al"},
+ [0x1ED2C]={d="al"},
+ [0x1ED2D]={d="al"},
+ [0x1ED2E]={d="al"},
+ [0x1ED2F]={d="al"},
+ [0x1ED30]={d="al"},
+ [0x1ED31]={d="al"},
+ [0x1ED32]={d="al"},
+ [0x1ED33]={d="al"},
+ [0x1ED34]={d="al"},
+ [0x1ED35]={d="al"},
+ [0x1ED36]={d="al"},
+ [0x1ED37]={d="al"},
+ [0x1ED38]={d="al"},
+ [0x1ED39]={d="al"},
+ [0x1ED3A]={d="al"},
+ [0x1ED3B]={d="al"},
+ [0x1ED3C]={d="al"},
+ [0x1ED3D]={d="al"},
+ [0x1EE00]={d="al"},
+ [0x1EE01]={d="al"},
+ [0x1EE02]={d="al"},
+ [0x1EE03]={d="al"},
+ [0x1EE05]={d="al"},
+ [0x1EE06]={d="al"},
+ [0x1EE07]={d="al"},
+ [0x1EE08]={d="al"},
+ [0x1EE09]={d="al"},
+ [0x1EE0A]={d="al"},
+ [0x1EE0B]={d="al"},
+ [0x1EE0C]={d="al"},
+ [0x1EE0D]={d="al"},
+ [0x1EE0E]={d="al"},
+ [0x1EE0F]={d="al"},
+ [0x1EE10]={d="al"},
+ [0x1EE11]={d="al"},
+ [0x1EE12]={d="al"},
+ [0x1EE13]={d="al"},
+ [0x1EE14]={d="al"},
+ [0x1EE15]={d="al"},
+ [0x1EE16]={d="al"},
+ [0x1EE17]={d="al"},
+ [0x1EE18]={d="al"},
+ [0x1EE19]={d="al"},
+ [0x1EE1A]={d="al"},
+ [0x1EE1B]={d="al"},
+ [0x1EE1C]={d="al"},
+ [0x1EE1D]={d="al"},
+ [0x1EE1E]={d="al"},
+ [0x1EE1F]={d="al"},
+ [0x1EE21]={d="al"},
+ [0x1EE22]={d="al"},
+ [0x1EE24]={d="al"},
+ [0x1EE27]={d="al"},
+ [0x1EE29]={d="al"},
+ [0x1EE2A]={d="al"},
+ [0x1EE2B]={d="al"},
+ [0x1EE2C]={d="al"},
+ [0x1EE2D]={d="al"},
+ [0x1EE2E]={d="al"},
+ [0x1EE2F]={d="al"},
+ [0x1EE30]={d="al"},
+ [0x1EE31]={d="al"},
+ [0x1EE32]={d="al"},
+ [0x1EE34]={d="al"},
+ [0x1EE35]={d="al"},
+ [0x1EE36]={d="al"},
+ [0x1EE37]={d="al"},
+ [0x1EE39]={d="al"},
+ [0x1EE3B]={d="al"},
+ [0x1EE42]={d="al"},
+ [0x1EE47]={d="al"},
+ [0x1EE49]={d="al"},
+ [0x1EE4B]={d="al"},
+ [0x1EE4D]={d="al"},
+ [0x1EE4E]={d="al"},
+ [0x1EE4F]={d="al"},
+ [0x1EE51]={d="al"},
+ [0x1EE52]={d="al"},
+ [0x1EE54]={d="al"},
+ [0x1EE57]={d="al"},
+ [0x1EE59]={d="al"},
+ [0x1EE5B]={d="al"},
+ [0x1EE5D]={d="al"},
+ [0x1EE5F]={d="al"},
+ [0x1EE61]={d="al"},
+ [0x1EE62]={d="al"},
+ [0x1EE64]={d="al"},
+ [0x1EE67]={d="al"},
+ [0x1EE68]={d="al"},
+ [0x1EE69]={d="al"},
+ [0x1EE6A]={d="al"},
+ [0x1EE6C]={d="al"},
+ [0x1EE6D]={d="al"},
+ [0x1EE6E]={d="al"},
+ [0x1EE6F]={d="al"},
+ [0x1EE70]={d="al"},
+ [0x1EE71]={d="al"},
+ [0x1EE72]={d="al"},
+ [0x1EE74]={d="al"},
+ [0x1EE75]={d="al"},
+ [0x1EE76]={d="al"},
+ [0x1EE77]={d="al"},
+ [0x1EE79]={d="al"},
+ [0x1EE7A]={d="al"},
+ [0x1EE7B]={d="al"},
+ [0x1EE7C]={d="al"},
+ [0x1EE7E]={d="al"},
+ [0x1EE80]={d="al"},
+ [0x1EE81]={d="al"},
+ [0x1EE82]={d="al"},
+ [0x1EE83]={d="al"},
+ [0x1EE84]={d="al"},
+ [0x1EE85]={d="al"},
+ [0x1EE86]={d="al"},
+ [0x1EE87]={d="al"},
+ [0x1EE88]={d="al"},
+ [0x1EE89]={d="al"},
+ [0x1EE8B]={d="al"},
+ [0x1EE8C]={d="al"},
+ [0x1EE8D]={d="al"},
+ [0x1EE8E]={d="al"},
+ [0x1EE8F]={d="al"},
+ [0x1EE90]={d="al"},
+ [0x1EE91]={d="al"},
+ [0x1EE92]={d="al"},
+ [0x1EE93]={d="al"},
+ [0x1EE94]={d="al"},
+ [0x1EE95]={d="al"},
+ [0x1EE96]={d="al"},
+ [0x1EE97]={d="al"},
+ [0x1EE98]={d="al"},
+ [0x1EE99]={d="al"},
+ [0x1EE9A]={d="al"},
+ [0x1EE9B]={d="al"},
+ [0x1EEA1]={d="al"},
+ [0x1EEA2]={d="al"},
+ [0x1EEA3]={d="al"},
+ [0x1EEA5]={d="al"},
+ [0x1EEA6]={d="al"},
+ [0x1EEA7]={d="al"},
+ [0x1EEA8]={d="al"},
+ [0x1EEA9]={d="al"},
+ [0x1EEAB]={d="al"},
+ [0x1EEAC]={d="al"},
+ [0x1EEAD]={d="al"},
+ [0x1EEAE]={d="al"},
+ [0x1EEAF]={d="al"},
+ [0x1EEB0]={d="al"},
+ [0x1EEB1]={d="al"},
+ [0x1EEB2]={d="al"},
+ [0x1EEB3]={d="al"},
+ [0x1EEB4]={d="al"},
+ [0x1EEB5]={d="al"},
+ [0x1EEB6]={d="al"},
+ [0x1EEB7]={d="al"},
+ [0x1EEB8]={d="al"},
+ [0x1EEB9]={d="al"},
+ [0x1EEBA]={d="al"},
+ [0x1EEBB]={d="al"},
+ [0x1EEF0]={d="on"},
+ [0x1EEF1]={d="on"},
+ [0x1F000]={d="on"},
+ [0x1F001]={d="on"},
+ [0x1F002]={d="on"},
+ [0x1F003]={d="on"},
+ [0x1F004]={d="on"},
+ [0x1F005]={d="on"},
+ [0x1F006]={d="on"},
+ [0x1F007]={d="on"},
+ [0x1F008]={d="on"},
+ [0x1F009]={d="on"},
+ [0x1F00A]={d="on"},
+ [0x1F00B]={d="on"},
+ [0x1F00C]={d="on"},
+ [0x1F00D]={d="on"},
+ [0x1F00E]={d="on"},
+ [0x1F00F]={d="on"},
+ [0x1F010]={d="on"},
+ [0x1F011]={d="on"},
+ [0x1F012]={d="on"},
+ [0x1F013]={d="on"},
+ [0x1F014]={d="on"},
+ [0x1F015]={d="on"},
+ [0x1F016]={d="on"},
+ [0x1F017]={d="on"},
+ [0x1F018]={d="on"},
+ [0x1F019]={d="on"},
+ [0x1F01A]={d="on"},
+ [0x1F01B]={d="on"},
+ [0x1F01C]={d="on"},
+ [0x1F01D]={d="on"},
+ [0x1F01E]={d="on"},
+ [0x1F01F]={d="on"},
+ [0x1F020]={d="on"},
+ [0x1F021]={d="on"},
+ [0x1F022]={d="on"},
+ [0x1F023]={d="on"},
+ [0x1F024]={d="on"},
+ [0x1F025]={d="on"},
+ [0x1F026]={d="on"},
+ [0x1F027]={d="on"},
+ [0x1F028]={d="on"},
+ [0x1F029]={d="on"},
+ [0x1F02A]={d="on"},
+ [0x1F02B]={d="on"},
+ [0x1F030]={d="on"},
+ [0x1F031]={d="on"},
+ [0x1F032]={d="on"},
+ [0x1F033]={d="on"},
+ [0x1F034]={d="on"},
+ [0x1F035]={d="on"},
+ [0x1F036]={d="on"},
+ [0x1F037]={d="on"},
+ [0x1F038]={d="on"},
+ [0x1F039]={d="on"},
+ [0x1F03A]={d="on"},
+ [0x1F03B]={d="on"},
+ [0x1F03C]={d="on"},
+ [0x1F03D]={d="on"},
+ [0x1F03E]={d="on"},
+ [0x1F03F]={d="on"},
+ [0x1F040]={d="on"},
+ [0x1F041]={d="on"},
+ [0x1F042]={d="on"},
+ [0x1F043]={d="on"},
+ [0x1F044]={d="on"},
+ [0x1F045]={d="on"},
+ [0x1F046]={d="on"},
+ [0x1F047]={d="on"},
+ [0x1F048]={d="on"},
+ [0x1F049]={d="on"},
+ [0x1F04A]={d="on"},
+ [0x1F04B]={d="on"},
+ [0x1F04C]={d="on"},
+ [0x1F04D]={d="on"},
+ [0x1F04E]={d="on"},
+ [0x1F04F]={d="on"},
+ [0x1F050]={d="on"},
+ [0x1F051]={d="on"},
+ [0x1F052]={d="on"},
+ [0x1F053]={d="on"},
+ [0x1F054]={d="on"},
+ [0x1F055]={d="on"},
+ [0x1F056]={d="on"},
+ [0x1F057]={d="on"},
+ [0x1F058]={d="on"},
+ [0x1F059]={d="on"},
+ [0x1F05A]={d="on"},
+ [0x1F05B]={d="on"},
+ [0x1F05C]={d="on"},
+ [0x1F05D]={d="on"},
+ [0x1F05E]={d="on"},
+ [0x1F05F]={d="on"},
+ [0x1F060]={d="on"},
+ [0x1F061]={d="on"},
+ [0x1F062]={d="on"},
+ [0x1F063]={d="on"},
+ [0x1F064]={d="on"},
+ [0x1F065]={d="on"},
+ [0x1F066]={d="on"},
+ [0x1F067]={d="on"},
+ [0x1F068]={d="on"},
+ [0x1F069]={d="on"},
+ [0x1F06A]={d="on"},
+ [0x1F06B]={d="on"},
+ [0x1F06C]={d="on"},
+ [0x1F06D]={d="on"},
+ [0x1F06E]={d="on"},
+ [0x1F06F]={d="on"},
+ [0x1F070]={d="on"},
+ [0x1F071]={d="on"},
+ [0x1F072]={d="on"},
+ [0x1F073]={d="on"},
+ [0x1F074]={d="on"},
+ [0x1F075]={d="on"},
+ [0x1F076]={d="on"},
+ [0x1F077]={d="on"},
+ [0x1F078]={d="on"},
+ [0x1F079]={d="on"},
+ [0x1F07A]={d="on"},
+ [0x1F07B]={d="on"},
+ [0x1F07C]={d="on"},
+ [0x1F07D]={d="on"},
+ [0x1F07E]={d="on"},
+ [0x1F07F]={d="on"},
+ [0x1F080]={d="on"},
+ [0x1F081]={d="on"},
+ [0x1F082]={d="on"},
+ [0x1F083]={d="on"},
+ [0x1F084]={d="on"},
+ [0x1F085]={d="on"},
+ [0x1F086]={d="on"},
+ [0x1F087]={d="on"},
+ [0x1F088]={d="on"},
+ [0x1F089]={d="on"},
+ [0x1F08A]={d="on"},
+ [0x1F08B]={d="on"},
+ [0x1F08C]={d="on"},
+ [0x1F08D]={d="on"},
+ [0x1F08E]={d="on"},
+ [0x1F08F]={d="on"},
+ [0x1F090]={d="on"},
+ [0x1F091]={d="on"},
+ [0x1F092]={d="on"},
+ [0x1F093]={d="on"},
+ [0x1F0A0]={d="on"},
+ [0x1F0A1]={d="on"},
+ [0x1F0A2]={d="on"},
+ [0x1F0A3]={d="on"},
+ [0x1F0A4]={d="on"},
+ [0x1F0A5]={d="on"},
+ [0x1F0A6]={d="on"},
+ [0x1F0A7]={d="on"},
+ [0x1F0A8]={d="on"},
+ [0x1F0A9]={d="on"},
+ [0x1F0AA]={d="on"},
+ [0x1F0AB]={d="on"},
+ [0x1F0AC]={d="on"},
+ [0x1F0AD]={d="on"},
+ [0x1F0AE]={d="on"},
+ [0x1F0B1]={d="on"},
+ [0x1F0B2]={d="on"},
+ [0x1F0B3]={d="on"},
+ [0x1F0B4]={d="on"},
+ [0x1F0B5]={d="on"},
+ [0x1F0B6]={d="on"},
+ [0x1F0B7]={d="on"},
+ [0x1F0B8]={d="on"},
+ [0x1F0B9]={d="on"},
+ [0x1F0BA]={d="on"},
+ [0x1F0BB]={d="on"},
+ [0x1F0BC]={d="on"},
+ [0x1F0BD]={d="on"},
+ [0x1F0BE]={d="on"},
+ [0x1F0BF]={d="on"},
+ [0x1F0C1]={d="on"},
+ [0x1F0C2]={d="on"},
+ [0x1F0C3]={d="on"},
+ [0x1F0C4]={d="on"},
+ [0x1F0C5]={d="on"},
+ [0x1F0C6]={d="on"},
+ [0x1F0C7]={d="on"},
+ [0x1F0C8]={d="on"},
+ [0x1F0C9]={d="on"},
+ [0x1F0CA]={d="on"},
+ [0x1F0CB]={d="on"},
+ [0x1F0CC]={d="on"},
+ [0x1F0CD]={d="on"},
+ [0x1F0CE]={d="on"},
+ [0x1F0CF]={d="on"},
+ [0x1F0D1]={d="on"},
+ [0x1F0D2]={d="on"},
+ [0x1F0D3]={d="on"},
+ [0x1F0D4]={d="on"},
+ [0x1F0D5]={d="on"},
+ [0x1F0D6]={d="on"},
+ [0x1F0D7]={d="on"},
+ [0x1F0D8]={d="on"},
+ [0x1F0D9]={d="on"},
+ [0x1F0DA]={d="on"},
+ [0x1F0DB]={d="on"},
+ [0x1F0DC]={d="on"},
+ [0x1F0DD]={d="on"},
+ [0x1F0DE]={d="on"},
+ [0x1F0DF]={d="on"},
+ [0x1F0E0]={d="on"},
+ [0x1F0E1]={d="on"},
+ [0x1F0E2]={d="on"},
+ [0x1F0E3]={d="on"},
+ [0x1F0E4]={d="on"},
+ [0x1F0E5]={d="on"},
+ [0x1F0E6]={d="on"},
+ [0x1F0E7]={d="on"},
+ [0x1F0E8]={d="on"},
+ [0x1F0E9]={d="on"},
+ [0x1F0EA]={d="on"},
+ [0x1F0EB]={d="on"},
+ [0x1F0EC]={d="on"},
+ [0x1F0ED]={d="on"},
+ [0x1F0EE]={d="on"},
+ [0x1F0EF]={d="on"},
+ [0x1F0F0]={d="on"},
+ [0x1F0F1]={d="on"},
+ [0x1F0F2]={d="on"},
+ [0x1F0F3]={d="on"},
+ [0x1F0F4]={d="on"},
+ [0x1F0F5]={d="on"},
+ [0x1F100]={d="en"},
+ [0x1F101]={d="en"},
+ [0x1F102]={d="en"},
+ [0x1F103]={d="en"},
+ [0x1F104]={d="en"},
+ [0x1F105]={d="en"},
+ [0x1F106]={d="en"},
+ [0x1F107]={d="en"},
+ [0x1F108]={d="en"},
+ [0x1F109]={d="en"},
+ [0x1F10A]={d="en"},
+ [0x1F10B]={d="on"},
+ [0x1F10C]={d="on"},
+ [0x1F10D]={d="on"},
+ [0x1F10E]={d="on"},
+ [0x1F10F]={d="on"},
+ [0x1F110]={d="l"},
+ [0x1F111]={d="l"},
+ [0x1F112]={d="l"},
+ [0x1F113]={d="l"},
+ [0x1F114]={d="l"},
+ [0x1F115]={d="l"},
+ [0x1F116]={d="l"},
+ [0x1F117]={d="l"},
+ [0x1F118]={d="l"},
+ [0x1F119]={d="l"},
+ [0x1F11A]={d="l"},
+ [0x1F11B]={d="l"},
+ [0x1F11C]={d="l"},
+ [0x1F11D]={d="l"},
+ [0x1F11E]={d="l"},
+ [0x1F11F]={d="l"},
+ [0x1F120]={d="l"},
+ [0x1F121]={d="l"},
+ [0x1F122]={d="l"},
+ [0x1F123]={d="l"},
+ [0x1F124]={d="l"},
+ [0x1F125]={d="l"},
+ [0x1F126]={d="l"},
+ [0x1F127]={d="l"},
+ [0x1F128]={d="l"},
+ [0x1F129]={d="l"},
+ [0x1F12A]={d="l"},
+ [0x1F12B]={d="l"},
+ [0x1F12C]={d="l"},
+ [0x1F12D]={d="l"},
+ [0x1F12E]={d="l"},
+ [0x1F12F]={d="on"},
+ [0x1F130]={d="l"},
+ [0x1F131]={d="l"},
+ [0x1F132]={d="l"},
+ [0x1F133]={d="l"},
+ [0x1F134]={d="l"},
+ [0x1F135]={d="l"},
+ [0x1F136]={d="l"},
+ [0x1F137]={d="l"},
+ [0x1F138]={d="l"},
+ [0x1F139]={d="l"},
+ [0x1F13A]={d="l"},
+ [0x1F13B]={d="l"},
+ [0x1F13C]={d="l"},
+ [0x1F13D]={d="l"},
+ [0x1F13E]={d="l"},
+ [0x1F13F]={d="l"},
+ [0x1F140]={d="l"},
+ [0x1F141]={d="l"},
+ [0x1F142]={d="l"},
+ [0x1F143]={d="l"},
+ [0x1F144]={d="l"},
+ [0x1F145]={d="l"},
+ [0x1F146]={d="l"},
+ [0x1F147]={d="l"},
+ [0x1F148]={d="l"},
+ [0x1F149]={d="l"},
+ [0x1F14A]={d="l"},
+ [0x1F14B]={d="l"},
+ [0x1F14C]={d="l"},
+ [0x1F14D]={d="l"},
+ [0x1F14E]={d="l"},
+ [0x1F14F]={d="l"},
+ [0x1F150]={d="l"},
+ [0x1F151]={d="l"},
+ [0x1F152]={d="l"},
+ [0x1F153]={d="l"},
+ [0x1F154]={d="l"},
+ [0x1F155]={d="l"},
+ [0x1F156]={d="l"},
+ [0x1F157]={d="l"},
+ [0x1F158]={d="l"},
+ [0x1F159]={d="l"},
+ [0x1F15A]={d="l"},
+ [0x1F15B]={d="l"},
+ [0x1F15C]={d="l"},
+ [0x1F15D]={d="l"},
+ [0x1F15E]={d="l"},
+ [0x1F15F]={d="l"},
+ [0x1F160]={d="l"},
+ [0x1F161]={d="l"},
+ [0x1F162]={d="l"},
+ [0x1F163]={d="l"},
+ [0x1F164]={d="l"},
+ [0x1F165]={d="l"},
+ [0x1F166]={d="l"},
+ [0x1F167]={d="l"},
+ [0x1F168]={d="l"},
+ [0x1F169]={d="l"},
+ [0x1F16A]={d="on"},
+ [0x1F16B]={d="on"},
+ [0x1F16C]={d="on"},
+ [0x1F16D]={d="on"},
+ [0x1F16E]={d="on"},
+ [0x1F16F]={d="on"},
+ [0x1F170]={d="l"},
+ [0x1F171]={d="l"},
+ [0x1F172]={d="l"},
+ [0x1F173]={d="l"},
+ [0x1F174]={d="l"},
+ [0x1F175]={d="l"},
+ [0x1F176]={d="l"},
+ [0x1F177]={d="l"},
+ [0x1F178]={d="l"},
+ [0x1F179]={d="l"},
+ [0x1F17A]={d="l"},
+ [0x1F17B]={d="l"},
+ [0x1F17C]={d="l"},
+ [0x1F17D]={d="l"},
+ [0x1F17E]={d="l"},
+ [0x1F17F]={d="l"},
+ [0x1F180]={d="l"},
+ [0x1F181]={d="l"},
+ [0x1F182]={d="l"},
+ [0x1F183]={d="l"},
+ [0x1F184]={d="l"},
+ [0x1F185]={d="l"},
+ [0x1F186]={d="l"},
+ [0x1F187]={d="l"},
+ [0x1F188]={d="l"},
+ [0x1F189]={d="l"},
+ [0x1F18A]={d="l"},
+ [0x1F18B]={d="l"},
+ [0x1F18C]={d="l"},
+ [0x1F18D]={d="l"},
+ [0x1F18E]={d="l"},
+ [0x1F18F]={d="l"},
+ [0x1F190]={d="l"},
+ [0x1F191]={d="l"},
+ [0x1F192]={d="l"},
+ [0x1F193]={d="l"},
+ [0x1F194]={d="l"},
+ [0x1F195]={d="l"},
+ [0x1F196]={d="l"},
+ [0x1F197]={d="l"},
+ [0x1F198]={d="l"},
+ [0x1F199]={d="l"},
+ [0x1F19A]={d="l"},
+ [0x1F19B]={d="l"},
+ [0x1F19C]={d="l"},
+ [0x1F19D]={d="l"},
+ [0x1F19E]={d="l"},
+ [0x1F19F]={d="l"},
+ [0x1F1A0]={d="l"},
+ [0x1F1A1]={d="l"},
+ [0x1F1A2]={d="l"},
+ [0x1F1A3]={d="l"},
+ [0x1F1A4]={d="l"},
+ [0x1F1A5]={d="l"},
+ [0x1F1A6]={d="l"},
+ [0x1F1A7]={d="l"},
+ [0x1F1A8]={d="l"},
+ [0x1F1A9]={d="l"},
+ [0x1F1AA]={d="l"},
+ [0x1F1AB]={d="l"},
+ [0x1F1AC]={d="l"},
+ [0x1F1AD]={d="on"},
+ [0x1F1E6]={d="l"},
+ [0x1F1E7]={d="l"},
+ [0x1F1E8]={d="l"},
+ [0x1F1E9]={d="l"},
+ [0x1F1EA]={d="l"},
+ [0x1F1EB]={d="l"},
+ [0x1F1EC]={d="l"},
+ [0x1F1ED]={d="l"},
+ [0x1F1EE]={d="l"},
+ [0x1F1EF]={d="l"},
+ [0x1F1F0]={d="l"},
+ [0x1F1F1]={d="l"},
+ [0x1F1F2]={d="l"},
+ [0x1F1F3]={d="l"},
+ [0x1F1F4]={d="l"},
+ [0x1F1F5]={d="l"},
+ [0x1F1F6]={d="l"},
+ [0x1F1F7]={d="l"},
+ [0x1F1F8]={d="l"},
+ [0x1F1F9]={d="l"},
+ [0x1F1FA]={d="l"},
+ [0x1F1FB]={d="l"},
+ [0x1F1FC]={d="l"},
+ [0x1F1FD]={d="l"},
+ [0x1F1FE]={d="l"},
+ [0x1F1FF]={d="l"},
+ [0x1F200]={d="l"},
+ [0x1F201]={d="l"},
+ [0x1F202]={d="l"},
+ [0x1F210]={d="l"},
+ [0x1F211]={d="l"},
+ [0x1F212]={d="l"},
+ [0x1F213]={d="l"},
+ [0x1F214]={d="l"},
+ [0x1F215]={d="l"},
+ [0x1F216]={d="l"},
+ [0x1F217]={d="l"},
+ [0x1F218]={d="l"},
+ [0x1F219]={d="l"},
+ [0x1F21A]={d="l"},
+ [0x1F21B]={d="l"},
+ [0x1F21C]={d="l"},
+ [0x1F21D]={d="l"},
+ [0x1F21E]={d="l"},
+ [0x1F21F]={d="l"},
+ [0x1F220]={d="l"},
+ [0x1F221]={d="l"},
+ [0x1F222]={d="l"},
+ [0x1F223]={d="l"},
+ [0x1F224]={d="l"},
+ [0x1F225]={d="l"},
+ [0x1F226]={d="l"},
+ [0x1F227]={d="l"},
+ [0x1F228]={d="l"},
+ [0x1F229]={d="l"},
+ [0x1F22A]={d="l"},
+ [0x1F22B]={d="l"},
+ [0x1F22C]={d="l"},
+ [0x1F22D]={d="l"},
+ [0x1F22E]={d="l"},
+ [0x1F22F]={d="l"},
+ [0x1F230]={d="l"},
+ [0x1F231]={d="l"},
+ [0x1F232]={d="l"},
+ [0x1F233]={d="l"},
+ [0x1F234]={d="l"},
+ [0x1F235]={d="l"},
+ [0x1F236]={d="l"},
+ [0x1F237]={d="l"},
+ [0x1F238]={d="l"},
+ [0x1F239]={d="l"},
+ [0x1F23A]={d="l"},
+ [0x1F23B]={d="l"},
+ [0x1F240]={d="l"},
+ [0x1F241]={d="l"},
+ [0x1F242]={d="l"},
+ [0x1F243]={d="l"},
+ [0x1F244]={d="l"},
+ [0x1F245]={d="l"},
+ [0x1F246]={d="l"},
+ [0x1F247]={d="l"},
+ [0x1F248]={d="l"},
+ [0x1F250]={d="l"},
+ [0x1F251]={d="l"},
+ [0x1F260]={d="on"},
+ [0x1F261]={d="on"},
+ [0x1F262]={d="on"},
+ [0x1F263]={d="on"},
+ [0x1F264]={d="on"},
+ [0x1F265]={d="on"},
+ [0x1F300]={d="on"},
+ [0x1F301]={d="on"},
+ [0x1F302]={d="on"},
+ [0x1F303]={d="on"},
+ [0x1F304]={d="on"},
+ [0x1F305]={d="on"},
+ [0x1F306]={d="on"},
+ [0x1F307]={d="on"},
+ [0x1F308]={d="on"},
+ [0x1F309]={d="on"},
+ [0x1F30A]={d="on"},
+ [0x1F30B]={d="on"},
+ [0x1F30C]={d="on"},
+ [0x1F30D]={d="on"},
+ [0x1F30E]={d="on"},
+ [0x1F30F]={d="on"},
+ [0x1F310]={d="on"},
+ [0x1F311]={d="on"},
+ [0x1F312]={d="on"},
+ [0x1F313]={d="on"},
+ [0x1F314]={d="on"},
+ [0x1F315]={d="on"},
+ [0x1F316]={d="on"},
+ [0x1F317]={d="on"},
+ [0x1F318]={d="on"},
+ [0x1F319]={d="on"},
+ [0x1F31A]={d="on"},
+ [0x1F31B]={d="on"},
+ [0x1F31C]={d="on"},
+ [0x1F31D]={d="on"},
+ [0x1F31E]={d="on"},
+ [0x1F31F]={d="on"},
+ [0x1F320]={d="on"},
+ [0x1F321]={d="on"},
+ [0x1F322]={d="on"},
+ [0x1F323]={d="on"},
+ [0x1F324]={d="on"},
+ [0x1F325]={d="on"},
+ [0x1F326]={d="on"},
+ [0x1F327]={d="on"},
+ [0x1F328]={d="on"},
+ [0x1F329]={d="on"},
+ [0x1F32A]={d="on"},
+ [0x1F32B]={d="on"},
+ [0x1F32C]={d="on"},
+ [0x1F32D]={d="on"},
+ [0x1F32E]={d="on"},
+ [0x1F32F]={d="on"},
+ [0x1F330]={d="on"},
+ [0x1F331]={d="on"},
+ [0x1F332]={d="on"},
+ [0x1F333]={d="on"},
+ [0x1F334]={d="on"},
+ [0x1F335]={d="on"},
+ [0x1F336]={d="on"},
+ [0x1F337]={d="on"},
+ [0x1F338]={d="on"},
+ [0x1F339]={d="on"},
+ [0x1F33A]={d="on"},
+ [0x1F33B]={d="on"},
+ [0x1F33C]={d="on"},
+ [0x1F33D]={d="on"},
+ [0x1F33E]={d="on"},
+ [0x1F33F]={d="on"},
+ [0x1F340]={d="on"},
+ [0x1F341]={d="on"},
+ [0x1F342]={d="on"},
+ [0x1F343]={d="on"},
+ [0x1F344]={d="on"},
+ [0x1F345]={d="on"},
+ [0x1F346]={d="on"},
+ [0x1F347]={d="on"},
+ [0x1F348]={d="on"},
+ [0x1F349]={d="on"},
+ [0x1F34A]={d="on"},
+ [0x1F34B]={d="on"},
+ [0x1F34C]={d="on"},
+ [0x1F34D]={d="on"},
+ [0x1F34E]={d="on"},
+ [0x1F34F]={d="on"},
+ [0x1F350]={d="on"},
+ [0x1F351]={d="on"},
+ [0x1F352]={d="on"},
+ [0x1F353]={d="on"},
+ [0x1F354]={d="on"},
+ [0x1F355]={d="on"},
+ [0x1F356]={d="on"},
+ [0x1F357]={d="on"},
+ [0x1F358]={d="on"},
+ [0x1F359]={d="on"},
+ [0x1F35A]={d="on"},
+ [0x1F35B]={d="on"},
+ [0x1F35C]={d="on"},
+ [0x1F35D]={d="on"},
+ [0x1F35E]={d="on"},
+ [0x1F35F]={d="on"},
+ [0x1F360]={d="on"},
+ [0x1F361]={d="on"},
+ [0x1F362]={d="on"},
+ [0x1F363]={d="on"},
+ [0x1F364]={d="on"},
+ [0x1F365]={d="on"},
+ [0x1F366]={d="on"},
+ [0x1F367]={d="on"},
+ [0x1F368]={d="on"},
+ [0x1F369]={d="on"},
+ [0x1F36A]={d="on"},
+ [0x1F36B]={d="on"},
+ [0x1F36C]={d="on"},
+ [0x1F36D]={d="on"},
+ [0x1F36E]={d="on"},
+ [0x1F36F]={d="on"},
+ [0x1F370]={d="on"},
+ [0x1F371]={d="on"},
+ [0x1F372]={d="on"},
+ [0x1F373]={d="on"},
+ [0x1F374]={d="on"},
+ [0x1F375]={d="on"},
+ [0x1F376]={d="on"},
+ [0x1F377]={d="on"},
+ [0x1F378]={d="on"},
+ [0x1F379]={d="on"},
+ [0x1F37A]={d="on"},
+ [0x1F37B]={d="on"},
+ [0x1F37C]={d="on"},
+ [0x1F37D]={d="on"},
+ [0x1F37E]={d="on"},
+ [0x1F37F]={d="on"},
+ [0x1F380]={d="on"},
+ [0x1F381]={d="on"},
+ [0x1F382]={d="on"},
+ [0x1F383]={d="on"},
+ [0x1F384]={d="on"},
+ [0x1F385]={d="on"},
+ [0x1F386]={d="on"},
+ [0x1F387]={d="on"},
+ [0x1F388]={d="on"},
+ [0x1F389]={d="on"},
+ [0x1F38A]={d="on"},
+ [0x1F38B]={d="on"},
+ [0x1F38C]={d="on"},
+ [0x1F38D]={d="on"},
+ [0x1F38E]={d="on"},
+ [0x1F38F]={d="on"},
+ [0x1F390]={d="on"},
+ [0x1F391]={d="on"},
+ [0x1F392]={d="on"},
+ [0x1F393]={d="on"},
+ [0x1F394]={d="on"},
+ [0x1F395]={d="on"},
+ [0x1F396]={d="on"},
+ [0x1F397]={d="on"},
+ [0x1F398]={d="on"},
+ [0x1F399]={d="on"},
+ [0x1F39A]={d="on"},
+ [0x1F39B]={d="on"},
+ [0x1F39C]={d="on"},
+ [0x1F39D]={d="on"},
+ [0x1F39E]={d="on"},
+ [0x1F39F]={d="on"},
+ [0x1F3A0]={d="on"},
+ [0x1F3A1]={d="on"},
+ [0x1F3A2]={d="on"},
+ [0x1F3A3]={d="on"},
+ [0x1F3A4]={d="on"},
+ [0x1F3A5]={d="on"},
+ [0x1F3A6]={d="on"},
+ [0x1F3A7]={d="on"},
+ [0x1F3A8]={d="on"},
+ [0x1F3A9]={d="on"},
+ [0x1F3AA]={d="on"},
+ [0x1F3AB]={d="on"},
+ [0x1F3AC]={d="on"},
+ [0x1F3AD]={d="on"},
+ [0x1F3AE]={d="on"},
+ [0x1F3AF]={d="on"},
+ [0x1F3B0]={d="on"},
+ [0x1F3B1]={d="on"},
+ [0x1F3B2]={d="on"},
+ [0x1F3B3]={d="on"},
+ [0x1F3B4]={d="on"},
+ [0x1F3B5]={d="on"},
+ [0x1F3B6]={d="on"},
+ [0x1F3B7]={d="on"},
+ [0x1F3B8]={d="on"},
+ [0x1F3B9]={d="on"},
+ [0x1F3BA]={d="on"},
+ [0x1F3BB]={d="on"},
+ [0x1F3BC]={d="on"},
+ [0x1F3BD]={d="on"},
+ [0x1F3BE]={d="on"},
+ [0x1F3BF]={d="on"},
+ [0x1F3C0]={d="on"},
+ [0x1F3C1]={d="on"},
+ [0x1F3C2]={d="on"},
+ [0x1F3C3]={d="on"},
+ [0x1F3C4]={d="on"},
+ [0x1F3C5]={d="on"},
+ [0x1F3C6]={d="on"},
+ [0x1F3C7]={d="on"},
+ [0x1F3C8]={d="on"},
+ [0x1F3C9]={d="on"},
+ [0x1F3CA]={d="on"},
+ [0x1F3CB]={d="on"},
+ [0x1F3CC]={d="on"},
+ [0x1F3CD]={d="on"},
+ [0x1F3CE]={d="on"},
+ [0x1F3CF]={d="on"},
+ [0x1F3D0]={d="on"},
+ [0x1F3D1]={d="on"},
+ [0x1F3D2]={d="on"},
+ [0x1F3D3]={d="on"},
+ [0x1F3D4]={d="on"},
+ [0x1F3D5]={d="on"},
+ [0x1F3D6]={d="on"},
+ [0x1F3D7]={d="on"},
+ [0x1F3D8]={d="on"},
+ [0x1F3D9]={d="on"},
+ [0x1F3DA]={d="on"},
+ [0x1F3DB]={d="on"},
+ [0x1F3DC]={d="on"},
+ [0x1F3DD]={d="on"},
+ [0x1F3DE]={d="on"},
+ [0x1F3DF]={d="on"},
+ [0x1F3E0]={d="on"},
+ [0x1F3E1]={d="on"},
+ [0x1F3E2]={d="on"},
+ [0x1F3E3]={d="on"},
+ [0x1F3E4]={d="on"},
+ [0x1F3E5]={d="on"},
+ [0x1F3E6]={d="on"},
+ [0x1F3E7]={d="on"},
+ [0x1F3E8]={d="on"},
+ [0x1F3E9]={d="on"},
+ [0x1F3EA]={d="on"},
+ [0x1F3EB]={d="on"},
+ [0x1F3EC]={d="on"},
+ [0x1F3ED]={d="on"},
+ [0x1F3EE]={d="on"},
+ [0x1F3EF]={d="on"},
+ [0x1F3F0]={d="on"},
+ [0x1F3F1]={d="on"},
+ [0x1F3F2]={d="on"},
+ [0x1F3F3]={d="on"},
+ [0x1F3F4]={d="on"},
+ [0x1F3F5]={d="on"},
+ [0x1F3F6]={d="on"},
+ [0x1F3F7]={d="on"},
+ [0x1F3F8]={d="on"},
+ [0x1F3F9]={d="on"},
+ [0x1F3FA]={d="on"},
+ [0x1F3FB]={d="on"},
+ [0x1F3FC]={d="on"},
+ [0x1F3FD]={d="on"},
+ [0x1F3FE]={d="on"},
+ [0x1F3FF]={d="on"},
+ [0x1F400]={d="on"},
+ [0x1F401]={d="on"},
+ [0x1F402]={d="on"},
+ [0x1F403]={d="on"},
+ [0x1F404]={d="on"},
+ [0x1F405]={d="on"},
+ [0x1F406]={d="on"},
+ [0x1F407]={d="on"},
+ [0x1F408]={d="on"},
+ [0x1F409]={d="on"},
+ [0x1F40A]={d="on"},
+ [0x1F40B]={d="on"},
+ [0x1F40C]={d="on"},
+ [0x1F40D]={d="on"},
+ [0x1F40E]={d="on"},
+ [0x1F40F]={d="on"},
+ [0x1F410]={d="on"},
+ [0x1F411]={d="on"},
+ [0x1F412]={d="on"},
+ [0x1F413]={d="on"},
+ [0x1F414]={d="on"},
+ [0x1F415]={d="on"},
+ [0x1F416]={d="on"},
+ [0x1F417]={d="on"},
+ [0x1F418]={d="on"},
+ [0x1F419]={d="on"},
+ [0x1F41A]={d="on"},
+ [0x1F41B]={d="on"},
+ [0x1F41C]={d="on"},
+ [0x1F41D]={d="on"},
+ [0x1F41E]={d="on"},
+ [0x1F41F]={d="on"},
+ [0x1F420]={d="on"},
+ [0x1F421]={d="on"},
+ [0x1F422]={d="on"},
+ [0x1F423]={d="on"},
+ [0x1F424]={d="on"},
+ [0x1F425]={d="on"},
+ [0x1F426]={d="on"},
+ [0x1F427]={d="on"},
+ [0x1F428]={d="on"},
+ [0x1F429]={d="on"},
+ [0x1F42A]={d="on"},
+ [0x1F42B]={d="on"},
+ [0x1F42C]={d="on"},
+ [0x1F42D]={d="on"},
+ [0x1F42E]={d="on"},
+ [0x1F42F]={d="on"},
+ [0x1F430]={d="on"},
+ [0x1F431]={d="on"},
+ [0x1F432]={d="on"},
+ [0x1F433]={d="on"},
+ [0x1F434]={d="on"},
+ [0x1F435]={d="on"},
+ [0x1F436]={d="on"},
+ [0x1F437]={d="on"},
+ [0x1F438]={d="on"},
+ [0x1F439]={d="on"},
+ [0x1F43A]={d="on"},
+ [0x1F43B]={d="on"},
+ [0x1F43C]={d="on"},
+ [0x1F43D]={d="on"},
+ [0x1F43E]={d="on"},
+ [0x1F43F]={d="on"},
+ [0x1F440]={d="on"},
+ [0x1F441]={d="on"},
+ [0x1F442]={d="on"},
+ [0x1F443]={d="on"},
+ [0x1F444]={d="on"},
+ [0x1F445]={d="on"},
+ [0x1F446]={d="on"},
+ [0x1F447]={d="on"},
+ [0x1F448]={d="on"},
+ [0x1F449]={d="on"},
+ [0x1F44A]={d="on"},
+ [0x1F44B]={d="on"},
+ [0x1F44C]={d="on"},
+ [0x1F44D]={d="on"},
+ [0x1F44E]={d="on"},
+ [0x1F44F]={d="on"},
+ [0x1F450]={d="on"},
+ [0x1F451]={d="on"},
+ [0x1F452]={d="on"},
+ [0x1F453]={d="on"},
+ [0x1F454]={d="on"},
+ [0x1F455]={d="on"},
+ [0x1F456]={d="on"},
+ [0x1F457]={d="on"},
+ [0x1F458]={d="on"},
+ [0x1F459]={d="on"},
+ [0x1F45A]={d="on"},
+ [0x1F45B]={d="on"},
+ [0x1F45C]={d="on"},
+ [0x1F45D]={d="on"},
+ [0x1F45E]={d="on"},
+ [0x1F45F]={d="on"},
+ [0x1F460]={d="on"},
+ [0x1F461]={d="on"},
+ [0x1F462]={d="on"},
+ [0x1F463]={d="on"},
+ [0x1F464]={d="on"},
+ [0x1F465]={d="on"},
+ [0x1F466]={d="on"},
+ [0x1F467]={d="on"},
+ [0x1F468]={d="on"},
+ [0x1F469]={d="on"},
+ [0x1F46A]={d="on"},
+ [0x1F46B]={d="on"},
+ [0x1F46C]={d="on"},
+ [0x1F46D]={d="on"},
+ [0x1F46E]={d="on"},
+ [0x1F46F]={d="on"},
+ [0x1F470]={d="on"},
+ [0x1F471]={d="on"},
+ [0x1F472]={d="on"},
+ [0x1F473]={d="on"},
+ [0x1F474]={d="on"},
+ [0x1F475]={d="on"},
+ [0x1F476]={d="on"},
+ [0x1F477]={d="on"},
+ [0x1F478]={d="on"},
+ [0x1F479]={d="on"},
+ [0x1F47A]={d="on"},
+ [0x1F47B]={d="on"},
+ [0x1F47C]={d="on"},
+ [0x1F47D]={d="on"},
+ [0x1F47E]={d="on"},
+ [0x1F47F]={d="on"},
+ [0x1F480]={d="on"},
+ [0x1F481]={d="on"},
+ [0x1F482]={d="on"},
+ [0x1F483]={d="on"},
+ [0x1F484]={d="on"},
+ [0x1F485]={d="on"},
+ [0x1F486]={d="on"},
+ [0x1F487]={d="on"},
+ [0x1F488]={d="on"},
+ [0x1F489]={d="on"},
+ [0x1F48A]={d="on"},
+ [0x1F48B]={d="on"},
+ [0x1F48C]={d="on"},
+ [0x1F48D]={d="on"},
+ [0x1F48E]={d="on"},
+ [0x1F48F]={d="on"},
+ [0x1F490]={d="on"},
+ [0x1F491]={d="on"},
+ [0x1F492]={d="on"},
+ [0x1F493]={d="on"},
+ [0x1F494]={d="on"},
+ [0x1F495]={d="on"},
+ [0x1F496]={d="on"},
+ [0x1F497]={d="on"},
+ [0x1F498]={d="on"},
+ [0x1F499]={d="on"},
+ [0x1F49A]={d="on"},
+ [0x1F49B]={d="on"},
+ [0x1F49C]={d="on"},
+ [0x1F49D]={d="on"},
+ [0x1F49E]={d="on"},
+ [0x1F49F]={d="on"},
+ [0x1F4A0]={d="on"},
+ [0x1F4A1]={d="on"},
+ [0x1F4A2]={d="on"},
+ [0x1F4A3]={d="on"},
+ [0x1F4A4]={d="on"},
+ [0x1F4A5]={d="on"},
+ [0x1F4A6]={d="on"},
+ [0x1F4A7]={d="on"},
+ [0x1F4A8]={d="on"},
+ [0x1F4A9]={d="on"},
+ [0x1F4AA]={d="on"},
+ [0x1F4AB]={d="on"},
+ [0x1F4AC]={d="on"},
+ [0x1F4AD]={d="on"},
+ [0x1F4AE]={d="on"},
+ [0x1F4AF]={d="on"},
+ [0x1F4B0]={d="on"},
+ [0x1F4B1]={d="on"},
+ [0x1F4B2]={d="on"},
+ [0x1F4B3]={d="on"},
+ [0x1F4B4]={d="on"},
+ [0x1F4B5]={d="on"},
+ [0x1F4B6]={d="on"},
+ [0x1F4B7]={d="on"},
+ [0x1F4B8]={d="on"},
+ [0x1F4B9]={d="on"},
+ [0x1F4BA]={d="on"},
+ [0x1F4BB]={d="on"},
+ [0x1F4BC]={d="on"},
+ [0x1F4BD]={d="on"},
+ [0x1F4BE]={d="on"},
+ [0x1F4BF]={d="on"},
+ [0x1F4C0]={d="on"},
+ [0x1F4C1]={d="on"},
+ [0x1F4C2]={d="on"},
+ [0x1F4C3]={d="on"},
+ [0x1F4C4]={d="on"},
+ [0x1F4C5]={d="on"},
+ [0x1F4C6]={d="on"},
+ [0x1F4C7]={d="on"},
+ [0x1F4C8]={d="on"},
+ [0x1F4C9]={d="on"},
+ [0x1F4CA]={d="on"},
+ [0x1F4CB]={d="on"},
+ [0x1F4CC]={d="on"},
+ [0x1F4CD]={d="on"},
+ [0x1F4CE]={d="on"},
+ [0x1F4CF]={d="on"},
+ [0x1F4D0]={d="on"},
+ [0x1F4D1]={d="on"},
+ [0x1F4D2]={d="on"},
+ [0x1F4D3]={d="on"},
+ [0x1F4D4]={d="on"},
+ [0x1F4D5]={d="on"},
+ [0x1F4D6]={d="on"},
+ [0x1F4D7]={d="on"},
+ [0x1F4D8]={d="on"},
+ [0x1F4D9]={d="on"},
+ [0x1F4DA]={d="on"},
+ [0x1F4DB]={d="on"},
+ [0x1F4DC]={d="on"},
+ [0x1F4DD]={d="on"},
+ [0x1F4DE]={d="on"},
+ [0x1F4DF]={d="on"},
+ [0x1F4E0]={d="on"},
+ [0x1F4E1]={d="on"},
+ [0x1F4E2]={d="on"},
+ [0x1F4E3]={d="on"},
+ [0x1F4E4]={d="on"},
+ [0x1F4E5]={d="on"},
+ [0x1F4E6]={d="on"},
+ [0x1F4E7]={d="on"},
+ [0x1F4E8]={d="on"},
+ [0x1F4E9]={d="on"},
+ [0x1F4EA]={d="on"},
+ [0x1F4EB]={d="on"},
+ [0x1F4EC]={d="on"},
+ [0x1F4ED]={d="on"},
+ [0x1F4EE]={d="on"},
+ [0x1F4EF]={d="on"},
+ [0x1F4F0]={d="on"},
+ [0x1F4F1]={d="on"},
+ [0x1F4F2]={d="on"},
+ [0x1F4F3]={d="on"},
+ [0x1F4F4]={d="on"},
+ [0x1F4F5]={d="on"},
+ [0x1F4F6]={d="on"},
+ [0x1F4F7]={d="on"},
+ [0x1F4F8]={d="on"},
+ [0x1F4F9]={d="on"},
+ [0x1F4FA]={d="on"},
+ [0x1F4FB]={d="on"},
+ [0x1F4FC]={d="on"},
+ [0x1F4FD]={d="on"},
+ [0x1F4FE]={d="on"},
+ [0x1F4FF]={d="on"},
+ [0x1F500]={d="on"},
+ [0x1F501]={d="on"},
+ [0x1F502]={d="on"},
+ [0x1F503]={d="on"},
+ [0x1F504]={d="on"},
+ [0x1F505]={d="on"},
+ [0x1F506]={d="on"},
+ [0x1F507]={d="on"},
+ [0x1F508]={d="on"},
+ [0x1F509]={d="on"},
+ [0x1F50A]={d="on"},
+ [0x1F50B]={d="on"},
+ [0x1F50C]={d="on"},
+ [0x1F50D]={d="on"},
+ [0x1F50E]={d="on"},
+ [0x1F50F]={d="on"},
+ [0x1F510]={d="on"},
+ [0x1F511]={d="on"},
+ [0x1F512]={d="on"},
+ [0x1F513]={d="on"},
+ [0x1F514]={d="on"},
+ [0x1F515]={d="on"},
+ [0x1F516]={d="on"},
+ [0x1F517]={d="on"},
+ [0x1F518]={d="on"},
+ [0x1F519]={d="on"},
+ [0x1F51A]={d="on"},
+ [0x1F51B]={d="on"},
+ [0x1F51C]={d="on"},
+ [0x1F51D]={d="on"},
+ [0x1F51E]={d="on"},
+ [0x1F51F]={d="on"},
+ [0x1F520]={d="on"},
+ [0x1F521]={d="on"},
+ [0x1F522]={d="on"},
+ [0x1F523]={d="on"},
+ [0x1F524]={d="on"},
+ [0x1F525]={d="on"},
+ [0x1F526]={d="on"},
+ [0x1F527]={d="on"},
+ [0x1F528]={d="on"},
+ [0x1F529]={d="on"},
+ [0x1F52A]={d="on"},
+ [0x1F52B]={d="on"},
+ [0x1F52C]={d="on"},
+ [0x1F52D]={d="on"},
+ [0x1F52E]={d="on"},
+ [0x1F52F]={d="on"},
+ [0x1F530]={d="on"},
+ [0x1F531]={d="on"},
+ [0x1F532]={d="on"},
+ [0x1F533]={d="on"},
+ [0x1F534]={d="on"},
+ [0x1F535]={d="on"},
+ [0x1F536]={d="on"},
+ [0x1F537]={d="on"},
+ [0x1F538]={d="on"},
+ [0x1F539]={d="on"},
+ [0x1F53A]={d="on"},
+ [0x1F53B]={d="on"},
+ [0x1F53C]={d="on"},
+ [0x1F53D]={d="on"},
+ [0x1F53E]={d="on"},
+ [0x1F53F]={d="on"},
+ [0x1F540]={d="on"},
+ [0x1F541]={d="on"},
+ [0x1F542]={d="on"},
+ [0x1F543]={d="on"},
+ [0x1F544]={d="on"},
+ [0x1F545]={d="on"},
+ [0x1F546]={d="on"},
+ [0x1F547]={d="on"},
+ [0x1F548]={d="on"},
+ [0x1F549]={d="on"},
+ [0x1F54A]={d="on"},
+ [0x1F54B]={d="on"},
+ [0x1F54C]={d="on"},
+ [0x1F54D]={d="on"},
+ [0x1F54E]={d="on"},
+ [0x1F54F]={d="on"},
+ [0x1F550]={d="on"},
+ [0x1F551]={d="on"},
+ [0x1F552]={d="on"},
+ [0x1F553]={d="on"},
+ [0x1F554]={d="on"},
+ [0x1F555]={d="on"},
+ [0x1F556]={d="on"},
+ [0x1F557]={d="on"},
+ [0x1F558]={d="on"},
+ [0x1F559]={d="on"},
+ [0x1F55A]={d="on"},
+ [0x1F55B]={d="on"},
+ [0x1F55C]={d="on"},
+ [0x1F55D]={d="on"},
+ [0x1F55E]={d="on"},
+ [0x1F55F]={d="on"},
+ [0x1F560]={d="on"},
+ [0x1F561]={d="on"},
+ [0x1F562]={d="on"},
+ [0x1F563]={d="on"},
+ [0x1F564]={d="on"},
+ [0x1F565]={d="on"},
+ [0x1F566]={d="on"},
+ [0x1F567]={d="on"},
+ [0x1F568]={d="on"},
+ [0x1F569]={d="on"},
+ [0x1F56A]={d="on"},
+ [0x1F56B]={d="on"},
+ [0x1F56C]={d="on"},
+ [0x1F56D]={d="on"},
+ [0x1F56E]={d="on"},
+ [0x1F56F]={d="on"},
+ [0x1F570]={d="on"},
+ [0x1F571]={d="on"},
+ [0x1F572]={d="on"},
+ [0x1F573]={d="on"},
+ [0x1F574]={d="on"},
+ [0x1F575]={d="on"},
+ [0x1F576]={d="on"},
+ [0x1F577]={d="on"},
+ [0x1F578]={d="on"},
+ [0x1F579]={d="on"},
+ [0x1F57A]={d="on"},
+ [0x1F57B]={d="on"},
+ [0x1F57C]={d="on"},
+ [0x1F57D]={d="on"},
+ [0x1F57E]={d="on"},
+ [0x1F57F]={d="on"},
+ [0x1F580]={d="on"},
+ [0x1F581]={d="on"},
+ [0x1F582]={d="on"},
+ [0x1F583]={d="on"},
+ [0x1F584]={d="on"},
+ [0x1F585]={d="on"},
+ [0x1F586]={d="on"},
+ [0x1F587]={d="on"},
+ [0x1F588]={d="on"},
+ [0x1F589]={d="on"},
+ [0x1F58A]={d="on"},
+ [0x1F58B]={d="on"},
+ [0x1F58C]={d="on"},
+ [0x1F58D]={d="on"},
+ [0x1F58E]={d="on"},
+ [0x1F58F]={d="on"},
+ [0x1F590]={d="on"},
+ [0x1F591]={d="on"},
+ [0x1F592]={d="on"},
+ [0x1F593]={d="on"},
+ [0x1F594]={d="on"},
+ [0x1F595]={d="on"},
+ [0x1F596]={d="on"},
+ [0x1F597]={d="on"},
+ [0x1F598]={d="on"},
+ [0x1F599]={d="on"},
+ [0x1F59A]={d="on"},
+ [0x1F59B]={d="on"},
+ [0x1F59C]={d="on"},
+ [0x1F59D]={d="on"},
+ [0x1F59E]={d="on"},
+ [0x1F59F]={d="on"},
+ [0x1F5A0]={d="on"},
+ [0x1F5A1]={d="on"},
+ [0x1F5A2]={d="on"},
+ [0x1F5A3]={d="on"},
+ [0x1F5A4]={d="on"},
+ [0x1F5A5]={d="on"},
+ [0x1F5A6]={d="on"},
+ [0x1F5A7]={d="on"},
+ [0x1F5A8]={d="on"},
+ [0x1F5A9]={d="on"},
+ [0x1F5AA]={d="on"},
+ [0x1F5AB]={d="on"},
+ [0x1F5AC]={d="on"},
+ [0x1F5AD]={d="on"},
+ [0x1F5AE]={d="on"},
+ [0x1F5AF]={d="on"},
+ [0x1F5B0]={d="on"},
+ [0x1F5B1]={d="on"},
+ [0x1F5B2]={d="on"},
+ [0x1F5B3]={d="on"},
+ [0x1F5B4]={d="on"},
+ [0x1F5B5]={d="on"},
+ [0x1F5B6]={d="on"},
+ [0x1F5B7]={d="on"},
+ [0x1F5B8]={d="on"},
+ [0x1F5B9]={d="on"},
+ [0x1F5BA]={d="on"},
+ [0x1F5BB]={d="on"},
+ [0x1F5BC]={d="on"},
+ [0x1F5BD]={d="on"},
+ [0x1F5BE]={d="on"},
+ [0x1F5BF]={d="on"},
+ [0x1F5C0]={d="on"},
+ [0x1F5C1]={d="on"},
+ [0x1F5C2]={d="on"},
+ [0x1F5C3]={d="on"},
+ [0x1F5C4]={d="on"},
+ [0x1F5C5]={d="on"},
+ [0x1F5C6]={d="on"},
+ [0x1F5C7]={d="on"},
+ [0x1F5C8]={d="on"},
+ [0x1F5C9]={d="on"},
+ [0x1F5CA]={d="on"},
+ [0x1F5CB]={d="on"},
+ [0x1F5CC]={d="on"},
+ [0x1F5CD]={d="on"},
+ [0x1F5CE]={d="on"},
+ [0x1F5CF]={d="on"},
+ [0x1F5D0]={d="on"},
+ [0x1F5D1]={d="on"},
+ [0x1F5D2]={d="on"},
+ [0x1F5D3]={d="on"},
+ [0x1F5D4]={d="on"},
+ [0x1F5D5]={d="on"},
+ [0x1F5D6]={d="on"},
+ [0x1F5D7]={d="on"},
+ [0x1F5D8]={d="on"},
+ [0x1F5D9]={d="on"},
+ [0x1F5DA]={d="on"},
+ [0x1F5DB]={d="on"},
+ [0x1F5DC]={d="on"},
+ [0x1F5DD]={d="on"},
+ [0x1F5DE]={d="on"},
+ [0x1F5DF]={d="on"},
+ [0x1F5E0]={d="on"},
+ [0x1F5E1]={d="on"},
+ [0x1F5E2]={d="on"},
+ [0x1F5E3]={d="on"},
+ [0x1F5E4]={d="on"},
+ [0x1F5E5]={d="on"},
+ [0x1F5E6]={d="on"},
+ [0x1F5E7]={d="on"},
+ [0x1F5E8]={d="on"},
+ [0x1F5E9]={d="on"},
+ [0x1F5EA]={d="on"},
+ [0x1F5EB]={d="on"},
+ [0x1F5EC]={d="on"},
+ [0x1F5ED]={d="on"},
+ [0x1F5EE]={d="on"},
+ [0x1F5EF]={d="on"},
+ [0x1F5F0]={d="on"},
+ [0x1F5F1]={d="on"},
+ [0x1F5F2]={d="on"},
+ [0x1F5F3]={d="on"},
+ [0x1F5F4]={d="on"},
+ [0x1F5F5]={d="on"},
+ [0x1F5F6]={d="on"},
+ [0x1F5F7]={d="on"},
+ [0x1F5F8]={d="on"},
+ [0x1F5F9]={d="on"},
+ [0x1F5FA]={d="on"},
+ [0x1F5FB]={d="on"},
+ [0x1F5FC]={d="on"},
+ [0x1F5FD]={d="on"},
+ [0x1F5FE]={d="on"},
+ [0x1F5FF]={d="on"},
+ [0x1F600]={d="on"},
+ [0x1F601]={d="on"},
+ [0x1F602]={d="on"},
+ [0x1F603]={d="on"},
+ [0x1F604]={d="on"},
+ [0x1F605]={d="on"},
+ [0x1F606]={d="on"},
+ [0x1F607]={d="on"},
+ [0x1F608]={d="on"},
+ [0x1F609]={d="on"},
+ [0x1F60A]={d="on"},
+ [0x1F60B]={d="on"},
+ [0x1F60C]={d="on"},
+ [0x1F60D]={d="on"},
+ [0x1F60E]={d="on"},
+ [0x1F60F]={d="on"},
+ [0x1F610]={d="on"},
+ [0x1F611]={d="on"},
+ [0x1F612]={d="on"},
+ [0x1F613]={d="on"},
+ [0x1F614]={d="on"},
+ [0x1F615]={d="on"},
+ [0x1F616]={d="on"},
+ [0x1F617]={d="on"},
+ [0x1F618]={d="on"},
+ [0x1F619]={d="on"},
+ [0x1F61A]={d="on"},
+ [0x1F61B]={d="on"},
+ [0x1F61C]={d="on"},
+ [0x1F61D]={d="on"},
+ [0x1F61E]={d="on"},
+ [0x1F61F]={d="on"},
+ [0x1F620]={d="on"},
+ [0x1F621]={d="on"},
+ [0x1F622]={d="on"},
+ [0x1F623]={d="on"},
+ [0x1F624]={d="on"},
+ [0x1F625]={d="on"},
+ [0x1F626]={d="on"},
+ [0x1F627]={d="on"},
+ [0x1F628]={d="on"},
+ [0x1F629]={d="on"},
+ [0x1F62A]={d="on"},
+ [0x1F62B]={d="on"},
+ [0x1F62C]={d="on"},
+ [0x1F62D]={d="on"},
+ [0x1F62E]={d="on"},
+ [0x1F62F]={d="on"},
+ [0x1F630]={d="on"},
+ [0x1F631]={d="on"},
+ [0x1F632]={d="on"},
+ [0x1F633]={d="on"},
+ [0x1F634]={d="on"},
+ [0x1F635]={d="on"},
+ [0x1F636]={d="on"},
+ [0x1F637]={d="on"},
+ [0x1F638]={d="on"},
+ [0x1F639]={d="on"},
+ [0x1F63A]={d="on"},
+ [0x1F63B]={d="on"},
+ [0x1F63C]={d="on"},
+ [0x1F63D]={d="on"},
+ [0x1F63E]={d="on"},
+ [0x1F63F]={d="on"},
+ [0x1F640]={d="on"},
+ [0x1F641]={d="on"},
+ [0x1F642]={d="on"},
+ [0x1F643]={d="on"},
+ [0x1F644]={d="on"},
+ [0x1F645]={d="on"},
+ [0x1F646]={d="on"},
+ [0x1F647]={d="on"},
+ [0x1F648]={d="on"},
+ [0x1F649]={d="on"},
+ [0x1F64A]={d="on"},
+ [0x1F64B]={d="on"},
+ [0x1F64C]={d="on"},
+ [0x1F64D]={d="on"},
+ [0x1F64E]={d="on"},
+ [0x1F64F]={d="on"},
+ [0x1F650]={d="on"},
+ [0x1F651]={d="on"},
+ [0x1F652]={d="on"},
+ [0x1F653]={d="on"},
+ [0x1F654]={d="on"},
+ [0x1F655]={d="on"},
+ [0x1F656]={d="on"},
+ [0x1F657]={d="on"},
+ [0x1F658]={d="on"},
+ [0x1F659]={d="on"},
+ [0x1F65A]={d="on"},
+ [0x1F65B]={d="on"},
+ [0x1F65C]={d="on"},
+ [0x1F65D]={d="on"},
+ [0x1F65E]={d="on"},
+ [0x1F65F]={d="on"},
+ [0x1F660]={d="on"},
+ [0x1F661]={d="on"},
+ [0x1F662]={d="on"},
+ [0x1F663]={d="on"},
+ [0x1F664]={d="on"},
+ [0x1F665]={d="on"},
+ [0x1F666]={d="on"},
+ [0x1F667]={d="on"},
+ [0x1F668]={d="on"},
+ [0x1F669]={d="on"},
+ [0x1F66A]={d="on"},
+ [0x1F66B]={d="on"},
+ [0x1F66C]={d="on"},
+ [0x1F66D]={d="on"},
+ [0x1F66E]={d="on"},
+ [0x1F66F]={d="on"},
+ [0x1F670]={d="on"},
+ [0x1F671]={d="on"},
+ [0x1F672]={d="on"},
+ [0x1F673]={d="on"},
+ [0x1F674]={d="on"},
+ [0x1F675]={d="on"},
+ [0x1F676]={d="on"},
+ [0x1F677]={d="on"},
+ [0x1F678]={d="on"},
+ [0x1F679]={d="on"},
+ [0x1F67A]={d="on"},
+ [0x1F67B]={d="on"},
+ [0x1F67C]={d="on"},
+ [0x1F67D]={d="on"},
+ [0x1F67E]={d="on"},
+ [0x1F67F]={d="on"},
+ [0x1F680]={d="on"},
+ [0x1F681]={d="on"},
+ [0x1F682]={d="on"},
+ [0x1F683]={d="on"},
+ [0x1F684]={d="on"},
+ [0x1F685]={d="on"},
+ [0x1F686]={d="on"},
+ [0x1F687]={d="on"},
+ [0x1F688]={d="on"},
+ [0x1F689]={d="on"},
+ [0x1F68A]={d="on"},
+ [0x1F68B]={d="on"},
+ [0x1F68C]={d="on"},
+ [0x1F68D]={d="on"},
+ [0x1F68E]={d="on"},
+ [0x1F68F]={d="on"},
+ [0x1F690]={d="on"},
+ [0x1F691]={d="on"},
+ [0x1F692]={d="on"},
+ [0x1F693]={d="on"},
+ [0x1F694]={d="on"},
+ [0x1F695]={d="on"},
+ [0x1F696]={d="on"},
+ [0x1F697]={d="on"},
+ [0x1F698]={d="on"},
+ [0x1F699]={d="on"},
+ [0x1F69A]={d="on"},
+ [0x1F69B]={d="on"},
+ [0x1F69C]={d="on"},
+ [0x1F69D]={d="on"},
+ [0x1F69E]={d="on"},
+ [0x1F69F]={d="on"},
+ [0x1F6A0]={d="on"},
+ [0x1F6A1]={d="on"},
+ [0x1F6A2]={d="on"},
+ [0x1F6A3]={d="on"},
+ [0x1F6A4]={d="on"},
+ [0x1F6A5]={d="on"},
+ [0x1F6A6]={d="on"},
+ [0x1F6A7]={d="on"},
+ [0x1F6A8]={d="on"},
+ [0x1F6A9]={d="on"},
+ [0x1F6AA]={d="on"},
+ [0x1F6AB]={d="on"},
+ [0x1F6AC]={d="on"},
+ [0x1F6AD]={d="on"},
+ [0x1F6AE]={d="on"},
+ [0x1F6AF]={d="on"},
+ [0x1F6B0]={d="on"},
+ [0x1F6B1]={d="on"},
+ [0x1F6B2]={d="on"},
+ [0x1F6B3]={d="on"},
+ [0x1F6B4]={d="on"},
+ [0x1F6B5]={d="on"},
+ [0x1F6B6]={d="on"},
+ [0x1F6B7]={d="on"},
+ [0x1F6B8]={d="on"},
+ [0x1F6B9]={d="on"},
+ [0x1F6BA]={d="on"},
+ [0x1F6BB]={d="on"},
+ [0x1F6BC]={d="on"},
+ [0x1F6BD]={d="on"},
+ [0x1F6BE]={d="on"},
+ [0x1F6BF]={d="on"},
+ [0x1F6C0]={d="on"},
+ [0x1F6C1]={d="on"},
+ [0x1F6C2]={d="on"},
+ [0x1F6C3]={d="on"},
+ [0x1F6C4]={d="on"},
+ [0x1F6C5]={d="on"},
+ [0x1F6C6]={d="on"},
+ [0x1F6C7]={d="on"},
+ [0x1F6C8]={d="on"},
+ [0x1F6C9]={d="on"},
+ [0x1F6CA]={d="on"},
+ [0x1F6CB]={d="on"},
+ [0x1F6CC]={d="on"},
+ [0x1F6CD]={d="on"},
+ [0x1F6CE]={d="on"},
+ [0x1F6CF]={d="on"},
+ [0x1F6D0]={d="on"},
+ [0x1F6D1]={d="on"},
+ [0x1F6D2]={d="on"},
+ [0x1F6D3]={d="on"},
+ [0x1F6D4]={d="on"},
+ [0x1F6D5]={d="on"},
+ [0x1F6D6]={d="on"},
+ [0x1F6D7]={d="on"},
+ [0x1F6DC]={d="on"},
+ [0x1F6DD]={d="on"},
+ [0x1F6DE]={d="on"},
+ [0x1F6DF]={d="on"},
+ [0x1F6E0]={d="on"},
+ [0x1F6E1]={d="on"},
+ [0x1F6E2]={d="on"},
+ [0x1F6E3]={d="on"},
+ [0x1F6E4]={d="on"},
+ [0x1F6E5]={d="on"},
+ [0x1F6E6]={d="on"},
+ [0x1F6E7]={d="on"},
+ [0x1F6E8]={d="on"},
+ [0x1F6E9]={d="on"},
+ [0x1F6EA]={d="on"},
+ [0x1F6EB]={d="on"},
+ [0x1F6EC]={d="on"},
+ [0x1F6F0]={d="on"},
+ [0x1F6F1]={d="on"},
+ [0x1F6F2]={d="on"},
+ [0x1F6F3]={d="on"},
+ [0x1F6F4]={d="on"},
+ [0x1F6F5]={d="on"},
+ [0x1F6F6]={d="on"},
+ [0x1F6F7]={d="on"},
+ [0x1F6F8]={d="on"},
+ [0x1F6F9]={d="on"},
+ [0x1F6FA]={d="on"},
+ [0x1F6FB]={d="on"},
+ [0x1F6FC]={d="on"},
+ [0x1F700]={d="on"},
+ [0x1F701]={d="on"},
+ [0x1F702]={d="on"},
+ [0x1F703]={d="on"},
+ [0x1F704]={d="on"},
+ [0x1F705]={d="on"},
+ [0x1F706]={d="on"},
+ [0x1F707]={d="on"},
+ [0x1F708]={d="on"},
+ [0x1F709]={d="on"},
+ [0x1F70A]={d="on"},
+ [0x1F70B]={d="on"},
+ [0x1F70C]={d="on"},
+ [0x1F70D]={d="on"},
+ [0x1F70E]={d="on"},
+ [0x1F70F]={d="on"},
+ [0x1F710]={d="on"},
+ [0x1F711]={d="on"},
+ [0x1F712]={d="on"},
+ [0x1F713]={d="on"},
+ [0x1F714]={d="on"},
+ [0x1F715]={d="on"},
+ [0x1F716]={d="on"},
+ [0x1F717]={d="on"},
+ [0x1F718]={d="on"},
+ [0x1F719]={d="on"},
+ [0x1F71A]={d="on"},
+ [0x1F71B]={d="on"},
+ [0x1F71C]={d="on"},
+ [0x1F71D]={d="on"},
+ [0x1F71E]={d="on"},
+ [0x1F71F]={d="on"},
+ [0x1F720]={d="on"},
+ [0x1F721]={d="on"},
+ [0x1F722]={d="on"},
+ [0x1F723]={d="on"},
+ [0x1F724]={d="on"},
+ [0x1F725]={d="on"},
+ [0x1F726]={d="on"},
+ [0x1F727]={d="on"},
+ [0x1F728]={d="on"},
+ [0x1F729]={d="on"},
+ [0x1F72A]={d="on"},
+ [0x1F72B]={d="on"},
+ [0x1F72C]={d="on"},
+ [0x1F72D]={d="on"},
+ [0x1F72E]={d="on"},
+ [0x1F72F]={d="on"},
+ [0x1F730]={d="on"},
+ [0x1F731]={d="on"},
+ [0x1F732]={d="on"},
+ [0x1F733]={d="on"},
+ [0x1F734]={d="on"},
+ [0x1F735]={d="on"},
+ [0x1F736]={d="on"},
+ [0x1F737]={d="on"},
+ [0x1F738]={d="on"},
+ [0x1F739]={d="on"},
+ [0x1F73A]={d="on"},
+ [0x1F73B]={d="on"},
+ [0x1F73C]={d="on"},
+ [0x1F73D]={d="on"},
+ [0x1F73E]={d="on"},
+ [0x1F73F]={d="on"},
+ [0x1F740]={d="on"},
+ [0x1F741]={d="on"},
+ [0x1F742]={d="on"},
+ [0x1F743]={d="on"},
+ [0x1F744]={d="on"},
+ [0x1F745]={d="on"},
+ [0x1F746]={d="on"},
+ [0x1F747]={d="on"},
+ [0x1F748]={d="on"},
+ [0x1F749]={d="on"},
+ [0x1F74A]={d="on"},
+ [0x1F74B]={d="on"},
+ [0x1F74C]={d="on"},
+ [0x1F74D]={d="on"},
+ [0x1F74E]={d="on"},
+ [0x1F74F]={d="on"},
+ [0x1F750]={d="on"},
+ [0x1F751]={d="on"},
+ [0x1F752]={d="on"},
+ [0x1F753]={d="on"},
+ [0x1F754]={d="on"},
+ [0x1F755]={d="on"},
+ [0x1F756]={d="on"},
+ [0x1F757]={d="on"},
+ [0x1F758]={d="on"},
+ [0x1F759]={d="on"},
+ [0x1F75A]={d="on"},
+ [0x1F75B]={d="on"},
+ [0x1F75C]={d="on"},
+ [0x1F75D]={d="on"},
+ [0x1F75E]={d="on"},
+ [0x1F75F]={d="on"},
+ [0x1F760]={d="on"},
+ [0x1F761]={d="on"},
+ [0x1F762]={d="on"},
+ [0x1F763]={d="on"},
+ [0x1F764]={d="on"},
+ [0x1F765]={d="on"},
+ [0x1F766]={d="on"},
+ [0x1F767]={d="on"},
+ [0x1F768]={d="on"},
+ [0x1F769]={d="on"},
+ [0x1F76A]={d="on"},
+ [0x1F76B]={d="on"},
+ [0x1F76C]={d="on"},
+ [0x1F76D]={d="on"},
+ [0x1F76E]={d="on"},
+ [0x1F76F]={d="on"},
+ [0x1F770]={d="on"},
+ [0x1F771]={d="on"},
+ [0x1F772]={d="on"},
+ [0x1F773]={d="on"},
+ [0x1F774]={d="on"},
+ [0x1F775]={d="on"},
+ [0x1F776]={d="on"},
+ [0x1F77B]={d="on"},
+ [0x1F77C]={d="on"},
+ [0x1F77D]={d="on"},
+ [0x1F77E]={d="on"},
+ [0x1F77F]={d="on"},
+ [0x1F780]={d="on"},
+ [0x1F781]={d="on"},
+ [0x1F782]={d="on"},
+ [0x1F783]={d="on"},
+ [0x1F784]={d="on"},
+ [0x1F785]={d="on"},
+ [0x1F786]={d="on"},
+ [0x1F787]={d="on"},
+ [0x1F788]={d="on"},
+ [0x1F789]={d="on"},
+ [0x1F78A]={d="on"},
+ [0x1F78B]={d="on"},
+ [0x1F78C]={d="on"},
+ [0x1F78D]={d="on"},
+ [0x1F78E]={d="on"},
+ [0x1F78F]={d="on"},
+ [0x1F790]={d="on"},
+ [0x1F791]={d="on"},
+ [0x1F792]={d="on"},
+ [0x1F793]={d="on"},
+ [0x1F794]={d="on"},
+ [0x1F795]={d="on"},
+ [0x1F796]={d="on"},
+ [0x1F797]={d="on"},
+ [0x1F798]={d="on"},
+ [0x1F799]={d="on"},
+ [0x1F79A]={d="on"},
+ [0x1F79B]={d="on"},
+ [0x1F79C]={d="on"},
+ [0x1F79D]={d="on"},
+ [0x1F79E]={d="on"},
+ [0x1F79F]={d="on"},
+ [0x1F7A0]={d="on"},
+ [0x1F7A1]={d="on"},
+ [0x1F7A2]={d="on"},
+ [0x1F7A3]={d="on"},
+ [0x1F7A4]={d="on"},
+ [0x1F7A5]={d="on"},
+ [0x1F7A6]={d="on"},
+ [0x1F7A7]={d="on"},
+ [0x1F7A8]={d="on"},
+ [0x1F7A9]={d="on"},
+ [0x1F7AA]={d="on"},
+ [0x1F7AB]={d="on"},
+ [0x1F7AC]={d="on"},
+ [0x1F7AD]={d="on"},
+ [0x1F7AE]={d="on"},
+ [0x1F7AF]={d="on"},
+ [0x1F7B0]={d="on"},
+ [0x1F7B1]={d="on"},
+ [0x1F7B2]={d="on"},
+ [0x1F7B3]={d="on"},
+ [0x1F7B4]={d="on"},
+ [0x1F7B5]={d="on"},
+ [0x1F7B6]={d="on"},
+ [0x1F7B7]={d="on"},
+ [0x1F7B8]={d="on"},
+ [0x1F7B9]={d="on"},
+ [0x1F7BA]={d="on"},
+ [0x1F7BB]={d="on"},
+ [0x1F7BC]={d="on"},
+ [0x1F7BD]={d="on"},
+ [0x1F7BE]={d="on"},
+ [0x1F7BF]={d="on"},
+ [0x1F7C0]={d="on"},
+ [0x1F7C1]={d="on"},
+ [0x1F7C2]={d="on"},
+ [0x1F7C3]={d="on"},
+ [0x1F7C4]={d="on"},
+ [0x1F7C5]={d="on"},
+ [0x1F7C6]={d="on"},
+ [0x1F7C7]={d="on"},
+ [0x1F7C8]={d="on"},
+ [0x1F7C9]={d="on"},
+ [0x1F7CA]={d="on"},
+ [0x1F7CB]={d="on"},
+ [0x1F7CC]={d="on"},
+ [0x1F7CD]={d="on"},
+ [0x1F7CE]={d="on"},
+ [0x1F7CF]={d="on"},
+ [0x1F7D0]={d="on"},
+ [0x1F7D1]={d="on"},
+ [0x1F7D2]={d="on"},
+ [0x1F7D3]={d="on"},
+ [0x1F7D4]={d="on"},
+ [0x1F7D5]={d="on"},
+ [0x1F7D6]={d="on"},
+ [0x1F7D7]={d="on"},
+ [0x1F7D8]={d="on"},
+ [0x1F7D9]={d="on"},
+ [0x1F7E0]={d="on"},
+ [0x1F7E1]={d="on"},
+ [0x1F7E2]={d="on"},
+ [0x1F7E3]={d="on"},
+ [0x1F7E4]={d="on"},
+ [0x1F7E5]={d="on"},
+ [0x1F7E6]={d="on"},
+ [0x1F7E7]={d="on"},
+ [0x1F7E8]={d="on"},
+ [0x1F7E9]={d="on"},
+ [0x1F7EA]={d="on"},
+ [0x1F7EB]={d="on"},
+ [0x1F7F0]={d="on"},
+ [0x1F800]={d="on"},
+ [0x1F801]={d="on"},
+ [0x1F802]={d="on"},
+ [0x1F803]={d="on"},
+ [0x1F804]={d="on"},
+ [0x1F805]={d="on"},
+ [0x1F806]={d="on"},
+ [0x1F807]={d="on"},
+ [0x1F808]={d="on"},
+ [0x1F809]={d="on"},
+ [0x1F80A]={d="on"},
+ [0x1F80B]={d="on"},
+ [0x1F810]={d="on"},
+ [0x1F811]={d="on"},
+ [0x1F812]={d="on"},
+ [0x1F813]={d="on"},
+ [0x1F814]={d="on"},
+ [0x1F815]={d="on"},
+ [0x1F816]={d="on"},
+ [0x1F817]={d="on"},
+ [0x1F818]={d="on"},
+ [0x1F819]={d="on"},
+ [0x1F81A]={d="on"},
+ [0x1F81B]={d="on"},
+ [0x1F81C]={d="on"},
+ [0x1F81D]={d="on"},
+ [0x1F81E]={d="on"},
+ [0x1F81F]={d="on"},
+ [0x1F820]={d="on"},
+ [0x1F821]={d="on"},
+ [0x1F822]={d="on"},
+ [0x1F823]={d="on"},
+ [0x1F824]={d="on"},
+ [0x1F825]={d="on"},
+ [0x1F826]={d="on"},
+ [0x1F827]={d="on"},
+ [0x1F828]={d="on"},
+ [0x1F829]={d="on"},
+ [0x1F82A]={d="on"},
+ [0x1F82B]={d="on"},
+ [0x1F82C]={d="on"},
+ [0x1F82D]={d="on"},
+ [0x1F82E]={d="on"},
+ [0x1F82F]={d="on"},
+ [0x1F830]={d="on"},
+ [0x1F831]={d="on"},
+ [0x1F832]={d="on"},
+ [0x1F833]={d="on"},
+ [0x1F834]={d="on"},
+ [0x1F835]={d="on"},
+ [0x1F836]={d="on"},
+ [0x1F837]={d="on"},
+ [0x1F838]={d="on"},
+ [0x1F839]={d="on"},
+ [0x1F83A]={d="on"},
+ [0x1F83B]={d="on"},
+ [0x1F83C]={d="on"},
+ [0x1F83D]={d="on"},
+ [0x1F83E]={d="on"},
+ [0x1F83F]={d="on"},
+ [0x1F840]={d="on"},
+ [0x1F841]={d="on"},
+ [0x1F842]={d="on"},
+ [0x1F843]={d="on"},
+ [0x1F844]={d="on"},
+ [0x1F845]={d="on"},
+ [0x1F846]={d="on"},
+ [0x1F847]={d="on"},
+ [0x1F850]={d="on"},
+ [0x1F851]={d="on"},
+ [0x1F852]={d="on"},
+ [0x1F853]={d="on"},
+ [0x1F854]={d="on"},
+ [0x1F855]={d="on"},
+ [0x1F856]={d="on"},
+ [0x1F857]={d="on"},
+ [0x1F858]={d="on"},
+ [0x1F859]={d="on"},
+ [0x1F860]={d="on"},
+ [0x1F861]={d="on"},
+ [0x1F862]={d="on"},
+ [0x1F863]={d="on"},
+ [0x1F864]={d="on"},
+ [0x1F865]={d="on"},
+ [0x1F866]={d="on"},
+ [0x1F867]={d="on"},
+ [0x1F868]={d="on"},
+ [0x1F869]={d="on"},
+ [0x1F86A]={d="on"},
+ [0x1F86B]={d="on"},
+ [0x1F86C]={d="on"},
+ [0x1F86D]={d="on"},
+ [0x1F86E]={d="on"},
+ [0x1F86F]={d="on"},
+ [0x1F870]={d="on"},
+ [0x1F871]={d="on"},
+ [0x1F872]={d="on"},
+ [0x1F873]={d="on"},
+ [0x1F874]={d="on"},
+ [0x1F875]={d="on"},
+ [0x1F876]={d="on"},
+ [0x1F877]={d="on"},
+ [0x1F878]={d="on"},
+ [0x1F879]={d="on"},
+ [0x1F87A]={d="on"},
+ [0x1F87B]={d="on"},
+ [0x1F87C]={d="on"},
+ [0x1F87D]={d="on"},
+ [0x1F87E]={d="on"},
+ [0x1F87F]={d="on"},
+ [0x1F880]={d="on"},
+ [0x1F881]={d="on"},
+ [0x1F882]={d="on"},
+ [0x1F883]={d="on"},
+ [0x1F884]={d="on"},
+ [0x1F885]={d="on"},
+ [0x1F886]={d="on"},
+ [0x1F887]={d="on"},
+ [0x1F890]={d="on"},
+ [0x1F891]={d="on"},
+ [0x1F892]={d="on"},
+ [0x1F893]={d="on"},
+ [0x1F894]={d="on"},
+ [0x1F895]={d="on"},
+ [0x1F896]={d="on"},
+ [0x1F897]={d="on"},
+ [0x1F898]={d="on"},
+ [0x1F899]={d="on"},
+ [0x1F89A]={d="on"},
+ [0x1F89B]={d="on"},
+ [0x1F89C]={d="on"},
+ [0x1F89D]={d="on"},
+ [0x1F89E]={d="on"},
+ [0x1F89F]={d="on"},
+ [0x1F8A0]={d="on"},
+ [0x1F8A1]={d="on"},
+ [0x1F8A2]={d="on"},
+ [0x1F8A3]={d="on"},
+ [0x1F8A4]={d="on"},
+ [0x1F8A5]={d="on"},
+ [0x1F8A6]={d="on"},
+ [0x1F8A7]={d="on"},
+ [0x1F8A8]={d="on"},
+ [0x1F8A9]={d="on"},
+ [0x1F8AA]={d="on"},
+ [0x1F8AB]={d="on"},
+ [0x1F8AC]={d="on"},
+ [0x1F8AD]={d="on"},
+ [0x1F8B0]={d="on"},
+ [0x1F8B1]={d="on"},
+ [0x1F900]={d="on"},
+ [0x1F901]={d="on"},
+ [0x1F902]={d="on"},
+ [0x1F903]={d="on"},
+ [0x1F904]={d="on"},
+ [0x1F905]={d="on"},
+ [0x1F906]={d="on"},
+ [0x1F907]={d="on"},
+ [0x1F908]={d="on"},
+ [0x1F909]={d="on"},
+ [0x1F90A]={d="on"},
+ [0x1F90B]={d="on"},
+ [0x1F90C]={d="on"},
+ [0x1F90D]={d="on"},
+ [0x1F90E]={d="on"},
+ [0x1F90F]={d="on"},
+ [0x1F910]={d="on"},
+ [0x1F911]={d="on"},
+ [0x1F912]={d="on"},
+ [0x1F913]={d="on"},
+ [0x1F914]={d="on"},
+ [0x1F915]={d="on"},
+ [0x1F916]={d="on"},
+ [0x1F917]={d="on"},
+ [0x1F918]={d="on"},
+ [0x1F919]={d="on"},
+ [0x1F91A]={d="on"},
+ [0x1F91B]={d="on"},
+ [0x1F91C]={d="on"},
+ [0x1F91D]={d="on"},
+ [0x1F91E]={d="on"},
+ [0x1F91F]={d="on"},
+ [0x1F920]={d="on"},
+ [0x1F921]={d="on"},
+ [0x1F922]={d="on"},
+ [0x1F923]={d="on"},
+ [0x1F924]={d="on"},
+ [0x1F925]={d="on"},
+ [0x1F926]={d="on"},
+ [0x1F927]={d="on"},
+ [0x1F928]={d="on"},
+ [0x1F929]={d="on"},
+ [0x1F92A]={d="on"},
+ [0x1F92B]={d="on"},
+ [0x1F92C]={d="on"},
+ [0x1F92D]={d="on"},
+ [0x1F92E]={d="on"},
+ [0x1F92F]={d="on"},
+ [0x1F930]={d="on"},
+ [0x1F931]={d="on"},
+ [0x1F932]={d="on"},
+ [0x1F933]={d="on"},
+ [0x1F934]={d="on"},
+ [0x1F935]={d="on"},
+ [0x1F936]={d="on"},
+ [0x1F937]={d="on"},
+ [0x1F938]={d="on"},
+ [0x1F939]={d="on"},
+ [0x1F93A]={d="on"},
+ [0x1F93B]={d="on"},
+ [0x1F93C]={d="on"},
+ [0x1F93D]={d="on"},
+ [0x1F93E]={d="on"},
+ [0x1F93F]={d="on"},
+ [0x1F940]={d="on"},
+ [0x1F941]={d="on"},
+ [0x1F942]={d="on"},
+ [0x1F943]={d="on"},
+ [0x1F944]={d="on"},
+ [0x1F945]={d="on"},
+ [0x1F946]={d="on"},
+ [0x1F947]={d="on"},
+ [0x1F948]={d="on"},
+ [0x1F949]={d="on"},
+ [0x1F94A]={d="on"},
+ [0x1F94B]={d="on"},
+ [0x1F94C]={d="on"},
+ [0x1F94D]={d="on"},
+ [0x1F94E]={d="on"},
+ [0x1F94F]={d="on"},
+ [0x1F950]={d="on"},
+ [0x1F951]={d="on"},
+ [0x1F952]={d="on"},
+ [0x1F953]={d="on"},
+ [0x1F954]={d="on"},
+ [0x1F955]={d="on"},
+ [0x1F956]={d="on"},
+ [0x1F957]={d="on"},
+ [0x1F958]={d="on"},
+ [0x1F959]={d="on"},
+ [0x1F95A]={d="on"},
+ [0x1F95B]={d="on"},
+ [0x1F95C]={d="on"},
+ [0x1F95D]={d="on"},
+ [0x1F95E]={d="on"},
+ [0x1F95F]={d="on"},
+ [0x1F960]={d="on"},
+ [0x1F961]={d="on"},
+ [0x1F962]={d="on"},
+ [0x1F963]={d="on"},
+ [0x1F964]={d="on"},
+ [0x1F965]={d="on"},
+ [0x1F966]={d="on"},
+ [0x1F967]={d="on"},
+ [0x1F968]={d="on"},
+ [0x1F969]={d="on"},
+ [0x1F96A]={d="on"},
+ [0x1F96B]={d="on"},
+ [0x1F96C]={d="on"},
+ [0x1F96D]={d="on"},
+ [0x1F96E]={d="on"},
+ [0x1F96F]={d="on"},
+ [0x1F970]={d="on"},
+ [0x1F971]={d="on"},
+ [0x1F972]={d="on"},
+ [0x1F973]={d="on"},
+ [0x1F974]={d="on"},
+ [0x1F975]={d="on"},
+ [0x1F976]={d="on"},
+ [0x1F977]={d="on"},
+ [0x1F978]={d="on"},
+ [0x1F979]={d="on"},
+ [0x1F97A]={d="on"},
+ [0x1F97B]={d="on"},
+ [0x1F97C]={d="on"},
+ [0x1F97D]={d="on"},
+ [0x1F97E]={d="on"},
+ [0x1F97F]={d="on"},
+ [0x1F980]={d="on"},
+ [0x1F981]={d="on"},
+ [0x1F982]={d="on"},
+ [0x1F983]={d="on"},
+ [0x1F984]={d="on"},
+ [0x1F985]={d="on"},
+ [0x1F986]={d="on"},
+ [0x1F987]={d="on"},
+ [0x1F988]={d="on"},
+ [0x1F989]={d="on"},
+ [0x1F98A]={d="on"},
+ [0x1F98B]={d="on"},
+ [0x1F98C]={d="on"},
+ [0x1F98D]={d="on"},
+ [0x1F98E]={d="on"},
+ [0x1F98F]={d="on"},
+ [0x1F990]={d="on"},
+ [0x1F991]={d="on"},
+ [0x1F992]={d="on"},
+ [0x1F993]={d="on"},
+ [0x1F994]={d="on"},
+ [0x1F995]={d="on"},
+ [0x1F996]={d="on"},
+ [0x1F997]={d="on"},
+ [0x1F998]={d="on"},
+ [0x1F999]={d="on"},
+ [0x1F99A]={d="on"},
+ [0x1F99B]={d="on"},
+ [0x1F99C]={d="on"},
+ [0x1F99D]={d="on"},
+ [0x1F99E]={d="on"},
+ [0x1F99F]={d="on"},
+ [0x1F9A0]={d="on"},
+ [0x1F9A1]={d="on"},
+ [0x1F9A2]={d="on"},
+ [0x1F9A3]={d="on"},
+ [0x1F9A4]={d="on"},
+ [0x1F9A5]={d="on"},
+ [0x1F9A6]={d="on"},
+ [0x1F9A7]={d="on"},
+ [0x1F9A8]={d="on"},
+ [0x1F9A9]={d="on"},
+ [0x1F9AA]={d="on"},
+ [0x1F9AB]={d="on"},
+ [0x1F9AC]={d="on"},
+ [0x1F9AD]={d="on"},
+ [0x1F9AE]={d="on"},
+ [0x1F9AF]={d="on"},
+ [0x1F9B0]={d="on"},
+ [0x1F9B1]={d="on"},
+ [0x1F9B2]={d="on"},
+ [0x1F9B3]={d="on"},
+ [0x1F9B4]={d="on"},
+ [0x1F9B5]={d="on"},
+ [0x1F9B6]={d="on"},
+ [0x1F9B7]={d="on"},
+ [0x1F9B8]={d="on"},
+ [0x1F9B9]={d="on"},
+ [0x1F9BA]={d="on"},
+ [0x1F9BB]={d="on"},
+ [0x1F9BC]={d="on"},
+ [0x1F9BD]={d="on"},
+ [0x1F9BE]={d="on"},
+ [0x1F9BF]={d="on"},
+ [0x1F9C0]={d="on"},
+ [0x1F9C1]={d="on"},
+ [0x1F9C2]={d="on"},
+ [0x1F9C3]={d="on"},
+ [0x1F9C4]={d="on"},
+ [0x1F9C5]={d="on"},
+ [0x1F9C6]={d="on"},
+ [0x1F9C7]={d="on"},
+ [0x1F9C8]={d="on"},
+ [0x1F9C9]={d="on"},
+ [0x1F9CA]={d="on"},
+ [0x1F9CB]={d="on"},
+ [0x1F9CC]={d="on"},
+ [0x1F9CD]={d="on"},
+ [0x1F9CE]={d="on"},
+ [0x1F9CF]={d="on"},
+ [0x1F9D0]={d="on"},
+ [0x1F9D1]={d="on"},
+ [0x1F9D2]={d="on"},
+ [0x1F9D3]={d="on"},
+ [0x1F9D4]={d="on"},
+ [0x1F9D5]={d="on"},
+ [0x1F9D6]={d="on"},
+ [0x1F9D7]={d="on"},
+ [0x1F9D8]={d="on"},
+ [0x1F9D9]={d="on"},
+ [0x1F9DA]={d="on"},
+ [0x1F9DB]={d="on"},
+ [0x1F9DC]={d="on"},
+ [0x1F9DD]={d="on"},
+ [0x1F9DE]={d="on"},
+ [0x1F9DF]={d="on"},
+ [0x1F9E0]={d="on"},
+ [0x1F9E1]={d="on"},
+ [0x1F9E2]={d="on"},
+ [0x1F9E3]={d="on"},
+ [0x1F9E4]={d="on"},
+ [0x1F9E5]={d="on"},
+ [0x1F9E6]={d="on"},
+ [0x1F9E7]={d="on"},
+ [0x1F9E8]={d="on"},
+ [0x1F9E9]={d="on"},
+ [0x1F9EA]={d="on"},
+ [0x1F9EB]={d="on"},
+ [0x1F9EC]={d="on"},
+ [0x1F9ED]={d="on"},
+ [0x1F9EE]={d="on"},
+ [0x1F9EF]={d="on"},
+ [0x1F9F0]={d="on"},
+ [0x1F9F1]={d="on"},
+ [0x1F9F2]={d="on"},
+ [0x1F9F3]={d="on"},
+ [0x1F9F4]={d="on"},
+ [0x1F9F5]={d="on"},
+ [0x1F9F6]={d="on"},
+ [0x1F9F7]={d="on"},
+ [0x1F9F8]={d="on"},
+ [0x1F9F9]={d="on"},
+ [0x1F9FA]={d="on"},
+ [0x1F9FB]={d="on"},
+ [0x1F9FC]={d="on"},
+ [0x1F9FD]={d="on"},
+ [0x1F9FE]={d="on"},
+ [0x1F9FF]={d="on"},
+ [0x1FA00]={d="on"},
+ [0x1FA01]={d="on"},
+ [0x1FA02]={d="on"},
+ [0x1FA03]={d="on"},
+ [0x1FA04]={d="on"},
+ [0x1FA05]={d="on"},
+ [0x1FA06]={d="on"},
+ [0x1FA07]={d="on"},
+ [0x1FA08]={d="on"},
+ [0x1FA09]={d="on"},
+ [0x1FA0A]={d="on"},
+ [0x1FA0B]={d="on"},
+ [0x1FA0C]={d="on"},
+ [0x1FA0D]={d="on"},
+ [0x1FA0E]={d="on"},
+ [0x1FA0F]={d="on"},
+ [0x1FA10]={d="on"},
+ [0x1FA11]={d="on"},
+ [0x1FA12]={d="on"},
+ [0x1FA13]={d="on"},
+ [0x1FA14]={d="on"},
+ [0x1FA15]={d="on"},
+ [0x1FA16]={d="on"},
+ [0x1FA17]={d="on"},
+ [0x1FA18]={d="on"},
+ [0x1FA19]={d="on"},
+ [0x1FA1A]={d="on"},
+ [0x1FA1B]={d="on"},
+ [0x1FA1C]={d="on"},
+ [0x1FA1D]={d="on"},
+ [0x1FA1E]={d="on"},
+ [0x1FA1F]={d="on"},
+ [0x1FA20]={d="on"},
+ [0x1FA21]={d="on"},
+ [0x1FA22]={d="on"},
+ [0x1FA23]={d="on"},
+ [0x1FA24]={d="on"},
+ [0x1FA25]={d="on"},
+ [0x1FA26]={d="on"},
+ [0x1FA27]={d="on"},
+ [0x1FA28]={d="on"},
+ [0x1FA29]={d="on"},
+ [0x1FA2A]={d="on"},
+ [0x1FA2B]={d="on"},
+ [0x1FA2C]={d="on"},
+ [0x1FA2D]={d="on"},
+ [0x1FA2E]={d="on"},
+ [0x1FA2F]={d="on"},
+ [0x1FA30]={d="on"},
+ [0x1FA31]={d="on"},
+ [0x1FA32]={d="on"},
+ [0x1FA33]={d="on"},
+ [0x1FA34]={d="on"},
+ [0x1FA35]={d="on"},
+ [0x1FA36]={d="on"},
+ [0x1FA37]={d="on"},
+ [0x1FA38]={d="on"},
+ [0x1FA39]={d="on"},
+ [0x1FA3A]={d="on"},
+ [0x1FA3B]={d="on"},
+ [0x1FA3C]={d="on"},
+ [0x1FA3D]={d="on"},
+ [0x1FA3E]={d="on"},
+ [0x1FA3F]={d="on"},
+ [0x1FA40]={d="on"},
+ [0x1FA41]={d="on"},
+ [0x1FA42]={d="on"},
+ [0x1FA43]={d="on"},
+ [0x1FA44]={d="on"},
+ [0x1FA45]={d="on"},
+ [0x1FA46]={d="on"},
+ [0x1FA47]={d="on"},
+ [0x1FA48]={d="on"},
+ [0x1FA49]={d="on"},
+ [0x1FA4A]={d="on"},
+ [0x1FA4B]={d="on"},
+ [0x1FA4C]={d="on"},
+ [0x1FA4D]={d="on"},
+ [0x1FA4E]={d="on"},
+ [0x1FA4F]={d="on"},
+ [0x1FA50]={d="on"},
+ [0x1FA51]={d="on"},
+ [0x1FA52]={d="on"},
+ [0x1FA53]={d="on"},
+ [0x1FA60]={d="on"},
+ [0x1FA61]={d="on"},
+ [0x1FA62]={d="on"},
+ [0x1FA63]={d="on"},
+ [0x1FA64]={d="on"},
+ [0x1FA65]={d="on"},
+ [0x1FA66]={d="on"},
+ [0x1FA67]={d="on"},
+ [0x1FA68]={d="on"},
+ [0x1FA69]={d="on"},
+ [0x1FA6A]={d="on"},
+ [0x1FA6B]={d="on"},
+ [0x1FA6C]={d="on"},
+ [0x1FA6D]={d="on"},
+ [0x1FA70]={d="on"},
+ [0x1FA71]={d="on"},
+ [0x1FA72]={d="on"},
+ [0x1FA73]={d="on"},
+ [0x1FA74]={d="on"},
+ [0x1FA75]={d="on"},
+ [0x1FA76]={d="on"},
+ [0x1FA77]={d="on"},
+ [0x1FA78]={d="on"},
+ [0x1FA79]={d="on"},
+ [0x1FA7A]={d="on"},
+ [0x1FA7B]={d="on"},
+ [0x1FA7C]={d="on"},
+ [0x1FA80]={d="on"},
+ [0x1FA81]={d="on"},
+ [0x1FA82]={d="on"},
+ [0x1FA83]={d="on"},
+ [0x1FA84]={d="on"},
+ [0x1FA85]={d="on"},
+ [0x1FA86]={d="on"},
+ [0x1FA87]={d="on"},
+ [0x1FA88]={d="on"},
+ [0x1FA90]={d="on"},
+ [0x1FA91]={d="on"},
+ [0x1FA92]={d="on"},
+ [0x1FA93]={d="on"},
+ [0x1FA94]={d="on"},
+ [0x1FA95]={d="on"},
+ [0x1FA96]={d="on"},
+ [0x1FA97]={d="on"},
+ [0x1FA98]={d="on"},
+ [0x1FA99]={d="on"},
+ [0x1FA9A]={d="on"},
+ [0x1FA9B]={d="on"},
+ [0x1FA9C]={d="on"},
+ [0x1FA9D]={d="on"},
+ [0x1FA9E]={d="on"},
+ [0x1FA9F]={d="on"},
+ [0x1FAA0]={d="on"},
+ [0x1FAA1]={d="on"},
+ [0x1FAA2]={d="on"},
+ [0x1FAA3]={d="on"},
+ [0x1FAA4]={d="on"},
+ [0x1FAA5]={d="on"},
+ [0x1FAA6]={d="on"},
+ [0x1FAA7]={d="on"},
+ [0x1FAA8]={d="on"},
+ [0x1FAA9]={d="on"},
+ [0x1FAAA]={d="on"},
+ [0x1FAAB]={d="on"},
+ [0x1FAAC]={d="on"},
+ [0x1FAAD]={d="on"},
+ [0x1FAAE]={d="on"},
+ [0x1FAAF]={d="on"},
+ [0x1FAB0]={d="on"},
+ [0x1FAB1]={d="on"},
+ [0x1FAB2]={d="on"},
+ [0x1FAB3]={d="on"},
+ [0x1FAB4]={d="on"},
+ [0x1FAB5]={d="on"},
+ [0x1FAB6]={d="on"},
+ [0x1FAB7]={d="on"},
+ [0x1FAB8]={d="on"},
+ [0x1FAB9]={d="on"},
+ [0x1FABA]={d="on"},
+ [0x1FABB]={d="on"},
+ [0x1FABC]={d="on"},
+ [0x1FABD]={d="on"},
+ [0x1FABF]={d="on"},
+ [0x1FAC0]={d="on"},
+ [0x1FAC1]={d="on"},
+ [0x1FAC2]={d="on"},
+ [0x1FAC3]={d="on"},
+ [0x1FAC4]={d="on"},
+ [0x1FAC5]={d="on"},
+ [0x1FACE]={d="on"},
+ [0x1FACF]={d="on"},
+ [0x1FAD0]={d="on"},
+ [0x1FAD1]={d="on"},
+ [0x1FAD2]={d="on"},
+ [0x1FAD3]={d="on"},
+ [0x1FAD4]={d="on"},
+ [0x1FAD5]={d="on"},
+ [0x1FAD6]={d="on"},
+ [0x1FAD7]={d="on"},
+ [0x1FAD8]={d="on"},
+ [0x1FAD9]={d="on"},
+ [0x1FADA]={d="on"},
+ [0x1FADB]={d="on"},
+ [0x1FAE0]={d="on"},
+ [0x1FAE1]={d="on"},
+ [0x1FAE2]={d="on"},
+ [0x1FAE3]={d="on"},
+ [0x1FAE4]={d="on"},
+ [0x1FAE5]={d="on"},
+ [0x1FAE6]={d="on"},
+ [0x1FAE7]={d="on"},
+ [0x1FAE8]={d="on"},
+ [0x1FAF0]={d="on"},
+ [0x1FAF1]={d="on"},
+ [0x1FAF2]={d="on"},
+ [0x1FAF3]={d="on"},
+ [0x1FAF4]={d="on"},
+ [0x1FAF5]={d="on"},
+ [0x1FAF6]={d="on"},
+ [0x1FAF7]={d="on"},
+ [0x1FAF8]={d="on"},
+ [0x1FB00]={d="on"},
+ [0x1FB01]={d="on"},
+ [0x1FB02]={d="on"},
+ [0x1FB03]={d="on"},
+ [0x1FB04]={d="on"},
+ [0x1FB05]={d="on"},
+ [0x1FB06]={d="on"},
+ [0x1FB07]={d="on"},
+ [0x1FB08]={d="on"},
+ [0x1FB09]={d="on"},
+ [0x1FB0A]={d="on"},
+ [0x1FB0B]={d="on"},
+ [0x1FB0C]={d="on"},
+ [0x1FB0D]={d="on"},
+ [0x1FB0E]={d="on"},
+ [0x1FB0F]={d="on"},
+ [0x1FB10]={d="on"},
+ [0x1FB11]={d="on"},
+ [0x1FB12]={d="on"},
+ [0x1FB13]={d="on"},
+ [0x1FB14]={d="on"},
+ [0x1FB15]={d="on"},
+ [0x1FB16]={d="on"},
+ [0x1FB17]={d="on"},
+ [0x1FB18]={d="on"},
+ [0x1FB19]={d="on"},
+ [0x1FB1A]={d="on"},
+ [0x1FB1B]={d="on"},
+ [0x1FB1C]={d="on"},
+ [0x1FB1D]={d="on"},
+ [0x1FB1E]={d="on"},
+ [0x1FB1F]={d="on"},
+ [0x1FB20]={d="on"},
+ [0x1FB21]={d="on"},
+ [0x1FB22]={d="on"},
+ [0x1FB23]={d="on"},
+ [0x1FB24]={d="on"},
+ [0x1FB25]={d="on"},
+ [0x1FB26]={d="on"},
+ [0x1FB27]={d="on"},
+ [0x1FB28]={d="on"},
+ [0x1FB29]={d="on"},
+ [0x1FB2A]={d="on"},
+ [0x1FB2B]={d="on"},
+ [0x1FB2C]={d="on"},
+ [0x1FB2D]={d="on"},
+ [0x1FB2E]={d="on"},
+ [0x1FB2F]={d="on"},
+ [0x1FB30]={d="on"},
+ [0x1FB31]={d="on"},
+ [0x1FB32]={d="on"},
+ [0x1FB33]={d="on"},
+ [0x1FB34]={d="on"},
+ [0x1FB35]={d="on"},
+ [0x1FB36]={d="on"},
+ [0x1FB37]={d="on"},
+ [0x1FB38]={d="on"},
+ [0x1FB39]={d="on"},
+ [0x1FB3A]={d="on"},
+ [0x1FB3B]={d="on"},
+ [0x1FB3C]={d="on"},
+ [0x1FB3D]={d="on"},
+ [0x1FB3E]={d="on"},
+ [0x1FB3F]={d="on"},
+ [0x1FB40]={d="on"},
+ [0x1FB41]={d="on"},
+ [0x1FB42]={d="on"},
+ [0x1FB43]={d="on"},
+ [0x1FB44]={d="on"},
+ [0x1FB45]={d="on"},
+ [0x1FB46]={d="on"},
+ [0x1FB47]={d="on"},
+ [0x1FB48]={d="on"},
+ [0x1FB49]={d="on"},
+ [0x1FB4A]={d="on"},
+ [0x1FB4B]={d="on"},
+ [0x1FB4C]={d="on"},
+ [0x1FB4D]={d="on"},
+ [0x1FB4E]={d="on"},
+ [0x1FB4F]={d="on"},
+ [0x1FB50]={d="on"},
+ [0x1FB51]={d="on"},
+ [0x1FB52]={d="on"},
+ [0x1FB53]={d="on"},
+ [0x1FB54]={d="on"},
+ [0x1FB55]={d="on"},
+ [0x1FB56]={d="on"},
+ [0x1FB57]={d="on"},
+ [0x1FB58]={d="on"},
+ [0x1FB59]={d="on"},
+ [0x1FB5A]={d="on"},
+ [0x1FB5B]={d="on"},
+ [0x1FB5C]={d="on"},
+ [0x1FB5D]={d="on"},
+ [0x1FB5E]={d="on"},
+ [0x1FB5F]={d="on"},
+ [0x1FB60]={d="on"},
+ [0x1FB61]={d="on"},
+ [0x1FB62]={d="on"},
+ [0x1FB63]={d="on"},
+ [0x1FB64]={d="on"},
+ [0x1FB65]={d="on"},
+ [0x1FB66]={d="on"},
+ [0x1FB67]={d="on"},
+ [0x1FB68]={d="on"},
+ [0x1FB69]={d="on"},
+ [0x1FB6A]={d="on"},
+ [0x1FB6B]={d="on"},
+ [0x1FB6C]={d="on"},
+ [0x1FB6D]={d="on"},
+ [0x1FB6E]={d="on"},
+ [0x1FB6F]={d="on"},
+ [0x1FB70]={d="on"},
+ [0x1FB71]={d="on"},
+ [0x1FB72]={d="on"},
+ [0x1FB73]={d="on"},
+ [0x1FB74]={d="on"},
+ [0x1FB75]={d="on"},
+ [0x1FB76]={d="on"},
+ [0x1FB77]={d="on"},
+ [0x1FB78]={d="on"},
+ [0x1FB79]={d="on"},
+ [0x1FB7A]={d="on"},
+ [0x1FB7B]={d="on"},
+ [0x1FB7C]={d="on"},
+ [0x1FB7D]={d="on"},
+ [0x1FB7E]={d="on"},
+ [0x1FB7F]={d="on"},
+ [0x1FB80]={d="on"},
+ [0x1FB81]={d="on"},
+ [0x1FB82]={d="on"},
+ [0x1FB83]={d="on"},
+ [0x1FB84]={d="on"},
+ [0x1FB85]={d="on"},
+ [0x1FB86]={d="on"},
+ [0x1FB87]={d="on"},
+ [0x1FB88]={d="on"},
+ [0x1FB89]={d="on"},
+ [0x1FB8A]={d="on"},
+ [0x1FB8B]={d="on"},
+ [0x1FB8C]={d="on"},
+ [0x1FB8D]={d="on"},
+ [0x1FB8E]={d="on"},
+ [0x1FB8F]={d="on"},
+ [0x1FB90]={d="on"},
+ [0x1FB91]={d="on"},
+ [0x1FB92]={d="on"},
+ [0x1FB94]={d="on"},
+ [0x1FB95]={d="on"},
+ [0x1FB96]={d="on"},
+ [0x1FB97]={d="on"},
+ [0x1FB98]={d="on"},
+ [0x1FB99]={d="on"},
+ [0x1FB9A]={d="on"},
+ [0x1FB9B]={d="on"},
+ [0x1FB9C]={d="on"},
+ [0x1FB9D]={d="on"},
+ [0x1FB9E]={d="on"},
+ [0x1FB9F]={d="on"},
+ [0x1FBA0]={d="on"},
+ [0x1FBA1]={d="on"},
+ [0x1FBA2]={d="on"},
+ [0x1FBA3]={d="on"},
+ [0x1FBA4]={d="on"},
+ [0x1FBA5]={d="on"},
+ [0x1FBA6]={d="on"},
+ [0x1FBA7]={d="on"},
+ [0x1FBA8]={d="on"},
+ [0x1FBA9]={d="on"},
+ [0x1FBAA]={d="on"},
+ [0x1FBAB]={d="on"},
+ [0x1FBAC]={d="on"},
+ [0x1FBAD]={d="on"},
+ [0x1FBAE]={d="on"},
+ [0x1FBAF]={d="on"},
+ [0x1FBB0]={d="on"},
+ [0x1FBB1]={d="on"},
+ [0x1FBB2]={d="on"},
+ [0x1FBB3]={d="on"},
+ [0x1FBB4]={d="on"},
+ [0x1FBB5]={d="on"},
+ [0x1FBB6]={d="on"},
+ [0x1FBB7]={d="on"},
+ [0x1FBB8]={d="on"},
+ [0x1FBB9]={d="on"},
+ [0x1FBBA]={d="on"},
+ [0x1FBBB]={d="on"},
+ [0x1FBBC]={d="on"},
+ [0x1FBBD]={d="on"},
+ [0x1FBBE]={d="on"},
+ [0x1FBBF]={d="on"},
+ [0x1FBC0]={d="on"},
+ [0x1FBC1]={d="on"},
+ [0x1FBC2]={d="on"},
+ [0x1FBC3]={d="on"},
+ [0x1FBC4]={d="on"},
+ [0x1FBC5]={d="on"},
+ [0x1FBC6]={d="on"},
+ [0x1FBC7]={d="on"},
+ [0x1FBC8]={d="on"},
+ [0x1FBC9]={d="on"},
+ [0x1FBCA]={d="on"},
+ [0x1FBF0]={d="en"},
+ [0x1FBF1]={d="en"},
+ [0x1FBF2]={d="en"},
+ [0x1FBF3]={d="en"},
+ [0x1FBF4]={d="en"},
+ [0x1FBF5]={d="en"},
+ [0x1FBF6]={d="en"},
+ [0x1FBF7]={d="en"},
+ [0x1FBF8]={d="en"},
+ [0x1FBF9]={d="en"},
+ [0x2F800]={d="l"},
+ [0x2F801]={d="l"},
+ [0x2F802]={d="l"},
+ [0x2F803]={d="l"},
+ [0x2F804]={d="l"},
+ [0x2F805]={d="l"},
+ [0x2F806]={d="l"},
+ [0x2F807]={d="l"},
+ [0x2F808]={d="l"},
+ [0x2F809]={d="l"},
+ [0x2F80A]={d="l"},
+ [0x2F80B]={d="l"},
+ [0x2F80C]={d="l"},
+ [0x2F80D]={d="l"},
+ [0x2F80E]={d="l"},
+ [0x2F80F]={d="l"},
+ [0x2F810]={d="l"},
+ [0x2F811]={d="l"},
+ [0x2F812]={d="l"},
+ [0x2F813]={d="l"},
+ [0x2F814]={d="l"},
+ [0x2F815]={d="l"},
+ [0x2F816]={d="l"},
+ [0x2F817]={d="l"},
+ [0x2F818]={d="l"},
+ [0x2F819]={d="l"},
+ [0x2F81A]={d="l"},
+ [0x2F81B]={d="l"},
+ [0x2F81C]={d="l"},
+ [0x2F81D]={d="l"},
+ [0x2F81E]={d="l"},
+ [0x2F81F]={d="l"},
+ [0x2F820]={d="l"},
+ [0x2F821]={d="l"},
+ [0x2F822]={d="l"},
+ [0x2F823]={d="l"},
+ [0x2F824]={d="l"},
+ [0x2F825]={d="l"},
+ [0x2F826]={d="l"},
+ [0x2F827]={d="l"},
+ [0x2F828]={d="l"},
+ [0x2F829]={d="l"},
+ [0x2F82A]={d="l"},
+ [0x2F82B]={d="l"},
+ [0x2F82C]={d="l"},
+ [0x2F82D]={d="l"},
+ [0x2F82E]={d="l"},
+ [0x2F82F]={d="l"},
+ [0x2F830]={d="l"},
+ [0x2F831]={d="l"},
+ [0x2F832]={d="l"},
+ [0x2F833]={d="l"},
+ [0x2F834]={d="l"},
+ [0x2F835]={d="l"},
+ [0x2F836]={d="l"},
+ [0x2F837]={d="l"},
+ [0x2F838]={d="l"},
+ [0x2F839]={d="l"},
+ [0x2F83A]={d="l"},
+ [0x2F83B]={d="l"},
+ [0x2F83C]={d="l"},
+ [0x2F83D]={d="l"},
+ [0x2F83E]={d="l"},
+ [0x2F83F]={d="l"},
+ [0x2F840]={d="l"},
+ [0x2F841]={d="l"},
+ [0x2F842]={d="l"},
+ [0x2F843]={d="l"},
+ [0x2F844]={d="l"},
+ [0x2F845]={d="l"},
+ [0x2F846]={d="l"},
+ [0x2F847]={d="l"},
+ [0x2F848]={d="l"},
+ [0x2F849]={d="l"},
+ [0x2F84A]={d="l"},
+ [0x2F84B]={d="l"},
+ [0x2F84C]={d="l"},
+ [0x2F84D]={d="l"},
+ [0x2F84E]={d="l"},
+ [0x2F84F]={d="l"},
+ [0x2F850]={d="l"},
+ [0x2F851]={d="l"},
+ [0x2F852]={d="l"},
+ [0x2F853]={d="l"},
+ [0x2F854]={d="l"},
+ [0x2F855]={d="l"},
+ [0x2F856]={d="l"},
+ [0x2F857]={d="l"},
+ [0x2F858]={d="l"},
+ [0x2F859]={d="l"},
+ [0x2F85A]={d="l"},
+ [0x2F85B]={d="l"},
+ [0x2F85C]={d="l"},
+ [0x2F85D]={d="l"},
+ [0x2F85E]={d="l"},
+ [0x2F85F]={d="l"},
+ [0x2F860]={d="l"},
+ [0x2F861]={d="l"},
+ [0x2F862]={d="l"},
+ [0x2F863]={d="l"},
+ [0x2F864]={d="l"},
+ [0x2F865]={d="l"},
+ [0x2F866]={d="l"},
+ [0x2F867]={d="l"},
+ [0x2F868]={d="l"},
+ [0x2F869]={d="l"},
+ [0x2F86A]={d="l"},
+ [0x2F86B]={d="l"},
+ [0x2F86C]={d="l"},
+ [0x2F86D]={d="l"},
+ [0x2F86E]={d="l"},
+ [0x2F86F]={d="l"},
+ [0x2F870]={d="l"},
+ [0x2F871]={d="l"},
+ [0x2F872]={d="l"},
+ [0x2F873]={d="l"},
+ [0x2F874]={d="l"},
+ [0x2F875]={d="l"},
+ [0x2F876]={d="l"},
+ [0x2F877]={d="l"},
+ [0x2F878]={d="l"},
+ [0x2F879]={d="l"},
+ [0x2F87A]={d="l"},
+ [0x2F87B]={d="l"},
+ [0x2F87C]={d="l"},
+ [0x2F87D]={d="l"},
+ [0x2F87E]={d="l"},
+ [0x2F87F]={d="l"},
+ [0x2F880]={d="l"},
+ [0x2F881]={d="l"},
+ [0x2F882]={d="l"},
+ [0x2F883]={d="l"},
+ [0x2F884]={d="l"},
+ [0x2F885]={d="l"},
+ [0x2F886]={d="l"},
+ [0x2F887]={d="l"},
+ [0x2F888]={d="l"},
+ [0x2F889]={d="l"},
+ [0x2F88A]={d="l"},
+ [0x2F88B]={d="l"},
+ [0x2F88C]={d="l"},
+ [0x2F88D]={d="l"},
+ [0x2F88E]={d="l"},
+ [0x2F88F]={d="l"},
+ [0x2F890]={d="l"},
+ [0x2F891]={d="l"},
+ [0x2F892]={d="l"},
+ [0x2F893]={d="l"},
+ [0x2F894]={d="l"},
+ [0x2F895]={d="l"},
+ [0x2F896]={d="l"},
+ [0x2F897]={d="l"},
+ [0x2F898]={d="l"},
+ [0x2F899]={d="l"},
+ [0x2F89A]={d="l"},
+ [0x2F89B]={d="l"},
+ [0x2F89C]={d="l"},
+ [0x2F89D]={d="l"},
+ [0x2F89E]={d="l"},
+ [0x2F89F]={d="l"},
+ [0x2F8A0]={d="l"},
+ [0x2F8A1]={d="l"},
+ [0x2F8A2]={d="l"},
+ [0x2F8A3]={d="l"},
+ [0x2F8A4]={d="l"},
+ [0x2F8A5]={d="l"},
+ [0x2F8A6]={d="l"},
+ [0x2F8A7]={d="l"},
+ [0x2F8A8]={d="l"},
+ [0x2F8A9]={d="l"},
+ [0x2F8AA]={d="l"},
+ [0x2F8AB]={d="l"},
+ [0x2F8AC]={d="l"},
+ [0x2F8AD]={d="l"},
+ [0x2F8AE]={d="l"},
+ [0x2F8AF]={d="l"},
+ [0x2F8B0]={d="l"},
+ [0x2F8B1]={d="l"},
+ [0x2F8B2]={d="l"},
+ [0x2F8B3]={d="l"},
+ [0x2F8B4]={d="l"},
+ [0x2F8B5]={d="l"},
+ [0x2F8B6]={d="l"},
+ [0x2F8B7]={d="l"},
+ [0x2F8B8]={d="l"},
+ [0x2F8B9]={d="l"},
+ [0x2F8BA]={d="l"},
+ [0x2F8BB]={d="l"},
+ [0x2F8BC]={d="l"},
+ [0x2F8BD]={d="l"},
+ [0x2F8BE]={d="l"},
+ [0x2F8BF]={d="l"},
+ [0x2F8C0]={d="l"},
+ [0x2F8C1]={d="l"},
+ [0x2F8C2]={d="l"},
+ [0x2F8C3]={d="l"},
+ [0x2F8C4]={d="l"},
+ [0x2F8C5]={d="l"},
+ [0x2F8C6]={d="l"},
+ [0x2F8C7]={d="l"},
+ [0x2F8C8]={d="l"},
+ [0x2F8C9]={d="l"},
+ [0x2F8CA]={d="l"},
+ [0x2F8CB]={d="l"},
+ [0x2F8CC]={d="l"},
+ [0x2F8CD]={d="l"},
+ [0x2F8CE]={d="l"},
+ [0x2F8CF]={d="l"},
+ [0x2F8D0]={d="l"},
+ [0x2F8D1]={d="l"},
+ [0x2F8D2]={d="l"},
+ [0x2F8D3]={d="l"},
+ [0x2F8D4]={d="l"},
+ [0x2F8D5]={d="l"},
+ [0x2F8D6]={d="l"},
+ [0x2F8D7]={d="l"},
+ [0x2F8D8]={d="l"},
+ [0x2F8D9]={d="l"},
+ [0x2F8DA]={d="l"},
+ [0x2F8DB]={d="l"},
+ [0x2F8DC]={d="l"},
+ [0x2F8DD]={d="l"},
+ [0x2F8DE]={d="l"},
+ [0x2F8DF]={d="l"},
+ [0x2F8E0]={d="l"},
+ [0x2F8E1]={d="l"},
+ [0x2F8E2]={d="l"},
+ [0x2F8E3]={d="l"},
+ [0x2F8E4]={d="l"},
+ [0x2F8E5]={d="l"},
+ [0x2F8E6]={d="l"},
+ [0x2F8E7]={d="l"},
+ [0x2F8E8]={d="l"},
+ [0x2F8E9]={d="l"},
+ [0x2F8EA]={d="l"},
+ [0x2F8EB]={d="l"},
+ [0x2F8EC]={d="l"},
+ [0x2F8ED]={d="l"},
+ [0x2F8EE]={d="l"},
+ [0x2F8EF]={d="l"},
+ [0x2F8F0]={d="l"},
+ [0x2F8F1]={d="l"},
+ [0x2F8F2]={d="l"},
+ [0x2F8F3]={d="l"},
+ [0x2F8F4]={d="l"},
+ [0x2F8F5]={d="l"},
+ [0x2F8F6]={d="l"},
+ [0x2F8F7]={d="l"},
+ [0x2F8F8]={d="l"},
+ [0x2F8F9]={d="l"},
+ [0x2F8FA]={d="l"},
+ [0x2F8FB]={d="l"},
+ [0x2F8FC]={d="l"},
+ [0x2F8FD]={d="l"},
+ [0x2F8FE]={d="l"},
+ [0x2F8FF]={d="l"},
+ [0x2F900]={d="l"},
+ [0x2F901]={d="l"},
+ [0x2F902]={d="l"},
+ [0x2F903]={d="l"},
+ [0x2F904]={d="l"},
+ [0x2F905]={d="l"},
+ [0x2F906]={d="l"},
+ [0x2F907]={d="l"},
+ [0x2F908]={d="l"},
+ [0x2F909]={d="l"},
+ [0x2F90A]={d="l"},
+ [0x2F90B]={d="l"},
+ [0x2F90C]={d="l"},
+ [0x2F90D]={d="l"},
+ [0x2F90E]={d="l"},
+ [0x2F90F]={d="l"},
+ [0x2F910]={d="l"},
+ [0x2F911]={d="l"},
+ [0x2F912]={d="l"},
+ [0x2F913]={d="l"},
+ [0x2F914]={d="l"},
+ [0x2F915]={d="l"},
+ [0x2F916]={d="l"},
+ [0x2F917]={d="l"},
+ [0x2F918]={d="l"},
+ [0x2F919]={d="l"},
+ [0x2F91A]={d="l"},
+ [0x2F91B]={d="l"},
+ [0x2F91C]={d="l"},
+ [0x2F91D]={d="l"},
+ [0x2F91E]={d="l"},
+ [0x2F91F]={d="l"},
+ [0x2F920]={d="l"},
+ [0x2F921]={d="l"},
+ [0x2F922]={d="l"},
+ [0x2F923]={d="l"},
+ [0x2F924]={d="l"},
+ [0x2F925]={d="l"},
+ [0x2F926]={d="l"},
+ [0x2F927]={d="l"},
+ [0x2F928]={d="l"},
+ [0x2F929]={d="l"},
+ [0x2F92A]={d="l"},
+ [0x2F92B]={d="l"},
+ [0x2F92C]={d="l"},
+ [0x2F92D]={d="l"},
+ [0x2F92E]={d="l"},
+ [0x2F92F]={d="l"},
+ [0x2F930]={d="l"},
+ [0x2F931]={d="l"},
+ [0x2F932]={d="l"},
+ [0x2F933]={d="l"},
+ [0x2F934]={d="l"},
+ [0x2F935]={d="l"},
+ [0x2F936]={d="l"},
+ [0x2F937]={d="l"},
+ [0x2F938]={d="l"},
+ [0x2F939]={d="l"},
+ [0x2F93A]={d="l"},
+ [0x2F93B]={d="l"},
+ [0x2F93C]={d="l"},
+ [0x2F93D]={d="l"},
+ [0x2F93E]={d="l"},
+ [0x2F93F]={d="l"},
+ [0x2F940]={d="l"},
+ [0x2F941]={d="l"},
+ [0x2F942]={d="l"},
+ [0x2F943]={d="l"},
+ [0x2F944]={d="l"},
+ [0x2F945]={d="l"},
+ [0x2F946]={d="l"},
+ [0x2F947]={d="l"},
+ [0x2F948]={d="l"},
+ [0x2F949]={d="l"},
+ [0x2F94A]={d="l"},
+ [0x2F94B]={d="l"},
+ [0x2F94C]={d="l"},
+ [0x2F94D]={d="l"},
+ [0x2F94E]={d="l"},
+ [0x2F94F]={d="l"},
+ [0x2F950]={d="l"},
+ [0x2F951]={d="l"},
+ [0x2F952]={d="l"},
+ [0x2F953]={d="l"},
+ [0x2F954]={d="l"},
+ [0x2F955]={d="l"},
+ [0x2F956]={d="l"},
+ [0x2F957]={d="l"},
+ [0x2F958]={d="l"},
+ [0x2F959]={d="l"},
+ [0x2F95A]={d="l"},
+ [0x2F95B]={d="l"},
+ [0x2F95C]={d="l"},
+ [0x2F95D]={d="l"},
+ [0x2F95E]={d="l"},
+ [0x2F95F]={d="l"},
+ [0x2F960]={d="l"},
+ [0x2F961]={d="l"},
+ [0x2F962]={d="l"},
+ [0x2F963]={d="l"},
+ [0x2F964]={d="l"},
+ [0x2F965]={d="l"},
+ [0x2F966]={d="l"},
+ [0x2F967]={d="l"},
+ [0x2F968]={d="l"},
+ [0x2F969]={d="l"},
+ [0x2F96A]={d="l"},
+ [0x2F96B]={d="l"},
+ [0x2F96C]={d="l"},
+ [0x2F96D]={d="l"},
+ [0x2F96E]={d="l"},
+ [0x2F96F]={d="l"},
+ [0x2F970]={d="l"},
+ [0x2F971]={d="l"},
+ [0x2F972]={d="l"},
+ [0x2F973]={d="l"},
+ [0x2F974]={d="l"},
+ [0x2F975]={d="l"},
+ [0x2F976]={d="l"},
+ [0x2F977]={d="l"},
+ [0x2F978]={d="l"},
+ [0x2F979]={d="l"},
+ [0x2F97A]={d="l"},
+ [0x2F97B]={d="l"},
+ [0x2F97C]={d="l"},
+ [0x2F97D]={d="l"},
+ [0x2F97E]={d="l"},
+ [0x2F97F]={d="l"},
+ [0x2F980]={d="l"},
+ [0x2F981]={d="l"},
+ [0x2F982]={d="l"},
+ [0x2F983]={d="l"},
+ [0x2F984]={d="l"},
+ [0x2F985]={d="l"},
+ [0x2F986]={d="l"},
+ [0x2F987]={d="l"},
+ [0x2F988]={d="l"},
+ [0x2F989]={d="l"},
+ [0x2F98A]={d="l"},
+ [0x2F98B]={d="l"},
+ [0x2F98C]={d="l"},
+ [0x2F98D]={d="l"},
+ [0x2F98E]={d="l"},
+ [0x2F98F]={d="l"},
+ [0x2F990]={d="l"},
+ [0x2F991]={d="l"},
+ [0x2F992]={d="l"},
+ [0x2F993]={d="l"},
+ [0x2F994]={d="l"},
+ [0x2F995]={d="l"},
+ [0x2F996]={d="l"},
+ [0x2F997]={d="l"},
+ [0x2F998]={d="l"},
+ [0x2F999]={d="l"},
+ [0x2F99A]={d="l"},
+ [0x2F99B]={d="l"},
+ [0x2F99C]={d="l"},
+ [0x2F99D]={d="l"},
+ [0x2F99E]={d="l"},
+ [0x2F99F]={d="l"},
+ [0x2F9A0]={d="l"},
+ [0x2F9A1]={d="l"},
+ [0x2F9A2]={d="l"},
+ [0x2F9A3]={d="l"},
+ [0x2F9A4]={d="l"},
+ [0x2F9A5]={d="l"},
+ [0x2F9A6]={d="l"},
+ [0x2F9A7]={d="l"},
+ [0x2F9A8]={d="l"},
+ [0x2F9A9]={d="l"},
+ [0x2F9AA]={d="l"},
+ [0x2F9AB]={d="l"},
+ [0x2F9AC]={d="l"},
+ [0x2F9AD]={d="l"},
+ [0x2F9AE]={d="l"},
+ [0x2F9AF]={d="l"},
+ [0x2F9B0]={d="l"},
+ [0x2F9B1]={d="l"},
+ [0x2F9B2]={d="l"},
+ [0x2F9B3]={d="l"},
+ [0x2F9B4]={d="l"},
+ [0x2F9B5]={d="l"},
+ [0x2F9B6]={d="l"},
+ [0x2F9B7]={d="l"},
+ [0x2F9B8]={d="l"},
+ [0x2F9B9]={d="l"},
+ [0x2F9BA]={d="l"},
+ [0x2F9BB]={d="l"},
+ [0x2F9BC]={d="l"},
+ [0x2F9BD]={d="l"},
+ [0x2F9BE]={d="l"},
+ [0x2F9BF]={d="l"},
+ [0x2F9C0]={d="l"},
+ [0x2F9C1]={d="l"},
+ [0x2F9C2]={d="l"},
+ [0x2F9C3]={d="l"},
+ [0x2F9C4]={d="l"},
+ [0x2F9C5]={d="l"},
+ [0x2F9C6]={d="l"},
+ [0x2F9C7]={d="l"},
+ [0x2F9C8]={d="l"},
+ [0x2F9C9]={d="l"},
+ [0x2F9CA]={d="l"},
+ [0x2F9CB]={d="l"},
+ [0x2F9CC]={d="l"},
+ [0x2F9CD]={d="l"},
+ [0x2F9CE]={d="l"},
+ [0x2F9CF]={d="l"},
+ [0x2F9D0]={d="l"},
+ [0x2F9D1]={d="l"},
+ [0x2F9D2]={d="l"},
+ [0x2F9D3]={d="l"},
+ [0x2F9D4]={d="l"},
+ [0x2F9D5]={d="l"},
+ [0x2F9D6]={d="l"},
+ [0x2F9D7]={d="l"},
+ [0x2F9D8]={d="l"},
+ [0x2F9D9]={d="l"},
+ [0x2F9DA]={d="l"},
+ [0x2F9DB]={d="l"},
+ [0x2F9DC]={d="l"},
+ [0x2F9DD]={d="l"},
+ [0x2F9DE]={d="l"},
+ [0x2F9DF]={d="l"},
+ [0x2F9E0]={d="l"},
+ [0x2F9E1]={d="l"},
+ [0x2F9E2]={d="l"},
+ [0x2F9E3]={d="l"},
+ [0x2F9E4]={d="l"},
+ [0x2F9E5]={d="l"},
+ [0x2F9E6]={d="l"},
+ [0x2F9E7]={d="l"},
+ [0x2F9E8]={d="l"},
+ [0x2F9E9]={d="l"},
+ [0x2F9EA]={d="l"},
+ [0x2F9EB]={d="l"},
+ [0x2F9EC]={d="l"},
+ [0x2F9ED]={d="l"},
+ [0x2F9EE]={d="l"},
+ [0x2F9EF]={d="l"},
+ [0x2F9F0]={d="l"},
+ [0x2F9F1]={d="l"},
+ [0x2F9F2]={d="l"},
+ [0x2F9F3]={d="l"},
+ [0x2F9F4]={d="l"},
+ [0x2F9F5]={d="l"},
+ [0x2F9F6]={d="l"},
+ [0x2F9F7]={d="l"},
+ [0x2F9F8]={d="l"},
+ [0x2F9F9]={d="l"},
+ [0x2F9FA]={d="l"},
+ [0x2F9FB]={d="l"},
+ [0x2F9FC]={d="l"},
+ [0x2F9FD]={d="l"},
+ [0x2F9FE]={d="l"},
+ [0x2F9FF]={d="l"},
+ [0x2FA00]={d="l"},
+ [0x2FA01]={d="l"},
+ [0x2FA02]={d="l"},
+ [0x2FA03]={d="l"},
+ [0x2FA04]={d="l"},
+ [0x2FA05]={d="l"},
+ [0x2FA06]={d="l"},
+ [0x2FA07]={d="l"},
+ [0x2FA08]={d="l"},
+ [0x2FA09]={d="l"},
+ [0x2FA0A]={d="l"},
+ [0x2FA0B]={d="l"},
+ [0x2FA0C]={d="l"},
+ [0x2FA0D]={d="l"},
+ [0x2FA0E]={d="l"},
+ [0x2FA0F]={d="l"},
+ [0x2FA10]={d="l"},
+ [0x2FA11]={d="l"},
+ [0x2FA12]={d="l"},
+ [0x2FA13]={d="l"},
+ [0x2FA14]={d="l"},
+ [0x2FA15]={d="l"},
+ [0x2FA16]={d="l"},
+ [0x2FA17]={d="l"},
+ [0x2FA18]={d="l"},
+ [0x2FA19]={d="l"},
+ [0x2FA1A]={d="l"},
+ [0x2FA1B]={d="l"},
+ [0x2FA1C]={d="l"},
+ [0x2FA1D]={d="l"},
+ [0xE0001]={d="bn"},
+ [0xE0020]={d="bn"},
+ [0xE0021]={d="bn"},
+ [0xE0022]={d="bn"},
+ [0xE0023]={d="bn"},
+ [0xE0024]={d="bn"},
+ [0xE0025]={d="bn"},
+ [0xE0026]={d="bn"},
+ [0xE0027]={d="bn"},
+ [0xE0028]={d="bn"},
+ [0xE0029]={d="bn"},
+ [0xE002A]={d="bn"},
+ [0xE002B]={d="bn"},
+ [0xE002C]={d="bn"},
+ [0xE002D]={d="bn"},
+ [0xE002E]={d="bn"},
+ [0xE002F]={d="bn"},
+ [0xE0030]={d="bn"},
+ [0xE0031]={d="bn"},
+ [0xE0032]={d="bn"},
+ [0xE0033]={d="bn"},
+ [0xE0034]={d="bn"},
+ [0xE0035]={d="bn"},
+ [0xE0036]={d="bn"},
+ [0xE0037]={d="bn"},
+ [0xE0038]={d="bn"},
+ [0xE0039]={d="bn"},
+ [0xE003A]={d="bn"},
+ [0xE003B]={d="bn"},
+ [0xE003C]={d="bn"},
+ [0xE003D]={d="bn"},
+ [0xE003E]={d="bn"},
+ [0xE003F]={d="bn"},
+ [0xE0040]={d="bn"},
+ [0xE0041]={d="bn"},
+ [0xE0042]={d="bn"},
+ [0xE0043]={d="bn"},
+ [0xE0044]={d="bn"},
+ [0xE0045]={d="bn"},
+ [0xE0046]={d="bn"},
+ [0xE0047]={d="bn"},
+ [0xE0048]={d="bn"},
+ [0xE0049]={d="bn"},
+ [0xE004A]={d="bn"},
+ [0xE004B]={d="bn"},
+ [0xE004C]={d="bn"},
+ [0xE004D]={d="bn"},
+ [0xE004E]={d="bn"},
+ [0xE004F]={d="bn"},
+ [0xE0050]={d="bn"},
+ [0xE0051]={d="bn"},
+ [0xE0052]={d="bn"},
+ [0xE0053]={d="bn"},
+ [0xE0054]={d="bn"},
+ [0xE0055]={d="bn"},
+ [0xE0056]={d="bn"},
+ [0xE0057]={d="bn"},
+ [0xE0058]={d="bn"},
+ [0xE0059]={d="bn"},
+ [0xE005A]={d="bn"},
+ [0xE005B]={d="bn"},
+ [0xE005C]={d="bn"},
+ [0xE005D]={d="bn"},
+ [0xE005E]={d="bn"},
+ [0xE005F]={d="bn"},
+ [0xE0060]={d="bn"},
+ [0xE0061]={d="bn"},
+ [0xE0062]={d="bn"},
+ [0xE0063]={d="bn"},
+ [0xE0064]={d="bn"},
+ [0xE0065]={d="bn"},
+ [0xE0066]={d="bn"},
+ [0xE0067]={d="bn"},
+ [0xE0068]={d="bn"},
+ [0xE0069]={d="bn"},
+ [0xE006A]={d="bn"},
+ [0xE006B]={d="bn"},
+ [0xE006C]={d="bn"},
+ [0xE006D]={d="bn"},
+ [0xE006E]={d="bn"},
+ [0xE006F]={d="bn"},
+ [0xE0070]={d="bn"},
+ [0xE0071]={d="bn"},
+ [0xE0072]={d="bn"},
+ [0xE0073]={d="bn"},
+ [0xE0074]={d="bn"},
+ [0xE0075]={d="bn"},
+ [0xE0076]={d="bn"},
+ [0xE0077]={d="bn"},
+ [0xE0078]={d="bn"},
+ [0xE0079]={d="bn"},
+ [0xE007A]={d="bn"},
+ [0xE007B]={d="bn"},
+ [0xE007C]={d="bn"},
+ [0xE007D]={d="bn"},
+ [0xE007E]={d="bn"},
+ [0xE007F]={d="bn"},
+ [0xE0100]={},
+}
diff --git a/Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua.lua b/Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua.lua
new file mode 100644
index 00000000000..e8e3cea0b76
--- /dev/null
+++ b/Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua.lua
@@ -0,0 +1,1170 @@
+--[[
+ version = 0.1, 2025-01-19
+ author = Hans Hagen, PRAGMA-ADE, Hasselt NL, Udi Fogiel
+ copyright = PRAGMA ADE / ConTeXt Development Team
+ license = GPL v2.0
+ comment = Unicode bidi (sort of)
+
+
+This is a follow up on typo-uda which itself is a follow up on t-bidi by Khaled Hosny which
+in turn is based on minibidi.c from Arabeyes. This is a further optimizations, as well as
+an update on some recent unicode bidi developments. There is (and will) also be more control
+added. As a consequence this module is somewhat slower than its precursor which itself is
+slower than the one-pass bidi handler. This is also a playground and I might add some plugin
+support. However, in the meantime performance got a bit better and this third variant is again
+some 10% faster than the second variant.
+
+todo (cf html):
+
+* normal The element does not offer a additional level of embedding with respect to the bidirectional algorithm. For inline elements implicit reordering works across element boundaries.
+* embed If the element is inline, this value opens an additional level of embedding with respect to the bidirectional algorithm. The direction of this embedding level is given by the direction property.
+* bidi-override For inline elements this creates an override. For block container elements this creates an override for inline-level descendants not within another block container element. This means that inside the element, reordering is strictly in sequence according to the direction property; the implicit part of the bidirectional algorithm is ignored.
+* isolate This keyword indicates that the element's container directionality should be calculated without considering the content of this element. The element is therefore isolated from its siblings. When applying its bidirectional-resolution algorithm, its container element treats it as one or several U+FFFC Object Replacement Character, i.e. like an image.
+* isolate-override This keyword applies the isolation behavior of the isolate keyword to the surrounding content and the override behavior o f the bidi-override keyword to the inner content.
+* plaintext This keyword makes the elements directionality calculated without considering its parent bidirectional state or the value of the direction property. The directionality is calculated using the P2 and P3 rules of the Unicode Bidirectional Algorithm.
+ This value allows to display data which has already formatted using a tool following the Unicode Bidirectional Algorithm.
+
+ todo: check for introduced errors
+ todo: reuse list, we have size, so we can just change values (and auto allocate when not there)
+ todo: reuse the stack
+ todo: no need for a max check
+ todo: collapse bound similar ranges (not ok yet)
+ todo: combine some sweeps
+ todo: removing is not needed when we inject at the same spot (only chnage the dir property)
+ todo: isolated runs (isolating runs are similar to bidi=local in the basic analyzer)
+
+ todo: check unicode addenda (from the draft):
+
+Added support for canonical equivalents in BD16.
+Changed logic in N0 to not check forwards for context in the case of enclosed text opposite the embedding direction.
+Major extension of the algorithm to allow for the implementation of directional isolates and the introduction of new isolate-related values to the Bidi_Class property.
+Adds BD8, BD9, BD10, BD11, BD12, BD13, BD14, BD15, and BD16, Sections 2.4 and 2.5, and Rules X5a, X5b, X5c and X6a.
+Extensively revises Section 3.3.2, Explicit Levels and Directions and its existing X rules to formalize the algorithm for matching a PDF with the embedding or override initiator whose scope it terminates.
+Moves Rules X9 and X10 into a separate new Section 3.3.3, Preparations for Implicit Processing.
+Modifies Rule X10 to make the isolating run sequence the unit to which subsequent rules are applied.
+Modifies Rule W1 to change an NSM preceded by an isolate initiator or PDI into ON.
+Adds Rule N0 and makes other changes to Section 3.3.5, Resolving Neutral and Isolate Formatting Types to resolve bracket pairs to the same level.
+
+This file is a derivative of typo-duc.lua from the ConTeXt project.
+
+]]--
+
+local concat = table.concat
+local utfchar = utf.char
+local setmetatable = setmetatable
+local formatters = string.formatters
+
+local characters = characters or { }
+local data = require("unibidi-lua-data.lua")
+characters.directions = { }
+
+table.setmetatableindex(characters.directions,function(t,k)
+ local d = data[k]
+ if d then
+ local v = d.d
+ if v then
+ t[k] = v
+ return v
+ end
+ end
+ t[k] = false -- maybe 'l'
+ return false
+end)
+
+characters.mirrors = { }
+
+table.setmetatableindex(characters.mirrors,function(t,k)
+ local d = data[k]
+ if d then
+ local v = d.m
+ if v then
+ t[k] = v
+ return v
+ end
+ end
+ t[k] = false
+ return false
+end)
+
+characters.textclasses = { }
+
+table.setmetatableindex(characters.textclasses,function(t,k)
+ local d = data[k]
+ if d then
+ local v = d.tc
+ if v then
+ t[k] = v
+ return v
+ end
+ end
+ t[k] = false
+ return false
+end)
+
+local directiondata = characters.directions
+local mirrordata = characters.mirrors
+local textclassdata = characters.textclasses
+
+local getnext = node.direct.getnext
+local getprev = node.direct.getprev
+local getid = node.direct.getid
+local getsubtype = node.direct.getsubtype
+local getchar = node.direct.getchar
+local getattr = node.direct.get_attribute
+local getdirection = node.direct.getdirection
+
+local setchar = node.direct.setchar
+local setdirection = node.direct.setdirection
+
+local properties = node.direct.get_properties_table()
+
+local remove_node = node.direct.remove
+local insertnodeafter = node.direct.insert_after
+local insertnodebefore = node.direct.insert_before
+
+local getfont = node.direct.getfont
+
+local todirect = node.direct.todirect
+local tonode = node.direct.tonode
+
+local startofpar = function(n)
+ local s = getsubtype(n)
+ return s == 0 or s == 2 or s == 3
+ end
+
+local new_direction = function (dir,swap)
+ local t = node.direct.new("dir")
+ if not dir then
+ -- just a l2r start node
+ elseif swap then
+ setdirection(t,dir,true)
+ else
+ setdirection(t,dir,false)
+ end
+ return t
+ end
+
+local nodecodes = { }
+
+local glyph_code = node.id("glyph")
+local glue_code = node.id("glue")
+local hlist_code = node.id("hlist")
+local vlist_code = node.id("vlist")
+local math_code = node.id("math")
+local dir_code = node.id("dir")
+local par_code = node.id("local_par")
+local penalty_code = node.id("penalty")
+
+local parfillskip_code = 15
+local parfillleftskip_code = nil -- LuaMeTaTex only
+
+local lefttoright_code = 0
+local righttoleft_code = 1
+
+local maximum_stack = 0xFF
+
+local a_directions = luatexbase.new_attribute('directions')
+
+local remove_controls = true
+----- analyze_fences = true
+
+local report_directions = function(...) end
+
+local trace_directions = false
+local trace_details = false
+local trace_list = false
+
+-- strong (old):
+--
+-- l : left to right
+-- r : right to left
+-- lro : left to right override
+-- rlo : left to left override
+-- lre : left to right embedding
+-- rle : left to left embedding
+-- al : right to legt arabic (esp punctuation issues)
+--
+-- weak:
+--
+-- en : english number
+-- es : english number separator
+-- et : english number terminator
+-- an : arabic number
+-- cs : common number separator
+-- nsm : nonspacing mark
+-- bn : boundary neutral
+--
+-- neutral:
+--
+-- b : paragraph separator
+-- s : segment separator
+-- ws : whitespace
+-- on : other neutrals
+--
+-- interesting: this is indeed better (and more what we expect i.e. we already use this split
+-- in the old original (also these isolates)
+--
+-- strong (new):
+--
+-- l : left to right
+-- r : right to left
+-- al : right to left arabic (esp punctuation issues)
+--
+-- explicit: (new)
+--
+-- lro : left to right override
+-- rlo : left to left override
+-- lre : left to right embedding
+-- rle : left to left embedding
+-- pdf : pop dir format
+-- lri : left to right isolate
+-- rli : left to left isolate
+-- fsi : first string isolate
+-- pdi : pop directional isolate
+
+local whitespace = {
+ lre = true,
+ rle = true,
+ lro = true,
+ rlo = true,
+ pdf = true,
+ bn = true,
+ ws = true,
+}
+
+local b_s_ws_on = {
+ b = true,
+ s = true,
+ ws = true,
+ on = true
+}
+
+-- tracing
+
+local function show_list(list,size,what)
+ local what = what or "direction"
+ local joiner = utfchar(0x200C)
+ local result = { }
+ for i=1,size do
+ local entry = list[i]
+ local character = entry.char
+ local direction = entry[what]
+ if character == 0xFFFC then
+ local first = entry.id
+ local last = entry.last
+ local skip = entry.skip
+ if last then
+ result[i] = formatters["%-3s:%s %s..%s (%i)"](direction,joiner,nodecodes[first],nodecodes[last],skip or 0)
+ else
+ result[i] = formatters["%-3s:%s %s (%i)"](direction,joiner,nodecodes[first],skip or 0)
+ end
+ elseif character >= 0x202A and character <= 0x202C then
+ result[i] = formatters["%-3s:%s %U"](direction,joiner,character)
+ else
+ result[i] = formatters["%-3s:%s %c %U"](direction,joiner,character,character)
+ end
+ end
+ return concat(result,joiner .. " | " .. joiner)
+end
+
+-- preparation
+
+local function show_done(list,size)
+ local joiner = utfchar(0x200C)
+ local result = { }
+ local format = formatters["<%s>"]
+ for i=1,size do
+ local entry = list[i]
+ local character = entry.char
+ local begindir = entry.begindir
+ local enddir = entry.enddir
+ if begindir then
+ result[#result+1] = format(begindir)
+ end
+ if entry.remove then
+ -- continue
+ elseif character == 0xFFFC then
+ result[#result+1] = format("?")
+ elseif character == 0x0020 then
+ result[#result+1] = format(" ")
+ elseif character >= 0x202A and character <= 0x202C then
+ result[#result+1] = format(entry.original)
+ else
+ result[#result+1] = utfchar(character)
+ end
+ if enddir then
+ result[#result+1] = format(enddir)
+ end
+ end
+ return concat(result,joiner)
+end
+
+-- keeping the list and overwriting doesn't save much runtime, only a few percent
+-- char is only used for mirror, so in fact we can as well only store it for
+-- glyphs only
+--
+-- tracking what direction is used and skipping tests is not faster (extra kind of
+-- compensates gain)
+
+local mt_space = { __index = { char = 0x0020, direction = "ws", original = "ws", level = 0, skip = 0 } }
+local mt_lre = { __index = { char = 0x202A, direction = "lre", original = "lre", level = 0, skip = 0 } }
+local mt_rle = { __index = { char = 0x202B, direction = "rle", original = "rle", level = 0, skip = 0 } }
+local mt_pdf = { __index = { char = 0x202C, direction = "pdf", original = "pdf", level = 0, skip = 0 } }
+local mt_object = { __index = { char = 0xFFFC, direction = "on", original = "on", level = 0, skip = 0 } }
+
+local stack = table.setmetatableindex("table") -- shared
+local list = { } -- shared
+
+local function build_list(head,where)
+ -- P1
+ local current = head
+ local size = 0
+ while current do
+ size = size + 1
+ local id = getid(current)
+ local p = properties[current]
+ if p and p.directions then
+ -- tricky as dirs can be injected in between
+ local skip = 0
+ local last = id
+ current = getnext(current)
+ while current do
+ local id = getid(current)
+ local p = properties[current]
+ if p and p.directions then
+ skip = skip + 1
+ last = id
+ current = getnext(current)
+ else
+ break
+ end
+ end
+ if id == last then -- the start id
+ list[size] = setmetatable({ skip = skip, id = id },mt_object)
+ else
+ list[size] = setmetatable({ skip = skip, id = id, last = last },mt_object)
+ end
+ elseif id == glyph_code then
+ local chr = getchar(current)
+ local dir = directiondata[chr]
+ -- could also be a metatable
+ list[size] = { char = chr, direction = dir, original = dir, level = 0 }
+ current = getnext(current)
+ -- if not list[dir] then list[dir] = true end -- not faster when we check for usage
+ elseif id == glue_code then -- and how about kern
+ list[size] = setmetatable({ },mt_space)
+ current = getnext(current)
+ elseif id == dir_code then
+ local dir, pop = getdirection(current)
+ if dir == lefttoright_code then
+ list[size] = setmetatable({ },pop and mt_pdf or mt_lre)
+ elseif dir == righttoleft_code then
+ list[size] = setmetatable({ },pop and mt_pdf or mt_rle)
+ else
+ list[size] = setmetatable({ id = id },mt_object)
+ end
+ current = getnext(current)
+ elseif id == math_code then
+ local skip = 0
+ current = getnext(current)
+ while getid(current) ~= math_code do
+ skip = skip + 1
+ current = getnext(current)
+ end
+ skip = skip + 1
+ current = getnext(current)
+ list[size] = setmetatable({ id = id, skip = skip },mt_object)
+ else -- disc_code: we assume that these are the same as the surrounding
+ local skip = 0
+ local last = id
+ current = getnext(current)
+ while n do
+ local id = getid(current)
+ if id ~= glyph_code and id ~= glue_code and id ~= dir_code then
+ skip = skip + 1
+ last = id
+ current = getnext(current)
+ else
+ break
+ end
+ end
+ if id == last then -- the start id
+ list[size] = setmetatable({ id = id, skip = skip },mt_object)
+ else
+ list[size] = setmetatable({ id = id, skip = skip, last = last },mt_object)
+ end
+ end
+ end
+ return list, size
+end
+
+-- new
+
+-- we could support ( ] and [ ) and such ...
+
+-- ש ) ל ( א 0-0
+-- ש ( ל ] א 0-0
+-- ש ( ל ) א 2-4
+-- ש ( ל [ א ) כ ] 2-6
+-- ש ( ל ] א ) כ 2-6
+-- ש ( ל ) א ) כ 2-4
+-- ש ( ל ( א ) כ 4-6
+-- ש ( ל ( א ) כ ) 2-8,4-6
+-- ש ( ל [ א ] כ ) 2-8,4-6
+
+local fencestack = table.setmetatableindex("table")
+
+local function resolve_fences(list,size,start,limit)
+ -- N0: funny effects, not always better, so it's an option
+ local nofstack = 0
+ for i=start,limit do
+ local entry = list[i]
+ if entry.direction == "on" then
+ local char = entry.char
+ local mirror = mirrordata[char]
+ if mirror then
+ local class = textclassdata[char]
+ entry.mirror = mirror
+ entry.class = class
+ if class == "open" then
+ nofstack = nofstack + 1
+ local stacktop = fencestack[nofstack]
+ stacktop[1] = mirror
+ stacktop[2] = i
+ elseif nofstack == 0 then
+ -- skip
+ elseif class == "close" then
+ while nofstack > 0 do
+ local stacktop = fencestack[nofstack]
+ if stacktop[1] == char then
+ local open = stacktop[2]
+ local close = i
+ list[open ].paired = close
+ list[close].paired = open
+ break
+ else
+ -- do we mirror or not
+ end
+ nofstack = nofstack - 1
+ end
+ end
+ end
+ end
+ end
+end
+
+-- local function test_fences(str)
+-- local list = { }
+-- for s in string.gmatch(str,".") do
+-- local b = utf.byte(s)
+-- list[#list+1] = { c = s, char = b, direction = directiondata[b] }
+-- end
+-- resolve_fences(list,#list,1,#size)
+-- inspect(list)
+-- end
+--
+-- test_fences("a(b)c(d)e(f(g)h)i")
+-- test_fences("a(b[c)d]")
+
+-- the action
+
+local function get_baselevel(head,list,size,direction)
+ if direction == lefttoright_code or direction == righttoleft_code then
+ return direction, true
+ elseif getid(head) == par_code and startofpar(head) then
+ direction = getdirection(head)
+ if direction == lefttoright_code or direction == righttoleft_code then
+ return direction, true
+ end
+ end
+ -- P2, P3
+ for i=1,size do
+ local entry = list[i]
+ local direction = entry.direction
+ if direction == "r" or direction == "al" then -- and an ?
+ return righttoleft_code, true
+ elseif direction == "l" then
+ return lefttoright_code, true
+ end
+ end
+ return lefttoright_code, false
+end
+
+local function resolve_explicit(list,size,baselevel)
+-- if list.rle or list.lre or list.rlo or list.lro then
+ -- X1
+ local level = baselevel
+ local override = "on"
+ local nofstack = 0
+ for i=1,size do
+ local entry = list[i]
+ local direction = entry.direction
+ -- X2
+ if direction == "rle" then
+ if nofstack < maximum_stack then
+ nofstack = nofstack + 1
+ local stacktop = stack[nofstack]
+ stacktop[1] = level
+ stacktop[2] = override
+ level = level + (level % 2 == 1 and 2 or 1) -- least_greater_odd(level)
+ override = "on"
+ entry.level = level
+ entry.direction = "bn"
+ entry.remove = true
+ elseif trace_directions then
+ report_directions("stack overflow at position %a with direction %a",i,direction)
+ end
+ -- X3
+ elseif direction == "lre" then
+ if nofstack < maximum_stack then
+ nofstack = nofstack + 1
+ local stacktop = stack[nofstack]
+ stacktop[1] = level
+ stacktop[2] = override
+ level = level + (level % 2 == 1 and 1 or 2) -- least_greater_even(level)
+ override = "on"
+ entry.level = level
+ entry.direction = "bn"
+ entry.remove = true
+ elseif trace_directions then
+ report_directions("stack overflow at position %a with direction %a",i,direction)
+ end
+ -- X4
+ elseif direction == "rlo" then
+ if nofstack < maximum_stack then
+ nofstack = nofstack + 1
+ local stacktop = stack[nofstack]
+ stacktop[1] = level
+ stacktop[2] = override
+ level = level + (level % 2 == 1 and 2 or 1) -- least_greater_odd(level)
+ override = "r"
+ entry.level = level
+ entry.direction = "bn"
+ entry.remove = true
+ elseif trace_directions then
+ report_directions("stack overflow at position %a with direction %a",i,direction)
+ end
+ -- X5
+ elseif direction == "lro" then
+ if nofstack < maximum_stack then
+ nofstack = nofstack + 1
+ local stacktop = stack[nofstack]
+ stacktop[1] = level
+ stacktop[2] = override
+ level = level + (level % 2 == 1 and 1 or 2) -- least_greater_even(level)
+ override = "l"
+ entry.level = level
+ entry.direction = "bn"
+ entry.remove = true
+ elseif trace_directions then
+ report_directions("stack overflow at position %a with direction %a",i,direction)
+ end
+ -- X7
+ elseif direction == "pdf" then
+ if nofstack > 0 then
+ local stacktop = stack[nofstack]
+ level = stacktop[1]
+ override = stacktop[2]
+ nofstack = nofstack - 1
+ entry.level = level
+ entry.direction = "bn"
+ entry.remove = true
+ elseif trace_directions then
+ report_directions("stack underflow at position %a with direction %a",
+ i, direction)
+ else
+ report_directions("stack underflow at position %a with direction %a: %s",
+ i, direction, show_list(list,size))
+ end
+ -- X6
+ else
+ entry.level = level
+ if override ~= "on" then
+ entry.direction = override
+ end
+ end
+ end
+ -- X8 (reset states and overrides after paragraph)
+end
+
+local function resolve_weak(list,size,start,limit,orderbefore,orderafter)
+ -- W1: non spacing marks get the direction of the previous character
+-- if list.nsm then
+ for i=start,limit do
+ local entry = list[i]
+ if entry.direction == "nsm" then
+ if i == start then
+ entry.direction = orderbefore
+ else
+ entry.direction = list[i-1].direction
+ end
+ end
+ end
+-- end
+ -- W2: mess with numbers and arabic
+-- if list.en then
+ for i=start,limit do
+ local entry = list[i]
+ if entry.direction == "en" then
+ for j=i-1,start,-1 do
+ local prev = list[j]
+ local direction = prev.direction
+ if direction == "al" then
+ entry.direction = "an"
+ break
+ elseif direction == "r" or direction == "l" then
+ break
+ end
+ end
+ end
+ end
+-- end
+ -- W3
+-- if list.al then
+ for i=start,limit do
+ local entry = list[i]
+ if entry.direction == "al" then
+ entry.direction = "r"
+ end
+ end
+-- end
+ -- W4: make separators number
+-- if list.es or list.cs then
+ -- skip
+ if false then
+ for i=start+1,limit-1 do
+ local entry = list[i]
+ local direction = entry.direction
+ if direction == "es" then
+ if list[i-1].direction == "en" and list[i+1].direction == "en" then
+ entry.direction = "en"
+ end
+ elseif direction == "cs" then
+ local prevdirection = list[i-1].direction
+ if prevdirection == "en" then
+ if list[i+1].direction == "en" then
+ entry.direction = "en"
+ end
+ elseif prevdirection == "an" and list[i+1].direction == "an" then
+ entry.direction = "an"
+ end
+ end
+ end
+ else -- only more efficient when we have es/cs
+ local runner = start + 2
+ if runner <= limit then
+ local before = list[start]
+ local current = list[start + 1]
+ local after = list[runner]
+ while after do
+ local direction = current.direction
+ if direction == "es" then
+ if before.direction == "en" and after.direction == "en" then
+ current.direction = "en"
+ end
+ elseif direction == "cs" then
+ local prevdirection = before.direction
+ if prevdirection == "en" then
+ if after.direction == "en" then
+ current.direction = "en"
+ end
+ elseif prevdirection == "an" and after.direction == "an" then
+ current.direction = "an"
+ end
+ end
+ before = current
+ current = after
+ after = list[runner]
+ runner = runner + 1
+ end
+ end
+ end
+-- end
+ -- W5
+-- if list.et then
+ local i = start
+ while i <= limit do
+ if list[i].direction == "et" then
+ local runstart = i
+ local runlimit = runstart
+ for i=runstart,limit do
+ if list[i].direction == "et" then
+ runlimit = i
+ else
+ break
+ end
+ end
+ local rundirection = runstart == start and sor or list[runstart-1].direction
+ if rundirection ~= "en" then
+ rundirection = runlimit == limit and orderafter or list[runlimit+1].direction
+ end
+ if rundirection == "en" then
+ for j=runstart,runlimit do
+ list[j].direction = "en"
+ end
+ end
+ i = runlimit
+ end
+ i = i + 1
+ end
+-- end
+ -- W6
+-- if list.es or list.cs or list.et then
+ for i=start,limit do
+ local entry = list[i]
+ local direction = entry.direction
+ if direction == "es" or direction == "et" or direction == "cs" then
+ entry.direction = "on"
+ end
+ end
+-- end
+ -- W7
+ for i=start,limit do
+ local entry = list[i]
+ if entry.direction == "en" then
+ local prev_strong = orderbefore
+ for j=i-1,start,-1 do
+ local direction = list[j].direction
+ if direction == "l" or direction == "r" then
+ prev_strong = direction
+ break
+ end
+ end
+ if prev_strong == "l" then
+ entry.direction = "l"
+ end
+ end
+ end
+end
+
+local function resolve_neutral(list,size,start,limit,orderbefore,orderafter)
+ -- N1, N2
+ local i = start
+ while i <= limit do
+ local entry = list[i]
+ if b_s_ws_on[entry.direction] then
+ -- this needs checking
+ local leading_direction, trailing_direction, resolved_direction
+ local runstart = i
+ local runlimit = runstart
+-- for j=runstart,limit do
+ for j=runstart+1,limit do
+ if b_s_ws_on[list[j].direction] then
+-- runstart = j
+ runlimit = j
+ else
+ break
+ end
+ end
+ if runstart == start then
+ leading_direction = orderbefore
+ else
+ leading_direction = list[runstart-1].direction
+ if leading_direction == "en" or leading_direction == "an" then
+ leading_direction = "r"
+ end
+ end
+ if runlimit == limit then
+ trailing_direction = orderafter
+ else
+ trailing_direction = list[runlimit+1].direction
+ if trailing_direction == "en" or trailing_direction == "an" then
+ trailing_direction = "r"
+ end
+ end
+ if leading_direction == trailing_direction then
+ -- N1
+ resolved_direction = leading_direction
+ else
+ -- N2 / does the weird period
+ resolved_direction = entry.level % 2 == 1 and "r" or "l"
+ end
+ for j=runstart,runlimit do
+ list[j].direction = resolved_direction
+ end
+ i = runlimit
+ end
+ i = i + 1
+ end
+end
+
+local function resolve_implicit(list,size,start,limit,orderbefore,orderafter,baselevel)
+ for i=start,limit do
+ local entry = list[i]
+ local level = entry.level
+ local direction = entry.direction
+ if level % 2 ~= 1 then -- even
+ -- I1
+ if direction == "r" then
+ entry.level = level + 1
+ elseif direction == "an" or direction == "en" then
+ entry.level = level + 2
+ end
+ else
+ -- I2
+ if direction == "l" or direction == "en" or direction == "an" then
+ entry.level = level + 1
+ end
+ end
+ end
+end
+
+local function resolve_levels(list,size,baselevel,analyze_fences)
+ -- X10
+ local start = 1
+ while start < size do
+ local level = list[start].level
+ local limit = start + 1
+ while limit < size and list[limit].level == level do
+ limit = limit + 1
+ end
+ local prev_level = start == 1 and baselevel or list[start-1].level
+ local next_level = limit == size and baselevel or list[limit+1].level
+ local orderbefore = (level > prev_level and level or prev_level) % 2 == 1 and "r" or "l"
+ local orderafter = (level > next_level and level or next_level) % 2 == 1 and "r" or "l"
+ -- W1 .. W7
+ resolve_weak(list,size,start,limit,orderbefore,orderafter)
+ -- N0
+ if analyze_fences then
+ resolve_fences(list,size,start,limit)
+ end
+ -- N1 .. N2
+ resolve_neutral(list,size,start,limit,orderbefore,orderafter)
+ -- I1 .. I2
+ resolve_implicit(list,size,start,limit,orderbefore,orderafter,baselevel)
+ start = limit
+ end
+ -- L1
+ for i=1,size do
+ local entry = list[i]
+ local direction = entry.original
+ -- (1)
+ if direction == "s" or direction == "b" then
+ entry.level = baselevel
+ -- (2)
+ for j=i-1,1,-1 do
+ local entry = list[j]
+ if whitespace[entry.original] then
+ entry.level = baselevel
+ else
+ break
+ end
+ end
+ end
+ end
+ -- (3)
+ for i=size,1,-1 do
+ local entry = list[i]
+ if whitespace[entry.original] then
+ entry.level = baselevel
+ else
+ break
+ end
+ end
+ -- L4
+ if analyze_fences then
+ for i=1,size do
+ local entry = list[i]
+ if entry.level % 2 == 1 then -- odd(entry.level)
+ if entry.mirror and not entry.paired then
+ entry.mirror = false
+ end
+ -- okay
+ elseif entry.mirror then
+ entry.mirror = false
+ end
+ end
+ else
+ for i=1,size do
+ local entry = list[i]
+ if entry.level % 2 == 1 then -- odd(entry.level)
+ local mirror = mirrordata[entry.char]
+ if mirror then
+ entry.mirror = mirror
+ end
+ end
+ end
+ end
+end
+
+local stack = { }
+
+local function insert_dir_points(list,size)
+ -- L2, but no actual reversion is done, we simply annotate where
+ -- begindir/endddir node will be inserted.
+ local maxlevel = 0
+ local toggle = true
+ for i=1,size do
+ local level = list[i].level
+ if level > maxlevel then
+ maxlevel = level
+ end
+ end
+ for level=0,maxlevel do
+ local started -- = false
+ local begindir -- = nil
+ local enddir -- = nil
+ local prev -- = nil
+ if toggle then
+ begindir = lefttoright_code
+ enddir = lefttoright_code
+ toggle = false
+ else
+ begindir = righttoleft_code
+ enddir = righttoleft_code
+ toggle = true
+ end
+ for i=1,size do
+ local entry = list[i]
+ if entry.level >= level then
+ if not started then
+ entry.begindir = begindir
+ started = true
+ end
+ else
+ if started then
+ prev.enddir = enddir
+ started = false
+ end
+ end
+ prev = entry
+ end
+ end
+ -- make sure to close the run at end of line
+ local last = list[size]
+ if not last.enddir then
+ local n = 0
+ for i=1,size do
+ local entry = list[i]
+ local e = entry.enddir
+ local b = entry.begindir
+ if e then
+ n = n - 1
+ end
+ if b then
+ n = n + 1
+ stack[n] = b
+ end
+ end
+ if n > 0 then
+ if trace_list and n > 1 then
+ report_directions("unbalanced list")
+ end
+ last.enddir = stack[n]
+ end
+ end
+end
+
+-- We flag nodes that can be skipped when we see them again but because whatever
+-- mechanism can injetc dir nodes that then are not flagged, we don't flag dir
+-- nodes that we inject here.
+
+local function apply_to_list(list,size,head,pardir)
+ local index = 1
+ local current = head
+ if trace_list then
+ report_directions("start run")
+ end
+ while current do
+ if index > size then
+ report_directions("fatal error, size mismatch")
+ break
+ end
+ local id = getid(current)
+ local entry = list[index]
+ local begindir = entry.begindir
+ local enddir = entry.enddir
+ local p = properties[current]
+ if p then
+ p.directions = true
+ else
+ properties[current] = { directions = true }
+ end
+ if id == glyph_code and entry.mirror then
+ local curr_font = getfont(current)
+ if curr_font > 0 and font.fonts[curr_font].properties then
+ local font_mode = font.fonts[curr_font].properties.mode
+ if font_mode ~= 'harf' and font_mode ~= 'plug' then
+ setchar(current,entry.mirror)
+ end
+ end
+ if trace_directions then
+ local direction = entry.direction
+ if trace_list then
+ local original = entry.original
+ local char = entry.char
+ local level = entry.level
+ if direction == original then
+ report_directions("%2i : %C : %s",level,char,direction)
+ else
+ report_directions("%2i : %C : %s -> %s",level,char,original,direction)
+ end
+ end
+ setcolor(current,direction,false,mirror)
+ end
+ elseif id == hlist_code or id == vlist_code then
+ setdirection(current,pardir) -- is this really needed?
+ elseif id == glue_code then
+ -- Maybe I should also fix dua and dub but on the other hand ... why?
+ if enddir and getsubtype(current) == parfillskip_code then
+ -- insert the last enddir before \parfillskip glue
+ local c = current
+ local p = getprev(c)
+ if p and getid(p) == glue_code and getsubtype(p) == parfillleftskip_code then
+ c = p
+ p = getprev(c)
+ end
+ if p and getid(p) == penalty_code then -- linepenalty
+ c = p
+ end
+ -- there is always a par nodes so head will stay
+ head = insertnodebefore(head,c,new_direction(enddir,true))
+ enddir = false
+ end
+ elseif begindir then
+ if id == par_code and startofpar(current) then
+ -- par should always be the 1st node
+ head, current = insertnodeafter(head,current,new_direction(begindir))
+ begindir = nil
+ end
+ end
+ if begindir then
+ head = insertnodebefore(head,current,new_direction(begindir))
+ end
+ local skip = entry.skip
+ if skip and skip > 0 then
+ for i=1,skip do
+ current = getnext(current)
+ local p = properties[current]
+ if p then
+ p.directions = true
+ else
+ properties[current] = { directions = true }
+ end
+ end
+ end
+ if enddir then
+ head, current = insertnodeafter(head,current,new_direction(enddir,true))
+ end
+ if not entry.remove then
+ current = getnext(current)
+ elseif remove_controls then
+ -- X9
+ head, current = remove_node(head,current,true)
+ else
+ current = getnext(current)
+ end
+ index = index + 1
+ end
+ if trace_list then
+ report_directions("stop run")
+ end
+ return head
+end
+
+-- If needed we can optimize for only_one. There is no need to do anything
+-- when it's not a glyph. Otherwise we only need to check mirror and apply
+-- directions when it's different from the surrounding. Paragraphs always
+-- have more than one node. Actually, we only enter this function when we
+-- do have a glyph!
+
+local analyze_fences = false
+local function process(head,where,direction)
+ if where == "fin_row" then return true end
+ if where == "align_set" then head = node.first_glyph(head) print(head) end
+ if not head then return true end
+ head = todirect(head)
+ local list, size = build_list(head,where)
+ local baselevel, dirfound = get_baselevel(head,list,size,direction)
+ if trace_details then
+ report_directions("analyze: baselevel %a",baselevel == righttoleft_code and "r2l" or "l2r")
+ report_directions("before : %s",show_list(list,size,"original"))
+ end
+ resolve_explicit(list,size,baselevel)
+ resolve_levels(list,size,baselevel,analyze_fences)
+ insert_dir_points(list,size)
+ if trace_details then
+ report_directions("after : %s",show_list(list,size,"direction"))
+ report_directions("result : %s",show_done(list,size))
+ end
+ return tonode(apply_to_list(list,size,head,baselevel))
+end
+
+local put_next = token.put_next
+local get_next = token.get_next
+local scan_keyword = token.scan_keyword
+local scan_toks = token.scan_toks
+
+local relax
+do
+ local prefix = 'u@a^x&9_'
+ while token.is_defined(prefix .. 'let') or token.is_defined(prefix .. 'relax') do
+ prefix = prefix .. 'u@a^x&9_'
+ end
+ local undef = token.create(prefix .. 'relax')
+ tex.enableprimitives(prefix,{'relax', 'let'})
+ local function frozentok(name)
+ local tok = token.create(prefix .. name)
+ return token.new(tok.mode, tok.command)
+ end
+ relax = frozentok'relax'
+ let = frozentok'let'
+ tex.runtoks(function()
+ for _,csname in ipairs({'relax', 'let'}) do
+ put_next(let, token.create(prefix .. csname), undef)
+ end
+ end)
+end
+
+local enabled = true
+local function interface()
+ local saved_endlinechar = tex.endlinechar
+ tex.endlinechar = 32
+ local toks = scan_toks()
+ tex.endlinechar = saved_endlinechar
+ put_next(relax)
+ put_next(toks)
+
+ while true do
+ if scan_keyword('enable') then
+ if not enabled then
+ enabled = true
+ luatexbase.add_to_callback("pre_shaping_filter", process, "unibidi-lua.process")
+ end
+ elseif scan_keyword('disable') then
+ if enabled then
+ enabled = false
+ luatexbase.remove_from_callback("pre_shaping_filter", "unibidi-lua.process")
+ end
+ elseif scan_keyword('fences') then
+ scan_keyword('=')
+ if scan_keyword('true') then
+ analyze_fences = true
+ elseif scan_keyword('false') then
+ analyze_fences = false
+ end
+ else
+ break
+ end
+ end
+
+ local tok = get_next()
+ if tok.tok ~= relax.tok then
+ tex.error("unibidi-lua: wrong syntax in \\unibidilua",
+ {"There's a '" .. (tok.csname or uni_char(tok.mode)) .. "' out of place." })
+ put_next(tok)
+ end
+
+end
+
+do
+ if token.is_defined('unibidilua') then
+ texio.write_nl('log', "unibidi-lua: redefining \\unibidilua")
+ end
+ local function_table = lua.get_functions_table()
+ local luafnalloc = luatexbase and luatexbase.new_luafunction and luatexbase.new_luafunction('unibidilua') or #function_table + 1
+ token.set_lua('unibidilua', luafnalloc)
+ function_table[luafnalloc] = interface
+end
+
+luatexbase.add_to_callback("pre_shaping_filter", process, "unibidi-lua")
diff --git a/Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua.opm b/Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua.opm
new file mode 100644
index 00000000000..a947d669fb6
--- /dev/null
+++ b/Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua.opm
@@ -0,0 +1,48 @@
+% Optional comments
+\_codedecl \unibidilua {Unicode Bidi Algorithm for OpTeX <0.1, 2025-01-19>}
+
+\_initunifonts
+\_directlua{require('unibidi-lua.lua')}
+
+\_endcode
+
+This package is still in early phase, and the interface
+might still change.
+The requirements are the \LuaTeX/ engine,
+and the `luaotfload` font loader.
+
+\def\key #1:{{\bf #1:}\hskip1em\ignorespaces}
+Currently there is only only one macro, `\unibidilua`,
+which accepts a key-value pairs separated by a space.
+The macro accepts three keyword:
+\begitems \style O
+* \key enable: This key adds unibidi-lua's process function to the
+ `pre_shaping_filter` callback. It does not accept a value.
+* \key disable: This key removes unibidi-lua's process function from the
+ `pre_shaping_filter` callback. It does not accept a value.
+* \key fences: This key accepts a boolean value. It allows to disable or
+ enable step N0 of the UAX9 algorithm.
+\enditems
+
+To use the package, as with other packages, you can do `\load[unibidi-lua]`, `\usepackage{unibidi-lua}` or `\input unibidi-lua`
+if you are using \OpTeX, \LaTeX or Plain respectively. The process function
+is added to the `pre_shaping_filter` when you load the package.
+
+\_doc
+\verbchar`
+% optex -jobname unibidi-lua-doc '\docgen unibidi-lua'
+\load [doc]
+\overfullrule=0pt
+\tit Unicode Bidi Algorithm Implementation for \OpTeX, \LaTeX, and Plain
+\hfill Version: 0.1, 2025-01-19 \par
+\centerline{\it Udi Fogiel, 2025}
+\parindent0pt\parskip5pt\parfillskip=20ptplus1fill
+The unibidi-lua LuTeX packge is an implementation of the \ulink[https://www.unicode.org/reports/tr9/]
+{Unicode Annex \#9} for \OpTeX, \LaTeX/ and Plain \LuaTeX/ formats. It allows to typeset
+bidirectional documents without the need of a special markup.
+
+\printdoctail unibidi-lua.opm % prints the documentation written after \_endcode
+\bye
+\_cod
+
+\endinput
diff --git a/Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua.sty b/Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua.sty
new file mode 100644
index 00000000000..e14a1189434
--- /dev/null
+++ b/Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua.sty
@@ -0,0 +1,7 @@
+\ProvidesPackage
+ {unibidi-lua} [2025-01-19 v0.1
+ Unicode Bidi Algorithm for LuaLaTeX]
+
+\directlua{require("unibidi-lua.lua")}
+
+\endinput
diff --git a/Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua.tex b/Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua.tex
new file mode 100644
index 00000000000..de6d8c82995
--- /dev/null
+++ b/Master/texmf-dist/tex/luatex/unibidi-lua/unibidi-lua.tex
@@ -0,0 +1,5 @@
+% unibidi-lua.tex version 0.1, 2025-01-19
+\input luaotfload.sty
+\directlua{require("unibidi-lua.lua")}
+
+\endinput
diff --git a/Master/texmf-dist/tex/optex/base/bib-iso690.opm b/Master/texmf-dist/tex/optex/base/bib-iso690.opm
index 5595d658770..e8df4a2d6e8 100644
--- a/Master/texmf-dist/tex/optex/base/bib-iso690.opm
+++ b/Master/texmf-dist/tex/optex/base/bib-iso690.opm
@@ -1,6 +1,6 @@
% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \_undefined {BIB style (iso690) <2023-09-13>} % loaded on demand by \usebib
+\_codedecl \_undefined {BIB style (iso690) <2024-07-23>} % loaded on demand by \usebib
\_ifx\_optexbibstyle\_undefined \_errmessage
{This file can be read by: \_string\usebib/? (iso690) bibfiles command only}
@@ -36,7 +36,7 @@
}
\_doc -----------------------------
- Formating of Author/Editor lists.
+ Formatting of Author/Editor lists.
\_cod -----------------------------
\_def\_firstauthorformat{%
@@ -312,7 +312,6 @@
{\_bibwarning}%
\_bprinta [howpublished] {[*].\ }{}%
\_bprinta [ednote] {\_prepareednote*\_bprintv[citedate]{}{.}\ }{\_bibwarning}%
- \_bprinta [year] {}{\_bibwarning}%
\_bprinta [citedate] {\_docitedate*///\_relax.\ }{}%
\_bprintb [doi] {\_predoi DOI \_ulink[http://dx.doi.org/##1]{##1}.\ }{}%
\_bprintb [url] {\_preurl\_url{##1}. }{}%
@@ -484,9 +483,9 @@ can add the secondary name (interpreted as Firstname) after the comma. Example:
\begtt
author = "Czech\ Technical\ University\ in\ Prague,
- Faculty\ of\ Electrical\ Engeneering",
+ Faculty\ of\ Electrical\ Engineering",
\endtt
-output: CZECH TECHNICAL UNIVERSITY IN PRAGUE, Faculty of Electrical Engeneering.
+output: CZECH TECHNICAL UNIVERSITY IN PRAGUE, Faculty of Electrical Engineering.
\seccc The editor field
@@ -933,6 +932,7 @@ Other options in the option field are silently ignored.
\_endinput
+2024-07-23 ... generic: warning about missing year removed (bug fixed)
2023-09-13 ... \_createbibmark: no comma if year is missing
2023-06-23 ... @ONLINE entry introduced
2023-04-22 ... incollection: typo corrected
diff --git a/Master/texmf-dist/tex/optex/base/cite-bib.opm b/Master/texmf-dist/tex/optex/base/cite-bib.opm
index 805b84de030..132a1d982f9 100644
--- a/Master/texmf-dist/tex/optex/base/cite-bib.opm
+++ b/Master/texmf-dist/tex/optex/base/cite-bib.opm
@@ -1,6 +1,6 @@
% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \cite {Cite, Biblioraphy <2021-04-13>} % preloaded in format
+\_codedecl \cite {Cite, Bibliography <2021-04-13>} % preloaded in format
\_doc -----------------------------
Registers used by `\cite`, `\bib` macros are declared here.
@@ -131,7 +131,7 @@
If `\_addcitelist` is processed after \^`\usebib`, then
\`\_Xcite``{<bibpart>/}{<label>}` is saved to the `.ref`
file. The `\_Xcite` creates `\_ctlstB:<bibpart>/` as a list of saved
- `\_citeI[<label>]`. Finally, \^`\usebib` concats boths lists `\_ctlst:<bibpart>/`
+ `\_citeI[<label>]`. Finally, \^`\usebib` concats both lists `\_ctlst:<bibpart>/`
and `\_ctlstB:<bibpart>/` in the second \TeX/ run.
\_cod ----------------------------
diff --git a/Master/texmf-dist/tex/optex/base/colors.opm b/Master/texmf-dist/tex/optex/base/colors.opm
index e43a40c779b..6a4782834d0 100644
--- a/Master/texmf-dist/tex/optex/base/colors.opm
+++ b/Master/texmf-dist/tex/optex/base/colors.opm
@@ -106,7 +106,7 @@
\_doc -----------------------------
The attribute \`\_transpattr` is allocated and set by the
- \`\transparency``<number>` macro. If such level of the tranparency was
+ \`\transparency``<number>` macro. If such level of the transparency was
never used in the document then
\^`\addextgstate{tr<number>}`\code{\{<</ca X /CA X>>\}} is applied
(where `X` is `(255-<number>)/255`).
@@ -208,7 +208,7 @@
RGB to CMYK and from CMYK to RGB for given color. It has precedence
before general formulae used in the \^`\_rgbtocmyk` and \^`\_cmyktorgb`
macros. Note, that the values <R> <G> <B> <C> <M> <Y> <K> must be given
- exacly in the same format as in \^`\setcmykcolor` and \^`\setrgbcolor`
+ exactly in the same format as in \^`\setcmykcolor` and \^`\setrgbcolor`
parameters. For example, `0.5` or `.5` or `.50` are different values from
point of view of this mapping.
\_cod -----------------------------
@@ -408,7 +408,7 @@ $$
$$
You can use minus instead of plus in the linear combination in `\colordef`. The
-given color is substracted in such case and the negative components are
+given color is subtracted in such case and the negative components are
rounded to zero immediately. For example
\begtt
\colordef \Color {\Brown-\Black}
diff --git a/Master/texmf-dist/tex/optex/base/doc.opm b/Master/texmf-dist/tex/optex/base/doc.opm
index c334019de29..28cbd19353d 100644
--- a/Master/texmf-dist/tex/optex/base/doc.opm
+++ b/Master/texmf-dist/tex/optex/base/doc.opm
@@ -3,7 +3,7 @@
\_codedecl \printdoc {Macros for documentation printing <2023-12-10>} % loaded on demand by \load[doc]
\_doc -----------------------------
- General decalarations.
+ General declarations.
\_cod -----------------------------
\_fontfam[lmfonts]
@@ -181,7 +181,7 @@
When printing Index, we distinguish the Index entries with their main
documentation point (they are created as links and backslash is added),
Index entries with only user documentation points have backslash added
- but no link is created. Other index entries are printed as usuall
+ but no link is created. Other index entries are printed as usual
without backslash.
\_cod -----------------------------
@@ -223,7 +223,7 @@
\_doc -----------------------------
Main documentation points and hyperlinks to/from it.
Main documentation point: \code{\\`\\foo`}.
- User documentation point: \code{\\^`\\foo}, first occurence only.
+ User documentation point: \code{\\^`\\foo}, first occurrence only.
The next occurrences are only links to the main documentation point.
Link to user documentation point: \code{\\~`\\foo}.
\_cod -----------------------------
@@ -329,7 +329,7 @@ documentation points are saved to the index.
The listing mode creates all control sequences which are listed in the
index as an active link to the main documentation point of such control sequence
-and prints them in blue. Moreower, active links are control sequneces of the
+and prints them in blue. Moreower, active links are control sequences of the
type `\_foo` or `\.foo` although the documentation mentions only `\foo`.
Another text is printed in black.
diff --git a/Master/texmf-dist/tex/optex/base/f-baskervald.opm b/Master/texmf-dist/tex/optex/base/f-baskervald.opm
index 3a9540a5a8f..8d43942b527 100644
--- a/Master/texmf-dist/tex/optex/base/f-baskervald.opm
+++ b/Master/texmf-dist/tex/optex/base/f-baskervald.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_famdecl [Baskervald] \Baskervald {Free vaiants of classical Baskerville by ADF}
+\_famdecl [Baskervald] \Baskervald {Free variants of classical Baskerville by ADF}
{\caps} {\rm \bf \it \bi} {}
{[Baskervaldx-Reg]}
{\_def \_fontnamegen {[Baskervaldx-\_currV]:script=latn;\_capsV\_fontfeatures}}
diff --git a/Master/texmf-dist/tex/optex/base/f-baskerville.opm b/Master/texmf-dist/tex/optex/base/f-baskerville.opm
index a0f5e3e99d2..974e0dba6bb 100644
--- a/Master/texmf-dist/tex/optex/base/f-baskerville.opm
+++ b/Master/texmf-dist/tex/optex/base/f-baskerville.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_famdecl [Baskerville] \Baskerville {Free vaiants of classical Baskerville}
+\_famdecl [Baskerville] \Baskerville {Free variants of classical Baskerville}
{\caps} {\rm \bf \it \bi} {}
{[BaskervilleF-Regular]}
{\_def \_fontnamegen {[BaskervilleF-\_currV]:script=latn;\_capsV\_fontfeatures}}
diff --git a/Master/texmf-dist/tex/optex/base/f-erewhon.opm b/Master/texmf-dist/tex/optex/base/f-erewhon.opm
index efc23c411e6..63ee67ff5e9 100644
--- a/Master/texmf-dist/tex/optex/base/f-erewhon.opm
+++ b/Master/texmf-dist/tex/optex/base/f-erewhon.opm
@@ -10,7 +10,7 @@ Modifiers:^^J
\caps ...... caps & small caps^^J
\slant ..... slanted Regular, Bold^^J%
Variants:^^J
- \sl ... slanted Regular, \sb ... slanted Bold^^J
+ \sl ... slanted Regular, \bs ... slanted Bold^^J
}}
\_moddef \resetmod {\_fsetV caps={} \_fvars Regular Bold Italic Bolditalic }
diff --git a/Master/texmf-dist/tex/optex/base/f-fbb.opm b/Master/texmf-dist/tex/optex/base/f-fbb.opm
index ac69a89a992..ce105fb30a3 100644
--- a/Master/texmf-dist/tex/optex/base/f-fbb.opm
+++ b/Master/texmf-dist/tex/optex/base/f-fbb.opm
@@ -1,7 +1,7 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [fbb] \FBembo {Bembo–like fonts derived from Cardo}
- {\caps \swash} {\rm \bf \it \bi} {}
+ {\caps \swash} {\rm \bf \it \bi} {adjusted Garamond-Math}
{[fbb-Regular]}
{\_def\_fontnamegen {[fbb-\_currV]:script=latn;\_capsV\_swaV\_fontfeatures}}
@@ -17,6 +17,8 @@ Modifier:^^J
\_initfontfamily % new font family must be initialized
+\_loadmath 1.06 {[Garamond-Math]} % x-size adjusted Garamond-Math
+
\_endcode
See historical notice in texdoc fbb.
diff --git a/Master/texmf-dist/tex/optex/base/f-fraunces.opm b/Master/texmf-dist/tex/optex/base/f-fraunces.opm
index 7684dbc4e8a..a4202c24c0f 100644
--- a/Master/texmf-dist/tex/optex/base/f-fraunces.opm
+++ b/Master/texmf-dist/tex/optex/base/f-fraunces.opm
@@ -18,7 +18,7 @@ Modifiers:^^J
\bolder .... \rm, \it = Medium, \bf, \bi = Black^^J%
Variable font parameters:^^J
\wght ...... 100--1000 (default 400): weight of the strokes^^J
- \opsz ...... 6--144 (default 14): optical size modifiation^^J
+ \opsz ...... 6--144 (default 14): optical size modification^^J
\ssoft ..... 0--100 (default 0): softness of serifs^^J
Use \wght=650 \ssoft=50 (for example). It acts like others font modifiers.^^J%
Extended variants:^^J
diff --git a/Master/texmf-dist/tex/optex/base/f-heros.opm b/Master/texmf-dist/tex/optex/base/f-heros.opm
index a7aebdb4b82..bd111553cb7 100644
--- a/Master/texmf-dist/tex/optex/base/f-heros.opm
+++ b/Master/texmf-dist/tex/optex/base/f-heros.opm
@@ -202,7 +202,7 @@ section~\ref[fontcommands].
If you need to use an internal control sequence declared in your fontfile,
use the reserved name space with names starting with two `_` followed by family
-indentifier or by `vf` if it relates to variable fonts.
+identifier or by `vf` if it relates to variable fonts.
The name of `\<Familyselector>` should begin with an uppercase letter.
diff --git a/Master/texmf-dist/tex/optex/base/f-jost.opm b/Master/texmf-dist/tex/optex/base/f-jost.opm
index 27d64821a16..a78fad34b7f 100644
--- a/Master/texmf-dist/tex/optex/base/f-jost.opm
+++ b/Master/texmf-dist/tex/optex/base/f-jost.opm
@@ -11,7 +11,7 @@ Modifiers (weight):^^J
\hairline ... \rm, \it: Hairline, \bf, \bi: Book^^J
\thin ....... \rm, \it: Thin, \bf, \bi: Medium^^J
\light ...... \rm, \it: Light, \bf, \bi: SemiBold^^J
- \medium ..... \rm, \it: Medium, \bf, \bi: Hevy^^J
+ \medium ..... \rm, \it: Medium, \bf, \bi: Heavy^^J
Extended Variants:^^J
\kf, \ki .... Black, BlackItalic^^J
}}
diff --git a/Master/texmf-dist/tex/optex/base/f-kerkis.opm b/Master/texmf-dist/tex/optex/base/f-kerkis.opm
index 4bc31ead65d..530e026af1c 100644
--- a/Master/texmf-dist/tex/optex/base/f-kerkis.opm
+++ b/Master/texmf-dist/tex/optex/base/f-kerkis.opm
@@ -12,7 +12,7 @@ Modifiers:^^J
\sans ...... sans serif^^J
\sanssemi .. semibold sans serif (only \rm, accented letters not available)^^J
Variant:^^J
- \calli ..... Calligraphic (only upercase, lowercase letters equal to Italic)^^J
+ \calli ..... Calligraphic (only uppercase, lowercase letters equal to Italic)^^J
}}
\_moddef \resetmod {\_fvars {} -Bold -Italic -BoldItalic }
diff --git a/Master/texmf-dist/tex/optex/base/f-lido.opm b/Master/texmf-dist/tex/optex/base/f-lido.opm
index 13b4cb76286..92ec9eca86f 100644
--- a/Master/texmf-dist/tex/optex/base/f-lido.opm
+++ b/Master/texmf-dist/tex/optex/base/f-lido.opm
@@ -10,7 +10,7 @@ Variants:^^J
\rm \bf \it \bi ... classical variants^^J
\mf \mi .... medium regular and medium italics (between normal and bold)^^J
Modifiers:^^J
- \cond ...... condensed (italic is not avalable for \cond variants)^^J
+ \cond ...... condensed (italic is not available for \cond variants)^^J
\medium .... sets \mf \bf \mi \bi family
}}
diff --git a/Master/texmf-dist/tex/optex/base/f-lmfonts.opm b/Master/texmf-dist/tex/optex/base/f-lmfonts.opm
index 90519e3aad6..09786de3a66 100644
--- a/Master/texmf-dist/tex/optex/base/f-lmfonts.opm
+++ b/Master/texmf-dist/tex/optex/base/f-lmfonts.opm
@@ -99,7 +99,7 @@ Note: Text fonts support optical sizes, but LatinModern-Math only for scripts.^^
\_moddef \upital {\_fsetV subfam=mu \_fvars r . . . }
\_moddef \dunhill {\_fsetV subfam=du \_fvars r . sl . }
-% submodifiers (they select special vaiants in a subfamily)
+% submodifiers (they select special variants in a subfamily)
\_moddef \nbold {\_onlyif subfam=rm,ss,tp: {\_fvars r b i bi }}
\_moddef \bolder {\_onlyif subfam=rm,ss,tp: {\_fvars r bx i bxi }}
\_moddef \slant {\_onlyif subfam=rm: {\_fvars r bx isl bxisl }%
diff --git a/Master/texmf-dist/tex/optex/base/f-neohellenic.opm b/Master/texmf-dist/tex/optex/base/f-neohellenic.opm
new file mode 100644
index 00000000000..fb0285ad64e
--- /dev/null
+++ b/Master/texmf-dist/tex/optex/base/f-neohellenic.opm
@@ -0,0 +1,23 @@
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [Neohellenic] \Neohellenic {Sans serif fonts + math and full Greek}
+ {\caps} {\rm \bf \it \bi} {Neohellenic}
+ {[GFSNeohellenic]}
+ {\_def\_fontnamegen {[GFSNeohellenic\_currV]:script=latn;\_capsV\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifier:^^J
+ \caps ...... caps & small caps (\rm only)^^J
+}}
+
+\_moddef \resetmod {\_fsetV caps={} \_fvars {} Bold It BoldIt }
+\_moddef \caps {\_fsetV caps=+smcp;\_ffonum; }
+
+\_initfontfamily % new font family must be initialized
+
+\_loadmath {[GFSNeohellenicMath]}
+
+\_endcode
+
+See the file `f-heros.opm` for information about principles of such
+font-macro-files.
diff --git a/Master/texmf-dist/tex/optex/base/f-newcm.opm b/Master/texmf-dist/tex/optex/base/f-newcm.opm
index ba83b0d7294..24b979940db 100644
--- a/Master/texmf-dist/tex/optex/base/f-newcm.opm
+++ b/Master/texmf-dist/tex/optex/base/f-newcm.opm
@@ -1,7 +1,7 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [New Computer Modern] \NewCM {CM with Book variants, Cyrillic, Greek}
- {\book \ttset \sans \caps} {\rm \bf \it \bi} {NewCMMath}
+ {\book \ttset \sans \caps} {\rm \bf \it \bi} {NewCM-Regular}
{[NewCM10-Regular]}
{\_def\_fontnamegen {[NewCM\_typfV-\_currV]:\_capsV\_fontfeatures}}
@@ -32,6 +32,15 @@ Note: use \book\normalmath if you want Math in book-style too.
\_endcode
+If you want to use \book variant in the whole document, you can load
+NewCMMath-Book Unicode math font too. Use the following declaration in this
+case:
+
+\loadmath{NewCMMath-Book}
+\fontfam[newcm]
+\book\rm
+
+
See the file `f-heros.opm` for information about principles of such
font-macro-files.
diff --git a/Master/texmf-dist/tex/optex/base/f-oldstandard.opm b/Master/texmf-dist/tex/optex/base/f-oldstandard.opm
index 68d01da26ca..33488a730cd 100644
--- a/Master/texmf-dist/tex/optex/base/f-oldstandard.opm
+++ b/Master/texmf-dist/tex/optex/base/f-oldstandard.opm
@@ -1,7 +1,7 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
\_famdecl [OldStandard] \Oldstandard {inspired by a typeface most commonly used in old books}
- {\caps} {\rm \bf \it \bi} {}
+ {\caps} {\rm \bf \it \bi} {OldStandard}
{[OldStandard-Regular]}
{\_def\_fontnamegen {[OldStandard-\_currV]:script=latn;\_capsV\_fontfeatures}}
@@ -15,6 +15,8 @@ Modifier:^^J
\_initfontfamily % new font family must be initialized
+\_loadmath {[OldStandard-Math]}
+
\_endcode
See the file `f-heros.opm` for information about principles of such
diff --git a/Master/texmf-dist/tex/optex/base/f-plex.opm b/Master/texmf-dist/tex/optex/base/f-plex.opm
new file mode 100644
index 00000000000..87e7748c0fb
--- /dev/null
+++ b/Master/texmf-dist/tex/optex/base/f-plex.opm
@@ -0,0 +1,56 @@
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [Plex] \Plex
+ {IBM Plex font family}
+ {\serif \sans \mono
+ \thin \elight \light \regular \text \medium \semibold
+ \cond \nocond}
+ {\rm \bf \it \bi}
+ {}%% No math!
+ {IBMPlexSerif-Regular}
+ {\_def\_fontnamegen {[IBMPlex\_subV-\_currV]:\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Subfamilies:^^J
+ \serif .... Serif (default)^^J
+ \sans ..... Sans serif^^J
+ \mono ..... Mono^^J%
+Weight modifiers:^^J
+ \thin ........ \rm \it = thin, \bf \bi = light^^J
+ \elight ...... \rm \it = extra light, \bf \bi = regular^^J
+ \light ....... \rm \it = light, \bf \bi = medium^^J
+ \regular ..... \rm \it = regular, \bf \bi = bold (default)^^J
+ \text ........ \rm \it = text, \bf \bi = bold^^J
+ \medium ...... \rm \it = medium, \bf \bi = bold^^J
+ \semibold .... \rm \it = regular, \bf \bi = semibold^^J%
+Modifiers:^^J
+ \cond \nocond .... Condensed (sans serif only)^^J%
+}}
+
+\_moddef \resetmod {\__Plex_nocond \__Plex_serif \__Plex_regularVars}
+
+\_def\__Plex_nocond {\_fsetV cond={} }
+\_def\__Plex_serif {\_fsetV sub=Serif }
+\_def\__Plex_regularVars {\_fvars Regular Bold Italic BoldItalic }
+
+\_moddef \serif {\__Plex_serif}
+\_moddef \sans {\_fsetV sub={Sans\_condV} }
+\_moddef \mono {\_fsetV sub=Mono }
+
+\_moddef \thin {\_fvars Thin Light ThinItalic LightItalic }
+\_moddef \elight {\_fvars ExtraLight Regular ExtraLightItalic Italic }
+\_moddef \light {\_fvars Light Medium LightItalic MediumItalic }
+\_moddef \regular {\__Plex_regularVars}
+\_moddef \text {\_fvars Text Bold TextItalic BoldItalic }
+\_moddef \medium {\_fvars Medium Bold MediumItalic BoldItalic }
+\_moddef \semibold {\_fvars Regular SemiBold Italic SemiBoldItalic }
+
+\_moddef \cond {\_fsetV cond=Condensed }
+\_moddef \nocond {\__Plex_nocond}
+
+\_initfontfamily
+
+\_endcode
+
+Official font repository:
+https://github.com/IBM/plex
diff --git a/Master/texmf-dist/tex/optex/base/f-poltawski.opm b/Master/texmf-dist/tex/optex/base/f-poltawski.opm
index 6ebf089a31c..4d698dea8eb 100644
--- a/Master/texmf-dist/tex/optex/base/f-poltawski.opm
+++ b/Master/texmf-dist/tex/optex/base/f-poltawski.opm
@@ -13,7 +13,7 @@ Modifiers:^^J
\expd ...... semi expanded, designed for 8pt size^^J
\cond ...... semi condensed, designed for 12pt size^^J
\ccond ..... condensed, designed for 17pt size^^J
- \osize ..... auto-sitches between \ccond \cond \noexpd \expd \eexpd by size^^J
+ \osize ..... auto-switches between \ccond \cond \noexpd \expd \eexpd by size^^J
\caps ...... caps & small caps^^J
}}
diff --git a/Master/texmf-dist/tex/optex/base/f-raleway.opm b/Master/texmf-dist/tex/optex/base/f-raleway.opm
new file mode 100644
index 00000000000..16e58b4bd09
--- /dev/null
+++ b/Master/texmf-dist/tex/optex/base/f-raleway.opm
@@ -0,0 +1,32 @@
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
+
+\_famdecl [Raleway] \Raleway {Elegant grotesk, nine weights in two variants}
+ {\thin \elight \light \normal \medium \semibold \bolder}
+ {\rm \bf \it \bi} {}
+ {[Raleway-Regular]}
+ {\_def\_fontnamegen {[Raleway-\_currV]:\_capsV\_fontfeatures}}
+
+\_wlog{\_detokenize{%
+Modifiers (face weight):^^J
+ \thin ...... \rm, \it = Thin, \bf, \bi = Light^^J
+ \elight .... \rm, \it = ExtraLight, \bf, \bi = Regular^^J
+ \light ..... \rm, \it = Light, \bf, \bi = Medium^^J
+ \normal .... \rm, \it = Regular, \bf, \bi = SemiBold^^J
+ \medium .... \rm, \it = Medium, \bf, \bi = Bold^^J
+ \semibold .. \rm, \it = SemiBold, \bf, \bi = ExtraBold^^J
+ \bolder .... \rm, \it = Bold, \bf, \bi = Black^^J%
+}}
+
+\_moddef \resetmod {\_fsetV caps={} \_fvars Regular SemiBold Regular-Italic SemiBold-Italic }
+\_moddef \thin {\_fvars Thin Light Thin-Italic Light-Italic }
+\_moddef \elight {\_fvars ExtraLight Regular ExtraLight-Italic Regular-Italic }
+\_moddef \light {\_fvars Light Medium Light-Italic Medium-Italic }
+\_moddef \normal {\_fvars Regular SemiBold Regular-Italic SemiBold-Italic }
+\_moddef \medium {\_fvars Medium Bold Medium-Italic Bold-Italic }
+\_moddef \semibold {\_fvars SemiBold ExtraBold SemiBold-Italic ExtraBold-Italic }
+\_moddef \bolder {\_fvars Bold Black Bold-Italic Black-Italic }
+
+\_initfontfamily % new font family must be initialized
+
+\_endcode
+
diff --git a/Master/texmf-dist/tex/optex/base/f-technika.opm b/Master/texmf-dist/tex/optex/base/f-technika.opm
index b29b29ed0c8..0030f9ba373 100644
--- a/Master/texmf-dist/tex/optex/base/f-technika.opm
+++ b/Master/texmf-dist/tex/optex/base/f-technika.opm
@@ -7,7 +7,7 @@
\_wlog{\_detokenize{%
Modifiers:^^J
- \light ..... ligher variants: \rm\bf=light \bf\bi=normal^^J
+ \light ..... lighter variants: \rm\bf=light \bf\bi=normal^^J
\book ...... semi-ligher variants: \rm\bf=book \bf\bi=bold^^J
\caps ...... caps & small caps^^J%
Special variant:^^J
diff --git a/Master/texmf-dist/tex/optex/base/fams-ini.opm b/Master/texmf-dist/tex/optex/base/fams-ini.opm
index 7d3f0332a83..d6fa06ff151 100644
--- a/Master/texmf-dist/tex/optex/base/fams-ini.opm
+++ b/Master/texmf-dist/tex/optex/base/fams-ini.opm
@@ -108,7 +108,7 @@
-: {\mono\initials\displ\keybr} }
\_famfrom{Victor Gaultney}
-\_faminfo [Gentium] {Serif free fonts, support Greek, Cyrrilic, IPA} {f-gentium}
+\_faminfo [Gentium] {Serif free fonts, support Greek, Cyrillic, IPA} {f-gentium}
{ -,\caps,\book,\book\caps: {\rm\bf\it\bi} }
\_famalias [GentiumPro]
@@ -217,6 +217,12 @@
\caps, \caps\cond: {\rm\bf\it\bi} \caps\ttset: {\rm\bf}
}
+\_famfrom {Google, Matt McInerney, Pablo Impallari, Rodrigo Fuenzalida}
+\_faminfo [Raleway] {Elegant grotesk, nine weights in two variants} {f-raleway}
+ { \thin,\elight,\light,\normal,\medium,\semibold,\bolder: {\rm\it}
+ \semibold,\bolder: {\bf\bi}
+ }
+
\_famfrom {Malgorzata Budyta, Janusz Marian Nowacki}
\_faminfo [Kurier] {Two element sans serif typeface} {f-kurier}
{ -,\cond,\caps,\caps\cond: {\rm\it\bf\bi}
@@ -265,6 +271,11 @@
\thin\caps,\light\caps,\book\caps,\caps,\medium\caps,%
\thin\allsc,\light\allsc,\book\allsc,\allsc,\medium\allsc: {\rm\bf\it\bi} }
+\_famfrom {GFS, Takis Katsoulidis, George D. Matthiopoulos}
+\_faminfo [Neohellenic] {Sans serif fonts with math and full Greek} {f-neohellenic}
+ { -: {\rm\bf\it\bi} \caps:{\rm} }
+\_famalias [GFS Neohellenic]
+
\_famfrom {Raph Levien}
\_faminfo [Inconsolata] {A monospaced font for code listing} {f-inconsolata}
{ -,\narrow: {\rm\bf} }
@@ -276,11 +287,27 @@
\_famfrom {Séamas Ó Brógáin}
\_faminfo [Clara] {Clara, a serif font family} {f-clara}
{ -: {\rm\bf\it\bi} \caps: {\rm} }
-
+
\_famfrom {Maxim Iorsh}
\_faminfo [Culmus] {Hebrew roman, sans and mono fonts from the Culmus project} {f-culmus}
{\roman,\sans,\mono: {\rm\bf\it\bi}}
+\_famfrom {IBM, Mike Abbink, Paul van der Laan, Pieter van Rosmalen}
+\_faminfo [Plex]
+ {IBM Plex font family}
+ {f-plex}
+ { \thin,\elight,\light,-,\text: {\rm\it}
+ \semibold,-: {\bf\bi}
+ \sans\thin,\sans\elight,\sans\light,\sans,\sans\text: {\rm\it}
+ \sans\semibold,\sans: {\bf\bi}
+ \cond\sans\thin,\cond\sans\elight,\cond\sans\light,%
+ \cond\sans,\cond\sans\text: {\rm\it}
+ \cond\sans\semibold,\cond\sans: {\bf\bi}
+ \mono\thin,\mono\elight,\mono\light,\mono,\mono\text: {\rm\it}
+ \mono\semibold,\mono: {\bf\bi}
+ }
+\_famalias[IBM Plex]
+
\_endcode
Once you have prepared a font family file with the name `f-<famname>.opm` and
@@ -319,7 +346,7 @@ The `fams-ini.opm` and `fams-local.opm` files can use the macros
}
\medskip
-The \^`\_faminfo` commad has the syntax:
+The \^`\_faminfo` command has the syntax:
\begtt \catcode`\<=13
\_faminfo [<Family Name>] {<comments>} {<file-name>}
{ <mod-plus-vars> }
diff --git a/Master/texmf-dist/tex/optex/base/fonts-opmac.opm b/Master/texmf-dist/tex/optex/base/fonts-opmac.opm
index 646a0257b9d..f2089536da2 100644
--- a/Master/texmf-dist/tex/optex/base/fonts-opmac.opm
+++ b/Master/texmf-dist/tex/optex/base/fonts-opmac.opm
@@ -127,11 +127,11 @@
Suppose following example:
`{\typosize[13/15] Let $M$ be a subset of $R$ and $x\in M$...}`
If \^`\mfontsrule=1` then \^`\typosize` does not load math fonts
- immediatelly but at the first math formula. It is done by `\everymath`
+ immediately but at the first math formula. It is done by `\everymath`
register, but the contents of this register is processed inside the math
group. If we do `\everymath={\_normalmath}` then this complicated macro
will be processed three times in your example above. We want only one
- pocessing, so we do `\everymath={`\`\_setmathfonts``}` and
+ processing, so we do `\everymath={`\`\_setmathfonts``}` and
this macro closes math mode first, loads fonts and opens math mode again.
\_cod -----------------------------
@@ -183,7 +183,7 @@
The \`\boldify` macro does `\let\rm\bf`, `\let\it\bi` and
`\let\normalmath=\boldmath`. All following text will be in bold.
If should be used after \^`\typosize` or \^`\typoscale` macros.\nl
- The internal \`\_runboldmath` macro runs `\_boldmath` immediatelly
+ The internal \`\_runboldmath` macro runs `\_boldmath` immediately
if no delay of the math font loading is set by \^`\_setmainvaluesL`.\nl
The `\rm`, `\it` in math mode must keep its original meaning.
\_cod -----------------------------
diff --git a/Master/texmf-dist/tex/optex/base/fonts-preload.opm b/Master/texmf-dist/tex/optex/base/fonts-preload.opm
index 82387970e68..fb2a7f370ce 100644
--- a/Master/texmf-dist/tex/optex/base/fonts-preload.opm
+++ b/Master/texmf-dist/tex/optex/base/fonts-preload.opm
@@ -43,7 +43,7 @@ use them in the Font Selection System. But the protected versions of these
control sequences are used in the Font Selection System.
If the `*.tfm` files are missing during format generation then the format is
-succesfully generated without any pre-loaded fonts. It doesn't matter if each
+successfully generated without any pre-loaded fonts. It doesn't matter if each
document processed by \OpTeX/ declares Unicode fonts. You can create such
fonts-less format anyway if you set \`\fontspreload` to `\relax` before
`\input optex.ini`, i.e.:
diff --git a/Master/texmf-dist/tex/optex/base/fonts-resize.opm b/Master/texmf-dist/tex/optex/base/fonts-resize.opm
index f4dd3c40339..0f3f07d148b 100644
--- a/Master/texmf-dist/tex/optex/base/fonts-resize.opm
+++ b/Master/texmf-dist/tex/optex/base/fonts-resize.opm
@@ -220,7 +220,7 @@ Let's sum it up. Suppose that \^`\initunifonts` was used.
The `\font` primitive is able to load OpenType
fonts (`otf` or `ttf`), Type1 fonts (`afm` and `pfb`) or classical `tfm` fonts.
We strongly recommend to prefer OpenType format over Type1 format
-over `tfm` format. The last one desn't support Unicode. If there is nothing
+over `tfm` format. The last one doesn't support Unicode. If there is nothing
else left and you must to use `tfm`, then you must to implement re-encoding from
Unicode to the `tfm` encoding at macro level, see the
\ulink[http://petr.olsak.net/optex/optex-tricks.html\#nonunicode]{\OpTeX/ trick 0018}
@@ -300,7 +300,7 @@ the current size. So, the example above can be realized by
re-initialized: now it accepts extended syntax and it is able to load Unicode
OpenType fonts.
* \^`\ufont` is a shortcut of `\initunifonts \font`. I.e.\ it behaves like
- `\font` and accepts extended syntax immediatelly.
+ `\font` and accepts extended syntax immediately.
* \^`\sfont` has syntax like extended `\font`. It declares a macro which
selects the given font and resizes it to the current size (given by
\^`\setfontsize`). In various part of document (text, footnotes, titles), the
@@ -334,7 +334,7 @@ implemented in various design sizes: `cmr5`, `cmr6`, `cmr7`, `cmr8`, `cmr9`,
sizes". Each design size is implemented in its individual font file and \OpTeX/ is
able to choose right file if various optical sizes and corresponding file
names are declared for the font by \^`\_regtfm` or \^`\_regoptsizes` command.
-The command \^`\setfontsize` sets the internal reuirements for
+The command \^`\setfontsize` sets the internal requirements for
optical size if the parameter is in the format `at<dimen>` or `mag<factor>`.
Then the command \^`\resizethefont` or \^`\fontlet` or variant selectors try to choose
the font suitable for the required optical size. For example
diff --git a/Master/texmf-dist/tex/optex/base/fonts-select.opm b/Master/texmf-dist/tex/optex/base/fonts-select.opm
index d403a490d5f..1709ab3f5ca 100644
--- a/Master/texmf-dist/tex/optex/base/fonts-select.opm
+++ b/Master/texmf-dist/tex/optex/base/fonts-select.opm
@@ -286,7 +286,7 @@
\_protected\_edef\_tmpa {%
\_noexpand\_famdepend\_noexpand#1{_f:\_noexpand\_currfamily:\_csstring#1}}%
\_ifx #1\tt
- \_protected\_def\_tt{{\_def\_xfamv{tt}#2\_ea}\_the\_font \_def\_currvar{\_tt}}%
+ \_protected\_def\_tt{{\_def\_xfamv{tt}#2\_ea}\_the\_font \_def\_currvar{\_tt}\_matt}%
\_let\tt=\_tt
\_else \_setnewmeaning #1=\_tmpa \famvardef
\_fi
@@ -800,12 +800,17 @@ about it. There are two cases:
\^`\tt` is an additional special variant selector which is defined as \"select typewriter
font independently of the current font family". By default, the typewriter font-face
-from LatinModern font family is used.
+from LatinModern font family is used. When using this default `\tt` selector you need not to
+load the LatinModern family (by \^`\fontfam[lm]`) because the font file is explicitly
+specified in the macro \^`\_ttunifont`. The default `\tt` selector
+scales this font without respecting optical sizes.
The \^`\tt` variant selector is used in \OpTeX/ internal macros
-\^`\_ttfont` (verbatim texts) and \^`\_urlfont` (printing URL's).
+\^`\_ttfont` (verbatim texts), \^`\_urlfont` (printing URL's),
+\^`\_printii` (printing index entry when doc macros are activated) and
+\^`\ttraggedright` (plain~\TeX/ macro).
-The behavior of \^`\tt` can be re-defined by \^`\famvardef`. For example:
+The \^`\tt` variant selector can be re-defined by \^`\famvardef`. For example:
\begtt
\fontfam[Cursor]
@@ -818,10 +823,32 @@ Test in URL \url{http://something.org}.
\endtt
%
You can see that \^`\tt` stay family independent. This is a special feature only
-for \^`\tt` selector. New definitions of \^`\_ttfont` and \^`\_urlfont` are done too.
-It is recommended to use `\setff{-liga;-tlig}` to suppress the
+for \^`\tt` selector. It is recommended to use `\setff{-liga;-tlig}` to suppress the
ligatures in typewriter fonts.
+The \^`\famvardef\tt` behaves differently than \^`\famvardef\anythingelse`:
+it creates the \^`\tt` variant selector independent of current font family
+and it redefines both macros `\tt` and `\_tt` in order to all internal \OpTeX/ macros
+based on this selector are working with the new selected font.
+
+If you load \^`\fontfam[lm]` and declare `\famvardef\tt{\LMfonts\ttset\setff{-tlig}\rm}`
+then you get almost the same behavior as the default `\tt` selector does with one
+difference: a new `\tt` selector respects optical sizes declared in
+the LatinModern font family.
+
+You can implement ex-height correction of `\tt` font with
+respect to your font family used for general text. For example:
+
+\begtt
+\load[lm]
+\famvardef\tt{\LMfonts\ttset\setfontsize{mag1.1}\setff{-tlig}\rm}
+... or ...
+\let\oritt=\tt
+\famvardef\tt{\setfontsize{mag1.1}\oritt}
+\endtt
+The second alternative uses the default font from \^`\_ttunifont` without
+respecting optical sizes.
+
If Unicode math font is loaded then the `\tt` macro selects typewriter
font-face in math mode too. This face
is selected from used Unicode math font and it is independent of
diff --git a/Master/texmf-dist/tex/optex/base/graphics.opm b/Master/texmf-dist/tex/optex/base/graphics.opm
index bf3fec09b6b..88dea56d036 100644
--- a/Master/texmf-dist/tex/optex/base/graphics.opm
+++ b/Master/texmf-dist/tex/optex/base/graphics.opm
@@ -40,6 +40,7 @@
\_opinput {\_the\_picdir #1_tex}% file with labels
\_egroup}
+\_newtoks\_tmptoks
\_newtoks\_inkdefs \_inkdefs={%
\_def\makeatletter#1\makeatother{}%
\_def\includegraphics[#1]#2{\_inkscanpage#1,page=,\_fin \_inspic{\_the\_tmptoks}\_hss}%
@@ -234,7 +235,7 @@
The \`\_setflcolors` uses the \^`\_setcolor` macro to separate filling (non-stroking)
color and stroking color.
The \`\_coc` macro means \"create oval or circle" and it expands to
- the stroking primitve `S` or filling primitive `f` or boh `B`. Only boundary
+ the stroking primitive `S` or filling primitive `f` or boh `B`. Only boundary
stroking is performed after `\fcolor=\relax`. You cannot combine
`\fcolor=\relax` with `\shadow=Y`.
\_cod -----------------------------
@@ -349,7 +350,7 @@
this effect. The `\shadowlevels+1/2` level is equal to the shifted given path.
\_cod -----------------------------
-\_def\_shadowlevels{9} % number of layers for blurr effect
+\_def\_shadowlevels{9} % number of layers for blur effect
\_def\_shadowdarknessA{0.025} % transparency of first shadowlevels/2 layers
\_def\_shadowdarknessB{0.07} % transparency of second half of layers
\_def\_shadowmoveto{1.8 -2.5} % vector defines shifting layer (in bp)
@@ -454,5 +455,5 @@ the \^`\transformbox{<transformation>}{\copy\mypic}`.
2022-03-03: \_coc introduced
2021-07-16: \inoval, \incircle are more simple, using attribitecolor features
2021-03-19: \inkinspic: pictures in subdirectories, bug fixed
-2020-12-21: \puttext: \box0 in goup, bugfix
+2020-12-21: \puttext: \box0 in group, bugfix
2020-04-12: \_public \clipinoval \clipincircle ; added, bug fixed
diff --git a/Master/texmf-dist/tex/optex/base/hisytnax-kt.opm b/Master/texmf-dist/tex/optex/base/hisyntax-kt.opm
index 8a9d2dffac3..8a9d2dffac3 100644
--- a/Master/texmf-dist/tex/optex/base/hisytnax-kt.opm
+++ b/Master/texmf-dist/tex/optex/base/hisyntax-kt.opm
diff --git a/Master/texmf-dist/tex/optex/base/hyperlinks.opm b/Master/texmf-dist/tex/optex/base/hyperlinks.opm
index 7c3e78635aa..dda19b91300 100644
--- a/Master/texmf-dist/tex/optex/base/hyperlinks.opm
+++ b/Master/texmf-dist/tex/optex/base/hyperlinks.opm
@@ -77,7 +77,7 @@
\nl
\`\ilink``[<type>:<spec>]{<text>}` is equivalent to \^`\link` but
the `<color>` is used from \^`\hyperlinks` declaration
- (or it is overwriten by `\def\_<type>linkcolor`).
+ (or it is overwritten by `\def\_<type>linkcolor`).
\nl
\`\ulink``[<url>]{<text>}` creates external link.
The `<url>` is detokenized with `\escapechar=-1` before it is used, so
@@ -122,7 +122,7 @@
are typical skips used for special characters, their meaning is
documented in the code below. You can change them.
Default values: penalty 9990 is inserted between each pair of normal
- chararacters, penalty 100 is inserted after special charcters, nobreak before special
+ characters, penalty 100 is inserted after special characters, nobreak before special
characters. The URL can be broken at any place using these default
values. If you want to disable breaking between normal characters, say
`\let\_urlxskip=\nobreak`.
diff --git a/Master/texmf-dist/tex/optex/base/if-macros.opm b/Master/texmf-dist/tex/optex/base/if-macros.opm
index 25af86fe303..28adb0a02fb 100644
--- a/Master/texmf-dist/tex/optex/base/if-macros.opm
+++ b/Master/texmf-dist/tex/optex/base/if-macros.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \newif {Special if-macros, is-macros and loops <2024-02-19>} % preloaded in format
+\_codedecl \newif {Special if-macros, is-macros and loops <2024-11-24>} % preloaded in format
\_doc ----------------------------
\secc Classical \code{\\newif}
@@ -35,6 +35,15 @@
\begtt \catcode`<=13
\if<something> \afterfi{<result is true>} \else \afterfi{<result is false>} \fi
\endtt
+ \`\afterxfi` `{<what to do>}<ignored>\xfipoint` closes all opened
+ `\if..\fi` conditionals until \`\xfipoint` is found and then proceses <what to do>.
+ The <ignored> text must expand to nothing (or spaces only); arbitrary number
+ of opened conditionals can be closed here. Example:
+ \begtt
+ \ifodd#1 \ifodd#2 \afterxfi{odd-odd} \else \afterxfi{odd-even} \fi
+ \else \ifodd#2 \afterxfi{even-odd} \else \afterxfi{even-even} \fi
+ \fi \xfipoint
+ \endtt
Nested `\if..\afterfi{\if..\afterfi{...}\fi}\fi` are possible. Another approach is mentioned
in \ulink[http://petr.olsak.net/optex/optex-tricks.html\#fiinif]{OpTeX trick 0098}
which also solves the `\fi` in `\if` problem.
@@ -42,6 +51,9 @@
\_long\_def \_afterfi#1#2\_fi{\_fi#1}
\_long\_def \afterfi#1#2\fi{\_fi#1}
+\_let\_xfipoint=\_empty \_let\xfipoint=\_empty % \xfipoint alone does nothing
+\_long\_def \_afterxfi#1#2\_xfipoint{\_romannumeral#20 #1}
+\_long\_def \afterxfi#1#2\xfipoint{\_romannumeral#20 #1}
\_doc ----------------------------
\secc Loops
@@ -49,11 +61,10 @@
until `\ifsomething` is false. Then `<codeB>` is not executed and loop is
finished. This works like in plain \TeX, but implementation is somewhat
better (you can use `\else` clause after the `\ifsomething`).
-
There are public version `\loop...\repeat` and private version
\`\_loop` ...\`\_repeat`. You cannot mix both versions in one loop.
- The `\loop` macro keeps its original plain TeX meaning. It is not
+ The `\loop` macro keeps its original plain \TeX/ meaning. It is not
expandable and nested `\loop`s are possible only in a \TeX/ group.
\_cod ----------------------------
@@ -64,6 +75,30 @@
\_def \_iterate {\_body \_ea \_iterate \_fi}
\_doc -----------------------------
+ \`\xloop` `<parameters>\do <codeA> \ifsomething <codeB> \repeat` or\nl
+ \`\_xloop` `<parameters>\_do <codeA> \_ifsomething <codeB> \_repeat`
+ behave analogically like \^`\loop`, but moreover: you can specify a rule of
+ parameters scanning (like in `\def` primitive) and you can
+ use these parameters (i.e. `#1`, `#2`, etc.) in the <codeA> or <codeB>.
+ Each iteration of this loop reads next parameters from the input queue
+ (just after `\repeat`) using the <parameters> rule. Example:
+ \begtt
+ \def\countparams{\tmpnum=0
+ \xloop ##1,\do \ifx\end##1\empty \else \incr\tmpnum \repeat}
+ \def\list{A, B, C}
+ \ea \countparams \list,\end, % \tmpnum = the number of comma separated parameters
+ \endtt
+ Second new feature: the \^`\xloop` macro is expandable,
+ if <codeA> and <codeB> include only expandable macros. This is not the
+ case of previous example but you can prefix `\tmpnum=0` and `\incr` by
+ the `\immediateassignment` \LuaTeX/ primitive and you get expandable macro
+ `\countparams`.
+ \_cod -----------------------------
+
+\_long\_def\xloop#1\do#2\repeat{\_immediateassignment\_long\_def\_body#1{#2\_ea\_body\_fi}\_body}
+\_long\_def\_xloop#1\_do#2\_repeat{\_immediateassignment\_long\_def\_body#1{#2\_ea\_body\_fi}\_body}
+
+ \_doc -----------------------------
{\_let\_moremainpoints=\_relax
\`\foreach` `<list>`\`\do` `{<what>}`
repeats `<what>` for each element of the
@@ -81,15 +116,19 @@
Note that `\foreach <list>\do {<what>}` is equivalent to `\foreach <list>\do #1{<what>}`.
Recommendation: it is better to use private variants of \`\_foreach`.
- When the user writes `\input tikz` then `\foreach` macro is redefined in
+ When the user writes `\load[tikz]` then `\foreach` macro is redefined in
each TikZ environment.
- The private variants use \`\_do` separator instead `\do` separator.}
+ The private variants use \`\_do` separator instead `\do` separator
+ and it isn't redefined.}
\_cod -----------------------------
\_newcount\_frnum % the numeric variable used in \fornum
\_def\_do{\_doundefined} % we need to ask \_ifx#1\_do ...
-\_long\_def\_foreach #1\_do #2#{\_isempty{#2}\_iftrue
+\_def\_foreach{\_foreachAx\_empty} \_def\foreach{\_foreachAy\_empty}
+\_long\_def\_foreachAx #1\_do #2#{\_ea\_foreachAz\_ea{#1}{#2}}
+\_long\_def\_foreachAy #1\do #2#{\_ea\_foreachAz\_ea{#1}{#2}}
+\_long\_def\_foreachAz #1#2{\_isempty{#2}\_iftrue
\_afterfi{\_foreachA{#1}{##1}}\_else\_afterfi{\_foreachA{#1}{#2}}\_fi}
\_long\_def\_foreachA #1#2#3{\_putforstack
\_immediateassignment \_long\_gdef\_fbody#2{\_testparam##1..\_iftrue #3\_ea\_fbody\_fi}%
@@ -98,9 +137,6 @@
\_long\_def\_testparam#1#2#3\_iftrue{\_ifx###1\_empty\_ea\_finbody\_else}
\_long\_def\_finbody#1\_finbody{}
-\_long\_def\foreach #1\do#2#{\_isempty{#2}\_iftrue
- \_afterfi{\_foreachA{#1}{##1}}\_else\_afterfi{\_foreachA{#1}{#2}}\_fi}
-
\_doc -----------------------------
{\_let\_moremainpoints=\_relax
\`\fornum` `<from>..<to>` \`\do` `{<what>}` or
@@ -112,7 +148,7 @@
The test in the \`\_fornumB` says: if (<to> $\string<$ <current number>
AND <step> is positive) or if (<to> $>$ <current number> AND <step> is
negative) then close loop by `\_getforstack`. Sorry, the condition is
- writen by somewhat cryptoid \TeX/ language.}
+ written by somewhat cryptoid \TeX/ language.}
\_cod -----------------------------
\_def\_fornum#1..#2\_do{\_fornumstep 1:#1..#2\_do}
@@ -175,7 +211,7 @@
\foreachdef\mymacro #1,{[#1]}
\mymacro{a,b,cd,efg,}
\endtt
- expands to [a][b][cd][efg]. Such user defined macros are more effecive during processing
+ expands to [a][b][cd][efg]. Such user defined macros are more effective during processing
than `\foreach` itself because they need not to operate with the for-stack.
\_cod ----------------------------
@@ -255,9 +291,9 @@
The category codes are relevant here. The macro is expandable.
\_cod ----------------------------
-\_long\_def\_isinlist#1#2{%
+\_long\_def\_isinlist#1#2#3{%
\_immediateassignment\_long\_def\_isinlistA##1#2##2\_end/_%
- {\_if\_relax\_detokenize{##2}\_relax \_ea\_unless\_fi}%
+ {\_if\_relax\_detokenize{##2}\_relax \_ea\_unless\_fi#3}%
\_ea\_isinlistA#1\_endlistsep#2\_end/_%
}
\_public \isinlist ;
@@ -268,11 +304,11 @@
\_cod -----------------------------
\_newread \_testin
-\_def\_isfile #1{%
+\_def\_isfile #1#2{%
\_openin\_testin ={#1}\_relax
\_ifeof\_testin \_ea\_unless
\_else \_closein\_testin
- \_fi
+ \_fi #2%
}
\_public \isfile ;
@@ -384,6 +420,10 @@
\_endcode
+2024-11-24 \foreach bug fixed: \foreach {xx}\do {...}
+2024-11-12 \isinlist, \isfile allow space before \iftrue/\iffalse
+2024-11-10 \xloop implemented.
+2024-09-10 \afterxfi implemented.
2024-02-19 \qcasesof reimplemented, it supports | for more phrases.
2023-12-07 \_testparam define \long (big fixed).
2023-10-17 \qcasesof introduced, \xcasesof reimplemented.
diff --git a/Master/texmf-dist/tex/optex/base/lang-data.opm b/Master/texmf-dist/tex/optex/base/lang-data.opm
index 17aa26c4bfb..a1634a2e7f9 100644
--- a/Master/texmf-dist/tex/optex/base/lang-data.opm
+++ b/Master/texmf-dist/tex/optex/base/lang-data.opm
@@ -201,5 +201,5 @@
2022-08-31: \_sortingdatahu corrected
2022-06-28: Spanish, Polish, French, Swedish, Hungarian sorting rules added
2022-06-28: German sorting rules added
-2022-02-19: concept finalized, but data still far of completness
+2022-02-19: concept finalized, but data still far of completeness
2022-02-04: released
diff --git a/Master/texmf-dist/tex/optex/base/lists.opm b/Master/texmf-dist/tex/optex/base/lists.opm
index b372edf635a..6fe699fedeb 100644
--- a/Master/texmf-dist/tex/optex/base/lists.opm
+++ b/Master/texmf-dist/tex/optex/base/lists.opm
@@ -125,6 +125,6 @@
2023-10-20 \style d moved from OpTeX trick 0108 to the format
2022-02-25 \olistskipamount, \ilistskipamount, \itemskipamount introduced
-2021-03-10 \_ifmmode*\_else\_ea\_startitem\_fi added to * defintition
+2021-03-10 \_ifmmode*\_else\_ea\_startitem\_fi added to * definition
2020-04-21 \isnextchar\par added to \enditems
2020-03-18 introduced
diff --git a/Master/texmf-dist/tex/optex/base/logos.opm b/Master/texmf-dist/tex/optex/base/logos.opm
index 1168c25b58f..0b0aff909c8 100644
--- a/Master/texmf-dist/tex/optex/base/logos.opm
+++ b/Master/texmf-dist/tex/optex/base/logos.opm
@@ -57,7 +57,7 @@
\_doc ----------------------------
The expandable versions of logos used in Outlines need the expandable
- \`\ingnslash` (instead of the \^`\ignoreslash`).
+ \`\ignslash` (instead of the \^`\ignoreslash`).
\_cod \_fin ----------------------
\_def\_ignslash#1{\_ifx/#1\_else #1\_fi}
diff --git a/Master/texmf-dist/tex/optex/base/makeindex.opm b/Master/texmf-dist/tex/optex/base/makeindex.opm
index a3af094f26d..bd9ccde7512 100644
--- a/Master/texmf-dist/tex/optex/base/makeindex.opm
+++ b/Master/texmf-dist/tex/optex/base/makeindex.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \makeindex {Makeindex and sorting <2023-06-02>} % preloaded in format
+\_codedecl \makeindex {Makeindex and sorting <2024-12-01>} % preloaded in format
\_doc -----------------------------
\^`\makeindex` implements sorting algorithm at \TeX/ macro-language level.
@@ -25,7 +25,7 @@
\_cod -----------------------------
\_def \_sortingdatalatin {%
- /,{ },-,&,@,%
+ |,<,/,{ },_,-,&,@,%
aAàÀâÂäÄáÁ,%
ąĄ,%
bB,%
@@ -64,7 +64,7 @@
źŹ,%
żŻ,%
^^Z,% Hungarian: cz:c^^Z, etc., see \_compoundcharshu in lang-data.opm
- 0,1,2,3,4,5,6,7,8,9,'%
+ 0,1,2,3,4,5,6,7,8,9,',>%
}
\_doc -----------------------------
@@ -76,7 +76,7 @@
Others not mentioned characters have undefined behavior during sorting.
\_cod -----------------------------
-\_def \_ignoredcharsgeneric {.,;?!:'"|()[]<>=+-}
+\_def \_ignoredcharsgeneric {.,;?!:'"()[]=+-}
\_doc -----------------------------
Sorting is always processed by rules of a given language. The macros
@@ -142,8 +142,8 @@
French sorting rule says: if the words are the same except for accents
then accented letters are sorted after unaccented leters but
read the words from their end in the second pass.
- For example corect sorting is: cote $\lt$ côte $\lt$ coté
- $\lt$ côté. This rule can be activated if the contol sequence
+ For example correct sorting is: cote $\lt$ côte $\lt$ coté
+ $\lt$ côté. This rule can be activated if the control sequence
\`\_secondpass``<lang-tag>` is set to \^`\_reversewords`.
For example, `lang-data.opm` declares `\_let\_secondpassfr=\_reversewords`.
@@ -151,7 +151,7 @@
Preparing to primary pass is performed by the \`\_setprimarysorting` macro
implemented here.
The <lang-tag> is saved to the \^`\_sortinglang` macro when sorting is
- initialized in \^`\_dosorting` (it is typicaly derived from current `\language` value).
+ initialized in \^`\_dosorting` (it is typically derived from current `\language` value).
The \^`\_setprimarysorting` is called from \^`\_dosorting` macro and all
processing of sorting is in a group. It sets actual
\^`\_sortingdata`, \^`\_compoundchars` and \^`\_ignoredchars` if given language
@@ -254,7 +254,7 @@
words are equal in the primary pass. It runs \^`\_setsecondarysorting` if it
was not initialized already. Then prepares compared words to `\_tmpa` and
`\_tmpb` and corrects them by \^`\_prepsecondpass` if needed.
- Finaly, the test is recursively done by the macro \`\_testAleBsecondaryX`
+ Finally, the test is recursively done by the macro \`\_testAleBsecondaryX`
`<converted-string1>0\_relax<converted-string2>1\_relax`
\_cod -----------------------------
@@ -282,26 +282,26 @@
\_def\_mergesort #1#2,#3{% by Miroslav Olsak
\_ifx,#1% % prazdna-skupina,neco, (#2=neco #3=pokracovani)
- \_addto\_iilist{#2,}% % dvojice skupin vyresena
+ \_toksapp\_tmptoks{#2,}% % dvojice skupin vyresena
\_sortreturn{\_fif\_mergesort#3}% % \mergesort pokracovani
\_fi
\_ifx,#3% % neco,prazna-skupina, (#1#2=neco #3=,)
- \_addto\_iilist{#1#2,}% % dvojice skupin vyresena
- \_sortreturn{\_fif\_mergesort}% % \mergesort dalsi
+ \_toksapp\_tmptoks{#1#2,}% % dvojice skupin vyresena
+ \_sortreturn{\_fif\_mergesort}% % \mergesort dalsi
\_fi
- \_ifx\_fin#3% % neco,konec (#1#2=neco)
- \_ifx\_empty\_iilist % neco=kompletni setrideny seznam
- \_def\_iilist{#1#2}%
+ \_ifx\_fin#3% % neco,konec (#1#2=neco)
+ \_if;\_the\_tmptoks;% % neco=kompletni setrideny seznam
+ \_tmptoks{#1#2}%
\_sortreturn{\_fif\_fif\_gobbletoend}% % koncim
\_else % neco=posledni skupina nebo \end
\_sortreturn{\_fif\_fif % spojim \indexbuffer+necoa cele znova
- \_edef\_iilist{\_ea}\_ea\_mergesort\_iilist#1#2,#3}%
+ \_tmptoks\_ea{\_ea}\_ea\_mergesort\_the\_tmptoks#1#2,#3}%
\_fi\_fi % zatriduji: p1+neco1,p2+neco2, (#1#2=p1+neco1 #3=p2)
\_isAleB #1#3\_ifAleB % p1<p2
- \_addto\_iilist{#1}% % p1 do bufferu
+ \_toksapp\_tmptoks{#1}% % p1 do bufferu
\_sortreturn{\_fif\_mergesort#2,#3}% % \mergesort neco1,p2+neco2,
\_else % p1>p2
- \_addto\_iilist{#3}% % p2 do bufferu
+ \_toksapp\_tmptoks{#3}% % p2 do bufferu
\_sortreturn{\_fif\_mergesort#1#2,}% % \mergesort p1+neco1,neco2,
\_fi
\_relax % zarazka, na ktere se zastavi \sortreturn
@@ -331,7 +331,7 @@
\_begingroup
\_ifasciisorting \_def\_sortinglang{ASCII}\_fi
\_ifx\_sortinglang\_undefined \_edef\_sortinglang{\_cs{_lan:\_the\_language}}\_fi
- \_message{OpTeX: Sorting \_string#1 (\_sortinglang) ...^^J}%
+ \_sortmessage{OpTeX: Sorting \_string#1 (\_sortinglang) ...^^J}%
\_ismacro\_sortinglang{ASCII}\_iftrue
\_def \_preparesorting##1{\_edef\_tmpb{\_ea\_ignoreit\_csstring##1}}%
\_let \_setsecondarysorting=\_relax
@@ -344,15 +344,17 @@
\_ea\_let \_ea\_compoundchars \_csname _xcompoundchars\_sortinglang\_endcsname
\_fi % \_compoundchars can differ in the second pass of sorting
\_csname _secondpass\_sortinglang \_endcsname % activates \_reversewords if needed
- \_def \_act##1{\_addto #1{##1,}}%
+ \_def \_act##1{\_toksapp\_tmptoks{##1,}}%
+ \_tmptoks{}%
\_edef #1{\_ea}\_ea\_xargs \_ea\_act #1;% commas between items added, mergesort initialized
- \_edef \_iilist{\_ea}\_ea\_mergesort #1\_fin,\_fin
+ \_tmptoks\_ea{\_ea}\_ea\_mergesort \_the\_tmptoks\_fin,\_fin
\_ea\_endgroup
- \_ea\_def\_ea#1\_ea{\_iilist}%
+ \_ea\_def\_ea#1\_ea{\_the\_tmptoks}%
}
+\_let\_sortmessage=\_message % User can do \let\_sortmessage=\_ignoreit, for example
\_doc -----------------------------
- French rules needs reverese reading the words in the second pass.
+ French rules needs reverse reading the words in the second pass.
The \`\_reversewords` is activated in this case and it adds
new job to the macro \`\_prepsecondpass`: it reverses the letters in
the compared words (saved in `\_tmpa` and `\_tmpb`) by the expandable
@@ -437,13 +439,17 @@
}
\setiicodes AÀÂÄÁ,ĆČ,DĎ,EÈÉËÊĚ,IÍÏÎ,LĹĽ,OÖÓÔ,RŔ,ŚŠ,TŤ,UÙÛÜÚŮŰ,YÝŸ,{},
\endtt
+ If the first character of the <word> is \string< or > then it isn't printed.
+ It can be used as first character of the index entry in order to put the entry
+ to a group entries sorted \string<before or >after whole normal entries.
\_cod -----------------------------
\_def\_printii #1&{\_definefirstii #1&%
\_ifx\_firstii\_lastii\_else
\_ea\_newiiletter\_ea{\_firstii}{#1}\_let\_lastii=\_firstii\_fi
\_gdef\_currii{#1}\_the\_everyii\_noindent
- \_hskip-\_iindent \_ignorespaces\_printiiA#1//}
+ \_hskip-\_iindent \_ignorespaces \_isnextchar<{\_ea\_printiiA\_ignoreit}%
+ {\_isnextchar>{\_ea\_printiiA\_ignoreit}{\_printiiA}}#1//}
\_def\_printiiA #1/{\_if^#1^\_let\_previi=\_currii \_else
\_ea\_scanprevii\_previi/&\_edef\_tmpb{\_detokenize{#1}}%
\_ifx\_tmpa\_tmpb \_iiemdash \_else#1 \_gdef\_previi{}\_fi
@@ -559,7 +565,8 @@
\_def\_iiB #1,{\_if$#1$\_else \_iiC#1/\_relax \_ea\_iiB\_fi}
\_def\_iiC #1/#2\_relax{\_if$#2$\_else\_iindex{#2#1}\_fi}
-\_def\_iid #1 {\_leavevmode\_iindex{#1}\_def\_iitypesaved{}#1\_futurelet\_tmp\_iiD}
+\_def\_iid #1 {\_leavevmode\_iindex{#1}\_def\_iitypesaved{}%
+ \_isnextchar<{\_ignoreit}{\_isnextchar>{\_ignoreit}{}}#1\_futurelet\_tmp\_iiD}
\_def\_iiD{\_ifx\_tmp,\_else\_ifx\_tmp.\_else\_space\_fi\_fi}
\_def\_iis #1 #2{{\_def~{ }\_global\_sdef{_,#1}{#2}}\_ignorespaces}
@@ -571,6 +578,9 @@
\_endcode % -------------------------------------
+2024-12-01 < first, > last character for sorting, unprinted by \makindex
+2024-11-24 | set as first in sortingdata: it can be used as item separator
+2024-10-31 \mergesort time-optimized using \toksapp instead \addto
2023-06-02 \_stripfromcaret introduced
2023-03-12 \_definefirstii introduced
2022-06-28 \_reversewords for French sorting introduced
@@ -579,6 +589,6 @@
2022-03-18 \iid didn't ignore space, bug fixed
2022-02-19 \_sotringdataen etc. moved to lang-data.opm file
2021-02-15 \_expandafter -> \_ea
-2021-02-01 secodary sorting: start from code 65
+2021-02-01 secondary sorting: start from code 65
2020-04-21 \isempty \iffalse ... \fi added to \iindex
2020-03-26 introduced
diff --git a/Master/texmf-dist/tex/optex/base/maketoc.opm b/Master/texmf-dist/tex/optex/base/maketoc.opm
index cb4c318b130..d373d0994d9 100644
--- a/Master/texmf-dist/tex/optex/base/maketoc.opm
+++ b/Master/texmf-dist/tex/optex/base/maketoc.opm
@@ -48,7 +48,7 @@
text text .................... <pageno>
\endtt
Margins given by `\leftskip` and `\rightskip` are denoted by `|` in the
- examle above.
+ example above.
\nl
\`\tocrefnum` is the global counter of all TOC records (used by hyperlinks).
\_cod ------------------------------------
@@ -85,7 +85,7 @@
* \`\_tocdotfill` creates dots in the TOC.
* \`\_nofirst``\macro` applies the `\macro` only if we don't print the first
record of the TOC.
- * \`\_tocpar` finalizes one TOC recors whith rlapped `<pageno>`.
+ * \`\_tocpar` finalizes one TOC record with rlapped `<pageno>`.
* \`\_pgn``{<pageno>}` creates <pageno> as link to real `<gpage>` saved in `#6`
of \^`\_tocline`. This is temporarily defined in the \^`\_tocline`.
\enditems
@@ -98,7 +98,7 @@
\_def\_tocpar{\_nobreak \_hskip-2\_iindent\_null \_par}
\_doc -----------------------------------
- If you want a special formating of TOC with adding more
+ If you want a special formatting of TOC with adding more
special lines (no generated as titles from `\chap`, `\sec`, `\secc`), you
can define `\addtotoc{<level>}{<type>}{<number>}{<o-title>}{<title>}` macro:
\begtt
diff --git a/Master/texmf-dist/tex/optex/base/margins.opm b/Master/texmf-dist/tex/optex/base/margins.opm
index c7751ccb064..b3948b81403 100644
--- a/Master/texmf-dist/tex/optex/base/margins.opm
+++ b/Master/texmf-dist/tex/optex/base/margins.opm
@@ -65,7 +65,7 @@
\_doc ----------------------------
\`\magscale` `[<factor>]` does `\mag=<factor>` and recalculates page
dimensions to their true values.\nl
- \`\_truedimen``<dimen-register>` retunrs true value of <dimen-register>
+ \`\_truedimen``<dimen-register>` returns true value of <dimen-register>
regardless of `\mag`.
\_cod ----------------------------
diff --git a/Master/texmf-dist/tex/optex/base/math-macros.opm b/Master/texmf-dist/tex/optex/base/math-macros.opm
index 9d0887ee0fb..ccdcfbc9331 100644
--- a/Master/texmf-dist/tex/optex/base/math-macros.opm
+++ b/Master/texmf-dist/tex/optex/base/math-macros.opm
@@ -1,6 +1,6 @@
% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \sin {Math macros plus mathchardefs <2024-06-02>} % preloaded in format
+\_codedecl \sin {Math macros plus mathchardefs <2024-11-19>} % preloaded in format
\_doc -----------------------------
The category code of the character `_` remains as the letter (11) and the mathcode
@@ -385,7 +385,7 @@
height+depth in em units.\nl
The \^`\big`, \^`\Big`, \^`\bigg`, \^`\Bigg` macros keep the strut height+depth
from plain \TeX/ and \^`\bbig` is a new macro in \OpTeX/. It generates the size
- 1.44\,em beween \^`\big` and \^`\Big` which is
+ 1.44\,em between \^`\big` and \^`\Big` which is
accessible in most of Unicode math fonts (but not in classical `cmex10`).
\_cod -----------------------------
@@ -1101,15 +1101,18 @@
\_def\_mathbox#1{{\_mathstyles{\_hbox{%
\_ifnum\_stylenum<2 \_everymath{\_currstyle}%
- \_else
+ \_else \_ifx \_normalmath\_normalunimath
\_ifnum\_stylenum=2 \_def\_textmff{ssty=1;}\_fi
\_ifnum\_stylenum=3 \_def\_textmff{ssty=2;}\_def\_scriptmff{ssty=2;}\_fi
- \_typoscale[\_dobystyle{}{}{700}{500}/]\_fi #1}}}%
+ \_typosize[\_ea\_ignorept\_the\_fontdimen6\_dobystyle{}{}\_scriptfont\_scriptscriptfont1/]%
+ \_else \_typoscale[\_dobystyle{}{}{700}{500}/]%
+ \_fi\_fi #1}}}%
}
\_public \mathbox ;
\_endcode %---------------------------------------------------
+2024-11-19 \typosize used fo Uni-fonts in \mathbox in order to respect their sizes
2024-06-02 don't apply \mathsbon twice
2023-05-24 \matsbon: "local num" added
2023-05-22 \mathsbon: \alpha_i\beta_j -> \alpha _i\beta _j (bug fixed)
@@ -1121,13 +1124,13 @@
2021-03-19 allow text mode \{ and \}
2021-02-15 \_mathbox redefines \_textmff etc. in order to respect optical sizes
2021-02-04 \_bordermatrixwithdelims introduced.
-2021-01-23 better expession for math styles in \matrix
+2021-01-23 better expression for math styles in \matrix
2021-01-22 bad use of \_stylenum in \matrix + bad value (bug fix: \_stylenum->\_mtstylenum)
2020-12-17 \box0->\hbox{\box0} in \_finphant and \_finsmash, see https://tex.stackexchange.com/questions/574997/
2020-06-14 \borermatrix, \cases corrected
2020-06-13 \adots introduced, \matrix smaller in T mode too.
2020-06-03 \notin corrected
-2020-06-02 $$\par$$ error is supressed, so we define \(l)eqalign(no), \displayines as \long
+2020-06-02 $$\par$$ error is suppressed, so we define \(l)eqalign(no), \displayines as \long
2020-05-30 \cases: group added in the second column.
"\displaylines to<size>" implemented and documented.
2020-05-11 \let\|=\Vert, bug fixed
diff --git a/Master/texmf-dist/tex/optex/base/math-preload.opm b/Master/texmf-dist/tex/optex/base/math-preload.opm
index fbfdc8af1e9..bcbfa175f8c 100644
--- a/Master/texmf-dist/tex/optex/base/math-preload.opm
+++ b/Master/texmf-dist/tex/optex/base/math-preload.opm
@@ -194,7 +194,7 @@
them only for 10\,pt typesetting). The `\skewchar` of some math families are
set here too.\nl
\^`\_setmathparam \Umathspaceafterscript` is used instead `\scriptspace`
- setting because \LuaTeX/ ingnores `\scriptspace` in most cases. There is
+ setting because \LuaTeX/ ignores `\scriptspace` in most cases. There is
small difference from classical \TeX/: we set \"scaled"
`\Umathspaceafterscript` dependent on textstyle, scriptstyle, etc.\ sizes.
The \`\_scriptspacefactor` is set to 0.05 which gives the same result
@@ -251,7 +251,7 @@ For example
2022-12-01 reading number by \_loadmathfamily, \_setmathfamily more robust
2022-11-16: \_corrmsize removed, \_mfactor introduced
-2022-09-04: \crampedstyles setings added.
+2022-09-04: \crampedstyles settings added.
2022-07-22: \_setmathparam\_Umathspaceafterscript added.
2022-02-22: \rm, \it, etc moved to fonts-select, \_marm, \_mait etc. introduced
2020-05-06: \itfam, \ttfam removed, (Unicode math preferred)
diff --git a/Master/texmf-dist/tex/optex/base/more-macros.opm b/Master/texmf-dist/tex/optex/base/more-macros.opm
index 7e1d1e2b94a..ef6c6faf784 100644
--- a/Master/texmf-dist/tex/optex/base/more-macros.opm
+++ b/Master/texmf-dist/tex/optex/base/more-macros.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \eoldef {OpTeX useful macros <2024-02-10>} % preloaded in format
+\_codedecl \eoldef {OpTeX useful macros <2024-10-31>} % preloaded in format
\_doc -----------------------------
We define \`\opinput` `{<file name>}` macro which
@@ -78,7 +78,7 @@
\_public \normalcatcodes ;
\_doc -----------------------------
- The \`\load` `[<filename-list>]` loads files specfied in
+ The \`\load` `[<filename-list>]` loads files specified in
comma separated `<filename-list>`. The first space (after comma)
is ignored using the trick `#1#2,`: first parameter is unseparated.
The `\load` macro saves information about loaded files by setting
@@ -205,39 +205,47 @@
`\_replacestringsA#1<textA>{...}` and runs
`\_replacestringsA<foo-body>?<textA>!<textA>`.
So, `#1` includes the first part of <foo-body> before first <textA>.
- It is saved to \`\_tmptoks` and `\_replacestringsB` is run in a loop.
- It finishes processing or appends the next part to `\_tmptoks` separated by
- <textB> and continues loop. The final part of the macro removes the last `?`
- from resulting `\_tmptoks` and defines a new version of the `\foo`.
-
- The \^`\replstring` macro is not expandable, but you can create your
- expandable macro, for example:
- \begtt
- \def\replAB#1{\immediateassigned{\def\tmp{#1}\replstring\tmp{A}{B}}\the\_tmptoks}
- \replAB {text A \and A} % expands to "text B \and B"
- \endtt
-
- There exists another limitation of the \^`\replstring` macro, see
- \ulink[http://petr.olsak.net/optex/optex-tricks.html\#xreplstring]{\OpTeX/ trick 0136}.
- The expandable \^`\xreplstring` macro is defined by Lua code here.
- And \ulink[http://petr.olsak.net/optex/optex-tricks.html\#replmacro]{\OpTeX/ trick 0137}
- defines \^`\replmacro` which enables more general modifications of macros by regular expressions.
+ It is saved to \`\_repltoks` and `\_replacestringsB` is run with `\_replacestingsC` in a loop.
+ It finishes processing (if final `!` is scanned) or appends the next part to `\_repltoks` separated by
+ <textB> and continues loop. The final part of the \^`\replstring` macro removes the last `?`
+ from resulting `\_repltoks` and defines a new version of the `\foo`.
\_cod -----------------------------
-\_newtoks\_tmptoks
+\_newtoks\_repltoks
\_catcode`!=3 \_catcode`?=3
-\_def\_replstring #1#2#3{% \replstring #1{stringA}{stringB}
- \_long\_def\_replacestringsA##1#2{\_tmptoks{##1}\_replacestringsB}%
- \_long\_def\_replacestringsB##1#2{\_ifx!##1\_relax \_else \_toksapp\_tmptoks{#3##1}%
- \_ea\_replacestringsB\_fi}%
- \_ea\_replacestringsA #1?#2!#2%
- \_long\_def\_replacestringsA##1?{\_tmptoks{##1}\_edef#1{\_the\_tmptoks}}%
- \_ea\_replacestringsA \_the\_tmptoks}
+\_long\_def\_replstring #1#2#3{% \replstring #1{stringA}{stringB}
+ \_long\_def\_replacestringsA##1#2{\_repltoks\_ea{##1}\_replacestringsB\_empty}%
+ \_long\_def\_replacestringsB##1#2{\_ea\_replacestringsC\_ea{##1}}%
+ \_long\_def\_replacestringsC##1{\_ifx!##1\_empty\_else
+ \_toksapp\_repltoks{#3##1}\_ea\_replacestringsB\_ea\_empty\_fi}%
+ \_ea\_replacestringsA \_ea\_empty#1?#2!#2%
+ \_ea\_replacestringsD \_ea\_empty\_the\_repltoks#1}
+\_long\_def\_replacestringsD #1?#2{\_repltoks\_ea{#1}\_edef#2{\_the\_repltoks}}%
\_normalcatcodes
\_public \replstring ;
\_doc -----------------------------
+ You can find three special tricks in the \^`\replstring` code:
+ \begitems
+ * Adding and removing `?` character: without this the
+ `\def\b{xxxA}\replstring\b{AA}{BB}` will cause an error.
+ * Using `\_toksapp` instead `\addto`: without this you cannot have $`#`_6$
+ in the string. Moreover, it significantly
+ reduces the calculation time. Unfortunately, it does \^`\replstring` unexpandable.
+ * Using `\_empty` before scanning separated parameters and removing it
+ after scanning by \^`\ea`: without this \TeX/
+ removes braces from `<textA>{xxx}<textA>`.
+ \enditems
+
+ The \^`\replstring` macro isn't expandable. But you can use
+ \ulink[http://petr.olsak.net/optex/optex-tricks.html\#xreplstring]{\OpTeX/ trick 0136}.
+ The expandable \^`\xreplstring` macro with more features is defined by Lua code here.
+ And \ulink[http://petr.olsak.net/optex/optex-tricks.html\#replmacro]{\OpTeX/ trick 0137}
+ defines \^`\replmacro` which enables more general modifications of macros by regular expressions.
+ \_cod -----------------------------
+
+ \_doc -----------------------------
The \`\catcode` primitive is redefined here. Why?
There is very common cases like \code{\\catcode`}`<something>`
or `\catcode"<number>` but these characters
@@ -408,6 +416,8 @@
\_endcode % -------------------------------------
+2024-10-31 \_tmptoks replaced by \_repltoks in \replstring
+2024-09-09 \replstring: uses \toksapp (better speed) and \empty (keeps braces)
2024-02-10 \optdef reimplemented, it can create expandable macros now.
2024-01-18 \bracedparam reimplemented.
2023-12-04 \nnum introduced
diff --git a/Master/texmf-dist/tex/optex/base/multicolumns.opm b/Master/texmf-dist/tex/optex/base/multicolumns.opm
index d84aef69c6f..ec80d0f208d 100644
--- a/Master/texmf-dist/tex/optex/base/multicolumns.opm
+++ b/Master/texmf-dist/tex/optex/base/multicolumns.opm
@@ -1,13 +1,13 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \begmulti {Balanced columns <2022-11-26>} % preloaded in format
+\_codedecl \begmulti {Balanced columns <2024-10-31>} % preloaded in format
\_doc -----------------------------
\`\_betweencolumns` or \`\_leftofcolumns` or \`\_rightofcolumns` include
a material printed between columns or left of all columns or right of all
- columns respectivelly. The \^`\_betweencolumns` must include a
+ columns respectively. The \^`\_betweencolumns` must include a
stretchability or a material with exactly \^`\colsep` width. You can
- redefine these macros. For example the rule between colums can be reached
+ redefine these macros. For example the rule between columns can be reached
by `\_def\_betweencolumns{\hss\vrule\hss}`.\nl
\`\_multiskip` puts its material at the start and at the end of
\^`\begmulti`...\^`\endmulti`.
@@ -35,8 +35,6 @@
`\widowpenalty` and `\clubppenalty` (they are set to 10000 in \OpTeX/).
\_cod -----------------------------
-\_newcount\_mullines
-
\_def\_begmulti #1 {\_par\_bgroup\_wipeepar
\_ifnum\_lastpenalty>10000 \_vskip4.5\_baselineskip\_penalty9999 \_vskip-4.5\_baselineskip \_fi
\_multiskip \_def\_Ncols{#1}
@@ -45,8 +43,6 @@
\_setbox0=\_hbox{\_leftofcolumns\_rightofcolumns}%
\_advance\_hsize by-\_wd0 \_advance\_hsize by\_colsep
\_divide\_hsize by\_Ncols \_advance\_hsize by-\_colsep
- \_mullines=0
- \_def\_par{\_ifhmode\_endgraf\_global\_advance\_mullines by\_prevgraf\_fi}%
}
\_def\_endmulti{\_vskip-\_prevdepth\_vfil
\_ea\_egroup\_ea\_egroup\_ea\_baselineskip\_the\_baselineskip\_relax
@@ -57,9 +53,8 @@
\_penalty0 % initialize \_pageoal
\_ifdim\_pagegoal=\_maxdimen \_setcolsize\_vsize
\_else \_setcolsize{\_dimexpr\_pagegoal-\_pagetotal}\_fi
- \_ifdim \_dimen1<2\_baselineskip
- \_vfil\_break \_setcolsize\_vsize \_fi
- \_ifnum\_mullines<\_tmpnum \_dimen0=\_ht6 \_else \_dimen0=.8\_maxdimen \_fi
+ \_ifdim \_dimen1<2\_baselineskip \_vfil\_break \_setcolsize\_vsize \_fi
+ \_setsplitsize % sets \_dimen0 = \_ht6
\_divide\_dimen0 by\_Ncols \_relax
%% split the material to more pages?
\_ifdim \_dimen0>\_dimen1 \_splitpart
@@ -72,17 +67,15 @@
\_cod -----------------------------
\_def\_makecolumns{\_bgroup % full page, destination height: \dimen1
- \_vbadness=20000 \_dimen6=\_wd6
+ \_vbadness=20000 \_splitmaxdepth=\_maxdepth \_dimen6=\_wd6
\_createcolumns
\_printcolumns
- \_dimen0=\_dimen1 \_divide\_dimen0 by\_baselineskip \_multiply\_dimen0 by\_Ncols
- \_global\_advance\_mullines by-\_dimen0
\_egroup
}
\_def\_splitpart{%
\_makecolumns % full page
\_vskip 0pt plus 1fil minus\_baselineskip \_break
- \_ifnum\_mullines<\_tmpnum \_dimen0=\_ht6 \_else \_dimen0=.8\_maxdimen \_fi
+ \_setsplitsize % sets \_dimen0 = \_ht6
\_divide\_dimen0 by\_Ncols \_relax
\_ifx\_balancecolumns\_flushcolumns \_advance\_dimen0 by-.5\_vsize \_fi
\_setcolsize\_vsize \_dimen2=\_dimen1
@@ -101,11 +94,11 @@
\_def\_balancecolumns{\_bgroup \_setbox7=\_copy6 % destination height: \dimen0
\_ifdim\_dimen0>\_baselineskip \_else \_dimen0=\_baselineskip \_fi
\_vbadness=20000 \_dimen6=\_wd6 \_dimen1=\_dimen0
- \_def\_tmp{\_createcolumns
+ \_def\_trybalance{\_createcolumns
\_ifvoid6 \_else
\_advance \_dimen1 by.2\_baselineskip
\_setbox6=\_copy7
- \_ea \_tmp \_fi}\_tmp
+ \_ea \_trybalance \_fi}\_trybalance
\_printcolumns
\_egroup
}
@@ -120,7 +113,7 @@
\`\_printcolumns` prints the columns prepared in `\box1`.
The first `\hbox{}` moves typesetting point to the next baseline.
Next negative skip ensures that the first line from
- splitted columns is at this position.
+ split columns is at this position.
\_cod -----------------------------
\_def\_setcolsize #1{\_dimen1=#1\_relax
@@ -142,8 +135,36 @@
}
\_public \begmulti \endmulti ;
+ \_doc -----------------------------
+ The accumulated `\box6` (before its splitting to pages and columns) can
+ be very large and we cannot measure it with classical \TeX/ methods because
+ we can get \"dimension too lagre" error or arithmetic overflow.
+ The \TeX/ limit for dimensions is about 5.75\,m. For example,
+ the `\box6` of the index in this document has about 6.5\,m height.
+
+ The \`\_rawht``<box-num>` macro solves this problem.
+ It expands to the height plus depth of
+ given `\vbox` as an integer in points (i.e. the the fraction part of points is
+ stripped and unit isn't appended). The limit $2^{31}$ of such an integer
+ allows us to measure boxes with many kilometers height.
+
+ The trick used in the \`\_setsplitsize` macro sets `\dimen0` to the maximum of
+ `.8\maxdimen` and actual `\ht6`, because 13100 is `.8\maxdimen` in points.
+ This is sufficient because if the `\dimen0` is big then we get $n$
+ columns for full page. This is not the last page where exact calculations
+ for balancing is needed.
+ \_cod -----------------------------
+
+\_def\_setsplitsize{%
+ \_ifnum \_rawht6 > 13100 \_dimen0 = .8\_maxdimen
+ \_else \_dimen0=\_ht6 \_def\_rawht6{0}\_fi
+}
+\_def\_rawht{\_directlua{optex.raw_ht()}}
+
\_endcode % -------------------------------------
+2024-10-31 \splitmaxdepth set, bug fixed
+2024-09-06 \_rawht implemented, more robust measurement of big boxes
2022-11-26 \at least three lines in the beginning of \begmulti at the page
2022-05-05 `\_betweencolumns` etc. introduced.
2021-05-20 Colors inside \begmulti...\endmuti, bug fixed
diff --git a/Master/texmf-dist/tex/optex/base/optex-tricks.opm b/Master/texmf-dist/tex/optex/base/optex-tricks.opm
index c90b429a4fc..53c3640632d 100644
--- a/Master/texmf-dist/tex/optex/base/optex-tricks.opm
+++ b/Master/texmf-dist/tex/optex/base/optex-tricks.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \_undefined {OpTeX tricks ready to autoload <2024-05-07>} % chunks loaded on demand
+\_codedecl \_undefined {OpTeX tricks ready to autoload <2024-12-09>} % chunks loaded on demand
% Selected OpTeX tricks are here, they are auto-loaded if the macro is used first
% namespace: optextrick
@@ -9,43 +9,43 @@
%%%%%%%%%%%%
\newwrite\.outfile
-\def\begfile #1 {\_immediate\_openout\.outfile={#1}%
+\:\def\begfile #1 {\_immediate\_openout\.outfile={#1}%
\_begingroup \_setverb \_endlinechar=`\^^J \.begfileA^^J%
}
\_ea\_def\_ea\.begfileA\_ea#\_ea1\_ea^^J\_csstring\\endfile#2^^J{\_endgroup
\_ifx^#1^\_else \_immediate\_write\.outfile{\_ignoreit #1}\_fi
\_immediate\_closeout\.outfile
}
-\_let\createfile=\begfile
+\:\_let\createfile=\begfile
\_trick 0054 \beglua \begLUA \logginglua ;
%%%%%%%%%%%%
\_newtoks\.luamacros
\.luamacros={\_let\\=\_nbb \_edef\%{\_csstring\%}\_edef\#{\csstring\#}\_let\n=\_relax}
-\_def\beglua{\.savelineno\_bgroup \_setverb \_endlinechar=`\^^J \.begluaA}
+\:\_def\beglua{\.savelineno\_bgroup \_setverb \_endlinechar=`\^^J \.begluaA}
\_ea\_def\_ea\.begluaA\_ea#\_ea1\_csstring\\endlua^^J{\_egroup\.debuglua{#1}\_directlua{#1}}
-\_def\begLUA{\.savelineno\_bgroup \_setverb \_endlinechar=`\^^J \_catcode`\\=0 \.begLUAA}
+\:\_def\begLUA{\.savelineno\_bgroup \_setverb \_endlinechar=`\^^J \_catcode`\\=0 \.begLUAA}
\_def\.begLUAA#1\endLUA^^J{\_the\.luamacros\.debuglua{#1}\_directlua{#1}\_egroup}
\_def\.savelineno{\_edef\.tmp{\_the\_numexpr\_inputlineno+1}}
\_let\.debuglua=\_ignoreit
\_def\.printloglua#1{\_wlog{lua code processed (l.\.tmp):^^J#1-------------}}
-\_def\logginglua{\_let\.debuglua=\.printloglua}
+\:\_def\logginglua{\_let\.debuglua=\.printloglua}
\_trick 0055 \sethours \setminutes \setseconds \setweekday ;
%%%%%%%%%%%%
\_newcount\.hours \_newcount\.minutes \_newcount\.seconds \_newcount\.weekday
-\_def\setminutes{%
+\:\_def\setminutes{%
\.minutes=\_directlua{tex.sprint(\_the\_time\_pcent 60)}\_relax
\.hours=\_directlua{tex.sprint(math.floor(\_the\_time/60))}\_relax
}
-\_let\sethours=\setminutes
-\_def\setseconds{\_ea\.setsecondsA\_pdffeedback creationdate\_relax}
+\:\_let\sethours=\setminutes
+\:\_def\setseconds{\_ea\.setsecondsA\_pdffeedback creationdate\_relax}
\_def\.setsecondsA#1#2#3#4#5#6#7#8#9{\.setsecondsB}
\_def\.setsecondsB#1#2#3#4#5#6#7#8\_relax{\.seconds=#6#7\_relax}
-\_def\setweekday{\.weekday=\_directlua{% Zeller's algorithm:
+\:\_def\setweekday{\.weekday=\_directlua{% Zeller's algorithm:
local m, y, K, J
m = \_the\_month \_ifnum\_month<3 +12 \_fi
y = \_the\_year \_ifnum\_month<3 -1 \_fi
@@ -55,9 +55,9 @@
math.floor(K/4) + math.floor(J/4) - 2*J + 6)\_pcent 7)
}\_relax
}
-\_def\.Othe#1{\_ifnum#1<10 0\_fi\_the#1}
+\:\_def\Othe#1{\_ifnum#1<10 0\_fi\_the#1}
-\_nspublic \hours \minutes \seconds \weekday \Othe ;
+\_nspublic \hours \minutes \seconds \weekday ;
\_trick 0132 \thedimen ;
%%%%%%%%%%%%
@@ -114,11 +114,19 @@
nodetree.print(tex.box[\_the\_tmpnum])
}}
+\_trick 0143 \mathinexpr ;
+%%%%%%%%%%%%
+
+\_def\mathinexpr{\_directlua{\_foreach{abs}{acos}{asin}{atan}{ceil}{cos}{deg}{exp}%
+ {floor}{fmod}{huge}{log}{max}{maxinteger}{min}{mininteger}{modf}%
+ {pi}{rad}{random}{randomseed}{sin}{sqrt}{tan}{tointeger}{type}{ult}%
+ \_do{##1=math.##1 }}%
+}
\_trick 0134 \rebox \leftfill \rightfill \lrfill ;
%%%%%%%%%%%%
-\_def\rebox{\_directlua{
+\:\_def\rebox{\_directlua{
local nod = tex.box[token.scan_int()] % read head node of the given box
if not(nod==nil) and nod.id==1 then % given box must be \vbox
for n in node.traverse(nod.head) do
@@ -141,9 +149,9 @@
end
end
}}
-\_def\leftfill {\_leftskip=0pt plus1fill \_parindent=0pt }
-\_def\rightfill{\_rightskip=0pt plus1fill \_parindent=0pt }
-\_def\lrfill{\_leftskip=0pt plus1fill \_rightskip=\_leftskip \_parindent=0pt }
+\:\_def\leftfill {\_leftskip=0pt plus1fill \_parindent=0pt }
+\:\_def\rightfill{\_rightskip=0pt plus1fill \_parindent=0pt }
+\:\_def\lrfill{\_leftskip=0pt plus1fill \_rightskip=\_leftskip \_parindent=0pt }
\_trick 0101 \runsystem ;
@@ -275,13 +283,16 @@ define_lua_command('xreplstring', function()
end,'global') % we want to keep the meanig after group
}
-\_trick 0078 \algol ;
-%%%%%%%%%%%%
+\_trick 0078 0145 0146 \algol \algolkw \algolcap \makeLOA \algolnum ;
+%%%%%%%%%%%%%%%%%%%%%%
\_newtoks \_hisyntaxalg
\_hisyntaxalg = {
\_hicolor K \_bf % Keywords
- \_foreach {Require:}{Ensure:}{Input:}
+ \_replfromto {//}{^^J}{\algolcomment{#1}^^J}
+ \_replthis{++}{{++}}\_replthis{--}{{--}}
+ \_replfromto {$}{$}{${#1}$}
+ \_foreach {Require:}{Ensure:}{Input:}{Output:}{Launch:}
{while}{do}{if}{then}{else}{end}{function}{return}{print}
{for}{all}{range}{continue}{repeat}{until}{loop}
{not}{and}{or}{xor}{true}{false}
@@ -289,35 +300,97 @@ end,'global') % we want to keep the meanig after group
}
\_def\.algolmath#1${\_catcodetable\_optexcatcodes \_scantextokens{#1}$}
-\_def\algol{\_catcode`$=3 %
+\:\_def\algol{\_catcode`$=3 %
\_everymath={\.algolmath}%
\_def\_ttfont{\_rm}%
+ \_def\var##1{{\_it\_adef _{\_vrule height.4pt width4pt depth0pt\_relax}##1}}
\_catcode`\!=13
- \_bgroup \_lccode`\~=`\! \_lowercase{\_egroup \_def~##1~{\_ifx^##1^!\_else{\_bf##1}\_fi}}%
+ \_bgroup \_lccode`\~=`\!
+ \_lowercase{\_egroup \_protected\_def~##1~{\_ifx^##1^!\_else{\_bf##1}\_fi}}%
\_hisyntax{ALG}%
}
-\_def\var#1{{\_it\_adef _{\_vrule height.4pt width4pt\_relax}#1}}
+\:\_def\algolkw#1{\_toksapp\_hisyntaxalg{\_replthis{\n#1\n}{\z K{#1}}}}
+\_ifx\algolcomment\_undefined \_def\algolcomment#1{/\kern-.2em/{\it #1}} \_fi
+
+\_newcount\.anum
+\_def \.theanum {\_othe\_chapnum.\_othe\_secnum.\_the\.anum}
+\_addto\_seccx {\.anum=0 }
+
+\_sdef{_mt:algol:en}{Algorithm} \_sdef{_mt:algol:cs}{Algoritmus}
+
+\:\_def\algolcap{\_isnextchar [{\.capaA}{\.capaA[]}}
+\_def\.capaA [#1]#2\_relax{\_label[#1]%
+ \_incr\.anum
+ \_def\.algoltitle{\_indent\_wlabel{\.theanum}{\_bf\_mtext{algol} \.theanum}%
+ \_enspace\_rm\_strut\_ignorespaces #2}%
+ \_ewref\.Xalg{{}{\.theanum}{\_nospaceafter\_empty#2}}%
+ \_setbox0=\_vbox\_bgroup \_advance\_hsize by-2\_hhkern \_advance\_hsize by-.8pt
+ \_begingroup \_aftergroup\.createalgol
+}
+\_def\.createalgol{\_egroup % \box0 is completed
+ \_frame{\_vbox{\_medskip\_hbox{\.algoltitle}\_medskip\_hrule\_medskip\_box0\_medskip}}%
+ \_endgroup % of \begtt
+}
+\:\_def\makeLOA{%
+ \_ifx\.alglist\_undefined \_opwarning{no data for LOA, try to run TeX again}\_openref
+ \_else \.alglist\_fi
+}
+\_def\.alline #1#2#3#4#5{\_line{\_hskip2em\_llap{\_bf#2\_enspace}#3 \_tocdotfill\ \_ilink[pg:#4]{#5}}}
+
+\:\_def\algolnum{\_ttline=0
+ \_def\_printverbline ##1{\_putttpenalty
+ \_indent
+ \.testindent ##1.\_iftrue \_printverblinenum \_else \_decr\_ttline \_fi
+ \_kern\_ttshift ##1\_par}%
+ \_def\_printverblinenum{\_llap{\_sevenrm \_the\_ttline\_kern.1em}}%
+}
+\_def\.testindent#1#2\_iftrue {\_ea\_ifx#1\_dsp}
+
+\_globaldefs=0 % \refdecl needs to be processed when \localdefs=0
+\_refdecl{%
+ \_def\.alglist{}^^J
+ \_def\.Xalg#1#2#3{\_addto\.alglist{\.alline{#1}{#2}{#3}}%
+ \_ea\_addto\_ea\.alglist\_ea{\_currpage}}^^J
+}
-\_trick 0079 \ttlineref ;
+\_trick 0079 \ttlineref \lref ;
%%%%%%%%%%%%
-\_def\ttlineref#1{\_adef#1[##1]{\.setlref{##1}}}
-\_protected\_def\.setlref#1{\_sxdef{ttlin:#1}{\_the\_ttline}}
-\_def\lref[#1]{\_trycs{ttlin:#1}{??}}
+\:\_def\ttlineref#1{\_protected\_adef#1[##1]{\_label[ttline:##1]\_wlabel{\_the\_ttline}}}
+\:\_def\lref[#1]{\_ref[ttline:#1]}
\_trick 0011 \scaleto \scaletof ;
%%%%%%%%%%%%
-\_def\scaleto#1#{\_def\.tmp{#1}\.scaletoA}
+\:\_def\scaleto#1#{\_def\.tmp{#1}\.scaletoA}
\_def\.scaletoA#1{\_setbox0=\_hbox{{#1}}%
\_edef\.tmp{\_expr{\_bp{\.tmp}/\_bp{\_wd0}}}%
\_transformbox{\_pdfscale{\.tmp}{\.tmp}}{#1}}
-\_def\scaletof#1#{\_def\.tmp{#1}\.scaletofA}
+\:\_def\scaletof#1#{\_def\.tmp{#1}\.scaletofA}
\_def\.scaletofA#1{\_setbox0=\_hbox{{#1}}%
\_edef\.tmpa{\_expr{\_bp{\.tmp}/\_bp{\_wd0}}}%
\.scaletoA{\_setfontsize{mag\.tmpa}\_currvar#1}}
+\_trick 0141 \clipbox ;
+%%%%%%%%%%%%
+
+\_def\.scanthreedimens{%
+ \_directlua{tex.print(string.format('{\_pcent d}{\_pcent d}{\_pcent d}',
+ token.scan_dimen(),token.scan_dimen(),token.scan_dimen()))}%
+}
+
+\_def\clipbox{\_ea\_ea\_ea\.clipboxA\.scanthreedimens}
+\_def\.clipboxA#1#2#3#4#{\.clipboxB{#1}{#2}{#3}{#4}}
+\_def\.clipboxB#1#2#3#4#5{% #1,#2,#3: width, height, depth, #4 shift, #5 contents.
+ \_hbox to #1sp{%
+ \_pdfliteral{q 0 \_bp{-#3sp} \_bp{#1sp} \_bp{#2sp+#3sp} re W n}%
+ \_puttext #4{#5}%
+ \_pdfliteral{Q}%
+ \_vrule height#2sp depth#3sp width0pt \_hss
+ }%
+}
+
\_trick 0053 \ignoreinspic ;
%%%%%%%%%%%%
@@ -424,14 +497,14 @@ end,'global') % we want to keep the meanig after group
\_ea\_ea\_ea \.remdotxspace \_csname fcit:##1\_endcsname \_end .\ \_end \_relax {##1}%
}\.fcitlist % removing last .\space or .space from each bib-record
}}
-\_def\fullcite[#1]{\_trycs{fcit:#1}{??\_opwarning{\_string\fullcite[#1] unknown label}}}
+\:\_def\fullcite[#1]{\_trycs{fcit:#1}{??\_opwarning{\_string\fullcite[#1] unknown label}}}
\_trick 0071 \shadedframe ;
%%%%%%%%%%%%
\_def\.shadedframedefaults {% defaults:
frame-color=\Grey, % color of frame rules
- text-color=\Black, % color ot text inside the frame
+ text-color=\Black, % color of text inside the frame
shadow-color=\LightGrey, % color of shadow
bg-color=\Yellow, % background color inside the frame
rule-width=1pt, % width of rules used in the frame
@@ -580,7 +653,7 @@ end,'global') % we want to keep the meanig after group
}
\_def\.setcellcolorN#1\_fin#2#3{#2\_the\_tabiteml{\_localcolor#1\_unskip}\_the\_tabitemr#3}
-\_def\multispanc#1#2#3{\_multispan{#1}%
+\:\_def\multispanc#1#2#3{\_multispan{#1}%
\_ea\_ea\_ea\.cellcolexp#2#3\_fin\_hfil\_hfil\_ignorespaces}
\_def\.cellcolexp{\_futurelet\.next\.setcellcolor}
@@ -590,15 +663,15 @@ end,'global') % we want to keep the meanig after group
\_newcount\.tabline \.tabline=1
\_def\crx {\_crcr \_ifodd\.tabline \.colortabline \_else\_noalign{\_hrule height0pt}\_fi \_incr\.tabline}
\_def\.colortabline{\_noalign{\_localcolor\LightGrey
- \_hrule height\ht\_strutbox depth\_dimexpr\_dp\_strutbox +2\_tablinespace\_relax
- \_kern-\_dimexpr\ht\_strutbox+\_dp\_strutbox +2\_tablinespace}}
+ \_hrule height\_ht\_strutbox depth\_dimexpr\_dp\_strutbox +2\_tablinespace\_relax
+ \_kern-\_dimexpr\_ht\_strutbox+\_dp\_strutbox +2\_tablinespace}}
\_trick 0007 \crtop \crbot \crmid ;
%%%%%%%%%%%%
-\_def\crtop{\_crcr \_noalign{\_hrule height.6pt \_kern2.5pt}}
-\_def\crbot{\_crcr \_noalign{\_kern2.5pt\_hrule height.6pt}}
-\_def\crmid{\_crcr \_noalign{\_kern1pt\_hrule height.4pt\_kern1pt}}
+\:\_def\crtop{\_crcr \_noalign{\_hrule height.6pt \_kern2.5pt}}
+\:\_def\crbot{\_crcr \_noalign{\_kern2.5pt\_hrule height.6pt}}
+\:\_def\crmid{\_crcr \_noalign{\_kern1pt\_hrule height.4pt\_kern1pt}}
\_trick 0016 \longtable ;
%%%%%%%%%%%%
@@ -628,8 +701,8 @@ end,'global') % we want to keep the meanig after group
\_trick 0032 \vcent \vbot ;
%%%%%%%%%%%%
-\_def\vbot {\_let\_tableparbox=\_vbox}
-\_def\vcent {\_toksapp\_tabiteml{$}\_tokspre\_tabitemr{$}\_let\_tableparbox=\_vcenter}
+\:\_def\vbot {\_let\_tableparbox=\_vbox}
+\:\_def\vcent {\_toksapp\_tabiteml{$}\_tokspre\_tabitemr{$}\_let\_tableparbox=\_vcenter}
\_trick 0046 \tnote ;
%%%%%%%%%%%%
@@ -638,7 +711,7 @@ end,'global') % we want to keep the meanig after group
\_def\.tnotelist{}
\_def\.tnoteformat{$\Red^{\_rm\_athe\.tnotenum}$}
\_def\tnote#1{\_incr\.tnotenum \.tnoteformat\_global\_addto\.tnotelist{{#1}}}
-\_def\tnoteprint{\_par\_noindent \.tnotenum=0
+\:\_def\tnoteprint{\_par\_noindent \.tnotenum=0
\_ea\_foreach\.tnotelist \_do{\_advance\.tnotenum by1 \.tnoteformat##1 }\_par
\_global\.tnotenum=0 \_gdef\.tnotelist{}%
}
@@ -646,45 +719,224 @@ end,'global') % we want to keep the meanig after group
\_trick 0050 \tabnodes \tablebefore ;
%%%%%%%%%%%%
-\_def\tablebefore{\_ifvmode \_nointerlineskip\_null \_fi
- \_incr\.tndnum \_setpos[t\_the\.tndnum:ori:b]\_ea\.tbpxpy\_ea{\_the\.tndnum}{b}\_decr\.tndnum
+\_newcount\.tndnum \_newcount\.trownum
+\:\_def\tablebefore{\_incr\.tndnum \_ifvmode \_null \_fi
+ \_setpos[t\_the\.tndnum:ori:b]\_ea\.tbpxpy\_ea{\_the\.tndnum}{b}\_decr\.tndnum \_nobreak
}
-\_def\tableafter {\_setpos[t\_the\_tndnum:ori:e]\_ea\.tbpxpy\_ea{\_the\.tndnum}{e}}
+\:\_def\tableafter {\_setpos[t\_the\.tndnum:ori:e]\_ea\.tbpxpy\_ea{\_the\.tndnum}{e}}
\_def\.tbpxpy#1#2{%
- \_def\.tbpx[##1]{\_expr{\_bp{\_posx[t#1:##1]}-\_bp{\_posx[t#1:ori:#2]}}}%
- \_def\.tbpy[##1]{\_expr{\_bp{\_posy[t#1:##1]}-\_bp{\_posy[t#1:ori:#2]}}}%
+ \_def\.tbpx[##1##2]{\_expr{\_bp{\_posx[t#1:##1\_the\_numexpr##2]}-\_bp{\_posx[t#1:ori:#2]}}}%
+ \_def\.tbpy[##1##2]{\_expr{\_bp{\_posy[t#1:##1\_the\_numexpr##2]}-\_bp{\_posy[t#1:ori:#2]}}}%
}
-\_newcount\.tndnum \_newcount\.tablerownum
-\_def\.putnodeh#1{\_omit\_relax
+\_def\.putnodeh#1{\_immediateassigned{\_let\_tabstrutA=\_relax\_tabiteml{}\_tabitemr{}}\_relax
\_setpos[t\_the\.tndnum:l#1]\_hskip0pt plus1fill\_relax \_setpos[t\_the\.tndnum:r#1]}
\_def\.putnodelr{\_fornum 1..\_colnum-1\_do{\.putnodeh{##1}&}\.putnodeh{\_the\_colnum}%
- \_gdef\.putnode{\_noalign{\.putnodev}}\_cr}
-\_def\.putnodev{\_setpos[t\_the\.tndnum:v\_the\.tablerownum]\_incr\.tablerownum}
-\_def\tabnodes{\_incr\.tndnum \.tablerownum=0
- \_def\_tablepxpreset{\_everycr{}}\_let\.putnode=\.putnodelr \_everycr={\.putnode}}
-
-\_def\itl[#1,#2]{\_expr{\.tbpx[l\.enum{#2}]} \_expr{\.tbpy[v\.enum{#1-1}]}}
-\_def\icl[#1,#2]{\_expr{\.tbpx[l\.enum{#2}]}
- \_expr{(\.tbpy[v\.enum{#1-1}]+(\.tbpy[v\.enum{#1}]))/2}}
-\_def\ibl[#1,#2]{\_expr{\.tbpx[l\.enum{#2}]} \_expr{\.tbpy[v\.enum{#1}]}}
-\_def\itc[#1,#2]{\_expr{(\.tbpx[l\.enum{#2}]+(\.tbpx[r\.enum{#2}]))/2}
- \_expr{\.tbpy[v\.enum{#1-1}]}}
-\_def\icc[#1,#2]{\_expr{(\.tbpx[l\.enum{#2}]+(\.tbpx[r\.enum{#2}]))/2}
- \_expr{(\.tbpy[v\.enum{#1-1}]+(\.tbpy[v\.enum{#1}]))/2}}
-\_def\ibc[#1,#2]{\_expr{(\.tbpx[l\.enum{#2}]+(\.tbpx[r\.enum{#2}]))/2}
- \_expr{\.tbpy[v\.enum{#1}]}}
-\_def\itr[#1,#2]{\_expr{\.tbpx[r\.enum{#2}]} \_expr{\.tbpy[v\.enum{#1-1}]}}
-\_def\icr[#1,#2]{\_expr{\.tbpx[r\.enum{#2}]}
- \_expr{(\.tbpy[v\.enum{#1-1}]+(\.tbpy[v\.enum{#1}]))/2}}
-\_def\ibr[#1,#2]{\_expr{\.tbpx[r\.enum{#2}]} \_expr{\.tbpy[v\.enum{#1}]}}
-\_def\iwd[#1,#2]{\_expr{\.tbpx[r\.enum{#2}]-(\.tbpx[l\.enum{#2}])}}
-\_def\iht[#1,#2]{\_expr{\.tbpy[v\.enum{#1-1}]-(\.tbpy[v\.enum{#1}])}}
-
-\_def\.enum#1{\_number\_numexpr#1\_relax}
-\_def\ishift #1{\_ea\.ishifta#1} % \ishift[2,3][1pt,2.5pt]
-\_def\.ishifta \_expr#1 \_expr#2#3#4,#5]{\_expr{#1+(\_bp{#4})} \_expr{#2+(\_bp{#5})}}
-\_def\tabpos#1#2{#1\_ifx\ishift#2\_afterfi{\_ea\_ea\_ea\_ea\_ea\_ea}\_fi\_ea\.tabposA#2}
-\_def\.tabposA\_expr#1 \_expr#2{\_expr{#1}bp \_expr{#2}bp}
+ \_gdef\.putnode{\_noalign{\.putnodebt}}\_cr}
+\_def\.putnodebt{\.nup{-\_tablinespace}{\.putnodeb\_incr\.trownum \.putnodet}%
+ \.settskip \_gdef\.corrposb{\_noalign{\_advance\.trownum by-1 \.putnodeb}}}%
+\:\_def\tabnodes{\_incr\.tndnum \.trownum=0 \_let\.putnode=\.putnodelr \_everycr={\.putnode}%
+ \_foreach \crl\_crl \crll\_crll \crli\_crli \crlli\_crlli \_do ##1##2{%
+ \_def##1{\_crcr\.corrposb##2\.corrpost
+ \_noalign{\.initskip \_glet\.testskip=\_ignoresecond \_glet\.corrposb=\_empty}}}%
+ \_def\crlp##1{\_crcr\.corrposb\_crlp{##1}\.corrpost}%
+ \_addto\_tskipA {\_noalign{\_decr\.trownum \_glet\.corrposb=\_empty
+ \.testskip{\.putnodet}{\.nup\_tablinespace\.putnodet}}}%
+ \_def\.initskip{\_gdef\.settskip{\_gdef\.settskip{\_glet\.testskip=\_usesecond}}}\.initskip
+ \_def\.nup##1##2{\_kern##1 ##2\_kern-##1 }%
+ \_def\.putnodet{\_setpos[t\_the\.tndnum:t\_the\.trownum]}%
+ \_def\.putnodeb{\_setpos[t\_the\.tndnum:b\_the\.trownum]}%
+ \_def\.corrpost{\_noalign{\.putnodet}}%
+}
+\:\_def\itl[#1,#2]{\.tbpx[l#2] \.tbpy[t#1]}
+\:\_def\icl[#1,#2]{\.tbpx[l#2] \_expr{(\.tbpy[t#1]+(\.tbpy[b#1]))/2}}
+\:\_def\ibl[#1,#2]{\.tbpx[l#2] \.tbpy[b#1]}
+\:\_def\itc[#1,#2]{\_expr{(\.tbpx[l#2]+(\.tbpx[r#2]))/2} \.tbpy[t#1]}
+\:\_def\icc[#1,#2]{\_expr{(\.tbpx[l#2]+(\.tbpx[r#2]))/2} \_expr{(\.tbpy[t#1]+(\.tbpy[b#1]))/2}}
+\:\_def\ibc[#1,#2]{\_expr{(\.tbpx[l#2]+(\.tbpx[r#2]))/2} \.tbpy[b#1]}
+\:\_def\itr[#1,#2]{\_expr{\.tbpx[r#2]} \_expr{\.tbpy[t#1]}}
+\:\_def\icr[#1,#2]{\.tbpx[r#2] \_expr{(\.tbpy[t#1]+(\.tbpy[b#1]))/2}}
+\:\_def\ibr[#1,#2]{\.tbpx[r#2] \.tbpy[b#1]}
+\:\_def\iwd[#1,#2]{\_expr{\.tbpx[r#2]-(\.tbpx[l#2])}}
+\:\_def\iht[#1,#2]{\_expr{\.tbpy[t#1]-(\.tbpy[b#1])}}
+
+\:\_def\ishift #1[#2]{\_ea\.ishiftA#1[#2] } % \ishift\icc[2,3][1pt,2.5pt]
+\_def\.ishiftA #1 #2 #3#4,#5]{\_expr{#1+(\_bp{#4})} \_expr{#2+(\_bp{#5})}}
+\:\_def\tabpos#1#2{#1\_ifx\ishift#2\_ea\.tabposA \_else \_ea\.tabposB \_fi #2}
+\_def\.tabposA #1#2[#3]#4#5]{\_ea\.tabposC\_expanded{#1#2[#3][#5] }}
+\_def\.tabposB #1[#2,#3]{\_ea\.tabposC#1[#2,#3] }
+\_def\.tabposC #1 #2 {#1bp #2bp}
+
+
+\_trick 0147 0148 0149 0151 0152 \csvread \csvdecl \dbcreate ;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\_newcount\.dbcol \_newcount\.dbrow
+\:\_def\csvread#1#{\_ifcsname dbmaxrow#1\_endcsname
+ \_opwarning{\_noexpand\csvread ignored: database "#1" created already}%
+ \_ea \_ignoreit
+ \_else \_afterfi{\_par \_bgroup \_def\.dbn{#1}\.dbrow=0 \.csvreadA}\_fi}
+\_def\.csvreadA#1{\_everypar={\.readline}\_input{#1}%
+ \_decr\.dbrow \_sxdef{dbmaxrow\.dbn}{\_the\.dbrow}
+ \_decr\.dbcol \_sxdef{dbmaxcol\.dbn}{\_the\.dbcol}\_egroup}
+\:\_def\csvdecl #1#2#3{%
+ \_eoldef\.readline##1{\_setbox0=\_lastbox \_par \.dbcol=0
+ \_ifnum\.dbrow=0 \_afterfi{\.readitem\.csvsethead}\_else \_afterfi{\.readitem\.csvsetdata}\_fi ##1#3\_fin
+ \_incr\.dbrow}
+ \_def\.readitem##1##2{\_incr\.dbcol
+ \_ifx##2\_fin \_else \_afterfi{\_ifx ##2#1\_afterfi{\.readitemA##1}\_else \_afterfi{\.readitemB##1##2}\_fi}\_fi}
+ \_def\.readitemA ##1##2#2#3{##1{##2}\.readitem##1}
+ \_def\.readitemB ##1##2#3{##1{##2}\.readitem##1}
+} \csvdecl "", % " " , are default data separators
+\_def\.csvsethead#1{\_sxdef{dbcol:\.dbn(#1)}{\_the\.dbcol}\_sxdef{dbhead:\.dbn(\_the\.dbcol)}{#1}}
+\_def\.csvsetdata#1{\_global\_sdef{dbitem:\.dbn(\_the\.dbrow,\_the\.dbcol)}{#1}}
+\:\_def\dbitem#1(#2,#3){\.dbset{#1}%
+ \_ifcsname dbitem:#1(#2,#3)\_endcsname \_unexpanded\_ea\_ea\_ea{\_lastnamedcs}\_else \dbunknown\_fi}
+\_def\.dbset#1{\_immediateassignment\_edef\.dbname{#1}}
+\:\_def\colname#1){\_ifcsname dbcol:\.dbname(#1)\_endcsname \_lastnamedcs \_else 0\_fi)}
+\:\_def\dbhead#1(#2){\_ifcsname dbhead:#1(#2)\_endcsname \_lastnamedcs \_else \dbunknown \_fi}
+\:\_def\dbunknown{??}
+\_let\.dbitem=\dbitem \_let\.colname=\colname
+
+\:\_def\dbhash #1(#2){%
+ \.onlyifdb #1(#2)\dbhash {%
+ \_fornum 1..\cs{dbmaxrow#1}\_do
+ {\_edef\.tmp{\.dbitem#1(##1,#2)}\.sxadef{dbrow:#1(#2)\_detokenize\_ea{\.tmp}}{##1,}}%
+}}
+\_def\.sxadef#1#2{\_ifcsname#1\_endcsname \_sxdef{#1}{\_cs{#1}#2}\_else\_sxdef{#1}{#2}\_fi}
+\_def\.onlyifdb #1(#2)#3#4{\.dbset{#1}%
+ \_ifcsname dbhead:#1(#2)\_endcsname #4\_else
+ \_ifcsname dbmaxrow#1\_endcsname \_opwarning{\_string#3 ignored: undeclared column \.missingcol(#2) in "#1"}%
+ \_else \_opwarning{\_string#3 ignored: database "#1" isn't created}%
+ \_fi\_fi
+}
+\:\_def\dbwhere #1(#2)#3{\.dbset{#1}%
+ \_ifcsname dbrow:#1(#2)\_detokenize{#3}\_endcsname \_ea\_ea\_ea\.firstfromlist\_lastnamedcs;\_else 0\_fi}
+\_def\.missingcol (#1#2){(\_ifx#1\colname \_noexpand#1#2\_else #1#2\_fi)}
+\_def\.firstfromlist #1,#2;{#1}
+
+\:\_def\dbloop #1(#2)#3{\.onlyifdb #1(1)\dbloop {%
+ \_immediateassigned{\_def\.settinglist{}\.dbsetting #2,\_fin=\_fin,}%
+ \_ifcsname dblist:#1\_endcsname
+ \_afterfi{\_ea\_ea\_ea\_foreach\_csname dblist:#1\_endcsname \_do ##1,}%
+ \_else \_afterfi{\_fornum 1..\cs{dbmaxrow#1}\_do}\_fi
+ {\_immediateassigned{\.dbrow=##1 \.settinglist}#3}%
+}}
+\_def\.dbsetting #1#2=#3,{\_ifx#3\_fin \_else \_addto\.settinglist{\.dbdef#1{#3}}\_ea\.dbsetting\_fi}
+\_def\.dbdef#1#2{\_edef#1{\.dbitem\.dbname(\_the\.dbrow,\.colname#2)}}
+\:\_def\dbsort #1(#2){\.onlyifdb #1(#2)\dbsort {% basename column exists:
+ \_def\.dblist{}%
+ \_ifcsname db:sortlist\_endcsname \_afterfi {\_ea\_ea\_ea\_foreach \_lastnamedcs \_do ##1,}%
+ \_else \_afterfi{\_fornum 1..\cs{dbmaxrow#1}\_do}\_fi {%
+ \_edef\.tmp{\.dbitem #1(##1,#2)}\_edef\.tmp{\_detokenize\_ea{\.tmp}{##1}}%
+ \_ea\_addto \_ea\.dblist \_csname +\.tmp\_endcsname
+ \_sdef{+\.tmp}{##1,}}%
+ \_ifx\.dblist \_empty \_else \_dosorting\.dblist \_fi
+ \_sxdef{dblist:#1}{\.dblist}\_global\_slet{db:sortlist}{_undefined}%
+}}
+\:\_def\dbsortfmt#1#2{\_detokenize{#1}|\.fmtnum#2;}
+\:\_def\fmtnum #1;{\_ea\_ignoreit\_the\_numexpr#1+100000\_relax}
+\_let\.fmtnum=\fmtnum
+
+\:\def\dbcreate #1({\_ifcsname dbmaxrow#1\_endcsname
+ \_opwarning{\_noexpand\dbcreate ignored: database "#1" created already}%
+ \_ea \.dbignore \_else \_afterfi {\_bgroup \_edef\.dbname{#1}\.dbcreateA \_empty}\_fi}
+\_def\.dbignore #1){}
+\_def\.dbcreateA #1){\.dbcol=0
+ \_ea \_foreach #1\_do{\_incr\.dbcol
+ \_sxdef{dbcol:\.dbname(##1)}{\_the\.dbcol}\_sxdef{dbhead:\.dbname(\_the\.dbcol)}{##1}}%
+ \_sxdef{dbmaxrow\.dbname}{0}\_sxdef{dbmaxcol\.dbname}{\_the\.dbcol}%
+ \_ifnum\.dbcol=0 \_sxdef{dbhead:\.dbname(1)}{\dbunknown}\fi
+ \_egroup
+}
+\:\_def\dbinsert #1({\.dbinsertA #1(\_empty}
+\_def\.dbinsertA #1(#2){\.onlyifdb #1(1)\dbinsert {%
+ \.dbrow=\_cs{dbmaxrow#1} \_incr\.dbrow \.dbcol=0 \_tmpnum=\cs{dbmaxcol#1}
+ \_ea \_foreach #2\_do
+ {\_incr\.dbcol \_ifnum\.dbcol>\_tmpnum\_else \_sxdef{dbitem:#1(\_the\.dbrow,\_the\.dbcol)}{##1}\_fi}%
+ \_ifnum\.dbcol>\_tmpnum
+ \_opwarning{\_string\dbinsert: data row larger than max column (\_the\.tmpnum) in "#1"}\_fi
+ \_sxdef{dbmaxrow#1}{\_the\.dbrow}%
+}}
+\:\_def\dbitemset #1(#2,#3)#4{\.onlyifdb #1(#3)\dbitemset {\_sxdef{dbitem:#1(#2,#3)}{#4}}}
+\:\_def\dbheadset #1(#2)#3{\.onlyifdb #1(1)\dbheadset{\.dbcol=\_ea\.getrownum \_expanded{#2)}\_relax
+ \_ifnum\.dbcol=0 \_opwarning{\_noexpand\dbheadset ignored: bad column \.missingcol(#2)}%
+ \_else \_sxdef{dbcol:#1(#3)}{\_the\.dbcol}\_sxdef{dbhead:#1(\_the\.dbcol)}{#3}\_fi
+}}
+\_def\.getrownum #1){#1}
+
+\:\_def\dbshow #1(#2){\.onlyifdb #1(1)\dbshow {\_immediateassignment\.dbcol=\_cs{dbmaxcol#1}
+ \_fornum 1..\.dbcol \_do {\.dbps{dbhead:#1(##1)}{#2}{##1}}\dbrowchar \dbheadchar
+ \_fornum 1..\_cs{dbmaxrow#1} \_do {\_fornum 1..\.dbcol \_do {%
+ \.dbps{dbitem:#1(##1,####1)}{#2}{####1}%
+ }\dbrowchar}
+}}
+\_def\.dbps #1#2#3{\_if\_relax\_detokenize{#2}\_relax {\_trycs{#1}{\dbunknown}}\_else \.dbpsA {#1}#2{#3}\fi}
+\_def\.dbpsA #1#2#3#4#5{#2\_trycs{#1}{\dbunknown}#3\_ifnum #5<\.dbcol #4\_fi} % cs, open, close, between, colnum
+\:\_def\dbrowchar{^^J} \:\_def\dbheadchar{}
+\:\_def\dbshowrow #1(#2)(#3){\.onlyifdb #1(1)\dbshowrow {\_immediateassignment\.dbcol=\cs{dbmaxcol#1}
+ \_fornum 1..\.dbcol \_do {\.dbps{dbitem:#1(#2,##1)}{#3}{##1}}%
+}}
+\:\_def\dbshowhead #1(#2){\.onlyifdb #1(1)\dbshowhead {\_immediateassignment\.dbcol=\_cs{dbmaxcol#1}
+ \_fornum 1..\.dbcol \_do {\.dbps{dbhead:#1(##1)}{#2}{##1}}%
+}}
+\:\_def\dbwrite #1(#2)#3{\.onlyifdb #1(1)\dbwrite {%
+ \_immediate\_openout\.dbout={#3}%
+ \_immediate\_write\.dbout{\.dbshow #1(#2)}%
+ \_immediate\_closeout\.dbout
+}}
+\_newwrite\.dbout
+\_let\.dbshow=\dbshow
+
+
+\_trick 0153 0154 \exectree \showtree \jsonread \jsoncnv ;
+%%%%%%%%%%%%%%%%%
+
+\:\_optdef\inode[]{\startinode \startedges}
+\:\_optdef\enode[]#1#2{\execenode{#1}} % #2=\stopinode, should be ignored
+\:\_def\startedges #1{\.edgetest #1\stopinode\startedges}
+\_def\.edgetest#1{\_ifx\stopinode#1\.edgefinal\_else\_ea#1\fi}
+\_def\.edgefinal#1\startedges{\fi\stopinode}
+\:\_def\exectree#1{#1\stopinode}
+
+\_ifx \startinode\_undefined \_def\startinode{} \_fi
+\_ifx \stopinode \_undefined \_def\stopinode{} \_fi
+\_ifx \execenode \_undefined \_def\execenode#1{(#1)} \_fi
+
+\_newcount\.treelevel
+\_let\.ima=\_immediateassignment
+\_def\.spaces{\_fornum 1..\.treelevel \_do{\_space\_space\_space}}
+\_def\.istring#1{\_ifnum\.treelevel>0 \_csstring#1\_fi}
+\_def\.showinodes{%
+ \_def\startinode{\.istring^^J\.spaces\.istring\{\_string\inode[\_the\_opt]\.ima\_incr\.treelevel}
+ \_def\stopinode{\.ima\_decr\.treelevel \.istring\}}
+ \_def\execenode##1{^^J\.spaces{\_string\enode[\_the\_opt] \_unexpanded{{##1}}}}}
+\:\_def\showtree#1{\_immediateassigned{\.treelevel=0
+ \_let\.startinodeB=\startinode \_let\.stopinodeB=\stopinode \_let\.execenodeB=\execenode \.showinodes}%
+ #1\stopinode \_immediateassigned{%
+ \_let\startinode=\.startinodeB \_let\stopinode=\.stopinodeB \_let\execenode=\.execenodeB}%
+}
+
+\_def\.isnschar#1#2#3{\_immediateassignment\_def\_isnextcharA{\_isnextcharB{#1}{#2}{#3}}%
+ \_nospacefuturelet\_next\_isnextcharA} % behaves like \isnextchar but skip spaces
+\:\_let\nonstring=\_useit % the presence of it in the value of \enode means that the value isn't string
+
+\_def\.arrayread#1[#2]#3,{{\_noexpand\inode \.eid \.aread#2,\_fin}\.isnschar\_fin{\_ignoreit}{#1}}
+\_def\.aread{\.isnschar\_bgroup{\.objread\.aread}
+ {\_isnextchar[{\.arrayread\.aread}{\_isnextchar"{\.readstr\.aread}{\.readnostr\.aread}}}}
+\_def\.objread#1#2#3,{{\_noexpand\inode \.eid \.oread#2,\_fin}\.isnschar\_fin{\_ignoreit}{#1}}
+\_def\.oread #1"#2"#3:{\_immediateassignment\_def\.idj{#2}%
+ \.isnschar\_bgroup{\.objread\.oread}
+ {\_isnextchar[{\.arrayread\.oread}{\_isnextchar"{\.readstr\.oread}{\.readnostr\.oread}}}}
+\_def\.readstr#1"#2"#3,{{\_noexpand\enode\.eid{\_unexpanded{#2}}}\.isnschar\_fin{\_ignoreit}{#1}}
+\_def\.readnostr#1#2,{{\_noexpand\enode\.eid{\_noexpand\nonstring{\.nospaces#2 }}}\.isnschar\_fin{\_ignoreit}{#1}}
+\_def\.nospaces#1 {#1\_nospaceafter\_empty}
+\_def\.eid{\_ifx\.idj\_undefined\_else [\.idj]\_immediateassignment\_let\.idj=\_undefined\_fi}
+
+\:\_optdef\jsonread[JSON]#1#2{{\_suppressoutererror=1 \_endlinechar=-1 \_edef\.idj{\_the\_opt}%
+ \_xdef#1{\_ea\.jsoncnv\_input{#2},\_fin}}}
+\:\def\jsoncnv{\.isnschar\_bgroup{\_ea\_useit\.objread\_empty}{\_ea\_useit\.arrayread\_empty}}
+\_let\.jsoncnv=\jsoncnv
+
\_trick 0031 \framedblocks ;
%%%%%%%%%%%%
@@ -716,7 +968,7 @@ end,'global') % we want to keep the meanig after group
\_ifx^#2^\_else \_global\_let\.frnext=y \_let\.printframes=\_relax \_fi
\_ea\.printframes\_fi
}
-\_def\frameslist{}
+\:\_def\frameslist{}
\_ifx\printframe\_undefined
\_def\printframe #1#2#3#4{\_edef\frameslist{\frameslist
.8 g \_bp{#1} \_bp{#2} \_bp{#3} \_bp{#4} re f }%
@@ -776,7 +1028,7 @@ end,'global') % we want to keep the meanig after group
\_def\pstart{\_par \_setbox0=\_vbox\_bgroup
\_def\_par{\_endgraf\_advance\.gprevgraf by\_prevgraf \_prevgraf=0 }}
-\_def\pend{\_par \_global\_tmpnum=\.gprevgraf \_egroup
+\:\_def\pend{\_par \_global\_tmpnum=\.gprevgraf \_egroup
\_ifnum\.firstlinenum=0 \.firstlinenum=1 \_fi
\_advance\_tmpnum by\.firstlinenum
\.firstlinenum=\_tmpnum \_advance\_tmpnum by-1
@@ -795,7 +1047,7 @@ end,'global') % we want to keep the meanig after group
\_trick 0021 \settabs ;
%%%%%%%%%%%%
-\_def\tabs #1\cr{\_setbox0=\_hbox\_bgroup \.tabA #1&\cr&}
+\:\_def\tabs #1\cr{\_setbox0=\_hbox\_bgroup \.tabA #1&\cr&}
\_def\.tabA #1&{\_ifx\cr#1\_egroup\_box0 \_else
\_egroup
\_tmpdim=\_maxdimen \_ea\.tabB \.tabsdata {}\_relax
@@ -830,9 +1082,9 @@ end,'global') % we want to keep the meanig after group
%%%%%%%%%%%%
\_openref
-\_def\thepp#1{\_trycs{pp:\_csstring#1}{?\_the#1}}
-\_def\thepplast#1#2{\_trycs{lastpp:\_csstring#1:#2}{?\_the#1}}
-\_def\truepage{?\_the\_pageno}
+\:\_def\thepp#1{\_trycs{pp:\_csstring#1}{?\_the#1}}
+\:\_def\thepplast#1#2{\_trycs{lastpp:\_csstring#1:#2}{?\_the#1}}
+\:\_def\truepage{?\_the\_pageno}
\_def\incrpp#1{\_incr#1%
\_isdefined{_pgref:pp:\_csstring#1:\_the#1}\_iftrue
\_edef\.tmp{\_cs{_pgref:pp:\_csstring#1:\_the#1}}%
@@ -847,6 +1099,7 @@ end,'global') % we want to keep the meanig after group
}
\_trick 0115 \ispageodd ;
+%%%%%%%%%%%%
\_def\ispageodd#1{%
\_incr\_mnotenum
@@ -859,6 +1112,7 @@ end,'global') % we want to keep the meanig after group
}
\_trick 0033 \iniseccc \seccc ;
+%%%%%%%%%%%%
\_newcount \_secccnum
\_def \_thesecccnum {\_othe\_chapnum.\_the\_secnum.\_the\_seccnum.\_the\_secccnum}
@@ -872,7 +1126,7 @@ end,'global') % we want to keep the meanig after group
\_printseccc{\_scantextokens{#1}}%
\_resetnonumnotoc
}
-\public \seccc ;
+\:\public \seccc ;
\_def \_seccx {\_secccx \_secccnum=0 }
\_def \_secccx {}
@@ -884,23 +1138,23 @@ end,'global') % we want to keep the meanig after group
\_firstnoindent
}
-\_def\iniseccc{} % use it for autoloading the OpTeX trick code before \maketoc
+\:\_def\iniseccc{} % use it for autoloading the OpTeX trick code before \maketoc
\_sdef{_tocl:4}#1#2#3{\_advance\_leftskip by2\_iindent \_cs{_tocl:2}{#1}{#2}{#3}}
\_trick 0066 \makeLOF \makeLOT \captionT \captionF ;
%%%%%%%%%%%%
-\_def\captionT [#1]#2{\_caption/t[#1]\_ewref\.Xtab{{#1}{\_thetnum}{#2}}\_ignorespaces}
-\_def\captionF [#1]#2{\_caption/f[#1]\_ewref\.Xfig{{#1}{\_thefnum}{#2}}\_ignorespaces}
+\:\_def\captionT [#1]#2{\_caption/t[#1]\_ewref\.Xtab{{#1}{\_thetnum}{#2}}\_ignorespaces}
+\:\_def\captionF [#1]#2{\_caption/f[#1]\_ewref\.Xfig{{#1}{\_thefnum}{#2}}\_ignorespaces}
-\_def\.lline#1#2#3#4#5{\_line{\_hskip2em\_llap{\_bf#2 } #3 \_tocdotfill\ \_ilink[pg:#4]{#5}}}
+\_def\.lline#1#2#3#4#5{\_line{\_hskip2em\_llap{\_bf#2\_enspace}#3 \_tocdotfill\ \_ilink[pg:#4]{#5}}}
\_def\.makell#1#2{\_par
- \_ifx#1\_undefined \_opwarning{no data for list of #2, try to run TeX again}\_openref
+ \_ifx#1\_undefined \_opwarning{no data for #2, try to run TeX again}\_openref
\_else #1\_fi
}
-\_def\makeLOF{\.makell\.loflist{figures}}
-\_def\makeLOT{\.makell\.lotlist{tables}}
+\:\_def\makeLOF{\.makell\.loflist{LOF}}
+\:\_def\makeLOT{\.makell\.lotlist{LOT}}
\_globaldefs=0 % \refdecl needs to be processed when \localdefs=0
\_refdecl{%
@@ -921,7 +1175,7 @@ end,'global') % we want to keep the meanig after group
\_trick 0129 \pgforeground ;
%%%%%%%%%%%%
-\_newtoks \pgforeground
+\:\_newtoks \pgforeground
\_addto\_makefootline{
\_istoksempty\pgforeground \_iffalse
@@ -934,6 +1188,17 @@ end,'global') % we want to keep the meanig after group
\_fi
}
+\_trick 0144 \xparshape ;
+%%%%%%%%%%%%
+
+\_newcount\.xprevgraf
+\_def\xparshape{%
+ \.xprevgraf=0
+ \_def\_par{{\_prevgraf=\.xprevgraf\_endgraf}\.xprevgraf=\_prevgraf}%
+ \_parshape}
+\:\_def\endxparshape{\_par \_let\_par=\_endgraf}
+
+
\_trick 0130 \onlyifnew ;
%%%%%%%%%%%%
@@ -950,11 +1215,45 @@ end,'global') % we want to keep the meanig after group
\_def\.onlyifnewA{#1#2}\_fi
\_fi\_ea\_endgroup\.onlyifnewA}
+\_trick 0142 \ismatch \isinmacro ;
+%%%%%%%%%%%%
+
+\_def\.ismatch#1#2{\_ea\.ismatchA\_directlua{
+ tex.sprint("{")
+ tex.sprint(-2,"\_luaescapestring{\_unexpanded{#1}}")
+ tex.sprint("}{")
+ tex.sprint(-2,"\_luaescapestring{\_unexpanded{#2}}")
+ tex.sprint{"}"}
+}}
+\_def\.ismatchA#1#2{\_immediateassignment
+ \_def\.ismatchB##1#2##2\_relax{\_ifx^##2^\_ea\_unless\_fi}%
+ \.ismatchB #1\_sep\_sep#2\_relax
+}
+\:\_def\isinmacro#1{%
+ \_isinlist{\_meaning#1}{->}\_iffalse \_ea\_ignoresecond \_else \_ea\_usesecond \_fi
+ {\_ignoresecond\_unless}{\_ea\.isinmacroA\_meaning#1\_relax}%
+}
+\_def\.isinmacroA #1->#2\_relax{\.ismatch{#2}}
+
+\_nspublic \ismatch ;
+
%%%%%%%%%%%%
\_trick end ;
\_endcode
+2024-12-09 \exectree: bug in default macros fixed
+2024-11-26 \exectree, \jsonread etc. implemented
+2024-11-23 \dbcreate etc. implemented
+2024-11-22 \dbloop etc. implemented
+2024-11-21 \: introduced for warning if a macro is re-defined
+2024-11-21 \csvread added
+2024-11-05 \algolnum added
+2024-11-04 \algolcap, \makeLOA added
+2024-10-31 \xparshape added
+2024-10-27 \mathinexpr added
+2024-10-22 \ismatch, \isinmacro added
+2024-09-10 \clipbox added
2024-05-07 \replmacro added
2024-05-02 \xreplstring added
2024-04-15 \directchar added
diff --git a/Master/texmf-dist/tex/optex/base/optex.ini b/Master/texmf-dist/tex/optex/base/optex.ini
index 0c037d6f4c6..67492d1cdce 100644
--- a/Master/texmf-dist/tex/optex/base/optex.ini
+++ b/Master/texmf-dist/tex/optex/base/optex.ini
@@ -21,7 +21,7 @@
% OpTeX version
-\def\optexversion{1.15 Jun 2024}
+\def\optexversion{1.16 Dec 2024}
\def\fmtname{OpTeX}
\let\fmtversion=\optexversion
diff --git a/Master/texmf-dist/tex/optex/base/optex.lua b/Master/texmf-dist/tex/optex/base/optex.lua
index 71834a56aa9..a0ce7c38554 100644
--- a/Master/texmf-dist/tex/optex/base/optex.lua
+++ b/Master/texmf-dist/tex/optex/base/optex.lua
@@ -34,6 +34,30 @@ function optex.mdfive(file)
tex.print(md5.sumhexa(data))
end
end
+
+-- The `optex.raw_ht ()` function measures the height plus depth of given
+-- `\vbox` saved by `\setbox`. It solves \"dimension too large" problem with big boxes.
+-- It is used in the \^`\_rawht` macro.
+
+function optex.raw_ht()
+ local nod = tex.box[token.scan_int()] -- read head node of the given box
+ local ht = 0
+ if not(nod==nil) and nod.id==1 then -- given box must be \vbox
+ for n in node.traverse(nod.head) do
+ if n.id==0 or n.id==1 or n.id==2 then -- hbox or vbox or rule
+ ht = ht + n.height + n.depth
+ end
+ if n.id==12 then -- glue
+ ht = ht + n.width
+ end
+ if n.id==13 then -- kern
+ ht = ht + n.kern
+ end
+ end
+ end
+ tex.print(string.format('%.0f',ht/65536))
+end
+
--
-- \medskip\secc[lua-alloc] Allocators^^M
local alloc = _ENV.alloc or {}
@@ -314,7 +338,7 @@ function callback.call_callback(name, ...)
if cbtype == nil then
err("cannot call callback '%s' - no such callback exists", name)
elseif cbtype == "exclusive" then
- -- only one function, atleast default function is guaranteed by
+ -- only one function, at least default function is guaranteed by
-- create_callback
return functions[1](...)
elseif cbtype == "simple" then
@@ -360,7 +384,7 @@ call_callback = callback.call_callback
--
-- Create \"virtual" callbacks `pre/post_mlist_to_hlist_filter` by setting
-- `mlist_to_hlist` callback. The default behaviour of `mlist_to_hlist` is kept by
--- using a default function, but it can still be overriden by using
+-- using a default function, but it can still be overridden by using
-- `add_to_callback`.
default_functions["mlist_to_hlist"] = node.mlist_to_hlist
callback.create_callback("pre_mlist_to_hlist_filter", "list")
@@ -392,7 +416,7 @@ end)
-- is used for coloring based on attributes.
-- There is however a challenge - how to call this callback? We could redefine
-- `\shipout` and `\pdfxform` (which both run `ship_out` procedure internally),
--- but they would lose their primtive meaning – i.e. `\immediate` wouldn't work
+-- but they would lose their primitive meaning – i.e. `\immediate` wouldn't work
-- with `\pdfxform`. The compromise is to require anyone to run
-- \`\_preshipout``<destination box number><box specification>` just before
-- `\shipout` or `\pdfxform` if they want to call `pre_shipout_filter` (and
@@ -441,7 +465,7 @@ end, "_tracingmacros")
-- Traditionally, pdf\TeX/ allowed managing PDF page resources (graphics
-- states, patterns, shadings, etc.) using a single toks register,
-- `\pdfpageresources`. This is insufficient due to the expected PDF object
--- structer and also because many \"packages" want to add page resources and
+-- structure and also because many \"packages" want to add page resources and
-- thus fight for the access to that register. We add a finer alternative,
-- which allows adding different kinds of resources to a global page resources
-- dictionary. Note that some resource types (fonts and XObjects) are already
@@ -559,7 +583,7 @@ optex.directpdfliteral = pdfliteral
-- The function {\Red`colorize`}`(head, current, current_stroke, current_tr)`
-- goes through a node list and injects PDF literals according to attributes.
-- Its arguments are the head of the list to be colored and the current color
--- for fills and strokes and the current trasparency attribute.
+-- for fills and strokes and the current transparency attribute.
-- It is a recursive function – nested
-- horizontal and vertical lists are handled in the same way. Only the
-- attributes of “content” nodes (glyphs, rules, etc.) matter. Users drawing
@@ -743,6 +767,7 @@ define_lua_command("_beglocalcontrol", function()
end)
-- History:
+ -- 2024-09-06 raw_ht() implemented
-- 2024-06-02 more checking in add_to_callback and remove_from_callback
-- 2024-02-18 \_beglocalcontrol added
-- 2022-08-25 expose some useful functions in `optex` namespace
diff --git a/Master/texmf-dist/tex/optex/base/others.opm b/Master/texmf-dist/tex/optex/base/others.opm
index b7ad0556fc4..6d9eb001177 100644
--- a/Master/texmf-dist/tex/optex/base/others.opm
+++ b/Master/texmf-dist/tex/optex/base/others.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \uv {Miscenaleous <2024-06-27>} % preloaded in format
+\_codedecl \uv {Miscenaleous <2024-11-21>} % preloaded in format
\_doc ----------------------------
\`\useOpTeX` and \`\useoptex` are declared as `\relax`.
@@ -110,12 +110,13 @@
\_def\_lipsumA #1.#2]#3{\_ifx^#2^\_lipsumB #1\_empty-\_empty\_fin \_else \_lipsumdot[#1].\_fi}
\_def\_lipsumB #1-#2\_empty#3\_fin{%
\_fornum #1..\_ifx^#2^#1\_else#2\_fi \_do {\_lipsumtext[##1]\_par}}
+\_def\_lipsumfile{lipsum.ltd.tex}
\_def\_lipsumload{\_beglocalcontrol
{\_setbox\_nonebox=\_vpack{\_tmpnum=0 % vertical mode during \input lipsum.ltd.tex
\_def\ProvidesFile##1[##2]{}%
\_def\SetLipsumLanguage##1{}%
\_def\NewLipsumPar{\_incr\_tmpnum \_sxdef{_lip:\_the\_tmpnum}}%
- \_opinput {lipsum.ltd.tex}%
+ \_opinput\_lipsumfile
\_glet\_lipsumload=\_empty
}}%
\_endlocalcontrol}
@@ -141,7 +142,7 @@
in user name space.\nl
You can load a code chunk by \^`\loadtrick` `<cs-name>`. This
command doesn't run the `<cs-name>`, only loads the appropriate code. It
- should be usable if you want to load the code before the fisrt usage of
+ should be usable if you want to load the code before the first usage of
the `<cs-name>`.
\_cod -----------------------------
@@ -152,7 +153,8 @@
\_savecatcodetable\_tmpcatcodes \_catcodetable\_tmpcatcodes
\_long\_def\_loadtrickA ##1\_trick##2#1##3;{##1}%
\_wlog{Loading trick macros for \_string#1}%
- \_setbox\_nonebox=\_vpack{\_globaldefs=1 \_ea\_loadtrickA \_input {optex-tricks.opm}}%
+ \_setbox\_nonebox=\_vpack{\_let\:=\_trickprefix \_def\_trickseq{#1}%
+ \_globaldefs=1 \_ea\_loadtrickA \_input {optex-tricks.opm}}%
\_restorectable \_endnamespace
\_endlocalcontrol
}
@@ -161,19 +163,33 @@
\_xargs \_regtrick \begfile \createfile \beglua \begLUA \logginglua
\sethours \setminutes \setseconds \setweekday \showpglists \shownodes \runsystem
- \directoutput \algol \scaleto \scaletof \ttlineref \easylist \keepstyle \fcread
- \shadedframe \roundframe \cancel \ignoreinspic \keystroke
+ \directoutput \algol \algolkw \algolcap \algolnum \makeLOA \scaleto \scaletof \ttlineref \lref
+ \easylist \keepstyle \fcread \shadedframe \roundframe \cancel \ignoreinspic \keystroke
\colortab \crx \crtop \crbot \crmid \longtable \vcent \vbot \tnote \tabnodes \tablebefore
\framedblocks \twoblocks \pstart \settabs \import \incrpp \ispageodd
\iniseccc \seccc \makeLOF \makeLOT \captionF \captionT \correctvsize \pgforeground
\onlyifnew \thedimen \rebox \leftfill \rightfill \lrfill \directchar
- \xreplstring \replmacro \tdnum ;
+ \xreplstring \replmacro \tdnum \clipbox \ismatch \isinmacro \mathinexpr \xparshape
+ \csvread \csvdecl \dbcreate \exectree \showtree \jsonread \jsoncnv ;
\_sdef{_item:m}{\_loadtrick{\style m}\_cs{_item:m}}
+ \_doc
+ The `\:` is used as a prefix before `\def` etc. in the file `optex-tricks.opm`
+ if the declared control sequence is from user namespace. It checks if a user
+ have defined it before the trick is loaded and prints warning in this case.
+ The `\:` is set to \`\_trickprefix` in the group before trick loading.
+ If a trick includes only one autoloaded control sequence then it
+ needs not to be prefixed by `\:` because if a user redefines it then
+ the usage of it doesn't run autoloading.
+ \_cod
+
+\_def\_trickprefix #1#2{\_ifx#2\_undefined \_else \_def\_tmp{\_loadtrickD#2}\_ifx\_tmp#2\_else
+ \_opwarning{trick by \_ea\_string\_trickseq\_space loaded: \_string#2 redefined}\_fi\_fi #1#2}
+
\_doc -----------------------------
Lua\TeX/ version 1.14 and newer provides `\partokenname` which allows to
specify something different than `\par` at empty lines. We set `\_par`
- (see bellow) in \OpTeX/ version 1.04+ and newer. Some macros were rewritten
+ (see below) in \OpTeX/ version 1.04+ and newer. Some macros were rewritten
due to this change. And we copy old versions of these changed macros here
in order to allow to use older Lua\TeX/ versions where `\partokenname` is
not provided.\nl
@@ -184,13 +200,6 @@
\_ifx\_partokenname\_undefined % LuaTeX 1.13 or older:
- \_def\_begmulti #1 {\_par\_bgroup\_wipeepar\_multiskip\_penalty0 \_def\_Ncols{#1}
- \_setbox6=\_vbox\_bgroup\_bgroup \_let\_setxhsize=\_relax \_penalty-99
- \_advance\_hsize by\_colsep
- \_divide\_hsize by\_Ncols \_advance\_hsize by-\_colsep
- \_mullines=0
- \_def\par{\_ifhmode\_endgraf\_global\_advance\_mullines by\_prevgraf\_fi}%
- }
\_def\_incaption {\_bgroup
\_ifcsname _\_tmpa num\_endcsname \_ea\_incr \_csname _\_tmpa num\_endcsname
\_else \_opwarning{Unknown caption /\_tmpa}\_fi
@@ -218,7 +227,7 @@
\_nopagenumbers
}
\_def\_printverbline#1{\_putttpenalty \_indent \_printverblinenum \_kern\_ttshift #1\par}
- \_public \begmulti \boxlines \letter ;
+ \_public \boxlines \letter ;
\_else % LuaTeX 1.14 or newer:
@@ -244,6 +253,8 @@
\_endcode
+2024-11-21 \_trickprefix introduced
+2024-09-09 for old LuaTeX 1.13: \_def\_bemulti removed
2024-06-27 \_loadtrickD introduced in order to save format size.
2024-03-11 \_lipsumload+\_loadtrick: \vpack used instead \vbox.
2024-03-04 \_beglocalcontrol used in \_lipsumload.
diff --git a/Master/texmf-dist/tex/optex/base/output.opm b/Master/texmf-dist/tex/optex/base/output.opm
index e5bca3157e2..bd7e52543a8 100644
--- a/Master/texmf-dist/tex/optex/base/output.opm
+++ b/Master/texmf-dist/tex/optex/base/output.opm
@@ -50,7 +50,7 @@
This macro destroys itself, so the value is set only once. Typically it is
done in \^`\margins` macro or
when first \^`\_optexoutput` routine is called (see \^`\_begoutput`).
- Or it is called at the begining of the \^`\begtt`...`\endtt` environment before
+ Or it is called at the beginning of the \^`\begtt`...`\endtt` environment before
`\hsize` value is eventually changed by the user in this environment.
\_cod -----------------------------
@@ -107,7 +107,7 @@
}
\_doc -----------------------------
- The \`\_pagecontents` is similar as in plain \TeX/. The only differnece is
+ The \`\_pagecontents` is similar as in plain \TeX/. The only difference is
that the \`\_pagedest` is inserted at the top of `\_pagecontents`.\nl
The \`\_footnoterule` is defined here.
\_cod -----------------------------
diff --git a/Master/texmf-dist/tex/optex/base/parameters.opm b/Master/texmf-dist/tex/optex/base/parameters.opm
index c53508d3c1c..a61f4a0006c 100644
--- a/Master/texmf-dist/tex/optex/base/parameters.opm
+++ b/Master/texmf-dist/tex/optex/base/parameters.opm
@@ -331,7 +331,7 @@
if `\ilevel=1`.\nl
The \`\ilistskipamount` is vertical skip above and below the items list
if `\ilevel>1`.\nl
- The \`\itemskipamount` is vertical skip between list items, but not above the firts
+ The \`\itemskipamount` is vertical skip between list items, but not above the first
and below the last.
\_cod -----------------------------
@@ -604,7 +604,7 @@
The behavior of document processing by \OpTeX/ is
controlled by {\em parameters}. The parameters are
\begitems
-* primitive registers used in build-in algorithms of \TeX/,
+* primitive registers used in built-in algorithms of \TeX/,
* registers declared and used by \OpTeX/ macros.
\enditems
Both groups of registers have their type: number, dimension, skip, token
@@ -612,7 +612,7 @@ list.
The registers are represented by their names (control sequences). If the user
re-defines this control sequence then the appropriate register exists
-steadily and build-in algorithms are using it without change. But user
+steadily and built-in algorithms are using it without change. But user
cannot access its value in this case. \OpTeX/ declares two control sequences
for each register: prefixed (private) and unprefixed (public). \OpTeX/ macros use only
prefixed variants of control sequences. The user should use the unprefixed variant
diff --git a/Master/texmf-dist/tex/optex/base/pdfuni-string.opm b/Master/texmf-dist/tex/optex/base/pdfuni-string.opm
index 4e5a29e9db4..8a4eb7b4353 100644
--- a/Master/texmf-dist/tex/optex/base/pdfuni-string.opm
+++ b/Master/texmf-dist/tex/optex/base/pdfuni-string.opm
@@ -27,7 +27,7 @@
Big Endian UTF-16 and enclosed to \code{<>}. Example of usage:
`\pdfunidef\infoauthor{Petr Olšák} \pdfinfo{/Author \infoauthor}`.\nl
\^`\pdfunidef` does more things than only converting to hexadecimal PDF string.
- The <text> can be scanned in verbatim mode (it is true becuase \^`\_Xtoc`
+ The <text> can be scanned in verbatim mode (it is true because \^`\_Xtoc`
reads the <text> in verbatim mode). First `\edef` do
`\_scantextokens\unexpanded` and second `\edef` expands the parameter
according to current values on selected macros from `\_regoul`. Then
@@ -118,7 +118,7 @@ This encoding is \TeX/-discomfortable because it looks like
This example shows a hexadecimal PDF string (enclosed in \code{<>} as opposed
to the literal PDF string enclosed in `()`). In these strings each byte is
represented by two hexadecimal characters (`0-9`, `A-F`). You can tell the
-encoding is UTF-16BE, becuase it starts with \"Byte order mark" `FEFF`. Each
+encoding is UTF-16BE, because it starts with \"Byte order mark" `FEFF`. Each
unicode character is then encoded in one or two byte pairs. The example string
corresponds to the text \"Cvičení je zátěž a ${\rm x} ∈ 𝕄$". Notice the 4 bytes
for the last character, $𝕄$. (Even the whitespace would be OK in a PDF file,
diff --git a/Master/texmf-dist/tex/optex/base/prefixed.opm b/Master/texmf-dist/tex/optex/base/prefixed.opm
index 89aa0b4966a..9aca2367e42 100644
--- a/Master/texmf-dist/tex/optex/base/prefixed.opm
+++ b/Master/texmf-dist/tex/optex/base/prefixed.opm
@@ -39,7 +39,7 @@
does `<what><sequence>` for each sequences.
\_cod -----------------
-\_let\_ea =\_expandafter % usefull shortcut
+\_let\_ea =\_expandafter % useful shortcut
\_long\_def \_xargs #1#2{\_ifx #2;\_else \_ea#1\_ea#2\_ea\_xargs \_ea #1\_fi}
diff --git a/Master/texmf-dist/tex/optex/base/ref-file.opm b/Master/texmf-dist/tex/optex/base/ref-file.opm
index 922150f9f5d..2e475f0c500 100644
--- a/Master/texmf-dist/tex/optex/base/ref-file.opm
+++ b/Master/texmf-dist/tex/optex/base/ref-file.opm
@@ -103,7 +103,7 @@
We must read `<definitions of your ref macros>` while `#` has the catcode 12,
because we don't want to duplicate each `#` in the `.ref` file.\nl
`\refdecl` appends its data to the \`\_refdecldata` macro. It is
- pushed to the `.ref` file immediatelly only if the file is opened
+ pushed to the `.ref` file immediately only if the file is opened
already. Otherwise we are waiting to `\openref` because we don't want
to open the `.ref` file if it is unnecessary.
\_cod \_fin -----------------
diff --git a/Master/texmf-dist/tex/optex/base/sections.opm b/Master/texmf-dist/tex/optex/base/sections.opm
index de647475efd..01a0d4bd30a 100644
--- a/Master/texmf-dist/tex/optex/base/sections.opm
+++ b/Master/texmf-dist/tex/optex/base/sections.opm
@@ -179,7 +179,7 @@
\_optdef\_secc[]{\_trylabel \_scantoeol\_insecc}
\_def\_trylabel{\_istoksempty\_opt\_iffalse \_label[\_the\_opt]\_fi}
-\_sdef{_eol:chap}{\_inchap} % enebles \bracedparam\chap{title}
+\_sdef{_eol:chap}{\_inchap} % enables \bracedparam\chap{title}
\_sdef{_eol:sec}{\_insec} % enables \bracedparam\sec{title}
\_sdef{_eol:secc}{\_insecc} % enables \bracedparam\secc{title}
@@ -292,7 +292,7 @@
The \`\_insertmark``{<title text>}` saves `\mark` in the format
`{<title-num>} {<title-text>}`, so it can be printed \"as is" in
- `\headline` (see the space between them), or you can define a formating
+ `\headline` (see the space between them), or you can define a formatting
macro with two parameters for processing these data, if you need it.
\_cod -----------------------------
@@ -378,12 +378,12 @@
* \^`\_thecapnum` ... expands to `\the<letter>num` (caption number).
\enditems
The macro \^`\_printcaptiont` (or `f`) is processed inside group and the
- `\_par` can be run after this group. If you want to re-define formating
+ `\_par` can be run after this group. If you want to re-define formatting
parameters for `\_par`, do this in the macro \^`\_captionformat`.
The \`\_captionsep` inserts a separator between auto-generated
caption number and the following caption text. Default separator
is `\_enspace` but if the caption text starts with dot or colon, then
- the space is not inserted. A user can wite `\caption/t: My table`
+ the space is not inserted. A user can write `\caption/t: My table`
and \"{\bf Table 1.1:} My table" is printed. You can re-define
the \^`\_captionsep` macro if you want to use another separator.
\_cod -----------------------------
@@ -479,7 +479,7 @@
\_endcode % -------------------------------------
-2024-01-19 \bracedparam\secl enalbed
+2024-01-19 \bracedparam\secl enabled
2024-01-18 \tit, \chap, \sec, \secc: added cooperation with new \bracedparam
2023-05-02 \_numprint used
2022-10-19 More robust \caption (two opened groups, \_printcaption introduced)
@@ -489,7 +489,7 @@
2021-02-09 \thisoutline implemented
2021-01-26 \_nl: \unskip added
2021-01-11 \secl introduced
-2021-01-05 \_thednum printed in text mode in its both occurences.
+2021-01-05 \_thednum printed in text mode in its both occurrences.
2020-04-28 \_secfonts etc: \_boldify is last.
2020-04-22 \_chapx, \_secx, \_seccx rewritten
2020-03-14 introduced
diff --git a/Master/texmf-dist/tex/optex/base/slides.opm b/Master/texmf-dist/tex/optex/base/slides.opm
index 84cf6f5db30..857d9283629 100644
--- a/Master/texmf-dist/tex/optex/base/slides.opm
+++ b/Master/texmf-dist/tex/optex/base/slides.opm
@@ -85,7 +85,7 @@
\_doc -----------------------------
The default values of \`\pg`, i.\,e.\ `\pg;`, `\pg+` and `\pg.` are very simple.
- They are used when `\showslides` is not specified.
+ They are used when `\slideshow` is not specified.
\_cod -----------------------------
\_def\_pg#1{\_cs{_spg:#1}}
@@ -94,7 +94,7 @@
\_sdef{_spg:+}{\_par}
\_doc -----------------------------
- The \`\_endslides` is defined as `\_end` primitive (preceeded by `\_byehook`), but
+ The \`\_endslides` is defined as `\_end` primitive (preceded by `\_byehook`), but
slide-designer can redefine it. For example,
\ulink[http://petr.olsak.net/optex/optex-tricks.html\#slider]{OpTeX trick 0029}
shows how to define clickable navigation to the pages and how to check
diff --git a/Master/texmf-dist/tex/optex/base/styles.opm b/Master/texmf-dist/tex/optex/base/styles.opm
index 1c37339d029..d04e248e79b 100644
--- a/Master/texmf-dist/tex/optex/base/styles.opm
+++ b/Master/texmf-dist/tex/optex/base/styles.opm
@@ -9,7 +9,7 @@
returns to the outer vertical mode a box with `<line-1>`, next box with
`<line-2>` etc. Each box has its natural width. This is reason why we cannot
use paragraph mode where each resulting box has the width `\hsize`.
- The `<eol>` is set active and `\everypar` starts `\hbox{` and acive <eol>
+ The `<eol>` is set active and `\everypar` starts `\hbox{` and active <eol>
closes this `\hbox` by `}`.
\_cod -----------------------------
diff --git a/Master/texmf-dist/tex/optex/base/table.opm b/Master/texmf-dist/tex/optex/base/table.opm
index 8da087386ab..3108434d66f 100644
--- a/Master/texmf-dist/tex/optex/base/table.opm
+++ b/Master/texmf-dist/tex/optex/base/table.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \table {Basic macros for OpTeX <2023-06-27>} % preloaded in format
+\_codedecl \table {Macros for tables <2024-11-21>} % preloaded in format
\_doc -----------------------------
The result of the \`\table``{<declaration>}{<data>}` macro is inserted into
@@ -37,8 +37,6 @@
between them) have normal baseline distance.\nl
The \`\_tableA``{<declaration>}` macro scans the `<declaration>` by
`\_scantabdata#1\_relax` and continues by processing `{<data>}` by \^`\_tableB`.
- The trick `\_tmptoks={<data>}\_edef\_tmpb{\_the\_tmptoks}`
- is used here in order to keep the hash marks in the <data> unchanged.
\_cod -----------------------------
\_def\_tableA#1{\_egroup
@@ -53,13 +51,14 @@
\_fi
\_colnum=0 \_let\_addtabitem=\_addtabitemx
\_def\_tmpa{}\_tabdata={\_colnum1\_relax}\_scantabdata#1\_relax
- \_the\_everytable \_bgroup \_catcode`\#=12 \_tableB
+ \_the\_everytable \_tableB
}
\_doc -----------------------------
- The \`\_tableB` saves `<data>` to `\_tmpb`
- and does \^`\replstring`s to prefix each macro \^`\crl` (etc.)
- by `\_crcr`. See \^`\_tabreplstrings`.
+ The \`\_tableB` saves `<data>` to `\_tmpb`. The `#1` parameter is
+ re-scanned in order to set potential `#` characters inside it as others.
+ This is needed because of `\gdef\_tmpb` and next \^`\replstring`s.
+ They prefix each macro \^`\crl` (etc.) by `\_crcr`. See \^`\_tabreplstrings`.
The whole `\_tableB` macro is hidden in `{...}` in order to
there may be `\table` in `\table` and we want to manipulate with
`&` and `\cr` as with normal tokens in the `\_tabreplstrings`, not as
@@ -76,10 +75,10 @@
If `pxto` keyword was used, then we set the virtual unit \^`\tsize` to
`-\hsize` first. Then the first attempt of the table is created in box 0.
- All collums where `p{..\tsize}` is used, are created as empty in this first
+ All columns where `p{..\tsize}` is used, are created as empty in this first
pass. So, the `\wd0` is the width of all other columns.
The \^`\_tsizesum` includes the sum of \^`\tsize`'s in `\hsize` units
- after firts pass. The desired table width is stored in the `\_tmpdim`, so
+ after first pass. The desired table width is stored in the `\_tmpdim`, so
`\_tmpdim-\_wd0` is the rest which have to be filled by \^`\tsize`s.
Then the \^`\tsize` is re-calculated and the real table is
printed by `\halign` in the second pass.
@@ -92,9 +91,10 @@
work in special cases here like \code{`\{`} for example.
\_cod -----------------------------
-\_long\_def\_tableB #1{\_egroup
- {\_def\_tmpb{#1}\_tablereplstrings
- \_edef\_tabskipmid{\_the\_tabskip}\_tabskip=\_tabskipl
+\_long\_def\_tableB #1{%
+ {{\_catcode`\#=12 % see OpTeX trick 0117:
+ \_directlua{tex.sprint(-1,"\_luaescapestring{\_unexpanded{\_gdef\_tmpb{#1}}}")}}%
+ \_tablereplstrings \_edef\_tabskipmid{\_the\_tabskip}\_tabskip=\_tabskipl
\_ifpxto
\_edef\_tsizes{\_global\_tsizesum=\_the\_tsizesum \_gdef\_noexpand\_tsizelast{\_tsizelast}}%
\_tsizesum=\_zo \_def\_tsizelast{0}%
@@ -103,11 +103,12 @@
\_ifdim \_tmpdim >\_zo \_else \_tsizesum=\_zo \_fi
\_ifdim \_tsizesum >\_zo \_tsize =\_expr{\_number\_hsize/\_number\_tsizesum}\_tmpdim
\_else \_tsize=\_zo \_fi
- \_tsizes % retoring values if there is a \table pxto inside a \table pxto.
+ \_tsizes % restoring values if there is a \table pxto inside a \table pxto.
\_setbox0=\_null \_halign \_tableC
\_else
\_halign\_tablew \_tableC
\_fi
+ \_glet\_tmpb\_undefined
}\_egroup % \_tablebox\_bgroup is in the \_table macro
}
\_def\_tableC{\_ea{\_the\_tabdata\_tabskip=\_tabskipr\_cr \_scantextokens\_ea{\_tmpb\_crcr}}}
@@ -305,7 +306,7 @@
\_doc -----------------------------
The \`\fS` macro is more tricky. The \^`\_tableparbox` isn't printed
- immediatelly, but `\setbox2=` is prefixed by the macro \`\_tableparA`,
+ immediately, but `\setbox2=` is prefixed by the macro \`\_tableparA`,
which is empty by default (used in \^`\_tablepar`). The \`\_tableparD`
is processed after the box is set: it checks if there is only one line
and prints `\hbox to\hsize{\hfil<this line>\hfil}` in this case. In other
@@ -591,6 +592,7 @@ after the second one.
\_endinput
+2024-11-21 \_tableB improved (rescan its parameter by \directlua)
2023-06-27 \frame: argument in group
2023-05-19 \_tableparB,C: no strut when \tskip is processed (bug fixed).
2022-12-26 \tabdeclare: use {##} in order to allow a\over b in table items
diff --git a/Master/texmf-dist/tex/optex/base/uni-lcuc.opm b/Master/texmf-dist/tex/optex/base/uni-lcuc.opm
index 0cd8bfe6e50..317cec43741 100644
--- a/Master/texmf-dist/tex/optex/base/uni-lcuc.opm
+++ b/Master/texmf-dist/tex/optex/base/uni-lcuc.opm
@@ -15945,11 +15945,11 @@ The file `UnicodeData.txt` is read if this file exists in your \TeX/
distribution. The format is specified
at \url{http://www.unicode.org/L2/L1999/UnicodeData.html}. We read only `Ll`
(lowercase letters), `Lu` (upperase letters) and `Lo` (other letters) and
-set appopriate codes. The scanner of `UnicodeData.txt` is implemented here
+set appropriate codes. The scanner of `UnicodeData.txt` is implemented here
in the group (lines 6 to 15). After the group is closed then
the file `uni-lcuc.opm` is leaved by `\endinput`.
-If the file `UnicodeData.txt` does not exsists then internal data are used.
+If the file `UnicodeData.txt` does not exist then internal data are used.
They follow to the end of the file `uni-lcuc.opm`.
{\everytt={\typosize[8/10]\_let\_printverbline=\_printcodeline \medskip}\ttline=-1
diff --git a/Master/texmf-dist/tex/optex/base/unimath-codes.opm b/Master/texmf-dist/tex/optex/base/unimath-codes.opm
index d2b7e0e1e31..e2436d277f7 100644
--- a/Master/texmf-dist/tex/optex/base/unimath-codes.opm
+++ b/Master/texmf-dist/tex/optex/base/unimath-codes.opm
@@ -301,7 +301,7 @@
of the <int-character> to `\_int:<int-character>` using `\Umathchardef` and
declare <int-character> as math-active and define it
as `\_int:<int-character> \_nolimits`. Moreover, we define `\intop` as
- `\_int:<int-character>` (it is the itegral with limits like in plain \TeX).
+ `\_int:<int-character>` (it is the integral with limits like in plain \TeX).
We do this with other int-like operators listed below too.
\_cod -----------------------------
@@ -321,7 +321,7 @@
\_cod -----------------------------
\_global\_Udelcode`<=1 "027E8 % these characters have different meaning
-\_global\_Udelcode`>=1 "027E9 % as normal and as delimeter
+\_global\_Udelcode`>=1 "027E9 % as normal and as delimiter
\_mit % default math alphabets setting
@@ -501,7 +501,7 @@
\_negationof \Rightarrow \nRightarrow
\_negationof \exists \nexists
\_negationof \ni \nni
-\_negationof \paralel \nparalel
+\_negationof \parallel \nparallel
\_negationof \sim \nsim
\_negationof \approx \napprox
\_negationof \equiv \nequiv
diff --git a/Master/texmf-dist/tex/optex/base/unimath-macros.opm b/Master/texmf-dist/tex/optex/base/unimath-macros.opm
index ac926b5e89e..b5774aac5e9 100644
--- a/Master/texmf-dist/tex/optex/base/unimath-macros.opm
+++ b/Master/texmf-dist/tex/optex/base/unimath-macros.opm
@@ -122,7 +122,7 @@
\`\_mfontfeatures` and to the size-dependent features `ssty=1`
if script size is asked or `ssty=2` if scriptscriptsize is asked.\nl
\`\_mparams` can insert additional font features
- dependig on the current `\_mfam`.\nl
+ depending on the current `\_mfam`.\nl
The \^`\_mfactor` `<family><space>` sets scaling factor,
see section~\ref[math-preload] for more information.\nl
The \`\_textmff`, \`\_scriptmff` and \`\_sscriptmff` are font
@@ -251,7 +251,7 @@ size of the text font. It can be used if the used text font and loaded math font
incompatible ex height. If missing then the scaling factor is 1.
\^`\loadboldmath` `{<bold-font>} \to {<normal-font>}` loads bold variant only
-if `<normal-font>` was sucessully loaded by the previous `\loadmath`. For example:
+if `<normal-font>` was sucessfully loaded by the previous `\loadmath`. For example:
\begtt
\loadmath {[xitsmath-regular]}
@@ -293,7 +293,7 @@ example:
sets the characters `\stareq`, `\triangleq`, `\veeeq`, `\wedgeq` from
the `\xits` additional font. The <list of sequences> can include
control sequences from the `unicode-table.tex`, but no math
-accents. These contol sequences can be printed by `\input print-unimath.opm`.
+accents. These control sequences can be printed by `\input print-unimath.opm`.
The \^`\mathchars` macro keeps the class and slot of declared math objects
and re-declares only family of them. It is applied to all control
diff --git a/Master/texmf-dist/tex/optex/base/usebib.opm b/Master/texmf-dist/tex/optex/base/usebib.opm
index dcacbb0ebcd..0b4d7bd270c 100644
--- a/Master/texmf-dist/tex/optex/base/usebib.opm
+++ b/Master/texmf-dist/tex/optex/base/usebib.opm
@@ -27,7 +27,7 @@
\_doc -----------------------------
The \`\_nextat` macro skips the text in the `.bib` file to the next `@`, and starts
the \`\_bibentry` macro which reads `@<entry type>{<data>}` from the `.bib` file.
- Each reference entry is conveted to the \`\_entrydata`
+ Each reference entry is converted to the \`\_entrydata`
macro and then `\_glet \_be:<bib-part>/<label> = \_entrydata` is done.
The \^`\_entrydata` includes key-value pairs, as described in the
section~\ref[readbibs].
@@ -299,7 +299,7 @@
\_getfield[#3]\_bibfield
\_getfield[#3num]\_namecount % total persons in the author/editor fields
\_ifx\_bibfield\_empty\_else
- \_def\_bibfield{\_loopauthors{#3}}% read author/edior field in a loop
+ \_def\_bibfield{\_loopauthors{#3}}% read author/editor field in a loop
\_fi
\_else
\_getfield[#2#3]\_bibfield
@@ -331,7 +331,7 @@
\_doc -----------------------------
\`\_loopauthors``{<field-name>}` does a loop over all authors/editors in
the `author` or `editor` field. The \`\_namecount`
- (total nuber of authors/editors) was defined in
+ (total number of authors/editors) was defined in
\^`\_bprintb`. Then for each author/edtor it do:
\begitems
* Set \`\_NameCount` to the position number of the currently processed author/editor.
@@ -361,7 +361,7 @@
\_doc -----------------------------
\`\_AbbreviateFirstname`, \`\_RetrieveFieldIn`, \`\_RetrieveField` are here only for
- backward comaptibility with previous macros based on the librarian package.
+ backward compatibility with previous macros based on the librarian package.
The \`\_CreateField`, \`\_SortingOrder`, and \`\_SpecialSort` are dummy
macros because the sorting is implemented by a slightly different way
than in librarian package.
@@ -551,7 +551,7 @@ Such \"bibmark" is saved to the `.ref` file and used in next \TeX/ run as
Moreover, the bib-style writer must declare the format of
special fields `author` and `editor`. These fields include a
-list of names, each name is precessed individually in a loop. The
+list of names, each name is processed individually in a loop. The
\^`\_authorname` or \^`\_editorname` is called for each name on the list.
The bib-style writer must define
the \`\_authorname` and \`\_editorname` commands
@@ -626,7 +626,7 @@ If you do `\slet{tmp}{_be:/tbn}` then you can print the data (for example) by:
\ea\foreach \tmp \do [#1]#2{\wterm{field-name: "#1", data: "#2"}}
\endtt
or you can do `\ea\foreach \tmp \do [#1]#2{\sdef{bib-field:#1}{#2}}` to enable
-direct acces to the scanned data.
+direct access to the scanned data.
Note that entry type and field names are converted lower-case by the `\readbibs` macro.
diff --git a/Master/texmf-dist/tex/optex/base/verbatim.opm b/Master/texmf-dist/tex/optex/base/verbatim.opm
index 3f486f83339..3fd1434e2f8 100644
--- a/Master/texmf-dist/tex/optex/base/verbatim.opm
+++ b/Master/texmf-dist/tex/optex/base/verbatim.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \begtt {Verbatim <2022-04-23>} % preloaded in format
+\_codedecl \begtt {Verbatim <2024-11-05>} % preloaded in format
\_doc ----------------------------
The internal parameters
@@ -94,6 +94,11 @@
same line where `\begtt` is. This `#1` parameter is used after \^`\everytt`
parameters settings, so users can change them locally.
+ A user can write `\begtt \ttline=0` and we want to interpret this setting
+ locally too. This is the reason of creating the \`\_restorettline` macro
+ before the argument `#1` of `\_begtti` is processed and using the trick
+ `\ifnum\ttline=\maxdimen` after this processing. See the code below.
+
The \^`\_begtti` macro does \^`\_setverb` and another preprocessing, sets
`\endlinechar` to `^^J` and reads the following text in verbatim mode
until \`\endtt` occurs. This scanning is done by \`\_startverb` macro which is
@@ -127,13 +132,15 @@
\_eoldef \_begtti#1{\_wipeepar \_setxhsize
\_vskip\_parskip \_ttskip
\_setverb
- \_ifnum\_ttline<0 \_let\_printverblinenum=\_relax \_else \_initverblinenum \_fi
\_adef{ }{\_dsp}\_adef\^^I{\t}\_parindent=\_ttindent \_parskip=0pt
\_def\t{\_hskip \_dimexpr\_tabspaces em/2\_relax}%
\_protrudechars=0 % disable protrusion
- \_the\_everytt \_relax #1\_relax \_ttfont
+ \_xdef\_restorettline{\_global\_ttline=\_the\_ttline\_relax}\_ttline=\_maxdimen
+ \_the\_everytt \_relax #1\_relax
+ \_ifnum\_ttline=\_maxdimen \_restorettline \_else \_aftergroup\_restorettline \_fi
+ \_ifnum\_ttline<0 \_let\_printverblinenum=\_relax \_else \_initverblinenum \_fi
\_def\_testcommentchars##1\_iftrue{\_iffalse}\_let\_hicomments=\_relax
- \_savemathsb \_endlinechar=`^^J
+ \_ttfont \_savemathsb \_endlinechar=`^^J
\_startverb
}
\_ea\_def\_ea\_startverb \_ea#\_ea1\_csstring\\endtt#2^^J{%
@@ -176,7 +183,7 @@
\_else
\_ifx\_vcomments\_empty\_else \_printcomments \_def\_vcomments{}\_fi
\_ifx\_fin#2%
- \_bgroup \_adef{ }{}\_def\t{}% if the last line is emtpy, we don't print it
+ \_bgroup \_adef{ }{}\_def\t{}% if the last line is empty, we don't print it
\_ifcat&#1&\_egroup \_ifx\_printverblinenum\_relax \_else \_decr\_ttline \_fi
\_else\_egroup \_printverbline{#1}\_fi
\_else
@@ -253,12 +260,14 @@
\_fi
\_vskip\_parskip \_ttskip \_wipeepar \_setxhsize
\_begingroup
- \_ifnum\_ttline<-1 \_let\_printverblinenum=\_relax \_else \_initverblinenum \_fi
\_setverb \_adef{ }{\_dsp}\_adef\^^I{\t}\_parindent=\_ttindent \_parskip=0pt
\_def\t{\_hskip \_dimexpr\_tabspaces em/2\_relax}%
\_protrudechars=0 % disable protrusion
- \_the\_everytt\_relax \_tmpb\_relax \_ttfont
- \_savemathsb \_endlinechar=`^^J \_tmpnum=0
+ \_xdef\_restorettline{\_global\_ttline=\_the\_ttline\_relax}\_ttline=\_maxdimen
+ \_the\_everytt\_relax \_tmpb\_relax
+ \_ifnum\_ttline=\_maxdimen \_restorettline \_else \_aftergroup\_restorettline \_fi
+ \_ifnum\_ttline<-1 \_let\_printverblinenum=\_relax \_else \_initverblinenum \_fi
+ \_ttfont \_savemathsb \_endlinechar=`^^J \_tmpnum=0
\_loop \_ifeof\_vifile \_tmpnum=\_vinolines\_space \_fi
\_ifnum\_tmpnum<\_vinolines\_space
\_vireadline \_advance\_tmpnum by1 \_repeat %% skip lines
@@ -385,6 +394,7 @@
\_endinput
History:
+2024-11-05 ... \ttline=0 is local in \begtt, \verbinput, \everytt parameters
2022-04-23 ... \_ttline counting: bug fixed
2022-02-22 ... \_reloading removed due to changes in font-select
2021-04-18 ... \_protrudechars=0 added
diff --git a/Master/texmf-dist/tex/optex/demo/op-slides.tex b/Master/texmf-dist/tex/optex/demo/op-slides.tex
index c6fdd88eb09..a173301da26 100644
--- a/Master/texmf-dist/tex/optex/demo/op-slides.tex
+++ b/Master/texmf-dist/tex/optex/demo/op-slides.tex
@@ -250,7 +250,7 @@ If you really need something unsupported by `\pg+` then you can use
\endtt
* The `\layers` opens <number> following pages with the same
- surrounding text. The counter `\layernum` is incemented from one to
+ surrounding text. The counter `\layernum` is incremented from one to
<number> . The <layered text> should use `\layernum` including
conditions like `\ifnum\layernum` or `\ifcase\layernum`.
See next page...
diff --git a/Master/texmf-dist/tex/optex/pkg/emoji.opm b/Master/texmf-dist/tex/optex/pkg/emoji.opm
index 3db7849d974..cbfb8186e3b 100644
--- a/Master/texmf-dist/tex/optex/pkg/emoji.opm
+++ b/Master/texmf-dist/tex/optex/pkg/emoji.opm
@@ -18,7 +18,7 @@
\_initunifonts
\_font\.tenemoji=[TwemojiMozilla]:+colr
\_def\.emojifont{\.tenemoji\_resizethefont}
-\_def\.emoji#1{{\.emojifont\_trycs{_emoji_:#1}{\_opwarning{uknown emoji "#1"}}}}
+\_def\.emoji#1{{\.emojifont\_trycs{_emoji_:#1}{\_opwarning{unknown emoji "#1"}}}}
\_doc -----------------------------
The mapping from names or aliases to the codes are declared in the
diff --git a/Master/texmf-dist/tex/optex/pkg/math.opm b/Master/texmf-dist/tex/optex/pkg/math.opm
index e3a9556eee4..56d5c10cf3a 100644
--- a/Master/texmf-dist/tex/optex/pkg/math.opm
+++ b/Master/texmf-dist/tex/optex/pkg/math.opm
@@ -3,19 +3,19 @@
% This file can serve as an template for other package files
% See end of the file for more information
-\_def\_math_version {0.15, 2024-04-28}
+\_def\_math_version {0.16, 2024-10-17}
\_codedecl \replacemissingchars {Doing math more comfortably <\_math_version>}
\_namespace{math}
\_doc
The `math` package provides options, they can be declared using
- the \`\mathset``{<options>}` macro. For example `\mathset {vert, dots}`.
+ the \`\mathsetup``{<options>}` macro. For example `\mathsetup {vert, dots}`.
If you create your own package with options, provide a similar
`\<pkg>set` macro. The \`\.kv` macro is similar to \OpTeX's `\kv`, but
with specific `pkg:math` dictionary.
\_cod
-\_def\.mathset #1{%
+\_def\.mathsetup #1{%
\_edef\.restorekvdict{\_kvdict{\_the\_kvdict}}%
\_kvdict{pkg:math}%
\_nokvx {\_opwarning{\_the\_kvdict: unknown option "##1", ignored}}%
@@ -34,9 +34,10 @@
\_readkv{#1}%
\.restorekvdict
}
-\_def\.kv #1{\_trycs{_kv:pkg:math:#1}{\_kvunknown}}% for accessing values given by \mathset
+\_def\.kv #1{\_trycs{_kv:pkg:math:#1}{\_kvunknown}}% for accessing values given by \mathsetup
-\_nspublic \mathset ;
+\_nspublic \mathsetup ;
+\_newpublic \_let\mathset = \.mathsetup % for backward compatibility
\_doc
\`\bigp`, \`\bbigp`, \`\Bigp`, \`\biggp`, \`\Biggp`, \`\autop`, \`\normalp` are inspired from
@@ -130,7 +131,7 @@
\_doc
The macro \`\.interval` reads following tokens until the `)` or `>` is found in the input
queue and replaces \code{<} to `\langle` and `>` to rangle. The reading and replacing
- process saves the tokens to the `\intevalL` macro only and finaly this macro is launched.
+ process saves the tokens to the `\intevalL` macro only and finally this macro is launched.
\_cod
\_def\.interval{\_def\.intervalL{}\.intervalA}
@@ -276,10 +277,10 @@
\`\bfserif` re-defines internal \OpTeX/ \O`\_mabf` and \O`\_mabi` macros.
\_cod
-\_def\.bfserif{%
+\_def\.bfserif{\.unionly\bfserif{%
\_protected\_def\_mabf {\_inmath{\_bfvariables\_bfgreek\_bfGreek\_bfdigits}}%
\_protected\_def\_mabi {\_inmath{\_bivariables\_bigreek\_bfGreek\_bfdigits}}%
-}
+}}
\_nspublic \bfserif ;
@@ -316,7 +317,7 @@
\_mit
\_fi
}
-\_def\.flexipa{\.partialsymbolvars {it}{rm}{bfsans}{it}{bfitsans}}
+\_def\.flexipa{\.unionly\flexipa{\.partialsymbolvars {it}{rm}{bfsans}{it}{bfitsans}}}
\_newpublic \_let \flexiblepartial=\.flexipa
\_nspublic \flexipa \partialsymbolvars \mrmpartial ;
@@ -324,12 +325,12 @@
The options `mstyle`, resp. `bstyle` run \`\.mstyle`, resp. \`\.bstyle`
and these macros set required shapes of math variables. This can be done
only when Unicode-math is loaded already. This is a reason why
- \`\.unionly``{<code>}{<text>}` is used: it runs <code> only when
+ \`\.unionly``{<text>}{<code>}` is used: it runs <code> only when
Unicode-math is loaded, otherwise it prints a warning.
\_cod
-\_def\.mstyle #1{\.unionly{\_lowercase{\_cs{_math_mstyle_#1}}}{mstyle}}
-\_def\.bstyle #1{\.unionly{\_lowercase{\_cs{_math_bstyle_#1}}}{bstyle}}
+\_def\.mstyle #1{\.unionly{mstyle}{\_lowercase{\_cs{_math_mstyle_#1}}}}
+\_def\.bstyle #1{\.unionly{bstyle}{\_lowercase{\_cs{_math_bstyle_#1}}}}
\_def\.mstyle_tex {%
\_protected\_def\_mit {\_itvariables \_rmdigits \_itgreek \_rmGreek}\_mit
@@ -361,9 +362,9 @@
\_protected\_def\_mabf {\_inmath{\_bfvariables\_bfgreek\_bfGreek\_bfdigits}}%
\_protected\_def\_mabi {\_inmath{\_bivariables\_bigreek\_biGreek\_bidigits}}%
}
-\_def\.unionly #1#2{\_ifx\_rmvariables\_undefined
- \_opwarning{pkg:math: Unicode-math must be loaded first, \_string#2 ignored}%
- \_else \_afterfi{#1}\_fi
+\_def\.unionly #1{\_ifx\_rmvariables\_undefined
+ \_opwarning{pkg:math: \_string#1 ignored: Unicode-math must be loaded}%
+ \_ea\_ignoreit \_else \_ea\_useit \_fi
}
\_doc
@@ -375,7 +376,7 @@
`\alpha` unchanged.
\_cod
-\_def\.rmchars#1{\_ea\_foreach \_expanded{#1}\_do{\_ifx,##1\_else\.rmchar##1\_fi}}
+\_def\.rmchars#1{\.unionly\rmchars{\_ea\_foreach\_expanded{#1}\_do{\_ifx,##1\_else\.rmchar##1\_fi}}}
\_def\.rmchar#1{\_Umathcode`#1=0 1 `#1 }
\_def\.vargreek#1{\_foreach#1\_do{\_ifx,##1\_else \.vargreekchar##1\_fi}}
@@ -411,19 +412,21 @@
\_normalmath
\_let\.textmathini=\_relax
}
-\_def\.textvariables {\.textmathini \_mathcodes 6 {7{\_Urange a-z \_Urange A-Z}}%
+\_def\.textvariables {\.unionly\textvariables {%
+ \.textmathini \_mathcodes 6 {7{\_Urange a-z \_Urange A-Z}}%
\_addto\_marm {\_fam5 }\_addto\_mait{\_fam6 }%
\_protected\_def\_itgreek {\_umathrangegreek01\_greekita}%
\_protected\_def\_rmgreek {\_umathrangegreek01\_greekrma}%
\_protected\_def\_itGreek {\_umathrangeGREEK01\_greekitA}
\_protected\_def\_rmGreek {\_umathrangeGREEK01\_greekrmA}
\_itgreek \_rmGreek
-}
-\_def\.textdigits {\.textmathini \_mathcodes 5 {7{\_Urange 0-9}}}
-\_def\.textmoremath {\.textmathini
+}}
+\_def\.textdigits {\.unionly\textdigits{\.textmathini \_mathcodes 5 {7{\_Urange 0-9}}}}
+\_def\.textmoremath {\.unionly\textmoremath{%
+ \.textmathini
\_mathcodes 5 {5{!?} 2{*+-} 3{=<>} 6{,:;} 0{./|} 4{([\{} 5{\})]}}%
\_Umathcode `- = 2 5 "2212 % hyphen behaves like minus in math mode
-}
+}}
\_def\.dotext#1{\_foreach #1 \_do
##1 {\_trycs{_math_text##1}{\_opwarning{text option: "##1" unknown}}}}
@@ -441,7 +444,7 @@
\_cod
\_def\.rlist{\sqrt\cuberoot\fourthroot} % they cannot be replaced by \mathchars
-\_def\.replacemissingchars#1{%
+\_def\.replacemissingchars#1{\.unionly\replacemissingchars{%
\_def\.alist{}\_def\.clist{}
\_def\UnicodeMathSymbol##1##2##3##4{%
\_iffontchar\_textfont1##1 \_else % not in main math font
@@ -460,7 +463,7 @@
\_def\.tmp{\_mathchars #1}\_ea\.tmp\_ea{\.clist}%
\_ea\_addto \_ea\.rlist \_ea{\.clist}\_ea\_addto \_ea\.rlist \_ea{\.alist}%
\_def\.alist{}\_def\.clist{}\_let\UnicodeMathSymbol=\_undefined
-}
+}}
\_nspublic \replacemissingchars ;
\_doc
@@ -501,12 +504,12 @@
\_doc
\`\mathclap``{<formula>}`, \`\mathrlap``{<formula>}`, and \`\mathllap``{<formula>}`
- are based on the \OpTeX/ macros \O`\setmathstyle` and \O`\usemathstyle`.
+ are based on the \OpTeX/ macros \O`\mathstyles` and \O`\currstyle`.
\_cod
-\_def\.mathclap#1{{\_setmathstyle \_hbox to0pt{\_hss$\_usemathstyle#1$\_hss}}}
-\_def\.mathrlap#1{{{}\_setmathstyle \_rlap{$\_usemathstyle#1$}}}
-\_def\.mathllap#1{{{}\_setmathstyle \_llap{$\_usemathstyle#1$}}}
+\_def\.mathclap#1{\_mathstyles{\_hbox to0pt{\_hss$\_currstyle#1$\_hss}}}
+\_def\.mathrlap#1{\_mathstyles{\_rlap{$\_currstyle#1$}}}
+\_def\.mathllap#1{\_mathstyles{\_llap{$\_currstyle#1$}}}
\_nspublic \mathclap \mathrlap \mathllap ;
@@ -579,12 +582,12 @@ The following macros are defined in this package:
\enditems
Following options are provided by the `math` package. You can set them by
-\^`\mathset``{<options>}` after `\load[math]`, for example
-`\mathset{dots, vert, vargreek={\epsilon,\rho}}`. The options are:
+\^`\mathsetup``{<options>}` after `\load[math]`, for example
+`\mathsetup{dots, vert, vargreek={\epsilon,\rho}}`. The options are:
\begitems
-* `dots` sets more inteligent `\dots`, the same as \~`\smartdots`.
+* `dots` sets more intelligent `\dots`, the same as \~`\smartdots`.
* `interval` sets `\_` as prefix of intervals, see section~\ref[interval].
-* `vert` sets more inteligent `|`, the same as \~`\smartvert`.
+* `vert` sets more intelligent `|`, the same as \~`\smartvert`.
* `rmsbsp` sets roman sub/supscripts in `[...]`, the same as \~`\rmsbsp`.
* `bfserif` sets bold-serif, bold-italic-serif, the same as \~`\bfserif`.
* `flexipa` enables flexible partial symbol, the same as \~`\flexipa`.
@@ -899,7 +902,7 @@ use `\rmchars` first.
The package provides two options `rmchars` and `vargreek`. The equation
sign must follow and then the `{<list>}` with syntax mentioned above. For example
-`\mathset{vargreek={\epsilon,\rho}}`.
+`\mathsetup{vargreek={\epsilon,\rho}}`.
\sec[flexipa] Flexible partial symbol $\partial$
@@ -955,7 +958,7 @@ them.
The package provides the option `text={<list of words>}`, each <word> from the
<list> can be `digits` or `variables` or `moremath`. It runs corresponding macro(s)
-described above. For example `\mathset{text=digits variables}` is equal to the
+described above. For example `\mathsetup{text=digits variables}` is equal to the
declaration of `\textdigits` `\textvariables`.
@@ -1012,7 +1015,7 @@ then the feature is activated and if it is zero, the feature is deactivated.
The \^`\enablefic` macro sets \^`\finalitalcorr``=1`.
-\sec Miscelaneous commands
+\sec Miscellaneous commands
I created various commands at the requests of users. They asked me to create
commands similar to ones from \LaTeX/ packages.
@@ -1117,7 +1120,7 @@ The user can read this warning and declare the macro after
\notoc\nonum\sec Table of contents
\maketoc
- \printdoctail math.opm % prints the documantation written after \_endcode
+ \printdoctail math.opm % prints the documentation written after \_endcode
\sec Implementation
\printdoc math.opm % prints \_doc...\_cod parts + code before \_endcode
\nonum\sec Index
@@ -1129,6 +1132,8 @@ The user can read this warning and declare the macro after
\endinput
+0.17 2024-12-04 \mathsetup instead \mathset, \.unionly modified
+0.16 2024-10-17 \mathclap, etc. corrected.
0.15 2024-04-28 \_ as interval prefix added.
0.14 2024-03-18 \flexipa introduced.
0.13 2024-03-06 \enablefic introduced.
diff --git a/Master/texmf-dist/tex/optex/pkg/minim-pdf.opm b/Master/texmf-dist/tex/optex/pkg/minim-pdf.opm
index 3c4c0c73317..184a99ee392 100644
--- a/Master/texmf-dist/tex/optex/pkg/minim-pdf.opm
+++ b/Master/texmf-dist/tex/optex/pkg/minim-pdf.opm
@@ -91,6 +91,6 @@
\_cs{\_cs{_lan:\_the\_language}lang}
-% catcodes changes don't propage, since this file is loaded with \opinput
+% catcodes changes don't propagate, since this file is loaded with \opinput
\_endnamespace
\_endcode
diff --git a/Master/texmf-dist/tex/optex/pkg/minim.opm b/Master/texmf-dist/tex/optex/pkg/minim.opm
index 5bf4c0fea55..a285f0f81d3 100644
--- a/Master/texmf-dist/tex/optex/pkg/minim.opm
+++ b/Master/texmf-dist/tex/optex/pkg/minim.opm
@@ -6,7 +6,7 @@
\_codedecl \optexminim_loaded {Minim compatibility for \OpTeX/ (v\_optexminim_version)}
\_doc
- When we want to use minim with \OpTeX/, we need to accomodate for their
+ When we want to use minim with \OpTeX/, we need to accommodate for their
differences. Particularly in allocations. Because of Esger Renkema's
graciousness, minim has been modified in ways that make it easier to
integrate with \OpTeX/. So even when the two formats normally disagree on a
@@ -55,7 +55,7 @@
doesn't define their Lua variants.
* \LuaTeX/ allocators from `ltluatex.tex` (like `\newattribute`). Subset of
- these is in \OpTeX/ (only atributes, which are also allocatable in Lua, and
+ these is in \OpTeX/ (only attributes, which are also allocatable in Lua, and
catcode tables). But minim tries to be compatible with \LaTeX/ and patches
its routines if it detects them.
\enditems
@@ -96,7 +96,7 @@
Both \LaTeX/ and the minim inspired catcode table allocators initialize the
catcode tables with `\initcatcodetable` (i.e. ini\TeX/ catcodes). \OpTeX/
merely allocates the registers. \LuaTeX/ doesn't allow to activate
- unitialized catcode table, therefore activation with either
+ uninitialized catcode table, therefore activation with either
`\initcatcodetable` or `\savecatcodetable` is necessary before use. To
ensure compatibility with foreign macros, we also issue `\initcatcodetable`
on allocation in the public version of `\newcatcodetable`.
@@ -184,5 +184,5 @@
\_catcode`\:=11
\_let\_shipout\minim:shipout:new
-% catcodes changes don't propage, since this file is loaded with \opinput
+% catcodes changes don't propagate, since this file is loaded with \opinput
\_endcode
diff --git a/Master/texmf-dist/tex/optex/pkg/mte.opm b/Master/texmf-dist/tex/optex/pkg/mte.opm
index c3d304610c1..4adb7144707 100644
--- a/Master/texmf-dist/tex/optex/pkg/mte.opm
+++ b/Master/texmf-dist/tex/optex/pkg/mte.opm
@@ -418,7 +418,7 @@
(for expansion, all fonts) are empty by default but user can
declare specific values here. These macros are used last in the
\`\.allPR`, \`\.allPI`, \`\.allX` macros
- (used in the lua code bellow), so it has general precedence.
+ (used in the lua code below), so it has general precedence.
\_cod --------------------
\.trydef \_mte_P {} % user specific, Protrusion
@@ -530,7 +530,7 @@
\`\.setequivs``<font-switch>`.
This macro is used in \olink[_newfontloaded]{\_newfontloaded} `<font-switch>`
which is called by \OpTeX/ if the font is loaded first.
- The \^`\.setequivs` macro uses data from \^`\.equalcodes` (see bellow)
+ The \^`\.setequivs` macro uses data from \^`\.equalcodes` (see below)
and sets equal
\elink[lpcode]{\lpcode}, \elink[rpcode]{\rpcode}, and \elink[efcode]{\efcode}
for variant characters.
diff --git a/Master/texmf-dist/tex/optex/pkg/qrcode.opm b/Master/texmf-dist/tex/optex/pkg/qrcode.opm
index 5df0ad2c074..46ad96b318c 100644
--- a/Master/texmf-dist/tex/optex/pkg/qrcode.opm
+++ b/Master/texmf-dist/tex/optex/pkg/qrcode.opm
@@ -2473,7 +2473,7 @@
\_def\.kvunknown{???}
\_def\.kvscan #1#2=#3,{\_ifx#1,\_else \_sdef{_qr_kv:#1#2}{#3}\_ea\.kvscan\_fi}
-\_def\.qrset#1{\_def\.tmpb{#1,}%
+\_def\.qrsetup#1{\_def\.tmpb{#1,}%
\_replstring\.tmpb{ =}{=}\_replstring\.tmpb{= }{=}%
\_replstring\.tmpb{tight,}{qr-border=0,}%
\_replstring\.tmpb{padding,}{qr-border=1,}%
@@ -2488,7 +2488,7 @@
\.setlevel{\.kv{level}}%
\_edef\.desiredversion{\.kv{version}}%
}
-\.qrset{height=2cm, version=0, level=M, tight, silent, final, nolink}
+\.qrsetup{height=2cm, version=0, level=M, tight, silent, final, nolink}
\_def\.setcounter #1#2{\_global#1=#2\_relax}
\_def\.stepcounter #1{\_global\_advance#1 by1\_relax}
@@ -2497,7 +2497,7 @@
\_def\.qrcode{\_begingroup
\_isnextchar[{\.qrcodeA}{\.qrcodeB}%
}
-\_def\.qrcodeA[#1]{\.qrset{#1}\_ea\.qrcodeB\_romannumeral-`\.}
+\_def\.qrcodeA[#1]{\.qrsetup{#1}\_ea\.qrcodeB\_romannumeral-`\.}
\_def\.qrcodeB#1{%
\_if1\.kv{qr-message}\_let\.message=\_message \_else \_def\.message##1{}\_fi
\_if1\.kv{qr-border}\_def\.padd{\_kern4\.modulesize}\_else\_def\.padd{}\_fi
@@ -2527,7 +2527,8 @@
\_fi
}%
-\_nspublic \qrcode \qrset ;
+\_nspublic \qrcode \qrsetup ;
+\_newpublic \_let\qrset=\.qrsetup % for backward compatibility
\_def\.qrcode_int_new{%
\.qrbeginhook
@@ -2630,16 +2631,16 @@ The characters from all Unicode table are allowed in <encoded text>.
\secc Options
-You can use `\qrset{<options>}` for global-like options and
+You can use `\qrsetup{<options>}` for global-like options and
`\qrcode[<options>]{<encoded text>}` for local options for one QR code.
-The `\qrset{<options>}` is valid within a group (if exists) or in whole
+The `\qrsetup{<options>}` is valid within a group (if exists) or in whole
document.
Options are separated by comma and they are in two types: single
word or key=value format. Default options are:
\begtt
-\qrset{height=2cm, version=0, level=M, tight, silent, final, nolink}
+\qrsetup{height=2cm, version=0, level=M, tight, silent, final, nolink}
\endtt
The options are the same as described in `qrcode.pdf` at
@@ -2652,7 +2653,7 @@ In short:
* `version=number` ... Number 0 to 40 linearly depends on the density of QRcode.
The 0 means that the density is automatically selected.
-* `level=letter` ... L, M, Q o H (low, medium, quality, hight) sets the amount
+* `level=letter` ... L, M, Q o H (low, medium, quality, high) sets the amount
of redundancy in the code in order of error recovering.
* `tight` ... Code without margins.
@@ -2677,7 +2678,7 @@ In short:
Example:
\begtt
-\qrset{silent} % ... all codes will be silent in the log and terminal.
+\qrsetup{silent} % ... all codes will be silent in the log and terminal.
\qrcode [height=3cm, link, padding, qrborder={1 0 0}] {http://petr.olsak.net}
% ... 3cm QRcode as hyperlink
\endtt
@@ -2702,6 +2703,6 @@ The `\_qr_data` macro is saved after each \qrcode calculation in the format
square and second parameter includes size^2 ones or zeros which means black
or white modules (scanned left to right, top to bottom). Another information
can be retrieved from `\_qr_text` macro (encoded text before expanding) and
-`\_qr_etext` macro (raw encoded text, each charater is detokeinized).
+`\_qr_etext` macro (raw encoded text, each character is detokeinized).
The macros `\_qr_data`, `\_qr_text` and `\_qr_etext` are saved globally.
diff --git a/Master/texmf-dist/tex/optex/pkg/tikz.opm b/Master/texmf-dist/tex/optex/pkg/tikz.opm
index 4da799a4aaa..3c640f21d70 100644
--- a/Master/texmf-dist/tex/optex/pkg/tikz.opm
+++ b/Master/texmf-dist/tex/optex/pkg/tikz.opm
@@ -160,7 +160,7 @@
\.usetikzlibrary{#1}\let\foreach=\_optexforeach
}
-% don't worry about reseting catcodes - we are at the end of \opinput'ed file
+% don't worry about resetting catcodes - we are at the end of \opinput'ed file
\_endnamespace
\_endcode
diff --git a/Master/texmf-dist/tex/optex/pkg/vlna.opm b/Master/texmf-dist/tex/optex/pkg/vlna.opm
index 743b254d010..9e427768fb5 100644
--- a/Master/texmf-dist/tex/optex/pkg/vlna.opm
+++ b/Master/texmf-dist/tex/optex/pkg/vlna.opm
@@ -19,7 +19,7 @@
point to Lua functions from `luavlna.lua` package.
We need this package installed.
- We need not `require ltluatex` because `luatexbase.callbaks` are defined
+ We need not `require ltluatex` because `luatexbase.callbacks` are defined
in the `optex.lua` file and it is part of the OpTeX format.
\_cod -----------------------------
diff --git a/Master/texmf-dist/tex/plain/cweb/ctwimac.tex b/Master/texmf-dist/tex/plain/cweb/ctwimac.tex
index d65f5bf1fcc..a7978d89036 100644
--- a/Master/texmf-dist/tex/plain/cweb/ctwimac.tex
+++ b/Master/texmf-dist/tex/plain/cweb/ctwimac.tex
@@ -259,16 +259,16 @@
% \L is Polish letter suppressed-L
\outer\def\M#1{\def\secno{#1}\startsection\ignorespaces}
\outer\def\N{\ifvoid\partialpage\lefttrue
- \else\ifdim\ht\partialpage<\pageht \leftfalse\else\lefttrue\fi\fi\NNN}
+ \else\ifdim\ht\partialpage<\pageheight \leftfalse\else\lefttrue\fi\fi\NNN}
\outer\def\NN{\ifvoid\partialpage\leftfalse
- \else\ifdim\ht\partialpage<\pageht \lefttrue\else\leftfalse\fi\fi\NNN}
+ \else\ifdim\ht\partialpage<\pageheight \lefttrue\else\leftfalse\fi\fi\NNN}
\outer\def\NNN#1#2#3.{% beginning of starred section
\gdepth=#1\gtitle={#3}\def\secno{#2}
\ifleft \flushout
\gdef\rlhead{\let\i=I\uppercase{\ignorespaces#3}} % running left headline
\global\let\rrhead=\rlhead % running right headline
\else\global\setbox\partialpage=\vbox{
- \vbox to\pageht{\unvbox\partialpage\vfill}\break}
+ \vbox to\pageheight{\unvbox\partialpage\vfill}\break}
\gdef\rrhead{\let\i=I\uppercase{\ignorespaces#3}}
\fi
\message{*\secno} % progress report
@@ -315,12 +315,12 @@
% \count and \toks registers 200--219 are also used to keep track of refs
\catcode`\@=11
\newcount\@n \newcount\@m \newcount\@p
-\newdimen\pageht \pageht=19cm
-\newdimen\pagewd \pagewd=13cm
-\newdimen\colwd \colwd=\pagewd
+\newdimen\pageheight \pageheight=19cm
+\newdimen\pagewidth \pagewidth=13cm
+\newdimen\colwd \colwd=\pagewidth
\advance\colwd by -2pc \divide\colwd by 3 % for three columns
-\newdimen\fullpageht \fullpageht=\pageht \advance\fullpageht by 4pc
-\newdimen\pagethresh \pagethresh=2\pageht
+\newdimen\fullpageheight \fullpageheight=\pageheight \advance\fullpageheight by 4pc
+\newdimen\pagethresh \pagethresh=2\pageheight
\newdimen\nsize \newdimen\msize
\newskip\intersecskip \intersecskip=8pt plus 2pt minus 3pt
\newbox\partialpage
@@ -331,7 +331,7 @@
\newif\iftitle \newif\ifleft
\def\flushout{\ifvoid\partialpage\else
- \setbox0=\vsplit\partialpage to \pageht
+ \setbox0=\vsplit\partialpage to \pageheight
\shipout\vbox{
\vbox to 3pc{\leftheadline\vfill}
\nointerlineskip\box0}
@@ -345,7 +345,7 @@
\hyphenpenalty 10000 \exhyphenpenalty 10000
\noindent\vbox to1pt{}\par % 1pt = \topskip - \ninept
\readin}
- \shipout\vbox to\fullpageht{
+ \shipout\vbox to\fullpageheight{
\vbox to 3pc{\rightheadline\vfill}
\unvbox\partialpage
\vfill
@@ -364,10 +364,10 @@
\@n=199 \loop \ifnum\@n<222 \toks\@n={} \count\@n=0 \advance\@n 1 \repeat
\nrefs=0
\baseno=\secno}}
-\def\leftheadline{\hbox to\pagewd{\vbox to10pt{}%
+\def\leftheadline{\hbox to\pagewidth{\vbox to10pt{}%
\iftitle\global\titlefalse\else\ninerm\title:\enspace \eightsl\rlhead\fi
\hfil\eightrm\folio}}
-\def\rightheadline{\hbox to\pagewd{\vbox to10pt{}%
+\def\rightheadline{\hbox to\pagewidth{\vbox to10pt{}%
\eightrm\folio\hfil\ninerm\title:\enspace \eightsl\rrhead\/}}
\def\mini{\begingroup \obeylines \globaldefs=1 \newrefs=\bgroup}
@@ -448,7 +448,7 @@
\def\donewithpage#1 {\let\readin=\relax}
\catcode`\@=12
-\hsize=\pagewd \vsize=\maxdimen \output={\twillout}
+\hsize=\pagewidth \vsize=\maxdimen \output={\twillout}
\def\inx{\flushout\end}
\def\fin{\parfillskip 0pt plus 1fil
diff --git a/Master/texmf-dist/tex/plain/cweb/cwebacromac.tex b/Master/texmf-dist/tex/plain/cweb/cwebacromac.tex
index 3e8baad77c1..6ec27777fdd 100644
--- a/Master/texmf-dist/tex/plain/cweb/cwebacromac.tex
+++ b/Master/texmf-dist/tex/plain/cweb/cwebacromac.tex
@@ -1,6 +1,6 @@
% hypertext macros for CWEB listings (in addition to cwebmac.tex)
% Used in cwebmac.tex, pdfctwimac.tex, pdfproofmac.tex
-% Version 3.0 --- August 2024
+% Version 3.1 --- January 2025
\ifx\ifacrohint\undefined\endinput\fi % these are not standalone macros
\ifluatex % LuaTeX is almost like pdfTeX
@@ -17,6 +17,16 @@
\let\pdfoutput=\outputmode
\fi % end of LuaTeX->pdfTeX redirection macros
+\def\pdfURL#1#2{\ifpdf \ifpdflua\pdfannotlink height \theheight depth \thedepth
+ attr {/Border [0 0 0]} user { /Type /Annot /Subtype /Link /A
+ << /S /URI /URI (#2) >>}\Blue #1\Black \pdfendlink % changed in 3.69
+ \else {\setbox0=\hbox{\special{pdf: bc [ \pdflinkcolor ]}{#1}%
+ \special{pdf: ec}}\special{pdf: ann width \thewidth height \theheight
+ depth \thedepth << /Border [0 0 0] /Type /Annot /Subtype /Link /A
+ << /S /URI /URI (#2) >> >>}\box0\relax}\fi
+ \else #1 ({\tt#2})\fi}
+{\catcode`\~=12 \gdef\TILDE/{~}} % ~ in a URL
+{\catcode`\_=12 \gdef\UNDER/{_}} % _ in a URL
\def\tocpages{1} % Most programs have one-page Table-of-Contents
\def\startpdf{\def\pagemode{/PageMode /UseOutlines}
\ifnum\contentspagenumber=0 \advance \pageno by -\tocpages
@@ -62,12 +72,11 @@
\ifnum\countB<`0
\ifhavenum\makenote\fi
\ifx\first.\let\next=\maketoksdone % fullstop
- \else \addtokens\toksB{\the\toksD} \ifx\first,\addtokens\toksB{\space}\fi
+ \else\addtokens\toksB{\the\toksD}\ifx\first,\addtokens\toksB{\space}\fi
\fi
- \else \addtokens\toksC{\the\toksD}\global\havenumtrue
+ \else\addtokens\toksC{\the\toksD}\global\havenumtrue
\fi
- \next
-}
+ \next}
\def\makenote{\addtokens\toksB
{\noexpand\pdflink{\the\toksC}}\toksC={}\global\havenumfalse}
\def\maketoksdone{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
@@ -99,6 +108,7 @@
\afterassignment\makeolproctok\let\nxt= }
\def\makeolnexttok{\afterassignment\makeolproctok\let\nxt= }
\def\makeolgobbletok{\afterassignment\makeolnexttok\let\nxt= }
+\def\makeolgobbletokk{\afterassignment\makeolgobbletok\let\nxt= }
\def\addF#1{\addtokens\toksF{#1}\tokprocessedtrue}
% now comes a routine to "sanitize" section names, for pdf outlines
\def\makeolproctok{\tokprocessedfalse
@@ -109,8 +119,7 @@
\else\ifx^\nxt \addF^\else\ifx_\nxt \addF_% sanitize ^ and _
\else\ifx\nxt\spacechar \addF\space
\else\if\noexpand\nxt\relax % we have a control sequence; is it one we know?
- \ifx\nxt~\addF\space
- \else\ifx\nxt\onespace\addF\space
+ \ifx\nxt~\addF\space \else\ifx\nxt\onespace\addF\space
\else\the\sanitizer
\iftokprocessed\else\makeolproctokctli
\iftokprocessed\else\makeolproctokctlii
@@ -124,8 +133,7 @@
\else\expandafter\makeolproctokchar\meaning\nxt
\fi\fi\fi\fi\fi
\fi\fi\fi\fi\fi \fi\fi\fi
- \next
-}
+ \next}
\def\makeolproctokchar#1 #2 #3{\addF{#3}}
\def\makeolproctokctli{%
\ifx\nxt\CEE\addF{C}\let\next\makeolgobbletok % \CEE/
@@ -133,8 +141,9 @@
\else\ifx\nxt\TEX\addF{TeX}\let\next\makeolgobbletok % \TEX/
\else\ifx\nxt\TeX\addF{TeX}\else\ifx\nxt\LaTeX\addF{LaTeX}%
\else\ifx\nxt\CPLUSPLUS\addF{C++}\let\next\makeolgobbletok % \CPLUSPLUS/
- \else\ifx\nxt\Cee\addF{C}%
+ \else\ifx\nxt\Cee\addF{C}\else\ifx\nxt\dots\addF{...\space}%
\else\ifx\nxt\PB \let\next\makeolgobbletok \tokprocessedtrue % \PB{...}
+ \else\ifx\nxt\9 \expandafter\nxt\relax \let\next\makeolgobbletokk % \9{#1}
\else\ifx\nxt\.\tokprocessedtrue\instrtrue % \.{...}
% skip \|
\else\ifx\nxt\\\ifinstr\addF{\bschar\bschar}\else\tokprocessedtrue\fi
@@ -149,7 +158,7 @@
\else\ifx\nxt\PP\addF{++}\else\ifx\nxt\MM\addF{--}%
\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi
\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi
- \fi\fi
+ \fi\fi\fi\fi
}
\def\makeolproctokctlii{%
\ifx\nxt\MG\addF{->}\else\ifx\nxt\GG\addF{>>}%
diff --git a/Master/texmf-dist/tex/plain/cweb/cwebbin/pdfctwimac.tex b/Master/texmf-dist/tex/plain/cweb/cwebbin/pdfctwimac.tex
index d1278cac3bf..630669133c8 100644
--- a/Master/texmf-dist/tex/plain/cweb/cwebbin/pdfctwimac.tex
+++ b/Master/texmf-dist/tex/plain/cweb/cwebbin/pdfctwimac.tex
@@ -296,9 +296,9 @@
{\xdef\secstar{#1}\let\*=\empty\xdef\secno{#1}}% remove \* from section name
\vskip\intersecskip\startsection\ignorespaces}
\outer\def\N{\ifvoid\partialpage\lefttrue
- \else\ifdim\ht\partialpage<\pageht \leftfalse\else\lefttrue\fi\fi\NNN}
+ \else\ifdim\ht\partialpage<\pageheight \leftfalse\else\lefttrue\fi\fi\NNN}
\outer\def\NN{\ifvoid\partialpage\leftfalse
- \else\ifdim\ht\partialpage<\pageht \lefttrue\else\leftfalse\fi\fi\NNN}
+ \else\ifdim\ht\partialpage<\pageheight \lefttrue\else\leftfalse\fi\fi\NNN}
\outer\def\NNN#1#2#3.{% beginning of starred section
\ifacro{\makeoutlinetoks#3\outlinedone}\fi
\gdepth=#1\gtitle={#3}\def\secno{#2}\xdef\secstar{#2}
@@ -306,7 +306,7 @@
\gdef\rlhead{\let\i=I\uppercase{\ignorespaces#3}} % running left headline
\global\let\rrhead=\rlhead % running right headline
\else\global\setbox\partialpage=\vbox{
- \vbox to\pageht{\unvbox\partialpage\vfill}\break}
+ \vbox to\pageheight{\unvbox\partialpage\vfill}\break}
\gdef\rrhead{\let\i=I\uppercase{\ignorespaces#3}}
\fi
\message{*\secno} % progress report
@@ -367,12 +367,12 @@
% \count and \toks registers 200--219 are also used to keep track of refs
\catcode`\@=11
\newcount\@n \newcount\@m \newcount\@p
-\newdimen\pageht \pageht=19cm
-\newdimen\pagewd \pagewd=13cm
-\newdimen\colwd \colwd=\pagewd
+\newdimen\pageheight \pageheight=19cm
+\newdimen\pagewidth \pagewidth=13cm
+\newdimen\colwd \colwd=\pagewidth
\advance\colwd by -2pc \divide\colwd by 3 % for three columns
-\newdimen\fullpageht \fullpageht=\pageht \advance\fullpageht by 4pc
-\newdimen\pagethresh \pagethresh=2\pageht
+\newdimen\fullpageheight \fullpageheight=\pageheight \advance\fullpageheight by 4pc
+\newdimen\pagethresh \pagethresh=2\pageheight
\newdimen\nsize \newdimen\msize
\newskip\intersecskip \intersecskip=8pt plus 2pt minus 3pt
\newbox\partialpage
@@ -383,7 +383,7 @@
\newif\iftitle \newif\ifleft
\def\flushout{\ifvoid\partialpage\else
- \setbox0=\vsplit\partialpage to \pageht
+ \setbox0=\vsplit\partialpage to \pageheight
\shipout\vbox{
\vbox to 3pc{\leftheadline\vfill}
\nointerlineskip\box0}
@@ -397,7 +397,7 @@
\hyphenpenalty 10000 \exhyphenpenalty 10000
\noindent\vbox to1pt{}\par % 1pt = \topskip - \ninept
\readin}
- \shipout\vbox to\fullpageht{
+ \shipout\vbox to\fullpageheight{
\vbox to 3pc{\rightheadline\vfill}
\unvbox\partialpage
\vfill
@@ -416,10 +416,10 @@
\@n=199 \loop \ifnum\@n<222 \toks\@n={} \count\@n=0 \advance\@n 1 \repeat
\nrefs=0
\baseno=\secno}}
-\def\leftheadline{\hbox to\pagewd{\vbox to10pt{}%
+\def\leftheadline{\hbox to\pagewidth{\vbox to10pt{}%
\iftitle\global\titlefalse\else\ninerm\title:\enspace \eightsl\rlhead\fi
\hfil\eightrm\folio}}
-\def\rightheadline{\hbox to\pagewd{\vbox to10pt{}%
+\def\rightheadline{\hbox to\pagewidth{\vbox to10pt{}%
\eightrm\folio\hfil\ninerm\title:\enspace \eightsl\rrhead\/}}
\def\mini{\begingroup \obeylines \globaldefs=1 \newrefs=\bgroup}
@@ -501,17 +501,16 @@
\def\donewithpage#1 {\let\readin=\relax}
\catcode`\@=12
-\hsize=\pagewd \vsize=\maxdimen \output={\twillout}
+\hsize=\pagewidth \vsize=\maxdimen \output={\twillout}
%\let\page=\pagebody \raggedbottom
-% \def\page{\box255 }\normalbottom % faster, but loses plain TeX footnotes
-%\def\normaloutput#1#2#3{\ifodd\pageno\hoffset=\pageshift\fi
- %\shipout\vbox{
- %\vbox to\fullpageht{
- %\iftitle\global\titlefalse
- %\else\hbox to\pagewd{\vbox to10pt{}\ifodd\pageno #3\else#2\fi}\fi
- %\vfill#1}} % parameter #1 is the page itself
- %\global\advance\pageno by1}
+\def\page{\box255 }\normalbottom % faster, but loses plain TeX footnotes
+\def\normaloutput#1#2#3{\shipout\vbox{\vbox to\fullpageheight{%
+ \iftitle\global\titlefalse
+ \else\hbox to\pagewidth{\vbox to10pt{}%
+ \ifodd\pageno\vbox to3pc{#3\vfill}\else\vbox to3pc{#2\vfill}\fi}\fi
+ #1\vfill}} % parameter #1 is the page itself
+ \global\advance\pageno by1}
%\def\topofcontents{\centerline{\titlefont\title}\vskip.7in
%\vfill} % this material will start the table of contents page
%\def\botofcontents{\vfill
@@ -520,7 +519,7 @@
\def\contentspagenumber{0} % default page number for table of contents
%\newdimen\pageshift \pageshift=\hoffset
%% shift righthand pages wrt lefthand ones (changed in version 3.70)
-%\def\setpage{\hsize\pagewd\vsize\pageht} % use after changing page size
+\def\setpage{\hsize\pagewidth\vsize\pageheight} % use after changing page size
\def\contentsfile{\jobname.toc} % file that gets table of contents info
\def\readcontents{\input \contentsfile}
\def\readsections{\input \jobname.scn}
@@ -536,16 +535,24 @@
\immediate\write\cont{\catcode `\noexpand\@=12\relax} % \makeatother
\immediate\closeout\cont % the contents information has been fully gathered
\fi}
-\def\fin{\ifacro \message{Section names:}
- \def\U##1.{} \def\Us##1.{} \def\Q##1.{} \def\Qs##1.{} \let\I=\relax \let\*=*
- \newrefs={} \output={\shipout\box255}
+\def\fin{\ifacro \message{Section names:} \let\Xpdf\X
+ \def\note##1##2.{\quad{\eightrm##1~{\sevenrm\pdfnote##2.}.}}
+ \def\Q{\note{Cited in section}} % crossref for mention of a section
+ \def\Qs{\note{Cited in sections}} % crossref for mentions of a section
+ \def\U{\note{Used in section}} % crossref for use of a section
+ \def\Us{\note{Used in sections}} % crossref for uses of a section
+ \def\I{\par\hangindent 2em\noindent}\let\*=*
+ \def\rlhead{NAMES OF THE SECTIONS} % running left headline
+ \let\rrhead=\rlhead % running right headline
+ \output={\normaloutput\page\rightheadline\leftheadline}
+ \setpage \startpdf
\def\outsecname{Names of the sections}
\ifpdflua \makebookmarks \countsections
\pdfdest name {NOS} fith
\pdfoutline goto name {NOS} count -\the\countNOS {\outsecname}
\else \special{pdf: outline -1 << /Title (\outsecname)
/Dest [ @thispage /FitH @ypos ] >>}\fi
- \def\X##1:##2\X{\firstsecno##1.%
+ \def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.%
{\makeoutlinetoks##2\outlinedone}%
\ifpdflua \pdfoutline goto num \the\toksA \expandafter{\the\toksE}
\else \special{pdf: outline 0 << /Title (\the\toksE)
diff --git a/Master/texmf-dist/tex/plain/cweb/cwebmac.tex b/Master/texmf-dist/tex/plain/cweb/cwebmac.tex
index a46dc4b782f..2b7b14bf07a 100644
--- a/Master/texmf-dist/tex/plain/cweb/cwebmac.tex
+++ b/Master/texmf-dist/tex/plain/cweb/cwebmac.tex
@@ -1,7 +1,7 @@
% standard macros for CWEB listings (in addition to plain.tex)
-% Version 4.12 --- August 2024
+% Version 4.12.1 --- January 2025
\ifx\renewenvironment\undefined\else\endinput\fi % LaTeX will use other macros
-\xdef\fmtversion{\fmtversion+CWEB4.12}
+\xdef\fmtversion{\fmtversion+CWEB4.12.1}
\chardef\cwebversion=4 \chardef\cwebrevision=12
\parskip 0pt % no stretch between paragraphs
@@ -132,16 +132,6 @@
\def\Blue{\pdfliteral{\pdflinkcolor\space rg \pdflinkcolor\space RG}}
\fi
\input cwebacromac % load hypertext macros
-\def\pdfURL#1#2{\ifpdf \ifpdflua\pdfannotlink height \theheight depth \thedepth
- attr {/Border [0 0 0]} user { /Type /Annot /Subtype /Link /A
- << /S /URI /URI (#2) >>}\Blue #1\Black \pdfendlink % changed in 3.69
- \else {\setbox0=\hbox{\special{pdf: bc [ \pdflinkcolor ]}{#1}%
- \special{pdf: ec}}\special{pdf: ann width \thewidth height \theheight
- depth \thedepth << /Border [0 0 0] /Type /Annot /Subtype /Link /A
- << /S /URI /URI (#2) >> >>}\box0\relax}\fi
- \else #1 ({\tt#2})\fi}
-{\catcode`\~=12 \gdef\TILDE/{~}} % ~ in a URL
-{\catcode`\_=12 \gdef\UNDER/{_}} % _ in a URL
\def\lapstar{\rlap{*}}
\def\stsec{\rightskip=0pt % get out of C mode (cf. \B)
@@ -242,9 +232,8 @@
\def\p#1{\cdot 2^{#1}} % power of two (hex exponent)
\def\onmaybe{\let\ifon=\maybe} \let\maybe=\iftrue
-\newif\ifon \newif\iftitle \newif\ifpagesaved
+\newif\ifon \newif\iftitle \newif\ifpagesaved \newif\ifheader
-\newif\ifheader
\def\lheader{\headertrue\mainfont\the\pageno\eightrm\qquad\grouptitle
\hfill\title\qquad\mainfont\topsecno} % top line on left-hand pages
\def\rheader{\headertrue\mainfont\topsecno\eightrm\qquad\title\hfill
diff --git a/Master/texmf-dist/tex/plain/memoize/memoizable.tex b/Master/texmf-dist/tex/plain/memoize/memoizable.tex
index 393b54b3986..c45874f0154 100644
--- a/Master/texmf-dist/tex/plain/memoize/memoizable.tex
+++ b/Master/texmf-dist/tex/plain/memoize/memoizable.tex
@@ -24,7 +24,7 @@
%%
%% The files belonging to this work and covered by LPPL are listed in
%% (<texmf>/doc/generic/memoize/)FILES.
-% Package memoizable 2024/04/02 v1.3.0
+% Package memoizable 2024/12/02 v1.4.1
\input miniltx
\input pgfkeys
\input memoizable.code.tex
diff --git a/Master/texmf-dist/tex/plain/memoize/memoize.tex b/Master/texmf-dist/tex/plain/memoize/memoize.tex
index 49cd7c0c666..d489611fd5e 100644
--- a/Master/texmf-dist/tex/plain/memoize/memoize.tex
+++ b/Master/texmf-dist/tex/plain/memoize/memoize.tex
@@ -24,7 +24,7 @@
%%
%% The files belonging to this work and covered by LPPL are listed in
%% (<texmf>/doc/generic/memoize/)FILES.
-% Package memoize 2024/04/02 v1.3.0
+% Package memoize 2024/12/02 v1.4.1
\input miniltx
\def\PackageWarning#1#2{{%
\newlinechar`\^^J\def\MessageBreak{^^J\space\space#1: }%
@@ -350,7 +350,10 @@
\ifmemoizing
\else
\ifmemoize
- \xdef\mmz@code@mdfivesum{\pdf@mdfivesum{\the\mmz@mdfive@source}}%
+ \xdef\mmz@code@mdfivesum{\pdf@mdfivesum{%
+ \expanded{\the\mmzSalt}%
+ \the\mmz@mdfive@source
+ }}%
\mmz@trace@code@mdfive
\ifnum\mmz@mode=\mmz@mode@recompile\relax
\ifnum\pdf@draftmode=0
@@ -651,16 +654,34 @@
{}%
},
clear context/.value forbidden,
- meaning to context/.code={\forcsvlist\mmz@mtoc{#1}},
- csname meaning to context/.code={\mmz@mtoc@csname{#1}},
- key meaning to context/.code={%
+ meaning to context/.code={\mmz@Cos\forcsvlist\mmz@mtoc{#1}},
+ csname meaning to context/.code={\mmz@Cos\mmz@mtoc@csname{#1}},
+ key meaning to context/.code={\mmz@Cos
\forcsvlist\mmz@mtoc\mmz@mtoc@keycmd{#1}},
- key value to context/.code={\forcsvlist\mmz@mtoc@key{#1}},
- /handlers/.meaning to context/.code={\expanded{%
+ key value to context/.code={\mmz@Cos\forcsvlist\mmz@mtoc@key{#1}},
+ /handlers/.meaning to context/.code={\mmz@Cos\expanded{%
\noexpand\mmz@mtoc@csname{pgfk@\pgfkeyscurrentpath/.@cmd}}},
- /handlers/.value to context/.code={%
+ /handlers/.value to context/.code={\mmz@Cos
\expanded{\noexpand\mmz@mtoc@csname{pgfk@\pgfkeyscurrentpath}}},
}
+\newtoks\mmzSalt
+\mmzset{
+ salt/.code=\expandafter\toksapp\expandafter\mmzSalt{#1,},
+ clear salt/.value forbidden,
+ clear salt/.code=\mmzSalt{},
+ meaning to salt/.code={\mmz@coS\forcsvlist\mmz@mtoc{#1}},
+ csname meaning to salt/.code={\mmz@coS\mmz@mtoc@csname{#1}},
+ key meaning to salt/.code={\mmz@coS
+ \forcsvlist\mmz@mtoc\mmz@mtoc@keycmd{#1}},
+ key value to salt/.code={\mmz@coS
+ \forcsvlist\mmz@mtoc@key{#1}},
+ /handlers/.meaning to salt/.code={\mmz@coS\expanded{%
+ \noexpand\mmz@mtoc@csname{pgfk@\pgfkeyscurrentpath/.@cmd}}},
+ /handlers/.value to salt/.code={\mmz@coS
+ \expanded{\noexpand\mmz@mtoc@csname{pgfk@\pgfkeyscurrentpath}}},
+}
+\def\mmz@Cos{\def\mmz@context@or@salt{context}}
+\def\mmz@coS{\def\mmz@context@or@salt{salt}}
\def\mmz@mtoc#1{%
\collargs@cs@cases{#1}%
{\mmz@mtoc@cmd{#1}}%
@@ -680,14 +701,17 @@
\expandafter\mmz@mtoc@csname\expandafter{\string#1}%
}
\def\mmz@mtoc@csname#1{%
- \pgfkeysvalueof{/mmz/context/.@cmd}%
- \detokenize{#1}={\expandafter\meaning\csname#1\endcsname}%
+ \pgfkeysvalueof{/mmz/\mmz@context@or@salt/.@cmd}%
+ \detokenize{#1}%
+ \ifcsname#1\endcsname
+ ={\expandafter\meaning\csname#1\endcsname}%
+ \fi
\pgfeov
}
\def\mmz@mtoc@key#1{\mmz@mtoc@csname{pgfk@#1}}
\def\mmz@mtoc@keycmd#1{\mmz@mtoc@csname{pgfk@#1/.@cmd}}
\def\mmz@mtoc@error@notcsorenv#1{%
- \PackageError{memoize}{'\detokenize{#1}' passed to key 'meaning to context'
+ \PackageError{memoize}{'\detokenize{#1}' passed to key 'meaning to \mmz@context@or@salt'
is neither a command nor an environment}{}%
}
\def\mmz@cmemo@path{\mmz@prefix\mmz@code@mdfivesum.memo}
@@ -781,6 +805,8 @@
\fi
\mmz@trace@resource{#1}%
\fi
+ \csxdef{mmz@resource@\the\mmz@seq}{\mmz@prefix@dir#1}%
+ \global\advance\mmz@seq1
}
\def\mmz@process@ccmemo{%
\mmz@trace@process@ccmemo
@@ -810,6 +836,7 @@
}%
\fi
}%
+ \global\mmz@seq=0
\IfFileExists{\mmz@ccmemo@path}{%
\ifmmz@direct@ccmemo@input
\input{\mmz@ccmemo@path}%
@@ -913,6 +940,7 @@
(\mmz@padding@left) + \wd\mmz@box + (\mmz@padding@right)\relax
\pdfpageheight\dimexpr
(\mmz@padding@top) + \ht\mmz@box + \dp\mmz@box+ (\mmz@padding@bottom)\relax
+ \mmz@shipout@unrotate
\hoffset\dimexpr\mmz@padding@left - \pdfhorigin\relax
\voffset\dimexpr\mmz@padding@top - \pdfvorigin\relax
\pdf@primitive\shipout\box\mmz@box
@@ -948,6 +976,19 @@
\mmzset{begindocument/.append code={%
\edef\mmz@inverse@mag{\expandafter\mmz@Pgf@geT\the\dimexpr 1000pt/\mag}%
}}
+\ifdef\XeTeXversion{%
+ \def\mmz@shipout@unrotate{}%
+}{%
+ \ifdef\luatexversion{%
+ \def\mmz@shipout@unrotate{%
+ \pdfvariable pageattr {/Rotate 0}%
+ }%
+ }{%
+ \def\mmz@shipout@unrotate{%
+ \pdfpageattr{/Rotate 0}%
+ }%
+ }%
+}
\newcount\mmzRegularPages
\newcount\mmzExternPages
\mmzset{
@@ -959,14 +1000,18 @@
},
}
\newcount\mmzExtraPages
-\def\mmz@include@extern#1#2#3#4#5#6#7#8#9{%
- \mmz@seq=#1\relax
+\def\mmz@include@extern#1{%
+ \expandafter\expandafter\expandafter\mmz@include@extern@i
+ \expandafter\expandafter\expandafter{%
+ \csname mmz@resource@#1\endcsname}%
+}
+\def\mmz@include@extern@i#1#2#3#4#5#6#7#8#9{%
\setbox\mmz@box=#2{%
\setbox0=\hbox{%
\lower\dimexpr #5+#7\relax\hbox{%
\hskip -#6\relax
\setbox0=\hbox{%
- \mmz@insertpdfpage{\mmz@extern@path}{1}%
+ \mmz@insertpdfpage{#1}{1}%
}%
\unhbox0
}%
@@ -1402,6 +1447,20 @@
\pgfeov
\AdviceOriginal
}
+\def\mmz@unknown{}
+\mmzset{
+ .unknown/.code={%
+ \eappto\mmz@unknown{,\pgfkeyscurrentkey={#1}}%
+ },
+ begindocument/end/.append code={%
+ \pgfkeyslet{/mmz/.unknown/.@cmd}\undefined
+ \expandafter\pgfkeysalso\expandafter{\mmz@unknown}%
+ },
+}
+\def\mmz@makeatletter{%
+ \edef\mmz@restoreatcatcode{\catcode`\noexpand\@\the\catcode`\@\relax}%
+ \catcode`\@=11
+}
\def\mmz@if@package@loaded#1#2#3{%
\mmzset{%
begindocument/before/.append code={%
@@ -1425,14 +1484,12 @@
}%
\ifx\mmz@temp=0
\else
- \xtoksapp\mmzCCMemo{%
- \unexpanded{%
- \global\expandafter\advance\csname pgf@picture@serial@count\endcsname
- }%
- \mmz@temp
- }%
+ \xtoksapp\mmzCCMemo{\noexpand\mmzStepPgfPictureId{\mmz@temp}}%
\fi
}%
+ \def\mmzStepPgfPictureId##1{%
+ \global\advance\pgf@picture@serial@count##1\relax
+ }%
\mmzset{%
at begin memoization=\mmzPgfAtBeginMemoization,
at end memoization=\mmzPgfAtEndMemoization,
diff --git a/Master/texmf-dist/tex/plain/tugboat-plain/tugboat.cmn b/Master/texmf-dist/tex/plain/tugboat-plain/tugboat.cmn
index 68ba0695f1b..d1eb803f4c3 100644
--- a/Master/texmf-dist/tex/plain/tugboat-plain/tugboat.cmn
+++ b/Master/texmf-dist/tex/plain/tugboat-plain/tugboat.cmn
@@ -19,7 +19,7 @@
%% definitions for abbreviations and logos that
%% appear in TUGboat."
%% }
-%% $Id: tugboat.cmn 561 2024-04-15 17:28:40Z karl $
+%% $Id: tugboat.cmn 607 2024-10-26 22:26:03Z karl $
% do nothing when reading this file a second time.
\ifx\tugboatcmn\undefined
@@ -29,8 +29,8 @@
\fi
\next
-\def\fileversion{v1.30}
-\def\filedate{2024-04-15}
+\def\fileversion{v1.31}
+\def\filedate{2024-10-26}
\message{File `TUGBOAT.CMN' \fileversion \space\space <\filedate>}
@@ -160,6 +160,7 @@
\def\LaTeXe{\LaTeX{}\kern.05em2$_{\textstyle\varepsilon}$}
\def\LMTX{\acro{LMTX}}
\def\LyX{L\kern-.1667em\lower.25em\hbox{Y}\kern-.125emX}
+\def\macOS{mac\acro{OS}}
\def\MacOSX{Mac\,\acro{OS\,X}}
\def\MathML{Math\acro{ML}}
% for Robert McGaffey
@@ -199,6 +200,7 @@
\def\SliTeX{{\rm S\kern-.06em{\smc l\kern-.035emi}\kern-.06em\TeX}}
\def\slMF{{\manualsl META}\-{\manualsl FONT}\spacefactor1000 }
% Atari ST (Klaus Guntermann)
+\def\SQL{\acro{SQL}}
\def\stTeX{{\smc st\rm\kern-0.13em\TeX}}
\def\SVG{\acro{SVG}}
\def\TANGLE{{\tt TANGLE}\spacefactor1000 }
@@ -495,6 +497,24 @@
\def\tbcode#1{\hbox{\tt #1}} % literal text
\def\tbcodebreak{\nolinkurl} % assume url.sty has been loaded
+% live urls with pdf.
+\def\tbsurl#1{\tbhref{https://#1}{\tt #1}}
+\def\tbhurl#1{\tbhref{http://#1}{\tt #1}}
+\def\tbmailto#1{\tbhref{mailto:#1}{\tt #1}}
+%
+\ifx\pdfstartlink\undefined
+% \tbhref args: #1=url, #2=link text.
+ \def\tbhref#1#2{{#2}}% not pdftex, just print the text (in a group).
+\else % pdftex:
+ \def\tbhref#1#2{%
+ \leavevmode % since \pdfstartlink cannot be used in vertical mode
+ \pdfstartlink
+ attr{/Border [0 0 0]}%
+ user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
+ {#2}\pdfendlink
+ }
+\fi % pdftex
+
% Adapted from c.t.t posting by Donald Arseneau, 26 May 93.
\def\nth#1{\TestCount=#1\relax
\ifnum\TestCount <0 \multiply\TestCount by\m@ne \fi % subdue negatives
@@ -552,8 +572,13 @@
\def\v@lx{\gdef\volx{Volume~\volno~(\volyr), No.~\issno}}
\def\volyr{}
\def\volno{}
-\def\vol #1,#2.{\gdef\volno{#1\unskip}%
+\def\vol #1, #2.{\gdef\volno{#1\unskip}%
\gdef\issno{\ignorespaces#2\unskip}%
+ % just the numbers:
+ \gdef\volnumber{#1}%
+ \gdef\issnumber{#2}%
+ \gdef\tbissident{\volnumber-\issnumber}% VV-n, for dois and urls
+ %
\setbox\TestBox=\hbox{\volyr}%
\ifdim \wd\TestBox > .2em \v@lx \fi }
@@ -1023,6 +1048,12 @@ that may not be obvious. For full definitions, see real code above.
Version Date Changes
------- --------- ---------------------------------------------------
+1.31 26 Oct 24 \tbsurl, \tbhurl, \tbmailto, \tbhref: simple
+ hyperlinks with pdftex.
+ new abbrevs \macOS, \SQL.
+ \volnumber, \issnumber: just the numbers.
+ \tbissident: VV-n to help with urls, etc.
+
1.30 15 Apr 24 remove duplicate \TP definition.
1.29 28 Oct 23 in \AllTeX, kern around ).
diff --git a/Master/texmf-dist/tex/plain/tugboat-plain/tugboat.sty b/Master/texmf-dist/tex/plain/tugboat-plain/tugboat.sty
index 88f8d036628..9a345ade4b1 100644
--- a/Master/texmf-dist/tex/plain/tugboat-plain/tugboat.sty
+++ b/Master/texmf-dist/tex/plain/tugboat-plain/tugboat.sty
@@ -18,11 +18,11 @@
%% for preparation of items in TUGboat, the
%% Communications of the TeX Users Group.",
%% }
-%% $Id: tugboat.sty 561 2024-04-15 17:28:40Z karl $
+%% $Id: tugboat.sty 607 2024-10-26 22:26:03Z karl $
\def\thistubstyle{plain}
-\def\fileversion{v1.30}
-\def\filedate{2024-03-31}
+\def\fileversion{v1.31}
+\def\filedate{2024-10-26}
% general items
@@ -64,15 +64,12 @@
% ** utilities
% ** initialization
-
-
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% ***** fonts *****
%
-
% Struts give ascenders and descenders to assist in baseline alignment
% (e.g. of adjoining vertical boxes); useful only with text fonts.
%
@@ -360,7 +357,6 @@
% ***** page dimensions *****
%
-
% vertical dimensions
\newdimen\trimlgt \trimlgt=11in % 10.5in (vols 7-9)
@@ -444,7 +440,6 @@
% ***** headers/footers *****
%
-
\def\pagenoprefix{}
\def\rtitlex{\def\tubfont{\tenpoint\rm}\TUB, \volx }
@@ -508,8 +503,6 @@
\newif\iftubsecondcolstart % when we splice, e.g., tb139wermuth-isdim
\newdimen\tubcolwidthandgutter
\newif\iftubfinaloption % set in tugboat.dates
-\def\tbsurl#1{{\tt #1}} % we don't try to have live urls in plain
-\def\tbhurl#1{{\tt #1}} % we don't try to have live urls in plain
\def\scriptsize{\let\rm=\sevenrm \font\tt=cmtt8 at 7pt % fake 7pt match LaTeX
\baselineskip=8pt \relax} % fake
\def\@empty{}
@@ -520,9 +513,9 @@
\ifnum\authornumber>0 % our convention: no doi if no author
\iftubfinaloption % do this if [final], even if pageno>900
\vbox to 0pt{% don't impact normal layout
- \edef\thedoi{\ifnum\count0>900 xnot\fi % but make url invalid if >900
- doi.org/\tubdoiprefix/\volno-\issno/\jobname}%
\scriptsize
+ \edef\thedoi{\ifnum\count0>900 xnot\fi % but make url invalid if >900
+ \tbsurl{doi.org/\tubdoiprefix/\tbissident/\jobname}}%
\vskip\baselineskip
\iftubsecondcolstart \moveright\tubcolwidthandgutter \fi
\rlap{\expandafter\tbsurl\expandafter{\thedoi}}%
@@ -577,14 +570,12 @@
\gdef\pageprefix{#2}% % as in A-10 for appendices; not used just now
\nextrunner }
-
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% ***** insertions *****
%
-
\newif\if@floatable \@floatabletrue % sometimes we don't want
\def\nofloat{\@floatablefalse} % midinsertions to float
@@ -655,7 +646,6 @@
% ***** output *****
%
-
% Reorganize \pagecontents from PLAIN to put footnotes at very
% bottom of page, even if \raggedbottom. Also add bottom insertions.
@@ -810,14 +800,12 @@
\ExecuteNextDC % possible `Delayed Command'
}
-
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% ***** page adjustment *****
%
-
% In the absence of automatic column-balancing, provide a mechanism
% for manually shortening a specified page.
@@ -923,7 +911,6 @@
\@form
\fi \fi}
-
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -1403,7 +1390,17 @@
}
-\def\endarticle{\vfil\end} % redefined in drivers
+% without the \nobreak, we can end up with an empty last page
+% (tb139wermuth-isdim). As Udo explains (13may24):
+% After TeX adjusts the page height the tugboat.sty output routine
+% starts the \ExecuteNextDC macro that prepares for a new page. This
+% page gets a \topskip and more input is read next. Only \endarticle is
+% left so a \vfill finishes the started column and your routine adds
+% another one to complete the page. That's all that ends up on the page.
+% With the \nobreak, the signature will be put on the last page, and the
+% previous page will be underfull, so it becomes obvious that a little
+% space should be taken away somewhere.
+\def\endarticle{\nobreak\vfil\end}
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1474,6 +1471,7 @@
\newif\if@allowindent
\def\allowindent{\global\@allowindenttrue}
+
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -2010,14 +2008,12 @@
}
}
-
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% ***** figures *****
%
-
\newif\if@@mid \@@midfalse
\newif\if@@bot \@@botfalse
\def\@caption{}
@@ -2116,16 +2112,12 @@
\def\twocolfigure{%
\figure[\fixed]}
-
-
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% ***** utilities *****
%
-
-
\def\linebreak{\unskip\break} % conflicts with LaTeX definition
% Define a structure that will permit a list (using \obeylines)
@@ -2208,7 +2200,6 @@
% ***** initialization *****
%
-
\def\initializearticle{%
\let\thetitle=\relax
\authornumber=0
@@ -2249,6 +2240,10 @@
Version Date Changes
------- --------- ---------------------------------------------------
+1.31 26 Oct 24 \thedoi: use \tbissident.
+ \endarticle: avoid empty last page, also for
+ tb139wermuth-isdim.
+
1.30 15 Apr 24 implement \iftubsecondcolstart for tb139wermuth-isdim.
1.29 28 Oct 23 introduce \abovecaptionskipamount, reduce to \smallskip
diff --git a/Master/texmf-dist/tex/texinfo/texinfo.tex b/Master/texmf-dist/tex/texinfo/texinfo.tex
index 1ef49158823..97a589c8989 100644
--- a/Master/texmf-dist/tex/texinfo/texinfo.tex
+++ b/Master/texmf-dist/tex/texinfo/texinfo.tex
@@ -3,7 +3,7 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2024-02-10.22}
+\def\texinfoversion{2024-11-04.20}
%
% Copyright 1985, 1986, 1988, 1990-2024 Free Software Foundation, Inc.
%
@@ -951,7 +951,11 @@ where each line of input produces a line of output.}
\let\setfilename=\comment
% @bye.
-\outer\def\bye{\chappager\pagelabels\tracingstats=1\ptexend}
+\outer\def\bye{%
+ \chappager\pagelabels
+ % possibly set in \printindex
+ \ifx\byeerror\relax\else\errmessage{\byeerror}\fi
+ \tracingstats=1\ptexend}
\message{pdf,}
@@ -3126,11 +3130,12 @@ end
% at the end of the line, or no break at all here.
% Changing the value of the penalty and/or the amount of stretch affects how
% preferable one choice is over the other.
+% Check test cases in doc/texinfo-tex-test.texi before making any changes.
\def\urefallowbreak{%
\penalty0\relax
- \hskip 0pt plus 2 em\relax
+ \hskip 0pt plus 3 em\relax
\penalty1000\relax
- \hskip 0pt plus -2 em\relax
+ \hskip 0pt plus -3 em\relax
}
\urefbreakstyle after
@@ -5438,6 +5443,9 @@ $$%
\closein 1
\endgroup}
+% Checked in @bye
+\let\byeerror\relax
+
% If the index file starts with a backslash, forgo reading the index
% file altogether. If somebody upgrades texinfo.tex they may still have
% old index files using \ as the escape character. Reading this would
@@ -5446,7 +5454,9 @@ $$%
\ifflagclear{txiindexescapeisbackslash}{%
\uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1
\ifflagclear{txiskipindexfileswithbackslash}{%
-\errmessage{%
+ % Delay the error message until the very end to give a chance
+ % for the whole index to be output as input for texindex.
+ \global\def\byeerror{%
ERROR: A sorted index file in an obsolete format was skipped.
To fix this problem, please upgrade your version of 'texi2dvi'
or 'texi2pdf' to that at <https://ftp.gnu.org/gnu/texinfo>.
@@ -5567,7 +5577,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
% then page number (#2) flushed to the right margin. It is used for index
% and table of contents entries. The paragraph is indented by \leftskip.
-%
+% If \tocnodetarget is set, link text to the referenced node.
\def\entry{%
\begingroup
%
@@ -5608,7 +5618,13 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\global\setbox\boxA=\hbox\bgroup
\ifpdforxetex
\iflinkentrytext
- \pdflinkpage{#1}{\unhbox\boxA}%
+ \ifx\tocnodetarget\empty
+ \unhbox\boxA
+ \else
+ \startxreflink{\tocnodetarget}{}%
+ \unhbox\boxA
+ \endlink
+ \fi
\else
\unhbox\boxA
\fi
@@ -5625,11 +5641,18 @@ might help (with 'rm \jobname.?? \jobname.??s')%
%
\null\nobreak\indexdotfill % Have leaders before the page number.
%
+ \hskip\skip\thinshrinkable
\ifpdforxetex
- \pdfgettoks#1.%
- \hskip\skip\thinshrinkable\the\toksA
+ \ifx\tocnodetarget\empty
+ \pdfgettoks#1.%
+ \the\toksA
+ \else
+ % Should just be a single page number in toc
+ \startxreflink{\tocnodetarget}{}%
+ #1\endlink
+ \fi
\else
- \hskip\skip\thinshrinkable #1%
+ #1%
\fi
\fi
\egroup % end \boxA
@@ -6892,7 +6915,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\vskip 0pt plus 5\baselineskip
\penalty-300
\vskip 0pt plus -5\baselineskip
- \dochapentry{#1}{\numeralbox}{}%
+ \dochapentry{#1}{\numeralbox}{#3}{}%
}
%
% Parts, in the short toc.
@@ -6905,12 +6928,12 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% Chapters, in the main contents.
\def\numchapentry#1#2#3#4{%
\retrievesecnowidth\secnowidthchap{#2}%
- \dochapentry{#1}{#2}{#4}%
+ \dochapentry{#1}{#2}{#3}{#4}%
}
% Chapters, in the short toc.
\def\shortchapentry#1#2#3#4{%
- \tocentry{#1}{\shortchaplabel{#2}}{#4}%
+ \tocentry{#1}{\shortchaplabel{#2}}{#3}{#4}%
}
% Appendices, in the main contents.
@@ -6923,79 +6946,77 @@ might help (with 'rm \jobname.?? \jobname.??s')%
%
\def\appentry#1#2#3#4{%
\retrievesecnowidth\secnowidthchap{#2}%
- \dochapentry{\appendixbox{#2}\hskip.7em#1}{}{#4}%
+ \dochapentry{\appendixbox{#2}\hskip.7em#1}{}{#3}{#4}%
}
% Unnumbered chapters.
-\def\unnchapentry#1#2#3#4{\dochapentry{#1}{}{#4}}
-\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{}{#4}}
+\def\unnchapentry#1#2#3#4{\dochapentry{#1}{}{#3}{#4}}
+\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{}{#3}{#4}}
% Sections.
-\def\numsecentry#1#2#3#4{\dosecentry{#1}{#2}{#4}}
-
\def\numsecentry#1#2#3#4{%
\retrievesecnowidth\secnowidthsec{#2}%
- \dosecentry{#1}{#2}{#4}%
+ \dosecentry{#1}{#2}{#3}{#4}%
}
\let\appsecentry=\numsecentry
\def\unnsecentry#1#2#3#4{%
\retrievesecnowidth\secnowidthsec{#2}%
- \dosecentry{#1}{}{#4}%
+ \dosecentry{#1}{}{#3}{#4}%
}
% Subsections.
\def\numsubsecentry#1#2#3#4{%
\retrievesecnowidth\secnowidthssec{#2}%
- \dosubsecentry{#1}{#2}{#4}%
+ \dosubsecentry{#1}{#2}{#3}{#4}%
}
\let\appsubsecentry=\numsubsecentry
\def\unnsubsecentry#1#2#3#4{%
\retrievesecnowidth\secnowidthssec{#2}%
- \dosubsecentry{#1}{}{#4}%
+ \dosubsecentry{#1}{}{#3}{#4}%
}
% And subsubsections.
-\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#2}{#4}}
+\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#2}{#3}{#4}}
\let\appsubsubsecentry=\numsubsubsecentry
-\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{}{#4}}
+\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{}{#3}{#4}}
% This parameter controls the indentation of the various levels.
% Same as \defaultparindent.
\newdimen\tocindent \tocindent = 15pt
% Now for the actual typesetting. In all these, #1 is the text, #2 is
-% a section number if present, and #3 is the page number.
+% a section number if present, #3 is the node, and #4 is the page number.
%
% If the toc has to be broken over pages, we want it to be at chapters
% if at all possible; hence the \penalty.
-\def\dochapentry#1#2#3{%
+\def\dochapentry#1#2#3#4{%
\penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
\begingroup
% Move the page numbers slightly to the right
\advance\entryrightmargin by -0.05em
\chapentryfonts
\extrasecnoskip=0.4em % separate chapter number more
- \tocentry{#1}{#2}{#3}%
+ \tocentry{#1}{#2}{#3}{#4}%
\endgroup
\nobreak\vskip .25\baselineskip plus.1\baselineskip
}
-\def\dosecentry#1#2#3{\begingroup
+\def\dosecentry#1#2#3#4{\begingroup
\secnowidth=\secnowidthchap
\secentryfonts \leftskip=\tocindent
- \tocentry{#1}{#2}{#3}%
+ \tocentry{#1}{#2}{#3}{#4}%
\endgroup}
-\def\dosubsecentry#1#2#3{\begingroup
+\def\dosubsecentry#1#2#3#4{\begingroup
\secnowidth=\secnowidthsec
\subsecentryfonts \leftskip=2\tocindent
- \tocentry{#1}{#2}{#3}%
+ \tocentry{#1}{#2}{#3}{#4}%
\endgroup}
-\def\dosubsubsecentry#1#2#3{\begingroup
+\def\dosubsubsecentry#1#2#3#4{\begingroup
\secnowidth=\secnowidthssec
\subsubsecentryfonts \leftskip=3\tocindent
- \tocentry{#1}{#2}{#3}%
+ \tocentry{#1}{#2}{#3}{#4}%
\endgroup}
% Used for the maximum width of a section number so we can align
@@ -7005,12 +7026,15 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\newdimen\extrasecnoskip
\extrasecnoskip=0pt
-% \tocentry{TITLE}{SEC NO}{PAGE}
+\let\tocnodetarget\empty
+
+% \tocentry{TITLE}{SEC NO}{NODE}{PAGE}
%
-\def\tocentry#1#2#3{%
+\def\tocentry#1#2#3#4{%
+ \def\tocnodetarget{#3}%
\def\secno{#2}%
\ifx\empty\secno
- \entry{#1}{#3}%
+ \entry{#1}{#4}%
\else
\ifdim 0pt=\secnowidth
\setbox0=\hbox{#2\hskip\labelspace\hskip\extrasecnoskip}%
@@ -7021,7 +7045,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
#2\hskip\labelspace\hskip\extrasecnoskip\hfill}%
\fi
\entrycontskip=\wd0
- \entry{\box0 #1}{#3}%
+ \entry{\box0 #1}{#4}%
\fi
}
\newdimen\labelspace
@@ -10515,6 +10539,16 @@ directory should work if nowhere else does.}
\catcode"#1=\other
}
+% Suppress ligature creation from adjacent characters.
+\ifx\luatexversion\thisisundefined
+ \def\nolig{{}}
+\else
+ % Braces do not suppress ligature creation in LuaTeX, e.g. in of{}fice
+ % to suppress the "ff" ligature. Using a kern appears to be the only
+ % workaround.
+ \def\nolig{\kern0pt{}}
+\fi
+
% https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_M
% U+0000..U+007F = https://en.wikipedia.org/wiki/Basic_Latin_(Unicode_block)
% U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)
@@ -11132,8 +11166,8 @@ directory should work if nowhere else does.}
% Punctuation
\DeclareUnicodeCharacter{2013}{--}%
\DeclareUnicodeCharacter{2014}{---}%
- \DeclareUnicodeCharacter{2018}{\quoteleft{}}%
- \DeclareUnicodeCharacter{2019}{\quoteright{}}%
+ \DeclareUnicodeCharacter{2018}{\quoteleft\nolig}%
+ \DeclareUnicodeCharacter{2019}{\quoteright\nolig}%
\DeclareUnicodeCharacter{201A}{\quotesinglbase{}}%
\DeclareUnicodeCharacter{201C}{\quotedblleft{}}%
\DeclareUnicodeCharacter{201D}{\quotedblright{}}%
@@ -11168,7 +11202,7 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{2287}{\ensuremath\supseteq}%
%
\DeclareUnicodeCharacter{2016}{\ensuremath\Vert}%
- \DeclareUnicodeCharacter{2032}{\ensuremath\prime}%
+ \DeclareUnicodeCharacter{2032}{\ensuremath{^\prime}}%
\DeclareUnicodeCharacter{210F}{\ensuremath\hbar}%
\DeclareUnicodeCharacter{2111}{\ensuremath\Im}%
\DeclareUnicodeCharacter{2113}{\ensuremath\ell}%
diff --git a/Master/texmf-dist/tex/xelatex/bhcexam/BHCexam.cls b/Master/texmf-dist/tex/xelatex/bhcexam/BHCexam.cls
index 1648653a505..1dd52a5d5f2 100644
--- a/Master/texmf-dist/tex/xelatex/bhcexam/BHCexam.cls
+++ b/Master/texmf-dist/tex/xelatex/bhcexam/BHCexam.cls
@@ -1,147 +1,77 @@
% BHCexam.cls
-%
-% An exam class designed for mathematics teacher in China.
-% Since 2016, it was used by mathcrowd.cn ( an opensource math exam database) as the default class to export exam papers.
-%
-
-%% BHCexam.cls
-%% Copyright (c) 2011-2022 BAO HONG CHANG
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2003/12/01 or later.
-%
-% This work has the LPPL maintenance status "author-maintained".
-%
-% This work consists of the files BHCexam.cls.
-% Documation on https://docs.mathcrowd.cn/advances/bhcexam.html
-% Support on https://github.com/mathedu4all/bhcexam/issues
-%
-
-%%% BAO HONG CHANG
-%%% Mathcrowd Inc.
-%%% Shanghai
-%%% charles@mathcrowd.cn
-
-% The newest version of this documentclass should always be available
-% from my web page: https://github.com/mathedu4all/bhcexam
-
-\def\fileversion{1.7}
-\def\filedate{2022/07/29}
+% Version: 1.8
+% Date: 2024/10/15
+% Author: BAO HONG CHANG
+% Description: An exam class orignally designed for mathematics teachers in China.
+% Used by Mathcrowd.cn since 2016 as the default class to export exam papers from database.
+% License: LaTeX Project Public License (LPPL), version 1.3 or later.
+% Documentation: https://lab.mathcrowd.cn/bhcexam/docs
+% Support: https://github.com/mathedu4all/bhcexam/issues
+
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{BHCexam}[\filedate\space Version \fileversion\space by
- BAO HONG CHANG]
-
- % *****************
- % ** 宏包选项 **
- % *****************
-
-
- % 文档类支持以下宏包选项:
-
- % answers 显示解析
- % adobe 使用adobe字体
- % ubuntu 使用ubuntu字体
- % windows 使用windows字体
- % fandol 使用fandol字体,随texlive默认安装
- % mac 使用mac字体
- % list 以列表项目格式显示试题
- % twocolumn 使用A3纸张并分栏
-
+\ProvidesClass{BHCexam}[2024/10/15 Version 1.8 by BAO HONG CHANG]
+
+% Options
\newif\if@printanswers \@printanswersfalse
\DeclareOption{answers}{\@printanswerstrue}
-\newcommand\@fontset{windows}
-\DeclareOption{adobe}{\renewcommand\@fontset{adobe}}
-\DeclareOption{ubuntu}{\renewcommand\@fontset{ubuntu}}
-\DeclareOption{mac}{\renewcommand\@fontset{mac}}
-\DeclareOption{windows}{\renewcommand\@fontset{windows}}
-\DeclareOption{fandol}{\renewcommand\@fontset{fandol}}
-
\newif\if@twocolumn \@twocolumnfalse
\DeclareOption{twocolumn}{\@twocolumntrue}
\newif\if@list \@listfalse
\DeclareOption{list}{\@listtrue}
+% Fontset, zihao, linestretch options
+\def\@fontset{none}
+\def\@zihao{5}
+\def\@linestretch{4}
+\newif\if@fontsetspecified \@fontsetspecifiedfalse
+\DeclareOption{fontset}{\renewcommand{\@fontset}{#1}\@fontsetspecifiedtrue}
+\DeclareOption{zihao}{\renewcommand{\@zihao}{#1}}
+\DeclareOption{linestretch}{\renewcommand{\@linestretch}{#1}}
+
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax
-\LoadClass{article}
-
-\RequirePackage[fontset = \@fontset, punct=kaiming]{ctex}
-\ctexset{linestretch = 4, autoindent = 0pt}
-
-
-% *****************************
-% ** 加载其他宏包 **
-% *****************************
-
-\RequirePackage{tabularx, ifthen} % 排选项用
-\RequirePackage{xcolor,graphicx,caption} % 彩色、图片、图释
-\RequirePackage{geometry,fancyhdr} % 纸张、边距、页眉、页脚
-\RequirePackage{etoolbox}
-\RequirePackage{amsmath,amsmath,amssymb} % ams数学相关
-\RequirePackage{unicode-math}
-\RequirePackage{pifont} % 带圈数字\ding
-\RequirePackage{bbding} % 图案
-\RequirePackage{romannum} % 罗马数字
-\RequirePackage{enumitem}
-
+% Load required packages
+\LoadClass{article}
-% *****************
-% ** 页面设置 **
-% *****************
+% Conditional loading of ctex with fontset option
+\if@fontsetspecified
+ \RequirePackage[fontset = \@fontset, punct=kaiming, zihao = \@zihao]{ctex}
+\else
+ \RequirePackage[punct=kaiming, zihao = \@zihao]{ctex}
+\fi
+\ctexset{linestretch = \@linestretch, autoindent = 0pt}
+\RequirePackage{tabularx, ifthen, xcolor, graphicx, caption}
+\RequirePackage{geometry, fancyhdr, etoolbox, amsmath, amssymb, unicode-math, pifont, bbding, romannum, enumitem}
+% Page setup
\AtBeginDocument{
- \pagenumbering{arabic} % 使用阿拉伯数字页码
- \renewcommand{\parallel}{\mathrel{\mathpalette\new@parallel\relax}} % 重定义平行符号
- \newcommand{\new@parallel}[2]{%
- \begingroup
- \sbox\z@{高度}% get the height of an uppercase letter
- \resizebox{!}{\ht\z@}{\raisebox{\depth}{$\m@th#1/\mkern-10mu/$}}%
- \endgroup
- }
+ \pagenumbering{arabic}
}
-
-%
-% 双栏显示
-%
+% Two-column layout
\if@twocolumn
-\geometry{a3paper,landscape, twocolumn,columnsep=40mm,left=50mm,right=30mm,top=35mm,bottom=25mm,headheight=20mm}
+ \geometry{a3paper,landscape, twocolumn,columnsep=40mm,left=50mm,right=30mm,top=35mm,bottom=25mm,headheight=20mm}
\else
-\geometry{a4paper,left=30mm,right=30mm,top=35mm,bottom=25mm, headheight=20mm}
+ \geometry{a4paper,left=30mm,right=30mm,top=35mm,bottom=25mm, headheight=20mm}
\fi
-%
-% 图释
-%
+% Figure caption setup
\captionsetup[figure]{font=small,belowskip=0pt}
-
-% *****************
-% ** 试卷头 **
-% *****************
-
-
-
+% Title page setup
\gdef\@subtitle{}
\gdef\@notice{}
\gdef\@author{}
\gdef\@date{}
-
-
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\title}[1]{\gdef\@title{#1}}
\newcommand{\subtitle}[1]{\gdef\@subtitle{#1}}
@@ -188,31 +118,37 @@
\songti \normalsize
\endgroup}
+% Set default array and baseline stretch
\renewcommand\arraystretch{1.5}
\renewcommand{\baselinestretch}{1.5}
-% ***************************
-% ** 试题、解答环境定义 **
-% ***************************
-
+% Define counters and flags
\newcounter{Group}
\newcounter{Question}
\newcounter{Example}
\newcounter{Exercise}
\newcounter{Method}[Question]
-\newif\if@showscore
-\@showscorefalse
-\newif\if@showskip
-\@showskipfalse
-\newif\if@showparen
-\@showparenfalse
-\newif\if@resetcounter
-\@resetcounterfalse
+\newif\if@showscore \@showscorefalse
+\newif\if@showskip \@showskipfalse
+\newif\if@showparen \@showparenfalse
+\newif\if@resetcounter \@resetcounterfalse
\newlength{\myvertspace}
+% Custom math commands
+\newcommand\abs[1]{\left|#1\right|}
+\newcommand{\gt}{>}
+\newcommand{\lt}{<}
+\renewcommand{\geq}{\geqslant}
+\renewcommand{\ge}{\geqslant}
+\renewcommand{\leq}{\leqslant}
+\renewcommand{\le}{\leqslant}
+\renewenvironment{split}{\begin{aligned}}{\end{aligned}}
+\renewcommand\parallel{\mathrel{/\mskip-2.5mu/}}
+\renewcommand{\Re}{\operatorname{Re}}
+\renewcommand{\Im}{\operatorname{Im}}
-% 定义题组环境
+% Define environments (groups, questions, solution)
\newenvironment{groups}{
\if@list
\list{\heiti\chinese{Group}.}{\usecounter{Group}}
@@ -227,7 +163,7 @@
\fi
}
-% 定义新增题组命令
+% Define commands (group, question, example, exercise, subquestion)
\newcommand{\group}[2]{
\if@list
\item \heiti{#1} \quad \kaishu \small #2 \songti \normalsize \par
@@ -238,7 +174,6 @@
}
-% 定义试题环境
\newenvironment{questions}[1][]{
\@tfor \@opt :=#1\do
{\if\@opt s\global\@showscoretrue\fi
@@ -265,7 +200,6 @@
\global\@showparenfalse
}
-% 定义新增试题命令
\newcommand{\question}[1][0]{
\stepcounter{Question}
\if@list
@@ -278,7 +212,6 @@
\fi
}
-% 定义新增例题命令
\newcommand{\example}[1][0]{
\stepcounter{Example}
\if@list
@@ -291,7 +224,6 @@
\fi
}
-% 定义新增习题命令
\newcommand{\exercise}[1][0]{
\stepcounter{Exercise}
\if@list
@@ -304,13 +236,15 @@
\fi
}
-% 定义小问环境
\newlist{subquestions}{enumerate}{2}
\setlist[subquestions,1]{label=(\arabic*)}
\setlist[subquestions,2]{label=(\roman*)}
+\newcommand{\subquestion}[1][0]{
+ \item \if@showscore \kaishu ( #1 分) \songti \fi
+}
-% 定义新增小问命令
-\newcommand{\subquestion}{\item}
+
+% Define hint, method, and methodonly commands
\newenvironment{solution}[1]{
\setlength{\myvertspace}{#1}
@@ -337,6 +271,8 @@
\dotfill 本步骤 #1 分, 累计 #2 分
\par}
+% Define multiple-choice commands
+
\makeatletter
\newcommand{\build}[2]{\leavevmode
\count@=\z@ \toks@={}%
@@ -346,7 +282,6 @@
\repeat
\the\toks@}
\makeatletter
-
\newlength{\keylength}
\newcommand{\key}[1]{
\if@printanswers
@@ -363,7 +298,6 @@
\newlength{\choicelengthe}
\newlength{\maxlength}
-% 三个选项
\newcommand{\threechoices}[3]{
\if@showparen \dotfill (\qquad) \fi
\par
@@ -401,7 +335,6 @@
\unskip \unskip
}
-% 四个选项
\newcommand{\fourchoices}[4]{
\if@showparen \dotfill (\qquad) \fi
\par
@@ -441,7 +374,6 @@
\unskip \unskip
}
-% 五个选项
\newcommand{\fivechoices}[5]{
\if@showparen \hfill \dotfill (\quad) \fi
\par
@@ -485,7 +417,6 @@
\unskip \unskip
}
-% 六个选项
\newcommand{\sixchoices}[6]{
\if@showparen \hfill \dotfill (\quad) \fi
\par
@@ -532,19 +463,4 @@
}
-% ***************************
-% ** CUSTOMIZED COMMAND **
-% ***************************
-
-\newcommand\abs[1]{\left|#1\right|}
-\newcommand{\gt}{>}
-\newcommand{\lt}{<}
-\renewcommand{\geq}{\geqslant}
-\renewcommand{\ge}{\geqslant}
-\renewcommand{\leq}{\leqslant}
-\renewcommand{\le}{\leqslant}
-\renewenvironment{split}{\begin{aligned}}{\end{aligned}}
-
-
-
-\endinput
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/xelatex/bidi/adjmulticol-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/adjmulticol-xetex-bidi.def
index 1748c9e9bb5..46fc41e3289 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/adjmulticol-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/adjmulticol-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/algorithm2e-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/algorithm2e-xetex-bidi.def
index dbbc234597c..868d3906ba0 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/algorithm2e-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/algorithm2e-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,12 +37,12 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{algorithm2e-xetex-bidi.def}[2018/09/23 v0.2 bidi adaptations for algorithm2e package for XeTeX engine]
+\ProvidesFile{algorithm2e-xetex-bidi.def}[2025/01/03 v0.3 bidi adaptations for algorithm2e package for XeTeX engine]
\expandafter\ifx\csname algocf@within\endcsname\relax% if \algocf@within doesn't exist
\else% else
\renewcommand\thealgocf{\csname the\algocf@within\endcsname\@SepMark\@arabic\c@algocf}%
\fi
-\@ifpackageloaded{color}{}{%
+\ApplyPatchIfPackageLoadedF{color}{%
\bidi@patchcmd{\@algocf@start}{\bgroup}{%
\bgroup
\if@RTL
@@ -68,6 +68,16 @@
\fi
}{}{}
}
+
+\@ifpackagewith{algorithm2e}{algonl}{%
+\renewcommand{\theAlgoLine}{\expandafter\csname the\algocf@float\endcsname\@SepMark\arabic{AlgoLine}}%
+}{}
+
+\@ifpackagewith{algorithm2e}{algopart}{\renewcommand{\algocf@within}{part}}{}
+
+\@ifpackagewith{algorithm2e}{algochapter}{\renewcommand{\algocf@within}{chapter}}{}
+
+\@ifpackagewith{algorithm2e}{algosection}{\renewcommand{\algocf@within}{section}}{}
\endinput
%%
%% End of file `algorithm2e-xetex-bidi.def'.
diff --git a/Master/texmf-dist/tex/xelatex/bidi/amsart-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/amsart-xetex-bidi.def
index 92758ddecfa..a33745edd96 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/amsart-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/amsart-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/amsbook-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/amsbook-xetex-bidi.def
index 0a3cac6bfb0..d2ec727b48d 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/amsbook-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/amsbook-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/amsmath-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/amsmath-xetex-bidi.def
index 693d7fdcd7b..c9f1b188b40 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/amsmath-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/amsmath-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/amstext-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/amstext-xetex-bidi.def
index 2a00f2e7e06..06822bd2e6e 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/amstext-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/amstext-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/amsthm-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/amsthm-xetex-bidi.def
index 4b3ea072ddf..37f8711f057 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/amsthm-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/amsthm-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/array-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/array-xetex-bidi.def
index 2dab6f9b6cb..5f749719912 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/array-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/array-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{array-xetex-bidi.def}[2015/11/07 v0.3 bidi adaptations for array package for XeTeX engine]
+\ProvidesFile{array-xetex-bidi.def}[2024/12/10 v0.5 bidi adaptations for array package for XeTeX engine]
\def\@testpach{\@chclass
\ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
\ifnum \@lastchclass=7 5 \else
@@ -58,30 +58,43 @@
\if \@nextchar >9 \else
10
\@chnum
- \if \@nextchar m\thr@@\else
+ \if \@nextchar m\thr@@ \else
\if \@nextchar p4 \else
\if \@nextchar b5 \else
\z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi
\fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}
\def\@tabular{%
\leavevmode
- \hbox \bgroup\if@RTLtab\beginR \fi $\col@sep\tabcolsep \let\d@llarbegin\begingroup
+ \hbox \bgroup\if@RTLtab\beginR \fi
+ \UseTaggingSocket{tbl/hmode/begin}%
+ $\col@sep\tabcolsep \let\d@llarbegin\begingroup
\let\d@llarend\endgroup
\@tabarray}
-\def\endtabular{\endarray $\if@RTLtab\endR\fi\egroup}
+\def\endtabular{\endarray\m@th $
+ \UseTaggingSocket{tbl/hmode/end}%
+ \if@RTLtab\endR\fi\egroup
+}
\expandafter\let\csname endtabular*\endcsname=\endtabular
-\def\@array[#1]#2{%
+\ExplSyntaxOn
+\def\@array[#1]#2{
\@tempdima \ht \strutbox
\advance \@tempdima by\extrarowheight
\setbox \@arstrutbox \hbox{\vrule
\@height \arraystretch \@tempdima
\@depth \arraystretch \dp \strutbox
\@width \z@}%
+ \tbl_save_outer_table_cols:
\begingroup
\@mkpream{#2}%
- \xdef\@preamble{\noexpand \ialign \@halignto
- \bgroup \@arstrut \@preamble
- \tabskip \z@ \cr}%
+ \tbl_count_table_cols:
+ \xdef\@preamble{
+ \noexpand \ar@ialign
+ \@halignto
+ \bgroup \@arstrut
+ \UseTaggingSocket{tbl/row/begin}
+ \tbl_init_cell_data_for_row:
+ \@preamble
+ \tabskip \z@ \cr}
\endgroup
\@arrayleft
\if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
@@ -89,12 +102,26 @@
\let \@sharp ##\let \protect \relax
\lineskip \z@
\baselineskip \z@
- \m@th
- \let\\\@arraycr \let\tabularnewline\\\let\par\@empty \if@RTLtab\hbox\bgroup\beginR\@hboxRconstructtrue\if #1t\vtop \else \vbox \fi\bgroup\fi\@preamble}
-\def\@tabarray{\@ifnextchar[{\@array}{\@array[c]}}
-\def\endarray{\crcr \egroup\if@RTLtab\egroup\endR\egroup\fi \egroup \@arrayright \gdef\@preamble{}}
+ \mathsurround \z@
+ \let\\\@arraycr \let\tabularnewline\\\let\par\@empty
+ \if@RTLtab\hbox\bgroup\beginR\@hboxRconstructtrue\if #1t\vtop \else \vbox \fi\bgroup\fi
+ \UseTaggingSocket{tbl/init}
+ \@preamble
+}
+\ExplSyntaxOff
+\let\@@array\@array
+\ExplSyntaxOn
+\def\endarray {
+ \tbl_crcr:n{endarray} \egroup
+ \UseTaggingSocket{tbl/finalize}
+ \tbl_restore_outer_cell_data:
+ \if@RTLtab\egroup\endR\egroup\fi
+ \egroup
+ \@arrayright \gdef\@preamble{}%
+}
+\ExplSyntaxOff
\def\array{\col@sep\arraycolsep
- \def\d@llarbegin{$}\let\d@llarend\d@llarbegin\gdef\@halignto{}%
+ \def\d@llarbegin{$}\let\d@llarend\d@llarbegin\def\@halignto{}%
\@RTLtabfalse\@tabarray}
\endinput
%%
diff --git a/Master/texmf-dist/tex/xelatex/bidi/article-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/article-xetex-bidi.def
index 3d1163c80c0..3338edd6a7f 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/article-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/article-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,8 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{article-xetex-bidi.def}[2017/06/09 v0.6 bidi adaptations for standard article class for XeTeX engine]
+\ProvidesFile{article-xetex-bidi.def}[2025/01/05 v0.9 bidi adaptations for standard article class for XeTeX engine]
+\IfClassLoadedT{svmult}{\endinput}
\if@titlepage
\renewcommand\maketitle{\begin{titlepage}%
\let\footnotesize\small
@@ -196,6 +197,15 @@
\nobreak
\vskip 3ex
\@afterheading}
+\ApplyPatchIfPackageLoaded{nameref}{%
+ \bidi@patchcmd\NR@spart\raggedright{%
+ \if@RTL\raggedleft\else\raggedright\fi
+ }{}{\bidi@warningnoline{Oops! patching `\string\NR@spart' failed}}%
+}{%
+ \bidi@patchcmd\@spart\raggedright{%
+ \if@RTL\raggedleft\else\raggedright\fi
+ }{}{\bidi@warningnoline{Oops! patching `\string\@spart' failed}}%
+}
\renewenvironment{thebibliography}[1]
{\section*{\refname}%
\@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}%
diff --git a/Master/texmf-dist/tex/xelatex/bidi/artikel1-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/artikel1-xetex-bidi.def
index 60814054a20..96bb28080c9 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/artikel1-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/artikel1-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/artikel2-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/artikel2-xetex-bidi.def
index 3d365571fe4..e741c64cf5e 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/artikel2-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/artikel2-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/artikel3-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/artikel3-xetex-bidi.def
index 48abafaa345..b6b7d042953 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/artikel3-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/artikel3-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/arydshln-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/arydshln-xetex-bidi.def
index 0674b2ee411..bd68d5ba7fd 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/arydshln-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/arydshln-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{arydshln-xetex-bidi.def}[2010/08/01 v0.2 bidi adaptations for arydshln package for XeTeX engine]
+\ProvidesFile{arydshln-xetex-bidi.def}[2025/01/03 v0.3 bidi adaptations for arydshln package for XeTeX engine]
\def\endarray{\adl@endarray \egroup \adl@arrayrestore \if@RTLtab\egroup\endR\egroup\fi\egroup}
\def\endtabular{\endarray $\if@RTLtab\endR\fi\egroup}
\expandafter\let\csname endtabular*\endcsname\endtabular
@@ -125,7 +125,7 @@
\def\adl@class@start{6}
\def\adl@class@iiiorvii{3}
\fi
-\@ifpackageloaded{colortbl}{%
+\ApplyPatchCodeToPackage{colortbl}{%
\def\adl@inactivate{\adl@org@inactivate \let\CT@setup\adl@CT@setup}
\def\adl@activate{\adl@org@activate \let\CT@setup\adl@act@CT@setup
\let\@endpbox\adl@org@endpbox}
@@ -171,7 +171,7 @@
\prepnext@tok}
\let\adl@act@classz\@classz
\let\adl@org@classz\@classz
-}{}
+}
\endinput
%%
%% End of file `arydshln-xetex-bidi.def'.
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamer-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamer-xetex-bidi.def
index 2e1a310dc56..52452c039a9 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamer-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamer-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseauxtemplates-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseauxtemplates-xetex-bidi.def
index 038209242db..3f8c206f593 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseauxtemplates-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseauxtemplates-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{beamerbaseauxtemplates-xetex-bidi.def}[2023/08/02 v0.3 bidi adaptations for beamerbaseauxtemplates package for XeTeX engine]
+\ProvidesFile{beamerbaseauxtemplates-xetex-bidi.def}[2025/01/03 v0.5 bidi adaptations for beamerbaseauxtemplates package for XeTeX engine]
\bidi@csundef{beamer@@tmpop@subsection in toc@sections numbered}
\bidi@csundef{beamer@@tmpop@subsubsection in toc@sections numbered}
@@ -316,6 +316,21 @@
\usebeamerfont{block body example}%
}%
+\bidi@csundef{beamer@@tmpop@caption@numbered}
+
+\defbeamertemplate{caption}{numbered}
+{%
+ \leavevmode
+ \bidi@beamer@ragged
+ {%
+ \usebeamercolor[fg]{caption name}%
+ \usebeamerfont*{caption name}%
+ \insertcaptionname~\insertcaptionnumber
+ \usebeamertemplate{caption label separator}%
+ }%
+ \insertcaption\par
+}
+
\bidi@csundef{beamer@@tmpop@caption@caption name own line}
\defbeamertemplate{caption}{caption name own line}
@@ -332,6 +347,15 @@
\end{minipage}
}
+\ApplyPatchCodeToPackage{caption}{%
+ \DeclareCaptionFont{beamer@font}{%
+ \usebeamerfont*{caption}%
+ }
+ \SetCaptionDefault{font}{beamer@font}
+ \DeclareCaptionJustification{bidi@beamer@ragged}{\bidi@beamer@ragged}
+ \SetCaptionDefault{justification}{bidi@beamer@ragged}
+}
+
\endinput
%%
%% End of file `beamerbaseauxtemplates-xetex-bidi.def'.
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseboxes-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseboxes-xetex-bidi.def
index 16cd1bcb455..85d0a3a392c 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseboxes-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseboxes-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbasecolor-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbasecolor-xetex-bidi.def
index ef502a8e2db..4ff3d0b7cb6 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerbasecolor-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbasecolor-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbasecompatibility-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbasecompatibility-xetex-bidi.def
index 34ae7497ce5..8d7bb74882d 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerbasecompatibility-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbasecompatibility-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseframecomponents-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseframecomponents-xetex-bidi.def
index 9e065ad6f88..d80f2437d47 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseframecomponents-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseframecomponents-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{beamerbaseframecomponents-xetex-bidi.def}[2023/08/02 v0.6 bidi adaptations for beamerbaseframecomponents package for XeTeX engine]
+\ProvidesFile{beamerbaseframecomponents-xetex-bidi.def}[2024/12/28 v0.7 bidi adaptations for beamerbaseframecomponents package for XeTeX engine]
\renewcommand{\setbeamersize}[1]{%
\beamer@dogeometryfalse%
\setkeys{beamer@margin}{#1}%
@@ -98,7 +98,7 @@
\usebeamertemplate***{sidebar left}%
\vfil%
}}%
- \@ifpackageloaded{beamerinnerthemeinmargin}{}{%
+ \ApplyPatchIfPackageLoadedF{beamerinnerthemeinmargin}{%
\hskip-\textwidth
}%
\fi
@@ -202,6 +202,15 @@
\box\beamer@tempbox}}}
\let\@evenhead\@oddhead\let\@evenfoot\@oddfoot}
+\renewenvironment<>{beamer@columnenv}[2][\beamer@colmode]{%
+ \beamer@colclose\def\beamer@colclose{}%
+ \begin{actionenv}#3%
+ \setkeys{beamer@col}{#1}%
+ \begin{minipage}[\beamer@colalign]{#2}%
+ \leavevmode\bidi@beamer@ragged\beamer@colheadskip\ignorespaces}
+ {\end{minipage}\hfill\end{actionenv}\@ignoretrue}
+\let\endcolumn\endbeamer@columnenv
+
\renewcommand<>\beamer@columncom[2][\beamer@colmode]{%
\beamer@colclose%
\def\beamer@colclose{\end{minipage}\hfill\end{actionenv}\ignorespaces}%
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseframesize-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseframesize-xetex-bidi.def
index 296e46e05c2..faa4bc5c8b3 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseframesize-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseframesize-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbaselocalstructure-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbaselocalstructure-xetex-bidi.def
index e3d06c57f46..3ca02f454f3 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerbaselocalstructure-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbaselocalstructure-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbasemisc-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbasemisc-xetex-bidi.def
index 9b2e2408462..2fd1464eb91 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerbasemisc-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbasemisc-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbasenavigation-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbasenavigation-xetex-bidi.def
index ed9aa846494..6123ae1daa9 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerbasenavigation-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbasenavigation-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseoverlay-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseoverlay-xetex-bidi.def
index 73090b4f66a..7d351fe2015 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseoverlay-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseoverlay-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemecircles-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemecircles-xetex-bidi.def
index 9f7fc72cf9c..b130d38d5ea 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemecircles-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemecircles-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemedefault-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemedefault-xetex-bidi.def
index f1c127ab953..ba63db77abd 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemedefault-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemedefault-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemefocus-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemefocus-xetex-bidi.def
index 78ca4bde11f..a0c8abf2a30 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemefocus-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemefocus-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemeinmargin-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemeinmargin-xetex-bidi.def
index 46dfc9b51ff..baab0df46d8 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemeinmargin-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemeinmargin-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthememetropolis-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthememetropolis-xetex-bidi.def
index be02f3b010f..a713b5a3c38 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthememetropolis-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthememetropolis-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerectangles-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerectangles-xetex-bidi.def
index 58413ecd9f7..992aacf90ae 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerectangles-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerectangles-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerounded-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerounded-xetex-bidi.def
index 5a52b0be6ac..a688a8d77ba 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerounded-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerounded-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemedefault-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemedefault-xetex-bidi.def
index 1c0cc39b704..dbf1652419f 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemedefault-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemedefault-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemefocus-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemefocus-xetex-bidi.def
index 2fd957bbdc4..14ead0b5685 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemefocus-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemefocus-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeinfolines-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeinfolines-xetex-bidi.def
index c3dba48d8c2..872dc3ab843 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeinfolines-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeinfolines-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthememetropolis-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthememetropolis-xetex-bidi.def
index 77ad8e0abd1..1a7922af9b7 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthememetropolis-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthememetropolis-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthememiniframes-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthememiniframes-xetex-bidi.def
index a8e025ff1b7..1e3b9180f0f 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthememiniframes-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthememiniframes-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeshadow-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeshadow-xetex-bidi.def
index 57408ef7cfc..ac301616fae 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeshadow-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeshadow-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesidebar-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesidebar-xetex-bidi.def
index eae7374498d..396a62fac3d 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesidebar-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesidebar-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothbars-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothbars-xetex-bidi.def
index bd8bd24fd77..acaec3fadd3 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothbars-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothbars-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothtree-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothtree-xetex-bidi.def
index 3a720374eff..57fce24e948 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothtree-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothtree-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesplit-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesplit-xetex-bidi.def
index 8af59723849..47761f7c3d5 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesplit-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesplit-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemetree-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemetree-xetex-bidi.def
index 2904711c6be..19ee16bee14 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemetree-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemetree-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerthemeHannover-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerthemeHannover-xetex-bidi.def
index 3f958a8df3b..8e7f37a8d17 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerthemeHannover-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerthemeHannover-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerthemeSingapore-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerthemeSingapore-xetex-bidi.def
index 6003dffab1f..3f73d5d92be 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/beamerthemeSingapore-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/beamerthemeSingapore-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidi-bibitem.pdf b/Master/texmf-dist/tex/xelatex/bidi/bidi-bibitem.pdf
new file mode 100644
index 00000000000..49191743021
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/bidi/bidi-bibitem.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidi-media9.sty b/Master/texmf-dist/tex/xelatex/bidi/bidi-media9.sty
index 683ed0e1ba4..eec18f15a72 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/bidi-media9.sty
+++ b/Master/texmf-dist/tex/xelatex/bidi/bidi-media9.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidi-perpage.sty b/Master/texmf-dist/tex/xelatex/bidi/bidi-perpage.sty
index d0d64623299..e5e0e7ad8c1 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/bidi-perpage.sty
+++ b/Master/texmf-dist/tex/xelatex/bidi/bidi-perpage.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidi.sty b/Master/texmf-dist/tex/xelatex/bidi/bidi.sty
index 0a88ea3f4b0..c8b4e3cd29c 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/bidi.sty
+++ b/Master/texmf-dist/tex/xelatex/bidi/bidi.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -38,12 +38,152 @@
%% Right brace \} Tilde \~}
%%
\NeedsTeXFormat{LaTeX2e}
-\def\bididate{2023/08/02}
-\def\bidi@version{39.8}
-\def\bidi@releasename{Donald Ervin Knuth}
+\def\bididate{2025/01/16}
+\def\bidi@version{41.6}
+\def\bidi@releasename{Maryam Mirzakhani}
\newcommand*{\bidireleasename}{\bidi@releasename}
\ProvidesPackage{bidi}[\bididate\space v\bidi@version\space (Release \bidi@releasename)\space
Bidirectional typesetting in plain TeX and LaTeX]
+\newif\if@bidi@banner
+\newif\if@bidi@pdfbanner
+\newif\iffootdir@debug
+\newif\if@extrafootnotefeatures
+\newif\if@nonlatin
+\newif\if@bidi@pdfm@mark
+\newif\if@bidi@perpage@footnote
+\ExplSyntaxOn
+\msg_new:nnn {bidi} {cannot-use-engine}
+ {
+ Oops!~can~not~use~\c_sys_engine_str.\\\\
+ The~bidi~package~requires~XeTeX.
+ }
+ \sys_if_engine_xetex:F
+ {
+ \msg_fatal:nn {bidi} {cannot-use-engine}
+ }
+
+\keys_define:nn { bidi }
+ {
+ banner .choice: ,
+ banner / on .code:n = \@bidi@bannertrue ,
+ banner / off .code:n = \@bidi@bannerfalse ,
+ banner .default:n = on
+ }
+\keys_define:nn { bidi }
+ {
+ PDFbanner .choice: ,
+ PDFbanner / on .code:n = \@bidi@pdfbannertrue ,
+ PDFbanner / off .code:n = \@bidi@pdfbannerfalse ,
+ PDFbanner .default:n = on
+ }
+\keys_define:nn { bidi }
+ {
+ RTLdocument .choice: ,
+ RTLdocument / on .code:n = \AtEndOfPackage{\@RTLtrue} ,
+ RTLdocument / off .code:n = \AtEndOfPackage{\@RTLfalse} ,
+ RTLdocument .default:n = on
+ }
+\keys_define:nn { bidi }
+ {
+ rldocument .choice: ,
+ rldocument / on .code:n = \AtEndOfPackage{\@RTLtrue} ,
+ rldocument / off .code:n = \AtEndOfPackage{\@RTLfalse} ,
+ rldocument .default:n = on
+ }
+\keys_define:nn { bidi }
+ {
+ documentdirection .choice: ,
+ documentdirection / righttoleft .code:n = \AtEndOfPackage{\@RTLtrue} ,
+ documentdirection / lefttoright .code:n = \AtEndOfPackage{\@RTLfalse}
+ }
+\keys_define:nn { bidi }
+ {
+ tabledirection .choice: ,
+ tabledirection / righttoleft .code:n = \AtEndOfPackage{\@RTLtabtrue} ,
+ tabledirection / lefttoright .code:n = \AtEndOfPackage{\@RTLtabfalse}
+ }
+\keys_define:nn { bidi }
+ {
+ footnotedirection .choice: ,
+ footnotedirection / righttoleft .code:n = \AtEndOfPackage{\@RTL@footnotetrue} ,
+ footnotedirection / lefttoright .code:n = \AtEndOfPackage{\@RTL@footnotefalse}
+ }
+\keys_define:nn { bidi }
+ {
+ debugfootnotedirection .choice: ,
+ debugfootnotedirection / on .code:n = \footdir@debugtrue ,
+ debugfootnotedirection / off .code:n = \footdir@debugfalse ,
+ debugfootnotedirection .default:n = on
+ }
+\keys_define:nn { bidi }
+ {
+ footnoterule .choice: ,
+ footnoterule / automatic .code:n = \AtEndOfPackage{\autofootnoterule} ,
+ footnoterule / left .code:n = \AtEndOfPackage{\leftfootnoterule} ,
+ footnoterule / right .code:n = \AtEndOfPackage{\rightfootnoterule} ,
+ footnoterule / split .code:n = \AtEndOfPackage{\SplitFootnoteRule} ,
+ footnoterule / textwidth .code:n = \AtEndOfPackage{\textwidthfootnoterule}
+ }
+\keys_define:nn { bidi }
+ {
+ extrafootnotefeatures .choice: ,
+ extrafootnotefeatures / on .code:n = \@extrafootnotefeaturestrue ,
+ extrafootnotefeatures / off .code:n = \@extrafootnotefeaturesfalse ,
+ extrafootnotefeatures .default:n = on
+ }
+\keys_define:nn { bidi }
+ {
+ script .choice: ,
+ script / latin .code:n = \@nonlatinfalse ,
+ script / nonlatin .code:n = \@nonlatintrue ,
+ script .default:n = latin
+ }
+\keys_define:nn { bidi }
+ {
+ DetectColumn .choice: ,
+ DetectColumn / on .code:n =
+ \def\bidi@firstcolumn@status@write{%
+ \protected@write\@auxout{}%
+ {\string\bidi@column@status
+ {1}}}
+ \def\bidi@lastcolumn@status@write{%
+ \protected@write\@auxout{}%
+ {\string\bidi@column@status{2}}} ,
+ DetectColumn / off .code:n =
+ \let\bidi@firstcolumn@status@write\relax
+ \let\bidi@lastcolumn@status@write\relax ,
+ DetectColumn .default:n = on
+ }
+\keys_define:nn { bidi }
+ {
+ logo .choice: ,
+ logo / on .code:n = \AtEndOfPackage{\AtBeginDocument{\@bidi@inslogo@}} ,
+ logo / off .code:n = \let\@bidi@logo@\@empty \let\@bidi@inslogo@\@empty ,
+ logo .default:n = on
+ }
+\keys_define:nn { bidi }
+ {
+ pdfinfo .choice: ,
+ pdfinfo / on .code:n = \@bidi@pdfm@marktrue ,
+ pdfinfo / off .code:n = \@bidi@pdfm@markfalse ,
+ pdfinfo .default:n = on
+ }
+\keys_define:nn { bidi }
+ {
+ perpagefootnote .choice: ,
+ perpagefootnote / on .code:n = \@bidi@perpage@footnotetrue ,
+ perpagefootnote / off .code:n = \@bidi@perpage@footnotefalse ,
+ perpagefootnote .default:n = on
+ }
+\keys_set:nn { bidi }
+ {
+ banner = on ,
+ PDFbanner = on ,
+ DetectColumn = off
+
+ }
+\ExplSyntaxOff
+\ProcessKeyOptions
\edef\@bidi@info{****************************************************^^J%
* ^^J%
* bidi package (Bidirectional typesetting in^^J%
@@ -54,7 +194,7 @@ Bidirectional typesetting in plain TeX and LaTeX]
* and LaTeX. The package includes adaptations^^J%
* for use with many other commonly-used packages.^^J%
* ^^J%
-* Copyright (c) 2007--2023 Vafa Khalighi^^J%
+* Copyright (c) 2007--2025 Vafa Khalighi^^J%
* Copyright (c) 2018--2020 bidi-tex GitHub organization^^J%
* ^^J%
* v\bidi@version\space (Release \bidi@releasename), \bididate^^J%
@@ -64,16 +204,18 @@ Bidirectional typesetting in plain TeX and LaTeX]
* ^^J%
* Location on CTAN: /macros/xetex/latex/bidi^^J%
* ^^J%
-* Issue tracker: https://github.com/kvafa/bidi/issues^^J%
+* Issue tracker: https://github.com/xepersian/bidi/issues^^J%
* ^^J%
-* Discussions: https://github.com/kvafa/bidi/discussions^^J%
+* Discussions: https://github.com/xepersian/bidi/discussions^^J%
* ^^J%
* Primary author of bidi package: Vafa Khalighi.^^J%
* ^^J%
****************************************************}
-\typeout{\@bidi@info}
\edef\bidi@everyjob{\the\everyjob}
-\everyjob{\bidi@everyjob\typeout{\@bidi@info}}
+\if@bidi@banner
+ \typeout{\@bidi@info}
+ \everyjob{\bidi@everyjob\typeout{\@bidi@info}}
+\fi
\newcommand*{\bidiversion}{\ensuremath\bidi@version}
\newcommand*{\IfbidiPackageVersionLater}[1]{%
\ifdim\bidi@version pt > #1 pt %
@@ -93,17 +235,12 @@ Bidirectional typesetting in plain TeX and LaTeX]
\else
\expandafter\@secondoftwo
\fi}
-\RequirePackage{iftex}
-\RequireXeTeX
\RequirePackage{biditools}
\RequirePackage{zref-abspage}
\RequirePackage{auxhook}
\RequirePackage{ltxcmds}
-\RequirePackage{xkeyval}
\eqnewif{\if@RTLmain}{\if@rlmain}
\eqnewif{\if@RTL}{\if@rl}
-\newif\if@nonlatin
-\newif\if@bidi@perpage@footnote
\newcommand*{\setlatin}{\@nonlatinfalse}
\newcommand*{\setnonlatin}{\@nonlatintrue}
\eqnewif{\if@RTLtab}{\if@tab@rl}
@@ -111,12 +248,10 @@ Bidirectional typesetting in plain TeX and LaTeX]
\newif\if@bidi@pdfencrypt
\newcommand*{\setRTLtable}{\@RTLtabtrue}
\newcommand*{\setLTRtable}{\@RTLtabfalse}
-\newif\if@bidi@pdfm@mark
\newif\if@RTLmarginpar
\newif\if@LTRmarginpar
\newif\if@LTRbibitems
\newif\if@RTLbibitems
-\newif\if@extrafootnotefeatures
\eqnewif{\if@RTL@footnote}{\if@rl@footnote}
\newif\if@bidi@list@minipage@parbox
\newif\if@bidi@list@minipage@parbox@not@nob
@@ -128,7 +263,7 @@ Bidirectional typesetting in plain TeX and LaTeX]
}
\newcommand*{\@bidi@pdfcustomproperties}{%
This is the bidi package, Version \bidi@version\space (Release \bidi@releasename),
- Released August 2, 2023.
+ Released January 16, 2025.
}
\newcommand*{\bidi@beamer@ragged}{}
\@RTLmainfalse
@@ -182,128 +317,45 @@ Bidirectional typesetting in plain TeX and LaTeX]
}%
\the\toks@
}
+\newcount\bidi@typesethour
+\newcount\bidi@typesetminute
+\bidi@typesethour=\time
+\divide\bidi@typesethour 60
+\bidi@typesetminute=-\bidi@typesethour
+\multiply\bidi@typesetminute 60
+\advance\bidi@typesetminute \time
+\newcommand*{\TypesetHour}{\two@digits\bidi@typesethour}
+\newcommand*{\TypesetMinute}{\two@digits\bidi@typesetminute}
+\newcommand*{\TypesetTime}{\TypesetHour:\TypesetMinute}
\newcommand*{\@bidi@logo@}{%
\@bidi@logo@hb@xt@columnwidth
- {\hss\LRE{\bfseries Typeset by the \textsf{bidi}
+ {\hss\LRE{\bfseries Typeset {\today} at {\TypesetTime} by the \textsf{bidi}
package\quad\@bidi@logo{bidi-logo.pdf}}}}
-\define@key{bidi@pdfencrypt}{userpassword}[]{%
- \def\bidi@pdfencrypt@userpassword{#1}%
-}
-\define@key{bidi@pdfencrypt}{ownerpassword}[]{%
- \def\bidi@pdfencrypt@ownerpassword{#1}%
-}
-\define@key{bidi@pdfencrypt}{keylength}[128]{%
- \def\bidi@pdfencrypt@keylength{#1}%
-}
-\define@key{bidi@pdfencrypt}{permissionflags}[2052]{%
- \def\bidi@pdfencrypt@permissionflags{#1}%
-}
-\newcommand*{\pdfencryptsetup}{\setkeys{bidi@pdfencrypt}}
+\ExplSyntaxOn
+\keys_define:nn { bidi / pdfencrypt }
+ {
+ userpassword .code:n = \def\bidi@pdfencrypt@userpassword{#1} ,
+ userpassword .default:n =
+ }
+\keys_define:nn { bidi / pdfencrypt }
+ {
+ ownerpassword .code:n = \def\bidi@pdfencrypt@ownerpassword{#1} ,
+ ownerpassword .default:n =
+ }
+\keys_define:nn { bidi / pdfencrypt }
+ {
+ keylength .code:n = \def\bidi@pdfencrypt@keylength{#1} ,
+ keylength .default:n = 128
+ }
+\keys_define:nn { bidi / pdfencrypt }
+ {
+ permissionflags .code:n = \def\bidi@pdfencrypt@permissionflags{#1} ,
+ permissionflags .default:n = 2052
+ }
+\NewDocumentCommand \pdfencryptsetup {m} { \keys_set:nn { bidi / pdfencrypt } {#1} }
+\ExplSyntaxOff
\@onlypreamble\pdfencryptsetup
\input{latex-xetex-bidi.def}
-\input{loadingorder-xetex-bidi.def}
-\define@choicekey{bidi.sty}{RTLdocument}[\bidi@tempa\bidi@tempb]{on,off}[on]{%
- \ifcase\bidi@tempb\relax
- \@RTLtrue
- \or
- \@RTLfalse
- \fi}
-\define@choicekey{bidi.sty}{documentdirection}[\bidi@tempa\bidi@tempb]{righttoleft,lefttoright}{%
- \ifcase\bidi@tempb\relax
- \@RTLtrue
- \or
- \@RTLfalse
- \fi}
-\define@choicekey{bidi.sty}{tabledirection}[\bidi@tempa\bidi@tempb]{righttoleft,lefttoright}{%
- \ifcase\bidi@tempb\relax
- \@RTLtabtrue
- \or
- \@RTLtabfalse
- \fi}
-\define@choicekey{bidi.sty}{script}[\bidi@tempa\bidi@tempb]{latin,nonlatin}[latin]{%
- \ifcase\bidi@tempb\relax
- \@nonlatinfalse
- \or
- \@nonlatintrue
- \fi}
-\define@choicekey{bidi.sty}{rldocument}[\bidi@tempa\bidi@tempb]{on,off}[on]{%
- \ifcase\bidi@tempb\relax
- \@RTLtrue
- \or
- \@RTLfalse
- \fi}
-\define@choicekey{bidi.sty}{footnoterule}[\bidi@tempa\bidi@tempb]{automatic,left,right,split,textwidth}{%
- \ifcase\bidi@tempb\relax
- \autofootnoterule
- \or
- \leftfootnoterule
- \or
- \rightfootnoterule
- \or
- \SplitFootnoteRule
- \or
- \textwidthfootnoterule
- \fi}
-\define@choicekey{bidi.sty}{footnotedirection}[\bidi@tempa\bidi@tempb]{righttoleft,lefttoright}{%
- \ifcase\bidi@tempb\relax
- \@RTL@footnotetrue
- \or
- \@RTL@footnotefalse
- \fi}
-\define@choicekey{bidi.sty}{debugfootnotedirection}[\bidi@tempa\bidi@tempb]{on,off}[on]{%
- \ifcase\bidi@tempb\relax
- \footdir@debugtrue
- \or
- \footdir@debugfalse
- \fi}
-\define@choicekey{bidi.sty}{extrafootnotefeatures}[\bidi@tempa\bidi@tempb]{on,off}[on]{%
- \ifcase\bidi@tempb\relax
- \@extrafootnotefeaturestrue
- \or
- \@extrafootnotefeaturesfalse
- \fi}
-
-\define@choicekey{bidi.sty}{DetectColumn}[\bidi@tempa\bidi@tempb]{on,off}[on]{%
- \ifcase\bidi@tempb\relax
- \def\bidi@firstcolumn@status@write{%
- \protected@write\@auxout{}%
- {\string\bidi@column@status
- {1}}}%
- \def\bidi@lastcolumn@status@write{%
- \protected@write\@auxout{}%
- {\string\bidi@column@status{2}}}%
- \or
- \let\bidi@firstcolumn@status@write\relax
- \let\bidi@lastcolumn@status@write\relax
- \fi}
-
-\define@choicekey{bidi.sty}{logo}[\bidi@tempa\bidi@tempb]{on,off}[on]{%
- \ifcase\bidi@tempb\relax
- \AtBeginDocument{\@bidi@inslogo@}%
- \or
- \let\@bidi@logo@\@empty \let\@bidi@inslogo@\@empty
- \fi}
-
-\define@choicekey{bidi.sty}{pdfinfo}[\bidi@tempa\bidi@tempb]{on,off}[on]{%
- \ifcase\bidi@tempb\relax
- \@bidi@pdfm@marktrue
- \or
- \@bidi@pdfm@markfalse
- \fi}
-
-
-\define@choicekey{bidi.sty}{perpagefootnote}[\bidi@tempa\bidi@tempb]{on,off}[on]{%
- \ifcase\bidi@tempb\relax
- \@bidi@perpage@footnotetrue
- \or
- \@bidi@perpage@footnotefalse
- \fi}
-
-\ExecuteOptionsX{%
- DetectColumn=off%
-}
-
-\ProcessOptionsX
\pdfencryptsetup{%
userpassword,%
@@ -349,20 +401,44 @@ Bidirectional typesetting in plain TeX and LaTeX]
}%
\fi
}
-\AtEndDocument{%
- \special{pdf:%
- docinfo<<%
- \if@bidi@pdfm@mark
- /Creator(\@bidi@pdfcreator)%
- /Producer(\@bidi@pdfproducer)%
- \fi
- /BIDI.Fullbanner(\@bidi@pdfcustomproperties)%
- \if@bidi@csdef{@xepersian@pdfcustomproperties}{%
- /XEPERSIAN.Fullbanner(\@xepersian@pdfcustomproperties)%
- }{}%
- >>%
- }%
-}
+\if@bidi@pdfbanner
+ \if@bidi@pdfm@mark
+ \AtEndDocument{%
+ \special{pdf:%
+ docinfo<<%
+ /Creator(\@bidi@pdfcreator)%
+ /Producer(\@bidi@pdfproducer)%
+ /BIDI.Fullbanner(\@bidi@pdfcustomproperties)%
+ \if@bidi@csdef{@xepersian@pdfcustomproperties}{%
+ /XEPERSIAN.Fullbanner(\@xepersian@pdfcustomproperties)%
+ }{}%
+ >>%
+ }%
+ }
+ \else
+ \AtEndDocument{%
+ \special{pdf:%
+ docinfo<<%
+ /BIDI.Fullbanner(\@bidi@pdfcustomproperties)%
+ \if@bidi@csdef{@xepersian@pdfcustomproperties}{%
+ /XEPERSIAN.Fullbanner(\@xepersian@pdfcustomproperties)%
+ }{}%
+ >>%
+ }%
+ }
+ \fi
+\else
+ \if@bidi@pdfm@mark
+ \AtEndDocument{%
+ \special{pdf:%
+ docinfo<<%
+ /Creator(\@bidi@pdfcreator)%
+ /Producer(\@bidi@pdfproducer)%
+ >>%
+ }%
+ }
+ \fi
+\fi
\endinput
%%
%% End of file `bidi.sty'.
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidi.tex b/Master/texmf-dist/tex/xelatex/bidi/bidi.tex
index 3c48ea2b3ec..009953b2f36 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/bidi.tex
+++ b/Master/texmf-dist/tex/xelatex/bidi/bidi.tex
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,10 +37,10 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\def\bididate{2023/08/02}
+\def\bididate{2025/01/16}
\catcode`@=11
-\def\bidi@version{39.8}
-\def\bidi@releasename{Donald Ervin Knuth}
+\def\bidi@version{41.6}
+\def\bidi@releasename{Maryam Mirzakhani}
\def\bidireleasename{\bidi@releasename}
\let \protect \relax
\newlinechar`\^^J
@@ -54,7 +54,7 @@
* and LaTeX. The package includes adaptations^^J%
* for use with many other commonly-used packages.^^J%
* ^^J%
-* Copyright (c) 2007--2023 Vafa Khalighi^^J%
+* Copyright (c) 2007--2025 Vafa Khalighi^^J%
* Copyright (c) 2018--2020 bidi-tex GitHub organization^^J%
* ^^J%
* v\bidi@version\space (Release \bidi@releasename), \bididate^^J%
@@ -64,15 +64,15 @@
* ^^J%
* Location on CTAN: /macros/xetex/latex/bidi^^J%
* ^^J%
-* Issue tracker: https://github.com/kvafa/bidi/issues^^J%
+* Issue tracker: https://github.com/xepersian/bidi/issues^^J%
* ^^J%
-* Discussions: https://github.com/kvafa/bidi/discussions^^J%
+* Discussions: https://github.com/xepersian/bidi/discussions^^J%
* ^^J%
* Primary author of bidi package: Vafa Khalighi.^^J%
* ^^J%
****************************************************}
-\message{\@bidi@info}
\edef\bidi@everyjob{\the\everyjob}
+\message{\@bidi@info}
\everyjob{\bidi@everyjob\message{\@bidi@info}}
\def\bidiversion{%
\relax
@@ -133,7 +133,23 @@
}%
\the\toks@
}
-\def\@bidi@logo@{\@bidi@logo@hb@xt@\hsize{\hss\LRE{\bf Typeset by the bidi package\quad\@bidi@logo{bidi-logo.pdf}}}}
+\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+\def\two@digits#1{\ifnum#1<10 0\fi\number#1}
+\newcount\bidi@typesethour
+\newcount\bidi@typesetminute
+\bidi@typesethour=\time
+\divide\bidi@typesethour 60
+\bidi@typesetminute=-\bidi@typesethour
+\multiply\bidi@typesetminute 60
+\advance\bidi@typesetminute \time
+\def\TypesetHour{\two@digits\bidi@typesethour}
+\def\TypesetMinute{\two@digits\bidi@typesetminute}
+\def\TypesetTime{\TypesetHour:\TypesetMinute}
+\def\@bidi@logo@{\@bidi@logo@hb@xt@\hsize{\hss\LRE{\bf Typeset {\today} at {\TypesetTime} by the bidi package\quad\@bidi@logo{bidi-logo.pdf}}}}
+\def\bidilogo{\@bidi@inslogo@}
\def\nobidilogo{\let\@bidi@logo@\@empty \let\@bidi@inslogo@\@empty}
\def\@bidi@pdfcreator{%
The bidi package, v\bidi@version\space (Release \bidi@releasename), \bididate
@@ -143,7 +159,7 @@
}
\def\@bidi@pdfcustomproperties{%
This is the bidi package, Version \bidi@version\space (Release \bidi@releasename),
- Released August 2, 2023.
+ Released January 16, 2025.
}
\def\bidi@pdfm@mark{%
\special{pdf:%
@@ -159,8 +175,7 @@
\def\bidipdfinfoon{\@bidi@pdfm@marktrue}
\def\bidipdfinfooff{\@bidi@pdfm@markfalse}
\input plain-xetex-bidi.def
-\@bidi@inslogo@
-\outer\def\bye{\par\vfill\supereject\bidi@pdfm@mark\end}
+\outer\def\bye{\bidi@pdfm@mark\par\vfill\supereject\end}
\catcode`@=12
\bidipdfinfoon
\endinput
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidi2in1.sty b/Master/texmf-dist/tex/xelatex/bidi/bidi2in1.sty
index 47cf94b67b5..e14968085cb 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/bidi2in1.sty
+++ b/Master/texmf-dist/tex/xelatex/bidi/bidi2in1.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidicode.sty b/Master/texmf-dist/tex/xelatex/bidi/bidicode.sty
index 085a02a5305..442a6cb06aa 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/bidicode.sty
+++ b/Master/texmf-dist/tex/xelatex/bidi/bidicode.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -42,8 +42,8 @@
\RequirePackage{xcolor}
\RequirePackage{showexpl}
\definecolor{hellgelb}{rgb}{1,1,0.85}
-\definecolor{colKeys}{rgb}{0,0,1}
-\definecolor{colCS}{rgb}{0,0,1}
+\definecolor{colKeys}{rgb}{0.2,0.4,0.8}
+\definecolor{colCS}{rgb}{0.2,0.4,0.8}
\definecolor{colIdentifier}{rgb}{0,0,0}
\definecolor{colComments}{rgb}{1,0,0}
\definecolor{colString}{rgb}{0,0.5,0}
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidiftnxtra.sty b/Master/texmf-dist/tex/xelatex/bidi/bidiftnxtra.sty
index a1bb7e71b3a..dd6e4122570 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/bidiftnxtra.sty
+++ b/Master/texmf-dist/tex/xelatex/bidi/bidiftnxtra.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidimoderncv.cls b/Master/texmf-dist/tex/xelatex/bidi/bidimoderncv.cls
index e4c269c5649..69b9142cd4f 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/bidimoderncv.cls
+++ b/Master/texmf-dist/tex/xelatex/bidi/bidimoderncv.cls
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidipoem.sty b/Master/texmf-dist/tex/xelatex/bidi/bidipoem.sty
index 49adfb2e723..2ffa838b307 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/bidipoem.sty
+++ b/Master/texmf-dist/tex/xelatex/bidi/bidipoem.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/biditools.sty b/Master/texmf-dist/tex/xelatex/bidi/biditools.sty
index aa85b9cb94e..50ccbe9f479 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/biditools.sty
+++ b/Master/texmf-dist/tex/xelatex/bidi/biditools.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -38,7 +38,7 @@
%% Right brace \} Tilde \~}
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{biditools}[2022/06/15 v2.3 Programming tools for bidi package]
+\ProvidesPackage{biditools}[2025/01/03 v2.6 Programming tools for bidi package]
\providecommand{\@bidi@saveprimitive}[2]{\begingroup\escapechar`\\\relax
\edef\@tempa{\string#1}\edef\@tempb{\meaning#1}%
\ifx\@tempa\@tempb \global\let#2#1%
@@ -124,12 +124,6 @@ Old form `\string#1' should be \string\begin{\expandafter\@gobble\string#1}%
ill-advised in the old versions of bidi package.%
}%
}
-\def\@tagsextension{clo}
-\def\@definitionfileextension{def}
-\def\@texfileextension{tex}
-\def\@iftagsloaded{\@ifl@aded\@tagsextension}
-\def\@ifdefinitionfileloaded{\@ifl@aded\@definitionfileextension}
-\def\@iftexfileloaded{\@ifl@aded\@texfileextension}
\def\eqnewif#1#2{%
\count@\escapechar \escapechar\m@ne
\let#1\iffalse
@@ -358,6 +352,7 @@ ill-advised in the old versions of bidi package.%
\protected\def\bidi@error{\PackageError{bidi}}
\protected\def\bidi@warning{\PackageWarning{bidi}}
+\protected\def\bidi@warningnoline{\PackageWarningNoLine{bidi}}
\protected\def\bidi@info{\PackageInfo{bidi}}
\def\bidi@pos#1#2#3#4{\bidi@namegdef{bidi@#1pos@@#2@#3}{#4}}
@@ -760,14 +755,6 @@ ill-advised in the old versions of bidi package.%
\catcode\number`\@=\the\catcode`\@\relax}%
\bidi@resrvda}
-\newcommand\bidi@isloaded[2][]{
- \expandafter\ifx\csname if@bidi@#2loaded@\endcsname\relax
- \expandafter\newif\csname if@bidi@#2loaded@\endcsname
- \fi
- \@ifpackageloaded{#2}
- {\csname @bidi@#2loaded@true\endcsname #1}
- {\csname @bidi@#2loaded@false\endcsname}}
-
\protected\def\bidi@ifscanable#1{%
\begingroup
\edef\bidi@resrvda{%
@@ -1324,435 +1311,270 @@ ill-advised in the old versions of bidi package.%
-\renewcommand{\InputIfFileExists}[2]{%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname #1-@bidi@alias\endcsname\relax
- \expandafter\@secondoftwo
- \else
- \bidi@replacefile@msg{\csname #1-@bidi@alias\endcsname}{#1}%
- \expandafter\@firstoftwo
- \fi
- {%
- \expandafter\InputIfFileExists\expandafter{\csname
- #1-@bidi@alias\endcsname}{#2}%
- }%
- {\IfFileExists{#1}{%
- \bidi@load@hook{before}{#1}%
- #2\@addtofilelist{#1}%
- \@@input \@filef@und
- \bidi@load@hook{after}{#1}%
- }}%
-}
+\ExplSyntaxOn
+\NewDocumentCommand \bidi@AfterClass { s m o +m }
+ {
+ \IfBooleanTF { #1 }
+ {
+ \@ifclassloaded{ #2 }
+ { #4 }
+ {
+ \hook_gput_code:nnn
+ { file / #2.\@clsextension / after }
+ { #3 }
+ { #4 }
+ }
+ }
+ {
+ \hook_gput_code:nnn { file / #2.\@clsextension / after } { #3 } { #4 }
+ }
+ }
-\newcommand*{\bidi@@loadwithoptions}{}
-\newcommand*{\bidi@loadwithoptions}{}
-\let\bidi@loadwithoptions\@loadwithoptions
+\seq_new:N \g__biditools_input_file_seq
-\renewcommand*{\@loadwithoptions}[3]{%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname #3.#1-@bidi@aliasname\endcsname\relax
- \def\bidi@@loadwithoptions{\bidi@loadwithoptions{#1}{#2}{#3}}%
- \else
- \bidi@replacefile@msg{\csname #3.#1-@bidi@aliasname\endcsname.#1}{#3.#1}%
- \def\bidi@@loadwithoptions{%
- \@loadwithoptions{#1}{#2}{\csname #3.#1-@bidi@aliasname\endcsname}%
- }%
- \fi
- \bidi@@loadwithoptions
-}
+\prg_new_protected_conditional:Npnn \__bidi_if_loading:n #1 { T, F, TF }
+ {
+ \str_set:Nx \l_tmpa_str { #1 }
+ \seq_if_in:NxTF \g__biditools_input_file_seq { \str_use:N \l_tmpa_str }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
-\newcommand*{\bidi@onefilewithoptions}{}
-\let\bidi@onefilewithoptions\@onefilewithoptions
-\def\@onefilewithoptions#1[#2][#3]#4{%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname #1.#4-@bidi@aliasname\endcsname\relax
- \def\bidi@@onefilewithoptions{\bidi@onefilewithoptions{#1}}%
- \else
- \bidi@replacefile@msg{\csname #1.#4-@bidi@aliasname\endcsname.#4}{#1.#4}%
- \edef\bidi@@onefilewithoptions{%
- \noexpand\@onefilewithoptions{\csname #1.#4-@bidi@aliasname\endcsname}}%
- \fi
- \bidi@@onefilewithoptions[{#2}][{#3}]{#4}%
- \bidi@load@hook{lateafter}{#1.#4}%
-}
+\prg_new_protected_conditional:Npnn \bidi_if_class_loaded:n #1 { T, F, TF }
+ {
+ \@ifclassloaded { #1 }
+ {
+ \__bidi_if_loading:nTF { #1.\@clsextension }
+ { \prg_return_false: }
+ { \prg_return_true: }
+ }
+ {
+ \prg_return_false:
+ }
+ }
-\newcommand*{\bidi@ReplaceInput}[2]{%
- \expandafter\edef\csname #1-@bidi@alias\endcsname{#2}%
-}
+\prg_new_protected_conditional:Npnn \bidi_if_package_loaded:n #1 { T, F, TF }
+ {
+ \@ifpackageloaded { #1 }
+ {
+ \__bidi_if_loading:nTF { #1.\@pkgextension }
+ { \prg_return_false: }
+ { \prg_return_true: }
+ }
+ {
+ \prg_return_false:
+ }
+ }
-\newcommand*{\bidi@UnReplaceInput}[1]{%
- \ifcsname #1-@bidi@alias\endcsname
- \expandafter\let\csname #1-@bidi@alias\endcsname\relax
- \fi
-}
+\NewDocumentCommand \bidi@AfterAtEndOfClass { s m o +m }
+ {
+ \IfBooleanTF { #1 }
+ {
+ \bidi_if_class_loaded:nTF { #2 }
+ { #4 }
+ { \hook_gput_code:nnn { class / #2 / after } { #3 } { #4 } }
+ }
+ {
+ \bidi_if_class_loaded:nF
+ { #2 }
+ { \hook_gput_code:nnn { class / #2 / after } { #3 } { #4 } }
+ }
+ }
-\newcommand*{\@bidi@replacefilewithext}[3]{%
- \expandafter\edef\csname #1.#3-@bidi@aliasname\endcsname{#2}%
- }
-\newcommand*{\bidi@ReplacePackage}[2]{%
- \@bidi@replacefilewithext{#1}{#2}\@pkgextension
-}
-\newcommand*{\bidi@ReplaceClass}[2]{%
- \@bidi@replacefilewithext{#1}{#2}\@clsextension
-}
-\newcommand*{\@bidi@unreplacefilewithext}[2]{%
- \ifcsname #1.#2-@bidi@aliasname\endcsname
- \expandafter\let\csname #1.#2-@bidi@aliasname\endcsname\relax
- \fi
-}
-\newcommand*{\bidi@UnReplacePackage}[1]{%
- \@bidi@unreplacefilewithext{#1}\@pkgextension
-}
-\newcommand*{\bidi@UnReplaceClass}[1]{%
- \@bidi@unreplacefilewithext{#1}\@clsextension
-}
-\newcommand*{\bidi@replacefile@msg}[2]{%
- \PackageInfo{biditools}{inputing `#1' instead of `#2'}%
-}
+\NewDocumentCommand \bidi@AfterPackage { s m o +m }
+ {
+ \IfBooleanTF { #1 }
+ {
+ \@ifpackageloaded{ #2 }
+ { #4 }
+ {
+ \hook_gput_code:nnn
+ { file / #2.\@pkgextension / after }
+ { #3 }
+ { #4 }
+ }
+ }
+ {
+ \hook_gput_code:nnn { file / #2.\@pkgextension / after } { #3 } { #4 }
+ }
+ }
-\newcommand*{\bidi@load@hook}[2]{%
- \@ifundefined{#2-@#1}{}{%
- \@nameuse{#2-@#1}%
- \expandafter\let\csname #2-@#1\endcsname=\relax}}
-\newcommand*{\bidi@set@load@hook}[2]{%
- \@ifundefined{#2-@#1}{\@namedef{#2-@#1}{}}{}%
- \expandafter\g@addto@macro\csname #2-@#1\endcsname}
-\newcommand*{\bidi@BeforeFile}{\bidi@set@load@hook{before}}
-\newcommand*{\bidi@AfterFile}{\bidi@set@load@hook{after}}
-\newcommand*{\bidi@BeforeClass}[1]{%
- \bidi@set@load@hook{before}{#1.\@clsextension}}
-\newcommand*{\bidi@AfterClass}{%
- \@ifstar {\@s@bidi@AfterClass}{%
- \@ifnextchar +\@@bidi@AfterClass{%
- \@ifnextchar !\@@@bidi@AfterClass\@bidi@AfterClass
- }%
- }%
-}
+\NewDocumentCommand \bidi@AfterAtEndOfPackage { s m o +m }
+ {
+ \IfBooleanTF { #1 }
+ {
+ \bidi_if_package_loaded:nTF { #2 }
+ { #4 }
+ { \hook_gput_code:nnn { package / #2 / after } { #3 } { #4 } }
+ }
+ {
+ \bidi_if_package_loaded:nF
+ { #2 }
+ { \hook_gput_code:nnn { package / #2 / after } { #3 } { #4 } }
+ }
+ }
-\newcommand*{\@@@bidi@AfterClass}[2]{%
- \begingroup\ifx\csname #2.\@clsextension-h@@k\endcsname\relax
- \aftergroup\@s@bidi@AfterClass
- \else
- \aftergroup\bidi@AfterAtEndOfClass
- \fi
- \endgroup{#2}%
-}
+\clist_new:N \l__biditools_package_clist
+\msg_new:nnn { biditools } { cannot-prevent-for-already-loaded-package }
+ {
+ Can~not~prevent~package~`#1'~from~being~loaded,~
+ since~it~has~been~loaded~already~before~line~\msg_line_number:
+ }
+\clist_new:N \g__biditools_prevent_clist
+
+\NewDocumentCommand \bidi@PreventPackageFromLoading { s +o m }
+ {
+ \clist_set:Nx \l__biditools_package_clist { #3 }
+ \clist_map_inline:Nn \l__biditools_package_clist
+ {
+ \@ifpackageloaded { ##1 }
+ {
+ \IfBooleanTF { #1 } { \msg_info:nnn } { \msg_warning:nnn }
+ { biditools } { cannot-prevent-for-already-loaded-package } { ##1 }
+ }
+ {
+ \clist_if_in:NnF \g__biditools_prevent_clist { ##1 }
+ { \clist_gput_right:Nn \g__biditools_prevent_clist { ##1 } }
+ \tl_if_exist:cF { g__biditools_exclude_package_##1_tl }
+ {
+ \tl_new:c { g__biditools_exclude_package_##1_tl }
+ }
+ \IfValueT { #2 }
+ {
+ \tl_gput_right:cn { g__biditools_exclude_package_##1_tl } { #2 }
+ }
+ \disable@package@load { ##1 }
+ { \tl_use:c { g__biditools_exclude_package_##1_tl } }
+ }
+ }
+ \clist_clear:N \l__biditools_package_clist
+ }
-\newcommand*{\bidi@AfterAtEndOfClass}[1]{%
- \bidi@set@load@hook{lateafter}{#1.\@clsextension}}
-\newcommand*{\@@bidi@AfterClass}[2]{%
- \begingroup
- \expandafter\ifx\csname #2.\@clsextension-h@@k\endcsname\relax
- \aftergroup\@s@bidi@AfterClass
- \else
- \aftergroup\@bidi@AfterClass
- \fi
- \endgroup{#2}%
-}
+\NewDocumentCommand \bidi@ResetPreventPackageFromLoading {}
+ {
+ \clist_map_function:NN \g__biditools_prevent_clist \reenable@package@load
+ \clist_gclear:N \g__biditools_prevent_clist
+ }
-\newcommand*{\@bidi@AfterClass}[1]{%
- \bidi@set@load@hook{after}{#1.\@clsextension}}
-\newcommand*{\@s@bidi@AfterClass}[1]{%
- \begingroup
- \@ifclassloaded{#1}{%
- \aftergroup\@secondoftwo
- }{%
- \aftergroup\@bidi@AfterClass
- }%
- \endgroup
- {#1}%
-}
+\NewDocumentCommand \bidi@StorePreventPackageFromLoading { m }
+ { \edef #1 { \clist_use:Nn \g__biditools_prevent_clist { , } } }
+
+\NewDocumentCommand \bidi@UnPreventPackageFromLoading { s m }
+ {
+ \clist_set:Nx \l__biditools_package_clist { #2 }
+ \clist_map_inline:Nn \l__biditools_package_clist
+ {
+ \clist_if_in:NnT \g__biditools_prevent_clist { ##1 }
+ {
+ \clist_gremove_all:Nn \g__biditools_prevent_clist { ##1 }
+ \reenable@package@load { ##1 }
+ \IfBooleanT { #1 }
+ { \cs_undefine:c { g__biditools_exclude_package_##1_tl } }
+ }
+ }
+ }
-\newcommand*{\bidi@BeforePackage}[1]{%
- \bidi@set@load@hook{before}{#1.\@pkgextension}}
-\newcommand*{\bidi@AfterPackage}{%
- \@ifstar {\@s@bidi@AfterPackage}{%
- \@ifnextchar +\@@bidi@AfterPackage{%
- \@ifnextchar !\@@@bidi@AfterPackage\@bidi@AfterPackage
- }%
- }%
-}
-\newcommand*{\@@@bidi@AfterPackage}[2]{%
- \begingroup\ifx\csname #2.\@pkgextension-h@@k\endcsname\relax
- \aftergroup\@s@bidi@AfterPackage
- \else
- \aftergroup\bidi@AfterAtEndOfPackage
- \fi
- \endgroup{#2}%
-}
-\newcommand*{\bidi@AfterAtEndOfPackage}[1]{%
- \bidi@set@load@hook{lateafter}{#1.\@pkgextension}}
-\newcommand*{\@@bidi@AfterPackage}[2]{%
- \begingroup
- \expandafter\ifx\csname #2.\@pkgextension-h@@k\endcsname\relax
- \aftergroup\@s@bidi@AfterPackage
- \else
- \aftergroup\@bidi@AfterPackage
- \fi
- \endgroup{#2}%
-}
-\newcommand*{\@bidi@AfterPackage}[1]{%
- \bidi@set@load@hook{after}{#1.\@pkgextension}}
-\newcommand*{\@s@bidi@AfterPackage}[1]{%
- \begingroup
- \@ifpackageloaded{#1}{%
- \aftergroup\@secondoftwo
- }{%
- \aftergroup\@bidi@AfterPackage
- }%
- \endgroup
- {#1}%
-}
+\NewDocumentCommand \bidi@BeforeClosingMainAux { o m }
+ {
+ \hook_gput_code:nnn { enddocument / afterlastpage } { #1 }
+ {
+ \debug_suspend:
+ \RenewDocumentCommand \bidi@BeforeClosingMainAux { m } { ##1 }
+ \cs_set_eq:NN \__biditools_protected@write:Nnn \protected@write
+ \cs_set_eq:NN \protected@write \bidi@protected@immediate@write
+ #2
+ \cs_set_eq:NN \protected@write \__biditools_protected@write:Nnn
+ \debug_resume:
+ }
+ }
-\newcommand*{\bidi@excludedpackages}{}
-\let\bidi@excludedpackages\@empty
-\newcommand*{\bidi@saved@RequirePackage}{}
-\newcommand*{\bidi@PreventPackageFromLoading}{%
- \@ifstar{\@bidi@PreventPackageFromLoading\PackageInfo}%
- {\@bidi@PreventPackageFromLoading\PackageWarning}%
-}
-\newcommand*{\@bidi@PreventPackageFromLoading}[1]{%
- \@ifnextchar [%]
- {\@@bidi@PreventPackageFromLoading#1}{\@@bidi@PreventPackageFromLoading#1[]}%
-}
-\newcommand*{\@@bidi@PreventPackageFromLoading}{}
-
-\def\@@bidi@PreventPackageFromLoading#1[#2]#3{%
- \edef\reserved@b{\zap@space#3 \@empty}%
- \ifx \reserved@b\@empty
- #1{biditools}{%
- \string\bidi@PreventPackageFromLoading\space with empty packages\MessageBreak
- argument ignored%
- }%
- \else
- \ifx\bidi@excludedpackages\@empty
- \let\bidi@saved@RequirePackage\RequirePackage
- \let\RequirePackage\bidi@RequirePackage
- \def\reserved@a##1##{%
- \@latex@error
- {\noexpand \usepackage before \string\documentclass}%
- {\noexpand \usepackage may only appear in the document
- preamble, i.e.,\MessageBreak
- between \noexpand\documentclass and
- \string\begin{document}.}%
- \@gobble}%
- \ifx\reserved@a\usepackage\else
- \ifx\usepackage\bidi@saved@RequirePackage\else
- \PackageWarning{biditools}{%
- Maybe serious problem: unexpected definition of\MessageBreak
- \string\usepackage
- }%
- \fi
- \let\usepackage\RequirePackage
- \fi
- \fi
- \expandafter\@for \expandafter\reserved@a\expandafter:\expandafter=%
- \reserved@b\do {%
- \ifx\reserved@a\@empty
- #1{biditools}{%
- empty package argument for
- \string\bidi@PreventPackageFromLoading\MessageBreak
- ignored%
- }%
- \else
- \expandafter\@ifpackageloaded\expandafter{\reserved@a}{%
- #1{biditools}{%
- package `\reserved@a' already loaded.\MessageBreak
- Cannot prevent it from beeing loaded%
- }%
- }{%
- \edef\bidi@excludedpackages{\bidi@excludedpackages,%
- \reserved@a}%
- \if\relax\detokenize{#2}\relax\else
- \@ifundefined{bidi@exclude@package@\reserved@a @do}{%
- \@namedef{bidi@exclude@package@\reserved@a @do}{}%
- }{}%
- \expandafter\def
- \csname bidi@exclude@package@\reserved@a
- @do\expandafter\expandafter\expandafter\endcsname
- \expandafter\expandafter\expandafter{%
- \csname bidi@exclude@package@\reserved@a @do\endcsname
- #2%
- }%
- \fi
- }%
- \fi
- }%
- \ifx\bidi@excludedpackages\@empty
- \bidi@ResetPreventPackageFromLoading
- \fi
- \fi
-}
+\NewDocumentCommand \bidi@AfterReadingMainAux { o m }
+ {
+ \hook_gput_code:nnn { enddocument / afteraux } { #1 }
+ {
+ \debug_suspend:
+ \RenewDocumentCommand \bidi@AfterReadingMainAux { m } { ##1 }
+ \cs_set_eq:NN \__biditools_protected@write:Nnn \protected@write
+ \cs_set_eq:NN \protected@write \bidi@protected@immediate@write
+ #2
+ \cs_set_eq:NN \protected@write \__biditools_protected@write:Nnn
+ \debug_resume:
+ }
+ }
-\@onlypreamble\bidi@PreventPackageFromLoading
-\newcommand*{\bidi@ResetPreventPackageFromLoading}{%
- \let\bidi@excludedpackages\@empty
- \ifx\RequirePackage\bidi@RequirePackage
- \ifx\usepackage\RequirePackage
- \let\usepackage\bidi@saved@RequirePackage
- \fi
- \let\RequirePackage\bidi@saved@RequirePackage
- \fi
-}
-\@onlypreamble\bidi@ResetPreventPackageFromLoading
-\newcommand*{\bidi@StorePreventPackageFromLoading}[1]{%
- \let#1\bidi@excludedpackages
+\clist_new:N \l__biditools_file_patch_clist
+
+\NewDocumentCommand \ApplyPatchToFiles { m O{def} O{bidi} }
+ {
+ \clist_set:Nx \l__biditools_file_patch_clist { #1 }
+ \clist_map_inline:Nn \l__biditools_file_patch_clist
+ {
+ \ApplyPatchToFile { ##1 } [ #2 ] [ #3 ]
+ }
+ \clist_clear:N \l__biditools_file_patch_clist
+ }
+
+\clist_new:N \l__biditools_package_patch_clist
+
+\NewDocumentCommand \ApplyPatchToPackages { m O{bidi} }
+ {
+ \clist_set:Nx \l__biditools_package_patch_clist { #1 }
+ \clist_map_inline:Nn \l__biditools_package_patch_clist
+ {
+ \ApplyPatchToPackage { ##1 } [ #2 ]
+ }
+ \clist_clear:N \l__biditools_package_patch_clist
+ }
+
+\clist_new:N \l__biditools_class_patch_clist
+
+\NewDocumentCommand \ApplyPatchToClasses { m O{bidi} }
+ {
+ \clist_set:Nx \l__biditools_class_patch_clist { #1 }
+ \clist_map_inline:Nn \l__biditools_class_patch_clist
+ {
+ \ApplyPatchToClass { ##1 } [ #2 ]
+ }
+ \clist_clear:N \l__biditools_class_patch_clist
+ }
+
+\NewDocumentCommand \ApplyPatchToClassesIfPackageLoadedF { m m O{bidi} }
+ {
+ \clist_set:Nx \l__biditools_class_patch_clist { #1 }
+ \clist_map_inline:Nn \l__biditools_class_patch_clist
+ {
+ \ApplyPatchToClassIfPackageLoadedF { ##1 } { #2 } [ #3 ]
+ }
+ \clist_clear:N \l__biditools_class_patch_clist
+ }
+\ExplSyntaxOff
+
+\newcommand*{\bidi@ReplaceInput}{\declare@file@substitution}
+\newcommand*{\bidi@UnReplaceInput}
+{\undeclare@file@substitution}
+\newcommand*{\bidi@ReplacePackage}[2]{%
+ \declare@file@substitution{#1.\@pkgextension}{#2.\@pkgextension}%
}
-\@onlypreamble\bidi@StorePreventPackageFromLoading
-\newcommand*{\bidi@UnPreventPackageFromLoading}{%
- \@ifstar {\@tempswatrue\@bidi@UnPreventPackageFromLoading}%
- {\@tempswafalse\@bidi@UnPreventPackageFromLoading}%
+\newcommand*{\bidi@UnReplacePackage}[1]{%
+ \undeclare@file@substitution{#1.\@pkgextension}%
}
-
-\newcommand*{\@bidi@UnPreventPackageFromLoading}[1]{%
- \edef\reserved@b{\zap@space#1 \@empty}%
- \if@tempswa
- \@for\reserved@a:=\reserved@b\do {%
- \ifx\reserved@a\@empty \else
- \ifcsname bidi@exclude@package@\reserved@a @do\endcsname
- \expandafter\let
- \csname bidi@exclude@package@\reserved@a @do\endcsname
- \undefined
- \fi
- \fi
- }%
- \fi
- \ifcsname bidi@excludedpackages\endcsname
- \let\reserved@a\bidi@excludedpackages
- \let\bidi@excludedpackages\@empty
- \expandafter\@for\expandafter\reserved@c
- \expandafter:\expandafter=\reserved@a
- \do{%
- \ifx\reserved@c\@empty\else
- \@expandtwoargs\in@{,\reserved@c,}{,\reserved@b,}%
- \ifin@
- \else
- \edef\bidi@excludedpackages{%
- \bidi@excludedpackages,\reserved@c
- }%
- \fi
- \fi
- }%
- \ifx\bidi@excludedpackages\@empty\bidi@ResetPreventPackageFromLoading\fi
- \fi
+\newcommand*{\bidi@ReplaceClass}[2]{%
+ \declare@file@substitution{#1.\@clsextension}{#2.\@clsextension}%
}
-
-\newcommand*{\bidi@RequirePackage}[2][]{%
- \let\reserved@c\@empty
- \let\reserved@d\@empty
- \edef\reserved@b{\zap@space#2 \@empty}%
- \expandafter\@for\expandafter\reserved@b\expandafter:\expandafter=\reserved@b
- \do {%
- \begingroup
- \@tempswatrue
- \@for\reserved@a:=\bidi@excludedpackages\do {%
- \ifx\reserved@a\reserved@b
- \@tempswafalse
- \fi
- }%
- \if@tempswa
- \xdef\reserved@c{\reserved@c,\reserved@b}%
- \else
- \ifx\reserved@b\@empty\else
- \PackageInfo{biditools}{Excluding package `\reserved@b'\MessageBreak
- from loading}%
- \@ifundefined{bidi@exclude@package@\reserved@b @do}{%
- }{%
- \expandafter\g@addto@macro\expandafter\reserved@d
- \csname bidi@exclude@package@\reserved@b @do\endcsname
- }%
- \fi
- \fi
- \endgroup
- }%
- \ifx\reserved@c\@empty
- \let\reserved@a\bidi@gobbleopt
- \else
- \edef\reserved@a{\noexpand\bidi@saved@RequirePackage[#1]{%
- \expandafter\@gobble\reserved@c\@empty}}%
- \fi
- \expandafter\reserved@d
- \reserved@a
+\newcommand*{\bidi@UnReplaceClass}[1]{%
+ \undeclare@file@substitution{#1.\@clsextension}%
}
-
-\newcommand{\bidi@gobbleopt}[1][]{}
-\AtEndDocument{%
- \let\bidi@saved@checkend=\@checkend
- \renewcommand*{\@checkend}[1]{%
- \def\reserved@a{#1}\def\reserved@b{document}%
- \bidi@saved@checkend{#1}%
- \ifx\reserved@a\reserved@b
- \let\bidi@saved@clearpage=\clearpage
- \renewcommand*{\clearpage}{\bidi@saved@clearpage
- \bidi@hook@bcma
- \bidi@restore@newpage
- \let\clearpage=\bidi@saved@clearpage}%
- \fi%
- \let\bidi@saved@dofilelist\@dofilelist
- \def\@dofilelist{%
- \bidi@hook@acma
- \let\@dofilelist\bidi@saved@dofilelist
- \bidi@saved@dofilelist
- }%
- }%
+\newcommand*{\bidi@BeforeFile}[1]{%
+ \AddToHook{file/#1/before}%
}
-
-\newcommand*{\bidi@saved@checkend}{}
-\newcommand*{\bidi@saved@dofilelist}{}
-\newcommand*{\bidi@redefine@newpage}{%
- \let\bidi@saved@newpage\newpage
- \def\bidi@restore@newpage{%
- \renewcommand*{\newpage}{%
- \PackageWarningNoLine{%
- biditools%
- }{%
- \string\newpage\space at main aux file!\MessageBreak
- You have output material at the main aux file.\MessageBreak
- Note, that the \string\bidi@BeforeClosingMainAux\space commands\MessageBreak
- are processed before the output from aux file%
- }%
- \let\newpage\bidi@saved@newpage
- \newpage
- }%
- }%
- \renewcommand*{\newpage}{%
- \PackageError{%
- biditools%
- }{%
- \string\newpage\space at \string\bidi@BeforeClosingMainAux
- }{%
- You should never use \string\newpage\space or
- \string\clear(double)page or other output material at the\MessageBreak
- argument of \string\bidi@BeforeClosingMainAux!\MessageBreak
- If you'll continue, the \string\newpage\space will be ignored to
- avoid corruption of\MessageBreak
- every prior use of \string\bidi@BeforeClosingMainAux.
- }%
- }%
+\newcommand*{\bidi@AfterFile}[1]{%
+ \AddToHook{file/#1/after}%
}
-
-\newcommand*{\bidi@restore@newpage}{}
-\newcommand*{\bidi@hook@bcma}{}
-\newcommand*{\bidi@hook@acma}{}
-\newcommand*{\bidi@BeforeClosingMainAux}{%
- \ifx\bidi@hook@bcma\@empty
- \gdef\bidi@hook@bcma{%
- \renewcommand*{\bidi@BeforeClosingMainAux}[1]{####1}%
- \let\protected@write\bidi@protected@immediate@write
- \bidi@redefine@newpage
- }%
- \fi
- \g@addto@macro\bidi@hook@bcma%
+\newcommand*{\bidi@BeforeClass}[1]{%
+ \bidi@BeforeFile{#1.\@clsextension}%
}
-
-\newcommand*{\bidi@AfterReadingMainAux}{%
- \ifx\bidi@hook@acma\@empty
- \gdef\bidi@hook@acma{%
- \renewcommand*{\bidi@AfterReadingMainAux}[1]{####1}%
- \let\protected@write\bidi@protected@immediate@write
- }%
- \fi
- \g@addto@macro\bidi@hook@acma%
+\newcommand*{\bidi@BeforePackage}[1]{%
+ \bidi@BeforeFile{#1.\@pkgextension}%
}
\long\def\bidi@protected@immediate@write#1#2#3{%
@@ -1765,79 +1587,126 @@ ill-advised in the old versions of bidi package.%
\if@nobreak\ifvmode\nobreak\fi\fi
}
-\def\bidi@patch@counter{0}%
-\if@bidi@csundef{numexpr}{%
- \def\bidi@patch@stepcounter{%
- \begingroup
- \count@\bidi@patch@counter\relax
- \advance\count@\@ne\relax
- \edef\x{\endgroup
- \noexpand\def\noexpand\bidi@patch@counter{\the\count@}%
- }%
- \x
- }%
-}{%
- \def\bidi@patch@stepcounter{%
- \edef\bidi@patch@counter{%
- \the\numexpr\bidi@patch@counter+\@ne\relax
- }%
- }%
-}
-\def\bidi@patch@list{}
-\def\bidi@patch@Add{%
- \bidi@appto\bidi@patch@list
-}
\def\bidi@patch@AfterPackage#1{%
\@ifpackageloaded{#1}{%
\@firstofone
}{%
- \@bidi@patch@AfterPackage{#1}%
+ \AddToHook{package/#1/after}%
}%
}
-\def\@bidi@patch@AfterPackage#1{%
- \edef\bidi@patch@temp{#1}%
- \bidi@patch@stepcounter
- \expandafter\bidi@patch@@AfterPackage
- \csname @bidi@patch@\bidi@patch@counter\expandafter\endcsname{%
- \bidi@patch@temp
+
+\def\bidi@patch@AfterFile#1{%
+ \IfFileLoadedTF{#1}{%
+ \@firstofone
+ }{%
+ \AddToHook{file/#1/after}%
}%
}
-\def\bidi@patch@@AfterPackage#1#2#3{%
- \begingroup
- \toks@{#3}%
- \xdef\bidi@patch@gtemp{%
- \noexpand\@ifpackageloaded{#2}{%
- \noexpand\let\noexpand#1\noexpand\relax
- \the\toks@
- }{}%
+
+\NewDocumentCommand \ApplyPatchToFile { m O{def} O{bidi} }
+ {
+ \bidi@patch@AfterFile{#1.#2}{%
+ \ifnum\catcode`\@=11
+ \input{#1-xetex-#3.def}%
+ \else
+ \bidi@storecatcode\@
+ \makeatletter
+ \input{#1-xetex-#3.def}%
+ \bidi@restorecatcode\@
+ \fi
}%
- \endgroup
- \let#1\bidi@patch@gtemp
- \bidi@patch@Add#1%
- \bidi@patch@try{bidi@AfterPackage}{#2}#1%
-}
+ }
-\def\bidi@patch@try#1#2#3{%
- \if@bidi@csundef{#1}{}{%
- \csname #1\endcsname{#2}{#3}%
- }%
-}
+\NewDocumentCommand \ApplyPatchCodeToFile { m +m O{def} }
+ {
+ \bidi@patch@AfterFile{#1.#3}{#2}%
+ }
+
+\NewDocumentCommand \ApplyPatchToFilesIfPackageLoadedF { m m O{def} O{bidi} }
+ {
+ \AddToHook{begindocument/before}{%
+ \IfPackageLoadedF{#1}{%
+ \ApplyPatchToFiles{#2}[#3][#4]%
+ }%
+ }
+ }
-\AtBeginDocument{\bidi@patch@list}
-
-\bidi@AtEndPreamble{\bidi@patch@list}%
-
-\bidi@AfterEndPreamble{%
- \let\bidi@patch@OrgIfPackageLoaded\@ifpackageloaded
- \let\bidi@patch@OrgIfPackageLater\@ifpackagelater
- \let\bidi@patch@OrgIfClassLoaded\@ifclassloaded
- \let\bidi@patch@OrgIfClassLater\@ifclasslater
- \bidi@patch@list
- \let\@ifpackageloaded\bidi@patch@OrgIfPackageLoaded
- \let\@ifpackagelater\bidi@patch@OrgIfPackageLater
- \let\@ifclassloaded\bidi@patch@OrgIfClassLoaded
- \let\@ifclasslater\bidi@patch@OrgIfClassLater
-}%
+\NewDocumentCommand \ApplyPatchToClassIfPackageLoadedF { m m O{bidi} }
+ {
+ \AddToHook{begindocument/before}{%
+ \IfPackageLoadedF{#2}{%
+ \ifnum\catcode`\@=11
+ \@ifclassloaded{#1}{%
+ \input{#1-xetex-#3.def}%
+ }{}%
+ \else
+ \bidi@storecatcode\@
+ \makeatletter
+ \@ifclassloaded{#1}{%
+ \input{#1-xetex-#3.def}%
+ }{}%
+ \bidi@restorecatcode\@
+ \fi
+ }%
+ }
+ }
+
+\NewDocumentCommand \ApplyPatchToPackageIfPackageLoadedF { m m O{bidi} }
+ {
+ \AddToHook{begindocument/before}{%
+ \IfPackageLoadedF{#2}{%
+ \IfPackageLoadedT{#1}{%
+ \ifnum\catcode`\@=11
+ \input{#1-xetex-#3.def}%
+ \else
+ \bidi@storecatcode\@
+ \makeatletter
+ \input{#1-xetex-#3.def}%
+ \bidi@restorecatcode\@
+ \fi
+ }%
+ }%
+ }
+ }
+
+\NewDocumentCommand \ApplyPatchIfPackageLoaded { m +m +m }
+ {
+ \AddToHook{begindocument/before}{%
+ \ifnum\catcode`\@=11
+ \@ifpackageloaded{#1}{#2}{#3}%
+ \else
+ \bidi@storecatcode\@
+ \makeatletter
+ \@ifpackageloaded{#1}{#2}{#3}%
+ \bidi@restorecatcode\@
+ \fi
+ }
+ }
+
+\NewDocumentCommand \ApplyPatchIfPackageLoadedT { m +m }
+ {
+ \ApplyPatchIfPackageLoaded{#1}{#2}{}%
+ }
+
+\NewDocumentCommand \ApplyPatchIfPackageLoadedF { m +m }
+ {
+ \ApplyPatchIfPackageLoaded{#1}{}{#2}%
+ }
+
+\NewDocumentCommand \ApplyPatchToPackage { m O{bidi} }
+ {
+ \bidi@patch@AfterPackage{#1}{\input{#1-xetex-#2.def}}%
+ }
+
+\NewDocumentCommand \ApplyPatchCodeToPackage { m +m }
+ {
+ \bidi@patch@AfterPackage{#1}{#2}%
+ }
+
+\NewDocumentCommand \ApplyPatchToClass { m O{bidi} }
+ {
+ \@ifclassloaded{#1}{\input{#1-xetex-#2.def}}{}%
+ }
\endinput
%%
%% End of file `biditools.sty'.
diff --git a/Master/texmf-dist/tex/xelatex/bidi/biditufte-book.cls b/Master/texmf-dist/tex/xelatex/bidi/biditufte-book.cls
index b327652c291..c9b831df291 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/biditufte-book.cls
+++ b/Master/texmf-dist/tex/xelatex/bidi/biditufte-book.cls
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/biditufte-handout.cls b/Master/texmf-dist/tex/xelatex/bidi/biditufte-handout.cls
index 61a97fcbc6b..a33ead35015 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/biditufte-handout.cls
+++ b/Master/texmf-dist/tex/xelatex/bidi/biditufte-handout.cls
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidituftefloat.sty b/Master/texmf-dist/tex/xelatex/bidi/bidituftefloat.sty
index 7b010707b1e..47a0fea600f 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/bidituftefloat.sty
+++ b/Master/texmf-dist/tex/xelatex/bidi/bidituftefloat.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -38,7 +38,7 @@
%% Right brace \} Tilde \~}
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{bidituftefloat}[2017/05/19 v0.2
+\ProvidesPackage{bidituftefloat}[2025/01/03 v0.3
bidi implementation of tufte float]
\RequirePackage{xifthen}
\newcommand{\@bidituftefloat@pkgname}{bidituftefloat}
@@ -64,7 +64,7 @@ bidi implementation of tufte float]
\setboolean{@bidituftefloat@twoside}{false}%
\setboolean{@bidituftefloat@symmetric}{false}%
}
-\@ifclassloaded{book}{\ExecuteOptions{twoside}}{}
+\IfClassLoadedT{book}{\ExecuteOptions{twoside}}
\newboolean{@bidituftefloat@debug}
\newcommand*{\@bidituftefloat@caption@justification}{\@bidituftefloat@justification@autodetect}
\ProcessOptions
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidituftegeneralstructure.sty b/Master/texmf-dist/tex/xelatex/bidi/bidituftegeneralstructure.sty
index d412c8dcd0d..8f55a2ecf18 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/bidituftegeneralstructure.sty
+++ b/Master/texmf-dist/tex/xelatex/bidi/bidituftegeneralstructure.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidituftehyperref.sty b/Master/texmf-dist/tex/xelatex/bidi/bidituftehyperref.sty
index 4b9e45f0eee..d8c7bb64d53 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/bidituftehyperref.sty
+++ b/Master/texmf-dist/tex/xelatex/bidi/bidituftehyperref.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidituftesidenote.sty b/Master/texmf-dist/tex/xelatex/bidi/bidituftesidenote.sty
index 9af003b25a4..da3db6ce45a 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/bidituftesidenote.sty
+++ b/Master/texmf-dist/tex/xelatex/bidi/bidituftesidenote.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidituftetitle.sty b/Master/texmf-dist/tex/xelatex/bidi/bidituftetitle.sty
index b711a3f2397..c92b30bcf50 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/bidituftetitle.sty
+++ b/Master/texmf-dist/tex/xelatex/bidi/bidituftetitle.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidituftetoc.sty b/Master/texmf-dist/tex/xelatex/bidi/bidituftetoc.sty
index 243e16a7d1b..1d988cff49b 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/bidituftetoc.sty
+++ b/Master/texmf-dist/tex/xelatex/bidi/bidituftetoc.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/boek-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/boek-xetex-bidi.def
index e0eacae72f7..91c4f30b030 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/boek-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/boek-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/boek3-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/boek3-xetex-bidi.def
index 5b0a81540b7..72ea9c0b77e 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/boek3-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/boek3-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/book-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/book-xetex-bidi.def
index 9de7fb61e6e..efd2ca721af 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/book-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/book-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{book-xetex-bidi.def}[2017/06/09 v1.0 bidi adaptations for standard book class for XeTeX engine]
+\ProvidesFile{book-xetex-bidi.def}[2025/01/03 v1.1 bidi adaptations for standard book class for XeTeX engine]
\renewenvironment{theindex}
{\if@twocolumn
\@restonecolfalse
@@ -53,7 +53,7 @@
\parskip\z@ \@plus .3\p@\relax
\let\item\@idxitem}
{\if@restonecol\onecolumn\else\clearpage\fi}
-\@ifclassloaded{bookest}{}{%
+\IfClassLoadedF{bookest}{%
\if@titlepage
\renewcommand\maketitle{\begin{titlepage}%
\let\footnotesize\small
diff --git a/Master/texmf-dist/tex/xelatex/bidi/bookest-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/bookest-xetex-bidi.def
index c4b7d7cb2d0..238393ea1f1 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/bookest-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/bookest-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/breqn-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/breqn-xetex-bidi.def
index 5458c0bc511..a4b5b17d081 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/breqn-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/breqn-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/cals-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/cals-xetex-bidi.def
index cc1166da39f..cfe908bf9f3 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/cals-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/cals-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/caption-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/caption-xetex-bidi.def
index 563d51ee8c5..ff94b0c4705 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/caption-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/caption-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/caption3-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/caption3-xetex-bidi.def
index 94d37048e65..75fd2393781 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/caption3-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/caption3-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/color-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/color-xetex-bidi.def
index ca69fd08e2d..238f4c84041 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/color-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/color-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/colortbl-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/colortbl-xetex-bidi.def
index 30ebaec8e77..422d2716337 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/colortbl-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/colortbl-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/combine-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/combine-xetex-bidi.def
index 3b6490e7640..20298fc8e82 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/combine-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/combine-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/crop-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/crop-xetex-bidi.def
index c2c36fd5346..397c5b9cad9 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/crop-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/crop-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,9 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{crop-xetex-bidi.def}[2013/04/10 v0.2 bidi adaptations for crop package for XeTeX engine]
+\ProvidesFile{crop-xetex-bidi.def}[2025/01/03 v0.3 bidi adaptations for crop package for XeTeX engine]
+\IfClassLoadedT{memoir}{\endinput}
+\RequirePackage{graphicx}
\renewcommand*\CROP@@ulc{%
\if@RTLmain%
\begin{picture}(0,0)
diff --git a/Master/texmf-dist/tex/xelatex/bidi/cuted-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/cuted-xetex-bidi.def
index 535d08b12cf..f11a8c75e39 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/cuted-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/cuted-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/cutwin-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/cutwin-xetex-bidi.def
index da52c835b90..177f5660bd5 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/cutwin-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/cutwin-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/cvthemebidicasual.sty b/Master/texmf-dist/tex/xelatex/bidi/cvthemebidicasual.sty
index 0a20184e0c3..edf46d38918 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/cvthemebidicasual.sty
+++ b/Master/texmf-dist/tex/xelatex/bidi/cvthemebidicasual.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/cvthemebidiclassic.sty b/Master/texmf-dist/tex/xelatex/bidi/cvthemebidiclassic.sty
index 6d1f5dfe32a..7bf5198c5f4 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/cvthemebidiclassic.sty
+++ b/Master/texmf-dist/tex/xelatex/bidi/cvthemebidiclassic.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/dblfnote-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/dblfnote-xetex-bidi.def
index b6f6f6a7822..85dc7577f76 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/dblfnote-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/dblfnote-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/diagbox-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/diagbox-xetex-bidi.def
index 1236fb7ab34..4ec901c9f88 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/diagbox-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/diagbox-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/draftwatermark-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/draftwatermark-xetex-bidi.def
index e39e5f7a278..7b63d6665c1 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/draftwatermark-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/draftwatermark-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/empheq-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/empheq-xetex-bidi.def
index 3bc867634f0..d58d3e1da3c 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/empheq-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/empheq-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/eso-pic-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/eso-pic-xetex-bidi.def
index ac0ff9de79a..559aaf132ec 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/eso-pic-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/eso-pic-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/extarticle-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/extarticle-xetex-bidi.def
index 192638a5a76..85251feeed9 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/extarticle-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/extarticle-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{extarticle-xetex-bidi.def}[2017/06/09 v0.4 bidi adaptations for extarticle class for XeTeX engine]
+\ProvidesFile{extarticle-xetex-bidi.def}[2025/01/05 v0.5 bidi adaptations for extarticle class for XeTeX engine]
\renewcommand*\l@section[2]{%
\ifnum \c@tocdepth >\z@
\addpenalty\@secpenalty
@@ -84,14 +84,15 @@
\nobreak
\vskip 3ex
\@afterheading}
- \def\@spart#1{%
- {\parindent \z@ \if@RTL\raggedleft\else\raggedright\fi
- \interlinepenalty \@M
- \normalfont
- \huge \bfseries #1\par}%
- \nobreak
- \vskip 3ex
- \@afterheading}
+\ApplyPatchIfPackageLoaded{nameref}{%
+ \bidi@patchcmd\NR@spart\raggedright{%
+ \if@RTL\raggedleft\else\raggedright\fi
+ }{}{\bidi@warningnoline{Oops! patching `\string\NR@spart' failed}}%
+}{%
+ \bidi@patchcmd\@spart\raggedright{%
+ \if@RTL\raggedleft\else\raggedright\fi
+ }{}{\bidi@warningnoline{Oops! patching `\string\@spart' failed}}%
+}
\renewenvironment{thebibliography}[1]
{\section*{\refname
\@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}%
diff --git a/Master/texmf-dist/tex/xelatex/bidi/extbook-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/extbook-xetex-bidi.def
index 507d040147f..d212d4e29e8 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/extbook-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/extbook-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/extletter-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/extletter-xetex-bidi.def
index a1951b91bb0..340a96d8efe 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/extletter-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/extletter-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/extrafootnotefeatures-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/extrafootnotefeatures-xetex-bidi.def
index 5d5dc102f2d..a8f45f26533 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/extrafootnotefeatures-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/extrafootnotefeatures-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{extrafootnotefeatures-xetex-bidi.def}[2023/08/02 v2.6 bidi extra footnote features for XeTeX engine]
+\ProvidesFile{extrafootnotefeatures-xetex-bidi.def}[2025/01/03 v2.7 bidi extra footnote features for XeTeX engine]
\newdimen\bidi@columnwidth
\def\bidi@floathook{%
\bidi@columnwidth\columnwidth
@@ -260,7 +260,7 @@
\@bidi@after@Hy@hyperfootnotes
\@ifstar\bidi@star@footmarkwidth\bidi@normal@footmarkwidth
}
-\@ifclassloaded{memoir}{\let\plainfootnotes\normalfootnotes}{}
+\IfClassLoadedT{memoir}{\let\plainfootnotes\normalfootnotes}
\bidi@ensure@newcommand*{\setSingleSpace}[1]{%
\def\m@m@singlespace{#1}%
\def\m@m@footnote@spacing{#1}%
diff --git a/Master/texmf-dist/tex/xelatex/bidi/extreport-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/extreport-xetex-bidi.def
index 12ec0f518d4..d48c40edeb5 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/extreport-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/extreport-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/fancybox-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/fancybox-xetex-bidi.def
index bc683972406..40c2d328926 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/fancybox-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/fancybox-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/fancyhdr-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/fancyhdr-xetex-bidi.def
index cdc3c5724dd..0792c5ded1c 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/fancyhdr-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/fancyhdr-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,21 +37,19 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{fancyhdr-xetex-bidi.def}[2018/02/15 v0.7 bidi adaptations for fancyhdr package for XeTeX engine]
+\ProvidesFile{fancyhdr-xetex-bidi.def}[2025/01/07 v0.9 bidi adaptations for fancyhdr package for XeTeX engine]
\let\f@nch@everypar\everypar
-\def\f@nch@head#1#2#3#4#5{#1\hbox to\headwidth{\f@nch@reset
- \f@nch@vbox\headheight{\hbox
- {\rlap{\parbox[b]{\headwidth}{\bidi@raggedright#2}}\hfill
- \parbox[b]{\headwidth}{\centering#3}\hfill
- \llap{\parbox[b]{\headwidth}{\bidi@raggedleft#4}}}\headrule}}#5}
+\bidi@patchcmd\f@nch@hfbox@center\raggedright\bidi@raggedright
+{}{\bidi@warningnoline{Oops! patching `\string\f@nch@hfbox@center' failed}}
+\bidi@patchcmd\f@nch@hfbox@center\raggedleft\bidi@raggedleft
+{}{\bidi@warningnoline{Oops! patching `\string\f@nch@hfbox@center' failed}}
-\def\f@nch@foot#1#2#3#4#5{#1\hbox to\headwidth{\f@nch@reset
- \f@nch@vbox\footskip{\footrule
- \hbox{\rlap{\parbox[t]{\headwidth}{\bidi@raggedright#2}}\hfill
- \parbox[t]{\headwidth}{\centering#3}\hfill
- \llap{\parbox[t]{\headwidth}{\bidi@raggedleft#4}}}}}#5}
+\bidi@patchcmd\f@nch@hfbox@fit\raggedright\bidi@raggedright
+{}{\bidi@warningnoline{Oops! patching `\string\f@nch@hfbox@fit' failed}}
+\bidi@patchcmd\f@nch@hfbox@fit\raggedleft\bidi@raggedleft
+{}{\bidi@warningnoline{Oops! patching `\string\f@nch@hfbox@fit' failed}}
\endinput
%%
diff --git a/Master/texmf-dist/tex/xelatex/bidi/fix2col-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/fix2col-xetex-bidi.def
index 099650292a9..2916be05aa3 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/fix2col-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/fix2col-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/fleqn-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/fleqn-xetex-bidi.def
index 18fd1dddfe0..8da7d84bba3 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/fleqn-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/fleqn-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,8 +37,8 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{fleqn-xetex-bidi.def}[2010/03/01 v0.1 bidi adaptations for fleqn tag for XeTeX engine]
-\renewcommand\[{\relax
+\ProvidesFile{fleqn-xetex-bidi.def}[2024/12/07 v0.2 bidi adaptations for fleqn tag for XeTeX engine]
+\DeclareRobustCommand\[{\relax
\ifmmode\@badmath
\else
\begin{trivlist}%
@@ -48,7 +48,7 @@
\hb@xt@\linewidth\bgroup \beginL$\m@th\displaystyle %$
\hskip\mathindent\bgroup
\fi}
-\renewcommand\]{\relax
+\DeclareRobustCommand\]{\relax
\ifmmode
\egroup $\hfil% $
\endL\egroup
diff --git a/Master/texmf-dist/tex/xelatex/bidi/float-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/float-xetex-bidi.def
index dad3b80bc06..04bccfef6e4 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/float-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/float-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/floatrow-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/floatrow-xetex-bidi.def
index cdef5f8ea9c..78988123570 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/floatrow-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/floatrow-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,8 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{floatrow-xetex-bidi.def}[2013/04/08 v0.1 bidi adaptations for floatrow package for XeTeX engine]
+\ProvidesFile{floatrow-xetex-bidi.def}[2025/01/03 v0.2 bidi adaptations for floatrow package for XeTeX engine]
+\RequirePackage{color}
\renewcommand\flnew@within[1]{\@addtoreset{\FB@captype}{#1}%
\expandafter\edef\csname the\FB@captype\endcsname{%
\expandafter\noexpand\csname
diff --git a/Master/texmf-dist/tex/xelatex/bidi/flowfram-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/flowfram-xetex-bidi.def
index 2b2a69024b3..e61a88c53c2 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/flowfram-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/flowfram-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{flowfram-xetex-bidi.def}[2018/09/29 v0.5 bidi adaptations for flowfram package for XeTeX engine]
+\ProvidesFile{flowfram-xetex-bidi.def}[2025/01/03 v0.6 bidi adaptations for flowfram package for XeTeX engine]
\def\@outputdblcol{%
\@nxtcol=\c@thisframe
\c@curpg=\c@page
@@ -154,7 +154,7 @@
{\csname colheight\romannumeral#1\endcsname}{%
\expandafter\box\csname column\romannumeral#1\endcsname}%
}}}
-\@ifclassloaded{book}{%
+\IfClassLoadedT{book}{%
\renewcommand\theequation
{\ifnum \c@chapter>\z@ \thechapter\@SepMark\fi \@arabic\c@equation}
\renewcommand \thefigure
@@ -166,8 +166,8 @@
\renewcommand\thesubsection {\thesection\@SepMark\@arabic\c@subsection}
\renewcommand\thesubsubsection{\thesubsection \@SepMark\@arabic\c@subsubsection}
\renewcommand\theparagraph {\thesubsubsection\@SepMark\@arabic\c@paragraph}
-\renewcommand\thesubparagraph {\theparagraph\@SepMark\@arabic\c@subparagraph}}{}
-\@ifclassloaded{report}{%
+\renewcommand\thesubparagraph {\theparagraph\@SepMark\@arabic\c@subparagraph}}
+\IfClassLoadedT{report}{%
\renewcommand\theequation
{\ifnum \c@chapter>\z@ \thechapter\@SepMark\fi \@arabic\c@equation}
\renewcommand \thefigure
@@ -179,7 +179,7 @@
\renewcommand\thesubsection {\thesection\@SepMark\@arabic\c@subsection}
\renewcommand\thesubsubsection{\thesubsection \@SepMark\@arabic\c@subsubsection}
\renewcommand\theparagraph {\thesubsubsection\@SepMark\@arabic\c@paragraph}
-\renewcommand\thesubparagraph {\theparagraph\@SepMark\@arabic\c@subparagraph}}{}
+\renewcommand\thesubparagraph {\theparagraph\@SepMark\@arabic\c@subparagraph}}
\renewcommand{\rotateframe}[2]{\if@ttb@rotate
\rotatebox{#1}{\if@RTL\beginL\fi#2\if@RTL\endL\fi}%
\else
diff --git a/Master/texmf-dist/tex/xelatex/bidi/footnote-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/footnote-xetex-bidi.def
index 787ca0a793f..8ee3da75968 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/footnote-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/footnote-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{footnote-xetex-bidi.def}[2023/01/18 v1.2 bidi footnote macros for XeTeX engine]
+\ProvidesFile{footnote-xetex-bidi.def}[2024/12/14 v1.3 bidi footnote macros for XeTeX engine]
\if@RTLmain\@RTL@footnotetrue\else\@RTL@footnotefalse\fi
\newif\ifbidi@autofootnoterule
\def\bidi@mpfootnoterule{\footnoterule}
@@ -47,7 +47,6 @@
\stepcounter{footdir@label}%
\zref@labelbyprops{\thefootdir@label}{abspage}%
}
-\newif\iffootdir@debug
\newcommand*{\debugfootnotedirection}{\footdir@debugtrue}
\newtoks\footdir@toks
\newcommand*{\footdir@debug}[1]{%
diff --git a/Master/texmf-dist/tex/xelatex/bidi/footnotebackref-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/footnotebackref-xetex-bidi.def
index 1cb6110cc9b..9173e919e0b 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/footnotebackref-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/footnotebackref-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/framed-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/framed-xetex-bidi.def
index ccac2243e83..02ef37a09ae 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/framed-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/framed-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/ftnright-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/ftnright-xetex-bidi.def
index 8050b819cd6..f3d313ddcba 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/ftnright-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/ftnright-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/geometry-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/geometry-xetex-bidi.def
index 8a428ba8b71..4b6a65345a5 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/geometry-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/geometry-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/graphicx-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/graphicx-xetex-bidi.def
index 37c53d92b16..925d4de55f2 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/graphicx-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/graphicx-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/hvfloat-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/hvfloat-xetex-bidi.def
index 367adb1f572..d267d46cc4d 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/hvfloat-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/hvfloat-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/hyperref-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/hyperref-xetex-bidi.def
index 9dacb459f51..111a6ca03e7 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/hyperref-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/hyperref-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{hyperref-xetex-bidi.def}[2018/11/11 v1.1 bidi adaptations for hyperref package for XeTeX engine]
+\ProvidesFile{hyperref-xetex-bidi.def}[2025/01/05 v1.4 bidi adaptations for hyperref package for XeTeX engine]
\AtBeginDocument{%
\def\contentsline#1#2#3#4{%
\ifx\\#4\\%
@@ -187,7 +187,7 @@
\fi
}%
}%
- \@ifpackageloaded{tabularx}{%
+ \ApplyPatchCodeToPackage{tabularx}{%
\let\HyOrg@TX@endtabularx\TX@endtabularx
\def\Hy@tabularx@hook{%
\let\@footnotetext\H@@footnotetext
@@ -206,9 +206,9 @@
}%
\endgroup
\let\TX@endtabularx\Hy@gtemp
- }{}%
- \@ifpackageloaded{longtable}{%
- \CheckCommand*{\LT@p@LTRftntext}[1]{%
+ }%
+ \ApplyPatchCodeToPackage{longtable}{%
+ \CheckCommand{\LT@p@LTRftntext}[1]{%
\edef\@tempa{%
\the\LT@p@ftn
\noexpand\LTRfootnotetext[\the\c@footnote]%
@@ -246,7 +246,7 @@
\fi
}%
}%
- \CheckCommand*{\LT@p@RTLftntext}[1]{%
+ \CheckCommand{\LT@p@RTLftntext}[1]{%
\edef\@tempa{%
\the\LT@p@ftn
\noexpand\RTLfootnotetext[\the\c@footnote]%
@@ -284,8 +284,8 @@
\fi
}%
}%
- }{}%
- \@ifpackageloaded{bidipoem}{%
+ }%
+ \ApplyPatchCodeToPackage{bidipoem}{%
\long\def\bidipoem@p@ftntext#1{%
\edef\@tempx{%
\the\bidipoem@p@ftn
@@ -379,7 +379,7 @@
\fi
}%
}%
- }{}%
+ }%
\let\HyOrg@maketitle\maketitle
\def\maketitle{%
\let\Hy@saved@footnotemark\@footnotemark
@@ -584,37 +584,6 @@
\def\XeTeX{Xe\TeX}%
\def\XeLaTeX{Xe\LaTeX}%
}
-\@ifpackageloaded{longtable}{%
- \begingroup
- \def\y{\LT@array}%
- \@ifundefined{scr@LT@array}{%
- \@ifundefined{adl@LT@array}{}{\def\y{\adl@LT@array}}%
- }{\def\y{\scr@LT@array}}%
- \long\def\x\refstepcounter#1#2\@sharp#3#4\@nil{%
- \expandafter\endgroup
- \expandafter\def\y[##1]##2{%
- \H@refstepcounter{#1}%
- \hyper@makecurrent{table}%
- \let\Hy@LT@currentHref\@currentHref
- #2\@sharp#####4%
- }%
- }%
- \expandafter\expandafter\expandafter\x\y[{#1}]{#2}\@nil
- \begingroup
- \def\x#1\ifvoid\LT@foot#2\fi#3\@nil{%
- \endgroup
- \def\LT@start{%
- #1%
- \ifvoid\LT@foot#2\fi
- \let\@currentHref\Hy@LT@currentHref
- \Hy@raisedlink{%
- \hyper@anchorstart{\@currentHref}\hyper@anchorend
- }%
- #3%
- }%
- }%
- \expandafter\x\LT@start\@nil
-}{}
\bidi@patchcmd\@TextField{%
\@pdfm@mark
}{%
diff --git a/Master/texmf-dist/tex/xelatex/bidi/imsproc-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/imsproc-xetex-bidi.def
index be113509d46..4e5ac5f138b 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/imsproc-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/imsproc-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/latex-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/latex-xetex-bidi.def
index e62072e180e..45944426281 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/latex-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/latex-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{latex-xetex-bidi.def}[2022/07/04 v1.4.9 bidi adaptations for `latex.ltx' for XeTeX engine]
+\ProvidesFile{latex-xetex-bidi.def}[2025/01/03 v1.5.2 bidi adaptations for `latex.ltx' for XeTeX engine]
\newcommand{\TeXXeTOn}{\TeXXeTstate\@ne}
\newcommand{\TeXXeTOff}{\TeXXeTstate\z@}
\TeXXeTOn
@@ -137,15 +137,25 @@
\setbox\tw@\hbox{\special{x:gsave}\special{x:scale -1 1}\rlap{\copy\z@}\special{x:grestore}}%
\hb@xt@\wd\z@{\kern\wd\z@\box\tw@\hss}%
}
+\if@bidi@csundef{XeTeX}{%
\bidi@newrobustcmd*{\XeTeX}{\LR{\leavevmode$\smash{\hbox{X\lower.5ex
- \hbox{\kern-.125em\bidi@reflect@box{E}}\kern-.1667em \TeX}}$}}
+ \hbox{\kern-.125em\bidi@reflect@box{E}}\kern-.1667em \TeX}}$}}%
+}{%
+\let\@bidi@orig@XeTeX\XeTeX
+\bidi@renewrobustcmd*{\XeTeX}{\LR{\@bidi@orig@XeTeX}}%
+}
+\if@bidi@csundef{XeLaTeX}{%
\bidi@newrobustcmd*{\XeLaTeX}{\LR{\leavevmode$\smash{\hbox{X\lower.5ex
- \hbox{\kern-.125em\bidi@reflect@box{E}}\kern-.1667em \LaTeX}}$}}
+ \hbox{\kern-.125em\bidi@reflect@box{E}}\kern-.1667em \LaTeX}}$}}%
+}{%
+\let\@bidi@orig@XeLaTeX\XeLaTeX
+\bidi@renewrobustcmd*{\XeLaTeX}{\LR{\@bidi@orig@XeLaTeX}}%
+}
\let\setRL=\setRTL
\let\setLR=\setLTR
\let\unsetRL=\setLTR
\def\bidi@tabular@RTLcases{\let\@halignto\@empty\@bidi@tabular@RTLcases}
-\@ifpackageloaded{array}{%
+\ApplyPatchIfPackageLoaded{array}{%
\def\@bidi@tabular@RTLcases{\@RTLtabtrue%
\leavevmode
\hbox \bgroup $\left.\col@sep\tabcolsep \let\d@llarbegin\begingroup
@@ -303,27 +313,25 @@
\renewcommand\raggedright{\if@bidi@list@minipage@parbox\bidi@orig@raggedleft\else\if@hboxRconstruct\bidi@orig@raggedleft\else\bidi@orig@raggedright\fi\fi}
\newcommand{\bidi@raggedright}{\if@RTL\raggedleft\else\raggedright\fi}
\newcommand{\bidi@raggedleft}{\if@RTL\raggedright\else\raggedleft\fi}
-\def\centerline#1{%
+\DeclareRobustCommand\centerline[1]{%
\if@RTL\@@line{\hss\beginR#1\endR\hss}
\else\@@line{\hss#1\hss}\fi}
-\def\leftline#1{%
+\def\bidi@orig@leftline#1{%
\if@RTL\@@line{\beginR#1\endR\hss}
\else\@@line{#1\hss}\fi}
-\def\rightline#1{%
+\def\bidi@orig@rightline#1{%
\if@RTL\@@line{\hss\beginR#1\endR}
\else\@@line{\hss#1}\fi}
-\let\bidi@orig@leftline\leftline
-\let\bidi@orig@rightline\rightline
-\def\leftline#1{\ifhmode\if@RTL\bidi@orig@rightline{#1}\else\bidi@orig@leftline{#1}\fi\else\if@bidi@list@minipage@parbox\bidi@orig@rightline{#1}\else\if@hboxRconstruct\bidi@orig@rightline{#1}\else\bidi@orig@leftline{#1}\fi\fi\fi}
-\def\rightline#1{\ifhmode\if@RTL\bidi@orig@leftline{#1}\else\bidi@orig@rightline{#1}\fi\else\if@bidi@list@minipage@parbox\bidi@orig@leftline{#1}\else\if@hboxRconstruct\bidi@orig@leftline{#1}\else\bidi@orig@rightline{#1}\fi\fi\fi}
-\def\bidirlap#1{\hb@xt@\z@{\if@RTL\hss\fi#1\if@RTL\else\hss\fi}}
-\def\bidillap#1{\hb@xt@\z@{\if@RTL\else\hss\fi#1\if@RTL\hss\fi}}
+\DeclareRobustCommand\leftline[1]{\ifhmode\if@RTL\bidi@orig@rightline{#1}\else\bidi@orig@leftline{#1}\fi\else\if@bidi@list@minipage@parbox\bidi@orig@rightline{#1}\else\if@hboxRconstruct\bidi@orig@rightline{#1}\else\bidi@orig@leftline{#1}\fi\fi\fi}
+\DeclareRobustCommand\rightline[1]{\ifhmode\if@RTL\bidi@orig@leftline{#1}\else\bidi@orig@rightline{#1}\fi\else\if@bidi@list@minipage@parbox\bidi@orig@leftline{#1}\else\if@hboxRconstruct\bidi@orig@leftline{#1}\else\bidi@orig@rightline{#1}\fi\fi\fi}
+\DeclareRobustCommand\bidirlap[1]{\hb@xt@\z@{\if@RTL\hss\fi#1\if@RTL\else\hss\fi}}
+\DeclareRobustCommand\bidillap[1]{\hb@xt@\z@{\if@RTL\else\hss\fi#1\if@RTL\hss\fi}}
\def\@hangfrom#1{\setbox\@tempboxa\hbox{{#1}}%
\hangindent \if@RTL-\else\fi\wd\@tempboxa\noindent\box\@tempboxa}
\def\narrower{%
\advance\if@RTL\rightskip\else\leftskip\fi\parindent
\advance\if@RTL\leftskip\else\rightskip\fi\parindent}
-\def\underline#1{%
+\DeclareRobustCommand\underline[1]{%
\relax
\ifmmode\@@underline{#1}%
\else
@@ -831,7 +839,7 @@ $\@@underline{\hbox{#1}}\m@th$\relax\fi\fi}
\let\bidi@saved@leqno=\leqno
\def\eqno{\ifnum\predisplaydirection<\z@ \bidi@saved@leqno \else \bidi@saved@eqno \fi}
\def\leqno{\ifnum\predisplaydirection<\z@ \bidi@saved@eqno \else \bidi@saved@leqno \fi}
-\@ifpackageloaded{amsmath}{}{
+\ApplyPatchIfPackageLoadedF{amsmath}{
\def\@eqnnum{{\normalfont \normalcolor \if@RTL\beginR\fi(\theequation)\if@RTL\endR\fi}}
}
\input{footnote-xetex-bidi.def}
@@ -844,182 +852,163 @@ $\@@underline{\hbox{#1}}\m@th$\relax\fi\fi}
\if@bidi@csundef{@idxitem}{}{%
\renewcommand\@idxitem{\par\hangindent \if@RTL-\fi40\p@}%
}
-\@ifpackageloaded{tocbasic}{\input{tocbasic-xetex-bidi.def}}{}
-\@ifclassloaded{article}{\@ifclassloaded{svmult}{}{\input{article-xetex-bidi.def}}}{}
-\@ifclassloaded{extarticle}{\input{extarticle-xetex-bidi.def}}{}
-\@ifclassloaded{artikel1}{\input{artikel1-xetex-bidi.def}}{}
-\@ifclassloaded{artikel2}{\input{artikel2-xetex-bidi.def}}{}
-\@ifclassloaded{artikel3}{\input{artikel3-xetex-bidi.def}}{}
-\@ifclassloaded{amsart}{\input{amsart-xetex-bidi.def}}{}
-\@ifclassloaded{beamer}{\input{beamer-xetex-bidi.def}}{}
-\@ifclassloaded{letter}{\input{letter-xetex-bidi.def}}{}
-\@ifclassloaded{extletter}{\input{extletter-xetex-bidi.def}}{}
-\@ifclassloaded{memoir}{\input{memoir-xetex-bidi.def}}{}
-\@ifclassloaded{refrep}{\input{refrep-xetex-bidi.def}}{}
-\@ifclassloaded{extreport}{\input{extreport-xetex-bidi.def}}{}
-\@ifclassloaded{report}{\@ifpackageloaded{flowfram}{}{\input{report-xetex-bidi.def}}}{}
-\@ifclassloaded{rapport1}{\input{rapport1-xetex-bidi.def}}{}
-\@ifclassloaded{rapport3}{\input{rapport3-xetex-bidi.def}}{}
-\@ifclassloaded{scrartcl}{\input{scrartcl-xetex-bidi.def}}{}
-\@ifclassloaded{scrbook}{\input{scrbook-xetex-bidi.def}}{}
-\@ifclassloaded{scrreprt}{\input{scrreprt-xetex-bidi.def}}{}
-\@ifclassloaded{amsbook}{\input{amsbook-xetex-bidi.def}}{}
-\@ifclassloaded{extbook}{\input{extbook-xetex-bidi.def}}{}
-\@ifclassloaded{boek}{\input{boek-xetex-bidi.def}}{}
-\@ifclassloaded{boek3}{\input{boek3-xetex-bidi.def}}{}
-\@ifclassloaded{book}{\@ifpackageloaded{flowfram}{}{\input{book-xetex-bidi.def}}}{}
-\@ifclassloaded{bookest}{\input{bookest-xetex-bidi.def}}{}
-\@ifclassloaded{combine}{\input{combine-xetex-bidi.def}}{}
-\@ifclassloaded{imsproc}{\input{imsproc-xetex-bidi.def}}{}
-\@ifpackageloaded{amsmath}{}{%
-\@iftagsloaded{leqno}{\input{leqno-xetex-bidi.def}}{}
-\@iftagsloaded{fleqn}{\input{fleqn-xetex-bidi.def}}{}
+
+\ApplyPatchToClassesIfPackageLoadedF{%
+ book, %
+ report %
+}{flowfram}
+
+\ApplyPatchToPackageIfPackageLoadedF{float}{floatrow}
+
+\ApplyPatchToFilesIfPackageLoadedF{amsmath}{%
+ fleqn, %
+ leqno%
+}[clo]
+
+\ApplyPatchToClasses{%
+ amsart, %
+ amsbook, %
+ article, %
+ artikel1, %
+ artikel2, %
+ artikel3, %
+ beamer, %
+ boek, %
+ boek3, %
+ bookest, %
+ combine, %
+ extbook, %
+ extletter, %
+ extarticle, %
+ extreport, %
+ imsproc, %
+ letter, %
+ memoir, %
+ rapport1, %
+ rapport3, %
+ refrep, %
+ scrartcl, %
+ scrbook, %
+ scrreprt %
+}
+
+\ApplyPatchToPackages{%
+ adjmulticol, %
+ algorithm2e, %
+ amsmath, %
+ amstext, %
+ amsthm, %
+ arydshln, %
+ array, %
+ beamerbaseauxtemplates, %
+ beamerbaseboxes, %
+ beamerbasecolor, %
+ beamerbasecompatibility, %
+ beamerbaseframecomponents, %
+ beamerbaseframesize, %
+ beamerbaselocalstructure, %
+ beamerbasemisc, %
+ beamerbasenavigation, %
+ beamerbaseoverlay, %
+ beamerinnerthemecircles, %
+ beamerinnerthemedefault, %
+ beamerinnerthemefocus, %
+ beamerinnerthemeinmargin, %
+ beamerinnerthememetropolis, %
+ beamerinnerthemerectangles, %
+ beamerinnerthemerounded, %
+ beamerouterthemedefault, %
+ beamerouterthemefocus, %
+ beamerouterthemeinfolines, %
+ beamerouterthememetropolis, %
+ beamerouterthememiniframes, %
+ beamerouterthemesidebar, %
+ beamerouterthemesplit, %
+ beamerouterthemeshadow, %
+ beamerouterthemesmoothbars, %
+ beamerouterthemesmoothtree, %
+ beamerouterthemetree, %
+ beamerthemeHannover, %
+ beamerthemeSingapore, %
+ breqn, %
+ cals, %
+ caption, %
+ caption3, %
+ color, %
+ colortbl, %
+ crop, %
+ cuted, %
+ cutwin, %
+ dblfnote, %
+ diagbox, %
+ draftwatermark, %
+ eso-pic, %
+ empheq, %
+ fancybox, %
+ fancyhdr, %
+ fix2col, %
+ float, %
+ floatrow, %
+ flowfram, %
+ footnotebackref, %
+ framed, %
+ ftnright, %
+ geometry, %
+ graphicx, %
+ hvfloat, %
+ hyperref, %
+ lettrine, %
+ lineno, %
+ listings, %
+ longtable, %
+ lscape, %
+ mathtools, %
+ mdframed, %
+ media9, %
+ midfloat, %
+ minitoc, %
+ multicol, %
+ multienum, %
+ natbib, %
+ newfloat, %
+ nicematrix, %
+ ntheorem, %
+ ntheorem-hyper, %
+ overpic, %
+ pdfbase, %
+ pdflscape, %
+ pdfpages, %
+ pgfsys, %
+ picinpar, %
+ quotchap, %
+ ragged2e, %
+ rotating, %
+ sidecap, %
+ soul, %
+ stabular, %
+ subfigure, %
+ tabls, %
+ tabularx, %
+ tabulary, %
+ tcolorbox, %
+ titlesec, %
+ titletoc, %
+ tocbasic, %
+ tocbibind, %
+ tocloft, %
+ tocstyle, %
+ todonotes, %
+ wrapfig, %
+ xcolor, %
+ xltxtra %
}
-\@ifpackageloaded{mathtools}{%
- \RequirePackage{graphicx}%
- \input{mathtools-xetex-bidi.def}%
- }{}
-\@ifpackageloaded{crop}{\RequirePackage{graphicx}}{}
-\@ifpackageloaded{lscape}{\RequirePackage{graphicx}}{}
-\@ifpackageloaded{sidecap}{\RequirePackage{ragged2e}}{}
-\@ifpackageloaded{floatrow}{\RequirePackage{color}}{}
-\@ifpackageloaded{algorithm2e}{\input{algorithm2e-xetex-bidi.def}}{}
-\@ifpackagewith{algorithm2e}{algonl}{%
-\renewcommand{\theAlgoLine}{\expandafter\csname the\algocf@float\endcsname\@SepMark\arabic{AlgoLine}}%
-}{}
-\@ifpackagewith{algorithm2e}{algopart}{\renewcommand{\algocf@within}{part}}{}
-\@ifpackagewith{algorithm2e}{algochapter}{\renewcommand{\algocf@within}{chapter}}{}
-\@ifpackagewith{algorithm2e}{algosection}{\renewcommand{\algocf@within}{section}}{}
-\@ifpackageloaded{amsmath}{\input{amsmath-xetex-bidi.def}}{}
-\@ifpackageloaded{amstext}{\input{amstext-xetex-bidi.def}}{}
-\@ifpackageloaded{amsthm}{\input{amsthm-xetex-bidi.def}}{}
-\@ifpackageloaded{breqn}{\input{breqn-xetex-bidi.def}}{}
-\@ifpackageloaded{cals}{\input{cals-xetex-bidi.def}}{}
-\@ifpackageloaded{caption}{\input{caption-xetex-bidi.def}}{}
-\@ifpackageloaded{caption3}{\input{caption3-xetex-bidi.def}}{}
-\@ifpackageloaded{floatrow}{\input{floatrow-xetex-bidi.def}}{}
-\@ifpackageloaded{crop}{\@ifclassloaded{memoir}{}{\input{crop-xetex-bidi.def}}}{}
-\@ifpackageloaded{color}{\input{color-xetex-bidi.def}}{}
-\@ifpackageloaded{cutwin}{\input{cutwin-xetex-bidi.def}}{}
-\@ifpackageloaded{cuted}{\input{cuted-xetex-bidi.def}}{}
-\@ifpackageloaded{xcolor}{\input{xcolor-xetex-bidi.def}}{}
-\@ifpackageloaded{colortbl}{\input{colortbl-xetex-bidi.def}}{}
-\@ifpackageloaded{float}{\@ifpackageloaded{floatrow}{}{\input{float-xetex-bidi.def}}}{}
-\@ifpackageloaded{flowfram}{\input{flowfram-xetex-bidi.def}}{}
-\@ifpackageloaded{xltxtra}{\input{xltxtra-xetex-bidi.def}}{}
-\@ifpackageloaded{wrapfig}{\input{wrapfig-xetex-bidi.def}}{}
-\@ifpackageloaded{graphicx}{\input{graphicx-xetex-bidi.def}}{}
-\@ifpackageloaded{geometry}{\input{geometry-xetex-bidi.def}}{}
-\@ifpackageloaded{hvfloat}{\input{hvfloat-xetex-bidi.def}}{}
-\@ifpackageloaded{ntheorem}{\input{ntheorem-xetex-bidi.def}}{}
-\@ifpackageloaded{tabularx}{\input{tabularx-xetex-bidi.def}}{}
-\@ifpackageloaded{longtable}{\input{longtable-xetex-bidi.def}}{}
-\@ifpackageloaded{lscape}{\input{lscape-xetex-bidi.def}}{}
-\@ifpackageloaded{hyperref}{\input{hyperref-xetex-bidi.def}}{}
-\@ifpackageloaded{footnotebackref}{\input{footnotebackref-xetex-bidi.def}}{}
-\@ifpackageloaded{ntheorem-hyper}{\input{ntheorem-hyper-xetex-bidi.def}}{}
-\@ifpackageloaded{fancybox}{\input{fancybox-xetex-bidi.def}}{}
-\@ifpackageloaded{fancyhdr}{\input{fancyhdr-xetex-bidi.def}}{}
-\@ifpackageloaded{fix2col}{\input{fix2col-xetex-bidi.def}}{}
-\@ifpackageloaded{ftnright}{\input{ftnright-xetex-bidi.def}}{}
-\@ifpackageloaded{midfloat}{\input{midfloat-xetex-bidi.def}}{}
-\@ifpackageloaded{draftwatermark}{\input{draftwatermark-xetex-bidi.def}}{}
-\@ifpackageloaded{dblfnote}{\input{dblfnote-xetex-bidi.def}}{}
-\@ifpackageloaded{diagbox}{\input{diagbox-xetex-bidi.def}}{}
-\@ifpackageloaded{eso-pic}{\input{eso-pic-xetex-bidi.def}}{}
-\@ifpackageloaded{empheq}{\input{empheq-xetex-bidi.def}}{}
-\@ifpackageloaded{framed}{\input{framed-xetex-bidi.def}}{}
-\@ifpackageloaded{overpic}{\input{overpic-xetex-bidi.def}}{}
-\@ifpackageloaded{pdfbase}{\input{pdfbase-xetex-bidi.def}}{}
-\@ifpackageloaded{pdflscape}{\input{pdflscape-xetex-bidi.def}}{}
-\@ifpackageloaded{pdfpages}{\input{pdfpages-xetex-bidi.def}}{}
-\@ifpackageloaded{lettrine}{\input{lettrine-xetex-bidi.def}}{}
-\@ifpackageloaded{lineno}{\input{lineno-xetex-bidi.def}}{}
-\@ifpackageloaded{listings}{\input{listings-xetex-bidi.def}}{}
-\@ifpackageloaded{media9}{\RequirePackage{bidi-media9}}{}
-\@iftexfileloaded{pstricks}{\input{pstricks-xetex-bidi.def}}{}
-\@iftexfileloaded{pgfcorescopes.code}{\input{pgfcorescopes.code-xetex-bidi.def}}{}
-\@ifpackageloaded{titlesec}{\input{titlesec-xetex-bidi.def}}{}
-\@ifpackageloaded{titletoc}{\input{titletoc-xetex-bidi.def}}{}
-\@ifpackageloaded{array}{\input{array-xetex-bidi.def}}{}
-\@ifpackageloaded{sidecap}{\input{sidecap-xetex-bidi.def}}{}
-\@ifpackagewith{sidecap}{innercaption}{%
-\if@RTL \renewcommand*{\SC@FLOAT}[2]{%
- \isSC@ODD{{#2}\hspace{\sidecaptionsep}{#1}} {{#1}\hspace{\sidecaptionsep}{#2}}}
- \renewcommand*\SC@justify@caption{%
- \isSC@ODD{\RaggedRight}{\RaggedLeft}}\else
- \renewcommand*{\SC@FLOAT}[2]{%
- \isSC@ODD{{#1}\hspace{\sidecaptionsep}{#2}} {{#2}\hspace{\sidecaptionsep}{#1}}}
- \renewcommand*\SC@justify@caption{%
- \isSC@ODD{\RaggedLeft}{\RaggedRight}}\fi
-}{}
-\@ifpackagewith{sidecap}{rightcaption}{%
- \if@RTL\renewcommand*{\SC@FLOAT}[2]{{#1}\hspace{\sidecaptionsep}{#2}}
- \def\SC@justify@caption{\RaggedLeft}\else%
- \renewcommand*{\SC@FLOAT}[2]{{#2}\hspace{\sidecaptionsep}{#1}}
- \def\SC@justify@caption{\RaggedRight}\fi%
-}{}
-\@ifpackagewith{sidecap}{leftcaption}{%
-\if@RTL \renewcommand*{\SC@FLOAT}[2]{{#2}\hspace{\sidecaptionsep}{#1}}
- \def\SC@justify@caption{\RaggedRight}\else%
- \renewcommand*{\SC@FLOAT}[2]{{#1}\hspace{\sidecaptionsep}{#2}}
- \def\SC@justify@caption{\RaggedLeft}\fi%
-}{}
-\@ifpackageloaded{soul}{\input{soul-xetex-bidi.def}}{}
-\@ifpackageloaded{stabular}{\input{stabular-xetex-bidi.def}}{}
-\@ifpackageloaded{subfigure}{\input{subfigure-xetex-bidi.def}}{}
-\@ifpackageloaded{arydshln}{\input{arydshln-xetex-bidi.def}}{}
-\@ifpackageloaded{mdframed}{\input{mdframed-xetex-bidi.def}}{}
-\@ifpackageloaded{multicol}{\input{multicol-xetex-bidi.def}}{}
-\@ifpackageloaded{adjmulticol}{\input{adjmulticol-xetex-bidi.def}}{}
-\@ifpackageloaded{multienum}{\input{multienum-xetex-bidi.def}}{}
-\@ifpackageloaded{natbib}{\input{natbib-xetex-bidi.def}}{}
-\@ifpackageloaded{newfloat}{\input{newfloat-xetex-bidi.def}}{}
-\@ifpackageloaded{nicematrix}{\input{nicematrix-xetex-bidi.def}}{}
-\@ifpackageloaded{minitoc}{\input{minitoc-xetex-bidi.def}}{}
-\@ifpackageloaded{pgfsys}{\input{pgfsys.code-xetex-bidi.def}}{}
-\@ifpackageloaded{picinpar}{\input{picinpar-xetex-bidi.def}}{}
-\@ifpackageloaded{quotchap}{\input{quotchap-xetex-bidi.def}}{}
-\@ifpackageloaded{ragged2e}{\input{ragged2e-xetex-bidi.def}}{}
-\@ifpackageloaded{rotating}{\input{rotating-xetex-bidi.def}}{}
-\@ifpackageloaded{tabls}{\input{tabls-xetex-bidi.def}}{}
-\@ifpackageloaded{tabulary}{\input{tabulary-xetex-bidi.def}}{}
-\@ifpackageloaded{tcolorbox}{\input{tcolorbox-xetex-bidi.def}}{}
-\@ifpackageloaded{tocstyle}{\input{tocstyle-xetex-bidi.def}}{}
-\@ifpackageloaded{tocbibind}{\@ifclassloaded{memoir}{}{\input{tocbibind-xetex-bidi.def}}}{}
-\@ifpackageloaded{tocloft}{\@ifclassloaded{memoir}{}{\input{tocloft-xetex-bidi.def}}}{}
-\@ifdefinitionfileloaded{tc-xetex}{\input{tc-xetex-bidi.def}}{}
-\@ifpackageloaded{todonotes}{\input{todonotes-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerbaseauxtemplates}{\input{beamerbaseauxtemplates-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerbaseboxes}{\input{beamerbaseboxes-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerbasecolor}{\input{beamerbasecolor-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerbasecompatibility}{\input{beamerbasecompatibility-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerbaseframecomponents}{\input{beamerbaseframecomponents-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerbaseframesize}{\input{beamerbaseframesize-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerbaselocalstructure}{\input{beamerbaselocalstructure-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerbasemisc}{\input{beamerbasemisc-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerbasenavigation}{\input{beamerbasenavigation-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerbaseoverlay}{\input{beamerbaseoverlay-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerinnerthemedefault}{\input{beamerinnerthemedefault-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerinnerthemecircles}{\input{beamerinnerthemecircles-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerinnerthemefocus}{\input{beamerinnerthemefocus-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerinnerthemeinmargin}{\input{beamerinnerthemeinmargin-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerinnerthememetropolis}{\input{beamerinnerthememetropolis-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerinnerthemerectangles}{\input{beamerinnerthemerectangles-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerinnerthemerounded}{\input{beamerinnerthemerounded-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerouterthemedefault}{\input{beamerouterthemedefault-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerouterthemefocus}{\input{beamerouterthemefocus-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerouterthemeinfolines}{\input{beamerouterthemeinfolines-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerouterthememetropolis}{\input{beamerouterthememetropolis-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerouterthememiniframes}{\input{beamerouterthememiniframes-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerouterthemesidebar}{\input{beamerouterthemesidebar-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerouterthemesplit}{\input{beamerouterthemesplit-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerouterthemeshadow}{\input{beamerouterthemeshadow-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerouterthemesmoothbars}{\input{beamerouterthemesmoothbars-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerouterthemesmoothtree}{\input{beamerouterthemesmoothtree-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerouterthemetree}{\input{beamerouterthemetree-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerthemeHannover}{\input{beamerthemeHannover-xetex-bidi.def}}{}
-\@ifpackageloaded{beamerthemeSingapore}{\input{beamerthemeSingapore-xetex-bidi.def}}{}
+
+\ApplyPatchToFiles{%
+ pgfcorescopes.code, %
+ pstricks %
+}[tex]
+
+\ApplyPatchToFile{tc-xetex}
\endinput
%%
%% End of file `latex-xetex-bidi.def'.
diff --git a/Master/texmf-dist/tex/xelatex/bidi/leqno-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/leqno-xetex-bidi.def
index d351caff2e1..1f57b12584f 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/leqno-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/leqno-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/letter-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/letter-xetex-bidi.def
index 211970c4881..fe4e87da600 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/letter-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/letter-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/lettrine-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/lettrine-xetex-bidi.def
index 763b3906759..b60c6af0666 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/lettrine-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/lettrine-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,143 +37,19 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{lettrine-xetex-bidi.def}[2022/11/06 v0.8 bidi adaptations for lettrine package for XeTeX engine]
-\def\@lettrine[#1]#2#3{%
- \def\l@initial{#2}\let\l@refstring\l@initial
- \setcounter{L@lines}{\value{DefaultLines}}%
- \setcounter{L@depth}{\value{DefaultDepth}}%
- \renewcommand*{\L@hang}{\DefaultLhang}%
- \renewcommand*{\L@oversize}{\DefaultLoversize}%
- \renewcommand*{\L@raise}{\DefaultLraise}%
- \renewcommand*{\L@ante}{}%
- \setlength{\L@Findent}{\DefaultFindent}%
- \setlength{\L@Nindent}{\DefaultNindent}%
- \setlength{\L@slope}{\DefaultSlope}%
- \setlength{\L@novskip}{\DiscardVskip}%
- \ifLettrineImage\L@imagetrue\else\L@imagefalse\fi
- \ifLettrineOnGrid\L@gridtrue\else\L@gridfalse\fi
- \ifLettrineRealHeight\L@realhtrue\else\L@realhfalse\fi
- \setkeys{L}{#1}%
- \sbox{\L@tbox}{\LettrineTextFont{\LettrineSecondString}}%
- \ifL@realh
- \def\@tempa{#3}%
- \ifx\@tempa\@empty
- \PackageWarning{lettrine.sty}%
- {Empty second argument,\MessageBreak
- ignoring option `realheight';}%
- \else
- \sbox{\L@tbox}{\LettrineTextFont{#3}}%
- \fi
- \fi
+\ProvidesFile{lettrine-xetex-bidi.def}[2024/12/08 v0.9 bidi adaptations for lettrine package for XeTeX engine]
+\RemoveFromHook{begindocument}[lettrine]
+\AtBeginDocument[lettrine]{%
\if\DefaultOptionsFile\relax
\else
- \begingroup
\InputIfFileExists{\DefaultOptionsFile}%
{}%
{\PackageWarning{lettrine.sty}%
{File \DefaultOptionsFile\space not found}%
}%
- \def\color##1##{\l@color{##1}}%
- \let\l@color\@gobbletwo
- \def\textcolor##1##{\l@textcolor{##1}}%
- \def\l@textcolor##1##2##3{##3}%
- \expandafter\ifx\csname l@#2-keys\endcsname\relax
- \gdef\l@LOKeys{}%
- \else
- \xdef\l@LOKeys{\csname l@#2-keys\endcsname}%
- \fi
- \endgroup
- \def\KV@prefix{KV@L@}%
- \let\@tempc\relax
- \expandafter\KV@do\l@LOKeys,\relax,
- \setupL@lbox
- \setlength{\LettrineWidth}{\wd\L@lbox}%
- \def\KV@prefix{KV@L@}%
- \let\@tempc\relax
- \expandafter\KV@do\l@LOKeys,\relax,
- \setkeys{L}{#1}%
- \fi
- \setupL@lbox
- \setlength{\LettrineWidth}{\wd\L@lbox}%
- \setlength{\LettrineHeight}{\ht\L@lbox}%
- \setlength{\LettrineDepth}{\dp\L@lbox}%
- \begingroup
- \def\IeC##1{##1}%
- \@tempdima=\L@oversize pt\relax
- \PackageInfo{lettrine.sty}%
- {Targeted height = \the\L@target@tht\MessageBreak
- (for loversize=0, accent excluded),\MessageBreak
- Lettrine height = \the\LettrineHeight\space (#2)%
- \ifdim\@tempdima=\z@\else\space loversize=\L@oversize\fi;%
- \MessageBreak reported}%
- \endgroup
- \sbox{\L@tbox}{\LettrineTextFont{#3}}%
- \setlength{\L@first}{\LettrineHeight}%
- \setlength{\L@lraise}{\L@raise\L@target@tht}%
- \addtolength{\L@first}{\L@lraise}%
- \ifnum\value{L@lines}=1
- \addtolength{\L@first}{-\ht\L@tbox}%
- \else
- \addtolength{\L@first}{-\L@target@tht}%
- \addtolength{\L@lraise}{-\L@target@dp}%
- \fi
- \par
- \ifdim\L@first>\L@novskip
- \ifL@grid
- \@tempdima=\baselineskip
- \@tempdimb=\@tempdima
- \advance\@tempdimb by \L@novskip
- \@tempcnta=1
- \loop\ifdim\L@first>\@tempdimb
- \advance\@tempcnta by 1
- \advance\L@first by -\@tempdima
- \repeat
- \L@first=\@tempcnta\baselineskip
- \fi
- \vskip\L@first
- \fi
- \setlength{\L@Pindent}{\wd\L@lbox}%
- \addtolength{\L@Pindent}{-\L@hang\wd\L@lbox}%
- \settowidth{\L@first}{\L@ante}%
- \addtolength{\L@Pindent}{\L@first}%
- \addtolength{\L@Pindent}{\L@Findent}%
- \setlength{\L@first}{\linewidth}%
- \addtolength{\L@first}{-\L@Pindent}%
- \addtolength{\L@Nindent}{\L@Pindent}%
- \setlength{\L@next}{\linewidth}%
- \addtolength{\L@next}{-\L@Nindent}%
- \addtolength{\L@Pindent}{\@totalleftmargin}%
- \addtolength{\L@Nindent}{\@totalleftmargin}%
- \addtocounter{L@lines}{1}%
- \addtocounter{L@lines}{\value{L@depth}}%
- \if@RTL
- \def\L@parshape{\c@L@lines \z@ \the\L@first}%
- \else
- \def\L@parshape{\c@L@lines \the\L@Pindent \the\L@first}%
- \fi
- \@tempcnta=\tw@
- \@whilenum \@tempcnta<\c@L@lines\do{%
- \if@RTL
- \edef\L@parshape{\L@parshape \z@ \the\L@next}%
- \else
- \edef\L@parshape{\L@parshape \the\L@Nindent \the\L@next}%
- \fi
- \addtolength{\L@Nindent}{\L@slope}%
- \addtolength{\L@next}{-\L@slope}%
- \advance\@tempcnta\@ne}%
- \if@RTL
- \edef\L@parshape{\L@parshape \z@ \the\linewidth}%
- \else
- \edef\L@parshape{\L@parshape \@totalleftmargin \the\linewidth}%
\fi
- \noindent
- \parshape=\L@parshape\relax
- \smash{\llap{\mbox{\L@ante}\raisebox{\L@lraise}{\usebox{\L@lbox}}%
- \hskip \the\L@Findent}}%
- \usebox{\L@tbox}%
- \ifnum\@listdepth>0 \Lreset@listparshape \fi
+ \let\ifL@RTL\if@RTL
}
-
\endinput
%%
%% End of file `lettrine-xetex-bidi.def'.
diff --git a/Master/texmf-dist/tex/xelatex/bidi/lineno-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/lineno-xetex-bidi.def
index 4e63f715074..040fd250294 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/lineno-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/lineno-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{lineno-xetex-bidi.def}[2018/01/28 v0.2 bidi adaptations for lineno package for XeTeX engine]
+\ProvidesFile{lineno-xetex-bidi.def}[2024/12/07 v0.3 bidi adaptations for lineno package for XeTeX engine]
\bidi@patchcmd{\MakeLineNo}{%
\hb@xt@\z@{\makeLineNumber}%
}{%
@@ -74,6 +74,20 @@
\@ifpackagewith{lineno}{right}{%
\rightlinenumbers*
}{}
+ \@ifpackagewith{lineno}{switch}{%
+ \if@RTLmain
+ \switchlinenumbers*%
+ \else
+ \switchlinenumbers
+ \fi
+ }{}
+ \@ifpackagewith{lineno}{switch*}{%
+ \if@RTLmain
+ \switchlinenumbers
+ \else
+ \switchlinenumbers*%
+ \fi
+ }{}
}
\endinput
diff --git a/Master/texmf-dist/tex/xelatex/bidi/listings-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/listings-xetex-bidi.def
index 2b64615f466..935dd6a30a0 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/listings-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/listings-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{listings-xetex-bidi.def}[2018/09/15 v1.5 bidi adaptations for listings package for XeTeX engine]
+\ProvidesFile{listings-xetex-bidi.def}[2025/01/03 v1.6 bidi adaptations for listings package for XeTeX engine]
\lst@Key{captiondirection}{textdirection}{%
\lstKV@SwitchCases{#1}%
{textdirection:\\%
@@ -117,7 +117,7 @@
\endgroup%
}{}{}%
}
-\@ifpackageloaded{caption}{%
+\ApplyPatchIfPackageLoaded{caption}{%
\AtBeginCaption{%
\bidi@lst@ensure@caption@script{\@nonlatintrue}{\@nonlatinfalse}%
\bidi@lst@ensure@caption@direction{\@RTLfalse}{\@RTLtrue}%
diff --git a/Master/texmf-dist/tex/xelatex/bidi/loadingorder-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/loadingorder-xetex-bidi.def
deleted file mode 100644
index 7c5b53c9903..00000000000
--- a/Master/texmf-dist/tex/xelatex/bidi/loadingorder-xetex-bidi.def
+++ /dev/null
@@ -1,336 +0,0 @@
-%%
-%% This is file `loadingorder-xetex-bidi.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% bidi.dtx (with options: `table,loadingorder-xetex-bidi.def')
-%%
-%% __________________________________________________
-%% Vafa Khalighi
-%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
-%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
-%%
-%% It may be distributed and/or modified under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
-%%
-%% This work is “author-maintained” (as per LPPL maintenance status)
-%% by Vafa Khalighi.
-%%
-%%
-%% \CheckSum{58884}
-%% \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 \~}
-%%
-\ProvidesFile{loadingorder-xetex-bidi.def}[2017/12/29 v0.97 making sure that bidi is the last package loaded]
-\bidi@isloaded{amsmath}
-\bidi@isloaded{amstext}
-\bidi@isloaded{amsthm}
-\bidi@isloaded{animate}
-\bidi@isloaded{breqn}
-\bidi@isloaded{cals}
-\bidi@isloaded{caption}
-\bidi@isloaded{crop}
-\bidi@isloaded{cuted}
-\bidi@isloaded{cutwin}
-\bidi@isloaded{color}
-\bidi@isloaded{dblfnote}
-\bidi@isloaded{diagbox}
-\bidi@isloaded{xcolor}
-\bidi@isloaded{colortbl}
-\bidi@isloaded{float}
-\bidi@isloaded{floatrow}
-\bidi@isloaded{flowfram}
-\bidi@isloaded{framed}
-\bidi@isloaded{ftnright}
-\bidi@isloaded{xltxtra}
-\bidi@isloaded{xunicode}
-\bidi@isloaded{wrapfig}
-\bidi@isloaded{graphicx}
-\bidi@isloaded{geometry}
-\bidi@isloaded{hvfloat}
-\bidi@isloaded{mdframed}
-\bidi@isloaded{midfloat}
-\bidi@isloaded{ntheorem}
-\bidi@isloaded{ntheorem-hyper}
-\bidi@isloaded{hyperref}
-\bidi@isloaded{fancybox}
-\bidi@isloaded{fancyhdr}
-\bidi@isloaded{fix2col}
-\bidi@isloaded{draftwatermark}
-\bidi@isloaded{empheq}
-\bidi@isloaded{overpic}
-\bidi@isloaded{pdfpages}
-\bidi@isloaded{listings}
-\bidi@isloaded{lettrine}
-\bidi@isloaded{lineno}
-\bidi@isloaded{media9}
-\bidi@isloaded{pstricks}
-\bidi@isloaded{pgf}
-\bidi@isloaded{picinpar}
-\bidi@isloaded{quotchap}
-\bidi@isloaded{tikz}
-\bidi@isloaded{titlesec}
-\bidi@isloaded{titletoc}
-\bidi@isloaded{array}
-\bidi@isloaded{soul}
-\bidi@isloaded{stabular}
-\bidi@isloaded{subfig}
-\bidi@isloaded{subfigure}
-\bidi@isloaded{supertabular}
-\bidi@isloaded{xtab}
-\bidi@isloaded{longtable}
-\bidi@isloaded{arydshln}
-\bidi@isloaded{multicol}
-\bidi@isloaded{multienum}
-\bidi@isloaded{minitoc}
-\bidi@isloaded{natbib}
-\bidi@isloaded{newfloat}
-\bidi@isloaded{ragged2e}
-\bidi@isloaded{rotating}
-\bidi@isloaded{tabls}
-\bidi@isloaded{tabulary}
-\bidi@isloaded{tocbasic}
-\bidi@isloaded{tocstyle}
-\bidi@isloaded{tocbibind}
-\bidi@isloaded{fontspec}
-\bidi@isloaded{arabxetex}
-\bidi@isloaded{polyglossia}
-\bidi@isloaded{fancyvrb}
-\AtBeginDocument{
- \if@bidi@amsmathloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package amsmath after bidi package. Please load package amsmath before bidi package, and then try to run xelatex on your document again}{}]{amsmath}
- \fi%
- \if@bidi@amstextloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package amstext after bidi package. Please load package amstext before bidi package, and then try to run xelatex on your document again}{}]{amstext}
- \fi%
- \if@bidi@amsthmloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package amsthm after bidi package. Please load package amsthm before bidi package, and then try to run xelatex on your document again}{}]{amsthm}
- \fi%
- \if@bidi@animateloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package animate after bidi package. Please load package animate before bidi package, and then try to run xelatex on your document again}{}]{animate}
- \fi%
- \if@bidi@breqnloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package breqn after bidi package. Please load package breqn before bidi package, and then try to run xelatex on your document again}{}]{breqn}
- \fi%
- \if@bidi@calsloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package cals after bidi package. Please load package cals before bidi package, and then try to run xelatex on your document again}{}]{cals}
- \fi%
- \if@bidi@captionloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package caption after bidi package. Please load package caption before bidi package, and then try to run xelatex on your document again}{}]{caption}
- \fi%
- \if@bidi@croploaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package crop after bidi package. Please load package crop before bidi package, and then try to run xelatex on your document again}{}]{crop}
- \fi%
- \if@bidi@colorloaded@\else
- \@ifpackageloaded{hyperref}{}{%
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package color after bidi package. Please load package color before bidi package, and then try to run xelatex on your document again}{}]{color}}
- \fi%
- \if@bidi@cutwinloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package cutwin after bidi package. Please load package cutwin before bidi package, and then try to run xelatex on your document again}{}]{cutwin}
- \fi%
- \if@bidi@cutedloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package cuted after bidi package. Please load package cuted before bidi package, and then try to run xelatex on your document again}{}]{cuted}
- \fi%
- \if@bidi@dblfnoteloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package dblfnote after bidi package. Please load package dblfnote before bidi package, and then try to run xelatex on your document again}{}]{dblfnote}
- \fi%
- \if@bidi@diagboxloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package diagbox after bidi package. Please load package diagbox before bidi package, and then try to run xelatex on your document again}{}]{diagbox}
- \fi%
- \if@bidi@xcolorloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package xcolor after bidi package. Please load package xcolor before bidi package, and then try to run xelatex on your document again}{}]{xcolor}
- \fi%
- \if@bidi@colortblloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package colortbl after bidi package. Please load package colortbl before bidi package, and then try to run xelatex on your document again}{}]{colortbl}
- \fi%
- \if@bidi@floatloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package float after bidi package. Please load package float before bidi package, and then try to run xelatex on your document again}{}]{float}
- \fi%
- \if@bidi@floatrowloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package floatrow after bidi package. Please load package floatrow before bidi package, and then try to run xelatex on your document again}{}]{floatrow}
- \fi%
- \if@bidi@flowframloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package flowfram after bidi package. Please load package flowfram before bidi package, and then try to run xelatex on your document again}{}]{flowfram}
- \fi%
- \if@bidi@framedloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package framed after bidi package. Please load package framed before bidi package, and then try to run xelatex on your document again}{}]{framed}
- \fi%
- \if@bidi@ftnrightloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package ftnright after bidi package. Please load package ftnright before bidi package, and then try to run xelatex on your document again}{}]{ftnright}
- \fi%
- \if@bidi@xltxtraloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package xltxtra after bidi package. Please load package xltxtra before bidi package, and then try to run xelatex on your document again}{}]{xltxtra}
- \fi%
- \if@bidi@xunicodeloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package xunicode after bidi package. Please load package xunicode before bidi package, and then try to run xelatex on your document again}{}]{xunicode}
- \fi%
- \if@bidi@wrapfigloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package wrapfig after bidi package. Please load package wrapfig before bidi package, and then try to run xelatex on your document again}{}]{wrapfig}
- \fi%
- \if@bidi@graphicxloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package graphicx after bidi package. Please load package graphicx before bidi package, and then try to run xelatex on your document again}{}]{graphicx}
- \fi%
- \if@bidi@geometryloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package geometry after bidi package. Please load package geometry before bidi package, and then try to run xelatex on your document again}{}]{geometry}
- \fi%
- \if@bidi@hvfloatloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package hvfloat after bidi package. Please load package hvfloat before bidi package, and then try to run xelatex on your document again}{}]{hvfloat}
- \fi%
- \if@bidi@mdframedloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package mdframed after bidi package. Please load package mdframed before bidi package, and then try to run xelatex on your document again}{}]{mdframed}
- \fi%
- \if@bidi@midfloatloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package midfloat after bidi package. Please load package midfloat before bidi package, and then try to run xelatex on your document again}{}]{midfloat}
- \fi%
- \if@bidi@ntheoremloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package ntheorem after bidi package. Please load package ntheorem before bidi package, and then try to run xelatex on your document again}{}]{ntheorem}
- \fi%
- \if@bidi@hyperrefloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package hyperref after bidi package. Please load package hyperref before bidi package, and then try to run xelatex on your document again}{}]{hyperref}
- \fi%
- \if@bidi@fancyboxloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package fancybox after bidi package. Please load package fancybox before bidi package, and then try to run xelatex on your document again}{}]{fancybox}
- \fi%
- \if@bidi@fancyhdrloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package fancyhdr after bidi package. Please load package fancyhdr before bidi package, and then try to run xelatex on your document again}{}]{fancyhdr}
- \fi%
- \if@bidi@draftwatermarkloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package draftwatermark after bidi package. Please load package draftwatermark before bidi package, and then try to run xelatex on your document again}{}]{draftwatermark}
- \fi%
- \if@bidi@empheqloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package empheq after bidi package. Please load package empheq before bidi package, and then try to run xelatex on your document again}{}]{empheq}
- \fi%
- \if@bidi@overpicloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package overpic after bidi package. Please load package overpic before bidi package, and then try to run xelatex on your document again}{}]{overpic}
- \fi%
- \if@bidi@pdfpagesloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package pdfpages after bidi package. Please load package pdfpages before bidi package, and then try to run xelatex on your document again}{}]{pdfpages}
- \fi%
- \if@bidi@lettrineloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package lettrine after bidi package. Please load package lettrine before bidi package, and then try to run xelatex on your document again}{}]{lettrine}
- \fi%
- \if@bidi@linenoloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package lineno after bidi package. Please load package lineno before bidi package, and then try to run xelatex on your document again}{}]{lineno}
- \fi%
- \if@bidi@listingsloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package listings after bidi package. Please load package listings before bidi package, and then try to run xelatex on your document again}{}]{listings}
- \fi%
- \csname if@bidi@media9loaded@\endcsname\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package media9 after bidi package. Please load package media9 before bidi package, and then try to run xelatex on your document again}{}]{media9}
- \fi%
- \if@bidi@pstricksloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package pstricks after bidi package. Please load package pstricks before bidi package, and then try to run xelatex on your document again}{}]{pstricks}
- \fi%
- \if@bidi@pgfloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package pgf after bidi package. Please load package pgf before bidi package, and then try to run xelatex on your document again}{}]{pgf}
- \fi%
- \if@bidi@picinparloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package picinpar after bidi package. Please load package picinpar before bidi package, and then try to run xelatex on your document again}{}]{picinpar}
- \fi%
- \if@bidi@quotchaploaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package quotchap after bidi package. Please load package quotchap before bidi package, and then try to run xelatex on your document again}{}]{quotchap}
- \fi%
- \if@bidi@tikzloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tikz after bidi package. Please load package tikz before bidi package, and then try to run xelatex on your document again}{}]{tikz}
- \fi%
- \if@bidi@titlesecloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package titlesec after bidi package. Please load package titlesec before bidi package, and then try to run xelatex on your document again}{}]{titlesec}
- \fi%
- \if@bidi@titletocloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package titletoc after bidi package. Please load package titletoc before bidi package, and then try to run xelatex on your document again}{}]{titletoc}
- \fi%
- \if@bidi@arrayloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package array after bidi package. Please load package array before bidi package, and then try to run xelatex on your document again}{}]{array}
- \fi%
- \if@bidi@stabularloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package stabular after bidi package. Please load package stabular before bidi package, and then try to run xelatex on your document again}{}]{stabular}
- \fi%
- \if@bidi@soulloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package soul after bidi package. Please load package soul before bidi package, and then try to run xelatex on your document again}{}]{soul}
- \fi%
- \if@bidi@subfigloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package subfig after bidi package. Please load package subfig before bidi package, and then try to run xelatex on your document again}{}]{subfig}
- \fi%
- \if@bidi@subfigureloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package subfigure after bidi package. Please load package subfigure before bidi package, and then try to run xelatex on your document again}{}]{subfigure}
- \fi%
- \if@bidi@supertabularloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package supertabular after bidi package. Please load package supertabular before bidi package, and then try to run xelatex on your document again}{}]{supertabular}
- \fi%
- \if@bidi@xtabloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package xtab after bidi package. Please load package xtab before bidi package, and then try to run xelatex on your document again}{}]{xtab}
- \fi%
- \if@bidi@longtableloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package longtable after bidi package. Please load package longtable before bidi package, and then try to run xelatex on your document again}{}]{longtable}
- \fi%
- \if@bidi@arydshlnloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package arydshln after bidi package. Please load package arydshln before bidi package, and then try to run xelatex on your document again}{}]{arydshln}
- \fi%
- \if@bidi@multicolloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package multicol after bidi package. Please load package multicol before bidi package, and then try to run xelatex on your document again}{}]{multicol}
- \fi%
- \if@bidi@multienumloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package multienum after bidi package. Please load package multienum before bidi package, and then try to run xelatex on your document again}{}]{multienum}
- \fi%
- \if@bidi@minitocloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package minitoc after bidi package. Please load package minitoc before bidi package, and then try to run xelatex on your document again}{}]{minitoc}
- \fi%
- \if@bidi@natbibloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package natbib after bidi package. Please load package natbib before bidi package, and then try to run xelatex on your document again}{}]{natbib}
- \fi%
- \if@bidi@newfloatloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package newfloat after bidi package. Please load package newfloat before bidi package, and then try to run xelatex on your document again}{}]{newfloat}
- \fi%
- \csname if@bidi@ragged2eloaded@\endcsname\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package ragged2e after bidi package. Please load package ragged2e before bidi package, and then try to run xelatex on your document again}{}]{ragged2e}
- \fi%
- \if@bidi@rotatingloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package rotating after bidi package. Please load package rotating before bidi package, and then try to run xelatex on your document again}{}]{rotating}
- \fi%
- \if@bidi@tablsloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tabls after bidi package. Please load package tabls before bidi package, and then try to run xelatex on your document again}{}]{tabls}
- \fi%
- \if@bidi@tabularyloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tabulary after bidi package. Please load package tabulary before bidi package, and then try to run xelatex on your document again}{}]{tabulary}
- \fi%
- \if@bidi@tocbasicloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tocbasic after bidi package. Please load package tocbasic before bidi package, and then try to run xelatex on your document again}{}]{tocbasic}
- \fi%
- \if@bidi@tocstyleloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tocstyle after bidi package. Please load package tocstyle before bidi package, and then try to run xelatex on your document again}{}]{tocstyle}
- \fi%
- \if@bidi@tocbibindloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tocbibind after bidi package. Please load package tocbibind before bidi package, and then try to run xelatex on your document again}{}]{tocbibind}
- \fi%
- \if@bidi@fontspecloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package fontspec after bidi package. Please load package fontspec before bidi package, and then try to run xelatex on your document again}{}]{fontspec}
- \fi%
- \if@bidi@arabxetexloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package arabxetex after bidi package. Please load package arabxetex before bidi package, and then try to run xelatex on your document again}{}]{arabxetex}
- \fi%
- \if@bidi@polyglossialoaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package polyglossia after bidi package. Please load package polyglossia before bidi package, and then try to run xelatex on your document again}{}]{polyglossia}
- \fi%
- \if@bidi@fancyvrbloaded@\else
- \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package fancyvrb after bidi package. Please load package fancyvrb before bidi package, and then try to run xelatex on your document again}{}]{fancyvrb}
- \fi%
-}
-\endinput
-%%
-%% End of file `loadingorder-xetex-bidi.def'.
diff --git a/Master/texmf-dist/tex/xelatex/bidi/longtable-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/longtable-xetex-bidi.def
index e9841e27fe3..805d3cda655 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/longtable-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/longtable-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,9 +37,20 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{longtable-xetex-bidi.def}[2022/05/20 v0.6 bidi adaptations for longtable package for XeTeX engine]
+\ProvidesFile{longtable-xetex-bidi.def}[2025/01/05 v0.8 bidi adaptations for longtable package for XeTeX engine]
+\ExplSyntaxOn
\def\LT@array[#1]#2{%
- \refstepcounter{table}\stepcounter{LT@tables}%
+ \UseTaggingSocket{tbl/init}
+ \tl_if_empty:eTF { \LTcaptype }
+ {
+ \tl_gset:Ne \@currentHref {LT@tables.\theHLT@tables}
+ }
+ {
+ \@kernel@refstepcounter{\LTcaptype}\stepcounter{LT@tables}
+ \tl_gset:Ne \@currentHref {\LTcaptype.\cs_if_exist_use:c {theH\LTcaptype}}
+ }
+ \tbl_gzero_row_count:
+ \UseTaggingSocket{tbl/longtable/init}
\if l#1%
\if@RTLtab\LTleft\fill \LTright\z@\else\LTleft\z@ \LTright\fill\fi
\else\if r#1%
@@ -53,7 +64,8 @@
\def\@tabarray{%
\let\hline\LT@@hl
\LT@@tabarray}%
- \let\\\LT@tabularcr\let\tabularnewline\\%
+ \let\\\LT@tabularcr
+ \let\tabularnewline\\%
\def\newpage{\noalign{\break}}%
\def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
\def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
@@ -79,20 +91,42 @@
\let\@sharp##\let\protect\relax
\begingroup
\@mkpream{#2}%
+ \tbl_count_table_cols:
\xdef\LT@bchunk{%
+ \tbl_inbetween_rows:
\global\advance\c@LT@chunks\@ne
\global\LT@rows\z@\setbox\z@\vbox\bgroup
\LT@setprevdepth
\tabskip\LTleft \noexpand\halign to\hsize\bgroup
- \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}%
+ \tabskip\z@ \@arstrut
+ \UseTaggingSocket{tbl/row/begin}%
+ \tbl_init_cell_data_for_row:
+ \@preamble \tabskip\LTright \cr}%
\endgroup
\expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
\LT@make@row
\m@th\let\par\@empty
- \everycr{}\lineskip\z@\baselineskip\z@
+ \everycr{%
+ \noalign{%
+ \__tbl_trace:n {--longtable-->~chunk~row:~ \the\LT@rows \space
+ row:~ \the\g__tbl_row_int \space
+ column:~ \the\g__tbl_col_int
+ }
+ \tbl_if_row_was_started:T
+ {
+ \UseTaggingSocket{tbl/row/end}
+ \tbl_inbetween_rows:
+ }
+ \int_compare:nNnT \LT@rows < \LTchunksize
+ { \tbl_gincr_row_count: } % next is row about to start
+ }%
+ }%
+ \lineskip\z@\baselineskip\z@
\LT@bchunk}
+\ExplSyntaxOff
\def\LT@makecaption#1#2#3{%
\LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{%
+ \reset@font
\sbox\@tempboxa{\if@RTL\beginR\fi#1{#2: }#3\if@RTL\endR\fi}%
\ifdim\wd\@tempboxa>\hsize
#1{#2: }#3%
@@ -101,7 +135,7 @@
\fi
\endgraf\vskip\baselineskip}%
\hss}}}
-\@ifpackageloaded{caption}{%
+\ApplyPatchCodeToPackage{caption}{%
\renewcommand\LT@makecaption[3]{%
\caption@LT@make{%
\caption@LT@settype\LTcaptype
@@ -118,22 +152,25 @@
\caption@@make{#2}{#3}\endgraf
\caption@make@below
\caption@end}}%
-}{}
+}
\def\LT@startpbox#1{%
- \bgroup\color@begingroup
+ \bgroup
+ \color@begingroup
\let\@footnotetext\LT@p@ftntext
\let\@LTRfootnotetext\LT@p@LTRftntext
\let\@RTLfootnotetext\LT@p@RTLftntext
\setlength\hsize{#1}%
\@arrayparboxrestore
- \vrule \@height \ht\@arstrutbox \@width \z@}
-\def\LT@p@LTRftntext#1{%
+ \everypar{%
+ \vrule \@height \ht\@arstrutbox \@width \z@
+ \everypar{}}%
+ }
+\long\def\LT@p@LTRftntext#1{%
\edef\@tempa{\the\LT@p@ftn\noexpand\LTRfootnotetext[\the\c@footnote]}%
\global\LT@p@ftn\expandafter{\@tempa{#1}}}%
-\def\LT@p@RTLftntext#1{%
+\long\def\LT@p@RTLftntext#1{%
\edef\@tempa{\the\LT@p@ftn\noexpand\RTLfootnotetext[\the\c@footnote]}%
\global\LT@p@ftn\expandafter{\@tempa{#1}}}%
-
\def\LT@output{%
\ifnum\outputpenalty <-\@Mi
\ifnum\outputpenalty > -\LT@end@pen
@@ -142,21 +179,28 @@
\setbox\z@\vbox{\unvbox\@cclv}%
\ifdim \ht\LT@lastfoot>\ht\LT@foot
\dimen@\pagegoal
+ \advance\dimen@\ht\LT@foot
\advance\dimen@-\ht\LT@lastfoot
\ifdim\dimen@<\ht\z@
\setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%
\@makecol
\@outputpage
+ \global\vsize\@colroom
\setbox\z@\vbox{\box\LT@head}%
\fi
\fi
- \global\@colroom\@colht
- \global\vsize\@colht
- \vbox
- {\if@RTLtab\hbox\bgroup\beginR\vbox\bgroup\fi\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi\if@RTLtab\egroup\endR\egroup\fi}%
+ \if@RTLtab\hbox\bgroup\beginR\vbox\bgroup\fi
+ \unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi
+ \UseTaggingSocket{tbl/longtable/foot}
+ \if@RTLtab\egroup\endR\egroup\fi
\fi
\else
- \setbox\@cclv\vbox{\if@RTLtab\hbox\bgroup\beginR\vbox\bgroup\fi\unvbox\@cclv\copy\LT@foot\vss\if@RTLtab\egroup\endR\egroup\fi}%
+ \setbox\@cclv\vbox{%
+ \if@RTLtab\hbox\bgroup\beginR\vbox\bgroup\fi
+ \unvbox\@cclv\copy\LT@foot\vss
+ \if@RTLtab\egroup\endR\egroup\fi
+ }%
+ \UseTaggingSocket{tbl/longtable/foot}
\@makecol
\@outputpage
\global\vsize\@colroom
diff --git a/Master/texmf-dist/tex/xelatex/bidi/lscape-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/lscape-xetex-bidi.def
index 90ab13c57c8..5fc6cf7b163 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/lscape-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/lscape-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,8 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{lscape-xetex-bidi.def}[2022/07/14 v0.2 bidi adaptations for lscape package for XeTeX engine]
+\ProvidesFile{lscape-xetex-bidi.def}[2025/01/03 v0.3 bidi adaptations for lscape package for XeTeX engine]
+\RequirePackage{graphicx}
\bidi@patchcmd{\LS@rot}{\rotatebox{90}{\box\@outputbox}}{%
\if@RTL
\rotatebox[origin=br]{-90}{\box\@outputbox}%
diff --git a/Master/texmf-dist/tex/xelatex/bidi/mathtools-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/mathtools-xetex-bidi.def
index 02d145df8bd..7a868d82b80 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/mathtools-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/mathtools-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,8 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{mathtools-xetex-bidi.def}[2018/01/07 v0.1 bidi adaptations for mathtools package for XeTeX engine]
+\ProvidesFile{mathtools-xetex-bidi.def}[2025/01/03 v0.2 bidi adaptations for mathtools package for XeTeX engine]
+\RequirePackage{graphicx}
\MHInternalSyntaxOn
\def\MT_define_tagform:nwnn #1[#2]#3#4{
\@namedef{MT_tagform_#1:n}##1
diff --git a/Master/texmf-dist/tex/xelatex/bidi/mdframed-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/mdframed-xetex-bidi.def
index 3a30dd6778e..aee8d31e824 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/mdframed-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/mdframed-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-messages-xepersian.def b/Master/texmf-dist/tex/xelatex/bidi/media9-xetex-bidi.def
index 1a4038f431e..91c588fd27a 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-messages-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/media9-xetex-bidi.def
@@ -1,15 +1,15 @@
%%
-%% This is file `latex-localise-messages-xepersian.def',
+%% This is file `media9-xetex-bidi.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,latex-localise-messages-xepersian.def')
+%% bidi.dtx (with options: `table,media9-xetex-bidi.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,8 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\آماده‌سازی‌پرونده{latex-localise-messages-xepersian.def}[2011/03/01 v0.1 localising LaTeX2e messages]
+\ProvidesFile{media9-xetex-bidi.def}[2025/01/03 v0.1 bidi adaptations for media9 package for XeTeX engine]
+\RequirePackage{bidi-media9}
\endinput
%%
-%% End of file `latex-localise-messages-xepersian.def'.
+%% End of file `media9-xetex-bidi.def'.
diff --git a/Master/texmf-dist/tex/xelatex/bidi/memoir-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/memoir-xetex-bidi.def
index 2dd550cb85c..268a934ad12 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/memoir-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/memoir-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{memoir-xetex-bidi.def}[2017/06/09 v0.6 bidi adaptations for memoir class for XeTeX engine]
+\ProvidesFile{memoir-xetex-bidi.def}[2025/01/03 v0.7 bidi adaptations for memoir class for XeTeX engine]
\renewcommand{\keepthetitle}{%
\@bsmtitlempty
\global\let\thanks\relax
@@ -147,7 +147,7 @@
} % end of the \parbox
\fi
\vskip\belowcaptionskip}
-\@ifpackageloaded{caption}{%
+\ApplyPatchCodeToPackage{caption}{%
\AtBeginPackage{caption}{
\ClassWarningNoLine{memoir}{%
You are using the caption package with the memoir \MessageBreak
@@ -188,7 +188,7 @@
\normalsize
\@makecaption{\csname fnum@##1\endcsname}{\ignorespaces ##3}\par
\endgroup}
-}}{}
+}}
\renewenvironment{thebibliography}[1]{%
\bibsection
\if@RTL\if@LTRbibitems\@RTLfalse\else\fi\else\if@RTLbibitems\@RTLtrue\else\fi\fi
diff --git a/Master/texmf-dist/tex/xelatex/bidi/midfloat-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/midfloat-xetex-bidi.def
index bf7dbb0e07b..45b6342ef54 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/midfloat-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/midfloat-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/minitoc-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/minitoc-xetex-bidi.def
index afaf2c812cc..502250b254a 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/minitoc-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/minitoc-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/multicol-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/multicol-xetex-bidi.def
index 69d9b9e4cd2..657b1944016 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/multicol-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/multicol-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/multienum-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/multienum-xetex-bidi.def
index e16f72eee3d..7b3d5bdf333 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/multienum-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/multienum-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/natbib-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/natbib-xetex-bidi.def
index 52a9e8dd55d..90c6cff850c 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/natbib-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/natbib-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/newfloat-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/newfloat-xetex-bidi.def
index 5472386dce6..18f613f2480 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/newfloat-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/newfloat-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/nicematrix-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/nicematrix-xetex-bidi.def
index d18c4f55f8f..41606c0b436 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/nicematrix-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/nicematrix-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,10 +37,10 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{nicematrix-xetex-bidi.def}[2022/07/18 v0.2 bidi adaptations for nicematrix package for XeTeX engine]
+\ProvidesFile{nicematrix-xetex-bidi.def}[2024/12/15 v0.3 bidi adaptations for nicematrix package for XeTeX engine]
\ExplSyntaxOn
\bidi@patchcmd{\__nicematrix_array:n}{\@tabarray}{%
- \bool_if:NF \l__nicematrix_NiceTabular_bool \@RTLtabfalse
+ \bool_if:NF \l__nicematrix_tabular_bool \@RTLtabfalse
\@tabarray
}{}{}
\ExplSyntaxOff
diff --git a/Master/texmf-dist/tex/xelatex/bidi/ntheorem-hyper-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/ntheorem-hyper-xetex-bidi.def
index 0b37c0b79b9..8f64f1e9f42 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/ntheorem-hyper-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/ntheorem-hyper-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/ntheorem-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/ntheorem-xetex-bidi.def
index 8d72fda78cd..27778a0231a 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/ntheorem-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/ntheorem-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/overpic-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/overpic-xetex-bidi.def
index 6a822b68e3c..780ea5e15b8 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/overpic-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/overpic-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/pdfbase-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/pdfbase-xetex-bidi.def
index 04cd55ee5e2..26665fe6378 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/pdfbase-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/pdfbase-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/pdflscape-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/pdflscape-xetex-bidi.def
index fc23b479af5..9e304e5fcb6 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/pdflscape-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/pdflscape-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/pdfpages-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/pdfpages-xetex-bidi.def
index f5b9bef4f09..69a77282867 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/pdfpages-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/pdfpages-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/pgfcorescopes.code-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/pgfcorescopes.code-xetex-bidi.def
index 7ca32caa8a8..bc2b5d5eb53 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/pgfcorescopes.code-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/pgfcorescopes.code-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/pgfsys.code-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/pgfsys-xetex-bidi.def
index 5a3d506daa8..ff7e8ccbda5 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/pgfsys.code-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/pgfsys-xetex-bidi.def
@@ -1,15 +1,15 @@
%%
-%% This is file `pgfsys.code-xetex-bidi.def',
+%% This is file `pgfsys-xetex-bidi.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% bidi.dtx (with options: `table,pgfsys.code-xetex-bidi.def')
+%% bidi.dtx (with options: `table,pgfsys-xetex-bidi.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,11 +37,11 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{pgfsys.code-xetex-bidi.def}[2022/06/01 v0.1 bidi adaptations for pgfsys.code.tex file for XeTeX engine]
+\ProvidesFile{pgfsys-xetex-bidi.def}[2025/01/05 v0.1 bidi adaptations for pgfsys package for XeTeX engine]
\def\pgfsys@shadingoutsidepgfpicture#1{%
\beginL#1\endL%
}
\endinput
%%
-%% End of file `pgfsys.code-xetex-bidi.def'.
+%% End of file `pgfsys-xetex-bidi.def'.
diff --git a/Master/texmf-dist/tex/xelatex/bidi/picinpar-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/picinpar-xetex-bidi.def
index 114cc82e5f4..ab4cc3b561b 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/picinpar-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/picinpar-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/plain-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/plain-xetex-bidi.def
index 8e935df3ce8..1da4054f1af 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/plain-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/plain-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/pstricks-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/pstricks-xetex-bidi.def
index f89a3d73475..2133df531b2 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/pstricks-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/pstricks-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,38 +37,27 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{pstricks-xetex-bidi.def}[2022/09/22 v0.6 bidi adaptations for pstricks package for XeTeX engine]
-\def\pspicture{\begingroup\ifmmode\else\@RTLfalse\beginL\fi\pst@ifstar\pst@picture}
-\def\endpspicture{%
- \ifshowgrid\ifnum\showgridp@s>0
- \psgrid[xunit=\sh@wgridXunit,yunit=\sh@wgridYunit,style=gridstyle]\fi\fi%
- \pst@killglue
+\ProvidesFile{pstricks-xetex-bidi.def}[2025/01/08 v0.7 bidi adaptations for pstricks package for XeTeX engine]
+\bidi@patchcmd\pspicture\begingroup{%
+ \begingroup
+ \ifmmode
+ \else
+ \@RTLfalse
+ \beginL
+ \fi
+}{}{\bidi@warningnoline{Oops! patching `\string\pspicture' failed}}
+
+\bidi@patchcmd\endpspicture{%
\endgroup
- \egroup
- \ifdim\wd\pst@hbox=\z@\else
- %\@pstrickserr{Extraneous space in the pspicture environment}%
- %{Type \space <return> \space to proceed.}%
+ \psset[pstricks]{shift=0}% reset value
+}{%
+ \ifmmode
+ \else
+ \endL
\fi
- \ht\pst@hbox=\pst@dimd
- \dp\pst@hbox=-\pst@dimb
- \setbox\pst@hbox=\hbox{%
- \kern-\pst@dima
- \ifPst@shift@star%\typeout{==pstricks== old behaviour of the shift option}% shift=*
- \advance\pst@dimd-\pst@dimb
- \pst@dimd=0.5\pst@dimd
- \else\pst@dimd-\pst@shift\fi
- \advance\pst@dimd\pst@dimb
- \lower\pst@dimd
- \box\pst@hbox
- \kern\pst@dimc}%
- \if@star\setbox\pst@hbox=\hbox{\clipbox@@\z@}\fi
- \leavevmode\ifdim\overfullrule=\z@\box\pst@hbox\else
- \fboxsep=0pt
- \fbox{\rule[-\pst@shift]{0pt}{\ht\pst@hbox}\rule{\wd\pst@hbox}{0pt}}\fi
- \ifmmode\else\endL\fi
- \endgroup%
+ \endgroup
\psset[pstricks]{shift=0}% reset value
-}
+}{}{\bidi@warningnoline{Oops! patching `\string\endpspicture' failed}}
\bidi@patchcmd\@@scalebox{%
\special{x: bscale \pst@tempc \pst@tempd}%
@@ -86,7 +75,7 @@
\else
\special{x: escale}%
\fi
-}{}{}
+}{}{\bidi@warningnoline{Oops! patching `\string\@@scalebox' failed}}
\let\ps@@scalebox\@@scalebox
\endinput
diff --git a/Master/texmf-dist/tex/xelatex/bidi/quotchap-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/quotchap-xetex-bidi.def
index aea75863fb0..c4d6ba4f18f 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/quotchap-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/quotchap-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/ragged2e-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/ragged2e-xetex-bidi.def
index 3d88f77afd5..88d0873c05b 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/ragged2e-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/ragged2e-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/rapport1-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/rapport1-xetex-bidi.def
index a2628277992..c5265619395 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/rapport1-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/rapport1-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/rapport3-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/rapport3-xetex-bidi.def
index 2a50d0717f8..2b7fbdae603 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/rapport3-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/rapport3-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/refrep-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/refrep-xetex-bidi.def
index 31967a731a5..6520f0aa3af 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/refrep-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/refrep-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/report-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/report-xetex-bidi.def
index f13296aa137..3f4bcde357c 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/report-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/report-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/rotating-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/rotating-xetex-bidi.def
index f9a7ef5ce35..54f31e1a15e 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/rotating-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/rotating-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/scrartcl-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/scrartcl-xetex-bidi.def
index 6883dc5041e..645c3812d2d 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/scrartcl-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/scrartcl-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/scrbook-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/scrbook-xetex-bidi.def
index 6a647db8362..127651be341 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/scrbook-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/scrbook-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/scrreprt-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/scrreprt-xetex-bidi.def
index 7458278d9da..fd3ee4cf5cd 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/scrreprt-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/scrreprt-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/sidecap-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/sidecap-xetex-bidi.def
index 8a1d154502c..cbe69b98886 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/sidecap-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/sidecap-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,13 +37,39 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{sidecap-xetex-bidi.def}[2010/08/01 v0.1 bidi adaptations for sidecap package for XeTeX engine]
+\ProvidesFile{sidecap-xetex-bidi.def}[2025/01/03 v0.2 bidi adaptations for sidecap package for XeTeX engine]
+\RequirePackage{ragged2e}
\renewcommand*{\SC@FLOAT}[2]{\if@RTL%
\isSC@ODD{{#1}\hspace{\sidecaptionsep}{#2}} {{#2}\hspace{\sidecaptionsep}{#1}}\else%
\isSC@ODD{{#2}\hspace{\sidecaptionsep}{#1}} {{#1}\hspace{\sidecaptionsep}{#2}}\fi}
\renewcommand*\SC@justify@caption{\if@RTL%
\isSC@ODD{\RaggedLeft}{\RaggedRight}\else%
\isSC@ODD{\RaggedRight}{\RaggedLeft}\fi}
+
+\@ifpackagewith{sidecap}{innercaption}{%
+\if@RTL \renewcommand*{\SC@FLOAT}[2]{%
+ \isSC@ODD{{#2}\hspace{\sidecaptionsep}{#1}} {{#1}\hspace{\sidecaptionsep}{#2}}}
+ \renewcommand*\SC@justify@caption{%
+ \isSC@ODD{\RaggedRight}{\RaggedLeft}}\else
+ \renewcommand*{\SC@FLOAT}[2]{%
+ \isSC@ODD{{#1}\hspace{\sidecaptionsep}{#2}} {{#2}\hspace{\sidecaptionsep}{#1}}}
+ \renewcommand*\SC@justify@caption{%
+ \isSC@ODD{\RaggedLeft}{\RaggedRight}}\fi
+}{}
+
+\@ifpackagewith{sidecap}{rightcaption}{%
+ \if@RTL\renewcommand*{\SC@FLOAT}[2]{{#1}\hspace{\sidecaptionsep}{#2}}
+ \def\SC@justify@caption{\RaggedLeft}\else%
+ \renewcommand*{\SC@FLOAT}[2]{{#2}\hspace{\sidecaptionsep}{#1}}
+ \def\SC@justify@caption{\RaggedRight}\fi%
+}{}
+
+\@ifpackagewith{sidecap}{leftcaption}{%
+\if@RTL \renewcommand*{\SC@FLOAT}[2]{{#2}\hspace{\sidecaptionsep}{#1}}
+ \def\SC@justify@caption{\RaggedRight}\else%
+ \renewcommand*{\SC@FLOAT}[2]{{#1}\hspace{\sidecaptionsep}{#2}}
+ \def\SC@justify@caption{\RaggedLeft}\fi%
+}{}
\endinput
%%
%% End of file `sidecap-xetex-bidi.def'.
diff --git a/Master/texmf-dist/tex/xelatex/bidi/soul-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/soul-xetex-bidi.def
index 97e5adba478..c2e651bc82d 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/soul-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/soul-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/stabular-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/stabular-xetex-bidi.def
index 1f9422797b0..8df9380383b 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/stabular-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/stabular-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/subfigure-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/subfigure-xetex-bidi.def
index 41f8db011d3..8d7096acc5f 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/subfigure-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/subfigure-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/tabls-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tabls-xetex-bidi.def
index 7b879b85f48..1cfeef80b2b 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/tabls-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/tabls-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/tabularx-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tabularx-xetex-bidi.def
index 6b0cc4d8fb1..fcd6ac7a644 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/tabularx-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/tabularx-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/tabulary-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tabulary-xetex-bidi.def
index 54cfe454c10..954460e80cd 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/tabulary-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/tabulary-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/tc-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tc-xetex-xetex-bidi.def
index fd8b344e1db..041716e9d70 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/tc-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/tc-xetex-xetex-bidi.def
@@ -1,15 +1,15 @@
%%
-%% This is file `tc-xetex-bidi.def',
+%% This is file `tc-xetex-xetex-bidi.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% bidi.dtx (with options: `table,tc-xetex-bidi.def')
+%% bidi.dtx (with options: `table,tc-xetex-xetex-bidi.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{tc-xetex-bidi.def}[2014/07/08 v0.1 bidi adaptations for Clipping driver for XeTeX engine]
+\ProvidesFile{tc-xetex-xetex-bidi.def}[2014/07/08 v0.1 bidi adaptations for Clipping driver for XeTeX engine]
\def\@cliptoboxdim#1{%
\setbox#1=\hbox{%
\Gin@defaultbp\WIDTH{\wd#1}%
@@ -58,4 +58,4 @@
}
\endinput
%%
-%% End of file `tc-xetex-bidi.def'.
+%% End of file `tc-xetex-xetex-bidi.def'.
diff --git a/Master/texmf-dist/tex/xelatex/bidi/tcolorbox-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tcolorbox-xetex-bidi.def
index 4e3210b5c97..85d70e43b93 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/tcolorbox-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/tcolorbox-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/titlesec-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/titlesec-xetex-bidi.def
index b53cd7ba5de..c10e98ed945 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/titlesec-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/titlesec-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/titletoc-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/titletoc-xetex-bidi.def
index f19a17a77f4..bd6abdf8c76 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/titletoc-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/titletoc-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/tocbasic-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tocbasic-xetex-bidi.def
index 90c3c2fbb9b..9d65f5982b0 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/tocbasic-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/tocbasic-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/tocbibind-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tocbibind-xetex-bidi.def
index 5178fb5d54b..f62f7df8fc5 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/tocbibind-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/tocbibind-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,9 +37,10 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{tocbibind-xetex-bidi.def}[2017/06/09 v0.4 bidi adaptations for tocbibind package for XeTeX engine]
+\ProvidesFile{tocbibind-xetex-bidi.def}[2025/01/03 v0.5 bidi adaptations for tocbibind package for XeTeX engine]
+\IfClassLoadedT{memoir}{\endinput}
\if@dotocbib
- \@ifpackageloaded{natbib}{}{% natbib not loaded
+ \ApplyPatchIfPackageLoadedF{natbib}{% natbib not loaded
\renewcommand{\bibsection}{\t@cb@bchapsec}
\renewenvironment{thebibliography}[1]{%
\bibsection
@@ -64,9 +65,11 @@
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
+\ApplyPatchCodeToPackage{chapterbib}{%
\@ifpackagewith{chapterbib}{sectionbib}%
{\renewcommand{\sectionbib}[2]{}}%
- {}
+ {}%
+ }
\fi
\if@inltxdoc\else
diff --git a/Master/texmf-dist/tex/xelatex/bidi/tocloft-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tocloft-xetex-bidi.def
index 87ae341b4d5..1053b455ad1 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/tocloft-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/tocloft-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
@@ -37,7 +37,8 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{tocloft-xetex-bidi.def}[2023/08/02 v0.3 bidi adaptations for tocloft package for XeTeX engine]
+\ProvidesFile{tocloft-xetex-bidi.def}[2025/01/03 v0.4 bidi adaptations for tocloft package for XeTeX engine]
+\IfClassLoadedT{memoir}{\endinput}
\renewcommand{\cftpnumalign}{\if@RTL l\else r\fi}
\let\cftdot\@SepMark
\if@cfthaspart
diff --git a/Master/texmf-dist/tex/xelatex/bidi/tocstyle-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tocstyle-xetex-bidi.def
index a454cdf5d61..b19b26d632b 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/tocstyle-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/tocstyle-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/todonotes-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/todonotes-xetex-bidi.def
index f12e5689cc9..403441127a7 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/todonotes-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/todonotes-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/wrapfig-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/wrapfig-xetex-bidi.def
index 49a30479c7d..c7f61ebdf5e 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/wrapfig-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/wrapfig-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/xcolor-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/xcolor-xetex-bidi.def
index 9d9b6a8d2bb..a359c2ded25 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/xcolor-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/xcolor-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/bidi/xltxtra-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/xltxtra-xetex-bidi.def
index bab2c7fcc4c..fbe8a2687a5 100644
--- a/Master/texmf-dist/tex/xelatex/bidi/xltxtra-xetex-bidi.def
+++ b/Master/texmf-dist/tex/xelatex/bidi/xltxtra-xetex-bidi.def
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2007--2023 Vafa Khalighi
+%% Copyright (c) 2007--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{58884}
+%% \CheckSum{57328}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/beamerthemehdu.sty b/Master/texmf-dist/tex/xelatex/hduthesis/beamerthemehdu.sty
new file mode 100644
index 00000000000..2a6cbf03236
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/beamerthemehdu.sty
@@ -0,0 +1,167 @@
+\ProvidesExplPackage{beamerthemehdu}{\hduthesis@date}{\hduthesis@version}
+ {hduThesiS~ \text_titlecase:n {beamer} ~Module}
+
+\mode<presentation>
+
+\RequirePackage{tikz}
+\usetikzlibrary{fadings}
+\graphicspath
+ {
+ {./figure/}{./figures/}{./image/}{./images/}
+ {./graphics/}{./graphic/}{./pictures/}{./picture/}
+ }
+
+\keys_define:nn { beamerthemehdu / docinfo }
+ {
+ title .tl_set:N = \@title,
+ subtitle .tl_set:N = \l__docinfo_subtitle_tl,
+ author .tl_set:N = \@author,
+ date .tl_set:N = \@date,
+ supervisor.tl_set:N = \l__docinfo_supervisor_tl,
+ bibsource .tl_set:N = \l__docinfo_reference_tl,
+ }
+\NewDocumentCommand \DocInfo { m }
+ {
+ \keys_set:nn { beamerthemehdu / docinfo } { #1 }
+ \title { \large \@title }
+ \tl_set:Nn \insertshorttitle { \textsc { \l__docinfo_subtitle_tl } }
+ \author [ \@author ]
+ {
+ \@author
+ \tl_if_empty:NF \l__docinfo_supervisor_tl
+ {
+ \texorpdfstring
+ { \\[2ex] \small Supervised~by~\l__docinfo_supervisor_tl }{}
+ }
+ }
+ \date { \@date }
+ \tl_if_empty:NTF \l__docinfo_bibsource_tl
+ {
+ \newcommand* \printbibliography
+ {
+ \begin{frame}[t]
+ \frametitle{Bibliography}
+ \end{frame}
+ }
+ \newcounter {citecount}
+ \renewcommand*\cite[1]
+ {
+ \refstepcounter{citecount}
+ \textsuperscript{[\thecitecount]}
+ }
+ }
+ {
+ \RequirePackage [ backend = bibtex, sorting = none ] { biblatex }
+ \addbibresource { \l__docinfo_reference_tl }
+ \let \@printbibliography \printbibliography
+ \renewcommand* \printbibliography
+ {
+ \begin{frame}[t, allowframebreaks]{Bibliography}
+ \small
+ \@printbibliography
+ \end{frame}
+ }
+ }
+ }
+
+\usebackgroundtemplate
+ {
+ \tikz [ remember~picture, overlay ]
+ \node [ inner~sep = 0pt, outer~sep = auto, opacity = .1, xshift = -2em ]
+ at (current~page.east)
+ { \includegraphics [ height = .75\paperheight ] { hdulogo.pdf } };
+ }
+\titlegraphic
+ {
+ \tikz [ remember~picture, overlay ]
+ \node [ below~right, yshift = -1em ] at (current~page.north~west)
+ { \includegraphics [ width = 2\textwidth/7 ]{ hdubadge.pdf } };
+ }
+
+% theme & colors
+\useoutertheme{infolines}
+\useinnertheme[shadow = false]{rounded}
+\definecolor{hdu}{HTML}{214395}
+\definecolor{hduRed}{HTML}{BF6236}
+\usecolortheme[named = hdu]{structure}
+
+\setbeamercolor*{palette~primary}{use=structure,fg=black,bg=structure.fg!30!white}
+\setbeamercolor*{palette~secondary}{use=structure,fg=white,bg=structure.fg!60!white}
+\setbeamercolor*{palette~tertiary}{use=structure,fg=white,bg=structure.fg!90!white}
+
+\setbeamercolor{block~title}{use=structure,fg=structure.fg,bg=structure.fg!20!bg}
+\setbeamercolor{block~body}{parent=normal~text,use=block~title,bg=block~title.bg!50!bg}
+\addtobeamertemplate{block~begin}{\pgfsetfillopacity{0.8}}{\pgfsetfillopacity{1}}
+
+\setbeamercolor{block~title~alerted}{use=alerted~text,fg=alerted~text.fg,bg=alerted~text.fg!20!bg}
+\setbeamercolor{block~body~alerted}{parent=normal~text,use=block~title~alerted,bg=block~title~alerted.bg!50!bg}
+\addtobeamertemplate{block~alerted~begin}{\pgfsetfillopacity{0.8}}{\pgfsetfillopacity{1}}
+
+\setbeamercolor{block~title~example}{use=example~text,fg=example~text.fg,bg=example~text.fg!20!bg}
+\setbeamercolor{block~body~example}{parent=normal~text,use=block~title~example,bg=block~title~example.bg!50!bg}
+\addtobeamertemplate{block~example~begin}{\pgfsetfillopacity{0.8}}{\pgfsetfillopacity{1}}
+
+\addtobeamertemplate{headline}{}
+ {
+ \tikz [ remember~picture, overlay ]
+ {
+ \filldraw [hduRed, ultra~thick, line~cap = butt]
+ (0,0) --++
+ (\paperwidth * \fp_eval:n
+ {(\insertpagenumber-1)/(\insertdocumentendpage-1)},0);
+ \draw [white, very~thick, yshift = -.6pt] (0,0) --++ (\paperwidth,0);
+ }
+ }
+
+\AtBeginSection[]
+ {
+ \begin{frame}
+ \tikz [ remember~picture, overlay ]
+ \node [ below~right, yshift = -1em ] at (current~page.north~west)
+ { \includegraphics [ width = 2\textwidth/7 ]{ hdubadge.pdf } };
+ \vfill
+ \usebeamerfont{title} \insertsectionhead \par
+ \tikz
+ {
+ \draw [line~cap = round, hdu!20, ultra~thick]
+ (0,0) --++ (2\linewidth/3,0);
+ \filldraw [line~cap = round, hdu!60, ultra~thick, path~fading=west]
+ (0,0) --++
+ (2\linewidth * \fp_eval:n
+ {(\insertframenumber - 1)/(\inserttotalframenumber - 1)}/3,0);
+ }
+ \vfill
+ \end{frame}
+ }
+
+\setbeamercolor{title}{parent=author~in~head/foot}
+\setbeamertemplate{title~page}[default][colsep=-4bp,rounded=true]
+\usesubitemizeitemtemplate
+ {\tiny\raise1.5pt\hbox{\color{beamerstructure}$\blacktriangleright$}}
+\usesubsubitemizeitemtemplate
+ { \tiny\raise1.5pt\hbox{\color{beamerstructure}$\bigstar$} }
+% \setbeamersize{text margin left = 1em, text margin right=1em}
+
+% math settings
+\numberwithin{equation}{section}
+\RequirePackage{keytheorems,amssymb,mathtools,physics2,fixdif,derivative,cancel,siunitx,nicematrix}
+\renewcommand* \qedsymbol {$\color{gray}\blacksquare$}
+\usephysicsmodule{ ab, braket, op.legacy }
+\RequirePackage[e]{esvect}
+\let\vec\vv
+
+% Figure settings
+\RequirePackage
+ [ labelsep = period, figurename = \textsc{Fig}, font = footnotesize ]{caption}
+\RequirePackage{subcaption,booktabs}
+\captionsetup{belowskip=0pt}
+\captionsetup[sub]{font = scriptsize}
+\RequirePackage{anyfontsize}
+\renewcommand{\raggedright}{\leftskip=0pt \rightskip=0pt plus 0cm}
+\RequirePackage{ragged2e}
+\justifying
+\AtBeginEnvironment{columns}{\vspace*{-.5ex}}
+
+\mode<all>
+
+\endinput
diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hdubadge.pdf b/Master/texmf-dist/tex/xelatex/hduthesis/hdubadge.pdf
new file mode 100644
index 00000000000..8a034696843
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/hdubadge.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hdulogo.pdf b/Master/texmf-dist/tex/xelatex/hduthesis/hdulogo.pdf
new file mode 100644
index 00000000000..0229e015547
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/hdulogo.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hdumotto.pdf b/Master/texmf-dist/tex/xelatex/hduthesis/hdumotto.pdf
new file mode 100644
index 00000000000..667753845f9
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/hdumotto.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-bc.config-module.code.tex b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-bc.config-module.code.tex
new file mode 100644
index 00000000000..1ed06c6aa00
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-bc.config-module.code.tex
@@ -0,0 +1,193 @@
+\ExplSyntaxOn \makeatletter
+\hduthesis_provide_module:n {bc.config}
+
+\geometry { top = 3.25cm, bottom = 2.4cm, left = 4cm, right = 2cm,
+ headheight = 15pt, headsep = .72cm }
+\fancyhead[C]
+ { \raisebox { .12ex } { \small 杭州电子科技大学 \l__docinfo_entitle_tl } }
+\hook_gput_code:nnn {cmd/tableofcontents/before} { . }
+ {
+ \clearpage
+ \pagenumbering{Roman} \cfoot{\small \thepage}
+ }
+\hook_gput_code:nnn { cmd/tableofcontents/after } { . }
+ {
+ \thispagestyle{fancy} \clearpage
+ \pagenumbering{arabic} \cfoot{}
+ }
+
+\RenewDocumentCommand \maketitle {}
+ {
+ \newgeometry{ margin = 3cm }
+ \begin{titlepage}
+ \__hduthesis_cover_bc_aux:
+ \end{titlepage}
+ \restoregeometry
+ }
+
+\int_new:N \l__hduthesis_grade_int
+\int_set:Nn \l__hduthesis_grade_int
+ {
+ \int_compare:nNnTF {\c_sys_month_int} < 9
+ {\c_sys_year_int} {\int_eval:n {\c_sys_year_int + 1}}
+ }
+\cs_new_protected_nopar:Nn \__hduthesis_cover_bc_aux:
+ {
+ \begin{center}
+ \vspace*{14\p@}
+ \includegraphics[ width = .64\linewidth ]{hdutitle}
+ \par \vspace*{36\p@}
+ \scalebox{2.75}
+ {
+ \textbf
+ {
+ \__hduthesis_cover_spread_box:nn
+ { .205\paperwidth } { \l__docinfo_entitle_tl }
+ }
+ }
+ \par \vspace*{1.5\baselineskip}
+ { \LARGE (\int_use:N \l__hduthesis_grade_int \bfseries 届) }
+ \par \vspace*{3.0\baselineskip}
+ \begin{tabular}
+ {
+ >{\large\bfseries}p{5.5\ccwd}@{}
+ >{\large\centering\arraybackslash\kaishu}p{.65\linewidth}@{}
+ }
+ \__hduthesis_cover_spread_box:nn { 4\ccwd } { 题目 } &
+ \__hduthesis_cover_center_box:nn { .95\linewidth } { \@title }\\[5.2ex]
+ \__hduthesis_cover_spread_box:nn { 4\ccwd } { 学院 } &
+ \__hduthesis_cover_center_box:nn { .95\linewidth }
+ { \l__docinfo_department_tl }\\[5.2ex]
+ \__hduthesis_cover_spread_box:nn { 4\ccwd } { 专业 } &
+ \__hduthesis_cover_center_box:nn { .95\linewidth }
+ { \l__docinfo_major_tl }\\[5.2ex]
+ \__hduthesis_cover_spread_box:nn { 4\ccwd } { 班级 } &
+ \__hduthesis_cover_center_box:nn { .95\linewidth }
+ { \l__docinfo_class_tl }\\[5.2ex]
+ \__hduthesis_cover_spread_box:nn { 4\ccwd } { 学号 } &
+ \__hduthesis_cover_center_box:nn { .95\linewidth }
+ { \l__docinfo_stdntid_tl }\\[5.2ex]
+ \__hduthesis_cover_spread_box:nn { 4\ccwd } { 学生姓名 } &
+ \__hduthesis_cover_center_box:nn { .95\linewidth } { \@author }\\[5.2ex]
+ \__hduthesis_cover_spread_box:nn { 4\ccwd } { 指导教师 } &
+ \__hduthesis_cover_center_box:nn { .95\linewidth }
+ { \l__docinfo_cnsupervisor_tl \quad \l__docinfo_cnrole_tl }\\[5.2ex]
+ \__hduthesis_cover_spread_box:nn { 4\ccwd } { 完成日期 } &
+ \__hduthesis_cover_center_box:nn { .95\linewidth }
+ {
+ \textsf{\int_use:N \c_sys_year_int} 年
+ \textsf{\int_use:N \c_sys_month_int} 月
+ }
+ \end{tabular}
+ \end{center}
+ }
+
+\NewDocumentCommand \commitment { O{} }
+ {
+ \newgeometry{ margin = 3cm }
+ \titlepage
+ \__hduthesis_commitment_bc_aux:n {#1}
+ \endtitlepage
+ \restoregeometry
+ }
+\cs_new_protected_nopar:Npn \__hduthesis_commitment_bc_aux:n #1
+ {
+ \vspace*{65\p@}
+ \begin{center}
+ \@beginparpenalty \@lowpenalty
+ \Large \textsf
+ { \bfseries \__hduthesis_cover_spread_box:nn { 6\ccwd }{ 诚信承诺 } }
+ \@endparpenalty \@M
+ \end{center}
+ \vspace*{.4\baselineskip} \par
+ \linespread{2.1}
+ { \semilarge
+ 我谨在此承诺:本人所写的毕业论文《\@title 》均系本人独立完成,
+ 没有抄袭行为,凡涉及其他作者的观点和材料,均作了注释,若有不实,后果由本人承担。
+ \par\vspace*{\baselineskip} \bfseries\sffamily
+ \hskip.48\linewidth 承诺人(签名):
+ \__hduthesis_signature_process_aux:nnn {#1}{1}{0}
+ \tl_if_empty:NF \l__hduthesis_signature_figure_tl
+ {
+ \signature { \l__hduthesis_signature_figure_tl }
+ \tl_clear:N \l__hduthesis_signature_figure_tl
+ }
+ \par \vspace*{.5\baselineskip}
+ \hskip \dim_eval:n { .48\linewidth - 1em }
+ \makebox [ 3em ]
+ { \__hduthesis_signature_process_aux:nnn {#1}{1}{1} } 年
+ \makebox [ 2em ]
+ { \__hduthesis_signature_process_aux:nnn {#1}{1}{2} } 月
+ \makebox [ 2em ]
+ { \__hduthesis_signature_process_aux:nnn {#1}{1}{3} } 日
+ }
+ }
+
+\RenewDocumentEnvironment {abstract} { O{en} }
+ {
+ \str_if_eq:nnT {#1} {en}
+ {
+ \tl_set:Nn \l__keywords_name_tl {Keywords:~}
+ \tl_set:Nn \l__keywords_sep_tl {;~}
+ \@beginparpenalty\@lowpenalty
+ \chapter*{\normalfont\bfseries ABSTRACT}
+ }
+ \str_if_eq:nnT {#1} {cn}
+ {
+ \tl_set:Nn \l__keywords_name_tl {\textsf{关键词:}}
+ \tl_set:Nn \l__keywords_sep_tl {;}
+ \@beginparpenalty\@lowpenalty
+ \chapter*{摘\qquad 要}
+ }
+ }
+ {
+ \tl_clear:N \l__abstract_name_tl
+ \cfoot{} \clearpage
+ }
+\clist_new:N \l__abstract_keywords_clist
+\NewDocumentCommand \keywords { m }
+ {
+ \par \vspace*{\baselineskip}
+ \noindent\textbf{\l__keywords_name_tl}
+ \clist_set:Nn \l__abstract_keywords_clist {#1}
+ \clist_use:Nn \l__abstract_keywords_clist {\l__keywords_sep_tl}
+ }
+
+\RequirePackage{tocloft}
+\renewcommand \contentsname {\hfill 目 \qquad 录 \hfill}
+\renewcommand* \cfttoctitlefont {\sffamily\semiLarge}
+\dim_set:Nn \cftbeforetoctitleskip {3pt}
+\dim_set:Nn \cftaftertoctitleskip {24pt}
+\dim_set:Nn \cftbeforechapskip {1pt}
+\dim_set:Nn \cftbeforesecskip {-.2pt}
+\patchcmd { \@dottedtocline }
+ { \leaders \hbox { $\m@th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$ } }
+ { \kern 4pt \leaders \hbox { $\m@th\mkern .4 mu\hbox{-}\mkern .4 mu$ } } {}{}
+\renewcommand* \l@chapter {\@dottedtocline{1}{0em}{1.6em}}
+\renewcommand* \l@section {\@dottedtocline{1}{2.3em}{2.1em}}
+\renewcommand* \@dotsep {1.7}
+\renewcommand* \@pnumwidth {2.5ex}
+\renewcommand* \cftchapfont {\normalfont}
+\setcounter{tocdepth}{1}
+
+\ctexset
+ {
+ chapter =
+ {
+ fixskip = true, name = {}, beforeskip = 21pt, format+ = \sffamily\large,
+ pagestyle = fancy, afterskip = 34pt, number = \arabic{chapter},
+ },
+ section =
+ {
+ beforeskip = 1.25ex, afterskip = 1.5ex,
+ fixskip = true, format = \sffamily\semilarge
+ },
+ subsection =
+ {
+ beforeskip = 1.25ex, afterskip = 1.5ex,
+ fixskip = true, format = \sffamily
+ }
+ }
+
+\makeatother \ExplSyntaxOff
+\endinput
diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-hdu.l3doc-module.code.tex b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-hdu.l3doc-module.code.tex
new file mode 100644
index 00000000000..ea8499350c1
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-hdu.l3doc-module.code.tex
@@ -0,0 +1,103 @@
+\hduthesis_provide_module:n {hdu.l3doc}
+
+\keys_define:nn { hdu.l3doc / docinfo }
+ {
+ title .tl_set:N = \l__docinfo_title_clist,
+ author .tl_set:N = \l__docinfo_author_tl,
+ CJKmain-font .tl_set:N = \g__docinfo_main_CJK_font,
+ CJKsans-font .tl_set:N = \g__docinfo_sans_CJK_font,
+ CJKmono-font .tl_set:N = \g__docinfo_mono_CJK_font
+ }
+\NewDocumentCommand \DocInfo { m }
+ {
+ \keys_set:nn { hdu.l3doc / docinfo } {#1}
+ \title { \bfseries \l__docinfo_title_clist }
+ \author { \l__docinfo_author_tl }
+ \date
+ {
+ v\hduthesis@version
+ \footnote
+ {
+ \url{https://github.com/\hduthesis@maintainerid/hduthesis},~
+ \url{https://gitee.com/\hduthesis@maintainerid/hduthesis}
+ }~ (\hduthesis@date)
+ }
+ \tl_if_empty:NF \g__docinfo_main_CJK_font
+ { \exp_last_unbraced:No \setCJKmainfont \g__docinfo_main_CJK_font }
+ \tl_if_empty:NF \g__docinfo_sans_CJK_font
+ { \exp_last_unbraced:No \setCJKsansfont \g__docinfo_sans_CJK_font }
+ \tl_if_empty:NF \g__docinfo_mono_CJK_font
+ { \exp_last_unbraced:No \setCJKmonofont \g__docinfo_mono_CJK_font }
+ }
+
+\RequirePackage{ hyperref }
+\RequirePackage [ svgnames ] { xcolor }
+\hypersetup
+ { filecolor = DarkGreen, urlcolor = MidnightBlue, linkcolor = FireBrick }
+\ExplSyntaxOff
+\RenewDocumentCommand \pkg {m} { \href{https://ctan.org/pkg/#1}{\textsf{#1}} }
+\RenewDocumentCommand \cls {m} { \href{https://ctan.org/pkg/#1}{\textsf{#1}} }
+\NewDocumentCommand \mailto {m} { \texttt{<\href{mailto:#1}{#1}>} }
+\pdfstringdefDisableCommands
+ { \def \file#1{<#1>} \def\pkg#1{<#1>} \def\cls#1{<#1>} \def\mailto#1{<#1>} }
+\ExplSyntaxOn
+\hologoFontSetup { general = \sffamily }
+\RequirePackage [ mono = false ] { libertine }
+\RequirePackage [ pass, verbose ] { geometry }
+\RequirePackage
+ { fancyhdr, enumitem, tasks, tabularx, dirtree, framed,
+ xeCJKfntef, tikz, pdfpages, subcaption, datetime }
+\pagestyle{plain}
+\FrameSep = 0pt \yyyymmdddate
+\RequirePackage[os = mac]{menukeys}
+\RequirePackage[fontset = none]{ctex} \linespread{1.4}
+\def \@emph#1 { \CJKsout*[thickness = 2.5ex, format = \color{blue!15}]{#1} }
+\def \s@emph#1 { \CJKunderwave*{#1} }
+\renewcommand \emph { \@ifstar \s@emph \@emph }
+\hook_gput_code:nnn { env/function/before } { . } { \vspace{-2ex} }
+
+\def \HoLogo@hduThesiS #1
+ {
+ \raisebox{-.5pt}
+ {
+ \HOLOGO@mbox
+ {
+ \tikz [ baseline = (hduthesis.base) ]
+ {
+ \node [ inner~sep = 0pt ] (hduthesis)
+ {\scshape \sffamily hduThesi\scalebox{1.2}[1.2]{S}};
+ \draw let \p1 = (hduthesis.west), \p2 = (hduthesis.east)
+ in (\x1,\y1) (\x2,\y2) [ line~width = {.028pt * (\x2 - \x1)} ]
+ ([yshift = -.5ex]hduthesis.north~west) to[ bend~right = 5 ]
+ ([yshift = .25ex]hduthesis.north~east);
+ }
+ }
+ }
+ }
+\def \HoLogo@hduthesis #1
+ { \raisebox{-.5pt} { \HOLOGO@mbox { \scshape \cls{hduThesiS} } } }
+
+\let \legacy@maketitle \maketitle
+\RenewDocumentCommand \maketitle {}
+ {
+ \newgeometry { margin = 1.2in }
+ \titlepage
+ \legacy@maketitle
+ \begin{center}
+ \tikz
+ {
+ \node [ opacity = .8 ]
+ { \includegraphics [ width = .14\paperwidth ] { hdumotto.pdf } };
+ \node [ opacity = .3 ]
+ { \includegraphics [ width = .21\paperwidth ] { hdulogo.pdf } };
+ }
+ \end{center}
+ \thispagestyle{empty}
+ }
+\hook_gput_code:nnn { cmd/tableofcontents/before } { . } { \clearpage }
+\hook_gput_code:nnn { cmd/tableofcontents/after } { . }
+ { \endtitlepage \restoregeometry }
+
+\RequirePackage{minted}
+
+\endinput
diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-hdu.stationery-module.code.tex b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-hdu.stationery-module.code.tex
new file mode 100644
index 00000000000..09bf33e20af
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-hdu.stationery-module.code.tex
@@ -0,0 +1,128 @@
+\hduthesis_provide_module:n {hdu.stationery}
+
+\keys_define:nn { hdu.stationery / docinfo }
+ {
+ watermark .bool_set:N = \g__docinfo_watermark_bool,
+ watermark .initial:n = false,
+ watermark .default:n = true,
+ title .tl_set:N = \@title,
+ author .tl_set:N = \@author,
+ mail .tl_set:N = \l__docinfo_mail_tl,
+ date .tl_set:N = \@date
+ }
+
+\RequirePackage{ hyperref, geometry, tikz, twemojis, fancyhdr }
+\hypersetup{hidelinks}
+\urlstyle{same}
+\NewDocumentCommand \DocInfo { m }
+ {
+ \tl_clear:N \@author
+ \tl_clear:N \l__docinfo_mail_tl
+ \keys_set:nn { hdu.stationery / docinfo } {#1}
+ \hypersetup
+ {
+ pdftitle = Hangzhou Dianzi University,
+ pdfsubject = \@title, pdfauthor = \@author
+ }
+ }
+\geometry
+ { hmargin = .8in, bottom = .75in, top = 1.95in, footskip = 15.87pt,
+ headheight = 1.2in, headsep = .3in, footskip = .3in }
+\linespread{1.25}
+\RequirePackage [ skip = \baselineskip ] { parskip }
+\renewcommand* \familydefault { \sfdefault }
+\definecolor{hdu}{HTML}{214395}
+
+\renewcommand* \headrulewidth {2pt}
+\renewcommand* \footrulewidth {2pt}
+\hook_gput_code:nnn { cmd/headrule/before } { . } { \color{hdu!80} }
+\hook_gput_code:nnn { cmd/footrule/before } { . } { \color{hdu!80} }
+\lhead
+ { {}~
+ \minipage{.6\linewidth}
+ \medskip \leavevmode \lower -.111in
+ \hbox { \includegraphics [ height = .75in ] {hdubadge} }
+ \endminipage \medskip \hfill
+ \minipage{.36\linewidth}
+ \medskip \vbox
+ { \linespread{1.2}
+ \raggedright \small \color{hdu}
+ \texttwemoji{1f4cd}~ 1158~No.2~St.,~ Hangzhou,~ 310018\\
+ \texttwemoji{1f4de}~ (86)~0571-86915072\\
+ \texttwemoji{1f310}~ \url{www.hdu.edu.cn}
+ } \medskip
+ \endminipage
+ }
+\lfoot
+ {
+ \small{}~ \texttwemoji{1f4cd}~
+ 1158~No.2~Street,~ Qiantang~District,~
+ Hangzhou,~ Zhejiang~Province,~ 310018,~ P.R.China
+ }
+\cfoot {}
+\rfoot { \small \texttwemoji{1f310}~ \url{www.hdu.edu.cn}~ }
+\pagestyle{fancy}
+
+\renewcommand* \maketitle
+ {
+ \group_begin: \small
+ \bool_if:nT
+ { !\tl_if_empty_p:N \@author || !\tl_if_empty_p:N \l__docinfo_mail_tl }
+ { \makebox [ 4em ] [ l ] { \scshape From } }
+ \tl_if_empty:NTF \@author
+ { \@latex@warning@no@line {No \noexpand \author given} } { \@author{}~ }
+ \tl_if_empty:NF \l__docinfo_mail_tl
+ { \texttt { <\l__docinfo_mail_tl> } }
+ \bool_if:nT
+ { !\tl_if_empty_p:N \@author || !\tl_if_empty_p:N \l__docinfo_mail_tl }
+ { \\ }
+ \makebox [ 4em ] [ l ] { \scshape Date }
+ \tl_if_empty:NTF \@date \today \@date \\
+ \tl_if_empty:NTF \@title
+ { \@latex@error {No \noexpand \title given}\@ehc }
+ { \makebox [ 4em ] [ l ] { \scshape Subject } \@title }
+ \par \vspace{.5\baselineskip}
+ \group_end:
+ }
+
+\AtBeginDocument { \color_select:n {black!80} }
+\DeclareHookRule { shipout / background } { hduthesis / stationery }
+ { before } { pgfrcs }
+\AddToHook { shipout / background } [ hduthesis / stationery ]
+ {
+ \bool_if:NT \g__docinfo_watermark_bool
+ {
+ \tikz [ remember~picture, overlay ]
+ \node [ opacity = .2 ] at (current~page)
+ { \includegraphics [ width = .4\linewidth ] {hdulogo} };
+ }
+ }
+
+\RequirePackage{tikzpagenodes}
+\NewDocumentCommand \notelines {O{20}}
+ {
+ \tikz [ remember~picture, overlay ]
+ {
+ \int_step_inline:nn { #1 - 1 }
+ {
+ \draw [ hdu, very~thick, opacity = .6 ]
+ ([yshift = -##1 * (\textheight + .6in - 15.87pt ) / #1 + .3in]
+ current~page~text~area.north~west) --++ (\linewidth, 0);
+ }
+ }
+ }
+
+\newcommand \meta[1]
+ {
+ \ensuremath \langle
+ \ifmmode \expandafter \nfss@text \fi
+ {
+ \itshape\ttfamily \edef \meta@hyphen@restore
+ { \hyphenchar \the \font \the \hyphenchar \font }
+ \hyphenchar \font \m@ne \language
+ \l@nohyphenation #1\/\meta@hyphen@restore
+ }
+ \ensuremath \rangle
+ }
+
+\endinput
diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-layout-module.code.tex b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-layout-module.code.tex
new file mode 100644
index 00000000000..48779c1ee96
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-layout-module.code.tex
@@ -0,0 +1,159 @@
+\hduthesis_provide_module:n {layout}
+
+\RequirePackage{geometry, array, setspace, fancyhdr, enumitem, cleveref}
+\RequirePackage[skip = 1.75ex, labelsep = quad, font = small]{caption}
+\fancyhf{}
+\pagestyle{fancy}
+\renewcommand*\headrulewidth {.8pt}
+\renewcommand*\thefigure {\arabic{chapter}-\arabic{figure}}
+\renewcommand*\thetable {\arabic{chapter}-\arabic{table}}
+\renewcommand*\theequation {\arabic{chapter}-\arabic{equation}}
+\AddToHook{env/figure/after}{\vspace*{-2.3ex}}
+\AddToHook{env/table/after}{\vskip-1.9ex}
+\setlist[enumerate,1]
+ {
+ label = (\,\arabic*\,), itemindent = 4em, leftmargin = 0em,
+ labelsep = 1ex, topsep = 0pt, itemsep = 0pt, partopsep = 0pt,
+ parsep = 0em, listparindent = 2\ccwd
+ }
+\crefformat{figure}{图#2#1#3}
+\crefformat{table}{表#2#1#3}
+
+\cs_new_protected:Npn \__hduthesis_cover_spread_box:nn #1#2
+ {
+ \mode_leave_vertical:
+ \hbox_to_wd:nn {#1}
+ { \exp_args:Nee \tl_map_inline:nn {#2} { ##1 \hfil } \unskip }
+ }
+\cs_new_protected:Npn \__hduthesis_cover_center_box:nn #1#2
+ { % by @egreg on tex.stackexchange.com
+ \mode_leave_vertical:
+ \dim_set:Nn \l_tmpa_dim {#1}
+ \global\setbox1 = \box\voidb@x
+ \group_begin:
+ \setbox0 = \vbox
+ {
+ \dim_set:Nn \hsize {#1}\relax
+ \dim_set:Nn \parindent {0pt}
+ \skip_set:Nn \leftskip {0pt plus 1fil}
+ \skip_set:Nn \rightskip {0pt plus -1fil}
+ \skip_set:Nn \parfillskip {0pt plus 2fil}
+ #2 \par
+ \loop
+ \setbox2 = \lastbox
+ \unless\ifvoid2
+ \global\setbox1 = \vtop
+ { \hbox to\hsize{\strut\unhbox2}
+ \vskip-4pt \hrule height .5pt
+ \vskip9.6pt \unvbox1
+ }
+ \unskip\unpenalty
+ \repeat
+ }
+ \group_end:
+ \box1
+ }
+
+\cs_new_protected_nopar:Npn \__hduthesis_process_array:NnnN #1#2#3#4
+ {
+ \seq_set_split:Nee \l__hduthesis_process_array_seq { / } {#1}
+ \seq_set_split:Nee \l__hduthesis_process_array_row_seq { \c_colon_str }
+ { \seq_item:Nn \l__hduthesis_process_array_seq {#2} }
+ \tl_if_eq:nnTF {#3} {:}
+ { \tl_gset:Ne #4 { \seq_use:Nn \l__hduthesis_process_array_row_seq {} } }
+ {
+ \tl_gset:Ne #4 { \seq_item:Nn \l__hduthesis_process_array_row_seq {#3} }
+ }
+ \seq_clear:N \l__hduthesis_process_array_seq
+ \seq_clear:N \l__hduthesis_process_array_row_seq
+ }
+\clist_set:Nn \g_system_month_clist
+ {
+ January, February, March, April, May, June, July,
+ August, September, October, November, December
+ }
+\keys_define:nn { hduthesis / docinfo }
+ {
+ title .clist_set:N = \l__docinfo_title_tl,
+ department .tl_set:N = \l__docinfo_department_tl,
+ major .tl_set:N = \l__docinfo_major_tl,
+ class .tl_set:N = \l__docinfo_class_tl,
+ stdntid .tl_set:N = \l__docinfo_stdntid_tl,
+ author .clist_set:N = \l__docinfo_author_tl,
+ supervisor .tl_set:N = \l__docinfo_supervisor_tl,
+ bibsource .tl_set:N = \l__docinfo_bibsource_tl,
+ }
+\NewDocumentCommand \DocInfo { m }
+ {
+ \keys_set:nn { hduthesis / docinfo } {#1}
+ \__hduthesis_docinfo_process_aux:
+ \__hduthesis_docinfo_degree_if_aux:
+ }
+\cs_set_protected_nopar:Nn \__hduthesis_docinfo_process_aux:
+ {
+ \__hduthesis_process_array:NnnN \l__docinfo_title_tl {1} {:} \@title
+ \__hduthesis_process_array:NnnN \l__docinfo_title_tl {2} {:}
+ \l__docinfo_entitle_tl
+ \__hduthesis_process_array:NnnN \l__docinfo_author_tl {1} {:} \@author
+ \__hduthesis_process_array:NnnN \l__docinfo_author_tl {2} {:}
+ \l__docinfo_enauthor_tl
+ \__hduthesis_process_array:NnnN \l__docinfo_supervisor_tl {1} {1}
+ \l__docinfo_cnrole_tl
+ \__hduthesis_process_array:NnnN \l__docinfo_supervisor_tl {1} {2}
+ \l__docinfo_cnsupervisor_tl
+ \__hduthesis_process_array:NnnN \l__docinfo_supervisor_tl {2} {1}
+ \l__docinfo_enrole_tl
+ \__hduthesis_process_array:NnnN \l__docinfo_supervisor_tl {2} {2}
+ \l__docinfo_ensupervisor_tl
+ \bool_if:NF \g__hduthesis_agreement_bool
+ { \tl_clear:N \l__docinfo_bibsource_tl }
+ \tl_if_empty:NTF \l__docinfo_bibsource_tl
+ {
+ \newcommand*\printbibliography{\chapter*{参考文献}}
+ \newcounter {citecount}
+ \renewcommand*\cite[1]
+ {
+ \refstepcounter{citecount}
+ \textsuperscript{[\thecitecount]}
+ }
+ }
+ {
+ \RequirePackage[sort&compress]{gbt7714}
+ \bibliographystyle{gbt7714-numerical}
+ \dim_set:Nn \bibsep {.35ex}
+ \newcommand*\printbibliography
+ {
+ \bibliography { \l__docinfo_bibsource_tl }
+ \addcontentsline{toc}{chapter}{参考文献}
+ }
+ }
+ }
+
+\cs_new_protected_nopar:Npn \__hduthesis_signature_process_aux:nnn #1#2#3
+ {
+ \clist_set:Nn \l__hduthesis_signature_process_clist {#1}
+ \seq_set_split:Nne \l__hduthesis_signature_figure_seq {/}
+ { \clist_item:Nn \l__hduthesis_signature_process_clist {#2} }
+ \int_compare:nNnTF {#3} = {0}
+ {
+ \tl_set:Ne \l__hduthesis_signature_figure_tl
+ { \seq_item:Nn \l__hduthesis_signature_figure_seq { #3 + 1 } }
+ \seq_clear:N \l__hduthesis_signature_figure_seq
+ }
+ {
+ \seq_set_split:Nne \l__hduthesis_signature_date_seq {-}
+ { \seq_item:Nn \l__hduthesis_signature_figure_seq {2} }
+ \seq_item:Nn \l__hduthesis_signature_date_seq {#3}
+ \seq_clear:N \l__hduthesis_signature_date_seq
+ }
+ \clist_clear:N \l__hduthesis_signature_process_clist
+ }
+
+\NewDocumentCommand \signature { m }
+ {
+ \leavevmode@ifvmode
+ \lower \dimexpr \f@size\p@ * 9/16
+ \hbox { \includegraphics [ height = { \fp_eval:n {2*\f@size}\p@ } ] {#1} }
+ }
+
+\endinput
diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-pg.config-module.code.tex b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-pg.config-module.code.tex
new file mode 100644
index 00000000000..cd11c0fccad
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-pg.config-module.code.tex
@@ -0,0 +1,282 @@
+\ExplSyntaxOn \makeatletter
+\hduthesis_provide_module:n {pg.config}
+
+\geometry { top = 2.8cm, bottom = 3.2cm, left = 3.2cm, right = 3.2cm,
+ headheight = 15pt, headsep = .72cm, footskip = 1.5cm }
+\fancyhead[C]
+ { \raisebox { .12ex } { \small 杭州电子科技大学硕士学位论文 } }
+\hook_gput_code:nnn { cmd/tableofcontents/after } { . }
+ {
+ \clearpage
+ \pagenumbering{arabic}
+ \cfoot{\small \thepage}
+ }
+
+\RenewDocumentCommand \maketitle {}
+ {
+ \newgeometry{margin = 2.75cm}
+ \begin{titlepage}
+ \__hduthesis_cover_pg_aux:
+ \end{titlepage}
+ \titlepage
+ \__hduthesis_cnoverleaf_pg_aux:
+ \endtitlepage
+ \titlepage
+ \__hduthesis_enoverleaf_pg_aux:
+ \endtitlepage
+ \restoregeometry
+ \pagenumbering{Roman}
+ \cfoot {\small \thepage}
+ }
+\cs_new_protected_nopar:Nn \__hduthesis_cover_pg_aux:
+ {
+ \begin{center}
+ \null
+ \includegraphics[height = 2.35cm]{hdutitle}
+ \par \vspace*{40\p@}
+ { \LARGE\__hduthesis_cover_spread_box:nn {.575\linewidth} {硕士学位论文} }
+ \par\vspace*{100\p@}
+ \semiLarge 题 \qquad 目:
+ \__hduthesis_cover_center_box:nn { .75\linewidth } { \kaishu \@title }
+ \vspace*{24\p@}\par
+ \begin{tabular}
+ { >{\semiLarge\centering\arraybackslash}p{4\ccwd}@{}
+ >{\semiLarge\centering\arraybackslash\kaishu}p{.65\linewidth}@{} }
+ \__hduthesis_cover_spread_box:nn { 4\ccwd } { 研究生 } &
+ \__hduthesis_cover_center_box:nn { .96\linewidth } { \@author }\\
+ \__hduthesis_cover_spread_box:nn { 4\ccwd } { 专业 } &
+ \__hduthesis_cover_center_box:nn { .96\linewidth }
+ { \l__docinfo_major_tl }\\
+ \__hduthesis_cover_spread_box:nn { 4\ccwd } { 指导教师 } &
+ \__hduthesis_cover_center_box:nn { .96\linewidth }
+ {
+ \l__docinfo_cnsupervisor_tl \qquad \l__docinfo_cnrole_tl
+ }\\[13.5ex]
+ \semilarge 完成日期 &
+ \__hduthesis_cover_center_box:nn { .96\linewidth }
+ { \semilarge
+ \textsf{\int_use:N \c_sys_year_int} 年
+ \textsf{\int_use:N \c_sys_month_int} 月
+ }
+ \end{tabular}
+ \end{center}
+ }
+
+\cs_new_protected_nopar:Nn \__hduthesis_cnoverleaf_pg_aux:
+ {
+ \begin{center}
+ \vspace*{25\p@}
+ { \LARGE 杭州电子科技大学硕士学位论文 }
+ \vspace*{140\p@} \par
+ \begin{spacing}{1.15}
+ \huge\textsf{ \@title }
+ \end{spacing}
+ \vspace*{128\p@} \par
+ \begin{tabular}{>{\semiLarge}p{6.25\ccwd}>{\semiLarge\kaishu}l}
+ \__hduthesis_cover_spread_box:nn { 4\ccwd } {研究生}:&
+ \__hduthesis_cover_spread_box:nn { 4\ccwd } { \@author }\\[2ex]
+ \__hduthesis_cover_spread_box:nn { 4\ccwd } {指导教师}:&
+ \__hduthesis_cover_spread_box:nn { 4\ccwd }
+ { \l__docinfo_cnsupervisor_tl } \hskip1.5em \l__docinfo_cnrole_tl
+ \end{tabular}
+ \par \vspace{60\p@} \semilarge
+ \textsf{\int_use:N \c_sys_year_int} \kaishu 年
+ \textsf{\int_use:N \c_sys_month_int} \kaishu 月
+ \end{center}
+ }
+
+\cs_new_protected_nopar:Nn \__hduthesis_enoverleaf_pg_aux:
+ {
+ \begin{center}
+ \vspace*{16\p@}{\bfseries \semilarge
+ Dissertation~Submitted~to~Hangzhou~Dianzi~University\\[.8ex]
+ for~the~Degree~of~Master}
+ \vspace*{120\p@} \par
+ \begin{spacing}{1.12}
+ \huge\bfseries\l__docinfo_entitle_tl
+ \end{spacing}
+ \vspace*{112\p@} \par
+ \begin{tabular}
+ { >{\bfseries\large}l
+ >{\bfseries\large}l
+ }
+ \__hduthesis_cover_spread_box:nn { 5em } {Candidate:~} &
+ \l__docinfo_enauthor_tl\\[3ex]
+ \__hduthesis_cover_spread_box:nn { 5em } {Supervisor:~} &
+ \l__docinfo_enrole_tl{}~ \l__docinfo_ensupervisor_tl
+ \\[11ex]
+ \end{tabular}
+ \vspace*{8\p@}\par
+ \bfseries \large
+ \clist_item:Nn
+ \g_system_month_clist { \int_use:N \c_sys_month_int },~
+ \int_use:N \c_sys_year_int
+ \end{center}
+ }
+\NewDocumentCommand \commitment { O{} }
+ {
+ \cfoot {}
+ \newgeometry{margin = 2.75cm}
+ \titlepage
+ \__hduthesis_commitment_pg_aux:n {#1}
+ \endtitlepage
+ \restoregeometry
+ \cfoot {\small \thepage}
+ }
+\cs_new_protected_nopar:Npn \__hduthesis_commitment_pg_aux:n #1
+ {
+ \vspace*{-12\p@}
+ \begin{center}
+ \large
+ 杭州电子科技大学\\[1ex] 学位论文原创性声明和使用授权说明
+ \end{center}
+ \vspace*{20\p@}
+ \begin{center}
+ \semilarge 原创性声明
+ \end{center}
+ \par \vspace*{.4\baselineskip}
+ \begin{spacing}{1.65}
+ 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。
+ 除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。
+ 对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。\par
+ \noindent 申请学位论文与资料若有不实之处,本人承担一切相关责任。
+ \par \vspace*{1.25\baselineskip}
+ \noindent \makebox[.45\linewidth][l]
+ {
+ 论文作者签名:
+ \__hduthesis_signature_process_aux:nnn {#1}{1}{0}
+ \tl_if_empty:NF \l__hduthesis_signature_figure_tl
+ {
+ \signature { \l__hduthesis_signature_figure_tl }
+ \tl_clear:N \l__hduthesis_signature_figure_tl
+ }
+ }
+ 日期:
+ \makebox [ 2.5em ] [ l ]
+ { \__hduthesis_signature_process_aux:nnn {#1}{1}{1} } 年
+ \makebox [ 2em ] { \__hduthesis_signature_process_aux:nnn {#1}{1}{2} } 月
+ \makebox [ 2em ] { \__hduthesis_signature_process_aux:nnn {#1}{1}{3} } 日
+ \par\vspace*{20\p@}
+ \begin{center}
+ \semilarge 学位论文使用授权说明
+ \end{center}
+ \par \vspace*{.4\baselineskip}
+ 本人完全了解杭州电子科技大学关于保留和使用学位论文的规定,
+ 即:研究生在校攻读学位期间论文工作的知识产权单位属杭州电子科技大学。
+ 本人保证毕业离校后,发表论文或使用论文工作成果时署名单位仍然为杭州电子科技大学。
+ 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内容,
+ 可以允许采用影印、缩印或其它复制手段保存论文。(保密论文在解密后遵守此规定)
+ \par \vspace*{1.25\baselineskip}
+ \noindent \makebox[.45\linewidth][l]
+ {
+ 论文作者签名:
+ \__hduthesis_signature_process_aux:nnn {#1}{2}{0}
+ \tl_if_empty:NF \l__hduthesis_signature_figure_tl
+ {
+ \signature { \l__hduthesis_signature_figure_tl }
+ \tl_clear:N \l__hduthesis_signature_figure_tl
+ }
+ }
+ 日期:
+ \makebox [ 2.5em ] [ l ]
+ { \__hduthesis_signature_process_aux:nnn {#1}{2}{1} } 年
+ \makebox [ 2em ]
+ { \__hduthesis_signature_process_aux:nnn {#1}{2}{2} } 月
+ \makebox [ 2em ]
+ { \__hduthesis_signature_process_aux:nnn {#1}{2}{3} } 日
+ \par \vspace*{\baselineskip}
+ \noindent \makebox[.45\linewidth][l]
+ {
+ 指导教师签名:
+ \__hduthesis_signature_process_aux:nnn {#1}{3}{0}
+ \tl_if_empty:NF \l__hduthesis_signature_figure_tl
+ {
+ \signature { \l__hduthesis_signature_figure_tl }
+ \tl_clear:N \l__hduthesis_signature_figure_tl
+ }
+ }
+ 日期:
+ \makebox [ 2.5em ] [ l ]
+ { \__hduthesis_signature_process_aux:nnn {#1}{3}{1} } 年
+ \makebox [ 2em ]
+ { \__hduthesis_signature_process_aux:nnn {#1}{3}{2} } 月
+ \makebox [ 2em ]
+ { \__hduthesis_signature_process_aux:nnn {#1}{3}{3} } 日
+ \end{spacing}
+ }
+
+\RenewDocumentEnvironment {abstract} { O{en} }
+ {
+ \str_if_eq:nnT {#1} {en}
+ {
+ \tl_set:Nn \l__keywords_name_tl {Keywords:~}
+ \tl_set:Nn \l__keywords_sep_tl {,~}
+ \@beginparpenalty\@lowpenalty
+ \chapter*{\normalfont\bfseries Abstract}
+ \addcontentsline{toc}{chapter}{\bfseries Abstract}
+ }
+ \str_if_eq:nnT {#1} {cn}
+ {
+ \tl_set:Nn \l__keywords_name_tl {\textsf{关键词:}}
+ \tl_set:Nn \l__keywords_sep_tl {,}
+ \@beginparpenalty\@lowpenalty
+ \chapter*{摘要}
+ \addcontentsline{toc}{chapter}{摘要}
+ }
+ }
+ {
+ \tl_clear:N \l__abstract_name_tl
+ \clearpage
+ }
+
+\clist_new:N \l__abstract_keywords_clist
+\NewDocumentCommand \keywords { m }
+ {
+ \par \vspace*{\baselineskip}
+ \noindent\textbf{\l__keywords_name_tl}
+ \clist_set:Nn \l__abstract_keywords_clist {#1}
+ \clist_use:Nn \l__abstract_keywords_clist {\l__keywords_sep_tl}
+ }
+
+\RequirePackage{tocloft}
+\renewcommand \contentsname {\hfill 目录 \hfill}
+\renewcommand* \cfttoctitlefont{\sffamily\semiLarge}
+\dim_set:Nn \cftbeforetoctitleskip {12pt}
+\dim_set:Nn \cftaftertoctitleskip {24pt}
+\dim_set:Nn \cftbeforechapskip {1pt}
+\dim_set:Nn \cftbeforesecskip {-.2pt}
+\patchcmd { \@dottedtocline }
+ { \leaders \hbox { $\m@th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$ } }
+ { \kern 4pt \leaders \hbox { $\m@th\mkern .4 mu\hbox{.}\mkern .4 mu$ } } {}{}
+\renewcommand* \l@chapter {\@dottedtocline{1}{0em}{1.6em}}
+\renewcommand* \l@section {\@dottedtocline{1}{2.3em}{2.1em}}
+\renewcommand* \@dotsep {1.7}
+\renewcommand* \@pnumwidth {2.5ex}
+\renewcommand* \cftchapfont {\normalfont}
+\setcounter{tocdepth}{1}
+
+\ctexset
+ {
+ chapter =
+ {
+ aftername = \hspace{.5\ccwd}, fixskip = true,
+ beforeskip = 32pt, afterskip = 32pt,
+ format+ = \sffamily\semiLarge,
+ pagestyle = fancy
+ },
+ section =
+ {
+ aftername = \hspace{.5\ccwd}, fixskip = true,
+ beforeskip = 2ex, afterskip = 2.75ex,
+ format = \sffamily\large
+ },
+ subsection =
+ {
+ aftername = \hspace{.5\ccwd}, fixskip = true,
+ beforeskip = 2ex, afterskip = 2.75ex,
+ format = \sffamily\semilarge
+ }
+ }
+
+\makeatother \ExplSyntaxOff
+\endinput
diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-typeset-module.code.tex b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-typeset-module.code.tex
new file mode 100644
index 00000000000..6bcdc3e43f4
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-typeset-module.code.tex
@@ -0,0 +1,53 @@
+\hduthesis_provide_module:n {typeset}
+
+\RequirePackage { circuitikz, pgfplots, listings, hologo,
+ lipsum, zhlipsum, booktabs, multicol }
+\pgfplotsset { compat = newest }
+\hologoFontSetup { general = \sffamily }
+\graphicspath
+ {
+ {./figure/}{./figures/}{./image/}{./images/}
+ {./graphics/}{./graphic/}{./pictures/}{./picture/}
+ }
+
+\linespread{1.39}
+\dim_set:Nn \parindent { 2\ccwd }
+\newcommand \semilarge { \@setfontsize \semilarge{14}{16.5} }
+\newcommand \semiLarge { \@setfontsize \semiLarge{16.5}{17.5} }
+
+\setmainfont{texgyretermes}
+ [
+ Extension = .otf, UprightFont = *-regular, BoldFont = *-bold,
+ ItalicFont = *-italic, BoldItalicFont = *-bolditalic
+ ]
+\setsansfont{texgyreheros}
+ [
+ Extension = .otf, BoldItalicFont = *-bolditalic,
+ UprightFont = *-regular, BoldFont = *-bold,
+ ItalicFont = *-italic, Scale = .9
+ ]
+
+\RequirePackage { amssymb, mathtools, cancel, fixdif, derivative, siunitx }
+\file_if_exist:nTF { physics2.sty }
+ {
+ \RequirePackage{physics2}
+ \usephysicsmodule{ ab, braket, op.legacy, bm-um.legacy }
+ } { \RequirePackage{bm} }
+\RequirePackage
+ [ warnings-off = { mathtools-colon, mathtools-overbracket } ] {unicode-math}
+\AtBeginDocument
+ {
+ \dim_set:Nn \abovedisplayskip {3pt}
+ \dim_set:Nn \belowdisplayskip {3pt}
+ }
+
+\tl_if_empty:NF \g__hduthesis_math_font
+ { \setmathfont { \g__hduthesis_math_font } }
+\tl_if_empty:NF \g__hduthesis_main_CJK_font
+ { \exp_last_unbraced:No \setCJKmainfont \g__hduthesis_main_CJK_font }
+\tl_if_empty:NF \g__hduthesis_sans_CJK_font
+ { \exp_last_unbraced:No \setCJKsansfont \g__hduthesis_sans_CJK_font }
+\tl_if_empty:NF \g__hduthesis_mono_CJK_font
+ { \exp_last_unbraced:No \setCJKmonofont \g__hduthesis_mono_CJK_font }
+
+\endinput
diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis.cls b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis.cls
new file mode 100644
index 00000000000..dca7cca40b0
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis.cls
@@ -0,0 +1,184 @@
+%% *****************************************************************************
+%% Copyright 2024 by M.Y. XIA <xiamyphys@gmail.com> *
+%% *
+%% This work may be distributed and/or modified under the conditions of the *
+%% LaTeX Project Public License *
+%% *
+%% http://www.latex-project.org/lppl.txt *
+%% *
+%% either version 1.3c of this license or any later version. *
+%% *
+%% This work has the LPPL maintenance status `maintained'. *
+%% *
+%% The Current Maintainers of this work is M.Y. XIA *
+%% *
+%% This work consists of the files hduthesis.cls, *
+%% hduthesis-typeset-module.code, *
+%% hduthesis-layout-module.code, *
+%% hduthesis-bc.config-module.code, *
+%% hduthesis-pg.config-module.code, *
+%% beamerthemehdu.sty, *
+%% hduthesis-hdu.stationery-module.code, *
+%% *
+%% hduthesis-hdu.l3doc-module.code, *
+%% and README.md. *
+%% available at https://github.com/myhsia/hduthesis *
+%% *****************************************************************************
+\def\hduthesis@date{2025/01/04}
+\def\hduthesis@version{0.5.2}
+\def\hduthesis@maintainerid{myhsia}
+
+\RequirePackage{etoolbox}
+\ProvidesExplClass{hduthesis} {\hduthesis@date} {\hduthesis@version}
+ {LaTeX Template Bundle for Hangzhou Dianzi University}
+
+\cs_if_exist:NF \seq_set_split:Nne
+ { \cs_generate_variant:Nn \seq_set_split:Nnn { Nne } }
+\cs_if_exist:NF \seq_set_split:Nee
+ { \cs_generate_variant:Nn \seq_set_split:Nnn { Nee } }
+\cs_if_exist:NF \tl_set:Ne
+ { \cs_generate_variant:Nn \tl_set:Nn { Ne } }
+\cs_if_exist:NF \tl_gset:Ne
+ { \cs_generate_variant:Nn \tl_gset:Nn { Ne } }
+
+\cs_new_protected:Npn \hduthesis_msg_new:nn #1#2
+ { \msg_new:nnn { hduthesis } {#1} {#2} }
+\cs_new_protected:Npn \hduthesis_msg_error:nn #1#2
+ { \msg_error:nnn { hduthesis } {#1} {#2} }
+\cs_generate_variant:Nn \hduthesis_msg_error:nn { nx }
+\cs_new_protected:Npn \hduthesis_msg_warning:nn #1#2
+ { \msg_warning:nnn { hduthesis } {#1} {#2} }
+\cs_generate_variant:Nn \hduthesis_msg_warning:nn { nx }
+
+\hduthesis_msg_new:nn { not found module }
+ { The~hduthesis~module~`#1'~not~found. }
+\hduthesis_msg_new:nn { unknown mode }
+ { Unknown~hduthesis~mode~`#1',~ loading~mode~`thesis'~instead. }
+\hduthesis_msg_new:nn { Users Agreement }
+ { \exp_not:n
+ {
+ 编译受阻!~ 使用模板前请阅读用户手册封面上的「用户协议」~
+ !!!模板作者(@myhsia)不对使用本模板产生的格式审查问题负责!!!~
+ 如果您同意用户协议,在全局选项中添加 `agreed' 即可解除本错误~
+ 欢迎您通过邮件(myhsia@hdu.edu.cn)或GitHub提交反馈意见
+ }
+ }
+\cs_new_protected_nopar:Npn \hduthesis_load_module:n #1
+ {
+ \clist_map_inline:nn {#1}
+ {
+ \file_if_exist_input:nF { hduthesis-##1-module.code.tex }
+ { \hduthesis_msg_error:nn { not found module } {##1} }
+ }
+ }
+\cs_new_protected_nopar:Npn \hduthesis_provide_module:n #1
+ {
+ \ProvidesExplFile{hduthesis-#1-module.code.tex}
+ {\hduthesis@date}{\hduthesis@version}
+ {hduThesiS~ \text_titlecase:n {#1} ~Module}
+ }
+
+\clist_new:N \g__hdu_base_class_options_clist
+\keys_define:nn { hduthesis / classoption }
+ {
+ agreed .bool_set:N = \g__hduthesis_agreement_bool,
+ agreed .initial:n = false,
+ agreed .default:n = true,
+ mode .tl_set:N = \g__hduthesis_mode_tl,
+ math-font .tl_set:N = \g__hduthesis_math_font,
+ CJKmain-font .tl_set:N = \g__hduthesis_main_CJK_font,
+ CJKsans-font .tl_set:N = \g__hduthesis_sans_CJK_font,
+ CJKmono-font .tl_set:N = \g__hduthesis_mono_CJK_font,
+ unknown .code:n = \__hduthesis_unknown_option:n {#1},
+ }
+\cs_new_protected_nopar:Npn \__hduthesis_unknown_option:n #1
+ {
+ \tl_if_empty:nTF { #1 }
+ {
+ \clist_gput_right:NV \g__hdu_base_class_options_clist \l_keys_key_str
+ }
+ {
+ \exp_args:NNx \clist_gput_right:Nn \g__hdu_base_class_options_clist
+ { \l_keys_key_str = \exp_not:n {#1} }
+ }
+ }
+\ProcessKeyOptions [ hduthesis / classoption ]
+
+\bool_if:nT
+ {
+ !\str_if_empty_p:N \g__hduthesis_mode_tl &&
+ !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { thesis } &&
+ !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { beamer } &&
+ !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { stationery } &&
+ % !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { exam } &&
+ !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { l3doc }
+ }
+ { \hduthesis_msg_warning:nx { unknown mode } { \g__hduthesis_mode_tl } }
+
+\str_if_eq:eeT { \g__hduthesis_mode_tl } { beamer }
+ {
+ \PassOptionsToClass { aspectratio = 2013 } { beamer }
+ \exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { beamer }
+ \usetheme{hdu}
+ \endinput
+ }
+
+\str_if_eq:eeT { \g__hduthesis_mode_tl } { stationery }
+ {
+ \PassOptionsToClass { 12pt } { letter }
+ \exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { letter }
+ \hduthesis_load_module:n { hdu.stationery }
+ \endinput
+ }
+
+% \str_if_eq:eeT { \g__hduthesis_mode_tl } { exam }
+% {
+% \exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { article }
+% \hduthesis_load_module:n { hdu.exam }
+% \endinput
+% }
+
+\str_if_eq:eeT { \g__hduthesis_mode_tl } { l3doc }
+ {
+ \PassOptionsToClass { 11pt, letterpaper, kernel } { l3doc }
+ \exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { l3doc }
+ \hduthesis_load_module:n { hdu.l3doc }
+ \endinput
+ }
+
+\bool_if:nT
+ {
+ \str_if_eq_p:ee { \g__hduthesis_mode_tl } { thesis } ||
+ !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { beamer } ||
+ !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { stationery } ||
+ % !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { exam } ||
+ !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { l3doc }
+ }
+ {
+ \PassOptionsToClass { a4paper, zihao = -4 } { ctexrep }
+ \PassOptionsToPackage { quiet, no-math } { xeCJK }
+ \exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { ctexrep }
+ \bool_if:NTF \g__hduthesis_agreement_bool
+ {
+ \RequirePackage{hyperref}
+ \pdfstringdefDisableCommands
+ {
+ \def \cite#1 {<#1>}
+ \def \hologoRobust#1 {<#1>}
+ }
+ \AtBeginDocument
+ { \hypersetup { hidelinks, pdfproducer = hduThesiS~by~Mingyu~Xia } }
+ } { \hduthesis_msg_error:nn { Users Agreement } { Unconfirmed } }
+ \hduthesis_load_module:n { typeset }
+ \hduthesis_load_module:n { layout }
+ \cs_new_protected:Nn \__hduthesis_docinfo_degree_if_aux:
+ {
+ \int_compare:nNnTF { \tl_count:N \l__docinfo_stdntid_tl } = { 8 }
+ { \hduthesis_load_module:n { bc.config } }
+ { \hduthesis_load_module:n { pg.config } }
+ }
+ \endinput
+ }
+
+\endinput
+% End of file hduthesis.cls
diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hdutitle.pdf b/Master/texmf-dist/tex/xelatex/hduthesis/hdutitle.pdf
new file mode 100644
index 00000000000..ae87ea461e5
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/hdutitle.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/xelatex/langsci/langsci-affiliations.sty b/Master/texmf-dist/tex/xelatex/langsci/langsci-affiliations.sty
index c5c8a01862e..347f0363b17 100644
--- a/Master/texmf-dist/tex/xelatex/langsci/langsci-affiliations.sty
+++ b/Master/texmf-dist/tex/xelatex/langsci/langsci-affiliations.sty
@@ -17,7 +17,7 @@
%% langsci-affiliations was developed at Language Science Press to help in the
%% production of scientific texts in linguistics.
%%
-%% Copyright (C) 2023 by Felix Kopecky, Language Science Press
+%% Copyright (C) 2023–2024 by Language Science Press
%%
%% This work consists of the file langsci-affiliations.dtx
%% and the derived files langsci-affiliations.sty,
@@ -46,8 +46,7 @@
\RequirePackage{xparse}
-\ProvidesExplPackage {langsci-affiliations}
-{2023-10-12} {1.2}
+\ProvidesExplPackage {langsci-affiliations} {2024-04-09} {1.4}
{A LaTeX3 package to collect and order authors and affiliations}
\NewDocumentCommand{\ResolveAffiliations}{ O{} +m }
@@ -110,6 +109,10 @@
= \l__affiliations_afil_separator_tl,
separator~between~affiliations .initial:n
= {~},
+ output~authors~paragraph~format .cs_set:Np
+ = \__affiliations_output_authors_paragraph_format:,
+ output~authors~paragraph~format .initial:n
+ = {\raggedright},
output~authors~font .cs_set:Np
= \__affiliations_output_authors_font:,
output~authors~font .initial:n
@@ -118,6 +121,10 @@
= \__affiliations_output_affiliation_font:,
output~affiliation~font .initial:n
= {\normalsize},
+ output~affiliation~paragraph~format .cs_set:Np
+ = \__affiliations_output_affiliation_paragraph_format:,
+ output~affiliation~paragraph~format .initial:n
+ = {\raggedright},
input~names~separator .tl_set:N
= \l__affiliations_input_names_sep_tl,
input~names~separator .initial:n
@@ -125,7 +132,11 @@
input~affiliation~separator .tl_set:N
= \l_affiliations_input_afil_sep_tl,
input~affiliation~separator .initial:n
- = {;}
+ = {;},
+ author~affiliation~skip .dim_set:N
+ = \l__author_affil_sep_dim,
+ author~affiliation~skip .initial:n
+ = {0.5ex}
}
\cs_generate_variant:Nn \prop_put:Nnn { Nxx }
@@ -267,7 +278,8 @@
\seq_put_right:Nx \l__affiliations_tmpa_seq
{
\tl_rescan:nn {} {##1}
- \exp_not:N \textsuperscript{\tl_use:N \l__affiliations_tmpb_tl}
+ \exp_not:N
+ \textsuperscript{\tl_use:N \l__affiliations_tmpb_tl}
}
}
{before}
@@ -276,7 +288,8 @@
{
\exp_not:N \__affiliations_recover_orcid:n { ##1 }
\tl_rescan:nn {} {##1}
- \exp_not:N \textsuperscript{\tl_use:N \l__affiliations_tmpb_tl}
+ \exp_not:N
+ \textsuperscript{\tl_use:N \l__affiliations_tmpb_tl}
}
}
{after}
@@ -285,7 +298,8 @@
{
\tl_rescan:nn {} {##1}
\exp_not:N \__affiliations_recover_orcid:n { ##1 }
- \exp_not:N \textsuperscript{\tl_use:N \l__affiliations_tmpb_tl}
+ \exp_not:N
+ \textsuperscript{\tl_use:N \l__affiliations_tmpb_tl}
}
}
}
@@ -329,6 +343,8 @@
{}
\l__affiliations_names_tmp_tl
+ \tl_trim_spaces:N \l__affiliations_names_tmp_tl
+
\prop_put:Nxx \l__affiliations_tmpa_prop
{ \tl_use:N \l__affiliations_names_tmp_tl }
@@ -345,12 +361,23 @@
\prop_map_function:NN \l__affiliations_tmpa_prop
\__affiliations_resolve_affiliations:
\group_begin:
- \__affiliations_output_authors_font:
- \__affiliations_output_authors:
- \group_end:\\[0.5ex]
+ \noindent
+ \parbox {\linewidth}
+ {
+ \__affiliations_output_authors_paragraph_format:
+ \__affiliations_output_authors_font:
+ \__affiliations_output_authors:
+ }
+ \group_end:
+ \skip_vertical:N \l__author_affil_sep_dim
\group_begin:
- \__affiliations_output_affiliation_font:
- \__affiliations_output_affiliations:
+ \noindent
+ \parbox {\linewidth}
+ {
+ \__affiliations_output_affiliation_paragraph_format:
+ \__affiliations_output_affiliation_font:
+ \__affiliations_output_affiliations:
+ }
\group_end:
}
{
@@ -365,8 +392,8 @@
{
\group_begin:
\exp_not:N \__affiliations_output_authors_font:
- \tl_rescan:nn {} {##1}\\[0.5ex]
- \group_end:
+ \tl_rescan:nn {} {##1}
+ \group_end:\\[\dim_use:N \l__author_affil_sep_dim]
\group_begin:
\exp_not:N \__affiliations_output_affiliation_font:
\tl_rescan:nn {} {##2}
@@ -380,7 +407,7 @@
\group_begin:
\exp_not:N \__affiliations_output_authors_font:
\exp_not:N \__affiliations_recover_orcid:n { ##1 }
- \tl_rescan:nn {} {##1}\\[0.5ex]
+ \tl_rescan:nn {} {##1}\\[\dim_use:N \l__author_affil_sep_dim]
\group_end:
\group_begin:
\exp_not:N \__affiliations_output_affiliation_font:
@@ -395,7 +422,8 @@
\group_begin:
\exp_not:N \__affiliations_output_authors_font:
\tl_rescan:nn {} {##1}
- \exp_not:N \__affiliations_recover_orcid:n { ##1 }\\[0.5ex]
+ \exp_not:N \__affiliations_recover_orcid:n { ##1 }
+ \\[\dim_use:N \l__author_affil_sep_dim]
\group_end:
\group_begin:
\exp_not:N \__affiliations_output_affiliation_font:
@@ -405,6 +433,7 @@
}
}
}
+ \noindent
\seq_use:Nnnn \l__affiliations_tmpa_seq
{\l__affiliations_separator_between_two_tl}
{\l__affiliations_separator_between_mult_tl}
@@ -421,24 +450,27 @@
{
{none}
{
- \seq_put_right:Nx \l__affiliations_tmpa_seq
- { \tl_rescan:nn {} {##1} }
+ \seq_put_right:Nx
+ \l__affiliations_tmpa_seq
+ { \tl_rescan:nn {} {##1} }
}
{before}
{
- \seq_put_right:Nx \l__affiliations_tmpa_seq
- {
- \exp_not:N \__affiliations_recover_orcid:n { ##1 }
- \tl_rescan:nn {} {##1}
- }
+ \seq_put_right:Nx
+ \l__affiliations_tmpa_seq
+ {
+ \exp_not:N \__affiliations_recover_orcid:n { ##1 }
+ \tl_rescan:nn {} {##1}
+ }
}
{after}
{
- \seq_put_right:Nx \l__affiliations_tmpa_seq
- {
- \tl_rescan:nn {} {##1}
- \exp_not:N \__affiliations_recover_orcid:n { ##1 }
- }
+ \seq_put_right:Nx
+ \l__affiliations_tmpa_seq
+ {
+ \tl_rescan:nn {} {##1}
+ \exp_not:N \__affiliations_recover_orcid:n { ##1 }
+ }
}
}
}
diff --git a/Master/texmf-dist/tex/xelatex/langsci/langsci-gb4e.sty b/Master/texmf-dist/tex/xelatex/langsci/langsci-gb4e.sty
index bead897229a..5b434b71f7f 100644
--- a/Master/texmf-dist/tex/xelatex/langsci/langsci-gb4e.sty
+++ b/Master/texmf-dist/tex/xelatex/langsci/langsci-gb4e.sty
@@ -1,7 +1,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% File: langsci-gb4e.sty
%% Author: Language Science Press (http://langsci-press.org)
-%% Date: 2022-10-21
+%% Date: 2024-12-03
%% Purpose: This file contains an adapted version of the gb4e package
%% for typetting linguistic examples. It also includes
%% adapted versions of the cgloss and jambox packages
@@ -9,17 +9,20 @@
%% Licence: The LaTeX Project Public License, Version 1.3c
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{langsci-gb4e}[2022/10/21]
+\ProvidesPackage{langsci-gb4e}[2024/12/03]
\usepackage{etoolbox}
\newtoggle{cgloss}
\toggletrue{cgloss}
+\DeclareOption{nocgloss}{\togglefalse{cgloss}}
\newtoggle{jambox}
\toggletrue{jambox}
-\newtoggle{gb4eLowerPenalty}
-\DeclareOption{nocgloss}{\togglefalse{cgloss}}
\DeclareOption{nojambox}{\togglefalse{jambox}}
+\newtoggle{autoexewidth}
+\toggletrue{autoexewidth}
+\DeclareOption{manualexewidth}{\togglefalse{autoexewidth}}
+\newtoggle{gb4eLowerPenalty}
\DeclareOption{lowerpenalty}{\toggletrue{gb4eLowerPenalty}}
\DeclareOption*{\PackageWarning{langsci-gb4e}{Unknown option ‘\CurrentOption’}}
\ProcessOptions\relax
@@ -242,10 +245,17 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\exe{%
+ \iftoggle{autoexewidth}{%
%\ifnum\value{equation}>9 \exewidth{(23)}\else\fi%
%inserted by LangSci, for large example numbers
- \ifnum\value{equation}>998 \exewidth{(1235)}\else\ifnum\value{equation}>98 \exewidth{(235)}\fi\fi%
- \@ifnextchar [{\@exe}{\@exe[\@exwidth]}}
+ \ifnum\value{equation}>998%
+ \exewidth{(1235)}%
+ \else\ifnum\value{equation}>98%
+ \exewidth{(235)}%
+ \fi\fi%
+ }{}%
+ \@ifnextchar [{\@exe}{\@exe[\@exwidth]}%
+}
\def\@exe[#1]{\ifnum \@xnumdepth >0%
\if@xrec\@exrecwarn\fi%
diff --git a/Master/texmf-dist/tex/xelatex/langsci/langsci-optional.sty b/Master/texmf-dist/tex/xelatex/langsci/langsci-optional.sty
index 58d9834825e..c00c0d4c027 100644
--- a/Master/texmf-dist/tex/xelatex/langsci/langsci-optional.sty
+++ b/Master/texmf-dist/tex/xelatex/langsci/langsci-optional.sty
@@ -1,7 +1,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% File: langsci-optional.sty
%% Author: Language Science Press (http://langsci-press.org)
-%% Date: 2016-01-16 16:47:43 UTC
+%% Date: 2024-12-03 11:47:43 UTC
%% Purpose: This file contains useful, but not essential,
%% macros for books using langscibook.cls
%% Language: LaTeX
@@ -235,29 +235,42 @@
}
}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%% Experimental feature for pointing out moving things. %%%%
-%%%% Buggy? Write to: kopeckyf@hu-berlin.de %%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usetikzlibrary{arrows,arrows.meta}
\newcounter{lsConnectTempGroup}
-\NewDocumentCommand\ConnectTail{m O{\thelsConnectTempGroup}}{%read: mandatory arg #1, optional argument #2 with the current group counter as its default value.
- \edef\lsConnectTempPosition{#2}%\edef expands the argument, which means reading the current value of the counter.
+% Arguments:
+% mandatory arg #1,
+% optional argument #2 with the current group counter as its default value.
+\NewDocumentCommand\ConnectTail{m O{\thelsConnectTempGroup}}{%
+ \edef\lsConnectTempPosition{#2}%\edef reads the current value of the counter.
{\tikz[remember picture,
anchor=base, baseline,
inner xsep=0pt,
- inner ysep=-.5ex]\node (ConnectTempTail\lsConnectTempPosition) {\strut{}#1};}%\strut for baseline
+ inner ysep=-.5ex]
+ \node (ConnectTempTail\lsConnectTempPosition) {\strut{}#1};}%
}
-\NewDocumentCommand\ConnectHead{s O{1ex} m O{\thelsConnectTempGroup}}{%read: star #1, optional argument (distance of arrow from text= std. one x-height), mand. arg. (node text), optional argument #2, the group specifier
+% Arguments:
+% star #1,
+% optional argument (distance of arrow from text= std. one x-height),
+% mand. arg. (node text),
+% optional argument #2, the group specifier
+% optional argument #3, some node text
+\NewDocumentCommand\ConnectHead{s O{1ex} m O{\thelsConnectTempGroup}}{%
\edef\lsConnectTempPosition{#4}%
- \stepcounter{lsConnectTempGroup}%We have a match, let's update the group counter
+ %We have a match, let's update the group counter
+ \stepcounter{lsConnectTempGroup}%
{\tikz[remember picture,
anchor=base, baseline,
inner xsep=0pt,
- inner ysep=-.5ex] \node (ConnectTempHead\lsConnectTempPosition) {\strut{}#3};%
- \tikz[remember picture] \draw[% we have a tail and a head, let's bring them together
- \IfBooleanTF#1{{Triangle[]}-}{-{Triangle[]}},% Check if the starred version is used. The starred version is right->left, the normal version left->right
- overlay] (ConnectTempTail\lsConnectTempPosition.south) -- ++(0,-#2) -| (ConnectTempHead\lsConnectTempPosition.south);
+ inner ysep=-.5ex]
+ \node (ConnectTempHead\lsConnectTempPosition) {\strut{}#3};%
+ \tikz[remember picture] \draw[overlay,
+ % Check if the starred version is used. The
+ % starred version is right->left, the normal
+ % version left->right
+ \IfBooleanTF#1{{Triangle[]}-}{-{Triangle[]}}]
+ (ConnectTempTail\lsConnectTempPosition.south)
+ -- ++(0,-#2) -|
+ (ConnectTempHead\lsConnectTempPosition.south);%
}%
}
@@ -346,7 +359,7 @@
\providecommand{\lsptoprule}{\midrule\toprule}
\providecommand{\lspbottomrule}{\bottomrule\midrule}
-\providecommand{\REF}[2][]{(\ref{#2#1})}
+\providecommand{\REF}[2][]{(\ref{#2}#1)}
\newcommand{\glottocodes}[1]{}
diff --git a/Master/texmf-dist/tex/xelatex/langsci/langsci-textipa.sty b/Master/texmf-dist/tex/xelatex/langsci/langsci-textipa.sty
index f931fc8faa9..8255c86f16a 100644
--- a/Master/texmf-dist/tex/xelatex/langsci/langsci-textipa.sty
+++ b/Master/texmf-dist/tex/xelatex/langsci/langsci-textipa.sty
@@ -45,14 +45,14 @@
\renewcommand{\textdyoghlig}{ʤ}
\renewcommand{\textdzlig}{ʣ}
\newcommand{\texteng}{ŋ}
-\renewcommand{\textepsilon}{ɛ}
+\providecommand{\textepsilon}{ɛ}
\renewcommand{\textesh}{ʃ}
\newcommand{\texteth}{ð}
\newcommand{\textezh}{ȝ}
\newcommand{\textfallrise}{᷉}
\renewcommand{\textfishhookr}{ɾ}
\newcommand{\textg}{ɡ}
-\renewcommand{\textgamma}{ɣ}
+\providecommand{\textgamma}{ɣ}
\newcommand{\textglobfall}{↘}
\newcommand{\textglobrise}{↗}
\renewcommand{\textglotstop}{ʔ}
@@ -112,7 +112,7 @@
\renewcommand{\textrevepsilon}{ɜ}
\renewcommand{\textrevglotstop}{ʕ}
\renewcommand{\textrevyogh}{ʢ}
-\renewcommand{\textrho}{ρ}
+\providecommand{\textrho}{ρ}
\renewcommand{\textrhookrevepsilon}{ɝ}
\renewcommand{\textrhookschwa}{ɚ}
\newcommand{\textrhoticity}{˞}
@@ -152,7 +152,7 @@
\renewcommand{\textscy}{ʏ}
\newcommand{\textseagull}{̼}
\renewcommand{\textsecstress}{ˌ}
-\renewcommand{\textsigma}{}
+\providecommand{\textsigma}{σ}
% \newcommand{\textstretchc}{}%\newcommand{\textstretchcvar}{ʗ}
% \newcommand{\textsu}{}
\newcommand{\textsubacute}{̗}
diff --git a/Master/texmf-dist/tex/xelatex/langsci/langsci-unified.bbx b/Master/texmf-dist/tex/xelatex/langsci/langsci-unified.bbx
index f836a07c6e1..dc01d25a5f8 100644
--- a/Master/texmf-dist/tex/xelatex/langsci/langsci-unified.bbx
+++ b/Master/texmf-dist/tex/xelatex/langsci/langsci-unified.bbx
@@ -48,6 +48,23 @@
\newtoggle{issueandeditor}
\DeclareBibliographyOption{issueandeditor}[true]{%
\settoggle{issueandeditor}{#1}}
+
+% Automated capitalisation after colons
+% Copies from apa.bbx, which copied and adapted from ieee.bbx
+% {<process>} {*} {<text>}
+\newcommand*{\bbx@colon@search}[3]{%
+ \bbx@colon@search@aux#1#2\empty#3: \stop
+}
+\long\def\bbx@colon@search@aux#1#2#3: #4\stop{%
+ \expandafter#1\expandafter#2\expandafter{#3}%
+ \ifblank{#4}
+ {}
+ {%
+ : %
+ \bbx@colon@search@aux#1#2\empty#4\stop
+ }%
+}
+%
% Formatting directives for name lists
% ------------------------------------------------------------------
@@ -463,7 +480,7 @@
}
% basically everything is in sentence case, other than journals and book series (recurring titles)
-\DeclareFieldFormat[article,book,collection,incollection,inproceedings,thesis,unpublished]{titlecase}{\MakeSentenceCase*{#1}}%
+\DeclareFieldFormat[article,book,collection,inbook,incollection,inproceedings,thesis,unpublished]{titlecase}{\bbx@colon@search\MakeSentenceCase*{#1}}
% No quotes around titles
\DeclareFieldFormat[article,inbook,incollection,inproceedings,patent,thesis,unpublished]{title}{#1}
diff --git a/Master/texmf-dist/tex/xelatex/langsci/langsci-unified.cbx b/Master/texmf-dist/tex/xelatex/langsci/langsci-unified.cbx
index eaaec93a584..8bde8bb5e9c 100644
--- a/Master/texmf-dist/tex/xelatex/langsci/langsci-unified.cbx
+++ b/Master/texmf-dist/tex/xelatex/langsci/langsci-unified.cbx
@@ -210,12 +210,22 @@
\newbibmacro*{cite:labelyear+extradate}{%
\iffieldundef{labelyear}
{}
- {\printtext[bibhyperref]{\printlabeldateextra}}}
+ {\printtext[bibhyperref]{\printlabeldateextra}}%
+ \usebibmacro{cite:thisvolume}%
+ }
\newbibmacro*{cite:extradate}{%
\iffieldundef{extradate}
{}
- {\printtext[bibhyperref]{\printfield{extradate}}}}
+ {\printtext[bibhyperref]{\printfield{extradate}}}%
+ \usebibmacro{cite:thisvolume}%
+ }
+
+\newbibmacro*{cite:thisvolume}{%
+ \ifkeyword{LSPWithinVolume}
+ {\addspace\printtext[bibhyperref]{[this volume]}}
+ {}%
+}
\newbibmacro*{textcite:postnote}{%
\usebibmacro{postnote}%
@@ -294,39 +304,10 @@
{}
{\usebibmacro{textcite:postnote}}
-% "This volume" citation commands
-\DeclareCiteCommand{\citetv}
- {\usebibmacro{prenote}}
- {\ifciteindex
- {\indexnames{labelname}}
- {}%
- \printtext[bibhyperref]{\printnames{labelname}\addspace\printfield{year}}}
- {\multicitedelim}
- {\printtext[bibhyperref]{\usebibmacro{postnote}\addspace[this volume]}}
-
-\DeclareCiteCommand{\textcitetv}
- {\usebibmacro{prenote}}
- {\ifciteindex
- {\indexnames{labelname}}
- {}%
- \printtext[bibhyperref]{\printnames{labelname}\addspace\bibopenparen\printfield{year}}}
- {\multicitedelim}
- {\printtext[bibhyperref]{\usebibmacro{postnote}\addspace[this volume]\bibcloseparen}}
-
-\DeclareCiteCommand{\parencitetv}
- {\usebibmacro{prenote}}
- {\ifciteindex
- {\indexnames{labelname}}
- {}%
- \printtext[bibhyperref]{\bibopenparen\printnames{labelname}\addspace\printfield{year}}}
- {\multicitedelim}
- {\printtext[bibhyperref]{\usebibmacro{postnote}\addspace[this volume]\bibcloseparen}}
-
-\DeclareCiteCommand{\citeyeartv}
- {\boolfalse{citetracker}\boolfalse{pagetracker}\usebibmacro{prenote}}
- {\printtext[bibhyperref]{\iffieldundef{year}{\printfield{labelyear}}{\printfield{year}}\printfield{extradate}}}
- {\multicitedelim}
- {\usebibmacro{postnote}\addspace[this volume]}
+% Legacy "his volume" citation commands
+\newrobustcmd*{\citetv}{\cite}
+\newrobustcmd*{\textcitetv}{\textcite}
+\newrobustcmd*{\parencitetv}{\parencite}
% A cite command to produce the full reference in the footer of the landing page of
% a paper in an edited volume
@@ -386,12 +367,20 @@
{\printtext[bibhyperref]{\iffieldundef{year}{\printfield{labelyear}}{\printfield{year}}\printfield{extradate}}}
{\multicitedelim}
{\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\citeyeartv}
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}
+ {\printtext[bibhyperref]{\iffieldundef{year}{\printfield{labelyear}}{\printfield{year}}\printfield{extradate}\usebibmacro{cite:thisvolume}}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
\DeclareCiteCommand{\citeyearpar}[\mkbibparens]
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{prenote}}
- {\printtext[bibhyperref]{\iffieldundef{year}{\printfield{labelyear}}{\printfield{year}}\printfield{extradate}}}
+ {\printtext[bibhyperref]{\iffieldundef{year}{\printfield{labelyear}}{\printfield{year}}\printfield{extradate}\usebibmacro{cite:thisvolume}}}
{\multicitedelim}
{\usebibmacro{postnote}}
@@ -405,7 +394,7 @@
\DeclareCiteCommand{\posscitealt}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}}
- {\printtext[bibhyperref]{\printnames{labelname}'s \iffieldundef{year}{\printfield{labelyear}}{\printfield{year}}\printfield{extradate}}}
+ {\printtext[bibhyperref]{\printnames{labelname}'s \iffieldundef{year}{\printfield{labelyear}}{\printfield{year}}\printfield{extradate}\usebibmacro{cite:thisvolume}}}
{}
{}
diff --git a/Master/texmf-dist/tex/xelatex/langsci/langscibook.cls b/Master/texmf-dist/tex/xelatex/langsci/langscibook.cls
index e9da4b4b895..c9772b67627 100644
--- a/Master/texmf-dist/tex/xelatex/langsci/langscibook.cls
+++ b/Master/texmf-dist/tex/xelatex/langsci/langscibook.cls
@@ -1,7 +1,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% File: langscibook.cls
%% Author: Language Science Press (http://langsci-press.org)
-%% Date: 2024-02-07 14:00 CET
+%% Date: 2022-02-08 14:00 CET
%% Purpose: This file defines the basic document class
%% for books published with Language Science Press.
%% Language: LaTeX
@@ -310,9 +310,7 @@
fontsize=\lsFontsize,% default is 11pt
footnotes=multiple,
numbers=noenddot,% no point after last number of chapters/sections
- \notbool{collection}{
- toc=bib, % make bibliography appear in toc
- }{}
+ toc=bib, % make bibliography appear in toc
index=totoc,
headings=optiontohead,
footnotes=multiple
@@ -593,10 +591,12 @@
\setuptitle
}
- %% for those who like the example in numbered example sentences to be typeset in italics
- %% this is possible for a complete series only.
+ %% Series-specific layout settings, governs the entire series
+ %% In SIDL, COGL and RCG, examples are put in italics. Sections are
+ %% referenced using the section sign “§”.
+
\ifx\lsSeries\sidl
- %\def\exfont{\normalsize\itshape}
+ \renewcommand{\sectref}[1]{§\ref{#1}}
\let\eachwordone=\itshape % only \gll
\let\oldtable\table % footnotes in tables without horizontal line
@@ -614,17 +614,12 @@
\ifx\lsSeries\cogl
\let\eachwordone=\itshape
+ \renewcommand{\sectref}[1]{§\ref{#1}}
\fi
\ifx\lsSeries\rcg
\let\eachwordone=\itshape
- \fi
-
- \ifx\lsSeries\eotms
- \renewcommand{\sectref}[1]{Section~\ref{#1}}
- \fi
- \ifx\lsSeries\ahl
- \renewcommand{\sectref}[1]{Section~\ref{#1}}
+ \renewcommand{\sectref}[1]{§\ref{#1}}
\fi
} %% \AtBeginDocument
}{} %notbool paper
@@ -1582,24 +1577,14 @@ Storage and cataloguing done by \storageinstitution\\[3ex]
indexing=cite
]{biblatex}
-%% DOIs are handled after hyperref.
-\defbibheading{references}{\chapter{References}\sloppy}
-\defbibheading{english}{\chapter{References}\sloppy}
-\defbibheading{french}{\chapter{Références bibliographiques}\sloppy}
-\defbibheading{spanish}{\chapter{Referencias bibliográficas}\sloppy}
-\defbibheading{german}{\chapter{Literaturverzeichnis}\sloppy}
-\defbibheading{portuguese}{\chapter{Referências}\sloppy}
-\defbibheading{chinese}{\chapter{参考文献}\sloppy}
-
-%% penalties against widows and orphans in bibliography
-%% http://tex.stackexchange.com/questions/297705/atbeginenvironment-does-not-work-with-natbib/297721#297721
-\apptocmd{\thebibliography}{%
-\clubpenalty\@M
-\@clubpenalty\clubpenalty
-\widowpenalty\@M
+\defbibheading{references}[\lsReferencesTitle]{%
+ \addchap{#1}
+ \markdouble{#1}
+ \clubpenalty\@M
+ \@clubpenalty\clubpenalty
+ \widowpenalty\@M
+ \emergencystretch=3em
}
-{}{}
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Floats
@@ -1863,7 +1848,7 @@ Storage and cataloguing done by \storageinstitution\\[3ex]
\renewcommand{\Hfootnoteautorefname}{Footnote}%
\fi
-\providecommand{\sectref}[1]{§\ref{#1}}
+\providecommand{\sectref}[1]{Section~\ref{#1}}
\providecommand{\chapref}[1]{Chapter~\ref{#1}}
\providecommand{\partref}[1]{Part~\ref{#1}}
\providecommand{\tabref}[1]{Table~\ref{#1}}
@@ -1952,7 +1937,7 @@ Storage and cataloguing done by \storageinstitution\\[3ex]
\renewcommand{\newlineSpine}{}
\renewcommand{\newlineTOC}{}
%% write bib entry to file
- \immediate\write\tempfile{@incollection{#1,author={\authorToBib},title={{\expandonce{\titleTemp}}},booktitle={{\expandonce{\lsCollectionTitle}}},editor={\lsCollectionEditor},publisher={Language Science Press.},Address={Berlin},year={\lsYear},pages={\lsCollectionPaperFirstPage --\lsCollectionPaperLastPage},doi={\lsChapterDOI},keywords={withinvolume}}}
+ \immediate\write\tempfile{@incollection{#1,author={\authorToBib},title={{\expandonce{\titleTemp}}},booktitle={{\expandonce{\lsCollectionTitle}}},editor={\lsCollectionEditor},publisher={Language Science Press.},Address={Berlin},year={\lsYear},pages={\lsCollectionPaperFirstPage --\lsCollectionPaperLastPage},doi={\lsChapterDOI},keywords={LSPWithinVolume}}}
\immediate\write\tempfile{@incollection{#1footer,author={\authorToBib},title={{\expandonce{\titleTemp}}},booktitle={{\expandonce{\lsCollectionTitle}}},editor={\lsCollectionEditor},publisher={Language Science Press.},Address={Berlin},year={\lsYear},pages={\lsCollectionPaperFirstPage --\lsCollectionPaperLastPage},doi={\lsChapterDOI},options={dataonly=true}}}
}
@@ -1988,10 +1973,11 @@ Storage and cataloguing done by \storageinstitution\\[3ex]
% and their affiliation(s) are part of the \chapter block.
\CountAuthorsFromAffiliations{\@author}
\lsDeterminePaperAuthorAffiliationIndexing{}
- \setchapterpreamble[u]{\ResolveAffiliations{\@author}\\}
+ \setchapterpreamble[u]{\ResolveAffiliations{\@author}}
\chapter
[tocentry={\titleToToC~\newline{\normalfont\ResolveAffiliations{\@author}}}]
{\titleTemp}
+ \vskip1.15\baselineskip plus .1\baselineskip minus .167\baselineskip
\begin{quote}
\small\lsCollectionPaperAbstract
\end{quote}
@@ -2156,7 +2142,7 @@ Storage and cataloguing done by \storageinstitution\\[3ex]
\newcommand{\lsPrefaceTitle}{Preface}
\newcommand{\lsAcknowledgementTitle}{Acknowledgments}
\newcommand{\lsAbbreviationsTitle}{Abbreviations}
-\newcommand{\lsReferencesTitle}{references} % This aligns with \defbibheading
+\newcommand{\lsReferencesTitle}{References} % This aligns with \defbibheading
\ifx\lsBookLanguage\lsBookLanguageFrench
\renewcommand{\lsIndexTitle}{Index}
@@ -2166,7 +2152,7 @@ Storage and cataloguing done by \storageinstitution\\[3ex]
\renewcommand{\lsPrefaceTitle}{Préface}
\renewcommand{\lsAcknowledgementTitle}{Remerciements}
\renewcommand{\lsAbbreviationsTitle}{Liste des abréviations utilisées dans les gloses des exemples}
- \renewcommand{\lsReferencesTitle}{french}
+ \renewcommand{\lsReferencesTitle}{Références bibliographiques}
\ifbool{babel}{
\renewcommand\frenchfigurename{Figure}
\renewcommand\frenchtablename{Tableau}
@@ -2181,7 +2167,7 @@ Storage and cataloguing done by \storageinstitution\\[3ex]
\renewcommand{\lsPrefaceTitle}{Prefacio}
\renewcommand{\lsAcknowledgementTitle}{Agradecimientos}
\renewcommand{\lsAbbreviationsTitle}{Abreviaciones}
- \renewcommand{\lsReferencesTitle}{spanish}
+ \renewcommand{\lsReferencesTitle}{Referencias bibliográficas}
\fi
\ifx\lsBookLanguage\lsBookLanguageGerman
@@ -2192,7 +2178,7 @@ Storage and cataloguing done by \storageinstitution\\[3ex]
\renewcommand{\lsPrefaceTitle}{Vorwort}
\renewcommand{\lsAcknowledgementTitle}{Danksagung}
\renewcommand{\lsAbbreviationsTitle}{Abkürzungsverzeichnis}
- \renewcommand{\lsReferencesTitle}{german}
+ \renewcommand{\lsReferencesTitle}{Literaturverzeichnis}
\fi
\ifx\lsBookLanguage\lsBookLanguagePortuguese
@@ -2203,7 +2189,7 @@ Storage and cataloguing done by \storageinstitution\\[3ex]
\renewcommand{\lsPrefaceTitle}{Prefácio}
\renewcommand{\lsAcknowledgementTitle}{Agradecimentos}
\renewcommand{\lsAbbreviationsTitle}{\colorbox{red}{Translation info for Abbv missing}}
- \renewcommand{\lsReferencesTitle}{portugese}
+ \renewcommand{\lsReferencesTitle}{Referências}
\fi
\ifx\lsBookLanguage\lsBookLanguageChinese
@@ -2213,7 +2199,8 @@ Storage and cataloguing done by \storageinstitution\\[3ex]
\renewcommand{\lsLanguageIndexTitle}{语言索引}
\renewcommand{\lsPrefaceTitle}{前言}
\renewcommand{\lsAcknowledgementTitle}{致谢}
- \renewcommand{\lsAbbreviationsTitle}{\colorbox{red}{Translation info for Abbv missing}}
+ \renewcommand{\lsAbbreviationsTitle}{缩写}
+ \renewcommand{\lsReferencesTitle}{参考文献}
\fi
diff --git a/Master/texmf-dist/tex/xelatex/xduts/xdufont.sty b/Master/texmf-dist/tex/xelatex/xduts/xdufont.sty
index d021df4983c..efb714527a7 100644
--- a/Master/texmf-dist/tex/xelatex/xduts/xdufont.sty
+++ b/Master/texmf-dist/tex/xelatex/xduts/xdufont.sty
@@ -6,7 +6,7 @@
%%
%% xduts.dtx (with options: `sty,xdufont')
%%
-%% Copyright 2022--2023 by @note286 in GitHub and CTAN
+%% Copyright 2022--2025 by @note286 in GitHub and CTAN
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -29,7 +29,7 @@
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplPackage{xdufont}
- {2023/03/23}{6.1.4.2}
+ {2025/01/12}{6.2.3.1}
{Xidian University Font package}
\RequirePackage { xparse, l3keys2e }
\PassOptionsToPackage { no-math } { fontspec }
diff --git a/Master/texmf-dist/tex/xelatex/xduts/xdupgthesis.cls b/Master/texmf-dist/tex/xelatex/xduts/xdupgthesis.cls
index 970cc62f082..36b9bab4dca 100644
--- a/Master/texmf-dist/tex/xelatex/xduts/xdupgthesis.cls
+++ b/Master/texmf-dist/tex/xelatex/xduts/xdupgthesis.cls
@@ -6,7 +6,7 @@
%%
%% xduts.dtx (with options: `class,thesis,xdupgthesis')
%%
-%% Copyright 2022--2023 by @note286 in GitHub and CTAN
+%% Copyright 2022--2025 by @note286 in GitHub and CTAN
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -29,7 +29,7 @@
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplClass{xdupgthesis}
- {2023/03/23}{6.1.4.2}
+ {2025/01/12}{6.2.3.1}
{Xidian University Postgraduate Thesis document class}
\RequirePackage { xparse, l3keys2e }
\PassOptionsToPackage { no-math } { fontspec }
@@ -597,7 +597,6 @@
\str_new:N \l__xdu_domain_str
\str_new:N \l__xdu_clc_str
\str_new:N \l__xdu_secret_lv_str
-\str_new:N \l__xdu_secret_year_str
\str_new:N \l__xdu_submit_date_str
\str_new:N \l__xdu_statement_scan_str
\clist_new:N \l__xdu_statement_sign_clist
@@ -631,7 +630,6 @@
clc .tl_set:N = \l__xdu_clc_str,
secret-level .choices:nn = { 秘密, 公开 }
{ \tl_set_eq:NN \l__xdu_secret_lv_str \l_keys_choice_tl },
- secret-year .tl_set:N = \l__xdu_secret_year_str,
submit-date .tl_set:N = \l__xdu_submit_date_str,
statement-scan .tl_set:N = \l__xdu_statement_scan_str,
statement-sign .clist_set:N = \l__xdu_statement_sign_clist,
@@ -663,7 +661,6 @@
info / domain = { },
info / clc = { },
info / secret-level = 公开,
- info / secret-year = { },
info / submit-date = { },
info / statement-scan = { },
info / statement-sign = { },
@@ -2248,8 +2245,8 @@
\cs_new:Npn \__xdu_statement:
{
\vbox:n { }
- \skip_vertical:n { -7.5pt }
- \vbox_to_ht:nn { 60pt }
+ \skip_vertical:n { -8.5pt }
+ \vbox_to_ht:nn { 59.5pt }
{
\rmfamily \zihao { 4 } \bfseries \centering
\dim_set:Nn \baselineskip { 20pt }
@@ -2272,7 +2269,7 @@
}
\clist_if_empty:NT \l__xdu_statement_sign_clist
{ \skip_vertical:n { 20pt } }
- \vbox_to_ht:nn { 175pt }
+ \vbox_to_ht:nn { 155pt }
{
\rmfamily \zihao { -4 }
\dim_set:Nn \parindent { 2em }
@@ -2291,33 +2288,29 @@
}
\clist_if_empty:NF \l__xdu_statement_sign_clist
{ \skip_vertical:n { 20pt } }
- \vbox_to_ht:nn { 60pt }
+ \vbox_to_ht:nn { 39.5pt }
{
\rmfamily \zihao { 4 } \bfseries \centering
\dim_set:Nn \baselineskip { 20pt }
西安电子科技大学\\
关于论文使用授权的说明
}
- \vbox_to_ht:nn { 120pt }
+ \vbox_to_ht:nn { 160pt }
{
\rmfamily \zihao { -4 }
\dim_set:Nn \parindent { 2em }
\dim_set:Nn \baselineskip { 20pt }
本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究生在校
- 攻读学位期间论文工作的知识产权属于西安电子科技大学。学校有权保留送交论文
- 的复印件,允许查阅、借阅论文;学校可以公布论文的全部或部分内容,允许采用
- 影印、缩印或其它复制手段保存论文。同时本人保证,结合学位论文研究成果完成
- 的论文、发明专利等成果,署名单位为西安电子科技大学。
+ 攻读学位期间论文工作的知识产权属于西安电子科技大学。学校有权保留并向国家
+ 有关部门或机构送交学位论文的复印件和电子版,以学术交流为目的赠送和交换学
+ 位论文,允许学位论文被查阅、借阅和复印,将学位论文的全部或部分内容编入有
+ 关数据库进行检索和提供相应阅览服务;允许采用影印、缩印或其它复制手段保存
+ 学位论文。同时本人保证,结合学位论文研究成果完成的论文、发明专利等成果,
+ 署名单位为西安电子科技大学。
\par
- 保密的学位论文在
- \str_if_eq:NNTF \l__xdu_secret_lv_str { 秘密 }
- {
- \str_if_empty:NTF \l__xdu_secret_year_str
- { \__xdu_uline:n { \skip_horizontal:n { 1.5em } } }
- { \__xdu_uline:n { \enskip \l__xdu_secret_year_str \enskip } }
- }
- { \__xdu_uline:n { \skip_horizontal:n { 1.5em } } }
- 年解密后适用本授权书。
+ 本人保证遵守上述规定。
+ \par
+ (保密的论文在解密后遵守此规定)
\vfil
}
\clist_if_empty:NT \l__xdu_statement_sign_clist
@@ -2802,6 +2795,14 @@
\dim_set:Nn \parindent { 2 \ccwd }
\rmfamily \zihao { -4 }
\dim_set:Nn \baselineskip { 20pt }
+ \ctexset
+ {
+ section / number = { \arabic { section } . },
+ section / format = { \rmfamily \zihao { -3 } \bfseries \raggedright },
+ subsection / number = { \arabic { section } . \arabic { subsection } },
+ subsection / format = { \rmfamily \zihao { 4 } \bfseries \raggedright }
+ }
+ \setcounter { section } { 0 }
\file_if_exist_input:n { \l__xdu_ack_tl }
\group_end:
}
@@ -2824,6 +2825,7 @@
}
\addtocontents { toc } { \protect \setcounter { tocdepth } { 0 } }
\setcounter { tocdepth } { 0 }
+ \setcounter { section } { 0 }
\file_if_exist_input:n { \l__xdu_bio_str }
\addtocontents { toc } { \protect \setcounter { tocdepth } { 2 } }
\setcounter { tocdepth } { 2 }
diff --git a/Master/texmf-dist/tex/xelatex/xduts/xduugthesis.cls b/Master/texmf-dist/tex/xelatex/xduts/xduugthesis.cls
index 6215309b0bd..dd60fe5bc55 100644
--- a/Master/texmf-dist/tex/xelatex/xduts/xduugthesis.cls
+++ b/Master/texmf-dist/tex/xelatex/xduts/xduugthesis.cls
@@ -6,7 +6,7 @@
%%
%% xduts.dtx (with options: `class,thesis,xduugthesis')
%%
-%% Copyright 2022--2023 by @note286 in GitHub and CTAN
+%% Copyright 2022--2025 by @note286 in GitHub and CTAN
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -29,7 +29,7 @@
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplClass{xduugthesis}
- {2023/03/23}{6.1.4.2}
+ {2025/01/12}{6.2.3.1}
{Xidian University Undergraduate Thesis document class}
\RequirePackage { xparse, l3keys2e }
\PassOptionsToPackage { no-math } { fontspec }
@@ -993,12 +993,12 @@
{
\__xdu_lang_switch:nn
{
- \__xdu_tl_set_if_empty:Nn \l__xdu_chap_tl { 3 }
- \__xdu_tl_set_if_empty:Nn \l__xdu_sec_tl { 4 }
- \__xdu_tl_set_if_empty:Nn \l__xdu_subsec_tl { 4 }
- \__xdu_tl_set_if_empty:Nn \l__xdu_subsubsec_tl { 4 }
- \__xdu_tl_set_if_empty:Nn \l__xdu_para_tl { 4 }
- \__xdu_tl_set_if_empty:Nn \l__xdu_subpara_tl { 4 }
+ \__xdu_tl_set_if_empty:Nn \l__xdu_chap_tl { 3 }
+ \__xdu_tl_set_if_empty:Nn \l__xdu_sec_tl { 4 }
+ \__xdu_tl_set_if_empty:Nn \l__xdu_subsec_tl { -4 }
+ \__xdu_tl_set_if_empty:Nn \l__xdu_subsubsec_tl { -4 }
+ \__xdu_tl_set_if_empty:Nn \l__xdu_para_tl { -4 }
+ \__xdu_tl_set_if_empty:Nn \l__xdu_subpara_tl { -4 }
\ctexset
{
chapter / format = { \__xdu_zh_t:nnn { sf } { chap } { c } \__xdu_bold_math: },
@@ -1663,7 +1663,7 @@
\__xdu_cover_iii:nnnn { 校外导师姓名 } { rm } { -3 } { \l__xdu_supv_ent_str }
\__xdu_cover_iii:nnnn { 校内导师姓名 } { rm } { -3 } { \l__xdu_supv_sch_str }
}
- \group_begin:
+ {
\__xdu_cover_iii:nnnn { 导师姓名 } { rm } { -3 } { \l__xdu_supv_str }
\tl_if_blank:VF \l__xdu_supv_dept_str
{
@@ -1673,7 +1673,7 @@
{ -3 }
{ \l__xdu_supv_dept_str }
}
- \group_end:
+ }
\cleardoublepage
\__xdu_load_main_geometry:
\pagestyle { plain }
diff --git a/Master/texmf-dist/tex/xelatex/xduts/xduugtp.cls b/Master/texmf-dist/tex/xelatex/xduts/xduugtp.cls
index c91aa5c31ad..099485a9b6d 100644
--- a/Master/texmf-dist/tex/xelatex/xduts/xduugtp.cls
+++ b/Master/texmf-dist/tex/xelatex/xduts/xduugtp.cls
@@ -6,7 +6,7 @@
%%
%% xduts.dtx (with options: `class,tp,xduugtp')
%%
-%% Copyright 2022--2023 by @note286 in GitHub and CTAN
+%% Copyright 2022--2025 by @note286 in GitHub and CTAN
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -29,7 +29,7 @@
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesExplClass{xduugtp}
- {2023/03/23}{6.1.4.2}
+ {2025/01/12}{6.2.3.1}
{Xidian University Undergraduate Thesis Proposal class}
\RequirePackage { xparse, l3keys2e }
\PassOptionsToPackage { no-math } { fontspec }
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/algorithm-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/algorithm-xetex-xepersian.def
index 9557359ce9c..7ab930780b5 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/algorithm-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/algorithm-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `algorithm-xepersian.def',
+%% This is file `algorithm-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,algorithm-xepersian.def')
+%% xepersian.dtx (with options: `table,algorithm-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,10 +37,10 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{algorithm-xepersian.def}[2010/07/25 v0.2 adaptations for algorithm package]
+\ProvidesFile{algorithm-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for algorithm package for XeTeX engine]
\def\ALG@name{\if@RTL الگوریتم\else Algorithm\fi}
\def\ALGS@name{الگوریتم‌ها}
\def\listalgorithmname{\if@RTL فهرست \ALGS@name\else List of \ALG@name s\fi}
\endinput
%%
-%% End of file `algorithm-xepersian.def'.
+%% End of file `algorithm-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xetex-xepersian.def
index a8a09d4a751..3a4106b406c 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `algorithmic-xepersian.def',
+%% This is file `algorithmic-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,algorithmic-xepersian.def')
+%% xepersian.dtx (with options: `table,algorithmic-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,9 +37,9 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{algorithmic-xepersian.def}[2010/07/25 v0.2 adaptations for algorithmic package]
+\ProvidesFile{algorithmic-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for algorithmic package for XeTeX engine]
\def\algorithmicrequire{\if@RTL\textbf{ورودی:}\else\textbf{Require:}\fi}
\def\algorithmicensure{\if@RTL\textbf{خروجی:}\else\textbf{Ensure:}\fi}
\endinput
%%
-%% End of file `algorithmic-xepersian.def'.
+%% End of file `algorithmic-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/imsproc-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/amsart-xetex-xepersian.def
index 46ed5056a29..429de086475 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/imsproc-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/amsart-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `imsproc-xepersian.def',
+%% This is file `amsart-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,imsproc-xepersian.def')
+%% xepersian.dtx (with options: `table,amsart-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,8 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{imsproc-xepersian.def}[2017/06/09 v0.5 xepersian adaptations for imsproc class for XeTeX engine]
-
+\ProvidesFile{amsart-xetex-xepersian.def}[2017/02/04 v0.4 xepersian adaptations for amsart class for XeTeX engine]
\renewcommand \thepart {\@tartibi\c@part}
\def\appendix{\par\c@section\z@ \c@subsection\z@
\let\sectionname\appendixname
@@ -46,4 +45,4 @@
\endinput
%%
-%% End of file `imsproc-xepersian.def'.
+%% End of file `amsart-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/amsbook-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/amsbook-xetex-xepersian.def
index cb6194b6d07..b091c8b338f 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/amsbook-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/amsbook-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `amsbook-xepersian.def',
+%% This is file `amsbook-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,amsbook-xepersian.def')
+%% xepersian.dtx (with options: `table,amsbook-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{amsbook-xepersian.def}[2017/02/04 v0.5 adaptations for amsbook class]
+\ProvidesFile{amsbook-xetex-xepersian.def}[2017/02/04 v0.5 xepersian adaptations for amsbook class for XeTeX engine]
\def\frontmatter{\cleardoublepage\pagenumbering{harfi}}
\renewcommand \thepart {\@tartibi\c@part}
\def\appendix{\par
@@ -47,4 +47,4 @@
\endinput
%%
-%% End of file `amsbook-xepersian.def'.
+%% End of file `amsbook-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/appendix-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/appendix-xetex-xepersian.def
index c8a55e3d233..2a40cafff8a 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/appendix-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/appendix-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `appendix-xepersian.def',
+%% This is file `appendix-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,appendix-xepersian.def')
+%% xepersian.dtx (with options: `table,appendix-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{appendix-xepersian.def}[2015/02/01 v0.1 adaptations for appendix package]
+\ProvidesFile{appendix-xetex-xepersian.def}[2015/02/01 v0.1 xepersian adaptations for appendix package for XeTeX engine]
\renewcommand{\@resets@pp}{\par
\@ppsavesec
\stepcounter{@pps}
@@ -54,4 +54,4 @@
}
\endinput
%%
-%% End of file `appendix-xepersian.def'.
+%% End of file `appendix-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/article-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/article-xetex-xepersian.def
index fe09c524255..663cf35e4c6 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/article-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/article-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `article-xepersian.def',
+%% This is file `article-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,article-xepersian.def')
+%% xepersian.dtx (with options: `table,article-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{article-xepersian.def}[2010/07/25 v0.2 adaptations for standard article class]
+\ProvidesFile{article-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for standard article class for XeTeX engine]
\renewcommand \thepart {\@tartibi\c@part}
\renewcommand\appendix{\par
\setcounter{section}{0}%
@@ -45,4 +45,4 @@
\gdef\thesection{\@harfi\c@section}}
\endinput
%%
-%% End of file `article-xepersian.def'.
+%% End of file `article-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/artikel1-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/artikel1-xetex-xepersian.def
index e5138d96514..6fb9326a60c 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/artikel1-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/artikel1-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `artikel1-xepersian.def',
+%% This is file `artikel1-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,artikel1-xepersian.def')
+%% xepersian.dtx (with options: `table,artikel1-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{artikel1-xepersian.def}[2010/07/25 v0.1 adaptations for artikel1 class]
+\ProvidesFile{artikel1-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for artikel1 class for XeTeX engine]
\renewcommand*\thepart{\@tartibi\c@part}
\renewcommand*\appendix{\par
\setcounter{section}{0}%
@@ -45,4 +45,4 @@
\gdef\thesection{\@harfi\c@section}}
\endinput
%%
-%% End of file `artikel1-xepersian.def'.
+%% End of file `artikel1-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/artikel2-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/artikel2-xetex-xepersian.def
index e022b36fa36..8315793e38e 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/artikel2-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/artikel2-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `artikel2-xepersian.def',
+%% This is file `artikel2-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,artikel2-xepersian.def')
+%% xepersian.dtx (with options: `table,artikel2-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{artikel2-xepersian.def}[2010/07/25 v0.1 adaptations for artikel2 class]
+\ProvidesFile{artikel2-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for artikel2 class for XeTeX engine]
\renewcommand*\thepart{\@tartibi\c@part}
\renewcommand*\appendix{\par
\setcounter{section}{0}%
@@ -45,4 +45,4 @@
\gdef\thesection{\@harfi\c@section}}
\endinput
%%
-%% End of file `artikel2-xepersian.def'.
+%% End of file `artikel2-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/artikel3-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/artikel3-xetex-xepersian.def
index 51c89c20a35..d1b664dd964 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/artikel3-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/artikel3-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `artikel3-xepersian.def',
+%% This is file `artikel3-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,artikel3-xepersian.def')
+%% xepersian.dtx (with options: `table,artikel3-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{artikel3-xepersian.def}[2010/07/25 v0.1 adaptations for artikel3 class]
+\ProvidesFile{artikel3-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for artikel3 class for XeTeX engine]
\renewcommand*\thepart{\@tartibi\c@part}
\renewcommand*\appendix{\par
\setcounter{section}{0}%
@@ -45,4 +45,4 @@
\gdef\thesection{\@harfi\c@section}}
\endinput
%%
-%% End of file `artikel3-xepersian.def'.
+%% End of file `artikel3-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/backref-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/backref-xetex-xepersian.def
index a41f7ef5620..0880edb2159 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/backref-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/backref-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `backref-xepersian.def',
+%% This is file `backref-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,backref-xepersian.def')
+%% xepersian.dtx (with options: `table,backref-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{backref-xepersian.def}[2010/07/25 v0.1 adaptations for backref package]
+\ProvidesFile{backref-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for backref package for XeTeX engine]
\def\backrefpagesname{\if@RTL صفحات\else pages\fi}
\def\BR@Latincitex[#1]#2{%
\BRorg@Latincitex[{#1}]{#2}%
@@ -59,4 +59,4 @@
}%
\endinput
%%
-%% End of file `backref-xepersian.def'.
+%% End of file `backref-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/beamer-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/beamer-xetex-xepersian.def
index 9e577e581c6..a7565cdf152 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/beamer-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/beamer-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `beamer-xepersian.def',
+%% This is file `beamer-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,beamer-xepersian.def')
+%% xepersian.dtx (with options: `table,beamer-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{beamer-xepersian.def}[2022/06/27 v0.2 xepersian changes to beamer class]
+\ProvidesFile{beamer-xetex-xepersian.def}[2022/06/27 v0.2 xepersian adaptations for beamer class for XeTeX engine]
\usefonttheme[stillsansserifmath]{serif}
\renewcommand*{\bidi@beamer@today}{%
@@ -45,4 +45,4 @@
\endinput
%%
-%% End of file `beamer-xepersian.def'.
+%% End of file `beamer-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/beamerbasetranslator-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/beamerbasetranslator-xetex-xepersian.def
index af992b31ec4..b612bfc11e4 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/beamerbasetranslator-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/beamerbasetranslator-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `beamerbasetranslator-xepersian.def',
+%% This is file `beamerbasetranslator-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,beamerbasetranslator-xepersian.def')
+%% xepersian.dtx (with options: `table,beamerbasetranslator-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{beamerbasetranslator-xepersian.def}[2022/06/27 v0.3 xepersian changes to beamerbasetranslator package]
+\ProvidesFile{beamerbasetranslator-xetex-xepersian.def}[2022/06/27 v0.3 xepersian adaptations for beamerbasetranslator package for XeTeX engine]
\newcommand*{\ProvidePersianTranslation}[2]{%
\providetranslation{#1}{\ifRtoL{#2}{#1}}%
}
@@ -60,4 +60,4 @@
\endinput
%%
-%% End of file `beamerbasetranslator-xepersian.def'.
+%% End of file `beamerbasetranslator-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xetex-xepersian.def
index cc26eefac39..9f30f183582 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `bidimoderncv-xepersian.def',
+%% This is file `bidimoderncv-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,bidimoderncv-xepersian.def')
+%% xepersian.dtx (with options: `table,bidimoderncv-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,8 +37,8 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{bidimoderncv-xepersian.def}[2010/07/25 v0.1 adaptations for bidimoderncv class]
+\ProvidesFile{bidimoderncv-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for bidimoderncv class for XeTeX engine]
\def\refname{\if@RTL تألیفات\else Publications\fi}
\endinput
%%
-%% End of file `bidimoderncv-xepersian.def'.
+%% End of file `bidimoderncv-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xetex-xepersian.def
index 9f1d2cc3b80..b4c2c5e681a 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `bidituftesidenote-xepersian.def',
+%% This is file `bidituftesidenote-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,bidituftesidenote-xepersian.def')
+%% xepersian.dtx (with options: `table,bidituftesidenote-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{bidituftesidenote-xepersian.def}[2017/02/04 v0.3 xepersian changes to bidituftesidenote package]
+\ProvidesFile{bidituftesidenote-xetex-xepersian.def}[2017/02/04 v0.3 xepersian adaptations for bidituftesidenote package for XeTeX engine]
\setLTRcitationfont{\resetlatinfont\footnotesize}
@@ -47,4 +47,4 @@
\endinput
%%
-%% End of file `bidituftesidenote-xepersian.def'.
+%% End of file `bidituftesidenote-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/boek3-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/boek-xetex-xepersian.def
index 27e33f93a74..f51b3c1f646 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/boek3-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/boek-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `boek3-xepersian.def',
+%% This is file `boek-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,boek3-xepersian.def')
+%% xepersian.dtx (with options: `table,boek-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{boek3-xepersian.def}[2010/07/25 v0.1 adaptations for boek3 class]
+\ProvidesFile{boek-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for boek class for XeTeX engine]
\renewcommand*\thepart{\@tartibi\c@part}
\renewcommand*\frontmatter{%
\cleardoublepage
@@ -50,4 +50,4 @@
\gdef\thechapter{\@harfi\c@chapter}}
\endinput
%%
-%% End of file `boek3-xepersian.def'.
+%% End of file `boek-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/boek-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/boek3-xetex-xepersian.def
index c7a44bf1c3b..e255a92339b 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/boek-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/boek3-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `boek-xepersian.def',
+%% This is file `boek3-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,boek-xepersian.def')
+%% xepersian.dtx (with options: `table,boek3-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{boek-xepersian.def}[2010/07/25 v0.1 adaptations for boek class]
+\ProvidesFile{boek3-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for boek3 class for XeTeX engine]
\renewcommand*\thepart{\@tartibi\c@part}
\renewcommand*\frontmatter{%
\cleardoublepage
@@ -50,4 +50,4 @@
\gdef\thechapter{\@harfi\c@chapter}}
\endinput
%%
-%% End of file `boek-xepersian.def'.
+%% End of file `boek3-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/extbook-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/book-xetex-xepersian.def
index 18bf1982fee..bec75614880 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/extbook-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/book-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `extbook-xepersian.def',
+%% This is file `book-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,extbook-xepersian.def')
+%% xepersian.dtx (with options: `table,book-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{extbook-xepersian.def}[2010/07/25 v0.1 adaptations for extbook class]
+\ProvidesFile{book-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for book class for XeTeX engine]
\renewcommand\frontmatter{%
\cleardoublepage
\@mainmatterfalse
@@ -51,4 +51,4 @@
}%end appendix
\endinput
%%
-%% End of file `extbook-xepersian.def'.
+%% End of file `book-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/report-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/bookest-xetex-xepersian.def
index 3284f5fe560..4835ed3d921 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/report-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/bookest-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `report-xepersian.def',
+%% This is file `bookest-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,report-xepersian.def')
+%% xepersian.dtx (with options: `table,bookest-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{report-xepersian.def}[2010/07/25 v0.2 adaptations for standard report class]
+\ProvidesFile{bookest-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for bookest class for XeTeX engine]
\renewcommand \thepart {\@tartibi\c@part}
\renewcommand\appendix{\par
\setcounter{chapter}{0}%
@@ -47,4 +47,4 @@
}%end appendix
\endinput
%%
-%% End of file `report-xepersian.def'.
+%% End of file `bookest-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/breqn-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/breqn-xetex-xepersian.def
index 210b63be1fe..0b29b13d667 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/breqn-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/breqn-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `breqn-xepersian.def',
+%% This is file `breqn-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,breqn-xepersian.def')
+%% xepersian.dtx (with options: `table,breqn-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{breqn-xepersian.def}[2010/07/25 v0.1 adaptations for breqn package]
+\ProvidesFile{breqn-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for breqn package for XeTeX engine]
\def\@dmath[#1]{\if@RTL\@RTLfalse\addfontfeatures{Mapping=farsidigits}\fi%
\everydisplay\expandafter{\the\everydisplay \display@setup}%
\if@noskipsec \leavevmode \fi
@@ -79,4 +79,4 @@
}
\endinput
%%
-%% End of file `breqn-xepersian.def'.
+%% End of file `breqn-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/color-localise-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/color-localize-xetex-xepersian.def
index 658a8b89c2b..07f435c9154 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/color-localise-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/color-localize-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `color-localise-xepersian.def',
+%% This is file `color-localize-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,color-localise-xepersian.def')
+%% xepersian.dtx (with options: `table,color-localize-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\آماده‌سازی‌پرونده{color-localise-xepersian.def}[2011/03/01 v0.1 localising color package]
+\آماده‌سازی‌پرونده{color-localize-xetex-xepersian.def}[2011/03/01 v0.1 localizing color package for XeTeX engine]
\تعریف‌رنگ{سیاه}{rgb}{0,0,0}
\تعریف‌رنگ{سفید}{rgb}{1,1,1}
\تعریف‌رنگ{قرمز}{rgb}{1,0,0}
@@ -48,4 +48,4 @@
\تعریف‌رنگ{زرد}{cmyk}{0,0,1,0}
\endinput
%%
-%% End of file `color-localise-xepersian.def'.
+%% End of file `color-localize-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/enumerate-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/enumerate-xetex-xepersian.def
index 00f1c01bb19..9ac88451d0c 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/enumerate-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/enumerate-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `enumerate-xepersian.def',
+%% This is file `enumerate-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,enumerate-xepersian.def')
+%% xepersian.dtx (with options: `table,enumerate-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{enumerate-xepersian.def}[2010/07/25 v0.1 adaptations for enumerate package]
+\ProvidesFile{enumerate-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for enumerate package for XeTeX engine]
\def\@enloop@{%
\ifx ا\@entemp \def\@tempa{\@enLabel\harfi }\else
\ifx ی\@entemp \def\@tempa{\@enLabel\adadi }\else
@@ -56,4 +56,4 @@
\@tempa}
\endinput
%%
-%% End of file `enumerate-xepersian.def'.
+%% End of file `enumerate-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/enumitem-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/enumitem-xetex-xepersian.def
index 493ca6848cc..29c36a2fd98 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/enumitem-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/enumitem-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `enumitem-xepersian.def',
+%% This is file `enumitem-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,enumitem-xepersian.def')
+%% xepersian.dtx (with options: `table,enumitem-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{enumitem-xepersian.def}[2017/09/06 v0.1 adaptations for enumitem package]
+\ProvidesFile{enumitem-xetex-xepersian.def}[2017/09/06 v0.1 xepersian adaptations for enumitem package for XeTeX engine]
\AddEnumerateCounter*\tartibi\@tartibi{999999999}
\AddEnumerateCounter*\adadi\@adadi{999999999}
\AddEnumerateCounter\harfi\@harfi{گ}
@@ -50,4 +50,4 @@
\SetEnumerateShortLabel{ج}{\abjad*}
\endinput
%%
-%% End of file `enumitem-xepersian.def'.
+%% End of file `enumitem-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/extarticle-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/extarticle-xetex-xepersian.def
index feccb5013bd..058eebee31a 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/extarticle-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/extarticle-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `extarticle-xepersian.def',
+%% This is file `extarticle-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,extarticle-xepersian.def')
+%% xepersian.dtx (with options: `table,extarticle-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{extarticle-xepersian.def}[2010/07/25 v0.1 adaptations for extarticle class]
+\ProvidesFile{extarticle-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for extarticle class for XeTeX engine]
\renewcommand\thepart {\@tartibi\c@part}
\renewcommand\appendix{\par
\setcounter{section}{0}%
@@ -45,4 +45,4 @@
\gdef\thesection{\@harfi\c@section}}
\endinput
%%
-%% End of file `extarticle-xepersian.def'.
+%% End of file `extarticle-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/book-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/extbook-xetex-xepersian.def
index d8cec9bf13e..6e88d806cf3 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/book-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/extbook-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `book-xepersian.def',
+%% This is file `extbook-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,book-xepersian.def')
+%% xepersian.dtx (with options: `table,extbook-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{book-xepersian.def}[2010/07/25 v0.2 adaptations for standard book class]
+\ProvidesFile{extbook-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for extbook class for XeTeX engine]
\renewcommand\frontmatter{%
\cleardoublepage
\@mainmatterfalse
@@ -51,4 +51,4 @@
}%end appendix
\endinput
%%
-%% End of file `book-xepersian.def'.
+%% End of file `extbook-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xetex-bidi-xetex-xepersian.def
index 67ee7953a6f..26247484b37 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xetex-bidi-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `extrafootnotefeatures-xepersian.def',
+%% This is file `extrafootnotefeatures-xetex-bidi-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,extrafootnotefeatures-xepersian.def')
+%% xepersian.dtx (with options: `table,extrafootnotefeatures-xetex-bidi-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,10 +37,10 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{extrafootnotefeatures-xepersian.def}[2012/01/01 v0.2 footnote macros for extrafootnotefeatures option of xepersian package]
+\ProvidesFile{extrafootnotefeatures-xetex-bidi-xetex-xepersian.def}[2012/01/01 v0.2 xepersian adaptations for extrafootnotefeatures option for XeTeX engine]
\renewcommand{\foottextfont}{\footnotesize\if@RTL@footnote\else\resetlatinfont\fi}
\renewcommand{\LTRfoottextfont}{\footnotesize\resetlatinfont}
\renewcommand{\RTLfoottextfont}{\footnotesize\setpersianfont}
\endinput
%%
-%% End of file `extrafootnotefeatures-xepersian.def'.
+%% End of file `extrafootnotefeatures-xetex-bidi-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/extreport-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/extreport-xetex-xepersian.def
index 27d5448d7b4..414fe323cf8 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/extreport-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/extreport-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `extreport-xepersian.def',
+%% This is file `extreport-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,extreport-xepersian.def')
+%% xepersian.dtx (with options: `table,extreport-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{extreport-xepersian.def}[2010/07/25 v0.1 adaptations for extreport class]
+\ProvidesFile{extreport-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for extreport class for XeTeX engine]
\renewcommand\thepart {\@tartibi\c@part}
\renewcommand\appendix{\par
\setcounter{chapter}{0}%
@@ -46,4 +46,4 @@
\gdef\thechapter{\@harfi\c@chapter}}
\endinput
%%
-%% End of file `extreport-xepersian.def'.
+%% End of file `extreport-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/fancyref-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/fancyref-xetex-xepersian.def
index 4e631969006..e82808ecf19 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/fancyref-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/fancyref-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `fancyref-xepersian.def',
+%% This is file `fancyref-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,fancyref-xepersian.def')
+%% xepersian.dtx (with options: `table,fancyref-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{fancyref-xepersian.def}[2018/09/29 v0.1 bilingual captions for fancyref package]
+\ProvidesFile{fancyref-xetex-xepersian.def}[2018/09/29 v0.1 xepersian adaptations for fancyref package for XeTeX engine]
\renewcommand*{\Frefchapname}{\chaptername}
\renewcommand*{\Frefenumname}{%
\if@RTL
@@ -198,4 +198,4 @@
}
\endinput
%%
-%% End of file `fancyref-xepersian.def'.
+%% End of file `fancyref-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/footnote-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/footnote-xetex-bidi-xetex-xepersian.def
index 313c0a294d9..9cff3330ab4 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/footnote-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/footnote-xetex-bidi-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `footnote-xepersian.def',
+%% This is file `footnote-xetex-bidi-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,footnote-xepersian.def')
+%% xepersian.dtx (with options: `table,footnote-xetex-bidi-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{footnote-xepersian.def}[2017/08/09 v0.6 footnote macros for xepersian package]
+\ProvidesFile{footnote-xetex-bidi-xetex-xepersian.def}[2017/08/09 v0.6 xepersian adaptations for footnotes for XeTeX engine]
\renewcommand*{\bidi@@footnotetext@font}{\footnotesize\if@RTL@footnote\else\resetlatinfont\fi}
@@ -47,4 +47,4 @@
\endinput
%%
-%% End of file `footnote-xepersian.def'.
+%% End of file `footnote-xetex-bidi-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/framed-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/framed-xetex-xepersian.def
index f5eed62fd57..ae466246a52 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/framed-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/framed-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `framed-xepersian.def',
+%% This is file `framed-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,framed-xepersian.def')
+%% xepersian.dtx (with options: `table,framed-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{framed-xepersian.def}[2012/06/05 v0.1 xepersian adaptations for framed package for XeTeX engine]
+\ProvidesFile{framed-xetex-xepersian.def}[2012/06/05 v0.1 xepersian adaptations for framed package for XeTeX engine]
\renewenvironment{titled-frame}[1]{%
\def\FrameCommand{\fboxsep8pt\fboxrule2pt
\TitleBarFrame{\textbf{#1}}}%
@@ -51,4 +51,4 @@
{\endMakeFramed}
\endinput
%%
-%% End of file `framed-xepersian.def'.
+%% End of file `framed-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/glossaries-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/glossaries-xetex-xepersian.def
index c3f4222156e..7dd8a2d456e 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/glossaries-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/glossaries-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `glossaries-xepersian.def',
+%% This is file `glossaries-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,glossaries-xepersian.def')
+%% xepersian.dtx (with options: `table,glossaries-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,10 +37,10 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{glossaries-xepersian.def}[2014/09/04 v0.4 xepersian adaptations for glossaries package for XeTeX engine]
+\ProvidesFile{glossaries-xetex-xepersian.def}[2014/09/04 v0.4 xepersian adaptations for glossaries package for XeTeX engine]
\glsaddprotectedpagefmt{@harfi}
\glsaddprotectedpagefmt{@tartibi}
\glsaddprotectedpagefmt{@adadi}
\endinput
%%
-%% End of file `glossaries-xepersian.def'.
+%% End of file `glossaries-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/hyperref-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/hyperref-xetex-xepersian.def
index c131fca2b39..962d05be41e 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/hyperref-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/hyperref-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `hyperref-xepersian.def',
+%% This is file `hyperref-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,hyperref-xepersian.def')
+%% xepersian.dtx (with options: `table,hyperref-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{hyperref-xepersian.def}[2022/10/30 v0.8 xepersian adaptations for hyperref package]
+\ProvidesFile{hyperref-xetex-xepersian.def}[2022/10/30 v0.8 xepersian adaptations for hyperref package for XeTeX engine]
\def\equationautorefname{\if@RTL معادله\else Equation\fi}%
\def\footnoteautorefname{\if@RTL زیرنویس\else footnote\fi}%
\def\itemautorefname{\if@RTL فقره\else item\fi}%
@@ -86,4 +86,4 @@
}
\endinput
%%
-%% End of file `hyperref-xepersian.def'.
+%% End of file `hyperref-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/amsart-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/imsproc-xetex-xepersian.def
index 8d31a8bfa3f..aa34c1a670d 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/amsart-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/imsproc-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `amsart-xepersian.def',
+%% This is file `imsproc-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,amsart-xepersian.def')
+%% xepersian.dtx (with options: `table,imsproc-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,8 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{amsart-xepersian.def}[2017/02/04 v0.4 adaptations for amsart class]
+\ProvidesFile{imsproc-xetex-xepersian.def}[2017/06/09 v0.5 xepersian adaptations for imsproc class for XeTeX engine]
+
\renewcommand \thepart {\@tartibi\c@part}
\def\appendix{\par\c@section\z@ \c@subsection\z@
\let\sectionname\appendixname
@@ -45,4 +46,4 @@
\endinput
%%
-%% End of file `amsart-xepersian.def'.
+%% End of file `imsproc-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/kashida-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/kashida-xetex-xepersian.def
index 4f3a013bb90..f0be8e4a0fe 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/kashida-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/kashida-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `kashida-xepersian.def',
+%% This is file `kashida-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,kashida-xepersian.def')
+%% xepersian.dtx (with options: `table,kashida-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,21 +37,19 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{kashida-xepersian.def}[2020/05/16 v0.8 implementation of Kashida for xepersian package]
+\ProvidesFile{kashida-xetex-xepersian.def}[2024/12/20 v1.0 implementation of Kashida for XeTeX engine]
\chardef\xepersian@zwj="200D % zero-width joiner
-\chardef\xepersian@lrm="200E % left to right mark
\chardef\xepersian@kashidachar="0640 % kashida
-\chardef\xepersian@D=10 % dual-joiner class
-\chardef\xepersian@L=11 % lam
-\chardef\xepersian@R=12 % right-joiner
-\chardef\xepersian@A=13 % alef
-\chardef\xepersian@V=4096 % vowel or other combining mark (to be ignored)
+\chardef\xepersian@dualjoiner=10 % dual-joiner class
+\chardef\xepersian@lam=11 % lam
+\chardef\xepersian@rightjoiner=12 % right-joiner
+\chardef\xepersian@alef=13 % alef
+\chardef\xepersian@vowel=4096 % vowel or other combining mark (to be ignored)
\newif\if@Kashida@on
\def\xepersian@kashida{%
\if@Kashida@on
\xepersian@zwj
- \xepersian@lrm
\nobreak
\leaders\hrule height \XeTeXglyphbounds\tw@
\the\XeTeXcharglyph\xepersian@kashidachar
@@ -72,23 +70,23 @@
\expandafter\next\charlist,,\end}
\def\finishsetclass#1,,\end{}
-\setclass \xepersian@A {0622,0623,0625,0627}
-\setclass \xepersian@R {0624,0629,062F,0630,0631,0632,0648,0698}
-\setclass \xepersian@D {0626,0628,062A,062B,062C,062D,062E}
-\setclass \xepersian@D {0633,0634,0635,0636,0637,0638,0639,063A}
-\setclass \xepersian@D {0640,0641,0642,0643,0645,0646,0647,0649,064A}
-\setclass \xepersian@D {067E,0686,06A9,06AF,06CC}
-\setclass \xepersian@L {0644}
-\setclass \xepersian@V {064B,064C,064D,064E,064F,0650,0651,0652}
+\setclass \xepersian@alef {0622,0623,0625,0627}
+\setclass \xepersian@rightjoiner {0624,0629,062F,0630,0631,0632,0648,0698}
+\setclass \xepersian@dualjoiner {0626,0628,062A,062B,062C,062D,062E}
+\setclass \xepersian@dualjoiner {0633,0634,0635,0636,0637,0638,0639,063A}
+\setclass \xepersian@dualjoiner {0640,0641,0642,0643,0645,0646,0647,0649,064A}
+\setclass \xepersian@dualjoiner {067E,0686,06A9,06AF,06CC}
+\setclass \xepersian@lam {0644}
+\setclass \xepersian@vowel {064B,064C,064D,064E,064F,0650,0651,0652}
-\XeTeXinterchartoks \xepersian@D \xepersian@D = {\xepersian@kashida}
-\XeTeXinterchartoks \xepersian@L \xepersian@D = {\xepersian@kashida}
-\XeTeXinterchartoks \xepersian@D \xepersian@L = {\xepersian@kashida}
-\XeTeXinterchartoks \xepersian@L \xepersian@L = {\xepersian@kashida}
-\XeTeXinterchartoks \xepersian@D \xepersian@R = {\xepersian@kashida}
-\XeTeXinterchartoks \xepersian@D \xepersian@A = {\xepersian@kashida}
-\XeTeXinterchartoks \xepersian@L \xepersian@R = {\xepersian@kashida}
-\XeTeXinterchartoks \xepersian@L \xepersian@A = {}
+\XeTeXinterchartoks \xepersian@dualjoiner \xepersian@dualjoiner = {\xepersian@kashida}
+\XeTeXinterchartoks \xepersian@lam \xepersian@dualjoiner = {\xepersian@kashida}
+\XeTeXinterchartoks \xepersian@dualjoiner \xepersian@lam = {\xepersian@kashida}
+\XeTeXinterchartoks \xepersian@lam \xepersian@lam = {\xepersian@kashida}
+\XeTeXinterchartoks \xepersian@dualjoiner \xepersian@rightjoiner = {\xepersian@kashida}
+\XeTeXinterchartoks \xepersian@dualjoiner \xepersian@alef = {\xepersian@kashida}
+\XeTeXinterchartoks \xepersian@lam \xepersian@rightjoiner = {\xepersian@kashida}
+\XeTeXinterchartoks \xepersian@lam \xepersian@alef = {}
\newcommand{\KashidaOn}{\@Kashida@ontrue}
\newcommand{\KashidaOff}{\@Kashida@onfalse}
@@ -96,4 +94,4 @@
\KashidaOn
\endinput
%%
-%% End of file `kashida-xepersian.def'.
+%% End of file `kashida-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-commands-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-commands-xetex-xepersian.def
index b7e470507fb..9fa0b539087 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-commands-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-commands-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `latex-localise-commands-xepersian.def',
+%% This is file `latex-localize-commands-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,latex-localise-commands-xepersian.def')
+%% xepersian.dtx (with options: `table,latex-localize-commands-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{latex-localise-commands-xepersian.def}[2014/02/05 v0.3 Persian localisation of LaTeX2e commands]
+\ProvidesFile{latex-localize-commands-xetex-xepersian.def}[2014/02/05 v0.3 Persian localization of LaTeX2e commands for XeTeX engine]
\eqcommand{شمع‌جدول}{@arstrut}
\eqcommand{فوق}{above}
\eqcommand{فاصله‌کوتاه‌بالای‌نمایش}{abovedisplayshortskip}
@@ -983,4 +983,4 @@
\eqcommand{@فرفاصله}{z@skip}
\endinput
%%
-%% End of file `latex-localise-commands-xepersian.def'.
+%% End of file `latex-localize-commands-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-environments-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-environments-xetex-xepersian.def
index d09f3f5a244..153f1bfe632 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-environments-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-environments-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `latex-localise-environments-xepersian.def',
+%% This is file `latex-localize-environments-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,latex-localise-environments-xepersian.def')
+%% xepersian.dtx (with options: `table,latex-localize-environments-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{latex-localise-environments-xepersian.def}[2022/06/06 v0.3 Persian localisation of LaTeX2e environments]
+\ProvidesFile{latex-localize-environments-xetex-xepersian.def}[2022/06/06 v0.3 Persian localization of LaTeX2e environments for XeTeX engine]
\eqenvironment{چکیده}{abstract}
\eqenvironment{پیوست}{appendix}
\eqenvironment{آرایه}{array}
@@ -82,4 +82,4 @@
\eqenvironment{شعر}{verse}
\endinput
%%
-%% End of file `latex-localise-environments-xepersian.def'.
+%% End of file `latex-localize-environments-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-messages-xetex-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-messages-xetex-xepersian.def
new file mode 100644
index 00000000000..fbfe07c01e1
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-messages-xetex-xepersian.def
@@ -0,0 +1,43 @@
+%%
+%% This is file `latex-localize-messages-xetex-xepersian.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xepersian.dtx (with options: `table,latex-localize-messages-xetex-xepersian.def')
+%%
+%% __________________________________________________
+%% Vafa Khalighi
+%%
+%% Copyright (c) 2008--2025 Vafa Khalighi
+%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
+%%
+%% It may be distributed and/or modified under the LaTeX Project Public License,
+%% version 1.3c or higher (your choice). The latest version of
+%% this license is at: http://www.latex-project.org/lppl.txt
+%%
+%% This work is “author-maintained” (as per LPPL maintenance status)
+%% by Vafa Khalighi.
+%%
+%%
+%% \CheckSum{10853}
+%% \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 \~}
+%%
+\آماده‌سازی‌پرونده{latex-localize-messages-xetex-xepersian.def}[2011/03/01 v0.1 localizing LaTeX2e messages for XeTeX engine]
+\endinput
+%%
+%% End of file `latex-localize-messages-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-misc-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-misc-xetex-xepersian.def
index 87d8f16ac89..276982a97bc 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-misc-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-misc-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `latex-localise-misc-xepersian.def',
+%% This is file `latex-localize-misc-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,latex-localise-misc-xepersian.def')
+%% xepersian.dtx (with options: `table,latex-localize-misc-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{latex-localise-misc-xepersian.def}[2012/01/01 v0.2 miscellaneous Persian localisation of LaTeX2e]
+\ProvidesFile{latex-localize-misc-xetex-xepersian.def}[2025/01/03 v0.3 miscellaneous Persian localization of LaTeX2e for XeTeX engine]
\تر\گرجدید#1{%
\شمار@\نویسه‌ویژه \نویسه‌ویژه\من@ا
\بگذار#1\گرنادرست
@@ -63,7 +63,7 @@
}
\بگذار\ازنو=\رگ
-\@ifdefinitionfileloaded{latex-xetex-bidi}{%
+\ApplyPatchCodeToFile{latex-xetex-bidi}{%
\def\@xfloat #1[#2]{%
\@nodocument
\def \@captype {#1}%
@@ -205,8 +205,8 @@
\if #1پ3 \else \z@ \@preamerr 0\fi
\fi \fi \fi \fi \fi \fi \fi \fi \fi \fi
\fi}%
-}{}
-\@ifdefinitionfileloaded{array-xetex-bidi}{%
+}
+\ApplyPatchCodeToFile{array-xetex-bidi}{%
\def\@testpach{\@chclass
\ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
\ifnum \@lastchclass=7 5 \else
@@ -238,8 +238,8 @@
\if \@nextchar ز5 \else
\z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi \fi \fi \fi
\fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}%
-}{}
-\@ifdefinitionfileloaded{arydshln-xetex-bidi}{
+}
+\ApplyPatchCodeToFile{arydshln-xetex-bidi}{
\ifadl@usingarypkg
\def\@testpach{\@chclass
\ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
@@ -328,8 +328,8 @@
\def\adl@class@start{6}
\def\adl@class@iiiorvii{3}
\fi
-}{}
-\@ifdefinitionfileloaded{tabulary-xetex-bidi}{%
+}
+\ApplyPatchCodeToFile{tabulary-xetex-bidi}{%
\def\@testpach{\@chclass
\ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
\ifnum \@lastchclass=7 5 \else
@@ -369,8 +369,8 @@
\if \@nextchar ز5 \else
\z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi\fi \fi \fi\fi \fi \fi \fi \fi \fi \fi \fi \fi
\fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}%
-}{}
-\@ifdefinitionfileloaded{float-xetex-bidi}{%
+}
+\ApplyPatchCodeToFile{float-xetex-bidi}{%
\let\@float@Hx\@xfloat
\def\@xfloat#1[{\@ifnextchar{H}{\@float@HH{#1}[}{\@ifnextchar{آ}{\@float@آآ{#1}[}{\@float@Hx{#1}[}}}
\def\@float@HH#1[H]{%
@@ -393,7 +393,7 @@
\vbox\bgroup \hsize\columnwidth \@parboxrestore
\@floatboxreset \@setnobreak
\ignorespaces}
-}{}
+}
\begingroup \catcode `|=0 \catcode `[= 1
\catcode`]=2 \catcode `\{=12 \catcode `\}=12
\catcode`\\=12 |gdef|@x@xepersian@localize@verbatim#1\پایان{همانطورکه‌هست}[#1|پایان[همانطورکه‌هست]]
@@ -407,4 +407,4 @@
\expandafter\let\csname endهمانطورکه‌هست*\endcsname =\endهمانطورکه‌هست
\endinput
%%
-%% End of file `latex-localise-misc-xepersian.def'.
+%% End of file `latex-localize-misc-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/listings-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/listings-xetex-xepersian.def
index 43d21035f5b..a9b30960d46 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/listings-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/listings-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `listings-xepersian.def',
+%% This is file `listings-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,listings-xepersian.def')
+%% xepersian.dtx (with options: `table,listings-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,9 +37,9 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{listings-xepersian.def}[2014/07/17 v0.3 bilingual captions for listings package]
+\ProvidesFile{listings-xetex-xepersian.def}[2014/07/17 v0.3 xepersian adaptations for listings package for XeTeX engine]
\def\lstlistingname{\if@RTL برنامهٔ\else Listing\fi}
\def\lstlistlistingname{\if@RTL فهرست برنامه‌ها\else Listings\fi}
\endinput
%%
-%% End of file `listings-xepersian.def'.
+%% End of file `listings-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/loadingorder-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/loadingorder-xepersian.def
deleted file mode 100644
index ecea427a6c9..00000000000
--- a/Master/texmf-dist/tex/xelatex/xepersian/loadingorder-xepersian.def
+++ /dev/null
@@ -1,81 +0,0 @@
-%%
-%% This is file `loadingorder-xepersian.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% xepersian.dtx (with options: `table,loadingorder-xepersian.def')
-%%
-%% __________________________________________________
-%% Vafa Khalighi
-%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
-%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
-%%
-%% It may be distributed and/or modified under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
-%%
-%% This work is “author-maintained” (as per LPPL maintenance status)
-%% by Vafa Khalighi.
-%%
-%%
-%% \CheckSum{11192}
-%% \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 \~}
-%%
-\ProvidesFile{loadingorder-xepersian.def}[2018/09/29 v0.5 making sure that xepersian is the last package loaded]
-\bidi@isloaded{algorithmic}
-\bidi@isloaded{algorithm}
-\bidi@isloaded{backref}
-\bidi@isloaded{enumerate}
-\bidi@isloaded{enumitem}
-\bidi@isloaded{fancyref}
-\bidi@isloaded{tocloft}
-\bidi@isloaded{url}
-\bidi@isloaded{varioref}
-\AtBeginDocument{
- \if@bidi@algorithmicloaded@\else
- \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package algorithmic after xepersian package. Please load package algorithmic before xepersian package, and then try to run xelatex on your document again}{}]{algorithmic}
- \fi%
- \if@bidi@algorithmloaded@\else
- \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package algorithm after xepersian package. Please load package algorithm before xepersian package, and then try to run xelatex on your document again}{}]{algorithm}
- \fi%
- \if@bidi@backrefloaded@\else
- \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package backref after xepersian package. Please load package backref before xepersian package, and then try to run xelatex on your document again}{}]{backref}
- \fi%
- \if@bidi@enumerateloaded@\else
- \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package enumerate after xepersian package. Please load package enumerate before xepersian package, and then try to run xelatex on your document again}{}]{enumerate}
- \fi%
- \if@bidi@enumitemloaded@\else
- \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package enumitem after xepersian package. Please load package enumitem before xepersian package, and then try to run xelatex on your document again}{}]{enumitem}
- \fi%
- \if@bidi@fancyrefloaded@\else
- \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package fancyref after xepersian package. Please load package fancyref before xepersian package, and then try to run xelatex on your document again}{}]{fancyref}
- \fi%
- \if@bidi@tocloftloaded@\else
- \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package tocloft after xepersian package. Please load package tocloft before xepersian package, and then try to run xelatex on your document again}{}]{tocloft}
- \fi%
- \if@bidi@urlloaded@\else
- \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package url after xepersian package. Please load package url before xepersian package, and then try to run xelatex on your document again}{}]{url}
- \fi%
- \if@bidi@variorefloaded@\else
- \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package varioref after xepersian package. Please load package varioref before xepersian package, and then try to run xelatex on your document again}{}]{varioref}
- \fi%
-}
-\endinput
-%%
-%% End of file `loadingorder-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/localise-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/localize-xetex-xepersian.def
index 7243b3630b5..77f5894886b 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/localise-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/localize-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `localise-xepersian.def',
+%% This is file `localize-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,localise-xepersian.def')
+%% xepersian.dtx (with options: `table,localize-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{localise-xepersian.def}[2022/06/06 v0.2c Persian localisation of LaTeX2e]
+\ProvidesFile{localize-xetex-xepersian.def}[2025/01/06 v0.2e Persian localization of LaTeX2e for XeTeX engine]
\newcommand{\makezwnjletter}{\catcode`‌=11\relax}
\makezwnjletter
\newcommand*{\eqcommand}[2]{\if@bidi@csprimitive{#2}{\bidi@csletcs{#1}{#2}}{\bidi@csdefcs{#1}{#2}}}
@@ -47,22 +47,17 @@
\expandafter\let\csname #1\expandafter\endcsname\csname #2\endcsname
\expandafter\let\csname end#1\expandafter\endcsname\csname end#2\endcsname
}
-\@ifpackageloaded{keyval}{%
\newcommand*\keyval@eq@alias@key[4][KV]{%
\bidi@csletcs{#1@#2@#3}{#1@#2@#4}%
- \bidi@csletcs{#1@#2@#3@default}{#1@#2@#4@default}}%
-}{\@ifpackageloaded{xkeyval}{%
-\newcommand*\keyval@eq@alias@key[4][KV]{%
- \bidi@csletcs{#1@#2@#3}{#1@#2@#4}%
- \bidi@csletcs{#1@#2@#3@default}{#1@#2@#4@default}}%
-}{}}
-\input{latex-localise-commands-xepersian.def}
-\input{xepersian-localise-commands-xepersian.def}
-\input{latex-localise-environments-xepersian.def}
-\input{xepersian-localise-environments-xepersian.def}
-\input{latex-localise-messages-xepersian.def}
-\input{latex-localise-misc-xepersian.def}
-\input{packages-localise-xepersian.def}
+ \bidi@csletcs{#1@#2@#3@default}{#1@#2@#4@default}%
+}
+\input{latex-localize-commands-xetex-xepersian.def}
+\input{xepersian-localize-commands-xetex-xepersian.def}
+\input{latex-localize-environments-xetex-xepersian.def}
+\input{xepersian-localize-environments-xetex-xepersian.def}
+\input{latex-localize-messages-xetex-xepersian.def}
+\input{latex-localize-misc-xetex-xepersian.def}
+\input{packages-localize-xetex-xepersian.def}
\aliasfontfeature{ExternalLocation}{مکان‌خارجی}
\aliasfontfeature{Path}{مسیر}
\aliasfontfeature{Renderer}{تحویل‌دهنده}
@@ -124,4 +119,4 @@
\aliasfontfeatureoption{Style}{MathScriptScript}{اسکریپت‌اسکریپت‌ریاضی}
\endinput
%%
-%% End of file `localise-xepersian.def'.
+%% End of file `localize-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/memoir-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/memoir-xetex-xepersian.def
index e26bbb9ab39..2839d19b808 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/memoir-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/memoir-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `memoir-xepersian.def',
+%% This is file `memoir-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,memoir-xepersian.def')
+%% xepersian.dtx (with options: `table,memoir-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{memoir-xepersian.def}[2010/07/25 v0.1 adaptations for memoir class]
+\ProvidesFile{memoir-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for memoir class for XeTeX engine]
\renewcommand{\@memfront}{%
\@smemfront\pagenumbering{harfi}}
\renewcommand{\setthesection}{\thechapter\@SepMark\harfi{section}}
@@ -51,4 +51,4 @@
\anappendixtrue}
\endinput
%%
-%% End of file `memoir-xepersian.def'.
+%% End of file `memoir-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/minitoc-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/minitoc-xetex-xepersian.def
index 9b2e993bc84..b6622dec061 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/minitoc-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/minitoc-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `minitoc-xepersian.def',
+%% This is file `minitoc-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,minitoc-xepersian.def')
+%% xepersian.dtx (with options: `table,minitoc-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{minitoc-xepersian.def}[2010/07/25 v0.1 bilingual captions for minitoc package]
+\ProvidesFile{minitoc-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for minitoc package for XeTeX engine]
\def\ptctitle{\if@RTL فهرست مطالب\else Table of Contents\fi}%
\def\plftitle{\if@RTL فهرست تصاویر\else List of Figures\fi}%
\def\plttitle{\if@RTL فهرست جداول\else List of Tables\fi}%
@@ -49,4 +49,4 @@
\def\slttitle{\if@RTL جداول\else Tables\fi}%
\endinput
%%
-%% End of file `minitoc-xepersian.def'.
+%% End of file `minitoc-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/natbib-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/natbib-xetex-xepersian.def
index a820183fa70..836dea3de97 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/natbib-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/natbib-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `natbib-xepersian.def',
+%% This is file `natbib-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,natbib-xepersian.def')
+%% xepersian.dtx (with options: `table,natbib-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{natbib-xepersian.def}[2011/08/01 v0.1 adaptations for natbib package]
+\ProvidesFile{natbib-xetex-xepersian.def}[2011/08/01 v0.1 xepersian adaptations for natbib package for XeTeX engine]
\renewcommand\NAT@set@cites{%
\ifNAT@numbers
\ifNAT@super \let\@cite\NAT@citesuper
@@ -254,4 +254,4 @@
\def\NAT@@Latin@@citetp[#1]{\@ifnextchar[{\@Latincitex[#1]}{\@Latincitex[][#1]}}
\endinput
%%
-%% End of file `natbib-xepersian.def'.
+%% End of file `natbib-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/packages-localise-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/packages-localize-xetex-xepersian.def
index 5938c76ff29..6d535c1ad07 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/packages-localise-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/packages-localize-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `packages-localise-xepersian.def',
+%% This is file `packages-localize-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,packages-localise-xepersian.def')
+%% xepersian.dtx (with options: `table,packages-localize-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,13 +37,13 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\آماده‌سازی‌پرونده{packages-localise-xepersian.def}[2013/04/24 v0.2 localising LaTeX2e Packages]
-\@گرسبک‌فراخوانی‌شده{color}{\ورودی{color-localise-xepersian.def}}{}
-\@ifpackageloaded{multicol}{%
+\آماده‌سازی‌پرونده{packages-localize-xetex-xepersian.def}[2025/01/03 v0.3 localizing LaTeX2e Packages for XeTeX engine]
+\@گرسبک‌فراخوانی‌شده{color}{\ورودی{color-localize-xetex-xepersian.def}}{}
+\ApplyPatchCodeToPackage{multicol}{%
\newenvironment{چندستونی‌ها}{\begin{multicols}}{\end{multicols}}%
\newenvironment{چندستونی‌ها*}{\begin{multicols*}}{\end{multicols*}}%
-}{}
-\@ifpackageloaded{verbatim}{%
+}
+\ApplyPatchCodeToPackage{verbatim}{%
\begingroup
\vrb@catcodes
\lccode`\!=`\\ \lccode`\[=`\{ \lccode`\]=`\}
@@ -129,21 +129,20 @@
\@namedef{همانطورکه‌هست*}{\begingroup\@verbatim\xepersian@localize@verbatim@start}
\def\endهمانطورکه‌هست{\endtrivlist\endgroup\@doendpe}
\expandafter\let\csname endهمانطورکه‌هست*\endcsname =\endهمانطورکه‌هست
-}{}
+}
\ExplSyntaxOn
\AtBeginDocument{
\xepersian_localize_patch_verbatim:
}
\cs_set:Npn \xepersian_localize_patch_verbatim: {
- \@ifpackageloaded{verbatim}{
+ \ApplyPatchCodeToPackage{verbatim}{
\cs_set:cpn {همانطورکه‌هست*} {
\group_begin: \@verbatim \fontspec_print_visible_spaces: \xepersian@localize@verbatim@start
}
- }{
}
}
\ExplSyntaxOff
-\@ifpackageloaded{graphicx}{%
+\ApplyPatchCodeToPackage{graphicx}{%
\def\Gin@boolkey#1#2{%
\expandafter\@ifdefinable \csname Gin@#2درست\endcsname{%
\expandafter\let\csname Gin@#2درست\expandafter\endcsname\csname Gin@#2true\endcsname}%
@@ -184,7 +183,7 @@
\معادل@کلید{Grot}{طول}{x}
\معادل@کلید{Grot}{عرض}{y}
\معادل@کلید{Grot}{واحد}{units}
-}{}
+}
\endinput
%%
-%% End of file `packages-localise-xepersian.def'.
+%% End of file `packages-localize-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/rapport3-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/rapport1-xetex-xepersian.def
index e744b85d39f..e725d26ffb1 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/rapport3-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/rapport1-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `rapport3-xepersian.def',
+%% This is file `rapport1-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,rapport3-xepersian.def')
+%% xepersian.dtx (with options: `table,rapport1-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{rapport3-xepersian.def}[2010/07/25 v0.2 adaptations for rapport3 class]
+\ProvidesFile{rapport1-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for rapport1 class for XeTeX engine]
\renewcommand*\thepart{\@tartibi\c@part}
\renewcommand*\appendix{\par
\setcounter{chapter}{0}%
@@ -46,4 +46,4 @@
\gdef\thechapter{\@harfi\c@chapter}}
\endinput
%%
-%% End of file `rapport3-xepersian.def'.
+%% End of file `rapport1-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/rapport1-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/rapport3-xetex-xepersian.def
index 0d54e6e594a..cf3602385b2 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/rapport1-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/rapport3-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `rapport1-xepersian.def',
+%% This is file `rapport3-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,rapport1-xepersian.def')
+%% xepersian.dtx (with options: `table,rapport3-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{rapport1-xepersian.def}[2010/07/25 v0.1 adaptations for rapport1 class]
+\ProvidesFile{rapport3-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for rapport3 class for XeTeX engine]
\renewcommand*\thepart{\@tartibi\c@part}
\renewcommand*\appendix{\par
\setcounter{chapter}{0}%
@@ -46,4 +46,4 @@
\gdef\thechapter{\@harfi\c@chapter}}
\endinput
%%
-%% End of file `rapport1-xepersian.def'.
+%% End of file `rapport3-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/bookest-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/refrep-xetex-xepersian.def
index ee9079392ad..8a71d373650 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/bookest-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/refrep-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `bookest-xepersian.def',
+%% This is file `refrep-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,bookest-xepersian.def')
+%% xepersian.dtx (with options: `table,refrep-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{bookest-xepersian.def}[2010/07/25 v0.1 adaptations for bookest class]
+\ProvidesFile{refrep-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for refrep class for XeTeX engine]
\renewcommand \thepart {\@tartibi\c@part}
\renewcommand\appendix{\par
\setcounter{chapter}{0}%
@@ -47,4 +47,4 @@
}%end appendix
\endinput
%%
-%% End of file `bookest-xepersian.def'.
+%% End of file `refrep-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/refrep-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/report-xetex-xepersian.def
index a4d8be4fd1a..7db715e06f2 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/refrep-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/report-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `refrep-xepersian.def',
+%% This is file `report-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,refrep-xepersian.def')
+%% xepersian.dtx (with options: `table,report-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{refrep-xepersian.def}[2010/07/25 v0.2 adaptations for refrep class]
+\ProvidesFile{report-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for report class for XeTeX engine]
\renewcommand \thepart {\@tartibi\c@part}
\renewcommand\appendix{\par
\setcounter{chapter}{0}%
@@ -47,4 +47,4 @@
}%end appendix
\endinput
%%
-%% End of file `refrep-xepersian.def'.
+%% End of file `report-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xetex-xepersian.def
index 3dc1af11926..f67b614a7bc 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `scrartcl-xepersian.def',
+%% This is file `scrartcl-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,scrartcl-xepersian.def')
+%% xepersian.dtx (with options: `table,scrartcl-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{scrartcl-xepersian.def}[2022/05/22 v0.3 adaptations for scrartcl class]
+\ProvidesFile{scrartcl-xetex-xepersian.def}[2022/05/22 v0.3 xepersian adaptations for scrartcl class for XeTeX engine]
\renewcommand*{\thepart}{\@tartibi\c@part}
\renewcommand*\appendix{%
\Ifstr{\@currenvir}{appendix}{%
@@ -90,4 +90,4 @@
}
\endinput
%%
-%% End of file `scrartcl-xepersian.def'.
+%% End of file `scrartcl-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/scrbook-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/scrbook-xetex-xepersian.def
index 08a2b1a5ea5..05d23b332be 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/scrbook-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/scrbook-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `scrbook-xepersian.def',
+%% This is file `scrbook-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,scrbook-xepersian.def')
+%% xepersian.dtx (with options: `table,scrbook-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{scrbook-xepersian.def}[2022/05/22 v0.3 adaptations for scrbook class]
+\ProvidesFile{scrbook-xetex-xepersian.def}[2022/05/22 v0.3 xepersian adaptations for scrbook class for XeTeX engine]
\renewcommand*\frontmatter{%
\if@twoside\cleardoubleoddpage\else\clearpage\fi
\@mainmatterfalse\pagenumbering{harfi}%
@@ -95,4 +95,4 @@
}
\endinput
%%
-%% End of file `scrbook-xepersian.def'.
+%% End of file `scrbook-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xetex-xepersian.def
index 40685df629f..398f7c7e604 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `scrreprt-xepersian.def',
+%% This is file `scrreprt-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,scrreprt-xepersian.def')
+%% xepersian.dtx (with options: `table,scrreprt-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{scrreprt-xepersian.def}[2022/05/22 v0.3 adaptations for scrreprt class]
+\ProvidesFile{scrreprt-xetex-xepersian.def}[2022/05/22 v0.3 xepersian adaptations for scrreprt class for XeTeX engine]
\renewcommand*{\thepart}{\@tartibi\c@part}
\renewcommand*\appendix{%
\Ifstr{\@currenvir}{appendix}{%
@@ -91,4 +91,4 @@
}
\endinput
%%
-%% End of file `scrreprt-xepersian.def'.
+%% End of file `scrreprt-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/soul-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/soul-xetex-xepersian.def
index 6e48efa6215..e407be40de2 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/soul-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/soul-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `soul-xepersian.def',
+%% This is file `soul-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,soul-xepersian.def')
+%% xepersian.dtx (with options: `table,soul-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{soul-xepersian.def}[2018/12/12 v0.2 adaptations for soul package]
+\ProvidesFile{soul-xetex-xepersian.def}[2018/12/12 v0.2 xepersian adaptations for soul package for XeTeX engine]
\let\SOUL@tt@latin\SOUL@tt
\newfontface{\SOUL@tt@nonlatin}{Times New Roman}
\def\SOUL@tt{%
@@ -57,4 +57,4 @@
}
\endinput
%%
-%% End of file `soul-xepersian.def'.
+%% End of file `soul-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xetex-xepersian.def
index 6db2ef8c7e9..6c3a5624c47 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `tkz-linknodes-xepersian.def',
+%% This is file `tkz-linknodes-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,tkz-linknodes-xepersian.def')
+%% xepersian.dtx (with options: `table,tkz-linknodes-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{tkz-linknodes-xepersian.def}[2012/06/13 v0.1 adaptations for tkz-linknodes package]
+\ProvidesFile{tkz-linknodes-xetex-xepersian.def}[2012/06/13 v0.1 xepersian adaptations for tkz-linknodes package for XeTeX engine]
\renewcommand*{\@SetTab}{%
\let\@alph\@latinalph%
\ifnum \value{C@NumTab}>25\relax%
@@ -59,4 +59,4 @@
}%
\endinput
%%
-%% End of file `tkz-linknodes-xepersian.def'.
+%% End of file `tkz-linknodes-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/tocloft-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/tocloft-xetex-xepersian.def
index d6622a4c68c..6e18ce69f26 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/tocloft-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/tocloft-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `tocloft-xepersian.def',
+%% This is file `tocloft-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,tocloft-xepersian.def')
+%% xepersian.dtx (with options: `table,tocloft-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,8 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{tocloft-xepersian.def}[2010/07/25 v0.1 bilingual captions for tocloft package]
+\ProvidesFile{tocloft-xetex-xepersian.def}[2025/01/03 v0.2 xepersian adaptations for tocloft package for XeTeX engine]
+\IfClassLoadedT{memoir}{\endinput}
\renewcommand*{\cftchapname}{\if@RTL فصل\else chapter\fi}
\renewcommand*{\cftsecname}{\if@RTL قسمت\else section\fi}
\renewcommand*{\cftsubsecname}{\if@RTL زیرقسمت\else subsection\fi}
@@ -50,4 +51,4 @@
\renewcommand*{\cftsubtabname}{\if@RTL زیرجدول\else subtable\fi}
\endinput
%%
-%% End of file `tocloft-xepersian.def'.
+%% End of file `tocloft-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/url-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/url-xetex-xepersian.def
index a0599731c0c..bdb92c50b26 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/url-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/url-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `url-xepersian.def',
+%% This is file `url-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,url-xepersian.def')
+%% xepersian.dtx (with options: `table,url-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{url-xepersian.def}[2022/02/18 v0.1 adaptations for url package]
+\ProvidesFile{url-xetex-xepersian.def}[2022/02/18 v0.1 xepersian adaptations for url package for XeTeX engine]
\begingroup
\lccode`+=`\% \lccode`\~=`\%
\lowercase {\long\gdef\Url@actpercent{\Url@Edit\Url@String{+}{~}%
@@ -45,4 +45,4 @@
\endgroup%
\endinput
%%
-%% End of file `url-xepersian.def'.
+%% End of file `url-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/varioref-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/varioref-xetex-xepersian.def
index bbd03c3b411..52d0fbfb028 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/varioref-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/varioref-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `varioref-xepersian.def',
+%% This is file `varioref-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,varioref-xepersian.def')
+%% xepersian.dtx (with options: `table,varioref-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{varioref-xepersian.def}[2018/09/29 v0.1 bilingual captions for varioref package]
+\ProvidesFile{varioref-xetex-xepersian.def}[2018/09/29 v0.1 xepersian adaptations for varioref package for XeTeX engine]
\def\reftextfaceafter{%
\if@RTL
در صفحه
@@ -103,4 +103,4 @@
}
\endinput
%%
-%% End of file `varioref-xepersian.def'.
+%% End of file `varioref-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-commands-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-commands-xetex-xepersian.def
index 21e5e50b7bb..d5ee6bf2c00 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-commands-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-commands-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `xepersian-localise-commands-xepersian.def',
+%% This is file `xepersian-localize-commands-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,xepersian-localise-commands-xepersian.def')
+%% xepersian.dtx (with options: `table,xepersian-localize-commands-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{xepersian-localise-commands-xepersian.def}[2012/07/25 v0.2 Persian localisation of XePersian commands]
+\ProvidesFile{xepersian-localize-commands-xetex-xepersian.def}[2012/07/25 v0.2 Persian localization of XePersian commands for XeTeX engine]
\eqcommand{خط‌زیرنویس‌خودکار}{autofootnoterule}
\eqcommand{اعدادفرمولهاخودکار}{AutoMathDigits}
\eqcommand{اعدادفرمولهالاتین}{DefaultMathDigits}
@@ -99,4 +99,4 @@
\eqcommand{زی‌تک}{XeTeX}
\endinput
%%
-%% End of file `xepersian-localise-commands-xepersian.def'.
+%% End of file `xepersian-localize-commands-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-environments-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-environments-xetex-xepersian.def
index e60327265a9..f0ad9d1cf68 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-environments-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-environments-xetex-xepersian.def
@@ -1,15 +1,15 @@
%%
-%% This is file `xepersian-localise-environments-xepersian.def',
+%% This is file `xepersian-localize-environments-xetex-xepersian.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% xepersian.dtx (with options: `table,xepersian-localise-environments-xepersian.def')
+%% xepersian.dtx (with options: `table,xepersian-localize-environments-xetex-xepersian.def')
%%
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -37,7 +37,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\ProvidesFile{xepersian-localise-environments-xepersian.def}[2010/07/25 v0.1 Persian localisation of XePersian and bidi environments]
+\ProvidesFile{xepersian-localize-environments-xetex-xepersian.def}[2010/07/25 v0.1 Persian localization of XePersian and bidi environments for XeTeX engine]
\eqenvironment{لاتین}{latin}
\eqenvironment{متن‌چپ}{LTR}
\eqenvironment{دسته‌بندی‌چپ}{LTRitems}
@@ -50,4 +50,4 @@
\eqenvironment{شعرسنتی*}{traditionalpoem*}
\endinput
%%
-%% End of file `xepersian-localise-environments-xepersian.def'.
+%% End of file `xepersian-localize-environments-xetex-xepersian.def'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls
index a612b4bd247..bfe0667ecc4 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls
+++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathdigitspec.sty b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathdigitspec.sty
index 947c10fb9cd..6377b8e9f4d 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathdigitspec.sty
+++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathdigitspec.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -39,7 +39,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{xepersian-mathdigitspec}
- [2022/05/20 v1.2.0 Unicode Persian math digits in XeLaTeX]
+ [2025/01/08 v1.2.2 Unicode Persian math digits in XeLaTeX]
\def\new@mathgroup{\alloc@8\mathgroup\chardef\@cclvi}
\let\newfam\new@mathgroup
\def\select@group#1#2#3#4{%
@@ -293,21 +293,21 @@
\uccode`\~`\.%
\uppercase{%
\egroup
- \def~}{\begingroup\obeyspaces\futurelet\@let@token\decimalseparator@pointcheck}
+ \def~}{\begingroup\obeyspaces\futurelet\@let@decimalsep@token\decimalseparator@pointcheck}
\def\decimalseparator@pointcheck{\decimalseparator@check\MathDecimalSeparator\decimalseparator@point}
\def\decimalseparator@check#1#2{%
- \ifx\@let@token1\endgroup#1\else
- \ifx\@let@token2\endgroup#1\else
- \ifx\@let@token3\endgroup#1\else
- \ifx\@let@token4\endgroup#1\else
- \ifx\@let@token5\endgroup#1\else
- \ifx\@let@token6\endgroup#1\else
- \ifx\@let@token7\endgroup#1\else
- \ifx\@let@token8\endgroup#1\else
- \ifx\@let@token9\endgroup#1\else
- \ifx\@let@token0\endgroup#1\else
- \ifx\@let@token\dot\endgroup#1\else
- \ifx\@let@token\overline\endgroup#1\else
+ \ifx\@let@decimalsep@token1\endgroup#1\else
+ \ifx\@let@decimalsep@token2\endgroup#1\else
+ \ifx\@let@decimalsep@token3\endgroup#1\else
+ \ifx\@let@decimalsep@token4\endgroup#1\else
+ \ifx\@let@decimalsep@token5\endgroup#1\else
+ \ifx\@let@decimalsep@token6\endgroup#1\else
+ \ifx\@let@decimalsep@token7\endgroup#1\else
+ \ifx\@let@decimalsep@token8\endgroup#1\else
+ \ifx\@let@decimalsep@token9\endgroup#1\else
+ \ifx\@let@decimalsep@token0\endgroup#1\else
+ \ifx\@let@decimalsep@token\dot\endgroup#1\else
+ \ifx\@let@decimalsep@token\overline\endgroup#1\else
\endgroup#2%
\fi
\fi
@@ -321,7 +321,7 @@
\fi
\fi
\fi}
-\mathcode`.="8000\relax
+\AtBeginDocument{\mathcode`.="8000\relax}
\def\MathDecimalSeparator{\ifx\persiandecimalseparator\undefined .\else \persiandecimalseparator\fi}
\def\DefaultMathDecimalSeparator{.}
\def\DefaultInlineMathDigits{\def\SetInlineMathDigits{}}
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty
index 8b91f0243f4..77a60910fef 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty
+++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty
index 8af8ba0ae81..cadd2a1fc26 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty
+++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -38,7 +38,7 @@
%% Right brace \} Tilde \~}
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{xepersian-persiancal}[2012/07/25 v0.2 provides Persian calendar]
+\ProvidesPackage{xepersian-persiancal}[2025/01/01 v0.3 provides Persian calendar]
\newif\ifXePersian@leap \newif\ifXePersian@kabiseh
\newcount\XePersian@i \newcount\XePersian@y \newcount\XePersian@m \newcount\XePersian@d
@@ -208,6 +208,12 @@
آبان\or آذر\or
دی\or بهمن\or
اسفند\fi}
+
+\newcommand*{\persianseason}{%
+ \ifcase\persianmonth\or
+ بهار\or بهار\or بهار\or تابستان\or تابستان\or تابستان\or
+ پاییز\or پاییز\or پاییز\or زمستان\or زمستان\or زمستان\fi
+}
\endinput
%%
%% End of file `xepersian-persiancal.sty'.
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty b/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty
index c97fc1277d7..787880d493f 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty
+++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty
@@ -9,7 +9,7 @@
%% __________________________________________________
%% Vafa Khalighi
%%
-%% Copyright (c) 2008--2023 Vafa Khalighi
+%% Copyright (c) 2008--2025 Vafa Khalighi
%% Copyright (c) 2018--2020 bidi-tex GitHub Organization
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
@@ -20,7 +20,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{11192}
+%% \CheckSum{10853}
%% \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
@@ -38,17 +38,176 @@
%% Right brace \} Tilde \~}
%%
\NeedsTeXFormat{LaTeX2e}
-\def\xepersian@version{25.0}
-\def\xepersiandate{2023/08/30}
-\def\xepersian@releasename{Women, Life, and Freedom}
-\def\xepersian@persian@@releasename{زن، زندگی، و آزادی}
+\def\xepersian@version{26.2}
+\def\xepersiandate{2025/01/16}
+\def\xepersian@releasename{Persian Gate}
+\def\xepersian@persian@@releasename{دربند پارس}
\newcommand*{\xepersianreleasename}{\if@RTL\xepersian@persian@@releasename\else\xepersian@releasename\fi}
\ProvidesPackage{xepersian}[\xepersiandate\space v\xepersian@version\space (Release \xepersian@releasename)\space
Persian typesetting in XeLaTeX]
-\RequirePackage{fontspec}
-\RequirePackage{xepersian-persiancal}
-\RequirePackage{xepersian-mathdigitspec}
-\RequirePackage{bidi}
+\newif\if@xepersian@banner
+\newif\if@xepersian@@computeautoilg
+\DeclareUnknownKeyHandler{%
+ \PassOptionsToPackage{\CurrentOption}{bidi}%
+}
+\ExplSyntaxOn
+\msg_new:nnn {xepersian} {cannot-use-engine}
+ {
+ Oops!~can~not~use~\c_sys_engine_str.\\\\
+ The~xepersian~package~requires~XeTeX.
+ }
+ \sys_if_engine_xetex:F
+ {
+ \msg_fatal:nn {xepersian} {cannot-use-engine}
+ }
+
+\keys_define:nn { xepersian }
+ {
+ banner .choice: ,
+ banner / on .code:n =
+ \@xepersian@bannertrue
+ \PassOptionsToPackage{banner=on}{bidi} ,
+ banner / off .code:n =
+ \@xepersian@bannerfalse
+ \PassOptionsToPackage{banner=off}{bidi} ,
+ banner .default:n = on
+ }
+\keys_define:nn { xepersian }
+ {
+ mathdigits .choice: ,
+ mathdigits / automatic .code:n = \AtEndOfPackage{\AutoMathDigits} ,
+ mathdigits / default .code:n = \AtEndOfPackage{\DefaultMathDigits} ,
+ mathdigits / persian .code:n = \AtEndOfPackage{\PersianMathDigits}
+ }
+\keys_define:nn { xepersian }
+ {
+ inlinemathdigits .choice: ,
+ inlinemathdigits / automatic .code:n = \AtEndOfPackage{\AutoInlineMathDigits} ,
+ inlinemathdigits / default .code:n = \AtEndOfPackage{\DefaultInlineMathDigits} ,
+ inlinemathdigits / persian .code:n = \AtEndOfPackage{\PersianInlineMathDigits}
+ }
+\keys_define:nn { xepersian }
+ {
+ displaymathdigits .choice: ,
+ displaymathdigits / automatic .code:n = \AtEndOfPackage{\AutoDisplayMathDigits} ,
+ displaymathdigits / default .code:n = \AtEndOfPackage{\DefaultDisplayMathDigits} ,
+ displaymathdigits / persian .code:n = \AtEndOfPackage{\PersianDisplayMathDigits}
+ }
+\keys_define:nn { xepersian }
+ {
+ Kashida .choice: ,
+ Kashida / on .code:n = \AtEndOfPackage{\input{kashida-xetex-xepersian.def}} ,
+ Kashida / off .code:n = \relax ,
+ Kashida .default:n = on
+ }
+\keys_define:nn { xepersian }
+ {
+ localize .choice: ,
+ localize / on .code:n = \AtEndOfPackage{\input{localize-xetex-xepersian.def}} ,
+ localize / off .code:n = \relax ,
+ localize .default:n = on
+ }
+\cs_new_protected:Npn \__xepersian_quickindex_variant:n #1
+{
+ \AtEndOfPackage{%
+ \ifwritexviii
+ \@ifclassloaded{memoir}{%
+ \PackageError{xepersian}{%
+ This~feature~does~not~yet~work~with~the~memoir~class}{}%
+ }{%
+ \renewcommand\printindex{\newpage%
+ \immediate\closeout\@indexfile
+ \immediate\write18{%
+ xindy~-L~persian-variant#1~-C~utf8~-M~texindy~-M~page-ranges~\jobname.idx}
+ \@input@{\jobname.ind}}%
+ }
+ \else
+ \PackageError{xepersian}{%
+ “shell~escape”~(or~“write18”)~is~not~enabled.~You~need~to~run~“xelatex~--shell-escape”~on~your~TeX~document~for~this~feature~to~work}{}
+ \fi
+ }
+}
+\keys_define:nn { xepersian }
+ {
+ quickindex-variant .choice: ,
+ quickindex-variant / one .code:n = \__xepersian_quickindex_variant:n { 1 } ,
+ quickindex-variant / two .code:n = \__xepersian_quickindex_variant:n { 2 } ,
+ quickindex-variant / three .code:n = \__xepersian_quickindex_variant:n { 3 }
+ }
+\keys_define:nn { xepersian }
+ {
+ abjad-variant .choice: ,
+ abjad-variant / one .code:n =
+ \def\PersianAlphs{%
+ \let\@alph\@abjad
+ \let\@Alph\@abjad
+ } ,
+ abjad-variant / two .code:n =
+ \def\PersianAlphs{%
+ \let\@alph\@Abjad
+ \let\@Alph\@Abjad
+ }
+ }
+\keys_define:nn { xepersian }
+ {
+ defaultlatinfontfeatures .code:n = \AtEndOfPackage{\defaultfontfeatures[\latinfont]{#1}}
+ }
+\keys_define:nn { xepersian }
+ {
+ mathfontsizescale .code:n = \def\xepersian@@math@fontsize@scale{#1}
+ }
+\keys_define:nn { xepersian }
+ {
+ fontsizescale .code:n = \def\xepersian@@fontsize@scale{#1}
+ }
+\keys_define:nn { xepersian }
+ {
+ fontsize .code:n = \AtEndOfPackage{\xepersian@@fontsize@branch{#1}}
+ }
+\keys_define:nn { xepersian }
+ {
+ latinfontsizescale .code:n = \def\xepersian@@latin@fontsize@scale{#1}
+ }
+ \keys_define:nn { xepersian }
+ {
+ baselineskipscale .code:n = \def\xepersian@@baselineskip@scale{#1}
+ }
+ \keys_define:nn { xepersian }
+ {
+ latinbaselineskipscale .code:n = \def\xepersian@@latin@baselineskip@scale{#1}
+ }
+\keys_define:nn { xepersian }
+ {
+ computeautoilg .choice: ,
+ computeautoilg / on .code:n = \@xepersian@@computeautoilgtrue ,
+ computeautoilg / off .code:n = \@xepersian@@computeautoilgfalse ,
+ computeautoilg .default:n = on
+ }
+\keys_define:nn { xepersian }
+ {
+ debugtextdigitfont .choice: ,
+ debugtextdigitfont / on .code:n = \AtEndOfPackage{%
+ \bidi@AtEndPreamble{%
+ \bidi@patchcmd\xepersian@@start@switch@textdigitfont\xepersian@textdigitfont{%
+ \addfontfeature{Color=C71585}
+ }{}{}
+ }
+ } ,
+ debugtextdigitfont / off .code:n = \relax ,
+ debugtextdigitfont .default:n = on
+ }
+\keys_set:nn { xepersian }
+ {
+ banner = on ,
+ abjad-variant = two ,
+ fontsizescale = \@ne ,
+ latinfontsizescale = \@ne ,
+ mathfontsizescale = \@ne ,
+ baselineskipscale = \@ne ,
+ latinbaselineskipscale = \@ne
+ }
+\ExplSyntaxOff
+\ProcessKeyOptions
\edef\@xepersian@info{****************************************************^^J%
* ^^J%
* xepersian package (Persian for LaTeX, using XeTeX engine)^^J%
@@ -57,7 +216,7 @@ Persian typesetting in XeLaTeX]
* typesetting, using fonts provided in the^^J%
* distribution.^^J%
* ^^J%
-* Copyright (c) 2008--2023 Vafa Khalighi^^J%
+* Copyright (c) 2008--2025 Vafa Khalighi^^J%
* Copyright (c) 2018--2020 bidi-tex GitHub Organization^^J%
* ^^J%
* v\xepersian@version\space (Release \xepersian@releasename), \xepersiandate^^J%
@@ -67,16 +226,28 @@ Persian typesetting in XeLaTeX]
* ^^J%
* Location on CTAN: /macros/xetex/latex/xepersian^^J%
* ^^J%
-* Issue tracker: https://github.com/kvafa/xepersian/issues^^J%
+* Issue tracker: https://github.com/xepersian/xepersian/issues^^J%
* ^^J%
-* Discussions: https://github.com/kvafa/xepersian/discussions^^J%
+* Discussions: https://github.com/xepersian/xepersian/discussions^^J%
* ^^J%
* Primary author of xepersian package: Vafa Khalighi.^^J%
* ^^J%
****************************************************}
-\typeout{\@xepersian@info}
\edef\xepersian@everyjob{\the\everyjob}
-\everyjob{\xepersian@everyjob\typeout{\@xepersian@info}}
+\if@xepersian@banner
+ \typeout{\@xepersian@info}
+ \everyjob{\xepersian@everyjob\typeout{\@xepersian@info}}
+\fi
+\RequirePackage{fontspec}
+\RequirePackage{xepersian-persiancal}
+\RequirePackage{xepersian-mathdigitspec}
+\RequirePackage[%
+ documentdirection=righttoleft,%
+ tabledirection=righttoleft,%
+ script=nonlatin,%
+ footnotedirection=righttoleft,%
+ footnoterule=automatic%
+]{bidi}
\newcommand*{\xepersianversion}
{\ensuremath\xepersian@version}
\newcommand*{\IfxepersianPackageVersionLater}[1]{%
@@ -206,15 +377,15 @@ Persian typesetting in XeLaTeX]
\XeTeXinterchartoks \bidi@digits@charclass \z@ = {\xepersian@@stop@switch@textdigitfont}
\XeTeXinterchartoks \bidi@digits@charclass \bidi@sepmark@charclass = {\xepersian@@stop@switch@textdigitfont}
\XeTeXinterchartoks \bidi@sepmark@charclass \bidi@digits@charclass = {\DigitsDotDashInterCharToks\xepersian@@start@switch@textdigitfont}
- \if@bidi@csundef{xepersian@D}{}{%
- \XeTeXinterchartoks \xepersian@D \bidi@digits@charclass = {\xepersian@@start@switch@textdigitfont}
- \XeTeXinterchartoks \bidi@digits@charclass \xepersian@D = {\xepersian@@stop@switch@textdigitfont}
- \XeTeXinterchartoks \xepersian@L \bidi@digits@charclass = {\xepersian@@start@switch@textdigitfont}
- \XeTeXinterchartoks \bidi@digits@charclass \xepersian@L = {\xepersian@@stop@switch@textdigitfont}
- \XeTeXinterchartoks \xepersian@A \bidi@digits@charclass = {\xepersian@@start@switch@textdigitfont}
- \XeTeXinterchartoks \bidi@digits@charclass \xepersian@A = {\xepersian@@stop@switch@textdigitfont}
- \XeTeXinterchartoks \xepersian@R \bidi@digits@charclass = {\xepersian@@start@switch@textdigitfont}
- \XeTeXinterchartoks \bidi@digits@charclass \xepersian@R = {\xepersian@@stop@switch@textdigitfont}
+ \if@bidi@csundef{xepersian@dualjoiner}{}{%
+ \XeTeXinterchartoks \xepersian@dualjoiner \bidi@digits@charclass = {\xepersian@@start@switch@textdigitfont}
+ \XeTeXinterchartoks \bidi@digits@charclass \xepersian@dualjoiner = {\xepersian@@stop@switch@textdigitfont}
+ \XeTeXinterchartoks \xepersian@lam \bidi@digits@charclass = {\xepersian@@start@switch@textdigitfont}
+ \XeTeXinterchartoks \bidi@digits@charclass \xepersian@lam = {\xepersian@@stop@switch@textdigitfont}
+ \XeTeXinterchartoks \xepersian@alef \bidi@digits@charclass = {\xepersian@@start@switch@textdigitfont}
+ \XeTeXinterchartoks \bidi@digits@charclass \xepersian@alef = {\xepersian@@stop@switch@textdigitfont}
+ \XeTeXinterchartoks \xepersian@rightjoiner \bidi@digits@charclass = {\xepersian@@start@switch@textdigitfont}
+ \XeTeXinterchartoks \bidi@digits@charclass \xepersian@rightjoiner = {\xepersian@@stop@switch@textdigitfont}
}
}
@@ -566,7 +737,6 @@ Persian typesetting in XeLaTeX]
\renewcommand*{\bidi@font@@outputpage}{\if@RTLmain\setpersianfont\else\resetlatinfont\fi}
-\newif\if@xepersian@@computeautoilg
\newcount\xepersian@tcl
\newdimen\xepersian@ilg
\newdimen\xepersian@strutilg
@@ -875,7 +1045,7 @@ Persian typesetting in XeLaTeX]
\renewcommand*{\@bidi@logo@}{%
\@bidi@logo@hb@xt@columnwidth
{\hss\bfseries
-حروف‌چینی شده با
+حروف‌چینی شده {\today} در {\TypesetTime} با
\textsf{\XePersian}\quad\@bidi@logo{xepersian-logo.pdf}}}
\renewcommand*{\@bidi@pdfcreator}{%
@@ -884,7 +1054,7 @@ Persian typesetting in XeLaTeX]
\newcommand*{\@xepersian@pdfcustomproperties}{%
This is the xepersian package, Version \xepersian@version\space (Release \xepersian@releasename),
- Released August 30, 2023.
+ Released January 16, 2025.
}
\newcommand\twocolumnstableofcontents{%
@@ -1198,58 +1368,81 @@ number is 999,999,999.}%
\PackageError{xepersian}{You have not specified any font\MessageBreak
for the main Persian text}{Use `\settextfont' to load a font.}%
}{}}
-\@ifdefinitionfileloaded{loadingorder-xetex-bidi}{\input{loadingorder-xepersian.def}}{}
-\@ifdefinitionfileloaded{footnote-xetex-bidi}{\input{footnote-xepersian.def}}{}
-\@ifpackageloaded{appendix}{\input{appendix-xepersian.def}}{}
-\@ifpackageloaded{listings}{\input{listings-xepersian.def}}{}
-\@ifpackageloaded{algorithmic}{\input{algorithmic-xepersian.def}}{}
-\@ifpackageloaded{algorithm}{\input{algorithm-xepersian.def}}{}
-\@ifpackageloaded{backref}{\input{backref-xepersian.def}}{}
-\@ifpackageloaded{beamerbasetranslator}{\input{beamerbasetranslator-xepersian.def}}{}
-\@ifpackageloaded{fancyref}{\input{fancyref-xepersian.def}}{}
-\@ifpackageloaded{bidituftesidenote}{\input{bidituftesidenote-xepersian.def}}{}
-\@ifpackageloaded{breqn}{\input{breqn-xepersian.def}}{}
-\@ifpackageloaded{enumerate}{\input{enumerate-xepersian.def}}{}
-\@ifpackageloaded{enumitem}{\input{enumitem-xepersian.def}}{}
-\@ifpackageloaded{framed}{\input{framed-xepersian.def}}{}
-\@ifpackageloaded{glossaries}{\input{glossaries-xepersian.def}}{}
-\@ifpackageloaded{hyperref}{\input{hyperref-xepersian.def}}{}
-\@ifpackageloaded{minitoc}{\input{minitoc-xepersian.def}}{}
-\@ifpackageloaded{natbib}{\input{natbib-xepersian.def}}{}
-\@ifpackageloaded{soul}{\input{soul-xepersian.def}}{}
-\@ifpackageloaded{tkz-linknodes}{\input{tkz-linknodes-xepersian.def}}{}
-\@ifpackageloaded{tocloft}{\@ifclassloaded{memoir}{}{\input{tocloft-xepersian.def}}}{}
-\@ifpackageloaded{url}{\input{url-xepersian.def}}{}
-\@ifpackageloaded{varioref}{\input{varioref-xepersian.def}}{}
-\@ifclassloaded{article}{\input{article-xepersian.def}}{}
-\@ifclassloaded{extarticle}{\input{extarticle-xepersian.def}}{}
-\@ifclassloaded{artikel1}{\input{artikel1-xepersian.def}}{}
-\@ifclassloaded{artikel2}{\input{artikel2-xepersian.def}}{}
-\@ifclassloaded{artikel3}{\input{artikel3-xepersian.def}}{}
-\@ifclassloaded{amsart}{\input{amsart-xepersian.def}}{}
-\@ifclassloaded{beamer}{\input{beamer-xepersian.def}}{}
-\@ifclassloaded{bidimoderncv}{\input{bidimoderncv-xepersian.def}}{}
-\@ifclassloaded{report}{\input{report-xepersian.def}}{}
-\@ifclassloaded{extreport}{\input{extreport-xepersian.def}}{}
-\@ifclassloaded{rapport1}{\input{rapport1-xepersian.def}}{}
-\@ifclassloaded{rapport3}{\input{rapport3-xepersian.def}}{}
-\@ifclassloaded{scrartcl}{\input{scrartcl-xepersian.def}}{}
-\@ifclassloaded{scrbook}{\input{scrbook-xepersian.def}}{}
-\@ifclassloaded{scrreprt}{\input{scrreprt-xepersian.def}}{}
-\@ifclassloaded{amsbook}{\input{amsbook-xepersian.def}}{}
-\@ifclassloaded{boek3}{\input{boek3-xepersian.def}}{}
-\@ifclassloaded{boek}{\input{boek-xepersian.def}}{}
-\@ifclassloaded{bookest}{\input{bookest-xepersian.def}}{}
-\@ifclassloaded{extbook}{\input{extbook-xepersian.def}}{}
-\@ifclassloaded{book}{\input{book-xepersian.def}}{}
-\@ifclassloaded{refrep}{\input{refrep-xepersian.def}}{}
-\@ifclassloaded{memoir}{\input{memoir-xepersian.def}}{}
-\@ifclassloaded{imsproc}{\input{imsproc-xepersian.def}}{}
+\ApplyPatchToFiles{%
+ footnote-xetex-bidi, %
+ extrafootnotefeatures-xetex-bidi %
+}[def][xepersian]
+
+\ApplyPatchToClasses{%
+ article, %
+ amsart, %
+ amsbook, %
+ artikel1, %
+ artikel2, %
+ artikel3, %
+ beamer, %
+ bidimoderncv, %
+ boek, %
+ boek3, %
+ book, %
+ bookest, %
+ extbook, %
+ extarticle, %
+ extreport, %
+ imsproc, %
+ memoir, %
+ rapport1, %
+ rapport3, %
+ refrep, %
+ report, %
+ scrartcl, %
+ scrbook, %
+ scrreprt %
+}[xepersian]
+
+\ApplyPatchToPackages{%
+ algorithm, %
+ algorithmic, %
+ appendix, %
+ backref, %
+ beamerbasetranslator, %
+ bidituftesidenote, %
+ breqn, %
+ enumerate, %
+ enumitem, %
+ fancyref, %
+ framed, %
+ glossaries, %
+ hyperref, %
+ listings, %
+ minitoc, %
+ natbib, %
+ soul, %
+ tkz-linknodes, %
+ tocloft, %
+ url, %
+ varioref %
+}[xepersian]
+
+\newtoks\xepersian@toks
+\def\xepersian@tempa#1{%
+\long\def\xepersian@@sp@def##1##2{%
+ \futurelet\xepersian@resa\xepersian@@sp@d##2\@nil\@nil#1\@nil\relax##1}%
+\long\def\xepersian@@sp@d{%
+ \ifx\xepersian@resa\@sptoken
+ \expandafter\xepersian@@sp@b
+ \else
+ \expandafter\xepersian@@sp@b\expandafter#1%
+ \fi}%
+\long\def\xepersian@@sp@b#1##1 \@nil{\xepersian@@sp@c##1}%
+ }
+\xepersian@tempa{ }
+\long\def\xepersian@@sp@c#1\@nil#2\relax#3{\xepersian@toks{#1}\edef#3{\the\xepersian@toks}}
\def\xepersian@@fontsize@branch#1{%
\@tempcnta\z@
\@for\xepersian@tmp:=#1\do{%
- \KV@@sp@def\xepersian@frag{\xepersian@tmp}%
+ \xepersian@@sp@def\xepersian@frag{\xepersian@tmp}%
\ifcase\@tempcnta\relax% cnta == 0
\edef\xepersian@value{\xepersian@frag}%
\setfontsize{\xepersian@frag}%
@@ -1259,255 +1452,6 @@ number is 999,999,999.}%
\advance\@tempcnta\@ne}%
}
-\define@choicekey{xepersian.sty}{mathdigits}[\xepersian@tempa\xepersian@tempb]{automatic,default,persian}{%
- \ifcase\xepersian@tempb\relax
- \AutoMathDigits
- \or
- \DefaultMathDigits
- \or
- \PersianMathDigits
- \fi}
-\define@choicekey{xepersian.sty}{inlinemathdigits}[\xepersian@tempa\xepersian@tempb]{automatic,default,persian}{%
- \ifcase\xepersian@tempb\relax
- \AutoInlineMathDigits
- \or
- \DefaultInlineMathDigits
- \or
- \PersianInlineMathDigits
- \fi}
-\define@choicekey{xepersian.sty}{displaymathdigits}[\xepersian@tempa\xepersian@tempb]{automatic,default,persian}{%
- \ifcase\xepersian@tempb\relax
- \AutoDisplayMathDigits
- \or
- \DefaultDisplayMathDigits
- \or
- \PersianDisplayMathDigits
- \fi}
-\define@choicekey{xepersian.sty}{RTLdocument}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{%
- \ifcase\xepersian@tempb\relax
- \@RTLtrue
- \or
- \@RTLfalse
- \fi}
-
-\define@choicekey{xepersian.sty}{documentdirection}[\xepersian@tempa\xepersian@tempb]{righttoleft,lefttoright}{%
- \ifcase\xepersian@tempb\relax
- \@RTLtrue
- \or
- \@RTLfalse
- \fi}
-
-\define@choicekey{xepersian.sty}{tabledirection}[\xepersian@tempa\xepersian@tempb]{righttoleft,lefttoright}{%
- \ifcase\xepersian@tempb\relax
- \@RTLtabtrue
- \or
- \@RTLtabfalse
- \fi}
-
-\define@choicekey{xepersian.sty}{script}[\xepersian@tempa\xepersian@tempb]{latin,nonlatin}[latin]{%
- \ifcase\xepersian@tempb\relax
- \@nonlatinfalse
- \or
- \@nonlatintrue
- \fi}
-
-\define@choicekey{xepersian.sty}{rldocument}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{%
- \ifcase\xepersian@tempb\relax
- \@RTLtrue
- \or
- \@RTLfalse
- \fi}
-\define@choicekey{xepersian.sty}{footnoterule}[\xepersian@tempa\xepersian@tempb]{automatic,left,right,split,textwidth}{%
- \ifcase\xepersian@tempb\relax
- \autofootnoterule
- \or
- \leftfootnoterule
- \or
- \rightfootnoterule
- \or
- \SplitFootnoteRule
- \or
- \textwidthfootnoterule
- \fi}
-\define@choicekey{xepersian.sty}{footnotedirection}[\xepersian@tempa\xepersian@tempb]{righttoleft,lefttoright}{%
- \ifcase\xepersian@tempb\relax
- \@RTL@footnotetrue
- \or
- \@RTL@footnotefalse
- \fi}
-\define@choicekey{xepersian.sty}{debugfootnotedirection}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{%
- \ifcase\xepersian@tempb\relax
- \footdir@debugtrue
- \or
- \footdir@debugfalse
- \fi}
-\define@choicekey{xepersian.sty}{Kashida}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{%
- \ifcase\xepersian@tempb\relax
- \input{kashida-xepersian.def}
- \fi}
-\define@choicekey{xepersian.sty}{localise}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{%
- \ifcase\xepersian@tempb\relax
- \input{localise-xepersian.def}
- \fi}
-\define@choicekey{xepersian.sty}{extrafootnotefeatures}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{%
- \ifcase\xepersian@tempb\relax
- \@extrafootnotefeaturestrue
- \or
- \@extrafootnotefeaturesfalse
- \fi}
-\define@choicekey{xepersian.sty}{quickindex}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{%
- \ifcase\xepersian@tempb\relax
- \PackageWarning{xepersian}{Obsolete option}%
- \ifwritexviii%
- \@ifclassloaded{memoir}{\PackageError{xepersian}{This feature does not yet work with the memoir class}{}}{%
- \renewcommand\printindex{\newpage%
- \immediate\closeout\@indexfile
- \immediate\write18{xindy -L persian-variant2 -C utf8 -M texindy -M page-ranges \jobname.idx}
- \@input@{\jobname.ind}}}%
- \else
- \PackageError{xepersian}{“shell escape” (or “write18”) is not enabled. You need to run “xelatex --shell-escape” on your TeX document for this feature to work}{}
- \fi
- \fi}
-\define@choicekey{xepersian.sty}{quickindex-variant1}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{%
- \ifcase\xepersian@tempb\relax
- \ifwritexviii%
- \@ifclassloaded{memoir}{\PackageError{xepersian}{This feature does not yet work with the memoir class}{}}{%
- \renewcommand\printindex{\newpage%
- \immediate\closeout\@indexfile
- \immediate\write18{xindy -L persian-variant1 -C utf8 -M texindy -M page-ranges \jobname.idx}
- \@input@{\jobname.ind}}}%
- \else
- \PackageError{xepersian}{“shell escape” (or “write18”) is not enabled. You need to run “xelatex --shell-escape” on your TeX document for this feature to work}{}
- \fi
- \fi}
-\define@choicekey{xepersian.sty}{quickindex-variant2}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{%
- \ifcase\xepersian@tempb\relax
- \ifwritexviii%
- \@ifclassloaded{memoir}{\PackageError{xepersian}{This feature does not yet work with the memoir class}{}}{%
- \renewcommand\printindex{\newpage%
- \immediate\closeout\@indexfile
- \immediate\write18{xindy -L persian-variant2 -C utf8 -M texindy -M page-ranges \jobname.idx}
- \@input@{\jobname.ind}}}%
- \else
- \PackageError{xepersian}{“shell escape” (or “write18”) is not enabled. You need to run “xelatex --shell-escape” on your TeX document for this feature to work}{}
- \fi
- \fi}
-\define@choicekey{xepersian.sty}{abjadvariant}[\xepersian@tempa\xepersian@tempb]{one,two}{%
- \ifcase\xepersian@tempb\relax
- \def\PersianAlphs{%
- \let\@alph\@abjad%
- \let\@Alph\@abjad%
- }
- \or
- \def\PersianAlphs{%
- \let\@alph\@Abjad%
- \let\@Alph\@Abjad%
- }
- \fi}
-\DeclareOptionX{defaultlatinfontfeatures}{%
-\defaultfontfeatures
- [\latinfont]
- {#1}
-}
-
-\DeclareOptionX{mathfontsizescale}{%
- \def\xepersian@@math@fontsize@scale{#1}%
- }
-
-\DeclareOptionX{fontsizescale}{%
- \def\xepersian@@fontsize@scale{#1}%
- }
-
-\DeclareOptionX{fontsize}{%
- \xepersian@@fontsize@branch{#1}%
- }
-
-\DeclareOptionX{latinfontsizescale}{%
- \def\xepersian@@latin@fontsize@scale{#1}%
- }
-
-\DeclareOptionX{baselineskipscale}{%
- \def\xepersian@@baselineskip@scale{#1}%
- }
-
-\DeclareOptionX{latinbaselineskipscale}{%
- \def\xepersian@@latin@baselineskip@scale{#1}%
- }
-
-\define@choicekey{xepersian.sty}{logo}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{%
- \ifcase\xepersian@tempb\relax
- \AtBeginDocument{\@bidi@inslogo@}%
- \or
- \let\@bidi@logo@\@empty \let\@bidi@inslogo@\@empty
- \fi}
-
-\define@choicekey{xepersian.sty}{pdfinfo}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{%
- \ifcase\xepersian@tempb\relax
- \@bidi@pdfm@marktrue
- \or
- \@bidi@pdfm@markfalse
- \fi}
-
-\define@choicekey{xepersian.sty}{computeautoilg}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{%
- \ifcase\xepersian@tempb\relax
- \@xepersian@@computeautoilgtrue
- \or
- \@xepersian@@computeautoilgfalse
- \fi}
-
-\define@choicekey{xepersian.sty}{DetectColumn}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{%
- \ifcase\xepersian@tempb\relax
- \def\bidi@firstcolumn@status@write{%
- \protected@write\@auxout{}%
- {\string\bidi@column@status
- {1}}}%
- \def\bidi@lastcolumn@status@write{%
- \protected@write\@auxout{}%
- {\string\bidi@column@status{2}}}%
- \or
- \let\bidi@firstcolumn@status@write\relax
- \let\bidi@lastcolumn@status@write\relax
- \fi}
-
-\define@choicekey{xepersian.sty}{debugtextdigitfont}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{%
- \ifcase\xepersian@tempb\relax
- \bidi@AtEndPreamble{%
- \bidi@patchcmd{\xepersian@@start@switch@textdigitfont}%
- {\xepersian@textdigitfont}{\addfontfeature{Color=C71585}}{}{}%
- }
- \or
- \relax
- \fi}
-
-\define@choicekey{xepersian.sty}{perpagefootnote}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{%
- \ifcase\xepersian@tempb\relax
- \@bidi@perpage@footnotetrue
- \or
- \@bidi@perpage@footnotefalse
- \fi}
-
-\ExecuteOptionsX{%
- documentdirection=righttoleft,
- tabledirection=righttoleft,
- script=nonlatin,
- footnotedirection=righttoleft,
- footnoterule=automatic,
- abjadvariant=two,
- DetectColumn=off,
- fontsizescale=\@ne,
- latinfontsizescale=\@ne,
- mathfontsizescale=\@ne,
- baselineskipscale=\@ne,
- latinbaselineskipscale=\@ne
-}
-
-\ProcessOptionsX
-
-\if@extrafootnotefeatures
- \input{extrafootnotefeatures-xetex-bidi.def}%
- \input{extrafootnotefeatures-xepersian.def}%
-\fi
-
\bidi@patchcmd{\set@fontsize}{\@tempdimb#2pt}{%
\@tempdimb\xepersian@@fontsize@scale\dimexpr#2pt\relax
}{}{}
@@ -1559,7 +1503,17 @@ number is 999,999,999.}%
}{}{}
\fi
-\setlatintextfont[Path,BoldFont={lmroman10-bold},BoldItalicFont={lmroman10-bolditalic},ItalicFont={lmroman10-italic},SmallCapsFont={lmromancaps10-regular},SlantedFont={lmromanslant10-regular},BoldSlantedFont={lmromanslant10-bold}]{lmroman10-regular}%
+\AtEndOfPackage{%
+ \setlatintextfont[%
+ Path,%
+ BoldFont={lmroman10-bold},%
+ BoldItalicFont={lmroman10-bolditalic},%
+ ItalicFont={lmroman10-italic},%
+ SmallCapsFont={lmromancaps10-regular},%
+ SlantedFont={lmromanslant10-regular},%
+ BoldSlantedFont={lmromanslant10-bold}%
+ ]{lmroman10-regular}
+}
\PersianAlphs
\endinput
%%